diff --git a/Gopkg.lock b/Gopkg.lock index 39d4c232..8517fe6f 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -2,10 +2,10 @@ [[projects]] - branch = "master" name = "github.com/container-storage-interface/spec" packages = ["lib/go/csi/v0"] revision = "35d9f9d77954980e449e52c3f3e43c21bd8171f5" + version = "v0.2.0" [[projects]] name = "github.com/golang/mock" @@ -15,19 +15,58 @@ [[projects]] name = "github.com/golang/protobuf" - packages = ["proto","protoc-gen-go/descriptor","ptypes","ptypes/any","ptypes/duration","ptypes/timestamp"] + packages = [ + "proto", + "protoc-gen-go/descriptor", + "ptypes", + "ptypes/any", + "ptypes/duration", + "ptypes/timestamp" + ] revision = "925541529c1fa6821df4e44ce2723319eb2be768" version = "v1.0.0" [[projects]] name = "github.com/onsi/ginkgo" - packages = [".","config","internal/codelocation","internal/containernode","internal/failer","internal/leafnodes","internal/remote","internal/spec","internal/spec_iterator","internal/specrunner","internal/suite","internal/testingtproxy","internal/writer","reporters","reporters/stenographer","reporters/stenographer/support/go-colorable","reporters/stenographer/support/go-isatty","types"] + packages = [ + ".", + "config", + "internal/codelocation", + "internal/containernode", + "internal/failer", + "internal/leafnodes", + "internal/remote", + "internal/spec", + "internal/spec_iterator", + "internal/specrunner", + "internal/suite", + "internal/testingtproxy", + "internal/writer", + "reporters", + "reporters/stenographer", + "reporters/stenographer/support/go-colorable", + "reporters/stenographer/support/go-isatty", + "types" + ] revision = "9eda700730cba42af70d53180f9dcce9266bc2bc" version = "v1.4.0" [[projects]] name = "github.com/onsi/gomega" - packages = [".","format","internal/assertion","internal/asyncassertion","internal/oraclematcher","internal/testingtsupport","matchers","matchers/support/goraph/bipartitegraph","matchers/support/goraph/edge","matchers/support/goraph/node","matchers/support/goraph/util","types"] + packages = [ + ".", + "format", + "internal/assertion", + "internal/asyncassertion", + "internal/oraclematcher", + "internal/testingtsupport", + "matchers", + "matchers/support/goraph/bipartitegraph", + "matchers/support/goraph/edge", + "matchers/support/goraph/node", + "matchers/support/goraph/util", + "types" + ] revision = "003f63b7f4cff3fc95357005358af2de0f5fe152" version = "v1.3.0" @@ -46,18 +85,59 @@ [[projects]] branch = "master" name = "golang.org/x/net" - packages = ["context","html","html/atom","html/charset","http2","http2/hpack","idna","internal/timeseries","lex/httplex","trace"] - revision = "cbe0f9307d0156177f9dd5dc85da1a31abc5f2fb" + packages = [ + "context", + "html", + "html/atom", + "html/charset", + "http2", + "http2/hpack", + "idna", + "internal/timeseries", + "lex/httplex", + "trace" + ] + revision = "22ae77b79946ea320088417e4d50825671d82d57" [[projects]] branch = "master" name = "golang.org/x/sys" - packages = ["unix","windows"] - revision = "f6cff0780e542efa0c8e864dc8fa522808f6a598" + packages = [ + "unix", + "windows" + ] + revision = "dd2ff4accc098aceecb86b36eaa7829b2a17b1c9" [[projects]] name = "golang.org/x/text" - packages = ["collate","collate/build","encoding","encoding/charmap","encoding/htmlindex","encoding/internal","encoding/internal/identifier","encoding/japanese","encoding/korean","encoding/simplifiedchinese","encoding/traditionalchinese","encoding/unicode","internal/colltab","internal/gen","internal/tag","internal/triegen","internal/ucd","internal/utf8internal","language","runes","secure/bidirule","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable"] + packages = [ + "collate", + "collate/build", + "encoding", + "encoding/charmap", + "encoding/htmlindex", + "encoding/internal", + "encoding/internal/identifier", + "encoding/japanese", + "encoding/korean", + "encoding/simplifiedchinese", + "encoding/traditionalchinese", + "encoding/unicode", + "internal/colltab", + "internal/gen", + "internal/tag", + "internal/triegen", + "internal/ucd", + "internal/utf8internal", + "language", + "runes", + "secure/bidirule", + "transform", + "unicode/bidi", + "unicode/cldr", + "unicode/norm", + "unicode/rangetable" + ] revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" version = "v0.3.0" @@ -65,11 +145,37 @@ branch = "master" name = "google.golang.org/genproto" packages = ["googleapis/rpc/status"] - revision = "2d9486acae19cf9bd0c093d7dc236a323726a9e4" + revision = "2c5e7ac708aaa719366570dd82bda44541ca2a63" [[projects]] name = "google.golang.org/grpc" - packages = [".","balancer","balancer/base","balancer/roundrobin","codes","connectivity","credentials","encoding","encoding/proto","grpclb/grpc_lb_v1/messages","grpclog","internal","keepalive","metadata","naming","peer","reflection","reflection/grpc_reflection_v1alpha","resolver","resolver/dns","resolver/passthrough","stats","status","tap","transport"] + packages = [ + ".", + "balancer", + "balancer/base", + "balancer/roundrobin", + "codes", + "connectivity", + "credentials", + "encoding", + "encoding/proto", + "grpclb/grpc_lb_v1/messages", + "grpclog", + "internal", + "keepalive", + "metadata", + "naming", + "peer", + "reflection", + "reflection/grpc_reflection_v1alpha", + "resolver", + "resolver/dns", + "resolver/passthrough", + "stats", + "status", + "tap", + "transport" + ] revision = "8e4536a86ab602859c20df5ebfd0bd4228d08655" version = "v1.10.0" @@ -82,6 +188,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "f1ca6410db1fd26a2f3f92e02da2f371644f51f2e143d232771778466d089fb9" + inputs-digest = "b3d02999b00cc5a342dc8b65dd941fbd0f9af728d5d42c433d82c6fcb93bb0cd" solver-name = "gps-cdcl" solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml index 91e1cabe..ea61655a 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -27,7 +27,7 @@ [[constraint]] name = "github.com/container-storage-interface/spec" - branch = "master" + version = "~0.2.0" [[constraint]] name = "github.com/golang/mock" diff --git a/vendor/github.com/container-storage-interface/spec/.gitignore b/vendor/github.com/container-storage-interface/spec/.gitignore deleted file mode 100644 index 4f7ede45..00000000 --- a/vendor/github.com/container-storage-interface/spec/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.tmp -.DS_Store -.build diff --git a/vendor/github.com/container-storage-interface/spec/.travis.yml b/vendor/github.com/container-storage-interface/spec/.travis.yml deleted file mode 100644 index ec3dde8a..00000000 --- a/vendor/github.com/container-storage-interface/spec/.travis.yml +++ /dev/null @@ -1,38 +0,0 @@ -# Setting "sudo" to false forces Travis-CI to use its -# container-based build infrastructure, which has shorter -# queue times. -sudo: false - -# Use the newer Travis-CI build templates based on the -# Debian Linux distribution "Trusty" release. -dist: trusty - -# Selecting C as the language keeps the container to a -# minimum footprint. -language: c - -jobs: - include: - - # The test stage validates that the protobuf file was updated - # correctly prior to being committed. - - stage: test - script: make - - # The lang stages validate the specification using - # language-specific bindings. - - # Lang stage: Cxx - - stage: lang - script: make -C lib/cxx - - # Lang stage: Go - - stage: lang - language: go - go: 1.8.3 - go_import_path: github.com/container-storage-interface/spec - install: - - make -C lib/go protoc - - make -C lib/go protoc-gen-go - script: - - make -C lib/go diff --git a/vendor/github.com/container-storage-interface/spec/CONTRIBUTING.md b/vendor/github.com/container-storage-interface/spec/CONTRIBUTING.md deleted file mode 100644 index cc5a61ce..00000000 --- a/vendor/github.com/container-storage-interface/spec/CONTRIBUTING.md +++ /dev/null @@ -1,48 +0,0 @@ -# How to Contribute - -CSI is under [Apache 2.0](LICENSE) and accepts contributions via GitHub pull requests. -This document outlines some of the conventions on development workflow, commit message formatting, contact points and other resources to make it easier to get your contribution accepted. - -## Markdown style - -To keep consistency throughout the Markdown files in the CSI spec, all files should be formatted one sentence per line. -This fixes two things: it makes diffing easier with git and it resolves fights about line wrapping length. -For example, this paragraph will span three lines in the Markdown source. - -## Code style - -This also applies to the code snippets in the markdown files. - -* Please wrap the code at 72 characters. - -## Comments - -This also applies to the code snippets in the markdown files. - -* End each sentence within a comment with a punctuation mark (please note that we generally prefer periods); this applies to incomplete sentences as well. -* For trailing comments, leave one space between the end of the code and the beginning of the comment. - -## Git commit - -Prior to committing code please run `make` in order to update the protobuf file and any language bindings. - -### Commit Style - -Each commit should represent a single logical (atomic) change: this makes your changes easier to review. - -* Try to avoid unrelated cleanups (e.g., typo fixes or style nits) in the same commit that makes functional changes. - While typo fixes are great, including them in the same commit as functional changes makes the commit history harder to read. -* Developers often make incremental commits to save their progress when working on a change, and then “rewrite history” (e.g., using `git rebase -i`) to create a clean set of commits once the change is ready to be reviewed. - -Simple house-keeping for clean git history. -Read more on [How to Write a Git Commit Message](http://chris.beams.io/posts/git-commit/) or the Discussion section of [`git-commit(1)`](http://git-scm.com/docs/git-commit). - -* Separate the subject from body with a blank line. -* Limit the subject line to 50 characters. -* Capitalize the subject line. -* Do not end the subject line with a period. -* Use the imperative mood in the subject line. -* Wrap the body at 72 characters. -* Use the body to explain what and why vs. how. - * If there was important/useful/essential conversation or information, copy or include a reference. -* When possible, one keyword to scope the change in the subject (i.e. "README: ...", "tool: ..."). diff --git a/vendor/github.com/container-storage-interface/spec/Makefile b/vendor/github.com/container-storage-interface/spec/Makefile deleted file mode 100644 index 3cfaa450..00000000 --- a/vendor/github.com/container-storage-interface/spec/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -all: build - -CSI_SPEC := spec.md -CSI_PROTO := csi.proto - -# This is the target for building the temporary CSI protobuf file. -# -# The temporary file is not versioned, and thus will always be -# built on Travis-CI. -$(CSI_PROTO).tmp: $(CSI_SPEC) - cat $? | sed -n -e '/```protobuf$$/,/^```$$/ p' | sed '/^```/d' > "$@" - -# This is the target for building the CSI protobuf file. -# -# This target depends on its temp file, which is not versioned. -# Therefore when built on Travis-CI the temp file will always -# be built and trigger this target. On Travis-CI the temp file -# is compared with the real file, and if they differ the build -# will fail. -# -# Locally the temp file is simply copied over the real file. -$(CSI_PROTO): $(CSI_PROTO).tmp -ifeq (true,$(TRAVIS)) - diff "$@" "$?" -else - diff "$@" "$?" > /dev/null 2>&1 || cp -f "$?" "$@" -endif - -build: check - -# If this is not running on Travis-CI then for sake of convenience -# go ahead and update the language bindings as well. -ifneq (true,$(TRAVIS)) -build: - $(MAKE) -C lib/go - $(MAKE) -C lib/cxx -endif - -clean: - -clobber: clean - rm -f $(CSI_PROTO) $(CSI_PROTO).tmp - -# check generated files for violation of standards -check: $(CSI_PROTO) - awk '{ if (length > 72) print NR, $$0 }' $? | diff - /dev/null - -.PHONY: clean clobber check diff --git a/vendor/github.com/container-storage-interface/spec/OWNERS b/vendor/github.com/container-storage-interface/spec/OWNERS deleted file mode 100644 index b11f9191..00000000 --- a/vendor/github.com/container-storage-interface/spec/OWNERS +++ /dev/null @@ -1,10 +0,0 @@ -approvers: - - saad-ali # Representing Kubernetes - - thockin # Representing Kubernetes - - jieyu # Representing Mesos - - jdef # Representing Mesos - - cpuguy83 # Representing Docker - - mycure # Representing Docker - - julian-hj # Representing Cloud Foundry - - paulcwarren # Representing Cloud Foundry -reviewers: diff --git a/vendor/github.com/container-storage-interface/spec/README.md b/vendor/github.com/container-storage-interface/spec/README.md deleted file mode 100644 index e16a3cc6..00000000 --- a/vendor/github.com/container-storage-interface/spec/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Container Storage Interface (CSI) Specification [![build status](https://travis-ci.org/container-storage-interface/spec.svg?branch=master)](https://travis-ci.org/container-storage-interface/spec) - -![CSI Logo](logo.png) - -This project contains the CSI [specification](spec.md) and [protobuf](csi.proto) files. diff --git a/vendor/github.com/container-storage-interface/spec/VERSION b/vendor/github.com/container-storage-interface/spec/VERSION deleted file mode 100644 index 0ea3a944..00000000 --- a/vendor/github.com/container-storage-interface/spec/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.2.0 diff --git a/vendor/github.com/container-storage-interface/spec/csi.proto b/vendor/github.com/container-storage-interface/spec/csi.proto deleted file mode 100644 index bd8a3e31..00000000 --- a/vendor/github.com/container-storage-interface/spec/csi.proto +++ /dev/null @@ -1,673 +0,0 @@ -syntax = "proto3"; -package csi.v0; - -option go_package = "csi"; -service Identity { - rpc GetPluginInfo(GetPluginInfoRequest) - returns (GetPluginInfoResponse) {} - - rpc GetPluginCapabilities(GetPluginCapabilitiesRequest) - returns (GetPluginCapabilitiesResponse) {} - - rpc Probe (ProbeRequest) - returns (ProbeResponse) {} -} - -service Controller { - rpc CreateVolume (CreateVolumeRequest) - returns (CreateVolumeResponse) {} - - rpc DeleteVolume (DeleteVolumeRequest) - returns (DeleteVolumeResponse) {} - - rpc ControllerPublishVolume (ControllerPublishVolumeRequest) - returns (ControllerPublishVolumeResponse) {} - - rpc ControllerUnpublishVolume (ControllerUnpublishVolumeRequest) - returns (ControllerUnpublishVolumeResponse) {} - - rpc ValidateVolumeCapabilities (ValidateVolumeCapabilitiesRequest) - returns (ValidateVolumeCapabilitiesResponse) {} - - rpc ListVolumes (ListVolumesRequest) - returns (ListVolumesResponse) {} - - rpc GetCapacity (GetCapacityRequest) - returns (GetCapacityResponse) {} - - rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest) - returns (ControllerGetCapabilitiesResponse) {} -} - -service Node { - rpc NodeStageVolume (NodeStageVolumeRequest) - returns (NodeStageVolumeResponse) {} - - rpc NodeUnstageVolume (NodeUnstageVolumeRequest) - returns (NodeUnstageVolumeResponse) {} - - rpc NodePublishVolume (NodePublishVolumeRequest) - returns (NodePublishVolumeResponse) {} - - rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest) - returns (NodeUnpublishVolumeResponse) {} - - rpc NodeGetId (NodeGetIdRequest) - returns (NodeGetIdResponse) {} - - rpc NodeGetCapabilities (NodeGetCapabilitiesRequest) - returns (NodeGetCapabilitiesResponse) {} -} -message GetPluginInfoRequest { -} - -message GetPluginInfoResponse { - // The name MUST follow reverse domain name notation format - // (https://en.wikipedia.org/wiki/Reverse_domain_name_notation). - // It SHOULD include the plugin's host company name and the plugin - // name, to minimize the possibility of collisions. It MUST be 63 - // characters or less, beginning and ending with an alphanumeric - // character ([a-z0-9A-Z]) with dashes (-), underscores (_), - // dots (.), and alphanumerics between. This field is REQUIRED. - string name = 1; - - // This field is REQUIRED. Value of this field is opaque to the CO. - string vendor_version = 2; - - // This field is OPTIONAL. Values are opaque to the CO. - map manifest = 3; -} -message GetPluginCapabilitiesRequest { -} - -message GetPluginCapabilitiesResponse { - // All the capabilities that the controller service supports. This - // field is OPTIONAL. - repeated PluginCapability capabilities = 2; -} - -// Specifies a capability of the plugin. -message PluginCapability { - message Service { - enum Type { - UNKNOWN = 0; - - // CONTROLLER_SERVICE indicates that the Plugin provides RPCs for - // the ControllerService. Plugins SHOULD provide this capability. - // In rare cases certain plugins may wish to omit the - // ControllerService entirely from their implementation, but such - // SHOULD NOT be the common case. - // The presence of this capability determines whether the CO will - // attempt to invoke the REQUIRED ControllerService RPCs, as well - // as specific RPCs as indicated by ControllerGetCapabilities. - CONTROLLER_SERVICE = 1; - } - Type type = 1; - } - - oneof type { - // Service that the plugin supports. - Service service = 1; - } -} -message ProbeRequest { -} - -message ProbeResponse { - // Intentionally empty. -} -message CreateVolumeRequest { - // The suggested name for the storage space. This field is REQUIRED. - // It serves two purposes: - // 1) Idempotency - This name is generated by the CO to achieve - // idempotency. If `CreateVolume` fails, the volume may or may not - // be provisioned. In this case, the CO may call `CreateVolume` - // again, with the same name, to ensure the volume exists. The - // Plugin should ensure that multiple `CreateVolume` calls for the - // same name do not result in more than one piece of storage - // provisioned corresponding to that name. If a Plugin is unable to - // enforce idempotency, the CO's error recovery logic could result - // in multiple (unused) volumes being provisioned. - // 2) Suggested name - Some storage systems allow callers to specify - // an identifier by which to refer to the newly provisioned - // storage. If a storage system supports this, it can optionally - // use this name as the identifier for the new volume. - string name = 1; - - // This field is OPTIONAL. This allows the CO to specify the capacity - // requirement of the volume to be provisioned. If not specified, the - // Plugin MAY choose an implementation-defined capacity range. - CapacityRange capacity_range = 2; - - // The capabilities that the provisioned volume MUST have: the Plugin - // MUST provision a volume that could satisfy ALL of the - // capabilities specified in this list. The Plugin MUST assume that - // the CO MAY use the provisioned volume later with ANY of the - // capabilities specified in this list. This also enables the CO to do - // early validation: if ANY of the specified volume capabilities are - // not supported by the Plugin, the call SHALL fail. This field is - // REQUIRED. - repeated VolumeCapability volume_capabilities = 3; - - // Plugin specific parameters passed in as opaque key-value pairs. - // This field is OPTIONAL. The Plugin is responsible for parsing and - // validating these parameters. COs will treat these as opaque. - map parameters = 4; - - // Secrets required by plugin to complete volume creation request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map controller_create_secrets = 5; -} - -message CreateVolumeResponse { - // Contains all attributes of the newly created volume that are - // relevant to the CO along with information required by the Plugin - // to uniquely identify the volume. This field is REQUIRED. - Volume volume = 1; -} - -// Specify a capability of a volume. -message VolumeCapability { - // Indicate that the volume will be accessed via the block device API. - message BlockVolume { - // Intentionally empty, for now. - } - - // Indicate that the volume will be accessed via the filesystem API. - message MountVolume { - // The filesystem type. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string fs_type = 1; - - // The mount options that can be used for the volume. This field is - // OPTIONAL. `mount_flags` MAY contain sensitive information. - // Therefore, the CO and the Plugin MUST NOT leak this information - // to untrusted entities. The total size of this repeated field - // SHALL NOT exceed 4 KiB. - repeated string mount_flags = 2; - } - - // Specify how a volume can be accessed. - message AccessMode { - enum Mode { - UNKNOWN = 0; - - // Can only be published once as read/write on a single node, at - // any given time. - SINGLE_NODE_WRITER = 1; - - // Can only be published once as readonly on a single node, at - // any given time. - SINGLE_NODE_READER_ONLY = 2; - - // Can be published as readonly at multiple nodes simultaneously. - MULTI_NODE_READER_ONLY = 3; - - // Can be published at multiple nodes simultaneously. Only one of - // the node can be used as read/write. The rest will be readonly. - MULTI_NODE_SINGLE_WRITER = 4; - - // Can be published as read/write at multiple nodes - // simultaneously. - MULTI_NODE_MULTI_WRITER = 5; - } - - // This field is REQUIRED. - Mode mode = 1; - } - - // Specifies what API the volume will be accessed using. One of the - // following fields MUST be specified. - oneof access_type { - BlockVolume block = 1; - MountVolume mount = 2; - } - - // This is a REQUIRED field. - AccessMode access_mode = 3; -} - -// The capacity of the storage space in bytes. To specify an exact size, -// `required_bytes` and `limit_bytes` can be set to the same value. At -// least one of the these fields MUST be specified. -message CapacityRange { - // Volume must be at least this big. This field is OPTIONAL. - // A value of 0 is equal to an unspecified field value. - // The value of this field MUST NOT be negative. - int64 required_bytes = 1; - - // Volume must not be bigger than this. This field is OPTIONAL. - // A value of 0 is equal to an unspecified field value. - // The value of this field MUST NOT be negative. - int64 limit_bytes = 2; -} - -// The information about a provisioned volume. -message Volume { - // The capacity of the volume in bytes. This field is OPTIONAL. If not - // set (value of 0), it indicates that the capacity of the volume is - // unknown (e.g., NFS share). - // The value of this field MUST NOT be negative. - int64 capacity_bytes = 1; - - // Contains identity information for the created volume. This field is - // REQUIRED. The identity information will be used by the CO in - // subsequent calls to refer to the provisioned volume. - string id = 2; - - // Attributes reflect static properties of a volume and MUST be passed - // to volume validation and publishing calls. - // Attributes SHALL be opaque to a CO. Attributes SHALL NOT be mutable - // and SHALL be safe for the CO to cache. Attributes SHOULD NOT - // contain sensitive information. Attributes MAY NOT uniquely identify - // a volume. A volume uniquely identified by `id` SHALL always report - // the same attributes. This field is OPTIONAL and when present MUST - // be passed to volume validation and publishing calls. - map attributes = 3; -} -message DeleteVolumeRequest { - // The ID of the volume to be deprovisioned. - // This field is REQUIRED. - string volume_id = 1; - - // Secrets required by plugin to complete volume deletion request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map controller_delete_secrets = 2; -} - -message DeleteVolumeResponse { -} -message ControllerPublishVolumeRequest { - // The ID of the volume to be used on a node. - // This field is REQUIRED. - string volume_id = 1; - - // The ID of the node. This field is REQUIRED. The CO SHALL set this - // field to match the node ID returned by `NodeGetId`. - string node_id = 2; - - // The capability of the volume the CO expects the volume to have. - // This is a REQUIRED field. - VolumeCapability volume_capability = 3; - - // Whether to publish the volume in readonly mode. This field is - // REQUIRED. - bool readonly = 4; - - // Secrets required by plugin to complete controller publish volume - // request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map controller_publish_secrets = 5; - - // Attributes of the volume to be used on a node. This field is - // OPTIONAL and MUST match the attributes of the Volume identified - // by `volume_id`. - map volume_attributes = 6; -} - -message ControllerPublishVolumeResponse { - // The SP specific information that will be passed to the Plugin in - // the subsequent `NodeStageVolume` or `NodePublishVolume` calls - // for the given volume. - // This information is opaque to the CO. This field is OPTIONAL. - map publish_info = 1; -} -message ControllerUnpublishVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The ID of the node. This field is OPTIONAL. The CO SHOULD set this - // field to match the node ID returned by `NodeGetId` or leave it - // unset. If the value is set, the SP MUST unpublish the volume from - // the specified node. If the value is unset, the SP MUST unpublish - // the volume from all nodes it is published to. - string node_id = 2; - - // Secrets required by plugin to complete controller unpublish volume - // request. This SHOULD be the same secrets passed to the - // ControllerPublishVolume. - // call for the specified volume. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map controller_unpublish_secrets = 3; -} - -message ControllerUnpublishVolumeResponse { -} -message ValidateVolumeCapabilitiesRequest { - // The ID of the volume to check. This field is REQUIRED. - string volume_id = 1; - - // The capabilities that the CO wants to check for the volume. This - // call SHALL return "supported" only if all the volume capabilities - // specified below are supported. This field is REQUIRED. - repeated VolumeCapability volume_capabilities = 2; - - // Attributes of the volume to check. This field is OPTIONAL and MUST - // match the attributes of the Volume identified by `volume_id`. - map volume_attributes = 3; -} - -message ValidateVolumeCapabilitiesResponse { - // True if the Plugin supports the specified capabilities for the - // given volume. This field is REQUIRED. - bool supported = 1; - - // Message to the CO if `supported` above is false. This field is - // OPTIONAL. - // An empty string is equal to an unspecified field value. - string message = 2; -} -message ListVolumesRequest { - // If specified (non-zero value), the Plugin MUST NOT return more - // entries than this number in the response. If the actual number of - // entries is more than this number, the Plugin MUST set `next_token` - // in the response which can be used to get the next page of entries - // in the subsequent `ListVolumes` call. This field is OPTIONAL. If - // not specified (zero value), it means there is no restriction on the - // number of entries that can be returned. - // The value of this field MUST NOT be negative. - int32 max_entries = 1; - - // A token to specify where to start paginating. Set this field to - // `next_token` returned by a previous `ListVolumes` call to get the - // next page of entries. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string starting_token = 2; -} - -message ListVolumesResponse { - message Entry { - Volume volume = 1; - } - - repeated Entry entries = 1; - - // This token allows you to get the next page of entries for - // `ListVolumes` request. If the number of entries is larger than - // `max_entries`, use the `next_token` as a value for the - // `starting_token` field in the next `ListVolumes` request. This - // field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string next_token = 2; -} -message GetCapacityRequest { - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes that satisfy ALL of the - // specified `volume_capabilities`. These are the same - // `volume_capabilities` the CO will use in `CreateVolumeRequest`. - // This field is OPTIONAL. - repeated VolumeCapability volume_capabilities = 1; - - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes with the given Plugin - // specific `parameters`. These are the same `parameters` the CO will - // use in `CreateVolumeRequest`. This field is OPTIONAL. - map parameters = 2; -} - -message GetCapacityResponse { - // The available capacity of the storage that can be used to - // provision volumes. If `volume_capabilities` or `parameters` is - // specified in the request, the Plugin SHALL take those into - // consideration when calculating the available capacity of the - // storage. This field is REQUIRED. - // The value of this field MUST NOT be negative. - int64 available_capacity = 1; -} -message ControllerGetCapabilitiesRequest { -} - -message ControllerGetCapabilitiesResponse { - // All the capabilities that the controller service supports. This - // field is OPTIONAL. - repeated ControllerServiceCapability capabilities = 2; -} - -// Specifies a capability of the controller service. -message ControllerServiceCapability { - message RPC { - enum Type { - UNKNOWN = 0; - CREATE_DELETE_VOLUME = 1; - PUBLISH_UNPUBLISH_VOLUME = 2; - LIST_VOLUMES = 3; - GET_CAPACITY = 4; - } - - Type type = 1; - } - - oneof type { - // RPC that the controller supports. - RPC rpc = 1; - } -} -message NodeStageVolumeRequest { - // The ID of the volume to publish. This field is REQUIRED. - string volume_id = 1; - - // The CO SHALL set this field to the value returned by - // `ControllerPublishVolume` if the corresponding Controller Plugin - // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be - // left unset if the corresponding Controller Plugin does not have - // this capability. This is an OPTIONAL field. - map publish_info = 2; - - // The path to which the volume will be published. It MUST be an - // absolute path in the root filesystem of the process serving this - // request. The CO SHALL ensure that there is only one - // staging_target_path per volume. - // This is a REQUIRED field. - string staging_target_path = 3; - - // The capability of the volume the CO expects the volume to have. - // This is a REQUIRED field. - VolumeCapability volume_capability = 4; - - // Secrets required by plugin to complete node stage volume request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map node_stage_secrets = 5; - - // Attributes of the volume to publish. This field is OPTIONAL and - // MUST match the attributes of the VolumeInfo identified by - // `volume_id`. - map volume_attributes = 6; -} - -message NodeStageVolumeResponse { -} -message NodeUnstageVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path at which the volume was published. It MUST be an absolute - // path in the root filesystem of the process serving this request. - // This is a REQUIRED field. - string staging_target_path = 2; -} - -message NodeUnstageVolumeResponse { -} -message NodePublishVolumeRequest { - // The ID of the volume to publish. This field is REQUIRED. - string volume_id = 1; - - // The CO SHALL set this field to the value returned by - // `ControllerPublishVolume` if the corresponding Controller Plugin - // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be - // left unset if the corresponding Controller Plugin does not have - // this capability. This is an OPTIONAL field. - map publish_info = 2; - - // The path to which the device was mounted by `NodeStageVolume`. - // It MUST be an absolute path in the root filesystem of the process - // serving this request. - // It MUST be set if the Node Plugin implements the - // `STAGE_UNSTAGE_VOLUME` node capability. - // This is an OPTIONAL field. - string staging_target_path = 3; - - // The path to which the volume will be published. It MUST be an - // absolute path in the root filesystem of the process serving this - // request. The CO SHALL ensure uniqueness of target_path per volume. - // The CO SHALL ensure that the path exists, and that the process - // serving the request has `read` and `write` permissions to the path. - // This is a REQUIRED field. - string target_path = 4; - - // The capability of the volume the CO expects the volume to have. - // This is a REQUIRED field. - VolumeCapability volume_capability = 5; - - // Whether to publish the volume in readonly mode. This field is - // REQUIRED. - bool readonly = 6; - - // Secrets required by plugin to complete node publish volume request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map node_publish_secrets = 7; - - // Attributes of the volume to publish. This field is OPTIONAL and - // MUST match the attributes of the Volume identified by - // `volume_id`. - map volume_attributes = 8; -} - -message NodePublishVolumeResponse { -} -message NodeUnpublishVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path at which the volume was published. It MUST be an absolute - // path in the root filesystem of the process serving this request. - // This is a REQUIRED field. - string target_path = 2; -} - -message NodeUnpublishVolumeResponse { -} -message NodeGetIdRequest { -} - -message NodeGetIdResponse { - // The ID of the node as understood by the SP which SHALL be used by - // CO in subsequent `ControllerPublishVolume`. - // This is a REQUIRED field. - string node_id = 1; -} -message NodeGetCapabilitiesRequest { -} - -message NodeGetCapabilitiesResponse { - // All the capabilities that the node service supports. This field - // is OPTIONAL. - repeated NodeServiceCapability capabilities = 1; -} - -// Specifies a capability of the node service. -message NodeServiceCapability { - message RPC { - enum Type { - UNKNOWN = 0; - STAGE_UNSTAGE_VOLUME = 1; - } - - Type type = 1; - } - - oneof type { - // RPC that the controller supports. - RPC rpc = 1; - } -} diff --git a/vendor/github.com/container-storage-interface/spec/lib/README.md b/vendor/github.com/container-storage-interface/spec/lib/README.md deleted file mode 100644 index 1cc2aade..00000000 --- a/vendor/github.com/container-storage-interface/spec/lib/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# CSI Validation Libraries -This directory contains language bindings generated from the CSI [protobuf file](../csi.proto) used to validate the model and workflows of the CSI specification. diff --git a/vendor/github.com/container-storage-interface/spec/lib/cxx/Makefile b/vendor/github.com/container-storage-interface/spec/lib/cxx/Makefile deleted file mode 100644 index dcc07c7d..00000000 --- a/vendor/github.com/container-storage-interface/spec/lib/cxx/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -all: build - -build: - @echo "cxx bindings & validation" - -clean: - @echo "clean cxx" - -.PHONY: clean diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/.gitignore b/vendor/github.com/container-storage-interface/spec/lib/go/.gitignore deleted file mode 100644 index e1128ce8..00000000 --- a/vendor/github.com/container-storage-interface/spec/lib/go/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/protoc -/protoc-gen-go -/csi.a diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/Makefile b/vendor/github.com/container-storage-interface/spec/lib/go/Makefile deleted file mode 100644 index 3af5de2b..00000000 --- a/vendor/github.com/container-storage-interface/spec/lib/go/Makefile +++ /dev/null @@ -1,120 +0,0 @@ -all: build - -######################################################################## -## GOLANG ## -######################################################################## - -# If GOPATH isn't defined then set its default location. -ifeq (,$(strip $(GOPATH))) -GOPATH := $(HOME)/go -else -# If GOPATH is already set then update GOPATH to be its own -# first element. -GOPATH := $(word 1,$(subst :, ,$(GOPATH))) -endif -export GOPATH - - -######################################################################## -## PROTOC ## -######################################################################## - -# Only set PROTOC_VER if it has an empty value. -ifeq (,$(strip $(PROTOC_VER))) -PROTOC_VER := 3.5.1 -endif - -PROTOC_OS := $(shell uname -s) -ifeq (Darwin,$(PROTOC_OS)) -PROTOC_OS := osx -endif - -PROTOC_ARCH := $(shell uname -m) -ifeq (i386,$(PROTOC_ARCH)) -PROTOC_ARCH := x86_32 -endif - -PROTOC := ./protoc -PROTOC_ZIP := protoc-$(PROTOC_VER)-$(PROTOC_OS)-$(PROTOC_ARCH).zip -PROTOC_URL := https://github.com/google/protobuf/releases/download/v$(PROTOC_VER)/$(PROTOC_ZIP) -PROTOC_TMP_DIR := .protoc -PROTOC_TMP_BIN := $(PROTOC_TMP_DIR)/bin/protoc - -$(PROTOC): - -mkdir -p "$(PROTOC_TMP_DIR)" && \ - curl -L $(PROTOC_URL) -o "$(PROTOC_TMP_DIR)/$(PROTOC_ZIP)" && \ - unzip "$(PROTOC_TMP_DIR)/$(PROTOC_ZIP)" -d "$(PROTOC_TMP_DIR)" && \ - chmod 0755 "$(PROTOC_TMP_BIN)" && \ - cp -f "$(PROTOC_TMP_BIN)" "$@" - -rm -fr "$(PROTOC_TMP_DIR)" - stat "$@" > /dev/null 2>&1 - - -######################################################################## -## PROTOC-GEN-GO ## -######################################################################## - -# This is the recipe for getting and installing the go plug-in -# for protoc -PROTOC_GEN_GO_PKG := github.com/golang/protobuf/protoc-gen-go -PROTOC_GEN_GO := protoc-gen-go -$(PROTOC_GEN_GO): - go get -d $(PROTOC_GEN_GO_PKG) && \ - go build -o "$@" $(PROTOC_GEN_GO_PKG) - - -######################################################################## -## PATH ## -######################################################################## - -# Update PATH with the current directory. This enables the protoc -# binary to discover the protoc-gen-go binary, built inside this -# directory. -export PATH := $(shell pwd):$(PATH) - - -######################################################################## -## BUILD ## -######################################################################## -CSI_PROTO := ../../csi.proto -CSI_PKG := $(shell cat $(CSI_PROTO) | sed -n -e 's/^package.\([^;]*\);$$/\1/p'|tr '.' '/') -CSI_GO := $(CSI_PKG)/csi.pb.go -CSI_A := csi.a -CSI_GO_TMP := $(CSI_PKG)/.build/csi.pb.go - -# This recipe generates the go language bindings to a temp area. -$(CSI_GO_TMP): $(CSI_PROTO) | $(PROTOC) $(PROTOC_GEN_GO) - @mkdir -p "$(@D)" - $(PROTOC) -I "$( /dev/null 2>&1 || cp -f "$?" "$@" -endif - -# This recipe builds the Go archive from the sources in three steps: -# -# 1. Go get any missing dependencies. -# 2. Cache the packages. -# 3. Build the archive file. -$(CSI_A): $(CSI_GO) - go get -d ./... - go install ./$(CSI_PKG) - go build -o "$@" ./$(CSI_PKG) - -build: $(CSI_A) - -clean: - go clean -i ./... - rm -f "$(CSI_A)" - -clobber: clean - rm -fr "$(PROTOC)" "$(PROTOC_GEN_GO)" "$(dir $(CSI_GO))" - -.PHONY: clean clobber diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/README.md b/vendor/github.com/container-storage-interface/spec/lib/go/README.md deleted file mode 100644 index 79c48ade..00000000 --- a/vendor/github.com/container-storage-interface/spec/lib/go/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# CSI Go Validation - -This package is used to validate the CSI specification with Go language bindings. - -## Build Reference - -To validate the Go language bindings against the current specification use the following command: - -```bash -$ make -``` - -The above command will download the `protoc` and `protoc-gen-go` binaries if they are not present and then proceed to build the CSI Go language bindings. - -### Environment Variables - -The following table lists the environment variables that can be used to influence the behavior of the Makefile: - -| Name | Default Value | Description | -|------|---------------|-------------| -| `PROTOC_VER` | `3.3.0` | The version of the protoc binary. | diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/csi.go b/vendor/github.com/container-storage-interface/spec/lib/go/csi.go deleted file mode 100644 index 33826d5d..00000000 --- a/vendor/github.com/container-storage-interface/spec/lib/go/csi.go +++ /dev/null @@ -1,5 +0,0 @@ -// Package csi is the Container Storage Interface (CSI) specification -// repository. This package contains no functional code, and this file -// exists only to make it possible to import this repository with a Go -// dependency manager such as Dep (https://github.com/golang/dep). -package csi diff --git a/vendor/github.com/container-storage-interface/spec/logo.png b/vendor/github.com/container-storage-interface/spec/logo.png deleted file mode 100755 index a4256afa..00000000 Binary files a/vendor/github.com/container-storage-interface/spec/logo.png and /dev/null differ diff --git a/vendor/github.com/container-storage-interface/spec/spec.md b/vendor/github.com/container-storage-interface/spec/spec.md deleted file mode 100644 index 7a5f6b12..00000000 --- a/vendor/github.com/container-storage-interface/spec/spec.md +++ /dev/null @@ -1,1575 +0,0 @@ -# Container Storage Interface (CSI) - -Authors: - -* Jie Yu <> (@jieyu) -* Saad Ali <> (@saad-ali) -* James DeFelice <> (@jdef) -* - -## Notational Conventions - -The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in [RFC 2119](http://tools.ietf.org/html/rfc2119) (Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997). - -The key words "unspecified", "undefined", and "implementation-defined" are to be interpreted as described in the [rationale for the C99 standard](http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf#page=18). - -An implementation is not compliant if it fails to satisfy one or more of the MUST, REQUIRED, or SHALL requirements for the protocols it implements. -An implementation is compliant if it satisfies all the MUST, REQUIRED, and SHALL requirements for the protocols it implements. - -## Terminology - -| Term | Definition | -|-------------------|--------------------------------------------------| -| Volume | A unit of storage that will be made available inside of a CO-managed container, via the CSI. | -| Block Volume | A volume that will appear as a block device inside the container. | -| Mounted Volume | A volume that will be mounted using the specified file system and appear as a directory inside the container. | -| CO | Container Orchestration system, communicates with Plugins using CSI service RPCs. | -| SP | Storage Provider, the vendor of a CSI plugin implementation. | -| RPC | [Remote Procedure Call](https://en.wikipedia.org/wiki/Remote_procedure_call). | -| Node | A host where the user workload will be running, uniquely identifiable from the perspective of a Plugin by a node ID. | -| Plugin | Aka “plugin implementation”, a gRPC endpoint that implements the CSI Services. | -| Plugin Supervisor | Process that governs the lifecycle of a Plugin, MAY be the CO. | -| Workload | The atomic unit of "work" scheduled by a CO. This may be a container or a collection of containers. | - -## Objective - -To define an industry standard “Container Storage Interface” (CSI) that will enable storage vendors (SP) to develop a plugin once and have it work across a number of container orchestration (CO) systems. - -### Goals in MVP - -The Container Storage Interface (CSI) will - -* Enable SP authors to write one CSI compliant Plugin that “just works” across all COs that implement CSI. -* Define API (RPCs) that enable: - * Dynamic provisioning and deprovisioning of a volume. - * Attaching or detaching a volume from a node. - * Mounting/unmounting a volume from a node. - * Consumption of both block and mountable volumes. - * Local storage providers (e.g., device mapper, lvm). -* Define plugin protocol RECOMMENDATIONS. - * Describe a process by which a Supervisor configures a Plugin. - * Container deployment considerations (`CAP_SYS_ADMIN`, mount namespace, etc.). - -### Non-Goals in MVP - -The Container Storage Interface (CSI) explicitly will not define, provide, or dictate in v0.1: - -* Specific mechanisms by which a Plugin Supervisor manages the lifecycle of a Plugin, including: - * How to maintain state (e.g. what is attached, mounted, etc.). - * How to deploy, install, upgrade, uninstall, monitor, or respawn (in case of unexpected termination) Plugins. -* A first class message structure/field to represent "grades of storage" (aka "storage class"). -* Protocol-level authentication and authorization. -* Packaging of a Plugin. -* POSIX compliance: CSI provides no guarantee that volumes provided are POSIX compliant filesystems. - Compliance is determined by the Plugin implementation (and any backend storage system(s) upon which it depends). - CSI SHALL NOT obstruct a Plugin Supervisor or CO from interacting with Plugin-managed volumes in a POSIX-compliant manner. - -## Solution Overview - -This specification defines an interface along with the minimum operational and packaging recommendations for a storage provider (SP) to implement a CSI compatible plugin. -The interface declares the RPCs that a plugin must expose: this is the **primary focus** of the CSI specification. -Any operational and packaging recommendations offer additional guidance to promote cross-CO compatibility. - -### Architecture - -The primary focus of this specification is on the **protocol** between a CO and a Plugin. -It SHOULD be possible to ship cross-CO compatible Plugins for a variety of deployment architectures. -A CO should be equipped to handle both centralized and headless plugins, as well as split-component and unified plugins. -Several of these possibilities are illustrated in the following figures. - -``` - CO "Master" Host -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Controller | | -| | +-----------> Plugin | | -| +------------+ +------------+ | -| | -+-------------------------------------------+ - - CO "Node" Host(s) -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Node | | -| | +-----------> Plugin | | -| +------------+ +------------+ | -| | -+-------------------------------------------+ - -Figure 1: The Plugin runs on all nodes in the cluster: a centralized -Controller Plugin is available on the CO master host and the Node -Plugin is available on all of the CO Nodes. -``` - -``` - CO "Node" Host(s) -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Controller | | -| | +--+--------> Plugin | | -| +------------+ | +------------+ | -| | | -| | | -| | +------------+ | -| | | Node | | -| +--------> Plugin | | -| +------------+ | -| | -+-------------------------------------------+ - -Figure 2: Headless Plugin deployment, only the CO Node hosts run -Plugins. Separate, split-component Plugins supply the Controller -Service and the Node Service respectively. -``` - -``` - CO "Node" Host(s) -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Controller | | -| | +-----------> Node | | -| +------------+ | Plugin | | -| +------------+ | -| | -+-------------------------------------------+ - -Figure 3: Headless Plugin deployment, only the CO Node hosts run -Plugins. A unified Plugin component supplies both the Controller -Service and Node Service. -``` - -``` - CO "Node" Host(s) -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Node | | -| | +-----------> Plugin | | -| +------------+ +------------+ | -| | -+-------------------------------------------+ - -Figure 4: Headless Plugin deployment, only the CO Node hosts run -Plugins. A Node-only Plugin component supplies only the Node Service. -Its GetPluginCapabilities RPC does not report the CONTROLLER_SERVICE -capability. -``` - -### Volume Lifecycle - -``` - CreateVolume +------------+ DeleteVolume - +------------->| CREATED +--------------+ - | +---+----+---+ | - | Controller | | Controller v -+++ Publish | | Unpublish +++ -|X| Volume | | Volume | | -+-+ +---v----+---+ +-+ - | NODE_READY | - +---+----^---+ - Node | | Node - Publish | | Unpublish - Volume | | Volume - +---v----+---+ - | PUBLISHED | - +------------+ - -Figure 5: The lifecycle of a dynamically provisioned volume, from -creation to destruction. -``` - -``` - CreateVolume +------------+ DeleteVolume - +------------->| CREATED +--------------+ - | +---+----+---+ | - | Controller | | Controller v -+++ Publish | | Unpublish +++ -|X| Volume | | Volume | | -+-+ +---v----+---+ +-+ - | NODE_READY | - +---+----^---+ - Node | | Node - Stage | | Unstage - Volume | | Volume - +---v----+---+ - | VOL_READY | - +------------+ - Node | | Node - Publish | | Unpublish - Volume | | Volume - +---v----+---+ - | PUBLISHED | - +------------+ - -Figure 6: The lifecycle of a dynamically provisioned volume, from -creation to destruction, when the Node Plugin advertises the -STAGE_UNSTAGE_VOLUME capability. -``` - -``` - Controller Controller - Publish Unpublish - Volume +------------+ Volume - +------------->+ NODE_READY +--------------+ - | +---+----^---+ | - | Node | | Node v -+++ Publish | | Unpublish +++ -|X| <-+ Volume | | Volume | | -+++ | +---v----+---+ +-+ - | | | PUBLISHED | - | | +------------+ - +----+ - Validate - Volume - Capabilities - -Figure 7: The lifecycle of a pre-provisioned volume that requires -controller to publish to a node (`ControllerPublishVolume`) prior to -publishing on the node (`NodePublishVolume`). -``` - -``` - +-+ +-+ - |X| | | - +++ +^+ - | | - Node | | Node -Publish | | Unpublish - Volume | | Volume - +---v----+---+ - | PUBLISHED | - +------------+ - -Figure 8: Plugins may forego other lifecycle steps by contraindicating -them via the capabilities API. Interactions with the volumes of such -plugins is reduced to `NodePublishVolume` and `NodeUnpublishVolume` -calls. -``` - -The above diagrams illustrate a general expectation with respect to how a CO MAY manage the lifecycle of a volume via the API presented in this specification. -Plugins should expose all RPCs for an interface: Controller plugins should implement all RPCs for the `Controller` service. -Unsupported RPCs should return an appropriate error code that indicates such (e.g. `CALL_NOT_IMPLEMENTED`). -The full list of plugin capabilities is documented in the `ControllerGetCapabilities` and `NodeGetCapabilities` RPCs. - -## Container Storage Interface - -This section describes the interface between COs and Plugins. - -### RPC Interface - -A CO interacts with an Plugin through RPCs. -Each SP MUST provide: - -* **Node Plugin**: A gRPC endpoint serving CSI RPCs that MUST be run on the Node whereupon an SP-provisioned volume will be published. -* **Controller Plugin**: A gRPC endpoint serving CSI RPCs that MAY be run anywhere. -* In some circumstances a single gRPC endpoint MAY serve all CSI RPCs (see Figure 3 in [Architecture](#architecture)). - -```protobuf -syntax = "proto3"; -package csi.v0; - -option go_package = "csi"; -``` - -There are three sets of RPCs: - -* **Identity Service**: Both the Node Plugin and the Controller Plugin MUST implement this sets of RPCs. -* **Controller Service**: The Controller Plugin MUST implement this sets of RPCs. -* **Node Service**: The Node Plugin MUST implement this sets of RPCs. - -```protobuf -service Identity { - rpc GetPluginInfo(GetPluginInfoRequest) - returns (GetPluginInfoResponse) {} - - rpc GetPluginCapabilities(GetPluginCapabilitiesRequest) - returns (GetPluginCapabilitiesResponse) {} - - rpc Probe (ProbeRequest) - returns (ProbeResponse) {} -} - -service Controller { - rpc CreateVolume (CreateVolumeRequest) - returns (CreateVolumeResponse) {} - - rpc DeleteVolume (DeleteVolumeRequest) - returns (DeleteVolumeResponse) {} - - rpc ControllerPublishVolume (ControllerPublishVolumeRequest) - returns (ControllerPublishVolumeResponse) {} - - rpc ControllerUnpublishVolume (ControllerUnpublishVolumeRequest) - returns (ControllerUnpublishVolumeResponse) {} - - rpc ValidateVolumeCapabilities (ValidateVolumeCapabilitiesRequest) - returns (ValidateVolumeCapabilitiesResponse) {} - - rpc ListVolumes (ListVolumesRequest) - returns (ListVolumesResponse) {} - - rpc GetCapacity (GetCapacityRequest) - returns (GetCapacityResponse) {} - - rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest) - returns (ControllerGetCapabilitiesResponse) {} -} - -service Node { - rpc NodeStageVolume (NodeStageVolumeRequest) - returns (NodeStageVolumeResponse) {} - - rpc NodeUnstageVolume (NodeUnstageVolumeRequest) - returns (NodeUnstageVolumeResponse) {} - - rpc NodePublishVolume (NodePublishVolumeRequest) - returns (NodePublishVolumeResponse) {} - - rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest) - returns (NodeUnpublishVolumeResponse) {} - - rpc NodeGetId (NodeGetIdRequest) - returns (NodeGetIdResponse) {} - - rpc NodeGetCapabilities (NodeGetCapabilitiesRequest) - returns (NodeGetCapabilitiesResponse) {} -} -``` - -In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call “in-flight” per volume at a given time. -However, in some circumstances, the CO may lose state (for example when the CO crashes and restarts), and may issue multiple calls simultaneously for the same volume. -The plugin should handle this as gracefully as possible. -The error code `OPERATION_PENDING_FOR_VOLUME` may be returned by the plugin in this case (see general error code section for details). - -#### Field Size Limits - -CSI defines general size limits for fields of various types (see table below). -The general size limit for a particular field may be overridden by specifying a different size limit in said field's description. -Unless otherwise specified, fields SHALL NOT exceed the limits documented here. -These limits apply for messages generated by both COs and plugins. - -| Size | Field Type | -|------------|---------------------| -| 128 bytes | string | -| 4 KiB | map | - -#### `REQUIRED` Fields - -* A field listed as `REQUIRED` MUST be specified, subject to any per-RPC caveats; caveats SHOULD be rare. -* A `repeated` or `map` field listed as `REQUIRED` MUST contain at least 1 element. - -### Error Scheme - -All CSI API calls defined in this spec MUST return a [standard gRPC status](https://github.com/grpc/grpc/blob/master/src/proto/grpc/status/status.proto). -Most gRPC libraries provide helper methods to set and read the status fields. - -The status `code` MUST contain a [canonical error code](https://github.com/grpc/grpc-go/blob/master/codes/codes.go). COs must handle all valid error codes. Each RPC defines a set of gRPC error codes that MUST be returned by the plugin when specified conditions are encountered. In addition to those, if the conditions defined below are encountered, the plugin MUST return the associated gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Missing required field | 3 INVALID_ARGUMENT | Indicates that a required field is missing from the request. More human-readable information MAY be provided in the `error_description` field. | Caller MUST fix the request by adding the missing required field before retrying. | -| Invalid or unsupported field in the request | 3 INVALID_ARGUMENT | Indicates that the one ore more fields in this field is either not allowed by the Plugin or has an invalid value. More human-readable information MAY be provided in the gRPC `status.message` field. | Caller MUST fix the field before retrying. | - -The status `message` MUST contain a human readable description of error, if the status `code` is not `OK`. -This string MAY be surfaced by CO to end users. - -The status `details` MUST be empty. In the future, this spec may require `details` to return a machine-parsable protobuf message if the status `code` is not `OK` to enable CO's to implement smarter error handling and fault resolution. - -### Identity Service RPC - -Identity service RPCs allow a CO to query a plugin for capabilities, health, and other metadata. -The general flow of the success case MAY be as follows (protos illustrated in YAML for brevity): - -1. CO queries metadata via Identity RPC. - -``` - # CO --(GetPluginInfo)--> Plugin - request: - response: - name: org.foo.whizbang.super-plugin - vendor_version: blue-green - manifest: - baz: qaz -``` - -2. CO queries available capabilities of the plugin. - -``` - # CO --(GetPluginCapabilities)--> Plugin - request: - response: - capabilities: - - service: - type: CONTROLLER_SERVICE -``` - -3. CO queries the readiness of the plugin. - -``` - # CO --(Probe)--> Plugin - request: - response: {} -``` - -#### `GetPluginInfo` - -```protobuf -message GetPluginInfoRequest { -} - -message GetPluginInfoResponse { - // The name MUST follow reverse domain name notation format - // (https://en.wikipedia.org/wiki/Reverse_domain_name_notation). - // It SHOULD include the plugin's host company name and the plugin - // name, to minimize the possibility of collisions. It MUST be 63 - // characters or less, beginning and ending with an alphanumeric - // character ([a-z0-9A-Z]) with dashes (-), underscores (_), - // dots (.), and alphanumerics between. This field is REQUIRED. - string name = 1; - - // This field is REQUIRED. Value of this field is opaque to the CO. - string vendor_version = 2; - - // This field is OPTIONAL. Values are opaque to the CO. - map manifest = 3; -} -``` - -##### GetPluginInfo Errors - -If the plugin is unable to complete the GetPluginInfo call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### `GetPluginCapabilities` - -This REQUIRED RPC allows the CO to query the supported capabilities of the Plugin "as a whole": it is the grand sum of all capabilities of all instances of the Plugin software, as it is intended to be deployed. -All instances of the same version (see `vendor_version` of `GetPluginInfoResponse`) of the Plugin SHALL return the same set of capabilities, regardless of both: (a) where instances are deployed on the cluster as well as; (b) which RPCs an instance is serving. - -```protobuf -message GetPluginCapabilitiesRequest { -} - -message GetPluginCapabilitiesResponse { - // All the capabilities that the controller service supports. This - // field is OPTIONAL. - repeated PluginCapability capabilities = 2; -} - -// Specifies a capability of the plugin. -message PluginCapability { - message Service { - enum Type { - UNKNOWN = 0; - - // CONTROLLER_SERVICE indicates that the Plugin provides RPCs for - // the ControllerService. Plugins SHOULD provide this capability. - // In rare cases certain plugins may wish to omit the - // ControllerService entirely from their implementation, but such - // SHOULD NOT be the common case. - // The presence of this capability determines whether the CO will - // attempt to invoke the REQUIRED ControllerService RPCs, as well - // as specific RPCs as indicated by ControllerGetCapabilities. - CONTROLLER_SERVICE = 1; - } - Type type = 1; - } - - oneof type { - // Service that the plugin supports. - Service service = 1; - } -} -``` - -##### GetPluginCapabilities Errors - -If the plugin is unable to complete the GetPluginCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### `Probe` - -A Plugin MUST implement this RPC call. -The primary utility of the Probe RPC is to verify that the plugin is in a healthy state. -If an unhealthy state is reported, via a non-success response, a CO MAY take action with the intent to bring the plugin to a healthy state. -Such actions MAY include, but SHALL NOT be limited to, the following: - -* Restarting the plugin container, or -* Notifying the plugin supervisor. - -The Plugin MAY verify that it has the right configurations, devices, dependencies and drivers in order to run and return a success if the validation succeeds. -The CO MAY invoke this RPC at any time. -A CO MAY invoke this call multiple times with the understanding that a plugin's implementation MAY NOT be trivial and there MAY be overhead incurred by such repeated calls. -The SP SHALL document guidance and known limitations regarding a particular Plugin's implementation of this RPC. -For example, the SP MAY document the maximum frequency at which its Probe implementation should be called. - -```protobuf -message ProbeRequest { -} - -message ProbeResponse { - // Intentionally empty. -} -``` - -##### Probe Errors - -If the plugin is unable to complete the Probe call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Plugin not healthy | 9 FAILED_PRECONDITION | Indicates that the plugin is not in a healthy/ready state. | Caller SHOULD assume the plugin is not healthy and that future RPCs MAY fail because of this condition. | -| Missing required dependency | 9 FAILED_PRECONDITION | Indicates that the plugin is missing one or more required dependency. | Caller MUST assume the plugin is not healthy. | - - -### Controller Service RPC - -#### `CreateVolume` - -A Controller Plugin MUST implement this RPC call if it has `CREATE_DELETE_VOLUME` controller capability. -This RPC will be called by the CO to provision a new volume on behalf of a user (to be consumed as either a block device or a mounted filesystem). - -This operation MUST be idempotent. -If a volume corresponding to the specified volume `name` already exists and is compatible with the specified `capacity_range`, `volume_capabilities` and `parameters` in the `CreateVolumeRequest`, the Plugin MUST reply `0 OK` with the corresponding `CreateVolumeResponse`. - -```protobuf -message CreateVolumeRequest { - // The suggested name for the storage space. This field is REQUIRED. - // It serves two purposes: - // 1) Idempotency - This name is generated by the CO to achieve - // idempotency. If `CreateVolume` fails, the volume may or may not - // be provisioned. In this case, the CO may call `CreateVolume` - // again, with the same name, to ensure the volume exists. The - // Plugin should ensure that multiple `CreateVolume` calls for the - // same name do not result in more than one piece of storage - // provisioned corresponding to that name. If a Plugin is unable to - // enforce idempotency, the CO's error recovery logic could result - // in multiple (unused) volumes being provisioned. - // 2) Suggested name - Some storage systems allow callers to specify - // an identifier by which to refer to the newly provisioned - // storage. If a storage system supports this, it can optionally - // use this name as the identifier for the new volume. - string name = 1; - - // This field is OPTIONAL. This allows the CO to specify the capacity - // requirement of the volume to be provisioned. If not specified, the - // Plugin MAY choose an implementation-defined capacity range. - CapacityRange capacity_range = 2; - - // The capabilities that the provisioned volume MUST have: the Plugin - // MUST provision a volume that could satisfy ALL of the - // capabilities specified in this list. The Plugin MUST assume that - // the CO MAY use the provisioned volume later with ANY of the - // capabilities specified in this list. This also enables the CO to do - // early validation: if ANY of the specified volume capabilities are - // not supported by the Plugin, the call SHALL fail. This field is - // REQUIRED. - repeated VolumeCapability volume_capabilities = 3; - - // Plugin specific parameters passed in as opaque key-value pairs. - // This field is OPTIONAL. The Plugin is responsible for parsing and - // validating these parameters. COs will treat these as opaque. - map parameters = 4; - - // Secrets required by plugin to complete volume creation request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map controller_create_secrets = 5; -} - -message CreateVolumeResponse { - // Contains all attributes of the newly created volume that are - // relevant to the CO along with information required by the Plugin - // to uniquely identify the volume. This field is REQUIRED. - Volume volume = 1; -} - -// Specify a capability of a volume. -message VolumeCapability { - // Indicate that the volume will be accessed via the block device API. - message BlockVolume { - // Intentionally empty, for now. - } - - // Indicate that the volume will be accessed via the filesystem API. - message MountVolume { - // The filesystem type. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string fs_type = 1; - - // The mount options that can be used for the volume. This field is - // OPTIONAL. `mount_flags` MAY contain sensitive information. - // Therefore, the CO and the Plugin MUST NOT leak this information - // to untrusted entities. The total size of this repeated field - // SHALL NOT exceed 4 KiB. - repeated string mount_flags = 2; - } - - // Specify how a volume can be accessed. - message AccessMode { - enum Mode { - UNKNOWN = 0; - - // Can only be published once as read/write on a single node, at - // any given time. - SINGLE_NODE_WRITER = 1; - - // Can only be published once as readonly on a single node, at - // any given time. - SINGLE_NODE_READER_ONLY = 2; - - // Can be published as readonly at multiple nodes simultaneously. - MULTI_NODE_READER_ONLY = 3; - - // Can be published at multiple nodes simultaneously. Only one of - // the node can be used as read/write. The rest will be readonly. - MULTI_NODE_SINGLE_WRITER = 4; - - // Can be published as read/write at multiple nodes - // simultaneously. - MULTI_NODE_MULTI_WRITER = 5; - } - - // This field is REQUIRED. - Mode mode = 1; - } - - // Specifies what API the volume will be accessed using. One of the - // following fields MUST be specified. - oneof access_type { - BlockVolume block = 1; - MountVolume mount = 2; - } - - // This is a REQUIRED field. - AccessMode access_mode = 3; -} - -// The capacity of the storage space in bytes. To specify an exact size, -// `required_bytes` and `limit_bytes` can be set to the same value. At -// least one of the these fields MUST be specified. -message CapacityRange { - // Volume must be at least this big. This field is OPTIONAL. - // A value of 0 is equal to an unspecified field value. - // The value of this field MUST NOT be negative. - int64 required_bytes = 1; - - // Volume must not be bigger than this. This field is OPTIONAL. - // A value of 0 is equal to an unspecified field value. - // The value of this field MUST NOT be negative. - int64 limit_bytes = 2; -} - -// The information about a provisioned volume. -message Volume { - // The capacity of the volume in bytes. This field is OPTIONAL. If not - // set (value of 0), it indicates that the capacity of the volume is - // unknown (e.g., NFS share). - // The value of this field MUST NOT be negative. - int64 capacity_bytes = 1; - - // Contains identity information for the created volume. This field is - // REQUIRED. The identity information will be used by the CO in - // subsequent calls to refer to the provisioned volume. - string id = 2; - - // Attributes reflect static properties of a volume and MUST be passed - // to volume validation and publishing calls. - // Attributes SHALL be opaque to a CO. Attributes SHALL NOT be mutable - // and SHALL be safe for the CO to cache. Attributes SHOULD NOT - // contain sensitive information. Attributes MAY NOT uniquely identify - // a volume. A volume uniquely identified by `id` SHALL always report - // the same attributes. This field is OPTIONAL and when present MUST - // be passed to volume validation and publishing calls. - map attributes = 3; -} -``` - -##### CreateVolume Errors - -If the plugin is unable to complete the CreateVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume already exists but is incompatible | 6 ALREADY_EXISTS | Indicates that a volume corresponding to the specified volume `name` already exists but is incompatible with the specified `capacity_range`, `volume_capabilities` or `parameters`. | Caller MUST fix the arguments or use a different `name` before retrying. | -| Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | -| Unsupported `capacity_range` | 11 OUT_OF_RANGE | Indicates that the capacity range is not allowed by the Plugin. More human-readable information MAY be provided in the gRPC `status.message` field. | Caller MUST fix the capacity range before retrying. | -| Call not implemented | 12 UNIMPLEMENTED | CreateVolume call is not implemented by the plugin or disabled in the Plugin's current mode of operation. | Caller MUST NOT retry. Caller MAY call `ControllerGetCapabilities` or `NodeGetCapabilities` to discover Plugin capabilities. | - - -#### `DeleteVolume` - -A Controller Plugin MUST implement this RPC call if it has `CREATE_DELETE_VOLUME` capability. -This RPC will be called by the CO to deprovision a volume. -If successful, the storage space associated with the volume MUST be released and all the data in the volume SHALL NOT be accessible anymore. - -This operation MUST be idempotent. -If a volume corresponding to the specified `volume_id` does not exist or the artifacts associated with the volume do not exist anymore, the Plugin MUST reply `0 OK`. - -```protobuf -message DeleteVolumeRequest { - // The ID of the volume to be deprovisioned. - // This field is REQUIRED. - string volume_id = 1; - - // Secrets required by plugin to complete volume deletion request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map controller_delete_secrets = 2; -} - -message DeleteVolumeResponse { -} -``` - -##### DeleteVolume Errors - -If the plugin is unable to complete the DeleteVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume in use | 9 FAILED_PRECONDITION | Indicates that the volume corresponding to the specified `volume_id` could not be deleted because it is in use by another resource. | Caller SHOULD ensure that there are no other resources using the volume, and then retry with exponential back off. | -| Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | -| Call not implemented | 12 UNIMPLEMENTED | DeleteVolume call is not implemented by the plugin or disabled in the Plugin's current mode of operation. | Caller MUST NOT retry. Caller MAY call `ControllerGetCapabilities` or `NodeGetCapabilities` to discover Plugin capabilities. | - - -#### `ControllerPublishVolume` - -A Controller Plugin MUST implement this RPC call if it has `PUBLISH_UNPUBLISH_VOLUME` controller capability. -This RPC will be called by the CO when it wants to place a workload that uses the volume onto a node. -The Plugin SHOULD perform the work that is necessary for making the volume available on the given node. -The Plugin MUST NOT assume that this RPC will be executed on the node where the volume will be used. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` has already been published at the node corresponding to the `node_id`, and is compatible with the specified `volume_capability` and `readonly` flag, the Plugin MUST reply `0 OK`. - -If the operation failed or the CO does not know if the operation has failed or not, it MAY choose to call `ControllerPublishVolume` again or choose to call `ControllerUnpublishVolume`. - -The CO MAY call this RPC for publishing a volume to multiple nodes if the volume has `MULTI_NODE` capability (i.e., `MULTI_NODE_READER_ONLY`, `MULTI_NODE_SINGLE_WRITER` or `MULTI_NODE_MULTI_WRITER`). - -```protobuf -message ControllerPublishVolumeRequest { - // The ID of the volume to be used on a node. - // This field is REQUIRED. - string volume_id = 1; - - // The ID of the node. This field is REQUIRED. The CO SHALL set this - // field to match the node ID returned by `NodeGetId`. - string node_id = 2; - - // The capability of the volume the CO expects the volume to have. - // This is a REQUIRED field. - VolumeCapability volume_capability = 3; - - // Whether to publish the volume in readonly mode. This field is - // REQUIRED. - bool readonly = 4; - - // Secrets required by plugin to complete controller publish volume - // request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map controller_publish_secrets = 5; - - // Attributes of the volume to be used on a node. This field is - // OPTIONAL and MUST match the attributes of the Volume identified - // by `volume_id`. - map volume_attributes = 6; -} - -message ControllerPublishVolumeResponse { - // The SP specific information that will be passed to the Plugin in - // the subsequent `NodeStageVolume` or `NodePublishVolume` calls - // for the given volume. - // This information is opaque to the CO. This field is OPTIONAL. - map publish_info = 1; -} -``` - -##### ControllerPublishVolume Errors - -If the plugin is unable to complete the ControllerPublishVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exists | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Node does not exists | 5 NOT_FOUND | Indicates that a node corresponding to the specified `node_id` does not exist. | Caller MUST verify that the `node_id` is correct and that the node is available and has not been terminated or deleted before retrying with exponential backoff. | -| Volume published but is incompatible | 6 ALREADY_EXISTS | Indicates that a volume corresponding to the specified `volume_id` has already been published at the node corresponding to the specified `volume_id` but is incompatible with the specified `volume_capability` or `readonly` flag . | Caller MUST fix the arguments before retying. | -| Volume published to another node | 9 FAILED_PRECONDITION | Indicates that a volume corresponding to the specified `volume_id` has already been published at another node and does not have MULTI_NODE volume capability. If this error code is returned, the Plugin SHOULD specify the `node_id` of the node at which the volume is published as part of the gRPC `status.message`. | Caller SHOULD ensure the specified volume is not published at any other node before retrying with exponential back off. | -| Max volumes attached | 8 RESOURCE_EXHAUSTED | Indicates that the maximum supported number of volumes that can be attached to the specified node are already attached. Therefore, this operation will fail until at least one of the existing attached volumes is detached from the node. | Caller MUST ensure that the number of volumes already attached to the node is less then the maximum supported number of volumes before retrying with exponential backoff. | -| Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | -| Call not implemented | 12 UNIMPLEMENTED | ControllerPublishVolume call is not implemented by the plugin or disabled in the Plugin's current mode of operation. | Caller MUST NOT retry. Caller MAY call `ControllerGetCapabilities` or `NodeGetCapabilities` to discover Plugin capabilities. | - -#### `ControllerUnpublishVolume` - -Controller Plugin MUST implement this RPC call if it has `PUBLISH_UNPUBLISH_VOLUME` controller capability. -This RPC is a reverse operation of `ControllerPublishVolume`. -It MUST be called after all `NodeUnstageVolume` and `NodeUnpublishVolume` on the volume are called and succeed. -The Plugin SHOULD perform the work that is necessary for making the volume ready to be consumed by a different node. -The Plugin MUST NOT assume that this RPC will be executed on the node where the volume was previously used. - -This RPC is typically called by the CO when the workload using the volume is being moved to a different node, or all the workload using the volume on a node has finished. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` is not attached to the node corresponding to the `node_id`, the Plugin MUST reply `0 OK`. -If this operation failed, or the CO does not know if the operation failed or not, it can choose to call `ControllerUnpublishVolume` again. - -```protobuf -message ControllerUnpublishVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The ID of the node. This field is OPTIONAL. The CO SHOULD set this - // field to match the node ID returned by `NodeGetId` or leave it - // unset. If the value is set, the SP MUST unpublish the volume from - // the specified node. If the value is unset, the SP MUST unpublish - // the volume from all nodes it is published to. - string node_id = 2; - - // Secrets required by plugin to complete controller unpublish volume - // request. This SHOULD be the same secrets passed to the - // ControllerPublishVolume. - // call for the specified volume. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map controller_unpublish_secrets = 3; -} - -message ControllerUnpublishVolumeResponse { -} -``` - -##### ControllerUnpublishVolume Errors - -If the plugin is unable to complete the ControllerUnpublishVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exists | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Node does not exists | 5 NOT_FOUND | Indicates that a node corresponding to the specified `node_id` does not exist. | Caller MUST verify that the `node_id` is correct and that the node is available and has not been terminated or deleted before retrying with exponential backoff. | -| Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | -| Call not implemented | 12 UNIMPLEMENTED | ControllerUnpublishVolume call is not implemented by the plugin or disabled in the Plugin's current mode of operation. | Caller MUST NOT retry. Caller MAY call `ControllerGetCapabilities` or `NodeGetCapabilities` to discover Plugin capabilities. | - - -#### `ValidateVolumeCapabilities` - -A Controller Plugin MUST implement this RPC call. -This RPC will be called by the CO to check if a pre-provisioned volume has all the capabilities that the CO wants. -This RPC call SHALL return `supported` only if all the volume capabilities specified in the request are supported. -This operation MUST be idempotent. - -```protobuf -message ValidateVolumeCapabilitiesRequest { - // The ID of the volume to check. This field is REQUIRED. - string volume_id = 1; - - // The capabilities that the CO wants to check for the volume. This - // call SHALL return "supported" only if all the volume capabilities - // specified below are supported. This field is REQUIRED. - repeated VolumeCapability volume_capabilities = 2; - - // Attributes of the volume to check. This field is OPTIONAL and MUST - // match the attributes of the Volume identified by `volume_id`. - map volume_attributes = 3; -} - -message ValidateVolumeCapabilitiesResponse { - // True if the Plugin supports the specified capabilities for the - // given volume. This field is REQUIRED. - bool supported = 1; - - // Message to the CO if `supported` above is false. This field is - // OPTIONAL. - // An empty string is equal to an unspecified field value. - string message = 2; -} -``` - -##### ValidateVolumeCapabilities Errors - -If the plugin is unable to complete the ValidateVolumeCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exists | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | - - -#### `ListVolumes` - -A Controller Plugin MUST implement this RPC call if it has `LIST_VOLUMES` capability. -The Plugin SHALL return the information about all the volumes that it knows about. - -```protobuf -message ListVolumesRequest { - // If specified (non-zero value), the Plugin MUST NOT return more - // entries than this number in the response. If the actual number of - // entries is more than this number, the Plugin MUST set `next_token` - // in the response which can be used to get the next page of entries - // in the subsequent `ListVolumes` call. This field is OPTIONAL. If - // not specified (zero value), it means there is no restriction on the - // number of entries that can be returned. - // The value of this field MUST NOT be negative. - int32 max_entries = 1; - - // A token to specify where to start paginating. Set this field to - // `next_token` returned by a previous `ListVolumes` call to get the - // next page of entries. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string starting_token = 2; -} - -message ListVolumesResponse { - message Entry { - Volume volume = 1; - } - - repeated Entry entries = 1; - - // This token allows you to get the next page of entries for - // `ListVolumes` request. If the number of entries is larger than - // `max_entries`, use the `next_token` as a value for the - // `starting_token` field in the next `ListVolumes` request. This - // field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string next_token = 2; -} -``` - -##### ListVolumes Errors - -If the plugin is unable to complete the ListVolumes call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Invalid `starting_token` | 10 ABORTED | Indicates that `starting_token` is not valid. | Caller SHOULD start the `ListVolumes` operation again with an empty `starting_token`. | - - -#### `GetCapacity` - -A Controller Plugin MUST implement this RPC call if it has `GET_CAPACITY` controller capability. -The RPC allows the CO to query the capacity of the storage pool from which the controller provisions volumes. - -```protobuf -message GetCapacityRequest { - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes that satisfy ALL of the - // specified `volume_capabilities`. These are the same - // `volume_capabilities` the CO will use in `CreateVolumeRequest`. - // This field is OPTIONAL. - repeated VolumeCapability volume_capabilities = 1; - - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes with the given Plugin - // specific `parameters`. These are the same `parameters` the CO will - // use in `CreateVolumeRequest`. This field is OPTIONAL. - map parameters = 2; -} - -message GetCapacityResponse { - // The available capacity of the storage that can be used to - // provision volumes. If `volume_capabilities` or `parameters` is - // specified in the request, the Plugin SHALL take those into - // consideration when calculating the available capacity of the - // storage. This field is REQUIRED. - // The value of this field MUST NOT be negative. - int64 available_capacity = 1; -} -``` - -##### GetCapacity Errors - -If the plugin is unable to complete the GetCapacity call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### `ControllerGetCapabilities` - -A Controller Plugin MUST implement this RPC call. This RPC allows the CO to check the supported capabilities of controller service provided by the Plugin. - -```protobuf -message ControllerGetCapabilitiesRequest { -} - -message ControllerGetCapabilitiesResponse { - // All the capabilities that the controller service supports. This - // field is OPTIONAL. - repeated ControllerServiceCapability capabilities = 2; -} - -// Specifies a capability of the controller service. -message ControllerServiceCapability { - message RPC { - enum Type { - UNKNOWN = 0; - CREATE_DELETE_VOLUME = 1; - PUBLISH_UNPUBLISH_VOLUME = 2; - LIST_VOLUMES = 3; - GET_CAPACITY = 4; - } - - Type type = 1; - } - - oneof type { - // RPC that the controller supports. - RPC rpc = 1; - } -} -``` - -##### ControllerGetCapabilities Errors - -If the plugin is unable to complete the ControllerGetCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### RPC Interactions - -##### `CreateVolume`, `DeleteVolume`, `ListVolumes` - -It is worth noting that the plugin-generated `volume_id` is a REQUIRED field for the `DeleteVolume` RPC, as opposed to the CO-generated volume `name` that is REQUIRED for the `CreateVolume` RPC: these fields MAY NOT contain the same value. -If a `CreateVolume` operation times out, leaving the CO without an ID with which to reference a volume, and the CO *also* decides that it no longer needs/wants the volume in question then the CO MAY choose one of the following paths: - -1. Replay the `CreateVolume` RPC that timed out; upon success execute `DeleteVolume` using the known volume ID (from the response to `CreateVolume`). -2. Execute the `ListVolumes` RPC to possibly obtain a volume ID that may be used to execute a `DeleteVolume` RPC; upon success execute `DeleteVolume`. -3. The CO takes no further action regarding the timed out RPC, a volume is possibly leaked and the operator/user is expected to clean up. - -It is NOT REQUIRED for a controller plugin to implement the `LIST_VOLUMES` capability if it supports the `CREATE_DELETE_VOLUME` capability: the onus is upon the CO to take into consideration the full range of plugin capabilities before deciding how to proceed in the above scenario. - -### Node Service RPC - -#### `NodeStageVolume` - -A Node Plugin MUST implement this RPC call if it has `STAGE_UNSTAGE_VOLUME` node capability. - -This RPC is called by the CO prior to the volume being consumed by any workloads on the node by `NodePublishVolume`. -The Plugin SHALL assume that this RPC will be executed on the node where the volume will be used. -This RPC SHOULD be called by the CO when a workload that wants to use the specified volume is placed (scheduled) on the specified node for the first time or for the first time since a `NodeUnstageVolume` call for the specified volume was called and returned success on that node. - -If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability and the Node Plugin has `STAGE_UNSTAGE_VOLUME` capability, then the CO MUST guarantee that this RPC is called after `ControllerPublishVolume` is called for the given volume on the given node and returns a success. -The CO MUST guarantee that this RPC is called and returns a success before any `NodePublishVolume` is called for the given volume on the given node. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` is already staged to the `staging_target_path`, and is identical to the specified `volume_capability` the Plugin MUST reply `0 OK`. - -If this RPC failed, or the CO does not know if it failed or not, it MAY choose to call `NodeStageVolume` again, or choose to call `NodeUnstageVolume`. - -```protobuf -message NodeStageVolumeRequest { - // The ID of the volume to publish. This field is REQUIRED. - string volume_id = 1; - - // The CO SHALL set this field to the value returned by - // `ControllerPublishVolume` if the corresponding Controller Plugin - // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be - // left unset if the corresponding Controller Plugin does not have - // this capability. This is an OPTIONAL field. - map publish_info = 2; - - // The path to which the volume will be published. It MUST be an - // absolute path in the root filesystem of the process serving this - // request. The CO SHALL ensure that there is only one - // staging_target_path per volume. - // This is a REQUIRED field. - string staging_target_path = 3; - - // The capability of the volume the CO expects the volume to have. - // This is a REQUIRED field. - VolumeCapability volume_capability = 4; - - // Secrets required by plugin to complete node stage volume request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map node_stage_secrets = 5; - - // Attributes of the volume to publish. This field is OPTIONAL and - // MUST match the attributes of the VolumeInfo identified by - // `volume_id`. - map volume_attributes = 6; -} - -message NodeStageVolumeResponse { -} -``` - -#### NodeStageVolume Errors - -If the plugin is unable to complete the NodeStageVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Volume published but is incompatible | 6 ALREADY_EXISTS | Indicates that a volume corresponding to the specified `volume_id` has already been published at the specified `staging_target_path` but is incompatible with the specified `volume_capability` flag. | Caller MUST fix the arguments before retying. | -| Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | -| Exceeds capabilities | 10 FAILED_PRECONDITION | Indicates that the CO has exceeded the volume's capabilities because the volume does not have MULTI_NODE capability. | Caller MAY choose to call `ValidateVolumeCapabilities` to validate the volume capabilities, or wait for the volume to be unpublished on the node. | - -#### `NodeUnstageVolume` - -A Node Plugin MUST implement this RPC call if it has `STAGE_UNSTAGE_VOLUME` node capability. - -This RPC is a reverse operation of `NodeStageVolume`. -This RPC MUST undo the work by the corresponding `NodeStageVolume`. -This RPC SHALL be called by the CO once for each `staging_target_path` that was successfully setup via `NodeStageVolume`. - -If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability and the Node Plugin has `STAGE_UNSTAGE_VOLUME` capability, the CO MUST guarantee that this RPC is called and returns success before calling `ControllerUnpublishVolume` for the given node and the given volume. -The CO MUST guarantee that this RPC is called after all `NodeUnpublishVolume` have been called and returned success for the given volume on the given node. - -The Plugin SHALL assume that this RPC will be executed on the node where the volume is being used. - -This RPC MAY be called by the CO when the workload using the volume is being moved to a different node, or all the workloads using the volume on a node have finished. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` is not staged to the `staging_target_path`, the Plugin MUST reply `0 OK`. - -If this RPC failed, or the CO does not know if it failed or not, it MAY choose to call `NodeUnstageVolume` again. - -```protobuf -message NodeUnstageVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path at which the volume was published. It MUST be an absolute - // path in the root filesystem of the process serving this request. - // This is a REQUIRED field. - string staging_target_path = 2; -} - -message NodeUnstageVolumeResponse { -} -``` - -#### NodeUnstageVolume Errors - -If the plugin is unable to complete the NodeUnstageVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exists | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | - -#### RPC Interactions and Reference Counting -`NodeStageVolume`, `NodeUnstageVolume`, `NodePublishVolume`, `NodeUnpublishVolume` - -The following interaction semantics ARE REQUIRED if the plugin advertises the `STAGE_UNSTAGE_VOLUME` capability. -`NodeStageVolume` MUST be called and return success once per volume per node before any `NodePublishVolume` MAY be called for the volume. -All `NodeUnpublishVolume` MUST be called and return success for a volume before `NodeUnstageVolume` MAY be called for the volume. - -Note that this requires that all COs MUST support reference counting of volumes so that if `STAGE_UNSTAGE_VOLUME` is advertised by the SP, the CO MUST fufill the above interaction semantics. - -#### `NodePublishVolume` - -This RPC is called by the CO when a workload that wants to use the specified volume is placed (scheduled) on a node. -The Plugin SHALL assume that this RPC will be executed on the node where the volume will be used. - -If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability, the CO MUST guarantee that this RPC is called after `ControllerPublishVolume` is called for the given volume on the given node and returns a success. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` has already been published at the specified `target_path`, and is compatible with the specified `volume_capability` and `readonly` flag, the Plugin MUST reply `0 OK`. - -If this RPC failed, or the CO does not know if it failed or not, it MAY choose to call `NodePublishVolume` again, or choose to call `NodeUnpublishVolume`. - -This RPC MAY be called by the CO multiple times on the same node for the same volume with possibly different `target_path` and/or other arguments if the volume has MULTI_NODE capability (i.e., `access_mode` is either `MULTI_NODE_READER_ONLY`, `MULTI_NODE_SINGLE_WRITER` or `MULTI_NODE_MULTI_WRITER`). -The following table shows what the Plugin SHOULD return when receiving a second `NodePublishVolume` on the same volume on the same node: - -| | T1=T2, P1=P2 | T1=T2, P1!=P2 | T1!=T2, P1=P2 | T1!=T2, P1!=P2 | -|----------------|-----------------|----------------|---------------------|--------------------| -| MULTI_NODE | OK (idempotent) | ALREADY_EXISTS | OK | OK | -| Non MULTI_NODE | OK (idempotent) | ALREADY_EXISTS | FAILED_PRECONDITION | FAILED_PRECONDITION| - -(`Tn`: target path of the n-th `NodePublishVolume`, `Pn`: other arguments of the n-th `NodePublishVolume` except `node_publish_secrets`) - -```protobuf -message NodePublishVolumeRequest { - // The ID of the volume to publish. This field is REQUIRED. - string volume_id = 1; - - // The CO SHALL set this field to the value returned by - // `ControllerPublishVolume` if the corresponding Controller Plugin - // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be - // left unset if the corresponding Controller Plugin does not have - // this capability. This is an OPTIONAL field. - map publish_info = 2; - - // The path to which the device was mounted by `NodeStageVolume`. - // It MUST be an absolute path in the root filesystem of the process - // serving this request. - // It MUST be set if the Node Plugin implements the - // `STAGE_UNSTAGE_VOLUME` node capability. - // This is an OPTIONAL field. - string staging_target_path = 3; - - // The path to which the volume will be published. It MUST be an - // absolute path in the root filesystem of the process serving this - // request. The CO SHALL ensure uniqueness of target_path per volume. - // The CO SHALL ensure that the path exists, and that the process - // serving the request has `read` and `write` permissions to the path. - // This is a REQUIRED field. - string target_path = 4; - - // The capability of the volume the CO expects the volume to have. - // This is a REQUIRED field. - VolumeCapability volume_capability = 5; - - // Whether to publish the volume in readonly mode. This field is - // REQUIRED. - bool readonly = 6; - - // Secrets required by plugin to complete node publish volume request. - // A secret is a string to string map where the key identifies the - // name of the secret (e.g. "username" or "password"), and the value - // contains the secret data (e.g. "bob" or "abc123"). - // Each key MUST consist of alphanumeric characters, '-', '_' or '.'. - // Each value MUST contain a valid string. An SP MAY choose to accept - // binary (non-string) data by using a binary-to-text encoding scheme, - // like base64. - // An SP SHALL advertise the requirements for required secret keys and - // values in documentation. - // CO SHALL permit passing through the required secrets. - // A CO MAY pass the same secrets to all RPCs, therefore the keys for - // all unique secrets that an SP expects must be unique across all CSI - // operations. - // This information is sensitive and MUST be treated as such (not - // logged, etc.) by the CO. - // This field is OPTIONAL. - map node_publish_secrets = 7; - - // Attributes of the volume to publish. This field is OPTIONAL and - // MUST match the attributes of the Volume identified by - // `volume_id`. - map volume_attributes = 8; -} - -message NodePublishVolumeResponse { -} -``` - -##### NodePublishVolume Errors - -If the plugin is unable to complete the NodePublishVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exists | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Volume published but is incompatible | 6 ALREADY_EXISTS | Indicates that a volume corresponding to the specified `volume_id` has already been published at the specified `target_path` but is incompatible with the specified `volume_capability` or `readonly` flag. | Caller MUST fix the arguments before retying. | -| Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | -| Exceeds capabilities | 10 FAILED_PRECONDITION | Indicates that the CO has exceeded the volume's capabilities because the volume does not have MULTI_NODE capability. | Caller MAY choose to call `ValidateVolumeCapabilities` to validate the volume capabilities, or wait for the volume to be unpublished on the node. | -| Stanging target path not set | 10 FAILED_PRECONDITION | Indicates that `STAGE_UNSTAGE_VOLUME` capability is set but no `staging_target_path` was set. | Caller MUST make sure call to `NodeStageVolume` is made and returns success before retrying with valid `staging_target_path`. | - - -#### `NodeUnpublishVolume` - -A Node Plugin MUST implement this RPC call. -This RPC is a reverse operation of `NodePublishVolume`. -This RPC MUST undo the work by the corresponding `NodePublishVolume`. -This RPC SHALL be called by the CO at least once for each `target_path` that was successfully setup via `NodePublishVolume`. -If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability, the CO SHOULD issue all `NodeUnpublishVolume` (as specified above) before calling `ControllerUnpublishVolume` for the given node and the given volume. -The Plugin SHALL assume that this RPC will be executed on the node where the volume is being used. - -This RPC is typically called by the CO when the workload using the volume is being moved to a different node, or all the workload using the volume on a node has finished. - -This operation MUST be idempotent. -If this RPC failed, or the CO does not know if it failed or not, it can choose to call `NodeUnpublishVolume` again. - -```protobuf -message NodeUnpublishVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path at which the volume was published. It MUST be an absolute - // path in the root filesystem of the process serving this request. - // This is a REQUIRED field. - string target_path = 2; -} - -message NodeUnpublishVolumeResponse { -} -``` - -##### NodeUnpublishVolume Errors - -If the plugin is unable to complete the NodeUnpublishVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exists | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Operation pending for volume | 10 ABORTED | Indicates that there is a already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | - - -#### `NodeGetId` - -A Node Plugin MUST implement this RPC call if the plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability. -The Plugin SHALL assume that this RPC will be executed on the node where the volume will be used. -The CO SHOULD call this RPC for the node at which it wants to place the workload. -The result of this call will be used by CO in `ControllerPublishVolume`. - -```protobuf -message NodeGetIdRequest { -} - -message NodeGetIdResponse { - // The ID of the node as understood by the SP which SHALL be used by - // CO in subsequent `ControllerPublishVolume`. - // This is a REQUIRED field. - string node_id = 1; -} -``` - -##### NodeGetId Errors - -If the plugin is unable to complete the NodeGetId call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -Condition | gRPC Code | Description | Recovery Behavior -| --- | --- | --- | --- | -| Call not implemented | 12 UNIMPLEMENTED | NodeGetId call is not implemented by the plugin or disabled in the Plugin's current mode of operation. | Caller MUST NOT retry. Caller MAY call `ControllerGetCapabilities` or `NodeGetCapabilities` to discover Plugin capabilities. | - -#### `NodeGetCapabilities` - -A Node Plugin MUST implement this RPC call. -This RPC allows the CO to check the supported capabilities of node service provided by the Plugin. - -```protobuf -message NodeGetCapabilitiesRequest { -} - -message NodeGetCapabilitiesResponse { - // All the capabilities that the node service supports. This field - // is OPTIONAL. - repeated NodeServiceCapability capabilities = 1; -} - -// Specifies a capability of the node service. -message NodeServiceCapability { - message RPC { - enum Type { - UNKNOWN = 0; - STAGE_UNSTAGE_VOLUME = 1; - } - - Type type = 1; - } - - oneof type { - // RPC that the controller supports. - RPC rpc = 1; - } -} -``` - -##### NodeGetCapabilities Errors - -If the plugin is unable to complete the NodeGetCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -## Protocol - -### Connectivity - -* A CO SHALL communicate with a Plugin using gRPC to access the `Identity`, and (optionally) the `Controller` and `Node` services. - * proto3 SHOULD be used with gRPC, as per the [official recommendations](http://www.grpc.io/docs/guides/#protocol-buffer-versions). - * All Plugins SHALL implement the REQUIRED Identity service RPCs. - Support for OPTIONAL RPCs is reported by the `ControllerGetCapabilities` and `NodeGetCapabilities` RPC calls. -* The CO SHALL provide the listen-address for the Plugin by way of the `CSI_ENDPOINT` environment variable. - Plugin components SHALL create, bind, and listen for RPCs on the specified listen address. - * Only UNIX Domain Sockets may be used as endpoints. - This will likely change in a future version of this specification to support non-UNIX platforms. -* All supported RPC services MUST be available at the listen address of the Plugin. - -### Security - -* The CO operator and Plugin Supervisor SHOULD take steps to ensure that any and all communication between the CO and Plugin Service are secured according to best practices. -* Communication between a CO and a Plugin SHALL be transported over UNIX Domain Sockets. - * gRPC is compatible with UNIX Domain Sockets; it is the responsibility of the CO operator and Plugin Supervisor to properly secure access to the Domain Socket using OS filesystem ACLs and/or other OS-specific security context tooling. - * SP’s supplying stand-alone Plugin controller appliances, or other remote components that are incompatible with UNIX Domain Sockets must provide a software component that proxies communication between a UNIX Domain Socket and the remote component(s). - Proxy components transporting communication over IP networks SHALL be responsible for securing communications over such networks. -* Both the CO and Plugin SHOULD avoid accidental leakage of sensitive information (such as redacting such information from log files). - -### Debugging - -* Debugging and tracing are supported by external, CSI-independent additions and extensions to gRPC APIs, such as [OpenTracing](https://github.com/grpc-ecosystem/grpc-opentracing). - -## Configuration and Operation - -### General Configuration - -* The `CSI_ENDPOINT` environment variable SHALL be supplied to the Plugin by the Plugin Supervisor. -* An operator SHALL configure the CO to connect to the Plugin via the listen address identified by `CSI_ENDPOINT` variable. -* With exception to sensitive data, Plugin configuration SHOULD be specified by environment variables, whenever possible, instead of by command line flags or bind-mounted/injected files. - - -#### Plugin Bootstrap Example - -* Supervisor -> Plugin: `CSI_ENDPOINT=unix:///path/to/unix/domain/socket.sock`. -* Operator -> CO: use plugin at endpoint `unix:///path/to/unix/domain/socket.sock`. -* CO: monitor `/path/to/unix/domain/socket.sock`. -* Plugin: read `CSI_ENDPOINT`, create UNIX socket at specified path, bind and listen. -* CO: observe that socket now exists, establish connection. -* CO: invoke `GetPluginCapabilities`. - -#### Filesystem - -* Plugins SHALL NOT specify requirements that include or otherwise reference directories and/or files on the root filesystem of the CO. -* Plugins SHALL NOT create additional files or directories adjacent to the UNIX socket specified by `CSI_ENDPOINT`; violations of this requirement constitute "abuse". - * The Plugin Supervisor is the ultimate authority of the directory in which the UNIX socket endpoint is created and MAY enforce policies to prevent and/or mitigate abuse of the directory by Plugins. - -### Supervised Lifecycle Management - -* For Plugins packaged in software form: - * Plugin Packages SHOULD use a well-documented container image format (e.g., Docker, OCI). - * The chosen package image format MAY expose configurable Plugin properties as environment variables, unless otherwise indicated in the section below. - Variables so exposed SHOULD be assigned default values in the image manifest. - * A Plugin Supervisor MAY programmatically evaluate or otherwise scan a Plugin Package’s image manifest in order to discover configurable environment variables. - * A Plugin SHALL NOT assume that an operator or Plugin Supervisor will scan an image manifest for environment variables. - -#### Environment Variables - -* Variables defined by this specification SHALL be identifiable by their `CSI_` name prefix. -* Configuration properties not defined by the CSI specification SHALL NOT use the same `CSI_` name prefix; this prefix is reserved for common configuration properties defined by the CSI specification. -* The Plugin Supervisor SHOULD supply all recommended CSI environment variables to a Plugin. -* The Plugin Supervisor SHALL supply all required CSI environment variables to a Plugin. - -##### `CSI_ENDPOINT` - -Network endpoint at which a Plugin SHALL host CSI RPC services. The general format is: - - {scheme}://{authority}{endpoint} - -The following address types SHALL be supported by Plugins: - - unix:///path/to/unix/socket.sock - -Note: All UNIX endpoints SHALL end with `.sock`. See [gRPC Name Resolution](https://github.com/grpc/grpc/blob/master/doc/naming.md). - -This variable is REQUIRED. - -#### Operational Recommendations - -The Plugin Supervisor expects that a Plugin SHALL act as a long-running service vs. an on-demand, CLI-driven process. - -Supervised plugins MAY be isolated and/or resource-bounded. - -##### Logging - -* Plugins SHOULD generate log messages to ONLY standard output and/or standard error. - * In this case the Plugin Supervisor SHALL assume responsibility for all log lifecycle management. -* Plugin implementations that deviate from the above recommendation SHALL clearly and unambiguously document the following: - * Logging configuration flags and/or variables, including working sample configurations. - * Default log destination(s) (where do the logs go if no configuration is specified?) - * Log lifecycle management ownership and related guidance (size limits, rate limits, rolling, archiving, expunging, etc.) applicable to the logging mechanism embedded within the Plugin. -* Plugins SHOULD NOT write potentially sensitive data to logs (e.g. secrets). - -##### Available Services - -* Plugin Packages MAY support all or a subset of CSI services; service combinations MAY be configurable at runtime by the Plugin Supervisor. - * A plugin must know the "mode" in which it is operating (e.g. node, controller, or both). - * This specification does not dictate the mechanism by which mode of operation must be discovered, and instead places that burden upon the SP. -* Misconfigured plugin software SHOULD fail-fast with an OS-appropriate error code. - -##### Linux Capabilities - -* Plugin Supervisor SHALL guarantee that plugins will have `CAP_SYS_ADMIN` capability on Linux when running on Nodes. -* Plugins SHOULD clearly document any additionally required capabilities and/or security context. - -##### Namespaces - -* A Plugin SHOULD NOT assume that it is in the same [Linux namespaces](https://en.wikipedia.org/wiki/Linux_namespaces) as the Plugin Supervisor. - The CO MUST clearly document the [mount propagation](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt) requirements for Node Plugins and the Plugin Supervisor SHALL satisfy the CO’s requirements. - -##### Cgroup Isolation - -* A Plugin MAY be constrained by cgroups. -* An operator or Plugin Supervisor MAY configure the devices cgroup subsystem to ensure that a Plugin may access requisite devices. -* A Plugin Supervisor MAY define resource limits for a Plugin. - -##### Resource Requirements - -* SPs SHOULD unambiguously document all of a Plugin’s resource requirements. diff --git a/vendor/github.com/golang/mock/.gitignore b/vendor/github.com/golang/mock/.gitignore deleted file mode 100644 index 4eb2f795..00000000 --- a/vendor/github.com/golang/mock/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# Object files and binaries from go. -*.[568] - -# Library files. -*.a - -# Any file prefixed by an underscore. -*/_* - -# Vim temporary files. -.*.swp - -# The mockgen binary. -mockgen/mockgen - -# A binary produced by gotest. -#gomock/[568]\.out diff --git a/vendor/github.com/golang/mock/.travis.yml b/vendor/github.com/golang/mock/.travis.yml deleted file mode 100644 index 543ce129..00000000 --- a/vendor/github.com/golang/mock/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: go - -go: - # we intend to support only the latest version and perhaps the previous one - - 1.7 - - 1.8 - -script: - - go build ./... - - go install github.com/golang/mock/mockgen - - ./ci/check_go_fmt.sh - - ./ci/check_go_generate.sh - - go test -v ./... diff --git a/vendor/github.com/golang/mock/README.md b/vendor/github.com/golang/mock/README.md deleted file mode 100644 index daf4f975..00000000 --- a/vendor/github.com/golang/mock/README.md +++ /dev/null @@ -1,86 +0,0 @@ -gomock [![Build Status](https://travis-ci.org/golang/mock.svg?branch=master)](https://travis-ci.org/golang/mock) -====== - -GoMock is a mocking framework for the [Go programming language][golang]. It -integrates well with Go's built-in `testing` package, but can be used in other -contexts too. - - -Installation ------------- - -Once you have [installed Go][golang-install], run these commands -to install the `gomock` package and the `mockgen` tool: - - go get github.com/golang/mock/gomock - go get github.com/golang/mock/mockgen - - -Documentation -------------- - -After installing, you can use `go doc` to get documentation: - - go doc github.com/golang/mock/gomock - -Alternatively, there is an online reference for the package hosted on GoPkgDoc -[here][gomock-ref]. - - -Running mockgen ---------------- - -`mockgen` has two modes of operation: source and reflect. -Source mode generates mock interfaces from a source file. -It is enabled by using the -source flag. Other flags that -may be useful in this mode are -imports and -aux_files. - -Example: - - mockgen -source=foo.go [other options] - -Reflect mode generates mock interfaces by building a program -that uses reflection to understand interfaces. It is enabled -by passing two non-flag arguments: an import path, and a -comma-separated list of symbols. - -Example: - - mockgen database/sql/driver Conn,Driver - -The `mockgen` command is used to generate source code for a mock -class given a Go source file containing interfaces to be mocked. -It supports the following flags: - - * `-source`: A file containing interfaces to be mocked. - - * `-destination`: A file to which to write the resulting source code. If you - don't set this, the code is printed to standard output. - - * `-package`: The package to use for the resulting mock class - source code. If you don't set this, the package name is `mock_` concatenated - with the package of the input file. - - * `-imports`: A list of explicit imports that should be used in the resulting - source code, specified as a comma-separated list of elements of the form - `foo=bar/baz`, where `bar/baz` is the package being imported and `foo` is - the identifier to use for the package in the generated source code. - - * `-aux_files`: A list of additional files that should be consulted to - resolve e.g. embedded interfaces defined in a different file. This is - specified as a comma-separated list of elements of the form - `foo=bar/baz.go`, where `bar/baz.go` is the source file and `foo` is the - package name of that file used by the -source file. - -* `-build_flags`: (reflect mode only) Flags passed verbatim to `go build`. - -For an example of the use of `mockgen`, see the `sample/` directory. In simple -cases, you will need only the `-source` flag. - - -TODO: Brief overview of how to create mock objects and set up expectations, and -an example. - -[golang]: http://golang.org/ -[golang-install]: http://golang.org/doc/install.html#releases -[gomock-ref]: http://godoc.org/github.com/golang/mock/gomock diff --git a/vendor/github.com/golang/mock/ci/check_go_fmt.sh b/vendor/github.com/golang/mock/ci/check_go_fmt.sh deleted file mode 100755 index ae4028ac..00000000 --- a/vendor/github.com/golang/mock/ci/check_go_fmt.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# This script is used by the CI to check if the code is gofmt formatted. - -set -euo pipefail - -GOFMT_DIFF=$(IFS=$'\n'; gofmt -d $( find . -type f -name '*.go' ) ) -if [[ -n "${GOFMT_DIFF}" ]]; then - echo "${GOFMT_DIFF}" - echo - echo "The go source files aren't gofmt formatted." - exit 1 -fi diff --git a/vendor/github.com/golang/mock/ci/check_go_generate.sh b/vendor/github.com/golang/mock/ci/check_go_generate.sh deleted file mode 100755 index a0212e28..00000000 --- a/vendor/github.com/golang/mock/ci/check_go_generate.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -# This script is used by the CI to check if 'go generate ./...' is up to date. -# -# Note: If the generated files aren't up to date then this script updates -# them despite printing an error message so running it the second time -# might not print any errors. This isn't very useful locally during development -# but it works well with the CI that downloads a fresh version of the repo -# each time before executing this script. - -set -euo pipefail - -TEMP_DIR=$( mktemp -d ) -function cleanup() { - rm -rf "${TEMP_DIR}" -} -trap cleanup EXIT - -cp -r . "${TEMP_DIR}/" -go generate ./... -if ! diff -r . "${TEMP_DIR}"; then - echo - echo "The generated files aren't up to date." - echo "Update them with the 'go generate ./...' command." - exit 1 -fi diff --git a/vendor/github.com/golang/mock/gomock/call_test.go b/vendor/github.com/golang/mock/gomock/call_test.go deleted file mode 100644 index 3ae7263c..00000000 --- a/vendor/github.com/golang/mock/gomock/call_test.go +++ /dev/null @@ -1,47 +0,0 @@ -package gomock - -import "testing" - -type mockTestReporter struct { - errorCalls int - fatalCalls int -} - -func (o *mockTestReporter) Errorf(format string, args ...interface{}) { - o.errorCalls++ -} - -func (o *mockTestReporter) Fatalf(format string, args ...interface{}) { - o.fatalCalls++ -} - -func TestCall_After(t *testing.T) { - t.Run("SelfPrereqCallsFatalf", func(t *testing.T) { - tr1 := &mockTestReporter{} - - c := &Call{t: tr1} - c.After(c) - - if tr1.fatalCalls != 1 { - t.Errorf("number of fatal calls == %v, want 1", tr1.fatalCalls) - } - }) - - t.Run("LoopInCallOrderCallsFatalf", func(t *testing.T) { - tr1 := &mockTestReporter{} - tr2 := &mockTestReporter{} - - c1 := &Call{t: tr1} - c2 := &Call{t: tr2} - c1.After(c2) - c2.After(c1) - - if tr1.errorCalls != 0 || tr1.fatalCalls != 0 { - t.Error("unexpected errors") - } - - if tr2.fatalCalls != 1 { - t.Errorf("number of fatal calls == %v, want 1", tr2.fatalCalls) - } - }) -} diff --git a/vendor/github.com/golang/mock/gomock/controller_test.go b/vendor/github.com/golang/mock/gomock/controller_test.go deleted file mode 100644 index 57f79572..00000000 --- a/vendor/github.com/golang/mock/gomock/controller_test.go +++ /dev/null @@ -1,475 +0,0 @@ -// Copyright 2011 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package gomock_test - -import ( - "fmt" - "reflect" - "testing" - - "github.com/golang/mock/gomock" -) - -type ErrorReporter struct { - t *testing.T - log []string - failed bool - fatalToken struct{} -} - -func NewErrorReporter(t *testing.T) *ErrorReporter { - return &ErrorReporter{t: t} -} - -func (e *ErrorReporter) reportLog() { - for _, entry := range e.log { - e.t.Log(entry) - } -} - -func (e *ErrorReporter) assertPass(msg string) { - if e.failed { - e.t.Errorf("Expected pass, but got failure(s): %s", msg) - e.reportLog() - } -} - -func (e *ErrorReporter) assertFail(msg string) { - if !e.failed { - e.t.Errorf("Expected failure, but got pass: %s", msg) - } -} - -// Use to check that code triggers a fatal test failure. -func (e *ErrorReporter) assertFatal(fn func()) { - defer func() { - err := recover() - if err == nil { - var actual string - if e.failed { - actual = "non-fatal failure" - } else { - actual = "pass" - } - e.t.Error("Expected fatal failure, but got a", actual) - } else if token, ok := err.(*struct{}); ok && token == &e.fatalToken { - // This is okay - the panic is from Fatalf(). - return - } else { - // Some other panic. - panic(err) - } - }() - - fn() -} - -// recoverUnexpectedFatal can be used as a deferred call in test cases to -// recover from and display a call to ErrorReporter.Fatalf(). -func (e *ErrorReporter) recoverUnexpectedFatal() { - err := recover() - if err == nil { - // No panic. - } else if token, ok := err.(*struct{}); ok && token == &e.fatalToken { - // Unexpected fatal error happened. - e.t.Error("Got unexpected fatal error(s). All errors up to this point:") - e.reportLog() - return - } else { - // Some other panic. - panic(err) - } -} - -func (e *ErrorReporter) Logf(format string, args ...interface{}) { - e.log = append(e.log, fmt.Sprintf(format, args...)) -} - -func (e *ErrorReporter) Errorf(format string, args ...interface{}) { - e.Logf(format, args...) - e.failed = true -} - -func (e *ErrorReporter) Fatalf(format string, args ...interface{}) { - e.Logf(format, args...) - e.failed = true - panic(&e.fatalToken) -} - -// A type purely for use as a receiver in testing the Controller. -type Subject struct{} - -func (s *Subject) FooMethod(arg string) int { - return 0 -} - -func (s *Subject) BarMethod(arg string) int { - return 0 -} - -func assertEqual(t *testing.T, expected interface{}, actual interface{}) { - if !reflect.DeepEqual(expected, actual) { - t.Errorf("Expected %+v, but got %+v", expected, actual) - } -} - -func createFixtures(t *testing.T) (reporter *ErrorReporter, ctrl *gomock.Controller) { - // reporter acts as a testing.T-like object that we pass to the - // Controller. We use it to test that the mock considered tests - // successful or failed. - reporter = NewErrorReporter(t) - ctrl = gomock.NewController(reporter) - return -} - -func TestNoCalls(t *testing.T) { - reporter, ctrl := createFixtures(t) - ctrl.Finish() - reporter.assertPass("No calls expected or made.") -} - -func TestExpectedMethodCall(t *testing.T) { - reporter, ctrl := createFixtures(t) - subject := new(Subject) - - ctrl.RecordCall(subject, "FooMethod", "argument") - ctrl.Call(subject, "FooMethod", "argument") - ctrl.Finish() - - reporter.assertPass("Expected method call made.") -} - -func TestUnexpectedMethodCall(t *testing.T) { - reporter, ctrl := createFixtures(t) - subject := new(Subject) - - reporter.assertFatal(func() { - ctrl.Call(subject, "FooMethod", "argument") - }) - - ctrl.Finish() -} - -func TestRepeatedCall(t *testing.T) { - reporter, ctrl := createFixtures(t) - subject := new(Subject) - - ctrl.RecordCall(subject, "FooMethod", "argument").Times(3) - ctrl.Call(subject, "FooMethod", "argument") - ctrl.Call(subject, "FooMethod", "argument") - ctrl.Call(subject, "FooMethod", "argument") - reporter.assertPass("After expected repeated method calls.") - reporter.assertFatal(func() { - ctrl.Call(subject, "FooMethod", "argument") - }) - ctrl.Finish() - reporter.assertFail("After calling one too many times.") -} - -func TestUnexpectedArgCount(t *testing.T) { - reporter, ctrl := createFixtures(t) - defer reporter.recoverUnexpectedFatal() - subject := new(Subject) - - ctrl.RecordCall(subject, "FooMethod", "argument") - reporter.assertFatal(func() { - // This call is made with the wrong number of arguments... - ctrl.Call(subject, "FooMethod", "argument", "extra_argument") - }) - reporter.assertFatal(func() { - // ... so is this. - ctrl.Call(subject, "FooMethod") - }) - reporter.assertFatal(func() { - // The expected call wasn't made. - ctrl.Finish() - }) -} - -func TestAnyTimes(t *testing.T) { - reporter, ctrl := createFixtures(t) - subject := new(Subject) - - ctrl.RecordCall(subject, "FooMethod", "argument").AnyTimes() - for i := 0; i < 100; i++ { - ctrl.Call(subject, "FooMethod", "argument") - } - reporter.assertPass("After 100 method calls.") - ctrl.Finish() -} - -func TestMinTimes1(t *testing.T) { - // It fails if there are no calls - reporter, ctrl := createFixtures(t) - subject := new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MinTimes(1) - reporter.assertFatal(func() { - ctrl.Finish() - }) - - // It succeeds if there is one call - reporter, ctrl = createFixtures(t) - subject = new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MinTimes(1) - ctrl.Call(subject, "FooMethod", "argument") - ctrl.Finish() - - // It succeeds if there are many calls - reporter, ctrl = createFixtures(t) - subject = new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MinTimes(1) - for i := 0; i < 100; i++ { - ctrl.Call(subject, "FooMethod", "argument") - } - ctrl.Finish() -} - -func TestMaxTimes1(t *testing.T) { - // It succeeds if there are no calls - _, ctrl := createFixtures(t) - subject := new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MaxTimes(1) - ctrl.Finish() - - // It succeeds if there is one call - _, ctrl = createFixtures(t) - subject = new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MaxTimes(1) - ctrl.Call(subject, "FooMethod", "argument") - ctrl.Finish() - - //It fails if there are more - reporter, ctrl := createFixtures(t) - subject = new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MaxTimes(1) - ctrl.Call(subject, "FooMethod", "argument") - reporter.assertFatal(func() { - ctrl.Call(subject, "FooMethod", "argument") - }) - ctrl.Finish() -} - -func TestMinMaxTimes(t *testing.T) { - // It fails if there are less calls than specified - reporter, ctrl := createFixtures(t) - subject := new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MinTimes(2).MaxTimes(2) - ctrl.Call(subject, "FooMethod", "argument") - reporter.assertFatal(func() { - ctrl.Finish() - }) - - // It fails if there are more calls than specified - reporter, ctrl = createFixtures(t) - subject = new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MinTimes(2).MaxTimes(2) - ctrl.Call(subject, "FooMethod", "argument") - ctrl.Call(subject, "FooMethod", "argument") - reporter.assertFatal(func() { - ctrl.Call(subject, "FooMethod", "argument") - }) - - // It succeeds if there is just the right number of calls - reporter, ctrl = createFixtures(t) - subject = new(Subject) - ctrl.RecordCall(subject, "FooMethod", "argument").MaxTimes(2).MinTimes(2) - ctrl.Call(subject, "FooMethod", "argument") - ctrl.Call(subject, "FooMethod", "argument") - ctrl.Finish() -} - -func TestDo(t *testing.T) { - _, ctrl := createFixtures(t) - subject := new(Subject) - - doCalled := false - var argument string - ctrl.RecordCall(subject, "FooMethod", "argument").Do( - func(arg string) { - doCalled = true - argument = arg - }) - if doCalled { - t.Error("Do() callback called too early.") - } - - ctrl.Call(subject, "FooMethod", "argument") - - if !doCalled { - t.Error("Do() callback not called.") - } - if "argument" != argument { - t.Error("Do callback received wrong argument.") - } - - ctrl.Finish() -} - -func TestReturn(t *testing.T) { - _, ctrl := createFixtures(t) - subject := new(Subject) - - // Unspecified return should produce "zero" result. - ctrl.RecordCall(subject, "FooMethod", "zero") - ctrl.RecordCall(subject, "FooMethod", "five").Return(5) - - assertEqual( - t, - []interface{}{0}, - ctrl.Call(subject, "FooMethod", "zero")) - - assertEqual( - t, - []interface{}{5}, - ctrl.Call(subject, "FooMethod", "five")) - ctrl.Finish() -} - -func TestUnorderedCalls(t *testing.T) { - reporter, ctrl := createFixtures(t) - defer reporter.recoverUnexpectedFatal() - subjectTwo := new(Subject) - subjectOne := new(Subject) - - ctrl.RecordCall(subjectOne, "FooMethod", "1") - ctrl.RecordCall(subjectOne, "BarMethod", "2") - ctrl.RecordCall(subjectTwo, "FooMethod", "3") - ctrl.RecordCall(subjectTwo, "BarMethod", "4") - - // Make the calls in a different order, which should be fine. - ctrl.Call(subjectOne, "BarMethod", "2") - ctrl.Call(subjectTwo, "FooMethod", "3") - ctrl.Call(subjectTwo, "BarMethod", "4") - ctrl.Call(subjectOne, "FooMethod", "1") - - reporter.assertPass("After making all calls in different order") - - ctrl.Finish() - - reporter.assertPass("After finish") -} - -func commonTestOrderedCalls(t *testing.T) (reporter *ErrorReporter, ctrl *gomock.Controller, subjectOne, subjectTwo *Subject) { - reporter, ctrl = createFixtures(t) - - subjectOne = new(Subject) - subjectTwo = new(Subject) - - gomock.InOrder( - ctrl.RecordCall(subjectOne, "FooMethod", "1").AnyTimes(), - ctrl.RecordCall(subjectTwo, "FooMethod", "2"), - ctrl.RecordCall(subjectTwo, "BarMethod", "3"), - ) - - return -} - -func TestOrderedCallsCorrect(t *testing.T) { - reporter, ctrl, subjectOne, subjectTwo := commonTestOrderedCalls(t) - - ctrl.Call(subjectOne, "FooMethod", "1") - ctrl.Call(subjectTwo, "FooMethod", "2") - ctrl.Call(subjectTwo, "BarMethod", "3") - - ctrl.Finish() - - reporter.assertPass("After finish") -} - -func TestOrderedCallsInCorrect(t *testing.T) { - reporter, ctrl, subjectOne, subjectTwo := commonTestOrderedCalls(t) - - ctrl.Call(subjectOne, "FooMethod", "1") - reporter.assertFatal(func() { - ctrl.Call(subjectTwo, "BarMethod", "3") - }) -} - -// Test that calls that are prerequites to other calls but have maxCalls > -// minCalls are removed from the expected call set. -func TestOrderedCallsWithPreReqMaxUnbounded(t *testing.T) { - reporter, ctrl, subjectOne, subjectTwo := commonTestOrderedCalls(t) - - // Initially we should be able to call FooMethod("1") as many times as we - // want. - ctrl.Call(subjectOne, "FooMethod", "1") - ctrl.Call(subjectOne, "FooMethod", "1") - - // But calling something that has it as a prerequite should remove it from - // the expected call set. This allows tests to ensure that FooMethod("1") is - // *not* called after FooMethod("2"). - ctrl.Call(subjectTwo, "FooMethod", "2") - - // Therefore this call should fail: - reporter.assertFatal(func() { - ctrl.Call(subjectOne, "FooMethod", "1") - }) -} - -func TestCallAfterLoopPanic(t *testing.T) { - _, ctrl := createFixtures(t) - - subject := new(Subject) - - firstCall := ctrl.RecordCall(subject, "FooMethod", "1") - secondCall := ctrl.RecordCall(subject, "FooMethod", "2") - thirdCall := ctrl.RecordCall(subject, "FooMethod", "3") - - gomock.InOrder(firstCall, secondCall, thirdCall) - - defer func() { - err := recover() - if err == nil { - t.Error("Call.After creation of dependency loop did not panic.") - } - }() - - // This should panic due to dependency loop. - firstCall.After(thirdCall) -} - -func TestPanicOverridesExpectationChecks(t *testing.T) { - ctrl := gomock.NewController(t) - reporter := NewErrorReporter(t) - - reporter.assertFatal(func() { - ctrl.RecordCall(new(Subject), "FooMethod", "1") - defer ctrl.Finish() - reporter.Fatalf("Intentional panic") - }) -} - -func TestSetArgWithBadType(t *testing.T) { - rep, ctrl := createFixtures(t) - defer ctrl.Finish() - - s := new(Subject) - // This should catch a type error: - rep.assertFatal(func() { - ctrl.RecordCall(s, "FooMethod", "1").SetArg(0, "blah") - }) - ctrl.Call(s, "FooMethod", "1") -} - -func TestTimes0(t *testing.T) { - rep, ctrl := createFixtures(t) - defer ctrl.Finish() - - s := new(Subject) - ctrl.RecordCall(s, "FooMethod", "arg").Times(0) - rep.assertFatal(func() { - ctrl.Call(s, "FooMethod", "arg") - }) -} diff --git a/vendor/github.com/golang/mock/gomock/matchers_test.go b/vendor/github.com/golang/mock/gomock/matchers_test.go deleted file mode 100644 index 29b97fb9..00000000 --- a/vendor/github.com/golang/mock/gomock/matchers_test.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2010 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package gomock_test - -import ( - "errors" - "testing" - - "github.com/golang/mock/gomock" - mock_matcher "github.com/golang/mock/gomock/mock_matcher" -) - -func TestMatchers(t *testing.T) { - type e interface{} - type testCase struct { - matcher gomock.Matcher - yes, no []e - } - tests := []testCase{ - testCase{gomock.Any(), []e{3, nil, "foo"}, nil}, - testCase{gomock.Eq(4), []e{4}, []e{3, "blah", nil, int64(4)}}, - testCase{gomock.Nil(), - []e{nil, (error)(nil), (chan bool)(nil), (*int)(nil)}, - []e{"", 0, make(chan bool), errors.New("err"), new(int)}}, - testCase{gomock.Not(gomock.Eq(4)), []e{3, "blah", nil, int64(4)}, []e{4}}, - } - for i, test := range tests { - for _, x := range test.yes { - if !test.matcher.Matches(x) { - t.Errorf(`test %d: "%v %s" should be true.`, i, x, test.matcher) - } - } - for _, x := range test.no { - if test.matcher.Matches(x) { - t.Errorf(`test %d: "%v %s" should be false.`, i, x, test.matcher) - } - } - } -} - -// A more thorough test of notMatcher -func TestNotMatcher(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockMatcher := mock_matcher.NewMockMatcher(ctrl) - notMatcher := gomock.Not(mockMatcher) - - mockMatcher.EXPECT().Matches(4).Return(true) - if match := notMatcher.Matches(4); match { - t.Errorf("notMatcher should not match 4") - } - - mockMatcher.EXPECT().Matches(5).Return(false) - if match := notMatcher.Matches(5); !match { - t.Errorf("notMatcher should match 5") - } -} diff --git a/vendor/github.com/golang/mock/gomock/mock_matcher/mock_matcher.go b/vendor/github.com/golang/mock/gomock/mock_matcher/mock_matcher.go deleted file mode 100644 index d0bf885f..00000000 --- a/vendor/github.com/golang/mock/gomock/mock_matcher/mock_matcher.go +++ /dev/null @@ -1,56 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: github.com/golang/mock/gomock (interfaces: Matcher) - -package mock_gomock - -import ( - gomock "github.com/golang/mock/gomock" - reflect "reflect" -) - -// MockMatcher is a mock of Matcher interface -type MockMatcher struct { - ctrl *gomock.Controller - recorder *MockMatcherMockRecorder -} - -// MockMatcherMockRecorder is the mock recorder for MockMatcher -type MockMatcherMockRecorder struct { - mock *MockMatcher -} - -// NewMockMatcher creates a new mock instance -func NewMockMatcher(ctrl *gomock.Controller) *MockMatcher { - mock := &MockMatcher{ctrl: ctrl} - mock.recorder = &MockMatcherMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (_m *MockMatcher) EXPECT() *MockMatcherMockRecorder { - return _m.recorder -} - -// Matches mocks base method -func (_m *MockMatcher) Matches(_param0 interface{}) bool { - ret := _m.ctrl.Call(_m, "Matches", _param0) - ret0, _ := ret[0].(bool) - return ret0 -} - -// Matches indicates an expected call of Matches -func (_mr *MockMatcherMockRecorder) Matches(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Matches", reflect.TypeOf((*MockMatcher)(nil).Matches), arg0) -} - -// String mocks base method -func (_m *MockMatcher) String() string { - ret := _m.ctrl.Call(_m, "String") - ret0, _ := ret[0].(string) - return ret0 -} - -// String indicates an expected call of String -func (_mr *MockMatcherMockRecorder) String() *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "String", reflect.TypeOf((*MockMatcher)(nil).String)) -} diff --git a/vendor/github.com/golang/mock/mockgen/mockgen.go b/vendor/github.com/golang/mock/mockgen/mockgen.go deleted file mode 100644 index 3b08c141..00000000 --- a/vendor/github.com/golang/mock/mockgen/mockgen.go +++ /dev/null @@ -1,442 +0,0 @@ -// Copyright 2010 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// MockGen generates mock implementations of Go interfaces. -package main - -// TODO: This does not support recursive embedded interfaces. -// TODO: This does not support embedding package-local interfaces in a separate file. - -import ( - "bytes" - "flag" - "fmt" - "go/format" - "go/token" - "io" - "log" - "os" - "path" - "sort" - "strconv" - "strings" - "unicode" - - "github.com/golang/mock/mockgen/model" -) - -const ( - gomockImportPath = "github.com/golang/mock/gomock" -) - -var ( - source = flag.String("source", "", "(source mode) Input Go source file; enables source mode.") - destination = flag.String("destination", "", "Output file; defaults to stdout.") - packageOut = flag.String("package", "", "Package of the generated code; defaults to the package of the input with a 'mock_' prefix.") - selfPackage = flag.String("self_package", "", "If set, the package this mock will be part of.") - - debugParser = flag.Bool("debug_parser", false, "Print out parser results only.") -) - -func main() { - flag.Usage = usage - flag.Parse() - - var pkg *model.Package - var err error - if *source != "" { - pkg, err = ParseFile(*source) - } else { - if flag.NArg() != 2 { - usage() - log.Fatal("Expected exactly two arguments") - } - pkg, err = Reflect(flag.Arg(0), strings.Split(flag.Arg(1), ",")) - } - if err != nil { - log.Fatalf("Loading input failed: %v", err) - } - - if *debugParser { - pkg.Print(os.Stdout) - return - } - - dst := os.Stdout - if len(*destination) > 0 { - f, err := os.Create(*destination) - if err != nil { - log.Fatalf("Failed opening destination file: %v", err) - } - defer f.Close() - dst = f - } - - packageName := *packageOut - if packageName == "" { - // pkg.Name in reflect mode is the base name of the import path, - // which might have characters that are illegal to have in package names. - packageName = "mock_" + sanitize(pkg.Name) - } - - g := new(generator) - if *source != "" { - g.filename = *source - } else { - g.srcPackage = flag.Arg(0) - g.srcInterfaces = flag.Arg(1) - } - if err := g.Generate(pkg, packageName); err != nil { - log.Fatalf("Failed generating mock: %v", err) - } - if _, err := dst.Write(g.Output()); err != nil { - log.Fatalf("Failed writing to destination: %v", err) - } -} - -func usage() { - io.WriteString(os.Stderr, usageText) - flag.PrintDefaults() -} - -const usageText = `mockgen has two modes of operation: source and reflect. - -Source mode generates mock interfaces from a source file. -It is enabled by using the -source flag. Other flags that -may be useful in this mode are -imports and -aux_files. -Example: - mockgen -source=foo.go [other options] - -Reflect mode generates mock interfaces by building a program -that uses reflection to understand interfaces. It is enabled -by passing two non-flag arguments: an import path, and a -comma-separated list of symbols. -Example: - mockgen database/sql/driver Conn,Driver - -` - -type generator struct { - buf bytes.Buffer - indent string - - filename string // may be empty - srcPackage, srcInterfaces string // may be empty - - packageMap map[string]string // map from import path to package name -} - -func (g *generator) p(format string, args ...interface{}) { - fmt.Fprintf(&g.buf, g.indent+format+"\n", args...) -} - -func (g *generator) in() { - g.indent += "\t" -} - -func (g *generator) out() { - if len(g.indent) > 0 { - g.indent = g.indent[0 : len(g.indent)-1] - } -} - -func removeDot(s string) string { - if len(s) > 0 && s[len(s)-1] == '.' { - return s[0 : len(s)-1] - } - return s -} - -// sanitize cleans up a string to make a suitable package name. -func sanitize(s string) string { - t := "" - for _, r := range s { - if t == "" { - if unicode.IsLetter(r) || r == '_' { - t += string(r) - continue - } - } else { - if unicode.IsLetter(r) || unicode.IsDigit(r) || r == '_' { - t += string(r) - continue - } - } - t += "_" - } - if t == "_" { - t = "x" - } - return t -} - -func (g *generator) Generate(pkg *model.Package, pkgName string) error { - g.p("// Code generated by MockGen. DO NOT EDIT.") - if g.filename != "" { - g.p("// Source: %v", g.filename) - } else { - g.p("// Source: %v (interfaces: %v)", g.srcPackage, g.srcInterfaces) - } - g.p("") - - // Get all required imports, and generate unique names for them all. - im := pkg.Imports() - im[gomockImportPath] = true - im["reflect"] = true - - // Sort keys to make import alias generation predictable - sorted_paths := make([]string, len(im), len(im)) - x := 0 - for pth := range im { - sorted_paths[x] = pth - x++ - } - sort.Strings(sorted_paths) - - g.packageMap = make(map[string]string, len(im)) - localNames := make(map[string]bool, len(im)) - for _, pth := range sorted_paths { - base := sanitize(path.Base(pth)) - - // Local names for an imported package can usually be the basename of the import path. - // A couple of situations don't permit that, such as duplicate local names - // (e.g. importing "html/template" and "text/template"), or where the basename is - // a keyword (e.g. "foo/case"). - // try base0, base1, ... - pkgName := base - i := 0 - for localNames[pkgName] || token.Lookup(pkgName).IsKeyword() { - pkgName = base + strconv.Itoa(i) - i++ - } - - g.packageMap[pth] = pkgName - localNames[pkgName] = true - } - - g.p("package %v", pkgName) - g.p("") - g.p("import (") - g.in() - for path, pkg := range g.packageMap { - if path == *selfPackage { - continue - } - g.p("%v %q", pkg, path) - } - for _, path := range pkg.DotImports { - g.p(". %q", path) - } - g.out() - g.p(")") - - for _, intf := range pkg.Interfaces { - if err := g.GenerateMockInterface(intf); err != nil { - return err - } - } - - return nil -} - -// The name of the mock type to use for the given interface identifier. -func mockName(typeName string) string { - return "Mock" + typeName -} - -func (g *generator) GenerateMockInterface(intf *model.Interface) error { - mockType := mockName(intf.Name) - - g.p("") - g.p("// %v is a mock of %v interface", mockType, intf.Name) - g.p("type %v struct {", mockType) - g.in() - g.p("ctrl *gomock.Controller") - g.p("recorder *%vMockRecorder", mockType) - g.out() - g.p("}") - g.p("") - - g.p("// %vMockRecorder is the mock recorder for %v", mockType, mockType) - g.p("type %vMockRecorder struct {", mockType) - g.in() - g.p("mock *%v", mockType) - g.out() - g.p("}") - g.p("") - - // TODO: Re-enable this if we can import the interface reliably. - //g.p("// Verify that the mock satisfies the interface at compile time.") - //g.p("var _ %v = (*%v)(nil)", typeName, mockType) - //g.p("") - - g.p("// New%v creates a new mock instance", mockType) - g.p("func New%v(ctrl *gomock.Controller) *%v {", mockType, mockType) - g.in() - g.p("mock := &%v{ctrl: ctrl}", mockType) - g.p("mock.recorder = &%vMockRecorder{mock}", mockType) - g.p("return mock") - g.out() - g.p("}") - g.p("") - - // XXX: possible name collision here if someone has EXPECT in their interface. - g.p("// EXPECT returns an object that allows the caller to indicate expected use") - g.p("func (_m *%v) EXPECT() *%vMockRecorder {", mockType, mockType) - g.in() - g.p("return _m.recorder") - g.out() - g.p("}") - - g.GenerateMockMethods(mockType, intf, *selfPackage) - - return nil -} - -func (g *generator) GenerateMockMethods(mockType string, intf *model.Interface, pkgOverride string) { - for _, m := range intf.Methods { - g.p("") - g.GenerateMockMethod(mockType, m, pkgOverride) - g.p("") - g.GenerateMockRecorderMethod(mockType, m) - } -} - -// GenerateMockMethod generates a mock method implementation. -// If non-empty, pkgOverride is the package in which unqualified types reside. -func (g *generator) GenerateMockMethod(mockType string, m *model.Method, pkgOverride string) error { - args := make([]string, len(m.In)) - argNames := make([]string, len(m.In)) - for i, p := range m.In { - name := p.Name - if name == "" { - name = fmt.Sprintf("_param%d", i) - } - ts := p.Type.String(g.packageMap, pkgOverride) - args[i] = name + " " + ts - argNames[i] = name - } - if m.Variadic != nil { - name := m.Variadic.Name - if name == "" { - name = fmt.Sprintf("_param%d", len(m.In)) - } - ts := m.Variadic.Type.String(g.packageMap, pkgOverride) - args = append(args, name+" ..."+ts) - argNames = append(argNames, name) - } - argString := strings.Join(args, ", ") - - rets := make([]string, len(m.Out)) - for i, p := range m.Out { - rets[i] = p.Type.String(g.packageMap, pkgOverride) - } - retString := strings.Join(rets, ", ") - if len(rets) > 1 { - retString = "(" + retString + ")" - } - if retString != "" { - retString = " " + retString - } - - g.p("// %v mocks base method", m.Name) - g.p("func (_m *%v) %v(%v)%v {", mockType, m.Name, argString, retString) - g.in() - - callArgs := strings.Join(argNames, ", ") - if callArgs != "" { - callArgs = ", " + callArgs - } - if m.Variadic != nil { - // Non-trivial. The generated code must build a []interface{}, - // but the variadic argument may be any type. - g.p("_s := []interface{}{%s}", strings.Join(argNames[:len(argNames)-1], ", ")) - g.p("for _, _x := range %s {", argNames[len(argNames)-1]) - g.in() - g.p("_s = append(_s, _x)") - g.out() - g.p("}") - callArgs = ", _s..." - } - if len(m.Out) == 0 { - g.p(`_m.ctrl.Call(_m, "%v"%v)`, m.Name, callArgs) - } else { - g.p(`ret := _m.ctrl.Call(_m, "%v"%v)`, m.Name, callArgs) - - // Go does not allow "naked" type assertions on nil values, so we use the two-value form here. - // The value of that is either (x.(T), true) or (Z, false), where Z is the zero value for T. - // Happily, this coincides with the semantics we want here. - retNames := make([]string, len(rets)) - for i, t := range rets { - retNames[i] = fmt.Sprintf("ret%d", i) - g.p("%s, _ := ret[%d].(%s)", retNames[i], i, t) - } - g.p("return " + strings.Join(retNames, ", ")) - } - - g.out() - g.p("}") - return nil -} - -func (g *generator) GenerateMockRecorderMethod(mockType string, m *model.Method) error { - nargs := len(m.In) - args := make([]string, nargs) - for i := 0; i < nargs; i++ { - args[i] = "arg" + strconv.Itoa(i) - } - argString := strings.Join(args, ", ") - if nargs > 0 { - argString += " interface{}" - } - if m.Variadic != nil { - if nargs > 0 { - argString += ", " - } - argString += fmt.Sprintf("arg%d ...interface{}", nargs) - } - - g.p("// %v indicates an expected call of %v", m.Name, m.Name) - g.p("func (_mr *%vMockRecorder) %v(%v) *gomock.Call {", mockType, m.Name, argString) - g.in() - - callArgs := strings.Join(args, ", ") - if nargs > 0 { - callArgs = ", " + callArgs - } - if m.Variadic != nil { - if nargs == 0 { - // Easy: just use ... to push the arguments through. - callArgs = ", arg0..." - } else { - // Hard: create a temporary slice. - g.p("_s := append([]interface{}{%s}, arg%d...)", strings.Join(args, ", "), nargs) - callArgs = ", _s..." - } - } - g.p(`return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "%s", reflect.TypeOf((*%s)(nil).%s)%s)`, m.Name, mockType, m.Name, callArgs) - - g.out() - g.p("}") - return nil -} - -// Output returns the generator's output, formatted in the standard Go style. -func (g *generator) Output() []byte { - src, err := format.Source(g.buf.Bytes()) - if err != nil { - log.Fatalf("Failed to format generated source code: %s\n%s", err, g.buf.String()) - } - return src -} diff --git a/vendor/github.com/golang/mock/mockgen/model/model.go b/vendor/github.com/golang/mock/mockgen/model/model.go deleted file mode 100644 index 0e69d66e..00000000 --- a/vendor/github.com/golang/mock/mockgen/model/model.go +++ /dev/null @@ -1,431 +0,0 @@ -// Copyright 2012 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package model contains the data model necessary for generating mock implementations. -package model - -import ( - "encoding/gob" - "fmt" - "io" - "reflect" - "strings" -) - -// Package is a Go package. It may be a subset. -type Package struct { - Name string - Interfaces []*Interface - DotImports []string -} - -func (pkg *Package) Print(w io.Writer) { - fmt.Fprintf(w, "package %s\n", pkg.Name) - for _, intf := range pkg.Interfaces { - intf.Print(w) - } -} - -// Imports returns the imports needed by the Package as a set of import paths. -func (pkg *Package) Imports() map[string]bool { - im := make(map[string]bool) - for _, intf := range pkg.Interfaces { - intf.addImports(im) - } - return im -} - -// Interface is a Go interface. -type Interface struct { - Name string - Methods []*Method -} - -func (intf *Interface) Print(w io.Writer) { - fmt.Fprintf(w, "interface %s\n", intf.Name) - for _, m := range intf.Methods { - m.Print(w) - } -} - -func (intf *Interface) addImports(im map[string]bool) { - for _, m := range intf.Methods { - m.addImports(im) - } -} - -// Method is a single method of an interface. -type Method struct { - Name string - In, Out []*Parameter - Variadic *Parameter // may be nil -} - -func (m *Method) Print(w io.Writer) { - fmt.Fprintf(w, " - method %s\n", m.Name) - if len(m.In) > 0 { - fmt.Fprintf(w, " in:\n") - for _, p := range m.In { - p.Print(w) - } - } - if m.Variadic != nil { - fmt.Fprintf(w, " ...:\n") - m.Variadic.Print(w) - } - if len(m.Out) > 0 { - fmt.Fprintf(w, " out:\n") - for _, p := range m.Out { - p.Print(w) - } - } -} - -func (m *Method) addImports(im map[string]bool) { - for _, p := range m.In { - p.Type.addImports(im) - } - if m.Variadic != nil { - m.Variadic.Type.addImports(im) - } - for _, p := range m.Out { - p.Type.addImports(im) - } -} - -// Parameter is an argument or return parameter of a method. -type Parameter struct { - Name string // may be empty - Type Type -} - -func (p *Parameter) Print(w io.Writer) { - n := p.Name - if n == "" { - n = `""` - } - fmt.Fprintf(w, " - %v: %v\n", n, p.Type.String(nil, "")) -} - -// Type is a Go type. -type Type interface { - String(pm map[string]string, pkgOverride string) string - addImports(im map[string]bool) -} - -func init() { - gob.Register(&ArrayType{}) - gob.Register(&ChanType{}) - gob.Register(&FuncType{}) - gob.Register(&MapType{}) - gob.Register(&NamedType{}) - gob.Register(&PointerType{}) - gob.Register(PredeclaredType("")) -} - -// ArrayType is an array or slice type. -type ArrayType struct { - Len int // -1 for slices, >= 0 for arrays - Type Type -} - -func (at *ArrayType) String(pm map[string]string, pkgOverride string) string { - s := "[]" - if at.Len > -1 { - s = fmt.Sprintf("[%d]", at.Len) - } - return s + at.Type.String(pm, pkgOverride) -} - -func (at *ArrayType) addImports(im map[string]bool) { at.Type.addImports(im) } - -// ChanType is a channel type. -type ChanType struct { - Dir ChanDir // 0, 1 or 2 - Type Type -} - -func (ct *ChanType) String(pm map[string]string, pkgOverride string) string { - s := ct.Type.String(pm, pkgOverride) - if ct.Dir == RecvDir { - return "<-chan " + s - } - if ct.Dir == SendDir { - return "chan<- " + s - } - return "chan " + s -} - -func (ct *ChanType) addImports(im map[string]bool) { ct.Type.addImports(im) } - -// ChanDir is a channel direction. -type ChanDir int - -const ( - RecvDir ChanDir = 1 - SendDir ChanDir = 2 -) - -// FuncType is a function type. -type FuncType struct { - In, Out []*Parameter - Variadic *Parameter // may be nil -} - -func (ft *FuncType) String(pm map[string]string, pkgOverride string) string { - args := make([]string, len(ft.In)) - for i, p := range ft.In { - args[i] = p.Type.String(pm, pkgOverride) - } - if ft.Variadic != nil { - args = append(args, "..."+ft.Variadic.Type.String(pm, pkgOverride)) - } - rets := make([]string, len(ft.Out)) - for i, p := range ft.Out { - rets[i] = p.Type.String(pm, pkgOverride) - } - retString := strings.Join(rets, ", ") - if nOut := len(ft.Out); nOut == 1 { - retString = " " + retString - } else if nOut > 1 { - retString = " (" + retString + ")" - } - return "func(" + strings.Join(args, ", ") + ")" + retString -} - -func (ft *FuncType) addImports(im map[string]bool) { - for _, p := range ft.In { - p.Type.addImports(im) - } - if ft.Variadic != nil { - ft.Variadic.Type.addImports(im) - } - for _, p := range ft.Out { - p.Type.addImports(im) - } -} - -// MapType is a map type. -type MapType struct { - Key, Value Type -} - -func (mt *MapType) String(pm map[string]string, pkgOverride string) string { - return "map[" + mt.Key.String(pm, pkgOverride) + "]" + mt.Value.String(pm, pkgOverride) -} - -func (mt *MapType) addImports(im map[string]bool) { - mt.Key.addImports(im) - mt.Value.addImports(im) -} - -// NamedType is an exported type in a package. -type NamedType struct { - Package string // may be empty - Type string // TODO: should this be typed Type? -} - -func (nt *NamedType) String(pm map[string]string, pkgOverride string) string { - // TODO: is this right? - if pkgOverride == nt.Package { - return nt.Type - } - return pm[nt.Package] + "." + nt.Type -} -func (nt *NamedType) addImports(im map[string]bool) { - if nt.Package != "" { - im[nt.Package] = true - } -} - -// PointerType is a pointer to another type. -type PointerType struct { - Type Type -} - -func (pt *PointerType) String(pm map[string]string, pkgOverride string) string { - return "*" + pt.Type.String(pm, pkgOverride) -} -func (pt *PointerType) addImports(im map[string]bool) { pt.Type.addImports(im) } - -// PredeclaredType is a predeclared type such as "int". -type PredeclaredType string - -func (pt PredeclaredType) String(pm map[string]string, pkgOverride string) string { return string(pt) } -func (pt PredeclaredType) addImports(im map[string]bool) {} - -// The following code is intended to be called by the program generated by ../reflect.go. - -func InterfaceFromInterfaceType(it reflect.Type) (*Interface, error) { - if it.Kind() != reflect.Interface { - return nil, fmt.Errorf("%v is not an interface", it) - } - intf := &Interface{} - - for i := 0; i < it.NumMethod(); i++ { - mt := it.Method(i) - // TODO: need to skip unexported methods? or just raise an error? - m := &Method{ - Name: mt.Name, - } - - var err error - m.In, m.Variadic, m.Out, err = funcArgsFromType(mt.Type) - if err != nil { - return nil, err - } - - intf.Methods = append(intf.Methods, m) - } - - return intf, nil -} - -// t's Kind must be a reflect.Func. -func funcArgsFromType(t reflect.Type) (in []*Parameter, variadic *Parameter, out []*Parameter, err error) { - nin := t.NumIn() - if t.IsVariadic() { - nin-- - } - var p *Parameter - for i := 0; i < nin; i++ { - p, err = parameterFromType(t.In(i)) - if err != nil { - return - } - in = append(in, p) - } - if t.IsVariadic() { - p, err = parameterFromType(t.In(nin).Elem()) - if err != nil { - return - } - variadic = p - } - for i := 0; i < t.NumOut(); i++ { - p, err = parameterFromType(t.Out(i)) - if err != nil { - return - } - out = append(out, p) - } - return -} - -func parameterFromType(t reflect.Type) (*Parameter, error) { - tt, err := typeFromType(t) - if err != nil { - return nil, err - } - return &Parameter{Type: tt}, nil -} - -var errorType = reflect.TypeOf((*error)(nil)).Elem() - -var byteType = reflect.TypeOf(byte(0)) - -func typeFromType(t reflect.Type) (Type, error) { - // Hack workaround for https://golang.org/issue/3853. - // This explicit check should not be necessary. - if t == byteType { - return PredeclaredType("byte"), nil - } - - if imp := t.PkgPath(); imp != "" { - return &NamedType{ - Package: imp, - Type: t.Name(), - }, nil - } - - // only unnamed or predeclared types after here - - // Lots of types have element types. Let's do the parsing and error checking for all of them. - var elemType Type - switch t.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Ptr, reflect.Slice: - var err error - elemType, err = typeFromType(t.Elem()) - if err != nil { - return nil, err - } - } - - switch t.Kind() { - case reflect.Array: - return &ArrayType{ - Len: t.Len(), - Type: elemType, - }, nil - case reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, - reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128, reflect.String: - return PredeclaredType(t.Kind().String()), nil - case reflect.Chan: - var dir ChanDir - switch t.ChanDir() { - case reflect.RecvDir: - dir = RecvDir - case reflect.SendDir: - dir = SendDir - } - return &ChanType{ - Dir: dir, - Type: elemType, - }, nil - case reflect.Func: - in, variadic, out, err := funcArgsFromType(t) - if err != nil { - return nil, err - } - return &FuncType{ - In: in, - Out: out, - Variadic: variadic, - }, nil - case reflect.Interface: - // Two special interfaces. - if t.NumMethod() == 0 { - return PredeclaredType("interface{}"), nil - } - if t == errorType { - return PredeclaredType("error"), nil - } - case reflect.Map: - kt, err := typeFromType(t.Key()) - if err != nil { - return nil, err - } - return &MapType{ - Key: kt, - Value: elemType, - }, nil - case reflect.Ptr: - return &PointerType{ - Type: elemType, - }, nil - case reflect.Slice: - return &ArrayType{ - Len: -1, - Type: elemType, - }, nil - case reflect.Struct: - if t.NumField() == 0 { - return PredeclaredType("struct{}"), nil - } - } - - // TODO: Struct, UnsafePointer - return nil, fmt.Errorf("can't yet turn %v (%v) into a model.Type", t, t.Kind()) -} diff --git a/vendor/github.com/golang/mock/mockgen/parse.go b/vendor/github.com/golang/mock/mockgen/parse.go deleted file mode 100644 index 5615d4b3..00000000 --- a/vendor/github.com/golang/mock/mockgen/parse.go +++ /dev/null @@ -1,447 +0,0 @@ -// Copyright 2012 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -// This file contains the model construction by parsing source files. - -import ( - "flag" - "fmt" - "go/ast" - "go/parser" - "go/token" - "log" - "path" - "strconv" - "strings" - - "github.com/golang/mock/mockgen/model" -) - -var ( - imports = flag.String("imports", "", "(source mode) Comma-separated name=path pairs of explicit imports to use.") - auxFiles = flag.String("aux_files", "", "(source mode) Comma-separated pkg=path pairs of auxiliary Go source files.") -) - -// TODO: simplify error reporting - -func ParseFile(source string) (*model.Package, error) { - fs := token.NewFileSet() - file, err := parser.ParseFile(fs, source, nil, 0) - if err != nil { - return nil, fmt.Errorf("failed parsing source file %v: %v", source, err) - } - - p := &fileParser{ - fileSet: fs, - imports: make(map[string]string), - auxInterfaces: make(map[string]map[string]*ast.InterfaceType), - } - - // Handle -imports. - dotImports := make(map[string]bool) - if *imports != "" { - for _, kv := range strings.Split(*imports, ",") { - eq := strings.Index(kv, "=") - k, v := kv[:eq], kv[eq+1:] - if k == "." { - // TODO: Catch dupes? - dotImports[v] = true - } else { - // TODO: Catch dupes? - p.imports[k] = v - } - } - } - - // Handle -aux_files. - if err := p.parseAuxFiles(*auxFiles); err != nil { - return nil, err - } - p.addAuxInterfacesFromFile("", file) // this file - - pkg, err := p.parseFile(file) - if err != nil { - return nil, err - } - pkg.DotImports = make([]string, 0, len(dotImports)) - for path := range dotImports { - pkg.DotImports = append(pkg.DotImports, path) - } - return pkg, nil -} - -type fileParser struct { - fileSet *token.FileSet - imports map[string]string // package name => import path - - auxFiles []*ast.File - auxInterfaces map[string]map[string]*ast.InterfaceType // package (or "") => name => interface -} - -func (p *fileParser) errorf(pos token.Pos, format string, args ...interface{}) error { - ps := p.fileSet.Position(pos) - format = "%s:%d:%d: " + format - args = append([]interface{}{ps.Filename, ps.Line, ps.Column}, args...) - return fmt.Errorf(format, args...) -} - -func (p *fileParser) parseAuxFiles(auxFiles string) error { - auxFiles = strings.TrimSpace(auxFiles) - if auxFiles == "" { - return nil - } - for _, kv := range strings.Split(auxFiles, ",") { - parts := strings.SplitN(kv, "=", 2) - if len(parts) != 2 { - return fmt.Errorf("bad aux file spec: %v", kv) - } - file, err := parser.ParseFile(p.fileSet, parts[1], nil, 0) - if err != nil { - return err - } - p.auxFiles = append(p.auxFiles, file) - p.addAuxInterfacesFromFile(parts[0], file) - } - return nil -} - -func (p *fileParser) addAuxInterfacesFromFile(pkg string, file *ast.File) { - if _, ok := p.auxInterfaces[pkg]; !ok { - p.auxInterfaces[pkg] = make(map[string]*ast.InterfaceType) - } - for ni := range iterInterfaces(file) { - p.auxInterfaces[pkg][ni.name.Name] = ni.it - } -} - -func (p *fileParser) parseFile(file *ast.File) (*model.Package, error) { - allImports := importsOfFile(file) - // Don't stomp imports provided by -imports. Those should take precedence. - for pkg, path := range allImports { - if _, ok := p.imports[pkg]; !ok { - p.imports[pkg] = path - } - } - // Add imports from auxiliary files, which might be needed for embedded interfaces. - // Don't stomp any other imports. - for _, f := range p.auxFiles { - for pkg, path := range importsOfFile(f) { - if _, ok := p.imports[pkg]; !ok { - p.imports[pkg] = path - } - } - } - - var is []*model.Interface - for ni := range iterInterfaces(file) { - i, err := p.parseInterface(ni.name.String(), "", ni.it) - if err != nil { - return nil, err - } - is = append(is, i) - } - return &model.Package{ - Name: file.Name.String(), - Interfaces: is, - }, nil -} - -func (p *fileParser) parseInterface(name, pkg string, it *ast.InterfaceType) (*model.Interface, error) { - intf := &model.Interface{Name: name} - for _, field := range it.Methods.List { - switch v := field.Type.(type) { - case *ast.FuncType: - if nn := len(field.Names); nn != 1 { - return nil, fmt.Errorf("expected one name for interface %v, got %d", intf.Name, nn) - } - m := &model.Method{ - Name: field.Names[0].String(), - } - var err error - m.In, m.Variadic, m.Out, err = p.parseFunc(pkg, v) - if err != nil { - return nil, err - } - intf.Methods = append(intf.Methods, m) - case *ast.Ident: - // Embedded interface in this package. - ei := p.auxInterfaces[""][v.String()] - if ei == nil { - return nil, p.errorf(v.Pos(), "unknown embedded interface %s", v.String()) - } - eintf, err := p.parseInterface(v.String(), pkg, ei) - if err != nil { - return nil, err - } - // Copy the methods. - // TODO: apply shadowing rules. - for _, m := range eintf.Methods { - intf.Methods = append(intf.Methods, m) - } - case *ast.SelectorExpr: - // Embedded interface in another package. - fpkg, sel := v.X.(*ast.Ident).String(), v.Sel.String() - ei := p.auxInterfaces[fpkg][sel] - if ei == nil { - return nil, p.errorf(v.Pos(), "unknown embedded interface %s.%s", fpkg, sel) - } - epkg, ok := p.imports[fpkg] - if !ok { - return nil, p.errorf(v.X.Pos(), "unknown package %s", fpkg) - } - eintf, err := p.parseInterface(sel, epkg, ei) - if err != nil { - return nil, err - } - // Copy the methods. - // TODO: apply shadowing rules. - for _, m := range eintf.Methods { - intf.Methods = append(intf.Methods, m) - } - default: - return nil, fmt.Errorf("don't know how to mock method of type %T", field.Type) - } - } - return intf, nil -} - -func (p *fileParser) parseFunc(pkg string, f *ast.FuncType) (in []*model.Parameter, variadic *model.Parameter, out []*model.Parameter, err error) { - if f.Params != nil { - regParams := f.Params.List - if isVariadic(f) { - n := len(regParams) - varParams := regParams[n-1:] - regParams = regParams[:n-1] - vp, err := p.parseFieldList(pkg, varParams) - if err != nil { - return nil, nil, nil, p.errorf(varParams[0].Pos(), "failed parsing variadic argument: %v", err) - } - variadic = vp[0] - } - in, err = p.parseFieldList(pkg, regParams) - if err != nil { - return nil, nil, nil, p.errorf(f.Pos(), "failed parsing arguments: %v", err) - } - } - if f.Results != nil { - out, err = p.parseFieldList(pkg, f.Results.List) - if err != nil { - return nil, nil, nil, p.errorf(f.Pos(), "failed parsing returns: %v", err) - } - } - return -} - -func (p *fileParser) parseFieldList(pkg string, fields []*ast.Field) ([]*model.Parameter, error) { - nf := 0 - for _, f := range fields { - nn := len(f.Names) - if nn == 0 { - nn = 1 // anonymous parameter - } - nf += nn - } - if nf == 0 { - return nil, nil - } - ps := make([]*model.Parameter, nf) - i := 0 // destination index - for _, f := range fields { - t, err := p.parseType(pkg, f.Type) - if err != nil { - return nil, err - } - - if len(f.Names) == 0 { - // anonymous arg - ps[i] = &model.Parameter{Type: t} - i++ - continue - } - for _, name := range f.Names { - ps[i] = &model.Parameter{Name: name.Name, Type: t} - i++ - } - } - return ps, nil -} - -func (p *fileParser) parseType(pkg string, typ ast.Expr) (model.Type, error) { - switch v := typ.(type) { - case *ast.ArrayType: - ln := -1 - if v.Len != nil { - x, err := strconv.Atoi(v.Len.(*ast.BasicLit).Value) - if err != nil { - return nil, p.errorf(v.Len.Pos(), "bad array size: %v", err) - } - ln = x - } - t, err := p.parseType(pkg, v.Elt) - if err != nil { - return nil, err - } - return &model.ArrayType{Len: ln, Type: t}, nil - case *ast.ChanType: - t, err := p.parseType(pkg, v.Value) - if err != nil { - return nil, err - } - var dir model.ChanDir - if v.Dir == ast.SEND { - dir = model.SendDir - } - if v.Dir == ast.RECV { - dir = model.RecvDir - } - return &model.ChanType{Dir: dir, Type: t}, nil - case *ast.Ellipsis: - // assume we're parsing a variadic argument - return p.parseType(pkg, v.Elt) - case *ast.FuncType: - in, variadic, out, err := p.parseFunc(pkg, v) - if err != nil { - return nil, err - } - return &model.FuncType{In: in, Out: out, Variadic: variadic}, nil - case *ast.Ident: - if v.IsExported() { - // assume type in this package - return &model.NamedType{Package: pkg, Type: v.Name}, nil - } else { - // assume predeclared type - return model.PredeclaredType(v.Name), nil - } - case *ast.InterfaceType: - if v.Methods != nil && len(v.Methods.List) > 0 { - return nil, p.errorf(v.Pos(), "can't handle non-empty unnamed interface types") - } - return model.PredeclaredType("interface{}"), nil - case *ast.MapType: - key, err := p.parseType(pkg, v.Key) - if err != nil { - return nil, err - } - value, err := p.parseType(pkg, v.Value) - if err != nil { - return nil, err - } - return &model.MapType{Key: key, Value: value}, nil - case *ast.SelectorExpr: - pkgName := v.X.(*ast.Ident).String() - pkg, ok := p.imports[pkgName] - if !ok { - return nil, p.errorf(v.Pos(), "unknown package %q", pkgName) - } - return &model.NamedType{Package: pkg, Type: v.Sel.String()}, nil - case *ast.StarExpr: - t, err := p.parseType(pkg, v.X) - if err != nil { - return nil, err - } - return &model.PointerType{Type: t}, nil - case *ast.StructType: - if v.Fields != nil && len(v.Fields.List) > 0 { - return nil, p.errorf(v.Pos(), "can't handle non-empty unnamed struct types") - } - return model.PredeclaredType("struct{}"), nil - } - - return nil, fmt.Errorf("don't know how to parse type %T", typ) -} - -// importsOfFile returns a map of package name to import path -// of the imports in file. -func importsOfFile(file *ast.File) map[string]string { - /* We have to make guesses about some imports, because imports are not required - * to have names. Named imports are always certain. Unnamed imports are guessed - * to have a name of the last path component; if the last path component has dots, - * the first dot-delimited field is used as the name. - */ - - m := make(map[string]string) - for _, decl := range file.Decls { - gd, ok := decl.(*ast.GenDecl) - if !ok || gd.Tok != token.IMPORT { - continue - } - for _, spec := range gd.Specs { - is, ok := spec.(*ast.ImportSpec) - if !ok { - continue - } - pkg, importPath := "", string(is.Path.Value) - importPath = importPath[1 : len(importPath)-1] // remove quotes - - if is.Name != nil { - if is.Name.Name == "_" { - continue - } - pkg = removeDot(is.Name.Name) - } else { - _, last := path.Split(importPath) - pkg = strings.SplitN(last, ".", 2)[0] - } - if _, ok := m[pkg]; ok { - log.Fatalf("imported package collision: %q imported twice", pkg) - } - m[pkg] = importPath - } - } - return m -} - -type namedInterface struct { - name *ast.Ident - it *ast.InterfaceType -} - -// Create an iterator over all interfaces in file. -func iterInterfaces(file *ast.File) <-chan namedInterface { - ch := make(chan namedInterface) - go func() { - for _, decl := range file.Decls { - gd, ok := decl.(*ast.GenDecl) - if !ok || gd.Tok != token.TYPE { - continue - } - for _, spec := range gd.Specs { - ts, ok := spec.(*ast.TypeSpec) - if !ok { - continue - } - it, ok := ts.Type.(*ast.InterfaceType) - if !ok { - continue - } - - ch <- namedInterface{ts.Name, it} - } - } - close(ch) - }() - return ch -} - -// isVariadic returns whether the function is variadic. -func isVariadic(f *ast.FuncType) bool { - nargs := len(f.Params.List) - if nargs == 0 { - return false - } - _, ok := f.Params.List[nargs-1].Type.(*ast.Ellipsis) - return ok -} diff --git a/vendor/github.com/golang/mock/mockgen/reflect.go b/vendor/github.com/golang/mock/mockgen/reflect.go deleted file mode 100644 index 4df9689f..00000000 --- a/vendor/github.com/golang/mock/mockgen/reflect.go +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2012 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -// This file contains the model construction by reflection. - -import ( - "bytes" - "encoding/gob" - "flag" - "io" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "runtime" - "text/template" - - "github.com/golang/mock/mockgen/model" -) - -var ( - progOnly = flag.Bool("prog_only", false, "(reflect mode) Only generate the reflection program; write it to stdout.") - execOnly = flag.String("exec_only", "", "(reflect mode) If set, execute this reflection program.") - buildFlags = flag.String("build_flags", "", "(reflect mode) Additional flags for go build.") -) - -func Reflect(importPath string, symbols []string) (*model.Package, error) { - // TODO: sanity check arguments - - progPath := *execOnly - if *execOnly == "" { - // We use TempDir instead of TempFile so we can control the filename. - tmpDir, err := ioutil.TempDir("", "gomock_reflect_") - if err != nil { - return nil, err - } - defer func() { os.RemoveAll(tmpDir) }() - const progSource = "prog.go" - var progBinary = "prog.bin" - if runtime.GOOS == "windows" { - // Windows won't execute a program unless it has a ".exe" suffix. - progBinary += ".exe" - } - - // Generate program. - var program bytes.Buffer - data := reflectData{ - ImportPath: importPath, - Symbols: symbols, - } - if err := reflectProgram.Execute(&program, &data); err != nil { - return nil, err - } - if *progOnly { - io.Copy(os.Stdout, &program) - os.Exit(0) - } - if err := ioutil.WriteFile(filepath.Join(tmpDir, progSource), program.Bytes(), 0600); err != nil { - return nil, err - } - - cmdArgs := []string{} - cmdArgs = append(cmdArgs, "build") - if *buildFlags != "" { - cmdArgs = append(cmdArgs, *buildFlags) - } - cmdArgs = append(cmdArgs, "-o", progBinary, progSource) - - // Build the program. - cmd := exec.Command("go", cmdArgs...) - cmd.Dir = tmpDir - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - return nil, err - } - progPath = filepath.Join(tmpDir, progBinary) - } - - // Run it. - cmd := exec.Command(progPath) - var stdout bytes.Buffer - cmd.Stdout = &stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - return nil, err - } - - // Process output. - var pkg model.Package - if err := gob.NewDecoder(&stdout).Decode(&pkg); err != nil { - return nil, err - } - return &pkg, nil -} - -type reflectData struct { - ImportPath string - Symbols []string -} - -// This program reflects on an interface value, and prints the -// gob encoding of a model.Package to standard output. -// JSON doesn't work because of the model.Type interface. -var reflectProgram = template.Must(template.New("program").Parse(` -package main - -import ( - "encoding/gob" - "fmt" - "os" - "path" - "reflect" - - "github.com/golang/mock/mockgen/model" - - pkg_ {{printf "%q" .ImportPath}} -) - -func main() { - its := []struct{ - sym string - typ reflect.Type - }{ - {{range .Symbols}} - { {{printf "%q" .}}, reflect.TypeOf((*pkg_.{{.}})(nil)).Elem()}, - {{end}} - } - pkg := &model.Package{ - // NOTE: This behaves contrary to documented behaviour if the - // package name is not the final component of the import path. - // The reflect package doesn't expose the package name, though. - Name: path.Base({{printf "%q" .ImportPath}}), - } - - for _, it := range its { - intf, err := model.InterfaceFromInterfaceType(it.typ) - if err != nil { - fmt.Fprintf(os.Stderr, "Reflection: %v\n", err) - os.Exit(1) - } - intf.Name = it.sym - pkg.Interfaces = append(pkg.Interfaces, intf) - } - if err := gob.NewEncoder(os.Stdout).Encode(pkg); err != nil { - fmt.Fprintf(os.Stderr, "gob encode: %v\n", err) - os.Exit(1) - } -} -`)) diff --git a/vendor/github.com/golang/mock/mockgen/tests/unexported_method/README.md b/vendor/github.com/golang/mock/mockgen/tests/unexported_method/README.md deleted file mode 100644 index 87f91d46..00000000 --- a/vendor/github.com/golang/mock/mockgen/tests/unexported_method/README.md +++ /dev/null @@ -1 +0,0 @@ -From #52, this tests an unexported method in the mocked interface. diff --git a/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport.go b/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport.go deleted file mode 100644 index 91d5baf7..00000000 --- a/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:generate mockgen -destination bugreport_mock.go -package bugreport -source=bugreport.go Example - -package bugreport - -import "fmt" - -// Example is an interface with a non exported method -type Example interface { - someMethod(string) string -} - -// CallExample is a simple function that uses the interface -func CallExample(e Example) { - fmt.Println(e.someMethod("test")) -} diff --git a/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport_mock.go b/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport_mock.go deleted file mode 100644 index f1a16d81..00000000 --- a/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport_mock.go +++ /dev/null @@ -1,44 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: bugreport.go - -package bugreport - -import ( - gomock "github.com/golang/mock/gomock" - reflect "reflect" -) - -// MockExample is a mock of Example interface -type MockExample struct { - ctrl *gomock.Controller - recorder *MockExampleMockRecorder -} - -// MockExampleMockRecorder is the mock recorder for MockExample -type MockExampleMockRecorder struct { - mock *MockExample -} - -// NewMockExample creates a new mock instance -func NewMockExample(ctrl *gomock.Controller) *MockExample { - mock := &MockExample{ctrl: ctrl} - mock.recorder = &MockExampleMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (_m *MockExample) EXPECT() *MockExampleMockRecorder { - return _m.recorder -} - -// someMethod mocks base method -func (_m *MockExample) someMethod(_param0 string) string { - ret := _m.ctrl.Call(_m, "someMethod", _param0) - ret0, _ := ret[0].(string) - return ret0 -} - -// someMethod indicates an expected call of someMethod -func (_mr *MockExampleMockRecorder) someMethod(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "someMethod", reflect.TypeOf((*MockExample)(nil).someMethod), arg0) -} diff --git a/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport_test.go b/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport_test.go deleted file mode 100644 index d428fb4c..00000000 --- a/vendor/github.com/golang/mock/mockgen/tests/unexported_method/bugreport_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package bugreport - -import ( - "testing" - - "github.com/golang/mock/gomock" -) - -func TestCallExample(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - e := NewMockExample(ctrl) - e.EXPECT().someMethod(gomock.Any()).Return("it works!") - - CallExample(e) -} diff --git a/vendor/github.com/golang/mock/sample/README.md b/vendor/github.com/golang/mock/sample/README.md deleted file mode 100644 index 7180204f..00000000 --- a/vendor/github.com/golang/mock/sample/README.md +++ /dev/null @@ -1,16 +0,0 @@ -This directory contains an example of a package containing a non-trivial -interface that can be mocked with GoMock. The interesting files are: - - * `user.go`: Source code for the sample package, containing interfaces to be - mocked. This file depends on the packages named imp[1-4] for various things. - - * `user_test.go`: A test for the sample package, in which mocks of the - interfaces from `user.go` are used. This demonstrates how to create mock - objects, set up expectations, and so on. - - * `mock_user/mock_user.go`: The generated mock code. See ../update_mocks.sh - for the command used to generate it. - -To run the test, - - go test github.com/golang/mock/sample diff --git a/vendor/github.com/golang/mock/sample/imp1/imp1.go b/vendor/github.com/golang/mock/sample/imp1/imp1.go deleted file mode 100644 index ef9d0144..00000000 --- a/vendor/github.com/golang/mock/sample/imp1/imp1.go +++ /dev/null @@ -1,17 +0,0 @@ -package imp1 - -import "bufio" - -type Imp1 struct{} - -type ImpT int - -type ForeignEmbedded interface { - // The return value here also makes sure that - // the generated mock picks up the "bufio" import. - ForeignEmbeddedMethod() *bufio.Reader - - // This method uses a type in this package, - // which should be qualified when this interface is embedded. - ImplicitPackage(s string, t ImpT, st []ImpT, pt *ImpT, ct chan ImpT) -} diff --git a/vendor/github.com/golang/mock/sample/imp2/imp2.go b/vendor/github.com/golang/mock/sample/imp2/imp2.go deleted file mode 100644 index 53bee9ad..00000000 --- a/vendor/github.com/golang/mock/sample/imp2/imp2.go +++ /dev/null @@ -1,3 +0,0 @@ -package imp2 - -type Imp2 struct{} diff --git a/vendor/github.com/golang/mock/sample/imp3/imp3.go b/vendor/github.com/golang/mock/sample/imp3/imp3.go deleted file mode 100644 index 70f17c00..00000000 --- a/vendor/github.com/golang/mock/sample/imp3/imp3.go +++ /dev/null @@ -1,3 +0,0 @@ -package imp3 - -type Imp3 struct{} diff --git a/vendor/github.com/golang/mock/sample/imp4/imp4.go b/vendor/github.com/golang/mock/sample/imp4/imp4.go deleted file mode 100644 index 30a70767..00000000 --- a/vendor/github.com/golang/mock/sample/imp4/imp4.go +++ /dev/null @@ -1,3 +0,0 @@ -package imp_four - -type Imp4 struct{} diff --git a/vendor/github.com/golang/mock/sample/mock_user/mock_user.go b/vendor/github.com/golang/mock/sample/mock_user/mock_user.go deleted file mode 100644 index 59602ef6..00000000 --- a/vendor/github.com/golang/mock/sample/mock_user/mock_user.go +++ /dev/null @@ -1,383 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: github.com/golang/mock/sample (interfaces: Index,Embed,Embedded) - -package mock_sample - -import ( - bufio "bufio" - bytes "bytes" - gomock "github.com/golang/mock/gomock" - imp1 "github.com/golang/mock/sample/imp1" - imp2 "github.com/golang/mock/sample/imp2" - imp3 "github.com/golang/mock/sample/imp3" - imp4 "github.com/golang/mock/sample/imp4" - hash "hash" - template "html/template" - io "io" - http "net/http" - reflect "reflect" - template0 "text/template" -) - -// MockIndex is a mock of Index interface -type MockIndex struct { - ctrl *gomock.Controller - recorder *MockIndexMockRecorder -} - -// MockIndexMockRecorder is the mock recorder for MockIndex -type MockIndexMockRecorder struct { - mock *MockIndex -} - -// NewMockIndex creates a new mock instance -func NewMockIndex(ctrl *gomock.Controller) *MockIndex { - mock := &MockIndex{ctrl: ctrl} - mock.recorder = &MockIndexMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (_m *MockIndex) EXPECT() *MockIndexMockRecorder { - return _m.recorder -} - -// Anon mocks base method -func (_m *MockIndex) Anon(_param0 string) { - _m.ctrl.Call(_m, "Anon", _param0) -} - -// Anon indicates an expected call of Anon -func (_mr *MockIndexMockRecorder) Anon(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Anon", reflect.TypeOf((*MockIndex)(nil).Anon), arg0) -} - -// Chan mocks base method -func (_m *MockIndex) Chan(_param0 chan int, _param1 chan<- hash.Hash) { - _m.ctrl.Call(_m, "Chan", _param0, _param1) -} - -// Chan indicates an expected call of Chan -func (_mr *MockIndexMockRecorder) Chan(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Chan", reflect.TypeOf((*MockIndex)(nil).Chan), arg0, arg1) -} - -// ConcreteRet mocks base method -func (_m *MockIndex) ConcreteRet() chan<- bool { - ret := _m.ctrl.Call(_m, "ConcreteRet") - ret0, _ := ret[0].(chan<- bool) - return ret0 -} - -// ConcreteRet indicates an expected call of ConcreteRet -func (_mr *MockIndexMockRecorder) ConcreteRet() *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "ConcreteRet", reflect.TypeOf((*MockIndex)(nil).ConcreteRet)) -} - -// Ellip mocks base method -func (_m *MockIndex) Ellip(_param0 string, _param1 ...interface{}) { - _s := []interface{}{_param0} - for _, _x := range _param1 { - _s = append(_s, _x) - } - _m.ctrl.Call(_m, "Ellip", _s...) -} - -// Ellip indicates an expected call of Ellip -func (_mr *MockIndexMockRecorder) Ellip(arg0 interface{}, arg1 ...interface{}) *gomock.Call { - _s := append([]interface{}{arg0}, arg1...) - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Ellip", reflect.TypeOf((*MockIndex)(nil).Ellip), _s...) -} - -// EllipOnly mocks base method -func (_m *MockIndex) EllipOnly(_param0 ...string) { - _s := []interface{}{} - for _, _x := range _param0 { - _s = append(_s, _x) - } - _m.ctrl.Call(_m, "EllipOnly", _s...) -} - -// EllipOnly indicates an expected call of EllipOnly -func (_mr *MockIndexMockRecorder) EllipOnly(arg0 ...interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "EllipOnly", reflect.TypeOf((*MockIndex)(nil).EllipOnly), arg0...) -} - -// ForeignFour mocks base method -func (_m *MockIndex) ForeignFour(_param0 imp4.Imp4) { - _m.ctrl.Call(_m, "ForeignFour", _param0) -} - -// ForeignFour indicates an expected call of ForeignFour -func (_mr *MockIndexMockRecorder) ForeignFour(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "ForeignFour", reflect.TypeOf((*MockIndex)(nil).ForeignFour), arg0) -} - -// ForeignOne mocks base method -func (_m *MockIndex) ForeignOne(_param0 imp1.Imp1) { - _m.ctrl.Call(_m, "ForeignOne", _param0) -} - -// ForeignOne indicates an expected call of ForeignOne -func (_mr *MockIndexMockRecorder) ForeignOne(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "ForeignOne", reflect.TypeOf((*MockIndex)(nil).ForeignOne), arg0) -} - -// ForeignThree mocks base method -func (_m *MockIndex) ForeignThree(_param0 imp3.Imp3) { - _m.ctrl.Call(_m, "ForeignThree", _param0) -} - -// ForeignThree indicates an expected call of ForeignThree -func (_mr *MockIndexMockRecorder) ForeignThree(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "ForeignThree", reflect.TypeOf((*MockIndex)(nil).ForeignThree), arg0) -} - -// ForeignTwo mocks base method -func (_m *MockIndex) ForeignTwo(_param0 imp2.Imp2) { - _m.ctrl.Call(_m, "ForeignTwo", _param0) -} - -// ForeignTwo indicates an expected call of ForeignTwo -func (_mr *MockIndexMockRecorder) ForeignTwo(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "ForeignTwo", reflect.TypeOf((*MockIndex)(nil).ForeignTwo), arg0) -} - -// Func mocks base method -func (_m *MockIndex) Func(_param0 func(http.Request) (int, bool)) { - _m.ctrl.Call(_m, "Func", _param0) -} - -// Func indicates an expected call of Func -func (_mr *MockIndexMockRecorder) Func(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Func", reflect.TypeOf((*MockIndex)(nil).Func), arg0) -} - -// Get mocks base method -func (_m *MockIndex) Get(_param0 string) interface{} { - ret := _m.ctrl.Call(_m, "Get", _param0) - ret0, _ := ret[0].(interface{}) - return ret0 -} - -// Get indicates an expected call of Get -func (_mr *MockIndexMockRecorder) Get(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Get", reflect.TypeOf((*MockIndex)(nil).Get), arg0) -} - -// GetTwo mocks base method -func (_m *MockIndex) GetTwo(_param0 string, _param1 string) (interface{}, interface{}) { - ret := _m.ctrl.Call(_m, "GetTwo", _param0, _param1) - ret0, _ := ret[0].(interface{}) - ret1, _ := ret[1].(interface{}) - return ret0, ret1 -} - -// GetTwo indicates an expected call of GetTwo -func (_mr *MockIndexMockRecorder) GetTwo(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "GetTwo", reflect.TypeOf((*MockIndex)(nil).GetTwo), arg0, arg1) -} - -// Map mocks base method -func (_m *MockIndex) Map(_param0 map[int]hash.Hash) { - _m.ctrl.Call(_m, "Map", _param0) -} - -// Map indicates an expected call of Map -func (_mr *MockIndexMockRecorder) Map(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Map", reflect.TypeOf((*MockIndex)(nil).Map), arg0) -} - -// NillableRet mocks base method -func (_m *MockIndex) NillableRet() error { - ret := _m.ctrl.Call(_m, "NillableRet") - ret0, _ := ret[0].(error) - return ret0 -} - -// NillableRet indicates an expected call of NillableRet -func (_mr *MockIndexMockRecorder) NillableRet() *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "NillableRet", reflect.TypeOf((*MockIndex)(nil).NillableRet)) -} - -// Other mocks base method -func (_m *MockIndex) Other() hash.Hash { - ret := _m.ctrl.Call(_m, "Other") - ret0, _ := ret[0].(hash.Hash) - return ret0 -} - -// Other indicates an expected call of Other -func (_mr *MockIndexMockRecorder) Other() *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Other", reflect.TypeOf((*MockIndex)(nil).Other)) -} - -// Ptr mocks base method -func (_m *MockIndex) Ptr(_param0 *int) { - _m.ctrl.Call(_m, "Ptr", _param0) -} - -// Ptr indicates an expected call of Ptr -func (_mr *MockIndexMockRecorder) Ptr(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Ptr", reflect.TypeOf((*MockIndex)(nil).Ptr), arg0) -} - -// Put mocks base method -func (_m *MockIndex) Put(_param0 string, _param1 interface{}) { - _m.ctrl.Call(_m, "Put", _param0, _param1) -} - -// Put indicates an expected call of Put -func (_mr *MockIndexMockRecorder) Put(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Put", reflect.TypeOf((*MockIndex)(nil).Put), arg0, arg1) -} - -// Slice mocks base method -func (_m *MockIndex) Slice(_param0 []int, _param1 []byte) [3]int { - ret := _m.ctrl.Call(_m, "Slice", _param0, _param1) - ret0, _ := ret[0].([3]int) - return ret0 -} - -// Slice indicates an expected call of Slice -func (_mr *MockIndexMockRecorder) Slice(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Slice", reflect.TypeOf((*MockIndex)(nil).Slice), arg0, arg1) -} - -// Struct mocks base method -func (_m *MockIndex) Struct(_param0 struct{}) { - _m.ctrl.Call(_m, "Struct", _param0) -} - -// Struct indicates an expected call of Struct -func (_mr *MockIndexMockRecorder) Struct(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Struct", reflect.TypeOf((*MockIndex)(nil).Struct), arg0) -} - -// StructChan mocks base method -func (_m *MockIndex) StructChan(_param0 chan struct{}) { - _m.ctrl.Call(_m, "StructChan", _param0) -} - -// StructChan indicates an expected call of StructChan -func (_mr *MockIndexMockRecorder) StructChan(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "StructChan", reflect.TypeOf((*MockIndex)(nil).StructChan), arg0) -} - -// Summary mocks base method -func (_m *MockIndex) Summary(_param0 *bytes.Buffer, _param1 io.Writer) { - _m.ctrl.Call(_m, "Summary", _param0, _param1) -} - -// Summary indicates an expected call of Summary -func (_mr *MockIndexMockRecorder) Summary(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Summary", reflect.TypeOf((*MockIndex)(nil).Summary), arg0, arg1) -} - -// Templates mocks base method -func (_m *MockIndex) Templates(_param0 template.CSS, _param1 template0.FuncMap) { - _m.ctrl.Call(_m, "Templates", _param0, _param1) -} - -// Templates indicates an expected call of Templates -func (_mr *MockIndexMockRecorder) Templates(arg0, arg1 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "Templates", reflect.TypeOf((*MockIndex)(nil).Templates), arg0, arg1) -} - -// MockEmbed is a mock of Embed interface -type MockEmbed struct { - ctrl *gomock.Controller - recorder *MockEmbedMockRecorder -} - -// MockEmbedMockRecorder is the mock recorder for MockEmbed -type MockEmbedMockRecorder struct { - mock *MockEmbed -} - -// NewMockEmbed creates a new mock instance -func NewMockEmbed(ctrl *gomock.Controller) *MockEmbed { - mock := &MockEmbed{ctrl: ctrl} - mock.recorder = &MockEmbedMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (_m *MockEmbed) EXPECT() *MockEmbedMockRecorder { - return _m.recorder -} - -// EmbeddedMethod mocks base method -func (_m *MockEmbed) EmbeddedMethod() { - _m.ctrl.Call(_m, "EmbeddedMethod") -} - -// EmbeddedMethod indicates an expected call of EmbeddedMethod -func (_mr *MockEmbedMockRecorder) EmbeddedMethod() *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "EmbeddedMethod", reflect.TypeOf((*MockEmbed)(nil).EmbeddedMethod)) -} - -// ForeignEmbeddedMethod mocks base method -func (_m *MockEmbed) ForeignEmbeddedMethod() *bufio.Reader { - ret := _m.ctrl.Call(_m, "ForeignEmbeddedMethod") - ret0, _ := ret[0].(*bufio.Reader) - return ret0 -} - -// ForeignEmbeddedMethod indicates an expected call of ForeignEmbeddedMethod -func (_mr *MockEmbedMockRecorder) ForeignEmbeddedMethod() *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "ForeignEmbeddedMethod", reflect.TypeOf((*MockEmbed)(nil).ForeignEmbeddedMethod)) -} - -// ImplicitPackage mocks base method -func (_m *MockEmbed) ImplicitPackage(_param0 string, _param1 imp1.ImpT, _param2 []imp1.ImpT, _param3 *imp1.ImpT, _param4 chan imp1.ImpT) { - _m.ctrl.Call(_m, "ImplicitPackage", _param0, _param1, _param2, _param3, _param4) -} - -// ImplicitPackage indicates an expected call of ImplicitPackage -func (_mr *MockEmbedMockRecorder) ImplicitPackage(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "ImplicitPackage", reflect.TypeOf((*MockEmbed)(nil).ImplicitPackage), arg0, arg1, arg2, arg3, arg4) -} - -// RegularMethod mocks base method -func (_m *MockEmbed) RegularMethod() { - _m.ctrl.Call(_m, "RegularMethod") -} - -// RegularMethod indicates an expected call of RegularMethod -func (_mr *MockEmbedMockRecorder) RegularMethod() *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "RegularMethod", reflect.TypeOf((*MockEmbed)(nil).RegularMethod)) -} - -// MockEmbedded is a mock of Embedded interface -type MockEmbedded struct { - ctrl *gomock.Controller - recorder *MockEmbeddedMockRecorder -} - -// MockEmbeddedMockRecorder is the mock recorder for MockEmbedded -type MockEmbeddedMockRecorder struct { - mock *MockEmbedded -} - -// NewMockEmbedded creates a new mock instance -func NewMockEmbedded(ctrl *gomock.Controller) *MockEmbedded { - mock := &MockEmbedded{ctrl: ctrl} - mock.recorder = &MockEmbeddedMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (_m *MockEmbedded) EXPECT() *MockEmbeddedMockRecorder { - return _m.recorder -} - -// EmbeddedMethod mocks base method -func (_m *MockEmbedded) EmbeddedMethod() { - _m.ctrl.Call(_m, "EmbeddedMethod") -} - -// EmbeddedMethod indicates an expected call of EmbeddedMethod -func (_mr *MockEmbeddedMockRecorder) EmbeddedMethod() *gomock.Call { - return _mr.mock.ctrl.RecordCallWithMethodType(_mr.mock, "EmbeddedMethod", reflect.TypeOf((*MockEmbedded)(nil).EmbeddedMethod)) -} diff --git a/vendor/github.com/golang/mock/sample/user.go b/vendor/github.com/golang/mock/sample/user.go deleted file mode 100644 index 0e4a8142..00000000 --- a/vendor/github.com/golang/mock/sample/user.go +++ /dev/null @@ -1,114 +0,0 @@ -//go:generate mockgen -destination mock_user/mock_user.go github.com/golang/mock/sample Index,Embed,Embedded - -// An example package with an interface. -package user - -// Random bunch of imports to test mockgen. -import "io" -import ( - btz "bytes" - "hash" - "log" - "net" - "net/http" - - // Two imports with the same base name. - t1 "html/template" - t2 "text/template" -) - -// Dependencies outside the standard library. -import ( - "github.com/golang/mock/sample/imp1" - renamed2 "github.com/golang/mock/sample/imp2" - . "github.com/golang/mock/sample/imp3" - "github.com/golang/mock/sample/imp4" // calls itself "imp_four" -) - -// A bizarre interface to test corner cases in mockgen. -// This would normally be in its own file or package, -// separate from the user of it (e.g. io.Reader). -type Index interface { - Get(key string) interface{} - GetTwo(key1, key2 string) (v1, v2 interface{}) - Put(key string, value interface{}) - - // Check that imports are handled correctly. - Summary(buf *btz.Buffer, w io.Writer) - Other() hash.Hash - Templates(a t1.CSS, b t2.FuncMap) - - // A method with an anonymous argument. - Anon(string) - - // Methods using foreign types outside the standard library. - ForeignOne(imp1.Imp1) - ForeignTwo(renamed2.Imp2) - ForeignThree(Imp3) - ForeignFour(imp_four.Imp4) - - // A method that returns a nillable type. - NillableRet() error - // A method that returns a non-interface type. - ConcreteRet() chan<- bool - - // Methods with an ellipsis argument. - Ellip(fmt string, args ...interface{}) - EllipOnly(...string) - - // A method with a pointer argument that we will set. - Ptr(arg *int) - - // A method with a slice argument and an array return. - Slice(a []int, b []byte) [3]int - - // A method with channel arguments. - Chan(a chan int, b chan<- hash.Hash) - - // A method with a function argument. - Func(f func(http.Request) (int, bool)) - - // A method with a map argument. - Map(a map[int]hash.Hash) - - // Methods with an unnamed empty struct argument. - Struct(a struct{}) // not so likely - StructChan(a chan struct{}) // a bit more common -} - -// An interface with an embedded interface. -type Embed interface { - RegularMethod() - Embedded - imp1.ForeignEmbedded -} - -type Embedded interface { - EmbeddedMethod() -} - -// some random use of another package that isn't needed by the interface. -var _ net.Addr - -// A function that we will test that uses the above interface. -// It takes a list of keys and values, and puts them in the index. -func Remember(index Index, keys []string, values []interface{}) { - for i, k := range keys { - index.Put(k, values[i]) - } - err := index.NillableRet() - if err != nil { - log.Fatalf("Woah! %v", err) - } - if len(keys) > 0 && keys[0] == "a" { - index.Ellip("%d", 0, 1, 1, 2, 3) - index.Ellip("%d", 1, 3, 6, 10, 15) - index.EllipOnly("arg") - } -} - -func GrabPointer(index Index) int { - var a int - index.Ptr(&a) - return a -} diff --git a/vendor/github.com/golang/mock/sample/user_test.go b/vendor/github.com/golang/mock/sample/user_test.go deleted file mode 100644 index c8c3864a..00000000 --- a/vendor/github.com/golang/mock/sample/user_test.go +++ /dev/null @@ -1,122 +0,0 @@ -// A test that uses a mock. -package user_test - -import ( - "testing" - - "github.com/golang/mock/gomock" - "github.com/golang/mock/sample" - "github.com/golang/mock/sample/imp1" - mock_user "github.com/golang/mock/sample/mock_user" -) - -func TestRemember(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockIndex := mock_user.NewMockIndex(ctrl) - mockIndex.EXPECT().Put("a", 1) // literals work - mockIndex.EXPECT().Put("b", gomock.Eq(2)) // matchers work too - - // NillableRet returns error. Not declaring it should result in a nil return. - mockIndex.EXPECT().NillableRet() - // Calls that returns something assignable to the return type. - boolc := make(chan bool) - // In this case, "chan bool" is assignable to "chan<- bool". - mockIndex.EXPECT().ConcreteRet().Return(boolc) - // In this case, nil is assignable to "chan<- bool". - mockIndex.EXPECT().ConcreteRet().Return(nil) - - // Should be able to place expectations on variadic methods. - mockIndex.EXPECT().Ellip("%d", 0, 1, 1, 2, 3) // direct args - tri := []interface{}{1, 3, 6, 10, 15} - mockIndex.EXPECT().Ellip("%d", tri...) // args from slice - mockIndex.EXPECT().EllipOnly(gomock.Eq("arg")) - - user.Remember(mockIndex, []string{"a", "b"}, []interface{}{1, 2}) - // Check the ConcreteRet calls. - if c := mockIndex.ConcreteRet(); c != boolc { - t.Errorf("ConcreteRet: got %v, want %v", c, boolc) - } - if c := mockIndex.ConcreteRet(); c != nil { - t.Errorf("ConcreteRet: got %v, want nil", c) - } - - // Try one with an action. - calledString := "" - mockIndex.EXPECT().Put(gomock.Any(), gomock.Any()).Do(func(key string, _ interface{}) { - calledString = key - }) - mockIndex.EXPECT().NillableRet() - user.Remember(mockIndex, []string{"blah"}, []interface{}{7}) - if calledString != "blah" { - t.Fatalf(`Uh oh. %q != "blah"`, calledString) - } - - // Use Do with a nil arg. - mockIndex.EXPECT().Put("nil-key", gomock.Any()).Do(func(key string, value interface{}) { - if value != nil { - t.Errorf("Put did not pass through nil; got %v", value) - } - }) - mockIndex.EXPECT().NillableRet() - user.Remember(mockIndex, []string{"nil-key"}, []interface{}{nil}) -} - -func TestVariadicFunction(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockIndex := mock_user.NewMockIndex(ctrl) - m := mockIndex.EXPECT().Ellip("%d", 0, 1, 1, 2, 3) - m.Do(func(format string, nums ...int) { - sum := 0 - for _, value := range nums { - sum += value - } - if sum != 7 { - t.Errorf("Expected 7, got %d", sum) - } - }) - - mockIndex.Ellip("%d", 0, 1, 1, 2, 3) -} - -func TestGrabPointer(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockIndex := mock_user.NewMockIndex(ctrl) - mockIndex.EXPECT().Ptr(gomock.Any()).SetArg(0, 7) // set first argument to 7 - - i := user.GrabPointer(mockIndex) - if i != 7 { - t.Errorf("Expected 7, got %d", i) - } -} - -func TestEmbeddedInterface(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockEmbed := mock_user.NewMockEmbed(ctrl) - mockEmbed.EXPECT().RegularMethod() - mockEmbed.EXPECT().EmbeddedMethod() - mockEmbed.EXPECT().ForeignEmbeddedMethod() - - mockEmbed.RegularMethod() - mockEmbed.EmbeddedMethod() - var emb imp1.ForeignEmbedded = mockEmbed // also does interface check - emb.ForeignEmbeddedMethod() -} - -func TestExpectTrueNil(t *testing.T) { - // Make sure that passing "nil" to EXPECT (thus as a nil interface value), - // will correctly match a nil concrete type. - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockIndex := mock_user.NewMockIndex(ctrl) - mockIndex.EXPECT().Ptr(nil) // this nil is a nil interface{} - mockIndex.Ptr(nil) // this nil is a nil *int -} diff --git a/vendor/github.com/golang/protobuf/.gitignore b/vendor/github.com/golang/protobuf/.gitignore deleted file mode 100644 index 8f5b596b..00000000 --- a/vendor/github.com/golang/protobuf/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -.DS_Store -*.[568ao] -*.ao -*.so -*.pyc -._* -.nfs.* -[568a].out -*~ -*.orig -core -_obj -_test -_testmain.go -protoc-gen-go/testdata/multi/*.pb.go -_conformance/_conformance diff --git a/vendor/github.com/golang/protobuf/.travis.yml b/vendor/github.com/golang/protobuf/.travis.yml deleted file mode 100644 index 93c67805..00000000 --- a/vendor/github.com/golang/protobuf/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -sudo: false -language: go -go: -- 1.6.x -- 1.7.x -- 1.8.x -- 1.9.x - -install: - - go get -v -d -t github.com/golang/protobuf/... - - curl -L https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip -o /tmp/protoc.zip - - unzip /tmp/protoc.zip -d $HOME/protoc - -env: - - PATH=$HOME/protoc/bin:$PATH - -script: - - make all test diff --git a/vendor/github.com/golang/protobuf/Make.protobuf b/vendor/github.com/golang/protobuf/Make.protobuf deleted file mode 100644 index 15071de1..00000000 --- a/vendor/github.com/golang/protobuf/Make.protobuf +++ /dev/null @@ -1,40 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Includable Makefile to add a rule for generating .pb.go files from .proto files -# (Google protocol buffer descriptions). -# Typical use if myproto.proto is a file in package mypackage in this directory: -# -# include $(GOROOT)/src/pkg/github.com/golang/protobuf/Make.protobuf - -%.pb.go: %.proto - protoc --go_out=. $< - diff --git a/vendor/github.com/golang/protobuf/Makefile b/vendor/github.com/golang/protobuf/Makefile deleted file mode 100644 index a1421d8b..00000000 --- a/vendor/github.com/golang/protobuf/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -all: install - -install: - go install ./proto ./jsonpb ./ptypes - go install ./protoc-gen-go - -test: - go test ./proto ./jsonpb ./ptypes - make -C protoc-gen-go/testdata test - -clean: - go clean ./... - -nuke: - go clean -i ./... - -regenerate: - make -C protoc-gen-go/descriptor regenerate - make -C protoc-gen-go/plugin regenerate - make -C protoc-gen-go/testdata regenerate - make -C proto/testdata regenerate - make -C jsonpb/jsonpb_test_proto regenerate - make -C _conformance regenerate diff --git a/vendor/github.com/golang/protobuf/README.md b/vendor/github.com/golang/protobuf/README.md deleted file mode 100644 index 9c4c815c..00000000 --- a/vendor/github.com/golang/protobuf/README.md +++ /dev/null @@ -1,244 +0,0 @@ -# Go support for Protocol Buffers - -[![Build Status](https://travis-ci.org/golang/protobuf.svg?branch=master)](https://travis-ci.org/golang/protobuf) -[![GoDoc](https://godoc.org/github.com/golang/protobuf?status.svg)](https://godoc.org/github.com/golang/protobuf) - -Google's data interchange format. -Copyright 2010 The Go Authors. -https://github.com/golang/protobuf - -This package and the code it generates requires at least Go 1.4. - -This software implements Go bindings for protocol buffers. For -information about protocol buffers themselves, see - https://developers.google.com/protocol-buffers/ - -## Installation ## - -To use this software, you must: -- Install the standard C++ implementation of protocol buffers from - https://developers.google.com/protocol-buffers/ -- Of course, install the Go compiler and tools from - https://golang.org/ - See - https://golang.org/doc/install - for details or, if you are using gccgo, follow the instructions at - https://golang.org/doc/install/gccgo -- Grab the code from the repository and install the proto package. - The simplest way is to run `go get -u github.com/golang/protobuf/protoc-gen-go`. - The compiler plugin, protoc-gen-go, will be installed in $GOBIN, - defaulting to $GOPATH/bin. It must be in your $PATH for the protocol - compiler, protoc, to find it. - -This software has two parts: a 'protocol compiler plugin' that -generates Go source files that, once compiled, can access and manage -protocol buffers; and a library that implements run-time support for -encoding (marshaling), decoding (unmarshaling), and accessing protocol -buffers. - -There is support for gRPC in Go using protocol buffers. -See the note at the bottom of this file for details. - -There are no insertion points in the plugin. - - -## Using protocol buffers with Go ## - -Once the software is installed, there are two steps to using it. -First you must compile the protocol buffer definitions and then import -them, with the support library, into your program. - -To compile the protocol buffer definition, run protoc with the --go_out -parameter set to the directory you want to output the Go code to. - - protoc --go_out=. *.proto - -The generated files will be suffixed .pb.go. See the Test code below -for an example using such a file. - - -The package comment for the proto library contains text describing -the interface provided in Go for protocol buffers. Here is an edited -version. - -========== - -The proto package converts data structures to and from the -wire format of protocol buffers. It works in concert with the -Go source code generated for .proto files by the protocol compiler. - -A summary of the properties of the protocol buffer interface -for a protocol buffer variable v: - - - Names are turned from camel_case to CamelCase for export. - - There are no methods on v to set fields; just treat - them as structure fields. - - There are getters that return a field's value if set, - and return the field's default value if unset. - The getters work even if the receiver is a nil message. - - The zero value for a struct is its correct initialization state. - All desired fields must be set before marshaling. - - A Reset() method will restore a protobuf struct to its zero state. - - Non-repeated fields are pointers to the values; nil means unset. - That is, optional or required field int32 f becomes F *int32. - - Repeated fields are slices. - - Helper functions are available to aid the setting of fields. - Helpers for getting values are superseded by the - GetFoo methods and their use is deprecated. - msg.Foo = proto.String("hello") // set field - - Constants are defined to hold the default values of all fields that - have them. They have the form Default_StructName_FieldName. - Because the getter methods handle defaulted values, - direct use of these constants should be rare. - - Enums are given type names and maps from names to values. - Enum values are prefixed with the enum's type name. Enum types have - a String method, and a Enum method to assist in message construction. - - Nested groups and enums have type names prefixed with the name of - the surrounding message type. - - Extensions are given descriptor names that start with E_, - followed by an underscore-delimited list of the nested messages - that contain it (if any) followed by the CamelCased name of the - extension field itself. HasExtension, ClearExtension, GetExtension - and SetExtension are functions for manipulating extensions. - - Oneof field sets are given a single field in their message, - with distinguished wrapper types for each possible field value. - - Marshal and Unmarshal are functions to encode and decode the wire format. - -When the .proto file specifies `syntax="proto3"`, there are some differences: - - - Non-repeated fields of non-message type are values instead of pointers. - - Enum types do not get an Enum method. - -Consider file test.proto, containing - -```proto - syntax = "proto2"; - package example; - - enum FOO { X = 17; }; - - message Test { - required string label = 1; - optional int32 type = 2 [default=77]; - repeated int64 reps = 3; - optional group OptionalGroup = 4 { - required string RequiredField = 5; - } - } -``` - -To create and play with a Test object from the example package, - -```go - package main - - import ( - "log" - - "github.com/golang/protobuf/proto" - "path/to/example" - ) - - func main() { - test := &example.Test { - Label: proto.String("hello"), - Type: proto.Int32(17), - Reps: []int64{1, 2, 3}, - Optionalgroup: &example.Test_OptionalGroup { - RequiredField: proto.String("good bye"), - }, - } - data, err := proto.Marshal(test) - if err != nil { - log.Fatal("marshaling error: ", err) - } - newTest := &example.Test{} - err = proto.Unmarshal(data, newTest) - if err != nil { - log.Fatal("unmarshaling error: ", err) - } - // Now test and newTest contain the same data. - if test.GetLabel() != newTest.GetLabel() { - log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel()) - } - // etc. - } -``` - -## Parameters ## - -To pass extra parameters to the plugin, use a comma-separated -parameter list separated from the output directory by a colon: - - - protoc --go_out=plugins=grpc,import_path=mypackage:. *.proto - - -- `import_prefix=xxx` - a prefix that is added onto the beginning of - all imports. Useful for things like generating protos in a - subdirectory, or regenerating vendored protobufs in-place. -- `import_path=foo/bar` - used as the package if no input files - declare `go_package`. If it contains slashes, everything up to the - rightmost slash is ignored. -- `plugins=plugin1+plugin2` - specifies the list of sub-plugins to - load. The only plugin in this repo is `grpc`. -- `Mfoo/bar.proto=quux/shme` - declares that foo/bar.proto is - associated with Go package quux/shme. This is subject to the - import_prefix parameter. - -## gRPC Support ## - -If a proto file specifies RPC services, protoc-gen-go can be instructed to -generate code compatible with gRPC (http://www.grpc.io/). To do this, pass -the `plugins` parameter to protoc-gen-go; the usual way is to insert it into -the --go_out argument to protoc: - - protoc --go_out=plugins=grpc:. *.proto - -## Compatibility ## - -The library and the generated code are expected to be stable over time. -However, we reserve the right to make breaking changes without notice for the -following reasons: - -- Security. A security issue in the specification or implementation may come to - light whose resolution requires breaking compatibility. We reserve the right - to address such security issues. -- Unspecified behavior. There are some aspects of the Protocol Buffers - specification that are undefined. Programs that depend on such unspecified - behavior may break in future releases. -- Specification errors or changes. If it becomes necessary to address an - inconsistency, incompleteness, or change in the Protocol Buffers - specification, resolving the issue could affect the meaning or legality of - existing programs. We reserve the right to address such issues, including - updating the implementations. -- Bugs. If the library has a bug that violates the specification, a program - that depends on the buggy behavior may break if the bug is fixed. We reserve - the right to fix such bugs. -- Adding methods or fields to generated structs. These may conflict with field - names that already exist in a schema, causing applications to break. When the - code generator encounters a field in the schema that would collide with a - generated field or method name, the code generator will append an underscore - to the generated field or method name. -- Adding, removing, or changing methods or fields in generated structs that - start with `XXX`. These parts of the generated code are exported out of - necessity, but should not be considered part of the public API. -- Adding, removing, or changing unexported symbols in generated code. - -Any breaking changes outside of these will be announced 6 months in advance to -protobuf@googlegroups.com. - -You should, whenever possible, use generated code created by the `protoc-gen-go` -tool built at the same commit as the `proto` package. The `proto` package -declares package-level constants in the form `ProtoPackageIsVersionX`. -Application code and generated code may depend on one of these constants to -ensure that compilation will fail if the available version of the proto library -is too old. Whenever we make a change to the generated code that requires newer -library support, in the same commit we will increment the version number of the -generated code and declare a new package-level constant whose name incorporates -the latest version number. Removing a compatibility constant is considered a -breaking change and would be subject to the announcement policy stated above. - -The `protoc-gen-go/generator` package exposes a plugin interface, -which is used by the gRPC code generation. This interface is not -supported and is subject to incompatible changes without notice. diff --git a/vendor/github.com/golang/protobuf/_conformance/Makefile b/vendor/github.com/golang/protobuf/_conformance/Makefile deleted file mode 100644 index 89800e2d..00000000 --- a/vendor/github.com/golang/protobuf/_conformance/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2016 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -regenerate: - protoc --go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any,Mgoogle/protobuf/duration.proto=github.com/golang/protobuf/ptypes/duration,Mgoogle/protobuf/struct.proto=github.com/golang/protobuf/ptypes/struct,Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp,Mgoogle/protobuf/wrappers.proto=github.com/golang/protobuf/ptypes/wrappers,Mgoogle/protobuf/field_mask.proto=google.golang.org/genproto/protobuf:. conformance_proto/conformance.proto diff --git a/vendor/github.com/golang/protobuf/_conformance/conformance.go b/vendor/github.com/golang/protobuf/_conformance/conformance.go deleted file mode 100644 index c54212c8..00000000 --- a/vendor/github.com/golang/protobuf/_conformance/conformance.go +++ /dev/null @@ -1,161 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// conformance implements the conformance test subprocess protocol as -// documented in conformance.proto. -package main - -import ( - "encoding/binary" - "fmt" - "io" - "os" - - pb "github.com/golang/protobuf/_conformance/conformance_proto" - "github.com/golang/protobuf/jsonpb" - "github.com/golang/protobuf/proto" -) - -func main() { - var sizeBuf [4]byte - inbuf := make([]byte, 0, 4096) - outbuf := proto.NewBuffer(nil) - for { - if _, err := io.ReadFull(os.Stdin, sizeBuf[:]); err == io.EOF { - break - } else if err != nil { - fmt.Fprintln(os.Stderr, "go conformance: read request:", err) - os.Exit(1) - } - size := binary.LittleEndian.Uint32(sizeBuf[:]) - if int(size) > cap(inbuf) { - inbuf = make([]byte, size) - } - inbuf = inbuf[:size] - if _, err := io.ReadFull(os.Stdin, inbuf); err != nil { - fmt.Fprintln(os.Stderr, "go conformance: read request:", err) - os.Exit(1) - } - - req := new(pb.ConformanceRequest) - if err := proto.Unmarshal(inbuf, req); err != nil { - fmt.Fprintln(os.Stderr, "go conformance: parse request:", err) - os.Exit(1) - } - res := handle(req) - - if err := outbuf.Marshal(res); err != nil { - fmt.Fprintln(os.Stderr, "go conformance: marshal response:", err) - os.Exit(1) - } - binary.LittleEndian.PutUint32(sizeBuf[:], uint32(len(outbuf.Bytes()))) - if _, err := os.Stdout.Write(sizeBuf[:]); err != nil { - fmt.Fprintln(os.Stderr, "go conformance: write response:", err) - os.Exit(1) - } - if _, err := os.Stdout.Write(outbuf.Bytes()); err != nil { - fmt.Fprintln(os.Stderr, "go conformance: write response:", err) - os.Exit(1) - } - outbuf.Reset() - } -} - -var jsonMarshaler = jsonpb.Marshaler{ - OrigName: true, -} - -func handle(req *pb.ConformanceRequest) *pb.ConformanceResponse { - var err error - var msg pb.TestAllTypes - switch p := req.Payload.(type) { - case *pb.ConformanceRequest_ProtobufPayload: - err = proto.Unmarshal(p.ProtobufPayload, &msg) - case *pb.ConformanceRequest_JsonPayload: - err = jsonpb.UnmarshalString(p.JsonPayload, &msg) - if err != nil && err.Error() == "unmarshaling Any not supported yet" { - return &pb.ConformanceResponse{ - Result: &pb.ConformanceResponse_Skipped{ - Skipped: err.Error(), - }, - } - } - default: - return &pb.ConformanceResponse{ - Result: &pb.ConformanceResponse_RuntimeError{ - RuntimeError: "unknown request payload type", - }, - } - } - if err != nil { - return &pb.ConformanceResponse{ - Result: &pb.ConformanceResponse_ParseError{ - ParseError: err.Error(), - }, - } - } - switch req.RequestedOutputFormat { - case pb.WireFormat_PROTOBUF: - p, err := proto.Marshal(&msg) - if err != nil { - return &pb.ConformanceResponse{ - Result: &pb.ConformanceResponse_SerializeError{ - SerializeError: err.Error(), - }, - } - } - return &pb.ConformanceResponse{ - Result: &pb.ConformanceResponse_ProtobufPayload{ - ProtobufPayload: p, - }, - } - case pb.WireFormat_JSON: - p, err := jsonMarshaler.MarshalToString(&msg) - if err != nil { - return &pb.ConformanceResponse{ - Result: &pb.ConformanceResponse_SerializeError{ - SerializeError: err.Error(), - }, - } - } - return &pb.ConformanceResponse{ - Result: &pb.ConformanceResponse_JsonPayload{ - JsonPayload: p, - }, - } - default: - return &pb.ConformanceResponse{ - Result: &pb.ConformanceResponse_RuntimeError{ - RuntimeError: "unknown output format", - }, - } - } -} diff --git a/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go b/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go deleted file mode 100644 index ec354ead..00000000 --- a/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.pb.go +++ /dev/null @@ -1,1885 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: conformance_proto/conformance.proto - -/* -Package conformance is a generated protocol buffer package. - -It is generated from these files: - conformance_proto/conformance.proto - -It has these top-level messages: - ConformanceRequest - ConformanceResponse - TestAllTypes - ForeignMessage -*/ -package conformance - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/any" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "google.golang.org/genproto/protobuf" -import google_protobuf3 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_protobuf5 "github.com/golang/protobuf/ptypes/wrappers" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type WireFormat int32 - -const ( - WireFormat_UNSPECIFIED WireFormat = 0 - WireFormat_PROTOBUF WireFormat = 1 - WireFormat_JSON WireFormat = 2 -) - -var WireFormat_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "PROTOBUF", - 2: "JSON", -} -var WireFormat_value = map[string]int32{ - "UNSPECIFIED": 0, - "PROTOBUF": 1, - "JSON": 2, -} - -func (x WireFormat) String() string { - return proto.EnumName(WireFormat_name, int32(x)) -} -func (WireFormat) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type ForeignEnum int32 - -const ( - ForeignEnum_FOREIGN_FOO ForeignEnum = 0 - ForeignEnum_FOREIGN_BAR ForeignEnum = 1 - ForeignEnum_FOREIGN_BAZ ForeignEnum = 2 -) - -var ForeignEnum_name = map[int32]string{ - 0: "FOREIGN_FOO", - 1: "FOREIGN_BAR", - 2: "FOREIGN_BAZ", -} -var ForeignEnum_value = map[string]int32{ - "FOREIGN_FOO": 0, - "FOREIGN_BAR": 1, - "FOREIGN_BAZ": 2, -} - -func (x ForeignEnum) String() string { - return proto.EnumName(ForeignEnum_name, int32(x)) -} -func (ForeignEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type TestAllTypes_NestedEnum int32 - -const ( - TestAllTypes_FOO TestAllTypes_NestedEnum = 0 - TestAllTypes_BAR TestAllTypes_NestedEnum = 1 - TestAllTypes_BAZ TestAllTypes_NestedEnum = 2 - TestAllTypes_NEG TestAllTypes_NestedEnum = -1 -) - -var TestAllTypes_NestedEnum_name = map[int32]string{ - 0: "FOO", - 1: "BAR", - 2: "BAZ", - -1: "NEG", -} -var TestAllTypes_NestedEnum_value = map[string]int32{ - "FOO": 0, - "BAR": 1, - "BAZ": 2, - "NEG": -1, -} - -func (x TestAllTypes_NestedEnum) String() string { - return proto.EnumName(TestAllTypes_NestedEnum_name, int32(x)) -} -func (TestAllTypes_NestedEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// Represents a single test case's input. The testee should: -// -// 1. parse this proto (which should always succeed) -// 2. parse the protobuf or JSON payload in "payload" (which may fail) -// 3. if the parse succeeded, serialize the message in the requested format. -type ConformanceRequest struct { - // The payload (whether protobuf of JSON) is always for a TestAllTypes proto - // (see below). - // - // Types that are valid to be assigned to Payload: - // *ConformanceRequest_ProtobufPayload - // *ConformanceRequest_JsonPayload - Payload isConformanceRequest_Payload `protobuf_oneof:"payload"` - // Which format should the testee serialize its message to? - RequestedOutputFormat WireFormat `protobuf:"varint,3,opt,name=requested_output_format,json=requestedOutputFormat,enum=conformance.WireFormat" json:"requested_output_format,omitempty"` -} - -func (m *ConformanceRequest) Reset() { *m = ConformanceRequest{} } -func (m *ConformanceRequest) String() string { return proto.CompactTextString(m) } -func (*ConformanceRequest) ProtoMessage() {} -func (*ConformanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isConformanceRequest_Payload interface { - isConformanceRequest_Payload() -} - -type ConformanceRequest_ProtobufPayload struct { - ProtobufPayload []byte `protobuf:"bytes,1,opt,name=protobuf_payload,json=protobufPayload,proto3,oneof"` -} -type ConformanceRequest_JsonPayload struct { - JsonPayload string `protobuf:"bytes,2,opt,name=json_payload,json=jsonPayload,oneof"` -} - -func (*ConformanceRequest_ProtobufPayload) isConformanceRequest_Payload() {} -func (*ConformanceRequest_JsonPayload) isConformanceRequest_Payload() {} - -func (m *ConformanceRequest) GetPayload() isConformanceRequest_Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *ConformanceRequest) GetProtobufPayload() []byte { - if x, ok := m.GetPayload().(*ConformanceRequest_ProtobufPayload); ok { - return x.ProtobufPayload - } - return nil -} - -func (m *ConformanceRequest) GetJsonPayload() string { - if x, ok := m.GetPayload().(*ConformanceRequest_JsonPayload); ok { - return x.JsonPayload - } - return "" -} - -func (m *ConformanceRequest) GetRequestedOutputFormat() WireFormat { - if m != nil { - return m.RequestedOutputFormat - } - return WireFormat_UNSPECIFIED -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ConformanceRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ConformanceRequest_OneofMarshaler, _ConformanceRequest_OneofUnmarshaler, _ConformanceRequest_OneofSizer, []interface{}{ - (*ConformanceRequest_ProtobufPayload)(nil), - (*ConformanceRequest_JsonPayload)(nil), - } -} - -func _ConformanceRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ConformanceRequest) - // payload - switch x := m.Payload.(type) { - case *ConformanceRequest_ProtobufPayload: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.ProtobufPayload) - case *ConformanceRequest_JsonPayload: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.JsonPayload) - case nil: - default: - return fmt.Errorf("ConformanceRequest.Payload has unexpected type %T", x) - } - return nil -} - -func _ConformanceRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ConformanceRequest) - switch tag { - case 1: // payload.protobuf_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Payload = &ConformanceRequest_ProtobufPayload{x} - return true, err - case 2: // payload.json_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Payload = &ConformanceRequest_JsonPayload{x} - return true, err - default: - return false, nil - } -} - -func _ConformanceRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ConformanceRequest) - // payload - switch x := m.Payload.(type) { - case *ConformanceRequest_ProtobufPayload: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ProtobufPayload))) - n += len(x.ProtobufPayload) - case *ConformanceRequest_JsonPayload: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.JsonPayload))) - n += len(x.JsonPayload) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents a single test case's output. -type ConformanceResponse struct { - // Types that are valid to be assigned to Result: - // *ConformanceResponse_ParseError - // *ConformanceResponse_SerializeError - // *ConformanceResponse_RuntimeError - // *ConformanceResponse_ProtobufPayload - // *ConformanceResponse_JsonPayload - // *ConformanceResponse_Skipped - Result isConformanceResponse_Result `protobuf_oneof:"result"` -} - -func (m *ConformanceResponse) Reset() { *m = ConformanceResponse{} } -func (m *ConformanceResponse) String() string { return proto.CompactTextString(m) } -func (*ConformanceResponse) ProtoMessage() {} -func (*ConformanceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type isConformanceResponse_Result interface { - isConformanceResponse_Result() -} - -type ConformanceResponse_ParseError struct { - ParseError string `protobuf:"bytes,1,opt,name=parse_error,json=parseError,oneof"` -} -type ConformanceResponse_SerializeError struct { - SerializeError string `protobuf:"bytes,6,opt,name=serialize_error,json=serializeError,oneof"` -} -type ConformanceResponse_RuntimeError struct { - RuntimeError string `protobuf:"bytes,2,opt,name=runtime_error,json=runtimeError,oneof"` -} -type ConformanceResponse_ProtobufPayload struct { - ProtobufPayload []byte `protobuf:"bytes,3,opt,name=protobuf_payload,json=protobufPayload,proto3,oneof"` -} -type ConformanceResponse_JsonPayload struct { - JsonPayload string `protobuf:"bytes,4,opt,name=json_payload,json=jsonPayload,oneof"` -} -type ConformanceResponse_Skipped struct { - Skipped string `protobuf:"bytes,5,opt,name=skipped,oneof"` -} - -func (*ConformanceResponse_ParseError) isConformanceResponse_Result() {} -func (*ConformanceResponse_SerializeError) isConformanceResponse_Result() {} -func (*ConformanceResponse_RuntimeError) isConformanceResponse_Result() {} -func (*ConformanceResponse_ProtobufPayload) isConformanceResponse_Result() {} -func (*ConformanceResponse_JsonPayload) isConformanceResponse_Result() {} -func (*ConformanceResponse_Skipped) isConformanceResponse_Result() {} - -func (m *ConformanceResponse) GetResult() isConformanceResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (m *ConformanceResponse) GetParseError() string { - if x, ok := m.GetResult().(*ConformanceResponse_ParseError); ok { - return x.ParseError - } - return "" -} - -func (m *ConformanceResponse) GetSerializeError() string { - if x, ok := m.GetResult().(*ConformanceResponse_SerializeError); ok { - return x.SerializeError - } - return "" -} - -func (m *ConformanceResponse) GetRuntimeError() string { - if x, ok := m.GetResult().(*ConformanceResponse_RuntimeError); ok { - return x.RuntimeError - } - return "" -} - -func (m *ConformanceResponse) GetProtobufPayload() []byte { - if x, ok := m.GetResult().(*ConformanceResponse_ProtobufPayload); ok { - return x.ProtobufPayload - } - return nil -} - -func (m *ConformanceResponse) GetJsonPayload() string { - if x, ok := m.GetResult().(*ConformanceResponse_JsonPayload); ok { - return x.JsonPayload - } - return "" -} - -func (m *ConformanceResponse) GetSkipped() string { - if x, ok := m.GetResult().(*ConformanceResponse_Skipped); ok { - return x.Skipped - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ConformanceResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ConformanceResponse_OneofMarshaler, _ConformanceResponse_OneofUnmarshaler, _ConformanceResponse_OneofSizer, []interface{}{ - (*ConformanceResponse_ParseError)(nil), - (*ConformanceResponse_SerializeError)(nil), - (*ConformanceResponse_RuntimeError)(nil), - (*ConformanceResponse_ProtobufPayload)(nil), - (*ConformanceResponse_JsonPayload)(nil), - (*ConformanceResponse_Skipped)(nil), - } -} - -func _ConformanceResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ConformanceResponse) - // result - switch x := m.Result.(type) { - case *ConformanceResponse_ParseError: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ParseError) - case *ConformanceResponse_SerializeError: - b.EncodeVarint(6<<3 | proto.WireBytes) - b.EncodeStringBytes(x.SerializeError) - case *ConformanceResponse_RuntimeError: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.RuntimeError) - case *ConformanceResponse_ProtobufPayload: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.ProtobufPayload) - case *ConformanceResponse_JsonPayload: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.JsonPayload) - case *ConformanceResponse_Skipped: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Skipped) - case nil: - default: - return fmt.Errorf("ConformanceResponse.Result has unexpected type %T", x) - } - return nil -} - -func _ConformanceResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ConformanceResponse) - switch tag { - case 1: // result.parse_error - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Result = &ConformanceResponse_ParseError{x} - return true, err - case 6: // result.serialize_error - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Result = &ConformanceResponse_SerializeError{x} - return true, err - case 2: // result.runtime_error - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Result = &ConformanceResponse_RuntimeError{x} - return true, err - case 3: // result.protobuf_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Result = &ConformanceResponse_ProtobufPayload{x} - return true, err - case 4: // result.json_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Result = &ConformanceResponse_JsonPayload{x} - return true, err - case 5: // result.skipped - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Result = &ConformanceResponse_Skipped{x} - return true, err - default: - return false, nil - } -} - -func _ConformanceResponse_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ConformanceResponse) - // result - switch x := m.Result.(type) { - case *ConformanceResponse_ParseError: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ParseError))) - n += len(x.ParseError) - case *ConformanceResponse_SerializeError: - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.SerializeError))) - n += len(x.SerializeError) - case *ConformanceResponse_RuntimeError: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RuntimeError))) - n += len(x.RuntimeError) - case *ConformanceResponse_ProtobufPayload: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ProtobufPayload))) - n += len(x.ProtobufPayload) - case *ConformanceResponse_JsonPayload: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.JsonPayload))) - n += len(x.JsonPayload) - case *ConformanceResponse_Skipped: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Skipped))) - n += len(x.Skipped) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// This proto includes every type of field in both singular and repeated -// forms. -type TestAllTypes struct { - // Singular - OptionalInt32 int32 `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"` - OptionalInt64 int64 `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"` - OptionalUint32 uint32 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"` - OptionalUint64 uint64 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"` - OptionalSint32 int32 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"` - OptionalSint64 int64 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"` - OptionalFixed32 uint32 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"` - OptionalFixed64 uint64 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"` - OptionalSfixed32 int32 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"` - OptionalSfixed64 int64 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"` - OptionalFloat float32 `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"` - OptionalDouble float64 `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"` - OptionalBool bool `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"` - OptionalString string `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"` - OptionalBytes []byte `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"` - OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"` - OptionalForeignMessage *ForeignMessage `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"` - OptionalNestedEnum TestAllTypes_NestedEnum `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=conformance.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"` - OptionalForeignEnum ForeignEnum `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=conformance.ForeignEnum" json:"optional_foreign_enum,omitempty"` - OptionalStringPiece string `protobuf:"bytes,24,opt,name=optional_string_piece,json=optionalStringPiece" json:"optional_string_piece,omitempty"` - OptionalCord string `protobuf:"bytes,25,opt,name=optional_cord,json=optionalCord" json:"optional_cord,omitempty"` - RecursiveMessage *TestAllTypes `protobuf:"bytes,27,opt,name=recursive_message,json=recursiveMessage" json:"recursive_message,omitempty"` - // Repeated - RepeatedInt32 []int32 `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"` - RepeatedInt64 []int64 `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"` - RepeatedUint32 []uint32 `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"` - RepeatedUint64 []uint64 `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"` - RepeatedSint32 []int32 `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"` - RepeatedSint64 []int64 `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"` - RepeatedFixed32 []uint32 `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"` - RepeatedFixed64 []uint64 `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"` - RepeatedSfixed32 []int32 `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"` - RepeatedSfixed64 []int64 `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"` - RepeatedFloat []float32 `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"` - RepeatedDouble []float64 `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"` - RepeatedBool []bool `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"` - RepeatedString []string `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"` - RepeatedBytes [][]byte `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"` - RepeatedNestedMessage []*TestAllTypes_NestedMessage `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"` - RepeatedForeignMessage []*ForeignMessage `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"` - RepeatedNestedEnum []TestAllTypes_NestedEnum `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=conformance.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"` - RepeatedForeignEnum []ForeignEnum `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=conformance.ForeignEnum" json:"repeated_foreign_enum,omitempty"` - RepeatedStringPiece []string `protobuf:"bytes,54,rep,name=repeated_string_piece,json=repeatedStringPiece" json:"repeated_string_piece,omitempty"` - RepeatedCord []string `protobuf:"bytes,55,rep,name=repeated_cord,json=repeatedCord" json:"repeated_cord,omitempty"` - // Map - MapInt32Int32 map[int32]int32 `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - MapInt64Int64 map[int64]int64 `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - MapUint32Uint32 map[uint32]uint32 `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - MapUint64Uint64 map[uint64]uint64 `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - MapSint32Sint32 map[int32]int32 `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"` - MapSint64Sint64 map[int64]int64 `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"` - MapFixed32Fixed32 map[uint32]uint32 `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"` - MapFixed64Fixed64 map[uint64]uint64 `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` - MapSfixed32Sfixed32 map[int32]int32 `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"` - MapSfixed64Sfixed64 map[int64]int64 `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` - MapInt32Float map[int32]float32 `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"` - MapInt32Double map[int32]float64 `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` - MapBoolBool map[bool]bool `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - MapStringString map[string]string `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - MapStringBytes map[string][]byte `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"` - MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - MapStringForeignMessage map[string]*ForeignMessage `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - MapStringNestedEnum map[string]TestAllTypes_NestedEnum `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=conformance.TestAllTypes_NestedEnum"` - MapStringForeignEnum map[string]ForeignEnum `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=conformance.ForeignEnum"` - // Types that are valid to be assigned to OneofField: - // *TestAllTypes_OneofUint32 - // *TestAllTypes_OneofNestedMessage - // *TestAllTypes_OneofString - // *TestAllTypes_OneofBytes - // *TestAllTypes_OneofBool - // *TestAllTypes_OneofUint64 - // *TestAllTypes_OneofFloat - // *TestAllTypes_OneofDouble - // *TestAllTypes_OneofEnum - OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"` - // Well-known types - OptionalBoolWrapper *google_protobuf5.BoolValue `protobuf:"bytes,201,opt,name=optional_bool_wrapper,json=optionalBoolWrapper" json:"optional_bool_wrapper,omitempty"` - OptionalInt32Wrapper *google_protobuf5.Int32Value `protobuf:"bytes,202,opt,name=optional_int32_wrapper,json=optionalInt32Wrapper" json:"optional_int32_wrapper,omitempty"` - OptionalInt64Wrapper *google_protobuf5.Int64Value `protobuf:"bytes,203,opt,name=optional_int64_wrapper,json=optionalInt64Wrapper" json:"optional_int64_wrapper,omitempty"` - OptionalUint32Wrapper *google_protobuf5.UInt32Value `protobuf:"bytes,204,opt,name=optional_uint32_wrapper,json=optionalUint32Wrapper" json:"optional_uint32_wrapper,omitempty"` - OptionalUint64Wrapper *google_protobuf5.UInt64Value `protobuf:"bytes,205,opt,name=optional_uint64_wrapper,json=optionalUint64Wrapper" json:"optional_uint64_wrapper,omitempty"` - OptionalFloatWrapper *google_protobuf5.FloatValue `protobuf:"bytes,206,opt,name=optional_float_wrapper,json=optionalFloatWrapper" json:"optional_float_wrapper,omitempty"` - OptionalDoubleWrapper *google_protobuf5.DoubleValue `protobuf:"bytes,207,opt,name=optional_double_wrapper,json=optionalDoubleWrapper" json:"optional_double_wrapper,omitempty"` - OptionalStringWrapper *google_protobuf5.StringValue `protobuf:"bytes,208,opt,name=optional_string_wrapper,json=optionalStringWrapper" json:"optional_string_wrapper,omitempty"` - OptionalBytesWrapper *google_protobuf5.BytesValue `protobuf:"bytes,209,opt,name=optional_bytes_wrapper,json=optionalBytesWrapper" json:"optional_bytes_wrapper,omitempty"` - RepeatedBoolWrapper []*google_protobuf5.BoolValue `protobuf:"bytes,211,rep,name=repeated_bool_wrapper,json=repeatedBoolWrapper" json:"repeated_bool_wrapper,omitempty"` - RepeatedInt32Wrapper []*google_protobuf5.Int32Value `protobuf:"bytes,212,rep,name=repeated_int32_wrapper,json=repeatedInt32Wrapper" json:"repeated_int32_wrapper,omitempty"` - RepeatedInt64Wrapper []*google_protobuf5.Int64Value `protobuf:"bytes,213,rep,name=repeated_int64_wrapper,json=repeatedInt64Wrapper" json:"repeated_int64_wrapper,omitempty"` - RepeatedUint32Wrapper []*google_protobuf5.UInt32Value `protobuf:"bytes,214,rep,name=repeated_uint32_wrapper,json=repeatedUint32Wrapper" json:"repeated_uint32_wrapper,omitempty"` - RepeatedUint64Wrapper []*google_protobuf5.UInt64Value `protobuf:"bytes,215,rep,name=repeated_uint64_wrapper,json=repeatedUint64Wrapper" json:"repeated_uint64_wrapper,omitempty"` - RepeatedFloatWrapper []*google_protobuf5.FloatValue `protobuf:"bytes,216,rep,name=repeated_float_wrapper,json=repeatedFloatWrapper" json:"repeated_float_wrapper,omitempty"` - RepeatedDoubleWrapper []*google_protobuf5.DoubleValue `protobuf:"bytes,217,rep,name=repeated_double_wrapper,json=repeatedDoubleWrapper" json:"repeated_double_wrapper,omitempty"` - RepeatedStringWrapper []*google_protobuf5.StringValue `protobuf:"bytes,218,rep,name=repeated_string_wrapper,json=repeatedStringWrapper" json:"repeated_string_wrapper,omitempty"` - RepeatedBytesWrapper []*google_protobuf5.BytesValue `protobuf:"bytes,219,rep,name=repeated_bytes_wrapper,json=repeatedBytesWrapper" json:"repeated_bytes_wrapper,omitempty"` - OptionalDuration *google_protobuf1.Duration `protobuf:"bytes,301,opt,name=optional_duration,json=optionalDuration" json:"optional_duration,omitempty"` - OptionalTimestamp *google_protobuf4.Timestamp `protobuf:"bytes,302,opt,name=optional_timestamp,json=optionalTimestamp" json:"optional_timestamp,omitempty"` - OptionalFieldMask *google_protobuf2.FieldMask `protobuf:"bytes,303,opt,name=optional_field_mask,json=optionalFieldMask" json:"optional_field_mask,omitempty"` - OptionalStruct *google_protobuf3.Struct `protobuf:"bytes,304,opt,name=optional_struct,json=optionalStruct" json:"optional_struct,omitempty"` - OptionalAny *google_protobuf.Any `protobuf:"bytes,305,opt,name=optional_any,json=optionalAny" json:"optional_any,omitempty"` - OptionalValue *google_protobuf3.Value `protobuf:"bytes,306,opt,name=optional_value,json=optionalValue" json:"optional_value,omitempty"` - RepeatedDuration []*google_protobuf1.Duration `protobuf:"bytes,311,rep,name=repeated_duration,json=repeatedDuration" json:"repeated_duration,omitempty"` - RepeatedTimestamp []*google_protobuf4.Timestamp `protobuf:"bytes,312,rep,name=repeated_timestamp,json=repeatedTimestamp" json:"repeated_timestamp,omitempty"` - RepeatedFieldmask []*google_protobuf2.FieldMask `protobuf:"bytes,313,rep,name=repeated_fieldmask,json=repeatedFieldmask" json:"repeated_fieldmask,omitempty"` - RepeatedStruct []*google_protobuf3.Struct `protobuf:"bytes,324,rep,name=repeated_struct,json=repeatedStruct" json:"repeated_struct,omitempty"` - RepeatedAny []*google_protobuf.Any `protobuf:"bytes,315,rep,name=repeated_any,json=repeatedAny" json:"repeated_any,omitempty"` - RepeatedValue []*google_protobuf3.Value `protobuf:"bytes,316,rep,name=repeated_value,json=repeatedValue" json:"repeated_value,omitempty"` - // Test field-name-to-JSON-name convention. - // (protobuf says names can be any valid C/C++ identifier.) - Fieldname1 int32 `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"` - FieldName2 int32 `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"` - XFieldName3 int32 `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"` - Field_Name4_ int32 `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"` - Field0Name5 int32 `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"` - Field_0Name6 int32 `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"` - FieldName7 int32 `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"` - FieldName8 int32 `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"` - Field_Name9 int32 `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"` - Field_Name10 int32 `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"` - FIELD_NAME11 int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"` - FIELDName12 int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"` - XFieldName13 int32 `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"` - X_FieldName14 int32 `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"` - Field_Name15 int32 `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"` - Field__Name16 int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"` - FieldName17__ int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"` - FieldName18__ int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"` -} - -func (m *TestAllTypes) Reset() { *m = TestAllTypes{} } -func (m *TestAllTypes) String() string { return proto.CompactTextString(m) } -func (*TestAllTypes) ProtoMessage() {} -func (*TestAllTypes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isTestAllTypes_OneofField interface { - isTestAllTypes_OneofField() -} - -type TestAllTypes_OneofUint32 struct { - OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,oneof"` -} -type TestAllTypes_OneofNestedMessage struct { - OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,oneof"` -} -type TestAllTypes_OneofString struct { - OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,oneof"` -} -type TestAllTypes_OneofBytes struct { - OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"` -} -type TestAllTypes_OneofBool struct { - OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,oneof"` -} -type TestAllTypes_OneofUint64 struct { - OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,oneof"` -} -type TestAllTypes_OneofFloat struct { - OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,oneof"` -} -type TestAllTypes_OneofDouble struct { - OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,oneof"` -} -type TestAllTypes_OneofEnum struct { - OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,enum=conformance.TestAllTypes_NestedEnum,oneof"` -} - -func (*TestAllTypes_OneofUint32) isTestAllTypes_OneofField() {} -func (*TestAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {} -func (*TestAllTypes_OneofString) isTestAllTypes_OneofField() {} -func (*TestAllTypes_OneofBytes) isTestAllTypes_OneofField() {} -func (*TestAllTypes_OneofBool) isTestAllTypes_OneofField() {} -func (*TestAllTypes_OneofUint64) isTestAllTypes_OneofField() {} -func (*TestAllTypes_OneofFloat) isTestAllTypes_OneofField() {} -func (*TestAllTypes_OneofDouble) isTestAllTypes_OneofField() {} -func (*TestAllTypes_OneofEnum) isTestAllTypes_OneofField() {} - -func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField { - if m != nil { - return m.OneofField - } - return nil -} - -func (m *TestAllTypes) GetOptionalInt32() int32 { - if m != nil { - return m.OptionalInt32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalInt64() int64 { - if m != nil { - return m.OptionalInt64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalUint32() uint32 { - if m != nil { - return m.OptionalUint32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalUint64() uint64 { - if m != nil { - return m.OptionalUint64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSint32() int32 { - if m != nil { - return m.OptionalSint32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSint64() int64 { - if m != nil { - return m.OptionalSint64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFixed32() uint32 { - if m != nil { - return m.OptionalFixed32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFixed64() uint64 { - if m != nil { - return m.OptionalFixed64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSfixed32() int32 { - if m != nil { - return m.OptionalSfixed32 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalSfixed64() int64 { - if m != nil { - return m.OptionalSfixed64 - } - return 0 -} - -func (m *TestAllTypes) GetOptionalFloat() float32 { - if m != nil { - return m.OptionalFloat - } - return 0 -} - -func (m *TestAllTypes) GetOptionalDouble() float64 { - if m != nil { - return m.OptionalDouble - } - return 0 -} - -func (m *TestAllTypes) GetOptionalBool() bool { - if m != nil { - return m.OptionalBool - } - return false -} - -func (m *TestAllTypes) GetOptionalString() string { - if m != nil { - return m.OptionalString - } - return "" -} - -func (m *TestAllTypes) GetOptionalBytes() []byte { - if m != nil { - return m.OptionalBytes - } - return nil -} - -func (m *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage { - if m != nil { - return m.OptionalNestedMessage - } - return nil -} - -func (m *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage { - if m != nil { - return m.OptionalForeignMessage - } - return nil -} - -func (m *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum { - if m != nil { - return m.OptionalNestedEnum - } - return TestAllTypes_FOO -} - -func (m *TestAllTypes) GetOptionalForeignEnum() ForeignEnum { - if m != nil { - return m.OptionalForeignEnum - } - return ForeignEnum_FOREIGN_FOO -} - -func (m *TestAllTypes) GetOptionalStringPiece() string { - if m != nil { - return m.OptionalStringPiece - } - return "" -} - -func (m *TestAllTypes) GetOptionalCord() string { - if m != nil { - return m.OptionalCord - } - return "" -} - -func (m *TestAllTypes) GetRecursiveMessage() *TestAllTypes { - if m != nil { - return m.RecursiveMessage - } - return nil -} - -func (m *TestAllTypes) GetRepeatedInt32() []int32 { - if m != nil { - return m.RepeatedInt32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedInt64() []int64 { - if m != nil { - return m.RepeatedInt64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedUint32() []uint32 { - if m != nil { - return m.RepeatedUint32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedUint64() []uint64 { - if m != nil { - return m.RepeatedUint64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSint32() []int32 { - if m != nil { - return m.RepeatedSint32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSint64() []int64 { - if m != nil { - return m.RepeatedSint64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFixed32() []uint32 { - if m != nil { - return m.RepeatedFixed32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFixed64() []uint64 { - if m != nil { - return m.RepeatedFixed64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSfixed32() []int32 { - if m != nil { - return m.RepeatedSfixed32 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedSfixed64() []int64 { - if m != nil { - return m.RepeatedSfixed64 - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFloat() []float32 { - if m != nil { - return m.RepeatedFloat - } - return nil -} - -func (m *TestAllTypes) GetRepeatedDouble() []float64 { - if m != nil { - return m.RepeatedDouble - } - return nil -} - -func (m *TestAllTypes) GetRepeatedBool() []bool { - if m != nil { - return m.RepeatedBool - } - return nil -} - -func (m *TestAllTypes) GetRepeatedString() []string { - if m != nil { - return m.RepeatedString - } - return nil -} - -func (m *TestAllTypes) GetRepeatedBytes() [][]byte { - if m != nil { - return m.RepeatedBytes - } - return nil -} - -func (m *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage { - if m != nil { - return m.RepeatedNestedMessage - } - return nil -} - -func (m *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage { - if m != nil { - return m.RepeatedForeignMessage - } - return nil -} - -func (m *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum { - if m != nil { - return m.RepeatedNestedEnum - } - return nil -} - -func (m *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum { - if m != nil { - return m.RepeatedForeignEnum - } - return nil -} - -func (m *TestAllTypes) GetRepeatedStringPiece() []string { - if m != nil { - return m.RepeatedStringPiece - } - return nil -} - -func (m *TestAllTypes) GetRepeatedCord() []string { - if m != nil { - return m.RepeatedCord - } - return nil -} - -func (m *TestAllTypes) GetMapInt32Int32() map[int32]int32 { - if m != nil { - return m.MapInt32Int32 - } - return nil -} - -func (m *TestAllTypes) GetMapInt64Int64() map[int64]int64 { - if m != nil { - return m.MapInt64Int64 - } - return nil -} - -func (m *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 { - if m != nil { - return m.MapUint32Uint32 - } - return nil -} - -func (m *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 { - if m != nil { - return m.MapUint64Uint64 - } - return nil -} - -func (m *TestAllTypes) GetMapSint32Sint32() map[int32]int32 { - if m != nil { - return m.MapSint32Sint32 - } - return nil -} - -func (m *TestAllTypes) GetMapSint64Sint64() map[int64]int64 { - if m != nil { - return m.MapSint64Sint64 - } - return nil -} - -func (m *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 { - if m != nil { - return m.MapFixed32Fixed32 - } - return nil -} - -func (m *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 { - if m != nil { - return m.MapFixed64Fixed64 - } - return nil -} - -func (m *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 { - if m != nil { - return m.MapSfixed32Sfixed32 - } - return nil -} - -func (m *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 { - if m != nil { - return m.MapSfixed64Sfixed64 - } - return nil -} - -func (m *TestAllTypes) GetMapInt32Float() map[int32]float32 { - if m != nil { - return m.MapInt32Float - } - return nil -} - -func (m *TestAllTypes) GetMapInt32Double() map[int32]float64 { - if m != nil { - return m.MapInt32Double - } - return nil -} - -func (m *TestAllTypes) GetMapBoolBool() map[bool]bool { - if m != nil { - return m.MapBoolBool - } - return nil -} - -func (m *TestAllTypes) GetMapStringString() map[string]string { - if m != nil { - return m.MapStringString - } - return nil -} - -func (m *TestAllTypes) GetMapStringBytes() map[string][]byte { - if m != nil { - return m.MapStringBytes - } - return nil -} - -func (m *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage { - if m != nil { - return m.MapStringNestedMessage - } - return nil -} - -func (m *TestAllTypes) GetMapStringForeignMessage() map[string]*ForeignMessage { - if m != nil { - return m.MapStringForeignMessage - } - return nil -} - -func (m *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum { - if m != nil { - return m.MapStringNestedEnum - } - return nil -} - -func (m *TestAllTypes) GetMapStringForeignEnum() map[string]ForeignEnum { - if m != nil { - return m.MapStringForeignEnum - } - return nil -} - -func (m *TestAllTypes) GetOneofUint32() uint32 { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofUint32); ok { - return x.OneofUint32 - } - return 0 -} - -func (m *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofNestedMessage); ok { - return x.OneofNestedMessage - } - return nil -} - -func (m *TestAllTypes) GetOneofString() string { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofString); ok { - return x.OneofString - } - return "" -} - -func (m *TestAllTypes) GetOneofBytes() []byte { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofBytes); ok { - return x.OneofBytes - } - return nil -} - -func (m *TestAllTypes) GetOneofBool() bool { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofBool); ok { - return x.OneofBool - } - return false -} - -func (m *TestAllTypes) GetOneofUint64() uint64 { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofUint64); ok { - return x.OneofUint64 - } - return 0 -} - -func (m *TestAllTypes) GetOneofFloat() float32 { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofFloat); ok { - return x.OneofFloat - } - return 0 -} - -func (m *TestAllTypes) GetOneofDouble() float64 { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofDouble); ok { - return x.OneofDouble - } - return 0 -} - -func (m *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum { - if x, ok := m.GetOneofField().(*TestAllTypes_OneofEnum); ok { - return x.OneofEnum - } - return TestAllTypes_FOO -} - -func (m *TestAllTypes) GetOptionalBoolWrapper() *google_protobuf5.BoolValue { - if m != nil { - return m.OptionalBoolWrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalInt32Wrapper() *google_protobuf5.Int32Value { - if m != nil { - return m.OptionalInt32Wrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalInt64Wrapper() *google_protobuf5.Int64Value { - if m != nil { - return m.OptionalInt64Wrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalUint32Wrapper() *google_protobuf5.UInt32Value { - if m != nil { - return m.OptionalUint32Wrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalUint64Wrapper() *google_protobuf5.UInt64Value { - if m != nil { - return m.OptionalUint64Wrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalFloatWrapper() *google_protobuf5.FloatValue { - if m != nil { - return m.OptionalFloatWrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalDoubleWrapper() *google_protobuf5.DoubleValue { - if m != nil { - return m.OptionalDoubleWrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalStringWrapper() *google_protobuf5.StringValue { - if m != nil { - return m.OptionalStringWrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalBytesWrapper() *google_protobuf5.BytesValue { - if m != nil { - return m.OptionalBytesWrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedBoolWrapper() []*google_protobuf5.BoolValue { - if m != nil { - return m.RepeatedBoolWrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedInt32Wrapper() []*google_protobuf5.Int32Value { - if m != nil { - return m.RepeatedInt32Wrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedInt64Wrapper() []*google_protobuf5.Int64Value { - if m != nil { - return m.RepeatedInt64Wrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedUint32Wrapper() []*google_protobuf5.UInt32Value { - if m != nil { - return m.RepeatedUint32Wrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedUint64Wrapper() []*google_protobuf5.UInt64Value { - if m != nil { - return m.RepeatedUint64Wrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFloatWrapper() []*google_protobuf5.FloatValue { - if m != nil { - return m.RepeatedFloatWrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedDoubleWrapper() []*google_protobuf5.DoubleValue { - if m != nil { - return m.RepeatedDoubleWrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedStringWrapper() []*google_protobuf5.StringValue { - if m != nil { - return m.RepeatedStringWrapper - } - return nil -} - -func (m *TestAllTypes) GetRepeatedBytesWrapper() []*google_protobuf5.BytesValue { - if m != nil { - return m.RepeatedBytesWrapper - } - return nil -} - -func (m *TestAllTypes) GetOptionalDuration() *google_protobuf1.Duration { - if m != nil { - return m.OptionalDuration - } - return nil -} - -func (m *TestAllTypes) GetOptionalTimestamp() *google_protobuf4.Timestamp { - if m != nil { - return m.OptionalTimestamp - } - return nil -} - -func (m *TestAllTypes) GetOptionalFieldMask() *google_protobuf2.FieldMask { - if m != nil { - return m.OptionalFieldMask - } - return nil -} - -func (m *TestAllTypes) GetOptionalStruct() *google_protobuf3.Struct { - if m != nil { - return m.OptionalStruct - } - return nil -} - -func (m *TestAllTypes) GetOptionalAny() *google_protobuf.Any { - if m != nil { - return m.OptionalAny - } - return nil -} - -func (m *TestAllTypes) GetOptionalValue() *google_protobuf3.Value { - if m != nil { - return m.OptionalValue - } - return nil -} - -func (m *TestAllTypes) GetRepeatedDuration() []*google_protobuf1.Duration { - if m != nil { - return m.RepeatedDuration - } - return nil -} - -func (m *TestAllTypes) GetRepeatedTimestamp() []*google_protobuf4.Timestamp { - if m != nil { - return m.RepeatedTimestamp - } - return nil -} - -func (m *TestAllTypes) GetRepeatedFieldmask() []*google_protobuf2.FieldMask { - if m != nil { - return m.RepeatedFieldmask - } - return nil -} - -func (m *TestAllTypes) GetRepeatedStruct() []*google_protobuf3.Struct { - if m != nil { - return m.RepeatedStruct - } - return nil -} - -func (m *TestAllTypes) GetRepeatedAny() []*google_protobuf.Any { - if m != nil { - return m.RepeatedAny - } - return nil -} - -func (m *TestAllTypes) GetRepeatedValue() []*google_protobuf3.Value { - if m != nil { - return m.RepeatedValue - } - return nil -} - -func (m *TestAllTypes) GetFieldname1() int32 { - if m != nil { - return m.Fieldname1 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName2() int32 { - if m != nil { - return m.FieldName2 - } - return 0 -} - -func (m *TestAllTypes) GetXFieldName3() int32 { - if m != nil { - return m.XFieldName3 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name4_() int32 { - if m != nil { - return m.Field_Name4_ - } - return 0 -} - -func (m *TestAllTypes) GetField0Name5() int32 { - if m != nil { - return m.Field0Name5 - } - return 0 -} - -func (m *TestAllTypes) GetField_0Name6() int32 { - if m != nil { - return m.Field_0Name6 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName7() int32 { - if m != nil { - return m.FieldName7 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName8() int32 { - if m != nil { - return m.FieldName8 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name9() int32 { - if m != nil { - return m.Field_Name9 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name10() int32 { - if m != nil { - return m.Field_Name10 - } - return 0 -} - -func (m *TestAllTypes) GetFIELD_NAME11() int32 { - if m != nil { - return m.FIELD_NAME11 - } - return 0 -} - -func (m *TestAllTypes) GetFIELDName12() int32 { - if m != nil { - return m.FIELDName12 - } - return 0 -} - -func (m *TestAllTypes) GetXFieldName13() int32 { - if m != nil { - return m.XFieldName13 - } - return 0 -} - -func (m *TestAllTypes) GetX_FieldName14() int32 { - if m != nil { - return m.X_FieldName14 - } - return 0 -} - -func (m *TestAllTypes) GetField_Name15() int32 { - if m != nil { - return m.Field_Name15 - } - return 0 -} - -func (m *TestAllTypes) GetField__Name16() int32 { - if m != nil { - return m.Field__Name16 - } - return 0 -} - -func (m *TestAllTypes) GetFieldName17__() int32 { - if m != nil { - return m.FieldName17__ - } - return 0 -} - -func (m *TestAllTypes) GetFieldName18__() int32 { - if m != nil { - return m.FieldName18__ - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TestAllTypes) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TestAllTypes_OneofMarshaler, _TestAllTypes_OneofUnmarshaler, _TestAllTypes_OneofSizer, []interface{}{ - (*TestAllTypes_OneofUint32)(nil), - (*TestAllTypes_OneofNestedMessage)(nil), - (*TestAllTypes_OneofString)(nil), - (*TestAllTypes_OneofBytes)(nil), - (*TestAllTypes_OneofBool)(nil), - (*TestAllTypes_OneofUint64)(nil), - (*TestAllTypes_OneofFloat)(nil), - (*TestAllTypes_OneofDouble)(nil), - (*TestAllTypes_OneofEnum)(nil), - } -} - -func _TestAllTypes_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TestAllTypes) - // oneof_field - switch x := m.OneofField.(type) { - case *TestAllTypes_OneofUint32: - b.EncodeVarint(111<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.OneofUint32)) - case *TestAllTypes_OneofNestedMessage: - b.EncodeVarint(112<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.OneofNestedMessage); err != nil { - return err - } - case *TestAllTypes_OneofString: - b.EncodeVarint(113<<3 | proto.WireBytes) - b.EncodeStringBytes(x.OneofString) - case *TestAllTypes_OneofBytes: - b.EncodeVarint(114<<3 | proto.WireBytes) - b.EncodeRawBytes(x.OneofBytes) - case *TestAllTypes_OneofBool: - t := uint64(0) - if x.OneofBool { - t = 1 - } - b.EncodeVarint(115<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *TestAllTypes_OneofUint64: - b.EncodeVarint(116<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.OneofUint64)) - case *TestAllTypes_OneofFloat: - b.EncodeVarint(117<<3 | proto.WireFixed32) - b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat))) - case *TestAllTypes_OneofDouble: - b.EncodeVarint(118<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.OneofDouble)) - case *TestAllTypes_OneofEnum: - b.EncodeVarint(119<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.OneofEnum)) - case nil: - default: - return fmt.Errorf("TestAllTypes.OneofField has unexpected type %T", x) - } - return nil -} - -func _TestAllTypes_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TestAllTypes) - switch tag { - case 111: // oneof_field.oneof_uint32 - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.OneofField = &TestAllTypes_OneofUint32{uint32(x)} - return true, err - case 112: // oneof_field.oneof_nested_message - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TestAllTypes_NestedMessage) - err := b.DecodeMessage(msg) - m.OneofField = &TestAllTypes_OneofNestedMessage{msg} - return true, err - case 113: // oneof_field.oneof_string - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.OneofField = &TestAllTypes_OneofString{x} - return true, err - case 114: // oneof_field.oneof_bytes - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.OneofField = &TestAllTypes_OneofBytes{x} - return true, err - case 115: // oneof_field.oneof_bool - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.OneofField = &TestAllTypes_OneofBool{x != 0} - return true, err - case 116: // oneof_field.oneof_uint64 - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.OneofField = &TestAllTypes_OneofUint64{x} - return true, err - case 117: // oneof_field.oneof_float - if wire != proto.WireFixed32 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed32() - m.OneofField = &TestAllTypes_OneofFloat{math.Float32frombits(uint32(x))} - return true, err - case 118: // oneof_field.oneof_double - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.OneofField = &TestAllTypes_OneofDouble{math.Float64frombits(x)} - return true, err - case 119: // oneof_field.oneof_enum - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.OneofField = &TestAllTypes_OneofEnum{TestAllTypes_NestedEnum(x)} - return true, err - default: - return false, nil - } -} - -func _TestAllTypes_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TestAllTypes) - // oneof_field - switch x := m.OneofField.(type) { - case *TestAllTypes_OneofUint32: - n += proto.SizeVarint(111<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.OneofUint32)) - case *TestAllTypes_OneofNestedMessage: - s := proto.Size(x.OneofNestedMessage) - n += proto.SizeVarint(112<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TestAllTypes_OneofString: - n += proto.SizeVarint(113<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.OneofString))) - n += len(x.OneofString) - case *TestAllTypes_OneofBytes: - n += proto.SizeVarint(114<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.OneofBytes))) - n += len(x.OneofBytes) - case *TestAllTypes_OneofBool: - n += proto.SizeVarint(115<<3 | proto.WireVarint) - n += 1 - case *TestAllTypes_OneofUint64: - n += proto.SizeVarint(116<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.OneofUint64)) - case *TestAllTypes_OneofFloat: - n += proto.SizeVarint(117<<3 | proto.WireFixed32) - n += 4 - case *TestAllTypes_OneofDouble: - n += proto.SizeVarint(118<<3 | proto.WireFixed64) - n += 8 - case *TestAllTypes_OneofEnum: - n += proto.SizeVarint(119<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.OneofEnum)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type TestAllTypes_NestedMessage struct { - A int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"` - Corecursive *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"` -} - -func (m *TestAllTypes_NestedMessage) Reset() { *m = TestAllTypes_NestedMessage{} } -func (m *TestAllTypes_NestedMessage) String() string { return proto.CompactTextString(m) } -func (*TestAllTypes_NestedMessage) ProtoMessage() {} -func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *TestAllTypes_NestedMessage) GetA() int32 { - if m != nil { - return m.A - } - return 0 -} - -func (m *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes { - if m != nil { - return m.Corecursive - } - return nil -} - -type ForeignMessage struct { - C int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"` -} - -func (m *ForeignMessage) Reset() { *m = ForeignMessage{} } -func (m *ForeignMessage) String() string { return proto.CompactTextString(m) } -func (*ForeignMessage) ProtoMessage() {} -func (*ForeignMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ForeignMessage) GetC() int32 { - if m != nil { - return m.C - } - return 0 -} - -func init() { - proto.RegisterType((*ConformanceRequest)(nil), "conformance.ConformanceRequest") - proto.RegisterType((*ConformanceResponse)(nil), "conformance.ConformanceResponse") - proto.RegisterType((*TestAllTypes)(nil), "conformance.TestAllTypes") - proto.RegisterType((*TestAllTypes_NestedMessage)(nil), "conformance.TestAllTypes.NestedMessage") - proto.RegisterType((*ForeignMessage)(nil), "conformance.ForeignMessage") - proto.RegisterEnum("conformance.WireFormat", WireFormat_name, WireFormat_value) - proto.RegisterEnum("conformance.ForeignEnum", ForeignEnum_name, ForeignEnum_value) - proto.RegisterEnum("conformance.TestAllTypes_NestedEnum", TestAllTypes_NestedEnum_name, TestAllTypes_NestedEnum_value) -} - -func init() { proto.RegisterFile("conformance_proto/conformance.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2737 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xd9, 0x72, 0xdb, 0xc8, - 0xd5, 0x16, 0x08, 0x59, 0x4b, 0x93, 0x92, 0xa8, 0xd6, 0xd6, 0x96, 0x5d, 0x63, 0x58, 0xb2, 0x7f, - 0xd3, 0xf6, 0x8c, 0xac, 0x05, 0x86, 0x65, 0xcf, 0x3f, 0x8e, 0x45, 0x9b, 0xb4, 0xe4, 0x8c, 0x25, - 0x17, 0x64, 0x8d, 0xab, 0x9c, 0x0b, 0x06, 0xa6, 0x20, 0x15, 0xc7, 0x24, 0xc1, 0x01, 0x48, 0x4f, - 0x94, 0xcb, 0xbc, 0x41, 0xf6, 0x7d, 0xbd, 0xcf, 0x7a, 0x93, 0xa4, 0x92, 0xab, 0x54, 0x6e, 0xb2, - 0x27, 0x95, 0x3d, 0x79, 0x85, 0xbc, 0x43, 0x52, 0xbd, 0xa2, 0xbb, 0x01, 0x50, 0xf4, 0x54, 0x0d, - 0x25, 0x1e, 0x7c, 0xfd, 0x9d, 0xd3, 0xe7, 0x1c, 0x7c, 0x2d, 0x1c, 0x18, 0x2c, 0xd7, 0x83, 0xf6, - 0x51, 0x10, 0xb6, 0xbc, 0x76, 0xdd, 0xaf, 0x75, 0xc2, 0xa0, 0x1b, 0xdc, 0x90, 0x2c, 0x2b, 0xc4, - 0x02, 0xf3, 0x92, 0x69, 0xf1, 0xec, 0x71, 0x10, 0x1c, 0x37, 0xfd, 0x1b, 0xe4, 0xd2, 0x8b, 0xde, - 0xd1, 0x0d, 0xaf, 0x7d, 0x42, 0x71, 0x8b, 0x6f, 0xe8, 0x97, 0x0e, 0x7b, 0xa1, 0xd7, 0x6d, 0x04, - 0x6d, 0x76, 0xdd, 0xd2, 0xaf, 0x1f, 0x35, 0xfc, 0xe6, 0x61, 0xad, 0xe5, 0x45, 0x2f, 0x19, 0xe2, - 0xbc, 0x8e, 0x88, 0xba, 0x61, 0xaf, 0xde, 0x65, 0x57, 0x2f, 0xe8, 0x57, 0xbb, 0x8d, 0x96, 0x1f, - 0x75, 0xbd, 0x56, 0x27, 0x2b, 0x80, 0x0f, 0x43, 0xaf, 0xd3, 0xf1, 0xc3, 0x88, 0x5e, 0x5f, 0xfa, - 0x85, 0x01, 0xe0, 0xfd, 0x78, 0x2f, 0xae, 0xff, 0x41, 0xcf, 0x8f, 0xba, 0xf0, 0x3a, 0x28, 0xf2, - 0x15, 0xb5, 0x8e, 0x77, 0xd2, 0x0c, 0xbc, 0x43, 0x64, 0x58, 0x46, 0xa9, 0xb0, 0x3d, 0xe4, 0x4e, - 0xf1, 0x2b, 0x4f, 0xe8, 0x05, 0xb8, 0x0c, 0x0a, 0xef, 0x47, 0x41, 0x5b, 0x00, 0x73, 0x96, 0x51, - 0x1a, 0xdf, 0x1e, 0x72, 0xf3, 0xd8, 0xca, 0x41, 0x7b, 0x60, 0x21, 0xa4, 0xe4, 0xfe, 0x61, 0x2d, - 0xe8, 0x75, 0x3b, 0xbd, 0x6e, 0x8d, 0x78, 0xed, 0x22, 0xd3, 0x32, 0x4a, 0x93, 0xeb, 0x0b, 0x2b, - 0x72, 0x9a, 0x9f, 0x35, 0x42, 0xbf, 0x4a, 0x2e, 0xbb, 0x73, 0x62, 0xdd, 0x1e, 0x59, 0x46, 0xcd, - 0xe5, 0x71, 0x30, 0xca, 0x1c, 0x2e, 0x7d, 0x2a, 0x07, 0x66, 0x94, 0x4d, 0x44, 0x9d, 0xa0, 0x1d, - 0xf9, 0xf0, 0x22, 0xc8, 0x77, 0xbc, 0x30, 0xf2, 0x6b, 0x7e, 0x18, 0x06, 0x21, 0xd9, 0x00, 0x8e, - 0x0b, 0x10, 0x63, 0x05, 0xdb, 0xe0, 0x55, 0x30, 0x15, 0xf9, 0x61, 0xc3, 0x6b, 0x36, 0x3e, 0xc9, - 0x61, 0x23, 0x0c, 0x36, 0x29, 0x2e, 0x50, 0xe8, 0x65, 0x30, 0x11, 0xf6, 0xda, 0x38, 0xc1, 0x0c, - 0xc8, 0xf7, 0x59, 0x60, 0x66, 0x0a, 0x4b, 0x4b, 0x9d, 0x39, 0x68, 0xea, 0x86, 0xd3, 0x52, 0xb7, - 0x08, 0x46, 0xa3, 0x97, 0x8d, 0x4e, 0xc7, 0x3f, 0x44, 0x67, 0xd8, 0x75, 0x6e, 0x28, 0x8f, 0x81, - 0x91, 0xd0, 0x8f, 0x7a, 0xcd, 0xee, 0xd2, 0x7f, 0xaa, 0xa0, 0xf0, 0xd4, 0x8f, 0xba, 0x5b, 0xcd, - 0xe6, 0xd3, 0x93, 0x8e, 0x1f, 0xc1, 0xcb, 0x60, 0x32, 0xe8, 0xe0, 0x5e, 0xf3, 0x9a, 0xb5, 0x46, - 0xbb, 0xbb, 0xb1, 0x4e, 0x12, 0x70, 0xc6, 0x9d, 0xe0, 0xd6, 0x1d, 0x6c, 0xd4, 0x61, 0x8e, 0x4d, - 0xf6, 0x65, 0x2a, 0x30, 0xc7, 0x86, 0x57, 0xc0, 0x94, 0x80, 0xf5, 0x28, 0x1d, 0xde, 0xd5, 0x84, - 0x2b, 0x56, 0x1f, 0x10, 0x6b, 0x02, 0xe8, 0xd8, 0x64, 0x57, 0xc3, 0x2a, 0x50, 0x63, 0x8c, 0x28, - 0x23, 0xde, 0xde, 0x74, 0x0c, 0xdc, 0x4f, 0x32, 0x46, 0x94, 0x11, 0xd7, 0x08, 0xaa, 0x40, 0xc7, - 0x86, 0x57, 0x41, 0x51, 0x00, 0x8f, 0x1a, 0x9f, 0xf0, 0x0f, 0x37, 0xd6, 0xd1, 0xa8, 0x65, 0x94, - 0x46, 0x5d, 0x41, 0x50, 0xa5, 0xe6, 0x24, 0xd4, 0xb1, 0xd1, 0x98, 0x65, 0x94, 0x46, 0x34, 0xa8, - 0x63, 0xc3, 0xeb, 0x60, 0x3a, 0x76, 0xcf, 0x69, 0xc7, 0x2d, 0xa3, 0x34, 0xe5, 0x0a, 0x8e, 0x7d, - 0x66, 0x4f, 0x01, 0x3b, 0x36, 0x02, 0x96, 0x51, 0x2a, 0xea, 0x60, 0xc7, 0x56, 0x52, 0x7f, 0xd4, - 0x0c, 0xbc, 0x2e, 0xca, 0x5b, 0x46, 0x29, 0x17, 0xa7, 0xbe, 0x8a, 0x8d, 0xca, 0xfe, 0x0f, 0x83, - 0xde, 0x8b, 0xa6, 0x8f, 0x0a, 0x96, 0x51, 0x32, 0xe2, 0xfd, 0x3f, 0x20, 0x56, 0xb8, 0x0c, 0xc4, - 0xca, 0xda, 0x8b, 0x20, 0x68, 0xa2, 0x09, 0xcb, 0x28, 0x8d, 0xb9, 0x05, 0x6e, 0x2c, 0x07, 0x41, - 0x53, 0xcd, 0x66, 0x37, 0x6c, 0xb4, 0x8f, 0xd1, 0x24, 0xee, 0x2a, 0x29, 0x9b, 0xc4, 0xaa, 0x44, - 0xf7, 0xe2, 0xa4, 0xeb, 0x47, 0x68, 0x0a, 0xb7, 0x71, 0x1c, 0x5d, 0x19, 0x1b, 0x61, 0x0d, 0x2c, - 0x08, 0x58, 0x9b, 0xde, 0xde, 0x2d, 0x3f, 0x8a, 0xbc, 0x63, 0x1f, 0x41, 0xcb, 0x28, 0xe5, 0xd7, - 0xaf, 0x28, 0x37, 0xb6, 0xdc, 0xa2, 0x2b, 0xbb, 0x04, 0xff, 0x98, 0xc2, 0xdd, 0x39, 0xce, 0xa3, - 0x98, 0xe1, 0x01, 0x40, 0x71, 0x96, 0x82, 0xd0, 0x6f, 0x1c, 0xb7, 0x85, 0x87, 0x19, 0xe2, 0xe1, - 0x9c, 0xe2, 0xa1, 0x4a, 0x31, 0x9c, 0x75, 0x5e, 0x24, 0x53, 0xb1, 0xc3, 0xf7, 0xc0, 0xac, 0x1e, - 0xb7, 0xdf, 0xee, 0xb5, 0xd0, 0x1c, 0x51, 0xa3, 0x4b, 0xa7, 0x05, 0x5d, 0x69, 0xf7, 0x5a, 0x2e, - 0x54, 0x23, 0xc6, 0x36, 0xf8, 0x2e, 0x98, 0x4b, 0x84, 0x4b, 0x88, 0xe7, 0x09, 0x31, 0x4a, 0x8b, - 0x95, 0x90, 0xcd, 0x68, 0x81, 0x12, 0x36, 0x47, 0x62, 0xa3, 0xd5, 0xaa, 0x75, 0x1a, 0x7e, 0xdd, - 0x47, 0x08, 0xd7, 0xac, 0x9c, 0x1b, 0xcb, 0xc5, 0xeb, 0x68, 0xdd, 0x9e, 0xe0, 0xcb, 0xf0, 0x8a, - 0xd4, 0x0a, 0xf5, 0x20, 0x3c, 0x44, 0x67, 0x19, 0xde, 0x88, 0xdb, 0xe1, 0x7e, 0x10, 0x1e, 0xc2, - 0x2a, 0x98, 0x0e, 0xfd, 0x7a, 0x2f, 0x8c, 0x1a, 0xaf, 0x7c, 0x91, 0xd6, 0x73, 0x24, 0xad, 0x67, - 0x33, 0x73, 0xe0, 0x16, 0xc5, 0x1a, 0x9e, 0xce, 0xcb, 0x60, 0x32, 0xf4, 0x3b, 0xbe, 0x87, 0xf3, - 0x48, 0x6f, 0xe6, 0x0b, 0x96, 0x89, 0xd5, 0x86, 0x5b, 0x85, 0xda, 0xc8, 0x30, 0xc7, 0x46, 0x96, - 0x65, 0x62, 0xb5, 0x91, 0x60, 0x54, 0x1b, 0x04, 0x8c, 0xa9, 0xcd, 0x45, 0xcb, 0xc4, 0x6a, 0xc3, - 0xcd, 0xb1, 0xda, 0x28, 0x40, 0xc7, 0x46, 0x4b, 0x96, 0x89, 0xd5, 0x46, 0x06, 0x6a, 0x8c, 0x4c, - 0x6d, 0x96, 0x2d, 0x13, 0xab, 0x0d, 0x37, 0xef, 0x27, 0x19, 0x99, 0xda, 0x5c, 0xb2, 0x4c, 0xac, - 0x36, 0x32, 0x90, 0xaa, 0x8d, 0x00, 0x72, 0x59, 0xb8, 0x6c, 0x99, 0x58, 0x6d, 0xb8, 0x5d, 0x52, - 0x1b, 0x15, 0xea, 0xd8, 0xe8, 0xff, 0x2c, 0x13, 0xab, 0x8d, 0x02, 0xa5, 0x6a, 0x13, 0xbb, 0xe7, - 0xb4, 0x57, 0x2c, 0x13, 0xab, 0x8d, 0x08, 0x40, 0x52, 0x1b, 0x0d, 0xec, 0xd8, 0xa8, 0x64, 0x99, - 0x58, 0x6d, 0x54, 0x30, 0x55, 0x9b, 0x38, 0x08, 0xa2, 0x36, 0x57, 0x2d, 0x13, 0xab, 0x8d, 0x08, - 0x81, 0xab, 0x8d, 0x80, 0x31, 0xb5, 0xb9, 0x66, 0x99, 0x58, 0x6d, 0xb8, 0x39, 0x56, 0x1b, 0x01, - 0x24, 0x6a, 0x73, 0xdd, 0x32, 0xb1, 0xda, 0x70, 0x23, 0x57, 0x9b, 0x38, 0x42, 0xaa, 0x36, 0x6f, - 0x5a, 0x26, 0x56, 0x1b, 0x11, 0x9f, 0x50, 0x9b, 0x98, 0x8d, 0xa8, 0xcd, 0x5b, 0x96, 0x89, 0xd5, - 0x46, 0xd0, 0x71, 0xb5, 0x11, 0x30, 0x4d, 0x6d, 0x56, 0x2d, 0xf3, 0xb5, 0xd4, 0x86, 0xf3, 0x24, - 0xd4, 0x26, 0xce, 0x92, 0xa6, 0x36, 0x6b, 0xc4, 0x43, 0x7f, 0xb5, 0x11, 0xc9, 0x4c, 0xa8, 0x8d, - 0x1e, 0x37, 0x11, 0x85, 0x0d, 0xcb, 0x1c, 0x5c, 0x6d, 0xd4, 0x88, 0xb9, 0xda, 0x24, 0xc2, 0x25, - 0xc4, 0x36, 0x21, 0xee, 0xa3, 0x36, 0x5a, 0xa0, 0x5c, 0x6d, 0xb4, 0x6a, 0x31, 0xb5, 0x71, 0x70, - 0xcd, 0xa8, 0xda, 0xa8, 0x75, 0x13, 0x6a, 0x23, 0xd6, 0x11, 0xb5, 0xb9, 0xc5, 0xf0, 0x46, 0xdc, - 0x0e, 0x44, 0x6d, 0x9e, 0x82, 0xa9, 0x96, 0xd7, 0xa1, 0x02, 0xc1, 0x64, 0x62, 0x93, 0x24, 0xf5, - 0xcd, 0xec, 0x0c, 0x3c, 0xf6, 0x3a, 0x44, 0x3b, 0xc8, 0x47, 0xa5, 0xdd, 0x0d, 0x4f, 0xdc, 0x89, - 0x96, 0x6c, 0x93, 0x58, 0x1d, 0x9b, 0xa9, 0xca, 0xed, 0xc1, 0x58, 0x1d, 0x9b, 0x7c, 0x28, 0xac, - 0xcc, 0x06, 0x9f, 0x83, 0x69, 0xcc, 0x4a, 0xe5, 0x87, 0xab, 0xd0, 0x1d, 0xc2, 0xbb, 0xd2, 0x97, - 0x97, 0x4a, 0x13, 0xfd, 0xa4, 0xcc, 0x38, 0x3c, 0xd9, 0x2a, 0x73, 0x3b, 0x36, 0x17, 0xae, 0xb7, - 0x07, 0xe4, 0x76, 0x6c, 0xfa, 0xa9, 0x72, 0x73, 0x2b, 0xe7, 0xa6, 0x22, 0xc7, 0xb5, 0xee, 0xff, - 0x07, 0xe0, 0xa6, 0x02, 0xb8, 0xaf, 0xc5, 0x2d, 0x5b, 0x65, 0x6e, 0xc7, 0xe6, 0xf2, 0xf8, 0xce, - 0x80, 0xdc, 0x8e, 0xbd, 0xaf, 0xc5, 0x2d, 0x5b, 0xe1, 0xc7, 0xc1, 0x0c, 0xe6, 0x66, 0xda, 0x26, - 0x24, 0xf5, 0x2e, 0x61, 0x5f, 0xed, 0xcb, 0xce, 0x74, 0x96, 0xfd, 0xa0, 0xfc, 0x38, 0x50, 0xd5, - 0xae, 0x78, 0x70, 0x6c, 0xa1, 0xc4, 0x1f, 0x19, 0xd4, 0x83, 0x63, 0xb3, 0x1f, 0x9a, 0x07, 0x61, - 0x87, 0x47, 0x60, 0x8e, 0xe4, 0x87, 0x6f, 0x42, 0x28, 0xf8, 0x3d, 0xe2, 0x63, 0xbd, 0x7f, 0x8e, - 0x18, 0x98, 0xff, 0xa4, 0x5e, 0x70, 0xc8, 0xfa, 0x15, 0xd5, 0x0f, 0xae, 0x04, 0xdf, 0xcb, 0xd6, - 0xc0, 0x7e, 0x1c, 0x9b, 0xff, 0xd4, 0xfd, 0xc4, 0x57, 0xd4, 0xfb, 0x95, 0x1e, 0x1a, 0xe5, 0x41, - 0xef, 0x57, 0x72, 0x9c, 0x68, 0xf7, 0x2b, 0x3d, 0x62, 0x9e, 0x81, 0x62, 0xcc, 0xca, 0xce, 0x98, - 0xfb, 0x84, 0xf6, 0xad, 0xd3, 0x69, 0xe9, 0xe9, 0x43, 0x79, 0x27, 0x5b, 0x8a, 0x11, 0xee, 0x02, - 0xec, 0x89, 0x9c, 0x46, 0xf4, 0x48, 0x7a, 0x40, 0x58, 0xaf, 0xf5, 0x65, 0xc5, 0xe7, 0x14, 0xfe, - 0x9f, 0x52, 0xe6, 0x5b, 0xb1, 0x45, 0xb4, 0x3b, 0x95, 0x42, 0x76, 0x7e, 0x55, 0x06, 0x69, 0x77, - 0x02, 0xa5, 0x9f, 0x52, 0xbb, 0x4b, 0x56, 0x9e, 0x04, 0xc6, 0x4d, 0x8f, 0xbc, 0xea, 0x00, 0x49, - 0xa0, 0xcb, 0xc9, 0x69, 0x18, 0x27, 0x41, 0x32, 0xc2, 0x0e, 0x38, 0x2b, 0x11, 0x6b, 0x87, 0xe4, - 0x43, 0xe2, 0xe1, 0xe6, 0x00, 0x1e, 0x94, 0x63, 0x91, 0x7a, 0x9a, 0x6f, 0xa5, 0x5e, 0x84, 0x11, - 0x58, 0x94, 0x3c, 0xea, 0xa7, 0xe6, 0x36, 0x71, 0xe9, 0x0c, 0xe0, 0x52, 0x3d, 0x33, 0xa9, 0xcf, - 0x85, 0x56, 0xfa, 0x55, 0x78, 0x0c, 0xe6, 0x93, 0xdb, 0x24, 0x47, 0xdf, 0xce, 0x20, 0xf7, 0x80, - 0xb4, 0x0d, 0x7c, 0xf4, 0x49, 0xf7, 0x80, 0x76, 0x05, 0xbe, 0x0f, 0x16, 0x52, 0x76, 0x47, 0x3c, - 0x3d, 0x22, 0x9e, 0x36, 0x06, 0xdf, 0x5a, 0xec, 0x6a, 0xb6, 0x95, 0x72, 0x09, 0x2e, 0x83, 0x42, - 0xd0, 0xf6, 0x83, 0x23, 0x7e, 0xdc, 0x04, 0xf8, 0x11, 0x7b, 0x7b, 0xc8, 0xcd, 0x13, 0x2b, 0x3b, - 0x3c, 0x3e, 0x06, 0x66, 0x29, 0x48, 0xab, 0x6d, 0xe7, 0xb5, 0x1e, 0xb7, 0xb6, 0x87, 0x5c, 0x48, - 0x68, 0xd4, 0x5a, 0x8a, 0x08, 0x58, 0xb7, 0x7f, 0xc0, 0x27, 0x12, 0xc4, 0xca, 0x7a, 0xf7, 0x22, - 0xa0, 0x5f, 0x59, 0xdb, 0x86, 0x6c, 0xbc, 0x01, 0x88, 0x91, 0x76, 0xe1, 0x05, 0x00, 0x18, 0x04, - 0xdf, 0x87, 0x11, 0x7e, 0x10, 0xdd, 0x1e, 0x72, 0xc7, 0x29, 0x02, 0xdf, 0x5b, 0xca, 0x56, 0x1d, - 0x1b, 0x75, 0x2d, 0xa3, 0x34, 0xac, 0x6c, 0xd5, 0xb1, 0x63, 0x47, 0x54, 0x7b, 0x7a, 0xf8, 0xf1, - 0x58, 0x38, 0xa2, 0x62, 0x22, 0x78, 0x98, 0x90, 0xbc, 0xc2, 0x8f, 0xc6, 0x82, 0x87, 0x09, 0x43, - 0x85, 0x47, 0x43, 0xca, 0xf6, 0xe1, 0xe0, 0x8f, 0x78, 0x22, 0x66, 0x52, 0x9e, 0x3d, 0xe9, 0x69, - 0x8c, 0x88, 0x0c, 0x9b, 0xa6, 0xa1, 0x5f, 0x19, 0x24, 0xf7, 0x8b, 0x2b, 0x74, 0xdc, 0xb6, 0xc2, - 0xe7, 0x3c, 0x2b, 0x78, 0xab, 0xef, 0x79, 0xcd, 0x9e, 0x1f, 0x3f, 0xa6, 0x61, 0xd3, 0x33, 0xba, - 0x0e, 0xba, 0x60, 0x5e, 0x9d, 0xd1, 0x08, 0xc6, 0x5f, 0x1b, 0xec, 0xd1, 0x56, 0x67, 0x24, 0x7a, - 0x47, 0x29, 0x67, 0x95, 0x49, 0x4e, 0x06, 0xa7, 0x63, 0x0b, 0xce, 0xdf, 0xf4, 0xe1, 0x74, 0xec, - 0x24, 0xa7, 0x63, 0x73, 0xce, 0x03, 0xe9, 0x21, 0xbf, 0xa7, 0x06, 0xfa, 0x5b, 0x4a, 0x7a, 0x3e, - 0x41, 0x7a, 0x20, 0x45, 0x3a, 0xa7, 0x0e, 0x89, 0xb2, 0x68, 0xa5, 0x58, 0x7f, 0xd7, 0x8f, 0x96, - 0x07, 0x3b, 0xa7, 0x8e, 0x94, 0xd2, 0x32, 0x40, 0x1a, 0x47, 0xb0, 0xfe, 0x3e, 0x2b, 0x03, 0xa4, - 0x97, 0xb4, 0x0c, 0x10, 0x5b, 0x5a, 0xa8, 0xb4, 0xd3, 0x04, 0xe9, 0x1f, 0xb2, 0x42, 0xa5, 0xcd, - 0xa7, 0x85, 0x4a, 0x8d, 0x69, 0xb4, 0x4c, 0x61, 0x38, 0xed, 0x1f, 0xb3, 0x68, 0xe9, 0x4d, 0xa8, - 0xd1, 0x52, 0x63, 0x5a, 0x06, 0xc8, 0x3d, 0x2a, 0x58, 0xff, 0x94, 0x95, 0x01, 0x72, 0xdb, 0x6a, - 0x19, 0x20, 0x36, 0xce, 0xb9, 0x27, 0x3d, 0x1c, 0x28, 0xcd, 0xff, 0x67, 0x83, 0xc8, 0x60, 0xdf, - 0xe6, 0x97, 0x1f, 0x0a, 0xa5, 0x20, 0xd5, 0x91, 0x81, 0x60, 0xfc, 0x8b, 0xc1, 0x9e, 0xb4, 0xfa, - 0x35, 0xbf, 0x32, 0x58, 0xc8, 0xe0, 0x94, 0x1a, 0xea, 0xaf, 0x7d, 0x38, 0x45, 0xf3, 0x2b, 0x53, - 0x08, 0xa9, 0x46, 0xda, 0x30, 0x42, 0x90, 0xfe, 0x8d, 0x92, 0x9e, 0xd2, 0xfc, 0xea, 0xcc, 0x22, - 0x8b, 0x56, 0x8a, 0xf5, 0xef, 0xfd, 0x68, 0x45, 0xf3, 0xab, 0x13, 0x8e, 0xb4, 0x0c, 0xa8, 0xcd, - 0xff, 0x8f, 0xac, 0x0c, 0xc8, 0xcd, 0xaf, 0x0c, 0x03, 0xd2, 0x42, 0xd5, 0x9a, 0xff, 0x9f, 0x59, - 0xa1, 0x2a, 0xcd, 0xaf, 0x8e, 0x0e, 0xd2, 0x68, 0xb5, 0xe6, 0xff, 0x57, 0x16, 0xad, 0xd2, 0xfc, - 0xea, 0xb3, 0x68, 0x5a, 0x06, 0xd4, 0xe6, 0xff, 0x77, 0x56, 0x06, 0xe4, 0xe6, 0x57, 0x06, 0x0e, - 0x9c, 0xf3, 0xa1, 0x34, 0xd7, 0xe5, 0xef, 0x70, 0xd0, 0x77, 0x73, 0x6c, 0x4e, 0x96, 0xd8, 0x3b, - 0x43, 0xc4, 0x33, 0x5f, 0x6e, 0x81, 0x8f, 0x80, 0x18, 0x1a, 0xd6, 0xc4, 0xcb, 0x1a, 0xf4, 0xbd, - 0x5c, 0xc6, 0xf9, 0xf1, 0x94, 0x43, 0x5c, 0xe1, 0x5f, 0x98, 0xe0, 0x47, 0xc1, 0x8c, 0x34, 0xc4, - 0xe6, 0x2f, 0x8e, 0xd0, 0xf7, 0xb3, 0xc8, 0xaa, 0x18, 0xf3, 0xd8, 0x8b, 0x5e, 0xc6, 0x64, 0xc2, - 0x04, 0xb7, 0xd4, 0xb9, 0x70, 0xaf, 0xde, 0x45, 0x3f, 0xa0, 0x44, 0x0b, 0x69, 0x45, 0xe8, 0xd5, - 0xbb, 0xca, 0xc4, 0xb8, 0x57, 0xef, 0xc2, 0x4d, 0x20, 0x66, 0x8b, 0x35, 0xaf, 0x7d, 0x82, 0x7e, - 0x48, 0xd7, 0xcf, 0x26, 0xd6, 0x6f, 0xb5, 0x4f, 0xdc, 0x3c, 0x87, 0x6e, 0xb5, 0x4f, 0xe0, 0x5d, - 0x69, 0xd6, 0xfc, 0x0a, 0x97, 0x01, 0xfd, 0x88, 0xae, 0x9d, 0x4f, 0xac, 0xa5, 0x55, 0x12, 0xd3, - 0x4d, 0xf2, 0x15, 0x97, 0x27, 0x6e, 0x50, 0x5e, 0x9e, 0x1f, 0xe7, 0x48, 0xb5, 0xfb, 0x95, 0x47, - 0xf4, 0xa5, 0x54, 0x1e, 0x41, 0x14, 0x97, 0xe7, 0x27, 0xb9, 0x0c, 0x85, 0x93, 0xca, 0xc3, 0x97, - 0xc5, 0xe5, 0x91, 0xb9, 0x48, 0x79, 0x48, 0x75, 0x7e, 0x9a, 0xc5, 0x25, 0x55, 0x27, 0x1e, 0x0a, - 0xb2, 0x55, 0xb8, 0x3a, 0xf2, 0xad, 0x82, 0xab, 0xf3, 0x4b, 0x4a, 0x94, 0x5d, 0x1d, 0xe9, 0xee, - 0x60, 0xd5, 0x11, 0x14, 0xb8, 0x3a, 0x3f, 0xa3, 0xeb, 0x33, 0xaa, 0xc3, 0xa1, 0xac, 0x3a, 0x62, - 0x25, 0xad, 0xce, 0xcf, 0xe9, 0xda, 0xcc, 0xea, 0x70, 0x38, 0xad, 0xce, 0x05, 0x00, 0xc8, 0xfe, - 0xdb, 0x5e, 0xcb, 0x5f, 0x43, 0x9f, 0x36, 0xc9, 0x6b, 0x28, 0xc9, 0x04, 0x2d, 0x90, 0xa7, 0xfd, - 0x8b, 0xbf, 0xae, 0xa3, 0xcf, 0xc8, 0x88, 0x5d, 0x6c, 0x82, 0x17, 0x41, 0xa1, 0x16, 0x43, 0x36, - 0xd0, 0x67, 0x19, 0xa4, 0xca, 0x21, 0x1b, 0x70, 0x09, 0x4c, 0x50, 0x04, 0x81, 0xd8, 0x35, 0xf4, - 0x39, 0x9d, 0x86, 0xfc, 0x3d, 0x49, 0xbe, 0xad, 0x62, 0xc8, 0x4d, 0xf4, 0x79, 0x8a, 0x90, 0x6d, - 0x70, 0x99, 0xd3, 0xac, 0x12, 0x1e, 0x07, 0x7d, 0x41, 0x01, 0x61, 0x1e, 0x47, 0xec, 0x08, 0x7f, - 0xbb, 0x85, 0xbe, 0xa8, 0x3b, 0xba, 0x85, 0x01, 0x22, 0xb4, 0x4d, 0xf4, 0x25, 0x3d, 0xda, 0xcd, - 0x78, 0xcb, 0xf8, 0xeb, 0x6d, 0xf4, 0x65, 0x9d, 0xe2, 0x36, 0x5c, 0x02, 0x85, 0xaa, 0x40, 0xac, - 0xad, 0xa2, 0xaf, 0xb0, 0x38, 0x04, 0xc9, 0xda, 0x2a, 0xc1, 0xec, 0x54, 0xde, 0x7d, 0x50, 0xdb, - 0xdd, 0x7a, 0x5c, 0x59, 0x5b, 0x43, 0x5f, 0xe5, 0x18, 0x6c, 0xa4, 0xb6, 0x18, 0x43, 0x72, 0xbd, - 0x8e, 0xbe, 0xa6, 0x60, 0x88, 0x0d, 0x5e, 0x02, 0x93, 0x35, 0x29, 0xbf, 0x6b, 0x1b, 0xe8, 0xeb, - 0x09, 0x6f, 0x1b, 0x14, 0x55, 0x8d, 0x51, 0x36, 0xfa, 0x46, 0x02, 0x65, 0xc7, 0x09, 0xa4, 0xa0, - 0x9b, 0xe8, 0x9b, 0x72, 0x02, 0x09, 0x48, 0xca, 0x32, 0xdd, 0x9d, 0x83, 0xbe, 0x95, 0x00, 0x39, - 0xd8, 0x9f, 0x14, 0xd3, 0xad, 0x5a, 0x0d, 0x7d, 0x3b, 0x81, 0xba, 0x85, 0x51, 0x52, 0x4c, 0x9b, - 0xb5, 0x1a, 0xfa, 0x4e, 0x22, 0xaa, 0xcd, 0xc5, 0xe7, 0x60, 0x42, 0x7d, 0xd0, 0x29, 0x00, 0xc3, - 0x63, 0x6f, 0x44, 0x0d, 0x0f, 0xbe, 0x0d, 0xf2, 0xf5, 0x40, 0xbc, 0xd4, 0x40, 0xb9, 0xd3, 0x5e, - 0x80, 0xc8, 0xe8, 0xc5, 0x7b, 0x00, 0x26, 0x87, 0x94, 0xb0, 0x08, 0xcc, 0x97, 0xfe, 0x09, 0x73, - 0x81, 0x7f, 0x85, 0xb3, 0xe0, 0x0c, 0xbd, 0x7d, 0x72, 0xc4, 0x46, 0xbf, 0xdc, 0xc9, 0x6d, 0x1a, - 0x31, 0x83, 0x3c, 0x90, 0x94, 0x19, 0xcc, 0x14, 0x06, 0x53, 0x66, 0x28, 0x83, 0xd9, 0xb4, 0xd1, - 0xa3, 0xcc, 0x31, 0x91, 0xc2, 0x31, 0x91, 0xce, 0xa1, 0x8c, 0x18, 0x65, 0x8e, 0xe1, 0x14, 0x8e, - 0xe1, 0x24, 0x47, 0x62, 0x94, 0x28, 0x73, 0x4c, 0xa7, 0x70, 0x4c, 0xa7, 0x73, 0x28, 0x23, 0x43, - 0x99, 0x03, 0xa6, 0x70, 0x40, 0x99, 0xe3, 0x01, 0x98, 0x4f, 0x1f, 0x0c, 0xca, 0x2c, 0xa3, 0x29, - 0x2c, 0xa3, 0x19, 0x2c, 0xea, 0xf0, 0x4f, 0x66, 0x19, 0x49, 0x61, 0x19, 0x91, 0x59, 0xaa, 0x00, - 0x65, 0x8d, 0xf7, 0x64, 0x9e, 0xa9, 0x14, 0x9e, 0xa9, 0x2c, 0x1e, 0x6d, 0x7c, 0x27, 0xf3, 0x14, - 0x53, 0x78, 0x8a, 0xa9, 0xdd, 0x26, 0x0f, 0xe9, 0x4e, 0xeb, 0xd7, 0x9c, 0xcc, 0xb0, 0x05, 0x66, - 0x52, 0xe6, 0x71, 0xa7, 0x51, 0x18, 0x32, 0xc5, 0x5d, 0x50, 0xd4, 0x87, 0x6f, 0xf2, 0xfa, 0xb1, - 0x94, 0xf5, 0x63, 0x29, 0x4d, 0xa2, 0x0f, 0xda, 0x64, 0x8e, 0xf1, 0x14, 0x8e, 0xf1, 0xe4, 0x36, - 0xf4, 0x89, 0xda, 0x69, 0x14, 0x05, 0x99, 0x22, 0x04, 0xe7, 0xfa, 0x8c, 0xcc, 0x52, 0xa8, 0xde, - 0x91, 0xa9, 0x5e, 0xe3, 0x7d, 0x95, 0xe4, 0xf3, 0x18, 0x9c, 0xef, 0x37, 0x33, 0x4b, 0x71, 0xba, - 0xa6, 0x3a, 0xed, 0xfb, 0x0a, 0x4b, 0x72, 0xd4, 0xa4, 0x0d, 0x97, 0x36, 0x2b, 0x4b, 0x71, 0x72, - 0x47, 0x76, 0x32, 0xe8, 0x4b, 0x2d, 0xc9, 0x9b, 0x07, 0xce, 0x66, 0xce, 0xcb, 0x52, 0xdc, 0xad, - 0xa8, 0xee, 0xb2, 0x5f, 0x75, 0xc5, 0x2e, 0x96, 0x6e, 0x03, 0x20, 0x4d, 0xf6, 0x46, 0x81, 0x59, - 0xdd, 0xdb, 0x2b, 0x0e, 0xe1, 0x5f, 0xca, 0x5b, 0x6e, 0xd1, 0xa0, 0xbf, 0x3c, 0x2f, 0xe6, 0xb0, - 0xbb, 0xdd, 0xca, 0xc3, 0xe2, 0x7f, 0xf9, 0x7f, 0x46, 0x79, 0x42, 0x8c, 0xa2, 0xf0, 0xa9, 0xb2, - 0xf4, 0x06, 0x98, 0xd4, 0x06, 0x92, 0x05, 0x60, 0xd4, 0xf9, 0x81, 0x52, 0xbf, 0x76, 0x13, 0x80, - 0xf8, 0xdf, 0x30, 0xc1, 0x29, 0x90, 0x3f, 0xd8, 0xdd, 0x7f, 0x52, 0xb9, 0xbf, 0x53, 0xdd, 0xa9, - 0x3c, 0x28, 0x0e, 0xc1, 0x02, 0x18, 0x7b, 0xe2, 0xee, 0x3d, 0xdd, 0x2b, 0x1f, 0x54, 0x8b, 0x06, - 0x1c, 0x03, 0xc3, 0x8f, 0xf6, 0xf7, 0x76, 0x8b, 0xb9, 0x6b, 0xf7, 0x40, 0x5e, 0x9e, 0x07, 0x4e, - 0x81, 0x7c, 0x75, 0xcf, 0xad, 0xec, 0x3c, 0xdc, 0xad, 0xd1, 0x48, 0x25, 0x03, 0x8d, 0x58, 0x31, - 0x3c, 0x2f, 0xe6, 0xca, 0x17, 0xc1, 0x85, 0x7a, 0xd0, 0x4a, 0xfc, 0x61, 0x26, 0x25, 0xe7, 0xc5, - 0x08, 0xb1, 0x6e, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x33, 0xc2, 0x0c, 0xb6, 0xeb, 0x26, 0x00, - 0x00, -} diff --git a/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.proto b/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.proto deleted file mode 100644 index 95a8fd13..00000000 --- a/vendor/github.com/golang/protobuf/_conformance/conformance_proto/conformance.proto +++ /dev/null @@ -1,285 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; -package conformance; -option java_package = "com.google.protobuf.conformance"; - -import "google/protobuf/any.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/field_mask.proto"; -import "google/protobuf/struct.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -// This defines the conformance testing protocol. This protocol exists between -// the conformance test suite itself and the code being tested. For each test, -// the suite will send a ConformanceRequest message and expect a -// ConformanceResponse message. -// -// You can either run the tests in two different ways: -// -// 1. in-process (using the interface in conformance_test.h). -// -// 2. as a sub-process communicating over a pipe. Information about how to -// do this is in conformance_test_runner.cc. -// -// Pros/cons of the two approaches: -// -// - running as a sub-process is much simpler for languages other than C/C++. -// -// - running as a sub-process may be more tricky in unusual environments like -// iOS apps, where fork/stdin/stdout are not available. - -enum WireFormat { - UNSPECIFIED = 0; - PROTOBUF = 1; - JSON = 2; -} - -// Represents a single test case's input. The testee should: -// -// 1. parse this proto (which should always succeed) -// 2. parse the protobuf or JSON payload in "payload" (which may fail) -// 3. if the parse succeeded, serialize the message in the requested format. -message ConformanceRequest { - // The payload (whether protobuf of JSON) is always for a TestAllTypes proto - // (see below). - oneof payload { - bytes protobuf_payload = 1; - string json_payload = 2; - } - - // Which format should the testee serialize its message to? - WireFormat requested_output_format = 3; -} - -// Represents a single test case's output. -message ConformanceResponse { - oneof result { - // This string should be set to indicate parsing failed. The string can - // provide more information about the parse error if it is available. - // - // Setting this string does not necessarily mean the testee failed the - // test. Some of the test cases are intentionally invalid input. - string parse_error = 1; - - // If the input was successfully parsed but errors occurred when - // serializing it to the requested output format, set the error message in - // this field. - string serialize_error = 6; - - // This should be set if some other error occurred. This will always - // indicate that the test failed. The string can provide more information - // about the failure. - string runtime_error = 2; - - // If the input was successfully parsed and the requested output was - // protobuf, serialize it to protobuf and set it in this field. - bytes protobuf_payload = 3; - - // If the input was successfully parsed and the requested output was JSON, - // serialize to JSON and set it in this field. - string json_payload = 4; - - // For when the testee skipped the test, likely because a certain feature - // wasn't supported, like JSON input/output. - string skipped = 5; - } -} - -// This proto includes every type of field in both singular and repeated -// forms. -message TestAllTypes { - message NestedMessage { - int32 a = 1; - TestAllTypes corecursive = 2; - } - - enum NestedEnum { - FOO = 0; - BAR = 1; - BAZ = 2; - NEG = -1; // Intentionally negative. - } - - // Singular - int32 optional_int32 = 1; - int64 optional_int64 = 2; - uint32 optional_uint32 = 3; - uint64 optional_uint64 = 4; - sint32 optional_sint32 = 5; - sint64 optional_sint64 = 6; - fixed32 optional_fixed32 = 7; - fixed64 optional_fixed64 = 8; - sfixed32 optional_sfixed32 = 9; - sfixed64 optional_sfixed64 = 10; - float optional_float = 11; - double optional_double = 12; - bool optional_bool = 13; - string optional_string = 14; - bytes optional_bytes = 15; - - NestedMessage optional_nested_message = 18; - ForeignMessage optional_foreign_message = 19; - - NestedEnum optional_nested_enum = 21; - ForeignEnum optional_foreign_enum = 22; - - string optional_string_piece = 24 [ctype=STRING_PIECE]; - string optional_cord = 25 [ctype=CORD]; - - TestAllTypes recursive_message = 27; - - // Repeated - repeated int32 repeated_int32 = 31; - repeated int64 repeated_int64 = 32; - repeated uint32 repeated_uint32 = 33; - repeated uint64 repeated_uint64 = 34; - repeated sint32 repeated_sint32 = 35; - repeated sint64 repeated_sint64 = 36; - repeated fixed32 repeated_fixed32 = 37; - repeated fixed64 repeated_fixed64 = 38; - repeated sfixed32 repeated_sfixed32 = 39; - repeated sfixed64 repeated_sfixed64 = 40; - repeated float repeated_float = 41; - repeated double repeated_double = 42; - repeated bool repeated_bool = 43; - repeated string repeated_string = 44; - repeated bytes repeated_bytes = 45; - - repeated NestedMessage repeated_nested_message = 48; - repeated ForeignMessage repeated_foreign_message = 49; - - repeated NestedEnum repeated_nested_enum = 51; - repeated ForeignEnum repeated_foreign_enum = 52; - - repeated string repeated_string_piece = 54 [ctype=STRING_PIECE]; - repeated string repeated_cord = 55 [ctype=CORD]; - - // Map - map < int32, int32> map_int32_int32 = 56; - map < int64, int64> map_int64_int64 = 57; - map < uint32, uint32> map_uint32_uint32 = 58; - map < uint64, uint64> map_uint64_uint64 = 59; - map < sint32, sint32> map_sint32_sint32 = 60; - map < sint64, sint64> map_sint64_sint64 = 61; - map < fixed32, fixed32> map_fixed32_fixed32 = 62; - map < fixed64, fixed64> map_fixed64_fixed64 = 63; - map map_sfixed32_sfixed32 = 64; - map map_sfixed64_sfixed64 = 65; - map < int32, float> map_int32_float = 66; - map < int32, double> map_int32_double = 67; - map < bool, bool> map_bool_bool = 68; - map < string, string> map_string_string = 69; - map < string, bytes> map_string_bytes = 70; - map < string, NestedMessage> map_string_nested_message = 71; - map < string, ForeignMessage> map_string_foreign_message = 72; - map < string, NestedEnum> map_string_nested_enum = 73; - map < string, ForeignEnum> map_string_foreign_enum = 74; - - oneof oneof_field { - uint32 oneof_uint32 = 111; - NestedMessage oneof_nested_message = 112; - string oneof_string = 113; - bytes oneof_bytes = 114; - bool oneof_bool = 115; - uint64 oneof_uint64 = 116; - float oneof_float = 117; - double oneof_double = 118; - NestedEnum oneof_enum = 119; - } - - // Well-known types - google.protobuf.BoolValue optional_bool_wrapper = 201; - google.protobuf.Int32Value optional_int32_wrapper = 202; - google.protobuf.Int64Value optional_int64_wrapper = 203; - google.protobuf.UInt32Value optional_uint32_wrapper = 204; - google.protobuf.UInt64Value optional_uint64_wrapper = 205; - google.protobuf.FloatValue optional_float_wrapper = 206; - google.protobuf.DoubleValue optional_double_wrapper = 207; - google.protobuf.StringValue optional_string_wrapper = 208; - google.protobuf.BytesValue optional_bytes_wrapper = 209; - - repeated google.protobuf.BoolValue repeated_bool_wrapper = 211; - repeated google.protobuf.Int32Value repeated_int32_wrapper = 212; - repeated google.protobuf.Int64Value repeated_int64_wrapper = 213; - repeated google.protobuf.UInt32Value repeated_uint32_wrapper = 214; - repeated google.protobuf.UInt64Value repeated_uint64_wrapper = 215; - repeated google.protobuf.FloatValue repeated_float_wrapper = 216; - repeated google.protobuf.DoubleValue repeated_double_wrapper = 217; - repeated google.protobuf.StringValue repeated_string_wrapper = 218; - repeated google.protobuf.BytesValue repeated_bytes_wrapper = 219; - - google.protobuf.Duration optional_duration = 301; - google.protobuf.Timestamp optional_timestamp = 302; - google.protobuf.FieldMask optional_field_mask = 303; - google.protobuf.Struct optional_struct = 304; - google.protobuf.Any optional_any = 305; - google.protobuf.Value optional_value = 306; - - repeated google.protobuf.Duration repeated_duration = 311; - repeated google.protobuf.Timestamp repeated_timestamp = 312; - repeated google.protobuf.FieldMask repeated_fieldmask = 313; - repeated google.protobuf.Struct repeated_struct = 324; - repeated google.protobuf.Any repeated_any = 315; - repeated google.protobuf.Value repeated_value = 316; - - // Test field-name-to-JSON-name convention. - // (protobuf says names can be any valid C/C++ identifier.) - int32 fieldname1 = 401; - int32 field_name2 = 402; - int32 _field_name3 = 403; - int32 field__name4_ = 404; - int32 field0name5 = 405; - int32 field_0_name6 = 406; - int32 fieldName7 = 407; - int32 FieldName8 = 408; - int32 field_Name9 = 409; - int32 Field_Name10 = 410; - int32 FIELD_NAME11 = 411; - int32 FIELD_name12 = 412; - int32 __field_name13 = 413; - int32 __Field_name14 = 414; - int32 field__name15 = 415; - int32 field__Name16 = 416; - int32 field_name17__ = 417; - int32 Field_name18__ = 418; -} - -message ForeignMessage { - int32 c = 1; -} - -enum ForeignEnum { - FOREIGN_FOO = 0; - FOREIGN_BAR = 1; - FOREIGN_BAZ = 2; -} diff --git a/vendor/github.com/golang/protobuf/descriptor/descriptor.go b/vendor/github.com/golang/protobuf/descriptor/descriptor.go deleted file mode 100644 index ac7e51bf..00000000 --- a/vendor/github.com/golang/protobuf/descriptor/descriptor.go +++ /dev/null @@ -1,93 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Package descriptor provides functions for obtaining protocol buffer -// descriptors for generated Go types. -// -// These functions cannot go in package proto because they depend on the -// generated protobuf descriptor messages, which themselves depend on proto. -package descriptor - -import ( - "bytes" - "compress/gzip" - "fmt" - "io/ioutil" - - "github.com/golang/protobuf/proto" - protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" -) - -// extractFile extracts a FileDescriptorProto from a gzip'd buffer. -func extractFile(gz []byte) (*protobuf.FileDescriptorProto, error) { - r, err := gzip.NewReader(bytes.NewReader(gz)) - if err != nil { - return nil, fmt.Errorf("failed to open gzip reader: %v", err) - } - defer r.Close() - - b, err := ioutil.ReadAll(r) - if err != nil { - return nil, fmt.Errorf("failed to uncompress descriptor: %v", err) - } - - fd := new(protobuf.FileDescriptorProto) - if err := proto.Unmarshal(b, fd); err != nil { - return nil, fmt.Errorf("malformed FileDescriptorProto: %v", err) - } - - return fd, nil -} - -// Message is a proto.Message with a method to return its descriptor. -// -// Message types generated by the protocol compiler always satisfy -// the Message interface. -type Message interface { - proto.Message - Descriptor() ([]byte, []int) -} - -// ForMessage returns a FileDescriptorProto and a DescriptorProto from within it -// describing the given message. -func ForMessage(msg Message) (fd *protobuf.FileDescriptorProto, md *protobuf.DescriptorProto) { - gz, path := msg.Descriptor() - fd, err := extractFile(gz) - if err != nil { - panic(fmt.Sprintf("invalid FileDescriptorProto for %T: %v", msg, err)) - } - - md = fd.MessageType[path[0]] - for _, i := range path[1:] { - md = md.NestedType[i] - } - return fd, md -} diff --git a/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go b/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go deleted file mode 100644 index 27b0729c..00000000 --- a/vendor/github.com/golang/protobuf/descriptor/descriptor_test.go +++ /dev/null @@ -1,32 +0,0 @@ -package descriptor_test - -import ( - "fmt" - "testing" - - "github.com/golang/protobuf/descriptor" - tpb "github.com/golang/protobuf/proto/testdata" - protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" -) - -func TestMessage(t *testing.T) { - var msg *protobuf.DescriptorProto - fd, md := descriptor.ForMessage(msg) - if pkg, want := fd.GetPackage(), "google.protobuf"; pkg != want { - t.Errorf("descriptor.ForMessage(%T).GetPackage() = %q; want %q", msg, pkg, want) - } - if name, want := md.GetName(), "DescriptorProto"; name != want { - t.Fatalf("descriptor.ForMessage(%T).GetName() = %q; want %q", msg, name, want) - } -} - -func Example_Options() { - var msg *tpb.MyMessageSet - _, md := descriptor.ForMessage(msg) - if md.GetOptions().GetMessageSetWireFormat() { - fmt.Printf("%v uses option message_set_wire_format.\n", md.GetName()) - } - - // Output: - // MyMessageSet uses option message_set_wire_format. -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go deleted file mode 100644 index 110ae138..00000000 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb.go +++ /dev/null @@ -1,1083 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2015 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* -Package jsonpb provides marshaling and unmarshaling between protocol buffers and JSON. -It follows the specification at https://developers.google.com/protocol-buffers/docs/proto3#json. - -This package produces a different output than the standard "encoding/json" package, -which does not operate correctly on protocol buffers. -*/ -package jsonpb - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "math" - "reflect" - "sort" - "strconv" - "strings" - "time" - - "github.com/golang/protobuf/proto" - - stpb "github.com/golang/protobuf/ptypes/struct" -) - -// Marshaler is a configurable object for converting between -// protocol buffer objects and a JSON representation for them. -type Marshaler struct { - // Whether to render enum values as integers, as opposed to string values. - EnumsAsInts bool - - // Whether to render fields with zero values. - EmitDefaults bool - - // A string to indent each level by. The presence of this field will - // also cause a space to appear between the field separator and - // value, and for newlines to be appear between fields and array - // elements. - Indent string - - // Whether to use the original (.proto) name for fields. - OrigName bool - - // A custom URL resolver to use when marshaling Any messages to JSON. - // If unset, the default resolution strategy is to extract the - // fully-qualified type name from the type URL and pass that to - // proto.MessageType(string). - AnyResolver AnyResolver -} - -// AnyResolver takes a type URL, present in an Any message, and resolves it into -// an instance of the associated message. -type AnyResolver interface { - Resolve(typeUrl string) (proto.Message, error) -} - -func defaultResolveAny(typeUrl string) (proto.Message, error) { - // Only the part of typeUrl after the last slash is relevant. - mname := typeUrl - if slash := strings.LastIndex(mname, "/"); slash >= 0 { - mname = mname[slash+1:] - } - mt := proto.MessageType(mname) - if mt == nil { - return nil, fmt.Errorf("unknown message type %q", mname) - } - return reflect.New(mt.Elem()).Interface().(proto.Message), nil -} - -// JSONPBMarshaler is implemented by protobuf messages that customize the -// way they are marshaled to JSON. Messages that implement this should -// also implement JSONPBUnmarshaler so that the custom format can be -// parsed. -type JSONPBMarshaler interface { - MarshalJSONPB(*Marshaler) ([]byte, error) -} - -// JSONPBUnmarshaler is implemented by protobuf messages that customize -// the way they are unmarshaled from JSON. Messages that implement this -// should also implement JSONPBMarshaler so that the custom format can be -// produced. -type JSONPBUnmarshaler interface { - UnmarshalJSONPB(*Unmarshaler, []byte) error -} - -// Marshal marshals a protocol buffer into JSON. -func (m *Marshaler) Marshal(out io.Writer, pb proto.Message) error { - writer := &errWriter{writer: out} - return m.marshalObject(writer, pb, "", "") -} - -// MarshalToString converts a protocol buffer object to JSON string. -func (m *Marshaler) MarshalToString(pb proto.Message) (string, error) { - var buf bytes.Buffer - if err := m.Marshal(&buf, pb); err != nil { - return "", err - } - return buf.String(), nil -} - -type int32Slice []int32 - -var nonFinite = map[string]float64{ - `"NaN"`: math.NaN(), - `"Infinity"`: math.Inf(1), - `"-Infinity"`: math.Inf(-1), -} - -// For sorting extensions ids to ensure stable output. -func (s int32Slice) Len() int { return len(s) } -func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] } -func (s int32Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } - -type wkt interface { - XXX_WellKnownType() string -} - -// marshalObject writes a struct to the Writer. -func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeURL string) error { - if jsm, ok := v.(JSONPBMarshaler); ok { - b, err := jsm.MarshalJSONPB(m) - if err != nil { - return err - } - if typeURL != "" { - // we are marshaling this object to an Any type - var js map[string]*json.RawMessage - if err = json.Unmarshal(b, &js); err != nil { - return fmt.Errorf("type %T produced invalid JSON: %v", v, err) - } - turl, err := json.Marshal(typeURL) - if err != nil { - return fmt.Errorf("failed to marshal type URL %q to JSON: %v", typeURL, err) - } - js["@type"] = (*json.RawMessage)(&turl) - if b, err = json.Marshal(js); err != nil { - return err - } - } - - out.write(string(b)) - return out.err - } - - s := reflect.ValueOf(v).Elem() - - // Handle well-known types. - if wkt, ok := v.(wkt); ok { - switch wkt.XXX_WellKnownType() { - case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value", - "Int32Value", "UInt32Value", "BoolValue", "StringValue", "BytesValue": - // "Wrappers use the same representation in JSON - // as the wrapped primitive type, ..." - sprop := proto.GetProperties(s.Type()) - return m.marshalValue(out, sprop.Prop[0], s.Field(0), indent) - case "Any": - // Any is a bit more involved. - return m.marshalAny(out, v, indent) - case "Duration": - // "Generated output always contains 3, 6, or 9 fractional digits, - // depending on required precision." - s, ns := s.Field(0).Int(), s.Field(1).Int() - d := time.Duration(s)*time.Second + time.Duration(ns)*time.Nanosecond - x := fmt.Sprintf("%.9f", d.Seconds()) - x = strings.TrimSuffix(x, "000") - x = strings.TrimSuffix(x, "000") - out.write(`"`) - out.write(x) - out.write(`s"`) - return out.err - case "Struct", "ListValue": - // Let marshalValue handle the `Struct.fields` map or the `ListValue.values` slice. - // TODO: pass the correct Properties if needed. - return m.marshalValue(out, &proto.Properties{}, s.Field(0), indent) - case "Timestamp": - // "RFC 3339, where generated output will always be Z-normalized - // and uses 3, 6 or 9 fractional digits." - s, ns := s.Field(0).Int(), s.Field(1).Int() - t := time.Unix(s, ns).UTC() - // time.RFC3339Nano isn't exactly right (we need to get 3/6/9 fractional digits). - x := t.Format("2006-01-02T15:04:05.000000000") - x = strings.TrimSuffix(x, "000") - x = strings.TrimSuffix(x, "000") - out.write(`"`) - out.write(x) - out.write(`Z"`) - return out.err - case "Value": - // Value has a single oneof. - kind := s.Field(0) - if kind.IsNil() { - // "absence of any variant indicates an error" - return errors.New("nil Value") - } - // oneof -> *T -> T -> T.F - x := kind.Elem().Elem().Field(0) - // TODO: pass the correct Properties if needed. - return m.marshalValue(out, &proto.Properties{}, x, indent) - } - } - - out.write("{") - if m.Indent != "" { - out.write("\n") - } - - firstField := true - - if typeURL != "" { - if err := m.marshalTypeURL(out, indent, typeURL); err != nil { - return err - } - firstField = false - } - - for i := 0; i < s.NumField(); i++ { - value := s.Field(i) - valueField := s.Type().Field(i) - if strings.HasPrefix(valueField.Name, "XXX_") { - continue - } - - // IsNil will panic on most value kinds. - switch value.Kind() { - case reflect.Chan, reflect.Func, reflect.Interface: - if value.IsNil() { - continue - } - } - - if !m.EmitDefaults { - switch value.Kind() { - case reflect.Bool: - if !value.Bool() { - continue - } - case reflect.Int32, reflect.Int64: - if value.Int() == 0 { - continue - } - case reflect.Uint32, reflect.Uint64: - if value.Uint() == 0 { - continue - } - case reflect.Float32, reflect.Float64: - if value.Float() == 0 { - continue - } - case reflect.String: - if value.Len() == 0 { - continue - } - case reflect.Map, reflect.Ptr, reflect.Slice: - if value.IsNil() { - continue - } - } - } - - // Oneof fields need special handling. - if valueField.Tag.Get("protobuf_oneof") != "" { - // value is an interface containing &T{real_value}. - sv := value.Elem().Elem() // interface -> *T -> T - value = sv.Field(0) - valueField = sv.Type().Field(0) - } - prop := jsonProperties(valueField, m.OrigName) - if !firstField { - m.writeSep(out) - } - if err := m.marshalField(out, prop, value, indent); err != nil { - return err - } - firstField = false - } - - // Handle proto2 extensions. - if ep, ok := v.(proto.Message); ok { - extensions := proto.RegisteredExtensions(v) - // Sort extensions for stable output. - ids := make([]int32, 0, len(extensions)) - for id, desc := range extensions { - if !proto.HasExtension(ep, desc) { - continue - } - ids = append(ids, id) - } - sort.Sort(int32Slice(ids)) - for _, id := range ids { - desc := extensions[id] - if desc == nil { - // unknown extension - continue - } - ext, extErr := proto.GetExtension(ep, desc) - if extErr != nil { - return extErr - } - value := reflect.ValueOf(ext) - var prop proto.Properties - prop.Parse(desc.Tag) - prop.JSONName = fmt.Sprintf("[%s]", desc.Name) - if !firstField { - m.writeSep(out) - } - if err := m.marshalField(out, &prop, value, indent); err != nil { - return err - } - firstField = false - } - - } - - if m.Indent != "" { - out.write("\n") - out.write(indent) - } - out.write("}") - return out.err -} - -func (m *Marshaler) writeSep(out *errWriter) { - if m.Indent != "" { - out.write(",\n") - } else { - out.write(",") - } -} - -func (m *Marshaler) marshalAny(out *errWriter, any proto.Message, indent string) error { - // "If the Any contains a value that has a special JSON mapping, - // it will be converted as follows: {"@type": xxx, "value": yyy}. - // Otherwise, the value will be converted into a JSON object, - // and the "@type" field will be inserted to indicate the actual data type." - v := reflect.ValueOf(any).Elem() - turl := v.Field(0).String() - val := v.Field(1).Bytes() - - var msg proto.Message - var err error - if m.AnyResolver != nil { - msg, err = m.AnyResolver.Resolve(turl) - } else { - msg, err = defaultResolveAny(turl) - } - if err != nil { - return err - } - - if err := proto.Unmarshal(val, msg); err != nil { - return err - } - - if _, ok := msg.(wkt); ok { - out.write("{") - if m.Indent != "" { - out.write("\n") - } - if err := m.marshalTypeURL(out, indent, turl); err != nil { - return err - } - m.writeSep(out) - if m.Indent != "" { - out.write(indent) - out.write(m.Indent) - out.write(`"value": `) - } else { - out.write(`"value":`) - } - if err := m.marshalObject(out, msg, indent+m.Indent, ""); err != nil { - return err - } - if m.Indent != "" { - out.write("\n") - out.write(indent) - } - out.write("}") - return out.err - } - - return m.marshalObject(out, msg, indent, turl) -} - -func (m *Marshaler) marshalTypeURL(out *errWriter, indent, typeURL string) error { - if m.Indent != "" { - out.write(indent) - out.write(m.Indent) - } - out.write(`"@type":`) - if m.Indent != "" { - out.write(" ") - } - b, err := json.Marshal(typeURL) - if err != nil { - return err - } - out.write(string(b)) - return out.err -} - -// marshalField writes field description and value to the Writer. -func (m *Marshaler) marshalField(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error { - if m.Indent != "" { - out.write(indent) - out.write(m.Indent) - } - out.write(`"`) - out.write(prop.JSONName) - out.write(`":`) - if m.Indent != "" { - out.write(" ") - } - if err := m.marshalValue(out, prop, v, indent); err != nil { - return err - } - return nil -} - -// marshalValue writes the value to the Writer. -func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error { - var err error - v = reflect.Indirect(v) - - // Handle nil pointer - if v.Kind() == reflect.Invalid { - out.write("null") - return out.err - } - - // Handle repeated elements. - if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 { - out.write("[") - comma := "" - for i := 0; i < v.Len(); i++ { - sliceVal := v.Index(i) - out.write(comma) - if m.Indent != "" { - out.write("\n") - out.write(indent) - out.write(m.Indent) - out.write(m.Indent) - } - if err := m.marshalValue(out, prop, sliceVal, indent+m.Indent); err != nil { - return err - } - comma = "," - } - if m.Indent != "" { - out.write("\n") - out.write(indent) - out.write(m.Indent) - } - out.write("]") - return out.err - } - - // Handle well-known types. - // Most are handled up in marshalObject (because 99% are messages). - if wkt, ok := v.Interface().(wkt); ok { - switch wkt.XXX_WellKnownType() { - case "NullValue": - out.write("null") - return out.err - } - } - - // Handle enumerations. - if !m.EnumsAsInts && prop.Enum != "" { - // Unknown enum values will are stringified by the proto library as their - // value. Such values should _not_ be quoted or they will be interpreted - // as an enum string instead of their value. - enumStr := v.Interface().(fmt.Stringer).String() - var valStr string - if v.Kind() == reflect.Ptr { - valStr = strconv.Itoa(int(v.Elem().Int())) - } else { - valStr = strconv.Itoa(int(v.Int())) - } - isKnownEnum := enumStr != valStr - if isKnownEnum { - out.write(`"`) - } - out.write(enumStr) - if isKnownEnum { - out.write(`"`) - } - return out.err - } - - // Handle nested messages. - if v.Kind() == reflect.Struct { - return m.marshalObject(out, v.Addr().Interface().(proto.Message), indent+m.Indent, "") - } - - // Handle maps. - // Since Go randomizes map iteration, we sort keys for stable output. - if v.Kind() == reflect.Map { - out.write(`{`) - keys := v.MapKeys() - sort.Sort(mapKeys(keys)) - for i, k := range keys { - if i > 0 { - out.write(`,`) - } - if m.Indent != "" { - out.write("\n") - out.write(indent) - out.write(m.Indent) - out.write(m.Indent) - } - - b, err := json.Marshal(k.Interface()) - if err != nil { - return err - } - s := string(b) - - // If the JSON is not a string value, encode it again to make it one. - if !strings.HasPrefix(s, `"`) { - b, err := json.Marshal(s) - if err != nil { - return err - } - s = string(b) - } - - out.write(s) - out.write(`:`) - if m.Indent != "" { - out.write(` `) - } - - if err := m.marshalValue(out, prop, v.MapIndex(k), indent+m.Indent); err != nil { - return err - } - } - if m.Indent != "" { - out.write("\n") - out.write(indent) - out.write(m.Indent) - } - out.write(`}`) - return out.err - } - - // Handle non-finite floats, e.g. NaN, Infinity and -Infinity. - if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 { - f := v.Float() - var sval string - switch { - case math.IsInf(f, 1): - sval = `"Infinity"` - case math.IsInf(f, -1): - sval = `"-Infinity"` - case math.IsNaN(f): - sval = `"NaN"` - } - if sval != "" { - out.write(sval) - return out.err - } - } - - // Default handling defers to the encoding/json library. - b, err := json.Marshal(v.Interface()) - if err != nil { - return err - } - needToQuote := string(b[0]) != `"` && (v.Kind() == reflect.Int64 || v.Kind() == reflect.Uint64) - if needToQuote { - out.write(`"`) - } - out.write(string(b)) - if needToQuote { - out.write(`"`) - } - return out.err -} - -// Unmarshaler is a configurable object for converting from a JSON -// representation to a protocol buffer object. -type Unmarshaler struct { - // Whether to allow messages to contain unknown fields, as opposed to - // failing to unmarshal. - AllowUnknownFields bool - - // A custom URL resolver to use when unmarshaling Any messages from JSON. - // If unset, the default resolution strategy is to extract the - // fully-qualified type name from the type URL and pass that to - // proto.MessageType(string). - AnyResolver AnyResolver -} - -// UnmarshalNext unmarshals the next protocol buffer from a JSON object stream. -// This function is lenient and will decode any options permutations of the -// related Marshaler. -func (u *Unmarshaler) UnmarshalNext(dec *json.Decoder, pb proto.Message) error { - inputValue := json.RawMessage{} - if err := dec.Decode(&inputValue); err != nil { - return err - } - return u.unmarshalValue(reflect.ValueOf(pb).Elem(), inputValue, nil) -} - -// Unmarshal unmarshals a JSON object stream into a protocol -// buffer. This function is lenient and will decode any options -// permutations of the related Marshaler. -func (u *Unmarshaler) Unmarshal(r io.Reader, pb proto.Message) error { - dec := json.NewDecoder(r) - return u.UnmarshalNext(dec, pb) -} - -// UnmarshalNext unmarshals the next protocol buffer from a JSON object stream. -// This function is lenient and will decode any options permutations of the -// related Marshaler. -func UnmarshalNext(dec *json.Decoder, pb proto.Message) error { - return new(Unmarshaler).UnmarshalNext(dec, pb) -} - -// Unmarshal unmarshals a JSON object stream into a protocol -// buffer. This function is lenient and will decode any options -// permutations of the related Marshaler. -func Unmarshal(r io.Reader, pb proto.Message) error { - return new(Unmarshaler).Unmarshal(r, pb) -} - -// UnmarshalString will populate the fields of a protocol buffer based -// on a JSON string. This function is lenient and will decode any options -// permutations of the related Marshaler. -func UnmarshalString(str string, pb proto.Message) error { - return new(Unmarshaler).Unmarshal(strings.NewReader(str), pb) -} - -// unmarshalValue converts/copies a value into the target. -// prop may be nil. -func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMessage, prop *proto.Properties) error { - targetType := target.Type() - - // Allocate memory for pointer fields. - if targetType.Kind() == reflect.Ptr { - // If input value is "null" and target is a pointer type, then the field should be treated as not set - // UNLESS the target is structpb.Value, in which case it should be set to structpb.NullValue. - _, isJSONPBUnmarshaler := target.Interface().(JSONPBUnmarshaler) - if string(inputValue) == "null" && targetType != reflect.TypeOf(&stpb.Value{}) && !isJSONPBUnmarshaler { - return nil - } - target.Set(reflect.New(targetType.Elem())) - - return u.unmarshalValue(target.Elem(), inputValue, prop) - } - - if jsu, ok := target.Addr().Interface().(JSONPBUnmarshaler); ok { - return jsu.UnmarshalJSONPB(u, []byte(inputValue)) - } - - // Handle well-known types that are not pointers. - if w, ok := target.Addr().Interface().(wkt); ok { - switch w.XXX_WellKnownType() { - case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value", - "Int32Value", "UInt32Value", "BoolValue", "StringValue", "BytesValue": - return u.unmarshalValue(target.Field(0), inputValue, prop) - case "Any": - // Use json.RawMessage pointer type instead of value to support pre-1.8 version. - // 1.8 changed RawMessage.MarshalJSON from pointer type to value type, see - // https://github.com/golang/go/issues/14493 - var jsonFields map[string]*json.RawMessage - if err := json.Unmarshal(inputValue, &jsonFields); err != nil { - return err - } - - val, ok := jsonFields["@type"] - if !ok || val == nil { - return errors.New("Any JSON doesn't have '@type'") - } - - var turl string - if err := json.Unmarshal([]byte(*val), &turl); err != nil { - return fmt.Errorf("can't unmarshal Any's '@type': %q", *val) - } - target.Field(0).SetString(turl) - - var m proto.Message - var err error - if u.AnyResolver != nil { - m, err = u.AnyResolver.Resolve(turl) - } else { - m, err = defaultResolveAny(turl) - } - if err != nil { - return err - } - - if _, ok := m.(wkt); ok { - val, ok := jsonFields["value"] - if !ok { - return errors.New("Any JSON doesn't have 'value'") - } - - if err := u.unmarshalValue(reflect.ValueOf(m).Elem(), *val, nil); err != nil { - return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err) - } - } else { - delete(jsonFields, "@type") - nestedProto, err := json.Marshal(jsonFields) - if err != nil { - return fmt.Errorf("can't generate JSON for Any's nested proto to be unmarshaled: %v", err) - } - - if err = u.unmarshalValue(reflect.ValueOf(m).Elem(), nestedProto, nil); err != nil { - return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err) - } - } - - b, err := proto.Marshal(m) - if err != nil { - return fmt.Errorf("can't marshal proto %T into Any.Value: %v", m, err) - } - target.Field(1).SetBytes(b) - - return nil - case "Duration": - unq, err := strconv.Unquote(string(inputValue)) - if err != nil { - return err - } - - d, err := time.ParseDuration(unq) - if err != nil { - return fmt.Errorf("bad Duration: %v", err) - } - - ns := d.Nanoseconds() - s := ns / 1e9 - ns %= 1e9 - target.Field(0).SetInt(s) - target.Field(1).SetInt(ns) - return nil - case "Timestamp": - unq, err := strconv.Unquote(string(inputValue)) - if err != nil { - return err - } - - t, err := time.Parse(time.RFC3339Nano, unq) - if err != nil { - return fmt.Errorf("bad Timestamp: %v", err) - } - - target.Field(0).SetInt(t.Unix()) - target.Field(1).SetInt(int64(t.Nanosecond())) - return nil - case "Struct": - var m map[string]json.RawMessage - if err := json.Unmarshal(inputValue, &m); err != nil { - return fmt.Errorf("bad StructValue: %v", err) - } - - target.Field(0).Set(reflect.ValueOf(map[string]*stpb.Value{})) - for k, jv := range m { - pv := &stpb.Value{} - if err := u.unmarshalValue(reflect.ValueOf(pv).Elem(), jv, prop); err != nil { - return fmt.Errorf("bad value in StructValue for key %q: %v", k, err) - } - target.Field(0).SetMapIndex(reflect.ValueOf(k), reflect.ValueOf(pv)) - } - return nil - case "ListValue": - var s []json.RawMessage - if err := json.Unmarshal(inputValue, &s); err != nil { - return fmt.Errorf("bad ListValue: %v", err) - } - - target.Field(0).Set(reflect.ValueOf(make([]*stpb.Value, len(s), len(s)))) - for i, sv := range s { - if err := u.unmarshalValue(target.Field(0).Index(i), sv, prop); err != nil { - return err - } - } - return nil - case "Value": - ivStr := string(inputValue) - if ivStr == "null" { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_NullValue{})) - } else if v, err := strconv.ParseFloat(ivStr, 0); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_NumberValue{v})) - } else if v, err := strconv.Unquote(ivStr); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_StringValue{v})) - } else if v, err := strconv.ParseBool(ivStr); err == nil { - target.Field(0).Set(reflect.ValueOf(&stpb.Value_BoolValue{v})) - } else if err := json.Unmarshal(inputValue, &[]json.RawMessage{}); err == nil { - lv := &stpb.ListValue{} - target.Field(0).Set(reflect.ValueOf(&stpb.Value_ListValue{lv})) - return u.unmarshalValue(reflect.ValueOf(lv).Elem(), inputValue, prop) - } else if err := json.Unmarshal(inputValue, &map[string]json.RawMessage{}); err == nil { - sv := &stpb.Struct{} - target.Field(0).Set(reflect.ValueOf(&stpb.Value_StructValue{sv})) - return u.unmarshalValue(reflect.ValueOf(sv).Elem(), inputValue, prop) - } else { - return fmt.Errorf("unrecognized type for Value %q", ivStr) - } - return nil - } - } - - // Handle enums, which have an underlying type of int32, - // and may appear as strings. - // The case of an enum appearing as a number is handled - // at the bottom of this function. - if inputValue[0] == '"' && prop != nil && prop.Enum != "" { - vmap := proto.EnumValueMap(prop.Enum) - // Don't need to do unquoting; valid enum names - // are from a limited character set. - s := inputValue[1 : len(inputValue)-1] - n, ok := vmap[string(s)] - if !ok { - return fmt.Errorf("unknown value %q for enum %s", s, prop.Enum) - } - if target.Kind() == reflect.Ptr { // proto2 - target.Set(reflect.New(targetType.Elem())) - target = target.Elem() - } - target.SetInt(int64(n)) - return nil - } - - // Handle nested messages. - if targetType.Kind() == reflect.Struct { - var jsonFields map[string]json.RawMessage - if err := json.Unmarshal(inputValue, &jsonFields); err != nil { - return err - } - - consumeField := func(prop *proto.Properties) (json.RawMessage, bool) { - // Be liberal in what names we accept; both orig_name and camelName are okay. - fieldNames := acceptedJSONFieldNames(prop) - - vOrig, okOrig := jsonFields[fieldNames.orig] - vCamel, okCamel := jsonFields[fieldNames.camel] - if !okOrig && !okCamel { - return nil, false - } - // If, for some reason, both are present in the data, favour the camelName. - var raw json.RawMessage - if okOrig { - raw = vOrig - delete(jsonFields, fieldNames.orig) - } - if okCamel { - raw = vCamel - delete(jsonFields, fieldNames.camel) - } - return raw, true - } - - sprops := proto.GetProperties(targetType) - for i := 0; i < target.NumField(); i++ { - ft := target.Type().Field(i) - if strings.HasPrefix(ft.Name, "XXX_") { - continue - } - - valueForField, ok := consumeField(sprops.Prop[i]) - if !ok { - continue - } - - if err := u.unmarshalValue(target.Field(i), valueForField, sprops.Prop[i]); err != nil { - return err - } - } - // Check for any oneof fields. - if len(jsonFields) > 0 { - for _, oop := range sprops.OneofTypes { - raw, ok := consumeField(oop.Prop) - if !ok { - continue - } - nv := reflect.New(oop.Type.Elem()) - target.Field(oop.Field).Set(nv) - if err := u.unmarshalValue(nv.Elem().Field(0), raw, oop.Prop); err != nil { - return err - } - } - } - // Handle proto2 extensions. - if len(jsonFields) > 0 { - if ep, ok := target.Addr().Interface().(proto.Message); ok { - for _, ext := range proto.RegisteredExtensions(ep) { - name := fmt.Sprintf("[%s]", ext.Name) - raw, ok := jsonFields[name] - if !ok { - continue - } - delete(jsonFields, name) - nv := reflect.New(reflect.TypeOf(ext.ExtensionType).Elem()) - if err := u.unmarshalValue(nv.Elem(), raw, nil); err != nil { - return err - } - if err := proto.SetExtension(ep, ext, nv.Interface()); err != nil { - return err - } - } - } - } - if !u.AllowUnknownFields && len(jsonFields) > 0 { - // Pick any field to be the scapegoat. - var f string - for fname := range jsonFields { - f = fname - break - } - return fmt.Errorf("unknown field %q in %v", f, targetType) - } - return nil - } - - // Handle arrays (which aren't encoded bytes) - if targetType.Kind() == reflect.Slice && targetType.Elem().Kind() != reflect.Uint8 { - var slc []json.RawMessage - if err := json.Unmarshal(inputValue, &slc); err != nil { - return err - } - if slc != nil { - l := len(slc) - target.Set(reflect.MakeSlice(targetType, l, l)) - for i := 0; i < l; i++ { - if err := u.unmarshalValue(target.Index(i), slc[i], prop); err != nil { - return err - } - } - } - return nil - } - - // Handle maps (whose keys are always strings) - if targetType.Kind() == reflect.Map { - var mp map[string]json.RawMessage - if err := json.Unmarshal(inputValue, &mp); err != nil { - return err - } - if mp != nil { - target.Set(reflect.MakeMap(targetType)) - var keyprop, valprop *proto.Properties - if prop != nil { - // These could still be nil if the protobuf metadata is broken somehow. - // TODO: This won't work because the fields are unexported. - // We should probably just reparse them. - //keyprop, valprop = prop.mkeyprop, prop.mvalprop - } - for ks, raw := range mp { - // Unmarshal map key. The core json library already decoded the key into a - // string, so we handle that specially. Other types were quoted post-serialization. - var k reflect.Value - if targetType.Key().Kind() == reflect.String { - k = reflect.ValueOf(ks) - } else { - k = reflect.New(targetType.Key()).Elem() - if err := u.unmarshalValue(k, json.RawMessage(ks), keyprop); err != nil { - return err - } - } - - // Unmarshal map value. - v := reflect.New(targetType.Elem()).Elem() - if err := u.unmarshalValue(v, raw, valprop); err != nil { - return err - } - target.SetMapIndex(k, v) - } - } - return nil - } - - // 64-bit integers can be encoded as strings. In this case we drop - // the quotes and proceed as normal. - isNum := targetType.Kind() == reflect.Int64 || targetType.Kind() == reflect.Uint64 - if isNum && strings.HasPrefix(string(inputValue), `"`) { - inputValue = inputValue[1 : len(inputValue)-1] - } - - // Non-finite numbers can be encoded as strings. - isFloat := targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64 - if isFloat { - if num, ok := nonFinite[string(inputValue)]; ok { - target.SetFloat(num) - return nil - } - } - - // Use the encoding/json for parsing other value types. - return json.Unmarshal(inputValue, target.Addr().Interface()) -} - -// jsonProperties returns parsed proto.Properties for the field and corrects JSONName attribute. -func jsonProperties(f reflect.StructField, origName bool) *proto.Properties { - var prop proto.Properties - prop.Init(f.Type, f.Name, f.Tag.Get("protobuf"), &f) - if origName || prop.JSONName == "" { - prop.JSONName = prop.OrigName - } - return &prop -} - -type fieldNames struct { - orig, camel string -} - -func acceptedJSONFieldNames(prop *proto.Properties) fieldNames { - opts := fieldNames{orig: prop.OrigName, camel: prop.OrigName} - if prop.JSONName != "" { - opts.camel = prop.JSONName - } - return opts -} - -// Writer wrapper inspired by https://blog.golang.org/errors-are-values -type errWriter struct { - writer io.Writer - err error -} - -func (w *errWriter) write(str string) { - if w.err != nil { - return - } - _, w.err = w.writer.Write([]byte(str)) -} - -// Map fields may have key types of non-float scalars, strings and enums. -// The easiest way to sort them in some deterministic order is to use fmt. -// If this turns out to be inefficient we can always consider other options, -// such as doing a Schwartzian transform. -// -// Numeric keys are sorted in numeric order per -// https://developers.google.com/protocol-buffers/docs/proto#maps. -type mapKeys []reflect.Value - -func (s mapKeys) Len() int { return len(s) } -func (s mapKeys) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s mapKeys) Less(i, j int) bool { - if k := s[i].Kind(); k == s[j].Kind() { - switch k { - case reflect.Int32, reflect.Int64: - return s[i].Int() < s[j].Int() - case reflect.Uint32, reflect.Uint64: - return s[i].Uint() < s[j].Uint() - } - } - return fmt.Sprint(s[i].Interface()) < fmt.Sprint(s[j].Interface()) -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go deleted file mode 100644 index 2428d056..00000000 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test.go +++ /dev/null @@ -1,896 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2015 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package jsonpb - -import ( - "bytes" - "encoding/json" - "io" - "math" - "reflect" - "strings" - "testing" - - "github.com/golang/protobuf/proto" - - pb "github.com/golang/protobuf/jsonpb/jsonpb_test_proto" - proto3pb "github.com/golang/protobuf/proto/proto3_proto" - "github.com/golang/protobuf/ptypes" - anypb "github.com/golang/protobuf/ptypes/any" - durpb "github.com/golang/protobuf/ptypes/duration" - stpb "github.com/golang/protobuf/ptypes/struct" - tspb "github.com/golang/protobuf/ptypes/timestamp" - wpb "github.com/golang/protobuf/ptypes/wrappers" -) - -var ( - marshaler = Marshaler{} - - marshalerAllOptions = Marshaler{ - Indent: " ", - } - - simpleObject = &pb.Simple{ - OInt32: proto.Int32(-32), - OInt64: proto.Int64(-6400000000), - OUint32: proto.Uint32(32), - OUint64: proto.Uint64(6400000000), - OSint32: proto.Int32(-13), - OSint64: proto.Int64(-2600000000), - OFloat: proto.Float32(3.14), - ODouble: proto.Float64(6.02214179e23), - OBool: proto.Bool(true), - OString: proto.String("hello \"there\""), - OBytes: []byte("beep boop"), - } - - simpleObjectJSON = `{` + - `"oBool":true,` + - `"oInt32":-32,` + - `"oInt64":"-6400000000",` + - `"oUint32":32,` + - `"oUint64":"6400000000",` + - `"oSint32":-13,` + - `"oSint64":"-2600000000",` + - `"oFloat":3.14,` + - `"oDouble":6.02214179e+23,` + - `"oString":"hello \"there\"",` + - `"oBytes":"YmVlcCBib29w"` + - `}` - - simpleObjectPrettyJSON = `{ - "oBool": true, - "oInt32": -32, - "oInt64": "-6400000000", - "oUint32": 32, - "oUint64": "6400000000", - "oSint32": -13, - "oSint64": "-2600000000", - "oFloat": 3.14, - "oDouble": 6.02214179e+23, - "oString": "hello \"there\"", - "oBytes": "YmVlcCBib29w" -}` - - repeatsObject = &pb.Repeats{ - RBool: []bool{true, false, true}, - RInt32: []int32{-3, -4, -5}, - RInt64: []int64{-123456789, -987654321}, - RUint32: []uint32{1, 2, 3}, - RUint64: []uint64{6789012345, 3456789012}, - RSint32: []int32{-1, -2, -3}, - RSint64: []int64{-6789012345, -3456789012}, - RFloat: []float32{3.14, 6.28}, - RDouble: []float64{299792458 * 1e20, 6.62606957e-34}, - RString: []string{"happy", "days"}, - RBytes: [][]byte{[]byte("skittles"), []byte("m&m's")}, - } - - repeatsObjectJSON = `{` + - `"rBool":[true,false,true],` + - `"rInt32":[-3,-4,-5],` + - `"rInt64":["-123456789","-987654321"],` + - `"rUint32":[1,2,3],` + - `"rUint64":["6789012345","3456789012"],` + - `"rSint32":[-1,-2,-3],` + - `"rSint64":["-6789012345","-3456789012"],` + - `"rFloat":[3.14,6.28],` + - `"rDouble":[2.99792458e+28,6.62606957e-34],` + - `"rString":["happy","days"],` + - `"rBytes":["c2tpdHRsZXM=","bSZtJ3M="]` + - `}` - - repeatsObjectPrettyJSON = `{ - "rBool": [ - true, - false, - true - ], - "rInt32": [ - -3, - -4, - -5 - ], - "rInt64": [ - "-123456789", - "-987654321" - ], - "rUint32": [ - 1, - 2, - 3 - ], - "rUint64": [ - "6789012345", - "3456789012" - ], - "rSint32": [ - -1, - -2, - -3 - ], - "rSint64": [ - "-6789012345", - "-3456789012" - ], - "rFloat": [ - 3.14, - 6.28 - ], - "rDouble": [ - 2.99792458e+28, - 6.62606957e-34 - ], - "rString": [ - "happy", - "days" - ], - "rBytes": [ - "c2tpdHRsZXM=", - "bSZtJ3M=" - ] -}` - - innerSimple = &pb.Simple{OInt32: proto.Int32(-32)} - innerSimple2 = &pb.Simple{OInt64: proto.Int64(25)} - innerRepeats = &pb.Repeats{RString: []string{"roses", "red"}} - innerRepeats2 = &pb.Repeats{RString: []string{"violets", "blue"}} - complexObject = &pb.Widget{ - Color: pb.Widget_GREEN.Enum(), - RColor: []pb.Widget_Color{pb.Widget_RED, pb.Widget_GREEN, pb.Widget_BLUE}, - Simple: innerSimple, - RSimple: []*pb.Simple{innerSimple, innerSimple2}, - Repeats: innerRepeats, - RRepeats: []*pb.Repeats{innerRepeats, innerRepeats2}, - } - - complexObjectJSON = `{"color":"GREEN",` + - `"rColor":["RED","GREEN","BLUE"],` + - `"simple":{"oInt32":-32},` + - `"rSimple":[{"oInt32":-32},{"oInt64":"25"}],` + - `"repeats":{"rString":["roses","red"]},` + - `"rRepeats":[{"rString":["roses","red"]},{"rString":["violets","blue"]}]` + - `}` - - complexObjectPrettyJSON = `{ - "color": "GREEN", - "rColor": [ - "RED", - "GREEN", - "BLUE" - ], - "simple": { - "oInt32": -32 - }, - "rSimple": [ - { - "oInt32": -32 - }, - { - "oInt64": "25" - } - ], - "repeats": { - "rString": [ - "roses", - "red" - ] - }, - "rRepeats": [ - { - "rString": [ - "roses", - "red" - ] - }, - { - "rString": [ - "violets", - "blue" - ] - } - ] -}` - - colorPrettyJSON = `{ - "color": 2 -}` - - colorListPrettyJSON = `{ - "color": 1000, - "rColor": [ - "RED" - ] -}` - - nummyPrettyJSON = `{ - "nummy": { - "1": 2, - "3": 4 - } -}` - - objjyPrettyJSON = `{ - "objjy": { - "1": { - "dub": 1 - } - } -}` - realNumber = &pb.Real{Value: proto.Float64(3.14159265359)} - realNumberName = "Pi" - complexNumber = &pb.Complex{Imaginary: proto.Float64(0.5772156649)} - realNumberJSON = `{` + - `"value":3.14159265359,` + - `"[jsonpb.Complex.real_extension]":{"imaginary":0.5772156649},` + - `"[jsonpb.name]":"Pi"` + - `}` - - anySimple = &pb.KnownTypes{ - An: &anypb.Any{ - TypeUrl: "something.example.com/jsonpb.Simple", - Value: []byte{ - // &pb.Simple{OBool:true} - 1 << 3, 1, - }, - }, - } - anySimpleJSON = `{"an":{"@type":"something.example.com/jsonpb.Simple","oBool":true}}` - anySimplePrettyJSON = `{ - "an": { - "@type": "something.example.com/jsonpb.Simple", - "oBool": true - } -}` - - anyWellKnown = &pb.KnownTypes{ - An: &anypb.Any{ - TypeUrl: "type.googleapis.com/google.protobuf.Duration", - Value: []byte{ - // &durpb.Duration{Seconds: 1, Nanos: 212000000 } - 1 << 3, 1, // seconds - 2 << 3, 0x80, 0xba, 0x8b, 0x65, // nanos - }, - }, - } - anyWellKnownJSON = `{"an":{"@type":"type.googleapis.com/google.protobuf.Duration","value":"1.212s"}}` - anyWellKnownPrettyJSON = `{ - "an": { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } -}` - - nonFinites = &pb.NonFinites{ - FNan: proto.Float32(float32(math.NaN())), - FPinf: proto.Float32(float32(math.Inf(1))), - FNinf: proto.Float32(float32(math.Inf(-1))), - DNan: proto.Float64(float64(math.NaN())), - DPinf: proto.Float64(float64(math.Inf(1))), - DNinf: proto.Float64(float64(math.Inf(-1))), - } - nonFinitesJSON = `{` + - `"fNan":"NaN",` + - `"fPinf":"Infinity",` + - `"fNinf":"-Infinity",` + - `"dNan":"NaN",` + - `"dPinf":"Infinity",` + - `"dNinf":"-Infinity"` + - `}` -) - -func init() { - if err := proto.SetExtension(realNumber, pb.E_Name, &realNumberName); err != nil { - panic(err) - } - if err := proto.SetExtension(realNumber, pb.E_Complex_RealExtension, complexNumber); err != nil { - panic(err) - } -} - -var marshalingTests = []struct { - desc string - marshaler Marshaler - pb proto.Message - json string -}{ - {"simple flat object", marshaler, simpleObject, simpleObjectJSON}, - {"simple pretty object", marshalerAllOptions, simpleObject, simpleObjectPrettyJSON}, - {"non-finite floats fields object", marshaler, nonFinites, nonFinitesJSON}, - {"repeated fields flat object", marshaler, repeatsObject, repeatsObjectJSON}, - {"repeated fields pretty object", marshalerAllOptions, repeatsObject, repeatsObjectPrettyJSON}, - {"nested message/enum flat object", marshaler, complexObject, complexObjectJSON}, - {"nested message/enum pretty object", marshalerAllOptions, complexObject, complexObjectPrettyJSON}, - {"enum-string flat object", Marshaler{}, - &pb.Widget{Color: pb.Widget_BLUE.Enum()}, `{"color":"BLUE"}`}, - {"enum-value pretty object", Marshaler{EnumsAsInts: true, Indent: " "}, - &pb.Widget{Color: pb.Widget_BLUE.Enum()}, colorPrettyJSON}, - {"unknown enum value object", marshalerAllOptions, - &pb.Widget{Color: pb.Widget_Color(1000).Enum(), RColor: []pb.Widget_Color{pb.Widget_RED}}, colorListPrettyJSON}, - {"repeated proto3 enum", Marshaler{}, - &proto3pb.Message{RFunny: []proto3pb.Message_Humour{ - proto3pb.Message_PUNS, - proto3pb.Message_SLAPSTICK, - }}, - `{"rFunny":["PUNS","SLAPSTICK"]}`}, - {"repeated proto3 enum as int", Marshaler{EnumsAsInts: true}, - &proto3pb.Message{RFunny: []proto3pb.Message_Humour{ - proto3pb.Message_PUNS, - proto3pb.Message_SLAPSTICK, - }}, - `{"rFunny":[1,2]}`}, - {"empty value", marshaler, &pb.Simple3{}, `{}`}, - {"empty value emitted", Marshaler{EmitDefaults: true}, &pb.Simple3{}, `{"dub":0}`}, - {"empty repeated emitted", Marshaler{EmitDefaults: true}, &pb.SimpleSlice3{}, `{"slices":[]}`}, - {"empty map emitted", Marshaler{EmitDefaults: true}, &pb.SimpleMap3{}, `{"stringy":{}}`}, - {"nested struct null", Marshaler{EmitDefaults: true}, &pb.SimpleNull3{}, `{"simple":null}`}, - {"map", marshaler, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, `{"nummy":{"1":2,"3":4}}`}, - {"map", marshalerAllOptions, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, nummyPrettyJSON}, - {"map", marshaler, - &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}}, - `{"strry":{"\"one\"":"two","three":"four"}}`}, - {"map", marshaler, - &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}, `{"objjy":{"1":{"dub":1}}}`}, - {"map", marshalerAllOptions, - &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}, objjyPrettyJSON}, - {"map", marshaler, &pb.Mappy{Buggy: map[int64]string{1234: "yup"}}, - `{"buggy":{"1234":"yup"}}`}, - {"map", marshaler, &pb.Mappy{Booly: map[bool]bool{false: true}}, `{"booly":{"false":true}}`}, - // TODO: This is broken. - //{"map", marshaler, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}, `{"enumy":{"XIV":"ROMAN"}`}, - {"map", Marshaler{EnumsAsInts: true}, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}, `{"enumy":{"XIV":2}}`}, - {"map", marshaler, &pb.Mappy{S32Booly: map[int32]bool{1: true, 3: false, 10: true, 12: false}}, `{"s32booly":{"1":true,"3":false,"10":true,"12":false}}`}, - {"map", marshaler, &pb.Mappy{S64Booly: map[int64]bool{1: true, 3: false, 10: true, 12: false}}, `{"s64booly":{"1":true,"3":false,"10":true,"12":false}}`}, - {"map", marshaler, &pb.Mappy{U32Booly: map[uint32]bool{1: true, 3: false, 10: true, 12: false}}, `{"u32booly":{"1":true,"3":false,"10":true,"12":false}}`}, - {"map", marshaler, &pb.Mappy{U64Booly: map[uint64]bool{1: true, 3: false, 10: true, 12: false}}, `{"u64booly":{"1":true,"3":false,"10":true,"12":false}}`}, - {"proto2 map", marshaler, &pb.Maps{MInt64Str: map[int64]string{213: "cat"}}, - `{"mInt64Str":{"213":"cat"}}`}, - {"proto2 map", marshaler, - &pb.Maps{MBoolSimple: map[bool]*pb.Simple{true: {OInt32: proto.Int32(1)}}}, - `{"mBoolSimple":{"true":{"oInt32":1}}}`}, - {"oneof, not set", marshaler, &pb.MsgWithOneof{}, `{}`}, - {"oneof, set", marshaler, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Title{"Grand Poobah"}}, `{"title":"Grand Poobah"}`}, - {"force orig_name", Marshaler{OrigName: true}, &pb.Simple{OInt32: proto.Int32(4)}, - `{"o_int32":4}`}, - {"proto2 extension", marshaler, realNumber, realNumberJSON}, - {"Any with message", marshaler, anySimple, anySimpleJSON}, - {"Any with message and indent", marshalerAllOptions, anySimple, anySimplePrettyJSON}, - {"Any with WKT", marshaler, anyWellKnown, anyWellKnownJSON}, - {"Any with WKT and indent", marshalerAllOptions, anyWellKnown, anyWellKnownPrettyJSON}, - {"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}, `{"dur":"3.000s"}`}, - {"Struct", marshaler, &pb.KnownTypes{St: &stpb.Struct{ - Fields: map[string]*stpb.Value{ - "one": {Kind: &stpb.Value_StringValue{"loneliest number"}}, - "two": {Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}, - }, - }}, `{"st":{"one":"loneliest number","two":null}}`}, - {"empty ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{}}, `{"lv":[]}`}, - {"basic ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_NullValue{}}, - {Kind: &stpb.Value_NumberValue{3}}, - {Kind: &stpb.Value_BoolValue{true}}, - }}}, `{"lv":["x",null,3,true]}`}, - {"Timestamp", marshaler, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}, `{"ts":"2014-05-13T16:53:20.021Z"}`}, - {"number Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}, `{"val":1}`}, - {"null Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}, `{"val":null}`}, - {"string number value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}, `{"val":"9223372036854775807"}`}, - {"list of lists Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{ - Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}}, - }}}, - {Kind: &stpb.Value_StringValue{"z"}}, - }, - }}}, - }, - }}, - }}, `{"val":["x",[["y"],"z"]]}`}, - - {"DoubleValue", marshaler, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}, `{"dbl":1.2}`}, - {"FloatValue", marshaler, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}, `{"flt":1.2}`}, - {"Int64Value", marshaler, &pb.KnownTypes{I64: &wpb.Int64Value{Value: -3}}, `{"i64":"-3"}`}, - {"UInt64Value", marshaler, &pb.KnownTypes{U64: &wpb.UInt64Value{Value: 3}}, `{"u64":"3"}`}, - {"Int32Value", marshaler, &pb.KnownTypes{I32: &wpb.Int32Value{Value: -4}}, `{"i32":-4}`}, - {"UInt32Value", marshaler, &pb.KnownTypes{U32: &wpb.UInt32Value{Value: 4}}, `{"u32":4}`}, - {"BoolValue", marshaler, &pb.KnownTypes{Bool: &wpb.BoolValue{Value: true}}, `{"bool":true}`}, - {"StringValue", marshaler, &pb.KnownTypes{Str: &wpb.StringValue{Value: "plush"}}, `{"str":"plush"}`}, - {"BytesValue", marshaler, &pb.KnownTypes{Bytes: &wpb.BytesValue{Value: []byte("wow")}}, `{"bytes":"d293"}`}, -} - -func TestMarshaling(t *testing.T) { - for _, tt := range marshalingTests { - json, err := tt.marshaler.MarshalToString(tt.pb) - if err != nil { - t.Errorf("%s: marshaling error: %v", tt.desc, err) - } else if tt.json != json { - t.Errorf("%s: got [%v] want [%v]", tt.desc, json, tt.json) - } - } -} - -func TestMarshalJSONPBMarshaler(t *testing.T) { - rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }` - msg := dynamicMessage{rawJson: rawJson} - str, err := new(Marshaler).MarshalToString(&msg) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling JSONPBMarshaler: %v", err) - } - if str != rawJson { - t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, rawJson) - } -} - -func TestMarshalAnyJSONPBMarshaler(t *testing.T) { - msg := dynamicMessage{rawJson: `{ "foo": "bar", "baz": [0, 1, 2, 3] }`} - a, err := ptypes.MarshalAny(&msg) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling to Any: %v", err) - } - str, err := new(Marshaler).MarshalToString(a) - if err != nil { - t.Errorf("an unexpected error occurred when marshalling Any to JSON: %v", err) - } - // after custom marshaling, it's round-tripped through JSON decoding/encoding already, - // so the keys are sorted, whitespace is compacted, and "@type" key has been added - expected := `{"@type":"type.googleapis.com/` + dynamicMessageName + `","baz":[0,1,2,3],"foo":"bar"}` - if str != expected { - t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, expected) - } -} - -var unmarshalingTests = []struct { - desc string - unmarshaler Unmarshaler - json string - pb proto.Message -}{ - {"simple flat object", Unmarshaler{}, simpleObjectJSON, simpleObject}, - {"simple pretty object", Unmarshaler{}, simpleObjectPrettyJSON, simpleObject}, - {"repeated fields flat object", Unmarshaler{}, repeatsObjectJSON, repeatsObject}, - {"repeated fields pretty object", Unmarshaler{}, repeatsObjectPrettyJSON, repeatsObject}, - {"nested message/enum flat object", Unmarshaler{}, complexObjectJSON, complexObject}, - {"nested message/enum pretty object", Unmarshaler{}, complexObjectPrettyJSON, complexObject}, - {"enum-string object", Unmarshaler{}, `{"color":"BLUE"}`, &pb.Widget{Color: pb.Widget_BLUE.Enum()}}, - {"enum-value object", Unmarshaler{}, "{\n \"color\": 2\n}", &pb.Widget{Color: pb.Widget_BLUE.Enum()}}, - {"unknown field with allowed option", Unmarshaler{AllowUnknownFields: true}, `{"unknown": "foo"}`, new(pb.Simple)}, - {"proto3 enum string", Unmarshaler{}, `{"hilarity":"PUNS"}`, &proto3pb.Message{Hilarity: proto3pb.Message_PUNS}}, - {"proto3 enum value", Unmarshaler{}, `{"hilarity":1}`, &proto3pb.Message{Hilarity: proto3pb.Message_PUNS}}, - {"unknown enum value object", - Unmarshaler{}, - "{\n \"color\": 1000,\n \"r_color\": [\n \"RED\"\n ]\n}", - &pb.Widget{Color: pb.Widget_Color(1000).Enum(), RColor: []pb.Widget_Color{pb.Widget_RED}}}, - {"repeated proto3 enum", Unmarshaler{}, `{"rFunny":["PUNS","SLAPSTICK"]}`, - &proto3pb.Message{RFunny: []proto3pb.Message_Humour{ - proto3pb.Message_PUNS, - proto3pb.Message_SLAPSTICK, - }}}, - {"repeated proto3 enum as int", Unmarshaler{}, `{"rFunny":[1,2]}`, - &proto3pb.Message{RFunny: []proto3pb.Message_Humour{ - proto3pb.Message_PUNS, - proto3pb.Message_SLAPSTICK, - }}}, - {"repeated proto3 enum as mix of strings and ints", Unmarshaler{}, `{"rFunny":["PUNS",2]}`, - &proto3pb.Message{RFunny: []proto3pb.Message_Humour{ - proto3pb.Message_PUNS, - proto3pb.Message_SLAPSTICK, - }}}, - {"unquoted int64 object", Unmarshaler{}, `{"oInt64":-314}`, &pb.Simple{OInt64: proto.Int64(-314)}}, - {"unquoted uint64 object", Unmarshaler{}, `{"oUint64":123}`, &pb.Simple{OUint64: proto.Uint64(123)}}, - {"NaN", Unmarshaler{}, `{"oDouble":"NaN"}`, &pb.Simple{ODouble: proto.Float64(math.NaN())}}, - {"Inf", Unmarshaler{}, `{"oFloat":"Infinity"}`, &pb.Simple{OFloat: proto.Float32(float32(math.Inf(1)))}}, - {"-Inf", Unmarshaler{}, `{"oDouble":"-Infinity"}`, &pb.Simple{ODouble: proto.Float64(math.Inf(-1))}}, - {"map", Unmarshaler{}, `{"nummy":{"1":2,"3":4}}`, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}}, - {"map", Unmarshaler{}, `{"strry":{"\"one\"":"two","three":"four"}}`, &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}}}, - {"map", Unmarshaler{}, `{"objjy":{"1":{"dub":1}}}`, &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}}, - {"proto2 extension", Unmarshaler{}, realNumberJSON, realNumber}, - {"Any with message", Unmarshaler{}, anySimpleJSON, anySimple}, - {"Any with message and indent", Unmarshaler{}, anySimplePrettyJSON, anySimple}, - {"Any with WKT", Unmarshaler{}, anyWellKnownJSON, anyWellKnown}, - {"Any with WKT and indent", Unmarshaler{}, anyWellKnownPrettyJSON, anyWellKnown}, - // TODO: This is broken. - //{"map", Unmarshaler{}, `{"enumy":{"XIV":"ROMAN"}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}}, - {"map", Unmarshaler{}, `{"enumy":{"XIV":2}}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}}, - {"oneof", Unmarshaler{}, `{"salary":31000}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Salary{31000}}}, - {"oneof spec name", Unmarshaler{}, `{"Country":"Australia"}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Country{"Australia"}}}, - {"oneof orig_name", Unmarshaler{}, `{"Country":"Australia"}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Country{"Australia"}}}, - {"oneof spec name2", Unmarshaler{}, `{"homeAddress":"Australia"}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_HomeAddress{"Australia"}}}, - {"oneof orig_name2", Unmarshaler{}, `{"home_address":"Australia"}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_HomeAddress{"Australia"}}}, - {"orig_name input", Unmarshaler{}, `{"o_bool":true}`, &pb.Simple{OBool: proto.Bool(true)}}, - {"camelName input", Unmarshaler{}, `{"oBool":true}`, &pb.Simple{OBool: proto.Bool(true)}}, - - {"Duration", Unmarshaler{}, `{"dur":"3.000s"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}}, - {"null Duration", Unmarshaler{}, `{"dur":null}`, &pb.KnownTypes{Dur: nil}}, - {"Timestamp", Unmarshaler{}, `{"ts":"2014-05-13T16:53:20.021Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}}, - {"PreEpochTimestamp", Unmarshaler{}, `{"ts":"1969-12-31T23:59:58.999999995Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -2, Nanos: 999999995}}}, - {"ZeroTimeTimestamp", Unmarshaler{}, `{"ts":"0001-01-01T00:00:00Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -62135596800, Nanos: 0}}}, - {"null Timestamp", Unmarshaler{}, `{"ts":null}`, &pb.KnownTypes{Ts: nil}}, - {"null Struct", Unmarshaler{}, `{"st": null}`, &pb.KnownTypes{St: nil}}, - {"empty Struct", Unmarshaler{}, `{"st": {}}`, &pb.KnownTypes{St: &stpb.Struct{}}}, - {"basic Struct", Unmarshaler{}, `{"st": {"a": "x", "b": null, "c": 3, "d": true}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{ - "a": {Kind: &stpb.Value_StringValue{"x"}}, - "b": {Kind: &stpb.Value_NullValue{}}, - "c": {Kind: &stpb.Value_NumberValue{3}}, - "d": {Kind: &stpb.Value_BoolValue{true}}, - }}}}, - {"nested Struct", Unmarshaler{}, `{"st": {"a": {"b": 1, "c": [{"d": true}, "f"]}}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{ - "a": {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{ - "b": {Kind: &stpb.Value_NumberValue{1}}, - "c": {Kind: &stpb.Value_ListValue{&stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{"d": {Kind: &stpb.Value_BoolValue{true}}}}}}, - {Kind: &stpb.Value_StringValue{"f"}}, - }}}}, - }}}}, - }}}}, - {"null ListValue", Unmarshaler{}, `{"lv": null}`, &pb.KnownTypes{Lv: nil}}, - {"empty ListValue", Unmarshaler{}, `{"lv": []}`, &pb.KnownTypes{Lv: &stpb.ListValue{}}}, - {"basic ListValue", Unmarshaler{}, `{"lv": ["x", null, 3, true]}`, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_NullValue{}}, - {Kind: &stpb.Value_NumberValue{3}}, - {Kind: &stpb.Value_BoolValue{true}}, - }}}}, - {"number Value", Unmarshaler{}, `{"val":1}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}}, - {"null Value", Unmarshaler{}, `{"val":null}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}}, - {"bool Value", Unmarshaler{}, `{"val":true}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_BoolValue{true}}}}, - {"string Value", Unmarshaler{}, `{"val":"x"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"x"}}}}, - {"string number value", Unmarshaler{}, `{"val":"9223372036854775807"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}}, - {"list of lists Value", Unmarshaler{}, `{"val":["x", [["y"], "z"]]}`, &pb.KnownTypes{Val: &stpb.Value{ - Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_StringValue{"x"}}, - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{ - {Kind: &stpb.Value_ListValue{&stpb.ListValue{ - Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}}, - }}}, - {Kind: &stpb.Value_StringValue{"z"}}, - }, - }}}, - }, - }}}}}, - - {"DoubleValue", Unmarshaler{}, `{"dbl":1.2}`, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}}, - {"FloatValue", Unmarshaler{}, `{"flt":1.2}`, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}}, - {"Int64Value", Unmarshaler{}, `{"i64":"-3"}`, &pb.KnownTypes{I64: &wpb.Int64Value{Value: -3}}}, - {"UInt64Value", Unmarshaler{}, `{"u64":"3"}`, &pb.KnownTypes{U64: &wpb.UInt64Value{Value: 3}}}, - {"Int32Value", Unmarshaler{}, `{"i32":-4}`, &pb.KnownTypes{I32: &wpb.Int32Value{Value: -4}}}, - {"UInt32Value", Unmarshaler{}, `{"u32":4}`, &pb.KnownTypes{U32: &wpb.UInt32Value{Value: 4}}}, - {"BoolValue", Unmarshaler{}, `{"bool":true}`, &pb.KnownTypes{Bool: &wpb.BoolValue{Value: true}}}, - {"StringValue", Unmarshaler{}, `{"str":"plush"}`, &pb.KnownTypes{Str: &wpb.StringValue{Value: "plush"}}}, - {"BytesValue", Unmarshaler{}, `{"bytes":"d293"}`, &pb.KnownTypes{Bytes: &wpb.BytesValue{Value: []byte("wow")}}}, - - // Ensure that `null` as a value ends up with a nil pointer instead of a [type]Value struct. - {"null DoubleValue", Unmarshaler{}, `{"dbl":null}`, &pb.KnownTypes{Dbl: nil}}, - {"null FloatValue", Unmarshaler{}, `{"flt":null}`, &pb.KnownTypes{Flt: nil}}, - {"null Int64Value", Unmarshaler{}, `{"i64":null}`, &pb.KnownTypes{I64: nil}}, - {"null UInt64Value", Unmarshaler{}, `{"u64":null}`, &pb.KnownTypes{U64: nil}}, - {"null Int32Value", Unmarshaler{}, `{"i32":null}`, &pb.KnownTypes{I32: nil}}, - {"null UInt32Value", Unmarshaler{}, `{"u32":null}`, &pb.KnownTypes{U32: nil}}, - {"null BoolValue", Unmarshaler{}, `{"bool":null}`, &pb.KnownTypes{Bool: nil}}, - {"null StringValue", Unmarshaler{}, `{"str":null}`, &pb.KnownTypes{Str: nil}}, - {"null BytesValue", Unmarshaler{}, `{"bytes":null}`, &pb.KnownTypes{Bytes: nil}}, -} - -func TestUnmarshaling(t *testing.T) { - for _, tt := range unmarshalingTests { - // Make a new instance of the type of our expected object. - p := reflect.New(reflect.TypeOf(tt.pb).Elem()).Interface().(proto.Message) - - err := tt.unmarshaler.Unmarshal(strings.NewReader(tt.json), p) - if err != nil { - t.Errorf("%s: %v", tt.desc, err) - continue - } - - // For easier diffs, compare text strings of the protos. - exp := proto.MarshalTextString(tt.pb) - act := proto.MarshalTextString(p) - if string(exp) != string(act) { - t.Errorf("%s: got [%s] want [%s]", tt.desc, act, exp) - } - } -} - -func TestUnmarshalNullArray(t *testing.T) { - var repeats pb.Repeats - if err := UnmarshalString(`{"rBool":null}`, &repeats); err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(repeats, pb.Repeats{}) { - t.Errorf("got non-nil fields in [%#v]", repeats) - } -} - -func TestUnmarshalNullObject(t *testing.T) { - var maps pb.Maps - if err := UnmarshalString(`{"mInt64Str":null}`, &maps); err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(maps, pb.Maps{}) { - t.Errorf("got non-nil fields in [%#v]", maps) - } -} - -func TestUnmarshalNext(t *testing.T) { - // We only need to check against a few, not all of them. - tests := unmarshalingTests[:5] - - // Create a buffer with many concatenated JSON objects. - var b bytes.Buffer - for _, tt := range tests { - b.WriteString(tt.json) - } - - dec := json.NewDecoder(&b) - for _, tt := range tests { - // Make a new instance of the type of our expected object. - p := reflect.New(reflect.TypeOf(tt.pb).Elem()).Interface().(proto.Message) - - err := tt.unmarshaler.UnmarshalNext(dec, p) - if err != nil { - t.Errorf("%s: %v", tt.desc, err) - continue - } - - // For easier diffs, compare text strings of the protos. - exp := proto.MarshalTextString(tt.pb) - act := proto.MarshalTextString(p) - if string(exp) != string(act) { - t.Errorf("%s: got [%s] want [%s]", tt.desc, act, exp) - } - } - - p := &pb.Simple{} - err := new(Unmarshaler).UnmarshalNext(dec, p) - if err != io.EOF { - t.Errorf("eof: got %v, expected io.EOF", err) - } -} - -var unmarshalingShouldError = []struct { - desc string - in string - pb proto.Message -}{ - {"a value", "666", new(pb.Simple)}, - {"gibberish", "{adskja123;l23=-=", new(pb.Simple)}, - {"unknown field", `{"unknown": "foo"}`, new(pb.Simple)}, - {"unknown enum name", `{"hilarity":"DAVE"}`, new(proto3pb.Message)}, -} - -func TestUnmarshalingBadInput(t *testing.T) { - for _, tt := range unmarshalingShouldError { - err := UnmarshalString(tt.in, tt.pb) - if err == nil { - t.Errorf("an error was expected when parsing %q instead of an object", tt.desc) - } - } -} - -type funcResolver func(turl string) (proto.Message, error) - -func (fn funcResolver) Resolve(turl string) (proto.Message, error) { - return fn(turl) -} - -func TestAnyWithCustomResolver(t *testing.T) { - var resolvedTypeUrls []string - resolver := funcResolver(func(turl string) (proto.Message, error) { - resolvedTypeUrls = append(resolvedTypeUrls, turl) - return new(pb.Simple), nil - }) - msg := &pb.Simple{ - OBytes: []byte{1, 2, 3, 4}, - OBool: proto.Bool(true), - OString: proto.String("foobar"), - OInt64: proto.Int64(1020304), - } - msgBytes, err := proto.Marshal(msg) - if err != nil { - t.Errorf("an unexpected error occurred when marshaling message: %v", err) - } - // make an Any with a type URL that won't resolve w/out custom resolver - any := &anypb.Any{ - TypeUrl: "https://foobar.com/some.random.MessageKind", - Value: msgBytes, - } - - m := Marshaler{AnyResolver: resolver} - js, err := m.MarshalToString(any) - if err != nil { - t.Errorf("an unexpected error occurred when marshaling any to JSON: %v", err) - } - if len(resolvedTypeUrls) != 1 { - t.Errorf("custom resolver was not invoked during marshaling") - } else if resolvedTypeUrls[0] != "https://foobar.com/some.random.MessageKind" { - t.Errorf("custom resolver was invoked with wrong URL: got %q, wanted %q", resolvedTypeUrls[0], "https://foobar.com/some.random.MessageKind") - } - wanted := `{"@type":"https://foobar.com/some.random.MessageKind","oBool":true,"oInt64":"1020304","oString":"foobar","oBytes":"AQIDBA=="}` - if js != wanted { - t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", js, wanted) - } - - u := Unmarshaler{AnyResolver: resolver} - roundTrip := &anypb.Any{} - err = u.Unmarshal(bytes.NewReader([]byte(js)), roundTrip) - if err != nil { - t.Errorf("an unexpected error occurred when unmarshaling any from JSON: %v", err) - } - if len(resolvedTypeUrls) != 2 { - t.Errorf("custom resolver was not invoked during marshaling") - } else if resolvedTypeUrls[1] != "https://foobar.com/some.random.MessageKind" { - t.Errorf("custom resolver was invoked with wrong URL: got %q, wanted %q", resolvedTypeUrls[1], "https://foobar.com/some.random.MessageKind") - } - if !proto.Equal(any, roundTrip) { - t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", roundTrip, any) - } -} - -func TestUnmarshalJSONPBUnmarshaler(t *testing.T) { - rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }` - var msg dynamicMessage - if err := Unmarshal(strings.NewReader(rawJson), &msg); err != nil { - t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err) - } - if msg.rawJson != rawJson { - t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", msg.rawJson, rawJson) - } -} - -func TestUnmarshalNullWithJSONPBUnmarshaler(t *testing.T) { - rawJson := `{"stringField":null}` - var ptrFieldMsg ptrFieldMessage - if err := Unmarshal(strings.NewReader(rawJson), &ptrFieldMsg); err != nil { - t.Errorf("unmarshal error: %v", err) - } - - want := ptrFieldMessage{StringField: &stringField{IsSet: true, StringValue: "null"}} - if !proto.Equal(&ptrFieldMsg, &want) { - t.Errorf("unmarshal result StringField: got %v, want %v", ptrFieldMsg, want) - } -} - -func TestUnmarshalAnyJSONPBUnmarshaler(t *testing.T) { - rawJson := `{ "@type": "blah.com/` + dynamicMessageName + `", "foo": "bar", "baz": [0, 1, 2, 3] }` - var got anypb.Any - if err := Unmarshal(strings.NewReader(rawJson), &got); err != nil { - t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err) - } - - dm := &dynamicMessage{rawJson: `{"baz":[0,1,2,3],"foo":"bar"}`} - var want anypb.Any - if b, err := proto.Marshal(dm); err != nil { - t.Errorf("an unexpected error occurred when marshaling message: %v", err) - } else { - want.TypeUrl = "blah.com/" + dynamicMessageName - want.Value = b - } - - if !proto.Equal(&got, &want) { - t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", got, want) - } -} - -const ( - dynamicMessageName = "google.protobuf.jsonpb.testing.dynamicMessage" -) - -func init() { - // we register the custom type below so that we can use it in Any types - proto.RegisterType((*dynamicMessage)(nil), dynamicMessageName) -} - -type ptrFieldMessage struct { - StringField *stringField `protobuf:"bytes,1,opt,name=stringField"` -} - -func (m *ptrFieldMessage) Reset() { -} - -func (m *ptrFieldMessage) String() string { - return m.StringField.StringValue -} - -func (m *ptrFieldMessage) ProtoMessage() { -} - -type stringField struct { - IsSet bool `protobuf:"varint,1,opt,name=isSet"` - StringValue string `protobuf:"bytes,2,opt,name=stringValue"` -} - -func (s *stringField) Reset() { -} - -func (s *stringField) String() string { - return s.StringValue -} - -func (s *stringField) ProtoMessage() { -} - -func (s *stringField) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error { - s.IsSet = true - s.StringValue = string(js) - return nil -} - -// dynamicMessage implements protobuf.Message but is not a normal generated message type. -// It provides implementations of JSONPBMarshaler and JSONPBUnmarshaler for JSON support. -type dynamicMessage struct { - rawJson string `protobuf:"bytes,1,opt,name=rawJson"` -} - -func (m *dynamicMessage) Reset() { - m.rawJson = "{}" -} - -func (m *dynamicMessage) String() string { - return m.rawJson -} - -func (m *dynamicMessage) ProtoMessage() { -} - -func (m *dynamicMessage) MarshalJSONPB(jm *Marshaler) ([]byte, error) { - return []byte(m.rawJson), nil -} - -func (m *dynamicMessage) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error { - m.rawJson = string(js) - return nil -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/Makefile b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/Makefile deleted file mode 100644 index eeda8ae5..00000000 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2015 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -regenerate: - protoc --go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any,Mgoogle/protobuf/duration.proto=github.com/golang/protobuf/ptypes/duration,Mgoogle/protobuf/struct.proto=github.com/golang/protobuf/ptypes/struct,Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp,Mgoogle/protobuf/wrappers.proto=github.com/golang/protobuf/ptypes/wrappers:. *.proto diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go deleted file mode 100644 index ebb180e8..00000000 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.pb.go +++ /dev/null @@ -1,266 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: more_test_objects.proto - -/* -Package jsonpb is a generated protocol buffer package. - -It is generated from these files: - more_test_objects.proto - test_objects.proto - -It has these top-level messages: - Simple3 - SimpleSlice3 - SimpleMap3 - SimpleNull3 - Mappy - Simple - NonFinites - Repeats - Widget - Maps - MsgWithOneof - Real - Complex - KnownTypes -*/ -package jsonpb - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type Numeral int32 - -const ( - Numeral_UNKNOWN Numeral = 0 - Numeral_ARABIC Numeral = 1 - Numeral_ROMAN Numeral = 2 -) - -var Numeral_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ARABIC", - 2: "ROMAN", -} -var Numeral_value = map[string]int32{ - "UNKNOWN": 0, - "ARABIC": 1, - "ROMAN": 2, -} - -func (x Numeral) String() string { - return proto.EnumName(Numeral_name, int32(x)) -} -func (Numeral) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type Simple3 struct { - Dub float64 `protobuf:"fixed64,1,opt,name=dub" json:"dub,omitempty"` -} - -func (m *Simple3) Reset() { *m = Simple3{} } -func (m *Simple3) String() string { return proto.CompactTextString(m) } -func (*Simple3) ProtoMessage() {} -func (*Simple3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Simple3) GetDub() float64 { - if m != nil { - return m.Dub - } - return 0 -} - -type SimpleSlice3 struct { - Slices []string `protobuf:"bytes,1,rep,name=slices" json:"slices,omitempty"` -} - -func (m *SimpleSlice3) Reset() { *m = SimpleSlice3{} } -func (m *SimpleSlice3) String() string { return proto.CompactTextString(m) } -func (*SimpleSlice3) ProtoMessage() {} -func (*SimpleSlice3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *SimpleSlice3) GetSlices() []string { - if m != nil { - return m.Slices - } - return nil -} - -type SimpleMap3 struct { - Stringy map[string]string `protobuf:"bytes,1,rep,name=stringy" json:"stringy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *SimpleMap3) Reset() { *m = SimpleMap3{} } -func (m *SimpleMap3) String() string { return proto.CompactTextString(m) } -func (*SimpleMap3) ProtoMessage() {} -func (*SimpleMap3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *SimpleMap3) GetStringy() map[string]string { - if m != nil { - return m.Stringy - } - return nil -} - -type SimpleNull3 struct { - Simple *Simple3 `protobuf:"bytes,1,opt,name=simple" json:"simple,omitempty"` -} - -func (m *SimpleNull3) Reset() { *m = SimpleNull3{} } -func (m *SimpleNull3) String() string { return proto.CompactTextString(m) } -func (*SimpleNull3) ProtoMessage() {} -func (*SimpleNull3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SimpleNull3) GetSimple() *Simple3 { - if m != nil { - return m.Simple - } - return nil -} - -type Mappy struct { - Nummy map[int64]int32 `protobuf:"bytes,1,rep,name=nummy" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - Strry map[string]string `protobuf:"bytes,2,rep,name=strry" json:"strry,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Objjy map[int32]*Simple3 `protobuf:"bytes,3,rep,name=objjy" json:"objjy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Buggy map[int64]string `protobuf:"bytes,4,rep,name=buggy" json:"buggy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Booly map[bool]bool `protobuf:"bytes,5,rep,name=booly" json:"booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - Enumy map[string]Numeral `protobuf:"bytes,6,rep,name=enumy" json:"enumy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=jsonpb.Numeral"` - S32Booly map[int32]bool `protobuf:"bytes,7,rep,name=s32booly" json:"s32booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - S64Booly map[int64]bool `protobuf:"bytes,8,rep,name=s64booly" json:"s64booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - U32Booly map[uint32]bool `protobuf:"bytes,9,rep,name=u32booly" json:"u32booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - U64Booly map[uint64]bool `protobuf:"bytes,10,rep,name=u64booly" json:"u64booly,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` -} - -func (m *Mappy) Reset() { *m = Mappy{} } -func (m *Mappy) String() string { return proto.CompactTextString(m) } -func (*Mappy) ProtoMessage() {} -func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Mappy) GetNummy() map[int64]int32 { - if m != nil { - return m.Nummy - } - return nil -} - -func (m *Mappy) GetStrry() map[string]string { - if m != nil { - return m.Strry - } - return nil -} - -func (m *Mappy) GetObjjy() map[int32]*Simple3 { - if m != nil { - return m.Objjy - } - return nil -} - -func (m *Mappy) GetBuggy() map[int64]string { - if m != nil { - return m.Buggy - } - return nil -} - -func (m *Mappy) GetBooly() map[bool]bool { - if m != nil { - return m.Booly - } - return nil -} - -func (m *Mappy) GetEnumy() map[string]Numeral { - if m != nil { - return m.Enumy - } - return nil -} - -func (m *Mappy) GetS32Booly() map[int32]bool { - if m != nil { - return m.S32Booly - } - return nil -} - -func (m *Mappy) GetS64Booly() map[int64]bool { - if m != nil { - return m.S64Booly - } - return nil -} - -func (m *Mappy) GetU32Booly() map[uint32]bool { - if m != nil { - return m.U32Booly - } - return nil -} - -func (m *Mappy) GetU64Booly() map[uint64]bool { - if m != nil { - return m.U64Booly - } - return nil -} - -func init() { - proto.RegisterType((*Simple3)(nil), "jsonpb.Simple3") - proto.RegisterType((*SimpleSlice3)(nil), "jsonpb.SimpleSlice3") - proto.RegisterType((*SimpleMap3)(nil), "jsonpb.SimpleMap3") - proto.RegisterType((*SimpleNull3)(nil), "jsonpb.SimpleNull3") - proto.RegisterType((*Mappy)(nil), "jsonpb.Mappy") - proto.RegisterEnum("jsonpb.Numeral", Numeral_name, Numeral_value) -} - -func init() { proto.RegisterFile("more_test_objects.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 526 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6b, 0xdb, 0x3c, - 0x14, 0x87, 0x5f, 0x27, 0xf5, 0xd7, 0x49, 0xfb, 0x2e, 0x88, 0xb1, 0x99, 0xf4, 0x62, 0xc5, 0xb0, - 0xad, 0x0c, 0xe6, 0x8b, 0x78, 0x74, 0x5d, 0x77, 0x95, 0x8e, 0x5e, 0x94, 0x11, 0x07, 0x1c, 0xc2, - 0x2e, 0x4b, 0xdc, 0x99, 0x90, 0xcc, 0x5f, 0xd8, 0xd6, 0xc0, 0xd7, 0xfb, 0xbb, 0x07, 0xe3, 0x48, - 0x72, 0x2d, 0x07, 0x85, 0x6c, 0x77, 0x52, 0x7e, 0xcf, 0xe3, 0x73, 0x24, 0x1d, 0x02, 0x2f, 0xd3, - 0xbc, 0x8c, 0x1f, 0xea, 0xb8, 0xaa, 0x1f, 0xf2, 0x68, 0x17, 0x3f, 0xd6, 0x95, 0x57, 0x94, 0x79, - 0x9d, 0x13, 0x63, 0x57, 0xe5, 0x59, 0x11, 0xb9, 0xe7, 0x60, 0x2e, 0xb7, 0x69, 0x91, 0xc4, 0x3e, - 0x19, 0xc3, 0xf0, 0x3b, 0x8d, 0x1c, 0xed, 0x42, 0xbb, 0xd4, 0x42, 0x5c, 0xba, 0x6f, 0xe0, 0x94, - 0x87, 0xcb, 0x64, 0xfb, 0x18, 0xfb, 0xe4, 0x05, 0x18, 0x15, 0xae, 0x2a, 0x47, 0xbb, 0x18, 0x5e, - 0xda, 0xa1, 0xd8, 0xb9, 0xbf, 0x34, 0x00, 0x0e, 0xce, 0xd7, 0x85, 0x4f, 0x3e, 0x81, 0x59, 0xd5, - 0xe5, 0x36, 0xdb, 0x34, 0x8c, 0x1b, 0x4d, 0x5f, 0x79, 0xbc, 0x9a, 0xd7, 0x41, 0xde, 0x92, 0x13, - 0x77, 0x59, 0x5d, 0x36, 0x61, 0xcb, 0x4f, 0x6e, 0xe0, 0x54, 0x0e, 0xb0, 0xa7, 0x1f, 0x71, 0xc3, - 0x7a, 0xb2, 0x43, 0x5c, 0x92, 0xe7, 0xa0, 0xff, 0x5c, 0x27, 0x34, 0x76, 0x06, 0xec, 0x37, 0xbe, - 0xb9, 0x19, 0x5c, 0x6b, 0xee, 0x15, 0x8c, 0xf8, 0xf7, 0x03, 0x9a, 0x24, 0x3e, 0x79, 0x0b, 0x46, - 0xc5, 0xb6, 0xcc, 0x1e, 0x4d, 0x9f, 0xf5, 0x9b, 0xf0, 0x43, 0x11, 0xbb, 0xbf, 0x2d, 0xd0, 0xe7, - 0xeb, 0xa2, 0x68, 0x88, 0x07, 0x7a, 0x46, 0xd3, 0xb4, 0x6d, 0xdb, 0x69, 0x0d, 0x96, 0x7a, 0x01, - 0x46, 0xbc, 0x5f, 0x8e, 0x21, 0x5f, 0xd5, 0x65, 0xd9, 0x38, 0x03, 0x15, 0xbf, 0xc4, 0x48, 0xf0, - 0x0c, 0x43, 0x3e, 0x8f, 0x76, 0xbb, 0xc6, 0x19, 0xaa, 0xf8, 0x05, 0x46, 0x82, 0x67, 0x18, 0xf2, - 0x11, 0xdd, 0x6c, 0x1a, 0xe7, 0x44, 0xc5, 0xdf, 0x62, 0x24, 0x78, 0x86, 0x31, 0x3e, 0xcf, 0x93, - 0xc6, 0xd1, 0x95, 0x3c, 0x46, 0x2d, 0x8f, 0x6b, 0xe4, 0xe3, 0x8c, 0xa6, 0x8d, 0x63, 0xa8, 0xf8, - 0x3b, 0x8c, 0x04, 0xcf, 0x30, 0xf2, 0x11, 0xac, 0xca, 0x9f, 0xf2, 0x12, 0x26, 0x53, 0xce, 0xf7, - 0x8e, 0x2c, 0x52, 0x6e, 0x3d, 0xc1, 0x4c, 0xbc, 0xfa, 0xc0, 0x45, 0x4b, 0x29, 0x8a, 0xb4, 0x15, - 0xc5, 0x16, 0x45, 0xda, 0x56, 0xb4, 0x55, 0xe2, 0xaa, 0x5f, 0x91, 0x4a, 0x15, 0x69, 0x5b, 0x11, - 0x94, 0x62, 0xbf, 0x62, 0x0b, 0x4f, 0xae, 0x01, 0xba, 0x87, 0x96, 0xe7, 0x6f, 0xa8, 0x98, 0x3f, - 0x5d, 0x9a, 0x3f, 0x34, 0xbb, 0x27, 0xff, 0x97, 0xc9, 0x9d, 0xdc, 0x03, 0x74, 0x8f, 0x2f, 0x9b, - 0x3a, 0x37, 0x5f, 0xcb, 0xa6, 0x62, 0x92, 0xfb, 0x4d, 0x74, 0x73, 0x71, 0xac, 0x7d, 0x7b, 0xdf, - 0x7c, 0xba, 0x10, 0xd9, 0xb4, 0x14, 0xa6, 0xb5, 0xd7, 0x7e, 0x37, 0x2b, 0x8a, 0x83, 0xf7, 0xda, - 0xff, 0xbf, 0x6b, 0x3f, 0xa0, 0x69, 0x5c, 0xae, 0x13, 0xf9, 0x53, 0x9f, 0xe1, 0xac, 0x37, 0x43, - 0x8a, 0xcb, 0x38, 0xdc, 0x07, 0xca, 0xf2, 0xab, 0x1e, 0x3b, 0xfe, 0xbe, 0xbc, 0x3a, 0x54, 0xf9, - 0xec, 0x6f, 0xe4, 0x43, 0x95, 0x4f, 0x8e, 0xc8, 0xef, 0xde, 0x83, 0x29, 0x6e, 0x82, 0x8c, 0xc0, - 0x5c, 0x05, 0x5f, 0x83, 0xc5, 0xb7, 0x60, 0xfc, 0x1f, 0x01, 0x30, 0x66, 0xe1, 0xec, 0xf6, 0xfe, - 0xcb, 0x58, 0x23, 0x36, 0xe8, 0xe1, 0x62, 0x3e, 0x0b, 0xc6, 0x83, 0xc8, 0x60, 0x7f, 0xe0, 0xfe, - 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x84, 0x34, 0xaf, 0xdb, 0x05, 0x00, 0x00, -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto deleted file mode 100644 index d254fa5f..00000000 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/more_test_objects.proto +++ /dev/null @@ -1,69 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2015 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package jsonpb; - -message Simple3 { - double dub = 1; -} - -message SimpleSlice3 { - repeated string slices = 1; -} - -message SimpleMap3 { - map stringy = 1; -} - -message SimpleNull3 { - Simple3 simple = 1; -} - -enum Numeral { - UNKNOWN = 0; - ARABIC = 1; - ROMAN = 2; -} - -message Mappy { - map nummy = 1; - map strry = 2; - map objjy = 3; - map buggy = 4; - map booly = 5; - map enumy = 6; - map s32booly = 7; - map s64booly = 8; - map u32booly = 9; - map u64booly = 10; -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go deleted file mode 100644 index d413d740..00000000 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.pb.go +++ /dev/null @@ -1,852 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: test_objects.proto - -package jsonpb - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/any" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" -import google_protobuf4 "github.com/golang/protobuf/ptypes/wrappers" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type Widget_Color int32 - -const ( - Widget_RED Widget_Color = 0 - Widget_GREEN Widget_Color = 1 - Widget_BLUE Widget_Color = 2 -) - -var Widget_Color_name = map[int32]string{ - 0: "RED", - 1: "GREEN", - 2: "BLUE", -} -var Widget_Color_value = map[string]int32{ - "RED": 0, - "GREEN": 1, - "BLUE": 2, -} - -func (x Widget_Color) Enum() *Widget_Color { - p := new(Widget_Color) - *p = x - return p -} -func (x Widget_Color) String() string { - return proto.EnumName(Widget_Color_name, int32(x)) -} -func (x *Widget_Color) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Widget_Color_value, data, "Widget_Color") - if err != nil { - return err - } - *x = Widget_Color(value) - return nil -} -func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} } - -// Test message for holding primitive types. -type Simple struct { - OBool *bool `protobuf:"varint,1,opt,name=o_bool,json=oBool" json:"o_bool,omitempty"` - OInt32 *int32 `protobuf:"varint,2,opt,name=o_int32,json=oInt32" json:"o_int32,omitempty"` - OInt64 *int64 `protobuf:"varint,3,opt,name=o_int64,json=oInt64" json:"o_int64,omitempty"` - OUint32 *uint32 `protobuf:"varint,4,opt,name=o_uint32,json=oUint32" json:"o_uint32,omitempty"` - OUint64 *uint64 `protobuf:"varint,5,opt,name=o_uint64,json=oUint64" json:"o_uint64,omitempty"` - OSint32 *int32 `protobuf:"zigzag32,6,opt,name=o_sint32,json=oSint32" json:"o_sint32,omitempty"` - OSint64 *int64 `protobuf:"zigzag64,7,opt,name=o_sint64,json=oSint64" json:"o_sint64,omitempty"` - OFloat *float32 `protobuf:"fixed32,8,opt,name=o_float,json=oFloat" json:"o_float,omitempty"` - ODouble *float64 `protobuf:"fixed64,9,opt,name=o_double,json=oDouble" json:"o_double,omitempty"` - OString *string `protobuf:"bytes,10,opt,name=o_string,json=oString" json:"o_string,omitempty"` - OBytes []byte `protobuf:"bytes,11,opt,name=o_bytes,json=oBytes" json:"o_bytes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Simple) Reset() { *m = Simple{} } -func (m *Simple) String() string { return proto.CompactTextString(m) } -func (*Simple) ProtoMessage() {} -func (*Simple) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Simple) GetOBool() bool { - if m != nil && m.OBool != nil { - return *m.OBool - } - return false -} - -func (m *Simple) GetOInt32() int32 { - if m != nil && m.OInt32 != nil { - return *m.OInt32 - } - return 0 -} - -func (m *Simple) GetOInt64() int64 { - if m != nil && m.OInt64 != nil { - return *m.OInt64 - } - return 0 -} - -func (m *Simple) GetOUint32() uint32 { - if m != nil && m.OUint32 != nil { - return *m.OUint32 - } - return 0 -} - -func (m *Simple) GetOUint64() uint64 { - if m != nil && m.OUint64 != nil { - return *m.OUint64 - } - return 0 -} - -func (m *Simple) GetOSint32() int32 { - if m != nil && m.OSint32 != nil { - return *m.OSint32 - } - return 0 -} - -func (m *Simple) GetOSint64() int64 { - if m != nil && m.OSint64 != nil { - return *m.OSint64 - } - return 0 -} - -func (m *Simple) GetOFloat() float32 { - if m != nil && m.OFloat != nil { - return *m.OFloat - } - return 0 -} - -func (m *Simple) GetODouble() float64 { - if m != nil && m.ODouble != nil { - return *m.ODouble - } - return 0 -} - -func (m *Simple) GetOString() string { - if m != nil && m.OString != nil { - return *m.OString - } - return "" -} - -func (m *Simple) GetOBytes() []byte { - if m != nil { - return m.OBytes - } - return nil -} - -// Test message for holding special non-finites primitives. -type NonFinites struct { - FNan *float32 `protobuf:"fixed32,1,opt,name=f_nan,json=fNan" json:"f_nan,omitempty"` - FPinf *float32 `protobuf:"fixed32,2,opt,name=f_pinf,json=fPinf" json:"f_pinf,omitempty"` - FNinf *float32 `protobuf:"fixed32,3,opt,name=f_ninf,json=fNinf" json:"f_ninf,omitempty"` - DNan *float64 `protobuf:"fixed64,4,opt,name=d_nan,json=dNan" json:"d_nan,omitempty"` - DPinf *float64 `protobuf:"fixed64,5,opt,name=d_pinf,json=dPinf" json:"d_pinf,omitempty"` - DNinf *float64 `protobuf:"fixed64,6,opt,name=d_ninf,json=dNinf" json:"d_ninf,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *NonFinites) Reset() { *m = NonFinites{} } -func (m *NonFinites) String() string { return proto.CompactTextString(m) } -func (*NonFinites) ProtoMessage() {} -func (*NonFinites) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *NonFinites) GetFNan() float32 { - if m != nil && m.FNan != nil { - return *m.FNan - } - return 0 -} - -func (m *NonFinites) GetFPinf() float32 { - if m != nil && m.FPinf != nil { - return *m.FPinf - } - return 0 -} - -func (m *NonFinites) GetFNinf() float32 { - if m != nil && m.FNinf != nil { - return *m.FNinf - } - return 0 -} - -func (m *NonFinites) GetDNan() float64 { - if m != nil && m.DNan != nil { - return *m.DNan - } - return 0 -} - -func (m *NonFinites) GetDPinf() float64 { - if m != nil && m.DPinf != nil { - return *m.DPinf - } - return 0 -} - -func (m *NonFinites) GetDNinf() float64 { - if m != nil && m.DNinf != nil { - return *m.DNinf - } - return 0 -} - -// Test message for holding repeated primitives. -type Repeats struct { - RBool []bool `protobuf:"varint,1,rep,name=r_bool,json=rBool" json:"r_bool,omitempty"` - RInt32 []int32 `protobuf:"varint,2,rep,name=r_int32,json=rInt32" json:"r_int32,omitempty"` - RInt64 []int64 `protobuf:"varint,3,rep,name=r_int64,json=rInt64" json:"r_int64,omitempty"` - RUint32 []uint32 `protobuf:"varint,4,rep,name=r_uint32,json=rUint32" json:"r_uint32,omitempty"` - RUint64 []uint64 `protobuf:"varint,5,rep,name=r_uint64,json=rUint64" json:"r_uint64,omitempty"` - RSint32 []int32 `protobuf:"zigzag32,6,rep,name=r_sint32,json=rSint32" json:"r_sint32,omitempty"` - RSint64 []int64 `protobuf:"zigzag64,7,rep,name=r_sint64,json=rSint64" json:"r_sint64,omitempty"` - RFloat []float32 `protobuf:"fixed32,8,rep,name=r_float,json=rFloat" json:"r_float,omitempty"` - RDouble []float64 `protobuf:"fixed64,9,rep,name=r_double,json=rDouble" json:"r_double,omitempty"` - RString []string `protobuf:"bytes,10,rep,name=r_string,json=rString" json:"r_string,omitempty"` - RBytes [][]byte `protobuf:"bytes,11,rep,name=r_bytes,json=rBytes" json:"r_bytes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Repeats) Reset() { *m = Repeats{} } -func (m *Repeats) String() string { return proto.CompactTextString(m) } -func (*Repeats) ProtoMessage() {} -func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *Repeats) GetRBool() []bool { - if m != nil { - return m.RBool - } - return nil -} - -func (m *Repeats) GetRInt32() []int32 { - if m != nil { - return m.RInt32 - } - return nil -} - -func (m *Repeats) GetRInt64() []int64 { - if m != nil { - return m.RInt64 - } - return nil -} - -func (m *Repeats) GetRUint32() []uint32 { - if m != nil { - return m.RUint32 - } - return nil -} - -func (m *Repeats) GetRUint64() []uint64 { - if m != nil { - return m.RUint64 - } - return nil -} - -func (m *Repeats) GetRSint32() []int32 { - if m != nil { - return m.RSint32 - } - return nil -} - -func (m *Repeats) GetRSint64() []int64 { - if m != nil { - return m.RSint64 - } - return nil -} - -func (m *Repeats) GetRFloat() []float32 { - if m != nil { - return m.RFloat - } - return nil -} - -func (m *Repeats) GetRDouble() []float64 { - if m != nil { - return m.RDouble - } - return nil -} - -func (m *Repeats) GetRString() []string { - if m != nil { - return m.RString - } - return nil -} - -func (m *Repeats) GetRBytes() [][]byte { - if m != nil { - return m.RBytes - } - return nil -} - -// Test message for holding enums and nested messages. -type Widget struct { - Color *Widget_Color `protobuf:"varint,1,opt,name=color,enum=jsonpb.Widget_Color" json:"color,omitempty"` - RColor []Widget_Color `protobuf:"varint,2,rep,name=r_color,json=rColor,enum=jsonpb.Widget_Color" json:"r_color,omitempty"` - Simple *Simple `protobuf:"bytes,10,opt,name=simple" json:"simple,omitempty"` - RSimple []*Simple `protobuf:"bytes,11,rep,name=r_simple,json=rSimple" json:"r_simple,omitempty"` - Repeats *Repeats `protobuf:"bytes,20,opt,name=repeats" json:"repeats,omitempty"` - RRepeats []*Repeats `protobuf:"bytes,21,rep,name=r_repeats,json=rRepeats" json:"r_repeats,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Widget) Reset() { *m = Widget{} } -func (m *Widget) String() string { return proto.CompactTextString(m) } -func (*Widget) ProtoMessage() {} -func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *Widget) GetColor() Widget_Color { - if m != nil && m.Color != nil { - return *m.Color - } - return Widget_RED -} - -func (m *Widget) GetRColor() []Widget_Color { - if m != nil { - return m.RColor - } - return nil -} - -func (m *Widget) GetSimple() *Simple { - if m != nil { - return m.Simple - } - return nil -} - -func (m *Widget) GetRSimple() []*Simple { - if m != nil { - return m.RSimple - } - return nil -} - -func (m *Widget) GetRepeats() *Repeats { - if m != nil { - return m.Repeats - } - return nil -} - -func (m *Widget) GetRRepeats() []*Repeats { - if m != nil { - return m.RRepeats - } - return nil -} - -type Maps struct { - MInt64Str map[int64]string `protobuf:"bytes,1,rep,name=m_int64_str,json=mInt64Str" json:"m_int64_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - MBoolSimple map[bool]*Simple `protobuf:"bytes,2,rep,name=m_bool_simple,json=mBoolSimple" json:"m_bool_simple,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Maps) Reset() { *m = Maps{} } -func (m *Maps) String() string { return proto.CompactTextString(m) } -func (*Maps) ProtoMessage() {} -func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *Maps) GetMInt64Str() map[int64]string { - if m != nil { - return m.MInt64Str - } - return nil -} - -func (m *Maps) GetMBoolSimple() map[bool]*Simple { - if m != nil { - return m.MBoolSimple - } - return nil -} - -type MsgWithOneof struct { - // Types that are valid to be assigned to Union: - // *MsgWithOneof_Title - // *MsgWithOneof_Salary - // *MsgWithOneof_Country - // *MsgWithOneof_HomeAddress - Union isMsgWithOneof_Union `protobuf_oneof:"union"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MsgWithOneof) Reset() { *m = MsgWithOneof{} } -func (m *MsgWithOneof) String() string { return proto.CompactTextString(m) } -func (*MsgWithOneof) ProtoMessage() {} -func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -type isMsgWithOneof_Union interface { - isMsgWithOneof_Union() -} - -type MsgWithOneof_Title struct { - Title string `protobuf:"bytes,1,opt,name=title,oneof"` -} -type MsgWithOneof_Salary struct { - Salary int64 `protobuf:"varint,2,opt,name=salary,oneof"` -} -type MsgWithOneof_Country struct { - Country string `protobuf:"bytes,3,opt,name=Country,oneof"` -} -type MsgWithOneof_HomeAddress struct { - HomeAddress string `protobuf:"bytes,4,opt,name=home_address,json=homeAddress,oneof"` -} - -func (*MsgWithOneof_Title) isMsgWithOneof_Union() {} -func (*MsgWithOneof_Salary) isMsgWithOneof_Union() {} -func (*MsgWithOneof_Country) isMsgWithOneof_Union() {} -func (*MsgWithOneof_HomeAddress) isMsgWithOneof_Union() {} - -func (m *MsgWithOneof) GetUnion() isMsgWithOneof_Union { - if m != nil { - return m.Union - } - return nil -} - -func (m *MsgWithOneof) GetTitle() string { - if x, ok := m.GetUnion().(*MsgWithOneof_Title); ok { - return x.Title - } - return "" -} - -func (m *MsgWithOneof) GetSalary() int64 { - if x, ok := m.GetUnion().(*MsgWithOneof_Salary); ok { - return x.Salary - } - return 0 -} - -func (m *MsgWithOneof) GetCountry() string { - if x, ok := m.GetUnion().(*MsgWithOneof_Country); ok { - return x.Country - } - return "" -} - -func (m *MsgWithOneof) GetHomeAddress() string { - if x, ok := m.GetUnion().(*MsgWithOneof_HomeAddress); ok { - return x.HomeAddress - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*MsgWithOneof) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _MsgWithOneof_OneofMarshaler, _MsgWithOneof_OneofUnmarshaler, _MsgWithOneof_OneofSizer, []interface{}{ - (*MsgWithOneof_Title)(nil), - (*MsgWithOneof_Salary)(nil), - (*MsgWithOneof_Country)(nil), - (*MsgWithOneof_HomeAddress)(nil), - } -} - -func _MsgWithOneof_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*MsgWithOneof) - // union - switch x := m.Union.(type) { - case *MsgWithOneof_Title: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Title) - case *MsgWithOneof_Salary: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Salary)) - case *MsgWithOneof_Country: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Country) - case *MsgWithOneof_HomeAddress: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.HomeAddress) - case nil: - default: - return fmt.Errorf("MsgWithOneof.Union has unexpected type %T", x) - } - return nil -} - -func _MsgWithOneof_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*MsgWithOneof) - switch tag { - case 1: // union.title - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Union = &MsgWithOneof_Title{x} - return true, err - case 2: // union.salary - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &MsgWithOneof_Salary{int64(x)} - return true, err - case 3: // union.Country - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Union = &MsgWithOneof_Country{x} - return true, err - case 4: // union.home_address - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Union = &MsgWithOneof_HomeAddress{x} - return true, err - default: - return false, nil - } -} - -func _MsgWithOneof_OneofSizer(msg proto.Message) (n int) { - m := msg.(*MsgWithOneof) - // union - switch x := m.Union.(type) { - case *MsgWithOneof_Title: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Title))) - n += len(x.Title) - case *MsgWithOneof_Salary: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Salary)) - case *MsgWithOneof_Country: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Country))) - n += len(x.Country) - case *MsgWithOneof_HomeAddress: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.HomeAddress))) - n += len(x.HomeAddress) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type Real struct { - Value *float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Real) Reset() { *m = Real{} } -func (m *Real) String() string { return proto.CompactTextString(m) } -func (*Real) ProtoMessage() {} -func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -var extRange_Real = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*Real) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_Real -} - -func (m *Real) GetValue() float64 { - if m != nil && m.Value != nil { - return *m.Value - } - return 0 -} - -type Complex struct { - Imaginary *float64 `protobuf:"fixed64,1,opt,name=imaginary" json:"imaginary,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Complex) Reset() { *m = Complex{} } -func (m *Complex) String() string { return proto.CompactTextString(m) } -func (*Complex) ProtoMessage() {} -func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -var extRange_Complex = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*Complex) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_Complex -} - -func (m *Complex) GetImaginary() float64 { - if m != nil && m.Imaginary != nil { - return *m.Imaginary - } - return 0 -} - -var E_Complex_RealExtension = &proto.ExtensionDesc{ - ExtendedType: (*Real)(nil), - ExtensionType: (*Complex)(nil), - Field: 123, - Name: "jsonpb.Complex.real_extension", - Tag: "bytes,123,opt,name=real_extension,json=realExtension", - Filename: "test_objects.proto", -} - -type KnownTypes struct { - An *google_protobuf.Any `protobuf:"bytes,14,opt,name=an" json:"an,omitempty"` - Dur *google_protobuf1.Duration `protobuf:"bytes,1,opt,name=dur" json:"dur,omitempty"` - St *google_protobuf2.Struct `protobuf:"bytes,12,opt,name=st" json:"st,omitempty"` - Ts *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=ts" json:"ts,omitempty"` - Lv *google_protobuf2.ListValue `protobuf:"bytes,15,opt,name=lv" json:"lv,omitempty"` - Val *google_protobuf2.Value `protobuf:"bytes,16,opt,name=val" json:"val,omitempty"` - Dbl *google_protobuf4.DoubleValue `protobuf:"bytes,3,opt,name=dbl" json:"dbl,omitempty"` - Flt *google_protobuf4.FloatValue `protobuf:"bytes,4,opt,name=flt" json:"flt,omitempty"` - I64 *google_protobuf4.Int64Value `protobuf:"bytes,5,opt,name=i64" json:"i64,omitempty"` - U64 *google_protobuf4.UInt64Value `protobuf:"bytes,6,opt,name=u64" json:"u64,omitempty"` - I32 *google_protobuf4.Int32Value `protobuf:"bytes,7,opt,name=i32" json:"i32,omitempty"` - U32 *google_protobuf4.UInt32Value `protobuf:"bytes,8,opt,name=u32" json:"u32,omitempty"` - Bool *google_protobuf4.BoolValue `protobuf:"bytes,9,opt,name=bool" json:"bool,omitempty"` - Str *google_protobuf4.StringValue `protobuf:"bytes,10,opt,name=str" json:"str,omitempty"` - Bytes *google_protobuf4.BytesValue `protobuf:"bytes,11,opt,name=bytes" json:"bytes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *KnownTypes) Reset() { *m = KnownTypes{} } -func (m *KnownTypes) String() string { return proto.CompactTextString(m) } -func (*KnownTypes) ProtoMessage() {} -func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *KnownTypes) GetAn() *google_protobuf.Any { - if m != nil { - return m.An - } - return nil -} - -func (m *KnownTypes) GetDur() *google_protobuf1.Duration { - if m != nil { - return m.Dur - } - return nil -} - -func (m *KnownTypes) GetSt() *google_protobuf2.Struct { - if m != nil { - return m.St - } - return nil -} - -func (m *KnownTypes) GetTs() *google_protobuf3.Timestamp { - if m != nil { - return m.Ts - } - return nil -} - -func (m *KnownTypes) GetLv() *google_protobuf2.ListValue { - if m != nil { - return m.Lv - } - return nil -} - -func (m *KnownTypes) GetVal() *google_protobuf2.Value { - if m != nil { - return m.Val - } - return nil -} - -func (m *KnownTypes) GetDbl() *google_protobuf4.DoubleValue { - if m != nil { - return m.Dbl - } - return nil -} - -func (m *KnownTypes) GetFlt() *google_protobuf4.FloatValue { - if m != nil { - return m.Flt - } - return nil -} - -func (m *KnownTypes) GetI64() *google_protobuf4.Int64Value { - if m != nil { - return m.I64 - } - return nil -} - -func (m *KnownTypes) GetU64() *google_protobuf4.UInt64Value { - if m != nil { - return m.U64 - } - return nil -} - -func (m *KnownTypes) GetI32() *google_protobuf4.Int32Value { - if m != nil { - return m.I32 - } - return nil -} - -func (m *KnownTypes) GetU32() *google_protobuf4.UInt32Value { - if m != nil { - return m.U32 - } - return nil -} - -func (m *KnownTypes) GetBool() *google_protobuf4.BoolValue { - if m != nil { - return m.Bool - } - return nil -} - -func (m *KnownTypes) GetStr() *google_protobuf4.StringValue { - if m != nil { - return m.Str - } - return nil -} - -func (m *KnownTypes) GetBytes() *google_protobuf4.BytesValue { - if m != nil { - return m.Bytes - } - return nil -} - -var E_Name = &proto.ExtensionDesc{ - ExtendedType: (*Real)(nil), - ExtensionType: (*string)(nil), - Field: 124, - Name: "jsonpb.name", - Tag: "bytes,124,opt,name=name", - Filename: "test_objects.proto", -} - -func init() { - proto.RegisterType((*Simple)(nil), "jsonpb.Simple") - proto.RegisterType((*NonFinites)(nil), "jsonpb.NonFinites") - proto.RegisterType((*Repeats)(nil), "jsonpb.Repeats") - proto.RegisterType((*Widget)(nil), "jsonpb.Widget") - proto.RegisterType((*Maps)(nil), "jsonpb.Maps") - proto.RegisterType((*MsgWithOneof)(nil), "jsonpb.MsgWithOneof") - proto.RegisterType((*Real)(nil), "jsonpb.Real") - proto.RegisterType((*Complex)(nil), "jsonpb.Complex") - proto.RegisterType((*KnownTypes)(nil), "jsonpb.KnownTypes") - proto.RegisterEnum("jsonpb.Widget_Color", Widget_Color_name, Widget_Color_value) - proto.RegisterExtension(E_Complex_RealExtension) - proto.RegisterExtension(E_Name) -} - -func init() { proto.RegisterFile("test_objects.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1160 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0x41, 0x73, 0xdb, 0x44, - 0x14, 0xc7, 0x23, 0xc9, 0x92, 0xed, 0x75, 0x92, 0x9a, 0x6d, 0xda, 0x2a, 0x26, 0x80, 0xc6, 0x94, - 0x22, 0x0a, 0x75, 0x07, 0xc7, 0xe3, 0x61, 0x0a, 0x97, 0xa4, 0x71, 0x29, 0x43, 0x13, 0x98, 0x4d, - 0x43, 0x8f, 0x1e, 0x39, 0x5a, 0xbb, 0x2a, 0xf2, 0xae, 0x67, 0x77, 0x95, 0xd4, 0x03, 0x87, 0x9c, - 0x39, 0x32, 0x7c, 0x05, 0xf8, 0x08, 0x1c, 0xf8, 0x74, 0xcc, 0xdb, 0x95, 0xac, 0xc4, 0x8e, 0x4f, - 0xf1, 0x7b, 0xef, 0xff, 0xfe, 0x59, 0xed, 0x6f, 0x77, 0x1f, 0xc2, 0x8a, 0x4a, 0x35, 0xe4, 0xa3, - 0x77, 0xf4, 0x5c, 0xc9, 0xce, 0x4c, 0x70, 0xc5, 0xb1, 0xf7, 0x4e, 0x72, 0x36, 0x1b, 0xb5, 0x76, - 0x27, 0x9c, 0x4f, 0x52, 0xfa, 0x54, 0x67, 0x47, 0xd9, 0xf8, 0x69, 0xc4, 0xe6, 0x46, 0xd2, 0xfa, - 0x78, 0xb9, 0x14, 0x67, 0x22, 0x52, 0x09, 0x67, 0x79, 0x7d, 0x6f, 0xb9, 0x2e, 0x95, 0xc8, 0xce, - 0x55, 0x5e, 0xfd, 0x64, 0xb9, 0xaa, 0x92, 0x29, 0x95, 0x2a, 0x9a, 0xce, 0xd6, 0xd9, 0x5f, 0x8a, - 0x68, 0x36, 0xa3, 0x22, 0x5f, 0x61, 0xfb, 0x6f, 0x1b, 0x79, 0xa7, 0xc9, 0x74, 0x96, 0x52, 0x7c, - 0x0f, 0x79, 0x7c, 0x38, 0xe2, 0x3c, 0xf5, 0xad, 0xc0, 0x0a, 0x6b, 0xc4, 0xe5, 0x87, 0x9c, 0xa7, - 0xf8, 0x01, 0xaa, 0xf2, 0x61, 0xc2, 0xd4, 0x7e, 0xd7, 0xb7, 0x03, 0x2b, 0x74, 0x89, 0xc7, 0x7f, - 0x80, 0x68, 0x51, 0xe8, 0xf7, 0x7c, 0x27, 0xb0, 0x42, 0xc7, 0x14, 0xfa, 0x3d, 0xbc, 0x8b, 0x6a, - 0x7c, 0x98, 0x99, 0x96, 0x4a, 0x60, 0x85, 0x5b, 0xa4, 0xca, 0xcf, 0x74, 0x58, 0x96, 0xfa, 0x3d, - 0xdf, 0x0d, 0xac, 0xb0, 0x92, 0x97, 0x8a, 0x2e, 0x69, 0xba, 0xbc, 0xc0, 0x0a, 0x3f, 0x20, 0x55, - 0x7e, 0x7a, 0xad, 0x4b, 0x9a, 0xae, 0x6a, 0x60, 0x85, 0x38, 0x2f, 0xf5, 0x7b, 0x66, 0x11, 0xe3, - 0x94, 0x47, 0xca, 0xaf, 0x05, 0x56, 0x68, 0x13, 0x8f, 0xbf, 0x80, 0xc8, 0xf4, 0xc4, 0x3c, 0x1b, - 0xa5, 0xd4, 0xaf, 0x07, 0x56, 0x68, 0x91, 0x2a, 0x3f, 0xd2, 0x61, 0x6e, 0xa7, 0x44, 0xc2, 0x26, - 0x3e, 0x0a, 0xac, 0xb0, 0x0e, 0x76, 0x3a, 0x34, 0x76, 0xa3, 0xb9, 0xa2, 0xd2, 0x6f, 0x04, 0x56, - 0xb8, 0x49, 0x3c, 0x7e, 0x08, 0x51, 0xfb, 0x4f, 0x0b, 0xa1, 0x13, 0xce, 0x5e, 0x24, 0x2c, 0x51, - 0x54, 0xe2, 0xbb, 0xc8, 0x1d, 0x0f, 0x59, 0xc4, 0xf4, 0x56, 0xd9, 0xa4, 0x32, 0x3e, 0x89, 0x18, - 0x6c, 0xe0, 0x78, 0x38, 0x4b, 0xd8, 0x58, 0x6f, 0x94, 0x4d, 0xdc, 0xf1, 0xcf, 0x09, 0x1b, 0x9b, - 0x34, 0x83, 0xb4, 0x93, 0xa7, 0x4f, 0x20, 0x7d, 0x17, 0xb9, 0xb1, 0xb6, 0xa8, 0xe8, 0xd5, 0x55, - 0xe2, 0xdc, 0x22, 0x36, 0x16, 0xae, 0xce, 0xba, 0x71, 0x61, 0x11, 0x1b, 0x0b, 0x2f, 0x4f, 0x83, - 0x45, 0xfb, 0x1f, 0x1b, 0x55, 0x09, 0x9d, 0xd1, 0x48, 0x49, 0x90, 0x88, 0x82, 0x9e, 0x03, 0xf4, - 0x44, 0x41, 0x4f, 0x2c, 0xe8, 0x39, 0x40, 0x4f, 0x2c, 0xe8, 0x89, 0x05, 0x3d, 0x07, 0xe8, 0x89, - 0x05, 0x3d, 0x51, 0xd2, 0x73, 0x80, 0x9e, 0x28, 0xe9, 0x89, 0x92, 0x9e, 0x03, 0xf4, 0x44, 0x49, - 0x4f, 0x94, 0xf4, 0x1c, 0xa0, 0x27, 0x4e, 0xaf, 0x75, 0x2d, 0xe8, 0x39, 0x40, 0x4f, 0x94, 0xf4, - 0xc4, 0x82, 0x9e, 0x03, 0xf4, 0xc4, 0x82, 0x9e, 0x28, 0xe9, 0x39, 0x40, 0x4f, 0x94, 0xf4, 0x44, - 0x49, 0xcf, 0x01, 0x7a, 0xa2, 0xa4, 0x27, 0x16, 0xf4, 0x1c, 0xa0, 0x27, 0x0c, 0xbd, 0x7f, 0x6d, - 0xe4, 0xbd, 0x49, 0xe2, 0x09, 0x55, 0xf8, 0x31, 0x72, 0xcf, 0x79, 0xca, 0x85, 0x26, 0xb7, 0xdd, - 0xdd, 0xe9, 0x98, 0x2b, 0xda, 0x31, 0xe5, 0xce, 0x73, 0xa8, 0x11, 0x23, 0xc1, 0x4f, 0xc0, 0xcf, - 0xa8, 0x61, 0xf3, 0xd6, 0xa9, 0x3d, 0xa1, 0xff, 0xe2, 0x47, 0xc8, 0x93, 0xfa, 0x2a, 0xe9, 0x53, - 0xd5, 0xe8, 0x6e, 0x17, 0x6a, 0x73, 0xc1, 0x48, 0x5e, 0xc5, 0x5f, 0x98, 0x0d, 0xd1, 0x4a, 0x58, - 0xe7, 0xaa, 0x12, 0x36, 0x28, 0x97, 0x56, 0x85, 0x01, 0xec, 0xef, 0x68, 0xcf, 0x3b, 0x85, 0x32, - 0xe7, 0x4e, 0x8a, 0x3a, 0xfe, 0x0a, 0xd5, 0xc5, 0xb0, 0x10, 0xdf, 0xd3, 0xb6, 0x2b, 0xe2, 0x9a, - 0xc8, 0x7f, 0xb5, 0x3f, 0x43, 0xae, 0x59, 0x74, 0x15, 0x39, 0x64, 0x70, 0xd4, 0xdc, 0xc0, 0x75, - 0xe4, 0x7e, 0x4f, 0x06, 0x83, 0x93, 0xa6, 0x85, 0x6b, 0xa8, 0x72, 0xf8, 0xea, 0x6c, 0xd0, 0xb4, - 0xdb, 0x7f, 0xd9, 0xa8, 0x72, 0x1c, 0xcd, 0x24, 0xfe, 0x16, 0x35, 0xa6, 0xe6, 0xb8, 0xc0, 0xde, - 0xeb, 0x33, 0xd6, 0xe8, 0x7e, 0x58, 0xf8, 0x83, 0xa4, 0x73, 0xac, 0xcf, 0xcf, 0xa9, 0x12, 0x03, - 0xa6, 0xc4, 0x9c, 0xd4, 0xa7, 0x45, 0x8c, 0x0f, 0xd0, 0xd6, 0x54, 0x9f, 0xcd, 0xe2, 0xab, 0x6d, - 0xdd, 0xfe, 0xd1, 0xcd, 0x76, 0x38, 0xaf, 0xe6, 0xb3, 0x8d, 0x41, 0x63, 0x5a, 0x66, 0x5a, 0xdf, - 0xa1, 0xed, 0x9b, 0xfe, 0xb8, 0x89, 0x9c, 0x5f, 0xe9, 0x5c, 0x63, 0x74, 0x08, 0xfc, 0xc4, 0x3b, - 0xc8, 0xbd, 0x88, 0xd2, 0x8c, 0xea, 0xeb, 0x57, 0x27, 0x26, 0x78, 0x66, 0x7f, 0x63, 0xb5, 0x4e, - 0x50, 0x73, 0xd9, 0xfe, 0x7a, 0x7f, 0xcd, 0xf4, 0x3f, 0xbc, 0xde, 0xbf, 0x0a, 0xa5, 0xf4, 0x6b, - 0xff, 0x61, 0xa1, 0xcd, 0x63, 0x39, 0x79, 0x93, 0xa8, 0xb7, 0x3f, 0x31, 0xca, 0xc7, 0xf8, 0x3e, - 0x72, 0x55, 0xa2, 0x52, 0xaa, 0xed, 0xea, 0x2f, 0x37, 0x88, 0x09, 0xb1, 0x8f, 0x3c, 0x19, 0xa5, - 0x91, 0x98, 0x6b, 0x4f, 0xe7, 0xe5, 0x06, 0xc9, 0x63, 0xdc, 0x42, 0xd5, 0xe7, 0x3c, 0x83, 0x95, - 0xe8, 0x67, 0x01, 0x7a, 0x8a, 0x04, 0xfe, 0x14, 0x6d, 0xbe, 0xe5, 0x53, 0x3a, 0x8c, 0xe2, 0x58, - 0x50, 0x29, 0xf5, 0x0b, 0x01, 0x82, 0x06, 0x64, 0x0f, 0x4c, 0xf2, 0xb0, 0x8a, 0xdc, 0x8c, 0x25, - 0x9c, 0xb5, 0x1f, 0xa1, 0x0a, 0xa1, 0x51, 0x5a, 0x7e, 0xbe, 0x65, 0xde, 0x08, 0x1d, 0x3c, 0xae, - 0xd5, 0xe2, 0xe6, 0xd5, 0xd5, 0xd5, 0x95, 0xdd, 0xbe, 0x84, 0xff, 0x08, 0x5f, 0xf2, 0x1e, 0xef, - 0xa1, 0x7a, 0x32, 0x8d, 0x26, 0x09, 0x83, 0x95, 0x19, 0x79, 0x99, 0x28, 0x5b, 0xba, 0x47, 0x68, - 0x5b, 0xd0, 0x28, 0x1d, 0xd2, 0xf7, 0x8a, 0x32, 0x99, 0x70, 0x86, 0x37, 0xcb, 0x23, 0x15, 0xa5, - 0xfe, 0x6f, 0x37, 0xcf, 0x64, 0x6e, 0x4f, 0xb6, 0xa0, 0x69, 0x50, 0xf4, 0xb4, 0xff, 0x73, 0x11, - 0xfa, 0x91, 0xf1, 0x4b, 0xf6, 0x7a, 0x3e, 0xa3, 0x12, 0x3f, 0x44, 0x76, 0xc4, 0xfc, 0x6d, 0xdd, - 0xba, 0xd3, 0x31, 0xf3, 0xa9, 0x53, 0xcc, 0xa7, 0xce, 0x01, 0x9b, 0x13, 0x3b, 0x62, 0xf8, 0x4b, - 0xe4, 0xc4, 0x99, 0xb9, 0xa5, 0x8d, 0xee, 0xee, 0x8a, 0xec, 0x28, 0x9f, 0x92, 0x04, 0x54, 0xf8, - 0x73, 0x64, 0x4b, 0xe5, 0x6f, 0x6a, 0xed, 0x83, 0x15, 0xed, 0xa9, 0x9e, 0x98, 0xc4, 0x96, 0x70, - 0xfb, 0x6d, 0x25, 0x73, 0xbe, 0xad, 0x15, 0xe1, 0xeb, 0x62, 0x78, 0x12, 0x5b, 0x49, 0xd0, 0xa6, - 0x17, 0xfe, 0x9d, 0x35, 0xda, 0x57, 0x89, 0x54, 0xbf, 0xc0, 0x0e, 0x13, 0x3b, 0xbd, 0xc0, 0x21, - 0x72, 0x2e, 0xa2, 0xd4, 0x6f, 0x6a, 0xf1, 0xfd, 0x15, 0xb1, 0x11, 0x82, 0x04, 0x77, 0x90, 0x13, - 0x8f, 0x52, 0xcd, 0xbc, 0xd1, 0xdd, 0x5b, 0xfd, 0x2e, 0xfd, 0xc8, 0xe5, 0xfa, 0x78, 0x94, 0xe2, - 0x27, 0xc8, 0x19, 0xa7, 0x4a, 0x1f, 0x01, 0xb8, 0x70, 0xcb, 0x7a, 0xfd, 0x5c, 0xe6, 0xf2, 0x71, - 0xaa, 0x40, 0x9e, 0xe4, 0xb3, 0xf5, 0x36, 0xb9, 0xbe, 0x42, 0xb9, 0x3c, 0xe9, 0xf7, 0x60, 0x35, - 0x59, 0xbf, 0xa7, 0xa7, 0xca, 0x6d, 0xab, 0x39, 0xbb, 0xae, 0xcf, 0xfa, 0x3d, 0x6d, 0xbf, 0xdf, - 0xd5, 0x43, 0x78, 0x8d, 0xfd, 0x7e, 0xb7, 0xb0, 0xdf, 0xef, 0x6a, 0xfb, 0xfd, 0xae, 0x9e, 0xcc, - 0xeb, 0xec, 0x17, 0xfa, 0x4c, 0xeb, 0x2b, 0x7a, 0x84, 0xd5, 0xd7, 0x6c, 0x3a, 0xdc, 0x61, 0x23, - 0xd7, 0x3a, 0xf0, 0x87, 0xd7, 0x08, 0xad, 0xf1, 0x37, 0x63, 0x21, 0xf7, 0x97, 0x4a, 0xe0, 0xaf, - 0x91, 0x5b, 0x0e, 0xf7, 0xdb, 0x3e, 0x40, 0x8f, 0x0b, 0xd3, 0x60, 0x94, 0xcf, 0x02, 0x54, 0x61, - 0xd1, 0x94, 0x2e, 0x1d, 0xfc, 0xdf, 0xf5, 0x0b, 0xa3, 0x2b, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, - 0xd5, 0x39, 0x32, 0x09, 0xf9, 0x09, 0x00, 0x00, -} diff --git a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto b/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto deleted file mode 100644 index 0d2fc1fa..00000000 --- a/vendor/github.com/golang/protobuf/jsonpb/jsonpb_test_proto/test_objects.proto +++ /dev/null @@ -1,147 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2015 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -import "google/protobuf/any.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/struct.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -package jsonpb; - -// Test message for holding primitive types. -message Simple { - optional bool o_bool = 1; - optional int32 o_int32 = 2; - optional int64 o_int64 = 3; - optional uint32 o_uint32 = 4; - optional uint64 o_uint64 = 5; - optional sint32 o_sint32 = 6; - optional sint64 o_sint64 = 7; - optional float o_float = 8; - optional double o_double = 9; - optional string o_string = 10; - optional bytes o_bytes = 11; -} - -// Test message for holding special non-finites primitives. -message NonFinites { - optional float f_nan = 1; - optional float f_pinf = 2; - optional float f_ninf = 3; - optional double d_nan = 4; - optional double d_pinf = 5; - optional double d_ninf = 6; -} - -// Test message for holding repeated primitives. -message Repeats { - repeated bool r_bool = 1; - repeated int32 r_int32 = 2; - repeated int64 r_int64 = 3; - repeated uint32 r_uint32 = 4; - repeated uint64 r_uint64 = 5; - repeated sint32 r_sint32 = 6; - repeated sint64 r_sint64 = 7; - repeated float r_float = 8; - repeated double r_double = 9; - repeated string r_string = 10; - repeated bytes r_bytes = 11; -} - -// Test message for holding enums and nested messages. -message Widget { - enum Color { - RED = 0; - GREEN = 1; - BLUE = 2; - }; - optional Color color = 1; - repeated Color r_color = 2; - - optional Simple simple = 10; - repeated Simple r_simple = 11; - - optional Repeats repeats = 20; - repeated Repeats r_repeats = 21; -} - -message Maps { - map m_int64_str = 1; - map m_bool_simple = 2; -} - -message MsgWithOneof { - oneof union { - string title = 1; - int64 salary = 2; - string Country = 3; - string home_address = 4; - } -} - -message Real { - optional double value = 1; - extensions 100 to max; -} - -extend Real { - optional string name = 124; -} - -message Complex { - extend Real { - optional Complex real_extension = 123; - } - optional double imaginary = 1; - extensions 100 to max; -} - -message KnownTypes { - optional google.protobuf.Any an = 14; - optional google.protobuf.Duration dur = 1; - optional google.protobuf.Struct st = 12; - optional google.protobuf.Timestamp ts = 2; - optional google.protobuf.ListValue lv = 15; - optional google.protobuf.Value val = 16; - - optional google.protobuf.DoubleValue dbl = 3; - optional google.protobuf.FloatValue flt = 4; - optional google.protobuf.Int64Value i64 = 5; - optional google.protobuf.UInt64Value u64 = 6; - optional google.protobuf.Int32Value i32 = 7; - optional google.protobuf.UInt32Value u32 = 8; - optional google.protobuf.BoolValue bool = 9; - optional google.protobuf.StringValue str = 10; - optional google.protobuf.BytesValue bytes = 11; -} diff --git a/vendor/github.com/golang/protobuf/proto/all_test.go b/vendor/github.com/golang/protobuf/proto/all_test.go deleted file mode 100644 index 41451a40..00000000 --- a/vendor/github.com/golang/protobuf/proto/all_test.go +++ /dev/null @@ -1,2278 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto_test - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "math" - "math/rand" - "reflect" - "runtime/debug" - "strings" - "testing" - "time" - - . "github.com/golang/protobuf/proto" - . "github.com/golang/protobuf/proto/testdata" -) - -var globalO *Buffer - -func old() *Buffer { - if globalO == nil { - globalO = NewBuffer(nil) - } - globalO.Reset() - return globalO -} - -func equalbytes(b1, b2 []byte, t *testing.T) { - if len(b1) != len(b2) { - t.Errorf("wrong lengths: 2*%d != %d", len(b1), len(b2)) - return - } - for i := 0; i < len(b1); i++ { - if b1[i] != b2[i] { - t.Errorf("bad byte[%d]:%x %x: %s %s", i, b1[i], b2[i], b1, b2) - } - } -} - -func initGoTestField() *GoTestField { - f := new(GoTestField) - f.Label = String("label") - f.Type = String("type") - return f -} - -// These are all structurally equivalent but the tag numbers differ. -// (It's remarkable that required, optional, and repeated all have -// 8 letters.) -func initGoTest_RequiredGroup() *GoTest_RequiredGroup { - return &GoTest_RequiredGroup{ - RequiredField: String("required"), - } -} - -func initGoTest_OptionalGroup() *GoTest_OptionalGroup { - return &GoTest_OptionalGroup{ - RequiredField: String("optional"), - } -} - -func initGoTest_RepeatedGroup() *GoTest_RepeatedGroup { - return &GoTest_RepeatedGroup{ - RequiredField: String("repeated"), - } -} - -func initGoTest(setdefaults bool) *GoTest { - pb := new(GoTest) - if setdefaults { - pb.F_BoolDefaulted = Bool(Default_GoTest_F_BoolDefaulted) - pb.F_Int32Defaulted = Int32(Default_GoTest_F_Int32Defaulted) - pb.F_Int64Defaulted = Int64(Default_GoTest_F_Int64Defaulted) - pb.F_Fixed32Defaulted = Uint32(Default_GoTest_F_Fixed32Defaulted) - pb.F_Fixed64Defaulted = Uint64(Default_GoTest_F_Fixed64Defaulted) - pb.F_Uint32Defaulted = Uint32(Default_GoTest_F_Uint32Defaulted) - pb.F_Uint64Defaulted = Uint64(Default_GoTest_F_Uint64Defaulted) - pb.F_FloatDefaulted = Float32(Default_GoTest_F_FloatDefaulted) - pb.F_DoubleDefaulted = Float64(Default_GoTest_F_DoubleDefaulted) - pb.F_StringDefaulted = String(Default_GoTest_F_StringDefaulted) - pb.F_BytesDefaulted = Default_GoTest_F_BytesDefaulted - pb.F_Sint32Defaulted = Int32(Default_GoTest_F_Sint32Defaulted) - pb.F_Sint64Defaulted = Int64(Default_GoTest_F_Sint64Defaulted) - } - - pb.Kind = GoTest_TIME.Enum() - pb.RequiredField = initGoTestField() - pb.F_BoolRequired = Bool(true) - pb.F_Int32Required = Int32(3) - pb.F_Int64Required = Int64(6) - pb.F_Fixed32Required = Uint32(32) - pb.F_Fixed64Required = Uint64(64) - pb.F_Uint32Required = Uint32(3232) - pb.F_Uint64Required = Uint64(6464) - pb.F_FloatRequired = Float32(3232) - pb.F_DoubleRequired = Float64(6464) - pb.F_StringRequired = String("string") - pb.F_BytesRequired = []byte("bytes") - pb.F_Sint32Required = Int32(-32) - pb.F_Sint64Required = Int64(-64) - pb.Requiredgroup = initGoTest_RequiredGroup() - - return pb -} - -func fail(msg string, b *bytes.Buffer, s string, t *testing.T) { - data := b.Bytes() - ld := len(data) - ls := len(s) / 2 - - fmt.Printf("fail %s ld=%d ls=%d\n", msg, ld, ls) - - // find the interesting spot - n - n := ls - if ld < ls { - n = ld - } - j := 0 - for i := 0; i < n; i++ { - bs := hex(s[j])*16 + hex(s[j+1]) - j += 2 - if data[i] == bs { - continue - } - n = i - break - } - l := n - 10 - if l < 0 { - l = 0 - } - h := n + 10 - - // find the interesting spot - n - fmt.Printf("is[%d]:", l) - for i := l; i < h; i++ { - if i >= ld { - fmt.Printf(" --") - continue - } - fmt.Printf(" %.2x", data[i]) - } - fmt.Printf("\n") - - fmt.Printf("sb[%d]:", l) - for i := l; i < h; i++ { - if i >= ls { - fmt.Printf(" --") - continue - } - bs := hex(s[j])*16 + hex(s[j+1]) - j += 2 - fmt.Printf(" %.2x", bs) - } - fmt.Printf("\n") - - t.Fail() - - // t.Errorf("%s: \ngood: %s\nbad: %x", msg, s, b.Bytes()) - // Print the output in a partially-decoded format; can - // be helpful when updating the test. It produces the output - // that is pasted, with minor edits, into the argument to verify(). - // data := b.Bytes() - // nesting := 0 - // for b.Len() > 0 { - // start := len(data) - b.Len() - // var u uint64 - // u, err := DecodeVarint(b) - // if err != nil { - // fmt.Printf("decode error on varint:", err) - // return - // } - // wire := u & 0x7 - // tag := u >> 3 - // switch wire { - // case WireVarint: - // v, err := DecodeVarint(b) - // if err != nil { - // fmt.Printf("decode error on varint:", err) - // return - // } - // fmt.Printf("\t\t\"%x\" // field %d, encoding %d, value %d\n", - // data[start:len(data)-b.Len()], tag, wire, v) - // case WireFixed32: - // v, err := DecodeFixed32(b) - // if err != nil { - // fmt.Printf("decode error on fixed32:", err) - // return - // } - // fmt.Printf("\t\t\"%x\" // field %d, encoding %d, value %d\n", - // data[start:len(data)-b.Len()], tag, wire, v) - // case WireFixed64: - // v, err := DecodeFixed64(b) - // if err != nil { - // fmt.Printf("decode error on fixed64:", err) - // return - // } - // fmt.Printf("\t\t\"%x\" // field %d, encoding %d, value %d\n", - // data[start:len(data)-b.Len()], tag, wire, v) - // case WireBytes: - // nb, err := DecodeVarint(b) - // if err != nil { - // fmt.Printf("decode error on bytes:", err) - // return - // } - // after_tag := len(data) - b.Len() - // str := make([]byte, nb) - // _, err = b.Read(str) - // if err != nil { - // fmt.Printf("decode error on bytes:", err) - // return - // } - // fmt.Printf("\t\t\"%x\" \"%x\" // field %d, encoding %d (FIELD)\n", - // data[start:after_tag], str, tag, wire) - // case WireStartGroup: - // nesting++ - // fmt.Printf("\t\t\"%x\"\t\t// start group field %d level %d\n", - // data[start:len(data)-b.Len()], tag, nesting) - // case WireEndGroup: - // fmt.Printf("\t\t\"%x\"\t\t// end group field %d level %d\n", - // data[start:len(data)-b.Len()], tag, nesting) - // nesting-- - // default: - // fmt.Printf("unrecognized wire type %d\n", wire) - // return - // } - // } -} - -func hex(c uint8) uint8 { - if '0' <= c && c <= '9' { - return c - '0' - } - if 'a' <= c && c <= 'f' { - return 10 + c - 'a' - } - if 'A' <= c && c <= 'F' { - return 10 + c - 'A' - } - return 0 -} - -func equal(b []byte, s string, t *testing.T) bool { - if 2*len(b) != len(s) { - // fail(fmt.Sprintf("wrong lengths: 2*%d != %d", len(b), len(s)), b, s, t) - fmt.Printf("wrong lengths: 2*%d != %d\n", len(b), len(s)) - return false - } - for i, j := 0, 0; i < len(b); i, j = i+1, j+2 { - x := hex(s[j])*16 + hex(s[j+1]) - if b[i] != x { - // fail(fmt.Sprintf("bad byte[%d]:%x %x", i, b[i], x), b, s, t) - fmt.Printf("bad byte[%d]:%x %x", i, b[i], x) - return false - } - } - return true -} - -func overify(t *testing.T, pb *GoTest, expected string) { - o := old() - err := o.Marshal(pb) - if err != nil { - fmt.Printf("overify marshal-1 err = %v", err) - o.DebugPrint("", o.Bytes()) - t.Fatalf("expected = %s", expected) - } - if !equal(o.Bytes(), expected, t) { - o.DebugPrint("overify neq 1", o.Bytes()) - t.Fatalf("expected = %s", expected) - } - - // Now test Unmarshal by recreating the original buffer. - pbd := new(GoTest) - err = o.Unmarshal(pbd) - if err != nil { - t.Fatalf("overify unmarshal err = %v", err) - o.DebugPrint("", o.Bytes()) - t.Fatalf("string = %s", expected) - } - o.Reset() - err = o.Marshal(pbd) - if err != nil { - t.Errorf("overify marshal-2 err = %v", err) - o.DebugPrint("", o.Bytes()) - t.Fatalf("string = %s", expected) - } - if !equal(o.Bytes(), expected, t) { - o.DebugPrint("overify neq 2", o.Bytes()) - t.Fatalf("string = %s", expected) - } -} - -// Simple tests for numeric encode/decode primitives (varint, etc.) -func TestNumericPrimitives(t *testing.T) { - for i := uint64(0); i < 1e6; i += 111 { - o := old() - if o.EncodeVarint(i) != nil { - t.Error("EncodeVarint") - break - } - x, e := o.DecodeVarint() - if e != nil { - t.Fatal("DecodeVarint") - } - if x != i { - t.Fatal("varint decode fail:", i, x) - } - - o = old() - if o.EncodeFixed32(i) != nil { - t.Fatal("encFixed32") - } - x, e = o.DecodeFixed32() - if e != nil { - t.Fatal("decFixed32") - } - if x != i { - t.Fatal("fixed32 decode fail:", i, x) - } - - o = old() - if o.EncodeFixed64(i*1234567) != nil { - t.Error("encFixed64") - break - } - x, e = o.DecodeFixed64() - if e != nil { - t.Error("decFixed64") - break - } - if x != i*1234567 { - t.Error("fixed64 decode fail:", i*1234567, x) - break - } - - o = old() - i32 := int32(i - 12345) - if o.EncodeZigzag32(uint64(i32)) != nil { - t.Fatal("EncodeZigzag32") - } - x, e = o.DecodeZigzag32() - if e != nil { - t.Fatal("DecodeZigzag32") - } - if x != uint64(uint32(i32)) { - t.Fatal("zigzag32 decode fail:", i32, x) - } - - o = old() - i64 := int64(i - 12345) - if o.EncodeZigzag64(uint64(i64)) != nil { - t.Fatal("EncodeZigzag64") - } - x, e = o.DecodeZigzag64() - if e != nil { - t.Fatal("DecodeZigzag64") - } - if x != uint64(i64) { - t.Fatal("zigzag64 decode fail:", i64, x) - } - } -} - -// fakeMarshaler is a simple struct implementing Marshaler and Message interfaces. -type fakeMarshaler struct { - b []byte - err error -} - -func (f *fakeMarshaler) Marshal() ([]byte, error) { return f.b, f.err } -func (f *fakeMarshaler) String() string { return fmt.Sprintf("Bytes: %v Error: %v", f.b, f.err) } -func (f *fakeMarshaler) ProtoMessage() {} -func (f *fakeMarshaler) Reset() {} - -type msgWithFakeMarshaler struct { - M *fakeMarshaler `protobuf:"bytes,1,opt,name=fake"` -} - -func (m *msgWithFakeMarshaler) String() string { return CompactTextString(m) } -func (m *msgWithFakeMarshaler) ProtoMessage() {} -func (m *msgWithFakeMarshaler) Reset() {} - -// Simple tests for proto messages that implement the Marshaler interface. -func TestMarshalerEncoding(t *testing.T) { - tests := []struct { - name string - m Message - want []byte - errType reflect.Type - }{ - { - name: "Marshaler that fails", - m: &fakeMarshaler{ - err: errors.New("some marshal err"), - b: []byte{5, 6, 7}, - }, - // Since the Marshal method returned bytes, they should be written to the - // buffer. (For efficiency, we assume that Marshal implementations are - // always correct w.r.t. RequiredNotSetError and output.) - want: []byte{5, 6, 7}, - errType: reflect.TypeOf(errors.New("some marshal err")), - }, - { - name: "Marshaler that fails with RequiredNotSetError", - m: &msgWithFakeMarshaler{ - M: &fakeMarshaler{ - err: &RequiredNotSetError{}, - b: []byte{5, 6, 7}, - }, - }, - // Since there's an error that can be continued after, - // the buffer should be written. - want: []byte{ - 10, 3, // for &msgWithFakeMarshaler - 5, 6, 7, // for &fakeMarshaler - }, - errType: reflect.TypeOf(&RequiredNotSetError{}), - }, - { - name: "Marshaler that succeeds", - m: &fakeMarshaler{ - b: []byte{0, 1, 2, 3, 4, 127, 255}, - }, - want: []byte{0, 1, 2, 3, 4, 127, 255}, - }, - } - for _, test := range tests { - b := NewBuffer(nil) - err := b.Marshal(test.m) - if reflect.TypeOf(err) != test.errType { - t.Errorf("%s: got err %T(%v) wanted %T", test.name, err, err, test.errType) - } - if !reflect.DeepEqual(test.want, b.Bytes()) { - t.Errorf("%s: got bytes %v wanted %v", test.name, b.Bytes(), test.want) - } - if size := Size(test.m); size != len(b.Bytes()) { - t.Errorf("%s: Size(_) = %v, but marshaled to %v bytes", test.name, size, len(b.Bytes())) - } - - m, mErr := Marshal(test.m) - if !bytes.Equal(b.Bytes(), m) { - t.Errorf("%s: Marshal returned %v, but (*Buffer).Marshal wrote %v", test.name, m, b.Bytes()) - } - if !reflect.DeepEqual(err, mErr) { - t.Errorf("%s: Marshal err = %q, but (*Buffer).Marshal returned %q", - test.name, fmt.Sprint(mErr), fmt.Sprint(err)) - } - } -} - -// Simple tests for bytes -func TestBytesPrimitives(t *testing.T) { - o := old() - bytes := []byte{'n', 'o', 'w', ' ', 'i', 's', ' ', 't', 'h', 'e', ' ', 't', 'i', 'm', 'e'} - if o.EncodeRawBytes(bytes) != nil { - t.Error("EncodeRawBytes") - } - decb, e := o.DecodeRawBytes(false) - if e != nil { - t.Error("DecodeRawBytes") - } - equalbytes(bytes, decb, t) -} - -// Simple tests for strings -func TestStringPrimitives(t *testing.T) { - o := old() - s := "now is the time" - if o.EncodeStringBytes(s) != nil { - t.Error("enc_string") - } - decs, e := o.DecodeStringBytes() - if e != nil { - t.Error("dec_string") - } - if s != decs { - t.Error("string encode/decode fail:", s, decs) - } -} - -// Do we catch the "required bit not set" case? -func TestRequiredBit(t *testing.T) { - o := old() - pb := new(GoTest) - err := o.Marshal(pb) - if err == nil { - t.Error("did not catch missing required fields") - } else if strings.Index(err.Error(), "Kind") < 0 { - t.Error("wrong error type:", err) - } -} - -// Check that all fields are nil. -// Clearly silly, and a residue from a more interesting test with an earlier, -// different initialization property, but it once caught a compiler bug so -// it lives. -func checkInitialized(pb *GoTest, t *testing.T) { - if pb.F_BoolDefaulted != nil { - t.Error("New or Reset did not set boolean:", *pb.F_BoolDefaulted) - } - if pb.F_Int32Defaulted != nil { - t.Error("New or Reset did not set int32:", *pb.F_Int32Defaulted) - } - if pb.F_Int64Defaulted != nil { - t.Error("New or Reset did not set int64:", *pb.F_Int64Defaulted) - } - if pb.F_Fixed32Defaulted != nil { - t.Error("New or Reset did not set fixed32:", *pb.F_Fixed32Defaulted) - } - if pb.F_Fixed64Defaulted != nil { - t.Error("New or Reset did not set fixed64:", *pb.F_Fixed64Defaulted) - } - if pb.F_Uint32Defaulted != nil { - t.Error("New or Reset did not set uint32:", *pb.F_Uint32Defaulted) - } - if pb.F_Uint64Defaulted != nil { - t.Error("New or Reset did not set uint64:", *pb.F_Uint64Defaulted) - } - if pb.F_FloatDefaulted != nil { - t.Error("New or Reset did not set float:", *pb.F_FloatDefaulted) - } - if pb.F_DoubleDefaulted != nil { - t.Error("New or Reset did not set double:", *pb.F_DoubleDefaulted) - } - if pb.F_StringDefaulted != nil { - t.Error("New or Reset did not set string:", *pb.F_StringDefaulted) - } - if pb.F_BytesDefaulted != nil { - t.Error("New or Reset did not set bytes:", string(pb.F_BytesDefaulted)) - } - if pb.F_Sint32Defaulted != nil { - t.Error("New or Reset did not set int32:", *pb.F_Sint32Defaulted) - } - if pb.F_Sint64Defaulted != nil { - t.Error("New or Reset did not set int64:", *pb.F_Sint64Defaulted) - } -} - -// Does Reset() reset? -func TestReset(t *testing.T) { - pb := initGoTest(true) - // muck with some values - pb.F_BoolDefaulted = Bool(false) - pb.F_Int32Defaulted = Int32(237) - pb.F_Int64Defaulted = Int64(12346) - pb.F_Fixed32Defaulted = Uint32(32000) - pb.F_Fixed64Defaulted = Uint64(666) - pb.F_Uint32Defaulted = Uint32(323232) - pb.F_Uint64Defaulted = nil - pb.F_FloatDefaulted = nil - pb.F_DoubleDefaulted = Float64(0) - pb.F_StringDefaulted = String("gotcha") - pb.F_BytesDefaulted = []byte("asdfasdf") - pb.F_Sint32Defaulted = Int32(123) - pb.F_Sint64Defaulted = Int64(789) - pb.Reset() - checkInitialized(pb, t) -} - -// All required fields set, no defaults provided. -func TestEncodeDecode1(t *testing.T) { - pb := initGoTest(false) - overify(t, pb, - "0807"+ // field 1, encoding 0, value 7 - "220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField) - "5001"+ // field 10, encoding 0, value 1 - "5803"+ // field 11, encoding 0, value 3 - "6006"+ // field 12, encoding 0, value 6 - "6d20000000"+ // field 13, encoding 5, value 0x20 - "714000000000000000"+ // field 14, encoding 1, value 0x40 - "78a019"+ // field 15, encoding 0, value 0xca0 = 3232 - "8001c032"+ // field 16, encoding 0, value 0x1940 = 6464 - "8d0100004a45"+ // field 17, encoding 5, value 3232.0 - "9101000000000040b940"+ // field 18, encoding 1, value 6464.0 - "9a0106"+"737472696e67"+ // field 19, encoding 2, string "string" - "b304"+ // field 70, encoding 3, start group - "ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required" - "b404"+ // field 70, encoding 4, end group - "aa0605"+"6279746573"+ // field 101, encoding 2, string "bytes" - "b0063f"+ // field 102, encoding 0, 0x3f zigzag32 - "b8067f") // field 103, encoding 0, 0x7f zigzag64 -} - -// All required fields set, defaults provided. -func TestEncodeDecode2(t *testing.T) { - pb := initGoTest(true) - overify(t, pb, - "0807"+ // field 1, encoding 0, value 7 - "220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField) - "5001"+ // field 10, encoding 0, value 1 - "5803"+ // field 11, encoding 0, value 3 - "6006"+ // field 12, encoding 0, value 6 - "6d20000000"+ // field 13, encoding 5, value 32 - "714000000000000000"+ // field 14, encoding 1, value 64 - "78a019"+ // field 15, encoding 0, value 3232 - "8001c032"+ // field 16, encoding 0, value 6464 - "8d0100004a45"+ // field 17, encoding 5, value 3232.0 - "9101000000000040b940"+ // field 18, encoding 1, value 6464.0 - "9a0106"+"737472696e67"+ // field 19, encoding 2 string "string" - "c00201"+ // field 40, encoding 0, value 1 - "c80220"+ // field 41, encoding 0, value 32 - "d00240"+ // field 42, encoding 0, value 64 - "dd0240010000"+ // field 43, encoding 5, value 320 - "e1028002000000000000"+ // field 44, encoding 1, value 640 - "e8028019"+ // field 45, encoding 0, value 3200 - "f0028032"+ // field 46, encoding 0, value 6400 - "fd02e0659948"+ // field 47, encoding 5, value 314159.0 - "81030000000050971041"+ // field 48, encoding 1, value 271828.0 - "8a0310"+"68656c6c6f2c2022776f726c6421220a"+ // field 49, encoding 2 string "hello, \"world!\"\n" - "b304"+ // start group field 70 level 1 - "ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required" - "b404"+ // end group field 70 level 1 - "aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes" - "b0063f"+ // field 102, encoding 0, 0x3f zigzag32 - "b8067f"+ // field 103, encoding 0, 0x7f zigzag64 - "8a1907"+"4269676e6f7365"+ // field 401, encoding 2, string "Bignose" - "90193f"+ // field 402, encoding 0, value 63 - "98197f") // field 403, encoding 0, value 127 - -} - -// All default fields set to their default value by hand -func TestEncodeDecode3(t *testing.T) { - pb := initGoTest(false) - pb.F_BoolDefaulted = Bool(true) - pb.F_Int32Defaulted = Int32(32) - pb.F_Int64Defaulted = Int64(64) - pb.F_Fixed32Defaulted = Uint32(320) - pb.F_Fixed64Defaulted = Uint64(640) - pb.F_Uint32Defaulted = Uint32(3200) - pb.F_Uint64Defaulted = Uint64(6400) - pb.F_FloatDefaulted = Float32(314159) - pb.F_DoubleDefaulted = Float64(271828) - pb.F_StringDefaulted = String("hello, \"world!\"\n") - pb.F_BytesDefaulted = []byte("Bignose") - pb.F_Sint32Defaulted = Int32(-32) - pb.F_Sint64Defaulted = Int64(-64) - - overify(t, pb, - "0807"+ // field 1, encoding 0, value 7 - "220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField) - "5001"+ // field 10, encoding 0, value 1 - "5803"+ // field 11, encoding 0, value 3 - "6006"+ // field 12, encoding 0, value 6 - "6d20000000"+ // field 13, encoding 5, value 32 - "714000000000000000"+ // field 14, encoding 1, value 64 - "78a019"+ // field 15, encoding 0, value 3232 - "8001c032"+ // field 16, encoding 0, value 6464 - "8d0100004a45"+ // field 17, encoding 5, value 3232.0 - "9101000000000040b940"+ // field 18, encoding 1, value 6464.0 - "9a0106"+"737472696e67"+ // field 19, encoding 2 string "string" - "c00201"+ // field 40, encoding 0, value 1 - "c80220"+ // field 41, encoding 0, value 32 - "d00240"+ // field 42, encoding 0, value 64 - "dd0240010000"+ // field 43, encoding 5, value 320 - "e1028002000000000000"+ // field 44, encoding 1, value 640 - "e8028019"+ // field 45, encoding 0, value 3200 - "f0028032"+ // field 46, encoding 0, value 6400 - "fd02e0659948"+ // field 47, encoding 5, value 314159.0 - "81030000000050971041"+ // field 48, encoding 1, value 271828.0 - "8a0310"+"68656c6c6f2c2022776f726c6421220a"+ // field 49, encoding 2 string "hello, \"world!\"\n" - "b304"+ // start group field 70 level 1 - "ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required" - "b404"+ // end group field 70 level 1 - "aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes" - "b0063f"+ // field 102, encoding 0, 0x3f zigzag32 - "b8067f"+ // field 103, encoding 0, 0x7f zigzag64 - "8a1907"+"4269676e6f7365"+ // field 401, encoding 2, string "Bignose" - "90193f"+ // field 402, encoding 0, value 63 - "98197f") // field 403, encoding 0, value 127 - -} - -// All required fields set, defaults provided, all non-defaulted optional fields have values. -func TestEncodeDecode4(t *testing.T) { - pb := initGoTest(true) - pb.Table = String("hello") - pb.Param = Int32(7) - pb.OptionalField = initGoTestField() - pb.F_BoolOptional = Bool(true) - pb.F_Int32Optional = Int32(32) - pb.F_Int64Optional = Int64(64) - pb.F_Fixed32Optional = Uint32(3232) - pb.F_Fixed64Optional = Uint64(6464) - pb.F_Uint32Optional = Uint32(323232) - pb.F_Uint64Optional = Uint64(646464) - pb.F_FloatOptional = Float32(32.) - pb.F_DoubleOptional = Float64(64.) - pb.F_StringOptional = String("hello") - pb.F_BytesOptional = []byte("Bignose") - pb.F_Sint32Optional = Int32(-32) - pb.F_Sint64Optional = Int64(-64) - pb.Optionalgroup = initGoTest_OptionalGroup() - - overify(t, pb, - "0807"+ // field 1, encoding 0, value 7 - "1205"+"68656c6c6f"+ // field 2, encoding 2, string "hello" - "1807"+ // field 3, encoding 0, value 7 - "220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField) - "320d"+"0a056c6162656c120474797065"+ // field 6, encoding 2 (GoTestField) - "5001"+ // field 10, encoding 0, value 1 - "5803"+ // field 11, encoding 0, value 3 - "6006"+ // field 12, encoding 0, value 6 - "6d20000000"+ // field 13, encoding 5, value 32 - "714000000000000000"+ // field 14, encoding 1, value 64 - "78a019"+ // field 15, encoding 0, value 3232 - "8001c032"+ // field 16, encoding 0, value 6464 - "8d0100004a45"+ // field 17, encoding 5, value 3232.0 - "9101000000000040b940"+ // field 18, encoding 1, value 6464.0 - "9a0106"+"737472696e67"+ // field 19, encoding 2 string "string" - "f00101"+ // field 30, encoding 0, value 1 - "f80120"+ // field 31, encoding 0, value 32 - "800240"+ // field 32, encoding 0, value 64 - "8d02a00c0000"+ // field 33, encoding 5, value 3232 - "91024019000000000000"+ // field 34, encoding 1, value 6464 - "9802a0dd13"+ // field 35, encoding 0, value 323232 - "a002c0ba27"+ // field 36, encoding 0, value 646464 - "ad0200000042"+ // field 37, encoding 5, value 32.0 - "b1020000000000005040"+ // field 38, encoding 1, value 64.0 - "ba0205"+"68656c6c6f"+ // field 39, encoding 2, string "hello" - "c00201"+ // field 40, encoding 0, value 1 - "c80220"+ // field 41, encoding 0, value 32 - "d00240"+ // field 42, encoding 0, value 64 - "dd0240010000"+ // field 43, encoding 5, value 320 - "e1028002000000000000"+ // field 44, encoding 1, value 640 - "e8028019"+ // field 45, encoding 0, value 3200 - "f0028032"+ // field 46, encoding 0, value 6400 - "fd02e0659948"+ // field 47, encoding 5, value 314159.0 - "81030000000050971041"+ // field 48, encoding 1, value 271828.0 - "8a0310"+"68656c6c6f2c2022776f726c6421220a"+ // field 49, encoding 2 string "hello, \"world!\"\n" - "b304"+ // start group field 70 level 1 - "ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required" - "b404"+ // end group field 70 level 1 - "d305"+ // start group field 90 level 1 - "da0508"+"6f7074696f6e616c"+ // field 91, encoding 2, string "optional" - "d405"+ // end group field 90 level 1 - "aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes" - "b0063f"+ // field 102, encoding 0, 0x3f zigzag32 - "b8067f"+ // field 103, encoding 0, 0x7f zigzag64 - "ea1207"+"4269676e6f7365"+ // field 301, encoding 2, string "Bignose" - "f0123f"+ // field 302, encoding 0, value 63 - "f8127f"+ // field 303, encoding 0, value 127 - "8a1907"+"4269676e6f7365"+ // field 401, encoding 2, string "Bignose" - "90193f"+ // field 402, encoding 0, value 63 - "98197f") // field 403, encoding 0, value 127 - -} - -// All required fields set, defaults provided, all repeated fields given two values. -func TestEncodeDecode5(t *testing.T) { - pb := initGoTest(true) - pb.RepeatedField = []*GoTestField{initGoTestField(), initGoTestField()} - pb.F_BoolRepeated = []bool{false, true} - pb.F_Int32Repeated = []int32{32, 33} - pb.F_Int64Repeated = []int64{64, 65} - pb.F_Fixed32Repeated = []uint32{3232, 3333} - pb.F_Fixed64Repeated = []uint64{6464, 6565} - pb.F_Uint32Repeated = []uint32{323232, 333333} - pb.F_Uint64Repeated = []uint64{646464, 656565} - pb.F_FloatRepeated = []float32{32., 33.} - pb.F_DoubleRepeated = []float64{64., 65.} - pb.F_StringRepeated = []string{"hello", "sailor"} - pb.F_BytesRepeated = [][]byte{[]byte("big"), []byte("nose")} - pb.F_Sint32Repeated = []int32{32, -32} - pb.F_Sint64Repeated = []int64{64, -64} - pb.Repeatedgroup = []*GoTest_RepeatedGroup{initGoTest_RepeatedGroup(), initGoTest_RepeatedGroup()} - - overify(t, pb, - "0807"+ // field 1, encoding 0, value 7 - "220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField) - "2a0d"+"0a056c6162656c120474797065"+ // field 5, encoding 2 (GoTestField) - "2a0d"+"0a056c6162656c120474797065"+ // field 5, encoding 2 (GoTestField) - "5001"+ // field 10, encoding 0, value 1 - "5803"+ // field 11, encoding 0, value 3 - "6006"+ // field 12, encoding 0, value 6 - "6d20000000"+ // field 13, encoding 5, value 32 - "714000000000000000"+ // field 14, encoding 1, value 64 - "78a019"+ // field 15, encoding 0, value 3232 - "8001c032"+ // field 16, encoding 0, value 6464 - "8d0100004a45"+ // field 17, encoding 5, value 3232.0 - "9101000000000040b940"+ // field 18, encoding 1, value 6464.0 - "9a0106"+"737472696e67"+ // field 19, encoding 2 string "string" - "a00100"+ // field 20, encoding 0, value 0 - "a00101"+ // field 20, encoding 0, value 1 - "a80120"+ // field 21, encoding 0, value 32 - "a80121"+ // field 21, encoding 0, value 33 - "b00140"+ // field 22, encoding 0, value 64 - "b00141"+ // field 22, encoding 0, value 65 - "bd01a00c0000"+ // field 23, encoding 5, value 3232 - "bd01050d0000"+ // field 23, encoding 5, value 3333 - "c1014019000000000000"+ // field 24, encoding 1, value 6464 - "c101a519000000000000"+ // field 24, encoding 1, value 6565 - "c801a0dd13"+ // field 25, encoding 0, value 323232 - "c80195ac14"+ // field 25, encoding 0, value 333333 - "d001c0ba27"+ // field 26, encoding 0, value 646464 - "d001b58928"+ // field 26, encoding 0, value 656565 - "dd0100000042"+ // field 27, encoding 5, value 32.0 - "dd0100000442"+ // field 27, encoding 5, value 33.0 - "e1010000000000005040"+ // field 28, encoding 1, value 64.0 - "e1010000000000405040"+ // field 28, encoding 1, value 65.0 - "ea0105"+"68656c6c6f"+ // field 29, encoding 2, string "hello" - "ea0106"+"7361696c6f72"+ // field 29, encoding 2, string "sailor" - "c00201"+ // field 40, encoding 0, value 1 - "c80220"+ // field 41, encoding 0, value 32 - "d00240"+ // field 42, encoding 0, value 64 - "dd0240010000"+ // field 43, encoding 5, value 320 - "e1028002000000000000"+ // field 44, encoding 1, value 640 - "e8028019"+ // field 45, encoding 0, value 3200 - "f0028032"+ // field 46, encoding 0, value 6400 - "fd02e0659948"+ // field 47, encoding 5, value 314159.0 - "81030000000050971041"+ // field 48, encoding 1, value 271828.0 - "8a0310"+"68656c6c6f2c2022776f726c6421220a"+ // field 49, encoding 2 string "hello, \"world!\"\n" - "b304"+ // start group field 70 level 1 - "ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required" - "b404"+ // end group field 70 level 1 - "8305"+ // start group field 80 level 1 - "8a0508"+"7265706561746564"+ // field 81, encoding 2, string "repeated" - "8405"+ // end group field 80 level 1 - "8305"+ // start group field 80 level 1 - "8a0508"+"7265706561746564"+ // field 81, encoding 2, string "repeated" - "8405"+ // end group field 80 level 1 - "aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes" - "b0063f"+ // field 102, encoding 0, 0x3f zigzag32 - "b8067f"+ // field 103, encoding 0, 0x7f zigzag64 - "ca0c03"+"626967"+ // field 201, encoding 2, string "big" - "ca0c04"+"6e6f7365"+ // field 201, encoding 2, string "nose" - "d00c40"+ // field 202, encoding 0, value 32 - "d00c3f"+ // field 202, encoding 0, value -32 - "d80c8001"+ // field 203, encoding 0, value 64 - "d80c7f"+ // field 203, encoding 0, value -64 - "8a1907"+"4269676e6f7365"+ // field 401, encoding 2, string "Bignose" - "90193f"+ // field 402, encoding 0, value 63 - "98197f") // field 403, encoding 0, value 127 - -} - -// All required fields set, all packed repeated fields given two values. -func TestEncodeDecode6(t *testing.T) { - pb := initGoTest(false) - pb.F_BoolRepeatedPacked = []bool{false, true} - pb.F_Int32RepeatedPacked = []int32{32, 33} - pb.F_Int64RepeatedPacked = []int64{64, 65} - pb.F_Fixed32RepeatedPacked = []uint32{3232, 3333} - pb.F_Fixed64RepeatedPacked = []uint64{6464, 6565} - pb.F_Uint32RepeatedPacked = []uint32{323232, 333333} - pb.F_Uint64RepeatedPacked = []uint64{646464, 656565} - pb.F_FloatRepeatedPacked = []float32{32., 33.} - pb.F_DoubleRepeatedPacked = []float64{64., 65.} - pb.F_Sint32RepeatedPacked = []int32{32, -32} - pb.F_Sint64RepeatedPacked = []int64{64, -64} - - overify(t, pb, - "0807"+ // field 1, encoding 0, value 7 - "220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField) - "5001"+ // field 10, encoding 0, value 1 - "5803"+ // field 11, encoding 0, value 3 - "6006"+ // field 12, encoding 0, value 6 - "6d20000000"+ // field 13, encoding 5, value 32 - "714000000000000000"+ // field 14, encoding 1, value 64 - "78a019"+ // field 15, encoding 0, value 3232 - "8001c032"+ // field 16, encoding 0, value 6464 - "8d0100004a45"+ // field 17, encoding 5, value 3232.0 - "9101000000000040b940"+ // field 18, encoding 1, value 6464.0 - "9a0106"+"737472696e67"+ // field 19, encoding 2 string "string" - "9203020001"+ // field 50, encoding 2, 2 bytes, value 0, value 1 - "9a03022021"+ // field 51, encoding 2, 2 bytes, value 32, value 33 - "a203024041"+ // field 52, encoding 2, 2 bytes, value 64, value 65 - "aa0308"+ // field 53, encoding 2, 8 bytes - "a00c0000050d0000"+ // value 3232, value 3333 - "b20310"+ // field 54, encoding 2, 16 bytes - "4019000000000000a519000000000000"+ // value 6464, value 6565 - "ba0306"+ // field 55, encoding 2, 6 bytes - "a0dd1395ac14"+ // value 323232, value 333333 - "c20306"+ // field 56, encoding 2, 6 bytes - "c0ba27b58928"+ // value 646464, value 656565 - "ca0308"+ // field 57, encoding 2, 8 bytes - "0000004200000442"+ // value 32.0, value 33.0 - "d20310"+ // field 58, encoding 2, 16 bytes - "00000000000050400000000000405040"+ // value 64.0, value 65.0 - "b304"+ // start group field 70 level 1 - "ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required" - "b404"+ // end group field 70 level 1 - "aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes" - "b0063f"+ // field 102, encoding 0, 0x3f zigzag32 - "b8067f"+ // field 103, encoding 0, 0x7f zigzag64 - "b21f02"+ // field 502, encoding 2, 2 bytes - "403f"+ // value 32, value -32 - "ba1f03"+ // field 503, encoding 2, 3 bytes - "80017f") // value 64, value -64 -} - -// Test that we can encode empty bytes fields. -func TestEncodeDecodeBytes1(t *testing.T) { - pb := initGoTest(false) - - // Create our bytes - pb.F_BytesRequired = []byte{} - pb.F_BytesRepeated = [][]byte{{}} - pb.F_BytesOptional = []byte{} - - d, err := Marshal(pb) - if err != nil { - t.Error(err) - } - - pbd := new(GoTest) - if err := Unmarshal(d, pbd); err != nil { - t.Error(err) - } - - if pbd.F_BytesRequired == nil || len(pbd.F_BytesRequired) != 0 { - t.Error("required empty bytes field is incorrect") - } - if pbd.F_BytesRepeated == nil || len(pbd.F_BytesRepeated) == 1 && pbd.F_BytesRepeated[0] == nil { - t.Error("repeated empty bytes field is incorrect") - } - if pbd.F_BytesOptional == nil || len(pbd.F_BytesOptional) != 0 { - t.Error("optional empty bytes field is incorrect") - } -} - -// Test that we encode nil-valued fields of a repeated bytes field correctly. -// Since entries in a repeated field cannot be nil, nil must mean empty value. -func TestEncodeDecodeBytes2(t *testing.T) { - pb := initGoTest(false) - - // Create our bytes - pb.F_BytesRepeated = [][]byte{nil} - - d, err := Marshal(pb) - if err != nil { - t.Error(err) - } - - pbd := new(GoTest) - if err := Unmarshal(d, pbd); err != nil { - t.Error(err) - } - - if len(pbd.F_BytesRepeated) != 1 || pbd.F_BytesRepeated[0] == nil { - t.Error("Unexpected value for repeated bytes field") - } -} - -// All required fields set, defaults provided, all repeated fields given two values. -func TestSkippingUnrecognizedFields(t *testing.T) { - o := old() - pb := initGoTestField() - - // Marshal it normally. - o.Marshal(pb) - - // Now new a GoSkipTest record. - skip := &GoSkipTest{ - SkipInt32: Int32(32), - SkipFixed32: Uint32(3232), - SkipFixed64: Uint64(6464), - SkipString: String("skipper"), - Skipgroup: &GoSkipTest_SkipGroup{ - GroupInt32: Int32(75), - GroupString: String("wxyz"), - }, - } - - // Marshal it into same buffer. - o.Marshal(skip) - - pbd := new(GoTestField) - o.Unmarshal(pbd) - - // The __unrecognized field should be a marshaling of GoSkipTest - skipd := new(GoSkipTest) - - o.SetBuf(pbd.XXX_unrecognized) - o.Unmarshal(skipd) - - if *skipd.SkipInt32 != *skip.SkipInt32 { - t.Error("skip int32", skipd.SkipInt32) - } - if *skipd.SkipFixed32 != *skip.SkipFixed32 { - t.Error("skip fixed32", skipd.SkipFixed32) - } - if *skipd.SkipFixed64 != *skip.SkipFixed64 { - t.Error("skip fixed64", skipd.SkipFixed64) - } - if *skipd.SkipString != *skip.SkipString { - t.Error("skip string", *skipd.SkipString) - } - if *skipd.Skipgroup.GroupInt32 != *skip.Skipgroup.GroupInt32 { - t.Error("skip group int32", skipd.Skipgroup.GroupInt32) - } - if *skipd.Skipgroup.GroupString != *skip.Skipgroup.GroupString { - t.Error("skip group string", *skipd.Skipgroup.GroupString) - } -} - -// Check that unrecognized fields of a submessage are preserved. -func TestSubmessageUnrecognizedFields(t *testing.T) { - nm := &NewMessage{ - Nested: &NewMessage_Nested{ - Name: String("Nigel"), - FoodGroup: String("carbs"), - }, - } - b, err := Marshal(nm) - if err != nil { - t.Fatalf("Marshal of NewMessage: %v", err) - } - - // Unmarshal into an OldMessage. - om := new(OldMessage) - if err := Unmarshal(b, om); err != nil { - t.Fatalf("Unmarshal to OldMessage: %v", err) - } - exp := &OldMessage{ - Nested: &OldMessage_Nested{ - Name: String("Nigel"), - // normal protocol buffer users should not do this - XXX_unrecognized: []byte("\x12\x05carbs"), - }, - } - if !Equal(om, exp) { - t.Errorf("om = %v, want %v", om, exp) - } - - // Clone the OldMessage. - om = Clone(om).(*OldMessage) - if !Equal(om, exp) { - t.Errorf("Clone(om) = %v, want %v", om, exp) - } - - // Marshal the OldMessage, then unmarshal it into an empty NewMessage. - if b, err = Marshal(om); err != nil { - t.Fatalf("Marshal of OldMessage: %v", err) - } - t.Logf("Marshal(%v) -> %q", om, b) - nm2 := new(NewMessage) - if err := Unmarshal(b, nm2); err != nil { - t.Fatalf("Unmarshal to NewMessage: %v", err) - } - if !Equal(nm, nm2) { - t.Errorf("NewMessage round-trip: %v => %v", nm, nm2) - } -} - -// Check that an int32 field can be upgraded to an int64 field. -func TestNegativeInt32(t *testing.T) { - om := &OldMessage{ - Num: Int32(-1), - } - b, err := Marshal(om) - if err != nil { - t.Fatalf("Marshal of OldMessage: %v", err) - } - - // Check the size. It should be 11 bytes; - // 1 for the field/wire type, and 10 for the negative number. - if len(b) != 11 { - t.Errorf("%v marshaled as %q, wanted 11 bytes", om, b) - } - - // Unmarshal into a NewMessage. - nm := new(NewMessage) - if err := Unmarshal(b, nm); err != nil { - t.Fatalf("Unmarshal to NewMessage: %v", err) - } - want := &NewMessage{ - Num: Int64(-1), - } - if !Equal(nm, want) { - t.Errorf("nm = %v, want %v", nm, want) - } -} - -// Check that we can grow an array (repeated field) to have many elements. -// This test doesn't depend only on our encoding; for variety, it makes sure -// we create, encode, and decode the correct contents explicitly. It's therefore -// a bit messier. -// This test also uses (and hence tests) the Marshal/Unmarshal functions -// instead of the methods. -func TestBigRepeated(t *testing.T) { - pb := initGoTest(true) - - // Create the arrays - const N = 50 // Internally the library starts much smaller. - pb.Repeatedgroup = make([]*GoTest_RepeatedGroup, N) - pb.F_Sint64Repeated = make([]int64, N) - pb.F_Sint32Repeated = make([]int32, N) - pb.F_BytesRepeated = make([][]byte, N) - pb.F_StringRepeated = make([]string, N) - pb.F_DoubleRepeated = make([]float64, N) - pb.F_FloatRepeated = make([]float32, N) - pb.F_Uint64Repeated = make([]uint64, N) - pb.F_Uint32Repeated = make([]uint32, N) - pb.F_Fixed64Repeated = make([]uint64, N) - pb.F_Fixed32Repeated = make([]uint32, N) - pb.F_Int64Repeated = make([]int64, N) - pb.F_Int32Repeated = make([]int32, N) - pb.F_BoolRepeated = make([]bool, N) - pb.RepeatedField = make([]*GoTestField, N) - - // Fill in the arrays with checkable values. - igtf := initGoTestField() - igtrg := initGoTest_RepeatedGroup() - for i := 0; i < N; i++ { - pb.Repeatedgroup[i] = igtrg - pb.F_Sint64Repeated[i] = int64(i) - pb.F_Sint32Repeated[i] = int32(i) - s := fmt.Sprint(i) - pb.F_BytesRepeated[i] = []byte(s) - pb.F_StringRepeated[i] = s - pb.F_DoubleRepeated[i] = float64(i) - pb.F_FloatRepeated[i] = float32(i) - pb.F_Uint64Repeated[i] = uint64(i) - pb.F_Uint32Repeated[i] = uint32(i) - pb.F_Fixed64Repeated[i] = uint64(i) - pb.F_Fixed32Repeated[i] = uint32(i) - pb.F_Int64Repeated[i] = int64(i) - pb.F_Int32Repeated[i] = int32(i) - pb.F_BoolRepeated[i] = i%2 == 0 - pb.RepeatedField[i] = igtf - } - - // Marshal. - buf, _ := Marshal(pb) - - // Now test Unmarshal by recreating the original buffer. - pbd := new(GoTest) - Unmarshal(buf, pbd) - - // Check the checkable values - for i := uint64(0); i < N; i++ { - if pbd.Repeatedgroup[i] == nil { // TODO: more checking? - t.Error("pbd.Repeatedgroup bad") - } - var x uint64 - x = uint64(pbd.F_Sint64Repeated[i]) - if x != i { - t.Error("pbd.F_Sint64Repeated bad", x, i) - } - x = uint64(pbd.F_Sint32Repeated[i]) - if x != i { - t.Error("pbd.F_Sint32Repeated bad", x, i) - } - s := fmt.Sprint(i) - equalbytes(pbd.F_BytesRepeated[i], []byte(s), t) - if pbd.F_StringRepeated[i] != s { - t.Error("pbd.F_Sint32Repeated bad", pbd.F_StringRepeated[i], i) - } - x = uint64(pbd.F_DoubleRepeated[i]) - if x != i { - t.Error("pbd.F_DoubleRepeated bad", x, i) - } - x = uint64(pbd.F_FloatRepeated[i]) - if x != i { - t.Error("pbd.F_FloatRepeated bad", x, i) - } - x = pbd.F_Uint64Repeated[i] - if x != i { - t.Error("pbd.F_Uint64Repeated bad", x, i) - } - x = uint64(pbd.F_Uint32Repeated[i]) - if x != i { - t.Error("pbd.F_Uint32Repeated bad", x, i) - } - x = pbd.F_Fixed64Repeated[i] - if x != i { - t.Error("pbd.F_Fixed64Repeated bad", x, i) - } - x = uint64(pbd.F_Fixed32Repeated[i]) - if x != i { - t.Error("pbd.F_Fixed32Repeated bad", x, i) - } - x = uint64(pbd.F_Int64Repeated[i]) - if x != i { - t.Error("pbd.F_Int64Repeated bad", x, i) - } - x = uint64(pbd.F_Int32Repeated[i]) - if x != i { - t.Error("pbd.F_Int32Repeated bad", x, i) - } - if pbd.F_BoolRepeated[i] != (i%2 == 0) { - t.Error("pbd.F_BoolRepeated bad", x, i) - } - if pbd.RepeatedField[i] == nil { // TODO: more checking? - t.Error("pbd.RepeatedField bad") - } - } -} - -// Verify we give a useful message when decoding to the wrong structure type. -func TestTypeMismatch(t *testing.T) { - pb1 := initGoTest(true) - - // Marshal - o := old() - o.Marshal(pb1) - - // Now Unmarshal it to the wrong type. - pb2 := initGoTestField() - err := o.Unmarshal(pb2) - if err == nil { - t.Error("expected error, got no error") - } else if !strings.Contains(err.Error(), "bad wiretype") { - t.Error("expected bad wiretype error, got", err) - } -} - -func encodeDecode(t *testing.T, in, out Message, msg string) { - buf, err := Marshal(in) - if err != nil { - t.Fatalf("failed marshaling %v: %v", msg, err) - } - if err := Unmarshal(buf, out); err != nil { - t.Fatalf("failed unmarshaling %v: %v", msg, err) - } -} - -func TestPackedNonPackedDecoderSwitching(t *testing.T) { - np, p := new(NonPackedTest), new(PackedTest) - - // non-packed -> packed - np.A = []int32{0, 1, 1, 2, 3, 5} - encodeDecode(t, np, p, "non-packed -> packed") - if !reflect.DeepEqual(np.A, p.B) { - t.Errorf("failed non-packed -> packed; np.A=%+v, p.B=%+v", np.A, p.B) - } - - // packed -> non-packed - np.Reset() - p.B = []int32{3, 1, 4, 1, 5, 9} - encodeDecode(t, p, np, "packed -> non-packed") - if !reflect.DeepEqual(p.B, np.A) { - t.Errorf("failed packed -> non-packed; p.B=%+v, np.A=%+v", p.B, np.A) - } -} - -func TestProto1RepeatedGroup(t *testing.T) { - pb := &MessageList{ - Message: []*MessageList_Message{ - { - Name: String("blah"), - Count: Int32(7), - }, - // NOTE: pb.Message[1] is a nil - nil, - }, - } - - o := old() - err := o.Marshal(pb) - if err == nil || !strings.Contains(err.Error(), "repeated field Message has nil") { - t.Fatalf("unexpected or no error when marshaling: %v", err) - } -} - -// Test that enums work. Checks for a bug introduced by making enums -// named types instead of int32: newInt32FromUint64 would crash with -// a type mismatch in reflect.PointTo. -func TestEnum(t *testing.T) { - pb := new(GoEnum) - pb.Foo = FOO_FOO1.Enum() - o := old() - if err := o.Marshal(pb); err != nil { - t.Fatal("error encoding enum:", err) - } - pb1 := new(GoEnum) - if err := o.Unmarshal(pb1); err != nil { - t.Fatal("error decoding enum:", err) - } - if *pb1.Foo != FOO_FOO1 { - t.Error("expected 7 but got ", *pb1.Foo) - } -} - -// Enum types have String methods. Check that enum fields can be printed. -// We don't care what the value actually is, just as long as it doesn't crash. -func TestPrintingNilEnumFields(t *testing.T) { - pb := new(GoEnum) - _ = fmt.Sprintf("%+v", pb) -} - -// Verify that absent required fields cause Marshal/Unmarshal to return errors. -func TestRequiredFieldEnforcement(t *testing.T) { - pb := new(GoTestField) - _, err := Marshal(pb) - if err == nil { - t.Error("marshal: expected error, got nil") - } else if _, ok := err.(*RequiredNotSetError); !ok || !strings.Contains(err.Error(), "Label") { - t.Errorf("marshal: bad error type: %v", err) - } - - // A slightly sneaky, yet valid, proto. It encodes the same required field twice, - // so simply counting the required fields is insufficient. - // field 1, encoding 2, value "hi" - buf := []byte("\x0A\x02hi\x0A\x02hi") - err = Unmarshal(buf, pb) - if err == nil { - t.Error("unmarshal: expected error, got nil") - } else if _, ok := err.(*RequiredNotSetError); !ok || !strings.Contains(err.Error(), "{Unknown}") { - t.Errorf("unmarshal: bad error type: %v", err) - } -} - -// Verify that absent required fields in groups cause Marshal/Unmarshal to return errors. -func TestRequiredFieldEnforcementGroups(t *testing.T) { - pb := &GoTestRequiredGroupField{Group: &GoTestRequiredGroupField_Group{}} - if _, err := Marshal(pb); err == nil { - t.Error("marshal: expected error, got nil") - } else if _, ok := err.(*RequiredNotSetError); !ok || !strings.Contains(err.Error(), "Group.Field") { - t.Errorf("marshal: bad error type: %v", err) - } - - buf := []byte{11, 12} - if err := Unmarshal(buf, pb); err == nil { - t.Error("unmarshal: expected error, got nil") - } else if _, ok := err.(*RequiredNotSetError); !ok || !strings.Contains(err.Error(), "Group.{Unknown}") { - t.Errorf("unmarshal: bad error type: %v", err) - } -} - -func TestTypedNilMarshal(t *testing.T) { - // A typed nil should return ErrNil and not crash. - { - var m *GoEnum - if _, err := Marshal(m); err != ErrNil { - t.Errorf("Marshal(%#v): got %v, want ErrNil", m, err) - } - } - - { - m := &Communique{Union: &Communique_Msg{nil}} - if _, err := Marshal(m); err == nil || err == ErrNil { - t.Errorf("Marshal(%#v): got %v, want errOneofHasNil", m, err) - } - } -} - -// A type that implements the Marshaler interface, but is not nillable. -type nonNillableInt uint64 - -func (nni nonNillableInt) Marshal() ([]byte, error) { - return EncodeVarint(uint64(nni)), nil -} - -type NNIMessage struct { - nni nonNillableInt -} - -func (*NNIMessage) Reset() {} -func (*NNIMessage) String() string { return "" } -func (*NNIMessage) ProtoMessage() {} - -// A type that implements the Marshaler interface and is nillable. -type nillableMessage struct { - x uint64 -} - -func (nm *nillableMessage) Marshal() ([]byte, error) { - return EncodeVarint(nm.x), nil -} - -type NMMessage struct { - nm *nillableMessage -} - -func (*NMMessage) Reset() {} -func (*NMMessage) String() string { return "" } -func (*NMMessage) ProtoMessage() {} - -// Verify a type that uses the Marshaler interface, but has a nil pointer. -func TestNilMarshaler(t *testing.T) { - // Try a struct with a Marshaler field that is nil. - // It should be directly marshable. - nmm := new(NMMessage) - if _, err := Marshal(nmm); err != nil { - t.Error("unexpected error marshaling nmm: ", err) - } - - // Try a struct with a Marshaler field that is not nillable. - nnim := new(NNIMessage) - nnim.nni = 7 - var _ Marshaler = nnim.nni // verify it is truly a Marshaler - if _, err := Marshal(nnim); err != nil { - t.Error("unexpected error marshaling nnim: ", err) - } -} - -func TestAllSetDefaults(t *testing.T) { - // Exercise SetDefaults with all scalar field types. - m := &Defaults{ - // NaN != NaN, so override that here. - F_Nan: Float32(1.7), - } - expected := &Defaults{ - F_Bool: Bool(true), - F_Int32: Int32(32), - F_Int64: Int64(64), - F_Fixed32: Uint32(320), - F_Fixed64: Uint64(640), - F_Uint32: Uint32(3200), - F_Uint64: Uint64(6400), - F_Float: Float32(314159), - F_Double: Float64(271828), - F_String: String(`hello, "world!"` + "\n"), - F_Bytes: []byte("Bignose"), - F_Sint32: Int32(-32), - F_Sint64: Int64(-64), - F_Enum: Defaults_GREEN.Enum(), - F_Pinf: Float32(float32(math.Inf(1))), - F_Ninf: Float32(float32(math.Inf(-1))), - F_Nan: Float32(1.7), - StrZero: String(""), - } - SetDefaults(m) - if !Equal(m, expected) { - t.Errorf("SetDefaults failed\n got %v\nwant %v", m, expected) - } -} - -func TestSetDefaultsWithSetField(t *testing.T) { - // Check that a set value is not overridden. - m := &Defaults{ - F_Int32: Int32(12), - } - SetDefaults(m) - if v := m.GetF_Int32(); v != 12 { - t.Errorf("m.FInt32 = %v, want 12", v) - } -} - -func TestSetDefaultsWithSubMessage(t *testing.T) { - m := &OtherMessage{ - Key: Int64(123), - Inner: &InnerMessage{ - Host: String("gopher"), - }, - } - expected := &OtherMessage{ - Key: Int64(123), - Inner: &InnerMessage{ - Host: String("gopher"), - Port: Int32(4000), - }, - } - SetDefaults(m) - if !Equal(m, expected) { - t.Errorf("\n got %v\nwant %v", m, expected) - } -} - -func TestSetDefaultsWithRepeatedSubMessage(t *testing.T) { - m := &MyMessage{ - RepInner: []*InnerMessage{{}}, - } - expected := &MyMessage{ - RepInner: []*InnerMessage{{ - Port: Int32(4000), - }}, - } - SetDefaults(m) - if !Equal(m, expected) { - t.Errorf("\n got %v\nwant %v", m, expected) - } -} - -func TestSetDefaultWithRepeatedNonMessage(t *testing.T) { - m := &MyMessage{ - Pet: []string{"turtle", "wombat"}, - } - expected := Clone(m) - SetDefaults(m) - if !Equal(m, expected) { - t.Errorf("\n got %v\nwant %v", m, expected) - } -} - -func TestMaximumTagNumber(t *testing.T) { - m := &MaxTag{ - LastField: String("natural goat essence"), - } - buf, err := Marshal(m) - if err != nil { - t.Fatalf("proto.Marshal failed: %v", err) - } - m2 := new(MaxTag) - if err := Unmarshal(buf, m2); err != nil { - t.Fatalf("proto.Unmarshal failed: %v", err) - } - if got, want := m2.GetLastField(), *m.LastField; got != want { - t.Errorf("got %q, want %q", got, want) - } -} - -func TestJSON(t *testing.T) { - m := &MyMessage{ - Count: Int32(4), - Pet: []string{"bunny", "kitty"}, - Inner: &InnerMessage{ - Host: String("cauchy"), - }, - Bikeshed: MyMessage_GREEN.Enum(), - } - const expected = `{"count":4,"pet":["bunny","kitty"],"inner":{"host":"cauchy"},"bikeshed":1}` - - b, err := json.Marshal(m) - if err != nil { - t.Fatalf("json.Marshal failed: %v", err) - } - s := string(b) - if s != expected { - t.Errorf("got %s\nwant %s", s, expected) - } - - received := new(MyMessage) - if err := json.Unmarshal(b, received); err != nil { - t.Fatalf("json.Unmarshal failed: %v", err) - } - if !Equal(received, m) { - t.Fatalf("got %s, want %s", received, m) - } - - // Test unmarshalling of JSON with symbolic enum name. - const old = `{"count":4,"pet":["bunny","kitty"],"inner":{"host":"cauchy"},"bikeshed":"GREEN"}` - received.Reset() - if err := json.Unmarshal([]byte(old), received); err != nil { - t.Fatalf("json.Unmarshal failed: %v", err) - } - if !Equal(received, m) { - t.Fatalf("got %s, want %s", received, m) - } -} - -func TestBadWireType(t *testing.T) { - b := []byte{7<<3 | 6} // field 7, wire type 6 - pb := new(OtherMessage) - if err := Unmarshal(b, pb); err == nil { - t.Errorf("Unmarshal did not fail") - } else if !strings.Contains(err.Error(), "unknown wire type") { - t.Errorf("wrong error: %v", err) - } -} - -func TestBytesWithInvalidLength(t *testing.T) { - // If a byte sequence has an invalid (negative) length, Unmarshal should not panic. - b := []byte{2<<3 | WireBytes, 0xff, 0xff, 0xff, 0xff, 0xff, 0} - Unmarshal(b, new(MyMessage)) -} - -func TestLengthOverflow(t *testing.T) { - // Overflowing a length should not panic. - b := []byte{2<<3 | WireBytes, 1, 1, 3<<3 | WireBytes, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01} - Unmarshal(b, new(MyMessage)) -} - -func TestVarintOverflow(t *testing.T) { - // Overflowing a 64-bit length should not be allowed. - b := []byte{1<<3 | WireVarint, 0x01, 3<<3 | WireBytes, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01} - if err := Unmarshal(b, new(MyMessage)); err == nil { - t.Fatalf("Overflowed uint64 length without error") - } -} - -func TestUnmarshalFuzz(t *testing.T) { - const N = 1000 - seed := time.Now().UnixNano() - t.Logf("RNG seed is %d", seed) - rng := rand.New(rand.NewSource(seed)) - buf := make([]byte, 20) - for i := 0; i < N; i++ { - for j := range buf { - buf[j] = byte(rng.Intn(256)) - } - fuzzUnmarshal(t, buf) - } -} - -func TestMergeMessages(t *testing.T) { - pb := &MessageList{Message: []*MessageList_Message{{Name: String("x"), Count: Int32(1)}}} - data, err := Marshal(pb) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - - pb1 := new(MessageList) - if err := Unmarshal(data, pb1); err != nil { - t.Fatalf("first Unmarshal: %v", err) - } - if err := Unmarshal(data, pb1); err != nil { - t.Fatalf("second Unmarshal: %v", err) - } - if len(pb1.Message) != 1 { - t.Errorf("two Unmarshals produced %d Messages, want 1", len(pb1.Message)) - } - - pb2 := new(MessageList) - if err := UnmarshalMerge(data, pb2); err != nil { - t.Fatalf("first UnmarshalMerge: %v", err) - } - if err := UnmarshalMerge(data, pb2); err != nil { - t.Fatalf("second UnmarshalMerge: %v", err) - } - if len(pb2.Message) != 2 { - t.Errorf("two UnmarshalMerges produced %d Messages, want 2", len(pb2.Message)) - } -} - -func TestExtensionMarshalOrder(t *testing.T) { - m := &MyMessage{Count: Int(123)} - if err := SetExtension(m, E_Ext_More, &Ext{Data: String("alpha")}); err != nil { - t.Fatalf("SetExtension: %v", err) - } - if err := SetExtension(m, E_Ext_Text, String("aleph")); err != nil { - t.Fatalf("SetExtension: %v", err) - } - if err := SetExtension(m, E_Ext_Number, Int32(1)); err != nil { - t.Fatalf("SetExtension: %v", err) - } - - // Serialize m several times, and check we get the same bytes each time. - var orig []byte - for i := 0; i < 100; i++ { - b, err := Marshal(m) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - if i == 0 { - orig = b - continue - } - if !bytes.Equal(b, orig) { - t.Errorf("Bytes differ on attempt #%d", i) - } - } -} - -// Many extensions, because small maps might not iterate differently on each iteration. -var exts = []*ExtensionDesc{ - E_X201, - E_X202, - E_X203, - E_X204, - E_X205, - E_X206, - E_X207, - E_X208, - E_X209, - E_X210, - E_X211, - E_X212, - E_X213, - E_X214, - E_X215, - E_X216, - E_X217, - E_X218, - E_X219, - E_X220, - E_X221, - E_X222, - E_X223, - E_X224, - E_X225, - E_X226, - E_X227, - E_X228, - E_X229, - E_X230, - E_X231, - E_X232, - E_X233, - E_X234, - E_X235, - E_X236, - E_X237, - E_X238, - E_X239, - E_X240, - E_X241, - E_X242, - E_X243, - E_X244, - E_X245, - E_X246, - E_X247, - E_X248, - E_X249, - E_X250, -} - -func TestMessageSetMarshalOrder(t *testing.T) { - m := &MyMessageSet{} - for _, x := range exts { - if err := SetExtension(m, x, &Empty{}); err != nil { - t.Fatalf("SetExtension: %v", err) - } - } - - buf, err := Marshal(m) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - - // Serialize m several times, and check we get the same bytes each time. - for i := 0; i < 10; i++ { - b1, err := Marshal(m) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - if !bytes.Equal(b1, buf) { - t.Errorf("Bytes differ on re-Marshal #%d", i) - } - - m2 := &MyMessageSet{} - if err := Unmarshal(buf, m2); err != nil { - t.Errorf("Unmarshal: %v", err) - } - b2, err := Marshal(m2) - if err != nil { - t.Errorf("re-Marshal: %v", err) - } - if !bytes.Equal(b2, buf) { - t.Errorf("Bytes differ on round-trip #%d", i) - } - } -} - -func TestUnmarshalMergesMessages(t *testing.T) { - // If a nested message occurs twice in the input, - // the fields should be merged when decoding. - a := &OtherMessage{ - Key: Int64(123), - Inner: &InnerMessage{ - Host: String("polhode"), - Port: Int32(1234), - }, - } - aData, err := Marshal(a) - if err != nil { - t.Fatalf("Marshal(a): %v", err) - } - b := &OtherMessage{ - Weight: Float32(1.2), - Inner: &InnerMessage{ - Host: String("herpolhode"), - Connected: Bool(true), - }, - } - bData, err := Marshal(b) - if err != nil { - t.Fatalf("Marshal(b): %v", err) - } - want := &OtherMessage{ - Key: Int64(123), - Weight: Float32(1.2), - Inner: &InnerMessage{ - Host: String("herpolhode"), - Port: Int32(1234), - Connected: Bool(true), - }, - } - got := new(OtherMessage) - if err := Unmarshal(append(aData, bData...), got); err != nil { - t.Fatalf("Unmarshal: %v", err) - } - if !Equal(got, want) { - t.Errorf("\n got %v\nwant %v", got, want) - } -} - -func TestEncodingSizes(t *testing.T) { - tests := []struct { - m Message - n int - }{ - {&Defaults{F_Int32: Int32(math.MaxInt32)}, 6}, - {&Defaults{F_Int32: Int32(math.MinInt32)}, 11}, - {&Defaults{F_Uint32: Uint32(uint32(math.MaxInt32) + 1)}, 6}, - {&Defaults{F_Uint32: Uint32(math.MaxUint32)}, 6}, - } - for _, test := range tests { - b, err := Marshal(test.m) - if err != nil { - t.Errorf("Marshal(%v): %v", test.m, err) - continue - } - if len(b) != test.n { - t.Errorf("Marshal(%v) yielded %d bytes, want %d bytes", test.m, len(b), test.n) - } - } -} - -func TestRequiredNotSetError(t *testing.T) { - pb := initGoTest(false) - pb.RequiredField.Label = nil - pb.F_Int32Required = nil - pb.F_Int64Required = nil - - expected := "0807" + // field 1, encoding 0, value 7 - "2206" + "120474797065" + // field 4, encoding 2 (GoTestField) - "5001" + // field 10, encoding 0, value 1 - "6d20000000" + // field 13, encoding 5, value 0x20 - "714000000000000000" + // field 14, encoding 1, value 0x40 - "78a019" + // field 15, encoding 0, value 0xca0 = 3232 - "8001c032" + // field 16, encoding 0, value 0x1940 = 6464 - "8d0100004a45" + // field 17, encoding 5, value 3232.0 - "9101000000000040b940" + // field 18, encoding 1, value 6464.0 - "9a0106" + "737472696e67" + // field 19, encoding 2, string "string" - "b304" + // field 70, encoding 3, start group - "ba0408" + "7265717569726564" + // field 71, encoding 2, string "required" - "b404" + // field 70, encoding 4, end group - "aa0605" + "6279746573" + // field 101, encoding 2, string "bytes" - "b0063f" + // field 102, encoding 0, 0x3f zigzag32 - "b8067f" // field 103, encoding 0, 0x7f zigzag64 - - o := old() - bytes, err := Marshal(pb) - if _, ok := err.(*RequiredNotSetError); !ok { - fmt.Printf("marshal-1 err = %v, want *RequiredNotSetError", err) - o.DebugPrint("", bytes) - t.Fatalf("expected = %s", expected) - } - if strings.Index(err.Error(), "RequiredField.Label") < 0 { - t.Errorf("marshal-1 wrong err msg: %v", err) - } - if !equal(bytes, expected, t) { - o.DebugPrint("neq 1", bytes) - t.Fatalf("expected = %s", expected) - } - - // Now test Unmarshal by recreating the original buffer. - pbd := new(GoTest) - err = Unmarshal(bytes, pbd) - if _, ok := err.(*RequiredNotSetError); !ok { - t.Fatalf("unmarshal err = %v, want *RequiredNotSetError", err) - o.DebugPrint("", bytes) - t.Fatalf("string = %s", expected) - } - if strings.Index(err.Error(), "RequiredField.{Unknown}") < 0 { - t.Errorf("unmarshal wrong err msg: %v", err) - } - bytes, err = Marshal(pbd) - if _, ok := err.(*RequiredNotSetError); !ok { - t.Errorf("marshal-2 err = %v, want *RequiredNotSetError", err) - o.DebugPrint("", bytes) - t.Fatalf("string = %s", expected) - } - if strings.Index(err.Error(), "RequiredField.Label") < 0 { - t.Errorf("marshal-2 wrong err msg: %v", err) - } - if !equal(bytes, expected, t) { - o.DebugPrint("neq 2", bytes) - t.Fatalf("string = %s", expected) - } -} - -func fuzzUnmarshal(t *testing.T, data []byte) { - defer func() { - if e := recover(); e != nil { - t.Errorf("These bytes caused a panic: %+v", data) - t.Logf("Stack:\n%s", debug.Stack()) - t.FailNow() - } - }() - - pb := new(MyMessage) - Unmarshal(data, pb) -} - -func TestMapFieldMarshal(t *testing.T) { - m := &MessageWithMap{ - NameMapping: map[int32]string{ - 1: "Rob", - 4: "Ian", - 8: "Dave", - }, - } - b, err := Marshal(m) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - - // b should be the concatenation of these three byte sequences in some order. - parts := []string{ - "\n\a\b\x01\x12\x03Rob", - "\n\a\b\x04\x12\x03Ian", - "\n\b\b\x08\x12\x04Dave", - } - ok := false - for i := range parts { - for j := range parts { - if j == i { - continue - } - for k := range parts { - if k == i || k == j { - continue - } - try := parts[i] + parts[j] + parts[k] - if bytes.Equal(b, []byte(try)) { - ok = true - break - } - } - } - } - if !ok { - t.Fatalf("Incorrect Marshal output.\n got %q\nwant %q (or a permutation of that)", b, parts[0]+parts[1]+parts[2]) - } - t.Logf("FYI b: %q", b) - - (new(Buffer)).DebugPrint("Dump of b", b) -} - -func TestMapFieldRoundTrips(t *testing.T) { - m := &MessageWithMap{ - NameMapping: map[int32]string{ - 1: "Rob", - 4: "Ian", - 8: "Dave", - }, - MsgMapping: map[int64]*FloatingPoint{ - 0x7001: &FloatingPoint{F: Float64(2.0)}, - }, - ByteMapping: map[bool][]byte{ - false: []byte("that's not right!"), - true: []byte("aye, 'tis true!"), - }, - } - b, err := Marshal(m) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - t.Logf("FYI b: %q", b) - m2 := new(MessageWithMap) - if err := Unmarshal(b, m2); err != nil { - t.Fatalf("Unmarshal: %v", err) - } - for _, pair := range [][2]interface{}{ - {m.NameMapping, m2.NameMapping}, - {m.MsgMapping, m2.MsgMapping}, - {m.ByteMapping, m2.ByteMapping}, - } { - if !reflect.DeepEqual(pair[0], pair[1]) { - t.Errorf("Map did not survive a round trip.\ninitial: %v\n final: %v", pair[0], pair[1]) - } - } -} - -func TestMapFieldWithNil(t *testing.T) { - m1 := &MessageWithMap{ - MsgMapping: map[int64]*FloatingPoint{ - 1: nil, - }, - } - b, err := Marshal(m1) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - m2 := new(MessageWithMap) - if err := Unmarshal(b, m2); err != nil { - t.Fatalf("Unmarshal: %v, got these bytes: %v", err, b) - } - if v, ok := m2.MsgMapping[1]; !ok { - t.Error("msg_mapping[1] not present") - } else if v != nil { - t.Errorf("msg_mapping[1] not nil: %v", v) - } -} - -func TestMapFieldWithNilBytes(t *testing.T) { - m1 := &MessageWithMap{ - ByteMapping: map[bool][]byte{ - false: []byte{}, - true: nil, - }, - } - n := Size(m1) - b, err := Marshal(m1) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - if n != len(b) { - t.Errorf("Size(m1) = %d; want len(Marshal(m1)) = %d", n, len(b)) - } - m2 := new(MessageWithMap) - if err := Unmarshal(b, m2); err != nil { - t.Fatalf("Unmarshal: %v, got these bytes: %v", err, b) - } - if v, ok := m2.ByteMapping[false]; !ok { - t.Error("byte_mapping[false] not present") - } else if len(v) != 0 { - t.Errorf("byte_mapping[false] not empty: %#v", v) - } - if v, ok := m2.ByteMapping[true]; !ok { - t.Error("byte_mapping[true] not present") - } else if len(v) != 0 { - t.Errorf("byte_mapping[true] not empty: %#v", v) - } -} - -func TestDecodeMapFieldMissingKey(t *testing.T) { - b := []byte{ - 0x0A, 0x03, // message, tag 1 (name_mapping), of length 3 bytes - // no key - 0x12, 0x01, 0x6D, // string value of length 1 byte, value "m" - } - got := &MessageWithMap{} - err := Unmarshal(b, got) - if err != nil { - t.Fatalf("failed to marshal map with missing key: %v", err) - } - want := &MessageWithMap{NameMapping: map[int32]string{0: "m"}} - if !Equal(got, want) { - t.Errorf("Unmarshaled map with no key was not as expected. got: %v, want %v", got, want) - } -} - -func TestDecodeMapFieldMissingValue(t *testing.T) { - b := []byte{ - 0x0A, 0x02, // message, tag 1 (name_mapping), of length 2 bytes - 0x08, 0x01, // varint key, value 1 - // no value - } - got := &MessageWithMap{} - err := Unmarshal(b, got) - if err != nil { - t.Fatalf("failed to marshal map with missing value: %v", err) - } - want := &MessageWithMap{NameMapping: map[int32]string{1: ""}} - if !Equal(got, want) { - t.Errorf("Unmarshaled map with no value was not as expected. got: %v, want %v", got, want) - } -} - -func TestOneof(t *testing.T) { - m := &Communique{} - b, err := Marshal(m) - if err != nil { - t.Fatalf("Marshal of empty message with oneof: %v", err) - } - if len(b) != 0 { - t.Errorf("Marshal of empty message yielded too many bytes: %v", b) - } - - m = &Communique{ - Union: &Communique_Name{"Barry"}, - } - - // Round-trip. - b, err = Marshal(m) - if err != nil { - t.Fatalf("Marshal of message with oneof: %v", err) - } - if len(b) != 7 { // name tag/wire (1) + name len (1) + name (5) - t.Errorf("Incorrect marshal of message with oneof: %v", b) - } - m.Reset() - if err := Unmarshal(b, m); err != nil { - t.Fatalf("Unmarshal of message with oneof: %v", err) - } - if x, ok := m.Union.(*Communique_Name); !ok || x.Name != "Barry" { - t.Errorf("After round trip, Union = %+v", m.Union) - } - if name := m.GetName(); name != "Barry" { - t.Errorf("After round trip, GetName = %q, want %q", name, "Barry") - } - - // Let's try with a message in the oneof. - m.Union = &Communique_Msg{&Strings{StringField: String("deep deep string")}} - b, err = Marshal(m) - if err != nil { - t.Fatalf("Marshal of message with oneof set to message: %v", err) - } - if len(b) != 20 { // msg tag/wire (1) + msg len (1) + msg (1 + 1 + 16) - t.Errorf("Incorrect marshal of message with oneof set to message: %v", b) - } - m.Reset() - if err := Unmarshal(b, m); err != nil { - t.Fatalf("Unmarshal of message with oneof set to message: %v", err) - } - ss, ok := m.Union.(*Communique_Msg) - if !ok || ss.Msg.GetStringField() != "deep deep string" { - t.Errorf("After round trip with oneof set to message, Union = %+v", m.Union) - } -} - -func TestInefficientPackedBool(t *testing.T) { - // https://github.com/golang/protobuf/issues/76 - inp := []byte{ - 0x12, 0x02, // 0x12 = 2<<3|2; 2 bytes - // Usually a bool should take a single byte, - // but it is permitted to be any varint. - 0xb9, 0x30, - } - if err := Unmarshal(inp, new(MoreRepeated)); err != nil { - t.Error(err) - } -} - -// Benchmarks - -func testMsg() *GoTest { - pb := initGoTest(true) - const N = 1000 // Internally the library starts much smaller. - pb.F_Int32Repeated = make([]int32, N) - pb.F_DoubleRepeated = make([]float64, N) - for i := 0; i < N; i++ { - pb.F_Int32Repeated[i] = int32(i) - pb.F_DoubleRepeated[i] = float64(i) - } - return pb -} - -func bytesMsg() *GoTest { - pb := initGoTest(true) - buf := make([]byte, 4000) - for i := range buf { - buf[i] = byte(i) - } - pb.F_BytesDefaulted = buf - return pb -} - -func benchmarkMarshal(b *testing.B, pb Message, marshal func(Message) ([]byte, error)) { - d, _ := marshal(pb) - b.SetBytes(int64(len(d))) - b.ResetTimer() - for i := 0; i < b.N; i++ { - marshal(pb) - } -} - -func benchmarkBufferMarshal(b *testing.B, pb Message) { - p := NewBuffer(nil) - benchmarkMarshal(b, pb, func(pb0 Message) ([]byte, error) { - p.Reset() - err := p.Marshal(pb0) - return p.Bytes(), err - }) -} - -func benchmarkSize(b *testing.B, pb Message) { - benchmarkMarshal(b, pb, func(pb0 Message) ([]byte, error) { - Size(pb) - return nil, nil - }) -} - -func newOf(pb Message) Message { - in := reflect.ValueOf(pb) - if in.IsNil() { - return pb - } - return reflect.New(in.Type().Elem()).Interface().(Message) -} - -func benchmarkUnmarshal(b *testing.B, pb Message, unmarshal func([]byte, Message) error) { - d, _ := Marshal(pb) - b.SetBytes(int64(len(d))) - pbd := newOf(pb) - - b.ResetTimer() - for i := 0; i < b.N; i++ { - unmarshal(d, pbd) - } -} - -func benchmarkBufferUnmarshal(b *testing.B, pb Message) { - p := NewBuffer(nil) - benchmarkUnmarshal(b, pb, func(d []byte, pb0 Message) error { - p.SetBuf(d) - return p.Unmarshal(pb0) - }) -} - -// Benchmark{Marshal,BufferMarshal,Size,Unmarshal,BufferUnmarshal}{,Bytes} - -func BenchmarkMarshal(b *testing.B) { - benchmarkMarshal(b, testMsg(), Marshal) -} - -func BenchmarkBufferMarshal(b *testing.B) { - benchmarkBufferMarshal(b, testMsg()) -} - -func BenchmarkSize(b *testing.B) { - benchmarkSize(b, testMsg()) -} - -func BenchmarkUnmarshal(b *testing.B) { - benchmarkUnmarshal(b, testMsg(), Unmarshal) -} - -func BenchmarkBufferUnmarshal(b *testing.B) { - benchmarkBufferUnmarshal(b, testMsg()) -} - -func BenchmarkMarshalBytes(b *testing.B) { - benchmarkMarshal(b, bytesMsg(), Marshal) -} - -func BenchmarkBufferMarshalBytes(b *testing.B) { - benchmarkBufferMarshal(b, bytesMsg()) -} - -func BenchmarkSizeBytes(b *testing.B) { - benchmarkSize(b, bytesMsg()) -} - -func BenchmarkUnmarshalBytes(b *testing.B) { - benchmarkUnmarshal(b, bytesMsg(), Unmarshal) -} - -func BenchmarkBufferUnmarshalBytes(b *testing.B) { - benchmarkBufferUnmarshal(b, bytesMsg()) -} - -func BenchmarkUnmarshalUnrecognizedFields(b *testing.B) { - b.StopTimer() - pb := initGoTestField() - skip := &GoSkipTest{ - SkipInt32: Int32(32), - SkipFixed32: Uint32(3232), - SkipFixed64: Uint64(6464), - SkipString: String("skipper"), - Skipgroup: &GoSkipTest_SkipGroup{ - GroupInt32: Int32(75), - GroupString: String("wxyz"), - }, - } - - pbd := new(GoTestField) - p := NewBuffer(nil) - p.Marshal(pb) - p.Marshal(skip) - p2 := NewBuffer(nil) - - b.StartTimer() - for i := 0; i < b.N; i++ { - p2.SetBuf(p.Bytes()) - p2.Unmarshal(pbd) - } -} diff --git a/vendor/github.com/golang/protobuf/proto/any_test.go b/vendor/github.com/golang/protobuf/proto/any_test.go deleted file mode 100644 index 1a3c22ed..00000000 --- a/vendor/github.com/golang/protobuf/proto/any_test.go +++ /dev/null @@ -1,300 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto_test - -import ( - "strings" - "testing" - - "github.com/golang/protobuf/proto" - - pb "github.com/golang/protobuf/proto/proto3_proto" - testpb "github.com/golang/protobuf/proto/testdata" - anypb "github.com/golang/protobuf/ptypes/any" -) - -var ( - expandedMarshaler = proto.TextMarshaler{ExpandAny: true} - expandedCompactMarshaler = proto.TextMarshaler{Compact: true, ExpandAny: true} -) - -// anyEqual reports whether two messages which may be google.protobuf.Any or may -// contain google.protobuf.Any fields are equal. We can't use proto.Equal for -// comparison, because semantically equivalent messages may be marshaled to -// binary in different tag order. Instead, trust that TextMarshaler with -// ExpandAny option works and compare the text marshaling results. -func anyEqual(got, want proto.Message) bool { - // if messages are proto.Equal, no need to marshal. - if proto.Equal(got, want) { - return true - } - g := expandedMarshaler.Text(got) - w := expandedMarshaler.Text(want) - return g == w -} - -type golden struct { - m proto.Message - t, c string -} - -var goldenMessages = makeGolden() - -func makeGolden() []golden { - nested := &pb.Nested{Bunny: "Monty"} - nb, err := proto.Marshal(nested) - if err != nil { - panic(err) - } - m1 := &pb.Message{ - Name: "David", - ResultCount: 47, - Anything: &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(nested), Value: nb}, - } - m2 := &pb.Message{ - Name: "David", - ResultCount: 47, - Anything: &anypb.Any{TypeUrl: "http://[::1]/type.googleapis.com/" + proto.MessageName(nested), Value: nb}, - } - m3 := &pb.Message{ - Name: "David", - ResultCount: 47, - Anything: &anypb.Any{TypeUrl: `type.googleapis.com/"/` + proto.MessageName(nested), Value: nb}, - } - m4 := &pb.Message{ - Name: "David", - ResultCount: 47, - Anything: &anypb.Any{TypeUrl: "type.googleapis.com/a/path/" + proto.MessageName(nested), Value: nb}, - } - m5 := &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(nested), Value: nb} - - any1 := &testpb.MyMessage{Count: proto.Int32(47), Name: proto.String("David")} - proto.SetExtension(any1, testpb.E_Ext_More, &testpb.Ext{Data: proto.String("foo")}) - proto.SetExtension(any1, testpb.E_Ext_Text, proto.String("bar")) - any1b, err := proto.Marshal(any1) - if err != nil { - panic(err) - } - any2 := &testpb.MyMessage{Count: proto.Int32(42), Bikeshed: testpb.MyMessage_GREEN.Enum(), RepBytes: [][]byte{[]byte("roboto")}} - proto.SetExtension(any2, testpb.E_Ext_More, &testpb.Ext{Data: proto.String("baz")}) - any2b, err := proto.Marshal(any2) - if err != nil { - panic(err) - } - m6 := &pb.Message{ - Name: "David", - ResultCount: 47, - Anything: &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(any1), Value: any1b}, - ManyThings: []*anypb.Any{ - &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(any2), Value: any2b}, - &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(any1), Value: any1b}, - }, - } - - const ( - m1Golden = ` -name: "David" -result_count: 47 -anything: < - [type.googleapis.com/proto3_proto.Nested]: < - bunny: "Monty" - > -> -` - m2Golden = ` -name: "David" -result_count: 47 -anything: < - ["http://[::1]/type.googleapis.com/proto3_proto.Nested"]: < - bunny: "Monty" - > -> -` - m3Golden = ` -name: "David" -result_count: 47 -anything: < - ["type.googleapis.com/\"/proto3_proto.Nested"]: < - bunny: "Monty" - > -> -` - m4Golden = ` -name: "David" -result_count: 47 -anything: < - [type.googleapis.com/a/path/proto3_proto.Nested]: < - bunny: "Monty" - > -> -` - m5Golden = ` -[type.googleapis.com/proto3_proto.Nested]: < - bunny: "Monty" -> -` - m6Golden = ` -name: "David" -result_count: 47 -anything: < - [type.googleapis.com/testdata.MyMessage]: < - count: 47 - name: "David" - [testdata.Ext.more]: < - data: "foo" - > - [testdata.Ext.text]: "bar" - > -> -many_things: < - [type.googleapis.com/testdata.MyMessage]: < - count: 42 - bikeshed: GREEN - rep_bytes: "roboto" - [testdata.Ext.more]: < - data: "baz" - > - > -> -many_things: < - [type.googleapis.com/testdata.MyMessage]: < - count: 47 - name: "David" - [testdata.Ext.more]: < - data: "foo" - > - [testdata.Ext.text]: "bar" - > -> -` - ) - return []golden{ - {m1, strings.TrimSpace(m1Golden) + "\n", strings.TrimSpace(compact(m1Golden)) + " "}, - {m2, strings.TrimSpace(m2Golden) + "\n", strings.TrimSpace(compact(m2Golden)) + " "}, - {m3, strings.TrimSpace(m3Golden) + "\n", strings.TrimSpace(compact(m3Golden)) + " "}, - {m4, strings.TrimSpace(m4Golden) + "\n", strings.TrimSpace(compact(m4Golden)) + " "}, - {m5, strings.TrimSpace(m5Golden) + "\n", strings.TrimSpace(compact(m5Golden)) + " "}, - {m6, strings.TrimSpace(m6Golden) + "\n", strings.TrimSpace(compact(m6Golden)) + " "}, - } -} - -func TestMarshalGolden(t *testing.T) { - for _, tt := range goldenMessages { - if got, want := expandedMarshaler.Text(tt.m), tt.t; got != want { - t.Errorf("message %v: got:\n%s\nwant:\n%s", tt.m, got, want) - } - if got, want := expandedCompactMarshaler.Text(tt.m), tt.c; got != want { - t.Errorf("message %v: got:\n`%s`\nwant:\n`%s`", tt.m, got, want) - } - } -} - -func TestUnmarshalGolden(t *testing.T) { - for _, tt := range goldenMessages { - want := tt.m - got := proto.Clone(tt.m) - got.Reset() - if err := proto.UnmarshalText(tt.t, got); err != nil { - t.Errorf("failed to unmarshal\n%s\nerror: %v", tt.t, err) - } - if !anyEqual(got, want) { - t.Errorf("message:\n%s\ngot:\n%s\nwant:\n%s", tt.t, got, want) - } - got.Reset() - if err := proto.UnmarshalText(tt.c, got); err != nil { - t.Errorf("failed to unmarshal\n%s\nerror: %v", tt.c, err) - } - if !anyEqual(got, want) { - t.Errorf("message:\n%s\ngot:\n%s\nwant:\n%s", tt.c, got, want) - } - } -} - -func TestMarshalUnknownAny(t *testing.T) { - m := &pb.Message{ - Anything: &anypb.Any{ - TypeUrl: "foo", - Value: []byte("bar"), - }, - } - want := `anything: < - type_url: "foo" - value: "bar" -> -` - got := expandedMarshaler.Text(m) - if got != want { - t.Errorf("got\n`%s`\nwant\n`%s`", got, want) - } -} - -func TestAmbiguousAny(t *testing.T) { - pb := &anypb.Any{} - err := proto.UnmarshalText(` - type_url: "ttt/proto3_proto.Nested" - value: "\n\x05Monty" - `, pb) - t.Logf("result: %v (error: %v)", expandedMarshaler.Text(pb), err) - if err != nil { - t.Errorf("failed to parse ambiguous Any message: %v", err) - } -} - -func TestUnmarshalOverwriteAny(t *testing.T) { - pb := &anypb.Any{} - err := proto.UnmarshalText(` - [type.googleapis.com/a/path/proto3_proto.Nested]: < - bunny: "Monty" - > - [type.googleapis.com/a/path/proto3_proto.Nested]: < - bunny: "Rabbit of Caerbannog" - > - `, pb) - want := `line 7: Any message unpacked multiple times, or "type_url" already set` - if err.Error() != want { - t.Errorf("incorrect error.\nHave: %v\nWant: %v", err.Error(), want) - } -} - -func TestUnmarshalAnyMixAndMatch(t *testing.T) { - pb := &anypb.Any{} - err := proto.UnmarshalText(` - value: "\n\x05Monty" - [type.googleapis.com/a/path/proto3_proto.Nested]: < - bunny: "Rabbit of Caerbannog" - > - `, pb) - want := `line 5: Any message unpacked multiple times, or "value" already set` - if err.Error() != want { - t.Errorf("incorrect error.\nHave: %v\nWant: %v", err.Error(), want) - } -} diff --git a/vendor/github.com/golang/protobuf/proto/clone_test.go b/vendor/github.com/golang/protobuf/proto/clone_test.go deleted file mode 100644 index f607ff49..00000000 --- a/vendor/github.com/golang/protobuf/proto/clone_test.go +++ /dev/null @@ -1,300 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2011 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto_test - -import ( - "testing" - - "github.com/golang/protobuf/proto" - - proto3pb "github.com/golang/protobuf/proto/proto3_proto" - pb "github.com/golang/protobuf/proto/testdata" -) - -var cloneTestMessage = &pb.MyMessage{ - Count: proto.Int32(42), - Name: proto.String("Dave"), - Pet: []string{"bunny", "kitty", "horsey"}, - Inner: &pb.InnerMessage{ - Host: proto.String("niles"), - Port: proto.Int32(9099), - Connected: proto.Bool(true), - }, - Others: []*pb.OtherMessage{ - { - Value: []byte("some bytes"), - }, - }, - Somegroup: &pb.MyMessage_SomeGroup{ - GroupField: proto.Int32(6), - }, - RepBytes: [][]byte{[]byte("sham"), []byte("wow")}, -} - -func init() { - ext := &pb.Ext{ - Data: proto.String("extension"), - } - if err := proto.SetExtension(cloneTestMessage, pb.E_Ext_More, ext); err != nil { - panic("SetExtension: " + err.Error()) - } -} - -func TestClone(t *testing.T) { - m := proto.Clone(cloneTestMessage).(*pb.MyMessage) - if !proto.Equal(m, cloneTestMessage) { - t.Errorf("Clone(%v) = %v", cloneTestMessage, m) - } - - // Verify it was a deep copy. - *m.Inner.Port++ - if proto.Equal(m, cloneTestMessage) { - t.Error("Mutating clone changed the original") - } - // Byte fields and repeated fields should be copied. - if &m.Pet[0] == &cloneTestMessage.Pet[0] { - t.Error("Pet: repeated field not copied") - } - if &m.Others[0] == &cloneTestMessage.Others[0] { - t.Error("Others: repeated field not copied") - } - if &m.Others[0].Value[0] == &cloneTestMessage.Others[0].Value[0] { - t.Error("Others[0].Value: bytes field not copied") - } - if &m.RepBytes[0] == &cloneTestMessage.RepBytes[0] { - t.Error("RepBytes: repeated field not copied") - } - if &m.RepBytes[0][0] == &cloneTestMessage.RepBytes[0][0] { - t.Error("RepBytes[0]: bytes field not copied") - } -} - -func TestCloneNil(t *testing.T) { - var m *pb.MyMessage - if c := proto.Clone(m); !proto.Equal(m, c) { - t.Errorf("Clone(%v) = %v", m, c) - } -} - -var mergeTests = []struct { - src, dst, want proto.Message -}{ - { - src: &pb.MyMessage{ - Count: proto.Int32(42), - }, - dst: &pb.MyMessage{ - Name: proto.String("Dave"), - }, - want: &pb.MyMessage{ - Count: proto.Int32(42), - Name: proto.String("Dave"), - }, - }, - { - src: &pb.MyMessage{ - Inner: &pb.InnerMessage{ - Host: proto.String("hey"), - Connected: proto.Bool(true), - }, - Pet: []string{"horsey"}, - Others: []*pb.OtherMessage{ - { - Value: []byte("some bytes"), - }, - }, - }, - dst: &pb.MyMessage{ - Inner: &pb.InnerMessage{ - Host: proto.String("niles"), - Port: proto.Int32(9099), - }, - Pet: []string{"bunny", "kitty"}, - Others: []*pb.OtherMessage{ - { - Key: proto.Int64(31415926535), - }, - { - // Explicitly test a src=nil field - Inner: nil, - }, - }, - }, - want: &pb.MyMessage{ - Inner: &pb.InnerMessage{ - Host: proto.String("hey"), - Connected: proto.Bool(true), - Port: proto.Int32(9099), - }, - Pet: []string{"bunny", "kitty", "horsey"}, - Others: []*pb.OtherMessage{ - { - Key: proto.Int64(31415926535), - }, - {}, - { - Value: []byte("some bytes"), - }, - }, - }, - }, - { - src: &pb.MyMessage{ - RepBytes: [][]byte{[]byte("wow")}, - }, - dst: &pb.MyMessage{ - Somegroup: &pb.MyMessage_SomeGroup{ - GroupField: proto.Int32(6), - }, - RepBytes: [][]byte{[]byte("sham")}, - }, - want: &pb.MyMessage{ - Somegroup: &pb.MyMessage_SomeGroup{ - GroupField: proto.Int32(6), - }, - RepBytes: [][]byte{[]byte("sham"), []byte("wow")}, - }, - }, - // Check that a scalar bytes field replaces rather than appends. - { - src: &pb.OtherMessage{Value: []byte("foo")}, - dst: &pb.OtherMessage{Value: []byte("bar")}, - want: &pb.OtherMessage{Value: []byte("foo")}, - }, - { - src: &pb.MessageWithMap{ - NameMapping: map[int32]string{6: "Nigel"}, - MsgMapping: map[int64]*pb.FloatingPoint{ - 0x4001: &pb.FloatingPoint{F: proto.Float64(2.0)}, - 0x4002: &pb.FloatingPoint{ - F: proto.Float64(2.0), - }, - }, - ByteMapping: map[bool][]byte{true: []byte("wowsa")}, - }, - dst: &pb.MessageWithMap{ - NameMapping: map[int32]string{ - 6: "Bruce", // should be overwritten - 7: "Andrew", - }, - MsgMapping: map[int64]*pb.FloatingPoint{ - 0x4002: &pb.FloatingPoint{ - F: proto.Float64(3.0), - Exact: proto.Bool(true), - }, // the entire message should be overwritten - }, - }, - want: &pb.MessageWithMap{ - NameMapping: map[int32]string{ - 6: "Nigel", - 7: "Andrew", - }, - MsgMapping: map[int64]*pb.FloatingPoint{ - 0x4001: &pb.FloatingPoint{F: proto.Float64(2.0)}, - 0x4002: &pb.FloatingPoint{ - F: proto.Float64(2.0), - }, - }, - ByteMapping: map[bool][]byte{true: []byte("wowsa")}, - }, - }, - // proto3 shouldn't merge zero values, - // in the same way that proto2 shouldn't merge nils. - { - src: &proto3pb.Message{ - Name: "Aaron", - Data: []byte(""), // zero value, but not nil - }, - dst: &proto3pb.Message{ - HeightInCm: 176, - Data: []byte("texas!"), - }, - want: &proto3pb.Message{ - Name: "Aaron", - HeightInCm: 176, - Data: []byte("texas!"), - }, - }, - // Oneof fields should merge by assignment. - { - src: &pb.Communique{ - Union: &pb.Communique_Number{41}, - }, - dst: &pb.Communique{ - Union: &pb.Communique_Name{"Bobby Tables"}, - }, - want: &pb.Communique{ - Union: &pb.Communique_Number{41}, - }, - }, - // Oneof nil is the same as not set. - { - src: &pb.Communique{}, - dst: &pb.Communique{ - Union: &pb.Communique_Name{"Bobby Tables"}, - }, - want: &pb.Communique{ - Union: &pb.Communique_Name{"Bobby Tables"}, - }, - }, - { - src: &proto3pb.Message{ - Terrain: map[string]*proto3pb.Nested{ - "kay_a": &proto3pb.Nested{Cute: true}, // replace - "kay_b": &proto3pb.Nested{Bunny: "rabbit"}, // insert - }, - }, - dst: &proto3pb.Message{ - Terrain: map[string]*proto3pb.Nested{ - "kay_a": &proto3pb.Nested{Bunny: "lost"}, // replaced - "kay_c": &proto3pb.Nested{Bunny: "bunny"}, // keep - }, - }, - want: &proto3pb.Message{ - Terrain: map[string]*proto3pb.Nested{ - "kay_a": &proto3pb.Nested{Cute: true}, - "kay_b": &proto3pb.Nested{Bunny: "rabbit"}, - "kay_c": &proto3pb.Nested{Bunny: "bunny"}, - }, - }, - }, -} - -func TestMerge(t *testing.T) { - for _, m := range mergeTests { - got := proto.Clone(m.dst) - proto.Merge(got, m.src) - if !proto.Equal(got, m.want) { - t.Errorf("Merge(%v, %v)\n got %v\nwant %v\n", m.dst, m.src, got, m.want) - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/decode_test.go b/vendor/github.com/golang/protobuf/proto/decode_test.go deleted file mode 100644 index 2c4c31d1..00000000 --- a/vendor/github.com/golang/protobuf/proto/decode_test.go +++ /dev/null @@ -1,258 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// +build go1.7 - -package proto_test - -import ( - "fmt" - "testing" - - "github.com/golang/protobuf/proto" - tpb "github.com/golang/protobuf/proto/proto3_proto" -) - -var ( - bytesBlackhole []byte - msgBlackhole = new(tpb.Message) -) - -// BenchmarkVarint32ArraySmall shows the performance on an array of small int32 fields (1 and -// 2 bytes long). -func BenchmarkVarint32ArraySmall(b *testing.B) { - for i := uint(1); i <= 10; i++ { - dist := genInt32Dist([7]int{0, 3, 1}, 1<unmarshal. -} - -func TestMarshalUnmarshalRepeatedExtension(t *testing.T) { - // Add a repeated extension to the result. - tests := []struct { - name string - ext []*pb.ComplexExtension - }{ - { - "two fields", - []*pb.ComplexExtension{ - {First: proto.Int32(7)}, - {Second: proto.Int32(11)}, - }, - }, - { - "repeated field", - []*pb.ComplexExtension{ - {Third: []int32{1000}}, - {Third: []int32{2000}}, - }, - }, - { - "two fields and repeated field", - []*pb.ComplexExtension{ - {Third: []int32{1000}}, - {First: proto.Int32(9)}, - {Second: proto.Int32(21)}, - {Third: []int32{2000}}, - }, - }, - } - for _, test := range tests { - // Marshal message with a repeated extension. - msg1 := new(pb.OtherMessage) - err := proto.SetExtension(msg1, pb.E_RComplex, test.ext) - if err != nil { - t.Fatalf("[%s] Error setting extension: %v", test.name, err) - } - b, err := proto.Marshal(msg1) - if err != nil { - t.Fatalf("[%s] Error marshaling message: %v", test.name, err) - } - - // Unmarshal and read the merged proto. - msg2 := new(pb.OtherMessage) - err = proto.Unmarshal(b, msg2) - if err != nil { - t.Fatalf("[%s] Error unmarshaling message: %v", test.name, err) - } - e, err := proto.GetExtension(msg2, pb.E_RComplex) - if err != nil { - t.Fatalf("[%s] Error getting extension: %v", test.name, err) - } - ext := e.([]*pb.ComplexExtension) - if ext == nil { - t.Fatalf("[%s] Invalid extension", test.name) - } - if !reflect.DeepEqual(ext, test.ext) { - t.Errorf("[%s] Wrong value for ComplexExtension: got: %v want: %v\n", test.name, ext, test.ext) - } - } -} - -func TestUnmarshalRepeatingNonRepeatedExtension(t *testing.T) { - // We may see multiple instances of the same extension in the wire - // format. For example, the proto compiler may encode custom options in - // this way. Here, we verify that we merge the extensions together. - tests := []struct { - name string - ext []*pb.ComplexExtension - }{ - { - "two fields", - []*pb.ComplexExtension{ - {First: proto.Int32(7)}, - {Second: proto.Int32(11)}, - }, - }, - { - "repeated field", - []*pb.ComplexExtension{ - {Third: []int32{1000}}, - {Third: []int32{2000}}, - }, - }, - { - "two fields and repeated field", - []*pb.ComplexExtension{ - {Third: []int32{1000}}, - {First: proto.Int32(9)}, - {Second: proto.Int32(21)}, - {Third: []int32{2000}}, - }, - }, - } - for _, test := range tests { - var buf bytes.Buffer - var want pb.ComplexExtension - - // Generate a serialized representation of a repeated extension - // by catenating bytes together. - for i, e := range test.ext { - // Merge to create the wanted proto. - proto.Merge(&want, e) - - // serialize the message - msg := new(pb.OtherMessage) - err := proto.SetExtension(msg, pb.E_Complex, e) - if err != nil { - t.Fatalf("[%s] Error setting extension %d: %v", test.name, i, err) - } - b, err := proto.Marshal(msg) - if err != nil { - t.Fatalf("[%s] Error marshaling message %d: %v", test.name, i, err) - } - buf.Write(b) - } - - // Unmarshal and read the merged proto. - msg2 := new(pb.OtherMessage) - err := proto.Unmarshal(buf.Bytes(), msg2) - if err != nil { - t.Fatalf("[%s] Error unmarshaling message: %v", test.name, err) - } - e, err := proto.GetExtension(msg2, pb.E_Complex) - if err != nil { - t.Fatalf("[%s] Error getting extension: %v", test.name, err) - } - ext := e.(*pb.ComplexExtension) - if ext == nil { - t.Fatalf("[%s] Invalid extension", test.name) - } - if !reflect.DeepEqual(*ext, want) { - t.Errorf("[%s] Wrong value for ComplexExtension: got: %s want: %s\n", test.name, ext, want) - } - } -} - -func TestClearAllExtensions(t *testing.T) { - // unregistered extension - desc := &proto.ExtensionDesc{ - ExtendedType: (*pb.MyMessage)(nil), - ExtensionType: (*bool)(nil), - Field: 101010100, - Name: "emptyextension", - Tag: "varint,0,opt", - } - m := &pb.MyMessage{} - if proto.HasExtension(m, desc) { - t.Errorf("proto.HasExtension(%s): got true, want false", proto.MarshalTextString(m)) - } - if err := proto.SetExtension(m, desc, proto.Bool(true)); err != nil { - t.Errorf("proto.SetExtension(m, desc, true): got error %q, want nil", err) - } - if !proto.HasExtension(m, desc) { - t.Errorf("proto.HasExtension(%s): got false, want true", proto.MarshalTextString(m)) - } - proto.ClearAllExtensions(m) - if proto.HasExtension(m, desc) { - t.Errorf("proto.HasExtension(%s): got true, want false", proto.MarshalTextString(m)) - } -} - -func TestMarshalRace(t *testing.T) { - // unregistered extension - desc := &proto.ExtensionDesc{ - ExtendedType: (*pb.MyMessage)(nil), - ExtensionType: (*bool)(nil), - Field: 101010100, - Name: "emptyextension", - Tag: "varint,0,opt", - } - - m := &pb.MyMessage{Count: proto.Int32(4)} - if err := proto.SetExtension(m, desc, proto.Bool(true)); err != nil { - t.Errorf("proto.SetExtension(m, desc, true): got error %q, want nil", err) - } - - var g errgroup.Group - for n := 3; n > 0; n-- { - g.Go(func() error { - _, err := proto.Marshal(m) - return err - }) - } - if err := g.Wait(); err != nil { - t.Fatal(err) - } -} diff --git a/vendor/github.com/golang/protobuf/proto/map_test.go b/vendor/github.com/golang/protobuf/proto/map_test.go deleted file mode 100644 index 313e8792..00000000 --- a/vendor/github.com/golang/protobuf/proto/map_test.go +++ /dev/null @@ -1,46 +0,0 @@ -package proto_test - -import ( - "fmt" - "testing" - - "github.com/golang/protobuf/proto" - ppb "github.com/golang/protobuf/proto/proto3_proto" -) - -func marshalled() []byte { - m := &ppb.IntMaps{} - for i := 0; i < 1000; i++ { - m.Maps = append(m.Maps, &ppb.IntMap{ - Rtt: map[int32]int32{1: 2}, - }) - } - b, err := proto.Marshal(m) - if err != nil { - panic(fmt.Sprintf("Can't marshal %+v: %v", m, err)) - } - return b -} - -func BenchmarkConcurrentMapUnmarshal(b *testing.B) { - in := marshalled() - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - var out ppb.IntMaps - if err := proto.Unmarshal(in, &out); err != nil { - b.Errorf("Can't unmarshal ppb.IntMaps: %v", err) - } - } - }) -} - -func BenchmarkSequentialMapUnmarshal(b *testing.B) { - in := marshalled() - b.ResetTimer() - for i := 0; i < b.N; i++ { - var out ppb.IntMaps - if err := proto.Unmarshal(in, &out); err != nil { - b.Errorf("Can't unmarshal ppb.IntMaps: %v", err) - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/message_set_test.go b/vendor/github.com/golang/protobuf/proto/message_set_test.go deleted file mode 100644 index 353a3ea7..00000000 --- a/vendor/github.com/golang/protobuf/proto/message_set_test.go +++ /dev/null @@ -1,66 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2014 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "bytes" - "testing" -) - -func TestUnmarshalMessageSetWithDuplicate(t *testing.T) { - // Check that a repeated message set entry will be concatenated. - in := &messageSet{ - Item: []*_MessageSet_Item{ - {TypeId: Int32(12345), Message: []byte("hoo")}, - {TypeId: Int32(12345), Message: []byte("hah")}, - }, - } - b, err := Marshal(in) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - t.Logf("Marshaled bytes: %q", b) - - var extensions XXX_InternalExtensions - if err := UnmarshalMessageSet(b, &extensions); err != nil { - t.Fatalf("UnmarshalMessageSet: %v", err) - } - ext, ok := extensions.p.extensionMap[12345] - if !ok { - t.Fatalf("Didn't retrieve extension 12345; map is %v", extensions.p.extensionMap) - } - // Skip wire type/field number and length varints. - got := skipVarint(skipVarint(ext.enc)) - if want := []byte("hoohah"); !bytes.Equal(got, want) { - t.Errorf("Combined extension is %q, want %q", got, want) - } -} diff --git a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go deleted file mode 100644 index cc4d0489..00000000 --- a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.pb.go +++ /dev/null @@ -1,347 +0,0 @@ -// Code generated by protoc-gen-go. -// source: proto3_proto/proto3.proto -// DO NOT EDIT! - -/* -Package proto3_proto is a generated protocol buffer package. - -It is generated from these files: - proto3_proto/proto3.proto - -It has these top-level messages: - Message - Nested - MessageWithMap - IntMap - IntMaps -*/ -package proto3_proto - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/any" -import testdata "github.com/golang/protobuf/proto/testdata" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type Message_Humour int32 - -const ( - Message_UNKNOWN Message_Humour = 0 - Message_PUNS Message_Humour = 1 - Message_SLAPSTICK Message_Humour = 2 - Message_BILL_BAILEY Message_Humour = 3 -) - -var Message_Humour_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PUNS", - 2: "SLAPSTICK", - 3: "BILL_BAILEY", -} -var Message_Humour_value = map[string]int32{ - "UNKNOWN": 0, - "PUNS": 1, - "SLAPSTICK": 2, - "BILL_BAILEY": 3, -} - -func (x Message_Humour) String() string { - return proto.EnumName(Message_Humour_name, int32(x)) -} -func (Message_Humour) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -type Message struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Hilarity Message_Humour `protobuf:"varint,2,opt,name=hilarity,enum=proto3_proto.Message_Humour" json:"hilarity,omitempty"` - HeightInCm uint32 `protobuf:"varint,3,opt,name=height_in_cm,json=heightInCm" json:"height_in_cm,omitempty"` - Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` - ResultCount int64 `protobuf:"varint,7,opt,name=result_count,json=resultCount" json:"result_count,omitempty"` - TrueScotsman bool `protobuf:"varint,8,opt,name=true_scotsman,json=trueScotsman" json:"true_scotsman,omitempty"` - Score float32 `protobuf:"fixed32,9,opt,name=score" json:"score,omitempty"` - Key []uint64 `protobuf:"varint,5,rep,packed,name=key" json:"key,omitempty"` - ShortKey []int32 `protobuf:"varint,19,rep,packed,name=short_key,json=shortKey" json:"short_key,omitempty"` - Nested *Nested `protobuf:"bytes,6,opt,name=nested" json:"nested,omitempty"` - RFunny []Message_Humour `protobuf:"varint,16,rep,packed,name=r_funny,json=rFunny,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"` - Terrain map[string]*Nested `protobuf:"bytes,10,rep,name=terrain" json:"terrain,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Proto2Field *testdata.SubDefaults `protobuf:"bytes,11,opt,name=proto2_field,json=proto2Field" json:"proto2_field,omitempty"` - Proto2Value map[string]*testdata.SubDefaults `protobuf:"bytes,13,rep,name=proto2_value,json=proto2Value" json:"proto2_value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Anything *google_protobuf.Any `protobuf:"bytes,14,opt,name=anything" json:"anything,omitempty"` - ManyThings []*google_protobuf.Any `protobuf:"bytes,15,rep,name=many_things,json=manyThings" json:"many_things,omitempty"` - Submessage *Message `protobuf:"bytes,17,opt,name=submessage" json:"submessage,omitempty"` - Children []*Message `protobuf:"bytes,18,rep,name=children" json:"children,omitempty"` -} - -func (m *Message) Reset() { *m = Message{} } -func (m *Message) String() string { return proto.CompactTextString(m) } -func (*Message) ProtoMessage() {} -func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Message) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Message) GetHilarity() Message_Humour { - if m != nil { - return m.Hilarity - } - return Message_UNKNOWN -} - -func (m *Message) GetHeightInCm() uint32 { - if m != nil { - return m.HeightInCm - } - return 0 -} - -func (m *Message) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -func (m *Message) GetResultCount() int64 { - if m != nil { - return m.ResultCount - } - return 0 -} - -func (m *Message) GetTrueScotsman() bool { - if m != nil { - return m.TrueScotsman - } - return false -} - -func (m *Message) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *Message) GetKey() []uint64 { - if m != nil { - return m.Key - } - return nil -} - -func (m *Message) GetShortKey() []int32 { - if m != nil { - return m.ShortKey - } - return nil -} - -func (m *Message) GetNested() *Nested { - if m != nil { - return m.Nested - } - return nil -} - -func (m *Message) GetRFunny() []Message_Humour { - if m != nil { - return m.RFunny - } - return nil -} - -func (m *Message) GetTerrain() map[string]*Nested { - if m != nil { - return m.Terrain - } - return nil -} - -func (m *Message) GetProto2Field() *testdata.SubDefaults { - if m != nil { - return m.Proto2Field - } - return nil -} - -func (m *Message) GetProto2Value() map[string]*testdata.SubDefaults { - if m != nil { - return m.Proto2Value - } - return nil -} - -func (m *Message) GetAnything() *google_protobuf.Any { - if m != nil { - return m.Anything - } - return nil -} - -func (m *Message) GetManyThings() []*google_protobuf.Any { - if m != nil { - return m.ManyThings - } - return nil -} - -func (m *Message) GetSubmessage() *Message { - if m != nil { - return m.Submessage - } - return nil -} - -func (m *Message) GetChildren() []*Message { - if m != nil { - return m.Children - } - return nil -} - -type Nested struct { - Bunny string `protobuf:"bytes,1,opt,name=bunny" json:"bunny,omitempty"` - Cute bool `protobuf:"varint,2,opt,name=cute" json:"cute,omitempty"` -} - -func (m *Nested) Reset() { *m = Nested{} } -func (m *Nested) String() string { return proto.CompactTextString(m) } -func (*Nested) ProtoMessage() {} -func (*Nested) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Nested) GetBunny() string { - if m != nil { - return m.Bunny - } - return "" -} - -func (m *Nested) GetCute() bool { - if m != nil { - return m.Cute - } - return false -} - -type MessageWithMap struct { - ByteMapping map[bool][]byte `protobuf:"bytes,1,rep,name=byte_mapping,json=byteMapping" json:"byte_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (m *MessageWithMap) Reset() { *m = MessageWithMap{} } -func (m *MessageWithMap) String() string { return proto.CompactTextString(m) } -func (*MessageWithMap) ProtoMessage() {} -func (*MessageWithMap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *MessageWithMap) GetByteMapping() map[bool][]byte { - if m != nil { - return m.ByteMapping - } - return nil -} - -type IntMap struct { - Rtt map[int32]int32 `protobuf:"bytes,1,rep,name=rtt" json:"rtt,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` -} - -func (m *IntMap) Reset() { *m = IntMap{} } -func (m *IntMap) String() string { return proto.CompactTextString(m) } -func (*IntMap) ProtoMessage() {} -func (*IntMap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *IntMap) GetRtt() map[int32]int32 { - if m != nil { - return m.Rtt - } - return nil -} - -type IntMaps struct { - Maps []*IntMap `protobuf:"bytes,1,rep,name=maps" json:"maps,omitempty"` -} - -func (m *IntMaps) Reset() { *m = IntMaps{} } -func (m *IntMaps) String() string { return proto.CompactTextString(m) } -func (*IntMaps) ProtoMessage() {} -func (*IntMaps) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *IntMaps) GetMaps() []*IntMap { - if m != nil { - return m.Maps - } - return nil -} - -func init() { - proto.RegisterType((*Message)(nil), "proto3_proto.Message") - proto.RegisterType((*Nested)(nil), "proto3_proto.Nested") - proto.RegisterType((*MessageWithMap)(nil), "proto3_proto.MessageWithMap") - proto.RegisterType((*IntMap)(nil), "proto3_proto.IntMap") - proto.RegisterType((*IntMaps)(nil), "proto3_proto.IntMaps") - proto.RegisterEnum("proto3_proto.Message_Humour", Message_Humour_name, Message_Humour_value) -} - -func init() { proto.RegisterFile("proto3_proto/proto3.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 733 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x53, 0x6d, 0x6f, 0xf3, 0x34, - 0x14, 0x25, 0x4d, 0x5f, 0xd2, 0x9b, 0x74, 0x0b, 0x5e, 0x91, 0xbc, 0x02, 0x52, 0x28, 0x12, 0x8a, - 0x78, 0x49, 0xa1, 0xd3, 0xd0, 0x84, 0x10, 0x68, 0x1b, 0x9b, 0xa8, 0xd6, 0x95, 0xca, 0xdd, 0x98, - 0xf8, 0x14, 0xa5, 0xad, 0xdb, 0x46, 0x34, 0x4e, 0x49, 0x1c, 0xa4, 0xfc, 0x1d, 0xfe, 0x28, 0x8f, - 0x6c, 0xa7, 0x5d, 0x36, 0x65, 0xcf, 0xf3, 0x29, 0xf6, 0xf1, 0xb9, 0xf7, 0x9c, 0x1c, 0x5f, 0xc3, - 0xe9, 0x2e, 0x89, 0x79, 0x7c, 0xe6, 0xcb, 0xcf, 0x40, 0x6d, 0x3c, 0xf9, 0x41, 0x56, 0xf9, 0xa8, - 0x77, 0xba, 0x8e, 0xe3, 0xf5, 0x96, 0x2a, 0xca, 0x3c, 0x5b, 0x0d, 0x02, 0x96, 0x2b, 0x62, 0xef, - 0x84, 0xd3, 0x94, 0x2f, 0x03, 0x1e, 0x0c, 0xc4, 0x42, 0x81, 0xfd, 0xff, 0x5b, 0xd0, 0xba, 0xa7, - 0x69, 0x1a, 0xac, 0x29, 0x42, 0x50, 0x67, 0x41, 0x44, 0xb1, 0xe6, 0x68, 0x6e, 0x9b, 0xc8, 0x35, - 0xba, 0x00, 0x63, 0x13, 0x6e, 0x83, 0x24, 0xe4, 0x39, 0xae, 0x39, 0x9a, 0x7b, 0x34, 0xfc, 0xcc, - 0x2b, 0x0b, 0x7a, 0x45, 0xb1, 0xf7, 0x7b, 0x16, 0xc5, 0x59, 0x42, 0x0e, 0x6c, 0xe4, 0x80, 0xb5, - 0xa1, 0xe1, 0x7a, 0xc3, 0xfd, 0x90, 0xf9, 0x8b, 0x08, 0xeb, 0x8e, 0xe6, 0x76, 0x08, 0x28, 0x6c, - 0xc4, 0xae, 0x23, 0xa1, 0x27, 0xec, 0xe0, 0xba, 0xa3, 0xb9, 0x16, 0x91, 0x6b, 0xf4, 0x05, 0x58, - 0x09, 0x4d, 0xb3, 0x2d, 0xf7, 0x17, 0x71, 0xc6, 0x38, 0x6e, 0x39, 0x9a, 0xab, 0x13, 0x53, 0x61, - 0xd7, 0x02, 0x42, 0x5f, 0x42, 0x87, 0x27, 0x19, 0xf5, 0xd3, 0x45, 0xcc, 0xd3, 0x28, 0x60, 0xd8, - 0x70, 0x34, 0xd7, 0x20, 0x96, 0x00, 0x67, 0x05, 0x86, 0xba, 0xd0, 0x48, 0x17, 0x71, 0x42, 0x71, - 0xdb, 0xd1, 0xdc, 0x1a, 0x51, 0x1b, 0x64, 0x83, 0xfe, 0x37, 0xcd, 0x71, 0xc3, 0xd1, 0xdd, 0x3a, - 0x11, 0x4b, 0xf4, 0x29, 0xb4, 0xd3, 0x4d, 0x9c, 0x70, 0x5f, 0xe0, 0x27, 0x8e, 0xee, 0x36, 0x88, - 0x21, 0x81, 0x3b, 0x9a, 0xa3, 0x6f, 0xa1, 0xc9, 0x68, 0xca, 0xe9, 0x12, 0x37, 0x1d, 0xcd, 0x35, - 0x87, 0xdd, 0x97, 0xbf, 0x3e, 0x91, 0x67, 0xa4, 0xe0, 0xa0, 0x73, 0x68, 0x25, 0xfe, 0x2a, 0x63, - 0x2c, 0xc7, 0xb6, 0xa3, 0x7f, 0x30, 0xa9, 0x66, 0x72, 0x2b, 0xb8, 0xe8, 0x67, 0x68, 0x71, 0x9a, - 0x24, 0x41, 0xc8, 0x30, 0x38, 0xba, 0x6b, 0x0e, 0xfb, 0xd5, 0x65, 0x0f, 0x8a, 0x74, 0xc3, 0x78, - 0x92, 0x93, 0x7d, 0x09, 0xba, 0x00, 0x75, 0xff, 0x43, 0x7f, 0x15, 0xd2, 0xed, 0x12, 0x9b, 0xd2, - 0xe8, 0x27, 0xde, 0xfe, 0xae, 0xbd, 0x59, 0x36, 0xff, 0x8d, 0xae, 0x82, 0x6c, 0xcb, 0x53, 0x62, - 0x2a, 0xea, 0xad, 0x60, 0xa2, 0xd1, 0xa1, 0xf2, 0xdf, 0x60, 0x9b, 0x51, 0xdc, 0x91, 0xe2, 0x5f, - 0x55, 0x8b, 0x4f, 0x25, 0xf3, 0x4f, 0x41, 0x54, 0x06, 0x8a, 0x56, 0x12, 0x41, 0xdf, 0x83, 0x11, - 0xb0, 0x9c, 0x6f, 0x42, 0xb6, 0xc6, 0x47, 0x45, 0x52, 0x6a, 0x0e, 0xbd, 0xfd, 0x1c, 0x7a, 0x97, - 0x2c, 0x27, 0x07, 0x16, 0x3a, 0x07, 0x33, 0x0a, 0x58, 0xee, 0xcb, 0x5d, 0x8a, 0x8f, 0xa5, 0x76, - 0x75, 0x11, 0x08, 0xe2, 0x83, 0xe4, 0xa1, 0x73, 0x80, 0x34, 0x9b, 0x47, 0xca, 0x14, 0xfe, 0xb8, - 0xf8, 0xd7, 0x2a, 0xc7, 0xa4, 0x44, 0x44, 0x3f, 0x80, 0xb1, 0xd8, 0x84, 0xdb, 0x65, 0x42, 0x19, - 0x46, 0x52, 0xea, 0x8d, 0xa2, 0x03, 0xad, 0x37, 0x05, 0xab, 0x1c, 0xf8, 0x7e, 0x72, 0xd4, 0xd3, - 0x90, 0x93, 0xf3, 0x35, 0x34, 0x54, 0x70, 0xb5, 0xf7, 0xcc, 0x86, 0xa2, 0xfc, 0x54, 0xbb, 0xd0, - 0x7a, 0x8f, 0x60, 0xbf, 0x4e, 0xb1, 0xa2, 0xeb, 0x37, 0x2f, 0xbb, 0xbe, 0x71, 0x91, 0xcf, 0x6d, - 0xfb, 0xbf, 0x42, 0x53, 0x0d, 0x14, 0x32, 0xa1, 0xf5, 0x38, 0xb9, 0x9b, 0xfc, 0xf1, 0x34, 0xb1, - 0x3f, 0x42, 0x06, 0xd4, 0xa7, 0x8f, 0x93, 0x99, 0xad, 0xa1, 0x0e, 0xb4, 0x67, 0xe3, 0xcb, 0xe9, - 0xec, 0x61, 0x74, 0x7d, 0x67, 0xd7, 0xd0, 0x31, 0x98, 0x57, 0xa3, 0xf1, 0xd8, 0xbf, 0xba, 0x1c, - 0x8d, 0x6f, 0xfe, 0xb2, 0xf5, 0xfe, 0x10, 0x9a, 0xca, 0xac, 0x78, 0x33, 0x73, 0x39, 0xbe, 0xca, - 0x8f, 0xda, 0x88, 0x57, 0xba, 0xc8, 0xb8, 0x32, 0x64, 0x10, 0xb9, 0xee, 0xff, 0xa7, 0xc1, 0x51, - 0x91, 0xd9, 0x53, 0xc8, 0x37, 0xf7, 0xc1, 0x0e, 0x4d, 0xc1, 0x9a, 0xe7, 0x9c, 0xfa, 0x51, 0xb0, - 0xdb, 0x89, 0x39, 0xd0, 0x64, 0xce, 0xdf, 0x55, 0xe6, 0x5c, 0xd4, 0x78, 0x57, 0x39, 0xa7, 0xf7, - 0x8a, 0x5f, 0x4c, 0xd5, 0xfc, 0x19, 0xe9, 0xfd, 0x02, 0xf6, 0x6b, 0x42, 0x39, 0x30, 0x43, 0x05, - 0xd6, 0x2d, 0x07, 0x66, 0x95, 0x93, 0xf9, 0x07, 0x9a, 0x23, 0xc6, 0x85, 0xb7, 0x01, 0xe8, 0x09, - 0xe7, 0x85, 0xa5, 0xcf, 0x5f, 0x5a, 0x52, 0x14, 0x8f, 0x70, 0xae, 0x2c, 0x08, 0x66, 0xef, 0x47, - 0x30, 0xf6, 0x40, 0x59, 0xb2, 0x51, 0x21, 0xd9, 0x28, 0x4b, 0x9e, 0x41, 0x4b, 0xf5, 0x4b, 0x91, - 0x0b, 0xf5, 0x28, 0xd8, 0xa5, 0x85, 0x68, 0xb7, 0x4a, 0x94, 0x48, 0xc6, 0xbc, 0xa9, 0x8e, 0xde, - 0x05, 0x00, 0x00, 0xff, 0xff, 0x75, 0x38, 0xad, 0x84, 0xe4, 0x05, 0x00, 0x00, -} diff --git a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto b/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto deleted file mode 100644 index 20486557..00000000 --- a/vendor/github.com/golang/protobuf/proto/proto3_proto/proto3.proto +++ /dev/null @@ -1,87 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2014 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -import "google/protobuf/any.proto"; -import "testdata/test.proto"; - -package proto3_proto; - -message Message { - enum Humour { - UNKNOWN = 0; - PUNS = 1; - SLAPSTICK = 2; - BILL_BAILEY = 3; - } - - string name = 1; - Humour hilarity = 2; - uint32 height_in_cm = 3; - bytes data = 4; - int64 result_count = 7; - bool true_scotsman = 8; - float score = 9; - - repeated uint64 key = 5; - repeated int32 short_key = 19; - Nested nested = 6; - repeated Humour r_funny = 16; - - map terrain = 10; - testdata.SubDefaults proto2_field = 11; - map proto2_value = 13; - - google.protobuf.Any anything = 14; - repeated google.protobuf.Any many_things = 15; - - Message submessage = 17; - repeated Message children = 18; -} - -message Nested { - string bunny = 1; - bool cute = 2; -} - -message MessageWithMap { - map byte_mapping = 1; -} - - -message IntMap { - map rtt = 1; -} - -message IntMaps { - repeated IntMap maps = 1; -} diff --git a/vendor/github.com/golang/protobuf/proto/proto3_test.go b/vendor/github.com/golang/protobuf/proto/proto3_test.go deleted file mode 100644 index 735837f2..00000000 --- a/vendor/github.com/golang/protobuf/proto/proto3_test.go +++ /dev/null @@ -1,135 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2014 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto_test - -import ( - "testing" - - "github.com/golang/protobuf/proto" - pb "github.com/golang/protobuf/proto/proto3_proto" - tpb "github.com/golang/protobuf/proto/testdata" -) - -func TestProto3ZeroValues(t *testing.T) { - tests := []struct { - desc string - m proto.Message - }{ - {"zero message", &pb.Message{}}, - {"empty bytes field", &pb.Message{Data: []byte{}}}, - } - for _, test := range tests { - b, err := proto.Marshal(test.m) - if err != nil { - t.Errorf("%s: proto.Marshal: %v", test.desc, err) - continue - } - if len(b) > 0 { - t.Errorf("%s: Encoding is non-empty: %q", test.desc, b) - } - } -} - -func TestRoundTripProto3(t *testing.T) { - m := &pb.Message{ - Name: "David", // (2 | 1<<3): 0x0a 0x05 "David" - Hilarity: pb.Message_PUNS, // (0 | 2<<3): 0x10 0x01 - HeightInCm: 178, // (0 | 3<<3): 0x18 0xb2 0x01 - Data: []byte("roboto"), // (2 | 4<<3): 0x20 0x06 "roboto" - ResultCount: 47, // (0 | 7<<3): 0x38 0x2f - TrueScotsman: true, // (0 | 8<<3): 0x40 0x01 - Score: 8.1, // (5 | 9<<3): 0x4d <8.1> - - Key: []uint64{1, 0xdeadbeef}, - Nested: &pb.Nested{ - Bunny: "Monty", - }, - } - t.Logf(" m: %v", m) - - b, err := proto.Marshal(m) - if err != nil { - t.Fatalf("proto.Marshal: %v", err) - } - t.Logf(" b: %q", b) - - m2 := new(pb.Message) - if err := proto.Unmarshal(b, m2); err != nil { - t.Fatalf("proto.Unmarshal: %v", err) - } - t.Logf("m2: %v", m2) - - if !proto.Equal(m, m2) { - t.Errorf("proto.Equal returned false:\n m: %v\nm2: %v", m, m2) - } -} - -func TestGettersForBasicTypesExist(t *testing.T) { - var m pb.Message - if got := m.GetNested().GetBunny(); got != "" { - t.Errorf("m.GetNested().GetBunny() = %q, want empty string", got) - } - if got := m.GetNested().GetCute(); got { - t.Errorf("m.GetNested().GetCute() = %t, want false", got) - } -} - -func TestProto3SetDefaults(t *testing.T) { - in := &pb.Message{ - Terrain: map[string]*pb.Nested{ - "meadow": new(pb.Nested), - }, - Proto2Field: new(tpb.SubDefaults), - Proto2Value: map[string]*tpb.SubDefaults{ - "badlands": new(tpb.SubDefaults), - }, - } - - got := proto.Clone(in).(*pb.Message) - proto.SetDefaults(got) - - // There are no defaults in proto3. Everything should be the zero value, but - // we need to remember to set defaults for nested proto2 messages. - want := &pb.Message{ - Terrain: map[string]*pb.Nested{ - "meadow": new(pb.Nested), - }, - Proto2Field: &tpb.SubDefaults{N: proto.Int64(7)}, - Proto2Value: map[string]*tpb.SubDefaults{ - "badlands": &tpb.SubDefaults{N: proto.Int64(7)}, - }, - } - - if !proto.Equal(got, want) { - t.Errorf("with in = %v\nproto.SetDefaults(in) =>\ngot %v\nwant %v", in, got, want) - } -} diff --git a/vendor/github.com/golang/protobuf/proto/size2_test.go b/vendor/github.com/golang/protobuf/proto/size2_test.go deleted file mode 100644 index a2729c39..00000000 --- a/vendor/github.com/golang/protobuf/proto/size2_test.go +++ /dev/null @@ -1,63 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2012 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto - -import ( - "testing" -) - -// This is a separate file and package from size_test.go because that one uses -// generated messages and thus may not be in package proto without having a circular -// dependency, whereas this file tests unexported details of size.go. - -func TestVarintSize(t *testing.T) { - // Check the edge cases carefully. - testCases := []struct { - n uint64 - size int - }{ - {0, 1}, - {1, 1}, - {127, 1}, - {128, 2}, - {16383, 2}, - {16384, 3}, - {1<<63 - 1, 9}, - {1 << 63, 10}, - } - for _, tc := range testCases { - size := sizeVarint(tc.n) - if size != tc.size { - t.Errorf("sizeVarint(%d) = %d, want %d", tc.n, size, tc.size) - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/size_test.go b/vendor/github.com/golang/protobuf/proto/size_test.go deleted file mode 100644 index af1034dc..00000000 --- a/vendor/github.com/golang/protobuf/proto/size_test.go +++ /dev/null @@ -1,164 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2012 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto_test - -import ( - "log" - "strings" - "testing" - - . "github.com/golang/protobuf/proto" - proto3pb "github.com/golang/protobuf/proto/proto3_proto" - pb "github.com/golang/protobuf/proto/testdata" -) - -var messageWithExtension1 = &pb.MyMessage{Count: Int32(7)} - -// messageWithExtension2 is in equal_test.go. -var messageWithExtension3 = &pb.MyMessage{Count: Int32(8)} - -func init() { - if err := SetExtension(messageWithExtension1, pb.E_Ext_More, &pb.Ext{Data: String("Abbott")}); err != nil { - log.Panicf("SetExtension: %v", err) - } - if err := SetExtension(messageWithExtension3, pb.E_Ext_More, &pb.Ext{Data: String("Costello")}); err != nil { - log.Panicf("SetExtension: %v", err) - } - - // Force messageWithExtension3 to have the extension encoded. - Marshal(messageWithExtension3) - -} - -var SizeTests = []struct { - desc string - pb Message -}{ - {"empty", &pb.OtherMessage{}}, - // Basic types. - {"bool", &pb.Defaults{F_Bool: Bool(true)}}, - {"int32", &pb.Defaults{F_Int32: Int32(12)}}, - {"negative int32", &pb.Defaults{F_Int32: Int32(-1)}}, - {"small int64", &pb.Defaults{F_Int64: Int64(1)}}, - {"big int64", &pb.Defaults{F_Int64: Int64(1 << 20)}}, - {"negative int64", &pb.Defaults{F_Int64: Int64(-1)}}, - {"fixed32", &pb.Defaults{F_Fixed32: Uint32(71)}}, - {"fixed64", &pb.Defaults{F_Fixed64: Uint64(72)}}, - {"uint32", &pb.Defaults{F_Uint32: Uint32(123)}}, - {"uint64", &pb.Defaults{F_Uint64: Uint64(124)}}, - {"float", &pb.Defaults{F_Float: Float32(12.6)}}, - {"double", &pb.Defaults{F_Double: Float64(13.9)}}, - {"string", &pb.Defaults{F_String: String("niles")}}, - {"bytes", &pb.Defaults{F_Bytes: []byte("wowsa")}}, - {"bytes, empty", &pb.Defaults{F_Bytes: []byte{}}}, - {"sint32", &pb.Defaults{F_Sint32: Int32(65)}}, - {"sint64", &pb.Defaults{F_Sint64: Int64(67)}}, - {"enum", &pb.Defaults{F_Enum: pb.Defaults_BLUE.Enum()}}, - // Repeated. - {"empty repeated bool", &pb.MoreRepeated{Bools: []bool{}}}, - {"repeated bool", &pb.MoreRepeated{Bools: []bool{false, true, true, false}}}, - {"packed repeated bool", &pb.MoreRepeated{BoolsPacked: []bool{false, true, true, false, true, true, true}}}, - {"repeated int32", &pb.MoreRepeated{Ints: []int32{1, 12203, 1729, -1}}}, - {"repeated int32 packed", &pb.MoreRepeated{IntsPacked: []int32{1, 12203, 1729}}}, - {"repeated int64 packed", &pb.MoreRepeated{Int64SPacked: []int64{ - // Need enough large numbers to verify that the header is counting the number of bytes - // for the field, not the number of elements. - 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, - 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, - }}}, - {"repeated string", &pb.MoreRepeated{Strings: []string{"r", "ken", "gri"}}}, - {"repeated fixed", &pb.MoreRepeated{Fixeds: []uint32{1, 2, 3, 4}}}, - // Nested. - {"nested", &pb.OldMessage{Nested: &pb.OldMessage_Nested{Name: String("whatever")}}}, - {"group", &pb.GroupOld{G: &pb.GroupOld_G{X: Int32(12345)}}}, - // Other things. - {"unrecognized", &pb.MoreRepeated{XXX_unrecognized: []byte{13<<3 | 0, 4}}}, - {"extension (unencoded)", messageWithExtension1}, - {"extension (encoded)", messageWithExtension3}, - // proto3 message - {"proto3 empty", &proto3pb.Message{}}, - {"proto3 bool", &proto3pb.Message{TrueScotsman: true}}, - {"proto3 int64", &proto3pb.Message{ResultCount: 1}}, - {"proto3 uint32", &proto3pb.Message{HeightInCm: 123}}, - {"proto3 float", &proto3pb.Message{Score: 12.6}}, - {"proto3 string", &proto3pb.Message{Name: "Snezana"}}, - {"proto3 bytes", &proto3pb.Message{Data: []byte("wowsa")}}, - {"proto3 bytes, empty", &proto3pb.Message{Data: []byte{}}}, - {"proto3 enum", &proto3pb.Message{Hilarity: proto3pb.Message_PUNS}}, - {"proto3 map field with empty bytes", &proto3pb.MessageWithMap{ByteMapping: map[bool][]byte{false: []byte{}}}}, - - {"map field", &pb.MessageWithMap{NameMapping: map[int32]string{1: "Rob", 7: "Andrew"}}}, - {"map field with message", &pb.MessageWithMap{MsgMapping: map[int64]*pb.FloatingPoint{0x7001: &pb.FloatingPoint{F: Float64(2.0)}}}}, - {"map field with bytes", &pb.MessageWithMap{ByteMapping: map[bool][]byte{true: []byte("this time for sure")}}}, - {"map field with empty bytes", &pb.MessageWithMap{ByteMapping: map[bool][]byte{true: []byte{}}}}, - - {"map field with big entry", &pb.MessageWithMap{NameMapping: map[int32]string{8: strings.Repeat("x", 125)}}}, - {"map field with big key and val", &pb.MessageWithMap{StrToStr: map[string]string{strings.Repeat("x", 70): strings.Repeat("y", 70)}}}, - {"map field with big numeric key", &pb.MessageWithMap{NameMapping: map[int32]string{0xf00d: "om nom nom"}}}, - - {"oneof not set", &pb.Oneof{}}, - {"oneof bool", &pb.Oneof{Union: &pb.Oneof_F_Bool{true}}}, - {"oneof zero int32", &pb.Oneof{Union: &pb.Oneof_F_Int32{0}}}, - {"oneof big int32", &pb.Oneof{Union: &pb.Oneof_F_Int32{1 << 20}}}, - {"oneof int64", &pb.Oneof{Union: &pb.Oneof_F_Int64{42}}}, - {"oneof fixed32", &pb.Oneof{Union: &pb.Oneof_F_Fixed32{43}}}, - {"oneof fixed64", &pb.Oneof{Union: &pb.Oneof_F_Fixed64{44}}}, - {"oneof uint32", &pb.Oneof{Union: &pb.Oneof_F_Uint32{45}}}, - {"oneof uint64", &pb.Oneof{Union: &pb.Oneof_F_Uint64{46}}}, - {"oneof float", &pb.Oneof{Union: &pb.Oneof_F_Float{47.1}}}, - {"oneof double", &pb.Oneof{Union: &pb.Oneof_F_Double{48.9}}}, - {"oneof string", &pb.Oneof{Union: &pb.Oneof_F_String{"Rhythmic Fman"}}}, - {"oneof bytes", &pb.Oneof{Union: &pb.Oneof_F_Bytes{[]byte("let go")}}}, - {"oneof sint32", &pb.Oneof{Union: &pb.Oneof_F_Sint32{50}}}, - {"oneof sint64", &pb.Oneof{Union: &pb.Oneof_F_Sint64{51}}}, - {"oneof enum", &pb.Oneof{Union: &pb.Oneof_F_Enum{pb.MyMessage_BLUE}}}, - {"message for oneof", &pb.GoTestField{Label: String("k"), Type: String("v")}}, - {"oneof message", &pb.Oneof{Union: &pb.Oneof_F_Message{&pb.GoTestField{Label: String("k"), Type: String("v")}}}}, - {"oneof group", &pb.Oneof{Union: &pb.Oneof_FGroup{&pb.Oneof_F_Group{X: Int32(52)}}}}, - {"oneof largest tag", &pb.Oneof{Union: &pb.Oneof_F_Largest_Tag{1}}}, - {"multiple oneofs", &pb.Oneof{Union: &pb.Oneof_F_Int32{1}, Tormato: &pb.Oneof_Value{2}}}, -} - -func TestSize(t *testing.T) { - for _, tc := range SizeTests { - size := Size(tc.pb) - b, err := Marshal(tc.pb) - if err != nil { - t.Errorf("%v: Marshal failed: %v", tc.desc, err) - continue - } - if size != len(b) { - t.Errorf("%v: Size(%v) = %d, want %d", tc.desc, tc.pb, size, len(b)) - t.Logf("%v: bytes: %#v", tc.desc, b) - } - } -} diff --git a/vendor/github.com/golang/protobuf/proto/testdata/Makefile b/vendor/github.com/golang/protobuf/proto/testdata/Makefile deleted file mode 100644 index fc288628..00000000 --- a/vendor/github.com/golang/protobuf/proto/testdata/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -include ../../Make.protobuf - -all: regenerate - -regenerate: - rm -f test.pb.go - make test.pb.go - -# The following rules are just aids to development. Not needed for typical testing. - -diff: regenerate - git diff test.pb.go - -restore: - cp test.pb.go.golden test.pb.go - -preserve: - cp test.pb.go test.pb.go.golden diff --git a/vendor/github.com/golang/protobuf/proto/testdata/golden_test.go b/vendor/github.com/golang/protobuf/proto/testdata/golden_test.go deleted file mode 100644 index 7172d0e9..00000000 --- a/vendor/github.com/golang/protobuf/proto/testdata/golden_test.go +++ /dev/null @@ -1,86 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2012 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Verify that the compiler output for test.proto is unchanged. - -package testdata - -import ( - "crypto/sha1" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "testing" -) - -// sum returns in string form (for easy comparison) the SHA-1 hash of the named file. -func sum(t *testing.T, name string) string { - data, err := ioutil.ReadFile(name) - if err != nil { - t.Fatal(err) - } - t.Logf("sum(%q): length is %d", name, len(data)) - hash := sha1.New() - _, err = hash.Write(data) - if err != nil { - t.Fatal(err) - } - return fmt.Sprintf("% x", hash.Sum(nil)) -} - -func run(t *testing.T, name string, args ...string) { - cmd := exec.Command(name, args...) - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() - if err != nil { - t.Fatal(err) - } -} - -func TestGolden(t *testing.T) { - // Compute the original checksum. - goldenSum := sum(t, "test.pb.go") - // Run the proto compiler. - run(t, "protoc", "--go_out="+os.TempDir(), "test.proto") - newFile := filepath.Join(os.TempDir(), "test.pb.go") - defer os.Remove(newFile) - // Compute the new checksum. - newSum := sum(t, newFile) - // Verify - if newSum != goldenSum { - run(t, "diff", "-u", "test.pb.go", newFile) - t.Fatal("Code generated by protoc-gen-go has changed; update test.pb.go") - } -} diff --git a/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go b/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go deleted file mode 100644 index e980d1a0..00000000 --- a/vendor/github.com/golang/protobuf/proto/testdata/test.pb.go +++ /dev/null @@ -1,4147 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: test.proto - -/* -Package testdata is a generated protocol buffer package. - -It is generated from these files: - test.proto - -It has these top-level messages: - GoEnum - GoTestField - GoTest - GoTestRequiredGroupField - GoSkipTest - NonPackedTest - PackedTest - MaxTag - OldMessage - NewMessage - InnerMessage - OtherMessage - RequiredInnerMessage - MyMessage - Ext - ComplexExtension - DefaultsMessage - MyMessageSet - Empty - MessageList - Strings - Defaults - SubDefaults - RepeatedEnum - MoreRepeated - GroupOld - GroupNew - FloatingPoint - MessageWithMap - Oneof - Communique -*/ -package testdata - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type FOO int32 - -const ( - FOO_FOO1 FOO = 1 -) - -var FOO_name = map[int32]string{ - 1: "FOO1", -} -var FOO_value = map[string]int32{ - "FOO1": 1, -} - -func (x FOO) Enum() *FOO { - p := new(FOO) - *p = x - return p -} -func (x FOO) String() string { - return proto.EnumName(FOO_name, int32(x)) -} -func (x *FOO) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FOO_value, data, "FOO") - if err != nil { - return err - } - *x = FOO(value) - return nil -} -func (FOO) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// An enum, for completeness. -type GoTest_KIND int32 - -const ( - GoTest_VOID GoTest_KIND = 0 - // Basic types - GoTest_BOOL GoTest_KIND = 1 - GoTest_BYTES GoTest_KIND = 2 - GoTest_FINGERPRINT GoTest_KIND = 3 - GoTest_FLOAT GoTest_KIND = 4 - GoTest_INT GoTest_KIND = 5 - GoTest_STRING GoTest_KIND = 6 - GoTest_TIME GoTest_KIND = 7 - // Groupings - GoTest_TUPLE GoTest_KIND = 8 - GoTest_ARRAY GoTest_KIND = 9 - GoTest_MAP GoTest_KIND = 10 - // Table types - GoTest_TABLE GoTest_KIND = 11 - // Functions - GoTest_FUNCTION GoTest_KIND = 12 -) - -var GoTest_KIND_name = map[int32]string{ - 0: "VOID", - 1: "BOOL", - 2: "BYTES", - 3: "FINGERPRINT", - 4: "FLOAT", - 5: "INT", - 6: "STRING", - 7: "TIME", - 8: "TUPLE", - 9: "ARRAY", - 10: "MAP", - 11: "TABLE", - 12: "FUNCTION", -} -var GoTest_KIND_value = map[string]int32{ - "VOID": 0, - "BOOL": 1, - "BYTES": 2, - "FINGERPRINT": 3, - "FLOAT": 4, - "INT": 5, - "STRING": 6, - "TIME": 7, - "TUPLE": 8, - "ARRAY": 9, - "MAP": 10, - "TABLE": 11, - "FUNCTION": 12, -} - -func (x GoTest_KIND) Enum() *GoTest_KIND { - p := new(GoTest_KIND) - *p = x - return p -} -func (x GoTest_KIND) String() string { - return proto.EnumName(GoTest_KIND_name, int32(x)) -} -func (x *GoTest_KIND) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(GoTest_KIND_value, data, "GoTest_KIND") - if err != nil { - return err - } - *x = GoTest_KIND(value) - return nil -} -func (GoTest_KIND) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -type MyMessage_Color int32 - -const ( - MyMessage_RED MyMessage_Color = 0 - MyMessage_GREEN MyMessage_Color = 1 - MyMessage_BLUE MyMessage_Color = 2 -) - -var MyMessage_Color_name = map[int32]string{ - 0: "RED", - 1: "GREEN", - 2: "BLUE", -} -var MyMessage_Color_value = map[string]int32{ - "RED": 0, - "GREEN": 1, - "BLUE": 2, -} - -func (x MyMessage_Color) Enum() *MyMessage_Color { - p := new(MyMessage_Color) - *p = x - return p -} -func (x MyMessage_Color) String() string { - return proto.EnumName(MyMessage_Color_name, int32(x)) -} -func (x *MyMessage_Color) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MyMessage_Color_value, data, "MyMessage_Color") - if err != nil { - return err - } - *x = MyMessage_Color(value) - return nil -} -func (MyMessage_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} } - -type DefaultsMessage_DefaultsEnum int32 - -const ( - DefaultsMessage_ZERO DefaultsMessage_DefaultsEnum = 0 - DefaultsMessage_ONE DefaultsMessage_DefaultsEnum = 1 - DefaultsMessage_TWO DefaultsMessage_DefaultsEnum = 2 -) - -var DefaultsMessage_DefaultsEnum_name = map[int32]string{ - 0: "ZERO", - 1: "ONE", - 2: "TWO", -} -var DefaultsMessage_DefaultsEnum_value = map[string]int32{ - "ZERO": 0, - "ONE": 1, - "TWO": 2, -} - -func (x DefaultsMessage_DefaultsEnum) Enum() *DefaultsMessage_DefaultsEnum { - p := new(DefaultsMessage_DefaultsEnum) - *p = x - return p -} -func (x DefaultsMessage_DefaultsEnum) String() string { - return proto.EnumName(DefaultsMessage_DefaultsEnum_name, int32(x)) -} -func (x *DefaultsMessage_DefaultsEnum) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(DefaultsMessage_DefaultsEnum_value, data, "DefaultsMessage_DefaultsEnum") - if err != nil { - return err - } - *x = DefaultsMessage_DefaultsEnum(value) - return nil -} -func (DefaultsMessage_DefaultsEnum) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{16, 0} -} - -type Defaults_Color int32 - -const ( - Defaults_RED Defaults_Color = 0 - Defaults_GREEN Defaults_Color = 1 - Defaults_BLUE Defaults_Color = 2 -) - -var Defaults_Color_name = map[int32]string{ - 0: "RED", - 1: "GREEN", - 2: "BLUE", -} -var Defaults_Color_value = map[string]int32{ - "RED": 0, - "GREEN": 1, - "BLUE": 2, -} - -func (x Defaults_Color) Enum() *Defaults_Color { - p := new(Defaults_Color) - *p = x - return p -} -func (x Defaults_Color) String() string { - return proto.EnumName(Defaults_Color_name, int32(x)) -} -func (x *Defaults_Color) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Defaults_Color_value, data, "Defaults_Color") - if err != nil { - return err - } - *x = Defaults_Color(value) - return nil -} -func (Defaults_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{21, 0} } - -type RepeatedEnum_Color int32 - -const ( - RepeatedEnum_RED RepeatedEnum_Color = 1 -) - -var RepeatedEnum_Color_name = map[int32]string{ - 1: "RED", -} -var RepeatedEnum_Color_value = map[string]int32{ - "RED": 1, -} - -func (x RepeatedEnum_Color) Enum() *RepeatedEnum_Color { - p := new(RepeatedEnum_Color) - *p = x - return p -} -func (x RepeatedEnum_Color) String() string { - return proto.EnumName(RepeatedEnum_Color_name, int32(x)) -} -func (x *RepeatedEnum_Color) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(RepeatedEnum_Color_value, data, "RepeatedEnum_Color") - if err != nil { - return err - } - *x = RepeatedEnum_Color(value) - return nil -} -func (RepeatedEnum_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{23, 0} } - -type GoEnum struct { - Foo *FOO `protobuf:"varint,1,req,name=foo,enum=testdata.FOO" json:"foo,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoEnum) Reset() { *m = GoEnum{} } -func (m *GoEnum) String() string { return proto.CompactTextString(m) } -func (*GoEnum) ProtoMessage() {} -func (*GoEnum) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *GoEnum) GetFoo() FOO { - if m != nil && m.Foo != nil { - return *m.Foo - } - return FOO_FOO1 -} - -type GoTestField struct { - Label *string `protobuf:"bytes,1,req,name=Label" json:"Label,omitempty"` - Type *string `protobuf:"bytes,2,req,name=Type" json:"Type,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoTestField) Reset() { *m = GoTestField{} } -func (m *GoTestField) String() string { return proto.CompactTextString(m) } -func (*GoTestField) ProtoMessage() {} -func (*GoTestField) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *GoTestField) GetLabel() string { - if m != nil && m.Label != nil { - return *m.Label - } - return "" -} - -func (m *GoTestField) GetType() string { - if m != nil && m.Type != nil { - return *m.Type - } - return "" -} - -type GoTest struct { - // Some typical parameters - Kind *GoTest_KIND `protobuf:"varint,1,req,name=Kind,enum=testdata.GoTest_KIND" json:"Kind,omitempty"` - Table *string `protobuf:"bytes,2,opt,name=Table" json:"Table,omitempty"` - Param *int32 `protobuf:"varint,3,opt,name=Param" json:"Param,omitempty"` - // Required, repeated and optional foreign fields. - RequiredField *GoTestField `protobuf:"bytes,4,req,name=RequiredField" json:"RequiredField,omitempty"` - RepeatedField []*GoTestField `protobuf:"bytes,5,rep,name=RepeatedField" json:"RepeatedField,omitempty"` - OptionalField *GoTestField `protobuf:"bytes,6,opt,name=OptionalField" json:"OptionalField,omitempty"` - // Required fields of all basic types - F_BoolRequired *bool `protobuf:"varint,10,req,name=F_Bool_required,json=FBoolRequired" json:"F_Bool_required,omitempty"` - F_Int32Required *int32 `protobuf:"varint,11,req,name=F_Int32_required,json=FInt32Required" json:"F_Int32_required,omitempty"` - F_Int64Required *int64 `protobuf:"varint,12,req,name=F_Int64_required,json=FInt64Required" json:"F_Int64_required,omitempty"` - F_Fixed32Required *uint32 `protobuf:"fixed32,13,req,name=F_Fixed32_required,json=FFixed32Required" json:"F_Fixed32_required,omitempty"` - F_Fixed64Required *uint64 `protobuf:"fixed64,14,req,name=F_Fixed64_required,json=FFixed64Required" json:"F_Fixed64_required,omitempty"` - F_Uint32Required *uint32 `protobuf:"varint,15,req,name=F_Uint32_required,json=FUint32Required" json:"F_Uint32_required,omitempty"` - F_Uint64Required *uint64 `protobuf:"varint,16,req,name=F_Uint64_required,json=FUint64Required" json:"F_Uint64_required,omitempty"` - F_FloatRequired *float32 `protobuf:"fixed32,17,req,name=F_Float_required,json=FFloatRequired" json:"F_Float_required,omitempty"` - F_DoubleRequired *float64 `protobuf:"fixed64,18,req,name=F_Double_required,json=FDoubleRequired" json:"F_Double_required,omitempty"` - F_StringRequired *string `protobuf:"bytes,19,req,name=F_String_required,json=FStringRequired" json:"F_String_required,omitempty"` - F_BytesRequired []byte `protobuf:"bytes,101,req,name=F_Bytes_required,json=FBytesRequired" json:"F_Bytes_required,omitempty"` - F_Sint32Required *int32 `protobuf:"zigzag32,102,req,name=F_Sint32_required,json=FSint32Required" json:"F_Sint32_required,omitempty"` - F_Sint64Required *int64 `protobuf:"zigzag64,103,req,name=F_Sint64_required,json=FSint64Required" json:"F_Sint64_required,omitempty"` - // Repeated fields of all basic types - F_BoolRepeated []bool `protobuf:"varint,20,rep,name=F_Bool_repeated,json=FBoolRepeated" json:"F_Bool_repeated,omitempty"` - F_Int32Repeated []int32 `protobuf:"varint,21,rep,name=F_Int32_repeated,json=FInt32Repeated" json:"F_Int32_repeated,omitempty"` - F_Int64Repeated []int64 `protobuf:"varint,22,rep,name=F_Int64_repeated,json=FInt64Repeated" json:"F_Int64_repeated,omitempty"` - F_Fixed32Repeated []uint32 `protobuf:"fixed32,23,rep,name=F_Fixed32_repeated,json=FFixed32Repeated" json:"F_Fixed32_repeated,omitempty"` - F_Fixed64Repeated []uint64 `protobuf:"fixed64,24,rep,name=F_Fixed64_repeated,json=FFixed64Repeated" json:"F_Fixed64_repeated,omitempty"` - F_Uint32Repeated []uint32 `protobuf:"varint,25,rep,name=F_Uint32_repeated,json=FUint32Repeated" json:"F_Uint32_repeated,omitempty"` - F_Uint64Repeated []uint64 `protobuf:"varint,26,rep,name=F_Uint64_repeated,json=FUint64Repeated" json:"F_Uint64_repeated,omitempty"` - F_FloatRepeated []float32 `protobuf:"fixed32,27,rep,name=F_Float_repeated,json=FFloatRepeated" json:"F_Float_repeated,omitempty"` - F_DoubleRepeated []float64 `protobuf:"fixed64,28,rep,name=F_Double_repeated,json=FDoubleRepeated" json:"F_Double_repeated,omitempty"` - F_StringRepeated []string `protobuf:"bytes,29,rep,name=F_String_repeated,json=FStringRepeated" json:"F_String_repeated,omitempty"` - F_BytesRepeated [][]byte `protobuf:"bytes,201,rep,name=F_Bytes_repeated,json=FBytesRepeated" json:"F_Bytes_repeated,omitempty"` - F_Sint32Repeated []int32 `protobuf:"zigzag32,202,rep,name=F_Sint32_repeated,json=FSint32Repeated" json:"F_Sint32_repeated,omitempty"` - F_Sint64Repeated []int64 `protobuf:"zigzag64,203,rep,name=F_Sint64_repeated,json=FSint64Repeated" json:"F_Sint64_repeated,omitempty"` - // Optional fields of all basic types - F_BoolOptional *bool `protobuf:"varint,30,opt,name=F_Bool_optional,json=FBoolOptional" json:"F_Bool_optional,omitempty"` - F_Int32Optional *int32 `protobuf:"varint,31,opt,name=F_Int32_optional,json=FInt32Optional" json:"F_Int32_optional,omitempty"` - F_Int64Optional *int64 `protobuf:"varint,32,opt,name=F_Int64_optional,json=FInt64Optional" json:"F_Int64_optional,omitempty"` - F_Fixed32Optional *uint32 `protobuf:"fixed32,33,opt,name=F_Fixed32_optional,json=FFixed32Optional" json:"F_Fixed32_optional,omitempty"` - F_Fixed64Optional *uint64 `protobuf:"fixed64,34,opt,name=F_Fixed64_optional,json=FFixed64Optional" json:"F_Fixed64_optional,omitempty"` - F_Uint32Optional *uint32 `protobuf:"varint,35,opt,name=F_Uint32_optional,json=FUint32Optional" json:"F_Uint32_optional,omitempty"` - F_Uint64Optional *uint64 `protobuf:"varint,36,opt,name=F_Uint64_optional,json=FUint64Optional" json:"F_Uint64_optional,omitempty"` - F_FloatOptional *float32 `protobuf:"fixed32,37,opt,name=F_Float_optional,json=FFloatOptional" json:"F_Float_optional,omitempty"` - F_DoubleOptional *float64 `protobuf:"fixed64,38,opt,name=F_Double_optional,json=FDoubleOptional" json:"F_Double_optional,omitempty"` - F_StringOptional *string `protobuf:"bytes,39,opt,name=F_String_optional,json=FStringOptional" json:"F_String_optional,omitempty"` - F_BytesOptional []byte `protobuf:"bytes,301,opt,name=F_Bytes_optional,json=FBytesOptional" json:"F_Bytes_optional,omitempty"` - F_Sint32Optional *int32 `protobuf:"zigzag32,302,opt,name=F_Sint32_optional,json=FSint32Optional" json:"F_Sint32_optional,omitempty"` - F_Sint64Optional *int64 `protobuf:"zigzag64,303,opt,name=F_Sint64_optional,json=FSint64Optional" json:"F_Sint64_optional,omitempty"` - // Default-valued fields of all basic types - F_BoolDefaulted *bool `protobuf:"varint,40,opt,name=F_Bool_defaulted,json=FBoolDefaulted,def=1" json:"F_Bool_defaulted,omitempty"` - F_Int32Defaulted *int32 `protobuf:"varint,41,opt,name=F_Int32_defaulted,json=FInt32Defaulted,def=32" json:"F_Int32_defaulted,omitempty"` - F_Int64Defaulted *int64 `protobuf:"varint,42,opt,name=F_Int64_defaulted,json=FInt64Defaulted,def=64" json:"F_Int64_defaulted,omitempty"` - F_Fixed32Defaulted *uint32 `protobuf:"fixed32,43,opt,name=F_Fixed32_defaulted,json=FFixed32Defaulted,def=320" json:"F_Fixed32_defaulted,omitempty"` - F_Fixed64Defaulted *uint64 `protobuf:"fixed64,44,opt,name=F_Fixed64_defaulted,json=FFixed64Defaulted,def=640" json:"F_Fixed64_defaulted,omitempty"` - F_Uint32Defaulted *uint32 `protobuf:"varint,45,opt,name=F_Uint32_defaulted,json=FUint32Defaulted,def=3200" json:"F_Uint32_defaulted,omitempty"` - F_Uint64Defaulted *uint64 `protobuf:"varint,46,opt,name=F_Uint64_defaulted,json=FUint64Defaulted,def=6400" json:"F_Uint64_defaulted,omitempty"` - F_FloatDefaulted *float32 `protobuf:"fixed32,47,opt,name=F_Float_defaulted,json=FFloatDefaulted,def=314159" json:"F_Float_defaulted,omitempty"` - F_DoubleDefaulted *float64 `protobuf:"fixed64,48,opt,name=F_Double_defaulted,json=FDoubleDefaulted,def=271828" json:"F_Double_defaulted,omitempty"` - F_StringDefaulted *string `protobuf:"bytes,49,opt,name=F_String_defaulted,json=FStringDefaulted,def=hello, \"world!\"\n" json:"F_String_defaulted,omitempty"` - F_BytesDefaulted []byte `protobuf:"bytes,401,opt,name=F_Bytes_defaulted,json=FBytesDefaulted,def=Bignose" json:"F_Bytes_defaulted,omitempty"` - F_Sint32Defaulted *int32 `protobuf:"zigzag32,402,opt,name=F_Sint32_defaulted,json=FSint32Defaulted,def=-32" json:"F_Sint32_defaulted,omitempty"` - F_Sint64Defaulted *int64 `protobuf:"zigzag64,403,opt,name=F_Sint64_defaulted,json=FSint64Defaulted,def=-64" json:"F_Sint64_defaulted,omitempty"` - // Packed repeated fields (no string or bytes). - F_BoolRepeatedPacked []bool `protobuf:"varint,50,rep,packed,name=F_Bool_repeated_packed,json=FBoolRepeatedPacked" json:"F_Bool_repeated_packed,omitempty"` - F_Int32RepeatedPacked []int32 `protobuf:"varint,51,rep,packed,name=F_Int32_repeated_packed,json=FInt32RepeatedPacked" json:"F_Int32_repeated_packed,omitempty"` - F_Int64RepeatedPacked []int64 `protobuf:"varint,52,rep,packed,name=F_Int64_repeated_packed,json=FInt64RepeatedPacked" json:"F_Int64_repeated_packed,omitempty"` - F_Fixed32RepeatedPacked []uint32 `protobuf:"fixed32,53,rep,packed,name=F_Fixed32_repeated_packed,json=FFixed32RepeatedPacked" json:"F_Fixed32_repeated_packed,omitempty"` - F_Fixed64RepeatedPacked []uint64 `protobuf:"fixed64,54,rep,packed,name=F_Fixed64_repeated_packed,json=FFixed64RepeatedPacked" json:"F_Fixed64_repeated_packed,omitempty"` - F_Uint32RepeatedPacked []uint32 `protobuf:"varint,55,rep,packed,name=F_Uint32_repeated_packed,json=FUint32RepeatedPacked" json:"F_Uint32_repeated_packed,omitempty"` - F_Uint64RepeatedPacked []uint64 `protobuf:"varint,56,rep,packed,name=F_Uint64_repeated_packed,json=FUint64RepeatedPacked" json:"F_Uint64_repeated_packed,omitempty"` - F_FloatRepeatedPacked []float32 `protobuf:"fixed32,57,rep,packed,name=F_Float_repeated_packed,json=FFloatRepeatedPacked" json:"F_Float_repeated_packed,omitempty"` - F_DoubleRepeatedPacked []float64 `protobuf:"fixed64,58,rep,packed,name=F_Double_repeated_packed,json=FDoubleRepeatedPacked" json:"F_Double_repeated_packed,omitempty"` - F_Sint32RepeatedPacked []int32 `protobuf:"zigzag32,502,rep,packed,name=F_Sint32_repeated_packed,json=FSint32RepeatedPacked" json:"F_Sint32_repeated_packed,omitempty"` - F_Sint64RepeatedPacked []int64 `protobuf:"zigzag64,503,rep,packed,name=F_Sint64_repeated_packed,json=FSint64RepeatedPacked" json:"F_Sint64_repeated_packed,omitempty"` - Requiredgroup *GoTest_RequiredGroup `protobuf:"group,70,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"` - Repeatedgroup []*GoTest_RepeatedGroup `protobuf:"group,80,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"` - Optionalgroup *GoTest_OptionalGroup `protobuf:"group,90,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoTest) Reset() { *m = GoTest{} } -func (m *GoTest) String() string { return proto.CompactTextString(m) } -func (*GoTest) ProtoMessage() {} -func (*GoTest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -const Default_GoTest_F_BoolDefaulted bool = true -const Default_GoTest_F_Int32Defaulted int32 = 32 -const Default_GoTest_F_Int64Defaulted int64 = 64 -const Default_GoTest_F_Fixed32Defaulted uint32 = 320 -const Default_GoTest_F_Fixed64Defaulted uint64 = 640 -const Default_GoTest_F_Uint32Defaulted uint32 = 3200 -const Default_GoTest_F_Uint64Defaulted uint64 = 6400 -const Default_GoTest_F_FloatDefaulted float32 = 314159 -const Default_GoTest_F_DoubleDefaulted float64 = 271828 -const Default_GoTest_F_StringDefaulted string = "hello, \"world!\"\n" - -var Default_GoTest_F_BytesDefaulted []byte = []byte("Bignose") - -const Default_GoTest_F_Sint32Defaulted int32 = -32 -const Default_GoTest_F_Sint64Defaulted int64 = -64 - -func (m *GoTest) GetKind() GoTest_KIND { - if m != nil && m.Kind != nil { - return *m.Kind - } - return GoTest_VOID -} - -func (m *GoTest) GetTable() string { - if m != nil && m.Table != nil { - return *m.Table - } - return "" -} - -func (m *GoTest) GetParam() int32 { - if m != nil && m.Param != nil { - return *m.Param - } - return 0 -} - -func (m *GoTest) GetRequiredField() *GoTestField { - if m != nil { - return m.RequiredField - } - return nil -} - -func (m *GoTest) GetRepeatedField() []*GoTestField { - if m != nil { - return m.RepeatedField - } - return nil -} - -func (m *GoTest) GetOptionalField() *GoTestField { - if m != nil { - return m.OptionalField - } - return nil -} - -func (m *GoTest) GetF_BoolRequired() bool { - if m != nil && m.F_BoolRequired != nil { - return *m.F_BoolRequired - } - return false -} - -func (m *GoTest) GetF_Int32Required() int32 { - if m != nil && m.F_Int32Required != nil { - return *m.F_Int32Required - } - return 0 -} - -func (m *GoTest) GetF_Int64Required() int64 { - if m != nil && m.F_Int64Required != nil { - return *m.F_Int64Required - } - return 0 -} - -func (m *GoTest) GetF_Fixed32Required() uint32 { - if m != nil && m.F_Fixed32Required != nil { - return *m.F_Fixed32Required - } - return 0 -} - -func (m *GoTest) GetF_Fixed64Required() uint64 { - if m != nil && m.F_Fixed64Required != nil { - return *m.F_Fixed64Required - } - return 0 -} - -func (m *GoTest) GetF_Uint32Required() uint32 { - if m != nil && m.F_Uint32Required != nil { - return *m.F_Uint32Required - } - return 0 -} - -func (m *GoTest) GetF_Uint64Required() uint64 { - if m != nil && m.F_Uint64Required != nil { - return *m.F_Uint64Required - } - return 0 -} - -func (m *GoTest) GetF_FloatRequired() float32 { - if m != nil && m.F_FloatRequired != nil { - return *m.F_FloatRequired - } - return 0 -} - -func (m *GoTest) GetF_DoubleRequired() float64 { - if m != nil && m.F_DoubleRequired != nil { - return *m.F_DoubleRequired - } - return 0 -} - -func (m *GoTest) GetF_StringRequired() string { - if m != nil && m.F_StringRequired != nil { - return *m.F_StringRequired - } - return "" -} - -func (m *GoTest) GetF_BytesRequired() []byte { - if m != nil { - return m.F_BytesRequired - } - return nil -} - -func (m *GoTest) GetF_Sint32Required() int32 { - if m != nil && m.F_Sint32Required != nil { - return *m.F_Sint32Required - } - return 0 -} - -func (m *GoTest) GetF_Sint64Required() int64 { - if m != nil && m.F_Sint64Required != nil { - return *m.F_Sint64Required - } - return 0 -} - -func (m *GoTest) GetF_BoolRepeated() []bool { - if m != nil { - return m.F_BoolRepeated - } - return nil -} - -func (m *GoTest) GetF_Int32Repeated() []int32 { - if m != nil { - return m.F_Int32Repeated - } - return nil -} - -func (m *GoTest) GetF_Int64Repeated() []int64 { - if m != nil { - return m.F_Int64Repeated - } - return nil -} - -func (m *GoTest) GetF_Fixed32Repeated() []uint32 { - if m != nil { - return m.F_Fixed32Repeated - } - return nil -} - -func (m *GoTest) GetF_Fixed64Repeated() []uint64 { - if m != nil { - return m.F_Fixed64Repeated - } - return nil -} - -func (m *GoTest) GetF_Uint32Repeated() []uint32 { - if m != nil { - return m.F_Uint32Repeated - } - return nil -} - -func (m *GoTest) GetF_Uint64Repeated() []uint64 { - if m != nil { - return m.F_Uint64Repeated - } - return nil -} - -func (m *GoTest) GetF_FloatRepeated() []float32 { - if m != nil { - return m.F_FloatRepeated - } - return nil -} - -func (m *GoTest) GetF_DoubleRepeated() []float64 { - if m != nil { - return m.F_DoubleRepeated - } - return nil -} - -func (m *GoTest) GetF_StringRepeated() []string { - if m != nil { - return m.F_StringRepeated - } - return nil -} - -func (m *GoTest) GetF_BytesRepeated() [][]byte { - if m != nil { - return m.F_BytesRepeated - } - return nil -} - -func (m *GoTest) GetF_Sint32Repeated() []int32 { - if m != nil { - return m.F_Sint32Repeated - } - return nil -} - -func (m *GoTest) GetF_Sint64Repeated() []int64 { - if m != nil { - return m.F_Sint64Repeated - } - return nil -} - -func (m *GoTest) GetF_BoolOptional() bool { - if m != nil && m.F_BoolOptional != nil { - return *m.F_BoolOptional - } - return false -} - -func (m *GoTest) GetF_Int32Optional() int32 { - if m != nil && m.F_Int32Optional != nil { - return *m.F_Int32Optional - } - return 0 -} - -func (m *GoTest) GetF_Int64Optional() int64 { - if m != nil && m.F_Int64Optional != nil { - return *m.F_Int64Optional - } - return 0 -} - -func (m *GoTest) GetF_Fixed32Optional() uint32 { - if m != nil && m.F_Fixed32Optional != nil { - return *m.F_Fixed32Optional - } - return 0 -} - -func (m *GoTest) GetF_Fixed64Optional() uint64 { - if m != nil && m.F_Fixed64Optional != nil { - return *m.F_Fixed64Optional - } - return 0 -} - -func (m *GoTest) GetF_Uint32Optional() uint32 { - if m != nil && m.F_Uint32Optional != nil { - return *m.F_Uint32Optional - } - return 0 -} - -func (m *GoTest) GetF_Uint64Optional() uint64 { - if m != nil && m.F_Uint64Optional != nil { - return *m.F_Uint64Optional - } - return 0 -} - -func (m *GoTest) GetF_FloatOptional() float32 { - if m != nil && m.F_FloatOptional != nil { - return *m.F_FloatOptional - } - return 0 -} - -func (m *GoTest) GetF_DoubleOptional() float64 { - if m != nil && m.F_DoubleOptional != nil { - return *m.F_DoubleOptional - } - return 0 -} - -func (m *GoTest) GetF_StringOptional() string { - if m != nil && m.F_StringOptional != nil { - return *m.F_StringOptional - } - return "" -} - -func (m *GoTest) GetF_BytesOptional() []byte { - if m != nil { - return m.F_BytesOptional - } - return nil -} - -func (m *GoTest) GetF_Sint32Optional() int32 { - if m != nil && m.F_Sint32Optional != nil { - return *m.F_Sint32Optional - } - return 0 -} - -func (m *GoTest) GetF_Sint64Optional() int64 { - if m != nil && m.F_Sint64Optional != nil { - return *m.F_Sint64Optional - } - return 0 -} - -func (m *GoTest) GetF_BoolDefaulted() bool { - if m != nil && m.F_BoolDefaulted != nil { - return *m.F_BoolDefaulted - } - return Default_GoTest_F_BoolDefaulted -} - -func (m *GoTest) GetF_Int32Defaulted() int32 { - if m != nil && m.F_Int32Defaulted != nil { - return *m.F_Int32Defaulted - } - return Default_GoTest_F_Int32Defaulted -} - -func (m *GoTest) GetF_Int64Defaulted() int64 { - if m != nil && m.F_Int64Defaulted != nil { - return *m.F_Int64Defaulted - } - return Default_GoTest_F_Int64Defaulted -} - -func (m *GoTest) GetF_Fixed32Defaulted() uint32 { - if m != nil && m.F_Fixed32Defaulted != nil { - return *m.F_Fixed32Defaulted - } - return Default_GoTest_F_Fixed32Defaulted -} - -func (m *GoTest) GetF_Fixed64Defaulted() uint64 { - if m != nil && m.F_Fixed64Defaulted != nil { - return *m.F_Fixed64Defaulted - } - return Default_GoTest_F_Fixed64Defaulted -} - -func (m *GoTest) GetF_Uint32Defaulted() uint32 { - if m != nil && m.F_Uint32Defaulted != nil { - return *m.F_Uint32Defaulted - } - return Default_GoTest_F_Uint32Defaulted -} - -func (m *GoTest) GetF_Uint64Defaulted() uint64 { - if m != nil && m.F_Uint64Defaulted != nil { - return *m.F_Uint64Defaulted - } - return Default_GoTest_F_Uint64Defaulted -} - -func (m *GoTest) GetF_FloatDefaulted() float32 { - if m != nil && m.F_FloatDefaulted != nil { - return *m.F_FloatDefaulted - } - return Default_GoTest_F_FloatDefaulted -} - -func (m *GoTest) GetF_DoubleDefaulted() float64 { - if m != nil && m.F_DoubleDefaulted != nil { - return *m.F_DoubleDefaulted - } - return Default_GoTest_F_DoubleDefaulted -} - -func (m *GoTest) GetF_StringDefaulted() string { - if m != nil && m.F_StringDefaulted != nil { - return *m.F_StringDefaulted - } - return Default_GoTest_F_StringDefaulted -} - -func (m *GoTest) GetF_BytesDefaulted() []byte { - if m != nil && m.F_BytesDefaulted != nil { - return m.F_BytesDefaulted - } - return append([]byte(nil), Default_GoTest_F_BytesDefaulted...) -} - -func (m *GoTest) GetF_Sint32Defaulted() int32 { - if m != nil && m.F_Sint32Defaulted != nil { - return *m.F_Sint32Defaulted - } - return Default_GoTest_F_Sint32Defaulted -} - -func (m *GoTest) GetF_Sint64Defaulted() int64 { - if m != nil && m.F_Sint64Defaulted != nil { - return *m.F_Sint64Defaulted - } - return Default_GoTest_F_Sint64Defaulted -} - -func (m *GoTest) GetF_BoolRepeatedPacked() []bool { - if m != nil { - return m.F_BoolRepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_Int32RepeatedPacked() []int32 { - if m != nil { - return m.F_Int32RepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_Int64RepeatedPacked() []int64 { - if m != nil { - return m.F_Int64RepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_Fixed32RepeatedPacked() []uint32 { - if m != nil { - return m.F_Fixed32RepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_Fixed64RepeatedPacked() []uint64 { - if m != nil { - return m.F_Fixed64RepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_Uint32RepeatedPacked() []uint32 { - if m != nil { - return m.F_Uint32RepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_Uint64RepeatedPacked() []uint64 { - if m != nil { - return m.F_Uint64RepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_FloatRepeatedPacked() []float32 { - if m != nil { - return m.F_FloatRepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_DoubleRepeatedPacked() []float64 { - if m != nil { - return m.F_DoubleRepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_Sint32RepeatedPacked() []int32 { - if m != nil { - return m.F_Sint32RepeatedPacked - } - return nil -} - -func (m *GoTest) GetF_Sint64RepeatedPacked() []int64 { - if m != nil { - return m.F_Sint64RepeatedPacked - } - return nil -} - -func (m *GoTest) GetRequiredgroup() *GoTest_RequiredGroup { - if m != nil { - return m.Requiredgroup - } - return nil -} - -func (m *GoTest) GetRepeatedgroup() []*GoTest_RepeatedGroup { - if m != nil { - return m.Repeatedgroup - } - return nil -} - -func (m *GoTest) GetOptionalgroup() *GoTest_OptionalGroup { - if m != nil { - return m.Optionalgroup - } - return nil -} - -// Required, repeated, and optional groups. -type GoTest_RequiredGroup struct { - RequiredField *string `protobuf:"bytes,71,req,name=RequiredField" json:"RequiredField,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoTest_RequiredGroup) Reset() { *m = GoTest_RequiredGroup{} } -func (m *GoTest_RequiredGroup) String() string { return proto.CompactTextString(m) } -func (*GoTest_RequiredGroup) ProtoMessage() {} -func (*GoTest_RequiredGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *GoTest_RequiredGroup) GetRequiredField() string { - if m != nil && m.RequiredField != nil { - return *m.RequiredField - } - return "" -} - -type GoTest_RepeatedGroup struct { - RequiredField *string `protobuf:"bytes,81,req,name=RequiredField" json:"RequiredField,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoTest_RepeatedGroup) Reset() { *m = GoTest_RepeatedGroup{} } -func (m *GoTest_RepeatedGroup) String() string { return proto.CompactTextString(m) } -func (*GoTest_RepeatedGroup) ProtoMessage() {} -func (*GoTest_RepeatedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} } - -func (m *GoTest_RepeatedGroup) GetRequiredField() string { - if m != nil && m.RequiredField != nil { - return *m.RequiredField - } - return "" -} - -type GoTest_OptionalGroup struct { - RequiredField *string `protobuf:"bytes,91,req,name=RequiredField" json:"RequiredField,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoTest_OptionalGroup) Reset() { *m = GoTest_OptionalGroup{} } -func (m *GoTest_OptionalGroup) String() string { return proto.CompactTextString(m) } -func (*GoTest_OptionalGroup) ProtoMessage() {} -func (*GoTest_OptionalGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 2} } - -func (m *GoTest_OptionalGroup) GetRequiredField() string { - if m != nil && m.RequiredField != nil { - return *m.RequiredField - } - return "" -} - -// For testing a group containing a required field. -type GoTestRequiredGroupField struct { - Group *GoTestRequiredGroupField_Group `protobuf:"group,1,req,name=Group,json=group" json:"group,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoTestRequiredGroupField) Reset() { *m = GoTestRequiredGroupField{} } -func (m *GoTestRequiredGroupField) String() string { return proto.CompactTextString(m) } -func (*GoTestRequiredGroupField) ProtoMessage() {} -func (*GoTestRequiredGroupField) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *GoTestRequiredGroupField) GetGroup() *GoTestRequiredGroupField_Group { - if m != nil { - return m.Group - } - return nil -} - -type GoTestRequiredGroupField_Group struct { - Field *int32 `protobuf:"varint,2,req,name=Field" json:"Field,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoTestRequiredGroupField_Group) Reset() { *m = GoTestRequiredGroupField_Group{} } -func (m *GoTestRequiredGroupField_Group) String() string { return proto.CompactTextString(m) } -func (*GoTestRequiredGroupField_Group) ProtoMessage() {} -func (*GoTestRequiredGroupField_Group) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{3, 0} -} - -func (m *GoTestRequiredGroupField_Group) GetField() int32 { - if m != nil && m.Field != nil { - return *m.Field - } - return 0 -} - -// For testing skipping of unrecognized fields. -// Numbers are all big, larger than tag numbers in GoTestField, -// the message used in the corresponding test. -type GoSkipTest struct { - SkipInt32 *int32 `protobuf:"varint,11,req,name=skip_int32,json=skipInt32" json:"skip_int32,omitempty"` - SkipFixed32 *uint32 `protobuf:"fixed32,12,req,name=skip_fixed32,json=skipFixed32" json:"skip_fixed32,omitempty"` - SkipFixed64 *uint64 `protobuf:"fixed64,13,req,name=skip_fixed64,json=skipFixed64" json:"skip_fixed64,omitempty"` - SkipString *string `protobuf:"bytes,14,req,name=skip_string,json=skipString" json:"skip_string,omitempty"` - Skipgroup *GoSkipTest_SkipGroup `protobuf:"group,15,req,name=SkipGroup,json=skipgroup" json:"skipgroup,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoSkipTest) Reset() { *m = GoSkipTest{} } -func (m *GoSkipTest) String() string { return proto.CompactTextString(m) } -func (*GoSkipTest) ProtoMessage() {} -func (*GoSkipTest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *GoSkipTest) GetSkipInt32() int32 { - if m != nil && m.SkipInt32 != nil { - return *m.SkipInt32 - } - return 0 -} - -func (m *GoSkipTest) GetSkipFixed32() uint32 { - if m != nil && m.SkipFixed32 != nil { - return *m.SkipFixed32 - } - return 0 -} - -func (m *GoSkipTest) GetSkipFixed64() uint64 { - if m != nil && m.SkipFixed64 != nil { - return *m.SkipFixed64 - } - return 0 -} - -func (m *GoSkipTest) GetSkipString() string { - if m != nil && m.SkipString != nil { - return *m.SkipString - } - return "" -} - -func (m *GoSkipTest) GetSkipgroup() *GoSkipTest_SkipGroup { - if m != nil { - return m.Skipgroup - } - return nil -} - -type GoSkipTest_SkipGroup struct { - GroupInt32 *int32 `protobuf:"varint,16,req,name=group_int32,json=groupInt32" json:"group_int32,omitempty"` - GroupString *string `protobuf:"bytes,17,req,name=group_string,json=groupString" json:"group_string,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GoSkipTest_SkipGroup) Reset() { *m = GoSkipTest_SkipGroup{} } -func (m *GoSkipTest_SkipGroup) String() string { return proto.CompactTextString(m) } -func (*GoSkipTest_SkipGroup) ProtoMessage() {} -func (*GoSkipTest_SkipGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} } - -func (m *GoSkipTest_SkipGroup) GetGroupInt32() int32 { - if m != nil && m.GroupInt32 != nil { - return *m.GroupInt32 - } - return 0 -} - -func (m *GoSkipTest_SkipGroup) GetGroupString() string { - if m != nil && m.GroupString != nil { - return *m.GroupString - } - return "" -} - -// For testing packed/non-packed decoder switching. -// A serialized instance of one should be deserializable as the other. -type NonPackedTest struct { - A []int32 `protobuf:"varint,1,rep,name=a" json:"a,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *NonPackedTest) Reset() { *m = NonPackedTest{} } -func (m *NonPackedTest) String() string { return proto.CompactTextString(m) } -func (*NonPackedTest) ProtoMessage() {} -func (*NonPackedTest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *NonPackedTest) GetA() []int32 { - if m != nil { - return m.A - } - return nil -} - -type PackedTest struct { - B []int32 `protobuf:"varint,1,rep,packed,name=b" json:"b,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PackedTest) Reset() { *m = PackedTest{} } -func (m *PackedTest) String() string { return proto.CompactTextString(m) } -func (*PackedTest) ProtoMessage() {} -func (*PackedTest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *PackedTest) GetB() []int32 { - if m != nil { - return m.B - } - return nil -} - -type MaxTag struct { - // Maximum possible tag number. - LastField *string `protobuf:"bytes,536870911,opt,name=last_field,json=lastField" json:"last_field,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MaxTag) Reset() { *m = MaxTag{} } -func (m *MaxTag) String() string { return proto.CompactTextString(m) } -func (*MaxTag) ProtoMessage() {} -func (*MaxTag) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *MaxTag) GetLastField() string { - if m != nil && m.LastField != nil { - return *m.LastField - } - return "" -} - -type OldMessage struct { - Nested *OldMessage_Nested `protobuf:"bytes,1,opt,name=nested" json:"nested,omitempty"` - Num *int32 `protobuf:"varint,2,opt,name=num" json:"num,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OldMessage) Reset() { *m = OldMessage{} } -func (m *OldMessage) String() string { return proto.CompactTextString(m) } -func (*OldMessage) ProtoMessage() {} -func (*OldMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *OldMessage) GetNested() *OldMessage_Nested { - if m != nil { - return m.Nested - } - return nil -} - -func (m *OldMessage) GetNum() int32 { - if m != nil && m.Num != nil { - return *m.Num - } - return 0 -} - -type OldMessage_Nested struct { - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OldMessage_Nested) Reset() { *m = OldMessage_Nested{} } -func (m *OldMessage_Nested) String() string { return proto.CompactTextString(m) } -func (*OldMessage_Nested) ProtoMessage() {} -func (*OldMessage_Nested) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8, 0} } - -func (m *OldMessage_Nested) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -// NewMessage is wire compatible with OldMessage; -// imagine it as a future version. -type NewMessage struct { - Nested *NewMessage_Nested `protobuf:"bytes,1,opt,name=nested" json:"nested,omitempty"` - // This is an int32 in OldMessage. - Num *int64 `protobuf:"varint,2,opt,name=num" json:"num,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *NewMessage) Reset() { *m = NewMessage{} } -func (m *NewMessage) String() string { return proto.CompactTextString(m) } -func (*NewMessage) ProtoMessage() {} -func (*NewMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *NewMessage) GetNested() *NewMessage_Nested { - if m != nil { - return m.Nested - } - return nil -} - -func (m *NewMessage) GetNum() int64 { - if m != nil && m.Num != nil { - return *m.Num - } - return 0 -} - -type NewMessage_Nested struct { - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - FoodGroup *string `protobuf:"bytes,2,opt,name=food_group,json=foodGroup" json:"food_group,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *NewMessage_Nested) Reset() { *m = NewMessage_Nested{} } -func (m *NewMessage_Nested) String() string { return proto.CompactTextString(m) } -func (*NewMessage_Nested) ProtoMessage() {} -func (*NewMessage_Nested) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 0} } - -func (m *NewMessage_Nested) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *NewMessage_Nested) GetFoodGroup() string { - if m != nil && m.FoodGroup != nil { - return *m.FoodGroup - } - return "" -} - -type InnerMessage struct { - Host *string `protobuf:"bytes,1,req,name=host" json:"host,omitempty"` - Port *int32 `protobuf:"varint,2,opt,name=port,def=4000" json:"port,omitempty"` - Connected *bool `protobuf:"varint,3,opt,name=connected" json:"connected,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *InnerMessage) Reset() { *m = InnerMessage{} } -func (m *InnerMessage) String() string { return proto.CompactTextString(m) } -func (*InnerMessage) ProtoMessage() {} -func (*InnerMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -const Default_InnerMessage_Port int32 = 4000 - -func (m *InnerMessage) GetHost() string { - if m != nil && m.Host != nil { - return *m.Host - } - return "" -} - -func (m *InnerMessage) GetPort() int32 { - if m != nil && m.Port != nil { - return *m.Port - } - return Default_InnerMessage_Port -} - -func (m *InnerMessage) GetConnected() bool { - if m != nil && m.Connected != nil { - return *m.Connected - } - return false -} - -type OtherMessage struct { - Key *int64 `protobuf:"varint,1,opt,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - Weight *float32 `protobuf:"fixed32,3,opt,name=weight" json:"weight,omitempty"` - Inner *InnerMessage `protobuf:"bytes,4,opt,name=inner" json:"inner,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OtherMessage) Reset() { *m = OtherMessage{} } -func (m *OtherMessage) String() string { return proto.CompactTextString(m) } -func (*OtherMessage) ProtoMessage() {} -func (*OtherMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -var extRange_OtherMessage = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*OtherMessage) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_OtherMessage -} - -func (m *OtherMessage) GetKey() int64 { - if m != nil && m.Key != nil { - return *m.Key - } - return 0 -} - -func (m *OtherMessage) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func (m *OtherMessage) GetWeight() float32 { - if m != nil && m.Weight != nil { - return *m.Weight - } - return 0 -} - -func (m *OtherMessage) GetInner() *InnerMessage { - if m != nil { - return m.Inner - } - return nil -} - -type RequiredInnerMessage struct { - LeoFinallyWonAnOscar *InnerMessage `protobuf:"bytes,1,req,name=leo_finally_won_an_oscar,json=leoFinallyWonAnOscar" json:"leo_finally_won_an_oscar,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *RequiredInnerMessage) Reset() { *m = RequiredInnerMessage{} } -func (m *RequiredInnerMessage) String() string { return proto.CompactTextString(m) } -func (*RequiredInnerMessage) ProtoMessage() {} -func (*RequiredInnerMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *RequiredInnerMessage) GetLeoFinallyWonAnOscar() *InnerMessage { - if m != nil { - return m.LeoFinallyWonAnOscar - } - return nil -} - -type MyMessage struct { - Count *int32 `protobuf:"varint,1,req,name=count" json:"count,omitempty"` - Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - Quote *string `protobuf:"bytes,3,opt,name=quote" json:"quote,omitempty"` - Pet []string `protobuf:"bytes,4,rep,name=pet" json:"pet,omitempty"` - Inner *InnerMessage `protobuf:"bytes,5,opt,name=inner" json:"inner,omitempty"` - Others []*OtherMessage `protobuf:"bytes,6,rep,name=others" json:"others,omitempty"` - WeMustGoDeeper *RequiredInnerMessage `protobuf:"bytes,13,opt,name=we_must_go_deeper,json=weMustGoDeeper" json:"we_must_go_deeper,omitempty"` - RepInner []*InnerMessage `protobuf:"bytes,12,rep,name=rep_inner,json=repInner" json:"rep_inner,omitempty"` - Bikeshed *MyMessage_Color `protobuf:"varint,7,opt,name=bikeshed,enum=testdata.MyMessage_Color" json:"bikeshed,omitempty"` - Somegroup *MyMessage_SomeGroup `protobuf:"group,8,opt,name=SomeGroup,json=somegroup" json:"somegroup,omitempty"` - // This field becomes [][]byte in the generated code. - RepBytes [][]byte `protobuf:"bytes,10,rep,name=rep_bytes,json=repBytes" json:"rep_bytes,omitempty"` - Bigfloat *float64 `protobuf:"fixed64,11,opt,name=bigfloat" json:"bigfloat,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MyMessage) Reset() { *m = MyMessage{} } -func (m *MyMessage) String() string { return proto.CompactTextString(m) } -func (*MyMessage) ProtoMessage() {} -func (*MyMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -var extRange_MyMessage = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*MyMessage) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_MyMessage -} - -func (m *MyMessage) GetCount() int32 { - if m != nil && m.Count != nil { - return *m.Count - } - return 0 -} - -func (m *MyMessage) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *MyMessage) GetQuote() string { - if m != nil && m.Quote != nil { - return *m.Quote - } - return "" -} - -func (m *MyMessage) GetPet() []string { - if m != nil { - return m.Pet - } - return nil -} - -func (m *MyMessage) GetInner() *InnerMessage { - if m != nil { - return m.Inner - } - return nil -} - -func (m *MyMessage) GetOthers() []*OtherMessage { - if m != nil { - return m.Others - } - return nil -} - -func (m *MyMessage) GetWeMustGoDeeper() *RequiredInnerMessage { - if m != nil { - return m.WeMustGoDeeper - } - return nil -} - -func (m *MyMessage) GetRepInner() []*InnerMessage { - if m != nil { - return m.RepInner - } - return nil -} - -func (m *MyMessage) GetBikeshed() MyMessage_Color { - if m != nil && m.Bikeshed != nil { - return *m.Bikeshed - } - return MyMessage_RED -} - -func (m *MyMessage) GetSomegroup() *MyMessage_SomeGroup { - if m != nil { - return m.Somegroup - } - return nil -} - -func (m *MyMessage) GetRepBytes() [][]byte { - if m != nil { - return m.RepBytes - } - return nil -} - -func (m *MyMessage) GetBigfloat() float64 { - if m != nil && m.Bigfloat != nil { - return *m.Bigfloat - } - return 0 -} - -type MyMessage_SomeGroup struct { - GroupField *int32 `protobuf:"varint,9,opt,name=group_field,json=groupField" json:"group_field,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MyMessage_SomeGroup) Reset() { *m = MyMessage_SomeGroup{} } -func (m *MyMessage_SomeGroup) String() string { return proto.CompactTextString(m) } -func (*MyMessage_SomeGroup) ProtoMessage() {} -func (*MyMessage_SomeGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} } - -func (m *MyMessage_SomeGroup) GetGroupField() int32 { - if m != nil && m.GroupField != nil { - return *m.GroupField - } - return 0 -} - -type Ext struct { - Data *string `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Ext) Reset() { *m = Ext{} } -func (m *Ext) String() string { return proto.CompactTextString(m) } -func (*Ext) ProtoMessage() {} -func (*Ext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *Ext) GetData() string { - if m != nil && m.Data != nil { - return *m.Data - } - return "" -} - -var E_Ext_More = &proto.ExtensionDesc{ - ExtendedType: (*MyMessage)(nil), - ExtensionType: (*Ext)(nil), - Field: 103, - Name: "testdata.Ext.more", - Tag: "bytes,103,opt,name=more", - Filename: "test.proto", -} - -var E_Ext_Text = &proto.ExtensionDesc{ - ExtendedType: (*MyMessage)(nil), - ExtensionType: (*string)(nil), - Field: 104, - Name: "testdata.Ext.text", - Tag: "bytes,104,opt,name=text", - Filename: "test.proto", -} - -var E_Ext_Number = &proto.ExtensionDesc{ - ExtendedType: (*MyMessage)(nil), - ExtensionType: (*int32)(nil), - Field: 105, - Name: "testdata.Ext.number", - Tag: "varint,105,opt,name=number", - Filename: "test.proto", -} - -type ComplexExtension struct { - First *int32 `protobuf:"varint,1,opt,name=first" json:"first,omitempty"` - Second *int32 `protobuf:"varint,2,opt,name=second" json:"second,omitempty"` - Third []int32 `protobuf:"varint,3,rep,name=third" json:"third,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ComplexExtension) Reset() { *m = ComplexExtension{} } -func (m *ComplexExtension) String() string { return proto.CompactTextString(m) } -func (*ComplexExtension) ProtoMessage() {} -func (*ComplexExtension) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *ComplexExtension) GetFirst() int32 { - if m != nil && m.First != nil { - return *m.First - } - return 0 -} - -func (m *ComplexExtension) GetSecond() int32 { - if m != nil && m.Second != nil { - return *m.Second - } - return 0 -} - -func (m *ComplexExtension) GetThird() []int32 { - if m != nil { - return m.Third - } - return nil -} - -type DefaultsMessage struct { - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DefaultsMessage) Reset() { *m = DefaultsMessage{} } -func (m *DefaultsMessage) String() string { return proto.CompactTextString(m) } -func (*DefaultsMessage) ProtoMessage() {} -func (*DefaultsMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -var extRange_DefaultsMessage = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*DefaultsMessage) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_DefaultsMessage -} - -type MyMessageSet struct { - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MyMessageSet) Reset() { *m = MyMessageSet{} } -func (m *MyMessageSet) String() string { return proto.CompactTextString(m) } -func (*MyMessageSet) ProtoMessage() {} -func (*MyMessageSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *MyMessageSet) Marshal() ([]byte, error) { - return proto.MarshalMessageSet(&m.XXX_InternalExtensions) -} -func (m *MyMessageSet) Unmarshal(buf []byte) error { - return proto.UnmarshalMessageSet(buf, &m.XXX_InternalExtensions) -} -func (m *MyMessageSet) MarshalJSON() ([]byte, error) { - return proto.MarshalMessageSetJSON(&m.XXX_InternalExtensions) -} -func (m *MyMessageSet) UnmarshalJSON(buf []byte) error { - return proto.UnmarshalMessageSetJSON(buf, &m.XXX_InternalExtensions) -} - -// ensure MyMessageSet satisfies proto.Marshaler and proto.Unmarshaler -var _ proto.Marshaler = (*MyMessageSet)(nil) -var _ proto.Unmarshaler = (*MyMessageSet)(nil) - -var extRange_MyMessageSet = []proto.ExtensionRange{ - {100, 2147483646}, -} - -func (*MyMessageSet) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_MyMessageSet -} - -type Empty struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *Empty) Reset() { *m = Empty{} } -func (m *Empty) String() string { return proto.CompactTextString(m) } -func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -type MessageList struct { - Message []*MessageList_Message `protobuf:"group,1,rep,name=Message,json=message" json:"message,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MessageList) Reset() { *m = MessageList{} } -func (m *MessageList) String() string { return proto.CompactTextString(m) } -func (*MessageList) ProtoMessage() {} -func (*MessageList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *MessageList) GetMessage() []*MessageList_Message { - if m != nil { - return m.Message - } - return nil -} - -type MessageList_Message struct { - Name *string `protobuf:"bytes,2,req,name=name" json:"name,omitempty"` - Count *int32 `protobuf:"varint,3,req,name=count" json:"count,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MessageList_Message) Reset() { *m = MessageList_Message{} } -func (m *MessageList_Message) String() string { return proto.CompactTextString(m) } -func (*MessageList_Message) ProtoMessage() {} -func (*MessageList_Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19, 0} } - -func (m *MessageList_Message) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *MessageList_Message) GetCount() int32 { - if m != nil && m.Count != nil { - return *m.Count - } - return 0 -} - -type Strings struct { - StringField *string `protobuf:"bytes,1,opt,name=string_field,json=stringField" json:"string_field,omitempty"` - BytesField []byte `protobuf:"bytes,2,opt,name=bytes_field,json=bytesField" json:"bytes_field,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Strings) Reset() { *m = Strings{} } -func (m *Strings) String() string { return proto.CompactTextString(m) } -func (*Strings) ProtoMessage() {} -func (*Strings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *Strings) GetStringField() string { - if m != nil && m.StringField != nil { - return *m.StringField - } - return "" -} - -func (m *Strings) GetBytesField() []byte { - if m != nil { - return m.BytesField - } - return nil -} - -type Defaults struct { - // Default-valued fields of all basic types. - // Same as GoTest, but copied here to make testing easier. - F_Bool *bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,def=1" json:"F_Bool,omitempty"` - F_Int32 *int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,def=32" json:"F_Int32,omitempty"` - F_Int64 *int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,def=64" json:"F_Int64,omitempty"` - F_Fixed32 *uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,def=320" json:"F_Fixed32,omitempty"` - F_Fixed64 *uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,def=640" json:"F_Fixed64,omitempty"` - F_Uint32 *uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,def=3200" json:"F_Uint32,omitempty"` - F_Uint64 *uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,def=6400" json:"F_Uint64,omitempty"` - F_Float *float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,def=314159" json:"F_Float,omitempty"` - F_Double *float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,def=271828" json:"F_Double,omitempty"` - F_String *string `protobuf:"bytes,10,opt,name=F_String,json=FString,def=hello, \"world!\"\n" json:"F_String,omitempty"` - F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,def=Bignose" json:"F_Bytes,omitempty"` - F_Sint32 *int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,def=-32" json:"F_Sint32,omitempty"` - F_Sint64 *int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,def=-64" json:"F_Sint64,omitempty"` - F_Enum *Defaults_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=testdata.Defaults_Color,def=1" json:"F_Enum,omitempty"` - // More fields with crazy defaults. - F_Pinf *float32 `protobuf:"fixed32,15,opt,name=F_Pinf,json=FPinf,def=inf" json:"F_Pinf,omitempty"` - F_Ninf *float32 `protobuf:"fixed32,16,opt,name=F_Ninf,json=FNinf,def=-inf" json:"F_Ninf,omitempty"` - F_Nan *float32 `protobuf:"fixed32,17,opt,name=F_Nan,json=FNan,def=nan" json:"F_Nan,omitempty"` - // Sub-message. - Sub *SubDefaults `protobuf:"bytes,18,opt,name=sub" json:"sub,omitempty"` - // Redundant but explicit defaults. - StrZero *string `protobuf:"bytes,19,opt,name=str_zero,json=strZero,def=" json:"str_zero,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Defaults) Reset() { *m = Defaults{} } -func (m *Defaults) String() string { return proto.CompactTextString(m) } -func (*Defaults) ProtoMessage() {} -func (*Defaults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -const Default_Defaults_F_Bool bool = true -const Default_Defaults_F_Int32 int32 = 32 -const Default_Defaults_F_Int64 int64 = 64 -const Default_Defaults_F_Fixed32 uint32 = 320 -const Default_Defaults_F_Fixed64 uint64 = 640 -const Default_Defaults_F_Uint32 uint32 = 3200 -const Default_Defaults_F_Uint64 uint64 = 6400 -const Default_Defaults_F_Float float32 = 314159 -const Default_Defaults_F_Double float64 = 271828 -const Default_Defaults_F_String string = "hello, \"world!\"\n" - -var Default_Defaults_F_Bytes []byte = []byte("Bignose") - -const Default_Defaults_F_Sint32 int32 = -32 -const Default_Defaults_F_Sint64 int64 = -64 -const Default_Defaults_F_Enum Defaults_Color = Defaults_GREEN - -var Default_Defaults_F_Pinf float32 = float32(math.Inf(1)) -var Default_Defaults_F_Ninf float32 = float32(math.Inf(-1)) -var Default_Defaults_F_Nan float32 = float32(math.NaN()) - -func (m *Defaults) GetF_Bool() bool { - if m != nil && m.F_Bool != nil { - return *m.F_Bool - } - return Default_Defaults_F_Bool -} - -func (m *Defaults) GetF_Int32() int32 { - if m != nil && m.F_Int32 != nil { - return *m.F_Int32 - } - return Default_Defaults_F_Int32 -} - -func (m *Defaults) GetF_Int64() int64 { - if m != nil && m.F_Int64 != nil { - return *m.F_Int64 - } - return Default_Defaults_F_Int64 -} - -func (m *Defaults) GetF_Fixed32() uint32 { - if m != nil && m.F_Fixed32 != nil { - return *m.F_Fixed32 - } - return Default_Defaults_F_Fixed32 -} - -func (m *Defaults) GetF_Fixed64() uint64 { - if m != nil && m.F_Fixed64 != nil { - return *m.F_Fixed64 - } - return Default_Defaults_F_Fixed64 -} - -func (m *Defaults) GetF_Uint32() uint32 { - if m != nil && m.F_Uint32 != nil { - return *m.F_Uint32 - } - return Default_Defaults_F_Uint32 -} - -func (m *Defaults) GetF_Uint64() uint64 { - if m != nil && m.F_Uint64 != nil { - return *m.F_Uint64 - } - return Default_Defaults_F_Uint64 -} - -func (m *Defaults) GetF_Float() float32 { - if m != nil && m.F_Float != nil { - return *m.F_Float - } - return Default_Defaults_F_Float -} - -func (m *Defaults) GetF_Double() float64 { - if m != nil && m.F_Double != nil { - return *m.F_Double - } - return Default_Defaults_F_Double -} - -func (m *Defaults) GetF_String() string { - if m != nil && m.F_String != nil { - return *m.F_String - } - return Default_Defaults_F_String -} - -func (m *Defaults) GetF_Bytes() []byte { - if m != nil && m.F_Bytes != nil { - return m.F_Bytes - } - return append([]byte(nil), Default_Defaults_F_Bytes...) -} - -func (m *Defaults) GetF_Sint32() int32 { - if m != nil && m.F_Sint32 != nil { - return *m.F_Sint32 - } - return Default_Defaults_F_Sint32 -} - -func (m *Defaults) GetF_Sint64() int64 { - if m != nil && m.F_Sint64 != nil { - return *m.F_Sint64 - } - return Default_Defaults_F_Sint64 -} - -func (m *Defaults) GetF_Enum() Defaults_Color { - if m != nil && m.F_Enum != nil { - return *m.F_Enum - } - return Default_Defaults_F_Enum -} - -func (m *Defaults) GetF_Pinf() float32 { - if m != nil && m.F_Pinf != nil { - return *m.F_Pinf - } - return Default_Defaults_F_Pinf -} - -func (m *Defaults) GetF_Ninf() float32 { - if m != nil && m.F_Ninf != nil { - return *m.F_Ninf - } - return Default_Defaults_F_Ninf -} - -func (m *Defaults) GetF_Nan() float32 { - if m != nil && m.F_Nan != nil { - return *m.F_Nan - } - return Default_Defaults_F_Nan -} - -func (m *Defaults) GetSub() *SubDefaults { - if m != nil { - return m.Sub - } - return nil -} - -func (m *Defaults) GetStrZero() string { - if m != nil && m.StrZero != nil { - return *m.StrZero - } - return "" -} - -type SubDefaults struct { - N *int64 `protobuf:"varint,1,opt,name=n,def=7" json:"n,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SubDefaults) Reset() { *m = SubDefaults{} } -func (m *SubDefaults) String() string { return proto.CompactTextString(m) } -func (*SubDefaults) ProtoMessage() {} -func (*SubDefaults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -const Default_SubDefaults_N int64 = 7 - -func (m *SubDefaults) GetN() int64 { - if m != nil && m.N != nil { - return *m.N - } - return Default_SubDefaults_N -} - -type RepeatedEnum struct { - Color []RepeatedEnum_Color `protobuf:"varint,1,rep,name=color,enum=testdata.RepeatedEnum_Color" json:"color,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *RepeatedEnum) Reset() { *m = RepeatedEnum{} } -func (m *RepeatedEnum) String() string { return proto.CompactTextString(m) } -func (*RepeatedEnum) ProtoMessage() {} -func (*RepeatedEnum) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *RepeatedEnum) GetColor() []RepeatedEnum_Color { - if m != nil { - return m.Color - } - return nil -} - -type MoreRepeated struct { - Bools []bool `protobuf:"varint,1,rep,name=bools" json:"bools,omitempty"` - BoolsPacked []bool `protobuf:"varint,2,rep,packed,name=bools_packed,json=boolsPacked" json:"bools_packed,omitempty"` - Ints []int32 `protobuf:"varint,3,rep,name=ints" json:"ints,omitempty"` - IntsPacked []int32 `protobuf:"varint,4,rep,packed,name=ints_packed,json=intsPacked" json:"ints_packed,omitempty"` - Int64SPacked []int64 `protobuf:"varint,7,rep,packed,name=int64s_packed,json=int64sPacked" json:"int64s_packed,omitempty"` - Strings []string `protobuf:"bytes,5,rep,name=strings" json:"strings,omitempty"` - Fixeds []uint32 `protobuf:"fixed32,6,rep,name=fixeds" json:"fixeds,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MoreRepeated) Reset() { *m = MoreRepeated{} } -func (m *MoreRepeated) String() string { return proto.CompactTextString(m) } -func (*MoreRepeated) ProtoMessage() {} -func (*MoreRepeated) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *MoreRepeated) GetBools() []bool { - if m != nil { - return m.Bools - } - return nil -} - -func (m *MoreRepeated) GetBoolsPacked() []bool { - if m != nil { - return m.BoolsPacked - } - return nil -} - -func (m *MoreRepeated) GetInts() []int32 { - if m != nil { - return m.Ints - } - return nil -} - -func (m *MoreRepeated) GetIntsPacked() []int32 { - if m != nil { - return m.IntsPacked - } - return nil -} - -func (m *MoreRepeated) GetInt64SPacked() []int64 { - if m != nil { - return m.Int64SPacked - } - return nil -} - -func (m *MoreRepeated) GetStrings() []string { - if m != nil { - return m.Strings - } - return nil -} - -func (m *MoreRepeated) GetFixeds() []uint32 { - if m != nil { - return m.Fixeds - } - return nil -} - -type GroupOld struct { - G *GroupOld_G `protobuf:"group,101,opt,name=G,json=g" json:"g,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GroupOld) Reset() { *m = GroupOld{} } -func (m *GroupOld) String() string { return proto.CompactTextString(m) } -func (*GroupOld) ProtoMessage() {} -func (*GroupOld) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *GroupOld) GetG() *GroupOld_G { - if m != nil { - return m.G - } - return nil -} - -type GroupOld_G struct { - X *int32 `protobuf:"varint,2,opt,name=x" json:"x,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GroupOld_G) Reset() { *m = GroupOld_G{} } -func (m *GroupOld_G) String() string { return proto.CompactTextString(m) } -func (*GroupOld_G) ProtoMessage() {} -func (*GroupOld_G) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25, 0} } - -func (m *GroupOld_G) GetX() int32 { - if m != nil && m.X != nil { - return *m.X - } - return 0 -} - -type GroupNew struct { - G *GroupNew_G `protobuf:"group,101,opt,name=G,json=g" json:"g,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GroupNew) Reset() { *m = GroupNew{} } -func (m *GroupNew) String() string { return proto.CompactTextString(m) } -func (*GroupNew) ProtoMessage() {} -func (*GroupNew) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *GroupNew) GetG() *GroupNew_G { - if m != nil { - return m.G - } - return nil -} - -type GroupNew_G struct { - X *int32 `protobuf:"varint,2,opt,name=x" json:"x,omitempty"` - Y *int32 `protobuf:"varint,3,opt,name=y" json:"y,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GroupNew_G) Reset() { *m = GroupNew_G{} } -func (m *GroupNew_G) String() string { return proto.CompactTextString(m) } -func (*GroupNew_G) ProtoMessage() {} -func (*GroupNew_G) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26, 0} } - -func (m *GroupNew_G) GetX() int32 { - if m != nil && m.X != nil { - return *m.X - } - return 0 -} - -func (m *GroupNew_G) GetY() int32 { - if m != nil && m.Y != nil { - return *m.Y - } - return 0 -} - -type FloatingPoint struct { - F *float64 `protobuf:"fixed64,1,req,name=f" json:"f,omitempty"` - Exact *bool `protobuf:"varint,2,opt,name=exact" json:"exact,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FloatingPoint) Reset() { *m = FloatingPoint{} } -func (m *FloatingPoint) String() string { return proto.CompactTextString(m) } -func (*FloatingPoint) ProtoMessage() {} -func (*FloatingPoint) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *FloatingPoint) GetF() float64 { - if m != nil && m.F != nil { - return *m.F - } - return 0 -} - -func (m *FloatingPoint) GetExact() bool { - if m != nil && m.Exact != nil { - return *m.Exact - } - return false -} - -type MessageWithMap struct { - NameMapping map[int32]string `protobuf:"bytes,1,rep,name=name_mapping,json=nameMapping" json:"name_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - MsgMapping map[int64]*FloatingPoint `protobuf:"bytes,2,rep,name=msg_mapping,json=msgMapping" json:"msg_mapping,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - ByteMapping map[bool][]byte `protobuf:"bytes,3,rep,name=byte_mapping,json=byteMapping" json:"byte_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - StrToStr map[string]string `protobuf:"bytes,4,rep,name=str_to_str,json=strToStr" json:"str_to_str,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MessageWithMap) Reset() { *m = MessageWithMap{} } -func (m *MessageWithMap) String() string { return proto.CompactTextString(m) } -func (*MessageWithMap) ProtoMessage() {} -func (*MessageWithMap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *MessageWithMap) GetNameMapping() map[int32]string { - if m != nil { - return m.NameMapping - } - return nil -} - -func (m *MessageWithMap) GetMsgMapping() map[int64]*FloatingPoint { - if m != nil { - return m.MsgMapping - } - return nil -} - -func (m *MessageWithMap) GetByteMapping() map[bool][]byte { - if m != nil { - return m.ByteMapping - } - return nil -} - -func (m *MessageWithMap) GetStrToStr() map[string]string { - if m != nil { - return m.StrToStr - } - return nil -} - -type Oneof struct { - // Types that are valid to be assigned to Union: - // *Oneof_F_Bool - // *Oneof_F_Int32 - // *Oneof_F_Int64 - // *Oneof_F_Fixed32 - // *Oneof_F_Fixed64 - // *Oneof_F_Uint32 - // *Oneof_F_Uint64 - // *Oneof_F_Float - // *Oneof_F_Double - // *Oneof_F_String - // *Oneof_F_Bytes - // *Oneof_F_Sint32 - // *Oneof_F_Sint64 - // *Oneof_F_Enum - // *Oneof_F_Message - // *Oneof_FGroup - // *Oneof_F_Largest_Tag - Union isOneof_Union `protobuf_oneof:"union"` - // Types that are valid to be assigned to Tormato: - // *Oneof_Value - Tormato isOneof_Tormato `protobuf_oneof:"tormato"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Oneof) Reset() { *m = Oneof{} } -func (m *Oneof) String() string { return proto.CompactTextString(m) } -func (*Oneof) ProtoMessage() {} -func (*Oneof) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -type isOneof_Union interface { - isOneof_Union() -} -type isOneof_Tormato interface { - isOneof_Tormato() -} - -type Oneof_F_Bool struct { - F_Bool bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,oneof"` -} -type Oneof_F_Int32 struct { - F_Int32 int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,oneof"` -} -type Oneof_F_Int64 struct { - F_Int64 int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,oneof"` -} -type Oneof_F_Fixed32 struct { - F_Fixed32 uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,oneof"` -} -type Oneof_F_Fixed64 struct { - F_Fixed64 uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,oneof"` -} -type Oneof_F_Uint32 struct { - F_Uint32 uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,oneof"` -} -type Oneof_F_Uint64 struct { - F_Uint64 uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,oneof"` -} -type Oneof_F_Float struct { - F_Float float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,oneof"` -} -type Oneof_F_Double struct { - F_Double float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,oneof"` -} -type Oneof_F_String struct { - F_String string `protobuf:"bytes,10,opt,name=F_String,json=FString,oneof"` -} -type Oneof_F_Bytes struct { - F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,oneof"` -} -type Oneof_F_Sint32 struct { - F_Sint32 int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,oneof"` -} -type Oneof_F_Sint64 struct { - F_Sint64 int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,oneof"` -} -type Oneof_F_Enum struct { - F_Enum MyMessage_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=testdata.MyMessage_Color,oneof"` -} -type Oneof_F_Message struct { - F_Message *GoTestField `protobuf:"bytes,15,opt,name=F_Message,json=FMessage,oneof"` -} -type Oneof_FGroup struct { - FGroup *Oneof_F_Group `protobuf:"group,16,opt,name=F_Group,json=fGroup,oneof"` -} -type Oneof_F_Largest_Tag struct { - F_Largest_Tag int32 `protobuf:"varint,536870911,opt,name=F_Largest_Tag,json=FLargestTag,oneof"` -} -type Oneof_Value struct { - Value int32 `protobuf:"varint,100,opt,name=value,oneof"` -} - -func (*Oneof_F_Bool) isOneof_Union() {} -func (*Oneof_F_Int32) isOneof_Union() {} -func (*Oneof_F_Int64) isOneof_Union() {} -func (*Oneof_F_Fixed32) isOneof_Union() {} -func (*Oneof_F_Fixed64) isOneof_Union() {} -func (*Oneof_F_Uint32) isOneof_Union() {} -func (*Oneof_F_Uint64) isOneof_Union() {} -func (*Oneof_F_Float) isOneof_Union() {} -func (*Oneof_F_Double) isOneof_Union() {} -func (*Oneof_F_String) isOneof_Union() {} -func (*Oneof_F_Bytes) isOneof_Union() {} -func (*Oneof_F_Sint32) isOneof_Union() {} -func (*Oneof_F_Sint64) isOneof_Union() {} -func (*Oneof_F_Enum) isOneof_Union() {} -func (*Oneof_F_Message) isOneof_Union() {} -func (*Oneof_FGroup) isOneof_Union() {} -func (*Oneof_F_Largest_Tag) isOneof_Union() {} -func (*Oneof_Value) isOneof_Tormato() {} - -func (m *Oneof) GetUnion() isOneof_Union { - if m != nil { - return m.Union - } - return nil -} -func (m *Oneof) GetTormato() isOneof_Tormato { - if m != nil { - return m.Tormato - } - return nil -} - -func (m *Oneof) GetF_Bool() bool { - if x, ok := m.GetUnion().(*Oneof_F_Bool); ok { - return x.F_Bool - } - return false -} - -func (m *Oneof) GetF_Int32() int32 { - if x, ok := m.GetUnion().(*Oneof_F_Int32); ok { - return x.F_Int32 - } - return 0 -} - -func (m *Oneof) GetF_Int64() int64 { - if x, ok := m.GetUnion().(*Oneof_F_Int64); ok { - return x.F_Int64 - } - return 0 -} - -func (m *Oneof) GetF_Fixed32() uint32 { - if x, ok := m.GetUnion().(*Oneof_F_Fixed32); ok { - return x.F_Fixed32 - } - return 0 -} - -func (m *Oneof) GetF_Fixed64() uint64 { - if x, ok := m.GetUnion().(*Oneof_F_Fixed64); ok { - return x.F_Fixed64 - } - return 0 -} - -func (m *Oneof) GetF_Uint32() uint32 { - if x, ok := m.GetUnion().(*Oneof_F_Uint32); ok { - return x.F_Uint32 - } - return 0 -} - -func (m *Oneof) GetF_Uint64() uint64 { - if x, ok := m.GetUnion().(*Oneof_F_Uint64); ok { - return x.F_Uint64 - } - return 0 -} - -func (m *Oneof) GetF_Float() float32 { - if x, ok := m.GetUnion().(*Oneof_F_Float); ok { - return x.F_Float - } - return 0 -} - -func (m *Oneof) GetF_Double() float64 { - if x, ok := m.GetUnion().(*Oneof_F_Double); ok { - return x.F_Double - } - return 0 -} - -func (m *Oneof) GetF_String() string { - if x, ok := m.GetUnion().(*Oneof_F_String); ok { - return x.F_String - } - return "" -} - -func (m *Oneof) GetF_Bytes() []byte { - if x, ok := m.GetUnion().(*Oneof_F_Bytes); ok { - return x.F_Bytes - } - return nil -} - -func (m *Oneof) GetF_Sint32() int32 { - if x, ok := m.GetUnion().(*Oneof_F_Sint32); ok { - return x.F_Sint32 - } - return 0 -} - -func (m *Oneof) GetF_Sint64() int64 { - if x, ok := m.GetUnion().(*Oneof_F_Sint64); ok { - return x.F_Sint64 - } - return 0 -} - -func (m *Oneof) GetF_Enum() MyMessage_Color { - if x, ok := m.GetUnion().(*Oneof_F_Enum); ok { - return x.F_Enum - } - return MyMessage_RED -} - -func (m *Oneof) GetF_Message() *GoTestField { - if x, ok := m.GetUnion().(*Oneof_F_Message); ok { - return x.F_Message - } - return nil -} - -func (m *Oneof) GetFGroup() *Oneof_F_Group { - if x, ok := m.GetUnion().(*Oneof_FGroup); ok { - return x.FGroup - } - return nil -} - -func (m *Oneof) GetF_Largest_Tag() int32 { - if x, ok := m.GetUnion().(*Oneof_F_Largest_Tag); ok { - return x.F_Largest_Tag - } - return 0 -} - -func (m *Oneof) GetValue() int32 { - if x, ok := m.GetTormato().(*Oneof_Value); ok { - return x.Value - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Oneof) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Oneof_OneofMarshaler, _Oneof_OneofUnmarshaler, _Oneof_OneofSizer, []interface{}{ - (*Oneof_F_Bool)(nil), - (*Oneof_F_Int32)(nil), - (*Oneof_F_Int64)(nil), - (*Oneof_F_Fixed32)(nil), - (*Oneof_F_Fixed64)(nil), - (*Oneof_F_Uint32)(nil), - (*Oneof_F_Uint64)(nil), - (*Oneof_F_Float)(nil), - (*Oneof_F_Double)(nil), - (*Oneof_F_String)(nil), - (*Oneof_F_Bytes)(nil), - (*Oneof_F_Sint32)(nil), - (*Oneof_F_Sint64)(nil), - (*Oneof_F_Enum)(nil), - (*Oneof_F_Message)(nil), - (*Oneof_FGroup)(nil), - (*Oneof_F_Largest_Tag)(nil), - (*Oneof_Value)(nil), - } -} - -func _Oneof_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Oneof) - // union - switch x := m.Union.(type) { - case *Oneof_F_Bool: - t := uint64(0) - if x.F_Bool { - t = 1 - } - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Oneof_F_Int32: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.F_Int32)) - case *Oneof_F_Int64: - b.EncodeVarint(3<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.F_Int64)) - case *Oneof_F_Fixed32: - b.EncodeVarint(4<<3 | proto.WireFixed32) - b.EncodeFixed32(uint64(x.F_Fixed32)) - case *Oneof_F_Fixed64: - b.EncodeVarint(5<<3 | proto.WireFixed64) - b.EncodeFixed64(uint64(x.F_Fixed64)) - case *Oneof_F_Uint32: - b.EncodeVarint(6<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.F_Uint32)) - case *Oneof_F_Uint64: - b.EncodeVarint(7<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.F_Uint64)) - case *Oneof_F_Float: - b.EncodeVarint(8<<3 | proto.WireFixed32) - b.EncodeFixed32(uint64(math.Float32bits(x.F_Float))) - case *Oneof_F_Double: - b.EncodeVarint(9<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.F_Double)) - case *Oneof_F_String: - b.EncodeVarint(10<<3 | proto.WireBytes) - b.EncodeStringBytes(x.F_String) - case *Oneof_F_Bytes: - b.EncodeVarint(11<<3 | proto.WireBytes) - b.EncodeRawBytes(x.F_Bytes) - case *Oneof_F_Sint32: - b.EncodeVarint(12<<3 | proto.WireVarint) - b.EncodeZigzag32(uint64(x.F_Sint32)) - case *Oneof_F_Sint64: - b.EncodeVarint(13<<3 | proto.WireVarint) - b.EncodeZigzag64(uint64(x.F_Sint64)) - case *Oneof_F_Enum: - b.EncodeVarint(14<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.F_Enum)) - case *Oneof_F_Message: - b.EncodeVarint(15<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.F_Message); err != nil { - return err - } - case *Oneof_FGroup: - b.EncodeVarint(16<<3 | proto.WireStartGroup) - if err := b.Marshal(x.FGroup); err != nil { - return err - } - b.EncodeVarint(16<<3 | proto.WireEndGroup) - case *Oneof_F_Largest_Tag: - b.EncodeVarint(536870911<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.F_Largest_Tag)) - case nil: - default: - return fmt.Errorf("Oneof.Union has unexpected type %T", x) - } - // tormato - switch x := m.Tormato.(type) { - case *Oneof_Value: - b.EncodeVarint(100<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Value)) - case nil: - default: - return fmt.Errorf("Oneof.Tormato has unexpected type %T", x) - } - return nil -} - -func _Oneof_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Oneof) - switch tag { - case 1: // union.F_Bool - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Oneof_F_Bool{x != 0} - return true, err - case 2: // union.F_Int32 - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Oneof_F_Int32{int32(x)} - return true, err - case 3: // union.F_Int64 - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Oneof_F_Int64{int64(x)} - return true, err - case 4: // union.F_Fixed32 - if wire != proto.WireFixed32 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed32() - m.Union = &Oneof_F_Fixed32{uint32(x)} - return true, err - case 5: // union.F_Fixed64 - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Union = &Oneof_F_Fixed64{x} - return true, err - case 6: // union.F_Uint32 - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Oneof_F_Uint32{uint32(x)} - return true, err - case 7: // union.F_Uint64 - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Oneof_F_Uint64{x} - return true, err - case 8: // union.F_Float - if wire != proto.WireFixed32 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed32() - m.Union = &Oneof_F_Float{math.Float32frombits(uint32(x))} - return true, err - case 9: // union.F_Double - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Union = &Oneof_F_Double{math.Float64frombits(x)} - return true, err - case 10: // union.F_String - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Union = &Oneof_F_String{x} - return true, err - case 11: // union.F_Bytes - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Union = &Oneof_F_Bytes{x} - return true, err - case 12: // union.F_Sint32 - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeZigzag32() - m.Union = &Oneof_F_Sint32{int32(x)} - return true, err - case 13: // union.F_Sint64 - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeZigzag64() - m.Union = &Oneof_F_Sint64{int64(x)} - return true, err - case 14: // union.F_Enum - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Oneof_F_Enum{MyMessage_Color(x)} - return true, err - case 15: // union.F_Message - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GoTestField) - err := b.DecodeMessage(msg) - m.Union = &Oneof_F_Message{msg} - return true, err - case 16: // union.f_group - if wire != proto.WireStartGroup { - return true, proto.ErrInternalBadWireType - } - msg := new(Oneof_F_Group) - err := b.DecodeGroup(msg) - m.Union = &Oneof_FGroup{msg} - return true, err - case 536870911: // union.F_Largest_Tag - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Oneof_F_Largest_Tag{int32(x)} - return true, err - case 100: // tormato.value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Tormato = &Oneof_Value{int32(x)} - return true, err - default: - return false, nil - } -} - -func _Oneof_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Oneof) - // union - switch x := m.Union.(type) { - case *Oneof_F_Bool: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += 1 - case *Oneof_F_Int32: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.F_Int32)) - case *Oneof_F_Int64: - n += proto.SizeVarint(3<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.F_Int64)) - case *Oneof_F_Fixed32: - n += proto.SizeVarint(4<<3 | proto.WireFixed32) - n += 4 - case *Oneof_F_Fixed64: - n += proto.SizeVarint(5<<3 | proto.WireFixed64) - n += 8 - case *Oneof_F_Uint32: - n += proto.SizeVarint(6<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.F_Uint32)) - case *Oneof_F_Uint64: - n += proto.SizeVarint(7<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.F_Uint64)) - case *Oneof_F_Float: - n += proto.SizeVarint(8<<3 | proto.WireFixed32) - n += 4 - case *Oneof_F_Double: - n += proto.SizeVarint(9<<3 | proto.WireFixed64) - n += 8 - case *Oneof_F_String: - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.F_String))) - n += len(x.F_String) - case *Oneof_F_Bytes: - n += proto.SizeVarint(11<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.F_Bytes))) - n += len(x.F_Bytes) - case *Oneof_F_Sint32: - n += proto.SizeVarint(12<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64((uint32(x.F_Sint32) << 1) ^ uint32((int32(x.F_Sint32) >> 31)))) - case *Oneof_F_Sint64: - n += proto.SizeVarint(13<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(uint64(x.F_Sint64<<1) ^ uint64((int64(x.F_Sint64) >> 63)))) - case *Oneof_F_Enum: - n += proto.SizeVarint(14<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.F_Enum)) - case *Oneof_F_Message: - s := proto.Size(x.F_Message) - n += proto.SizeVarint(15<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Oneof_FGroup: - n += proto.SizeVarint(16<<3 | proto.WireStartGroup) - n += proto.Size(x.FGroup) - n += proto.SizeVarint(16<<3 | proto.WireEndGroup) - case *Oneof_F_Largest_Tag: - n += proto.SizeVarint(536870911<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.F_Largest_Tag)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // tormato - switch x := m.Tormato.(type) { - case *Oneof_Value: - n += proto.SizeVarint(100<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Value)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type Oneof_F_Group struct { - X *int32 `protobuf:"varint,17,opt,name=x" json:"x,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Oneof_F_Group) Reset() { *m = Oneof_F_Group{} } -func (m *Oneof_F_Group) String() string { return proto.CompactTextString(m) } -func (*Oneof_F_Group) ProtoMessage() {} -func (*Oneof_F_Group) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29, 0} } - -func (m *Oneof_F_Group) GetX() int32 { - if m != nil && m.X != nil { - return *m.X - } - return 0 -} - -type Communique struct { - MakeMeCry *bool `protobuf:"varint,1,opt,name=make_me_cry,json=makeMeCry" json:"make_me_cry,omitempty"` - // This is a oneof, called "union". - // - // Types that are valid to be assigned to Union: - // *Communique_Number - // *Communique_Name - // *Communique_Data - // *Communique_TempC - // *Communique_Col - // *Communique_Msg - Union isCommunique_Union `protobuf_oneof:"union"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Communique) Reset() { *m = Communique{} } -func (m *Communique) String() string { return proto.CompactTextString(m) } -func (*Communique) ProtoMessage() {} -func (*Communique) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -type isCommunique_Union interface { - isCommunique_Union() -} - -type Communique_Number struct { - Number int32 `protobuf:"varint,5,opt,name=number,oneof"` -} -type Communique_Name struct { - Name string `protobuf:"bytes,6,opt,name=name,oneof"` -} -type Communique_Data struct { - Data []byte `protobuf:"bytes,7,opt,name=data,oneof"` -} -type Communique_TempC struct { - TempC float64 `protobuf:"fixed64,8,opt,name=temp_c,json=tempC,oneof"` -} -type Communique_Col struct { - Col MyMessage_Color `protobuf:"varint,9,opt,name=col,enum=testdata.MyMessage_Color,oneof"` -} -type Communique_Msg struct { - Msg *Strings `protobuf:"bytes,10,opt,name=msg,oneof"` -} - -func (*Communique_Number) isCommunique_Union() {} -func (*Communique_Name) isCommunique_Union() {} -func (*Communique_Data) isCommunique_Union() {} -func (*Communique_TempC) isCommunique_Union() {} -func (*Communique_Col) isCommunique_Union() {} -func (*Communique_Msg) isCommunique_Union() {} - -func (m *Communique) GetUnion() isCommunique_Union { - if m != nil { - return m.Union - } - return nil -} - -func (m *Communique) GetMakeMeCry() bool { - if m != nil && m.MakeMeCry != nil { - return *m.MakeMeCry - } - return false -} - -func (m *Communique) GetNumber() int32 { - if x, ok := m.GetUnion().(*Communique_Number); ok { - return x.Number - } - return 0 -} - -func (m *Communique) GetName() string { - if x, ok := m.GetUnion().(*Communique_Name); ok { - return x.Name - } - return "" -} - -func (m *Communique) GetData() []byte { - if x, ok := m.GetUnion().(*Communique_Data); ok { - return x.Data - } - return nil -} - -func (m *Communique) GetTempC() float64 { - if x, ok := m.GetUnion().(*Communique_TempC); ok { - return x.TempC - } - return 0 -} - -func (m *Communique) GetCol() MyMessage_Color { - if x, ok := m.GetUnion().(*Communique_Col); ok { - return x.Col - } - return MyMessage_RED -} - -func (m *Communique) GetMsg() *Strings { - if x, ok := m.GetUnion().(*Communique_Msg); ok { - return x.Msg - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Communique) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Communique_OneofMarshaler, _Communique_OneofUnmarshaler, _Communique_OneofSizer, []interface{}{ - (*Communique_Number)(nil), - (*Communique_Name)(nil), - (*Communique_Data)(nil), - (*Communique_TempC)(nil), - (*Communique_Col)(nil), - (*Communique_Msg)(nil), - } -} - -func _Communique_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Communique) - // union - switch x := m.Union.(type) { - case *Communique_Number: - b.EncodeVarint(5<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Number)) - case *Communique_Name: - b.EncodeVarint(6<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Name) - case *Communique_Data: - b.EncodeVarint(7<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Data) - case *Communique_TempC: - b.EncodeVarint(8<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.TempC)) - case *Communique_Col: - b.EncodeVarint(9<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Col)) - case *Communique_Msg: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Msg); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Communique.Union has unexpected type %T", x) - } - return nil -} - -func _Communique_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Communique) - switch tag { - case 5: // union.number - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Communique_Number{int32(x)} - return true, err - case 6: // union.name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Union = &Communique_Name{x} - return true, err - case 7: // union.data - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Union = &Communique_Data{x} - return true, err - case 8: // union.temp_c - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Union = &Communique_TempC{math.Float64frombits(x)} - return true, err - case 9: // union.col - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Communique_Col{MyMessage_Color(x)} - return true, err - case 10: // union.msg - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Strings) - err := b.DecodeMessage(msg) - m.Union = &Communique_Msg{msg} - return true, err - default: - return false, nil - } -} - -func _Communique_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Communique) - // union - switch x := m.Union.(type) { - case *Communique_Number: - n += proto.SizeVarint(5<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Number)) - case *Communique_Name: - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Name))) - n += len(x.Name) - case *Communique_Data: - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Data))) - n += len(x.Data) - case *Communique_TempC: - n += proto.SizeVarint(8<<3 | proto.WireFixed64) - n += 8 - case *Communique_Col: - n += proto.SizeVarint(9<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Col)) - case *Communique_Msg: - s := proto.Size(x.Msg) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -var E_Greeting = &proto.ExtensionDesc{ - ExtendedType: (*MyMessage)(nil), - ExtensionType: ([]string)(nil), - Field: 106, - Name: "testdata.greeting", - Tag: "bytes,106,rep,name=greeting", - Filename: "test.proto", -} - -var E_Complex = &proto.ExtensionDesc{ - ExtendedType: (*OtherMessage)(nil), - ExtensionType: (*ComplexExtension)(nil), - Field: 200, - Name: "testdata.complex", - Tag: "bytes,200,opt,name=complex", - Filename: "test.proto", -} - -var E_RComplex = &proto.ExtensionDesc{ - ExtendedType: (*OtherMessage)(nil), - ExtensionType: ([]*ComplexExtension)(nil), - Field: 201, - Name: "testdata.r_complex", - Tag: "bytes,201,rep,name=r_complex,json=rComplex", - Filename: "test.proto", -} - -var E_NoDefaultDouble = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*float64)(nil), - Field: 101, - Name: "testdata.no_default_double", - Tag: "fixed64,101,opt,name=no_default_double,json=noDefaultDouble", - Filename: "test.proto", -} - -var E_NoDefaultFloat = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*float32)(nil), - Field: 102, - Name: "testdata.no_default_float", - Tag: "fixed32,102,opt,name=no_default_float,json=noDefaultFloat", - Filename: "test.proto", -} - -var E_NoDefaultInt32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int32)(nil), - Field: 103, - Name: "testdata.no_default_int32", - Tag: "varint,103,opt,name=no_default_int32,json=noDefaultInt32", - Filename: "test.proto", -} - -var E_NoDefaultInt64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int64)(nil), - Field: 104, - Name: "testdata.no_default_int64", - Tag: "varint,104,opt,name=no_default_int64,json=noDefaultInt64", - Filename: "test.proto", -} - -var E_NoDefaultUint32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*uint32)(nil), - Field: 105, - Name: "testdata.no_default_uint32", - Tag: "varint,105,opt,name=no_default_uint32,json=noDefaultUint32", - Filename: "test.proto", -} - -var E_NoDefaultUint64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*uint64)(nil), - Field: 106, - Name: "testdata.no_default_uint64", - Tag: "varint,106,opt,name=no_default_uint64,json=noDefaultUint64", - Filename: "test.proto", -} - -var E_NoDefaultSint32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int32)(nil), - Field: 107, - Name: "testdata.no_default_sint32", - Tag: "zigzag32,107,opt,name=no_default_sint32,json=noDefaultSint32", - Filename: "test.proto", -} - -var E_NoDefaultSint64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int64)(nil), - Field: 108, - Name: "testdata.no_default_sint64", - Tag: "zigzag64,108,opt,name=no_default_sint64,json=noDefaultSint64", - Filename: "test.proto", -} - -var E_NoDefaultFixed32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*uint32)(nil), - Field: 109, - Name: "testdata.no_default_fixed32", - Tag: "fixed32,109,opt,name=no_default_fixed32,json=noDefaultFixed32", - Filename: "test.proto", -} - -var E_NoDefaultFixed64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*uint64)(nil), - Field: 110, - Name: "testdata.no_default_fixed64", - Tag: "fixed64,110,opt,name=no_default_fixed64,json=noDefaultFixed64", - Filename: "test.proto", -} - -var E_NoDefaultSfixed32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int32)(nil), - Field: 111, - Name: "testdata.no_default_sfixed32", - Tag: "fixed32,111,opt,name=no_default_sfixed32,json=noDefaultSfixed32", - Filename: "test.proto", -} - -var E_NoDefaultSfixed64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int64)(nil), - Field: 112, - Name: "testdata.no_default_sfixed64", - Tag: "fixed64,112,opt,name=no_default_sfixed64,json=noDefaultSfixed64", - Filename: "test.proto", -} - -var E_NoDefaultBool = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*bool)(nil), - Field: 113, - Name: "testdata.no_default_bool", - Tag: "varint,113,opt,name=no_default_bool,json=noDefaultBool", - Filename: "test.proto", -} - -var E_NoDefaultString = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*string)(nil), - Field: 114, - Name: "testdata.no_default_string", - Tag: "bytes,114,opt,name=no_default_string,json=noDefaultString", - Filename: "test.proto", -} - -var E_NoDefaultBytes = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: ([]byte)(nil), - Field: 115, - Name: "testdata.no_default_bytes", - Tag: "bytes,115,opt,name=no_default_bytes,json=noDefaultBytes", - Filename: "test.proto", -} - -var E_NoDefaultEnum = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*DefaultsMessage_DefaultsEnum)(nil), - Field: 116, - Name: "testdata.no_default_enum", - Tag: "varint,116,opt,name=no_default_enum,json=noDefaultEnum,enum=testdata.DefaultsMessage_DefaultsEnum", - Filename: "test.proto", -} - -var E_DefaultDouble = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*float64)(nil), - Field: 201, - Name: "testdata.default_double", - Tag: "fixed64,201,opt,name=default_double,json=defaultDouble,def=3.1415", - Filename: "test.proto", -} - -var E_DefaultFloat = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*float32)(nil), - Field: 202, - Name: "testdata.default_float", - Tag: "fixed32,202,opt,name=default_float,json=defaultFloat,def=3.14", - Filename: "test.proto", -} - -var E_DefaultInt32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int32)(nil), - Field: 203, - Name: "testdata.default_int32", - Tag: "varint,203,opt,name=default_int32,json=defaultInt32,def=42", - Filename: "test.proto", -} - -var E_DefaultInt64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int64)(nil), - Field: 204, - Name: "testdata.default_int64", - Tag: "varint,204,opt,name=default_int64,json=defaultInt64,def=43", - Filename: "test.proto", -} - -var E_DefaultUint32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*uint32)(nil), - Field: 205, - Name: "testdata.default_uint32", - Tag: "varint,205,opt,name=default_uint32,json=defaultUint32,def=44", - Filename: "test.proto", -} - -var E_DefaultUint64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*uint64)(nil), - Field: 206, - Name: "testdata.default_uint64", - Tag: "varint,206,opt,name=default_uint64,json=defaultUint64,def=45", - Filename: "test.proto", -} - -var E_DefaultSint32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int32)(nil), - Field: 207, - Name: "testdata.default_sint32", - Tag: "zigzag32,207,opt,name=default_sint32,json=defaultSint32,def=46", - Filename: "test.proto", -} - -var E_DefaultSint64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int64)(nil), - Field: 208, - Name: "testdata.default_sint64", - Tag: "zigzag64,208,opt,name=default_sint64,json=defaultSint64,def=47", - Filename: "test.proto", -} - -var E_DefaultFixed32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*uint32)(nil), - Field: 209, - Name: "testdata.default_fixed32", - Tag: "fixed32,209,opt,name=default_fixed32,json=defaultFixed32,def=48", - Filename: "test.proto", -} - -var E_DefaultFixed64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*uint64)(nil), - Field: 210, - Name: "testdata.default_fixed64", - Tag: "fixed64,210,opt,name=default_fixed64,json=defaultFixed64,def=49", - Filename: "test.proto", -} - -var E_DefaultSfixed32 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int32)(nil), - Field: 211, - Name: "testdata.default_sfixed32", - Tag: "fixed32,211,opt,name=default_sfixed32,json=defaultSfixed32,def=50", - Filename: "test.proto", -} - -var E_DefaultSfixed64 = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*int64)(nil), - Field: 212, - Name: "testdata.default_sfixed64", - Tag: "fixed64,212,opt,name=default_sfixed64,json=defaultSfixed64,def=51", - Filename: "test.proto", -} - -var E_DefaultBool = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*bool)(nil), - Field: 213, - Name: "testdata.default_bool", - Tag: "varint,213,opt,name=default_bool,json=defaultBool,def=1", - Filename: "test.proto", -} - -var E_DefaultString = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*string)(nil), - Field: 214, - Name: "testdata.default_string", - Tag: "bytes,214,opt,name=default_string,json=defaultString,def=Hello, string", - Filename: "test.proto", -} - -var E_DefaultBytes = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: ([]byte)(nil), - Field: 215, - Name: "testdata.default_bytes", - Tag: "bytes,215,opt,name=default_bytes,json=defaultBytes,def=Hello, bytes", - Filename: "test.proto", -} - -var E_DefaultEnum = &proto.ExtensionDesc{ - ExtendedType: (*DefaultsMessage)(nil), - ExtensionType: (*DefaultsMessage_DefaultsEnum)(nil), - Field: 216, - Name: "testdata.default_enum", - Tag: "varint,216,opt,name=default_enum,json=defaultEnum,enum=testdata.DefaultsMessage_DefaultsEnum,def=1", - Filename: "test.proto", -} - -var E_X201 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 201, - Name: "testdata.x201", - Tag: "bytes,201,opt,name=x201", - Filename: "test.proto", -} - -var E_X202 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 202, - Name: "testdata.x202", - Tag: "bytes,202,opt,name=x202", - Filename: "test.proto", -} - -var E_X203 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 203, - Name: "testdata.x203", - Tag: "bytes,203,opt,name=x203", - Filename: "test.proto", -} - -var E_X204 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 204, - Name: "testdata.x204", - Tag: "bytes,204,opt,name=x204", - Filename: "test.proto", -} - -var E_X205 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 205, - Name: "testdata.x205", - Tag: "bytes,205,opt,name=x205", - Filename: "test.proto", -} - -var E_X206 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 206, - Name: "testdata.x206", - Tag: "bytes,206,opt,name=x206", - Filename: "test.proto", -} - -var E_X207 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 207, - Name: "testdata.x207", - Tag: "bytes,207,opt,name=x207", - Filename: "test.proto", -} - -var E_X208 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 208, - Name: "testdata.x208", - Tag: "bytes,208,opt,name=x208", - Filename: "test.proto", -} - -var E_X209 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 209, - Name: "testdata.x209", - Tag: "bytes,209,opt,name=x209", - Filename: "test.proto", -} - -var E_X210 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 210, - Name: "testdata.x210", - Tag: "bytes,210,opt,name=x210", - Filename: "test.proto", -} - -var E_X211 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 211, - Name: "testdata.x211", - Tag: "bytes,211,opt,name=x211", - Filename: "test.proto", -} - -var E_X212 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 212, - Name: "testdata.x212", - Tag: "bytes,212,opt,name=x212", - Filename: "test.proto", -} - -var E_X213 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 213, - Name: "testdata.x213", - Tag: "bytes,213,opt,name=x213", - Filename: "test.proto", -} - -var E_X214 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 214, - Name: "testdata.x214", - Tag: "bytes,214,opt,name=x214", - Filename: "test.proto", -} - -var E_X215 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 215, - Name: "testdata.x215", - Tag: "bytes,215,opt,name=x215", - Filename: "test.proto", -} - -var E_X216 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 216, - Name: "testdata.x216", - Tag: "bytes,216,opt,name=x216", - Filename: "test.proto", -} - -var E_X217 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 217, - Name: "testdata.x217", - Tag: "bytes,217,opt,name=x217", - Filename: "test.proto", -} - -var E_X218 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 218, - Name: "testdata.x218", - Tag: "bytes,218,opt,name=x218", - Filename: "test.proto", -} - -var E_X219 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 219, - Name: "testdata.x219", - Tag: "bytes,219,opt,name=x219", - Filename: "test.proto", -} - -var E_X220 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 220, - Name: "testdata.x220", - Tag: "bytes,220,opt,name=x220", - Filename: "test.proto", -} - -var E_X221 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 221, - Name: "testdata.x221", - Tag: "bytes,221,opt,name=x221", - Filename: "test.proto", -} - -var E_X222 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 222, - Name: "testdata.x222", - Tag: "bytes,222,opt,name=x222", - Filename: "test.proto", -} - -var E_X223 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 223, - Name: "testdata.x223", - Tag: "bytes,223,opt,name=x223", - Filename: "test.proto", -} - -var E_X224 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 224, - Name: "testdata.x224", - Tag: "bytes,224,opt,name=x224", - Filename: "test.proto", -} - -var E_X225 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 225, - Name: "testdata.x225", - Tag: "bytes,225,opt,name=x225", - Filename: "test.proto", -} - -var E_X226 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 226, - Name: "testdata.x226", - Tag: "bytes,226,opt,name=x226", - Filename: "test.proto", -} - -var E_X227 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 227, - Name: "testdata.x227", - Tag: "bytes,227,opt,name=x227", - Filename: "test.proto", -} - -var E_X228 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 228, - Name: "testdata.x228", - Tag: "bytes,228,opt,name=x228", - Filename: "test.proto", -} - -var E_X229 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 229, - Name: "testdata.x229", - Tag: "bytes,229,opt,name=x229", - Filename: "test.proto", -} - -var E_X230 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 230, - Name: "testdata.x230", - Tag: "bytes,230,opt,name=x230", - Filename: "test.proto", -} - -var E_X231 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 231, - Name: "testdata.x231", - Tag: "bytes,231,opt,name=x231", - Filename: "test.proto", -} - -var E_X232 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 232, - Name: "testdata.x232", - Tag: "bytes,232,opt,name=x232", - Filename: "test.proto", -} - -var E_X233 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 233, - Name: "testdata.x233", - Tag: "bytes,233,opt,name=x233", - Filename: "test.proto", -} - -var E_X234 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 234, - Name: "testdata.x234", - Tag: "bytes,234,opt,name=x234", - Filename: "test.proto", -} - -var E_X235 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 235, - Name: "testdata.x235", - Tag: "bytes,235,opt,name=x235", - Filename: "test.proto", -} - -var E_X236 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 236, - Name: "testdata.x236", - Tag: "bytes,236,opt,name=x236", - Filename: "test.proto", -} - -var E_X237 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 237, - Name: "testdata.x237", - Tag: "bytes,237,opt,name=x237", - Filename: "test.proto", -} - -var E_X238 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 238, - Name: "testdata.x238", - Tag: "bytes,238,opt,name=x238", - Filename: "test.proto", -} - -var E_X239 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 239, - Name: "testdata.x239", - Tag: "bytes,239,opt,name=x239", - Filename: "test.proto", -} - -var E_X240 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 240, - Name: "testdata.x240", - Tag: "bytes,240,opt,name=x240", - Filename: "test.proto", -} - -var E_X241 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 241, - Name: "testdata.x241", - Tag: "bytes,241,opt,name=x241", - Filename: "test.proto", -} - -var E_X242 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 242, - Name: "testdata.x242", - Tag: "bytes,242,opt,name=x242", - Filename: "test.proto", -} - -var E_X243 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 243, - Name: "testdata.x243", - Tag: "bytes,243,opt,name=x243", - Filename: "test.proto", -} - -var E_X244 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 244, - Name: "testdata.x244", - Tag: "bytes,244,opt,name=x244", - Filename: "test.proto", -} - -var E_X245 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 245, - Name: "testdata.x245", - Tag: "bytes,245,opt,name=x245", - Filename: "test.proto", -} - -var E_X246 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 246, - Name: "testdata.x246", - Tag: "bytes,246,opt,name=x246", - Filename: "test.proto", -} - -var E_X247 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 247, - Name: "testdata.x247", - Tag: "bytes,247,opt,name=x247", - Filename: "test.proto", -} - -var E_X248 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 248, - Name: "testdata.x248", - Tag: "bytes,248,opt,name=x248", - Filename: "test.proto", -} - -var E_X249 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 249, - Name: "testdata.x249", - Tag: "bytes,249,opt,name=x249", - Filename: "test.proto", -} - -var E_X250 = &proto.ExtensionDesc{ - ExtendedType: (*MyMessageSet)(nil), - ExtensionType: (*Empty)(nil), - Field: 250, - Name: "testdata.x250", - Tag: "bytes,250,opt,name=x250", - Filename: "test.proto", -} - -func init() { - proto.RegisterType((*GoEnum)(nil), "testdata.GoEnum") - proto.RegisterType((*GoTestField)(nil), "testdata.GoTestField") - proto.RegisterType((*GoTest)(nil), "testdata.GoTest") - proto.RegisterType((*GoTest_RequiredGroup)(nil), "testdata.GoTest.RequiredGroup") - proto.RegisterType((*GoTest_RepeatedGroup)(nil), "testdata.GoTest.RepeatedGroup") - proto.RegisterType((*GoTest_OptionalGroup)(nil), "testdata.GoTest.OptionalGroup") - proto.RegisterType((*GoTestRequiredGroupField)(nil), "testdata.GoTestRequiredGroupField") - proto.RegisterType((*GoTestRequiredGroupField_Group)(nil), "testdata.GoTestRequiredGroupField.Group") - proto.RegisterType((*GoSkipTest)(nil), "testdata.GoSkipTest") - proto.RegisterType((*GoSkipTest_SkipGroup)(nil), "testdata.GoSkipTest.SkipGroup") - proto.RegisterType((*NonPackedTest)(nil), "testdata.NonPackedTest") - proto.RegisterType((*PackedTest)(nil), "testdata.PackedTest") - proto.RegisterType((*MaxTag)(nil), "testdata.MaxTag") - proto.RegisterType((*OldMessage)(nil), "testdata.OldMessage") - proto.RegisterType((*OldMessage_Nested)(nil), "testdata.OldMessage.Nested") - proto.RegisterType((*NewMessage)(nil), "testdata.NewMessage") - proto.RegisterType((*NewMessage_Nested)(nil), "testdata.NewMessage.Nested") - proto.RegisterType((*InnerMessage)(nil), "testdata.InnerMessage") - proto.RegisterType((*OtherMessage)(nil), "testdata.OtherMessage") - proto.RegisterType((*RequiredInnerMessage)(nil), "testdata.RequiredInnerMessage") - proto.RegisterType((*MyMessage)(nil), "testdata.MyMessage") - proto.RegisterType((*MyMessage_SomeGroup)(nil), "testdata.MyMessage.SomeGroup") - proto.RegisterType((*Ext)(nil), "testdata.Ext") - proto.RegisterType((*ComplexExtension)(nil), "testdata.ComplexExtension") - proto.RegisterType((*DefaultsMessage)(nil), "testdata.DefaultsMessage") - proto.RegisterType((*MyMessageSet)(nil), "testdata.MyMessageSet") - proto.RegisterType((*Empty)(nil), "testdata.Empty") - proto.RegisterType((*MessageList)(nil), "testdata.MessageList") - proto.RegisterType((*MessageList_Message)(nil), "testdata.MessageList.Message") - proto.RegisterType((*Strings)(nil), "testdata.Strings") - proto.RegisterType((*Defaults)(nil), "testdata.Defaults") - proto.RegisterType((*SubDefaults)(nil), "testdata.SubDefaults") - proto.RegisterType((*RepeatedEnum)(nil), "testdata.RepeatedEnum") - proto.RegisterType((*MoreRepeated)(nil), "testdata.MoreRepeated") - proto.RegisterType((*GroupOld)(nil), "testdata.GroupOld") - proto.RegisterType((*GroupOld_G)(nil), "testdata.GroupOld.G") - proto.RegisterType((*GroupNew)(nil), "testdata.GroupNew") - proto.RegisterType((*GroupNew_G)(nil), "testdata.GroupNew.G") - proto.RegisterType((*FloatingPoint)(nil), "testdata.FloatingPoint") - proto.RegisterType((*MessageWithMap)(nil), "testdata.MessageWithMap") - proto.RegisterType((*Oneof)(nil), "testdata.Oneof") - proto.RegisterType((*Oneof_F_Group)(nil), "testdata.Oneof.F_Group") - proto.RegisterType((*Communique)(nil), "testdata.Communique") - proto.RegisterEnum("testdata.FOO", FOO_name, FOO_value) - proto.RegisterEnum("testdata.GoTest_KIND", GoTest_KIND_name, GoTest_KIND_value) - proto.RegisterEnum("testdata.MyMessage_Color", MyMessage_Color_name, MyMessage_Color_value) - proto.RegisterEnum("testdata.DefaultsMessage_DefaultsEnum", DefaultsMessage_DefaultsEnum_name, DefaultsMessage_DefaultsEnum_value) - proto.RegisterEnum("testdata.Defaults_Color", Defaults_Color_name, Defaults_Color_value) - proto.RegisterEnum("testdata.RepeatedEnum_Color", RepeatedEnum_Color_name, RepeatedEnum_Color_value) - proto.RegisterExtension(E_Ext_More) - proto.RegisterExtension(E_Ext_Text) - proto.RegisterExtension(E_Ext_Number) - proto.RegisterExtension(E_Greeting) - proto.RegisterExtension(E_Complex) - proto.RegisterExtension(E_RComplex) - proto.RegisterExtension(E_NoDefaultDouble) - proto.RegisterExtension(E_NoDefaultFloat) - proto.RegisterExtension(E_NoDefaultInt32) - proto.RegisterExtension(E_NoDefaultInt64) - proto.RegisterExtension(E_NoDefaultUint32) - proto.RegisterExtension(E_NoDefaultUint64) - proto.RegisterExtension(E_NoDefaultSint32) - proto.RegisterExtension(E_NoDefaultSint64) - proto.RegisterExtension(E_NoDefaultFixed32) - proto.RegisterExtension(E_NoDefaultFixed64) - proto.RegisterExtension(E_NoDefaultSfixed32) - proto.RegisterExtension(E_NoDefaultSfixed64) - proto.RegisterExtension(E_NoDefaultBool) - proto.RegisterExtension(E_NoDefaultString) - proto.RegisterExtension(E_NoDefaultBytes) - proto.RegisterExtension(E_NoDefaultEnum) - proto.RegisterExtension(E_DefaultDouble) - proto.RegisterExtension(E_DefaultFloat) - proto.RegisterExtension(E_DefaultInt32) - proto.RegisterExtension(E_DefaultInt64) - proto.RegisterExtension(E_DefaultUint32) - proto.RegisterExtension(E_DefaultUint64) - proto.RegisterExtension(E_DefaultSint32) - proto.RegisterExtension(E_DefaultSint64) - proto.RegisterExtension(E_DefaultFixed32) - proto.RegisterExtension(E_DefaultFixed64) - proto.RegisterExtension(E_DefaultSfixed32) - proto.RegisterExtension(E_DefaultSfixed64) - proto.RegisterExtension(E_DefaultBool) - proto.RegisterExtension(E_DefaultString) - proto.RegisterExtension(E_DefaultBytes) - proto.RegisterExtension(E_DefaultEnum) - proto.RegisterExtension(E_X201) - proto.RegisterExtension(E_X202) - proto.RegisterExtension(E_X203) - proto.RegisterExtension(E_X204) - proto.RegisterExtension(E_X205) - proto.RegisterExtension(E_X206) - proto.RegisterExtension(E_X207) - proto.RegisterExtension(E_X208) - proto.RegisterExtension(E_X209) - proto.RegisterExtension(E_X210) - proto.RegisterExtension(E_X211) - proto.RegisterExtension(E_X212) - proto.RegisterExtension(E_X213) - proto.RegisterExtension(E_X214) - proto.RegisterExtension(E_X215) - proto.RegisterExtension(E_X216) - proto.RegisterExtension(E_X217) - proto.RegisterExtension(E_X218) - proto.RegisterExtension(E_X219) - proto.RegisterExtension(E_X220) - proto.RegisterExtension(E_X221) - proto.RegisterExtension(E_X222) - proto.RegisterExtension(E_X223) - proto.RegisterExtension(E_X224) - proto.RegisterExtension(E_X225) - proto.RegisterExtension(E_X226) - proto.RegisterExtension(E_X227) - proto.RegisterExtension(E_X228) - proto.RegisterExtension(E_X229) - proto.RegisterExtension(E_X230) - proto.RegisterExtension(E_X231) - proto.RegisterExtension(E_X232) - proto.RegisterExtension(E_X233) - proto.RegisterExtension(E_X234) - proto.RegisterExtension(E_X235) - proto.RegisterExtension(E_X236) - proto.RegisterExtension(E_X237) - proto.RegisterExtension(E_X238) - proto.RegisterExtension(E_X239) - proto.RegisterExtension(E_X240) - proto.RegisterExtension(E_X241) - proto.RegisterExtension(E_X242) - proto.RegisterExtension(E_X243) - proto.RegisterExtension(E_X244) - proto.RegisterExtension(E_X245) - proto.RegisterExtension(E_X246) - proto.RegisterExtension(E_X247) - proto.RegisterExtension(E_X248) - proto.RegisterExtension(E_X249) - proto.RegisterExtension(E_X250) -} - -func init() { proto.RegisterFile("test.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 4453 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48, - 0x7a, 0x37, 0xc0, 0xfd, 0x23, 0x25, 0x42, 0x65, 0xb5, 0x9b, 0x96, 0xbc, 0xc0, 0x9c, 0xe9, 0x6e, - 0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xca, 0x7a, 0x63, 0x89, 0x0a, - 0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x44, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52, - 0x72, 0xe9, 0x4b, 0x72, 0xcd, 0x76, 0xc9, 0x35, 0xa7, 0x9c, 0x92, 0xbc, 0x97, 0x7f, 0x22, 0xe9, - 0xee, 0x59, 0x7b, 0xd6, 0xac, 0x93, 0x7d, 0x99, 0xec, 0xdb, 0x4c, 0x92, 0x4b, 0xcf, 0xab, 0xaf, - 0x0a, 0x40, 0x01, 0x24, 0x20, 0xf9, 0x24, 0x56, 0xd5, 0xef, 0xf7, 0xd5, 0xf6, 0xab, 0xef, 0xab, - 0xaf, 0x20, 0x00, 0xc7, 0x9c, 0x38, 0x2b, 0xa3, 0xb1, 0xed, 0xd8, 0x24, 0x4b, 0x7f, 0x77, 0x3b, - 0x4e, 0xa7, 0x7c, 0x1d, 0xd2, 0x1b, 0x76, 0xc3, 0x3a, 0x1a, 0x92, 0xab, 0x90, 0x38, 0xb4, 0xed, - 0x92, 0xa4, 0xca, 0x95, 0x79, 0x6d, 0x6e, 0xc5, 0x45, 0xac, 0x34, 0x5b, 0x2d, 0x83, 0xb6, 0x94, - 0xef, 0x40, 0x7e, 0xc3, 0xde, 0x33, 0x27, 0x4e, 0xb3, 0x6f, 0x0e, 0xba, 0x64, 0x11, 0x52, 0x4f, - 0x3b, 0xfb, 0xe6, 0x00, 0x19, 0x39, 0x83, 0x15, 0x08, 0x81, 0xe4, 0xde, 0xc9, 0xc8, 0x2c, 0xc9, - 0x58, 0x89, 0xbf, 0xcb, 0xbf, 0x72, 0x85, 0x76, 0x42, 0x99, 0xe4, 0x3a, 0x24, 0xbf, 0xdc, 0xb7, - 0xba, 0xbc, 0x97, 0xd7, 0xfc, 0x5e, 0x58, 0xfb, 0xca, 0x97, 0x37, 0xb7, 0x1f, 0x1b, 0x08, 0xa1, - 0xf6, 0xf7, 0x3a, 0xfb, 0x03, 0x6a, 0x4a, 0xa2, 0xf6, 0xb1, 0x40, 0x6b, 0x77, 0x3a, 0xe3, 0xce, - 0xb0, 0x94, 0x50, 0xa5, 0x4a, 0xca, 0x60, 0x05, 0x72, 0x1f, 0xe6, 0x0c, 0xf3, 0xc5, 0x51, 0x7f, - 0x6c, 0x76, 0x71, 0x70, 0xa5, 0xa4, 0x2a, 0x57, 0xf2, 0xd3, 0xf6, 0xb1, 0xd1, 0x08, 0x62, 0x19, - 0x79, 0x64, 0x76, 0x1c, 0x97, 0x9c, 0x52, 0x13, 0xb1, 0x64, 0x01, 0x4b, 0xc9, 0xad, 0x91, 0xd3, - 0xb7, 0xad, 0xce, 0x80, 0x91, 0xd3, 0xaa, 0x14, 0x43, 0x0e, 0x60, 0xc9, 0x9b, 0x50, 0x6c, 0xb6, - 0x1f, 0xda, 0xf6, 0xa0, 0x3d, 0xe6, 0x23, 0x2a, 0x81, 0x2a, 0x57, 0xb2, 0xc6, 0x5c, 0x93, 0xd6, - 0xba, 0xc3, 0x24, 0x15, 0x50, 0x9a, 0xed, 0x4d, 0xcb, 0xa9, 0x6a, 0x3e, 0x30, 0xaf, 0xca, 0x95, - 0x94, 0x31, 0xdf, 0xc4, 0xea, 0x29, 0x64, 0x4d, 0xf7, 0x91, 0x05, 0x55, 0xae, 0x24, 0x18, 0xb2, - 0xa6, 0x7b, 0xc8, 0x5b, 0x40, 0x9a, 0xed, 0x66, 0xff, 0xd8, 0xec, 0x8a, 0x56, 0xe7, 0x54, 0xb9, - 0x92, 0x31, 0x94, 0x26, 0x6f, 0x98, 0x81, 0x16, 0x2d, 0xcf, 0xab, 0x72, 0x25, 0xed, 0xa2, 0x05, - 0xdb, 0x37, 0x60, 0xa1, 0xd9, 0x7e, 0xb7, 0x1f, 0x1c, 0x70, 0x51, 0x95, 0x2b, 0x73, 0x46, 0xb1, - 0xc9, 0xea, 0xa7, 0xb1, 0xa2, 0x61, 0x45, 0x95, 0x2b, 0x49, 0x8e, 0x15, 0xec, 0xe2, 0xec, 0x9a, - 0x03, 0xbb, 0xe3, 0xf8, 0xd0, 0x05, 0x55, 0xae, 0xc8, 0xc6, 0x7c, 0x13, 0xab, 0x83, 0x56, 0x1f, - 0xdb, 0x47, 0xfb, 0x03, 0xd3, 0x87, 0x12, 0x55, 0xae, 0x48, 0x46, 0xb1, 0xc9, 0xea, 0x83, 0xd8, - 0x5d, 0x67, 0xdc, 0xb7, 0x7a, 0x3e, 0xf6, 0x3c, 0xea, 0xb7, 0xd8, 0x64, 0xf5, 0xc1, 0x11, 0x3c, - 0x3c, 0x71, 0xcc, 0x89, 0x0f, 0x35, 0x55, 0xb9, 0x52, 0x30, 0xe6, 0x9b, 0x58, 0x1d, 0xb2, 0x1a, - 0x5a, 0x83, 0x43, 0x55, 0xae, 0x2c, 0x50, 0xab, 0x33, 0xd6, 0x60, 0x37, 0xb4, 0x06, 0x3d, 0x55, - 0xae, 0x10, 0x8e, 0x15, 0xd6, 0x40, 0xd4, 0x0c, 0x13, 0x62, 0x69, 0x51, 0x4d, 0x08, 0x9a, 0x61, - 0x95, 0x41, 0xcd, 0x70, 0xe0, 0x6b, 0x6a, 0x42, 0xd4, 0x4c, 0x08, 0x89, 0x9d, 0x73, 0xe4, 0x05, - 0x35, 0x21, 0x6a, 0x86, 0x23, 0x43, 0x9a, 0xe1, 0xd8, 0xd7, 0xd5, 0x44, 0x50, 0x33, 0x53, 0x68, - 0xd1, 0x72, 0x49, 0x4d, 0x04, 0x35, 0xc3, 0xd1, 0x41, 0xcd, 0x70, 0xf0, 0x45, 0x35, 0x11, 0xd0, - 0x4c, 0x18, 0x2b, 0x1a, 0x5e, 0x52, 0x13, 0x01, 0xcd, 0x88, 0xb3, 0x73, 0x35, 0xc3, 0xa1, 0xcb, - 0x6a, 0x42, 0xd4, 0x8c, 0x68, 0xd5, 0xd3, 0x0c, 0x87, 0x5e, 0x52, 0x13, 0x01, 0xcd, 0x88, 0x58, - 0x4f, 0x33, 0x1c, 0x7b, 0x59, 0x4d, 0x04, 0x34, 0xc3, 0xb1, 0xd7, 0x45, 0xcd, 0x70, 0xe8, 0xc7, - 0x92, 0x9a, 0x10, 0x45, 0xc3, 0xa1, 0x37, 0x03, 0xa2, 0xe1, 0xd8, 0x4f, 0x28, 0x56, 0x54, 0x4d, - 0x18, 0x2c, 0xae, 0xc2, 0xa7, 0x14, 0x2c, 0xca, 0x86, 0x83, 0x7d, 0xd9, 0xd8, 0xdc, 0x05, 0x95, - 0xae, 0xa8, 0x92, 0x27, 0x1b, 0xd7, 0x2f, 0x89, 0xb2, 0xf1, 0x80, 0x57, 0xd1, 0xd5, 0x72, 0xd9, - 0x4c, 0x21, 0x6b, 0xba, 0x8f, 0x54, 0x55, 0xc9, 0x97, 0x8d, 0x87, 0x0c, 0xc8, 0xc6, 0xc3, 0x5e, - 0x53, 0x25, 0x51, 0x36, 0x33, 0xd0, 0xa2, 0xe5, 0xb2, 0x2a, 0x89, 0xb2, 0xf1, 0xd0, 0xa2, 0x6c, - 0x3c, 0xf0, 0x17, 0x54, 0x49, 0x90, 0xcd, 0x34, 0x56, 0x34, 0xfc, 0x45, 0x55, 0x12, 0x64, 0x13, - 0x9c, 0x1d, 0x93, 0x8d, 0x07, 0x7d, 0x43, 0x95, 0x7c, 0xd9, 0x04, 0xad, 0x72, 0xd9, 0x78, 0xd0, - 0x37, 0x55, 0x49, 0x90, 0x4d, 0x10, 0xcb, 0x65, 0xe3, 0x61, 0xdf, 0xc2, 0xf8, 0xe6, 0xca, 0xc6, - 0xc3, 0x0a, 0xb2, 0xf1, 0xa0, 0xbf, 0x43, 0x63, 0xa1, 0x27, 0x1b, 0x0f, 0x2a, 0xca, 0xc6, 0xc3, - 0xfe, 0x2e, 0xc5, 0xfa, 0xb2, 0x99, 0x06, 0x8b, 0xab, 0xf0, 0x7b, 0x14, 0xec, 0xcb, 0xc6, 0x03, - 0xaf, 0xe0, 0x20, 0xa8, 0x6c, 0xba, 0xe6, 0x61, 0xe7, 0x68, 0x40, 0x25, 0x56, 0xa1, 0xba, 0xa9, - 0x27, 0x9d, 0xf1, 0x91, 0x49, 0x47, 0x62, 0xdb, 0x83, 0xc7, 0x6e, 0x1b, 0x59, 0xa1, 0xc6, 0x99, - 0x7c, 0x7c, 0xc2, 0x75, 0xaa, 0x9f, 0xba, 0x5c, 0xd5, 0x8c, 0x22, 0xd3, 0xd0, 0x34, 0xbe, 0xa6, - 0x0b, 0xf8, 0x1b, 0x54, 0x45, 0x75, 0xb9, 0xa6, 0x33, 0x7c, 0x4d, 0xf7, 0xf1, 0x55, 0x38, 0xef, - 0x4b, 0xc9, 0x67, 0xdc, 0xa4, 0x5a, 0xaa, 0x27, 0xaa, 0xda, 0xaa, 0xb1, 0xe0, 0x0a, 0x6a, 0x16, - 0x29, 0xd0, 0xcd, 0x2d, 0x2a, 0xa9, 0x7a, 0xa2, 0xa6, 0x7b, 0x24, 0xb1, 0x27, 0x8d, 0xca, 0x90, - 0x0b, 0xcb, 0xe7, 0xdc, 0xa6, 0xca, 0xaa, 0x27, 0xab, 0xda, 0xea, 0xaa, 0xa1, 0x70, 0x7d, 0xcd, - 0xe0, 0x04, 0xfa, 0x59, 0xa1, 0x0a, 0xab, 0x27, 0x6b, 0xba, 0xc7, 0x09, 0xf6, 0xb3, 0xe0, 0x0a, - 0xcd, 0xa7, 0x7c, 0x89, 0x2a, 0xad, 0x9e, 0xae, 0xae, 0xe9, 0x6b, 0xeb, 0xf7, 0x8c, 0x22, 0x53, - 0x9c, 0xcf, 0xd1, 0x69, 0x3f, 0x5c, 0x72, 0x3e, 0x69, 0x95, 0x6a, 0xae, 0x9e, 0xd6, 0xee, 0xac, - 0xdd, 0xd5, 0xee, 0x1a, 0x0a, 0xd7, 0x9e, 0xcf, 0x7a, 0x87, 0xb2, 0xb8, 0xf8, 0x7c, 0xd6, 0x1a, - 0x55, 0x5f, 0x5d, 0x79, 0x66, 0x0e, 0x06, 0xf6, 0x2d, 0xb5, 0xfc, 0xd2, 0x1e, 0x0f, 0xba, 0xd7, - 0xca, 0x60, 0x28, 0x5c, 0x8f, 0x62, 0xaf, 0x0b, 0xae, 0x20, 0x7d, 0xfa, 0xaf, 0xd1, 0x7b, 0x58, - 0xa1, 0x9e, 0x79, 0xd8, 0xef, 0x59, 0xf6, 0xc4, 0x34, 0x8a, 0x4c, 0x9a, 0xa1, 0x35, 0xd9, 0x0d, - 0xaf, 0xe3, 0xaf, 0x53, 0xda, 0x42, 0x3d, 0x71, 0xbb, 0xaa, 0xd1, 0x9e, 0x66, 0xad, 0xe3, 0x6e, - 0x78, 0x1d, 0x7f, 0x83, 0x72, 0x48, 0x3d, 0x71, 0xbb, 0xa6, 0x73, 0x8e, 0xb8, 0x8e, 0x77, 0xe0, - 0x42, 0x28, 0x2e, 0xb6, 0x47, 0x9d, 0x83, 0xe7, 0x66, 0xb7, 0xa4, 0xd1, 0xf0, 0xf8, 0x50, 0x56, - 0x24, 0xe3, 0x7c, 0x20, 0x44, 0xee, 0x60, 0x33, 0xb9, 0x07, 0xaf, 0x87, 0x03, 0xa5, 0xcb, 0xac, - 0xd2, 0x78, 0x89, 0xcc, 0xc5, 0x60, 0xcc, 0x0c, 0x51, 0x05, 0x07, 0xec, 0x52, 0x75, 0x1a, 0x40, - 0x7d, 0xaa, 0xef, 0x89, 0x39, 0xf5, 0x67, 0xe0, 0xe2, 0x74, 0x28, 0x75, 0xc9, 0xeb, 0x34, 0xa2, - 0x22, 0xf9, 0x42, 0x38, 0xaa, 0x4e, 0xd1, 0x67, 0xf4, 0x5d, 0xa3, 0x21, 0x56, 0xa4, 0x4f, 0xf5, - 0x7e, 0x1f, 0x4a, 0x53, 0xc1, 0xd6, 0x65, 0xdf, 0xa1, 0x31, 0x17, 0xd9, 0xaf, 0x85, 0xe2, 0x6e, - 0x98, 0x3c, 0xa3, 0xeb, 0xbb, 0x34, 0x08, 0x0b, 0xe4, 0xa9, 0x9e, 0x71, 0xc9, 0x82, 0xe1, 0xd8, - 0xe5, 0xde, 0xa3, 0x51, 0x99, 0x2f, 0x59, 0x20, 0x32, 0x8b, 0xfd, 0x86, 0xe2, 0xb3, 0xcb, 0xad, - 0xd3, 0x30, 0xcd, 0xfb, 0x0d, 0x86, 0x6a, 0x4e, 0x7e, 0x9b, 0x92, 0x77, 0x67, 0xcf, 0xf8, 0xc7, - 0x09, 0x1a, 0x60, 0x39, 0x7b, 0x77, 0xd6, 0x94, 0x3d, 0xf6, 0x8c, 0x29, 0xff, 0x84, 0xb2, 0x89, - 0xc0, 0x9e, 0x9a, 0xf3, 0x63, 0x98, 0x73, 0x6f, 0x75, 0xbd, 0xb1, 0x7d, 0x34, 0x2a, 0x35, 0x55, - 0xb9, 0x02, 0xda, 0x95, 0xa9, 0xec, 0xc7, 0xbd, 0xe4, 0x6d, 0x50, 0x94, 0x11, 0x24, 0x31, 0x2b, - 0xcc, 0x2e, 0xb3, 0xb2, 0xa3, 0x26, 0x22, 0xac, 0x30, 0x94, 0x67, 0x45, 0x20, 0x51, 0x2b, 0xae, - 0xd3, 0x67, 0x56, 0x3e, 0x50, 0xa5, 0x99, 0x56, 0xdc, 0x10, 0xc0, 0xad, 0x04, 0x48, 0x4b, 0xeb, - 0x7e, 0xbe, 0x85, 0xed, 0xe4, 0x8b, 0xe1, 0x04, 0x6c, 0x03, 0xef, 0xcf, 0xc1, 0x4a, 0x46, 0x13, - 0x06, 0x37, 0x4d, 0xfb, 0xd9, 0x08, 0x5a, 0x60, 0x34, 0xd3, 0xb4, 0x9f, 0x9b, 0x41, 0x2b, 0xff, - 0xa6, 0x04, 0x49, 0x9a, 0x4f, 0x92, 0x2c, 0x24, 0xdf, 0x6b, 0x6d, 0x3e, 0x56, 0xce, 0xd1, 0x5f, - 0x0f, 0x5b, 0xad, 0xa7, 0x8a, 0x44, 0x72, 0x90, 0x7a, 0xf8, 0x95, 0xbd, 0xc6, 0xae, 0x22, 0x93, - 0x22, 0xe4, 0x9b, 0x9b, 0xdb, 0x1b, 0x0d, 0x63, 0xc7, 0xd8, 0xdc, 0xde, 0x53, 0x12, 0xb4, 0xad, - 0xf9, 0xb4, 0xf5, 0x60, 0x4f, 0x49, 0x92, 0x0c, 0x24, 0x68, 0x5d, 0x8a, 0x00, 0xa4, 0x77, 0xf7, - 0x8c, 0xcd, 0xed, 0x0d, 0x25, 0x4d, 0xad, 0xec, 0x6d, 0x6e, 0x35, 0x94, 0x0c, 0x45, 0xee, 0xbd, - 0xbb, 0xf3, 0xb4, 0xa1, 0x64, 0xe9, 0xcf, 0x07, 0x86, 0xf1, 0xe0, 0x2b, 0x4a, 0x8e, 0x92, 0xb6, - 0x1e, 0xec, 0x28, 0x80, 0xcd, 0x0f, 0x1e, 0x3e, 0x6d, 0x28, 0x79, 0x52, 0x80, 0x6c, 0xf3, 0xdd, - 0xed, 0x47, 0x7b, 0x9b, 0xad, 0x6d, 0xa5, 0x50, 0x3e, 0x81, 0x12, 0x5b, 0xe6, 0xc0, 0x2a, 0xb2, - 0xa4, 0xf0, 0x1d, 0x48, 0xb1, 0x9d, 0x91, 0x50, 0x25, 0x95, 0xf0, 0xce, 0x4c, 0x53, 0x56, 0xd8, - 0x1e, 0x31, 0xda, 0xd2, 0x65, 0x48, 0xb1, 0x55, 0x5a, 0x84, 0x14, 0x5b, 0x1d, 0x19, 0x53, 0x45, - 0x56, 0x28, 0xff, 0x96, 0x0c, 0xb0, 0x61, 0xef, 0x3e, 0xef, 0x8f, 0x30, 0x21, 0xbf, 0x0c, 0x30, - 0x79, 0xde, 0x1f, 0xb5, 0x51, 0xf5, 0x3c, 0xa9, 0xcc, 0xd1, 0x1a, 0xf4, 0x77, 0xe4, 0x1a, 0x14, - 0xb0, 0xf9, 0x90, 0x79, 0x21, 0xcc, 0x25, 0x33, 0x46, 0x9e, 0xd6, 0x71, 0xc7, 0x14, 0x84, 0xd4, - 0x74, 0x4c, 0x21, 0xd3, 0x02, 0xa4, 0xa6, 0x93, 0xab, 0x80, 0xc5, 0xf6, 0x04, 0x23, 0x0a, 0xa6, - 0x8d, 0x39, 0x03, 0xfb, 0x65, 0x31, 0x86, 0xbc, 0x0d, 0xd8, 0x27, 0x9b, 0x77, 0x71, 0xfa, 0x74, - 0xb8, 0xc3, 0x5d, 0xa1, 0x3f, 0xd8, 0x6c, 0x7d, 0xc2, 0x52, 0x0b, 0x72, 0x5e, 0x3d, 0xed, 0x0b, - 0x6b, 0xf9, 0x8c, 0x14, 0x9c, 0x11, 0x60, 0x95, 0x37, 0x25, 0x06, 0xe0, 0xa3, 0x59, 0xc0, 0xd1, - 0x30, 0x12, 0x1b, 0x4e, 0xf9, 0x32, 0xcc, 0x6d, 0xdb, 0x16, 0x3b, 0xbd, 0xb8, 0x4a, 0x05, 0x90, - 0x3a, 0x25, 0x09, 0xb3, 0x27, 0xa9, 0x53, 0xbe, 0x02, 0x20, 0xb4, 0x29, 0x20, 0xed, 0xb3, 0x36, - 0xf4, 0x01, 0xd2, 0x7e, 0xf9, 0x26, 0xa4, 0xb7, 0x3a, 0xc7, 0x7b, 0x9d, 0x1e, 0xb9, 0x06, 0x30, - 0xe8, 0x4c, 0x9c, 0xf6, 0x21, 0xee, 0xc3, 0xe7, 0x9f, 0x7f, 0xfe, 0xb9, 0x84, 0x97, 0xbd, 0x1c, - 0xad, 0x65, 0xfb, 0xf1, 0x02, 0xa0, 0x35, 0xe8, 0x6e, 0x99, 0x93, 0x49, 0xa7, 0x67, 0x92, 0x2a, - 0xa4, 0x2d, 0x73, 0x42, 0xa3, 0x9d, 0x84, 0xef, 0x08, 0xcb, 0xfe, 0x2a, 0xf8, 0xa8, 0x95, 0x6d, - 0x84, 0x18, 0x1c, 0x4a, 0x14, 0x48, 0x58, 0x47, 0x43, 0x7c, 0x27, 0x49, 0x19, 0xf4, 0xe7, 0xd2, - 0x25, 0x48, 0x33, 0x0c, 0x21, 0x90, 0xb4, 0x3a, 0x43, 0xb3, 0xc4, 0xfa, 0xc5, 0xdf, 0xe5, 0x5f, - 0x95, 0x00, 0xb6, 0xcd, 0x97, 0x67, 0xe8, 0xd3, 0x47, 0xc5, 0xf4, 0x99, 0x60, 0x7d, 0xde, 0x8f, - 0xeb, 0x93, 0xea, 0xec, 0xd0, 0xb6, 0xbb, 0x6d, 0xb6, 0xc5, 0xec, 0x49, 0x27, 0x47, 0x6b, 0x70, - 0xd7, 0xca, 0x1f, 0x40, 0x61, 0xd3, 0xb2, 0xcc, 0xb1, 0x3b, 0x26, 0x02, 0xc9, 0x67, 0xf6, 0xc4, - 0xe1, 0x6f, 0x4b, 0xf8, 0x9b, 0x94, 0x20, 0x39, 0xb2, 0xc7, 0x0e, 0x9b, 0x67, 0x3d, 0xa9, 0xaf, - 0xae, 0xae, 0x1a, 0x58, 0x43, 0x2e, 0x41, 0xee, 0xc0, 0xb6, 0x2c, 0xf3, 0x80, 0x4e, 0x22, 0x81, - 0x69, 0x8d, 0x5f, 0x51, 0xfe, 0x65, 0x09, 0x0a, 0x2d, 0xe7, 0x99, 0x6f, 0x5c, 0x81, 0xc4, 0x73, - 0xf3, 0x04, 0x87, 0x97, 0x30, 0xe8, 0x4f, 0x7a, 0x54, 0x7e, 0xbe, 0x33, 0x38, 0x62, 0x6f, 0x4d, - 0x05, 0x83, 0x15, 0xc8, 0x05, 0x48, 0xbf, 0x34, 0xfb, 0xbd, 0x67, 0x0e, 0xda, 0x94, 0x0d, 0x5e, - 0x22, 0xb7, 0x20, 0xd5, 0xa7, 0x83, 0x2d, 0x25, 0x71, 0xbd, 0x2e, 0xf8, 0xeb, 0x25, 0xce, 0xc1, - 0x60, 0xa0, 0x1b, 0xd9, 0x6c, 0x57, 0xf9, 0xe8, 0xa3, 0x8f, 0x3e, 0x92, 0xcb, 0x87, 0xb0, 0xe8, - 0x1e, 0xde, 0xc0, 0x64, 0xb7, 0xa1, 0x34, 0x30, 0xed, 0xf6, 0x61, 0xdf, 0xea, 0x0c, 0x06, 0x27, - 0xed, 0x97, 0xb6, 0xd5, 0xee, 0x58, 0x6d, 0x7b, 0x72, 0xd0, 0x19, 0xe3, 0x02, 0x44, 0x77, 0xb1, - 0x38, 0x30, 0xed, 0x26, 0xa3, 0xbd, 0x6f, 0x5b, 0x0f, 0xac, 0x16, 0xe5, 0x94, 0xff, 0x20, 0x09, - 0xb9, 0xad, 0x13, 0xd7, 0xfa, 0x22, 0xa4, 0x0e, 0xec, 0x23, 0x8b, 0xad, 0x65, 0xca, 0x60, 0x05, - 0x6f, 0x8f, 0x64, 0x61, 0x8f, 0x16, 0x21, 0xf5, 0xe2, 0xc8, 0x76, 0x4c, 0x9c, 0x6e, 0xce, 0x60, - 0x05, 0xba, 0x5a, 0x23, 0xd3, 0x29, 0x25, 0x31, 0xb9, 0xa5, 0x3f, 0xfd, 0xf9, 0xa7, 0xce, 0x30, - 0x7f, 0xb2, 0x02, 0x69, 0x9b, 0xae, 0xfe, 0xa4, 0x94, 0xc6, 0x77, 0x35, 0x01, 0x2e, 0xee, 0x8a, - 0xc1, 0x51, 0x64, 0x13, 0x16, 0x5e, 0x9a, 0xed, 0xe1, 0xd1, 0xc4, 0x69, 0xf7, 0xec, 0x76, 0xd7, - 0x34, 0x47, 0xe6, 0xb8, 0x34, 0x87, 0x3d, 0x09, 0x3e, 0x61, 0xd6, 0x42, 0x1a, 0xf3, 0x2f, 0xcd, - 0xad, 0xa3, 0x89, 0xb3, 0x61, 0x3f, 0x46, 0x16, 0xa9, 0x42, 0x6e, 0x6c, 0x52, 0x4f, 0x40, 0x07, - 0x5b, 0x08, 0xf7, 0x1e, 0xa0, 0x66, 0xc7, 0xe6, 0x08, 0x2b, 0xc8, 0x3a, 0x64, 0xf7, 0xfb, 0xcf, - 0xcd, 0xc9, 0x33, 0xb3, 0x5b, 0xca, 0xa8, 0x52, 0x65, 0x5e, 0xbb, 0xe8, 0x73, 0xbc, 0x65, 0x5d, - 0x79, 0x64, 0x0f, 0xec, 0xb1, 0xe1, 0x41, 0xc9, 0x7d, 0xc8, 0x4d, 0xec, 0xa1, 0xc9, 0xf4, 0x9d, - 0xc5, 0xa0, 0x7a, 0x79, 0x16, 0x6f, 0xd7, 0x1e, 0x9a, 0xae, 0x07, 0x73, 0xf1, 0x64, 0x99, 0x0d, - 0x74, 0x9f, 0x5e, 0x9d, 0x4b, 0x80, 0x4f, 0x03, 0x74, 0x40, 0x78, 0x95, 0x26, 0x4b, 0x74, 0x40, - 0xbd, 0x43, 0x7a, 0x23, 0x2a, 0xe5, 0x31, 0xaf, 0xf4, 0xca, 0x4b, 0xb7, 0x20, 0xe7, 0x19, 0xf4, - 0x5d, 0x1f, 0x73, 0x37, 0x39, 0xf4, 0x07, 0xcc, 0xf5, 0x31, 0x5f, 0xf3, 0x06, 0xa4, 0x70, 0xd8, - 0x34, 0x42, 0x19, 0x0d, 0x1a, 0x10, 0x73, 0x90, 0xda, 0x30, 0x1a, 0x8d, 0x6d, 0x45, 0xc2, 0xd8, - 0xf8, 0xf4, 0xdd, 0x86, 0x22, 0x0b, 0x8a, 0xfd, 0x6d, 0x09, 0x12, 0x8d, 0x63, 0x54, 0x0b, 0x9d, - 0x86, 0x7b, 0xa2, 0xe9, 0x6f, 0xad, 0x06, 0xc9, 0xa1, 0x3d, 0x36, 0xc9, 0xf9, 0x19, 0xb3, 0x2c, - 0xf5, 0x70, 0xbf, 0x84, 0x57, 0xe4, 0xc6, 0xb1, 0x63, 0x20, 0x5e, 0x7b, 0x0b, 0x92, 0x8e, 0x79, - 0xec, 0xcc, 0xe6, 0x3d, 0x63, 0x1d, 0x50, 0x80, 0x76, 0x13, 0xd2, 0xd6, 0xd1, 0x70, 0xdf, 0x1c, - 0xcf, 0x86, 0xf6, 0x71, 0x7a, 0x1c, 0x52, 0x7e, 0x0f, 0x94, 0x47, 0xf6, 0x70, 0x34, 0x30, 0x8f, - 0x1b, 0xc7, 0x8e, 0x69, 0x4d, 0xfa, 0xb6, 0x45, 0xf5, 0x7c, 0xd8, 0x1f, 0xa3, 0x17, 0xc1, 0xb7, - 0x62, 0x2c, 0xd0, 0x53, 0x3d, 0x31, 0x0f, 0x6c, 0xab, 0xcb, 0x1d, 0x26, 0x2f, 0x51, 0xb4, 0xf3, - 0xac, 0x3f, 0xa6, 0x0e, 0x84, 0xfa, 0x79, 0x56, 0x28, 0x6f, 0x40, 0x91, 0xe7, 0x18, 0x13, 0xde, - 0x71, 0xf9, 0x06, 0x14, 0xdc, 0x2a, 0x7c, 0x38, 0xcf, 0x42, 0xf2, 0x83, 0x86, 0xd1, 0x52, 0xce, - 0xd1, 0x65, 0x6d, 0x6d, 0x37, 0x14, 0x89, 0xfe, 0xd8, 0x7b, 0xbf, 0x15, 0x58, 0xca, 0x4b, 0x50, - 0xf0, 0xc6, 0xbe, 0x6b, 0x3a, 0xd8, 0x42, 0x03, 0x42, 0xa6, 0x2e, 0x67, 0xa5, 0x72, 0x06, 0x52, - 0x8d, 0xe1, 0xc8, 0x39, 0x29, 0xff, 0x22, 0xe4, 0x39, 0xe8, 0x69, 0x7f, 0xe2, 0x90, 0x3b, 0x90, - 0x19, 0xf2, 0xf9, 0x4a, 0x78, 0xdd, 0x13, 0x35, 0xe5, 0xe3, 0xdc, 0xdf, 0x86, 0x8b, 0x5e, 0xaa, - 0x42, 0x46, 0xf0, 0xa5, 0xfc, 0xa8, 0xcb, 0xe2, 0x51, 0x67, 0x4e, 0x21, 0x21, 0x38, 0x85, 0xf2, - 0x16, 0x64, 0x58, 0x04, 0x9c, 0x60, 0x54, 0x67, 0xa9, 0x22, 0x13, 0x13, 0xdb, 0xf9, 0x3c, 0xab, - 0x63, 0x17, 0x95, 0xab, 0x90, 0x47, 0xc1, 0x72, 0x04, 0x73, 0x9d, 0x80, 0x55, 0x4c, 0x6e, 0xbf, - 0x9f, 0x82, 0xac, 0xbb, 0x52, 0x64, 0x19, 0xd2, 0x2c, 0x3f, 0x43, 0x53, 0xee, 0xfb, 0x41, 0x0a, - 0x33, 0x32, 0xb2, 0x0c, 0x19, 0x9e, 0x83, 0x71, 0xef, 0x2e, 0x57, 0x35, 0x23, 0xcd, 0x72, 0x2e, - 0xaf, 0xb1, 0xa6, 0xa3, 0x63, 0x62, 0x2f, 0x03, 0x69, 0x96, 0x55, 0x11, 0x15, 0x72, 0x5e, 0x1e, - 0x85, 0xfe, 0x98, 0x3f, 0x03, 0x64, 0xdd, 0xc4, 0x49, 0x40, 0xd4, 0x74, 0xf4, 0x58, 0x3c, 0xe7, - 0xcf, 0x36, 0xfd, 0xeb, 0x49, 0xd6, 0xcd, 0x86, 0xf0, 0xf9, 0xde, 0x4d, 0xf0, 0x33, 0x3c, 0xff, - 0xf1, 0x01, 0x35, 0x1d, 0x5d, 0x82, 0x9b, 0xcd, 0x67, 0x78, 0x8e, 0x43, 0xae, 0xd2, 0x21, 0x62, - 0xce, 0x82, 0x47, 0xdf, 0x4f, 0xdd, 0xd3, 0x2c, 0x93, 0x21, 0xd7, 0xa8, 0x05, 0x96, 0x98, 0xe0, - 0xb9, 0xf4, 0xf3, 0xf4, 0x0c, 0xcf, 0x57, 0xc8, 0x4d, 0x0a, 0x61, 0xcb, 0x5f, 0x82, 0x88, 0xa4, - 0x3c, 0xc3, 0x93, 0x72, 0xa2, 0xd2, 0x0e, 0xd1, 0x3d, 0xa0, 0x4b, 0x10, 0x12, 0xf0, 0x34, 0x4b, - 0xc0, 0xc9, 0x15, 0x34, 0xc7, 0x26, 0x55, 0xf0, 0x93, 0xed, 0x0c, 0x4f, 0x70, 0xfc, 0x76, 0xbc, - 0xb2, 0x79, 0x89, 0x75, 0x86, 0xa7, 0x30, 0xa4, 0x46, 0xf7, 0x8b, 0xea, 0xbb, 0x34, 0x8f, 0x4e, - 0xb0, 0xe4, 0x0b, 0xcf, 0xdd, 0x53, 0xe6, 0x03, 0xeb, 0xcc, 0x83, 0x18, 0xa9, 0x26, 0x9e, 0x86, - 0x25, 0xca, 0xdb, 0xe9, 0x5b, 0x87, 0xa5, 0x22, 0xae, 0x44, 0xa2, 0x6f, 0x1d, 0x1a, 0xa9, 0x26, - 0xad, 0x61, 0x1a, 0xd8, 0xa6, 0x6d, 0x0a, 0xb6, 0x25, 0x6f, 0xb3, 0x46, 0x5a, 0x45, 0x4a, 0x90, - 0x6a, 0xb6, 0xb7, 0x3b, 0x56, 0x69, 0x81, 0xf1, 0xac, 0x8e, 0x65, 0x24, 0x9b, 0xdb, 0x1d, 0x8b, - 0xbc, 0x05, 0x89, 0xc9, 0xd1, 0x7e, 0x89, 0x84, 0xbf, 0xac, 0xec, 0x1e, 0xed, 0xbb, 0x43, 0x31, - 0x28, 0x82, 0x2c, 0x43, 0x76, 0xe2, 0x8c, 0xdb, 0xbf, 0x60, 0x8e, 0xed, 0xd2, 0x79, 0x5c, 0xc2, - 0x73, 0x46, 0x66, 0xe2, 0x8c, 0x3f, 0x30, 0xc7, 0xf6, 0x19, 0x9d, 0x5f, 0xf9, 0x0a, 0xe4, 0x05, - 0xbb, 0xa4, 0x08, 0x92, 0xc5, 0x6e, 0x0a, 0x75, 0xe9, 0x8e, 0x21, 0x59, 0xe5, 0x3d, 0x28, 0xb8, - 0x39, 0x0c, 0xce, 0x57, 0xa3, 0x27, 0x69, 0x60, 0x8f, 0xf1, 0x7c, 0xce, 0x6b, 0x97, 0xc4, 0x10, - 0xe5, 0xc3, 0x78, 0xb8, 0x60, 0xd0, 0xb2, 0x12, 0x1a, 0x8a, 0x54, 0xfe, 0xa1, 0x04, 0x85, 0x2d, - 0x7b, 0xec, 0x3f, 0x30, 0x2f, 0x42, 0x6a, 0xdf, 0xb6, 0x07, 0x13, 0x34, 0x9b, 0x35, 0x58, 0x81, - 0xbc, 0x01, 0x05, 0xfc, 0xe1, 0xe6, 0x9e, 0xb2, 0xf7, 0xb4, 0x91, 0xc7, 0x7a, 0x9e, 0x70, 0x12, - 0x48, 0xf6, 0x2d, 0x67, 0xc2, 0x3d, 0x19, 0xfe, 0x26, 0x5f, 0x80, 0x3c, 0xfd, 0xeb, 0x32, 0x93, - 0xde, 0x85, 0x15, 0x68, 0x35, 0x27, 0xbe, 0x05, 0x73, 0xb8, 0xfb, 0x1e, 0x2c, 0xe3, 0x3d, 0x63, - 0x14, 0x58, 0x03, 0x07, 0x96, 0x20, 0xc3, 0x5c, 0xc1, 0x04, 0xbf, 0x96, 0xe5, 0x0c, 0xb7, 0x48, - 0xdd, 0x2b, 0x66, 0x02, 0x2c, 0xdc, 0x67, 0x0c, 0x5e, 0x2a, 0x3f, 0x80, 0x2c, 0x46, 0xa9, 0xd6, - 0xa0, 0x4b, 0xca, 0x20, 0xf5, 0x4a, 0x26, 0xc6, 0xc8, 0x45, 0xe1, 0x9a, 0xcf, 0x9b, 0x57, 0x36, - 0x0c, 0xa9, 0xb7, 0xb4, 0x00, 0xd2, 0x06, 0xbd, 0x77, 0x1f, 0x73, 0x37, 0x2d, 0x1d, 0x97, 0x5b, - 0xdc, 0xc4, 0xb6, 0xf9, 0x32, 0xce, 0xc4, 0xb6, 0xf9, 0x92, 0x99, 0xb8, 0x3a, 0x65, 0x82, 0x96, - 0x4e, 0xf8, 0xa7, 0x43, 0xe9, 0xa4, 0x5c, 0x85, 0x39, 0x3c, 0x9e, 0x7d, 0xab, 0xb7, 0x63, 0xf7, - 0x2d, 0xbc, 0xe7, 0x1f, 0xe2, 0x3d, 0x49, 0x32, 0xa4, 0x43, 0xba, 0x07, 0xe6, 0x71, 0xe7, 0x80, - 0xdd, 0x38, 0xb3, 0x06, 0x2b, 0x94, 0x3f, 0x4b, 0xc2, 0x3c, 0x77, 0xad, 0xef, 0xf7, 0x9d, 0x67, - 0x5b, 0x9d, 0x11, 0x79, 0x0a, 0x05, 0xea, 0x55, 0xdb, 0xc3, 0xce, 0x68, 0x44, 0x8f, 0xaf, 0x84, - 0x57, 0x8d, 0xeb, 0x53, 0xae, 0x9a, 0xe3, 0x57, 0xb6, 0x3b, 0x43, 0x73, 0x8b, 0x61, 0x1b, 0x96, - 0x33, 0x3e, 0x31, 0xf2, 0x96, 0x5f, 0x43, 0x36, 0x21, 0x3f, 0x9c, 0xf4, 0x3c, 0x63, 0x32, 0x1a, - 0xab, 0x44, 0x1a, 0xdb, 0x9a, 0xf4, 0x02, 0xb6, 0x60, 0xe8, 0x55, 0xd0, 0x81, 0x51, 0x7f, 0xec, - 0xd9, 0x4a, 0x9c, 0x32, 0x30, 0xea, 0x3a, 0x82, 0x03, 0xdb, 0xf7, 0x6b, 0xc8, 0x63, 0x00, 0x7a, - 0xbc, 0x1c, 0x9b, 0xa6, 0x4e, 0xa8, 0xa0, 0xbc, 0xf6, 0x66, 0xa4, 0xad, 0x5d, 0x67, 0xbc, 0x67, - 0xef, 0x3a, 0x63, 0x66, 0x88, 0x1e, 0x4c, 0x2c, 0x2e, 0xbd, 0x03, 0x4a, 0x78, 0xfe, 0xe2, 0x8d, - 0x3c, 0x35, 0xe3, 0x46, 0x9e, 0xe3, 0x37, 0xf2, 0xba, 0x7c, 0x57, 0x5a, 0x7a, 0x0f, 0x8a, 0xa1, - 0x29, 0x8b, 0x74, 0xc2, 0xe8, 0xb7, 0x45, 0x7a, 0x5e, 0x7b, 0x5d, 0xf8, 0x9c, 0x2d, 0x6e, 0xb8, - 0x68, 0xf7, 0x1d, 0x50, 0xc2, 0xd3, 0x17, 0x0d, 0x67, 0x63, 0x32, 0x05, 0xe4, 0xdf, 0x87, 0xb9, - 0xc0, 0x94, 0x45, 0x72, 0xee, 0x94, 0x49, 0x95, 0x7f, 0x29, 0x05, 0xa9, 0x96, 0x65, 0xda, 0x87, - 0xe4, 0xf5, 0x60, 0x9c, 0x7c, 0x72, 0xce, 0x8d, 0x91, 0x17, 0x43, 0x31, 0xf2, 0xc9, 0x39, 0x2f, - 0x42, 0x5e, 0x0c, 0x45, 0x48, 0xb7, 0xa9, 0xa6, 0x93, 0xcb, 0x53, 0xf1, 0xf1, 0xc9, 0x39, 0x21, - 0x38, 0x5e, 0x9e, 0x0a, 0x8e, 0x7e, 0x73, 0x4d, 0xa7, 0x0e, 0x35, 0x18, 0x19, 0x9f, 0x9c, 0xf3, - 0xa3, 0xe2, 0x72, 0x38, 0x2a, 0x7a, 0x8d, 0x35, 0x9d, 0x0d, 0x49, 0x88, 0x88, 0x38, 0x24, 0x16, - 0x0b, 0x97, 0xc3, 0xb1, 0x10, 0x79, 0x3c, 0x0a, 0x2e, 0x87, 0xa3, 0x20, 0x36, 0xf2, 0xa8, 0x77, - 0x31, 0x14, 0xf5, 0xd0, 0x28, 0x0b, 0x77, 0xcb, 0xe1, 0x70, 0xc7, 0x78, 0xc2, 0x48, 0xc5, 0x58, - 0xe7, 0x35, 0xd6, 0x74, 0xa2, 0x85, 0x02, 0x5d, 0xf4, 0x6d, 0x1f, 0xf7, 0x02, 0x9d, 0xbe, 0x4e, - 0x97, 0xcd, 0xbd, 0x88, 0x16, 0x63, 0xbe, 0xf8, 0xe3, 0x6a, 0xba, 0x17, 0x31, 0x0d, 0x32, 0x87, - 0x3c, 0x01, 0x56, 0xd0, 0x73, 0x09, 0xb2, 0xc4, 0xcd, 0x5f, 0x69, 0xb6, 0xd1, 0x83, 0xd1, 0x79, - 0x1d, 0xb2, 0x3b, 0x7d, 0x05, 0xe6, 0x9a, 0xed, 0xa7, 0x9d, 0x71, 0xcf, 0x9c, 0x38, 0xed, 0xbd, - 0x4e, 0xcf, 0x7b, 0x44, 0xa0, 0xfb, 0x9f, 0x6f, 0xf2, 0x96, 0xbd, 0x4e, 0x8f, 0x5c, 0x70, 0xc5, - 0xd5, 0xc5, 0x56, 0x89, 0xcb, 0x6b, 0xe9, 0x75, 0xba, 0x68, 0xcc, 0x18, 0xfa, 0xc2, 0x05, 0xee, - 0x0b, 0x1f, 0x66, 0x20, 0x75, 0x64, 0xf5, 0x6d, 0xeb, 0x61, 0x0e, 0x32, 0x8e, 0x3d, 0x1e, 0x76, - 0x1c, 0xbb, 0xfc, 0x23, 0x09, 0xe0, 0x91, 0x3d, 0x1c, 0x1e, 0x59, 0xfd, 0x17, 0x47, 0x26, 0xb9, - 0x02, 0xf9, 0x61, 0xe7, 0xb9, 0xd9, 0x1e, 0x9a, 0xed, 0x83, 0xb1, 0x7b, 0x0e, 0x72, 0xb4, 0x6a, - 0xcb, 0x7c, 0x34, 0x3e, 0x21, 0x25, 0xf7, 0x8a, 0x8e, 0xda, 0x41, 0x49, 0xf2, 0x2b, 0xfb, 0x22, - 0xbf, 0x74, 0xa6, 0xf9, 0x1e, 0xba, 0xd7, 0x4e, 0x96, 0x47, 0x64, 0xf8, 0xee, 0x61, 0x89, 0x4a, - 0xde, 0x31, 0x87, 0xa3, 0xf6, 0x01, 0x4a, 0x85, 0xca, 0x21, 0x45, 0xcb, 0x8f, 0xc8, 0x6d, 0x48, - 0x1c, 0xd8, 0x03, 0x14, 0xc9, 0x29, 0xfb, 0x42, 0x71, 0xe4, 0x0d, 0x48, 0x0c, 0x27, 0x4c, 0x36, - 0x79, 0x6d, 0x41, 0xb8, 0x27, 0xb0, 0xd0, 0x44, 0x61, 0xc3, 0x49, 0xcf, 0x9b, 0xf7, 0x8d, 0x22, - 0x24, 0x9a, 0xad, 0x16, 0x8d, 0xfd, 0xcd, 0x56, 0x6b, 0x4d, 0x91, 0xea, 0x5f, 0x82, 0x6c, 0x6f, - 0x6c, 0x9a, 0xd4, 0x3d, 0xcc, 0xce, 0x39, 0x3e, 0xc4, 0x58, 0xe7, 0x81, 0xea, 0x5b, 0x90, 0x39, - 0x60, 0x59, 0x07, 0x89, 0x48, 0x6b, 0x4b, 0x7f, 0xc8, 0x1e, 0x55, 0x96, 0xfc, 0xe6, 0x70, 0x9e, - 0x62, 0xb8, 0x36, 0xea, 0x3b, 0x90, 0x1b, 0xb7, 0x4f, 0x33, 0xf8, 0x31, 0x8b, 0x2e, 0x71, 0x06, - 0xb3, 0x63, 0x5e, 0x55, 0x6f, 0xc0, 0x82, 0x65, 0xbb, 0xdf, 0x50, 0xda, 0x5d, 0x76, 0xc6, 0x2e, - 0x4e, 0x5f, 0xe5, 0x5c, 0xe3, 0x26, 0xfb, 0x6e, 0x69, 0xd9, 0xbc, 0x81, 0x9d, 0xca, 0xfa, 0x23, - 0x50, 0x04, 0x33, 0x98, 0x7a, 0xc6, 0x59, 0x39, 0x64, 0x1f, 0x4a, 0x3d, 0x2b, 0x78, 0xee, 0x43, - 0x46, 0xd8, 0xc9, 0x8c, 0x31, 0xd2, 0x63, 0x5f, 0x9d, 0x3d, 0x23, 0xe8, 0xea, 0xa6, 0x8d, 0x50, - 0x5f, 0x13, 0x6d, 0xe4, 0x19, 0xfb, 0x20, 0x2d, 0x1a, 0xa9, 0xe9, 0xa1, 0x55, 0x39, 0x3a, 0x75, - 0x28, 0x7d, 0xf6, 0x3d, 0xd9, 0xb3, 0xc2, 0x1c, 0xe0, 0x0c, 0x33, 0xf1, 0x83, 0xf9, 0x90, 0x7d, - 0x6a, 0x0e, 0x98, 0x99, 0x1a, 0xcd, 0xe4, 0xd4, 0xd1, 0x3c, 0x67, 0xdf, 0x75, 0x3d, 0x33, 0xbb, - 0xb3, 0x46, 0x33, 0x39, 0x75, 0x34, 0x03, 0xf6, 0xc5, 0x37, 0x60, 0xa6, 0xa6, 0xd7, 0x37, 0x80, - 0x88, 0x5b, 0xcd, 0xe3, 0x44, 0x8c, 0x9d, 0x21, 0xfb, 0x8e, 0xef, 0x6f, 0x36, 0xa3, 0xcc, 0x32, - 0x14, 0x3f, 0x20, 0x8b, 0x7d, 0xe2, 0x0f, 0x1a, 0xaa, 0xe9, 0xf5, 0x4d, 0x38, 0x2f, 0x4e, 0xec, - 0x0c, 0x43, 0xb2, 0x55, 0xa9, 0x52, 0x34, 0x16, 0xfc, 0xa9, 0x71, 0xce, 0x4c, 0x53, 0xf1, 0x83, - 0x1a, 0xa9, 0x52, 0x45, 0x99, 0x32, 0x55, 0xd3, 0xeb, 0x0f, 0xa0, 0x28, 0x98, 0xda, 0xc7, 0x08, - 0x1d, 0x6d, 0xe6, 0x05, 0xfb, 0x5f, 0x0b, 0xcf, 0x0c, 0x8d, 0xe8, 0xe1, 0x1d, 0xe3, 0x31, 0x2e, - 0xda, 0xc8, 0x98, 0xfd, 0xa3, 0x80, 0x3f, 0x16, 0x64, 0x84, 0x8e, 0x04, 0xe6, 0xdf, 0x71, 0x56, - 0x26, 0xec, 0x5f, 0x08, 0xfc, 0xa1, 0x50, 0x42, 0xbd, 0x1f, 0x98, 0x8e, 0x49, 0x83, 0x5c, 0x8c, - 0x0d, 0x07, 0x3d, 0xf2, 0x9b, 0x91, 0x80, 0x15, 0xf1, 0x81, 0x44, 0x98, 0x36, 0x2d, 0xd6, 0x37, - 0x61, 0xfe, 0xec, 0x0e, 0xe9, 0x63, 0x89, 0x65, 0xcb, 0xd5, 0x15, 0x9a, 0x50, 0x1b, 0x73, 0xdd, - 0x80, 0x5f, 0x6a, 0xc0, 0xdc, 0x99, 0x9d, 0xd2, 0x27, 0x12, 0xcb, 0x39, 0xa9, 0x25, 0xa3, 0xd0, - 0x0d, 0x7a, 0xa6, 0xb9, 0x33, 0xbb, 0xa5, 0x4f, 0x25, 0xf6, 0x40, 0xa1, 0x6b, 0x9e, 0x11, 0xd7, - 0x33, 0xcd, 0x9d, 0xd9, 0x2d, 0x7d, 0x95, 0x65, 0x94, 0xb2, 0x5e, 0x15, 0x8d, 0xa0, 0x2f, 0x98, - 0x3f, 0xbb, 0x5b, 0xfa, 0x9a, 0x84, 0x8f, 0x15, 0xb2, 0xae, 0x7b, 0xeb, 0xe2, 0x79, 0xa6, 0xf9, - 0xb3, 0xbb, 0xa5, 0xaf, 0x4b, 0xf8, 0xa4, 0x21, 0xeb, 0xeb, 0x01, 0x33, 0xc1, 0xd1, 0x9c, 0xee, - 0x96, 0xbe, 0x21, 0xe1, 0x2b, 0x83, 0xac, 0xd7, 0x3c, 0x33, 0xbb, 0x53, 0xa3, 0x39, 0xdd, 0x2d, - 0x7d, 0x13, 0x6f, 0xf1, 0x75, 0x59, 0xbf, 0x13, 0x30, 0x83, 0x9e, 0xa9, 0xf8, 0x0a, 0x6e, 0xe9, - 0x5b, 0x12, 0x3e, 0x06, 0xc9, 0xfa, 0x5d, 0xc3, 0xed, 0xdd, 0xf7, 0x4c, 0xc5, 0x57, 0x70, 0x4b, - 0x9f, 0x49, 0xf8, 0x66, 0x24, 0xeb, 0xf7, 0x82, 0x86, 0xd0, 0x33, 0x29, 0xaf, 0xe2, 0x96, 0xbe, - 0x4d, 0x2d, 0x15, 0xeb, 0xf2, 0xfa, 0xaa, 0xe1, 0x0e, 0x40, 0xf0, 0x4c, 0xca, 0xab, 0xb8, 0xa5, - 0xef, 0x50, 0x53, 0x4a, 0x5d, 0x5e, 0x5f, 0x0b, 0x99, 0xaa, 0xe9, 0xf5, 0x47, 0x50, 0x38, 0xab, - 0x5b, 0xfa, 0xae, 0xf8, 0x16, 0x97, 0xef, 0x0a, 0xbe, 0x69, 0x47, 0xd8, 0xb3, 0x53, 0x1d, 0xd3, - 0xf7, 0x30, 0xc7, 0xa9, 0xcf, 0x3d, 0x61, 0xef, 0x55, 0x8c, 0xe0, 0x6f, 0x1f, 0x73, 0x53, 0x5b, - 0xfe, 0xf9, 0x38, 0xd5, 0x47, 0x7d, 0x5f, 0xc2, 0x47, 0xad, 0x02, 0x37, 0x88, 0x78, 0xef, 0xa4, - 0x30, 0x87, 0xf5, 0xa1, 0x3f, 0xcb, 0xd3, 0xbc, 0xd5, 0x0f, 0xa4, 0x57, 0x71, 0x57, 0xf5, 0x44, - 0x6b, 0xbb, 0xe1, 0x2d, 0x06, 0xd6, 0xbc, 0x0d, 0xc9, 0x63, 0x6d, 0x75, 0x4d, 0xbc, 0x92, 0x89, - 0x6f, 0xb9, 0xcc, 0x49, 0xe5, 0xb5, 0xa2, 0xf0, 0xdc, 0x3d, 0x1c, 0x39, 0x27, 0x06, 0xb2, 0x38, - 0x5b, 0x8b, 0x64, 0x7f, 0x12, 0xc3, 0xd6, 0x38, 0xbb, 0x1a, 0xc9, 0xfe, 0x34, 0x86, 0x5d, 0xe5, - 0x6c, 0x3d, 0x92, 0xfd, 0xd5, 0x18, 0xb6, 0xce, 0xd9, 0xeb, 0x91, 0xec, 0xaf, 0xc5, 0xb0, 0xd7, - 0x39, 0xbb, 0x16, 0xc9, 0xfe, 0x7a, 0x0c, 0xbb, 0xc6, 0xd9, 0x77, 0x22, 0xd9, 0xdf, 0x88, 0x61, - 0xdf, 0xe1, 0xec, 0xbb, 0x91, 0xec, 0x6f, 0xc6, 0xb0, 0xef, 0x72, 0xf6, 0xbd, 0x48, 0xf6, 0xb7, - 0x62, 0xd8, 0xf7, 0x18, 0x7b, 0x6d, 0x35, 0x92, 0xfd, 0x59, 0x34, 0x7b, 0x6d, 0x95, 0xb3, 0xa3, - 0xb5, 0xf6, 0xed, 0x18, 0x36, 0xd7, 0xda, 0x5a, 0xb4, 0xd6, 0xbe, 0x13, 0xc3, 0xe6, 0x5a, 0x5b, - 0x8b, 0xd6, 0xda, 0x77, 0x63, 0xd8, 0x5c, 0x6b, 0x6b, 0xd1, 0x5a, 0xfb, 0x5e, 0x0c, 0x9b, 0x6b, - 0x6d, 0x2d, 0x5a, 0x6b, 0xdf, 0x8f, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, 0x07, 0x31, 0x6c, - 0xae, 0xb5, 0xb5, 0x68, 0xad, 0xfd, 0x51, 0x0c, 0x9b, 0x6b, 0x6d, 0x2d, 0x5a, 0x6b, 0x7f, 0x1c, - 0xc3, 0xe6, 0x5a, 0x5b, 0x8b, 0xd6, 0xda, 0x9f, 0xc4, 0xb0, 0xb9, 0xd6, 0xb4, 0x68, 0xad, 0xfd, - 0x69, 0x34, 0x5b, 0xe3, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x67, 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, - 0x6b, 0x7f, 0x1e, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0xc3, 0x18, 0x36, 0xd7, 0x9a, 0x16, - 0xad, 0xb5, 0xbf, 0x88, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xcb, 0x18, 0x36, 0xd7, 0x9a, - 0x16, 0xad, 0xb5, 0xbf, 0x8a, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xeb, 0x18, 0x36, 0xd7, - 0x9a, 0x16, 0xad, 0xb5, 0xbf, 0x89, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xdb, 0x18, 0x36, - 0xd7, 0x5a, 0x35, 0x5a, 0x6b, 0x7f, 0x17, 0xcd, 0xae, 0x72, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0xf7, - 0x31, 0x6c, 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x21, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, - 0x3f, 0xc6, 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0x51, 0x0c, 0x9b, 0x6b, 0xad, 0x1a, 0xad, - 0xb5, 0x7f, 0x8a, 0x61, 0x73, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0xcf, 0x31, 0x6c, 0xae, 0xb5, 0x6a, - 0xb4, 0xd6, 0xfe, 0x25, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, 0xbf, 0xc6, 0xb0, 0xb9, 0xd6, - 0xaa, 0xd1, 0x5a, 0xfb, 0xb7, 0x18, 0x36, 0xd7, 0x9a, 0x1e, 0xad, 0xb5, 0x7f, 0x8f, 0x66, 0xeb, - 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x23, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, 0x3f, 0x63, - 0xd8, 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x2b, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, 0xbf, - 0x63, 0xd8, 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x27, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, - 0xc7, 0x31, 0x6c, 0xae, 0x35, 0x3d, 0x5a, 0x6b, 0x3f, 0x89, 0x61, 0x73, 0xad, 0xe9, 0xd1, 0x5a, - 0xfb, 0xdf, 0x18, 0x36, 0xd7, 0x9a, 0x1e, 0xad, 0xb5, 0xff, 0x8b, 0x61, 0x73, 0xad, 0xad, 0x47, - 0x6b, 0xed, 0xff, 0xa3, 0xd9, 0xeb, 0xab, 0x3f, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xcd, - 0x32, 0x57, 0x39, 0x00, 0x00, -} diff --git a/vendor/github.com/golang/protobuf/proto/testdata/test.proto b/vendor/github.com/golang/protobuf/proto/testdata/test.proto deleted file mode 100644 index 70e3cfcd..00000000 --- a/vendor/github.com/golang/protobuf/proto/testdata/test.proto +++ /dev/null @@ -1,548 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// A feature-rich test file for the protocol compiler and libraries. - -syntax = "proto2"; - -package testdata; - -enum FOO { FOO1 = 1; }; - -message GoEnum { - required FOO foo = 1; -} - -message GoTestField { - required string Label = 1; - required string Type = 2; -} - -message GoTest { - // An enum, for completeness. - enum KIND { - VOID = 0; - - // Basic types - BOOL = 1; - BYTES = 2; - FINGERPRINT = 3; - FLOAT = 4; - INT = 5; - STRING = 6; - TIME = 7; - - // Groupings - TUPLE = 8; - ARRAY = 9; - MAP = 10; - - // Table types - TABLE = 11; - - // Functions - FUNCTION = 12; // last tag - }; - - // Some typical parameters - required KIND Kind = 1; - optional string Table = 2; - optional int32 Param = 3; - - // Required, repeated and optional foreign fields. - required GoTestField RequiredField = 4; - repeated GoTestField RepeatedField = 5; - optional GoTestField OptionalField = 6; - - // Required fields of all basic types - required bool F_Bool_required = 10; - required int32 F_Int32_required = 11; - required int64 F_Int64_required = 12; - required fixed32 F_Fixed32_required = 13; - required fixed64 F_Fixed64_required = 14; - required uint32 F_Uint32_required = 15; - required uint64 F_Uint64_required = 16; - required float F_Float_required = 17; - required double F_Double_required = 18; - required string F_String_required = 19; - required bytes F_Bytes_required = 101; - required sint32 F_Sint32_required = 102; - required sint64 F_Sint64_required = 103; - - // Repeated fields of all basic types - repeated bool F_Bool_repeated = 20; - repeated int32 F_Int32_repeated = 21; - repeated int64 F_Int64_repeated = 22; - repeated fixed32 F_Fixed32_repeated = 23; - repeated fixed64 F_Fixed64_repeated = 24; - repeated uint32 F_Uint32_repeated = 25; - repeated uint64 F_Uint64_repeated = 26; - repeated float F_Float_repeated = 27; - repeated double F_Double_repeated = 28; - repeated string F_String_repeated = 29; - repeated bytes F_Bytes_repeated = 201; - repeated sint32 F_Sint32_repeated = 202; - repeated sint64 F_Sint64_repeated = 203; - - // Optional fields of all basic types - optional bool F_Bool_optional = 30; - optional int32 F_Int32_optional = 31; - optional int64 F_Int64_optional = 32; - optional fixed32 F_Fixed32_optional = 33; - optional fixed64 F_Fixed64_optional = 34; - optional uint32 F_Uint32_optional = 35; - optional uint64 F_Uint64_optional = 36; - optional float F_Float_optional = 37; - optional double F_Double_optional = 38; - optional string F_String_optional = 39; - optional bytes F_Bytes_optional = 301; - optional sint32 F_Sint32_optional = 302; - optional sint64 F_Sint64_optional = 303; - - // Default-valued fields of all basic types - optional bool F_Bool_defaulted = 40 [default=true]; - optional int32 F_Int32_defaulted = 41 [default=32]; - optional int64 F_Int64_defaulted = 42 [default=64]; - optional fixed32 F_Fixed32_defaulted = 43 [default=320]; - optional fixed64 F_Fixed64_defaulted = 44 [default=640]; - optional uint32 F_Uint32_defaulted = 45 [default=3200]; - optional uint64 F_Uint64_defaulted = 46 [default=6400]; - optional float F_Float_defaulted = 47 [default=314159.]; - optional double F_Double_defaulted = 48 [default=271828.]; - optional string F_String_defaulted = 49 [default="hello, \"world!\"\n"]; - optional bytes F_Bytes_defaulted = 401 [default="Bignose"]; - optional sint32 F_Sint32_defaulted = 402 [default = -32]; - optional sint64 F_Sint64_defaulted = 403 [default = -64]; - - // Packed repeated fields (no string or bytes). - repeated bool F_Bool_repeated_packed = 50 [packed=true]; - repeated int32 F_Int32_repeated_packed = 51 [packed=true]; - repeated int64 F_Int64_repeated_packed = 52 [packed=true]; - repeated fixed32 F_Fixed32_repeated_packed = 53 [packed=true]; - repeated fixed64 F_Fixed64_repeated_packed = 54 [packed=true]; - repeated uint32 F_Uint32_repeated_packed = 55 [packed=true]; - repeated uint64 F_Uint64_repeated_packed = 56 [packed=true]; - repeated float F_Float_repeated_packed = 57 [packed=true]; - repeated double F_Double_repeated_packed = 58 [packed=true]; - repeated sint32 F_Sint32_repeated_packed = 502 [packed=true]; - repeated sint64 F_Sint64_repeated_packed = 503 [packed=true]; - - // Required, repeated, and optional groups. - required group RequiredGroup = 70 { - required string RequiredField = 71; - }; - - repeated group RepeatedGroup = 80 { - required string RequiredField = 81; - }; - - optional group OptionalGroup = 90 { - required string RequiredField = 91; - }; -} - -// For testing a group containing a required field. -message GoTestRequiredGroupField { - required group Group = 1 { - required int32 Field = 2; - }; -} - -// For testing skipping of unrecognized fields. -// Numbers are all big, larger than tag numbers in GoTestField, -// the message used in the corresponding test. -message GoSkipTest { - required int32 skip_int32 = 11; - required fixed32 skip_fixed32 = 12; - required fixed64 skip_fixed64 = 13; - required string skip_string = 14; - required group SkipGroup = 15 { - required int32 group_int32 = 16; - required string group_string = 17; - } -} - -// For testing packed/non-packed decoder switching. -// A serialized instance of one should be deserializable as the other. -message NonPackedTest { - repeated int32 a = 1; -} - -message PackedTest { - repeated int32 b = 1 [packed=true]; -} - -message MaxTag { - // Maximum possible tag number. - optional string last_field = 536870911; -} - -message OldMessage { - message Nested { - optional string name = 1; - } - optional Nested nested = 1; - - optional int32 num = 2; -} - -// NewMessage is wire compatible with OldMessage; -// imagine it as a future version. -message NewMessage { - message Nested { - optional string name = 1; - optional string food_group = 2; - } - optional Nested nested = 1; - - // This is an int32 in OldMessage. - optional int64 num = 2; -} - -// Smaller tests for ASCII formatting. - -message InnerMessage { - required string host = 1; - optional int32 port = 2 [default=4000]; - optional bool connected = 3; -} - -message OtherMessage { - optional int64 key = 1; - optional bytes value = 2; - optional float weight = 3; - optional InnerMessage inner = 4; - - extensions 100 to max; -} - -message RequiredInnerMessage { - required InnerMessage leo_finally_won_an_oscar = 1; -} - -message MyMessage { - required int32 count = 1; - optional string name = 2; - optional string quote = 3; - repeated string pet = 4; - optional InnerMessage inner = 5; - repeated OtherMessage others = 6; - optional RequiredInnerMessage we_must_go_deeper = 13; - repeated InnerMessage rep_inner = 12; - - enum Color { - RED = 0; - GREEN = 1; - BLUE = 2; - }; - optional Color bikeshed = 7; - - optional group SomeGroup = 8 { - optional int32 group_field = 9; - } - - // This field becomes [][]byte in the generated code. - repeated bytes rep_bytes = 10; - - optional double bigfloat = 11; - - extensions 100 to max; -} - -message Ext { - extend MyMessage { - optional Ext more = 103; - optional string text = 104; - optional int32 number = 105; - } - - optional string data = 1; -} - -extend MyMessage { - repeated string greeting = 106; -} - -message ComplexExtension { - optional int32 first = 1; - optional int32 second = 2; - repeated int32 third = 3; -} - -extend OtherMessage { - optional ComplexExtension complex = 200; - repeated ComplexExtension r_complex = 201; -} - -message DefaultsMessage { - enum DefaultsEnum { - ZERO = 0; - ONE = 1; - TWO = 2; - }; - extensions 100 to max; -} - -extend DefaultsMessage { - optional double no_default_double = 101; - optional float no_default_float = 102; - optional int32 no_default_int32 = 103; - optional int64 no_default_int64 = 104; - optional uint32 no_default_uint32 = 105; - optional uint64 no_default_uint64 = 106; - optional sint32 no_default_sint32 = 107; - optional sint64 no_default_sint64 = 108; - optional fixed32 no_default_fixed32 = 109; - optional fixed64 no_default_fixed64 = 110; - optional sfixed32 no_default_sfixed32 = 111; - optional sfixed64 no_default_sfixed64 = 112; - optional bool no_default_bool = 113; - optional string no_default_string = 114; - optional bytes no_default_bytes = 115; - optional DefaultsMessage.DefaultsEnum no_default_enum = 116; - - optional double default_double = 201 [default = 3.1415]; - optional float default_float = 202 [default = 3.14]; - optional int32 default_int32 = 203 [default = 42]; - optional int64 default_int64 = 204 [default = 43]; - optional uint32 default_uint32 = 205 [default = 44]; - optional uint64 default_uint64 = 206 [default = 45]; - optional sint32 default_sint32 = 207 [default = 46]; - optional sint64 default_sint64 = 208 [default = 47]; - optional fixed32 default_fixed32 = 209 [default = 48]; - optional fixed64 default_fixed64 = 210 [default = 49]; - optional sfixed32 default_sfixed32 = 211 [default = 50]; - optional sfixed64 default_sfixed64 = 212 [default = 51]; - optional bool default_bool = 213 [default = true]; - optional string default_string = 214 [default = "Hello, string"]; - optional bytes default_bytes = 215 [default = "Hello, bytes"]; - optional DefaultsMessage.DefaultsEnum default_enum = 216 [default = ONE]; -} - -message MyMessageSet { - option message_set_wire_format = true; - extensions 100 to max; -} - -message Empty { -} - -extend MyMessageSet { - optional Empty x201 = 201; - optional Empty x202 = 202; - optional Empty x203 = 203; - optional Empty x204 = 204; - optional Empty x205 = 205; - optional Empty x206 = 206; - optional Empty x207 = 207; - optional Empty x208 = 208; - optional Empty x209 = 209; - optional Empty x210 = 210; - optional Empty x211 = 211; - optional Empty x212 = 212; - optional Empty x213 = 213; - optional Empty x214 = 214; - optional Empty x215 = 215; - optional Empty x216 = 216; - optional Empty x217 = 217; - optional Empty x218 = 218; - optional Empty x219 = 219; - optional Empty x220 = 220; - optional Empty x221 = 221; - optional Empty x222 = 222; - optional Empty x223 = 223; - optional Empty x224 = 224; - optional Empty x225 = 225; - optional Empty x226 = 226; - optional Empty x227 = 227; - optional Empty x228 = 228; - optional Empty x229 = 229; - optional Empty x230 = 230; - optional Empty x231 = 231; - optional Empty x232 = 232; - optional Empty x233 = 233; - optional Empty x234 = 234; - optional Empty x235 = 235; - optional Empty x236 = 236; - optional Empty x237 = 237; - optional Empty x238 = 238; - optional Empty x239 = 239; - optional Empty x240 = 240; - optional Empty x241 = 241; - optional Empty x242 = 242; - optional Empty x243 = 243; - optional Empty x244 = 244; - optional Empty x245 = 245; - optional Empty x246 = 246; - optional Empty x247 = 247; - optional Empty x248 = 248; - optional Empty x249 = 249; - optional Empty x250 = 250; -} - -message MessageList { - repeated group Message = 1 { - required string name = 2; - required int32 count = 3; - } -} - -message Strings { - optional string string_field = 1; - optional bytes bytes_field = 2; -} - -message Defaults { - enum Color { - RED = 0; - GREEN = 1; - BLUE = 2; - } - - // Default-valued fields of all basic types. - // Same as GoTest, but copied here to make testing easier. - optional bool F_Bool = 1 [default=true]; - optional int32 F_Int32 = 2 [default=32]; - optional int64 F_Int64 = 3 [default=64]; - optional fixed32 F_Fixed32 = 4 [default=320]; - optional fixed64 F_Fixed64 = 5 [default=640]; - optional uint32 F_Uint32 = 6 [default=3200]; - optional uint64 F_Uint64 = 7 [default=6400]; - optional float F_Float = 8 [default=314159.]; - optional double F_Double = 9 [default=271828.]; - optional string F_String = 10 [default="hello, \"world!\"\n"]; - optional bytes F_Bytes = 11 [default="Bignose"]; - optional sint32 F_Sint32 = 12 [default=-32]; - optional sint64 F_Sint64 = 13 [default=-64]; - optional Color F_Enum = 14 [default=GREEN]; - - // More fields with crazy defaults. - optional float F_Pinf = 15 [default=inf]; - optional float F_Ninf = 16 [default=-inf]; - optional float F_Nan = 17 [default=nan]; - - // Sub-message. - optional SubDefaults sub = 18; - - // Redundant but explicit defaults. - optional string str_zero = 19 [default=""]; -} - -message SubDefaults { - optional int64 n = 1 [default=7]; -} - -message RepeatedEnum { - enum Color { - RED = 1; - } - repeated Color color = 1; -} - -message MoreRepeated { - repeated bool bools = 1; - repeated bool bools_packed = 2 [packed=true]; - repeated int32 ints = 3; - repeated int32 ints_packed = 4 [packed=true]; - repeated int64 int64s_packed = 7 [packed=true]; - repeated string strings = 5; - repeated fixed32 fixeds = 6; -} - -// GroupOld and GroupNew have the same wire format. -// GroupNew has a new field inside a group. - -message GroupOld { - optional group G = 101 { - optional int32 x = 2; - } -} - -message GroupNew { - optional group G = 101 { - optional int32 x = 2; - optional int32 y = 3; - } -} - -message FloatingPoint { - required double f = 1; - optional bool exact = 2; -} - -message MessageWithMap { - map name_mapping = 1; - map msg_mapping = 2; - map byte_mapping = 3; - map str_to_str = 4; -} - -message Oneof { - oneof union { - bool F_Bool = 1; - int32 F_Int32 = 2; - int64 F_Int64 = 3; - fixed32 F_Fixed32 = 4; - fixed64 F_Fixed64 = 5; - uint32 F_Uint32 = 6; - uint64 F_Uint64 = 7; - float F_Float = 8; - double F_Double = 9; - string F_String = 10; - bytes F_Bytes = 11; - sint32 F_Sint32 = 12; - sint64 F_Sint64 = 13; - MyMessage.Color F_Enum = 14; - GoTestField F_Message = 15; - group F_Group = 16 { - optional int32 x = 17; - } - int32 F_Largest_Tag = 536870911; - } - - oneof tormato { - int32 value = 100; - } -} - -message Communique { - optional bool make_me_cry = 1; - - // This is a oneof, called "union". - oneof union { - int32 number = 5; - string name = 6; - bytes data = 7; - double temp_c = 8; - MyMessage.Color col = 9; - Strings msg = 10; - } -} diff --git a/vendor/github.com/golang/protobuf/proto/text_parser_test.go b/vendor/github.com/golang/protobuf/proto/text_parser_test.go deleted file mode 100644 index 8f7cb4d2..00000000 --- a/vendor/github.com/golang/protobuf/proto/text_parser_test.go +++ /dev/null @@ -1,673 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto_test - -import ( - "math" - "reflect" - "testing" - - . "github.com/golang/protobuf/proto" - proto3pb "github.com/golang/protobuf/proto/proto3_proto" - . "github.com/golang/protobuf/proto/testdata" -) - -type UnmarshalTextTest struct { - in string - err string // if "", no error expected - out *MyMessage -} - -func buildExtStructTest(text string) UnmarshalTextTest { - msg := &MyMessage{ - Count: Int32(42), - } - SetExtension(msg, E_Ext_More, &Ext{ - Data: String("Hello, world!"), - }) - return UnmarshalTextTest{in: text, out: msg} -} - -func buildExtDataTest(text string) UnmarshalTextTest { - msg := &MyMessage{ - Count: Int32(42), - } - SetExtension(msg, E_Ext_Text, String("Hello, world!")) - SetExtension(msg, E_Ext_Number, Int32(1729)) - return UnmarshalTextTest{in: text, out: msg} -} - -func buildExtRepStringTest(text string) UnmarshalTextTest { - msg := &MyMessage{ - Count: Int32(42), - } - if err := SetExtension(msg, E_Greeting, []string{"bula", "hola"}); err != nil { - panic(err) - } - return UnmarshalTextTest{in: text, out: msg} -} - -var unMarshalTextTests = []UnmarshalTextTest{ - // Basic - { - in: " count:42\n name:\"Dave\" ", - out: &MyMessage{ - Count: Int32(42), - Name: String("Dave"), - }, - }, - - // Empty quoted string - { - in: `count:42 name:""`, - out: &MyMessage{ - Count: Int32(42), - Name: String(""), - }, - }, - - // Quoted string concatenation with double quotes - { - in: `count:42 name: "My name is "` + "\n" + `"elsewhere"`, - out: &MyMessage{ - Count: Int32(42), - Name: String("My name is elsewhere"), - }, - }, - - // Quoted string concatenation with single quotes - { - in: "count:42 name: 'My name is '\n'elsewhere'", - out: &MyMessage{ - Count: Int32(42), - Name: String("My name is elsewhere"), - }, - }, - - // Quoted string concatenations with mixed quotes - { - in: "count:42 name: 'My name is '\n\"elsewhere\"", - out: &MyMessage{ - Count: Int32(42), - Name: String("My name is elsewhere"), - }, - }, - { - in: "count:42 name: \"My name is \"\n'elsewhere'", - out: &MyMessage{ - Count: Int32(42), - Name: String("My name is elsewhere"), - }, - }, - - // Quoted string with escaped apostrophe - { - in: `count:42 name: "HOLIDAY - New Year\'s Day"`, - out: &MyMessage{ - Count: Int32(42), - Name: String("HOLIDAY - New Year's Day"), - }, - }, - - // Quoted string with single quote - { - in: `count:42 name: 'Roger "The Ramster" Ramjet'`, - out: &MyMessage{ - Count: Int32(42), - Name: String(`Roger "The Ramster" Ramjet`), - }, - }, - - // Quoted string with all the accepted special characters from the C++ test - { - in: `count:42 name: ` + "\"\\\"A string with \\' characters \\n and \\r newlines and \\t tabs and \\001 slashes \\\\ and multiple spaces\"", - out: &MyMessage{ - Count: Int32(42), - Name: String("\"A string with ' characters \n and \r newlines and \t tabs and \001 slashes \\ and multiple spaces"), - }, - }, - - // Quoted string with quoted backslash - { - in: `count:42 name: "\\'xyz"`, - out: &MyMessage{ - Count: Int32(42), - Name: String(`\'xyz`), - }, - }, - - // Quoted string with UTF-8 bytes. - { - in: "count:42 name: '\303\277\302\201\xAB'", - out: &MyMessage{ - Count: Int32(42), - Name: String("\303\277\302\201\xAB"), - }, - }, - - // Bad quoted string - { - in: `inner: < host: "\0" >` + "\n", - err: `line 1.15: invalid quoted string "\0": \0 requires 2 following digits`, - }, - - // Number too large for int64 - { - in: "count: 1 others { key: 123456789012345678901 }", - err: "line 1.23: invalid int64: 123456789012345678901", - }, - - // Number too large for int32 - { - in: "count: 1234567890123", - err: "line 1.7: invalid int32: 1234567890123", - }, - - // Number in hexadecimal - { - in: "count: 0x2beef", - out: &MyMessage{ - Count: Int32(0x2beef), - }, - }, - - // Number in octal - { - in: "count: 024601", - out: &MyMessage{ - Count: Int32(024601), - }, - }, - - // Floating point number with "f" suffix - { - in: "count: 4 others:< weight: 17.0f >", - out: &MyMessage{ - Count: Int32(4), - Others: []*OtherMessage{ - { - Weight: Float32(17), - }, - }, - }, - }, - - // Floating point positive infinity - { - in: "count: 4 bigfloat: inf", - out: &MyMessage{ - Count: Int32(4), - Bigfloat: Float64(math.Inf(1)), - }, - }, - - // Floating point negative infinity - { - in: "count: 4 bigfloat: -inf", - out: &MyMessage{ - Count: Int32(4), - Bigfloat: Float64(math.Inf(-1)), - }, - }, - - // Number too large for float32 - { - in: "others:< weight: 12345678901234567890123456789012345678901234567890 >", - err: "line 1.17: invalid float32: 12345678901234567890123456789012345678901234567890", - }, - - // Number posing as a quoted string - { - in: `inner: < host: 12 >` + "\n", - err: `line 1.15: invalid string: 12`, - }, - - // Quoted string posing as int32 - { - in: `count: "12"`, - err: `line 1.7: invalid int32: "12"`, - }, - - // Quoted string posing a float32 - { - in: `others:< weight: "17.4" >`, - err: `line 1.17: invalid float32: "17.4"`, - }, - - // Enum - { - in: `count:42 bikeshed: BLUE`, - out: &MyMessage{ - Count: Int32(42), - Bikeshed: MyMessage_BLUE.Enum(), - }, - }, - - // Repeated field - { - in: `count:42 pet: "horsey" pet:"bunny"`, - out: &MyMessage{ - Count: Int32(42), - Pet: []string{"horsey", "bunny"}, - }, - }, - - // Repeated field with list notation - { - in: `count:42 pet: ["horsey", "bunny"]`, - out: &MyMessage{ - Count: Int32(42), - Pet: []string{"horsey", "bunny"}, - }, - }, - - // Repeated message with/without colon and <>/{} - { - in: `count:42 others:{} others{} others:<> others:{}`, - out: &MyMessage{ - Count: Int32(42), - Others: []*OtherMessage{ - {}, - {}, - {}, - {}, - }, - }, - }, - - // Missing colon for inner message - { - in: `count:42 inner < host: "cauchy.syd" >`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("cauchy.syd"), - }, - }, - }, - - // Missing colon for string field - { - in: `name "Dave"`, - err: `line 1.5: expected ':', found "\"Dave\""`, - }, - - // Missing colon for int32 field - { - in: `count 42`, - err: `line 1.6: expected ':', found "42"`, - }, - - // Missing required field - { - in: `name: "Pawel"`, - err: `proto: required field "testdata.MyMessage.count" not set`, - out: &MyMessage{ - Name: String("Pawel"), - }, - }, - - // Missing required field in a required submessage - { - in: `count: 42 we_must_go_deeper < leo_finally_won_an_oscar <> >`, - err: `proto: required field "testdata.InnerMessage.host" not set`, - out: &MyMessage{ - Count: Int32(42), - WeMustGoDeeper: &RequiredInnerMessage{LeoFinallyWonAnOscar: &InnerMessage{}}, - }, - }, - - // Repeated non-repeated field - { - in: `name: "Rob" name: "Russ"`, - err: `line 1.12: non-repeated field "name" was repeated`, - }, - - // Group - { - in: `count: 17 SomeGroup { group_field: 12 }`, - out: &MyMessage{ - Count: Int32(17), - Somegroup: &MyMessage_SomeGroup{ - GroupField: Int32(12), - }, - }, - }, - - // Semicolon between fields - { - in: `count:3;name:"Calvin"`, - out: &MyMessage{ - Count: Int32(3), - Name: String("Calvin"), - }, - }, - // Comma between fields - { - in: `count:4,name:"Ezekiel"`, - out: &MyMessage{ - Count: Int32(4), - Name: String("Ezekiel"), - }, - }, - - // Boolean false - { - in: `count:42 inner { host: "example.com" connected: false }`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("example.com"), - Connected: Bool(false), - }, - }, - }, - // Boolean true - { - in: `count:42 inner { host: "example.com" connected: true }`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("example.com"), - Connected: Bool(true), - }, - }, - }, - // Boolean 0 - { - in: `count:42 inner { host: "example.com" connected: 0 }`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("example.com"), - Connected: Bool(false), - }, - }, - }, - // Boolean 1 - { - in: `count:42 inner { host: "example.com" connected: 1 }`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("example.com"), - Connected: Bool(true), - }, - }, - }, - // Boolean f - { - in: `count:42 inner { host: "example.com" connected: f }`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("example.com"), - Connected: Bool(false), - }, - }, - }, - // Boolean t - { - in: `count:42 inner { host: "example.com" connected: t }`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("example.com"), - Connected: Bool(true), - }, - }, - }, - // Boolean False - { - in: `count:42 inner { host: "example.com" connected: False }`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("example.com"), - Connected: Bool(false), - }, - }, - }, - // Boolean True - { - in: `count:42 inner { host: "example.com" connected: True }`, - out: &MyMessage{ - Count: Int32(42), - Inner: &InnerMessage{ - Host: String("example.com"), - Connected: Bool(true), - }, - }, - }, - - // Extension - buildExtStructTest(`count: 42 [testdata.Ext.more]:`), - buildExtStructTest(`count: 42 [testdata.Ext.more] {data:"Hello, world!"}`), - buildExtDataTest(`count: 42 [testdata.Ext.text]:"Hello, world!" [testdata.Ext.number]:1729`), - buildExtRepStringTest(`count: 42 [testdata.greeting]:"bula" [testdata.greeting]:"hola"`), - - // Big all-in-one - { - in: "count:42 # Meaning\n" + - `name:"Dave" ` + - `quote:"\"I didn't want to go.\"" ` + - `pet:"bunny" ` + - `pet:"kitty" ` + - `pet:"horsey" ` + - `inner:<` + - ` host:"footrest.syd" ` + - ` port:7001 ` + - ` connected:true ` + - `> ` + - `others:<` + - ` key:3735928559 ` + - ` value:"\x01A\a\f" ` + - `> ` + - `others:<` + - " weight:58.9 # Atomic weight of Co\n" + - ` inner:<` + - ` host:"lesha.mtv" ` + - ` port:8002 ` + - ` >` + - `>`, - out: &MyMessage{ - Count: Int32(42), - Name: String("Dave"), - Quote: String(`"I didn't want to go."`), - Pet: []string{"bunny", "kitty", "horsey"}, - Inner: &InnerMessage{ - Host: String("footrest.syd"), - Port: Int32(7001), - Connected: Bool(true), - }, - Others: []*OtherMessage{ - { - Key: Int64(3735928559), - Value: []byte{0x1, 'A', '\a', '\f'}, - }, - { - Weight: Float32(58.9), - Inner: &InnerMessage{ - Host: String("lesha.mtv"), - Port: Int32(8002), - }, - }, - }, - }, - }, -} - -func TestUnmarshalText(t *testing.T) { - for i, test := range unMarshalTextTests { - pb := new(MyMessage) - err := UnmarshalText(test.in, pb) - if test.err == "" { - // We don't expect failure. - if err != nil { - t.Errorf("Test %d: Unexpected error: %v", i, err) - } else if !reflect.DeepEqual(pb, test.out) { - t.Errorf("Test %d: Incorrect populated \nHave: %v\nWant: %v", - i, pb, test.out) - } - } else { - // We do expect failure. - if err == nil { - t.Errorf("Test %d: Didn't get expected error: %v", i, test.err) - } else if err.Error() != test.err { - t.Errorf("Test %d: Incorrect error.\nHave: %v\nWant: %v", - i, err.Error(), test.err) - } else if _, ok := err.(*RequiredNotSetError); ok && test.out != nil && !reflect.DeepEqual(pb, test.out) { - t.Errorf("Test %d: Incorrect populated \nHave: %v\nWant: %v", - i, pb, test.out) - } - } - } -} - -func TestUnmarshalTextCustomMessage(t *testing.T) { - msg := &textMessage{} - if err := UnmarshalText("custom", msg); err != nil { - t.Errorf("Unexpected error from custom unmarshal: %v", err) - } - if UnmarshalText("not custom", msg) == nil { - t.Errorf("Didn't get expected error from custom unmarshal") - } -} - -// Regression test; this caused a panic. -func TestRepeatedEnum(t *testing.T) { - pb := new(RepeatedEnum) - if err := UnmarshalText("color: RED", pb); err != nil { - t.Fatal(err) - } - exp := &RepeatedEnum{ - Color: []RepeatedEnum_Color{RepeatedEnum_RED}, - } - if !Equal(pb, exp) { - t.Errorf("Incorrect populated \nHave: %v\nWant: %v", pb, exp) - } -} - -func TestProto3TextParsing(t *testing.T) { - m := new(proto3pb.Message) - const in = `name: "Wallace" true_scotsman: true` - want := &proto3pb.Message{ - Name: "Wallace", - TrueScotsman: true, - } - if err := UnmarshalText(in, m); err != nil { - t.Fatal(err) - } - if !Equal(m, want) { - t.Errorf("\n got %v\nwant %v", m, want) - } -} - -func TestMapParsing(t *testing.T) { - m := new(MessageWithMap) - const in = `name_mapping: name_mapping:` + - `msg_mapping:,>` + // separating commas are okay - `msg_mapping>` + // no colon after "value" - `msg_mapping:>` + // omitted key - `msg_mapping:` + // omitted value - `byte_mapping:` + - `byte_mapping:<>` // omitted key and value - want := &MessageWithMap{ - NameMapping: map[int32]string{ - 1: "Beatles", - 1234: "Feist", - }, - MsgMapping: map[int64]*FloatingPoint{ - -4: {F: Float64(2.0)}, - -2: {F: Float64(4.0)}, - 0: {F: Float64(5.0)}, - 1: nil, - }, - ByteMapping: map[bool][]byte{ - false: nil, - true: []byte("so be it"), - }, - } - if err := UnmarshalText(in, m); err != nil { - t.Fatal(err) - } - if !Equal(m, want) { - t.Errorf("\n got %v\nwant %v", m, want) - } -} - -func TestOneofParsing(t *testing.T) { - const in = `name:"Shrek"` - m := new(Communique) - want := &Communique{Union: &Communique_Name{"Shrek"}} - if err := UnmarshalText(in, m); err != nil { - t.Fatal(err) - } - if !Equal(m, want) { - t.Errorf("\n got %v\nwant %v", m, want) - } - - const inOverwrite = `name:"Shrek" number:42` - m = new(Communique) - testErr := "line 1.13: field 'number' would overwrite already parsed oneof 'Union'" - if err := UnmarshalText(inOverwrite, m); err == nil { - t.Errorf("TestOneofParsing: Didn't get expected error: %v", testErr) - } else if err.Error() != testErr { - t.Errorf("TestOneofParsing: Incorrect error.\nHave: %v\nWant: %v", - err.Error(), testErr) - } - -} - -var benchInput string - -func init() { - benchInput = "count: 4\n" - for i := 0; i < 1000; i++ { - benchInput += "pet: \"fido\"\n" - } - - // Check it is valid input. - pb := new(MyMessage) - err := UnmarshalText(benchInput, pb) - if err != nil { - panic("Bad benchmark input: " + err.Error()) - } -} - -func BenchmarkUnmarshalText(b *testing.B) { - pb := new(MyMessage) - for i := 0; i < b.N; i++ { - UnmarshalText(benchInput, pb) - } - b.SetBytes(int64(len(benchInput))) -} diff --git a/vendor/github.com/golang/protobuf/proto/text_test.go b/vendor/github.com/golang/protobuf/proto/text_test.go deleted file mode 100644 index 3eabacac..00000000 --- a/vendor/github.com/golang/protobuf/proto/text_test.go +++ /dev/null @@ -1,474 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package proto_test - -import ( - "bytes" - "errors" - "io/ioutil" - "math" - "strings" - "testing" - - "github.com/golang/protobuf/proto" - - proto3pb "github.com/golang/protobuf/proto/proto3_proto" - pb "github.com/golang/protobuf/proto/testdata" -) - -// textMessage implements the methods that allow it to marshal and unmarshal -// itself as text. -type textMessage struct { -} - -func (*textMessage) MarshalText() ([]byte, error) { - return []byte("custom"), nil -} - -func (*textMessage) UnmarshalText(bytes []byte) error { - if string(bytes) != "custom" { - return errors.New("expected 'custom'") - } - return nil -} - -func (*textMessage) Reset() {} -func (*textMessage) String() string { return "" } -func (*textMessage) ProtoMessage() {} - -func newTestMessage() *pb.MyMessage { - msg := &pb.MyMessage{ - Count: proto.Int32(42), - Name: proto.String("Dave"), - Quote: proto.String(`"I didn't want to go."`), - Pet: []string{"bunny", "kitty", "horsey"}, - Inner: &pb.InnerMessage{ - Host: proto.String("footrest.syd"), - Port: proto.Int32(7001), - Connected: proto.Bool(true), - }, - Others: []*pb.OtherMessage{ - { - Key: proto.Int64(0xdeadbeef), - Value: []byte{1, 65, 7, 12}, - }, - { - Weight: proto.Float32(6.022), - Inner: &pb.InnerMessage{ - Host: proto.String("lesha.mtv"), - Port: proto.Int32(8002), - }, - }, - }, - Bikeshed: pb.MyMessage_BLUE.Enum(), - Somegroup: &pb.MyMessage_SomeGroup{ - GroupField: proto.Int32(8), - }, - // One normally wouldn't do this. - // This is an undeclared tag 13, as a varint (wire type 0) with value 4. - XXX_unrecognized: []byte{13<<3 | 0, 4}, - } - ext := &pb.Ext{ - Data: proto.String("Big gobs for big rats"), - } - if err := proto.SetExtension(msg, pb.E_Ext_More, ext); err != nil { - panic(err) - } - greetings := []string{"adg", "easy", "cow"} - if err := proto.SetExtension(msg, pb.E_Greeting, greetings); err != nil { - panic(err) - } - - // Add an unknown extension. We marshal a pb.Ext, and fake the ID. - b, err := proto.Marshal(&pb.Ext{Data: proto.String("3G skiing")}) - if err != nil { - panic(err) - } - b = append(proto.EncodeVarint(201<<3|proto.WireBytes), b...) - proto.SetRawExtension(msg, 201, b) - - // Extensions can be plain fields, too, so let's test that. - b = append(proto.EncodeVarint(202<<3|proto.WireVarint), 19) - proto.SetRawExtension(msg, 202, b) - - return msg -} - -const text = `count: 42 -name: "Dave" -quote: "\"I didn't want to go.\"" -pet: "bunny" -pet: "kitty" -pet: "horsey" -inner: < - host: "footrest.syd" - port: 7001 - connected: true -> -others: < - key: 3735928559 - value: "\001A\007\014" -> -others: < - weight: 6.022 - inner: < - host: "lesha.mtv" - port: 8002 - > -> -bikeshed: BLUE -SomeGroup { - group_field: 8 -} -/* 2 unknown bytes */ -13: 4 -[testdata.Ext.more]: < - data: "Big gobs for big rats" -> -[testdata.greeting]: "adg" -[testdata.greeting]: "easy" -[testdata.greeting]: "cow" -/* 13 unknown bytes */ -201: "\t3G skiing" -/* 3 unknown bytes */ -202: 19 -` - -func TestMarshalText(t *testing.T) { - buf := new(bytes.Buffer) - if err := proto.MarshalText(buf, newTestMessage()); err != nil { - t.Fatalf("proto.MarshalText: %v", err) - } - s := buf.String() - if s != text { - t.Errorf("Got:\n===\n%v===\nExpected:\n===\n%v===\n", s, text) - } -} - -func TestMarshalTextCustomMessage(t *testing.T) { - buf := new(bytes.Buffer) - if err := proto.MarshalText(buf, &textMessage{}); err != nil { - t.Fatalf("proto.MarshalText: %v", err) - } - s := buf.String() - if s != "custom" { - t.Errorf("Got %q, expected %q", s, "custom") - } -} -func TestMarshalTextNil(t *testing.T) { - want := "" - tests := []proto.Message{nil, (*pb.MyMessage)(nil)} - for i, test := range tests { - buf := new(bytes.Buffer) - if err := proto.MarshalText(buf, test); err != nil { - t.Fatal(err) - } - if got := buf.String(); got != want { - t.Errorf("%d: got %q want %q", i, got, want) - } - } -} - -func TestMarshalTextUnknownEnum(t *testing.T) { - // The Color enum only specifies values 0-2. - m := &pb.MyMessage{Bikeshed: pb.MyMessage_Color(3).Enum()} - got := m.String() - const want = `bikeshed:3 ` - if got != want { - t.Errorf("\n got %q\nwant %q", got, want) - } -} - -func TestTextOneof(t *testing.T) { - tests := []struct { - m proto.Message - want string - }{ - // zero message - {&pb.Communique{}, ``}, - // scalar field - {&pb.Communique{Union: &pb.Communique_Number{4}}, `number:4`}, - // message field - {&pb.Communique{Union: &pb.Communique_Msg{ - &pb.Strings{StringField: proto.String("why hello!")}, - }}, `msg:`}, - // bad oneof (should not panic) - {&pb.Communique{Union: &pb.Communique_Msg{nil}}, `msg:/* nil */`}, - } - for _, test := range tests { - got := strings.TrimSpace(test.m.String()) - if got != test.want { - t.Errorf("\n got %s\nwant %s", got, test.want) - } - } -} - -func BenchmarkMarshalTextBuffered(b *testing.B) { - buf := new(bytes.Buffer) - m := newTestMessage() - for i := 0; i < b.N; i++ { - buf.Reset() - proto.MarshalText(buf, m) - } -} - -func BenchmarkMarshalTextUnbuffered(b *testing.B) { - w := ioutil.Discard - m := newTestMessage() - for i := 0; i < b.N; i++ { - proto.MarshalText(w, m) - } -} - -func compact(src string) string { - // s/[ \n]+/ /g; s/ $//; - dst := make([]byte, len(src)) - space, comment := false, false - j := 0 - for i := 0; i < len(src); i++ { - if strings.HasPrefix(src[i:], "/*") { - comment = true - i++ - continue - } - if comment && strings.HasPrefix(src[i:], "*/") { - comment = false - i++ - continue - } - if comment { - continue - } - c := src[i] - if c == ' ' || c == '\n' { - space = true - continue - } - if j > 0 && (dst[j-1] == ':' || dst[j-1] == '<' || dst[j-1] == '{') { - space = false - } - if c == '{' { - space = false - } - if space { - dst[j] = ' ' - j++ - space = false - } - dst[j] = c - j++ - } - if space { - dst[j] = ' ' - j++ - } - return string(dst[0:j]) -} - -var compactText = compact(text) - -func TestCompactText(t *testing.T) { - s := proto.CompactTextString(newTestMessage()) - if s != compactText { - t.Errorf("Got:\n===\n%v===\nExpected:\n===\n%v\n===\n", s, compactText) - } -} - -func TestStringEscaping(t *testing.T) { - testCases := []struct { - in *pb.Strings - out string - }{ - { - // Test data from C++ test (TextFormatTest.StringEscape). - // Single divergence: we don't escape apostrophes. - &pb.Strings{StringField: proto.String("\"A string with ' characters \n and \r newlines and \t tabs and \001 slashes \\ and multiple spaces")}, - "string_field: \"\\\"A string with ' characters \\n and \\r newlines and \\t tabs and \\001 slashes \\\\ and multiple spaces\"\n", - }, - { - // Test data from the same C++ test. - &pb.Strings{StringField: proto.String("\350\260\267\346\255\214")}, - "string_field: \"\\350\\260\\267\\346\\255\\214\"\n", - }, - { - // Some UTF-8. - &pb.Strings{StringField: proto.String("\x00\x01\xff\x81")}, - `string_field: "\000\001\377\201"` + "\n", - }, - } - - for i, tc := range testCases { - var buf bytes.Buffer - if err := proto.MarshalText(&buf, tc.in); err != nil { - t.Errorf("proto.MarsalText: %v", err) - continue - } - s := buf.String() - if s != tc.out { - t.Errorf("#%d: Got:\n%s\nExpected:\n%s\n", i, s, tc.out) - continue - } - - // Check round-trip. - pb := new(pb.Strings) - if err := proto.UnmarshalText(s, pb); err != nil { - t.Errorf("#%d: UnmarshalText: %v", i, err) - continue - } - if !proto.Equal(pb, tc.in) { - t.Errorf("#%d: Round-trip failed:\nstart: %v\n end: %v", i, tc.in, pb) - } - } -} - -// A limitedWriter accepts some output before it fails. -// This is a proxy for something like a nearly-full or imminently-failing disk, -// or a network connection that is about to die. -type limitedWriter struct { - b bytes.Buffer - limit int -} - -var outOfSpace = errors.New("proto: insufficient space") - -func (w *limitedWriter) Write(p []byte) (n int, err error) { - var avail = w.limit - w.b.Len() - if avail <= 0 { - return 0, outOfSpace - } - if len(p) <= avail { - return w.b.Write(p) - } - n, _ = w.b.Write(p[:avail]) - return n, outOfSpace -} - -func TestMarshalTextFailing(t *testing.T) { - // Try lots of different sizes to exercise more error code-paths. - for lim := 0; lim < len(text); lim++ { - buf := new(limitedWriter) - buf.limit = lim - err := proto.MarshalText(buf, newTestMessage()) - // We expect a certain error, but also some partial results in the buffer. - if err != outOfSpace { - t.Errorf("Got:\n===\n%v===\nExpected:\n===\n%v===\n", err, outOfSpace) - } - s := buf.b.String() - x := text[:buf.limit] - if s != x { - t.Errorf("Got:\n===\n%v===\nExpected:\n===\n%v===\n", s, x) - } - } -} - -func TestFloats(t *testing.T) { - tests := []struct { - f float64 - want string - }{ - {0, "0"}, - {4.7, "4.7"}, - {math.Inf(1), "inf"}, - {math.Inf(-1), "-inf"}, - {math.NaN(), "nan"}, - } - for _, test := range tests { - msg := &pb.FloatingPoint{F: &test.f} - got := strings.TrimSpace(msg.String()) - want := `f:` + test.want - if got != want { - t.Errorf("f=%f: got %q, want %q", test.f, got, want) - } - } -} - -func TestRepeatedNilText(t *testing.T) { - m := &pb.MessageList{ - Message: []*pb.MessageList_Message{ - nil, - &pb.MessageList_Message{ - Name: proto.String("Horse"), - }, - nil, - }, - } - want := `Message -Message { - name: "Horse" -} -Message -` - if s := proto.MarshalTextString(m); s != want { - t.Errorf(" got: %s\nwant: %s", s, want) - } -} - -func TestProto3Text(t *testing.T) { - tests := []struct { - m proto.Message - want string - }{ - // zero message - {&proto3pb.Message{}, ``}, - // zero message except for an empty byte slice - {&proto3pb.Message{Data: []byte{}}, ``}, - // trivial case - {&proto3pb.Message{Name: "Rob", HeightInCm: 175}, `name:"Rob" height_in_cm:175`}, - // empty map - {&pb.MessageWithMap{}, ``}, - // non-empty map; map format is the same as a repeated struct, - // and they are sorted by key (numerically for numeric keys). - { - &pb.MessageWithMap{NameMapping: map[int32]string{ - -1: "Negatory", - 7: "Lucky", - 1234: "Feist", - 6345789: "Otis", - }}, - `name_mapping: ` + - `name_mapping: ` + - `name_mapping: ` + - `name_mapping:`, - }, - // map with nil value; not well-defined, but we shouldn't crash - { - &pb.MessageWithMap{MsgMapping: map[int64]*pb.FloatingPoint{7: nil}}, - `msg_mapping:`, - }, - } - for _, test := range tests { - got := strings.TrimSpace(test.m.String()) - if got != test.want { - t.Errorf("\n got %s\nwant %s", got, test.want) - } - } -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/Makefile deleted file mode 100644 index a42cc371..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -test: - cd testdata && make test diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go deleted file mode 100644 index 0d6055d6..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/doc.go +++ /dev/null @@ -1,51 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* - A plugin for the Google protocol buffer compiler to generate Go code. - Run it by building this program and putting it in your path with the name - protoc-gen-go - That word 'go' at the end becomes part of the option string set for the - protocol compiler, so once the protocol compiler (protoc) is installed - you can run - protoc --go_out=output_directory input_directory/file.proto - to generate Go bindings for the protocol defined by file.proto. - With that input, the output will be written to - output_directory/file.pb.go - - The generated code is documented in the package comment for - the library. - - See the README and documentation for protocol buffers to learn more: - https://developers.google.com/protocol-buffers/ - -*/ -package documentation diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/generator/Makefile deleted file mode 100644 index b5715c35..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -include $(GOROOT)/src/Make.inc - -TARG=github.com/golang/protobuf/compiler/generator -GOFILES=\ - generator.go\ - -DEPS=../descriptor ../plugin ../../proto - -include $(GOROOT)/src/Make.pkg diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go b/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go deleted file mode 100644 index 60d52464..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/generator.go +++ /dev/null @@ -1,2866 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* - The code generator for the plugin for the Google protocol buffer compiler. - It generates Go code from the protocol buffer description files read by the - main routine. -*/ -package generator - -import ( - "bufio" - "bytes" - "compress/gzip" - "fmt" - "go/parser" - "go/printer" - "go/token" - "log" - "os" - "path" - "strconv" - "strings" - "unicode" - "unicode/utf8" - - "github.com/golang/protobuf/proto" - - "github.com/golang/protobuf/protoc-gen-go/descriptor" - plugin "github.com/golang/protobuf/protoc-gen-go/plugin" -) - -// generatedCodeVersion indicates a version of the generated code. -// It is incremented whenever an incompatibility between the generated code and -// proto package is introduced; the generated code references -// a constant, proto.ProtoPackageIsVersionN (where N is generatedCodeVersion). -const generatedCodeVersion = 2 - -// A Plugin provides functionality to add to the output during Go code generation, -// such as to produce RPC stubs. -type Plugin interface { - // Name identifies the plugin. - Name() string - // Init is called once after data structures are built but before - // code generation begins. - Init(g *Generator) - // Generate produces the code generated by the plugin for this file, - // except for the imports, by calling the generator's methods P, In, and Out. - Generate(file *FileDescriptor) - // GenerateImports produces the import declarations for this file. - // It is called after Generate. - GenerateImports(file *FileDescriptor) -} - -var plugins []Plugin - -// RegisterPlugin installs a (second-order) plugin to be run when the Go output is generated. -// It is typically called during initialization. -func RegisterPlugin(p Plugin) { - plugins = append(plugins, p) -} - -// Each type we import as a protocol buffer (other than FileDescriptorProto) needs -// a pointer to the FileDescriptorProto that represents it. These types achieve that -// wrapping by placing each Proto inside a struct with the pointer to its File. The -// structs have the same names as their contents, with "Proto" removed. -// FileDescriptor is used to store the things that it points to. - -// The file and package name method are common to messages and enums. -type common struct { - file *descriptor.FileDescriptorProto // File this object comes from. -} - -// PackageName is name in the package clause in the generated file. -func (c *common) PackageName() string { return uniquePackageOf(c.file) } - -func (c *common) File() *descriptor.FileDescriptorProto { return c.file } - -func fileIsProto3(file *descriptor.FileDescriptorProto) bool { - return file.GetSyntax() == "proto3" -} - -func (c *common) proto3() bool { return fileIsProto3(c.file) } - -// Descriptor represents a protocol buffer message. -type Descriptor struct { - common - *descriptor.DescriptorProto - parent *Descriptor // The containing message, if any. - nested []*Descriptor // Inner messages, if any. - enums []*EnumDescriptor // Inner enums, if any. - ext []*ExtensionDescriptor // Extensions, if any. - typename []string // Cached typename vector. - index int // The index into the container, whether the file or another message. - path string // The SourceCodeInfo path as comma-separated integers. - group bool -} - -// TypeName returns the elements of the dotted type name. -// The package name is not part of this name. -func (d *Descriptor) TypeName() []string { - if d.typename != nil { - return d.typename - } - n := 0 - for parent := d; parent != nil; parent = parent.parent { - n++ - } - s := make([]string, n, n) - for parent := d; parent != nil; parent = parent.parent { - n-- - s[n] = parent.GetName() - } - d.typename = s - return s -} - -// EnumDescriptor describes an enum. If it's at top level, its parent will be nil. -// Otherwise it will be the descriptor of the message in which it is defined. -type EnumDescriptor struct { - common - *descriptor.EnumDescriptorProto - parent *Descriptor // The containing message, if any. - typename []string // Cached typename vector. - index int // The index into the container, whether the file or a message. - path string // The SourceCodeInfo path as comma-separated integers. -} - -// TypeName returns the elements of the dotted type name. -// The package name is not part of this name. -func (e *EnumDescriptor) TypeName() (s []string) { - if e.typename != nil { - return e.typename - } - name := e.GetName() - if e.parent == nil { - s = make([]string, 1) - } else { - pname := e.parent.TypeName() - s = make([]string, len(pname)+1) - copy(s, pname) - } - s[len(s)-1] = name - e.typename = s - return s -} - -// Everything but the last element of the full type name, CamelCased. -// The values of type Foo.Bar are call Foo_value1... not Foo_Bar_value1... . -func (e *EnumDescriptor) prefix() string { - if e.parent == nil { - // If the enum is not part of a message, the prefix is just the type name. - return CamelCase(*e.Name) + "_" - } - typeName := e.TypeName() - return CamelCaseSlice(typeName[0:len(typeName)-1]) + "_" -} - -// The integer value of the named constant in this enumerated type. -func (e *EnumDescriptor) integerValueAsString(name string) string { - for _, c := range e.Value { - if c.GetName() == name { - return fmt.Sprint(c.GetNumber()) - } - } - log.Fatal("cannot find value for enum constant") - return "" -} - -// ExtensionDescriptor describes an extension. If it's at top level, its parent will be nil. -// Otherwise it will be the descriptor of the message in which it is defined. -type ExtensionDescriptor struct { - common - *descriptor.FieldDescriptorProto - parent *Descriptor // The containing message, if any. -} - -// TypeName returns the elements of the dotted type name. -// The package name is not part of this name. -func (e *ExtensionDescriptor) TypeName() (s []string) { - name := e.GetName() - if e.parent == nil { - // top-level extension - s = make([]string, 1) - } else { - pname := e.parent.TypeName() - s = make([]string, len(pname)+1) - copy(s, pname) - } - s[len(s)-1] = name - return s -} - -// DescName returns the variable name used for the generated descriptor. -func (e *ExtensionDescriptor) DescName() string { - // The full type name. - typeName := e.TypeName() - // Each scope of the extension is individually CamelCased, and all are joined with "_" with an "E_" prefix. - for i, s := range typeName { - typeName[i] = CamelCase(s) - } - return "E_" + strings.Join(typeName, "_") -} - -// ImportedDescriptor describes a type that has been publicly imported from another file. -type ImportedDescriptor struct { - common - o Object -} - -func (id *ImportedDescriptor) TypeName() []string { return id.o.TypeName() } - -// FileDescriptor describes an protocol buffer descriptor file (.proto). -// It includes slices of all the messages and enums defined within it. -// Those slices are constructed by WrapTypes. -type FileDescriptor struct { - *descriptor.FileDescriptorProto - desc []*Descriptor // All the messages defined in this file. - enum []*EnumDescriptor // All the enums defined in this file. - ext []*ExtensionDescriptor // All the top-level extensions defined in this file. - imp []*ImportedDescriptor // All types defined in files publicly imported by this file. - - // Comments, stored as a map of path (comma-separated integers) to the comment. - comments map[string]*descriptor.SourceCodeInfo_Location - - // The full list of symbols that are exported, - // as a map from the exported object to its symbols. - // This is used for supporting public imports. - exported map[Object][]symbol - - index int // The index of this file in the list of files to generate code for - - proto3 bool // whether to generate proto3 code for this file -} - -// PackageName is the package name we'll use in the generated code to refer to this file. -func (d *FileDescriptor) PackageName() string { return uniquePackageOf(d.FileDescriptorProto) } - -// VarName is the variable name we'll use in the generated code to refer -// to the compressed bytes of this descriptor. It is not exported, so -// it is only valid inside the generated package. -func (d *FileDescriptor) VarName() string { return fmt.Sprintf("fileDescriptor%d", d.index) } - -// goPackageOption interprets the file's go_package option. -// If there is no go_package, it returns ("", "", false). -// If there's a simple name, it returns ("", pkg, true). -// If the option implies an import path, it returns (impPath, pkg, true). -func (d *FileDescriptor) goPackageOption() (impPath, pkg string, ok bool) { - pkg = d.GetOptions().GetGoPackage() - if pkg == "" { - return - } - ok = true - // The presence of a slash implies there's an import path. - slash := strings.LastIndex(pkg, "/") - if slash < 0 { - return - } - impPath, pkg = pkg, pkg[slash+1:] - // A semicolon-delimited suffix overrides the package name. - sc := strings.IndexByte(impPath, ';') - if sc < 0 { - return - } - impPath, pkg = impPath[:sc], impPath[sc+1:] - return -} - -// goPackageName returns the Go package name to use in the -// generated Go file. The result explicit reports whether the name -// came from an option go_package statement. If explicit is false, -// the name was derived from the protocol buffer's package statement -// or the input file name. -func (d *FileDescriptor) goPackageName() (name string, explicit bool) { - // Does the file have a "go_package" option? - if _, pkg, ok := d.goPackageOption(); ok { - return pkg, true - } - - // Does the file have a package clause? - if pkg := d.GetPackage(); pkg != "" { - return pkg, false - } - // Use the file base name. - return baseName(d.GetName()), false -} - -// goFileName returns the output name for the generated Go file. -func (d *FileDescriptor) goFileName() string { - name := *d.Name - if ext := path.Ext(name); ext == ".proto" || ext == ".protodevel" { - name = name[:len(name)-len(ext)] - } - name += ".pb.go" - - // Does the file have a "go_package" option? - // If it does, it may override the filename. - if impPath, _, ok := d.goPackageOption(); ok && impPath != "" { - // Replace the existing dirname with the declared import path. - _, name = path.Split(name) - name = path.Join(impPath, name) - return name - } - - return name -} - -func (d *FileDescriptor) addExport(obj Object, sym symbol) { - d.exported[obj] = append(d.exported[obj], sym) -} - -// symbol is an interface representing an exported Go symbol. -type symbol interface { - // GenerateAlias should generate an appropriate alias - // for the symbol from the named package. - GenerateAlias(g *Generator, pkg string) -} - -type messageSymbol struct { - sym string - hasExtensions, isMessageSet bool - hasOneof bool - getters []getterSymbol -} - -type getterSymbol struct { - name string - typ string - typeName string // canonical name in proto world; empty for proto.Message and similar - genType bool // whether typ contains a generated type (message/group/enum) -} - -func (ms *messageSymbol) GenerateAlias(g *Generator, pkg string) { - remoteSym := pkg + "." + ms.sym - - g.P("type ", ms.sym, " ", remoteSym) - g.P("func (m *", ms.sym, ") Reset() { (*", remoteSym, ")(m).Reset() }") - g.P("func (m *", ms.sym, ") String() string { return (*", remoteSym, ")(m).String() }") - g.P("func (*", ms.sym, ") ProtoMessage() {}") - if ms.hasExtensions { - g.P("func (*", ms.sym, ") ExtensionRangeArray() []", g.Pkg["proto"], ".ExtensionRange ", - "{ return (*", remoteSym, ")(nil).ExtensionRangeArray() }") - if ms.isMessageSet { - g.P("func (m *", ms.sym, ") Marshal() ([]byte, error) ", - "{ return (*", remoteSym, ")(m).Marshal() }") - g.P("func (m *", ms.sym, ") Unmarshal(buf []byte) error ", - "{ return (*", remoteSym, ")(m).Unmarshal(buf) }") - } - } - if ms.hasOneof { - // Oneofs and public imports do not mix well. - // We can make them work okay for the binary format, - // but they're going to break weirdly for text/JSON. - enc := "_" + ms.sym + "_OneofMarshaler" - dec := "_" + ms.sym + "_OneofUnmarshaler" - size := "_" + ms.sym + "_OneofSizer" - encSig := "(msg " + g.Pkg["proto"] + ".Message, b *" + g.Pkg["proto"] + ".Buffer) error" - decSig := "(msg " + g.Pkg["proto"] + ".Message, tag, wire int, b *" + g.Pkg["proto"] + ".Buffer) (bool, error)" - sizeSig := "(msg " + g.Pkg["proto"] + ".Message) int" - g.P("func (m *", ms.sym, ") XXX_OneofFuncs() (func", encSig, ", func", decSig, ", func", sizeSig, ", []interface{}) {") - g.P("return ", enc, ", ", dec, ", ", size, ", nil") - g.P("}") - - g.P("func ", enc, encSig, " {") - g.P("m := msg.(*", ms.sym, ")") - g.P("m0 := (*", remoteSym, ")(m)") - g.P("enc, _, _, _ := m0.XXX_OneofFuncs()") - g.P("return enc(m0, b)") - g.P("}") - - g.P("func ", dec, decSig, " {") - g.P("m := msg.(*", ms.sym, ")") - g.P("m0 := (*", remoteSym, ")(m)") - g.P("_, dec, _, _ := m0.XXX_OneofFuncs()") - g.P("return dec(m0, tag, wire, b)") - g.P("}") - - g.P("func ", size, sizeSig, " {") - g.P("m := msg.(*", ms.sym, ")") - g.P("m0 := (*", remoteSym, ")(m)") - g.P("_, _, size, _ := m0.XXX_OneofFuncs()") - g.P("return size(m0)") - g.P("}") - } - for _, get := range ms.getters { - - if get.typeName != "" { - g.RecordTypeUse(get.typeName) - } - typ := get.typ - val := "(*" + remoteSym + ")(m)." + get.name + "()" - if get.genType { - // typ will be "*pkg.T" (message/group) or "pkg.T" (enum) - // or "map[t]*pkg.T" (map to message/enum). - // The first two of those might have a "[]" prefix if it is repeated. - // Drop any package qualifier since we have hoisted the type into this package. - rep := strings.HasPrefix(typ, "[]") - if rep { - typ = typ[2:] - } - isMap := strings.HasPrefix(typ, "map[") - star := typ[0] == '*' - if !isMap { // map types handled lower down - typ = typ[strings.Index(typ, ".")+1:] - } - if star { - typ = "*" + typ - } - if rep { - // Go does not permit conversion between slice types where both - // element types are named. That means we need to generate a bit - // of code in this situation. - // typ is the element type. - // val is the expression to get the slice from the imported type. - - ctyp := typ // conversion type expression; "Foo" or "(*Foo)" - if star { - ctyp = "(" + typ + ")" - } - - g.P("func (m *", ms.sym, ") ", get.name, "() []", typ, " {") - g.In() - g.P("o := ", val) - g.P("if o == nil {") - g.In() - g.P("return nil") - g.Out() - g.P("}") - g.P("s := make([]", typ, ", len(o))") - g.P("for i, x := range o {") - g.In() - g.P("s[i] = ", ctyp, "(x)") - g.Out() - g.P("}") - g.P("return s") - g.Out() - g.P("}") - continue - } - if isMap { - // Split map[keyTyp]valTyp. - bra, ket := strings.Index(typ, "["), strings.Index(typ, "]") - keyTyp, valTyp := typ[bra+1:ket], typ[ket+1:] - // Drop any package qualifier. - // Only the value type may be foreign. - star := valTyp[0] == '*' - valTyp = valTyp[strings.Index(valTyp, ".")+1:] - if star { - valTyp = "*" + valTyp - } - - typ := "map[" + keyTyp + "]" + valTyp - g.P("func (m *", ms.sym, ") ", get.name, "() ", typ, " {") - g.P("o := ", val) - g.P("if o == nil { return nil }") - g.P("s := make(", typ, ", len(o))") - g.P("for k, v := range o {") - g.P("s[k] = (", valTyp, ")(v)") - g.P("}") - g.P("return s") - g.P("}") - continue - } - // Convert imported type into the forwarding type. - val = "(" + typ + ")(" + val + ")" - } - - g.P("func (m *", ms.sym, ") ", get.name, "() ", typ, " { return ", val, " }") - } - -} - -type enumSymbol struct { - name string - proto3 bool // Whether this came from a proto3 file. -} - -func (es enumSymbol) GenerateAlias(g *Generator, pkg string) { - s := es.name - g.P("type ", s, " ", pkg, ".", s) - g.P("var ", s, "_name = ", pkg, ".", s, "_name") - g.P("var ", s, "_value = ", pkg, ".", s, "_value") - g.P("func (x ", s, ") String() string { return (", pkg, ".", s, ")(x).String() }") - if !es.proto3 { - g.P("func (x ", s, ") Enum() *", s, "{ return (*", s, ")((", pkg, ".", s, ")(x).Enum()) }") - g.P("func (x *", s, ") UnmarshalJSON(data []byte) error { return (*", pkg, ".", s, ")(x).UnmarshalJSON(data) }") - } -} - -type constOrVarSymbol struct { - sym string - typ string // either "const" or "var" - cast string // if non-empty, a type cast is required (used for enums) -} - -func (cs constOrVarSymbol) GenerateAlias(g *Generator, pkg string) { - v := pkg + "." + cs.sym - if cs.cast != "" { - v = cs.cast + "(" + v + ")" - } - g.P(cs.typ, " ", cs.sym, " = ", v) -} - -// Object is an interface abstracting the abilities shared by enums, messages, extensions and imported objects. -type Object interface { - PackageName() string // The name we use in our output (a_b_c), possibly renamed for uniqueness. - TypeName() []string - File() *descriptor.FileDescriptorProto -} - -// Each package name we generate must be unique. The package we're generating -// gets its own name but every other package must have a unique name that does -// not conflict in the code we generate. These names are chosen globally (although -// they don't have to be, it simplifies things to do them globally). -func uniquePackageOf(fd *descriptor.FileDescriptorProto) string { - s, ok := uniquePackageName[fd] - if !ok { - log.Fatal("internal error: no package name defined for " + fd.GetName()) - } - return s -} - -// Generator is the type whose methods generate the output, stored in the associated response structure. -type Generator struct { - *bytes.Buffer - - Request *plugin.CodeGeneratorRequest // The input. - Response *plugin.CodeGeneratorResponse // The output. - - Param map[string]string // Command-line parameters. - PackageImportPath string // Go import path of the package we're generating code for - ImportPrefix string // String to prefix to imported package file names. - ImportMap map[string]string // Mapping from .proto file name to import path - - Pkg map[string]string // The names under which we import support packages - - packageName string // What we're calling ourselves. - allFiles []*FileDescriptor // All files in the tree - allFilesByName map[string]*FileDescriptor // All files by filename. - genFiles []*FileDescriptor // Those files we will generate output for. - file *FileDescriptor // The file we are compiling now. - usedPackages map[string]bool // Names of packages used in current file. - typeNameToObject map[string]Object // Key is a fully-qualified name in input syntax. - init []string // Lines to emit in the init function. - indent string - writeOutput bool -} - -// New creates a new generator and allocates the request and response protobufs. -func New() *Generator { - g := new(Generator) - g.Buffer = new(bytes.Buffer) - g.Request = new(plugin.CodeGeneratorRequest) - g.Response = new(plugin.CodeGeneratorResponse) - return g -} - -// Error reports a problem, including an error, and exits the program. -func (g *Generator) Error(err error, msgs ...string) { - s := strings.Join(msgs, " ") + ":" + err.Error() - log.Print("protoc-gen-go: error:", s) - os.Exit(1) -} - -// Fail reports a problem and exits the program. -func (g *Generator) Fail(msgs ...string) { - s := strings.Join(msgs, " ") - log.Print("protoc-gen-go: error:", s) - os.Exit(1) -} - -// CommandLineParameters breaks the comma-separated list of key=value pairs -// in the parameter (a member of the request protobuf) into a key/value map. -// It then sets file name mappings defined by those entries. -func (g *Generator) CommandLineParameters(parameter string) { - g.Param = make(map[string]string) - for _, p := range strings.Split(parameter, ",") { - if i := strings.Index(p, "="); i < 0 { - g.Param[p] = "" - } else { - g.Param[p[0:i]] = p[i+1:] - } - } - - g.ImportMap = make(map[string]string) - pluginList := "none" // Default list of plugin names to enable (empty means all). - for k, v := range g.Param { - switch k { - case "import_prefix": - g.ImportPrefix = v - case "import_path": - g.PackageImportPath = v - case "plugins": - pluginList = v - default: - if len(k) > 0 && k[0] == 'M' { - g.ImportMap[k[1:]] = v - } - } - } - if pluginList != "" { - // Amend the set of plugins. - enabled := make(map[string]bool) - for _, name := range strings.Split(pluginList, "+") { - enabled[name] = true - } - var nplugins []Plugin - for _, p := range plugins { - if enabled[p.Name()] { - nplugins = append(nplugins, p) - } - } - plugins = nplugins - } -} - -// DefaultPackageName returns the package name printed for the object. -// If its file is in a different package, it returns the package name we're using for this file, plus ".". -// Otherwise it returns the empty string. -func (g *Generator) DefaultPackageName(obj Object) string { - pkg := obj.PackageName() - if pkg == g.packageName { - return "" - } - return pkg + "." -} - -// For each input file, the unique package name to use, underscored. -var uniquePackageName = make(map[*descriptor.FileDescriptorProto]string) - -// Package names already registered. Key is the name from the .proto file; -// value is the name that appears in the generated code. -var pkgNamesInUse = make(map[string]bool) - -// Create and remember a guaranteed unique package name for this file descriptor. -// Pkg is the candidate name. If f is nil, it's a builtin package like "proto" and -// has no file descriptor. -func RegisterUniquePackageName(pkg string, f *FileDescriptor) string { - // Convert dots to underscores before finding a unique alias. - pkg = strings.Map(badToUnderscore, pkg) - - for i, orig := 1, pkg; pkgNamesInUse[pkg]; i++ { - // It's a duplicate; must rename. - pkg = orig + strconv.Itoa(i) - } - // Install it. - pkgNamesInUse[pkg] = true - if f != nil { - uniquePackageName[f.FileDescriptorProto] = pkg - } - return pkg -} - -var isGoKeyword = map[string]bool{ - "break": true, - "case": true, - "chan": true, - "const": true, - "continue": true, - "default": true, - "else": true, - "defer": true, - "fallthrough": true, - "for": true, - "func": true, - "go": true, - "goto": true, - "if": true, - "import": true, - "interface": true, - "map": true, - "package": true, - "range": true, - "return": true, - "select": true, - "struct": true, - "switch": true, - "type": true, - "var": true, -} - -// defaultGoPackage returns the package name to use, -// derived from the import path of the package we're building code for. -func (g *Generator) defaultGoPackage() string { - p := g.PackageImportPath - if i := strings.LastIndex(p, "/"); i >= 0 { - p = p[i+1:] - } - if p == "" { - return "" - } - - p = strings.Map(badToUnderscore, p) - // Identifier must not be keyword: insert _. - if isGoKeyword[p] { - p = "_" + p - } - // Identifier must not begin with digit: insert _. - if r, _ := utf8.DecodeRuneInString(p); unicode.IsDigit(r) { - p = "_" + p - } - return p -} - -// SetPackageNames sets the package name for this run. -// The package name must agree across all files being generated. -// It also defines unique package names for all imported files. -func (g *Generator) SetPackageNames() { - // Register the name for this package. It will be the first name - // registered so is guaranteed to be unmodified. - pkg, explicit := g.genFiles[0].goPackageName() - - // Check all files for an explicit go_package option. - for _, f := range g.genFiles { - thisPkg, thisExplicit := f.goPackageName() - if thisExplicit { - if !explicit { - // Let this file's go_package option serve for all input files. - pkg, explicit = thisPkg, true - } else if thisPkg != pkg { - g.Fail("inconsistent package names:", thisPkg, pkg) - } - } - } - - // If we don't have an explicit go_package option but we have an - // import path, use that. - if !explicit { - p := g.defaultGoPackage() - if p != "" { - pkg, explicit = p, true - } - } - - // If there was no go_package and no import path to use, - // double-check that all the inputs have the same implicit - // Go package name. - if !explicit { - for _, f := range g.genFiles { - thisPkg, _ := f.goPackageName() - if thisPkg != pkg { - g.Fail("inconsistent package names:", thisPkg, pkg) - } - } - } - - g.packageName = RegisterUniquePackageName(pkg, g.genFiles[0]) - - // Register the support package names. They might collide with the - // name of a package we import. - g.Pkg = map[string]string{ - "fmt": RegisterUniquePackageName("fmt", nil), - "math": RegisterUniquePackageName("math", nil), - "proto": RegisterUniquePackageName("proto", nil), - } - -AllFiles: - for _, f := range g.allFiles { - for _, genf := range g.genFiles { - if f == genf { - // In this package already. - uniquePackageName[f.FileDescriptorProto] = g.packageName - continue AllFiles - } - } - // The file is a dependency, so we want to ignore its go_package option - // because that is only relevant for its specific generated output. - pkg := f.GetPackage() - if pkg == "" { - pkg = baseName(*f.Name) - } - RegisterUniquePackageName(pkg, f) - } -} - -// WrapTypes walks the incoming data, wrapping DescriptorProtos, EnumDescriptorProtos -// and FileDescriptorProtos into file-referenced objects within the Generator. -// It also creates the list of files to generate and so should be called before GenerateAllFiles. -func (g *Generator) WrapTypes() { - g.allFiles = make([]*FileDescriptor, 0, len(g.Request.ProtoFile)) - g.allFilesByName = make(map[string]*FileDescriptor, len(g.allFiles)) - for _, f := range g.Request.ProtoFile { - // We must wrap the descriptors before we wrap the enums - descs := wrapDescriptors(f) - g.buildNestedDescriptors(descs) - enums := wrapEnumDescriptors(f, descs) - g.buildNestedEnums(descs, enums) - exts := wrapExtensions(f) - fd := &FileDescriptor{ - FileDescriptorProto: f, - desc: descs, - enum: enums, - ext: exts, - exported: make(map[Object][]symbol), - proto3: fileIsProto3(f), - } - extractComments(fd) - g.allFiles = append(g.allFiles, fd) - g.allFilesByName[f.GetName()] = fd - } - for _, fd := range g.allFiles { - fd.imp = wrapImported(fd.FileDescriptorProto, g) - } - - g.genFiles = make([]*FileDescriptor, 0, len(g.Request.FileToGenerate)) - for _, fileName := range g.Request.FileToGenerate { - fd := g.allFilesByName[fileName] - if fd == nil { - g.Fail("could not find file named", fileName) - } - fd.index = len(g.genFiles) - g.genFiles = append(g.genFiles, fd) - } -} - -// Scan the descriptors in this file. For each one, build the slice of nested descriptors -func (g *Generator) buildNestedDescriptors(descs []*Descriptor) { - for _, desc := range descs { - if len(desc.NestedType) != 0 { - for _, nest := range descs { - if nest.parent == desc { - desc.nested = append(desc.nested, nest) - } - } - if len(desc.nested) != len(desc.NestedType) { - g.Fail("internal error: nesting failure for", desc.GetName()) - } - } - } -} - -func (g *Generator) buildNestedEnums(descs []*Descriptor, enums []*EnumDescriptor) { - for _, desc := range descs { - if len(desc.EnumType) != 0 { - for _, enum := range enums { - if enum.parent == desc { - desc.enums = append(desc.enums, enum) - } - } - if len(desc.enums) != len(desc.EnumType) { - g.Fail("internal error: enum nesting failure for", desc.GetName()) - } - } - } -} - -// Construct the Descriptor -func newDescriptor(desc *descriptor.DescriptorProto, parent *Descriptor, file *descriptor.FileDescriptorProto, index int) *Descriptor { - d := &Descriptor{ - common: common{file}, - DescriptorProto: desc, - parent: parent, - index: index, - } - if parent == nil { - d.path = fmt.Sprintf("%d,%d", messagePath, index) - } else { - d.path = fmt.Sprintf("%s,%d,%d", parent.path, messageMessagePath, index) - } - - // The only way to distinguish a group from a message is whether - // the containing message has a TYPE_GROUP field that matches. - if parent != nil { - parts := d.TypeName() - if file.Package != nil { - parts = append([]string{*file.Package}, parts...) - } - exp := "." + strings.Join(parts, ".") - for _, field := range parent.Field { - if field.GetType() == descriptor.FieldDescriptorProto_TYPE_GROUP && field.GetTypeName() == exp { - d.group = true - break - } - } - } - - for _, field := range desc.Extension { - d.ext = append(d.ext, &ExtensionDescriptor{common{file}, field, d}) - } - - return d -} - -// Return a slice of all the Descriptors defined within this file -func wrapDescriptors(file *descriptor.FileDescriptorProto) []*Descriptor { - sl := make([]*Descriptor, 0, len(file.MessageType)+10) - for i, desc := range file.MessageType { - sl = wrapThisDescriptor(sl, desc, nil, file, i) - } - return sl -} - -// Wrap this Descriptor, recursively -func wrapThisDescriptor(sl []*Descriptor, desc *descriptor.DescriptorProto, parent *Descriptor, file *descriptor.FileDescriptorProto, index int) []*Descriptor { - sl = append(sl, newDescriptor(desc, parent, file, index)) - me := sl[len(sl)-1] - for i, nested := range desc.NestedType { - sl = wrapThisDescriptor(sl, nested, me, file, i) - } - return sl -} - -// Construct the EnumDescriptor -func newEnumDescriptor(desc *descriptor.EnumDescriptorProto, parent *Descriptor, file *descriptor.FileDescriptorProto, index int) *EnumDescriptor { - ed := &EnumDescriptor{ - common: common{file}, - EnumDescriptorProto: desc, - parent: parent, - index: index, - } - if parent == nil { - ed.path = fmt.Sprintf("%d,%d", enumPath, index) - } else { - ed.path = fmt.Sprintf("%s,%d,%d", parent.path, messageEnumPath, index) - } - return ed -} - -// Return a slice of all the EnumDescriptors defined within this file -func wrapEnumDescriptors(file *descriptor.FileDescriptorProto, descs []*Descriptor) []*EnumDescriptor { - sl := make([]*EnumDescriptor, 0, len(file.EnumType)+10) - // Top-level enums. - for i, enum := range file.EnumType { - sl = append(sl, newEnumDescriptor(enum, nil, file, i)) - } - // Enums within messages. Enums within embedded messages appear in the outer-most message. - for _, nested := range descs { - for i, enum := range nested.EnumType { - sl = append(sl, newEnumDescriptor(enum, nested, file, i)) - } - } - return sl -} - -// Return a slice of all the top-level ExtensionDescriptors defined within this file. -func wrapExtensions(file *descriptor.FileDescriptorProto) []*ExtensionDescriptor { - var sl []*ExtensionDescriptor - for _, field := range file.Extension { - sl = append(sl, &ExtensionDescriptor{common{file}, field, nil}) - } - return sl -} - -// Return a slice of all the types that are publicly imported into this file. -func wrapImported(file *descriptor.FileDescriptorProto, g *Generator) (sl []*ImportedDescriptor) { - for _, index := range file.PublicDependency { - df := g.fileByName(file.Dependency[index]) - for _, d := range df.desc { - if d.GetOptions().GetMapEntry() { - continue - } - sl = append(sl, &ImportedDescriptor{common{file}, d}) - } - for _, e := range df.enum { - sl = append(sl, &ImportedDescriptor{common{file}, e}) - } - for _, ext := range df.ext { - sl = append(sl, &ImportedDescriptor{common{file}, ext}) - } - } - return -} - -func extractComments(file *FileDescriptor) { - file.comments = make(map[string]*descriptor.SourceCodeInfo_Location) - for _, loc := range file.GetSourceCodeInfo().GetLocation() { - if loc.LeadingComments == nil { - continue - } - var p []string - for _, n := range loc.Path { - p = append(p, strconv.Itoa(int(n))) - } - file.comments[strings.Join(p, ",")] = loc - } -} - -// BuildTypeNameMap builds the map from fully qualified type names to objects. -// The key names for the map come from the input data, which puts a period at the beginning. -// It should be called after SetPackageNames and before GenerateAllFiles. -func (g *Generator) BuildTypeNameMap() { - g.typeNameToObject = make(map[string]Object) - for _, f := range g.allFiles { - // The names in this loop are defined by the proto world, not us, so the - // package name may be empty. If so, the dotted package name of X will - // be ".X"; otherwise it will be ".pkg.X". - dottedPkg := "." + f.GetPackage() - if dottedPkg != "." { - dottedPkg += "." - } - for _, enum := range f.enum { - name := dottedPkg + dottedSlice(enum.TypeName()) - g.typeNameToObject[name] = enum - } - for _, desc := range f.desc { - name := dottedPkg + dottedSlice(desc.TypeName()) - g.typeNameToObject[name] = desc - } - } -} - -// ObjectNamed, given a fully-qualified input type name as it appears in the input data, -// returns the descriptor for the message or enum with that name. -func (g *Generator) ObjectNamed(typeName string) Object { - o, ok := g.typeNameToObject[typeName] - if !ok { - g.Fail("can't find object with type", typeName) - } - - // If the file of this object isn't a direct dependency of the current file, - // or in the current file, then this object has been publicly imported into - // a dependency of the current file. - // We should return the ImportedDescriptor object for it instead. - direct := *o.File().Name == *g.file.Name - if !direct { - for _, dep := range g.file.Dependency { - if *g.fileByName(dep).Name == *o.File().Name { - direct = true - break - } - } - } - if !direct { - found := false - Loop: - for _, dep := range g.file.Dependency { - df := g.fileByName(*g.fileByName(dep).Name) - for _, td := range df.imp { - if td.o == o { - // Found it! - o = td - found = true - break Loop - } - } - } - if !found { - log.Printf("protoc-gen-go: WARNING: failed finding publicly imported dependency for %v, used in %v", typeName, *g.file.Name) - } - } - - return o -} - -// P prints the arguments to the generated output. It handles strings and int32s, plus -// handling indirections because they may be *string, etc. -func (g *Generator) P(str ...interface{}) { - if !g.writeOutput { - return - } - g.WriteString(g.indent) - for _, v := range str { - switch s := v.(type) { - case string: - g.WriteString(s) - case *string: - g.WriteString(*s) - case bool: - fmt.Fprintf(g, "%t", s) - case *bool: - fmt.Fprintf(g, "%t", *s) - case int: - fmt.Fprintf(g, "%d", s) - case *int32: - fmt.Fprintf(g, "%d", *s) - case *int64: - fmt.Fprintf(g, "%d", *s) - case float64: - fmt.Fprintf(g, "%g", s) - case *float64: - fmt.Fprintf(g, "%g", *s) - default: - g.Fail(fmt.Sprintf("unknown type in printer: %T", v)) - } - } - g.WriteByte('\n') -} - -// addInitf stores the given statement to be printed inside the file's init function. -// The statement is given as a format specifier and arguments. -func (g *Generator) addInitf(stmt string, a ...interface{}) { - g.init = append(g.init, fmt.Sprintf(stmt, a...)) -} - -// In Indents the output one tab stop. -func (g *Generator) In() { g.indent += "\t" } - -// Out unindents the output one tab stop. -func (g *Generator) Out() { - if len(g.indent) > 0 { - g.indent = g.indent[1:] - } -} - -// GenerateAllFiles generates the output for all the files we're outputting. -func (g *Generator) GenerateAllFiles() { - // Initialize the plugins - for _, p := range plugins { - p.Init(g) - } - // Generate the output. The generator runs for every file, even the files - // that we don't generate output for, so that we can collate the full list - // of exported symbols to support public imports. - genFileMap := make(map[*FileDescriptor]bool, len(g.genFiles)) - for _, file := range g.genFiles { - genFileMap[file] = true - } - for _, file := range g.allFiles { - g.Reset() - g.writeOutput = genFileMap[file] - g.generate(file) - if !g.writeOutput { - continue - } - g.Response.File = append(g.Response.File, &plugin.CodeGeneratorResponse_File{ - Name: proto.String(file.goFileName()), - Content: proto.String(g.String()), - }) - } -} - -// Run all the plugins associated with the file. -func (g *Generator) runPlugins(file *FileDescriptor) { - for _, p := range plugins { - p.Generate(file) - } -} - -// FileOf return the FileDescriptor for this FileDescriptorProto. -func (g *Generator) FileOf(fd *descriptor.FileDescriptorProto) *FileDescriptor { - for _, file := range g.allFiles { - if file.FileDescriptorProto == fd { - return file - } - } - g.Fail("could not find file in table:", fd.GetName()) - return nil -} - -// Fill the response protocol buffer with the generated output for all the files we're -// supposed to generate. -func (g *Generator) generate(file *FileDescriptor) { - g.file = g.FileOf(file.FileDescriptorProto) - g.usedPackages = make(map[string]bool) - - if g.file.index == 0 { - // For one file in the package, assert version compatibility. - g.P("// This is a compile-time assertion to ensure that this generated file") - g.P("// is compatible with the proto package it is being compiled against.") - g.P("// A compilation error at this line likely means your copy of the") - g.P("// proto package needs to be updated.") - g.P("const _ = ", g.Pkg["proto"], ".ProtoPackageIsVersion", generatedCodeVersion, " // please upgrade the proto package") - g.P() - } - for _, td := range g.file.imp { - g.generateImported(td) - } - for _, enum := range g.file.enum { - g.generateEnum(enum) - } - for _, desc := range g.file.desc { - // Don't generate virtual messages for maps. - if desc.GetOptions().GetMapEntry() { - continue - } - g.generateMessage(desc) - } - for _, ext := range g.file.ext { - g.generateExtension(ext) - } - g.generateInitFunction() - - // Run the plugins before the imports so we know which imports are necessary. - g.runPlugins(file) - - g.generateFileDescriptor(file) - - // Generate header and imports last, though they appear first in the output. - rem := g.Buffer - g.Buffer = new(bytes.Buffer) - g.generateHeader() - g.generateImports() - if !g.writeOutput { - return - } - g.Write(rem.Bytes()) - - // Reformat generated code. - fset := token.NewFileSet() - raw := g.Bytes() - ast, err := parser.ParseFile(fset, "", g, parser.ParseComments) - if err != nil { - // Print out the bad code with line numbers. - // This should never happen in practice, but it can while changing generated code, - // so consider this a debugging aid. - var src bytes.Buffer - s := bufio.NewScanner(bytes.NewReader(raw)) - for line := 1; s.Scan(); line++ { - fmt.Fprintf(&src, "%5d\t%s\n", line, s.Bytes()) - } - g.Fail("bad Go source code was generated:", err.Error(), "\n"+src.String()) - } - g.Reset() - err = (&printer.Config{Mode: printer.TabIndent | printer.UseSpaces, Tabwidth: 8}).Fprint(g, fset, ast) - if err != nil { - g.Fail("generated Go source code could not be reformatted:", err.Error()) - } -} - -// Generate the header, including package definition -func (g *Generator) generateHeader() { - g.P("// Code generated by protoc-gen-go. DO NOT EDIT.") - g.P("// source: ", g.file.Name) - g.P() - - name := g.file.PackageName() - - if g.file.index == 0 { - // Generate package docs for the first file in the package. - g.P("/*") - g.P("Package ", name, " is a generated protocol buffer package.") - g.P() - if loc, ok := g.file.comments[strconv.Itoa(packagePath)]; ok { - // not using g.PrintComments because this is a /* */ comment block. - text := strings.TrimSuffix(loc.GetLeadingComments(), "\n") - for _, line := range strings.Split(text, "\n") { - line = strings.TrimPrefix(line, " ") - // ensure we don't escape from the block comment - line = strings.Replace(line, "*/", "* /", -1) - g.P(line) - } - g.P() - } - var topMsgs []string - g.P("It is generated from these files:") - for _, f := range g.genFiles { - g.P("\t", f.Name) - for _, msg := range f.desc { - if msg.parent != nil { - continue - } - topMsgs = append(topMsgs, CamelCaseSlice(msg.TypeName())) - } - } - g.P() - g.P("It has these top-level messages:") - for _, msg := range topMsgs { - g.P("\t", msg) - } - g.P("*/") - } - - g.P("package ", name) - g.P() -} - -// PrintComments prints any comments from the source .proto file. -// The path is a comma-separated list of integers. -// It returns an indication of whether any comments were printed. -// See descriptor.proto for its format. -func (g *Generator) PrintComments(path string) bool { - if !g.writeOutput { - return false - } - if loc, ok := g.file.comments[path]; ok { - text := strings.TrimSuffix(loc.GetLeadingComments(), "\n") - for _, line := range strings.Split(text, "\n") { - g.P("// ", strings.TrimPrefix(line, " ")) - } - return true - } - return false -} - -func (g *Generator) fileByName(filename string) *FileDescriptor { - return g.allFilesByName[filename] -} - -// weak returns whether the ith import of the current file is a weak import. -func (g *Generator) weak(i int32) bool { - for _, j := range g.file.WeakDependency { - if j == i { - return true - } - } - return false -} - -// Generate the imports -func (g *Generator) generateImports() { - // We almost always need a proto import. Rather than computing when we - // do, which is tricky when there's a plugin, just import it and - // reference it later. The same argument applies to the fmt and math packages. - g.P("import " + g.Pkg["proto"] + " " + strconv.Quote(g.ImportPrefix+"github.com/golang/protobuf/proto")) - g.P("import " + g.Pkg["fmt"] + ` "fmt"`) - g.P("import " + g.Pkg["math"] + ` "math"`) - for i, s := range g.file.Dependency { - fd := g.fileByName(s) - // Do not import our own package. - if fd.PackageName() == g.packageName { - continue - } - filename := fd.goFileName() - // By default, import path is the dirname of the Go filename. - importPath := path.Dir(filename) - if substitution, ok := g.ImportMap[s]; ok { - importPath = substitution - } - importPath = g.ImportPrefix + importPath - // Skip weak imports. - if g.weak(int32(i)) { - g.P("// skipping weak import ", fd.PackageName(), " ", strconv.Quote(importPath)) - continue - } - // We need to import all the dependencies, even if we don't reference them, - // because other code and tools depend on having the full transitive closure - // of protocol buffer types in the binary. - pname := fd.PackageName() - if _, ok := g.usedPackages[pname]; !ok { - pname = "_" - } - g.P("import ", pname, " ", strconv.Quote(importPath)) - } - g.P() - // TODO: may need to worry about uniqueness across plugins - for _, p := range plugins { - p.GenerateImports(g.file) - g.P() - } - g.P("// Reference imports to suppress errors if they are not otherwise used.") - g.P("var _ = ", g.Pkg["proto"], ".Marshal") - g.P("var _ = ", g.Pkg["fmt"], ".Errorf") - g.P("var _ = ", g.Pkg["math"], ".Inf") - g.P() -} - -func (g *Generator) generateImported(id *ImportedDescriptor) { - // Don't generate public import symbols for files that we are generating - // code for, since those symbols will already be in this package. - // We can't simply avoid creating the ImportedDescriptor objects, - // because g.genFiles isn't populated at that stage. - tn := id.TypeName() - sn := tn[len(tn)-1] - df := g.FileOf(id.o.File()) - filename := *df.Name - for _, fd := range g.genFiles { - if *fd.Name == filename { - g.P("// Ignoring public import of ", sn, " from ", filename) - g.P() - return - } - } - g.P("// ", sn, " from public import ", filename) - g.usedPackages[df.PackageName()] = true - - for _, sym := range df.exported[id.o] { - sym.GenerateAlias(g, df.PackageName()) - } - - g.P() -} - -// Generate the enum definitions for this EnumDescriptor. -func (g *Generator) generateEnum(enum *EnumDescriptor) { - // The full type name - typeName := enum.TypeName() - // The full type name, CamelCased. - ccTypeName := CamelCaseSlice(typeName) - ccPrefix := enum.prefix() - - g.PrintComments(enum.path) - g.P("type ", ccTypeName, " int32") - g.file.addExport(enum, enumSymbol{ccTypeName, enum.proto3()}) - g.P("const (") - g.In() - for i, e := range enum.Value { - g.PrintComments(fmt.Sprintf("%s,%d,%d", enum.path, enumValuePath, i)) - - name := ccPrefix + *e.Name - g.P(name, " ", ccTypeName, " = ", e.Number) - g.file.addExport(enum, constOrVarSymbol{name, "const", ccTypeName}) - } - g.Out() - g.P(")") - g.P("var ", ccTypeName, "_name = map[int32]string{") - g.In() - generated := make(map[int32]bool) // avoid duplicate values - for _, e := range enum.Value { - duplicate := "" - if _, present := generated[*e.Number]; present { - duplicate = "// Duplicate value: " - } - g.P(duplicate, e.Number, ": ", strconv.Quote(*e.Name), ",") - generated[*e.Number] = true - } - g.Out() - g.P("}") - g.P("var ", ccTypeName, "_value = map[string]int32{") - g.In() - for _, e := range enum.Value { - g.P(strconv.Quote(*e.Name), ": ", e.Number, ",") - } - g.Out() - g.P("}") - - if !enum.proto3() { - g.P("func (x ", ccTypeName, ") Enum() *", ccTypeName, " {") - g.In() - g.P("p := new(", ccTypeName, ")") - g.P("*p = x") - g.P("return p") - g.Out() - g.P("}") - } - - g.P("func (x ", ccTypeName, ") String() string {") - g.In() - g.P("return ", g.Pkg["proto"], ".EnumName(", ccTypeName, "_name, int32(x))") - g.Out() - g.P("}") - - if !enum.proto3() { - g.P("func (x *", ccTypeName, ") UnmarshalJSON(data []byte) error {") - g.In() - g.P("value, err := ", g.Pkg["proto"], ".UnmarshalJSONEnum(", ccTypeName, `_value, data, "`, ccTypeName, `")`) - g.P("if err != nil {") - g.In() - g.P("return err") - g.Out() - g.P("}") - g.P("*x = ", ccTypeName, "(value)") - g.P("return nil") - g.Out() - g.P("}") - } - - var indexes []string - for m := enum.parent; m != nil; m = m.parent { - // XXX: skip groups? - indexes = append([]string{strconv.Itoa(m.index)}, indexes...) - } - indexes = append(indexes, strconv.Itoa(enum.index)) - g.P("func (", ccTypeName, ") EnumDescriptor() ([]byte, []int) { return ", g.file.VarName(), ", []int{", strings.Join(indexes, ", "), "} }") - if enum.file.GetPackage() == "google.protobuf" && enum.GetName() == "NullValue" { - g.P("func (", ccTypeName, `) XXX_WellKnownType() string { return "`, enum.GetName(), `" }`) - } - - g.P() -} - -// The tag is a string like "varint,2,opt,name=fieldname,def=7" that -// identifies details of the field for the protocol buffer marshaling and unmarshaling -// code. The fields are: -// wire encoding -// protocol tag number -// opt,req,rep for optional, required, or repeated -// packed whether the encoding is "packed" (optional; repeated primitives only) -// name= the original declared name -// enum= the name of the enum type if it is an enum-typed field. -// proto3 if this field is in a proto3 message -// def= string representation of the default value, if any. -// The default value must be in a representation that can be used at run-time -// to generate the default value. Thus bools become 0 and 1, for instance. -func (g *Generator) goTag(message *Descriptor, field *descriptor.FieldDescriptorProto, wiretype string) string { - optrepreq := "" - switch { - case isOptional(field): - optrepreq = "opt" - case isRequired(field): - optrepreq = "req" - case isRepeated(field): - optrepreq = "rep" - } - var defaultValue string - if dv := field.DefaultValue; dv != nil { // set means an explicit default - defaultValue = *dv - // Some types need tweaking. - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_BOOL: - if defaultValue == "true" { - defaultValue = "1" - } else { - defaultValue = "0" - } - case descriptor.FieldDescriptorProto_TYPE_STRING, - descriptor.FieldDescriptorProto_TYPE_BYTES: - // Nothing to do. Quoting is done for the whole tag. - case descriptor.FieldDescriptorProto_TYPE_ENUM: - // For enums we need to provide the integer constant. - obj := g.ObjectNamed(field.GetTypeName()) - if id, ok := obj.(*ImportedDescriptor); ok { - // It is an enum that was publicly imported. - // We need the underlying type. - obj = id.o - } - enum, ok := obj.(*EnumDescriptor) - if !ok { - log.Printf("obj is a %T", obj) - if id, ok := obj.(*ImportedDescriptor); ok { - log.Printf("id.o is a %T", id.o) - } - g.Fail("unknown enum type", CamelCaseSlice(obj.TypeName())) - } - defaultValue = enum.integerValueAsString(defaultValue) - } - defaultValue = ",def=" + defaultValue - } - enum := "" - if *field.Type == descriptor.FieldDescriptorProto_TYPE_ENUM { - // We avoid using obj.PackageName(), because we want to use the - // original (proto-world) package name. - obj := g.ObjectNamed(field.GetTypeName()) - if id, ok := obj.(*ImportedDescriptor); ok { - obj = id.o - } - enum = ",enum=" - if pkg := obj.File().GetPackage(); pkg != "" { - enum += pkg + "." - } - enum += CamelCaseSlice(obj.TypeName()) - } - packed := "" - if (field.Options != nil && field.Options.GetPacked()) || - // Per https://developers.google.com/protocol-buffers/docs/proto3#simple: - // "In proto3, repeated fields of scalar numeric types use packed encoding by default." - (message.proto3() && (field.Options == nil || field.Options.Packed == nil) && - isRepeated(field) && isScalar(field)) { - packed = ",packed" - } - fieldName := field.GetName() - name := fieldName - if *field.Type == descriptor.FieldDescriptorProto_TYPE_GROUP { - // We must use the type name for groups instead of - // the field name to preserve capitalization. - // type_name in FieldDescriptorProto is fully-qualified, - // but we only want the local part. - name = *field.TypeName - if i := strings.LastIndex(name, "."); i >= 0 { - name = name[i+1:] - } - } - if json := field.GetJsonName(); json != "" && json != name { - // TODO: escaping might be needed, in which case - // perhaps this should be in its own "json" tag. - name += ",json=" + json - } - name = ",name=" + name - if message.proto3() { - // We only need the extra tag for []byte fields; - // no need to add noise for the others. - if *field.Type == descriptor.FieldDescriptorProto_TYPE_BYTES { - name += ",proto3" - } - - } - oneof := "" - if field.OneofIndex != nil { - oneof = ",oneof" - } - return strconv.Quote(fmt.Sprintf("%s,%d,%s%s%s%s%s%s", - wiretype, - field.GetNumber(), - optrepreq, - packed, - name, - enum, - oneof, - defaultValue)) -} - -func needsStar(typ descriptor.FieldDescriptorProto_Type) bool { - switch typ { - case descriptor.FieldDescriptorProto_TYPE_GROUP: - return false - case descriptor.FieldDescriptorProto_TYPE_MESSAGE: - return false - case descriptor.FieldDescriptorProto_TYPE_BYTES: - return false - } - return true -} - -// TypeName is the printed name appropriate for an item. If the object is in the current file, -// TypeName drops the package name and underscores the rest. -// Otherwise the object is from another package; and the result is the underscored -// package name followed by the item name. -// The result always has an initial capital. -func (g *Generator) TypeName(obj Object) string { - return g.DefaultPackageName(obj) + CamelCaseSlice(obj.TypeName()) -} - -// TypeNameWithPackage is like TypeName, but always includes the package -// name even if the object is in our own package. -func (g *Generator) TypeNameWithPackage(obj Object) string { - return obj.PackageName() + CamelCaseSlice(obj.TypeName()) -} - -// GoType returns a string representing the type name, and the wire type -func (g *Generator) GoType(message *Descriptor, field *descriptor.FieldDescriptorProto) (typ string, wire string) { - // TODO: Options. - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_DOUBLE: - typ, wire = "float64", "fixed64" - case descriptor.FieldDescriptorProto_TYPE_FLOAT: - typ, wire = "float32", "fixed32" - case descriptor.FieldDescriptorProto_TYPE_INT64: - typ, wire = "int64", "varint" - case descriptor.FieldDescriptorProto_TYPE_UINT64: - typ, wire = "uint64", "varint" - case descriptor.FieldDescriptorProto_TYPE_INT32: - typ, wire = "int32", "varint" - case descriptor.FieldDescriptorProto_TYPE_UINT32: - typ, wire = "uint32", "varint" - case descriptor.FieldDescriptorProto_TYPE_FIXED64: - typ, wire = "uint64", "fixed64" - case descriptor.FieldDescriptorProto_TYPE_FIXED32: - typ, wire = "uint32", "fixed32" - case descriptor.FieldDescriptorProto_TYPE_BOOL: - typ, wire = "bool", "varint" - case descriptor.FieldDescriptorProto_TYPE_STRING: - typ, wire = "string", "bytes" - case descriptor.FieldDescriptorProto_TYPE_GROUP: - desc := g.ObjectNamed(field.GetTypeName()) - typ, wire = "*"+g.TypeName(desc), "group" - case descriptor.FieldDescriptorProto_TYPE_MESSAGE: - desc := g.ObjectNamed(field.GetTypeName()) - typ, wire = "*"+g.TypeName(desc), "bytes" - case descriptor.FieldDescriptorProto_TYPE_BYTES: - typ, wire = "[]byte", "bytes" - case descriptor.FieldDescriptorProto_TYPE_ENUM: - desc := g.ObjectNamed(field.GetTypeName()) - typ, wire = g.TypeName(desc), "varint" - case descriptor.FieldDescriptorProto_TYPE_SFIXED32: - typ, wire = "int32", "fixed32" - case descriptor.FieldDescriptorProto_TYPE_SFIXED64: - typ, wire = "int64", "fixed64" - case descriptor.FieldDescriptorProto_TYPE_SINT32: - typ, wire = "int32", "zigzag32" - case descriptor.FieldDescriptorProto_TYPE_SINT64: - typ, wire = "int64", "zigzag64" - default: - g.Fail("unknown type for", field.GetName()) - } - if isRepeated(field) { - typ = "[]" + typ - } else if message != nil && message.proto3() { - return - } else if field.OneofIndex != nil && message != nil { - return - } else if needsStar(*field.Type) { - typ = "*" + typ - } - return -} - -func (g *Generator) RecordTypeUse(t string) { - if obj, ok := g.typeNameToObject[t]; ok { - // Call ObjectNamed to get the true object to record the use. - obj = g.ObjectNamed(t) - g.usedPackages[obj.PackageName()] = true - } -} - -// Method names that may be generated. Fields with these names get an -// underscore appended. Any change to this set is a potential incompatible -// API change because it changes generated field names. -var methodNames = [...]string{ - "Reset", - "String", - "ProtoMessage", - "Marshal", - "Unmarshal", - "ExtensionRangeArray", - "ExtensionMap", - "Descriptor", -} - -// Names of messages in the `google.protobuf` package for which -// we will generate XXX_WellKnownType methods. -var wellKnownTypes = map[string]bool{ - "Any": true, - "Duration": true, - "Empty": true, - "Struct": true, - "Timestamp": true, - - "Value": true, - "ListValue": true, - "DoubleValue": true, - "FloatValue": true, - "Int64Value": true, - "UInt64Value": true, - "Int32Value": true, - "UInt32Value": true, - "BoolValue": true, - "StringValue": true, - "BytesValue": true, -} - -// Generate the type and default constant definitions for this Descriptor. -func (g *Generator) generateMessage(message *Descriptor) { - // The full type name - typeName := message.TypeName() - // The full type name, CamelCased. - ccTypeName := CamelCaseSlice(typeName) - - usedNames := make(map[string]bool) - for _, n := range methodNames { - usedNames[n] = true - } - fieldNames := make(map[*descriptor.FieldDescriptorProto]string) - fieldGetterNames := make(map[*descriptor.FieldDescriptorProto]string) - fieldTypes := make(map[*descriptor.FieldDescriptorProto]string) - mapFieldTypes := make(map[*descriptor.FieldDescriptorProto]string) - - oneofFieldName := make(map[int32]string) // indexed by oneof_index field of FieldDescriptorProto - oneofDisc := make(map[int32]string) // name of discriminator method - oneofTypeName := make(map[*descriptor.FieldDescriptorProto]string) // without star - oneofInsertPoints := make(map[int32]int) // oneof_index => offset of g.Buffer - - g.PrintComments(message.path) - g.P("type ", ccTypeName, " struct {") - g.In() - - // allocNames finds a conflict-free variation of the given strings, - // consistently mutating their suffixes. - // It returns the same number of strings. - allocNames := func(ns ...string) []string { - Loop: - for { - for _, n := range ns { - if usedNames[n] { - for i := range ns { - ns[i] += "_" - } - continue Loop - } - } - for _, n := range ns { - usedNames[n] = true - } - return ns - } - } - - for i, field := range message.Field { - // Allocate the getter and the field at the same time so name - // collisions create field/method consistent names. - // TODO: This allocation occurs based on the order of the fields - // in the proto file, meaning that a change in the field - // ordering can change generated Method/Field names. - base := CamelCase(*field.Name) - ns := allocNames(base, "Get"+base) - fieldName, fieldGetterName := ns[0], ns[1] - typename, wiretype := g.GoType(message, field) - jsonName := *field.Name - tag := fmt.Sprintf("protobuf:%s json:%q", g.goTag(message, field, wiretype), jsonName+",omitempty") - - fieldNames[field] = fieldName - fieldGetterNames[field] = fieldGetterName - - oneof := field.OneofIndex != nil - if oneof && oneofFieldName[*field.OneofIndex] == "" { - odp := message.OneofDecl[int(*field.OneofIndex)] - fname := allocNames(CamelCase(odp.GetName()))[0] - - // This is the first field of a oneof we haven't seen before. - // Generate the union field. - com := g.PrintComments(fmt.Sprintf("%s,%d,%d", message.path, messageOneofPath, *field.OneofIndex)) - if com { - g.P("//") - } - g.P("// Types that are valid to be assigned to ", fname, ":") - // Generate the rest of this comment later, - // when we've computed any disambiguation. - oneofInsertPoints[*field.OneofIndex] = g.Buffer.Len() - - dname := "is" + ccTypeName + "_" + fname - oneofFieldName[*field.OneofIndex] = fname - oneofDisc[*field.OneofIndex] = dname - tag := `protobuf_oneof:"` + odp.GetName() + `"` - g.P(fname, " ", dname, " `", tag, "`") - } - - if *field.Type == descriptor.FieldDescriptorProto_TYPE_MESSAGE { - desc := g.ObjectNamed(field.GetTypeName()) - if d, ok := desc.(*Descriptor); ok && d.GetOptions().GetMapEntry() { - // Figure out the Go types and tags for the key and value types. - keyField, valField := d.Field[0], d.Field[1] - keyType, keyWire := g.GoType(d, keyField) - valType, valWire := g.GoType(d, valField) - keyTag, valTag := g.goTag(d, keyField, keyWire), g.goTag(d, valField, valWire) - - // We don't use stars, except for message-typed values. - // Message and enum types are the only two possibly foreign types used in maps, - // so record their use. They are not permitted as map keys. - keyType = strings.TrimPrefix(keyType, "*") - switch *valField.Type { - case descriptor.FieldDescriptorProto_TYPE_ENUM: - valType = strings.TrimPrefix(valType, "*") - g.RecordTypeUse(valField.GetTypeName()) - case descriptor.FieldDescriptorProto_TYPE_MESSAGE: - g.RecordTypeUse(valField.GetTypeName()) - default: - valType = strings.TrimPrefix(valType, "*") - } - - typename = fmt.Sprintf("map[%s]%s", keyType, valType) - mapFieldTypes[field] = typename // record for the getter generation - - tag += fmt.Sprintf(" protobuf_key:%s protobuf_val:%s", keyTag, valTag) - } - } - - fieldTypes[field] = typename - - if oneof { - tname := ccTypeName + "_" + fieldName - // It is possible for this to collide with a message or enum - // nested in this message. Check for collisions. - for { - ok := true - for _, desc := range message.nested { - if CamelCaseSlice(desc.TypeName()) == tname { - ok = false - break - } - } - for _, enum := range message.enums { - if CamelCaseSlice(enum.TypeName()) == tname { - ok = false - break - } - } - if !ok { - tname += "_" - continue - } - break - } - - oneofTypeName[field] = tname - continue - } - - g.PrintComments(fmt.Sprintf("%s,%d,%d", message.path, messageFieldPath, i)) - g.P(fieldName, "\t", typename, "\t`", tag, "`") - g.RecordTypeUse(field.GetTypeName()) - } - if len(message.ExtensionRange) > 0 { - g.P(g.Pkg["proto"], ".XXX_InternalExtensions `json:\"-\"`") - } - if !message.proto3() { - g.P("XXX_unrecognized\t[]byte `json:\"-\"`") - } - g.Out() - g.P("}") - - // Update g.Buffer to list valid oneof types. - // We do this down here, after we've disambiguated the oneof type names. - // We go in reverse order of insertion point to avoid invalidating offsets. - for oi := int32(len(message.OneofDecl)); oi >= 0; oi-- { - ip := oneofInsertPoints[oi] - all := g.Buffer.Bytes() - rem := all[ip:] - g.Buffer = bytes.NewBuffer(all[:ip:ip]) // set cap so we don't scribble on rem - for _, field := range message.Field { - if field.OneofIndex == nil || *field.OneofIndex != oi { - continue - } - g.P("//\t*", oneofTypeName[field]) - } - g.Buffer.Write(rem) - } - - // Reset, String and ProtoMessage methods. - g.P("func (m *", ccTypeName, ") Reset() { *m = ", ccTypeName, "{} }") - g.P("func (m *", ccTypeName, ") String() string { return ", g.Pkg["proto"], ".CompactTextString(m) }") - g.P("func (*", ccTypeName, ") ProtoMessage() {}") - var indexes []string - for m := message; m != nil; m = m.parent { - indexes = append([]string{strconv.Itoa(m.index)}, indexes...) - } - g.P("func (*", ccTypeName, ") Descriptor() ([]byte, []int) { return ", g.file.VarName(), ", []int{", strings.Join(indexes, ", "), "} }") - // TODO: Revisit the decision to use a XXX_WellKnownType method - // if we change proto.MessageName to work with multiple equivalents. - if message.file.GetPackage() == "google.protobuf" && wellKnownTypes[message.GetName()] { - g.P("func (*", ccTypeName, `) XXX_WellKnownType() string { return "`, message.GetName(), `" }`) - } - - // Extension support methods - var hasExtensions, isMessageSet bool - if len(message.ExtensionRange) > 0 { - hasExtensions = true - // message_set_wire_format only makes sense when extensions are defined. - if opts := message.Options; opts != nil && opts.GetMessageSetWireFormat() { - isMessageSet = true - g.P() - g.P("func (m *", ccTypeName, ") Marshal() ([]byte, error) {") - g.In() - g.P("return ", g.Pkg["proto"], ".MarshalMessageSet(&m.XXX_InternalExtensions)") - g.Out() - g.P("}") - g.P("func (m *", ccTypeName, ") Unmarshal(buf []byte) error {") - g.In() - g.P("return ", g.Pkg["proto"], ".UnmarshalMessageSet(buf, &m.XXX_InternalExtensions)") - g.Out() - g.P("}") - g.P("func (m *", ccTypeName, ") MarshalJSON() ([]byte, error) {") - g.In() - g.P("return ", g.Pkg["proto"], ".MarshalMessageSetJSON(&m.XXX_InternalExtensions)") - g.Out() - g.P("}") - g.P("func (m *", ccTypeName, ") UnmarshalJSON(buf []byte) error {") - g.In() - g.P("return ", g.Pkg["proto"], ".UnmarshalMessageSetJSON(buf, &m.XXX_InternalExtensions)") - g.Out() - g.P("}") - g.P("// ensure ", ccTypeName, " satisfies proto.Marshaler and proto.Unmarshaler") - g.P("var _ ", g.Pkg["proto"], ".Marshaler = (*", ccTypeName, ")(nil)") - g.P("var _ ", g.Pkg["proto"], ".Unmarshaler = (*", ccTypeName, ")(nil)") - } - - g.P() - g.P("var extRange_", ccTypeName, " = []", g.Pkg["proto"], ".ExtensionRange{") - g.In() - for _, r := range message.ExtensionRange { - end := fmt.Sprint(*r.End - 1) // make range inclusive on both ends - g.P("{", r.Start, ", ", end, "},") - } - g.Out() - g.P("}") - g.P("func (*", ccTypeName, ") ExtensionRangeArray() []", g.Pkg["proto"], ".ExtensionRange {") - g.In() - g.P("return extRange_", ccTypeName) - g.Out() - g.P("}") - } - - // Default constants - defNames := make(map[*descriptor.FieldDescriptorProto]string) - for _, field := range message.Field { - def := field.GetDefaultValue() - if def == "" { - continue - } - fieldname := "Default_" + ccTypeName + "_" + CamelCase(*field.Name) - defNames[field] = fieldname - typename, _ := g.GoType(message, field) - if typename[0] == '*' { - typename = typename[1:] - } - kind := "const " - switch { - case typename == "bool": - case typename == "string": - def = strconv.Quote(def) - case typename == "[]byte": - def = "[]byte(" + strconv.Quote(unescape(def)) + ")" - kind = "var " - case def == "inf", def == "-inf", def == "nan": - // These names are known to, and defined by, the protocol language. - switch def { - case "inf": - def = "math.Inf(1)" - case "-inf": - def = "math.Inf(-1)" - case "nan": - def = "math.NaN()" - } - if *field.Type == descriptor.FieldDescriptorProto_TYPE_FLOAT { - def = "float32(" + def + ")" - } - kind = "var " - case *field.Type == descriptor.FieldDescriptorProto_TYPE_ENUM: - // Must be an enum. Need to construct the prefixed name. - obj := g.ObjectNamed(field.GetTypeName()) - var enum *EnumDescriptor - if id, ok := obj.(*ImportedDescriptor); ok { - // The enum type has been publicly imported. - enum, _ = id.o.(*EnumDescriptor) - } else { - enum, _ = obj.(*EnumDescriptor) - } - if enum == nil { - log.Printf("don't know how to generate constant for %s", fieldname) - continue - } - def = g.DefaultPackageName(obj) + enum.prefix() + def - } - g.P(kind, fieldname, " ", typename, " = ", def) - g.file.addExport(message, constOrVarSymbol{fieldname, kind, ""}) - } - g.P() - - // Oneof per-field types, discriminants and getters. - // - // Generate unexported named types for the discriminant interfaces. - // We shouldn't have to do this, but there was (~19 Aug 2015) a compiler/linker bug - // that was triggered by using anonymous interfaces here. - // TODO: Revisit this and consider reverting back to anonymous interfaces. - for oi := range message.OneofDecl { - dname := oneofDisc[int32(oi)] - g.P("type ", dname, " interface { ", dname, "() }") - } - g.P() - for _, field := range message.Field { - if field.OneofIndex == nil { - continue - } - _, wiretype := g.GoType(message, field) - tag := "protobuf:" + g.goTag(message, field, wiretype) - g.P("type ", oneofTypeName[field], " struct{ ", fieldNames[field], " ", fieldTypes[field], " `", tag, "` }") - g.RecordTypeUse(field.GetTypeName()) - } - g.P() - for _, field := range message.Field { - if field.OneofIndex == nil { - continue - } - g.P("func (*", oneofTypeName[field], ") ", oneofDisc[*field.OneofIndex], "() {}") - } - g.P() - for oi := range message.OneofDecl { - fname := oneofFieldName[int32(oi)] - g.P("func (m *", ccTypeName, ") Get", fname, "() ", oneofDisc[int32(oi)], " {") - g.P("if m != nil { return m.", fname, " }") - g.P("return nil") - g.P("}") - } - g.P() - - // Field getters - var getters []getterSymbol - for _, field := range message.Field { - oneof := field.OneofIndex != nil - - fname := fieldNames[field] - typename, _ := g.GoType(message, field) - if t, ok := mapFieldTypes[field]; ok { - typename = t - } - mname := fieldGetterNames[field] - star := "" - if needsStar(*field.Type) && typename[0] == '*' { - typename = typename[1:] - star = "*" - } - - // Only export getter symbols for basic types, - // and for messages and enums in the same package. - // Groups are not exported. - // Foreign types can't be hoisted through a public import because - // the importer may not already be importing the defining .proto. - // As an example, imagine we have an import tree like this: - // A.proto -> B.proto -> C.proto - // If A publicly imports B, we need to generate the getters from B in A's output, - // but if one such getter returns something from C then we cannot do that - // because A is not importing C already. - var getter, genType bool - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_GROUP: - getter = false - case descriptor.FieldDescriptorProto_TYPE_MESSAGE, descriptor.FieldDescriptorProto_TYPE_ENUM: - // Only export getter if its return type is in this package. - getter = g.ObjectNamed(field.GetTypeName()).PackageName() == message.PackageName() - genType = true - default: - getter = true - } - if getter { - getters = append(getters, getterSymbol{ - name: mname, - typ: typename, - typeName: field.GetTypeName(), - genType: genType, - }) - } - - g.P("func (m *", ccTypeName, ") "+mname+"() "+typename+" {") - g.In() - def, hasDef := defNames[field] - typeDefaultIsNil := false // whether this field type's default value is a literal nil unless specified - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_BYTES: - typeDefaultIsNil = !hasDef - case descriptor.FieldDescriptorProto_TYPE_GROUP, descriptor.FieldDescriptorProto_TYPE_MESSAGE: - typeDefaultIsNil = true - } - if isRepeated(field) { - typeDefaultIsNil = true - } - if typeDefaultIsNil && !oneof { - // A bytes field with no explicit default needs less generated code, - // as does a message or group field, or a repeated field. - g.P("if m != nil {") - g.In() - g.P("return m." + fname) - g.Out() - g.P("}") - g.P("return nil") - g.Out() - g.P("}") - g.P() - continue - } - if !oneof { - if message.proto3() { - g.P("if m != nil {") - } else { - g.P("if m != nil && m." + fname + " != nil {") - } - g.In() - g.P("return " + star + "m." + fname) - g.Out() - g.P("}") - } else { - uname := oneofFieldName[*field.OneofIndex] - tname := oneofTypeName[field] - g.P("if x, ok := m.Get", uname, "().(*", tname, "); ok {") - g.P("return x.", fname) - g.P("}") - } - if hasDef { - if *field.Type != descriptor.FieldDescriptorProto_TYPE_BYTES { - g.P("return " + def) - } else { - // The default is a []byte var. - // Make a copy when returning it to be safe. - g.P("return append([]byte(nil), ", def, "...)") - } - } else { - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_BOOL: - g.P("return false") - case descriptor.FieldDescriptorProto_TYPE_STRING: - g.P(`return ""`) - case descriptor.FieldDescriptorProto_TYPE_GROUP, - descriptor.FieldDescriptorProto_TYPE_MESSAGE, - descriptor.FieldDescriptorProto_TYPE_BYTES: - // This is only possible for oneof fields. - g.P("return nil") - case descriptor.FieldDescriptorProto_TYPE_ENUM: - // The default default for an enum is the first value in the enum, - // not zero. - obj := g.ObjectNamed(field.GetTypeName()) - var enum *EnumDescriptor - if id, ok := obj.(*ImportedDescriptor); ok { - // The enum type has been publicly imported. - enum, _ = id.o.(*EnumDescriptor) - } else { - enum, _ = obj.(*EnumDescriptor) - } - if enum == nil { - log.Printf("don't know how to generate getter for %s", field.GetName()) - continue - } - if len(enum.Value) == 0 { - g.P("return 0 // empty enum") - } else { - first := enum.Value[0].GetName() - g.P("return ", g.DefaultPackageName(obj)+enum.prefix()+first) - } - default: - g.P("return 0") - } - } - g.Out() - g.P("}") - g.P() - } - - if !message.group { - ms := &messageSymbol{ - sym: ccTypeName, - hasExtensions: hasExtensions, - isMessageSet: isMessageSet, - hasOneof: len(message.OneofDecl) > 0, - getters: getters, - } - g.file.addExport(message, ms) - } - - // Oneof functions - if len(message.OneofDecl) > 0 { - fieldWire := make(map[*descriptor.FieldDescriptorProto]string) - - // method - enc := "_" + ccTypeName + "_OneofMarshaler" - dec := "_" + ccTypeName + "_OneofUnmarshaler" - size := "_" + ccTypeName + "_OneofSizer" - encSig := "(msg " + g.Pkg["proto"] + ".Message, b *" + g.Pkg["proto"] + ".Buffer) error" - decSig := "(msg " + g.Pkg["proto"] + ".Message, tag, wire int, b *" + g.Pkg["proto"] + ".Buffer) (bool, error)" - sizeSig := "(msg " + g.Pkg["proto"] + ".Message) (n int)" - - g.P("// XXX_OneofFuncs is for the internal use of the proto package.") - g.P("func (*", ccTypeName, ") XXX_OneofFuncs() (func", encSig, ", func", decSig, ", func", sizeSig, ", []interface{}) {") - g.P("return ", enc, ", ", dec, ", ", size, ", []interface{}{") - for _, field := range message.Field { - if field.OneofIndex == nil { - continue - } - g.P("(*", oneofTypeName[field], ")(nil),") - } - g.P("}") - g.P("}") - g.P() - - // marshaler - g.P("func ", enc, encSig, " {") - g.P("m := msg.(*", ccTypeName, ")") - for oi, odp := range message.OneofDecl { - g.P("// ", odp.GetName()) - fname := oneofFieldName[int32(oi)] - g.P("switch x := m.", fname, ".(type) {") - for _, field := range message.Field { - if field.OneofIndex == nil || int(*field.OneofIndex) != oi { - continue - } - g.P("case *", oneofTypeName[field], ":") - var wire, pre, post string - val := "x." + fieldNames[field] // overridden for TYPE_BOOL - canFail := false // only TYPE_MESSAGE and TYPE_GROUP can fail - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_DOUBLE: - wire = "WireFixed64" - pre = "b.EncodeFixed64(" + g.Pkg["math"] + ".Float64bits(" - post = "))" - case descriptor.FieldDescriptorProto_TYPE_FLOAT: - wire = "WireFixed32" - pre = "b.EncodeFixed32(uint64(" + g.Pkg["math"] + ".Float32bits(" - post = ")))" - case descriptor.FieldDescriptorProto_TYPE_INT64, - descriptor.FieldDescriptorProto_TYPE_UINT64: - wire = "WireVarint" - pre, post = "b.EncodeVarint(uint64(", "))" - case descriptor.FieldDescriptorProto_TYPE_INT32, - descriptor.FieldDescriptorProto_TYPE_UINT32, - descriptor.FieldDescriptorProto_TYPE_ENUM: - wire = "WireVarint" - pre, post = "b.EncodeVarint(uint64(", "))" - case descriptor.FieldDescriptorProto_TYPE_FIXED64, - descriptor.FieldDescriptorProto_TYPE_SFIXED64: - wire = "WireFixed64" - pre, post = "b.EncodeFixed64(uint64(", "))" - case descriptor.FieldDescriptorProto_TYPE_FIXED32, - descriptor.FieldDescriptorProto_TYPE_SFIXED32: - wire = "WireFixed32" - pre, post = "b.EncodeFixed32(uint64(", "))" - case descriptor.FieldDescriptorProto_TYPE_BOOL: - // bool needs special handling. - g.P("t := uint64(0)") - g.P("if ", val, " { t = 1 }") - val = "t" - wire = "WireVarint" - pre, post = "b.EncodeVarint(", ")" - case descriptor.FieldDescriptorProto_TYPE_STRING: - wire = "WireBytes" - pre, post = "b.EncodeStringBytes(", ")" - case descriptor.FieldDescriptorProto_TYPE_GROUP: - wire = "WireStartGroup" - pre, post = "b.Marshal(", ")" - canFail = true - case descriptor.FieldDescriptorProto_TYPE_MESSAGE: - wire = "WireBytes" - pre, post = "b.EncodeMessage(", ")" - canFail = true - case descriptor.FieldDescriptorProto_TYPE_BYTES: - wire = "WireBytes" - pre, post = "b.EncodeRawBytes(", ")" - case descriptor.FieldDescriptorProto_TYPE_SINT32: - wire = "WireVarint" - pre, post = "b.EncodeZigzag32(uint64(", "))" - case descriptor.FieldDescriptorProto_TYPE_SINT64: - wire = "WireVarint" - pre, post = "b.EncodeZigzag64(uint64(", "))" - default: - g.Fail("unhandled oneof field type ", field.Type.String()) - } - fieldWire[field] = wire - g.P("b.EncodeVarint(", field.Number, "<<3|", g.Pkg["proto"], ".", wire, ")") - if !canFail { - g.P(pre, val, post) - } else { - g.P("if err := ", pre, val, post, "; err != nil {") - g.P("return err") - g.P("}") - } - if *field.Type == descriptor.FieldDescriptorProto_TYPE_GROUP { - g.P("b.EncodeVarint(", field.Number, "<<3|", g.Pkg["proto"], ".WireEndGroup)") - } - } - g.P("case nil:") - g.P("default: return ", g.Pkg["fmt"], `.Errorf("`, ccTypeName, ".", fname, ` has unexpected type %T", x)`) - g.P("}") - } - g.P("return nil") - g.P("}") - g.P() - - // unmarshaler - g.P("func ", dec, decSig, " {") - g.P("m := msg.(*", ccTypeName, ")") - g.P("switch tag {") - for _, field := range message.Field { - if field.OneofIndex == nil { - continue - } - odp := message.OneofDecl[int(*field.OneofIndex)] - g.P("case ", field.Number, ": // ", odp.GetName(), ".", *field.Name) - g.P("if wire != ", g.Pkg["proto"], ".", fieldWire[field], " {") - g.P("return true, ", g.Pkg["proto"], ".ErrInternalBadWireType") - g.P("}") - lhs := "x, err" // overridden for TYPE_MESSAGE and TYPE_GROUP - var dec, cast, cast2 string - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_DOUBLE: - dec, cast = "b.DecodeFixed64()", g.Pkg["math"]+".Float64frombits" - case descriptor.FieldDescriptorProto_TYPE_FLOAT: - dec, cast, cast2 = "b.DecodeFixed32()", "uint32", g.Pkg["math"]+".Float32frombits" - case descriptor.FieldDescriptorProto_TYPE_INT64: - dec, cast = "b.DecodeVarint()", "int64" - case descriptor.FieldDescriptorProto_TYPE_UINT64: - dec = "b.DecodeVarint()" - case descriptor.FieldDescriptorProto_TYPE_INT32: - dec, cast = "b.DecodeVarint()", "int32" - case descriptor.FieldDescriptorProto_TYPE_FIXED64: - dec = "b.DecodeFixed64()" - case descriptor.FieldDescriptorProto_TYPE_FIXED32: - dec, cast = "b.DecodeFixed32()", "uint32" - case descriptor.FieldDescriptorProto_TYPE_BOOL: - dec = "b.DecodeVarint()" - // handled specially below - case descriptor.FieldDescriptorProto_TYPE_STRING: - dec = "b.DecodeStringBytes()" - case descriptor.FieldDescriptorProto_TYPE_GROUP: - g.P("msg := new(", fieldTypes[field][1:], ")") // drop star - lhs = "err" - dec = "b.DecodeGroup(msg)" - // handled specially below - case descriptor.FieldDescriptorProto_TYPE_MESSAGE: - g.P("msg := new(", fieldTypes[field][1:], ")") // drop star - lhs = "err" - dec = "b.DecodeMessage(msg)" - // handled specially below - case descriptor.FieldDescriptorProto_TYPE_BYTES: - dec = "b.DecodeRawBytes(true)" - case descriptor.FieldDescriptorProto_TYPE_UINT32: - dec, cast = "b.DecodeVarint()", "uint32" - case descriptor.FieldDescriptorProto_TYPE_ENUM: - dec, cast = "b.DecodeVarint()", fieldTypes[field] - case descriptor.FieldDescriptorProto_TYPE_SFIXED32: - dec, cast = "b.DecodeFixed32()", "int32" - case descriptor.FieldDescriptorProto_TYPE_SFIXED64: - dec, cast = "b.DecodeFixed64()", "int64" - case descriptor.FieldDescriptorProto_TYPE_SINT32: - dec, cast = "b.DecodeZigzag32()", "int32" - case descriptor.FieldDescriptorProto_TYPE_SINT64: - dec, cast = "b.DecodeZigzag64()", "int64" - default: - g.Fail("unhandled oneof field type ", field.Type.String()) - } - g.P(lhs, " := ", dec) - val := "x" - if cast != "" { - val = cast + "(" + val + ")" - } - if cast2 != "" { - val = cast2 + "(" + val + ")" - } - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_BOOL: - val += " != 0" - case descriptor.FieldDescriptorProto_TYPE_GROUP, - descriptor.FieldDescriptorProto_TYPE_MESSAGE: - val = "msg" - } - g.P("m.", oneofFieldName[*field.OneofIndex], " = &", oneofTypeName[field], "{", val, "}") - g.P("return true, err") - } - g.P("default: return false, nil") - g.P("}") - g.P("}") - g.P() - - // sizer - g.P("func ", size, sizeSig, " {") - g.P("m := msg.(*", ccTypeName, ")") - for oi, odp := range message.OneofDecl { - g.P("// ", odp.GetName()) - fname := oneofFieldName[int32(oi)] - g.P("switch x := m.", fname, ".(type) {") - for _, field := range message.Field { - if field.OneofIndex == nil || int(*field.OneofIndex) != oi { - continue - } - g.P("case *", oneofTypeName[field], ":") - val := "x." + fieldNames[field] - var wire, varint, fixed string - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_DOUBLE: - wire = "WireFixed64" - fixed = "8" - case descriptor.FieldDescriptorProto_TYPE_FLOAT: - wire = "WireFixed32" - fixed = "4" - case descriptor.FieldDescriptorProto_TYPE_INT64, - descriptor.FieldDescriptorProto_TYPE_UINT64, - descriptor.FieldDescriptorProto_TYPE_INT32, - descriptor.FieldDescriptorProto_TYPE_UINT32, - descriptor.FieldDescriptorProto_TYPE_ENUM: - wire = "WireVarint" - varint = val - case descriptor.FieldDescriptorProto_TYPE_FIXED64, - descriptor.FieldDescriptorProto_TYPE_SFIXED64: - wire = "WireFixed64" - fixed = "8" - case descriptor.FieldDescriptorProto_TYPE_FIXED32, - descriptor.FieldDescriptorProto_TYPE_SFIXED32: - wire = "WireFixed32" - fixed = "4" - case descriptor.FieldDescriptorProto_TYPE_BOOL: - wire = "WireVarint" - fixed = "1" - case descriptor.FieldDescriptorProto_TYPE_STRING: - wire = "WireBytes" - fixed = "len(" + val + ")" - varint = fixed - case descriptor.FieldDescriptorProto_TYPE_GROUP: - wire = "WireStartGroup" - fixed = g.Pkg["proto"] + ".Size(" + val + ")" - case descriptor.FieldDescriptorProto_TYPE_MESSAGE: - wire = "WireBytes" - g.P("s := ", g.Pkg["proto"], ".Size(", val, ")") - fixed = "s" - varint = fixed - case descriptor.FieldDescriptorProto_TYPE_BYTES: - wire = "WireBytes" - fixed = "len(" + val + ")" - varint = fixed - case descriptor.FieldDescriptorProto_TYPE_SINT32: - wire = "WireVarint" - varint = "(uint32(" + val + ") << 1) ^ uint32((int32(" + val + ") >> 31))" - case descriptor.FieldDescriptorProto_TYPE_SINT64: - wire = "WireVarint" - varint = "uint64(" + val + " << 1) ^ uint64((int64(" + val + ") >> 63))" - default: - g.Fail("unhandled oneof field type ", field.Type.String()) - } - g.P("n += ", g.Pkg["proto"], ".SizeVarint(", field.Number, "<<3|", g.Pkg["proto"], ".", wire, ")") - if varint != "" { - g.P("n += ", g.Pkg["proto"], ".SizeVarint(uint64(", varint, "))") - } - if fixed != "" { - g.P("n += ", fixed) - } - if *field.Type == descriptor.FieldDescriptorProto_TYPE_GROUP { - g.P("n += ", g.Pkg["proto"], ".SizeVarint(", field.Number, "<<3|", g.Pkg["proto"], ".WireEndGroup)") - } - } - g.P("case nil:") - g.P("default:") - g.P("panic(", g.Pkg["fmt"], ".Sprintf(\"proto: unexpected type %T in oneof\", x))") - g.P("}") - } - g.P("return n") - g.P("}") - g.P() - } - - for _, ext := range message.ext { - g.generateExtension(ext) - } - - fullName := strings.Join(message.TypeName(), ".") - if g.file.Package != nil { - fullName = *g.file.Package + "." + fullName - } - - g.addInitf("%s.RegisterType((*%s)(nil), %q)", g.Pkg["proto"], ccTypeName, fullName) -} - -var escapeChars = [256]byte{ - 'a': '\a', 'b': '\b', 'f': '\f', 'n': '\n', 'r': '\r', 't': '\t', 'v': '\v', '\\': '\\', '"': '"', '\'': '\'', '?': '?', -} - -// unescape reverses the "C" escaping that protoc does for default values of bytes fields. -// It is best effort in that it effectively ignores malformed input. Seemingly invalid escape -// sequences are conveyed, unmodified, into the decoded result. -func unescape(s string) string { - // NB: Sadly, we can't use strconv.Unquote because protoc will escape both - // single and double quotes, but strconv.Unquote only allows one or the - // other (based on actual surrounding quotes of its input argument). - - var out []byte - for len(s) > 0 { - // regular character, or too short to be valid escape - if s[0] != '\\' || len(s) < 2 { - out = append(out, s[0]) - s = s[1:] - } else if c := escapeChars[s[1]]; c != 0 { - // escape sequence - out = append(out, c) - s = s[2:] - } else if s[1] == 'x' || s[1] == 'X' { - // hex escape, e.g. "\x80 - if len(s) < 4 { - // too short to be valid - out = append(out, s[:2]...) - s = s[2:] - continue - } - v, err := strconv.ParseUint(s[2:4], 16, 8) - if err != nil { - out = append(out, s[:4]...) - } else { - out = append(out, byte(v)) - } - s = s[4:] - } else if '0' <= s[1] && s[1] <= '7' { - // octal escape, can vary from 1 to 3 octal digits; e.g., "\0" "\40" or "\164" - // so consume up to 2 more bytes or up to end-of-string - n := len(s[1:]) - len(strings.TrimLeft(s[1:], "01234567")) - if n > 3 { - n = 3 - } - v, err := strconv.ParseUint(s[1:1+n], 8, 8) - if err != nil { - out = append(out, s[:1+n]...) - } else { - out = append(out, byte(v)) - } - s = s[1+n:] - } else { - // bad escape, just propagate the slash as-is - out = append(out, s[0]) - s = s[1:] - } - } - - return string(out) -} - -func (g *Generator) generateExtension(ext *ExtensionDescriptor) { - ccTypeName := ext.DescName() - - extObj := g.ObjectNamed(*ext.Extendee) - var extDesc *Descriptor - if id, ok := extObj.(*ImportedDescriptor); ok { - // This is extending a publicly imported message. - // We need the underlying type for goTag. - extDesc = id.o.(*Descriptor) - } else { - extDesc = extObj.(*Descriptor) - } - extendedType := "*" + g.TypeName(extObj) // always use the original - field := ext.FieldDescriptorProto - fieldType, wireType := g.GoType(ext.parent, field) - tag := g.goTag(extDesc, field, wireType) - g.RecordTypeUse(*ext.Extendee) - if n := ext.FieldDescriptorProto.TypeName; n != nil { - // foreign extension type - g.RecordTypeUse(*n) - } - - typeName := ext.TypeName() - - // Special case for proto2 message sets: If this extension is extending - // proto2_bridge.MessageSet, and its final name component is "message_set_extension", - // then drop that last component. - mset := false - if extendedType == "*proto2_bridge.MessageSet" && typeName[len(typeName)-1] == "message_set_extension" { - typeName = typeName[:len(typeName)-1] - mset = true - } - - // For text formatting, the package must be exactly what the .proto file declares, - // ignoring overrides such as the go_package option, and with no dot/underscore mapping. - extName := strings.Join(typeName, ".") - if g.file.Package != nil { - extName = *g.file.Package + "." + extName - } - - g.P("var ", ccTypeName, " = &", g.Pkg["proto"], ".ExtensionDesc{") - g.In() - g.P("ExtendedType: (", extendedType, ")(nil),") - g.P("ExtensionType: (", fieldType, ")(nil),") - g.P("Field: ", field.Number, ",") - g.P(`Name: "`, extName, `",`) - g.P("Tag: ", tag, ",") - g.P(`Filename: "`, g.file.GetName(), `",`) - - g.Out() - g.P("}") - g.P() - - if mset { - // Generate a bit more code to register with message_set.go. - g.addInitf("%s.RegisterMessageSetType((%s)(nil), %d, %q)", g.Pkg["proto"], fieldType, *field.Number, extName) - } - - g.file.addExport(ext, constOrVarSymbol{ccTypeName, "var", ""}) -} - -func (g *Generator) generateInitFunction() { - for _, enum := range g.file.enum { - g.generateEnumRegistration(enum) - } - for _, d := range g.file.desc { - for _, ext := range d.ext { - g.generateExtensionRegistration(ext) - } - } - for _, ext := range g.file.ext { - g.generateExtensionRegistration(ext) - } - if len(g.init) == 0 { - return - } - g.P("func init() {") - g.In() - for _, l := range g.init { - g.P(l) - } - g.Out() - g.P("}") - g.init = nil -} - -func (g *Generator) generateFileDescriptor(file *FileDescriptor) { - // Make a copy and trim source_code_info data. - // TODO: Trim this more when we know exactly what we need. - pb := proto.Clone(file.FileDescriptorProto).(*descriptor.FileDescriptorProto) - pb.SourceCodeInfo = nil - - b, err := proto.Marshal(pb) - if err != nil { - g.Fail(err.Error()) - } - - var buf bytes.Buffer - w, _ := gzip.NewWriterLevel(&buf, gzip.BestCompression) - w.Write(b) - w.Close() - b = buf.Bytes() - - v := file.VarName() - g.P() - g.P("func init() { ", g.Pkg["proto"], ".RegisterFile(", strconv.Quote(*file.Name), ", ", v, ") }") - g.P("var ", v, " = []byte{") - g.In() - g.P("// ", len(b), " bytes of a gzipped FileDescriptorProto") - for len(b) > 0 { - n := 16 - if n > len(b) { - n = len(b) - } - - s := "" - for _, c := range b[:n] { - s += fmt.Sprintf("0x%02x,", c) - } - g.P(s) - - b = b[n:] - } - g.Out() - g.P("}") -} - -func (g *Generator) generateEnumRegistration(enum *EnumDescriptor) { - // // We always print the full (proto-world) package name here. - pkg := enum.File().GetPackage() - if pkg != "" { - pkg += "." - } - // The full type name - typeName := enum.TypeName() - // The full type name, CamelCased. - ccTypeName := CamelCaseSlice(typeName) - g.addInitf("%s.RegisterEnum(%q, %[3]s_name, %[3]s_value)", g.Pkg["proto"], pkg+ccTypeName, ccTypeName) -} - -func (g *Generator) generateExtensionRegistration(ext *ExtensionDescriptor) { - g.addInitf("%s.RegisterExtension(%s)", g.Pkg["proto"], ext.DescName()) -} - -// And now lots of helper functions. - -// Is c an ASCII lower-case letter? -func isASCIILower(c byte) bool { - return 'a' <= c && c <= 'z' -} - -// Is c an ASCII digit? -func isASCIIDigit(c byte) bool { - return '0' <= c && c <= '9' -} - -// CamelCase returns the CamelCased name. -// If there is an interior underscore followed by a lower case letter, -// drop the underscore and convert the letter to upper case. -// There is a remote possibility of this rewrite causing a name collision, -// but it's so remote we're prepared to pretend it's nonexistent - since the -// C++ generator lowercases names, it's extremely unlikely to have two fields -// with different capitalizations. -// In short, _my_field_name_2 becomes XMyFieldName_2. -func CamelCase(s string) string { - if s == "" { - return "" - } - t := make([]byte, 0, 32) - i := 0 - if s[0] == '_' { - // Need a capital letter; drop the '_'. - t = append(t, 'X') - i++ - } - // Invariant: if the next letter is lower case, it must be converted - // to upper case. - // That is, we process a word at a time, where words are marked by _ or - // upper case letter. Digits are treated as words. - for ; i < len(s); i++ { - c := s[i] - if c == '_' && i+1 < len(s) && isASCIILower(s[i+1]) { - continue // Skip the underscore in s. - } - if isASCIIDigit(c) { - t = append(t, c) - continue - } - // Assume we have a letter now - if not, it's a bogus identifier. - // The next word is a sequence of characters that must start upper case. - if isASCIILower(c) { - c ^= ' ' // Make it a capital letter. - } - t = append(t, c) // Guaranteed not lower case. - // Accept lower case sequence that follows. - for i+1 < len(s) && isASCIILower(s[i+1]) { - i++ - t = append(t, s[i]) - } - } - return string(t) -} - -// CamelCaseSlice is like CamelCase, but the argument is a slice of strings to -// be joined with "_". -func CamelCaseSlice(elem []string) string { return CamelCase(strings.Join(elem, "_")) } - -// dottedSlice turns a sliced name into a dotted name. -func dottedSlice(elem []string) string { return strings.Join(elem, ".") } - -// Is this field optional? -func isOptional(field *descriptor.FieldDescriptorProto) bool { - return field.Label != nil && *field.Label == descriptor.FieldDescriptorProto_LABEL_OPTIONAL -} - -// Is this field required? -func isRequired(field *descriptor.FieldDescriptorProto) bool { - return field.Label != nil && *field.Label == descriptor.FieldDescriptorProto_LABEL_REQUIRED -} - -// Is this field repeated? -func isRepeated(field *descriptor.FieldDescriptorProto) bool { - return field.Label != nil && *field.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED -} - -// Is this field a scalar numeric type? -func isScalar(field *descriptor.FieldDescriptorProto) bool { - if field.Type == nil { - return false - } - switch *field.Type { - case descriptor.FieldDescriptorProto_TYPE_DOUBLE, - descriptor.FieldDescriptorProto_TYPE_FLOAT, - descriptor.FieldDescriptorProto_TYPE_INT64, - descriptor.FieldDescriptorProto_TYPE_UINT64, - descriptor.FieldDescriptorProto_TYPE_INT32, - descriptor.FieldDescriptorProto_TYPE_FIXED64, - descriptor.FieldDescriptorProto_TYPE_FIXED32, - descriptor.FieldDescriptorProto_TYPE_BOOL, - descriptor.FieldDescriptorProto_TYPE_UINT32, - descriptor.FieldDescriptorProto_TYPE_ENUM, - descriptor.FieldDescriptorProto_TYPE_SFIXED32, - descriptor.FieldDescriptorProto_TYPE_SFIXED64, - descriptor.FieldDescriptorProto_TYPE_SINT32, - descriptor.FieldDescriptorProto_TYPE_SINT64: - return true - default: - return false - } -} - -// badToUnderscore is the mapping function used to generate Go names from package names, -// which can be dotted in the input .proto file. It replaces non-identifier characters such as -// dot or dash with underscore. -func badToUnderscore(r rune) rune { - if unicode.IsLetter(r) || unicode.IsDigit(r) || r == '_' { - return r - } - return '_' -} - -// baseName returns the last path element of the name, with the last dotted suffix removed. -func baseName(name string) string { - // First, find the last element - if i := strings.LastIndex(name, "/"); i >= 0 { - name = name[i+1:] - } - // Now drop the suffix - if i := strings.LastIndex(name, "."); i >= 0 { - name = name[0:i] - } - return name -} - -// The SourceCodeInfo message describes the location of elements of a parsed -// .proto file by way of a "path", which is a sequence of integers that -// describe the route from a FileDescriptorProto to the relevant submessage. -// The path alternates between a field number of a repeated field, and an index -// into that repeated field. The constants below define the field numbers that -// are used. -// -// See descriptor.proto for more information about this. -const ( - // tag numbers in FileDescriptorProto - packagePath = 2 // package - messagePath = 4 // message_type - enumPath = 5 // enum_type - // tag numbers in DescriptorProto - messageFieldPath = 2 // field - messageMessagePath = 3 // nested_type - messageEnumPath = 4 // enum_type - messageOneofPath = 8 // oneof_decl - // tag numbers in EnumDescriptorProto - enumValuePath = 2 // value -) diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/name_test.go b/vendor/github.com/golang/protobuf/protoc-gen-go/generator/name_test.go deleted file mode 100644 index 76808f3b..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/generator/name_test.go +++ /dev/null @@ -1,114 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2013 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package generator - -import ( - "testing" - - "github.com/golang/protobuf/protoc-gen-go/descriptor" -) - -func TestCamelCase(t *testing.T) { - tests := []struct { - in, want string - }{ - {"one", "One"}, - {"one_two", "OneTwo"}, - {"_my_field_name_2", "XMyFieldName_2"}, - {"Something_Capped", "Something_Capped"}, - {"my_Name", "My_Name"}, - {"OneTwo", "OneTwo"}, - {"_", "X"}, - {"_a_", "XA_"}, - } - for _, tc := range tests { - if got := CamelCase(tc.in); got != tc.want { - t.Errorf("CamelCase(%q) = %q, want %q", tc.in, got, tc.want) - } - } -} - -func TestGoPackageOption(t *testing.T) { - tests := []struct { - in string - impPath, pkg string - ok bool - }{ - {"", "", "", false}, - {"foo", "", "foo", true}, - {"github.com/golang/bar", "github.com/golang/bar", "bar", true}, - {"github.com/golang/bar;baz", "github.com/golang/bar", "baz", true}, - } - for _, tc := range tests { - d := &FileDescriptor{ - FileDescriptorProto: &descriptor.FileDescriptorProto{ - Options: &descriptor.FileOptions{ - GoPackage: &tc.in, - }, - }, - } - impPath, pkg, ok := d.goPackageOption() - if impPath != tc.impPath || pkg != tc.pkg || ok != tc.ok { - t.Errorf("go_package = %q => (%q, %q, %t), want (%q, %q, %t)", tc.in, - impPath, pkg, ok, tc.impPath, tc.pkg, tc.ok) - } - } -} - -func TestUnescape(t *testing.T) { - tests := []struct { - in string - out string - }{ - // successful cases, including all kinds of escapes - {"", ""}, - {"foo bar baz frob nitz", "foo bar baz frob nitz"}, - {`\000\001\002\003\004\005\006\007`, string([]byte{0, 1, 2, 3, 4, 5, 6, 7})}, - {`\a\b\f\n\r\t\v\\\?\'\"`, string([]byte{'\a', '\b', '\f', '\n', '\r', '\t', '\v', '\\', '?', '\'', '"'})}, - {`\x10\x20\x30\x40\x50\x60\x70\x80`, string([]byte{16, 32, 48, 64, 80, 96, 112, 128})}, - // variable length octal escapes - {`\0\018\222\377\3\04\005\6\07`, string([]byte{0, 1, '8', 0222, 255, 3, 4, 5, 6, 7})}, - // malformed escape sequences left as is - {"foo \\g bar", "foo \\g bar"}, - {"foo \\xg0 bar", "foo \\xg0 bar"}, - {"\\", "\\"}, - {"\\x", "\\x"}, - {"\\xf", "\\xf"}, - {"\\777", "\\777"}, // overflows byte - } - for _, tc := range tests { - s := unescape(tc.in) - if s != tc.out { - t.Errorf("doUnescape(%q) = %q; should have been %q", tc.in, s, tc.out) - } - } -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go deleted file mode 100644 index 2660e47a..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/grpc/grpc.go +++ /dev/null @@ -1,463 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2015 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Package grpc outputs gRPC service descriptions in Go code. -// It runs as a plugin for the Go protocol buffer compiler plugin. -// It is linked in to protoc-gen-go. -package grpc - -import ( - "fmt" - "path" - "strconv" - "strings" - - pb "github.com/golang/protobuf/protoc-gen-go/descriptor" - "github.com/golang/protobuf/protoc-gen-go/generator" -) - -// generatedCodeVersion indicates a version of the generated code. -// It is incremented whenever an incompatibility between the generated code and -// the grpc package is introduced; the generated code references -// a constant, grpc.SupportPackageIsVersionN (where N is generatedCodeVersion). -const generatedCodeVersion = 4 - -// Paths for packages used by code generated in this file, -// relative to the import_prefix of the generator.Generator. -const ( - contextPkgPath = "golang.org/x/net/context" - grpcPkgPath = "google.golang.org/grpc" -) - -func init() { - generator.RegisterPlugin(new(grpc)) -} - -// grpc is an implementation of the Go protocol buffer compiler's -// plugin architecture. It generates bindings for gRPC support. -type grpc struct { - gen *generator.Generator -} - -// Name returns the name of this plugin, "grpc". -func (g *grpc) Name() string { - return "grpc" -} - -// The names for packages imported in the generated code. -// They may vary from the final path component of the import path -// if the name is used by other packages. -var ( - contextPkg string - grpcPkg string -) - -// Init initializes the plugin. -func (g *grpc) Init(gen *generator.Generator) { - g.gen = gen - contextPkg = generator.RegisterUniquePackageName("context", nil) - grpcPkg = generator.RegisterUniquePackageName("grpc", nil) -} - -// Given a type name defined in a .proto, return its object. -// Also record that we're using it, to guarantee the associated import. -func (g *grpc) objectNamed(name string) generator.Object { - g.gen.RecordTypeUse(name) - return g.gen.ObjectNamed(name) -} - -// Given a type name defined in a .proto, return its name as we will print it. -func (g *grpc) typeName(str string) string { - return g.gen.TypeName(g.objectNamed(str)) -} - -// P forwards to g.gen.P. -func (g *grpc) P(args ...interface{}) { g.gen.P(args...) } - -// Generate generates code for the services in the given file. -func (g *grpc) Generate(file *generator.FileDescriptor) { - if len(file.FileDescriptorProto.Service) == 0 { - return - } - - g.P("// Reference imports to suppress errors if they are not otherwise used.") - g.P("var _ ", contextPkg, ".Context") - g.P("var _ ", grpcPkg, ".ClientConn") - g.P() - - // Assert version compatibility. - g.P("// This is a compile-time assertion to ensure that this generated file") - g.P("// is compatible with the grpc package it is being compiled against.") - g.P("const _ = ", grpcPkg, ".SupportPackageIsVersion", generatedCodeVersion) - g.P() - - for i, service := range file.FileDescriptorProto.Service { - g.generateService(file, service, i) - } -} - -// GenerateImports generates the import declaration for this file. -func (g *grpc) GenerateImports(file *generator.FileDescriptor) { - if len(file.FileDescriptorProto.Service) == 0 { - return - } - g.P("import (") - g.P(contextPkg, " ", strconv.Quote(path.Join(g.gen.ImportPrefix, contextPkgPath))) - g.P(grpcPkg, " ", strconv.Quote(path.Join(g.gen.ImportPrefix, grpcPkgPath))) - g.P(")") - g.P() -} - -// reservedClientName records whether a client name is reserved on the client side. -var reservedClientName = map[string]bool{ -// TODO: do we need any in gRPC? -} - -func unexport(s string) string { return strings.ToLower(s[:1]) + s[1:] } - -// generateService generates all the code for the named service. -func (g *grpc) generateService(file *generator.FileDescriptor, service *pb.ServiceDescriptorProto, index int) { - path := fmt.Sprintf("6,%d", index) // 6 means service. - - origServName := service.GetName() - fullServName := origServName - if pkg := file.GetPackage(); pkg != "" { - fullServName = pkg + "." + fullServName - } - servName := generator.CamelCase(origServName) - - g.P() - g.P("// Client API for ", servName, " service") - g.P() - - // Client interface. - g.P("type ", servName, "Client interface {") - for i, method := range service.Method { - g.gen.PrintComments(fmt.Sprintf("%s,2,%d", path, i)) // 2 means method in a service. - g.P(g.generateClientSignature(servName, method)) - } - g.P("}") - g.P() - - // Client structure. - g.P("type ", unexport(servName), "Client struct {") - g.P("cc *", grpcPkg, ".ClientConn") - g.P("}") - g.P() - - // NewClient factory. - g.P("func New", servName, "Client (cc *", grpcPkg, ".ClientConn) ", servName, "Client {") - g.P("return &", unexport(servName), "Client{cc}") - g.P("}") - g.P() - - var methodIndex, streamIndex int - serviceDescVar := "_" + servName + "_serviceDesc" - // Client method implementations. - for _, method := range service.Method { - var descExpr string - if !method.GetServerStreaming() && !method.GetClientStreaming() { - // Unary RPC method - descExpr = fmt.Sprintf("&%s.Methods[%d]", serviceDescVar, methodIndex) - methodIndex++ - } else { - // Streaming RPC method - descExpr = fmt.Sprintf("&%s.Streams[%d]", serviceDescVar, streamIndex) - streamIndex++ - } - g.generateClientMethod(servName, fullServName, serviceDescVar, method, descExpr) - } - - g.P("// Server API for ", servName, " service") - g.P() - - // Server interface. - serverType := servName + "Server" - g.P("type ", serverType, " interface {") - for i, method := range service.Method { - g.gen.PrintComments(fmt.Sprintf("%s,2,%d", path, i)) // 2 means method in a service. - g.P(g.generateServerSignature(servName, method)) - } - g.P("}") - g.P() - - // Server registration. - g.P("func Register", servName, "Server(s *", grpcPkg, ".Server, srv ", serverType, ") {") - g.P("s.RegisterService(&", serviceDescVar, `, srv)`) - g.P("}") - g.P() - - // Server handler implementations. - var handlerNames []string - for _, method := range service.Method { - hname := g.generateServerMethod(servName, fullServName, method) - handlerNames = append(handlerNames, hname) - } - - // Service descriptor. - g.P("var ", serviceDescVar, " = ", grpcPkg, ".ServiceDesc {") - g.P("ServiceName: ", strconv.Quote(fullServName), ",") - g.P("HandlerType: (*", serverType, ")(nil),") - g.P("Methods: []", grpcPkg, ".MethodDesc{") - for i, method := range service.Method { - if method.GetServerStreaming() || method.GetClientStreaming() { - continue - } - g.P("{") - g.P("MethodName: ", strconv.Quote(method.GetName()), ",") - g.P("Handler: ", handlerNames[i], ",") - g.P("},") - } - g.P("},") - g.P("Streams: []", grpcPkg, ".StreamDesc{") - for i, method := range service.Method { - if !method.GetServerStreaming() && !method.GetClientStreaming() { - continue - } - g.P("{") - g.P("StreamName: ", strconv.Quote(method.GetName()), ",") - g.P("Handler: ", handlerNames[i], ",") - if method.GetServerStreaming() { - g.P("ServerStreams: true,") - } - if method.GetClientStreaming() { - g.P("ClientStreams: true,") - } - g.P("},") - } - g.P("},") - g.P("Metadata: \"", file.GetName(), "\",") - g.P("}") - g.P() -} - -// generateClientSignature returns the client-side signature for a method. -func (g *grpc) generateClientSignature(servName string, method *pb.MethodDescriptorProto) string { - origMethName := method.GetName() - methName := generator.CamelCase(origMethName) - if reservedClientName[methName] { - methName += "_" - } - reqArg := ", in *" + g.typeName(method.GetInputType()) - if method.GetClientStreaming() { - reqArg = "" - } - respName := "*" + g.typeName(method.GetOutputType()) - if method.GetServerStreaming() || method.GetClientStreaming() { - respName = servName + "_" + generator.CamelCase(origMethName) + "Client" - } - return fmt.Sprintf("%s(ctx %s.Context%s, opts ...%s.CallOption) (%s, error)", methName, contextPkg, reqArg, grpcPkg, respName) -} - -func (g *grpc) generateClientMethod(servName, fullServName, serviceDescVar string, method *pb.MethodDescriptorProto, descExpr string) { - sname := fmt.Sprintf("/%s/%s", fullServName, method.GetName()) - methName := generator.CamelCase(method.GetName()) - inType := g.typeName(method.GetInputType()) - outType := g.typeName(method.GetOutputType()) - - g.P("func (c *", unexport(servName), "Client) ", g.generateClientSignature(servName, method), "{") - if !method.GetServerStreaming() && !method.GetClientStreaming() { - g.P("out := new(", outType, ")") - // TODO: Pass descExpr to Invoke. - g.P("err := ", grpcPkg, `.Invoke(ctx, "`, sname, `", in, out, c.cc, opts...)`) - g.P("if err != nil { return nil, err }") - g.P("return out, nil") - g.P("}") - g.P() - return - } - streamType := unexport(servName) + methName + "Client" - g.P("stream, err := ", grpcPkg, ".NewClientStream(ctx, ", descExpr, `, c.cc, "`, sname, `", opts...)`) - g.P("if err != nil { return nil, err }") - g.P("x := &", streamType, "{stream}") - if !method.GetClientStreaming() { - g.P("if err := x.ClientStream.SendMsg(in); err != nil { return nil, err }") - g.P("if err := x.ClientStream.CloseSend(); err != nil { return nil, err }") - } - g.P("return x, nil") - g.P("}") - g.P() - - genSend := method.GetClientStreaming() - genRecv := method.GetServerStreaming() - genCloseAndRecv := !method.GetServerStreaming() - - // Stream auxiliary types and methods. - g.P("type ", servName, "_", methName, "Client interface {") - if genSend { - g.P("Send(*", inType, ") error") - } - if genRecv { - g.P("Recv() (*", outType, ", error)") - } - if genCloseAndRecv { - g.P("CloseAndRecv() (*", outType, ", error)") - } - g.P(grpcPkg, ".ClientStream") - g.P("}") - g.P() - - g.P("type ", streamType, " struct {") - g.P(grpcPkg, ".ClientStream") - g.P("}") - g.P() - - if genSend { - g.P("func (x *", streamType, ") Send(m *", inType, ") error {") - g.P("return x.ClientStream.SendMsg(m)") - g.P("}") - g.P() - } - if genRecv { - g.P("func (x *", streamType, ") Recv() (*", outType, ", error) {") - g.P("m := new(", outType, ")") - g.P("if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }") - g.P("return m, nil") - g.P("}") - g.P() - } - if genCloseAndRecv { - g.P("func (x *", streamType, ") CloseAndRecv() (*", outType, ", error) {") - g.P("if err := x.ClientStream.CloseSend(); err != nil { return nil, err }") - g.P("m := new(", outType, ")") - g.P("if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }") - g.P("return m, nil") - g.P("}") - g.P() - } -} - -// generateServerSignature returns the server-side signature for a method. -func (g *grpc) generateServerSignature(servName string, method *pb.MethodDescriptorProto) string { - origMethName := method.GetName() - methName := generator.CamelCase(origMethName) - if reservedClientName[methName] { - methName += "_" - } - - var reqArgs []string - ret := "error" - if !method.GetServerStreaming() && !method.GetClientStreaming() { - reqArgs = append(reqArgs, contextPkg+".Context") - ret = "(*" + g.typeName(method.GetOutputType()) + ", error)" - } - if !method.GetClientStreaming() { - reqArgs = append(reqArgs, "*"+g.typeName(method.GetInputType())) - } - if method.GetServerStreaming() || method.GetClientStreaming() { - reqArgs = append(reqArgs, servName+"_"+generator.CamelCase(origMethName)+"Server") - } - - return methName + "(" + strings.Join(reqArgs, ", ") + ") " + ret -} - -func (g *grpc) generateServerMethod(servName, fullServName string, method *pb.MethodDescriptorProto) string { - methName := generator.CamelCase(method.GetName()) - hname := fmt.Sprintf("_%s_%s_Handler", servName, methName) - inType := g.typeName(method.GetInputType()) - outType := g.typeName(method.GetOutputType()) - - if !method.GetServerStreaming() && !method.GetClientStreaming() { - g.P("func ", hname, "(srv interface{}, ctx ", contextPkg, ".Context, dec func(interface{}) error, interceptor ", grpcPkg, ".UnaryServerInterceptor) (interface{}, error) {") - g.P("in := new(", inType, ")") - g.P("if err := dec(in); err != nil { return nil, err }") - g.P("if interceptor == nil { return srv.(", servName, "Server).", methName, "(ctx, in) }") - g.P("info := &", grpcPkg, ".UnaryServerInfo{") - g.P("Server: srv,") - g.P("FullMethod: ", strconv.Quote(fmt.Sprintf("/%s/%s", fullServName, methName)), ",") - g.P("}") - g.P("handler := func(ctx ", contextPkg, ".Context, req interface{}) (interface{}, error) {") - g.P("return srv.(", servName, "Server).", methName, "(ctx, req.(*", inType, "))") - g.P("}") - g.P("return interceptor(ctx, in, info, handler)") - g.P("}") - g.P() - return hname - } - streamType := unexport(servName) + methName + "Server" - g.P("func ", hname, "(srv interface{}, stream ", grpcPkg, ".ServerStream) error {") - if !method.GetClientStreaming() { - g.P("m := new(", inType, ")") - g.P("if err := stream.RecvMsg(m); err != nil { return err }") - g.P("return srv.(", servName, "Server).", methName, "(m, &", streamType, "{stream})") - } else { - g.P("return srv.(", servName, "Server).", methName, "(&", streamType, "{stream})") - } - g.P("}") - g.P() - - genSend := method.GetServerStreaming() - genSendAndClose := !method.GetServerStreaming() - genRecv := method.GetClientStreaming() - - // Stream auxiliary types and methods. - g.P("type ", servName, "_", methName, "Server interface {") - if genSend { - g.P("Send(*", outType, ") error") - } - if genSendAndClose { - g.P("SendAndClose(*", outType, ") error") - } - if genRecv { - g.P("Recv() (*", inType, ", error)") - } - g.P(grpcPkg, ".ServerStream") - g.P("}") - g.P() - - g.P("type ", streamType, " struct {") - g.P(grpcPkg, ".ServerStream") - g.P("}") - g.P() - - if genSend { - g.P("func (x *", streamType, ") Send(m *", outType, ") error {") - g.P("return x.ServerStream.SendMsg(m)") - g.P("}") - g.P() - } - if genSendAndClose { - g.P("func (x *", streamType, ") SendAndClose(m *", outType, ") error {") - g.P("return x.ServerStream.SendMsg(m)") - g.P("}") - g.P() - } - if genRecv { - g.P("func (x *", streamType, ") Recv() (*", inType, ", error) {") - g.P("m := new(", inType, ")") - g.P("if err := x.ServerStream.RecvMsg(m); err != nil { return nil, err }") - g.P("return m, nil") - g.P("}") - g.P() - } - - return hname -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go b/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go deleted file mode 100644 index 532a5500..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/link_grpc.go +++ /dev/null @@ -1,34 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2015 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package main - -import _ "github.com/golang/protobuf/protoc-gen-go/grpc" diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/main.go b/vendor/github.com/golang/protobuf/protoc-gen-go/main.go deleted file mode 100644 index 8e2486de..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/main.go +++ /dev/null @@ -1,98 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// protoc-gen-go is a plugin for the Google protocol buffer compiler to generate -// Go code. Run it by building this program and putting it in your path with -// the name -// protoc-gen-go -// That word 'go' at the end becomes part of the option string set for the -// protocol compiler, so once the protocol compiler (protoc) is installed -// you can run -// protoc --go_out=output_directory input_directory/file.proto -// to generate Go bindings for the protocol defined by file.proto. -// With that input, the output will be written to -// output_directory/file.pb.go -// -// The generated code is documented in the package comment for -// the library. -// -// See the README and documentation for protocol buffers to learn more: -// https://developers.google.com/protocol-buffers/ -package main - -import ( - "io/ioutil" - "os" - - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/protoc-gen-go/generator" -) - -func main() { - // Begin by allocating a generator. The request and response structures are stored there - // so we can do error handling easily - the response structure contains the field to - // report failure. - g := generator.New() - - data, err := ioutil.ReadAll(os.Stdin) - if err != nil { - g.Error(err, "reading input") - } - - if err := proto.Unmarshal(data, g.Request); err != nil { - g.Error(err, "parsing input proto") - } - - if len(g.Request.FileToGenerate) == 0 { - g.Fail("no files to generate") - } - - g.CommandLineParameters(g.Request.GetParameter()) - - // Create a wrapped version of the Descriptors and EnumDescriptors that - // point to the file that defines them. - g.WrapTypes() - - g.SetPackageNames() - g.BuildTypeNameMap() - - g.GenerateAllFiles() - - // Send back the results. - data, err = proto.Marshal(g.Response) - if err != nil { - g.Error(err, "failed to marshal output proto") - } - _, err = os.Stdout.Write(data) - if err != nil { - g.Error(err, "failed to write output proto") - } -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile deleted file mode 100644 index bc0463d5..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Not stored here, but plugin.proto is in https://github.com/google/protobuf/ -# at src/google/protobuf/compiler/plugin.proto -# Also we need to fix an import. -regenerate: - @echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION - cp $(HOME)/src/protobuf/include/google/protobuf/compiler/plugin.proto . - protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:../../../../.. \ - -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/compiler/plugin.proto - -restore: - cp plugin.pb.golden plugin.pb.go - -preserve: - cp plugin.pb.go plugin.pb.golden diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go deleted file mode 100644 index c608a248..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.go +++ /dev/null @@ -1,293 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/compiler/plugin.proto - -/* -Package plugin_go is a generated protocol buffer package. - -It is generated from these files: - google/protobuf/compiler/plugin.proto - -It has these top-level messages: - Version - CodeGeneratorRequest - CodeGeneratorResponse -*/ -package plugin_go - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The version number of protocol compiler. -type Version struct { - Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"` - Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"` - Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"` - // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - // be empty for mainline stable releases. - Suffix *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Version) Reset() { *m = Version{} } -func (m *Version) String() string { return proto.CompactTextString(m) } -func (*Version) ProtoMessage() {} -func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Version) GetMajor() int32 { - if m != nil && m.Major != nil { - return *m.Major - } - return 0 -} - -func (m *Version) GetMinor() int32 { - if m != nil && m.Minor != nil { - return *m.Minor - } - return 0 -} - -func (m *Version) GetPatch() int32 { - if m != nil && m.Patch != nil { - return *m.Patch - } - return 0 -} - -func (m *Version) GetSuffix() string { - if m != nil && m.Suffix != nil { - return *m.Suffix - } - return "" -} - -// An encoded CodeGeneratorRequest is written to the plugin's stdin. -type CodeGeneratorRequest struct { - // The .proto files that were explicitly listed on the command-line. The - // code generator should generate code only for these files. Each file's - // descriptor will be included in proto_file, below. - FileToGenerate []string `protobuf:"bytes,1,rep,name=file_to_generate,json=fileToGenerate" json:"file_to_generate,omitempty"` - // The generator parameter passed on the command-line. - Parameter *string `protobuf:"bytes,2,opt,name=parameter" json:"parameter,omitempty"` - // FileDescriptorProtos for all files in files_to_generate and everything - // they import. The files will appear in topological order, so each file - // appears before any file that imports it. - // - // protoc guarantees that all proto_files will be written after - // the fields above, even though this is not technically guaranteed by the - // protobuf wire format. This theoretically could allow a plugin to stream - // in the FileDescriptorProtos and handle them one by one rather than read - // the entire set into memory at once. However, as of this writing, this - // is not similarly optimized on protoc's end -- it will store all fields in - // memory at once before sending them to the plugin. - // - // Type names of fields and extensions in the FileDescriptorProto are always - // fully qualified. - ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"` - // The version number of protocol compiler. - CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CodeGeneratorRequest) Reset() { *m = CodeGeneratorRequest{} } -func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) } -func (*CodeGeneratorRequest) ProtoMessage() {} -func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *CodeGeneratorRequest) GetFileToGenerate() []string { - if m != nil { - return m.FileToGenerate - } - return nil -} - -func (m *CodeGeneratorRequest) GetParameter() string { - if m != nil && m.Parameter != nil { - return *m.Parameter - } - return "" -} - -func (m *CodeGeneratorRequest) GetProtoFile() []*google_protobuf.FileDescriptorProto { - if m != nil { - return m.ProtoFile - } - return nil -} - -func (m *CodeGeneratorRequest) GetCompilerVersion() *Version { - if m != nil { - return m.CompilerVersion - } - return nil -} - -// The plugin writes an encoded CodeGeneratorResponse to stdout. -type CodeGeneratorResponse struct { - // Error message. If non-empty, code generation failed. The plugin process - // should exit with status code zero even if it reports an error in this way. - // - // This should be used to indicate errors in .proto files which prevent the - // code generator from generating correct code. Errors which indicate a - // problem in protoc itself -- such as the input CodeGeneratorRequest being - // unparseable -- should be reported by writing a message to stderr and - // exiting with a non-zero status code. - Error *string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` - File []*CodeGeneratorResponse_File `protobuf:"bytes,15,rep,name=file" json:"file,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CodeGeneratorResponse) Reset() { *m = CodeGeneratorResponse{} } -func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) } -func (*CodeGeneratorResponse) ProtoMessage() {} -func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *CodeGeneratorResponse) GetError() string { - if m != nil && m.Error != nil { - return *m.Error - } - return "" -} - -func (m *CodeGeneratorResponse) GetFile() []*CodeGeneratorResponse_File { - if m != nil { - return m.File - } - return nil -} - -// Represents a single generated file. -type CodeGeneratorResponse_File struct { - // The file name, relative to the output directory. The name must not - // contain "." or ".." components and must be relative, not be absolute (so, - // the file cannot lie outside the output directory). "/" must be used as - // the path separator, not "\". - // - // If the name is omitted, the content will be appended to the previous - // file. This allows the generator to break large files into small chunks, - // and allows the generated text to be streamed back to protoc so that large - // files need not reside completely in memory at one time. Note that as of - // this writing protoc does not optimize for this -- it will read the entire - // CodeGeneratorResponse before writing files to disk. - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // If non-empty, indicates that the named file should already exist, and the - // content here is to be inserted into that file at a defined insertion - // point. This feature allows a code generator to extend the output - // produced by another code generator. The original generator may provide - // insertion points by placing special annotations in the file that look - // like: - // @@protoc_insertion_point(NAME) - // The annotation can have arbitrary text before and after it on the line, - // which allows it to be placed in a comment. NAME should be replaced with - // an identifier naming the point -- this is what other generators will use - // as the insertion_point. Code inserted at this point will be placed - // immediately above the line containing the insertion point (thus multiple - // insertions to the same point will come out in the order they were added). - // The double-@ is intended to make it unlikely that the generated code - // could contain things that look like insertion points by accident. - // - // For example, the C++ code generator places the following line in the - // .pb.h files that it generates: - // // @@protoc_insertion_point(namespace_scope) - // This line appears within the scope of the file's package namespace, but - // outside of any particular class. Another plugin can then specify the - // insertion_point "namespace_scope" to generate additional classes or - // other declarations that should be placed in this scope. - // - // Note that if the line containing the insertion point begins with - // whitespace, the same whitespace will be added to every line of the - // inserted text. This is useful for languages like Python, where - // indentation matters. In these languages, the insertion point comment - // should be indented the same amount as any inserted code will need to be - // in order to work correctly in that context. - // - // The code generator that generates the initial file and the one which - // inserts into it must both run as part of a single invocation of protoc. - // Code generators are executed in the order in which they appear on the - // command line. - // - // If |insertion_point| is present, |name| must also be present. - InsertionPoint *string `protobuf:"bytes,2,opt,name=insertion_point,json=insertionPoint" json:"insertion_point,omitempty"` - // The file contents. - Content *string `protobuf:"bytes,15,opt,name=content" json:"content,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CodeGeneratorResponse_File) Reset() { *m = CodeGeneratorResponse_File{} } -func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) } -func (*CodeGeneratorResponse_File) ProtoMessage() {} -func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *CodeGeneratorResponse_File) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *CodeGeneratorResponse_File) GetInsertionPoint() string { - if m != nil && m.InsertionPoint != nil { - return *m.InsertionPoint - } - return "" -} - -func (m *CodeGeneratorResponse_File) GetContent() string { - if m != nil && m.Content != nil { - return *m.Content - } - return "" -} - -func init() { - proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version") - proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest") - proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse") - proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File") -} - -func init() { proto.RegisterFile("google/protobuf/compiler/plugin.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0x14, 0x41, - 0x10, 0xc6, 0x19, 0x77, 0x63, 0x98, 0x8a, 0x64, 0x43, 0x13, 0xa5, 0x09, 0x39, 0x8c, 0x8b, 0xe2, - 0x5c, 0x32, 0x0b, 0xc1, 0x8b, 0x78, 0x4b, 0x44, 0x3d, 0x78, 0x58, 0x1a, 0xf1, 0x20, 0xc8, 0x30, - 0x99, 0xd4, 0x74, 0x5a, 0x66, 0xba, 0xc6, 0xee, 0x1e, 0xf1, 0x49, 0x7d, 0x0f, 0xdf, 0x40, 0xfa, - 0xcf, 0x24, 0xb2, 0xb8, 0xa7, 0xee, 0xef, 0x57, 0xd5, 0xd5, 0x55, 0x1f, 0x05, 0x2f, 0x25, 0x91, - 0xec, 0x71, 0x33, 0x1a, 0x72, 0x74, 0x33, 0x75, 0x9b, 0x96, 0x86, 0x51, 0xf5, 0x68, 0x36, 0x63, - 0x3f, 0x49, 0xa5, 0xab, 0x10, 0x60, 0x3c, 0xa6, 0x55, 0x73, 0x5a, 0x35, 0xa7, 0x9d, 0x15, 0xbb, - 0x05, 0x6e, 0xd1, 0xb6, 0x46, 0x8d, 0x8e, 0x4c, 0xcc, 0x5e, 0xb7, 0x70, 0xf8, 0x05, 0x8d, 0x55, - 0xa4, 0xd9, 0x29, 0x1c, 0x0c, 0xcd, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x40, 0x44, 0x11, 0xa8, - 0xd2, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x74, 0x6c, 0x5c, 0x7b, 0xc7, 0x17, 0x91, 0x06, 0xc1, - 0x9e, 0xc1, 0x63, 0x3b, 0x75, 0x9d, 0xfa, 0xc5, 0x97, 0x45, 0x56, 0xe6, 0x22, 0xa9, 0xf5, 0x9f, - 0x0c, 0x4e, 0xaf, 0xe9, 0x16, 0x3f, 0xa0, 0x46, 0xd3, 0x38, 0x32, 0x02, 0x7f, 0x4c, 0x68, 0x1d, - 0x2b, 0xe1, 0xa4, 0x53, 0x3d, 0xd6, 0x8e, 0x6a, 0x19, 0x63, 0xc8, 0xb3, 0x62, 0x51, 0xe6, 0xe2, - 0xd8, 0xf3, 0xcf, 0x94, 0x5e, 0x20, 0x3b, 0x87, 0x7c, 0x6c, 0x4c, 0x33, 0xa0, 0xc3, 0xd8, 0x4a, - 0x2e, 0x1e, 0x00, 0xbb, 0x06, 0x08, 0xe3, 0xd4, 0xfe, 0x15, 0x5f, 0x15, 0x8b, 0xf2, 0xe8, 0xf2, - 0x45, 0xb5, 0x6b, 0xcb, 0x7b, 0xd5, 0xe3, 0xbb, 0x7b, 0x03, 0xb6, 0x1e, 0x8b, 0x3c, 0x44, 0x7d, - 0x84, 0x7d, 0x82, 0x93, 0xd9, 0xb8, 0xfa, 0x67, 0xf4, 0x24, 0x8c, 0x77, 0x74, 0xf9, 0xbc, 0xda, - 0xe7, 0x70, 0x95, 0xcc, 0x13, 0xab, 0x99, 0x24, 0xb0, 0xfe, 0x9d, 0xc1, 0xd3, 0x9d, 0x99, 0xed, - 0x48, 0xda, 0xa2, 0xf7, 0x0e, 0x8d, 0x49, 0x3e, 0xe7, 0x22, 0x0a, 0xf6, 0x11, 0x96, 0xff, 0x34, - 0xff, 0x7a, 0xff, 0x8f, 0xff, 0x2d, 0x1a, 0x66, 0x13, 0xa1, 0xc2, 0xd9, 0x37, 0x58, 0x86, 0x79, - 0x18, 0x2c, 0x75, 0x33, 0x60, 0xfa, 0x26, 0xdc, 0xd9, 0x2b, 0x58, 0x29, 0x6d, 0xd1, 0x38, 0x45, - 0xba, 0x1e, 0x49, 0x69, 0x97, 0xcc, 0x3c, 0xbe, 0xc7, 0x5b, 0x4f, 0x19, 0x87, 0xc3, 0x96, 0xb4, - 0x43, 0xed, 0xf8, 0x2a, 0x24, 0xcc, 0xf2, 0x4a, 0xc2, 0x79, 0x4b, 0xc3, 0xde, 0xfe, 0xae, 0x9e, - 0x6c, 0xc3, 0x6e, 0x06, 0x7b, 0xed, 0xd7, 0x37, 0x52, 0xb9, 0xbb, 0xe9, 0xc6, 0x87, 0x37, 0x92, - 0xfa, 0x46, 0xcb, 0x87, 0x65, 0x0c, 0x97, 0xf6, 0x42, 0xa2, 0xbe, 0x90, 0x94, 0x56, 0xfa, 0x6d, - 0x3c, 0x6a, 0x49, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x15, 0x40, 0xc5, 0xfe, 0x02, 0x00, - 0x00, -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.golden b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.golden deleted file mode 100644 index 8953d0ff..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.pb.golden +++ /dev/null @@ -1,83 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google/protobuf/compiler/plugin.proto -// DO NOT EDIT! - -package google_protobuf_compiler - -import proto "github.com/golang/protobuf/proto" -import "math" -import google_protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" - -// Reference proto and math imports to suppress error if they are not otherwise used. -var _ = proto.GetString -var _ = math.Inf - -type CodeGeneratorRequest struct { - FileToGenerate []string `protobuf:"bytes,1,rep,name=file_to_generate" json:"file_to_generate,omitempty"` - Parameter *string `protobuf:"bytes,2,opt,name=parameter" json:"parameter,omitempty"` - ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file" json:"proto_file,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (this *CodeGeneratorRequest) Reset() { *this = CodeGeneratorRequest{} } -func (this *CodeGeneratorRequest) String() string { return proto.CompactTextString(this) } -func (*CodeGeneratorRequest) ProtoMessage() {} - -func (this *CodeGeneratorRequest) GetParameter() string { - if this != nil && this.Parameter != nil { - return *this.Parameter - } - return "" -} - -type CodeGeneratorResponse struct { - Error *string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` - File []*CodeGeneratorResponse_File `protobuf:"bytes,15,rep,name=file" json:"file,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (this *CodeGeneratorResponse) Reset() { *this = CodeGeneratorResponse{} } -func (this *CodeGeneratorResponse) String() string { return proto.CompactTextString(this) } -func (*CodeGeneratorResponse) ProtoMessage() {} - -func (this *CodeGeneratorResponse) GetError() string { - if this != nil && this.Error != nil { - return *this.Error - } - return "" -} - -type CodeGeneratorResponse_File struct { - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - InsertionPoint *string `protobuf:"bytes,2,opt,name=insertion_point" json:"insertion_point,omitempty"` - Content *string `protobuf:"bytes,15,opt,name=content" json:"content,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (this *CodeGeneratorResponse_File) Reset() { *this = CodeGeneratorResponse_File{} } -func (this *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(this) } -func (*CodeGeneratorResponse_File) ProtoMessage() {} - -func (this *CodeGeneratorResponse_File) GetName() string { - if this != nil && this.Name != nil { - return *this.Name - } - return "" -} - -func (this *CodeGeneratorResponse_File) GetInsertionPoint() string { - if this != nil && this.InsertionPoint != nil { - return *this.InsertionPoint - } - return "" -} - -func (this *CodeGeneratorResponse_File) GetContent() string { - if this != nil && this.Content != nil { - return *this.Content - } - return "" -} - -func init() { -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.proto deleted file mode 100644 index 5b557452..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/plugin/plugin.proto +++ /dev/null @@ -1,167 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// -// WARNING: The plugin interface is currently EXPERIMENTAL and is subject to -// change. -// -// protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is -// just a program that reads a CodeGeneratorRequest from stdin and writes a -// CodeGeneratorResponse to stdout. -// -// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead -// of dealing with the raw protocol defined here. -// -// A plugin executable needs only to be placed somewhere in the path. The -// plugin should be named "protoc-gen-$NAME", and will then be used when the -// flag "--${NAME}_out" is passed to protoc. - -syntax = "proto2"; -package google.protobuf.compiler; -option java_package = "com.google.protobuf.compiler"; -option java_outer_classname = "PluginProtos"; - -option go_package = "github.com/golang/protobuf/protoc-gen-go/plugin;plugin_go"; - -import "google/protobuf/descriptor.proto"; - -// The version number of protocol compiler. -message Version { - optional int32 major = 1; - optional int32 minor = 2; - optional int32 patch = 3; - // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - // be empty for mainline stable releases. - optional string suffix = 4; -} - -// An encoded CodeGeneratorRequest is written to the plugin's stdin. -message CodeGeneratorRequest { - // The .proto files that were explicitly listed on the command-line. The - // code generator should generate code only for these files. Each file's - // descriptor will be included in proto_file, below. - repeated string file_to_generate = 1; - - // The generator parameter passed on the command-line. - optional string parameter = 2; - - // FileDescriptorProtos for all files in files_to_generate and everything - // they import. The files will appear in topological order, so each file - // appears before any file that imports it. - // - // protoc guarantees that all proto_files will be written after - // the fields above, even though this is not technically guaranteed by the - // protobuf wire format. This theoretically could allow a plugin to stream - // in the FileDescriptorProtos and handle them one by one rather than read - // the entire set into memory at once. However, as of this writing, this - // is not similarly optimized on protoc's end -- it will store all fields in - // memory at once before sending them to the plugin. - // - // Type names of fields and extensions in the FileDescriptorProto are always - // fully qualified. - repeated FileDescriptorProto proto_file = 15; - - // The version number of protocol compiler. - optional Version compiler_version = 3; - -} - -// The plugin writes an encoded CodeGeneratorResponse to stdout. -message CodeGeneratorResponse { - // Error message. If non-empty, code generation failed. The plugin process - // should exit with status code zero even if it reports an error in this way. - // - // This should be used to indicate errors in .proto files which prevent the - // code generator from generating correct code. Errors which indicate a - // problem in protoc itself -- such as the input CodeGeneratorRequest being - // unparseable -- should be reported by writing a message to stderr and - // exiting with a non-zero status code. - optional string error = 1; - - // Represents a single generated file. - message File { - // The file name, relative to the output directory. The name must not - // contain "." or ".." components and must be relative, not be absolute (so, - // the file cannot lie outside the output directory). "/" must be used as - // the path separator, not "\". - // - // If the name is omitted, the content will be appended to the previous - // file. This allows the generator to break large files into small chunks, - // and allows the generated text to be streamed back to protoc so that large - // files need not reside completely in memory at one time. Note that as of - // this writing protoc does not optimize for this -- it will read the entire - // CodeGeneratorResponse before writing files to disk. - optional string name = 1; - - // If non-empty, indicates that the named file should already exist, and the - // content here is to be inserted into that file at a defined insertion - // point. This feature allows a code generator to extend the output - // produced by another code generator. The original generator may provide - // insertion points by placing special annotations in the file that look - // like: - // @@protoc_insertion_point(NAME) - // The annotation can have arbitrary text before and after it on the line, - // which allows it to be placed in a comment. NAME should be replaced with - // an identifier naming the point -- this is what other generators will use - // as the insertion_point. Code inserted at this point will be placed - // immediately above the line containing the insertion point (thus multiple - // insertions to the same point will come out in the order they were added). - // The double-@ is intended to make it unlikely that the generated code - // could contain things that look like insertion points by accident. - // - // For example, the C++ code generator places the following line in the - // .pb.h files that it generates: - // // @@protoc_insertion_point(namespace_scope) - // This line appears within the scope of the file's package namespace, but - // outside of any particular class. Another plugin can then specify the - // insertion_point "namespace_scope" to generate additional classes or - // other declarations that should be placed in this scope. - // - // Note that if the line containing the insertion point begins with - // whitespace, the same whitespace will be added to every line of the - // inserted text. This is useful for languages like Python, where - // indentation matters. In these languages, the insertion point comment - // should be indented the same amount as any inserted code will need to be - // in order to work correctly in that context. - // - // The code generator that generates the initial file and the one which - // inserts into it must both run as part of a single invocation of protoc. - // Code generators are executed in the order in which they appear on the - // command line. - // - // If |insertion_point| is present, |name| must also be present. - optional string insertion_point = 2; - - // The file contents. - optional string content = 15; - } - repeated File file = 15; -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile deleted file mode 100644 index a0bf9fef..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -all: - @echo run make test - -include ../../Make.protobuf - -test: golden testbuild - -#test: golden testbuild extension_test -# ./extension_test -# @echo PASS - -my_test/test.pb.go: my_test/test.proto - protoc --go_out=Mmulti/multi1.proto=github.com/golang/protobuf/protoc-gen-go/testdata/multi:. $< - -golden: - make -B my_test/test.pb.go - sed -i -e '/return.*fileDescriptor/d' my_test/test.pb.go - sed -i -e '/^var fileDescriptor/,/^}/d' my_test/test.pb.go - sed -i -e '/proto.RegisterFile.*fileDescriptor/d' my_test/test.pb.go - gofmt -w my_test/test.pb.go - diff -w my_test/test.pb.go my_test/test.pb.go.golden - -nuke: clean - -testbuild: regenerate - go test - -regenerate: - # Invoke protoc once to generate three independent .pb.go files in the same package. - protoc --go_out=. multi/multi1.proto multi/multi2.proto multi/multi3.proto - -#extension_test: extension_test.$O -# $(LD) -L. -o $@ $< - -#multi.a: multi3.pb.$O multi2.pb.$O multi1.pb.$O -# rm -f multi.a -# $(QUOTED_GOBIN)/gopack grc $@ $< - -#test.pb.go: imp.pb.go -#multi1.pb.go: multi2.pb.go multi3.pb.go -#main.$O: imp.pb.$O test.pb.$O multi.a -#extension_test.$O: extension_base.pb.$O extension_extra.pb.$O extension_user.pb.$O diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_base.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_base.proto deleted file mode 100644 index 94acfc1b..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_base.proto +++ /dev/null @@ -1,46 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -package extension_base; - -message BaseMessage { - optional int32 height = 1; - extensions 4 to 9; - extensions 16 to max; -} - -// Another message that may be extended, using message_set_wire_format. -message OldStyleMessage { - option message_set_wire_format = true; - extensions 100 to max; -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_extra.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_extra.proto deleted file mode 100644 index fca7f600..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_extra.proto +++ /dev/null @@ -1,38 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2011 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -package extension_extra; - -message ExtraMessage { - optional int32 width = 1; -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_test.go b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_test.go deleted file mode 100644 index 86e9c118..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_test.go +++ /dev/null @@ -1,210 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Test that we can use protocol buffers that use extensions. - -package testdata - -/* - -import ( - "bytes" - "regexp" - "testing" - - "github.com/golang/protobuf/proto" - base "extension_base.pb" - user "extension_user.pb" -) - -func TestSingleFieldExtension(t *testing.T) { - bm := &base.BaseMessage{ - Height: proto.Int32(178), - } - - // Use extension within scope of another type. - vol := proto.Uint32(11) - err := proto.SetExtension(bm, user.E_LoudMessage_Volume, vol) - if err != nil { - t.Fatal("Failed setting extension:", err) - } - buf, err := proto.Marshal(bm) - if err != nil { - t.Fatal("Failed encoding message with extension:", err) - } - bm_new := new(base.BaseMessage) - if err := proto.Unmarshal(buf, bm_new); err != nil { - t.Fatal("Failed decoding message with extension:", err) - } - if !proto.HasExtension(bm_new, user.E_LoudMessage_Volume) { - t.Fatal("Decoded message didn't contain extension.") - } - vol_out, err := proto.GetExtension(bm_new, user.E_LoudMessage_Volume) - if err != nil { - t.Fatal("Failed getting extension:", err) - } - if v := vol_out.(*uint32); *v != *vol { - t.Errorf("vol_out = %v, expected %v", *v, *vol) - } - proto.ClearExtension(bm_new, user.E_LoudMessage_Volume) - if proto.HasExtension(bm_new, user.E_LoudMessage_Volume) { - t.Fatal("Failed clearing extension.") - } -} - -func TestMessageExtension(t *testing.T) { - bm := &base.BaseMessage{ - Height: proto.Int32(179), - } - - // Use extension that is itself a message. - um := &user.UserMessage{ - Name: proto.String("Dave"), - Rank: proto.String("Major"), - } - err := proto.SetExtension(bm, user.E_LoginMessage_UserMessage, um) - if err != nil { - t.Fatal("Failed setting extension:", err) - } - buf, err := proto.Marshal(bm) - if err != nil { - t.Fatal("Failed encoding message with extension:", err) - } - bm_new := new(base.BaseMessage) - if err := proto.Unmarshal(buf, bm_new); err != nil { - t.Fatal("Failed decoding message with extension:", err) - } - if !proto.HasExtension(bm_new, user.E_LoginMessage_UserMessage) { - t.Fatal("Decoded message didn't contain extension.") - } - um_out, err := proto.GetExtension(bm_new, user.E_LoginMessage_UserMessage) - if err != nil { - t.Fatal("Failed getting extension:", err) - } - if n := um_out.(*user.UserMessage).Name; *n != *um.Name { - t.Errorf("um_out.Name = %q, expected %q", *n, *um.Name) - } - if r := um_out.(*user.UserMessage).Rank; *r != *um.Rank { - t.Errorf("um_out.Rank = %q, expected %q", *r, *um.Rank) - } - proto.ClearExtension(bm_new, user.E_LoginMessage_UserMessage) - if proto.HasExtension(bm_new, user.E_LoginMessage_UserMessage) { - t.Fatal("Failed clearing extension.") - } -} - -func TestTopLevelExtension(t *testing.T) { - bm := &base.BaseMessage{ - Height: proto.Int32(179), - } - - width := proto.Int32(17) - err := proto.SetExtension(bm, user.E_Width, width) - if err != nil { - t.Fatal("Failed setting extension:", err) - } - buf, err := proto.Marshal(bm) - if err != nil { - t.Fatal("Failed encoding message with extension:", err) - } - bm_new := new(base.BaseMessage) - if err := proto.Unmarshal(buf, bm_new); err != nil { - t.Fatal("Failed decoding message with extension:", err) - } - if !proto.HasExtension(bm_new, user.E_Width) { - t.Fatal("Decoded message didn't contain extension.") - } - width_out, err := proto.GetExtension(bm_new, user.E_Width) - if err != nil { - t.Fatal("Failed getting extension:", err) - } - if w := width_out.(*int32); *w != *width { - t.Errorf("width_out = %v, expected %v", *w, *width) - } - proto.ClearExtension(bm_new, user.E_Width) - if proto.HasExtension(bm_new, user.E_Width) { - t.Fatal("Failed clearing extension.") - } -} - -func TestMessageSetWireFormat(t *testing.T) { - osm := new(base.OldStyleMessage) - osp := &user.OldStyleParcel{ - Name: proto.String("Dave"), - Height: proto.Int32(178), - } - - err := proto.SetExtension(osm, user.E_OldStyleParcel_MessageSetExtension, osp) - if err != nil { - t.Fatal("Failed setting extension:", err) - } - - buf, err := proto.Marshal(osm) - if err != nil { - t.Fatal("Failed encoding message:", err) - } - - // Data generated from Python implementation. - expected := []byte{ - 11, 16, 209, 15, 26, 9, 10, 4, 68, 97, 118, 101, 16, 178, 1, 12, - } - - if !bytes.Equal(expected, buf) { - t.Errorf("Encoding mismatch.\nwant %+v\n got %+v", expected, buf) - } - - // Check that it is restored correctly. - osm = new(base.OldStyleMessage) - if err := proto.Unmarshal(buf, osm); err != nil { - t.Fatal("Failed decoding message:", err) - } - osp_out, err := proto.GetExtension(osm, user.E_OldStyleParcel_MessageSetExtension) - if err != nil { - t.Fatal("Failed getting extension:", err) - } - osp = osp_out.(*user.OldStyleParcel) - if *osp.Name != "Dave" || *osp.Height != 178 { - t.Errorf("Retrieved extension from decoded message is not correct: %+v", osp) - } -} - -func main() { - // simpler than rigging up gotest - testing.Main(regexp.MatchString, []testing.InternalTest{ - {"TestSingleFieldExtension", TestSingleFieldExtension}, - {"TestMessageExtension", TestMessageExtension}, - {"TestTopLevelExtension", TestTopLevelExtension}, - }, - []testing.InternalBenchmark{}, - []testing.InternalExample{}) -} - -*/ diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_user.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_user.proto deleted file mode 100644 index ff65873d..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/extension_user.proto +++ /dev/null @@ -1,100 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -import "extension_base.proto"; -import "extension_extra.proto"; - -package extension_user; - -message UserMessage { - optional string name = 1; - optional string rank = 2; -} - -// Extend with a message -extend extension_base.BaseMessage { - optional UserMessage user_message = 5; -} - -// Extend with a foreign message -extend extension_base.BaseMessage { - optional extension_extra.ExtraMessage extra_message = 9; -} - -// Extend with some primitive types -extend extension_base.BaseMessage { - optional int32 width = 6; - optional int64 area = 7; -} - -// Extend inside the scope of another type -message LoudMessage { - extend extension_base.BaseMessage { - optional uint32 volume = 8; - } - extensions 100 to max; -} - -// Extend inside the scope of another type, using a message. -message LoginMessage { - extend extension_base.BaseMessage { - optional UserMessage user_message = 16; - } -} - -// Extend with a repeated field -extend extension_base.BaseMessage { - repeated Detail detail = 17; -} - -message Detail { - optional string color = 1; -} - -// An extension of an extension -message Announcement { - optional string words = 1; - extend LoudMessage { - optional Announcement loud_ext = 100; - } -} - -// Something that can be put in a message set. -message OldStyleParcel { - extend extension_base.OldStyleMessage { - optional OldStyleParcel message_set_extension = 2001; - } - - required string name = 1; - optional int32 height = 2; -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc.proto deleted file mode 100644 index b8bc41ac..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/grpc.proto +++ /dev/null @@ -1,59 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2015 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package grpc.testing; - -message SimpleRequest { -} - -message SimpleResponse { -} - -message StreamMsg { -} - -message StreamMsg2 { -} - -service Test { - rpc UnaryCall(SimpleRequest) returns (SimpleResponse); - - // This RPC streams from the server only. - rpc Downstream(SimpleRequest) returns (stream StreamMsg); - - // This RPC streams from the client. - rpc Upstream(stream StreamMsg) returns (SimpleResponse); - - // This one streams in both directions. - rpc Bidi(stream StreamMsg) returns (stream StreamMsg2); -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp.pb.go.golden b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp.pb.go.golden deleted file mode 100644 index 784a4f86..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp.pb.go.golden +++ /dev/null @@ -1,113 +0,0 @@ -// Code generated by protoc-gen-go. -// source: imp.proto -// DO NOT EDIT! - -package imp - -import proto "github.com/golang/protobuf/proto" -import "math" -import "os" -import imp1 "imp2.pb" - -// Reference proto & math imports to suppress error if they are not otherwise used. -var _ = proto.GetString -var _ = math.Inf - -// Types from public import imp2.proto -type PubliclyImportedMessage imp1.PubliclyImportedMessage - -func (this *PubliclyImportedMessage) Reset() { (*imp1.PubliclyImportedMessage)(this).Reset() } -func (this *PubliclyImportedMessage) String() string { - return (*imp1.PubliclyImportedMessage)(this).String() -} - -// PubliclyImportedMessage from public import imp.proto - -type ImportedMessage_Owner int32 - -const ( - ImportedMessage_DAVE ImportedMessage_Owner = 1 - ImportedMessage_MIKE ImportedMessage_Owner = 2 -) - -var ImportedMessage_Owner_name = map[int32]string{ - 1: "DAVE", - 2: "MIKE", -} -var ImportedMessage_Owner_value = map[string]int32{ - "DAVE": 1, - "MIKE": 2, -} - -// NewImportedMessage_Owner is deprecated. Use x.Enum() instead. -func NewImportedMessage_Owner(x ImportedMessage_Owner) *ImportedMessage_Owner { - e := ImportedMessage_Owner(x) - return &e -} -func (x ImportedMessage_Owner) Enum() *ImportedMessage_Owner { - p := new(ImportedMessage_Owner) - *p = x - return p -} -func (x ImportedMessage_Owner) String() string { - return proto.EnumName(ImportedMessage_Owner_name, int32(x)) -} - -type ImportedMessage struct { - Field *int64 `protobuf:"varint,1,req,name=field" json:"field,omitempty"` - XXX_extensions map[int32][]byte `json:",omitempty"` - XXX_unrecognized []byte `json:",omitempty"` -} - -func (this *ImportedMessage) Reset() { *this = ImportedMessage{} } -func (this *ImportedMessage) String() string { return proto.CompactTextString(this) } - -var extRange_ImportedMessage = []proto.ExtensionRange{ - proto.ExtensionRange{90, 100}, -} - -func (*ImportedMessage) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_ImportedMessage -} -func (this *ImportedMessage) ExtensionMap() map[int32][]byte { - if this.XXX_extensions == nil { - this.XXX_extensions = make(map[int32][]byte) - } - return this.XXX_extensions -} - -type ImportedExtendable struct { - XXX_extensions map[int32][]byte `json:",omitempty"` - XXX_unrecognized []byte `json:",omitempty"` -} - -func (this *ImportedExtendable) Reset() { *this = ImportedExtendable{} } -func (this *ImportedExtendable) String() string { return proto.CompactTextString(this) } - -func (this *ImportedExtendable) Marshal() ([]byte, error) { - return proto.MarshalMessageSet(this.ExtensionMap()) -} -func (this *ImportedExtendable) Unmarshal(buf []byte) error { - return proto.UnmarshalMessageSet(buf, this.ExtensionMap()) -} -// ensure ImportedExtendable satisfies proto.Marshaler and proto.Unmarshaler -var _ proto.Marshaler = (*ImportedExtendable)(nil) -var _ proto.Unmarshaler = (*ImportedExtendable)(nil) - -var extRange_ImportedExtendable = []proto.ExtensionRange{ - proto.ExtensionRange{100, 536870911}, -} - -func (*ImportedExtendable) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_ImportedExtendable -} -func (this *ImportedExtendable) ExtensionMap() map[int32][]byte { - if this.XXX_extensions == nil { - this.XXX_extensions = make(map[int32][]byte) - } - return this.XXX_extensions -} - -func init() { - proto.RegisterEnum("imp.ImportedMessage_Owner", ImportedMessage_Owner_name, ImportedMessage_Owner_value) -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp.proto deleted file mode 100644 index 156e078d..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp.proto +++ /dev/null @@ -1,70 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -package imp; - -import "imp2.proto"; -import "imp3.proto"; - -message ImportedMessage { - required int64 field = 1; - - // The forwarded getters for these fields are fiddly to get right. - optional ImportedMessage2 local_msg = 2; - optional ForeignImportedMessage foreign_msg = 3; // in imp3.proto - optional Owner enum_field = 4; - oneof union { - int32 state = 9; - } - - repeated string name = 5; - repeated Owner boss = 6; - repeated ImportedMessage2 memo = 7; - - map msg_map = 8; - - enum Owner { - DAVE = 1; - MIKE = 2; - } - - extensions 90 to 100; -} - -message ImportedMessage2 { -} - -message ImportedExtendable { - option message_set_wire_format = true; - extensions 100 to max; -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp2.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp2.proto deleted file mode 100644 index 3bb0632b..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp2.proto +++ /dev/null @@ -1,43 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2011 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -package imp; - -message PubliclyImportedMessage { - optional int64 field = 1; -} - -enum PubliclyImportedEnum { - GLASSES = 1; - HAIR = 2; -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp3.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp3.proto deleted file mode 100644 index 58fc7598..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/imp3.proto +++ /dev/null @@ -1,38 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2012 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -package imp; - -message ForeignImportedMessage { - optional string tuber = 1; -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/main_test.go b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/main_test.go deleted file mode 100644 index f9b5ccf2..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/main_test.go +++ /dev/null @@ -1,46 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// A simple binary to link together the protocol buffers in this test. - -package testdata - -import ( - "testing" - - mytestpb "./my_test" - multipb "github.com/golang/protobuf/protoc-gen-go/testdata/multi" -) - -func TestLink(t *testing.T) { - _ = &multipb.Multi1{} - _ = &mytestpb.Request{} -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi1.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi1.proto deleted file mode 100644 index 0da6e0af..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi1.proto +++ /dev/null @@ -1,44 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -import "multi/multi2.proto"; -import "multi/multi3.proto"; - -package multitest; - -message Multi1 { - required Multi2 multi2 = 1; - optional Multi2.Color color = 2; - optional Multi3.HatType hat_type = 3; -} - diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi2.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi2.proto deleted file mode 100644 index e6bfc71b..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi2.proto +++ /dev/null @@ -1,46 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -package multitest; - -message Multi2 { - required int32 required_value = 1; - - enum Color { - BLUE = 1; - GREEN = 2; - RED = 3; - }; - optional Color color = 2; -} - diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi3.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi3.proto deleted file mode 100644 index 146c255b..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/multi/multi3.proto +++ /dev/null @@ -1,43 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -package multitest; - -message Multi3 { - enum HatType { - FEDORA = 1; - FEZ = 2; - }; - optional HatType hat_type = 1; -} - diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go deleted file mode 100644 index 1954e3fb..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go +++ /dev/null @@ -1,870 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: my_test/test.proto - -/* -Package my_test is a generated protocol buffer package. - -This package holds interesting messages. - -It is generated from these files: - my_test/test.proto - -It has these top-level messages: - Request - Reply - OtherBase - ReplyExtensions - OtherReplyExtensions - OldReply - Communique -*/ -package my_test - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/golang/protobuf/protoc-gen-go/testdata/multi" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type HatType int32 - -const ( - // deliberately skipping 0 - HatType_FEDORA HatType = 1 - HatType_FEZ HatType = 2 -) - -var HatType_name = map[int32]string{ - 1: "FEDORA", - 2: "FEZ", -} -var HatType_value = map[string]int32{ - "FEDORA": 1, - "FEZ": 2, -} - -func (x HatType) Enum() *HatType { - p := new(HatType) - *p = x - return p -} -func (x HatType) String() string { - return proto.EnumName(HatType_name, int32(x)) -} -func (x *HatType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(HatType_value, data, "HatType") - if err != nil { - return err - } - *x = HatType(value) - return nil -} - -// This enum represents days of the week. -type Days int32 - -const ( - Days_MONDAY Days = 1 - Days_TUESDAY Days = 2 - Days_LUNDI Days = 1 -) - -var Days_name = map[int32]string{ - 1: "MONDAY", - 2: "TUESDAY", - // Duplicate value: 1: "LUNDI", -} -var Days_value = map[string]int32{ - "MONDAY": 1, - "TUESDAY": 2, - "LUNDI": 1, -} - -func (x Days) Enum() *Days { - p := new(Days) - *p = x - return p -} -func (x Days) String() string { - return proto.EnumName(Days_name, int32(x)) -} -func (x *Days) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Days_value, data, "Days") - if err != nil { - return err - } - *x = Days(value) - return nil -} - -type Request_Color int32 - -const ( - Request_RED Request_Color = 0 - Request_GREEN Request_Color = 1 - Request_BLUE Request_Color = 2 -) - -var Request_Color_name = map[int32]string{ - 0: "RED", - 1: "GREEN", - 2: "BLUE", -} -var Request_Color_value = map[string]int32{ - "RED": 0, - "GREEN": 1, - "BLUE": 2, -} - -func (x Request_Color) Enum() *Request_Color { - p := new(Request_Color) - *p = x - return p -} -func (x Request_Color) String() string { - return proto.EnumName(Request_Color_name, int32(x)) -} -func (x *Request_Color) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Request_Color_value, data, "Request_Color") - if err != nil { - return err - } - *x = Request_Color(value) - return nil -} - -type Reply_Entry_Game int32 - -const ( - Reply_Entry_FOOTBALL Reply_Entry_Game = 1 - Reply_Entry_TENNIS Reply_Entry_Game = 2 -) - -var Reply_Entry_Game_name = map[int32]string{ - 1: "FOOTBALL", - 2: "TENNIS", -} -var Reply_Entry_Game_value = map[string]int32{ - "FOOTBALL": 1, - "TENNIS": 2, -} - -func (x Reply_Entry_Game) Enum() *Reply_Entry_Game { - p := new(Reply_Entry_Game) - *p = x - return p -} -func (x Reply_Entry_Game) String() string { - return proto.EnumName(Reply_Entry_Game_name, int32(x)) -} -func (x *Reply_Entry_Game) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Reply_Entry_Game_value, data, "Reply_Entry_Game") - if err != nil { - return err - } - *x = Reply_Entry_Game(value) - return nil -} - -// This is a message that might be sent somewhere. -type Request struct { - Key []int64 `protobuf:"varint,1,rep,name=key" json:"key,omitempty"` - // optional imp.ImportedMessage imported_message = 2; - Hue *Request_Color `protobuf:"varint,3,opt,name=hue,enum=my.test.Request_Color" json:"hue,omitempty"` - Hat *HatType `protobuf:"varint,4,opt,name=hat,enum=my.test.HatType,def=1" json:"hat,omitempty"` - // optional imp.ImportedMessage.Owner owner = 6; - Deadline *float32 `protobuf:"fixed32,7,opt,name=deadline,def=inf" json:"deadline,omitempty"` - Somegroup *Request_SomeGroup `protobuf:"group,8,opt,name=SomeGroup,json=somegroup" json:"somegroup,omitempty"` - // This is a map field. It will generate map[int32]string. - NameMapping map[int32]string `protobuf:"bytes,14,rep,name=name_mapping,json=nameMapping" json:"name_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // This is a map field whose value type is a message. - MsgMapping map[int64]*Reply `protobuf:"bytes,15,rep,name=msg_mapping,json=msgMapping" json:"msg_mapping,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Reset_ *int32 `protobuf:"varint,12,opt,name=reset" json:"reset,omitempty"` - // This field should not conflict with any getters. - GetKey_ *string `protobuf:"bytes,16,opt,name=get_key,json=getKey" json:"get_key,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} - -const Default_Request_Hat HatType = HatType_FEDORA - -var Default_Request_Deadline float32 = float32(math.Inf(1)) - -func (m *Request) GetKey() []int64 { - if m != nil { - return m.Key - } - return nil -} - -func (m *Request) GetHue() Request_Color { - if m != nil && m.Hue != nil { - return *m.Hue - } - return Request_RED -} - -func (m *Request) GetHat() HatType { - if m != nil && m.Hat != nil { - return *m.Hat - } - return Default_Request_Hat -} - -func (m *Request) GetDeadline() float32 { - if m != nil && m.Deadline != nil { - return *m.Deadline - } - return Default_Request_Deadline -} - -func (m *Request) GetSomegroup() *Request_SomeGroup { - if m != nil { - return m.Somegroup - } - return nil -} - -func (m *Request) GetNameMapping() map[int32]string { - if m != nil { - return m.NameMapping - } - return nil -} - -func (m *Request) GetMsgMapping() map[int64]*Reply { - if m != nil { - return m.MsgMapping - } - return nil -} - -func (m *Request) GetReset_() int32 { - if m != nil && m.Reset_ != nil { - return *m.Reset_ - } - return 0 -} - -func (m *Request) GetGetKey_() string { - if m != nil && m.GetKey_ != nil { - return *m.GetKey_ - } - return "" -} - -type Request_SomeGroup struct { - GroupField *int32 `protobuf:"varint,9,opt,name=group_field,json=groupField" json:"group_field,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Request_SomeGroup) Reset() { *m = Request_SomeGroup{} } -func (m *Request_SomeGroup) String() string { return proto.CompactTextString(m) } -func (*Request_SomeGroup) ProtoMessage() {} - -func (m *Request_SomeGroup) GetGroupField() int32 { - if m != nil && m.GroupField != nil { - return *m.GroupField - } - return 0 -} - -type Reply struct { - Found []*Reply_Entry `protobuf:"bytes,1,rep,name=found" json:"found,omitempty"` - CompactKeys []int32 `protobuf:"varint,2,rep,packed,name=compact_keys,json=compactKeys" json:"compact_keys,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Reply) Reset() { *m = Reply{} } -func (m *Reply) String() string { return proto.CompactTextString(m) } -func (*Reply) ProtoMessage() {} - -var extRange_Reply = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*Reply) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_Reply -} - -func (m *Reply) GetFound() []*Reply_Entry { - if m != nil { - return m.Found - } - return nil -} - -func (m *Reply) GetCompactKeys() []int32 { - if m != nil { - return m.CompactKeys - } - return nil -} - -type Reply_Entry struct { - KeyThatNeeds_1234Camel_CasIng *int64 `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"` - Value *int64 `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"` - XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Reply_Entry) Reset() { *m = Reply_Entry{} } -func (m *Reply_Entry) String() string { return proto.CompactTextString(m) } -func (*Reply_Entry) ProtoMessage() {} - -const Default_Reply_Entry_Value int64 = 7 - -func (m *Reply_Entry) GetKeyThatNeeds_1234Camel_CasIng() int64 { - if m != nil && m.KeyThatNeeds_1234Camel_CasIng != nil { - return *m.KeyThatNeeds_1234Camel_CasIng - } - return 0 -} - -func (m *Reply_Entry) GetValue() int64 { - if m != nil && m.Value != nil { - return *m.Value - } - return Default_Reply_Entry_Value -} - -func (m *Reply_Entry) GetXMyFieldName_2() int64 { - if m != nil && m.XMyFieldName_2 != nil { - return *m.XMyFieldName_2 - } - return 0 -} - -type OtherBase struct { - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OtherBase) Reset() { *m = OtherBase{} } -func (m *OtherBase) String() string { return proto.CompactTextString(m) } -func (*OtherBase) ProtoMessage() {} - -var extRange_OtherBase = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*OtherBase) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_OtherBase -} - -func (m *OtherBase) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -type ReplyExtensions struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *ReplyExtensions) Reset() { *m = ReplyExtensions{} } -func (m *ReplyExtensions) String() string { return proto.CompactTextString(m) } -func (*ReplyExtensions) ProtoMessage() {} - -var E_ReplyExtensions_Time = &proto.ExtensionDesc{ - ExtendedType: (*Reply)(nil), - ExtensionType: (*float64)(nil), - Field: 101, - Name: "my.test.ReplyExtensions.time", - Tag: "fixed64,101,opt,name=time", - Filename: "my_test/test.proto", -} - -var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ - ExtendedType: (*Reply)(nil), - ExtensionType: (*ReplyExtensions)(nil), - Field: 105, - Name: "my.test.ReplyExtensions.carrot", - Tag: "bytes,105,opt,name=carrot", - Filename: "my_test/test.proto", -} - -var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ - ExtendedType: (*OtherBase)(nil), - ExtensionType: (*ReplyExtensions)(nil), - Field: 101, - Name: "my.test.ReplyExtensions.donut", - Tag: "bytes,101,opt,name=donut", - Filename: "my_test/test.proto", -} - -type OtherReplyExtensions struct { - Key *int32 `protobuf:"varint,1,opt,name=key" json:"key,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OtherReplyExtensions) Reset() { *m = OtherReplyExtensions{} } -func (m *OtherReplyExtensions) String() string { return proto.CompactTextString(m) } -func (*OtherReplyExtensions) ProtoMessage() {} - -func (m *OtherReplyExtensions) GetKey() int32 { - if m != nil && m.Key != nil { - return *m.Key - } - return 0 -} - -type OldReply struct { - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OldReply) Reset() { *m = OldReply{} } -func (m *OldReply) String() string { return proto.CompactTextString(m) } -func (*OldReply) ProtoMessage() {} - -func (m *OldReply) Marshal() ([]byte, error) { - return proto.MarshalMessageSet(&m.XXX_InternalExtensions) -} -func (m *OldReply) Unmarshal(buf []byte) error { - return proto.UnmarshalMessageSet(buf, &m.XXX_InternalExtensions) -} -func (m *OldReply) MarshalJSON() ([]byte, error) { - return proto.MarshalMessageSetJSON(&m.XXX_InternalExtensions) -} -func (m *OldReply) UnmarshalJSON(buf []byte) error { - return proto.UnmarshalMessageSetJSON(buf, &m.XXX_InternalExtensions) -} - -// ensure OldReply satisfies proto.Marshaler and proto.Unmarshaler -var _ proto.Marshaler = (*OldReply)(nil) -var _ proto.Unmarshaler = (*OldReply)(nil) - -var extRange_OldReply = []proto.ExtensionRange{ - {100, 2147483646}, -} - -func (*OldReply) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_OldReply -} - -type Communique struct { - MakeMeCry *bool `protobuf:"varint,1,opt,name=make_me_cry,json=makeMeCry" json:"make_me_cry,omitempty"` - // This is a oneof, called "union". - // - // Types that are valid to be assigned to Union: - // *Communique_Number - // *Communique_Name - // *Communique_Data - // *Communique_TempC - // *Communique_Height - // *Communique_Today - // *Communique_Maybe - // *Communique_Delta_ - // *Communique_Msg - // *Communique_Somegroup - Union isCommunique_Union `protobuf_oneof:"union"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Communique) Reset() { *m = Communique{} } -func (m *Communique) String() string { return proto.CompactTextString(m) } -func (*Communique) ProtoMessage() {} - -type isCommunique_Union interface { - isCommunique_Union() -} - -type Communique_Number struct { - Number int32 `protobuf:"varint,5,opt,name=number,oneof"` -} -type Communique_Name struct { - Name string `protobuf:"bytes,6,opt,name=name,oneof"` -} -type Communique_Data struct { - Data []byte `protobuf:"bytes,7,opt,name=data,oneof"` -} -type Communique_TempC struct { - TempC float64 `protobuf:"fixed64,8,opt,name=temp_c,json=tempC,oneof"` -} -type Communique_Height struct { - Height float32 `protobuf:"fixed32,9,opt,name=height,oneof"` -} -type Communique_Today struct { - Today Days `protobuf:"varint,10,opt,name=today,enum=my.test.Days,oneof"` -} -type Communique_Maybe struct { - Maybe bool `protobuf:"varint,11,opt,name=maybe,oneof"` -} -type Communique_Delta_ struct { - Delta int32 `protobuf:"zigzag32,12,opt,name=delta,oneof"` -} -type Communique_Msg struct { - Msg *Reply `protobuf:"bytes,13,opt,name=msg,oneof"` -} -type Communique_Somegroup struct { - Somegroup *Communique_SomeGroup `protobuf:"group,14,opt,name=SomeGroup,json=somegroup,oneof"` -} - -func (*Communique_Number) isCommunique_Union() {} -func (*Communique_Name) isCommunique_Union() {} -func (*Communique_Data) isCommunique_Union() {} -func (*Communique_TempC) isCommunique_Union() {} -func (*Communique_Height) isCommunique_Union() {} -func (*Communique_Today) isCommunique_Union() {} -func (*Communique_Maybe) isCommunique_Union() {} -func (*Communique_Delta_) isCommunique_Union() {} -func (*Communique_Msg) isCommunique_Union() {} -func (*Communique_Somegroup) isCommunique_Union() {} - -func (m *Communique) GetUnion() isCommunique_Union { - if m != nil { - return m.Union - } - return nil -} - -func (m *Communique) GetMakeMeCry() bool { - if m != nil && m.MakeMeCry != nil { - return *m.MakeMeCry - } - return false -} - -func (m *Communique) GetNumber() int32 { - if x, ok := m.GetUnion().(*Communique_Number); ok { - return x.Number - } - return 0 -} - -func (m *Communique) GetName() string { - if x, ok := m.GetUnion().(*Communique_Name); ok { - return x.Name - } - return "" -} - -func (m *Communique) GetData() []byte { - if x, ok := m.GetUnion().(*Communique_Data); ok { - return x.Data - } - return nil -} - -func (m *Communique) GetTempC() float64 { - if x, ok := m.GetUnion().(*Communique_TempC); ok { - return x.TempC - } - return 0 -} - -func (m *Communique) GetHeight() float32 { - if x, ok := m.GetUnion().(*Communique_Height); ok { - return x.Height - } - return 0 -} - -func (m *Communique) GetToday() Days { - if x, ok := m.GetUnion().(*Communique_Today); ok { - return x.Today - } - return Days_MONDAY -} - -func (m *Communique) GetMaybe() bool { - if x, ok := m.GetUnion().(*Communique_Maybe); ok { - return x.Maybe - } - return false -} - -func (m *Communique) GetDelta() int32 { - if x, ok := m.GetUnion().(*Communique_Delta_); ok { - return x.Delta - } - return 0 -} - -func (m *Communique) GetMsg() *Reply { - if x, ok := m.GetUnion().(*Communique_Msg); ok { - return x.Msg - } - return nil -} - -func (m *Communique) GetSomegroup() *Communique_SomeGroup { - if x, ok := m.GetUnion().(*Communique_Somegroup); ok { - return x.Somegroup - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Communique) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Communique_OneofMarshaler, _Communique_OneofUnmarshaler, _Communique_OneofSizer, []interface{}{ - (*Communique_Number)(nil), - (*Communique_Name)(nil), - (*Communique_Data)(nil), - (*Communique_TempC)(nil), - (*Communique_Height)(nil), - (*Communique_Today)(nil), - (*Communique_Maybe)(nil), - (*Communique_Delta_)(nil), - (*Communique_Msg)(nil), - (*Communique_Somegroup)(nil), - } -} - -func _Communique_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Communique) - // union - switch x := m.Union.(type) { - case *Communique_Number: - b.EncodeVarint(5<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Number)) - case *Communique_Name: - b.EncodeVarint(6<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Name) - case *Communique_Data: - b.EncodeVarint(7<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Data) - case *Communique_TempC: - b.EncodeVarint(8<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.TempC)) - case *Communique_Height: - b.EncodeVarint(9<<3 | proto.WireFixed32) - b.EncodeFixed32(uint64(math.Float32bits(x.Height))) - case *Communique_Today: - b.EncodeVarint(10<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Today)) - case *Communique_Maybe: - t := uint64(0) - if x.Maybe { - t = 1 - } - b.EncodeVarint(11<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Communique_Delta_: - b.EncodeVarint(12<<3 | proto.WireVarint) - b.EncodeZigzag32(uint64(x.Delta)) - case *Communique_Msg: - b.EncodeVarint(13<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Msg); err != nil { - return err - } - case *Communique_Somegroup: - b.EncodeVarint(14<<3 | proto.WireStartGroup) - if err := b.Marshal(x.Somegroup); err != nil { - return err - } - b.EncodeVarint(14<<3 | proto.WireEndGroup) - case nil: - default: - return fmt.Errorf("Communique.Union has unexpected type %T", x) - } - return nil -} - -func _Communique_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Communique) - switch tag { - case 5: // union.number - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Communique_Number{int32(x)} - return true, err - case 6: // union.name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Union = &Communique_Name{x} - return true, err - case 7: // union.data - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Union = &Communique_Data{x} - return true, err - case 8: // union.temp_c - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Union = &Communique_TempC{math.Float64frombits(x)} - return true, err - case 9: // union.height - if wire != proto.WireFixed32 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed32() - m.Union = &Communique_Height{math.Float32frombits(uint32(x))} - return true, err - case 10: // union.today - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Communique_Today{Days(x)} - return true, err - case 11: // union.maybe - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Communique_Maybe{x != 0} - return true, err - case 12: // union.delta - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeZigzag32() - m.Union = &Communique_Delta_{int32(x)} - return true, err - case 13: // union.msg - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Reply) - err := b.DecodeMessage(msg) - m.Union = &Communique_Msg{msg} - return true, err - case 14: // union.somegroup - if wire != proto.WireStartGroup { - return true, proto.ErrInternalBadWireType - } - msg := new(Communique_SomeGroup) - err := b.DecodeGroup(msg) - m.Union = &Communique_Somegroup{msg} - return true, err - default: - return false, nil - } -} - -func _Communique_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Communique) - // union - switch x := m.Union.(type) { - case *Communique_Number: - n += proto.SizeVarint(5<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Number)) - case *Communique_Name: - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Name))) - n += len(x.Name) - case *Communique_Data: - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Data))) - n += len(x.Data) - case *Communique_TempC: - n += proto.SizeVarint(8<<3 | proto.WireFixed64) - n += 8 - case *Communique_Height: - n += proto.SizeVarint(9<<3 | proto.WireFixed32) - n += 4 - case *Communique_Today: - n += proto.SizeVarint(10<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Today)) - case *Communique_Maybe: - n += proto.SizeVarint(11<<3 | proto.WireVarint) - n += 1 - case *Communique_Delta_: - n += proto.SizeVarint(12<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64((uint32(x.Delta) << 1) ^ uint32((int32(x.Delta) >> 31)))) - case *Communique_Msg: - s := proto.Size(x.Msg) - n += proto.SizeVarint(13<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Communique_Somegroup: - n += proto.SizeVarint(14<<3 | proto.WireStartGroup) - n += proto.Size(x.Somegroup) - n += proto.SizeVarint(14<<3 | proto.WireEndGroup) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type Communique_SomeGroup struct { - Member *string `protobuf:"bytes,15,opt,name=member" json:"member,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Communique_SomeGroup) Reset() { *m = Communique_SomeGroup{} } -func (m *Communique_SomeGroup) String() string { return proto.CompactTextString(m) } -func (*Communique_SomeGroup) ProtoMessage() {} - -func (m *Communique_SomeGroup) GetMember() string { - if m != nil && m.Member != nil { - return *m.Member - } - return "" -} - -type Communique_Delta struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *Communique_Delta) Reset() { *m = Communique_Delta{} } -func (m *Communique_Delta) String() string { return proto.CompactTextString(m) } -func (*Communique_Delta) ProtoMessage() {} - -var E_Tag = &proto.ExtensionDesc{ - ExtendedType: (*Reply)(nil), - ExtensionType: (*string)(nil), - Field: 103, - Name: "my.test.tag", - Tag: "bytes,103,opt,name=tag", - Filename: "my_test/test.proto", -} - -var E_Donut = &proto.ExtensionDesc{ - ExtendedType: (*Reply)(nil), - ExtensionType: (*OtherReplyExtensions)(nil), - Field: 106, - Name: "my.test.donut", - Tag: "bytes,106,opt,name=donut", - Filename: "my_test/test.proto", -} - -func init() { - proto.RegisterType((*Request)(nil), "my.test.Request") - proto.RegisterType((*Request_SomeGroup)(nil), "my.test.Request.SomeGroup") - proto.RegisterType((*Reply)(nil), "my.test.Reply") - proto.RegisterType((*Reply_Entry)(nil), "my.test.Reply.Entry") - proto.RegisterType((*OtherBase)(nil), "my.test.OtherBase") - proto.RegisterType((*ReplyExtensions)(nil), "my.test.ReplyExtensions") - proto.RegisterType((*OtherReplyExtensions)(nil), "my.test.OtherReplyExtensions") - proto.RegisterType((*OldReply)(nil), "my.test.OldReply") - proto.RegisterType((*Communique)(nil), "my.test.Communique") - proto.RegisterType((*Communique_SomeGroup)(nil), "my.test.Communique.SomeGroup") - proto.RegisterType((*Communique_Delta)(nil), "my.test.Communique.Delta") - proto.RegisterEnum("my.test.HatType", HatType_name, HatType_value) - proto.RegisterEnum("my.test.Days", Days_name, Days_value) - proto.RegisterEnum("my.test.Request_Color", Request_Color_name, Request_Color_value) - proto.RegisterEnum("my.test.Reply_Entry_Game", Reply_Entry_Game_name, Reply_Entry_Game_value) - proto.RegisterExtension(E_ReplyExtensions_Time) - proto.RegisterExtension(E_ReplyExtensions_Carrot) - proto.RegisterExtension(E_ReplyExtensions_Donut) - proto.RegisterExtension(E_Tag) - proto.RegisterExtension(E_Donut) -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden deleted file mode 100644 index 1954e3fb..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.pb.go.golden +++ /dev/null @@ -1,870 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: my_test/test.proto - -/* -Package my_test is a generated protocol buffer package. - -This package holds interesting messages. - -It is generated from these files: - my_test/test.proto - -It has these top-level messages: - Request - Reply - OtherBase - ReplyExtensions - OtherReplyExtensions - OldReply - Communique -*/ -package my_test - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/golang/protobuf/protoc-gen-go/testdata/multi" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type HatType int32 - -const ( - // deliberately skipping 0 - HatType_FEDORA HatType = 1 - HatType_FEZ HatType = 2 -) - -var HatType_name = map[int32]string{ - 1: "FEDORA", - 2: "FEZ", -} -var HatType_value = map[string]int32{ - "FEDORA": 1, - "FEZ": 2, -} - -func (x HatType) Enum() *HatType { - p := new(HatType) - *p = x - return p -} -func (x HatType) String() string { - return proto.EnumName(HatType_name, int32(x)) -} -func (x *HatType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(HatType_value, data, "HatType") - if err != nil { - return err - } - *x = HatType(value) - return nil -} - -// This enum represents days of the week. -type Days int32 - -const ( - Days_MONDAY Days = 1 - Days_TUESDAY Days = 2 - Days_LUNDI Days = 1 -) - -var Days_name = map[int32]string{ - 1: "MONDAY", - 2: "TUESDAY", - // Duplicate value: 1: "LUNDI", -} -var Days_value = map[string]int32{ - "MONDAY": 1, - "TUESDAY": 2, - "LUNDI": 1, -} - -func (x Days) Enum() *Days { - p := new(Days) - *p = x - return p -} -func (x Days) String() string { - return proto.EnumName(Days_name, int32(x)) -} -func (x *Days) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Days_value, data, "Days") - if err != nil { - return err - } - *x = Days(value) - return nil -} - -type Request_Color int32 - -const ( - Request_RED Request_Color = 0 - Request_GREEN Request_Color = 1 - Request_BLUE Request_Color = 2 -) - -var Request_Color_name = map[int32]string{ - 0: "RED", - 1: "GREEN", - 2: "BLUE", -} -var Request_Color_value = map[string]int32{ - "RED": 0, - "GREEN": 1, - "BLUE": 2, -} - -func (x Request_Color) Enum() *Request_Color { - p := new(Request_Color) - *p = x - return p -} -func (x Request_Color) String() string { - return proto.EnumName(Request_Color_name, int32(x)) -} -func (x *Request_Color) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Request_Color_value, data, "Request_Color") - if err != nil { - return err - } - *x = Request_Color(value) - return nil -} - -type Reply_Entry_Game int32 - -const ( - Reply_Entry_FOOTBALL Reply_Entry_Game = 1 - Reply_Entry_TENNIS Reply_Entry_Game = 2 -) - -var Reply_Entry_Game_name = map[int32]string{ - 1: "FOOTBALL", - 2: "TENNIS", -} -var Reply_Entry_Game_value = map[string]int32{ - "FOOTBALL": 1, - "TENNIS": 2, -} - -func (x Reply_Entry_Game) Enum() *Reply_Entry_Game { - p := new(Reply_Entry_Game) - *p = x - return p -} -func (x Reply_Entry_Game) String() string { - return proto.EnumName(Reply_Entry_Game_name, int32(x)) -} -func (x *Reply_Entry_Game) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Reply_Entry_Game_value, data, "Reply_Entry_Game") - if err != nil { - return err - } - *x = Reply_Entry_Game(value) - return nil -} - -// This is a message that might be sent somewhere. -type Request struct { - Key []int64 `protobuf:"varint,1,rep,name=key" json:"key,omitempty"` - // optional imp.ImportedMessage imported_message = 2; - Hue *Request_Color `protobuf:"varint,3,opt,name=hue,enum=my.test.Request_Color" json:"hue,omitempty"` - Hat *HatType `protobuf:"varint,4,opt,name=hat,enum=my.test.HatType,def=1" json:"hat,omitempty"` - // optional imp.ImportedMessage.Owner owner = 6; - Deadline *float32 `protobuf:"fixed32,7,opt,name=deadline,def=inf" json:"deadline,omitempty"` - Somegroup *Request_SomeGroup `protobuf:"group,8,opt,name=SomeGroup,json=somegroup" json:"somegroup,omitempty"` - // This is a map field. It will generate map[int32]string. - NameMapping map[int32]string `protobuf:"bytes,14,rep,name=name_mapping,json=nameMapping" json:"name_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // This is a map field whose value type is a message. - MsgMapping map[int64]*Reply `protobuf:"bytes,15,rep,name=msg_mapping,json=msgMapping" json:"msg_mapping,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Reset_ *int32 `protobuf:"varint,12,opt,name=reset" json:"reset,omitempty"` - // This field should not conflict with any getters. - GetKey_ *string `protobuf:"bytes,16,opt,name=get_key,json=getKey" json:"get_key,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} - -const Default_Request_Hat HatType = HatType_FEDORA - -var Default_Request_Deadline float32 = float32(math.Inf(1)) - -func (m *Request) GetKey() []int64 { - if m != nil { - return m.Key - } - return nil -} - -func (m *Request) GetHue() Request_Color { - if m != nil && m.Hue != nil { - return *m.Hue - } - return Request_RED -} - -func (m *Request) GetHat() HatType { - if m != nil && m.Hat != nil { - return *m.Hat - } - return Default_Request_Hat -} - -func (m *Request) GetDeadline() float32 { - if m != nil && m.Deadline != nil { - return *m.Deadline - } - return Default_Request_Deadline -} - -func (m *Request) GetSomegroup() *Request_SomeGroup { - if m != nil { - return m.Somegroup - } - return nil -} - -func (m *Request) GetNameMapping() map[int32]string { - if m != nil { - return m.NameMapping - } - return nil -} - -func (m *Request) GetMsgMapping() map[int64]*Reply { - if m != nil { - return m.MsgMapping - } - return nil -} - -func (m *Request) GetReset_() int32 { - if m != nil && m.Reset_ != nil { - return *m.Reset_ - } - return 0 -} - -func (m *Request) GetGetKey_() string { - if m != nil && m.GetKey_ != nil { - return *m.GetKey_ - } - return "" -} - -type Request_SomeGroup struct { - GroupField *int32 `protobuf:"varint,9,opt,name=group_field,json=groupField" json:"group_field,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Request_SomeGroup) Reset() { *m = Request_SomeGroup{} } -func (m *Request_SomeGroup) String() string { return proto.CompactTextString(m) } -func (*Request_SomeGroup) ProtoMessage() {} - -func (m *Request_SomeGroup) GetGroupField() int32 { - if m != nil && m.GroupField != nil { - return *m.GroupField - } - return 0 -} - -type Reply struct { - Found []*Reply_Entry `protobuf:"bytes,1,rep,name=found" json:"found,omitempty"` - CompactKeys []int32 `protobuf:"varint,2,rep,packed,name=compact_keys,json=compactKeys" json:"compact_keys,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Reply) Reset() { *m = Reply{} } -func (m *Reply) String() string { return proto.CompactTextString(m) } -func (*Reply) ProtoMessage() {} - -var extRange_Reply = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*Reply) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_Reply -} - -func (m *Reply) GetFound() []*Reply_Entry { - if m != nil { - return m.Found - } - return nil -} - -func (m *Reply) GetCompactKeys() []int32 { - if m != nil { - return m.CompactKeys - } - return nil -} - -type Reply_Entry struct { - KeyThatNeeds_1234Camel_CasIng *int64 `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"` - Value *int64 `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"` - XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Reply_Entry) Reset() { *m = Reply_Entry{} } -func (m *Reply_Entry) String() string { return proto.CompactTextString(m) } -func (*Reply_Entry) ProtoMessage() {} - -const Default_Reply_Entry_Value int64 = 7 - -func (m *Reply_Entry) GetKeyThatNeeds_1234Camel_CasIng() int64 { - if m != nil && m.KeyThatNeeds_1234Camel_CasIng != nil { - return *m.KeyThatNeeds_1234Camel_CasIng - } - return 0 -} - -func (m *Reply_Entry) GetValue() int64 { - if m != nil && m.Value != nil { - return *m.Value - } - return Default_Reply_Entry_Value -} - -func (m *Reply_Entry) GetXMyFieldName_2() int64 { - if m != nil && m.XMyFieldName_2 != nil { - return *m.XMyFieldName_2 - } - return 0 -} - -type OtherBase struct { - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OtherBase) Reset() { *m = OtherBase{} } -func (m *OtherBase) String() string { return proto.CompactTextString(m) } -func (*OtherBase) ProtoMessage() {} - -var extRange_OtherBase = []proto.ExtensionRange{ - {100, 536870911}, -} - -func (*OtherBase) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_OtherBase -} - -func (m *OtherBase) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -type ReplyExtensions struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *ReplyExtensions) Reset() { *m = ReplyExtensions{} } -func (m *ReplyExtensions) String() string { return proto.CompactTextString(m) } -func (*ReplyExtensions) ProtoMessage() {} - -var E_ReplyExtensions_Time = &proto.ExtensionDesc{ - ExtendedType: (*Reply)(nil), - ExtensionType: (*float64)(nil), - Field: 101, - Name: "my.test.ReplyExtensions.time", - Tag: "fixed64,101,opt,name=time", - Filename: "my_test/test.proto", -} - -var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{ - ExtendedType: (*Reply)(nil), - ExtensionType: (*ReplyExtensions)(nil), - Field: 105, - Name: "my.test.ReplyExtensions.carrot", - Tag: "bytes,105,opt,name=carrot", - Filename: "my_test/test.proto", -} - -var E_ReplyExtensions_Donut = &proto.ExtensionDesc{ - ExtendedType: (*OtherBase)(nil), - ExtensionType: (*ReplyExtensions)(nil), - Field: 101, - Name: "my.test.ReplyExtensions.donut", - Tag: "bytes,101,opt,name=donut", - Filename: "my_test/test.proto", -} - -type OtherReplyExtensions struct { - Key *int32 `protobuf:"varint,1,opt,name=key" json:"key,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OtherReplyExtensions) Reset() { *m = OtherReplyExtensions{} } -func (m *OtherReplyExtensions) String() string { return proto.CompactTextString(m) } -func (*OtherReplyExtensions) ProtoMessage() {} - -func (m *OtherReplyExtensions) GetKey() int32 { - if m != nil && m.Key != nil { - return *m.Key - } - return 0 -} - -type OldReply struct { - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OldReply) Reset() { *m = OldReply{} } -func (m *OldReply) String() string { return proto.CompactTextString(m) } -func (*OldReply) ProtoMessage() {} - -func (m *OldReply) Marshal() ([]byte, error) { - return proto.MarshalMessageSet(&m.XXX_InternalExtensions) -} -func (m *OldReply) Unmarshal(buf []byte) error { - return proto.UnmarshalMessageSet(buf, &m.XXX_InternalExtensions) -} -func (m *OldReply) MarshalJSON() ([]byte, error) { - return proto.MarshalMessageSetJSON(&m.XXX_InternalExtensions) -} -func (m *OldReply) UnmarshalJSON(buf []byte) error { - return proto.UnmarshalMessageSetJSON(buf, &m.XXX_InternalExtensions) -} - -// ensure OldReply satisfies proto.Marshaler and proto.Unmarshaler -var _ proto.Marshaler = (*OldReply)(nil) -var _ proto.Unmarshaler = (*OldReply)(nil) - -var extRange_OldReply = []proto.ExtensionRange{ - {100, 2147483646}, -} - -func (*OldReply) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_OldReply -} - -type Communique struct { - MakeMeCry *bool `protobuf:"varint,1,opt,name=make_me_cry,json=makeMeCry" json:"make_me_cry,omitempty"` - // This is a oneof, called "union". - // - // Types that are valid to be assigned to Union: - // *Communique_Number - // *Communique_Name - // *Communique_Data - // *Communique_TempC - // *Communique_Height - // *Communique_Today - // *Communique_Maybe - // *Communique_Delta_ - // *Communique_Msg - // *Communique_Somegroup - Union isCommunique_Union `protobuf_oneof:"union"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Communique) Reset() { *m = Communique{} } -func (m *Communique) String() string { return proto.CompactTextString(m) } -func (*Communique) ProtoMessage() {} - -type isCommunique_Union interface { - isCommunique_Union() -} - -type Communique_Number struct { - Number int32 `protobuf:"varint,5,opt,name=number,oneof"` -} -type Communique_Name struct { - Name string `protobuf:"bytes,6,opt,name=name,oneof"` -} -type Communique_Data struct { - Data []byte `protobuf:"bytes,7,opt,name=data,oneof"` -} -type Communique_TempC struct { - TempC float64 `protobuf:"fixed64,8,opt,name=temp_c,json=tempC,oneof"` -} -type Communique_Height struct { - Height float32 `protobuf:"fixed32,9,opt,name=height,oneof"` -} -type Communique_Today struct { - Today Days `protobuf:"varint,10,opt,name=today,enum=my.test.Days,oneof"` -} -type Communique_Maybe struct { - Maybe bool `protobuf:"varint,11,opt,name=maybe,oneof"` -} -type Communique_Delta_ struct { - Delta int32 `protobuf:"zigzag32,12,opt,name=delta,oneof"` -} -type Communique_Msg struct { - Msg *Reply `protobuf:"bytes,13,opt,name=msg,oneof"` -} -type Communique_Somegroup struct { - Somegroup *Communique_SomeGroup `protobuf:"group,14,opt,name=SomeGroup,json=somegroup,oneof"` -} - -func (*Communique_Number) isCommunique_Union() {} -func (*Communique_Name) isCommunique_Union() {} -func (*Communique_Data) isCommunique_Union() {} -func (*Communique_TempC) isCommunique_Union() {} -func (*Communique_Height) isCommunique_Union() {} -func (*Communique_Today) isCommunique_Union() {} -func (*Communique_Maybe) isCommunique_Union() {} -func (*Communique_Delta_) isCommunique_Union() {} -func (*Communique_Msg) isCommunique_Union() {} -func (*Communique_Somegroup) isCommunique_Union() {} - -func (m *Communique) GetUnion() isCommunique_Union { - if m != nil { - return m.Union - } - return nil -} - -func (m *Communique) GetMakeMeCry() bool { - if m != nil && m.MakeMeCry != nil { - return *m.MakeMeCry - } - return false -} - -func (m *Communique) GetNumber() int32 { - if x, ok := m.GetUnion().(*Communique_Number); ok { - return x.Number - } - return 0 -} - -func (m *Communique) GetName() string { - if x, ok := m.GetUnion().(*Communique_Name); ok { - return x.Name - } - return "" -} - -func (m *Communique) GetData() []byte { - if x, ok := m.GetUnion().(*Communique_Data); ok { - return x.Data - } - return nil -} - -func (m *Communique) GetTempC() float64 { - if x, ok := m.GetUnion().(*Communique_TempC); ok { - return x.TempC - } - return 0 -} - -func (m *Communique) GetHeight() float32 { - if x, ok := m.GetUnion().(*Communique_Height); ok { - return x.Height - } - return 0 -} - -func (m *Communique) GetToday() Days { - if x, ok := m.GetUnion().(*Communique_Today); ok { - return x.Today - } - return Days_MONDAY -} - -func (m *Communique) GetMaybe() bool { - if x, ok := m.GetUnion().(*Communique_Maybe); ok { - return x.Maybe - } - return false -} - -func (m *Communique) GetDelta() int32 { - if x, ok := m.GetUnion().(*Communique_Delta_); ok { - return x.Delta - } - return 0 -} - -func (m *Communique) GetMsg() *Reply { - if x, ok := m.GetUnion().(*Communique_Msg); ok { - return x.Msg - } - return nil -} - -func (m *Communique) GetSomegroup() *Communique_SomeGroup { - if x, ok := m.GetUnion().(*Communique_Somegroup); ok { - return x.Somegroup - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Communique) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Communique_OneofMarshaler, _Communique_OneofUnmarshaler, _Communique_OneofSizer, []interface{}{ - (*Communique_Number)(nil), - (*Communique_Name)(nil), - (*Communique_Data)(nil), - (*Communique_TempC)(nil), - (*Communique_Height)(nil), - (*Communique_Today)(nil), - (*Communique_Maybe)(nil), - (*Communique_Delta_)(nil), - (*Communique_Msg)(nil), - (*Communique_Somegroup)(nil), - } -} - -func _Communique_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Communique) - // union - switch x := m.Union.(type) { - case *Communique_Number: - b.EncodeVarint(5<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Number)) - case *Communique_Name: - b.EncodeVarint(6<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Name) - case *Communique_Data: - b.EncodeVarint(7<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Data) - case *Communique_TempC: - b.EncodeVarint(8<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.TempC)) - case *Communique_Height: - b.EncodeVarint(9<<3 | proto.WireFixed32) - b.EncodeFixed32(uint64(math.Float32bits(x.Height))) - case *Communique_Today: - b.EncodeVarint(10<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Today)) - case *Communique_Maybe: - t := uint64(0) - if x.Maybe { - t = 1 - } - b.EncodeVarint(11<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Communique_Delta_: - b.EncodeVarint(12<<3 | proto.WireVarint) - b.EncodeZigzag32(uint64(x.Delta)) - case *Communique_Msg: - b.EncodeVarint(13<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Msg); err != nil { - return err - } - case *Communique_Somegroup: - b.EncodeVarint(14<<3 | proto.WireStartGroup) - if err := b.Marshal(x.Somegroup); err != nil { - return err - } - b.EncodeVarint(14<<3 | proto.WireEndGroup) - case nil: - default: - return fmt.Errorf("Communique.Union has unexpected type %T", x) - } - return nil -} - -func _Communique_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Communique) - switch tag { - case 5: // union.number - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Communique_Number{int32(x)} - return true, err - case 6: // union.name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Union = &Communique_Name{x} - return true, err - case 7: // union.data - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Union = &Communique_Data{x} - return true, err - case 8: // union.temp_c - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Union = &Communique_TempC{math.Float64frombits(x)} - return true, err - case 9: // union.height - if wire != proto.WireFixed32 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed32() - m.Union = &Communique_Height{math.Float32frombits(uint32(x))} - return true, err - case 10: // union.today - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Communique_Today{Days(x)} - return true, err - case 11: // union.maybe - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Union = &Communique_Maybe{x != 0} - return true, err - case 12: // union.delta - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeZigzag32() - m.Union = &Communique_Delta_{int32(x)} - return true, err - case 13: // union.msg - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Reply) - err := b.DecodeMessage(msg) - m.Union = &Communique_Msg{msg} - return true, err - case 14: // union.somegroup - if wire != proto.WireStartGroup { - return true, proto.ErrInternalBadWireType - } - msg := new(Communique_SomeGroup) - err := b.DecodeGroup(msg) - m.Union = &Communique_Somegroup{msg} - return true, err - default: - return false, nil - } -} - -func _Communique_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Communique) - // union - switch x := m.Union.(type) { - case *Communique_Number: - n += proto.SizeVarint(5<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Number)) - case *Communique_Name: - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Name))) - n += len(x.Name) - case *Communique_Data: - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Data))) - n += len(x.Data) - case *Communique_TempC: - n += proto.SizeVarint(8<<3 | proto.WireFixed64) - n += 8 - case *Communique_Height: - n += proto.SizeVarint(9<<3 | proto.WireFixed32) - n += 4 - case *Communique_Today: - n += proto.SizeVarint(10<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Today)) - case *Communique_Maybe: - n += proto.SizeVarint(11<<3 | proto.WireVarint) - n += 1 - case *Communique_Delta_: - n += proto.SizeVarint(12<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64((uint32(x.Delta) << 1) ^ uint32((int32(x.Delta) >> 31)))) - case *Communique_Msg: - s := proto.Size(x.Msg) - n += proto.SizeVarint(13<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Communique_Somegroup: - n += proto.SizeVarint(14<<3 | proto.WireStartGroup) - n += proto.Size(x.Somegroup) - n += proto.SizeVarint(14<<3 | proto.WireEndGroup) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type Communique_SomeGroup struct { - Member *string `protobuf:"bytes,15,opt,name=member" json:"member,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Communique_SomeGroup) Reset() { *m = Communique_SomeGroup{} } -func (m *Communique_SomeGroup) String() string { return proto.CompactTextString(m) } -func (*Communique_SomeGroup) ProtoMessage() {} - -func (m *Communique_SomeGroup) GetMember() string { - if m != nil && m.Member != nil { - return *m.Member - } - return "" -} - -type Communique_Delta struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *Communique_Delta) Reset() { *m = Communique_Delta{} } -func (m *Communique_Delta) String() string { return proto.CompactTextString(m) } -func (*Communique_Delta) ProtoMessage() {} - -var E_Tag = &proto.ExtensionDesc{ - ExtendedType: (*Reply)(nil), - ExtensionType: (*string)(nil), - Field: 103, - Name: "my.test.tag", - Tag: "bytes,103,opt,name=tag", - Filename: "my_test/test.proto", -} - -var E_Donut = &proto.ExtensionDesc{ - ExtendedType: (*Reply)(nil), - ExtensionType: (*OtherReplyExtensions)(nil), - Field: 106, - Name: "my.test.donut", - Tag: "bytes,106,opt,name=donut", - Filename: "my_test/test.proto", -} - -func init() { - proto.RegisterType((*Request)(nil), "my.test.Request") - proto.RegisterType((*Request_SomeGroup)(nil), "my.test.Request.SomeGroup") - proto.RegisterType((*Reply)(nil), "my.test.Reply") - proto.RegisterType((*Reply_Entry)(nil), "my.test.Reply.Entry") - proto.RegisterType((*OtherBase)(nil), "my.test.OtherBase") - proto.RegisterType((*ReplyExtensions)(nil), "my.test.ReplyExtensions") - proto.RegisterType((*OtherReplyExtensions)(nil), "my.test.OtherReplyExtensions") - proto.RegisterType((*OldReply)(nil), "my.test.OldReply") - proto.RegisterType((*Communique)(nil), "my.test.Communique") - proto.RegisterType((*Communique_SomeGroup)(nil), "my.test.Communique.SomeGroup") - proto.RegisterType((*Communique_Delta)(nil), "my.test.Communique.Delta") - proto.RegisterEnum("my.test.HatType", HatType_name, HatType_value) - proto.RegisterEnum("my.test.Days", Days_name, Days_value) - proto.RegisterEnum("my.test.Request_Color", Request_Color_name, Request_Color_value) - proto.RegisterEnum("my.test.Reply_Entry_Game", Reply_Entry_Game_name, Reply_Entry_Game_value) - proto.RegisterExtension(E_ReplyExtensions_Time) - proto.RegisterExtension(E_ReplyExtensions_Carrot) - proto.RegisterExtension(E_ReplyExtensions_Donut) - proto.RegisterExtension(E_Tag) - proto.RegisterExtension(E_Donut) -} diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.proto deleted file mode 100644 index 8e709463..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/my_test/test.proto +++ /dev/null @@ -1,156 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2010 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto2"; - -// This package holds interesting messages. -package my.test; // dotted package name - -//import "imp.proto"; -import "multi/multi1.proto"; // unused import - -enum HatType { - // deliberately skipping 0 - FEDORA = 1; - FEZ = 2; -} - -// This enum represents days of the week. -enum Days { - option allow_alias = true; - - MONDAY = 1; - TUESDAY = 2; - LUNDI = 1; // same value as MONDAY -} - -// This is a message that might be sent somewhere. -message Request { - enum Color { - RED = 0; - GREEN = 1; - BLUE = 2; - } - repeated int64 key = 1; -// optional imp.ImportedMessage imported_message = 2; - optional Color hue = 3; // no default - optional HatType hat = 4 [default=FEDORA]; -// optional imp.ImportedMessage.Owner owner = 6; - optional float deadline = 7 [default=inf]; - optional group SomeGroup = 8 { - optional int32 group_field = 9; - } - - // These foreign types are in imp2.proto, - // which is publicly imported by imp.proto. -// optional imp.PubliclyImportedMessage pub = 10; -// optional imp.PubliclyImportedEnum pub_enum = 13 [default=HAIR]; - - - // This is a map field. It will generate map[int32]string. - map name_mapping = 14; - // This is a map field whose value type is a message. - map msg_mapping = 15; - - optional int32 reset = 12; - // This field should not conflict with any getters. - optional string get_key = 16; -} - -message Reply { - message Entry { - required int64 key_that_needs_1234camel_CasIng = 1; - optional int64 value = 2 [default=7]; - optional int64 _my_field_name_2 = 3; - enum Game { - FOOTBALL = 1; - TENNIS = 2; - } - } - repeated Entry found = 1; - repeated int32 compact_keys = 2 [packed=true]; - extensions 100 to max; -} - -message OtherBase { - optional string name = 1; - extensions 100 to max; -} - -message ReplyExtensions { - extend Reply { - optional double time = 101; - optional ReplyExtensions carrot = 105; - } - extend OtherBase { - optional ReplyExtensions donut = 101; - } -} - -message OtherReplyExtensions { - optional int32 key = 1; -} - -// top-level extension -extend Reply { - optional string tag = 103; - optional OtherReplyExtensions donut = 106; -// optional imp.ImportedMessage elephant = 107; // extend with message from another file. -} - -message OldReply { - // Extensions will be encoded in MessageSet wire format. - option message_set_wire_format = true; - extensions 100 to max; -} - -message Communique { - optional bool make_me_cry = 1; - - // This is a oneof, called "union". - oneof union { - int32 number = 5; - string name = 6; - bytes data = 7; - double temp_c = 8; - float height = 9; - Days today = 10; - bool maybe = 11; - sint32 delta = 12; // name will conflict with Delta below - Reply msg = 13; - group SomeGroup = 14 { - optional string member = 15; - } - } - - message Delta {} -} - diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/proto3.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/proto3.proto deleted file mode 100644 index 869b9af5..00000000 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/testdata/proto3.proto +++ /dev/null @@ -1,53 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2014 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package proto3; - -message Request { - enum Flavour { - SWEET = 0; - SOUR = 1; - UMAMI = 2; - GOPHERLICIOUS = 3; - } - string name = 1; - repeated int64 key = 2; - Flavour taste = 3; - Book book = 4; - repeated int64 unpacked = 5 [packed=false]; -} - -message Book { - string title = 1; - bytes raw_data = 2; -} diff --git a/vendor/github.com/golang/protobuf/ptypes/any_test.go b/vendor/github.com/golang/protobuf/ptypes/any_test.go deleted file mode 100644 index ed675b48..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/any_test.go +++ /dev/null @@ -1,113 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package ptypes - -import ( - "testing" - - "github.com/golang/protobuf/proto" - pb "github.com/golang/protobuf/protoc-gen-go/descriptor" - "github.com/golang/protobuf/ptypes/any" -) - -func TestMarshalUnmarshal(t *testing.T) { - orig := &any.Any{Value: []byte("test")} - - packed, err := MarshalAny(orig) - if err != nil { - t.Errorf("MarshalAny(%+v): got: _, %v exp: _, nil", orig, err) - } - - unpacked := &any.Any{} - err = UnmarshalAny(packed, unpacked) - if err != nil || !proto.Equal(unpacked, orig) { - t.Errorf("got: %v, %+v; want nil, %+v", err, unpacked, orig) - } -} - -func TestIs(t *testing.T) { - a, err := MarshalAny(&pb.FileDescriptorProto{}) - if err != nil { - t.Fatal(err) - } - if Is(a, &pb.DescriptorProto{}) { - t.Error("FileDescriptorProto is not a DescriptorProto, but Is says it is") - } - if !Is(a, &pb.FileDescriptorProto{}) { - t.Error("FileDescriptorProto is indeed a FileDescriptorProto, but Is says it is not") - } -} - -func TestIsDifferentUrlPrefixes(t *testing.T) { - m := &pb.FileDescriptorProto{} - a := &any.Any{TypeUrl: "foo/bar/" + proto.MessageName(m)} - if !Is(a, m) { - t.Errorf("message with type url %q didn't satisfy Is for type %q", a.TypeUrl, proto.MessageName(m)) - } -} - -func TestUnmarshalDynamic(t *testing.T) { - want := &pb.FileDescriptorProto{Name: proto.String("foo")} - a, err := MarshalAny(want) - if err != nil { - t.Fatal(err) - } - var got DynamicAny - if err := UnmarshalAny(a, &got); err != nil { - t.Fatal(err) - } - if !proto.Equal(got.Message, want) { - t.Errorf("invalid result from UnmarshalAny, got %q want %q", got.Message, want) - } -} - -func TestEmpty(t *testing.T) { - want := &pb.FileDescriptorProto{} - a, err := MarshalAny(want) - if err != nil { - t.Fatal(err) - } - got, err := Empty(a) - if err != nil { - t.Fatal(err) - } - if !proto.Equal(got, want) { - t.Errorf("unequal empty message, got %q, want %q", got, want) - } - - // that's a valid type_url for a message which shouldn't be linked into this - // test binary. We want an error. - a.TypeUrl = "type.googleapis.com/google.protobuf.FieldMask" - if _, err := Empty(a); err == nil { - t.Errorf("got no error for an attempt to create a message of type %q, which shouldn't be linked in", a.TypeUrl) - } -} diff --git a/vendor/github.com/golang/protobuf/ptypes/duration_test.go b/vendor/github.com/golang/protobuf/ptypes/duration_test.go deleted file mode 100644 index e00491a3..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/duration_test.go +++ /dev/null @@ -1,121 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package ptypes - -import ( - "math" - "testing" - "time" - - "github.com/golang/protobuf/proto" - durpb "github.com/golang/protobuf/ptypes/duration" -) - -const ( - minGoSeconds = math.MinInt64 / int64(1e9) - maxGoSeconds = math.MaxInt64 / int64(1e9) -) - -var durationTests = []struct { - proto *durpb.Duration - isValid bool - inRange bool - dur time.Duration -}{ - // The zero duration. - {&durpb.Duration{Seconds: 0, Nanos: 0}, true, true, 0}, - // Some ordinary non-zero durations. - {&durpb.Duration{Seconds: 100, Nanos: 0}, true, true, 100 * time.Second}, - {&durpb.Duration{Seconds: -100, Nanos: 0}, true, true, -100 * time.Second}, - {&durpb.Duration{Seconds: 100, Nanos: 987}, true, true, 100*time.Second + 987}, - {&durpb.Duration{Seconds: -100, Nanos: -987}, true, true, -(100*time.Second + 987)}, - // The largest duration representable in Go. - {&durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, true, math.MaxInt64}, - // The smallest duration representable in Go. - {&durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, true, true, math.MinInt64}, - {nil, false, false, 0}, - {&durpb.Duration{Seconds: -100, Nanos: 987}, false, false, 0}, - {&durpb.Duration{Seconds: 100, Nanos: -987}, false, false, 0}, - {&durpb.Duration{Seconds: math.MinInt64, Nanos: 0}, false, false, 0}, - {&durpb.Duration{Seconds: math.MaxInt64, Nanos: 0}, false, false, 0}, - // The largest valid duration. - {&durpb.Duration{Seconds: maxSeconds, Nanos: 1e9 - 1}, true, false, 0}, - // The smallest valid duration. - {&durpb.Duration{Seconds: minSeconds, Nanos: -(1e9 - 1)}, true, false, 0}, - // The smallest invalid duration above the valid range. - {&durpb.Duration{Seconds: maxSeconds + 1, Nanos: 0}, false, false, 0}, - // The largest invalid duration below the valid range. - {&durpb.Duration{Seconds: minSeconds - 1, Nanos: -(1e9 - 1)}, false, false, 0}, - // One nanosecond past the largest duration representable in Go. - {&durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64-1e9*maxGoSeconds) + 1}, true, false, 0}, - // One nanosecond past the smallest duration representable in Go. - {&durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64-1e9*minGoSeconds) - 1}, true, false, 0}, - // One second past the largest duration representable in Go. - {&durpb.Duration{Seconds: maxGoSeconds + 1, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, false, 0}, - // One second past the smallest duration representable in Go. - {&durpb.Duration{Seconds: minGoSeconds - 1, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, true, false, 0}, -} - -func TestValidateDuration(t *testing.T) { - for _, test := range durationTests { - err := validateDuration(test.proto) - gotValid := (err == nil) - if gotValid != test.isValid { - t.Errorf("validateDuration(%v) = %t, want %t", test.proto, gotValid, test.isValid) - } - } -} - -func TestDuration(t *testing.T) { - for _, test := range durationTests { - got, err := Duration(test.proto) - gotOK := (err == nil) - wantOK := test.isValid && test.inRange - if gotOK != wantOK { - t.Errorf("Duration(%v) ok = %t, want %t", test.proto, gotOK, wantOK) - } - if err == nil && got != test.dur { - t.Errorf("Duration(%v) = %v, want %v", test.proto, got, test.dur) - } - } -} - -func TestDurationProto(t *testing.T) { - for _, test := range durationTests { - if test.isValid && test.inRange { - got := DurationProto(test.dur) - if !proto.Equal(got, test.proto) { - t.Errorf("DurationProto(%v) = %v, want %v", test.dur, got, test.proto) - } - } - } -} diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go b/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go deleted file mode 100644 index e877b72c..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go +++ /dev/null @@ -1,66 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/empty.proto - -/* -Package empty is a generated protocol buffer package. - -It is generated from these files: - google/protobuf/empty.proto - -It has these top-level messages: - Empty -*/ -package empty - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A generic empty message that you can re-use to avoid defining duplicated -// empty messages in your APIs. A typical example is to use it as the request -// or the response type of an API method. For instance: -// -// service Foo { -// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); -// } -// -// The JSON representation for `Empty` is empty JSON object `{}`. -type Empty struct { -} - -func (m *Empty) Reset() { *m = Empty{} } -func (m *Empty) String() string { return proto.CompactTextString(m) } -func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (*Empty) XXX_WellKnownType() string { return "Empty" } - -func init() { - proto.RegisterType((*Empty)(nil), "google.protobuf.Empty") -} - -func init() { proto.RegisterFile("google/protobuf/empty.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 148 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcd, 0x2d, 0x28, - 0xa9, 0xd4, 0x03, 0x73, 0x85, 0xf8, 0x21, 0x92, 0x7a, 0x30, 0x49, 0x25, 0x76, 0x2e, 0x56, 0x57, - 0x90, 0xbc, 0x53, 0x19, 0x97, 0x70, 0x72, 0x7e, 0xae, 0x1e, 0x9a, 0xbc, 0x13, 0x17, 0x58, 0x36, - 0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x52, 0x4f, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, - 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0x47, 0x58, 0x53, 0x50, 0x52, 0x59, 0x90, 0x5a, 0x0c, - 0xb1, 0xed, 0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10, - 0x13, 0x03, 0xa0, 0xea, 0xf4, 0xc2, 0x53, 0x73, 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, - 0xea, 0x93, 0xd8, 0xc0, 0x06, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x64, 0xd4, 0xb3, 0xa6, - 0xb7, 0x00, 0x00, 0x00, -} diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto b/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto deleted file mode 100644 index 03cacd23..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.proto +++ /dev/null @@ -1,52 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/empty"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "EmptyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; - -// A generic empty message that you can re-use to avoid defining duplicated -// empty messages in your APIs. A typical example is to use it as the request -// or the response type of an API method. For instance: -// -// service Foo { -// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); -// } -// -// The JSON representation for `Empty` is empty JSON object `{}`. -message Empty {} diff --git a/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go b/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go deleted file mode 100644 index 4cfe6081..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/struct/struct.pb.go +++ /dev/null @@ -1,380 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/struct.proto - -/* -Package structpb is a generated protocol buffer package. - -It is generated from these files: - google/protobuf/struct.proto - -It has these top-level messages: - Struct - Value - ListValue -*/ -package structpb - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// `NullValue` is a singleton enumeration to represent the null value for the -// `Value` type union. -// -// The JSON representation for `NullValue` is JSON `null`. -type NullValue int32 - -const ( - // Null value. - NullValue_NULL_VALUE NullValue = 0 -) - -var NullValue_name = map[int32]string{ - 0: "NULL_VALUE", -} -var NullValue_value = map[string]int32{ - "NULL_VALUE": 0, -} - -func (x NullValue) String() string { - return proto.EnumName(NullValue_name, int32(x)) -} -func (NullValue) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (NullValue) XXX_WellKnownType() string { return "NullValue" } - -// `Struct` represents a structured data value, consisting of fields -// which map to dynamically typed values. In some languages, `Struct` -// might be supported by a native representation. For example, in -// scripting languages like JS a struct is represented as an -// object. The details of that representation are described together -// with the proto support for the language. -// -// The JSON representation for `Struct` is JSON object. -type Struct struct { - // Unordered map of dynamically typed values. - Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Struct) Reset() { *m = Struct{} } -func (m *Struct) String() string { return proto.CompactTextString(m) } -func (*Struct) ProtoMessage() {} -func (*Struct) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (*Struct) XXX_WellKnownType() string { return "Struct" } - -func (m *Struct) GetFields() map[string]*Value { - if m != nil { - return m.Fields - } - return nil -} - -// `Value` represents a dynamically typed value which can be either -// null, a number, a string, a boolean, a recursive struct value, or a -// list of values. A producer of value is expected to set one of that -// variants, absence of any variant indicates an error. -// -// The JSON representation for `Value` is JSON value. -type Value struct { - // The kind of value. - // - // Types that are valid to be assigned to Kind: - // *Value_NullValue - // *Value_NumberValue - // *Value_StringValue - // *Value_BoolValue - // *Value_StructValue - // *Value_ListValue - Kind isValue_Kind `protobuf_oneof:"kind"` -} - -func (m *Value) Reset() { *m = Value{} } -func (m *Value) String() string { return proto.CompactTextString(m) } -func (*Value) ProtoMessage() {} -func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } -func (*Value) XXX_WellKnownType() string { return "Value" } - -type isValue_Kind interface { - isValue_Kind() -} - -type Value_NullValue struct { - NullValue NullValue `protobuf:"varint,1,opt,name=null_value,json=nullValue,enum=google.protobuf.NullValue,oneof"` -} -type Value_NumberValue struct { - NumberValue float64 `protobuf:"fixed64,2,opt,name=number_value,json=numberValue,oneof"` -} -type Value_StringValue struct { - StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,oneof"` -} -type Value_BoolValue struct { - BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,oneof"` -} -type Value_StructValue struct { - StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,oneof"` -} -type Value_ListValue struct { - ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,oneof"` -} - -func (*Value_NullValue) isValue_Kind() {} -func (*Value_NumberValue) isValue_Kind() {} -func (*Value_StringValue) isValue_Kind() {} -func (*Value_BoolValue) isValue_Kind() {} -func (*Value_StructValue) isValue_Kind() {} -func (*Value_ListValue) isValue_Kind() {} - -func (m *Value) GetKind() isValue_Kind { - if m != nil { - return m.Kind - } - return nil -} - -func (m *Value) GetNullValue() NullValue { - if x, ok := m.GetKind().(*Value_NullValue); ok { - return x.NullValue - } - return NullValue_NULL_VALUE -} - -func (m *Value) GetNumberValue() float64 { - if x, ok := m.GetKind().(*Value_NumberValue); ok { - return x.NumberValue - } - return 0 -} - -func (m *Value) GetStringValue() string { - if x, ok := m.GetKind().(*Value_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *Value) GetBoolValue() bool { - if x, ok := m.GetKind().(*Value_BoolValue); ok { - return x.BoolValue - } - return false -} - -func (m *Value) GetStructValue() *Struct { - if x, ok := m.GetKind().(*Value_StructValue); ok { - return x.StructValue - } - return nil -} - -func (m *Value) GetListValue() *ListValue { - if x, ok := m.GetKind().(*Value_ListValue); ok { - return x.ListValue - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Value) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Value_OneofMarshaler, _Value_OneofUnmarshaler, _Value_OneofSizer, []interface{}{ - (*Value_NullValue)(nil), - (*Value_NumberValue)(nil), - (*Value_StringValue)(nil), - (*Value_BoolValue)(nil), - (*Value_StructValue)(nil), - (*Value_ListValue)(nil), - } -} - -func _Value_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Value) - // kind - switch x := m.Kind.(type) { - case *Value_NullValue: - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.NullValue)) - case *Value_NumberValue: - b.EncodeVarint(2<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.NumberValue)) - case *Value_StringValue: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *Value_BoolValue: - t := uint64(0) - if x.BoolValue { - t = 1 - } - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Value_StructValue: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StructValue); err != nil { - return err - } - case *Value_ListValue: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ListValue); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Value.Kind has unexpected type %T", x) - } - return nil -} - -func _Value_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Value) - switch tag { - case 1: // kind.null_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Kind = &Value_NullValue{NullValue(x)} - return true, err - case 2: // kind.number_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Kind = &Value_NumberValue{math.Float64frombits(x)} - return true, err - case 3: // kind.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Kind = &Value_StringValue{x} - return true, err - case 4: // kind.bool_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Kind = &Value_BoolValue{x != 0} - return true, err - case 5: // kind.struct_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Struct) - err := b.DecodeMessage(msg) - m.Kind = &Value_StructValue{msg} - return true, err - case 6: // kind.list_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ListValue) - err := b.DecodeMessage(msg) - m.Kind = &Value_ListValue{msg} - return true, err - default: - return false, nil - } -} - -func _Value_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Value) - // kind - switch x := m.Kind.(type) { - case *Value_NullValue: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.NullValue)) - case *Value_NumberValue: - n += proto.SizeVarint(2<<3 | proto.WireFixed64) - n += 8 - case *Value_StringValue: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *Value_BoolValue: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += 1 - case *Value_StructValue: - s := proto.Size(x.StructValue) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_ListValue: - s := proto.Size(x.ListValue) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// `ListValue` is a wrapper around a repeated field of values. -// -// The JSON representation for `ListValue` is JSON array. -type ListValue struct { - // Repeated field of dynamically typed values. - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` -} - -func (m *ListValue) Reset() { *m = ListValue{} } -func (m *ListValue) String() string { return proto.CompactTextString(m) } -func (*ListValue) ProtoMessage() {} -func (*ListValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } -func (*ListValue) XXX_WellKnownType() string { return "ListValue" } - -func (m *ListValue) GetValues() []*Value { - if m != nil { - return m.Values - } - return nil -} - -func init() { - proto.RegisterType((*Struct)(nil), "google.protobuf.Struct") - proto.RegisterType((*Value)(nil), "google.protobuf.Value") - proto.RegisterType((*ListValue)(nil), "google.protobuf.ListValue") - proto.RegisterEnum("google.protobuf.NullValue", NullValue_name, NullValue_value) -} - -func init() { proto.RegisterFile("google/protobuf/struct.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x8b, 0xd3, 0x40, - 0x14, 0xc7, 0x3b, 0xc9, 0x36, 0x98, 0x17, 0x59, 0x97, 0x11, 0xb4, 0xac, 0xa2, 0xa1, 0x7b, 0x09, - 0x22, 0x29, 0xd6, 0x8b, 0x18, 0x2f, 0x06, 0xd6, 0x5d, 0x30, 0x2c, 0x31, 0xba, 0x15, 0xbc, 0x94, - 0x26, 0x4d, 0x63, 0xe8, 0x74, 0x26, 0x24, 0x33, 0x4a, 0x8f, 0x7e, 0x0b, 0xcf, 0x1e, 0x3d, 0xfa, - 0xe9, 0x3c, 0xca, 0xcc, 0x24, 0xa9, 0xb4, 0xf4, 0x94, 0xbc, 0xf7, 0x7e, 0xef, 0x3f, 0xef, 0xff, - 0x66, 0xe0, 0x71, 0xc1, 0x58, 0x41, 0xf2, 0x49, 0x55, 0x33, 0xce, 0x52, 0xb1, 0x9a, 0x34, 0xbc, - 0x16, 0x19, 0xf7, 0x55, 0x8c, 0xef, 0xe9, 0xaa, 0xdf, 0x55, 0xc7, 0x3f, 0x11, 0x58, 0x1f, 0x15, - 0x81, 0x03, 0xb0, 0x56, 0x65, 0x4e, 0x96, 0xcd, 0x08, 0xb9, 0xa6, 0xe7, 0x4c, 0x2f, 0xfc, 0x3d, - 0xd8, 0xd7, 0xa0, 0xff, 0x4e, 0x51, 0x97, 0x94, 0xd7, 0xdb, 0xa4, 0x6d, 0x39, 0xff, 0x00, 0xce, - 0x7f, 0x69, 0x7c, 0x06, 0xe6, 0x3a, 0xdf, 0x8e, 0x90, 0x8b, 0x3c, 0x3b, 0x91, 0xbf, 0xf8, 0x39, - 0x0c, 0xbf, 0x2d, 0x88, 0xc8, 0x47, 0x86, 0x8b, 0x3c, 0x67, 0xfa, 0xe0, 0x40, 0x7c, 0x26, 0xab, - 0x89, 0x86, 0x5e, 0x1b, 0xaf, 0xd0, 0xf8, 0x8f, 0x01, 0x43, 0x95, 0xc4, 0x01, 0x00, 0x15, 0x84, - 0xcc, 0xb5, 0x80, 0x14, 0x3d, 0x9d, 0x9e, 0x1f, 0x08, 0xdc, 0x08, 0x42, 0x14, 0x7f, 0x3d, 0x48, - 0x6c, 0xda, 0x05, 0xf8, 0x02, 0xee, 0x52, 0xb1, 0x49, 0xf3, 0x7a, 0xbe, 0x3b, 0x1f, 0x5d, 0x0f, - 0x12, 0x47, 0x67, 0x7b, 0xa8, 0xe1, 0x75, 0x49, 0x8b, 0x16, 0x32, 0xe5, 0xe0, 0x12, 0xd2, 0x59, - 0x0d, 0x3d, 0x05, 0x48, 0x19, 0xeb, 0xc6, 0x38, 0x71, 0x91, 0x77, 0x47, 0x1e, 0x25, 0x73, 0x1a, - 0x78, 0xa3, 0x54, 0x44, 0xc6, 0x5b, 0x64, 0xa8, 0xac, 0x3e, 0x3c, 0xb2, 0xc7, 0x56, 0x5e, 0x64, - 0xbc, 0x77, 0x49, 0xca, 0xa6, 0xeb, 0xb5, 0x54, 0xef, 0xa1, 0xcb, 0xa8, 0x6c, 0x78, 0xef, 0x92, - 0x74, 0x41, 0x68, 0xc1, 0xc9, 0xba, 0xa4, 0xcb, 0x71, 0x00, 0x76, 0x4f, 0x60, 0x1f, 0x2c, 0x25, - 0xd6, 0xdd, 0xe8, 0xb1, 0xa5, 0xb7, 0xd4, 0xb3, 0x47, 0x60, 0xf7, 0x4b, 0xc4, 0xa7, 0x00, 0x37, - 0xb7, 0x51, 0x34, 0x9f, 0xbd, 0x8d, 0x6e, 0x2f, 0xcf, 0x06, 0xe1, 0x0f, 0x04, 0xf7, 0x33, 0xb6, - 0xd9, 0x97, 0x08, 0x1d, 0xed, 0x26, 0x96, 0x71, 0x8c, 0xbe, 0xbc, 0x28, 0x4a, 0xfe, 0x55, 0xa4, - 0x7e, 0xc6, 0x36, 0x93, 0x82, 0x91, 0x05, 0x2d, 0x76, 0x4f, 0xb1, 0xe2, 0xdb, 0x2a, 0x6f, 0xda, - 0x17, 0x19, 0xe8, 0x4f, 0x95, 0xfe, 0x45, 0xe8, 0x97, 0x61, 0x5e, 0xc5, 0xe1, 0x6f, 0xe3, 0xc9, - 0x95, 0x16, 0x8f, 0xbb, 0xf9, 0x3e, 0xe7, 0x84, 0xbc, 0xa7, 0xec, 0x3b, 0xfd, 0x24, 0x3b, 0x53, - 0x4b, 0x49, 0xbd, 0xfc, 0x17, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x1b, 0x59, 0xf8, 0xe5, 0x02, 0x00, - 0x00, -} diff --git a/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto b/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto deleted file mode 100644 index 7d7808e7..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/struct/struct.proto +++ /dev/null @@ -1,96 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/struct;structpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "StructProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - - -// `Struct` represents a structured data value, consisting of fields -// which map to dynamically typed values. In some languages, `Struct` -// might be supported by a native representation. For example, in -// scripting languages like JS a struct is represented as an -// object. The details of that representation are described together -// with the proto support for the language. -// -// The JSON representation for `Struct` is JSON object. -message Struct { - // Unordered map of dynamically typed values. - map fields = 1; -} - -// `Value` represents a dynamically typed value which can be either -// null, a number, a string, a boolean, a recursive struct value, or a -// list of values. A producer of value is expected to set one of that -// variants, absence of any variant indicates an error. -// -// The JSON representation for `Value` is JSON value. -message Value { - // The kind of value. - oneof kind { - // Represents a null value. - NullValue null_value = 1; - // Represents a double value. - double number_value = 2; - // Represents a string value. - string string_value = 3; - // Represents a boolean value. - bool bool_value = 4; - // Represents a structured value. - Struct struct_value = 5; - // Represents a repeated `Value`. - ListValue list_value = 6; - } -} - -// `NullValue` is a singleton enumeration to represent the null value for the -// `Value` type union. -// -// The JSON representation for `NullValue` is JSON `null`. -enum NullValue { - // Null value. - NULL_VALUE = 0; -} - -// `ListValue` is a wrapper around a repeated field of values. -// -// The JSON representation for `ListValue` is JSON array. -message ListValue { - // Repeated field of dynamically typed values. - repeated Value values = 1; -} diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp_test.go b/vendor/github.com/golang/protobuf/ptypes/timestamp_test.go deleted file mode 100644 index 6e3c969b..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp_test.go +++ /dev/null @@ -1,153 +0,0 @@ -// Go support for Protocol Buffers - Google's data interchange format -// -// Copyright 2016 The Go Authors. All rights reserved. -// https://github.com/golang/protobuf -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -package ptypes - -import ( - "math" - "testing" - "time" - - "github.com/golang/protobuf/proto" - tspb "github.com/golang/protobuf/ptypes/timestamp" -) - -var tests = []struct { - ts *tspb.Timestamp - valid bool - t time.Time -}{ - // The timestamp representing the Unix epoch date. - {&tspb.Timestamp{Seconds: 0, Nanos: 0}, true, utcDate(1970, 1, 1)}, - // The smallest representable timestamp. - {&tspb.Timestamp{Seconds: math.MinInt64, Nanos: math.MinInt32}, false, - time.Unix(math.MinInt64, math.MinInt32).UTC()}, - // The smallest representable timestamp with non-negative nanos. - {&tspb.Timestamp{Seconds: math.MinInt64, Nanos: 0}, false, time.Unix(math.MinInt64, 0).UTC()}, - // The earliest valid timestamp. - {&tspb.Timestamp{Seconds: minValidSeconds, Nanos: 0}, true, utcDate(1, 1, 1)}, - //"0001-01-01T00:00:00Z"}, - // The largest representable timestamp. - {&tspb.Timestamp{Seconds: math.MaxInt64, Nanos: math.MaxInt32}, false, - time.Unix(math.MaxInt64, math.MaxInt32).UTC()}, - // The largest representable timestamp with nanos in range. - {&tspb.Timestamp{Seconds: math.MaxInt64, Nanos: 1e9 - 1}, false, - time.Unix(math.MaxInt64, 1e9-1).UTC()}, - // The largest valid timestamp. - {&tspb.Timestamp{Seconds: maxValidSeconds - 1, Nanos: 1e9 - 1}, true, - time.Date(9999, 12, 31, 23, 59, 59, 1e9-1, time.UTC)}, - // The smallest invalid timestamp that is larger than the valid range. - {&tspb.Timestamp{Seconds: maxValidSeconds, Nanos: 0}, false, time.Unix(maxValidSeconds, 0).UTC()}, - // A date before the epoch. - {&tspb.Timestamp{Seconds: -281836800, Nanos: 0}, true, utcDate(1961, 1, 26)}, - // A date after the epoch. - {&tspb.Timestamp{Seconds: 1296000000, Nanos: 0}, true, utcDate(2011, 1, 26)}, - // A date after the epoch, in the middle of the day. - {&tspb.Timestamp{Seconds: 1296012345, Nanos: 940483}, true, - time.Date(2011, 1, 26, 3, 25, 45, 940483, time.UTC)}, -} - -func TestValidateTimestamp(t *testing.T) { - for _, s := range tests { - got := validateTimestamp(s.ts) - if (got == nil) != s.valid { - t.Errorf("validateTimestamp(%v) = %v, want %v", s.ts, got, s.valid) - } - } -} - -func TestTimestamp(t *testing.T) { - for _, s := range tests { - got, err := Timestamp(s.ts) - if (err == nil) != s.valid { - t.Errorf("Timestamp(%v) error = %v, but valid = %t", s.ts, err, s.valid) - } else if s.valid && got != s.t { - t.Errorf("Timestamp(%v) = %v, want %v", s.ts, got, s.t) - } - } - // Special case: a nil Timestamp is an error, but returns the 0 Unix time. - got, err := Timestamp(nil) - want := time.Unix(0, 0).UTC() - if got != want { - t.Errorf("Timestamp(nil) = %v, want %v", got, want) - } - if err == nil { - t.Errorf("Timestamp(nil) error = nil, expected error") - } -} - -func TestTimestampProto(t *testing.T) { - for _, s := range tests { - got, err := TimestampProto(s.t) - if (err == nil) != s.valid { - t.Errorf("TimestampProto(%v) error = %v, but valid = %t", s.t, err, s.valid) - } else if s.valid && !proto.Equal(got, s.ts) { - t.Errorf("TimestampProto(%v) = %v, want %v", s.t, got, s.ts) - } - } - // No corresponding special case here: no time.Time results in a nil Timestamp. -} - -func TestTimestampString(t *testing.T) { - for _, test := range []struct { - ts *tspb.Timestamp - want string - }{ - // Not much testing needed because presumably time.Format is - // well-tested. - {&tspb.Timestamp{Seconds: 0, Nanos: 0}, "1970-01-01T00:00:00Z"}, - {&tspb.Timestamp{Seconds: minValidSeconds - 1, Nanos: 0}, "(timestamp: seconds:-62135596801 before 0001-01-01)"}, - } { - got := TimestampString(test.ts) - if got != test.want { - t.Errorf("TimestampString(%v) = %q, want %q", test.ts, got, test.want) - } - } -} - -func utcDate(year, month, day int) time.Time { - return time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC) -} - -func TestTimestampNow(t *testing.T) { - // Bracket the expected time. - before := time.Now() - ts := TimestampNow() - after := time.Now() - - tm, err := Timestamp(ts) - if err != nil { - t.Errorf("between %v and %v\nTimestampNow() = %v\nwhich is invalid (%v)", before, after, ts, err) - } - if tm.Before(before) || tm.After(after) { - t.Errorf("between %v and %v\nTimestamp(TimestampNow()) = %v", before, after, tm) - } -} diff --git a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go deleted file mode 100644 index 0ed59bf1..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go +++ /dev/null @@ -1,260 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/wrappers.proto - -/* -Package wrappers is a generated protocol buffer package. - -It is generated from these files: - google/protobuf/wrappers.proto - -It has these top-level messages: - DoubleValue - FloatValue - Int64Value - UInt64Value - Int32Value - UInt32Value - BoolValue - StringValue - BytesValue -*/ -package wrappers - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Wrapper message for `double`. -// -// The JSON representation for `DoubleValue` is JSON number. -type DoubleValue struct { - // The double value. - Value float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"` -} - -func (m *DoubleValue) Reset() { *m = DoubleValue{} } -func (m *DoubleValue) String() string { return proto.CompactTextString(m) } -func (*DoubleValue) ProtoMessage() {} -func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } -func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" } - -func (m *DoubleValue) GetValue() float64 { - if m != nil { - return m.Value - } - return 0 -} - -// Wrapper message for `float`. -// -// The JSON representation for `FloatValue` is JSON number. -type FloatValue struct { - // The float value. - Value float32 `protobuf:"fixed32,1,opt,name=value" json:"value,omitempty"` -} - -func (m *FloatValue) Reset() { *m = FloatValue{} } -func (m *FloatValue) String() string { return proto.CompactTextString(m) } -func (*FloatValue) ProtoMessage() {} -func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } -func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" } - -func (m *FloatValue) GetValue() float32 { - if m != nil { - return m.Value - } - return 0 -} - -// Wrapper message for `int64`. -// -// The JSON representation for `Int64Value` is JSON string. -type Int64Value struct { - // The int64 value. - Value int64 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"` -} - -func (m *Int64Value) Reset() { *m = Int64Value{} } -func (m *Int64Value) String() string { return proto.CompactTextString(m) } -func (*Int64Value) ProtoMessage() {} -func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } -func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" } - -func (m *Int64Value) GetValue() int64 { - if m != nil { - return m.Value - } - return 0 -} - -// Wrapper message for `uint64`. -// -// The JSON representation for `UInt64Value` is JSON string. -type UInt64Value struct { - // The uint64 value. - Value uint64 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"` -} - -func (m *UInt64Value) Reset() { *m = UInt64Value{} } -func (m *UInt64Value) String() string { return proto.CompactTextString(m) } -func (*UInt64Value) ProtoMessage() {} -func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } -func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" } - -func (m *UInt64Value) GetValue() uint64 { - if m != nil { - return m.Value - } - return 0 -} - -// Wrapper message for `int32`. -// -// The JSON representation for `Int32Value` is JSON number. -type Int32Value struct { - // The int32 value. - Value int32 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"` -} - -func (m *Int32Value) Reset() { *m = Int32Value{} } -func (m *Int32Value) String() string { return proto.CompactTextString(m) } -func (*Int32Value) ProtoMessage() {} -func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } -func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" } - -func (m *Int32Value) GetValue() int32 { - if m != nil { - return m.Value - } - return 0 -} - -// Wrapper message for `uint32`. -// -// The JSON representation for `UInt32Value` is JSON number. -type UInt32Value struct { - // The uint32 value. - Value uint32 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"` -} - -func (m *UInt32Value) Reset() { *m = UInt32Value{} } -func (m *UInt32Value) String() string { return proto.CompactTextString(m) } -func (*UInt32Value) ProtoMessage() {} -func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } -func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" } - -func (m *UInt32Value) GetValue() uint32 { - if m != nil { - return m.Value - } - return 0 -} - -// Wrapper message for `bool`. -// -// The JSON representation for `BoolValue` is JSON `true` and `false`. -type BoolValue struct { - // The bool value. - Value bool `protobuf:"varint,1,opt,name=value" json:"value,omitempty"` -} - -func (m *BoolValue) Reset() { *m = BoolValue{} } -func (m *BoolValue) String() string { return proto.CompactTextString(m) } -func (*BoolValue) ProtoMessage() {} -func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } -func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" } - -func (m *BoolValue) GetValue() bool { - if m != nil { - return m.Value - } - return false -} - -// Wrapper message for `string`. -// -// The JSON representation for `StringValue` is JSON string. -type StringValue struct { - // The string value. - Value string `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` -} - -func (m *StringValue) Reset() { *m = StringValue{} } -func (m *StringValue) String() string { return proto.CompactTextString(m) } -func (*StringValue) ProtoMessage() {} -func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } -func (*StringValue) XXX_WellKnownType() string { return "StringValue" } - -func (m *StringValue) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -// Wrapper message for `bytes`. -// -// The JSON representation for `BytesValue` is JSON string. -type BytesValue struct { - // The bytes value. - Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *BytesValue) Reset() { *m = BytesValue{} } -func (m *BytesValue) String() string { return proto.CompactTextString(m) } -func (*BytesValue) ProtoMessage() {} -func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } -func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" } - -func (m *BytesValue) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func init() { - proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue") - proto.RegisterType((*FloatValue)(nil), "google.protobuf.FloatValue") - proto.RegisterType((*Int64Value)(nil), "google.protobuf.Int64Value") - proto.RegisterType((*UInt64Value)(nil), "google.protobuf.UInt64Value") - proto.RegisterType((*Int32Value)(nil), "google.protobuf.Int32Value") - proto.RegisterType((*UInt32Value)(nil), "google.protobuf.UInt32Value") - proto.RegisterType((*BoolValue)(nil), "google.protobuf.BoolValue") - proto.RegisterType((*StringValue)(nil), "google.protobuf.StringValue") - proto.RegisterType((*BytesValue)(nil), "google.protobuf.BytesValue") -} - -func init() { proto.RegisterFile("google/protobuf/wrappers.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 259 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x2f, 0x4a, 0x2c, - 0x28, 0x48, 0x2d, 0x2a, 0xd6, 0x03, 0x8b, 0x08, 0xf1, 0x43, 0xe4, 0xf5, 0x60, 0xf2, 0x4a, 0xca, - 0x5c, 0xdc, 0x2e, 0xf9, 0xa5, 0x49, 0x39, 0xa9, 0x61, 0x89, 0x39, 0xa5, 0xa9, 0x42, 0x22, 0x5c, - 0xac, 0x65, 0x20, 0x86, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x63, 0x10, 0x84, 0xa3, 0xa4, 0xc4, 0xc5, - 0xe5, 0x96, 0x93, 0x9f, 0x58, 0x82, 0x45, 0x0d, 0x13, 0x92, 0x1a, 0xcf, 0xbc, 0x12, 0x33, 0x13, - 0x2c, 0x6a, 0x98, 0x61, 0x6a, 0x94, 0xb9, 0xb8, 0x43, 0x71, 0x29, 0x62, 0x41, 0x35, 0xc8, 0xd8, - 0x08, 0x8b, 0x1a, 0x56, 0x34, 0x83, 0xb0, 0x2a, 0xe2, 0x85, 0x29, 0x52, 0xe4, 0xe2, 0x74, 0xca, - 0xcf, 0xcf, 0xc1, 0xa2, 0x84, 0x03, 0xc9, 0x9c, 0xe0, 0x92, 0xa2, 0xcc, 0xbc, 0x74, 0x2c, 0x8a, - 0x38, 0x91, 0x1c, 0xe4, 0x54, 0x59, 0x92, 0x5a, 0x8c, 0x45, 0x0d, 0x0f, 0x54, 0x8d, 0x53, 0x0d, - 0x97, 0x70, 0x72, 0x7e, 0xae, 0x1e, 0x5a, 0xe8, 0x3a, 0xf1, 0x86, 0x43, 0x83, 0x3f, 0x00, 0x24, - 0x12, 0xc0, 0x18, 0xa5, 0x95, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x9f, - 0x9e, 0x9f, 0x93, 0x98, 0x97, 0x8e, 0x88, 0xaa, 0x82, 0x92, 0xca, 0x82, 0xd4, 0x62, 0x78, 0x8c, - 0xfd, 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0x62, 0x6e, - 0x00, 0x54, 0xa9, 0x5e, 0x78, 0x6a, 0x4e, 0x8e, 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x08, 0x48, 0x4b, - 0x12, 0x1b, 0xd8, 0x0c, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x19, 0x6c, 0xb9, 0xb8, 0xfe, - 0x01, 0x00, 0x00, -} diff --git a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto b/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto deleted file mode 100644 index 01947639..00000000 --- a/vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.proto +++ /dev/null @@ -1,118 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Wrappers for primitive (non-message) types. These types are useful -// for embedding primitives in the `google.protobuf.Any` type and for places -// where we need to distinguish between the absence of a primitive -// typed field and its default value. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/wrappers"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "WrappersProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// Wrapper message for `double`. -// -// The JSON representation for `DoubleValue` is JSON number. -message DoubleValue { - // The double value. - double value = 1; -} - -// Wrapper message for `float`. -// -// The JSON representation for `FloatValue` is JSON number. -message FloatValue { - // The float value. - float value = 1; -} - -// Wrapper message for `int64`. -// -// The JSON representation for `Int64Value` is JSON string. -message Int64Value { - // The int64 value. - int64 value = 1; -} - -// Wrapper message for `uint64`. -// -// The JSON representation for `UInt64Value` is JSON string. -message UInt64Value { - // The uint64 value. - uint64 value = 1; -} - -// Wrapper message for `int32`. -// -// The JSON representation for `Int32Value` is JSON number. -message Int32Value { - // The int32 value. - int32 value = 1; -} - -// Wrapper message for `uint32`. -// -// The JSON representation for `UInt32Value` is JSON number. -message UInt32Value { - // The uint32 value. - uint32 value = 1; -} - -// Wrapper message for `bool`. -// -// The JSON representation for `BoolValue` is JSON `true` and `false`. -message BoolValue { - // The bool value. - bool value = 1; -} - -// Wrapper message for `string`. -// -// The JSON representation for `StringValue` is JSON string. -message StringValue { - // The string value. - string value = 1; -} - -// Wrapper message for `bytes`. -// -// The JSON representation for `BytesValue` is JSON string. -message BytesValue { - // The bytes value. - bytes value = 1; -} diff --git a/vendor/github.com/onsi/ginkgo/extensions/table/table.go b/vendor/github.com/onsi/ginkgo/extensions/table/table.go deleted file mode 100644 index ae8ab7d2..00000000 --- a/vendor/github.com/onsi/ginkgo/extensions/table/table.go +++ /dev/null @@ -1,98 +0,0 @@ -/* - -Table provides a simple DSL for Ginkgo-native Table-Driven Tests - -The godoc documentation describes Table's API. More comprehensive documentation (with examples!) is available at http://onsi.github.io/ginkgo#table-driven-tests - -*/ - -package table - -import ( - "fmt" - "reflect" - - "github.com/onsi/ginkgo" -) - -/* -DescribeTable describes a table-driven test. - -For example: - - DescribeTable("a simple table", - func(x int, y int, expected bool) { - Ω(x > y).Should(Equal(expected)) - }, - Entry("x > y", 1, 0, true), - Entry("x == y", 0, 0, false), - Entry("x < y", 0, 1, false), - ) - -The first argument to `DescribeTable` is a string description. -The second argument is a function that will be run for each table entry. Your assertions go here - the function is equivalent to a Ginkgo It. -The subsequent arguments must be of type `TableEntry`. We recommend using the `Entry` convenience constructors. - -The `Entry` constructor takes a string description followed by an arbitrary set of parameters. These parameters are passed into your function. - -Under the hood, `DescribeTable` simply generates a new Ginkgo `Describe`. Each `Entry` is turned into an `It` within the `Describe`. - -It's important to understand that the `Describe`s and `It`s are generated at evaluation time (i.e. when Ginkgo constructs the tree of tests and before the tests run). - -Individual Entries can be focused (with FEntry) or marked pending (with PEntry or XEntry). In addition, the entire table can be focused or marked pending with FDescribeTable and PDescribeTable/XDescribeTable. -*/ -func DescribeTable(description string, itBody interface{}, entries ...TableEntry) bool { - describeTable(description, itBody, entries, false, false) - return true -} - -/* -You can focus a table with `FDescribeTable`. This is equivalent to `FDescribe`. -*/ -func FDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool { - describeTable(description, itBody, entries, false, true) - return true -} - -/* -You can mark a table as pending with `PDescribeTable`. This is equivalent to `PDescribe`. -*/ -func PDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool { - describeTable(description, itBody, entries, true, false) - return true -} - -/* -You can mark a table as pending with `XDescribeTable`. This is equivalent to `XDescribe`. -*/ -func XDescribeTable(description string, itBody interface{}, entries ...TableEntry) bool { - describeTable(description, itBody, entries, true, false) - return true -} - -func describeTable(description string, itBody interface{}, entries []TableEntry, pending bool, focused bool) { - itBodyValue := reflect.ValueOf(itBody) - if itBodyValue.Kind() != reflect.Func { - panic(fmt.Sprintf("DescribeTable expects a function, got %#v", itBody)) - } - - if pending { - ginkgo.PDescribe(description, func() { - for _, entry := range entries { - entry.generateIt(itBodyValue) - } - }) - } else if focused { - ginkgo.FDescribe(description, func() { - for _, entry := range entries { - entry.generateIt(itBodyValue) - } - }) - } else { - ginkgo.Describe(description, func() { - for _, entry := range entries { - entry.generateIt(itBodyValue) - } - }) - } -} diff --git a/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go b/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go deleted file mode 100644 index 5fa645bc..00000000 --- a/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go +++ /dev/null @@ -1,81 +0,0 @@ -package table - -import ( - "reflect" - - "github.com/onsi/ginkgo" -) - -/* -TableEntry represents an entry in a table test. You generally use the `Entry` constructor. -*/ -type TableEntry struct { - Description string - Parameters []interface{} - Pending bool - Focused bool -} - -func (t TableEntry) generateIt(itBody reflect.Value) { - if t.Pending { - ginkgo.PIt(t.Description) - return - } - - values := []reflect.Value{} - for i, param := range t.Parameters { - var value reflect.Value - - if param == nil { - inType := itBody.Type().In(i) - value = reflect.Zero(inType) - } else { - value = reflect.ValueOf(param) - } - - values = append(values, value) - } - - body := func() { - itBody.Call(values) - } - - if t.Focused { - ginkgo.FIt(t.Description, body) - } else { - ginkgo.It(t.Description, body) - } -} - -/* -Entry constructs a TableEntry. - -The first argument is a required description (this becomes the content of the generated Ginkgo `It`). -Subsequent parameters are saved off and sent to the callback passed in to `DescribeTable`. - -Each Entry ends up generating an individual Ginkgo It. -*/ -func Entry(description string, parameters ...interface{}) TableEntry { - return TableEntry{description, parameters, false, false} -} - -/* -You can focus a particular entry with FEntry. This is equivalent to FIt. -*/ -func FEntry(description string, parameters ...interface{}) TableEntry { - return TableEntry{description, parameters, false, true} -} - -/* -You can mark a particular entry as pending with PEntry. This is equivalent to PIt. -*/ -func PEntry(description string, parameters ...interface{}) TableEntry { - return TableEntry{description, parameters, true, false} -} - -/* -You can mark a particular entry as pending with XEntry. This is equivalent to XIt. -*/ -func XEntry(description string, parameters ...interface{}) TableEntry { - return TableEntry{description, parameters, true, false} -} diff --git a/vendor/github.com/onsi/ginkgo/extensions/table/table_suite_test.go b/vendor/github.com/onsi/ginkgo/extensions/table/table_suite_test.go deleted file mode 100644 index f482ec3d..00000000 --- a/vendor/github.com/onsi/ginkgo/extensions/table/table_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package table_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestTable(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Table Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/extensions/table/table_test.go b/vendor/github.com/onsi/ginkgo/extensions/table/table_test.go deleted file mode 100644 index b008e432..00000000 --- a/vendor/github.com/onsi/ginkgo/extensions/table/table_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package table_test - -import ( - "strings" - - . "github.com/onsi/ginkgo/extensions/table" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("Table", func() { - DescribeTable("a simple table", - func(x int, y int, expected bool) { - Ω(x > y).Should(Equal(expected)) - }, - Entry("x > y", 1, 0, true), - Entry("x == y", 0, 0, false), - Entry("x < y", 0, 1, false), - ) - - type ComplicatedThings struct { - Superstructure string - Substructure string - Count int - } - - DescribeTable("a more complicated table", - func(c ComplicatedThings) { - Ω(strings.Count(c.Superstructure, c.Substructure)).Should(BeNumerically("==", c.Count)) - }, - Entry("with no matching substructures", ComplicatedThings{ - Superstructure: "the sixth sheikh's sixth sheep's sick", - Substructure: "emir", - Count: 0, - }), - Entry("with one matching substructure", ComplicatedThings{ - Superstructure: "the sixth sheikh's sixth sheep's sick", - Substructure: "sheep", - Count: 1, - }), - Entry("with many matching substructures", ComplicatedThings{ - Superstructure: "the sixth sheikh's sixth sheep's sick", - Substructure: "si", - Count: 3, - }), - ) - - PDescribeTable("a failure", - func(value bool) { - Ω(value).Should(BeFalse()) - }, - Entry("when true", true), - Entry("when false", false), - Entry("when malformed", 2), - ) - - DescribeTable("an untyped nil as an entry", - func(x interface{}) { - Expect(x).To(BeNil()) - }, - Entry("nil", nil), - ) -}) diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/bootstrap_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/bootstrap_command.go deleted file mode 100644 index 1e209e4f..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/bootstrap_command.go +++ /dev/null @@ -1,202 +0,0 @@ -package main - -import ( - "bytes" - "flag" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strings" - "text/template" - - "go/build" - - "github.com/onsi/ginkgo/ginkgo/nodot" -) - -func BuildBootstrapCommand() *Command { - var ( - agouti, noDot, internal bool - customBootstrapFile string - ) - flagSet := flag.NewFlagSet("bootstrap", flag.ExitOnError) - flagSet.BoolVar(&agouti, "agouti", false, "If set, bootstrap will generate a bootstrap file for writing Agouti tests") - flagSet.BoolVar(&noDot, "nodot", false, "If set, bootstrap will generate a bootstrap file that does not . import ginkgo and gomega") - flagSet.BoolVar(&internal, "internal", false, "If set, generate will generate a test file that uses the regular package name") - flagSet.StringVar(&customBootstrapFile, "template", "", "If specified, generate will use the contents of the file passed as the bootstrap template") - - return &Command{ - Name: "bootstrap", - FlagSet: flagSet, - UsageCommand: "ginkgo bootstrap ", - Usage: []string{ - "Bootstrap a test suite for the current package", - "Accepts the following flags:", - }, - Command: func(args []string, additionalArgs []string) { - generateBootstrap(agouti, noDot, internal, customBootstrapFile) - }, - } -} - -var bootstrapText = `package {{.Package}} - -import ( - {{.GinkgoImport}} - {{.GomegaImport}} - - "testing" -) - -func Test{{.FormattedName}}(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "{{.FormattedName}} Suite") -} -` - -var agoutiBootstrapText = `package {{.Package}} - -import ( - {{.GinkgoImport}} - {{.GomegaImport}} - "github.com/sclevine/agouti" - - "testing" -) - -func Test{{.FormattedName}}(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "{{.FormattedName}} Suite") -} - -var agoutiDriver *agouti.WebDriver - -var _ = BeforeSuite(func() { - // Choose a WebDriver: - - agoutiDriver = agouti.PhantomJS() - // agoutiDriver = agouti.Selenium() - // agoutiDriver = agouti.ChromeDriver() - - Expect(agoutiDriver.Start()).To(Succeed()) -}) - -var _ = AfterSuite(func() { - Expect(agoutiDriver.Stop()).To(Succeed()) -}) -` - -type bootstrapData struct { - Package string - FormattedName string - GinkgoImport string - GomegaImport string -} - -func getPackageAndFormattedName() (string, string, string) { - path, err := os.Getwd() - if err != nil { - complainAndQuit("Could not get current working directory: \n" + err.Error()) - } - - dirName := strings.Replace(filepath.Base(path), "-", "_", -1) - dirName = strings.Replace(dirName, " ", "_", -1) - - pkg, err := build.ImportDir(path, 0) - packageName := pkg.Name - if err != nil { - packageName = dirName - } - - formattedName := prettifyPackageName(filepath.Base(path)) - return packageName, dirName, formattedName -} - -func prettifyPackageName(name string) string { - name = strings.Replace(name, "-", " ", -1) - name = strings.Replace(name, "_", " ", -1) - name = strings.Title(name) - name = strings.Replace(name, " ", "", -1) - return name -} - -func determinePackageName(name string, internal bool) string { - if internal { - return name - } - - return name + "_test" -} - -func fileExists(path string) bool { - _, err := os.Stat(path) - if err == nil { - return true - } - return false -} - -func generateBootstrap(agouti, noDot, internal bool, customBootstrapFile string) { - packageName, bootstrapFilePrefix, formattedName := getPackageAndFormattedName() - data := bootstrapData{ - Package: determinePackageName(packageName, internal), - FormattedName: formattedName, - GinkgoImport: `. "github.com/onsi/ginkgo"`, - GomegaImport: `. "github.com/onsi/gomega"`, - } - - if noDot { - data.GinkgoImport = `"github.com/onsi/ginkgo"` - data.GomegaImport = `"github.com/onsi/gomega"` - } - - targetFile := fmt.Sprintf("%s_suite_test.go", bootstrapFilePrefix) - if fileExists(targetFile) { - fmt.Printf("%s already exists.\n\n", targetFile) - os.Exit(1) - } else { - fmt.Printf("Generating ginkgo test suite bootstrap for %s in:\n\t%s\n", packageName, targetFile) - } - - f, err := os.Create(targetFile) - if err != nil { - complainAndQuit("Could not create file: " + err.Error()) - panic(err.Error()) - } - defer f.Close() - - var templateText string - if customBootstrapFile != "" { - tpl, err := ioutil.ReadFile(customBootstrapFile) - if err != nil { - panic(err.Error()) - } - templateText = string(tpl) - } else if agouti { - templateText = agoutiBootstrapText - } else { - templateText = bootstrapText - } - - bootstrapTemplate, err := template.New("bootstrap").Parse(templateText) - if err != nil { - panic(err.Error()) - } - - buf := &bytes.Buffer{} - bootstrapTemplate.Execute(buf, data) - - if noDot { - contents, err := nodot.ApplyNoDot(buf.Bytes()) - if err != nil { - complainAndQuit("Failed to import nodot declarations: " + err.Error()) - } - fmt.Println("To update the nodot declarations in the future, switch to this directory and run:\n\tginkgo nodot") - buf = bytes.NewBuffer(contents) - } - - buf.WriteTo(f) - - goFmt(targetFile) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/build_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/build_command.go deleted file mode 100644 index f0eb375c..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/build_command.go +++ /dev/null @@ -1,68 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "os" - "path/filepath" - - "github.com/onsi/ginkgo/ginkgo/interrupthandler" - "github.com/onsi/ginkgo/ginkgo/testrunner" -) - -func BuildBuildCommand() *Command { - commandFlags := NewBuildCommandFlags(flag.NewFlagSet("build", flag.ExitOnError)) - interruptHandler := interrupthandler.NewInterruptHandler() - builder := &SpecBuilder{ - commandFlags: commandFlags, - interruptHandler: interruptHandler, - } - - return &Command{ - Name: "build", - FlagSet: commandFlags.FlagSet, - UsageCommand: "ginkgo build ", - Usage: []string{ - "Build the passed in (or the package in the current directory if left blank).", - "Accepts the following flags:", - }, - Command: builder.BuildSpecs, - } -} - -type SpecBuilder struct { - commandFlags *RunWatchAndBuildCommandFlags - interruptHandler *interrupthandler.InterruptHandler -} - -func (r *SpecBuilder) BuildSpecs(args []string, additionalArgs []string) { - r.commandFlags.computeNodes() - - suites, _ := findSuites(args, r.commandFlags.Recurse, r.commandFlags.SkipPackage, false) - - if len(suites) == 0 { - complainAndQuit("Found no test suites") - } - - passed := true - for _, suite := range suites { - runner := testrunner.New(suite, 1, false, 0, r.commandFlags.GoOpts, nil) - fmt.Printf("Compiling %s...\n", suite.PackageName) - - path, _ := filepath.Abs(filepath.Join(suite.Path, fmt.Sprintf("%s.test", suite.PackageName))) - err := runner.CompileTo(path) - if err != nil { - fmt.Println(err.Error()) - passed = false - } else { - fmt.Printf(" compiled %s.test\n", suite.PackageName) - } - - runner.CleanUp() - } - - if passed { - os.Exit(0) - } - os.Exit(1) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/convert/ginkgo_ast_nodes.go b/vendor/github.com/onsi/ginkgo/ginkgo/convert/ginkgo_ast_nodes.go deleted file mode 100644 index 02e2b3b3..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/convert/ginkgo_ast_nodes.go +++ /dev/null @@ -1,123 +0,0 @@ -package convert - -import ( - "fmt" - "go/ast" - "strings" - "unicode" -) - -/* - * Creates a func init() node - */ -func createVarUnderscoreBlock() *ast.ValueSpec { - valueSpec := &ast.ValueSpec{} - object := &ast.Object{Kind: 4, Name: "_", Decl: valueSpec, Data: 0} - ident := &ast.Ident{Name: "_", Obj: object} - valueSpec.Names = append(valueSpec.Names, ident) - return valueSpec -} - -/* - * Creates a Describe("Testing with ginkgo", func() { }) node - */ -func createDescribeBlock() *ast.CallExpr { - blockStatement := &ast.BlockStmt{List: []ast.Stmt{}} - - fieldList := &ast.FieldList{} - funcType := &ast.FuncType{Params: fieldList} - funcLit := &ast.FuncLit{Type: funcType, Body: blockStatement} - basicLit := &ast.BasicLit{Kind: 9, Value: "\"Testing with Ginkgo\""} - describeIdent := &ast.Ident{Name: "Describe"} - return &ast.CallExpr{Fun: describeIdent, Args: []ast.Expr{basicLit, funcLit}} -} - -/* - * Convenience function to return the name of the *testing.T param - * for a Test function that will be rewritten. This is useful because - * we will want to replace the usage of this named *testing.T inside the - * body of the function with a GinktoT. - */ -func namedTestingTArg(node *ast.FuncDecl) string { - return node.Type.Params.List[0].Names[0].Name // *exhale* -} - -/* - * Convenience function to return the block statement node for a Describe statement - */ -func blockStatementFromDescribe(desc *ast.CallExpr) *ast.BlockStmt { - var funcLit *ast.FuncLit - var found = false - - for _, node := range desc.Args { - switch node := node.(type) { - case *ast.FuncLit: - found = true - funcLit = node - break - } - } - - if !found { - panic("Error finding ast.FuncLit inside describe statement. Somebody done goofed.") - } - - return funcLit.Body -} - -/* convenience function for creating an It("TestNameHere") - * with all the body of the test function inside the anonymous - * func passed to It() - */ -func createItStatementForTestFunc(testFunc *ast.FuncDecl) *ast.ExprStmt { - blockStatement := &ast.BlockStmt{List: testFunc.Body.List} - fieldList := &ast.FieldList{} - funcType := &ast.FuncType{Params: fieldList} - funcLit := &ast.FuncLit{Type: funcType, Body: blockStatement} - - testName := rewriteTestName(testFunc.Name.Name) - basicLit := &ast.BasicLit{Kind: 9, Value: fmt.Sprintf("\"%s\"", testName)} - itBlockIdent := &ast.Ident{Name: "It"} - callExpr := &ast.CallExpr{Fun: itBlockIdent, Args: []ast.Expr{basicLit, funcLit}} - return &ast.ExprStmt{X: callExpr} -} - -/* -* rewrite test names to be human readable -* eg: rewrites "TestSomethingAmazing" as "something amazing" - */ -func rewriteTestName(testName string) string { - nameComponents := []string{} - currentString := "" - indexOfTest := strings.Index(testName, "Test") - if indexOfTest != 0 { - return testName - } - - testName = strings.Replace(testName, "Test", "", 1) - first, rest := testName[0], testName[1:] - testName = string(unicode.ToLower(rune(first))) + rest - - for _, rune := range testName { - if unicode.IsUpper(rune) { - nameComponents = append(nameComponents, currentString) - currentString = string(unicode.ToLower(rune)) - } else { - currentString += string(rune) - } - } - - return strings.Join(append(nameComponents, currentString), " ") -} - -func newGinkgoTFromIdent(ident *ast.Ident) *ast.CallExpr { - return &ast.CallExpr{ - Lparen: ident.NamePos + 1, - Rparen: ident.NamePos + 2, - Fun: &ast.Ident{Name: "GinkgoT"}, - } -} - -func newGinkgoTInterface() *ast.Ident { - return &ast.Ident{Name: "GinkgoTInterface"} -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/convert/import.go b/vendor/github.com/onsi/ginkgo/ginkgo/convert/import.go deleted file mode 100644 index e226196f..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/convert/import.go +++ /dev/null @@ -1,91 +0,0 @@ -package convert - -import ( - "errors" - "fmt" - "go/ast" -) - -/* - * Given the root node of an AST, returns the node containing the - * import statements for the file. - */ -func importsForRootNode(rootNode *ast.File) (imports *ast.GenDecl, err error) { - for _, declaration := range rootNode.Decls { - decl, ok := declaration.(*ast.GenDecl) - if !ok || len(decl.Specs) == 0 { - continue - } - - _, ok = decl.Specs[0].(*ast.ImportSpec) - if ok { - imports = decl - return - } - } - - err = errors.New(fmt.Sprintf("Could not find imports for root node:\n\t%#v\n", rootNode)) - return -} - -/* - * Removes "testing" import, if present - */ -func removeTestingImport(rootNode *ast.File) { - importDecl, err := importsForRootNode(rootNode) - if err != nil { - panic(err.Error()) - } - - var index int - for i, importSpec := range importDecl.Specs { - importSpec := importSpec.(*ast.ImportSpec) - if importSpec.Path.Value == "\"testing\"" { - index = i - break - } - } - - importDecl.Specs = append(importDecl.Specs[:index], importDecl.Specs[index+1:]...) -} - -/* - * Adds import statements for onsi/ginkgo, if missing - */ -func addGinkgoImports(rootNode *ast.File) { - importDecl, err := importsForRootNode(rootNode) - if err != nil { - panic(err.Error()) - } - - if len(importDecl.Specs) == 0 { - // TODO: might need to create a import decl here - panic("unimplemented : expected to find an imports block") - } - - needsGinkgo := true - for _, importSpec := range importDecl.Specs { - importSpec, ok := importSpec.(*ast.ImportSpec) - if !ok { - continue - } - - if importSpec.Path.Value == "\"github.com/onsi/ginkgo\"" { - needsGinkgo = false - } - } - - if needsGinkgo { - importDecl.Specs = append(importDecl.Specs, createImport(".", "\"github.com/onsi/ginkgo\"")) - } -} - -/* - * convenience function to create an import statement - */ -func createImport(name, path string) *ast.ImportSpec { - return &ast.ImportSpec{ - Name: &ast.Ident{Name: name}, - Path: &ast.BasicLit{Kind: 9, Value: path}, - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/convert/package_rewriter.go b/vendor/github.com/onsi/ginkgo/ginkgo/convert/package_rewriter.go deleted file mode 100644 index ed09c460..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/convert/package_rewriter.go +++ /dev/null @@ -1,127 +0,0 @@ -package convert - -import ( - "fmt" - "go/build" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "regexp" -) - -/* - * RewritePackage takes a name (eg: my-package/tools), finds its test files using - * Go's build package, and then rewrites them. A ginkgo test suite file will - * also be added for this package, and all of its child packages. - */ -func RewritePackage(packageName string) { - pkg, err := packageWithName(packageName) - if err != nil { - panic(fmt.Sprintf("unexpected error reading package: '%s'\n%s\n", packageName, err.Error())) - } - - for _, filename := range findTestsInPackage(pkg) { - rewriteTestsInFile(filename) - } - return -} - -/* - * Given a package, findTestsInPackage reads the test files in the directory, - * and then recurses on each child package, returning a slice of all test files - * found in this process. - */ -func findTestsInPackage(pkg *build.Package) (testfiles []string) { - for _, file := range append(pkg.TestGoFiles, pkg.XTestGoFiles...) { - testfiles = append(testfiles, filepath.Join(pkg.Dir, file)) - } - - dirFiles, err := ioutil.ReadDir(pkg.Dir) - if err != nil { - panic(fmt.Sprintf("unexpected error reading dir: '%s'\n%s\n", pkg.Dir, err.Error())) - } - - re := regexp.MustCompile(`^[._]`) - - for _, file := range dirFiles { - if !file.IsDir() { - continue - } - - if re.Match([]byte(file.Name())) { - continue - } - - packageName := filepath.Join(pkg.ImportPath, file.Name()) - subPackage, err := packageWithName(packageName) - if err != nil { - panic(fmt.Sprintf("unexpected error reading package: '%s'\n%s\n", packageName, err.Error())) - } - - testfiles = append(testfiles, findTestsInPackage(subPackage)...) - } - - addGinkgoSuiteForPackage(pkg) - goFmtPackage(pkg) - return -} - -/* - * Shells out to `ginkgo bootstrap` to create a test suite file - */ -func addGinkgoSuiteForPackage(pkg *build.Package) { - originalDir, err := os.Getwd() - if err != nil { - panic(err) - } - - suite_test_file := filepath.Join(pkg.Dir, pkg.Name+"_suite_test.go") - - _, err = os.Stat(suite_test_file) - if err == nil { - return // test file already exists, this should be a no-op - } - - err = os.Chdir(pkg.Dir) - if err != nil { - panic(err) - } - - output, err := exec.Command("ginkgo", "bootstrap").Output() - - if err != nil { - panic(fmt.Sprintf("error running 'ginkgo bootstrap'.\nstdout: %s\n%s\n", output, err.Error())) - } - - err = os.Chdir(originalDir) - if err != nil { - panic(err) - } -} - -/* - * Shells out to `go fmt` to format the package - */ -func goFmtPackage(pkg *build.Package) { - output, err := exec.Command("go", "fmt", pkg.ImportPath).Output() - - if err != nil { - fmt.Printf("Warning: Error running 'go fmt %s'.\nstdout: %s\n%s\n", pkg.ImportPath, output, err.Error()) - } -} - -/* - * Attempts to return a package with its test files already read. - * The ImportMode arg to build.Import lets you specify if you want go to read the - * buildable go files inside the package, but it fails if the package has no go files - */ -func packageWithName(name string) (pkg *build.Package, err error) { - pkg, err = build.Default.Import(name, ".", build.ImportMode(0)) - if err == nil { - return - } - - pkg, err = build.Default.Import(name, ".", build.ImportMode(1)) - return -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/convert/test_finder.go b/vendor/github.com/onsi/ginkgo/ginkgo/convert/test_finder.go deleted file mode 100644 index b33595c9..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/convert/test_finder.go +++ /dev/null @@ -1,56 +0,0 @@ -package convert - -import ( - "go/ast" - "regexp" -) - -/* - * Given a root node, walks its top level statements and returns - * points to function nodes to rewrite as It statements. - * These functions, according to Go testing convention, must be named - * TestWithCamelCasedName and receive a single *testing.T argument. - */ -func findTestFuncs(rootNode *ast.File) (testsToRewrite []*ast.FuncDecl) { - testNameRegexp := regexp.MustCompile("^Test[0-9A-Z].+") - - ast.Inspect(rootNode, func(node ast.Node) bool { - if node == nil { - return false - } - - switch node := node.(type) { - case *ast.FuncDecl: - matches := testNameRegexp.MatchString(node.Name.Name) - - if matches && receivesTestingT(node) { - testsToRewrite = append(testsToRewrite, node) - } - } - - return true - }) - - return -} - -/* - * convenience function that looks at args to a function and determines if its - * params include an argument of type *testing.T - */ -func receivesTestingT(node *ast.FuncDecl) bool { - if len(node.Type.Params.List) != 1 { - return false - } - - base, ok := node.Type.Params.List[0].Type.(*ast.StarExpr) - if !ok { - return false - } - - intermediate := base.X.(*ast.SelectorExpr) - isTestingPackage := intermediate.X.(*ast.Ident).Name == "testing" - isTestingT := intermediate.Sel.Name == "T" - - return isTestingPackage && isTestingT -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/convert/testfile_rewriter.go b/vendor/github.com/onsi/ginkgo/ginkgo/convert/testfile_rewriter.go deleted file mode 100644 index 4b001a7d..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/convert/testfile_rewriter.go +++ /dev/null @@ -1,163 +0,0 @@ -package convert - -import ( - "bytes" - "fmt" - "go/ast" - "go/format" - "go/parser" - "go/token" - "io/ioutil" - "os" -) - -/* - * Given a file path, rewrites any tests in the Ginkgo format. - * First, we parse the AST, and update the imports declaration. - * Then, we walk the first child elements in the file, returning tests to rewrite. - * A top level init func is declared, with a single Describe func inside. - * Then the test functions to rewrite are inserted as It statements inside the Describe. - * Finally we walk the rest of the file, replacing other usages of *testing.T - * Once that is complete, we write the AST back out again to its file. - */ -func rewriteTestsInFile(pathToFile string) { - fileSet := token.NewFileSet() - rootNode, err := parser.ParseFile(fileSet, pathToFile, nil, 0) - if err != nil { - panic(fmt.Sprintf("Error parsing test file '%s':\n%s\n", pathToFile, err.Error())) - } - - addGinkgoImports(rootNode) - removeTestingImport(rootNode) - - varUnderscoreBlock := createVarUnderscoreBlock() - describeBlock := createDescribeBlock() - varUnderscoreBlock.Values = []ast.Expr{describeBlock} - - for _, testFunc := range findTestFuncs(rootNode) { - rewriteTestFuncAsItStatement(testFunc, rootNode, describeBlock) - } - - underscoreDecl := &ast.GenDecl{ - Tok: 85, // gah, magick numbers are needed to make this work - TokPos: 14, // this tricks Go into writing "var _ = Describe" - Specs: []ast.Spec{varUnderscoreBlock}, - } - - imports := rootNode.Decls[0] - tail := rootNode.Decls[1:] - rootNode.Decls = append(append([]ast.Decl{imports}, underscoreDecl), tail...) - rewriteOtherFuncsToUseGinkgoT(rootNode.Decls) - walkNodesInRootNodeReplacingTestingT(rootNode) - - var buffer bytes.Buffer - if err = format.Node(&buffer, fileSet, rootNode); err != nil { - panic(fmt.Sprintf("Error formatting ast node after rewriting tests.\n%s\n", err.Error())) - } - - fileInfo, err := os.Stat(pathToFile) - if err != nil { - panic(fmt.Sprintf("Error stat'ing file: %s\n", pathToFile)) - } - - ioutil.WriteFile(pathToFile, buffer.Bytes(), fileInfo.Mode()) - return -} - -/* - * Given a test func named TestDoesSomethingNeat, rewrites it as - * It("does something neat", func() { __test_body_here__ }) and adds it - * to the Describe's list of statements - */ -func rewriteTestFuncAsItStatement(testFunc *ast.FuncDecl, rootNode *ast.File, describe *ast.CallExpr) { - var funcIndex int = -1 - for index, child := range rootNode.Decls { - if child == testFunc { - funcIndex = index - break - } - } - - if funcIndex < 0 { - panic(fmt.Sprintf("Assert failed: Error finding index for test node %s\n", testFunc.Name.Name)) - } - - var block *ast.BlockStmt = blockStatementFromDescribe(describe) - block.List = append(block.List, createItStatementForTestFunc(testFunc)) - replaceTestingTsWithGinkgoT(block, namedTestingTArg(testFunc)) - - // remove the old test func from the root node's declarations - rootNode.Decls = append(rootNode.Decls[:funcIndex], rootNode.Decls[funcIndex+1:]...) - return -} - -/* - * walks nodes inside of a test func's statements and replaces the usage of - * it's named *testing.T param with GinkgoT's - */ -func replaceTestingTsWithGinkgoT(statementsBlock *ast.BlockStmt, testingT string) { - ast.Inspect(statementsBlock, func(node ast.Node) bool { - if node == nil { - return false - } - - keyValueExpr, ok := node.(*ast.KeyValueExpr) - if ok { - replaceNamedTestingTsInKeyValueExpression(keyValueExpr, testingT) - return true - } - - funcLiteral, ok := node.(*ast.FuncLit) - if ok { - replaceTypeDeclTestingTsInFuncLiteral(funcLiteral) - return true - } - - callExpr, ok := node.(*ast.CallExpr) - if !ok { - return true - } - replaceTestingTsInArgsLists(callExpr, testingT) - - funCall, ok := callExpr.Fun.(*ast.SelectorExpr) - if ok { - replaceTestingTsMethodCalls(funCall, testingT) - } - - return true - }) -} - -/* - * rewrite t.Fail() or any other *testing.T method by replacing with T().Fail() - * This function receives a selector expression (eg: t.Fail()) and - * the name of the *testing.T param from the function declaration. Rewrites the - * selector expression in place if the target was a *testing.T - */ -func replaceTestingTsMethodCalls(selectorExpr *ast.SelectorExpr, testingT string) { - ident, ok := selectorExpr.X.(*ast.Ident) - if !ok { - return - } - - if ident.Name == testingT { - selectorExpr.X = newGinkgoTFromIdent(ident) - } -} - -/* - * replaces usages of a named *testing.T param inside of a call expression - * with a new GinkgoT object - */ -func replaceTestingTsInArgsLists(callExpr *ast.CallExpr, testingT string) { - for index, arg := range callExpr.Args { - ident, ok := arg.(*ast.Ident) - if !ok { - continue - } - - if ident.Name == testingT { - callExpr.Args[index] = newGinkgoTFromIdent(ident) - } - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/convert/testing_t_rewriter.go b/vendor/github.com/onsi/ginkgo/ginkgo/convert/testing_t_rewriter.go deleted file mode 100644 index 418cdc4e..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/convert/testing_t_rewriter.go +++ /dev/null @@ -1,130 +0,0 @@ -package convert - -import ( - "go/ast" -) - -/* - * Rewrites any other top level funcs that receive a *testing.T param - */ -func rewriteOtherFuncsToUseGinkgoT(declarations []ast.Decl) { - for _, decl := range declarations { - decl, ok := decl.(*ast.FuncDecl) - if !ok { - continue - } - - for _, param := range decl.Type.Params.List { - starExpr, ok := param.Type.(*ast.StarExpr) - if !ok { - continue - } - - selectorExpr, ok := starExpr.X.(*ast.SelectorExpr) - if !ok { - continue - } - - xIdent, ok := selectorExpr.X.(*ast.Ident) - if !ok || xIdent.Name != "testing" { - continue - } - - if selectorExpr.Sel.Name != "T" { - continue - } - - param.Type = newGinkgoTInterface() - } - } -} - -/* - * Walks all of the nodes in the file, replacing *testing.T in struct - * and func literal nodes. eg: - * type foo struct { *testing.T } - * var bar = func(t *testing.T) { } - */ -func walkNodesInRootNodeReplacingTestingT(rootNode *ast.File) { - ast.Inspect(rootNode, func(node ast.Node) bool { - if node == nil { - return false - } - - switch node := node.(type) { - case *ast.StructType: - replaceTestingTsInStructType(node) - case *ast.FuncLit: - replaceTypeDeclTestingTsInFuncLiteral(node) - } - - return true - }) -} - -/* - * replaces named *testing.T inside a composite literal - */ -func replaceNamedTestingTsInKeyValueExpression(kve *ast.KeyValueExpr, testingT string) { - ident, ok := kve.Value.(*ast.Ident) - if !ok { - return - } - - if ident.Name == testingT { - kve.Value = newGinkgoTFromIdent(ident) - } -} - -/* - * replaces *testing.T params in a func literal with GinkgoT - */ -func replaceTypeDeclTestingTsInFuncLiteral(functionLiteral *ast.FuncLit) { - for _, arg := range functionLiteral.Type.Params.List { - starExpr, ok := arg.Type.(*ast.StarExpr) - if !ok { - continue - } - - selectorExpr, ok := starExpr.X.(*ast.SelectorExpr) - if !ok { - continue - } - - target, ok := selectorExpr.X.(*ast.Ident) - if !ok { - continue - } - - if target.Name == "testing" && selectorExpr.Sel.Name == "T" { - arg.Type = newGinkgoTInterface() - } - } -} - -/* - * Replaces *testing.T types inside of a struct declaration with a GinkgoT - * eg: type foo struct { *testing.T } - */ -func replaceTestingTsInStructType(structType *ast.StructType) { - for _, field := range structType.Fields.List { - starExpr, ok := field.Type.(*ast.StarExpr) - if !ok { - continue - } - - selectorExpr, ok := starExpr.X.(*ast.SelectorExpr) - if !ok { - continue - } - - xIdent, ok := selectorExpr.X.(*ast.Ident) - if !ok { - continue - } - - if xIdent.Name == "testing" && selectorExpr.Sel.Name == "T" { - field.Type = newGinkgoTInterface() - } - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/convert_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/convert_command.go deleted file mode 100644 index 89e60d39..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/convert_command.go +++ /dev/null @@ -1,44 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "github.com/onsi/ginkgo/ginkgo/convert" - "os" -) - -func BuildConvertCommand() *Command { - return &Command{ - Name: "convert", - FlagSet: flag.NewFlagSet("convert", flag.ExitOnError), - UsageCommand: "ginkgo convert /path/to/package", - Usage: []string{ - "Convert the package at the passed in path from an XUnit-style test to a Ginkgo-style test", - }, - Command: convertPackage, - } -} - -func convertPackage(args []string, additionalArgs []string) { - if len(args) != 1 { - println(fmt.Sprintf("usage: ginkgo convert /path/to/your/package")) - os.Exit(1) - } - - defer func() { - err := recover() - if err != nil { - switch err := err.(type) { - case error: - println(err.Error()) - case string: - println(err) - default: - println(fmt.Sprintf("unexpected error: %#v", err)) - } - os.Exit(1) - } - }() - - convert.RewritePackage(args[0]) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/generate_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/generate_command.go deleted file mode 100644 index 3b9405aa..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/generate_command.go +++ /dev/null @@ -1,167 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "os" - "path/filepath" - "strings" - "text/template" -) - -func BuildGenerateCommand() *Command { - var agouti, noDot, internal bool - flagSet := flag.NewFlagSet("generate", flag.ExitOnError) - flagSet.BoolVar(&agouti, "agouti", false, "If set, generate will generate a test file for writing Agouti tests") - flagSet.BoolVar(&noDot, "nodot", false, "If set, generate will generate a test file that does not . import ginkgo and gomega") - flagSet.BoolVar(&internal, "internal", false, "If set, generate will generate a test file that uses the regular package name") - - return &Command{ - Name: "generate", - FlagSet: flagSet, - UsageCommand: "ginkgo generate ", - Usage: []string{ - "Generate a test file named filename_test.go", - "If the optional argument is omitted, a file named after the package in the current directory will be created.", - "Accepts the following flags:", - }, - Command: func(args []string, additionalArgs []string) { - generateSpec(args, agouti, noDot, internal) - }, - } -} - -var specText = `package {{.Package}} - -import ( - {{if .DotImportPackage}}. "{{.PackageImportPath}}"{{end}} - - {{if .IncludeImports}}. "github.com/onsi/ginkgo"{{end}} - {{if .IncludeImports}}. "github.com/onsi/gomega"{{end}} -) - -var _ = Describe("{{.Subject}}", func() { - -}) -` - -var agoutiSpecText = `package {{.Package}}_test - -import ( - {{if .DotImportPackage}}. "{{.PackageImportPath}}"{{end}} - - {{if .IncludeImports}}. "github.com/onsi/ginkgo"{{end}} - {{if .IncludeImports}}. "github.com/onsi/gomega"{{end}} - . "github.com/sclevine/agouti/matchers" - "github.com/sclevine/agouti" -) - -var _ = Describe("{{.Subject}}", func() { - var page *agouti.Page - - BeforeEach(func() { - var err error - page, err = agoutiDriver.NewPage() - Expect(err).NotTo(HaveOccurred()) - }) - - AfterEach(func() { - Expect(page.Destroy()).To(Succeed()) - }) -}) -` - -type specData struct { - Package string - Subject string - PackageImportPath string - IncludeImports bool - DotImportPackage bool -} - -func generateSpec(args []string, agouti, noDot, internal bool) { - if len(args) == 0 { - err := generateSpecForSubject("", agouti, noDot, internal) - if err != nil { - fmt.Println(err.Error()) - fmt.Println("") - os.Exit(1) - } - fmt.Println("") - return - } - - var failed bool - for _, arg := range args { - err := generateSpecForSubject(arg, agouti, noDot, internal) - if err != nil { - failed = true - fmt.Println(err.Error()) - } - } - fmt.Println("") - if failed { - os.Exit(1) - } -} - -func generateSpecForSubject(subject string, agouti, noDot, internal bool) error { - packageName, specFilePrefix, formattedName := getPackageAndFormattedName() - if subject != "" { - subject = strings.Split(subject, ".go")[0] - subject = strings.Split(subject, "_test")[0] - specFilePrefix = subject - formattedName = prettifyPackageName(subject) - } - - data := specData{ - Package: determinePackageName(packageName, internal), - Subject: formattedName, - PackageImportPath: getPackageImportPath(), - IncludeImports: !noDot, - DotImportPackage: !internal, - } - - targetFile := fmt.Sprintf("%s_test.go", specFilePrefix) - if fileExists(targetFile) { - return fmt.Errorf("%s already exists.", targetFile) - } else { - fmt.Printf("Generating ginkgo test for %s in:\n %s\n", data.Subject, targetFile) - } - - f, err := os.Create(targetFile) - if err != nil { - return err - } - defer f.Close() - - var templateText string - if agouti { - templateText = agoutiSpecText - } else { - templateText = specText - } - - specTemplate, err := template.New("spec").Parse(templateText) - if err != nil { - return err - } - - specTemplate.Execute(f, data) - goFmt(targetFile) - return nil -} - -func getPackageImportPath() string { - workingDir, err := os.Getwd() - if err != nil { - panic(err.Error()) - } - sep := string(filepath.Separator) - paths := strings.Split(workingDir, sep+"src"+sep) - if len(paths) == 1 { - fmt.Printf("\nCouldn't identify package import path.\n\n\tginkgo generate\n\nMust be run within a package directory under $GOPATH/src/...\nYou're going to have to change UNKNOWN_PACKAGE_PATH in the generated file...\n\n") - return "UNKNOWN_PACKAGE_PATH" - } - return filepath.ToSlash(paths[len(paths)-1]) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/help_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/help_command.go deleted file mode 100644 index 23b1d2f1..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/help_command.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "flag" - "fmt" -) - -func BuildHelpCommand() *Command { - return &Command{ - Name: "help", - FlagSet: flag.NewFlagSet("help", flag.ExitOnError), - UsageCommand: "ginkgo help ", - Usage: []string{ - "Print usage information. If a command is passed in, print usage information just for that command.", - }, - Command: printHelp, - } -} - -func printHelp(args []string, additionalArgs []string) { - if len(args) == 0 { - usage() - } else { - command, found := commandMatching(args[0]) - if !found { - complainAndQuit(fmt.Sprintf("Unknown command: %s", args[0])) - } - - usageForCommand(command, true) - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/interrupt_handler.go b/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/interrupt_handler.go deleted file mode 100644 index c15db0b0..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/interrupt_handler.go +++ /dev/null @@ -1,52 +0,0 @@ -package interrupthandler - -import ( - "os" - "os/signal" - "sync" - "syscall" -) - -type InterruptHandler struct { - interruptCount int - lock *sync.Mutex - C chan bool -} - -func NewInterruptHandler() *InterruptHandler { - h := &InterruptHandler{ - lock: &sync.Mutex{}, - C: make(chan bool, 0), - } - - go h.handleInterrupt() - SwallowSigQuit() - - return h -} - -func (h *InterruptHandler) WasInterrupted() bool { - h.lock.Lock() - defer h.lock.Unlock() - - return h.interruptCount > 0 -} - -func (h *InterruptHandler) handleInterrupt() { - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt, syscall.SIGTERM) - - <-c - signal.Stop(c) - - h.lock.Lock() - h.interruptCount++ - if h.interruptCount == 1 { - close(h.C) - } else if h.interruptCount > 5 { - os.Exit(1) - } - h.lock.Unlock() - - go h.handleInterrupt() -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/sigquit_swallower_unix.go b/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/sigquit_swallower_unix.go deleted file mode 100644 index 43c18544..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/sigquit_swallower_unix.go +++ /dev/null @@ -1,14 +0,0 @@ -// +build freebsd openbsd netbsd dragonfly darwin linux solaris - -package interrupthandler - -import ( - "os" - "os/signal" - "syscall" -) - -func SwallowSigQuit() { - c := make(chan os.Signal, 1024) - signal.Notify(c, syscall.SIGQUIT) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/sigquit_swallower_windows.go b/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/sigquit_swallower_windows.go deleted file mode 100644 index 7f4a50e1..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/interrupthandler/sigquit_swallower_windows.go +++ /dev/null @@ -1,7 +0,0 @@ -// +build windows - -package interrupthandler - -func SwallowSigQuit() { - //noop -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/main.go b/vendor/github.com/onsi/ginkgo/ginkgo/main.go deleted file mode 100644 index 4a1aeef4..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/main.go +++ /dev/null @@ -1,300 +0,0 @@ -/* -The Ginkgo CLI - -The Ginkgo CLI is fully documented [here](http://onsi.github.io/ginkgo/#the_ginkgo_cli) - -You can also learn more by running: - - ginkgo help - -Here are some of the more commonly used commands: - -To install: - - go install github.com/onsi/ginkgo/ginkgo - -To run tests: - - ginkgo - -To run tests in all subdirectories: - - ginkgo -r - -To run tests in particular packages: - - ginkgo /path/to/package /path/to/another/package - -To pass arguments/flags to your tests: - - ginkgo -- - -To run tests in parallel - - ginkgo -p - -this will automatically detect the optimal number of nodes to use. Alternatively, you can specify the number of nodes with: - - ginkgo -nodes=N - -(note that you don't need to provide -p in this case). - -By default the Ginkgo CLI will spin up a server that the individual test processes send test output to. The CLI aggregates this output and then presents coherent test output, one test at a time, as each test completes. -An alternative is to have the parallel nodes run and stream interleaved output back. This useful for debugging, particularly in contexts where tests hang/fail to start. To get this interleaved output: - - ginkgo -nodes=N -stream=true - -On windows, the default value for stream is true. - -By default, when running multiple tests (with -r or a list of packages) Ginkgo will abort when a test fails. To have Ginkgo run subsequent test suites instead you can: - - ginkgo -keepGoing - -To fail if there are ginkgo tests in a directory but no test suite (missing `RunSpecs`) - - ginkgo -requireSuite - -To monitor packages and rerun tests when changes occur: - - ginkgo watch <-r> - -passing `ginkgo watch` the `-r` flag will recursively detect all test suites under the current directory and monitor them. -`watch` does not detect *new* packages. Moreover, changes in package X only rerun the tests for package X, tests for packages -that depend on X are not rerun. - -[OSX & Linux only] To receive (desktop) notifications when a test run completes: - - ginkgo -notify - -this is particularly useful with `ginkgo watch`. Notifications are currently only supported on OS X and require that you `brew install terminal-notifier` - -Sometimes (to suss out race conditions/flakey tests, for example) you want to keep running a test suite until it fails. You can do this with: - - ginkgo -untilItFails - -To bootstrap a test suite: - - ginkgo bootstrap - -To generate a test file: - - ginkgo generate - -To bootstrap/generate test files without using "." imports: - - ginkgo bootstrap --nodot - ginkgo generate --nodot - -this will explicitly export all the identifiers in Ginkgo and Gomega allowing you to rename them to avoid collisions. When you pull to the latest Ginkgo/Gomega you'll want to run - - ginkgo nodot - -to refresh this list and pull in any new identifiers. In particular, this will pull in any new Gomega matchers that get added. - -To convert an existing XUnit style test suite to a Ginkgo-style test suite: - - ginkgo convert . - -To unfocus tests: - - ginkgo unfocus - -or - - ginkgo blur - -To compile a test suite: - - ginkgo build - -will output an executable file named `package.test`. This can be run directly or by invoking - - ginkgo - -To print out Ginkgo's version: - - ginkgo version - -To get more help: - - ginkgo help -*/ -package main - -import ( - "flag" - "fmt" - "os" - "os/exec" - "strings" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/ginkgo/testsuite" -) - -const greenColor = "\x1b[32m" -const redColor = "\x1b[91m" -const defaultStyle = "\x1b[0m" -const lightGrayColor = "\x1b[37m" - -type Command struct { - Name string - AltName string - FlagSet *flag.FlagSet - Usage []string - UsageCommand string - Command func(args []string, additionalArgs []string) - SuppressFlagDocumentation bool - FlagDocSubstitute []string -} - -func (c *Command) Matches(name string) bool { - return c.Name == name || (c.AltName != "" && c.AltName == name) -} - -func (c *Command) Run(args []string, additionalArgs []string) { - c.FlagSet.Parse(args) - c.Command(c.FlagSet.Args(), additionalArgs) -} - -var DefaultCommand *Command -var Commands []*Command - -func init() { - DefaultCommand = BuildRunCommand() - Commands = append(Commands, BuildWatchCommand()) - Commands = append(Commands, BuildBuildCommand()) - Commands = append(Commands, BuildBootstrapCommand()) - Commands = append(Commands, BuildGenerateCommand()) - Commands = append(Commands, BuildNodotCommand()) - Commands = append(Commands, BuildConvertCommand()) - Commands = append(Commands, BuildUnfocusCommand()) - Commands = append(Commands, BuildVersionCommand()) - Commands = append(Commands, BuildHelpCommand()) -} - -func main() { - args := []string{} - additionalArgs := []string{} - - foundDelimiter := false - - for _, arg := range os.Args[1:] { - if !foundDelimiter { - if arg == "--" { - foundDelimiter = true - continue - } - } - - if foundDelimiter { - additionalArgs = append(additionalArgs, arg) - } else { - args = append(args, arg) - } - } - - if len(args) > 0 { - commandToRun, found := commandMatching(args[0]) - if found { - commandToRun.Run(args[1:], additionalArgs) - return - } - } - - DefaultCommand.Run(args, additionalArgs) -} - -func commandMatching(name string) (*Command, bool) { - for _, command := range Commands { - if command.Matches(name) { - return command, true - } - } - return nil, false -} - -func usage() { - fmt.Fprintf(os.Stderr, "Ginkgo Version %s\n\n", config.VERSION) - usageForCommand(DefaultCommand, false) - for _, command := range Commands { - fmt.Fprintf(os.Stderr, "\n") - usageForCommand(command, false) - } -} - -func usageForCommand(command *Command, longForm bool) { - fmt.Fprintf(os.Stderr, "%s\n%s\n", command.UsageCommand, strings.Repeat("-", len(command.UsageCommand))) - fmt.Fprintf(os.Stderr, "%s\n", strings.Join(command.Usage, "\n")) - if command.SuppressFlagDocumentation && !longForm { - fmt.Fprintf(os.Stderr, "%s\n", strings.Join(command.FlagDocSubstitute, "\n ")) - } else { - command.FlagSet.PrintDefaults() - } -} - -func complainAndQuit(complaint string) { - fmt.Fprintf(os.Stderr, "%s\nFor usage instructions:\n\tginkgo help\n", complaint) - os.Exit(1) -} - -func findSuites(args []string, recurseForAll bool, skipPackage string, allowPrecompiled bool) ([]testsuite.TestSuite, []string) { - suites := []testsuite.TestSuite{} - - if len(args) > 0 { - for _, arg := range args { - if allowPrecompiled { - suite, err := testsuite.PrecompiledTestSuite(arg) - if err == nil { - suites = append(suites, suite) - continue - } - } - recurseForSuite := recurseForAll - if strings.HasSuffix(arg, "/...") && arg != "/..." { - arg = arg[:len(arg)-4] - recurseForSuite = true - } - suites = append(suites, testsuite.SuitesInDir(arg, recurseForSuite)...) - } - } else { - suites = testsuite.SuitesInDir(".", recurseForAll) - } - - skippedPackages := []string{} - if skipPackage != "" { - skipFilters := strings.Split(skipPackage, ",") - filteredSuites := []testsuite.TestSuite{} - for _, suite := range suites { - skip := false - for _, skipFilter := range skipFilters { - if strings.Contains(suite.Path, skipFilter) { - skip = true - break - } - } - if skip { - skippedPackages = append(skippedPackages, suite.Path) - } else { - filteredSuites = append(filteredSuites, suite) - } - } - suites = filteredSuites - } - - return suites, skippedPackages -} - -func goFmt(path string) { - err := exec.Command("go", "fmt", path).Run() - if err != nil { - complainAndQuit("Could not fmt: " + err.Error()) - } -} - -func pluralizedWord(singular, plural string, count int) string { - if count == 1 { - return singular - } - return plural -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot.go b/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot.go deleted file mode 100644 index 3f7237c6..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot.go +++ /dev/null @@ -1,194 +0,0 @@ -package nodot - -import ( - "fmt" - "go/ast" - "go/build" - "go/parser" - "go/token" - "path/filepath" - "strings" -) - -func ApplyNoDot(data []byte) ([]byte, error) { - sections, err := generateNodotSections() - if err != nil { - return nil, err - } - - for _, section := range sections { - data = section.createOrUpdateIn(data) - } - - return data, nil -} - -type nodotSection struct { - name string - pkg string - declarations []string - types []string -} - -func (s nodotSection) createOrUpdateIn(data []byte) []byte { - renames := map[string]string{} - - contents := string(data) - - lines := strings.Split(contents, "\n") - - comment := "// Declarations for " + s.name - - newLines := []string{} - for _, line := range lines { - if line == comment { - continue - } - - words := strings.Split(line, " ") - lastWord := words[len(words)-1] - - if s.containsDeclarationOrType(lastWord) { - renames[lastWord] = words[1] - continue - } - - newLines = append(newLines, line) - } - - if len(newLines[len(newLines)-1]) > 0 { - newLines = append(newLines, "") - } - - newLines = append(newLines, comment) - - for _, typ := range s.types { - name, ok := renames[s.prefix(typ)] - if !ok { - name = typ - } - newLines = append(newLines, fmt.Sprintf("type %s %s", name, s.prefix(typ))) - } - - for _, decl := range s.declarations { - name, ok := renames[s.prefix(decl)] - if !ok { - name = decl - } - newLines = append(newLines, fmt.Sprintf("var %s = %s", name, s.prefix(decl))) - } - - newLines = append(newLines, "") - - newContents := strings.Join(newLines, "\n") - - return []byte(newContents) -} - -func (s nodotSection) prefix(declOrType string) string { - return s.pkg + "." + declOrType -} - -func (s nodotSection) containsDeclarationOrType(word string) bool { - for _, declaration := range s.declarations { - if s.prefix(declaration) == word { - return true - } - } - - for _, typ := range s.types { - if s.prefix(typ) == word { - return true - } - } - - return false -} - -func generateNodotSections() ([]nodotSection, error) { - sections := []nodotSection{} - - declarations, err := getExportedDeclerationsForPackage("github.com/onsi/ginkgo", "ginkgo_dsl.go", "GINKGO_VERSION", "GINKGO_PANIC") - if err != nil { - return nil, err - } - sections = append(sections, nodotSection{ - name: "Ginkgo DSL", - pkg: "ginkgo", - declarations: declarations, - types: []string{"Done", "Benchmarker"}, - }) - - declarations, err = getExportedDeclerationsForPackage("github.com/onsi/gomega", "gomega_dsl.go", "GOMEGA_VERSION") - if err != nil { - return nil, err - } - sections = append(sections, nodotSection{ - name: "Gomega DSL", - pkg: "gomega", - declarations: declarations, - }) - - declarations, err = getExportedDeclerationsForPackage("github.com/onsi/gomega", "matchers.go") - if err != nil { - return nil, err - } - sections = append(sections, nodotSection{ - name: "Gomega Matchers", - pkg: "gomega", - declarations: declarations, - }) - - return sections, nil -} - -func getExportedDeclerationsForPackage(pkgPath string, filename string, blacklist ...string) ([]string, error) { - pkg, err := build.Import(pkgPath, ".", 0) - if err != nil { - return []string{}, err - } - - declarations, err := getExportedDeclarationsForFile(filepath.Join(pkg.Dir, filename)) - if err != nil { - return []string{}, err - } - - blacklistLookup := map[string]bool{} - for _, declaration := range blacklist { - blacklistLookup[declaration] = true - } - - filteredDeclarations := []string{} - for _, declaration := range declarations { - if blacklistLookup[declaration] { - continue - } - filteredDeclarations = append(filteredDeclarations, declaration) - } - - return filteredDeclarations, nil -} - -func getExportedDeclarationsForFile(path string) ([]string, error) { - fset := token.NewFileSet() - tree, err := parser.ParseFile(fset, path, nil, 0) - if err != nil { - return []string{}, err - } - - declarations := []string{} - ast.FileExports(tree) - for _, decl := range tree.Decls { - switch x := decl.(type) { - case *ast.GenDecl: - switch s := x.Specs[0].(type) { - case *ast.ValueSpec: - declarations = append(declarations, s.Names[0].Name) - } - case *ast.FuncDecl: - declarations = append(declarations, x.Name.Name) - } - } - - return declarations, nil -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot_suite_test.go b/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot_suite_test.go deleted file mode 100644 index ca4613e6..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot_suite_test.go +++ /dev/null @@ -1,91 +0,0 @@ -package nodot_test - -import ( - "github.com/onsi/ginkgo" - "github.com/onsi/gomega" - - "testing" -) - -func TestNodot(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Nodot Suite") -} - -// Declarations for Ginkgo DSL -type Done ginkgo.Done -type Benchmarker ginkgo.Benchmarker - -var GinkgoWriter = ginkgo.GinkgoWriter -var GinkgoParallelNode = ginkgo.GinkgoParallelNode -var GinkgoT = ginkgo.GinkgoT -var CurrentGinkgoTestDescription = ginkgo.CurrentGinkgoTestDescription -var RunSpecs = ginkgo.RunSpecs -var RunSpecsWithDefaultAndCustomReporters = ginkgo.RunSpecsWithDefaultAndCustomReporters -var RunSpecsWithCustomReporters = ginkgo.RunSpecsWithCustomReporters -var Fail = ginkgo.Fail -var GinkgoRecover = ginkgo.GinkgoRecover -var Describe = ginkgo.Describe -var FDescribe = ginkgo.FDescribe -var PDescribe = ginkgo.PDescribe -var XDescribe = ginkgo.XDescribe -var Context = ginkgo.Context -var FContext = ginkgo.FContext -var PContext = ginkgo.PContext -var XContext = ginkgo.XContext -var It = ginkgo.It -var FIt = ginkgo.FIt -var PIt = ginkgo.PIt -var XIt = ginkgo.XIt -var Measure = ginkgo.Measure -var FMeasure = ginkgo.FMeasure -var PMeasure = ginkgo.PMeasure -var XMeasure = ginkgo.XMeasure -var BeforeSuite = ginkgo.BeforeSuite -var AfterSuite = ginkgo.AfterSuite -var SynchronizedBeforeSuite = ginkgo.SynchronizedBeforeSuite -var SynchronizedAfterSuite = ginkgo.SynchronizedAfterSuite -var BeforeEach = ginkgo.BeforeEach -var JustBeforeEach = ginkgo.JustBeforeEach -var AfterEach = ginkgo.AfterEach - -// Declarations for Gomega DSL -var RegisterFailHandler = gomega.RegisterFailHandler -var RegisterTestingT = gomega.RegisterTestingT -var InterceptGomegaFailures = gomega.InterceptGomegaFailures -var Ω = gomega.Ω -var Expect = gomega.Expect -var ExpectWithOffset = gomega.ExpectWithOffset -var Eventually = gomega.Eventually -var EventuallyWithOffset = gomega.EventuallyWithOffset -var Consistently = gomega.Consistently -var ConsistentlyWithOffset = gomega.ConsistentlyWithOffset -var SetDefaultEventuallyTimeout = gomega.SetDefaultEventuallyTimeout -var SetDefaultEventuallyPollingInterval = gomega.SetDefaultEventuallyPollingInterval -var SetDefaultConsistentlyDuration = gomega.SetDefaultConsistentlyDuration -var SetDefaultConsistentlyPollingInterval = gomega.SetDefaultConsistentlyPollingInterval - -// Declarations for Gomega Matchers -var Equal = gomega.Equal -var BeEquivalentTo = gomega.BeEquivalentTo -var BeNil = gomega.BeNil -var BeTrue = gomega.BeTrue -var BeFalse = gomega.BeFalse -var HaveOccurred = gomega.HaveOccurred -var MatchError = gomega.MatchError -var BeClosed = gomega.BeClosed -var Receive = gomega.Receive -var MatchRegexp = gomega.MatchRegexp -var ContainSubstring = gomega.ContainSubstring -var MatchJSON = gomega.MatchJSON -var BeEmpty = gomega.BeEmpty -var HaveLen = gomega.HaveLen -var BeZero = gomega.BeZero -var ContainElement = gomega.ContainElement -var ConsistOf = gomega.ConsistOf -var HaveKey = gomega.HaveKey -var HaveKeyWithValue = gomega.HaveKeyWithValue -var BeNumerically = gomega.BeNumerically -var BeTemporally = gomega.BeTemporally -var BeAssignableToTypeOf = gomega.BeAssignableToTypeOf -var Panic = gomega.Panic diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot_test.go b/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot_test.go deleted file mode 100644 index 37260a89..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/nodot/nodot_test.go +++ /dev/null @@ -1,81 +0,0 @@ -package nodot_test - -import ( - . "github.com/onsi/ginkgo/ginkgo/nodot" - "strings" -) - -var _ = Describe("ApplyNoDot", func() { - var result string - - apply := func(input string) string { - output, err := ApplyNoDot([]byte(input)) - Ω(err).ShouldNot(HaveOccurred()) - return string(output) - } - - Context("when no declarations have been imported yet", func() { - BeforeEach(func() { - result = apply("") - }) - - It("should add headings for the various declarations", func() { - Ω(result).Should(ContainSubstring("// Declarations for Ginkgo DSL")) - Ω(result).Should(ContainSubstring("// Declarations for Gomega DSL")) - Ω(result).Should(ContainSubstring("// Declarations for Gomega Matchers")) - }) - - It("should import Ginkgo's declarations", func() { - Ω(result).Should(ContainSubstring("var It = ginkgo.It")) - Ω(result).Should(ContainSubstring("var XDescribe = ginkgo.XDescribe")) - }) - - It("should import Ginkgo's types", func() { - Ω(result).Should(ContainSubstring("type Done ginkgo.Done")) - Ω(result).Should(ContainSubstring("type Benchmarker ginkgo.Benchmarker")) - Ω(strings.Count(result, "type ")).Should(Equal(2)) - }) - - It("should import Gomega's DSL and matchers", func() { - Ω(result).Should(ContainSubstring("var Ω = gomega.Ω")) - Ω(result).Should(ContainSubstring("var ContainSubstring = gomega.ContainSubstring")) - Ω(result).Should(ContainSubstring("var Equal = gomega.Equal")) - }) - - It("should not import blacklisted things", func() { - Ω(result).ShouldNot(ContainSubstring("GINKGO_VERSION")) - Ω(result).ShouldNot(ContainSubstring("GINKGO_PANIC")) - Ω(result).ShouldNot(ContainSubstring("GOMEGA_VERSION")) - }) - }) - - It("should be idempotent (module empty lines - go fmt can fix those for us)", func() { - first := apply("") - second := apply(first) - first = strings.Trim(first, "\n") - second = strings.Trim(second, "\n") - Ω(first).Should(Equal(second)) - }) - - It("should not mess with other things in the input", func() { - result = apply("var MyThing = SomethingThatsMine") - Ω(result).Should(ContainSubstring("var MyThing = SomethingThatsMine")) - }) - - Context("when the user has redefined a name", func() { - It("should honor the redefinition", func() { - result = apply(` -var _ = gomega.Ω -var When = ginkgo.It - `) - - Ω(result).Should(ContainSubstring("var _ = gomega.Ω")) - Ω(result).ShouldNot(ContainSubstring("var Ω = gomega.Ω")) - - Ω(result).Should(ContainSubstring("var When = ginkgo.It")) - Ω(result).ShouldNot(ContainSubstring("var It = ginkgo.It")) - - Ω(result).Should(ContainSubstring("var Context = ginkgo.Context")) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/nodot_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/nodot_command.go deleted file mode 100644 index 212235ba..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/nodot_command.go +++ /dev/null @@ -1,76 +0,0 @@ -package main - -import ( - "bufio" - "flag" - "github.com/onsi/ginkgo/ginkgo/nodot" - "io/ioutil" - "os" - "path/filepath" - "regexp" -) - -func BuildNodotCommand() *Command { - return &Command{ - Name: "nodot", - FlagSet: flag.NewFlagSet("bootstrap", flag.ExitOnError), - UsageCommand: "ginkgo nodot", - Usage: []string{ - "Update the nodot declarations in your test suite", - "Any missing declarations (from, say, a recently added matcher) will be added to your bootstrap file.", - "If you've renamed a declaration, that name will be honored and not overwritten.", - }, - Command: updateNodot, - } -} - -func updateNodot(args []string, additionalArgs []string) { - suiteFile, perm := findSuiteFile() - - data, err := ioutil.ReadFile(suiteFile) - if err != nil { - complainAndQuit("Failed to update nodot declarations: " + err.Error()) - } - - content, err := nodot.ApplyNoDot(data) - if err != nil { - complainAndQuit("Failed to update nodot declarations: " + err.Error()) - } - ioutil.WriteFile(suiteFile, content, perm) - - goFmt(suiteFile) -} - -func findSuiteFile() (string, os.FileMode) { - workingDir, err := os.Getwd() - if err != nil { - complainAndQuit("Could not find suite file for nodot: " + err.Error()) - } - - files, err := ioutil.ReadDir(workingDir) - if err != nil { - complainAndQuit("Could not find suite file for nodot: " + err.Error()) - } - - re := regexp.MustCompile(`RunSpecs\(|RunSpecsWithDefaultAndCustomReporters\(|RunSpecsWithCustomReporters\(`) - - for _, file := range files { - if file.IsDir() { - continue - } - path := filepath.Join(workingDir, file.Name()) - f, err := os.Open(path) - if err != nil { - complainAndQuit("Could not find suite file for nodot: " + err.Error()) - } - defer f.Close() - - if re.MatchReader(bufio.NewReader(f)) { - return path, file.Mode() - } - } - - complainAndQuit("Could not find a suite file for nodot: you need a bootstrap file that call's Ginkgo's RunSpecs() command.\nTry running ginkgo bootstrap first.") - - return "", 0 -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/notifications.go b/vendor/github.com/onsi/ginkgo/ginkgo/notifications.go deleted file mode 100644 index 368d61fb..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/notifications.go +++ /dev/null @@ -1,141 +0,0 @@ -package main - -import ( - "fmt" - "os" - "os/exec" - "regexp" - "runtime" - "strings" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/ginkgo/testsuite" -) - -type Notifier struct { - commandFlags *RunWatchAndBuildCommandFlags -} - -func NewNotifier(commandFlags *RunWatchAndBuildCommandFlags) *Notifier { - return &Notifier{ - commandFlags: commandFlags, - } -} - -func (n *Notifier) VerifyNotificationsAreAvailable() { - if n.commandFlags.Notify { - onLinux := (runtime.GOOS == "linux") - onOSX := (runtime.GOOS == "darwin") - if onOSX { - - _, err := exec.LookPath("terminal-notifier") - if err != nil { - fmt.Printf(`--notify requires terminal-notifier, which you don't seem to have installed. - -OSX: - -To remedy this: - - brew install terminal-notifier - -To learn more about terminal-notifier: - - https://github.com/alloy/terminal-notifier -`) - os.Exit(1) - } - - } else if onLinux { - - _, err := exec.LookPath("notify-send") - if err != nil { - fmt.Printf(`--notify requires terminal-notifier or notify-send, which you don't seem to have installed. - -Linux: - -Download and install notify-send for your distribution -`) - os.Exit(1) - } - - } - } -} - -func (n *Notifier) SendSuiteCompletionNotification(suite testsuite.TestSuite, suitePassed bool) { - if suitePassed { - n.SendNotification("Ginkgo [PASS]", fmt.Sprintf(`Test suite for "%s" passed.`, suite.PackageName)) - } else { - n.SendNotification("Ginkgo [FAIL]", fmt.Sprintf(`Test suite for "%s" failed.`, suite.PackageName)) - } -} - -func (n *Notifier) SendNotification(title string, subtitle string) { - - if n.commandFlags.Notify { - onLinux := (runtime.GOOS == "linux") - onOSX := (runtime.GOOS == "darwin") - - if onOSX { - - _, err := exec.LookPath("terminal-notifier") - if err == nil { - args := []string{"-title", title, "-subtitle", subtitle, "-group", "com.onsi.ginkgo"} - terminal := os.Getenv("TERM_PROGRAM") - if terminal == "iTerm.app" { - args = append(args, "-activate", "com.googlecode.iterm2") - } else if terminal == "Apple_Terminal" { - args = append(args, "-activate", "com.apple.Terminal") - } - - exec.Command("terminal-notifier", args...).Run() - } - - } else if onLinux { - - _, err := exec.LookPath("notify-send") - if err == nil { - args := []string{"-a", "ginkgo", title, subtitle} - exec.Command("notify-send", args...).Run() - } - - } - } -} - -func (n *Notifier) RunCommand(suite testsuite.TestSuite, suitePassed bool) { - - command := n.commandFlags.AfterSuiteHook - if command != "" { - - // Allow for string replacement to pass input to the command - passed := "[FAIL]" - if suitePassed { - passed = "[PASS]" - } - command = strings.Replace(command, "(ginkgo-suite-passed)", passed, -1) - command = strings.Replace(command, "(ginkgo-suite-name)", suite.PackageName, -1) - - // Must break command into parts - splitArgs := regexp.MustCompile(`'.+'|".+"|\S+`) - parts := splitArgs.FindAllString(command, -1) - - output, err := exec.Command(parts[0], parts[1:]...).CombinedOutput() - if err != nil { - fmt.Println("Post-suite command failed:") - if config.DefaultReporterConfig.NoColor { - fmt.Printf("\t%s\n", output) - } else { - fmt.Printf("\t%s%s%s\n", redColor, string(output), defaultStyle) - } - n.SendNotification("Ginkgo [ERROR]", fmt.Sprintf(`After suite command "%s" failed`, n.commandFlags.AfterSuiteHook)) - } else { - fmt.Println("Post-suite command succeeded:") - if config.DefaultReporterConfig.NoColor { - fmt.Printf("\t%s\n", output) - } else { - fmt.Printf("\t%s%s%s\n", greenColor, string(output), defaultStyle) - } - } - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/run_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/run_command.go deleted file mode 100644 index d1483f60..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/run_command.go +++ /dev/null @@ -1,192 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "math/rand" - "os" - "time" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/ginkgo/interrupthandler" - "github.com/onsi/ginkgo/ginkgo/testrunner" - "github.com/onsi/ginkgo/types" -) - -func BuildRunCommand() *Command { - commandFlags := NewRunCommandFlags(flag.NewFlagSet("ginkgo", flag.ExitOnError)) - notifier := NewNotifier(commandFlags) - interruptHandler := interrupthandler.NewInterruptHandler() - runner := &SpecRunner{ - commandFlags: commandFlags, - notifier: notifier, - interruptHandler: interruptHandler, - suiteRunner: NewSuiteRunner(notifier, interruptHandler), - } - - return &Command{ - Name: "", - FlagSet: commandFlags.FlagSet, - UsageCommand: "ginkgo -- ", - Usage: []string{ - "Run the tests in the passed in (or the package in the current directory if left blank).", - "Any arguments after -- will be passed to the test.", - "Accepts the following flags:", - }, - Command: runner.RunSpecs, - } -} - -type SpecRunner struct { - commandFlags *RunWatchAndBuildCommandFlags - notifier *Notifier - interruptHandler *interrupthandler.InterruptHandler - suiteRunner *SuiteRunner -} - -func (r *SpecRunner) RunSpecs(args []string, additionalArgs []string) { - r.commandFlags.computeNodes() - r.notifier.VerifyNotificationsAreAvailable() - - suites, skippedPackages := findSuites(args, r.commandFlags.Recurse, r.commandFlags.SkipPackage, true) - if len(skippedPackages) > 0 { - fmt.Println("Will skip:") - for _, skippedPackage := range skippedPackages { - fmt.Println(" " + skippedPackage) - } - } - - if len(skippedPackages) > 0 && len(suites) == 0 { - fmt.Println("All tests skipped! Exiting...") - os.Exit(0) - } - - if len(suites) == 0 { - complainAndQuit("Found no test suites") - } - - r.ComputeSuccinctMode(len(suites)) - - t := time.Now() - - runners := []*testrunner.TestRunner{} - for _, suite := range suites { - runners = append(runners, testrunner.New(suite, r.commandFlags.NumCPU, r.commandFlags.ParallelStream, r.commandFlags.Timeout, r.commandFlags.GoOpts, additionalArgs)) - } - - numSuites := 0 - runResult := testrunner.PassingRunResult() - if r.commandFlags.UntilItFails { - iteration := 0 - for { - r.UpdateSeed() - randomizedRunners := r.randomizeOrder(runners) - runResult, numSuites = r.suiteRunner.RunSuites(randomizedRunners, r.commandFlags.NumCompilers, r.commandFlags.KeepGoing, nil) - iteration++ - - if r.interruptHandler.WasInterrupted() { - break - } - - if runResult.Passed { - fmt.Printf("\nAll tests passed...\nWill keep running them until they fail.\nThis was attempt #%d\n%s\n", iteration, orcMessage(iteration)) - } else { - fmt.Printf("\nTests failed on attempt #%d\n\n", iteration) - break - } - } - } else { - randomizedRunners := r.randomizeOrder(runners) - runResult, numSuites = r.suiteRunner.RunSuites(randomizedRunners, r.commandFlags.NumCompilers, r.commandFlags.KeepGoing, nil) - } - - for _, runner := range runners { - runner.CleanUp() - } - - fmt.Printf("\nGinkgo ran %d %s in %s\n", numSuites, pluralizedWord("suite", "suites", numSuites), time.Since(t)) - - if runResult.Passed { - if runResult.HasProgrammaticFocus { - fmt.Printf("Test Suite Passed\n") - fmt.Printf("Detected Programmatic Focus - setting exit status to %d\n", types.GINKGO_FOCUS_EXIT_CODE) - os.Exit(types.GINKGO_FOCUS_EXIT_CODE) - } else { - fmt.Printf("Test Suite Passed\n") - os.Exit(0) - } - } else { - fmt.Printf("Test Suite Failed\n") - os.Exit(1) - } -} - -func (r *SpecRunner) ComputeSuccinctMode(numSuites int) { - if config.DefaultReporterConfig.Verbose { - config.DefaultReporterConfig.Succinct = false - return - } - - if numSuites == 1 { - return - } - - if numSuites > 1 && !r.commandFlags.wasSet("succinct") { - config.DefaultReporterConfig.Succinct = true - } -} - -func (r *SpecRunner) UpdateSeed() { - if !r.commandFlags.wasSet("seed") { - config.GinkgoConfig.RandomSeed = time.Now().Unix() - } -} - -func (r *SpecRunner) randomizeOrder(runners []*testrunner.TestRunner) []*testrunner.TestRunner { - if !r.commandFlags.RandomizeSuites { - return runners - } - - if len(runners) <= 1 { - return runners - } - - randomizedRunners := make([]*testrunner.TestRunner, len(runners)) - randomizer := rand.New(rand.NewSource(config.GinkgoConfig.RandomSeed)) - permutation := randomizer.Perm(len(runners)) - for i, j := range permutation { - randomizedRunners[i] = runners[j] - } - return randomizedRunners -} - -func orcMessage(iteration int) string { - if iteration < 10 { - return "" - } else if iteration < 30 { - return []string{ - "If at first you succeed...", - "...try, try again.", - "Looking good!", - "Still good...", - "I think your tests are fine....", - "Yep, still passing", - "Oh boy, here I go testin' again!", - "Even the gophers are getting bored", - "Did you try -race?", - "Maybe you should stop now?", - "I'm getting tired...", - "What if I just made you a sandwich?", - "Hit ^C, hit ^C, please hit ^C", - "Make it stop. Please!", - "Come on! Enough is enough!", - "Dave, this conversation can serve no purpose anymore. Goodbye.", - "Just what do you think you're doing, Dave? ", - "I, Sisyphus", - "Insanity: doing the same thing over and over again and expecting different results. -Einstein", - "I guess Einstein never tried to churn butter", - }[iteration-10] + "\n" - } else { - return "No, seriously... you can probably stop now.\n" - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/run_watch_and_build_command_flags.go b/vendor/github.com/onsi/ginkgo/ginkgo/run_watch_and_build_command_flags.go deleted file mode 100644 index b7cb7f56..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/run_watch_and_build_command_flags.go +++ /dev/null @@ -1,167 +0,0 @@ -package main - -import ( - "flag" - "runtime" - - "time" - - "github.com/onsi/ginkgo/config" -) - -type RunWatchAndBuildCommandFlags struct { - Recurse bool - SkipPackage string - GoOpts map[string]interface{} - - //for run and watch commands - NumCPU int - NumCompilers int - ParallelStream bool - Notify bool - AfterSuiteHook string - AutoNodes bool - Timeout time.Duration - - //only for run command - KeepGoing bool - UntilItFails bool - RandomizeSuites bool - - //only for watch command - Depth int - WatchRegExp string - - FlagSet *flag.FlagSet -} - -const runMode = 1 -const watchMode = 2 -const buildMode = 3 - -func NewRunCommandFlags(flagSet *flag.FlagSet) *RunWatchAndBuildCommandFlags { - c := &RunWatchAndBuildCommandFlags{ - FlagSet: flagSet, - } - c.flags(runMode) - return c -} - -func NewWatchCommandFlags(flagSet *flag.FlagSet) *RunWatchAndBuildCommandFlags { - c := &RunWatchAndBuildCommandFlags{ - FlagSet: flagSet, - } - c.flags(watchMode) - return c -} - -func NewBuildCommandFlags(flagSet *flag.FlagSet) *RunWatchAndBuildCommandFlags { - c := &RunWatchAndBuildCommandFlags{ - FlagSet: flagSet, - } - c.flags(buildMode) - return c -} - -func (c *RunWatchAndBuildCommandFlags) wasSet(flagName string) bool { - wasSet := false - c.FlagSet.Visit(func(f *flag.Flag) { - if f.Name == flagName { - wasSet = true - } - }) - - return wasSet -} - -func (c *RunWatchAndBuildCommandFlags) computeNodes() { - if c.wasSet("nodes") { - return - } - if c.AutoNodes { - switch n := runtime.NumCPU(); { - case n <= 4: - c.NumCPU = n - default: - c.NumCPU = n - 1 - } - } -} - -func (c *RunWatchAndBuildCommandFlags) stringSlot(slot string) *string { - var opt string - c.GoOpts[slot] = &opt - return &opt -} - -func (c *RunWatchAndBuildCommandFlags) boolSlot(slot string) *bool { - var opt bool - c.GoOpts[slot] = &opt - return &opt -} - -func (c *RunWatchAndBuildCommandFlags) intSlot(slot string) *int { - var opt int - c.GoOpts[slot] = &opt - return &opt -} - -func (c *RunWatchAndBuildCommandFlags) flags(mode int) { - c.GoOpts = make(map[string]interface{}) - - onWindows := (runtime.GOOS == "windows") - - c.FlagSet.BoolVar(&(c.Recurse), "r", false, "Find and run test suites under the current directory recursively.") - c.FlagSet.BoolVar(c.boolSlot("race"), "race", false, "Run tests with race detection enabled.") - c.FlagSet.BoolVar(c.boolSlot("cover"), "cover", false, "Run tests with coverage analysis, will generate coverage profiles with the package name in the current directory.") - c.FlagSet.StringVar(c.stringSlot("coverpkg"), "coverpkg", "", "Run tests with coverage on the given external modules.") - c.FlagSet.StringVar(&(c.SkipPackage), "skipPackage", "", "A comma-separated list of package names to be skipped. If any part of the package's path matches, that package is ignored.") - c.FlagSet.StringVar(c.stringSlot("tags"), "tags", "", "A list of build tags to consider satisfied during the build.") - c.FlagSet.StringVar(c.stringSlot("gcflags"), "gcflags", "", "Arguments to pass on each go tool compile invocation.") - c.FlagSet.StringVar(c.stringSlot("covermode"), "covermode", "", "Set the mode for coverage analysis.") - c.FlagSet.BoolVar(c.boolSlot("a"), "a", false, "Force rebuilding of packages that are already up-to-date.") - c.FlagSet.BoolVar(c.boolSlot("n"), "n", false, "Have `go test` print the commands but do not run them.") - c.FlagSet.BoolVar(c.boolSlot("msan"), "msan", false, "Enable interoperation with memory sanitizer.") - c.FlagSet.BoolVar(c.boolSlot("x"), "x", false, "Have `go test` print the commands.") - c.FlagSet.BoolVar(c.boolSlot("work"), "work", false, "Print the name of the temporary work directory and do not delete it when exiting.") - c.FlagSet.StringVar(c.stringSlot("asmflags"), "asmflags", "", "Arguments to pass on each go tool asm invocation.") - c.FlagSet.StringVar(c.stringSlot("buildmode"), "buildmode", "", "Build mode to use. See 'go help buildmode' for more.") - c.FlagSet.StringVar(c.stringSlot("compiler"), "compiler", "", "Name of compiler to use, as in runtime.Compiler (gccgo or gc).") - c.FlagSet.StringVar(c.stringSlot("gccgoflags"), "gccgoflags", "", "Arguments to pass on each gccgo compiler/linker invocation.") - c.FlagSet.StringVar(c.stringSlot("installsuffix"), "installsuffix", "", "A suffix to use in the name of the package installation directory.") - c.FlagSet.StringVar(c.stringSlot("ldflags"), "ldflags", "", "Arguments to pass on each go tool link invocation.") - c.FlagSet.BoolVar(c.boolSlot("linkshared"), "linkshared", false, "Link against shared libraries previously created with -buildmode=shared.") - c.FlagSet.StringVar(c.stringSlot("pkgdir"), "pkgdir", "", "install and load all packages from the given dir instead of the usual locations.") - c.FlagSet.StringVar(c.stringSlot("toolexec"), "toolexec", "", "a program to use to invoke toolchain programs like vet and asm.") - c.FlagSet.IntVar(c.intSlot("blockprofilerate"), "blockprofilerate", 1, "Control the detail provided in goroutine blocking profiles by calling runtime.SetBlockProfileRate with the given value.") - c.FlagSet.StringVar(c.stringSlot("coverprofile"), "coverprofile", "", "Write a coverage profile to the specified file after all tests have passed.") - c.FlagSet.StringVar(c.stringSlot("cpuprofile"), "cpuprofile", "", "Write a CPU profile to the specified file before exiting.") - c.FlagSet.StringVar(c.stringSlot("memprofile"), "memprofile", "", "Write a memory profile to the specified file after all tests have passed.") - c.FlagSet.IntVar(c.intSlot("memprofilerate"), "memprofilerate", 0, "Enable more precise (and expensive) memory profiles by setting runtime.MemProfileRate.") - c.FlagSet.StringVar(c.stringSlot("outputdir"), "outputdir", "", "Place output files from profiling in the specified directory.") - c.FlagSet.BoolVar(c.boolSlot("requireSuite"), "requireSuite", false, "Fail if there are ginkgo tests in a directory but no test suite (missing RunSpecs)") - - if mode == runMode || mode == watchMode { - config.Flags(c.FlagSet, "", false) - c.FlagSet.IntVar(&(c.NumCPU), "nodes", 1, "The number of parallel test nodes to run") - c.FlagSet.IntVar(&(c.NumCompilers), "compilers", 0, "The number of concurrent compilations to run (0 will autodetect)") - c.FlagSet.BoolVar(&(c.AutoNodes), "p", false, "Run in parallel with auto-detected number of nodes") - c.FlagSet.BoolVar(&(c.ParallelStream), "stream", onWindows, "stream parallel test output in real time: less coherent, but useful for debugging") - if !onWindows { - c.FlagSet.BoolVar(&(c.Notify), "notify", false, "Send desktop notifications when a test run completes") - } - c.FlagSet.StringVar(&(c.AfterSuiteHook), "afterSuiteHook", "", "Run a command when a suite test run completes") - c.FlagSet.DurationVar(&(c.Timeout), "timeout", 24*time.Hour, "Suite fails if it does not complete within the specified timeout") - } - - if mode == runMode { - c.FlagSet.BoolVar(&(c.KeepGoing), "keepGoing", false, "When true, failures from earlier test suites do not prevent later test suites from running") - c.FlagSet.BoolVar(&(c.UntilItFails), "untilItFails", false, "When true, Ginkgo will keep rerunning tests until a failure occurs") - c.FlagSet.BoolVar(&(c.RandomizeSuites), "randomizeSuites", false, "When true, Ginkgo will randomize the order in which test suites run") - } - - if mode == watchMode { - c.FlagSet.IntVar(&(c.Depth), "depth", 1, "Ginkgo will watch dependencies down to this depth in the dependency tree") - c.FlagSet.StringVar(&(c.WatchRegExp), "watchRegExp", `\.go$`, "Files matching this regular expression will be watched for changes") - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/suite_runner.go b/vendor/github.com/onsi/ginkgo/ginkgo/suite_runner.go deleted file mode 100644 index ce6c9460..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/suite_runner.go +++ /dev/null @@ -1,173 +0,0 @@ -package main - -import ( - "fmt" - "runtime" - "sync" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/ginkgo/interrupthandler" - "github.com/onsi/ginkgo/ginkgo/testrunner" - "github.com/onsi/ginkgo/ginkgo/testsuite" - colorable "github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable" -) - -type compilationInput struct { - runner *testrunner.TestRunner - result chan compilationOutput -} - -type compilationOutput struct { - runner *testrunner.TestRunner - err error -} - -type SuiteRunner struct { - notifier *Notifier - interruptHandler *interrupthandler.InterruptHandler -} - -func NewSuiteRunner(notifier *Notifier, interruptHandler *interrupthandler.InterruptHandler) *SuiteRunner { - return &SuiteRunner{ - notifier: notifier, - interruptHandler: interruptHandler, - } -} - -func (r *SuiteRunner) compileInParallel(runners []*testrunner.TestRunner, numCompilers int, willCompile func(suite testsuite.TestSuite)) chan compilationOutput { - //we return this to the consumer, it will return each runner in order as it compiles - compilationOutputs := make(chan compilationOutput, len(runners)) - - //an array of channels - the nth runner's compilation output is sent to the nth channel in this array - //we read from these channels in order to ensure we run the suites in order - orderedCompilationOutputs := []chan compilationOutput{} - for _ = range runners { - orderedCompilationOutputs = append(orderedCompilationOutputs, make(chan compilationOutput, 1)) - } - - //we're going to spin up numCompilers compilers - they're going to run concurrently and will consume this channel - //we prefill the channel then close it, this ensures we compile things in the correct order - workPool := make(chan compilationInput, len(runners)) - for i, runner := range runners { - workPool <- compilationInput{runner, orderedCompilationOutputs[i]} - } - close(workPool) - - //pick a reasonable numCompilers - if numCompilers == 0 { - numCompilers = runtime.NumCPU() - } - - //a WaitGroup to help us wait for all compilers to shut down - wg := &sync.WaitGroup{} - wg.Add(numCompilers) - - //spin up the concurrent compilers - for i := 0; i < numCompilers; i++ { - go func() { - defer wg.Done() - for input := range workPool { - if r.interruptHandler.WasInterrupted() { - return - } - - if willCompile != nil { - willCompile(input.runner.Suite) - } - - //We retry because Go sometimes steps on itself when multiple compiles happen in parallel. This is ugly, but should help resolve flakiness... - var err error - retries := 0 - for retries <= 5 { - if r.interruptHandler.WasInterrupted() { - return - } - if err = input.runner.Compile(); err == nil { - break - } - retries++ - } - - input.result <- compilationOutput{input.runner, err} - } - }() - } - - //read from the compilation output channels *in order* and send them to the caller - //close the compilationOutputs channel to tell the caller we're done - go func() { - defer close(compilationOutputs) - for _, orderedCompilationOutput := range orderedCompilationOutputs { - select { - case compilationOutput := <-orderedCompilationOutput: - compilationOutputs <- compilationOutput - case <-r.interruptHandler.C: - //interrupt detected, wait for the compilers to shut down then bail - //this ensure we clean up after ourselves as we don't leave any compilation processes running - wg.Wait() - return - } - } - }() - - return compilationOutputs -} - -func (r *SuiteRunner) RunSuites(runners []*testrunner.TestRunner, numCompilers int, keepGoing bool, willCompile func(suite testsuite.TestSuite)) (testrunner.RunResult, int) { - runResult := testrunner.PassingRunResult() - - compilationOutputs := r.compileInParallel(runners, numCompilers, willCompile) - - numSuitesThatRan := 0 - suitesThatFailed := []testsuite.TestSuite{} - for compilationOutput := range compilationOutputs { - if compilationOutput.err != nil { - fmt.Print(compilationOutput.err.Error()) - } - numSuitesThatRan++ - suiteRunResult := testrunner.FailingRunResult() - if compilationOutput.err == nil { - suiteRunResult = compilationOutput.runner.Run() - } - r.notifier.SendSuiteCompletionNotification(compilationOutput.runner.Suite, suiteRunResult.Passed) - r.notifier.RunCommand(compilationOutput.runner.Suite, suiteRunResult.Passed) - runResult = runResult.Merge(suiteRunResult) - if !suiteRunResult.Passed { - suitesThatFailed = append(suitesThatFailed, compilationOutput.runner.Suite) - if !keepGoing { - break - } - } - if numSuitesThatRan < len(runners) && !config.DefaultReporterConfig.Succinct { - fmt.Println("") - } - } - - if keepGoing && !runResult.Passed { - r.listFailedSuites(suitesThatFailed) - } - - return runResult, numSuitesThatRan -} - -func (r *SuiteRunner) listFailedSuites(suitesThatFailed []testsuite.TestSuite) { - fmt.Println("") - fmt.Println("There were failures detected in the following suites:") - - maxPackageNameLength := 0 - for _, suite := range suitesThatFailed { - if len(suite.PackageName) > maxPackageNameLength { - maxPackageNameLength = len(suite.PackageName) - } - } - - packageNameFormatter := fmt.Sprintf("%%%ds", maxPackageNameLength) - - for _, suite := range suitesThatFailed { - if config.DefaultReporterConfig.NoColor { - fmt.Printf("\t"+packageNameFormatter+" %s\n", suite.PackageName, suite.Path) - } else { - fmt.Fprintf(colorable.NewColorableStdout(), "\t%s"+packageNameFormatter+"%s %s%s%s\n", redColor, suite.PackageName, defaultStyle, lightGrayColor, suite.Path, defaultStyle) - } - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/log_writer.go b/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/log_writer.go deleted file mode 100644 index a73a6e37..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/log_writer.go +++ /dev/null @@ -1,52 +0,0 @@ -package testrunner - -import ( - "bytes" - "fmt" - "io" - "log" - "strings" - "sync" -) - -type logWriter struct { - buffer *bytes.Buffer - lock *sync.Mutex - log *log.Logger -} - -func newLogWriter(target io.Writer, node int) *logWriter { - return &logWriter{ - buffer: &bytes.Buffer{}, - lock: &sync.Mutex{}, - log: log.New(target, fmt.Sprintf("[%d] ", node), 0), - } -} - -func (w *logWriter) Write(data []byte) (n int, err error) { - w.lock.Lock() - defer w.lock.Unlock() - - w.buffer.Write(data) - contents := w.buffer.String() - - lines := strings.Split(contents, "\n") - for _, line := range lines[0 : len(lines)-1] { - w.log.Println(line) - } - - w.buffer.Reset() - w.buffer.Write([]byte(lines[len(lines)-1])) - return len(data), nil -} - -func (w *logWriter) Close() error { - w.lock.Lock() - defer w.lock.Unlock() - - if w.buffer.Len() > 0 { - w.log.Println(w.buffer.String()) - } - - return nil -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/run_result.go b/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/run_result.go deleted file mode 100644 index 5d472acb..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/run_result.go +++ /dev/null @@ -1,27 +0,0 @@ -package testrunner - -type RunResult struct { - Passed bool - HasProgrammaticFocus bool -} - -func PassingRunResult() RunResult { - return RunResult{ - Passed: true, - HasProgrammaticFocus: false, - } -} - -func FailingRunResult() RunResult { - return RunResult{ - Passed: false, - HasProgrammaticFocus: false, - } -} - -func (r RunResult) Merge(o RunResult) RunResult { - return RunResult{ - Passed: r.Passed && o.Passed, - HasProgrammaticFocus: r.HasProgrammaticFocus || o.HasProgrammaticFocus, - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/test_runner.go b/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/test_runner.go deleted file mode 100644 index f0a591b9..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/test_runner.go +++ /dev/null @@ -1,488 +0,0 @@ -package testrunner - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "strconv" - "strings" - "syscall" - "time" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/ginkgo/testsuite" - "github.com/onsi/ginkgo/internal/remote" - "github.com/onsi/ginkgo/reporters/stenographer" - "github.com/onsi/ginkgo/types" -) - -type TestRunner struct { - Suite testsuite.TestSuite - - compiled bool - compilationTargetPath string - - numCPU int - parallelStream bool - timeout time.Duration - goOpts map[string]interface{} - additionalArgs []string - stderr *bytes.Buffer -} - -func New(suite testsuite.TestSuite, numCPU int, parallelStream bool, timeout time.Duration, goOpts map[string]interface{}, additionalArgs []string) *TestRunner { - runner := &TestRunner{ - Suite: suite, - numCPU: numCPU, - parallelStream: parallelStream, - goOpts: goOpts, - additionalArgs: additionalArgs, - timeout: timeout, - stderr: new(bytes.Buffer), - } - - if !suite.Precompiled { - dir, err := ioutil.TempDir("", "ginkgo") - if err != nil { - panic(fmt.Sprintf("couldn't create temporary directory... might be time to rm -rf:\n%s", err.Error())) - } - runner.compilationTargetPath = filepath.Join(dir, suite.PackageName+".test") - } - - return runner -} - -func (t *TestRunner) Compile() error { - return t.CompileTo(t.compilationTargetPath) -} - -func (t *TestRunner) BuildArgs(path string) []string { - args := []string{"test", "-c", "-i", "-o", path, t.Suite.Path} - - if *t.goOpts["covermode"].(*string) != "" { - args = append(args, "-cover", fmt.Sprintf("-covermode=%s", *t.goOpts["covermode"].(*string))) - } else { - if *t.goOpts["cover"].(*bool) || *t.goOpts["coverpkg"].(*string) != "" { - args = append(args, "-cover", "-covermode=atomic") - } - } - - boolOpts := []string{ - "a", - "n", - "msan", - "race", - "x", - "work", - "linkshared", - } - - for _, opt := range boolOpts { - if s, found := t.goOpts[opt].(*bool); found && *s { - args = append(args, fmt.Sprintf("-%s", opt)) - } - } - - intOpts := []string{ - "memprofilerate", - "blockprofilerate", - } - - for _, opt := range intOpts { - if s, found := t.goOpts[opt].(*int); found { - args = append(args, fmt.Sprintf("-%s=%d", opt, *s)) - } - } - - stringOpts := []string{ - "asmflags", - "buildmode", - "compiler", - "gccgoflags", - "installsuffix", - "ldflags", - "pkgdir", - "toolexec", - "coverprofile", - "cpuprofile", - "memprofile", - "outputdir", - "coverpkg", - "tags", - "gcflags", - } - - for _, opt := range stringOpts { - if s, found := t.goOpts[opt].(*string); found && *s != "" { - args = append(args, fmt.Sprintf("-%s=%s", opt, *s)) - } - } - return args -} - -func (t *TestRunner) CompileTo(path string) error { - if t.compiled { - return nil - } - - if t.Suite.Precompiled { - return nil - } - - args := t.BuildArgs(path) - cmd := exec.Command("go", args...) - - output, err := cmd.CombinedOutput() - - if err != nil { - if len(output) > 0 { - return fmt.Errorf("Failed to compile %s:\n\n%s", t.Suite.PackageName, output) - } - return fmt.Errorf("Failed to compile %s", t.Suite.PackageName) - } - - if len(output) > 0 { - fmt.Println(string(output)) - } - - if fileExists(path) == false { - compiledFile := t.Suite.PackageName + ".test" - if fileExists(compiledFile) { - // seems like we are on an old go version that does not support the -o flag on go test - // move the compiled test file to the desired location by hand - err = os.Rename(compiledFile, path) - if err != nil { - // We cannot move the file, perhaps because the source and destination - // are on different partitions. We can copy the file, however. - err = copyFile(compiledFile, path) - if err != nil { - return fmt.Errorf("Failed to copy compiled file: %s", err) - } - } - } else { - return fmt.Errorf("Failed to compile %s: output file %q could not be found", t.Suite.PackageName, path) - } - } - - t.compiled = true - - return nil -} - -func fileExists(path string) bool { - _, err := os.Stat(path) - return err == nil || os.IsNotExist(err) == false -} - -// copyFile copies the contents of the file named src to the file named -// by dst. The file will be created if it does not already exist. If the -// destination file exists, all it's contents will be replaced by the contents -// of the source file. -func copyFile(src, dst string) error { - srcInfo, err := os.Stat(src) - if err != nil { - return err - } - mode := srcInfo.Mode() - - in, err := os.Open(src) - if err != nil { - return err - } - - defer in.Close() - - out, err := os.Create(dst) - if err != nil { - return err - } - - defer func() { - closeErr := out.Close() - if err == nil { - err = closeErr - } - }() - - _, err = io.Copy(out, in) - if err != nil { - return err - } - - err = out.Sync() - if err != nil { - return err - } - - return out.Chmod(mode) -} - -func (t *TestRunner) Run() RunResult { - if t.Suite.IsGinkgo { - if t.numCPU > 1 { - if t.parallelStream { - return t.runAndStreamParallelGinkgoSuite() - } else { - return t.runParallelGinkgoSuite() - } - } else { - return t.runSerialGinkgoSuite() - } - } else { - return t.runGoTestSuite() - } -} - -func (t *TestRunner) CleanUp() { - if t.Suite.Precompiled { - return - } - os.RemoveAll(filepath.Dir(t.compilationTargetPath)) -} - -func (t *TestRunner) runSerialGinkgoSuite() RunResult { - ginkgoArgs := config.BuildFlagArgs("ginkgo", config.GinkgoConfig, config.DefaultReporterConfig) - return t.run(t.cmd(ginkgoArgs, os.Stdout, 1), nil) -} - -func (t *TestRunner) runGoTestSuite() RunResult { - return t.run(t.cmd([]string{"-test.v"}, os.Stdout, 1), nil) -} - -func (t *TestRunner) runAndStreamParallelGinkgoSuite() RunResult { - completions := make(chan RunResult) - writers := make([]*logWriter, t.numCPU) - - server, err := remote.NewServer(t.numCPU) - if err != nil { - panic("Failed to start parallel spec server") - } - - server.Start() - defer server.Close() - - for cpu := 0; cpu < t.numCPU; cpu++ { - config.GinkgoConfig.ParallelNode = cpu + 1 - config.GinkgoConfig.ParallelTotal = t.numCPU - config.GinkgoConfig.SyncHost = server.Address() - - ginkgoArgs := config.BuildFlagArgs("ginkgo", config.GinkgoConfig, config.DefaultReporterConfig) - - writers[cpu] = newLogWriter(os.Stdout, cpu+1) - - cmd := t.cmd(ginkgoArgs, writers[cpu], cpu+1) - - server.RegisterAlive(cpu+1, func() bool { - if cmd.ProcessState == nil { - return true - } - return !cmd.ProcessState.Exited() - }) - - go t.run(cmd, completions) - } - - res := PassingRunResult() - - for cpu := 0; cpu < t.numCPU; cpu++ { - res = res.Merge(<-completions) - } - - for _, writer := range writers { - writer.Close() - } - - os.Stdout.Sync() - - if *t.goOpts["cover"].(*bool) || *t.goOpts["coverpkg"].(*string) != "" || *t.goOpts["covermode"].(*string) != "" { - t.combineCoverprofiles() - } - - return res -} - -func (t *TestRunner) runParallelGinkgoSuite() RunResult { - result := make(chan bool) - completions := make(chan RunResult) - writers := make([]*logWriter, t.numCPU) - reports := make([]*bytes.Buffer, t.numCPU) - - stenographer := stenographer.New(!config.DefaultReporterConfig.NoColor, config.GinkgoConfig.FlakeAttempts > 1) - aggregator := remote.NewAggregator(t.numCPU, result, config.DefaultReporterConfig, stenographer) - - server, err := remote.NewServer(t.numCPU) - if err != nil { - panic("Failed to start parallel spec server") - } - server.RegisterReporters(aggregator) - server.Start() - defer server.Close() - - for cpu := 0; cpu < t.numCPU; cpu++ { - config.GinkgoConfig.ParallelNode = cpu + 1 - config.GinkgoConfig.ParallelTotal = t.numCPU - config.GinkgoConfig.SyncHost = server.Address() - config.GinkgoConfig.StreamHost = server.Address() - - ginkgoArgs := config.BuildFlagArgs("ginkgo", config.GinkgoConfig, config.DefaultReporterConfig) - - reports[cpu] = &bytes.Buffer{} - writers[cpu] = newLogWriter(reports[cpu], cpu+1) - - cmd := t.cmd(ginkgoArgs, writers[cpu], cpu+1) - - server.RegisterAlive(cpu+1, func() bool { - if cmd.ProcessState == nil { - return true - } - return !cmd.ProcessState.Exited() - }) - - go t.run(cmd, completions) - } - - res := PassingRunResult() - - for cpu := 0; cpu < t.numCPU; cpu++ { - res = res.Merge(<-completions) - } - - //all test processes are done, at this point - //we should be able to wait for the aggregator to tell us that it's done - - select { - case <-result: - fmt.Println("") - case <-time.After(time.Second): - //the aggregator never got back to us! something must have gone wrong - fmt.Println(` - ------------------------------------------------------------------- - | | - | Ginkgo timed out waiting for all parallel nodes to report back! | - | | - ------------------------------------------------------------------- -`) - fmt.Println(t.Suite.PackageName, "timed out. path:", t.Suite.Path) - os.Stdout.Sync() - - for _, writer := range writers { - writer.Close() - } - - for _, report := range reports { - fmt.Print(report.String()) - } - - os.Stdout.Sync() - } - - if *t.goOpts["cover"].(*bool) || *t.goOpts["coverpkg"].(*string) != "" || *t.goOpts["covermode"].(*string) != "" { - t.combineCoverprofiles() - } - - return res -} - -func (t *TestRunner) cmd(ginkgoArgs []string, stream io.Writer, node int) *exec.Cmd { - args := []string{"--test.timeout=" + t.timeout.String()} - if *t.goOpts["cover"].(*bool) || *t.goOpts["coverpkg"].(*string) != "" || *t.goOpts["covermode"].(*string) != "" { - coverprofile := "--test.coverprofile=" + t.Suite.PackageName + ".coverprofile" - if t.numCPU > 1 { - coverprofile = fmt.Sprintf("%s.%d", coverprofile, node) - } - args = append(args, coverprofile) - } - - args = append(args, ginkgoArgs...) - args = append(args, t.additionalArgs...) - - path := t.compilationTargetPath - if t.Suite.Precompiled { - path, _ = filepath.Abs(filepath.Join(t.Suite.Path, fmt.Sprintf("%s.test", t.Suite.PackageName))) - } - - cmd := exec.Command(path, args...) - - cmd.Dir = t.Suite.Path - cmd.Stderr = io.MultiWriter(stream, t.stderr) - cmd.Stdout = stream - - return cmd -} - -func (t *TestRunner) run(cmd *exec.Cmd, completions chan RunResult) RunResult { - var res RunResult - - defer func() { - if completions != nil { - completions <- res - } - }() - - err := cmd.Start() - if err != nil { - fmt.Printf("Failed to run test suite!\n\t%s", err.Error()) - return res - } - - cmd.Wait() - - exitStatus := cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus() - res.Passed = (exitStatus == 0) || (exitStatus == types.GINKGO_FOCUS_EXIT_CODE) - res.HasProgrammaticFocus = (exitStatus == types.GINKGO_FOCUS_EXIT_CODE) - - if strings.Contains(t.stderr.String(), "warning: no tests to run") { - if *t.goOpts["requireSuite"].(*bool) { - res.Passed = false - } - fmt.Fprintf(os.Stderr, `Found no test suites, did you forget to run "ginkgo bootstrap"?`) - } - - return res -} - -func (t *TestRunner) combineCoverprofiles() { - profiles := []string{} - for cpu := 1; cpu <= t.numCPU; cpu++ { - coverFile := fmt.Sprintf("%s.coverprofile.%d", t.Suite.PackageName, cpu) - coverFile = filepath.Join(t.Suite.Path, coverFile) - coverProfile, err := ioutil.ReadFile(coverFile) - os.Remove(coverFile) - - if err == nil { - profiles = append(profiles, string(coverProfile)) - } - } - - if len(profiles) != t.numCPU { - return - } - - lines := map[string]int{} - lineOrder := []string{} - for i, coverProfile := range profiles { - for _, line := range strings.Split(string(coverProfile), "\n")[1:] { - if len(line) == 0 { - continue - } - components := strings.Split(line, " ") - count, _ := strconv.Atoi(components[len(components)-1]) - prefix := strings.Join(components[0:len(components)-1], " ") - lines[prefix] += count - if i == 0 { - lineOrder = append(lineOrder, prefix) - } - } - } - - output := []string{"mode: atomic"} - for _, line := range lineOrder { - output = append(output, fmt.Sprintf("%s %d", line, lines[line])) - } - finalOutput := strings.Join(output, "\n") - ioutil.WriteFile(filepath.Join(t.Suite.Path, fmt.Sprintf("%s.coverprofile", t.Suite.PackageName)), []byte(finalOutput), 0666) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/test_runner_test.go b/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/test_runner_test.go deleted file mode 100644 index b6f55677..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testrunner/test_runner_test.go +++ /dev/null @@ -1,57 +0,0 @@ -package testrunner_test - -import ( - "testing" - - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/ginkgo/testrunner" - "github.com/onsi/ginkgo/ginkgo/testsuite" - . "github.com/onsi/gomega" -) - -func strAddr(s string) interface{} { - return &s -} - -func boolAddr(s bool) interface{} { - return &s -} - -func intAddr(s int) interface{} { - return &s -} - -var _ = Describe("TestRunner", func() { - It("should pass through go opts", func() { - //var opts map[string]interface{} - opts := map[string]interface{}{ - "asmflags": strAddr("a"), - "pkgdir": strAddr("b"), - "gcflags": strAddr("c"), - "covermode": strAddr(""), - "coverpkg": strAddr(""), - "cover": boolAddr(false), - "blockprofilerate": intAddr(100), - } - tr := testrunner.New(testsuite.TestSuite{}, 1, false, 0, opts, []string{}) - - args := tr.BuildArgs(".") - Ω(args).Should(Equal([]string{ - "test", - "-c", - "-i", - "-o", - ".", - "", - "-blockprofilerate=100", - "-asmflags=a", - "-pkgdir=b", - "-gcflags=c", - })) - }) -}) - -func TestTestRunner(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Test Runner Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/test_suite.go b/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/test_suite.go deleted file mode 100644 index 09b16015..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/test_suite.go +++ /dev/null @@ -1,115 +0,0 @@ -package testsuite - -import ( - "errors" - "io/ioutil" - "os" - "path/filepath" - "regexp" - "strings" -) - -type TestSuite struct { - Path string - PackageName string - IsGinkgo bool - Precompiled bool -} - -func PrecompiledTestSuite(path string) (TestSuite, error) { - info, err := os.Stat(path) - if err != nil { - return TestSuite{}, err - } - - if info.IsDir() { - return TestSuite{}, errors.New("this is a directory, not a file") - } - - if filepath.Ext(path) != ".test" { - return TestSuite{}, errors.New("this is not a .test binary") - } - - if info.Mode()&0111 == 0 { - return TestSuite{}, errors.New("this is not executable") - } - - dir := relPath(filepath.Dir(path)) - packageName := strings.TrimSuffix(filepath.Base(path), filepath.Ext(path)) - - return TestSuite{ - Path: dir, - PackageName: packageName, - IsGinkgo: true, - Precompiled: true, - }, nil -} - -func SuitesInDir(dir string, recurse bool) []TestSuite { - suites := []TestSuite{} - - if vendorExperimentCheck(dir) { - return suites - } - - files, _ := ioutil.ReadDir(dir) - re := regexp.MustCompile(`_test\.go$`) - for _, file := range files { - if !file.IsDir() && re.Match([]byte(file.Name())) { - suites = append(suites, New(dir, files)) - break - } - } - - if recurse { - re = regexp.MustCompile(`^[._]`) - for _, file := range files { - if file.IsDir() && !re.Match([]byte(file.Name())) { - suites = append(suites, SuitesInDir(dir+"/"+file.Name(), recurse)...) - } - } - } - - return suites -} - -func relPath(dir string) string { - dir, _ = filepath.Abs(dir) - cwd, _ := os.Getwd() - dir, _ = filepath.Rel(cwd, filepath.Clean(dir)) - - if string(dir[0]) != "." { - dir = "." + string(filepath.Separator) + dir - } - - return dir -} - -func New(dir string, files []os.FileInfo) TestSuite { - return TestSuite{ - Path: relPath(dir), - PackageName: packageNameForSuite(dir), - IsGinkgo: filesHaveGinkgoSuite(dir, files), - } -} - -func packageNameForSuite(dir string) string { - path, _ := filepath.Abs(dir) - return filepath.Base(path) -} - -func filesHaveGinkgoSuite(dir string, files []os.FileInfo) bool { - reTestFile := regexp.MustCompile(`_test\.go$`) - reGinkgo := regexp.MustCompile(`package ginkgo|\/ginkgo"`) - - for _, file := range files { - if !file.IsDir() && reTestFile.Match([]byte(file.Name())) { - contents, _ := ioutil.ReadFile(dir + "/" + file.Name()) - if reGinkgo.Match(contents) { - return true - } - } - } - - return false -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/testsuite_suite_test.go b/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/testsuite_suite_test.go deleted file mode 100644 index d1e8b21d..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/testsuite_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package testsuite_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestTestsuite(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Testsuite Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/testsuite_test.go b/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/testsuite_test.go deleted file mode 100644 index 7f89f18a..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/testsuite_test.go +++ /dev/null @@ -1,201 +0,0 @@ -// +build go1.6 - -package testsuite_test - -import ( - "io/ioutil" - "os" - "path/filepath" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/ginkgo/testsuite" - . "github.com/onsi/gomega" -) - -var _ = Describe("TestSuite", func() { - var tmpDir string - var relTmpDir string - - writeFile := func(folder string, filename string, content string, mode os.FileMode) { - path := filepath.Join(tmpDir, folder) - err := os.MkdirAll(path, 0700) - Ω(err).ShouldNot(HaveOccurred()) - - path = filepath.Join(path, filename) - ioutil.WriteFile(path, []byte(content), mode) - } - - var origVendor string - - BeforeSuite(func() { - origVendor = os.Getenv("GO15VENDOREXPERIMENT") - }) - - AfterSuite(func() { - os.Setenv("GO15VENDOREXPERIMENT", origVendor) - }) - - BeforeEach(func() { - var err error - tmpDir, err = ioutil.TempDir("/tmp", "ginkgo") - Ω(err).ShouldNot(HaveOccurred()) - - cwd, err := os.Getwd() - Ω(err).ShouldNot(HaveOccurred()) - relTmpDir, err = filepath.Rel(cwd, tmpDir) - Ω(err).ShouldNot(HaveOccurred()) - - //go files in the root directory (no tests) - writeFile("/", "main.go", "package main", 0666) - - //non-go files in a nested directory - writeFile("/redherring", "big_test.jpg", "package ginkgo", 0666) - - //non-ginkgo tests in a nested directory - writeFile("/professorplum", "professorplum_test.go", `import "testing"`, 0666) - - //ginkgo tests in a nested directory - writeFile("/colonelmustard", "colonelmustard_test.go", `import "github.com/onsi/ginkgo"`, 0666) - - //ginkgo tests in a deeply nested directory - writeFile("/colonelmustard/library", "library_test.go", `import "github.com/onsi/ginkgo"`, 0666) - - //ginkgo tests deeply nested in a vendored dependency - writeFile("/vendor/mrspeacock/lounge", "lounge_test.go", `import "github.com/onsi/ginkgo"`, 0666) - - //a precompiled ginkgo test - writeFile("/precompiled-dir", "precompiled.test", `fake-binary-file`, 0777) - writeFile("/precompiled-dir", "some-other-binary", `fake-binary-file`, 0777) - writeFile("/precompiled-dir", "nonexecutable.test", `fake-binary-file`, 0666) - }) - - AfterEach(func() { - os.RemoveAll(tmpDir) - }) - - Describe("Finding precompiled test suites", func() { - Context("if pointed at an executable file that ends with .test", func() { - It("should return a precompiled test suite", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir", "precompiled.test")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(suite).Should(Equal(TestSuite{ - Path: relTmpDir + "/precompiled-dir", - PackageName: "precompiled", - IsGinkgo: true, - Precompiled: true, - })) - }) - }) - - Context("if pointed at a directory", func() { - It("should error", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir")) - Ω(suite).Should(BeZero()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("if pointed at an executable that doesn't have .test", func() { - It("should error", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir", "some-other-binary")) - Ω(suite).Should(BeZero()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("if pointed at a .test that isn't executable", func() { - It("should error", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir", "nonexecutable.test")) - Ω(suite).Should(BeZero()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("if pointed at a nonexisting file", func() { - It("should error", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir", "nope-nothing-to-see-here")) - Ω(suite).Should(BeZero()) - Ω(err).Should(HaveOccurred()) - }) - }) - }) - - Describe("scanning for suites in a directory", func() { - Context("when there are no tests in the specified directory", func() { - It("should come up empty", func() { - suites := SuitesInDir(tmpDir, false) - Ω(suites).Should(BeEmpty()) - }) - }) - - Context("when there are ginkgo tests in the specified directory", func() { - It("should return an appropriately configured suite", func() { - suites := SuitesInDir(filepath.Join(tmpDir, "colonelmustard"), false) - Ω(suites).Should(HaveLen(1)) - - Ω(suites[0].Path).Should(Equal(relTmpDir + "/colonelmustard")) - Ω(suites[0].PackageName).Should(Equal("colonelmustard")) - Ω(suites[0].IsGinkgo).Should(BeTrue()) - Ω(suites[0].Precompiled).Should(BeFalse()) - }) - }) - - Context("when there are non-ginkgo tests in the specified directory", func() { - It("should return an appropriately configured suite", func() { - suites := SuitesInDir(filepath.Join(tmpDir, "professorplum"), false) - Ω(suites).Should(HaveLen(1)) - - Ω(suites[0].Path).Should(Equal(relTmpDir + "/professorplum")) - Ω(suites[0].PackageName).Should(Equal("professorplum")) - Ω(suites[0].IsGinkgo).Should(BeFalse()) - Ω(suites[0].Precompiled).Should(BeFalse()) - }) - }) - - Context("given GO15VENDOREXPERIMENT disabled", func() { - BeforeEach(func() { - os.Setenv("GO15VENDOREXPERIMENT", "0") - }) - - AfterEach(func() { - os.Setenv("GO15VENDOREXPERIMENT", "") - }) - - It("should not skip vendor dirs", func() { - suites := SuitesInDir(filepath.Join(tmpDir+"/vendor"), true) - Ω(suites).Should(HaveLen(1)) - }) - - It("should recurse into vendor dirs", func() { - suites := SuitesInDir(filepath.Join(tmpDir), true) - Ω(suites).Should(HaveLen(4)) - }) - }) - - Context("when recursively scanning", func() { - It("should return suites for corresponding test suites, only", func() { - suites := SuitesInDir(tmpDir, true) - Ω(suites).Should(HaveLen(3)) - - Ω(suites).Should(ContainElement(TestSuite{ - Path: relTmpDir + "/colonelmustard", - PackageName: "colonelmustard", - IsGinkgo: true, - Precompiled: false, - })) - Ω(suites).Should(ContainElement(TestSuite{ - Path: relTmpDir + "/professorplum", - PackageName: "professorplum", - IsGinkgo: false, - Precompiled: false, - })) - Ω(suites).Should(ContainElement(TestSuite{ - Path: relTmpDir + "/colonelmustard/library", - PackageName: "library", - IsGinkgo: true, - Precompiled: false, - })) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go15.go b/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go15.go deleted file mode 100644 index 75f827a1..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go15.go +++ /dev/null @@ -1,16 +0,0 @@ -// +build !go1.6 - -package testsuite - -import ( - "os" - "path" -) - -// "This change will only be enabled if the go command is run with -// GO15VENDOREXPERIMENT=1 in its environment." -// c.f. the vendor-experiment proposal https://goo.gl/2ucMeC -func vendorExperimentCheck(dir string) bool { - vendorExperiment := os.Getenv("GO15VENDOREXPERIMENT") - return vendorExperiment == "1" && path.Base(dir) == "vendor" -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go15_test.go b/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go15_test.go deleted file mode 100644 index dc3ca2a9..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go15_test.go +++ /dev/null @@ -1,201 +0,0 @@ -// +build !go1.6 - -package testsuite_test - -import ( - "io/ioutil" - "os" - "path/filepath" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/ginkgo/testsuite" - . "github.com/onsi/gomega" -) - -var _ = Describe("TestSuite", func() { - var tmpDir string - var relTmpDir string - - writeFile := func(folder string, filename string, content string, mode os.FileMode) { - path := filepath.Join(tmpDir, folder) - err := os.MkdirAll(path, 0700) - Ω(err).ShouldNot(HaveOccurred()) - - path = filepath.Join(path, filename) - ioutil.WriteFile(path, []byte(content), mode) - } - - var origVendor string - - BeforeSuite(func() { - origVendor = os.Getenv("GO15VENDOREXPERIMENT") - }) - - AfterSuite(func() { - os.Setenv("GO15VENDOREXPERIMENT", origVendor) - }) - - BeforeEach(func() { - var err error - tmpDir, err = ioutil.TempDir("/tmp", "ginkgo") - Ω(err).ShouldNot(HaveOccurred()) - - cwd, err := os.Getwd() - Ω(err).ShouldNot(HaveOccurred()) - relTmpDir, err = filepath.Rel(cwd, tmpDir) - Ω(err).ShouldNot(HaveOccurred()) - - //go files in the root directory (no tests) - writeFile("/", "main.go", "package main", 0666) - - //non-go files in a nested directory - writeFile("/redherring", "big_test.jpg", "package ginkgo", 0666) - - //non-ginkgo tests in a nested directory - writeFile("/professorplum", "professorplum_test.go", `import "testing"`, 0666) - - //ginkgo tests in a nested directory - writeFile("/colonelmustard", "colonelmustard_test.go", `import "github.com/onsi/ginkgo"`, 0666) - - //ginkgo tests in a deeply nested directory - writeFile("/colonelmustard/library", "library_test.go", `import "github.com/onsi/ginkgo"`, 0666) - - //ginkgo tests deeply nested in a vendored dependency - writeFile("/vendor/mrspeacock/lounge", "lounge_test.go", `import "github.com/onsi/ginkgo"`, 0666) - - //a precompiled ginkgo test - writeFile("/precompiled-dir", "precompiled.test", `fake-binary-file`, 0777) - writeFile("/precompiled-dir", "some-other-binary", `fake-binary-file`, 0777) - writeFile("/precompiled-dir", "nonexecutable.test", `fake-binary-file`, 0666) - }) - - AfterEach(func() { - os.RemoveAll(tmpDir) - }) - - Describe("Finding precompiled test suites", func() { - Context("if pointed at an executable file that ends with .test", func() { - It("should return a precompiled test suite", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir", "precompiled.test")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(suite).Should(Equal(TestSuite{ - Path: relTmpDir + "/precompiled-dir", - PackageName: "precompiled", - IsGinkgo: true, - Precompiled: true, - })) - }) - }) - - Context("if pointed at a directory", func() { - It("should error", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir")) - Ω(suite).Should(BeZero()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("if pointed at an executable that doesn't have .test", func() { - It("should error", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir", "some-other-binary")) - Ω(suite).Should(BeZero()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("if pointed at a .test that isn't executable", func() { - It("should error", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir", "nonexecutable.test")) - Ω(suite).Should(BeZero()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("if pointed at a nonexisting file", func() { - It("should error", func() { - suite, err := PrecompiledTestSuite(filepath.Join(tmpDir, "precompiled-dir", "nope-nothing-to-see-here")) - Ω(suite).Should(BeZero()) - Ω(err).Should(HaveOccurred()) - }) - }) - }) - - Describe("scanning for suites in a directory", func() { - Context("when there are no tests in the specified directory", func() { - It("should come up empty", func() { - suites := SuitesInDir(tmpDir, false) - Ω(suites).Should(BeEmpty()) - }) - }) - - Context("when there are ginkgo tests in the specified directory", func() { - It("should return an appropriately configured suite", func() { - suites := SuitesInDir(filepath.Join(tmpDir, "colonelmustard"), false) - Ω(suites).Should(HaveLen(1)) - - Ω(suites[0].Path).Should(Equal(relTmpDir + "/colonelmustard")) - Ω(suites[0].PackageName).Should(Equal("colonelmustard")) - Ω(suites[0].IsGinkgo).Should(BeTrue()) - Ω(suites[0].Precompiled).Should(BeFalse()) - }) - }) - - Context("when there are non-ginkgo tests in the specified directory", func() { - It("should return an appropriately configured suite", func() { - suites := SuitesInDir(filepath.Join(tmpDir, "professorplum"), false) - Ω(suites).Should(HaveLen(1)) - - Ω(suites[0].Path).Should(Equal(relTmpDir + "/professorplum")) - Ω(suites[0].PackageName).Should(Equal("professorplum")) - Ω(suites[0].IsGinkgo).Should(BeFalse()) - Ω(suites[0].Precompiled).Should(BeFalse()) - }) - }) - - Context("given GO15VENDOREXPERIMENT", func() { - BeforeEach(func() { - os.Setenv("GO15VENDOREXPERIMENT", "1") - }) - - AfterEach(func() { - os.Setenv("GO15VENDOREXPERIMENT", "") - }) - - It("should skip vendor dirs", func() { - suites := SuitesInDir(filepath.Join(tmpDir+"/vendor"), false) - Ω(suites).Should(HaveLen(0)) - }) - - It("should not recurse into vendor dirs", func() { - suites := SuitesInDir(filepath.Join(tmpDir), true) - Ω(suites).Should(HaveLen(3)) - }) - }) - - Context("when recursively scanning", func() { - It("should return suites for corresponding test suites, only", func() { - suites := SuitesInDir(tmpDir, true) - Ω(suites).Should(HaveLen(4)) - - Ω(suites).Should(ContainElement(TestSuite{ - Path: relTmpDir + "/colonelmustard", - PackageName: "colonelmustard", - IsGinkgo: true, - Precompiled: false, - })) - Ω(suites).Should(ContainElement(TestSuite{ - Path: relTmpDir + "/professorplum", - PackageName: "professorplum", - IsGinkgo: false, - Precompiled: false, - })) - Ω(suites).Should(ContainElement(TestSuite{ - Path: relTmpDir + "/colonelmustard/library", - PackageName: "library", - IsGinkgo: true, - Precompiled: false, - })) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go16.go b/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go16.go deleted file mode 100644 index 596e5e5c..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/testsuite/vendor_check_go16.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build go1.6 - -package testsuite - -import ( - "os" - "path" -) - -// in 1.6 the vendor directory became the default go behaviour, so now -// check if its disabled. -func vendorExperimentCheck(dir string) bool { - vendorExperiment := os.Getenv("GO15VENDOREXPERIMENT") - return vendorExperiment != "0" && path.Base(dir) == "vendor" -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/unfocus_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/unfocus_command.go deleted file mode 100644 index 683c3a99..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/unfocus_command.go +++ /dev/null @@ -1,38 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "os/exec" -) - -func BuildUnfocusCommand() *Command { - return &Command{ - Name: "unfocus", - AltName: "blur", - FlagSet: flag.NewFlagSet("unfocus", flag.ExitOnError), - UsageCommand: "ginkgo unfocus (or ginkgo blur)", - Usage: []string{ - "Recursively unfocuses any focused tests under the current directory", - }, - Command: unfocusSpecs, - } -} - -func unfocusSpecs([]string, []string) { - unfocus("Describe") - unfocus("Context") - unfocus("It") - unfocus("Measure") - unfocus("DescribeTable") - unfocus("Entry") -} - -func unfocus(component string) { - fmt.Printf("Removing F%s...\n", component) - cmd := exec.Command("gofmt", fmt.Sprintf("-r=F%s -> %s", component, component), "-w", ".") - out, _ := cmd.CombinedOutput() - if string(out) != "" { - println(string(out)) - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/version_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/version_command.go deleted file mode 100644 index cdca3a34..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/version_command.go +++ /dev/null @@ -1,23 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "github.com/onsi/ginkgo/config" -) - -func BuildVersionCommand() *Command { - return &Command{ - Name: "version", - FlagSet: flag.NewFlagSet("version", flag.ExitOnError), - UsageCommand: "ginkgo version", - Usage: []string{ - "Print Ginkgo's version", - }, - Command: printVersion, - } -} - -func printVersion([]string, []string) { - fmt.Printf("Ginkgo Version %s\n", config.VERSION) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/watch/delta.go b/vendor/github.com/onsi/ginkgo/ginkgo/watch/delta.go deleted file mode 100644 index 6c485c5b..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/watch/delta.go +++ /dev/null @@ -1,22 +0,0 @@ -package watch - -import "sort" - -type Delta struct { - ModifiedPackages []string - - NewSuites []*Suite - RemovedSuites []*Suite - modifiedSuites []*Suite -} - -type DescendingByDelta []*Suite - -func (a DescendingByDelta) Len() int { return len(a) } -func (a DescendingByDelta) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a DescendingByDelta) Less(i, j int) bool { return a[i].Delta() > a[j].Delta() } - -func (d Delta) ModifiedSuites() []*Suite { - sort.Sort(DescendingByDelta(d.modifiedSuites)) - return d.modifiedSuites -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/watch/delta_tracker.go b/vendor/github.com/onsi/ginkgo/ginkgo/watch/delta_tracker.go deleted file mode 100644 index a628303d..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/watch/delta_tracker.go +++ /dev/null @@ -1,75 +0,0 @@ -package watch - -import ( - "fmt" - - "regexp" - - "github.com/onsi/ginkgo/ginkgo/testsuite" -) - -type SuiteErrors map[testsuite.TestSuite]error - -type DeltaTracker struct { - maxDepth int - watchRegExp *regexp.Regexp - suites map[string]*Suite - packageHashes *PackageHashes -} - -func NewDeltaTracker(maxDepth int, watchRegExp *regexp.Regexp) *DeltaTracker { - return &DeltaTracker{ - maxDepth: maxDepth, - watchRegExp: watchRegExp, - packageHashes: NewPackageHashes(watchRegExp), - suites: map[string]*Suite{}, - } -} - -func (d *DeltaTracker) Delta(suites []testsuite.TestSuite) (delta Delta, errors SuiteErrors) { - errors = SuiteErrors{} - delta.ModifiedPackages = d.packageHashes.CheckForChanges() - - providedSuitePaths := map[string]bool{} - for _, suite := range suites { - providedSuitePaths[suite.Path] = true - } - - d.packageHashes.StartTrackingUsage() - - for _, suite := range d.suites { - if providedSuitePaths[suite.Suite.Path] { - if suite.Delta() > 0 { - delta.modifiedSuites = append(delta.modifiedSuites, suite) - } - } else { - delta.RemovedSuites = append(delta.RemovedSuites, suite) - } - } - - d.packageHashes.StopTrackingUsageAndPrune() - - for _, suite := range suites { - _, ok := d.suites[suite.Path] - if !ok { - s, err := NewSuite(suite, d.maxDepth, d.packageHashes) - if err != nil { - errors[suite] = err - continue - } - d.suites[suite.Path] = s - delta.NewSuites = append(delta.NewSuites, s) - } - } - - return delta, errors -} - -func (d *DeltaTracker) WillRun(suite testsuite.TestSuite) error { - s, ok := d.suites[suite.Path] - if !ok { - return fmt.Errorf("unknown suite %s", suite.Path) - } - - return s.MarkAsRunAndRecomputedDependencies(d.maxDepth) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/watch/dependencies.go b/vendor/github.com/onsi/ginkgo/ginkgo/watch/dependencies.go deleted file mode 100644 index 82c25fac..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/watch/dependencies.go +++ /dev/null @@ -1,91 +0,0 @@ -package watch - -import ( - "go/build" - "regexp" -) - -var ginkgoAndGomegaFilter = regexp.MustCompile(`github\.com/onsi/ginkgo|github\.com/onsi/gomega`) - -type Dependencies struct { - deps map[string]int -} - -func NewDependencies(path string, maxDepth int) (Dependencies, error) { - d := Dependencies{ - deps: map[string]int{}, - } - - if maxDepth == 0 { - return d, nil - } - - err := d.seedWithDepsForPackageAtPath(path) - if err != nil { - return d, err - } - - for depth := 1; depth < maxDepth; depth++ { - n := len(d.deps) - d.addDepsForDepth(depth) - if n == len(d.deps) { - break - } - } - - return d, nil -} - -func (d Dependencies) Dependencies() map[string]int { - return d.deps -} - -func (d Dependencies) seedWithDepsForPackageAtPath(path string) error { - pkg, err := build.ImportDir(path, 0) - if err != nil { - return err - } - - d.resolveAndAdd(pkg.Imports, 1) - d.resolveAndAdd(pkg.TestImports, 1) - d.resolveAndAdd(pkg.XTestImports, 1) - - delete(d.deps, pkg.Dir) - return nil -} - -func (d Dependencies) addDepsForDepth(depth int) { - for dep, depDepth := range d.deps { - if depDepth == depth { - d.addDepsForDep(dep, depth+1) - } - } -} - -func (d Dependencies) addDepsForDep(dep string, depth int) { - pkg, err := build.ImportDir(dep, 0) - if err != nil { - println(err.Error()) - return - } - d.resolveAndAdd(pkg.Imports, depth) -} - -func (d Dependencies) resolveAndAdd(deps []string, depth int) { - for _, dep := range deps { - pkg, err := build.Import(dep, ".", 0) - if err != nil { - continue - } - if pkg.Goroot == false && !ginkgoAndGomegaFilter.Match([]byte(pkg.Dir)) { - d.addDepIfNotPresent(pkg.Dir, depth) - } - } -} - -func (d Dependencies) addDepIfNotPresent(dep string, depth int) { - _, ok := d.deps[dep] - if !ok { - d.deps[dep] = depth - } -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/watch/package_hash.go b/vendor/github.com/onsi/ginkgo/ginkgo/watch/package_hash.go deleted file mode 100644 index 7e1e4192..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/watch/package_hash.go +++ /dev/null @@ -1,104 +0,0 @@ -package watch - -import ( - "fmt" - "io/ioutil" - "os" - "regexp" - "time" -) - -var goTestRegExp = regexp.MustCompile(`_test\.go$`) - -type PackageHash struct { - CodeModifiedTime time.Time - TestModifiedTime time.Time - Deleted bool - - path string - codeHash string - testHash string - watchRegExp *regexp.Regexp -} - -func NewPackageHash(path string, watchRegExp *regexp.Regexp) *PackageHash { - p := &PackageHash{ - path: path, - watchRegExp: watchRegExp, - } - - p.codeHash, _, p.testHash, _, p.Deleted = p.computeHashes() - - return p -} - -func (p *PackageHash) CheckForChanges() bool { - codeHash, codeModifiedTime, testHash, testModifiedTime, deleted := p.computeHashes() - - if deleted { - if p.Deleted == false { - t := time.Now() - p.CodeModifiedTime = t - p.TestModifiedTime = t - } - p.Deleted = true - return true - } - - modified := false - p.Deleted = false - - if p.codeHash != codeHash { - p.CodeModifiedTime = codeModifiedTime - modified = true - } - if p.testHash != testHash { - p.TestModifiedTime = testModifiedTime - modified = true - } - - p.codeHash = codeHash - p.testHash = testHash - return modified -} - -func (p *PackageHash) computeHashes() (codeHash string, codeModifiedTime time.Time, testHash string, testModifiedTime time.Time, deleted bool) { - infos, err := ioutil.ReadDir(p.path) - - if err != nil { - deleted = true - return - } - - for _, info := range infos { - if info.IsDir() { - continue - } - - if goTestRegExp.Match([]byte(info.Name())) { - testHash += p.hashForFileInfo(info) - if info.ModTime().After(testModifiedTime) { - testModifiedTime = info.ModTime() - } - continue - } - - if p.watchRegExp.Match([]byte(info.Name())) { - codeHash += p.hashForFileInfo(info) - if info.ModTime().After(codeModifiedTime) { - codeModifiedTime = info.ModTime() - } - } - } - - testHash += codeHash - if codeModifiedTime.After(testModifiedTime) { - testModifiedTime = codeModifiedTime - } - - return -} - -func (p *PackageHash) hashForFileInfo(info os.FileInfo) string { - return fmt.Sprintf("%s_%d_%d", info.Name(), info.Size(), info.ModTime().UnixNano()) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/watch/package_hashes.go b/vendor/github.com/onsi/ginkgo/ginkgo/watch/package_hashes.go deleted file mode 100644 index b4892beb..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/watch/package_hashes.go +++ /dev/null @@ -1,85 +0,0 @@ -package watch - -import ( - "path/filepath" - "regexp" - "sync" -) - -type PackageHashes struct { - PackageHashes map[string]*PackageHash - usedPaths map[string]bool - watchRegExp *regexp.Regexp - lock *sync.Mutex -} - -func NewPackageHashes(watchRegExp *regexp.Regexp) *PackageHashes { - return &PackageHashes{ - PackageHashes: map[string]*PackageHash{}, - usedPaths: nil, - watchRegExp: watchRegExp, - lock: &sync.Mutex{}, - } -} - -func (p *PackageHashes) CheckForChanges() []string { - p.lock.Lock() - defer p.lock.Unlock() - - modified := []string{} - - for _, packageHash := range p.PackageHashes { - if packageHash.CheckForChanges() { - modified = append(modified, packageHash.path) - } - } - - return modified -} - -func (p *PackageHashes) Add(path string) *PackageHash { - p.lock.Lock() - defer p.lock.Unlock() - - path, _ = filepath.Abs(path) - _, ok := p.PackageHashes[path] - if !ok { - p.PackageHashes[path] = NewPackageHash(path, p.watchRegExp) - } - - if p.usedPaths != nil { - p.usedPaths[path] = true - } - return p.PackageHashes[path] -} - -func (p *PackageHashes) Get(path string) *PackageHash { - p.lock.Lock() - defer p.lock.Unlock() - - path, _ = filepath.Abs(path) - if p.usedPaths != nil { - p.usedPaths[path] = true - } - return p.PackageHashes[path] -} - -func (p *PackageHashes) StartTrackingUsage() { - p.lock.Lock() - defer p.lock.Unlock() - - p.usedPaths = map[string]bool{} -} - -func (p *PackageHashes) StopTrackingUsageAndPrune() { - p.lock.Lock() - defer p.lock.Unlock() - - for path := range p.PackageHashes { - if !p.usedPaths[path] { - delete(p.PackageHashes, path) - } - } - - p.usedPaths = nil -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/watch/suite.go b/vendor/github.com/onsi/ginkgo/ginkgo/watch/suite.go deleted file mode 100644 index 5deaba7c..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/watch/suite.go +++ /dev/null @@ -1,87 +0,0 @@ -package watch - -import ( - "fmt" - "math" - "time" - - "github.com/onsi/ginkgo/ginkgo/testsuite" -) - -type Suite struct { - Suite testsuite.TestSuite - RunTime time.Time - Dependencies Dependencies - - sharedPackageHashes *PackageHashes -} - -func NewSuite(suite testsuite.TestSuite, maxDepth int, sharedPackageHashes *PackageHashes) (*Suite, error) { - deps, err := NewDependencies(suite.Path, maxDepth) - if err != nil { - return nil, err - } - - sharedPackageHashes.Add(suite.Path) - for dep := range deps.Dependencies() { - sharedPackageHashes.Add(dep) - } - - return &Suite{ - Suite: suite, - Dependencies: deps, - - sharedPackageHashes: sharedPackageHashes, - }, nil -} - -func (s *Suite) Delta() float64 { - delta := s.delta(s.Suite.Path, true, 0) * 1000 - for dep, depth := range s.Dependencies.Dependencies() { - delta += s.delta(dep, false, depth) - } - return delta -} - -func (s *Suite) MarkAsRunAndRecomputedDependencies(maxDepth int) error { - s.RunTime = time.Now() - - deps, err := NewDependencies(s.Suite.Path, maxDepth) - if err != nil { - return err - } - - s.sharedPackageHashes.Add(s.Suite.Path) - for dep := range deps.Dependencies() { - s.sharedPackageHashes.Add(dep) - } - - s.Dependencies = deps - - return nil -} - -func (s *Suite) Description() string { - numDeps := len(s.Dependencies.Dependencies()) - pluralizer := "ies" - if numDeps == 1 { - pluralizer = "y" - } - return fmt.Sprintf("%s [%d dependenc%s]", s.Suite.Path, numDeps, pluralizer) -} - -func (s *Suite) delta(packagePath string, includeTests bool, depth int) float64 { - return math.Max(float64(s.dt(packagePath, includeTests)), 0) / float64(depth+1) -} - -func (s *Suite) dt(packagePath string, includeTests bool) time.Duration { - packageHash := s.sharedPackageHashes.Get(packagePath) - var modifiedTime time.Time - if includeTests { - modifiedTime = packageHash.TestModifiedTime - } else { - modifiedTime = packageHash.CodeModifiedTime - } - - return modifiedTime.Sub(s.RunTime) -} diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/watch_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/watch_command.go deleted file mode 100644 index a6ef053c..00000000 --- a/vendor/github.com/onsi/ginkgo/ginkgo/watch_command.go +++ /dev/null @@ -1,175 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "regexp" - "time" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/ginkgo/interrupthandler" - "github.com/onsi/ginkgo/ginkgo/testrunner" - "github.com/onsi/ginkgo/ginkgo/testsuite" - "github.com/onsi/ginkgo/ginkgo/watch" - colorable "github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable" -) - -func BuildWatchCommand() *Command { - commandFlags := NewWatchCommandFlags(flag.NewFlagSet("watch", flag.ExitOnError)) - interruptHandler := interrupthandler.NewInterruptHandler() - notifier := NewNotifier(commandFlags) - watcher := &SpecWatcher{ - commandFlags: commandFlags, - notifier: notifier, - interruptHandler: interruptHandler, - suiteRunner: NewSuiteRunner(notifier, interruptHandler), - } - - return &Command{ - Name: "watch", - FlagSet: commandFlags.FlagSet, - UsageCommand: "ginkgo watch -- ", - Usage: []string{ - "Watches the tests in the passed in and runs them when changes occur.", - "Any arguments after -- will be passed to the test.", - }, - Command: watcher.WatchSpecs, - SuppressFlagDocumentation: true, - FlagDocSubstitute: []string{ - "Accepts all the flags that the ginkgo command accepts except for --keepGoing and --untilItFails", - }, - } -} - -type SpecWatcher struct { - commandFlags *RunWatchAndBuildCommandFlags - notifier *Notifier - interruptHandler *interrupthandler.InterruptHandler - suiteRunner *SuiteRunner -} - -func (w *SpecWatcher) WatchSpecs(args []string, additionalArgs []string) { - w.commandFlags.computeNodes() - w.notifier.VerifyNotificationsAreAvailable() - - w.WatchSuites(args, additionalArgs) -} - -func (w *SpecWatcher) runnersForSuites(suites []testsuite.TestSuite, additionalArgs []string) []*testrunner.TestRunner { - runners := []*testrunner.TestRunner{} - - for _, suite := range suites { - runners = append(runners, testrunner.New(suite, w.commandFlags.NumCPU, w.commandFlags.ParallelStream, w.commandFlags.Timeout, w.commandFlags.GoOpts, additionalArgs)) - } - - return runners -} - -func (w *SpecWatcher) WatchSuites(args []string, additionalArgs []string) { - suites, _ := findSuites(args, w.commandFlags.Recurse, w.commandFlags.SkipPackage, false) - - if len(suites) == 0 { - complainAndQuit("Found no test suites") - } - - fmt.Printf("Identified %d test %s. Locating dependencies to a depth of %d (this may take a while)...\n", len(suites), pluralizedWord("suite", "suites", len(suites)), w.commandFlags.Depth) - deltaTracker := watch.NewDeltaTracker(w.commandFlags.Depth, regexp.MustCompile(w.commandFlags.WatchRegExp)) - delta, errors := deltaTracker.Delta(suites) - - fmt.Printf("Watching %d %s:\n", len(delta.NewSuites), pluralizedWord("suite", "suites", len(delta.NewSuites))) - for _, suite := range delta.NewSuites { - fmt.Println(" " + suite.Description()) - } - - for suite, err := range errors { - fmt.Printf("Failed to watch %s: %s\n", suite.PackageName, err) - } - - if len(suites) == 1 { - runners := w.runnersForSuites(suites, additionalArgs) - w.suiteRunner.RunSuites(runners, w.commandFlags.NumCompilers, true, nil) - runners[0].CleanUp() - } - - ticker := time.NewTicker(time.Second) - - for { - select { - case <-ticker.C: - suites, _ := findSuites(args, w.commandFlags.Recurse, w.commandFlags.SkipPackage, false) - delta, _ := deltaTracker.Delta(suites) - coloredStream := colorable.NewColorableStdout() - - suitesToRun := []testsuite.TestSuite{} - - if len(delta.NewSuites) > 0 { - fmt.Fprintf(coloredStream, greenColor+"Detected %d new %s:\n"+defaultStyle, len(delta.NewSuites), pluralizedWord("suite", "suites", len(delta.NewSuites))) - for _, suite := range delta.NewSuites { - suitesToRun = append(suitesToRun, suite.Suite) - fmt.Fprintln(coloredStream, " "+suite.Description()) - } - } - - modifiedSuites := delta.ModifiedSuites() - if len(modifiedSuites) > 0 { - fmt.Fprintln(coloredStream, greenColor+"\nDetected changes in:"+defaultStyle) - for _, pkg := range delta.ModifiedPackages { - fmt.Fprintln(coloredStream, " "+pkg) - } - fmt.Fprintf(coloredStream, greenColor+"Will run %d %s:\n"+defaultStyle, len(modifiedSuites), pluralizedWord("suite", "suites", len(modifiedSuites))) - for _, suite := range modifiedSuites { - suitesToRun = append(suitesToRun, suite.Suite) - fmt.Fprintln(coloredStream, " "+suite.Description()) - } - fmt.Fprintln(coloredStream, "") - } - - if len(suitesToRun) > 0 { - w.UpdateSeed() - w.ComputeSuccinctMode(len(suitesToRun)) - runners := w.runnersForSuites(suitesToRun, additionalArgs) - result, _ := w.suiteRunner.RunSuites(runners, w.commandFlags.NumCompilers, true, func(suite testsuite.TestSuite) { - deltaTracker.WillRun(suite) - }) - for _, runner := range runners { - runner.CleanUp() - } - if !w.interruptHandler.WasInterrupted() { - color := redColor - if result.Passed { - color = greenColor - } - fmt.Fprintln(coloredStream, color+"\nDone. Resuming watch..."+defaultStyle) - } - } - - case <-w.interruptHandler.C: - return - } - } -} - -func (w *SpecWatcher) ComputeSuccinctMode(numSuites int) { - if config.DefaultReporterConfig.Verbose { - config.DefaultReporterConfig.Succinct = false - return - } - - if w.commandFlags.wasSet("succinct") { - return - } - - if numSuites == 1 { - config.DefaultReporterConfig.Succinct = false - } - - if numSuites > 1 { - config.DefaultReporterConfig.Succinct = true - } -} - -func (w *SpecWatcher) UpdateSeed() { - if !w.commandFlags.wasSet("seed") { - config.GinkgoConfig.RandomSeed = time.Now().Unix() - } -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/extra_functions_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/extra_functions_test.go deleted file mode 100644 index ccb3669a..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/extra_functions_test.go +++ /dev/null @@ -1,14 +0,0 @@ -package tmp - -import ( - "testing" -) - -func TestSomethingLessImportant(t *testing.T) { - strp := "hello!" - somethingImportant(t, &strp) -} - -func somethingImportant(t *testing.T, message *string) { - t.Log("Something important happened in a test: " + *message) -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/nested/nested_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/nested/nested_test.go deleted file mode 100644 index cde42e47..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/nested/nested_test.go +++ /dev/null @@ -1,10 +0,0 @@ -package nested - -import ( - "testing" -) - -func TestSomethingLessImportant(t *testing.T) { - whatever := &UselessStruct{} - t.Fail(whatever.ImportantField != "SECRET_PASSWORD") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/nested_without_gofiles/subpackage/nested_subpackage_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/nested_without_gofiles/subpackage/nested_subpackage_test.go deleted file mode 100644 index 7cdd326c..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/nested_without_gofiles/subpackage/nested_subpackage_test.go +++ /dev/null @@ -1,9 +0,0 @@ -package subpackage - -import ( - "testing" -) - -func TestNestedSubPackages(t *testing.T) { - t.Fail(true) -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/outside_package_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/outside_package_test.go deleted file mode 100644 index a682eeaf..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/outside_package_test.go +++ /dev/null @@ -1,16 +0,0 @@ -package tmp_test - -import ( - "testing" -) - -type UselessStruct struct { - ImportantField string -} - -func TestSomethingImportant(t *testing.T) { - whatever := &UselessStruct{} - if whatever.ImportantField != "SECRET_PASSWORD" { - t.Fail() - } -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/xunit_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/xunit_test.go deleted file mode 100644 index 049829a7..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_fixtures/xunit_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package tmp - -import ( - "testing" -) - -type UselessStruct struct { - ImportantField string - T *testing.T -} - -var testFunc = func(t *testing.T, arg *string) {} - -func assertEqual(t *testing.T, arg1, arg2 interface{}) { - if arg1 != arg2 { - t.Fail() - } -} - -func TestSomethingImportant(t *testing.T) { - whatever := &UselessStruct{ - T: t, - ImportantField: "SECRET_PASSWORD", - } - something := &UselessStruct{ImportantField: "string value"} - assertEqual(t, whatever.ImportantField, "SECRET_PASSWORD") - assertEqual(t, something.ImportantField, "string value") - - var foo = func(t *testing.T) {} - foo(t) - - strp := "something" - testFunc(t, &strp) - t.Fail() -} - -func Test3Things(t *testing.T) { - if 3 != 3 { - t.Fail() - } -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/extra_functions_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/extra_functions_test.go deleted file mode 100644 index 1c2c56ce..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/extra_functions_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package tmp - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("Testing with Ginkgo", func() { - It("something less important", func() { - - strp := "hello!" - somethingImportant(GinkgoT(), &strp) - }) -}) - -func somethingImportant(t GinkgoTInterface, message *string) { - t.Log("Something important happened in a test: " + *message) -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/fixtures_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/fixtures_suite_test.go deleted file mode 100644 index a9a404b5..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/fixtures_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package tmp - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestTmp(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Tmp Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_subpackage_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_subpackage_test.go deleted file mode 100644 index 3653eae8..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_subpackage_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package subpackage - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("Testing with Ginkgo", func() { - It("nested sub packages", func() { - GinkgoT().Fail(true) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_suite_test.go deleted file mode 100644 index d3d35e81..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package nested_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestNested(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Nested Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_test.go deleted file mode 100644 index 47364b81..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/nested_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package nested - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("Testing with Ginkgo", func() { - It("something less important", func() { - - whatever := &UselessStruct{} - GinkgoT().Fail(whatever.ImportantField != "SECRET_PASSWORD") - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/outside_package_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/outside_package_test.go deleted file mode 100644 index 1f2e332c..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/outside_package_test.go +++ /dev/null @@ -1,19 +0,0 @@ -package tmp_test - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("Testing with Ginkgo", func() { - It("something important", func() { - - whatever := &UselessStruct{} - if whatever.ImportantField != "SECRET_PASSWORD" { - GinkgoT().Fail() - } - }) -}) - -type UselessStruct struct { - ImportantField string -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/suite_test.go deleted file mode 100644 index fd69d333..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package tmp_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestConvertFixtures(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "ConvertFixtures Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/xunit_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/xunit_test.go deleted file mode 100644 index dbe3b419..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/convert_goldmasters/xunit_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package tmp - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("Testing with Ginkgo", func() { - It("something important", func() { - - whatever := &UselessStruct{ - T: GinkgoT(), - ImportantField: "SECRET_PASSWORD", - } - something := &UselessStruct{ImportantField: "string value"} - assertEqual(GinkgoT(), whatever.ImportantField, "SECRET_PASSWORD") - assertEqual(GinkgoT(), something.ImportantField, "string value") - - var foo = func(t GinkgoTInterface) {} - foo(GinkgoT()) - - strp := "something" - testFunc(GinkgoT(), &strp) - GinkgoT().Fail() - }) - It("3 things", func() { - - if 3 != 3 { - GinkgoT().Fail() - } - }) -}) - -type UselessStruct struct { - ImportantField string - T GinkgoTInterface -} - -var testFunc = func(t GinkgoTInterface, arg *string) {} - -func assertEqual(t GinkgoTInterface, arg1, arg2 interface{}) { - if arg1 != arg2 { - t.Fail() - } -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage.go deleted file mode 100644 index 436e21d1..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage.go +++ /dev/null @@ -1,21 +0,0 @@ -package coverage_fixture - -func A() string { - return "A" -} - -func B() string { - return "B" -} - -func C() string { - return "C" -} - -func D() string { - return "D" -} - -func E() string { - return "untested" -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage_fixture_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage_fixture_suite_test.go deleted file mode 100644 index 2831bf7d..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage_fixture_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package coverage_fixture_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestCoverageFixture(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "CoverageFixture Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage_fixture_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage_fixture_test.go deleted file mode 100644 index 12a72dce..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/coverage_fixture_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package coverage_fixture_test - -import ( - . "github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture" - . "github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("CoverageFixture", func() { - It("should test A", func() { - Ω(A()).Should(Equal("A")) - }) - - It("should test B", func() { - Ω(B()).Should(Equal("B")) - }) - - It("should test C", func() { - Ω(C()).Should(Equal("C")) - }) - - It("should test D", func() { - Ω(D()).Should(Equal("D")) - }) - - It("should test external package", func() { - Ω(Tested()).Should(Equal("tested")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture/external_coverage.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture/external_coverage.go deleted file mode 100644 index 5280d4dd..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture/external_coverage.go +++ /dev/null @@ -1,9 +0,0 @@ -package external_coverage - -func Tested() string { - return "tested" -} - -func Untested() string { - return "untested" -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/does_not_compile/does_not_compile_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/does_not_compile/does_not_compile_suite_test.go deleted file mode 100644 index 01e79269..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/does_not_compile/does_not_compile_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package does_not_compile_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestDoes_not_compile(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Does_not_compile Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/does_not_compile/does_not_compile_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/does_not_compile/does_not_compile_test.go deleted file mode 100644 index e4f22b3c..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/does_not_compile/does_not_compile_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package does_not_compile_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/integration/_fixtures/does_not_compile" - . "github.com/onsi/gomega" -) - -var _ = Describe("DoesNotCompile", func() { - -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/eventually_failing/eventually_failing_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/eventually_failing/eventually_failing_suite_test.go deleted file mode 100644 index 97fa2e77..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/eventually_failing/eventually_failing_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package eventually_failing_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestEventuallyFailing(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "EventuallyFailing Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/eventually_failing/eventually_failing_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/eventually_failing/eventually_failing_test.go deleted file mode 100644 index 6c83b425..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/eventually_failing/eventually_failing_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package eventually_failing_test - -import ( - "fmt" - "io/ioutil" - "strings" - "time" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("EventuallyFailing", func() { - It("should fail on the third try", func() { - time.Sleep(time.Second) - files, err := ioutil.ReadDir(".") - Ω(err).ShouldNot(HaveOccurred()) - - numRuns := 1 - for _, file := range files { - if strings.HasPrefix(file.Name(), "counter") { - numRuns++ - } - } - - Ω(numRuns).Should(BeNumerically("<", 3)) - ioutil.WriteFile(fmt.Sprintf("./counter-%d", numRuns), []byte("foo"), 0777) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/exiting_synchronized_setup_tests/exiting_synchronized_setup_tests_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/exiting_synchronized_setup_tests/exiting_synchronized_setup_tests_suite_test.go deleted file mode 100644 index 045ca7c6..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/exiting_synchronized_setup_tests/exiting_synchronized_setup_tests_suite_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package synchronized_setup_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "fmt" - "os" - "testing" -) - -func TestSynchronized_setup_tests(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Synchronized_setup_tests Suite") -} - -var beforeData string - -var _ = SynchronizedBeforeSuite(func() []byte { - fmt.Printf("BEFORE_A_%d\n", GinkgoParallelNode()) - os.Exit(1) - return []byte("WHAT EVZ") -}, func(data []byte) { - println("NEVER SEE THIS") -}) - -var _ = Describe("Synchronized Setup", func() { - It("should do nothing", func() { - Ω(true).Should(BeTrue()) - }) - - It("should do nothing", func() { - Ω(true).Should(BeTrue()) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/fail_fixture/fail_fixture_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/fail_fixture/fail_fixture_suite_test.go deleted file mode 100644 index 6e822643..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/fail_fixture/fail_fixture_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package fail_fixture_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFail_fixture(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Fail_fixture Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/fail_fixture/fail_fixture_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/fail_fixture/fail_fixture_test.go deleted file mode 100644 index 801acf13..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/fail_fixture/fail_fixture_test.go +++ /dev/null @@ -1,99 +0,0 @@ -package fail_fixture_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = It("handles top level failures", func() { - Ω("a top level failure on line 9").Should(Equal("nope")) - println("NEVER SEE THIS") -}) - -var _ = It("handles async top level failures", func(done Done) { - Fail("an async top level failure on line 14") - println("NEVER SEE THIS") -}, 0.1) - -var _ = It("FAIL in a goroutine", func(done Done) { - go func() { - defer GinkgoRecover() - Fail("a top level goroutine failure on line 21") - println("NEVER SEE THIS") - }() -}, 0.1) - -var _ = Describe("Excercising different failure modes", func() { - It("synchronous failures", func() { - Ω("a sync failure").Should(Equal("nope")) - println("NEVER SEE THIS") - }) - - It("synchronous panics", func() { - panic("a sync panic") - println("NEVER SEE THIS") - }) - - It("synchronous failures with FAIL", func() { - Fail("a sync FAIL failure") - println("NEVER SEE THIS") - }) - - It("async timeout", func(done Done) { - Ω(true).Should(BeTrue()) - }, 0.1) - - It("async failure", func(done Done) { - Ω("an async failure").Should(Equal("nope")) - println("NEVER SEE THIS") - }, 0.1) - - It("async panic", func(done Done) { - panic("an async panic") - println("NEVER SEE THIS") - }, 0.1) - - It("async failure with FAIL", func(done Done) { - Fail("an async FAIL failure") - println("NEVER SEE THIS") - }, 0.1) - - It("FAIL in a goroutine", func(done Done) { - go func() { - defer GinkgoRecover() - Fail("a goroutine FAIL failure") - println("NEVER SEE THIS") - }() - }, 0.1) - - It("Gomega in a goroutine", func(done Done) { - go func() { - defer GinkgoRecover() - Ω("a goroutine failure").Should(Equal("nope")) - println("NEVER SEE THIS") - }() - }, 0.1) - - It("Panic in a goroutine", func(done Done) { - go func() { - defer GinkgoRecover() - panic("a goroutine panic") - println("NEVER SEE THIS") - }() - }, 0.1) - - Measure("a FAIL measure", func(Benchmarker) { - Fail("a measure FAIL failure") - println("NEVER SEE THIS") - }, 1) - - Measure("a gomega failed measure", func(Benchmarker) { - Ω("a measure failure").Should(Equal("nope")) - println("NEVER SEE THIS") - }, 1) - - Measure("a panicking measure", func(Benchmarker) { - panic("a measure panic") - println("NEVER SEE THIS") - }, 1) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_after_suite/failing_after_suite_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_after_suite/failing_after_suite_suite_test.go deleted file mode 100644 index 0e410aae..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_after_suite/failing_after_suite_suite_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package failing_before_suite_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFailingAfterSuite(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "FailingAfterSuite Suite") -} - -var _ = BeforeSuite(func() { - println("BEFORE SUITE") -}) - -var _ = AfterSuite(func() { - println("AFTER SUITE") - panic("BAM!") -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_after_suite/failing_after_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_after_suite/failing_after_suite_test.go deleted file mode 100644 index 3902ec6c..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_after_suite/failing_after_suite_test.go +++ /dev/null @@ -1,15 +0,0 @@ -package failing_before_suite_test - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("FailingBeforeSuite", func() { - It("should run", func() { - println("A TEST") - }) - - It("should run", func() { - println("A TEST") - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_before_suite/failing_before_suite_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_before_suite/failing_before_suite_suite_test.go deleted file mode 100644 index 109ea360..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_before_suite/failing_before_suite_suite_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package failing_before_suite_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFailing_before_suite(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Failing_before_suite Suite") -} - -var _ = BeforeSuite(func() { - println("BEFORE SUITE") - panic("BAM!") -}) - -var _ = AfterSuite(func() { - println("AFTER SUITE") -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_before_suite/failing_before_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_before_suite/failing_before_suite_test.go deleted file mode 100644 index e8697c64..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_before_suite/failing_before_suite_test.go +++ /dev/null @@ -1,15 +0,0 @@ -package failing_before_suite_test - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("FailingBeforeSuite", func() { - It("should never run", func() { - println("NEVER SEE THIS") - }) - - It("should never run", func() { - println("NEVER SEE THIS") - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests.go deleted file mode 100644 index e32cd619..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests.go +++ /dev/null @@ -1,5 +0,0 @@ -package failing_ginkgo_tests - -func AlwaysFalse() bool { - return false -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests_suite_test.go deleted file mode 100644 index 49939bda..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package failing_ginkgo_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFailing_ginkgo_tests(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Failing_ginkgo_tests Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests_test.go deleted file mode 100644 index d9c01e32..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests/failing_ginkgo_tests_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package failing_ginkgo_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/integration/_fixtures/failing_ginkgo_tests" - . "github.com/onsi/gomega" -) - -var _ = Describe("FailingGinkgoTests", func() { - It("should fail", func() { - Ω(AlwaysFalse()).Should(BeTrue()) - }) - - It("should pass", func() { - Ω(AlwaysFalse()).Should(BeFalse()) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags.go deleted file mode 100644 index a440abda..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags.go +++ /dev/null @@ -1,9 +0,0 @@ -package flags - -func Tested() string { - return "tested" -} - -func Untested() string { - return "untested" -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags_suite_test.go deleted file mode 100644 index 0b3071f6..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package flags_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFlags(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Flags Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags_test.go deleted file mode 100644 index 5cd9b72f..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/flags_tests/flags_test.go +++ /dev/null @@ -1,95 +0,0 @@ -package flags_test - -import ( - "flag" - "fmt" - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/integration/_fixtures/flags_tests" - . "github.com/onsi/gomega" - "time" - remapped "math" -) - -var customFlag string - -func init() { - flag.StringVar(&customFlag, "customFlag", "default", "custom flag!") -} - -var _ = Describe("Testing various flags", func() { - FDescribe("the focused set", func() { - Measure("a measurement", func(b Benchmarker) { - b.RecordValue("a value", 3) - }, 3) - - It("should honor -cover", func() { - Ω(Tested()).Should(Equal("tested")) - }) - - It("should allow gcflags", func() { - fmt.Printf("NaN returns %T\n", remapped.NaN()) - }) - - PIt("should honor -failOnPending and -noisyPendings") - - Describe("smores", func() { - It("should honor -skip: marshmallow", func() { - println("marshmallow") - }) - - It("should honor -focus: chocolate", func() { - println("chocolate") - }) - }) - - It("should detect races", func(done Done) { - var a string - go func() { - a = "now you don't" - close(done) - }() - a = "now you see me" - println(a) - }) - - It("should randomize A", func() { - println("RANDOM_A") - }) - - It("should randomize B", func() { - println("RANDOM_B") - }) - - It("should randomize C", func() { - println("RANDOM_C") - }) - - It("should honor -slowSpecThreshold", func() { - time.Sleep(100 * time.Millisecond) - }) - - It("should pass in additional arguments after '--' directly to the test process", func() { - fmt.Printf("CUSTOM_FLAG: %s", customFlag) - }) - }) - - Describe("more smores", func() { - It("should not run these unless -focus is set", func() { - println("smores") - }) - }) - - Describe("a failing test", func() { - It("should fail", func() { - Ω(true).Should(Equal(false)) - }) - }) - - Describe("a flaky test", func() { - runs := 0 - It("should only pass the second time it's run", func() { - runs++ - Ω(runs).Should(BeNumerically("==", 2)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/focused_fixture/focused_fixture_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/focused_fixture/focused_fixture_suite_test.go deleted file mode 100644 index 92d0c6e4..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/focused_fixture/focused_fixture_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package focused_fixture_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFocused_fixture(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Focused_fixture Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/focused_fixture/focused_fixture_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/focused_fixture/focused_fixture_test.go deleted file mode 100644 index 16ad16de..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/focused_fixture/focused_fixture_test.go +++ /dev/null @@ -1,63 +0,0 @@ -package focused_fixture_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/extensions/table" -) - -var _ = Describe("FocusedFixture", func() { - FDescribe("focused", func() { - It("focused", func() { - - }) - }) - - FContext("focused", func() { - It("focused", func() { - - }) - }) - - FIt("focused", func() { - - }) - - FMeasure("focused", func(b Benchmarker) { - - }, 2) - - FDescribeTable("focused", - func() {}, - Entry("focused"), - ) - - DescribeTable("focused", - func() {}, - FEntry("focused"), - ) - - Describe("not focused", func() { - It("not focused", func() { - - }) - }) - - Context("not focused", func() { - It("not focused", func() { - - }) - }) - - It("not focused", func() { - - }) - - Measure("not focused", func(b Benchmarker) { - - }, 2) - - DescribeTable("not focused", - func() {}, - Entry("not focused"), - ) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/hanging_suite/hanging_suite_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/hanging_suite/hanging_suite_suite_test.go deleted file mode 100644 index e8dd54b5..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/hanging_suite/hanging_suite_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package hanging_suite_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestHangingSuite(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "HangingSuite Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/hanging_suite/hanging_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/hanging_suite/hanging_suite_test.go deleted file mode 100644 index 1728dcbe..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/hanging_suite/hanging_suite_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package hanging_suite_test - -import ( - "fmt" - "time" - . "github.com/onsi/ginkgo" -) - -var _ = AfterSuite(func() { - fmt.Println("Heading Out After Suite") -}) - -var _ = Describe("HangingSuite", func() { - BeforeEach(func() { - fmt.Fprintln(GinkgoWriter, "Just beginning") - }) - - Context("inner context", func() { - BeforeEach(func() { - fmt.Fprintln(GinkgoWriter, "Almost there...") - }) - - It("should hang out for a while", func() { - fmt.Fprintln(GinkgoWriter, "Hanging Out") - fmt.Println("Sleeping...") - time.Sleep(time.Hour) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests.go deleted file mode 100644 index ca12c0d9..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests.go +++ /dev/null @@ -1,5 +0,0 @@ -package more_ginkgo_tests - -func AlwaysTrue() bool { - return true -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests_suite_test.go deleted file mode 100644 index 1e15c885..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package more_ginkgo_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestMore_ginkgo_tests(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "More_ginkgo_tests Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests_test.go deleted file mode 100644 index 0549f62f..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests/more_ginkgo_tests_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package more_ginkgo_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/integration/_fixtures/more_ginkgo_tests" - . "github.com/onsi/gomega" -) - -var _ = Describe("MoreGinkgoTests", func() { - It("should pass", func() { - Ω(AlwaysTrue()).Should(BeTrue()) - }) - - It("should always pass", func() { - Ω(AlwaysTrue()).Should(BeTrue()) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_test_fn/no_test_fn.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_test_fn/no_test_fn.go deleted file mode 100644 index bdf1b54b..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_test_fn/no_test_fn.go +++ /dev/null @@ -1,5 +0,0 @@ -package no_test_fn - -func StringIdentity(a string) string { - return a -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_test_fn/no_test_fn_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_test_fn/no_test_fn_test.go deleted file mode 100644 index 6c38b1e4..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_test_fn/no_test_fn_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package no_test_fn_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/integration/_fixtures/no_test_fn" - . "github.com/onsi/gomega" -) - -var _ = Describe("NoTestFn", func() { - It("should proxy strings", func() { - Ω(StringIdentity("foo")).Should(Equal("foo")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_tests/no_tests.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_tests/no_tests.go deleted file mode 100644 index da29a2ca..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/no_tests/no_tests.go +++ /dev/null @@ -1,4 +0,0 @@ -package main - -func main() { -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests.go deleted file mode 100644 index b710dd12..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests.go +++ /dev/null @@ -1,9 +0,0 @@ -package passing_ginkgo_tests - -func StringIdentity(a string) string { - return a -} - -func IntegerIdentity(a int) int { - return a -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests_suite_test.go deleted file mode 100644 index 31a3f7d0..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package passing_ginkgo_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestPassing_ginkgo_tests(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Passing_ginkgo_tests Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests_test.go deleted file mode 100644 index a5822fdd..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests/passing_ginkgo_tests_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package passing_ginkgo_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/integration/_fixtures/passing_ginkgo_tests" - . "github.com/onsi/gomega" -) - -var _ = Describe("PassingGinkgoTests", func() { - It("should proxy strings", func() { - Ω(StringIdentity("foo")).Should(Equal("foo")) - }) - - It("should proxy integers", func() { - Ω(IntegerIdentity(3)).Should(Equal(3)) - }) - - It("should do it again", func() { - Ω(StringIdentity("foo")).Should(Equal("foo")) - Ω(IntegerIdentity(3)).Should(Equal(3)) - }) - - It("should be able to run Bys", func() { - By("emitting one By") - Ω(3).Should(Equal(3)) - - By("emitting another By") - Ω(4).Should(Equal(4)) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_suite_setup/passing_suite_setup_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_suite_setup/passing_suite_setup_suite_test.go deleted file mode 100644 index 86c9aa2a..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_suite_setup/passing_suite_setup_suite_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package passing_before_suite_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestPassingSuiteSetup(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "PassingSuiteSetup Suite") -} - -var a string -var b string - -var _ = BeforeSuite(func() { - a = "ran before suite" - println("BEFORE SUITE") -}) - -var _ = AfterSuite(func() { - b = "ran after suite" - println("AFTER SUITE") -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_suite_setup/passing_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_suite_setup/passing_suite_test.go deleted file mode 100644 index f139e1d2..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/passing_suite_setup/passing_suite_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package passing_before_suite_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("PassingSuiteSetup", func() { - It("should pass", func() { - Ω(a).Should(Equal("ran before suite")) - Ω(b).Should(BeEmpty()) - }) - - It("should pass", func() { - Ω(a).Should(Equal("ran before suite")) - Ω(b).Should(BeEmpty()) - }) - - It("should pass", func() { - Ω(a).Should(Equal("ran before suite")) - Ω(b).Should(BeEmpty()) - }) - - It("should pass", func() { - Ω(a).Should(Equal("ran before suite")) - Ω(b).Should(BeEmpty()) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/progress_fixture/progress_fixture_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/progress_fixture/progress_fixture_suite_test.go deleted file mode 100644 index 74262bbc..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/progress_fixture/progress_fixture_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package progress_fixture_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestProgressFixture(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "ProgressFixture Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/progress_fixture/progress_fixture_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/progress_fixture/progress_fixture_test.go deleted file mode 100644 index 1e0aa795..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/progress_fixture/progress_fixture_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package progress_fixture_test - -import ( - "fmt" - - . "github.com/onsi/ginkgo" -) - -var _ = Describe("ProgressFixture", func() { - BeforeEach(func() { - fmt.Fprintln(GinkgoWriter, ">outer before<") - }) - - JustBeforeEach(func() { - fmt.Fprintln(GinkgoWriter, ">outer just before<") - }) - - AfterEach(func() { - fmt.Fprintln(GinkgoWriter, ">outer after<") - }) - - Context("Inner Context", func() { - BeforeEach(func() { - fmt.Fprintln(GinkgoWriter, ">inner before<") - }) - - JustBeforeEach(func() { - fmt.Fprintln(GinkgoWriter, ">inner just before<") - }) - - AfterEach(func() { - fmt.Fprintln(GinkgoWriter, ">inner after<") - }) - - It("should emit progress as it goes", func() { - fmt.Fprintln(GinkgoWriter, ">it<") - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/skip_fixture/skip_fixture_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/skip_fixture/skip_fixture_suite_test.go deleted file mode 100644 index b2028cf5..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/skip_fixture/skip_fixture_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package fail_fixture_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFail_fixture(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Skip_fixture Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/skip_fixture/skip_fixture_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/skip_fixture/skip_fixture_test.go deleted file mode 100644 index 72aeb8f4..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/skip_fixture/skip_fixture_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package fail_fixture_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = It("handles top level skips", func() { - Skip("a top level skip on line 9") - println("NEVER SEE THIS") -}) - -var _ = It("handles async top level skips", func(done Done) { - Skip("an async top level skip on line 14") - println("NEVER SEE THIS") -}, 0.1) - -var _ = It("SKIP in a goroutine", func(done Done) { - go func() { - defer GinkgoRecover() - Skip("a top level goroutine skip on line 21") - println("NEVER SEE THIS") - }() -}, 0.1) - -var _ = Describe("Excercising different skip modes", func() { - It("synchronous skip", func() { - Skip("a sync SKIP") - println("NEVER SEE THIS") - }) - - It("async skip", func(done Done) { - Skip("an async SKIP") - println("NEVER SEE THIS") - }, 0.1) - - It("SKIP in a goroutine", func(done Done) { - go func() { - defer GinkgoRecover() - Skip("a goroutine SKIP") - println("NEVER SEE THIS") - }() - }, 0.1) - - Measure("a SKIP measure", func(Benchmarker) { - Skip("a measure SKIP") - println("NEVER SEE THIS") - }, 1) -}) - - -var _ = Describe("SKIP in a BeforeEach", func() { - BeforeEach(func() { - Skip("a BeforeEach SKIP") - println("NEVER SEE THIS") - }) - - It("a SKIP BeforeEach", func() { - println("NEVER SEE THIS") - }) -}) - -var _ = Describe("SKIP in an AfterEach", func() { - AfterEach(func() { - Skip("an AfterEach SKIP") - println("NEVER SEE THIS") - }) - - It("a SKIP AfterEach", func() { - Expect(true).To(BeTrue()) - }) -}) \ No newline at end of file diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command.go deleted file mode 100644 index 1d670488..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command.go +++ /dev/null @@ -1,9 +0,0 @@ -package suite_command - -func Tested() string { - return "tested" -} - -func Untested() string { - return "untested" -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command_suite_test.go deleted file mode 100644 index 7f76d8b8..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package suite_command_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestSuiteCommand(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Suite Command Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command_test.go deleted file mode 100644 index e083d27a..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/suite_command_tests/suite_command_test.go +++ /dev/null @@ -1,18 +0,0 @@ -package suite_command_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("Testing suite command", func() { - It("it should succeed", func() { - Ω(true).Should(Equal(true)) - }) - - PIt("a failing test", func() { - It("should fail", func() { - Ω(true).Should(Equal(false)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/synchronized_setup_tests/synchronized_setup_tests_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/synchronized_setup_tests/synchronized_setup_tests_suite_test.go deleted file mode 100644 index b734854e..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/synchronized_setup_tests/synchronized_setup_tests_suite_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package synchronized_setup_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "fmt" - "testing" - "time" -) - -func TestSynchronized_setup_tests(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Synchronized_setup_tests Suite") -} - -var beforeData string - -var _ = SynchronizedBeforeSuite(func() []byte { - fmt.Printf("BEFORE_A_%d\n", GinkgoParallelNode()) - time.Sleep(100 * time.Millisecond) - return []byte("DATA") -}, func(data []byte) { - fmt.Printf("BEFORE_B_%d: %s\n", GinkgoParallelNode(), string(data)) - beforeData += string(data) + "OTHER" -}) - -var _ = SynchronizedAfterSuite(func() { - fmt.Printf("\nAFTER_A_%d\n", GinkgoParallelNode()) - time.Sleep(100 * time.Millisecond) -}, func() { - fmt.Printf("AFTER_B_%d\n", GinkgoParallelNode()) -}) - -var _ = Describe("Synchronized Setup", func() { - It("should run the before suite once", func() { - Ω(beforeData).Should(Equal("DATAOTHER")) - }) - - It("should run the before suite once", func() { - Ω(beforeData).Should(Equal("DATAOTHER")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/ignored_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/ignored_test.go deleted file mode 100644 index 51762353..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/ignored_test.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build complex_tests - -package tags_tests_test - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("Ignored", func() { - It("should not have these tests", func() { - - }) - - It("should not have these tests", func() { - - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/tags_tests_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/tags_tests_suite_test.go deleted file mode 100644 index dcb11bb1..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/tags_tests_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package tags_tests_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestTagsTests(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "TagsTests Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/tags_tests_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/tags_tests_test.go deleted file mode 100644 index b91a8923..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/tags_tests/tags_tests_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package tags_tests_test - -import ( - . "github.com/onsi/ginkgo" -) - -var _ = Describe("TagsTests", func() { - It("should have a test", func() { - - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/test_description/test_description_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/test_description/test_description_suite_test.go deleted file mode 100644 index 8976370d..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/test_description/test_description_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package test_description_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestTestDescription(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "TestDescription Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/test_description/test_description_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/test_description/test_description_test.go deleted file mode 100644 index 53c2779e..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/test_description/test_description_test.go +++ /dev/null @@ -1,23 +0,0 @@ -package test_description_test - -import ( - "fmt" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("TestDescription", func() { - It("should pass", func() { - Ω(true).Should(BeTrue()) - }) - - It("should fail", func() { - Ω(true).Should(BeFalse()) - }) - - AfterEach(func() { - description := CurrentGinkgoTestDescription() - fmt.Printf("%s:%t\n", description.FullTestText, description.Failed) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A.go deleted file mode 100644 index de2c6bbb..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A.go +++ /dev/null @@ -1,7 +0,0 @@ -package A - -import "github.com/onsi/B" - -func DoIt() string { - return B.DoIt() -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A_suite_test.go deleted file mode 100644 index 1b6cff4c..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package A_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestA(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "A Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A_test.go deleted file mode 100644 index 003530aa..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A/A_test.go +++ /dev/null @@ -1,14 +0,0 @@ -package A_test - -import ( - . "github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/A" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("A", func() { - It("should do it", func() { - Ω(DoIt()).Should(Equal("done!")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B.go deleted file mode 100644 index 990bab36..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B.go +++ /dev/null @@ -1,7 +0,0 @@ -package B - -import "github.com/onsi/C" - -func DoIt() string { - return C.DoIt() -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B_suite_test.go deleted file mode 100644 index e54fce66..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package B_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestB(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "B Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B_test.go deleted file mode 100644 index b147913c..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B/B_test.go +++ /dev/null @@ -1,14 +0,0 @@ -package B_test - -import ( - . "github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/B" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("B", func() { - It("should do it", func() { - Ω(DoIt()).Should(Equal("done!")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C.go deleted file mode 100644 index 205b6888..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C.go +++ /dev/null @@ -1,5 +0,0 @@ -package C - -func DoIt() string { - return "done!" -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C.json b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C.json deleted file mode 100644 index 421d025e..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "fixture": "data" -} \ No newline at end of file diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C_suite_test.go deleted file mode 100644 index 57a7a96b..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package C_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestC(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "C Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C_test.go deleted file mode 100644 index 7703fefa..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C/C_test.go +++ /dev/null @@ -1,14 +0,0 @@ -package C_test - -import ( - . "github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("C", func() { - It("should do it", func() { - Ω(DoIt()).Should(Equal("done!")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D.go deleted file mode 100644 index 4371b852..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D.go +++ /dev/null @@ -1,7 +0,0 @@ -package D - -import "github.com/onsi/C" - -func DoIt() string { - return C.DoIt() -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D_suite_test.go deleted file mode 100644 index 0ebefe6b..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package D_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestD(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "D Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D_test.go deleted file mode 100644 index 097945bf..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/D/D_test.go +++ /dev/null @@ -1,14 +0,0 @@ -package D_test - -import ( - . "github.com/onsi/ginkgo/integration/_fixtures/watch_fixtures/C" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("D", func() { - It("should do it", func() { - Ω(DoIt()).Should(Equal("done!")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/xunit_tests/xunit_tests.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/xunit_tests/xunit_tests.go deleted file mode 100644 index cb8fc8bc..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/xunit_tests/xunit_tests.go +++ /dev/null @@ -1,5 +0,0 @@ -package xunit_tests - -func AlwaysTrue() bool { - return true -} diff --git a/vendor/github.com/onsi/ginkgo/integration/_fixtures/xunit_tests/xunit_tests_test.go b/vendor/github.com/onsi/ginkgo/integration/_fixtures/xunit_tests/xunit_tests_test.go deleted file mode 100644 index a6ebbe14..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/_fixtures/xunit_tests/xunit_tests_test.go +++ /dev/null @@ -1,11 +0,0 @@ -package xunit_tests - -import ( - "testing" -) - -func TestAlwaysTrue(t *testing.T) { - if AlwaysTrue() != true { - t.Errorf("Expected true, got false") - } -} diff --git a/vendor/github.com/onsi/ginkgo/integration/convert_test.go b/vendor/github.com/onsi/ginkgo/integration/convert_test.go deleted file mode 100644 index f4fd678c..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/convert_test.go +++ /dev/null @@ -1,121 +0,0 @@ -package integration_test - -import ( - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "strings" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("ginkgo convert", func() { - var tmpDir string - - readConvertedFileNamed := func(pathComponents ...string) string { - pathToFile := filepath.Join(tmpDir, "convert_fixtures", filepath.Join(pathComponents...)) - bytes, err := ioutil.ReadFile(pathToFile) - ExpectWithOffset(1, err).NotTo(HaveOccurred()) - - return string(bytes) - } - - readGoldMasterNamed := func(filename string) string { - bytes, err := ioutil.ReadFile(filepath.Join("_fixtures", "convert_goldmasters", filename)) - Ω(err).ShouldNot(HaveOccurred()) - - return string(bytes) - } - - BeforeEach(func() { - var err error - - tmpDir, err = ioutil.TempDir("", "ginkgo-convert") - Ω(err).ShouldNot(HaveOccurred()) - - err = exec.Command("cp", "-r", filepath.Join("_fixtures", "convert_fixtures"), tmpDir).Run() - Ω(err).ShouldNot(HaveOccurred()) - }) - - JustBeforeEach(func() { - cwd, err := os.Getwd() - Ω(err).ShouldNot(HaveOccurred()) - - relPath, err := filepath.Rel(cwd, filepath.Join(tmpDir, "convert_fixtures")) - Ω(err).ShouldNot(HaveOccurred()) - - cmd := exec.Command(pathToGinkgo, "convert", relPath) - cmd.Env = os.Environ() - for i, env := range cmd.Env { - if strings.HasPrefix(env, "PATH") { - cmd.Env[i] = cmd.Env[i] + ":" + filepath.Dir(pathToGinkgo) - break - } - } - err = cmd.Run() - Ω(err).ShouldNot(HaveOccurred()) - }) - - AfterEach(func() { - err := os.RemoveAll(tmpDir) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("rewrites xunit tests as ginkgo tests", func() { - convertedFile := readConvertedFileNamed("xunit_test.go") - goldMaster := readGoldMasterNamed("xunit_test.go") - Ω(convertedFile).Should(Equal(goldMaster)) - }) - - It("rewrites all usages of *testing.T as mr.T()", func() { - convertedFile := readConvertedFileNamed("extra_functions_test.go") - goldMaster := readGoldMasterNamed("extra_functions_test.go") - Ω(convertedFile).Should(Equal(goldMaster)) - }) - - It("rewrites tests in the package dir that belong to other packages", func() { - convertedFile := readConvertedFileNamed("outside_package_test.go") - goldMaster := readGoldMasterNamed("outside_package_test.go") - Ω(convertedFile).Should(Equal(goldMaster)) - }) - - It("rewrites tests in nested packages", func() { - convertedFile := readConvertedFileNamed("nested", "nested_test.go") - goldMaster := readGoldMasterNamed("nested_test.go") - Ω(convertedFile).Should(Equal(goldMaster)) - }) - - Context("ginkgo test suite files", func() { - It("creates a ginkgo test suite file for the package you specified", func() { - testsuite := readConvertedFileNamed("convert_fixtures_suite_test.go") - goldMaster := readGoldMasterNamed("suite_test.go") - Ω(testsuite).Should(Equal(goldMaster)) - }) - - It("converts go tests in deeply nested packages (some may not contain go files)", func() { - testsuite := readConvertedFileNamed("nested_without_gofiles", "subpackage", "nested_subpackage_test.go") - goldMaster := readGoldMasterNamed("nested_subpackage_test.go") - Ω(testsuite).Should(Equal(goldMaster)) - }) - - It("creates ginkgo test suites for all nested packages", func() { - testsuite := readConvertedFileNamed("nested", "nested_suite_test.go") - goldMaster := readGoldMasterNamed("nested_suite_test.go") - Ω(testsuite).Should(Equal(goldMaster)) - }) - }) - - Context("with an existing test suite file", func() { - BeforeEach(func() { - goldMaster := readGoldMasterNamed("fixtures_suite_test.go") - err := ioutil.WriteFile(filepath.Join(tmpDir, "convert_fixtures", "tmp_suite_test.go"), []byte(goldMaster), 0600) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("gracefully handles existing test suite files", func() { - //nothing should have gone wrong! - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/coverage_test.go b/vendor/github.com/onsi/ginkgo/integration/coverage_test.go deleted file mode 100644 index 6b987a3b..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/coverage_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package integration_test - -import ( - "os" - "os/exec" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Coverage Specs", func() { - AfterEach(func() { - os.RemoveAll("./_fixtures/coverage_fixture/coverage_fixture.coverprofile") - }) - - It("runs coverage analysis in series and in parallel", func() { - session := startGinkgo("./_fixtures/coverage_fixture", "-cover") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - Ω(output).Should(ContainSubstring("coverage: 80.0% of statements")) - - serialCoverProfileOutput, err := exec.Command("go", "tool", "cover", "-func=./_fixtures/coverage_fixture/coverage_fixture.coverprofile").CombinedOutput() - Ω(err).ShouldNot(HaveOccurred()) - - os.RemoveAll("./_fixtures/coverage_fixture/coverage_fixture.coverprofile") - - Eventually(startGinkgo("./_fixtures/coverage_fixture", "-cover", "-nodes=4")).Should(gexec.Exit(0)) - - parallelCoverProfileOutput, err := exec.Command("go", "tool", "cover", "-func=./_fixtures/coverage_fixture/coverage_fixture.coverprofile").CombinedOutput() - Ω(err).ShouldNot(HaveOccurred()) - - Ω(parallelCoverProfileOutput).Should(Equal(serialCoverProfileOutput)) - - By("handling external packages") - session = startGinkgo("./_fixtures/coverage_fixture", "-coverpkg=github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture,github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture") - Eventually(session).Should(gexec.Exit(0)) - output = session.Out.Contents() - Ω(output).Should(ContainSubstring("coverage: 71.4% of statements in github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture, github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture")) - - serialCoverProfileOutput, err = exec.Command("go", "tool", "cover", "-func=./_fixtures/coverage_fixture/coverage_fixture.coverprofile").CombinedOutput() - Ω(err).ShouldNot(HaveOccurred()) - - os.RemoveAll("./_fixtures/coverage_fixture/coverage_fixture.coverprofile") - - Eventually(startGinkgo("./_fixtures/coverage_fixture", "-coverpkg=github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture,github.com/onsi/ginkgo/integration/_fixtures/coverage_fixture/external_coverage_fixture", "-nodes=4")).Should(gexec.Exit(0)) - - parallelCoverProfileOutput, err = exec.Command("go", "tool", "cover", "-func=./_fixtures/coverage_fixture/coverage_fixture.coverprofile").CombinedOutput() - Ω(err).ShouldNot(HaveOccurred()) - - Ω(parallelCoverProfileOutput).Should(Equal(serialCoverProfileOutput)) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/fail_test.go b/vendor/github.com/onsi/ginkgo/integration/fail_test.go deleted file mode 100644 index 8dcf5e4a..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/fail_test.go +++ /dev/null @@ -1,48 +0,0 @@ -package integration_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Failing Specs", func() { - var pathToTest string - - BeforeEach(func() { - pathToTest = tmpPath("failing") - copyIn("fail_fixture", pathToTest) - }) - - It("should fail in all the possible ways", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(output).ShouldNot(ContainSubstring("NEVER SEE THIS")) - - Ω(output).Should(ContainSubstring("a top level failure on line 9")) - Ω(output).Should(ContainSubstring("fail_fixture_test.go:9")) - Ω(output).Should(ContainSubstring("an async top level failure on line 14")) - Ω(output).Should(ContainSubstring("fail_fixture_test.go:14")) - Ω(output).Should(ContainSubstring("a top level goroutine failure on line 21")) - Ω(output).Should(ContainSubstring("fail_fixture_test.go:21")) - - Ω(output).Should(ContainSubstring("a sync failure")) - Ω(output).Should(MatchRegexp(`Test Panicked\n\s+a sync panic`)) - Ω(output).Should(ContainSubstring("a sync FAIL failure")) - Ω(output).Should(ContainSubstring("async timeout [It]")) - Ω(output).Should(ContainSubstring("Timed out")) - Ω(output).Should(ContainSubstring("an async failure")) - Ω(output).Should(MatchRegexp(`Test Panicked\n\s+an async panic`)) - Ω(output).Should(ContainSubstring("an async FAIL failure")) - Ω(output).Should(ContainSubstring("a goroutine FAIL failure")) - Ω(output).Should(ContainSubstring("a goroutine failure")) - Ω(output).Should(MatchRegexp(`Test Panicked\n\s+a goroutine panic`)) - Ω(output).Should(ContainSubstring("a measure failure")) - Ω(output).Should(ContainSubstring("a measure FAIL failure")) - Ω(output).Should(MatchRegexp(`Test Panicked\n\s+a measure panic`)) - - Ω(output).Should(ContainSubstring("0 Passed | 16 Failed")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/flags_test.go b/vendor/github.com/onsi/ginkgo/integration/flags_test.go deleted file mode 100644 index e34102d9..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/flags_test.go +++ /dev/null @@ -1,236 +0,0 @@ -package integration_test - -import ( - "io/ioutil" - "os" - "path/filepath" - "strings" - - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Flags Specs", func() { - var pathToTest string - - BeforeEach(func() { - pathToTest = tmpPath("flags") - copyIn("flags_tests", pathToTest) - }) - - getRandomOrders := func(output string) []int { - return []int{strings.Index(output, "RANDOM_A"), strings.Index(output, "RANDOM_B"), strings.Index(output, "RANDOM_C")} - } - - It("normally passes, runs measurements, prints out noisy pendings, does not randomize tests, and honors the programmatic focus", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Ran 3 samples:"), "has a measurement") - Ω(output).Should(ContainSubstring("11 Passed")) - Ω(output).Should(ContainSubstring("0 Failed")) - Ω(output).Should(ContainSubstring("1 Pending")) - Ω(output).Should(ContainSubstring("3 Skipped")) - Ω(output).Should(ContainSubstring("[PENDING]")) - Ω(output).Should(ContainSubstring("marshmallow")) - Ω(output).Should(ContainSubstring("chocolate")) - Ω(output).Should(ContainSubstring("CUSTOM_FLAG: default")) - Ω(output).Should(ContainSubstring("Detected Programmatic Focus - setting exit status to %d", types.GINKGO_FOCUS_EXIT_CODE)) - Ω(output).ShouldNot(ContainSubstring("smores")) - Ω(output).ShouldNot(ContainSubstring("SLOW TEST")) - Ω(output).ShouldNot(ContainSubstring("should honor -slowSpecThreshold")) - - orders := getRandomOrders(output) - Ω(orders[0]).Should(BeNumerically("<", orders[1])) - Ω(orders[1]).Should(BeNumerically("<", orders[2])) - }) - - It("should run a coverprofile when passed -cover", func() { - session := startGinkgo(pathToTest, "--noColor", "--cover", "--focus=the focused set") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - _, err := os.Stat(filepath.Join(pathToTest, "flags.coverprofile")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(output).Should(ContainSubstring("coverage: ")) - }) - - It("should fail when there are pending tests and it is passed --failOnPending", func() { - session := startGinkgo(pathToTest, "--noColor", "--failOnPending") - Eventually(session).Should(gexec.Exit(1)) - }) - - It("should fail if the test suite takes longer than the timeout", func() { - session := startGinkgo(pathToTest, "--noColor", "--timeout=1ms") - Eventually(session).Should(gexec.Exit(1)) - }) - - It("should not print out pendings when --noisyPendings=false", func() { - session := startGinkgo(pathToTest, "--noColor", "--noisyPendings=false") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - - Ω(output).ShouldNot(ContainSubstring("[PENDING]")) - Ω(output).Should(ContainSubstring("1 Pending")) - }) - - It("should override the programmatic focus when told to focus", func() { - session := startGinkgo(pathToTest, "--noColor", "--focus=smores") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("marshmallow")) - Ω(output).Should(ContainSubstring("chocolate")) - Ω(output).Should(ContainSubstring("smores")) - Ω(output).Should(ContainSubstring("3 Passed")) - Ω(output).Should(ContainSubstring("0 Failed")) - Ω(output).Should(ContainSubstring("0 Pending")) - Ω(output).Should(ContainSubstring("12 Skipped")) - }) - - It("should override the programmatic focus when told to skip", func() { - session := startGinkgo(pathToTest, "--noColor", "--skip=marshmallow|failing|flaky") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).ShouldNot(ContainSubstring("marshmallow")) - Ω(output).Should(ContainSubstring("chocolate")) - Ω(output).Should(ContainSubstring("smores")) - Ω(output).Should(ContainSubstring("11 Passed")) - Ω(output).Should(ContainSubstring("0 Failed")) - Ω(output).Should(ContainSubstring("1 Pending")) - Ω(output).Should(ContainSubstring("3 Skipped")) - }) - - It("should run the race detector when told to", func() { - session := startGinkgo(pathToTest, "--noColor", "--race") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("WARNING: DATA RACE")) - }) - - It("should randomize tests when told to", func() { - session := startGinkgo(pathToTest, "--noColor", "--randomizeAllSpecs", "--seed=17") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - - orders := getRandomOrders(output) - Ω(orders[0]).ShouldNot(BeNumerically("<", orders[1])) - }) - - It("should skip measurements when told to", func() { - session := startGinkgo(pathToTest, "--skipMeasurements") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - - Ω(output).ShouldNot(ContainSubstring("Ran 3 samples:"), "has a measurement") - Ω(output).Should(ContainSubstring("4 Skipped")) - }) - - It("should watch for slow specs", func() { - session := startGinkgo(pathToTest, "--slowSpecThreshold=0.05") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("SLOW TEST")) - Ω(output).Should(ContainSubstring("should honor -slowSpecThreshold")) - }) - - It("should pass additional arguments in", func() { - session := startGinkgo(pathToTest, "--", "--customFlag=madagascar") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("CUSTOM_FLAG: madagascar")) - }) - - It("should print out full stack traces for failures when told to", func() { - session := startGinkgo(pathToTest, "--focus=a failing test", "--trace") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Full Stack Trace")) - }) - - It("should fail fast when told to", func() { - pathToTest = tmpPath("fail") - copyIn("fail_fixture", pathToTest) - session := startGinkgo(pathToTest, "--failFast") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("1 Failed")) - Ω(output).Should(ContainSubstring("15 Skipped")) - }) - - Context("with a flaky test", func() { - It("should normally fail", func() { - session := startGinkgo(pathToTest, "--focus=flaky") - Eventually(session).Should(gexec.Exit(1)) - }) - - It("should pass if retries are requested", func() { - session := startGinkgo(pathToTest, "--focus=flaky --flakeAttempts=2") - Eventually(session).Should(gexec.Exit(0)) - }) - }) - - It("should perform a dry run when told to", func() { - pathToTest = tmpPath("fail") - copyIn("fail_fixture", pathToTest) - session := startGinkgo(pathToTest, "--dryRun", "-v") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("synchronous failures")) - Ω(output).Should(ContainSubstring("16 Specs")) - Ω(output).Should(ContainSubstring("0 Passed")) - Ω(output).Should(ContainSubstring("0 Failed")) - }) - - regextest := func(regexOption string, skipOrFocus string) string { - pathToTest = tmpPath("passing") - copyIn("passing_ginkgo_tests", pathToTest) - session := startGinkgo(pathToTest, regexOption, "--dryRun", "-v", skipOrFocus) - Eventually(session).Should(gexec.Exit(0)) - return string(session.Out.Contents()) - } - - It("regexScansFilePath (enabled) should skip and focus on file names", func() { - output := regextest("-regexScansFilePath=true", "-skip=/passing/") // everything gets skipped (nothing runs) - Ω(output).Should(ContainSubstring("0 of 4 Specs")) - output = regextest("-regexScansFilePath=true", "-focus=/passing/") // everything gets focused (everything runs) - Ω(output).Should(ContainSubstring("4 of 4 Specs")) - }) - - It("regexScansFilePath (disabled) should not effect normal filtering", func() { - output := regextest("-regexScansFilePath=false", "-skip=/passing/") // nothing gets skipped (everything runs) - Ω(output).Should(ContainSubstring("4 of 4 Specs")) - output = regextest("-regexScansFilePath=false", "-focus=/passing/") // nothing gets focused (nothing runs) - Ω(output).Should(ContainSubstring("0 of 4 Specs")) - }) - It("should honor compiler flags", func() { - session := startGinkgo(pathToTest, "-gcflags=-importmap 'math=math/cmplx'") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - Ω(output).Should(ContainSubstring("NaN returns complex128")) - }) - - It("should honor covermode flag", func() { - session := startGinkgo(pathToTest, "--noColor", "--covermode=count", "--focus=the focused set") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - Ω(output).Should(ContainSubstring("coverage: ")) - - coverageFile := filepath.Join(pathToTest, "flags.coverprofile") - _, err := os.Stat(coverageFile) - Ω(err).ShouldNot(HaveOccurred()) - contents, err := ioutil.ReadFile(coverageFile) - Ω(err).ShouldNot(HaveOccurred()) - Ω(contents).Should(ContainSubstring("mode: count")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/integration.go b/vendor/github.com/onsi/ginkgo/integration/integration.go deleted file mode 100644 index 76ab1b72..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/integration.go +++ /dev/null @@ -1 +0,0 @@ -package integration diff --git a/vendor/github.com/onsi/ginkgo/integration/integration_suite_test.go b/vendor/github.com/onsi/ginkgo/integration/integration_suite_test.go deleted file mode 100644 index 5cf9546d..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/integration_suite_test.go +++ /dev/null @@ -1,91 +0,0 @@ -package integration_test - -import ( - "io" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" - - "testing" - "time" -) - -var tmpDir string -var pathToGinkgo string - -func TestIntegration(t *testing.T) { - SetDefaultEventuallyTimeout(15 * time.Second) - RegisterFailHandler(Fail) - RunSpecs(t, "Integration Suite") -} - -var _ = SynchronizedBeforeSuite(func() []byte { - pathToGinkgo, err := gexec.Build("github.com/onsi/ginkgo/ginkgo") - Ω(err).ShouldNot(HaveOccurred()) - return []byte(pathToGinkgo) -}, func(computedPathToGinkgo []byte) { - pathToGinkgo = string(computedPathToGinkgo) -}) - -var _ = BeforeEach(func() { - var err error - tmpDir, err = ioutil.TempDir("", "ginkgo-run") - Ω(err).ShouldNot(HaveOccurred()) -}) - -var _ = AfterEach(func() { - err := os.RemoveAll(tmpDir) - Ω(err).ShouldNot(HaveOccurred()) -}) - -var _ = SynchronizedAfterSuite(func() {}, func() { - gexec.CleanupBuildArtifacts() -}) - -func tmpPath(destination string) string { - return filepath.Join(tmpDir, destination) -} - -func copyIn(fixture string, destination string) { - err := os.MkdirAll(destination, 0777) - Ω(err).ShouldNot(HaveOccurred()) - - filepath.Walk(filepath.Join("_fixtures", fixture), func(path string, info os.FileInfo, err error) error { - if info.IsDir() { - return nil - } - - base := filepath.Base(path) - - src, err := os.Open(path) - Ω(err).ShouldNot(HaveOccurred()) - defer src.Close() - - dst, err := os.Create(filepath.Join(destination, base)) - Ω(err).ShouldNot(HaveOccurred()) - defer dst.Close() - - _, err = io.Copy(dst, src) - Ω(err).ShouldNot(HaveOccurred()) - return nil - }) -} - -func ginkgoCommand(dir string, args ...string) *exec.Cmd { - cmd := exec.Command(pathToGinkgo, args...) - cmd.Dir = dir - - return cmd -} - -func startGinkgo(dir string, args ...string) *gexec.Session { - cmd := ginkgoCommand(dir, args...) - session, err := gexec.Start(cmd, GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - return session -} diff --git a/vendor/github.com/onsi/ginkgo/integration/interrupt_test.go b/vendor/github.com/onsi/ginkgo/integration/interrupt_test.go deleted file mode 100644 index dc3bf284..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/interrupt_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package integration_test - -import ( - "os/exec" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gbytes" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Interrupt", func() { - var pathToTest string - BeforeEach(func() { - pathToTest = tmpPath("hanging") - copyIn("hanging_suite", pathToTest) - }) - - Context("when interrupting a suite", func() { - var session *gexec.Session - BeforeEach(func() { - //we need to signal the actual process, so we must compile the test first - var err error - cmd := exec.Command("go", "test", "-c") - cmd.Dir = pathToTest - session, err = gexec.Start(cmd, GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - Eventually(session).Should(gexec.Exit(0)) - - //then run the compiled test directly - cmd = exec.Command("./hanging.test", "--test.v=true", "--ginkgo.noColor") - cmd.Dir = pathToTest - session, err = gexec.Start(cmd, GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Eventually(session).Should(gbytes.Say("Sleeping...")) - session.Interrupt() - Eventually(session, 1000).Should(gexec.Exit(1)) - }) - - It("should emit the contents of the GinkgoWriter", func() { - Ω(session).Should(gbytes.Say("Just beginning")) - Ω(session).Should(gbytes.Say("Almost there...")) - Ω(session).Should(gbytes.Say("Hanging Out")) - }) - - It("should run the AfterSuite", func() { - Ω(session).Should(gbytes.Say("Heading Out After Suite")) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/precompiled_test.go b/vendor/github.com/onsi/ginkgo/integration/precompiled_test.go deleted file mode 100644 index d9b78e0b..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/precompiled_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package integration_test - -import ( - "os" - "os/exec" - "path/filepath" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gbytes" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("ginkgo build", func() { - var pathToTest string - - BeforeEach(func() { - pathToTest = tmpPath("passing_ginkgo_tests") - copyIn("passing_ginkgo_tests", pathToTest) - session := startGinkgo(pathToTest, "build") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - Ω(output).Should(ContainSubstring("Compiling passing_ginkgo_tests")) - Ω(output).Should(ContainSubstring("compiled passing_ginkgo_tests.test")) - }) - - It("should build a test binary", func() { - _, err := os.Stat(filepath.Join(pathToTest, "passing_ginkgo_tests.test")) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should be possible to run the test binary directly", func() { - cmd := exec.Command("./passing_ginkgo_tests.test") - cmd.Dir = pathToTest - session, err := gexec.Start(cmd, GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - Eventually(session).Should(gexec.Exit(0)) - Ω(session).Should(gbytes.Say("Running Suite: Passing_ginkgo_tests Suite")) - }) - - It("should be possible to run the test binary via ginkgo", func() { - session := startGinkgo(pathToTest, "./passing_ginkgo_tests.test") - Eventually(session).Should(gexec.Exit(0)) - Ω(session).Should(gbytes.Say("Running Suite: Passing_ginkgo_tests Suite")) - }) - - It("should be possible to run the test binary in parallel", func() { - session := startGinkgo(pathToTest, "--nodes=4", "--noColor", "./passing_ginkgo_tests.test") - Eventually(session).Should(gexec.Exit(0)) - Ω(session).Should(gbytes.Say("Running Suite: Passing_ginkgo_tests Suite")) - Ω(session).Should(gbytes.Say("Running in parallel across 4 nodes")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/progress_test.go b/vendor/github.com/onsi/ginkgo/integration/progress_test.go deleted file mode 100644 index 8589c338..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/progress_test.go +++ /dev/null @@ -1,75 +0,0 @@ -package integration_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gbytes" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Emitting progress", func() { - var pathToTest string - var session *gexec.Session - var args []string - - BeforeEach(func() { - args = []string{"--noColor"} - pathToTest = tmpPath("progress") - copyIn("progress_fixture", pathToTest) - }) - - JustBeforeEach(func() { - session = startGinkgo(pathToTest, args...) - Eventually(session).Should(gexec.Exit(0)) - }) - - Context("with the -progress flag, but no -v flag", func() { - BeforeEach(func() { - args = append(args, "-progress") - }) - - It("should not emit progress", func() { - Ω(session).ShouldNot(gbytes.Say("[bB]efore")) - }) - }) - - Context("with the -v flag", func() { - BeforeEach(func() { - args = append(args, "-v") - }) - - It("should not emit progress", func() { - Ω(session).ShouldNot(gbytes.Say(`\[BeforeEach\]`)) - Ω(session).Should(gbytes.Say(`>outer before<`)) - }) - }) - - Context("with the -progress flag and the -v flag", func() { - BeforeEach(func() { - args = append(args, "-progress", "-v") - }) - - It("should emit progress (by writing to the GinkgoWriter)", func() { - Ω(session).Should(gbytes.Say(`\[BeforeEach\] ProgressFixture`)) - Ω(session).Should(gbytes.Say(`>outer before<`)) - - Ω(session).Should(gbytes.Say(`\[BeforeEach\] Inner Context`)) - Ω(session).Should(gbytes.Say(`>inner before<`)) - - Ω(session).Should(gbytes.Say(`\[JustBeforeEach\] ProgressFixture`)) - Ω(session).Should(gbytes.Say(`>outer just before<`)) - - Ω(session).Should(gbytes.Say(`\[JustBeforeEach\] Inner Context`)) - Ω(session).Should(gbytes.Say(`>inner just before<`)) - - Ω(session).Should(gbytes.Say(`\[It\] should emit progress as it goes`)) - Ω(session).Should(gbytes.Say(`>it<`)) - - Ω(session).Should(gbytes.Say(`\[AfterEach\] Inner Context`)) - Ω(session).Should(gbytes.Say(`>inner after<`)) - - Ω(session).Should(gbytes.Say(`\[AfterEach\] ProgressFixture`)) - Ω(session).Should(gbytes.Say(`>outer after<`)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/run_test.go b/vendor/github.com/onsi/ginkgo/integration/run_test.go deleted file mode 100644 index 7f320bd5..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/run_test.go +++ /dev/null @@ -1,422 +0,0 @@ -package integration_test - -import ( - "fmt" - "regexp" - "runtime" - "strings" - - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gbytes" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Running Specs", func() { - var pathToTest string - - isWindows := (runtime.GOOS == "windows") - denoter := "•" - - if isWindows { - denoter = "+" - } - - Context("when pointed at the current directory", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - copyIn("passing_ginkgo_tests", pathToTest) - }) - - It("should run the tests in the working directory", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Running Suite: Passing_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring(strings.Repeat(denoter, 4))) - Ω(output).Should(ContainSubstring("SUCCESS! -- 4 Passed")) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - - Context("when passed an explicit package to run", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - copyIn("passing_ginkgo_tests", pathToTest) - }) - - It("should run the ginkgo style tests", func() { - session := startGinkgo(tmpDir, "--noColor", pathToTest) - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Running Suite: Passing_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring(strings.Repeat(denoter, 4))) - Ω(output).Should(ContainSubstring("SUCCESS! -- 4 Passed")) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - - Context("when passed a number of packages to run", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - otherPathToTest := tmpPath("other") - copyIn("passing_ginkgo_tests", pathToTest) - copyIn("more_ginkgo_tests", otherPathToTest) - }) - - It("should run the ginkgo style tests", func() { - session := startGinkgo(tmpDir, "--noColor", "--succinct=false", "ginkgo", "./other") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Running Suite: Passing_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("Running Suite: More_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - - Context("when passed a number of packages to run, some of which have focused tests", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - otherPathToTest := tmpPath("other") - focusedPathToTest := tmpPath("focused") - copyIn("passing_ginkgo_tests", pathToTest) - copyIn("more_ginkgo_tests", otherPathToTest) - copyIn("focused_fixture", focusedPathToTest) - }) - - It("should exit with a status code of 2 and explain why", func() { - session := startGinkgo(tmpDir, "--noColor", "--succinct=false", "-r") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Running Suite: Passing_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("Running Suite: More_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - Ω(output).Should(ContainSubstring("Detected Programmatic Focus - setting exit status to %d", types.GINKGO_FOCUS_EXIT_CODE)) - }) - }) - - Context("when told to skipPackages", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - otherPathToTest := tmpPath("other") - focusedPathToTest := tmpPath("focused") - copyIn("passing_ginkgo_tests", pathToTest) - copyIn("more_ginkgo_tests", otherPathToTest) - copyIn("focused_fixture", focusedPathToTest) - }) - - It("should skip packages that match the list", func() { - session := startGinkgo(tmpDir, "--noColor", "--skipPackage=other,focused", "-r") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Passing_ginkgo_tests Suite")) - Ω(output).ShouldNot(ContainSubstring("More_ginkgo_tests Suite")) - Ω(output).ShouldNot(ContainSubstring("Focused_fixture Suite")) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - - Context("when all packages are skipped", func() { - It("should not run anything, but still exit 0", func() { - session := startGinkgo(tmpDir, "--noColor", "--skipPackage=other,focused,ginkgo", "-r") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("All tests skipped!")) - Ω(output).ShouldNot(ContainSubstring("Passing_ginkgo_tests Suite")) - Ω(output).ShouldNot(ContainSubstring("More_ginkgo_tests Suite")) - Ω(output).ShouldNot(ContainSubstring("Focused_fixture Suite")) - Ω(output).ShouldNot(ContainSubstring("Test Suite Passed")) - }) - }) - }) - - Context("when there are no tests to run", func() { - It("should exit 1", func() { - session := startGinkgo(tmpDir, "--noColor", "--skipPackage=other,focused", "-r") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Err.Contents()) - - Ω(output).Should(ContainSubstring("Found no test suites")) - }) - }) - - Context("when there are test files but `go test` reports there are no tests to run", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - copyIn("no_test_fn", pathToTest) - }) - - It("suggests running ginkgo bootstrap", func() { - session := startGinkgo(tmpDir, "--noColor", "--skipPackage=other,focused", "-r") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Err.Contents()) - - Ω(output).Should(ContainSubstring(`Found no test suites, did you forget to run "ginkgo bootstrap"?`)) - }) - - It("fails if told to requireSuite", func() { - session := startGinkgo(tmpDir, "--noColor", "--skipPackage=other,focused", "-r", "-requireSuite") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Err.Contents()) - - Ω(output).Should(ContainSubstring(`Found no test suites, did you forget to run "ginkgo bootstrap"?`)) - }) - }) - - Context("when told to randomizeSuites", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - otherPathToTest := tmpPath("other") - copyIn("passing_ginkgo_tests", pathToTest) - copyIn("more_ginkgo_tests", otherPathToTest) - }) - - It("should skip packages that match the regexp", func() { - session := startGinkgo(tmpDir, "--noColor", "--randomizeSuites", "-r", "--seed=2") - Eventually(session).Should(gexec.Exit(0)) - - Ω(session).Should(gbytes.Say("More_ginkgo_tests Suite")) - Ω(session).Should(gbytes.Say("Passing_ginkgo_tests Suite")) - - session = startGinkgo(tmpDir, "--noColor", "--randomizeSuites", "-r", "--seed=3") - Eventually(session).Should(gexec.Exit(0)) - - Ω(session).Should(gbytes.Say("Passing_ginkgo_tests Suite")) - Ω(session).Should(gbytes.Say("More_ginkgo_tests Suite")) - }) - }) - - Context("when pointed at a package with xunit style tests", func() { - BeforeEach(func() { - pathToTest = tmpPath("xunit") - copyIn("xunit_tests", pathToTest) - }) - - It("should run the xunit style tests", func() { - session := startGinkgo(pathToTest) - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("--- PASS: TestAlwaysTrue")) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - - Context("when pointed at a package with no tests", func() { - BeforeEach(func() { - pathToTest = tmpPath("no_tests") - copyIn("no_tests", pathToTest) - }) - - It("should fail", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(1)) - - Ω(session.Err.Contents()).Should(ContainSubstring("Found no test suites")) - }) - }) - - Context("when pointed at a package that fails to compile", func() { - BeforeEach(func() { - pathToTest = tmpPath("does_not_compile") - copyIn("does_not_compile", pathToTest) - }) - - It("should fail", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Failed to compile")) - }) - }) - - Context("when running in parallel", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - copyIn("passing_ginkgo_tests", pathToTest) - }) - - Context("with a specific number of -nodes", func() { - It("should use the specified number of nodes", func() { - session := startGinkgo(pathToTest, "--noColor", "-succinct", "-nodes=2") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(MatchRegexp(`\[\d+\] Passing_ginkgo_tests Suite - 4 specs - 2 nodes [%s]{4} SUCCESS! \d+(\.\d+)?[muµ]s`, regexp.QuoteMeta(denoter))) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - - Context("with -p", func() { - It("it should autocompute the number of nodes", func() { - session := startGinkgo(pathToTest, "--noColor", "-succinct", "-p") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - nodes := runtime.NumCPU() - if nodes == 1 { - Skip("Can't test parallel testings with 1 CPU") - } - if nodes > 4 { - nodes = nodes - 1 - } - Ω(output).Should(MatchRegexp(`\[\d+\] Passing_ginkgo_tests Suite - 4 specs - %d nodes [%s]{4} SUCCESS! \d+(\.\d+)?[muµ]?s`, nodes, regexp.QuoteMeta(denoter))) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - }) - - Context("when streaming in parallel", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - copyIn("passing_ginkgo_tests", pathToTest) - }) - - It("should print output in realtime", func() { - session := startGinkgo(pathToTest, "--noColor", "-stream", "-nodes=2") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring(`[1] Parallel test node 1/2.`)) - Ω(output).Should(ContainSubstring(`[2] Parallel test node 2/2.`)) - Ω(output).Should(ContainSubstring(`[1] SUCCESS!`)) - Ω(output).Should(ContainSubstring(`[2] SUCCESS!`)) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - - Context("when running recursively", func() { - BeforeEach(func() { - passingTest := tmpPath("A") - otherPassingTest := tmpPath("E") - copyIn("passing_ginkgo_tests", passingTest) - copyIn("more_ginkgo_tests", otherPassingTest) - }) - - Context("when all the tests pass", func() { - Context("with the -r flag", func() { - It("should run all the tests (in succinct mode) and succeed", func() { - session := startGinkgo(tmpDir, "--noColor", "-r", ".") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - outputLines := strings.Split(output, "\n") - Ω(outputLines[0]).Should(MatchRegexp(`\[\d+\] Passing_ginkgo_tests Suite - 4/4 specs [%s]{4} SUCCESS! \d+(\.\d+)?[muµ]s PASS`, regexp.QuoteMeta(denoter))) - Ω(outputLines[1]).Should(MatchRegexp(`\[\d+\] More_ginkgo_tests Suite - 2/2 specs [%s]{2} SUCCESS! \d+(\.\d+)?[muµ]s PASS`, regexp.QuoteMeta(denoter))) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - Context("with a trailing /...", func() { - It("should run all the tests (in succinct mode) and succeed", func() { - session := startGinkgo(tmpDir, "--noColor", "./...") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - outputLines := strings.Split(output, "\n") - Ω(outputLines[0]).Should(MatchRegexp(`\[\d+\] Passing_ginkgo_tests Suite - 4/4 specs [%s]{4} SUCCESS! \d+(\.\d+)?[muµ]s PASS`, regexp.QuoteMeta(denoter))) - Ω(outputLines[1]).Should(MatchRegexp(`\[\d+\] More_ginkgo_tests Suite - 2/2 specs [%s]{2} SUCCESS! \d+(\.\d+)?[muµ]s PASS`, regexp.QuoteMeta(denoter))) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - }) - }) - }) - - Context("when one of the packages has a failing tests", func() { - BeforeEach(func() { - failingTest := tmpPath("C") - copyIn("failing_ginkgo_tests", failingTest) - }) - - It("should fail and stop running tests", func() { - session := startGinkgo(tmpDir, "--noColor", "-r") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - outputLines := strings.Split(output, "\n") - Ω(outputLines[0]).Should(MatchRegexp(`\[\d+\] Passing_ginkgo_tests Suite - 4/4 specs [%s]{4} SUCCESS! \d+(\.\d+)?[muµ]s PASS`, regexp.QuoteMeta(denoter))) - Ω(outputLines[1]).Should(MatchRegexp(`\[\d+\] Failing_ginkgo_tests Suite - 2/2 specs`)) - Ω(output).Should(ContainSubstring(fmt.Sprintf("%s Failure", denoter))) - Ω(output).ShouldNot(ContainSubstring("More_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("Test Suite Failed")) - - Ω(output).Should(ContainSubstring("Summarizing 1 Failure:")) - Ω(output).Should(ContainSubstring("[Fail] FailingGinkgoTests [It] should fail")) - }) - }) - - Context("when one of the packages fails to compile", func() { - BeforeEach(func() { - doesNotCompileTest := tmpPath("C") - copyIn("does_not_compile", doesNotCompileTest) - }) - - It("should fail and stop running tests", func() { - session := startGinkgo(tmpDir, "--noColor", "-r") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - outputLines := strings.Split(output, "\n") - Ω(outputLines[0]).Should(MatchRegexp(`\[\d+\] Passing_ginkgo_tests Suite - 4/4 specs [%s]{4} SUCCESS! \d+(\.\d+)?[muµ]s PASS`, regexp.QuoteMeta(denoter))) - Ω(outputLines[1]).Should(ContainSubstring("Failed to compile C:")) - Ω(output).ShouldNot(ContainSubstring("More_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("Test Suite Failed")) - }) - }) - - Context("when either is the case, but the keepGoing flag is set", func() { - BeforeEach(func() { - doesNotCompileTest := tmpPath("B") - copyIn("does_not_compile", doesNotCompileTest) - - failingTest := tmpPath("C") - copyIn("failing_ginkgo_tests", failingTest) - }) - - It("should soldier on", func() { - session := startGinkgo(tmpDir, "--noColor", "-r", "-keepGoing") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - outputLines := strings.Split(output, "\n") - Ω(outputLines[0]).Should(MatchRegexp(`\[\d+\] Passing_ginkgo_tests Suite - 4/4 specs [%s]{4} SUCCESS! \d+(\.\d+)?[muµ]s PASS`, regexp.QuoteMeta(denoter))) - Ω(outputLines[1]).Should(ContainSubstring("Failed to compile B:")) - Ω(output).Should(MatchRegexp(`\[\d+\] Failing_ginkgo_tests Suite - 2/2 specs`)) - Ω(output).Should(ContainSubstring(fmt.Sprintf("%s Failure", denoter))) - Ω(output).Should(MatchRegexp(`\[\d+\] More_ginkgo_tests Suite - 2/2 specs [%s]{2} SUCCESS! \d+(\.\d+)?[muµ]s PASS`, regexp.QuoteMeta(denoter))) - Ω(output).Should(ContainSubstring("Test Suite Failed")) - }) - }) - }) - - Context("when told to keep going --untilItFails", func() { - BeforeEach(func() { - copyIn("eventually_failing", tmpDir) - }) - - It("should keep rerunning the tests, until a failure occurs", func() { - session := startGinkgo(tmpDir, "--untilItFails", "--noColor") - Eventually(session).Should(gexec.Exit(1)) - Ω(session).Should(gbytes.Say("This was attempt #1")) - Ω(session).Should(gbytes.Say("This was attempt #2")) - Ω(session).Should(gbytes.Say("Tests failed on attempt #3")) - - //it should change the random seed between each test - lines := strings.Split(string(session.Out.Contents()), "\n") - randomSeeds := []string{} - for _, line := range lines { - if strings.Contains(line, "Random Seed:") { - randomSeeds = append(randomSeeds, strings.Split(line, ": ")[1]) - } - } - Ω(randomSeeds[0]).ShouldNot(Equal(randomSeeds[1])) - Ω(randomSeeds[1]).ShouldNot(Equal(randomSeeds[2])) - Ω(randomSeeds[0]).ShouldNot(Equal(randomSeeds[2])) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/skip_test.go b/vendor/github.com/onsi/ginkgo/integration/skip_test.go deleted file mode 100644 index 59a12ee6..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/skip_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package integration_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Skipping Specs", func() { - var pathToTest string - - BeforeEach(func() { - pathToTest = tmpPath("skipping") - copyIn("skip_fixture", pathToTest) - }) - - It("should skip in all the possible ways", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).ShouldNot(ContainSubstring("NEVER SEE THIS")) - - Ω(output).Should(ContainSubstring("a top level skip on line 9")) - Ω(output).Should(ContainSubstring("skip_fixture_test.go:9")) - Ω(output).Should(ContainSubstring("an async top level skip on line 14")) - Ω(output).Should(ContainSubstring("skip_fixture_test.go:14")) - Ω(output).Should(ContainSubstring("a top level goroutine skip on line 21")) - Ω(output).Should(ContainSubstring("skip_fixture_test.go:21")) - - Ω(output).Should(ContainSubstring("a sync SKIP")) - Ω(output).Should(ContainSubstring("an async SKIP")) - Ω(output).Should(ContainSubstring("a goroutine SKIP")) - Ω(output).Should(ContainSubstring("a measure SKIP")) - - Ω(output).Should(ContainSubstring("S [SKIPPING] in Spec Setup (BeforeEach) [")) - Ω(output).Should(ContainSubstring("a BeforeEach SKIP")) - Ω(output).Should(ContainSubstring("S [SKIPPING] in Spec Teardown (AfterEach) [")) - Ω(output).Should(ContainSubstring("an AfterEach SKIP")) - - Ω(output).Should(ContainSubstring("0 Passed | 0 Failed | 0 Pending | 9 Skipped")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/subcommand_test.go b/vendor/github.com/onsi/ginkgo/integration/subcommand_test.go deleted file mode 100644 index 6a1913ad..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/subcommand_test.go +++ /dev/null @@ -1,395 +0,0 @@ -package integration_test - -import ( - "io/ioutil" - "os" - "path/filepath" - "strings" - - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Subcommand", func() { - Describe("ginkgo bootstrap", func() { - var pkgPath string - BeforeEach(func() { - pkgPath = tmpPath("foo") - os.Mkdir(pkgPath, 0777) - }) - - It("should generate a bootstrap file, as long as one does not exist", func() { - session := startGinkgo(pkgPath, "bootstrap") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("foo_suite_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "foo_suite_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_test")) - Ω(content).Should(ContainSubstring("func TestFoo(t *testing.T) {")) - Ω(content).Should(ContainSubstring("RegisterFailHandler")) - Ω(content).Should(ContainSubstring("RunSpecs")) - - Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/ginkgo"`)) - Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/gomega"`)) - - session = startGinkgo(pkgPath, "bootstrap") - Eventually(session).Should(gexec.Exit(1)) - output = session.Out.Contents() - Ω(output).Should(ContainSubstring("foo_suite_test.go already exists")) - }) - - It("should import nodot declarations when told to", func() { - session := startGinkgo(pkgPath, "bootstrap", "--nodot") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("foo_suite_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "foo_suite_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_test")) - Ω(content).Should(ContainSubstring("func TestFoo(t *testing.T) {")) - Ω(content).Should(ContainSubstring("RegisterFailHandler")) - Ω(content).Should(ContainSubstring("RunSpecs")) - - Ω(content).Should(ContainSubstring("var It = ginkgo.It")) - Ω(content).Should(ContainSubstring("var Ω = gomega.Ω")) - - Ω(content).Should(ContainSubstring("\t" + `"github.com/onsi/ginkgo"`)) - Ω(content).Should(ContainSubstring("\t" + `"github.com/onsi/gomega"`)) - }) - - It("should generate an agouti bootstrap file when told to", func() { - session := startGinkgo(pkgPath, "bootstrap", "--agouti") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("foo_suite_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "foo_suite_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_test")) - Ω(content).Should(ContainSubstring("func TestFoo(t *testing.T) {")) - Ω(content).Should(ContainSubstring("RegisterFailHandler")) - Ω(content).Should(ContainSubstring("RunSpecs")) - - Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/ginkgo"`)) - Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/gomega"`)) - Ω(content).Should(ContainSubstring("\t" + `"github.com/sclevine/agouti"`)) - }) - - It("should generate a bootstrap file using a template when told to", func() { - templateFile := filepath.Join(pkgPath, ".bootstrap") - ioutil.WriteFile(templateFile, []byte(`package {{.Package}} - - import ( - {{.GinkgoImport}} - {{.GomegaImport}} - - "testing" - "binary" - ) - - func Test{{.FormattedName}}(t *testing.T) { - // This is a {{.Package}} test - }`), 0666) - session := startGinkgo(pkgPath, "bootstrap", "--template", templateFile) - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("foo_suite_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "foo_suite_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_test")) - Ω(content).Should(ContainSubstring(`. "github.com/onsi/ginkgo"`)) - Ω(content).Should(ContainSubstring(`. "github.com/onsi/gomega"`)) - Ω(content).Should(ContainSubstring(`"binary"`)) - Ω(content).Should(ContainSubstring("// This is a foo_test test")) - }) - }) - - Describe("nodot", func() { - It("should update the declarations in the bootstrap file", func() { - pkgPath := tmpPath("foo") - os.Mkdir(pkgPath, 0777) - - session := startGinkgo(pkgPath, "bootstrap", "--nodot") - Eventually(session).Should(gexec.Exit(0)) - - byteContent, err := ioutil.ReadFile(filepath.Join(pkgPath, "foo_suite_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - - content := string(byteContent) - content = strings.Replace(content, "var It =", "var MyIt =", -1) - content = strings.Replace(content, "var Ω = gomega.Ω\n", "", -1) - - err = ioutil.WriteFile(filepath.Join(pkgPath, "foo_suite_test.go"), []byte(content), os.ModePerm) - Ω(err).ShouldNot(HaveOccurred()) - - session = startGinkgo(pkgPath, "nodot") - Eventually(session).Should(gexec.Exit(0)) - - byteContent, err = ioutil.ReadFile(filepath.Join(pkgPath, "foo_suite_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(byteContent).Should(ContainSubstring("var MyIt = ginkgo.It")) - Ω(byteContent).ShouldNot(ContainSubstring("var It = ginkgo.It")) - Ω(byteContent).Should(ContainSubstring("var Ω = gomega.Ω")) - }) - }) - - Describe("ginkgo generate", func() { - var pkgPath string - - BeforeEach(func() { - pkgPath = tmpPath("foo_bar") - os.Mkdir(pkgPath, 0777) - }) - - Context("with no arguments", func() { - It("should generate a test file named after the package", func() { - session := startGinkgo(pkgPath, "generate") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("foo_bar_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "foo_bar_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).Should(ContainSubstring(`var _ = Describe("FooBar", func() {`)) - Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/ginkgo"`)) - Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/gomega"`)) - - session = startGinkgo(pkgPath, "generate") - Eventually(session).Should(gexec.Exit(1)) - output = session.Out.Contents() - - Ω(output).Should(ContainSubstring("foo_bar_test.go already exists")) - }) - }) - - Context("with an argument of the form: foo", func() { - It("should generate a test file named after the argument", func() { - session := startGinkgo(pkgPath, "generate", "baz_buzz") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("baz_buzz_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "baz_buzz_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`)) - }) - }) - - Context("with an argument of the form: foo.go", func() { - It("should generate a test file named after the argument", func() { - session := startGinkgo(pkgPath, "generate", "baz_buzz.go") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("baz_buzz_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "baz_buzz_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`)) - - }) - }) - - Context("with an argument of the form: foo_test", func() { - It("should generate a test file named after the argument", func() { - session := startGinkgo(pkgPath, "generate", "baz_buzz_test") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("baz_buzz_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "baz_buzz_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`)) - }) - }) - - Context("with an argument of the form: foo_test.go", func() { - It("should generate a test file named after the argument", func() { - session := startGinkgo(pkgPath, "generate", "baz_buzz_test.go") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("baz_buzz_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "baz_buzz_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).Should(ContainSubstring(`var _ = Describe("BazBuzz", func() {`)) - }) - }) - - Context("with multiple arguments", func() { - It("should generate a test file named after the argument", func() { - session := startGinkgo(pkgPath, "generate", "baz", "buzz") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("baz_test.go")) - Ω(output).Should(ContainSubstring("buzz_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "baz_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).Should(ContainSubstring(`var _ = Describe("Baz", func() {`)) - - content, err = ioutil.ReadFile(filepath.Join(pkgPath, "buzz_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).Should(ContainSubstring(`var _ = Describe("Buzz", func() {`)) - }) - }) - - Context("with nodot", func() { - It("should not import ginkgo or gomega", func() { - session := startGinkgo(pkgPath, "generate", "--nodot") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("foo_bar_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "foo_bar_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).ShouldNot(ContainSubstring("\t" + `. "github.com/onsi/ginkgo"`)) - Ω(content).ShouldNot(ContainSubstring("\t" + `. "github.com/onsi/gomega"`)) - }) - }) - - Context("with agouti", func() { - It("should generate an agouti test file", func() { - session := startGinkgo(pkgPath, "generate", "--agouti") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("foo_bar_test.go")) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "foo_bar_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package foo_bar_test")) - Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/ginkgo"`)) - Ω(content).Should(ContainSubstring("\t" + `. "github.com/onsi/gomega"`)) - Ω(content).Should(ContainSubstring("\t" + `. "github.com/sclevine/agouti/matchers"`)) - Ω(content).Should(ContainSubstring("\t" + `"github.com/sclevine/agouti"`)) - Ω(content).Should(ContainSubstring("page, err = agoutiDriver.NewPage()")) - }) - }) - }) - - Describe("ginkgo bootstrap/generate", func() { - var pkgPath string - BeforeEach(func() { - pkgPath = tmpPath("some crazy-thing") - os.Mkdir(pkgPath, 0777) - }) - - Context("when the working directory is empty", func() { - It("generates correctly named bootstrap and generate files with a package name derived from the directory", func() { - session := startGinkgo(pkgPath, "bootstrap") - Eventually(session).Should(gexec.Exit(0)) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "some_crazy_thing_suite_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package some_crazy_thing_test")) - Ω(content).Should(ContainSubstring("SomeCrazyThing Suite")) - - session = startGinkgo(pkgPath, "generate") - Eventually(session).Should(gexec.Exit(0)) - - content, err = ioutil.ReadFile(filepath.Join(pkgPath, "some_crazy_thing_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package some_crazy_thing_test")) - Ω(content).Should(ContainSubstring("SomeCrazyThing")) - }) - }) - - Context("when the working directory contains a file with a package name", func() { - BeforeEach(func() { - Ω(ioutil.WriteFile(filepath.Join(pkgPath, "foo.go"), []byte("package main\n\nfunc main() {}"), 0777)).Should(Succeed()) - }) - - It("generates correctly named bootstrap and generate files with the package name", func() { - session := startGinkgo(pkgPath, "bootstrap") - Eventually(session).Should(gexec.Exit(0)) - - content, err := ioutil.ReadFile(filepath.Join(pkgPath, "some_crazy_thing_suite_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package main_test")) - Ω(content).Should(ContainSubstring("SomeCrazyThing Suite")) - - session = startGinkgo(pkgPath, "generate") - Eventually(session).Should(gexec.Exit(0)) - - content, err = ioutil.ReadFile(filepath.Join(pkgPath, "some_crazy_thing_test.go")) - Ω(err).ShouldNot(HaveOccurred()) - Ω(content).Should(ContainSubstring("package main_test")) - Ω(content).Should(ContainSubstring("SomeCrazyThing")) - }) - }) - }) - - Describe("ginkgo blur", func() { - It("should unfocus tests", func() { - pathToTest := tmpPath("focused") - copyIn("focused_fixture", pathToTest) - - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(types.GINKGO_FOCUS_EXIT_CODE)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("6 Passed")) - Ω(output).Should(ContainSubstring("5 Skipped")) - - session = startGinkgo(pathToTest, "blur") - Eventually(session).Should(gexec.Exit(0)) - - session = startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(0)) - output = session.Out.Contents() - Ω(output).Should(ContainSubstring("11 Passed")) - Ω(output).Should(ContainSubstring("0 Skipped")) - }) - }) - - Describe("ginkgo version", func() { - It("should print out the version info", func() { - session := startGinkgo("", "version") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(MatchRegexp(`Ginkgo Version \d+\.\d+\.\d+`)) - }) - }) - - Describe("ginkgo help", func() { - It("should print out usage information", func() { - session := startGinkgo("", "help") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Err.Contents()) - - Ω(output).Should(MatchRegexp(`Ginkgo Version \d+\.\d+\.\d+`)) - Ω(output).Should(ContainSubstring("ginkgo watch")) - Ω(output).Should(ContainSubstring("-succinct")) - Ω(output).Should(ContainSubstring("-nodes")) - Ω(output).Should(ContainSubstring("ginkgo generate")) - Ω(output).Should(ContainSubstring("ginkgo help ")) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/suite_command_test.go b/vendor/github.com/onsi/ginkgo/integration/suite_command_test.go deleted file mode 100644 index 4bd46f01..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/suite_command_test.go +++ /dev/null @@ -1,63 +0,0 @@ -package integration_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Suite Command Specs", func() { - var pathToTest string - - BeforeEach(func() { - pathToTest = tmpPath("suite_command") - copyIn("suite_command_tests", pathToTest) - }) - - It("Runs command after suite echoing out suite data, properly reporting suite name and passing status in successful command output", func() { - command := "-afterSuiteHook=echo THIS IS A (ginkgo-suite-passed) TEST OF THE (ginkgo-suite-name) SYSTEM, THIS IS ONLY A TEST" - expected := "THIS IS A [PASS] TEST OF THE suite_command SYSTEM, THIS IS ONLY A TEST" - session := startGinkgo(pathToTest, command) - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("1 Passed")) - Ω(output).Should(ContainSubstring("0 Failed")) - Ω(output).Should(ContainSubstring("1 Pending")) - Ω(output).Should(ContainSubstring("0 Skipped")) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - Ω(output).Should(ContainSubstring("Post-suite command succeeded:")) - Ω(output).Should(ContainSubstring(expected)) - }) - - It("Runs command after suite reporting that command failed", func() { - command := "-afterSuiteHook=exit 1" - session := startGinkgo(pathToTest, command) - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("1 Passed")) - Ω(output).Should(ContainSubstring("0 Failed")) - Ω(output).Should(ContainSubstring("1 Pending")) - Ω(output).Should(ContainSubstring("0 Skipped")) - Ω(output).Should(ContainSubstring("Test Suite Passed")) - Ω(output).Should(ContainSubstring("Post-suite command failed:")) - }) - - It("Runs command after suite echoing out suite data, properly reporting suite name and failing status in successful command output", func() { - command := "-afterSuiteHook=echo THIS IS A (ginkgo-suite-passed) TEST OF THE (ginkgo-suite-name) SYSTEM, THIS IS ONLY A TEST" - expected := "THIS IS A [FAIL] TEST OF THE suite_command SYSTEM, THIS IS ONLY A TEST" - session := startGinkgo(pathToTest, "-failOnPending=true", command) - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("1 Passed")) - Ω(output).Should(ContainSubstring("0 Failed")) - Ω(output).Should(ContainSubstring("1 Pending")) - Ω(output).Should(ContainSubstring("0 Skipped")) - Ω(output).Should(ContainSubstring("Test Suite Failed")) - Ω(output).Should(ContainSubstring("Post-suite command succeeded:")) - Ω(output).Should(ContainSubstring(expected)) - }) - -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/suite_setup_test.go b/vendor/github.com/onsi/ginkgo/integration/suite_setup_test.go deleted file mode 100644 index b9313db5..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/suite_setup_test.go +++ /dev/null @@ -1,178 +0,0 @@ -package integration_test - -import ( - "strings" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("SuiteSetup", func() { - var pathToTest string - - Context("when the BeforeSuite and AfterSuite pass", func() { - BeforeEach(func() { - pathToTest = tmpPath("suite_setup") - copyIn("passing_suite_setup", pathToTest) - }) - - It("should run the BeforeSuite once, then run all the tests", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(strings.Count(output, "BEFORE SUITE")).Should(Equal(1)) - Ω(strings.Count(output, "AFTER SUITE")).Should(Equal(1)) - }) - - It("should run the BeforeSuite once per parallel node, then run all the tests", func() { - session := startGinkgo(pathToTest, "--noColor", "--nodes=2") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(strings.Count(output, "BEFORE SUITE")).Should(Equal(2)) - Ω(strings.Count(output, "AFTER SUITE")).Should(Equal(2)) - }) - }) - - Context("when the BeforeSuite fails", func() { - BeforeEach(func() { - pathToTest = tmpPath("suite_setup") - copyIn("failing_before_suite", pathToTest) - }) - - It("should run the BeforeSuite once, none of the tests, but it should run the AfterSuite", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(strings.Count(output, "BEFORE SUITE")).Should(Equal(1)) - Ω(strings.Count(output, "Test Panicked")).Should(Equal(1)) - Ω(strings.Count(output, "AFTER SUITE")).Should(Equal(1)) - Ω(output).ShouldNot(ContainSubstring("NEVER SEE THIS")) - }) - - It("should run the BeforeSuite once per parallel node, none of the tests, but it should run the AfterSuite for each node", func() { - session := startGinkgo(pathToTest, "--noColor", "--nodes=2") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(strings.Count(output, "BEFORE SUITE")).Should(Equal(2)) - Ω(strings.Count(output, "Test Panicked")).Should(Equal(2)) - Ω(strings.Count(output, "AFTER SUITE")).Should(Equal(2)) - Ω(output).ShouldNot(ContainSubstring("NEVER SEE THIS")) - }) - }) - - Context("when the AfterSuite fails", func() { - BeforeEach(func() { - pathToTest = tmpPath("suite_setup") - copyIn("failing_after_suite", pathToTest) - }) - - It("should run the BeforeSuite once, none of the tests, but it should run the AfterSuite", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(strings.Count(output, "BEFORE SUITE")).Should(Equal(1)) - Ω(strings.Count(output, "AFTER SUITE")).Should(Equal(1)) - Ω(strings.Count(output, "Test Panicked")).Should(Equal(1)) - Ω(strings.Count(output, "A TEST")).Should(Equal(2)) - }) - - It("should run the BeforeSuite once per parallel node, none of the tests, but it should run the AfterSuite for each node", func() { - session := startGinkgo(pathToTest, "--noColor", "--nodes=2") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(strings.Count(output, "BEFORE SUITE")).Should(Equal(2)) - Ω(strings.Count(output, "AFTER SUITE")).Should(Equal(2)) - Ω(strings.Count(output, "Test Panicked")).Should(Equal(2)) - Ω(strings.Count(output, "A TEST")).Should(Equal(2)) - }) - }) - - Context("With passing synchronized before and after suites", func() { - BeforeEach(func() { - pathToTest = tmpPath("suite_setup") - copyIn("synchronized_setup_tests", pathToTest) - }) - - Context("when run with one node", func() { - It("should do all the work on that one node", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("BEFORE_A_1\nBEFORE_B_1: DATA")) - Ω(output).Should(ContainSubstring("AFTER_A_1\nAFTER_B_1")) - }) - }) - - Context("when run across multiple nodes", func() { - It("should run the first BeforeSuite function (BEFORE_A) on node 1, the second (BEFORE_B) on all the nodes, the first AfterSuite (AFTER_A) on all the nodes, and then the second (AFTER_B) on Node 1 *after* everything else is finished", func() { - session := startGinkgo(pathToTest, "--noColor", "--nodes=3") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("BEFORE_A_1")) - Ω(output).Should(ContainSubstring("BEFORE_B_1: DATA")) - Ω(output).Should(ContainSubstring("BEFORE_B_2: DATA")) - Ω(output).Should(ContainSubstring("BEFORE_B_3: DATA")) - - Ω(output).ShouldNot(ContainSubstring("BEFORE_A_2")) - Ω(output).ShouldNot(ContainSubstring("BEFORE_A_3")) - - Ω(output).Should(ContainSubstring("AFTER_A_1")) - Ω(output).Should(ContainSubstring("AFTER_A_2")) - Ω(output).Should(ContainSubstring("AFTER_A_3")) - Ω(output).Should(ContainSubstring("AFTER_B_1")) - - Ω(output).ShouldNot(ContainSubstring("AFTER_B_2")) - Ω(output).ShouldNot(ContainSubstring("AFTER_B_3")) - }) - }) - - Context("when streaming across multiple nodes", func() { - It("should run the first BeforeSuite function (BEFORE_A) on node 1, the second (BEFORE_B) on all the nodes, the first AfterSuite (AFTER_A) on all the nodes, and then the second (AFTER_B) on Node 1 *after* everything else is finished", func() { - session := startGinkgo(pathToTest, "--noColor", "--nodes=3", "--stream") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("[1] BEFORE_A_1")) - Ω(output).Should(ContainSubstring("[1] BEFORE_B_1: DATA")) - Ω(output).Should(ContainSubstring("[2] BEFORE_B_2: DATA")) - Ω(output).Should(ContainSubstring("[3] BEFORE_B_3: DATA")) - - Ω(output).ShouldNot(ContainSubstring("BEFORE_A_2")) - Ω(output).ShouldNot(ContainSubstring("BEFORE_A_3")) - - Ω(output).Should(ContainSubstring("[1] AFTER_A_1")) - Ω(output).Should(ContainSubstring("[2] AFTER_A_2")) - Ω(output).Should(ContainSubstring("[3] AFTER_A_3")) - Ω(output).Should(ContainSubstring("[1] AFTER_B_1")) - - Ω(output).ShouldNot(ContainSubstring("AFTER_B_2")) - Ω(output).ShouldNot(ContainSubstring("AFTER_B_3")) - }) - }) - }) - - Context("With a failing synchronized before suite", func() { - BeforeEach(func() { - pathToTest = tmpPath("suite_setup") - copyIn("exiting_synchronized_setup_tests", pathToTest) - }) - - It("should fail and let the user know that node 1 disappeared prematurely", func() { - session := startGinkgo(pathToTest, "--noColor", "--nodes=3") - Eventually(session).Should(gexec.Exit(1)) - output := string(session.Out.Contents()) - - Ω(output).Should(ContainSubstring("Node 1 disappeared before completing BeforeSuite")) - Ω(output).Should(ContainSubstring("Ginkgo timed out waiting for all parallel nodes to report back!")) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/tags_test.go b/vendor/github.com/onsi/ginkgo/integration/tags_test.go deleted file mode 100644 index 626635bf..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/tags_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package integration_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Tags", func() { - var pathToTest string - BeforeEach(func() { - pathToTest = tmpPath("tags") - copyIn("tags_tests", pathToTest) - }) - - It("should honor the passed in -tags flag", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(0)) - output := string(session.Out.Contents()) - Ω(output).Should(ContainSubstring("Ran 1 of 1 Specs")) - - session = startGinkgo(pathToTest, "--noColor", "-tags=complex_tests") - Eventually(session).Should(gexec.Exit(0)) - output = string(session.Out.Contents()) - Ω(output).Should(ContainSubstring("Ran 3 of 3 Specs")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/test_description_test.go b/vendor/github.com/onsi/ginkgo/integration/test_description_test.go deleted file mode 100644 index 70a8f04e..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/test_description_test.go +++ /dev/null @@ -1,25 +0,0 @@ -package integration_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gbytes" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("TestDescription", func() { - var pathToTest string - - BeforeEach(func() { - pathToTest = tmpPath("test_description") - copyIn("test_description", pathToTest) - }) - - It("should capture and emit information about the current test", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(1)) - - Ω(session).Should(gbytes.Say("TestDescription should pass:false")) - Ω(session).Should(gbytes.Say("TestDescription should fail:true")) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/verbose_and_succinct_test.go b/vendor/github.com/onsi/ginkgo/integration/verbose_and_succinct_test.go deleted file mode 100644 index aba9a6b0..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/verbose_and_succinct_test.go +++ /dev/null @@ -1,90 +0,0 @@ -package integration_test - -import ( - "regexp" - "runtime" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Verbose And Succinct Mode", func() { - var pathToTest string - var otherPathToTest string - - isWindows := (runtime.GOOS == "windows") - denoter := "•" - - if isWindows { - denoter = "+" - } - - Context("when running one package", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - copyIn("passing_ginkgo_tests", pathToTest) - }) - - It("should default to non-succinct mode", func() { - session := startGinkgo(pathToTest, "--noColor") - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("Running Suite: Passing_ginkgo_tests Suite")) - }) - }) - - Context("when running more than one package", func() { - BeforeEach(func() { - pathToTest = tmpPath("ginkgo") - copyIn("passing_ginkgo_tests", pathToTest) - otherPathToTest = tmpPath("more_ginkgo") - copyIn("more_ginkgo_tests", otherPathToTest) - }) - - Context("with no flags set", func() { - It("should default to succinct mode", func() { - session := startGinkgo(pathToTest, "--noColor", pathToTest, otherPathToTest) - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(MatchRegexp(`\] Passing_ginkgo_tests Suite - 4/4 specs [%s]{4} SUCCESS!`, regexp.QuoteMeta(denoter))) - Ω(output).Should(MatchRegexp(`\] More_ginkgo_tests Suite - 2/2 specs [%s]{2} SUCCESS!`, regexp.QuoteMeta(denoter))) - }) - }) - - Context("with --succinct=false", func() { - It("should not be in succinct mode", func() { - session := startGinkgo(pathToTest, "--noColor", "--succinct=false", pathToTest, otherPathToTest) - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("Running Suite: Passing_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("Running Suite: More_ginkgo_tests Suite")) - }) - }) - - Context("with -v", func() { - It("should not be in succinct mode, but should be verbose", func() { - session := startGinkgo(pathToTest, "--noColor", "-v", pathToTest, otherPathToTest) - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("Running Suite: Passing_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("Running Suite: More_ginkgo_tests Suite")) - Ω(output).Should(ContainSubstring("should proxy strings")) - Ω(output).Should(ContainSubstring("should always pass")) - }) - - It("should emit output from Bys", func() { - session := startGinkgo(pathToTest, "--noColor", "-v", pathToTest) - Eventually(session).Should(gexec.Exit(0)) - output := session.Out.Contents() - - Ω(output).Should(ContainSubstring("emitting one By")) - Ω(output).Should(ContainSubstring("emitting another By")) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/integration/watch_test.go b/vendor/github.com/onsi/ginkgo/integration/watch_test.go deleted file mode 100644 index c18e8f87..00000000 --- a/vendor/github.com/onsi/ginkgo/integration/watch_test.go +++ /dev/null @@ -1,275 +0,0 @@ -package integration_test - -import ( - "io/ioutil" - "os" - "path/filepath" - "time" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gbytes" - "github.com/onsi/gomega/gexec" -) - -var _ = Describe("Watch", func() { - var rootPath string - var pathA string - var pathB string - var pathC string - var session *gexec.Session - - BeforeEach(func() { - rootPath = tmpPath("root") - pathA = filepath.Join(rootPath, "src", "github.com", "onsi", "A") - pathB = filepath.Join(rootPath, "src", "github.com", "onsi", "B") - pathC = filepath.Join(rootPath, "src", "github.com", "onsi", "C") - - err := os.MkdirAll(pathA, 0700) - Ω(err).ShouldNot(HaveOccurred()) - - err = os.MkdirAll(pathB, 0700) - Ω(err).ShouldNot(HaveOccurred()) - - err = os.MkdirAll(pathC, 0700) - Ω(err).ShouldNot(HaveOccurred()) - - copyIn(filepath.Join("watch_fixtures", "A"), pathA) - copyIn(filepath.Join("watch_fixtures", "B"), pathB) - copyIn(filepath.Join("watch_fixtures", "C"), pathC) - }) - - startGinkgoWithGopath := func(args ...string) *gexec.Session { - cmd := ginkgoCommand(rootPath, args...) - cmd.Env = append([]string{"GOPATH=" + rootPath + ":" + os.Getenv("GOPATH")}, os.Environ()...) - session, err := gexec.Start(cmd, GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - return session - } - - modifyFile := func(path string) { - time.Sleep(time.Second) - content, err := ioutil.ReadFile(path) - Ω(err).ShouldNot(HaveOccurred()) - content = append(content, []byte("//")...) - err = ioutil.WriteFile(path, content, 0666) - Ω(err).ShouldNot(HaveOccurred()) - } - - modifyCode := func(pkgToModify string) { - modifyFile(filepath.Join(rootPath, "src", "github.com", "onsi", pkgToModify, pkgToModify+".go")) - } - - modifyJSON := func(pkgToModify string) { - modifyFile(filepath.Join(rootPath, "src", "github.com", "onsi", pkgToModify, pkgToModify+".json")) - } - - modifyTest := func(pkgToModify string) { - modifyFile(filepath.Join(rootPath, "src", "github.com", "onsi", pkgToModify, pkgToModify+"_test.go")) - } - - AfterEach(func() { - if session != nil { - session.Kill().Wait() - } - }) - - It("should be set up correctly", func() { - session = startGinkgoWithGopath("-r") - Eventually(session).Should(gexec.Exit(0)) - Ω(session.Out.Contents()).Should(ContainSubstring("A Suite")) - Ω(session.Out.Contents()).Should(ContainSubstring("B Suite")) - Ω(session.Out.Contents()).Should(ContainSubstring("C Suite")) - Ω(session.Out.Contents()).Should(ContainSubstring("Ginkgo ran 3 suites")) - }) - - Context("when watching just one test suite", func() { - It("should immediately run, and should rerun when the test suite changes", func() { - session = startGinkgoWithGopath("watch", "-succinct", pathA) - Eventually(session).Should(gbytes.Say("A Suite")) - modifyCode("A") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("A Suite")) - session.Kill().Wait() - }) - }) - - Context("when watching several test suites", func() { - It("should not immediately run, but should rerun a test when its code changes", func() { - session = startGinkgoWithGopath("watch", "-succinct", "-r") - Eventually(session).Should(gbytes.Say("Identified 3 test suites")) - Consistently(session).ShouldNot(gbytes.Say("A Suite|B Suite|C Suite")) - modifyCode("A") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("A Suite")) - Consistently(session).ShouldNot(gbytes.Say("B Suite|C Suite")) - session.Kill().Wait() - }) - }) - - Describe("watching dependencies", func() { - Context("with a depth of 2", func() { - It("should watch down to that depth", func() { - session = startGinkgoWithGopath("watch", "-succinct", "-r", "-depth=2") - Eventually(session).Should(gbytes.Say("Identified 3 test suites")) - Eventually(session).Should(gbytes.Say(`A \[2 dependencies\]`)) - Eventually(session).Should(gbytes.Say(`B \[1 dependency\]`)) - Eventually(session).Should(gbytes.Say(`C \[0 dependencies\]`)) - - modifyCode("A") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("A Suite")) - Consistently(session).ShouldNot(gbytes.Say("B Suite|C Suite")) - - modifyCode("B") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("B Suite")) - Eventually(session).Should(gbytes.Say("A Suite")) - Consistently(session).ShouldNot(gbytes.Say("C Suite")) - - modifyCode("C") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("C Suite")) - Eventually(session).Should(gbytes.Say("B Suite")) - Eventually(session).Should(gbytes.Say("A Suite")) - }) - }) - - Context("with a depth of 1", func() { - It("should watch down to that depth", func() { - session = startGinkgoWithGopath("watch", "-succinct", "-r", "-depth=1") - Eventually(session).Should(gbytes.Say("Identified 3 test suites")) - Eventually(session).Should(gbytes.Say(`A \[1 dependency\]`)) - Eventually(session).Should(gbytes.Say(`B \[1 dependency\]`)) - Eventually(session).Should(gbytes.Say(`C \[0 dependencies\]`)) - - modifyCode("A") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("A Suite")) - Consistently(session).ShouldNot(gbytes.Say("B Suite|C Suite")) - - modifyCode("B") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("B Suite")) - Eventually(session).Should(gbytes.Say("A Suite")) - Consistently(session).ShouldNot(gbytes.Say("C Suite")) - - modifyCode("C") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("C Suite")) - Eventually(session).Should(gbytes.Say("B Suite")) - Consistently(session).ShouldNot(gbytes.Say("A Suite")) - }) - }) - - Context("with a depth of 0", func() { - It("should not watch any dependencies", func() { - session = startGinkgoWithGopath("watch", "-succinct", "-r", "-depth=0") - Eventually(session).Should(gbytes.Say("Identified 3 test suites")) - Eventually(session).Should(gbytes.Say(`A \[0 dependencies\]`)) - Eventually(session).Should(gbytes.Say(`B \[0 dependencies\]`)) - Eventually(session).Should(gbytes.Say(`C \[0 dependencies\]`)) - - modifyCode("A") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("A Suite")) - Consistently(session).ShouldNot(gbytes.Say("B Suite|C Suite")) - - modifyCode("B") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("B Suite")) - Consistently(session).ShouldNot(gbytes.Say("A Suite|C Suite")) - - modifyCode("C") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("C Suite")) - Consistently(session).ShouldNot(gbytes.Say("A Suite|B Suite")) - }) - }) - - It("should not trigger dependents when tests are changed", func() { - session = startGinkgoWithGopath("watch", "-succinct", "-r", "-depth=2") - Eventually(session).Should(gbytes.Say("Identified 3 test suites")) - Eventually(session).Should(gbytes.Say(`A \[2 dependencies\]`)) - Eventually(session).Should(gbytes.Say(`B \[1 dependency\]`)) - Eventually(session).Should(gbytes.Say(`C \[0 dependencies\]`)) - - modifyTest("A") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("A Suite")) - Consistently(session).ShouldNot(gbytes.Say("B Suite|C Suite")) - - modifyTest("B") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("B Suite")) - Consistently(session).ShouldNot(gbytes.Say("A Suite|C Suite")) - - modifyTest("C") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("C Suite")) - Consistently(session).ShouldNot(gbytes.Say("A Suite|B Suite")) - }) - }) - - Describe("adjusting the watch regular expression", func() { - Describe("the default regular expression", func() { - It("should only trigger when go files are changed", func() { - session = startGinkgoWithGopath("watch", "-succinct", "-r", "-depth=2") - Eventually(session).Should(gbytes.Say("Identified 3 test suites")) - Eventually(session).Should(gbytes.Say(`A \[2 dependencies\]`)) - Eventually(session).Should(gbytes.Say(`B \[1 dependency\]`)) - Eventually(session).Should(gbytes.Say(`C \[0 dependencies\]`)) - - modifyJSON("C") - Consistently(session).ShouldNot(gbytes.Say("Detected changes in")) - Consistently(session).ShouldNot(gbytes.Say("A Suite|B Suite|C Suite")) - }) - }) - - Describe("modifying the regular expression", func() { - It("should trigger if the regexp matches", func() { - session = startGinkgoWithGopath("watch", "-succinct", "-r", "-depth=2", `-watchRegExp=\.json$`) - Eventually(session).Should(gbytes.Say("Identified 3 test suites")) - Eventually(session).Should(gbytes.Say(`A \[2 dependencies\]`)) - Eventually(session).Should(gbytes.Say(`B \[1 dependency\]`)) - Eventually(session).Should(gbytes.Say(`C \[0 dependencies\]`)) - - modifyJSON("C") - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("C Suite")) - Eventually(session).Should(gbytes.Say("B Suite")) - Eventually(session).Should(gbytes.Say("A Suite")) - }) - }) - }) - - Describe("when new test suite is added", func() { - It("should start monitoring that test suite", func() { - session = startGinkgoWithGopath("watch", "-succinct", "-r") - - Eventually(session).Should(gbytes.Say("Watching 3 suites")) - - pathD := filepath.Join(rootPath, "src", "github.com", "onsi", "D") - - err := os.MkdirAll(pathD, 0700) - Ω(err).ShouldNot(HaveOccurred()) - - copyIn(filepath.Join("watch_fixtures", "D"), pathD) - - Eventually(session).Should(gbytes.Say("Detected 1 new suite")) - Eventually(session).Should(gbytes.Say(`D \[1 dependency\]`)) - Eventually(session).Should(gbytes.Say("D Suite")) - - modifyCode("D") - - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("D Suite")) - - modifyCode("C") - - Eventually(session).Should(gbytes.Say("Detected changes in")) - Eventually(session).Should(gbytes.Say("C Suite")) - Eventually(session).Should(gbytes.Say("D Suite")) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/codelocation/code_location_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/codelocation/code_location_suite_test.go deleted file mode 100644 index f06abf3c..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/codelocation/code_location_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package codelocation_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestCodelocation(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "CodeLocation Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/codelocation/code_location_test.go b/vendor/github.com/onsi/ginkgo/internal/codelocation/code_location_test.go deleted file mode 100644 index 55a9e9d0..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/codelocation/code_location_test.go +++ /dev/null @@ -1,79 +0,0 @@ -package codelocation_test - -import ( - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" - "runtime" -) - -var _ = Describe("CodeLocation", func() { - var ( - codeLocation types.CodeLocation - expectedFileName string - expectedLineNumber int - ) - - caller0 := func() { - codeLocation = codelocation.New(1) - } - - caller1 := func() { - _, expectedFileName, expectedLineNumber, _ = runtime.Caller(0) - expectedLineNumber += 2 - caller0() - } - - BeforeEach(func() { - caller1() - }) - - It("should use the passed in skip parameter to pick out the correct file & line number", func() { - Ω(codeLocation.FileName).Should(Equal(expectedFileName)) - Ω(codeLocation.LineNumber).Should(Equal(expectedLineNumber)) - }) - - Describe("stringer behavior", func() { - It("should stringify nicely", func() { - Ω(codeLocation.String()).Should(ContainSubstring("code_location_test.go:%d", expectedLineNumber)) - }) - }) - - //There's no better way than to test this private method as it - //goes out of its way to prune out ginkgo related code in the stack trace - Describe("PruneStack", func() { - It("should remove any references to ginkgo and pkg/testing and pkg/runtime", func() { - input := `/Skip/me -Skip: skip() -/Skip/me -Skip: skip() -/Users/whoever/gospace/src/github.com/onsi/ginkgo/whatever.go:10 (0x12314) -Something: Func() -/Users/whoever/gospace/src/github.com/onsi/ginkgo/whatever_else.go:10 (0x12314) -SomethingInternalToGinkgo: Func() -/usr/goroot/pkg/strings/oops.go:10 (0x12341) -Oops: BlowUp() -/Users/whoever/gospace/src/mycode/code.go:10 (0x12341) -MyCode: Func() -/Users/whoever/gospace/src/mycode/code_test.go:10 (0x12341) -MyCodeTest: Func() -/Users/whoever/gospace/src/mycode/code_suite_test.go:12 (0x37f08) -TestFoo: RunSpecs(t, "Foo Suite") -/usr/goroot/pkg/testing/testing.go:12 (0x37f08) -TestingT: Blah() -/usr/goroot/pkg/runtime/runtime.go:12 (0x37f08) -Something: Func() -` - prunedStack := codelocation.PruneStack(input, 1) - Ω(prunedStack).Should(Equal(`/usr/goroot/pkg/strings/oops.go:10 (0x12341) -Oops: BlowUp() -/Users/whoever/gospace/src/mycode/code.go:10 (0x12341) -MyCode: Func() -/Users/whoever/gospace/src/mycode/code_test.go:10 (0x12341) -MyCodeTest: Func() -/Users/whoever/gospace/src/mycode/code_suite_test.go:12 (0x37f08) -TestFoo: RunSpecs(t, "Foo Suite")`)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/containernode/container_node_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/containernode/container_node_suite_test.go deleted file mode 100644 index c6fc314f..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/containernode/container_node_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package containernode_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestContainernode(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Containernode Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/containernode/container_node_test.go b/vendor/github.com/onsi/ginkgo/internal/containernode/container_node_test.go deleted file mode 100644 index b8d61b13..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/containernode/container_node_test.go +++ /dev/null @@ -1,212 +0,0 @@ -package containernode_test - -import ( - "github.com/onsi/ginkgo/internal/leafnodes" - "math/rand" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "github.com/onsi/ginkgo/internal/codelocation" - . "github.com/onsi/ginkgo/internal/containernode" - "github.com/onsi/ginkgo/types" -) - -var _ = Describe("Container Node", func() { - var ( - codeLocation types.CodeLocation - container *ContainerNode - ) - - BeforeEach(func() { - codeLocation = codelocation.New(0) - container = New("description text", types.FlagTypeFocused, codeLocation) - }) - - Describe("creating a container node", func() { - It("can answer questions about itself", func() { - Ω(container.Text()).Should(Equal("description text")) - Ω(container.Flag()).Should(Equal(types.FlagTypeFocused)) - Ω(container.CodeLocation()).Should(Equal(codeLocation)) - }) - }) - - Describe("pushing setup nodes", func() { - It("can append setup nodes of various types and fetch them by type", func() { - befA := leafnodes.NewBeforeEachNode(func() {}, codelocation.New(0), 0, nil, 0) - befB := leafnodes.NewBeforeEachNode(func() {}, codelocation.New(0), 0, nil, 0) - aftA := leafnodes.NewAfterEachNode(func() {}, codelocation.New(0), 0, nil, 0) - aftB := leafnodes.NewAfterEachNode(func() {}, codelocation.New(0), 0, nil, 0) - jusBefA := leafnodes.NewJustBeforeEachNode(func() {}, codelocation.New(0), 0, nil, 0) - jusBefB := leafnodes.NewJustBeforeEachNode(func() {}, codelocation.New(0), 0, nil, 0) - - container.PushSetupNode(befA) - container.PushSetupNode(befB) - container.PushSetupNode(aftA) - container.PushSetupNode(aftB) - container.PushSetupNode(jusBefA) - container.PushSetupNode(jusBefB) - - subject := leafnodes.NewItNode("subject", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - container.PushSubjectNode(subject) - - Ω(container.SetupNodesOfType(types.SpecComponentTypeBeforeEach)).Should(Equal([]leafnodes.BasicNode{befA, befB})) - Ω(container.SetupNodesOfType(types.SpecComponentTypeAfterEach)).Should(Equal([]leafnodes.BasicNode{aftA, aftB})) - Ω(container.SetupNodesOfType(types.SpecComponentTypeJustBeforeEach)).Should(Equal([]leafnodes.BasicNode{jusBefA, jusBefB})) - Ω(container.SetupNodesOfType(types.SpecComponentTypeIt)).Should(BeEmpty()) //subjects are not setup nodes - }) - }) - - Context("With appended containers and subject nodes", func() { - var ( - itA, itB, innerItA, innerItB leafnodes.SubjectNode - innerContainer *ContainerNode - ) - - BeforeEach(func() { - itA = leafnodes.NewItNode("Banana", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - itB = leafnodes.NewItNode("Apple", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - - innerItA = leafnodes.NewItNode("inner A", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - innerItB = leafnodes.NewItNode("inner B", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - - innerContainer = New("Orange", types.FlagTypeNone, codelocation.New(0)) - - container.PushSubjectNode(itA) - container.PushContainerNode(innerContainer) - innerContainer.PushSubjectNode(innerItA) - innerContainer.PushSubjectNode(innerItB) - container.PushSubjectNode(itB) - }) - - Describe("Collating", func() { - It("should return a collated set of containers and subject nodes in the correct order", func() { - collated := container.Collate() - Ω(collated).Should(HaveLen(4)) - - Ω(collated[0]).Should(Equal(CollatedNodes{ - Containers: []*ContainerNode{container}, - Subject: itA, - })) - - Ω(collated[1]).Should(Equal(CollatedNodes{ - Containers: []*ContainerNode{container, innerContainer}, - Subject: innerItA, - })) - - Ω(collated[2]).Should(Equal(CollatedNodes{ - Containers: []*ContainerNode{container, innerContainer}, - Subject: innerItB, - })) - - Ω(collated[3]).Should(Equal(CollatedNodes{ - Containers: []*ContainerNode{container}, - Subject: itB, - })) - }) - }) - - Describe("Backpropagating Programmatic Focus", func() { - //This allows inner focused specs to override the focus of outer focussed - //specs and more closely maps to what a developer wants to happen - //when debugging a test suite - - Context("when a parent is focused *and* an inner subject is focused", func() { - BeforeEach(func() { - container = New("description text", types.FlagTypeFocused, codeLocation) - itA = leafnodes.NewItNode("A", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - container.PushSubjectNode(itA) - - innerContainer = New("Orange", types.FlagTypeNone, codelocation.New(0)) - container.PushContainerNode(innerContainer) - innerItA = leafnodes.NewItNode("inner A", func() {}, types.FlagTypeFocused, codelocation.New(0), 0, nil, 0) - innerContainer.PushSubjectNode(innerItA) - }) - - It("should unfocus the parent", func() { - container.BackPropagateProgrammaticFocus() - - Ω(container.Flag()).Should(Equal(types.FlagTypeNone)) - Ω(itA.Flag()).Should(Equal(types.FlagTypeNone)) - Ω(innerContainer.Flag()).Should(Equal(types.FlagTypeNone)) - Ω(innerItA.Flag()).Should(Equal(types.FlagTypeFocused)) - }) - }) - - Context("when a parent is focused *and* an inner container is focused", func() { - BeforeEach(func() { - container = New("description text", types.FlagTypeFocused, codeLocation) - itA = leafnodes.NewItNode("A", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - container.PushSubjectNode(itA) - - innerContainer = New("Orange", types.FlagTypeFocused, codelocation.New(0)) - container.PushContainerNode(innerContainer) - innerItA = leafnodes.NewItNode("inner A", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - innerContainer.PushSubjectNode(innerItA) - }) - - It("should unfocus the parent", func() { - container.BackPropagateProgrammaticFocus() - - Ω(container.Flag()).Should(Equal(types.FlagTypeNone)) - Ω(itA.Flag()).Should(Equal(types.FlagTypeNone)) - Ω(innerContainer.Flag()).Should(Equal(types.FlagTypeFocused)) - Ω(innerItA.Flag()).Should(Equal(types.FlagTypeNone)) - }) - }) - - Context("when a parent is pending and a child is focused", func() { - BeforeEach(func() { - container = New("description text", types.FlagTypeFocused, codeLocation) - itA = leafnodes.NewItNode("A", func() {}, types.FlagTypeNone, codelocation.New(0), 0, nil, 0) - container.PushSubjectNode(itA) - - innerContainer = New("Orange", types.FlagTypePending, codelocation.New(0)) - container.PushContainerNode(innerContainer) - innerItA = leafnodes.NewItNode("inner A", func() {}, types.FlagTypeFocused, codelocation.New(0), 0, nil, 0) - innerContainer.PushSubjectNode(innerItA) - }) - - It("should not do anything", func() { - container.BackPropagateProgrammaticFocus() - - Ω(container.Flag()).Should(Equal(types.FlagTypeFocused)) - Ω(itA.Flag()).Should(Equal(types.FlagTypeNone)) - Ω(innerContainer.Flag()).Should(Equal(types.FlagTypePending)) - Ω(innerItA.Flag()).Should(Equal(types.FlagTypeFocused)) - }) - }) - }) - - Describe("Shuffling", func() { - var unshuffledCollation []CollatedNodes - BeforeEach(func() { - unshuffledCollation = container.Collate() - - r := rand.New(rand.NewSource(17)) - container.Shuffle(r) - }) - - It("should sort, and then shuffle, the top level contents of the container", func() { - shuffledCollation := container.Collate() - Ω(shuffledCollation).Should(HaveLen(len(unshuffledCollation))) - Ω(shuffledCollation).ShouldNot(Equal(unshuffledCollation)) - - for _, entry := range unshuffledCollation { - Ω(shuffledCollation).Should(ContainElement(entry)) - } - - innerAIndex, innerBIndex := 0, 0 - for i, entry := range shuffledCollation { - if entry.Subject == innerItA { - innerAIndex = i - } else if entry.Subject == innerItB { - innerBIndex = i - } - } - - Ω(innerAIndex).Should(Equal(innerBIndex - 1)) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/failer/failer_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/failer/failer_suite_test.go deleted file mode 100644 index 8dce7be9..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/failer/failer_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package failer_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFailer(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Failer Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/failer/failer_test.go b/vendor/github.com/onsi/ginkgo/internal/failer/failer_test.go deleted file mode 100644 index 65210a40..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/failer/failer_test.go +++ /dev/null @@ -1,141 +0,0 @@ -package failer_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/failer" - . "github.com/onsi/gomega" - - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/types" -) - -var _ = Describe("Failer", func() { - var ( - failer *Failer - codeLocationA types.CodeLocation - codeLocationB types.CodeLocation - ) - - BeforeEach(func() { - codeLocationA = codelocation.New(0) - codeLocationB = codelocation.New(0) - failer = New() - }) - - Context("with no failures", func() { - It("should return success when drained", func() { - failure, state := failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - Ω(failure).Should(BeZero()) - Ω(state).Should(Equal(types.SpecStatePassed)) - }) - }) - - Describe("Skip", func() { - It("should handle failures", func() { - failer.Skip("something skipped", codeLocationA) - failure, state := failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "something skipped", - Location: codeLocationA, - ForwardedPanic: "", - ComponentType: types.SpecComponentTypeIt, - ComponentIndex: 3, - ComponentCodeLocation: codeLocationB, - })) - Ω(state).Should(Equal(types.SpecStateSkipped)) - }) - }) - - Describe("Fail", func() { - It("should handle failures", func() { - failer.Fail("something failed", codeLocationA) - failure, state := failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "something failed", - Location: codeLocationA, - ForwardedPanic: "", - ComponentType: types.SpecComponentTypeIt, - ComponentIndex: 3, - ComponentCodeLocation: codeLocationB, - })) - Ω(state).Should(Equal(types.SpecStateFailed)) - }) - }) - - Describe("Panic", func() { - It("should handle panics", func() { - failer.Panic(codeLocationA, "some forwarded panic") - failure, state := failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "Test Panicked", - Location: codeLocationA, - ForwardedPanic: "some forwarded panic", - ComponentType: types.SpecComponentTypeIt, - ComponentIndex: 3, - ComponentCodeLocation: codeLocationB, - })) - Ω(state).Should(Equal(types.SpecStatePanicked)) - }) - }) - - Describe("Timeout", func() { - It("should handle timeouts", func() { - failer.Timeout(codeLocationA) - failure, state := failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "Timed out", - Location: codeLocationA, - ForwardedPanic: "", - ComponentType: types.SpecComponentTypeIt, - ComponentIndex: 3, - ComponentCodeLocation: codeLocationB, - })) - Ω(state).Should(Equal(types.SpecStateTimedOut)) - }) - }) - - Context("when multiple failures are registered", func() { - BeforeEach(func() { - failer.Fail("something failed", codeLocationA) - failer.Fail("something else failed", codeLocationA) - }) - - It("should only report the first one when drained", func() { - failure, state := failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "something failed", - Location: codeLocationA, - ForwardedPanic: "", - ComponentType: types.SpecComponentTypeIt, - ComponentIndex: 3, - ComponentCodeLocation: codeLocationB, - })) - Ω(state).Should(Equal(types.SpecStateFailed)) - }) - - It("should report subsequent failures after being drained", func() { - failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - failer.Fail("yet another thing failed", codeLocationA) - - failure, state := failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "yet another thing failed", - Location: codeLocationA, - ForwardedPanic: "", - ComponentType: types.SpecComponentTypeIt, - ComponentIndex: 3, - ComponentCodeLocation: codeLocationB, - })) - Ω(state).Should(Equal(types.SpecStateFailed)) - }) - - It("should report sucess on subsequent drains if no errors occur", func() { - failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - failure, state := failer.Drain(types.SpecComponentTypeIt, 3, codeLocationB) - Ω(failure).Should(BeZero()) - Ω(state).Should(Equal(types.SpecStatePassed)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/leafnodes/it_node_test.go b/vendor/github.com/onsi/ginkgo/internal/leafnodes/it_node_test.go deleted file mode 100644 index 29fa0c6e..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/leafnodes/it_node_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package leafnodes_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/leafnodes" - . "github.com/onsi/gomega" - - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/types" -) - -var _ = Describe("It Nodes", func() { - It("should report the correct type, text, flag, and code location", func() { - codeLocation := codelocation.New(0) - it := NewItNode("my it node", func() {}, types.FlagTypeFocused, codeLocation, 0, nil, 3) - Ω(it.Type()).Should(Equal(types.SpecComponentTypeIt)) - Ω(it.Flag()).Should(Equal(types.FlagTypeFocused)) - Ω(it.Text()).Should(Equal("my it node")) - Ω(it.CodeLocation()).Should(Equal(codeLocation)) - Ω(it.Samples()).Should(Equal(1)) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/leafnodes/leaf_node_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/leafnodes/leaf_node_suite_test.go deleted file mode 100644 index a7ba9e00..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/leafnodes/leaf_node_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package leafnodes_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestLeafNode(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "LeafNode Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/leafnodes/measure_node_test.go b/vendor/github.com/onsi/ginkgo/internal/leafnodes/measure_node_test.go deleted file mode 100644 index 252065b8..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/leafnodes/measure_node_test.go +++ /dev/null @@ -1,154 +0,0 @@ -package leafnodes_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/leafnodes" - . "github.com/onsi/gomega" - - "github.com/onsi/ginkgo/internal/codelocation" - Failer "github.com/onsi/ginkgo/internal/failer" - "github.com/onsi/ginkgo/types" - "time" -) - -var _ = Describe("Measure Nodes", func() { - It("should report the correct type, text, flag, and code location", func() { - codeLocation := codelocation.New(0) - measure := NewMeasureNode("my measure node", func(b Benchmarker) {}, types.FlagTypeFocused, codeLocation, 10, nil, 3) - Ω(measure.Type()).Should(Equal(types.SpecComponentTypeMeasure)) - Ω(measure.Flag()).Should(Equal(types.FlagTypeFocused)) - Ω(measure.Text()).Should(Equal("my measure node")) - Ω(measure.CodeLocation()).Should(Equal(codeLocation)) - Ω(measure.Samples()).Should(Equal(10)) - }) - - Describe("benchmarking", func() { - var measure *MeasureNode - - Describe("Value", func() { - BeforeEach(func() { - measure = NewMeasureNode("the measurement", func(b Benchmarker) { - b.RecordValue("foo", 7, "info!") - b.RecordValue("foo", 2) - b.RecordValue("foo", 3) - b.RecordValue("bar", 0.3) - b.RecordValue("bar", 0.1) - b.RecordValue("bar", 0.5) - b.RecordValue("bar", 0.7) - }, types.FlagTypeFocused, codelocation.New(0), 1, Failer.New(), 3) - Ω(measure.Run()).Should(Equal(types.SpecStatePassed)) - }) - - It("records passed in values and reports on them", func() { - report := measure.MeasurementsReport() - Ω(report).Should(HaveLen(2)) - Ω(report["foo"].Name).Should(Equal("foo")) - Ω(report["foo"].Info).Should(Equal("info!")) - Ω(report["foo"].Order).Should(Equal(0)) - Ω(report["foo"].SmallestLabel).Should(Equal("Smallest")) - Ω(report["foo"].LargestLabel).Should(Equal(" Largest")) - Ω(report["foo"].AverageLabel).Should(Equal(" Average")) - Ω(report["foo"].Units).Should(Equal("")) - Ω(report["foo"].Results).Should(Equal([]float64{7, 2, 3})) - Ω(report["foo"].Smallest).Should(BeNumerically("==", 2)) - Ω(report["foo"].Largest).Should(BeNumerically("==", 7)) - Ω(report["foo"].Average).Should(BeNumerically("==", 4)) - Ω(report["foo"].StdDeviation).Should(BeNumerically("~", 2.16, 0.01)) - - Ω(report["bar"].Name).Should(Equal("bar")) - Ω(report["bar"].Info).Should(BeNil()) - Ω(report["bar"].SmallestLabel).Should(Equal("Smallest")) - Ω(report["bar"].Order).Should(Equal(1)) - Ω(report["bar"].LargestLabel).Should(Equal(" Largest")) - Ω(report["bar"].AverageLabel).Should(Equal(" Average")) - Ω(report["bar"].Units).Should(Equal("")) - Ω(report["bar"].Results).Should(Equal([]float64{0.3, 0.1, 0.5, 0.7})) - Ω(report["bar"].Smallest).Should(BeNumerically("==", 0.1)) - Ω(report["bar"].Largest).Should(BeNumerically("==", 0.7)) - Ω(report["bar"].Average).Should(BeNumerically("==", 0.4)) - Ω(report["bar"].StdDeviation).Should(BeNumerically("~", 0.22, 0.01)) - }) - }) - - Describe("Value with precision", func() { - BeforeEach(func() { - measure = NewMeasureNode("the measurement", func(b Benchmarker) { - b.RecordValueWithPrecision("foo", 7, "ms", 7, "info!") - b.RecordValueWithPrecision("foo", 2, "ms", 6) - b.RecordValueWithPrecision("foo", 3, "ms", 5) - b.RecordValueWithPrecision("bar", 0.3, "ns", 4) - b.RecordValueWithPrecision("bar", 0.1, "ns", 3) - b.RecordValueWithPrecision("bar", 0.5, "ns", 2) - b.RecordValueWithPrecision("bar", 0.7, "ns", 1) - }, types.FlagTypeFocused, codelocation.New(0), 1, Failer.New(), 3) - Ω(measure.Run()).Should(Equal(types.SpecStatePassed)) - }) - - It("records passed in values and reports on them", func() { - report := measure.MeasurementsReport() - Ω(report).Should(HaveLen(2)) - Ω(report["foo"].Name).Should(Equal("foo")) - Ω(report["foo"].Info).Should(Equal("info!")) - Ω(report["foo"].Order).Should(Equal(0)) - Ω(report["foo"].SmallestLabel).Should(Equal("Smallest")) - Ω(report["foo"].LargestLabel).Should(Equal(" Largest")) - Ω(report["foo"].AverageLabel).Should(Equal(" Average")) - Ω(report["foo"].Units).Should(Equal("ms")) - Ω(report["foo"].Results).Should(Equal([]float64{7, 2, 3})) - Ω(report["foo"].Smallest).Should(BeNumerically("==", 2)) - Ω(report["foo"].Largest).Should(BeNumerically("==", 7)) - Ω(report["foo"].Average).Should(BeNumerically("==", 4)) - Ω(report["foo"].StdDeviation).Should(BeNumerically("~", 2.16, 0.01)) - - Ω(report["bar"].Name).Should(Equal("bar")) - Ω(report["bar"].Info).Should(BeNil()) - Ω(report["bar"].SmallestLabel).Should(Equal("Smallest")) - Ω(report["bar"].Order).Should(Equal(1)) - Ω(report["bar"].LargestLabel).Should(Equal(" Largest")) - Ω(report["bar"].AverageLabel).Should(Equal(" Average")) - Ω(report["bar"].Units).Should(Equal("ns")) - Ω(report["bar"].Results).Should(Equal([]float64{0.3, 0.1, 0.5, 0.7})) - Ω(report["bar"].Smallest).Should(BeNumerically("==", 0.1)) - Ω(report["bar"].Largest).Should(BeNumerically("==", 0.7)) - Ω(report["bar"].Average).Should(BeNumerically("==", 0.4)) - Ω(report["bar"].StdDeviation).Should(BeNumerically("~", 0.22, 0.01)) - }) - }) - - Describe("Time", func() { - BeforeEach(func() { - measure = NewMeasureNode("the measurement", func(b Benchmarker) { - b.Time("foo", func() { - time.Sleep(100 * time.Millisecond) - }, "info!") - b.Time("foo", func() { - time.Sleep(200 * time.Millisecond) - }) - b.Time("foo", func() { - time.Sleep(170 * time.Millisecond) - }) - }, types.FlagTypeFocused, codelocation.New(0), 1, Failer.New(), 3) - Ω(measure.Run()).Should(Equal(types.SpecStatePassed)) - }) - - It("records passed in values and reports on them", func() { - report := measure.MeasurementsReport() - Ω(report).Should(HaveLen(1)) - Ω(report["foo"].Name).Should(Equal("foo")) - Ω(report["foo"].Info).Should(Equal("info!")) - Ω(report["foo"].SmallestLabel).Should(Equal("Fastest Time")) - Ω(report["foo"].LargestLabel).Should(Equal("Slowest Time")) - Ω(report["foo"].AverageLabel).Should(Equal("Average Time")) - Ω(report["foo"].Units).Should(Equal("s")) - Ω(report["foo"].Results).Should(HaveLen(3)) - Ω(report["foo"].Results[0]).Should(BeNumerically("~", 0.1, 0.01)) - Ω(report["foo"].Results[1]).Should(BeNumerically("~", 0.2, 0.01)) - Ω(report["foo"].Results[2]).Should(BeNumerically("~", 0.17, 0.01)) - Ω(report["foo"].Smallest).Should(BeNumerically("~", 0.1, 0.01)) - Ω(report["foo"].Largest).Should(BeNumerically("~", 0.2, 0.01)) - Ω(report["foo"].Average).Should(BeNumerically("~", 0.16, 0.01)) - Ω(report["foo"].StdDeviation).Should(BeNumerically("~", 0.04, 0.01)) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/leafnodes/setup_nodes_test.go b/vendor/github.com/onsi/ginkgo/internal/leafnodes/setup_nodes_test.go deleted file mode 100644 index d5b9251f..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/leafnodes/setup_nodes_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package leafnodes_test - -import ( - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" - - . "github.com/onsi/ginkgo/internal/leafnodes" - - "github.com/onsi/ginkgo/internal/codelocation" -) - -var _ = Describe("Setup Nodes", func() { - Describe("BeforeEachNodes", func() { - It("should report the correct type and code location", func() { - codeLocation := codelocation.New(0) - beforeEach := NewBeforeEachNode(func() {}, codeLocation, 0, nil, 3) - Ω(beforeEach.Type()).Should(Equal(types.SpecComponentTypeBeforeEach)) - Ω(beforeEach.CodeLocation()).Should(Equal(codeLocation)) - }) - }) - - Describe("AfterEachNodes", func() { - It("should report the correct type and code location", func() { - codeLocation := codelocation.New(0) - afterEach := NewAfterEachNode(func() {}, codeLocation, 0, nil, 3) - Ω(afterEach.Type()).Should(Equal(types.SpecComponentTypeAfterEach)) - Ω(afterEach.CodeLocation()).Should(Equal(codeLocation)) - }) - }) - - Describe("JustBeforeEachNodes", func() { - It("should report the correct type and code location", func() { - codeLocation := codelocation.New(0) - justBeforeEach := NewJustBeforeEachNode(func() {}, codeLocation, 0, nil, 3) - Ω(justBeforeEach.Type()).Should(Equal(types.SpecComponentTypeJustBeforeEach)) - Ω(justBeforeEach.CodeLocation()).Should(Equal(codeLocation)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/leafnodes/shared_runner_test.go b/vendor/github.com/onsi/ginkgo/internal/leafnodes/shared_runner_test.go deleted file mode 100644 index fcccef48..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/leafnodes/shared_runner_test.go +++ /dev/null @@ -1,356 +0,0 @@ -package leafnodes_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/leafnodes" - . "github.com/onsi/gomega" - - "reflect" - "time" - - "github.com/onsi/ginkgo/internal/codelocation" - Failer "github.com/onsi/ginkgo/internal/failer" - "github.com/onsi/ginkgo/types" -) - -type runnable interface { - Run() (outcome types.SpecState, failure types.SpecFailure) - CodeLocation() types.CodeLocation -} - -func SynchronousSharedRunnerBehaviors(build func(body interface{}, timeout time.Duration, failer *Failer.Failer, componentCodeLocation types.CodeLocation) runnable, componentType types.SpecComponentType, componentIndex int) { - var ( - outcome types.SpecState - failure types.SpecFailure - - failer *Failer.Failer - - componentCodeLocation types.CodeLocation - innerCodeLocation types.CodeLocation - - didRun bool - ) - - BeforeEach(func() { - failer = Failer.New() - componentCodeLocation = codelocation.New(0) - innerCodeLocation = codelocation.New(0) - - didRun = false - }) - - Describe("synchronous functions", func() { - Context("when the function passes", func() { - BeforeEach(func() { - outcome, failure = build(func() { - didRun = true - }, 0, failer, componentCodeLocation).Run() - }) - - It("should have a succesful outcome", func() { - Ω(didRun).Should(BeTrue()) - - Ω(outcome).Should(Equal(types.SpecStatePassed)) - Ω(failure).Should(BeZero()) - }) - }) - - Context("when a failure occurs", func() { - BeforeEach(func() { - outcome, failure = build(func() { - didRun = true - failer.Fail("bam", innerCodeLocation) - panic("should not matter") - }, 0, failer, componentCodeLocation).Run() - }) - - It("should return the failure", func() { - Ω(didRun).Should(BeTrue()) - - Ω(outcome).Should(Equal(types.SpecStateFailed)) - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "bam", - Location: innerCodeLocation, - ForwardedPanic: "", - ComponentIndex: componentIndex, - ComponentType: componentType, - ComponentCodeLocation: componentCodeLocation, - })) - }) - }) - - Context("when a panic occurs", func() { - BeforeEach(func() { - outcome, failure = build(func() { - didRun = true - innerCodeLocation = codelocation.New(0) - panic("ack!") - }, 0, failer, componentCodeLocation).Run() - }) - - It("should return the panic", func() { - Ω(didRun).Should(BeTrue()) - - Ω(outcome).Should(Equal(types.SpecStatePanicked)) - Ω(failure.ForwardedPanic).Should(Equal("ack!")) - }) - }) - - Context("when a panic occurs with a nil value", func() { - BeforeEach(func() { - outcome, failure = build(func() { - didRun = true - innerCodeLocation = codelocation.New(0) - panic(nil) - }, 0, failer, componentCodeLocation).Run() - }) - - It("should return the nil-valued panic", func() { - Ω(didRun).Should(BeTrue()) - - Ω(outcome).Should(Equal(types.SpecStatePanicked)) - Ω(failure.ForwardedPanic).Should(Equal("")) - }) - }) - - }) -} - -func AsynchronousSharedRunnerBehaviors(build func(body interface{}, timeout time.Duration, failer *Failer.Failer, componentCodeLocation types.CodeLocation) runnable, componentType types.SpecComponentType, componentIndex int) { - var ( - outcome types.SpecState - failure types.SpecFailure - - failer *Failer.Failer - - componentCodeLocation types.CodeLocation - innerCodeLocation types.CodeLocation - - didRun bool - ) - - BeforeEach(func() { - failer = Failer.New() - componentCodeLocation = codelocation.New(0) - innerCodeLocation = codelocation.New(0) - - didRun = false - }) - - Describe("asynchronous functions", func() { - var timeoutDuration time.Duration - - BeforeEach(func() { - timeoutDuration = time.Duration(1 * float64(time.Second)) - }) - - Context("when running", func() { - It("should run the function as a goroutine, and block until it's done", func() { - proveAsync := make(chan bool) - - build(func(done Done) { - didRun = true - proveAsync <- true - close(done) - }, timeoutDuration, failer, componentCodeLocation).Run() - - Eventually(proveAsync).Should(Receive(Equal(true))) - }) - }) - - Context("when the function passes", func() { - BeforeEach(func() { - outcome, failure = build(func(done Done) { - didRun = true - close(done) - }, timeoutDuration, failer, componentCodeLocation).Run() - }) - - It("should have a succesful outcome", func() { - Ω(didRun).Should(BeTrue()) - Ω(outcome).Should(Equal(types.SpecStatePassed)) - Ω(failure).Should(BeZero()) - }) - }) - - Context("when the function fails", func() { - BeforeEach(func() { - outcome, failure = build(func(done Done) { - didRun = true - failer.Fail("bam", innerCodeLocation) - time.Sleep(20 * time.Millisecond) - panic("doesn't matter") - close(done) - }, 10*time.Millisecond, failer, componentCodeLocation).Run() - }) - - It("should return the failure", func() { - Ω(didRun).Should(BeTrue()) - - Ω(outcome).Should(Equal(types.SpecStateFailed)) - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "bam", - Location: innerCodeLocation, - ForwardedPanic: "", - ComponentIndex: componentIndex, - ComponentType: componentType, - ComponentCodeLocation: componentCodeLocation, - })) - }) - }) - - Context("when the function times out", func() { - var guard chan struct{} - - BeforeEach(func() { - guard = make(chan struct{}) - outcome, failure = build(func(done Done) { - didRun = true - time.Sleep(20 * time.Millisecond) - close(guard) - panic("doesn't matter") - close(done) - }, 10*time.Millisecond, failer, componentCodeLocation).Run() - }) - - It("should return the timeout", func() { - <-guard - Ω(didRun).Should(BeTrue()) - - Ω(outcome).Should(Equal(types.SpecStateTimedOut)) - Ω(failure).Should(Equal(types.SpecFailure{ - Message: "Timed out", - Location: componentCodeLocation, - ForwardedPanic: "", - ComponentIndex: componentIndex, - ComponentType: componentType, - ComponentCodeLocation: componentCodeLocation, - })) - }) - }) - - Context("when the function panics", func() { - BeforeEach(func() { - outcome, failure = build(func(done Done) { - didRun = true - innerCodeLocation = codelocation.New(0) - panic("ack!") - }, 100*time.Millisecond, failer, componentCodeLocation).Run() - }) - - It("should return the panic", func() { - Ω(didRun).Should(BeTrue()) - - Ω(outcome).Should(Equal(types.SpecStatePanicked)) - Ω(failure.ForwardedPanic).Should(Equal("ack!")) - }) - }) - - Context("when the function panics with a nil value", func() { - BeforeEach(func() { - outcome, failure = build(func(done Done) { - didRun = true - innerCodeLocation = codelocation.New(0) - panic(nil) - }, 100*time.Millisecond, failer, componentCodeLocation).Run() - }) - - It("should return the nil-valued panic", func() { - Ω(didRun).Should(BeTrue()) - - Ω(outcome).Should(Equal(types.SpecStatePanicked)) - Ω(failure.ForwardedPanic).Should(Equal("")) - }) - }) - }) -} - -func InvalidSharedRunnerBehaviors(build func(body interface{}, timeout time.Duration, failer *Failer.Failer, componentCodeLocation types.CodeLocation) runnable, componentType types.SpecComponentType) { - var ( - failer *Failer.Failer - componentCodeLocation types.CodeLocation - ) - - BeforeEach(func() { - failer = Failer.New() - componentCodeLocation = codelocation.New(0) - }) - - Describe("invalid functions", func() { - Context("when passed something that's not a function", func() { - It("should panic", func() { - Ω(func() { - build("not a function", 0, failer, componentCodeLocation) - }).Should(Panic()) - }) - }) - - Context("when the function takes the wrong kind of argument", func() { - It("should panic", func() { - Ω(func() { - build(func(oops string) {}, 0, failer, componentCodeLocation) - }).Should(Panic()) - }) - }) - - Context("when the function takes more than one argument", func() { - It("should panic", func() { - Ω(func() { - build(func(done Done, oops string) {}, 0, failer, componentCodeLocation) - }).Should(Panic()) - }) - }) - }) -} - -var _ = Describe("Shared RunnableNode behavior", func() { - Describe("It Nodes", func() { - build := func(body interface{}, timeout time.Duration, failer *Failer.Failer, componentCodeLocation types.CodeLocation) runnable { - return NewItNode("", body, types.FlagTypeFocused, componentCodeLocation, timeout, failer, 3) - } - - SynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeIt, 3) - AsynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeIt, 3) - InvalidSharedRunnerBehaviors(build, types.SpecComponentTypeIt) - }) - - Describe("Measure Nodes", func() { - build := func(body interface{}, _ time.Duration, failer *Failer.Failer, componentCodeLocation types.CodeLocation) runnable { - return NewMeasureNode("", func(Benchmarker) { - reflect.ValueOf(body).Call([]reflect.Value{}) - }, types.FlagTypeFocused, componentCodeLocation, 10, failer, 3) - } - - SynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeMeasure, 3) - }) - - Describe("BeforeEach Nodes", func() { - build := func(body interface{}, timeout time.Duration, failer *Failer.Failer, componentCodeLocation types.CodeLocation) runnable { - return NewBeforeEachNode(body, componentCodeLocation, timeout, failer, 3) - } - - SynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeBeforeEach, 3) - AsynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeBeforeEach, 3) - InvalidSharedRunnerBehaviors(build, types.SpecComponentTypeBeforeEach) - }) - - Describe("AfterEach Nodes", func() { - build := func(body interface{}, timeout time.Duration, failer *Failer.Failer, componentCodeLocation types.CodeLocation) runnable { - return NewAfterEachNode(body, componentCodeLocation, timeout, failer, 3) - } - - SynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeAfterEach, 3) - AsynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeAfterEach, 3) - InvalidSharedRunnerBehaviors(build, types.SpecComponentTypeAfterEach) - }) - - Describe("JustBeforeEach Nodes", func() { - build := func(body interface{}, timeout time.Duration, failer *Failer.Failer, componentCodeLocation types.CodeLocation) runnable { - return NewJustBeforeEachNode(body, componentCodeLocation, timeout, failer, 3) - } - - SynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeJustBeforeEach, 3) - AsynchronousSharedRunnerBehaviors(build, types.SpecComponentTypeJustBeforeEach, 3) - InvalidSharedRunnerBehaviors(build, types.SpecComponentTypeJustBeforeEach) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/leafnodes/suite_nodes_test.go b/vendor/github.com/onsi/ginkgo/internal/leafnodes/suite_nodes_test.go deleted file mode 100644 index 246b329f..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/leafnodes/suite_nodes_test.go +++ /dev/null @@ -1,230 +0,0 @@ -package leafnodes_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - . "github.com/onsi/ginkgo/internal/leafnodes" - - "time" - - "github.com/onsi/ginkgo/internal/codelocation" - Failer "github.com/onsi/ginkgo/internal/failer" - "github.com/onsi/ginkgo/types" -) - -var _ = Describe("SuiteNodes", func() { - Describe("BeforeSuite nodes", func() { - var befSuite SuiteNode - var failer *Failer.Failer - var codeLocation types.CodeLocation - var innerCodeLocation types.CodeLocation - var outcome bool - - BeforeEach(func() { - failer = Failer.New() - codeLocation = codelocation.New(0) - innerCodeLocation = codelocation.New(0) - }) - - Context("when the body passes", func() { - BeforeEach(func() { - befSuite = NewBeforeSuiteNode(func() { - time.Sleep(10 * time.Millisecond) - }, codeLocation, 0, failer) - outcome = befSuite.Run(0, 0, "") - }) - - It("should return true when run and report as passed", func() { - Ω(outcome).Should(BeTrue()) - Ω(befSuite.Passed()).Should(BeTrue()) - }) - - It("should have the correct summary", func() { - summary := befSuite.Summary() - Ω(summary.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) - Ω(summary.CodeLocation).Should(Equal(codeLocation)) - Ω(summary.State).Should(Equal(types.SpecStatePassed)) - Ω(summary.RunTime).Should(BeNumerically(">=", 10*time.Millisecond)) - Ω(summary.Failure).Should(BeZero()) - }) - }) - - Context("when the body fails", func() { - BeforeEach(func() { - befSuite = NewBeforeSuiteNode(func() { - failer.Fail("oops", innerCodeLocation) - }, codeLocation, 0, failer) - outcome = befSuite.Run(0, 0, "") - }) - - It("should return false when run and report as failed", func() { - Ω(outcome).Should(BeFalse()) - Ω(befSuite.Passed()).Should(BeFalse()) - }) - - It("should have the correct summary", func() { - summary := befSuite.Summary() - Ω(summary.State).Should(Equal(types.SpecStateFailed)) - Ω(summary.Failure.Message).Should(Equal("oops")) - Ω(summary.Failure.Location).Should(Equal(innerCodeLocation)) - Ω(summary.Failure.ForwardedPanic).Should(BeEmpty()) - Ω(summary.Failure.ComponentIndex).Should(Equal(0)) - Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) - Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) - }) - }) - - Context("when the body times out", func() { - BeforeEach(func() { - befSuite = NewBeforeSuiteNode(func(done Done) { - }, codeLocation, time.Millisecond, failer) - outcome = befSuite.Run(0, 0, "") - }) - - It("should return false when run and report as failed", func() { - Ω(outcome).Should(BeFalse()) - Ω(befSuite.Passed()).Should(BeFalse()) - }) - - It("should have the correct summary", func() { - summary := befSuite.Summary() - Ω(summary.State).Should(Equal(types.SpecStateTimedOut)) - Ω(summary.Failure.ForwardedPanic).Should(BeEmpty()) - Ω(summary.Failure.ComponentIndex).Should(Equal(0)) - Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) - Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) - }) - }) - - Context("when the body panics", func() { - BeforeEach(func() { - befSuite = NewBeforeSuiteNode(func() { - panic("bam") - }, codeLocation, 0, failer) - outcome = befSuite.Run(0, 0, "") - }) - - It("should return false when run and report as failed", func() { - Ω(outcome).Should(BeFalse()) - Ω(befSuite.Passed()).Should(BeFalse()) - }) - - It("should have the correct summary", func() { - summary := befSuite.Summary() - Ω(summary.State).Should(Equal(types.SpecStatePanicked)) - Ω(summary.Failure.ForwardedPanic).Should(Equal("bam")) - Ω(summary.Failure.ComponentIndex).Should(Equal(0)) - Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) - Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) - }) - }) - }) - - Describe("AfterSuite nodes", func() { - var aftSuite SuiteNode - var failer *Failer.Failer - var codeLocation types.CodeLocation - var innerCodeLocation types.CodeLocation - var outcome bool - - BeforeEach(func() { - failer = Failer.New() - codeLocation = codelocation.New(0) - innerCodeLocation = codelocation.New(0) - }) - - Context("when the body passes", func() { - BeforeEach(func() { - aftSuite = NewAfterSuiteNode(func() { - time.Sleep(10 * time.Millisecond) - }, codeLocation, 0, failer) - outcome = aftSuite.Run(0, 0, "") - }) - - It("should return true when run and report as passed", func() { - Ω(outcome).Should(BeTrue()) - Ω(aftSuite.Passed()).Should(BeTrue()) - }) - - It("should have the correct summary", func() { - summary := aftSuite.Summary() - Ω(summary.ComponentType).Should(Equal(types.SpecComponentTypeAfterSuite)) - Ω(summary.CodeLocation).Should(Equal(codeLocation)) - Ω(summary.State).Should(Equal(types.SpecStatePassed)) - Ω(summary.RunTime).Should(BeNumerically(">=", 10*time.Millisecond)) - Ω(summary.Failure).Should(BeZero()) - }) - }) - - Context("when the body fails", func() { - BeforeEach(func() { - aftSuite = NewAfterSuiteNode(func() { - failer.Fail("oops", innerCodeLocation) - }, codeLocation, 0, failer) - outcome = aftSuite.Run(0, 0, "") - }) - - It("should return false when run and report as failed", func() { - Ω(outcome).Should(BeFalse()) - Ω(aftSuite.Passed()).Should(BeFalse()) - }) - - It("should have the correct summary", func() { - summary := aftSuite.Summary() - Ω(summary.State).Should(Equal(types.SpecStateFailed)) - Ω(summary.Failure.Message).Should(Equal("oops")) - Ω(summary.Failure.Location).Should(Equal(innerCodeLocation)) - Ω(summary.Failure.ForwardedPanic).Should(BeEmpty()) - Ω(summary.Failure.ComponentIndex).Should(Equal(0)) - Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeAfterSuite)) - Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) - }) - }) - - Context("when the body times out", func() { - BeforeEach(func() { - aftSuite = NewAfterSuiteNode(func(done Done) { - }, codeLocation, time.Millisecond, failer) - outcome = aftSuite.Run(0, 0, "") - }) - - It("should return false when run and report as failed", func() { - Ω(outcome).Should(BeFalse()) - Ω(aftSuite.Passed()).Should(BeFalse()) - }) - - It("should have the correct summary", func() { - summary := aftSuite.Summary() - Ω(summary.State).Should(Equal(types.SpecStateTimedOut)) - Ω(summary.Failure.ForwardedPanic).Should(BeEmpty()) - Ω(summary.Failure.ComponentIndex).Should(Equal(0)) - Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeAfterSuite)) - Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) - }) - }) - - Context("when the body panics", func() { - BeforeEach(func() { - aftSuite = NewAfterSuiteNode(func() { - panic("bam") - }, codeLocation, 0, failer) - outcome = aftSuite.Run(0, 0, "") - }) - - It("should return false when run and report as failed", func() { - Ω(outcome).Should(BeFalse()) - Ω(aftSuite.Passed()).Should(BeFalse()) - }) - - It("should have the correct summary", func() { - summary := aftSuite.Summary() - Ω(summary.State).Should(Equal(types.SpecStatePanicked)) - Ω(summary.Failure.ForwardedPanic).Should(Equal("bam")) - Ω(summary.Failure.ComponentIndex).Should(Equal(0)) - Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeAfterSuite)) - Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/leafnodes/synchronized_after_suite_node_test.go b/vendor/github.com/onsi/ginkgo/internal/leafnodes/synchronized_after_suite_node_test.go deleted file mode 100644 index 4266a4bc..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/leafnodes/synchronized_after_suite_node_test.go +++ /dev/null @@ -1,196 +0,0 @@ -package leafnodes_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/leafnodes" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" - "sync" - - "github.com/onsi/gomega/ghttp" - "net/http" - - "github.com/onsi/ginkgo/internal/codelocation" - Failer "github.com/onsi/ginkgo/internal/failer" - "time" -) - -var _ = Describe("SynchronizedAfterSuiteNode", func() { - var failer *Failer.Failer - var node SuiteNode - var codeLocation types.CodeLocation - var innerCodeLocation types.CodeLocation - var outcome bool - var server *ghttp.Server - var things []string - var lock *sync.Mutex - - BeforeEach(func() { - things = []string{} - server = ghttp.NewServer() - codeLocation = codelocation.New(0) - innerCodeLocation = codelocation.New(0) - failer = Failer.New() - lock = &sync.Mutex{} - }) - - AfterEach(func() { - server.Close() - }) - - newNode := func(bodyA interface{}, bodyB interface{}) SuiteNode { - return NewSynchronizedAfterSuiteNode(bodyA, bodyB, codeLocation, time.Millisecond, failer) - } - - ranThing := func(thing string) { - lock.Lock() - defer lock.Unlock() - things = append(things, thing) - } - - thingsThatRan := func() []string { - lock.Lock() - defer lock.Unlock() - return things - } - - Context("when not running in parallel", func() { - Context("when all is well", func() { - BeforeEach(func() { - node = newNode(func() { - ranThing("A") - }, func() { - ranThing("B") - }) - - outcome = node.Run(1, 1, server.URL()) - }) - - It("should run A, then B", func() { - Ω(thingsThatRan()).Should(Equal([]string{"A", "B"})) - }) - - It("should report success", func() { - Ω(outcome).Should(BeTrue()) - Ω(node.Passed()).Should(BeTrue()) - Ω(node.Summary().State).Should(Equal(types.SpecStatePassed)) - }) - }) - - Context("when A fails", func() { - BeforeEach(func() { - node = newNode(func() { - ranThing("A") - failer.Fail("bam", innerCodeLocation) - }, func() { - ranThing("B") - }) - - outcome = node.Run(1, 1, server.URL()) - }) - - It("should still run B", func() { - Ω(thingsThatRan()).Should(Equal([]string{"A", "B"})) - }) - - It("should report failure", func() { - Ω(outcome).Should(BeFalse()) - Ω(node.Passed()).Should(BeFalse()) - Ω(node.Summary().State).Should(Equal(types.SpecStateFailed)) - }) - }) - - Context("when B fails", func() { - BeforeEach(func() { - node = newNode(func() { - ranThing("A") - }, func() { - ranThing("B") - failer.Fail("bam", innerCodeLocation) - }) - - outcome = node.Run(1, 1, server.URL()) - }) - - It("should run all the things", func() { - Ω(thingsThatRan()).Should(Equal([]string{"A", "B"})) - }) - - It("should report failure", func() { - Ω(outcome).Should(BeFalse()) - Ω(node.Passed()).Should(BeFalse()) - Ω(node.Summary().State).Should(Equal(types.SpecStateFailed)) - }) - }) - }) - - Context("when running in parallel", func() { - Context("as the first node", func() { - BeforeEach(func() { - server.AppendHandlers(ghttp.CombineHandlers( - ghttp.VerifyRequest("GET", "/RemoteAfterSuiteData"), - func(writer http.ResponseWriter, request *http.Request) { - ranThing("Request1") - }, - ghttp.RespondWithJSONEncoded(200, types.RemoteAfterSuiteData{false}), - ), ghttp.CombineHandlers( - ghttp.VerifyRequest("GET", "/RemoteAfterSuiteData"), - func(writer http.ResponseWriter, request *http.Request) { - ranThing("Request2") - }, - ghttp.RespondWithJSONEncoded(200, types.RemoteAfterSuiteData{false}), - ), ghttp.CombineHandlers( - ghttp.VerifyRequest("GET", "/RemoteAfterSuiteData"), - func(writer http.ResponseWriter, request *http.Request) { - ranThing("Request3") - }, - ghttp.RespondWithJSONEncoded(200, types.RemoteAfterSuiteData{true}), - )) - - node = newNode(func() { - ranThing("A") - }, func() { - ranThing("B") - }) - - outcome = node.Run(1, 3, server.URL()) - }) - - It("should run A and, when the server says its time, run B", func() { - Ω(thingsThatRan()).Should(Equal([]string{"A", "Request1", "Request2", "Request3", "B"})) - }) - - It("should report success", func() { - Ω(outcome).Should(BeTrue()) - Ω(node.Passed()).Should(BeTrue()) - Ω(node.Summary().State).Should(Equal(types.SpecStatePassed)) - }) - }) - - Context("as any other node", func() { - BeforeEach(func() { - node = newNode(func() { - ranThing("A") - }, func() { - ranThing("B") - }) - - outcome = node.Run(2, 3, server.URL()) - }) - - It("should run A, and not run B", func() { - Ω(thingsThatRan()).Should(Equal([]string{"A"})) - }) - - It("should not talk to the server", func() { - Ω(server.ReceivedRequests()).Should(BeEmpty()) - }) - - It("should report success", func() { - Ω(outcome).Should(BeTrue()) - Ω(node.Passed()).Should(BeTrue()) - Ω(node.Summary().State).Should(Equal(types.SpecStatePassed)) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/leafnodes/synchronized_before_suite_node_test.go b/vendor/github.com/onsi/ginkgo/internal/leafnodes/synchronized_before_suite_node_test.go deleted file mode 100644 index dbf24267..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/leafnodes/synchronized_before_suite_node_test.go +++ /dev/null @@ -1,445 +0,0 @@ -package leafnodes_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/leafnodes" - . "github.com/onsi/gomega" - - "github.com/onsi/gomega/ghttp" - "net/http" - - "github.com/onsi/ginkgo/internal/codelocation" - Failer "github.com/onsi/ginkgo/internal/failer" - "github.com/onsi/ginkgo/types" - "time" -) - -var _ = Describe("SynchronizedBeforeSuiteNode", func() { - var failer *Failer.Failer - var node SuiteNode - var codeLocation types.CodeLocation - var innerCodeLocation types.CodeLocation - var outcome bool - var server *ghttp.Server - - BeforeEach(func() { - server = ghttp.NewServer() - codeLocation = codelocation.New(0) - innerCodeLocation = codelocation.New(0) - failer = Failer.New() - }) - - AfterEach(func() { - server.Close() - }) - - newNode := func(bodyA interface{}, bodyB interface{}) SuiteNode { - return NewSynchronizedBeforeSuiteNode(bodyA, bodyB, codeLocation, time.Millisecond, failer) - } - - Describe("when not running in parallel", func() { - Context("when all is well", func() { - var data []byte - BeforeEach(func() { - data = nil - - node = newNode(func() []byte { - return []byte("my data") - }, func(d []byte) { - data = d - }) - - outcome = node.Run(1, 1, server.URL()) - }) - - It("should run A, then B passing the output from A to B", func() { - Ω(data).Should(Equal([]byte("my data"))) - }) - - It("should report success", func() { - Ω(outcome).Should(BeTrue()) - Ω(node.Passed()).Should(BeTrue()) - Ω(node.Summary().State).Should(Equal(types.SpecStatePassed)) - }) - }) - - Context("when A fails", func() { - var ranB bool - BeforeEach(func() { - ranB = false - node = newNode(func() []byte { - failer.Fail("boom", innerCodeLocation) - return nil - }, func([]byte) { - ranB = true - }) - - outcome = node.Run(1, 1, server.URL()) - }) - - It("should not run B", func() { - Ω(ranB).Should(BeFalse()) - }) - - It("should report failure", func() { - Ω(outcome).Should(BeFalse()) - Ω(node.Passed()).Should(BeFalse()) - Ω(node.Summary().State).Should(Equal(types.SpecStateFailed)) - }) - }) - - Context("when B fails", func() { - BeforeEach(func() { - node = newNode(func() []byte { - return nil - }, func([]byte) { - failer.Fail("boom", innerCodeLocation) - }) - - outcome = node.Run(1, 1, server.URL()) - }) - - It("should report failure", func() { - Ω(outcome).Should(BeFalse()) - Ω(node.Passed()).Should(BeFalse()) - Ω(node.Summary().State).Should(Equal(types.SpecStateFailed)) - }) - }) - - Context("when A times out", func() { - var ranB bool - BeforeEach(func() { - ranB = false - node = newNode(func(Done) []byte { - time.Sleep(time.Second) - return nil - }, func([]byte) { - ranB = true - }) - - outcome = node.Run(1, 1, server.URL()) - }) - - It("should not run B", func() { - Ω(ranB).Should(BeFalse()) - }) - - It("should report failure", func() { - Ω(outcome).Should(BeFalse()) - Ω(node.Passed()).Should(BeFalse()) - Ω(node.Summary().State).Should(Equal(types.SpecStateTimedOut)) - }) - }) - - Context("when B times out", func() { - BeforeEach(func() { - node = newNode(func() []byte { - return nil - }, func([]byte, Done) { - time.Sleep(time.Second) - }) - - outcome = node.Run(1, 1, server.URL()) - }) - - It("should report failure", func() { - Ω(outcome).Should(BeFalse()) - Ω(node.Passed()).Should(BeFalse()) - Ω(node.Summary().State).Should(Equal(types.SpecStateTimedOut)) - }) - }) - }) - - Describe("when running in parallel", func() { - var ranB bool - var parallelNode, parallelTotal int - BeforeEach(func() { - ranB = false - parallelNode, parallelTotal = 1, 3 - }) - - Context("as the first node, it runs A", func() { - var expectedState types.RemoteBeforeSuiteData - - BeforeEach(func() { - parallelNode, parallelTotal = 1, 3 - }) - - JustBeforeEach(func() { - server.AppendHandlers(ghttp.CombineHandlers( - ghttp.VerifyRequest("POST", "/BeforeSuiteState"), - ghttp.VerifyJSONRepresenting(expectedState), - )) - - outcome = node.Run(parallelNode, parallelTotal, server.URL()) - }) - - Context("when A succeeds", func() { - BeforeEach(func() { - expectedState = types.RemoteBeforeSuiteData{[]byte("my data"), types.RemoteBeforeSuiteStatePassed} - - node = newNode(func() []byte { - return []byte("my data") - }, func([]byte) { - ranB = true - }) - }) - - It("should post about A succeeding", func() { - Ω(server.ReceivedRequests()).Should(HaveLen(1)) - }) - - It("should run B", func() { - Ω(ranB).Should(BeTrue()) - }) - - It("should report success", func() { - Ω(outcome).Should(BeTrue()) - }) - }) - - Context("when A fails", func() { - BeforeEach(func() { - expectedState = types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStateFailed} - - node = newNode(func() []byte { - panic("BAM") - return []byte("my data") - }, func([]byte) { - ranB = true - }) - }) - - It("should post about A failing", func() { - Ω(server.ReceivedRequests()).Should(HaveLen(1)) - }) - - It("should not run B", func() { - Ω(ranB).Should(BeFalse()) - }) - - It("should report failure", func() { - Ω(outcome).Should(BeFalse()) - }) - }) - }) - - Context("as the Nth node", func() { - var statusCode int - var response interface{} - var ranA bool - var bData []byte - - BeforeEach(func() { - ranA = false - bData = nil - - statusCode = http.StatusOK - - server.AppendHandlers(ghttp.CombineHandlers( - ghttp.VerifyRequest("GET", "/BeforeSuiteState"), - ghttp.RespondWith(http.StatusOK, string((types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStatePending}).ToJSON())), - ), ghttp.CombineHandlers( - ghttp.VerifyRequest("GET", "/BeforeSuiteState"), - ghttp.RespondWith(http.StatusOK, string((types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStatePending}).ToJSON())), - ), ghttp.CombineHandlers( - ghttp.VerifyRequest("GET", "/BeforeSuiteState"), - ghttp.RespondWithJSONEncodedPtr(&statusCode, &response), - )) - - node = newNode(func() []byte { - ranA = true - return nil - }, func(data []byte) { - bData = data - }) - - parallelNode, parallelTotal = 2, 3 - }) - - Context("when A on node1 succeeds", func() { - BeforeEach(func() { - response = types.RemoteBeforeSuiteData{[]byte("my data"), types.RemoteBeforeSuiteStatePassed} - outcome = node.Run(parallelNode, parallelTotal, server.URL()) - }) - - It("should not run A", func() { - Ω(ranA).Should(BeFalse()) - }) - - It("should poll for A", func() { - Ω(server.ReceivedRequests()).Should(HaveLen(3)) - }) - - It("should run B when the polling succeeds", func() { - Ω(bData).Should(Equal([]byte("my data"))) - }) - - It("should succeed", func() { - Ω(outcome).Should(BeTrue()) - Ω(node.Passed()).Should(BeTrue()) - }) - }) - - Context("when A on node1 fails", func() { - BeforeEach(func() { - response = types.RemoteBeforeSuiteData{[]byte("my data"), types.RemoteBeforeSuiteStateFailed} - outcome = node.Run(parallelNode, parallelTotal, server.URL()) - }) - - It("should not run A", func() { - Ω(ranA).Should(BeFalse()) - }) - - It("should poll for A", func() { - Ω(server.ReceivedRequests()).Should(HaveLen(3)) - }) - - It("should not run B", func() { - Ω(bData).Should(BeNil()) - }) - - It("should fail", func() { - Ω(outcome).Should(BeFalse()) - Ω(node.Passed()).Should(BeFalse()) - - summary := node.Summary() - Ω(summary.State).Should(Equal(types.SpecStateFailed)) - Ω(summary.Failure.Message).Should(Equal("BeforeSuite on Node 1 failed")) - Ω(summary.Failure.Location).Should(Equal(codeLocation)) - Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) - Ω(summary.Failure.ComponentIndex).Should(Equal(0)) - Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) - }) - }) - - Context("when node1 disappears", func() { - BeforeEach(func() { - response = types.RemoteBeforeSuiteData{[]byte("my data"), types.RemoteBeforeSuiteStateDisappeared} - outcome = node.Run(parallelNode, parallelTotal, server.URL()) - }) - - It("should not run A", func() { - Ω(ranA).Should(BeFalse()) - }) - - It("should poll for A", func() { - Ω(server.ReceivedRequests()).Should(HaveLen(3)) - }) - - It("should not run B", func() { - Ω(bData).Should(BeNil()) - }) - - It("should fail", func() { - Ω(outcome).Should(BeFalse()) - Ω(node.Passed()).Should(BeFalse()) - - summary := node.Summary() - Ω(summary.State).Should(Equal(types.SpecStateFailed)) - Ω(summary.Failure.Message).Should(Equal("Node 1 disappeared before completing BeforeSuite")) - Ω(summary.Failure.Location).Should(Equal(codeLocation)) - Ω(summary.Failure.ComponentType).Should(Equal(types.SpecComponentTypeBeforeSuite)) - Ω(summary.Failure.ComponentIndex).Should(Equal(0)) - Ω(summary.Failure.ComponentCodeLocation).Should(Equal(codeLocation)) - }) - }) - }) - }) - - Describe("construction", func() { - Describe("the first function", func() { - Context("when the first function returns a byte array", func() { - Context("and takes nothing", func() { - It("should be fine", func() { - Ω(func() { - newNode(func() []byte { return nil }, func([]byte) {}) - }).ShouldNot(Panic()) - }) - }) - - Context("and takes a done function", func() { - It("should be fine", func() { - Ω(func() { - newNode(func(Done) []byte { return nil }, func([]byte) {}) - }).ShouldNot(Panic()) - }) - }) - - Context("and takes more than one thing", func() { - It("should panic", func() { - Ω(func() { - newNode(func(Done, Done) []byte { return nil }, func([]byte) {}) - }).Should(Panic()) - }) - }) - - Context("and takes something else", func() { - It("should panic", func() { - Ω(func() { - newNode(func(bool) []byte { return nil }, func([]byte) {}) - }).Should(Panic()) - }) - }) - }) - - Context("when the first function does not return a byte array", func() { - It("should panic", func() { - Ω(func() { - newNode(func() {}, func([]byte) {}) - }).Should(Panic()) - - Ω(func() { - newNode(func() []int { return nil }, func([]byte) {}) - }).Should(Panic()) - }) - }) - }) - - Describe("the second function", func() { - Context("when the second function takes a byte array", func() { - It("should be fine", func() { - Ω(func() { - newNode(func() []byte { return nil }, func([]byte) {}) - }).ShouldNot(Panic()) - }) - }) - - Context("when it also takes a done channel", func() { - It("should be fine", func() { - Ω(func() { - newNode(func() []byte { return nil }, func([]byte, Done) {}) - }).ShouldNot(Panic()) - }) - }) - - Context("if it takes anything else", func() { - It("should panic", func() { - Ω(func() { - newNode(func() []byte { return nil }, func([]byte, chan bool) {}) - }).Should(Panic()) - - Ω(func() { - newNode(func() []byte { return nil }, func(string) {}) - }).Should(Panic()) - }) - }) - - Context("if it takes nothing at all", func() { - It("should panic", func() { - Ω(func() { - newNode(func() []byte { return nil }, func() {}) - }).Should(Panic()) - }) - }) - - Context("if it returns something", func() { - It("should panic", func() { - Ω(func() { - newNode(func() []byte { return nil }, func([]byte) []byte { return nil }) - }).Should(Panic()) - }) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/aggregator_test.go b/vendor/github.com/onsi/ginkgo/internal/remote/aggregator_test.go deleted file mode 100644 index aedf9392..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/remote/aggregator_test.go +++ /dev/null @@ -1,315 +0,0 @@ -package remote_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "time" - - "github.com/onsi/ginkgo/config" - . "github.com/onsi/ginkgo/internal/remote" - st "github.com/onsi/ginkgo/reporters/stenographer" - "github.com/onsi/ginkgo/types" -) - -var _ = Describe("Aggregator", func() { - var ( - aggregator *Aggregator - reporterConfig config.DefaultReporterConfigType - stenographer *st.FakeStenographer - result chan bool - - ginkgoConfig1 config.GinkgoConfigType - ginkgoConfig2 config.GinkgoConfigType - - suiteSummary1 *types.SuiteSummary - suiteSummary2 *types.SuiteSummary - - beforeSummary *types.SetupSummary - afterSummary *types.SetupSummary - specSummary *types.SpecSummary - - suiteDescription string - ) - - BeforeEach(func() { - reporterConfig = config.DefaultReporterConfigType{ - NoColor: false, - SlowSpecThreshold: 0.1, - NoisyPendings: true, - Succinct: false, - Verbose: true, - } - stenographer = st.NewFakeStenographer() - result = make(chan bool, 1) - aggregator = NewAggregator(2, result, reporterConfig, stenographer) - - // - // now set up some fixture data - // - - ginkgoConfig1 = config.GinkgoConfigType{ - RandomSeed: 1138, - RandomizeAllSpecs: true, - ParallelNode: 1, - ParallelTotal: 2, - } - - ginkgoConfig2 = config.GinkgoConfigType{ - RandomSeed: 1138, - RandomizeAllSpecs: true, - ParallelNode: 2, - ParallelTotal: 2, - } - - suiteDescription = "My Parallel Suite" - - suiteSummary1 = &types.SuiteSummary{ - SuiteDescription: suiteDescription, - - NumberOfSpecsBeforeParallelization: 30, - NumberOfTotalSpecs: 17, - NumberOfSpecsThatWillBeRun: 15, - NumberOfPendingSpecs: 1, - NumberOfSkippedSpecs: 1, - } - - suiteSummary2 = &types.SuiteSummary{ - SuiteDescription: suiteDescription, - - NumberOfSpecsBeforeParallelization: 30, - NumberOfTotalSpecs: 13, - NumberOfSpecsThatWillBeRun: 8, - NumberOfPendingSpecs: 2, - NumberOfSkippedSpecs: 3, - } - - beforeSummary = &types.SetupSummary{ - State: types.SpecStatePassed, - CapturedOutput: "BeforeSuiteOutput", - } - - afterSummary = &types.SetupSummary{ - State: types.SpecStatePassed, - CapturedOutput: "AfterSuiteOutput", - } - - specSummary = &types.SpecSummary{ - State: types.SpecStatePassed, - CapturedOutput: "SpecOutput", - } - }) - - call := func(method string, args ...interface{}) st.FakeStenographerCall { - return st.NewFakeStenographerCall(method, args...) - } - - beginSuite := func() { - stenographer.Reset() - aggregator.SpecSuiteWillBegin(ginkgoConfig2, suiteSummary2) - aggregator.SpecSuiteWillBegin(ginkgoConfig1, suiteSummary1) - Eventually(func() interface{} { - return len(stenographer.Calls()) - }).Should(BeNumerically(">=", 3)) - } - - Describe("Announcing the beginning of the suite", func() { - Context("When one of the parallel-suites starts", func() { - BeforeEach(func() { - aggregator.SpecSuiteWillBegin(ginkgoConfig2, suiteSummary2) - }) - - It("should be silent", func() { - Consistently(func() interface{} { return stenographer.Calls() }).Should(BeEmpty()) - }) - }) - - Context("once all of the parallel-suites have started", func() { - BeforeEach(func() { - aggregator.SpecSuiteWillBegin(ginkgoConfig2, suiteSummary2) - aggregator.SpecSuiteWillBegin(ginkgoConfig1, suiteSummary1) - Eventually(func() interface{} { - return stenographer.Calls() - }).Should(HaveLen(3)) - }) - - It("should announce the beginning of the suite", func() { - Ω(stenographer.Calls()).Should(HaveLen(3)) - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuite", suiteDescription, ginkgoConfig1.RandomSeed, true, false))) - Ω(stenographer.Calls()[1]).Should(Equal(call("AnnounceTotalNumberOfSpecs", 30, false))) - Ω(stenographer.Calls()[2]).Should(Equal(call("AnnounceAggregatedParallelRun", 2, false))) - }) - }) - }) - - Describe("Announcing specs and before suites", func() { - Context("when the parallel-suites have not all started", func() { - BeforeEach(func() { - aggregator.BeforeSuiteDidRun(beforeSummary) - aggregator.AfterSuiteDidRun(afterSummary) - aggregator.SpecDidComplete(specSummary) - }) - - It("should not announce any specs", func() { - Consistently(func() interface{} { return stenographer.Calls() }).Should(BeEmpty()) - }) - - Context("when the parallel-suites subsequently start", func() { - BeforeEach(func() { - beginSuite() - }) - - It("should announce the specs, the before suites and the after suites", func() { - Eventually(func() interface{} { - return stenographer.Calls() - }).Should(ContainElement(call("AnnounceSuccesfulSpec", specSummary))) - - Ω(stenographer.Calls()).Should(ContainElement(call("AnnounceCapturedOutput", beforeSummary.CapturedOutput))) - Ω(stenographer.Calls()).Should(ContainElement(call("AnnounceCapturedOutput", afterSummary.CapturedOutput))) - }) - }) - }) - - Context("When the parallel-suites have all started", func() { - BeforeEach(func() { - beginSuite() - stenographer.Reset() - }) - - Context("When a spec completes", func() { - BeforeEach(func() { - aggregator.BeforeSuiteDidRun(beforeSummary) - aggregator.SpecDidComplete(specSummary) - aggregator.AfterSuiteDidRun(afterSummary) - Eventually(func() interface{} { - return stenographer.Calls() - }).Should(HaveLen(5)) - }) - - It("should announce the captured output of the BeforeSuite", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceCapturedOutput", beforeSummary.CapturedOutput))) - }) - - It("should announce that the spec will run (when in verbose mode)", func() { - Ω(stenographer.Calls()[1]).Should(Equal(call("AnnounceSpecWillRun", specSummary))) - }) - - It("should announce the captured stdout of the spec", func() { - Ω(stenographer.Calls()[2]).Should(Equal(call("AnnounceCapturedOutput", specSummary.CapturedOutput))) - }) - - It("should announce completion", func() { - Ω(stenographer.Calls()[3]).Should(Equal(call("AnnounceSuccesfulSpec", specSummary))) - }) - - It("should announce the captured output of the AfterSuite", func() { - Ω(stenographer.Calls()[4]).Should(Equal(call("AnnounceCapturedOutput", afterSummary.CapturedOutput))) - }) - }) - }) - }) - - Describe("Announcing the end of the suite", func() { - BeforeEach(func() { - beginSuite() - stenographer.Reset() - }) - - Context("When one of the parallel-suites ends", func() { - BeforeEach(func() { - aggregator.SpecSuiteDidEnd(suiteSummary2) - }) - - It("should be silent", func() { - Consistently(func() interface{} { return stenographer.Calls() }).Should(BeEmpty()) - }) - - It("should not notify the channel", func() { - Ω(result).Should(BeEmpty()) - }) - }) - - Context("once all of the parallel-suites end", func() { - BeforeEach(func() { - time.Sleep(200 * time.Millisecond) - - suiteSummary1.SuiteSucceeded = true - suiteSummary1.NumberOfPassedSpecs = 15 - suiteSummary1.NumberOfFailedSpecs = 0 - suiteSummary1.NumberOfFlakedSpecs = 3 - suiteSummary2.SuiteSucceeded = false - suiteSummary2.NumberOfPassedSpecs = 5 - suiteSummary2.NumberOfFailedSpecs = 3 - suiteSummary2.NumberOfFlakedSpecs = 4 - - aggregator.SpecSuiteDidEnd(suiteSummary2) - aggregator.SpecSuiteDidEnd(suiteSummary1) - Eventually(func() interface{} { - return stenographer.Calls() - }).Should(HaveLen(2)) - }) - - It("should announce the end of the suite", func() { - compositeSummary := stenographer.Calls()[1].Args[0].(*types.SuiteSummary) - - Ω(compositeSummary.SuiteSucceeded).Should(BeFalse()) - Ω(compositeSummary.NumberOfSpecsThatWillBeRun).Should(Equal(23)) - Ω(compositeSummary.NumberOfTotalSpecs).Should(Equal(30)) - Ω(compositeSummary.NumberOfPassedSpecs).Should(Equal(20)) - Ω(compositeSummary.NumberOfFailedSpecs).Should(Equal(3)) - Ω(compositeSummary.NumberOfPendingSpecs).Should(Equal(3)) - Ω(compositeSummary.NumberOfSkippedSpecs).Should(Equal(4)) - Ω(compositeSummary.NumberOfFlakedSpecs).Should(Equal(7)) - Ω(compositeSummary.RunTime.Seconds()).Should(BeNumerically(">", 0.2)) - }) - }) - - Context("when all the parallel-suites pass", func() { - BeforeEach(func() { - suiteSummary1.SuiteSucceeded = true - suiteSummary2.SuiteSucceeded = true - - aggregator.SpecSuiteDidEnd(suiteSummary2) - aggregator.SpecSuiteDidEnd(suiteSummary1) - Eventually(func() interface{} { - return stenographer.Calls() - }).Should(HaveLen(2)) - }) - - It("should report success", func() { - compositeSummary := stenographer.Calls()[1].Args[0].(*types.SuiteSummary) - - Ω(compositeSummary.SuiteSucceeded).Should(BeTrue()) - }) - - It("should notify the channel that it succeded", func(done Done) { - Ω(<-result).Should(BeTrue()) - close(done) - }) - }) - - Context("when one of the parallel-suites fails", func() { - BeforeEach(func() { - suiteSummary1.SuiteSucceeded = true - suiteSummary2.SuiteSucceeded = false - - aggregator.SpecSuiteDidEnd(suiteSummary2) - aggregator.SpecSuiteDidEnd(suiteSummary1) - Eventually(func() interface{} { - return stenographer.Calls() - }).Should(HaveLen(2)) - }) - - It("should report failure", func() { - compositeSummary := stenographer.Calls()[1].Args[0].(*types.SuiteSummary) - - Ω(compositeSummary.SuiteSucceeded).Should(BeFalse()) - }) - - It("should notify the channel that it failed", func(done Done) { - Ω(<-result).Should(BeFalse()) - close(done) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/fake_output_interceptor_test.go b/vendor/github.com/onsi/ginkgo/internal/remote/fake_output_interceptor_test.go deleted file mode 100644 index a928f93d..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/remote/fake_output_interceptor_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package remote_test - -type fakeOutputInterceptor struct { - DidStartInterceptingOutput bool - DidStopInterceptingOutput bool - InterceptedOutput string -} - -func (interceptor *fakeOutputInterceptor) StartInterceptingOutput() error { - interceptor.DidStartInterceptingOutput = true - return nil -} - -func (interceptor *fakeOutputInterceptor) StopInterceptingAndReturnOutput() (string, error) { - interceptor.DidStopInterceptingOutput = true - return interceptor.InterceptedOutput, nil -} diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/fake_poster_test.go b/vendor/github.com/onsi/ginkgo/internal/remote/fake_poster_test.go deleted file mode 100644 index 3543c59c..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/remote/fake_poster_test.go +++ /dev/null @@ -1,33 +0,0 @@ -package remote_test - -import ( - "io" - "io/ioutil" - "net/http" -) - -type post struct { - url string - bodyType string - bodyContent []byte -} - -type fakePoster struct { - posts []post -} - -func newFakePoster() *fakePoster { - return &fakePoster{ - posts: make([]post, 0), - } -} - -func (poster *fakePoster) Post(url string, bodyType string, body io.Reader) (resp *http.Response, err error) { - bodyContent, _ := ioutil.ReadAll(body) - poster.posts = append(poster.posts, post{ - url: url, - bodyType: bodyType, - bodyContent: bodyContent, - }) - return nil, nil -} diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go b/vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go deleted file mode 100644 index e5f3b1e3..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go +++ /dev/null @@ -1,180 +0,0 @@ -package remote_test - -import ( - "encoding/json" - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/config" - . "github.com/onsi/ginkgo/internal/remote" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" -) - -var _ = Describe("ForwardingReporter", func() { - var ( - reporter *ForwardingReporter - interceptor *fakeOutputInterceptor - poster *fakePoster - suiteSummary *types.SuiteSummary - specSummary *types.SpecSummary - setupSummary *types.SetupSummary - serverHost string - ) - - BeforeEach(func() { - serverHost = "http://127.0.0.1:7788" - - poster = newFakePoster() - - interceptor = &fakeOutputInterceptor{ - InterceptedOutput: "The intercepted output!", - } - - reporter = NewForwardingReporter(serverHost, poster, interceptor) - - suiteSummary = &types.SuiteSummary{ - SuiteDescription: "My Test Suite", - } - - setupSummary = &types.SetupSummary{ - State: types.SpecStatePassed, - } - - specSummary = &types.SpecSummary{ - ComponentTexts: []string{"My", "Spec"}, - State: types.SpecStatePassed, - } - }) - - Context("When a suite begins", func() { - BeforeEach(func() { - reporter.SpecSuiteWillBegin(config.GinkgoConfig, suiteSummary) - }) - - It("should start intercepting output", func() { - Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue()) - }) - - It("should POST the SuiteSummary and Ginkgo Config to the Ginkgo server", func() { - Ω(poster.posts).Should(HaveLen(1)) - Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/SpecSuiteWillBegin")) - Ω(poster.posts[0].bodyType).Should(Equal("application/json")) - - var sentData struct { - SentConfig config.GinkgoConfigType `json:"config"` - SentSuiteSummary *types.SuiteSummary `json:"suite-summary"` - } - - err := json.Unmarshal(poster.posts[0].bodyContent, &sentData) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(sentData.SentConfig).Should(Equal(config.GinkgoConfig)) - Ω(sentData.SentSuiteSummary).Should(Equal(suiteSummary)) - }) - }) - - Context("when a BeforeSuite completes", func() { - BeforeEach(func() { - reporter.BeforeSuiteDidRun(setupSummary) - }) - - It("should stop, then start intercepting output", func() { - Ω(interceptor.DidStopInterceptingOutput).Should(BeTrue()) - Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue()) - }) - - It("should POST the SetupSummary to the Ginkgo server", func() { - Ω(poster.posts).Should(HaveLen(1)) - Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/BeforeSuiteDidRun")) - Ω(poster.posts[0].bodyType).Should(Equal("application/json")) - - var summary *types.SetupSummary - err := json.Unmarshal(poster.posts[0].bodyContent, &summary) - Ω(err).ShouldNot(HaveOccurred()) - setupSummary.CapturedOutput = interceptor.InterceptedOutput - Ω(summary).Should(Equal(setupSummary)) - }) - }) - - Context("when an AfterSuite completes", func() { - BeforeEach(func() { - reporter.AfterSuiteDidRun(setupSummary) - }) - - It("should stop, then start intercepting output", func() { - Ω(interceptor.DidStopInterceptingOutput).Should(BeTrue()) - Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue()) - }) - - It("should POST the SetupSummary to the Ginkgo server", func() { - Ω(poster.posts).Should(HaveLen(1)) - Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/AfterSuiteDidRun")) - Ω(poster.posts[0].bodyType).Should(Equal("application/json")) - - var summary *types.SetupSummary - err := json.Unmarshal(poster.posts[0].bodyContent, &summary) - Ω(err).ShouldNot(HaveOccurred()) - setupSummary.CapturedOutput = interceptor.InterceptedOutput - Ω(summary).Should(Equal(setupSummary)) - }) - }) - - Context("When a spec will run", func() { - BeforeEach(func() { - reporter.SpecWillRun(specSummary) - }) - - It("should POST the SpecSummary to the Ginkgo server", func() { - Ω(poster.posts).Should(HaveLen(1)) - Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/SpecWillRun")) - Ω(poster.posts[0].bodyType).Should(Equal("application/json")) - - var summary *types.SpecSummary - err := json.Unmarshal(poster.posts[0].bodyContent, &summary) - Ω(err).ShouldNot(HaveOccurred()) - Ω(summary).Should(Equal(specSummary)) - }) - - Context("When a spec completes", func() { - BeforeEach(func() { - specSummary.State = types.SpecStatePanicked - reporter.SpecDidComplete(specSummary) - }) - - It("should POST the SpecSummary to the Ginkgo server and include any intercepted output", func() { - Ω(poster.posts).Should(HaveLen(2)) - Ω(poster.posts[1].url).Should(Equal("http://127.0.0.1:7788/SpecDidComplete")) - Ω(poster.posts[1].bodyType).Should(Equal("application/json")) - - var summary *types.SpecSummary - err := json.Unmarshal(poster.posts[1].bodyContent, &summary) - Ω(err).ShouldNot(HaveOccurred()) - specSummary.CapturedOutput = interceptor.InterceptedOutput - Ω(summary).Should(Equal(specSummary)) - }) - - It("should stop, then start intercepting output", func() { - Ω(interceptor.DidStopInterceptingOutput).Should(BeTrue()) - Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue()) - }) - }) - }) - - Context("When a suite ends", func() { - BeforeEach(func() { - reporter.SpecSuiteDidEnd(suiteSummary) - }) - - It("should POST the SuiteSummary to the Ginkgo server", func() { - Ω(poster.posts).Should(HaveLen(1)) - Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/SpecSuiteDidEnd")) - Ω(poster.posts[0].bodyType).Should(Equal("application/json")) - - var summary *types.SuiteSummary - - err := json.Unmarshal(poster.posts[0].bodyContent, &summary) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(summary).Should(Equal(suiteSummary)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/remote_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/remote/remote_suite_test.go deleted file mode 100644 index e6b4e9f3..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/remote/remote_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package remote_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestRemote(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Remote Spec Forwarding Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/server_test.go b/vendor/github.com/onsi/ginkgo/internal/remote/server_test.go deleted file mode 100644 index eb2eefeb..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/remote/server_test.go +++ /dev/null @@ -1,269 +0,0 @@ -package remote_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/remote" - . "github.com/onsi/gomega" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/reporters" - "github.com/onsi/ginkgo/types" - - "bytes" - "encoding/json" - "net/http" -) - -var _ = Describe("Server", func() { - var ( - server *Server - ) - - BeforeEach(func() { - var err error - server, err = NewServer(3) - Ω(err).ShouldNot(HaveOccurred()) - - server.Start() - }) - - AfterEach(func() { - server.Close() - }) - - Describe("Streaming endpoints", func() { - var ( - reporterA, reporterB *reporters.FakeReporter - forwardingReporter *ForwardingReporter - - suiteSummary *types.SuiteSummary - setupSummary *types.SetupSummary - specSummary *types.SpecSummary - ) - - BeforeEach(func() { - reporterA = reporters.NewFakeReporter() - reporterB = reporters.NewFakeReporter() - - server.RegisterReporters(reporterA, reporterB) - - forwardingReporter = NewForwardingReporter(server.Address(), &http.Client{}, &fakeOutputInterceptor{}) - - suiteSummary = &types.SuiteSummary{ - SuiteDescription: "My Test Suite", - } - - setupSummary = &types.SetupSummary{ - State: types.SpecStatePassed, - } - - specSummary = &types.SpecSummary{ - ComponentTexts: []string{"My", "Spec"}, - State: types.SpecStatePassed, - } - }) - - It("should make its address available", func() { - Ω(server.Address()).Should(MatchRegexp(`http://127.0.0.1:\d{2,}`)) - }) - - Describe("/SpecSuiteWillBegin", func() { - It("should decode and forward the Ginkgo config and suite summary", func(done Done) { - forwardingReporter.SpecSuiteWillBegin(config.GinkgoConfig, suiteSummary) - Ω(reporterA.Config).Should(Equal(config.GinkgoConfig)) - Ω(reporterB.Config).Should(Equal(config.GinkgoConfig)) - Ω(reporterA.BeginSummary).Should(Equal(suiteSummary)) - Ω(reporterB.BeginSummary).Should(Equal(suiteSummary)) - close(done) - }) - }) - - Describe("/BeforeSuiteDidRun", func() { - It("should decode and forward the setup summary", func() { - forwardingReporter.BeforeSuiteDidRun(setupSummary) - Ω(reporterA.BeforeSuiteSummary).Should(Equal(setupSummary)) - Ω(reporterB.BeforeSuiteSummary).Should(Equal(setupSummary)) - }) - }) - - Describe("/AfterSuiteDidRun", func() { - It("should decode and forward the setup summary", func() { - forwardingReporter.AfterSuiteDidRun(setupSummary) - Ω(reporterA.AfterSuiteSummary).Should(Equal(setupSummary)) - Ω(reporterB.AfterSuiteSummary).Should(Equal(setupSummary)) - }) - }) - - Describe("/SpecWillRun", func() { - It("should decode and forward the spec summary", func(done Done) { - forwardingReporter.SpecWillRun(specSummary) - Ω(reporterA.SpecWillRunSummaries[0]).Should(Equal(specSummary)) - Ω(reporterB.SpecWillRunSummaries[0]).Should(Equal(specSummary)) - close(done) - }) - }) - - Describe("/SpecDidComplete", func() { - It("should decode and forward the spec summary", func(done Done) { - forwardingReporter.SpecDidComplete(specSummary) - Ω(reporterA.SpecSummaries[0]).Should(Equal(specSummary)) - Ω(reporterB.SpecSummaries[0]).Should(Equal(specSummary)) - close(done) - }) - }) - - Describe("/SpecSuiteDidEnd", func() { - It("should decode and forward the suite summary", func(done Done) { - forwardingReporter.SpecSuiteDidEnd(suiteSummary) - Ω(reporterA.EndSummary).Should(Equal(suiteSummary)) - Ω(reporterB.EndSummary).Should(Equal(suiteSummary)) - close(done) - }) - }) - }) - - Describe("Synchronization endpoints", func() { - Describe("GETting and POSTing BeforeSuiteState", func() { - getBeforeSuite := func() types.RemoteBeforeSuiteData { - resp, err := http.Get(server.Address() + "/BeforeSuiteState") - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(http.StatusOK)) - - r := types.RemoteBeforeSuiteData{} - decoder := json.NewDecoder(resp.Body) - err = decoder.Decode(&r) - Ω(err).ShouldNot(HaveOccurred()) - - return r - } - - postBeforeSuite := func(r types.RemoteBeforeSuiteData) { - resp, err := http.Post(server.Address()+"/BeforeSuiteState", "application/json", bytes.NewReader(r.ToJSON())) - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(http.StatusOK)) - } - - Context("when the first node's Alive has not been registered yet", func() { - It("should return pending", func() { - state := getBeforeSuite() - Ω(state).Should(Equal(types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStatePending})) - - state = getBeforeSuite() - Ω(state).Should(Equal(types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStatePending})) - }) - }) - - Context("when the first node is Alive but has not responded yet", func() { - BeforeEach(func() { - server.RegisterAlive(1, func() bool { - return true - }) - }) - - It("should return pending", func() { - state := getBeforeSuite() - Ω(state).Should(Equal(types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStatePending})) - - state = getBeforeSuite() - Ω(state).Should(Equal(types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStatePending})) - }) - }) - - Context("when the first node has responded", func() { - var state types.RemoteBeforeSuiteData - BeforeEach(func() { - server.RegisterAlive(1, func() bool { - return false - }) - - state = types.RemoteBeforeSuiteData{ - Data: []byte("my data"), - State: types.RemoteBeforeSuiteStatePassed, - } - postBeforeSuite(state) - }) - - It("should return the passed in state", func() { - returnedState := getBeforeSuite() - Ω(returnedState).Should(Equal(state)) - }) - }) - - Context("when the first node is no longer Alive and has not responded yet", func() { - BeforeEach(func() { - server.RegisterAlive(1, func() bool { - return false - }) - }) - - It("should return disappeared", func() { - state := getBeforeSuite() - Ω(state).Should(Equal(types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStateDisappeared})) - - state = getBeforeSuite() - Ω(state).Should(Equal(types.RemoteBeforeSuiteData{nil, types.RemoteBeforeSuiteStateDisappeared})) - }) - }) - }) - - Describe("GETting RemoteAfterSuiteData", func() { - getRemoteAfterSuiteData := func() bool { - resp, err := http.Get(server.Address() + "/RemoteAfterSuiteData") - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(http.StatusOK)) - - a := types.RemoteAfterSuiteData{} - decoder := json.NewDecoder(resp.Body) - err = decoder.Decode(&a) - Ω(err).ShouldNot(HaveOccurred()) - - return a.CanRun - } - - Context("when there are unregistered nodes", func() { - BeforeEach(func() { - server.RegisterAlive(2, func() bool { - return false - }) - }) - - It("should return false", func() { - Ω(getRemoteAfterSuiteData()).Should(BeFalse()) - }) - }) - - Context("when all none-node-1 nodes are still running", func() { - BeforeEach(func() { - server.RegisterAlive(2, func() bool { - return true - }) - - server.RegisterAlive(3, func() bool { - return false - }) - }) - - It("should return false", func() { - Ω(getRemoteAfterSuiteData()).Should(BeFalse()) - }) - }) - - Context("when all none-1 nodes are done", func() { - BeforeEach(func() { - server.RegisterAlive(2, func() bool { - return false - }) - - server.RegisterAlive(3, func() bool { - return false - }) - }) - - It("should return true", func() { - Ω(getRemoteAfterSuiteData()).Should(BeTrue()) - }) - - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/spec/spec_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/spec/spec_suite_test.go deleted file mode 100644 index 8681a720..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/spec/spec_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package spec_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestSpec(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Spec Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/spec/spec_test.go b/vendor/github.com/onsi/ginkgo/internal/spec/spec_test.go deleted file mode 100644 index 3bab8887..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/spec/spec_test.go +++ /dev/null @@ -1,657 +0,0 @@ -package spec_test - -import ( - "time" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gbytes" - - . "github.com/onsi/ginkgo/internal/spec" - - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/internal/containernode" - Failer "github.com/onsi/ginkgo/internal/failer" - "github.com/onsi/ginkgo/internal/leafnodes" - "github.com/onsi/ginkgo/types" -) - -var noneFlag = types.FlagTypeNone -var focusedFlag = types.FlagTypeFocused -var pendingFlag = types.FlagTypePending - -var _ = Describe("Spec", func() { - var ( - failer *Failer.Failer - codeLocation types.CodeLocation - nodesThatRan []string - spec *Spec - buffer *gbytes.Buffer - ) - - newBody := func(text string, fail bool) func() { - return func() { - nodesThatRan = append(nodesThatRan, text) - if fail { - failer.Fail(text, codeLocation) - } - } - } - - newIt := func(text string, flag types.FlagType, fail bool) *leafnodes.ItNode { - return leafnodes.NewItNode(text, newBody(text, fail), flag, codeLocation, 0, failer, 0) - } - - newItWithBody := func(text string, body interface{}) *leafnodes.ItNode { - return leafnodes.NewItNode(text, body, noneFlag, codeLocation, 0, failer, 0) - } - - newMeasure := func(text string, flag types.FlagType, fail bool, samples int) *leafnodes.MeasureNode { - return leafnodes.NewMeasureNode(text, func(Benchmarker) { - nodesThatRan = append(nodesThatRan, text) - if fail { - failer.Fail(text, codeLocation) - } - }, flag, codeLocation, samples, failer, 0) - } - - newBef := func(text string, fail bool) leafnodes.BasicNode { - return leafnodes.NewBeforeEachNode(newBody(text, fail), codeLocation, 0, failer, 0) - } - - newAft := func(text string, fail bool) leafnodes.BasicNode { - return leafnodes.NewAfterEachNode(newBody(text, fail), codeLocation, 0, failer, 0) - } - - newJusBef := func(text string, fail bool) leafnodes.BasicNode { - return leafnodes.NewJustBeforeEachNode(newBody(text, fail), codeLocation, 0, failer, 0) - } - - newContainer := func(text string, flag types.FlagType, setupNodes ...leafnodes.BasicNode) *containernode.ContainerNode { - c := containernode.New(text, flag, codeLocation) - for _, node := range setupNodes { - c.PushSetupNode(node) - } - return c - } - - containers := func(containers ...*containernode.ContainerNode) []*containernode.ContainerNode { - return containers - } - - BeforeEach(func() { - buffer = gbytes.NewBuffer() - failer = Failer.New() - codeLocation = codelocation.New(0) - nodesThatRan = []string{} - }) - - Describe("marking specs focused and pending", func() { - It("should satisfy various caes", func() { - cases := []struct { - ContainerFlags []types.FlagType - SubjectFlag types.FlagType - Pending bool - Focused bool - }{ - {[]types.FlagType{}, noneFlag, false, false}, - {[]types.FlagType{}, focusedFlag, false, true}, - {[]types.FlagType{}, pendingFlag, true, false}, - {[]types.FlagType{noneFlag}, noneFlag, false, false}, - {[]types.FlagType{focusedFlag}, noneFlag, false, true}, - {[]types.FlagType{pendingFlag}, noneFlag, true, false}, - {[]types.FlagType{noneFlag}, focusedFlag, false, true}, - {[]types.FlagType{focusedFlag}, focusedFlag, false, true}, - {[]types.FlagType{pendingFlag}, focusedFlag, true, true}, - {[]types.FlagType{noneFlag}, pendingFlag, true, false}, - {[]types.FlagType{focusedFlag}, pendingFlag, true, true}, - {[]types.FlagType{pendingFlag}, pendingFlag, true, false}, - {[]types.FlagType{focusedFlag, noneFlag}, noneFlag, false, true}, - {[]types.FlagType{noneFlag, focusedFlag}, noneFlag, false, true}, - {[]types.FlagType{pendingFlag, noneFlag}, noneFlag, true, false}, - {[]types.FlagType{noneFlag, pendingFlag}, noneFlag, true, false}, - {[]types.FlagType{focusedFlag, pendingFlag}, noneFlag, true, true}, - } - - for i, c := range cases { - subject := newIt("it node", c.SubjectFlag, false) - containers := []*containernode.ContainerNode{} - for _, flag := range c.ContainerFlags { - containers = append(containers, newContainer("container", flag)) - } - - spec := New(subject, containers, false) - Ω(spec.Pending()).Should(Equal(c.Pending), "Case %d: %#v", i, c) - Ω(spec.Focused()).Should(Equal(c.Focused), "Case %d: %#v", i, c) - - if c.Pending { - Ω(spec.Summary("").State).Should(Equal(types.SpecStatePending)) - } - } - }) - }) - - Describe("Skip", func() { - It("should be skipped", func() { - spec := New(newIt("it node", noneFlag, false), containers(newContainer("container", noneFlag)), false) - Ω(spec.Skipped()).Should(BeFalse()) - spec.Skip() - Ω(spec.Skipped()).Should(BeTrue()) - Ω(spec.Summary("").State).Should(Equal(types.SpecStateSkipped)) - }) - }) - - Describe("IsMeasurement", func() { - It("should be true if the subject is a measurement node", func() { - spec := New(newIt("it node", noneFlag, false), containers(newContainer("container", noneFlag)), false) - Ω(spec.IsMeasurement()).Should(BeFalse()) - Ω(spec.Summary("").IsMeasurement).Should(BeFalse()) - Ω(spec.Summary("").NumberOfSamples).Should(Equal(1)) - - spec = New(newMeasure("measure node", noneFlag, false, 10), containers(newContainer("container", noneFlag)), false) - Ω(spec.IsMeasurement()).Should(BeTrue()) - Ω(spec.Summary("").IsMeasurement).Should(BeTrue()) - Ω(spec.Summary("").NumberOfSamples).Should(Equal(10)) - }) - }) - - Describe("Passed", func() { - It("should pass when the subject passed", func() { - spec := New(newIt("it node", noneFlag, false), containers(), false) - spec.Run(buffer) - - Ω(spec.Passed()).Should(BeTrue()) - Ω(spec.Failed()).Should(BeFalse()) - Ω(spec.Summary("").State).Should(Equal(types.SpecStatePassed)) - Ω(spec.Summary("").Failure).Should(BeZero()) - }) - }) - - Describe("Flaked", func() { - It("should work if Run is called twice and gets different results", func() { - i := 0 - spec := New(newItWithBody("flaky it", func() { - i++ - if i == 1 { - failer.Fail("oops", codeLocation) - } - }), containers(), false) - spec.Run(buffer) - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(spec.Flaked()).Should(BeFalse()) - Ω(spec.Summary("").State).Should(Equal(types.SpecStateFailed)) - Ω(spec.Summary("").Failure.Message).Should(Equal("oops")) - spec.Run(buffer) - Ω(spec.Passed()).Should(BeTrue()) - Ω(spec.Failed()).Should(BeFalse()) - Ω(spec.Flaked()).Should(BeTrue()) - Ω(spec.Summary("").State).Should(Equal(types.SpecStatePassed)) - }) - }) - - Describe("Failed", func() { - It("should be failed if the failure was panic", func() { - spec := New(newItWithBody("panicky it", func() { - panic("bam") - }), containers(), false) - spec.Run(buffer) - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(spec.Summary("").State).Should(Equal(types.SpecStatePanicked)) - Ω(spec.Summary("").Failure.Message).Should(Equal("Test Panicked")) - Ω(spec.Summary("").Failure.ForwardedPanic).Should(Equal("bam")) - }) - - It("should be failed if the failure was a timeout", func() { - spec := New(newItWithBody("sleepy it", func(done Done) {}), containers(), false) - spec.Run(buffer) - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(spec.Summary("").State).Should(Equal(types.SpecStateTimedOut)) - Ω(spec.Summary("").Failure.Message).Should(Equal("Timed out")) - }) - - It("should be failed if the failure was... a failure", func() { - spec := New(newItWithBody("failing it", func() { - failer.Fail("bam", codeLocation) - }), containers(), false) - spec.Run(buffer) - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(spec.Summary("").State).Should(Equal(types.SpecStateFailed)) - Ω(spec.Summary("").Failure.Message).Should(Equal("bam")) - }) - }) - - Describe("Concatenated string", func() { - It("should concatenate the texts of the containers and the subject", func() { - spec := New( - newIt("it node", noneFlag, false), - containers( - newContainer("outer container", noneFlag), - newContainer("inner container", noneFlag), - ), - false, - ) - - Ω(spec.ConcatenatedString()).Should(Equal("outer container inner container it node")) - }) - }) - - Describe("running it specs", func() { - Context("with just an it", func() { - Context("that succeeds", func() { - It("should run the it and report on its success", func() { - spec := New(newIt("it node", noneFlag, false), containers(), false) - spec.Run(buffer) - Ω(spec.Passed()).Should(BeTrue()) - Ω(spec.Failed()).Should(BeFalse()) - Ω(nodesThatRan).Should(Equal([]string{"it node"})) - }) - }) - - Context("that fails", func() { - It("should run the it and report on its success", func() { - spec := New(newIt("it node", noneFlag, true), containers(), false) - spec.Run(buffer) - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(spec.Summary("").Failure.Message).Should(Equal("it node")) - Ω(nodesThatRan).Should(Equal([]string{"it node"})) - }) - }) - }) - - Context("with a full set of setup nodes", func() { - var failingNodes map[string]bool - - BeforeEach(func() { - failingNodes = map[string]bool{} - }) - - JustBeforeEach(func() { - spec = New( - newIt("it node", noneFlag, failingNodes["it node"]), - containers( - newContainer("outer container", noneFlag, - newBef("outer bef A", failingNodes["outer bef A"]), - newBef("outer bef B", failingNodes["outer bef B"]), - newJusBef("outer jusbef A", failingNodes["outer jusbef A"]), - newJusBef("outer jusbef B", failingNodes["outer jusbef B"]), - newAft("outer aft A", failingNodes["outer aft A"]), - newAft("outer aft B", failingNodes["outer aft B"]), - ), - newContainer("inner container", noneFlag, - newBef("inner bef A", failingNodes["inner bef A"]), - newBef("inner bef B", failingNodes["inner bef B"]), - newJusBef("inner jusbef A", failingNodes["inner jusbef A"]), - newJusBef("inner jusbef B", failingNodes["inner jusbef B"]), - newAft("inner aft A", failingNodes["inner aft A"]), - newAft("inner aft B", failingNodes["inner aft B"]), - ), - ), - false, - ) - spec.Run(buffer) - }) - - Context("that all pass", func() { - It("should walk through the nodes in the correct order", func() { - Ω(spec.Passed()).Should(BeTrue()) - Ω(spec.Failed()).Should(BeFalse()) - Ω(nodesThatRan).Should(Equal([]string{ - "outer bef A", - "outer bef B", - "inner bef A", - "inner bef B", - "outer jusbef A", - "outer jusbef B", - "inner jusbef A", - "inner jusbef B", - "it node", - "inner aft A", - "inner aft B", - "outer aft A", - "outer aft B", - })) - }) - }) - - Context("when the subject fails", func() { - BeforeEach(func() { - failingNodes["it node"] = true - }) - - It("should run the afters", func() { - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(nodesThatRan).Should(Equal([]string{ - "outer bef A", - "outer bef B", - "inner bef A", - "inner bef B", - "outer jusbef A", - "outer jusbef B", - "inner jusbef A", - "inner jusbef B", - "it node", - "inner aft A", - "inner aft B", - "outer aft A", - "outer aft B", - })) - Ω(spec.Summary("").Failure.Message).Should(Equal("it node")) - }) - }) - - Context("when an inner before fails", func() { - BeforeEach(func() { - failingNodes["inner bef A"] = true - }) - - It("should not run any other befores, but it should run the subsequent afters", func() { - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(nodesThatRan).Should(Equal([]string{ - "outer bef A", - "outer bef B", - "inner bef A", - "inner aft A", - "inner aft B", - "outer aft A", - "outer aft B", - })) - Ω(spec.Summary("").Failure.Message).Should(Equal("inner bef A")) - }) - }) - - Context("when an outer before fails", func() { - BeforeEach(func() { - failingNodes["outer bef B"] = true - }) - - It("should not run any other befores, but it should run the subsequent afters", func() { - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(nodesThatRan).Should(Equal([]string{ - "outer bef A", - "outer bef B", - "outer aft A", - "outer aft B", - })) - Ω(spec.Summary("").Failure.Message).Should(Equal("outer bef B")) - }) - }) - - Context("when an after fails", func() { - BeforeEach(func() { - failingNodes["inner aft B"] = true - }) - - It("should run all other afters, but mark the test as failed", func() { - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(nodesThatRan).Should(Equal([]string{ - "outer bef A", - "outer bef B", - "inner bef A", - "inner bef B", - "outer jusbef A", - "outer jusbef B", - "inner jusbef A", - "inner jusbef B", - "it node", - "inner aft A", - "inner aft B", - "outer aft A", - "outer aft B", - })) - Ω(spec.Summary("").Failure.Message).Should(Equal("inner aft B")) - }) - }) - - Context("when a just before each fails", func() { - BeforeEach(func() { - failingNodes["outer jusbef B"] = true - }) - - It("should run the afters, but not the subject", func() { - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(nodesThatRan).Should(Equal([]string{ - "outer bef A", - "outer bef B", - "inner bef A", - "inner bef B", - "outer jusbef A", - "outer jusbef B", - "inner aft A", - "inner aft B", - "outer aft A", - "outer aft B", - })) - Ω(spec.Summary("").Failure.Message).Should(Equal("outer jusbef B")) - }) - }) - - Context("when an after fails after an earlier node has failed", func() { - BeforeEach(func() { - failingNodes["it node"] = true - failingNodes["inner aft B"] = true - }) - - It("should record the earlier failure", func() { - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(nodesThatRan).Should(Equal([]string{ - "outer bef A", - "outer bef B", - "inner bef A", - "inner bef B", - "outer jusbef A", - "outer jusbef B", - "inner jusbef A", - "inner jusbef B", - "it node", - "inner aft A", - "inner aft B", - "outer aft A", - "outer aft B", - })) - Ω(spec.Summary("").Failure.Message).Should(Equal("it node")) - }) - }) - }) - }) - - Describe("running measurement specs", func() { - Context("when the measurement succeeds", func() { - It("should run N samples", func() { - spec = New( - newMeasure("measure node", noneFlag, false, 3), - containers( - newContainer("container", noneFlag, - newBef("bef A", false), - newJusBef("jusbef A", false), - newAft("aft A", false), - ), - ), - false, - ) - spec.Run(buffer) - - Ω(spec.Passed()).Should(BeTrue()) - Ω(spec.Failed()).Should(BeFalse()) - Ω(nodesThatRan).Should(Equal([]string{ - "bef A", - "jusbef A", - "measure node", - "aft A", - "bef A", - "jusbef A", - "measure node", - "aft A", - "bef A", - "jusbef A", - "measure node", - "aft A", - })) - }) - }) - - Context("when the measurement fails", func() { - It("should bail after the failure occurs", func() { - spec = New( - newMeasure("measure node", noneFlag, true, 3), - containers( - newContainer("container", noneFlag, - newBef("bef A", false), - newJusBef("jusbef A", false), - newAft("aft A", false), - ), - ), - false, - ) - spec.Run(buffer) - - Ω(spec.Passed()).Should(BeFalse()) - Ω(spec.Failed()).Should(BeTrue()) - Ω(nodesThatRan).Should(Equal([]string{ - "bef A", - "jusbef A", - "measure node", - "aft A", - })) - }) - }) - }) - - Describe("Summary", func() { - var ( - subjectCodeLocation types.CodeLocation - outerContainerCodeLocation types.CodeLocation - innerContainerCodeLocation types.CodeLocation - summary *types.SpecSummary - ) - - BeforeEach(func() { - subjectCodeLocation = codelocation.New(0) - outerContainerCodeLocation = codelocation.New(0) - innerContainerCodeLocation = codelocation.New(0) - - spec = New( - leafnodes.NewItNode("it node", func() { - time.Sleep(10 * time.Millisecond) - }, noneFlag, subjectCodeLocation, 0, failer, 0), - containers( - containernode.New("outer container", noneFlag, outerContainerCodeLocation), - containernode.New("inner container", noneFlag, innerContainerCodeLocation), - ), - false, - ) - - spec.Run(buffer) - Ω(spec.Passed()).Should(BeTrue()) - summary = spec.Summary("suite id") - }) - - It("should have the suite id", func() { - Ω(summary.SuiteID).Should(Equal("suite id")) - }) - - It("should have the component texts and code locations", func() { - Ω(summary.ComponentTexts).Should(Equal([]string{"outer container", "inner container", "it node"})) - Ω(summary.ComponentCodeLocations).Should(Equal([]types.CodeLocation{outerContainerCodeLocation, innerContainerCodeLocation, subjectCodeLocation})) - }) - - It("should have a runtime", func() { - Ω(summary.RunTime).Should(BeNumerically(">=", 10*time.Millisecond)) - }) - - It("should not be a measurement, or have a measurement summary", func() { - Ω(summary.IsMeasurement).Should(BeFalse()) - Ω(summary.Measurements).Should(BeEmpty()) - }) - }) - - Describe("Summaries for measurements", func() { - var summary *types.SpecSummary - - BeforeEach(func() { - spec = New(leafnodes.NewMeasureNode("measure node", func(b Benchmarker) { - b.RecordValue("a value", 7, "some info") - b.RecordValueWithPrecision("another value", 8, "ns", 5, "more info") - }, noneFlag, codeLocation, 4, failer, 0), containers(), false) - spec.Run(buffer) - Ω(spec.Passed()).Should(BeTrue()) - summary = spec.Summary("suite id") - }) - - It("should include the number of samples", func() { - Ω(summary.NumberOfSamples).Should(Equal(4)) - }) - - It("should be a measurement", func() { - Ω(summary.IsMeasurement).Should(BeTrue()) - }) - - It("should have the measurements report", func() { - Ω(summary.Measurements).Should(HaveKey("a value")) - report := summary.Measurements["a value"] - Ω(report.Name).Should(Equal("a value")) - Ω(report.Info).Should(Equal("some info")) - Ω(report.Results).Should(Equal([]float64{7, 7, 7, 7})) - - Ω(summary.Measurements).Should(HaveKey("another value")) - report = summary.Measurements["another value"] - Ω(report.Name).Should(Equal("another value")) - Ω(report.Info).Should(Equal("more info")) - Ω(report.Results).Should(Equal([]float64{8, 8, 8, 8})) - Ω(report.Units).Should(Equal("ns")) - Ω(report.Precision).Should(Equal(5)) - }) - }) - - Describe("When told to emit progress", func() { - It("should emit progress to the writer as it runs Befores, JustBefores, Afters, and Its", func() { - spec = New( - newIt("it node", noneFlag, false), - containers( - newContainer("outer container", noneFlag, - newBef("outer bef A", false), - newJusBef("outer jusbef A", false), - newAft("outer aft A", false), - ), - newContainer("inner container", noneFlag, - newBef("inner bef A", false), - newJusBef("inner jusbef A", false), - newAft("inner aft A", false), - ), - ), - true, - ) - spec.Run(buffer) - - Ω(buffer).Should(gbytes.Say(`\[BeforeEach\] outer container`)) - Ω(buffer).Should(gbytes.Say(`\[BeforeEach\] inner container`)) - Ω(buffer).Should(gbytes.Say(`\[JustBeforeEach\] outer container`)) - Ω(buffer).Should(gbytes.Say(`\[JustBeforeEach\] inner container`)) - Ω(buffer).Should(gbytes.Say(`\[It\] it node`)) - Ω(buffer).Should(gbytes.Say(`\[AfterEach\] inner container`)) - Ω(buffer).Should(gbytes.Say(`\[AfterEach\] outer container`)) - }) - - It("should emit progress to the writer as it runs Befores, JustBefores, Afters, and Measures", func() { - spec = New( - newMeasure("measure node", noneFlag, false, 2), - containers(), - true, - ) - spec.Run(buffer) - - Ω(buffer).Should(gbytes.Say(`\[Measure\] measure node`)) - Ω(buffer).Should(gbytes.Say(`\[Measure\] measure node`)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/spec/specs_test.go b/vendor/github.com/onsi/ginkgo/internal/spec/specs_test.go deleted file mode 100644 index 066fbbb3..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/spec/specs_test.go +++ /dev/null @@ -1,287 +0,0 @@ -package spec_test - -import ( - "math/rand" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/spec" - . "github.com/onsi/gomega" - - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/internal/containernode" - "github.com/onsi/ginkgo/internal/leafnodes" - "github.com/onsi/ginkgo/types" -) - -var _ = Describe("Specs", func() { - var specs *Specs - - newSpec := func(text string, flag types.FlagType) *Spec { - subject := leafnodes.NewItNode(text, func() {}, flag, codelocation.New(0), 0, nil, 0) - return New(subject, []*containernode.ContainerNode{}, false) - } - - newMeasureSpec := func(text string, flag types.FlagType) *Spec { - subject := leafnodes.NewMeasureNode(text, func(Benchmarker) {}, flag, codelocation.New(0), 0, nil, 0) - return New(subject, []*containernode.ContainerNode{}, false) - } - - newSpecs := func(args ...interface{}) *Specs { - specs := []*Spec{} - for index := 0; index < len(args)-1; index += 2 { - specs = append(specs, newSpec(args[index].(string), args[index+1].(types.FlagType))) - } - return NewSpecs(specs) - } - - specTexts := func(specs *Specs) []string { - texts := []string{} - for _, spec := range specs.Specs() { - texts = append(texts, spec.ConcatenatedString()) - } - return texts - } - - willRunTexts := func(specs *Specs) []string { - texts := []string{} - for _, spec := range specs.Specs() { - if !(spec.Skipped() || spec.Pending()) { - texts = append(texts, spec.ConcatenatedString()) - } - } - return texts - } - - skippedTexts := func(specs *Specs) []string { - texts := []string{} - for _, spec := range specs.Specs() { - if spec.Skipped() { - texts = append(texts, spec.ConcatenatedString()) - } - } - return texts - } - - pendingTexts := func(specs *Specs) []string { - texts := []string{} - for _, spec := range specs.Specs() { - if spec.Pending() { - texts = append(texts, spec.ConcatenatedString()) - } - } - return texts - } - - Describe("Shuffling specs", func() { - It("should shuffle the specs using the passed in randomizer", func() { - specs17 := newSpecs("C", noneFlag, "A", noneFlag, "B", noneFlag) - specs17.Shuffle(rand.New(rand.NewSource(17))) - texts17 := specTexts(specs17) - - specs17Again := newSpecs("C", noneFlag, "A", noneFlag, "B", noneFlag) - specs17Again.Shuffle(rand.New(rand.NewSource(17))) - texts17Again := specTexts(specs17Again) - - specs15 := newSpecs("C", noneFlag, "A", noneFlag, "B", noneFlag) - specs15.Shuffle(rand.New(rand.NewSource(15))) - texts15 := specTexts(specs15) - - specsUnshuffled := newSpecs("C", noneFlag, "A", noneFlag, "B", noneFlag) - textsUnshuffled := specTexts(specsUnshuffled) - - Ω(textsUnshuffled).Should(Equal([]string{"C", "A", "B"})) - - Ω(texts17).Should(Equal(texts17Again)) - Ω(texts17).ShouldNot(Equal(texts15)) - Ω(texts17).ShouldNot(Equal(textsUnshuffled)) - Ω(texts15).ShouldNot(Equal(textsUnshuffled)) - - Ω(texts17).Should(HaveLen(3)) - Ω(texts17).Should(ContainElement("A")) - Ω(texts17).Should(ContainElement("B")) - Ω(texts17).Should(ContainElement("C")) - - Ω(texts15).Should(HaveLen(3)) - Ω(texts15).Should(ContainElement("A")) - Ω(texts15).Should(ContainElement("B")) - Ω(texts15).Should(ContainElement("C")) - }) - }) - - Describe("with no programmatic focus", func() { - BeforeEach(func() { - specs = newSpecs("A1", noneFlag, "A2", noneFlag, "B1", noneFlag, "B2", pendingFlag) - specs.ApplyFocus("", "", "") - }) - - It("should not report as having programmatic specs", func() { - Ω(specs.HasProgrammaticFocus()).Should(BeFalse()) - }) - }) - - Describe("Applying focus/skip", func() { - var description, focusString, skipString string - - BeforeEach(func() { - description, focusString, skipString = "", "", "" - }) - - JustBeforeEach(func() { - specs = newSpecs("A1", focusedFlag, "A2", noneFlag, "B1", focusedFlag, "B2", pendingFlag) - specs.ApplyFocus(description, focusString, skipString) - }) - - Context("with neither a focus string nor a skip string", func() { - It("should apply the programmatic focus", func() { - Ω(willRunTexts(specs)).Should(Equal([]string{"A1", "B1"})) - Ω(skippedTexts(specs)).Should(Equal([]string{"A2", "B2"})) - Ω(pendingTexts(specs)).Should(BeEmpty()) - }) - - It("should report as having programmatic specs", func() { - Ω(specs.HasProgrammaticFocus()).Should(BeTrue()) - }) - }) - - Context("with a focus regexp", func() { - BeforeEach(func() { - focusString = "A" - }) - - It("should override the programmatic focus", func() { - Ω(willRunTexts(specs)).Should(Equal([]string{"A1", "A2"})) - Ω(skippedTexts(specs)).Should(Equal([]string{"B1", "B2"})) - Ω(pendingTexts(specs)).Should(BeEmpty()) - }) - - It("should not report as having programmatic specs", func() { - Ω(specs.HasProgrammaticFocus()).Should(BeFalse()) - }) - }) - - Context("with a focus regexp", func() { - BeforeEach(func() { - focusString = "B" - }) - - It("should not override any pendings", func() { - Ω(willRunTexts(specs)).Should(Equal([]string{"B1"})) - Ω(skippedTexts(specs)).Should(Equal([]string{"A1", "A2"})) - Ω(pendingTexts(specs)).Should(Equal([]string{"B2"})) - }) - }) - - Context("with a description", func() { - BeforeEach(func() { - description = "C" - focusString = "C" - }) - - It("should include the description in the focus determination", func() { - Ω(willRunTexts(specs)).Should(Equal([]string{"A1", "A2", "B1"})) - Ω(skippedTexts(specs)).Should(BeEmpty()) - Ω(pendingTexts(specs)).Should(Equal([]string{"B2"})) - }) - }) - - Context("with a description", func() { - BeforeEach(func() { - description = "C" - skipString = "C" - }) - - It("should include the description in the focus determination", func() { - Ω(willRunTexts(specs)).Should(BeEmpty()) - Ω(skippedTexts(specs)).Should(Equal([]string{"A1", "A2", "B1", "B2"})) - Ω(pendingTexts(specs)).Should(BeEmpty()) - }) - }) - - Context("with a skip regexp", func() { - BeforeEach(func() { - skipString = "A" - }) - - It("should override the programmatic focus", func() { - Ω(willRunTexts(specs)).Should(Equal([]string{"B1"})) - Ω(skippedTexts(specs)).Should(Equal([]string{"A1", "A2"})) - Ω(pendingTexts(specs)).Should(Equal([]string{"B2"})) - }) - - It("should not report as having programmatic specs", func() { - Ω(specs.HasProgrammaticFocus()).Should(BeFalse()) - }) - }) - - Context("with both a focus and a skip regexp", func() { - BeforeEach(func() { - focusString = "1" - skipString = "B" - }) - - It("should AND the two", func() { - Ω(willRunTexts(specs)).Should(Equal([]string{"A1"})) - Ω(skippedTexts(specs)).Should(Equal([]string{"A2", "B1", "B2"})) - Ω(pendingTexts(specs)).Should(BeEmpty()) - }) - - It("should not report as having programmatic specs", func() { - Ω(specs.HasProgrammaticFocus()).Should(BeFalse()) - }) - }) - }) - - Describe("With a focused spec within a pending context and a pending spec within a focused context", func() { - BeforeEach(func() { - pendingInFocused := New( - leafnodes.NewItNode("PendingInFocused", func() {}, pendingFlag, codelocation.New(0), 0, nil, 0), - []*containernode.ContainerNode{ - containernode.New("", focusedFlag, codelocation.New(0)), - }, false) - - focusedInPending := New( - leafnodes.NewItNode("FocusedInPending", func() {}, focusedFlag, codelocation.New(0), 0, nil, 0), - []*containernode.ContainerNode{ - containernode.New("", pendingFlag, codelocation.New(0)), - }, false) - - specs = NewSpecs([]*Spec{ - newSpec("A", noneFlag), - newSpec("B", noneFlag), - pendingInFocused, - focusedInPending, - }) - specs.ApplyFocus("", "", "") - }) - - It("should not have a programmatic focus and should run all tests", func() { - Ω(willRunTexts(specs)).Should(Equal([]string{"A", "B"})) - Ω(skippedTexts(specs)).Should(BeEmpty()) - Ω(pendingTexts(specs)).Should(ConsistOf(ContainSubstring("PendingInFocused"), ContainSubstring("FocusedInPending"))) - }) - }) - - Describe("skipping measurements", func() { - BeforeEach(func() { - specs = NewSpecs([]*Spec{ - newSpec("A", noneFlag), - newSpec("B", noneFlag), - newSpec("C", pendingFlag), - newMeasureSpec("measurementA", noneFlag), - newMeasureSpec("measurementB", pendingFlag), - }) - }) - - It("should skip measurements", func() { - Ω(willRunTexts(specs)).Should(Equal([]string{"A", "B", "measurementA"})) - Ω(skippedTexts(specs)).Should(BeEmpty()) - Ω(pendingTexts(specs)).Should(Equal([]string{"C", "measurementB"})) - - specs.SkipMeasurements() - - Ω(willRunTexts(specs)).Should(Equal([]string{"A", "B"})) - Ω(skippedTexts(specs)).Should(Equal([]string{"measurementA", "measurementB"})) - Ω(pendingTexts(specs)).Should(Equal([]string{"C"})) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/index_computer_test.go b/vendor/github.com/onsi/ginkgo/internal/spec_iterator/index_computer_test.go deleted file mode 100644 index 65da9837..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/index_computer_test.go +++ /dev/null @@ -1,149 +0,0 @@ -package spec_iterator_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/spec_iterator" - . "github.com/onsi/gomega" -) - -var _ = Describe("ParallelizedIndexRange", func() { - var startIndex, count int - - It("should return the correct index range for 4 tests on 2 nodes", func() { - startIndex, count = ParallelizedIndexRange(4, 2, 1) - Ω(startIndex).Should(Equal(0)) - Ω(count).Should(Equal(2)) - - startIndex, count = ParallelizedIndexRange(4, 2, 2) - Ω(startIndex).Should(Equal(2)) - Ω(count).Should(Equal(2)) - }) - - It("should return the correct index range for 5 tests on 2 nodes", func() { - startIndex, count = ParallelizedIndexRange(5, 2, 1) - Ω(startIndex).Should(Equal(0)) - Ω(count).Should(Equal(3)) - - startIndex, count = ParallelizedIndexRange(5, 2, 2) - Ω(startIndex).Should(Equal(3)) - Ω(count).Should(Equal(2)) - }) - - It("should return the correct index range for 5 tests on 3 nodes", func() { - startIndex, count = ParallelizedIndexRange(5, 3, 1) - Ω(startIndex).Should(Equal(0)) - Ω(count).Should(Equal(2)) - - startIndex, count = ParallelizedIndexRange(5, 3, 2) - Ω(startIndex).Should(Equal(2)) - Ω(count).Should(Equal(2)) - - startIndex, count = ParallelizedIndexRange(5, 3, 3) - Ω(startIndex).Should(Equal(4)) - Ω(count).Should(Equal(1)) - }) - - It("should return the correct index range for 5 tests on 4 nodes", func() { - startIndex, count = ParallelizedIndexRange(5, 4, 1) - Ω(startIndex).Should(Equal(0)) - Ω(count).Should(Equal(2)) - - startIndex, count = ParallelizedIndexRange(5, 4, 2) - Ω(startIndex).Should(Equal(2)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 4, 3) - Ω(startIndex).Should(Equal(3)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 4, 4) - Ω(startIndex).Should(Equal(4)) - Ω(count).Should(Equal(1)) - }) - - It("should return the correct index range for 5 tests on 5 nodes", func() { - startIndex, count = ParallelizedIndexRange(5, 5, 1) - Ω(startIndex).Should(Equal(0)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 5, 2) - Ω(startIndex).Should(Equal(1)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 5, 3) - Ω(startIndex).Should(Equal(2)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 5, 4) - Ω(startIndex).Should(Equal(3)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 5, 5) - Ω(startIndex).Should(Equal(4)) - Ω(count).Should(Equal(1)) - }) - - It("should return the correct index range for 5 tests on 6 nodes", func() { - startIndex, count = ParallelizedIndexRange(5, 6, 1) - Ω(startIndex).Should(Equal(0)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 6, 2) - Ω(startIndex).Should(Equal(1)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 6, 3) - Ω(startIndex).Should(Equal(2)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 6, 4) - Ω(startIndex).Should(Equal(3)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 6, 5) - Ω(startIndex).Should(Equal(4)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(5, 6, 6) - Ω(count).Should(Equal(0)) - }) - - It("should return the correct index range for 5 tests on 7 nodes", func() { - startIndex, count = ParallelizedIndexRange(5, 7, 6) - Ω(count).Should(Equal(0)) - - startIndex, count = ParallelizedIndexRange(5, 7, 7) - Ω(count).Should(Equal(0)) - }) - - It("should return the correct index range for 11 tests on 7 nodes", func() { - startIndex, count = ParallelizedIndexRange(11, 7, 1) - Ω(startIndex).Should(Equal(0)) - Ω(count).Should(Equal(2)) - - startIndex, count = ParallelizedIndexRange(11, 7, 2) - Ω(startIndex).Should(Equal(2)) - Ω(count).Should(Equal(2)) - - startIndex, count = ParallelizedIndexRange(11, 7, 3) - Ω(startIndex).Should(Equal(4)) - Ω(count).Should(Equal(2)) - - startIndex, count = ParallelizedIndexRange(11, 7, 4) - Ω(startIndex).Should(Equal(6)) - Ω(count).Should(Equal(2)) - - startIndex, count = ParallelizedIndexRange(11, 7, 5) - Ω(startIndex).Should(Equal(8)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(11, 7, 6) - Ω(startIndex).Should(Equal(9)) - Ω(count).Should(Equal(1)) - - startIndex, count = ParallelizedIndexRange(11, 7, 7) - Ω(startIndex).Should(Equal(10)) - Ω(count).Should(Equal(1)) - }) - -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/parallel_spec_iterator_test.go b/vendor/github.com/onsi/ginkgo/internal/spec_iterator/parallel_spec_iterator_test.go deleted file mode 100644 index d8e05a2d..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/parallel_spec_iterator_test.go +++ /dev/null @@ -1,112 +0,0 @@ -package spec_iterator_test - -import ( - "net/http" - - . "github.com/onsi/ginkgo/internal/spec_iterator" - "github.com/onsi/gomega/ghttp" - - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/internal/containernode" - "github.com/onsi/ginkgo/internal/leafnodes" - "github.com/onsi/ginkgo/internal/spec" - "github.com/onsi/ginkgo/types" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("ParallelSpecIterator", func() { - var specs []*spec.Spec - var iterator *ParallelIterator - var server *ghttp.Server - - newSpec := func(text string, flag types.FlagType) *spec.Spec { - subject := leafnodes.NewItNode(text, func() {}, flag, codelocation.New(0), 0, nil, 0) - return spec.New(subject, []*containernode.ContainerNode{}, false) - } - - BeforeEach(func() { - specs = []*spec.Spec{ - newSpec("A", types.FlagTypePending), - newSpec("B", types.FlagTypeNone), - newSpec("C", types.FlagTypeNone), - newSpec("D", types.FlagTypeNone), - } - specs[3].Skip() - - server = ghttp.NewServer() - - iterator = NewParallelIterator(specs, "http://"+server.Addr()) - }) - - AfterEach(func() { - server.Close() - }) - - It("should report the total number of specs", func() { - Ω(iterator.NumberOfSpecsPriorToIteration()).Should(Equal(4)) - }) - - It("should not report the number to be processed", func() { - n, known := iterator.NumberOfSpecsToProcessIfKnown() - Ω(n).Should(Equal(-1)) - Ω(known).Should(BeFalse()) - }) - - It("should not report the number that will be run", func() { - n, known := iterator.NumberOfSpecsThatWillBeRunIfKnown() - Ω(n).Should(Equal(-1)) - Ω(known).Should(BeFalse()) - }) - - Describe("iterating", func() { - Describe("when the server returns well-formed responses", func() { - BeforeEach(func() { - server.AppendHandlers( - ghttp.RespondWithJSONEncoded(http.StatusOK, Counter{0}), - ghttp.RespondWithJSONEncoded(http.StatusOK, Counter{1}), - ghttp.RespondWithJSONEncoded(http.StatusOK, Counter{3}), - ghttp.RespondWithJSONEncoded(http.StatusOK, Counter{4}), - ) - }) - - It("should return the specs in question", func() { - Ω(iterator.Next()).Should(Equal(specs[0])) - Ω(iterator.Next()).Should(Equal(specs[1])) - Ω(iterator.Next()).Should(Equal(specs[3])) - spec, err := iterator.Next() - Ω(spec).Should(BeNil()) - Ω(err).Should(MatchError(ErrClosed)) - }) - }) - - Describe("when the server 404s", func() { - BeforeEach(func() { - server.AppendHandlers( - ghttp.RespondWith(http.StatusNotFound, ""), - ) - }) - - It("should return an error", func() { - spec, err := iterator.Next() - Ω(spec).Should(BeNil()) - Ω(err).Should(MatchError("unexpected status code 404")) - }) - }) - - Describe("when the server returns gibberish", func() { - BeforeEach(func() { - server.AppendHandlers( - ghttp.RespondWith(http.StatusOK, "ß"), - ) - }) - - It("should error", func() { - spec, err := iterator.Next() - Ω(spec).Should(BeNil()) - Ω(err).ShouldNot(BeNil()) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/serial_spec_iterator_test.go b/vendor/github.com/onsi/ginkgo/internal/spec_iterator/serial_spec_iterator_test.go deleted file mode 100644 index dde4a344..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/serial_spec_iterator_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package spec_iterator_test - -import ( - . "github.com/onsi/ginkgo/internal/spec_iterator" - - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/internal/containernode" - "github.com/onsi/ginkgo/internal/leafnodes" - "github.com/onsi/ginkgo/internal/spec" - "github.com/onsi/ginkgo/types" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("SerialSpecIterator", func() { - var specs []*spec.Spec - var iterator *SerialIterator - - newSpec := func(text string, flag types.FlagType) *spec.Spec { - subject := leafnodes.NewItNode(text, func() {}, flag, codelocation.New(0), 0, nil, 0) - return spec.New(subject, []*containernode.ContainerNode{}, false) - } - - BeforeEach(func() { - specs = []*spec.Spec{ - newSpec("A", types.FlagTypePending), - newSpec("B", types.FlagTypeNone), - newSpec("C", types.FlagTypeNone), - newSpec("D", types.FlagTypeNone), - } - specs[3].Skip() - - iterator = NewSerialIterator(specs) - }) - - It("should report the total number of specs", func() { - Ω(iterator.NumberOfSpecsPriorToIteration()).Should(Equal(4)) - }) - - It("should report the number to be processed", func() { - n, known := iterator.NumberOfSpecsToProcessIfKnown() - Ω(n).Should(Equal(4)) - Ω(known).Should(BeTrue()) - }) - - It("should report the number that will be run", func() { - n, known := iterator.NumberOfSpecsThatWillBeRunIfKnown() - Ω(n).Should(Equal(2)) - Ω(known).Should(BeTrue()) - }) - - Describe("iterating", func() { - It("should return the specs in order", func() { - Ω(iterator.Next()).Should(Equal(specs[0])) - Ω(iterator.Next()).Should(Equal(specs[1])) - Ω(iterator.Next()).Should(Equal(specs[2])) - Ω(iterator.Next()).Should(Equal(specs[3])) - spec, err := iterator.Next() - Ω(spec).Should(BeNil()) - Ω(err).Should(MatchError(ErrClosed)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/sharded_parallel_spec_iterator_test.go b/vendor/github.com/onsi/ginkgo/internal/spec_iterator/sharded_parallel_spec_iterator_test.go deleted file mode 100644 index c3786e03..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/sharded_parallel_spec_iterator_test.go +++ /dev/null @@ -1,62 +0,0 @@ -package spec_iterator_test - -import ( - . "github.com/onsi/ginkgo/internal/spec_iterator" - - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/internal/containernode" - "github.com/onsi/ginkgo/internal/leafnodes" - "github.com/onsi/ginkgo/internal/spec" - "github.com/onsi/ginkgo/types" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("ShardedParallelSpecIterator", func() { - var specs []*spec.Spec - var iterator *ShardedParallelIterator - - newSpec := func(text string, flag types.FlagType) *spec.Spec { - subject := leafnodes.NewItNode(text, func() {}, flag, codelocation.New(0), 0, nil, 0) - return spec.New(subject, []*containernode.ContainerNode{}, false) - } - - BeforeEach(func() { - specs = []*spec.Spec{ - newSpec("A", types.FlagTypePending), - newSpec("B", types.FlagTypeNone), - newSpec("C", types.FlagTypeNone), - newSpec("D", types.FlagTypeNone), - } - specs[3].Skip() - - iterator = NewShardedParallelIterator(specs, 2, 1) - }) - - It("should report the total number of specs", func() { - Ω(iterator.NumberOfSpecsPriorToIteration()).Should(Equal(4)) - }) - - It("should report the number to be processed", func() { - n, known := iterator.NumberOfSpecsToProcessIfKnown() - Ω(n).Should(Equal(2)) - Ω(known).Should(BeTrue()) - }) - - It("should report the number that will be run", func() { - n, known := iterator.NumberOfSpecsThatWillBeRunIfKnown() - Ω(n).Should(Equal(1)) - Ω(known).Should(BeTrue()) - }) - - Describe("iterating", func() { - It("should return the specs in order", func() { - Ω(iterator.Next()).Should(Equal(specs[0])) - Ω(iterator.Next()).Should(Equal(specs[1])) - spec, err := iterator.Next() - Ω(spec).Should(BeNil()) - Ω(err).Should(MatchError(ErrClosed)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/spec_iterator_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/spec_iterator/spec_iterator_suite_test.go deleted file mode 100644 index 5c08a77e..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/spec_iterator/spec_iterator_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package spec_iterator_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestSpecIterator(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "SpecIterator Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/specrunner/spec_runner_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/specrunner/spec_runner_suite_test.go deleted file mode 100644 index c8388fb6..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/specrunner/spec_runner_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package specrunner_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestSpecRunner(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Spec Runner Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/specrunner/spec_runner_test.go b/vendor/github.com/onsi/ginkgo/internal/specrunner/spec_runner_test.go deleted file mode 100644 index 77272e8b..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/specrunner/spec_runner_test.go +++ /dev/null @@ -1,779 +0,0 @@ -package specrunner_test - -import ( - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/internal/spec_iterator" - . "github.com/onsi/ginkgo/internal/specrunner" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/internal/containernode" - Failer "github.com/onsi/ginkgo/internal/failer" - "github.com/onsi/ginkgo/internal/leafnodes" - "github.com/onsi/ginkgo/internal/spec" - Writer "github.com/onsi/ginkgo/internal/writer" - "github.com/onsi/ginkgo/reporters" -) - -var noneFlag = types.FlagTypeNone -var focusedFlag = types.FlagTypeFocused -var pendingFlag = types.FlagTypePending - -var _ = Describe("Spec Runner", func() { - var ( - reporter1 *reporters.FakeReporter - reporter2 *reporters.FakeReporter - failer *Failer.Failer - writer *Writer.FakeGinkgoWriter - - thingsThatRan []string - - runner *SpecRunner - ) - - newBefSuite := func(text string, fail bool) leafnodes.SuiteNode { - return leafnodes.NewBeforeSuiteNode(func() { - writer.AddEvent(text) - thingsThatRan = append(thingsThatRan, text) - if fail { - failer.Fail(text, codelocation.New(0)) - } - }, codelocation.New(0), 0, failer) - } - - newAftSuite := func(text string, fail bool) leafnodes.SuiteNode { - return leafnodes.NewAfterSuiteNode(func() { - writer.AddEvent(text) - thingsThatRan = append(thingsThatRan, text) - if fail { - failer.Fail(text, codelocation.New(0)) - } - }, codelocation.New(0), 0, failer) - } - - newSpec := func(text string, flag types.FlagType, fail bool) *spec.Spec { - subject := leafnodes.NewItNode(text, func() { - writer.AddEvent(text) - thingsThatRan = append(thingsThatRan, text) - if fail { - failer.Fail(text, codelocation.New(0)) - } - }, flag, codelocation.New(0), 0, failer, 0) - - return spec.New(subject, []*containernode.ContainerNode{}, false) - } - - newFlakySpec := func(text string, flag types.FlagType, failures int) *spec.Spec { - runs := 0 - subject := leafnodes.NewItNode(text, func() { - writer.AddEvent(text) - thingsThatRan = append(thingsThatRan, text) - runs++ - if runs < failures { - failer.Fail(text, codelocation.New(0)) - } - }, flag, codelocation.New(0), 0, failer, 0) - - return spec.New(subject, []*containernode.ContainerNode{}, false) - } - - newSpecWithBody := func(text string, body interface{}) *spec.Spec { - subject := leafnodes.NewItNode(text, body, noneFlag, codelocation.New(0), 0, failer, 0) - - return spec.New(subject, []*containernode.ContainerNode{}, false) - } - - newRunner := func(config config.GinkgoConfigType, beforeSuiteNode leafnodes.SuiteNode, afterSuiteNode leafnodes.SuiteNode, specs ...*spec.Spec) *SpecRunner { - iterator := spec_iterator.NewSerialIterator(specs) - return New("description", beforeSuiteNode, iterator, afterSuiteNode, []reporters.Reporter{reporter1, reporter2}, writer, config) - } - - BeforeEach(func() { - reporter1 = reporters.NewFakeReporter() - reporter2 = reporters.NewFakeReporter() - writer = Writer.NewFake() - failer = Failer.New() - - thingsThatRan = []string{} - }) - - Describe("Running and Reporting", func() { - var specA, pendingSpec, anotherPendingSpec, failedSpec, specB, skippedSpec *spec.Spec - var willRunCalls, didCompleteCalls []string - var conf config.GinkgoConfigType - - JustBeforeEach(func() { - willRunCalls = []string{} - didCompleteCalls = []string{} - specA = newSpec("spec A", noneFlag, false) - pendingSpec = newSpec("pending spec", pendingFlag, false) - anotherPendingSpec = newSpec("another pending spec", pendingFlag, false) - failedSpec = newSpec("failed spec", noneFlag, true) - specB = newSpec("spec B", noneFlag, false) - skippedSpec = newSpec("skipped spec", noneFlag, false) - skippedSpec.Skip() - - reporter1.SpecWillRunStub = func(specSummary *types.SpecSummary) { - willRunCalls = append(willRunCalls, "Reporter1") - } - reporter2.SpecWillRunStub = func(specSummary *types.SpecSummary) { - willRunCalls = append(willRunCalls, "Reporter2") - } - - reporter1.SpecDidCompleteStub = func(specSummary *types.SpecSummary) { - didCompleteCalls = append(didCompleteCalls, "Reporter1") - } - reporter2.SpecDidCompleteStub = func(specSummary *types.SpecSummary) { - didCompleteCalls = append(didCompleteCalls, "Reporter2") - } - - runner = newRunner(conf, newBefSuite("BefSuite", false), newAftSuite("AftSuite", false), specA, pendingSpec, anotherPendingSpec, failedSpec, specB, skippedSpec) - runner.Run() - }) - - BeforeEach(func() { - conf = config.GinkgoConfigType{RandomSeed: 17} - }) - - It("should skip skipped/pending tests", func() { - Ω(thingsThatRan).Should(Equal([]string{"BefSuite", "spec A", "failed spec", "spec B", "AftSuite"})) - }) - - It("should report to any attached reporters", func() { - Ω(reporter1.Config).Should(Equal(reporter2.Config)) - Ω(reporter1.BeforeSuiteSummary).Should(Equal(reporter2.BeforeSuiteSummary)) - Ω(reporter1.BeginSummary).Should(Equal(reporter2.BeginSummary)) - Ω(reporter1.SpecWillRunSummaries).Should(Equal(reporter2.SpecWillRunSummaries)) - Ω(reporter1.SpecSummaries).Should(Equal(reporter2.SpecSummaries)) - Ω(reporter1.AfterSuiteSummary).Should(Equal(reporter2.AfterSuiteSummary)) - Ω(reporter1.EndSummary).Should(Equal(reporter2.EndSummary)) - }) - - It("should report that a spec did end in reverse order", func() { - Ω(willRunCalls[0:4]).Should(Equal([]string{"Reporter1", "Reporter2", "Reporter1", "Reporter2"})) - Ω(didCompleteCalls[0:4]).Should(Equal([]string{"Reporter2", "Reporter1", "Reporter2", "Reporter1"})) - }) - - It("should report the passed in config", func() { - Ω(reporter1.Config.RandomSeed).Should(BeNumerically("==", 17)) - }) - - It("should report the beginning of the suite", func() { - Ω(reporter1.BeginSummary.SuiteDescription).Should(Equal("description")) - Ω(reporter1.BeginSummary.SuiteID).Should(MatchRegexp("[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}")) - Ω(reporter1.BeginSummary.NumberOfSpecsBeforeParallelization).Should(Equal(6)) - Ω(reporter1.BeginSummary.NumberOfTotalSpecs).Should(Equal(6)) - Ω(reporter1.BeginSummary.NumberOfSpecsThatWillBeRun).Should(Equal(3)) - Ω(reporter1.BeginSummary.NumberOfPendingSpecs).Should(Equal(-1)) - Ω(reporter1.BeginSummary.NumberOfSkippedSpecs).Should(Equal(-1)) - }) - - It("should report the end of the suite", func() { - Ω(reporter1.EndSummary.SuiteDescription).Should(Equal("description")) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeFalse()) - Ω(reporter1.EndSummary.SuiteID).Should(MatchRegexp("[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}")) - Ω(reporter1.EndSummary.NumberOfSpecsBeforeParallelization).Should(Equal(6)) - Ω(reporter1.EndSummary.NumberOfTotalSpecs).Should(Equal(6)) - Ω(reporter1.EndSummary.NumberOfSpecsThatWillBeRun).Should(Equal(3)) - Ω(reporter1.EndSummary.NumberOfPendingSpecs).Should(Equal(2)) - Ω(reporter1.EndSummary.NumberOfSkippedSpecs).Should(Equal(1)) - Ω(reporter1.EndSummary.NumberOfPassedSpecs).Should(Equal(2)) - Ω(reporter1.EndSummary.NumberOfFailedSpecs).Should(Equal(1)) - }) - - Context("when told to perform a dry run", func() { - BeforeEach(func() { - conf.DryRun = true - }) - - It("should report to the reporters", func() { - Ω(reporter1.Config).Should(Equal(reporter2.Config)) - Ω(reporter1.BeforeSuiteSummary).Should(Equal(reporter2.BeforeSuiteSummary)) - Ω(reporter1.BeginSummary).Should(Equal(reporter2.BeginSummary)) - Ω(reporter1.SpecWillRunSummaries).Should(Equal(reporter2.SpecWillRunSummaries)) - Ω(reporter1.SpecSummaries).Should(Equal(reporter2.SpecSummaries)) - Ω(reporter1.AfterSuiteSummary).Should(Equal(reporter2.AfterSuiteSummary)) - Ω(reporter1.EndSummary).Should(Equal(reporter2.EndSummary)) - }) - - It("should not actually run anything", func() { - Ω(thingsThatRan).Should(BeEmpty()) - }) - - It("report before and after suites as passed", func() { - Ω(reporter1.BeforeSuiteSummary.State).Should(Equal(types.SpecStatePassed)) - Ω(reporter1.AfterSuiteSummary.State).Should(Equal(types.SpecStatePassed)) - }) - - It("should report specs as passed", func() { - summaries := reporter1.SpecSummaries - Ω(summaries).Should(HaveLen(6)) - Ω(summaries[0].ComponentTexts).Should(ContainElement("spec A")) - Ω(summaries[0].State).Should(Equal(types.SpecStatePassed)) - Ω(summaries[1].ComponentTexts).Should(ContainElement("pending spec")) - Ω(summaries[1].State).Should(Equal(types.SpecStatePending)) - Ω(summaries[2].ComponentTexts).Should(ContainElement("another pending spec")) - Ω(summaries[2].State).Should(Equal(types.SpecStatePending)) - Ω(summaries[3].ComponentTexts).Should(ContainElement("failed spec")) - Ω(summaries[3].State).Should(Equal(types.SpecStatePassed)) - Ω(summaries[4].ComponentTexts).Should(ContainElement("spec B")) - Ω(summaries[4].State).Should(Equal(types.SpecStatePassed)) - Ω(summaries[5].ComponentTexts).Should(ContainElement("skipped spec")) - Ω(summaries[5].State).Should(Equal(types.SpecStateSkipped)) - }) - - It("should report the end of the suite", func() { - Ω(reporter1.EndSummary.SuiteDescription).Should(Equal("description")) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeTrue()) - Ω(reporter1.EndSummary.SuiteID).Should(MatchRegexp("[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}")) - Ω(reporter1.EndSummary.NumberOfSpecsBeforeParallelization).Should(Equal(6)) - Ω(reporter1.EndSummary.NumberOfTotalSpecs).Should(Equal(6)) - Ω(reporter1.EndSummary.NumberOfSpecsThatWillBeRun).Should(Equal(3)) - Ω(reporter1.EndSummary.NumberOfPendingSpecs).Should(Equal(2)) - Ω(reporter1.EndSummary.NumberOfSkippedSpecs).Should(Equal(1)) - Ω(reporter1.EndSummary.NumberOfPassedSpecs).Should(Equal(0)) - Ω(reporter1.EndSummary.NumberOfFailedSpecs).Should(Equal(0)) - }) - }) - }) - - Describe("reporting on specs", func() { - var proceed chan bool - var ready chan bool - var finished chan bool - BeforeEach(func() { - ready = make(chan bool) - proceed = make(chan bool) - finished = make(chan bool) - skippedSpec := newSpec("SKIP", noneFlag, false) - skippedSpec.Skip() - - runner = newRunner( - config.GinkgoConfigType{}, - newBefSuite("BefSuite", false), - newAftSuite("AftSuite", false), - skippedSpec, - newSpec("PENDING", pendingFlag, false), - newSpecWithBody("RUN", func() { - close(ready) - <-proceed - }), - ) - go func() { - runner.Run() - close(finished) - }() - }) - - It("should report about pending/skipped specs", func() { - <-ready - Ω(reporter1.SpecWillRunSummaries).Should(HaveLen(3)) - - Ω(reporter1.SpecWillRunSummaries[0].ComponentTexts[0]).Should(Equal("SKIP")) - Ω(reporter1.SpecWillRunSummaries[1].ComponentTexts[0]).Should(Equal("PENDING")) - Ω(reporter1.SpecWillRunSummaries[2].ComponentTexts[0]).Should(Equal("RUN")) - - Ω(reporter1.SpecSummaries[0].ComponentTexts[0]).Should(Equal("SKIP")) - Ω(reporter1.SpecSummaries[1].ComponentTexts[0]).Should(Equal("PENDING")) - Ω(reporter1.SpecSummaries).Should(HaveLen(2)) - - close(proceed) - <-finished - - Ω(reporter1.SpecSummaries).Should(HaveLen(3)) - Ω(reporter1.SpecSummaries[2].ComponentTexts[0]).Should(Equal("RUN")) - }) - }) - - Describe("Running and Reporting when there's flakes", func() { - var specA, pendingSpec, flakySpec, failedSpec, specB, skippedSpec *spec.Spec - var willRunCalls, didCompleteCalls []string - var conf config.GinkgoConfigType - var failedSpecFlag = noneFlag - - JustBeforeEach(func() { - willRunCalls = []string{} - didCompleteCalls = []string{} - specA = newSpec("spec A", noneFlag, false) - pendingSpec = newSpec("pending spec", pendingFlag, false) - flakySpec = newFlakySpec("flaky spec", noneFlag, 3) - failedSpec = newSpec("failed spec", failedSpecFlag, true) - specB = newSpec("spec B", noneFlag, false) - skippedSpec = newSpec("skipped spec", noneFlag, false) - skippedSpec.Skip() - - reporter1.SpecWillRunStub = func(specSummary *types.SpecSummary) { - willRunCalls = append(willRunCalls, "Reporter1") - } - reporter2.SpecWillRunStub = func(specSummary *types.SpecSummary) { - willRunCalls = append(willRunCalls, "Reporter2") - } - - reporter1.SpecDidCompleteStub = func(specSummary *types.SpecSummary) { - didCompleteCalls = append(didCompleteCalls, "Reporter1") - } - reporter2.SpecDidCompleteStub = func(specSummary *types.SpecSummary) { - didCompleteCalls = append(didCompleteCalls, "Reporter2") - } - - runner = newRunner(conf, newBefSuite("BefSuite", false), newAftSuite("AftSuite", false), specA, pendingSpec, flakySpec, failedSpec, specB, skippedSpec) - runner.Run() - }) - - BeforeEach(func() { - failedSpecFlag = noneFlag - conf = config.GinkgoConfigType{ - RandomSeed: 17, - FlakeAttempts: 5, - } - }) - - It("should skip skipped/pending tests", func() { - Ω(thingsThatRan).Should(Equal([]string{"BefSuite", "spec A", "flaky spec", "flaky spec", "flaky spec", "failed spec", "failed spec", "failed spec", "failed spec", "failed spec", "spec B", "AftSuite"})) - }) - - It("should report to any attached reporters", func() { - Ω(reporter1.Config).Should(Equal(reporter2.Config)) - Ω(reporter1.BeforeSuiteSummary).Should(Equal(reporter2.BeforeSuiteSummary)) - Ω(reporter1.BeginSummary).Should(Equal(reporter2.BeginSummary)) - Ω(reporter1.SpecWillRunSummaries).Should(Equal(reporter2.SpecWillRunSummaries)) - Ω(reporter1.SpecSummaries).Should(Equal(reporter2.SpecSummaries)) - Ω(reporter1.AfterSuiteSummary).Should(Equal(reporter2.AfterSuiteSummary)) - Ω(reporter1.EndSummary).Should(Equal(reporter2.EndSummary)) - }) - - It("should report that a spec did end in reverse order", func() { - Ω(willRunCalls[0:4]).Should(Equal([]string{"Reporter1", "Reporter2", "Reporter1", "Reporter2"})) - Ω(didCompleteCalls[0:4]).Should(Equal([]string{"Reporter2", "Reporter1", "Reporter2", "Reporter1"})) - }) - - It("should report the passed in config", func() { - Ω(reporter1.Config.RandomSeed).Should(BeNumerically("==", 17)) - }) - - It("should report the beginning of the suite", func() { - Ω(reporter1.BeginSummary.SuiteDescription).Should(Equal("description")) - Ω(reporter1.BeginSummary.SuiteID).Should(MatchRegexp("[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}")) - Ω(reporter1.BeginSummary.NumberOfSpecsBeforeParallelization).Should(Equal(6)) - Ω(reporter1.BeginSummary.NumberOfTotalSpecs).Should(Equal(6)) - Ω(reporter1.BeginSummary.NumberOfSpecsThatWillBeRun).Should(Equal(4)) - Ω(reporter1.BeginSummary.NumberOfPendingSpecs).Should(Equal(-1)) - Ω(reporter1.BeginSummary.NumberOfSkippedSpecs).Should(Equal(-1)) - }) - - It("should report the end of the suite", func() { - Ω(reporter1.EndSummary.SuiteDescription).Should(Equal("description")) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeFalse()) - Ω(reporter1.EndSummary.SuiteID).Should(MatchRegexp("[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}")) - Ω(reporter1.EndSummary.NumberOfSpecsBeforeParallelization).Should(Equal(6)) - Ω(reporter1.EndSummary.NumberOfTotalSpecs).Should(Equal(6)) - Ω(reporter1.EndSummary.NumberOfSpecsThatWillBeRun).Should(Equal(4)) - Ω(reporter1.EndSummary.NumberOfPendingSpecs).Should(Equal(1)) - Ω(reporter1.EndSummary.NumberOfSkippedSpecs).Should(Equal(1)) - Ω(reporter1.EndSummary.NumberOfPassedSpecs).Should(Equal(3)) - Ω(reporter1.EndSummary.NumberOfFailedSpecs).Should(Equal(1)) - Ω(reporter1.EndSummary.NumberOfFlakedSpecs).Should(Equal(1)) - }) - - Context("when nothing fails", func() { - BeforeEach(func() { - failedSpecFlag = pendingFlag - }) - - It("the suite should pass even with flakes", func() { - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeTrue()) - Ω(reporter1.EndSummary.NumberOfFlakedSpecs).Should(Equal(1)) - }) - }) - - Context("when told to perform a dry run", func() { - BeforeEach(func() { - conf.DryRun = true - }) - - It("should report to the reporters", func() { - Ω(reporter1.Config).Should(Equal(reporter2.Config)) - Ω(reporter1.BeforeSuiteSummary).Should(Equal(reporter2.BeforeSuiteSummary)) - Ω(reporter1.BeginSummary).Should(Equal(reporter2.BeginSummary)) - Ω(reporter1.SpecWillRunSummaries).Should(Equal(reporter2.SpecWillRunSummaries)) - Ω(reporter1.SpecSummaries).Should(Equal(reporter2.SpecSummaries)) - Ω(reporter1.AfterSuiteSummary).Should(Equal(reporter2.AfterSuiteSummary)) - Ω(reporter1.EndSummary).Should(Equal(reporter2.EndSummary)) - }) - - It("should not actually run anything", func() { - Ω(thingsThatRan).Should(BeEmpty()) - }) - - It("report before and after suites as passed", func() { - Ω(reporter1.BeforeSuiteSummary.State).Should(Equal(types.SpecStatePassed)) - Ω(reporter1.AfterSuiteSummary.State).Should(Equal(types.SpecStatePassed)) - }) - - It("should report specs as passed", func() { - summaries := reporter1.SpecSummaries - Ω(summaries).Should(HaveLen(6)) - Ω(summaries[0].ComponentTexts).Should(ContainElement("spec A")) - Ω(summaries[0].State).Should(Equal(types.SpecStatePassed)) - Ω(summaries[1].ComponentTexts).Should(ContainElement("pending spec")) - Ω(summaries[1].State).Should(Equal(types.SpecStatePending)) - Ω(summaries[2].ComponentTexts).Should(ContainElement("flaky spec")) - Ω(summaries[2].State).Should(Equal(types.SpecStatePassed)) - Ω(summaries[3].ComponentTexts).Should(ContainElement("failed spec")) - Ω(summaries[3].State).Should(Equal(types.SpecStatePassed)) - Ω(summaries[4].ComponentTexts).Should(ContainElement("spec B")) - Ω(summaries[4].State).Should(Equal(types.SpecStatePassed)) - Ω(summaries[5].ComponentTexts).Should(ContainElement("skipped spec")) - Ω(summaries[5].State).Should(Equal(types.SpecStateSkipped)) - }) - - It("should report the end of the suite", func() { - Ω(reporter1.EndSummary.SuiteDescription).Should(Equal("description")) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeTrue()) - Ω(reporter1.EndSummary.SuiteID).Should(MatchRegexp("[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}")) - Ω(reporter1.EndSummary.NumberOfSpecsBeforeParallelization).Should(Equal(6)) - Ω(reporter1.EndSummary.NumberOfTotalSpecs).Should(Equal(6)) - Ω(reporter1.EndSummary.NumberOfSpecsThatWillBeRun).Should(Equal(4)) - Ω(reporter1.EndSummary.NumberOfPendingSpecs).Should(Equal(1)) - Ω(reporter1.EndSummary.NumberOfSkippedSpecs).Should(Equal(1)) - Ω(reporter1.EndSummary.NumberOfPassedSpecs).Should(Equal(0)) - Ω(reporter1.EndSummary.NumberOfFailedSpecs).Should(Equal(0)) - }) - }) - }) - - Describe("Running BeforeSuite & AfterSuite", func() { - var success bool - var befSuite leafnodes.SuiteNode - var aftSuite leafnodes.SuiteNode - Context("with a nil BeforeSuite & AfterSuite", func() { - BeforeEach(func() { - runner = newRunner( - config.GinkgoConfigType{}, - nil, - nil, - newSpec("A", noneFlag, false), - newSpec("B", noneFlag, false), - ) - success = runner.Run() - }) - - It("should not report about the BeforeSuite", func() { - Ω(reporter1.BeforeSuiteSummary).Should(BeNil()) - }) - - It("should not report about the AfterSuite", func() { - Ω(reporter1.AfterSuiteSummary).Should(BeNil()) - }) - - It("should run the specs", func() { - Ω(thingsThatRan).Should(Equal([]string{"A", "B"})) - }) - }) - - Context("when the BeforeSuite & AfterSuite pass", func() { - BeforeEach(func() { - befSuite = newBefSuite("BefSuite", false) - aftSuite = newBefSuite("AftSuite", false) - runner = newRunner( - config.GinkgoConfigType{}, - befSuite, - aftSuite, - newSpec("A", noneFlag, false), - newSpec("B", noneFlag, false), - ) - success = runner.Run() - }) - - It("should run the BeforeSuite, the AfterSuite and the specs", func() { - Ω(thingsThatRan).Should(Equal([]string{"BefSuite", "A", "B", "AftSuite"})) - }) - - It("should report about the BeforeSuite", func() { - Ω(reporter1.BeforeSuiteSummary).Should(Equal(befSuite.Summary())) - }) - - It("should report about the AfterSuite", func() { - Ω(reporter1.AfterSuiteSummary).Should(Equal(aftSuite.Summary())) - }) - - It("should report success", func() { - Ω(success).Should(BeTrue()) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeTrue()) - Ω(reporter1.EndSummary.NumberOfFailedSpecs).Should(Equal(0)) - }) - - It("should not dump the writer", func() { - Ω(writer.EventStream).ShouldNot(ContainElement("DUMP")) - }) - }) - - Context("when the BeforeSuite fails", func() { - BeforeEach(func() { - befSuite = newBefSuite("BefSuite", true) - aftSuite = newBefSuite("AftSuite", false) - - skipped := newSpec("Skipped", noneFlag, false) - skipped.Skip() - - runner = newRunner( - config.GinkgoConfigType{}, - befSuite, - aftSuite, - newSpec("A", noneFlag, false), - newSpec("B", noneFlag, false), - newSpec("Pending", pendingFlag, false), - skipped, - ) - success = runner.Run() - }) - - It("should not run the specs, but it should run the AfterSuite", func() { - Ω(thingsThatRan).Should(Equal([]string{"BefSuite", "AftSuite"})) - }) - - It("should report about the BeforeSuite", func() { - Ω(reporter1.BeforeSuiteSummary).Should(Equal(befSuite.Summary())) - }) - - It("should report about the AfterSuite", func() { - Ω(reporter1.AfterSuiteSummary).Should(Equal(aftSuite.Summary())) - }) - - It("should report failure", func() { - Ω(success).Should(BeFalse()) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeFalse()) - Ω(reporter1.EndSummary.NumberOfFailedSpecs).Should(Equal(2)) - Ω(reporter1.EndSummary.NumberOfSpecsThatWillBeRun).Should(Equal(2)) - }) - - It("should dump the writer", func() { - Ω(writer.EventStream).Should(ContainElement("DUMP")) - }) - }) - - Context("when some other test fails", func() { - BeforeEach(func() { - aftSuite = newBefSuite("AftSuite", false) - - runner = newRunner( - config.GinkgoConfigType{}, - nil, - aftSuite, - newSpec("A", noneFlag, true), - ) - success = runner.Run() - }) - - It("should still run the AfterSuite", func() { - Ω(thingsThatRan).Should(Equal([]string{"A", "AftSuite"})) - }) - - It("should report about the AfterSuite", func() { - Ω(reporter1.AfterSuiteSummary).Should(Equal(aftSuite.Summary())) - }) - - It("should report failure", func() { - Ω(success).Should(BeFalse()) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeFalse()) - Ω(reporter1.EndSummary.NumberOfFailedSpecs).Should(Equal(1)) - Ω(reporter1.EndSummary.NumberOfSpecsThatWillBeRun).Should(Equal(1)) - }) - }) - - Context("when the AfterSuite fails", func() { - BeforeEach(func() { - befSuite = newBefSuite("BefSuite", false) - aftSuite = newBefSuite("AftSuite", true) - runner = newRunner( - config.GinkgoConfigType{}, - befSuite, - aftSuite, - newSpec("A", noneFlag, false), - newSpec("B", noneFlag, false), - ) - success = runner.Run() - }) - - It("should run everything", func() { - Ω(thingsThatRan).Should(Equal([]string{"BefSuite", "A", "B", "AftSuite"})) - }) - - It("should report about the BeforeSuite", func() { - Ω(reporter1.BeforeSuiteSummary).Should(Equal(befSuite.Summary())) - }) - - It("should report about the AfterSuite", func() { - Ω(reporter1.AfterSuiteSummary).Should(Equal(aftSuite.Summary())) - }) - - It("should report failure", func() { - Ω(success).Should(BeFalse()) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeFalse()) - Ω(reporter1.EndSummary.NumberOfFailedSpecs).Should(Equal(0)) - }) - - It("should dump the writer", func() { - Ω(writer.EventStream).Should(ContainElement("DUMP")) - }) - }) - }) - - Describe("When instructed to fail fast", func() { - BeforeEach(func() { - conf := config.GinkgoConfigType{ - FailFast: true, - } - runner = newRunner(conf, nil, newAftSuite("after-suite", false), newSpec("passing", noneFlag, false), newSpec("failing", noneFlag, true), newSpec("dont-see", noneFlag, true), newSpec("dont-see", noneFlag, true)) - }) - - It("should return false, report failure, and not run anything past the failing test", func() { - Ω(runner.Run()).Should(BeFalse()) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeFalse()) - Ω(thingsThatRan).Should(Equal([]string{"passing", "failing", "after-suite"})) - }) - - It("should announce the subsequent specs as skipped", func() { - runner.Run() - Ω(reporter1.SpecSummaries).Should(HaveLen(4)) - Ω(reporter1.SpecSummaries[2].State).Should(Equal(types.SpecStateSkipped)) - Ω(reporter1.SpecSummaries[3].State).Should(Equal(types.SpecStateSkipped)) - }) - - It("should mark all subsequent specs as skipped", func() { - runner.Run() - Ω(reporter1.EndSummary.NumberOfSkippedSpecs).Should(Equal(2)) - }) - }) - - Describe("Marking failure and success", func() { - Context("when all tests pass", func() { - BeforeEach(func() { - runner = newRunner(config.GinkgoConfigType{}, nil, nil, newSpec("passing", noneFlag, false), newSpec("pending", pendingFlag, false)) - }) - - It("should return true and report success", func() { - Ω(runner.Run()).Should(BeTrue()) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeTrue()) - }) - }) - - Context("when a test fails", func() { - BeforeEach(func() { - runner = newRunner(config.GinkgoConfigType{}, nil, nil, newSpec("failing", noneFlag, true), newSpec("pending", pendingFlag, false)) - }) - - It("should return false and report failure", func() { - Ω(runner.Run()).Should(BeFalse()) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeFalse()) - }) - }) - - Context("when there is a pending test, but pendings count as failures", func() { - BeforeEach(func() { - runner = newRunner(config.GinkgoConfigType{FailOnPending: true}, nil, nil, newSpec("passing", noneFlag, false), newSpec("pending", pendingFlag, false)) - }) - - It("should return false and report failure", func() { - Ω(runner.Run()).Should(BeFalse()) - Ω(reporter1.EndSummary.SuiteSucceeded).Should(BeFalse()) - }) - }) - }) - - Describe("Managing the writer", func() { - BeforeEach(func() { - runner = newRunner( - config.GinkgoConfigType{}, - nil, - nil, - newSpec("A", noneFlag, false), - newSpec("B", noneFlag, true), - newSpec("C", noneFlag, false), - ) - reporter1.SpecWillRunStub = func(specSummary *types.SpecSummary) { - writer.AddEvent("R1.WillRun") - } - reporter2.SpecWillRunStub = func(specSummary *types.SpecSummary) { - writer.AddEvent("R2.WillRun") - } - reporter1.SpecDidCompleteStub = func(specSummary *types.SpecSummary) { - writer.AddEvent("R1.DidComplete") - } - reporter2.SpecDidCompleteStub = func(specSummary *types.SpecSummary) { - writer.AddEvent("R2.DidComplete") - } - runner.Run() - }) - - It("should truncate between tests, but only dump if a test fails", func() { - Ω(writer.EventStream).Should(Equal([]string{ - "TRUNCATE", - "R1.WillRun", - "R2.WillRun", - "A", - "R2.DidComplete", - "R1.DidComplete", - "TRUNCATE", - "R1.WillRun", - "R2.WillRun", - "B", - "BYTES", - "R2.DidComplete", - "DUMP", - "R1.DidComplete", - "TRUNCATE", - "R1.WillRun", - "R2.WillRun", - "C", - "R2.DidComplete", - "R1.DidComplete", - })) - }) - }) - - Describe("CurrentSpecSummary", func() { - It("should return the spec summary for the currently running spec", func() { - var summary *types.SpecSummary - runner = newRunner( - config.GinkgoConfigType{}, - nil, - nil, - newSpec("A", noneFlag, false), - newSpecWithBody("B", func() { - var ok bool - summary, ok = runner.CurrentSpecSummary() - Ω(ok).Should(BeTrue()) - }), - newSpec("C", noneFlag, false), - ) - runner.Run() - - Ω(summary.ComponentTexts).Should(Equal([]string{"B"})) - - summary, ok := runner.CurrentSpecSummary() - Ω(summary).Should(BeNil()) - Ω(ok).Should(BeFalse()) - }) - }) - - Describe("generating a suite id", func() { - It("should generate an id randomly", func() { - runnerA := newRunner(config.GinkgoConfigType{}, nil, nil) - runnerA.Run() - IDA := reporter1.BeginSummary.SuiteID - - runnerB := newRunner(config.GinkgoConfigType{}, nil, nil) - runnerB.Run() - IDB := reporter1.BeginSummary.SuiteID - - IDRegexp := "[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}" - Ω(IDA).Should(MatchRegexp(IDRegexp)) - Ω(IDB).Should(MatchRegexp(IDRegexp)) - - Ω(IDA).ShouldNot(Equal(IDB)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/suite/suite_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/suite/suite_suite_test.go deleted file mode 100644 index 06fe1d12..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/suite/suite_suite_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package suite_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func Test(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Suite") -} - -var numBeforeSuiteRuns = 0 -var numAfterSuiteRuns = 0 - -var _ = BeforeSuite(func() { - numBeforeSuiteRuns++ -}) - -var _ = AfterSuite(func() { - numAfterSuiteRuns++ - Ω(numBeforeSuiteRuns).Should(Equal(1)) - Ω(numAfterSuiteRuns).Should(Equal(1)) -}) - -//Fakes -type fakeTestingT struct { - didFail bool -} - -func (fakeT *fakeTestingT) Fail() { - fakeT.didFail = true -} diff --git a/vendor/github.com/onsi/ginkgo/internal/suite/suite_test.go b/vendor/github.com/onsi/ginkgo/internal/suite/suite_test.go deleted file mode 100644 index b7bcdbd2..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/suite/suite_test.go +++ /dev/null @@ -1,371 +0,0 @@ -package suite_test - -import ( - "bytes" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/suite" - . "github.com/onsi/gomega" - - "math/rand" - "time" - - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/internal/codelocation" - Failer "github.com/onsi/ginkgo/internal/failer" - Writer "github.com/onsi/ginkgo/internal/writer" - "github.com/onsi/ginkgo/reporters" - "github.com/onsi/ginkgo/types" -) - -var _ = Describe("Suite", func() { - var ( - specSuite *Suite - fakeT *fakeTestingT - fakeR *reporters.FakeReporter - writer *Writer.FakeGinkgoWriter - failer *Failer.Failer - ) - - BeforeEach(func() { - writer = Writer.NewFake() - fakeT = &fakeTestingT{} - fakeR = reporters.NewFakeReporter() - failer = Failer.New() - specSuite = New(failer) - }) - - Describe("running a suite", func() { - var ( - runOrder []string - randomizeAllSpecs bool - randomSeed int64 - focusString string - parallelNode int - parallelTotal int - runResult bool - hasProgrammaticFocus bool - ) - - var f = func(runText string) func() { - return func() { - runOrder = append(runOrder, runText) - } - } - - BeforeEach(func() { - randomizeAllSpecs = false - randomSeed = 11 - parallelNode = 1 - parallelTotal = 1 - focusString = "" - - runOrder = make([]string, 0) - specSuite.SetBeforeSuiteNode(f("BeforeSuite"), codelocation.New(0), 0) - specSuite.PushBeforeEachNode(f("top BE"), codelocation.New(0), 0) - specSuite.PushJustBeforeEachNode(f("top JBE"), codelocation.New(0), 0) - specSuite.PushAfterEachNode(f("top AE"), codelocation.New(0), 0) - - specSuite.PushContainerNode("container", func() { - specSuite.PushBeforeEachNode(f("BE"), codelocation.New(0), 0) - specSuite.PushJustBeforeEachNode(f("JBE"), codelocation.New(0), 0) - specSuite.PushAfterEachNode(f("AE"), codelocation.New(0), 0) - specSuite.PushItNode("it", f("IT"), types.FlagTypeNone, codelocation.New(0), 0) - - specSuite.PushContainerNode("inner container", func() { - specSuite.PushItNode("inner it", f("inner IT"), types.FlagTypeNone, codelocation.New(0), 0) - }, types.FlagTypeNone, codelocation.New(0)) - }, types.FlagTypeNone, codelocation.New(0)) - - specSuite.PushContainerNode("container 2", func() { - specSuite.PushBeforeEachNode(f("BE 2"), codelocation.New(0), 0) - specSuite.PushItNode("it 2", f("IT 2"), types.FlagTypeNone, codelocation.New(0), 0) - }, types.FlagTypeNone, codelocation.New(0)) - - specSuite.PushItNode("top level it", f("top IT"), types.FlagTypeNone, codelocation.New(0), 0) - - specSuite.SetAfterSuiteNode(f("AfterSuite"), codelocation.New(0), 0) - }) - - JustBeforeEach(func() { - runResult, hasProgrammaticFocus = specSuite.Run(fakeT, "suite description", []reporters.Reporter{fakeR}, writer, config.GinkgoConfigType{ - RandomSeed: randomSeed, - RandomizeAllSpecs: randomizeAllSpecs, - FocusString: focusString, - ParallelNode: parallelNode, - ParallelTotal: parallelTotal, - }) - }) - - It("provides the config and suite description to the reporter", func() { - Ω(fakeR.Config.RandomSeed).Should(Equal(int64(randomSeed))) - Ω(fakeR.Config.RandomizeAllSpecs).Should(Equal(randomizeAllSpecs)) - Ω(fakeR.BeginSummary.SuiteDescription).Should(Equal("suite description")) - }) - - It("reports that the BeforeSuite node ran", func() { - Ω(fakeR.BeforeSuiteSummary).ShouldNot(BeNil()) - }) - - It("reports that the AfterSuite node ran", func() { - Ω(fakeR.AfterSuiteSummary).ShouldNot(BeNil()) - }) - - It("provides information about the current test", func() { - description := CurrentGinkgoTestDescription() - Ω(description.ComponentTexts).Should(Equal([]string{"Suite", "running a suite", "provides information about the current test"})) - Ω(description.FullTestText).Should(Equal("Suite running a suite provides information about the current test")) - Ω(description.TestText).Should(Equal("provides information about the current test")) - Ω(description.IsMeasurement).Should(BeFalse()) - Ω(description.FileName).Should(ContainSubstring("suite_test.go")) - Ω(description.LineNumber).Should(BeNumerically(">", 50)) - Ω(description.LineNumber).Should(BeNumerically("<", 150)) - Ω(description.Failed).Should(BeFalse()) - }) - - Measure("should run measurements", func(b Benchmarker) { - r := rand.New(rand.NewSource(time.Now().UnixNano())) - - runtime := b.Time("sleeping", func() { - sleepTime := time.Duration(r.Float64() * 0.01 * float64(time.Second)) - time.Sleep(sleepTime) - }) - Ω(runtime.Seconds()).Should(BeNumerically("<=", 1)) - Ω(runtime.Seconds()).Should(BeNumerically(">=", 0)) - - randomValue := r.Float64() * 10.0 - b.RecordValue("random value", randomValue) - Ω(randomValue).Should(BeNumerically("<=", 10.0)) - Ω(randomValue).Should(BeNumerically(">=", 0.0)) - - b.RecordValueWithPrecision("specific value", 123.4567, "ms", 2) - b.RecordValueWithPrecision("specific value", 234.5678, "ms", 2) - }, 10) - - It("creates a node hierarchy, converts it to a spec collection, and runs it", func() { - Ω(runOrder).Should(Equal([]string{ - "BeforeSuite", - "top BE", "BE", "top JBE", "JBE", "IT", "AE", "top AE", - "top BE", "BE", "top JBE", "JBE", "inner IT", "AE", "top AE", - "top BE", "BE 2", "top JBE", "IT 2", "top AE", - "top BE", "top JBE", "top IT", "top AE", - "AfterSuite", - })) - }) - - Context("when told to randomize all specs", func() { - BeforeEach(func() { - randomizeAllSpecs = true - }) - - It("does", func() { - Ω(runOrder).Should(Equal([]string{ - "BeforeSuite", - "top BE", "top JBE", "top IT", "top AE", - "top BE", "BE", "top JBE", "JBE", "inner IT", "AE", "top AE", - "top BE", "BE", "top JBE", "JBE", "IT", "AE", "top AE", - "top BE", "BE 2", "top JBE", "IT 2", "top AE", - "AfterSuite", - })) - }) - }) - - Context("when provided with a filter", func() { - BeforeEach(func() { - focusString = `inner|\d` - }) - - It("converts the filter to a regular expression and uses it to filter the running specs", func() { - Ω(runOrder).Should(Equal([]string{ - "BeforeSuite", - "top BE", "BE", "top JBE", "JBE", "inner IT", "AE", "top AE", - "top BE", "BE 2", "top JBE", "IT 2", "top AE", - "AfterSuite", - })) - }) - - It("should not report a programmatic focus", func() { - Ω(hasProgrammaticFocus).Should(BeFalse()) - }) - }) - - Context("with a programatically focused spec", func() { - BeforeEach(func() { - specSuite.PushItNode("focused it", f("focused it"), types.FlagTypeFocused, codelocation.New(0), 0) - - specSuite.PushContainerNode("focused container", func() { - specSuite.PushItNode("inner focused it", f("inner focused it"), types.FlagTypeFocused, codelocation.New(0), 0) - specSuite.PushItNode("inner unfocused it", f("inner unfocused it"), types.FlagTypeNone, codelocation.New(0), 0) - }, types.FlagTypeFocused, codelocation.New(0)) - - }) - - It("should only run the focused test, applying backpropagation to favor most deeply focused leaf nodes", func() { - Ω(runOrder).Should(Equal([]string{ - "BeforeSuite", - "top BE", "top JBE", "focused it", "top AE", - "top BE", "top JBE", "inner focused it", "top AE", - "AfterSuite", - })) - }) - - It("should report a programmatic focus", func() { - Ω(hasProgrammaticFocus).Should(BeTrue()) - }) - }) - - Context("when the specs pass", func() { - It("doesn't report a failure", func() { - Ω(fakeT.didFail).Should(BeFalse()) - }) - - It("should return true", func() { - Ω(runResult).Should(BeTrue()) - }) - }) - - Context("when a spec fails", func() { - var location types.CodeLocation - BeforeEach(func() { - specSuite.PushItNode("top level it", func() { - location = codelocation.New(0) - failer.Fail("oops!", location) - }, types.FlagTypeNone, codelocation.New(0), 0) - }) - - It("should return false", func() { - Ω(runResult).Should(BeFalse()) - }) - - It("reports a failure", func() { - Ω(fakeT.didFail).Should(BeTrue()) - }) - - It("generates the correct failure data", func() { - Ω(fakeR.SpecSummaries[0].Failure.Message).Should(Equal("oops!")) - Ω(fakeR.SpecSummaries[0].Failure.Location).Should(Equal(location)) - }) - }) - - Context("when runnable nodes are nested within other runnable nodes", func() { - Context("when an It is nested", func() { - BeforeEach(func() { - specSuite.PushItNode("top level it", func() { - specSuite.PushItNode("nested it", f("oops"), types.FlagTypeNone, codelocation.New(0), 0) - }, types.FlagTypeNone, codelocation.New(0), 0) - }) - - It("should fail", func() { - Ω(fakeT.didFail).Should(BeTrue()) - }) - }) - - Context("when a Measure is nested", func() { - BeforeEach(func() { - specSuite.PushItNode("top level it", func() { - specSuite.PushMeasureNode("nested measure", func(Benchmarker) {}, types.FlagTypeNone, codelocation.New(0), 10) - }, types.FlagTypeNone, codelocation.New(0), 0) - }) - - It("should fail", func() { - Ω(fakeT.didFail).Should(BeTrue()) - }) - }) - - Context("when a BeforeEach is nested", func() { - BeforeEach(func() { - specSuite.PushItNode("top level it", func() { - specSuite.PushBeforeEachNode(f("nested bef"), codelocation.New(0), 0) - }, types.FlagTypeNone, codelocation.New(0), 0) - }) - - It("should fail", func() { - Ω(fakeT.didFail).Should(BeTrue()) - }) - }) - - Context("when a JustBeforeEach is nested", func() { - BeforeEach(func() { - specSuite.PushItNode("top level it", func() { - specSuite.PushJustBeforeEachNode(f("nested jbef"), codelocation.New(0), 0) - }, types.FlagTypeNone, codelocation.New(0), 0) - }) - - It("should fail", func() { - Ω(fakeT.didFail).Should(BeTrue()) - }) - }) - - Context("when a AfterEach is nested", func() { - BeforeEach(func() { - specSuite.PushItNode("top level it", func() { - specSuite.PushAfterEachNode(f("nested aft"), codelocation.New(0), 0) - }, types.FlagTypeNone, codelocation.New(0), 0) - }) - - It("should fail", func() { - Ω(fakeT.didFail).Should(BeTrue()) - }) - }) - }) - }) - - Describe("BeforeSuite", func() { - Context("when setting BeforeSuite more than once", func() { - It("should panic", func() { - specSuite.SetBeforeSuiteNode(func() {}, codelocation.New(0), 0) - - Ω(func() { - specSuite.SetBeforeSuiteNode(func() {}, codelocation.New(0), 0) - }).Should(Panic()) - - }) - }) - }) - - Describe("AfterSuite", func() { - Context("when setting AfterSuite more than once", func() { - It("should panic", func() { - specSuite.SetAfterSuiteNode(func() {}, codelocation.New(0), 0) - - Ω(func() { - specSuite.SetAfterSuiteNode(func() {}, codelocation.New(0), 0) - }).Should(Panic()) - }) - }) - }) - - Describe("By", func() { - It("writes to the GinkgoWriter", func() { - originalGinkgoWriter := GinkgoWriter - buffer := &bytes.Buffer{} - - GinkgoWriter = buffer - By("Saying Hello GinkgoWriter") - GinkgoWriter = originalGinkgoWriter - - Ω(buffer.String()).Should(ContainSubstring("STEP")) - Ω(buffer.String()).Should(ContainSubstring(": Saying Hello GinkgoWriter\n")) - }) - - It("calls the passed-in callback if present", func() { - a := 0 - By("calling the callback", func() { - a = 1 - }) - Ω(a).Should(Equal(1)) - }) - - It("panics if there is more than one callback", func() { - Ω(func() { - By("registering more than one callback", func() {}, func() {}) - }).Should(Panic()) - }) - }) - - Describe("GinkgoRandomSeed", func() { - It("returns the current config's random seed", func() { - Ω(GinkgoRandomSeed()).Should(Equal(config.GinkgoConfig.RandomSeed)) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/internal/writer/writer_suite_test.go b/vendor/github.com/onsi/ginkgo/internal/writer/writer_suite_test.go deleted file mode 100644 index e2065779..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/writer/writer_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package writer_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestWriter(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Writer Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/internal/writer/writer_test.go b/vendor/github.com/onsi/ginkgo/internal/writer/writer_test.go deleted file mode 100644 index 3e1d17c6..00000000 --- a/vendor/github.com/onsi/ginkgo/internal/writer/writer_test.go +++ /dev/null @@ -1,75 +0,0 @@ -package writer_test - -import ( - "github.com/onsi/gomega/gbytes" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/ginkgo/internal/writer" - . "github.com/onsi/gomega" -) - -var _ = Describe("Writer", func() { - var writer *Writer - var out *gbytes.Buffer - - BeforeEach(func() { - out = gbytes.NewBuffer() - writer = New(out) - }) - - It("should stream directly to the outbuffer by default", func() { - writer.Write([]byte("foo")) - Ω(out).Should(gbytes.Say("foo")) - }) - - It("should not emit the header when asked to DumpOutWitHeader", func() { - writer.Write([]byte("foo")) - writer.DumpOutWithHeader("my header") - Ω(out).ShouldNot(gbytes.Say("my header")) - Ω(out).Should(gbytes.Say("foo")) - }) - - Context("when told not to stream", func() { - BeforeEach(func() { - writer.SetStream(false) - }) - - It("should only write to the buffer when told to DumpOut", func() { - writer.Write([]byte("foo")) - Ω(out).ShouldNot(gbytes.Say("foo")) - writer.DumpOut() - Ω(out).Should(gbytes.Say("foo")) - }) - - It("should truncate the internal buffer when told to truncate", func() { - writer.Write([]byte("foo")) - writer.Truncate() - writer.DumpOut() - Ω(out).ShouldNot(gbytes.Say("foo")) - - writer.Write([]byte("bar")) - writer.DumpOut() - Ω(out).Should(gbytes.Say("bar")) - }) - - Describe("emitting a header", func() { - Context("when the buffer has content", func() { - It("should emit the header followed by the content", func() { - writer.Write([]byte("foo")) - writer.DumpOutWithHeader("my header") - - Ω(out).Should(gbytes.Say("my header")) - Ω(out).Should(gbytes.Say("foo")) - }) - }) - - Context("when the buffer has no content", func() { - It("should not emit the header", func() { - writer.DumpOutWithHeader("my header") - - Ω(out).ShouldNot(gbytes.Say("my header")) - }) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/reporters/default_reporter_test.go b/vendor/github.com/onsi/ginkgo/reporters/default_reporter_test.go deleted file mode 100644 index 01528448..00000000 --- a/vendor/github.com/onsi/ginkgo/reporters/default_reporter_test.go +++ /dev/null @@ -1,414 +0,0 @@ -package reporters_test - -import ( - "time" - - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/reporters" - st "github.com/onsi/ginkgo/reporters/stenographer" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" -) - -var _ = Describe("DefaultReporter", func() { - var ( - reporter *reporters.DefaultReporter - reporterConfig config.DefaultReporterConfigType - stenographer *st.FakeStenographer - - ginkgoConfig config.GinkgoConfigType - suite *types.SuiteSummary - spec *types.SpecSummary - ) - - BeforeEach(func() { - stenographer = st.NewFakeStenographer() - reporterConfig = config.DefaultReporterConfigType{ - NoColor: false, - SlowSpecThreshold: 0.1, - NoisyPendings: false, - Verbose: true, - FullTrace: true, - } - - reporter = reporters.NewDefaultReporter(reporterConfig, stenographer) - }) - - call := func(method string, args ...interface{}) st.FakeStenographerCall { - return st.NewFakeStenographerCall(method, args...) - } - - Describe("SpecSuiteWillBegin", func() { - BeforeEach(func() { - suite = &types.SuiteSummary{ - SuiteDescription: "A Sweet Suite", - NumberOfTotalSpecs: 10, - NumberOfSpecsThatWillBeRun: 8, - } - - ginkgoConfig = config.GinkgoConfigType{ - RandomSeed: 1138, - RandomizeAllSpecs: true, - } - }) - - Context("when a serial (non-parallel) suite begins", func() { - BeforeEach(func() { - ginkgoConfig.ParallelTotal = 1 - - reporter.SpecSuiteWillBegin(ginkgoConfig, suite) - }) - - It("should announce the suite, then announce the number of specs", func() { - Ω(stenographer.Calls()).Should(HaveLen(2)) - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuite", "A Sweet Suite", ginkgoConfig.RandomSeed, true, false))) - Ω(stenographer.Calls()[1]).Should(Equal(call("AnnounceNumberOfSpecs", 8, 10, false))) - }) - }) - - Context("when a parallel suite begins", func() { - BeforeEach(func() { - ginkgoConfig.ParallelTotal = 2 - ginkgoConfig.ParallelNode = 1 - suite.NumberOfSpecsBeforeParallelization = 20 - - reporter.SpecSuiteWillBegin(ginkgoConfig, suite) - }) - - It("should announce the suite, announce that it's a parallel run, then announce the number of specs", func() { - Ω(stenographer.Calls()).Should(HaveLen(2)) - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuite", "A Sweet Suite", ginkgoConfig.RandomSeed, true, false))) - Ω(stenographer.Calls()[1]).Should(Equal(call("AnnounceParallelRun", 1, 2, false))) - }) - }) - }) - - Describe("BeforeSuiteDidRun", func() { - Context("when the BeforeSuite passes", func() { - It("should announce nothing", func() { - reporter.BeforeSuiteDidRun(&types.SetupSummary{ - State: types.SpecStatePassed, - }) - - Ω(stenographer.Calls()).Should(BeEmpty()) - }) - }) - - Context("when the BeforeSuite fails", func() { - It("should announce the failure", func() { - summary := &types.SetupSummary{ - State: types.SpecStateFailed, - } - reporter.BeforeSuiteDidRun(summary) - - Ω(stenographer.Calls()).Should(HaveLen(1)) - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceBeforeSuiteFailure", summary, false, true))) - }) - }) - }) - - Describe("AfterSuiteDidRun", func() { - Context("when the AfterSuite passes", func() { - It("should announce nothing", func() { - reporter.AfterSuiteDidRun(&types.SetupSummary{ - State: types.SpecStatePassed, - }) - - Ω(stenographer.Calls()).Should(BeEmpty()) - }) - }) - - Context("when the AfterSuite fails", func() { - It("should announce the failure", func() { - summary := &types.SetupSummary{ - State: types.SpecStateFailed, - } - reporter.AfterSuiteDidRun(summary) - - Ω(stenographer.Calls()).Should(HaveLen(1)) - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceAfterSuiteFailure", summary, false, true))) - }) - }) - }) - - Describe("SpecWillRun", func() { - Context("When running in verbose mode", func() { - Context("and the spec will run", func() { - BeforeEach(func() { - spec = &types.SpecSummary{} - reporter.SpecWillRun(spec) - }) - - It("should announce that the spec will run", func() { - Ω(stenographer.Calls()).Should(HaveLen(1)) - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSpecWillRun", spec))) - }) - }) - - Context("and the spec will not run", func() { - Context("because it is pending", func() { - BeforeEach(func() { - spec = &types.SpecSummary{ - State: types.SpecStatePending, - } - reporter.SpecWillRun(spec) - }) - - It("should announce nothing", func() { - Ω(stenographer.Calls()).Should(BeEmpty()) - }) - }) - - Context("because it is skipped", func() { - BeforeEach(func() { - spec = &types.SpecSummary{ - State: types.SpecStateSkipped, - } - reporter.SpecWillRun(spec) - }) - - It("should announce nothing", func() { - Ω(stenographer.Calls()).Should(BeEmpty()) - }) - }) - }) - }) - - Context("When running in verbose & succinct mode", func() { - BeforeEach(func() { - reporterConfig.Succinct = true - reporter = reporters.NewDefaultReporter(reporterConfig, stenographer) - spec = &types.SpecSummary{} - reporter.SpecWillRun(spec) - }) - - It("should announce nothing", func() { - Ω(stenographer.Calls()).Should(BeEmpty()) - }) - }) - - Context("When not running in verbose mode", func() { - BeforeEach(func() { - reporterConfig.Verbose = false - reporter = reporters.NewDefaultReporter(reporterConfig, stenographer) - spec = &types.SpecSummary{} - reporter.SpecWillRun(spec) - }) - - It("should announce nothing", func() { - Ω(stenographer.Calls()).Should(BeEmpty()) - }) - }) - }) - - Describe("SpecDidComplete", func() { - JustBeforeEach(func() { - reporter.SpecDidComplete(spec) - }) - - BeforeEach(func() { - spec = &types.SpecSummary{} - }) - - Context("When the spec passed", func() { - BeforeEach(func() { - spec.State = types.SpecStatePassed - }) - - Context("When the spec was a measurement", func() { - BeforeEach(func() { - spec.IsMeasurement = true - }) - - It("should announce the measurement", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuccesfulMeasurement", spec, false))) - }) - }) - - Context("When the spec is slow", func() { - BeforeEach(func() { - spec.RunTime = time.Second - }) - - It("should announce that it was slow", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuccesfulSlowSpec", spec, false))) - }) - }) - - Context("Otherwise", func() { - It("should announce the succesful spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuccesfulSpec", spec))) - }) - }) - }) - - Context("When the spec is pending", func() { - BeforeEach(func() { - spec.State = types.SpecStatePending - }) - - It("should announce the pending spec, succinctly", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnouncePendingSpec", spec, false))) - }) - }) - - Context("When the spec is skipped", func() { - BeforeEach(func() { - spec.State = types.SpecStateSkipped - }) - - It("should announce the skipped spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSkippedSpec", spec, false, true))) - }) - }) - - Context("When the spec timed out", func() { - BeforeEach(func() { - spec.State = types.SpecStateTimedOut - }) - - It("should announce the timedout spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSpecTimedOut", spec, false, true))) - }) - }) - - Context("When the spec panicked", func() { - BeforeEach(func() { - spec.State = types.SpecStatePanicked - }) - - It("should announce the panicked spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSpecPanicked", spec, false, true))) - }) - }) - - Context("When the spec failed", func() { - BeforeEach(func() { - spec.State = types.SpecStateFailed - }) - - It("should announce the failed spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSpecFailed", spec, false, true))) - }) - }) - - Context("in noisy pendings mode", func() { - BeforeEach(func() { - reporterConfig.Succinct = false - reporterConfig.NoisyPendings = true - reporter = reporters.NewDefaultReporter(reporterConfig, stenographer) - }) - - Context("When the spec is pending", func() { - BeforeEach(func() { - spec.State = types.SpecStatePending - }) - - It("should announce the pending spec, noisily", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnouncePendingSpec", spec, true))) - }) - }) - }) - - Context("in succinct mode", func() { - BeforeEach(func() { - reporterConfig.Succinct = true - reporter = reporters.NewDefaultReporter(reporterConfig, stenographer) - }) - - Context("When the spec passed", func() { - BeforeEach(func() { - spec.State = types.SpecStatePassed - }) - - Context("When the spec was a measurement", func() { - BeforeEach(func() { - spec.IsMeasurement = true - }) - - It("should announce the measurement", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuccesfulMeasurement", spec, true))) - }) - }) - - Context("When the spec is slow", func() { - BeforeEach(func() { - spec.RunTime = time.Second - }) - - It("should announce that it was slow", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuccesfulSlowSpec", spec, true))) - }) - }) - - Context("Otherwise", func() { - It("should announce the succesful spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSuccesfulSpec", spec))) - }) - }) - }) - - Context("When the spec is pending", func() { - BeforeEach(func() { - spec.State = types.SpecStatePending - }) - - It("should announce the pending spec, succinctly", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnouncePendingSpec", spec, false))) - }) - }) - - Context("When the spec is skipped", func() { - BeforeEach(func() { - spec.State = types.SpecStateSkipped - }) - - It("should announce the skipped spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSkippedSpec", spec, true, true))) - }) - }) - - Context("When the spec timed out", func() { - BeforeEach(func() { - spec.State = types.SpecStateTimedOut - }) - - It("should announce the timedout spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSpecTimedOut", spec, true, true))) - }) - }) - - Context("When the spec panicked", func() { - BeforeEach(func() { - spec.State = types.SpecStatePanicked - }) - - It("should announce the panicked spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSpecPanicked", spec, true, true))) - }) - }) - - Context("When the spec failed", func() { - BeforeEach(func() { - spec.State = types.SpecStateFailed - }) - - It("should announce the failed spec", func() { - Ω(stenographer.Calls()[0]).Should(Equal(call("AnnounceSpecFailed", spec, true, true))) - }) - }) - }) - }) - - Describe("SpecSuiteDidEnd", func() { - BeforeEach(func() { - suite = &types.SuiteSummary{} - reporter.SpecSuiteDidEnd(suite) - }) - - It("should announce the spec run's completion", func() { - Ω(stenographer.Calls()[1]).Should(Equal(call("AnnounceSpecRunCompletion", suite, false))) - }) - }) -}) diff --git a/vendor/github.com/onsi/ginkgo/reporters/junit_reporter_test.go b/vendor/github.com/onsi/ginkgo/reporters/junit_reporter_test.go deleted file mode 100644 index 37a6daab..00000000 --- a/vendor/github.com/onsi/ginkgo/reporters/junit_reporter_test.go +++ /dev/null @@ -1,247 +0,0 @@ -package reporters_test - -import ( - "encoding/xml" - "io/ioutil" - "os" - "time" - - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/reporters" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" -) - -var _ = Describe("JUnit Reporter", func() { - var ( - outputFile string - reporter Reporter - ) - - readOutputFile := func() reporters.JUnitTestSuite { - bytes, err := ioutil.ReadFile(outputFile) - Ω(err).ShouldNot(HaveOccurred()) - var suite reporters.JUnitTestSuite - err = xml.Unmarshal(bytes, &suite) - Ω(err).ShouldNot(HaveOccurred()) - return suite - } - - BeforeEach(func() { - f, err := ioutil.TempFile("", "output") - Ω(err).ShouldNot(HaveOccurred()) - f.Close() - outputFile = f.Name() - - reporter = reporters.NewJUnitReporter(outputFile) - - reporter.SpecSuiteWillBegin(config.GinkgoConfigType{}, &types.SuiteSummary{ - SuiteDescription: "My test suite", - NumberOfSpecsThatWillBeRun: 1, - }) - }) - - AfterEach(func() { - os.RemoveAll(outputFile) - }) - - Describe("a passing test", func() { - BeforeEach(func() { - beforeSuite := &types.SetupSummary{ - State: types.SpecStatePassed, - } - reporter.BeforeSuiteDidRun(beforeSuite) - - afterSuite := &types.SetupSummary{ - State: types.SpecStatePassed, - } - reporter.AfterSuiteDidRun(afterSuite) - - spec := &types.SpecSummary{ - ComponentTexts: []string{"[Top Level]", "A", "B", "C"}, - State: types.SpecStatePassed, - RunTime: 5 * time.Second, - } - reporter.SpecWillRun(spec) - reporter.SpecDidComplete(spec) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 0, - RunTime: 10 * time.Second, - }) - }) - - It("should record the test as passing", func() { - output := readOutputFile() - Ω(output.Tests).Should(Equal(1)) - Ω(output.Failures).Should(Equal(0)) - Ω(output.Time).Should(Equal(10.0)) - Ω(output.TestCases).Should(HaveLen(1)) - Ω(output.TestCases[0].Name).Should(Equal("A B C")) - Ω(output.TestCases[0].ClassName).Should(Equal("My test suite")) - Ω(output.TestCases[0].FailureMessage).Should(BeNil()) - Ω(output.TestCases[0].Skipped).Should(BeNil()) - Ω(output.TestCases[0].Time).Should(Equal(5.0)) - }) - }) - - Describe("when the BeforeSuite fails", func() { - var beforeSuite *types.SetupSummary - - BeforeEach(func() { - beforeSuite = &types.SetupSummary{ - State: types.SpecStateFailed, - RunTime: 3 * time.Second, - Failure: types.SpecFailure{ - Message: "failed to setup", - ComponentCodeLocation: codelocation.New(0), - Location: codelocation.New(2), - }, - } - reporter.BeforeSuiteDidRun(beforeSuite) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 1, - RunTime: 10 * time.Second, - }) - }) - - It("should record the test as having failed", func() { - output := readOutputFile() - Ω(output.Tests).Should(Equal(1)) - Ω(output.Failures).Should(Equal(1)) - Ω(output.Time).Should(Equal(10.0)) - Ω(output.TestCases[0].Name).Should(Equal("BeforeSuite")) - Ω(output.TestCases[0].Time).Should(Equal(3.0)) - Ω(output.TestCases[0].ClassName).Should(Equal("My test suite")) - Ω(output.TestCases[0].FailureMessage.Type).Should(Equal("Failure")) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring("failed to setup")) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring(beforeSuite.Failure.ComponentCodeLocation.String())) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring(beforeSuite.Failure.Location.String())) - Ω(output.TestCases[0].Skipped).Should(BeNil()) - }) - }) - - Describe("when the AfterSuite fails", func() { - var afterSuite *types.SetupSummary - - BeforeEach(func() { - afterSuite = &types.SetupSummary{ - State: types.SpecStateFailed, - RunTime: 3 * time.Second, - Failure: types.SpecFailure{ - Message: "failed to setup", - ComponentCodeLocation: codelocation.New(0), - Location: codelocation.New(2), - }, - } - reporter.AfterSuiteDidRun(afterSuite) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 1, - RunTime: 10 * time.Second, - }) - }) - - It("should record the test as having failed", func() { - output := readOutputFile() - Ω(output.Tests).Should(Equal(1)) - Ω(output.Failures).Should(Equal(1)) - Ω(output.Time).Should(Equal(10.0)) - Ω(output.TestCases[0].Name).Should(Equal("AfterSuite")) - Ω(output.TestCases[0].Time).Should(Equal(3.0)) - Ω(output.TestCases[0].ClassName).Should(Equal("My test suite")) - Ω(output.TestCases[0].FailureMessage.Type).Should(Equal("Failure")) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring("failed to setup")) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring(afterSuite.Failure.ComponentCodeLocation.String())) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring(afterSuite.Failure.Location.String())) - Ω(output.TestCases[0].Skipped).Should(BeNil()) - }) - }) - - specStateCases := []struct { - state types.SpecState - message string - }{ - {types.SpecStateFailed, "Failure"}, - {types.SpecStateTimedOut, "Timeout"}, - {types.SpecStatePanicked, "Panic"}, - } - - for _, specStateCase := range specStateCases { - specStateCase := specStateCase - Describe("a failing test", func() { - var spec *types.SpecSummary - BeforeEach(func() { - spec = &types.SpecSummary{ - ComponentTexts: []string{"[Top Level]", "A", "B", "C"}, - State: specStateCase.state, - RunTime: 5 * time.Second, - Failure: types.SpecFailure{ - ComponentCodeLocation: codelocation.New(0), - Location: codelocation.New(2), - Message: "I failed", - }, - } - reporter.SpecWillRun(spec) - reporter.SpecDidComplete(spec) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 1, - RunTime: 10 * time.Second, - }) - }) - - It("should record test as failing", func() { - output := readOutputFile() - Ω(output.Tests).Should(Equal(1)) - Ω(output.Failures).Should(Equal(1)) - Ω(output.Time).Should(Equal(10.0)) - Ω(output.TestCases[0].Name).Should(Equal("A B C")) - Ω(output.TestCases[0].ClassName).Should(Equal("My test suite")) - Ω(output.TestCases[0].FailureMessage.Type).Should(Equal(specStateCase.message)) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring("I failed")) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring(spec.Failure.ComponentCodeLocation.String())) - Ω(output.TestCases[0].FailureMessage.Message).Should(ContainSubstring(spec.Failure.Location.String())) - Ω(output.TestCases[0].Skipped).Should(BeNil()) - }) - }) - } - - for _, specStateCase := range []types.SpecState{types.SpecStatePending, types.SpecStateSkipped} { - specStateCase := specStateCase - Describe("a skipped test", func() { - var spec *types.SpecSummary - BeforeEach(func() { - spec = &types.SpecSummary{ - ComponentTexts: []string{"[Top Level]", "A", "B", "C"}, - State: specStateCase, - RunTime: 5 * time.Second, - } - reporter.SpecWillRun(spec) - reporter.SpecDidComplete(spec) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 0, - RunTime: 10 * time.Second, - }) - }) - - It("should record test as failing", func() { - output := readOutputFile() - Ω(output.Tests).Should(Equal(1)) - Ω(output.Failures).Should(Equal(0)) - Ω(output.Time).Should(Equal(10.0)) - Ω(output.TestCases[0].Name).Should(Equal("A B C")) - Ω(output.TestCases[0].Skipped).ShouldNot(BeNil()) - }) - }) - } -}) diff --git a/vendor/github.com/onsi/ginkgo/reporters/reporters_suite_test.go b/vendor/github.com/onsi/ginkgo/reporters/reporters_suite_test.go deleted file mode 100644 index cec5a4db..00000000 --- a/vendor/github.com/onsi/ginkgo/reporters/reporters_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package reporters_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestReporters(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Reporters Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/README.md b/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/README.md deleted file mode 100644 index 37de454f..00000000 --- a/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Colorize Windows - -These packages are used for colorize on Windows and contributed by mattn.jp@gmail.com - - * go-colorable: - * go-isatty: diff --git a/vendor/github.com/onsi/ginkgo/reporters/teamcity_reporter_test.go b/vendor/github.com/onsi/ginkgo/reporters/teamcity_reporter_test.go deleted file mode 100644 index de877321..00000000 --- a/vendor/github.com/onsi/ginkgo/reporters/teamcity_reporter_test.go +++ /dev/null @@ -1,213 +0,0 @@ -package reporters_test - -import ( - "bytes" - "fmt" - . "github.com/onsi/ginkgo" - "github.com/onsi/ginkgo/config" - "github.com/onsi/ginkgo/internal/codelocation" - "github.com/onsi/ginkgo/reporters" - "github.com/onsi/ginkgo/types" - . "github.com/onsi/gomega" - "time" -) - -var _ = Describe("TeamCity Reporter", func() { - var ( - buffer bytes.Buffer - reporter Reporter - ) - - BeforeEach(func() { - buffer.Truncate(0) - reporter = reporters.NewTeamCityReporter(&buffer) - reporter.SpecSuiteWillBegin(config.GinkgoConfigType{}, &types.SuiteSummary{ - SuiteDescription: "Foo's test suite", - NumberOfSpecsThatWillBeRun: 1, - }) - }) - - Describe("a passing test", func() { - BeforeEach(func() { - beforeSuite := &types.SetupSummary{ - State: types.SpecStatePassed, - } - reporter.BeforeSuiteDidRun(beforeSuite) - - afterSuite := &types.SetupSummary{ - State: types.SpecStatePassed, - } - reporter.AfterSuiteDidRun(afterSuite) - - spec := &types.SpecSummary{ - ComponentTexts: []string{"[Top Level]", "A", "B", "C"}, - State: types.SpecStatePassed, - RunTime: 5 * time.Second, - } - reporter.SpecWillRun(spec) - reporter.SpecDidComplete(spec) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 0, - RunTime: 10 * time.Second, - }) - }) - - It("should record the test as passing", func() { - actual := buffer.String() - expected := - "##teamcity[testSuiteStarted name='Foo|'s test suite']" + - "##teamcity[testStarted name='A B C']" + - "##teamcity[testFinished name='A B C' duration='5000']" + - "##teamcity[testSuiteFinished name='Foo|'s test suite']" - Ω(actual).Should(Equal(expected)) - }) - }) - - Describe("when the BeforeSuite fails", func() { - var beforeSuite *types.SetupSummary - - BeforeEach(func() { - beforeSuite = &types.SetupSummary{ - State: types.SpecStateFailed, - RunTime: 3 * time.Second, - Failure: types.SpecFailure{ - Message: "failed to setup\n", - ComponentCodeLocation: codelocation.New(0), - }, - } - reporter.BeforeSuiteDidRun(beforeSuite) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 1, - RunTime: 10 * time.Second, - }) - }) - - It("should record the test as having failed", func() { - actual := buffer.String() - expected := fmt.Sprintf( - "##teamcity[testSuiteStarted name='Foo|'s test suite']"+ - "##teamcity[testStarted name='BeforeSuite']"+ - "##teamcity[testFailed name='BeforeSuite' message='%s' details='failed to setup|n']"+ - "##teamcity[testFinished name='BeforeSuite' duration='3000']"+ - "##teamcity[testSuiteFinished name='Foo|'s test suite']", beforeSuite.Failure.ComponentCodeLocation.String(), - ) - Ω(actual).Should(Equal(expected)) - }) - }) - - Describe("when the AfterSuite fails", func() { - var afterSuite *types.SetupSummary - - BeforeEach(func() { - afterSuite = &types.SetupSummary{ - State: types.SpecStateFailed, - RunTime: 3 * time.Second, - Failure: types.SpecFailure{ - Message: "failed to setup\n", - ComponentCodeLocation: codelocation.New(0), - }, - } - reporter.AfterSuiteDidRun(afterSuite) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 1, - RunTime: 10 * time.Second, - }) - }) - - It("should record the test as having failed", func() { - actual := buffer.String() - expected := fmt.Sprintf( - "##teamcity[testSuiteStarted name='Foo|'s test suite']"+ - "##teamcity[testStarted name='AfterSuite']"+ - "##teamcity[testFailed name='AfterSuite' message='%s' details='failed to setup|n']"+ - "##teamcity[testFinished name='AfterSuite' duration='3000']"+ - "##teamcity[testSuiteFinished name='Foo|'s test suite']", afterSuite.Failure.ComponentCodeLocation.String(), - ) - Ω(actual).Should(Equal(expected)) - }) - }) - specStateCases := []struct { - state types.SpecState - message string - }{ - {types.SpecStateFailed, "Failure"}, - {types.SpecStateTimedOut, "Timeout"}, - {types.SpecStatePanicked, "Panic"}, - } - - for _, specStateCase := range specStateCases { - specStateCase := specStateCase - Describe("a failing test", func() { - var spec *types.SpecSummary - BeforeEach(func() { - spec = &types.SpecSummary{ - ComponentTexts: []string{"[Top Level]", "A", "B", "C"}, - State: specStateCase.state, - RunTime: 5 * time.Second, - Failure: types.SpecFailure{ - ComponentCodeLocation: codelocation.New(0), - Message: "I failed", - }, - } - reporter.SpecWillRun(spec) - reporter.SpecDidComplete(spec) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 1, - RunTime: 10 * time.Second, - }) - }) - - It("should record test as failing", func() { - actual := buffer.String() - expected := - fmt.Sprintf("##teamcity[testSuiteStarted name='Foo|'s test suite']"+ - "##teamcity[testStarted name='A B C']"+ - "##teamcity[testFailed name='A B C' message='%s' details='I failed']"+ - "##teamcity[testFinished name='A B C' duration='5000']"+ - "##teamcity[testSuiteFinished name='Foo|'s test suite']", spec.Failure.ComponentCodeLocation.String()) - Ω(actual).Should(Equal(expected)) - }) - }) - } - - for _, specStateCase := range []types.SpecState{types.SpecStatePending, types.SpecStateSkipped} { - specStateCase := specStateCase - Describe("a skipped test", func() { - var spec *types.SpecSummary - BeforeEach(func() { - spec = &types.SpecSummary{ - ComponentTexts: []string{"[Top Level]", "A", "B", "C"}, - State: specStateCase, - RunTime: 5 * time.Second, - } - reporter.SpecWillRun(spec) - reporter.SpecDidComplete(spec) - - reporter.SpecSuiteDidEnd(&types.SuiteSummary{ - NumberOfSpecsThatWillBeRun: 1, - NumberOfFailedSpecs: 0, - RunTime: 10 * time.Second, - }) - }) - - It("should record test as ignored", func() { - actual := buffer.String() - expected := - "##teamcity[testSuiteStarted name='Foo|'s test suite']" + - "##teamcity[testStarted name='A B C']" + - "##teamcity[testIgnored name='A B C']" + - "##teamcity[testFinished name='A B C' duration='5000']" + - "##teamcity[testSuiteFinished name='Foo|'s test suite']" - Ω(actual).Should(Equal(expected)) - }) - }) - } -}) diff --git a/vendor/github.com/onsi/ginkgo/types/types_suite_test.go b/vendor/github.com/onsi/ginkgo/types/types_suite_test.go deleted file mode 100644 index b026169c..00000000 --- a/vendor/github.com/onsi/ginkgo/types/types_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package types_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestTypes(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Types Suite") -} diff --git a/vendor/github.com/onsi/ginkgo/types/types_test.go b/vendor/github.com/onsi/ginkgo/types/types_test.go deleted file mode 100644 index a0e161c8..00000000 --- a/vendor/github.com/onsi/ginkgo/types/types_test.go +++ /dev/null @@ -1,99 +0,0 @@ -package types_test - -import ( - . "github.com/onsi/ginkgo/types" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var specStates = []SpecState{ - SpecStatePassed, - SpecStateTimedOut, - SpecStatePanicked, - SpecStateFailed, - SpecStatePending, - SpecStateSkipped, -} - -func verifySpecSummary(caller func(SpecSummary) bool, trueStates ...SpecState) { - summary := SpecSummary{} - trueStateLookup := map[SpecState]bool{} - for _, state := range trueStates { - trueStateLookup[state] = true - summary.State = state - Ω(caller(summary)).Should(BeTrue()) - } - - for _, state := range specStates { - if trueStateLookup[state] { - continue - } - summary.State = state - Ω(caller(summary)).Should(BeFalse()) - } -} - -var _ = Describe("Types", func() { - Describe("IsFailureState", func() { - It("knows when it is in a failure-like state", func() { - verifySpecSummary(func(summary SpecSummary) bool { - return summary.State.IsFailure() - }, SpecStateTimedOut, SpecStatePanicked, SpecStateFailed) - }) - }) - - Describe("SpecSummary", func() { - It("knows when it is in a failure-like state", func() { - verifySpecSummary(func(summary SpecSummary) bool { - return summary.HasFailureState() - }, SpecStateTimedOut, SpecStatePanicked, SpecStateFailed) - }) - - It("knows when it passed", func() { - verifySpecSummary(func(summary SpecSummary) bool { - return summary.Passed() - }, SpecStatePassed) - }) - - It("knows when it has failed", func() { - verifySpecSummary(func(summary SpecSummary) bool { - return summary.Failed() - }, SpecStateFailed) - }) - - It("knows when it has panicked", func() { - verifySpecSummary(func(summary SpecSummary) bool { - return summary.Panicked() - }, SpecStatePanicked) - }) - - It("knows when it has timed out", func() { - verifySpecSummary(func(summary SpecSummary) bool { - return summary.TimedOut() - }, SpecStateTimedOut) - }) - - It("knows when it is pending", func() { - verifySpecSummary(func(summary SpecSummary) bool { - return summary.Pending() - }, SpecStatePending) - }) - - It("knows when it is skipped", func() { - verifySpecSummary(func(summary SpecSummary) bool { - return summary.Skipped() - }, SpecStateSkipped) - }) - }) - - Describe("SpecMeasurement", func() { - It("knows how to format values when the precision is 0", func() { - Ω(SpecMeasurement{}.PrecisionFmt()).Should(Equal("%f")) - }) - - It("knows how to format the values when the precision is 3", func() { - Ω(SpecMeasurement{Precision: 3}.PrecisionFmt()).Should(Equal("%.3f")) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/format/format_suite_test.go b/vendor/github.com/onsi/gomega/format/format_suite_test.go deleted file mode 100644 index 8e65a952..00000000 --- a/vendor/github.com/onsi/gomega/format/format_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package format_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestFormat(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Format Suite") -} diff --git a/vendor/github.com/onsi/gomega/format/format_test.go b/vendor/github.com/onsi/gomega/format/format_test.go deleted file mode 100644 index b23fcf79..00000000 --- a/vendor/github.com/onsi/gomega/format/format_test.go +++ /dev/null @@ -1,603 +0,0 @@ -package format_test - -import ( - "fmt" - "strings" - "time" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/format" - "github.com/onsi/gomega/types" -) - -//recursive struct - -type StringAlias string -type ByteAlias []byte -type IntAlias int - -type AStruct struct { - Exported string -} - -type SimpleStruct struct { - Name string - Enumeration int - Veritas bool - Data []byte - secret uint32 -} - -type ComplexStruct struct { - Strings []string - SimpleThings []*SimpleStruct - DataMaps map[int]ByteAlias -} - -type SecretiveStruct struct { - boolValue bool - intValue int - uintValue uint - uintptrValue uintptr - floatValue float32 - complexValue complex64 - chanValue chan bool - funcValue func() - pointerValue *int - sliceValue []string - byteSliceValue []byte - stringValue string - arrValue [3]int - byteArrValue [3]byte - mapValue map[string]int - structValue AStruct - interfaceValue interface{} -} - -type GoStringer struct { -} - -func (g GoStringer) GoString() string { - return "go-string" -} - -func (g GoStringer) String() string { - return "string" -} - -type Stringer struct { -} - -func (g Stringer) String() string { - return "string" -} - -type ctx struct { -} - -func (c *ctx) Deadline() (deadline time.Time, ok bool) { - return time.Time{}, false -} - -func (c *ctx) Done() <-chan struct{} { - return nil -} - -func (c *ctx) Err() error { - return nil -} - -func (c *ctx) Value(key interface{}) interface{} { - return nil -} - -var _ = Describe("Format", func() { - match := func(typeRepresentation string, valueRepresentation string, args ...interface{}) types.GomegaMatcher { - if len(args) > 0 { - valueRepresentation = fmt.Sprintf(valueRepresentation, args...) - } - return Equal(fmt.Sprintf("%s<%s>: %s", Indent, typeRepresentation, valueRepresentation)) - } - - matchRegexp := func(typeRepresentation string, valueRepresentation string, args ...interface{}) types.GomegaMatcher { - if len(args) > 0 { - valueRepresentation = fmt.Sprintf(valueRepresentation, args...) - } - return MatchRegexp(fmt.Sprintf("%s<%s>: %s", Indent, typeRepresentation, valueRepresentation)) - } - - hashMatchingRegexp := func(entries ...string) string { - entriesSwitch := "(" + strings.Join(entries, "|") + ")" - arr := make([]string, len(entries)) - for i := range arr { - arr[i] = entriesSwitch - } - return "{" + strings.Join(arr, ", ") + "}" - } - - Describe("Message", func() { - Context("with only an actual value", func() { - It("should print out an indented formatted representation of the value and the message", func() { - Ω(Message(3, "to be three.")).Should(Equal("Expected\n : 3\nto be three.")) - }) - }) - - Context("with an actual and an expected value", func() { - It("should print out an indented formatted representatino of both values, and the message", func() { - Ω(Message(3, "to equal", 4)).Should(Equal("Expected\n : 3\nto equal\n : 4")) - }) - }) - }) - - Describe("MessageWithDiff", func() { - It("shows the exact point where two long strings differ", func() { - stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - - Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedLongStringFailureMessage)) - }) - - It("truncates the start of long strings that differ only at their end", func() { - stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab" - stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz" - - Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedTruncatedStartStringFailureMessage)) - }) - - It("truncates the start of long strings that differ only in length", func() { - smallString := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - largeString := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - - Ω(MessageWithDiff(largeString, "to equal", smallString)).Should(Equal(expectedTruncatedStartSizeFailureMessage)) - Ω(MessageWithDiff(smallString, "to equal", largeString)).Should(Equal(expectedTruncatedStartSizeSwappedFailureMessage)) - }) - - It("truncates the end of long strings that differ only at their start", func() { - stringWithB := "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - stringWithZ := "zaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - - Ω(MessageWithDiff(stringWithB, "to equal", stringWithZ)).Should(Equal(expectedTruncatedEndStringFailureMessage)) - }) - - It("handles multi-byte sequences correctly", func() { - stringA := "• abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz1" - stringB := "• abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" - - Ω(MessageWithDiff(stringA, "to equal", stringB)).Should(Equal(expectedTruncatedMultiByteFailureMessage)) - }) - }) - - Describe("IndentString", func() { - It("should indent the string", func() { - Ω(IndentString("foo\n bar\nbaz", 2)).Should(Equal(" foo\n bar\n baz")) - }) - }) - - Describe("Object", func() { - Describe("formatting boolean values", func() { - It("should give the type and format values correctly", func() { - Ω(Object(true, 1)).Should(match("bool", "true")) - Ω(Object(false, 1)).Should(match("bool", "false")) - }) - }) - - Describe("formatting numbers", func() { - It("should give the type and format values correctly", func() { - Ω(Object(int(3), 1)).Should(match("int", "3")) - Ω(Object(int8(3), 1)).Should(match("int8", "3")) - Ω(Object(int16(3), 1)).Should(match("int16", "3")) - Ω(Object(int32(3), 1)).Should(match("int32", "3")) - Ω(Object(int64(3), 1)).Should(match("int64", "3")) - - Ω(Object(uint(3), 1)).Should(match("uint", "3")) - Ω(Object(uint8(3), 1)).Should(match("uint8", "3")) - Ω(Object(uint16(3), 1)).Should(match("uint16", "3")) - Ω(Object(uint32(3), 1)).Should(match("uint32", "3")) - Ω(Object(uint64(3), 1)).Should(match("uint64", "3")) - }) - - It("should handle uintptr differently", func() { - Ω(Object(uintptr(3), 1)).Should(match("uintptr", "0x3")) - }) - }) - - Describe("formatting channels", func() { - It("should give the type and format values correctly", func() { - c := make(chan<- bool, 3) - c <- true - c <- false - Ω(Object(c, 1)).Should(match("chan<- bool | len:2, cap:3", "%v", c)) - }) - }) - - Describe("formatting strings", func() { - It("should give the type and format values correctly", func() { - s := "a\nb\nc" - Ω(Object(s, 1)).Should(match("string", `a - b - c`)) - }) - }) - - Describe("formatting []byte slices", func() { - Context("when the slice is made of printable bytes", func() { - It("should present it as string", func() { - b := []byte("a b c") - Ω(Object(b, 1)).Should(matchRegexp(`\[\]uint8 \| len:5, cap:\d+`, `a b c`)) - }) - }) - Context("when the slice contains non-printable bytes", func() { - It("should present it as slice", func() { - b := []byte("a b c\n\x01\x02\x03\xff\x1bH") - Ω(Object(b, 1)).Should(matchRegexp(`\[\]uint8 \| len:12, cap:\d+`, `\[97, 32, 98, 32, 99, 10, 1, 2, 3, 255, 27, 72\]`)) - }) - }) - }) - - Describe("formatting functions", func() { - It("should give the type and format values correctly", func() { - f := func(a string, b []int) ([]byte, error) { - return []byte("abc"), nil - } - Ω(Object(f, 1)).Should(match("func(string, []int) ([]uint8, error)", "%v", f)) - }) - }) - - Describe("formatting pointers", func() { - It("should give the type and dereference the value to format it correctly", func() { - a := 3 - Ω(Object(&a, 1)).Should(match(fmt.Sprintf("*int | %p", &a), "3")) - }) - - Context("when there are pointers to pointers...", func() { - It("should recursively deference the pointer until it gets to a value", func() { - a := 3 - var b *int - var c **int - var d ***int - b = &a - c = &b - d = &c - - Ω(Object(d, 1)).Should(match(fmt.Sprintf("***int | %p", d), "3")) - }) - }) - - Context("when the pointer points to nil", func() { - It("should say nil and not explode", func() { - var a *AStruct - Ω(Object(a, 1)).Should(match("*format_test.AStruct | 0x0", "nil")) - }) - }) - }) - - Describe("formatting arrays", func() { - It("should give the type and format values correctly", func() { - w := [3]string{"Jed Bartlet", "Toby Ziegler", "CJ Cregg"} - Ω(Object(w, 1)).Should(match("[3]string", `["Jed Bartlet", "Toby Ziegler", "CJ Cregg"]`)) - }) - - Context("with byte arrays", func() { - It("should give the type and format values correctly", func() { - w := [3]byte{17, 28, 19} - Ω(Object(w, 1)).Should(match("[3]uint8", `[17, 28, 19]`)) - }) - }) - }) - - Describe("formatting slices", func() { - It("should include the length and capacity in the type information", func() { - s := make([]bool, 3, 4) - Ω(Object(s, 1)).Should(match("[]bool | len:3, cap:4", "[false, false, false]")) - }) - - Context("when the slice contains long entries", func() { - It("should format the entries with newlines", func() { - w := []string{"Josiah Edward Bartlet", "Toby Ziegler", "CJ Cregg"} - expected := `[ - "Josiah Edward Bartlet", - "Toby Ziegler", - "CJ Cregg", - ]` - Ω(Object(w, 1)).Should(match("[]string | len:3, cap:3", expected)) - }) - }) - }) - - Describe("formatting maps", func() { - It("should include the length in the type information", func() { - m := make(map[int]bool, 5) - m[3] = true - m[4] = false - Ω(Object(m, 1)).Should(matchRegexp(`map\[int\]bool \| len:2`, hashMatchingRegexp("3: true", "4: false"))) - }) - - Context("when the slice contains long entries", func() { - It("should format the entries with newlines", func() { - m := map[string][]byte{} - m["Josiah Edward Bartlet"] = []byte("Martin Sheen") - m["Toby Ziegler"] = []byte("Richard Schiff") - m["CJ Cregg"] = []byte("Allison Janney") - expected := `{ - ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"), - ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"), - ("Josiah Edward Bartlet": "Martin Sheen"|"Toby Ziegler": "Richard Schiff"|"CJ Cregg": "Allison Janney"), - }` - Ω(Object(m, 1)).Should(matchRegexp(`map\[string\]\[\]uint8 \| len:3`, expected)) - }) - }) - }) - - Describe("formatting structs", func() { - It("should include the struct name and the field names", func() { - s := SimpleStruct{ - Name: "Oswald", - Enumeration: 17, - Veritas: true, - Data: []byte("datum"), - secret: 1983, - } - - Ω(Object(s, 1)).Should(match("format_test.SimpleStruct", `{Name: "Oswald", Enumeration: 17, Veritas: true, Data: "datum", secret: 1983}`)) - }) - - Context("when the struct contains long entries", func() { - It("should format the entries with new lines", func() { - s := &SimpleStruct{ - Name: "Mithrandir Gandalf Greyhame", - Enumeration: 2021, - Veritas: true, - Data: []byte("wizard"), - secret: 3, - } - - Ω(Object(s, 1)).Should(match(fmt.Sprintf("*format_test.SimpleStruct | %p", s), `{ - Name: "Mithrandir Gandalf Greyhame", - Enumeration: 2021, - Veritas: true, - Data: "wizard", - secret: 3, - }`)) - }) - }) - }) - - Describe("formatting nil values", func() { - It("should print out nil", func() { - Ω(Object(nil, 1)).Should(match("nil", "nil")) - var typedNil *AStruct - Ω(Object(typedNil, 1)).Should(match("*format_test.AStruct | 0x0", "nil")) - var c chan<- bool - Ω(Object(c, 1)).Should(match("chan<- bool | len:0, cap:0", "nil")) - var s []string - Ω(Object(s, 1)).Should(match("[]string | len:0, cap:0", "nil")) - var m map[string]bool - Ω(Object(m, 1)).Should(match("map[string]bool | len:0", "nil")) - }) - }) - - Describe("formatting aliased types", func() { - It("should print out the correct alias type", func() { - Ω(Object(StringAlias("alias"), 1)).Should(match("format_test.StringAlias", `alias`)) - Ω(Object(ByteAlias("alias"), 1)).Should(matchRegexp(`format_test\.ByteAlias \| len:5, cap:\d+`, `alias`)) - Ω(Object(IntAlias(3), 1)).Should(match("format_test.IntAlias", "3")) - }) - }) - - Describe("handling nested things", func() { - It("should produce a correctly nested representation", func() { - s := ComplexStruct{ - Strings: []string{"lots", "of", "short", "strings"}, - SimpleThings: []*SimpleStruct{ - {"short", 7, true, []byte("succinct"), 17}, - {"something longer", 427, true, []byte("designed to wrap around nicely"), 30}, - }, - DataMaps: map[int]ByteAlias{ - 17: ByteAlias("some substantially longer chunks of data"), - 1138: ByteAlias("that should make things wrap"), - }, - } - expected := `{ - Strings: \["lots", "of", "short", "strings"\], - SimpleThings: \[ - {Name: "short", Enumeration: 7, Veritas: true, Data: "succinct", secret: 17}, - { - Name: "something longer", - Enumeration: 427, - Veritas: true, - Data: "designed to wrap around nicely", - secret: 30, - }, - \], - DataMaps: { - (17: "some substantially longer chunks of data"|1138: "that should make things wrap"), - (17: "some substantially longer chunks of data"|1138: "that should make things wrap"), - }, - }` - Ω(Object(s, 1)).Should(matchRegexp(`format_test\.ComplexStruct`, expected)) - }) - }) - - Describe("formatting times", func() { - It("should format time as RFC3339", func() { - t := time.Date(2016, 10, 31, 9, 57, 23, 12345, time.UTC) - Ω(Object(t, 1)).Should(match("time.Time", `2016-10-31T09:57:23.000012345Z`)) - }) - }) - }) - - Describe("Handling unexported fields in structs", func() { - It("should handle all the various types correctly", func() { - a := int(5) - s := SecretiveStruct{ - boolValue: true, - intValue: 3, - uintValue: 4, - uintptrValue: 5, - floatValue: 6.0, - complexValue: complex(5.0, 3.0), - chanValue: make(chan bool, 2), - funcValue: func() {}, - pointerValue: &a, - sliceValue: []string{"string", "slice"}, - byteSliceValue: []byte("bytes"), - stringValue: "a string", - arrValue: [3]int{11, 12, 13}, - byteArrValue: [3]byte{17, 20, 32}, - mapValue: map[string]int{"a key": 20, "b key": 30}, - structValue: AStruct{"exported"}, - interfaceValue: map[string]int{"a key": 17}, - } - - expected := fmt.Sprintf(`{ - boolValue: true, - intValue: 3, - uintValue: 4, - uintptrValue: 0x5, - floatValue: 6, - complexValue: \(5\+3i\), - chanValue: %p, - funcValue: %p, - pointerValue: 5, - sliceValue: \["string", "slice"\], - byteSliceValue: "bytes", - stringValue: "a string", - arrValue: \[11, 12, 13\], - byteArrValue: \[17, 20, 32\], - mapValue: %s, - structValue: {Exported: "exported"}, - interfaceValue: {"a key": 17}, - }`, s.chanValue, s.funcValue, hashMatchingRegexp(`"a key": 20`, `"b key": 30`)) - - Ω(Object(s, 1)).Should(matchRegexp(`format_test\.SecretiveStruct`, expected)) - }) - }) - - Describe("Handling interfaces", func() { - It("should unpack the interface", func() { - outerHash := map[string]interface{}{} - innerHash := map[string]int{} - - innerHash["inner"] = 3 - outerHash["integer"] = 2 - outerHash["map"] = innerHash - - expected := hashMatchingRegexp(`"integer": 2`, `"map": {"inner": 3}`) - Ω(Object(outerHash, 1)).Should(matchRegexp(`map\[string\]interface {} \| len:2`, expected)) - }) - }) - - Describe("Handling recursive things", func() { - It("should not go crazy...", func() { - m := map[string]interface{}{} - m["integer"] = 2 - m["map"] = m - Ω(Object(m, 1)).Should(ContainSubstring("...")) - }) - - It("really should not go crazy...", func() { - type complexKey struct { - Value map[interface{}]int - } - - complexObject := complexKey{} - complexObject.Value = make(map[interface{}]int) - - complexObject.Value[&complexObject] = 2 - Ω(Object(complexObject, 1)).Should(ContainSubstring("...")) - }) - }) - - Describe("When instructed to use the Stringer representation", func() { - BeforeEach(func() { - UseStringerRepresentation = true - }) - - AfterEach(func() { - UseStringerRepresentation = false - }) - - Context("when passed a GoStringer", func() { - It("should use what GoString() returns", func() { - Ω(Object(GoStringer{}, 1)).Should(ContainSubstring(": go-string")) - }) - }) - - Context("when passed a stringer", func() { - It("should use what String() returns", func() { - Ω(Object(Stringer{}, 1)).Should(ContainSubstring(": string")) - }) - }) - }) - - Describe("Printing a context.Context field", func() { - - type structWithContext struct { - Context Ctx - Value string - } - - context := ctx{} - objWithContext := structWithContext{Value: "some-value", Context: &context} - - It("Suppresses the content by default", func() { - Ω(Object(objWithContext, 1)).Should(ContainSubstring("")) - }) - - It("Doesn't supress the context if it's the object being printed", func() { - Ω(Object(context, 1)).ShouldNot(MatchRegexp("^.*$")) - }) - - Context("PrintContextObjects is set", func() { - BeforeEach(func() { - PrintContextObjects = true - }) - - AfterEach(func() { - PrintContextObjects = false - }) - - It("Prints the context", func() { - Ω(Object(objWithContext, 1)).ShouldNot(ContainSubstring("")) - }) - }) - }) -}) - -var expectedLongStringFailureMessage = strings.TrimSpace(` -Expected - : "...aaaaabaaaaa..." -to equal | - : "...aaaaazaaaaa..." -`) -var expectedTruncatedEndStringFailureMessage = strings.TrimSpace(` -Expected - : "baaaaa..." -to equal | - : "zaaaaa..." -`) -var expectedTruncatedStartStringFailureMessage = strings.TrimSpace(` -Expected - : "...aaaaab" -to equal | - : "...aaaaaz" -`) -var expectedTruncatedStartSizeFailureMessage = strings.TrimSpace(` -Expected - : "...aaaaaa" -to equal | - : "...aaaaa" -`) -var expectedTruncatedStartSizeSwappedFailureMessage = strings.TrimSpace(` -Expected - : "...aaaa" -to equal | - : "...aaaaa" -`) -var expectedTruncatedMultiByteFailureMessage = strings.TrimSpace(` -Expected - : "...tuvwxyz1" -to equal | - : "...tuvwxyz" -`) diff --git a/vendor/github.com/onsi/gomega/gbytes/buffer.go b/vendor/github.com/onsi/gomega/gbytes/buffer.go deleted file mode 100644 index 336086f4..00000000 --- a/vendor/github.com/onsi/gomega/gbytes/buffer.go +++ /dev/null @@ -1,245 +0,0 @@ -/* -Package gbytes provides a buffer that supports incrementally detecting input. - -You use gbytes.Buffer with the gbytes.Say matcher. When Say finds a match, it fastforwards the buffer's read cursor to the end of that match. - -Subsequent matches against the buffer will only operate against data that appears *after* the read cursor. - -The read cursor is an opaque implementation detail that you cannot access. You should use the Say matcher to sift through the buffer. You can always -access the entire buffer's contents with Contents(). - -*/ -package gbytes - -import ( - "errors" - "fmt" - "io" - "regexp" - "sync" - "time" -) - -/* -gbytes.Buffer implements an io.Writer and can be used with the gbytes.Say matcher. - -You should only use a gbytes.Buffer in test code. It stores all writes in an in-memory buffer - behavior that is inappropriate for production code! -*/ -type Buffer struct { - contents []byte - readCursor uint64 - lock *sync.Mutex - detectCloser chan interface{} - closed bool -} - -/* -NewBuffer returns a new gbytes.Buffer -*/ -func NewBuffer() *Buffer { - return &Buffer{ - lock: &sync.Mutex{}, - } -} - -/* -BufferWithBytes returns a new gbytes.Buffer seeded with the passed in bytes -*/ -func BufferWithBytes(bytes []byte) *Buffer { - return &Buffer{ - lock: &sync.Mutex{}, - contents: bytes, - } -} - -/* -BufferReader returns a new gbytes.Buffer that wraps a reader. The reader's contents are read into -the Buffer via io.Copy -*/ -func BufferReader(reader io.Reader) *Buffer { - b := &Buffer{ - lock: &sync.Mutex{}, - } - - go func() { - io.Copy(b, reader) - b.Close() - }() - - return b -} - -/* -Write implements the io.Writer interface -*/ -func (b *Buffer) Write(p []byte) (n int, err error) { - b.lock.Lock() - defer b.lock.Unlock() - - if b.closed { - return 0, errors.New("attempt to write to closed buffer") - } - - b.contents = append(b.contents, p...) - return len(p), nil -} - -/* -Read implements the io.Reader interface. It advances the -cursor as it reads. - -Returns an error if called after Close. -*/ -func (b *Buffer) Read(d []byte) (int, error) { - b.lock.Lock() - defer b.lock.Unlock() - - if b.closed { - return 0, errors.New("attempt to read from closed buffer") - } - - if uint64(len(b.contents)) <= b.readCursor { - return 0, io.EOF - } - - n := copy(d, b.contents[b.readCursor:]) - b.readCursor += uint64(n) - - return n, nil -} - -/* -Close signifies that the buffer will no longer be written to -*/ -func (b *Buffer) Close() error { - b.lock.Lock() - defer b.lock.Unlock() - - b.closed = true - - return nil -} - -/* -Closed returns true if the buffer has been closed -*/ -func (b *Buffer) Closed() bool { - b.lock.Lock() - defer b.lock.Unlock() - - return b.closed -} - -/* -Contents returns all data ever written to the buffer. -*/ -func (b *Buffer) Contents() []byte { - b.lock.Lock() - defer b.lock.Unlock() - - contents := make([]byte, len(b.contents)) - copy(contents, b.contents) - return contents -} - -/* -Detect takes a regular expression and returns a channel. - -The channel will receive true the first time data matching the regular expression is written to the buffer. -The channel is subsequently closed and the buffer's read-cursor is fast-forwarded to just after the matching region. - -You typically don't need to use Detect and should use the ghttp.Say matcher instead. Detect is useful, however, in cases where your code must -be branch and handle different outputs written to the buffer. - -For example, consider a buffer hooked up to the stdout of a client library. You may (or may not, depending on state outside of your control) need to authenticate the client library. - -You could do something like: - -select { -case <-buffer.Detect("You are not logged in"): - //log in -case <-buffer.Detect("Success"): - //carry on -case <-time.After(time.Second): - //welp -} -buffer.CancelDetects() - -You should always call CancelDetects after using Detect. This will close any channels that have not detected and clean up the goroutines that were spawned to support them. - -Finally, you can pass detect a format string followed by variadic arguments. This will construct the regexp using fmt.Sprintf. -*/ -func (b *Buffer) Detect(desired string, args ...interface{}) chan bool { - formattedRegexp := desired - if len(args) > 0 { - formattedRegexp = fmt.Sprintf(desired, args...) - } - re := regexp.MustCompile(formattedRegexp) - - b.lock.Lock() - defer b.lock.Unlock() - - if b.detectCloser == nil { - b.detectCloser = make(chan interface{}) - } - - closer := b.detectCloser - response := make(chan bool) - go func() { - ticker := time.NewTicker(10 * time.Millisecond) - defer ticker.Stop() - defer close(response) - for { - select { - case <-ticker.C: - b.lock.Lock() - data, cursor := b.contents[b.readCursor:], b.readCursor - loc := re.FindIndex(data) - b.lock.Unlock() - - if loc != nil { - response <- true - b.lock.Lock() - newCursorPosition := cursor + uint64(loc[1]) - if newCursorPosition >= b.readCursor { - b.readCursor = newCursorPosition - } - b.lock.Unlock() - return - } - case <-closer: - return - } - } - }() - - return response -} - -/* -CancelDetects cancels any pending detects and cleans up their goroutines. You should always call this when you're done with a set of Detect channels. -*/ -func (b *Buffer) CancelDetects() { - b.lock.Lock() - defer b.lock.Unlock() - - close(b.detectCloser) - b.detectCloser = nil -} - -func (b *Buffer) didSay(re *regexp.Regexp) (bool, []byte) { - b.lock.Lock() - defer b.lock.Unlock() - - unreadBytes := b.contents[b.readCursor:] - copyOfUnreadBytes := make([]byte, len(unreadBytes)) - copy(copyOfUnreadBytes, unreadBytes) - - loc := re.FindIndex(unreadBytes) - - if loc != nil { - b.readCursor += uint64(loc[1]) - return true, copyOfUnreadBytes - } - return false, copyOfUnreadBytes -} diff --git a/vendor/github.com/onsi/gomega/gbytes/buffer_test.go b/vendor/github.com/onsi/gomega/gbytes/buffer_test.go deleted file mode 100644 index 655a3474..00000000 --- a/vendor/github.com/onsi/gomega/gbytes/buffer_test.go +++ /dev/null @@ -1,205 +0,0 @@ -package gbytes_test - -import ( - "io" - "time" - - . "github.com/onsi/gomega/gbytes" - - "bytes" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -type SlowReader struct { - R io.Reader - D time.Duration -} - -func (s SlowReader) Read(p []byte) (int, error) { - time.Sleep(s.D) - return s.R.Read(p) -} - -var _ = Describe("Buffer", func() { - var buffer *Buffer - - BeforeEach(func() { - buffer = NewBuffer() - }) - - Describe("dumping the entire contents of the buffer", func() { - It("should return everything that's been written", func() { - buffer.Write([]byte("abc")) - buffer.Write([]byte("def")) - Ω(buffer.Contents()).Should(Equal([]byte("abcdef"))) - - Ω(buffer).Should(Say("bcd")) - Ω(buffer.Contents()).Should(Equal([]byte("abcdef"))) - }) - }) - - Describe("creating a buffer with bytes", func() { - It("should create the buffer with the cursor set to the beginning", func() { - buffer := BufferWithBytes([]byte("abcdef")) - Ω(buffer.Contents()).Should(Equal([]byte("abcdef"))) - Ω(buffer).Should(Say("abc")) - Ω(buffer).ShouldNot(Say("abc")) - Ω(buffer).Should(Say("def")) - }) - }) - - Describe("creating a buffer that wraps a reader", func() { - Context("for a well-behaved reader", func() { - It("should buffer the contents of the reader", func() { - reader := bytes.NewBuffer([]byte("abcdef")) - buffer := BufferReader(reader) - Eventually(buffer).Should(Say("abc")) - Ω(buffer).ShouldNot(Say("abc")) - Eventually(buffer).Should(Say("def")) - Eventually(buffer.Closed).Should(BeTrue()) - }) - }) - - Context("for a slow reader", func() { - It("should allow Eventually to time out", func() { - slowReader := SlowReader{ - R: bytes.NewBuffer([]byte("abcdef")), - D: time.Second, - } - buffer := BufferReader(slowReader) - failures := InterceptGomegaFailures(func() { - Eventually(buffer, 100*time.Millisecond).Should(Say("abc")) - }) - Ω(failures).ShouldNot(BeEmpty()) - - fastReader := SlowReader{ - R: bytes.NewBuffer([]byte("abcdef")), - D: time.Millisecond, - } - buffer = BufferReader(fastReader) - Eventually(buffer, 100*time.Millisecond).Should(Say("abc")) - Eventually(buffer.Closed).Should(BeTrue()) - }) - }) - }) - - Describe("reading from a buffer", func() { - It("should read the current contents of the buffer", func() { - buffer := BufferWithBytes([]byte("abcde")) - - dest := make([]byte, 3) - n, err := buffer.Read(dest) - Ω(err).ShouldNot(HaveOccurred()) - Ω(n).Should(Equal(3)) - Ω(string(dest)).Should(Equal("abc")) - - dest = make([]byte, 3) - n, err = buffer.Read(dest) - Ω(err).ShouldNot(HaveOccurred()) - Ω(n).Should(Equal(2)) - Ω(string(dest[:n])).Should(Equal("de")) - - n, err = buffer.Read(dest) - Ω(err).Should(Equal(io.EOF)) - Ω(n).Should(Equal(0)) - }) - - Context("after the buffer has been closed", func() { - It("returns an error", func() { - buffer := BufferWithBytes([]byte("abcde")) - - buffer.Close() - - dest := make([]byte, 3) - n, err := buffer.Read(dest) - Ω(err).Should(HaveOccurred()) - Ω(n).Should(Equal(0)) - }) - }) - }) - - Describe("detecting regular expressions", func() { - It("should fire the appropriate channel when the passed in pattern matches, then close it", func(done Done) { - go func() { - time.Sleep(10 * time.Millisecond) - buffer.Write([]byte("abcde")) - }() - - A := buffer.Detect("%s", "a.c") - B := buffer.Detect("def") - - var gotIt bool - select { - case gotIt = <-A: - case <-B: - Fail("should not have gotten here") - } - - Ω(gotIt).Should(BeTrue()) - Eventually(A).Should(BeClosed()) - - buffer.Write([]byte("f")) - Eventually(B).Should(Receive()) - Eventually(B).Should(BeClosed()) - - close(done) - }) - - It("should fast-forward the buffer upon detection", func(done Done) { - buffer.Write([]byte("abcde")) - <-buffer.Detect("abc") - Ω(buffer).ShouldNot(Say("abc")) - Ω(buffer).Should(Say("de")) - close(done) - }) - - It("should only fast-forward the buffer when the channel is read, and only if doing so would not rewind it", func(done Done) { - buffer.Write([]byte("abcde")) - A := buffer.Detect("abc") - time.Sleep(20 * time.Millisecond) //give the goroutine a chance to detect and write to the channel - Ω(buffer).Should(Say("abcd")) - <-A - Ω(buffer).ShouldNot(Say("d")) - Ω(buffer).Should(Say("e")) - Eventually(A).Should(BeClosed()) - close(done) - }) - - It("should be possible to cancel a detection", func(done Done) { - A := buffer.Detect("abc") - B := buffer.Detect("def") - buffer.CancelDetects() - buffer.Write([]byte("abcdef")) - Eventually(A).Should(BeClosed()) - Eventually(B).Should(BeClosed()) - - Ω(buffer).Should(Say("bcde")) - <-buffer.Detect("f") - close(done) - }) - }) - - Describe("closing the buffer", func() { - It("should error when further write attempts are made", func() { - _, err := buffer.Write([]byte("abc")) - Ω(err).ShouldNot(HaveOccurred()) - - buffer.Close() - - _, err = buffer.Write([]byte("def")) - Ω(err).Should(HaveOccurred()) - - Ω(buffer.Contents()).Should(Equal([]byte("abc"))) - }) - - It("should be closed", func() { - Ω(buffer.Closed()).Should(BeFalse()) - - buffer.Close() - - Ω(buffer.Closed()).Should(BeTrue()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go b/vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go deleted file mode 100644 index 3a7dc061..00000000 --- a/vendor/github.com/onsi/gomega/gbytes/gbuffer_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package gbytes_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestGbytes(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Gbytes Suite") -} diff --git a/vendor/github.com/onsi/gomega/gbytes/io_wrappers.go b/vendor/github.com/onsi/gomega/gbytes/io_wrappers.go deleted file mode 100644 index 3caed876..00000000 --- a/vendor/github.com/onsi/gomega/gbytes/io_wrappers.go +++ /dev/null @@ -1,85 +0,0 @@ -package gbytes - -import ( - "errors" - "io" - "time" -) - -// ErrTimeout is returned by TimeoutCloser, TimeoutReader, and TimeoutWriter when the underlying Closer/Reader/Writer does not return within the specified timeout -var ErrTimeout = errors.New("timeout occurred") - -// TimeoutCloser returns an io.Closer that wraps the passed-in io.Closer. If the underlying Closer fails to close within the alloted timeout ErrTimeout is returned. -func TimeoutCloser(c io.Closer, timeout time.Duration) io.Closer { - return timeoutReaderWriterCloser{c: c, d: timeout} -} - -// TimeoutReader returns an io.Reader that wraps the passed-in io.Reader. If the underlying Reader fails to read within the alloted timeout ErrTimeout is returned. -func TimeoutReader(r io.Reader, timeout time.Duration) io.Reader { - return timeoutReaderWriterCloser{r: r, d: timeout} -} - -// TimeoutWriter returns an io.Writer that wraps the passed-in io.Writer. If the underlying Writer fails to write within the alloted timeout ErrTimeout is returned. -func TimeoutWriter(w io.Writer, timeout time.Duration) io.Writer { - return timeoutReaderWriterCloser{w: w, d: timeout} -} - -type timeoutReaderWriterCloser struct { - c io.Closer - w io.Writer - r io.Reader - d time.Duration -} - -func (t timeoutReaderWriterCloser) Close() error { - done := make(chan struct{}) - var err error - - go func() { - err = t.c.Close() - close(done) - }() - - select { - case <-done: - return err - case <-time.After(t.d): - return ErrTimeout - } -} - -func (t timeoutReaderWriterCloser) Read(p []byte) (int, error) { - done := make(chan struct{}) - var n int - var err error - - go func() { - n, err = t.r.Read(p) - close(done) - }() - - select { - case <-done: - return n, err - case <-time.After(t.d): - return 0, ErrTimeout - } -} - -func (t timeoutReaderWriterCloser) Write(p []byte) (int, error) { - done := make(chan struct{}) - var n int - var err error - - go func() { - n, err = t.w.Write(p) - close(done) - }() - - select { - case <-done: - return n, err - case <-time.After(t.d): - return 0, ErrTimeout - } -} diff --git a/vendor/github.com/onsi/gomega/gbytes/io_wrappers_test.go b/vendor/github.com/onsi/gomega/gbytes/io_wrappers_test.go deleted file mode 100644 index 2c74545d..00000000 --- a/vendor/github.com/onsi/gomega/gbytes/io_wrappers_test.go +++ /dev/null @@ -1,188 +0,0 @@ -package gbytes_test - -import ( - "fmt" - "io" - "time" - - . "github.com/onsi/gomega/gbytes" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -type FakeCloser struct { - err error - duration time.Duration -} - -func (f FakeCloser) Close() error { - time.Sleep(f.duration) - return f.err -} - -type FakeReader struct { - err error - duration time.Duration -} - -func (f FakeReader) Read(p []byte) (int, error) { - time.Sleep(f.duration) - if f.err != nil { - return 0, f.err - } - - for i := 0; i < len(p); i++ { - p[i] = 'a' - } - - return len(p), nil -} - -type FakeWriter struct { - err error - duration time.Duration -} - -func (f FakeWriter) Write(p []byte) (int, error) { - time.Sleep(f.duration) - if f.err != nil { - return 0, f.err - } - - return len(p), nil -} - -var _ = Describe("Io Wrappers", func() { - Describe("TimeoutCloser", func() { - var innerCloser io.Closer - var timeoutCloser io.Closer - - JustBeforeEach(func() { - timeoutCloser = TimeoutCloser(innerCloser, 20*time.Millisecond) - }) - - Context("when the underlying Closer closes with no error", func() { - BeforeEach(func() { - innerCloser = FakeCloser{} - }) - - It("returns with no error", func() { - Ω(timeoutCloser.Close()).Should(Succeed()) - }) - }) - - Context("when the underlying Closer closes with an error", func() { - BeforeEach(func() { - innerCloser = FakeCloser{err: fmt.Errorf("boom")} - }) - - It("returns the error", func() { - Ω(timeoutCloser.Close()).Should(MatchError("boom")) - }) - }) - - Context("when the underlying Closer hangs", func() { - BeforeEach(func() { - innerCloser = FakeCloser{ - err: fmt.Errorf("boom"), - duration: time.Hour, - } - }) - - It("returns ErrTimeout", func() { - Ω(timeoutCloser.Close()).Should(MatchError(ErrTimeout)) - }) - }) - }) - - Describe("TimeoutReader", func() { - var innerReader io.Reader - var timeoutReader io.Reader - - JustBeforeEach(func() { - timeoutReader = TimeoutReader(innerReader, 20*time.Millisecond) - }) - - Context("when the underlying Reader returns no error", func() { - BeforeEach(func() { - innerReader = FakeReader{} - }) - - It("returns with no error", func() { - p := make([]byte, 5) - n, err := timeoutReader.Read(p) - Ω(n).Should(Equal(5)) - Ω(err).ShouldNot(HaveOccurred()) - Ω(p).Should(Equal([]byte("aaaaa"))) - }) - }) - - Context("when the underlying Reader returns an error", func() { - BeforeEach(func() { - innerReader = FakeReader{err: fmt.Errorf("boom")} - }) - - It("returns the error", func() { - p := make([]byte, 5) - _, err := timeoutReader.Read(p) - Ω(err).Should(MatchError("boom")) - }) - }) - - Context("when the underlying Reader hangs", func() { - BeforeEach(func() { - innerReader = FakeReader{err: fmt.Errorf("boom"), duration: time.Hour} - }) - - It("returns ErrTimeout", func() { - p := make([]byte, 5) - _, err := timeoutReader.Read(p) - Ω(err).Should(MatchError(ErrTimeout)) - }) - }) - }) - - Describe("TimeoutWriter", func() { - var innerWriter io.Writer - var timeoutWriter io.Writer - - JustBeforeEach(func() { - timeoutWriter = TimeoutWriter(innerWriter, 20*time.Millisecond) - }) - - Context("when the underlying Writer returns no error", func() { - BeforeEach(func() { - innerWriter = FakeWriter{} - }) - - It("returns with no error", func() { - n, err := timeoutWriter.Write([]byte("aaaaa")) - Ω(n).Should(Equal(5)) - Ω(err).ShouldNot(HaveOccurred()) - }) - }) - - Context("when the underlying Writer returns an error", func() { - BeforeEach(func() { - innerWriter = FakeWriter{err: fmt.Errorf("boom")} - }) - - It("returns the error", func() { - _, err := timeoutWriter.Write([]byte("aaaaa")) - Ω(err).Should(MatchError("boom")) - }) - }) - - Context("when the underlying Writer hangs", func() { - BeforeEach(func() { - innerWriter = FakeWriter{err: fmt.Errorf("boom"), duration: time.Hour} - }) - - It("returns ErrTimeout", func() { - _, err := timeoutWriter.Write([]byte("aaaaa")) - Ω(err).Should(MatchError(ErrTimeout)) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gbytes/say_matcher.go b/vendor/github.com/onsi/gomega/gbytes/say_matcher.go deleted file mode 100644 index cbc266c5..00000000 --- a/vendor/github.com/onsi/gomega/gbytes/say_matcher.go +++ /dev/null @@ -1,105 +0,0 @@ -package gbytes - -import ( - "fmt" - "regexp" - - "github.com/onsi/gomega/format" -) - -//Objects satisfying the BufferProvider can be used with the Say matcher. -type BufferProvider interface { - Buffer() *Buffer -} - -/* -Say is a Gomega matcher that operates on gbytes.Buffers: - - Ω(buffer).Should(Say("something")) - -will succeed if the unread portion of the buffer matches the regular expression "something". - -When Say succeeds, it fast forwards the gbytes.Buffer's read cursor to just after the succesful match. -Thus, subsequent calls to Say will only match against the unread portion of the buffer - -Say pairs very well with Eventually. To assert that a buffer eventually receives data matching "[123]-star" within 3 seconds you can: - - Eventually(buffer, 3).Should(Say("[123]-star")) - -Ditto with consistently. To assert that a buffer does not receive data matching "never-see-this" for 1 second you can: - - Consistently(buffer, 1).ShouldNot(Say("never-see-this")) - -In addition to bytes.Buffers, Say can operate on objects that implement the gbytes.BufferProvider interface. -In such cases, Say simply operates on the *gbytes.Buffer returned by Buffer() - -If the buffer is closed, the Say matcher will tell Eventually to abort. -*/ -func Say(expected string, args ...interface{}) *sayMatcher { - formattedRegexp := expected - if len(args) > 0 { - formattedRegexp = fmt.Sprintf(expected, args...) - } - return &sayMatcher{ - re: regexp.MustCompile(formattedRegexp), - } -} - -type sayMatcher struct { - re *regexp.Regexp - receivedSayings []byte -} - -func (m *sayMatcher) buffer(actual interface{}) (*Buffer, bool) { - var buffer *Buffer - - switch x := actual.(type) { - case *Buffer: - buffer = x - case BufferProvider: - buffer = x.Buffer() - default: - return nil, false - } - - return buffer, true -} - -func (m *sayMatcher) Match(actual interface{}) (success bool, err error) { - buffer, ok := m.buffer(actual) - if !ok { - return false, fmt.Errorf("Say must be passed a *gbytes.Buffer or BufferProvider. Got:\n%s", format.Object(actual, 1)) - } - - didSay, sayings := buffer.didSay(m.re) - m.receivedSayings = sayings - - return didSay, nil -} - -func (m *sayMatcher) FailureMessage(actual interface{}) (message string) { - return fmt.Sprintf( - "Got stuck at:\n%s\nWaiting for:\n%s", - format.IndentString(string(m.receivedSayings), 1), - format.IndentString(m.re.String(), 1), - ) -} - -func (m *sayMatcher) NegatedFailureMessage(actual interface{}) (message string) { - return fmt.Sprintf( - "Saw:\n%s\nWhich matches the unexpected:\n%s", - format.IndentString(string(m.receivedSayings), 1), - format.IndentString(m.re.String(), 1), - ) -} - -func (m *sayMatcher) MatchMayChangeInTheFuture(actual interface{}) bool { - switch x := actual.(type) { - case *Buffer: - return !x.Closed() - case BufferProvider: - return !x.Buffer().Closed() - default: - return true - } -} diff --git a/vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go b/vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go deleted file mode 100644 index 1361720b..00000000 --- a/vendor/github.com/onsi/gomega/gbytes/say_matcher_test.go +++ /dev/null @@ -1,164 +0,0 @@ -package gbytes_test - -import ( - "time" - - . "github.com/onsi/gomega/gbytes" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -type speaker struct { - buffer *Buffer -} - -func (s *speaker) Buffer() *Buffer { - return s.buffer -} - -var _ = Describe("SayMatcher", func() { - var buffer *Buffer - - BeforeEach(func() { - buffer = NewBuffer() - buffer.Write([]byte("abc")) - }) - - Context("when actual is not a gexec Buffer, or a BufferProvider", func() { - It("should error", func() { - failures := InterceptGomegaFailures(func() { - Ω("foo").Should(Say("foo")) - }) - Ω(failures[0]).Should(ContainSubstring("*gbytes.Buffer")) - }) - }) - - Context("when a match is found", func() { - It("should succeed", func() { - Ω(buffer).Should(Say("abc")) - }) - - It("should support printf-like formatting", func() { - Ω(buffer).Should(Say("a%sc", "b")) - }) - - It("should use a regular expression", func() { - Ω(buffer).Should(Say("a.c")) - }) - - It("should fastforward the buffer", func() { - buffer.Write([]byte("def")) - Ω(buffer).Should(Say("abcd")) - Ω(buffer).Should(Say("ef")) - Ω(buffer).ShouldNot(Say("[a-z]")) - }) - }) - - Context("when no match is found", func() { - It("should not error", func() { - Ω(buffer).ShouldNot(Say("def")) - }) - - Context("when the buffer is closed", func() { - BeforeEach(func() { - buffer.Close() - }) - - It("should abort an eventually", func() { - t := time.Now() - failures := InterceptGomegaFailures(func() { - Eventually(buffer).Should(Say("def")) - }) - Eventually(buffer).ShouldNot(Say("def")) - Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond)) - Ω(failures).Should(HaveLen(1)) - - t = time.Now() - Eventually(buffer).Should(Say("abc")) - Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond)) - }) - - It("should abort a consistently", func() { - t := time.Now() - Consistently(buffer, 2.0).ShouldNot(Say("def")) - Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond)) - }) - - It("should not error with a synchronous matcher", func() { - Ω(buffer).ShouldNot(Say("def")) - Ω(buffer).Should(Say("abc")) - }) - }) - }) - - Context("when a positive match fails", func() { - It("should report where it got stuck", func() { - Ω(buffer).Should(Say("abc")) - buffer.Write([]byte("def")) - failures := InterceptGomegaFailures(func() { - Ω(buffer).Should(Say("abc")) - }) - Ω(failures[0]).Should(ContainSubstring("Got stuck at:")) - Ω(failures[0]).Should(ContainSubstring("def")) - }) - }) - - Context("when a negative match fails", func() { - It("should report where it got stuck", func() { - failures := InterceptGomegaFailures(func() { - Ω(buffer).ShouldNot(Say("abc")) - }) - Ω(failures[0]).Should(ContainSubstring("Saw:")) - Ω(failures[0]).Should(ContainSubstring("Which matches the unexpected:")) - Ω(failures[0]).Should(ContainSubstring("abc")) - }) - }) - - Context("when a match is not found", func() { - It("should not fastforward the buffer", func() { - Ω(buffer).ShouldNot(Say("def")) - Ω(buffer).Should(Say("abc")) - }) - }) - - Context("a nice real-life example", func() { - It("should behave well", func() { - Ω(buffer).Should(Say("abc")) - go func() { - time.Sleep(10 * time.Millisecond) - buffer.Write([]byte("def")) - }() - Ω(buffer).ShouldNot(Say("def")) - Eventually(buffer).Should(Say("def")) - }) - }) - - Context("when actual is a BufferProvider", func() { - It("should use actual's buffer", func() { - s := &speaker{ - buffer: NewBuffer(), - } - - Ω(s).ShouldNot(Say("abc")) - - s.Buffer().Write([]byte("abc")) - Ω(s).Should(Say("abc")) - }) - - It("should abort an eventually", func() { - s := &speaker{ - buffer: NewBuffer(), - } - - s.buffer.Close() - - t := time.Now() - failures := InterceptGomegaFailures(func() { - Eventually(s).Should(Say("def")) - }) - Ω(failures).Should(HaveLen(1)) - Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond)) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go b/vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go deleted file mode 100644 index 16091c22..00000000 --- a/vendor/github.com/onsi/gomega/gexec/_fixture/firefly/main.go +++ /dev/null @@ -1,36 +0,0 @@ -package main - -import ( - "fmt" - "math/rand" - "os" - "strconv" - "time" -) - -var outQuote = "We've done the impossible, and that makes us mighty." -var errQuote = "Ah, curse your sudden but inevitable betrayal!" - -var randomQuotes = []string{ - "Can we maybe vote on the whole murdering people issue?", - "I swear by my pretty floral bonnet, I will end you.", - "My work's illegal, but at least it's honest.", -} - -func main() { - fmt.Fprintln(os.Stdout, outQuote) - fmt.Fprintln(os.Stderr, errQuote) - - randomIndex := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(randomQuotes)) - - time.Sleep(100 * time.Millisecond) - - fmt.Fprintln(os.Stdout, randomQuotes[randomIndex]) - - if len(os.Args) == 2 { - exitCode, _ := strconv.Atoi(os.Args[1]) - os.Exit(exitCode) - } else { - os.Exit(randomIndex) - } -} diff --git a/vendor/github.com/onsi/gomega/gexec/build.go b/vendor/github.com/onsi/gomega/gexec/build.go deleted file mode 100644 index 869c1ead..00000000 --- a/vendor/github.com/onsi/gomega/gexec/build.go +++ /dev/null @@ -1,112 +0,0 @@ -package gexec - -import ( - "errors" - "fmt" - "go/build" - "io/ioutil" - "os" - "os/exec" - "path" - "path/filepath" - "runtime" - "strings" - "sync" -) - -var ( - mu sync.Mutex - tmpDir string -) - -/* -Build uses go build to compile the package at packagePath. The resulting binary is saved off in a temporary directory. -A path pointing to this binary is returned. - -Build uses the $GOPATH set in your environment. If $GOPATH is not set and you are using Go 1.8+, -it will use the default GOPATH instead. It passes the variadic args on to `go build`. -*/ -func Build(packagePath string, args ...string) (compiledPath string, err error) { - return doBuild(build.Default.GOPATH, packagePath, nil, args...) -} - -/* -BuildWithEnvironment is identical to Build but allows you to specify env vars to be set at build time. -*/ -func BuildWithEnvironment(packagePath string, env []string, args ...string) (compiledPath string, err error) { - return doBuild(build.Default.GOPATH, packagePath, env, args...) -} - -/* -BuildIn is identical to Build but allows you to specify a custom $GOPATH (the first argument). -*/ -func BuildIn(gopath string, packagePath string, args ...string) (compiledPath string, err error) { - return doBuild(gopath, packagePath, nil, args...) -} - -func replaceGoPath(environ []string, newGoPath string) []string { - newEnviron := []string{} - for _, v := range environ { - if !strings.HasPrefix(v, "GOPATH=") { - newEnviron = append(newEnviron, v) - } - } - return append(newEnviron, "GOPATH="+newGoPath) -} - -func doBuild(gopath, packagePath string, env []string, args ...string) (compiledPath string, err error) { - tmpDir, err := temporaryDirectory() - if err != nil { - return "", err - } - - if len(gopath) == 0 { - return "", errors.New("$GOPATH not provided when building " + packagePath) - } - - executable := filepath.Join(tmpDir, path.Base(packagePath)) - if runtime.GOOS == "windows" { - executable = executable + ".exe" - } - - cmdArgs := append([]string{"build"}, args...) - cmdArgs = append(cmdArgs, "-o", executable, packagePath) - - build := exec.Command("go", cmdArgs...) - build.Env = replaceGoPath(os.Environ(), gopath) - build.Env = append(build.Env, env...) - - output, err := build.CombinedOutput() - if err != nil { - return "", fmt.Errorf("Failed to build %s:\n\nError:\n%s\n\nOutput:\n%s", packagePath, err, string(output)) - } - - return executable, nil -} - -/* -You should call CleanupBuildArtifacts before your test ends to clean up any temporary artifacts generated by -gexec. In Ginkgo this is typically done in an AfterSuite callback. -*/ -func CleanupBuildArtifacts() { - mu.Lock() - defer mu.Unlock() - if tmpDir != "" { - os.RemoveAll(tmpDir) - tmpDir = "" - } -} - -func temporaryDirectory() (string, error) { - var err error - mu.Lock() - defer mu.Unlock() - if tmpDir == "" { - tmpDir, err = ioutil.TempDir("", "gexec_artifacts") - if err != nil { - return "", err - } - } - - return ioutil.TempDir(tmpDir, "g") -} diff --git a/vendor/github.com/onsi/gomega/gexec/build_test.go b/vendor/github.com/onsi/gomega/gexec/build_test.go deleted file mode 100644 index 673155ca..00000000 --- a/vendor/github.com/onsi/gomega/gexec/build_test.go +++ /dev/null @@ -1,87 +0,0 @@ -package gexec_test - -import ( - "os" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" -) - -var packagePath = "./_fixture/firefly" - -var _ = Describe(".Build", func() { - Context("when there have been previous calls to Build", func() { - BeforeEach(func() { - _, err := gexec.Build(packagePath) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("compiles the specified package", func() { - compiledPath, err := gexec.Build(packagePath) - Ω(err).ShouldNot(HaveOccurred()) - Ω(compiledPath).Should(BeAnExistingFile()) - }) - - Context("and CleanupBuildArtifacts has been called", func() { - BeforeEach(func() { - gexec.CleanupBuildArtifacts() - }) - - It("compiles the specified package", func() { - var err error - fireflyPath, err = gexec.Build(packagePath) - Ω(err).ShouldNot(HaveOccurred()) - Ω(fireflyPath).Should(BeAnExistingFile()) - }) - }) - }) -}) - -var _ = Describe(".BuildWithEnvironment", func() { - var err error - env := []string{ - "GOOS=linux", - "GOARCH=amd64", - } - - It("compiles the specified package with the specified env vars", func() { - compiledPath, err := gexec.BuildWithEnvironment(packagePath, env) - Ω(err).ShouldNot(HaveOccurred()) - Ω(compiledPath).Should(BeAnExistingFile()) - }) - - It("returns the environment to a good state", func() { - _, err = gexec.BuildWithEnvironment(packagePath, env) - Ω(err).ShouldNot(HaveOccurred()) - Ω(os.Environ()).ShouldNot(ContainElement("GOOS=linux")) - }) -}) - -var _ = Describe(".BuildIn", func() { - var ( - gopath string - ) - - BeforeEach(func() { - gopath = os.Getenv("GOPATH") - Expect(gopath).NotTo(BeEmpty()) - Expect(os.Setenv("GOPATH", "/tmp")).To(Succeed()) - Expect(os.Environ()).To(ContainElement("GOPATH=/tmp")) - }) - - AfterEach(func() { - Expect(os.Setenv("GOPATH", gopath)).To(Succeed()) - }) - - It("appends the gopath env var", func() { - _, err := gexec.BuildIn(gopath, "github.com/onsi/gomega/gexec/_fixture/firefly/") - Expect(err).NotTo(HaveOccurred()) - }) - - It("resets GOPATH to its original value", func() { - _, err := gexec.BuildIn(gopath, "github.com/onsi/gomega/gexec/_fixture/firefly/") - Expect(err).NotTo(HaveOccurred()) - Expect(os.Getenv("GOPATH")).To(Equal("/tmp")) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gexec/exit_matcher.go b/vendor/github.com/onsi/gomega/gexec/exit_matcher.go deleted file mode 100644 index d872ec8f..00000000 --- a/vendor/github.com/onsi/gomega/gexec/exit_matcher.go +++ /dev/null @@ -1,86 +0,0 @@ -package gexec - -import ( - "fmt" - - "github.com/onsi/gomega/format" -) - -/* -The Exit matcher operates on a session: - - Ω(session).Should(Exit()) - -Exit passes if the session has already exited. - -If no status code is provided, then Exit will succeed if the session has exited regardless of exit code. -Otherwise, Exit will only succeed if the process has exited with the provided status code. - -Note that the process must have already exited. To wait for a process to exit, use Eventually: - - Eventually(session, 3).Should(Exit(0)) -*/ -func Exit(optionalExitCode ...int) *exitMatcher { - exitCode := -1 - if len(optionalExitCode) > 0 { - exitCode = optionalExitCode[0] - } - - return &exitMatcher{ - exitCode: exitCode, - } -} - -type exitMatcher struct { - exitCode int - didExit bool - actualExitCode int -} - -type Exiter interface { - ExitCode() int -} - -func (m *exitMatcher) Match(actual interface{}) (success bool, err error) { - exiter, ok := actual.(Exiter) - if !ok { - return false, fmt.Errorf("Exit must be passed a gexec.Exiter (Missing method ExitCode() int) Got:\n%s", format.Object(actual, 1)) - } - - m.actualExitCode = exiter.ExitCode() - - if m.actualExitCode == -1 { - return false, nil - } - - if m.exitCode == -1 { - return true, nil - } - return m.exitCode == m.actualExitCode, nil -} - -func (m *exitMatcher) FailureMessage(actual interface{}) (message string) { - if m.actualExitCode == -1 { - return "Expected process to exit. It did not." - } - return format.Message(m.actualExitCode, "to match exit code:", m.exitCode) -} - -func (m *exitMatcher) NegatedFailureMessage(actual interface{}) (message string) { - if m.actualExitCode == -1 { - return "you really shouldn't be able to see this!" - } else { - if m.exitCode == -1 { - return "Expected process not to exit. It did." - } - return format.Message(m.actualExitCode, "not to match exit code:", m.exitCode) - } -} - -func (m *exitMatcher) MatchMayChangeInTheFuture(actual interface{}) bool { - session, ok := actual.(*Session) - if ok { - return session.ExitCode() == -1 - } - return true -} diff --git a/vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go b/vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go deleted file mode 100644 index 9605ab70..00000000 --- a/vendor/github.com/onsi/gomega/gexec/exit_matcher_test.go +++ /dev/null @@ -1,114 +0,0 @@ -package gexec_test - -import ( - "os/exec" - "time" - - . "github.com/onsi/gomega/gexec" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -type NeverExits struct{} - -func (e NeverExits) ExitCode() int { - return -1 -} - -var _ = Describe("ExitMatcher", func() { - var command *exec.Cmd - var session *Session - - BeforeEach(func() { - var err error - command = exec.Command(fireflyPath, "0") - session, err = Start(command, nil, nil) - Ω(err).ShouldNot(HaveOccurred()) - }) - - Describe("when passed something that is an Exiter", func() { - It("should act normally", func() { - failures := InterceptGomegaFailures(func() { - Ω(NeverExits{}).Should(Exit()) - }) - - Ω(failures[0]).Should(ContainSubstring("Expected process to exit. It did not.")) - }) - }) - - Describe("when passed something that is not an Exiter", func() { - It("should error", func() { - failures := InterceptGomegaFailures(func() { - Ω("aardvark").Should(Exit()) - }) - - Ω(failures[0]).Should(ContainSubstring("Exit must be passed a gexec.Exiter")) - }) - }) - - Context("with no exit code", func() { - It("should say the right things when it fails", func() { - Ω(session).ShouldNot(Exit()) - - failures := InterceptGomegaFailures(func() { - Ω(session).Should(Exit()) - }) - - Ω(failures[0]).Should(ContainSubstring("Expected process to exit. It did not.")) - - Eventually(session).Should(Exit()) - - Ω(session).Should(Exit()) - - failures = InterceptGomegaFailures(func() { - Ω(session).ShouldNot(Exit()) - }) - - Ω(failures[0]).Should(ContainSubstring("Expected process not to exit. It did.")) - }) - }) - - Context("with an exit code", func() { - It("should say the right things when it fails", func() { - Ω(session).ShouldNot(Exit(0)) - Ω(session).ShouldNot(Exit(1)) - - failures := InterceptGomegaFailures(func() { - Ω(session).Should(Exit(0)) - }) - - Ω(failures[0]).Should(ContainSubstring("Expected process to exit. It did not.")) - - Eventually(session).Should(Exit(0)) - - Ω(session).Should(Exit(0)) - - failures = InterceptGomegaFailures(func() { - Ω(session).Should(Exit(1)) - }) - - Ω(failures[0]).Should(ContainSubstring("to match exit code:")) - - Ω(session).ShouldNot(Exit(1)) - - failures = InterceptGomegaFailures(func() { - Ω(session).ShouldNot(Exit(0)) - }) - - Ω(failures[0]).Should(ContainSubstring("not to match exit code:")) - }) - }) - - Describe("bailing out early", func() { - It("should bail out early once the process exits", func() { - t := time.Now() - - failures := InterceptGomegaFailures(func() { - Eventually(session).Should(Exit(1)) - }) - Ω(time.Since(t)).Should(BeNumerically("<=", 500*time.Millisecond)) - Ω(failures).Should(HaveLen(1)) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go b/vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go deleted file mode 100644 index 87672aaf..00000000 --- a/vendor/github.com/onsi/gomega/gexec/gexec_suite_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package gexec_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gexec" - - "testing" -) - -var fireflyPath string - -func TestGexec(t *testing.T) { - BeforeSuite(func() { - var err error - fireflyPath, err = gexec.Build("./_fixture/firefly") - Ω(err).ShouldNot(HaveOccurred()) - }) - - AfterSuite(func() { - gexec.CleanupBuildArtifacts() - }) - - RegisterFailHandler(Fail) - RunSpecs(t, "Gexec Suite") -} diff --git a/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go b/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go deleted file mode 100644 index 05e695ab..00000000 --- a/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go +++ /dev/null @@ -1,53 +0,0 @@ -package gexec - -import ( - "io" - "sync" -) - -/* -PrefixedWriter wraps an io.Writer, emiting the passed in prefix at the beginning of each new line. -This can be useful when running multiple gexec.Sessions concurrently - you can prefix the log output of each -session by passing in a PrefixedWriter: - -gexec.Start(cmd, NewPrefixedWriter("[my-cmd] ", GinkgoWriter), NewPrefixedWriter("[my-cmd] ", GinkgoWriter)) -*/ -type PrefixedWriter struct { - prefix []byte - writer io.Writer - lock *sync.Mutex - atStartOfLine bool -} - -func NewPrefixedWriter(prefix string, writer io.Writer) *PrefixedWriter { - return &PrefixedWriter{ - prefix: []byte(prefix), - writer: writer, - lock: &sync.Mutex{}, - atStartOfLine: true, - } -} - -func (w *PrefixedWriter) Write(b []byte) (int, error) { - w.lock.Lock() - defer w.lock.Unlock() - - toWrite := []byte{} - - for _, c := range b { - if w.atStartOfLine { - toWrite = append(toWrite, w.prefix...) - } - - toWrite = append(toWrite, c) - - w.atStartOfLine = c == '\n' - } - - _, err := w.writer.Write(toWrite) - if err != nil { - return 0, err - } - - return len(b), nil -} diff --git a/vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go b/vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go deleted file mode 100644 index 8657d0c9..00000000 --- a/vendor/github.com/onsi/gomega/gexec/prefixed_writer_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package gexec_test - -import ( - "bytes" - - . "github.com/onsi/gomega/gexec" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("PrefixedWriter", func() { - var buffer *bytes.Buffer - var writer *PrefixedWriter - BeforeEach(func() { - buffer = &bytes.Buffer{} - writer = NewPrefixedWriter("[p]", buffer) - }) - - It("should emit the prefix on newlines", func() { - writer.Write([]byte("abc")) - writer.Write([]byte("def\n")) - writer.Write([]byte("hij\n")) - writer.Write([]byte("\n\n")) - writer.Write([]byte("klm\n\nnop")) - writer.Write([]byte("")) - writer.Write([]byte("qrs")) - writer.Write([]byte("\ntuv\nwx")) - writer.Write([]byte("yz\n\n")) - - Ω(buffer.String()).Should(Equal(`[p]abcdef -[p]hij -[p] -[p] -[p]klm -[p] -[p]nopqrs -[p]tuv -[p]wxyz -[p] -`)) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gexec/session.go b/vendor/github.com/onsi/gomega/gexec/session.go deleted file mode 100644 index b1ae2f40..00000000 --- a/vendor/github.com/onsi/gomega/gexec/session.go +++ /dev/null @@ -1,304 +0,0 @@ -/* -Package gexec provides support for testing external processes. -*/ -package gexec - -import ( - "io" - "os" - "os/exec" - "sync" - "syscall" - - . "github.com/onsi/gomega" - "github.com/onsi/gomega/gbytes" -) - -const INVALID_EXIT_CODE = 254 - -type Session struct { - //The wrapped command - Command *exec.Cmd - - //A *gbytes.Buffer connected to the command's stdout - Out *gbytes.Buffer - - //A *gbytes.Buffer connected to the command's stderr - Err *gbytes.Buffer - - //A channel that will close when the command exits - Exited <-chan struct{} - - lock *sync.Mutex - exitCode int -} - -/* -Start starts the passed-in *exec.Cmd command. It wraps the command in a *gexec.Session. - -The session pipes the command's stdout and stderr to two *gbytes.Buffers available as properties on the session: session.Out and session.Err. -These buffers can be used with the gbytes.Say matcher to match against unread output: - - Ω(session.Out).Should(gbytes.Say("foo-out")) - Ω(session.Err).Should(gbytes.Say("foo-err")) - -In addition, Session satisfies the gbytes.BufferProvider interface and provides the stdout *gbytes.Buffer. This allows you to replace the first line, above, with: - - Ω(session).Should(gbytes.Say("foo-out")) - -When outWriter and/or errWriter are non-nil, the session will pipe stdout and/or stderr output both into the session *gybtes.Buffers and to the passed-in outWriter/errWriter. -This is useful for capturing the process's output or logging it to screen. In particular, when using Ginkgo it can be convenient to direct output to the GinkgoWriter: - - session, err := Start(command, GinkgoWriter, GinkgoWriter) - -This will log output when running tests in verbose mode, but - otherwise - will only log output when a test fails. - -The session wrapper is responsible for waiting on the *exec.Cmd command. You *should not* call command.Wait() yourself. -Instead, to assert that the command has exited you can use the gexec.Exit matcher: - - Ω(session).Should(gexec.Exit()) - -When the session exits it closes the stdout and stderr gbytes buffers. This will short circuit any -Eventuallys waiting for the buffers to Say something. -*/ -func Start(command *exec.Cmd, outWriter io.Writer, errWriter io.Writer) (*Session, error) { - exited := make(chan struct{}) - - session := &Session{ - Command: command, - Out: gbytes.NewBuffer(), - Err: gbytes.NewBuffer(), - Exited: exited, - lock: &sync.Mutex{}, - exitCode: -1, - } - - var commandOut, commandErr io.Writer - - commandOut, commandErr = session.Out, session.Err - - if outWriter != nil { - commandOut = io.MultiWriter(commandOut, outWriter) - } - - if errWriter != nil { - commandErr = io.MultiWriter(commandErr, errWriter) - } - - command.Stdout = commandOut - command.Stderr = commandErr - - err := command.Start() - if err == nil { - go session.monitorForExit(exited) - trackedSessionsMutex.Lock() - defer trackedSessionsMutex.Unlock() - trackedSessions = append(trackedSessions, session) - } - - return session, err -} - -/* -Buffer implements the gbytes.BufferProvider interface and returns s.Out -This allows you to make gbytes.Say matcher assertions against stdout without having to reference .Out: - - Eventually(session).Should(gbytes.Say("foo")) -*/ -func (s *Session) Buffer() *gbytes.Buffer { - return s.Out -} - -/* -ExitCode returns the wrapped command's exit code. If the command hasn't exited yet, ExitCode returns -1. - -To assert that the command has exited it is more convenient to use the Exit matcher: - - Eventually(s).Should(gexec.Exit()) - -When the process exits because it has received a particular signal, the exit code will be 128+signal-value -(See http://www.tldp.org/LDP/abs/html/exitcodes.html and http://man7.org/linux/man-pages/man7/signal.7.html) - -*/ -func (s *Session) ExitCode() int { - s.lock.Lock() - defer s.lock.Unlock() - return s.exitCode -} - -/* -Wait waits until the wrapped command exits. It can be passed an optional timeout. -If the command does not exit within the timeout, Wait will trigger a test failure. - -Wait returns the session, making it possible to chain: - - session.Wait().Out.Contents() - -will wait for the command to exit then return the entirety of Out's contents. - -Wait uses eventually under the hood and accepts the same timeout/polling intervals that eventually does. -*/ -func (s *Session) Wait(timeout ...interface{}) *Session { - EventuallyWithOffset(1, s, timeout...).Should(Exit()) - return s -} - -/* -Kill sends the running command a SIGKILL signal. It does not wait for the process to exit. - -If the command has already exited, Kill returns silently. - -The session is returned to enable chaining. -*/ -func (s *Session) Kill() *Session { - if s.ExitCode() != -1 { - return s - } - s.Command.Process.Kill() - return s -} - -/* -Interrupt sends the running command a SIGINT signal. It does not wait for the process to exit. - -If the command has already exited, Interrupt returns silently. - -The session is returned to enable chaining. -*/ -func (s *Session) Interrupt() *Session { - return s.Signal(syscall.SIGINT) -} - -/* -Terminate sends the running command a SIGTERM signal. It does not wait for the process to exit. - -If the command has already exited, Terminate returns silently. - -The session is returned to enable chaining. -*/ -func (s *Session) Terminate() *Session { - return s.Signal(syscall.SIGTERM) -} - -/* -Signal sends the running command the passed in signal. It does not wait for the process to exit. - -If the command has already exited, Signal returns silently. - -The session is returned to enable chaining. -*/ -func (s *Session) Signal(signal os.Signal) *Session { - if s.ExitCode() != -1 { - return s - } - s.Command.Process.Signal(signal) - return s -} - -func (s *Session) monitorForExit(exited chan<- struct{}) { - err := s.Command.Wait() - s.lock.Lock() - s.Out.Close() - s.Err.Close() - status := s.Command.ProcessState.Sys().(syscall.WaitStatus) - if status.Signaled() { - s.exitCode = 128 + int(status.Signal()) - } else { - exitStatus := status.ExitStatus() - if exitStatus == -1 && err != nil { - s.exitCode = INVALID_EXIT_CODE - } - s.exitCode = exitStatus - } - s.lock.Unlock() - - close(exited) -} - -var trackedSessions = []*Session{} -var trackedSessionsMutex = &sync.Mutex{} - -/* -Kill sends a SIGKILL signal to all the processes started by Run, and waits for them to exit. -The timeout specified is applied to each process killed. - -If any of the processes already exited, KillAndWait returns silently. -*/ -func KillAndWait(timeout ...interface{}) { - trackedSessionsMutex.Lock() - defer trackedSessionsMutex.Unlock() - for _, session := range trackedSessions { - session.Kill().Wait(timeout...) - } - trackedSessions = []*Session{} -} - -/* -Kill sends a SIGTERM signal to all the processes started by Run, and waits for them to exit. -The timeout specified is applied to each process killed. - -If any of the processes already exited, TerminateAndWait returns silently. -*/ -func TerminateAndWait(timeout ...interface{}) { - trackedSessionsMutex.Lock() - defer trackedSessionsMutex.Unlock() - for _, session := range trackedSessions { - session.Terminate().Wait(timeout...) - } -} - -/* -Kill sends a SIGKILL signal to all the processes started by Run. -It does not wait for the processes to exit. - -If any of the processes already exited, Kill returns silently. -*/ -func Kill() { - trackedSessionsMutex.Lock() - defer trackedSessionsMutex.Unlock() - for _, session := range trackedSessions { - session.Kill() - } -} - -/* -Terminate sends a SIGTERM signal to all the processes started by Run. -It does not wait for the processes to exit. - -If any of the processes already exited, Terminate returns silently. -*/ -func Terminate() { - trackedSessionsMutex.Lock() - defer trackedSessionsMutex.Unlock() - for _, session := range trackedSessions { - session.Terminate() - } -} - -/* -Signal sends the passed in signal to all the processes started by Run. -It does not wait for the processes to exit. - -If any of the processes already exited, Signal returns silently. -*/ -func Signal(signal os.Signal) { - trackedSessionsMutex.Lock() - defer trackedSessionsMutex.Unlock() - for _, session := range trackedSessions { - session.Signal(signal) - } -} - -/* -Interrupt sends the SIGINT signal to all the processes started by Run. -It does not wait for the processes to exit. - -If any of the processes already exited, Interrupt returns silently. -*/ -func Interrupt() { - trackedSessionsMutex.Lock() - defer trackedSessionsMutex.Unlock() - for _, session := range trackedSessions { - session.Interrupt() - } -} diff --git a/vendor/github.com/onsi/gomega/gexec/session_test.go b/vendor/github.com/onsi/gomega/gexec/session_test.go deleted file mode 100644 index dabca9e4..00000000 --- a/vendor/github.com/onsi/gomega/gexec/session_test.go +++ /dev/null @@ -1,370 +0,0 @@ -package gexec_test - -import ( - "io" - "io/ioutil" - "os/exec" - "syscall" - "time" - - . "github.com/onsi/gomega/gbytes" - . "github.com/onsi/gomega/gexec" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("Session", func() { - var command *exec.Cmd - var session *Session - - var outWriter, errWriter io.Writer - - BeforeEach(func() { - outWriter = nil - errWriter = nil - }) - - JustBeforeEach(func() { - command = exec.Command(fireflyPath) - var err error - session, err = Start(command, outWriter, errWriter) - Ω(err).ShouldNot(HaveOccurred()) - }) - - Context("running a command", func() { - It("should start the process", func() { - Ω(command.Process).ShouldNot(BeNil()) - }) - - It("should wrap the process's stdout and stderr with gbytes buffers", func(done Done) { - Eventually(session.Out).Should(Say("We've done the impossible, and that makes us mighty")) - Eventually(session.Err).Should(Say("Ah, curse your sudden but inevitable betrayal!")) - defer session.Out.CancelDetects() - - select { - case <-session.Out.Detect("Can we maybe vote on the whole murdering people issue"): - Eventually(session).Should(Exit(0)) - case <-session.Out.Detect("I swear by my pretty floral bonnet, I will end you."): - Eventually(session).Should(Exit(1)) - case <-session.Out.Detect("My work's illegal, but at least it's honest."): - Eventually(session).Should(Exit(2)) - } - - close(done) - }) - - It("should satisfy the gbytes.BufferProvider interface, passing Stdout", func() { - Eventually(session).Should(Say("We've done the impossible, and that makes us mighty")) - Eventually(session).Should(Exit()) - }) - }) - - Describe("providing the exit code", func() { - It("should provide the app's exit code", func() { - Ω(session.ExitCode()).Should(Equal(-1)) - - Eventually(session).Should(Exit()) - Ω(session.ExitCode()).Should(BeNumerically(">=", 0)) - Ω(session.ExitCode()).Should(BeNumerically("<", 3)) - }) - }) - - Describe("wait", func() { - It("should wait till the command exits", func() { - Ω(session.ExitCode()).Should(Equal(-1)) - Ω(session.Wait().ExitCode()).Should(BeNumerically(">=", 0)) - Ω(session.Wait().ExitCode()).Should(BeNumerically("<", 3)) - }) - }) - - Describe("exited", func() { - It("should close when the command exits", func() { - Eventually(session.Exited).Should(BeClosed()) - Ω(session.ExitCode()).ShouldNot(Equal(-1)) - }) - }) - - Describe("kill", func() { - It("should kill the command and don't wait for it to exit", func() { - session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session.Kill() - Ω(session).ShouldNot(Exit(), "Should not exit immediately...") - Eventually(session).Should(Exit(128 + 9)) - }) - }) - - Describe("interrupt", func() { - It("should interrupt the command", func() { - session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session.Interrupt() - Ω(session).ShouldNot(Exit(), "Should not exit immediately...") - Eventually(session).Should(Exit(128 + 2)) - }) - }) - - Describe("terminate", func() { - It("should terminate the command", func() { - session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session.Terminate() - Ω(session).ShouldNot(Exit(), "Should not exit immediately...") - Eventually(session).Should(Exit(128 + 15)) - }) - }) - - Describe("signal", func() { - It("should send the signal to the command", func() { - session, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session.Signal(syscall.SIGABRT) - Ω(session).ShouldNot(Exit(), "Should not exit immediately...") - Eventually(session).Should(Exit(128 + 6)) - }) - }) - - Context("tracking sessions", func() { - BeforeEach(func() { - KillAndWait() - }) - - Describe("kill", func() { - It("should kill all the started sessions", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Kill() - - Eventually(session1).Should(Exit(128 + 9)) - Eventually(session2).Should(Exit(128 + 9)) - Eventually(session3).Should(Exit(128 + 9)) - }) - - It("should not wait for exit", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Kill() - Ω(session1).ShouldNot(Exit(), "Should not exit immediately...") - - Eventually(session1).Should(Exit(128 + 9)) - }) - - It("should not track unstarted sessions", func() { - _, err := Start(exec.Command("does not exist", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).Should(HaveOccurred()) - - session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Kill() - - Eventually(session2).Should(Exit(128 + 9)) - Eventually(session3).Should(Exit(128 + 9)) - }) - - }) - - Describe("killAndWait", func() { - It("should kill all the started sessions and wait for them to finish", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - KillAndWait() - Ω(session1).Should(Exit(128+9), "Should have exited") - Ω(session2).Should(Exit(128+9), "Should have exited") - Ω(session3).Should(Exit(128+9), "Should have exited") - }) - }) - - Describe("terminate", func() { - It("should terminate all the started sessions", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Terminate() - - Eventually(session1).Should(Exit(128 + 15)) - Eventually(session2).Should(Exit(128 + 15)) - Eventually(session3).Should(Exit(128 + 15)) - }) - - It("should not wait for exit", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Terminate() - - Ω(session1).ShouldNot(Exit(), "Should not exit immediately...") - }) - }) - - Describe("terminateAndWait", func() { - It("should terminate all the started sessions, and wait for them to exit", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - TerminateAndWait() - - Ω(session1).Should(Exit(128+15), "Should have exited") - Ω(session2).Should(Exit(128+15), "Should have exited") - Ω(session3).Should(Exit(128+15), "Should have exited") - }) - }) - - Describe("signal", func() { - It("should signal all the started sessions", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Signal(syscall.SIGABRT) - - Eventually(session1).Should(Exit(128 + 6)) - Eventually(session2).Should(Exit(128 + 6)) - Eventually(session3).Should(Exit(128 + 6)) - }) - - It("should not wait", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Signal(syscall.SIGABRT) - - Ω(session1).ShouldNot(Exit(), "Should not exit immediately...") - }) - }) - - Describe("interrupt", func() { - It("should interrupt all the started sessions, and not wait", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session2, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - session3, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Interrupt() - - Eventually(session1).Should(Exit(128 + 2)) - Eventually(session2).Should(Exit(128 + 2)) - Eventually(session3).Should(Exit(128 + 2)) - }) - - It("should not wait", func() { - session1, err := Start(exec.Command("sleep", "10000000"), GinkgoWriter, GinkgoWriter) - Ω(err).ShouldNot(HaveOccurred()) - - Interrupt() - - Ω(session1).ShouldNot(Exit(), "Should not exit immediately...") - }) - }) - }) - - Context("when the command exits", func() { - It("should close the buffers", func() { - Eventually(session).Should(Exit()) - - Ω(session.Out.Closed()).Should(BeTrue()) - Ω(session.Err.Closed()).Should(BeTrue()) - - Ω(session.Out).Should(Say("We've done the impossible, and that makes us mighty")) - }) - - var So = It - - So("this means that eventually should short circuit", func() { - t := time.Now() - failures := InterceptGomegaFailures(func() { - Eventually(session).Should(Say("blah blah blah blah blah")) - }) - Ω(time.Since(t)).Should(BeNumerically("<=", 500*time.Millisecond)) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Context("when wrapping out and err", func() { - var ( - outWriterBuffer, errWriterBuffer *Buffer - ) - - BeforeEach(func() { - outWriterBuffer = NewBuffer() - outWriter = outWriterBuffer - errWriterBuffer = NewBuffer() - errWriter = errWriterBuffer - }) - - It("should route to both the provided writers and the gbytes buffers", func() { - Eventually(session.Out).Should(Say("We've done the impossible, and that makes us mighty")) - Eventually(session.Err).Should(Say("Ah, curse your sudden but inevitable betrayal!")) - - Ω(outWriterBuffer.Contents()).Should(ContainSubstring("We've done the impossible, and that makes us mighty")) - Ω(errWriterBuffer.Contents()).Should(ContainSubstring("Ah, curse your sudden but inevitable betrayal!")) - - Eventually(session).Should(Exit()) - - Ω(outWriterBuffer.Contents()).Should(Equal(session.Out.Contents())) - Ω(errWriterBuffer.Contents()).Should(Equal(session.Err.Contents())) - }) - - Context("when discarding the output of the command", func() { - BeforeEach(func() { - outWriter = ioutil.Discard - errWriter = ioutil.Discard - }) - - It("executes succesfuly", func() { - Eventually(session).Should(Exit()) - }) - }) - }) - - Describe("when the command fails to start", func() { - It("should return an error", func() { - _, err := Start(exec.Command("agklsjdfas"), nil, nil) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/ghttp/handlers.go b/vendor/github.com/onsi/gomega/ghttp/handlers.go deleted file mode 100644 index 63ff6919..00000000 --- a/vendor/github.com/onsi/gomega/ghttp/handlers.go +++ /dev/null @@ -1,313 +0,0 @@ -package ghttp - -import ( - "encoding/base64" - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "net/url" - "reflect" - - "github.com/golang/protobuf/proto" - . "github.com/onsi/gomega" - "github.com/onsi/gomega/types" -) - -//CombineHandler takes variadic list of handlers and produces one handler -//that calls each handler in order. -func CombineHandlers(handlers ...http.HandlerFunc) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - for _, handler := range handlers { - handler(w, req) - } - } -} - -//VerifyRequest returns a handler that verifies that a request uses the specified method to connect to the specified path -//You may also pass in an optional rawQuery string which is tested against the request's `req.URL.RawQuery` -// -//For path, you may pass in a string, in which case strict equality will be applied -//Alternatively you can pass in a matcher (ContainSubstring("/foo") and MatchRegexp("/foo/[a-f0-9]+") for example) -func VerifyRequest(method string, path interface{}, rawQuery ...string) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - Ω(req.Method).Should(Equal(method), "Method mismatch") - switch p := path.(type) { - case types.GomegaMatcher: - Ω(req.URL.Path).Should(p, "Path mismatch") - default: - Ω(req.URL.Path).Should(Equal(path), "Path mismatch") - } - if len(rawQuery) > 0 { - values, err := url.ParseQuery(rawQuery[0]) - Ω(err).ShouldNot(HaveOccurred(), "Expected RawQuery is malformed") - - Ω(req.URL.Query()).Should(Equal(values), "RawQuery mismatch") - } - } -} - -//VerifyContentType returns a handler that verifies that a request has a Content-Type header set to the -//specified value -func VerifyContentType(contentType string) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - Ω(req.Header.Get("Content-Type")).Should(Equal(contentType)) - } -} - -//VerifyBasicAuth returns a handler that verifies the request contains a BasicAuth Authorization header -//matching the passed in username and password -func VerifyBasicAuth(username string, password string) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - auth := req.Header.Get("Authorization") - Ω(auth).ShouldNot(Equal(""), "Authorization header must be specified") - - decoded, err := base64.StdEncoding.DecodeString(auth[6:]) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(string(decoded)).Should(Equal(fmt.Sprintf("%s:%s", username, password)), "Authorization mismatch") - } -} - -//VerifyHeader returns a handler that verifies the request contains the passed in headers. -//The passed in header keys are first canonicalized via http.CanonicalHeaderKey. -// -//The request must contain *all* the passed in headers, but it is allowed to have additional headers -//beyond the passed in set. -func VerifyHeader(header http.Header) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - for key, values := range header { - key = http.CanonicalHeaderKey(key) - Ω(req.Header[key]).Should(Equal(values), "Header mismatch for key: %s", key) - } - } -} - -//VerifyHeaderKV returns a handler that verifies the request contains a header matching the passed in key and values -//(recall that a `http.Header` is a mapping from string (key) to []string (values)) -//It is a convenience wrapper around `VerifyHeader` that allows you to avoid having to create an `http.Header` object. -func VerifyHeaderKV(key string, values ...string) http.HandlerFunc { - return VerifyHeader(http.Header{key: values}) -} - -//VerifyBody returns a handler that verifies that the body of the request matches the passed in byte array. -//It does this using Equal(). -func VerifyBody(expectedBody []byte) http.HandlerFunc { - return CombineHandlers( - func(w http.ResponseWriter, req *http.Request) { - body, err := ioutil.ReadAll(req.Body) - req.Body.Close() - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(Equal(expectedBody), "Body Mismatch") - }, - ) -} - -//VerifyJSON returns a handler that verifies that the body of the request is a valid JSON representation -//matching the passed in JSON string. It does this using Gomega's MatchJSON method -// -//VerifyJSON also verifies that the request's content type is application/json -func VerifyJSON(expectedJSON string) http.HandlerFunc { - return CombineHandlers( - VerifyContentType("application/json"), - func(w http.ResponseWriter, req *http.Request) { - body, err := ioutil.ReadAll(req.Body) - req.Body.Close() - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(MatchJSON(expectedJSON), "JSON Mismatch") - }, - ) -} - -//VerifyJSONRepresenting is similar to VerifyJSON. Instead of taking a JSON string, however, it -//takes an arbitrary JSON-encodable object and verifies that the requests's body is a JSON representation -//that matches the object -func VerifyJSONRepresenting(object interface{}) http.HandlerFunc { - data, err := json.Marshal(object) - Ω(err).ShouldNot(HaveOccurred()) - return CombineHandlers( - VerifyContentType("application/json"), - VerifyJSON(string(data)), - ) -} - -//VerifyForm returns a handler that verifies a request contains the specified form values. -// -//The request must contain *all* of the specified values, but it is allowed to have additional -//form values beyond the passed in set. -func VerifyForm(values url.Values) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - err := r.ParseForm() - Ω(err).ShouldNot(HaveOccurred()) - for key, vals := range values { - Ω(r.Form[key]).Should(Equal(vals), "Form mismatch for key: %s", key) - } - } -} - -//VerifyFormKV returns a handler that verifies a request contains a form key with the specified values. -// -//It is a convenience wrapper around `VerifyForm` that lets you avoid having to create a `url.Values` object. -func VerifyFormKV(key string, values ...string) http.HandlerFunc { - return VerifyForm(url.Values{key: values}) -} - -//VerifyProtoRepresenting returns a handler that verifies that the body of the request is a valid protobuf -//representation of the passed message. -// -//VerifyProtoRepresenting also verifies that the request's content type is application/x-protobuf -func VerifyProtoRepresenting(expected proto.Message) http.HandlerFunc { - return CombineHandlers( - VerifyContentType("application/x-protobuf"), - func(w http.ResponseWriter, req *http.Request) { - body, err := ioutil.ReadAll(req.Body) - Ω(err).ShouldNot(HaveOccurred()) - req.Body.Close() - - expectedType := reflect.TypeOf(expected) - actualValuePtr := reflect.New(expectedType.Elem()) - - actual, ok := actualValuePtr.Interface().(proto.Message) - Ω(ok).Should(BeTrue(), "Message value is not a proto.Message") - - err = proto.Unmarshal(body, actual) - Ω(err).ShouldNot(HaveOccurred(), "Failed to unmarshal protobuf") - - Ω(actual).Should(Equal(expected), "ProtoBuf Mismatch") - }, - ) -} - -func copyHeader(src http.Header, dst http.Header) { - for key, value := range src { - dst[key] = value - } -} - -/* -RespondWith returns a handler that responds to a request with the specified status code and body - -Body may be a string or []byte - -Also, RespondWith can be given an optional http.Header. The headers defined therein will be added to the response headers. -*/ -func RespondWith(statusCode int, body interface{}, optionalHeader ...http.Header) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - if len(optionalHeader) == 1 { - copyHeader(optionalHeader[0], w.Header()) - } - w.WriteHeader(statusCode) - switch x := body.(type) { - case string: - w.Write([]byte(x)) - case []byte: - w.Write(x) - default: - Ω(body).Should(BeNil(), "Invalid type for body. Should be string or []byte.") - } - } -} - -/* -RespondWithPtr returns a handler that responds to a request with the specified status code and body - -Unlike RespondWith, you pass RepondWithPtr a pointer to the status code and body allowing different tests -to share the same setup but specify different status codes and bodies. - -Also, RespondWithPtr can be given an optional http.Header. The headers defined therein will be added to the response headers. -Since the http.Header can be mutated after the fact you don't need to pass in a pointer. -*/ -func RespondWithPtr(statusCode *int, body interface{}, optionalHeader ...http.Header) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - if len(optionalHeader) == 1 { - copyHeader(optionalHeader[0], w.Header()) - } - w.WriteHeader(*statusCode) - if body != nil { - switch x := (body).(type) { - case *string: - w.Write([]byte(*x)) - case *[]byte: - w.Write(*x) - default: - Ω(body).Should(BeNil(), "Invalid type for body. Should be string or []byte.") - } - } - } -} - -/* -RespondWithJSONEncoded returns a handler that responds to a request with the specified status code and a body -containing the JSON-encoding of the passed in object - -Also, RespondWithJSONEncoded can be given an optional http.Header. The headers defined therein will be added to the response headers. -*/ -func RespondWithJSONEncoded(statusCode int, object interface{}, optionalHeader ...http.Header) http.HandlerFunc { - data, err := json.Marshal(object) - Ω(err).ShouldNot(HaveOccurred()) - - var headers http.Header - if len(optionalHeader) == 1 { - headers = optionalHeader[0] - } else { - headers = make(http.Header) - } - if _, found := headers["Content-Type"]; !found { - headers["Content-Type"] = []string{"application/json"} - } - return RespondWith(statusCode, string(data), headers) -} - -/* -RespondWithJSONEncodedPtr behaves like RespondWithJSONEncoded but takes a pointer -to a status code and object. - -This allows different tests to share the same setup but specify different status codes and JSON-encoded -objects. - -Also, RespondWithJSONEncodedPtr can be given an optional http.Header. The headers defined therein will be added to the response headers. -Since the http.Header can be mutated after the fact you don't need to pass in a pointer. -*/ -func RespondWithJSONEncodedPtr(statusCode *int, object interface{}, optionalHeader ...http.Header) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - data, err := json.Marshal(object) - Ω(err).ShouldNot(HaveOccurred()) - var headers http.Header - if len(optionalHeader) == 1 { - headers = optionalHeader[0] - } else { - headers = make(http.Header) - } - if _, found := headers["Content-Type"]; !found { - headers["Content-Type"] = []string{"application/json"} - } - copyHeader(headers, w.Header()) - w.WriteHeader(*statusCode) - w.Write(data) - } -} - -//RespondWithProto returns a handler that responds to a request with the specified status code and a body -//containing the protobuf serialization of the provided message. -// -//Also, RespondWithProto can be given an optional http.Header. The headers defined therein will be added to the response headers. -func RespondWithProto(statusCode int, message proto.Message, optionalHeader ...http.Header) http.HandlerFunc { - return func(w http.ResponseWriter, req *http.Request) { - data, err := proto.Marshal(message) - Ω(err).ShouldNot(HaveOccurred()) - - var headers http.Header - if len(optionalHeader) == 1 { - headers = optionalHeader[0] - } else { - headers = make(http.Header) - } - if _, found := headers["Content-Type"]; !found { - headers["Content-Type"] = []string{"application/x-protobuf"} - } - copyHeader(headers, w.Header()) - - w.WriteHeader(statusCode) - w.Write(data) - } -} diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go b/vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go deleted file mode 100644 index b2972bc9..00000000 --- a/vendor/github.com/onsi/gomega/ghttp/protobuf/protobuf.go +++ /dev/null @@ -1,3 +0,0 @@ -package protobuf - -//go:generate protoc --go_out=. simple_message.proto diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go b/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go deleted file mode 100644 index c55a4844..00000000 --- a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.pb.go +++ /dev/null @@ -1,55 +0,0 @@ -// Code generated by protoc-gen-go. -// source: simple_message.proto -// DO NOT EDIT! - -/* -Package protobuf is a generated protocol buffer package. - -It is generated from these files: - simple_message.proto - -It has these top-level messages: - SimpleMessage -*/ -package protobuf - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type SimpleMessage struct { - Description *string `protobuf:"bytes,1,req,name=description" json:"description,omitempty"` - Id *int32 `protobuf:"varint,2,req,name=id" json:"id,omitempty"` - Metadata *string `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SimpleMessage) Reset() { *m = SimpleMessage{} } -func (m *SimpleMessage) String() string { return proto.CompactTextString(m) } -func (*SimpleMessage) ProtoMessage() {} - -func (m *SimpleMessage) GetDescription() string { - if m != nil && m.Description != nil { - return *m.Description - } - return "" -} - -func (m *SimpleMessage) GetId() int32 { - if m != nil && m.Id != nil { - return *m.Id - } - return 0 -} - -func (m *SimpleMessage) GetMetadata() string { - if m != nil && m.Metadata != nil { - return *m.Metadata - } - return "" -} diff --git a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto b/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto deleted file mode 100644 index 35b7145c..00000000 --- a/vendor/github.com/onsi/gomega/ghttp/protobuf/simple_message.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto2"; - -package protobuf; - -message SimpleMessage { - required string description = 1; - required int32 id = 2; - optional string metadata = 3; -} diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server.go b/vendor/github.com/onsi/gomega/ghttp/test_server.go deleted file mode 100644 index 40d92dea..00000000 --- a/vendor/github.com/onsi/gomega/ghttp/test_server.go +++ /dev/null @@ -1,381 +0,0 @@ -/* -Package ghttp supports testing HTTP clients by providing a test server (simply a thin wrapper around httptest's server) that supports -registering multiple handlers. Incoming requests are not routed between the different handlers -- rather it is merely the order of the handlers that matters. The first request is handled by the first -registered handler, the second request by the second handler, etc. - -The intent here is to have each handler *verify* that the incoming request is valid. To accomplish, ghttp -also provides a collection of bite-size handlers that each perform one aspect of request verification. These can -be composed together and registered with a ghttp server. The result is an expressive language for describing -the requests generated by the client under test. - -Here's a simple example, note that the server handler is only defined in one BeforeEach and then modified, as required, by the nested BeforeEaches. -A more comprehensive example is available at https://onsi.github.io/gomega/#_testing_http_clients - - var _ = Describe("A Sprockets Client", func() { - var server *ghttp.Server - var client *SprocketClient - BeforeEach(func() { - server = ghttp.NewServer() - client = NewSprocketClient(server.URL(), "skywalker", "tk427") - }) - - AfterEach(func() { - server.Close() - }) - - Describe("fetching sprockets", func() { - var statusCode int - var sprockets []Sprocket - BeforeEach(func() { - statusCode = http.StatusOK - sprockets = []Sprocket{} - server.AppendHandlers(ghttp.CombineHandlers( - ghttp.VerifyRequest("GET", "/sprockets"), - ghttp.VerifyBasicAuth("skywalker", "tk427"), - ghttp.RespondWithJSONEncodedPtr(&statusCode, &sprockets), - )) - }) - - Context("when requesting all sprockets", func() { - Context("when the response is succesful", func() { - BeforeEach(func() { - sprockets = []Sprocket{ - NewSprocket("Alfalfa"), - NewSprocket("Banana"), - } - }) - - It("should return the returned sprockets", func() { - Ω(client.Sprockets()).Should(Equal(sprockets)) - }) - }) - - Context("when the response is missing", func() { - BeforeEach(func() { - statusCode = http.StatusNotFound - }) - - It("should return an empty list of sprockets", func() { - Ω(client.Sprockets()).Should(BeEmpty()) - }) - }) - - Context("when the response fails to authenticate", func() { - BeforeEach(func() { - statusCode = http.StatusUnauthorized - }) - - It("should return an AuthenticationError error", func() { - sprockets, err := client.Sprockets() - Ω(sprockets).Should(BeEmpty()) - Ω(err).Should(MatchError(AuthenticationError)) - }) - }) - - Context("when the response is a server failure", func() { - BeforeEach(func() { - statusCode = http.StatusInternalServerError - }) - - It("should return an InternalError error", func() { - sprockets, err := client.Sprockets() - Ω(sprockets).Should(BeEmpty()) - Ω(err).Should(MatchError(InternalError)) - }) - }) - }) - - Context("when requesting some sprockets", func() { - BeforeEach(func() { - sprockets = []Sprocket{ - NewSprocket("Alfalfa"), - NewSprocket("Banana"), - } - - server.WrapHandler(0, ghttp.VerifyRequest("GET", "/sprockets", "filter=FOOD")) - }) - - It("should make the request with a filter", func() { - Ω(client.Sprockets("food")).Should(Equal(sprockets)) - }) - }) - }) - }) -*/ -package ghttp - -import ( - "fmt" - "io" - "io/ioutil" - "net/http" - "net/http/httptest" - "reflect" - "regexp" - "strings" - "sync" - - . "github.com/onsi/gomega" -) - -func new() *Server { - return &Server{ - AllowUnhandledRequests: false, - UnhandledRequestStatusCode: http.StatusInternalServerError, - writeLock: &sync.Mutex{}, - } -} - -type routedHandler struct { - method string - pathRegexp *regexp.Regexp - path string - handler http.HandlerFunc -} - -// NewServer returns a new `*ghttp.Server` that wraps an `httptest` server. The server is started automatically. -func NewServer() *Server { - s := new() - s.HTTPTestServer = httptest.NewServer(s) - return s -} - -// NewUnstartedServer return a new, unstarted, `*ghttp.Server`. Useful for specifying a custom listener on `server.HTTPTestServer`. -func NewUnstartedServer() *Server { - s := new() - s.HTTPTestServer = httptest.NewUnstartedServer(s) - return s -} - -// NewTLSServer returns a new `*ghttp.Server` that wraps an `httptest` TLS server. The server is started automatically. -func NewTLSServer() *Server { - s := new() - s.HTTPTestServer = httptest.NewTLSServer(s) - return s -} - -type Server struct { - //The underlying httptest server - HTTPTestServer *httptest.Server - - //Defaults to false. If set to true, the Server will allow more requests than there are registered handlers. - AllowUnhandledRequests bool - - //The status code returned when receiving an unhandled request. - //Defaults to http.StatusInternalServerError. - //Only applies if AllowUnhandledRequests is true - UnhandledRequestStatusCode int - - //If provided, ghttp will log about each request received to the provided io.Writer - //Defaults to nil - //If you're using Ginkgo, set this to GinkgoWriter to get improved output during failures - Writer io.Writer - - receivedRequests []*http.Request - requestHandlers []http.HandlerFunc - routedHandlers []routedHandler - - writeLock *sync.Mutex - calls int -} - -//Start() starts an unstarted ghttp server. It is a catastrophic error to call Start more than once (thanks, httptest). -func (s *Server) Start() { - s.HTTPTestServer.Start() -} - -//URL() returns a url that will hit the server -func (s *Server) URL() string { - return s.HTTPTestServer.URL -} - -//Addr() returns the address on which the server is listening. -func (s *Server) Addr() string { - return s.HTTPTestServer.Listener.Addr().String() -} - -//Close() should be called at the end of each test. It spins down and cleans up the test server. -func (s *Server) Close() { - s.writeLock.Lock() - server := s.HTTPTestServer - s.HTTPTestServer = nil - s.writeLock.Unlock() - - if server != nil { - server.Close() - } -} - -//ServeHTTP() makes Server an http.Handler -//When the server receives a request it handles the request in the following order: -// -//1. If the request matches a handler registered with RouteToHandler, that handler is called. -//2. Otherwise, if there are handlers registered via AppendHandlers, those handlers are called in order. -//3. If all registered handlers have been called then: -// a) If AllowUnhandledRequests is true, the request will be handled with response code of UnhandledRequestStatusCode -// b) If AllowUnhandledRequests is false, the request will not be handled and the current test will be marked as failed. -func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) { - s.writeLock.Lock() - defer func() { - e := recover() - if e != nil { - w.WriteHeader(http.StatusInternalServerError) - } - - //If the handler panics GHTTP will silently succeed. This is bad™. - //To catch this case we need to fail the test if the handler has panicked. - //However, if the handler is panicking because Ginkgo's causing it to panic (i.e. an assertion failed) - //then we shouldn't double-report the error as this will confuse people. - - //So: step 1, if this is a Ginkgo panic - do nothing, Ginkgo's aware of the failure - eAsString, ok := e.(string) - if ok && strings.Contains(eAsString, "defer GinkgoRecover()") { - return - } - - //If we're here, we have to do step 2: assert that the error is nil. This assertion will - //allow us to fail the test suite (note: we can't call Fail since Gomega is not allowed to import Ginkgo). - //Since a failed assertion throws a panic, and we are likely in a goroutine, we need to defer within our defer! - defer func() { - recover() - }() - Ω(e).Should(BeNil(), "Handler Panicked") - }() - - if s.Writer != nil { - s.Writer.Write([]byte(fmt.Sprintf("GHTTP Received Request: %s - %s\n", req.Method, req.URL))) - } - - s.receivedRequests = append(s.receivedRequests, req) - if routedHandler, ok := s.handlerForRoute(req.Method, req.URL.Path); ok { - s.writeLock.Unlock() - routedHandler(w, req) - } else if s.calls < len(s.requestHandlers) { - h := s.requestHandlers[s.calls] - s.calls++ - s.writeLock.Unlock() - h(w, req) - } else { - s.writeLock.Unlock() - if s.AllowUnhandledRequests { - ioutil.ReadAll(req.Body) - req.Body.Close() - w.WriteHeader(s.UnhandledRequestStatusCode) - } else { - Ω(req).Should(BeNil(), "Received Unhandled Request") - } - } -} - -//ReceivedRequests is an array containing all requests received by the server (both handled and unhandled requests) -func (s *Server) ReceivedRequests() []*http.Request { - s.writeLock.Lock() - defer s.writeLock.Unlock() - - return s.receivedRequests -} - -//RouteToHandler can be used to register handlers that will always handle requests that match -//the passed in method and path. -// -//The path may be either a string object or a *regexp.Regexp. -func (s *Server) RouteToHandler(method string, path interface{}, handler http.HandlerFunc) { - s.writeLock.Lock() - defer s.writeLock.Unlock() - - rh := routedHandler{ - method: method, - handler: handler, - } - - switch p := path.(type) { - case *regexp.Regexp: - rh.pathRegexp = p - case string: - rh.path = p - default: - panic("path must be a string or a regular expression") - } - - for i, existingRH := range s.routedHandlers { - if existingRH.method == method && - reflect.DeepEqual(existingRH.pathRegexp, rh.pathRegexp) && - existingRH.path == rh.path { - s.routedHandlers[i] = rh - return - } - } - s.routedHandlers = append(s.routedHandlers, rh) -} - -func (s *Server) handlerForRoute(method string, path string) (http.HandlerFunc, bool) { - for _, rh := range s.routedHandlers { - if rh.method == method { - if rh.pathRegexp != nil { - if rh.pathRegexp.Match([]byte(path)) { - return rh.handler, true - } - } else if rh.path == path { - return rh.handler, true - } - } - } - - return nil, false -} - -//AppendHandlers will appends http.HandlerFuncs to the server's list of registered handlers. The first incoming request is handled by the first handler, the second by the second, etc... -func (s *Server) AppendHandlers(handlers ...http.HandlerFunc) { - s.writeLock.Lock() - defer s.writeLock.Unlock() - - s.requestHandlers = append(s.requestHandlers, handlers...) -} - -//SetHandler overrides the registered handler at the passed in index with the passed in handler -//This is useful, for example, when a server has been set up in a shared context, but must be tweaked -//for a particular test. -func (s *Server) SetHandler(index int, handler http.HandlerFunc) { - s.writeLock.Lock() - defer s.writeLock.Unlock() - - s.requestHandlers[index] = handler -} - -//GetHandler returns the handler registered at the passed in index. -func (s *Server) GetHandler(index int) http.HandlerFunc { - s.writeLock.Lock() - defer s.writeLock.Unlock() - - return s.requestHandlers[index] -} - -func (s *Server) Reset() { - s.writeLock.Lock() - defer s.writeLock.Unlock() - - s.HTTPTestServer.CloseClientConnections() - s.calls = 0 - s.receivedRequests = nil - s.requestHandlers = nil - s.routedHandlers = nil -} - -//WrapHandler combines the passed in handler with the handler registered at the passed in index. -//This is useful, for example, when a server has been set up in a shared context but must be tweaked -//for a particular test. -// -//If the currently registered handler is A, and the new passed in handler is B then -//WrapHandler will generate a new handler that first calls A, then calls B, and assign it to index -func (s *Server) WrapHandler(index int, handler http.HandlerFunc) { - existingHandler := s.GetHandler(index) - s.SetHandler(index, CombineHandlers(existingHandler, handler)) -} - -func (s *Server) CloseClientConnections() { - s.writeLock.Lock() - defer s.writeLock.Unlock() - - s.HTTPTestServer.CloseClientConnections() -} diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go b/vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go deleted file mode 100644 index 7c123608..00000000 --- a/vendor/github.com/onsi/gomega/ghttp/test_server_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package ghttp_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestGHTTP(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "GHTTP Suite") -} diff --git a/vendor/github.com/onsi/gomega/ghttp/test_server_test.go b/vendor/github.com/onsi/gomega/ghttp/test_server_test.go deleted file mode 100644 index 88b32465..00000000 --- a/vendor/github.com/onsi/gomega/ghttp/test_server_test.go +++ /dev/null @@ -1,1089 +0,0 @@ -package ghttp_test - -import ( - "bytes" - "io" - "io/ioutil" - "net/http" - "net/url" - "regexp" - - "github.com/golang/protobuf/proto" - "github.com/onsi/gomega/gbytes" - "github.com/onsi/gomega/ghttp/protobuf" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/ghttp" -) - -var _ = Describe("TestServer", func() { - var ( - resp *http.Response - err error - s *Server - ) - - BeforeEach(func() { - s = NewServer() - }) - - AfterEach(func() { - s.Close() - }) - - Describe("Resetting the server", func() { - BeforeEach(func() { - s.RouteToHandler("GET", "/", func(w http.ResponseWriter, req *http.Request) {}) - s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {}) - http.Get(s.URL() + "/") - - Ω(s.ReceivedRequests()).Should(HaveLen(1)) - }) - - It("clears all handlers and call counts", func() { - s.Reset() - Ω(s.ReceivedRequests()).Should(HaveLen(0)) - Ω(func() { s.GetHandler(0) }).Should(Panic()) - }) - }) - - Describe("closing client connections", func() { - It("closes", func() { - s.RouteToHandler("GET", "/", - func(w http.ResponseWriter, req *http.Request) { - io.WriteString(w, req.RemoteAddr) - }, - ) - client := http.Client{Transport: &http.Transport{DisableKeepAlives: true}} - resp, err := client.Get(s.URL()) - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(200)) - - body, err := ioutil.ReadAll(resp.Body) - resp.Body.Close() - Ω(err).ShouldNot(HaveOccurred()) - - s.CloseClientConnections() - - resp, err = client.Get(s.URL()) - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(200)) - - body2, err := ioutil.ReadAll(resp.Body) - resp.Body.Close() - Ω(err).ShouldNot(HaveOccurred()) - - Ω(body2).ShouldNot(Equal(body)) - }) - }) - - Describe("closing server mulitple times", func() { - It("should not fail", func() { - s.Close() - Ω(s.Close).ShouldNot(Panic()) - }) - }) - - Describe("allowing unhandled requests", func() { - Context("when true", func() { - BeforeEach(func() { - s.AllowUnhandledRequests = true - s.UnhandledRequestStatusCode = http.StatusForbidden - resp, err = http.Get(s.URL() + "/foo") - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should allow unhandled requests and respond with the passed in status code", func() { - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(http.StatusForbidden)) - - data, err := ioutil.ReadAll(resp.Body) - Ω(err).ShouldNot(HaveOccurred()) - Ω(data).Should(BeEmpty()) - }) - - It("should record the requests", func() { - Ω(s.ReceivedRequests()).Should(HaveLen(1)) - Ω(s.ReceivedRequests()[0].URL.Path).Should(Equal("/foo")) - }) - }) - - Context("when false", func() { - It("should fail when attempting a request", func() { - failures := InterceptGomegaFailures(func() { - http.Get(s.URL() + "/foo") - }) - - Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request")) - }) - }) - }) - - Describe("Managing Handlers", func() { - var called []string - BeforeEach(func() { - called = []string{} - s.RouteToHandler("GET", "/routed", func(w http.ResponseWriter, req *http.Request) { - called = append(called, "r1") - }) - s.RouteToHandler("POST", regexp.MustCompile(`/routed\d`), func(w http.ResponseWriter, req *http.Request) { - called = append(called, "r2") - }) - s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) { - called = append(called, "A") - }, func(w http.ResponseWriter, req *http.Request) { - called = append(called, "B") - }) - }) - - It("should prefer routed handlers if there is a match", func() { - http.Get(s.URL() + "/routed") - http.Post(s.URL()+"/routed7", "application/json", nil) - http.Get(s.URL() + "/foo") - http.Get(s.URL() + "/routed") - http.Post(s.URL()+"/routed9", "application/json", nil) - http.Get(s.URL() + "/bar") - - failures := InterceptGomegaFailures(func() { - http.Get(s.URL() + "/foo") - http.Get(s.URL() + "/routed/not/a/match") - http.Get(s.URL() + "/routed7") - http.Post(s.URL()+"/routed", "application/json", nil) - }) - - Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request")) - Ω(failures).Should(HaveLen(4)) - - http.Post(s.URL()+"/routed3", "application/json", nil) - - Ω(called).Should(Equal([]string{"r1", "r2", "A", "r1", "r2", "B", "r2"})) - }) - - It("should override routed handlers when reregistered", func() { - s.RouteToHandler("GET", "/routed", func(w http.ResponseWriter, req *http.Request) { - called = append(called, "r3") - }) - s.RouteToHandler("POST", regexp.MustCompile(`/routed\d`), func(w http.ResponseWriter, req *http.Request) { - called = append(called, "r4") - }) - - http.Get(s.URL() + "/routed") - http.Post(s.URL()+"/routed7", "application/json", nil) - - Ω(called).Should(Equal([]string{"r3", "r4"})) - }) - - It("should call the appended handlers, in order, as requests come in", func() { - http.Get(s.URL() + "/foo") - Ω(called).Should(Equal([]string{"A"})) - - http.Get(s.URL() + "/foo") - Ω(called).Should(Equal([]string{"A", "B"})) - - failures := InterceptGomegaFailures(func() { - http.Get(s.URL() + "/foo") - }) - - Ω(failures[0]).Should(ContainSubstring("Received Unhandled Request")) - }) - - Describe("Overwriting an existing handler", func() { - BeforeEach(func() { - s.SetHandler(0, func(w http.ResponseWriter, req *http.Request) { - called = append(called, "C") - }) - }) - - It("should override the specified handler", func() { - http.Get(s.URL() + "/foo") - http.Get(s.URL() + "/foo") - Ω(called).Should(Equal([]string{"C", "B"})) - }) - }) - - Describe("Getting an existing handler", func() { - It("should return the handler func", func() { - s.GetHandler(1)(nil, nil) - Ω(called).Should(Equal([]string{"B"})) - }) - }) - - Describe("Wrapping an existing handler", func() { - BeforeEach(func() { - s.WrapHandler(0, func(w http.ResponseWriter, req *http.Request) { - called = append(called, "C") - }) - }) - - It("should wrap the existing handler in a new handler", func() { - http.Get(s.URL() + "/foo") - http.Get(s.URL() + "/foo") - Ω(called).Should(Equal([]string{"A", "C", "B"})) - }) - }) - }) - - Describe("When a handler fails", func() { - BeforeEach(func() { - s.UnhandledRequestStatusCode = http.StatusForbidden //just to be clear that 500s aren't coming from unhandled requests - }) - - Context("because the handler has panicked", func() { - BeforeEach(func() { - s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) { - panic("bam") - }) - }) - - It("should respond with a 500 and make a failing assertion", func() { - var resp *http.Response - var err error - - failures := InterceptGomegaFailures(func() { - resp, err = http.Get(s.URL()) - }) - - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(http.StatusInternalServerError)) - Ω(failures).Should(ConsistOf(ContainSubstring("Handler Panicked"))) - }) - }) - - Context("because an assertion has failed", func() { - BeforeEach(func() { - s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) { - // Ω(true).Should(BeFalse()) <-- would be nice to do it this way, but the test just can't be written this way - - By("We're cheating a bit here -- we're throwing a GINKGO_PANIC which simulates a failed assertion") - panic(GINKGO_PANIC) - }) - }) - - It("should respond with a 500 and *not* make a failing assertion, instead relying on Ginkgo to have already been notified of the error", func() { - resp, err := http.Get(s.URL()) - - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(http.StatusInternalServerError)) - }) - }) - }) - - Describe("Logging to the Writer", func() { - var buf *gbytes.Buffer - BeforeEach(func() { - buf = gbytes.NewBuffer() - s.Writer = buf - s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {}) - s.AppendHandlers(func(w http.ResponseWriter, req *http.Request) {}) - }) - - It("should write to the buffer when a request comes in", func() { - http.Get(s.URL() + "/foo") - Ω(buf).Should(gbytes.Say("GHTTP Received Request: GET - /foo\n")) - - http.Post(s.URL()+"/bar", "", nil) - Ω(buf).Should(gbytes.Say("GHTTP Received Request: POST - /bar\n")) - }) - }) - - Describe("Request Handlers", func() { - Describe("VerifyRequest", func() { - BeforeEach(func() { - s.AppendHandlers(VerifyRequest("GET", "/foo")) - }) - - It("should verify the method, path", func() { - resp, err = http.Get(s.URL() + "/foo?baz=bar") - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify the method, path", func() { - failures := InterceptGomegaFailures(func() { - http.Get(s.URL() + "/foo2") - }) - Ω(failures).Should(HaveLen(1)) - }) - - It("should verify the method, path", func() { - failures := InterceptGomegaFailures(func() { - http.Post(s.URL()+"/foo", "application/json", nil) - }) - Ω(failures).Should(HaveLen(1)) - }) - - Context("when passed a rawQuery", func() { - It("should also be possible to verify the rawQuery", func() { - s.SetHandler(0, VerifyRequest("GET", "/foo", "baz=bar")) - resp, err = http.Get(s.URL() + "/foo?baz=bar") - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should match irregardless of query parameter ordering", func() { - s.SetHandler(0, VerifyRequest("GET", "/foo", "type=get&name=money")) - u, _ := url.Parse(s.URL() + "/foo") - u.RawQuery = url.Values{ - "type": []string{"get"}, - "name": []string{"money"}, - }.Encode() - - resp, err = http.Get(u.String()) - Ω(err).ShouldNot(HaveOccurred()) - }) - }) - - Context("when passed a matcher for path", func() { - It("should apply the matcher", func() { - s.SetHandler(0, VerifyRequest("GET", MatchRegexp(`/foo/[a-f]*/3`))) - resp, err = http.Get(s.URL() + "/foo/abcdefa/3") - Ω(err).ShouldNot(HaveOccurred()) - }) - }) - }) - - Describe("VerifyContentType", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("GET", "/foo"), - VerifyContentType("application/octet-stream"), - )) - }) - - It("should verify the content type", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - req.Header.Set("Content-Type", "application/octet-stream") - - resp, err = http.DefaultClient.Do(req) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify the content type", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - req.Header.Set("Content-Type", "application/json") - - failures := InterceptGomegaFailures(func() { - http.DefaultClient.Do(req) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Describe("Verify BasicAuth", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("GET", "/foo"), - VerifyBasicAuth("bob", "password"), - )) - }) - - It("should verify basic auth", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - req.SetBasicAuth("bob", "password") - - resp, err = http.DefaultClient.Do(req) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify basic auth", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - req.SetBasicAuth("bob", "bassword") - - failures := InterceptGomegaFailures(func() { - http.DefaultClient.Do(req) - }) - Ω(failures).Should(HaveLen(1)) - }) - - It("should require basic auth header", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - - failures := InterceptGomegaFailures(func() { - http.DefaultClient.Do(req) - }) - Ω(failures).Should(ContainElement(ContainSubstring("Authorization header must be specified"))) - }) - }) - - Describe("VerifyHeader", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("GET", "/foo"), - VerifyHeader(http.Header{ - "accept": []string{"jpeg", "png"}, - "cache-control": []string{"omicron"}, - "Return-Path": []string{"hobbiton"}, - }), - )) - }) - - It("should verify the headers", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - req.Header.Add("Accept", "jpeg") - req.Header.Add("Accept", "png") - req.Header.Add("Cache-Control", "omicron") - req.Header.Add("return-path", "hobbiton") - - resp, err = http.DefaultClient.Do(req) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify the headers", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - req.Header.Add("Schmaccept", "jpeg") - req.Header.Add("Schmaccept", "png") - req.Header.Add("Cache-Control", "omicron") - req.Header.Add("return-path", "hobbiton") - - failures := InterceptGomegaFailures(func() { - http.DefaultClient.Do(req) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Describe("VerifyHeaderKV", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("GET", "/foo"), - VerifyHeaderKV("accept", "jpeg", "png"), - VerifyHeaderKV("cache-control", "omicron"), - VerifyHeaderKV("Return-Path", "hobbiton"), - )) - }) - - It("should verify the headers", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - req.Header.Add("Accept", "jpeg") - req.Header.Add("Accept", "png") - req.Header.Add("Cache-Control", "omicron") - req.Header.Add("return-path", "hobbiton") - - resp, err = http.DefaultClient.Do(req) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify the headers", func() { - req, err := http.NewRequest("GET", s.URL()+"/foo", nil) - Ω(err).ShouldNot(HaveOccurred()) - req.Header.Add("Accept", "jpeg") - req.Header.Add("Cache-Control", "omicron") - req.Header.Add("return-path", "hobbiton") - - failures := InterceptGomegaFailures(func() { - http.DefaultClient.Do(req) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Describe("VerifyBody", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - VerifyBody([]byte("some body")), - )) - }) - - It("should verify the body", func() { - resp, err = http.Post(s.URL()+"/foo", "", bytes.NewReader([]byte("some body"))) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify the body", func() { - failures := InterceptGomegaFailures(func() { - http.Post(s.URL()+"/foo", "", bytes.NewReader([]byte("wrong body"))) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Describe("VerifyJSON", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - VerifyJSON(`{"a":3, "b":2}`), - )) - }) - - It("should verify the json body and the content type", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`{"b":2, "a":3}`))) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify the json body and the content type", func() { - failures := InterceptGomegaFailures(func() { - http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`{"b":2, "a":4}`))) - }) - Ω(failures).Should(HaveLen(1)) - }) - - It("should verify the json body and the content type", func() { - failures := InterceptGomegaFailures(func() { - http.Post(s.URL()+"/foo", "application/not-json", bytes.NewReader([]byte(`{"b":2, "a":3}`))) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Describe("VerifyJSONRepresenting", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - VerifyJSONRepresenting([]int{1, 3, 5}), - )) - }) - - It("should verify the json body and the content type", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`[1,3,5]`))) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify the json body and the content type", func() { - failures := InterceptGomegaFailures(func() { - http.Post(s.URL()+"/foo", "application/json", bytes.NewReader([]byte(`[1,3]`))) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Describe("VerifyForm", func() { - var formValues url.Values - - BeforeEach(func() { - formValues = make(url.Values) - formValues.Add("users", "user1") - formValues.Add("users", "user2") - formValues.Add("group", "users") - }) - - Context("when encoded in the URL", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("GET", "/foo"), - VerifyForm(url.Values{ - "users": []string{"user1", "user2"}, - "group": []string{"users"}, - }), - )) - }) - - It("should verify form values", func() { - resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode()) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should ignore extra values", func() { - formValues.Add("extra", "value") - resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode()) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("fail on missing values", func() { - formValues.Del("group") - failures := InterceptGomegaFailures(func() { - resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode()) - }) - Ω(failures).Should(HaveLen(1)) - }) - - It("fail on incorrect values", func() { - formValues.Set("group", "wheel") - failures := InterceptGomegaFailures(func() { - resp, err = http.Get(s.URL() + "/foo?" + formValues.Encode()) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Context("when present in the body", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - VerifyForm(url.Values{ - "users": []string{"user1", "user2"}, - "group": []string{"users"}, - }), - )) - }) - - It("should verify form values", func() { - resp, err = http.PostForm(s.URL()+"/foo", formValues) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should ignore extra values", func() { - formValues.Add("extra", "value") - resp, err = http.PostForm(s.URL()+"/foo", formValues) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("fail on missing values", func() { - formValues.Del("group") - failures := InterceptGomegaFailures(func() { - resp, err = http.PostForm(s.URL()+"/foo", formValues) - }) - Ω(failures).Should(HaveLen(1)) - }) - - It("fail on incorrect values", func() { - formValues.Set("group", "wheel") - failures := InterceptGomegaFailures(func() { - resp, err = http.PostForm(s.URL()+"/foo", formValues) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - }) - - Describe("VerifyFormKV", func() { - Context("when encoded in the URL", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("GET", "/foo"), - VerifyFormKV("users", "user1", "user2"), - )) - }) - - It("verifies the form value", func() { - resp, err = http.Get(s.URL() + "/foo?users=user1&users=user2") - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("verifies the form value", func() { - failures := InterceptGomegaFailures(func() { - resp, err = http.Get(s.URL() + "/foo?users=user1") - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Context("when present in the body", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - VerifyFormKV("users", "user1", "user2"), - )) - }) - - It("verifies the form value", func() { - resp, err = http.PostForm(s.URL()+"/foo", url.Values{"users": []string{"user1", "user2"}}) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("verifies the form value", func() { - failures := InterceptGomegaFailures(func() { - resp, err = http.PostForm(s.URL()+"/foo", url.Values{"users": []string{"user1"}}) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - }) - - Describe("VerifyProtoRepresenting", func() { - var message *protobuf.SimpleMessage - - BeforeEach(func() { - message = new(protobuf.SimpleMessage) - message.Description = proto.String("A description") - message.Id = proto.Int32(0) - - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/proto"), - VerifyProtoRepresenting(message), - )) - }) - - It("verifies the proto body and the content type", func() { - serialized, err := proto.Marshal(message) - Ω(err).ShouldNot(HaveOccurred()) - - resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", bytes.NewReader(serialized)) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should verify the proto body and the content type", func() { - serialized, err := proto.Marshal(&protobuf.SimpleMessage{ - Description: proto.String("A description"), - Id: proto.Int32(0), - Metadata: proto.String("some metadata"), - }) - Ω(err).ShouldNot(HaveOccurred()) - - failures := InterceptGomegaFailures(func() { - http.Post(s.URL()+"/proto", "application/x-protobuf", bytes.NewReader(serialized)) - }) - Ω(failures).Should(HaveLen(1)) - }) - - It("should verify the proto body and the content type", func() { - serialized, err := proto.Marshal(message) - Ω(err).ShouldNot(HaveOccurred()) - - failures := InterceptGomegaFailures(func() { - http.Post(s.URL()+"/proto", "application/not-x-protobuf", bytes.NewReader(serialized)) - }) - Ω(failures).Should(HaveLen(1)) - }) - }) - - Describe("RespondWith", func() { - Context("without headers", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWith(http.StatusCreated, "sweet"), - ), CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWith(http.StatusOK, []byte("sour")), - )) - }) - - It("should return the response", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.StatusCode).Should(Equal(http.StatusCreated)) - - body, err := ioutil.ReadAll(resp.Body) - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(Equal([]byte("sweet"))) - - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.StatusCode).Should(Equal(http.StatusOK)) - - body, err = ioutil.ReadAll(resp.Body) - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(Equal([]byte("sour"))) - }) - }) - - Context("with headers", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWith(http.StatusCreated, "sweet", http.Header{"X-Custom-Header": []string{"my header"}}), - )) - }) - - It("should return the headers too", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.StatusCode).Should(Equal(http.StatusCreated)) - Ω(ioutil.ReadAll(resp.Body)).Should(Equal([]byte("sweet"))) - Ω(resp.Header.Get("X-Custom-Header")).Should(Equal("my header")) - }) - }) - }) - - Describe("RespondWithPtr", func() { - var code int - var byteBody []byte - var stringBody string - BeforeEach(func() { - code = http.StatusOK - byteBody = []byte("sweet") - stringBody = "sour" - - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWithPtr(&code, &byteBody), - ), CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWithPtr(&code, &stringBody), - )) - }) - - It("should return the response", func() { - code = http.StatusCreated - byteBody = []byte("tasty") - stringBody = "treat" - - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.StatusCode).Should(Equal(http.StatusCreated)) - - body, err := ioutil.ReadAll(resp.Body) - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(Equal([]byte("tasty"))) - - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.StatusCode).Should(Equal(http.StatusCreated)) - - body, err = ioutil.ReadAll(resp.Body) - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(Equal([]byte("treat"))) - }) - - Context("when passed a nil body", func() { - BeforeEach(func() { - s.SetHandler(0, CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWithPtr(&code, nil), - )) - }) - - It("should return an empty body and not explode", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - - Ω(err).ShouldNot(HaveOccurred()) - Ω(resp.StatusCode).Should(Equal(http.StatusOK)) - body, err := ioutil.ReadAll(resp.Body) - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(BeEmpty()) - - Ω(s.ReceivedRequests()).Should(HaveLen(1)) - }) - }) - }) - - Describe("RespondWithJSON", func() { - Context("when no optional headers are set", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWithJSONEncoded(http.StatusCreated, []int{1, 2, 3}), - )) - }) - - It("should return the response", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.StatusCode).Should(Equal(http.StatusCreated)) - - body, err := ioutil.ReadAll(resp.Body) - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(MatchJSON("[1,2,3]")) - }) - - It("should set the Content-Type header to application/json", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"})) - }) - }) - - Context("when optional headers are set", func() { - var headers http.Header - BeforeEach(func() { - headers = http.Header{"Stuff": []string{"things"}} - }) - - JustBeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWithJSONEncoded(http.StatusCreated, []int{1, 2, 3}, headers), - )) - }) - - It("should preserve those headers", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"})) - }) - - It("should set the Content-Type header to application/json", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"})) - }) - - Context("when setting the Content-Type explicitly", func() { - BeforeEach(func() { - headers["Content-Type"] = []string{"not-json"} - }) - - It("should use the Content-Type header that was explicitly set", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-json"})) - }) - }) - }) - }) - - Describe("RespondWithJSONPtr", func() { - type testObject struct { - Key string - Value string - } - - var code int - var object testObject - - Context("when no optional headers are set", func() { - BeforeEach(func() { - code = http.StatusOK - object = testObject{} - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWithJSONEncodedPtr(&code, &object), - )) - }) - - It("should return the response", func() { - code = http.StatusCreated - object = testObject{ - Key: "Jim", - Value: "Codes", - } - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.StatusCode).Should(Equal(http.StatusCreated)) - - body, err := ioutil.ReadAll(resp.Body) - Ω(err).ShouldNot(HaveOccurred()) - Ω(body).Should(MatchJSON(`{"Key": "Jim", "Value": "Codes"}`)) - }) - - It("should set the Content-Type header to application/json", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"})) - }) - }) - - Context("when optional headers are set", func() { - var headers http.Header - BeforeEach(func() { - headers = http.Header{"Stuff": []string{"things"}} - }) - - JustBeforeEach(func() { - code = http.StatusOK - object = testObject{} - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/foo"), - RespondWithJSONEncodedPtr(&code, &object, headers), - )) - }) - - It("should preserve those headers", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"})) - }) - - It("should set the Content-Type header to application/json", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"})) - }) - - Context("when setting the Content-Type explicitly", func() { - BeforeEach(func() { - headers["Content-Type"] = []string{"not-json"} - }) - - It("should use the Content-Type header that was explicitly set", func() { - resp, err = http.Post(s.URL()+"/foo", "application/json", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-json"})) - }) - }) - }) - }) - - Describe("RespondWithProto", func() { - var message *protobuf.SimpleMessage - - BeforeEach(func() { - message = new(protobuf.SimpleMessage) - message.Description = proto.String("A description") - message.Id = proto.Int32(99) - }) - - Context("when no optional headers are set", func() { - BeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/proto"), - RespondWithProto(http.StatusCreated, message), - )) - }) - - It("should return the response", func() { - resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.StatusCode).Should(Equal(http.StatusCreated)) - - var received protobuf.SimpleMessage - body, err := ioutil.ReadAll(resp.Body) - err = proto.Unmarshal(body, &received) - Ω(err).ShouldNot(HaveOccurred()) - }) - - It("should set the Content-Type header to application/x-protobuf", func() { - resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/x-protobuf"})) - }) - }) - - Context("when optional headers are set", func() { - var headers http.Header - BeforeEach(func() { - headers = http.Header{"Stuff": []string{"things"}} - }) - - JustBeforeEach(func() { - s.AppendHandlers(CombineHandlers( - VerifyRequest("POST", "/proto"), - RespondWithProto(http.StatusCreated, message, headers), - )) - }) - - It("should preserve those headers", func() { - resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Stuff"]).Should(Equal([]string{"things"})) - }) - - It("should set the Content-Type header to application/x-protobuf", func() { - resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/x-protobuf"})) - }) - - Context("when setting the Content-Type explicitly", func() { - BeforeEach(func() { - headers["Content-Type"] = []string{"not-x-protobuf"} - }) - - It("should use the Content-Type header that was explicitly set", func() { - resp, err = http.Post(s.URL()+"/proto", "application/x-protobuf", nil) - Ω(err).ShouldNot(HaveOccurred()) - - Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-x-protobuf"})) - }) - }) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gstruct/elements.go b/vendor/github.com/onsi/gomega/gstruct/elements.go deleted file mode 100644 index a315fa13..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/elements.go +++ /dev/null @@ -1,145 +0,0 @@ -package gstruct - -import ( - "errors" - "fmt" - "reflect" - "runtime/debug" - - "github.com/onsi/gomega/format" - errorsutil "github.com/onsi/gomega/gstruct/errors" - "github.com/onsi/gomega/types" -) - -//MatchAllElements succeeds if every element of a slice matches the element matcher it maps to -//through the id function, and every element matcher is matched. -// Expect([]string{"a", "b"}).To(MatchAllElements(idFn, matchers.Elements{ -// "a": BeEqual("a"), -// "b": BeEqual("b"), -// }) -func MatchAllElements(identifier Identifier, elements Elements) types.GomegaMatcher { - return &ElementsMatcher{ - Identifier: identifier, - Elements: elements, - } -} - -//MatchElements succeeds if each element of a slice matches the element matcher it maps to -//through the id function. It can ignore extra elements and/or missing elements. -// Expect([]string{"a", "c"}).To(MatchElements(idFn, IgnoreMissing|IgnoreExtra, matchers.Elements{ -// "a": BeEqual("a") -// "b": BeEqual("b"), -// }) -func MatchElements(identifier Identifier, options Options, elements Elements) types.GomegaMatcher { - return &ElementsMatcher{ - Identifier: identifier, - Elements: elements, - IgnoreExtras: options&IgnoreExtras != 0, - IgnoreMissing: options&IgnoreMissing != 0, - AllowDuplicates: options&AllowDuplicates != 0, - } -} - -// ElementsMatcher is a NestingMatcher that applies custom matchers to each element of a slice mapped -// by the Identifier function. -// TODO: Extend this to work with arrays & maps (map the key) as well. -type ElementsMatcher struct { - // Matchers for each element. - Elements Elements - // Function mapping an element to the string key identifying its matcher. - Identifier Identifier - - // Whether to ignore extra elements or consider it an error. - IgnoreExtras bool - // Whether to ignore missing elements or consider it an error. - IgnoreMissing bool - // Whether to key duplicates when matching IDs. - AllowDuplicates bool - - // State. - failures []error -} - -// Element ID to matcher. -type Elements map[string]types.GomegaMatcher - -// Function for identifying (mapping) elements. -type Identifier func(element interface{}) string - -func (m *ElementsMatcher) Match(actual interface{}) (success bool, err error) { - if reflect.TypeOf(actual).Kind() != reflect.Slice { - return false, fmt.Errorf("%v is type %T, expected slice", actual, actual) - } - - m.failures = m.matchElements(actual) - if len(m.failures) > 0 { - return false, nil - } - return true, nil -} - -func (m *ElementsMatcher) matchElements(actual interface{}) (errs []error) { - // Provide more useful error messages in the case of a panic. - defer func() { - if err := recover(); err != nil { - errs = append(errs, fmt.Errorf("panic checking %+v: %v\n%s", actual, err, debug.Stack())) - } - }() - - val := reflect.ValueOf(actual) - elements := map[string]bool{} - for i := 0; i < val.Len(); i++ { - element := val.Index(i).Interface() - id := m.Identifier(element) - if elements[id] { - if !m.AllowDuplicates { - errs = append(errs, fmt.Errorf("found duplicate element ID %s", id)) - continue - } - } - elements[id] = true - - matcher, expected := m.Elements[id] - if !expected { - if !m.IgnoreExtras { - errs = append(errs, fmt.Errorf("unexpected element %s", id)) - } - continue - } - - match, err := matcher.Match(element) - if match { - continue - } - - if err == nil { - if nesting, ok := matcher.(errorsutil.NestingMatcher); ok { - err = errorsutil.AggregateError(nesting.Failures()) - } else { - err = errors.New(matcher.FailureMessage(element)) - } - } - errs = append(errs, errorsutil.Nest(fmt.Sprintf("[%s]", id), err)) - } - - for id := range m.Elements { - if !elements[id] && !m.IgnoreMissing { - errs = append(errs, fmt.Errorf("missing expected element %s", id)) - } - } - - return errs -} - -func (m *ElementsMatcher) FailureMessage(actual interface{}) (message string) { - failure := errorsutil.AggregateError(m.failures) - return format.Message(actual, fmt.Sprintf("to match elements: %v", failure)) -} - -func (m *ElementsMatcher) NegatedFailureMessage(actual interface{}) (message string) { - return format.Message(actual, "not to match elements") -} - -func (m *ElementsMatcher) Failures() []error { - return m.failures -} diff --git a/vendor/github.com/onsi/gomega/gstruct/elements_test.go b/vendor/github.com/onsi/gomega/gstruct/elements_test.go deleted file mode 100644 index 8ba78cb9..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/elements_test.go +++ /dev/null @@ -1,144 +0,0 @@ -package gstruct_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/gstruct" -) - -var _ = Describe("Slice", func() { - allElements := []string{"a", "b"} - missingElements := []string{"a"} - extraElements := []string{"a", "b", "c"} - duplicateElements := []string{"a", "a", "b"} - empty := []string{} - var nils []string - - It("should strictly match all elements", func() { - m := MatchAllElements(id, Elements{ - "b": Equal("b"), - "a": Equal("a"), - }) - Ω(allElements).Should(m, "should match all elements") - Ω(missingElements).ShouldNot(m, "should fail with missing elements") - Ω(extraElements).ShouldNot(m, "should fail with extra elements") - Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements") - Ω(nils).ShouldNot(m, "should fail with an uninitialized slice") - - m = MatchAllElements(id, Elements{ - "a": Equal("a"), - "b": Equal("fail"), - }) - Ω(allElements).ShouldNot(m, "should run nested matchers") - - m = MatchAllElements(id, Elements{}) - Ω(empty).Should(m, "should handle empty slices") - Ω(allElements).ShouldNot(m, "should handle only empty slices") - Ω(nils).Should(m, "should handle nil slices") - }) - - It("should ignore extra elements", func() { - m := MatchElements(id, IgnoreExtras, Elements{ - "b": Equal("b"), - "a": Equal("a"), - }) - Ω(allElements).Should(m, "should match all elements") - Ω(missingElements).ShouldNot(m, "should fail with missing elements") - Ω(extraElements).Should(m, "should ignore extra elements") - Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements") - Ω(nils).ShouldNot(m, "should fail with an uninitialized slice") - }) - - It("should ignore missing elements", func() { - m := MatchElements(id, IgnoreMissing, Elements{ - "a": Equal("a"), - "b": Equal("b"), - }) - Ω(allElements).Should(m, "should match all elements") - Ω(missingElements).Should(m, "should ignore missing elements") - Ω(extraElements).ShouldNot(m, "should fail with extra elements") - Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements") - Ω(nils).Should(m, "should ignore an uninitialized slice") - }) - - It("should ignore missing and extra elements", func() { - m := MatchElements(id, IgnoreMissing|IgnoreExtras, Elements{ - "a": Equal("a"), - "b": Equal("b"), - }) - Ω(allElements).Should(m, "should match all elements") - Ω(missingElements).Should(m, "should ignore missing elements") - Ω(extraElements).Should(m, "should ignore extra elements") - Ω(duplicateElements).ShouldNot(m, "should fail with duplicate elements") - Ω(nils).Should(m, "should ignore an uninitialized slice") - - m = MatchElements(id, IgnoreExtras|IgnoreMissing, Elements{ - "a": Equal("a"), - "b": Equal("fail"), - }) - Ω(allElements).ShouldNot(m, "should run nested matchers") - }) - - Context("with elements that share a key", func() { - nonUniqueID := func(element interface{}) string { - return element.(string)[0:1] - } - - allElements := []string{"a123", "a213", "b321"} - includingBadElements := []string{"a123", "b123", "b5555"} - extraElements := []string{"a123", "b1234", "c345"} - missingElements := []string{"b123", "b1234", "b1345"} - - It("should strictly allow multiple matches", func() { - m := MatchElements(nonUniqueID, AllowDuplicates, Elements{ - "a": ContainSubstring("1"), - "b": ContainSubstring("1"), - }) - Ω(allElements).Should(m, "should match all elements") - Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher") - Ω(extraElements).ShouldNot(m, "should reject with extra keys") - Ω(missingElements).ShouldNot(m, "should reject with missing keys") - Ω(nils).ShouldNot(m, "should fail with an uninitialized slice") - }) - - It("should ignore missing", func() { - m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreMissing, Elements{ - "a": ContainSubstring("1"), - "b": ContainSubstring("1"), - }) - Ω(allElements).Should(m, "should match all elements") - Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher") - Ω(extraElements).ShouldNot(m, "should reject with extra keys") - Ω(missingElements).Should(m, "should allow missing keys") - Ω(nils).Should(m, "should allow an uninitialized slice") - }) - - It("should ignore extras", func() { - m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreExtras, Elements{ - "a": ContainSubstring("1"), - "b": ContainSubstring("1"), - }) - Ω(allElements).Should(m, "should match all elements") - Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher") - Ω(extraElements).Should(m, "should allow extra keys") - Ω(missingElements).ShouldNot(m, "should reject missing keys") - Ω(nils).ShouldNot(m, "should reject an uninitialized slice") - }) - - It("should ignore missing and extras", func() { - m := MatchElements(nonUniqueID, AllowDuplicates|IgnoreExtras|IgnoreMissing, Elements{ - "a": ContainSubstring("1"), - "b": ContainSubstring("1"), - }) - Ω(allElements).Should(m, "should match all elements") - Ω(includingBadElements).ShouldNot(m, "should reject if a member fails the matcher") - Ω(extraElements).Should(m, "should allow extra keys") - Ω(missingElements).Should(m, "should allow missing keys") - Ω(nils).Should(m, "should allow an uninitialized slice") - }) - }) -}) - -func id(element interface{}) string { - return element.(string) -} diff --git a/vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go b/vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go deleted file mode 100644 index 188492b2..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/errors/nested_types.go +++ /dev/null @@ -1,72 +0,0 @@ -package errors - -import ( - "fmt" - "strings" - - "github.com/onsi/gomega/types" -) - -// A stateful matcher that nests other matchers within it and preserves the error types of the -// nested matcher failures. -type NestingMatcher interface { - types.GomegaMatcher - - // Returns the failures of nested matchers. - Failures() []error -} - -// An error type for labeling errors on deeply nested matchers. -type NestedError struct { - Path string - Err error -} - -func (e *NestedError) Error() string { - // Indent Errors. - indented := strings.Replace(e.Err.Error(), "\n", "\n\t", -1) - return fmt.Sprintf("%s:\n\t%v", e.Path, indented) -} - -// Create a NestedError with the given path. -// If err is a NestedError, prepend the path to it. -// If err is an AggregateError, recursively Nest each error. -func Nest(path string, err error) error { - if ag, ok := err.(AggregateError); ok { - var errs AggregateError - for _, e := range ag { - errs = append(errs, Nest(path, e)) - } - return errs - } - if ne, ok := err.(*NestedError); ok { - return &NestedError{ - Path: path + ne.Path, - Err: ne.Err, - } - } - return &NestedError{ - Path: path, - Err: err, - } -} - -// An error type for treating multiple errors as a single error. -type AggregateError []error - -// Error is part of the error interface. -func (err AggregateError) Error() string { - if len(err) == 0 { - // This should never happen, really. - return "" - } - if len(err) == 1 { - return err[0].Error() - } - result := fmt.Sprintf("[%s", err[0].Error()) - for i := 1; i < len(err); i++ { - result += fmt.Sprintf(", %s", err[i].Error()) - } - result += "]" - return result -} diff --git a/vendor/github.com/onsi/gomega/gstruct/fields.go b/vendor/github.com/onsi/gomega/gstruct/fields.go deleted file mode 100644 index 0020b873..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/fields.go +++ /dev/null @@ -1,141 +0,0 @@ -package gstruct - -import ( - "errors" - "fmt" - "reflect" - "runtime/debug" - "strings" - - "github.com/onsi/gomega/format" - errorsutil "github.com/onsi/gomega/gstruct/errors" - "github.com/onsi/gomega/types" -) - -//MatchAllFields succeeds if every field of a struct matches the field matcher associated with -//it, and every element matcher is matched. -// Expect([]string{"a", "b"}).To(MatchAllFields(gstruct.Fields{ -// "a": BeEqual("a"), -// "b": BeEqual("b"), -// }) -func MatchAllFields(fields Fields) types.GomegaMatcher { - return &FieldsMatcher{ - Fields: fields, - } -} - -//MatchFields succeeds if each element of a struct matches the field matcher associated with -//it. It can ignore extra fields and/or missing fields. -// Expect([]string{"a", "c"}).To(MatchFields(IgnoreMissing|IgnoreExtra, gstruct.Fields{ -// "a": BeEqual("a") -// "b": BeEqual("b"), -// }) -func MatchFields(options Options, fields Fields) types.GomegaMatcher { - return &FieldsMatcher{ - Fields: fields, - IgnoreExtras: options&IgnoreExtras != 0, - IgnoreMissing: options&IgnoreMissing != 0, - } -} - -type FieldsMatcher struct { - // Matchers for each field. - Fields Fields - - // Whether to ignore extra elements or consider it an error. - IgnoreExtras bool - // Whether to ignore missing elements or consider it an error. - IgnoreMissing bool - - // State. - failures []error -} - -// Field name to matcher. -type Fields map[string]types.GomegaMatcher - -func (m *FieldsMatcher) Match(actual interface{}) (success bool, err error) { - if reflect.TypeOf(actual).Kind() != reflect.Struct { - return false, fmt.Errorf("%v is type %T, expected struct", actual, actual) - } - - m.failures = m.matchFields(actual) - if len(m.failures) > 0 { - return false, nil - } - return true, nil -} - -func (m *FieldsMatcher) matchFields(actual interface{}) (errs []error) { - val := reflect.ValueOf(actual) - typ := val.Type() - fields := map[string]bool{} - for i := 0; i < val.NumField(); i++ { - fieldName := typ.Field(i).Name - fields[fieldName] = true - - err := func() (err error) { - // This test relies heavily on reflect, which tends to panic. - // Recover here to provide more useful error messages in that case. - defer func() { - if r := recover(); r != nil { - err = fmt.Errorf("panic checking %+v: %v\n%s", actual, r, debug.Stack()) - } - }() - - matcher, expected := m.Fields[fieldName] - if !expected { - if !m.IgnoreExtras { - return fmt.Errorf("unexpected field %s: %+v", fieldName, actual) - } - return nil - } - - var field interface{} - if val.Field(i).IsValid() { - field = val.Field(i).Interface() - } else { - field = reflect.Zero(typ.Field(i).Type) - } - - match, err := matcher.Match(field) - if err != nil { - return err - } else if !match { - if nesting, ok := matcher.(errorsutil.NestingMatcher); ok { - return errorsutil.AggregateError(nesting.Failures()) - } - return errors.New(matcher.FailureMessage(field)) - } - return nil - }() - if err != nil { - errs = append(errs, errorsutil.Nest("."+fieldName, err)) - } - } - - for field := range m.Fields { - if !fields[field] && !m.IgnoreMissing { - errs = append(errs, fmt.Errorf("missing expected field %s", field)) - } - } - - return errs -} - -func (m *FieldsMatcher) FailureMessage(actual interface{}) (message string) { - failures := make([]string, len(m.failures)) - for i := range m.failures { - failures[i] = m.failures[i].Error() - } - return format.Message(reflect.TypeOf(actual).Name(), - fmt.Sprintf("to match fields: {\n%v\n}\n", strings.Join(failures, "\n"))) -} - -func (m *FieldsMatcher) NegatedFailureMessage(actual interface{}) (message string) { - return format.Message(actual, "not to match fields") -} - -func (m *FieldsMatcher) Failures() []error { - return m.failures -} diff --git a/vendor/github.com/onsi/gomega/gstruct/fields_test.go b/vendor/github.com/onsi/gomega/gstruct/fields_test.go deleted file mode 100644 index 61f4afc4..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/fields_test.go +++ /dev/null @@ -1,76 +0,0 @@ -package gstruct_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/gstruct" -) - -var _ = Describe("Struct", func() { - allFields := struct{ A, B string }{"a", "b"} - missingFields := struct{ A string }{"a"} - extraFields := struct{ A, B, C string }{"a", "b", "c"} - emptyFields := struct{ A, B string }{} - - It("should strictly match all fields", func() { - m := MatchAllFields(Fields{ - "B": Equal("b"), - "A": Equal("a"), - }) - Ω(allFields).Should(m, "should match all fields") - Ω(missingFields).ShouldNot(m, "should fail with missing fields") - Ω(extraFields).ShouldNot(m, "should fail with extra fields") - Ω(emptyFields).ShouldNot(m, "should fail with empty fields") - - m = MatchAllFields(Fields{ - "A": Equal("a"), - "B": Equal("fail"), - }) - Ω(allFields).ShouldNot(m, "should run nested matchers") - }) - - It("should handle empty structs", func() { - m := MatchAllFields(Fields{}) - Ω(struct{}{}).Should(m, "should handle empty structs") - Ω(allFields).ShouldNot(m, "should fail with extra fields") - }) - - It("should ignore missing fields", func() { - m := MatchFields(IgnoreMissing, Fields{ - "B": Equal("b"), - "A": Equal("a"), - }) - Ω(allFields).Should(m, "should match all fields") - Ω(missingFields).Should(m, "should ignore missing fields") - Ω(extraFields).ShouldNot(m, "should fail with extra fields") - Ω(emptyFields).ShouldNot(m, "should fail with empty fields") - }) - - It("should ignore extra fields", func() { - m := MatchFields(IgnoreExtras, Fields{ - "B": Equal("b"), - "A": Equal("a"), - }) - Ω(allFields).Should(m, "should match all fields") - Ω(missingFields).ShouldNot(m, "should fail with missing fields") - Ω(extraFields).Should(m, "should ignore extra fields") - Ω(emptyFields).ShouldNot(m, "should fail with empty fields") - }) - - It("should ignore missing and extra fields", func() { - m := MatchFields(IgnoreMissing|IgnoreExtras, Fields{ - "B": Equal("b"), - "A": Equal("a"), - }) - Ω(allFields).Should(m, "should match all fields") - Ω(missingFields).Should(m, "should ignore missing fields") - Ω(extraFields).Should(m, "should ignore extra fields") - Ω(emptyFields).ShouldNot(m, "should fail with empty fields") - - m = MatchFields(IgnoreMissing|IgnoreExtras, Fields{ - "A": Equal("a"), - "B": Equal("fail"), - }) - Ω(allFields).ShouldNot(m, "should run nested matchers") - }) -}) diff --git a/vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go b/vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go deleted file mode 100644 index d4756630..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/gstruct_tests_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package gstruct_test - -import ( - "testing" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -func Test(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Gstruct Suite") -} diff --git a/vendor/github.com/onsi/gomega/gstruct/ignore.go b/vendor/github.com/onsi/gomega/gstruct/ignore.go deleted file mode 100644 index 0365f32a..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/ignore.go +++ /dev/null @@ -1,37 +0,0 @@ -package gstruct - -import ( - "github.com/onsi/gomega/types" -) - -//Ignore ignores the actual value and always succeeds. -// Expect(nil).To(Ignore()) -// Expect(true).To(Ignore()) -func Ignore() types.GomegaMatcher { - return &IgnoreMatcher{true} -} - -//Reject ignores the actual value and always fails. It can be used in conjunction with IgnoreMissing -//to catch problematic elements, or to verify tests are running. -// Expect(nil).NotTo(Reject()) -// Expect(true).NotTo(Reject()) -func Reject() types.GomegaMatcher { - return &IgnoreMatcher{false} -} - -// A matcher that either always succeeds or always fails. -type IgnoreMatcher struct { - Succeed bool -} - -func (m *IgnoreMatcher) Match(actual interface{}) (bool, error) { - return m.Succeed, nil -} - -func (m *IgnoreMatcher) FailureMessage(_ interface{}) (message string) { - return "Unconditional failure" -} - -func (m *IgnoreMatcher) NegatedFailureMessage(_ interface{}) (message string) { - return "Unconditional success" -} diff --git a/vendor/github.com/onsi/gomega/gstruct/ignore_test.go b/vendor/github.com/onsi/gomega/gstruct/ignore_test.go deleted file mode 100644 index 70e1d400..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/ignore_test.go +++ /dev/null @@ -1,23 +0,0 @@ -package gstruct_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/gstruct" -) - -var _ = Describe("Ignore", func() { - It("should always succeed", func() { - Ω(nil).Should(Ignore()) - Ω(struct{}{}).Should(Ignore()) - Ω(0).Should(Ignore()) - Ω(false).Should(Ignore()) - }) - - It("should always fail", func() { - Ω(nil).ShouldNot(Reject()) - Ω(struct{}{}).ShouldNot(Reject()) - Ω(1).ShouldNot(Reject()) - Ω(true).ShouldNot(Reject()) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gstruct/pointer.go b/vendor/github.com/onsi/gomega/gstruct/pointer.go deleted file mode 100644 index 0a2f35de..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/pointer.go +++ /dev/null @@ -1,56 +0,0 @@ -package gstruct - -import ( - "fmt" - "reflect" - - "github.com/onsi/gomega/format" - "github.com/onsi/gomega/types" -) - -//PointTo applies the given matcher to the value pointed to by actual. It fails if the pointer is -//nil. -// actual := 5 -// Expect(&actual).To(PointTo(Equal(5))) -func PointTo(matcher types.GomegaMatcher) types.GomegaMatcher { - return &PointerMatcher{ - Matcher: matcher, - } -} - -type PointerMatcher struct { - Matcher types.GomegaMatcher - - // Failure message. - failure string -} - -func (m *PointerMatcher) Match(actual interface{}) (bool, error) { - val := reflect.ValueOf(actual) - - // return error if actual type is not a pointer - if val.Kind() != reflect.Ptr { - return false, fmt.Errorf("PointerMatcher expects a pointer but we have '%s'", val.Kind()) - } - - if !val.IsValid() || val.IsNil() { - m.failure = format.Message(actual, "not to be ") - return false, nil - } - - // Forward the value. - elem := val.Elem().Interface() - match, err := m.Matcher.Match(elem) - if !match { - m.failure = m.Matcher.FailureMessage(elem) - } - return match, err -} - -func (m *PointerMatcher) FailureMessage(_ interface{}) (message string) { - return m.failure -} - -func (m *PointerMatcher) NegatedFailureMessage(actual interface{}) (message string) { - return m.Matcher.NegatedFailureMessage(actual) -} diff --git a/vendor/github.com/onsi/gomega/gstruct/pointer_test.go b/vendor/github.com/onsi/gomega/gstruct/pointer_test.go deleted file mode 100644 index b02081c4..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/pointer_test.go +++ /dev/null @@ -1,33 +0,0 @@ -package gstruct_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/gstruct" -) - -var _ = Describe("PointTo", func() { - It("should fail when passed nil", func() { - var p *struct{} - Ω(p).Should(BeNil()) - }) - - It("should succeed when passed non-nil pointer", func() { - var s struct{} - Ω(&s).Should(PointTo(Ignore())) - }) - - It("should unwrap the pointee value", func() { - i := 1 - Ω(&i).Should(PointTo(Equal(1))) - Ω(&i).ShouldNot(PointTo(Equal(2))) - }) - - It("should work with nested pointers", func() { - i := 1 - ip := &i - ipp := &ip - Ω(ipp).Should(PointTo(PointTo(Equal(1)))) - Ω(ipp).ShouldNot(PointTo(PointTo(Equal(2)))) - }) -}) diff --git a/vendor/github.com/onsi/gomega/gstruct/types.go b/vendor/github.com/onsi/gomega/gstruct/types.go deleted file mode 100644 index 48cbbe8f..00000000 --- a/vendor/github.com/onsi/gomega/gstruct/types.go +++ /dev/null @@ -1,15 +0,0 @@ -package gstruct - -//Options is the type for options passed to some matchers. -type Options int - -const ( - //IgnoreExtras tells the matcher to ignore extra elements or fields, rather than triggering a failure. - IgnoreExtras Options = 1 << iota - //IgnoreMissing tells the matcher to ignore missing elements or fields, rather than triggering a failure. - IgnoreMissing - //AllowDuplicates tells the matcher to permit multiple members of the slice to produce the same ID when - //considered by the indentifier function. All members that map to a given key must still match successfully - //with the matcher that is provided for that key. - AllowDuplicates -) diff --git a/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go b/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go deleted file mode 100644 index dae47a48..00000000 --- a/vendor/github.com/onsi/gomega/internal/assertion/assertion_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package assertion_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestAssertion(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Assertion Suite") -} diff --git a/vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go b/vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go deleted file mode 100644 index c03b7a32..00000000 --- a/vendor/github.com/onsi/gomega/internal/assertion/assertion_test.go +++ /dev/null @@ -1,252 +0,0 @@ -package assertion_test - -import ( - "errors" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/internal/assertion" - "github.com/onsi/gomega/internal/fakematcher" -) - -var _ = Describe("Assertion", func() { - var ( - a *Assertion - failureMessage string - failureCallerSkip int - matcher *fakematcher.FakeMatcher - ) - - input := "The thing I'm testing" - - var fakeFailHandler = func(message string, callerSkip ...int) { - failureMessage = message - if len(callerSkip) == 1 { - failureCallerSkip = callerSkip[0] - } - } - - BeforeEach(func() { - matcher = &fakematcher.FakeMatcher{} - failureMessage = "" - failureCallerSkip = 0 - a = New(input, fakeFailHandler, 1) - }) - - Context("when called", func() { - It("should pass the provided input value to the matcher", func() { - a.Should(matcher) - - Ω(matcher.ReceivedActual).Should(Equal(input)) - matcher.ReceivedActual = "" - - a.ShouldNot(matcher) - - Ω(matcher.ReceivedActual).Should(Equal(input)) - matcher.ReceivedActual = "" - - a.To(matcher) - - Ω(matcher.ReceivedActual).Should(Equal(input)) - matcher.ReceivedActual = "" - - a.ToNot(matcher) - - Ω(matcher.ReceivedActual).Should(Equal(input)) - matcher.ReceivedActual = "" - - a.NotTo(matcher) - - Ω(matcher.ReceivedActual).Should(Equal(input)) - }) - }) - - Context("when the matcher succeeds", func() { - BeforeEach(func() { - matcher.MatchesToReturn = true - matcher.ErrToReturn = nil - }) - - Context("and a positive assertion is being made", func() { - It("should not call the failure callback", func() { - a.Should(matcher) - Ω(failureMessage).Should(Equal("")) - }) - - It("should be true", func() { - Ω(a.Should(matcher)).Should(BeTrue()) - }) - }) - - Context("and a negative assertion is being made", func() { - It("should call the failure callback", func() { - a.ShouldNot(matcher) - Ω(failureMessage).Should(Equal("negative: The thing I'm testing")) - Ω(failureCallerSkip).Should(Equal(3)) - }) - - It("should be false", func() { - Ω(a.ShouldNot(matcher)).Should(BeFalse()) - }) - }) - }) - - Context("when the matcher fails", func() { - BeforeEach(func() { - matcher.MatchesToReturn = false - matcher.ErrToReturn = nil - }) - - Context("and a positive assertion is being made", func() { - It("should call the failure callback", func() { - a.Should(matcher) - Ω(failureMessage).Should(Equal("positive: The thing I'm testing")) - Ω(failureCallerSkip).Should(Equal(3)) - }) - - It("should be false", func() { - Ω(a.Should(matcher)).Should(BeFalse()) - }) - }) - - Context("and a negative assertion is being made", func() { - It("should not call the failure callback", func() { - a.ShouldNot(matcher) - Ω(failureMessage).Should(Equal("")) - }) - - It("should be true", func() { - Ω(a.ShouldNot(matcher)).Should(BeTrue()) - }) - }) - }) - - Context("When reporting a failure", func() { - BeforeEach(func() { - matcher.MatchesToReturn = false - matcher.ErrToReturn = nil - }) - - Context("and there is an optional description", func() { - It("should append the description to the failure message", func() { - a.Should(matcher, "A description") - Ω(failureMessage).Should(Equal("A description\npositive: The thing I'm testing")) - Ω(failureCallerSkip).Should(Equal(3)) - }) - }) - - Context("and there are multiple arguments to the optional description", func() { - It("should append the formatted description to the failure message", func() { - a.Should(matcher, "A description of [%d]", 3) - Ω(failureMessage).Should(Equal("A description of [3]\npositive: The thing I'm testing")) - Ω(failureCallerSkip).Should(Equal(3)) - }) - }) - }) - - Context("When the matcher returns an error", func() { - BeforeEach(func() { - matcher.ErrToReturn = errors.New("Kaboom!") - }) - - Context("and a positive assertion is being made", func() { - It("should call the failure callback", func() { - matcher.MatchesToReturn = true - a.Should(matcher) - Ω(failureMessage).Should(Equal("Kaboom!")) - Ω(failureCallerSkip).Should(Equal(3)) - }) - }) - - Context("and a negative assertion is being made", func() { - It("should call the failure callback", func() { - matcher.MatchesToReturn = false - a.ShouldNot(matcher) - Ω(failureMessage).Should(Equal("Kaboom!")) - Ω(failureCallerSkip).Should(Equal(3)) - }) - }) - - It("should always be false", func() { - Ω(a.Should(matcher)).Should(BeFalse()) - Ω(a.ShouldNot(matcher)).Should(BeFalse()) - }) - }) - - Context("when there are extra parameters", func() { - It("(a simple example)", func() { - Ω(func() (string, int, error) { - return "foo", 0, nil - }()).Should(Equal("foo")) - }) - - Context("when the parameters are all nil or zero", func() { - It("should invoke the matcher", func() { - matcher.MatchesToReturn = true - matcher.ErrToReturn = nil - - var typedNil []string - a = New(input, fakeFailHandler, 1, 0, nil, typedNil) - - result := a.Should(matcher) - Ω(result).Should(BeTrue()) - Ω(matcher.ReceivedActual).Should(Equal(input)) - - Ω(failureMessage).Should(BeZero()) - }) - }) - - Context("when any of the parameters are not nil or zero", func() { - It("should call the failure callback", func() { - matcher.MatchesToReturn = false - matcher.ErrToReturn = nil - - a = New(input, fakeFailHandler, 1, errors.New("foo")) - result := a.Should(matcher) - Ω(result).Should(BeFalse()) - Ω(matcher.ReceivedActual).Should(BeZero(), "The matcher doesn't even get called") - Ω(failureMessage).Should(ContainSubstring("foo")) - failureMessage = "" - - a = New(input, fakeFailHandler, 1, nil, 1) - result = a.ShouldNot(matcher) - Ω(result).Should(BeFalse()) - Ω(failureMessage).Should(ContainSubstring("1")) - failureMessage = "" - - a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"}) - result = a.To(matcher) - Ω(result).Should(BeFalse()) - Ω(failureMessage).Should(ContainSubstring("foo")) - failureMessage = "" - - a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"}) - result = a.ToNot(matcher) - Ω(result).Should(BeFalse()) - Ω(failureMessage).Should(ContainSubstring("foo")) - failureMessage = "" - - a = New(input, fakeFailHandler, 1, nil, 0, []string{"foo"}) - result = a.NotTo(matcher) - Ω(result).Should(BeFalse()) - Ω(failureMessage).Should(ContainSubstring("foo")) - Ω(failureCallerSkip).Should(Equal(3)) - }) - }) - }) - - Context("Making an assertion without a registered fail handler", func() { - It("should panic", func() { - defer func() { - e := recover() - RegisterFailHandler(Fail) - if e == nil { - Fail("expected a panic to have occurred") - } - }() - - RegisterFailHandler(nil) - Ω(true).Should(BeTrue()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go deleted file mode 100644 index bdb0c3d2..00000000 --- a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_suite_test.go +++ /dev/null @@ -1,13 +0,0 @@ -package asyncassertion_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - "testing" -) - -func TestAsyncAssertion(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "AsyncAssertion Suite") -} diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go deleted file mode 100644 index 3d7e3489..00000000 --- a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion_test.go +++ /dev/null @@ -1,345 +0,0 @@ -package asyncassertion_test - -import ( - "errors" - "time" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/internal/asyncassertion" -) - -var _ = Describe("Async Assertion", func() { - var ( - failureMessage string - callerSkip int - ) - - var fakeFailHandler = func(message string, skip ...int) { - failureMessage = message - callerSkip = skip[0] - } - - BeforeEach(func() { - failureMessage = "" - callerSkip = 0 - }) - - Describe("Eventually", func() { - Context("the positive case", func() { - It("should poll the function and matcher", func() { - counter := 0 - a := New(AsyncAssertionTypeEventually, func() int { - counter++ - return counter - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.Should(BeNumerically("==", 5)) - Ω(failureMessage).Should(BeZero()) - }) - - It("should continue when the matcher errors", func() { - counter := 0 - a := New(AsyncAssertionTypeEventually, func() interface{} { - counter++ - if counter == 5 { - return "not-a-number" //this should cause the matcher to error - } - return counter - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.Should(BeNumerically("==", 5), "My description %d", 2) - - Ω(failureMessage).Should(ContainSubstring("Timed out after")) - Ω(failureMessage).Should(ContainSubstring("My description 2")) - Ω(callerSkip).Should(Equal(4)) - }) - - It("should be able to timeout", func() { - counter := 0 - a := New(AsyncAssertionTypeEventually, func() int { - counter++ - return counter - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.Should(BeNumerically(">", 100), "My description %d", 2) - - Ω(counter).Should(BeNumerically(">", 8)) - Ω(counter).Should(BeNumerically("<=", 10)) - Ω(failureMessage).Should(ContainSubstring("Timed out after")) - Ω(failureMessage).Should(MatchRegexp(`\: \d`), "Should pass the correct value to the matcher message formatter.") - Ω(failureMessage).Should(ContainSubstring("My description 2")) - Ω(callerSkip).Should(Equal(4)) - }) - }) - - Context("the negative case", func() { - It("should poll the function and matcher", func() { - counter := 0 - a := New(AsyncAssertionTypeEventually, func() int { - counter += 1 - return counter - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.ShouldNot(BeNumerically("<", 3)) - - Ω(counter).Should(Equal(3)) - Ω(failureMessage).Should(BeZero()) - }) - - It("should timeout when the matcher errors", func() { - a := New(AsyncAssertionTypeEventually, func() interface{} { - return 0 //this should cause the matcher to error - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.ShouldNot(HaveLen(0), "My description %d", 2) - - Ω(failureMessage).Should(ContainSubstring("Timed out after")) - Ω(failureMessage).Should(ContainSubstring("Error:")) - Ω(failureMessage).Should(ContainSubstring("My description 2")) - Ω(callerSkip).Should(Equal(4)) - }) - - It("should be able to timeout", func() { - a := New(AsyncAssertionTypeEventually, func() int { - return 0 - }, fakeFailHandler, time.Duration(0.1*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.ShouldNot(Equal(0), "My description %d", 2) - - Ω(failureMessage).Should(ContainSubstring("Timed out after")) - Ω(failureMessage).Should(ContainSubstring(": 0"), "Should pass the correct value to the matcher message formatter.") - Ω(failureMessage).Should(ContainSubstring("My description 2")) - Ω(callerSkip).Should(Equal(4)) - }) - }) - - Context("with a function that returns multiple values", func() { - It("should eventually succeed if the additional arguments are nil", func() { - i := 0 - Eventually(func() (int, error) { - i++ - return i, nil - }).Should(Equal(10)) - }) - - It("should eventually timeout if the additional arguments are not nil", func() { - i := 0 - a := New(AsyncAssertionTypeEventually, func() (int, error) { - i++ - return i, errors.New("bam") - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - a.Should(Equal(2)) - - Ω(failureMessage).Should(ContainSubstring("Timed out after")) - Ω(failureMessage).Should(ContainSubstring("Error:")) - Ω(failureMessage).Should(ContainSubstring("bam")) - Ω(callerSkip).Should(Equal(4)) - }) - }) - - Context("Making an assertion without a registered fail handler", func() { - It("should panic", func() { - defer func() { - e := recover() - RegisterFailHandler(Fail) - if e == nil { - Fail("expected a panic to have occurred") - } - }() - - RegisterFailHandler(nil) - c := make(chan bool, 1) - c <- true - Eventually(c).Should(Receive()) - }) - }) - }) - - Describe("Consistently", func() { - Describe("The positive case", func() { - Context("when the matcher consistently passes for the duration", func() { - It("should pass", func() { - calls := 0 - a := New(AsyncAssertionTypeConsistently, func() string { - calls++ - return "foo" - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.Should(Equal("foo")) - Ω(calls).Should(BeNumerically(">", 8)) - Ω(calls).Should(BeNumerically("<=", 10)) - Ω(failureMessage).Should(BeZero()) - }) - }) - - Context("when the matcher fails at some point", func() { - It("should fail", func() { - calls := 0 - a := New(AsyncAssertionTypeConsistently, func() interface{} { - calls++ - if calls > 5 { - return "bar" - } - return "foo" - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.Should(Equal("foo")) - Ω(failureMessage).Should(ContainSubstring("to equal")) - Ω(callerSkip).Should(Equal(4)) - }) - }) - - Context("when the matcher errors at some point", func() { - It("should fail", func() { - calls := 0 - a := New(AsyncAssertionTypeConsistently, func() interface{} { - calls++ - if calls > 5 { - return 3 - } - return []int{1, 2, 3} - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.Should(HaveLen(3)) - Ω(failureMessage).Should(ContainSubstring("HaveLen matcher expects")) - Ω(callerSkip).Should(Equal(4)) - }) - }) - }) - - Describe("The negative case", func() { - Context("when the matcher consistently passes for the duration", func() { - It("should pass", func() { - c := make(chan bool) - a := New(AsyncAssertionTypeConsistently, c, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.ShouldNot(Receive()) - Ω(failureMessage).Should(BeZero()) - }) - }) - - Context("when the matcher fails at some point", func() { - It("should fail", func() { - c := make(chan bool) - go func() { - time.Sleep(time.Duration(100 * time.Millisecond)) - c <- true - }() - - a := New(AsyncAssertionTypeConsistently, c, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.ShouldNot(Receive()) - Ω(failureMessage).Should(ContainSubstring("not to receive anything")) - }) - }) - - Context("when the matcher errors at some point", func() { - It("should fail", func() { - calls := 0 - a := New(AsyncAssertionTypeConsistently, func() interface{} { - calls++ - return calls - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - - a.ShouldNot(BeNumerically(">", 5)) - Ω(failureMessage).Should(ContainSubstring("not to be >")) - Ω(callerSkip).Should(Equal(4)) - }) - }) - }) - - Context("with a function that returns multiple values", func() { - It("should consistently succeed if the additional arguments are nil", func() { - i := 2 - Consistently(func() (int, error) { - i++ - return i, nil - }).Should(BeNumerically(">=", 2)) - }) - - It("should eventually timeout if the additional arguments are not nil", func() { - i := 2 - a := New(AsyncAssertionTypeEventually, func() (int, error) { - i++ - return i, errors.New("bam") - }, fakeFailHandler, time.Duration(0.2*float64(time.Second)), time.Duration(0.02*float64(time.Second)), 1) - a.Should(BeNumerically(">=", 2)) - - Ω(failureMessage).Should(ContainSubstring("Error:")) - Ω(failureMessage).Should(ContainSubstring("bam")) - Ω(callerSkip).Should(Equal(4)) - }) - }) - - Context("Making an assertion without a registered fail handler", func() { - It("should panic", func() { - defer func() { - e := recover() - RegisterFailHandler(Fail) - if e == nil { - Fail("expected a panic to have occurred") - } - }() - - RegisterFailHandler(nil) - c := make(chan bool) - Consistently(c).ShouldNot(Receive()) - }) - }) - }) - - Context("when passed a function with the wrong # or arguments & returns", func() { - It("should panic", func() { - Ω(func() { - New(AsyncAssertionTypeEventually, func() {}, fakeFailHandler, 0, 0, 1) - }).Should(Panic()) - - Ω(func() { - New(AsyncAssertionTypeEventually, func(a string) int { return 0 }, fakeFailHandler, 0, 0, 1) - }).Should(Panic()) - - Ω(func() { - New(AsyncAssertionTypeEventually, func() int { return 0 }, fakeFailHandler, 0, 0, 1) - }).ShouldNot(Panic()) - - Ω(func() { - New(AsyncAssertionTypeEventually, func() (int, error) { return 0, nil }, fakeFailHandler, 0, 0, 1) - }).ShouldNot(Panic()) - }) - }) - - Describe("bailing early", func() { - Context("when actual is a value", func() { - It("Eventually should bail out and fail early if the matcher says to", func() { - c := make(chan bool) - close(c) - - t := time.Now() - failures := InterceptGomegaFailures(func() { - Eventually(c, 0.1).Should(Receive()) - }) - Ω(time.Since(t)).Should(BeNumerically("<", 90*time.Millisecond)) - - Ω(failures).Should(HaveLen(1)) - }) - }) - - Context("when actual is a function", func() { - It("should never bail early", func() { - c := make(chan bool) - close(c) - - t := time.Now() - failures := InterceptGomegaFailures(func() { - Eventually(func() chan bool { - return c - }, 0.1).Should(Receive()) - }) - Ω(time.Since(t)).Should(BeNumerically(">=", 90*time.Millisecond)) - - Ω(failures).Should(HaveLen(1)) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go b/vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go deleted file mode 100644 index 6e351a7d..00000000 --- a/vendor/github.com/onsi/gomega/internal/fakematcher/fake_matcher.go +++ /dev/null @@ -1,23 +0,0 @@ -package fakematcher - -import "fmt" - -type FakeMatcher struct { - ReceivedActual interface{} - MatchesToReturn bool - ErrToReturn error -} - -func (matcher *FakeMatcher) Match(actual interface{}) (bool, error) { - matcher.ReceivedActual = actual - - return matcher.MatchesToReturn, matcher.ErrToReturn -} - -func (matcher *FakeMatcher) FailureMessage(actual interface{}) string { - return fmt.Sprintf("positive: %v", actual) -} - -func (matcher *FakeMatcher) NegatedFailureMessage(actual interface{}) string { - return fmt.Sprintf("negative: %v", actual) -} diff --git a/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go b/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go deleted file mode 100644 index fe89e3d9..00000000 --- a/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support_test.go +++ /dev/null @@ -1,34 +0,0 @@ -package testingtsupport_test - -import ( - . "github.com/onsi/gomega" - - "fmt" - "testing" -) - -type FakeT struct { - LastCall string -} - -func (f *FakeT) Fatalf(format string, args ...interface{}) { - f.LastCall = fmt.Sprintf(format, args...) -} - -func TestTestingT(t *testing.T) { - RegisterTestingT(t) - Ω(true).Should(BeTrue()) -} - -func TestGomegaWithT(t *testing.T) { - g := NewGomegaWithT(t) - - f := &FakeT{} - testG := NewGomegaWithT(f) - - testG.Expect("foo").To(Equal("foo")) - g.Expect(f.LastCall).To(BeZero()) - - testG.Expect("foo").To(Equal("bar")) - g.Expect(f.LastCall).To(ContainSubstring(": foo")) -} diff --git a/vendor/github.com/onsi/gomega/matchers/and_test.go b/vendor/github.com/onsi/gomega/matchers/and_test.go deleted file mode 100644 index acf778cd..00000000 --- a/vendor/github.com/onsi/gomega/matchers/and_test.go +++ /dev/null @@ -1,103 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" - "github.com/onsi/gomega/types" -) - -// sample data -var ( - // example input - input = "hi" - // some matchers that succeed against the input - true1 = HaveLen(2) - true2 = Equal("hi") - true3 = MatchRegexp("hi") - // some matchers that fail against the input. - false1 = HaveLen(1) - false2 = Equal("hip") - false3 = MatchRegexp("hope") -) - -// verifyFailureMessage expects the matcher to fail with the given input, and verifies the failure message. -func verifyFailureMessage(m types.GomegaMatcher, input string, expectedFailureMsgFragment string) { - Expect(m.Match(input)).To(BeFalse()) - Expect(m.FailureMessage(input)).To(Equal( - "Expected\n : " + input + "\n" + expectedFailureMsgFragment)) -} - -var _ = Describe("AndMatcher", func() { - It("works with positive cases", func() { - Expect(input).To(And()) - Expect(input).To(And(true1)) - Expect(input).To(And(true1, true2)) - Expect(input).To(And(true1, true2, true3)) - - // use alias - Expect(input).To(SatisfyAll(true1, true2, true3)) - }) - - It("works with negative cases", func() { - Expect(input).ToNot(And(false1, false2)) - Expect(input).ToNot(And(true1, true2, false3)) - Expect(input).ToNot(And(true1, false2, false3)) - Expect(input).ToNot(And(false1, true1, true2)) - }) - - Context("failure messages", func() { - Context("when match fails", func() { - It("gives a descriptive message", func() { - verifyFailureMessage(And(false1, true1), input, "to have length 1") - verifyFailureMessage(And(true1, false2), input, "to equal\n : hip") - verifyFailureMessage(And(true1, true2, false3), input, "to match regular expression\n : hope") - }) - }) - - Context("when match succeeds, but expected it to fail", func() { - It("gives a descriptive message", func() { - verifyFailureMessage(Not(And(true1, true2)), input, - `To not satisfy all of these matchers: [%!s(*matchers.HaveLenMatcher=&{2}) %!s(*matchers.EqualMatcher=&{hi})]`) - }) - }) - }) - - Context("MatchMayChangeInTheFuture", func() { - Context("Match returned false", func() { - Context("returns value of the failed matcher", func() { - It("false if failed matcher not going to change", func() { - // 3 matchers: 1st returns true, 2nd returns false and is not going to change, 3rd is never called - m := And(Not(BeNil()), Or(), Equal(1)) - Expect(m.Match("hi")).To(BeFalse()) - Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // empty Or() indicates not going to change - }) - It("true if failed matcher indicates it might change", func() { - // 3 matchers: 1st returns true, 2nd returns false and "might" change, 3rd is never called - m := And(Not(BeNil()), Equal(5), Equal(1)) - Expect(m.Match("hi")).To(BeFalse()) - Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // Equal(5) indicates it might change - }) - }) - }) - Context("Match returned true", func() { - It("returns true if any of the matchers could change", func() { - // 3 matchers, all return true, and all could change - m := And(Not(BeNil()), Equal("hi"), HaveLen(2)) - Expect(m.Match("hi")).To(BeTrue()) - Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // all 3 of these matchers default to 'true' - }) - It("returns false if none of the matchers could change", func() { - // empty And() has the property of always matching, and never can change since there are no sub-matchers that could change - m := And() - Expect(m.Match("anything")).To(BeTrue()) - Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse()) - - // And() with 3 sub-matchers that return true, and can't change - m = And(And(), And(), And()) - Expect(m.Match("hi")).To(BeTrue()) - Expect(m.(*AndMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // the 3 empty And()'s won't change - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go deleted file mode 100644 index d2280e05..00000000 --- a/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("AssignableToTypeOf", func() { - Context("When asserting assignability between types", func() { - It("should do the right thing", func() { - Ω(0).Should(BeAssignableToTypeOf(0)) - Ω(5).Should(BeAssignableToTypeOf(-1)) - Ω("foo").Should(BeAssignableToTypeOf("bar")) - Ω(struct{ Foo string }{}).Should(BeAssignableToTypeOf(struct{ Foo string }{})) - - Ω(0).ShouldNot(BeAssignableToTypeOf("bar")) - Ω(5).ShouldNot(BeAssignableToTypeOf(struct{ Foo string }{})) - Ω("foo").ShouldNot(BeAssignableToTypeOf(42)) - }) - }) - - Context("When asserting nil values", func() { - It("should error", func() { - success, err := (&AssignableToTypeOfMatcher{Expected: nil}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go b/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go deleted file mode 100644 index e59d7699..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_a_directory_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package matchers_test - -import ( - "io/ioutil" - "os" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeADirectoryMatcher", func() { - Context("when passed a string", func() { - It("should do the right thing", func() { - Ω("/dne/test").ShouldNot(BeADirectory()) - - tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile") - Ω(err).ShouldNot(HaveOccurred()) - defer os.Remove(tmpFile.Name()) - Ω(tmpFile.Name()).ShouldNot(BeADirectory()) - - tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir") - Ω(err).ShouldNot(HaveOccurred()) - defer os.Remove(tmpDir) - Ω(tmpDir).Should(BeADirectory()) - }) - }) - - Context("when passed something else", func() { - It("should error", func() { - success, err := (&BeADirectoryMatcher{}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeADirectoryMatcher{}).Match(true) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go b/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go deleted file mode 100644 index 951e750d..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_a_regular_file_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package matchers_test - -import ( - "io/ioutil" - "os" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeARegularFileMatcher", func() { - Context("when passed a string", func() { - It("should do the right thing", func() { - Ω("/dne/test").ShouldNot(BeARegularFile()) - - tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile") - Ω(err).ShouldNot(HaveOccurred()) - defer os.Remove(tmpFile.Name()) - Ω(tmpFile.Name()).Should(BeARegularFile()) - - tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir") - Ω(err).ShouldNot(HaveOccurred()) - defer os.Remove(tmpDir) - Ω(tmpDir).ShouldNot(BeARegularFile()) - }) - }) - - Context("when passed something else", func() { - It("should error", func() { - success, err := (&BeARegularFileMatcher{}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeARegularFileMatcher{}).Match(true) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go b/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go deleted file mode 100644 index 775f7b6a..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_an_existing_file_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package matchers_test - -import ( - "io/ioutil" - "os" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeAnExistingFileMatcher", func() { - Context("when passed a string", func() { - It("should do the right thing", func() { - Ω("/dne/test").ShouldNot(BeAnExistingFile()) - - tmpFile, err := ioutil.TempFile("", "gomega-test-tempfile") - Ω(err).ShouldNot(HaveOccurred()) - defer os.Remove(tmpFile.Name()) - Ω(tmpFile.Name()).Should(BeAnExistingFile()) - - tmpDir, err := ioutil.TempDir("", "gomega-test-tempdir") - Ω(err).ShouldNot(HaveOccurred()) - defer os.Remove(tmpDir) - Ω(tmpDir).Should(BeAnExistingFile()) - }) - }) - - Context("when passed something else", func() { - It("should error", func() { - success, err := (&BeAnExistingFileMatcher{}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeAnExistingFileMatcher{}).Match(true) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go deleted file mode 100644 index b2c40c91..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_closed_matcher_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeClosedMatcher", func() { - Context("when passed a channel", func() { - It("should do the right thing", func() { - openChannel := make(chan bool) - Ω(openChannel).ShouldNot(BeClosed()) - - var openReaderChannel <-chan bool - openReaderChannel = openChannel - Ω(openReaderChannel).ShouldNot(BeClosed()) - - closedChannel := make(chan bool) - close(closedChannel) - - Ω(closedChannel).Should(BeClosed()) - - var closedReaderChannel <-chan bool - closedReaderChannel = closedChannel - Ω(closedReaderChannel).Should(BeClosed()) - }) - }) - - Context("when passed a send-only channel", func() { - It("should error", func() { - openChannel := make(chan bool) - var openWriterChannel chan<- bool - openWriterChannel = openChannel - - success, err := (&BeClosedMatcher{}).Match(openWriterChannel) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - closedChannel := make(chan bool) - close(closedChannel) - - var closedWriterChannel chan<- bool - closedWriterChannel = closedChannel - - success, err = (&BeClosedMatcher{}).Match(closedWriterChannel) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - }) - }) - - Context("when passed something else", func() { - It("should error", func() { - var nilChannel chan bool - - success, err := (&BeClosedMatcher{}).Match(nilChannel) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeClosedMatcher{}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeClosedMatcher{}).Match(7) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go deleted file mode 100644 index 541c1b95..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_empty_matcher_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeEmpty", func() { - Context("when passed a supported type", func() { - It("should do the right thing", func() { - Ω("").Should(BeEmpty()) - Ω(" ").ShouldNot(BeEmpty()) - - Ω([0]int{}).Should(BeEmpty()) - Ω([1]int{1}).ShouldNot(BeEmpty()) - - Ω([]int{}).Should(BeEmpty()) - Ω([]int{1}).ShouldNot(BeEmpty()) - - Ω(map[string]int{}).Should(BeEmpty()) - Ω(map[string]int{"a": 1}).ShouldNot(BeEmpty()) - - c := make(chan bool, 1) - Ω(c).Should(BeEmpty()) - c <- true - Ω(c).ShouldNot(BeEmpty()) - }) - }) - - Context("when passed a correctly typed nil", func() { - It("should be true", func() { - var nilSlice []int - Ω(nilSlice).Should(BeEmpty()) - - var nilMap map[int]string - Ω(nilMap).Should(BeEmpty()) - }) - }) - - Context("when passed an unsupported type", func() { - It("should error", func() { - success, err := (&BeEmptyMatcher{}).Match(0) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeEmptyMatcher{}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go deleted file mode 100644 index def5104f..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher_test.go +++ /dev/null @@ -1,50 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeEquivalentTo", func() { - Context("when asserting that nil is equivalent to nil", func() { - It("should error", func() { - success, err := (&BeEquivalentToMatcher{Expected: nil}).Match(nil) - - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("When asserting on nil", func() { - It("should do the right thing", func() { - Ω("foo").ShouldNot(BeEquivalentTo(nil)) - Ω(nil).ShouldNot(BeEquivalentTo(3)) - Ω([]int{1, 2}).ShouldNot(BeEquivalentTo(nil)) - }) - }) - - Context("When asserting on type aliases", func() { - It("should the right thing", func() { - Ω(StringAlias("foo")).Should(BeEquivalentTo("foo")) - Ω("foo").Should(BeEquivalentTo(StringAlias("foo"))) - Ω(StringAlias("foo")).ShouldNot(BeEquivalentTo("bar")) - Ω("foo").ShouldNot(BeEquivalentTo(StringAlias("bar"))) - }) - }) - - Context("When asserting on numbers", func() { - It("should convert actual to expected and do the right thing", func() { - Ω(5).Should(BeEquivalentTo(5)) - Ω(5.0).Should(BeEquivalentTo(5.0)) - Ω(5).Should(BeEquivalentTo(5.0)) - - Ω(5).ShouldNot(BeEquivalentTo("5")) - Ω(5).ShouldNot(BeEquivalentTo(3)) - - //Here be dragons! - Ω(5.1).Should(BeEquivalentTo(5)) - Ω(5).ShouldNot(BeEquivalentTo(5.1)) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go deleted file mode 100644 index 3965a2c5..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_false_matcher_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeFalse", func() { - It("should handle true and false correctly", func() { - Ω(true).ShouldNot(BeFalse()) - Ω(false).Should(BeFalse()) - }) - - It("should only support booleans", func() { - success, err := (&BeFalseMatcher{}).Match("foo") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go b/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go deleted file mode 100644 index 8b90a1a6..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_identical_to_test.go +++ /dev/null @@ -1,61 +0,0 @@ -package matchers_test - -import ( - "errors" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeIdenticalTo", func() { - Context("when asserting that nil equals nil", func() { - It("should error", func() { - success, err := (&BeIdenticalToMatcher{Expected: nil}).Match(nil) - - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - It("should treat the same pointer to a struct as identical", func() { - mySpecialStruct := myCustomType{} - Ω(&mySpecialStruct).Should(BeIdenticalTo(&mySpecialStruct)) - Ω(&myCustomType{}).ShouldNot(BeIdenticalTo(&mySpecialStruct)) - }) - - It("should be strict about types", func() { - Ω(5).ShouldNot(BeIdenticalTo("5")) - Ω(5).ShouldNot(BeIdenticalTo(5.0)) - Ω(5).ShouldNot(BeIdenticalTo(3)) - }) - - It("should treat primtives as identical", func() { - Ω("5").Should(BeIdenticalTo("5")) - Ω("5").ShouldNot(BeIdenticalTo("55")) - - Ω(5.55).Should(BeIdenticalTo(5.55)) - Ω(5.55).ShouldNot(BeIdenticalTo(6.66)) - - Ω(5).Should(BeIdenticalTo(5)) - Ω(5).ShouldNot(BeIdenticalTo(55)) - }) - - It("should treat the same pointers to a slice as identical", func() { - mySlice := []int{1, 2} - Ω(&mySlice).Should(BeIdenticalTo(&mySlice)) - Ω(&mySlice).ShouldNot(BeIdenticalTo(&[]int{1, 2})) - }) - - It("should treat the same pointers to a map as identical", func() { - myMap := map[string]string{"a": "b", "c": "d"} - Ω(&myMap).Should(BeIdenticalTo(&myMap)) - Ω(myMap).ShouldNot(BeIdenticalTo(map[string]string{"a": "b", "c": "d"})) - }) - - It("should treat the same pointers to an error as identical", func() { - myError := errors.New("foo") - Ω(&myError).Should(BeIdenticalTo(&myError)) - Ω(errors.New("foo")).ShouldNot(BeIdenticalTo(errors.New("bar"))) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go deleted file mode 100644 index 75332536..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_nil_matcher_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("BeNil", func() { - It("should succeed when passed nil", func() { - Ω(nil).Should(BeNil()) - }) - - It("should succeed when passed a typed nil", func() { - var a []int - Ω(a).Should(BeNil()) - }) - - It("should succeed when passing nil pointer", func() { - var f *struct{} - Ω(f).Should(BeNil()) - }) - - It("should not succeed when not passed nil", func() { - Ω(0).ShouldNot(BeNil()) - Ω(false).ShouldNot(BeNil()) - Ω("").ShouldNot(BeNil()) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go deleted file mode 100644 index 43fdb1fe..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher_test.go +++ /dev/null @@ -1,148 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeNumerically", func() { - Context("when passed a number", func() { - It("should support ==", func() { - Ω(uint32(5)).Should(BeNumerically("==", 5)) - Ω(float64(5.0)).Should(BeNumerically("==", 5)) - Ω(int8(5)).Should(BeNumerically("==", 5)) - }) - - It("should not have false positives", func() { - Ω(5.1).ShouldNot(BeNumerically("==", 5)) - Ω(5).ShouldNot(BeNumerically("==", 5.1)) - }) - - It("should support >", func() { - Ω(uint32(5)).Should(BeNumerically(">", 4)) - Ω(float64(5.0)).Should(BeNumerically(">", 4.9)) - Ω(int8(5)).Should(BeNumerically(">", 4)) - - Ω(uint32(5)).ShouldNot(BeNumerically(">", 5)) - Ω(float64(5.0)).ShouldNot(BeNumerically(">", 5.0)) - Ω(int8(5)).ShouldNot(BeNumerically(">", 5)) - }) - - It("should support <", func() { - Ω(uint32(5)).Should(BeNumerically("<", 6)) - Ω(float64(5.0)).Should(BeNumerically("<", 5.1)) - Ω(int8(5)).Should(BeNumerically("<", 6)) - - Ω(uint32(5)).ShouldNot(BeNumerically("<", 5)) - Ω(float64(5.0)).ShouldNot(BeNumerically("<", 5.0)) - Ω(int8(5)).ShouldNot(BeNumerically("<", 5)) - }) - - It("should support >=", func() { - Ω(uint32(5)).Should(BeNumerically(">=", 4)) - Ω(float64(5.0)).Should(BeNumerically(">=", 4.9)) - Ω(int8(5)).Should(BeNumerically(">=", 4)) - - Ω(uint32(5)).Should(BeNumerically(">=", 5)) - Ω(float64(5.0)).Should(BeNumerically(">=", 5.0)) - Ω(int8(5)).Should(BeNumerically(">=", 5)) - - Ω(uint32(5)).ShouldNot(BeNumerically(">=", 6)) - Ω(float64(5.0)).ShouldNot(BeNumerically(">=", 5.1)) - Ω(int8(5)).ShouldNot(BeNumerically(">=", 6)) - }) - - It("should support <=", func() { - Ω(uint32(5)).Should(BeNumerically("<=", 6)) - Ω(float64(5.0)).Should(BeNumerically("<=", 5.1)) - Ω(int8(5)).Should(BeNumerically("<=", 6)) - - Ω(uint32(5)).Should(BeNumerically("<=", 5)) - Ω(float64(5.0)).Should(BeNumerically("<=", 5.0)) - Ω(int8(5)).Should(BeNumerically("<=", 5)) - - Ω(uint32(5)).ShouldNot(BeNumerically("<=", 4)) - Ω(float64(5.0)).ShouldNot(BeNumerically("<=", 4.9)) - Ω(int8(5)).Should(BeNumerically("<=", 5)) - }) - - Context("when passed ~", func() { - Context("when passed a float", func() { - Context("and there is no precision parameter", func() { - It("should default to 1e-8", func() { - Ω(5.00000001).Should(BeNumerically("~", 5.00000002)) - Ω(5.00000001).ShouldNot(BeNumerically("~", 5.0000001)) - }) - }) - - Context("and there is a precision parameter", func() { - It("should use the precision parameter", func() { - Ω(5.1).Should(BeNumerically("~", 5.19, 0.1)) - Ω(5.1).Should(BeNumerically("~", 5.01, 0.1)) - Ω(5.1).ShouldNot(BeNumerically("~", 5.22, 0.1)) - Ω(5.1).ShouldNot(BeNumerically("~", 4.98, 0.1)) - }) - }) - }) - - Context("when passed an int/uint", func() { - Context("and there is no precision parameter", func() { - It("should just do strict equality", func() { - Ω(5).Should(BeNumerically("~", 5)) - Ω(5).ShouldNot(BeNumerically("~", 6)) - Ω(uint(5)).ShouldNot(BeNumerically("~", 6)) - }) - }) - - Context("and there is a precision parameter", func() { - It("should use precision paramter", func() { - Ω(5).Should(BeNumerically("~", 6, 2)) - Ω(5).ShouldNot(BeNumerically("~", 8, 2)) - Ω(uint(5)).Should(BeNumerically("~", 6, 1)) - }) - }) - }) - }) - }) - - Context("when passed a non-number", func() { - It("should error", func() { - success, err := (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{5}}).Match("foo") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeNumericallyMatcher{Comparator: "=="}).Match(5) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeNumericallyMatcher{Comparator: "~", CompareTo: []interface{}{3.0, "foo"}}).Match(5.0) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{"bar"}}).Match(5) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{"bar"}}).Match("foo") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{nil}}).Match(0) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeNumericallyMatcher{Comparator: "==", CompareTo: []interface{}{0}}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed an unsupported comparator", func() { - It("should error", func() { - success, err := (&BeNumericallyMatcher{Comparator: "!=", CompareTo: []interface{}{5}}).Match(4) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go deleted file mode 100644 index 8ac44685..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_sent_matcher_test.go +++ /dev/null @@ -1,107 +0,0 @@ -package matchers_test - -import ( - "time" - - . "github.com/onsi/gomega/matchers" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("BeSent", func() { - Context("when passed a channel and a matching type", func() { - Context("when the channel is ready to receive", func() { - It("should succeed and send the value down the channel", func() { - c := make(chan string) - d := make(chan string) - go func() { - val := <-c - d <- val - }() - - time.Sleep(10 * time.Millisecond) - - Ω(c).Should(BeSent("foo")) - Eventually(d).Should(Receive(Equal("foo"))) - }) - - It("should succeed (with a buffered channel)", func() { - c := make(chan string, 1) - Ω(c).Should(BeSent("foo")) - Ω(<-c).Should(Equal("foo")) - }) - }) - - Context("when the channel is not ready to receive", func() { - It("should fail and not send down the channel", func() { - c := make(chan string) - Ω(c).ShouldNot(BeSent("foo")) - Consistently(c).ShouldNot(Receive()) - }) - }) - - Context("when the channel is eventually ready to receive", func() { - It("should succeed", func() { - c := make(chan string) - d := make(chan string) - go func() { - time.Sleep(30 * time.Millisecond) - val := <-c - d <- val - }() - - Eventually(c).Should(BeSent("foo")) - Eventually(d).Should(Receive(Equal("foo"))) - }) - }) - - Context("when the channel is closed", func() { - It("should error", func() { - c := make(chan string) - close(c) - success, err := (&BeSentMatcher{Arg: "foo"}).Match(c) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - - It("should short-circuit Eventually", func() { - c := make(chan string) - close(c) - - t := time.Now() - failures := InterceptGomegaFailures(func() { - Eventually(c, 10.0).Should(BeSent("foo")) - }) - Ω(failures).Should(HaveLen(1)) - Ω(time.Since(t)).Should(BeNumerically("<", time.Second)) - }) - }) - }) - - Context("when passed a channel and a non-matching type", func() { - It("should error", func() { - success, err := (&BeSentMatcher{Arg: "foo"}).Match(make(chan int, 1)) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed a receive-only channel", func() { - It("should error", func() { - var c <-chan string - c = make(chan string, 1) - success, err := (&BeSentMatcher{Arg: "foo"}).Match(c) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed a nonchannel", func() { - It("should error", func() { - success, err := (&BeSentMatcher{Arg: "foo"}).Match("bar") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go deleted file mode 100644 index 6140e49d..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher_test.go +++ /dev/null @@ -1,99 +0,0 @@ -package matchers_test - -import ( - "time" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeTemporally", func() { - - var t0, t1, t2 time.Time - BeforeEach(func() { - t0 = time.Now() - t1 = t0.Add(time.Second) - t2 = t0.Add(-time.Second) - }) - - Context("When comparing times", func() { - - It("should support ==", func() { - Ω(t0).Should(BeTemporally("==", t0)) - Ω(t1).ShouldNot(BeTemporally("==", t0)) - Ω(t0).ShouldNot(BeTemporally("==", t1)) - Ω(t0).ShouldNot(BeTemporally("==", time.Time{})) - }) - - It("should support >", func() { - Ω(t0).Should(BeTemporally(">", t2)) - Ω(t0).ShouldNot(BeTemporally(">", t0)) - Ω(t2).ShouldNot(BeTemporally(">", t0)) - }) - - It("should support <", func() { - Ω(t0).Should(BeTemporally("<", t1)) - Ω(t0).ShouldNot(BeTemporally("<", t0)) - Ω(t1).ShouldNot(BeTemporally("<", t0)) - }) - - It("should support >=", func() { - Ω(t0).Should(BeTemporally(">=", t2)) - Ω(t0).Should(BeTemporally(">=", t0)) - Ω(t0).ShouldNot(BeTemporally(">=", t1)) - }) - - It("should support <=", func() { - Ω(t0).Should(BeTemporally("<=", t1)) - Ω(t0).Should(BeTemporally("<=", t0)) - Ω(t0).ShouldNot(BeTemporally("<=", t2)) - }) - - Context("when passed ~", func() { - Context("and there is no precision parameter", func() { - BeforeEach(func() { - t1 = t0.Add(time.Millisecond / 2) - t2 = t0.Add(-2 * time.Millisecond) - }) - It("should approximate", func() { - Ω(t0).Should(BeTemporally("~", t0)) - Ω(t0).Should(BeTemporally("~", t1)) - Ω(t0).ShouldNot(BeTemporally("~", t2)) - }) - }) - - Context("and there is a precision parameter", func() { - BeforeEach(func() { - t2 = t0.Add(3 * time.Second) - }) - It("should use precision paramter", func() { - d := 2 * time.Second - Ω(t0).Should(BeTemporally("~", t0, d)) - Ω(t0).Should(BeTemporally("~", t1, d)) - Ω(t0).ShouldNot(BeTemporally("~", t2, d)) - }) - }) - }) - }) - - Context("when passed a non-time", func() { - It("should error", func() { - success, err := (&BeTemporallyMatcher{Comparator: "==", CompareTo: t0}).Match("foo") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&BeTemporallyMatcher{Comparator: "=="}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed an unsupported comparator", func() { - It("should error", func() { - success, err := (&BeTemporallyMatcher{Comparator: "!=", CompareTo: t0}).Match(t2) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go deleted file mode 100644 index ca32e56b..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_true_matcher_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("BeTrue", func() { - It("should handle true and false correctly", func() { - Ω(true).Should(BeTrue()) - Ω(false).ShouldNot(BeTrue()) - }) - - It("should only support booleans", func() { - success, err := (&BeTrueMatcher{}).Match("foo") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go deleted file mode 100644 index 8ec3643c..00000000 --- a/vendor/github.com/onsi/gomega/matchers/be_zero_matcher_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("BeZero", func() { - It("should succeed if the passed in object is the zero value for its type", func() { - Ω(nil).Should(BeZero()) - - Ω("").Should(BeZero()) - Ω(" ").ShouldNot(BeZero()) - - Ω(0).Should(BeZero()) - Ω(1).ShouldNot(BeZero()) - - Ω(0.0).Should(BeZero()) - Ω(0.1).ShouldNot(BeZero()) - - // Ω([]int{}).Should(BeZero()) - Ω([]int{1}).ShouldNot(BeZero()) - - // Ω(map[string]int{}).Should(BeZero()) - Ω(map[string]int{"a": 1}).ShouldNot(BeZero()) - - Ω(myCustomType{}).Should(BeZero()) - Ω(myCustomType{s: "a"}).ShouldNot(BeZero()) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/consist_of_test.go b/vendor/github.com/onsi/gomega/matchers/consist_of_test.go deleted file mode 100644 index dcd1afe9..00000000 --- a/vendor/github.com/onsi/gomega/matchers/consist_of_test.go +++ /dev/null @@ -1,75 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -var _ = Describe("ConsistOf", func() { - Context("with a slice", func() { - It("should do the right thing", func() { - Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz")) - Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz")) - Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("baz", "bar", "foo")) - Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo")) - Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "foo")) - }) - }) - - Context("with an array", func() { - It("should do the right thing", func() { - Ω([3]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", "bar", "baz")) - Ω([3]string{"foo", "bar", "baz"}).Should(ConsistOf("baz", "bar", "foo")) - Ω([3]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo")) - Ω([3]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("baz", "foo")) - }) - }) - - Context("with a map", func() { - It("should apply to the values", func() { - Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).Should(ConsistOf("foo", "bar", "baz")) - Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).Should(ConsistOf("baz", "bar", "foo")) - Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).ShouldNot(ConsistOf("baz", "bar", "foo", "foo")) - Ω(map[int]string{1: "foo", 2: "bar", 3: "baz"}).ShouldNot(ConsistOf("baz", "foo")) - }) - - }) - - Context("with anything else", func() { - It("should error", func() { - failures := InterceptGomegaFailures(func() { - Ω("foo").Should(ConsistOf("f", "o", "o")) - }) - - Ω(failures).Should(HaveLen(1)) - }) - }) - - Context("when passed matchers", func() { - It("should pass if the matchers pass", func() { - Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", MatchRegexp("^ba"), "baz")) - Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba"))) - Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("foo"))) - Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("^ba"))) - Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf("foo", MatchRegexp("^ba"), MatchRegexp("turducken"))) - }) - - It("should not depend on the order of the matchers", func() { - Ω([][]int{[]int{1, 2}, []int{2}}).Should(ConsistOf(ContainElement(1), ContainElement(2))) - Ω([][]int{[]int{1, 2}, []int{2}}).Should(ConsistOf(ContainElement(2), ContainElement(1))) - }) - - Context("when a matcher errors", func() { - It("should soldier on", func() { - Ω([]string{"foo", "bar", "baz"}).ShouldNot(ConsistOf(BeFalse(), "foo", "bar")) - Ω([]interface{}{"foo", "bar", false}).Should(ConsistOf(BeFalse(), ContainSubstring("foo"), "bar")) - }) - }) - }) - - Context("when passed exactly one argument, and that argument is a slice", func() { - It("should match against the elements of that argument", func() { - Ω([]string{"foo", "bar", "baz"}).Should(ConsistOf([]string{"foo", "bar", "baz"})) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go deleted file mode 100644 index 38ee518f..00000000 --- a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher_test.go +++ /dev/null @@ -1,76 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("ContainElement", func() { - Context("when passed a supported type", func() { - Context("and expecting a non-matcher", func() { - It("should do the right thing", func() { - Ω([2]int{1, 2}).Should(ContainElement(2)) - Ω([2]int{1, 2}).ShouldNot(ContainElement(3)) - - Ω([]int{1, 2}).Should(ContainElement(2)) - Ω([]int{1, 2}).ShouldNot(ContainElement(3)) - - Ω(map[string]int{"foo": 1, "bar": 2}).Should(ContainElement(2)) - Ω(map[int]int{3: 1, 4: 2}).ShouldNot(ContainElement(3)) - - arr := make([]myCustomType, 2) - arr[0] = myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}} - arr[1] = myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "c"}} - Ω(arr).Should(ContainElement(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}})) - Ω(arr).ShouldNot(ContainElement(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"b", "c"}})) - }) - }) - - Context("and expecting a matcher", func() { - It("should pass each element through the matcher", func() { - Ω([]int{1, 2, 3}).Should(ContainElement(BeNumerically(">=", 3))) - Ω([]int{1, 2, 3}).ShouldNot(ContainElement(BeNumerically(">", 3))) - Ω(map[string]int{"foo": 1, "bar": 2}).Should(ContainElement(BeNumerically(">=", 2))) - Ω(map[string]int{"foo": 1, "bar": 2}).ShouldNot(ContainElement(BeNumerically(">", 2))) - }) - - It("should power through even if the matcher ever fails", func() { - Ω([]interface{}{1, 2, "3", 4}).Should(ContainElement(BeNumerically(">=", 3))) - }) - - It("should fail if the matcher fails", func() { - actual := []interface{}{1, 2, "3", "4"} - success, err := (&ContainElementMatcher{Element: BeNumerically(">=", 3)}).Match(actual) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - }) - - Context("when passed a correctly typed nil", func() { - It("should operate succesfully on the passed in value", func() { - var nilSlice []int - Ω(nilSlice).ShouldNot(ContainElement(1)) - - var nilMap map[int]string - Ω(nilMap).ShouldNot(ContainElement("foo")) - }) - }) - - Context("when passed an unsupported type", func() { - It("should error", func() { - success, err := (&ContainElementMatcher{Element: 0}).Match(0) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&ContainElementMatcher{Element: 0}).Match("abc") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&ContainElementMatcher{Element: 0}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go deleted file mode 100644 index 6935168e..00000000 --- a/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher_test.go +++ /dev/null @@ -1,36 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("ContainSubstringMatcher", func() { - Context("when actual is a string", func() { - It("should match against the string", func() { - Ω("Marvelous").Should(ContainSubstring("rve")) - Ω("Marvelous").ShouldNot(ContainSubstring("boo")) - }) - }) - - Context("when the matcher is called with multiple arguments", func() { - It("should pass the string and arguments to sprintf", func() { - Ω("Marvelous3").Should(ContainSubstring("velous%d", 3)) - }) - }) - - Context("when actual is a stringer", func() { - It("should call the stringer and match agains the returned string", func() { - Ω(&myStringer{a: "Abc3"}).Should(ContainSubstring("bc3")) - }) - }) - - Context("when actual is neither a string nor a stringer", func() { - It("should error", func() { - success, err := (&ContainSubstringMatcher{Substr: "2"}).Match(2) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go deleted file mode 100644 index 4b152684..00000000 --- a/vendor/github.com/onsi/gomega/matchers/equal_matcher_test.go +++ /dev/null @@ -1,80 +0,0 @@ -package matchers_test - -import ( - "errors" - "strings" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("Equal", func() { - Context("when asserting that nil equals nil", func() { - It("should error", func() { - success, err := (&EqualMatcher{Expected: nil}).Match(nil) - - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("When asserting equality between objects", func() { - It("should do the right thing", func() { - Ω(5).Should(Equal(5)) - Ω(5.0).Should(Equal(5.0)) - - Ω(5).ShouldNot(Equal("5")) - Ω(5).ShouldNot(Equal(5.0)) - Ω(5).ShouldNot(Equal(3)) - - Ω("5").Should(Equal("5")) - Ω([]int{1, 2}).Should(Equal([]int{1, 2})) - Ω([]int{1, 2}).ShouldNot(Equal([]int{2, 1})) - Ω([]byte{'f', 'o', 'o'}).Should(Equal([]byte{'f', 'o', 'o'})) - Ω([]byte{'f', 'o', 'o'}).ShouldNot(Equal([]byte{'b', 'a', 'r'})) - Ω(map[string]string{"a": "b", "c": "d"}).Should(Equal(map[string]string{"a": "b", "c": "d"})) - Ω(map[string]string{"a": "b", "c": "d"}).ShouldNot(Equal(map[string]string{"a": "b", "c": "e"})) - Ω(errors.New("foo")).Should(Equal(errors.New("foo"))) - Ω(errors.New("foo")).ShouldNot(Equal(errors.New("bar"))) - - Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).Should(Equal(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}})) - Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "bar", n: 3, f: 2.0, arr: []string{"a", "b"}})) - Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 2, f: 2.0, arr: []string{"a", "b"}})) - Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 3, f: 3.0, arr: []string{"a", "b"}})) - Ω(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b"}}).ShouldNot(Equal(myCustomType{s: "foo", n: 3, f: 2.0, arr: []string{"a", "b", "c"}})) - }) - }) - - Describe("failure messages", func() { - It("shows the two strings simply when they are short", func() { - subject := EqualMatcher{Expected: "eric"} - - failureMessage := subject.FailureMessage("tim") - Ω(failureMessage).To(BeEquivalentTo(expectedShortStringFailureMessage)) - }) - - It("shows the exact point where two long strings differ", func() { - stringWithB := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - stringWithZ := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - - subject := EqualMatcher{Expected: stringWithZ} - - failureMessage := subject.FailureMessage(stringWithB) - Ω(failureMessage).To(BeEquivalentTo(expectedLongStringFailureMessage)) - }) - }) -}) - -var expectedShortStringFailureMessage = strings.TrimSpace(` -Expected - : tim -to equal - : eric -`) -var expectedLongStringFailureMessage = strings.TrimSpace(` -Expected - : "...aaaaabaaaaa..." -to equal | - : "...aaaaazaaaaa..." -`) diff --git a/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go deleted file mode 100644 index a92a177b..00000000 --- a/vendor/github.com/onsi/gomega/matchers/have_cap_matcher_test.go +++ /dev/null @@ -1,50 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("HaveCap", func() { - Context("when passed a supported type", func() { - It("should do the right thing", func() { - Ω([0]int{}).Should(HaveCap(0)) - Ω([2]int{1}).Should(HaveCap(2)) - - Ω([]int{}).Should(HaveCap(0)) - Ω([]int{1, 2, 3, 4, 5}[:2]).Should(HaveCap(5)) - Ω(make([]int, 0, 5)).Should(HaveCap(5)) - - c := make(chan bool, 3) - Ω(c).Should(HaveCap(3)) - c <- true - c <- true - Ω(c).Should(HaveCap(3)) - - Ω(make(chan bool)).Should(HaveCap(0)) - }) - }) - - Context("when passed a correctly typed nil", func() { - It("should operate succesfully on the passed in value", func() { - var nilSlice []int - Ω(nilSlice).Should(HaveCap(0)) - - var nilChan chan int - Ω(nilChan).Should(HaveCap(0)) - }) - }) - - Context("when passed an unsupported type", func() { - It("should error", func() { - success, err := (&HaveCapMatcher{Count: 0}).Match(0) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&HaveCapMatcher{Count: 0}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go deleted file mode 100644 index c663e302..00000000 --- a/vendor/github.com/onsi/gomega/matchers/have_key_matcher_test.go +++ /dev/null @@ -1,73 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("HaveKey", func() { - var ( - stringKeys map[string]int - intKeys map[int]string - objKeys map[*myCustomType]string - - customA *myCustomType - customB *myCustomType - ) - BeforeEach(func() { - stringKeys = map[string]int{"foo": 2, "bar": 3} - intKeys = map[int]string{2: "foo", 3: "bar"} - - customA = &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}} - customB = &myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}} - objKeys = map[*myCustomType]string{customA: "aardvark", customB: "kangaroo"} - }) - - Context("when passed a map", func() { - It("should do the right thing", func() { - Ω(stringKeys).Should(HaveKey("foo")) - Ω(stringKeys).ShouldNot(HaveKey("baz")) - - Ω(intKeys).Should(HaveKey(2)) - Ω(intKeys).ShouldNot(HaveKey(4)) - - Ω(objKeys).Should(HaveKey(customA)) - Ω(objKeys).Should(HaveKey(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}})) - Ω(objKeys).ShouldNot(HaveKey(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"apple", "pie"}})) - }) - }) - - Context("when passed a correctly typed nil", func() { - It("should operate succesfully on the passed in value", func() { - var nilMap map[int]string - Ω(nilMap).ShouldNot(HaveKey("foo")) - }) - }) - - Context("when the passed in key is actually a matcher", func() { - It("should pass each element through the matcher", func() { - Ω(stringKeys).Should(HaveKey(ContainSubstring("oo"))) - Ω(stringKeys).ShouldNot(HaveKey(ContainSubstring("foobar"))) - }) - - It("should fail if the matcher ever fails", func() { - actual := map[int]string{1: "a", 3: "b", 2: "c"} - success, err := (&HaveKeyMatcher{Key: ContainSubstring("ar")}).Match(actual) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed something that is not a map", func() { - It("should error", func() { - success, err := (&HaveKeyMatcher{Key: "foo"}).Match([]string{"foo"}) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&HaveKeyMatcher{Key: "foo"}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go deleted file mode 100644 index 06a2242a..00000000 --- a/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher_test.go +++ /dev/null @@ -1,82 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("HaveKeyWithValue", func() { - var ( - stringKeys map[string]int - intKeys map[int]string - objKeys map[*myCustomType]*myCustomType - - customA *myCustomType - customB *myCustomType - ) - BeforeEach(func() { - stringKeys = map[string]int{"foo": 2, "bar": 3} - intKeys = map[int]string{2: "foo", 3: "bar"} - - customA = &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}} - customB = &myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}} - objKeys = map[*myCustomType]*myCustomType{customA: customA, customB: customA} - }) - - Context("when passed a map", func() { - It("should do the right thing", func() { - Ω(stringKeys).Should(HaveKeyWithValue("foo", 2)) - Ω(stringKeys).ShouldNot(HaveKeyWithValue("foo", 1)) - Ω(stringKeys).ShouldNot(HaveKeyWithValue("baz", 2)) - Ω(stringKeys).ShouldNot(HaveKeyWithValue("baz", 1)) - - Ω(intKeys).Should(HaveKeyWithValue(2, "foo")) - Ω(intKeys).ShouldNot(HaveKeyWithValue(4, "foo")) - Ω(intKeys).ShouldNot(HaveKeyWithValue(2, "baz")) - - Ω(objKeys).Should(HaveKeyWithValue(customA, customA)) - Ω(objKeys).Should(HaveKeyWithValue(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"cake"}}, &myCustomType{s: "a", n: 2, f: 2.3, arr: []string{"ice", "cream"}})) - Ω(objKeys).ShouldNot(HaveKeyWithValue(&myCustomType{s: "b", n: 4, f: 3.1, arr: []string{"apple", "pie"}}, customA)) - }) - }) - - Context("when passed a correctly typed nil", func() { - It("should operate succesfully on the passed in value", func() { - var nilMap map[int]string - Ω(nilMap).ShouldNot(HaveKeyWithValue("foo", "bar")) - }) - }) - - Context("when the passed in key or value is actually a matcher", func() { - It("should pass each element through the matcher", func() { - Ω(stringKeys).Should(HaveKeyWithValue(ContainSubstring("oo"), 2)) - Ω(intKeys).Should(HaveKeyWithValue(2, ContainSubstring("oo"))) - Ω(stringKeys).ShouldNot(HaveKeyWithValue(ContainSubstring("foobar"), 2)) - }) - - It("should fail if the matcher ever fails", func() { - actual := map[int]string{1: "a", 3: "b", 2: "c"} - success, err := (&HaveKeyWithValueMatcher{Key: ContainSubstring("ar"), Value: 2}).Match(actual) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - otherActual := map[string]int{"a": 1, "b": 2, "c": 3} - success, err = (&HaveKeyWithValueMatcher{Key: "a", Value: ContainSubstring("1")}).Match(otherActual) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed something that is not a map", func() { - It("should error", func() { - success, err := (&HaveKeyWithValueMatcher{Key: "foo", Value: "bar"}).Match([]string{"foo"}) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&HaveKeyWithValueMatcher{Key: "foo", Value: "bar"}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go deleted file mode 100644 index 1e6aa69d..00000000 --- a/vendor/github.com/onsi/gomega/matchers/have_len_matcher_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("HaveLen", func() { - Context("when passed a supported type", func() { - It("should do the right thing", func() { - Ω("").Should(HaveLen(0)) - Ω("AA").Should(HaveLen(2)) - - Ω([0]int{}).Should(HaveLen(0)) - Ω([2]int{1, 2}).Should(HaveLen(2)) - - Ω([]int{}).Should(HaveLen(0)) - Ω([]int{1, 2, 3}).Should(HaveLen(3)) - - Ω(map[string]int{}).Should(HaveLen(0)) - Ω(map[string]int{"a": 1, "b": 2, "c": 3, "d": 4}).Should(HaveLen(4)) - - c := make(chan bool, 3) - Ω(c).Should(HaveLen(0)) - c <- true - c <- true - Ω(c).Should(HaveLen(2)) - }) - }) - - Context("when passed a correctly typed nil", func() { - It("should operate succesfully on the passed in value", func() { - var nilSlice []int - Ω(nilSlice).Should(HaveLen(0)) - - var nilMap map[int]string - Ω(nilMap).Should(HaveLen(0)) - }) - }) - - Context("when passed an unsupported type", func() { - It("should error", func() { - success, err := (&HaveLenMatcher{Count: 0}).Match(0) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&HaveLenMatcher{Count: 0}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go deleted file mode 100644 index bb52fbe2..00000000 --- a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher_test.go +++ /dev/null @@ -1,59 +0,0 @@ -package matchers_test - -import ( - "errors" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -type CustomErr struct { - msg string -} - -func (e *CustomErr) Error() string { - return e.msg -} - -var _ = Describe("HaveOccurred", func() { - It("should succeed if matching an error", func() { - Ω(errors.New("Foo")).Should(HaveOccurred()) - }) - - It("should not succeed with nil", func() { - Ω(nil).ShouldNot(HaveOccurred()) - }) - - It("should only support errors and nil", func() { - success, err := (&HaveOccurredMatcher{}).Match("foo") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&HaveOccurredMatcher{}).Match("") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - - It("doesn't support non-error type", func() { - success, err := (&HaveOccurredMatcher{}).Match(AnyType{}) - Ω(success).Should(BeFalse()) - Ω(err).Should(MatchError("Expected an error-type. Got:\n : {}")) - }) - - It("doesn't support non-error pointer type", func() { - success, err := (&HaveOccurredMatcher{}).Match(&AnyType{}) - Ω(success).Should(BeFalse()) - Ω(err).Should(MatchError(MatchRegexp(`Expected an error-type. Got:\n <*matchers_test.AnyType | 0x[[:xdigit:]]+>: {}`))) - }) - - It("should succeed with pointer types that conform to error interface", func() { - err := &CustomErr{"ohai"} - Ω(err).Should(HaveOccurred()) - }) - - It("should not succeed with nil pointers to types that conform to error interface", func() { - var err *CustomErr = nil - Ω(err).ShouldNot(HaveOccurred()) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go deleted file mode 100644 index bec3f975..00000000 --- a/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher_test.go +++ /dev/null @@ -1,36 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("HavePrefixMatcher", func() { - Context("when actual is a string", func() { - It("should match a string prefix", func() { - Ω("Ab").Should(HavePrefix("A")) - Ω("A").ShouldNot(HavePrefix("Ab")) - }) - }) - - Context("when the matcher is called with multiple arguments", func() { - It("should pass the string and arguments to sprintf", func() { - Ω("C3PO").Should(HavePrefix("C%dP", 3)) - }) - }) - - Context("when actual is a stringer", func() { - It("should call the stringer and match against the returned string", func() { - Ω(&myStringer{a: "Ab"}).Should(HavePrefix("A")) - }) - }) - - Context("when actual is neither a string nor a stringer", func() { - It("should error", func() { - success, err := (&HavePrefixMatcher{Prefix: "2"}).Match(2) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go deleted file mode 100644 index 72e8975b..00000000 --- a/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher_test.go +++ /dev/null @@ -1,36 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("HaveSuffixMatcher", func() { - Context("when actual is a string", func() { - It("should match a string suffix", func() { - Ω("Ab").Should(HaveSuffix("b")) - Ω("A").ShouldNot(HaveSuffix("Ab")) - }) - }) - - Context("when the matcher is called with multiple arguments", func() { - It("should pass the string and arguments to sprintf", func() { - Ω("C3PO").Should(HaveSuffix("%dPO", 3)) - }) - }) - - Context("when actual is a stringer", func() { - It("should call the stringer and match against the returned string", func() { - Ω(&myStringer{a: "Ab"}).Should(HaveSuffix("b")) - }) - }) - - Context("when actual is neither a string nor a stringer", func() { - It("should error", func() { - success, err := (&HaveSuffixMatcher{Suffix: "2"}).Match(2) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go deleted file mode 100644 index b9b1489f..00000000 --- a/vendor/github.com/onsi/gomega/matchers/match_error_matcher_test.go +++ /dev/null @@ -1,107 +0,0 @@ -package matchers_test - -import ( - "errors" - "fmt" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -type CustomError struct { -} - -func (c CustomError) Error() string { - return "an error" -} - -var _ = Describe("MatchErrorMatcher", func() { - Context("When asserting against an error", func() { - It("should succeed when matching with an error", func() { - err := errors.New("an error") - fmtErr := fmt.Errorf("an error") - customErr := CustomError{} - - Ω(err).Should(MatchError(errors.New("an error"))) - Ω(err).ShouldNot(MatchError(errors.New("another error"))) - - Ω(fmtErr).Should(MatchError(errors.New("an error"))) - Ω(customErr).Should(MatchError(CustomError{})) - }) - - It("should succeed when matching with a string", func() { - err := errors.New("an error") - fmtErr := fmt.Errorf("an error") - customErr := CustomError{} - - Ω(err).Should(MatchError("an error")) - Ω(err).ShouldNot(MatchError("another error")) - - Ω(fmtErr).Should(MatchError("an error")) - Ω(customErr).Should(MatchError("an error")) - }) - - Context("when passed a matcher", func() { - It("should pass if the matcher passes against the error string", func() { - err := errors.New("error 123 abc") - - Ω(err).Should(MatchError(MatchRegexp(`\d{3}`))) - }) - - It("should fail if the matcher fails against the error string", func() { - err := errors.New("no digits") - Ω(err).ShouldNot(MatchError(MatchRegexp(`\d`))) - }) - }) - - It("should fail when passed anything else", func() { - actualErr := errors.New("an error") - _, err := (&MatchErrorMatcher{ - Expected: []byte("an error"), - }).Match(actualErr) - Ω(err).Should(HaveOccurred()) - - _, err = (&MatchErrorMatcher{ - Expected: 3, - }).Match(actualErr) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed nil", func() { - It("should fail", func() { - _, err := (&MatchErrorMatcher{ - Expected: "an error", - }).Match(nil) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed a non-error", func() { - It("should fail", func() { - _, err := (&MatchErrorMatcher{ - Expected: "an error", - }).Match("an error") - Ω(err).Should(HaveOccurred()) - - _, err = (&MatchErrorMatcher{ - Expected: "an error", - }).Match(3) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed an error that is also a string", func() { - It("should use it as an error", func() { - var e mockErr = "mockErr" - - // this fails if the matcher casts e to a string before comparison - Ω(e).Should(MatchError(e)) - }) - }) -}) - -type mockErr string - -func (m mockErr) Error() string { return string(m) } diff --git a/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go deleted file mode 100644 index 45944839..00000000 --- a/vendor/github.com/onsi/gomega/matchers/match_json_matcher_test.go +++ /dev/null @@ -1,97 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("MatchJSONMatcher", func() { - Context("When passed stringifiables", func() { - It("should succeed if the JSON matches", func() { - Ω("{}").Should(MatchJSON("{}")) - Ω(`{"a":1}`).Should(MatchJSON(`{"a":1}`)) - Ω(`{ - "a":1 - }`).Should(MatchJSON(`{"a":1}`)) - Ω(`{"a":1, "b":2}`).Should(MatchJSON(`{"b":2, "a":1}`)) - Ω(`{"a":1}`).ShouldNot(MatchJSON(`{"b":2, "a":1}`)) - - Ω(`{"a":"a", "b":"b"}`).ShouldNot(MatchJSON(`{"a":"a", "b":"b", "c":"c"}`)) - Ω(`{"a":"a", "b":"b", "c":"c"}`).ShouldNot(MatchJSON(`{"a":"a", "b":"b"}`)) - - Ω(`{"a":null, "b":null}`).ShouldNot(MatchJSON(`{"c":"c", "d":"d"}`)) - Ω(`{"a":null, "b":null, "c":null}`).ShouldNot(MatchJSON(`{"a":null, "b":null, "d":null}`)) - }) - - It("should work with byte arrays", func() { - Ω([]byte("{}")).Should(MatchJSON([]byte("{}"))) - Ω("{}").Should(MatchJSON([]byte("{}"))) - Ω([]byte("{}")).Should(MatchJSON("{}")) - }) - }) - - Context("when a key mismatch is found", func() { - It("reports the first found mismatch", func() { - subject := MatchJSONMatcher{JSONToMatch: `5`} - actual := `7` - subject.Match(actual) - - failureMessage := subject.FailureMessage(`7`) - Ω(failureMessage).ToNot(ContainSubstring("first mismatched key")) - - subject = MatchJSONMatcher{JSONToMatch: `{"a": 1, "b.g": {"c": 2, "1": ["hello", "see ya"]}}`} - actual = `{"a": 1, "b.g": {"c": 2, "1": ["hello", "goodbye"]}}` - subject.Match(actual) - - failureMessage = subject.FailureMessage(actual) - Ω(failureMessage).To(ContainSubstring(`first mismatched key: "b.g"."1"[1]`)) - }) - }) - - Context("when the expected is not valid JSON", func() { - It("should error and explain why", func() { - success, err := (&MatchJSONMatcher{JSONToMatch: `{}`}).Match(`oops`) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("Actual 'oops' should be valid JSON")) - }) - }) - - Context("when the actual is not valid JSON", func() { - It("should error and explain why", func() { - success, err := (&MatchJSONMatcher{JSONToMatch: `oops`}).Match(`{}`) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("Expected 'oops' should be valid JSON")) - }) - }) - - Context("when the expected is neither a string nor a stringer nor a byte array", func() { - It("should error", func() { - success, err := (&MatchJSONMatcher{JSONToMatch: 2}).Match("{}") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte. Got expected:\n : 2")) - - success, err = (&MatchJSONMatcher{JSONToMatch: nil}).Match("{}") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte. Got expected:\n : nil")) - }) - }) - - Context("when the actual is neither a string nor a stringer nor a byte array", func() { - It("should error", func() { - success, err := (&MatchJSONMatcher{JSONToMatch: "{}"}).Match(2) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte. Got actual:\n : 2")) - - success, err = (&MatchJSONMatcher{JSONToMatch: "{}"}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("MatchJSONMatcher matcher requires a string, stringer, or []byte. Got actual:\n : nil")) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go deleted file mode 100644 index bb521cce..00000000 --- a/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("MatchRegexp", func() { - Context("when actual is a string", func() { - It("should match against the string", func() { - Ω(" a2!bla").Should(MatchRegexp(`\d!`)) - Ω(" a2!bla").ShouldNot(MatchRegexp(`[A-Z]`)) - }) - }) - - Context("when actual is a stringer", func() { - It("should call the stringer and match agains the returned string", func() { - Ω(&myStringer{a: "Abc3"}).Should(MatchRegexp(`[A-Z][a-z]+\d`)) - }) - }) - - Context("when the matcher is called with multiple arguments", func() { - It("should pass the string and arguments to sprintf", func() { - Ω(" a23!bla").Should(MatchRegexp(`\d%d!`, 3)) - }) - }) - - Context("when actual is neither a string nor a stringer", func() { - It("should error", func() { - success, err := (&MatchRegexpMatcher{Regexp: `\d`}).Match(2) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when the passed in regexp fails to compile", func() { - It("should error", func() { - success, err := (&MatchRegexpMatcher{Regexp: "("}).Match("Foo") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/match_xml_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_xml_matcher_test.go deleted file mode 100644 index b325f361..00000000 --- a/vendor/github.com/onsi/gomega/matchers/match_xml_matcher_test.go +++ /dev/null @@ -1,97 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("MatchXMLMatcher", func() { - - var ( - sample_01 = readFileContents("test_data/xml/sample_01.xml") - sample_02 = readFileContents("test_data/xml/sample_02.xml") - sample_03 = readFileContents("test_data/xml/sample_03.xml") - sample_04 = readFileContents("test_data/xml/sample_04.xml") - sample_05 = readFileContents("test_data/xml/sample_05.xml") - sample_06 = readFileContents("test_data/xml/sample_06.xml") - sample_07 = readFileContents("test_data/xml/sample_07.xml") - sample_08 = readFileContents("test_data/xml/sample_08.xml") - sample_09 = readFileContents("test_data/xml/sample_09.xml") - sample_10 = readFileContents("test_data/xml/sample_10.xml") - sample_11 = readFileContents("test_data/xml/sample_11.xml") - ) - - Context("When passed stringifiables", func() { - It("matches documents regardless of the attribute order", func() { - a := `` - b := `` - Ω(b).Should(MatchXML(a)) - Ω(a).Should(MatchXML(b)) - }) - - It("should succeed if the XML matches", func() { - Ω(sample_01).Should(MatchXML(sample_01)) // same XML - Ω(sample_01).Should(MatchXML(sample_02)) // same XML with blank lines - Ω(sample_01).Should(MatchXML(sample_03)) // same XML with different formatting - Ω(sample_01).ShouldNot(MatchXML(sample_04)) // same structures with different values - Ω(sample_01).ShouldNot(MatchXML(sample_05)) // different structures - Ω(sample_06).ShouldNot(MatchXML(sample_07)) // same xml names with different namespaces - Ω(sample_07).ShouldNot(MatchXML(sample_08)) // same structures with different values - Ω(sample_09).ShouldNot(MatchXML(sample_10)) // same structures with different attribute values - Ω(sample_11).Should(MatchXML(sample_11)) // with non UTF-8 encoding - }) - - It("should work with byte arrays", func() { - Ω([]byte(sample_01)).Should(MatchXML([]byte(sample_01))) - Ω([]byte(sample_01)).Should(MatchXML(sample_01)) - Ω(sample_01).Should(MatchXML([]byte(sample_01))) - }) - }) - - Context("when the expected is not valid XML", func() { - It("should error and explain why", func() { - success, err := (&MatchXMLMatcher{XMLToMatch: sample_01}).Match(`oops`) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("Actual 'oops' should be valid XML")) - }) - }) - - Context("when the actual is not valid XML", func() { - It("should error and explain why", func() { - success, err := (&MatchXMLMatcher{XMLToMatch: `oops`}).Match(sample_01) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("Expected 'oops' should be valid XML")) - }) - }) - - Context("when the expected is neither a string nor a stringer nor a byte array", func() { - It("should error", func() { - success, err := (&MatchXMLMatcher{XMLToMatch: 2}).Match(sample_01) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("MatchXMLMatcher matcher requires a string, stringer, or []byte. Got expected:\n : 2")) - - success, err = (&MatchXMLMatcher{XMLToMatch: nil}).Match(sample_01) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("MatchXMLMatcher matcher requires a string, stringer, or []byte. Got expected:\n : nil")) - }) - }) - - Context("when the actual is neither a string nor a stringer nor a byte array", func() { - It("should error", func() { - success, err := (&MatchXMLMatcher{XMLToMatch: sample_01}).Match(2) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("MatchXMLMatcher matcher requires a string, stringer, or []byte. Got actual:\n : 2")) - - success, err = (&MatchXMLMatcher{XMLToMatch: sample_01}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - Ω(err.Error()).Should(ContainSubstring("MatchXMLMatcher matcher requires a string, stringer, or []byte. Got actual:\n : nil")) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go deleted file mode 100644 index 8e63de19..00000000 --- a/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher_test.go +++ /dev/null @@ -1,94 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("MatchYAMLMatcher", func() { - Context("When passed stringifiables", func() { - It("should succeed if the YAML matches", func() { - Expect("---").Should(MatchYAML("")) - Expect("a: 1").Should(MatchYAML(`{"a":1}`)) - Expect("a: 1\nb: 2").Should(MatchYAML(`{"b":2, "a":1}`)) - }) - - It("should explain if the YAML does not match when it should", func() { - message := (&MatchYAMLMatcher{YAMLToMatch: "a: 1"}).FailureMessage("b: 2") - Expect(message).To(MatchRegexp(`Expected\s+: b: 2\s+to match YAML of\s+: a: 1`)) - }) - - It("should normalise the expected and actual when explaining if the YAML does not match when it should", func() { - message := (&MatchYAMLMatcher{YAMLToMatch: "a: 'one'"}).FailureMessage("{b: two}") - Expect(message).To(MatchRegexp(`Expected\s+: b: two\s+to match YAML of\s+: a: one`)) - }) - - It("should explain if the YAML matches when it should not", func() { - message := (&MatchYAMLMatcher{YAMLToMatch: "a: 1"}).NegatedFailureMessage("a: 1") - Expect(message).To(MatchRegexp(`Expected\s+: a: 1\s+not to match YAML of\s+: a: 1`)) - }) - - It("should normalise the expected and actual when explaining if the YAML matches when it should not", func() { - message := (&MatchYAMLMatcher{YAMLToMatch: "a: 'one'"}).NegatedFailureMessage("{a: one}") - Expect(message).To(MatchRegexp(`Expected\s+: a: one\s+not to match YAML of\s+: a: one`)) - }) - - It("should fail if the YAML does not match", func() { - Expect("a: 1").ShouldNot(MatchYAML(`{"b":2, "a":1}`)) - }) - - It("should work with byte arrays", func() { - Expect([]byte("a: 1")).Should(MatchYAML([]byte("a: 1"))) - Expect("a: 1").Should(MatchYAML([]byte("a: 1"))) - Expect([]byte("a: 1")).Should(MatchYAML("a: 1")) - }) - }) - - Context("when the expected is not valid YAML", func() { - It("should error and explain why", func() { - success, err := (&MatchYAMLMatcher{YAMLToMatch: ""}).Match("good:\nbad") - Expect(success).Should(BeFalse()) - Expect(err).Should(HaveOccurred()) - Expect(err.Error()).Should(ContainSubstring("Actual 'good:\nbad' should be valid YAML")) - }) - }) - - Context("when the actual is not valid YAML", func() { - It("should error and explain why", func() { - success, err := (&MatchYAMLMatcher{YAMLToMatch: "good:\nbad"}).Match("") - Expect(success).Should(BeFalse()) - Expect(err).Should(HaveOccurred()) - Expect(err.Error()).Should(ContainSubstring("Expected 'good:\nbad' should be valid YAML")) - }) - }) - - Context("when the expected is neither a string nor a stringer nor a byte array", func() { - It("should error", func() { - success, err := (&MatchYAMLMatcher{YAMLToMatch: 2}).Match("") - Expect(success).Should(BeFalse()) - Expect(err).Should(HaveOccurred()) - Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte. Got expected:\n : 2")) - - success, err = (&MatchYAMLMatcher{YAMLToMatch: nil}).Match("") - Expect(success).Should(BeFalse()) - Expect(err).Should(HaveOccurred()) - Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte. Got expected:\n : nil")) - }) - }) - - Context("when the actual is neither a string nor a stringer nor a byte array", func() { - It("should error", func() { - success, err := (&MatchYAMLMatcher{YAMLToMatch: ""}).Match(2) - Expect(success).Should(BeFalse()) - Expect(err).Should(HaveOccurred()) - Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte. Got actual:\n : 2")) - - success, err = (&MatchYAMLMatcher{YAMLToMatch: ""}).Match(nil) - Expect(success).Should(BeFalse()) - Expect(err).Should(HaveOccurred()) - Expect(err.Error()).Should(ContainSubstring("MatchYAMLMatcher matcher requires a string, stringer, or []byte. Got actual:\n : nil")) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go b/vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go deleted file mode 100644 index b5f76c99..00000000 --- a/vendor/github.com/onsi/gomega/matchers/matcher_tests_suite_test.go +++ /dev/null @@ -1,50 +0,0 @@ -package matchers_test - -import ( - "fmt" - "io/ioutil" - "os" - "testing" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" -) - -type myStringer struct { - a string -} - -func (s *myStringer) String() string { - return s.a -} - -type StringAlias string - -type myCustomType struct { - s string - n int - f float32 - arr []string -} - -func Test(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Gomega Matchers") -} - -func readFileContents(filePath string) []byte { - f := openFile(filePath) - b, err := ioutil.ReadAll(f) - if err != nil { - panic(fmt.Errorf("failed to read file contents: %v", err)) - } - return b -} - -func openFile(filePath string) *os.File { - f, err := os.Open(filePath) - if err != nil { - panic(fmt.Errorf("failed to open file: %v", err)) - } - return f -} diff --git a/vendor/github.com/onsi/gomega/matchers/not_test.go b/vendor/github.com/onsi/gomega/matchers/not_test.go deleted file mode 100644 index b3c1fdbf..00000000 --- a/vendor/github.com/onsi/gomega/matchers/not_test.go +++ /dev/null @@ -1,57 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("NotMatcher", func() { - Context("basic examples", func() { - It("works", func() { - Expect(input).To(Not(false1)) - Expect(input).To(Not(Not(true2))) - Expect(input).ToNot(Not(true3)) - Expect(input).ToNot(Not(Not(false1))) - Expect(input).To(Not(Not(Not(false2)))) - }) - }) - - Context("De Morgan's laws", func() { - It("~(A && B) == ~A || ~B", func() { - Expect(input).To(Not(And(false1, false2))) - Expect(input).To(Or(Not(false1), Not(false2))) - }) - It("~(A || B) == ~A && ~B", func() { - Expect(input).To(Not(Or(false1, false2))) - Expect(input).To(And(Not(false1), Not(false2))) - }) - }) - - Context("failure messages are opposite of original matchers' failure messages", func() { - Context("when match fails", func() { - It("gives a descriptive message", func() { - verifyFailureMessage(Not(HaveLen(2)), input, "not to have length 2") - }) - }) - - Context("when match succeeds, but expected it to fail", func() { - It("gives a descriptive message", func() { - verifyFailureMessage(Not(Not(HaveLen(3))), input, "to have length 3") - }) - }) - }) - - Context("MatchMayChangeInTheFuture()", func() { - It("Propagates value from wrapped matcher", func() { - m := Not(Or()) // an empty Or() always returns false, and indicates it cannot change - Expect(m.Match("anything")).To(BeTrue()) - Expect(m.(*NotMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse()) - }) - It("Defaults to true", func() { - m := Not(Equal(1)) // Equal does not have this method - Expect(m.Match(2)).To(BeTrue()) - Expect(m.(*NotMatcher).MatchMayChangeInTheFuture(2)).To(BeTrue()) // defaults to true - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/or_test.go b/vendor/github.com/onsi/gomega/matchers/or_test.go deleted file mode 100644 index 9589a174..00000000 --- a/vendor/github.com/onsi/gomega/matchers/or_test.go +++ /dev/null @@ -1,85 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("OrMatcher", func() { - It("works with positive cases", func() { - Expect(input).To(Or(true1)) - Expect(input).To(Or(true1, true2)) - Expect(input).To(Or(true1, false1)) - Expect(input).To(Or(false1, true2)) - Expect(input).To(Or(true1, true2, true3)) - Expect(input).To(Or(true1, true2, false3)) - Expect(input).To(Or(true1, false2, true3)) - Expect(input).To(Or(false1, true2, true3)) - Expect(input).To(Or(true1, false2, false3)) - Expect(input).To(Or(false1, false2, true3)) - - // use alias - Expect(input).To(SatisfyAny(false1, false2, true3)) - }) - - It("works with negative cases", func() { - Expect(input).ToNot(Or()) - Expect(input).ToNot(Or(false1)) - Expect(input).ToNot(Or(false1, false2)) - Expect(input).ToNot(Or(false1, false2, false3)) - }) - - Context("failure messages", func() { - Context("when match fails", func() { - It("gives a descriptive message", func() { - verifyFailureMessage(Or(false1, false2), input, - "To satisfy at least one of these matchers: [%!s(*matchers.HaveLenMatcher=&{1}) %!s(*matchers.EqualMatcher=&{hip})]") - }) - }) - - Context("when match succeeds, but expected it to fail", func() { - It("gives a descriptive message", func() { - verifyFailureMessage(Not(Or(true1, true2)), input, `not to have length 2`) - }) - }) - }) - - Context("MatchMayChangeInTheFuture", func() { - Context("Match returned false", func() { - It("returns true if any of the matchers could change", func() { - // 3 matchers, all return false, and all could change - m := Or(BeNil(), Equal("hip"), HaveLen(1)) - Expect(m.Match("hi")).To(BeFalse()) - Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // all 3 of these matchers default to 'true' - }) - It("returns false if none of the matchers could change", func() { - // empty Or() has the property of never matching, and never can change since there are no sub-matchers that could change - m := Or() - Expect(m.Match("anything")).To(BeFalse()) - Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("anything")).To(BeFalse()) - - // Or() with 3 sub-matchers that return false, and can't change - m = Or(Or(), Or(), Or()) - Expect(m.Match("hi")).To(BeFalse()) - Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) // the 3 empty Or()'s won't change - }) - }) - Context("Match returned true", func() { - Context("returns value of the successful matcher", func() { - It("false if successful matcher not going to change", func() { - // 3 matchers: 1st returns false, 2nd returns true and is not going to change, 3rd is never called - m := Or(BeNil(), And(), Equal(1)) - Expect(m.Match("hi")).To(BeTrue()) - Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeFalse()) - }) - It("true if successful matcher indicates it might change", func() { - // 3 matchers: 1st returns false, 2nd returns true and "might" change, 3rd is never called - m := Or(Not(BeNil()), Equal("hi"), Equal(1)) - Expect(m.Match("hi")).To(BeTrue()) - Expect(m.(*OrMatcher).MatchMayChangeInTheFuture("hi")).To(BeTrue()) // Equal("hi") indicates it might change - }) - }) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go deleted file mode 100644 index 6b859a7e..00000000 --- a/vendor/github.com/onsi/gomega/matchers/panic_matcher_test.go +++ /dev/null @@ -1,45 +0,0 @@ -package matchers_test - -import ( - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("Panic", func() { - Context("when passed something that's not a function that takes zero arguments and returns nothing", func() { - It("should error", func() { - success, err := (&PanicMatcher{}).Match("foo") - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&PanicMatcher{}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&PanicMatcher{}).Match(func(foo string) {}) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&PanicMatcher{}).Match(func() string { return "bar" }) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when passed a function of the correct type", func() { - It("should call the function and pass if the function panics", func() { - Ω(func() { panic("ack!") }).Should(Panic()) - Ω(func() {}).ShouldNot(Panic()) - }) - }) - - Context("when assertion fails", func() { - It("should print the object passed to Panic", func() { - failuresMessages := InterceptGomegaFailures(func() { - Ω(func() { panic("ack!") }).ShouldNot(Panic()) - }) - Ω(failuresMessages).Should(ConsistOf(MatchRegexp("not to panic, but panicked with\\s*: ack!"))) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go deleted file mode 100644 index 938c078e..00000000 --- a/vendor/github.com/onsi/gomega/matchers/receive_matcher_test.go +++ /dev/null @@ -1,280 +0,0 @@ -package matchers_test - -import ( - "time" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -type kungFuActor interface { - DrunkenMaster() bool -} - -type jackie struct { - name string -} - -func (j *jackie) DrunkenMaster() bool { - return true -} - -var _ = Describe("ReceiveMatcher", func() { - Context("with no argument", func() { - Context("for a buffered channel", func() { - It("should succeed", func() { - channel := make(chan bool, 1) - - Ω(channel).ShouldNot(Receive()) - - channel <- true - - Ω(channel).Should(Receive()) - }) - }) - - Context("for an unbuffered channel", func() { - It("should succeed (eventually)", func() { - channel := make(chan bool) - - Ω(channel).ShouldNot(Receive()) - - go func() { - time.Sleep(10 * time.Millisecond) - channel <- true - }() - - Eventually(channel).Should(Receive()) - }) - }) - }) - - Context("with a pointer argument", func() { - Context("of the correct type", func() { - It("should write the value received on the channel to the pointer", func() { - channel := make(chan int, 1) - - var value int - - Ω(channel).ShouldNot(Receive(&value)) - Ω(value).Should(BeZero()) - - channel <- 17 - - Ω(channel).Should(Receive(&value)) - Ω(value).Should(Equal(17)) - }) - }) - - Context("to various types of objects", func() { - It("should work", func() { - //channels of strings - stringChan := make(chan string, 1) - stringChan <- "foo" - - var s string - Ω(stringChan).Should(Receive(&s)) - Ω(s).Should(Equal("foo")) - - //channels of slices - sliceChan := make(chan []bool, 1) - sliceChan <- []bool{true, true, false} - - var sl []bool - Ω(sliceChan).Should(Receive(&sl)) - Ω(sl).Should(Equal([]bool{true, true, false})) - - //channels of channels - chanChan := make(chan chan bool, 1) - c := make(chan bool) - chanChan <- c - - var receivedC chan bool - Ω(chanChan).Should(Receive(&receivedC)) - Ω(receivedC).Should(Equal(c)) - - //channels of interfaces - jackieChan := make(chan kungFuActor, 1) - aJackie := &jackie{name: "Jackie Chan"} - jackieChan <- aJackie - - var theJackie kungFuActor - Ω(jackieChan).Should(Receive(&theJackie)) - Ω(theJackie).Should(Equal(aJackie)) - }) - }) - - Context("of the wrong type", func() { - It("should error", func() { - channel := make(chan int) - var incorrectType bool - - success, err := (&ReceiveMatcher{Arg: &incorrectType}).Match(channel) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - var notAPointer int - success, err = (&ReceiveMatcher{Arg: notAPointer}).Match(channel) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - }) - - Context("with a matcher", func() { - It("should defer to the underlying matcher", func() { - intChannel := make(chan int, 1) - intChannel <- 3 - Ω(intChannel).Should(Receive(Equal(3))) - - intChannel <- 2 - Ω(intChannel).ShouldNot(Receive(Equal(3))) - - stringChannel := make(chan []string, 1) - stringChannel <- []string{"foo", "bar", "baz"} - Ω(stringChannel).Should(Receive(ContainElement(ContainSubstring("fo")))) - - stringChannel <- []string{"foo", "bar", "baz"} - Ω(stringChannel).ShouldNot(Receive(ContainElement(ContainSubstring("archipelago")))) - }) - - It("should defer to the underlying matcher for the message", func() { - matcher := Receive(Equal(3)) - channel := make(chan int, 1) - channel <- 2 - matcher.Match(channel) - Ω(matcher.FailureMessage(channel)).Should(MatchRegexp(`Expected\s+: 2\s+to equal\s+: 3`)) - - channel <- 3 - matcher.Match(channel) - Ω(matcher.NegatedFailureMessage(channel)).Should(MatchRegexp(`Expected\s+: 3\s+not to equal\s+: 3`)) - }) - - It("should work just fine with Eventually", func() { - stringChannel := make(chan string) - - go func() { - time.Sleep(5 * time.Millisecond) - stringChannel <- "A" - time.Sleep(5 * time.Millisecond) - stringChannel <- "B" - }() - - Eventually(stringChannel).Should(Receive(Equal("B"))) - }) - - Context("if the matcher errors", func() { - It("should error", func() { - channel := make(chan int, 1) - channel <- 3 - success, err := (&ReceiveMatcher{Arg: ContainSubstring("three")}).Match(channel) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("if nothing is received", func() { - It("should fail", func() { - channel := make(chan int, 1) - success, err := (&ReceiveMatcher{Arg: Equal(1)}).Match(channel) - Ω(success).Should(BeFalse()) - Ω(err).ShouldNot(HaveOccurred()) - }) - }) - }) - - Context("When actual is a *closed* channel", func() { - Context("for a buffered channel", func() { - It("should work until it hits the end of the buffer", func() { - channel := make(chan bool, 1) - channel <- true - - close(channel) - - Ω(channel).Should(Receive()) - Ω(channel).ShouldNot(Receive()) - }) - }) - - Context("for an unbuffered channel", func() { - It("should always fail", func() { - channel := make(chan bool) - close(channel) - - Ω(channel).ShouldNot(Receive()) - }) - }) - }) - - Context("When actual is a send-only channel", func() { - It("should error", func() { - channel := make(chan bool) - - var writerChannel chan<- bool - writerChannel = channel - - success, err := (&ReceiveMatcher{}).Match(writerChannel) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Context("when acutal is a non-channel", func() { - It("should error", func() { - var nilChannel chan bool - - success, err := (&ReceiveMatcher{}).Match(nilChannel) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&ReceiveMatcher{}).Match(nil) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - - success, err = (&ReceiveMatcher{}).Match(3) - Ω(success).Should(BeFalse()) - Ω(err).Should(HaveOccurred()) - }) - }) - - Describe("when used with eventually and a custom matcher", func() { - It("should return the matcher's error when a failing value is received on the channel, instead of the must receive something failure", func() { - failures := InterceptGomegaFailures(func() { - c := make(chan string, 0) - Eventually(c, 0.01).Should(Receive(Equal("hello"))) - }) - Ω(failures[0]).Should(ContainSubstring("When passed a matcher, ReceiveMatcher's channel *must* receive something.")) - - failures = InterceptGomegaFailures(func() { - c := make(chan string, 1) - c <- "hi" - Eventually(c, 0.01).Should(Receive(Equal("hello"))) - }) - Ω(failures[0]).Should(ContainSubstring(": hello")) - }) - }) - - Describe("Bailing early", func() { - It("should bail early when passed a closed channel", func() { - c := make(chan bool) - close(c) - - t := time.Now() - failures := InterceptGomegaFailures(func() { - Eventually(c).Should(Receive()) - }) - Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond)) - Ω(failures).Should(HaveLen(1)) - }) - - It("should bail early when passed a non-channel", func() { - t := time.Now() - failures := InterceptGomegaFailures(func() { - Eventually(3).Should(Receive()) - }) - Ω(time.Since(t)).Should(BeNumerically("<", 500*time.Millisecond)) - Ω(failures).Should(HaveLen(1)) - }) - }) -}) diff --git a/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go b/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go deleted file mode 100644 index 6b62c8bb..00000000 --- a/vendor/github.com/onsi/gomega/matchers/succeed_matcher_test.go +++ /dev/null @@ -1,62 +0,0 @@ -package matchers_test - -import ( - "errors" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -func Erroring() error { - return errors.New("bam") -} - -func NotErroring() error { - return nil -} - -type AnyType struct{} - -func Invalid() *AnyType { - return nil -} - -var _ = Describe("Succeed", func() { - It("should succeed if the function succeeds", func() { - Ω(NotErroring()).Should(Succeed()) - }) - - It("should succeed (in the negated) if the function errored", func() { - Ω(Erroring()).ShouldNot(Succeed()) - }) - - It("should not if passed a non-error", func() { - success, err := (&SucceedMatcher{}).Match(Invalid()) - Ω(success).Should(BeFalse()) - Ω(err).Should(MatchError("Expected an error-type. Got:\n <*matchers_test.AnyType | 0x0>: nil")) - }) - - It("doesn't support non-error type", func() { - success, err := (&SucceedMatcher{}).Match(AnyType{}) - Ω(success).Should(BeFalse()) - Ω(err).Should(MatchError("Expected an error-type. Got:\n : {}")) - }) - - It("doesn't support non-error pointer type", func() { - success, err := (&SucceedMatcher{}).Match(&AnyType{}) - Ω(success).Should(BeFalse()) - Ω(err).Should(MatchError(MatchRegexp(`Expected an error-type. Got:\n <*matchers_test.AnyType | 0x[[:xdigit:]]+>: {}`))) - }) - - It("should not succeed with pointer types that conform to error interface", func() { - err := &CustomErr{"ohai"} - Ω(err).ShouldNot(Succeed()) - }) - - It("should succeed with nil pointers to types that conform to error interface", func() { - var err *CustomErr = nil - Ω(err).Should(Succeed()) - }) - -}) diff --git a/vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE b/vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE deleted file mode 100644 index 8edd8175..00000000 --- a/vendor/github.com/onsi/gomega/matchers/support/goraph/MIT.LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014 Amit Kumar Gupta - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_01.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_01.xml deleted file mode 100644 index 90f0a1b4..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_01.xml +++ /dev/null @@ -1,6 +0,0 @@ - - Tove - Jani - Reminder - Don't forget me this weekend! - \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_02.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_02.xml deleted file mode 100644 index 3863b83c..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_02.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - Tove - Jani - Reminder - Don't forget me this weekend! - - diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_03.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_03.xml deleted file mode 100644 index a491c213..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_03.xml +++ /dev/null @@ -1 +0,0 @@ - Tove Jani Reminder Don't forget me this weekend! diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_04.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_04.xml deleted file mode 100644 index dcfd3db0..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_04.xml +++ /dev/null @@ -1,6 +0,0 @@ - - Tove - John - Doe - Don't forget me this weekend! - \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_05.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_05.xml deleted file mode 100644 index de15a6a5..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_05.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - Empire Burlesque - Bob Dylan - USA - Columbia - 10.90 - 1985 - - - Hide your heart - Bonnie Tyler - UK - CBS Records - 9.90 - 1988 - - - Greatest Hits - Dolly Parton - USA - RCA - 9.90 - 1982 - - - Still got the blues - Gary Moore - UK - Virgin records - 10.20 - 1990 - - - Eros - Eros Ramazzotti - EU - BMG - 9.90 - 1997 - - - One night only - Bee Gees - UK - Polydor - 10.90 - 1998 - - - Sylvias Mother - Dr.Hook - UK - CBS - 8.10 - 1973 - - - Maggie May - Rod Stewart - UK - Pickwick - 8.50 - 1990 - - - Romanza - Andrea Bocelli - EU - Polydor - 10.80 - 1996 - - - When a man loves a woman - Percy Sledge - USA - Atlantic - 8.70 - 1987 - - - Black angel - Savage Rose - EU - Mega - 10.90 - 1995 - - - 1999 Grammy Nominees - Many - USA - Grammy - 10.20 - 1999 - - - For the good times - Kenny Rogers - UK - Mucik Master - 8.70 - 1995 - - - Big Willie style - Will Smith - USA - Columbia - 9.90 - 1997 - - - Tupelo Honey - Van Morrison - UK - Polydor - 8.20 - 1971 - - - Soulsville - Jorn Hoel - Norway - WEA - 7.90 - 1996 - - - The very best of - Cat Stevens - UK - Island - 8.90 - 1990 - - - Stop - Sam Brown - UK - A and M - 8.90 - 1988 - - - Bridge of Spies - T'Pau - UK - Siren - 7.90 - 1987 - - - Private Dancer - Tina Turner - UK - Capitol - 8.90 - 1983 - - - Midt om natten - Kim Larsen - EU - Medley - 7.80 - 1983 - - - Pavarotti Gala Concert - Luciano Pavarotti - UK - DECCA - 9.90 - 1991 - - - The dock of the bay - Otis Redding - USA - Stax Records - 7.90 - 1968 - - - Picture book - Simply Red - EU - Elektra - 7.20 - 1985 - - - Red - The Communards - UK - London - 7.80 - 1987 - - - Unchain my heart - Joe Cocker - USA - EMI - 8.20 - 1987 - - diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_06.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_06.xml deleted file mode 100644 index 4ba90fb9..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_06.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -
ApplesBananas
- - African Coffee Table - 80 - 120 -
-
\ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_07.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_07.xml deleted file mode 100644 index 34b9e977..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_07.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Apples - Bananas - - - - African Coffee Table - 80 - 120 - - \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_08.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_08.xml deleted file mode 100644 index ccaee4e1..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_08.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Apples - Oranges - - - - African Coffee Table - 80 - 120 - - \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_09.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_09.xml deleted file mode 100644 index 531f84d3..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_09.xml +++ /dev/null @@ -1,4 +0,0 @@ - - Foo - Bar - \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_10.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_10.xml deleted file mode 100644 index b1e1e1fb..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_10.xml +++ /dev/null @@ -1,4 +0,0 @@ - - Foo - Bar - \ No newline at end of file diff --git a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_11.xml b/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_11.xml deleted file mode 100644 index 3132b0f9..00000000 --- a/vendor/github.com/onsi/gomega/matchers/test_data/xml/sample_11.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - Tove - Jani - Reminder - Don't forget me this weekend! - diff --git a/vendor/github.com/onsi/gomega/matchers/with_transform_test.go b/vendor/github.com/onsi/gomega/matchers/with_transform_test.go deleted file mode 100644 index e52bf8e6..00000000 --- a/vendor/github.com/onsi/gomega/matchers/with_transform_test.go +++ /dev/null @@ -1,102 +0,0 @@ -package matchers_test - -import ( - "errors" - - . "github.com/onsi/ginkgo" - . "github.com/onsi/gomega" - . "github.com/onsi/gomega/matchers" -) - -var _ = Describe("WithTransformMatcher", func() { - - var plus1 = func(i int) int { return i + 1 } - - Context("Panic if transform function invalid", func() { - panicsWithTransformer := func(transform interface{}) { - ExpectWithOffset(1, func() { WithTransform(transform, nil) }).To(Panic()) - } - It("nil", func() { - panicsWithTransformer(nil) - }) - Context("Invalid number of args, but correct return value count", func() { - It("zero", func() { - panicsWithTransformer(func() int { return 5 }) - }) - It("two", func() { - panicsWithTransformer(func(i, j int) int { return 5 }) - }) - }) - Context("Invalid number of return values, but correct number of arguments", func() { - It("zero", func() { - panicsWithTransformer(func(i int) {}) - }) - It("two", func() { - panicsWithTransformer(func(i int) (int, int) { return 5, 6 }) - }) - }) - }) - - It("works with positive cases", func() { - Expect(1).To(WithTransform(plus1, Equal(2))) - Expect(1).To(WithTransform(plus1, WithTransform(plus1, Equal(3)))) - Expect(1).To(WithTransform(plus1, And(Equal(2), BeNumerically(">", 1)))) - - // transform expects custom type - type S struct { - A int - B string - } - transformer := func(s S) string { return s.B } - Expect(S{1, "hi"}).To(WithTransform(transformer, Equal("hi"))) - - // transform expects interface - errString := func(e error) string { return e.Error() } - Expect(errors.New("abc")).To(WithTransform(errString, Equal("abc"))) - }) - - It("works with negative cases", func() { - Expect(1).ToNot(WithTransform(plus1, Equal(3))) - Expect(1).ToNot(WithTransform(plus1, WithTransform(plus1, Equal(2)))) - }) - - Context("failure messages", func() { - Context("when match fails", func() { - It("gives a descriptive message", func() { - m := WithTransform(plus1, Equal(3)) - Expect(m.Match(1)).To(BeFalse()) - Expect(m.FailureMessage(1)).To(Equal("Expected\n : 2\nto equal\n : 3")) - }) - }) - - Context("when match succeeds, but expected it to fail", func() { - It("gives a descriptive message", func() { - m := Not(WithTransform(plus1, Equal(3))) - Expect(m.Match(2)).To(BeFalse()) - Expect(m.FailureMessage(2)).To(Equal("Expected\n : 3\nnot to equal\n : 3")) - }) - }) - - Context("actual value is incompatible with transform function's argument type", func() { - It("gracefully fails if transform cannot be performed", func() { - m := WithTransform(plus1, Equal(3)) - result, err := m.Match("hi") // give it a string but transform expects int; doesn't panic - Expect(result).To(BeFalse()) - Expect(err).To(MatchError("Transform function expects 'int' but we have 'string'")) - }) - }) - }) - - Context("MatchMayChangeInTheFuture()", func() { - It("Propagates value from wrapped matcher on the transformed value", func() { - m := WithTransform(plus1, Or()) // empty Or() always returns false, and indicates it cannot change - Expect(m.Match(1)).To(BeFalse()) - Expect(m.(*WithTransformMatcher).MatchMayChangeInTheFuture(1)).To(BeFalse()) // empty Or() indicates cannot change - }) - It("Defaults to true", func() { - m := WithTransform(plus1, Equal(2)) // Equal does not have this method - Expect(m.Match(1)).To(BeTrue()) - Expect(m.(*WithTransformMatcher).MatchMayChangeInTheFuture(1)).To(BeTrue()) // defaults to true - }) - }) -}) diff --git a/vendor/github.com/sirupsen/logrus/alt_exit_test.go b/vendor/github.com/sirupsen/logrus/alt_exit_test.go deleted file mode 100644 index a08b1a89..00000000 --- a/vendor/github.com/sirupsen/logrus/alt_exit_test.go +++ /dev/null @@ -1,83 +0,0 @@ -package logrus - -import ( - "io/ioutil" - "log" - "os" - "os/exec" - "path/filepath" - "testing" - "time" -) - -func TestRegister(t *testing.T) { - current := len(handlers) - RegisterExitHandler(func() {}) - if len(handlers) != current+1 { - t.Fatalf("expected %d handlers, got %d", current+1, len(handlers)) - } -} - -func TestHandler(t *testing.T) { - tempDir, err := ioutil.TempDir("", "test_handler") - if err != nil { - log.Fatalf("can't create temp dir. %q", err) - } - defer os.RemoveAll(tempDir) - - gofile := filepath.Join(tempDir, "gofile.go") - if err := ioutil.WriteFile(gofile, testprog, 0666); err != nil { - t.Fatalf("can't create go file. %q", err) - } - - outfile := filepath.Join(tempDir, "outfile.out") - arg := time.Now().UTC().String() - err = exec.Command("go", "run", gofile, outfile, arg).Run() - if err == nil { - t.Fatalf("completed normally, should have failed") - } - - data, err := ioutil.ReadFile(outfile) - if err != nil { - t.Fatalf("can't read output file %s. %q", outfile, err) - } - - if string(data) != arg { - t.Fatalf("bad data. Expected %q, got %q", data, arg) - } -} - -var testprog = []byte(` -// Test program for atexit, gets output file and data as arguments and writes -// data to output file in atexit handler. -package main - -import ( - "github.com/sirupsen/logrus" - "flag" - "fmt" - "io/ioutil" -) - -var outfile = "" -var data = "" - -func handler() { - ioutil.WriteFile(outfile, []byte(data), 0666) -} - -func badHandler() { - n := 0 - fmt.Println(1/n) -} - -func main() { - flag.Parse() - outfile = flag.Arg(0) - data = flag.Arg(1) - - logrus.RegisterExitHandler(handler) - logrus.RegisterExitHandler(badHandler) - logrus.Fatal("Bye bye") -} -`) diff --git a/vendor/github.com/sirupsen/logrus/entry_test.go b/vendor/github.com/sirupsen/logrus/entry_test.go deleted file mode 100644 index 99c3b41d..00000000 --- a/vendor/github.com/sirupsen/logrus/entry_test.go +++ /dev/null @@ -1,77 +0,0 @@ -package logrus - -import ( - "bytes" - "fmt" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestEntryWithError(t *testing.T) { - - assert := assert.New(t) - - defer func() { - ErrorKey = "error" - }() - - err := fmt.Errorf("kaboom at layer %d", 4711) - - assert.Equal(err, WithError(err).Data["error"]) - - logger := New() - logger.Out = &bytes.Buffer{} - entry := NewEntry(logger) - - assert.Equal(err, entry.WithError(err).Data["error"]) - - ErrorKey = "err" - - assert.Equal(err, entry.WithError(err).Data["err"]) - -} - -func TestEntryPanicln(t *testing.T) { - errBoom := fmt.Errorf("boom time") - - defer func() { - p := recover() - assert.NotNil(t, p) - - switch pVal := p.(type) { - case *Entry: - assert.Equal(t, "kaboom", pVal.Message) - assert.Equal(t, errBoom, pVal.Data["err"]) - default: - t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal) - } - }() - - logger := New() - logger.Out = &bytes.Buffer{} - entry := NewEntry(logger) - entry.WithField("err", errBoom).Panicln("kaboom") -} - -func TestEntryPanicf(t *testing.T) { - errBoom := fmt.Errorf("boom again") - - defer func() { - p := recover() - assert.NotNil(t, p) - - switch pVal := p.(type) { - case *Entry: - assert.Equal(t, "kaboom true", pVal.Message) - assert.Equal(t, errBoom, pVal.Data["err"]) - default: - t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal) - } - }() - - logger := New() - logger.Out = &bytes.Buffer{} - entry := NewEntry(logger) - entry.WithField("err", errBoom).Panicf("kaboom %v", true) -} diff --git a/vendor/github.com/sirupsen/logrus/example_basic_test.go b/vendor/github.com/sirupsen/logrus/example_basic_test.go deleted file mode 100644 index a2acf550..00000000 --- a/vendor/github.com/sirupsen/logrus/example_basic_test.go +++ /dev/null @@ -1,69 +0,0 @@ -package logrus_test - -import ( - "github.com/sirupsen/logrus" - "os" -) - -func Example_basic() { - var log = logrus.New() - log.Formatter = new(logrus.JSONFormatter) - log.Formatter = new(logrus.TextFormatter) //default - log.Formatter.(*logrus.TextFormatter).DisableTimestamp = true // remove timestamp from test output - log.Level = logrus.DebugLevel - log.Out = os.Stdout - - // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666) - // if err == nil { - // log.Out = file - // } else { - // log.Info("Failed to log to file, using default stderr") - // } - - defer func() { - err := recover() - if err != nil { - entry := err.(*logrus.Entry) - log.WithFields(logrus.Fields{ - "omg": true, - "err_animal": entry.Data["animal"], - "err_size": entry.Data["size"], - "err_level": entry.Level, - "err_message": entry.Message, - "number": 100, - }).Error("The ice breaks!") // or use Fatal() to force the process to exit with a nonzero code - } - }() - - log.WithFields(logrus.Fields{ - "animal": "walrus", - "number": 8, - }).Debug("Started observing beach") - - log.WithFields(logrus.Fields{ - "animal": "walrus", - "size": 10, - }).Info("A group of walrus emerges from the ocean") - - log.WithFields(logrus.Fields{ - "omg": true, - "number": 122, - }).Warn("The group's number increased tremendously!") - - log.WithFields(logrus.Fields{ - "temperature": -4, - }).Debug("Temperature changes") - - log.WithFields(logrus.Fields{ - "animal": "orca", - "size": 9009, - }).Panic("It's over 9000!") - - // Output: - // level=debug msg="Started observing beach" animal=walrus number=8 - // level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10 - // level=warning msg="The group's number increased tremendously!" number=122 omg=true - // level=debug msg="Temperature changes" temperature=-4 - // level=panic msg="It's over 9000!" animal=orca size=9009 - // level=error msg="The ice breaks!" err_animal=orca err_level=panic err_message="It's over 9000!" err_size=9009 number=100 omg=true -} diff --git a/vendor/github.com/sirupsen/logrus/example_hook_test.go b/vendor/github.com/sirupsen/logrus/example_hook_test.go deleted file mode 100644 index d4ddffca..00000000 --- a/vendor/github.com/sirupsen/logrus/example_hook_test.go +++ /dev/null @@ -1,35 +0,0 @@ -package logrus_test - -import ( - "github.com/sirupsen/logrus" - "gopkg.in/gemnasium/logrus-airbrake-hook.v2" - "os" -) - -func Example_hook() { - var log = logrus.New() - log.Formatter = new(logrus.TextFormatter) // default - log.Formatter.(*logrus.TextFormatter).DisableTimestamp = true // remove timestamp from test output - log.Hooks.Add(airbrake.NewHook(123, "xyz", "development")) - log.Out = os.Stdout - - log.WithFields(logrus.Fields{ - "animal": "walrus", - "size": 10, - }).Info("A group of walrus emerges from the ocean") - - log.WithFields(logrus.Fields{ - "omg": true, - "number": 122, - }).Warn("The group's number increased tremendously!") - - log.WithFields(logrus.Fields{ - "omg": true, - "number": 100, - }).Error("The ice breaks!") - - // Output: - // level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10 - // level=warning msg="The group's number increased tremendously!" number=122 omg=true - // level=error msg="The ice breaks!" number=100 omg=true -} diff --git a/vendor/github.com/sirupsen/logrus/formatter_bench_test.go b/vendor/github.com/sirupsen/logrus/formatter_bench_test.go deleted file mode 100644 index d9481589..00000000 --- a/vendor/github.com/sirupsen/logrus/formatter_bench_test.go +++ /dev/null @@ -1,101 +0,0 @@ -package logrus - -import ( - "fmt" - "testing" - "time" -) - -// smallFields is a small size data set for benchmarking -var smallFields = Fields{ - "foo": "bar", - "baz": "qux", - "one": "two", - "three": "four", -} - -// largeFields is a large size data set for benchmarking -var largeFields = Fields{ - "foo": "bar", - "baz": "qux", - "one": "two", - "three": "four", - "five": "six", - "seven": "eight", - "nine": "ten", - "eleven": "twelve", - "thirteen": "fourteen", - "fifteen": "sixteen", - "seventeen": "eighteen", - "nineteen": "twenty", - "a": "b", - "c": "d", - "e": "f", - "g": "h", - "i": "j", - "k": "l", - "m": "n", - "o": "p", - "q": "r", - "s": "t", - "u": "v", - "w": "x", - "y": "z", - "this": "will", - "make": "thirty", - "entries": "yeah", -} - -var errorFields = Fields{ - "foo": fmt.Errorf("bar"), - "baz": fmt.Errorf("qux"), -} - -func BenchmarkErrorTextFormatter(b *testing.B) { - doBenchmark(b, &TextFormatter{DisableColors: true}, errorFields) -} - -func BenchmarkSmallTextFormatter(b *testing.B) { - doBenchmark(b, &TextFormatter{DisableColors: true}, smallFields) -} - -func BenchmarkLargeTextFormatter(b *testing.B) { - doBenchmark(b, &TextFormatter{DisableColors: true}, largeFields) -} - -func BenchmarkSmallColoredTextFormatter(b *testing.B) { - doBenchmark(b, &TextFormatter{ForceColors: true}, smallFields) -} - -func BenchmarkLargeColoredTextFormatter(b *testing.B) { - doBenchmark(b, &TextFormatter{ForceColors: true}, largeFields) -} - -func BenchmarkSmallJSONFormatter(b *testing.B) { - doBenchmark(b, &JSONFormatter{}, smallFields) -} - -func BenchmarkLargeJSONFormatter(b *testing.B) { - doBenchmark(b, &JSONFormatter{}, largeFields) -} - -func doBenchmark(b *testing.B, formatter Formatter, fields Fields) { - logger := New() - - entry := &Entry{ - Time: time.Time{}, - Level: InfoLevel, - Message: "message", - Data: fields, - Logger: logger, - } - var d []byte - var err error - for i := 0; i < b.N; i++ { - d, err = formatter.Format(entry) - if err != nil { - b.Fatal(err) - } - b.SetBytes(int64(len(d))) - } -} diff --git a/vendor/github.com/sirupsen/logrus/hook_test.go b/vendor/github.com/sirupsen/logrus/hook_test.go deleted file mode 100644 index 4fea7514..00000000 --- a/vendor/github.com/sirupsen/logrus/hook_test.go +++ /dev/null @@ -1,144 +0,0 @@ -package logrus - -import ( - "sync" - "testing" - - "github.com/stretchr/testify/assert" -) - -type TestHook struct { - Fired bool -} - -func (hook *TestHook) Fire(entry *Entry) error { - hook.Fired = true - return nil -} - -func (hook *TestHook) Levels() []Level { - return []Level{ - DebugLevel, - InfoLevel, - WarnLevel, - ErrorLevel, - FatalLevel, - PanicLevel, - } -} - -func TestHookFires(t *testing.T) { - hook := new(TestHook) - - LogAndAssertJSON(t, func(log *Logger) { - log.Hooks.Add(hook) - assert.Equal(t, hook.Fired, false) - - log.Print("test") - }, func(fields Fields) { - assert.Equal(t, hook.Fired, true) - }) -} - -type ModifyHook struct { -} - -func (hook *ModifyHook) Fire(entry *Entry) error { - entry.Data["wow"] = "whale" - return nil -} - -func (hook *ModifyHook) Levels() []Level { - return []Level{ - DebugLevel, - InfoLevel, - WarnLevel, - ErrorLevel, - FatalLevel, - PanicLevel, - } -} - -func TestHookCanModifyEntry(t *testing.T) { - hook := new(ModifyHook) - - LogAndAssertJSON(t, func(log *Logger) { - log.Hooks.Add(hook) - log.WithField("wow", "elephant").Print("test") - }, func(fields Fields) { - assert.Equal(t, fields["wow"], "whale") - }) -} - -func TestCanFireMultipleHooks(t *testing.T) { - hook1 := new(ModifyHook) - hook2 := new(TestHook) - - LogAndAssertJSON(t, func(log *Logger) { - log.Hooks.Add(hook1) - log.Hooks.Add(hook2) - - log.WithField("wow", "elephant").Print("test") - }, func(fields Fields) { - assert.Equal(t, fields["wow"], "whale") - assert.Equal(t, hook2.Fired, true) - }) -} - -type ErrorHook struct { - Fired bool -} - -func (hook *ErrorHook) Fire(entry *Entry) error { - hook.Fired = true - return nil -} - -func (hook *ErrorHook) Levels() []Level { - return []Level{ - ErrorLevel, - } -} - -func TestErrorHookShouldntFireOnInfo(t *testing.T) { - hook := new(ErrorHook) - - LogAndAssertJSON(t, func(log *Logger) { - log.Hooks.Add(hook) - log.Info("test") - }, func(fields Fields) { - assert.Equal(t, hook.Fired, false) - }) -} - -func TestErrorHookShouldFireOnError(t *testing.T) { - hook := new(ErrorHook) - - LogAndAssertJSON(t, func(log *Logger) { - log.Hooks.Add(hook) - log.Error("test") - }, func(fields Fields) { - assert.Equal(t, hook.Fired, true) - }) -} - -func TestAddHookRace(t *testing.T) { - var wg sync.WaitGroup - wg.Add(2) - hook := new(ErrorHook) - LogAndAssertJSON(t, func(log *Logger) { - go func() { - defer wg.Done() - log.AddHook(hook) - }() - go func() { - defer wg.Done() - log.Error("test") - }() - wg.Wait() - }, func(fields Fields) { - // the line may have been logged - // before the hook was added, so we can't - // actually assert on the hook - }) -} diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md b/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md deleted file mode 100644 index 1bbc0f72..00000000 --- a/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Syslog Hooks for Logrus :walrus: - -## Usage - -```go -import ( - "log/syslog" - "github.com/sirupsen/logrus" - lSyslog "github.com/sirupsen/logrus/hooks/syslog" -) - -func main() { - log := logrus.New() - hook, err := lSyslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "") - - if err == nil { - log.Hooks.Add(hook) - } -} -``` - -If you want to connect to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). Just assign empty string to the first two parameters of `NewSyslogHook`. It should look like the following. - -```go -import ( - "log/syslog" - "github.com/sirupsen/logrus" - lSyslog "github.com/sirupsen/logrus/hooks/syslog" -) - -func main() { - log := logrus.New() - hook, err := lSyslog.NewSyslogHook("", "", syslog.LOG_INFO, "") - - if err == nil { - log.Hooks.Add(hook) - } -} -``` diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go deleted file mode 100644 index 329ce0d6..00000000 --- a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go +++ /dev/null @@ -1,55 +0,0 @@ -// +build !windows,!nacl,!plan9 - -package syslog - -import ( - "fmt" - "log/syslog" - "os" - - "github.com/sirupsen/logrus" -) - -// SyslogHook to send logs via syslog. -type SyslogHook struct { - Writer *syslog.Writer - SyslogNetwork string - SyslogRaddr string -} - -// Creates a hook to be added to an instance of logger. This is called with -// `hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_DEBUG, "")` -// `if err == nil { log.Hooks.Add(hook) }` -func NewSyslogHook(network, raddr string, priority syslog.Priority, tag string) (*SyslogHook, error) { - w, err := syslog.Dial(network, raddr, priority, tag) - return &SyslogHook{w, network, raddr}, err -} - -func (hook *SyslogHook) Fire(entry *logrus.Entry) error { - line, err := entry.String() - if err != nil { - fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err) - return err - } - - switch entry.Level { - case logrus.PanicLevel: - return hook.Writer.Crit(line) - case logrus.FatalLevel: - return hook.Writer.Crit(line) - case logrus.ErrorLevel: - return hook.Writer.Err(line) - case logrus.WarnLevel: - return hook.Writer.Warning(line) - case logrus.InfoLevel: - return hook.Writer.Info(line) - case logrus.DebugLevel: - return hook.Writer.Debug(line) - default: - return nil - } -} - -func (hook *SyslogHook) Levels() []logrus.Level { - return logrus.AllLevels -} diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go deleted file mode 100644 index 5ec3a444..00000000 --- a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package syslog - -import ( - "log/syslog" - "testing" - - "github.com/sirupsen/logrus" -) - -func TestLocalhostAddAndPrint(t *testing.T) { - log := logrus.New() - hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "") - - if err != nil { - t.Errorf("Unable to connect to local syslog.") - } - - log.Hooks.Add(hook) - - for _, level := range hook.Levels() { - if len(log.Hooks[level]) != 1 { - t.Errorf("SyslogHook was not added. The length of log.Hooks[%v]: %v", level, len(log.Hooks[level])) - } - } - - log.Info("Congratulations!") -} diff --git a/vendor/github.com/sirupsen/logrus/hooks/test/test.go b/vendor/github.com/sirupsen/logrus/hooks/test/test.go deleted file mode 100644 index 62c4845d..00000000 --- a/vendor/github.com/sirupsen/logrus/hooks/test/test.go +++ /dev/null @@ -1,95 +0,0 @@ -// The Test package is used for testing logrus. It is here for backwards -// compatibility from when logrus' organization was upper-case. Please use -// lower-case logrus and the `null` package instead of this one. -package test - -import ( - "io/ioutil" - "sync" - - "github.com/sirupsen/logrus" -) - -// Hook is a hook designed for dealing with logs in test scenarios. -type Hook struct { - // Entries is an array of all entries that have been received by this hook. - // For safe access, use the AllEntries() method, rather than reading this - // value directly. - Entries []*logrus.Entry - mu sync.RWMutex -} - -// NewGlobal installs a test hook for the global logger. -func NewGlobal() *Hook { - - hook := new(Hook) - logrus.AddHook(hook) - - return hook - -} - -// NewLocal installs a test hook for a given local logger. -func NewLocal(logger *logrus.Logger) *Hook { - - hook := new(Hook) - logger.Hooks.Add(hook) - - return hook - -} - -// NewNullLogger creates a discarding logger and installs the test hook. -func NewNullLogger() (*logrus.Logger, *Hook) { - - logger := logrus.New() - logger.Out = ioutil.Discard - - return logger, NewLocal(logger) - -} - -func (t *Hook) Fire(e *logrus.Entry) error { - t.mu.Lock() - defer t.mu.Unlock() - t.Entries = append(t.Entries, e) - return nil -} - -func (t *Hook) Levels() []logrus.Level { - return logrus.AllLevels -} - -// LastEntry returns the last entry that was logged or nil. -func (t *Hook) LastEntry() *logrus.Entry { - t.mu.RLock() - defer t.mu.RUnlock() - i := len(t.Entries) - 1 - if i < 0 { - return nil - } - // Make a copy, for safety - e := *t.Entries[i] - return &e -} - -// AllEntries returns all entries that were logged. -func (t *Hook) AllEntries() []*logrus.Entry { - t.mu.RLock() - defer t.mu.RUnlock() - // Make a copy so the returned value won't race with future log requests - entries := make([]*logrus.Entry, len(t.Entries)) - for i, entry := range t.Entries { - // Make a copy, for safety - e := *entry - entries[i] = &e - } - return entries -} - -// Reset removes all Entries from this test hook. -func (t *Hook) Reset() { - t.mu.Lock() - defer t.mu.Unlock() - t.Entries = make([]*logrus.Entry, 0) -} diff --git a/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go b/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go deleted file mode 100644 index 3f55cfe3..00000000 --- a/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package test - -import ( - "testing" - - "github.com/sirupsen/logrus" - "github.com/stretchr/testify/assert" -) - -func TestAllHooks(t *testing.T) { - - assert := assert.New(t) - - logger, hook := NewNullLogger() - assert.Nil(hook.LastEntry()) - assert.Equal(0, len(hook.Entries)) - - logger.Error("Hello error") - assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level) - assert.Equal("Hello error", hook.LastEntry().Message) - assert.Equal(1, len(hook.Entries)) - - logger.Warn("Hello warning") - assert.Equal(logrus.WarnLevel, hook.LastEntry().Level) - assert.Equal("Hello warning", hook.LastEntry().Message) - assert.Equal(2, len(hook.Entries)) - - hook.Reset() - assert.Nil(hook.LastEntry()) - assert.Equal(0, len(hook.Entries)) - - hook = NewGlobal() - - logrus.Error("Hello error") - assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level) - assert.Equal("Hello error", hook.LastEntry().Message) - assert.Equal(1, len(hook.Entries)) - -} diff --git a/vendor/github.com/sirupsen/logrus/json_formatter_test.go b/vendor/github.com/sirupsen/logrus/json_formatter_test.go deleted file mode 100644 index 51093a79..00000000 --- a/vendor/github.com/sirupsen/logrus/json_formatter_test.go +++ /dev/null @@ -1,199 +0,0 @@ -package logrus - -import ( - "encoding/json" - "errors" - "strings" - "testing" -) - -func TestErrorNotLost(t *testing.T) { - formatter := &JSONFormatter{} - - b, err := formatter.Format(WithField("error", errors.New("wild walrus"))) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - - entry := make(map[string]interface{}) - err = json.Unmarshal(b, &entry) - if err != nil { - t.Fatal("Unable to unmarshal formatted entry: ", err) - } - - if entry["error"] != "wild walrus" { - t.Fatal("Error field not set") - } -} - -func TestErrorNotLostOnFieldNotNamedError(t *testing.T) { - formatter := &JSONFormatter{} - - b, err := formatter.Format(WithField("omg", errors.New("wild walrus"))) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - - entry := make(map[string]interface{}) - err = json.Unmarshal(b, &entry) - if err != nil { - t.Fatal("Unable to unmarshal formatted entry: ", err) - } - - if entry["omg"] != "wild walrus" { - t.Fatal("Error field not set") - } -} - -func TestFieldClashWithTime(t *testing.T) { - formatter := &JSONFormatter{} - - b, err := formatter.Format(WithField("time", "right now!")) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - - entry := make(map[string]interface{}) - err = json.Unmarshal(b, &entry) - if err != nil { - t.Fatal("Unable to unmarshal formatted entry: ", err) - } - - if entry["fields.time"] != "right now!" { - t.Fatal("fields.time not set to original time field") - } - - if entry["time"] != "0001-01-01T00:00:00Z" { - t.Fatal("time field not set to current time, was: ", entry["time"]) - } -} - -func TestFieldClashWithMsg(t *testing.T) { - formatter := &JSONFormatter{} - - b, err := formatter.Format(WithField("msg", "something")) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - - entry := make(map[string]interface{}) - err = json.Unmarshal(b, &entry) - if err != nil { - t.Fatal("Unable to unmarshal formatted entry: ", err) - } - - if entry["fields.msg"] != "something" { - t.Fatal("fields.msg not set to original msg field") - } -} - -func TestFieldClashWithLevel(t *testing.T) { - formatter := &JSONFormatter{} - - b, err := formatter.Format(WithField("level", "something")) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - - entry := make(map[string]interface{}) - err = json.Unmarshal(b, &entry) - if err != nil { - t.Fatal("Unable to unmarshal formatted entry: ", err) - } - - if entry["fields.level"] != "something" { - t.Fatal("fields.level not set to original level field") - } -} - -func TestJSONEntryEndsWithNewline(t *testing.T) { - formatter := &JSONFormatter{} - - b, err := formatter.Format(WithField("level", "something")) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - - if b[len(b)-1] != '\n' { - t.Fatal("Expected JSON log entry to end with a newline") - } -} - -func TestJSONMessageKey(t *testing.T) { - formatter := &JSONFormatter{ - FieldMap: FieldMap{ - FieldKeyMsg: "message", - }, - } - - b, err := formatter.Format(&Entry{Message: "oh hai"}) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - s := string(b) - if !(strings.Contains(s, "message") && strings.Contains(s, "oh hai")) { - t.Fatal("Expected JSON to format message key") - } -} - -func TestJSONLevelKey(t *testing.T) { - formatter := &JSONFormatter{ - FieldMap: FieldMap{ - FieldKeyLevel: "somelevel", - }, - } - - b, err := formatter.Format(WithField("level", "something")) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - s := string(b) - if !strings.Contains(s, "somelevel") { - t.Fatal("Expected JSON to format level key") - } -} - -func TestJSONTimeKey(t *testing.T) { - formatter := &JSONFormatter{ - FieldMap: FieldMap{ - FieldKeyTime: "timeywimey", - }, - } - - b, err := formatter.Format(WithField("level", "something")) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - s := string(b) - if !strings.Contains(s, "timeywimey") { - t.Fatal("Expected JSON to format time key") - } -} - -func TestJSONDisableTimestamp(t *testing.T) { - formatter := &JSONFormatter{ - DisableTimestamp: true, - } - - b, err := formatter.Format(WithField("level", "something")) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - s := string(b) - if strings.Contains(s, FieldKeyTime) { - t.Error("Did not prevent timestamp", s) - } -} - -func TestJSONEnableTimestamp(t *testing.T) { - formatter := &JSONFormatter{} - - b, err := formatter.Format(WithField("level", "something")) - if err != nil { - t.Fatal("Unable to format entry: ", err) - } - s := string(b) - if !strings.Contains(s, FieldKeyTime) { - t.Error("Timestamp not present", s) - } -} diff --git a/vendor/github.com/sirupsen/logrus/logger_bench_test.go b/vendor/github.com/sirupsen/logrus/logger_bench_test.go deleted file mode 100644 index dd23a353..00000000 --- a/vendor/github.com/sirupsen/logrus/logger_bench_test.go +++ /dev/null @@ -1,61 +0,0 @@ -package logrus - -import ( - "os" - "testing" -) - -// smallFields is a small size data set for benchmarking -var loggerFields = Fields{ - "foo": "bar", - "baz": "qux", - "one": "two", - "three": "four", -} - -func BenchmarkDummyLogger(b *testing.B) { - nullf, err := os.OpenFile("/dev/null", os.O_WRONLY, 0666) - if err != nil { - b.Fatalf("%v", err) - } - defer nullf.Close() - doLoggerBenchmark(b, nullf, &TextFormatter{DisableColors: true}, smallFields) -} - -func BenchmarkDummyLoggerNoLock(b *testing.B) { - nullf, err := os.OpenFile("/dev/null", os.O_WRONLY|os.O_APPEND, 0666) - if err != nil { - b.Fatalf("%v", err) - } - defer nullf.Close() - doLoggerBenchmarkNoLock(b, nullf, &TextFormatter{DisableColors: true}, smallFields) -} - -func doLoggerBenchmark(b *testing.B, out *os.File, formatter Formatter, fields Fields) { - logger := Logger{ - Out: out, - Level: InfoLevel, - Formatter: formatter, - } - entry := logger.WithFields(fields) - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - entry.Info("aaa") - } - }) -} - -func doLoggerBenchmarkNoLock(b *testing.B, out *os.File, formatter Formatter, fields Fields) { - logger := Logger{ - Out: out, - Level: InfoLevel, - Formatter: formatter, - } - logger.SetNoLock() - entry := logger.WithFields(fields) - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - entry.Info("aaa") - } - }) -} diff --git a/vendor/github.com/sirupsen/logrus/logrus_test.go b/vendor/github.com/sirupsen/logrus/logrus_test.go deleted file mode 100644 index 78cbc282..00000000 --- a/vendor/github.com/sirupsen/logrus/logrus_test.go +++ /dev/null @@ -1,386 +0,0 @@ -package logrus - -import ( - "bytes" - "encoding/json" - "strconv" - "strings" - "sync" - "testing" - - "github.com/stretchr/testify/assert" -) - -func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fields)) { - var buffer bytes.Buffer - var fields Fields - - logger := New() - logger.Out = &buffer - logger.Formatter = new(JSONFormatter) - - log(logger) - - err := json.Unmarshal(buffer.Bytes(), &fields) - assert.Nil(t, err) - - assertions(fields) -} - -func LogAndAssertText(t *testing.T, log func(*Logger), assertions func(fields map[string]string)) { - var buffer bytes.Buffer - - logger := New() - logger.Out = &buffer - logger.Formatter = &TextFormatter{ - DisableColors: true, - } - - log(logger) - - fields := make(map[string]string) - for _, kv := range strings.Split(buffer.String(), " ") { - if !strings.Contains(kv, "=") { - continue - } - kvArr := strings.Split(kv, "=") - key := strings.TrimSpace(kvArr[0]) - val := kvArr[1] - if kvArr[1][0] == '"' { - var err error - val, err = strconv.Unquote(val) - assert.NoError(t, err) - } - fields[key] = val - } - assertions(fields) -} - -func TestPrint(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Print("test") - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "test") - assert.Equal(t, fields["level"], "info") - }) -} - -func TestInfo(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Info("test") - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "test") - assert.Equal(t, fields["level"], "info") - }) -} - -func TestWarn(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Warn("test") - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "test") - assert.Equal(t, fields["level"], "warning") - }) -} - -func TestInfolnShouldAddSpacesBetweenStrings(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Infoln("test", "test") - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "test test") - }) -} - -func TestInfolnShouldAddSpacesBetweenStringAndNonstring(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Infoln("test", 10) - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "test 10") - }) -} - -func TestInfolnShouldAddSpacesBetweenTwoNonStrings(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Infoln(10, 10) - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "10 10") - }) -} - -func TestInfoShouldAddSpacesBetweenTwoNonStrings(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Infoln(10, 10) - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "10 10") - }) -} - -func TestInfoShouldNotAddSpacesBetweenStringAndNonstring(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Info("test", 10) - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "test10") - }) -} - -func TestInfoShouldNotAddSpacesBetweenStrings(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.Info("test", "test") - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "testtest") - }) -} - -func TestWithFieldsShouldAllowAssignments(t *testing.T) { - var buffer bytes.Buffer - var fields Fields - - logger := New() - logger.Out = &buffer - logger.Formatter = new(JSONFormatter) - - localLog := logger.WithFields(Fields{ - "key1": "value1", - }) - - localLog.WithField("key2", "value2").Info("test") - err := json.Unmarshal(buffer.Bytes(), &fields) - assert.Nil(t, err) - - assert.Equal(t, "value2", fields["key2"]) - assert.Equal(t, "value1", fields["key1"]) - - buffer = bytes.Buffer{} - fields = Fields{} - localLog.Info("test") - err = json.Unmarshal(buffer.Bytes(), &fields) - assert.Nil(t, err) - - _, ok := fields["key2"] - assert.Equal(t, false, ok) - assert.Equal(t, "value1", fields["key1"]) -} - -func TestUserSuppliedFieldDoesNotOverwriteDefaults(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.WithField("msg", "hello").Info("test") - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "test") - }) -} - -func TestUserSuppliedMsgFieldHasPrefix(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.WithField("msg", "hello").Info("test") - }, func(fields Fields) { - assert.Equal(t, fields["msg"], "test") - assert.Equal(t, fields["fields.msg"], "hello") - }) -} - -func TestUserSuppliedTimeFieldHasPrefix(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.WithField("time", "hello").Info("test") - }, func(fields Fields) { - assert.Equal(t, fields["fields.time"], "hello") - }) -} - -func TestUserSuppliedLevelFieldHasPrefix(t *testing.T) { - LogAndAssertJSON(t, func(log *Logger) { - log.WithField("level", 1).Info("test") - }, func(fields Fields) { - assert.Equal(t, fields["level"], "info") - assert.Equal(t, fields["fields.level"], 1.0) // JSON has floats only - }) -} - -func TestDefaultFieldsAreNotPrefixed(t *testing.T) { - LogAndAssertText(t, func(log *Logger) { - ll := log.WithField("herp", "derp") - ll.Info("hello") - ll.Info("bye") - }, func(fields map[string]string) { - for _, fieldName := range []string{"fields.level", "fields.time", "fields.msg"} { - if _, ok := fields[fieldName]; ok { - t.Fatalf("should not have prefixed %q: %v", fieldName, fields) - } - } - }) -} - -func TestDoubleLoggingDoesntPrefixPreviousFields(t *testing.T) { - - var buffer bytes.Buffer - var fields Fields - - logger := New() - logger.Out = &buffer - logger.Formatter = new(JSONFormatter) - - llog := logger.WithField("context", "eating raw fish") - - llog.Info("looks delicious") - - err := json.Unmarshal(buffer.Bytes(), &fields) - assert.NoError(t, err, "should have decoded first message") - assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields") - assert.Equal(t, fields["msg"], "looks delicious") - assert.Equal(t, fields["context"], "eating raw fish") - - buffer.Reset() - - llog.Warn("omg it is!") - - err = json.Unmarshal(buffer.Bytes(), &fields) - assert.NoError(t, err, "should have decoded second message") - assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields") - assert.Equal(t, fields["msg"], "omg it is!") - assert.Equal(t, fields["context"], "eating raw fish") - assert.Nil(t, fields["fields.msg"], "should not have prefixed previous `msg` entry") - -} - -func TestConvertLevelToString(t *testing.T) { - assert.Equal(t, "debug", DebugLevel.String()) - assert.Equal(t, "info", InfoLevel.String()) - assert.Equal(t, "warning", WarnLevel.String()) - assert.Equal(t, "error", ErrorLevel.String()) - assert.Equal(t, "fatal", FatalLevel.String()) - assert.Equal(t, "panic", PanicLevel.String()) -} - -func TestParseLevel(t *testing.T) { - l, err := ParseLevel("panic") - assert.Nil(t, err) - assert.Equal(t, PanicLevel, l) - - l, err = ParseLevel("PANIC") - assert.Nil(t, err) - assert.Equal(t, PanicLevel, l) - - l, err = ParseLevel("fatal") - assert.Nil(t, err) - assert.Equal(t, FatalLevel, l) - - l, err = ParseLevel("FATAL") - assert.Nil(t, err) - assert.Equal(t, FatalLevel, l) - - l, err = ParseLevel("error") - assert.Nil(t, err) - assert.Equal(t, ErrorLevel, l) - - l, err = ParseLevel("ERROR") - assert.Nil(t, err) - assert.Equal(t, ErrorLevel, l) - - l, err = ParseLevel("warn") - assert.Nil(t, err) - assert.Equal(t, WarnLevel, l) - - l, err = ParseLevel("WARN") - assert.Nil(t, err) - assert.Equal(t, WarnLevel, l) - - l, err = ParseLevel("warning") - assert.Nil(t, err) - assert.Equal(t, WarnLevel, l) - - l, err = ParseLevel("WARNING") - assert.Nil(t, err) - assert.Equal(t, WarnLevel, l) - - l, err = ParseLevel("info") - assert.Nil(t, err) - assert.Equal(t, InfoLevel, l) - - l, err = ParseLevel("INFO") - assert.Nil(t, err) - assert.Equal(t, InfoLevel, l) - - l, err = ParseLevel("debug") - assert.Nil(t, err) - assert.Equal(t, DebugLevel, l) - - l, err = ParseLevel("DEBUG") - assert.Nil(t, err) - assert.Equal(t, DebugLevel, l) - - l, err = ParseLevel("invalid") - assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error()) -} - -func TestGetSetLevelRace(t *testing.T) { - wg := sync.WaitGroup{} - for i := 0; i < 100; i++ { - wg.Add(1) - go func(i int) { - defer wg.Done() - if i%2 == 0 { - SetLevel(InfoLevel) - } else { - GetLevel() - } - }(i) - - } - wg.Wait() -} - -func TestLoggingRace(t *testing.T) { - logger := New() - - var wg sync.WaitGroup - wg.Add(100) - - for i := 0; i < 100; i++ { - go func() { - logger.Info("info") - wg.Done() - }() - } - wg.Wait() -} - -// Compile test -func TestLogrusInterface(t *testing.T) { - var buffer bytes.Buffer - fn := func(l FieldLogger) { - b := l.WithField("key", "value") - b.Debug("Test") - } - // test logger - logger := New() - logger.Out = &buffer - fn(logger) - - // test Entry - e := logger.WithField("another", "value") - fn(e) -} - -// Implements io.Writer using channels for synchronization, so we can wait on -// the Entry.Writer goroutine to write in a non-racey way. This does assume that -// there is a single call to Logger.Out for each message. -type channelWriter chan []byte - -func (cw channelWriter) Write(p []byte) (int, error) { - cw <- p - return len(p), nil -} - -func TestEntryWriter(t *testing.T) { - cw := channelWriter(make(chan []byte, 1)) - log := New() - log.Out = cw - log.Formatter = new(JSONFormatter) - log.WithField("foo", "bar").WriterLevel(WarnLevel).Write([]byte("hello\n")) - - bs := <-cw - var fields Fields - err := json.Unmarshal(bs, &fields) - assert.Nil(t, err) - assert.Equal(t, fields["foo"], "bar") - assert.Equal(t, fields["level"], "warning") -} diff --git a/vendor/github.com/sirupsen/logrus/text_formatter_test.go b/vendor/github.com/sirupsen/logrus/text_formatter_test.go deleted file mode 100644 index d93b931e..00000000 --- a/vendor/github.com/sirupsen/logrus/text_formatter_test.go +++ /dev/null @@ -1,141 +0,0 @@ -package logrus - -import ( - "bytes" - "errors" - "fmt" - "strings" - "testing" - "time" -) - -func TestFormatting(t *testing.T) { - tf := &TextFormatter{DisableColors: true} - - testCases := []struct { - value string - expected string - }{ - {`foo`, "time=\"0001-01-01T00:00:00Z\" level=panic test=foo\n"}, - } - - for _, tc := range testCases { - b, _ := tf.Format(WithField("test", tc.value)) - - if string(b) != tc.expected { - t.Errorf("formatting expected for %q (result was %q instead of %q)", tc.value, string(b), tc.expected) - } - } -} - -func TestQuoting(t *testing.T) { - tf := &TextFormatter{DisableColors: true} - - checkQuoting := func(q bool, value interface{}) { - b, _ := tf.Format(WithField("test", value)) - idx := bytes.Index(b, ([]byte)("test=")) - cont := bytes.Contains(b[idx+5:], []byte("\"")) - if cont != q { - if q { - t.Errorf("quoting expected for: %#v", value) - } else { - t.Errorf("quoting not expected for: %#v", value) - } - } - } - - checkQuoting(false, "") - checkQuoting(false, "abcd") - checkQuoting(false, "v1.0") - checkQuoting(false, "1234567890") - checkQuoting(false, "/foobar") - checkQuoting(false, "foo_bar") - checkQuoting(false, "foo@bar") - checkQuoting(false, "foobar^") - checkQuoting(false, "+/-_^@f.oobar") - checkQuoting(true, "foobar$") - checkQuoting(true, "&foobar") - checkQuoting(true, "x y") - checkQuoting(true, "x,y") - checkQuoting(false, errors.New("invalid")) - checkQuoting(true, errors.New("invalid argument")) - - // Test for quoting empty fields. - tf.QuoteEmptyFields = true - checkQuoting(true, "") - checkQuoting(false, "abcd") - checkQuoting(true, errors.New("invalid argument")) -} - -func TestEscaping(t *testing.T) { - tf := &TextFormatter{DisableColors: true} - - testCases := []struct { - value string - expected string - }{ - {`ba"r`, `ba\"r`}, - {`ba'r`, `ba'r`}, - } - - for _, tc := range testCases { - b, _ := tf.Format(WithField("test", tc.value)) - if !bytes.Contains(b, []byte(tc.expected)) { - t.Errorf("escaping expected for %q (result was %q instead of %q)", tc.value, string(b), tc.expected) - } - } -} - -func TestEscaping_Interface(t *testing.T) { - tf := &TextFormatter{DisableColors: true} - - ts := time.Now() - - testCases := []struct { - value interface{} - expected string - }{ - {ts, fmt.Sprintf("\"%s\"", ts.String())}, - {errors.New("error: something went wrong"), "\"error: something went wrong\""}, - } - - for _, tc := range testCases { - b, _ := tf.Format(WithField("test", tc.value)) - if !bytes.Contains(b, []byte(tc.expected)) { - t.Errorf("escaping expected for %q (result was %q instead of %q)", tc.value, string(b), tc.expected) - } - } -} - -func TestTimestampFormat(t *testing.T) { - checkTimeStr := func(format string) { - customFormatter := &TextFormatter{DisableColors: true, TimestampFormat: format} - customStr, _ := customFormatter.Format(WithField("test", "test")) - timeStart := bytes.Index(customStr, ([]byte)("time=")) - timeEnd := bytes.Index(customStr, ([]byte)("level=")) - timeStr := customStr[timeStart+5+len("\"") : timeEnd-1-len("\"")] - if format == "" { - format = time.RFC3339 - } - _, e := time.Parse(format, (string)(timeStr)) - if e != nil { - t.Errorf("time string \"%s\" did not match provided time format \"%s\": %s", timeStr, format, e) - } - } - - checkTimeStr("2006-01-02T15:04:05.000000000Z07:00") - checkTimeStr("Mon Jan _2 15:04:05 2006") - checkTimeStr("") -} - -func TestDisableTimestampWithColoredOutput(t *testing.T) { - tf := &TextFormatter{DisableTimestamp: true, ForceColors: true} - - b, _ := tf.Format(WithField("test", "test")) - if strings.Contains(string(b), "[0000]") { - t.Error("timestamp not expected when DisableTimestamp is true") - } -} - -// TODO add tests for sorting etc., this requires a parser for the text -// formatter output. diff --git a/vendor/golang.org/x/crypto/.gitattributes b/vendor/golang.org/x/crypto/.gitattributes deleted file mode 100644 index d2f212e5..00000000 --- a/vendor/golang.org/x/crypto/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -# Treat all files in this repo as binary, with no git magic updating -# line endings. Windows users contributing to Go will need to use a -# modern version of git and editors capable of LF line endings. -# -# We'll prevent accidental CRLF line endings from entering the repo -# via the git-review gofmt checks. -# -# See golang.org/issue/9281 - -* -text diff --git a/vendor/golang.org/x/crypto/.gitignore b/vendor/golang.org/x/crypto/.gitignore deleted file mode 100644 index 8339fd61..00000000 --- a/vendor/golang.org/x/crypto/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Add no patterns to .hgignore except for files generated by the build. -last-change diff --git a/vendor/golang.org/x/crypto/CONTRIBUTING.md b/vendor/golang.org/x/crypto/CONTRIBUTING.md deleted file mode 100644 index 88dff59b..00000000 --- a/vendor/golang.org/x/crypto/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# Contributing to Go - -Go is an open source project. - -It is the work of hundreds of contributors. We appreciate your help! - - -## Filing issues - -When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions: - -1. What version of Go are you using (`go version`)? -2. What operating system and processor architecture are you using? -3. What did you do? -4. What did you expect to see? -5. What did you see instead? - -General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. -The gophers there will answer or ask you to file an issue if you've tripped over a bug. - -## Contributing code - -Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) -before sending patches. - -**We do not accept GitHub pull requests** -(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review). - -Unless otherwise noted, the Go source files are distributed under -the BSD-style license found in the LICENSE file. - diff --git a/vendor/golang.org/x/crypto/README.md b/vendor/golang.org/x/crypto/README.md deleted file mode 100644 index c9d6fecd..00000000 --- a/vendor/golang.org/x/crypto/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Go Cryptography - -This repository holds supplementary Go cryptography libraries. - -## Download/Install - -The easiest way to install is to run `go get -u golang.org/x/crypto/...`. You -can also manually git clone the repository to `$GOPATH/src/golang.org/x/crypto`. - -## Report Issues / Send Patches - -This repository uses Gerrit for code changes. To learn how to submit changes to -this repository, see https://golang.org/doc/contribute.html. - -The main issue tracker for the crypto repository is located at -https://github.com/golang/go/issues. Prefix your issue with "x/crypto:" in the -subject line, so it is easy to find. - -Note that contributions to the cryptography package receive additional scrutiny -due to their sensitive nature. Patches may take longer than normal to receive -feedback. diff --git a/vendor/golang.org/x/crypto/acme/acme.go b/vendor/golang.org/x/crypto/acme/acme.go deleted file mode 100644 index 1f4fb69e..00000000 --- a/vendor/golang.org/x/crypto/acme/acme.go +++ /dev/null @@ -1,1065 +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 acme provides an implementation of the -// Automatic Certificate Management Environment (ACME) spec. -// See https://tools.ietf.org/html/draft-ietf-acme-acme-02 for details. -// -// Most common scenarios will want to use autocert subdirectory instead, -// which provides automatic access to certificates from Let's Encrypt -// and any other ACME-based CA. -// -// This package is a work in progress and makes no API stability promises. -package acme - -import ( - "bytes" - "context" - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/sha256" - "crypto/tls" - "crypto/x509" - "encoding/base64" - "encoding/hex" - "encoding/json" - "encoding/pem" - "errors" - "fmt" - "io" - "io/ioutil" - "math/big" - "net/http" - "strconv" - "strings" - "sync" - "time" -) - -// LetsEncryptURL is the Directory endpoint of Let's Encrypt CA. -const LetsEncryptURL = "https://acme-v01.api.letsencrypt.org/directory" - -const ( - maxChainLen = 5 // max depth and breadth of a certificate chain - maxCertSize = 1 << 20 // max size of a certificate, in bytes - - // Max number of collected nonces kept in memory. - // Expect usual peak of 1 or 2. - maxNonces = 100 -) - -// Client is an ACME client. -// The only required field is Key. An example of creating a client with a new key -// is as follows: -// -// key, err := rsa.GenerateKey(rand.Reader, 2048) -// if err != nil { -// log.Fatal(err) -// } -// client := &Client{Key: key} -// -type Client struct { - // Key is the account key used to register with a CA and sign requests. - // Key.Public() must return a *rsa.PublicKey or *ecdsa.PublicKey. - Key crypto.Signer - - // HTTPClient optionally specifies an HTTP client to use - // instead of http.DefaultClient. - HTTPClient *http.Client - - // DirectoryURL points to the CA directory endpoint. - // If empty, LetsEncryptURL is used. - // Mutating this value after a successful call of Client's Discover method - // will have no effect. - DirectoryURL string - - dirMu sync.Mutex // guards writes to dir - dir *Directory // cached result of Client's Discover method - - noncesMu sync.Mutex - nonces map[string]struct{} // nonces collected from previous responses -} - -// Discover performs ACME server discovery using c.DirectoryURL. -// -// It caches successful result. So, subsequent calls will not result in -// a network round-trip. This also means mutating c.DirectoryURL after successful call -// of this method will have no effect. -func (c *Client) Discover(ctx context.Context) (Directory, error) { - c.dirMu.Lock() - defer c.dirMu.Unlock() - if c.dir != nil { - return *c.dir, nil - } - - dirURL := c.DirectoryURL - if dirURL == "" { - dirURL = LetsEncryptURL - } - res, err := c.get(ctx, dirURL) - if err != nil { - return Directory{}, err - } - defer res.Body.Close() - c.addNonce(res.Header) - if res.StatusCode != http.StatusOK { - return Directory{}, responseError(res) - } - - var v struct { - Reg string `json:"new-reg"` - Authz string `json:"new-authz"` - Cert string `json:"new-cert"` - Revoke string `json:"revoke-cert"` - Meta struct { - Terms string `json:"terms-of-service"` - Website string `json:"website"` - CAA []string `json:"caa-identities"` - } - } - if err := json.NewDecoder(res.Body).Decode(&v); err != nil { - return Directory{}, err - } - c.dir = &Directory{ - RegURL: v.Reg, - AuthzURL: v.Authz, - CertURL: v.Cert, - RevokeURL: v.Revoke, - Terms: v.Meta.Terms, - Website: v.Meta.Website, - CAA: v.Meta.CAA, - } - return *c.dir, nil -} - -// CreateCert requests a new certificate using the Certificate Signing Request csr encoded in DER format. -// The exp argument indicates the desired certificate validity duration. CA may issue a certificate -// with a different duration. -// If the bundle argument is true, the returned value will also contain the CA (issuer) certificate chain. -// -// In the case where CA server does not provide the issued certificate in the response, -// CreateCert will poll certURL using c.FetchCert, which will result in additional round-trips. -// In such a scenario, the caller can cancel the polling with ctx. -// -// CreateCert returns an error if the CA's response or chain was unreasonably large. -// Callers are encouraged to parse the returned value to ensure the certificate is valid and has the expected features. -func (c *Client) CreateCert(ctx context.Context, csr []byte, exp time.Duration, bundle bool) (der [][]byte, certURL string, err error) { - if _, err := c.Discover(ctx); err != nil { - return nil, "", err - } - - req := struct { - Resource string `json:"resource"` - CSR string `json:"csr"` - NotBefore string `json:"notBefore,omitempty"` - NotAfter string `json:"notAfter,omitempty"` - }{ - Resource: "new-cert", - CSR: base64.RawURLEncoding.EncodeToString(csr), - } - now := timeNow() - req.NotBefore = now.Format(time.RFC3339) - if exp > 0 { - req.NotAfter = now.Add(exp).Format(time.RFC3339) - } - - res, err := c.retryPostJWS(ctx, c.Key, c.dir.CertURL, req) - if err != nil { - return nil, "", err - } - defer res.Body.Close() - if res.StatusCode != http.StatusCreated { - return nil, "", responseError(res) - } - - curl := res.Header.Get("Location") // cert permanent URL - if res.ContentLength == 0 { - // no cert in the body; poll until we get it - cert, err := c.FetchCert(ctx, curl, bundle) - return cert, curl, err - } - // slurp issued cert and CA chain, if requested - cert, err := c.responseCert(ctx, res, bundle) - return cert, curl, err -} - -// FetchCert retrieves already issued certificate from the given url, in DER format. -// It retries the request until the certificate is successfully retrieved, -// context is cancelled by the caller or an error response is received. -// -// The returned value will also contain the CA (issuer) certificate if the bundle argument is true. -// -// FetchCert returns an error if the CA's response or chain was unreasonably large. -// Callers are encouraged to parse the returned value to ensure the certificate is valid -// and has expected features. -func (c *Client) FetchCert(ctx context.Context, url string, bundle bool) ([][]byte, error) { - for { - res, err := c.get(ctx, url) - if err != nil { - return nil, err - } - defer res.Body.Close() - if res.StatusCode == http.StatusOK { - return c.responseCert(ctx, res, bundle) - } - if res.StatusCode > 299 { - return nil, responseError(res) - } - d := retryAfter(res.Header.Get("Retry-After"), 3*time.Second) - select { - case <-time.After(d): - // retry - case <-ctx.Done(): - return nil, ctx.Err() - } - } -} - -// RevokeCert revokes a previously issued certificate cert, provided in DER format. -// -// The key argument, used to sign the request, must be authorized -// to revoke the certificate. It's up to the CA to decide which keys are authorized. -// For instance, the key pair of the certificate may be authorized. -// If the key is nil, c.Key is used instead. -func (c *Client) RevokeCert(ctx context.Context, key crypto.Signer, cert []byte, reason CRLReasonCode) error { - if _, err := c.Discover(ctx); err != nil { - return err - } - - body := &struct { - Resource string `json:"resource"` - Cert string `json:"certificate"` - Reason int `json:"reason"` - }{ - Resource: "revoke-cert", - Cert: base64.RawURLEncoding.EncodeToString(cert), - Reason: int(reason), - } - if key == nil { - key = c.Key - } - res, err := c.retryPostJWS(ctx, key, c.dir.RevokeURL, body) - if err != nil { - return err - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return responseError(res) - } - return nil -} - -// AcceptTOS always returns true to indicate the acceptance of a CA's Terms of Service -// during account registration. See Register method of Client for more details. -func AcceptTOS(tosURL string) bool { return true } - -// Register creates a new account registration by following the "new-reg" flow. -// It returns the registered account. The account is not modified. -// -// The registration may require the caller to agree to the CA's Terms of Service (TOS). -// If so, and the account has not indicated the acceptance of the terms (see Account for details), -// Register calls prompt with a TOS URL provided by the CA. Prompt should report -// whether the caller agrees to the terms. To always accept the terms, the caller can use AcceptTOS. -func (c *Client) Register(ctx context.Context, a *Account, prompt func(tosURL string) bool) (*Account, error) { - if _, err := c.Discover(ctx); err != nil { - return nil, err - } - - var err error - if a, err = c.doReg(ctx, c.dir.RegURL, "new-reg", a); err != nil { - return nil, err - } - var accept bool - if a.CurrentTerms != "" && a.CurrentTerms != a.AgreedTerms { - accept = prompt(a.CurrentTerms) - } - if accept { - a.AgreedTerms = a.CurrentTerms - a, err = c.UpdateReg(ctx, a) - } - return a, err -} - -// GetReg retrieves an existing registration. -// The url argument is an Account URI. -func (c *Client) GetReg(ctx context.Context, url string) (*Account, error) { - a, err := c.doReg(ctx, url, "reg", nil) - if err != nil { - return nil, err - } - a.URI = url - return a, nil -} - -// UpdateReg updates an existing registration. -// It returns an updated account copy. The provided account is not modified. -func (c *Client) UpdateReg(ctx context.Context, a *Account) (*Account, error) { - uri := a.URI - a, err := c.doReg(ctx, uri, "reg", a) - if err != nil { - return nil, err - } - a.URI = uri - return a, nil -} - -// Authorize performs the initial step in an authorization flow. -// The caller will then need to choose from and perform a set of returned -// challenges using c.Accept in order to successfully complete authorization. -// -// If an authorization has been previously granted, the CA may return -// a valid authorization (Authorization.Status is StatusValid). If so, the caller -// need not fulfill any challenge and can proceed to requesting a certificate. -func (c *Client) Authorize(ctx context.Context, domain string) (*Authorization, error) { - if _, err := c.Discover(ctx); err != nil { - return nil, err - } - - type authzID struct { - Type string `json:"type"` - Value string `json:"value"` - } - req := struct { - Resource string `json:"resource"` - Identifier authzID `json:"identifier"` - }{ - Resource: "new-authz", - Identifier: authzID{Type: "dns", Value: domain}, - } - res, err := c.retryPostJWS(ctx, c.Key, c.dir.AuthzURL, req) - if err != nil { - return nil, err - } - defer res.Body.Close() - if res.StatusCode != http.StatusCreated { - return nil, responseError(res) - } - - var v wireAuthz - if err := json.NewDecoder(res.Body).Decode(&v); err != nil { - return nil, fmt.Errorf("acme: invalid response: %v", err) - } - if v.Status != StatusPending && v.Status != StatusValid { - return nil, fmt.Errorf("acme: unexpected status: %s", v.Status) - } - return v.authorization(res.Header.Get("Location")), nil -} - -// GetAuthorization retrieves an authorization identified by the given URL. -// -// If a caller needs to poll an authorization until its status is final, -// see the WaitAuthorization method. -func (c *Client) GetAuthorization(ctx context.Context, url string) (*Authorization, error) { - res, err := c.get(ctx, url) - if err != nil { - return nil, err - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK && res.StatusCode != http.StatusAccepted { - return nil, responseError(res) - } - var v wireAuthz - if err := json.NewDecoder(res.Body).Decode(&v); err != nil { - return nil, fmt.Errorf("acme: invalid response: %v", err) - } - return v.authorization(url), nil -} - -// RevokeAuthorization relinquishes an existing authorization identified -// by the given URL. -// The url argument is an Authorization.URI value. -// -// If successful, the caller will be required to obtain a new authorization -// using the Authorize method before being able to request a new certificate -// for the domain associated with the authorization. -// -// It does not revoke existing certificates. -func (c *Client) RevokeAuthorization(ctx context.Context, url string) error { - req := struct { - Resource string `json:"resource"` - Status string `json:"status"` - Delete bool `json:"delete"` - }{ - Resource: "authz", - Status: "deactivated", - Delete: true, - } - res, err := c.retryPostJWS(ctx, c.Key, url, req) - if err != nil { - return err - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return responseError(res) - } - return nil -} - -// WaitAuthorization polls an authorization at the given URL -// until it is in one of the final states, StatusValid or StatusInvalid, -// the ACME CA responded with a 4xx error code, or the context is done. -// -// It returns a non-nil Authorization only if its Status is StatusValid. -// In all other cases WaitAuthorization returns an error. -// If the Status is StatusInvalid, the returned error is of type *AuthorizationError. -func (c *Client) WaitAuthorization(ctx context.Context, url string) (*Authorization, error) { - sleep := sleeper(ctx) - for { - res, err := c.get(ctx, url) - if err != nil { - return nil, err - } - if res.StatusCode >= 400 && res.StatusCode <= 499 { - // Non-retriable error. For instance, Let's Encrypt may return 404 Not Found - // when requesting an expired authorization. - defer res.Body.Close() - return nil, responseError(res) - } - - retry := res.Header.Get("Retry-After") - if res.StatusCode != http.StatusOK && res.StatusCode != http.StatusAccepted { - res.Body.Close() - if err := sleep(retry, 1); err != nil { - return nil, err - } - continue - } - var raw wireAuthz - err = json.NewDecoder(res.Body).Decode(&raw) - res.Body.Close() - if err != nil { - if err := sleep(retry, 0); err != nil { - return nil, err - } - continue - } - if raw.Status == StatusValid { - return raw.authorization(url), nil - } - if raw.Status == StatusInvalid { - return nil, raw.error(url) - } - if err := sleep(retry, 0); err != nil { - return nil, err - } - } -} - -// GetChallenge retrieves the current status of an challenge. -// -// A client typically polls a challenge status using this method. -func (c *Client) GetChallenge(ctx context.Context, url string) (*Challenge, error) { - res, err := c.get(ctx, url) - if err != nil { - return nil, err - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK && res.StatusCode != http.StatusAccepted { - return nil, responseError(res) - } - v := wireChallenge{URI: url} - if err := json.NewDecoder(res.Body).Decode(&v); err != nil { - return nil, fmt.Errorf("acme: invalid response: %v", err) - } - return v.challenge(), nil -} - -// Accept informs the server that the client accepts one of its challenges -// previously obtained with c.Authorize. -// -// The server will then perform the validation asynchronously. -func (c *Client) Accept(ctx context.Context, chal *Challenge) (*Challenge, error) { - auth, err := keyAuth(c.Key.Public(), chal.Token) - if err != nil { - return nil, err - } - - req := struct { - Resource string `json:"resource"` - Type string `json:"type"` - Auth string `json:"keyAuthorization"` - }{ - Resource: "challenge", - Type: chal.Type, - Auth: auth, - } - res, err := c.retryPostJWS(ctx, c.Key, chal.URI, req) - if err != nil { - return nil, err - } - defer res.Body.Close() - // Note: the protocol specifies 200 as the expected response code, but - // letsencrypt seems to be returning 202. - if res.StatusCode != http.StatusOK && res.StatusCode != http.StatusAccepted { - return nil, responseError(res) - } - - var v wireChallenge - if err := json.NewDecoder(res.Body).Decode(&v); err != nil { - return nil, fmt.Errorf("acme: invalid response: %v", err) - } - return v.challenge(), nil -} - -// DNS01ChallengeRecord returns a DNS record value for a dns-01 challenge response. -// A TXT record containing the returned value must be provisioned under -// "_acme-challenge" name of the domain being validated. -// -// The token argument is a Challenge.Token value. -func (c *Client) DNS01ChallengeRecord(token string) (string, error) { - ka, err := keyAuth(c.Key.Public(), token) - if err != nil { - return "", err - } - b := sha256.Sum256([]byte(ka)) - return base64.RawURLEncoding.EncodeToString(b[:]), nil -} - -// HTTP01ChallengeResponse returns the response for an http-01 challenge. -// Servers should respond with the value to HTTP requests at the URL path -// provided by HTTP01ChallengePath to validate the challenge and prove control -// over a domain name. -// -// The token argument is a Challenge.Token value. -func (c *Client) HTTP01ChallengeResponse(token string) (string, error) { - return keyAuth(c.Key.Public(), token) -} - -// HTTP01ChallengePath returns the URL path at which the response for an http-01 challenge -// should be provided by the servers. -// The response value can be obtained with HTTP01ChallengeResponse. -// -// The token argument is a Challenge.Token value. -func (c *Client) HTTP01ChallengePath(token string) string { - return "/.well-known/acme-challenge/" + token -} - -// TLSSNI01ChallengeCert creates a certificate for TLS-SNI-01 challenge response. -// Servers can present the certificate to validate the challenge and prove control -// over a domain name. -// -// The implementation is incomplete in that the returned value is a single certificate, -// computed only for Z0 of the key authorization. ACME CAs are expected to update -// their implementations to use the newer version, TLS-SNI-02. -// For more details on TLS-SNI-01 see https://tools.ietf.org/html/draft-ietf-acme-acme-01#section-7.3. -// -// The token argument is a Challenge.Token value. -// If a WithKey option is provided, its private part signs the returned cert, -// and the public part is used to specify the signee. -// If no WithKey option is provided, a new ECDSA key is generated using P-256 curve. -// -// The returned certificate is valid for the next 24 hours and must be presented only when -// the server name of the client hello matches exactly the returned name value. -func (c *Client) TLSSNI01ChallengeCert(token string, opt ...CertOption) (cert tls.Certificate, name string, err error) { - ka, err := keyAuth(c.Key.Public(), token) - if err != nil { - return tls.Certificate{}, "", err - } - b := sha256.Sum256([]byte(ka)) - h := hex.EncodeToString(b[:]) - name = fmt.Sprintf("%s.%s.acme.invalid", h[:32], h[32:]) - cert, err = tlsChallengeCert([]string{name}, opt) - if err != nil { - return tls.Certificate{}, "", err - } - return cert, name, nil -} - -// TLSSNI02ChallengeCert creates a certificate for TLS-SNI-02 challenge response. -// Servers can present the certificate to validate the challenge and prove control -// over a domain name. For more details on TLS-SNI-02 see -// https://tools.ietf.org/html/draft-ietf-acme-acme-03#section-7.3. -// -// The token argument is a Challenge.Token value. -// If a WithKey option is provided, its private part signs the returned cert, -// and the public part is used to specify the signee. -// If no WithKey option is provided, a new ECDSA key is generated using P-256 curve. -// -// The returned certificate is valid for the next 24 hours and must be presented only when -// the server name in the client hello matches exactly the returned name value. -func (c *Client) TLSSNI02ChallengeCert(token string, opt ...CertOption) (cert tls.Certificate, name string, err error) { - b := sha256.Sum256([]byte(token)) - h := hex.EncodeToString(b[:]) - sanA := fmt.Sprintf("%s.%s.token.acme.invalid", h[:32], h[32:]) - - ka, err := keyAuth(c.Key.Public(), token) - if err != nil { - return tls.Certificate{}, "", err - } - b = sha256.Sum256([]byte(ka)) - h = hex.EncodeToString(b[:]) - sanB := fmt.Sprintf("%s.%s.ka.acme.invalid", h[:32], h[32:]) - - cert, err = tlsChallengeCert([]string{sanA, sanB}, opt) - if err != nil { - return tls.Certificate{}, "", err - } - return cert, sanA, nil -} - -// doReg sends all types of registration requests. -// The type of request is identified by typ argument, which is a "resource" -// in the ACME spec terms. -// -// A non-nil acct argument indicates whether the intention is to mutate data -// of the Account. Only Contact and Agreement of its fields are used -// in such cases. -func (c *Client) doReg(ctx context.Context, url string, typ string, acct *Account) (*Account, error) { - req := struct { - Resource string `json:"resource"` - Contact []string `json:"contact,omitempty"` - Agreement string `json:"agreement,omitempty"` - }{ - Resource: typ, - } - if acct != nil { - req.Contact = acct.Contact - req.Agreement = acct.AgreedTerms - } - res, err := c.retryPostJWS(ctx, c.Key, url, req) - if err != nil { - return nil, err - } - defer res.Body.Close() - if res.StatusCode < 200 || res.StatusCode > 299 { - return nil, responseError(res) - } - - var v struct { - Contact []string - Agreement string - Authorizations string - Certificates string - } - if err := json.NewDecoder(res.Body).Decode(&v); err != nil { - return nil, fmt.Errorf("acme: invalid response: %v", err) - } - var tos string - if v := linkHeader(res.Header, "terms-of-service"); len(v) > 0 { - tos = v[0] - } - var authz string - if v := linkHeader(res.Header, "next"); len(v) > 0 { - authz = v[0] - } - return &Account{ - URI: res.Header.Get("Location"), - Contact: v.Contact, - AgreedTerms: v.Agreement, - CurrentTerms: tos, - Authz: authz, - Authorizations: v.Authorizations, - Certificates: v.Certificates, - }, nil -} - -// retryPostJWS will retry calls to postJWS if there is a badNonce error, -// clearing the stored nonces after each error. -// If the response was 4XX-5XX, then responseError is called on the body, -// the body is closed, and the error returned. -func (c *Client) retryPostJWS(ctx context.Context, key crypto.Signer, url string, body interface{}) (*http.Response, error) { - sleep := sleeper(ctx) - for { - res, err := c.postJWS(ctx, key, url, body) - if err != nil { - return nil, err - } - // handle errors 4XX-5XX with responseError - if res.StatusCode >= 400 && res.StatusCode <= 599 { - err := responseError(res) - res.Body.Close() - // according to spec badNonce is urn:ietf:params:acme:error:badNonce - // however, acme servers in the wild return their version of the error - // https://tools.ietf.org/html/draft-ietf-acme-acme-02#section-5.4 - if ae, ok := err.(*Error); ok && strings.HasSuffix(strings.ToLower(ae.ProblemType), ":badnonce") { - // clear any nonces that we might've stored that might now be - // considered bad - c.clearNonces() - retry := res.Header.Get("Retry-After") - if err := sleep(retry, 1); err != nil { - return nil, err - } - continue - } - return nil, err - } - return res, nil - } -} - -// postJWS signs the body with the given key and POSTs it to the provided url. -// The body argument must be JSON-serializable. -func (c *Client) postJWS(ctx context.Context, key crypto.Signer, url string, body interface{}) (*http.Response, error) { - nonce, err := c.popNonce(ctx, url) - if err != nil { - return nil, err - } - b, err := jwsEncodeJSON(body, key, nonce) - if err != nil { - return nil, err - } - res, err := c.post(ctx, url, "application/jose+json", bytes.NewReader(b)) - if err != nil { - return nil, err - } - c.addNonce(res.Header) - return res, nil -} - -// popNonce returns a nonce value previously stored with c.addNonce -// or fetches a fresh one from the given URL. -func (c *Client) popNonce(ctx context.Context, url string) (string, error) { - c.noncesMu.Lock() - defer c.noncesMu.Unlock() - if len(c.nonces) == 0 { - return c.fetchNonce(ctx, url) - } - var nonce string - for nonce = range c.nonces { - delete(c.nonces, nonce) - break - } - return nonce, nil -} - -// clearNonces clears any stored nonces -func (c *Client) clearNonces() { - c.noncesMu.Lock() - defer c.noncesMu.Unlock() - c.nonces = make(map[string]struct{}) -} - -// addNonce stores a nonce value found in h (if any) for future use. -func (c *Client) addNonce(h http.Header) { - v := nonceFromHeader(h) - if v == "" { - return - } - c.noncesMu.Lock() - defer c.noncesMu.Unlock() - if len(c.nonces) >= maxNonces { - return - } - if c.nonces == nil { - c.nonces = make(map[string]struct{}) - } - c.nonces[v] = struct{}{} -} - -func (c *Client) httpClient() *http.Client { - if c.HTTPClient != nil { - return c.HTTPClient - } - return http.DefaultClient -} - -func (c *Client) get(ctx context.Context, urlStr string) (*http.Response, error) { - req, err := http.NewRequest("GET", urlStr, nil) - if err != nil { - return nil, err - } - return c.do(ctx, req) -} - -func (c *Client) head(ctx context.Context, urlStr string) (*http.Response, error) { - req, err := http.NewRequest("HEAD", urlStr, nil) - if err != nil { - return nil, err - } - return c.do(ctx, req) -} - -func (c *Client) post(ctx context.Context, urlStr, contentType string, body io.Reader) (*http.Response, error) { - req, err := http.NewRequest("POST", urlStr, body) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", contentType) - return c.do(ctx, req) -} - -func (c *Client) do(ctx context.Context, req *http.Request) (*http.Response, error) { - res, err := c.httpClient().Do(req.WithContext(ctx)) - if err != nil { - select { - case <-ctx.Done(): - // Prefer the unadorned context error. - // (The acme package had tests assuming this, previously from ctxhttp's - // behavior, predating net/http supporting contexts natively) - // TODO(bradfitz): reconsider this in the future. But for now this - // requires no test updates. - return nil, ctx.Err() - default: - return nil, err - } - } - return res, nil -} - -func (c *Client) fetchNonce(ctx context.Context, url string) (string, error) { - resp, err := c.head(ctx, url) - if err != nil { - return "", err - } - defer resp.Body.Close() - nonce := nonceFromHeader(resp.Header) - if nonce == "" { - if resp.StatusCode > 299 { - return "", responseError(resp) - } - return "", errors.New("acme: nonce not found") - } - return nonce, nil -} - -func nonceFromHeader(h http.Header) string { - return h.Get("Replay-Nonce") -} - -func (c *Client) responseCert(ctx context.Context, res *http.Response, bundle bool) ([][]byte, error) { - b, err := ioutil.ReadAll(io.LimitReader(res.Body, maxCertSize+1)) - if err != nil { - return nil, fmt.Errorf("acme: response stream: %v", err) - } - if len(b) > maxCertSize { - return nil, errors.New("acme: certificate is too big") - } - cert := [][]byte{b} - if !bundle { - return cert, nil - } - - // Append CA chain cert(s). - // At least one is required according to the spec: - // https://tools.ietf.org/html/draft-ietf-acme-acme-03#section-6.3.1 - up := linkHeader(res.Header, "up") - if len(up) == 0 { - return nil, errors.New("acme: rel=up link not found") - } - if len(up) > maxChainLen { - return nil, errors.New("acme: rel=up link is too large") - } - for _, url := range up { - cc, err := c.chainCert(ctx, url, 0) - if err != nil { - return nil, err - } - cert = append(cert, cc...) - } - return cert, nil -} - -// responseError creates an error of Error type from resp. -func responseError(resp *http.Response) error { - // don't care if ReadAll returns an error: - // json.Unmarshal will fail in that case anyway - b, _ := ioutil.ReadAll(resp.Body) - e := &wireError{Status: resp.StatusCode} - if err := json.Unmarshal(b, e); err != nil { - // this is not a regular error response: - // populate detail with anything we received, - // e.Status will already contain HTTP response code value - e.Detail = string(b) - if e.Detail == "" { - e.Detail = resp.Status - } - } - return e.error(resp.Header) -} - -// chainCert fetches CA certificate chain recursively by following "up" links. -// Each recursive call increments the depth by 1, resulting in an error -// if the recursion level reaches maxChainLen. -// -// First chainCert call starts with depth of 0. -func (c *Client) chainCert(ctx context.Context, url string, depth int) ([][]byte, error) { - if depth >= maxChainLen { - return nil, errors.New("acme: certificate chain is too deep") - } - - res, err := c.get(ctx, url) - if err != nil { - return nil, err - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - return nil, responseError(res) - } - b, err := ioutil.ReadAll(io.LimitReader(res.Body, maxCertSize+1)) - if err != nil { - return nil, err - } - if len(b) > maxCertSize { - return nil, errors.New("acme: certificate is too big") - } - chain := [][]byte{b} - - uplink := linkHeader(res.Header, "up") - if len(uplink) > maxChainLen { - return nil, errors.New("acme: certificate chain is too large") - } - for _, up := range uplink { - cc, err := c.chainCert(ctx, up, depth+1) - if err != nil { - return nil, err - } - chain = append(chain, cc...) - } - - return chain, nil -} - -// linkHeader returns URI-Reference values of all Link headers -// with relation-type rel. -// See https://tools.ietf.org/html/rfc5988#section-5 for details. -func linkHeader(h http.Header, rel string) []string { - var links []string - for _, v := range h["Link"] { - parts := strings.Split(v, ";") - for _, p := range parts { - p = strings.TrimSpace(p) - if !strings.HasPrefix(p, "rel=") { - continue - } - if v := strings.Trim(p[4:], `"`); v == rel { - links = append(links, strings.Trim(parts[0], "<>")) - } - } - } - return links -} - -// sleeper returns a function that accepts the Retry-After HTTP header value -// and an increment that's used with backoff to increasingly sleep on -// consecutive calls until the context is done. If the Retry-After header -// cannot be parsed, then backoff is used with a maximum sleep time of 10 -// seconds. -func sleeper(ctx context.Context) func(ra string, inc int) error { - var count int - return func(ra string, inc int) error { - count += inc - d := backoff(count, 10*time.Second) - d = retryAfter(ra, d) - wakeup := time.NewTimer(d) - defer wakeup.Stop() - select { - case <-ctx.Done(): - return ctx.Err() - case <-wakeup.C: - return nil - } - } -} - -// retryAfter parses a Retry-After HTTP header value, -// trying to convert v into an int (seconds) or use http.ParseTime otherwise. -// It returns d if v cannot be parsed. -func retryAfter(v string, d time.Duration) time.Duration { - if i, err := strconv.Atoi(v); err == nil { - return time.Duration(i) * time.Second - } - t, err := http.ParseTime(v) - if err != nil { - return d - } - return t.Sub(timeNow()) -} - -// backoff computes a duration after which an n+1 retry iteration should occur -// using truncated exponential backoff algorithm. -// -// The n argument is always bounded between 0 and 30. -// The max argument defines upper bound for the returned value. -func backoff(n int, max time.Duration) time.Duration { - if n < 0 { - n = 0 - } - if n > 30 { - n = 30 - } - var d time.Duration - if x, err := rand.Int(rand.Reader, big.NewInt(1000)); err == nil { - d = time.Duration(x.Int64()) * time.Millisecond - } - d += time.Duration(1< max { - return max - } - return d -} - -// keyAuth generates a key authorization string for a given token. -func keyAuth(pub crypto.PublicKey, token string) (string, error) { - th, err := JWKThumbprint(pub) - if err != nil { - return "", err - } - return fmt.Sprintf("%s.%s", token, th), nil -} - -// tlsChallengeCert creates a temporary certificate for TLS-SNI challenges -// with the given SANs and auto-generated public/private key pair. -// The Subject Common Name is set to the first SAN to aid debugging. -// To create a cert with a custom key pair, specify WithKey option. -func tlsChallengeCert(san []string, opt []CertOption) (tls.Certificate, error) { - var ( - key crypto.Signer - tmpl *x509.Certificate - ) - for _, o := range opt { - switch o := o.(type) { - case *certOptKey: - if key != nil { - return tls.Certificate{}, errors.New("acme: duplicate key option") - } - key = o.key - case *certOptTemplate: - var t = *(*x509.Certificate)(o) // shallow copy is ok - tmpl = &t - default: - // package's fault, if we let this happen: - panic(fmt.Sprintf("unsupported option type %T", o)) - } - } - if key == nil { - var err error - if key, err = ecdsa.GenerateKey(elliptic.P256(), rand.Reader); err != nil { - return tls.Certificate{}, err - } - } - if tmpl == nil { - tmpl = &x509.Certificate{ - SerialNumber: big.NewInt(1), - NotBefore: time.Now(), - NotAfter: time.Now().Add(24 * time.Hour), - BasicConstraintsValid: true, - KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, - ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, - } - } - tmpl.DNSNames = san - if len(san) > 0 { - tmpl.Subject.CommonName = san[0] - } - - der, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, key.Public(), key) - if err != nil { - return tls.Certificate{}, err - } - return tls.Certificate{ - Certificate: [][]byte{der}, - PrivateKey: key, - }, nil -} - -// encodePEM returns b encoded as PEM with block of type typ. -func encodePEM(typ string, b []byte) []byte { - pb := &pem.Block{Type: typ, Bytes: b} - return pem.EncodeToMemory(pb) -} - -// timeNow is useful for testing for fixed current time. -var timeNow = time.Now diff --git a/vendor/golang.org/x/crypto/acme/acme_test.go b/vendor/golang.org/x/crypto/acme/acme_test.go deleted file mode 100644 index 63cb79b9..00000000 --- a/vendor/golang.org/x/crypto/acme/acme_test.go +++ /dev/null @@ -1,1380 +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 acme - -import ( - "bytes" - "context" - "crypto/rand" - "crypto/rsa" - "crypto/tls" - "crypto/x509" - "crypto/x509/pkix" - "encoding/base64" - "encoding/json" - "fmt" - "io/ioutil" - "math/big" - "net/http" - "net/http/httptest" - "reflect" - "sort" - "strings" - "testing" - "time" -) - -// Decodes a JWS-encoded request and unmarshals the decoded JSON into a provided -// interface. -func decodeJWSRequest(t *testing.T, v interface{}, r *http.Request) { - // Decode request - var req struct{ Payload string } - if err := json.NewDecoder(r.Body).Decode(&req); err != nil { - t.Fatal(err) - } - payload, err := base64.RawURLEncoding.DecodeString(req.Payload) - if err != nil { - t.Fatal(err) - } - err = json.Unmarshal(payload, v) - if err != nil { - t.Fatal(err) - } -} - -type jwsHead struct { - Alg string - Nonce string - JWK map[string]string `json:"jwk"` -} - -func decodeJWSHead(r *http.Request) (*jwsHead, error) { - var req struct{ Protected string } - if err := json.NewDecoder(r.Body).Decode(&req); err != nil { - return nil, err - } - b, err := base64.RawURLEncoding.DecodeString(req.Protected) - if err != nil { - return nil, err - } - var head jwsHead - if err := json.Unmarshal(b, &head); err != nil { - return nil, err - } - return &head, nil -} - -func TestDiscover(t *testing.T) { - const ( - reg = "https://example.com/acme/new-reg" - authz = "https://example.com/acme/new-authz" - cert = "https://example.com/acme/new-cert" - revoke = "https://example.com/acme/revoke-cert" - ) - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json") - fmt.Fprintf(w, `{ - "new-reg": %q, - "new-authz": %q, - "new-cert": %q, - "revoke-cert": %q - }`, reg, authz, cert, revoke) - })) - defer ts.Close() - c := Client{DirectoryURL: ts.URL} - dir, err := c.Discover(context.Background()) - if err != nil { - t.Fatal(err) - } - if dir.RegURL != reg { - t.Errorf("dir.RegURL = %q; want %q", dir.RegURL, reg) - } - if dir.AuthzURL != authz { - t.Errorf("dir.AuthzURL = %q; want %q", dir.AuthzURL, authz) - } - if dir.CertURL != cert { - t.Errorf("dir.CertURL = %q; want %q", dir.CertURL, cert) - } - if dir.RevokeURL != revoke { - t.Errorf("dir.RevokeURL = %q; want %q", dir.RevokeURL, revoke) - } -} - -func TestRegister(t *testing.T) { - contacts := []string{"mailto:admin@example.com"} - - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "test-nonce") - return - } - if r.Method != "POST" { - t.Errorf("r.Method = %q; want POST", r.Method) - } - - var j struct { - Resource string - Contact []string - Agreement string - } - decodeJWSRequest(t, &j, r) - - // Test request - if j.Resource != "new-reg" { - t.Errorf("j.Resource = %q; want new-reg", j.Resource) - } - if !reflect.DeepEqual(j.Contact, contacts) { - t.Errorf("j.Contact = %v; want %v", j.Contact, contacts) - } - - w.Header().Set("Location", "https://ca.tld/acme/reg/1") - w.Header().Set("Link", `;rel="next"`) - w.Header().Add("Link", `;rel="recover"`) - w.Header().Add("Link", `;rel="terms-of-service"`) - w.WriteHeader(http.StatusCreated) - b, _ := json.Marshal(contacts) - fmt.Fprintf(w, `{"contact": %s}`, b) - })) - defer ts.Close() - - prompt := func(url string) bool { - const terms = "https://ca.tld/acme/terms" - if url != terms { - t.Errorf("prompt url = %q; want %q", url, terms) - } - return false - } - - c := Client{Key: testKeyEC, dir: &Directory{RegURL: ts.URL}} - a := &Account{Contact: contacts} - var err error - if a, err = c.Register(context.Background(), a, prompt); err != nil { - t.Fatal(err) - } - if a.URI != "https://ca.tld/acme/reg/1" { - t.Errorf("a.URI = %q; want https://ca.tld/acme/reg/1", a.URI) - } - if a.Authz != "https://ca.tld/acme/new-authz" { - t.Errorf("a.Authz = %q; want https://ca.tld/acme/new-authz", a.Authz) - } - if a.CurrentTerms != "https://ca.tld/acme/terms" { - t.Errorf("a.CurrentTerms = %q; want https://ca.tld/acme/terms", a.CurrentTerms) - } - if !reflect.DeepEqual(a.Contact, contacts) { - t.Errorf("a.Contact = %v; want %v", a.Contact, contacts) - } -} - -func TestUpdateReg(t *testing.T) { - const terms = "https://ca.tld/acme/terms" - contacts := []string{"mailto:admin@example.com"} - - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "test-nonce") - return - } - if r.Method != "POST" { - t.Errorf("r.Method = %q; want POST", r.Method) - } - - var j struct { - Resource string - Contact []string - Agreement string - } - decodeJWSRequest(t, &j, r) - - // Test request - if j.Resource != "reg" { - t.Errorf("j.Resource = %q; want reg", j.Resource) - } - if j.Agreement != terms { - t.Errorf("j.Agreement = %q; want %q", j.Agreement, terms) - } - if !reflect.DeepEqual(j.Contact, contacts) { - t.Errorf("j.Contact = %v; want %v", j.Contact, contacts) - } - - w.Header().Set("Link", `;rel="next"`) - w.Header().Add("Link", `;rel="recover"`) - w.Header().Add("Link", fmt.Sprintf(`<%s>;rel="terms-of-service"`, terms)) - w.WriteHeader(http.StatusOK) - b, _ := json.Marshal(contacts) - fmt.Fprintf(w, `{"contact":%s, "agreement":%q}`, b, terms) - })) - defer ts.Close() - - c := Client{Key: testKeyEC} - a := &Account{URI: ts.URL, Contact: contacts, AgreedTerms: terms} - var err error - if a, err = c.UpdateReg(context.Background(), a); err != nil { - t.Fatal(err) - } - if a.Authz != "https://ca.tld/acme/new-authz" { - t.Errorf("a.Authz = %q; want https://ca.tld/acme/new-authz", a.Authz) - } - if a.AgreedTerms != terms { - t.Errorf("a.AgreedTerms = %q; want %q", a.AgreedTerms, terms) - } - if a.CurrentTerms != terms { - t.Errorf("a.CurrentTerms = %q; want %q", a.CurrentTerms, terms) - } - if a.URI != ts.URL { - t.Errorf("a.URI = %q; want %q", a.URI, ts.URL) - } -} - -func TestGetReg(t *testing.T) { - const terms = "https://ca.tld/acme/terms" - const newTerms = "https://ca.tld/acme/new-terms" - contacts := []string{"mailto:admin@example.com"} - - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "test-nonce") - return - } - if r.Method != "POST" { - t.Errorf("r.Method = %q; want POST", r.Method) - } - - var j struct { - Resource string - Contact []string - Agreement string - } - decodeJWSRequest(t, &j, r) - - // Test request - if j.Resource != "reg" { - t.Errorf("j.Resource = %q; want reg", j.Resource) - } - if len(j.Contact) != 0 { - t.Errorf("j.Contact = %v", j.Contact) - } - if j.Agreement != "" { - t.Errorf("j.Agreement = %q", j.Agreement) - } - - w.Header().Set("Link", `;rel="next"`) - w.Header().Add("Link", `;rel="recover"`) - w.Header().Add("Link", fmt.Sprintf(`<%s>;rel="terms-of-service"`, newTerms)) - w.WriteHeader(http.StatusOK) - b, _ := json.Marshal(contacts) - fmt.Fprintf(w, `{"contact":%s, "agreement":%q}`, b, terms) - })) - defer ts.Close() - - c := Client{Key: testKeyEC} - a, err := c.GetReg(context.Background(), ts.URL) - if err != nil { - t.Fatal(err) - } - if a.Authz != "https://ca.tld/acme/new-authz" { - t.Errorf("a.AuthzURL = %q; want https://ca.tld/acme/new-authz", a.Authz) - } - if a.AgreedTerms != terms { - t.Errorf("a.AgreedTerms = %q; want %q", a.AgreedTerms, terms) - } - if a.CurrentTerms != newTerms { - t.Errorf("a.CurrentTerms = %q; want %q", a.CurrentTerms, newTerms) - } - if a.URI != ts.URL { - t.Errorf("a.URI = %q; want %q", a.URI, ts.URL) - } -} - -func TestAuthorize(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "test-nonce") - return - } - if r.Method != "POST" { - t.Errorf("r.Method = %q; want POST", r.Method) - } - - var j struct { - Resource string - Identifier struct { - Type string - Value string - } - } - decodeJWSRequest(t, &j, r) - - // Test request - if j.Resource != "new-authz" { - t.Errorf("j.Resource = %q; want new-authz", j.Resource) - } - if j.Identifier.Type != "dns" { - t.Errorf("j.Identifier.Type = %q; want dns", j.Identifier.Type) - } - if j.Identifier.Value != "example.com" { - t.Errorf("j.Identifier.Value = %q; want example.com", j.Identifier.Value) - } - - w.Header().Set("Location", "https://ca.tld/acme/auth/1") - w.WriteHeader(http.StatusCreated) - fmt.Fprintf(w, `{ - "identifier": {"type":"dns","value":"example.com"}, - "status":"pending", - "challenges":[ - { - "type":"http-01", - "status":"pending", - "uri":"https://ca.tld/acme/challenge/publickey/id1", - "token":"token1" - }, - { - "type":"tls-sni-01", - "status":"pending", - "uri":"https://ca.tld/acme/challenge/publickey/id2", - "token":"token2" - } - ], - "combinations":[[0],[1]]}`) - })) - defer ts.Close() - - cl := Client{Key: testKeyEC, dir: &Directory{AuthzURL: ts.URL}} - auth, err := cl.Authorize(context.Background(), "example.com") - if err != nil { - t.Fatal(err) - } - - if auth.URI != "https://ca.tld/acme/auth/1" { - t.Errorf("URI = %q; want https://ca.tld/acme/auth/1", auth.URI) - } - if auth.Status != "pending" { - t.Errorf("Status = %q; want pending", auth.Status) - } - if auth.Identifier.Type != "dns" { - t.Errorf("Identifier.Type = %q; want dns", auth.Identifier.Type) - } - if auth.Identifier.Value != "example.com" { - t.Errorf("Identifier.Value = %q; want example.com", auth.Identifier.Value) - } - - if n := len(auth.Challenges); n != 2 { - t.Fatalf("len(auth.Challenges) = %d; want 2", n) - } - - c := auth.Challenges[0] - if c.Type != "http-01" { - t.Errorf("c.Type = %q; want http-01", c.Type) - } - if c.URI != "https://ca.tld/acme/challenge/publickey/id1" { - t.Errorf("c.URI = %q; want https://ca.tld/acme/challenge/publickey/id1", c.URI) - } - if c.Token != "token1" { - t.Errorf("c.Token = %q; want token1", c.Token) - } - - c = auth.Challenges[1] - if c.Type != "tls-sni-01" { - t.Errorf("c.Type = %q; want tls-sni-01", c.Type) - } - if c.URI != "https://ca.tld/acme/challenge/publickey/id2" { - t.Errorf("c.URI = %q; want https://ca.tld/acme/challenge/publickey/id2", c.URI) - } - if c.Token != "token2" { - t.Errorf("c.Token = %q; want token2", c.Token) - } - - combs := [][]int{{0}, {1}} - if !reflect.DeepEqual(auth.Combinations, combs) { - t.Errorf("auth.Combinations: %+v\nwant: %+v\n", auth.Combinations, combs) - } -} - -func TestAuthorizeValid(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "nonce") - return - } - w.WriteHeader(http.StatusCreated) - w.Write([]byte(`{"status":"valid"}`)) - })) - defer ts.Close() - client := Client{Key: testKey, dir: &Directory{AuthzURL: ts.URL}} - _, err := client.Authorize(context.Background(), "example.com") - if err != nil { - t.Errorf("err = %v", err) - } -} - -func TestGetAuthorization(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method != "GET" { - t.Errorf("r.Method = %q; want GET", r.Method) - } - - w.WriteHeader(http.StatusOK) - fmt.Fprintf(w, `{ - "identifier": {"type":"dns","value":"example.com"}, - "status":"pending", - "challenges":[ - { - "type":"http-01", - "status":"pending", - "uri":"https://ca.tld/acme/challenge/publickey/id1", - "token":"token1" - }, - { - "type":"tls-sni-01", - "status":"pending", - "uri":"https://ca.tld/acme/challenge/publickey/id2", - "token":"token2" - } - ], - "combinations":[[0],[1]]}`) - })) - defer ts.Close() - - cl := Client{Key: testKeyEC} - auth, err := cl.GetAuthorization(context.Background(), ts.URL) - if err != nil { - t.Fatal(err) - } - - if auth.Status != "pending" { - t.Errorf("Status = %q; want pending", auth.Status) - } - if auth.Identifier.Type != "dns" { - t.Errorf("Identifier.Type = %q; want dns", auth.Identifier.Type) - } - if auth.Identifier.Value != "example.com" { - t.Errorf("Identifier.Value = %q; want example.com", auth.Identifier.Value) - } - - if n := len(auth.Challenges); n != 2 { - t.Fatalf("len(set.Challenges) = %d; want 2", n) - } - - c := auth.Challenges[0] - if c.Type != "http-01" { - t.Errorf("c.Type = %q; want http-01", c.Type) - } - if c.URI != "https://ca.tld/acme/challenge/publickey/id1" { - t.Errorf("c.URI = %q; want https://ca.tld/acme/challenge/publickey/id1", c.URI) - } - if c.Token != "token1" { - t.Errorf("c.Token = %q; want token1", c.Token) - } - - c = auth.Challenges[1] - if c.Type != "tls-sni-01" { - t.Errorf("c.Type = %q; want tls-sni-01", c.Type) - } - if c.URI != "https://ca.tld/acme/challenge/publickey/id2" { - t.Errorf("c.URI = %q; want https://ca.tld/acme/challenge/publickey/id2", c.URI) - } - if c.Token != "token2" { - t.Errorf("c.Token = %q; want token2", c.Token) - } - - combs := [][]int{{0}, {1}} - if !reflect.DeepEqual(auth.Combinations, combs) { - t.Errorf("auth.Combinations: %+v\nwant: %+v\n", auth.Combinations, combs) - } -} - -func TestWaitAuthorization(t *testing.T) { - var count int - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - count++ - w.Header().Set("Retry-After", "0") - if count > 1 { - fmt.Fprintf(w, `{"status":"valid"}`) - return - } - fmt.Fprintf(w, `{"status":"pending"}`) - })) - defer ts.Close() - - type res struct { - authz *Authorization - err error - } - done := make(chan res) - defer close(done) - go func() { - var client Client - a, err := client.WaitAuthorization(context.Background(), ts.URL) - done <- res{a, err} - }() - - select { - case <-time.After(5 * time.Second): - t.Fatal("WaitAuthz took too long to return") - case res := <-done: - if res.err != nil { - t.Fatalf("res.err = %v", res.err) - } - if res.authz == nil { - t.Fatal("res.authz is nil") - } - } -} - -func TestWaitAuthorizationInvalid(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, `{"status":"invalid"}`) - })) - defer ts.Close() - - res := make(chan error) - defer close(res) - go func() { - var client Client - _, err := client.WaitAuthorization(context.Background(), ts.URL) - res <- err - }() - - select { - case <-time.After(3 * time.Second): - t.Fatal("WaitAuthz took too long to return") - case err := <-res: - if err == nil { - t.Error("err is nil") - } - if _, ok := err.(*AuthorizationError); !ok { - t.Errorf("err is %T; want *AuthorizationError", err) - } - } -} - -func TestWaitAuthorizationClientError(t *testing.T) { - const code = http.StatusBadRequest - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(code) - })) - defer ts.Close() - - ch := make(chan error, 1) - go func() { - var client Client - _, err := client.WaitAuthorization(context.Background(), ts.URL) - ch <- err - }() - - select { - case <-time.After(3 * time.Second): - t.Fatal("WaitAuthz took too long to return") - case err := <-ch: - res, ok := err.(*Error) - if !ok { - t.Fatalf("err is %v (%T); want a non-nil *Error", err, err) - } - if res.StatusCode != code { - t.Errorf("res.StatusCode = %d; want %d", res.StatusCode, code) - } - } -} - -func TestWaitAuthorizationCancel(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Retry-After", "60") - fmt.Fprintf(w, `{"status":"pending"}`) - })) - defer ts.Close() - - res := make(chan error) - defer close(res) - go func() { - var client Client - ctx, cancel := context.WithTimeout(context.Background(), 200*time.Millisecond) - defer cancel() - _, err := client.WaitAuthorization(ctx, ts.URL) - res <- err - }() - - select { - case <-time.After(time.Second): - t.Fatal("WaitAuthz took too long to return") - case err := <-res: - if err == nil { - t.Error("err is nil") - } - } -} - -func TestRevokeAuthorization(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "nonce") - return - } - switch r.URL.Path { - case "/1": - var req struct { - Resource string - Status string - Delete bool - } - decodeJWSRequest(t, &req, r) - if req.Resource != "authz" { - t.Errorf("req.Resource = %q; want authz", req.Resource) - } - if req.Status != "deactivated" { - t.Errorf("req.Status = %q; want deactivated", req.Status) - } - if !req.Delete { - t.Errorf("req.Delete is false") - } - case "/2": - w.WriteHeader(http.StatusInternalServerError) - } - })) - defer ts.Close() - client := &Client{Key: testKey} - ctx := context.Background() - if err := client.RevokeAuthorization(ctx, ts.URL+"/1"); err != nil { - t.Errorf("err = %v", err) - } - if client.RevokeAuthorization(ctx, ts.URL+"/2") == nil { - t.Error("nil error") - } -} - -func TestPollChallenge(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method != "GET" { - t.Errorf("r.Method = %q; want GET", r.Method) - } - - w.WriteHeader(http.StatusOK) - fmt.Fprintf(w, `{ - "type":"http-01", - "status":"pending", - "uri":"https://ca.tld/acme/challenge/publickey/id1", - "token":"token1"}`) - })) - defer ts.Close() - - cl := Client{Key: testKeyEC} - chall, err := cl.GetChallenge(context.Background(), ts.URL) - if err != nil { - t.Fatal(err) - } - - if chall.Status != "pending" { - t.Errorf("Status = %q; want pending", chall.Status) - } - if chall.Type != "http-01" { - t.Errorf("c.Type = %q; want http-01", chall.Type) - } - if chall.URI != "https://ca.tld/acme/challenge/publickey/id1" { - t.Errorf("c.URI = %q; want https://ca.tld/acme/challenge/publickey/id1", chall.URI) - } - if chall.Token != "token1" { - t.Errorf("c.Token = %q; want token1", chall.Token) - } -} - -func TestAcceptChallenge(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "test-nonce") - return - } - if r.Method != "POST" { - t.Errorf("r.Method = %q; want POST", r.Method) - } - - var j struct { - Resource string - Type string - Auth string `json:"keyAuthorization"` - } - decodeJWSRequest(t, &j, r) - - // Test request - if j.Resource != "challenge" { - t.Errorf(`resource = %q; want "challenge"`, j.Resource) - } - if j.Type != "http-01" { - t.Errorf(`type = %q; want "http-01"`, j.Type) - } - keyAuth := "token1." + testKeyECThumbprint - if j.Auth != keyAuth { - t.Errorf(`keyAuthorization = %q; want %q`, j.Auth, keyAuth) - } - - // Respond to request - w.WriteHeader(http.StatusAccepted) - fmt.Fprintf(w, `{ - "type":"http-01", - "status":"pending", - "uri":"https://ca.tld/acme/challenge/publickey/id1", - "token":"token1", - "keyAuthorization":%q - }`, keyAuth) - })) - defer ts.Close() - - cl := Client{Key: testKeyEC} - c, err := cl.Accept(context.Background(), &Challenge{ - URI: ts.URL, - Token: "token1", - Type: "http-01", - }) - if err != nil { - t.Fatal(err) - } - - if c.Type != "http-01" { - t.Errorf("c.Type = %q; want http-01", c.Type) - } - if c.URI != "https://ca.tld/acme/challenge/publickey/id1" { - t.Errorf("c.URI = %q; want https://ca.tld/acme/challenge/publickey/id1", c.URI) - } - if c.Token != "token1" { - t.Errorf("c.Token = %q; want token1", c.Token) - } -} - -func TestNewCert(t *testing.T) { - notBefore := time.Now() - notAfter := notBefore.AddDate(0, 2, 0) - timeNow = func() time.Time { return notBefore } - - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "test-nonce") - return - } - if r.Method != "POST" { - t.Errorf("r.Method = %q; want POST", r.Method) - } - - var j struct { - Resource string `json:"resource"` - CSR string `json:"csr"` - NotBefore string `json:"notBefore,omitempty"` - NotAfter string `json:"notAfter,omitempty"` - } - decodeJWSRequest(t, &j, r) - - // Test request - if j.Resource != "new-cert" { - t.Errorf(`resource = %q; want "new-cert"`, j.Resource) - } - if j.NotBefore != notBefore.Format(time.RFC3339) { - t.Errorf(`notBefore = %q; wanted %q`, j.NotBefore, notBefore.Format(time.RFC3339)) - } - if j.NotAfter != notAfter.Format(time.RFC3339) { - t.Errorf(`notAfter = %q; wanted %q`, j.NotAfter, notAfter.Format(time.RFC3339)) - } - - // Respond to request - template := x509.Certificate{ - SerialNumber: big.NewInt(int64(1)), - Subject: pkix.Name{ - Organization: []string{"goacme"}, - }, - NotBefore: notBefore, - NotAfter: notAfter, - - KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, - ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, - BasicConstraintsValid: true, - } - - sampleCert, err := x509.CreateCertificate(rand.Reader, &template, &template, &testKeyEC.PublicKey, testKeyEC) - if err != nil { - t.Fatalf("Error creating certificate: %v", err) - } - - w.Header().Set("Location", "https://ca.tld/acme/cert/1") - w.WriteHeader(http.StatusCreated) - w.Write(sampleCert) - })) - defer ts.Close() - - csr := x509.CertificateRequest{ - Version: 0, - Subject: pkix.Name{ - CommonName: "example.com", - Organization: []string{"goacme"}, - }, - } - csrb, err := x509.CreateCertificateRequest(rand.Reader, &csr, testKeyEC) - if err != nil { - t.Fatal(err) - } - - c := Client{Key: testKeyEC, dir: &Directory{CertURL: ts.URL}} - cert, certURL, err := c.CreateCert(context.Background(), csrb, notAfter.Sub(notBefore), false) - if err != nil { - t.Fatal(err) - } - if cert == nil { - t.Errorf("cert is nil") - } - if certURL != "https://ca.tld/acme/cert/1" { - t.Errorf("certURL = %q; want https://ca.tld/acme/cert/1", certURL) - } -} - -func TestFetchCert(t *testing.T) { - var count byte - var ts *httptest.Server - ts = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - count++ - if count < 3 { - up := fmt.Sprintf("<%s>;rel=up", ts.URL) - w.Header().Set("Link", up) - } - w.Write([]byte{count}) - })) - defer ts.Close() - res, err := (&Client{}).FetchCert(context.Background(), ts.URL, true) - if err != nil { - t.Fatalf("FetchCert: %v", err) - } - cert := [][]byte{{1}, {2}, {3}} - if !reflect.DeepEqual(res, cert) { - t.Errorf("res = %v; want %v", res, cert) - } -} - -func TestFetchCertRetry(t *testing.T) { - var count int - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if count < 1 { - w.Header().Set("Retry-After", "0") - w.WriteHeader(http.StatusAccepted) - count++ - return - } - w.Write([]byte{1}) - })) - defer ts.Close() - res, err := (&Client{}).FetchCert(context.Background(), ts.URL, false) - if err != nil { - t.Fatalf("FetchCert: %v", err) - } - cert := [][]byte{{1}} - if !reflect.DeepEqual(res, cert) { - t.Errorf("res = %v; want %v", res, cert) - } -} - -func TestFetchCertCancel(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Retry-After", "0") - w.WriteHeader(http.StatusAccepted) - })) - defer ts.Close() - ctx, cancel := context.WithCancel(context.Background()) - done := make(chan struct{}) - var err error - go func() { - _, err = (&Client{}).FetchCert(ctx, ts.URL, false) - close(done) - }() - cancel() - <-done - if err != context.Canceled { - t.Errorf("err = %v; want %v", err, context.Canceled) - } -} - -func TestFetchCertDepth(t *testing.T) { - var count byte - var ts *httptest.Server - ts = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - count++ - if count > maxChainLen+1 { - t.Errorf("count = %d; want at most %d", count, maxChainLen+1) - w.WriteHeader(http.StatusInternalServerError) - } - w.Header().Set("Link", fmt.Sprintf("<%s>;rel=up", ts.URL)) - w.Write([]byte{count}) - })) - defer ts.Close() - _, err := (&Client{}).FetchCert(context.Background(), ts.URL, true) - if err == nil { - t.Errorf("err is nil") - } -} - -func TestFetchCertBreadth(t *testing.T) { - var ts *httptest.Server - ts = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - for i := 0; i < maxChainLen+1; i++ { - w.Header().Add("Link", fmt.Sprintf("<%s>;rel=up", ts.URL)) - } - w.Write([]byte{1}) - })) - defer ts.Close() - _, err := (&Client{}).FetchCert(context.Background(), ts.URL, true) - if err == nil { - t.Errorf("err is nil") - } -} - -func TestFetchCertSize(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - b := bytes.Repeat([]byte{1}, maxCertSize+1) - w.Write(b) - })) - defer ts.Close() - _, err := (&Client{}).FetchCert(context.Background(), ts.URL, false) - if err == nil { - t.Errorf("err is nil") - } -} - -func TestRevokeCert(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method == "HEAD" { - w.Header().Set("Replay-Nonce", "nonce") - return - } - - var req struct { - Resource string - Certificate string - Reason int - } - decodeJWSRequest(t, &req, r) - if req.Resource != "revoke-cert" { - t.Errorf("req.Resource = %q; want revoke-cert", req.Resource) - } - if req.Reason != 1 { - t.Errorf("req.Reason = %d; want 1", req.Reason) - } - // echo -n cert | base64 | tr -d '=' | tr '/+' '_-' - cert := "Y2VydA" - if req.Certificate != cert { - t.Errorf("req.Certificate = %q; want %q", req.Certificate, cert) - } - })) - defer ts.Close() - client := &Client{ - Key: testKeyEC, - dir: &Directory{RevokeURL: ts.URL}, - } - ctx := context.Background() - if err := client.RevokeCert(ctx, nil, []byte("cert"), CRLReasonKeyCompromise); err != nil { - t.Fatal(err) - } -} - -func TestNonce_add(t *testing.T) { - var c Client - c.addNonce(http.Header{"Replay-Nonce": {"nonce"}}) - c.addNonce(http.Header{"Replay-Nonce": {}}) - c.addNonce(http.Header{"Replay-Nonce": {"nonce"}}) - - nonces := map[string]struct{}{"nonce": {}} - if !reflect.DeepEqual(c.nonces, nonces) { - t.Errorf("c.nonces = %q; want %q", c.nonces, nonces) - } -} - -func TestNonce_addMax(t *testing.T) { - c := &Client{nonces: make(map[string]struct{})} - for i := 0; i < maxNonces; i++ { - c.nonces[fmt.Sprintf("%d", i)] = struct{}{} - } - c.addNonce(http.Header{"Replay-Nonce": {"nonce"}}) - if n := len(c.nonces); n != maxNonces { - t.Errorf("len(c.nonces) = %d; want %d", n, maxNonces) - } -} - -func TestNonce_fetch(t *testing.T) { - tests := []struct { - code int - nonce string - }{ - {http.StatusOK, "nonce1"}, - {http.StatusBadRequest, "nonce2"}, - {http.StatusOK, ""}, - } - var i int - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method != "HEAD" { - t.Errorf("%d: r.Method = %q; want HEAD", i, r.Method) - } - w.Header().Set("Replay-Nonce", tests[i].nonce) - w.WriteHeader(tests[i].code) - })) - defer ts.Close() - for ; i < len(tests); i++ { - test := tests[i] - c := &Client{} - n, err := c.fetchNonce(context.Background(), ts.URL) - if n != test.nonce { - t.Errorf("%d: n=%q; want %q", i, n, test.nonce) - } - switch { - case err == nil && test.nonce == "": - t.Errorf("%d: n=%q, err=%v; want non-nil error", i, n, err) - case err != nil && test.nonce != "": - t.Errorf("%d: n=%q, err=%v; want %q", i, n, err, test.nonce) - } - } -} - -func TestNonce_fetchError(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusTooManyRequests) - })) - defer ts.Close() - c := &Client{} - _, err := c.fetchNonce(context.Background(), ts.URL) - e, ok := err.(*Error) - if !ok { - t.Fatalf("err is %T; want *Error", err) - } - if e.StatusCode != http.StatusTooManyRequests { - t.Errorf("e.StatusCode = %d; want %d", e.StatusCode, http.StatusTooManyRequests) - } -} - -func TestNonce_postJWS(t *testing.T) { - var count int - seen := make(map[string]bool) - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - count++ - w.Header().Set("Replay-Nonce", fmt.Sprintf("nonce%d", count)) - if r.Method == "HEAD" { - // We expect the client do a HEAD request - // but only to fetch the first nonce. - return - } - // Make client.Authorize happy; we're not testing its result. - defer func() { - w.WriteHeader(http.StatusCreated) - w.Write([]byte(`{"status":"valid"}`)) - }() - - head, err := decodeJWSHead(r) - if err != nil { - t.Errorf("decodeJWSHead: %v", err) - return - } - if head.Nonce == "" { - t.Error("head.Nonce is empty") - return - } - if seen[head.Nonce] { - t.Errorf("nonce is already used: %q", head.Nonce) - } - seen[head.Nonce] = true - })) - defer ts.Close() - - client := Client{Key: testKey, dir: &Directory{AuthzURL: ts.URL}} - if _, err := client.Authorize(context.Background(), "example.com"); err != nil { - t.Errorf("client.Authorize 1: %v", err) - } - // The second call should not generate another extra HEAD request. - if _, err := client.Authorize(context.Background(), "example.com"); err != nil { - t.Errorf("client.Authorize 2: %v", err) - } - - if count != 3 { - t.Errorf("total requests count: %d; want 3", count) - } - if n := len(client.nonces); n != 1 { - t.Errorf("len(client.nonces) = %d; want 1", n) - } - for k := range seen { - if _, exist := client.nonces[k]; exist { - t.Errorf("used nonce %q in client.nonces", k) - } - } -} - -func TestRetryPostJWS(t *testing.T) { - var count int - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - count++ - w.Header().Set("Replay-Nonce", fmt.Sprintf("nonce%d", count)) - if r.Method == "HEAD" { - // We expect the client to do 2 head requests to fetch - // nonces, one to start and another after getting badNonce - return - } - - head, err := decodeJWSHead(r) - if err != nil { - t.Errorf("decodeJWSHead: %v", err) - } else if head.Nonce == "" { - t.Error("head.Nonce is empty") - } else if head.Nonce == "nonce1" { - // return a badNonce error to force the call to retry - w.WriteHeader(http.StatusBadRequest) - w.Write([]byte(`{"type":"urn:ietf:params:acme:error:badNonce"}`)) - return - } - // Make client.Authorize happy; we're not testing its result. - w.WriteHeader(http.StatusCreated) - w.Write([]byte(`{"status":"valid"}`)) - })) - defer ts.Close() - - client := Client{Key: testKey, dir: &Directory{AuthzURL: ts.URL}} - // This call will fail with badNonce, causing a retry - if _, err := client.Authorize(context.Background(), "example.com"); err != nil { - t.Errorf("client.Authorize 1: %v", err) - } - if count != 4 { - t.Errorf("total requests count: %d; want 4", count) - } -} - -func TestLinkHeader(t *testing.T) { - h := http.Header{"Link": { - `;rel="next"`, - `; rel=recover`, - `; foo=bar; rel="terms-of-service"`, - `;rel="next"`, - }} - tests := []struct { - rel string - out []string - }{ - {"next", []string{"https://example.com/acme/new-authz", "dup"}}, - {"recover", []string{"https://example.com/acme/recover-reg"}}, - {"terms-of-service", []string{"https://example.com/acme/terms"}}, - {"empty", nil}, - } - for i, test := range tests { - if v := linkHeader(h, test.rel); !reflect.DeepEqual(v, test.out) { - t.Errorf("%d: linkHeader(%q): %v; want %v", i, test.rel, v, test.out) - } - } -} - -func TestErrorResponse(t *testing.T) { - s := `{ - "status": 400, - "type": "urn:acme:error:xxx", - "detail": "text" - }` - res := &http.Response{ - StatusCode: 400, - Status: "400 Bad Request", - Body: ioutil.NopCloser(strings.NewReader(s)), - Header: http.Header{"X-Foo": {"bar"}}, - } - err := responseError(res) - v, ok := err.(*Error) - if !ok { - t.Fatalf("err = %+v (%T); want *Error type", err, err) - } - if v.StatusCode != 400 { - t.Errorf("v.StatusCode = %v; want 400", v.StatusCode) - } - if v.ProblemType != "urn:acme:error:xxx" { - t.Errorf("v.ProblemType = %q; want urn:acme:error:xxx", v.ProblemType) - } - if v.Detail != "text" { - t.Errorf("v.Detail = %q; want text", v.Detail) - } - if !reflect.DeepEqual(v.Header, res.Header) { - t.Errorf("v.Header = %+v; want %+v", v.Header, res.Header) - } -} - -func TestTLSSNI01ChallengeCert(t *testing.T) { - const ( - token = "evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA" - // echo -n | shasum -a 256 - san = "dbbd5eefe7b4d06eb9d1d9f5acb4c7cd.a27d320e4b30332f0b6cb441734ad7b0.acme.invalid" - ) - - client := &Client{Key: testKeyEC} - tlscert, name, err := client.TLSSNI01ChallengeCert(token) - if err != nil { - t.Fatal(err) - } - - if n := len(tlscert.Certificate); n != 1 { - t.Fatalf("len(tlscert.Certificate) = %d; want 1", n) - } - cert, err := x509.ParseCertificate(tlscert.Certificate[0]) - if err != nil { - t.Fatal(err) - } - if len(cert.DNSNames) != 1 || cert.DNSNames[0] != san { - t.Fatalf("cert.DNSNames = %v; want %q", cert.DNSNames, san) - } - if cert.DNSNames[0] != name { - t.Errorf("cert.DNSNames[0] != name: %q vs %q", cert.DNSNames[0], name) - } - if cn := cert.Subject.CommonName; cn != san { - t.Errorf("cert.Subject.CommonName = %q; want %q", cn, san) - } -} - -func TestTLSSNI02ChallengeCert(t *testing.T) { - const ( - token = "evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA" - // echo -n evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA | shasum -a 256 - sanA = "7ea0aaa69214e71e02cebb18bb867736.09b730209baabf60e43d4999979ff139.token.acme.invalid" - // echo -n | shasum -a 256 - sanB = "dbbd5eefe7b4d06eb9d1d9f5acb4c7cd.a27d320e4b30332f0b6cb441734ad7b0.ka.acme.invalid" - ) - - client := &Client{Key: testKeyEC} - tlscert, name, err := client.TLSSNI02ChallengeCert(token) - if err != nil { - t.Fatal(err) - } - - if n := len(tlscert.Certificate); n != 1 { - t.Fatalf("len(tlscert.Certificate) = %d; want 1", n) - } - cert, err := x509.ParseCertificate(tlscert.Certificate[0]) - if err != nil { - t.Fatal(err) - } - names := []string{sanA, sanB} - if !reflect.DeepEqual(cert.DNSNames, names) { - t.Fatalf("cert.DNSNames = %v;\nwant %v", cert.DNSNames, names) - } - sort.Strings(cert.DNSNames) - i := sort.SearchStrings(cert.DNSNames, name) - if i >= len(cert.DNSNames) || cert.DNSNames[i] != name { - t.Errorf("%v doesn't have %q", cert.DNSNames, name) - } - if cn := cert.Subject.CommonName; cn != sanA { - t.Errorf("CommonName = %q; want %q", cn, sanA) - } -} - -func TestTLSChallengeCertOpt(t *testing.T) { - key, err := rsa.GenerateKey(rand.Reader, 512) - if err != nil { - t.Fatal(err) - } - tmpl := &x509.Certificate{ - SerialNumber: big.NewInt(2), - Subject: pkix.Name{Organization: []string{"Test"}}, - DNSNames: []string{"should-be-overwritten"}, - } - opts := []CertOption{WithKey(key), WithTemplate(tmpl)} - - client := &Client{Key: testKeyEC} - cert1, _, err := client.TLSSNI01ChallengeCert("token", opts...) - if err != nil { - t.Fatal(err) - } - cert2, _, err := client.TLSSNI02ChallengeCert("token", opts...) - if err != nil { - t.Fatal(err) - } - - for i, tlscert := range []tls.Certificate{cert1, cert2} { - // verify generated cert private key - tlskey, ok := tlscert.PrivateKey.(*rsa.PrivateKey) - if !ok { - t.Errorf("%d: tlscert.PrivateKey is %T; want *rsa.PrivateKey", i, tlscert.PrivateKey) - continue - } - if tlskey.D.Cmp(key.D) != 0 { - t.Errorf("%d: tlskey.D = %v; want %v", i, tlskey.D, key.D) - } - // verify generated cert public key - x509Cert, err := x509.ParseCertificate(tlscert.Certificate[0]) - if err != nil { - t.Errorf("%d: %v", i, err) - continue - } - tlspub, ok := x509Cert.PublicKey.(*rsa.PublicKey) - if !ok { - t.Errorf("%d: x509Cert.PublicKey is %T; want *rsa.PublicKey", i, x509Cert.PublicKey) - continue - } - if tlspub.N.Cmp(key.N) != 0 { - t.Errorf("%d: tlspub.N = %v; want %v", i, tlspub.N, key.N) - } - // verify template option - sn := big.NewInt(2) - if x509Cert.SerialNumber.Cmp(sn) != 0 { - t.Errorf("%d: SerialNumber = %v; want %v", i, x509Cert.SerialNumber, sn) - } - org := []string{"Test"} - if !reflect.DeepEqual(x509Cert.Subject.Organization, org) { - t.Errorf("%d: Subject.Organization = %+v; want %+v", i, x509Cert.Subject.Organization, org) - } - for _, v := range x509Cert.DNSNames { - if !strings.HasSuffix(v, ".acme.invalid") { - t.Errorf("%d: invalid DNSNames element: %q", i, v) - } - } - } -} - -func TestHTTP01Challenge(t *testing.T) { - const ( - token = "xxx" - // thumbprint is precomputed for testKeyEC in jws_test.go - value = token + "." + testKeyECThumbprint - urlpath = "/.well-known/acme-challenge/" + token - ) - client := &Client{Key: testKeyEC} - val, err := client.HTTP01ChallengeResponse(token) - if err != nil { - t.Fatal(err) - } - if val != value { - t.Errorf("val = %q; want %q", val, value) - } - if path := client.HTTP01ChallengePath(token); path != urlpath { - t.Errorf("path = %q; want %q", path, urlpath) - } -} - -func TestDNS01ChallengeRecord(t *testing.T) { - // echo -n xxx. | \ - // openssl dgst -binary -sha256 | \ - // base64 | tr -d '=' | tr '/+' '_-' - const value = "8DERMexQ5VcdJ_prpPiA0mVdp7imgbCgjsG4SqqNMIo" - - client := &Client{Key: testKeyEC} - val, err := client.DNS01ChallengeRecord("xxx") - if err != nil { - t.Fatal(err) - } - if val != value { - t.Errorf("val = %q; want %q", val, value) - } -} - -func TestBackoff(t *testing.T) { - tt := []struct{ min, max time.Duration }{ - {time.Second, 2 * time.Second}, - {2 * time.Second, 3 * time.Second}, - {4 * time.Second, 5 * time.Second}, - {8 * time.Second, 9 * time.Second}, - } - for i, test := range tt { - d := backoff(i, time.Minute) - if d < test.min || test.max < d { - t.Errorf("%d: d = %v; want between %v and %v", i, d, test.min, test.max) - } - } - - min, max := time.Second, 2*time.Second - if d := backoff(-1, time.Minute); d < min || max < d { - t.Errorf("d = %v; want between %v and %v", d, min, max) - } - - bound := 10 * time.Second - if d := backoff(100, bound); d != bound { - t.Errorf("d = %v; want %v", d, bound) - } -} diff --git a/vendor/golang.org/x/crypto/acme/autocert/autocert.go b/vendor/golang.org/x/crypto/acme/autocert/autocert.go deleted file mode 100644 index 263b2913..00000000 --- a/vendor/golang.org/x/crypto/acme/autocert/autocert.go +++ /dev/null @@ -1,962 +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 autocert provides automatic access to certificates from Let's Encrypt -// and any other ACME-based CA. -// -// This package is a work in progress and makes no API stability promises. -package autocert - -import ( - "bytes" - "context" - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/rsa" - "crypto/tls" - "crypto/x509" - "crypto/x509/pkix" - "encoding/pem" - "errors" - "fmt" - "io" - mathrand "math/rand" - "net" - "net/http" - "path" - "strings" - "sync" - "time" - - "golang.org/x/crypto/acme" -) - -// createCertRetryAfter is how much time to wait before removing a failed state -// entry due to an unsuccessful createCert call. -// This is a variable instead of a const for testing. -// TODO: Consider making it configurable or an exp backoff? -var createCertRetryAfter = time.Minute - -// pseudoRand is safe for concurrent use. -var pseudoRand *lockedMathRand - -func init() { - src := mathrand.NewSource(timeNow().UnixNano()) - pseudoRand = &lockedMathRand{rnd: mathrand.New(src)} -} - -// AcceptTOS is a Manager.Prompt function that always returns true to -// indicate acceptance of the CA's Terms of Service during account -// registration. -func AcceptTOS(tosURL string) bool { return true } - -// HostPolicy specifies which host names the Manager is allowed to respond to. -// It returns a non-nil error if the host should be rejected. -// The returned error is accessible via tls.Conn.Handshake and its callers. -// See Manager's HostPolicy field and GetCertificate method docs for more details. -type HostPolicy func(ctx context.Context, host string) error - -// HostWhitelist returns a policy where only the specified host names are allowed. -// Only exact matches are currently supported. Subdomains, regexp or wildcard -// will not match. -func HostWhitelist(hosts ...string) HostPolicy { - whitelist := make(map[string]bool, len(hosts)) - for _, h := range hosts { - whitelist[h] = true - } - return func(_ context.Context, host string) error { - if !whitelist[host] { - return errors.New("acme/autocert: host not configured") - } - return nil - } -} - -// defaultHostPolicy is used when Manager.HostPolicy is not set. -func defaultHostPolicy(context.Context, string) error { - return nil -} - -// Manager is a stateful certificate manager built on top of acme.Client. -// It obtains and refreshes certificates automatically using "tls-sni-01", -// "tls-sni-02" and "http-01" challenge types, as well as providing them -// to a TLS server via tls.Config. -// -// You must specify a cache implementation, such as DirCache, -// to reuse obtained certificates across program restarts. -// Otherwise your server is very likely to exceed the certificate -// issuer's request rate limits. -type Manager struct { - // Prompt specifies a callback function to conditionally accept a CA's Terms of Service (TOS). - // The registration may require the caller to agree to the CA's TOS. - // If so, Manager calls Prompt with a TOS URL provided by the CA. Prompt should report - // whether the caller agrees to the terms. - // - // To always accept the terms, the callers can use AcceptTOS. - Prompt func(tosURL string) bool - - // Cache optionally stores and retrieves previously-obtained certificates. - // If nil, certs will only be cached for the lifetime of the Manager. - // - // Manager passes the Cache certificates data encoded in PEM, with private/public - // parts combined in a single Cache.Put call, private key first. - Cache Cache - - // HostPolicy controls which domains the Manager will attempt - // to retrieve new certificates for. It does not affect cached certs. - // - // If non-nil, HostPolicy is called before requesting a new cert. - // If nil, all hosts are currently allowed. This is not recommended, - // as it opens a potential attack where clients connect to a server - // by IP address and pretend to be asking for an incorrect host name. - // Manager will attempt to obtain a certificate for that host, incorrectly, - // eventually reaching the CA's rate limit for certificate requests - // and making it impossible to obtain actual certificates. - // - // See GetCertificate for more details. - HostPolicy HostPolicy - - // RenewBefore optionally specifies how early certificates should - // be renewed before they expire. - // - // If zero, they're renewed 30 days before expiration. - RenewBefore time.Duration - - // Client is used to perform low-level operations, such as account registration - // and requesting new certificates. - // If Client is nil, a zero-value acme.Client is used with acme.LetsEncryptURL - // directory endpoint and a newly-generated ECDSA P-256 key. - // - // Mutating the field after the first call of GetCertificate method will have no effect. - Client *acme.Client - - // Email optionally specifies a contact email address. - // This is used by CAs, such as Let's Encrypt, to notify about problems - // with issued certificates. - // - // If the Client's account key is already registered, Email is not used. - Email string - - // ForceRSA makes the Manager generate certificates with 2048-bit RSA keys. - // - // If false, a default is used. Currently the default - // is EC-based keys using the P-256 curve. - ForceRSA bool - - clientMu sync.Mutex - client *acme.Client // initialized by acmeClient method - - stateMu sync.Mutex - state map[string]*certState // keyed by domain name - - // renewal tracks the set of domains currently running renewal timers. - // It is keyed by domain name. - renewalMu sync.Mutex - renewal map[string]*domainRenewal - - // tokensMu guards the rest of the fields: tryHTTP01, certTokens and httpTokens. - tokensMu sync.RWMutex - // tryHTTP01 indicates whether the Manager should try "http-01" challenge type - // during the authorization flow. - tryHTTP01 bool - // httpTokens contains response body values for http-01 challenges - // and is keyed by the URL path at which a challenge response is expected - // to be provisioned. - // The entries are stored for the duration of the authorization flow. - httpTokens map[string][]byte - // certTokens contains temporary certificates for tls-sni challenges - // and is keyed by token domain name, which matches server name of ClientHello. - // Keys always have ".acme.invalid" suffix. - // The entries are stored for the duration of the authorization flow. - certTokens map[string]*tls.Certificate -} - -// GetCertificate implements the tls.Config.GetCertificate hook. -// It provides a TLS certificate for hello.ServerName host, including answering -// *.acme.invalid (TLS-SNI) challenges. All other fields of hello are ignored. -// -// If m.HostPolicy is non-nil, GetCertificate calls the policy before requesting -// a new cert. A non-nil error returned from m.HostPolicy halts TLS negotiation. -// The error is propagated back to the caller of GetCertificate and is user-visible. -// This does not affect cached certs. See HostPolicy field description for more details. -func (m *Manager) GetCertificate(hello *tls.ClientHelloInfo) (*tls.Certificate, error) { - if m.Prompt == nil { - return nil, errors.New("acme/autocert: Manager.Prompt not set") - } - - name := hello.ServerName - if name == "" { - return nil, errors.New("acme/autocert: missing server name") - } - if !strings.Contains(strings.Trim(name, "."), ".") { - return nil, errors.New("acme/autocert: server name component count invalid") - } - if strings.ContainsAny(name, `/\`) { - return nil, errors.New("acme/autocert: server name contains invalid character") - } - - // In the worst-case scenario, the timeout needs to account for caching, host policy, - // domain ownership verification and certificate issuance. - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - // check whether this is a token cert requested for TLS-SNI challenge - if strings.HasSuffix(name, ".acme.invalid") { - m.tokensMu.RLock() - defer m.tokensMu.RUnlock() - if cert := m.certTokens[name]; cert != nil { - return cert, nil - } - if cert, err := m.cacheGet(ctx, name); err == nil { - return cert, nil - } - // TODO: cache error results? - return nil, fmt.Errorf("acme/autocert: no token cert for %q", name) - } - - // regular domain - name = strings.TrimSuffix(name, ".") // golang.org/issue/18114 - cert, err := m.cert(ctx, name) - if err == nil { - return cert, nil - } - if err != ErrCacheMiss { - return nil, err - } - - // first-time - if err := m.hostPolicy()(ctx, name); err != nil { - return nil, err - } - cert, err = m.createCert(ctx, name) - if err != nil { - return nil, err - } - m.cachePut(ctx, name, cert) - return cert, nil -} - -// HTTPHandler configures the Manager to provision ACME "http-01" challenge responses. -// It returns an http.Handler that responds to the challenges and must be -// running on port 80. If it receives a request that is not an ACME challenge, -// it delegates the request to the optional fallback handler. -// -// If fallback is nil, the returned handler redirects all GET and HEAD requests -// to the default TLS port 443 with 302 Found status code, preserving the original -// request path and query. It responds with 400 Bad Request to all other HTTP methods. -// The fallback is not protected by the optional HostPolicy. -// -// Because the fallback handler is run with unencrypted port 80 requests, -// the fallback should not serve TLS-only requests. -// -// If HTTPHandler is never called, the Manager will only use TLS SNI -// challenges for domain verification. -func (m *Manager) HTTPHandler(fallback http.Handler) http.Handler { - m.tokensMu.Lock() - defer m.tokensMu.Unlock() - m.tryHTTP01 = true - - if fallback == nil { - fallback = http.HandlerFunc(handleHTTPRedirect) - } - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if !strings.HasPrefix(r.URL.Path, "/.well-known/acme-challenge/") { - fallback.ServeHTTP(w, r) - return - } - // A reasonable context timeout for cache and host policy only, - // because we don't wait for a new certificate issuance here. - ctx, cancel := context.WithTimeout(r.Context(), time.Minute) - defer cancel() - if err := m.hostPolicy()(ctx, r.Host); err != nil { - http.Error(w, err.Error(), http.StatusForbidden) - return - } - data, err := m.httpToken(ctx, r.URL.Path) - if err != nil { - http.Error(w, err.Error(), http.StatusNotFound) - return - } - w.Write(data) - }) -} - -func handleHTTPRedirect(w http.ResponseWriter, r *http.Request) { - if r.Method != "GET" && r.Method != "HEAD" { - http.Error(w, "Use HTTPS", http.StatusBadRequest) - return - } - target := "https://" + stripPort(r.Host) + r.URL.RequestURI() - http.Redirect(w, r, target, http.StatusFound) -} - -func stripPort(hostport string) string { - host, _, err := net.SplitHostPort(hostport) - if err != nil { - return hostport - } - return net.JoinHostPort(host, "443") -} - -// cert returns an existing certificate either from m.state or cache. -// If a certificate is found in cache but not in m.state, the latter will be filled -// with the cached value. -func (m *Manager) cert(ctx context.Context, name string) (*tls.Certificate, error) { - m.stateMu.Lock() - if s, ok := m.state[name]; ok { - m.stateMu.Unlock() - s.RLock() - defer s.RUnlock() - return s.tlscert() - } - defer m.stateMu.Unlock() - cert, err := m.cacheGet(ctx, name) - if err != nil { - return nil, err - } - signer, ok := cert.PrivateKey.(crypto.Signer) - if !ok { - return nil, errors.New("acme/autocert: private key cannot sign") - } - if m.state == nil { - m.state = make(map[string]*certState) - } - s := &certState{ - key: signer, - cert: cert.Certificate, - leaf: cert.Leaf, - } - m.state[name] = s - go m.renew(name, s.key, s.leaf.NotAfter) - return cert, nil -} - -// cacheGet always returns a valid certificate, or an error otherwise. -// If a cached certficate exists but is not valid, ErrCacheMiss is returned. -func (m *Manager) cacheGet(ctx context.Context, domain string) (*tls.Certificate, error) { - if m.Cache == nil { - return nil, ErrCacheMiss - } - data, err := m.Cache.Get(ctx, domain) - if err != nil { - return nil, err - } - - // private - priv, pub := pem.Decode(data) - if priv == nil || !strings.Contains(priv.Type, "PRIVATE") { - return nil, ErrCacheMiss - } - privKey, err := parsePrivateKey(priv.Bytes) - if err != nil { - return nil, err - } - - // public - var pubDER [][]byte - for len(pub) > 0 { - var b *pem.Block - b, pub = pem.Decode(pub) - if b == nil { - break - } - pubDER = append(pubDER, b.Bytes) - } - if len(pub) > 0 { - // Leftover content not consumed by pem.Decode. Corrupt. Ignore. - return nil, ErrCacheMiss - } - - // verify and create TLS cert - leaf, err := validCert(domain, pubDER, privKey) - if err != nil { - return nil, ErrCacheMiss - } - tlscert := &tls.Certificate{ - Certificate: pubDER, - PrivateKey: privKey, - Leaf: leaf, - } - return tlscert, nil -} - -func (m *Manager) cachePut(ctx context.Context, domain string, tlscert *tls.Certificate) error { - if m.Cache == nil { - return nil - } - - // contains PEM-encoded data - var buf bytes.Buffer - - // private - switch key := tlscert.PrivateKey.(type) { - case *ecdsa.PrivateKey: - if err := encodeECDSAKey(&buf, key); err != nil { - return err - } - case *rsa.PrivateKey: - b := x509.MarshalPKCS1PrivateKey(key) - pb := &pem.Block{Type: "RSA PRIVATE KEY", Bytes: b} - if err := pem.Encode(&buf, pb); err != nil { - return err - } - default: - return errors.New("acme/autocert: unknown private key type") - } - - // public - for _, b := range tlscert.Certificate { - pb := &pem.Block{Type: "CERTIFICATE", Bytes: b} - if err := pem.Encode(&buf, pb); err != nil { - return err - } - } - - return m.Cache.Put(ctx, domain, buf.Bytes()) -} - -func encodeECDSAKey(w io.Writer, key *ecdsa.PrivateKey) error { - b, err := x509.MarshalECPrivateKey(key) - if err != nil { - return err - } - pb := &pem.Block{Type: "EC PRIVATE KEY", Bytes: b} - return pem.Encode(w, pb) -} - -// createCert starts the domain ownership verification and returns a certificate -// for that domain upon success. -// -// If the domain is already being verified, it waits for the existing verification to complete. -// Either way, createCert blocks for the duration of the whole process. -func (m *Manager) createCert(ctx context.Context, domain string) (*tls.Certificate, error) { - // TODO: maybe rewrite this whole piece using sync.Once - state, err := m.certState(domain) - if err != nil { - return nil, err - } - // state may exist if another goroutine is already working on it - // in which case just wait for it to finish - if !state.locked { - state.RLock() - defer state.RUnlock() - return state.tlscert() - } - - // We are the first; state is locked. - // Unblock the readers when domain ownership is verified - // and we got the cert or the process failed. - defer state.Unlock() - state.locked = false - - der, leaf, err := m.authorizedCert(ctx, state.key, domain) - if err != nil { - // Remove the failed state after some time, - // making the manager call createCert again on the following TLS hello. - time.AfterFunc(createCertRetryAfter, func() { - defer testDidRemoveState(domain) - m.stateMu.Lock() - defer m.stateMu.Unlock() - // Verify the state hasn't changed and it's still invalid - // before deleting. - s, ok := m.state[domain] - if !ok { - return - } - if _, err := validCert(domain, s.cert, s.key); err == nil { - return - } - delete(m.state, domain) - }) - return nil, err - } - state.cert = der - state.leaf = leaf - go m.renew(domain, state.key, state.leaf.NotAfter) - return state.tlscert() -} - -// certState returns a new or existing certState. -// If a new certState is returned, state.exist is false and the state is locked. -// The returned error is non-nil only in the case where a new state could not be created. -func (m *Manager) certState(domain string) (*certState, error) { - m.stateMu.Lock() - defer m.stateMu.Unlock() - if m.state == nil { - m.state = make(map[string]*certState) - } - // existing state - if state, ok := m.state[domain]; ok { - return state, nil - } - - // new locked state - var ( - err error - key crypto.Signer - ) - if m.ForceRSA { - key, err = rsa.GenerateKey(rand.Reader, 2048) - } else { - key, err = ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - } - if err != nil { - return nil, err - } - - state := &certState{ - key: key, - locked: true, - } - state.Lock() // will be unlocked by m.certState caller - m.state[domain] = state - return state, nil -} - -// authorizedCert starts the domain ownership verification process and requests a new cert upon success. -// The key argument is the certificate private key. -func (m *Manager) authorizedCert(ctx context.Context, key crypto.Signer, domain string) (der [][]byte, leaf *x509.Certificate, err error) { - client, err := m.acmeClient(ctx) - if err != nil { - return nil, nil, err - } - - if err := m.verify(ctx, client, domain); err != nil { - return nil, nil, err - } - csr, err := certRequest(key, domain) - if err != nil { - return nil, nil, err - } - der, _, err = client.CreateCert(ctx, csr, 0, true) - if err != nil { - return nil, nil, err - } - leaf, err = validCert(domain, der, key) - if err != nil { - return nil, nil, err - } - return der, leaf, nil -} - -// verify runs the identifier (domain) authorization flow -// using each applicable ACME challenge type. -func (m *Manager) verify(ctx context.Context, client *acme.Client, domain string) error { - // The list of challenge types we'll try to fulfill - // in this specific order. - challengeTypes := []string{"tls-sni-02", "tls-sni-01"} - m.tokensMu.RLock() - if m.tryHTTP01 { - challengeTypes = append(challengeTypes, "http-01") - } - m.tokensMu.RUnlock() - - var nextTyp int // challengeType index of the next challenge type to try - for { - // Start domain authorization and get the challenge. - authz, err := client.Authorize(ctx, domain) - if err != nil { - return err - } - // No point in accepting challenges if the authorization status - // is in a final state. - switch authz.Status { - case acme.StatusValid: - return nil // already authorized - case acme.StatusInvalid: - return fmt.Errorf("acme/autocert: invalid authorization %q", authz.URI) - } - - // Pick the next preferred challenge. - var chal *acme.Challenge - for chal == nil && nextTyp < len(challengeTypes) { - chal = pickChallenge(challengeTypes[nextTyp], authz.Challenges) - nextTyp++ - } - if chal == nil { - return fmt.Errorf("acme/autocert: unable to authorize %q; tried %q", domain, challengeTypes) - } - cleanup, err := m.fulfill(ctx, client, chal) - if err != nil { - continue - } - defer cleanup() - if _, err := client.Accept(ctx, chal); err != nil { - continue - } - - // A challenge is fulfilled and accepted: wait for the CA to validate. - if _, err := client.WaitAuthorization(ctx, authz.URI); err == nil { - return nil - } - } -} - -// fulfill provisions a response to the challenge chal. -// The cleanup is non-nil only if provisioning succeeded. -func (m *Manager) fulfill(ctx context.Context, client *acme.Client, chal *acme.Challenge) (cleanup func(), err error) { - switch chal.Type { - case "tls-sni-01": - cert, name, err := client.TLSSNI01ChallengeCert(chal.Token) - if err != nil { - return nil, err - } - m.putCertToken(ctx, name, &cert) - return func() { go m.deleteCertToken(name) }, nil - case "tls-sni-02": - cert, name, err := client.TLSSNI02ChallengeCert(chal.Token) - if err != nil { - return nil, err - } - m.putCertToken(ctx, name, &cert) - return func() { go m.deleteCertToken(name) }, nil - case "http-01": - resp, err := client.HTTP01ChallengeResponse(chal.Token) - if err != nil { - return nil, err - } - p := client.HTTP01ChallengePath(chal.Token) - m.putHTTPToken(ctx, p, resp) - return func() { go m.deleteHTTPToken(p) }, nil - } - return nil, fmt.Errorf("acme/autocert: unknown challenge type %q", chal.Type) -} - -func pickChallenge(typ string, chal []*acme.Challenge) *acme.Challenge { - for _, c := range chal { - if c.Type == typ { - return c - } - } - return nil -} - -// putCertToken stores the cert under the named key in both m.certTokens map -// and m.Cache. -func (m *Manager) putCertToken(ctx context.Context, name string, cert *tls.Certificate) { - m.tokensMu.Lock() - defer m.tokensMu.Unlock() - if m.certTokens == nil { - m.certTokens = make(map[string]*tls.Certificate) - } - m.certTokens[name] = cert - m.cachePut(ctx, name, cert) -} - -// deleteCertToken removes the token certificate for the specified domain name -// from both m.certTokens map and m.Cache. -func (m *Manager) deleteCertToken(name string) { - m.tokensMu.Lock() - defer m.tokensMu.Unlock() - delete(m.certTokens, name) - if m.Cache != nil { - m.Cache.Delete(context.Background(), name) - } -} - -// httpToken retrieves an existing http-01 token value from an in-memory map -// or the optional cache. -func (m *Manager) httpToken(ctx context.Context, tokenPath string) ([]byte, error) { - m.tokensMu.RLock() - defer m.tokensMu.RUnlock() - if v, ok := m.httpTokens[tokenPath]; ok { - return v, nil - } - if m.Cache == nil { - return nil, fmt.Errorf("acme/autocert: no token at %q", tokenPath) - } - return m.Cache.Get(ctx, httpTokenCacheKey(tokenPath)) -} - -// putHTTPToken stores an http-01 token value using tokenPath as key -// in both in-memory map and the optional Cache. -// -// It ignores any error returned from Cache.Put. -func (m *Manager) putHTTPToken(ctx context.Context, tokenPath, val string) { - m.tokensMu.Lock() - defer m.tokensMu.Unlock() - if m.httpTokens == nil { - m.httpTokens = make(map[string][]byte) - } - b := []byte(val) - m.httpTokens[tokenPath] = b - if m.Cache != nil { - m.Cache.Put(ctx, httpTokenCacheKey(tokenPath), b) - } -} - -// deleteHTTPToken removes an http-01 token value from both in-memory map -// and the optional Cache, ignoring any error returned from the latter. -// -// If m.Cache is non-nil, it blocks until Cache.Delete returns without a timeout. -func (m *Manager) deleteHTTPToken(tokenPath string) { - m.tokensMu.Lock() - defer m.tokensMu.Unlock() - delete(m.httpTokens, tokenPath) - if m.Cache != nil { - m.Cache.Delete(context.Background(), httpTokenCacheKey(tokenPath)) - } -} - -// httpTokenCacheKey returns a key at which an http-01 token value may be stored -// in the Manager's optional Cache. -func httpTokenCacheKey(tokenPath string) string { - return "http-01-" + path.Base(tokenPath) -} - -// renew starts a cert renewal timer loop, one per domain. -// -// The loop is scheduled in two cases: -// - a cert was fetched from cache for the first time (wasn't in m.state) -// - a new cert was created by m.createCert -// -// The key argument is a certificate private key. -// The exp argument is the cert expiration time (NotAfter). -func (m *Manager) renew(domain string, key crypto.Signer, exp time.Time) { - m.renewalMu.Lock() - defer m.renewalMu.Unlock() - if m.renewal[domain] != nil { - // another goroutine is already on it - return - } - if m.renewal == nil { - m.renewal = make(map[string]*domainRenewal) - } - dr := &domainRenewal{m: m, domain: domain, key: key} - m.renewal[domain] = dr - dr.start(exp) -} - -// stopRenew stops all currently running cert renewal timers. -// The timers are not restarted during the lifetime of the Manager. -func (m *Manager) stopRenew() { - m.renewalMu.Lock() - defer m.renewalMu.Unlock() - for name, dr := range m.renewal { - delete(m.renewal, name) - dr.stop() - } -} - -func (m *Manager) accountKey(ctx context.Context) (crypto.Signer, error) { - const keyName = "acme_account.key" - - genKey := func() (*ecdsa.PrivateKey, error) { - return ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - } - - if m.Cache == nil { - return genKey() - } - - data, err := m.Cache.Get(ctx, keyName) - if err == ErrCacheMiss { - key, err := genKey() - if err != nil { - return nil, err - } - var buf bytes.Buffer - if err := encodeECDSAKey(&buf, key); err != nil { - return nil, err - } - if err := m.Cache.Put(ctx, keyName, buf.Bytes()); err != nil { - return nil, err - } - return key, nil - } - if err != nil { - return nil, err - } - - priv, _ := pem.Decode(data) - if priv == nil || !strings.Contains(priv.Type, "PRIVATE") { - return nil, errors.New("acme/autocert: invalid account key found in cache") - } - return parsePrivateKey(priv.Bytes) -} - -func (m *Manager) acmeClient(ctx context.Context) (*acme.Client, error) { - m.clientMu.Lock() - defer m.clientMu.Unlock() - if m.client != nil { - return m.client, nil - } - - client := m.Client - if client == nil { - client = &acme.Client{DirectoryURL: acme.LetsEncryptURL} - } - if client.Key == nil { - var err error - client.Key, err = m.accountKey(ctx) - if err != nil { - return nil, err - } - } - var contact []string - if m.Email != "" { - contact = []string{"mailto:" + m.Email} - } - a := &acme.Account{Contact: contact} - _, err := client.Register(ctx, a, m.Prompt) - if ae, ok := err.(*acme.Error); err == nil || ok && ae.StatusCode == http.StatusConflict { - // conflict indicates the key is already registered - m.client = client - err = nil - } - return m.client, err -} - -func (m *Manager) hostPolicy() HostPolicy { - if m.HostPolicy != nil { - return m.HostPolicy - } - return defaultHostPolicy -} - -func (m *Manager) renewBefore() time.Duration { - if m.RenewBefore > renewJitter { - return m.RenewBefore - } - return 720 * time.Hour // 30 days -} - -// certState is ready when its mutex is unlocked for reading. -type certState struct { - sync.RWMutex - locked bool // locked for read/write - key crypto.Signer // private key for cert - cert [][]byte // DER encoding - leaf *x509.Certificate // parsed cert[0]; always non-nil if cert != nil -} - -// tlscert creates a tls.Certificate from s.key and s.cert. -// Callers should wrap it in s.RLock() and s.RUnlock(). -func (s *certState) tlscert() (*tls.Certificate, error) { - if s.key == nil { - return nil, errors.New("acme/autocert: missing signer") - } - if len(s.cert) == 0 { - return nil, errors.New("acme/autocert: missing certificate") - } - return &tls.Certificate{ - PrivateKey: s.key, - Certificate: s.cert, - Leaf: s.leaf, - }, nil -} - -// certRequest creates a certificate request for the given common name cn -// and optional SANs. -func certRequest(key crypto.Signer, cn string, san ...string) ([]byte, error) { - req := &x509.CertificateRequest{ - Subject: pkix.Name{CommonName: cn}, - DNSNames: san, - } - return x509.CreateCertificateRequest(rand.Reader, req, key) -} - -// Attempt to parse the given private key DER block. OpenSSL 0.9.8 generates -// PKCS#1 private keys by default, while OpenSSL 1.0.0 generates PKCS#8 keys. -// OpenSSL ecparam generates SEC1 EC private keys for ECDSA. We try all three. -// -// Inspired by parsePrivateKey in crypto/tls/tls.go. -func parsePrivateKey(der []byte) (crypto.Signer, error) { - if key, err := x509.ParsePKCS1PrivateKey(der); err == nil { - return key, nil - } - if key, err := x509.ParsePKCS8PrivateKey(der); err == nil { - switch key := key.(type) { - case *rsa.PrivateKey: - return key, nil - case *ecdsa.PrivateKey: - return key, nil - default: - return nil, errors.New("acme/autocert: unknown private key type in PKCS#8 wrapping") - } - } - if key, err := x509.ParseECPrivateKey(der); err == nil { - return key, nil - } - - return nil, errors.New("acme/autocert: failed to parse private key") -} - -// validCert parses a cert chain provided as der argument and verifies the leaf, der[0], -// corresponds to the private key, as well as the domain match and expiration dates. -// It doesn't do any revocation checking. -// -// The returned value is the verified leaf cert. -func validCert(domain string, der [][]byte, key crypto.Signer) (leaf *x509.Certificate, err error) { - // parse public part(s) - var n int - for _, b := range der { - n += len(b) - } - pub := make([]byte, n) - n = 0 - for _, b := range der { - n += copy(pub[n:], b) - } - x509Cert, err := x509.ParseCertificates(pub) - if len(x509Cert) == 0 { - return nil, errors.New("acme/autocert: no public key found") - } - // verify the leaf is not expired and matches the domain name - leaf = x509Cert[0] - now := timeNow() - if now.Before(leaf.NotBefore) { - return nil, errors.New("acme/autocert: certificate is not valid yet") - } - if now.After(leaf.NotAfter) { - return nil, errors.New("acme/autocert: expired certificate") - } - if err := leaf.VerifyHostname(domain); err != nil { - return nil, err - } - // ensure the leaf corresponds to the private key - switch pub := leaf.PublicKey.(type) { - case *rsa.PublicKey: - prv, ok := key.(*rsa.PrivateKey) - if !ok { - return nil, errors.New("acme/autocert: private key type does not match public key type") - } - if pub.N.Cmp(prv.N) != 0 { - return nil, errors.New("acme/autocert: private key does not match public key") - } - case *ecdsa.PublicKey: - prv, ok := key.(*ecdsa.PrivateKey) - if !ok { - return nil, errors.New("acme/autocert: private key type does not match public key type") - } - if pub.X.Cmp(prv.X) != 0 || pub.Y.Cmp(prv.Y) != 0 { - return nil, errors.New("acme/autocert: private key does not match public key") - } - default: - return nil, errors.New("acme/autocert: unknown public key algorithm") - } - return leaf, nil -} - -type lockedMathRand struct { - sync.Mutex - rnd *mathrand.Rand -} - -func (r *lockedMathRand) int63n(max int64) int64 { - r.Lock() - n := r.rnd.Int63n(max) - r.Unlock() - return n -} - -// For easier testing. -var ( - timeNow = time.Now - - // Called when a state is removed. - testDidRemoveState = func(domain string) {} -) diff --git a/vendor/golang.org/x/crypto/acme/autocert/autocert_test.go b/vendor/golang.org/x/crypto/acme/autocert/autocert_test.go deleted file mode 100644 index 2da1912e..00000000 --- a/vendor/golang.org/x/crypto/acme/autocert/autocert_test.go +++ /dev/null @@ -1,757 +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 autocert - -import ( - "context" - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/rsa" - "crypto/tls" - "crypto/x509" - "crypto/x509/pkix" - "encoding/base64" - "encoding/json" - "fmt" - "html/template" - "io" - "math/big" - "net/http" - "net/http/httptest" - "reflect" - "strings" - "sync" - "testing" - "time" - - "golang.org/x/crypto/acme" -) - -var discoTmpl = template.Must(template.New("disco").Parse(`{ - "new-reg": "{{.}}/new-reg", - "new-authz": "{{.}}/new-authz", - "new-cert": "{{.}}/new-cert" -}`)) - -var authzTmpl = template.Must(template.New("authz").Parse(`{ - "status": "pending", - "challenges": [ - { - "uri": "{{.}}/challenge/1", - "type": "tls-sni-01", - "token": "token-01" - }, - { - "uri": "{{.}}/challenge/2", - "type": "tls-sni-02", - "token": "token-02" - }, - { - "uri": "{{.}}/challenge/dns-01", - "type": "dns-01", - "token": "token-dns-01" - }, - { - "uri": "{{.}}/challenge/http-01", - "type": "http-01", - "token": "token-http-01" - } - ] -}`)) - -type memCache struct { - mu sync.Mutex - keyData map[string][]byte -} - -func (m *memCache) Get(ctx context.Context, key string) ([]byte, error) { - m.mu.Lock() - defer m.mu.Unlock() - - v, ok := m.keyData[key] - if !ok { - return nil, ErrCacheMiss - } - return v, nil -} - -func (m *memCache) Put(ctx context.Context, key string, data []byte) error { - m.mu.Lock() - defer m.mu.Unlock() - - m.keyData[key] = data - return nil -} - -func (m *memCache) Delete(ctx context.Context, key string) error { - m.mu.Lock() - defer m.mu.Unlock() - - delete(m.keyData, key) - return nil -} - -func newMemCache() *memCache { - return &memCache{ - keyData: make(map[string][]byte), - } -} - -func dummyCert(pub interface{}, san ...string) ([]byte, error) { - return dateDummyCert(pub, time.Now(), time.Now().Add(90*24*time.Hour), san...) -} - -func dateDummyCert(pub interface{}, start, end time.Time, san ...string) ([]byte, error) { - // use EC key to run faster on 386 - key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - return nil, err - } - t := &x509.Certificate{ - SerialNumber: big.NewInt(1), - NotBefore: start, - NotAfter: end, - BasicConstraintsValid: true, - KeyUsage: x509.KeyUsageKeyEncipherment, - DNSNames: san, - } - if pub == nil { - pub = &key.PublicKey - } - return x509.CreateCertificate(rand.Reader, t, t, pub, key) -} - -func decodePayload(v interface{}, r io.Reader) error { - var req struct{ Payload string } - if err := json.NewDecoder(r).Decode(&req); err != nil { - return err - } - payload, err := base64.RawURLEncoding.DecodeString(req.Payload) - if err != nil { - return err - } - return json.Unmarshal(payload, v) -} - -func TestGetCertificate(t *testing.T) { - man := &Manager{Prompt: AcceptTOS} - defer man.stopRenew() - hello := &tls.ClientHelloInfo{ServerName: "example.org"} - testGetCertificate(t, man, "example.org", hello) -} - -func TestGetCertificate_trailingDot(t *testing.T) { - man := &Manager{Prompt: AcceptTOS} - defer man.stopRenew() - hello := &tls.ClientHelloInfo{ServerName: "example.org."} - testGetCertificate(t, man, "example.org", hello) -} - -func TestGetCertificate_ForceRSA(t *testing.T) { - man := &Manager{ - Prompt: AcceptTOS, - Cache: newMemCache(), - ForceRSA: true, - } - defer man.stopRenew() - hello := &tls.ClientHelloInfo{ServerName: "example.org"} - testGetCertificate(t, man, "example.org", hello) - - cert, err := man.cacheGet(context.Background(), "example.org") - if err != nil { - t.Fatalf("man.cacheGet: %v", err) - } - if _, ok := cert.PrivateKey.(*rsa.PrivateKey); !ok { - t.Errorf("cert.PrivateKey is %T; want *rsa.PrivateKey", cert.PrivateKey) - } -} - -func TestGetCertificate_nilPrompt(t *testing.T) { - man := &Manager{} - defer man.stopRenew() - url, finish := startACMEServerStub(t, man, "example.org") - defer finish() - key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - man.Client = &acme.Client{ - Key: key, - DirectoryURL: url, - } - hello := &tls.ClientHelloInfo{ServerName: "example.org"} - if _, err := man.GetCertificate(hello); err == nil { - t.Error("got certificate for example.org; wanted error") - } -} - -func TestGetCertificate_expiredCache(t *testing.T) { - // Make an expired cert and cache it. - pk, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - tmpl := &x509.Certificate{ - SerialNumber: big.NewInt(1), - Subject: pkix.Name{CommonName: "example.org"}, - NotAfter: time.Now(), - } - pub, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &pk.PublicKey, pk) - if err != nil { - t.Fatal(err) - } - tlscert := &tls.Certificate{ - Certificate: [][]byte{pub}, - PrivateKey: pk, - } - - man := &Manager{Prompt: AcceptTOS, Cache: newMemCache()} - defer man.stopRenew() - if err := man.cachePut(context.Background(), "example.org", tlscert); err != nil { - t.Fatalf("man.cachePut: %v", err) - } - - // The expired cached cert should trigger a new cert issuance - // and return without an error. - hello := &tls.ClientHelloInfo{ServerName: "example.org"} - testGetCertificate(t, man, "example.org", hello) -} - -func TestGetCertificate_failedAttempt(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusBadRequest) - })) - defer ts.Close() - - const example = "example.org" - d := createCertRetryAfter - f := testDidRemoveState - defer func() { - createCertRetryAfter = d - testDidRemoveState = f - }() - createCertRetryAfter = 0 - done := make(chan struct{}) - testDidRemoveState = func(domain string) { - if domain != example { - t.Errorf("testDidRemoveState: domain = %q; want %q", domain, example) - } - close(done) - } - - key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - man := &Manager{ - Prompt: AcceptTOS, - Client: &acme.Client{ - Key: key, - DirectoryURL: ts.URL, - }, - } - defer man.stopRenew() - hello := &tls.ClientHelloInfo{ServerName: example} - if _, err := man.GetCertificate(hello); err == nil { - t.Error("GetCertificate: err is nil") - } - select { - case <-time.After(5 * time.Second): - t.Errorf("took too long to remove the %q state", example) - case <-done: - man.stateMu.Lock() - defer man.stateMu.Unlock() - if v, exist := man.state[example]; exist { - t.Errorf("state exists for %q: %+v", example, v) - } - } -} - -// startACMEServerStub runs an ACME server -// The domain argument is the expected domain name of a certificate request. -func startACMEServerStub(t *testing.T, man *Manager, domain string) (url string, finish func()) { - // echo token-02 | shasum -a 256 - // then divide result in 2 parts separated by dot - tokenCertName := "4e8eb87631187e9ff2153b56b13a4dec.13a35d002e485d60ff37354b32f665d9.token.acme.invalid" - verifyTokenCert := func() { - hello := &tls.ClientHelloInfo{ServerName: tokenCertName} - _, err := man.GetCertificate(hello) - if err != nil { - t.Errorf("verifyTokenCert: GetCertificate(%q): %v", tokenCertName, err) - return - } - } - - // ACME CA server stub - var ca *httptest.Server - ca = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Replay-Nonce", "nonce") - if r.Method == "HEAD" { - // a nonce request - return - } - - switch r.URL.Path { - // discovery - case "/": - if err := discoTmpl.Execute(w, ca.URL); err != nil { - t.Errorf("discoTmpl: %v", err) - } - // client key registration - case "/new-reg": - w.Write([]byte("{}")) - // domain authorization - case "/new-authz": - w.Header().Set("Location", ca.URL+"/authz/1") - w.WriteHeader(http.StatusCreated) - if err := authzTmpl.Execute(w, ca.URL); err != nil { - t.Errorf("authzTmpl: %v", err) - } - // accept tls-sni-02 challenge - case "/challenge/2": - verifyTokenCert() - w.Write([]byte("{}")) - // authorization status - case "/authz/1": - w.Write([]byte(`{"status": "valid"}`)) - // cert request - case "/new-cert": - var req struct { - CSR string `json:"csr"` - } - decodePayload(&req, r.Body) - b, _ := base64.RawURLEncoding.DecodeString(req.CSR) - csr, err := x509.ParseCertificateRequest(b) - if err != nil { - t.Errorf("new-cert: CSR: %v", err) - } - if csr.Subject.CommonName != domain { - t.Errorf("CommonName in CSR = %q; want %q", csr.Subject.CommonName, domain) - } - der, err := dummyCert(csr.PublicKey, domain) - if err != nil { - t.Errorf("new-cert: dummyCert: %v", err) - } - chainUp := fmt.Sprintf("<%s/ca-cert>; rel=up", ca.URL) - w.Header().Set("Link", chainUp) - w.WriteHeader(http.StatusCreated) - w.Write(der) - // CA chain cert - case "/ca-cert": - der, err := dummyCert(nil, "ca") - if err != nil { - t.Errorf("ca-cert: dummyCert: %v", err) - } - w.Write(der) - default: - t.Errorf("unrecognized r.URL.Path: %s", r.URL.Path) - } - })) - finish = func() { - ca.Close() - - // make sure token cert was removed - cancel := make(chan struct{}) - done := make(chan struct{}) - go func() { - defer close(done) - tick := time.NewTicker(100 * time.Millisecond) - defer tick.Stop() - for { - hello := &tls.ClientHelloInfo{ServerName: tokenCertName} - if _, err := man.GetCertificate(hello); err != nil { - return - } - select { - case <-tick.C: - case <-cancel: - return - } - } - }() - select { - case <-done: - case <-time.After(5 * time.Second): - close(cancel) - t.Error("token cert was not removed") - <-done - } - } - return ca.URL, finish -} - -// tests man.GetCertificate flow using the provided hello argument. -// The domain argument is the expected domain name of a certificate request. -func testGetCertificate(t *testing.T, man *Manager, domain string, hello *tls.ClientHelloInfo) { - url, finish := startACMEServerStub(t, man, domain) - defer finish() - - // use EC key to run faster on 386 - key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - man.Client = &acme.Client{ - Key: key, - DirectoryURL: url, - } - - // simulate tls.Config.GetCertificate - var tlscert *tls.Certificate - done := make(chan struct{}) - go func() { - tlscert, err = man.GetCertificate(hello) - close(done) - }() - select { - case <-time.After(time.Minute): - t.Fatal("man.GetCertificate took too long to return") - case <-done: - } - if err != nil { - t.Fatalf("man.GetCertificate: %v", err) - } - - // verify the tlscert is the same we responded with from the CA stub - if len(tlscert.Certificate) == 0 { - t.Fatal("len(tlscert.Certificate) is 0") - } - cert, err := x509.ParseCertificate(tlscert.Certificate[0]) - if err != nil { - t.Fatalf("x509.ParseCertificate: %v", err) - } - if len(cert.DNSNames) == 0 || cert.DNSNames[0] != domain { - t.Errorf("cert.DNSNames = %v; want %q", cert.DNSNames, domain) - } - -} - -func TestVerifyHTTP01(t *testing.T) { - var ( - http01 http.Handler - - authzCount int // num. of created authorizations - didAcceptHTTP01 bool - ) - - verifyHTTPToken := func() { - r := httptest.NewRequest("GET", "/.well-known/acme-challenge/token-http-01", nil) - w := httptest.NewRecorder() - http01.ServeHTTP(w, r) - if w.Code != http.StatusOK { - t.Errorf("http token: w.Code = %d; want %d", w.Code, http.StatusOK) - } - if v := string(w.Body.Bytes()); !strings.HasPrefix(v, "token-http-01.") { - t.Errorf("http token value = %q; want 'token-http-01.' prefix", v) - } - } - - // ACME CA server stub, only the needed bits. - // TODO: Merge this with startACMEServerStub, making it a configurable CA for testing. - var ca *httptest.Server - ca = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Replay-Nonce", "nonce") - if r.Method == "HEAD" { - // a nonce request - return - } - - switch r.URL.Path { - // Discovery. - case "/": - if err := discoTmpl.Execute(w, ca.URL); err != nil { - t.Errorf("discoTmpl: %v", err) - } - // Client key registration. - case "/new-reg": - w.Write([]byte("{}")) - // New domain authorization. - case "/new-authz": - authzCount++ - w.Header().Set("Location", fmt.Sprintf("%s/authz/%d", ca.URL, authzCount)) - w.WriteHeader(http.StatusCreated) - if err := authzTmpl.Execute(w, ca.URL); err != nil { - t.Errorf("authzTmpl: %v", err) - } - // Accept tls-sni-02. - case "/challenge/2": - w.Write([]byte("{}")) - // Reject tls-sni-01. - case "/challenge/1": - http.Error(w, "won't accept tls-sni-01", http.StatusBadRequest) - // Should not accept dns-01. - case "/challenge/dns-01": - t.Errorf("dns-01 challenge was accepted") - http.Error(w, "won't accept dns-01", http.StatusBadRequest) - // Accept http-01. - case "/challenge/http-01": - didAcceptHTTP01 = true - verifyHTTPToken() - w.Write([]byte("{}")) - // Authorization statuses. - // Make tls-sni-xxx invalid. - case "/authz/1", "/authz/2": - w.Write([]byte(`{"status": "invalid"}`)) - case "/authz/3", "/authz/4": - w.Write([]byte(`{"status": "valid"}`)) - default: - http.NotFound(w, r) - t.Errorf("unrecognized r.URL.Path: %s", r.URL.Path) - } - })) - defer ca.Close() - - key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - m := &Manager{ - Client: &acme.Client{ - Key: key, - DirectoryURL: ca.URL, - }, - } - http01 = m.HTTPHandler(nil) - if err := m.verify(context.Background(), m.Client, "example.org"); err != nil { - t.Errorf("m.verify: %v", err) - } - // Only tls-sni-01, tls-sni-02 and http-01 must be accepted - // The dns-01 challenge is unsupported. - if authzCount != 3 { - t.Errorf("authzCount = %d; want 3", authzCount) - } - if !didAcceptHTTP01 { - t.Error("did not accept http-01 challenge") - } -} - -func TestHTTPHandlerDefaultFallback(t *testing.T) { - tt := []struct { - method, url string - wantCode int - wantLocation string - }{ - {"GET", "http://example.org", 302, "https://example.org/"}, - {"GET", "http://example.org/foo", 302, "https://example.org/foo"}, - {"GET", "http://example.org/foo/bar/", 302, "https://example.org/foo/bar/"}, - {"GET", "http://example.org/?a=b", 302, "https://example.org/?a=b"}, - {"GET", "http://example.org/foo?a=b", 302, "https://example.org/foo?a=b"}, - {"GET", "http://example.org:80/foo?a=b", 302, "https://example.org:443/foo?a=b"}, - {"GET", "http://example.org:80/foo%20bar", 302, "https://example.org:443/foo%20bar"}, - {"GET", "http://[2602:d1:xxxx::c60a]:1234", 302, "https://[2602:d1:xxxx::c60a]:443/"}, - {"GET", "http://[2602:d1:xxxx::c60a]", 302, "https://[2602:d1:xxxx::c60a]/"}, - {"GET", "http://[2602:d1:xxxx::c60a]/foo?a=b", 302, "https://[2602:d1:xxxx::c60a]/foo?a=b"}, - {"HEAD", "http://example.org", 302, "https://example.org/"}, - {"HEAD", "http://example.org/foo", 302, "https://example.org/foo"}, - {"HEAD", "http://example.org/foo/bar/", 302, "https://example.org/foo/bar/"}, - {"HEAD", "http://example.org/?a=b", 302, "https://example.org/?a=b"}, - {"HEAD", "http://example.org/foo?a=b", 302, "https://example.org/foo?a=b"}, - {"POST", "http://example.org", 400, ""}, - {"PUT", "http://example.org", 400, ""}, - {"GET", "http://example.org/.well-known/acme-challenge/x", 404, ""}, - } - var m Manager - h := m.HTTPHandler(nil) - for i, test := range tt { - r := httptest.NewRequest(test.method, test.url, nil) - w := httptest.NewRecorder() - h.ServeHTTP(w, r) - if w.Code != test.wantCode { - t.Errorf("%d: w.Code = %d; want %d", i, w.Code, test.wantCode) - t.Errorf("%d: body: %s", i, w.Body.Bytes()) - } - if v := w.Header().Get("Location"); v != test.wantLocation { - t.Errorf("%d: Location = %q; want %q", i, v, test.wantLocation) - } - } -} - -func TestAccountKeyCache(t *testing.T) { - m := Manager{Cache: newMemCache()} - ctx := context.Background() - k1, err := m.accountKey(ctx) - if err != nil { - t.Fatal(err) - } - k2, err := m.accountKey(ctx) - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(k1, k2) { - t.Errorf("account keys don't match: k1 = %#v; k2 = %#v", k1, k2) - } -} - -func TestCache(t *testing.T) { - privKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - tmpl := &x509.Certificate{ - SerialNumber: big.NewInt(1), - Subject: pkix.Name{CommonName: "example.org"}, - NotAfter: time.Now().Add(time.Hour), - } - pub, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &privKey.PublicKey, privKey) - if err != nil { - t.Fatal(err) - } - tlscert := &tls.Certificate{ - Certificate: [][]byte{pub}, - PrivateKey: privKey, - } - - man := &Manager{Cache: newMemCache()} - defer man.stopRenew() - ctx := context.Background() - if err := man.cachePut(ctx, "example.org", tlscert); err != nil { - t.Fatalf("man.cachePut: %v", err) - } - res, err := man.cacheGet(ctx, "example.org") - if err != nil { - t.Fatalf("man.cacheGet: %v", err) - } - if res == nil { - t.Fatal("res is nil") - } -} - -func TestHostWhitelist(t *testing.T) { - policy := HostWhitelist("example.com", "example.org", "*.example.net") - tt := []struct { - host string - allow bool - }{ - {"example.com", true}, - {"example.org", true}, - {"one.example.com", false}, - {"two.example.org", false}, - {"three.example.net", false}, - {"dummy", false}, - } - for i, test := range tt { - err := policy(nil, test.host) - if err != nil && test.allow { - t.Errorf("%d: policy(%q): %v; want nil", i, test.host, err) - } - if err == nil && !test.allow { - t.Errorf("%d: policy(%q): nil; want an error", i, test.host) - } - } -} - -func TestValidCert(t *testing.T) { - key1, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - key2, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - key3, err := rsa.GenerateKey(rand.Reader, 512) - if err != nil { - t.Fatal(err) - } - cert1, err := dummyCert(key1.Public(), "example.org") - if err != nil { - t.Fatal(err) - } - cert2, err := dummyCert(key2.Public(), "example.org") - if err != nil { - t.Fatal(err) - } - cert3, err := dummyCert(key3.Public(), "example.org") - if err != nil { - t.Fatal(err) - } - now := time.Now() - early, err := dateDummyCert(key1.Public(), now.Add(time.Hour), now.Add(2*time.Hour), "example.org") - if err != nil { - t.Fatal(err) - } - expired, err := dateDummyCert(key1.Public(), now.Add(-2*time.Hour), now.Add(-time.Hour), "example.org") - if err != nil { - t.Fatal(err) - } - - tt := []struct { - domain string - key crypto.Signer - cert [][]byte - ok bool - }{ - {"example.org", key1, [][]byte{cert1}, true}, - {"example.org", key3, [][]byte{cert3}, true}, - {"example.org", key1, [][]byte{cert1, cert2, cert3}, true}, - {"example.org", key1, [][]byte{cert1, {1}}, false}, - {"example.org", key1, [][]byte{{1}}, false}, - {"example.org", key1, [][]byte{cert2}, false}, - {"example.org", key2, [][]byte{cert1}, false}, - {"example.org", key1, [][]byte{cert3}, false}, - {"example.org", key3, [][]byte{cert1}, false}, - {"example.net", key1, [][]byte{cert1}, false}, - {"example.org", key1, [][]byte{early}, false}, - {"example.org", key1, [][]byte{expired}, false}, - } - for i, test := range tt { - leaf, err := validCert(test.domain, test.cert, test.key) - if err != nil && test.ok { - t.Errorf("%d: err = %v", i, err) - } - if err == nil && !test.ok { - t.Errorf("%d: err is nil", i) - } - if err == nil && test.ok && leaf == nil { - t.Errorf("%d: leaf is nil", i) - } - } -} - -type cacheGetFunc func(ctx context.Context, key string) ([]byte, error) - -func (f cacheGetFunc) Get(ctx context.Context, key string) ([]byte, error) { - return f(ctx, key) -} - -func (f cacheGetFunc) Put(ctx context.Context, key string, data []byte) error { - return fmt.Errorf("unsupported Put of %q = %q", key, data) -} - -func (f cacheGetFunc) Delete(ctx context.Context, key string) error { - return fmt.Errorf("unsupported Delete of %q", key) -} - -func TestManagerGetCertificateBogusSNI(t *testing.T) { - m := Manager{ - Prompt: AcceptTOS, - Cache: cacheGetFunc(func(ctx context.Context, key string) ([]byte, error) { - return nil, fmt.Errorf("cache.Get of %s", key) - }), - } - tests := []struct { - name string - wantErr string - }{ - {"foo.com", "cache.Get of foo.com"}, - {"foo.com.", "cache.Get of foo.com"}, - {`a\b.com`, "acme/autocert: server name contains invalid character"}, - {`a/b.com`, "acme/autocert: server name contains invalid character"}, - {"", "acme/autocert: missing server name"}, - {"foo", "acme/autocert: server name component count invalid"}, - {".foo", "acme/autocert: server name component count invalid"}, - {"foo.", "acme/autocert: server name component count invalid"}, - {"fo.o", "cache.Get of fo.o"}, - } - for _, tt := range tests { - _, err := m.GetCertificate(&tls.ClientHelloInfo{ServerName: tt.name}) - got := fmt.Sprint(err) - if got != tt.wantErr { - t.Errorf("GetCertificate(SNI = %q) = %q; want %q", tt.name, got, tt.wantErr) - } - } -} diff --git a/vendor/golang.org/x/crypto/acme/autocert/cache.go b/vendor/golang.org/x/crypto/acme/autocert/cache.go deleted file mode 100644 index 61a5fd23..00000000 --- a/vendor/golang.org/x/crypto/acme/autocert/cache.go +++ /dev/null @@ -1,130 +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 autocert - -import ( - "context" - "errors" - "io/ioutil" - "os" - "path/filepath" -) - -// ErrCacheMiss is returned when a certificate is not found in cache. -var ErrCacheMiss = errors.New("acme/autocert: certificate cache miss") - -// Cache is used by Manager to store and retrieve previously obtained certificates -// as opaque data. -// -// The key argument of the methods refers to a domain name but need not be an FQDN. -// Cache implementations should not rely on the key naming pattern. -type Cache interface { - // Get returns a certificate data for the specified key. - // If there's no such key, Get returns ErrCacheMiss. - Get(ctx context.Context, key string) ([]byte, error) - - // Put stores the data in the cache under the specified key. - // Underlying implementations may use any data storage format, - // as long as the reverse operation, Get, results in the original data. - Put(ctx context.Context, key string, data []byte) error - - // Delete removes a certificate data from the cache under the specified key. - // If there's no such key in the cache, Delete returns nil. - Delete(ctx context.Context, key string) error -} - -// DirCache implements Cache using a directory on the local filesystem. -// If the directory does not exist, it will be created with 0700 permissions. -type DirCache string - -// Get reads a certificate data from the specified file name. -func (d DirCache) Get(ctx context.Context, name string) ([]byte, error) { - name = filepath.Join(string(d), name) - var ( - data []byte - err error - done = make(chan struct{}) - ) - go func() { - data, err = ioutil.ReadFile(name) - close(done) - }() - select { - case <-ctx.Done(): - return nil, ctx.Err() - case <-done: - } - if os.IsNotExist(err) { - return nil, ErrCacheMiss - } - return data, err -} - -// Put writes the certificate data to the specified file name. -// The file will be created with 0600 permissions. -func (d DirCache) Put(ctx context.Context, name string, data []byte) error { - if err := os.MkdirAll(string(d), 0700); err != nil { - return err - } - - done := make(chan struct{}) - var err error - go func() { - defer close(done) - var tmp string - if tmp, err = d.writeTempFile(name, data); err != nil { - return - } - select { - case <-ctx.Done(): - // Don't overwrite the file if the context was canceled. - default: - newName := filepath.Join(string(d), name) - err = os.Rename(tmp, newName) - } - }() - select { - case <-ctx.Done(): - return ctx.Err() - case <-done: - } - return err -} - -// Delete removes the specified file name. -func (d DirCache) Delete(ctx context.Context, name string) error { - name = filepath.Join(string(d), name) - var ( - err error - done = make(chan struct{}) - ) - go func() { - err = os.Remove(name) - close(done) - }() - select { - case <-ctx.Done(): - return ctx.Err() - case <-done: - } - if err != nil && !os.IsNotExist(err) { - return err - } - return nil -} - -// writeTempFile writes b to a temporary file, closes the file and returns its path. -func (d DirCache) writeTempFile(prefix string, b []byte) (string, error) { - // TempFile uses 0600 permissions - f, err := ioutil.TempFile(string(d), prefix) - if err != nil { - return "", err - } - if _, err := f.Write(b); err != nil { - f.Close() - return "", err - } - return f.Name(), f.Close() -} diff --git a/vendor/golang.org/x/crypto/acme/autocert/cache_test.go b/vendor/golang.org/x/crypto/acme/autocert/cache_test.go deleted file mode 100644 index 653b05be..00000000 --- a/vendor/golang.org/x/crypto/acme/autocert/cache_test.go +++ /dev/null @@ -1,58 +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 autocert - -import ( - "context" - "io/ioutil" - "os" - "path/filepath" - "reflect" - "testing" -) - -// make sure DirCache satisfies Cache interface -var _ Cache = DirCache("/") - -func TestDirCache(t *testing.T) { - dir, err := ioutil.TempDir("", "autocert") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(dir) - dir = filepath.Join(dir, "certs") // a nonexistent dir - cache := DirCache(dir) - ctx := context.Background() - - // test cache miss - if _, err := cache.Get(ctx, "nonexistent"); err != ErrCacheMiss { - t.Errorf("get: %v; want ErrCacheMiss", err) - } - - // test put/get - b1 := []byte{1} - if err := cache.Put(ctx, "dummy", b1); err != nil { - t.Fatalf("put: %v", err) - } - b2, err := cache.Get(ctx, "dummy") - if err != nil { - t.Fatalf("get: %v", err) - } - if !reflect.DeepEqual(b1, b2) { - t.Errorf("b1 = %v; want %v", b1, b2) - } - name := filepath.Join(dir, "dummy") - if _, err := os.Stat(name); err != nil { - t.Error(err) - } - - // test delete - if err := cache.Delete(ctx, "dummy"); err != nil { - t.Fatalf("delete: %v", err) - } - if _, err := cache.Get(ctx, "dummy"); err != ErrCacheMiss { - t.Errorf("get: %v; want ErrCacheMiss", err) - } -} diff --git a/vendor/golang.org/x/crypto/acme/autocert/example_test.go b/vendor/golang.org/x/crypto/acme/autocert/example_test.go deleted file mode 100644 index 552a6254..00000000 --- a/vendor/golang.org/x/crypto/acme/autocert/example_test.go +++ /dev/null @@ -1,36 +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 autocert_test - -import ( - "crypto/tls" - "fmt" - "log" - "net/http" - - "golang.org/x/crypto/acme/autocert" -) - -func ExampleNewListener() { - mux := http.NewServeMux() - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, "Hello, TLS user! Your config: %+v", r.TLS) - }) - log.Fatal(http.Serve(autocert.NewListener("example.com"), mux)) -} - -func ExampleManager() { - m := &autocert.Manager{ - Cache: autocert.DirCache("secret-dir"), - Prompt: autocert.AcceptTOS, - HostPolicy: autocert.HostWhitelist("example.org"), - } - go http.ListenAndServe(":http", m.HTTPHandler(nil)) - s := &http.Server{ - Addr: ":https", - TLSConfig: &tls.Config{GetCertificate: m.GetCertificate}, - } - s.ListenAndServeTLS("", "") -} diff --git a/vendor/golang.org/x/crypto/acme/autocert/listener.go b/vendor/golang.org/x/crypto/acme/autocert/listener.go deleted file mode 100644 index d744df0e..00000000 --- a/vendor/golang.org/x/crypto/acme/autocert/listener.go +++ /dev/null @@ -1,160 +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 autocert - -import ( - "crypto/tls" - "log" - "net" - "os" - "path/filepath" - "runtime" - "time" -) - -// NewListener returns a net.Listener that listens on the standard TLS -// port (443) on all interfaces and returns *tls.Conn connections with -// LetsEncrypt certificates for the provided domain or domains. -// -// It enables one-line HTTPS servers: -// -// log.Fatal(http.Serve(autocert.NewListener("example.com"), handler)) -// -// NewListener is a convenience function for a common configuration. -// More complex or custom configurations can use the autocert.Manager -// type instead. -// -// Use of this function implies acceptance of the LetsEncrypt Terms of -// Service. If domains is not empty, the provided domains are passed -// to HostWhitelist. If domains is empty, the listener will do -// LetsEncrypt challenges for any requested domain, which is not -// recommended. -// -// Certificates are cached in a "golang-autocert" directory under an -// operating system-specific cache or temp directory. This may not -// be suitable for servers spanning multiple machines. -// -// The returned listener uses a *tls.Config that enables HTTP/2, and -// should only be used with servers that support HTTP/2. -// -// The returned Listener also enables TCP keep-alives on the accepted -// connections. The returned *tls.Conn are returned before their TLS -// handshake has completed. -func NewListener(domains ...string) net.Listener { - m := &Manager{ - Prompt: AcceptTOS, - } - if len(domains) > 0 { - m.HostPolicy = HostWhitelist(domains...) - } - dir := cacheDir() - if err := os.MkdirAll(dir, 0700); err != nil { - log.Printf("warning: autocert.NewListener not using a cache: %v", err) - } else { - m.Cache = DirCache(dir) - } - return m.Listener() -} - -// Listener listens on the standard TLS port (443) on all interfaces -// and returns a net.Listener returning *tls.Conn connections. -// -// The returned listener uses a *tls.Config that enables HTTP/2, and -// should only be used with servers that support HTTP/2. -// -// The returned Listener also enables TCP keep-alives on the accepted -// connections. The returned *tls.Conn are returned before their TLS -// handshake has completed. -// -// Unlike NewListener, it is the caller's responsibility to initialize -// the Manager m's Prompt, Cache, HostPolicy, and other desired options. -func (m *Manager) Listener() net.Listener { - ln := &listener{ - m: m, - conf: &tls.Config{ - GetCertificate: m.GetCertificate, // bonus: panic on nil m - NextProtos: []string{"h2", "http/1.1"}, // Enable HTTP/2 - }, - } - ln.tcpListener, ln.tcpListenErr = net.Listen("tcp", ":443") - return ln -} - -type listener struct { - m *Manager - conf *tls.Config - - tcpListener net.Listener - tcpListenErr error -} - -func (ln *listener) Accept() (net.Conn, error) { - if ln.tcpListenErr != nil { - return nil, ln.tcpListenErr - } - conn, err := ln.tcpListener.Accept() - if err != nil { - return nil, err - } - tcpConn := conn.(*net.TCPConn) - - // Because Listener is a convenience function, help out with - // this too. This is not possible for the caller to set once - // we return a *tcp.Conn wrapping an inaccessible net.Conn. - // If callers don't want this, they can do things the manual - // way and tweak as needed. But this is what net/http does - // itself, so copy that. If net/http changes, we can change - // here too. - tcpConn.SetKeepAlive(true) - tcpConn.SetKeepAlivePeriod(3 * time.Minute) - - return tls.Server(tcpConn, ln.conf), nil -} - -func (ln *listener) Addr() net.Addr { - if ln.tcpListener != nil { - return ln.tcpListener.Addr() - } - // net.Listen failed. Return something non-nil in case callers - // call Addr before Accept: - return &net.TCPAddr{IP: net.IP{0, 0, 0, 0}, Port: 443} -} - -func (ln *listener) Close() error { - if ln.tcpListenErr != nil { - return ln.tcpListenErr - } - return ln.tcpListener.Close() -} - -func homeDir() string { - if runtime.GOOS == "windows" { - return os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH") - } - if h := os.Getenv("HOME"); h != "" { - return h - } - return "/" -} - -func cacheDir() string { - const base = "golang-autocert" - switch runtime.GOOS { - case "darwin": - return filepath.Join(homeDir(), "Library", "Caches", base) - case "windows": - for _, ev := range []string{"APPDATA", "CSIDL_APPDATA", "TEMP", "TMP"} { - if v := os.Getenv(ev); v != "" { - return filepath.Join(v, base) - } - } - // Worst case: - return filepath.Join(homeDir(), base) - } - if xdg := os.Getenv("XDG_CACHE_HOME"); xdg != "" { - return filepath.Join(xdg, base) - } - return filepath.Join(homeDir(), ".cache", base) -} diff --git a/vendor/golang.org/x/crypto/acme/autocert/renewal.go b/vendor/golang.org/x/crypto/acme/autocert/renewal.go deleted file mode 100644 index 6c5da2bc..00000000 --- a/vendor/golang.org/x/crypto/acme/autocert/renewal.go +++ /dev/null @@ -1,124 +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 autocert - -import ( - "context" - "crypto" - "sync" - "time" -) - -// renewJitter is the maximum deviation from Manager.RenewBefore. -const renewJitter = time.Hour - -// domainRenewal tracks the state used by the periodic timers -// renewing a single domain's cert. -type domainRenewal struct { - m *Manager - domain string - key crypto.Signer - - timerMu sync.Mutex - timer *time.Timer -} - -// start starts a cert renewal timer at the time -// defined by the certificate expiration time exp. -// -// If the timer is already started, calling start is a noop. -func (dr *domainRenewal) start(exp time.Time) { - dr.timerMu.Lock() - defer dr.timerMu.Unlock() - if dr.timer != nil { - return - } - dr.timer = time.AfterFunc(dr.next(exp), dr.renew) -} - -// stop stops the cert renewal timer. -// If the timer is already stopped, calling stop is a noop. -func (dr *domainRenewal) stop() { - dr.timerMu.Lock() - defer dr.timerMu.Unlock() - if dr.timer == nil { - return - } - dr.timer.Stop() - dr.timer = nil -} - -// renew is called periodically by a timer. -// The first renew call is kicked off by dr.start. -func (dr *domainRenewal) renew() { - dr.timerMu.Lock() - defer dr.timerMu.Unlock() - if dr.timer == nil { - return - } - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) - defer cancel() - // TODO: rotate dr.key at some point? - next, err := dr.do(ctx) - if err != nil { - next = renewJitter / 2 - next += time.Duration(pseudoRand.int63n(int64(next))) - } - dr.timer = time.AfterFunc(next, dr.renew) - testDidRenewLoop(next, err) -} - -// do is similar to Manager.createCert but it doesn't lock a Manager.state item. -// Instead, it requests a new certificate independently and, upon success, -// replaces dr.m.state item with a new one and updates cache for the given domain. -// -// It may return immediately if the expiration date of the currently cached cert -// is far enough in the future. -// -// The returned value is a time interval after which the renewal should occur again. -func (dr *domainRenewal) do(ctx context.Context) (time.Duration, error) { - // a race is likely unavoidable in a distributed environment - // but we try nonetheless - if tlscert, err := dr.m.cacheGet(ctx, dr.domain); err == nil { - next := dr.next(tlscert.Leaf.NotAfter) - if next > dr.m.renewBefore()+renewJitter { - return next, nil - } - } - - der, leaf, err := dr.m.authorizedCert(ctx, dr.key, dr.domain) - if err != nil { - return 0, err - } - state := &certState{ - key: dr.key, - cert: der, - leaf: leaf, - } - tlscert, err := state.tlscert() - if err != nil { - return 0, err - } - dr.m.cachePut(ctx, dr.domain, tlscert) - dr.m.stateMu.Lock() - defer dr.m.stateMu.Unlock() - // m.state is guaranteed to be non-nil at this point - dr.m.state[dr.domain] = state - return dr.next(leaf.NotAfter), nil -} - -func (dr *domainRenewal) next(expiry time.Time) time.Duration { - d := expiry.Sub(timeNow()) - dr.m.renewBefore() - // add a bit of randomness to renew deadline - n := pseudoRand.int63n(int64(renewJitter)) - d -= time.Duration(n) - if d < 0 { - return 0 - } - return d -} - -var testDidRenewLoop = func(next time.Duration, err error) {} diff --git a/vendor/golang.org/x/crypto/acme/autocert/renewal_test.go b/vendor/golang.org/x/crypto/acme/autocert/renewal_test.go deleted file mode 100644 index 11d40ff5..00000000 --- a/vendor/golang.org/x/crypto/acme/autocert/renewal_test.go +++ /dev/null @@ -1,191 +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 autocert - -import ( - "context" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/tls" - "crypto/x509" - "encoding/base64" - "fmt" - "net/http" - "net/http/httptest" - "testing" - "time" - - "golang.org/x/crypto/acme" -) - -func TestRenewalNext(t *testing.T) { - now := time.Now() - timeNow = func() time.Time { return now } - defer func() { timeNow = time.Now }() - - man := &Manager{RenewBefore: 7 * 24 * time.Hour} - defer man.stopRenew() - tt := []struct { - expiry time.Time - min, max time.Duration - }{ - {now.Add(90 * 24 * time.Hour), 83*24*time.Hour - renewJitter, 83 * 24 * time.Hour}, - {now.Add(time.Hour), 0, 1}, - {now, 0, 1}, - {now.Add(-time.Hour), 0, 1}, - } - - dr := &domainRenewal{m: man} - for i, test := range tt { - next := dr.next(test.expiry) - if next < test.min || test.max < next { - t.Errorf("%d: next = %v; want between %v and %v", i, next, test.min, test.max) - } - } -} - -func TestRenewFromCache(t *testing.T) { - const domain = "example.org" - - // ACME CA server stub - var ca *httptest.Server - ca = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Replay-Nonce", "nonce") - if r.Method == "HEAD" { - // a nonce request - return - } - - switch r.URL.Path { - // discovery - case "/": - if err := discoTmpl.Execute(w, ca.URL); err != nil { - t.Fatalf("discoTmpl: %v", err) - } - // client key registration - case "/new-reg": - w.Write([]byte("{}")) - // domain authorization - case "/new-authz": - w.Header().Set("Location", ca.URL+"/authz/1") - w.WriteHeader(http.StatusCreated) - w.Write([]byte(`{"status": "valid"}`)) - // cert request - case "/new-cert": - var req struct { - CSR string `json:"csr"` - } - decodePayload(&req, r.Body) - b, _ := base64.RawURLEncoding.DecodeString(req.CSR) - csr, err := x509.ParseCertificateRequest(b) - if err != nil { - t.Fatalf("new-cert: CSR: %v", err) - } - der, err := dummyCert(csr.PublicKey, domain) - if err != nil { - t.Fatalf("new-cert: dummyCert: %v", err) - } - chainUp := fmt.Sprintf("<%s/ca-cert>; rel=up", ca.URL) - w.Header().Set("Link", chainUp) - w.WriteHeader(http.StatusCreated) - w.Write(der) - // CA chain cert - case "/ca-cert": - der, err := dummyCert(nil, "ca") - if err != nil { - t.Fatalf("ca-cert: dummyCert: %v", err) - } - w.Write(der) - default: - t.Errorf("unrecognized r.URL.Path: %s", r.URL.Path) - } - })) - defer ca.Close() - - // use EC key to run faster on 386 - key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - man := &Manager{ - Prompt: AcceptTOS, - Cache: newMemCache(), - RenewBefore: 24 * time.Hour, - Client: &acme.Client{ - Key: key, - DirectoryURL: ca.URL, - }, - } - defer man.stopRenew() - - // cache an almost expired cert - now := time.Now() - cert, err := dateDummyCert(key.Public(), now.Add(-2*time.Hour), now.Add(time.Minute), domain) - if err != nil { - t.Fatal(err) - } - tlscert := &tls.Certificate{PrivateKey: key, Certificate: [][]byte{cert}} - if err := man.cachePut(context.Background(), domain, tlscert); err != nil { - t.Fatal(err) - } - - // veriy the renewal happened - defer func() { - testDidRenewLoop = func(next time.Duration, err error) {} - }() - done := make(chan struct{}) - testDidRenewLoop = func(next time.Duration, err error) { - defer close(done) - if err != nil { - t.Errorf("testDidRenewLoop: %v", err) - } - // Next should be about 90 days: - // dummyCert creates 90days expiry + account for man.RenewBefore. - // Previous expiration was within 1 min. - future := 88 * 24 * time.Hour - if next < future { - t.Errorf("testDidRenewLoop: next = %v; want >= %v", next, future) - } - - // ensure the new cert is cached - after := time.Now().Add(future) - tlscert, err := man.cacheGet(context.Background(), domain) - if err != nil { - t.Fatalf("man.cacheGet: %v", err) - } - if !tlscert.Leaf.NotAfter.After(after) { - t.Errorf("cache leaf.NotAfter = %v; want > %v", tlscert.Leaf.NotAfter, after) - } - - // verify the old cert is also replaced in memory - man.stateMu.Lock() - defer man.stateMu.Unlock() - s := man.state[domain] - if s == nil { - t.Fatalf("m.state[%q] is nil", domain) - } - tlscert, err = s.tlscert() - if err != nil { - t.Fatalf("s.tlscert: %v", err) - } - if !tlscert.Leaf.NotAfter.After(after) { - t.Errorf("state leaf.NotAfter = %v; want > %v", tlscert.Leaf.NotAfter, after) - } - } - - // trigger renew - hello := &tls.ClientHelloInfo{ServerName: domain} - if _, err := man.GetCertificate(hello); err != nil { - t.Fatal(err) - } - - // wait for renew loop - select { - case <-time.After(10 * time.Second): - t.Fatal("renew took too long to occur") - case <-done: - } -} diff --git a/vendor/golang.org/x/crypto/acme/jws.go b/vendor/golang.org/x/crypto/acme/jws.go deleted file mode 100644 index 6cbca25d..00000000 --- a/vendor/golang.org/x/crypto/acme/jws.go +++ /dev/null @@ -1,153 +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 acme - -import ( - "crypto" - "crypto/ecdsa" - "crypto/rand" - "crypto/rsa" - "crypto/sha256" - _ "crypto/sha512" // need for EC keys - "encoding/base64" - "encoding/json" - "fmt" - "math/big" -) - -// jwsEncodeJSON signs claimset using provided key and a nonce. -// The result is serialized in JSON format. -// See https://tools.ietf.org/html/rfc7515#section-7. -func jwsEncodeJSON(claimset interface{}, key crypto.Signer, nonce string) ([]byte, error) { - jwk, err := jwkEncode(key.Public()) - if err != nil { - return nil, err - } - alg, sha := jwsHasher(key) - if alg == "" || !sha.Available() { - return nil, ErrUnsupportedKey - } - phead := fmt.Sprintf(`{"alg":%q,"jwk":%s,"nonce":%q}`, alg, jwk, nonce) - phead = base64.RawURLEncoding.EncodeToString([]byte(phead)) - cs, err := json.Marshal(claimset) - if err != nil { - return nil, err - } - payload := base64.RawURLEncoding.EncodeToString(cs) - hash := sha.New() - hash.Write([]byte(phead + "." + payload)) - sig, err := jwsSign(key, sha, hash.Sum(nil)) - if err != nil { - return nil, err - } - - enc := struct { - Protected string `json:"protected"` - Payload string `json:"payload"` - Sig string `json:"signature"` - }{ - Protected: phead, - Payload: payload, - Sig: base64.RawURLEncoding.EncodeToString(sig), - } - return json.Marshal(&enc) -} - -// jwkEncode encodes public part of an RSA or ECDSA key into a JWK. -// The result is also suitable for creating a JWK thumbprint. -// https://tools.ietf.org/html/rfc7517 -func jwkEncode(pub crypto.PublicKey) (string, error) { - switch pub := pub.(type) { - case *rsa.PublicKey: - // https://tools.ietf.org/html/rfc7518#section-6.3.1 - n := pub.N - e := big.NewInt(int64(pub.E)) - // Field order is important. - // See https://tools.ietf.org/html/rfc7638#section-3.3 for details. - return fmt.Sprintf(`{"e":"%s","kty":"RSA","n":"%s"}`, - base64.RawURLEncoding.EncodeToString(e.Bytes()), - base64.RawURLEncoding.EncodeToString(n.Bytes()), - ), nil - case *ecdsa.PublicKey: - // https://tools.ietf.org/html/rfc7518#section-6.2.1 - p := pub.Curve.Params() - n := p.BitSize / 8 - if p.BitSize%8 != 0 { - n++ - } - x := pub.X.Bytes() - if n > len(x) { - x = append(make([]byte, n-len(x)), x...) - } - y := pub.Y.Bytes() - if n > len(y) { - y = append(make([]byte, n-len(y)), y...) - } - // Field order is important. - // See https://tools.ietf.org/html/rfc7638#section-3.3 for details. - return fmt.Sprintf(`{"crv":"%s","kty":"EC","x":"%s","y":"%s"}`, - p.Name, - base64.RawURLEncoding.EncodeToString(x), - base64.RawURLEncoding.EncodeToString(y), - ), nil - } - return "", ErrUnsupportedKey -} - -// jwsSign signs the digest using the given key. -// It returns ErrUnsupportedKey if the key type is unknown. -// The hash is used only for RSA keys. -func jwsSign(key crypto.Signer, hash crypto.Hash, digest []byte) ([]byte, error) { - switch key := key.(type) { - case *rsa.PrivateKey: - return key.Sign(rand.Reader, digest, hash) - case *ecdsa.PrivateKey: - r, s, err := ecdsa.Sign(rand.Reader, key, digest) - if err != nil { - return nil, err - } - rb, sb := r.Bytes(), s.Bytes() - size := key.Params().BitSize / 8 - if size%8 > 0 { - size++ - } - sig := make([]byte, size*2) - copy(sig[size-len(rb):], rb) - copy(sig[size*2-len(sb):], sb) - return sig, nil - } - return nil, ErrUnsupportedKey -} - -// jwsHasher indicates suitable JWS algorithm name and a hash function -// to use for signing a digest with the provided key. -// It returns ("", 0) if the key is not supported. -func jwsHasher(key crypto.Signer) (string, crypto.Hash) { - switch key := key.(type) { - case *rsa.PrivateKey: - return "RS256", crypto.SHA256 - case *ecdsa.PrivateKey: - switch key.Params().Name { - case "P-256": - return "ES256", crypto.SHA256 - case "P-384": - return "ES384", crypto.SHA384 - case "P-521": - return "ES512", crypto.SHA512 - } - } - return "", 0 -} - -// JWKThumbprint creates a JWK thumbprint out of pub -// as specified in https://tools.ietf.org/html/rfc7638. -func JWKThumbprint(pub crypto.PublicKey) (string, error) { - jwk, err := jwkEncode(pub) - if err != nil { - return "", err - } - b := sha256.Sum256([]byte(jwk)) - return base64.RawURLEncoding.EncodeToString(b[:]), nil -} diff --git a/vendor/golang.org/x/crypto/acme/jws_test.go b/vendor/golang.org/x/crypto/acme/jws_test.go deleted file mode 100644 index 0ff0fb5a..00000000 --- a/vendor/golang.org/x/crypto/acme/jws_test.go +++ /dev/null @@ -1,319 +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 acme - -import ( - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rsa" - "crypto/x509" - "encoding/base64" - "encoding/json" - "encoding/pem" - "fmt" - "math/big" - "testing" -) - -const ( - testKeyPEM = ` ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEA4xgZ3eRPkwoRvy7qeRUbmMDe0V+xH9eWLdu0iheeLlrmD2mq -WXfP9IeSKApbn34g8TuAS9g5zhq8ELQ3kmjr+KV86GAMgI6VAcGlq3QrzpTCf/30 -Ab7+zawrfRaFONa1HwEzPY1KHnGVkxJc85gNkwYI9SY2RHXtvln3zs5wITNrdosq -EXeaIkVYBEhbhNu54pp3kxo6TuWLi9e6pXeWetEwmlBwtWZlPoib2j3TxLBksKZf -oyFyek380mHgJAumQ/I2fjj98/97mk3ihOY4AgVdCDj1z/GCoZkG5Rq7nbCGyosy -KWyDX00Zs+nNqVhoLeIvXC4nnWdJMZ6rogxyQQIDAQABAoIBACIEZTOI1Kao9nmV -9IeIsuaR1Y61b9neOF/MLmIVIZu+AAJFCMB4Iw11FV6sFodwpEyeZhx2WkpWVN+H -r19eGiLX3zsL0DOdqBJoSIHDWCCMxgnYJ6nvS0nRxX3qVrBp8R2g12Ub+gNPbmFm -ecf/eeERIVxfifd9VsyRu34eDEvcmKFuLYbElFcPh62xE3x12UZvV/sN7gXbawpP -G+w255vbE5MoaKdnnO83cTFlcHvhn24M/78qP7Te5OAeelr1R89kYxQLpuGe4fbS -zc6E3ym5Td6urDetGGrSY1Eu10/8sMusX+KNWkm+RsBRbkyKq72ks/qKpOxOa+c6 -9gm+Y8ECgYEA/iNUyg1ubRdH11p82l8KHtFC1DPE0V1gSZsX29TpM5jS4qv46K+s -8Ym1zmrORM8x+cynfPx1VQZQ34EYeCMIX212ryJ+zDATl4NE0I4muMvSiH9vx6Xc -7FmhNnaYzPsBL5Tm9nmtQuP09YEn8poiOJFiDs/4olnD5ogA5O4THGkCgYEA5MIL -qWYBUuqbEWLRtMruUtpASclrBqNNsJEsMGbeqBJmoMxdHeSZckbLOrqm7GlMyNRJ -Ne/5uWRGSzaMYuGmwsPpERzqEvYFnSrpjW5YtXZ+JtxFXNVfm9Z1gLLgvGpOUCIU -RbpoDckDe1vgUuk3y5+DjZihs+rqIJ45XzXTzBkCgYBWuf3segruJZy5rEKhTv+o -JqeUvRn0jNYYKFpLBeyTVBrbie6GkbUGNIWbrK05pC+c3K9nosvzuRUOQQL1tJbd -4gA3oiD9U4bMFNr+BRTHyZ7OQBcIXdz3t1qhuHVKtnngIAN1p25uPlbRFUNpshnt -jgeVoHlsBhApcs5DUc+pyQKBgDzeHPg/+g4z+nrPznjKnktRY1W+0El93kgi+J0Q -YiJacxBKEGTJ1MKBb8X6sDurcRDm22wMpGfd9I5Cv2v4GsUsF7HD/cx5xdih+G73 -c4clNj/k0Ff5Nm1izPUno4C+0IOl7br39IPmfpSuR6wH/h6iHQDqIeybjxyKvT1G -N0rRAoGBAKGD+4ZI/E1MoJ5CXB8cDDMHagbE3cq/DtmYzE2v1DFpQYu5I4PCm5c7 -EQeIP6dZtv8IMgtGIb91QX9pXvP0aznzQKwYIA8nZgoENCPfiMTPiEDT9e/0lObO -9XWsXpbSTsRPj0sv1rB+UzBJ0PgjK4q2zOF0sNo7b1+6nlM3BWPx ------END RSA PRIVATE KEY----- -` - - // This thumbprint is for the testKey defined above. - testKeyThumbprint = "6nicxzh6WETQlrvdchkz-U3e3DOQZ4heJKU63rfqMqQ" - - // openssl ecparam -name secp256k1 -genkey -noout - testKeyECPEM = ` ------BEGIN EC PRIVATE KEY----- -MHcCAQEEIK07hGLr0RwyUdYJ8wbIiBS55CjnkMD23DWr+ccnypWLoAoGCCqGSM49 -AwEHoUQDQgAE5lhEug5xK4xBDZ2nAbaxLtaLiv85bxJ7ePd1dkO23HThqIrvawF5 -QAaS/RNouybCiRhRjI3EaxLkQwgrCw0gqQ== ------END EC PRIVATE KEY----- -` - // openssl ecparam -name secp384r1 -genkey -noout - testKeyEC384PEM = ` ------BEGIN EC PRIVATE KEY----- -MIGkAgEBBDAQ4lNtXRORWr1bgKR1CGysr9AJ9SyEk4jiVnlUWWUChmSNL+i9SLSD -Oe/naPqXJ6CgBwYFK4EEACKhZANiAAQzKtj+Ms0vHoTX5dzv3/L5YMXOWuI5UKRj -JigpahYCqXD2BA1j0E/2xt5vlPf+gm0PL+UHSQsCokGnIGuaHCsJAp3ry0gHQEke -WYXapUUFdvaK1R2/2hn5O+eiQM8YzCg= ------END EC PRIVATE KEY----- -` - // openssl ecparam -name secp521r1 -genkey -noout - testKeyEC512PEM = ` ------BEGIN EC PRIVATE KEY----- -MIHcAgEBBEIBSNZKFcWzXzB/aJClAb305ibalKgtDA7+70eEkdPt28/3LZMM935Z -KqYHh/COcxuu3Kt8azRAUz3gyr4zZKhlKUSgBwYFK4EEACOhgYkDgYYABAHUNKbx -7JwC7H6pa2sV0tERWhHhB3JmW+OP6SUgMWryvIKajlx73eS24dy4QPGrWO9/ABsD -FqcRSkNVTXnIv6+0mAF25knqIBIg5Q8M9BnOu9GGAchcwt3O7RDHmqewnJJDrbjd -GGnm6rb+NnWR9DIopM0nKNkToWoF/hzopxu4Ae/GsQ== ------END EC PRIVATE KEY----- -` - // 1. openssl ec -in key.pem -noout -text - // 2. remove first byte, 04 (the header); the rest is X and Y - // 3. convert each with: echo | xxd -r -p | base64 -w 100 | tr -d '=' | tr '/+' '_-' - testKeyECPubX = "5lhEug5xK4xBDZ2nAbaxLtaLiv85bxJ7ePd1dkO23HQ" - testKeyECPubY = "4aiK72sBeUAGkv0TaLsmwokYUYyNxGsS5EMIKwsNIKk" - testKeyEC384PubX = "MyrY_jLNLx6E1-Xc79_y-WDFzlriOVCkYyYoKWoWAqlw9gQNY9BP9sbeb5T3_oJt" - testKeyEC384PubY = "Dy_lB0kLAqJBpyBrmhwrCQKd68tIB0BJHlmF2qVFBXb2itUdv9oZ-TvnokDPGMwo" - testKeyEC512PubX = "AdQ0pvHsnALsfqlraxXS0RFaEeEHcmZb44_pJSAxavK8gpqOXHvd5Lbh3LhA8atY738AGwMWpxFKQ1VNeci_r7SY" - testKeyEC512PubY = "AXbmSeogEiDlDwz0Gc670YYByFzC3c7tEMeap7CckkOtuN0Yaebqtv42dZH0MiikzSco2ROhagX-HOinG7gB78ax" - - // echo -n '{"crv":"P-256","kty":"EC","x":"","y":""}' | \ - // openssl dgst -binary -sha256 | base64 | tr -d '=' | tr '/+' '_-' - testKeyECThumbprint = "zedj-Bd1Zshp8KLePv2MB-lJ_Hagp7wAwdkA0NUTniU" -) - -var ( - testKey *rsa.PrivateKey - testKeyEC *ecdsa.PrivateKey - testKeyEC384 *ecdsa.PrivateKey - testKeyEC512 *ecdsa.PrivateKey -) - -func init() { - testKey = parseRSA(testKeyPEM, "testKeyPEM") - testKeyEC = parseEC(testKeyECPEM, "testKeyECPEM") - testKeyEC384 = parseEC(testKeyEC384PEM, "testKeyEC384PEM") - testKeyEC512 = parseEC(testKeyEC512PEM, "testKeyEC512PEM") -} - -func decodePEM(s, name string) []byte { - d, _ := pem.Decode([]byte(s)) - if d == nil { - panic("no block found in " + name) - } - return d.Bytes -} - -func parseRSA(s, name string) *rsa.PrivateKey { - b := decodePEM(s, name) - k, err := x509.ParsePKCS1PrivateKey(b) - if err != nil { - panic(fmt.Sprintf("%s: %v", name, err)) - } - return k -} - -func parseEC(s, name string) *ecdsa.PrivateKey { - b := decodePEM(s, name) - k, err := x509.ParseECPrivateKey(b) - if err != nil { - panic(fmt.Sprintf("%s: %v", name, err)) - } - return k -} - -func TestJWSEncodeJSON(t *testing.T) { - claims := struct{ Msg string }{"Hello JWS"} - // JWS signed with testKey and "nonce" as the nonce value - // JSON-serialized JWS fields are split for easier testing - const ( - // {"alg":"RS256","jwk":{"e":"AQAB","kty":"RSA","n":"..."},"nonce":"nonce"} - protected = "eyJhbGciOiJSUzI1NiIsImp3ayI6eyJlIjoiQVFBQiIsImt0eSI6" + - "IlJTQSIsIm4iOiI0eGdaM2VSUGt3b1J2eTdxZVJVYm1NRGUwVi14" + - "SDllV0xkdTBpaGVlTGxybUQybXFXWGZQOUllU0tBcGJuMzRnOFR1" + - "QVM5ZzV6aHE4RUxRM2ttanItS1Y4NkdBTWdJNlZBY0dscTNRcnpw" + - "VENmXzMwQWI3LXphd3JmUmFGT05hMUh3RXpQWTFLSG5HVmt4SmM4" + - "NWdOa3dZSTlTWTJSSFh0dmxuM3pzNXdJVE5yZG9zcUVYZWFJa1ZZ" + - "QkVoYmhOdTU0cHAza3hvNlR1V0xpOWU2cFhlV2V0RXdtbEJ3dFda" + - "bFBvaWIyajNUeExCa3NLWmZveUZ5ZWszODBtSGdKQXVtUV9JMmZq" + - "ajk4Xzk3bWszaWhPWTRBZ1ZkQ0RqMXpfR0NvWmtHNVJxN25iQ0d5" + - "b3N5S1d5RFgwMFpzLW5OcVZob0xlSXZYQzRubldkSk1aNnJvZ3h5" + - "UVEifSwibm9uY2UiOiJub25jZSJ9" - // {"Msg":"Hello JWS"} - payload = "eyJNc2ciOiJIZWxsbyBKV1MifQ" - signature = "eAGUikStX_UxyiFhxSLMyuyBcIB80GeBkFROCpap2sW3EmkU_ggF" + - "knaQzxrTfItICSAXsCLIquZ5BbrSWA_4vdEYrwWtdUj7NqFKjHRa" + - "zpLHcoR7r1rEHvkoP1xj49lS5fc3Wjjq8JUhffkhGbWZ8ZVkgPdC" + - "4tMBWiQDoth-x8jELP_3LYOB_ScUXi2mETBawLgOT2K8rA0Vbbmx" + - "hWNlOWuUf-8hL5YX4IOEwsS8JK_TrTq5Zc9My0zHJmaieqDV0UlP" + - "k0onFjPFkGm7MrPSgd0MqRG-4vSAg2O4hDo7rKv4n8POjjXlNQvM" + - "9IPLr8qZ7usYBKhEGwX3yq_eicAwBw" - ) - - b, err := jwsEncodeJSON(claims, testKey, "nonce") - if err != nil { - t.Fatal(err) - } - var jws struct{ Protected, Payload, Signature string } - if err := json.Unmarshal(b, &jws); err != nil { - t.Fatal(err) - } - if jws.Protected != protected { - t.Errorf("protected:\n%s\nwant:\n%s", jws.Protected, protected) - } - if jws.Payload != payload { - t.Errorf("payload:\n%s\nwant:\n%s", jws.Payload, payload) - } - if jws.Signature != signature { - t.Errorf("signature:\n%s\nwant:\n%s", jws.Signature, signature) - } -} - -func TestJWSEncodeJSONEC(t *testing.T) { - tt := []struct { - key *ecdsa.PrivateKey - x, y string - alg, crv string - }{ - {testKeyEC, testKeyECPubX, testKeyECPubY, "ES256", "P-256"}, - {testKeyEC384, testKeyEC384PubX, testKeyEC384PubY, "ES384", "P-384"}, - {testKeyEC512, testKeyEC512PubX, testKeyEC512PubY, "ES512", "P-521"}, - } - for i, test := range tt { - claims := struct{ Msg string }{"Hello JWS"} - b, err := jwsEncodeJSON(claims, test.key, "nonce") - if err != nil { - t.Errorf("%d: %v", i, err) - continue - } - var jws struct{ Protected, Payload, Signature string } - if err := json.Unmarshal(b, &jws); err != nil { - t.Errorf("%d: %v", i, err) - continue - } - - b, err = base64.RawURLEncoding.DecodeString(jws.Protected) - if err != nil { - t.Errorf("%d: jws.Protected: %v", i, err) - } - var head struct { - Alg string - Nonce string - JWK struct { - Crv string - Kty string - X string - Y string - } `json:"jwk"` - } - if err := json.Unmarshal(b, &head); err != nil { - t.Errorf("%d: jws.Protected: %v", i, err) - } - if head.Alg != test.alg { - t.Errorf("%d: head.Alg = %q; want %q", i, head.Alg, test.alg) - } - if head.Nonce != "nonce" { - t.Errorf("%d: head.Nonce = %q; want nonce", i, head.Nonce) - } - if head.JWK.Crv != test.crv { - t.Errorf("%d: head.JWK.Crv = %q; want %q", i, head.JWK.Crv, test.crv) - } - if head.JWK.Kty != "EC" { - t.Errorf("%d: head.JWK.Kty = %q; want EC", i, head.JWK.Kty) - } - if head.JWK.X != test.x { - t.Errorf("%d: head.JWK.X = %q; want %q", i, head.JWK.X, test.x) - } - if head.JWK.Y != test.y { - t.Errorf("%d: head.JWK.Y = %q; want %q", i, head.JWK.Y, test.y) - } - } -} - -func TestJWKThumbprintRSA(t *testing.T) { - // Key example from RFC 7638 - const base64N = "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAt" + - "VT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn6" + - "4tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FD" + - "W2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n9" + - "1CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINH" + - "aQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw" - const base64E = "AQAB" - const expected = "NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs" - - b, err := base64.RawURLEncoding.DecodeString(base64N) - if err != nil { - t.Fatalf("Error parsing example key N: %v", err) - } - n := new(big.Int).SetBytes(b) - - b, err = base64.RawURLEncoding.DecodeString(base64E) - if err != nil { - t.Fatalf("Error parsing example key E: %v", err) - } - e := new(big.Int).SetBytes(b) - - pub := &rsa.PublicKey{N: n, E: int(e.Uint64())} - th, err := JWKThumbprint(pub) - if err != nil { - t.Error(err) - } - if th != expected { - t.Errorf("thumbprint = %q; want %q", th, expected) - } -} - -func TestJWKThumbprintEC(t *testing.T) { - // Key example from RFC 7520 - // expected was computed with - // echo -n '{"crv":"P-521","kty":"EC","x":"","y":""}' | \ - // openssl dgst -binary -sha256 | \ - // base64 | \ - // tr -d '=' | tr '/+' '_-' - const ( - base64X = "AHKZLLOsCOzz5cY97ewNUajB957y-C-U88c3v13nmGZx6sYl_oJXu9A5RkT" + - "KqjqvjyekWF-7ytDyRXYgCF5cj0Kt" - base64Y = "AdymlHvOiLxXkEhayXQnNCvDX4h9htZaCJN34kfmC6pV5OhQHiraVySsUda" + - "QkAgDPrwQrJmbnX9cwlGfP-HqHZR1" - expected = "dHri3SADZkrush5HU_50AoRhcKFryN-PI6jPBtPL55M" - ) - - b, err := base64.RawURLEncoding.DecodeString(base64X) - if err != nil { - t.Fatalf("Error parsing example key X: %v", err) - } - x := new(big.Int).SetBytes(b) - - b, err = base64.RawURLEncoding.DecodeString(base64Y) - if err != nil { - t.Fatalf("Error parsing example key Y: %v", err) - } - y := new(big.Int).SetBytes(b) - - pub := &ecdsa.PublicKey{Curve: elliptic.P521(), X: x, Y: y} - th, err := JWKThumbprint(pub) - if err != nil { - t.Error(err) - } - if th != expected { - t.Errorf("thumbprint = %q; want %q", th, expected) - } -} - -func TestJWKThumbprintErrUnsupportedKey(t *testing.T) { - _, err := JWKThumbprint(struct{}{}) - if err != ErrUnsupportedKey { - t.Errorf("err = %q; want %q", err, ErrUnsupportedKey) - } -} diff --git a/vendor/golang.org/x/crypto/acme/types.go b/vendor/golang.org/x/crypto/acme/types.go deleted file mode 100644 index 3e199749..00000000 --- a/vendor/golang.org/x/crypto/acme/types.go +++ /dev/null @@ -1,329 +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 acme - -import ( - "crypto" - "crypto/x509" - "errors" - "fmt" - "net/http" - "strings" - "time" -) - -// ACME server response statuses used to describe Authorization and Challenge states. -const ( - StatusUnknown = "unknown" - StatusPending = "pending" - StatusProcessing = "processing" - StatusValid = "valid" - StatusInvalid = "invalid" - StatusRevoked = "revoked" -) - -// CRLReasonCode identifies the reason for a certificate revocation. -type CRLReasonCode int - -// CRL reason codes as defined in RFC 5280. -const ( - CRLReasonUnspecified CRLReasonCode = 0 - CRLReasonKeyCompromise CRLReasonCode = 1 - CRLReasonCACompromise CRLReasonCode = 2 - CRLReasonAffiliationChanged CRLReasonCode = 3 - CRLReasonSuperseded CRLReasonCode = 4 - CRLReasonCessationOfOperation CRLReasonCode = 5 - CRLReasonCertificateHold CRLReasonCode = 6 - CRLReasonRemoveFromCRL CRLReasonCode = 8 - CRLReasonPrivilegeWithdrawn CRLReasonCode = 9 - CRLReasonAACompromise CRLReasonCode = 10 -) - -// ErrUnsupportedKey is returned when an unsupported key type is encountered. -var ErrUnsupportedKey = errors.New("acme: unknown key type; only RSA and ECDSA are supported") - -// Error is an ACME error, defined in Problem Details for HTTP APIs doc -// http://tools.ietf.org/html/draft-ietf-appsawg-http-problem. -type Error struct { - // StatusCode is The HTTP status code generated by the origin server. - StatusCode int - // ProblemType is a URI reference that identifies the problem type, - // typically in a "urn:acme:error:xxx" form. - ProblemType string - // Detail is a human-readable explanation specific to this occurrence of the problem. - Detail string - // Header is the original server error response headers. - // It may be nil. - Header http.Header -} - -func (e *Error) Error() string { - return fmt.Sprintf("%d %s: %s", e.StatusCode, e.ProblemType, e.Detail) -} - -// AuthorizationError indicates that an authorization for an identifier -// did not succeed. -// It contains all errors from Challenge items of the failed Authorization. -type AuthorizationError struct { - // URI uniquely identifies the failed Authorization. - URI string - - // Identifier is an AuthzID.Value of the failed Authorization. - Identifier string - - // Errors is a collection of non-nil error values of Challenge items - // of the failed Authorization. - Errors []error -} - -func (a *AuthorizationError) Error() string { - e := make([]string, len(a.Errors)) - for i, err := range a.Errors { - e[i] = err.Error() - } - return fmt.Sprintf("acme: authorization error for %s: %s", a.Identifier, strings.Join(e, "; ")) -} - -// RateLimit reports whether err represents a rate limit error and -// any Retry-After duration returned by the server. -// -// See the following for more details on rate limiting: -// https://tools.ietf.org/html/draft-ietf-acme-acme-05#section-5.6 -func RateLimit(err error) (time.Duration, bool) { - e, ok := err.(*Error) - if !ok { - return 0, false - } - // Some CA implementations may return incorrect values. - // Use case-insensitive comparison. - if !strings.HasSuffix(strings.ToLower(e.ProblemType), ":ratelimited") { - return 0, false - } - if e.Header == nil { - return 0, true - } - return retryAfter(e.Header.Get("Retry-After"), 0), true -} - -// Account is a user account. It is associated with a private key. -type Account struct { - // URI is the account unique ID, which is also a URL used to retrieve - // account data from the CA. - URI string - - // Contact is a slice of contact info used during registration. - Contact []string - - // The terms user has agreed to. - // A value not matching CurrentTerms indicates that the user hasn't agreed - // to the actual Terms of Service of the CA. - AgreedTerms string - - // Actual terms of a CA. - CurrentTerms string - - // Authz is the authorization URL used to initiate a new authz flow. - Authz string - - // Authorizations is a URI from which a list of authorizations - // granted to this account can be fetched via a GET request. - Authorizations string - - // Certificates is a URI from which a list of certificates - // issued for this account can be fetched via a GET request. - Certificates string -} - -// Directory is ACME server discovery data. -type Directory struct { - // RegURL is an account endpoint URL, allowing for creating new - // and modifying existing accounts. - RegURL string - - // AuthzURL is used to initiate Identifier Authorization flow. - AuthzURL string - - // CertURL is a new certificate issuance endpoint URL. - CertURL string - - // RevokeURL is used to initiate a certificate revocation flow. - RevokeURL string - - // Term is a URI identifying the current terms of service. - Terms string - - // Website is an HTTP or HTTPS URL locating a website - // providing more information about the ACME server. - Website string - - // CAA consists of lowercase hostname elements, which the ACME server - // recognises as referring to itself for the purposes of CAA record validation - // as defined in RFC6844. - CAA []string -} - -// Challenge encodes a returned CA challenge. -// Its Error field may be non-nil if the challenge is part of an Authorization -// with StatusInvalid. -type Challenge struct { - // Type is the challenge type, e.g. "http-01", "tls-sni-02", "dns-01". - Type string - - // URI is where a challenge response can be posted to. - URI string - - // Token is a random value that uniquely identifies the challenge. - Token string - - // Status identifies the status of this challenge. - Status string - - // Error indicates the reason for an authorization failure - // when this challenge was used. - // The type of a non-nil value is *Error. - Error error -} - -// Authorization encodes an authorization response. -type Authorization struct { - // URI uniquely identifies a authorization. - URI string - - // Status identifies the status of an authorization. - Status string - - // Identifier is what the account is authorized to represent. - Identifier AuthzID - - // Challenges that the client needs to fulfill in order to prove possession - // of the identifier (for pending authorizations). - // For final authorizations, the challenges that were used. - Challenges []*Challenge - - // A collection of sets of challenges, each of which would be sufficient - // to prove possession of the identifier. - // Clients must complete a set of challenges that covers at least one set. - // Challenges are identified by their indices in the challenges array. - // If this field is empty, the client needs to complete all challenges. - Combinations [][]int -} - -// AuthzID is an identifier that an account is authorized to represent. -type AuthzID struct { - Type string // The type of identifier, e.g. "dns". - Value string // The identifier itself, e.g. "example.org". -} - -// wireAuthz is ACME JSON representation of Authorization objects. -type wireAuthz struct { - Status string - Challenges []wireChallenge - Combinations [][]int - Identifier struct { - Type string - Value string - } -} - -func (z *wireAuthz) authorization(uri string) *Authorization { - a := &Authorization{ - URI: uri, - Status: z.Status, - Identifier: AuthzID{Type: z.Identifier.Type, Value: z.Identifier.Value}, - Combinations: z.Combinations, // shallow copy - Challenges: make([]*Challenge, len(z.Challenges)), - } - for i, v := range z.Challenges { - a.Challenges[i] = v.challenge() - } - return a -} - -func (z *wireAuthz) error(uri string) *AuthorizationError { - err := &AuthorizationError{ - URI: uri, - Identifier: z.Identifier.Value, - } - for _, raw := range z.Challenges { - if raw.Error != nil { - err.Errors = append(err.Errors, raw.Error.error(nil)) - } - } - return err -} - -// wireChallenge is ACME JSON challenge representation. -type wireChallenge struct { - URI string `json:"uri"` - Type string - Token string - Status string - Error *wireError -} - -func (c *wireChallenge) challenge() *Challenge { - v := &Challenge{ - URI: c.URI, - Type: c.Type, - Token: c.Token, - Status: c.Status, - } - if v.Status == "" { - v.Status = StatusPending - } - if c.Error != nil { - v.Error = c.Error.error(nil) - } - return v -} - -// wireError is a subset of fields of the Problem Details object -// as described in https://tools.ietf.org/html/rfc7807#section-3.1. -type wireError struct { - Status int - Type string - Detail string -} - -func (e *wireError) error(h http.Header) *Error { - return &Error{ - StatusCode: e.Status, - ProblemType: e.Type, - Detail: e.Detail, - Header: h, - } -} - -// CertOption is an optional argument type for the TLSSNIxChallengeCert methods for -// customizing a temporary certificate for TLS-SNI challenges. -type CertOption interface { - privateCertOpt() -} - -// WithKey creates an option holding a private/public key pair. -// The private part signs a certificate, and the public part represents the signee. -func WithKey(key crypto.Signer) CertOption { - return &certOptKey{key} -} - -type certOptKey struct { - key crypto.Signer -} - -func (*certOptKey) privateCertOpt() {} - -// WithTemplate creates an option for specifying a certificate template. -// See x509.CreateCertificate for template usage details. -// -// In TLSSNIxChallengeCert methods, the template is also used as parent, -// resulting in a self-signed certificate. -// The DNSNames field of t is always overwritten for tls-sni challenge certs. -func WithTemplate(t *x509.Certificate) CertOption { - return (*certOptTemplate)(t) -} - -type certOptTemplate x509.Certificate - -func (*certOptTemplate) privateCertOpt() {} diff --git a/vendor/golang.org/x/crypto/acme/types_test.go b/vendor/golang.org/x/crypto/acme/types_test.go deleted file mode 100644 index a7553e6b..00000000 --- a/vendor/golang.org/x/crypto/acme/types_test.go +++ /dev/null @@ -1,63 +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 acme - -import ( - "errors" - "net/http" - "testing" - "time" -) - -func TestRateLimit(t *testing.T) { - now := time.Date(2017, 04, 27, 10, 0, 0, 0, time.UTC) - f := timeNow - defer func() { timeNow = f }() - timeNow = func() time.Time { return now } - - h120, hTime := http.Header{}, http.Header{} - h120.Set("Retry-After", "120") - hTime.Set("Retry-After", "Tue Apr 27 11:00:00 2017") - - err1 := &Error{ - ProblemType: "urn:ietf:params:acme:error:nolimit", - Header: h120, - } - err2 := &Error{ - ProblemType: "urn:ietf:params:acme:error:rateLimited", - Header: h120, - } - err3 := &Error{ - ProblemType: "urn:ietf:params:acme:error:rateLimited", - Header: nil, - } - err4 := &Error{ - ProblemType: "urn:ietf:params:acme:error:rateLimited", - Header: hTime, - } - - tt := []struct { - err error - res time.Duration - ok bool - }{ - {nil, 0, false}, - {errors.New("dummy"), 0, false}, - {err1, 0, false}, - {err2, 2 * time.Minute, true}, - {err3, 0, true}, - {err4, time.Hour, true}, - } - for i, test := range tt { - res, ok := RateLimit(test.err) - if ok != test.ok { - t.Errorf("%d: RateLimit(%+v): ok = %v; want %v", i, test.err, ok, test.ok) - continue - } - if res != test.res { - t.Errorf("%d: RateLimit(%+v) = %v; want %v", i, test.err, res, test.res) - } - } -} diff --git a/vendor/golang.org/x/crypto/argon2/argon2.go b/vendor/golang.org/x/crypto/argon2/argon2.go deleted file mode 100644 index 798f5cbd..00000000 --- a/vendor/golang.org/x/crypto/argon2/argon2.go +++ /dev/null @@ -1,283 +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 argon2 implements the key derivation function Argon2. -// Argon2 was selected as the winner of the Password Hashing Competition and can -// be used to derive cryptographic keys from passwords. -// -// For a detailed specification of Argon2 see [1]. -// -// If you aren't sure which function you need, use Argon2id (IDKey) and -// the parameter recommendations for your scenario. -// -// -// Argon2i -// -// Argon2i (implemented by Key) is the side-channel resistant version of Argon2. -// It uses data-independent memory access, which is preferred for password -// hashing and password-based key derivation. Argon2i requires more passes over -// memory than Argon2id to protect from trade-off attacks. The recommended -// parameters (taken from [2]) for non-interactive operations are time=3 and to -// use the maximum available memory. -// -// -// Argon2id -// -// Argon2id (implemented by IDKey) is a hybrid version of Argon2 combining -// Argon2i and Argon2d. It uses data-independent memory access for the first -// half of the first iteration over the memory and data-dependent memory access -// for the rest. Argon2id is side-channel resistant and provides better brute- -// force cost savings due to time-memory tradeoffs than Argon2i. The recommended -// parameters for non-interactive operations (taken from [2]) are time=1 and to -// use the maximum available memory. -// -// [1] https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf -// [2] https://tools.ietf.org/html/draft-irtf-cfrg-argon2-03#section-9.3 -package argon2 - -import ( - "encoding/binary" - "sync" - - "golang.org/x/crypto/blake2b" -) - -// The Argon2 version implemented by this package. -const Version = 0x13 - -const ( - argon2d = iota - argon2i - argon2id -) - -// Key derives a key from the password, salt, and cost parameters using Argon2i -// returning a byte slice of length keyLen that can be used as cryptographic -// key. The CPU cost and parallism degree must be greater than zero. -// -// For example, you can get a derived key for e.g. AES-256 (which needs a -// 32-byte key) by doing: `key := argon2.Key([]byte("some password"), salt, 3, -// 32*1024, 4, 32)` -// -// The draft RFC recommends[2] time=3, and memory=32*1024 is a sensible number. -// If using that amount of memory (32 MB) is not possible in some contexts then -// the time parameter can be increased to compensate. -// -// The time parameter specifies the number of passes over the memory and the -// memory parameter specifies the size of the memory in KiB. For example -// memory=32*1024 sets the memory cost to ~32 MB. The number of threads can be -// adjusted to the number of available CPUs. The cost parameters should be -// increased as memory latency and CPU parallelism increases. Remember to get a -// good random salt. -func Key(password, salt []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { - return deriveKey(argon2i, password, salt, nil, nil, time, memory, threads, keyLen) -} - -// IDKey derives a key from the password, salt, and cost parameters using -// Argon2id returning a byte slice of length keyLen that can be used as -// cryptographic key. The CPU cost and parallism degree must be greater than -// zero. -// -// For example, you can get a derived key for e.g. AES-256 (which needs a -// 32-byte key) by doing: `key := argon2.IDKey([]byte("some password"), salt, 1, -// 64*1024, 4, 32)` -// -// The draft RFC recommends[2] time=1, and memory=64*1024 is a sensible number. -// If using that amount of memory (64 MB) is not possible in some contexts then -// the time parameter can be increased to compensate. -// -// The time parameter specifies the number of passes over the memory and the -// memory parameter specifies the size of the memory in KiB. For example -// memory=64*1024 sets the memory cost to ~64 MB. The number of threads can be -// adjusted to the numbers of available CPUs. The cost parameters should be -// increased as memory latency and CPU parallelism increases. Remember to get a -// good random salt. -func IDKey(password, salt []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { - return deriveKey(argon2id, password, salt, nil, nil, time, memory, threads, keyLen) -} - -func deriveKey(mode int, password, salt, secret, data []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { - if time < 1 { - panic("argon2: number of rounds too small") - } - if threads < 1 { - panic("argon2: parallelism degree too low") - } - h0 := initHash(password, salt, secret, data, time, memory, uint32(threads), keyLen, mode) - - memory = memory / (syncPoints * uint32(threads)) * (syncPoints * uint32(threads)) - if memory < 2*syncPoints*uint32(threads) { - memory = 2 * syncPoints * uint32(threads) - } - B := initBlocks(&h0, memory, uint32(threads)) - processBlocks(B, time, memory, uint32(threads), mode) - return extractKey(B, memory, uint32(threads), keyLen) -} - -const ( - blockLength = 128 - syncPoints = 4 -) - -type block [blockLength]uint64 - -func initHash(password, salt, key, data []byte, time, memory, threads, keyLen uint32, mode int) [blake2b.Size + 8]byte { - var ( - h0 [blake2b.Size + 8]byte - params [24]byte - tmp [4]byte - ) - - b2, _ := blake2b.New512(nil) - binary.LittleEndian.PutUint32(params[0:4], threads) - binary.LittleEndian.PutUint32(params[4:8], keyLen) - binary.LittleEndian.PutUint32(params[8:12], memory) - binary.LittleEndian.PutUint32(params[12:16], time) - binary.LittleEndian.PutUint32(params[16:20], uint32(Version)) - binary.LittleEndian.PutUint32(params[20:24], uint32(mode)) - b2.Write(params[:]) - binary.LittleEndian.PutUint32(tmp[:], uint32(len(password))) - b2.Write(tmp[:]) - b2.Write(password) - binary.LittleEndian.PutUint32(tmp[:], uint32(len(salt))) - b2.Write(tmp[:]) - b2.Write(salt) - binary.LittleEndian.PutUint32(tmp[:], uint32(len(key))) - b2.Write(tmp[:]) - b2.Write(key) - binary.LittleEndian.PutUint32(tmp[:], uint32(len(data))) - b2.Write(tmp[:]) - b2.Write(data) - b2.Sum(h0[:0]) - return h0 -} - -func initBlocks(h0 *[blake2b.Size + 8]byte, memory, threads uint32) []block { - var block0 [1024]byte - B := make([]block, memory) - for lane := uint32(0); lane < threads; lane++ { - j := lane * (memory / threads) - binary.LittleEndian.PutUint32(h0[blake2b.Size+4:], lane) - - binary.LittleEndian.PutUint32(h0[blake2b.Size:], 0) - blake2bHash(block0[:], h0[:]) - for i := range B[j+0] { - B[j+0][i] = binary.LittleEndian.Uint64(block0[i*8:]) - } - - binary.LittleEndian.PutUint32(h0[blake2b.Size:], 1) - blake2bHash(block0[:], h0[:]) - for i := range B[j+1] { - B[j+1][i] = binary.LittleEndian.Uint64(block0[i*8:]) - } - } - return B -} - -func processBlocks(B []block, time, memory, threads uint32, mode int) { - lanes := memory / threads - segments := lanes / syncPoints - - processSegment := func(n, slice, lane uint32, wg *sync.WaitGroup) { - var addresses, in, zero block - if mode == argon2i || (mode == argon2id && n == 0 && slice < syncPoints/2) { - in[0] = uint64(n) - in[1] = uint64(lane) - in[2] = uint64(slice) - in[3] = uint64(memory) - in[4] = uint64(time) - in[5] = uint64(mode) - } - - index := uint32(0) - if n == 0 && slice == 0 { - index = 2 // we have already generated the first two blocks - if mode == argon2i || mode == argon2id { - in[6]++ - processBlock(&addresses, &in, &zero) - processBlock(&addresses, &addresses, &zero) - } - } - - offset := lane*lanes + slice*segments + index - var random uint64 - for index < segments { - prev := offset - 1 - if index == 0 && slice == 0 { - prev += lanes // last block in lane - } - if mode == argon2i || (mode == argon2id && n == 0 && slice < syncPoints/2) { - if index%blockLength == 0 { - in[6]++ - processBlock(&addresses, &in, &zero) - processBlock(&addresses, &addresses, &zero) - } - random = addresses[index%blockLength] - } else { - random = B[prev][0] - } - newOffset := indexAlpha(random, lanes, segments, threads, n, slice, lane, index) - processBlockXOR(&B[offset], &B[prev], &B[newOffset]) - index, offset = index+1, offset+1 - } - wg.Done() - } - - for n := uint32(0); n < time; n++ { - for slice := uint32(0); slice < syncPoints; slice++ { - var wg sync.WaitGroup - for lane := uint32(0); lane < threads; lane++ { - wg.Add(1) - go processSegment(n, slice, lane, &wg) - } - wg.Wait() - } - } - -} - -func extractKey(B []block, memory, threads, keyLen uint32) []byte { - lanes := memory / threads - for lane := uint32(0); lane < threads-1; lane++ { - for i, v := range B[(lane*lanes)+lanes-1] { - B[memory-1][i] ^= v - } - } - - var block [1024]byte - for i, v := range B[memory-1] { - binary.LittleEndian.PutUint64(block[i*8:], v) - } - key := make([]byte, keyLen) - blake2bHash(key, block[:]) - return key -} - -func indexAlpha(rand uint64, lanes, segments, threads, n, slice, lane, index uint32) uint32 { - refLane := uint32(rand>>32) % threads - if n == 0 && slice == 0 { - refLane = lane - } - m, s := 3*segments, ((slice+1)%syncPoints)*segments - if lane == refLane { - m += index - } - if n == 0 { - m, s = slice*segments, 0 - if slice == 0 || lane == refLane { - m += index - } - } - if index == 0 || lane == refLane { - m-- - } - return phi(rand, uint64(m), uint64(s), refLane, lanes) -} - -func phi(rand, m, s uint64, lane, lanes uint32) uint32 { - p := rand & 0xFFFFFFFF - p = (p * p) >> 32 - p = (p * m) >> 32 - return lane*lanes + uint32((s+m-(p+1))%uint64(lanes)) -} diff --git a/vendor/golang.org/x/crypto/argon2/argon2_test.go b/vendor/golang.org/x/crypto/argon2/argon2_test.go deleted file mode 100644 index 775b97a4..00000000 --- a/vendor/golang.org/x/crypto/argon2/argon2_test.go +++ /dev/null @@ -1,233 +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 argon2 - -import ( - "bytes" - "encoding/hex" - "testing" -) - -var ( - genKatPassword = []byte{ - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - } - genKatSalt = []byte{0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02} - genKatSecret = []byte{0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03} - genKatAAD = []byte{0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04} -) - -func TestArgon2(t *testing.T) { - defer func(sse4 bool) { useSSE4 = sse4 }(useSSE4) - - if useSSE4 { - t.Log("SSE4.1 version") - testArgon2i(t) - testArgon2d(t) - testArgon2id(t) - useSSE4 = false - } - t.Log("generic version") - testArgon2i(t) - testArgon2d(t) - testArgon2id(t) -} - -func testArgon2d(t *testing.T) { - want := []byte{ - 0x51, 0x2b, 0x39, 0x1b, 0x6f, 0x11, 0x62, 0x97, - 0x53, 0x71, 0xd3, 0x09, 0x19, 0x73, 0x42, 0x94, - 0xf8, 0x68, 0xe3, 0xbe, 0x39, 0x84, 0xf3, 0xc1, - 0xa1, 0x3a, 0x4d, 0xb9, 0xfa, 0xbe, 0x4a, 0xcb, - } - hash := deriveKey(argon2d, genKatPassword, genKatSalt, genKatSecret, genKatAAD, 3, 32, 4, 32) - if !bytes.Equal(hash, want) { - t.Errorf("derived key does not match - got: %s , want: %s", hex.EncodeToString(hash), hex.EncodeToString(want)) - } -} - -func testArgon2i(t *testing.T) { - want := []byte{ - 0xc8, 0x14, 0xd9, 0xd1, 0xdc, 0x7f, 0x37, 0xaa, - 0x13, 0xf0, 0xd7, 0x7f, 0x24, 0x94, 0xbd, 0xa1, - 0xc8, 0xde, 0x6b, 0x01, 0x6d, 0xd3, 0x88, 0xd2, - 0x99, 0x52, 0xa4, 0xc4, 0x67, 0x2b, 0x6c, 0xe8, - } - hash := deriveKey(argon2i, genKatPassword, genKatSalt, genKatSecret, genKatAAD, 3, 32, 4, 32) - if !bytes.Equal(hash, want) { - t.Errorf("derived key does not match - got: %s , want: %s", hex.EncodeToString(hash), hex.EncodeToString(want)) - } -} - -func testArgon2id(t *testing.T) { - want := []byte{ - 0x0d, 0x64, 0x0d, 0xf5, 0x8d, 0x78, 0x76, 0x6c, - 0x08, 0xc0, 0x37, 0xa3, 0x4a, 0x8b, 0x53, 0xc9, - 0xd0, 0x1e, 0xf0, 0x45, 0x2d, 0x75, 0xb6, 0x5e, - 0xb5, 0x25, 0x20, 0xe9, 0x6b, 0x01, 0xe6, 0x59, - } - hash := deriveKey(argon2id, genKatPassword, genKatSalt, genKatSecret, genKatAAD, 3, 32, 4, 32) - if !bytes.Equal(hash, want) { - t.Errorf("derived key does not match - got: %s , want: %s", hex.EncodeToString(hash), hex.EncodeToString(want)) - } -} - -func TestVectors(t *testing.T) { - password, salt := []byte("password"), []byte("somesalt") - for i, v := range testVectors { - want, err := hex.DecodeString(v.hash) - if err != nil { - t.Fatalf("Test %d: failed to decode hash: %v", i, err) - } - hash := deriveKey(v.mode, password, salt, nil, nil, v.time, v.memory, v.threads, uint32(len(want))) - if !bytes.Equal(hash, want) { - t.Errorf("Test %d - got: %s want: %s", i, hex.EncodeToString(hash), hex.EncodeToString(want)) - } - } -} - -func benchmarkArgon2(mode int, time, memory uint32, threads uint8, keyLen uint32, b *testing.B) { - password := []byte("password") - salt := []byte("choosing random salts is hard") - b.ReportAllocs() - for i := 0; i < b.N; i++ { - deriveKey(mode, password, salt, nil, nil, time, memory, threads, keyLen) - } -} - -func BenchmarkArgon2i(b *testing.B) { - b.Run(" Time: 3 Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2i, 3, 32*1024, 1, 32, b) }) - b.Run(" Time: 4 Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2i, 4, 32*1024, 1, 32, b) }) - b.Run(" Time: 5 Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2i, 5, 32*1024, 1, 32, b) }) - b.Run(" Time: 3 Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2i, 3, 64*1024, 4, 32, b) }) - b.Run(" Time: 4 Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2i, 4, 64*1024, 4, 32, b) }) - b.Run(" Time: 5 Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2i, 5, 64*1024, 4, 32, b) }) -} - -func BenchmarkArgon2d(b *testing.B) { - b.Run(" Time: 3, Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2d, 3, 32*1024, 1, 32, b) }) - b.Run(" Time: 4, Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2d, 4, 32*1024, 1, 32, b) }) - b.Run(" Time: 5, Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2d, 5, 32*1024, 1, 32, b) }) - b.Run(" Time: 3, Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2d, 3, 64*1024, 4, 32, b) }) - b.Run(" Time: 4, Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2d, 4, 64*1024, 4, 32, b) }) - b.Run(" Time: 5, Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2d, 5, 64*1024, 4, 32, b) }) -} - -func BenchmarkArgon2id(b *testing.B) { - b.Run(" Time: 3, Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2id, 3, 32*1024, 1, 32, b) }) - b.Run(" Time: 4, Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2id, 4, 32*1024, 1, 32, b) }) - b.Run(" Time: 5, Memory: 32 MB, Threads: 1", func(b *testing.B) { benchmarkArgon2(argon2id, 5, 32*1024, 1, 32, b) }) - b.Run(" Time: 3, Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2id, 3, 64*1024, 4, 32, b) }) - b.Run(" Time: 4, Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2id, 4, 64*1024, 4, 32, b) }) - b.Run(" Time: 5, Memory: 64 MB, Threads: 4", func(b *testing.B) { benchmarkArgon2(argon2id, 5, 64*1024, 4, 32, b) }) -} - -// Generated with the CLI of https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf -var testVectors = []struct { - mode int - time, memory uint32 - threads uint8 - hash string -}{ - { - mode: argon2i, time: 1, memory: 64, threads: 1, - hash: "b9c401d1844a67d50eae3967dc28870b22e508092e861a37", - }, - { - mode: argon2d, time: 1, memory: 64, threads: 1, - hash: "8727405fd07c32c78d64f547f24150d3f2e703a89f981a19", - }, - { - mode: argon2id, time: 1, memory: 64, threads: 1, - hash: "655ad15eac652dc59f7170a7332bf49b8469be1fdb9c28bb", - }, - { - mode: argon2i, time: 2, memory: 64, threads: 1, - hash: "8cf3d8f76a6617afe35fac48eb0b7433a9a670ca4a07ed64", - }, - { - mode: argon2d, time: 2, memory: 64, threads: 1, - hash: "3be9ec79a69b75d3752acb59a1fbb8b295a46529c48fbb75", - }, - { - mode: argon2id, time: 2, memory: 64, threads: 1, - hash: "068d62b26455936aa6ebe60060b0a65870dbfa3ddf8d41f7", - }, - { - mode: argon2i, time: 2, memory: 64, threads: 2, - hash: "2089f3e78a799720f80af806553128f29b132cafe40d059f", - }, - { - mode: argon2d, time: 2, memory: 64, threads: 2, - hash: "68e2462c98b8bc6bb60ec68db418ae2c9ed24fc6748a40e9", - }, - { - mode: argon2id, time: 2, memory: 64, threads: 2, - hash: "350ac37222f436ccb5c0972f1ebd3bf6b958bf2071841362", - }, - { - mode: argon2i, time: 3, memory: 256, threads: 2, - hash: "f5bbf5d4c3836af13193053155b73ec7476a6a2eb93fd5e6", - }, - { - mode: argon2d, time: 3, memory: 256, threads: 2, - hash: "f4f0669218eaf3641f39cc97efb915721102f4b128211ef2", - }, - { - mode: argon2id, time: 3, memory: 256, threads: 2, - hash: "4668d30ac4187e6878eedeacf0fd83c5a0a30db2cc16ef0b", - }, - { - mode: argon2i, time: 4, memory: 4096, threads: 4, - hash: "a11f7b7f3f93f02ad4bddb59ab62d121e278369288a0d0e7", - }, - { - mode: argon2d, time: 4, memory: 4096, threads: 4, - hash: "935598181aa8dc2b720914aa6435ac8d3e3a4210c5b0fb2d", - }, - { - mode: argon2id, time: 4, memory: 4096, threads: 4, - hash: "145db9733a9f4ee43edf33c509be96b934d505a4efb33c5a", - }, - { - mode: argon2i, time: 4, memory: 1024, threads: 8, - hash: "0cdd3956aa35e6b475a7b0c63488822f774f15b43f6e6e17", - }, - { - mode: argon2d, time: 4, memory: 1024, threads: 8, - hash: "83604fc2ad0589b9d055578f4d3cc55bc616df3578a896e9", - }, - { - mode: argon2id, time: 4, memory: 1024, threads: 8, - hash: "8dafa8e004f8ea96bf7c0f93eecf67a6047476143d15577f", - }, - { - mode: argon2i, time: 2, memory: 64, threads: 3, - hash: "5cab452fe6b8479c8661def8cd703b611a3905a6d5477fe6", - }, - { - mode: argon2d, time: 2, memory: 64, threads: 3, - hash: "22474a423bda2ccd36ec9afd5119e5c8949798cadf659f51", - }, - { - mode: argon2id, time: 2, memory: 64, threads: 3, - hash: "4a15b31aec7c2590b87d1f520be7d96f56658172deaa3079", - }, - { - mode: argon2i, time: 3, memory: 1024, threads: 6, - hash: "d236b29c2b2a09babee842b0dec6aa1e83ccbdea8023dced", - }, - { - mode: argon2d, time: 3, memory: 1024, threads: 6, - hash: "a3351b0319a53229152023d9206902f4ef59661cdca89481", - }, - { - mode: argon2id, time: 3, memory: 1024, threads: 6, - hash: "1640b932f4b60e272f5d2207b9a9c626ffa1bd88d2349016", - }, -} diff --git a/vendor/golang.org/x/crypto/argon2/blake2b.go b/vendor/golang.org/x/crypto/argon2/blake2b.go deleted file mode 100644 index 10f46948..00000000 --- a/vendor/golang.org/x/crypto/argon2/blake2b.go +++ /dev/null @@ -1,53 +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 argon2 - -import ( - "encoding/binary" - "hash" - - "golang.org/x/crypto/blake2b" -) - -// blake2bHash computes an arbitrary long hash value of in -// and writes the hash to out. -func blake2bHash(out []byte, in []byte) { - var b2 hash.Hash - if n := len(out); n < blake2b.Size { - b2, _ = blake2b.New(n, nil) - } else { - b2, _ = blake2b.New512(nil) - } - - var buffer [blake2b.Size]byte - binary.LittleEndian.PutUint32(buffer[:4], uint32(len(out))) - b2.Write(buffer[:4]) - b2.Write(in) - - if len(out) <= blake2b.Size { - b2.Sum(out[:0]) - return - } - - outLen := len(out) - b2.Sum(buffer[:0]) - b2.Reset() - copy(out, buffer[:32]) - out = out[32:] - for len(out) > blake2b.Size { - b2.Write(buffer[:]) - b2.Sum(buffer[:0]) - copy(out, buffer[:32]) - out = out[32:] - b2.Reset() - } - - if outLen%blake2b.Size > 0 { // outLen > 64 - r := ((outLen + 31) / 32) - 2 // ⌈τ /32⌉-2 - b2, _ = blake2b.New(outLen-32*r, nil) - } - b2.Write(buffer[:]) - b2.Sum(out[:0]) -} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.go b/vendor/golang.org/x/crypto/argon2/blamka_amd64.go deleted file mode 100644 index bb2b0d8b..00000000 --- a/vendor/golang.org/x/crypto/argon2/blamka_amd64.go +++ /dev/null @@ -1,61 +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. - -// +build amd64,!gccgo,!appengine - -package argon2 - -func init() { - useSSE4 = supportsSSE4() -} - -//go:noescape -func supportsSSE4() bool - -//go:noescape -func mixBlocksSSE2(out, a, b, c *block) - -//go:noescape -func xorBlocksSSE2(out, a, b, c *block) - -//go:noescape -func blamkaSSE4(b *block) - -func processBlockSSE(out, in1, in2 *block, xor bool) { - var t block - mixBlocksSSE2(&t, in1, in2, &t) - if useSSE4 { - blamkaSSE4(&t) - } else { - for i := 0; i < blockLength; i += 16 { - blamkaGeneric( - &t[i+0], &t[i+1], &t[i+2], &t[i+3], - &t[i+4], &t[i+5], &t[i+6], &t[i+7], - &t[i+8], &t[i+9], &t[i+10], &t[i+11], - &t[i+12], &t[i+13], &t[i+14], &t[i+15], - ) - } - for i := 0; i < blockLength/8; i += 2 { - blamkaGeneric( - &t[i], &t[i+1], &t[16+i], &t[16+i+1], - &t[32+i], &t[32+i+1], &t[48+i], &t[48+i+1], - &t[64+i], &t[64+i+1], &t[80+i], &t[80+i+1], - &t[96+i], &t[96+i+1], &t[112+i], &t[112+i+1], - ) - } - } - if xor { - xorBlocksSSE2(out, in1, in2, &t) - } else { - mixBlocksSSE2(out, in1, in2, &t) - } -} - -func processBlock(out, in1, in2 *block) { - processBlockSSE(out, in1, in2, false) -} - -func processBlockXOR(out, in1, in2 *block) { - processBlockSSE(out, in1, in2, true) -} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.s b/vendor/golang.org/x/crypto/argon2/blamka_amd64.s deleted file mode 100644 index 8a83f7c7..00000000 --- a/vendor/golang.org/x/crypto/argon2/blamka_amd64.s +++ /dev/null @@ -1,252 +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. - -// +build amd64,!gccgo,!appengine - -#include "textflag.h" - -DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 - -#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v6, t1; \ - PUNPCKLQDQ v6, t2; \ - PUNPCKHQDQ v7, v6; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ v7, t2; \ - MOVO t1, v7; \ - MOVO v2, t1; \ - PUNPCKHQDQ t2, v7; \ - PUNPCKLQDQ v3, t2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v3 - -#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v2, t1; \ - PUNPCKLQDQ v2, t2; \ - PUNPCKHQDQ v3, v2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ v3, t2; \ - MOVO t1, v3; \ - MOVO v6, t1; \ - PUNPCKHQDQ t2, v3; \ - PUNPCKLQDQ v7, t2; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v7 - -#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, t0, c40, c48) \ - MOVO v0, t0; \ - PMULULQ v2, t0; \ - PADDQ v2, v0; \ - PADDQ t0, v0; \ - PADDQ t0, v0; \ - PXOR v0, v6; \ - PSHUFD $0xB1, v6, v6; \ - MOVO v4, t0; \ - PMULULQ v6, t0; \ - PADDQ v6, v4; \ - PADDQ t0, v4; \ - PADDQ t0, v4; \ - PXOR v4, v2; \ - PSHUFB c40, v2; \ - MOVO v0, t0; \ - PMULULQ v2, t0; \ - PADDQ v2, v0; \ - PADDQ t0, v0; \ - PADDQ t0, v0; \ - PXOR v0, v6; \ - PSHUFB c48, v6; \ - MOVO v4, t0; \ - PMULULQ v6, t0; \ - PADDQ v6, v4; \ - PADDQ t0, v4; \ - PADDQ t0, v4; \ - PXOR v4, v2; \ - MOVO v2, t0; \ - PADDQ v2, t0; \ - PSRLQ $63, v2; \ - PXOR t0, v2; \ - MOVO v1, t0; \ - PMULULQ v3, t0; \ - PADDQ v3, v1; \ - PADDQ t0, v1; \ - PADDQ t0, v1; \ - PXOR v1, v7; \ - PSHUFD $0xB1, v7, v7; \ - MOVO v5, t0; \ - PMULULQ v7, t0; \ - PADDQ v7, v5; \ - PADDQ t0, v5; \ - PADDQ t0, v5; \ - PXOR v5, v3; \ - PSHUFB c40, v3; \ - MOVO v1, t0; \ - PMULULQ v3, t0; \ - PADDQ v3, v1; \ - PADDQ t0, v1; \ - PADDQ t0, v1; \ - PXOR v1, v7; \ - PSHUFB c48, v7; \ - MOVO v5, t0; \ - PMULULQ v7, t0; \ - PADDQ v7, v5; \ - PADDQ t0, v5; \ - PADDQ t0, v5; \ - PXOR v5, v3; \ - MOVO v3, t0; \ - PADDQ v3, t0; \ - PSRLQ $63, v3; \ - PXOR t0, v3 - -#define LOAD_MSG_0(block, off) \ - MOVOU 8*(off+0)(block), X0; \ - MOVOU 8*(off+2)(block), X1; \ - MOVOU 8*(off+4)(block), X2; \ - MOVOU 8*(off+6)(block), X3; \ - MOVOU 8*(off+8)(block), X4; \ - MOVOU 8*(off+10)(block), X5; \ - MOVOU 8*(off+12)(block), X6; \ - MOVOU 8*(off+14)(block), X7 - -#define STORE_MSG_0(block, off) \ - MOVOU X0, 8*(off+0)(block); \ - MOVOU X1, 8*(off+2)(block); \ - MOVOU X2, 8*(off+4)(block); \ - MOVOU X3, 8*(off+6)(block); \ - MOVOU X4, 8*(off+8)(block); \ - MOVOU X5, 8*(off+10)(block); \ - MOVOU X6, 8*(off+12)(block); \ - MOVOU X7, 8*(off+14)(block) - -#define LOAD_MSG_1(block, off) \ - MOVOU 8*off+0*8(block), X0; \ - MOVOU 8*off+16*8(block), X1; \ - MOVOU 8*off+32*8(block), X2; \ - MOVOU 8*off+48*8(block), X3; \ - MOVOU 8*off+64*8(block), X4; \ - MOVOU 8*off+80*8(block), X5; \ - MOVOU 8*off+96*8(block), X6; \ - MOVOU 8*off+112*8(block), X7 - -#define STORE_MSG_1(block, off) \ - MOVOU X0, 8*off+0*8(block); \ - MOVOU X1, 8*off+16*8(block); \ - MOVOU X2, 8*off+32*8(block); \ - MOVOU X3, 8*off+48*8(block); \ - MOVOU X4, 8*off+64*8(block); \ - MOVOU X5, 8*off+80*8(block); \ - MOVOU X6, 8*off+96*8(block); \ - MOVOU X7, 8*off+112*8(block) - -#define BLAMKA_ROUND_0(block, off, t0, t1, c40, c48) \ - LOAD_MSG_0(block, off); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ - STORE_MSG_0(block, off) - -#define BLAMKA_ROUND_1(block, off, t0, t1, c40, c48) \ - LOAD_MSG_1(block, off); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ - STORE_MSG_1(block, off) - -// func blamkaSSE4(b *block) -TEXT ·blamkaSSE4(SB), 4, $0-8 - MOVQ b+0(FP), AX - - MOVOU ·c40<>(SB), X10 - MOVOU ·c48<>(SB), X11 - - BLAMKA_ROUND_0(AX, 0, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 16, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 32, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 48, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 64, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 80, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 96, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 112, X8, X9, X10, X11) - - BLAMKA_ROUND_1(AX, 0, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 2, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 4, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 6, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 8, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 10, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 12, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 14, X8, X9, X10, X11) - RET - -// func mixBlocksSSE2(out, a, b, c *block) -TEXT ·mixBlocksSSE2(SB), 4, $0-32 - MOVQ out+0(FP), DX - MOVQ a+8(FP), AX - MOVQ b+16(FP), BX - MOVQ a+24(FP), CX - MOVQ $128, BP - -loop: - MOVOU 0(AX), X0 - MOVOU 0(BX), X1 - MOVOU 0(CX), X2 - PXOR X1, X0 - PXOR X2, X0 - MOVOU X0, 0(DX) - ADDQ $16, AX - ADDQ $16, BX - ADDQ $16, CX - ADDQ $16, DX - SUBQ $2, BP - JA loop - RET - -// func xorBlocksSSE2(out, a, b, c *block) -TEXT ·xorBlocksSSE2(SB), 4, $0-32 - MOVQ out+0(FP), DX - MOVQ a+8(FP), AX - MOVQ b+16(FP), BX - MOVQ a+24(FP), CX - MOVQ $128, BP - -loop: - MOVOU 0(AX), X0 - MOVOU 0(BX), X1 - MOVOU 0(CX), X2 - MOVOU 0(DX), X3 - PXOR X1, X0 - PXOR X2, X0 - PXOR X3, X0 - MOVOU X0, 0(DX) - ADDQ $16, AX - ADDQ $16, BX - ADDQ $16, CX - ADDQ $16, DX - SUBQ $2, BP - JA loop - RET - -// func supportsSSE4() bool -TEXT ·supportsSSE4(SB), 4, $0-1 - MOVL $1, AX - CPUID - SHRL $19, CX // Bit 19 indicates SSE4 support - ANDL $1, CX // CX != 0 if support SSE4 - MOVB CX, ret+0(FP) - RET diff --git a/vendor/golang.org/x/crypto/argon2/blamka_generic.go b/vendor/golang.org/x/crypto/argon2/blamka_generic.go deleted file mode 100644 index a481b224..00000000 --- a/vendor/golang.org/x/crypto/argon2/blamka_generic.go +++ /dev/null @@ -1,163 +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 argon2 - -var useSSE4 bool - -func processBlockGeneric(out, in1, in2 *block, xor bool) { - var t block - for i := range t { - t[i] = in1[i] ^ in2[i] - } - for i := 0; i < blockLength; i += 16 { - blamkaGeneric( - &t[i+0], &t[i+1], &t[i+2], &t[i+3], - &t[i+4], &t[i+5], &t[i+6], &t[i+7], - &t[i+8], &t[i+9], &t[i+10], &t[i+11], - &t[i+12], &t[i+13], &t[i+14], &t[i+15], - ) - } - for i := 0; i < blockLength/8; i += 2 { - blamkaGeneric( - &t[i], &t[i+1], &t[16+i], &t[16+i+1], - &t[32+i], &t[32+i+1], &t[48+i], &t[48+i+1], - &t[64+i], &t[64+i+1], &t[80+i], &t[80+i+1], - &t[96+i], &t[96+i+1], &t[112+i], &t[112+i+1], - ) - } - if xor { - for i := range t { - out[i] ^= in1[i] ^ in2[i] ^ t[i] - } - } else { - for i := range t { - out[i] = in1[i] ^ in2[i] ^ t[i] - } - } -} - -func blamkaGeneric(t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t12, t13, t14, t15 *uint64) { - v00, v01, v02, v03 := *t00, *t01, *t02, *t03 - v04, v05, v06, v07 := *t04, *t05, *t06, *t07 - v08, v09, v10, v11 := *t08, *t09, *t10, *t11 - v12, v13, v14, v15 := *t12, *t13, *t14, *t15 - - v00 += v04 + 2*uint64(uint32(v00))*uint64(uint32(v04)) - v12 ^= v00 - v12 = v12>>32 | v12<<32 - v08 += v12 + 2*uint64(uint32(v08))*uint64(uint32(v12)) - v04 ^= v08 - v04 = v04>>24 | v04<<40 - - v00 += v04 + 2*uint64(uint32(v00))*uint64(uint32(v04)) - v12 ^= v00 - v12 = v12>>16 | v12<<48 - v08 += v12 + 2*uint64(uint32(v08))*uint64(uint32(v12)) - v04 ^= v08 - v04 = v04>>63 | v04<<1 - - v01 += v05 + 2*uint64(uint32(v01))*uint64(uint32(v05)) - v13 ^= v01 - v13 = v13>>32 | v13<<32 - v09 += v13 + 2*uint64(uint32(v09))*uint64(uint32(v13)) - v05 ^= v09 - v05 = v05>>24 | v05<<40 - - v01 += v05 + 2*uint64(uint32(v01))*uint64(uint32(v05)) - v13 ^= v01 - v13 = v13>>16 | v13<<48 - v09 += v13 + 2*uint64(uint32(v09))*uint64(uint32(v13)) - v05 ^= v09 - v05 = v05>>63 | v05<<1 - - v02 += v06 + 2*uint64(uint32(v02))*uint64(uint32(v06)) - v14 ^= v02 - v14 = v14>>32 | v14<<32 - v10 += v14 + 2*uint64(uint32(v10))*uint64(uint32(v14)) - v06 ^= v10 - v06 = v06>>24 | v06<<40 - - v02 += v06 + 2*uint64(uint32(v02))*uint64(uint32(v06)) - v14 ^= v02 - v14 = v14>>16 | v14<<48 - v10 += v14 + 2*uint64(uint32(v10))*uint64(uint32(v14)) - v06 ^= v10 - v06 = v06>>63 | v06<<1 - - v03 += v07 + 2*uint64(uint32(v03))*uint64(uint32(v07)) - v15 ^= v03 - v15 = v15>>32 | v15<<32 - v11 += v15 + 2*uint64(uint32(v11))*uint64(uint32(v15)) - v07 ^= v11 - v07 = v07>>24 | v07<<40 - - v03 += v07 + 2*uint64(uint32(v03))*uint64(uint32(v07)) - v15 ^= v03 - v15 = v15>>16 | v15<<48 - v11 += v15 + 2*uint64(uint32(v11))*uint64(uint32(v15)) - v07 ^= v11 - v07 = v07>>63 | v07<<1 - - v00 += v05 + 2*uint64(uint32(v00))*uint64(uint32(v05)) - v15 ^= v00 - v15 = v15>>32 | v15<<32 - v10 += v15 + 2*uint64(uint32(v10))*uint64(uint32(v15)) - v05 ^= v10 - v05 = v05>>24 | v05<<40 - - v00 += v05 + 2*uint64(uint32(v00))*uint64(uint32(v05)) - v15 ^= v00 - v15 = v15>>16 | v15<<48 - v10 += v15 + 2*uint64(uint32(v10))*uint64(uint32(v15)) - v05 ^= v10 - v05 = v05>>63 | v05<<1 - - v01 += v06 + 2*uint64(uint32(v01))*uint64(uint32(v06)) - v12 ^= v01 - v12 = v12>>32 | v12<<32 - v11 += v12 + 2*uint64(uint32(v11))*uint64(uint32(v12)) - v06 ^= v11 - v06 = v06>>24 | v06<<40 - - v01 += v06 + 2*uint64(uint32(v01))*uint64(uint32(v06)) - v12 ^= v01 - v12 = v12>>16 | v12<<48 - v11 += v12 + 2*uint64(uint32(v11))*uint64(uint32(v12)) - v06 ^= v11 - v06 = v06>>63 | v06<<1 - - v02 += v07 + 2*uint64(uint32(v02))*uint64(uint32(v07)) - v13 ^= v02 - v13 = v13>>32 | v13<<32 - v08 += v13 + 2*uint64(uint32(v08))*uint64(uint32(v13)) - v07 ^= v08 - v07 = v07>>24 | v07<<40 - - v02 += v07 + 2*uint64(uint32(v02))*uint64(uint32(v07)) - v13 ^= v02 - v13 = v13>>16 | v13<<48 - v08 += v13 + 2*uint64(uint32(v08))*uint64(uint32(v13)) - v07 ^= v08 - v07 = v07>>63 | v07<<1 - - v03 += v04 + 2*uint64(uint32(v03))*uint64(uint32(v04)) - v14 ^= v03 - v14 = v14>>32 | v14<<32 - v09 += v14 + 2*uint64(uint32(v09))*uint64(uint32(v14)) - v04 ^= v09 - v04 = v04>>24 | v04<<40 - - v03 += v04 + 2*uint64(uint32(v03))*uint64(uint32(v04)) - v14 ^= v03 - v14 = v14>>16 | v14<<48 - v09 += v14 + 2*uint64(uint32(v09))*uint64(uint32(v14)) - v04 ^= v09 - v04 = v04>>63 | v04<<1 - - *t00, *t01, *t02, *t03 = v00, v01, v02, v03 - *t04, *t05, *t06, *t07 = v04, v05, v06, v07 - *t08, *t09, *t10, *t11 = v08, v09, v10, v11 - *t12, *t13, *t14, *t15 = v12, v13, v14, v15 -} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_ref.go b/vendor/golang.org/x/crypto/argon2/blamka_ref.go deleted file mode 100644 index baf7b551..00000000 --- a/vendor/golang.org/x/crypto/argon2/blamka_ref.go +++ /dev/null @@ -1,15 +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. - -// +build !amd64 appengine gccgo - -package argon2 - -func processBlock(out, in1, in2 *block) { - processBlockGeneric(out, in1, in2, false) -} - -func processBlockXOR(out, in1, in2 *block) { - processBlockGeneric(out, in1, in2, true) -} diff --git a/vendor/golang.org/x/crypto/bcrypt/base64.go b/vendor/golang.org/x/crypto/bcrypt/base64.go deleted file mode 100644 index fc311609..00000000 --- a/vendor/golang.org/x/crypto/bcrypt/base64.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bcrypt - -import "encoding/base64" - -const alphabet = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" - -var bcEncoding = base64.NewEncoding(alphabet) - -func base64Encode(src []byte) []byte { - n := bcEncoding.EncodedLen(len(src)) - dst := make([]byte, n) - bcEncoding.Encode(dst, src) - for dst[n-1] == '=' { - n-- - } - return dst[:n] -} - -func base64Decode(src []byte) ([]byte, error) { - numOfEquals := 4 - (len(src) % 4) - for i := 0; i < numOfEquals; i++ { - src = append(src, '=') - } - - dst := make([]byte, bcEncoding.DecodedLen(len(src))) - n, err := bcEncoding.Decode(dst, src) - if err != nil { - return nil, err - } - return dst[:n], nil -} diff --git a/vendor/golang.org/x/crypto/bcrypt/bcrypt.go b/vendor/golang.org/x/crypto/bcrypt/bcrypt.go deleted file mode 100644 index aeb73f81..00000000 --- a/vendor/golang.org/x/crypto/bcrypt/bcrypt.go +++ /dev/null @@ -1,295 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package bcrypt implements Provos and Mazières's bcrypt adaptive hashing -// algorithm. See http://www.usenix.org/event/usenix99/provos/provos.pdf -package bcrypt // import "golang.org/x/crypto/bcrypt" - -// The code is a port of Provos and Mazières's C implementation. -import ( - "crypto/rand" - "crypto/subtle" - "errors" - "fmt" - "io" - "strconv" - - "golang.org/x/crypto/blowfish" -) - -const ( - MinCost int = 4 // the minimum allowable cost as passed in to GenerateFromPassword - MaxCost int = 31 // the maximum allowable cost as passed in to GenerateFromPassword - DefaultCost int = 10 // the cost that will actually be set if a cost below MinCost is passed into GenerateFromPassword -) - -// The error returned from CompareHashAndPassword when a password and hash do -// not match. -var ErrMismatchedHashAndPassword = errors.New("crypto/bcrypt: hashedPassword is not the hash of the given password") - -// The error returned from CompareHashAndPassword when a hash is too short to -// be a bcrypt hash. -var ErrHashTooShort = errors.New("crypto/bcrypt: hashedSecret too short to be a bcrypted password") - -// The error returned from CompareHashAndPassword when a hash was created with -// a bcrypt algorithm newer than this implementation. -type HashVersionTooNewError byte - -func (hv HashVersionTooNewError) Error() string { - return fmt.Sprintf("crypto/bcrypt: bcrypt algorithm version '%c' requested is newer than current version '%c'", byte(hv), majorVersion) -} - -// The error returned from CompareHashAndPassword when a hash starts with something other than '$' -type InvalidHashPrefixError byte - -func (ih InvalidHashPrefixError) Error() string { - return fmt.Sprintf("crypto/bcrypt: bcrypt hashes must start with '$', but hashedSecret started with '%c'", byte(ih)) -} - -type InvalidCostError int - -func (ic InvalidCostError) Error() string { - return fmt.Sprintf("crypto/bcrypt: cost %d is outside allowed range (%d,%d)", int(ic), int(MinCost), int(MaxCost)) -} - -const ( - majorVersion = '2' - minorVersion = 'a' - maxSaltSize = 16 - maxCryptedHashSize = 23 - encodedSaltSize = 22 - encodedHashSize = 31 - minHashSize = 59 -) - -// magicCipherData is an IV for the 64 Blowfish encryption calls in -// bcrypt(). It's the string "OrpheanBeholderScryDoubt" in big-endian bytes. -var magicCipherData = []byte{ - 0x4f, 0x72, 0x70, 0x68, - 0x65, 0x61, 0x6e, 0x42, - 0x65, 0x68, 0x6f, 0x6c, - 0x64, 0x65, 0x72, 0x53, - 0x63, 0x72, 0x79, 0x44, - 0x6f, 0x75, 0x62, 0x74, -} - -type hashed struct { - hash []byte - salt []byte - cost int // allowed range is MinCost to MaxCost - major byte - minor byte -} - -// GenerateFromPassword returns the bcrypt hash of the password at the given -// cost. If the cost given is less than MinCost, the cost will be set to -// DefaultCost, instead. Use CompareHashAndPassword, as defined in this package, -// to compare the returned hashed password with its cleartext version. -func GenerateFromPassword(password []byte, cost int) ([]byte, error) { - p, err := newFromPassword(password, cost) - if err != nil { - return nil, err - } - return p.Hash(), nil -} - -// CompareHashAndPassword compares a bcrypt hashed password with its possible -// plaintext equivalent. Returns nil on success, or an error on failure. -func CompareHashAndPassword(hashedPassword, password []byte) error { - p, err := newFromHash(hashedPassword) - if err != nil { - return err - } - - otherHash, err := bcrypt(password, p.cost, p.salt) - if err != nil { - return err - } - - otherP := &hashed{otherHash, p.salt, p.cost, p.major, p.minor} - if subtle.ConstantTimeCompare(p.Hash(), otherP.Hash()) == 1 { - return nil - } - - return ErrMismatchedHashAndPassword -} - -// Cost returns the hashing cost used to create the given hashed -// password. When, in the future, the hashing cost of a password system needs -// to be increased in order to adjust for greater computational power, this -// function allows one to establish which passwords need to be updated. -func Cost(hashedPassword []byte) (int, error) { - p, err := newFromHash(hashedPassword) - if err != nil { - return 0, err - } - return p.cost, nil -} - -func newFromPassword(password []byte, cost int) (*hashed, error) { - if cost < MinCost { - cost = DefaultCost - } - p := new(hashed) - p.major = majorVersion - p.minor = minorVersion - - err := checkCost(cost) - if err != nil { - return nil, err - } - p.cost = cost - - unencodedSalt := make([]byte, maxSaltSize) - _, err = io.ReadFull(rand.Reader, unencodedSalt) - if err != nil { - return nil, err - } - - p.salt = base64Encode(unencodedSalt) - hash, err := bcrypt(password, p.cost, p.salt) - if err != nil { - return nil, err - } - p.hash = hash - return p, err -} - -func newFromHash(hashedSecret []byte) (*hashed, error) { - if len(hashedSecret) < minHashSize { - return nil, ErrHashTooShort - } - p := new(hashed) - n, err := p.decodeVersion(hashedSecret) - if err != nil { - return nil, err - } - hashedSecret = hashedSecret[n:] - n, err = p.decodeCost(hashedSecret) - if err != nil { - return nil, err - } - hashedSecret = hashedSecret[n:] - - // The "+2" is here because we'll have to append at most 2 '=' to the salt - // when base64 decoding it in expensiveBlowfishSetup(). - p.salt = make([]byte, encodedSaltSize, encodedSaltSize+2) - copy(p.salt, hashedSecret[:encodedSaltSize]) - - hashedSecret = hashedSecret[encodedSaltSize:] - p.hash = make([]byte, len(hashedSecret)) - copy(p.hash, hashedSecret) - - return p, nil -} - -func bcrypt(password []byte, cost int, salt []byte) ([]byte, error) { - cipherData := make([]byte, len(magicCipherData)) - copy(cipherData, magicCipherData) - - c, err := expensiveBlowfishSetup(password, uint32(cost), salt) - if err != nil { - return nil, err - } - - for i := 0; i < 24; i += 8 { - for j := 0; j < 64; j++ { - c.Encrypt(cipherData[i:i+8], cipherData[i:i+8]) - } - } - - // Bug compatibility with C bcrypt implementations. We only encode 23 of - // the 24 bytes encrypted. - hsh := base64Encode(cipherData[:maxCryptedHashSize]) - return hsh, nil -} - -func expensiveBlowfishSetup(key []byte, cost uint32, salt []byte) (*blowfish.Cipher, error) { - csalt, err := base64Decode(salt) - if err != nil { - return nil, err - } - - // Bug compatibility with C bcrypt implementations. They use the trailing - // NULL in the key string during expansion. - // We copy the key to prevent changing the underlying array. - ckey := append(key[:len(key):len(key)], 0) - - c, err := blowfish.NewSaltedCipher(ckey, csalt) - if err != nil { - return nil, err - } - - var i, rounds uint64 - rounds = 1 << cost - for i = 0; i < rounds; i++ { - blowfish.ExpandKey(ckey, c) - blowfish.ExpandKey(csalt, c) - } - - return c, nil -} - -func (p *hashed) Hash() []byte { - arr := make([]byte, 60) - arr[0] = '$' - arr[1] = p.major - n := 2 - if p.minor != 0 { - arr[2] = p.minor - n = 3 - } - arr[n] = '$' - n++ - copy(arr[n:], []byte(fmt.Sprintf("%02d", p.cost))) - n += 2 - arr[n] = '$' - n++ - copy(arr[n:], p.salt) - n += encodedSaltSize - copy(arr[n:], p.hash) - n += encodedHashSize - return arr[:n] -} - -func (p *hashed) decodeVersion(sbytes []byte) (int, error) { - if sbytes[0] != '$' { - return -1, InvalidHashPrefixError(sbytes[0]) - } - if sbytes[1] > majorVersion { - return -1, HashVersionTooNewError(sbytes[1]) - } - p.major = sbytes[1] - n := 3 - if sbytes[2] != '$' { - p.minor = sbytes[2] - n++ - } - return n, nil -} - -// sbytes should begin where decodeVersion left off. -func (p *hashed) decodeCost(sbytes []byte) (int, error) { - cost, err := strconv.Atoi(string(sbytes[0:2])) - if err != nil { - return -1, err - } - err = checkCost(cost) - if err != nil { - return -1, err - } - p.cost = cost - return 3, nil -} - -func (p *hashed) String() string { - return fmt.Sprintf("&{hash: %#v, salt: %#v, cost: %d, major: %c, minor: %c}", string(p.hash), p.salt, p.cost, p.major, p.minor) -} - -func checkCost(cost int) error { - if cost < MinCost || cost > MaxCost { - return InvalidCostError(cost) - } - return nil -} diff --git a/vendor/golang.org/x/crypto/bcrypt/bcrypt_test.go b/vendor/golang.org/x/crypto/bcrypt/bcrypt_test.go deleted file mode 100644 index aecf759e..00000000 --- a/vendor/golang.org/x/crypto/bcrypt/bcrypt_test.go +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bcrypt - -import ( - "bytes" - "fmt" - "testing" -) - -func TestBcryptingIsEasy(t *testing.T) { - pass := []byte("mypassword") - hp, err := GenerateFromPassword(pass, 0) - if err != nil { - t.Fatalf("GenerateFromPassword error: %s", err) - } - - if CompareHashAndPassword(hp, pass) != nil { - t.Errorf("%v should hash %s correctly", hp, pass) - } - - notPass := "notthepass" - err = CompareHashAndPassword(hp, []byte(notPass)) - if err != ErrMismatchedHashAndPassword { - t.Errorf("%v and %s should be mismatched", hp, notPass) - } -} - -func TestBcryptingIsCorrect(t *testing.T) { - pass := []byte("allmine") - salt := []byte("XajjQvNhvvRt5GSeFk1xFe") - expectedHash := []byte("$2a$10$XajjQvNhvvRt5GSeFk1xFeyqRrsxkhBkUiQeg0dt.wU1qD4aFDcga") - - hash, err := bcrypt(pass, 10, salt) - if err != nil { - t.Fatalf("bcrypt blew up: %v", err) - } - if !bytes.HasSuffix(expectedHash, hash) { - t.Errorf("%v should be the suffix of %v", hash, expectedHash) - } - - h, err := newFromHash(expectedHash) - if err != nil { - t.Errorf("Unable to parse %s: %v", string(expectedHash), err) - } - - // This is not the safe way to compare these hashes. We do this only for - // testing clarity. Use bcrypt.CompareHashAndPassword() - if err == nil && !bytes.Equal(expectedHash, h.Hash()) { - t.Errorf("Parsed hash %v should equal %v", h.Hash(), expectedHash) - } -} - -func TestVeryShortPasswords(t *testing.T) { - key := []byte("k") - salt := []byte("XajjQvNhvvRt5GSeFk1xFe") - _, err := bcrypt(key, 10, salt) - if err != nil { - t.Errorf("One byte key resulted in error: %s", err) - } -} - -func TestTooLongPasswordsWork(t *testing.T) { - salt := []byte("XajjQvNhvvRt5GSeFk1xFe") - // One byte over the usual 56 byte limit that blowfish has - tooLongPass := []byte("012345678901234567890123456789012345678901234567890123456") - tooLongExpected := []byte("$2a$10$XajjQvNhvvRt5GSeFk1xFe5l47dONXg781AmZtd869sO8zfsHuw7C") - hash, err := bcrypt(tooLongPass, 10, salt) - if err != nil { - t.Fatalf("bcrypt blew up on long password: %v", err) - } - if !bytes.HasSuffix(tooLongExpected, hash) { - t.Errorf("%v should be the suffix of %v", hash, tooLongExpected) - } -} - -type InvalidHashTest struct { - err error - hash []byte -} - -var invalidTests = []InvalidHashTest{ - {ErrHashTooShort, []byte("$2a$10$fooo")}, - {ErrHashTooShort, []byte("$2a")}, - {HashVersionTooNewError('3'), []byte("$3a$10$sssssssssssssssssssssshhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")}, - {InvalidHashPrefixError('%'), []byte("%2a$10$sssssssssssssssssssssshhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")}, - {InvalidCostError(32), []byte("$2a$32$sssssssssssssssssssssshhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")}, -} - -func TestInvalidHashErrors(t *testing.T) { - check := func(name string, expected, err error) { - if err == nil { - t.Errorf("%s: Should have returned an error", name) - } - if err != nil && err != expected { - t.Errorf("%s gave err %v but should have given %v", name, err, expected) - } - } - for _, iht := range invalidTests { - _, err := newFromHash(iht.hash) - check("newFromHash", iht.err, err) - err = CompareHashAndPassword(iht.hash, []byte("anything")) - check("CompareHashAndPassword", iht.err, err) - } -} - -func TestUnpaddedBase64Encoding(t *testing.T) { - original := []byte{101, 201, 101, 75, 19, 227, 199, 20, 239, 236, 133, 32, 30, 109, 243, 30} - encodedOriginal := []byte("XajjQvNhvvRt5GSeFk1xFe") - - encoded := base64Encode(original) - - if !bytes.Equal(encodedOriginal, encoded) { - t.Errorf("Encoded %v should have equaled %v", encoded, encodedOriginal) - } - - decoded, err := base64Decode(encodedOriginal) - if err != nil { - t.Fatalf("base64Decode blew up: %s", err) - } - - if !bytes.Equal(decoded, original) { - t.Errorf("Decoded %v should have equaled %v", decoded, original) - } -} - -func TestCost(t *testing.T) { - suffix := "XajjQvNhvvRt5GSeFk1xFe5l47dONXg781AmZtd869sO8zfsHuw7C" - for _, vers := range []string{"2a", "2"} { - for _, cost := range []int{4, 10} { - s := fmt.Sprintf("$%s$%02d$%s", vers, cost, suffix) - h := []byte(s) - actual, err := Cost(h) - if err != nil { - t.Errorf("Cost, error: %s", err) - continue - } - if actual != cost { - t.Errorf("Cost, expected: %d, actual: %d", cost, actual) - } - } - } - _, err := Cost([]byte("$a$a$" + suffix)) - if err == nil { - t.Errorf("Cost, malformed but no error returned") - } -} - -func TestCostValidationInHash(t *testing.T) { - if testing.Short() { - return - } - - pass := []byte("mypassword") - - for c := 0; c < MinCost; c++ { - p, _ := newFromPassword(pass, c) - if p.cost != DefaultCost { - t.Errorf("newFromPassword should default costs below %d to %d, but was %d", MinCost, DefaultCost, p.cost) - } - } - - p, _ := newFromPassword(pass, 14) - if p.cost != 14 { - t.Errorf("newFromPassword should default cost to 14, but was %d", p.cost) - } - - hp, _ := newFromHash(p.Hash()) - if p.cost != hp.cost { - t.Errorf("newFromHash should maintain the cost at %d, but was %d", p.cost, hp.cost) - } - - _, err := newFromPassword(pass, 32) - if err == nil { - t.Fatalf("newFromPassword: should return a cost error") - } - if err != InvalidCostError(32) { - t.Errorf("newFromPassword: should return cost error, got %#v", err) - } -} - -func TestCostReturnsWithLeadingZeroes(t *testing.T) { - hp, _ := newFromPassword([]byte("abcdefgh"), 7) - cost := hp.Hash()[4:7] - expected := []byte("07$") - - if !bytes.Equal(expected, cost) { - t.Errorf("single digit costs in hash should have leading zeros: was %v instead of %v", cost, expected) - } -} - -func TestMinorNotRequired(t *testing.T) { - noMinorHash := []byte("$2$10$XajjQvNhvvRt5GSeFk1xFeyqRrsxkhBkUiQeg0dt.wU1qD4aFDcga") - h, err := newFromHash(noMinorHash) - if err != nil { - t.Fatalf("No minor hash blew up: %s", err) - } - if h.minor != 0 { - t.Errorf("Should leave minor version at 0, but was %d", h.minor) - } - - if !bytes.Equal(noMinorHash, h.Hash()) { - t.Errorf("Should generate hash %v, but created %v", noMinorHash, h.Hash()) - } -} - -func BenchmarkEqual(b *testing.B) { - b.StopTimer() - passwd := []byte("somepasswordyoulike") - hash, _ := GenerateFromPassword(passwd, 10) - b.StartTimer() - for i := 0; i < b.N; i++ { - CompareHashAndPassword(hash, passwd) - } -} - -func BenchmarkGeneration(b *testing.B) { - b.StopTimer() - passwd := []byte("mylongpassword1234") - b.StartTimer() - for i := 0; i < b.N; i++ { - GenerateFromPassword(passwd, 10) - } -} - -// See Issue https://github.com/golang/go/issues/20425. -func TestNoSideEffectsFromCompare(t *testing.T) { - source := []byte("passw0rd123456") - password := source[:len(source)-6] - token := source[len(source)-6:] - want := make([]byte, len(source)) - copy(want, source) - - wantHash := []byte("$2a$10$LK9XRuhNxHHCvjX3tdkRKei1QiCDUKrJRhZv7WWZPuQGRUM92rOUa") - _ = CompareHashAndPassword(wantHash, password) - - got := bytes.Join([][]byte{password, token}, []byte("")) - if !bytes.Equal(got, want) { - t.Errorf("got=%q want=%q", got, want) - } -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b.go b/vendor/golang.org/x/crypto/blake2b/blake2b.go deleted file mode 100644 index 6dedb894..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b.go +++ /dev/null @@ -1,221 +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 blake2b implements the BLAKE2b hash algorithm defined by RFC 7693 -// and the extendable output function (XOF) BLAKE2Xb. -// -// For a detailed specification of BLAKE2b see https://blake2.net/blake2.pdf -// and for BLAKE2Xb see https://blake2.net/blake2x.pdf -// -// If you aren't sure which function you need, use BLAKE2b (Sum512 or New512). -// If you need a secret-key MAC (message authentication code), use the New512 -// function with a non-nil key. -// -// BLAKE2X is a construction to compute hash values larger than 64 bytes. It -// can produce hash values between 0 and 4 GiB. -package blake2b - -import ( - "encoding/binary" - "errors" - "hash" -) - -const ( - // The blocksize of BLAKE2b in bytes. - BlockSize = 128 - // The hash size of BLAKE2b-512 in bytes. - Size = 64 - // The hash size of BLAKE2b-384 in bytes. - Size384 = 48 - // The hash size of BLAKE2b-256 in bytes. - Size256 = 32 -) - -var ( - useAVX2 bool - useAVX bool - useSSE4 bool -) - -var ( - errKeySize = errors.New("blake2b: invalid key size") - errHashSize = errors.New("blake2b: invalid hash size") -) - -var iv = [8]uint64{ - 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, - 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179, -} - -// Sum512 returns the BLAKE2b-512 checksum of the data. -func Sum512(data []byte) [Size]byte { - var sum [Size]byte - checkSum(&sum, Size, data) - return sum -} - -// Sum384 returns the BLAKE2b-384 checksum of the data. -func Sum384(data []byte) [Size384]byte { - var sum [Size]byte - var sum384 [Size384]byte - checkSum(&sum, Size384, data) - copy(sum384[:], sum[:Size384]) - return sum384 -} - -// Sum256 returns the BLAKE2b-256 checksum of the data. -func Sum256(data []byte) [Size256]byte { - var sum [Size]byte - var sum256 [Size256]byte - checkSum(&sum, Size256, data) - copy(sum256[:], sum[:Size256]) - return sum256 -} - -// New512 returns a new hash.Hash computing the BLAKE2b-512 checksum. A non-nil -// key turns the hash into a MAC. The key must between zero and 64 bytes long. -func New512(key []byte) (hash.Hash, error) { return newDigest(Size, key) } - -// New384 returns a new hash.Hash computing the BLAKE2b-384 checksum. A non-nil -// key turns the hash into a MAC. The key must between zero and 64 bytes long. -func New384(key []byte) (hash.Hash, error) { return newDigest(Size384, key) } - -// New256 returns a new hash.Hash computing the BLAKE2b-256 checksum. A non-nil -// key turns the hash into a MAC. The key must between zero and 64 bytes long. -func New256(key []byte) (hash.Hash, error) { return newDigest(Size256, key) } - -// New returns a new hash.Hash computing the BLAKE2b checksum with a custom length. -// A non-nil key turns the hash into a MAC. The key must between zero and 64 bytes long. -// The hash size can be a value between 1 and 64 but it is highly recommended to use -// values equal or greater than: -// - 32 if BLAKE2b is used as a hash function (The key is zero bytes long). -// - 16 if BLAKE2b is used as a MAC function (The key is at least 16 bytes long). -func New(size int, key []byte) (hash.Hash, error) { return newDigest(size, key) } - -func newDigest(hashSize int, key []byte) (*digest, error) { - if hashSize < 1 || hashSize > Size { - return nil, errHashSize - } - if len(key) > Size { - return nil, errKeySize - } - d := &digest{ - size: hashSize, - keyLen: len(key), - } - copy(d.key[:], key) - d.Reset() - return d, nil -} - -func checkSum(sum *[Size]byte, hashSize int, data []byte) { - h := iv - h[0] ^= uint64(hashSize) | (1 << 16) | (1 << 24) - var c [2]uint64 - - if length := len(data); length > BlockSize { - n := length &^ (BlockSize - 1) - if length == n { - n -= BlockSize - } - hashBlocks(&h, &c, 0, data[:n]) - data = data[n:] - } - - var block [BlockSize]byte - offset := copy(block[:], data) - remaining := uint64(BlockSize - offset) - if c[0] < remaining { - c[1]-- - } - c[0] -= remaining - - hashBlocks(&h, &c, 0xFFFFFFFFFFFFFFFF, block[:]) - - for i, v := range h[:(hashSize+7)/8] { - binary.LittleEndian.PutUint64(sum[8*i:], v) - } -} - -type digest struct { - h [8]uint64 - c [2]uint64 - size int - block [BlockSize]byte - offset int - - key [BlockSize]byte - keyLen int -} - -func (d *digest) BlockSize() int { return BlockSize } - -func (d *digest) Size() int { return d.size } - -func (d *digest) Reset() { - d.h = iv - d.h[0] ^= uint64(d.size) | (uint64(d.keyLen) << 8) | (1 << 16) | (1 << 24) - d.offset, d.c[0], d.c[1] = 0, 0, 0 - if d.keyLen > 0 { - d.block = d.key - d.offset = BlockSize - } -} - -func (d *digest) Write(p []byte) (n int, err error) { - n = len(p) - - if d.offset > 0 { - remaining := BlockSize - d.offset - if n <= remaining { - d.offset += copy(d.block[d.offset:], p) - return - } - copy(d.block[d.offset:], p[:remaining]) - hashBlocks(&d.h, &d.c, 0, d.block[:]) - d.offset = 0 - p = p[remaining:] - } - - if length := len(p); length > BlockSize { - nn := length &^ (BlockSize - 1) - if length == nn { - nn -= BlockSize - } - hashBlocks(&d.h, &d.c, 0, p[:nn]) - p = p[nn:] - } - - if len(p) > 0 { - d.offset += copy(d.block[:], p) - } - - return -} - -func (d *digest) Sum(sum []byte) []byte { - var hash [Size]byte - d.finalize(&hash) - return append(sum, hash[:d.size]...) -} - -func (d *digest) finalize(hash *[Size]byte) { - var block [BlockSize]byte - copy(block[:], d.block[:d.offset]) - remaining := uint64(BlockSize - d.offset) - - c := d.c - if c[0] < remaining { - c[1]-- - } - c[0] -= remaining - - h := d.h - hashBlocks(&h, &c, 0xFFFFFFFFFFFFFFFF, block[:]) - - for i, v := range h { - binary.LittleEndian.PutUint64(hash[8*i:], v) - } -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go deleted file mode 100644 index 8c41cf6c..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go +++ /dev/null @@ -1,43 +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. - -// +build go1.7,amd64,!gccgo,!appengine - -package blake2b - -func init() { - useAVX2 = supportsAVX2() - useAVX = supportsAVX() - useSSE4 = supportsSSE4() -} - -//go:noescape -func supportsSSE4() bool - -//go:noescape -func supportsAVX() bool - -//go:noescape -func supportsAVX2() bool - -//go:noescape -func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -//go:noescape -func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -//go:noescape -func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - if useAVX2 { - hashBlocksAVX2(h, c, flag, blocks) - } else if useAVX { - hashBlocksAVX(h, c, flag, blocks) - } else if useSSE4 { - hashBlocksSSE4(h, c, flag, blocks) - } else { - hashBlocksGeneric(h, c, flag, blocks) - } -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s deleted file mode 100644 index 784bce6a..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s +++ /dev/null @@ -1,762 +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. - -// +build go1.7,amd64,!gccgo,!appengine - -#include "textflag.h" - -DATA ·AVX2_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·AVX2_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -DATA ·AVX2_iv0<>+0x10(SB)/8, $0x3c6ef372fe94f82b -DATA ·AVX2_iv0<>+0x18(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·AVX2_iv0<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_iv1<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·AVX2_iv1<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -DATA ·AVX2_iv1<>+0x10(SB)/8, $0x1f83d9abfb41bd6b -DATA ·AVX2_iv1<>+0x18(SB)/8, $0x5be0cd19137e2179 -GLOBL ·AVX2_iv1<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·AVX2_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -DATA ·AVX2_c40<>+0x10(SB)/8, $0x0201000706050403 -DATA ·AVX2_c40<>+0x18(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·AVX2_c40<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·AVX2_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -DATA ·AVX2_c48<>+0x10(SB)/8, $0x0100070605040302 -DATA ·AVX2_c48<>+0x18(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·AVX2_c48<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·AVX_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -GLOBL ·AVX_iv0<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b -DATA ·AVX_iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·AVX_iv1<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv2<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·AVX_iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -GLOBL ·AVX_iv2<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b -DATA ·AVX_iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 -GLOBL ·AVX_iv3<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·AVX_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·AVX_c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·AVX_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·AVX_c48<>(SB), (NOPTR+RODATA), $16 - -#define VPERMQ_0x39_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x39 -#define VPERMQ_0x93_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x93 -#define VPERMQ_0x4E_Y2_Y2 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xd2; BYTE $0x4e -#define VPERMQ_0x93_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x93 -#define VPERMQ_0x39_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x39 - -#define ROUND_AVX2(m0, m1, m2, m3, t, c40, c48) \ - VPADDQ m0, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFD $-79, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPSHUFB c40, Y1, Y1; \ - VPADDQ m1, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFB c48, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPADDQ Y1, Y1, t; \ - VPSRLQ $63, Y1, Y1; \ - VPXOR t, Y1, Y1; \ - VPERMQ_0x39_Y1_Y1; \ - VPERMQ_0x4E_Y2_Y2; \ - VPERMQ_0x93_Y3_Y3; \ - VPADDQ m2, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFD $-79, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPSHUFB c40, Y1, Y1; \ - VPADDQ m3, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFB c48, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPADDQ Y1, Y1, t; \ - VPSRLQ $63, Y1, Y1; \ - VPXOR t, Y1, Y1; \ - VPERMQ_0x39_Y3_Y3; \ - VPERMQ_0x4E_Y2_Y2; \ - VPERMQ_0x93_Y1_Y1 - -#define VMOVQ_SI_X11_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x1E -#define VMOVQ_SI_X12_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x26 -#define VMOVQ_SI_X13_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x2E -#define VMOVQ_SI_X14_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x36 -#define VMOVQ_SI_X15_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x3E - -#define VMOVQ_SI_X11(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x5E; BYTE $n -#define VMOVQ_SI_X12(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x66; BYTE $n -#define VMOVQ_SI_X13(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x6E; BYTE $n -#define VMOVQ_SI_X14(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x76; BYTE $n -#define VMOVQ_SI_X15(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x7E; BYTE $n - -#define VPINSRQ_1_SI_X11_0 BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x1E; BYTE $0x01 -#define VPINSRQ_1_SI_X12_0 BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x26; BYTE $0x01 -#define VPINSRQ_1_SI_X13_0 BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x2E; BYTE $0x01 -#define VPINSRQ_1_SI_X14_0 BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x36; BYTE $0x01 -#define VPINSRQ_1_SI_X15_0 BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x3E; BYTE $0x01 - -#define VPINSRQ_1_SI_X11(n) BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x5E; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X12(n) BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x66; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X13(n) BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x6E; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X14(n) BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x76; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X15(n) BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x7E; BYTE $n; BYTE $0x01 - -#define VMOVQ_R8_X15 BYTE $0xC4; BYTE $0x41; BYTE $0xF9; BYTE $0x6E; BYTE $0xF8 -#define VPINSRQ_1_R9_X15 BYTE $0xC4; BYTE $0x43; BYTE $0x81; BYTE $0x22; BYTE $0xF9; BYTE $0x01 - -// load msg: Y12 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y12(i0, i1, i2, i3) \ - VMOVQ_SI_X12(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X12(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y12, Y12 - -// load msg: Y13 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y13(i0, i1, i2, i3) \ - VMOVQ_SI_X13(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X13(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y13, Y13 - -// load msg: Y14 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y14(i0, i1, i2, i3) \ - VMOVQ_SI_X14(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X14(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y14, Y14 - -// load msg: Y15 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y15(i0, i1, i2, i3) \ - VMOVQ_SI_X15(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X15(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() \ - VMOVQ_SI_X12_0; \ - VMOVQ_SI_X11(4*8); \ - VPINSRQ_1_SI_X12(2*8); \ - VPINSRQ_1_SI_X11(6*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(1, 3, 5, 7); \ - LOAD_MSG_AVX2_Y14(8, 10, 12, 14); \ - LOAD_MSG_AVX2_Y15(9, 11, 13, 15) - -#define LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() \ - LOAD_MSG_AVX2_Y12(14, 4, 9, 13); \ - LOAD_MSG_AVX2_Y13(10, 8, 15, 6); \ - VMOVQ_SI_X11(11*8); \ - VPSHUFD $0x4E, 0*8(SI), X14; \ - VPINSRQ_1_SI_X11(5*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - LOAD_MSG_AVX2_Y15(12, 2, 7, 3) - -#define LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() \ - VMOVQ_SI_X11(5*8); \ - VMOVDQU 11*8(SI), X12; \ - VPINSRQ_1_SI_X11(15*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - VMOVQ_SI_X13(8*8); \ - VMOVQ_SI_X11(2*8); \ - VPINSRQ_1_SI_X13_0; \ - VPINSRQ_1_SI_X11(13*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(10, 3, 7, 9); \ - LOAD_MSG_AVX2_Y15(14, 6, 1, 4) - -#define LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() \ - LOAD_MSG_AVX2_Y12(7, 3, 13, 11); \ - LOAD_MSG_AVX2_Y13(9, 1, 12, 14); \ - LOAD_MSG_AVX2_Y14(2, 5, 4, 15); \ - VMOVQ_SI_X15(6*8); \ - VMOVQ_SI_X11_0; \ - VPINSRQ_1_SI_X15(10*8); \ - VPINSRQ_1_SI_X11(8*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() \ - LOAD_MSG_AVX2_Y12(9, 5, 2, 10); \ - VMOVQ_SI_X13_0; \ - VMOVQ_SI_X11(4*8); \ - VPINSRQ_1_SI_X13(7*8); \ - VPINSRQ_1_SI_X11(15*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(14, 11, 6, 3); \ - LOAD_MSG_AVX2_Y15(1, 12, 8, 13) - -#define LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X11_0; \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X11(8*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(12, 10, 11, 3); \ - LOAD_MSG_AVX2_Y14(4, 7, 15, 1); \ - LOAD_MSG_AVX2_Y15(13, 5, 14, 9) - -#define LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() \ - LOAD_MSG_AVX2_Y12(12, 1, 14, 4); \ - LOAD_MSG_AVX2_Y13(5, 15, 13, 10); \ - VMOVQ_SI_X14_0; \ - VPSHUFD $0x4E, 8*8(SI), X11; \ - VPINSRQ_1_SI_X14(6*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - LOAD_MSG_AVX2_Y15(7, 3, 2, 11) - -#define LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() \ - LOAD_MSG_AVX2_Y12(13, 7, 12, 3); \ - LOAD_MSG_AVX2_Y13(11, 14, 1, 9); \ - LOAD_MSG_AVX2_Y14(5, 15, 8, 2); \ - VMOVQ_SI_X15_0; \ - VMOVQ_SI_X11(6*8); \ - VPINSRQ_1_SI_X15(4*8); \ - VPINSRQ_1_SI_X11(10*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() \ - VMOVQ_SI_X12(6*8); \ - VMOVQ_SI_X11(11*8); \ - VPINSRQ_1_SI_X12(14*8); \ - VPINSRQ_1_SI_X11_0; \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(15, 9, 3, 8); \ - VMOVQ_SI_X11(1*8); \ - VMOVDQU 12*8(SI), X14; \ - VPINSRQ_1_SI_X11(10*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - VMOVQ_SI_X15(2*8); \ - VMOVDQU 4*8(SI), X11; \ - VPINSRQ_1_SI_X15(7*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() \ - LOAD_MSG_AVX2_Y12(10, 8, 7, 1); \ - VMOVQ_SI_X13(2*8); \ - VPSHUFD $0x4E, 5*8(SI), X11; \ - VPINSRQ_1_SI_X13(4*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(15, 9, 3, 13); \ - VMOVQ_SI_X15(11*8); \ - VMOVQ_SI_X11(12*8); \ - VPINSRQ_1_SI_X15(14*8); \ - VPINSRQ_1_SI_X11_0; \ - VINSERTI128 $1, X11, Y15, Y15 - -// func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksAVX2(SB), 4, $320-48 // frame size = 288 + 32 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, DX - MOVQ SP, R9 - ADDQ $31, R9 - ANDQ $~31, R9 - MOVQ R9, SP - - MOVQ CX, 16(SP) - XORQ CX, CX - MOVQ CX, 24(SP) - - VMOVDQU ·AVX2_c40<>(SB), Y4 - VMOVDQU ·AVX2_c48<>(SB), Y5 - - VMOVDQU 0(AX), Y8 - VMOVDQU 32(AX), Y9 - VMOVDQU ·AVX2_iv0<>(SB), Y6 - VMOVDQU ·AVX2_iv1<>(SB), Y7 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 - MOVQ R9, 8(SP) - -loop: - ADDQ $128, R8 - MOVQ R8, 0(SP) - CMPQ R8, $128 - JGE noinc - INCQ R9 - MOVQ R9, 8(SP) - -noinc: - VMOVDQA Y8, Y0 - VMOVDQA Y9, Y1 - VMOVDQA Y6, Y2 - VPXOR 0(SP), Y7, Y3 - - LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() - VMOVDQA Y12, 32(SP) - VMOVDQA Y13, 64(SP) - VMOVDQA Y14, 96(SP) - VMOVDQA Y15, 128(SP) - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() - VMOVDQA Y12, 160(SP) - VMOVDQA Y13, 192(SP) - VMOVDQA Y14, 224(SP) - VMOVDQA Y15, 256(SP) - - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - - ROUND_AVX2(32(SP), 64(SP), 96(SP), 128(SP), Y10, Y4, Y5) - ROUND_AVX2(160(SP), 192(SP), 224(SP), 256(SP), Y10, Y4, Y5) - - VPXOR Y0, Y8, Y8 - VPXOR Y1, Y9, Y9 - VPXOR Y2, Y8, Y8 - VPXOR Y3, Y9, Y9 - - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop - - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) - - VMOVDQU Y8, 0(AX) - VMOVDQU Y9, 32(AX) - VZEROUPPER - - MOVQ DX, SP - RET - -#define VPUNPCKLQDQ_X2_X2_X15 BYTE $0xC5; BYTE $0x69; BYTE $0x6C; BYTE $0xFA -#define VPUNPCKLQDQ_X3_X3_X15 BYTE $0xC5; BYTE $0x61; BYTE $0x6C; BYTE $0xFB -#define VPUNPCKLQDQ_X7_X7_X15 BYTE $0xC5; BYTE $0x41; BYTE $0x6C; BYTE $0xFF -#define VPUNPCKLQDQ_X13_X13_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x11; BYTE $0x6C; BYTE $0xFD -#define VPUNPCKLQDQ_X14_X14_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x09; BYTE $0x6C; BYTE $0xFE - -#define VPUNPCKHQDQ_X15_X2_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x69; BYTE $0x6D; BYTE $0xD7 -#define VPUNPCKHQDQ_X15_X3_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xDF -#define VPUNPCKHQDQ_X15_X6_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x49; BYTE $0x6D; BYTE $0xF7 -#define VPUNPCKHQDQ_X15_X7_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xFF -#define VPUNPCKHQDQ_X15_X3_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xD7 -#define VPUNPCKHQDQ_X15_X7_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xF7 -#define VPUNPCKHQDQ_X15_X13_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xDF -#define VPUNPCKHQDQ_X15_X13_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xFF - -#define SHUFFLE_AVX() \ - VMOVDQA X6, X13; \ - VMOVDQA X2, X14; \ - VMOVDQA X4, X6; \ - VPUNPCKLQDQ_X13_X13_X15; \ - VMOVDQA X5, X4; \ - VMOVDQA X6, X5; \ - VPUNPCKHQDQ_X15_X7_X6; \ - VPUNPCKLQDQ_X7_X7_X15; \ - VPUNPCKHQDQ_X15_X13_X7; \ - VPUNPCKLQDQ_X3_X3_X15; \ - VPUNPCKHQDQ_X15_X2_X2; \ - VPUNPCKLQDQ_X14_X14_X15; \ - VPUNPCKHQDQ_X15_X3_X3; \ - -#define SHUFFLE_AVX_INV() \ - VMOVDQA X2, X13; \ - VMOVDQA X4, X14; \ - VPUNPCKLQDQ_X2_X2_X15; \ - VMOVDQA X5, X4; \ - VPUNPCKHQDQ_X15_X3_X2; \ - VMOVDQA X14, X5; \ - VPUNPCKLQDQ_X3_X3_X15; \ - VMOVDQA X6, X14; \ - VPUNPCKHQDQ_X15_X13_X3; \ - VPUNPCKLQDQ_X7_X7_X15; \ - VPUNPCKHQDQ_X15_X6_X6; \ - VPUNPCKLQDQ_X14_X14_X15; \ - VPUNPCKHQDQ_X15_X7_X7; \ - -#define HALF_ROUND_AVX(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ - VPADDQ m0, v0, v0; \ - VPADDQ v2, v0, v0; \ - VPADDQ m1, v1, v1; \ - VPADDQ v3, v1, v1; \ - VPXOR v0, v6, v6; \ - VPXOR v1, v7, v7; \ - VPSHUFD $-79, v6, v6; \ - VPSHUFD $-79, v7, v7; \ - VPADDQ v6, v4, v4; \ - VPADDQ v7, v5, v5; \ - VPXOR v4, v2, v2; \ - VPXOR v5, v3, v3; \ - VPSHUFB c40, v2, v2; \ - VPSHUFB c40, v3, v3; \ - VPADDQ m2, v0, v0; \ - VPADDQ v2, v0, v0; \ - VPADDQ m3, v1, v1; \ - VPADDQ v3, v1, v1; \ - VPXOR v0, v6, v6; \ - VPXOR v1, v7, v7; \ - VPSHUFB c48, v6, v6; \ - VPSHUFB c48, v7, v7; \ - VPADDQ v6, v4, v4; \ - VPADDQ v7, v5, v5; \ - VPXOR v4, v2, v2; \ - VPXOR v5, v3, v3; \ - VPADDQ v2, v2, t0; \ - VPSRLQ $63, v2, v2; \ - VPXOR t0, v2, v2; \ - VPADDQ v3, v3, t0; \ - VPSRLQ $63, v3, v3; \ - VPXOR t0, v3, v3 - -// load msg: X12 = (i0, i1), X13 = (i2, i3), X14 = (i4, i5), X15 = (i6, i7) -// i0, i1, i2, i3, i4, i5, i6, i7 must not be 0 -#define LOAD_MSG_AVX(i0, i1, i2, i3, i4, i5, i6, i7) \ - VMOVQ_SI_X12(i0*8); \ - VMOVQ_SI_X13(i2*8); \ - VMOVQ_SI_X14(i4*8); \ - VMOVQ_SI_X15(i6*8); \ - VPINSRQ_1_SI_X12(i1*8); \ - VPINSRQ_1_SI_X13(i3*8); \ - VPINSRQ_1_SI_X14(i5*8); \ - VPINSRQ_1_SI_X15(i7*8) - -// load msg: X12 = (0, 2), X13 = (4, 6), X14 = (1, 3), X15 = (5, 7) -#define LOAD_MSG_AVX_0_2_4_6_1_3_5_7() \ - VMOVQ_SI_X12_0; \ - VMOVQ_SI_X13(4*8); \ - VMOVQ_SI_X14(1*8); \ - VMOVQ_SI_X15(5*8); \ - VPINSRQ_1_SI_X12(2*8); \ - VPINSRQ_1_SI_X13(6*8); \ - VPINSRQ_1_SI_X14(3*8); \ - VPINSRQ_1_SI_X15(7*8) - -// load msg: X12 = (1, 0), X13 = (11, 5), X14 = (12, 2), X15 = (7, 3) -#define LOAD_MSG_AVX_1_0_11_5_12_2_7_3() \ - VPSHUFD $0x4E, 0*8(SI), X12; \ - VMOVQ_SI_X13(11*8); \ - VMOVQ_SI_X14(12*8); \ - VMOVQ_SI_X15(7*8); \ - VPINSRQ_1_SI_X13(5*8); \ - VPINSRQ_1_SI_X14(2*8); \ - VPINSRQ_1_SI_X15(3*8) - -// load msg: X12 = (11, 12), X13 = (5, 15), X14 = (8, 0), X15 = (2, 13) -#define LOAD_MSG_AVX_11_12_5_15_8_0_2_13() \ - VMOVDQU 11*8(SI), X12; \ - VMOVQ_SI_X13(5*8); \ - VMOVQ_SI_X14(8*8); \ - VMOVQ_SI_X15(2*8); \ - VPINSRQ_1_SI_X13(15*8); \ - VPINSRQ_1_SI_X14_0; \ - VPINSRQ_1_SI_X15(13*8) - -// load msg: X12 = (2, 5), X13 = (4, 15), X14 = (6, 10), X15 = (0, 8) -#define LOAD_MSG_AVX_2_5_4_15_6_10_0_8() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X13(4*8); \ - VMOVQ_SI_X14(6*8); \ - VMOVQ_SI_X15_0; \ - VPINSRQ_1_SI_X12(5*8); \ - VPINSRQ_1_SI_X13(15*8); \ - VPINSRQ_1_SI_X14(10*8); \ - VPINSRQ_1_SI_X15(8*8) - -// load msg: X12 = (9, 5), X13 = (2, 10), X14 = (0, 7), X15 = (4, 15) -#define LOAD_MSG_AVX_9_5_2_10_0_7_4_15() \ - VMOVQ_SI_X12(9*8); \ - VMOVQ_SI_X13(2*8); \ - VMOVQ_SI_X14_0; \ - VMOVQ_SI_X15(4*8); \ - VPINSRQ_1_SI_X12(5*8); \ - VPINSRQ_1_SI_X13(10*8); \ - VPINSRQ_1_SI_X14(7*8); \ - VPINSRQ_1_SI_X15(15*8) - -// load msg: X12 = (2, 6), X13 = (0, 8), X14 = (12, 10), X15 = (11, 3) -#define LOAD_MSG_AVX_2_6_0_8_12_10_11_3() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X13_0; \ - VMOVQ_SI_X14(12*8); \ - VMOVQ_SI_X15(11*8); \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X13(8*8); \ - VPINSRQ_1_SI_X14(10*8); \ - VPINSRQ_1_SI_X15(3*8) - -// load msg: X12 = (0, 6), X13 = (9, 8), X14 = (7, 3), X15 = (2, 11) -#define LOAD_MSG_AVX_0_6_9_8_7_3_2_11() \ - MOVQ 0*8(SI), X12; \ - VPSHUFD $0x4E, 8*8(SI), X13; \ - MOVQ 7*8(SI), X14; \ - MOVQ 2*8(SI), X15; \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X14(3*8); \ - VPINSRQ_1_SI_X15(11*8) - -// load msg: X12 = (6, 14), X13 = (11, 0), X14 = (15, 9), X15 = (3, 8) -#define LOAD_MSG_AVX_6_14_11_0_15_9_3_8() \ - MOVQ 6*8(SI), X12; \ - MOVQ 11*8(SI), X13; \ - MOVQ 15*8(SI), X14; \ - MOVQ 3*8(SI), X15; \ - VPINSRQ_1_SI_X12(14*8); \ - VPINSRQ_1_SI_X13_0; \ - VPINSRQ_1_SI_X14(9*8); \ - VPINSRQ_1_SI_X15(8*8) - -// load msg: X12 = (5, 15), X13 = (8, 2), X14 = (0, 4), X15 = (6, 10) -#define LOAD_MSG_AVX_5_15_8_2_0_4_6_10() \ - MOVQ 5*8(SI), X12; \ - MOVQ 8*8(SI), X13; \ - MOVQ 0*8(SI), X14; \ - MOVQ 6*8(SI), X15; \ - VPINSRQ_1_SI_X12(15*8); \ - VPINSRQ_1_SI_X13(2*8); \ - VPINSRQ_1_SI_X14(4*8); \ - VPINSRQ_1_SI_X15(10*8) - -// load msg: X12 = (12, 13), X13 = (1, 10), X14 = (2, 7), X15 = (4, 5) -#define LOAD_MSG_AVX_12_13_1_10_2_7_4_5() \ - VMOVDQU 12*8(SI), X12; \ - MOVQ 1*8(SI), X13; \ - MOVQ 2*8(SI), X14; \ - VPINSRQ_1_SI_X13(10*8); \ - VPINSRQ_1_SI_X14(7*8); \ - VMOVDQU 4*8(SI), X15 - -// load msg: X12 = (15, 9), X13 = (3, 13), X14 = (11, 14), X15 = (12, 0) -#define LOAD_MSG_AVX_15_9_3_13_11_14_12_0() \ - MOVQ 15*8(SI), X12; \ - MOVQ 3*8(SI), X13; \ - MOVQ 11*8(SI), X14; \ - MOVQ 12*8(SI), X15; \ - VPINSRQ_1_SI_X12(9*8); \ - VPINSRQ_1_SI_X13(13*8); \ - VPINSRQ_1_SI_X14(14*8); \ - VPINSRQ_1_SI_X15_0 - -// func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksAVX(SB), 4, $288-48 // frame size = 272 + 16 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, BP - MOVQ SP, R9 - ADDQ $15, R9 - ANDQ $~15, R9 - MOVQ R9, SP - - VMOVDQU ·AVX_c40<>(SB), X0 - VMOVDQU ·AVX_c48<>(SB), X1 - VMOVDQA X0, X8 - VMOVDQA X1, X9 - - VMOVDQU ·AVX_iv3<>(SB), X0 - VMOVDQA X0, 0(SP) - XORQ CX, 0(SP) // 0(SP) = ·AVX_iv3 ^ (CX || 0) - - VMOVDQU 0(AX), X10 - VMOVDQU 16(AX), X11 - VMOVDQU 32(AX), X2 - VMOVDQU 48(AX), X3 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 - -loop: - ADDQ $128, R8 - CMPQ R8, $128 - JGE noinc - INCQ R9 - -noinc: - VMOVQ_R8_X15 - VPINSRQ_1_R9_X15 - - VMOVDQA X10, X0 - VMOVDQA X11, X1 - VMOVDQU ·AVX_iv0<>(SB), X4 - VMOVDQU ·AVX_iv1<>(SB), X5 - VMOVDQU ·AVX_iv2<>(SB), X6 - - VPXOR X15, X6, X6 - VMOVDQA 0(SP), X7 - - LOAD_MSG_AVX_0_2_4_6_1_3_5_7() - VMOVDQA X12, 16(SP) - VMOVDQA X13, 32(SP) - VMOVDQA X14, 48(SP) - VMOVDQA X15, 64(SP) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(8, 10, 12, 14, 9, 11, 13, 15) - VMOVDQA X12, 80(SP) - VMOVDQA X13, 96(SP) - VMOVDQA X14, 112(SP) - VMOVDQA X15, 128(SP) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(14, 4, 9, 13, 10, 8, 15, 6) - VMOVDQA X12, 144(SP) - VMOVDQA X13, 160(SP) - VMOVDQA X14, 176(SP) - VMOVDQA X15, 192(SP) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_1_0_11_5_12_2_7_3() - VMOVDQA X12, 208(SP) - VMOVDQA X13, 224(SP) - VMOVDQA X14, 240(SP) - VMOVDQA X15, 256(SP) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_11_12_5_15_8_0_2_13() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(10, 3, 7, 9, 14, 6, 1, 4) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(7, 3, 13, 11, 9, 1, 12, 14) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_2_5_4_15_6_10_0_8() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_9_5_2_10_0_7_4_15() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(14, 11, 6, 3, 1, 12, 8, 13) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_2_6_0_8_12_10_11_3() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(4, 7, 15, 1, 13, 5, 14, 9) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(12, 1, 14, 4, 5, 15, 13, 10) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_0_6_9_8_7_3_2_11() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(13, 7, 12, 3, 11, 14, 1, 9) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_5_15_8_2_0_4_6_10() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_6_14_11_0_15_9_3_8() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_12_13_1_10_2_7_4_5() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(10, 8, 7, 1, 2, 4, 6, 5) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_15_9_3_13_11_14_12_0() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X15, X8, X9) - SHUFFLE_AVX() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 80(SP), 96(SP), 112(SP), 128(SP), X15, X8, X9) - SHUFFLE_AVX_INV() - - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 144(SP), 160(SP), 176(SP), 192(SP), X15, X8, X9) - SHUFFLE_AVX() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 208(SP), 224(SP), 240(SP), 256(SP), X15, X8, X9) - SHUFFLE_AVX_INV() - - VMOVDQU 32(AX), X14 - VMOVDQU 48(AX), X15 - VPXOR X0, X10, X10 - VPXOR X1, X11, X11 - VPXOR X2, X14, X14 - VPXOR X3, X15, X15 - VPXOR X4, X10, X10 - VPXOR X5, X11, X11 - VPXOR X6, X14, X2 - VPXOR X7, X15, X3 - VMOVDQU X2, 32(AX) - VMOVDQU X3, 48(AX) - - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop - - VMOVDQU X10, 0(AX) - VMOVDQU X11, 16(AX) - - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) - VZEROUPPER - - MOVQ BP, SP - RET - -// func supportsAVX2() bool -TEXT ·supportsAVX2(SB), 4, $0-1 - MOVQ runtime·support_avx2(SB), AX - MOVB AX, ret+0(FP) - RET - -// func supportsAVX() bool -TEXT ·supportsAVX(SB), 4, $0-1 - MOVQ runtime·support_avx(SB), AX - MOVB AX, ret+0(FP) - RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go deleted file mode 100644 index 2ab7c30f..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go +++ /dev/null @@ -1,25 +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. - -// +build !go1.7,amd64,!gccgo,!appengine - -package blake2b - -func init() { - useSSE4 = supportsSSE4() -} - -//go:noescape -func supportsSSE4() bool - -//go:noescape -func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - if useSSE4 { - hashBlocksSSE4(h, c, flag, blocks) - } else { - hashBlocksGeneric(h, c, flag, blocks) - } -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s deleted file mode 100644 index 64530740..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s +++ /dev/null @@ -1,290 +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. - -// +build amd64,!gccgo,!appengine - -#include "textflag.h" - -DATA ·iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -GLOBL ·iv0<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b -DATA ·iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·iv1<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv2<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -GLOBL ·iv2<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b -DATA ·iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 -GLOBL ·iv3<>(SB), (NOPTR+RODATA), $16 - -DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 - -#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v6, t1; \ - PUNPCKLQDQ v6, t2; \ - PUNPCKHQDQ v7, v6; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ v7, t2; \ - MOVO t1, v7; \ - MOVO v2, t1; \ - PUNPCKHQDQ t2, v7; \ - PUNPCKLQDQ v3, t2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v3 - -#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v2, t1; \ - PUNPCKLQDQ v2, t2; \ - PUNPCKHQDQ v3, v2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ v3, t2; \ - MOVO t1, v3; \ - MOVO v6, t1; \ - PUNPCKHQDQ t2, v3; \ - PUNPCKLQDQ v7, t2; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v7 - -#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ - PADDQ m0, v0; \ - PADDQ m1, v1; \ - PADDQ v2, v0; \ - PADDQ v3, v1; \ - PXOR v0, v6; \ - PXOR v1, v7; \ - PSHUFD $0xB1, v6, v6; \ - PSHUFD $0xB1, v7, v7; \ - PADDQ v6, v4; \ - PADDQ v7, v5; \ - PXOR v4, v2; \ - PXOR v5, v3; \ - PSHUFB c40, v2; \ - PSHUFB c40, v3; \ - PADDQ m2, v0; \ - PADDQ m3, v1; \ - PADDQ v2, v0; \ - PADDQ v3, v1; \ - PXOR v0, v6; \ - PXOR v1, v7; \ - PSHUFB c48, v6; \ - PSHUFB c48, v7; \ - PADDQ v6, v4; \ - PADDQ v7, v5; \ - PXOR v4, v2; \ - PXOR v5, v3; \ - MOVOU v2, t0; \ - PADDQ v2, t0; \ - PSRLQ $63, v2; \ - PXOR t0, v2; \ - MOVOU v3, t0; \ - PADDQ v3, t0; \ - PSRLQ $63, v3; \ - PXOR t0, v3 - -#define LOAD_MSG(m0, m1, m2, m3, src, i0, i1, i2, i3, i4, i5, i6, i7) \ - MOVQ i0*8(src), m0; \ - PINSRQ $1, i1*8(src), m0; \ - MOVQ i2*8(src), m1; \ - PINSRQ $1, i3*8(src), m1; \ - MOVQ i4*8(src), m2; \ - PINSRQ $1, i5*8(src), m2; \ - MOVQ i6*8(src), m3; \ - PINSRQ $1, i7*8(src), m3 - -// func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksSSE4(SB), 4, $288-48 // frame size = 272 + 16 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, BP - MOVQ SP, R9 - ADDQ $15, R9 - ANDQ $~15, R9 - MOVQ R9, SP - - MOVOU ·iv3<>(SB), X0 - MOVO X0, 0(SP) - XORQ CX, 0(SP) // 0(SP) = ·iv3 ^ (CX || 0) - - MOVOU ·c40<>(SB), X13 - MOVOU ·c48<>(SB), X14 - - MOVOU 0(AX), X12 - MOVOU 16(AX), X15 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 - -loop: - ADDQ $128, R8 - CMPQ R8, $128 - JGE noinc - INCQ R9 - -noinc: - MOVQ R8, X8 - PINSRQ $1, R9, X8 - - MOVO X12, X0 - MOVO X15, X1 - MOVOU 32(AX), X2 - MOVOU 48(AX), X3 - MOVOU ·iv0<>(SB), X4 - MOVOU ·iv1<>(SB), X5 - MOVOU ·iv2<>(SB), X6 - - PXOR X8, X6 - MOVO 0(SP), X7 - - LOAD_MSG(X8, X9, X10, X11, SI, 0, 2, 4, 6, 1, 3, 5, 7) - MOVO X8, 16(SP) - MOVO X9, 32(SP) - MOVO X10, 48(SP) - MOVO X11, 64(SP) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 8, 10, 12, 14, 9, 11, 13, 15) - MOVO X8, 80(SP) - MOVO X9, 96(SP) - MOVO X10, 112(SP) - MOVO X11, 128(SP) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 14, 4, 9, 13, 10, 8, 15, 6) - MOVO X8, 144(SP) - MOVO X9, 160(SP) - MOVO X10, 176(SP) - MOVO X11, 192(SP) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 1, 0, 11, 5, 12, 2, 7, 3) - MOVO X8, 208(SP) - MOVO X9, 224(SP) - MOVO X10, 240(SP) - MOVO X11, 256(SP) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 11, 12, 5, 15, 8, 0, 2, 13) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 10, 3, 7, 9, 14, 6, 1, 4) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 7, 3, 13, 11, 9, 1, 12, 14) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 2, 5, 4, 15, 6, 10, 0, 8) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 9, 5, 2, 10, 0, 7, 4, 15) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 14, 11, 6, 3, 1, 12, 8, 13) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 2, 6, 0, 8, 12, 10, 11, 3) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 4, 7, 15, 1, 13, 5, 14, 9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 12, 1, 14, 4, 5, 15, 13, 10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 0, 6, 9, 8, 7, 3, 2, 11) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 13, 7, 12, 3, 11, 14, 1, 9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 5, 15, 8, 2, 0, 4, 6, 10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 6, 14, 11, 0, 15, 9, 3, 8) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 12, 13, 1, 10, 2, 7, 4, 5) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 10, 8, 7, 1, 2, 4, 6, 5) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 15, 9, 3, 13, 11, 14, 12, 0) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 80(SP), 96(SP), 112(SP), 128(SP), X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 144(SP), 160(SP), 176(SP), 192(SP), X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 208(SP), 224(SP), 240(SP), 256(SP), X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - MOVOU 32(AX), X10 - MOVOU 48(AX), X11 - PXOR X0, X12 - PXOR X1, X15 - PXOR X2, X10 - PXOR X3, X11 - PXOR X4, X12 - PXOR X5, X15 - PXOR X6, X10 - PXOR X7, X11 - MOVOU X10, 32(AX) - MOVOU X11, 48(AX) - - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop - - MOVOU X12, 0(AX) - MOVOU X15, 16(AX) - - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) - - MOVQ BP, SP - RET - -// func supportsSSE4() bool -TEXT ·supportsSSE4(SB), 4, $0-1 - MOVL $1, AX - CPUID - SHRL $19, CX // Bit 19 indicates SSE4 support - ANDL $1, CX // CX != 0 if support SSE4 - MOVB CX, ret+0(FP) - RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go b/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go deleted file mode 100644 index 4bd2abc9..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go +++ /dev/null @@ -1,179 +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 blake2b - -import "encoding/binary" - -// the precomputed values for BLAKE2b -// there are 12 16-byte arrays - one for each round -// the entries are calculated from the sigma constants. -var precomputed = [12][16]byte{ - {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, - {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, - {11, 12, 5, 15, 8, 0, 2, 13, 10, 3, 7, 9, 14, 6, 1, 4}, - {7, 3, 13, 11, 9, 1, 12, 14, 2, 5, 4, 15, 6, 10, 0, 8}, - {9, 5, 2, 10, 0, 7, 4, 15, 14, 11, 6, 3, 1, 12, 8, 13}, - {2, 6, 0, 8, 12, 10, 11, 3, 4, 7, 15, 1, 13, 5, 14, 9}, - {12, 1, 14, 4, 5, 15, 13, 10, 0, 6, 9, 8, 7, 3, 2, 11}, - {13, 7, 12, 3, 11, 14, 1, 9, 5, 15, 8, 2, 0, 4, 6, 10}, - {6, 14, 11, 0, 15, 9, 3, 8, 12, 13, 1, 10, 2, 7, 4, 5}, - {10, 8, 7, 1, 2, 4, 6, 5, 15, 9, 3, 13, 11, 14, 12, 0}, - {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, // equal to the first - {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, // equal to the second -} - -func hashBlocksGeneric(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - var m [16]uint64 - c0, c1 := c[0], c[1] - - for i := 0; i < len(blocks); { - c0 += BlockSize - if c0 < BlockSize { - c1++ - } - - v0, v1, v2, v3, v4, v5, v6, v7 := h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7] - v8, v9, v10, v11, v12, v13, v14, v15 := iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], iv[6], iv[7] - v12 ^= c0 - v13 ^= c1 - v14 ^= flag - - for j := range m { - m[j] = binary.LittleEndian.Uint64(blocks[i:]) - i += 8 - } - - for j := range precomputed { - s := &(precomputed[j]) - - v0 += m[s[0]] - v0 += v4 - v12 ^= v0 - v12 = v12<<(64-32) | v12>>32 - v8 += v12 - v4 ^= v8 - v4 = v4<<(64-24) | v4>>24 - v1 += m[s[1]] - v1 += v5 - v13 ^= v1 - v13 = v13<<(64-32) | v13>>32 - v9 += v13 - v5 ^= v9 - v5 = v5<<(64-24) | v5>>24 - v2 += m[s[2]] - v2 += v6 - v14 ^= v2 - v14 = v14<<(64-32) | v14>>32 - v10 += v14 - v6 ^= v10 - v6 = v6<<(64-24) | v6>>24 - v3 += m[s[3]] - v3 += v7 - v15 ^= v3 - v15 = v15<<(64-32) | v15>>32 - v11 += v15 - v7 ^= v11 - v7 = v7<<(64-24) | v7>>24 - - v0 += m[s[4]] - v0 += v4 - v12 ^= v0 - v12 = v12<<(64-16) | v12>>16 - v8 += v12 - v4 ^= v8 - v4 = v4<<(64-63) | v4>>63 - v1 += m[s[5]] - v1 += v5 - v13 ^= v1 - v13 = v13<<(64-16) | v13>>16 - v9 += v13 - v5 ^= v9 - v5 = v5<<(64-63) | v5>>63 - v2 += m[s[6]] - v2 += v6 - v14 ^= v2 - v14 = v14<<(64-16) | v14>>16 - v10 += v14 - v6 ^= v10 - v6 = v6<<(64-63) | v6>>63 - v3 += m[s[7]] - v3 += v7 - v15 ^= v3 - v15 = v15<<(64-16) | v15>>16 - v11 += v15 - v7 ^= v11 - v7 = v7<<(64-63) | v7>>63 - - v0 += m[s[8]] - v0 += v5 - v15 ^= v0 - v15 = v15<<(64-32) | v15>>32 - v10 += v15 - v5 ^= v10 - v5 = v5<<(64-24) | v5>>24 - v1 += m[s[9]] - v1 += v6 - v12 ^= v1 - v12 = v12<<(64-32) | v12>>32 - v11 += v12 - v6 ^= v11 - v6 = v6<<(64-24) | v6>>24 - v2 += m[s[10]] - v2 += v7 - v13 ^= v2 - v13 = v13<<(64-32) | v13>>32 - v8 += v13 - v7 ^= v8 - v7 = v7<<(64-24) | v7>>24 - v3 += m[s[11]] - v3 += v4 - v14 ^= v3 - v14 = v14<<(64-32) | v14>>32 - v9 += v14 - v4 ^= v9 - v4 = v4<<(64-24) | v4>>24 - - v0 += m[s[12]] - v0 += v5 - v15 ^= v0 - v15 = v15<<(64-16) | v15>>16 - v10 += v15 - v5 ^= v10 - v5 = v5<<(64-63) | v5>>63 - v1 += m[s[13]] - v1 += v6 - v12 ^= v1 - v12 = v12<<(64-16) | v12>>16 - v11 += v12 - v6 ^= v11 - v6 = v6<<(64-63) | v6>>63 - v2 += m[s[14]] - v2 += v7 - v13 ^= v2 - v13 = v13<<(64-16) | v13>>16 - v8 += v13 - v7 ^= v8 - v7 = v7<<(64-63) | v7>>63 - v3 += m[s[15]] - v3 += v4 - v14 ^= v3 - v14 = v14<<(64-16) | v14>>16 - v9 += v14 - v4 ^= v9 - v4 = v4<<(64-63) | v4>>63 - - } - - h[0] ^= v0 ^ v8 - h[1] ^= v1 ^ v9 - h[2] ^= v2 ^ v10 - h[3] ^= v3 ^ v11 - h[4] ^= v4 ^ v12 - h[5] ^= v5 ^ v13 - h[6] ^= v6 ^ v14 - h[7] ^= v7 ^ v15 - } - c[0], c[1] = c0, c1 -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go b/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go deleted file mode 100644 index da156a1b..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go +++ /dev/null @@ -1,11 +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. - -// +build !amd64 appengine gccgo - -package blake2b - -func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - hashBlocksGeneric(h, c, flag, blocks) -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_test.go b/vendor/golang.org/x/crypto/blake2b/blake2b_test.go deleted file mode 100644 index 5d68bbf6..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_test.go +++ /dev/null @@ -1,798 +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 blake2b - -import ( - "bytes" - "encoding/hex" - "fmt" - "hash" - "io" - "testing" -) - -func fromHex(s string) []byte { - b, err := hex.DecodeString(s) - if err != nil { - panic(err) - } - return b -} - -func TestHashes(t *testing.T) { - defer func(sse4, avx, avx2 bool) { - useSSE4, useAVX, useAVX2 = sse4, avx, avx2 - }(useSSE4, useAVX, useAVX2) - - if useAVX2 { - t.Log("AVX2 version") - testHashes(t) - useAVX2 = false - } - if useAVX { - t.Log("AVX version") - testHashes(t) - useAVX = false - } - if useSSE4 { - t.Log("SSE4 version") - testHashes(t) - useSSE4 = false - } - t.Log("generic version") - testHashes(t) -} - -func TestHashes2X(t *testing.T) { - defer func(sse4, avx, avx2 bool) { - useSSE4, useAVX, useAVX2 = sse4, avx, avx2 - }(useSSE4, useAVX, useAVX2) - - if useAVX2 { - t.Log("AVX2 version") - testHashes2X(t) - useAVX2 = false - } - if useAVX { - t.Log("AVX version") - testHashes2X(t) - useAVX = false - } - if useSSE4 { - t.Log("SSE4 version") - testHashes2X(t) - useSSE4 = false - } - t.Log("generic version") - testHashes2X(t) -} - -func testHashes(t *testing.T) { - key, _ := hex.DecodeString("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f") - - input := make([]byte, 255) - for i := range input { - input[i] = byte(i) - } - - for i, expectedHex := range hashes { - h, err := New512(key) - if err != nil { - t.Fatalf("#%d: error from New512: %v", i, err) - } - - h.Write(input[:i]) - sum := h.Sum(nil) - - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (single write): got %s, wanted %s", i, gotHex, expectedHex) - } - - h.Reset() - for j := 0; j < i; j++ { - h.Write(input[j : j+1]) - } - - sum = h.Sum(sum[:0]) - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (byte-by-byte): got %s, wanted %s", i, gotHex, expectedHex) - } - } -} - -func testHashes2X(t *testing.T) { - key, _ := hex.DecodeString("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f") - - input := make([]byte, 256) - for i := range input { - input[i] = byte(i) - } - - for i, expectedHex := range hashes2X { - length := uint32(len(expectedHex) / 2) - sum := make([]byte, int(length)) - - h, err := NewXOF(length, key) - if err != nil { - t.Fatalf("#%d: error from NewXOF: %v", i, err) - } - - if _, err := h.Write(input); err != nil { - t.Fatalf("#%d (single write): error from Write: %v", i, err) - } - if _, err := h.Read(sum); err != nil { - t.Fatalf("#%d (single write): error from Read: %v", i, err) - } - if n, err := h.Read(sum); n != 0 || err != io.EOF { - t.Fatalf("#%d (single write): Read did not return (0, io.EOF) after exhaustion, got (%v, %v)", i, n, err) - } - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (single write): got %s, wanted %s", i, gotHex, expectedHex) - } - - h.Reset() - for j := 0; j < len(input); j++ { - h.Write(input[j : j+1]) - } - for j := 0; j < len(sum); j++ { - h = h.Clone() - if _, err := h.Read(sum[j : j+1]); err != nil { - t.Fatalf("#%d (byte-by-byte) - Read %d: error from Read: %v", i, j, err) - } - } - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (byte-by-byte): got %s, wanted %s", i, gotHex, expectedHex) - } - } - - h, err := NewXOF(OutputLengthUnknown, key) - if err != nil { - t.Fatalf("#unknown length: error from NewXOF: %v", err) - } - if _, err := h.Write(input); err != nil { - t.Fatalf("#unknown length: error from Write: %v", err) - } - - var result [64]byte - if n, err := h.Read(result[:]); err != nil { - t.Fatalf("#unknown length: error from Read: %v", err) - } else if n != len(result) { - t.Fatalf("#unknown length: Read returned %d bytes, want %d", n, len(result)) - } - - const expected = "3dbba8516da76bf7330055c66ea36cf1005e92714262b24d9710f51d9e126406e1bcd6497059f9331f1091c3634b695428d475ed432f987040575520a1c29f5e" - if fmt.Sprintf("%x", result) != expected { - t.Fatalf("#unknown length: bad result %x, wanted %s", result, expected) - } -} - -func generateSequence(out []byte, seed uint32) { - a := 0xDEAD4BAD * seed // prime - b := uint32(1) - - for i := range out { // fill the buf - a, b = b, a+b - out[i] = byte(b >> 24) - } -} - -func computeMAC(msg []byte, hashSize int, key []byte) (sum []byte) { - var h hash.Hash - switch hashSize { - case Size: - h, _ = New512(key) - case Size384: - h, _ = New384(key) - case Size256: - h, _ = New256(key) - case 20: - h, _ = newDigest(20, key) - default: - panic("unexpected hashSize") - } - - h.Write(msg) - return h.Sum(sum) -} - -func computeHash(msg []byte, hashSize int) (sum []byte) { - switch hashSize { - case Size: - hash := Sum512(msg) - return hash[:] - case Size384: - hash := Sum384(msg) - return hash[:] - case Size256: - hash := Sum256(msg) - return hash[:] - case 20: - var hash [64]byte - checkSum(&hash, 20, msg) - return hash[:20] - default: - panic("unexpected hashSize") - } -} - -// Test function from RFC 7693. -func TestSelfTest(t *testing.T) { - hashLens := [4]int{20, 32, 48, 64} - msgLens := [6]int{0, 3, 128, 129, 255, 1024} - - msg := make([]byte, 1024) - key := make([]byte, 64) - - h, _ := New256(nil) - for _, hashSize := range hashLens { - for _, msgLength := range msgLens { - generateSequence(msg[:msgLength], uint32(msgLength)) // unkeyed hash - - md := computeHash(msg[:msgLength], hashSize) - h.Write(md) - - generateSequence(key[:], uint32(hashSize)) // keyed hash - md = computeMAC(msg[:msgLength], hashSize, key[:hashSize]) - h.Write(md) - } - } - - sum := h.Sum(nil) - expected := [32]byte{ - 0xc2, 0x3a, 0x78, 0x00, 0xd9, 0x81, 0x23, 0xbd, - 0x10, 0xf5, 0x06, 0xc6, 0x1e, 0x29, 0xda, 0x56, - 0x03, 0xd7, 0x63, 0xb8, 0xbb, 0xad, 0x2e, 0x73, - 0x7f, 0x5e, 0x76, 0x5a, 0x7b, 0xcc, 0xd4, 0x75, - } - if !bytes.Equal(sum, expected[:]) { - t.Fatalf("got %x, wanted %x", sum, expected) - } -} - -// Benchmarks - -func benchmarkSum(b *testing.B, size int) { - data := make([]byte, size) - b.SetBytes(int64(size)) - b.ResetTimer() - for i := 0; i < b.N; i++ { - Sum512(data) - } -} - -func benchmarkWrite(b *testing.B, size int) { - data := make([]byte, size) - h, _ := New512(nil) - b.SetBytes(int64(size)) - b.ResetTimer() - for i := 0; i < b.N; i++ { - h.Write(data) - } -} - -func BenchmarkWrite128(b *testing.B) { benchmarkWrite(b, 128) } -func BenchmarkWrite1K(b *testing.B) { benchmarkWrite(b, 1024) } - -func BenchmarkSum128(b *testing.B) { benchmarkSum(b, 128) } -func BenchmarkSum1K(b *testing.B) { benchmarkSum(b, 1024) } - -// These values were taken from https://blake2.net/blake2b-test.txt. -var hashes = []string{ - "10ebb67700b1868efb4417987acf4690ae9d972fb7a590c2f02871799aaa4786b5e996e8f0f4eb981fc214b005f42d2ff4233499391653df7aefcbc13fc51568", - "961f6dd1e4dd30f63901690c512e78e4b45e4742ed197c3c5e45c549fd25f2e4187b0bc9fe30492b16b0d0bc4ef9b0f34c7003fac09a5ef1532e69430234cebd", - "da2cfbe2d8409a0f38026113884f84b50156371ae304c4430173d08a99d9fb1b983164a3770706d537f49e0c916d9f32b95cc37a95b99d857436f0232c88a965", - "33d0825dddf7ada99b0e7e307104ad07ca9cfd9692214f1561356315e784f3e5a17e364ae9dbb14cb2036df932b77f4b292761365fb328de7afdc6d8998f5fc1", - "beaa5a3d08f3807143cf621d95cd690514d0b49efff9c91d24b59241ec0eefa5f60196d407048bba8d2146828ebcb0488d8842fd56bb4f6df8e19c4b4daab8ac", - "098084b51fd13deae5f4320de94a688ee07baea2800486689a8636117b46c1f4c1f6af7f74ae7c857600456a58a3af251dc4723a64cc7c0a5ab6d9cac91c20bb", - "6044540d560853eb1c57df0077dd381094781cdb9073e5b1b3d3f6c7829e12066bbaca96d989a690de72ca3133a83652ba284a6d62942b271ffa2620c9e75b1f", - "7a8cfe9b90f75f7ecb3acc053aaed6193112b6f6a4aeeb3f65d3de541942deb9e2228152a3c4bbbe72fc3b12629528cfbb09fe630f0474339f54abf453e2ed52", - "380beaf6ea7cc9365e270ef0e6f3a64fb902acae51dd5512f84259ad2c91f4bc4108db73192a5bbfb0cbcf71e46c3e21aee1c5e860dc96e8eb0b7b8426e6abe9", - "60fe3c4535e1b59d9a61ea8500bfac41a69dffb1ceadd9aca323e9a625b64da5763bad7226da02b9c8c4f1a5de140ac5a6c1124e4f718ce0b28ea47393aa6637", - "4fe181f54ad63a2983feaaf77d1e7235c2beb17fa328b6d9505bda327df19fc37f02c4b6f0368ce23147313a8e5738b5fa2a95b29de1c7f8264eb77b69f585cd", - "f228773ce3f3a42b5f144d63237a72d99693adb8837d0e112a8a0f8ffff2c362857ac49c11ec740d1500749dac9b1f4548108bf3155794dcc9e4082849e2b85b", - "962452a8455cc56c8511317e3b1f3b2c37df75f588e94325fdd77070359cf63a9ae6e930936fdf8e1e08ffca440cfb72c28f06d89a2151d1c46cd5b268ef8563", - "43d44bfa18768c59896bf7ed1765cb2d14af8c260266039099b25a603e4ddc5039d6ef3a91847d1088d401c0c7e847781a8a590d33a3c6cb4df0fab1c2f22355", - "dcffa9d58c2a4ca2cdbb0c7aa4c4c1d45165190089f4e983bb1c2cab4aaeff1fa2b5ee516fecd780540240bf37e56c8bcca7fab980e1e61c9400d8a9a5b14ac6", - "6fbf31b45ab0c0b8dad1c0f5f4061379912dde5aa922099a030b725c73346c524291adef89d2f6fd8dfcda6d07dad811a9314536c2915ed45da34947e83de34e", - "a0c65bddde8adef57282b04b11e7bc8aab105b99231b750c021f4a735cb1bcfab87553bba3abb0c3e64a0b6955285185a0bd35fb8cfde557329bebb1f629ee93", - "f99d815550558e81eca2f96718aed10d86f3f1cfb675cce06b0eff02f617c5a42c5aa760270f2679da2677c5aeb94f1142277f21c7f79f3c4f0cce4ed8ee62b1", - "95391da8fc7b917a2044b3d6f5374e1ca072b41454d572c7356c05fd4bc1e0f40b8bb8b4a9f6bce9be2c4623c399b0dca0dab05cb7281b71a21b0ebcd9e55670", - "04b9cd3d20d221c09ac86913d3dc63041989a9a1e694f1e639a3ba7e451840f750c2fc191d56ad61f2e7936bc0ac8e094b60caeed878c18799045402d61ceaf9", - "ec0e0ef707e4ed6c0c66f9e089e4954b058030d2dd86398fe84059631f9ee591d9d77375355149178c0cf8f8e7c49ed2a5e4f95488a2247067c208510fadc44c", - "9a37cce273b79c09913677510eaf7688e89b3314d3532fd2764c39de022a2945b5710d13517af8ddc0316624e73bec1ce67df15228302036f330ab0cb4d218dd", - "4cf9bb8fb3d4de8b38b2f262d3c40f46dfe747e8fc0a414c193d9fcf753106ce47a18f172f12e8a2f1c26726545358e5ee28c9e2213a8787aafbc516d2343152", - "64e0c63af9c808fd893137129867fd91939d53f2af04be4fa268006100069b2d69daa5c5d8ed7fddcb2a70eeecdf2b105dd46a1e3b7311728f639ab489326bc9", - "5e9c93158d659b2def06b0c3c7565045542662d6eee8a96a89b78ade09fe8b3dcc096d4fe48815d88d8f82620156602af541955e1f6ca30dce14e254c326b88f", - "7775dff889458dd11aef417276853e21335eb88e4dec9cfb4e9edb49820088551a2ca60339f12066101169f0dfe84b098fddb148d9da6b3d613df263889ad64b", - "f0d2805afbb91f743951351a6d024f9353a23c7ce1fc2b051b3a8b968c233f46f50f806ecb1568ffaa0b60661e334b21dde04f8fa155ac740eeb42e20b60d764", - "86a2af316e7d7754201b942e275364ac12ea8962ab5bd8d7fb276dc5fbffc8f9a28cae4e4867df6780d9b72524160927c855da5b6078e0b554aa91e31cb9ca1d", - "10bdf0caa0802705e706369baf8a3f79d72c0a03a80675a7bbb00be3a45e516424d1ee88efb56f6d5777545ae6e27765c3a8f5e493fc308915638933a1dfee55", - "b01781092b1748459e2e4ec178696627bf4ebafebba774ecf018b79a68aeb84917bf0b84bb79d17b743151144cd66b7b33a4b9e52c76c4e112050ff5385b7f0b", - "c6dbc61dec6eaeac81e3d5f755203c8e220551534a0b2fd105a91889945a638550204f44093dd998c076205dffad703a0e5cd3c7f438a7e634cd59fededb539e", - "eba51acffb4cea31db4b8d87e9bf7dd48fe97b0253ae67aa580f9ac4a9d941f2bea518ee286818cc9f633f2a3b9fb68e594b48cdd6d515bf1d52ba6c85a203a7", - "86221f3ada52037b72224f105d7999231c5e5534d03da9d9c0a12acb68460cd375daf8e24386286f9668f72326dbf99ba094392437d398e95bb8161d717f8991", - "5595e05c13a7ec4dc8f41fb70cb50a71bce17c024ff6de7af618d0cc4e9c32d9570d6d3ea45b86525491030c0d8f2b1836d5778c1ce735c17707df364d054347", - "ce0f4f6aca89590a37fe034dd74dd5fa65eb1cbd0a41508aaddc09351a3cea6d18cb2189c54b700c009f4cbf0521c7ea01be61c5ae09cb54f27bc1b44d658c82", - "7ee80b06a215a3bca970c77cda8761822bc103d44fa4b33f4d07dcb997e36d55298bceae12241b3fa07fa63be5576068da387b8d5859aeab701369848b176d42", - "940a84b6a84d109aab208c024c6ce9647676ba0aaa11f86dbb7018f9fd2220a6d901a9027f9abcf935372727cbf09ebd61a2a2eeb87653e8ecad1bab85dc8327", - "2020b78264a82d9f4151141adba8d44bf20c5ec062eee9b595a11f9e84901bf148f298e0c9f8777dcdbc7cc4670aac356cc2ad8ccb1629f16f6a76bcefbee760", - "d1b897b0e075ba68ab572adf9d9c436663e43eb3d8e62d92fc49c9be214e6f27873fe215a65170e6bea902408a25b49506f47babd07cecf7113ec10c5dd31252", - "b14d0c62abfa469a357177e594c10c194243ed2025ab8aa5ad2fa41ad318e0ff48cd5e60bec07b13634a711d2326e488a985f31e31153399e73088efc86a5c55", - "4169c5cc808d2697dc2a82430dc23e3cd356dc70a94566810502b8d655b39abf9e7f902fe717e0389219859e1945df1af6ada42e4ccda55a197b7100a30c30a1", - "258a4edb113d66c839c8b1c91f15f35ade609f11cd7f8681a4045b9fef7b0b24c82cda06a5f2067b368825e3914e53d6948ede92efd6e8387fa2e537239b5bee", - "79d2d8696d30f30fb34657761171a11e6c3f1e64cbe7bebee159cb95bfaf812b4f411e2f26d9c421dc2c284a3342d823ec293849e42d1e46b0a4ac1e3c86abaa", - "8b9436010dc5dee992ae38aea97f2cd63b946d94fedd2ec9671dcde3bd4ce9564d555c66c15bb2b900df72edb6b891ebcadfeff63c9ea4036a998be7973981e7", - "c8f68e696ed28242bf997f5b3b34959508e42d613810f1e2a435c96ed2ff560c7022f361a9234b9837feee90bf47922ee0fd5f8ddf823718d86d1e16c6090071", - "b02d3eee4860d5868b2c39ce39bfe81011290564dd678c85e8783f29302dfc1399ba95b6b53cd9ebbf400cca1db0ab67e19a325f2d115812d25d00978ad1bca4", - "7693ea73af3ac4dad21ca0d8da85b3118a7d1c6024cfaf557699868217bc0c2f44a199bc6c0edd519798ba05bd5b1b4484346a47c2cadf6bf30b785cc88b2baf", - "a0e5c1c0031c02e48b7f09a5e896ee9aef2f17fc9e18e997d7f6cac7ae316422c2b1e77984e5f3a73cb45deed5d3f84600105e6ee38f2d090c7d0442ea34c46d", - "41daa6adcfdb69f1440c37b596440165c15ada596813e2e22f060fcd551f24dee8e04ba6890387886ceec4a7a0d7fc6b44506392ec3822c0d8c1acfc7d5aebe8", - "14d4d40d5984d84c5cf7523b7798b254e275a3a8cc0a1bd06ebc0bee726856acc3cbf516ff667cda2058ad5c3412254460a82c92187041363cc77a4dc215e487", - "d0e7a1e2b9a447fee83e2277e9ff8010c2f375ae12fa7aaa8ca5a6317868a26a367a0b69fbc1cf32a55d34eb370663016f3d2110230eba754028a56f54acf57c", - "e771aa8db5a3e043e8178f39a0857ba04a3f18e4aa05743cf8d222b0b095825350ba422f63382a23d92e4149074e816a36c1cd28284d146267940b31f8818ea2", - "feb4fd6f9e87a56bef398b3284d2bda5b5b0e166583a66b61e538457ff0584872c21a32962b9928ffab58de4af2edd4e15d8b35570523207ff4e2a5aa7754caa", - "462f17bf005fb1c1b9e671779f665209ec2873e3e411f98dabf240a1d5ec3f95ce6796b6fc23fe171903b502023467dec7273ff74879b92967a2a43a5a183d33", - "d3338193b64553dbd38d144bea71c5915bb110e2d88180dbc5db364fd6171df317fc7268831b5aef75e4342b2fad8797ba39eddcef80e6ec08159350b1ad696d", - "e1590d585a3d39f7cb599abd479070966409a6846d4377acf4471d065d5db94129cc9be92573b05ed226be1e9b7cb0cabe87918589f80dadd4ef5ef25a93d28e", - "f8f3726ac5a26cc80132493a6fedcb0e60760c09cfc84cad178175986819665e76842d7b9fedf76dddebf5d3f56faaad4477587af21606d396ae570d8e719af2", - "30186055c07949948183c850e9a756cc09937e247d9d928e869e20bafc3cd9721719d34e04a0899b92c736084550186886efba2e790d8be6ebf040b209c439a4", - "f3c4276cb863637712c241c444c5cc1e3554e0fddb174d035819dd83eb700b4ce88df3ab3841ba02085e1a99b4e17310c5341075c0458ba376c95a6818fbb3e2", - "0aa007c4dd9d5832393040a1583c930bca7dc5e77ea53add7e2b3f7c8e231368043520d4a3ef53c969b6bbfd025946f632bd7f765d53c21003b8f983f75e2a6a", - "08e9464720533b23a04ec24f7ae8c103145f765387d738777d3d343477fd1c58db052142cab754ea674378e18766c53542f71970171cc4f81694246b717d7564", - "d37ff7ad297993e7ec21e0f1b4b5ae719cdc83c5db687527f27516cbffa822888a6810ee5c1ca7bfe3321119be1ab7bfa0a502671c8329494df7ad6f522d440f", - "dd9042f6e464dcf86b1262f6accfafbd8cfd902ed3ed89abf78ffa482dbdeeb6969842394c9a1168ae3d481a017842f660002d42447c6b22f7b72f21aae021c9", - "bd965bf31e87d70327536f2a341cebc4768eca275fa05ef98f7f1b71a0351298de006fba73fe6733ed01d75801b4a928e54231b38e38c562b2e33ea1284992fa", - "65676d800617972fbd87e4b9514e1c67402b7a331096d3bfac22f1abb95374abc942f16e9ab0ead33b87c91968a6e509e119ff07787b3ef483e1dcdccf6e3022", - "939fa189699c5d2c81ddd1ffc1fa207c970b6a3685bb29ce1d3e99d42f2f7442da53e95a72907314f4588399a3ff5b0a92beb3f6be2694f9f86ecf2952d5b41c", - "c516541701863f91005f314108ceece3c643e04fc8c42fd2ff556220e616aaa6a48aeb97a84bad74782e8dff96a1a2fa949339d722edcaa32b57067041df88cc", - "987fd6e0d6857c553eaebb3d34970a2c2f6e89a3548f492521722b80a1c21a153892346d2cba6444212d56da9a26e324dccbc0dcde85d4d2ee4399eec5a64e8f", - "ae56deb1c2328d9c4017706bce6e99d41349053ba9d336d677c4c27d9fd50ae6aee17e853154e1f4fe7672346da2eaa31eea53fcf24a22804f11d03da6abfc2b", - "49d6a608c9bde4491870498572ac31aac3fa40938b38a7818f72383eb040ad39532bc06571e13d767e6945ab77c0bdc3b0284253343f9f6c1244ebf2ff0df866", - "da582ad8c5370b4469af862aa6467a2293b2b28bd80ae0e91f425ad3d47249fdf98825cc86f14028c3308c9804c78bfeeeee461444ce243687e1a50522456a1d", - "d5266aa3331194aef852eed86d7b5b2633a0af1c735906f2e13279f14931a9fc3b0eac5ce9245273bd1aa92905abe16278ef7efd47694789a7283b77da3c70f8", - "2962734c28252186a9a1111c732ad4de4506d4b4480916303eb7991d659ccda07a9911914bc75c418ab7a4541757ad054796e26797feaf36e9f6ad43f14b35a4", - "e8b79ec5d06e111bdfafd71e9f5760f00ac8ac5d8bf768f9ff6f08b8f026096b1cc3a4c973333019f1e3553e77da3f98cb9f542e0a90e5f8a940cc58e59844b3", - "dfb320c44f9d41d1efdcc015f08dd5539e526e39c87d509ae6812a969e5431bf4fa7d91ffd03b981e0d544cf72d7b1c0374f8801482e6dea2ef903877eba675e", - "d88675118fdb55a5fb365ac2af1d217bf526ce1ee9c94b2f0090b2c58a06ca58187d7fe57c7bed9d26fca067b4110eefcd9a0a345de872abe20de368001b0745", - "b893f2fc41f7b0dd6e2f6aa2e0370c0cff7df09e3acfcc0e920b6e6fad0ef747c40668417d342b80d2351e8c175f20897a062e9765e6c67b539b6ba8b9170545", - "6c67ec5697accd235c59b486d7b70baeedcbd4aa64ebd4eef3c7eac189561a726250aec4d48cadcafbbe2ce3c16ce2d691a8cce06e8879556d4483ed7165c063", - "f1aa2b044f8f0c638a3f362e677b5d891d6fd2ab0765f6ee1e4987de057ead357883d9b405b9d609eea1b869d97fb16d9b51017c553f3b93c0a1e0f1296fedcd", - "cbaa259572d4aebfc1917acddc582b9f8dfaa928a198ca7acd0f2aa76a134a90252e6298a65b08186a350d5b7626699f8cb721a3ea5921b753ae3a2dce24ba3a", - "fa1549c9796cd4d303dcf452c1fbd5744fd9b9b47003d920b92de34839d07ef2a29ded68f6fc9e6c45e071a2e48bd50c5084e96b657dd0404045a1ddefe282ed", - "5cf2ac897ab444dcb5c8d87c495dbdb34e1838b6b629427caa51702ad0f9688525f13bec503a3c3a2c80a65e0b5715e8afab00ffa56ec455a49a1ad30aa24fcd", - "9aaf80207bace17bb7ab145757d5696bde32406ef22b44292ef65d4519c3bb2ad41a59b62cc3e94b6fa96d32a7faadae28af7d35097219aa3fd8cda31e40c275", - "af88b163402c86745cb650c2988fb95211b94b03ef290eed9662034241fd51cf398f8073e369354c43eae1052f9b63b08191caa138aa54fea889cc7024236897", - "48fa7d64e1ceee27b9864db5ada4b53d00c9bc7626555813d3cd6730ab3cc06ff342d727905e33171bde6e8476e77fb1720861e94b73a2c538d254746285f430", - "0e6fd97a85e904f87bfe85bbeb34f69e1f18105cf4ed4f87aec36c6e8b5f68bd2a6f3dc8a9ecb2b61db4eedb6b2ea10bf9cb0251fb0f8b344abf7f366b6de5ab", - "06622da5787176287fdc8fed440bad187d830099c94e6d04c8e9c954cda70c8bb9e1fc4a6d0baa831b9b78ef6648681a4867a11da93ee36e5e6a37d87fc63f6f", - "1da6772b58fabf9c61f68d412c82f182c0236d7d575ef0b58dd22458d643cd1dfc93b03871c316d8430d312995d4197f0874c99172ba004a01ee295abac24e46", - "3cd2d9320b7b1d5fb9aab951a76023fa667be14a9124e394513918a3f44096ae4904ba0ffc150b63bc7ab1eeb9a6e257e5c8f000a70394a5afd842715de15f29", - "04cdc14f7434e0b4be70cb41db4c779a88eaef6accebcb41f2d42fffe7f32a8e281b5c103a27021d0d08362250753cdf70292195a53a48728ceb5844c2d98bab", - "9071b7a8a075d0095b8fb3ae5113785735ab98e2b52faf91d5b89e44aac5b5d4ebbf91223b0ff4c71905da55342e64655d6ef8c89a4768c3f93a6dc0366b5bc8", - "ebb30240dd96c7bc8d0abe49aa4edcbb4afdc51ff9aaf720d3f9e7fbb0f9c6d6571350501769fc4ebd0b2141247ff400d4fd4be414edf37757bb90a32ac5c65a", - "8532c58bf3c8015d9d1cbe00eef1f5082f8f3632fbe9f1ed4f9dfb1fa79e8283066d77c44c4af943d76b300364aecbd0648c8a8939bd204123f4b56260422dec", - "fe9846d64f7c7708696f840e2d76cb4408b6595c2f81ec6a28a7f2f20cb88cfe6ac0b9e9b8244f08bd7095c350c1d0842f64fb01bb7f532dfcd47371b0aeeb79", - "28f17ea6fb6c42092dc264257e29746321fb5bdaea9873c2a7fa9d8f53818e899e161bc77dfe8090afd82bf2266c5c1bc930a8d1547624439e662ef695f26f24", - "ec6b7d7f030d4850acae3cb615c21dd25206d63e84d1db8d957370737ba0e98467ea0ce274c66199901eaec18a08525715f53bfdb0aacb613d342ebdceeddc3b", - "b403d3691c03b0d3418df327d5860d34bbfcc4519bfbce36bf33b208385fadb9186bc78a76c489d89fd57e7dc75412d23bcd1dae8470ce9274754bb8585b13c5", - "31fc79738b8772b3f55cd8178813b3b52d0db5a419d30ba9495c4b9da0219fac6df8e7c23a811551a62b827f256ecdb8124ac8a6792ccfecc3b3012722e94463", - "bb2039ec287091bcc9642fc90049e73732e02e577e2862b32216ae9bedcd730c4c284ef3968c368b7d37584f97bd4b4dc6ef6127acfe2e6ae2509124e66c8af4", - "f53d68d13f45edfcb9bd415e2831e938350d5380d3432278fc1c0c381fcb7c65c82dafe051d8c8b0d44e0974a0e59ec7bf7ed0459f86e96f329fc79752510fd3", - "8d568c7984f0ecdf7640fbc483b5d8c9f86634f6f43291841b309a350ab9c1137d24066b09da9944bac54d5bb6580d836047aac74ab724b887ebf93d4b32eca9", - "c0b65ce5a96ff774c456cac3b5f2c4cd359b4ff53ef93a3da0778be4900d1e8da1601e769e8f1b02d2a2f8c5b9fa10b44f1c186985468feeb008730283a6657d", - "4900bba6f5fb103ece8ec96ada13a5c3c85488e05551da6b6b33d988e611ec0fe2e3c2aa48ea6ae8986a3a231b223c5d27cec2eadde91ce07981ee652862d1e4", - "c7f5c37c7285f927f76443414d4357ff789647d7a005a5a787e03c346b57f49f21b64fa9cf4b7e45573e23049017567121a9c3d4b2b73ec5e9413577525db45a", - "ec7096330736fdb2d64b5653e7475da746c23a4613a82687a28062d3236364284ac01720ffb406cfe265c0df626a188c9e5963ace5d3d5bb363e32c38c2190a6", - "82e744c75f4649ec52b80771a77d475a3bc091989556960e276a5f9ead92a03f718742cdcfeaee5cb85c44af198adc43a4a428f5f0c2ddb0be36059f06d7df73", - "2834b7a7170f1f5b68559ab78c1050ec21c919740b784a9072f6e5d69f828d70c919c5039fb148e39e2c8a52118378b064ca8d5001cd10a5478387b966715ed6", - "16b4ada883f72f853bb7ef253efcab0c3e2161687ad61543a0d2824f91c1f81347d86be709b16996e17f2dd486927b0288ad38d13063c4a9672c39397d3789b6", - "78d048f3a69d8b54ae0ed63a573ae350d89f7c6cf1f3688930de899afa037697629b314e5cd303aa62feea72a25bf42b304b6c6bcb27fae21c16d925e1fbdac3", - "0f746a48749287ada77a82961f05a4da4abdb7d77b1220f836d09ec814359c0ec0239b8c7b9ff9e02f569d1b301ef67c4612d1de4f730f81c12c40cc063c5caa", - "f0fc859d3bd195fbdc2d591e4cdac15179ec0f1dc821c11df1f0c1d26e6260aaa65b79fafacafd7d3ad61e600f250905f5878c87452897647a35b995bcadc3a3", - "2620f687e8625f6a412460b42e2cef67634208ce10a0cbd4dff7044a41b7880077e9f8dc3b8d1216d3376a21e015b58fb279b521d83f9388c7382c8505590b9b", - "227e3aed8d2cb10b918fcb04f9de3e6d0a57e08476d93759cd7b2ed54a1cbf0239c528fb04bbf288253e601d3bc38b21794afef90b17094a182cac557745e75f", - "1a929901b09c25f27d6b35be7b2f1c4745131fdebca7f3e2451926720434e0db6e74fd693ad29b777dc3355c592a361c4873b01133a57c2e3b7075cbdb86f4fc", - "5fd7968bc2fe34f220b5e3dc5af9571742d73b7d60819f2888b629072b96a9d8ab2d91b82d0a9aaba61bbd39958132fcc4257023d1eca591b3054e2dc81c8200", - "dfcce8cf32870cc6a503eadafc87fd6f78918b9b4d0737db6810be996b5497e7e5cc80e312f61e71ff3e9624436073156403f735f56b0b01845c18f6caf772e6", - "02f7ef3a9ce0fff960f67032b296efca3061f4934d690749f2d01c35c81c14f39a67fa350bc8a0359bf1724bffc3bca6d7c7bba4791fd522a3ad353c02ec5aa8", - "64be5c6aba65d594844ae78bb022e5bebe127fd6b6ffa5a13703855ab63b624dcd1a363f99203f632ec386f3ea767fc992e8ed9686586aa27555a8599d5b808f", - "f78585505c4eaa54a8b5be70a61e735e0ff97af944ddb3001e35d86c4e2199d976104b6ae31750a36a726ed285064f5981b503889fef822fcdc2898dddb7889a", - "e4b5566033869572edfd87479a5bb73c80e8759b91232879d96b1dda36c012076ee5a2ed7ae2de63ef8406a06aea82c188031b560beafb583fb3de9e57952a7e", - "e1b3e7ed867f6c9484a2a97f7715f25e25294e992e41f6a7c161ffc2adc6daaeb7113102d5e6090287fe6ad94ce5d6b739c6ca240b05c76fb73f25dd024bf935", - "85fd085fdc12a080983df07bd7012b0d402a0f4043fcb2775adf0bad174f9b08d1676e476985785c0a5dcc41dbff6d95ef4d66a3fbdc4a74b82ba52da0512b74", - "aed8fa764b0fbff821e05233d2f7b0900ec44d826f95e93c343c1bc3ba5a24374b1d616e7e7aba453a0ada5e4fab5382409e0d42ce9c2bc7fb39a99c340c20f0", - "7ba3b2e297233522eeb343bd3ebcfd835a04007735e87f0ca300cbee6d416565162171581e4020ff4cf176450f1291ea2285cb9ebffe4c56660627685145051c", - "de748bcf89ec88084721e16b85f30adb1a6134d664b5843569babc5bbd1a15ca9b61803c901a4fef32965a1749c9f3a4e243e173939dc5a8dc495c671ab52145", - "aaf4d2bdf200a919706d9842dce16c98140d34bc433df320aba9bd429e549aa7a3397652a4d768277786cf993cde2338673ed2e6b66c961fefb82cd20c93338f", - "c408218968b788bf864f0997e6bc4c3dba68b276e2125a4843296052ff93bf5767b8cdce7131f0876430c1165fec6c4f47adaa4fd8bcfacef463b5d3d0fa61a0", - "76d2d819c92bce55fa8e092ab1bf9b9eab237a25267986cacf2b8ee14d214d730dc9a5aa2d7b596e86a1fd8fa0804c77402d2fcd45083688b218b1cdfa0dcbcb", - "72065ee4dd91c2d8509fa1fc28a37c7fc9fa7d5b3f8ad3d0d7a25626b57b1b44788d4caf806290425f9890a3a2a35a905ab4b37acfd0da6e4517b2525c9651e4", - "64475dfe7600d7171bea0b394e27c9b00d8e74dd1e416a79473682ad3dfdbb706631558055cfc8a40e07bd015a4540dcdea15883cbbf31412df1de1cd4152b91", - "12cd1674a4488a5d7c2b3160d2e2c4b58371bedad793418d6f19c6ee385d70b3e06739369d4df910edb0b0a54cbff43d54544cd37ab3a06cfa0a3ddac8b66c89", - "60756966479dedc6dd4bcff8ea7d1d4ce4d4af2e7b097e32e3763518441147cc12b3c0ee6d2ecabf1198cec92e86a3616fba4f4e872f5825330adbb4c1dee444", - "a7803bcb71bc1d0f4383dde1e0612e04f872b715ad30815c2249cf34abb8b024915cb2fc9f4e7cc4c8cfd45be2d5a91eab0941c7d270e2da4ca4a9f7ac68663a", - "b84ef6a7229a34a750d9a98ee2529871816b87fbe3bc45b45fa5ae82d5141540211165c3c5d7a7476ba5a4aa06d66476f0d9dc49a3f1ee72c3acabd498967414", - "fae4b6d8efc3f8c8e64d001dabec3a21f544e82714745251b2b4b393f2f43e0da3d403c64db95a2cb6e23ebb7b9e94cdd5ddac54f07c4a61bd3cb10aa6f93b49", - "34f7286605a122369540141ded79b8957255da2d4155abbf5a8dbb89c8eb7ede8eeef1daa46dc29d751d045dc3b1d658bb64b80ff8589eddb3824b13da235a6b", - "3b3b48434be27b9eababba43bf6b35f14b30f6a88dc2e750c358470d6b3aa3c18e47db4017fa55106d8252f016371a00f5f8b070b74ba5f23cffc5511c9f09f0", - "ba289ebd6562c48c3e10a8ad6ce02e73433d1e93d7c9279d4d60a7e879ee11f441a000f48ed9f7c4ed87a45136d7dccdca482109c78a51062b3ba4044ada2469", - "022939e2386c5a37049856c850a2bb10a13dfea4212b4c732a8840a9ffa5faf54875c5448816b2785a007da8a8d2bc7d71a54e4e6571f10b600cbdb25d13ede3", - "e6fec19d89ce8717b1a087024670fe026f6c7cbda11caef959bb2d351bf856f8055d1c0ebdaaa9d1b17886fc2c562b5e99642fc064710c0d3488a02b5ed7f6fd", - "94c96f02a8f576aca32ba61c2b206f907285d9299b83ac175c209a8d43d53bfe683dd1d83e7549cb906c28f59ab7c46f8751366a28c39dd5fe2693c9019666c8", - "31a0cd215ebd2cb61de5b9edc91e6195e31c59a5648d5c9f737e125b2605708f2e325ab3381c8dce1a3e958886f1ecdc60318f882cfe20a24191352e617b0f21", - "91ab504a522dce78779f4c6c6ba2e6b6db5565c76d3e7e7c920caf7f757ef9db7c8fcf10e57f03379ea9bf75eb59895d96e149800b6aae01db778bb90afbc989", - "d85cabc6bd5b1a01a5afd8c6734740da9fd1c1acc6db29bfc8a2e5b668b028b6b3154bfb8703fa3180251d589ad38040ceb707c4bad1b5343cb426b61eaa49c1", - "d62efbec2ca9c1f8bd66ce8b3f6a898cb3f7566ba6568c618ad1feb2b65b76c3ce1dd20f7395372faf28427f61c9278049cf0140df434f5633048c86b81e0399", - "7c8fdc6175439e2c3db15bafa7fb06143a6a23bc90f449e79deef73c3d492a671715c193b6fea9f036050b946069856b897e08c00768f5ee5ddcf70b7cd6d0e0", - "58602ee7468e6bc9df21bd51b23c005f72d6cb013f0a1b48cbec5eca299299f97f09f54a9a01483eaeb315a6478bad37ba47ca1347c7c8fc9e6695592c91d723", - "27f5b79ed256b050993d793496edf4807c1d85a7b0a67c9c4fa99860750b0ae66989670a8ffd7856d7ce411599e58c4d77b232a62bef64d15275be46a68235ff", - "3957a976b9f1887bf004a8dca942c92d2b37ea52600f25e0c9bc5707d0279c00c6e85a839b0d2d8eb59c51d94788ebe62474a791cadf52cccf20f5070b6573fc", - "eaa2376d55380bf772ecca9cb0aa4668c95c707162fa86d518c8ce0ca9bf7362b9f2a0adc3ff59922df921b94567e81e452f6c1a07fc817cebe99604b3505d38", - "c1e2c78b6b2734e2480ec550434cb5d613111adcc21d475545c3b1b7e6ff12444476e5c055132e2229dc0f807044bb919b1a5662dd38a9ee65e243a3911aed1a", - "8ab48713389dd0fcf9f965d3ce66b1e559a1f8c58741d67683cd971354f452e62d0207a65e436c5d5d8f8ee71c6abfe50e669004c302b31a7ea8311d4a916051", - "24ce0addaa4c65038bd1b1c0f1452a0b128777aabc94a29df2fd6c7e2f85f8ab9ac7eff516b0e0a825c84a24cfe492eaad0a6308e46dd42fe8333ab971bb30ca", - "5154f929ee03045b6b0c0004fa778edee1d139893267cc84825ad7b36c63de32798e4a166d24686561354f63b00709a1364b3c241de3febf0754045897467cd4", - "e74e907920fd87bd5ad636dd11085e50ee70459c443e1ce5809af2bc2eba39f9e6d7128e0e3712c316da06f4705d78a4838e28121d4344a2c79c5e0db307a677", - "bf91a22334bac20f3fd80663b3cd06c4e8802f30e6b59f90d3035cc9798a217ed5a31abbda7fa6842827bdf2a7a1c21f6fcfccbb54c6c52926f32da816269be1", - "d9d5c74be5121b0bd742f26bffb8c89f89171f3f934913492b0903c271bbe2b3395ef259669bef43b57f7fcc3027db01823f6baee66e4f9fead4d6726c741fce", - "50c8b8cf34cd879f80e2faab3230b0c0e1cc3e9dcadeb1b9d97ab923415dd9a1fe38addd5c11756c67990b256e95ad6d8f9fedce10bf1c90679cde0ecf1be347", - "0a386e7cd5dd9b77a035e09fe6fee2c8ce61b5383c87ea43205059c5e4cd4f4408319bb0a82360f6a58e6c9ce3f487c446063bf813bc6ba535e17fc1826cfc91", - "1f1459cb6b61cbac5f0efe8fc487538f42548987fcd56221cfa7beb22504769e792c45adfb1d6b3d60d7b749c8a75b0bdf14e8ea721b95dca538ca6e25711209", - "e58b3836b7d8fedbb50ca5725c6571e74c0785e97821dab8b6298c10e4c079d4a6cdf22f0fedb55032925c16748115f01a105e77e00cee3d07924dc0d8f90659", - "b929cc6505f020158672deda56d0db081a2ee34c00c1100029bdf8ea98034fa4bf3e8655ec697fe36f40553c5bb46801644a627d3342f4fc92b61f03290fb381", - "72d353994b49d3e03153929a1e4d4f188ee58ab9e72ee8e512f29bc773913819ce057ddd7002c0433ee0a16114e3d156dd2c4a7e80ee53378b8670f23e33ef56", - "c70ef9bfd775d408176737a0736d68517ce1aaad7e81a93c8c1ed967ea214f56c8a377b1763e676615b60f3988241eae6eab9685a5124929d28188f29eab06f7", - "c230f0802679cb33822ef8b3b21bf7a9a28942092901d7dac3760300831026cf354c9232df3e084d9903130c601f63c1f4a4a4b8106e468cd443bbe5a734f45f", - "6f43094cafb5ebf1f7a4937ec50f56a4c9da303cbb55ac1f27f1f1976cd96beda9464f0e7b9c54620b8a9fba983164b8be3578425a024f5fe199c36356b88972", - "3745273f4c38225db2337381871a0c6aafd3af9b018c88aa02025850a5dc3a42a1a3e03e56cbf1b0876d63a441f1d2856a39b8801eb5af325201c415d65e97fe", - "c50c44cca3ec3edaae779a7e179450ebdda2f97067c690aa6c5a4ac7c30139bb27c0df4db3220e63cb110d64f37ffe078db72653e2daacf93ae3f0a2d1a7eb2e", - "8aef263e385cbc61e19b28914243262af5afe8726af3ce39a79c27028cf3ecd3f8d2dfd9cfc9ad91b58f6f20778fd5f02894a3d91c7d57d1e4b866a7f364b6be", - "28696141de6e2d9bcb3235578a66166c1448d3e905a1b482d423be4bc5369bc8c74dae0acc9cc123e1d8ddce9f97917e8c019c552da32d39d2219b9abf0fa8c8", - "2fb9eb2085830181903a9dafe3db428ee15be7662224efd643371fb25646aee716e531eca69b2bdc8233f1a8081fa43da1500302975a77f42fa592136710e9dc", - "66f9a7143f7a3314a669bf2e24bbb35014261d639f495b6c9c1f104fe8e320aca60d4550d69d52edbd5a3cdeb4014ae65b1d87aa770b69ae5c15f4330b0b0ad8", - "f4c4dd1d594c3565e3e25ca43dad82f62abea4835ed4cd811bcd975e46279828d44d4c62c3679f1b7f7b9dd4571d7b49557347b8c5460cbdc1bef690fb2a08c0", - "8f1dc9649c3a84551f8f6e91cac68242a43b1f8f328ee92280257387fa7559aa6db12e4aeadc2d26099178749c6864b357f3f83b2fb3efa8d2a8db056bed6bcc", - "3139c1a7f97afd1675d460ebbc07f2728aa150df849624511ee04b743ba0a833092f18c12dc91b4dd243f333402f59fe28abdbbbae301e7b659c7a26d5c0f979", - "06f94a2996158a819fe34c40de3cf0379fd9fb85b3e363ba3926a0e7d960e3f4c2e0c70c7ce0ccb2a64fc29869f6e7ab12bd4d3f14fce943279027e785fb5c29", - "c29c399ef3eee8961e87565c1ce263925fc3d0ce267d13e48dd9e732ee67b0f69fad56401b0f10fcaac119201046cca28c5b14abdea3212ae65562f7f138db3d", - "4cec4c9df52eef05c3f6faaa9791bc7445937183224ecc37a1e58d0132d35617531d7e795f52af7b1eb9d147de1292d345fe341823f8e6bc1e5badca5c656108", - "898bfbae93b3e18d00697eab7d9704fa36ec339d076131cefdf30edbe8d9cc81c3a80b129659b163a323bab9793d4feed92d54dae966c77529764a09be88db45", - "ee9bd0469d3aaf4f14035be48a2c3b84d9b4b1fff1d945e1f1c1d38980a951be197b25fe22c731f20aeacc930ba9c4a1f4762227617ad350fdabb4e80273a0f4", - "3d4d3113300581cd96acbf091c3d0f3c310138cd6979e6026cde623e2dd1b24d4a8638bed1073344783ad0649cc6305ccec04beb49f31c633088a99b65130267", - "95c0591ad91f921ac7be6d9ce37e0663ed8011c1cfd6d0162a5572e94368bac02024485e6a39854aa46fe38e97d6c6b1947cd272d86b06bb5b2f78b9b68d559d", - "227b79ded368153bf46c0a3ca978bfdbef31f3024a5665842468490b0ff748ae04e7832ed4c9f49de9b1706709d623e5c8c15e3caecae8d5e433430ff72f20eb", - "5d34f3952f0105eef88ae8b64c6ce95ebfade0e02c69b08762a8712d2e4911ad3f941fc4034dc9b2e479fdbcd279b902faf5d838bb2e0c6495d372b5b7029813", - "7f939bf8353abce49e77f14f3750af20b7b03902e1a1e7fb6aaf76d0259cd401a83190f15640e74f3e6c5a90e839c7821f6474757f75c7bf9002084ddc7a62dc", - "062b61a2f9a33a71d7d0a06119644c70b0716a504de7e5e1be49bd7b86e7ed6817714f9f0fc313d06129597e9a2235ec8521de36f7290a90ccfc1ffa6d0aee29", - "f29e01eeae64311eb7f1c6422f946bf7bea36379523e7b2bbaba7d1d34a22d5ea5f1c5a09d5ce1fe682cced9a4798d1a05b46cd72dff5c1b355440b2a2d476bc", - "ec38cd3bbab3ef35d7cb6d5c914298351d8a9dc97fcee051a8a02f58e3ed6184d0b7810a5615411ab1b95209c3c810114fdeb22452084e77f3f847c6dbaafe16", - "c2aef5e0ca43e82641565b8cb943aa8ba53550caef793b6532fafad94b816082f0113a3ea2f63608ab40437ecc0f0229cb8fa224dcf1c478a67d9b64162b92d1", - "15f534efff7105cd1c254d074e27d5898b89313b7d366dc2d7d87113fa7d53aae13f6dba487ad8103d5e854c91fdb6e1e74b2ef6d1431769c30767dde067a35c", - "89acbca0b169897a0a2714c2df8c95b5b79cb69390142b7d6018bb3e3076b099b79a964152a9d912b1b86412b7e372e9cecad7f25d4cbab8a317be36492a67d7", - "e3c0739190ed849c9c962fd9dbb55e207e624fcac1eb417691515499eea8d8267b7e8f1287a63633af5011fde8c4ddf55bfdf722edf88831414f2cfaed59cb9a", - "8d6cf87c08380d2d1506eee46fd4222d21d8c04e585fbfd08269c98f702833a156326a0724656400ee09351d57b440175e2a5de93cc5f80db6daf83576cf75fa", - "da24bede383666d563eeed37f6319baf20d5c75d1635a6ba5ef4cfa1ac95487e96f8c08af600aab87c986ebad49fc70a58b4890b9c876e091016daf49e1d322e", - "f9d1d1b1e87ea7ae753a029750cc1cf3d0157d41805e245c5617bb934e732f0ae3180b78e05bfe76c7c3051e3e3ac78b9b50c05142657e1e03215d6ec7bfd0fc", - "11b7bc1668032048aa43343de476395e814bbbc223678db951a1b03a021efac948cfbe215f97fe9a72a2f6bc039e3956bfa417c1a9f10d6d7ba5d3d32ff323e5", - "b8d9000e4fc2b066edb91afee8e7eb0f24e3a201db8b6793c0608581e628ed0bcc4e5aa6787992a4bcc44e288093e63ee83abd0bc3ec6d0934a674a4da13838a", - "ce325e294f9b6719d6b61278276ae06a2564c03bb0b783fafe785bdf89c7d5acd83e78756d301b445699024eaeb77b54d477336ec2a4f332f2b3f88765ddb0c3", - "29acc30e9603ae2fccf90bf97e6cc463ebe28c1b2f9b4b765e70537c25c702a29dcbfbf14c99c54345ba2b51f17b77b5f15db92bbad8fa95c471f5d070a137cc", - "3379cbaae562a87b4c0425550ffdd6bfe1203f0d666cc7ea095be407a5dfe61ee91441cd5154b3e53b4f5fb31ad4c7a9ad5c7af4ae679aa51a54003a54ca6b2d", - "3095a349d245708c7cf550118703d7302c27b60af5d4e67fc978f8a4e60953c7a04f92fcf41aee64321ccb707a895851552b1e37b00bc5e6b72fa5bcef9e3fff", - "07262d738b09321f4dbccec4bb26f48cb0f0ed246ce0b31b9a6e7bc683049f1f3e5545f28ce932dd985c5ab0f43bd6de0770560af329065ed2e49d34624c2cbb", - "b6405eca8ee3316c87061cc6ec18dba53e6c250c63ba1f3bae9e55dd3498036af08cd272aa24d713c6020d77ab2f3919af1a32f307420618ab97e73953994fb4", - "7ee682f63148ee45f6e5315da81e5c6e557c2c34641fc509c7a5701088c38a74756168e2cd8d351e88fd1a451f360a01f5b2580f9b5a2e8cfc138f3dd59a3ffc", - "1d263c179d6b268f6fa016f3a4f29e943891125ed8593c81256059f5a7b44af2dcb2030d175c00e62ecaf7ee96682aa07ab20a611024a28532b1c25b86657902", - "106d132cbdb4cd2597812846e2bc1bf732fec5f0a5f65dbb39ec4e6dc64ab2ce6d24630d0f15a805c3540025d84afa98e36703c3dbee713e72dde8465bc1be7e", - "0e79968226650667a8d862ea8da4891af56a4e3a8b6d1750e394f0dea76d640d85077bcec2cc86886e506751b4f6a5838f7f0b5fef765d9dc90dcdcbaf079f08", - "521156a82ab0c4e566e5844d5e31ad9aaf144bbd5a464fdca34dbd5717e8ff711d3ffebbfa085d67fe996a34f6d3e4e60b1396bf4b1610c263bdbb834d560816", - "1aba88befc55bc25efbce02db8b9933e46f57661baeabeb21cc2574d2a518a3cba5dc5a38e49713440b25f9c744e75f6b85c9d8f4681f676160f6105357b8406", - "5a9949fcb2c473cda968ac1b5d08566dc2d816d960f57e63b898fa701cf8ebd3f59b124d95bfbbedc5f1cf0e17d5eaed0c02c50b69d8a402cabcca4433b51fd4", - "b0cead09807c672af2eb2b0f06dde46cf5370e15a4096b1a7d7cbb36ec31c205fbefca00b7a4162fa89fb4fb3eb78d79770c23f44e7206664ce3cd931c291e5d", - "bb6664931ec97044e45b2ae420ae1c551a8874bc937d08e969399c3964ebdba8346cdd5d09caafe4c28ba7ec788191ceca65ddd6f95f18583e040d0f30d0364d", - "65bc770a5faa3792369803683e844b0be7ee96f29f6d6a35568006bd5590f9a4ef639b7a8061c7b0424b66b60ac34af3119905f33a9d8c3ae18382ca9b689900", - "ea9b4dca333336aaf839a45c6eaa48b8cb4c7ddabffea4f643d6357ea6628a480a5b45f2b052c1b07d1fedca918b6f1139d80f74c24510dcbaa4be70eacc1b06", - "e6342fb4a780ad975d0e24bce149989b91d360557e87994f6b457b895575cc02d0c15bad3ce7577f4c63927ff13f3e381ff7e72bdbe745324844a9d27e3f1c01", - "3e209c9b33e8e461178ab46b1c64b49a07fb745f1c8bc95fbfb94c6b87c69516651b264ef980937fad41238b91ddc011a5dd777c7efd4494b4b6ecd3a9c22ac0", - "fd6a3d5b1875d80486d6e69694a56dbb04a99a4d051f15db2689776ba1c4882e6d462a603b7015dc9f4b7450f05394303b8652cfb404a266962c41bae6e18a94", - "951e27517e6bad9e4195fc8671dee3e7e9be69cee1422cb9fecfce0dba875f7b310b93ee3a3d558f941f635f668ff832d2c1d033c5e2f0997e4c66f147344e02", - "8eba2f874f1ae84041903c7c4253c82292530fc8509550bfdc34c95c7e2889d5650b0ad8cb988e5c4894cb87fbfbb19612ea93ccc4c5cad17158b9763464b492", - "16f712eaa1b7c6354719a8e7dbdfaf55e4063a4d277d947550019b38dfb564830911057d50506136e2394c3b28945cc964967d54e3000c2181626cfb9b73efd2", - "c39639e7d5c7fb8cdd0fd3e6a52096039437122f21c78f1679cea9d78a734c56ecbeb28654b4f18e342c331f6f7229ec4b4bc281b2d80a6eb50043f31796c88c", - "72d081af99f8a173dcc9a0ac4eb3557405639a29084b54a40172912a2f8a395129d5536f0918e902f9e8fa6000995f4168ddc5f893011be6a0dbc9b8a1a3f5bb", - "c11aa81e5efd24d5fc27ee586cfd8847fbb0e27601ccece5ecca0198e3c7765393bb74457c7e7a27eb9170350e1fb53857177506be3e762cc0f14d8c3afe9077", - "c28f2150b452e6c0c424bcde6f8d72007f9310fed7f2f87de0dbb64f4479d6c1441ba66f44b2accee61609177ed340128b407ecec7c64bbe50d63d22d8627727", - "f63d88122877ec30b8c8b00d22e89000a966426112bd44166e2f525b769ccbe9b286d437a0129130dde1a86c43e04bedb594e671d98283afe64ce331de9828fd", - "348b0532880b88a6614a8d7408c3f913357fbb60e995c60205be9139e74998aede7f4581e42f6b52698f7fa1219708c14498067fd1e09502de83a77dd281150c", - "5133dc8bef725359dff59792d85eaf75b7e1dcd1978b01c35b1b85fcebc63388ad99a17b6346a217dc1a9622ebd122ecf6913c4d31a6b52a695b86af00d741a0", - "2753c4c0e98ecad806e88780ec27fccd0f5c1ab547f9e4bf1659d192c23aa2cc971b58b6802580baef8adc3b776ef7086b2545c2987f348ee3719cdef258c403", - "b1663573ce4b9d8caefc865012f3e39714b9898a5da6ce17c25a6a47931a9ddb9bbe98adaa553beed436e89578455416c2a52a525cf2862b8d1d49a2531b7391", - "64f58bd6bfc856f5e873b2a2956ea0eda0d6db0da39c8c7fc67c9f9feefcff3072cdf9e6ea37f69a44f0c61aa0da3693c2db5b54960c0281a088151db42b11e8", - "0764c7be28125d9065c4b98a69d60aede703547c66a12e17e1c618994132f5ef82482c1e3fe3146cc65376cc109f0138ed9a80e49f1f3c7d610d2f2432f20605", - "f748784398a2ff03ebeb07e155e66116a839741a336e32da71ec696001f0ad1b25cd48c69cfca7265eca1dd71904a0ce748ac4124f3571076dfa7116a9cf00e9", - "3f0dbc0186bceb6b785ba78d2a2a013c910be157bdaffae81bb6663b1a73722f7f1228795f3ecada87cf6ef0078474af73f31eca0cc200ed975b6893f761cb6d", - "d4762cd4599876ca75b2b8fe249944dbd27ace741fdab93616cbc6e425460feb51d4e7adcc38180e7fc47c89024a7f56191adb878dfde4ead62223f5a2610efe", - "cd36b3d5b4c91b90fcbba79513cfee1907d8645a162afd0cd4cf4192d4a5f4c892183a8eacdb2b6b6a9d9aa8c11ac1b261b380dbee24ca468f1bfd043c58eefe", - "98593452281661a53c48a9d8cd790826c1a1ce567738053d0bee4a91a3d5bd92eefdbabebe3204f2031ca5f781bda99ef5d8ae56e5b04a9e1ecd21b0eb05d3e1", - "771f57dd2775ccdab55921d3e8e30ccf484d61fe1c1b9c2ae819d0fb2a12fab9be70c4a7a138da84e8280435daade5bbe66af0836a154f817fb17f3397e725a3", - "c60897c6f828e21f16fbb5f15b323f87b6c8955eabf1d38061f707f608abdd993fac3070633e286cf8339ce295dd352df4b4b40b2f29da1dd50b3a05d079e6bb", - "8210cd2c2d3b135c2cf07fa0d1433cd771f325d075c6469d9c7f1ba0943cd4ab09808cabf4acb9ce5bb88b498929b4b847f681ad2c490d042db2aec94214b06b", - "1d4edfffd8fd80f7e4107840fa3aa31e32598491e4af7013c197a65b7f36dd3ac4b478456111cd4309d9243510782fa31b7c4c95fa951520d020eb7e5c36e4ef", - "af8e6e91fab46ce4873e1a50a8ef448cc29121f7f74deef34a71ef89cc00d9274bc6c2454bbb3230d8b2ec94c62b1dec85f3593bfa30ea6f7a44d7c09465a253", - "29fd384ed4906f2d13aa9fe7af905990938bed807f1832454a372ab412eea1f5625a1fcc9ac8343b7c67c5aba6e0b1cc4644654913692c6b39eb9187ceacd3ec", - "a268c7885d9874a51c44dffed8ea53e94f78456e0b2ed99ff5a3924760813826d960a15edbedbb5de5226ba4b074e71b05c55b9756bb79e55c02754c2c7b6c8a", - "0cf8545488d56a86817cd7ecb10f7116b7ea530a45b6ea497b6c72c997e09e3d0da8698f46bb006fc977c2cd3d1177463ac9057fdd1662c85d0c126443c10473", - "b39614268fdd8781515e2cfebf89b4d5402bab10c226e6344e6b9ae000fb0d6c79cb2f3ec80e80eaeb1980d2f8698916bd2e9f747236655116649cd3ca23a837", - "74bef092fc6f1e5dba3663a3fb003b2a5ba257496536d99f62b9d73f8f9eb3ce9ff3eec709eb883655ec9eb896b9128f2afc89cf7d1ab58a72f4a3bf034d2b4a", - "3a988d38d75611f3ef38b8774980b33e573b6c57bee0469ba5eed9b44f29945e7347967fba2c162e1c3be7f310f2f75ee2381e7bfd6b3f0baea8d95dfb1dafb1", - "58aedfce6f67ddc85a28c992f1c0bd0969f041e66f1ee88020a125cbfcfebcd61709c9c4eba192c15e69f020d462486019fa8dea0cd7a42921a19d2fe546d43d", - "9347bd291473e6b4e368437b8e561e065f649a6d8ada479ad09b1999a8f26b91cf6120fd3bfe014e83f23acfa4c0ad7b3712b2c3c0733270663112ccd9285cd9", - "b32163e7c5dbb5f51fdc11d2eac875efbbcb7e7699090a7e7ff8a8d50795af5d74d9ff98543ef8cdf89ac13d0485278756e0ef00c817745661e1d59fe38e7537", - "1085d78307b1c4b008c57a2e7e5b234658a0a82e4ff1e4aaac72b312fda0fe27d233bc5b10e9cc17fdc7697b540c7d95eb215a19a1a0e20e1abfa126efd568c7", - "4e5c734c7dde011d83eac2b7347b373594f92d7091b9ca34cb9c6f39bdf5a8d2f134379e16d822f6522170ccf2ddd55c84b9e6c64fc927ac4cf8dfb2a17701f2", - "695d83bd990a1117b3d0ce06cc888027d12a054c2677fd82f0d4fbfc93575523e7991a5e35a3752e9b70ce62992e268a877744cdd435f5f130869c9a2074b338", - "a6213743568e3b3158b9184301f3690847554c68457cb40fc9a4b8cfd8d4a118c301a07737aeda0f929c68913c5f51c80394f53bff1c3e83b2e40ca97eba9e15", - "d444bfa2362a96df213d070e33fa841f51334e4e76866b8139e8af3bb3398be2dfaddcbc56b9146de9f68118dc5829e74b0c28d7711907b121f9161cb92b69a9", - "142709d62e28fcccd0af97fad0f8465b971e82201dc51070faa0372aa43e92484be1c1e73ba10906d5d1853db6a4106e0a7bf9800d373d6dee2d46d62ef2a461", -} - -var hashes2X = []string{ - "64", - "f457", - "e8c045", - "a74c6d0d", - "eb02ae482a", - "be65b981275e", - "8540ccd083a455", - "074a02fa58d7c7c0", - "da6da05e10db3022b6", - "542a5aae2f28f2c3b68c", - "ca3af2afc4afe891da78b1", - "e0f66b8dcebf4edc85f12c85", - "744224d383733b3fa2c53bfcf5", - "b09b653e85b72ef5cdf8fcfa95f3", - "dd51877f31f1cf7b9f68bbb09064a3", - "f5ebf68e7ebed6ad445ffc0c47e82650", - "ebdcfe03bcb7e21a9091202c5938c0a1bb", - "860fa5a72ff92efafc48a89df1632a4e2809", - "0d6d49daa26ae2818041108df3ce0a4db48c8d", - "e5d7e1bc5715f5ae991e4043e39533af5d53e47f", - "5232028a43b9d4dfa7f37439b49495926481ab8a29", - "c118803c922f9ae2397fb676a2ab7603dd9c29c21fe4", - "2af924f48b9bd7076bfd68794bba6402e2a7ae048de3ea", - "61255ac38231087c79ea1a0fa14538c26be1c851b6f318c0", - "f9712b8e42f0532162822f142cb946c40369f2f0e77b6b186e", - "76da0b89558df66f9b1e66a61d1e795b178ce77a359087793ff2", - "9036fd1eb32061bdecebc4a32aa524b343b8098a16768ee774d93c", - "f4ce5a05934e125d159678bea521f585574bcf9572629f155f63efcc", - "5e1c0d9fae56393445d3024d6b82692d1339f7b5936f68b062c691d3bf", - "538e35f3e11111d7c4bab69f83b30ade4f67addf1f45cdd2ac74bf299509", - "17572c4dcbb17faf8785f3bba9f6903895394352eae79b01ebd758377694cc", - "29f6bb55de7f8868e053176c878c9fe6c2055c4c5413b51ab0386c277fdbac75", - "bad026c8b2bd3d294907f2280a7145253ec2117d76e3800357be6d431b16366e41", - "386b7cb6e0fd4b27783125cbe80065af8eb9981fafc3ed18d8120863d972fa7427d9", - "06e8e6e26e756fff0b83b226dce974c21f970e44fb5b3e5bbada6e4b12f81cca666f48", - "2f9bd300244f5bc093ba6dcdb4a89fa29da22b1de9d2c9762af919b5fedf6998fbda305b", - "cf6bdcc46d788074511f9e8f0a4b86704365b2d3f98340b8db53920c385b959a38c8869ae7", - "1171e603e5cdeb4cda8fd7890222dd8390ede87b6f3284cac0f0d832d8250c9200715af7913d", - "bda7b2ad5d02bd35ffb009bdd72b7d7bc9c28b3a32f32b0ba31d6cbd3ee87c60b7b98c03404621", - "2001455324e748503aa08eff2fb2e52ae0170e81a6e9368ada054a36ca340fb779393fb045ac72b3", - "45f0761aefafbf87a68f9f1f801148d9bba52616ad5ee8e8ac9207e9846a782f487d5cca8b20355a18", - "3a7e05708be62f087f17b41ac9f20e4ef8115c5ab6d08e84d46af8c273fb46d3ce1aabebae5eea14e018", - "ea318da9d042ca337ccdfb2bee3e96ecb8f907876c8d143e8e44569178353c2e593e4a82c265931ba1dd79", - "e0f7c08f5bd712f87094b04528fadb283d83c9ceb82a3e39ec31c19a42a1a1c3bee5613b5640abe069b0d690", - "d35e63fb1f3f52ab8f7c6cd7c8247e9799042e53922fbaea808ab979fa0c096588cfea3009181d2f93002dfc11", - "b8b0ab69e3ae55a8699eb481dd665b6a2424c89bc6b7cca02d15fdf1b9854139cab49d34de498b50b2c7e8b910cf", - "fb65e3222a2950eae1701d4cdd4736266f65bf2c0d2e77968996eadb60ef74fb786f6234973a2524bdfe32d100aa0e", - "f28b4bb3a2e2c4d5c01a23ff134558559a2d3d704b75402983ee4e0f71d273ae056842c4153b18ee5c47e2bfa54313d4", - "7bb78794e58a53c3e4b1aeb161e756af051583d14e0a5a3205e094b7c9a8cf62d098fa9ea1db12f330a51ab9852c17f983", - "a879a8ebae4d0987789bcc58ec3448e35ba1fa1ee58c668d8295aba4eaeaf2762b053a677e25404f635a53037996974d418a", - "695865b353ec701ecc1cb38f3154489eed0d39829fc192bb68db286d20fa0a64235cde5639137819f7e99f86bd89afcef84a0f", - "a6ec25f369f71176952fb9b33305dc768589a6070463ee4c35996e1ced4964a865a5c3dc8f0d809eab71366450de702318e4834d", - "604749f7bfadb069a036409ffac5ba291fa05be8cba2f141554132f56d9bcb88d1ce12f2004cd3ade1aa66a26e6ef64e327514096d", - "daf9fa7dc2464a899533594e7916fc9bc585bd29dd60c930f3bfa78bc47f6c8439448043a45119fc9228c15bce5fd24f46baf9de736b", - "943ea5647a8666763084da6a6f15dcf0e8dc24f27fd0d9194805d25180fe3a6d98f4b2b5e0d6a04e9b41869817030f16ae975dd41fc35c", - "af4f73cbfc093760dfeb52d57ef45207bbd1a515f5523404e5d95a73c237d97ae65bd195b472de6d514c2c448b12fafc282166da132258e9", - "605f4ed72ed7f5046a342fe4cf6808100d4632e610d59f7ebb016e367d0ff0a95cf45b02c727ba71f147e95212f52046804d376c918cadd260", - "3750d8ab0a6b13f78e51d321dfd1aa801680e958de45b7b977d05732ee39f856b27cb2bcce8fbf3db6666d35e21244c2881fdcc27fbfea6b1672", - "8f1b929e80ab752b58abe9731b7b34eb61369536995abef1c0980d93903c1880da3637d367456895f0cb4769d6de3a979e38ed6f5f6ac4d48e9b32", - "d8469b7aa538b36cdc711a591d60dafecca22bd421973a70e2deef72f69d8014a6f0064eabfbebf5383cbb90f452c6e113d2110e4b1092c54a38b857", - "7d1f1ad2029f4880e1898af8289c23bc933a40863cc4ab697fead79c58b6b8e25b68cf5324579b0fe879fe7a12e6d03907f0140dfe7b29d33d6109ecf1", - "87a77aca6d551642288a0dff66078225ae39d288801607429d6725ca949eed7a6f199dd8a65523b4ee7cfa4187400e96597bfffc3e38ade0ae0ab88536a9", - "e101f43179d8e8546e5ce6a96d7556b7e6b9d4a7d00e7aade5579d085d527ce34a9329551ebcaf6ba946949bbe38e30a62ae344c1950b4bde55306b3bac432", - "4324561d76c370ef35ac36a4adf8f3773a50d86504bd284f71f7ce9e2bc4c1f1d34a7fb2d67561d101955d448b67577eb30dfee96a95c7f921ef53e20be8bc44", - "78f0ed6e220b3da3cc9381563b2f72c8dc830cb0f39a48c6ae479a6a78dcfa94002631dec467e9e9b47cc8f0887eb680e340aec3ec009d4a33d241533c76c8ca8c", - "9f6589c31a472e0a736f4eb22b6c70a9d332cc15304ccb66a6b97cd051b6ed82f8990e1d9bee2e4bb1c3c45e550ae0e7b96e93ae23f2fb8f63b309131e72b36cba6a", - "c138077ee4ed3d7ffa85ba851dfdf6e9843fc1dc00889d117237bfaad9aa757192f73556b959f98e6d24886ce48869f2a01a48c371785f12b6484eb2078f08c22066e1", - "f83e7c9e0954a500576ea1fc90a3db2cbd7994eaef647dab5b34e88ab9dc0b47addbc807b21c8e6dd3d0bd357f008471d4f3e0abb18450e1d4919e03a34545b9643f870e", - "3277a11f2628544fc66f50428f1ad56bcba6ee36ba2ca6ecdf7e255effc0c30235c039d13e01f04cf1efe95b5c2033ab72adda30994b62f2851d17c9920eadca9a251752dc", - "c2a834281a06fe7b730d3a03f90761daf02714c066e33fc07e1f59ac801ec2f4433486b5a2da8faa51a0cf3c34e29b2960cd0013378938dbd47c3a3d12d70db01d7d06c3e91e", - "47680182924a51cabe142a6175c9253e8ba7ea579ece8d9bcb78b1e9ca00db844fa08abcf41702bd758ee2c608d9612fed50e85854469cb4ef3038acf1e35b6ba4390561d8ae82", - "cec45830cd71869e83b109a99a3cd7d935f83a95de7c582f3adbd34e4938fa2f3f922f52f14f169c38cc6618d3f306a8a4d607b345b8a9c48017136fbf825aecf7b620e85f837fae", - "46fb53c70ab105079d5d78dc60eaa30d938f26e4d0b9df122e21ec85deda94744c1daf8038b8a6652d1ff3e7e15376f5abd30e564784a999f665078340d66b0e939e0c2ef03f9c08bb", - "7b0dcb52791a170cc52f2e8b95d8956f325c3751d3ef3b2b83b41d82d4496b46228a750d02b71a96012e56b0720949ca77dc68be9b1ef1ad6d6a5ceb86bf565cb972279039e209dddcdc", - "7153fd43e6b05f5e1a4401e0fef954a737ed142ec2f60bc4daeef9ce73ea1b40a0fcaf1a1e03a3513f930dd5335723632f59f7297fe3a98b68e125eadf478eb045ed9fc4ee566d13f537f5", - "c7f569c79c801dab50e9d9ca6542f25774b3841e49c83efe0b89109f569509ce7887bc0d2b57b50320eb81fab9017f16c4c870e59edb6c26620d93748500231d70a36f48a7c60747ca2d5986", - "0a81e0c547648595adca65623ce783411aac7f7d30c3ad269efafab288e7186f6895261972f5137877669c550f34f5128850ebb50e1884814ea1055ee29a866afd04b2087abed02d9592573428", - "6a7b6769e1f1c95314b0c7fe77013567891bd23416374f23e4f43e27bc4c55cfada13b53b1581948e07fb96a50676baa2756db0988077b0f27d36ac088e0ff0fe72eda1e8eb4b8facff3218d9af0", - "a399474595cb1ccab6107f18e80f03b1707745c7bf769fc9f260094dc9f8bc6fe09271cb0b131ebb2acd073de4a6521c8368e664278be86be216d1622393f23435fae4fbc6a2e7c961282a777c2d75", - "4f0fc590b2755a515ae6b46e9628092369d9c8e589e3239320639aa8f7aa44f8111c7c4b3fdbe6e55e036fbf5ebc9c0aa87a4e66851c11e86f6cbf0bd9eb1c98a378c7a7d3af900f55ee108b59bc9e5c", - "ed96a046f08dd675107331d267379c6fce3c352a9f8d7b243008a74cb4e9410836afaabe871dab6038ca94ce5f6d41fa922ce08aba58169f94cfc86d9f688f396abd24c11a6a9b0830572105a477c33e92", - "379955f539abf0eb2972ee99ed9546c4bbee363403991833005dc27904c271ef22a799bc32cb39f08d2e4ba6717d55153feb692d7c5efae70890bf29d96df02333c7b05ccc314e4835b018fec9141a82c745", - "e16cc8d41b96547ede0d0cf4d908c5fa393399daa4a9696e76a4c1f6a2a9fef70f17fb53551a8145ed88f18db8fe780a079d94732437023f7c1d1849ef69ad536a76204239e8ba5d97e507c36c7d042f87fe0e", - "a81de50750ece3f84536728f227208bf01ec5b7721579d007de72c88ee20663318332efe5bc7c09ad1fa8342be51f0609046ccf760a7957a7d8dc88941adb93666a4521ebe76618e5ddc2dd3261493d400b50073", - "b72c5fb7c7f60d243928fa41a2d711157b96aef290185c64b4de3dcfa3d644da67a8f37c2ac55caad79ec695a473e8b481f658c497edb8a191526592b11a412282d2a4010c90ef4647bd6ce745ebc9244a71d4876b", - "9550703877079c90e200e830f277b605624954c549e729c359ee01ee2b07741ecc4255cb37f96682dafcdbaade1063e2c5ccbd1918fb669926a67744101fb6de3ac016be4c74165a1e5a696b704ba2ebf4a953d44b95", - "a17eb44d4de502dc04a80d5a5e9507d17f27c96467f24c79b06bc98a4c410741d4ac2db98ec02c2a976d788531f1a4451b6c6204cef6dae1b6ebbcd0bde23e6fffb02754043c8fd3c783d90a670b16879ce68b5554fe1c", - "41d3ea1eaba5be4a206732dbb5b70b79b66a6e5908795ad4fb7cf9e67efb13f06fef8f90acb080ce082aadec6a1b543af759ab63fa6f1d3941186482b0c2b312f1151ea8386253a13ed3708093279b8eb04185636488b226", - "5e7cdd8373dc42a243c96013cd29df9283b5f28bb50453a903c85e2ce57f35861bf93f03029072b70dac0804e7d51fd0c578c8d9fa619f1e9ce3d8044f65d55634dba611280c1d5cfb59c836a595c803124f696b07ddfac718", - "26a14c4aa168907cb5de0d12a82e1373a128fb21f2ed11feba108b1bebce934ad63ed89f4ed7ea5e0bc8846e4fc10142f82de0bebd39d68f7874f615c3a9c896bab34190e85df05aaa316e14820b5e478d838fa89dfc94a7fc1e", - "0211dfc3c35881adc170e4ba6daab1b702dff88933db9a6829a76b8f4a7c2a6d658117132a974f0a0b3a38ceea1efc2488da21905345909e1d859921dc2b5054f09bce8eeb91fa2fc6d048ce00b9cd655e6aafbdaa3a2f19270a16", - "ddf015b01b68c4f5f72c3145d54049867d99ee6bef24282abf0eecdb506e295bacf8f23ffa65a4cd891f76a046b9dd82cae43a8d01e18a8dff3b50aeb92672be69d7c087ec1fa2d3b2a39196ea5b49b7baede37a586fea71aded587f", - "6ee721f71ca4dd5c9ce7873c5c04c6ce76a2c824b984251c15535afc96adc9a4d48ca314bfeb6b8ee65092f14cf2a7ca9614e1dcf24c2a7f0f0c11207d3d8aed4af92873b56e8b9ba2fbd659c3f4ca90fa24f113f74a37181bf0fdf758", - "689bd150e65ac123612524f720f54def78c095eaab8a87b8bcc72b443408e3227f5c8e2bd5af9bcac684d497bc3e41b7a022c28fb5458b95e8dfa2e8caccde0492936ff1902476bb7b4ef2125b19aca2cd3384d922d9f36dddbcd96ae0d6", - "3a3c0ef066fa4390ec76ad6be1dc9c31ddf45fef43fbfa1f49b439caa2eb9f3042253a9853e96a9cf86b4f873785a5d2c5d3b05f6501bc876e09031188e05f48937bf3c9b667d14800db62437590b84ce96aa70bb5141ee2ea41b55a6fd944", - "741ce384e5e0edaebb136701ce38b3d33215415197758ae81235307a4115777d4dab23891db530c6d28f63a957428391421f742789a0e04c99c828373d9903b64dd57f26b3a38b67df829ae243feef731ead0abfca049924667fdec49d40f665", - "a513f450d66cd5a48a115aee862c65b26e836f35a5eb6894a80519e2cd96cc4cad8ed7eb922b4fc9bbc55c973089d627b1da9c3a95f6c019ef1d47143cc545b15e4244424be28199c51a5efc7234dcd94e72d229897c392af85f523c2633427825", - "71f1554d2d49bb7bd9e62e71fa049fb54a2c097032f61ebda669b3e1d4593962e47fc62a0ab5d85706aebd6a2f9a192c88aa1ee2f6a46710cf4af6d3c25b7e68ad5c3db23ac009c8f13625ff85dc8e50a9a1b2682d3329330b973ec8cbb7bb73b2bd", - "167cc1067bc08a8d2c1a0c10041ebe1fc327b37043f6bd8f1c63569e9d36ded58519e66b162f34b6d8f1107ef1e3de199d97b36b44141a1fc4f49b883f40507ff11f909a017869dc8a2357fc7336ae68703d25f75710b0ff5f9765321c0fa53a51675c", - "cb859b35dc70e264efaad2a809fea1e71cd4a3f924be3b5a13f8687a1166b538c40b2ad51d5c3e47b0de482497382673140f547068ff0b3b0fb7501209e1bf36082509ae85f60bb98fd02ac50d883a1a8daa704952d83c1f6da60c9624bc7c99912930bf", - "afb1f0c6b7125b04fa2578dd40f60cb411b35ebc7026c702e25b3f0ae3d4695d44cfdf37cb755691dd9c365edadf21ee44245620e6a24d4c2497135b37cd7ac67e3bd0aaee9f63f107746f9b88859ea902bc7d6895406aa2161f480cad56327d0a5bba2836", - "13e9c0522587460d90c7cb354604de8f1bf850e75b4b176bda92862d35ec810861f7d5e7ff6ba9302f2c2c8642ff8b7776a2f53665790f570fcef3cac069a90d50db42227331c4affb33d6c040d75b9aeafc9086eb83ced38bb02c759e95ba08c92b17031288", - "0549812d62d3ed497307673a4806a21060987a4dbbf43d352b9b170a29240954cf04bc3e1e250476e6800b79e843a8bd8253b7d743de01ab336e978d4bea384eaff700ce020691647411b10a60acacb6f8837fb08ad666b8dcc9eaa87ccb42aef6914a3f3bc30a", - "3a263efbe1f2d463f20526e1d0fd735035fd3f808925f058b32c4d8788aeeab9b8ce233b3c34894731cd73361f465bd350395aebcabd2fb63010298ca025d849c1fa3cd573309b74d7f824bbfe383f09db24bcc565f636b877333206a6ad70815c3bef5574c5fc1c", - "3c6a7d8a84ef7e3eaa812fc1eb8e85105467230d2c9e4562edbfd808f4d1ac15d16b786cc6a02959c2bc17149c2ce74c6f85ee5ef22a8a96b9be1f197cffd214c1ab02a06a9227f37cd432579f8c28ff2b5ac91cca8ffe6240932739d56788c354e92c591e1dd76499", - "b571859294b02af17541a0b5e899a5f67d6f5e36d38255bc417486e69240db56b09cf2607fbf4f95d085a779358a8a8b41f36503438c1860c8f361ce0f2783a08b21bd7232b50ca6d35428335272a5c05b436b2631d8d5c84d60e8040083768ce56a250727fb0579dd5c", - "98ee1b7269d2a0dd490ca38d447279870ea55326571a1b430adbb2cf65c492131136f504145df3ab113a13abfb72c33663266b8bc9c458db4bf5d7ef03e1d3b8a99d5de0c024be8fabc8dc4f5dac82a0342d8ed65c329e7018d6997e69e29a01350516c86beaf153da65ac", - "41c5c95f088df320d35269e5bf86d10248f17aec6776f0fe653f1c356aae409788c938befeb67c86d1c8870e8099ca0ce61a80fbb5a6654c44529368f70fc9b9c2f912f5092047d0ffc339577d24142300e34948e086f62e23ecaca410d24f8a36b5c8c5a80e0926bc8aa16a", - "9f93c41f533b2a82a4df893c78faaaa793c1506974ba2a604cd33101713ca4adfd30819ffd8403402b8d40aff78106f3357f3e2c24312c0d3603a17184d7b999fc9908d14d50192aebabd90d05073da7af4be37dd3d81c90acc80e8333df546f17ab6874f1ec204392d1c0571e", - "3da5207245ac270a915fc91cdb314e5a2577c4f8e269c4e701f0d7493ba716de79935918b917a2bd5db98050dbd1eb3894b65fac5abf13e075abebc011e651c03cafb6127147771a5c8418223e1548137a89206635c26ca9c235ccc108dc25cf846e4732444bd0c2782b197b262b", - "96011af3965bb941dc8f749932ea484eccb9ba94e34b39f24c1e80410f96ce1d4f6e0aa5be606def4f54301e930493d4b55d484d93ab9dd4dc2c9cfb79345363af31ad42f4bd1aa6c77b8afc9f0d551bef7570b13b927afe3e7ac4de7603a0876d5edb1ad9be05e9ee8b53941e8f59", - "51dbbf2a7ca224e524e3454fe82ddc901fafd2120fa8603bc343f129484e9600f688586e040566de0351d1693829045232d04ff31aa6b80125c763faab2a9b233313d931903dcfaba490538b06e4688a35886dc24cdd32a13875e6acf45454a8eb8a315ab95e608ad8b6a49aef0e299a", - "5a6a422529e22104681e8b18d64bc0463a45df19ae2633751c7aae412c250f8fb2cd5e1270d3d0cf009c8aa69688ccd4e2b6536f5747a5bc479b20c135bf4e89d33a26118705a614c6be7ecfe766932471ad4ba01c4f045b1abb5070f90ec78439a27a1788db9327d1c32f939e5fb1d5ba", - "5d26c983642093cb12ff0afabd87b7c56e211d01844ad6da3f623b9f20a0c968034299f2a65e6673530c5980a532beb831c7d0697d12760445986681076dfb6fae5f3a4d8f17a0db5008ce8619f566d2cfe4cf2a6d6f9c3664e3a48564a351c0b3c945c5ee24587521e4112c57e318be1b6a", - "52641dbc6e36be4d905d8d60311e303e8e859cc47901ce30d6f67f152343e3c4030e3a33463793c19effd81fb7c4d631a9479a7505a983a052b1e948ce093b30efa595fab3a00f4cef9a2f664ceeb07ec61719212d58966bca9f00a7d7a8cb4024cf6476bab7fbccee5fd4e7c3f5e2b2975aa2", - "a34ce135b37bf3db1c4aaa4878b4499bd2ee17b85578fcaf605d41e1826b45fdaa1b083d8235dc642787f11469a5493e36806504fe2a2063905e821475e2d5ee217057950370492f5024995e77b82aa51b4f5bd8ea24dc71e0a8a640b0592c0d80c24a726169cf0a10b40944747113d03b52708c", - "46b3cdf4946e15a5334fc3244d6680f5fc132afa67bf43bfade23d0c9e0ec64e7dab76faaeca1870c05f96b7d019411d8b0873d9fed04fa5057c039d5949a4d592827f619471359d6171691cfa8a5d7cb07ef2804f6ccad4821c56d4988bea7765f660f09ef87405f0a80bcf8559efa111f2a0b419", - "8b9fc21691477f11252fca050b121c5334eb4280aa11659e267297de1fec2b2294c7ccee9b59a149b9930b08bd320d3943130930a7d931b71d2f10234f4480c67f1de883d9894ada5ed5071660e221d78ae402f1f05af47761e13fec979f2671e3c63fb0ae7aa1327cf9b8313adab90794a52686bbc4", - "cd6598924ce847de7ff45b20ac940aa6292a8a99b56a74eddc24f2cfb45797188614a21d4e8867e23ff75afd7cd324248d58fcf1ddc73fbd115dfa8c09e62022fab540a59f87c989c12a86ded05130939f00cd2f3b512963dfe0289f0e54acad881c1027d2a0292138fdee902d67d9669c0ca1034a9456", - "594e1cd7337248704e691854af0fdb021067ddf7832b049ba7b684438c32b029eded2df2c89a6ff5f2f2c311522ae2dc6db5a815afc60637b15ec24ef9541f1550409db2a006da3affffe548a1eaee7bd114e9b805d0756c8e90c4dc33cb05226bc2b393b18d953f8730d4c7ae693159cdba758ad28964e2", - "1f0d292453f04406ada8be4c161b82e3cdd69099a8637659e0ee40b8f6da46005cfc6085db9804852decfbe9f7b4dda019a7112612895a144ed430a960c8b2f5458d3d56b7f427cee6358915aee7146278aed2a0296cdd929e4d21ef95a3adf8b7a6beba673cdccdbdcfb2474711732d972ad054b2dc64f38d", - "b65a72d4e1f9f9f75911cc46ad0806b9b18c87d105332a3fe183f45f063a746c892dc6c4b9181b1485b3e3a2cc3b453eba2d4c39d6905a774ed3fb755468beb190925ecd8e57ecb0d985125741650c6b6a1b2a3a50e93e3892c21d47ed5884eed83aa94e1602288f2f49fe286624de9d01fcb54433a0dc4ad70b", - "705ce0ffa469250782aff725248fc88fe98eb76659e8407edc1c4842c9867d61fe64fb86f74e980598b92bc213d06f337bd5654fc28643c7ba769a4c31563427543c00808b627a19c90d86c322f33566ce020121cc322229c3337943d46f68ef939d613dcef0077269f88151d6398b6b009abb763410b154ad76a3", - "7fa881ce87498440ab6af13854f0d851a7e0404de33896999a9b3292a5d2f5b3ad033530c558168fe5d2fdb9b89a2354c46cf32a0e612afc6c6485d789511bfef26800c74bf1a4cfbe30bda310d5f6029c3dccdedb6149e4971274e276dccfabd63bc4b9955e8303feb57f8a688db55ecb4b33d1f9fe1b3a8ba7ac32", - "23a98f71c01c0408ae16843dc03be7db0aeaf055f951709d4e0dfdf64fffbffaf900ee592ee10929648e56f6c1e9f5be5793f7df66453eb56502c7c56c0f0c88da77abc8fa371e434104627ef7c663c49f40998dbad63fa6c7aa4fac17ae138d8bbe081f9bd168cd33c1fbc92fa35ed687679f48a64b87db1fe5bae675", - "7b8970b6a33237e5a7bcb39272703edb92285c55842b30b9a48834b1b507cc02a6764739f2f7ee6ae02a7b715a1c455e59e8c77a1ae98abb10161853f1234d20da99016588cd8602d6b7ec7e177d4011edfa61e6b3766a3c6f8d6e9eac893c568903eb6e6aba9c4725774f6b4343b7acaa6c031593a36eef6c72806ff309", - "f7f4d328ba108b7b1de4443e889a985ed52f485f3ca4e0c246aa5526590cbed344e9f4fe53e4eea0e761c82324649206ca8c2b45152157d4115e68c818644b03b65bb47ad79f94d37cb03c1d953b74c2b8adfa0e1c418bda9c518ddcd7050e0f149044740a2b16479413b63fc13c36144f80c73687513dca761ba8642a8ae0", - "2d7dc80c19a1d12d5fe3963569547a5d1d3e821e6f06c5d5e2c09401f946c9f7e13cd019f2f9a878b62dd850453b6294b99ccaa068e542993524b0f63832d48e865be31e8ec1ee103c718340c904b32efb69170b67f038d50a3252794b1b4076c0620621ab3d91215d55ffea99f23d54e161a90d8d4902fda5931d9f6a27146a", - "77dff4c7ad30c954338c4b23639dae4b275086cbe654d401a2343528065e4c9f1f2eca22aa025d49ca823e76fdbb35df78b1e5075ff2c82b680bca385c6d57f7ea7d1030bb392527b25dd73e9eeff97bea397cf3b9dda0c817a9c870ed12c006cc054968c64000e0da874e9b7d7d621b0679866912243ea096c7b38a1344e98f74", - "83bed0d556798f2b419f7056e6d3ffada06e939b95a688d0ec8c6ac5ea45ab73a4cf01043e0a170766e21395f27ab4b78c435f5f0dfe6e93ab80df38610e41158429ddf20296f53a06a017723359fe22dc08b5da33f0800a4fe50118e8d7eab2f83a85cd764bf8a166903bd0e9dcfeeceba44ff4ca4439846458d31ea2bb564645d1", - "ea12cf5a113543e39504123036f15a5bafa9c555562469f99cd29996a4dfaaab2a34b00557ccf15f37fc0cc1b3be427e725f2cd952e50af7970dda9200cd5ce252b1f29c40067fea3027ed686190803b59d834179d1b8f5b55abe55ad174b2a1188f7753ec0ae2fc01316e7d498b68ee3598a0e9baaaa664a60f7fb4f90edbed494ad7", - "55266358332d8d9e68bd13432088beadf95833aab67a0eb3b10650414255f299e2670c3e1a5b2976159a46c72a7ce57d59b7be14c15798e09ed50fa312a431b0264d7a1396aa6168bde897e208ece53d2cfc83786113b1e6eac5e9bb98984abb6c8d64eebb991903254abc650c999bb9958a5d7937434b869bc940e21b9dc1cc8982f2ba", - "4d6104ded730aefe02873f4c741232c8234a6d66d85393aff57fbf56ba6347666988dfc4d58f3cc895a0da598822edeee4533d24ec0ee292fd5e1ad04898ffbc1ff4bef14dec220babcb0f28fffe32a6e2c28aaaac16442bf4feb02917d18bb3a415d84fa9358d5a9852688d846c92271911f934181c30f82434d915f93f155a1ffbf0b125", - "eb5f579a4c476af554aac11e5719d378549497e613b35a929d6f36bb8831d7a466aa76de9be24ebb55543f1c13924f64cfd648a5b3fa90387315c16174dbf1e9a183c196d9bb8f84af65f1f8212429aadc11ef2426d07d4716062b85c8d5d2dff8e21b9e62b7fa7dbd57d72633054b464fb28583a56ca13ccc5ddc74dae942492f31731e7046", - "ebddec3dcaf18063e45a76ebeac39af85a1adc2818881ccce48c106288f5988365cca2b4b1d7f037322da46840f42bebdcbc7193838d426e101087d8cea03aaff743d573eb4f4e9a71a2c884390769a6503874125d194bee8d46a3a0d5e4fcf28ff8465887d8e9df771d70157e75df3642b331d2778ceb32ceba868640171ab7a5d22eede1ee44", - "26d87ec70b57691e3bb359633d3ddba17f029d62cdfe977f5fd42274d79b444a32494d1c01e9f72d03cce78c806df96e93ea78da3a054209924ed765edc4d570f66168dc25ee3114e4017e387440349c8f0a94804761c3055f88e4fda2a49b860b1486a9609095f6250f268b6a4d1aecc03a505632ebf0b9dc22d0755a736faf7ad7000858b5864b", - "3880f5cc2d08fa70ef44b1f263fcf534d062a298c1bd5ee2eee8c3265806c4ce50b004f3a1fc1fa5b024aaac7f528c023c8181f67c6e1c357425dc4d573bd46b93a542afa3a19bdb140a2ce666e1a01f5c4d2dcd681fa9f5839b797813c394738d5ee4971386c12c7c117d17c7bec324b760aa30cda9ab2aa850284ba6fa97946f710f02449d1883c6", - "3317d2f452105dd3f4a96f9257af8285a80be58066b50f6f54bd633749b49f6ab9d57d45652d2ae852a2f6940cd5ec3159dd7f333358b12f502325df38843508faf7e246352d201280babd90b14fbf7722641c3601d0e458474439973c611bb5502fd0eb3078f87124ca7e1a016fcb6cfeff65f6a565985aca7122cfa8c5a11da0cb47797c5132333179", - "f2c5c955d0224e784a46b9125f8fef8a5e1271e145eb08bbbd07ca8e1cfc848cef14fa3b36221ac62006403dbb7f7d77958ccc54a8566c837858b809f3e310ace8ca682515bc655d2a397cab238a663b464d511f02dc5d033dad4cb5e0e519e94a54b62a3896e460ec70e5716b5921bf8396aa86a60123e6287e34570bb01bdc602e113670bf498af2ff10", - "180e275205691a83630cf4b0c7b80e6df8fad6ef1c23ba8013d2f09aef7abade1827f23af230de90676240b4b3b0673f8afdea0327330055041741f65560d90348de696d34ca80dfe8afae582fe4879d4594b80e9408fb53e800e01ca58552b905c365e7f1416e51c080f517d6bbd30e64ae1535d59decdc76c6624d737868f49f2f719da39ba1344d59eab9", - "c517a84e4631a7f65ace170d1e5c2fdb259841535d88da323e68c0883e6af7b041cfe05908815a5a9d1b14fa712c2c16fadcf1ca54d3aa954d411240df331b2aebdfb65aced84d0b8aace56ec0aa7c13ec7d75ca883b6bcf6db74c9e98463c484a8262684f29910373430651f90ecffe18b072170e61ee58de20e2a6ff67b3ab00fccbb80af943f20b56b98107", - "d1a56a5ee990e02b84b5862fde62f69ec07567be2d7ccb769a461c4989d11fdda6c945d942fb8b2da795ed97e43a5b7dbdde7f8fd2ff7154544336d5c50fb7380341e660d4898c7fbc39b2b782f28defac6873523c7c1de8e52c65e4395c686ba483c35a220b0416d46357a063fa4c33fa9c52d5c207a1304ae141c791e62ba6a7374ed922b8dd94079b72b69302", - "4720b88d6bfb1ab43958e26827730d852d9ec30173ebd0fe0d273edcece2e788558984cd9306fe5978086a5cb6d37975755d2a3daeb16f99a8a11544b8247a8b7ed5587afc5bea1daf85dcea5703c5905cf56ae7cc76408ccabb8fcc25cacc5ff456db3f62fa559c45b9c71505eb5073df1f10fc4c9060843f0cd68bbb4e8edfb48d0fd81d9c21e53b28a2aae4f7ba", - "f4639b511db9e092823d47d2947efacbaae0e5b912dec3b284d2350b9262f3a51796a0cd9f8bc5a65879d6578ec24a060e293100c2e12ad82d5b2a0e9d22965858030e7cdf2ab3562bfa8ac084c6e8237aa22f54b94c4e92d69f22169ced6c85a293f5e16bfc326153bf629cdd6393675c6627cd949cd367eef02e0f54779f4d5210197698e4754a5fe490a3a7521c1c", - "3d9e7a860a718565e3670c29079ce80e381969fea91017cfd5952e0d8a4a79bb08e2cd1e26161f30ee03a24891d1bfa8c212861b51618d07429fb48000ff87ef09c6fca526567777e9c076d58a642d5c521b1caa5fb0fb3a4b8982dc14a444732b72b239b8f01fc8ba8ee86b3013b5d3e98a92b2aeaecd4879fca5d5e9e0bd880dbfffa6f96f94f3998812aac6a714f331", - "4d9bf551d7fd531e7482e2ec875c0651b0bcc6caa738f7497befd11e67ae0e036c9d7ae4301cc3c7906f0d0e1ed4738753f414f9b3cd9b8a71176e325c4c74ce020680ecbfb146889597f5b40487e93f974cd866817fb9fb24c7c7c16177e6e120bfe349e83aa82ba40e59e917565788658a2b254f25cf99bc65070b3794cea2259eb10e42bb54852cba3110baa773dcd70c", - "b91f65ab5bc059bfa5b43b6ebae243b1c46826f3da061338b5af02b2da76bb5ebad2b426de3c3134a633499c7c36a120369727cb48a0c6cbab0acecdda137057159aa117a5d687c4286868f561a272e0c18966b2fec3e55d75abea818ce2d339e26adc005c2658493fe06271ad0cc33fcb25065e6a2a286af45a518aee5e2532f81ec9256f93ff2d0d41c9b9a2efdb1a2af899", - "736f6e387acb9acbee026a6080f8a9eb8dbb5d7c54ac7053ce75dd184b2cb7b942e22a3497419ddb3a04cf9e4eb9340a1a6f9474c06ee1dcfc8513979fee1fc4768087617fd424f4d65f54782c787a1d2de6efc81534343e855f20b3f3589027a5436201eee747d45b9b8375e4294d72ab6a52e04dfbb2914db92ee58f134b026527ed52d4f794459e02a43a17b0d51ea69bd7f3", - "9242d3eb31d26d923b99d66954cfade94f25a18912e6356810b63b971ae74bb53bc58b3c01424208ea1e0b1499936daea27e63d904f9ed65fdf69de40780a3027b2e89d94bdf214f585472613ce328f628f4f0d56217dfb53db5f7a07f54c8d71db16e27de7cdb8d23988837b49b65c12f1771d979e8b192c9f4a16b8d9fba917bcf74ce5a82aac2075608ba6c2d485fa59864b9de", - "5da68704f4b592d41f08aca08f62d85e2e2466e5f3be010315d11d113db674c4b98764a509a2f5aacc7ae72c9deff2bcc42810b47f64d429b35745b9efff0b18c58653461e968aaa3c2c7fc455bc5771a8f10cd184be831040df767201ab8d32cb9a58c89afbebecb524502c9b940c1b838f8361bbcde90d272715017f67609ea39b20fac985332d82daaa023999e3f8bfa5f3758bb8", - "71ea2af9c8ac2e5ae44a176662882e01027ca3cdb41ec2c6785606a07d7231cd4a2bded7155c2feef3d44d8fd42afa73265cef826f6e03aa761c5c51d5b1f129ddc27503ff50d9c2d748322df4b13dd5cdc7d46381528ab22b79b0049011e4d2e57fe2735e0d58d8d56e92c75dbeac8c76c4239d7f3f24fb56697593b3e4afa6671d5bbc96c079a1c154fe20212ade67b05d49ceaa7a84", - "1d133170582fa4bff59a21953ebbc01bc202d43cd79c083d1f5c02fa15a43a0f519e36acb710bdabac880f04bc003800641c2487930de9c03c0e0deb347fa815efca0a38c6c5de694db698743bc955581f6a945deec4ae988ef7cdf40498b77796ddea3fae0ea844891ab751c7ee20917c5a4af53cd4ebd82170078f41ada2795e6eea17593fa90cbf5290a1095e299fc7f507f360f187cd", - "5ec4ac45d48fc15c72471d795066bdf8e99a483d5fdd599511b9cdc408de7c0616491b73924d0266da34a495331a935c4b8884f57d7ad8cce4cbe586875aa52482215ed39d7626cce55d50349c7767981c8bd6890f132a196184247343566fc972b86fe3c5369d6a6519e9f07942f0522b77ad01c751dcf7defe31e471a0ec00963765dd8518144a3b8c3c978ad108056516a25dbe3092e73c", - "0d5e74b78290c689f2b3cfea45fc9b6a84c822639cd438a7f05c07c374adced42cdc12d2a9233a4ffe80307efc1ac13cb04300e165f8d90dd01c0ea955e7657332c6e86ad6b43e78ba4c13c675aed83192d8427866fb6484e6a3071b2369a46fba9005f31232da7ffec7952f831aaaddf63e225263531c2cf387f8cc14fa856c8795137142c3a52ffa69b8e30ebc88ce3bbc227597bcc8dddd89", - "a0fe36f983259921dc2fa7d89002b3066241d63bfc2448caf7e10522a35562be0bfedc3dce49cfce2e614a04d4c64cfc0ab898873a7fc26928dc1927c009d12f6f9b7a278205d3d0057604f4ac746f8b9287c3bc6b929832bf253b6586192ac43fdd29ba585dbd9059aab9c6ff6000a7867c67fec1457b733f6b620881166b8fed92bc8d84f0426002e7be7fcd6ee0abf3755e2babfe5636ca0b37", - "1d29b6d8eca793bb801becf90b7d7de215b17618ec32340da4bac707cdbb58b951d5036ec02e105d83b5960e2a72002d19b7fa8e1128cc7c5049ed1f76b82a59eac6ed09e56eb73d9ade38a6739f0e07155afa6ec0d9f5cf13c4b30f5f9a465b162a9c3ba04b5a0b3363c2a63f13f2a3b57c590ec6aa7f64f4dcf7f1582d0ca157eb3b3e53b20e306b1f24e9bda87397d413f01b453ceffeca1fb1e7", - "6a2860c110cd0fc5a19bcaafcd30762ee10242d34739638e716bd89fd537ea4dc630e6f85d1bd88a25ad3892ca554c232c9830bd56980c9f08d378d28f7fa6fa7df4fcbf6ad98b1adfff3ec1f63310e50f920c99a5200b8e64c2c2ca249399a149942261f737d5d72da949e914c024d57c4b639cb89990fed2b38a37e5bcd24d17ca12dfcd36ce04691fd03c32f6ed5de2a2191ed7c826375ba81f78d0", - "7132aa291ddc9210c60dbe7eb3c19f9053f2dd74742cf57fdc5df98312adbf4710a73245de4a0c3b24e21ab8b466a77ae29d15500d5142555ef3088cbccbe685ed9119a10755148f0b9f0dbcf02b2b9bcadc8517c88346ea4e78285e9cbab122f824cc18faf53b742a87c008bb6aa47eed8e1c8709b8c2b9adb4cc4f07fb423e5830a8e503ab4f7945a2a02ab0a019b65d4fd71dc364d07bdc6e637990e3", - "3e664da330f2c6007bff0d5101d88288aaacd3c07913c09e871cce16e55a39fde1ce4db6b8379977c46cce08983ca686778afe0a77a41baf447854b9aa286c398c2b83c95a127b053101b6799c1638e5efd67273b2618df6ec0b96d8d040e8c1ee01a99b9b5c8fe63fea2f749e6c90d31f6fae4e1469ac09884c4fe1a8539acb313f42c941224a0e79c059e18affc2bcb6724975c436f7bf949ebdd8aef51c", - "7a6ea63a271eb49470f5ce77519ed61ae9b2f1be07a96855726bc3df1d0723af3a703fdfc2e739c9d31d25814daf661a23558b50982e66ee37ad880f5c8f11c8130fac8a5d0250583700d5a324894fae6d61993f6bf9327214f8674649f355b23fd634940b2c467973a839e659169c773119919f5b81ee171edb2e5f6940d7551f9e5a70625d9ea88711ad0ed8ab2da720ad358bef954456cb2d5636425717c2", - "c5106bbda114168c449172e49590c7eeb827fa4e1a2a7a87a3c1f721a9047d0c0a50fbf244731be1b7eb1a2ef30f5ae846a9f38f0df44f32af61b68dbdcd0226e741dfb6ef81a2503691af5e4b3171f48c59ba4ef91eba344b5b697f261df7bbbb734ca6e6daebaa4a179feb17002823281b8534d55a6531c59305f6e3fd3fa63b747bcf0deb654c392a02fe687a269effb1238f38bcaea6b208b221c45fe7fbe7", - "597716a5ebeebc4bf524c15518816f0b5dcda39cc833c3d66b6368ce39f3fd02ceba8d12072bfe6137c68d3acd50c849873150928b320b4fbc31c1456679ea1d0acaeeabf666d1f1bad3e6b9312c5cbdecf9b799d3e30b0316bed5f41245107b693366accc8b2bcef2a6be54209ffabc0bb6f93377abdcd57d1b25a89e046f16d8fd00f99d1c0cd247aafa72234386ae484510c084ee609f08aad32a005a0a5710cb", - "0771ffe789f4135704b6970b617bae41666bc9a6939d47bd04282e140d5a861c44cf05e0aa57190f5b02e298f1431265a365d29e3127d6fccd86ec0df600e26bcdda2d8f487d2e4b38fbb20f1667591f9b5730930788f2691b9ee1564829d1ada15fffc53e785e0c5e5dd11705a5a71e390ca66f4a592785be188fefe89b4bd085b2024b22a210cb7f4a71c2ad215f082ec63746c7367c22aedb5601f513d9f1ffc1f3", - "be6556c94313739c115895a7bad2b620c0708e24f0390daa55521c31d2c6782acf41156271238885c367a57c72b4fe999c160e804ad58d8e565edbce14a2dd90e443eb80626b3eab9d7ab75d6f8a062d7ca89b7af8eb292c98eaf87ad1dfd0db103d1bb6188bd7e7a63502153cf3ce23d43b60c5782602bac8ad92fb2324f5a79453898c5de18415639ecc5c7974d3077f76fc1df5b956723bb19a624d7ea3ec13ba3d86", - "4bc33729f14cd2f1dc2ff459abee8f6860dda1062845e4adab78b53c835d106bdfa35dd9e77219eaef403d4e80488ca6bd1c93dd76ef9d543fbb7c8904dccc5f71509a6214f73d0f4e467c3e038ea639b29e7fc442ee29f57117740576188ada15a739827c647a46b0271817ab235c023c30c90f2115e5c90cd8501e7b286962fc66ffc3fe7e8978746168314908a41998bd83a1eeffda9d714b864f4d490fdeb9c7a6edfa", - "ab12faea205b3d3a803cf6cb32b9698c32301a1e7f7c6c23a20174c95e98b7c3cfe93fffb3c970face8f5751312a261741141b948d777b8a2ea286fe69fc8ac84d34116a4674bb09a1a0b6af90a748e511749de4697908f4acb22be08e96ebc58ab1690acf73914286c198a2b57f1dd70ea8a52325d3045b8bdfe9a09792521526b7564a2a5fcd01e291f1f8894017ce7d3e8a5dba15332fb410fcfc8d62195a48a9e7c86fc4", - "7d421e59a567af70594757a49809a9c22e07fe14061090b9a041875bb77933deae36c823a9b47044fa0599187c75426b6b5ed94982ab1af7882d9e952eca399ee80a8903c4bc8ebe7a0fb035b6b26a2a013536e57fa9c94b16f8c2753c9dd79fb568f638966b06da81ce87cd77ac0793b7a36c45b8687c995bf4414d28289dbee977e77bf05d931b4feaa359a397ca41be529910077c8d498e0e8fb06e8e660cc6ebf07b77a02f", - "0c18ab727725d62fd3a2714b7185c09faca130438eff1675b38beca7f93a6962d7b98cb300ea33067a2035cdd694348784aa2eda2f16c731eca119a050d3b3ce7d5c0fd6c234354a1da98c0642451922f670984d035f8c6f35031d6188bbeb31a95e99e21b26f6eb5e2af3c7f8eea426357b3b5f83e0029f4c4732bca366c9aa625748297f039327c276cd8d9c9bf692a47af098aa50ca97b99961bef8bc2a7a802e0b8cfdb84319", - "92d5909d18a8b2b9971cd1627b461e98a74ba377186a6a9df5bd133635250b300abccb2254cacb775df6d99f7c7d0952653c28e6909b9f9a45adce691f7adc1afffcd9b06e49f775364cc2c62825b9c1a86089080e26b57e732aac98d80d009bfe50df01b95205aa07ed8ec5c873da3b92d00d53af825aa64b3c634c5ece40bff152c331222d3453fd92e0ca17cef19ecb96a6eed4961b627aca48b12fecd091754f770d52ba861546", - "802f22e4a388e874927fef24c797408254e03910bab5bf372320207f8067f2b1ea543917d4a27df89f5bf936ba12e04302bde23119533d0976beca9e20cc16b4dbf17a2ddc44b66aba76c61ad59d5e90de02a88327ead0a8b75463a1a68e307a6e2e53ecc1986274b9ee80bc9f3140671d5285bc5fb57b281042a8978a1175900c6073fd7bd740122956602c1aa773dd2896674d0a6beab24454b107f7c847acb31a0d332b4dfc5e3f2f", - "3844fe65db11c92fb90bf15e2e0cd216b5b5be91604baf3b84a0ca480e41ecfaca3709b32f8c6e8761406a635b88eec91e075c48799a16ca08f295d9766d74475c47f3f2a274eae8a6ee1d191a7f37ee413a4bf42cad52acd5564a651715ae42ac2cddd52f819c692ecdef52ecb763270322cdca7bd5aef71428fa73e844568b96b43c89bf1ed42a0abf209ffad0eeec286c6f141e8af073ba4adfbbdeda253752ae36c9957dfc905b4c49", - "329377f7bf3c8d74991a7d61b0cf39baff5d485d79751b0d5ad017d23bec570fb19810105bab79ab5acb102ab972165224d4ec888ec7de5148077fa9c1bb6820e0d91ae4e2591a21fec2f820606ce4bafc1e377f8dc3a5bd1a9e2772a57abccd0b757164d768872c91d02789545ab5b203f688d71dd08522a3fd2f5bcd7df507aebf1ca27ddff0a82afb7aa9c180008f49d1325adf97d047e77238fc75f56356de4e87d8c961575c9f6362c9", - "f7f269929b0d71ea8eef7120e55ccba691c582dd534692abef35c0fe9dec7dae973cd9702e5ad420d278fe0e653fdcb22fdcb63148109ec7e94f2d0750b28157dd1764376ae10fdb0a4aef3b304bd82793e0595f941226a2d72abbc929f53134dc495b0d65ced409914f94c2523f3dfbbdeeac84ae247ab5d1b9ea33dce1a808885a55be1f3683b46f4be73d9b62eec2585f690056858dfc427aabf591cd276724885bcd4c00b93bb51fb7484d", - "ac022309aa2c4d7fb628255b8b7fb4c3e3ae64b1cb65e0de711a6def1653d95d8088871cb8905fe8ae76423604988a8f77589f3f776dc1e4b30dbe9dd262b2187db02518a132d219bd1a06ebac13132b5164b6c420b37dd2ccee7d69b3b7fa12e54f0a53b853d490a68379ea1fa2d79762830ffb71bf86aab506b51f85c4b6a41b69325c7d0c7aa85b93b7144489d213e8f33dbb879fce22849865337b620b155cb2d2d36a68832889e30194d36d", - "d009c2b78a8f02e5e5dbb586ef71fc324b375092e15913ca1a5bfd22d516baadb96867bee3562e77c4a4852344a1a76c30728be5e22400b4cc41711f66754c246a520498d8c24f0205b9c873748dbeb67fe1ad099ad04cf89f4b517f0aa481136d9f6de2d727df01c6aa4099da59d4382b51e25fd47c33d9842c32b62331e50794bfe8b61b3ba9de1b8b704779c6d65edff3af00f121ab4a7ea384edabe47c6d0098a48991f387ca4444135ec59d46", - "c00bab36cce69899817d1425016d222d7303197ed3e3fdcac744705e7f178a1ac745968900f69299163e19b3161f3e0a4cc55aa2e4e71e0ee6ac427d1f4d14e063f68d303ddfbb18118335cfa7a6a90d99c38319ee76f7a884846a9e0b68030bf28e78bfbd56359b9368842814da42b04cb0e307d5d846dc22f049147bae31b9a956d17676a8cc348dafa3cabc2007a30e730e3894dddf9999fb8819086311f0703e141613ed6dcd7af8510e2dc435b0", - "c9789152a9fc29698d49ed95f09bd11b75f18a8c5615a73dbe54ae5e550027fd0ae6a8b60667040c1b12de3d1ee3f6bf061c78c951a3210effc912e19f482dd4de152063c588c44903bc11761706fd935afa040df085b08144d83d0dde32b46ab52f4fae98ac116c7ff11d7f553450c2e37b9c5f0b1dd9e0b8640a24cba6f2a5246c41f197f46e3dc8a29131c79bef3351c6e277a0a34442274d546ccd058891277473d668420f121750d19cd684267405", - "06a15a0731ce52557e368bcbaa11ef3399299e36fb9f2eda6e5726907c1d29c5c6fc581405ba48c7e2e522206a8f128d7c1c939d1132a00bd7d6366aa82724e968964eb2e373563f607dfa649590dcf5589114df69da5547fef8d1604cc4c6de1ed5783c8746918a4dd31168d6bc8784cd0c769206bd803d6ca8557b66748770402b075ef44b38157d4c0da7c6281725a2065d087b1f7b23455fa673bdeeba45b983311c44eabe9ef4b7bde3420ae9881863", - "d08aacef2d7a41aec09473bd8a44f628e15addb7b9e5b77a1e09c8ab4942f379a0bfcb324d580b774666f18ae78dd36710824ff12393f059068fe4b559c53662c2b0e6c69e23785c8f32554e837ec1714bee902e60737b639dd933af4f68cb9d7de77e1f3b28e5b122891afce62b79acd5b1ab4ba411662cc77d806449e69c5a45a143b742d98ac84a0826d68433b9b700ace6cd472ba2d58a90847f42ce9c43f38ffc017db4bf40450b2eee1f4594dc740c0f", - "6a6058b0a498b7ea76a93c646eb9b8629f0cba4a0c726420c5f67ba9b0412cade356abdf0a4fb94384bad32ce0d5dd9e23dcaae1d6f28ff8683616b30f1392890c67b3a2c04b360893b801f127e527e4da82e239f4c878da13f4a4f1c76db07190e77ec123995168102fb274434a2d1e12913b9b5cbab4aacaad2bd89d88b3ca2b8e60dacf7c22c9379097ff60880f552e320ca3b571994f52534470feee2b39e0dadb5cd88257a3e459a4cc6f12f17b8d54e1bb", - "adeced01fc5671531cbb45679f5ddd42b3a95151677b6125aaf6f5e8f82fbabaa5ecf7c3552c2458587224f0042870f178f5fca5465250e75d71352e652eeed23cdb7f915f5ebb44099b6db116ca1be45530ac8ed32b7f161d60ed4397ad3d7d649ae6bf75ca5bec891d8e595605be9764f3a03965e1fe0eaffbf212e3df4f0fa35e08ff9d0091e6d4ac4748edfe43b611085a6ffec163014655fdd839fd9e81b63b1fa8cae4ec335ec343289758e389a79ceedfae", - "d014592f3a83ba40af366f137c674724916c3cdd3f6cf9d4c5c7c8d6d51ebf26e315e2c12b3546be56fb52382904046ecbd2f5b883aa4ff473de6f0c26ab862c3fa34bf3d880cc1911ce39a4088c6617c179dc5faf68a2c488bbde12d67b50f73abcfab0e3b062e68c95363e11f5f1de8ec36ed01ea21442518089045df67d346135283ad5b3fff80cf57f20876849f6db9fa139728358415a90610f69ec720fc92d8234e3e122551e9df2c644c4a2c4e3734d07de8e", - "c0d0c37838873ba8757d6e41b409605043bc1635edcd731219587676d94217e9f0ab44b71de25000661ce7303b7015f45e6eaa7b7ebef92b8f4a34c902c908d2172185505fa33aca5a41be83079316cdfdd430fc2c45f505f85d867e6d516f7e1bf19c001d9f43018968aab65ec031b3801399231c83ec9e622dab5629922a6b424cab938c135ff7310501c2c02971bfd2f577e25904d1a618baf0859f77f4e8b1d0cde9544e95ec52ff710c0672fdb3d891feeea2b017", - "7022e7f00902219ba97baa0e940e8ac7727f58955aa068c29680fac4a16bcd812c03eeb5adbcfe867a7f7c6b5d89f4641adb9173b76a1a8438866f9b4f640ce2aedf5f1080c890bcf515b4be4e3e512352f1e5323c62ec46cb73f3d71be8235fee55a154763f7c3f9aeb61ffd28f4cd93d3310f608e2133586bf1ab3f102de96f64c68a4668de8acb2a76a7ce0cddddc8fa3df5e9d230823da16ed9ebb402d36e38e6e018795e5a71517ecab5f9ca472b9ced8ff69d2d195", - "acaf4baf3681ab865ab9abfae41697141ead9d5e98523c2e0e1eeb6373dd15405242a3393611e19b693cabaa4e45ac866cc66663a6e898dc73095a4132d43fb78ff7166724f06562fc6c546c78f2d5087467fcfb780478ec871ac38d9516c2f62bdb66c00218747e959b24f1f1795fafe39ee4109a1f84e3f82e96436a3f8e2c74ef1a665b0daaa459c7a80757b52c905e2fb4e30c4a3f882e87bce35d70e2925a1671205c28c89886a49e045e31434abaab4a7aed077ff22c", - "84cb6ec8a2da4f6c3b15edf77f9af9e44e13d67acc17b24bd4c7a33980f37050c0301ba3aa15ad92efe842cd3ebd3636cf945bb1f199fe0682037b9dacf86f162dadabfa625239c37f8b8db9901df0e618ff56fa62a57499f7ba83baebc085eaf3dda850835520344a67e09419368d81012168e5de5ea45158397af9a5c6a1657b26f319b66f816cd2c28996547d697e8df2bb163ccb9dda4d6691dffd102a13667ab9cde60ffbfb872187d9c425a7f67c1d9fffff9276ed0aeb", - "6a52c9bbbba454c14540b2be58230d78ecbeb391646a0c6fcce2f789086a78364b81ae85d5396d7cfa8b46bda41e3083ec5cf7b4c47dc601c8a697df52f557defca248506dbebab25657f5a561d09625b7f4b2f0119a12beeac087efc9d350a735c35d2431c1da7dda99befb17f41a3dc4da0f00bb95366be128538ce27763d81f832fe3c1d4efc07b5b08ad8dc9e65fb5e48546664e18cb2d3bb3fe1f56fa7aae718c5e3bbdeaf70e15023f6a25b72a2d177fcfd04211d40664fe", - "c3c4d3b31f1f5f9538923df3478c84fffaef411520a542da9a220ee4132eabb9d718b5076fb2f985485e8ba058330aed27ddfd3afa3db34aa60301088caec3d0053828c0c2bc87e2e61db5ea5a29f62fdad9c8b5fc5063ec4ee865e5b2e35fac0c7a835d5f57a1b1079833c25fc38fcb14311c54f8a3bd251bca19342d69e5785f9c2e43cf189d421c76c8e8db925d70fa0fae5ee3a28c4047c23a2b8a167ce53f35ced33bec822b88b06f41558c47d4fed1bfa3e21eb060df4d8ba1", - "8d55e92136992ba23856c1aea109766fc44772477efc932b3194af2265e433ed77d63b44d2a1cff2e8680eff120a430fe012f0f09c6201d546e13ad46fc4ce910eab27bb1569879abed2d9c37fae9f1267c2216ec5debcb20d4de58461a621e6ce8946899de81c0add44d35e27b7982a97f2a5e6314901caebe41dbba35f48bc9244ca6dca2bdde7306435892f287036df088633a070c2e385815ab3e2bfc1a47c05a5b9fe0e80dd6e38e4713a70c8f82bd32475eea8400c7bc67f59cf", - "5016284e20362610fa05ca9d789cad25f6d43263787e7e085476764ce4a8908ce99b262b375e9d106170b1bec1f473d5e777e0c1896533040e39c8c1465e07907ef5860e14e4d8310013e35f12090e0bfc687474b1f15f3dd2033a0edac5246102da4deec7e188c3517d84d9c2a0a4497a4c5f82a30f1ba009e45ee6eb3ab4368c720ea6feee428ffd2c4cc52debb8d634a64176572c72368f94a66689f23f8a01218f532117af5a8060d140e7ca435a92882fcb5630ebe14a4805f1dc83", - "05456ec59b8d41bbd736727976b96b38c43827f9e16169be673ff37870c2ecd5f0d1ea1a136be4cc7b047a02a4421d484fd2a12ece418e42ee391a13a0b1df5a0162b29ab70d3fe3e04ba6ab26b37d62b7cf05a5e2f033611bf970b8e1f30e198e483e740fa9618c1e8677e07b61296b94a9787a68fba622d7653b5568f4a8628025939b0f74389ea8fced6098c065bf2a869fd8e07d705eadb53006be2abb716a3114ceb0236d7e916f037cb954cf977720855d12be76d900ca124a2a66bb", - "eb6f60b83fcee77060ff346aaf6ec34d82a8af469947d3b5074cde8eb26566eb1fa039bcc707738df1e95869bd827c246e88436f0614d9834ead5392ef376105c4a9f370071cdeaaff6ca0f18b74c3a48d19a717253c49bd9009ccbfdd5728a08b7d112a2ed8dbafbbb46d7a75dc9a05e09bfde1a0a92d74a51887f9d123d7896e9f9d0057b660ed7d55454c069d3c5260411db4cdc67e7b74f680d7ac4b9dcc2f8baf72e15e6b3cafebcdf449a6436ed2c398b675f79c644747c57553bf7ea2", - "187a88e88514f6c4157c1ba40b442baae1ae563a6c989277443b12a219aa484cb9fa8adbb9a29d429f50155321b15664926317477079c7060dfdaa84c1d74bba78892c34e6f21ad35208d2ae622012401696bff5cd57b6485944b3db7b9071fa5f57fbfb1085d91bb9cff5808d662cdc6c8157249478262c44b7fbc397ed42a4977b202e817717bfccc9f0467294062313f7705251ed09573f16d23429361fada259dfb300369c4198f07341b38e84d02cdb74af5de6aab1fc2026208ea7c418c0", - "be31bc96606d0fab007e5caeded2f1c9f747c759777e9b6eef962bed49e45a1d4fc993e279d024915e600865ecb087b960584be18c41114d3c43f92169b9e0e1f85a0ebcd4e196376ccdc920e66103cd3b1c58407d0aafd0e003c4e341a1daddb9f4faba974362a32f35db83384b05ae8e3322d728893861afd8b1c940de5a17f691e763ce4969b6d94f67fb4a0235d100225bd8602f291388f0ca4a568748ad0d6040f1262eac2aede6cd27419bb78a394c1ffad72c262be8c3f9d9619d633e51d0", - "4d83d85ca838b4518588f2a90228a4dd18f14dd5b4c012d26298a97d848abbd825d221d02cceb6e8c701b4ad00e1dee4889b5c533e4bb60f1f41a4a61ee5478be2c1b1016c30345afd7a5253668260515e70751f22c8b4022d7fe4877d7bbce90b46531507dd3e89549e7fd58ea28f4cb23d33662bd003c1345ba94cc4b06867f778957901a8c441bee0f3b12e16463a51f7e50690356971dd73a686a49fda1eae46c9d54fba262811d698025d0ee053f1c58591c3bb3cbde69de0b31549ef5b69cf10", - "cdeb07d36dc5f9a1cd717a9e9cca37a2ce93caa298eee63571f7d6c5fde2a11c666cf53cf2dcb41ca2ea2319e7230ca68e38c647905928713a13982bf47fe33d7095ebd50b2df976208920a43eb2e29b942f32467403c45cea18bf44e0f6aeb155b48a8e5c471fec972a9d62f7ae093d2758f0aaec7ca50cb4725bfa219f1a3a46ad6bde7361f445f86b94d66b8ece080e56c510250693a5d0ea0ae87b4421860b853bcf0381eae4f1bf7c5c0472a93ad18407bc88475ab8560d344a921d3e86a02da397", - "a598fad52852c5d51ae3b10528fc1f722e21d44fbd42ae5acdf20e85a28532e646a223d27fd907bfd38eb8bb75175636892f8242877aab89e8c0824d368f3339ce7a82aa4e5af6db1f3b588a4d667a00f67bee37cfd2724dde06d2909fb9e58d892f4cfd2c4ca85acdf8256f5458b030a6bda151154ff2e6d7a8da90b54a2884c8a99fab5a4ac211ff23dc0975f4f592fd1b6b9dc7783bdcd2d4ca4e68d2902f2013e122cb62e2bff6b0a98ec55ba25837e21f1cfe67739b568d43e6413dab2bd1dc471e5a", - "17b68c74c9fe4926e8102070916a4e381b9fe25f5973c9bd4b04ce25749fc18931f37a65a356d3f5e5a1ef125d546f4f0ea797c15fb2efea6fbfcc5739c564693d47adeb12dcb3d98a2830719b13247792cb2491dca159a28138c6cff925aca42f4fdb02e73fbd508ec49b25c60703a7595a3e8f44b155b371d525e48e7e5dc84ac7b17c52bf5e526a67e7187234a2f19f57c548c70fc0b27183df73ffa53fa58b658034c896fa791ae9a7fd2620f5e46ce84c842a6e60e9324ae4db224ffc87d9617cb85ca2", - "b9e4267ea39e1de1fed0579f93bb351007c9f8fcdd811053fae33f09e2753d7428f04e1a9efcd45ea701a5d87a35b3afb2e6b65365dee6ead0bbb611b7797b212ac688653f542e604a39df277f12514ddfee3b4e27b98395c2cd97a203f1f1153c50327965770802ec2c9783edc428271762b275471e7ac65ac36523df28b0d7e6e6ccc7674268a132a63411fc82c0738dbb68af003b769a0bf9e6587b36476cb465350fee13f88ea355d47ffac7b0f964f4139db11b7642cb8d75fe1bc74d859b6d9e884f75ac", - "8ca704fe7208fe5f9c23110c0b3b4eee0ef632cae82bda68d8db2436ad409aa05cf159223586e1e6d8bdae9f316ea786809fbe7fe81ec61c61552d3a83cd6beaf652d1263862664df6aae321d0323440430f400f291c3efbe5d5c690b0cc6b0bf871b3933befb40bc870e2ee1ebb68025a2dcc11b68daadef6be29b5f21e440374301bde1e80dcfade4c9d681480e65ec494a6af48df232c3d51447b9d06be714949249c44c43cf73ed13ef0d533e770284e51369d94ae241a5fb2f163893071b2b4c118aeaf9eae", - "4fd8dd01012bb4df82bf42e0683f998e6f52dd9c5617bae33f867d6c0b69798cead8179346d70acc941abbbdd26e3229d5651361d2252c72ff22db2938d06ff6fc29a42fdf800ae967d06479bc7bbb8e71f40b1190a4b7189ffc9a7096cdb76d40aec424e1388e1eb7ef4ac3b34f3f089da8fda7d1927f5d775c0b2801d22dd1265c973158f640cec93edfed06dc80b20ef8c496b98289d54d46ccd205951cbb0f4e7daeb866b60bacb483411e4382b6f04d472843186bd0e31fbaa93e5c901ec028efafeb45fc551a", - "e9ee1b22b04b321a5fdd8301627011f583887d77560fb0f35552e207561f81e38ac58a0d0aeaf832d1ee72d913720d01f75574e9a321864fe95f4d0d8f0b8db97649a53e71e940aede5c40b4b9105daa42a6fb2811b61209247534cbaf830b07abe338d75d2f5f4eb1c3cf151e9edabe2c8d5f6fff08fac1495ef48160b100d30dcb0676700bcceb28723a29980ab0766a93abb8cb3d1963007db8458ed99b689d2a7c28c788743c80e8c1239b20982c81dadd0eed6740c65fbc4ef15c7b5569cb9fc997c6550a34b3b2", - "ec01e3a60964360f7f23ab0b22e021815765ad706f242265ebc19a2bb9e4eac94393952dcf61aae47682671a10f9165f0b20adf83a6706bfbdcf04c6faba6114653a35584267267873291c6fe7ff5f7695243143421509502c8875aafa9e9afe5be5ef2c851c7f35d69be5d3896000ccdbbfab5c238bb34d607cfe2d55d748880545b4aa7ca61137992925189025c62654b1f20d49c3ccd75aa73ce99cd7258dabedd6480a9f5185531fc0118beb68cc0a9cd182f6973287cf9252e12be5b619f15c25b65c71b7a316ebfd", - "db51a2f84704b78414093aa93708ec5e78573595c6e3a16c9e15744fa0f98ec78a1b3ed1e16f9717c01f6cab1bff0d56367ffc516c2e33261074935e0735ccf0d018744b4d28450f9a4db0dcf7ff504d3183aa967f76a507357948da9018fc38f150db53e2df6cea14466f03792f8bc11bdb5266dd6d508cde9e12ff04305c0295de29de19d491ad86e766774bb517e7e65befb1c5e2c267f013e235d8483e177214f89978b4cdc81aa7eff8b39f2825ad3a1b6ac1424e30edd49b067d770f16e74dd7a9c3af2ad74289a676", - "00e40f30ae3746edad0f5dd03d0e640933cf3d1694804c1e1ed6399ac36611d405196ee48f129344a8512feda16a354517871322bd5d9c6a1b592933eab531923efb393ffb23d9109cbe1075cebfa5fb917b40df028a621460ff6783c798792cb1d9635b5a6f84ec13918fa302924649b5c7fcb1f7007f0d2f06e9cfd7c27491e565a96c68a0c3644f92cd8f38857258c33801c5d537a83dfe583cba59d7eec7e394199c0a2660a62fabe3ed2099d57f315a6cd8de1a4ade29d977f15d65759cff433e5ac0c182aef3761163e1", - "3c5ea24d0d9b618294a263f062b2414a722be4eb10dfc346a6ec3b821d7396eba61cd6ef33618b04cd087a811f299d4606820227f16000d7c839062b96d3e3f59cd1a082448d13fc8f56b3fa7fb5f66d0350aa3b72dd7c165d590282f7da2e12cfe9e60e1796122bb8c2d40fdc2997af634b9c6b127a893dfb3467909378300db3da911be1d7b616bb8e0572433e65527e15d936500a2c60e9f9909dcf22ab5e4b6700f0238c205b4a813626fac3d945bab2637fb08203044a73d20c9a3fcf7c3fc4eb7807c3276dd5f73ce89597", - "9271aeeebfac46f4de85df78f1bfd36136aa8905e15835c9e1941176f71e3aa5b1b131843d40479735e23e182a2bd71f66f6149dccb7ed8c16469079dc8590bbf165374951785f4531f7e7361de62f936cfb23a2b5bdf186632e7042a0dd451fdc9b7208f923f3a5f250ae590ec348c63a16c3aacaf7379f53b5dd4152dcd40d23e683e2156e64c592ffc07e2cd6bbeebef4dd590b2f6b2bcbf08fcd111c079f5c4033adb6c17574f8756ecd87be27eff1d7c8e8d0324438d59ae171d5a17128fbcb5533d921bd044a2038a5046b33", - "4e3e533d5bcb15793d1b9d0468aaee801f32fdb486b11027183553a09ddbee8213924296f2815dc61577297459e834bf1c7a53f87d43782209e589b8295219ba7073a8fff18ad647fdb474fa39e1faa69911bf83438d5f64fe52f38ce6a991f25812c8f548de7bf2fdea7e9b4782beb4011d3567184c817521a2ba0ebad75b892f7f8e35d68b099827a1b08a84ec5e8125651d6f260295684d0ab1011a9209d2bdeb75128bf5364774d7df91e0746b7b08bda9185035f4f226e7d0a1946fcaa9c607a66b185d8546aac2800e85b74e67", - "b5d89fa2d94531093365d1259cc6fe8827fea48e6374c8b9a8c4d2209c280fa5c44958a1847222a692a59e6aa2696e6cdc8a543dd89b0ce03bc293b4e78d6ef48e1839694ccd5c65661143095c705b07e3ced84a0f5959114dd89deb956ab3fac8130eb4a878278205b801ae41a29e34146192308c4e759b374757b0c3b00319bce92a1b95a4d2ee179fd6714ff96155d26f693a5bc973f84ac8b3b91e3926276297532d98b46992a3f104c08100bf1671c43134bac280c617da711e90a0100137525375ebb12802a428885ae7fce6514a", - "40e3d8048fc10650cb8a7fc2e7113e26dec34f9ca2d5129cd10a8e8e44d113d61ee48c7d003e19fd307fc6debd70feb30243f298c510ccc4418355ce143066f067ad7c6de7288c3080e7ad46a23c8d34deb55a43e652fe90444ad3c57d3ec1e1c489d63ef915a24bc74a7925a0a7b1e1523f21ca8fee78df24e3d0a68d0013423db97c280799a0618229c0f2c167289a891e5c8d6661ab21285951c31710e3b5fe55f6347fe16d9b40507948a59252efeb616df83e5c098b07d0a7247cd371daff0e50491c582503fd89f79ba94d6af9ed76", - "1fa444de01dd3901e2b4684e3d7a799ffa02d85afd35fb30fe4c9d672837bee6dd8a3b8608b4bb5e589220ad5a854f46b46e41c6d57ad124a46beab4169ff69fee7e3838a6165e19dad8eb5d7bf53d4edd3cd2769daf219510a02fdd2afe0c0e1da3cd30fcd1aa88b68965586f07a25a1720fbd90a096ea30fc8e945e3637d7857c8a9c0ab4154ffb2000e57b5f9adfa4e4eaf8065bc3c2b2e75f495963325588785a6ce417dcddffd299873b15dcccca128d63cd4eeeadb64cda28099a9ad7c80d34844901f26b88b00b9aafeb2f90286d29d", - "fde0a0d9d813983bd1f55cf778a003a2023b34a555322ab280584537bc6bdd844d22a7d6066c18da83ec09f3d8d5a1aab4be0d5ce19b436052f6e259a4b49017a1f47f1fe2bf115d5bc8599fb216351c60dd6b1bedb2e6f4dcadf424b833501b6f099cbfad9e2290680fb69c25032b42a6274f7cb9b5c5950401354838a45f7cb77b95bf54718e2f3d3d9fb91eb2311903980277396398d9736d8e92fd838594ac8a537c6c529db5a8a4f89290e6ba6f20ac0e5ed6fef40901d0e0e8e3e502990811f9acaae555dd54eb1bcd96b513e2fe751bec", - "9f8e0caec87858599f5ab29bff86da78a841a918a023a111098687ecdf2747612d3f3809d9ca400b878bd4f92c43a1004f1c17c7f19a3cd1ce449bd2b23aff551623c37dd8c0be56bf3fd857b500c2b9f9ccea62481944090a3cf3b6ee81d9af8eeb60f65ef150f9fa4d3ed6ce4762d3d4f174ee8ccd460c25cafac0ea5ec8a6a4b2f9e8c0520cb7061155e532cb65f188b01e4b9086db951f504b060c296b326b3fc1c590498ecce594f828f4a10ea416675720ae505295d38a791bd0e93f428448a8f4c1fc0af53604a9e8255384d29ae5c334e2", - "33d1e683a4c97ee6bbaa5f9df1a88cb53b7f3c157b6045d70a56fda0ccbd3a1fa1f049cd564da072b53f415bf5fb843771c1d2551fd075d33377362b2f7c0645f9723123d11975991db8a2b518f02e2c7c30342a044754290bae2c77496d755e5981f12e6b0a0174280b958bf11ed628a9062775993ced04bf752ea8d165e3ac2177d7cd1b9371c44efa98f0b3e68602a839d384eec007979f46429dafb138cbc231ad928a9f65f7d66fac77416395e8f1debaaf76ec2e4e03e8674102cd26f614739f3ec9f949033df1fb97e87c2326d65aef94ed5f", - "180048f09d0b480887af7fd548a85abf605440c1ddde6afe4c30c30670233f7bf928f43b4681f59279ebbda5e8f8f2a1abefdee129e18ac60f9224e90b38b0aabd01308e0a27f41b6fb2ee07ee176ec9048c5fe33c3f7c791469c81f30e28170585b9f3e7e3c8c2e9d74370cb4518f13bf2dee048cbd98ffa32d85e43bcc64a626b40efb51ce712925fdd6fee006dc68b88004a81549d2121986dd1966084cd654a7c6686b3bae32afbd9625e09344e85cf9611ea08dfce835a2e5b3726e69ae8a76a97db60fcc539944ba4b1e8449e4d9802ae99fae86", - "13c0bc2f5eb887cd90eae426143764cf82b3545998c386007cca871890912217aa143ac4ed4ddb5a7495b704aa4de18419b8664b15bc26cfc6596a4d2ae408f98b47a566476d5802d594ba84c2f538def9d016661f6404bb2337a3932a24f6e30073a6c9c274b940c62c727242e24466084a3ea336365d71ea8fa6499c0ea8d59eea505f1126b99c795023c4963aa0d99323d0391e8701110edf551b2d3799e1063ca443f1add162156e445502ca1a052fe70c289838593b58839fc63de128a03e2bbf389e22ae0cf957fd03315ee407b096cc1cfd92dee6", - "6f1eb607d679efef065df08987a1174aab41bdac8aece7726dfa65805d6fff5b3d17a672d96b770dc32165f144f0f7324822a5c87563b7cd9e37a742ae83ef245d09006d91576f435a03476f509ea2936636232f66aa7f6cdf1ac187bbd1fcb8e20f8791866e60ed96c73374c12ac16795e999b891c64507d2dbd97e5fc29fac750ad27f2937cbcd29fdafccf27ab22453834d475f6186eaf975a36fad5c8bd61c21da554e1ded46c4c39765dcf5c8f5ccfb49b6a4dc562c919d0c7d8940ec536ab2448ec3c9a9c8b0e8fd4870cad9de2577c7b0c38563f355", - "dcdd993c94d3acbc555f464871a32c5da6f13b3d5bbc3e34429705e8ad2e76393fdd96a69a94acb652f5dc3c120d41187e9aa919669f727c4868013b0cb6acc165c1b7706c52248e15c3bf81eb6c147619467945c7c48fa14a73e7c3d5bec91706c567145342a026c9d97eff97ec672c5debb9df1a998083b0b0081d65c517b3e5634c95e347e781aa30ca1c8af815e2e494d844e847fdcb41622894a518dc36571123a40bfdbe8c4f4cff44d83c61dd9dcd24c464c53b395edb31efee9f3aa080e87cdc3d22d613ae84a53c9249c32c96f9a3bc4629bb126a70", - "49971f9823e63c3a72574d977953329e813b22a8387cd13f56d8ea77a5d1a8a20012632d1d8732bbcb9f756b9675aab5db927beacab7ca263e5718b8dfa7b2eed9a91bf5ed163b16139d45f7b8cc7e3f7bdda6202106f67dfb23b7c315ee3e17a09d466b1e6b13e7c7428184a979f5358667b4fa8bd40bcc8ea46058db44587a85377ac46bf155136c09ac58cb6c27f28e17028c91e7e8f74d5b500e56293b316974f02b9d9ea205d9b6ac4cfb74eb8eb0c944577fd2f41316368307beab3e327bf7dbaa0a4428836ec4e895dea635234abeaf113ceeadac33c7a3", - "c57a9cc958cee983599b04fe694f15fb470fcbc53e4bfcc00a27351b12d5d2434444253ad4184e87b81b738922ffd7ff1dc1e54f39c5518b49fb8fe50d63e3935f99e4bd125e8dc0ba8a17fd62de709339a43fabe15cf86d96a54010112170c340cfac4132182eed7301402bc7c8276089dec38488af145cb6222525894658f03501204b7a66aba0be1b557b28a2f652d66f7313ed825ecc4d8596c1be7420d4425b86a1a90a5b7f30d0f24e0d1aae0eb619ca457a71699e44be612a4011c597ee80b94d5507e429d7fc6af22579cd6ad642723b05ef169fade526fb", - "0568a672cd1ecbaa947045b712e2ac27995392fbef8f9488f79803cbee561c212287f080eca95adb5ba42739d78e3ba667f06045d87850d3a0499358649caa257ad29f1a9c511e7054db20554d15cbb55ff854afa45cae475c729cea72ede953522031865bc02b95589ed4d9841c552a8cc94904a93ed09ed77222f6c178195056be59bc4e96a815adf534e6b466fb47e262ff79c803c157a21b6e2269c2e0abeb494113cd868d8466e82d4b2f6a28b73645853d96bc9242515d803e33294848d3fe42fdff68da53c03491636beede47ff1399dd3d54a5e914d55d7adf", - "3f19f61a4cd085796731ac9f85a75a8bce77031932c31762d87d8b8d07b8bd19ff78d6b7d1bd1e87f3a4f41aad03b6c4d17a6cbc86be55f7c8b88ada047bb04f8d49f1c34bcf81cc0f3389ad01a758fc7eeb0072aa9ad1481992bfdde82e438e75590a4423832dfbe3756e2229ea873bc3606e6d72174cb2163bf40b5d49c81009dab85ecc03e311351bbf96e32c030a2b276a7698cb25bc2c967acb3213161a1fdde7d912cd6a804490f8056c47da1333f6e35c41e749c2c23919cb9af5eec5652e6e072b034fb1682e9aaa194a9c0bd456ea0b008d14dbce37967a7a8e", - "705f98f632d99d3651793825c38dc4deda56c59eac539da6a0159c83131cf8ab6f2ee0c3b74111fde351f7aa1a8c500a0cecab17c212d2c58ca09eae608c8eefc922b9902ef8d6832f799ba48c3c28aa702b3242107edeba01daafe424406a3822965056cfe8783455a671e93b1e2eae2321364f1871471c82124df33bc09e1b52882bd7e1c4c7d0b2f3dd4a28c2a002a43246768af0700f9659de99d62167be93177aabf19d678e79e9c726ac510d94e74873eda99620a3961930cd91937c88a06d8153d64fd60da7ca38cf26d1d4f04a0df273f52127c53fdc593f0f8df9", - "ea6f8e977c954657b45f25480ff42c36c7a10c77caa26eb1c907062e24fbca5aebc65cacca0de10abea8c78322f08672e13d8ac16996eca1aa17402eaea4c1cc6c800b22dc18cb8d620192d74bac02c07b5cfa61e513c7f28b7e29b9700e0e442720bf4c669d4995da19d19f841d9eb68cc74153592591e3bf059ef616b95305aa453b32fe99a91afb35bd482cf2b7aa42702837a53be3c38883d2963020e347556f841254ec6b85854485fe8c520b05f2ea67a9bf3981555c20991e2bacd4db5b418228b6002d8d41c025cb472bf5443aaa885974a408ea7f2e3f932c600deb", - "408190134ed06556811b1af808ab2d986aff152a28de2c41a2207c0ccc18125ac20f48384de89ea7c80cda1da14e60cc1599943646b4c0082bbcda2d9fa55a13e9df2934edf15eb4fd41f25fa3dd706ab6de522ed351b106321e494e7a27d5f7caf44ec6fadf1122d227eefc0f57aefc140d2c63d07dcbfd65790b1099745ed042cfd1548242076b98e616b76ff0d53db5179df8dd62c06a36a8b9e95a671e2a9b9dd3fb187a31ae5828d218ec5851913e0b52e2532bd4bf9e7b349f32de2b6d5d3cdf9f372d49617b6220c93c05962327e99a0480488443349f0fd54c1860f7c8", - "5f9e5c6f38573a85010a9d84d33f29c057003b2645e3ea6f72cbc7af95d197ce6a06b13fea81722853e6991791b8b15091cd066f5ed913592ed3d3af5370d39ba22beeb2a582a414b16824b77e194a094c2afdcc09aa73ce36f4943cca5ae32c5017dc398801dd92a47382d9327c9f6cffd38ca4167cd836f7855fc5ff048d8efba378cdde224905a0425e6b1de061fc951c5e624a5153b008ad41160a710b3ff2081748d5e02deb9f841f4fc6cf4a15153dd4fe874fd447482696283e79ee0e6bc8c1c0409baa5ab02c5209c319e3169b2476149c0c6e541c6197ca46e004eef533", - "218c6b3508aec69574f2b5039b30b942b72a8349d05f48ff945bbbe5c8957d5a6199492a6bf54bab821c9377e2edfa4c908384664d2c80112d5e805d66e0a551b941021be17dd20bd825bea9a3b6afb1b8c605805b3bda58750f03ea5c953a698494b425d8980c69f34d1c3f6b5866e8717031152a127215c256e08873c21b0f5cc85875d0f7c94601659150c04cd5fe5d381ba29983a2d94fcd3a65a94c53c7279cd000dddd4253d8cff8d7f6ace10247fe3bc30d63ba4bb54f557b3d22a3924369430d71ab37b701e9500bda70b5a643704858beed4726a889b6c9c91584194c68f1", - "dac26aa7273fc25d6e044c79fc2bfa46e59892a42bbca59a86826c91e76ab03e4bd9f7c0b5f08d1931d88b36ea77d94f7ba67cd4f1d3086e529427201119096ae066ae6f170940830ed7900de7bb9d66e09788287403a4ecc93c6da975d2fb08e918840a236c15f5d3a8f7375c2eeebbf6f01a6e7f29ca2b8d42df158414c320777433663c59fdcd1f39ca68e3473db721be7ce8c6dba5fddc024f94fedb286b0477581d451313ca8c737484daf60d67f9b2d56d4bcc271f7e9ae958c7f258efbc74d25753e0516f28282461941bf2dcc7dd8c7df6173b89760cefcac07190243ff863fb", - "c46e6512e6797cc7a54254a1b26b2de29aa83d6c4b1ea5a2786fbcec388270625b12635eae39e1fba013f8a65219421bca8b52a8ddfd431cda60299bdf160734d5a7450ec79620058522702174ae451b9bfa7c4a455fbbee3e1d048c7d4bac5131018228f137c8e130440c7059b4f15eaa34ce872a851a16ce86f982df78a00be4d564da2003a450ddee9ab43ea876b8b4b65c84f0b39265fd5456417afb5bc54997c986e66fc222f2123ba5e719c4d6b9a177b188277df384f1125821cf19d5248cef0be183ccdc84ac194506f740ed2188b2689ea4c9236a9e9e3a2fff85b6af4e9b49a3", - "1ccd4d278d67b65cf2564ecd4de1b55fe07adc80e1f735fe2f08ea53fd3977323689122c29c798957abaff6aba09bdcbf661d77f4dc8913ab1fe2bef38846166e3834785e7105d746484eff8c656af5d8c7854abc1c62b7fadb65521dc6f793d978bda9838eb3800417d32e8a24d8c8cb1d18a5de6ca79d9e1b0ff9aa25e6218fe944cf18666fecc1e31334b390260dbe0997539e1b02f6366b2aea4f4a21efe04f4b97568fcb39e59919d5ebac6543d5d0f48fc66b923c34aac377dc95c20329b837b6ed5e8d9a3d2089cd0d8f025658006ff41cbdaccca618822ca590ab155253f8bc1c7f5", - "9875209588395ee3c9fdd793fd48717cc84c8c3ea622b2ccc4a1be4448e6034b7810569855255031f10be5ffd714b05f9ce01972d712d40abf03d4d0ce175813a7a668f761324996093fc2aa5912f7fc2abdadd8775d2b4d9ad492216293381460ed8f6db3d641d1525f4242c348bbfe504c704f215dc461de51b5c75c1aae967936963848f16c673eca5e78dfd47eb19001d52d1bcf96c98956dad5ddf594a5da757e7ca35f2f69803b784e66ac5a58b75c228b8266ec592505e5d1ca87d81225738855f15bc0914677e81593fd409e77d159f8a908f67788de9eb06c5561547aada96c47c535", - "40c90e375e366f3756d89091eb3eed9fe0fbfc5638700af4617d358812bac53124a2205dd6756456787d49cd6a35e302479a0992288f47532e4ea7ab62fc5ad5adc690a5d9a446f7e035ad4641bd8dae83946aee3338ec984ccb5cc633e1409f2531eeffe05532a8b0062ba99454c9aeabf8ecb94db195af7032bfebc22912f49d39330add47ff8fa5720612d697f0b602738930e060a1bb214efc5e292224cf34e29deaea6b1b1ff847e94ecc997325ac38df61db45d82bf0e74a664d2fe085c20b04c39e90d6a170b68d2f1d373f00c731c524456ada73d659aaac9df3191a7a3865083343fc13", - "e8800d82e072210ca6d7fa2472028974780b76aad4bcb9ad362422dd05ae3232668251d164daa375a43b26a38cce28dbeb3dee1a4a579f70d0fe7febb29b5ece8aa836e050fb3d188c63aa9c3c0da6c717d86458a6096b5effceb964efdec7035960c09ccd10dea3c5f1c7f9f478d5887ebbe2e15c5ff85dbacbc444bb951c4eec7abecb89ed80187e409e2972ffe1a5f01562af109f2cf09471cf72cf83a3bb8f4e2ef38ed0e326b698296394e5b2718a5000c01425708e8ad0461e62462d8819c2377f13ab1be2c7c9f33dc06fe23cad27b87569f2ce2e56e4b2c60c7b1b3d370841d89ebdc1f192", - "796d6d1447d5b7e8c55cd8b2f8b7010db39f27565f907e3fc0e464ea2d4bb52b37f10e7c6dcfc59231b9cdee12c32aeb4adbc42b86e86eb6defb5b69e6ca75e1f4d0dae3e124e5a1b8b6697f7e10b0403f1f0a5ff848eef3752837a9ba17780f16a9a709188a8d5b89a2fa74adb2e651163b1c2b3d261e225c9158dcd9eb7ac3d6704cee290cdff6bcb3cb90cee030aa0d19d4693655c3c30ac6fc06d2ae37787c47126d57ed9a6bef5f8a6c56859aefc08755739a95aac57a4dd916a92ba9f3afbf969df8085949615033365c751a9a3e1a18cee98a69d22e64009bebf8307169b6c61de0617ecfafdf", - "4f9057183566153cf337b07c3f5556006de54c56b2a1e5326c07aaeabd1886ec6f1641358925db232b2f0dbf75229c796a7395b2f934c1f99090bec1123f3c841b1cb3c5b1ec42ed5408f2940f0c48a9470b852c46d6557853d459cecd2c32bbcd8ee21fa11e385eef0857cba4d8545a61b52a484cdd779db4739fbc7aa9860dcabe0488b98fa0b60c3f7d6153db279000a52ffb573dab37d2ab1896a90e5deb7ac6bbe56239085c325d83a917dc6e8a448425b718c2356b9f3066163555ec444f372e184e02c8c4c69b1c1c2ae2b51e45b98f73d933d18750968945ca85d6bbb22014b4c4015262e3c40d", - "79dcca7d8b81a61359e4aece21f3df7b99518ce70bd2f57a18bab5e7114af2add0a0cea7f319d69f231f060e0a539d9a23fb3e95451ce8c6340cfb09edf931df84203a39226dd9eb278f11b691ef612585b973daab373e65d11325898badf6732100371fd759960fa8fec373268421d28bffdb9b12a430b92fe4b07566ca0c89e616e49f8fc75ccd9cdc66db820d7c02e109aa5ed86b89770262918a518f90a2292f6b68d68ae03992e4259a17a23c84ec2a417f082b5abf3a26e44d2278ecb8ba9456965303a75f25394d1aaf5544590e74b14d8a4cc4050be2b0ebcfe4d2db6b12a02c68a3bcdda70301f3", - "848755dc31e25e9a42f9ec12d847d19f292c14c162c9aba49e972cb123b58b8e57bb263a923929833373858594ff52dbc298dbbc078599194e4c07b0e5fc1e10808bbacdb6e93c72b333685cf961f28eb0d5a395c63266b01f130d25db384b356e5da6d01042fc2359581b89c63b3bb2d1ce897fbc9e83fe85d9666cb60e6a8c657f70caad5387b8a045bf91095606802c8424ea8ac52ef29386dc46183378a5fcb2cb927428b8c070f1c42aafd3bc70ca25437807696a46873cfeb7b80ba2ebc3c4272443d445e46343a1465253a9eebd532a0d1d2c18264b91ff45159f245404ae9335f2af55c802772426b4", - "ecaa6e999ef355a0768730edb835db411829a3764f79d764bb5682af6d00f51b313e017b83fffe2e332cd4a3de0a81d6a52084d5748346a1f81eb9b183ff6d93d05edc00e938d001c90872dfe234e8dd085f639af168af4a07e18f1c56ca6c7c1addffc4a70eb4660666dda0321636c3f83479ad3b64e23d749620413a2ecdcc52ad4e6e63f2b817ce99c15b5d2da3792721d7158297cce65e0c04fe810d7e2434b969e4c7892b3840623e153576356e9a696fd9e7a801c25de621a7849da3f99158d3d09bf039f43c510c8ffb00fa3e9a3c12d2c8062dd25b8dabe53d8581e30427e81c3dfc2d455352487e1255", - "23a3fe80e3636313fdf922a1359514d9f31775e1adf24285e8001c04dbce866df055edf25b506e18953492a173ba5aa0c1ec758123406a97025ba9b6b7a97eb14734424d1a7841ec0eaeba0051d6e9734263bea1af9895a3b8c83d8c854da2ae7832bdd7c285b73f8113c3821cced38b3656b4e6369a9f8327cd368f04128f1d78b6b4260f55995277feffa15e34532cd0306c1f47354667c17018ee012a791af2dbbc7afc92c388008c601740cccbbe66f1eb06ea657e9d478066c2bd2093ab62cd94abadc002722f50968e8acf361658fc64f50685a5b1b004888b3b4f64a4ddb67bec7e4ac64c9ee8deeda896b9", - "758f3567cd992228386a1c01930f7c52a9dcce28fdc1aaa54b0fed97d9a54f1df805f31bac12d559e90a2063cd7df8311a148f6904f78c5440f75e49877c0c0855d59c7f7ee52837e6ef3e54a568a7b38a0d5b896e298c8e46a56d24d8cabda8aeff85a622a3e7c87483ba921f34156defd185f608e2241224286e38121a162c2ba7604f68484717196f6628861a948180e8f06c6cc1ec66d032cf8d16da039cd74277cde31e535bc1692a44046e16881c954af3cd91dc49b443a3680e4bc42a954a46ebd1368b1398edd7580f935514b15c7fbfa9b40048a35122283af731f5e460aa85b66e65f49a9d158699bd2870", - "fe511e86971cea2b6af91b2afa898d9b067fa71780790bb409189f5debe719f405e16acf7c4306a6e6ac5cd535290efe088943b9e6c5d25bfc508023c1b105d20d57252fee8cdbddb4d34a6ec2f72e8d55be55afcafd2e922ab8c31888bec4e816d04f0b2cd23df6e04720969c5152b3563c6da37e4608554cc7b8715bc10aba6a2e3b6fbcd35408df0dd73a9076bfad32b741fcdb0edfb563b3f753508b9b26f0a91673255f9bcda2b9a120f6bfa0632b6551ca517d846a747b66ebda1b2170891ece94c19ce8bf682cc94afdf0053fba4e4f0530935c07cdd6f879c999a8c4328ef6d3e0a37974a230ada83910604337", - "a6024f5b959698c0de45f4f29e1803f99dc8112989c536e5a1337e281bc856ff721e986de183d7b0ea9eb61166830ae5d6d6bc857dc833ff189b52889b8e2bd3f35b4937624d9b36dc5f19db44f0772508029784c7dac9568d28609058bc437e2f79f95b12307d8a8fb042d7fd6ee910a9e8df609ede3283f958ba918a9925a0b1d0f9f9f232062315f28a52cbd60e71c09d83e0f6600f508f0ae8ad7642c080ffc618fcd2314e26f67f1529342569f6df37017f7e3b2dac32ad88d56d175ab22205ee7e3ee94720d76933a21132e110fefbb0689a3adbaa4c685f43652136d09b3a359b5c671e38f11915cb5612db2ae294", - "af6de0e227bd78494acb559ddf34d8a7d55a03912384831be21c38376f39cda8a864aff7a48aed758f6bdf777779a669068a75ce82a06f6b3325c855ed83daf5513a078a61f7dc6c1622a633367e5f3a33e765c8ec5d8d54f48494006fdbf8922063e5340013e312871b7f8f8e5ea439c0d4cb78e2f19dd11f010729b692c65dd0d347f0ce53de9d849224666ea2f6487f1c6f953e8f9dbfd3d6de291c3e9d045e633cfd83c89d2f2327d0b2f31f72ac1604a3db1febc5f22cad08153278047210cc2894582c251a014c652e3951593e70e52a5d7451be8924b64f85c8247dab6268d24710b39fc1c07b4ac829fbda34ed79b5", - "d7314e8b1ff82100b8f5870da62b61c31ab37ace9e6a7b6f7d294571523783c1fdedcbc00dd487dd6f848c34aab493507d07071b5eb59d1a2346068c7f356755fbde3d2cab67514f8c3a12d6ff9f96a977a9ac9263491bd33122a904da5386b943d35a6ba383932df07f259b6b45f69e9b27b4ca124fb3ae143d709853eed86690bc2754d5f8865c355a44b5279d8eb31cdc00f7407fb5f5b34edc57fc7ace943565da2222dc80632ccf42f2f125ceb19714ea964c2e50603c9f8960c3f27c2ed0e18a559931c4352bd7422109a28c5e145003f55c9b7c664fdc985168868950396eaf6fefc7b73d815c1aca721d7c67da632925", - "2928b55c0e4d0f5cb4b60af59e9a702e3d616a8cf427c8bb03981fb8c29026d8f7d89161f36c11654f9a5e8ccb703595a58d671ecdc22c6a784abe363158682be4643002a7da5c9d268a30ea9a8d4cc24f562ab59f55c2b43af7dbcecc7e5ebe7494e82d74145a1e7d442125eb0431c5ea0939b27afa47f8ca97849f341f707660c7fbe49b7a0712fbcb6f7562ae2961425f27c7779c7534ecdeb8047ff3cb89a25159f3e1cefe42f9ef16426241f2c4d62c11d7ac43c4500dfcd184436bb4ef33260366f875230f26d81613c334dbda4736ba9d1d2966502914ec01bbe72d885606ec11da7a2cb01b29d35eebedbb0ecc73ed6c35", - "fd993f50e8a68c7b2c7f87511ce65b93c0aa94dcbdf2c9cca93816f0f3b2ab34c62c586fc507b4900a34cf9d0517e0fe10a89d154c5419c1f5e38de00e8834fe3dc1032abdeb10729a81655a69a12856a78ca6e12110580de879b086fd6608726541cfa9616326bdd36064bc0d1e5f9c93b41278bff6a13b2494b81e238c0c45aea1b07d855e8f3fe1478e373bd9d3957cf8a5e5b9003386793d994c7c575cff2322e2428cbbaa4f47560316ae3354a7478842ff7cc5dcbacb6e871e72b36f06d63a9aaeb9044cfb7974afdc238a5816f537dcf33ee40b4e1a5eb3cff2402b46d548264e133008d284f11b7e4e450bc3c5ff9f79b9c4", - "8df21892f5fc303b0de4adef1970186db6fe71bb3ea3094922e13afcfabf1d0be009f36d6f6310c5f9fda51f1a946507a055b645c296370440e5e83d8e906a2fb51f2b42de8856a81a4f28a73a8825c68ea08e5e366730bce8047011cb7d6d9be8c6f4211308fad21856284d5bc47d199988e0abf5badf8693ceeed0a2d98e8ae94b7775a42925edb1f697ffbd8e806af23145054a85e071819cca4cd48875290ca65e5ee72a9a54ff9f19c10ef4adaf8d04c9a9afcc73853fc128bbebc61f78702787c966ca6e1b1a0e4dab646acdfcd3c6bf3e5cfbec5ebe3e06c8abaa1de56e48421d87c46b5c78030afcafd91f27e7d7c85eb4872b", - "48ec6ec520f8e593d7b3f653eb15553de246723b81a6d0c3221aaa42a37420fba98a23796338dff5f845dce6d5a449be5ecc1887356619270461087e08d05fb60433a83d7bd00c002b09ea210b428965124b9b27d9105a71c826c1a2491cfd60e4cfa86c2da0c7100a8dc1c3f2f94b280d54e01e043acf0e966200d9fa8a41daf3b9382820786c75cadbb8841a1b2be5b6cbeb64878e4a231ae063a99b4e2308960ef0c8e2a16bb3545cc43bdf171493fb89a84f47e7973dc60cf75aeeca71e0a7ebe17d161d4fb9fe009941cc438f16a5bae6c99fcad08cac486eb2a48060b023d8730bf1d82fe60a2f036e6f52a5bff95f43bbe088933f", - "f4d84ed3e564c102600a795eaa9b1eaf4ad12f1a4deca1d042a0a2750ddf6201db03073d8bf553cb9dde48a1b0083827a609f7242b86584cc180964ae794b12ce55661e00e36a6ba4dbc389e6a5a85f1b45df9af7ead1b0a54db56e68639b9d438a91504e82c35d40c7bc7e048a53ac0b04accd0dadf4ac9884b0ca0e3cb5ba4336e3581be4c4760a553823ffa283a1120d4e145af56a59f2533903650f0b9e9ad9fe2e8a3c3c3dd03a1fcb709032c8835324839c735b0c051d0cbd8b5d867617c11023432e4bd275d3d0eb98a0b6cf58071a5b712922f2bc751ac7c2588c447444cde2f37a8ea5ec126425bf517e0d17c9e2999f52fee14b3", - "2ccea21bac9c2b70d3923309cbf2d7cb7abd1fcc8b8b002688870a80029c62397350c3c898194e5deea360bb963d26d485cb7963f8167586976ec0556950b2e86135f4a2800991ce8473bfd44a3c5e937a48b5e355ba5141bccf2131a83988d9d2a9e8e7635a956105b3512c05ef708139ced51d7a4e204c12d8a49a21e8dc6de2629a2fd092326885d9f218745fe09f6d91fb6afce250a30a63689534b6be1f26899ffa3767d835cf586aa47776700f94241bc999b1e3deefe188f37ff734f5f16ee6a00914323dc7b8a143c9137cdcc5cd08ae9566f04bb2941532674c97dff6ffa5ce3405ef8e5d27ec403114253dd6394c0167d72a0044c5", - "2b681c6398aee63bf862770341648bbcd31d7de7903c5903fe3d9469311320bb24d914f2af0cdca199c97214c7c679dc32a2800ba484a03c010ea6be3bb9f2c87e30a98b606050b8a3f297f12b8f92caaeceb3e844652115934874e0a1ab093a73d759b53f6a6c3096940dd22c2bb96ce6820a7b9c6d71a208de9892aa6a7209b0fff56a0cafea52b952cdd6f5752cff3309d448800b4e4c878aa595595b56b12b83fcd6ca89520c7da664e449d7b4438fc455888aad5de0fad9a06eed14afd3513b5ebbffe01775549b701181bd26370764f56eba52fdb24286ad1ac0f5418a7c429f7dfc7f3168437fa8eed7a2ed7c723a485e4c3ed14dea2e07", - "aadfd505a89f4aade2c3018258a7e039401b1fc6a7f3d87910dddbb880d372ec8a13c70d92245de5b8e5f9a285c33b99dc82fa2b22decee72b93a72211656ad7a52696c8e570f78be28c0e427a371dafde856e8d5ed24f83b0660b51e7fac05d93a8666dfde6def59af863f80f3e5f6801182c87422203df390dcb736b8f830052a8832eeeb0b4e27e732aaf793d166b5a3ec7745aeef3766937c2b75a276bddd145f6010c29d035e343e267cb2d828436876ec3a7ebe3b6347d4172f7a99d6821ce152e039e53deb33340b324c7f068ffb94b3cde35a8eaa12d15c3806a7ad0acec3e8c7078c1d32a28fd3eec9f32cb86e4c22166ff69e83785e851", - "1605b8cce529a9d6262fd4390d9e4ae5e14e0adc0ec89b028ef68dd0f373ea259aaa96f2967091dd0874c0105385e9e6da9ca68297c31afa44ef834535fb302ce5b4e49edacbbdf359fe1228a8172495b3e57014c27edd58b685110980056c50c398a64f4923f2d720b4df16d75cb36b4233660694182099c35028a972519c24764fc94e18e582b24deb3491535fc06b83837c7958522800e822201d694af0bd0aa3834e17d4b1ba36f470905ae5f8bbeeb6c4c8604d8af02baa347b07086d6989867ddd5e8e8ed7740c3469bfa2810519c55c6add1332c4c54ee9097961d6741cb12a09713a0d07645f784f42f5ad94b48b836b34263130b0483f15e3", - "ff9c6125b2f60bfd6c2427b279df070e430075096647599bdc68c531152c58e13858b82385d78c856092d6c74106e87ccf51ac7e673936332d9b223444eaa0e762ee258d8a733d3a515ec68ed73285e5ca183ae3278b4820b0ab2797feb1e7d8cc864df585dfb5ebe02a993325a9ad5e2d7d49d3132cf66013898351d044e0fe908ccdfeeebf651983601e3673a1f92d36510c0cc19b2e75856db8e4a41f92a51efa66d6cc22e414944c2c34a5a89ccde0be76f51410824e330d8e7c613194338c93732e8aea651fca18bcf1ac1824340c5553aff1e58d4ab8d7c8842b4712021e517cd6c140f6743c69c7bee05b10a8f24050a8caa4f96d1664909c5a06", - "6e85c2f8e1fdc3aaeb969da1258cb504bbf0070cd03d23b3fb5ee08feea5ee2e0ee1c71a5d0f4f701b351f4e4b4d74cb1e2ae6184814f77b62d2f08134b7236ebf6b67d8a6c9f01b4248b30667c555f5d8646dbfe291151b23c9c9857e33a4d5c847be29a5ee7b402e03bac02d1a4319acc0dd8f25e9c7a266f5e5c896cc11b5b238df96a0963ae806cb277abc515c298a3e61a3036b177acf87a56ca4478c4c6d0d468913de602ec891318bbaf52c97a77c35c5b7d164816cf24e4c4b0b5f45853882f716d61eb947a45ce2efa78f1c70a918512af1ad536cbe6148083385b34e207f5f690d7a954021e4b5f4258a385fd8a87809a481f34202af4caccb82", - "1e9b2c454e9de3a2d723d850331037dbf54133dbe27488ff757dd255833a27d8eb8a128ad12d0978b6884e25737086a704fb289aaaccf930d5b582ab4df1f55f0c429b6875edec3fe45464fa74164be056a55e243c4222c586bec5b18f39036aa903d98180f24f83d09a454dfa1e03a60e6a3ba4613e99c35f874d790174ee48a557f4f021ade4d1b278d7997ef094569b37b3db0505951e9ee8400adaea275c6db51b325ee730c69df97745b556ae41cd98741e28aa3a49544541eeb3da1b1e8fa4e8e9100d66dd0c7f5e2c271b1ecc077de79c462b9fe4c273543ecd82a5bea63c5acc01eca5fb780c7d7c8c9fe208ae8bd50cad1769693d92c6c8649d20d8", -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2x.go b/vendor/golang.org/x/crypto/blake2b/blake2x.go deleted file mode 100644 index c814496a..00000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2x.go +++ /dev/null @@ -1,177 +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 blake2b - -import ( - "encoding/binary" - "errors" - "io" -) - -// XOF defines the interface to hash functions that -// support arbitrary-length output. -type XOF interface { - // Write absorbs more data into the hash's state. It panics if called - // after Read. - io.Writer - - // Read reads more output from the hash. It returns io.EOF if the limit - // has been reached. - io.Reader - - // Clone returns a copy of the XOF in its current state. - Clone() XOF - - // Reset resets the XOF to its initial state. - Reset() -} - -// OutputLengthUnknown can be used as the size argument to NewXOF to indicate -// the the length of the output is not known in advance. -const OutputLengthUnknown = 0 - -// magicUnknownOutputLength is a magic value for the output size that indicates -// an unknown number of output bytes. -const magicUnknownOutputLength = (1 << 32) - 1 - -// maxOutputLength is the absolute maximum number of bytes to produce when the -// number of output bytes is unknown. -const maxOutputLength = (1 << 32) * 64 - -// NewXOF creates a new variable-output-length hash. The hash either produce a -// known number of bytes (1 <= size < 2**32-1), or an unknown number of bytes -// (size == OutputLengthUnknown). In the latter case, an absolute limit of -// 256GiB applies. -// -// A non-nil key turns the hash into a MAC. The key must between -// zero and 32 bytes long. -func NewXOF(size uint32, key []byte) (XOF, error) { - if len(key) > Size { - return nil, errKeySize - } - if size == magicUnknownOutputLength { - // 2^32-1 indicates an unknown number of bytes and thus isn't a - // valid length. - return nil, errors.New("blake2b: XOF length too large") - } - if size == OutputLengthUnknown { - size = magicUnknownOutputLength - } - x := &xof{ - d: digest{ - size: Size, - keyLen: len(key), - }, - length: size, - } - copy(x.d.key[:], key) - x.Reset() - return x, nil -} - -type xof struct { - d digest - length uint32 - remaining uint64 - cfg, root, block [Size]byte - offset int - nodeOffset uint32 - readMode bool -} - -func (x *xof) Write(p []byte) (n int, err error) { - if x.readMode { - panic("blake2b: write to XOF after read") - } - return x.d.Write(p) -} - -func (x *xof) Clone() XOF { - clone := *x - return &clone -} - -func (x *xof) Reset() { - x.cfg[0] = byte(Size) - binary.LittleEndian.PutUint32(x.cfg[4:], uint32(Size)) // leaf length - binary.LittleEndian.PutUint32(x.cfg[12:], x.length) // XOF length - x.cfg[17] = byte(Size) // inner hash size - - x.d.Reset() - x.d.h[1] ^= uint64(x.length) << 32 - - x.remaining = uint64(x.length) - if x.remaining == magicUnknownOutputLength { - x.remaining = maxOutputLength - } - x.offset, x.nodeOffset = 0, 0 - x.readMode = false -} - -func (x *xof) Read(p []byte) (n int, err error) { - if !x.readMode { - x.d.finalize(&x.root) - x.readMode = true - } - - if x.remaining == 0 { - return 0, io.EOF - } - - n = len(p) - if uint64(n) > x.remaining { - n = int(x.remaining) - p = p[:n] - } - - if x.offset > 0 { - blockRemaining := Size - x.offset - if n < blockRemaining { - x.offset += copy(p, x.block[x.offset:]) - x.remaining -= uint64(n) - return - } - copy(p, x.block[x.offset:]) - p = p[blockRemaining:] - x.offset = 0 - x.remaining -= uint64(blockRemaining) - } - - for len(p) >= Size { - binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) - x.nodeOffset++ - - x.d.initConfig(&x.cfg) - x.d.Write(x.root[:]) - x.d.finalize(&x.block) - - copy(p, x.block[:]) - p = p[Size:] - x.remaining -= uint64(Size) - } - - if todo := len(p); todo > 0 { - if x.remaining < uint64(Size) { - x.cfg[0] = byte(x.remaining) - } - binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) - x.nodeOffset++ - - x.d.initConfig(&x.cfg) - x.d.Write(x.root[:]) - x.d.finalize(&x.block) - - x.offset = copy(p, x.block[:todo]) - x.remaining -= uint64(todo) - } - return -} - -func (d *digest) initConfig(cfg *[Size]byte) { - d.offset, d.c[0], d.c[1] = 0, 0, 0 - for i := range d.h { - d.h[i] = iv[i] ^ binary.LittleEndian.Uint64(cfg[i*8:]) - } -} diff --git a/vendor/golang.org/x/crypto/blake2b/register.go b/vendor/golang.org/x/crypto/blake2b/register.go deleted file mode 100644 index efd689af..00000000 --- a/vendor/golang.org/x/crypto/blake2b/register.go +++ /dev/null @@ -1,32 +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. - -// +build go1.9 - -package blake2b - -import ( - "crypto" - "hash" -) - -func init() { - newHash256 := func() hash.Hash { - h, _ := New256(nil) - return h - } - newHash384 := func() hash.Hash { - h, _ := New384(nil) - return h - } - - newHash512 := func() hash.Hash { - h, _ := New512(nil) - return h - } - - crypto.RegisterHash(crypto.BLAKE2b_256, newHash256) - crypto.RegisterHash(crypto.BLAKE2b_384, newHash384) - crypto.RegisterHash(crypto.BLAKE2b_512, newHash512) -} diff --git a/vendor/golang.org/x/crypto/blake2s/blake2s.go b/vendor/golang.org/x/crypto/blake2s/blake2s.go deleted file mode 100644 index ae0dc922..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2s.go +++ /dev/null @@ -1,187 +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 blake2s implements the BLAKE2s hash algorithm defined by RFC 7693 -// and the extendable output function (XOF) BLAKE2Xs. -// -// For a detailed specification of BLAKE2s see https://blake2.net/blake2.pdf -// and for BLAKE2Xs see https://blake2.net/blake2x.pdf -// -// If you aren't sure which function you need, use BLAKE2s (Sum256 or New256). -// If you need a secret-key MAC (message authentication code), use the New256 -// function with a non-nil key. -// -// BLAKE2X is a construction to compute hash values larger than 32 bytes. It -// can produce hash values between 0 and 65535 bytes. -package blake2s // import "golang.org/x/crypto/blake2s" - -import ( - "encoding/binary" - "errors" - "hash" -) - -const ( - // The blocksize of BLAKE2s in bytes. - BlockSize = 64 - - // The hash size of BLAKE2s-256 in bytes. - Size = 32 - - // The hash size of BLAKE2s-128 in bytes. - Size128 = 16 -) - -var errKeySize = errors.New("blake2s: invalid key size") - -var iv = [8]uint32{ - 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, - 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19, -} - -// Sum256 returns the BLAKE2s-256 checksum of the data. -func Sum256(data []byte) [Size]byte { - var sum [Size]byte - checkSum(&sum, Size, data) - return sum -} - -// New256 returns a new hash.Hash computing the BLAKE2s-256 checksum. A non-nil -// key turns the hash into a MAC. The key must between zero and 32 bytes long. -func New256(key []byte) (hash.Hash, error) { return newDigest(Size, key) } - -// New128 returns a new hash.Hash computing the BLAKE2s-128 checksum given a -// non-empty key. Note that a 128-bit digest is too small to be secure as a -// cryptographic hash and should only be used as a MAC, thus the key argument -// is not optional. -func New128(key []byte) (hash.Hash, error) { - if len(key) == 0 { - return nil, errors.New("blake2s: a key is required for a 128-bit hash") - } - return newDigest(Size128, key) -} - -func newDigest(hashSize int, key []byte) (*digest, error) { - if len(key) > Size { - return nil, errKeySize - } - d := &digest{ - size: hashSize, - keyLen: len(key), - } - copy(d.key[:], key) - d.Reset() - return d, nil -} - -func checkSum(sum *[Size]byte, hashSize int, data []byte) { - var ( - h [8]uint32 - c [2]uint32 - ) - - h = iv - h[0] ^= uint32(hashSize) | (1 << 16) | (1 << 24) - - if length := len(data); length > BlockSize { - n := length &^ (BlockSize - 1) - if length == n { - n -= BlockSize - } - hashBlocks(&h, &c, 0, data[:n]) - data = data[n:] - } - - var block [BlockSize]byte - offset := copy(block[:], data) - remaining := uint32(BlockSize - offset) - - if c[0] < remaining { - c[1]-- - } - c[0] -= remaining - - hashBlocks(&h, &c, 0xFFFFFFFF, block[:]) - - for i, v := range h { - binary.LittleEndian.PutUint32(sum[4*i:], v) - } -} - -type digest struct { - h [8]uint32 - c [2]uint32 - size int - block [BlockSize]byte - offset int - - key [BlockSize]byte - keyLen int -} - -func (d *digest) BlockSize() int { return BlockSize } - -func (d *digest) Size() int { return d.size } - -func (d *digest) Reset() { - d.h = iv - d.h[0] ^= uint32(d.size) | (uint32(d.keyLen) << 8) | (1 << 16) | (1 << 24) - d.offset, d.c[0], d.c[1] = 0, 0, 0 - if d.keyLen > 0 { - d.block = d.key - d.offset = BlockSize - } -} - -func (d *digest) Write(p []byte) (n int, err error) { - n = len(p) - - if d.offset > 0 { - remaining := BlockSize - d.offset - if n <= remaining { - d.offset += copy(d.block[d.offset:], p) - return - } - copy(d.block[d.offset:], p[:remaining]) - hashBlocks(&d.h, &d.c, 0, d.block[:]) - d.offset = 0 - p = p[remaining:] - } - - if length := len(p); length > BlockSize { - nn := length &^ (BlockSize - 1) - if length == nn { - nn -= BlockSize - } - hashBlocks(&d.h, &d.c, 0, p[:nn]) - p = p[nn:] - } - - d.offset += copy(d.block[:], p) - return -} - -func (d *digest) Sum(sum []byte) []byte { - var hash [Size]byte - d.finalize(&hash) - return append(sum, hash[:d.size]...) -} - -func (d *digest) finalize(hash *[Size]byte) { - var block [BlockSize]byte - h := d.h - c := d.c - - copy(block[:], d.block[:d.offset]) - remaining := uint32(BlockSize - d.offset) - if c[0] < remaining { - c[1]-- - } - c[0] -= remaining - - hashBlocks(&h, &c, 0xFFFFFFFF, block[:]) - for i, v := range h { - binary.LittleEndian.PutUint32(hash[4*i:], v) - } -} diff --git a/vendor/golang.org/x/crypto/blake2s/blake2s_386.go b/vendor/golang.org/x/crypto/blake2s/blake2s_386.go deleted file mode 100644 index 45ae5461..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2s_386.go +++ /dev/null @@ -1,35 +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. - -// +build 386,!gccgo,!appengine - -package blake2s - -var ( - useSSE4 = false - useSSSE3 = supportSSSE3() - useSSE2 = supportSSE2() -) - -//go:noescape -func supportSSE2() bool - -//go:noescape -func supportSSSE3() bool - -//go:noescape -func hashBlocksSSE2(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) - -//go:noescape -func hashBlocksSSSE3(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) - -func hashBlocks(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) { - if useSSSE3 { - hashBlocksSSSE3(h, c, flag, blocks) - } else if useSSE2 { - hashBlocksSSE2(h, c, flag, blocks) - } else { - hashBlocksGeneric(h, c, flag, blocks) - } -} diff --git a/vendor/golang.org/x/crypto/blake2s/blake2s_386.s b/vendor/golang.org/x/crypto/blake2s/blake2s_386.s deleted file mode 100644 index 0bb65c70..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2s_386.s +++ /dev/null @@ -1,460 +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. - -// +build 386,!gccgo,!appengine - -#include "textflag.h" - -DATA iv0<>+0x00(SB)/4, $0x6a09e667 -DATA iv0<>+0x04(SB)/4, $0xbb67ae85 -DATA iv0<>+0x08(SB)/4, $0x3c6ef372 -DATA iv0<>+0x0c(SB)/4, $0xa54ff53a -GLOBL iv0<>(SB), (NOPTR+RODATA), $16 - -DATA iv1<>+0x00(SB)/4, $0x510e527f -DATA iv1<>+0x04(SB)/4, $0x9b05688c -DATA iv1<>+0x08(SB)/4, $0x1f83d9ab -DATA iv1<>+0x0c(SB)/4, $0x5be0cd19 -GLOBL iv1<>(SB), (NOPTR+RODATA), $16 - -DATA rol16<>+0x00(SB)/8, $0x0504070601000302 -DATA rol16<>+0x08(SB)/8, $0x0D0C0F0E09080B0A -GLOBL rol16<>(SB), (NOPTR+RODATA), $16 - -DATA rol8<>+0x00(SB)/8, $0x0407060500030201 -DATA rol8<>+0x08(SB)/8, $0x0C0F0E0D080B0A09 -GLOBL rol8<>(SB), (NOPTR+RODATA), $16 - -DATA counter<>+0x00(SB)/8, $0x40 -DATA counter<>+0x08(SB)/8, $0x0 -GLOBL counter<>(SB), (NOPTR+RODATA), $16 - -#define ROTL_SSE2(n, t, v) \ - MOVO v, t; \ - PSLLL $n, t; \ - PSRLL $(32-n), v; \ - PXOR t, v - -#define ROTL_SSSE3(c, v) \ - PSHUFB c, v - -#define ROUND_SSE2(v0, v1, v2, v3, m0, m1, m2, m3, t) \ - PADDL m0, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE2(16, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(20, t, v1); \ - PADDL m1, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE2(24, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(25, t, v1); \ - PSHUFL $0x39, v1, v1; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v3, v3; \ - PADDL m2, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE2(16, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(20, t, v1); \ - PADDL m3, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE2(24, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(25, t, v1); \ - PSHUFL $0x39, v3, v3; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v1, v1 - -#define ROUND_SSSE3(v0, v1, v2, v3, m0, m1, m2, m3, t, c16, c8) \ - PADDL m0, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSSE3(c16, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(20, t, v1); \ - PADDL m1, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSSE3(c8, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(25, t, v1); \ - PSHUFL $0x39, v1, v1; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v3, v3; \ - PADDL m2, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSSE3(c16, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(20, t, v1); \ - PADDL m3, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSSE3(c8, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(25, t, v1); \ - PSHUFL $0x39, v3, v3; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v1, v1 - -#define PRECOMPUTE(dst, off, src, t) \ - MOVL 0*4(src), t; \ - MOVL t, 0*4+off+0(dst); \ - MOVL t, 9*4+off+64(dst); \ - MOVL t, 5*4+off+128(dst); \ - MOVL t, 14*4+off+192(dst); \ - MOVL t, 4*4+off+256(dst); \ - MOVL t, 2*4+off+320(dst); \ - MOVL t, 8*4+off+384(dst); \ - MOVL t, 12*4+off+448(dst); \ - MOVL t, 3*4+off+512(dst); \ - MOVL t, 15*4+off+576(dst); \ - MOVL 1*4(src), t; \ - MOVL t, 4*4+off+0(dst); \ - MOVL t, 8*4+off+64(dst); \ - MOVL t, 14*4+off+128(dst); \ - MOVL t, 5*4+off+192(dst); \ - MOVL t, 12*4+off+256(dst); \ - MOVL t, 11*4+off+320(dst); \ - MOVL t, 1*4+off+384(dst); \ - MOVL t, 6*4+off+448(dst); \ - MOVL t, 10*4+off+512(dst); \ - MOVL t, 3*4+off+576(dst); \ - MOVL 2*4(src), t; \ - MOVL t, 1*4+off+0(dst); \ - MOVL t, 13*4+off+64(dst); \ - MOVL t, 6*4+off+128(dst); \ - MOVL t, 8*4+off+192(dst); \ - MOVL t, 2*4+off+256(dst); \ - MOVL t, 0*4+off+320(dst); \ - MOVL t, 14*4+off+384(dst); \ - MOVL t, 11*4+off+448(dst); \ - MOVL t, 12*4+off+512(dst); \ - MOVL t, 4*4+off+576(dst); \ - MOVL 3*4(src), t; \ - MOVL t, 5*4+off+0(dst); \ - MOVL t, 15*4+off+64(dst); \ - MOVL t, 9*4+off+128(dst); \ - MOVL t, 1*4+off+192(dst); \ - MOVL t, 11*4+off+256(dst); \ - MOVL t, 7*4+off+320(dst); \ - MOVL t, 13*4+off+384(dst); \ - MOVL t, 3*4+off+448(dst); \ - MOVL t, 6*4+off+512(dst); \ - MOVL t, 10*4+off+576(dst); \ - MOVL 4*4(src), t; \ - MOVL t, 2*4+off+0(dst); \ - MOVL t, 1*4+off+64(dst); \ - MOVL t, 15*4+off+128(dst); \ - MOVL t, 10*4+off+192(dst); \ - MOVL t, 6*4+off+256(dst); \ - MOVL t, 8*4+off+320(dst); \ - MOVL t, 3*4+off+384(dst); \ - MOVL t, 13*4+off+448(dst); \ - MOVL t, 14*4+off+512(dst); \ - MOVL t, 5*4+off+576(dst); \ - MOVL 5*4(src), t; \ - MOVL t, 6*4+off+0(dst); \ - MOVL t, 11*4+off+64(dst); \ - MOVL t, 2*4+off+128(dst); \ - MOVL t, 9*4+off+192(dst); \ - MOVL t, 1*4+off+256(dst); \ - MOVL t, 13*4+off+320(dst); \ - MOVL t, 4*4+off+384(dst); \ - MOVL t, 8*4+off+448(dst); \ - MOVL t, 15*4+off+512(dst); \ - MOVL t, 7*4+off+576(dst); \ - MOVL 6*4(src), t; \ - MOVL t, 3*4+off+0(dst); \ - MOVL t, 7*4+off+64(dst); \ - MOVL t, 13*4+off+128(dst); \ - MOVL t, 12*4+off+192(dst); \ - MOVL t, 10*4+off+256(dst); \ - MOVL t, 1*4+off+320(dst); \ - MOVL t, 9*4+off+384(dst); \ - MOVL t, 14*4+off+448(dst); \ - MOVL t, 0*4+off+512(dst); \ - MOVL t, 6*4+off+576(dst); \ - MOVL 7*4(src), t; \ - MOVL t, 7*4+off+0(dst); \ - MOVL t, 14*4+off+64(dst); \ - MOVL t, 10*4+off+128(dst); \ - MOVL t, 0*4+off+192(dst); \ - MOVL t, 5*4+off+256(dst); \ - MOVL t, 9*4+off+320(dst); \ - MOVL t, 12*4+off+384(dst); \ - MOVL t, 1*4+off+448(dst); \ - MOVL t, 13*4+off+512(dst); \ - MOVL t, 2*4+off+576(dst); \ - MOVL 8*4(src), t; \ - MOVL t, 8*4+off+0(dst); \ - MOVL t, 5*4+off+64(dst); \ - MOVL t, 4*4+off+128(dst); \ - MOVL t, 15*4+off+192(dst); \ - MOVL t, 14*4+off+256(dst); \ - MOVL t, 3*4+off+320(dst); \ - MOVL t, 11*4+off+384(dst); \ - MOVL t, 10*4+off+448(dst); \ - MOVL t, 7*4+off+512(dst); \ - MOVL t, 1*4+off+576(dst); \ - MOVL 9*4(src), t; \ - MOVL t, 12*4+off+0(dst); \ - MOVL t, 2*4+off+64(dst); \ - MOVL t, 11*4+off+128(dst); \ - MOVL t, 4*4+off+192(dst); \ - MOVL t, 0*4+off+256(dst); \ - MOVL t, 15*4+off+320(dst); \ - MOVL t, 10*4+off+384(dst); \ - MOVL t, 7*4+off+448(dst); \ - MOVL t, 5*4+off+512(dst); \ - MOVL t, 9*4+off+576(dst); \ - MOVL 10*4(src), t; \ - MOVL t, 9*4+off+0(dst); \ - MOVL t, 4*4+off+64(dst); \ - MOVL t, 8*4+off+128(dst); \ - MOVL t, 13*4+off+192(dst); \ - MOVL t, 3*4+off+256(dst); \ - MOVL t, 5*4+off+320(dst); \ - MOVL t, 7*4+off+384(dst); \ - MOVL t, 15*4+off+448(dst); \ - MOVL t, 11*4+off+512(dst); \ - MOVL t, 0*4+off+576(dst); \ - MOVL 11*4(src), t; \ - MOVL t, 13*4+off+0(dst); \ - MOVL t, 10*4+off+64(dst); \ - MOVL t, 0*4+off+128(dst); \ - MOVL t, 3*4+off+192(dst); \ - MOVL t, 9*4+off+256(dst); \ - MOVL t, 6*4+off+320(dst); \ - MOVL t, 15*4+off+384(dst); \ - MOVL t, 4*4+off+448(dst); \ - MOVL t, 2*4+off+512(dst); \ - MOVL t, 12*4+off+576(dst); \ - MOVL 12*4(src), t; \ - MOVL t, 10*4+off+0(dst); \ - MOVL t, 12*4+off+64(dst); \ - MOVL t, 1*4+off+128(dst); \ - MOVL t, 6*4+off+192(dst); \ - MOVL t, 13*4+off+256(dst); \ - MOVL t, 4*4+off+320(dst); \ - MOVL t, 0*4+off+384(dst); \ - MOVL t, 2*4+off+448(dst); \ - MOVL t, 8*4+off+512(dst); \ - MOVL t, 14*4+off+576(dst); \ - MOVL 13*4(src), t; \ - MOVL t, 14*4+off+0(dst); \ - MOVL t, 3*4+off+64(dst); \ - MOVL t, 7*4+off+128(dst); \ - MOVL t, 2*4+off+192(dst); \ - MOVL t, 15*4+off+256(dst); \ - MOVL t, 12*4+off+320(dst); \ - MOVL t, 6*4+off+384(dst); \ - MOVL t, 0*4+off+448(dst); \ - MOVL t, 9*4+off+512(dst); \ - MOVL t, 11*4+off+576(dst); \ - MOVL 14*4(src), t; \ - MOVL t, 11*4+off+0(dst); \ - MOVL t, 0*4+off+64(dst); \ - MOVL t, 12*4+off+128(dst); \ - MOVL t, 7*4+off+192(dst); \ - MOVL t, 8*4+off+256(dst); \ - MOVL t, 14*4+off+320(dst); \ - MOVL t, 2*4+off+384(dst); \ - MOVL t, 5*4+off+448(dst); \ - MOVL t, 1*4+off+512(dst); \ - MOVL t, 13*4+off+576(dst); \ - MOVL 15*4(src), t; \ - MOVL t, 15*4+off+0(dst); \ - MOVL t, 6*4+off+64(dst); \ - MOVL t, 3*4+off+128(dst); \ - MOVL t, 11*4+off+192(dst); \ - MOVL t, 7*4+off+256(dst); \ - MOVL t, 10*4+off+320(dst); \ - MOVL t, 5*4+off+384(dst); \ - MOVL t, 9*4+off+448(dst); \ - MOVL t, 4*4+off+512(dst); \ - MOVL t, 8*4+off+576(dst) - -// func hashBlocksSSE2(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) -TEXT ·hashBlocksSSE2(SB), 0, $672-24 // frame = 656 + 16 byte alignment - MOVL h+0(FP), AX - MOVL c+4(FP), BX - MOVL flag+8(FP), CX - MOVL blocks_base+12(FP), SI - MOVL blocks_len+16(FP), DX - - MOVL SP, BP - MOVL SP, DI - ADDL $15, DI - ANDL $~15, DI - MOVL DI, SP - - MOVL CX, 8(SP) - MOVL 0(BX), CX - MOVL CX, 0(SP) - MOVL 4(BX), CX - MOVL CX, 4(SP) - XORL CX, CX - MOVL CX, 12(SP) - - MOVOU 0(AX), X0 - MOVOU 16(AX), X1 - MOVOU counter<>(SB), X2 - -loop: - MOVO X0, X4 - MOVO X1, X5 - MOVOU iv0<>(SB), X6 - MOVOU iv1<>(SB), X7 - - MOVO 0(SP), X3 - PADDQ X2, X3 - PXOR X3, X7 - MOVO X3, 0(SP) - - PRECOMPUTE(SP, 16, SI, CX) - ROUND_SSE2(X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+64(SP), 32+64(SP), 48+64(SP), 64+64(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+128(SP), 32+128(SP), 48+128(SP), 64+128(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+192(SP), 32+192(SP), 48+192(SP), 64+192(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+256(SP), 32+256(SP), 48+256(SP), 64+256(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+320(SP), 32+320(SP), 48+320(SP), 64+320(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+384(SP), 32+384(SP), 48+384(SP), 64+384(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+448(SP), 32+448(SP), 48+448(SP), 64+448(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+512(SP), 32+512(SP), 48+512(SP), 64+512(SP), X3) - ROUND_SSE2(X4, X5, X6, X7, 16+576(SP), 32+576(SP), 48+576(SP), 64+576(SP), X3) - - PXOR X4, X0 - PXOR X5, X1 - PXOR X6, X0 - PXOR X7, X1 - - LEAL 64(SI), SI - SUBL $64, DX - JNE loop - - MOVL 0(SP), CX - MOVL CX, 0(BX) - MOVL 4(SP), CX - MOVL CX, 4(BX) - - MOVOU X0, 0(AX) - MOVOU X1, 16(AX) - - MOVL BP, SP - RET - -// func hashBlocksSSSE3(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) -TEXT ·hashBlocksSSSE3(SB), 0, $704-24 // frame = 688 + 16 byte alignment - MOVL h+0(FP), AX - MOVL c+4(FP), BX - MOVL flag+8(FP), CX - MOVL blocks_base+12(FP), SI - MOVL blocks_len+16(FP), DX - - MOVL SP, BP - MOVL SP, DI - ADDL $15, DI - ANDL $~15, DI - MOVL DI, SP - - MOVL CX, 8(SP) - MOVL 0(BX), CX - MOVL CX, 0(SP) - MOVL 4(BX), CX - MOVL CX, 4(SP) - XORL CX, CX - MOVL CX, 12(SP) - - MOVOU 0(AX), X0 - MOVOU 16(AX), X1 - MOVOU counter<>(SB), X2 - -loop: - MOVO X0, 656(SP) - MOVO X1, 672(SP) - MOVO X0, X4 - MOVO X1, X5 - MOVOU iv0<>(SB), X6 - MOVOU iv1<>(SB), X7 - - MOVO 0(SP), X3 - PADDQ X2, X3 - PXOR X3, X7 - MOVO X3, 0(SP) - - MOVOU rol16<>(SB), X0 - MOVOU rol8<>(SB), X1 - - PRECOMPUTE(SP, 16, SI, CX) - ROUND_SSSE3(X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+64(SP), 32+64(SP), 48+64(SP), 64+64(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+128(SP), 32+128(SP), 48+128(SP), 64+128(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+192(SP), 32+192(SP), 48+192(SP), 64+192(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+256(SP), 32+256(SP), 48+256(SP), 64+256(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+320(SP), 32+320(SP), 48+320(SP), 64+320(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+384(SP), 32+384(SP), 48+384(SP), 64+384(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+448(SP), 32+448(SP), 48+448(SP), 64+448(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+512(SP), 32+512(SP), 48+512(SP), 64+512(SP), X3, X0, X1) - ROUND_SSSE3(X4, X5, X6, X7, 16+576(SP), 32+576(SP), 48+576(SP), 64+576(SP), X3, X0, X1) - - MOVO 656(SP), X0 - MOVO 672(SP), X1 - PXOR X4, X0 - PXOR X5, X1 - PXOR X6, X0 - PXOR X7, X1 - - LEAL 64(SI), SI - SUBL $64, DX - JNE loop - - MOVL 0(SP), CX - MOVL CX, 0(BX) - MOVL 4(SP), CX - MOVL CX, 4(BX) - - MOVOU X0, 0(AX) - MOVOU X1, 16(AX) - - MOVL BP, SP - RET - -// func supportSSSE3() bool -TEXT ·supportSSSE3(SB), 4, $0-1 - MOVL $1, AX - CPUID - MOVL CX, BX - ANDL $0x1, BX // supports SSE3 - JZ FALSE - ANDL $0x200, CX // supports SSSE3 - JZ FALSE - MOVB $1, ret+0(FP) - RET - -FALSE: - MOVB $0, ret+0(FP) - RET - -// func supportSSE2() bool -TEXT ·supportSSE2(SB), 4, $0-1 - MOVL $1, AX - CPUID - SHRL $26, DX - ANDL $1, DX // DX != 0 if support SSE2 - MOVB DX, ret+0(FP) - RET diff --git a/vendor/golang.org/x/crypto/blake2s/blake2s_amd64.go b/vendor/golang.org/x/crypto/blake2s/blake2s_amd64.go deleted file mode 100644 index a925e6b2..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2s_amd64.go +++ /dev/null @@ -1,40 +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. - -// +build amd64,!gccgo,!appengine - -package blake2s - -var ( - useSSE4 = supportSSE4() - useSSSE3 = supportSSSE3() - useSSE2 = true // Always available on amd64 -) - -//go:noescape -func supportSSSE3() bool - -//go:noescape -func supportSSE4() bool - -//go:noescape -func hashBlocksSSE2(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) - -//go:noescape -func hashBlocksSSSE3(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) - -//go:noescape -func hashBlocksSSE4(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) - -func hashBlocks(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) { - if useSSE4 { - hashBlocksSSE4(h, c, flag, blocks) - } else if useSSSE3 { - hashBlocksSSSE3(h, c, flag, blocks) - } else if useSSE2 { - hashBlocksSSE2(h, c, flag, blocks) - } else { - hashBlocksGeneric(h, c, flag, blocks) - } -} diff --git a/vendor/golang.org/x/crypto/blake2s/blake2s_amd64.s b/vendor/golang.org/x/crypto/blake2s/blake2s_amd64.s deleted file mode 100644 index 6cdf5a94..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2s_amd64.s +++ /dev/null @@ -1,463 +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. - -// +build amd64,!gccgo,!appengine - -#include "textflag.h" - -DATA iv0<>+0x00(SB)/4, $0x6a09e667 -DATA iv0<>+0x04(SB)/4, $0xbb67ae85 -DATA iv0<>+0x08(SB)/4, $0x3c6ef372 -DATA iv0<>+0x0c(SB)/4, $0xa54ff53a -GLOBL iv0<>(SB), (NOPTR+RODATA), $16 - -DATA iv1<>+0x00(SB)/4, $0x510e527f -DATA iv1<>+0x04(SB)/4, $0x9b05688c -DATA iv1<>+0x08(SB)/4, $0x1f83d9ab -DATA iv1<>+0x0c(SB)/4, $0x5be0cd19 -GLOBL iv1<>(SB), (NOPTR+RODATA), $16 - -DATA rol16<>+0x00(SB)/8, $0x0504070601000302 -DATA rol16<>+0x08(SB)/8, $0x0D0C0F0E09080B0A -GLOBL rol16<>(SB), (NOPTR+RODATA), $16 - -DATA rol8<>+0x00(SB)/8, $0x0407060500030201 -DATA rol8<>+0x08(SB)/8, $0x0C0F0E0D080B0A09 -GLOBL rol8<>(SB), (NOPTR+RODATA), $16 - -DATA counter<>+0x00(SB)/8, $0x40 -DATA counter<>+0x08(SB)/8, $0x0 -GLOBL counter<>(SB), (NOPTR+RODATA), $16 - -#define ROTL_SSE2(n, t, v) \ - MOVO v, t; \ - PSLLL $n, t; \ - PSRLL $(32-n), v; \ - PXOR t, v - -#define ROTL_SSSE3(c, v) \ - PSHUFB c, v - -#define ROUND_SSE2(v0, v1, v2, v3, m0, m1, m2, m3, t) \ - PADDL m0, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE2(16, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(20, t, v1); \ - PADDL m1, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE2(24, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(25, t, v1); \ - PSHUFL $0x39, v1, v1; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v3, v3; \ - PADDL m2, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE2(16, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(20, t, v1); \ - PADDL m3, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE2(24, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(25, t, v1); \ - PSHUFL $0x39, v3, v3; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v1, v1 - -#define ROUND_SSSE3(v0, v1, v2, v3, m0, m1, m2, m3, t, c16, c8) \ - PADDL m0, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSSE3(c16, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(20, t, v1); \ - PADDL m1, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSSE3(c8, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(25, t, v1); \ - PSHUFL $0x39, v1, v1; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v3, v3; \ - PADDL m2, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSSE3(c16, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(20, t, v1); \ - PADDL m3, v0; \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSSE3(c8, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE2(25, t, v1); \ - PSHUFL $0x39, v3, v3; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v1, v1 - - -#define LOAD_MSG_SSE4(m0, m1, m2, m3, src, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15) \ - MOVL i0*4(src), m0; \ - PINSRD $1, i1*4(src), m0; \ - PINSRD $2, i2*4(src), m0; \ - PINSRD $3, i3*4(src), m0; \ - MOVL i4*4(src), m1; \ - PINSRD $1, i5*4(src), m1; \ - PINSRD $2, i6*4(src), m1; \ - PINSRD $3, i7*4(src), m1; \ - MOVL i8*4(src), m2; \ - PINSRD $1, i9*4(src), m2; \ - PINSRD $2, i10*4(src), m2; \ - PINSRD $3, i11*4(src), m2; \ - MOVL i12*4(src), m3; \ - PINSRD $1, i13*4(src), m3; \ - PINSRD $2, i14*4(src), m3; \ - PINSRD $3, i15*4(src), m3 - -#define PRECOMPUTE_MSG(dst, off, src, R8, R9, R10, R11, R12, R13, R14, R15) \ - MOVQ 0*4(src), R8; \ - MOVQ 2*4(src), R9; \ - MOVQ 4*4(src), R10; \ - MOVQ 6*4(src), R11; \ - MOVQ 8*4(src), R12; \ - MOVQ 10*4(src), R13; \ - MOVQ 12*4(src), R14; \ - MOVQ 14*4(src), R15; \ - \ - MOVL R8, 0*4+off+0(dst); \ - MOVL R8, 9*4+off+64(dst); \ - MOVL R8, 5*4+off+128(dst); \ - MOVL R8, 14*4+off+192(dst); \ - MOVL R8, 4*4+off+256(dst); \ - MOVL R8, 2*4+off+320(dst); \ - MOVL R8, 8*4+off+384(dst); \ - MOVL R8, 12*4+off+448(dst); \ - MOVL R8, 3*4+off+512(dst); \ - MOVL R8, 15*4+off+576(dst); \ - SHRQ $32, R8; \ - MOVL R8, 4*4+off+0(dst); \ - MOVL R8, 8*4+off+64(dst); \ - MOVL R8, 14*4+off+128(dst); \ - MOVL R8, 5*4+off+192(dst); \ - MOVL R8, 12*4+off+256(dst); \ - MOVL R8, 11*4+off+320(dst); \ - MOVL R8, 1*4+off+384(dst); \ - MOVL R8, 6*4+off+448(dst); \ - MOVL R8, 10*4+off+512(dst); \ - MOVL R8, 3*4+off+576(dst); \ - \ - MOVL R9, 1*4+off+0(dst); \ - MOVL R9, 13*4+off+64(dst); \ - MOVL R9, 6*4+off+128(dst); \ - MOVL R9, 8*4+off+192(dst); \ - MOVL R9, 2*4+off+256(dst); \ - MOVL R9, 0*4+off+320(dst); \ - MOVL R9, 14*4+off+384(dst); \ - MOVL R9, 11*4+off+448(dst); \ - MOVL R9, 12*4+off+512(dst); \ - MOVL R9, 4*4+off+576(dst); \ - SHRQ $32, R9; \ - MOVL R9, 5*4+off+0(dst); \ - MOVL R9, 15*4+off+64(dst); \ - MOVL R9, 9*4+off+128(dst); \ - MOVL R9, 1*4+off+192(dst); \ - MOVL R9, 11*4+off+256(dst); \ - MOVL R9, 7*4+off+320(dst); \ - MOVL R9, 13*4+off+384(dst); \ - MOVL R9, 3*4+off+448(dst); \ - MOVL R9, 6*4+off+512(dst); \ - MOVL R9, 10*4+off+576(dst); \ - \ - MOVL R10, 2*4+off+0(dst); \ - MOVL R10, 1*4+off+64(dst); \ - MOVL R10, 15*4+off+128(dst); \ - MOVL R10, 10*4+off+192(dst); \ - MOVL R10, 6*4+off+256(dst); \ - MOVL R10, 8*4+off+320(dst); \ - MOVL R10, 3*4+off+384(dst); \ - MOVL R10, 13*4+off+448(dst); \ - MOVL R10, 14*4+off+512(dst); \ - MOVL R10, 5*4+off+576(dst); \ - SHRQ $32, R10; \ - MOVL R10, 6*4+off+0(dst); \ - MOVL R10, 11*4+off+64(dst); \ - MOVL R10, 2*4+off+128(dst); \ - MOVL R10, 9*4+off+192(dst); \ - MOVL R10, 1*4+off+256(dst); \ - MOVL R10, 13*4+off+320(dst); \ - MOVL R10, 4*4+off+384(dst); \ - MOVL R10, 8*4+off+448(dst); \ - MOVL R10, 15*4+off+512(dst); \ - MOVL R10, 7*4+off+576(dst); \ - \ - MOVL R11, 3*4+off+0(dst); \ - MOVL R11, 7*4+off+64(dst); \ - MOVL R11, 13*4+off+128(dst); \ - MOVL R11, 12*4+off+192(dst); \ - MOVL R11, 10*4+off+256(dst); \ - MOVL R11, 1*4+off+320(dst); \ - MOVL R11, 9*4+off+384(dst); \ - MOVL R11, 14*4+off+448(dst); \ - MOVL R11, 0*4+off+512(dst); \ - MOVL R11, 6*4+off+576(dst); \ - SHRQ $32, R11; \ - MOVL R11, 7*4+off+0(dst); \ - MOVL R11, 14*4+off+64(dst); \ - MOVL R11, 10*4+off+128(dst); \ - MOVL R11, 0*4+off+192(dst); \ - MOVL R11, 5*4+off+256(dst); \ - MOVL R11, 9*4+off+320(dst); \ - MOVL R11, 12*4+off+384(dst); \ - MOVL R11, 1*4+off+448(dst); \ - MOVL R11, 13*4+off+512(dst); \ - MOVL R11, 2*4+off+576(dst); \ - \ - MOVL R12, 8*4+off+0(dst); \ - MOVL R12, 5*4+off+64(dst); \ - MOVL R12, 4*4+off+128(dst); \ - MOVL R12, 15*4+off+192(dst); \ - MOVL R12, 14*4+off+256(dst); \ - MOVL R12, 3*4+off+320(dst); \ - MOVL R12, 11*4+off+384(dst); \ - MOVL R12, 10*4+off+448(dst); \ - MOVL R12, 7*4+off+512(dst); \ - MOVL R12, 1*4+off+576(dst); \ - SHRQ $32, R12; \ - MOVL R12, 12*4+off+0(dst); \ - MOVL R12, 2*4+off+64(dst); \ - MOVL R12, 11*4+off+128(dst); \ - MOVL R12, 4*4+off+192(dst); \ - MOVL R12, 0*4+off+256(dst); \ - MOVL R12, 15*4+off+320(dst); \ - MOVL R12, 10*4+off+384(dst); \ - MOVL R12, 7*4+off+448(dst); \ - MOVL R12, 5*4+off+512(dst); \ - MOVL R12, 9*4+off+576(dst); \ - \ - MOVL R13, 9*4+off+0(dst); \ - MOVL R13, 4*4+off+64(dst); \ - MOVL R13, 8*4+off+128(dst); \ - MOVL R13, 13*4+off+192(dst); \ - MOVL R13, 3*4+off+256(dst); \ - MOVL R13, 5*4+off+320(dst); \ - MOVL R13, 7*4+off+384(dst); \ - MOVL R13, 15*4+off+448(dst); \ - MOVL R13, 11*4+off+512(dst); \ - MOVL R13, 0*4+off+576(dst); \ - SHRQ $32, R13; \ - MOVL R13, 13*4+off+0(dst); \ - MOVL R13, 10*4+off+64(dst); \ - MOVL R13, 0*4+off+128(dst); \ - MOVL R13, 3*4+off+192(dst); \ - MOVL R13, 9*4+off+256(dst); \ - MOVL R13, 6*4+off+320(dst); \ - MOVL R13, 15*4+off+384(dst); \ - MOVL R13, 4*4+off+448(dst); \ - MOVL R13, 2*4+off+512(dst); \ - MOVL R13, 12*4+off+576(dst); \ - \ - MOVL R14, 10*4+off+0(dst); \ - MOVL R14, 12*4+off+64(dst); \ - MOVL R14, 1*4+off+128(dst); \ - MOVL R14, 6*4+off+192(dst); \ - MOVL R14, 13*4+off+256(dst); \ - MOVL R14, 4*4+off+320(dst); \ - MOVL R14, 0*4+off+384(dst); \ - MOVL R14, 2*4+off+448(dst); \ - MOVL R14, 8*4+off+512(dst); \ - MOVL R14, 14*4+off+576(dst); \ - SHRQ $32, R14; \ - MOVL R14, 14*4+off+0(dst); \ - MOVL R14, 3*4+off+64(dst); \ - MOVL R14, 7*4+off+128(dst); \ - MOVL R14, 2*4+off+192(dst); \ - MOVL R14, 15*4+off+256(dst); \ - MOVL R14, 12*4+off+320(dst); \ - MOVL R14, 6*4+off+384(dst); \ - MOVL R14, 0*4+off+448(dst); \ - MOVL R14, 9*4+off+512(dst); \ - MOVL R14, 11*4+off+576(dst); \ - \ - MOVL R15, 11*4+off+0(dst); \ - MOVL R15, 0*4+off+64(dst); \ - MOVL R15, 12*4+off+128(dst); \ - MOVL R15, 7*4+off+192(dst); \ - MOVL R15, 8*4+off+256(dst); \ - MOVL R15, 14*4+off+320(dst); \ - MOVL R15, 2*4+off+384(dst); \ - MOVL R15, 5*4+off+448(dst); \ - MOVL R15, 1*4+off+512(dst); \ - MOVL R15, 13*4+off+576(dst); \ - SHRQ $32, R15; \ - MOVL R15, 15*4+off+0(dst); \ - MOVL R15, 6*4+off+64(dst); \ - MOVL R15, 3*4+off+128(dst); \ - MOVL R15, 11*4+off+192(dst); \ - MOVL R15, 7*4+off+256(dst); \ - MOVL R15, 10*4+off+320(dst); \ - MOVL R15, 5*4+off+384(dst); \ - MOVL R15, 9*4+off+448(dst); \ - MOVL R15, 4*4+off+512(dst); \ - MOVL R15, 8*4+off+576(dst) - -#define BLAKE2s_SSE2() \ - PRECOMPUTE_MSG(SP, 16, SI, R8, R9, R10, R11, R12, R13, R14, R15); \ - ROUND_SSE2(X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+64(SP), 32+64(SP), 48+64(SP), 64+64(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+128(SP), 32+128(SP), 48+128(SP), 64+128(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+192(SP), 32+192(SP), 48+192(SP), 64+192(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+256(SP), 32+256(SP), 48+256(SP), 64+256(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+320(SP), 32+320(SP), 48+320(SP), 64+320(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+384(SP), 32+384(SP), 48+384(SP), 64+384(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+448(SP), 32+448(SP), 48+448(SP), 64+448(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+512(SP), 32+512(SP), 48+512(SP), 64+512(SP), X8); \ - ROUND_SSE2(X4, X5, X6, X7, 16+576(SP), 32+576(SP), 48+576(SP), 64+576(SP), X8) - -#define BLAKE2s_SSSE3() \ - PRECOMPUTE_MSG(SP, 16, SI, R8, R9, R10, R11, R12, R13, R14, R15); \ - ROUND_SSSE3(X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+64(SP), 32+64(SP), 48+64(SP), 64+64(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+128(SP), 32+128(SP), 48+128(SP), 64+128(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+192(SP), 32+192(SP), 48+192(SP), 64+192(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+256(SP), 32+256(SP), 48+256(SP), 64+256(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+320(SP), 32+320(SP), 48+320(SP), 64+320(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+384(SP), 32+384(SP), 48+384(SP), 64+384(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+448(SP), 32+448(SP), 48+448(SP), 64+448(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+512(SP), 32+512(SP), 48+512(SP), 64+512(SP), X8, X13, X14); \ - ROUND_SSSE3(X4, X5, X6, X7, 16+576(SP), 32+576(SP), 48+576(SP), 64+576(SP), X8, X13, X14) - -#define BLAKE2s_SSE4() \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 11, 12, 5, 15, 8, 0, 2, 13, 10, 3, 7, 9, 14, 6, 1, 4); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 7, 3, 13, 11, 9, 1, 12, 14, 2, 5, 4, 15, 6, 10, 0, 8); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 9, 5, 2, 10, 0, 7, 4, 15, 14, 11, 6, 3, 1, 12, 8, 13); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 2, 6, 0, 8, 12, 10, 11, 3, 4, 7, 15, 1, 13, 5, 14, 9); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 12, 1, 14, 4, 5, 15, 13, 10, 0, 6, 9, 8, 7, 3, 2, 11); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 13, 7, 12, 3, 11, 14, 1, 9, 5, 15, 8, 2, 0, 4, 6, 10); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 6, 14, 11, 0, 15, 9, 3, 8, 12, 13, 1, 10, 2, 7, 4, 5); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14); \ - LOAD_MSG_SSE4(X8, X9, X10, X11, SI, 10, 8, 7, 1, 2, 4, 6, 5, 15, 9, 3, 13, 11, 14, 12, 0); \ - ROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10, X11, X8, X13, X14) - -#define HASH_BLOCKS(h, c, flag, blocks_base, blocks_len, BLAKE2s_FUNC) \ - MOVQ h, AX; \ - MOVQ c, BX; \ - MOVL flag, CX; \ - MOVQ blocks_base, SI; \ - MOVQ blocks_len, DX; \ - \ - MOVQ SP, BP; \ - MOVQ SP, R9; \ - ADDQ $15, R9; \ - ANDQ $~15, R9; \ - MOVQ R9, SP; \ - \ - MOVQ 0(BX), R9; \ - MOVQ R9, 0(SP); \ - XORQ R9, R9; \ - MOVQ R9, 8(SP); \ - MOVL CX, 8(SP); \ - \ - MOVOU 0(AX), X0; \ - MOVOU 16(AX), X1; \ - MOVOU iv0<>(SB), X2; \ - MOVOU iv1<>(SB), X3 \ - \ - MOVOU counter<>(SB), X12; \ - MOVOU rol16<>(SB), X13; \ - MOVOU rol8<>(SB), X14; \ - MOVO 0(SP), X15; \ - \ - loop: \ - MOVO X0, X4; \ - MOVO X1, X5; \ - MOVO X2, X6; \ - MOVO X3, X7; \ - \ - PADDQ X12, X15; \ - PXOR X15, X7; \ - \ - BLAKE2s_FUNC(); \ - \ - PXOR X4, X0; \ - PXOR X5, X1; \ - PXOR X6, X0; \ - PXOR X7, X1; \ - \ - LEAQ 64(SI), SI; \ - SUBQ $64, DX; \ - JNE loop; \ - \ - MOVO X15, 0(SP); \ - MOVQ 0(SP), R9; \ - MOVQ R9, 0(BX); \ - \ - MOVOU X0, 0(AX); \ - MOVOU X1, 16(AX); \ - \ - MOVQ BP, SP - -// func hashBlocksSSE2(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) -TEXT ·hashBlocksSSE2(SB), 0, $672-48 // frame = 656 + 16 byte alignment - HASH_BLOCKS(h+0(FP), c+8(FP), flag+16(FP), blocks_base+24(FP), blocks_len+32(FP), BLAKE2s_SSE2) - RET - -// func hashBlocksSSSE3(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) -TEXT ·hashBlocksSSSE3(SB), 0, $672-48 // frame = 656 + 16 byte alignment - HASH_BLOCKS(h+0(FP), c+8(FP), flag+16(FP), blocks_base+24(FP), blocks_len+32(FP), BLAKE2s_SSSE3) - RET - -// func hashBlocksSSE4(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) -TEXT ·hashBlocksSSE4(SB), 0, $32-48 // frame = 16 + 16 byte alignment - HASH_BLOCKS(h+0(FP), c+8(FP), flag+16(FP), blocks_base+24(FP), blocks_len+32(FP), BLAKE2s_SSE4) - RET - -// func supportSSE4() bool -TEXT ·supportSSE4(SB), 4, $0-1 - MOVL $1, AX - CPUID - SHRL $19, CX // Bit 19 indicates SSE4.1. - ANDL $1, CX - MOVB CX, ret+0(FP) - RET - -// func supportSSSE3() bool -TEXT ·supportSSSE3(SB), 4, $0-1 - MOVL $1, AX - CPUID - MOVL CX, BX - ANDL $0x1, BX // Bit zero indicates SSE3 support. - JZ FALSE - ANDL $0x200, CX // Bit nine indicates SSSE3 support. - JZ FALSE - MOVB $1, ret+0(FP) - RET - -FALSE: - MOVB $0, ret+0(FP) - RET diff --git a/vendor/golang.org/x/crypto/blake2s/blake2s_generic.go b/vendor/golang.org/x/crypto/blake2s/blake2s_generic.go deleted file mode 100644 index f7e06537..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2s_generic.go +++ /dev/null @@ -1,174 +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 blake2s - -// the precomputed values for BLAKE2s -// there are 10 16-byte arrays - one for each round -// the entries are calculated from the sigma constants. -var precomputed = [10][16]byte{ - {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, - {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, - {11, 12, 5, 15, 8, 0, 2, 13, 10, 3, 7, 9, 14, 6, 1, 4}, - {7, 3, 13, 11, 9, 1, 12, 14, 2, 5, 4, 15, 6, 10, 0, 8}, - {9, 5, 2, 10, 0, 7, 4, 15, 14, 11, 6, 3, 1, 12, 8, 13}, - {2, 6, 0, 8, 12, 10, 11, 3, 4, 7, 15, 1, 13, 5, 14, 9}, - {12, 1, 14, 4, 5, 15, 13, 10, 0, 6, 9, 8, 7, 3, 2, 11}, - {13, 7, 12, 3, 11, 14, 1, 9, 5, 15, 8, 2, 0, 4, 6, 10}, - {6, 14, 11, 0, 15, 9, 3, 8, 12, 13, 1, 10, 2, 7, 4, 5}, - {10, 8, 7, 1, 2, 4, 6, 5, 15, 9, 3, 13, 11, 14, 12, 0}, -} - -func hashBlocksGeneric(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) { - var m [16]uint32 - c0, c1 := c[0], c[1] - - for i := 0; i < len(blocks); { - c0 += BlockSize - if c0 < BlockSize { - c1++ - } - - v0, v1, v2, v3, v4, v5, v6, v7 := h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7] - v8, v9, v10, v11, v12, v13, v14, v15 := iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], iv[6], iv[7] - v12 ^= c0 - v13 ^= c1 - v14 ^= flag - - for j := range m { - m[j] = uint32(blocks[i]) | uint32(blocks[i+1])<<8 | uint32(blocks[i+2])<<16 | uint32(blocks[i+3])<<24 - i += 4 - } - - for k := range precomputed { - s := &(precomputed[k]) - - v0 += m[s[0]] - v0 += v4 - v12 ^= v0 - v12 = v12<<(32-16) | v12>>16 - v8 += v12 - v4 ^= v8 - v4 = v4<<(32-12) | v4>>12 - v1 += m[s[1]] - v1 += v5 - v13 ^= v1 - v13 = v13<<(32-16) | v13>>16 - v9 += v13 - v5 ^= v9 - v5 = v5<<(32-12) | v5>>12 - v2 += m[s[2]] - v2 += v6 - v14 ^= v2 - v14 = v14<<(32-16) | v14>>16 - v10 += v14 - v6 ^= v10 - v6 = v6<<(32-12) | v6>>12 - v3 += m[s[3]] - v3 += v7 - v15 ^= v3 - v15 = v15<<(32-16) | v15>>16 - v11 += v15 - v7 ^= v11 - v7 = v7<<(32-12) | v7>>12 - - v0 += m[s[4]] - v0 += v4 - v12 ^= v0 - v12 = v12<<(32-8) | v12>>8 - v8 += v12 - v4 ^= v8 - v4 = v4<<(32-7) | v4>>7 - v1 += m[s[5]] - v1 += v5 - v13 ^= v1 - v13 = v13<<(32-8) | v13>>8 - v9 += v13 - v5 ^= v9 - v5 = v5<<(32-7) | v5>>7 - v2 += m[s[6]] - v2 += v6 - v14 ^= v2 - v14 = v14<<(32-8) | v14>>8 - v10 += v14 - v6 ^= v10 - v6 = v6<<(32-7) | v6>>7 - v3 += m[s[7]] - v3 += v7 - v15 ^= v3 - v15 = v15<<(32-8) | v15>>8 - v11 += v15 - v7 ^= v11 - v7 = v7<<(32-7) | v7>>7 - - v0 += m[s[8]] - v0 += v5 - v15 ^= v0 - v15 = v15<<(32-16) | v15>>16 - v10 += v15 - v5 ^= v10 - v5 = v5<<(32-12) | v5>>12 - v1 += m[s[9]] - v1 += v6 - v12 ^= v1 - v12 = v12<<(32-16) | v12>>16 - v11 += v12 - v6 ^= v11 - v6 = v6<<(32-12) | v6>>12 - v2 += m[s[10]] - v2 += v7 - v13 ^= v2 - v13 = v13<<(32-16) | v13>>16 - v8 += v13 - v7 ^= v8 - v7 = v7<<(32-12) | v7>>12 - v3 += m[s[11]] - v3 += v4 - v14 ^= v3 - v14 = v14<<(32-16) | v14>>16 - v9 += v14 - v4 ^= v9 - v4 = v4<<(32-12) | v4>>12 - - v0 += m[s[12]] - v0 += v5 - v15 ^= v0 - v15 = v15<<(32-8) | v15>>8 - v10 += v15 - v5 ^= v10 - v5 = v5<<(32-7) | v5>>7 - v1 += m[s[13]] - v1 += v6 - v12 ^= v1 - v12 = v12<<(32-8) | v12>>8 - v11 += v12 - v6 ^= v11 - v6 = v6<<(32-7) | v6>>7 - v2 += m[s[14]] - v2 += v7 - v13 ^= v2 - v13 = v13<<(32-8) | v13>>8 - v8 += v13 - v7 ^= v8 - v7 = v7<<(32-7) | v7>>7 - v3 += m[s[15]] - v3 += v4 - v14 ^= v3 - v14 = v14<<(32-8) | v14>>8 - v9 += v14 - v4 ^= v9 - v4 = v4<<(32-7) | v4>>7 - } - - h[0] ^= v0 ^ v8 - h[1] ^= v1 ^ v9 - h[2] ^= v2 ^ v10 - h[3] ^= v3 ^ v11 - h[4] ^= v4 ^ v12 - h[5] ^= v5 ^ v13 - h[6] ^= v6 ^ v14 - h[7] ^= v7 ^ v15 - } - c[0], c[1] = c0, c1 -} diff --git a/vendor/golang.org/x/crypto/blake2s/blake2s_ref.go b/vendor/golang.org/x/crypto/blake2s/blake2s_ref.go deleted file mode 100644 index a3112734..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2s_ref.go +++ /dev/null @@ -1,17 +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. - -// +build !amd64,!386 gccgo appengine - -package blake2s - -var ( - useSSE4 = false - useSSSE3 = false - useSSE2 = false -) - -func hashBlocks(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte) { - hashBlocksGeneric(h, c, flag, blocks) -} diff --git a/vendor/golang.org/x/crypto/blake2s/blake2s_test.go b/vendor/golang.org/x/crypto/blake2s/blake2s_test.go deleted file mode 100644 index cfeb18bb..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2s_test.go +++ /dev/null @@ -1,1002 +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 blake2s - -import ( - "encoding/hex" - "fmt" - "testing" -) - -func TestHashes(t *testing.T) { - defer func(sse2, ssse3, sse4 bool) { - useSSE2, useSSSE3, useSSE4 = sse2, ssse3, sse4 - }(useSSE2, useSSSE3, useSSE4) - - if useSSE4 { - t.Log("SSE4 version") - testHashes(t) - testHashes128(t) - useSSE4 = false - } - if useSSSE3 { - t.Log("SSSE3 version") - testHashes(t) - testHashes128(t) - useSSSE3 = false - } - if useSSE2 { - t.Log("SSE2 version") - testHashes(t) - testHashes128(t) - useSSE2 = false - } - - t.Log("generic version") - testHashes(t) - testHashes128(t) -} - -func TestHashes2X(t *testing.T) { - defer func(sse2, ssse3, sse4 bool) { - useSSE2, useSSSE3, useSSE4 = sse2, ssse3, sse4 - }(useSSE2, useSSSE3, useSSE4) - - if useSSE4 { - t.Log("SSE4 version") - testHashes2X(t) - useSSE4 = false - } - if useSSSE3 { - t.Log("SSSE3 version") - testHashes2X(t) - useSSSE3 = false - } - if useSSE2 { - t.Log("SSE2 version") - testHashes2X(t) - useSSE2 = false - } - - t.Log("generic version") - testHashes2X(t) -} - -func testHashes(t *testing.T) { - key, _ := hex.DecodeString("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f") - - input := make([]byte, 255) - for i := range input { - input[i] = byte(i) - } - - for i, expectedHex := range hashes { - h, err := New256(key) - if err != nil { - t.Fatalf("#%d: error from New256: %v", i, err) - } - - h.Write(input[:i]) - sum := h.Sum(nil) - - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (single write): got %s, wanted %s", i, gotHex, expectedHex) - } - - h.Reset() - for j := 0; j < i; j++ { - h.Write(input[j : j+1]) - } - - sum = h.Sum(sum[:0]) - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (byte-by-byte): got %s, wanted %s", i, gotHex, expectedHex) - } - } -} - -func testHashes128(t *testing.T) { - key, _ := hex.DecodeString("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f") - - input := make([]byte, 255) - for i := range input { - input[i] = byte(i) - } - - for i, expectedHex := range hashes128 { - h, err := New128(key) - if err != nil { - t.Fatalf("#%d: error from New128: %v", i, err) - } - - h.Write(input[:i]) - sum := h.Sum(nil) - - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (single write): got %s, wanted %s", i, gotHex, expectedHex) - } - - h.Reset() - for j := 0; j < i; j++ { - h.Write(input[j : j+1]) - } - - sum = h.Sum(sum[:0]) - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (byte-by-byte): got %s, wanted %s", i, gotHex, expectedHex) - } - } -} - -func testHashes2X(t *testing.T) { - key, _ := hex.DecodeString("000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f") - - input := make([]byte, 256) - for i := range input { - input[i] = byte(i) - } - - for i, expectedHex := range hashes2X { - length := uint16(len(expectedHex) / 2) - sum := make([]byte, int(length)) - - h, err := NewXOF(length, key) - if err != nil { - t.Fatalf("#%d: error from NewXOF: %v", i, err) - } - - if _, err := h.Write(input); err != nil { - t.Fatalf("#%d (single write): error from Write: %v", i, err) - } - if _, err := h.Read(sum); err != nil { - t.Fatalf("#%d (single write): error from Read: %v", i, err) - } - - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (single write): got %s, wanted %s", i, gotHex, expectedHex) - } - - h.Reset() - for j := 0; j < len(input); j++ { - h.Write(input[j : j+1]) - } - for j := 0; j < len(sum); j++ { - h = h.Clone() - if _, err := h.Read(sum[j : j+1]); err != nil { - t.Fatalf("#%d (byte-by-byte) - Read %d: error from Read: %v", i, j, err) - } - } - if gotHex := fmt.Sprintf("%x", sum); gotHex != expectedHex { - t.Fatalf("#%d (byte-by-byte): got %s, wanted %s", i, gotHex, expectedHex) - } - } - - h, err := NewXOF(OutputLengthUnknown, key) - if err != nil { - t.Fatalf("#unknown length: error from NewXOF: %v", err) - } - if _, err := h.Write(input); err != nil { - t.Fatalf("#unknown length: error from Write: %v", err) - } - - var result [64]byte - if n, err := h.Read(result[:]); err != nil { - t.Fatalf("#unknown length: error from Read: %v", err) - } else if n != len(result) { - t.Fatalf("#unknown length: Read returned %d bytes, want %d", n, len(result)) - } - - const expected = "2a9a6977d915a2c4dd07dbcafe1918bf1682e56d9c8e567ecd19bfd7cd93528833c764d12b34a5e2a219c9fd463dab45e972c5574d73f45de5b2e23af72530d8" - if fmt.Sprintf("%x", result) != expected { - t.Fatalf("#unknown length: bad result %x, wanted %s", result, expected) - } -} - -// Benchmarks - -func benchmarkSum(b *testing.B, size int) { - data := make([]byte, size) - b.SetBytes(int64(size)) - b.ResetTimer() - for i := 0; i < b.N; i++ { - Sum256(data) - } -} - -func benchmarkWrite(b *testing.B, size int) { - data := make([]byte, size) - h, _ := New256(nil) - b.SetBytes(int64(size)) - b.ResetTimer() - for i := 0; i < b.N; i++ { - h.Write(data) - } -} - -func BenchmarkWrite64(b *testing.B) { benchmarkWrite(b, 64) } -func BenchmarkWrite1K(b *testing.B) { benchmarkWrite(b, 1024) } - -func BenchmarkSum64(b *testing.B) { benchmarkSum(b, 64) } -func BenchmarkSum1K(b *testing.B) { benchmarkSum(b, 1024) } - -// hashes is taken from https://blake2.net/blake2s-test.txt -var hashes = []string{ - "48a8997da407876b3d79c0d92325ad3b89cbb754d86ab71aee047ad345fd2c49", - "40d15fee7c328830166ac3f918650f807e7e01e177258cdc0a39b11f598066f1", - "6bb71300644cd3991b26ccd4d274acd1adeab8b1d7914546c1198bbe9fc9d803", - "1d220dbe2ee134661fdf6d9e74b41704710556f2f6e5a091b227697445dbea6b", - "f6c3fbadb4cc687a0064a5be6e791bec63b868ad62fba61b3757ef9ca52e05b2", - "49c1f21188dfd769aea0e911dd6b41f14dab109d2b85977aa3088b5c707e8598", - "fdd8993dcd43f696d44f3cea0ff35345234ec8ee083eb3cada017c7f78c17143", - "e6c8125637438d0905b749f46560ac89fd471cf8692e28fab982f73f019b83a9", - "19fc8ca6979d60e6edd3b4541e2f967ced740df6ec1eaebbfe813832e96b2974", - "a6ad777ce881b52bb5a4421ab6cdd2dfba13e963652d4d6d122aee46548c14a7", - "f5c4b2ba1a00781b13aba0425242c69cb1552f3f71a9a3bb22b4a6b4277b46dd", - "e33c4c9bd0cc7e45c80e65c77fa5997fec7002738541509e68a9423891e822a3", - "fba16169b2c3ee105be6e1e650e5cbf40746b6753d036ab55179014ad7ef6651", - "f5c4bec6d62fc608bf41cc115f16d61c7efd3ff6c65692bbe0afffb1fede7475", - "a4862e76db847f05ba17ede5da4e7f91b5925cf1ad4ba12732c3995742a5cd6e", - "65f4b860cd15b38ef814a1a804314a55be953caa65fd758ad989ff34a41c1eea", - "19ba234f0a4f38637d1839f9d9f76ad91c8522307143c97d5f93f69274cec9a7", - "1a67186ca4a5cb8e65fca0e2ecbc5ddc14ae381bb8bffeb9e0a103449e3ef03c", - "afbea317b5a2e89c0bd90ccf5d7fd0ed57fe585e4be3271b0a6bf0f5786b0f26", - "f1b01558ce541262f5ec34299d6fb4090009e3434be2f49105cf46af4d2d4124", - "13a0a0c86335635eaa74ca2d5d488c797bbb4f47dc07105015ed6a1f3309efce", - "1580afeebebb346f94d59fe62da0b79237ead7b1491f5667a90e45edf6ca8b03", - "20be1a875b38c573dd7faaa0de489d655c11efb6a552698e07a2d331b5f655c3", - "be1fe3c4c04018c54c4a0f6b9a2ed3c53abe3a9f76b4d26de56fc9ae95059a99", - "e3e3ace537eb3edd8463d9ad3582e13cf86533ffde43d668dd2e93bbdbd7195a", - "110c50c0bf2c6e7aeb7e435d92d132ab6655168e78a2decdec3330777684d9c1", - "e9ba8f505c9c80c08666a701f3367e6cc665f34b22e73c3c0417eb1c2206082f", - "26cd66fca02379c76df12317052bcafd6cd8c3a7b890d805f36c49989782433a", - "213f3596d6e3a5d0e9932cd2159146015e2abc949f4729ee2632fe1edb78d337", - "1015d70108e03be1c702fe97253607d14aee591f2413ea6787427b6459ff219a", - "3ca989de10cfe609909472c8d35610805b2f977734cf652cc64b3bfc882d5d89", - "b6156f72d380ee9ea6acd190464f2307a5c179ef01fd71f99f2d0f7a57360aea", - "c03bc642b20959cbe133a0303e0c1abff3e31ec8e1a328ec8565c36decff5265", - "2c3e08176f760c6264c3a2cd66fec6c3d78de43fc192457b2a4a660a1e0eb22b", - "f738c02f3c1b190c512b1a32deabf353728e0e9ab034490e3c3409946a97aeec", - "8b1880df301cc963418811088964839287ff7fe31c49ea6ebd9e48bdeee497c5", - "1e75cb21c60989020375f1a7a242839f0b0b68973a4c2a05cf7555ed5aaec4c1", - "62bf8a9c32a5bccf290b6c474d75b2a2a4093f1a9e27139433a8f2b3bce7b8d7", - "166c8350d3173b5e702b783dfd33c66ee0432742e9b92b997fd23c60dc6756ca", - "044a14d822a90cacf2f5a101428adc8f4109386ccb158bf905c8618b8ee24ec3", - "387d397ea43a994be84d2d544afbe481a2000f55252696bba2c50c8ebd101347", - "56f8ccf1f86409b46ce36166ae9165138441577589db08cbc5f66ca29743b9fd", - "9706c092b04d91f53dff91fa37b7493d28b576b5d710469df79401662236fc03", - "877968686c068ce2f7e2adcff68bf8748edf3cf862cfb4d3947a3106958054e3", - "8817e5719879acf7024787eccdb271035566cfa333e049407c0178ccc57a5b9f", - "8938249e4b50cadaccdf5b18621326cbb15253e33a20f5636e995d72478de472", - "f164abba4963a44d107257e3232d90aca5e66a1408248c51741e991db5227756", - "d05563e2b1cba0c4a2a1e8bde3a1a0d9f5b40c85a070d6f5fb21066ead5d0601", - "03fbb16384f0a3866f4c3117877666efbf124597564b293d4aab0d269fabddfa", - "5fa8486ac0e52964d1881bbe338eb54be2f719549224892057b4da04ba8b3475", - "cdfabcee46911111236a31708b2539d71fc211d9b09c0d8530a11e1dbf6eed01", - "4f82de03b9504793b82a07a0bdcdff314d759e7b62d26b784946b0d36f916f52", - "259ec7f173bcc76a0994c967b4f5f024c56057fb79c965c4fae41875f06a0e4c", - "193cc8e7c3e08bb30f5437aa27ade1f142369b246a675b2383e6da9b49a9809e", - "5c10896f0e2856b2a2eee0fe4a2c1633565d18f0e93e1fab26c373e8f829654d", - "f16012d93f28851a1eb989f5d0b43f3f39ca73c9a62d5181bff237536bd348c3", - "2966b3cfae1e44ea996dc5d686cf25fa053fb6f67201b9e46eade85d0ad6b806", - "ddb8782485e900bc60bcf4c33a6fd585680cc683d516efa03eb9985fad8715fb", - "4c4d6e71aea05786413148fc7a786b0ecaf582cff1209f5a809fba8504ce662c", - "fb4c5e86d7b2229b99b8ba6d94c247ef964aa3a2bae8edc77569f28dbbff2d4e", - "e94f526de9019633ecd54ac6120f23958d7718f1e7717bf329211a4faeed4e6d", - "cbd6660a10db3f23f7a03d4b9d4044c7932b2801ac89d60bc9eb92d65a46c2a0", - "8818bbd3db4dc123b25cbba5f54c2bc4b3fcf9bf7d7a7709f4ae588b267c4ece", - "c65382513f07460da39833cb666c5ed82e61b9e998f4b0c4287cee56c3cc9bcd", - "8975b0577fd35566d750b362b0897a26c399136df07bababbde6203ff2954ed4", - "21fe0ceb0052be7fb0f004187cacd7de67fa6eb0938d927677f2398c132317a8", - "2ef73f3c26f12d93889f3c78b6a66c1d52b649dc9e856e2c172ea7c58ac2b5e3", - "388a3cd56d73867abb5f8401492b6e2681eb69851e767fd84210a56076fb3dd3", - "af533e022fc9439e4e3cb838ecd18692232adf6fe9839526d3c3dd1b71910b1a", - "751c09d41a9343882a81cd13ee40818d12eb44c6c7f40df16e4aea8fab91972a", - "5b73ddb68d9d2b0aa265a07988d6b88ae9aac582af83032f8a9b21a2e1b7bf18", - "3da29126c7c5d7f43e64242a79feaa4ef3459cdeccc898ed59a97f6ec93b9dab", - "566dc920293da5cb4fe0aa8abda8bbf56f552313bff19046641e3615c1e3ed3f", - "4115bea02f73f97f629e5c5590720c01e7e449ae2a6697d4d2783321303692f9", - "4ce08f4762468a7670012164878d68340c52a35e66c1884d5c864889abc96677", - "81ea0b7804124e0c22ea5fc71104a2afcb52a1fa816f3ecb7dcb5d9dea1786d0", - "fe362733b05f6bedaf9379d7f7936ede209b1f8323c3922549d9e73681b5db7b", - "eff37d30dfd20359be4e73fdf40d27734b3df90a97a55ed745297294ca85d09f", - "172ffc67153d12e0ca76a8b6cd5d4731885b39ce0cac93a8972a18006c8b8baf", - "c47957f1cc88e83ef9445839709a480a036bed5f88ac0fcc8e1e703ffaac132c", - "30f3548370cfdceda5c37b569b6175e799eef1a62aaa943245ae7669c227a7b5", - "c95dcb3cf1f27d0eef2f25d2413870904a877c4a56c2de1e83e2bc2ae2e46821", - "d5d0b5d705434cd46b185749f66bfb5836dcdf6ee549a2b7a4aee7f58007caaf", - "bbc124a712f15d07c300e05b668389a439c91777f721f8320c1c9078066d2c7e", - "a451b48c35a6c7854cfaae60262e76990816382ac0667e5a5c9e1b46c4342ddf", - "b0d150fb55e778d01147f0b5d89d99ecb20ff07e5e6760d6b645eb5b654c622b", - "34f737c0ab219951eee89a9f8dac299c9d4c38f33fa494c5c6eefc92b6db08bc", - "1a62cc3a00800dcbd99891080c1e098458193a8cc9f970ea99fbeff00318c289", - "cfce55ebafc840d7ae48281c7fd57ec8b482d4b704437495495ac414cf4a374b", - "6746facf71146d999dabd05d093ae586648d1ee28e72617b99d0f0086e1e45bf", - "571ced283b3f23b4e750bf12a2caf1781847bd890e43603cdc5976102b7bb11b", - "cfcb765b048e35022c5d089d26e85a36b005a2b80493d03a144e09f409b6afd1", - "4050c7a27705bb27f42089b299f3cbe5054ead68727e8ef9318ce6f25cd6f31d", - "184070bd5d265fbdc142cd1c5cd0d7e414e70369a266d627c8fba84fa5e84c34", - "9edda9a4443902a9588c0d0ccc62b930218479a6841e6fe7d43003f04b1fd643", - "e412feef7908324a6da1841629f35d3d358642019310ec57c614836b63d30763", - "1a2b8edff3f9acc1554fcbae3cf1d6298c6462e22e5eb0259684f835012bd13f", - "288c4ad9b9409762ea07c24a41f04f69a7d74bee2d95435374bde946d7241c7b", - "805691bb286748cfb591d3aebe7e6f4e4dc6e2808c65143cc004e4eb6fd09d43", - "d4ac8d3a0afc6cfa7b460ae3001baeb36dadb37da07d2e8ac91822df348aed3d", - "c376617014d20158bced3d3ba552b6eccf84e62aa3eb650e90029c84d13eea69", - "c41f09f43cecae7293d6007ca0a357087d5ae59be500c1cd5b289ee810c7b082", - "03d1ced1fba5c39155c44b7765cb760c78708dcfc80b0bd8ade3a56da8830b29", - "09bde6f152218dc92c41d7f45387e63e5869d807ec70b821405dbd884b7fcf4b", - "71c9036e18179b90b37d39e9f05eb89cc5fc341fd7c477d0d7493285faca08a4", - "5916833ebb05cd919ca7fe83b692d3205bef72392b2cf6bb0a6d43f994f95f11", - "f63aab3ec641b3b024964c2b437c04f6043c4c7e0279239995401958f86bbe54", - "f172b180bfb09740493120b6326cbdc561e477def9bbcfd28cc8c1c5e3379a31", - "cb9b89cc18381dd9141ade588654d4e6a231d5bf49d4d59ac27d869cbe100cf3", - "7bd8815046fdd810a923e1984aaebdcdf84d87c8992d68b5eeb460f93eb3c8d7", - "607be66862fd08ee5b19facac09dfdbcd40c312101d66e6ebd2b841f1b9a9325", - "9fe03bbe69ab1834f5219b0da88a08b30a66c5913f0151963c360560db0387b3", - "90a83585717b75f0e9b725e055eeeeb9e7a028ea7e6cbc07b20917ec0363e38c", - "336ea0530f4a7469126e0218587ebbde3358a0b31c29d200f7dc7eb15c6aadd8", - "a79e76dc0abca4396f0747cd7b748df913007626b1d659da0c1f78b9303d01a3", - "44e78a773756e0951519504d7038d28d0213a37e0ce375371757bc996311e3b8", - "77ac012a3f754dcfeab5eb996be9cd2d1f96111b6e49f3994df181f28569d825", - "ce5a10db6fccdaf140aaa4ded6250a9c06e9222bc9f9f3658a4aff935f2b9f3a", - "ecc203a7fe2be4abd55bb53e6e673572e0078da8cd375ef430cc97f9f80083af", - "14a5186de9d7a18b0412b8563e51cc5433840b4a129a8ff963b33a3c4afe8ebb", - "13f8ef95cb86e6a638931c8e107673eb76ba10d7c2cd70b9d9920bbeed929409", - "0b338f4ee12f2dfcb78713377941e0b0632152581d1332516e4a2cab1942cca4", - "eaab0ec37b3b8ab796e9f57238de14a264a076f3887d86e29bb5906db5a00e02", - "23cb68b8c0e6dc26dc27766ddc0a13a99438fd55617aa4095d8f969720c872df", - "091d8ee30d6f2968d46b687dd65292665742de0bb83dcc0004c72ce10007a549", - "7f507abc6d19ba00c065a876ec5657868882d18a221bc46c7a6912541f5bc7ba", - "a0607c24e14e8c223db0d70b4d30ee88014d603f437e9e02aa7dafa3cdfbad94", - "ddbfea75cc467882eb3483ce5e2e756a4f4701b76b445519e89f22d60fa86e06", - "0c311f38c35a4fb90d651c289d486856cd1413df9b0677f53ece2cd9e477c60a", - "46a73a8dd3e70f59d3942c01df599def783c9da82fd83222cd662b53dce7dbdf", - "ad038ff9b14de84a801e4e621ce5df029dd93520d0c2fa38bff176a8b1d1698c", - "ab70c5dfbd1ea817fed0cd067293abf319e5d7901c2141d5d99b23f03a38e748", - "1fffda67932b73c8ecaf009a3491a026953babfe1f663b0697c3c4ae8b2e7dcb", - "b0d2cc19472dd57f2b17efc03c8d58c2283dbb19da572f7755855aa9794317a0", - "a0d19a6ee33979c325510e276622df41f71583d07501b87071129a0ad94732a5", - "724642a7032d1062b89e52bea34b75df7d8fe772d9fe3c93ddf3c4545ab5a99b", - "ade5eaa7e61f672d587ea03dae7d7b55229c01d06bc0a5701436cbd18366a626", - "013b31ebd228fcdda51fabb03bb02d60ac20ca215aafa83bdd855e3755a35f0b", - "332ed40bb10dde3c954a75d7b8999d4b26a1c063c1dc6e32c1d91bab7bbb7d16", - "c7a197b3a05b566bcc9facd20e441d6f6c2860ac9651cd51d6b9d2cdeeea0390", - "bd9cf64ea8953c037108e6f654914f3958b68e29c16700dc184d94a21708ff60", - "8835b0ac021151df716474ce27ce4d3c15f0b2dab48003cf3f3efd0945106b9a", - "3bfefa3301aa55c080190cffda8eae51d9af488b4c1f24c3d9a75242fd8ea01d", - "08284d14993cd47d53ebaecf0df0478cc182c89c00e1859c84851686ddf2c1b7", - "1ed7ef9f04c2ac8db6a864db131087f27065098e69c3fe78718d9b947f4a39d0", - "c161f2dcd57e9c1439b31a9dd43d8f3d7dd8f0eb7cfac6fb25a0f28e306f0661", - "c01969ad34c52caf3dc4d80d19735c29731ac6e7a92085ab9250c48dea48a3fc", - "1720b3655619d2a52b3521ae0e49e345cb3389ebd6208acaf9f13fdacca8be49", - "756288361c83e24c617cf95c905b22d017cdc86f0bf1d658f4756c7379873b7f", - "e7d0eda3452693b752abcda1b55e276f82698f5f1605403eff830bea0071a394", - "2c82ecaa6b84803e044af63118afe544687cb6e6c7df49ed762dfd7c8693a1bc", - "6136cbf4b441056fa1e2722498125d6ded45e17b52143959c7f4d4e395218ac2", - "721d3245aafef27f6a624f47954b6c255079526ffa25e9ff77e5dcff473b1597", - "9dd2fbd8cef16c353c0ac21191d509eb28dd9e3e0d8cea5d26ca839393851c3a", - "b2394ceacdebf21bf9df2ced98e58f1c3a4bbbff660dd900f62202d6785cc46e", - "57089f222749ad7871765f062b114f43ba20ec56422a8b1e3f87192c0ea718c6", - "e49a9459961cd33cdf4aae1b1078a5dea7c040e0fea340c93a724872fc4af806", - "ede67f720effd2ca9c88994152d0201dee6b0a2d2c077aca6dae29f73f8b6309", - "e0f434bf22e3088039c21f719ffc67f0f2cb5e98a7a0194c76e96bf4e8e17e61", - "277c04e2853484a4eba910ad336d01b477b67cc200c59f3c8d77eef8494f29cd", - "156d5747d0c99c7f27097d7b7e002b2e185cb72d8dd7eb424a0321528161219f", - "20ddd1ed9b1ca803946d64a83ae4659da67fba7a1a3eddb1e103c0f5e03e3a2c", - "f0af604d3dabbf9a0f2a7d3dda6bd38bba72c6d09be494fcef713ff10189b6e6", - "9802bb87def4cc10c4a5fd49aa58dfe2f3fddb46b4708814ead81d23ba95139b", - "4f8ce1e51d2fe7f24043a904d898ebfc91975418753413aa099b795ecb35cedb", - "bddc6514d7ee6ace0a4ac1d0e068112288cbcf560454642705630177cba608bd", - "d635994f6291517b0281ffdd496afa862712e5b3c4e52e4cd5fdae8c0e72fb08", - "878d9ca600cf87e769cc305c1b35255186615a73a0da613b5f1c98dbf81283ea", - "a64ebe5dc185de9fdde7607b6998702eb23456184957307d2fa72e87a47702d6", - "ce50eab7b5eb52bdc9ad8e5a480ab780ca9320e44360b1fe37e03f2f7ad7de01", - "eeddb7c0db6e30abe66d79e327511e61fcebbc29f159b40a86b046ecf0513823", - "787fc93440c1ec96b5ad01c16cf77916a1405f9426356ec921d8dff3ea63b7e0", - "7f0d5eab47eefda696c0bf0fbf86ab216fce461e9303aba6ac374120e890e8df", - "b68004b42f14ad029f4c2e03b1d5eb76d57160e26476d21131bef20ada7d27f4", - "b0c4eb18ae250b51a41382ead92d0dc7455f9379fc9884428e4770608db0faec", - "f92b7a870c059f4d46464c824ec96355140bdce681322cc3a992ff103e3fea52", - "5364312614813398cc525d4c4e146edeb371265fba19133a2c3d2159298a1742", - "f6620e68d37fb2af5000fc28e23b832297ecd8bce99e8be4d04e85309e3d3374", - "5316a27969d7fe04ff27b283961bffc3bf5dfb32fb6a89d101c6c3b1937c2871", - "81d1664fdf3cb33c24eebac0bd64244b77c4abea90bbe8b5ee0b2aafcf2d6a53", - "345782f295b0880352e924a0467b5fbc3e8f3bfbc3c7e48b67091fb5e80a9442", - "794111ea6cd65e311f74ee41d476cb632ce1e4b051dc1d9e9d061a19e1d0bb49", - "2a85daf6138816b99bf8d08ba2114b7ab07975a78420c1a3b06a777c22dd8bcb", - "89b0d5f289ec16401a069a960d0b093e625da3cf41ee29b59b930c5820145455", - "d0fdcb543943fc27d20864f52181471b942cc77ca675bcb30df31d358ef7b1eb", - "b17ea8d77063c709d4dc6b879413c343e3790e9e62ca85b7900b086f6b75c672", - "e71a3e2c274db842d92114f217e2c0eac8b45093fdfd9df4ca7162394862d501", - "c0476759ab7aa333234f6b44f5fd858390ec23694c622cb986e769c78edd733e", - "9ab8eabb1416434d85391341d56993c55458167d4418b19a0f2ad8b79a83a75b", - "7992d0bbb15e23826f443e00505d68d3ed7372995a5c3e498654102fbcd0964e", - "c021b30085151435df33b007ccecc69df1269f39ba25092bed59d932ac0fdc28", - "91a25ec0ec0d9a567f89c4bfe1a65a0e432d07064b4190e27dfb81901fd3139b", - "5950d39a23e1545f301270aa1a12f2e6c453776e4d6355de425cc153f9818867", - "d79f14720c610af179a3765d4b7c0968f977962dbf655b521272b6f1e194488e", - "e9531bfc8b02995aeaa75ba27031fadbcbf4a0dab8961d9296cd7e84d25d6006", - "34e9c26a01d7f16181b454a9d1623c233cb99d31c694656e9413aca3e918692f", - "d9d7422f437bd439ddd4d883dae2a08350173414be78155133fff1964c3d7972", - "4aee0c7aaf075414ff1793ead7eaca601775c615dbd60b640b0a9f0ce505d435", - "6bfdd15459c83b99f096bfb49ee87b063d69c1974c6928acfcfb4099f8c4ef67", - "9fd1c408fd75c336193a2a14d94f6af5adf050b80387b4b010fb29f4cc72707c", - "13c88480a5d00d6c8c7ad2110d76a82d9b70f4fa6696d4e5dd42a066dcaf9920", - "820e725ee25fe8fd3a8d5abe4c46c3ba889de6fa9191aa22ba67d5705421542b", - "32d93a0eb02f42fbbcaf2bad0085b282e46046a4df7ad10657c9d6476375b93e", - "adc5187905b1669cd8ec9c721e1953786b9d89a9bae30780f1e1eab24a00523c", - "e90756ff7f9ad810b239a10ced2cf9b2284354c1f8c7e0accc2461dc796d6e89", - "1251f76e56978481875359801db589a0b22f86d8d634dc04506f322ed78f17e8", - "3afa899fd980e73ecb7f4d8b8f291dc9af796bc65d27f974c6f193c9191a09fd", - "aa305be26e5deddc3c1010cbc213f95f051c785c5b431e6a7cd048f161787528", - "8ea1884ff32e9d10f039b407d0d44e7e670abd884aeee0fb757ae94eaa97373d", - "d482b2155d4dec6b4736a1f1617b53aaa37310277d3fef0c37ad41768fc235b4", - "4d413971387e7a8898a8dc2a27500778539ea214a2dfe9b3d7e8ebdce5cf3db3", - "696e5d46e6c57e8796e4735d08916e0b7929b3cf298c296d22e9d3019653371c", - "1f5647c1d3b088228885865c8940908bf40d1a8272821973b160008e7a3ce2eb", - "b6e76c330f021a5bda65875010b0edf09126c0f510ea849048192003aef4c61c", - "3cd952a0beada41abb424ce47f94b42be64e1ffb0fd0782276807946d0d0bc55", - "98d92677439b41b7bb513312afb92bcc8ee968b2e3b238cecb9b0f34c9bb63d0", - "ecbca2cf08ae57d517ad16158a32bfa7dc0382eaeda128e91886734c24a0b29d", - "942cc7c0b52e2b16a4b89fa4fc7e0bf609e29a08c1a8543452b77c7bfd11bb28", - "8a065d8b61a0dffb170d5627735a76b0e9506037808cba16c345007c9f79cf8f", - "1b9fa19714659c78ff413871849215361029ac802b1cbcd54e408bd87287f81f", - "8dab071bcd6c7292a9ef727b4ae0d86713301da8618d9a48adce55f303a869a1", - "8253e3e7c7b684b9cb2beb014ce330ff3d99d17abbdbabe4f4d674ded53ffc6b", - "f195f321e9e3d6bd7d074504dd2ab0e6241f92e784b1aa271ff648b1cab6d7f6", - "27e4cc72090f241266476a7c09495f2db153d5bcbd761903ef79275ec56b2ed8", - "899c2405788e25b99a1846355e646d77cf400083415f7dc5afe69d6e17c00023", - "a59b78c4905744076bfee894de707d4f120b5c6893ea0400297d0bb834727632", - "59dc78b105649707a2bb4419c48f005400d3973de3736610230435b10424b24f", - "c0149d1d7e7a6353a6d906efe728f2f329fe14a4149a3ea77609bc42b975ddfa", - "a32f241474a6c16932e9243be0cf09bcdc7e0ca0e7a6a1b9b1a0f01e41502377", - "b239b2e4f81841361c1339f68e2c359f929af9ad9f34e01aab4631ad6d5500b0", - "85fb419c7002a3e0b4b6ea093b4c1ac6936645b65dac5ac15a8528b7b94c1754", - "9619720625f190b93a3fad186ab314189633c0d3a01e6f9bc8c4a8f82f383dbf", - "7d620d90fe69fa469a6538388970a1aa09bb48a2d59b347b97e8ce71f48c7f46", - "294383568596fb37c75bbacd979c5ff6f20a556bf8879cc72924855df9b8240e", - "16b18ab314359c2b833c1c6986d48c55a9fc97cde9a3c1f10a3177140f73f738", - "8cbbdd14bc33f04cf45813e4a153a273d36adad5ce71f499eeb87fb8ac63b729", - "69c9a498db174ecaefcc5a3ac9fdedf0f813a5bec727f1e775babdec7718816e", - "b462c3be40448f1d4f80626254e535b08bc9cdcff599a768578d4b2881a8e3f0", - "553e9d9c5f360ac0b74a7d44e5a391dad4ced03e0c24183b7e8ecabdf1715a64", - "7a7c55a56fa9ae51e655e01975d8a6ff4ae9e4b486fcbe4eac044588f245ebea", - "2afdf3c82abc4867f5de111286c2b3be7d6e48657ba923cfbf101a6dfcf9db9a", - "41037d2edcdce0c49b7fb4a6aa0999ca66976c7483afe631d4eda283144f6dfc", - "c4466f8497ca2eeb4583a0b08e9d9ac74395709fda109d24f2e4462196779c5d", - "75f609338aa67d969a2ae2a2362b2da9d77c695dfd1df7224a6901db932c3364", - "68606ceb989d5488fc7cf649f3d7c272ef055da1a93faecd55fe06f6967098ca", - "44346bdeb7e052f6255048f0d9b42c425bab9c3dd24168212c3ecf1ebf34e6ae", - "8e9cf6e1f366471f2ac7d2ee9b5e6266fda71f8f2e4109f2237ed5f8813fc718", - "84bbeb8406d250951f8c1b3e86a7c010082921833dfd9555a2f909b1086eb4b8", - "ee666f3eef0f7e2a9c222958c97eaf35f51ced393d714485ab09a069340fdf88", - "c153d34a65c47b4a62c5cacf24010975d0356b2f32c8f5da530d338816ad5de6", - "9fc5450109e1b779f6c7ae79d56c27635c8dd426c5a9d54e2578db989b8c3b4e", - "d12bf3732ef4af5c22fa90356af8fc50fcb40f8f2ea5c8594737a3b3d5abdbd7", - "11030b9289bba5af65260672ab6fee88b87420acef4a1789a2073b7ec2f2a09e", - "69cb192b8444005c8c0ceb12c846860768188cda0aec27a9c8a55cdee2123632", - "db444c15597b5f1a03d1f9edd16e4a9f43a667cc275175dfa2b704e3bb1a9b83", - "3fb735061abc519dfe979e54c1ee5bfad0a9d858b3315bad34bde999efd724dd", -} - -var hashes128 = []string{ - "9536f9b267655743dee97b8a670f9f53", - "13bacfb85b48a1223c595f8c1e7e82cb", - "d47a9b1645e2feae501cd5fe44ce6333", - "1e2a79436a7796a3e9826bfedf07659f", - "7640360ed3c4f3054dba79a21dda66b7", - "d1207ac2bf5ac84fc9ef016da5a46a86", - "3123987871e59305ece3125abfc0099a", - "cf9e072ad522f2cda2d825218086731c", - "95d22870392efe2846b12b6e8e84efbb", - "7d63c30e2d51333f245601b038c0b93b", - "ed608b98e13976bdf4bedc63fa35e443", - "ed704b5cd1abf8e0dd67a6ac667a3fa5", - "77dc70109827dc74c70fd26cba379ae5", - "d2bf34508b07825ee934f33958f4560e", - "a340baa7b8a93a6e658adef42e78eeb7", - "b85c5ceaecbe9a251eac76f6932ba395", - "246519722001f6e8e97a2183f5985e53", - "5bce5aa0b7c6cac2ecf6406183cd779a", - "13408f1647c02f6efd0047ad8344f695", - "a63970f196760aa36cb965ab62f0e0fa", - "bc26f48421dd99fd45e15e736d3e7dac", - "4c6f70f9e3237cde918afb52d26f1823", - "45ed610cfbc37db80c4bf0eef14ae8d6", - "87c4c150705ea5078209ec008200539c", - "54de21f5e0e6f2afe04daeb822b6931e", - "9732a04e505064e19de3d542e7e71631", - "d2bd27e95531d6957eef511c4ba64ad4", - "7a36c9f70dcc7c3063b547101a5f6c35", - "322007d1a44c4257bc7903b183305529", - "dbcc9a09f412290ca2e0d53dfd142ddb", - "df12ed43b8e53a56db20e0f83764002c", - "d114cc11e7d5b33a360c45f18d4c7c6e", - "c43b5e836af88620a8a71b1652cb8640", - "9491c653e8867ed73c1b4ac6b5a9bb4d", - "06d0e988df94ada6c6f9f36f588ab7c5", - "561efad2480e93262c8eeaa3677615c4", - "ba8ffc702e5adc93503045eca8702312", - "5782be6ccdc78c8425285e85de8ccdc6", - "aa1c4393e4c07b53ea6e2b5b1e970771", - "42a229dc50e52271c51e8666023ebc1e", - "53706110e919f84de7f8d6c7f0e7b831", - "fc5ac8ee39cc1dd1424391323e2901bd", - "bed27b62ff66cac2fbb68193c727106a", - "cd5e689b96d0b9ea7e08dac36f7b211e", - "0b4c7f604eba058d18e322c6e1baf173", - "eb838227fdfad09a27f0f8413120675d", - "3149cf9d19a7fd529e6154a8b4c3b3ad", - "ca1e20126df930fd5fb7afe4422191e5", - "b23398f910599f3c09b6549fa81bcb46", - "27fb17c11b34fa5d8b5afe5ee3321ead", - "0f665f5f04cf2d46b7fead1a1f328158", - "8f068be73b3681f99f3b282e3c02bba5", - "ba189bbd13808dcf4e002a4dd21660d5", - "2732dcd1b16668ae6ab6a61595d0d62a", - "d410ccdd059f0e02b472ec9ec54bdd3c", - "b2eaa07b055b3a03a399971327f7e8c2", - "2e8a225655e9f99b69c60dc8b4d8e566", - "4eb55416c853f2152e67f8a224133cec", - "49552403790d8de0505a8e317a443687", - "7f2747cd41f56942752e868212c7d5ac", - "02a28f10e193b430df7112d2d98cf759", - "d4213404a9f1cf759017747cf5958270", - "faa34884344f9c65e944882db8476d34", - "ece382a8bd5018f1de5da44b72cea75b", - "f1efa90d2547036841ecd3627fafbc36", - "811ff8686d23a435ecbd0bdafcd27b1b", - "b21beea9c7385f657a76558530438721", - "9cb969da4f1b4fc5b13bf78fe366f0c4", - "8850d16d7b614d3268ccfa009d33c7fc", - "aa98a2b6176ea86415b9aff3268c6f6d", - "ec3e1efa5ed195eff667e16b1af1e39e", - "e40787dca57411d2630db2de699beb08", - "554835890735babd06318de23d31e78a", - "493957feecddc302ee2bb2086b6ebfd3", - "f6069709ad5b0139163717e9ce1114ab", - "ba5ed386098da284484b211555505a01", - "9244c8dfad8cbb68c118fa51465b3ae4", - "51e309a5008eb1f5185e5cc007cfb36f", - "6ce9ff712121b4f6087955f4911eafd4", - "59b51d8dcda031218ccdd7c760828155", - "0012878767a3d4f1c8194458cf1f8832", - "82900708afd5b6582dc16f008c655edd", - "21302c7e39b5a4cdf1d6f86b4f00c9b4", - "e894c7431591eab8d1ce0fe2aa1f01df", - "b67e1c40ee9d988226d605621854d955", - "6237bdafa34137cbbec6be43ea9bd22c", - "4172a8e19b0dcb09b978bb9eff7af52b", - "5714abb55bd4448a5a6ad09fbd872fdf", - "7ce1700bef423e1f958a94a77a94d44a", - "3742ec50cded528527775833453e0b26", - "5d41b135724c7c9c689495324b162f18", - "85c523333c6442c202e9e6e0f1185f93", - "5c71f5222d40ff5d90e7570e71ab2d30", - "6e18912e83d012efb4c66250ced6f0d9", - "4add4448c2e35e0b138a0bac7b4b1775", - "c0376c6bc5e7b8b9d2108ec25d2aab53", - "f72261d5ed156765c977751c8a13fcc1", - "cff4156c48614b6ceed3dd6b9058f17e", - "36bfb513f76c15f514bcb593419835aa", - "166bf48c6bffaf8291e6fdf63854bef4", - "0b67d33f8b859c3157fbabd9e6e47ed0", - "e4da659ca76c88e73a9f9f10f3d51789", - "33c1ae2a86b3f51c0642e6ed5b5aa1f1", - "27469b56aca2334449c1cf4970dcd969", - "b7117b2e363378aa0901b0d6a9f6ddc0", - "a9578233b09e5cd5231943fdb12cd90d", - "486d7d75253598b716a068243c1c3e89", - "66f6b02d682b78ffdc85e9ec86852489", - "38a07b9a4b228fbcc305476e4d2e05d2", - "aedb61c7970e7d05bf9002dae3c6858c", - "c03ef441f7dd30fdb61ad2d4d8e4c7da", - "7f45cc1eea9a00cb6aeb2dd748361190", - "a59538b358459132e55160899e47bd65", - "137010fef72364411820c3fbed15c8df", - "d8362b93fc504500dbd33ac74e1b4d70", - "a7e49f12c8f47e3b29cf8c0889b0a9c8", - "072e94ffbfc684bd8ab2a1b9dade2fd5", - "5ab438584bd2229e452052e002631a5f", - "f233d14221097baef57d3ec205c9e086", - "3a95db000c4a8ff98dc5c89631a7f162", - "0544f18c2994ab4ddf1728f66041ff16", - "0bc02116c60a3cc331928d6c9d3ba37e", - "b189dca6cb5b813c74200834fba97f29", - "ac8aaab075b4a5bc24419da239212650", - "1e9f19323dc71c29ae99c479dc7e8df9", - "12d944c3fa7caa1b3d62adfc492274dd", - "b4c68f1fffe8f0030e9b18aad8c9dc96", - "25887fab1422700d7fa3edc0b20206e2", - "8c09f698d03eaf88abf69f8147865ef6", - "5c363ae42a5bec26fbc5e996428d9bd7", - "7fdfc2e854fbb3928150d5e3abcf56d6", - "f0c944023f714df115f9e4f25bcdb89b", - "6d19534b4c332741c8ddd79a9644de2d", - "32595eb23764fbfc2ee7822649f74a12", - "5a51391aab33c8d575019b6e76ae052a", - "98b861ce2c620f10f913af5d704a5afd", - "b7fe2fc8b77fb1ce434f8465c7ddf793", - "0e8406e0cf8e9cc840668ece2a0fc64e", - "b89922db99c58f6a128ccffe19b6ce60", - "e1be9af665f0932b77d7f5631a511db7", - "74b96f20f58de8dc9ff5e31f91828523", - "36a4cfef5a2a7d8548db6710e50b3009", - "007e95e8d3b91948a1dedb91f75de76b", - "a87a702ce08f5745edf765bfcd5fbe0d", - "847e69a388a749a9c507354d0dddfe09", - "07176eefbc107a78f058f3d424ca6a54", - "ad7e80682333b68296f6cb2b4a8e446d", - "53c4aba43896ae422e5de5b9edbd46bf", - "33bd6c20ca2a7ab916d6e98003c6c5f8", - "060d088ea94aa093f9981a79df1dfcc8", - "5617b214b9df08d4f11e58f5e76d9a56", - "ca3a60ee85bd971e1daf9f7db059d909", - "cd2b7754505d8c884eddf736f1ec613e", - "f496163b252f1439e7e113ba2ecabd8e", - "5719c7dcf9d9f756d6213354acb7d5cf", - "6f7dd40b245c54411e7a9be83ae5701c", - "c8994dd9fdeb077a45ea04a30358b637", - "4b1184f1e35458c1c747817d527a252f", - "fc7df674afeac7a3fd994183f4c67a74", - "4f68e05ce4dcc533acf9c7c01d95711e", - "d4ebc59e918400720035dfc88e0c486a", - "d3105dd6fa123e543b0b3a6e0eeaea9e", - "874196128ed443f5bdb2800ca048fcad", - "01645f134978dc8f9cf0abc93b53780e", - "5b8b64caa257873a0ffd47c981ef6c3f", - "4ee208fc50ba0a6e65c5b58cec44c923", - "53f409a52427b3b7ffabb057ca088428", - "c1d6cd616f5341a93d921e356e5887a9", - "e85c20fea67fa7320dc23379181183c8", - "7912b6409489df001b7372bc94aebde7", - "e559f761ec866a87f1f331767fafc60f", - "20a6f5a36bc37043d977ed7708465ef8", - "6a72f526965ab120826640dd784c6cc4", - "bf486d92ad68e87c613689dd370d001b", - "d339fd0eb35edf3abd6419c8d857acaf", - "9521cd7f32306d969ddabc4e6a617f52", - "a1cd9f3e81520842f3cf6cc301cb0021", - "18e879b6f154492d593edd3f4554e237", - "66e2329c1f5137589e051592587e521e", - "e899566dd6c3e82cbc83958e69feb590", - "8a4b41d7c47e4e80659d77b4e4bfc9ae", - "f1944f6fcfc17803405a1101998c57dd", - "f6bcec07567b4f72851b307139656b18", - "22e7bb256918fe9924dce9093e2d8a27", - "dd25b925815fe7b50b7079f5f65a3970", - "0457f10f299acf0c230dd4007612e58f", - "ecb420c19efd93814fae2964d69b54af", - "14eb47b06dff685d88751c6e32789db4", - "e8f072dbb50d1ab6654aa162604a892d", - "69cff9c62092332f03a166c7b0034469", - "d3619f98970b798ca32c6c14cd25af91", - "2246d423774ee9d51a551e89c0539d9e", - "75e5d1a1e374a04a699247dad827b6cf", - "6d087dd1d4cd15bf47db07c7a96b1db8", - "967e4c055ac51b4b2a3e506cebd5826f", - "7417aa79247e473401bfa92a25b62e2a", - "24f3f4956da34b5c533d9a551ccd7b16", - "0c40382de693a5304e2331eb951cc962", - "9436f949d51b347db5c8e6258dafaaac", - "d2084297fe84c4ba6e04e4fb73d734fe", - "42a6f8ff590af21b512e9e088257aa34", - "c484ad06b1cdb3a54f3f6464a7a2a6fd", - "1b8ac860f5ceb4365400a201ed2917aa", - "c43eadabbe7b7473f3f837fc52650f54", - "0e5d3205406126b1f838875deb150d6a", - "6bf4946f8ec8a9c417f50cd1e67565be", - "42f09a2522314799c95b3fc121a0e3e8", - "06b8f1487f691a3f7c3f74e133d55870", - "1a70a65fb4f314dcf6a31451a9d2704f", - "7d4acdd0823279fd28a1e48b49a04669", - "09545cc8822a5dfc93bbab708fd69174", - "efc063db625013a83c9a426d39a9bddb", - "213bbf89b3f5be0ffdb14854bbcb2588", - "b69624d89fe2774df9a6f43695d755d4", - "c0f9ff9ded82bd73c512e365a894774d", - "d1b68507ed89c17ead6f69012982db71", - "14cf16db04648978e35c44850855d1b0", - "9f254d4eccab74cd91d694df863650a8", - "8f8946e2967baa4a814d36ff01d20813", - "6b9dc4d24ecba166cb2915d7a6cba43b", - "eb35a80418a0042b850e294db7898d4d", - "f55f925d280c637d54055c9df088ef5f", - "f48427a04f67e33f3ba0a17f7c9704a7", - "4a9f5bfcc0321aea2eced896cee65894", - "8723a67d1a1df90f1cef96e6fe81e702", - "c166c343ee25998f80bad4067960d3fd", - "dab67288d16702e676a040fd42344d73", - "c8e9e0d80841eb2c116dd14c180e006c", - "92294f546bacf0dea9042c93ecba8b34", - "013705b1502b37369ad22fe8237d444e", - "9b97f8837d5f2ebab0768fc9a6446b93", - "7e7e5236b05ec35f89edf8bf655498e7", - "7be8f2362c174c776fb9432fe93bf259", - "2422e80420276d2df5702c6470879b01", - "df645795db778bcce23bbe819a76ba48", - "3f97a4ac87dfc58761cda1782d749074", - "50e3f45df21ebfa1b706b9c0a1c245a8", - "7879541c7ff612c7ddf17cb8f7260183", - "67f6542b903b7ba1945eba1a85ee6b1c", - "b34b73d36ab6234b8d3f5494d251138e", - "0aea139641fdba59ab1103479a96e05f", - "02776815a87b8ba878453666d42afe3c", - "5929ab0a90459ebac5a16e2fb37c847e", - "c244def5b20ce0468f2b5012d04ac7fd", - "12116add6fefce36ed8a0aeccce9b6d3", - "3cd743841e9d8b878f34d91b793b4fad", - "45e87510cf5705262185f46905fae35f", - "276047016b0bfb501b2d4fc748165793", - "ddd245df5a799417d350bd7f4e0b0b7e", - "d34d917a54a2983f3fdbc4b14caae382", - "7730fbc09d0c1fb1939a8fc436f6b995", - "eb4899ef257a1711cc9270a19702e5b5", - "8a30932014bce35bba620895d374df7a", - "1924aabf9c50aa00bee5e1f95b5d9e12", - "1758d6f8b982aec9fbe50f20e3082b46", - "cd075928ab7e6883e697fe7fd3ac43ee", -} - -// hashes2X is taken from -// https://github.com/BLAKE2/BLAKE2/blob/master/testvectors/blake2-kat.json -var hashes2X = []string{ - "0e", - "5196", - "ad6bad", - "d8e4b32f", - "8eb89056f3", - "410497c2ed72", - "f0de771b375c90", - "8662db8685033611", - "9ef9f1eed88a3f52ca", - "08225082df0d2b0a815e", - "0f6e84a17439f1bc97c299", - "895ec39c78d3556cefdbfabc", - "2b396b3fa90ab556079a79b44d", - "abae26501c4c1d6123c0f2289111", - "bca098df9099b3f785a37ba40fce5f", - "19b827f054b67a120f11efb0d690be70", - "b88d32a338fd60b58570fda228a121113b", - "3f30143af1cad33f9b794576e078cc79062e", - "ffddb58d9aa8d38086fcdae07e6653e8f31dfc", - "abb99c2e74a74556919040ca0cd857c95ec985e9", - "71f13f89af55ba936f8a7188ee93d2e8fb0cf2a720", - "99734fdf0eef4838a7515426f4c59b800854e2fcdc1c", - "579b1652aa1f5779d2b0e61868af856855020bdd44d7a7", - "1383d4ab4a6d8672b4075d421a159f69380ff47e4bb518d5", - "d3fa1412712dbbab71d4c6265dc1585c8dcc73380cf807f76a", - "1d57868a71e7245667780455d9aaa9e0683baf08fbaf946091c2", - "ef80418fe7049c6251ed7960a6b0e9def0da2749781994b24593a0", - "ef91cb81e4bfb50231e89475e251e2ef2fde59357551cd227588b63f", - "d7f398a5d21c3139cff0562a84f154b6953c7bc18a5f4b60491c196b6d", - "0a2abc6d38f30aef253579a4088c5b9aec64391f37d576eb06a300c193a5", - "02dd758fa23113a14fd94830e50e0f6b86faec4e551e808b0ca8d00fef2a15", - "a4fe2bd0f96a215fa7164ae1a405f4030a586c12b0c29806a099d7d7fdd8dd72", - "7dce710a20f42ab687ec6ea83b53faaa418229ce0d5a2ff2a5e66defb0b65c03c9", - "0320c40b5eea641d0bc25420b7545ac1d796b61563728a4dc451207f1addeedcf860", - "460539415f2baeb626fad748dee0eb3e9f27221661160e13edf39d1b5d476ee0672400", - "02de8ffa5b9c748164f99ed9d678b02e53f4ae88fb26c6d94a8cefc328725a692eae78c2", - "348a61a0136436136910262ad67ef20644b32c15456d5fad6b1679386d0bea87cc1a2e2b5e", - "24c32966c803434d48d2283482ee8f404f598cf7a17961748125d2ed1da987039b1ce00f2ba7", - "bd07cb16121d3b47adf03b96c41c947beadc01e40548e0d0773e61780d48d33a0e2a675ca681a6", - "a35844e34c20b4b9371b6c52fac412afe5d80a4c1e40aa3a0e5a729dc3d41c2c3719d096f616f0ba", - "6df1efbb4567747fe98d218935612f8835852dde2ce3dec767792d7f1d876cdae0056fef085245449d", - "48d6094af78bd38d8f4b39c54279b80ef617bc6ad21def0b2c62113b656c5d6a55aea2e3fde94a254b92", - "cd6e684759d2f19083164712c2aca0038442efb5b646594396b1fccdbd21203290f44cfdecca0373b3801b", - "155dfbf26103c8354362663677fa27d0e1ce3487a821a2a7171014c1bd5dd071f4974df272b1374765b8f2e1", - "15b11067f311efa4ee813dbca48d690dc92780656bc4d4c56510523190a240180867c829a8b8b9844175a8aa23", - "9bc27953a17fb84d5eabe95b4ea6bc03ea450274abccfb6f3938ded8560fb59662459a11a86b0e0f32fbea6bb1f8", - "03b78fb0b34fb8662accdf350a6be75ace9789653ee4375d351e871f6a98ac5e782ca4b4a717665d25e49a5ae25d81", - "687e9a6fda6e2ce0e40e4d30fef38c31e3513d2892bbe85c991fc3715947e42bc49bcd079a40ed061c2c3665efe555ab", - "f3886027d2049a8909e26545bd202d6a6fa2a6f815d31c7d520f705a81fa606dd695369c37aee4fa77dc645e9b05813ceb", - "e4a412ccd20b97797d91ccc286904fcd17c5afe8bed0618f1af333c052c473cd327637d951c32e4af047106036a3bc8c1c45", - "92f4b8c240a28b6238bc2eabadaf2ff3c4bfe0e6c61268ace6aebdeb0691450caea4287db8b329bde96af8cdb8a0fe2f57ef2d", - "e506834b3445e1a9a9b7bae844e91e0834512a06c0dc75fa4604e3b903c4e23616f2e0c78b5cc496660b4a13064bb1138edef4ff", - "27031955a40d8dbd1591f26e3c26e367a3c68f8204a396c6a4ba34b89672896d11276966a42bd516716f35ed63e442e116dbcf35da", - "646b1635c68d2328dddd5ac26eb9877c24c28390a45753a65044c3136ae2fe4fb40d09bf555271646d3dceb1ab1b7c8d8e421f553f94", - "f6171f8d833743bdee7cc8f8b29c38614e1d2d8d6a5fff68bec2c0f4dd463d7941ff5c368e2683d8f1dc97119bde2b73ca412718bc8cb1", - "45db1c478b040aa2e23fb4427017079810775c62abe737e82ec0ef8dcd0fc51f521f29fe6412fff7eac9beb7bcf75f483f3f8b971e42454b", - "500dab14687db3ca3dde9304af5f54194b37bdf475628af46b07bfbf6bc2b64ecef284b17f9d1d9be41794699bc0e76c2878b3a55730f7142d", - "31bba2efc7b3f415c3f031d4c06bb590ae40085ad157370af30238e03e25a359c9e133212ed34b7a006f839173b577e7015a87fdff2270fafddb", - "0600b3fb4b5e1ed0c8b2698ac1d9905e67e027390764821f963ad8d2b33cbc378b9c25c3ee422992d22b760222ed5697be0576d73938ae9d634ed7", - "4c0ca4f177d132594a4c613bad68da24c564efa3b4da0d0a903f26534a2e09f8d799d10e78f48ccdb0203954a36c5cf1bf24c076632c2b022b041200", - "97aacf2e1b013677b2e14084f097cb1e64d7b3fa36f097e189d86dc4a263bcc46817cd1ee6ff0c7ccd9acef63201cdc0e36254e19204a7388643bb571f", - "71fd6846ce7adb0843d6063546a16b79b54ad6c0f018a479a45817624fa221f63525084860559d1a0679c8d89a80701c62743ec2da8419d503f8f0cd7946", - "f73dfb046def3362d6de36077dae2cee2587fe95fe0800548bb7d99737897096ba59052e0dadcc1fb0ccb5535391875328637a0376a43a4d89366758dfe3e2", - "ec470d0aa932c78c5bcf86203ec0014314114765fa679c3daef214f883a17e1b4ca12f44433772a6e4ef685c904b2fc35586c6bd88f325b965968b06d808d73f", - "cf601753ffa09fe48a8a84c37769991e96290e200bbaf1910c57760f989bd0c72e6128e294528ee861ad7eee70d589de3cf4a0c35f7197e1925a64d0133628d87d", - "f15413f7d6fc54bb55829f698da92ee42fcf58dde1aa1bd07d438ecdc32ad6bf2bcdbecc99f18ed43e81b33065af5a4ca29960ae50553e610c0bbf4153d580e73dbb", - "84b1738adb9757fb9402ef7113581291136184d7ae35fe0b6a738da6acb0889d4d5bac7a957024e3709fa80c77d3859871ed1aa25cf488e438a2d24cfadce6008761dd", - "e02814bb81f250c1835a05108396b74c7878e737654bb83155e241774d04e639bbc571b413cd9349092f926c8a149a53cd33e9b63f370b6d460e504199d2e7d849db6cbe", - "aeee4a789956ec0913592c30ce4f9c544894da77ba447c84df3be2c869100e4df8f7e316445d844b31c3209abcc912f647735fd4a7136c2f35c6fda5b2e6708f5ca951b2b0", - "8cfd11ca385de3c843de84c830d59278fe79b70fb5ddbfbfc1ddefeb22c329ef2f607d1d1abbd1cd0d0cc7c5d3ed922add76aadca0d2f57b66cb16c582b6f18f60aee2f7509b", - "852e5ce2047d8d8b42b4c7e4987b95d23e8026a202d4567951bbbd23111e389fe33a736318546a914d2bddedfbf53846036ad9e35f29318b1f96e33eba08f071d6dc665149feb6", - "f225c23164979d0d13874a90ee291627e4f61a672a5578506fd3d65a12cb48a182f78350dc24c637b2f3950dc4882a5c1d5d5bad551c6f3e0093aa87e962bea51566af3791d52d65", - "5f33864d882455f8ef046aed64e2d1691e5c1555e333b0852750592e6f00d3b5ec941d0c00e99629612795d5870cf93c984b45e4464ba072a34903b400a42824ac13da28c7c1cb1959", - "7baaee7c3eb68c18c5ae1d45ba381803de34e36a52e2d7ccc9d48a297273c4d8644b473195bc23005f7a4f5ca790b1fa11f6a96e585e635513f11745dd97a69c1222204ab28d3c7735df", - "d0a2a3fc450ef9af7ae982041feb2842901026467d87839c33b4a9e081ea63d5be60ae99ca6e42393ded45255b8f42886f87ba0310572d9f0d8b5a07ff4b6bae1f30559a844983cc568560", - "3aa4164462b3e7044c35b08b047b924790f6d5c520b1df4305b5d41f4717e81f0cd4bccb9a5a6594773832b8707443adde4047caaed2293f92234df257df54ed275a9658fab483d0576d33a9", - "c8b4239fd7f1b893d978268f77f6505b5775d89090374322d40083b0f4c437423f670ca213f7fe05c61069725da2561646eefaea597ac48e293fbad44c2872046857e56d04a426a84008cefd71", - "f94839a7024c0a16971271b6727c081770110c957b1f2e03be03d2200b565cf8240f2873b0426042aaea996a1784fadb2b27f23bc1a521b4f7320dfbed86cd38d75141365ba9b443defc0a3b4078", - "8af934fdc8b3376ca09bdd89f9057ed38b656bff96a8f8a3038d456a265689ca32036670cb01469cc6e958cc4a46f1e80d700ae56659828a65c0456b8e55f28f255bc86ce48e44377bf1f9970b617d", - "ada572989e42f0e38c1f7c22b46bb52a84df8f7b3b773c9f17a5823e59a9725248d703efb4cb011abc9474e8e711666ed3cfa60db48480a8160615dfabad761bc0eb843d2e46299c59b61a15b4422fdf", - "b11f1ea52a7e4bd2a5cf1e234b7c9eb909fb45860080f0a6bdb5517a37b5b7cd90f3a9e2297f995e96c293189b807a7bf6e7633bebbc36674544db5f18dd33020aeaf50ee832efe4d3d053873fd31ce3b9", - "e54b006cd96c43d19787c1ab1e08ea0f8922bdb7142e748212e7912a1f2c0a4fad1b9f5209c30960b8b83ef4960e929b155a8a48c8fb7ce4326915950cede6b98a96b6f1ecb12715b713985dacd1c1180413", - "ee2c2f31a414ccd8f6a790f55e09155fd50aac2a878f9014f6c6035cae9186f90cdef0b7adf3e207c3d24ddfba8cd321b2e9228b02a1182b6973da6698071fce8cc0a23a7bf0d5aefd21ab1b8dc7818549bba3", - "6d6810793bad6c7efe8fd56cac04a0fb8717a44c09cbfaebce196a80ac318c79ca5c2db54fee8191ee2d305b690a92bd9e2c947a3c29342a93ac05796484638787a184e4525e82aeb9afa2f9480caebb91014c51", - "91e4694366cff84854872667fd168d2d42eca9070cdc92fca9936e8361e7266931f418450d098a42686241d08024dd72f0024d22ba644bd414245e78608942321ff61860ba1245f83c88592dc7995c49c0c53aa8a9", - "608aa620a5cf145f4477694407ccd8faa3182465b29ae98d96a42f7409434c21e4671bcae079f6871a09d8f2965e4926a9b08277d32f9dd6a474e3a9fb232f27fc4235df9c02abf67f7e540ca9ddc270ee91b23a5b57", - "c14f75e92f75f4356ab01c8792af13383e7fef2ffb3064de55e8da0a50511fea364ccd8140134872adccad197228319260a7b77b67a39677a0dcdcadfb750333ac8e032121e278bdcdbed5e452dae0416011186d9ebf29", - "03fcb9f6e1f058091b11351e775184ff2cd1f31ee846c6ea8efd49dd344f4af473f92eb44eba8a019776f77bb24e294aa9f962b39feecf7c59d46f1a606f89b1e81c2715ac9aa252e9ce941d091ffb99bb52404961794cf8", - "11e189b1d90fcfe8111c79c5351d826f5ec15a602af3b71d50bc7ed813f36c9a682520984ae911669d3c3036223a53176794c7e17929efab2b1c5b500f24f8c83d3db5d1029c5714c6fd34eb800a913985c218071677b9885c", - "69f8f5db3ab0321a708ab2f4234645dade6bfda495851dbe7257f2b72e3e8378b9fa8120bc836b737a675271e519b4712d2b56b359e0f2234ba7552dd4828b939e0542e729878ac1f81b6ce14cb573e76af3a6aa227f95b2350e", - "be734d78fae92cacb009cc400e023086bc3a3a10e8ca7cb4d553ea85314f51383660b8508e8477af60baf7e07c04cc9e094690ae12c73e5f089763201b4b48d664b94b4f5820bd1540f4a84100fdf8fce7f6466aa5d5c34fcbab45", - "d61b77032403f9b6ea5ad2b760eb0157545e37f1712ec44d7926ccf130e8fc0fe8e9b15570a6214c3899a074811486182b250dc97ebdd3b61403614d935cd0a61c0899f31b0e49b81c8a9a4fe8409822c470aacfde229d965dd62f51", - "c31bd548e36d5fae95ed8fa6e807642711c897f0fcc3b0d00bd317ed2bca73412064618c6a84a61c71bce3e963333b0266a5656571dcc4ba8a8c9d84af4bdb445c34a7aef445b15d77698e0b13c436c928cc7fa7acd5f68867e8132993", - "9903b8adab803d085b634bfae2e109dd247a7d6249f203403216d9f7410c36142df8fa56fb4d6f78136eef5817bad5ea3608439bb19336628c37d42db16ab2df8018b773baedafb77278a50926370b48bd81710203c7abc7b4043f9a1751", - "4dadaf0d6a96022c8ce40d48f460526d9956da33260e1770315ead420da75b122c762762aa3ddc1aef9070ff2298b2304cf90443318b17183b60778f3859b141053e5827decfff27ff106a48cfdb0371d0ef614fc7400e860b676df3176d1a", - "314dda800f2f494ca9c9678f178940d2284cb29c51cb01ca2019a9bede0cdc50f8ecf2a77e238b884867e78e691461a66100b38f374c4ccac80309641533a3217eca7e6b9a9af01c026201f0afaec5a61629a59eb530c3cb81934b0cb5b45eae", - "4658b7500951f75c84e4509d74047ca621009835c0152f03c9f96ca73beb29608c44390ba4473323e621284be872bdb72175628780113e470036265d11dfcb284ac04604e667f1e4c1d357a411d3100d4d9f84a14a6fabd1e3f4de0ac81af50179", - "491f877592837e7912f16b73ee1fb06f4633d854a5723e156978f48ec48fbd8b5e863c24d838ff95fa865155d07e5513df42c8bb7706f8e3806b705866475c0ac04bbe5aa4b91b7dc373e82153483b1b03304a1a791b058926c1becd069509cbf46e", - "231034720c719ab31f7c146a702a971f5943b70086b80a2a3eb928fa9380b7a1ad8773bfd0739142d2ad6e19819765ca54f92db5f16c1df5fa4b445c266215a92527bd4ef50ed277b9a21aee3fb7a8128c14ce084f53eac878a7a660b7c011eb1a33c5", - "3366860c77804fe0b4f368b02bb5b0d150821d957e3ba37842da9fc8d336e9d702c8446ecafbd19d79b868702f32405853bc17695873a7306e0ce4573cd9ac0b7fc7dd35534d7635198d152a1802f7d8d6a4bb07600fcdaacfaa1c3f40a09bc02e974c99", - "ccbbbe621f910a95835f5f8d74b21e13f8a4b03f72f91f37b5c7e995aa3cd5539508d5e234e77a4668a42c239b2d13ef0e55ecf85142055e3f8a7e46320e21324a6b88e6c823ac04b485125c2aa59b61476481208f92ea4dd330cb18777c1cf0df7cd07893", - "87faf0e49e7e5ab66ee3147921f8817867fe637d4ab694c33ee8009c759e7d707f44c69c1b9754e2b4f8f47b25f51cd01de7273f548f4952e8efc4d9044c6ea72d1d5857e0ffeb3f44b0c88cb67683401cfb2f1d17f0ca5696641bef28d7579f68d9d066d968", - "38c876a007ec727c92e2503990c4d9407cea2271026aee88cd7b16c4396f00cc4b760576adf2d683713a3f6063cc13ecd7e4f3b6148ad914ca89f34d1375aa4c8e2033f1315153189507bfd116b07fc4bc14f751bbbb0e752f621153ae8df4d68491a22430b309", - "87d636a33dbd9ad81ecd6f3569e418bf8a972f97c5644787b99c361195231a72455a121dd7b3254d6ff80101a0a1e2b1eb1ca4866bd23063fe007310c88c4a2ab3b49f14755cd0ee0e5ffa2fd0d2c0ea41d89e67a27a8f6c94b134ba8d361491b3c20bacac3d226b", - "b021af793badbb857f9a353e320450c44c1030fce3885e6b271bcc02e6af65fdc5be4dc483ff44bd5d539ed1e7eb7efe3001252e92a87df8227ace601047e101c871d29302b3cb6c6f4639078afc81c4c0f4c2e04688612ecf3f7be1d58ea92894a5dab49b949f2089", - "c5c1f2fbf2c8504a686b615278fc6221858d401b7fe790b75fb6bca6885cdd128e9142bf925471ee126f9e62d984de1c30c9c677eff5fdbd5eb0fa4ef3bff6a831056cea20fd61cf44d56ffc5bda0e8472ecdc67946d63c40db4ba882bc4dfa16d8ddac600570b9b6bf3", - "88f8cc0daeaeaea7ab0520a311dff91b1fd9a7a3ec778c333422c9f3eb0bc183acc80dfefb17a5ac5f95c490693c45666ec69234919b83244003191bad837aa2a237daeb427e07b9e7aa6ca94b1db03d54ee8f4fe8d0802cb14a6599005eb6326eefe5008d9098d40aa851", - "2eb6b1a58e7fe39ff915ac84c2f21a22432c4f0d260380a3f993310af048b11647f95d23adf8a746500833ee4e467fb52ea9f1039519fa58bcb0f1d0151558147b3c92b83730aba0e20eeeea2b75f3ff3ad79f2f8a46cbbadb114a52e32f018342aeeaf827e03ad6d583bbce", - "3ba7dcd16a98be1df6b904457709b906cbf8d39516ef107006c0bf363db79f91aaae033466624d30858e61c2c368599963e49f22446e4473aa0df06e9c734e183a941510d540536377072334910e9cef56bc66c12df310ecd4b9dc14207439c1da0ac08bdd9be9f2c840df207e", - "a34a7926324ea96867dac6f0dba51d753268e497b1c4f272918c7eb0e34120be65b7b5ba044d583141ec3ea16fcedae6197116b16562fb0706a89dc8efd3ba173ccd0fd7d84d480e0a3dda3b580c326aa1caca623879b0fb91e7d173998889da704eda6495023b5ad4c9ad406298", - "5ef97d80b90d5c716322d9ba645a0e1b7a403968258a7d43d310320f60f96235f50e9f22cac0ad239636521fa0607d2f471051b505b371d88778c46fe6787d47a91a5bec4e3900fe6ed22918226fc9fbb3f70ee733c369420612b76b5f55988d757c891d7005d17ee55783fe506202", - "140d2c08dae0553f6a49585fd5c217796279152b2e100ebde6812d6e5f6b862b2a3a484aed4d6226197e511be2d7f05f55a916e32534ddcb81bdcf499c3f44f526eb515cc3b6fa4c4039ad251253241f541558bba7413ca29318a414179048a054104e433c674ca2d4b3a4c181878727", - "29fdfc1e859b001ee104d107216b5299a792d26b2418e823e0381fa390380d654e4a0a0720ba5ff59b2ff22d8c4e013284f980911dcfec7f0dca2f89867f311ced1ac8a14d669ef1114504a5b7626f67b22ecd86469800f1575543b72ab1d4c5c10ee08f06159a4a3e1ae09937f12aa173", - "52dfb643832a598a10786a430fc484d6370a05356ee61c80a101dbbcfac75847fba78e27e537cc4eb918eb5ab40b968d0fb23506fee2ad37e12fb7534fb55a9e50902b69ceb78d51db449cbe2d1fc0a8c0022d8a82e2182b0a059035e5f6c4f4cc90278518e178becfbea814f317f9e7c051", - "d32f69c6a8ee00ca83b82eaf82e312fbb00d9b2f6202412a1ffc6890b4509bbbeda4c4a90e8f7bca37e7fd82bd23307e2342d27aa10039a83da55e84ce273822740510e4ec239d73c52b0cbc245ad523af961994f19db225212bf4cc160f68a84760233952a8e09f2c963be9bb1d71ca4bb265", - "d1e603a46aa49ee1a9ded63918f80feca5fc22fb45f659fd837ff79be5ad7faf0bbd9c4ba91628ee293b478a7e6a7bd433fa265c20e5941b9ea7edc906055ce9799cbb06d0b33ae7ed7f4b918cc082c3d4a1ac317a4acec175a73cc3eeb7cb97d96d24133a29c19375c57f3a4105519846dd14d4", - "b45ac88fac2e8d8f5a4a90930cd7523730733369af9e39bf1ffb833c01108952198301f4619f04b9c399fef04c214bad3358999967c474b67a7c06457a1d61f9466489ed5c0c64c6cdc83027386d6263491d18e81ae8d68ca4e396a71207adaaa60997d0dca867065e68852e6dba9669b62dc7672b", - "d5f2893edd67f8a4b5245a616039ffe459d50e3d103ad4675102028f2c497ea69bf52fa62cd9e84f30ae2ea40449302932bbb0a5e426a054f166fdbe92c744314cc0a0aa58bbc3a8739f7e099961219ec208a8d01c1ae8a2a2b06534bf822aaa00ca96218e430f0389c69c7f3fd195e128c38d484ff6", - "37279a76e79f33f8b52f29358841db9ec2e03cc86d09a335f5a35c0a31a1db3e9c4eb7b1d1b978332f47f8c3e5409d4e443e1d15342a316f442e3bfa151f6a0d216df2443d80cbcf12c101c51f2946d81161583218584640f4f9c10de3bb3f4772bd3a0f4a365f444777456b913592719818afb26472b6", - "a46d252a0addf504ad2541e7d992cbed58a22ea5679980fb0df072d37540a77dd0a1448bdb7f172da7da19d6e4180a29356ecb2a8b5199b59a24e7028bb4521f3281313d2c00da9e1d284972ab6527066e9d508d68094c6aa03537226ef19c28d47f91dddebfcc796ec4221642ddf9de5b80b3b90c22d9e7", - "060c18d8b57b5e6572dee194c69e265c2743a48d4185a802eaa8d4dbd4c66c9ff725c93667f1fb816418f18c5f9be55e38b7718a9250bc06284bd834c7bd6dfcd11a97c14779ac539629bcd6e15b5fca3466d14fe60d8671af0fb8b080218703bc1c21563b8f640fde0304a3f4aeb9ec0482f880b5be0daa74", - "8f2f42bc01acca20d36054ec81272da60580a9a5414697e0bdb4e44a4ab18b8e690c8056d32f6eaaf9ee08f3448f1f23b9844cf33fb4a93cba5e8157b00b2179d18b6aa7215ae4e9dc9ad52484ad4bfb3688fc80565ddb246dd6db8f0937e01b0d2f2e2a64ad87e03c2a4ad74af5ab97976379445b96404f1d71", - "ccb9e524051cca0578aa1cb437116a01c400338f371f9e57525214ad5143b9c3416897eae8e584ce79347297071f67041f921cbc381c2be0b310b8004d039c7cc08cb8ff30ef83c3db413f3fb9c799e31cd930f64da1592ec980cc19830b2a448594cb12a61fc7a229e9c59fe1d66179772865894afd068f0942e5", - "3eb5dc42172022ab7d0bc465a3c725b2d82ee8d9844b396913ceb8a885323dbbbf9ef4ed549724cc96d451ea1d1d44a8175a75f2a7d44bb8bfc2c2dffed00db0328cfde52bf9171f4025770abbe59b3aefd8151c480bafa09f613955fd571e5d8c0d4936c670d182cf119c068d420ded12af694d63cd5aef2f4f6f71", - "20ea77e58e41337ad63f149ed962a8210b6efa3747fe9bea317c4b48f9641f7145b7906ed020a7ae7d2ee59435392edc32aee7eff978a661375af723fbd440dd84e4a152f2e6ef66f4ab1046b22c77ac52717de721dfe39aa8ba8cd5da27baca00cc1fffe12c52382f0ee83ad1418f4c6a122effaf7471e1e125d7e7ba", - "95c662b835171fa23f948c3c3ed27bab9b3c367bbfe267fe65f8037a35b50cd7fc6030bfce4000425ef646c34793f0762635ae70487a0216ef7428da622be895d1b6040423246511c2370d6876a5c5d2df8bbd48fb14f787b632ad2c1f5a927fdf36bc493c1c8606accfa52de33258669f7d2d73c9c81119591c8ea2b0ef", - "f708a230675d83299cc43167a771602d52fa37cbc068ef9128ef60d186e5d98efb8c98798da619d2011bf4673214f4a4c82e4b11156f6292f6e676d5b84dc1b81e7cc811b0d37310ac58da1bfcb339f6ba689d80dd876b82d131e03f450c6c9f15c3a3b3d4db43c273c94ed1d1bd6d369c4d30256ff80ea626bda56a6b94ea", - "f8417766ce86b275f2b7fec49da832ab9bf9cb6fdfe1b916979ae5b69176d7e0293f8d34cb55cf2b4264a8d671370cb595c419c1a3ce5b8afa642208481333522005fbe48cdc700e47b29254b79f685e1e91e7e34121784f53bd6a7d9fb6369571bba992c54316a54e309bbc2d488e9f4233d51d72a0dd8845772377f2c0feb9", - "3479e04efa2318afc441931a7d0134abc2f04227239fa5a6ae40f25189da1f1f313732026631969d3761aea0c478528b129808955be429136eeff003779dd0b8757e3b802bdff0f5f957e19278eabad72764aa74d469231e935f4c80040462ab56094e4a69a82346b3aeb075e73a8e30318e46fdaec0a42f17ccf5b592fb800613", - "03df0e061fa2ae63b42f94a1ba387661760deaab3ec8ffabcaff20eeed8d0717d8d09a0eafd9bde04e97b9501ac0c6f4255331f787d16054873f0673a3b42ce23b75a3b38c1ebcc04306d086c57a79d6095d8ce78e082a66c9efca7c2650c1046c6e0bbce0b2cba27c3824333e50e046e2a7703d3328ab3b82c9d6a51bc99b9516ff", - "76b488b801932932beefffdd8c19cf5b4632306e69e37e6a837e9a20c8e073bcadd5640549faa4972ebd7ee55cb2425b74cb041a52dd401b1a531beb6dfb23c4cfe74bc84f034156c8f55050ca93236eb73c4e2595d9fbf93dc49e1ec9a31705359732dda73f737ec4274e5c82626dc4ec929e5e2c7a2f5f5fb666181922bd8be575e3", - "ff17f6ef13abc0426b03d309dc6e8eeb822300f7b87eff4f9c44140a424098fd2aef860e5646066d22f5e8ed1e82a459c9b9ad7b9d5978c29718e17bff4eeefd1a80ba48108b551e62cd8be919e29edea8fbd5a96dfc97d01058d226105cfcdec0fba5d70769039c77be10bd182bd67f431e4b48b3345f534f08a4beb49628515d3e0b67", - "95b9d7b5b88431445ec80df511d4d106db2da75a2ba201484f90699157e5954d31a19f34d8f11524c1dabd88b9c3adcdba0520b2bdc8485def670409d1cd3707ff5f3e9dffe1bca56a23f254bf24770e2e636755f215814c8e897a062fd84c9f3f3fd62d16c6672a2578db26f65851b2c9f50e0f42685733a12dd9828cee198eb7c835b066", - "010e2192db21f3d49f96ba542b9977588025d823fc941c1c02d982eae87fb58c200b70b88d41bbe8ab0b0e8d6e0f14f7da03fde25e10148887d698289d2f686fa1408501422e1250af6b63e8bb30aac23dcdec4bba9c517361dff6dff5e6c6d9adcf42e1606e451b0004de10d90f0aed30dd853a7143e9e3f9256a1e638793713013ebee79d5", - "02aaf6b569e8e5b703ff5f28ccb6b89bf879b7311ea7f1a25edd372db62de8e000219afc1ad67e7909cc2f7c714c6fc63ba341062cebf24780980899950afc35cef38086ee88991e3002ae17c07fd8a16a49a8a90fc5540be0956dff95390c3d37629949de99920d93096eb35cf0427f75a6561cf68326e129dbeffb8772bfdce245d320f922ae", - "70752b3f18713e2f533246a2a46e38a83cc36dfccec07c1030b5204cba4432700735a8cee538b078d281a2d0262110381c5815a112bb84404f55af91652bd17502dd75e4910e062943d8a736ae3eecdfdd8e3f83e0a5e2ddeeff0ccbdadaddc95391310fc657a59724f7e6560c37dc1d5bb5db40170190f04a274c864ade9687c0f6a2a48283177a", - "01f3c1333b44077c518cc594d0fb90c37651fb7b2442e71fc0a5611097f1cf7bcfaf11c8e0ac1b1cab54afba15bb9332df6bc64d8032368e3f686c8324b0114e0979dad78a5ccd3fff88bbe89eef89c4be586ca092addef552ed33224e85d8c2f4fba85ac7735f34b6aa5ae5299154f861a9fb83046b0e8fca4db32c1343e02676f283975f43c086cf", - "509283ebc99ff8d87902fa00e2d2a6fa239e335fb840dbd0fdbab6ed2d95e8275402523f7ce9a2fabd4b6c9b533288fbe914bde84365a204711d0977a7d698f4614385984dd4c137e4820035dd6737da364edff1bb62283e87a8c7ae8637314fe9b5777ec4ec21276dafedb2ad5ee1aa0ac99e34a6c01c055c8a239fd28681607f65143082cd4553c529", - "c17e417e876db4e123c631f7136b8a85bfd6ce66a69180d0cd5ecfd6f037bb1c7bd7908d51f2c485bf9e92c0e1799ee5f6ab834ee481f5eb1a8020205adb4d0f90126d4e7c2c859c5a5f644bdfa9c649ff4f168e834de6f9769429732099d46d0af506ab86c6fd92175159bbc05c75db8e1fa867e6030d64250008d64c857c47caec3dc8b2ffb384d0193e", - "950988fbe9d62a66f5f2c492bc8dc944a78eb3796ec37ba94b6a81a9d402ccad03cd8497fff74c5f4a03081c5fecec48574fecb21c1de261332c23108195d3f6a96ff8e433a1a30eda53dd5bb414973334f8cde5510ff759f7c17046cbb5acd8e8c4a6eecf2a9121ec3fc4b22c4daa72678194ce809024cd45c4ebb9ccdb6f854205cdb624f0787480d8034d", - "552a212c403b473741da8e9c7b916d5e5e9bcc9949021ae1ca1ed46b7d4a98addbb604d9fff56175b7e0367db26c9635fa7813653dc8d610befdd09ec41e99b192a716106f4299eec8b940863e5a59cf26cdc2cd0c3017f9b4f215812bed15f69e77edf672178e13c55580982f01fcc2fa131ec3d736a55d56504c545f4be50fee83f1263e4d3f3c877cc6242c", - "b00c4283dd3d9cd26e44bd97cede6c771cb14f2571b51cfdaae4309560ffd165da025a1bbd31096c3aa8286e2d6dcc3e681b8d01f2c5064ea26dfd0b5156b7a7f5d1e046c5bd1628f8fdae24b03bdf7cf7366900cc013a8cbed9d7f5937c914b08f8c27683b956e1279812d04288515333fc6aba3684dde2292951f0610649d90fe61606630fc6a4cd383649252c", - "f6e79457bb6d0884dd223be2cf5ae412a1ed425f1e4012f75951b096aea3b9f3581f9013bcae1aff2d3fc1e5c7e06f24af6d53c2c5c238b71c71cc670b05a7ee5204400026a5c4e5ddec3ad96771e49fae4b0f75ec58049ad9d972e5749a32d90f847f1ed2a1bab83db181e541cf5c8adb6b29ecc64dc25add491d408d3eb3ddcb013de7f5ffb6de9dd7ff300a5fc6", - "fe1d71e1d5efa3f712d23216ee8ee9139e66bd648b83efc02cdb4d45a28cf36759ff190a84d14d9471477abefb5aea4111110336143dd80cf81e02f268120cc07d746538f968e9876bff8358d390f5b8e7eafa61ecd236cedaf276bd61865fdd3424988201dcdeda2e3e0c33c9e3b3670125dd1049106cc6df5695fb2dca443233ff440f265bbff055483bac1e859b83", - "4c80163562872a965dedd8725652906156ada6e9d999027d96f49289edb92f9ef043e9d7c3377e091b27f85275499454af32317535997fb4aaeaf93565ad481ff7d45d2abddd4df4b60f71a6923ec30496c6ae534dc5427107ab4c5e656a322c7ab058d4c13ec0ebafa76576560697ac98f84aa4a554f98ec87134c0d7dca9184cf70412a324aac91823c0aca02537d197", - "fdd58c5ffe88665beb7073c8f4c22472f4bc9390cdd27a42622ca55978b000ab7579f795d4de0dfcaf521b8268980ef1d20277b07567985c0fd5030784ad6c32541ac24e99ab706105a2255fc32935c0fce6fdad9bb224d94ae4eae2a3ff08836618a3adf193630647bce1952b69da4de360f59da303519278bfd39b733cf66820a5e9e971b702f45998b69a0889f4bec8ec", - "ff38b15aba3794e2c81d88003e045ac6cbfc9f4833cdf896cefd8ac0c88674727ad9a9fcb9ef36574deea480e6f6e8691c8390ad73b8ea0eb3665c914b0d886546948e67d7987eea248b5feb52346ffdd965d5c835144c3bc63daf325e74b11267e32e58a914ae4521a668839d9445fececa49c5fba41f9e171698bbc7c6c97fa163a377a96456958d6e1d74f91ada56a30df8", - "f048c19328d60b4e59ed76940415b2c84c23883198bba5699efb0a1774ad5da6d15390c7b55d77d66f37448fe08107f42a5336408d5322f4b630e3275865fc66dccab39f6e13fabc133e5a441fe352d81c7cd9a25f145a6e2e2417d3b0bbc79eafcd7ad688c02011fd268dd44ac3f4f87b37a84a46fd9e9975962fba92c9a3486deb0c45f6a2e044df4bb79f0feeea432c5008b0", - "1b3e5fe6f113cce28a6f8d6f7809d3cec398cabffe9ff2ff10a7fec29a4ee4b54186063fd5307a2be393c9ecd75a37620bdb94c9c18da69b658579676ec90351d10dc33a7cb3b75798b1234f9f684d4a73a0fab2df3d5d6fdb1c1b1514d0935c1f2dd21486f91c2595b2f8f8a500ff443b9305270fb6f3da7961d9316d4ed6a135a31c4a3611d40e6585bbb34f498cd5b9a5d92676", - "740db337baa12b16897f17a85fa5685acc85e48338867f8ac9c0198dd650f5dfa7c17725c1262c72207e365c8aa45ffaab6470a0e5afefbfc3bb702a9766064f28cc8b796878dfdd3ca9d0216c14941438fc541fb5be0a13d29a996c5c985db4f630df067a5626db5dcd8df3a2bff17dc446e46e4079b8815da4318cb228c7722684e2a795a0ca56f500ea51951a6a385385d886f678", - "1465f2d578d167faa017fe8f763ce3cc8dc1e8371d774ed2a8803f12585296ee71a1f2253dd16b717a81f91f0f3641018a0111182b4e65d884b0a3d0292631ad807cdccc88bdeecb476e76f72b5246a630aff6e2401fa9570f85acb73ccb4e19ef04a932a03d7b7985dbe1e5bb410df517fe362321469e6f8b0e0cef6c31d7aa8ec06aa220620d66cc0e133fdee963589b12320fc9678e", - "80c051952fa6f3ef6af0f1759ec3e83c8eb91abee1de360bfa09e74b05af2475a0dbf8f9135aa25892919bbe0515898cfb6f88abc9e1891f2b2180bb97370f578973d55c13c35edb22ed80647c2a7e2884d1ccb2dc2f92d7b6ec5843ade13a608a31190ce965bde97161c4d4af1d91ca9962053f9aa51865bdf04fc23fa35a6fc3c8e888941263a26ed66c2dd0b29b2325dfbd1227c5091c", - "9c1e2a1aed6406052eed12b4495365f2f80e9c9645473f3549b607f20910bcd16dc3a4b173ac8d128129cdb7c76ebbc8e9a2a1ba0d822c66b367e790a69ac71f0a60ed4bff0e979148e3f3ee6607c76dbc572ee5ff17c27e4b52adebb4bedddff517f591a1977299c7cb01106f1453b098d29848ba3751c816215bb0d090c50f9e445b41b2c49d4eec83b92ce6c269ce835fd279e7cbbb5e47", - "466abda8944d0329d2975c0f2e2afc901f117887af301881f63b714f49a2f692fa63a8871fc0b301fe8573dc9b2689880cd8969e5072c57671e0633b041481dab25e65c9de404af033a11a8070c8ab70ca6d465318501afdd9940c7efbe1bb6d49581c222fad251dba4ee0a98efe22a3c4f74da05844523b30bbad6b080ac8df70a02da80bc9d477dfb869adb211e209a316d5dd1fd89a6b8f8e", - "0e89a873e07799ba9372fc95d483193bd91a1ee6cc186374b51c8e4d1f40dd3d30e08f7feecfffbea5395d480ee588a294b96304b04f1ee7bbf6200cc8876395d1db3ac813e1019bb68d27204e514fe4a61ad2cbd1782dca0e38b5538c5390bca626c5895b745cfca5dac636fd4f37fed9014ab46ae1156c7789bbcbb956ff7ee5ce9effa560731d26783dc6ae8bddd53a5d28133614d0ddeddd9c", - "fdde2b80bc7a577ef0a6c03e59512bd5b62c265d860b75416ef0ce374d544cbb4e3a5dbd31e3b43e82975090c28bc77d1bdec907aeceb5d1c8b71375b6d631b84a46153f5f1d195bfcb2af6f597a9cdc83782c5bbbb58c5188a87ebf375eee5212fa52523820a83106e8ecd52bedd60d95cd646159774389c07e1adcaa6b6f649408f33399ec6e507d61659696b3dd249996892d5986b654d94ff337", - "f5d7d66929afcdff04de30e83f248e69e89604daea782e1d82d8032e91a95c1d6fb2f5578f79b51be4397e4cd7cbc608ce143fdddbc6fb6c43ffdd394a7df0124353b919aeeac025f3eb11ff246c3b9657c1a947fc534ce48e18feffada8797037c6bc7e2d9a9e2e019fe65627b3feb28e446473e3bd413047a2587f0be6a103403cb3c33fdc212dca14d8e386aa511c22308e632f5f9528dbabaf2deb", - "332990a8dba55f977bc814436cf386ebbf10cb487a5f6ce83e13741bac670c6810284fbbe4e303547ef411e964fae82854e8c13cf56979b89ecfedd337aad78260060122d13dfbbf8497acb2066ed89e30a1d5c11008bd4d145b5ec353956310536304d8b8bba0793baec6d8f3ff49718a56e6694f8122078265cf5731d9ba61292c1219a1affb3679576d4998290aba3684a205c3469d40761a5c4e96b2", - "efbdff285027610f03182009c89b953f19721cfcdb8accd74bab6ec4bdf3f555ab902cb0dd91284269d140638aaabd211748aa4da3b18cddc653b57e461b9ad8491807c535c08fe97d89eb587c6af19ca152e72479626ab764e8b62da89fefc8354c75a44851f985746d78715a5a92798dac1a4222be27897b3f0aa63d596aa7378545f49b259aa8518c3def8a2ec8f7aa956c43668c8717052035a7c36b47", - "0eea9bb83bdc324fd21b03669aa922fbebc448e7d25e210294c07862cfa6e061731dfb67b4810633f4dbe2130d90fa1c65843af436e74219d213c4458dcac1c48ec4541fc6e3b7918ab2bc621aedda53658050900c3865ca57cd5dfa1d28576827401956d2dd8b861fa90ab11bb0b544ded9bd3d62e3278ed484e17db8f2d5dc5ea4d19a0e15134ba6986714c2b22c59c2f0e517b74eb92ce40d2f5b89e6d79f", - "25da9f90d2d3f81b420ea5b03be69df8ccf05f91cc46d9ace62c7f56ead9de4af576fbeee747b906aad69e59104523fe03e1a0a4d5d902352df18d18dc8225855c46fefeec9bd09c508c916995ed4161ee633f6e6291cb16e8cac7edcce213417d34a2c1edea84a0e613278b1e853e25fb4d66ff4c7ee4584e7f9b681c319c874d43502534e8c16a57b1ae7cc0723783807738a55b661e617ee285bdb8b845607f", - "a76b6f81372df09322098868d469fb3fb9beafc5edb32c674974ca7032966aaca5b5c9bffef87bfe626bd8e33d1c5f054f7d5acd3b91ff95324d1ae39eb905b9f2694fe5cb03486cee86d2f661a751b0e6c716a61d1d405494c2d4e32bf803803dc02dba2c06eecf6f97fb1f6c5fd10cfc4215c06d627c46b6a16da0854e4c7c873d50aa1bd396b35961b5fa31ac962575230c07c369f8fbc1ff2256b47383a3df2a", - "f9db613812f2259972d91b1598ffb166031b339913925ee385f03b3b35dc4b2f1ae78a3c3d99c6ff6a07be129ce1f4b8d994d24988d7fbd31f20535d36ab6bd0592cfb4f8c1ed9244c7fa8a3c46e91272a1a40c6cfcf261c5658476c59793bf1a3775086e41a0492f88a31e2d9d1ce75cf1c6b4b928b3545d838d1de6b61b735d921bcf72e4e0615e9ff969ef76b4b947026cb016e2660ba39b0c4c953369a52c210de", - "e601c7e75f80b10a2d15b06c521618ddc1836fe9b024458385c53cbfcedd79f3b4239598cd7b9f72c42dec0b29dda9d4fa842173558ed16c2c0969f7117157317b57266990855b9acbf510e76310ebe4b96c0de47d7f6b00bb88d06fad2c2f01610b9a686079f3ed84613ba477922502bc2305681cd8dd465e70e357534503b7cbc68070ad16d9c51de96ccf0aae1599299331c5655b801fd1dd48dddf6902d0e9579f0c", - "ee5ff4ca16d1bde59ffaf2d064eac9141c1d8f120ea2bda942b7956ba3effc5f1e725a3b40b0b9223a14d7a50df1681d14ca0e0eda7bb09c428fa3b2701f83a7a3e139485a118f6287d266dbc7fe68c87b35becabc7782537c79cb8165bdc40cc103d7b6d4b627fafa0e4113f92341ab90ceab594bfae20dadbfafd401684584598941f1ffb8e23dc8a04ecd15376cda6d849fe0dfd177538c62413622d172d9d46e05c450", - "1daca80db6ed9cb162ae24aae07c02f4126f07cd09ecee8e798fa1bc25c26c644333b63731b4ebc3f287f2318a820c32a3a55fc976576bc936f7384e2553d2891e3771ff24dd4c7f0256906460a8f12d30ed2b23583a0259cb00a9065a757d654d6e4603e7c7eb4a8426b527ae8a849d9350e9094b890367df3e8b23ad2df4d7dcce416bd8ea3badd037f53f7b07c02e5926515f196d62aeb9b8b14c863f067fc12c5dfc90db", - "27ff4e58a34ff1fcd66855d014ea17889a3cf0021a9fea3fabfd5b270ae770f40b5439e00c0d26bd9766f6fb0b4f23c5fcc195edf6d04bf708e5b0bced4f5c256e5ae47cc5651e51cd9fe9dc5d101439b9bc5cc24f76a8e8847c72686e2af1ce7098ad7bc104dad00c096a6d48b6453322e9cd6773fb91fb1eabd05dc5185a9aea07a2f64c6fea9897681b4428aaffe1fe5fd3e8ceb890b12169ec9d51eaabf0ca3d5ba415770d", - "75e2fb56327983b04f640717be8cba6fef3655b4d8e5539587d6478356ec397efaed818b8425d052778eb30ef0dee656c52c2aeab079ed496ae4441a365f2130432c87ba757e25b4511656ad15e2eff84d342331fd2814d1f1d11af65d98a424c115ba183437c0d0aa55f5c44b8685028a47d89d0d36a0f20aed510c366ab338f074a941b404fb349caaec821e0850a627777cc8f5abce6b509290027a2a28ff1db62a5ed2f95fc6", - "c6ae8b6a060917cd498aa7874ad44baff73efc89a023d9f3e9d12c03d0b7f5bcb5e24e1bc2ab2f2c67b9a9d36ff8beb51b5affd4a3510361001c80642955b22ea4bf28b81a5affe5ecdbabd8d17960a6af3825a4522fe76b3d720b5d06e66bff5379d7a8de1f5cc3e7bb75163a854d77d9b3949bf904b6c4e568682f0dab7f217f80da7303cfdc9a53c17b6b51d8ddff0ce49541e0c7d7b2eed82a9d6be4aec73274c30895f5f0f5fa", - "606c9a15a89cd66a00f26122e33ab0a08c4f73f073d843e0f6a4c1618271cfd64e52a055327deaaea8841bdd5b778ebbbd46fbc5f43362326208fdb0d0f93153c57072e2e84cecfe3b45accae7cf9dd1b3eaf9d8250d8174b3dade2256ecc8c3acc77f79d1bf9795a53c46c0f04196d8b492608a9f2a0f0b80294e2abe012dc01e60af94323c467f44c536bf375cddbb068c78432843703dd00544f4fff3eaa1a5a1467afaae7815f80d", - "88b383cb266937c4259fc65b9005a8c190ee6cc4b7d3575900e6f3f091d0a2cefa26e601259ffb3fd03083270eb63db1ffb8b4515ec454d12f0944f8f9f6869eedc2c5f1689766a748d74e79ad83ff6a1639aefdec6109342dead31e9cead50bcc00c5b2206e8aaa47fdd01397b141880490174141a1e6e19268378c1b54a84aba60ca711fd72f7df88e120dfea2caa140085a0cf73342f3c588b7edfb5b5e5ccabd68a32364746d92d536", - "dc0b293f1ba02a326743509f41efdfeeac1efc45137ac03e397a3273a1f586a0190cfb4ea96d6c13ca692a4de6de905c8338c3e29a04cbae76272f568b9d795cea5d758106b9d9cff6f80ef650d6b7c428ea3946c3acc594907fe4227ed68faf31f2f6775f1be5139dc0b4d73ed6308fa226b9077561c9e4c7a4df68cc6b819b0f463a11b9a09682ba99752c4db7aea9beac1d9279f2c2675d42b551d27aa2c1c34125e32f2f6f45c35bca45", - "5d801a7413311e1d1b19b3c321542b22e2a4ccbe340545d272abede9223741d9835a0fc80cc9da97a13f8bb4110eb4ad71093efba165b1edad0da01da89d86726e0d8e42ae003b4b50297d233c87da08406f0e7fc58ba6da5ee5ba3d2d7142cbe6632734eb2e7b7863c15cc82198ee8f9a0ae0b7f93bdbda1ed269b3824d5d3c8e78513815b17a4c0cc8c9706b9c77423a309ae3fd98e1e05cdbe9e2577834fd71f964301b10b66c316a2d8f2c", - "2fd32a2bc15a9e96a100624404fd0a4e54ba9f8c0543d8ccf7c5c2e35f5e8c3c11dfd497320aa903900a4ca55a2b323b3ac4a7cfcd01bf0b448db8829072bee6b77c3d7bec2e1d8b414d907288d4a804d2379546ef2e2dc628269589164b13fceb32dba6fd5d48a956ce0b5c3eb28d894a95af58bf52f0d6d6cbe51317152744b4ccfc918ed17fa6856478d580b389016b772e1d02e57d2217a204e25361d91d4845a3fa20fefe2c5004f1f89ff7", - "f537b437662759bef8bd64368536b9c64fffbddc5e2cbdad465c3966b7f2c4bc5b96767ef40a1c144a4f1cd49edc4cc5b57e7eb30d9b90108f6fd3c0dc8a8808b9e0bd13aa3d661c4863637c5e4ba286553694a60bef18801299ae349df53a355051dcc46a7d003c4aa613808f430e9db8ca7dfe0b3f0a4c5ab6eb306aeb53e11a01f910064fbe6ca78b2a94fac34a2602f73de3f275953e13ff5c6bb5c39b82321ead17ec0f8ecc479e6afbc926e1", - "1dd9fb7d5b5d5074971e69300720014deba6fbdb942bd29704cdfcd40fa5281d2a1b9f5b776183e03ff99c29587f10e8d325cb49c5c93e94f5132741b92c4086eec1374dea5c1e772cbb230c7b31f3e962eb572be810076bdb926b63732522cdf815c3ab99bbc164a1036aab103cac7b823dd21a911aec9bc794028f07b7f839bae0e68211286441f1c8d3a35b281fd321312577bbda04f643ecb2a74ec4527bb5148dbccbeba749f5ea19b6072366ba", - "5bd63737449de2d20ca63943953338ecf4cdd6cd0a726241adb04376385a809cc6ba0f3482a310746fbc2cd5eb214f03a14cdc548777fb0d048d659cd75a962e490c4fe47affc2430a34b10275e4c76752a115aae3a24d4fb4fad89ce4d79d65de10292f3490bfdaeabfae08ed51bda6ec8230e66cb07ddbeec26e3ef68dd71c852900659fcf0c963f4574ffe4626a33db9abf0873dde68b21138498b81e8cc44d354be4073615889a7ddff633b5447d38", - "a683ec8250506571f9c640fb1837e1ebb06f123e745f95e521e4ea7a0b2b08a514bbe5bdfd316903d1d6a05f5a143d94dab61d8a3a146ab40b2d6b72df2f0e945875a8aa7051ed115975f6f1567cfcbf04c5e11e3a7027b8e179ba00739181ba10b028e3df7259d0712f4a6cef96469ff737865b85fee2c2db02a6423e32505381e18a1e0b4ce3c7998b8d6b1b5e09c3a280b85486d0984c9e193b0ad2043c2bc4ad04f5b00a73956715937eebf6b3e27afc", - "4df9d160b8e81c42930c48956fcb46b20b6656ee30e5a51dd6317876dc33e0160d31280fc185e58479f994991d575a917073b4439919c9ac49b6a7c3f985211d084c82c9d5c5b9a2d29c5699a22e79de3958d7b0e856b9aa97493cd4563aaa04fa3977a9bb89e0bc06a82296bdc76d20c8d393770176d648712454305fdfcf4e117d05acb5a5b006a9f8d0dc66dca708c4e4103ca825d2331750685c44ce3d9b3e753455580f4d6ac4533edeeb02cebec7cc84", - "67bb59c3ef5ee8bc79b89a673e331e581215076cc36b68f517ca0a74f74efafe9dcc240e6d8ca4b21019c27d6c9289f4419b4f218eeb39eb741c5ebebfe0ed2f6faeec5e8c477acf71907990e8e288f4d4049111779b0635c7bbec16b76493f1c22f645745fdac2b383679fee573e4f47af45ee08d84f63a5ace4ee1c06fa41e2e6e14b7bc392e38426813087a3a461efc62ed1941dc8f1728a2bdc04fde72a0b786558783c84abd4bd100e4926979a0a5e707b1", - "d341147169d2937ff2373bd0a9aefa77968ec8f0d993c6f9881eb174a1911e05cdc45993cb86d149a754bbe321ae38363f9518c50dd3faf087ffeeeb6a058b226ccab7858c00ba6de0e8f4d034b1d27508da5cc473f3a413189ee6fd912d7750486912944d4dc34405ce5ccc3885fb0aabcb922bcfa9081d0ab84c288022bd501235a835eb2e1124ed1d48fd4f8682da8e7919321031326502273375625c4e3a7282b9f53452195e53c6b4b57cd5c66f621bed1814", - "27e7872a54dfff359ea7f0fca256983f7600236e716e111be15a1fe72eb66923ea60038ca2953b0286447dfe4fe853ca13c4d1ddc7a578f1fc5fc8598b05809ad0c64a4363c0228f8d15e28280837a16a5c4dadab681e28968ae17934639fbc124bc59212138e494eecad48f6546c38366f1b7b2a0f56f579f41fb3aef75dc5a0958b25deaa50cb7fd1c69816aa9a51874a98e57911a33daf773c6e6166cecfeec7a0cf54df01ab4b931984f54424e92e08cd92d5e43", - "13dcc9c2783b3fbf6711d02505b924e72ec6736131159017b966dda90986b97522bf52fd15fc0560ecb91e2175322334aaaa0097e1f3777c0be6d5d3de18ed6fa3444133486068a777443a8d0fa212ca46994944555c87ad1fb3a367db711c7ebd8f7a7a6dbb3a0207de85851d1b0ad2f4149bdd5a5ba0e1a81ff742df95edee850c0de20e90dd01753137cb8f2c64e5e4638ceb893a3879ae2c049aa5bce44d56bf3f325b6c5029b2b8e1b2da8de7d4e48ca7d8f6fbdc", - "9ca875115b109eab538d4ec7023600ad953cacdb49b5abe263e68b48eafac89a15e803e838d048d9625972f271cc8f36344bed7bab69abf0bf05979a4cfff273b82f9961626509765fcb4b4e7fa48212bcb3ab2b1f2dd5e2af768cba6300a813514dd13e4d269e3d36548af0cacdb18bb2439ec9459f6d847d39f5598304ec46a26d75de1f9f0c2a88db915bd26e45e1f1e68c5b5b50d1890e97a3803c36755f026863d14176b8b57f42e91d3ff37787f9b38e333e9f0433", - "ec006ac11e6d62b6d9b32ebe2e18c002353a9ffd5dfbc5161ab887770ddd9b8c0e19e5321e5bc105add22e473050b71f0399327c7eba1ef809f8667c1f4e2c7172e10e753705e9a083f5bce88d77521225ecd9e89f1e1caed367fb0275dc28f620fbd67e6b176c9ae5d2659e6ec662116c9f2bbca3a93043233a4861e0688db6dc1800f752c5d58aa5033c250c891d9126e534ed921a9026eb333333fa8292059b8b446f336ca6a0cb4c7946b6aea3831653122f154a4ea1d7", - "23deadc94481ce28188f3a0ca3e85431964cb31b60fabf381e6bd45ef0332bd4dde774b0281d317dc2e7d0c298fcf8625fa734126968df8b68ef8a35c325d84ba4fc53936ff3ffdd8838d2a8cabf8a9cac54aa444ed9875944e55994a22f7fa8538b1e983b57d9215fac5c0052029644044e790ce2f5044655608c1d7ad3bb862203ba3aba3b526606f273d342ed5721648e3f600942d3f7546f679161436389d879dd8094e1bd1b1e12cde15cd3cda4c30a40835665e4e5cf94", - "94701e06340114f9cf715a1fb659988d33db59e87bc4844b1500448960af757b5282f6d52967a6ae11aa4ecfc6818c962b084c811a57724f5d401191567f24ce917e4f8c3963474fdc9d2c8613c16f62446448b6da6eeae54d672825ed7606a90e4611d0e318ff00566862c955b636b5e81fec3362e8672ad2a6d222a515cf410482836deba092a51a4d464dfbbab35c50a33437ac16a88256e9e23ddd3c827cc58d3e5000ee90b12e4c5175c5733662d4848ae0d406c2f0a4f498", - "735b0758d5a331b2304f01081172eb95ae4115de651b1a6693c5b9543de33df25d9f421dbaeca033fc8bff57313b482778005aa9fdcbca65c643da2f3320e34197868eec3848ff3c70d7ac7d910fc332e9a359f892ae01641be253013b554a0d3f249b3586b1857e5a0f9482ebd91432a852b221f4287a6e81ed24e8064645d5b28ab9a13b26cc1420ce73dbc47b31acf8a871601022ce23bc443b1222ce9a037a2fe5226295feb4efd4fd671338f459ae146032697cf82fc55c8fbf", - "c48d94f14549352790079fee69e3e72ebaa380510e3581a0824066413e7044a36ad08affbf9b52b21963d2f8e092ff0ac1c973c423ade3ece5d3bca852b894675e8173290529226939c24109f50b8b0d5c9f762ff10388833d99bea99c5ef3ebb2a9d19d2231e67ca6c9056d8834730605897426cd069cbeb6a46b9f5332be73ab45c03fcc35c2d91f22bf3861b2b2549f9ec8798aeff83ceaf707325c77e7389b388de8dab7c7c63a4110ec156c5145e42203c4a8e3d071a7cb83b4cd", - "553e9e0de274167ecdd7b5fc85f9c0e665be7c22c93ddc6ec840ce171cf5d1d1a476743eb7ea0c9492eac5a4c9837c62a91dd1a6ea9e6fff1f1470b22cc62359474a6ba0b0334b2739528454470f4e14b9c4eeb6fd2cdd7e7c6f97668eebd1000bef4388015630a8332de7b17c2004060ecb11e58029b3f9575040a5dd4e294e7c78e4fc99e4390c56534a4e933d9a45460f62ffaaba25da293f7765cd7a4ce78c28a85013b893a0099c1c128b01ee66a76f051dc1409bf4176e5afec90e", - "dea8f97c66a3e375d0a3412105ed4f0784f3973ec8c57b4f553d3da40fd4cfd39761de563ec96a9178804641f7ebbee48caf9dec17a14bc8246618b22e683c0090259e3db19dc5b6175710df80cdc735a92a990a3cfb166461ae713adda7d9fa3c4cf9f409b1467f3cf85d2141ef3f119d1c53f23c0380b1ebd728d7e932c535965bca41a414b6ea5bf0f9a381e098d282a554a25ce41980d7c7be75ff5ce4b1e54cc61e683f1dd817b8e2c1a430d7f895e5e7af13912cc110f0bbb95372fb", - "9dfda2e2f732867e60ed2b5fa99ab88eb82dc7a54334d02031258beef75fa4bd6962a1083b9c29e4eeb3e5ab8065f3e2fc732675b8d7705c16cfb4ef7305eb58120f1af5ddc55872a2cbde3a48661a0598f48f63e2e9aadc603545e2b6001748e3af9e86e1830af7b84ffd3e8f16679213d37cac91f07af0af02b37f5ed946ef5c955b60d488acc6ae736b10459ca7dabeacd7dabcfd656511ac913174f6d99327be59befe3e463a49afbb5235f0ce2840588c6edfbaaba00a4211c0764dd638", - "ddcd23e8b9dc8889b8599c721e7f8ecc2cbdca03e5a8fd5105f7f2941daec4e2906c654210bdd478374ddee43ee749a920ee91872e057a1157d384dcd111266221b3c79774476b4862fe450704ff2c5353e9a936cac87c96515c28ed4c830335a55d084cb5873c5fd2dd907f3266d8eb7bf13b6dd7cd4966982a0949efd8e428dae13daee549e01cc3c226211d6307823f742c5ef2155601a4644c46eddd603d4abd959c6d242e427768df3b1e22d87971df58a1564b38311a897c85b497a72556", - "39016647acfbc63fe55a74598bc1956eaf4e0cb49d532c5d8323fc6a3f15a0231597f06eafd74ad245e672bf6b21e4da503cb5bf9d15e9038ef354b38807564d91f38b4258378ccd9b9420a1562d7136196822a1291c913d83c4cd99fd8d420990c72cdc47607124de21da8d9c7f472fdcc780379f186a04da93cd87628abf323c8dadcd7fb8fbade37d7d2b5c9f9fc524ff77494c98f42f2158a6f68c906105ca9e8bb2df463863cfc1e9008d8344f55c4e3203dde6699b59812d49ce1279fa1c86", - "02cff7567067cbca5911664c6bd7daaf484181edd2a771d0b64566c3ab08d382e83932cdd7b4dbf86c9cdd1a4c353a511e68afb6746a507a9cd385c198246f4543d606c6149a5384e4ff54c1b90d663dc7a4b91aeac3cf716db7ca6f9a1914e3a33efe82e7ccc4215999c0b012782402db4726db1d7d1c73571d45739aa6fcb5a20eeb54a84d5f99902a8d356cbf95f34c9c28c8f2badfbc08c69233514493c0c04963268c88bc54039ab2999c7b06cba405936dfc43b48cb53f62e18e7ff8ff3f6eb9", - "5764812ae6ab9491d8d295a0299228ec7146148ff373241a510faee7db7080706a8dada87938bf726c754e416c8c63c0ac617266a0a4863c2582412bf0f53b827e9a3465949a03dc2db3cb10b8c75e45cb9bf65410a0f6e6410b7f71f3a7e229e647cbbd5a54904bb96f8358adea1aaa0e845ac2838f6dd16936baa15a7c755af8029ef50aed3066d375d3265eaaa38822d11b173f4a1de39461d17d1629c8df7334d8da1b6401daaf7f34b2b48d6556ae99cd29ed1073926bcda867421832a4c36c7095", - "4df3043cf0f90462b37d9106e67366d112e4938c4f06abae97869531af89e9feebce0812dffe71a226de5dc36be652e26ef6a4be47d9b2db5cdd43809a565e4fc0988bfe82037c505dd276b757b785203249fd083fb474a25acccc9f38dc5164ff9097e05989aa6e280739a755231f93670e7226e22046914c155bf33d135b3f736ccca84cc47ae643215a054b54b7e13ffcd7ad73cced9279dc3210b80700fcc757acfb64c68e0bc4da05aac2b6a99d5582e79b303c88a7ac4dd8ed4289516bba0e243527", - "bf041a11622715426c3a755c637d5f478dd7da949e50f05377bf333f1c62c671ebdbf9467d37b780c25f7af9d453fc67fafb2f065a3f9f15d4c3561eeaa73fa6c813bf96dcf02430a2e6b65da8d174d2558110dc1208bdcb7898e2670894c0b9e2c894da3b130f57a90ec8ea1bffd27a37b4da4645c546b2b141db4e2c919154dac00e78dd3eb6e4445974e3bb07905982da35e4069ee8f8c5acd0efcfa5c981b4fd5d42da83c633e3e35ebdc959bd14c8bacb52212b4334f94aa64d2ee183861db35d2d8a94", - "a170ceda0613adc9c3a1e427f07beacf3b16ed69fb42b6bc09a38d803f632ad2929dba215b85683b74e2feb1d18fe17d0ea0db84d1be4e2e73476917a2a4cff51d6eca7c5e82232afde00dd2286a4c20eb09800b4d5d80e7ea35b6965b9792d99e399abda8cf32174ae2b7414b9bdb9d63e148f7357635a7310b130c939593cd3479164724011966c4232142df9966f09422f34f20b30af4b640a2c6d3dd985fe0ba3dfa9083cbb9b8dfe540ff9f6c608d18481213040768ef33300d773f9890c724ead320a1e7", - "929477e9c2d0bbad3429a0e0de776695255013108261dc6404cb09828770e274d8bb650a50e490dfe917fc2047b0f8ee72e105927d9fa70523c727778cbf6ae876d641ad562938c870d12f2e047bb78920739dba0c3f8ce1fb77589623a5f1625f5d6ab81940c7dfc3dc3a641d82b2813629bab8282999317d6b93842334f123fb4693a9c2c9d8ba9bfc746642dfbd045cd2021b272eab7358aa954d453da53fc5392dfa7eb881f6f53809b692d27f3366595ff403289efcc691e118b4744a1147071d8909bef1e8", - "3e98bb14fff5bdf7db38a3960dc55ca7d02333daed8712cca13dd5bffd114636559279db72554cc0a0ee1f7e15557d77cab0f2f1131f94fe698db81be38300a856a5eca85e5cf915fb7b6f38ccd2f27350e62cc30ce10ffe835118be3d435d2342ed3d06199b7e20c8e34d68902f0ab8745bd8b7d5b863d525c1f5906d2dca598db8a0f1e67736182cac15677579c58b8c670cae1be3e3c882153b2aa2988933e579ec2d6dbb00c671da64443dfc027dee6dfc3233c99758304570a982bf9b2eb59ccd70d0b54c4b54", - "aa12c7fa50ffdc2811c1872e4bee15f43e6909212385c872eb489f7e06dc1787043f56126f8373bdfa4b3f61405c73dd4dfd3f40aa5cd207e8520849c26f67716a46c0989a99efff42f24e0736e327af8e607c401a1bac77341e9a78c91e35d55b2457bdd5317a405a1fcf7a2a23de68ef92b65819e8aa3807c545361dfc9fe89125123492da958dc313cb5d03cb4b192c54ac6b27fcbc498652f5ed36b587bb74942b3ad453a8d79e5ddc06ebf806dad5046b73251064582ef5777dc530f8701701761884783fdf197f", - "83e615cf6e17a29e63945710b548a6d9935850eec69830841e26cb6071e908bf72c87cf079ffb34c5eb1a390def72d004a9488224a18e189aa1092a0f1135712834d257a53dc1d0e2c6417d8f472ff13b181910f4c93a307420d44beec8875d5219a3160b8e921434ddf3f71d68db1c1d5c39d68edb7a604792f8b4e31ecda7895c99fc7031a5b98a22009c1da005ac8fd2da0b5d742743f5712d12fd76d11a18e487776ce21ca0d6e5ab9ca6d8c394c321b91c14e291399a642721361811a73b7392e8603a3004e7060bf", - "ae1a8f7bfe4b1a0fa94708921dadb2c20b938239d7b9a2c7c598528f20f49764d322ebe85a5b2ea15563cf2f2304baf55d6607c52e2e1160859dcb7af6d7856899eada0e9128a180d3de6fed9334ba52b80c5c362d5591a0ec30f86d37a399927eb1c53076a12d26775522c511c83eb5b7abc2a00bd2dfd5627a8febba53d85f9b74c4b7f0c862ddb0d9298899b646b774d6cc23e4e23ab47174fccd34499253996d5e0917210e2f6daa1685f89f2f1fdfd5509ebc38191d539ecfb54ff0f5bbe6ef36ea35d425af6462f518", - "1d033e06be253ab800c8176d3a9650ab2a5bcaa03e11ea95fb9ab3834b41eb0d1b2bcecfe219364c3104ef65a8d692bd77c798548b7d9a8faf7f5172db24ec7c93006d6e9839368291b8277a82c034a3731f1b2e298d6e0282ec8a7902e4f844d132f1d261d171375c646065e201849f2df73e3748d853a3122c2206aac92fea448500c5418ecfb3d80e0e6c0d51f85831ce74f6c659cc291f5348a1ef8b949f1b2a753633e382f40c1bd1b2f44748ea61127b6f568255ae25e1da9f52c8c53cd62cd482788ae430388a92694c", - "104bc838b16a641749dcf73c57b207ea3bcc84381170e4ca362065a3d492e892b426a1f4fd82f69461d1ce1f3aaf8fc291ea30d6667e7e1aea4c44f7d52a5fa6d34709e6658483260ff5da76bfb74e7d194ad40dcac00daf0e45e74db4bc2248100a8b256b257278c3c98f1f2e3a80cdb812352aaf4155b3a4033999fb9fe7f506994fcf3a8db31e9e5ca8ef8c2e9c6326ca5b0803724ba641950eca877fe6ed6afc2e014651c56d0e6a61eaff7c5ed0b861d4bebe42904c0a568c26aa8abb2e97da2bfb40f14eafb6bf16cd208f", - "5b92e4a175437d0a53eb10de2c56401720b11715a034459ebf506c3fd6534b5e817a0f09deac4bcfd353301d8d031b1331582ac09189b48e6ccea444655866c4bbd123d45ebabb774f877cf12d33b84cfca4a6a94f3f98869fcf2bbb6cc1b964c2438c2f348bcdf9001dce60a4706d20c169a040baa61cbeb0b8e58d505e6e3739ab03e110ae7efdf91347474033defbd1e86af322ec6456d3394699ca7ca6a29a70d9b10a38fe666eab2858bfe12dacb31568549c826c15af5b6fddf779954351be1872f04e53db7b3b5fbf61fd18", - "401cc7bd9f8227efaed70dad83fc8db3bd38efc166f0f11ab142c565c68ba9db680423a3d698b6f3476ef440051fd20b93f6a2ed045825567df5a65e3f62e4442ec396ad260a16a13a1dee46c7e8d88bdd7edf223ab76a9a787c1f4fe9925c051a4ca0e77a0e78baa29f36d193c862fd3a60653f544ea9e3f75f2f553891be8c1fb882f6a6aad118f576f3c2793efc67221b37a45ab6137434f6228cb002fc137b91fb8572c757f00736879453d64a8a868c131810ffdad9e9d028d132157ecb1da675d54047d19b27d3258c9b1bca0a", - "c20cf0354982ca6a19d9a4dbf78f810934db2373941a12c263adefa61a5f385c859bc47028829c531dc25ccc0004c7510e707175a102ec3c4b4c933e3f52033e67476ff5f864c446c042a21e6037f7798363d20267891b965879fde80af6b59d77862e3a229af01b7ac78b578e94bd9f9b073c38a627c1864df0083aabb17024bdab6c3c0f0f73d31d59480523a2f23b78baa0385c15f290114305d7f98786b7dbc17a8c2aad97448e8ea389e68ef71091a6a9735ac12ca5497b9171da11a93c28d3273f58b74e2e46279d3ce9d0b20d19", - "e2365c2754073b511f16a1881ff8a537541ca7362ae7b84223d3c7d1d49d03a37d6d05dd2b819af9705c015dacc9dda83474eb14b7d5fce6e8a8f8c58e870149338d320e5ae476da6749af45e65ffed550d225a39dc74ffd93ba7da476985d6f44e90fc8e82454496260458431804d802fe804d825f611772f9710667377adfb1a11e4275bcecb42175c515f6a9439a359824f82cc9d480954364e6693099a821ace362e6c7ecbe68be8823bb5b49b4f23ad81b64139e3b63d9d4d298a842f013ef0d91ce7915ee8f816c70ba2aa3994216f", - "9c43944676fe859327096f82049cf69e48b98715878400fdf2805e0d5ee642e6cc9c43739f418b701348a033c5cb96bf8702fcd2fac9be58262a843c1e4155ed8a1724b6ebf7cce659d88a95a0c54deb2d7d9574a45219b6419ee173d1d8fad3ace47c962b349abe1048565df85bbd0eb9b11698258c23598023a00fdd26573e41951452027125c6e894a97736ecd63fd15b29a55d8dd9dab7e2e18f541a2e341890a61b7c896e7dc67aa82f3479dacd4a8ec7558d40c34d9ae4060e13718d676c2450258d83de8a86e012813693098c165b4e", - "1c707c29582d98a0e99639211102f3f041660ca03ad0939fe3855b8c1b22d6a9b8673c93e3eabc0ab231509b2b0d73c76a290a363943d12d2ff0ea30c6dd54eda753767effe04cabb4c3966388fa4c83a1906a0f48519a5fba9aeb585e0f8c45d6123a75ebe98fd1d0272f733a3925119481a321fe7509346c05128302851ba17a137f956f184e057a305e79a148727a5926de6854eb0314d5492fd735fa773d99ea34c95ca7546bd3a3aa8e66bcc6d860cec3d35d0e2165d5fbe8be99b6e7967df6693e5a6243e94c9c4a2528ae6305cbeca209", - "8f1e88103ffa378f062cade0ec509bec99a5c73fb273e79dbef24abf718ac26ac23dfd2b8932038ed3cb9637b71643c161142019f45b25b4fa4c52356737a27027e805ec635154327a66bfe64efc6285cca98c34edc7fb6c0766970a545342cf840aec0a5ba1dd3c6949be4fe97b0f8c8186de07536fd9074db34d09b2f08af9dcf9424d6edbf9cd044102c0e5dc35aff78c36d079dbd2c500e19c8c985ae2abaf6b2a20716bb719754a8840ce97632116c4d0b0e3c83ccca27f11c4204b76b5d6cfe6348a9615d8e4af53500dc4c2cabf12ec8c76", - "b9a0c28f1a6156992c103a84655fc6e654fa6e45e45819513afa797024717c00cc195994512fd53ecd1e12dac4d2448e0c40308382312084d2111f7db147b2e6589ce6d977f6115f629508167df8f45bac98abd49f6b272bcc4fd874dd5e29fb6daceb2d727a2a892194cfb9269eda00626ac89b4e74bd29b21e9f6ef18cb69889a02d4f0a06a2e5718899c1dc3b051c2cfa29653e782f87fefa478e6465bf5ff27f8b6abdb500077aac97100bd955ec535a587d66f23354be51cd8170289344bac9451f74e8aee3639f7c09981f4885e018912324d7", - "456844a34ae1074246f8f71eeef2010ec8733265bed7c1cc60043d770edfa320cbd4284a94be2574337e16d27f125074ebd7e99031f7abb4547b9540a7b0b5148ef501b550dd929f3dfe39ac65519f563e9254424aaafa05b1d37c16c771882e9e25d4906ac58603da749adf686932cd73d81e2658134fe69294c7a521d257eaf2110c667fc9d6f09b52d24b93910e532184eeb96eae9d9c9750ac3c39e79367431ac1af7011172d0a8be46a31010219a0310a733068c589bfc4748f3626aa4ff8d355cc893d05111c287c9992e95ad47481a6c42d6eca", - "c5c4b9900b9727bdc24baa544cad5faf8340be6b3759361f53889f71f5f4b224aa0090d875a00ea7116772117dbefc3a81c6950ca7ceeae71e4ba975c50d61fec82e6d9448d3a0dfd10bb087bdf0673e3e19fa2aaa7e97eebf71f11b86034fcf5a61240c71444ac3da15ef09b27b3523d37d309e8722380f835c1aee4a767bb027ec0674040853e5b53d6a31657f51acff6d2487860becd5ce695696cfe5937f4a0217b69e01cc6facc24dfe5f5230b8692a0b718e3b3c789d682db36101795a9a5f8bbb838c3679be72f7941a1db180135347d0a884ab7c", - "1781df2fedd2c39137854737d054cd3ed16b0ade411e41d97888ac900fdb46d9ae26b3d2dd07e118fd57eabd0dfd03a55793c76420666444865371adffc9b2f35068a0d70f9cfda1ac27ccb4beff4ffa5b8bb8bddac843386675c38a181fd0d935d6d51b25d78e7ff4ecef27a9853c0f0d2879c395ed1c4883987d123890d04f851c3e042e1164c68c0d503de16816f4b0e554236e5f4c339ea11d01ce652f6208f78f457a2417a97c0a6a240f443262def4b6763abf53e597bf1a28f907dc7cbdc751a234ea7d75710ad5ab0c37e8e9805102a375abd44011", - "8963552ad1e729ead07750df599d734157aaa4bcdcac17e8eb19b4f99cdb162686ff433137aa4e8a0cc8df0053999196262115aec326cf37567d9ba4760e0ad21d5763977f1ab9b35c0fc667890fa87fc946ceb776a811b5adc69446bfb8f5d9908029dc5aa38db816e4a4e8f98e5a48cf0a01627031c5bd1ced8bc1940dcafe4ae2f1199b186468eafc07e96a89d95dc18ef0fed3eda5b58ce58f221a47ba5311313cc680367eeb058fafc7bcadce5f520b6371489d9e529278ae6ee2650a85aed82896879038bbd9aa8d685fc9528943ccf2235cdf69a86464", - "23ceae3008085134433f5de4b47bafe0f443d443491e6cd47b216dd2dcc3da65239515a6e6b9beb9a939ae9f1f1f5e11f88326475e0962f319d9bf75ddfb4a46e7cc3f799d7547f3c0b2e089018b75787b82ea1a7295e7411f4852f94c94170e98bb0647923b8eb7d184038e56560da46085540cbfef82b6b577c445d038f6c93fbfdfc96ab3a0191d20a57b8610efb4cc45cd95198198e6f80ac46b0601511885f650eb00992605be903bcb46cd53c360c6f86e476c4c9ca4ad052eb572bbf26eb81dd9c73bcbec137aea6ee27aa97dadf7bef733fa1555019dab", - "c0fd31e82c996d7edef095cccfcf669accb85a483ea9c59f368cc980f73da7202a95c5156c34192ae4ebf773c1a683c079b17ac9d08b4265b4054fcddaf6666ca50f38f1a2ef2497459a68c06837363a526e850ecfbd223f55dba67db017eadb7a9139abb5bf3854834478b838aafa16c5ee90ea52fb2f7b8db2bcefb85b06fc455c2b6c27d0af9a49dbf2f313bf2599370637393e7972b31d8bf6759f3e6115c618e672831f84d76ba1879c754144e1df4d56b1e264b1797dcb8ab165040c8d20b931071081d7f74fbff590bdc8e888e71acc6a720270da8db7c821", - "936fdab91fba396e4a8754a97a04ba333daadc29885c9d0c8fea3387165278f4974e468fea57f2bfd8428c4d0f010833283db73735d39de0c0cb5898d0c06c0ecd05f61098935cb6130a8da60d1a6c2ecfe420f972263fff5a631b09e81c837183c5528bb1c740b36fc39cb082f3383c2b4afb25d04ad1d1f4af63dcf26a0bf5a647cd2e35a51cc119c4dc5031f5715b3bfa1f2b92de06bdac0d670fdd30980f32c51f3936b51e5db6b95a8d36279da5faa4c4e454f2b7e54e9f488071011c7f6f9b63da260a2e46d796d36c9a9dcae88085806a10a77bbb670d475778", - "a55fe162b287bd6eebd6cf7e7aeea8672322d924ae42c7404ff89aedb98943f3755d2889bca488cc7000e6e9b8e7a0ef289273cd29c44cc600e330d1775e3cb767f12150e1615dca8c3f67466463a3ca993a1b788cf67a7a35b95dfff954206eb5ea1e1bf7fb06482a551625b5c9fd9a86e8414c8cf79d3a14104a153cbe04aac5172aa4c4a89349f5856c4262dd1d7317a7544c9afbbed449e7dcc2b58d9df6c9c9ed3883e42e80f5c2433550f30e73c7bce0fccdd880adc19282a392dae26a0108e7faf168cfc15937aeb046d60712603286b8ddfb27916b79242d56f1", - "2bd6976592408cdbc4e41dcd3ecfbb786775ddedef914d9058e6753f839fdfe15b17d549dbc084aa6cdf3befa0158aa84c5d58c5876144fd7e6c41ab7d42419d0dd353732e0e6d3fafc4f5626c07433390a4fd467197e85b5de7e2cf1c26cc575356adedcc0740008523b503df12ff571387726c5ccb280376d19cbacb1d7ce7aab8b13292c6a8b8881e949cbf6d4610d16ebba1d46cdb8d0459596e0aa683d0307bd926e14de19b9bfeaefa29d91b82248604673a455520cbb64eef3f38cfad8e126a3b1cfa1aaba53a784c8ae0c50279c0ecdab54095d36f67ace9b8ebbb", - "71913ae2b1c8729ed6da003c24a1d4f96e28d7faf55ca14ee0b2865282b9b61103ce6ee0b00b00aacf2081adedea5616f9dfd22c6d6d4f5907bcc02eb33edf92de0bd479794f51246d9b612b4543f6ff633c4fc83bfa6144c9d26721cdc690a3d5a8db54d8bc7873bfd32924eeb502810732b5ac2f1852bb021c401d26c39aa3b7eb09083093a9e89bf889b53383b5af61110aca1b9fdf38908c7d5a184fc5f46b3423a66a2749feb8de2c541c563987278dbd0513d99b732411012b5b75e385510de5f6839c3797dc094c9501d5f0504b06b43efb6e746f2129ca189c1da424", - "9d048a83294de08d3063d2ee4b4f3106641d9b340a3785c076233686dd3382d9064a349c9eaa78028d35652078b583e3f708e036eb2ced3f7f0e936c0fd98f5d0f8aa91b8d9badef298bd0c06843831279e7c0c67ca7e572f552cfdd984c12e924c08c13aeec6f7e13d161785546ebfd794b5d6a92a4744e52c4cab1d0df93b9468be6e264e8cfcc488f9c3c1817cbe501f4b9cc5999483b7433aea777226b25273a6ef2331b5f3b6db8091591e8e276015da3ef78bb2ee0526ffe23def2d8d193cbe594e8ced1f3d216fcedae2a1eb288da82e34cf98aebc28def658ee0849ae7", - "3251c96cbf82ee2e5264528c0b6cdfc23d20e1eb2d6441b5d62f0fd24c692a0d45a8bc8aac32884b7141ac0f4f113ec9fc7f6b4db3d696374177f9a42d602ca471275b928f639105a55b846da9ac7274cc37de8c38541f6895f94d72a81e117844b46601c201f7189b935a96e42505f2098ac985d92dfe86349a706ef6325b3c2e4060ced3c453e68ed09e043bcc75846b80118dc53530248da250fb57922d0afa53a7b2c89161aa4fa372a46b2a8e1307741cecedf585d2f998a9d496763800b6965c38a5d8aa566c709f13699c8185ab4fd8fdc8b824f4dd6d1c255b4788f50574", - "2de31dbc8a012254586f3229d3524fc529554e98850d30acdfc11406bba6a142029126ac165ee90b2de7509fc3571a8ee12e16b05054eb8baea879d135b39627f0d8331be3e66bc720c2096ce74e437daebf3bc53d8f2ccc228c3256d3edb6e9ae7c354a0c9350e6d663a9a30630bf9da3d96b96608a2a171ae28105714058b6c4b38a36c56561c4612c32aad25c65b7fb6faa4e4ecd44ebf9b2fad42ff9a807cda2581614fd30d41a7436069399b8d4f062a37a5bd4066a93d541fa5797a7d3e7dc9c4c40f0bbf5256f71613240f9ef128b3423eacaf428ada06b6a531f835281e4f3", - "07dadee629a08223dcd7ec441287b4c5e26347451d9c003e3a8496b4ea313b51126283a6720d7851e24423d9c9c818b4601247178f38a61f45fd4c8596d79529d416834226666a2c8552bbc901cc5cc3406a18fc88077fea52e1b620748553052ab7788c0d025b095b736fbe714cb3a968ec16b5917652eba2d7cf32ef3140d6c27b25d053e9786d24cd09a5306a0ef55e46201faa6196a91084267d7a7b5ca57c2efdeb2cb97d682d2a191b915553c8933f1d1b7faf0b4a1d83ef611f1e44438bc1c3d860fbfd12b5f26e5a6889a31ce26ae6a55c7a563b5816d113423ef3f25fa9befc", - "1d94166bb387526d519c4ce150221954da8930f66765fe6a5504e30a69962d595cfdd07a82c003843598864261f053bdb6f5086d516c261e089caa89990f0967605768ae9200bdfe4dcd7b77a93265cb33d9851a2a1036113c732bf3f37534530641300f0620de5c16101e16f4baf39d9fcbfcb01c52afce0992c329d8dbb438c314eee995c5020611d6f889e06b8a032785cba9a415580dbf752b5e510523c89f478cc6f047bd926f51e4a965c9749d1e76379c0e7e5b56803893bafaa4d2892b4c52f143b2fa777cd1035ea418684b8019df084f9a3f1f768753096621f342895c510d01", - "fc0073f199ed8a1d6edc8e7bdf182670003108d82b283aba82326e856f8de378987a03d0fe8d2041440fd29d51c63796aab44090d2b14ee00859b3a08cbe88f724badcd3c401226c5db8b307b8deea5be305412b080e9f99cf79d6d08d3646f347a7afebb62912e3e246e2e726f9aec5c101d916e47f984507b1d65d313697256c77da7eca3bc5811c87bee02a2826cefff0d92bae989609aaf95d70561b40d98474c37277c884aed887a1606d206b11e8a8a71d1f1d19319557b57351228ff0404be700a6cc56c0a30f3d4b7a0a046463fdaf19e7d5f59e155f378e35baa33db1e881f2207f", - "f42a6a91278d6a076feba985b1cf4ce0af1fa9d6d039c136e8971e665ff088a10b6b9a379a6f5526fc5957773a0ccb8972a4a19be0745ac13937030a54b18dee4f4c5df47a58a33a7516b90e646e5da999166ab0e52f457f7c9b7e391836a687eaae37b377e59a4c995ab0c57162c307ab951a9ba6590f429cd27250e7010eb794ec1b1ec35f8aad189b2fd3e8aff24d93601d91a4884e6f84b02757ce7620a02901519fccfda52f68ad6df709d112a9c25d66bcbb9622806427ca8b8d346b6db05874bde800cde9cf17df4b05baab0f133febd1ebbb053b49c109a7f5b1f864a304d10288e2f0", - "bbcefaf4a0739509f8a2f831c954071aac52e60cfa882a867b8b910dcf7edf92e1c0692bb027bc378c460a01cb6ecc8f2a012dd84ee5a678cd497b1457b6d393421fbee98ff544fc7eba24cbc3aae506254d9a2d74dde74437ce4c8a69010718506bf4c5943342a942e5e2d3406a3016280b6e37954c5d5e763346251afb0b746cad68cac757f9df765e092518729cfb9a5e76300c124e708ca33591a369767ffb63933cb72fba67beb2223d98984d0b75eb5d1a38615913747b520b3d613c715c0c77d2987bb88f3c419bcc5d38573cf4a8a4f550b2d876f05ca252d88c70a561d869a5018b32f7", - "dc2437010cb05d9cab2af5c275e1d2acd627ce19fb86355df91fb8d059e60d591663c8eb077d48388c9a321057a98136f49f0098348d9f29d808936f98bb1787c7ac75fb14f6076dfd2de5b59b1fa4848cabaa9a99a091dc24b561911c392ecdbe53f4adae82b852d830adea3a10490c908e337ce0a6d12354ce05a37ad3a06696b66820af8a1f67e6287533fd6f38a5f6ad1c6b078c08baf2c37d2683af01e6a5b33796c8ae48935a888f9bd265f4f11a4e27c433b8b1c9afd140bcd21a07e24378ad6badde8e47c57e3340f49e2406e8d49afadd65eaaa4c3d078c27d7e42118cb86cd248100a356", - "6c290db326dd3152e6fa9b9c0cd7d49e50a0221b96e32f5f34a8cb7d0c2edd3e937a7d025d6999b7b468add4d6894d8f7aceaabc18f4d9c171f1fe95ea1ae8570382a8450fbc595d95b1f51d24e1abc2970b0e1d20ca40aa21bdfb3656adf2f19882eda606f5ef1c03174e1d94c8d12f0fee8dce6852f42a364eeafa27a7971d4379405db8e46baac4d685b969238e5df06292a6c790bf1994a051b038e1d8db91e1bc4804f32443781c34a552ed2e8100cea374e77af56ba0e11c45990d3ba68df9087b1f4968cbcbb1c42f99b7267c76af926ff3134e093df28fab039cad420c6b70f2d9b5e678c155", - "ac724a22ebabaedbbb052953e3c264a4b6440f313bad501cdc1484b64f33402a2230898776db5c818c28035ffae6ea24abd04b7159e42159833903a0c23a7c564f7645e49ddedb748fd9e51bd6cbf2eced98caaa35226970f003ce1fd260ac5795e096f1c04aebf8fd36e5e2adeea929b5e963a3cb71d6b55c85bb7d3a2b03a7e74b4416de8fa68950168d7c3ae8ed2e29bad1e8a182a7c5418e5d564373163778cd3c34e9d320eb1a60480a8f98b12e0026cbd7752e6079812e3767d9f55f3f10b8c214a6eceb2a58954091a06b33862af171a9b60bf2c6a44e8766e6c56e98092c56f2a8510f6d05c103", - "8c70114f7cffb375c2b9a06e27297a5c32418b2daf68af5bbedcc7106edbc070e764bf40c1f8eb15079e2ab77f898afff3490108ed9afb7ea9cb05df41d263be0e42d2321d3d2656622d7bd232bf68d37375fe7314b09cba66f19c8b59424198ee69e7a9f3de0ecce0685127807ce336fa479ccaf7aa1ebc4e406271ce6c4923ec36093516498cc227f9218869346c80ba5ae83e023aca0ae2bc86b5bf5d115a4616b6587cb869d92f8c780ab70d5766de07a204af5e1c8dbba622516d2e911b36c82e4687e4d258ea616c07f76ff0baa376c8d5975cffac0b25817f779ae3ce88b72eb47e378484ce999bf0", - "0733d59f041036398233fd47a84b93f6778ae5259ef5d62aa3b9faedec34c7edb570c18b2a5d2c4c55cf656d98a1ae396d45a3b746b7ad6f07312c3d05d1a50ffa90bcdcdba105e25b7b0c52664223f8c2476925d46dc6ea2406ded7d0b0b292f6656cebcc7616cfa4b82aec68b35d1da67f6ed2bf0171849d6bb65128d8a140ea5cf97f1003f8d7093bee077be78def4f7bd2caccbf0644f26b26285225142c40038484c3bb9ba9597744f4389e76dca3eb695c33ccc621cab1fb603cb3535a0ad318d220385d5e94f8674f3d55e97e097f8d5c049e911946afbfce783819951d65d6bff4567dc951390d1aaa", - "398ddbba3dcb5642c102efa841c1fcdaf067062e7eef8e2ee0cd73d7f77e57372d6ee1a9b7b6f86ad12d575001ae71f593449cb5a476c6bfeddaa2af0f9239c1d7effdedf66ceaf413707b5ab9661a7cc0ef8cfe4d1651579c4f0f64e2d12a52653c54f2dd60864e769eab8a627c89c56ee93365d031f0d2523cb95664b1575d51b122f33c9e94de75432a690658c977b68aa5b721a393f9b9b3b612c10e920a7d510c6d8460b35f8614c42f5d2c241a01b28105aa7c1b521ac63ebbedafac6d5a38c898e8590f918a1927bc53aecc2b1c8b18d7df9107c6997d9b3fa4b0bdb1c603da619d9e75670b97a5b40f06", - "ef07bbc7c4150dd47f8c69a7989948fe831dc798b0424dcd6551bfa8e88216095a7e5d720909bf3d23526b9ba464b66ff6b63a7337c31451ab9a15f04ead809a62bb52206237de77597a730106d02d227dd6099ea9ee2a92cdc446ac3b9d024e32255adb3e9b56b561c431e0b5a721f0336f19568a5335d0ebc6c73ed8ff2c15e219477d9e4b67f2928e251f8a61a2848857e037d010806c718ab062967fd8e85f3722252957923f5f9005aae47b4b1b3fa464e3ba9df573a56055f17e903126fbbcb6cb96de92fe617c97f84ef3ba0d8f2651dc4aa80c157f372ae1bc02e5067ad076f3fe48bb72c0f3c99273f82b", - "c7076986d2333f3a6752adf11f1a9e5c6bc4755f341073cc86a9c7519c8db029d5ae833fdf3fee826ff4692c57880c5074620ea97c00f1dde1e8a0f18501627984ded4d1b5c4af35be5cc1bcc868060a49a968dc0547acde490b4c68d79924a93a986aa0ad060c7de706e8a99ce8f84a4f8707b52a8ee122b763ba580d6b1f35f6af25094c69f49247da96c836991851ad36f60bf577863d7471608a012afa7a56656abeee7cd9b4f1f4d9d13a8526c0f33cd251caf7486639e787250390e7e488e9ec311fc3d847a7266cc59bcc2bc34192554aa57cf25db10ce04bdabef3fde6db85f55195ecc2ff892b2e268ebea6", - "01789f40d42d8d3e4a416fd9ae7de78c3a30507809eda200e1afaaf8d7020cd1fad18eba62d821946f220506cf105ff0e2069a771a2c233714afa6b2f695497e4b95c9693dbb93ec4c9a14720676aa87ee31dd34e4e081756477032b4a57b328285f2cdec1b269754c474936927e93acc26012aff1bb36f30c2402aca0a9b9ce9568f5000e2c934263933b436c94f8d6589c89db7edabc5d03a8fe795fe50c5166beab64ed7c22662b984ae2c66dbe4c090b0df603b27c759278f8d66859afea3f6a8f02c2c2a2202b9fc29132256f164b5050a803b43688dc4c9ba86374a3522afba5d1a19bb3820b883aebc267627095", - "2c61944bd6a50da00ebb951d2b67d79fc6b6fb5aca83b1de3dbd7690ab756bb1e1a21051ccf1e24136ac8ccb42a2ee10be94d2cb9289d5f52b6f90e9d07a3478f36a1eb7d08c3dec52ca154fd1427ba92a4ecbe73a71bceafbd26e9a39d50821e2876d3a0c0e6e373b9795dbf72ea29cc439ff42706be798c90d4617b39c90ec84bf9fb699dc8a9a34e25d81759d6c57df45efb1d0d68aa51278564b99633ed5dc464bb7d53c5c21f798f33bcd868657ecfe75a1ed8149d394b398969ef624831b30f1458465bfd2fdf3f284f2ffc54bf2817b5fab2e02056e864f78bb6fd870c64f3609dab218f25da8060f756e45121e79", - "942fa0c68cc72f69518a3a7aac0cde45bab0e928b5cb2bd24d049fc313f74b6afa87c4e34150484f3b5200163f8a6472d04777928ecc49319539fc17d71a38090f55a74f757fe45781a3c09f08dcd3dd4c73c8533a5e00cf8a86ebe77fe45be2848574f7c5d25e9a0632a60d2dd41febdbf987d2a0487e4a4ce6ed5f49f2d741a88ecac232b1498253fa4ee8147bbd0f600abdf295e81f7570015aac5fe6ca7bb4a99bb3fc54287106d7fc1132a574af49db82a7b9a5f33e193cde527ca2176c52cdab672165e0fe5720f71ada57ee90060aa069ae2a0bfe67c1b71b17c601c3c2224bf9891bc11ba216e3ebcb51fd95b8d7cb", - "0d68cfe9c087ec116fe7572042385159cc705960f842aabad1ed1387ec1697f4413a23c6090041328fedd4b626c6eeaac5b5a71acc1fd1bb8fbd228857ac5bd045c364be7a5a26338ff04c99c4c473cf445a891db6422d1bdef4533442df171643fc36a092fabb464298e4194c9e2950884de13d113ee24160a416404c16ddc5d2476cb3fb80da543e6ed9105f6003977acb34e1fdd2cbdf7a00d5ff84350b74ac231418c0d88269d02d824802791ff42a51cc835deb9869a6023f867f82ef6dc0bfb03e6dfa835646bb18a4074773486e308aa39e532aaea4e6fb35dcada7e060f8282c371ed26d22302323d4fd142a85534671", - "45e24b167a0bbef1bd8f79dd047763d0754f36a7b623f298059d177e8ac994945c37d2c4af06f01318960301595941124592f2995af1459d854339998d3ae17534df2d9793d6e203857d02c98a0cd88991e641b3e640090ba303f87b907dca8ca462fac19ad079b2c82ea5b521ab891b10138b083b3d9fa214a8fe60d1cb3599c5d199c61a2cfb7ee2f39e5a5abad5ac4998b707545f73e92128d21803420526d2598a53bb314adf29a0ef56b94bd2221601eb53ecb8540e8fffd38fba7bd827ef255e4ef55491475c0f383a241f81c72af4e1dbf2a65cd4d18a497615aa0de2791a3511a7977a8d4d41492bfa4085f2fd4e8f751d", - "1c1bb695ae90e6e33fc1e8b2a62ab98bf835ac7193440f2351c8cdd830472b637d2fd9c9013cb83caef506abc1c4f7567706db6046b1d184579c7a9223ab1b35e32898c70a3c27628123ffcfa518612f080a2c4a9f8e0a927a47dc98307d2b48de9d5dddcb5c82f0b0e4e610d44f1baa9bbbf7f5a727134680bb7d1327b73b52d8e5e36dbb53971e99e699d79f75a3fc01316bd7012947d119d6aeb7f75b8fbf0479c03002148553fa0da450fd59d4f1bebc252caa11ed9bec5b6ef54279b5f8382b61cffc67ec03f4baa7ea476c31364b86aa8ccad9fd0818717f0ced2dd49477874b4341c602d7a1beab860eb476c7e3ce597e6926", - "7a3cd9bb2277e2c7f1134fe7233f0f7883c2db9fba80aa5742b03041de0fe589d9e5ea84470dabf41bb66816f3e33ebf19a0ca5aba1004cf971249b258ff26a98dbd0c37ec6cd574854109433357720040bafed4531e0079186b1e853e0ced35d08d27f6d732ed6e2c6651b51cc15c420a24f2dc36c16ef4b3896df1bb03b3963f9aaeb02a48eac5772abd5948c2fd0db2bb74e3351e5eabd681c4f413655bd94dec96b1544c1d5d2d1df4bdc26020d25fe81d5238de824687a5505e1fbe08d11b3924b3ccc070fd225bf01eb79e3d21f7b62a836cd3bcc11c931669c37613470e356143df87c48848a829f5e018973a5db88eb6c60203", - "3f158afd0733fcc5dfe1efc2dd4eada732f942af734ee664955bb1ba613eafd0f349e7554a14d68200c62d8f2dca2ec8b81c8350735eaf437041f78b452598825b6899560963ade66a0fc74ad01f8343d1d19c7bb327a8dc14ffdb1c42fa72b2970d9155e2da6a2e6419d4117842d826ff38ffab9617307a0283d3ea28c8104ad9a6e087bb750ed1d10fd8f7100b1663682e979d80e43968c33d9eff66f4d1344e583ee521e78d0a2193c0577516b978339c143bfc689bc744bbc4a9163063de82c9706384b6b385e54666c86b34f23c1e25be293af06092ca31d857e11e5b2caf0d19dd3afbe85380878eda76d718b4bb869c67e044e242", - "a177af4387b9bfa3d59e97ee7b0ff5f4ae4a326fd9204c8d28831a67fcc385ee6c4828247b16d11aea9bb8cd9e6c4d2876c6b2fa6d5041ad39e1b04039071e29c4d86417e7eac4fc7d3823958a021823e2c880a757dfbcd0c8196371db5bbfac15e4d1a0596508b6d26f8c4a664924c95082d173f817995b44c4285d625d9b2f56c86632fe1295c5a8a7a3760028072bcb07bc245a705e7174d06b9d5c0c8ca495b9ac218f1921fa63f2db3fd148f07545366d008fb5aead7497d902b91fbaa39669929d4ae9d07df8557f1f0aed7b51252f10c6606e5ff3ede1327530ca356b4896ecf14bf7322d77fddfbe28d52f6de7f66eeb81704c87e2", - "01a15b9018e35cc342c926b01d03ad9db4993a6bf92e0555969fee90033f28f3ec234c1268b11b040dfa0770d4ceb39edfeb8ee6a589f4eebcc08d2d1b0a1a52953aa26eb44fdf4a2743c3dacb212a0c0f325572f645f53027b6f3c0c55abaeb1b0918c89bedcb5028f094d743ea354f8ff553c45f111a8fd5a14a4e5c835164747d302472e19a67da04b4c8e39756a9d248ce14d1ed43de75aca86850f2455eccd4639b2af035bb3f504cc9065d091c1c47e036083cb3fc50bf39292b11737c7ce0b49673ba93981de304dc65a671775b6ff927e3ff93850b214fffb5792105a4bdc81354d5b09e84afbdd1792b8fb4e9d0ae3dad2492b03282", - "24f07ae31279ceed18ec6d35990f21200934ad6b132c6c62e82fe92a40a0e60a5bed10720eff5a1f728971888682772b2d9060d4fee88f37d0824e7384dddcc549475f0e1a44eda4804778b62febe46e04657a20577ee70acb3425e334881eebd8ddf714ae8c527ea747e3367de384e595a43b299b6bb3f6b0a4716cf90038e0f75a47d5057d7fcc3c8a8f9224992c67f8ae0d3251ea09a24aed9ce57ab637f6b3cbb7083df62b6287f64d0877984c4249d113bdb2b07865082aa24cd7ec07061b17de320f51f29f25b82d7073d369cf2dbf96310c0c311997911b2cc02f606f9cd99663c57e78499192a2a78f9c9fa67013e0f9817287faa69b22", - "4aeb32bf9d050f10bea18d9f71b4afea7bd08550e574e7d50df234c7413668b297b6721d7a0f0bdcdcceb2f55adddea28cd59bd44be0c5ec067039e428706caae11f565d961ad6e7f4c51b0aed6d05cc5b8d826c4b9c39daefb6c7da46dce619a359dc9ce215a215218fa8d54ee0b4f301b6c201c7c2c5f7cb1c6e0cb76ba6c6e8f63ef7a5213d550b0d0857fa0ff9e3e38e497161617413ac066e2fa539520233193a5cb7baa0c2cb20b45e56bfed2c40a9544d1f230dd0cd6d4976e7cf51da8a13200c3957c0154c8237b2931ce19b824963ac576ea49b548cc6aa85c47796b470fb2c6308d88f390bb13607e294c84a838b2713b14ca6a5e8bcee", - "77e607478be5502432230c913d9ec82f967d87c0ee169a74076f989648853eca693277287f8a5b306bc94dfdbf64ca5cb5dfc0bc498589d51a691b8d57d4b0a9ee247d038fe1b5571183be3e75c37045bf1235863ff1b84b208c10e7f1a5ba54ff36af5b2870129867164d013e0a6d2cc067a3509bba2f46390302c80b651cf590ef69aad8effd94cab28a9b44be6a38b58cfc47c9c725d6fa467894163383b6873d10d263b1cbbad932ded59ab503920267ac026726f794a335a88f6ef564f8968c6fa6f5d3ea161eb6062ca349b9a0e4038273399cfa297a6b07ceda1ebaa99c9de2d935ee230a08c5a488ad46f3393243371d40916b8063cac9da63", - "50957c407519951bd32e45d21129d6b83436e520b0801ec8292d79a828106a41583a0d607f853dc4410e0a1427f7e873455a75df065cfc6eef970f7e49d123b346976460aadd91cf513c140c356442a84656904a8b1d708dc6089db371c36f4fe059c62302eaab3c06c0cb3b429961f899dcf99798464b8571a440cac7a52b495f32417af6bc8f58adc63647531f804b4e96273b29b42434c1236bde80ba3744fef7b1d11c2f9db332b35bc25123338ac9a0796aac213c9709b3c514ea7ecd80e22d3d8a74f28c8194418a6e1ff30714d0f5a61c068b73b2ba6cad14e05569b4a5a100da3f91429d6e3ffee10ceea057845ec6fc47a6c5125b22e598b2dc", - "f2273ec31e03cf42d9ca953f8b87e78c291cb538098e0f2436194b308ce30583f553fccb21ae6c2d58f3a5a2ca6037c1b8b7afb291009e4310a0c518e75314c5bb1e813bf521f56d0a4891d0772ad84f09a00634815029a3f9ad4e41eafb4a745e409ef3d4f0b1cf6232b70a5ce262b9432f096e834201a0992db5d09ffa5cbc5471460519a4bc7cdc33ae6dfe6ffc1e80ea5d29813136406499c3514186ced71854a340701519ef33b6c82ca67049ab58578ff49c4c4fbf7d97bfec2ecd8fbefec1b6d6467503fea9d26e134e8c35739a422647aaf4db29c9a32e3df36e5845791fdd75a70903e0ce808313a3327431b7772567f779bbaee2e134c109a387", - "5784e614d538f7f26c803191deb464a884817002988c36448dcbecfad1997fe51ab0b3853c51ed49ce9f4e477522fb3f32cc50515b753c18fb89a8d965afcf1ed5e099b22c4225732baeb986f5c5bc88e4582d27915e2a19126d3d4555fab4f6516a6a156dbfeed9e982fc589e33ce2b9e1ba2b416e11852ddeab93025974267ac82c84f071c3d07f215f47e3565fd1d962c76e0d635892ea71488273765887d31f250a26c4ddc377ed89b17326e259f6cc1de0e63158e83aebb7f5a7c08c63c767876c8203639958a407acca096d1f606c04b4f4b3fd771781a5901b1c3cee7c04c3b6870226eee309b74f51edbf70a3817cc8da87875301e04d0416a65dc5d", -} diff --git a/vendor/golang.org/x/crypto/blake2s/blake2x.go b/vendor/golang.org/x/crypto/blake2s/blake2x.go deleted file mode 100644 index eaff2a7f..00000000 --- a/vendor/golang.org/x/crypto/blake2s/blake2x.go +++ /dev/null @@ -1,178 +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 blake2s - -import ( - "encoding/binary" - "errors" - "io" -) - -// XOF defines the interface to hash functions that -// support arbitrary-length output. -type XOF interface { - // Write absorbs more data into the hash's state. It panics if called - // after Read. - io.Writer - - // Read reads more output from the hash. It returns io.EOF if the limit - // has been reached. - io.Reader - - // Clone returns a copy of the XOF in its current state. - Clone() XOF - - // Reset resets the XOF to its initial state. - Reset() -} - -// OutputLengthUnknown can be used as the size argument to NewXOF to indicate -// the the length of the output is not known in advance. -const OutputLengthUnknown = 0 - -// magicUnknownOutputLength is a magic value for the output size that indicates -// an unknown number of output bytes. -const magicUnknownOutputLength = 65535 - -// maxOutputLength is the absolute maximum number of bytes to produce when the -// number of output bytes is unknown. -const maxOutputLength = (1 << 32) * 32 - -// NewXOF creates a new variable-output-length hash. The hash either produce a -// known number of bytes (1 <= size < 65535), or an unknown number of bytes -// (size == OutputLengthUnknown). In the latter case, an absolute limit of -// 128GiB applies. -// -// A non-nil key turns the hash into a MAC. The key must between -// zero and 32 bytes long. -func NewXOF(size uint16, key []byte) (XOF, error) { - if len(key) > Size { - return nil, errKeySize - } - if size == magicUnknownOutputLength { - // 2^16-1 indicates an unknown number of bytes and thus isn't a - // valid length. - return nil, errors.New("blake2s: XOF length too large") - } - if size == OutputLengthUnknown { - size = magicUnknownOutputLength - } - x := &xof{ - d: digest{ - size: Size, - keyLen: len(key), - }, - length: size, - } - copy(x.d.key[:], key) - x.Reset() - return x, nil -} - -type xof struct { - d digest - length uint16 - remaining uint64 - cfg, root, block [Size]byte - offset int - nodeOffset uint32 - readMode bool -} - -func (x *xof) Write(p []byte) (n int, err error) { - if x.readMode { - panic("blake2s: write to XOF after read") - } - return x.d.Write(p) -} - -func (x *xof) Clone() XOF { - clone := *x - return &clone -} - -func (x *xof) Reset() { - x.cfg[0] = byte(Size) - binary.LittleEndian.PutUint32(x.cfg[4:], uint32(Size)) // leaf length - binary.LittleEndian.PutUint16(x.cfg[12:], x.length) // XOF length - x.cfg[15] = byte(Size) // inner hash size - - x.d.Reset() - x.d.h[3] ^= uint32(x.length) - - x.remaining = uint64(x.length) - if x.remaining == magicUnknownOutputLength { - x.remaining = maxOutputLength - } - x.offset, x.nodeOffset = 0, 0 - x.readMode = false -} - -func (x *xof) Read(p []byte) (n int, err error) { - if !x.readMode { - x.d.finalize(&x.root) - x.readMode = true - } - - if x.remaining == 0 { - return 0, io.EOF - } - - n = len(p) - if uint64(n) > x.remaining { - n = int(x.remaining) - p = p[:n] - } - - if x.offset > 0 { - blockRemaining := Size - x.offset - if n < blockRemaining { - x.offset += copy(p, x.block[x.offset:]) - x.remaining -= uint64(n) - return - } - copy(p, x.block[x.offset:]) - p = p[blockRemaining:] - x.offset = 0 - x.remaining -= uint64(blockRemaining) - } - - for len(p) >= Size { - binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) - x.nodeOffset++ - - x.d.initConfig(&x.cfg) - x.d.Write(x.root[:]) - x.d.finalize(&x.block) - - copy(p, x.block[:]) - p = p[Size:] - x.remaining -= uint64(Size) - } - - if todo := len(p); todo > 0 { - if x.remaining < uint64(Size) { - x.cfg[0] = byte(x.remaining) - } - binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) - x.nodeOffset++ - - x.d.initConfig(&x.cfg) - x.d.Write(x.root[:]) - x.d.finalize(&x.block) - - x.offset = copy(p, x.block[:todo]) - x.remaining -= uint64(todo) - } - - return -} - -func (d *digest) initConfig(cfg *[Size]byte) { - d.offset, d.c[0], d.c[1] = 0, 0, 0 - for i := range d.h { - d.h[i] = iv[i] ^ binary.LittleEndian.Uint32(cfg[i*4:]) - } -} diff --git a/vendor/golang.org/x/crypto/blake2s/register.go b/vendor/golang.org/x/crypto/blake2s/register.go deleted file mode 100644 index d277459a..00000000 --- a/vendor/golang.org/x/crypto/blake2s/register.go +++ /dev/null @@ -1,21 +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. - -// +build go1.9 - -package blake2s - -import ( - "crypto" - "hash" -) - -func init() { - newHash256 := func() hash.Hash { - h, _ := New256(nil) - return h - } - - crypto.RegisterHash(crypto.BLAKE2s_256, newHash256) -} diff --git a/vendor/golang.org/x/crypto/blowfish/block.go b/vendor/golang.org/x/crypto/blowfish/block.go deleted file mode 100644 index 9d80f195..00000000 --- a/vendor/golang.org/x/crypto/blowfish/block.go +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package blowfish - -// getNextWord returns the next big-endian uint32 value from the byte slice -// at the given position in a circular manner, updating the position. -func getNextWord(b []byte, pos *int) uint32 { - var w uint32 - j := *pos - for i := 0; i < 4; i++ { - w = w<<8 | uint32(b[j]) - j++ - if j >= len(b) { - j = 0 - } - } - *pos = j - return w -} - -// ExpandKey performs a key expansion on the given *Cipher. Specifically, it -// performs the Blowfish algorithm's key schedule which sets up the *Cipher's -// pi and substitution tables for calls to Encrypt. This is used, primarily, -// by the bcrypt package to reuse the Blowfish key schedule during its -// set up. It's unlikely that you need to use this directly. -func ExpandKey(key []byte, c *Cipher) { - j := 0 - for i := 0; i < 18; i++ { - // Using inlined getNextWord for performance. - var d uint32 - for k := 0; k < 4; k++ { - d = d<<8 | uint32(key[j]) - j++ - if j >= len(key) { - j = 0 - } - } - c.p[i] ^= d - } - - var l, r uint32 - for i := 0; i < 18; i += 2 { - l, r = encryptBlock(l, r, c) - c.p[i], c.p[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s0[i], c.s0[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s1[i], c.s1[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s2[i], c.s2[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s3[i], c.s3[i+1] = l, r - } -} - -// This is similar to ExpandKey, but folds the salt during the key -// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero -// salt passed in, reusing ExpandKey turns out to be a place of inefficiency -// and specializing it here is useful. -func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) { - j := 0 - for i := 0; i < 18; i++ { - c.p[i] ^= getNextWord(key, &j) - } - - j = 0 - var l, r uint32 - for i := 0; i < 18; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.p[i], c.p[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s0[i], c.s0[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s1[i], c.s1[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s2[i], c.s2[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s3[i], c.s3[i+1] = l, r - } -} - -func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { - xl, xr := l, r - xl ^= c.p[0] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16] - xr ^= c.p[17] - return xr, xl -} - -func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { - xl, xr := l, r - xl ^= c.p[17] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1] - xr ^= c.p[0] - return xr, xl -} diff --git a/vendor/golang.org/x/crypto/blowfish/blowfish_test.go b/vendor/golang.org/x/crypto/blowfish/blowfish_test.go deleted file mode 100644 index 368ba872..00000000 --- a/vendor/golang.org/x/crypto/blowfish/blowfish_test.go +++ /dev/null @@ -1,274 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package blowfish - -import "testing" - -type CryptTest struct { - key []byte - in []byte - out []byte -} - -// Test vector values are from https://www.schneier.com/code/vectors.txt. -var encryptTests = []CryptTest{ - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x4E, 0xF9, 0x97, 0x45, 0x61, 0x98, 0xDD, 0x78}}, - { - []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, - []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, - []byte{0x51, 0x86, 0x6F, 0xD5, 0xB8, 0x5E, 0xCB, 0x8A}}, - { - []byte{0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, - []byte{0x7D, 0x85, 0x6F, 0x9A, 0x61, 0x30, 0x63, 0xF2}}, - { - []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, - []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, - []byte{0x24, 0x66, 0xDD, 0x87, 0x8B, 0x96, 0x3C, 0x9D}}, - - { - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, - []byte{0x61, 0xF9, 0xC3, 0x80, 0x22, 0x81, 0xB0, 0x96}}, - { - []byte{0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - []byte{0x7D, 0x0C, 0xC6, 0x30, 0xAF, 0xDA, 0x1E, 0xC7}}, - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x4E, 0xF9, 0x97, 0x45, 0x61, 0x98, 0xDD, 0x78}}, - { - []byte{0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10}, - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - []byte{0x0A, 0xCE, 0xAB, 0x0F, 0xC6, 0xA0, 0xA2, 0x8D}}, - { - []byte{0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57}, - []byte{0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67, 0x42}, - []byte{0x59, 0xC6, 0x82, 0x45, 0xEB, 0x05, 0x28, 0x2B}}, - { - []byte{0x01, 0x31, 0xD9, 0x61, 0x9D, 0xC1, 0x37, 0x6E}, - []byte{0x5C, 0xD5, 0x4C, 0xA8, 0x3D, 0xEF, 0x57, 0xDA}, - []byte{0xB1, 0xB8, 0xCC, 0x0B, 0x25, 0x0F, 0x09, 0xA0}}, - { - []byte{0x07, 0xA1, 0x13, 0x3E, 0x4A, 0x0B, 0x26, 0x86}, - []byte{0x02, 0x48, 0xD4, 0x38, 0x06, 0xF6, 0x71, 0x72}, - []byte{0x17, 0x30, 0xE5, 0x77, 0x8B, 0xEA, 0x1D, 0xA4}}, - { - []byte{0x38, 0x49, 0x67, 0x4C, 0x26, 0x02, 0x31, 0x9E}, - []byte{0x51, 0x45, 0x4B, 0x58, 0x2D, 0xDF, 0x44, 0x0A}, - []byte{0xA2, 0x5E, 0x78, 0x56, 0xCF, 0x26, 0x51, 0xEB}}, - { - []byte{0x04, 0xB9, 0x15, 0xBA, 0x43, 0xFE, 0xB5, 0xB6}, - []byte{0x42, 0xFD, 0x44, 0x30, 0x59, 0x57, 0x7F, 0xA2}, - []byte{0x35, 0x38, 0x82, 0xB1, 0x09, 0xCE, 0x8F, 0x1A}}, - { - []byte{0x01, 0x13, 0xB9, 0x70, 0xFD, 0x34, 0xF2, 0xCE}, - []byte{0x05, 0x9B, 0x5E, 0x08, 0x51, 0xCF, 0x14, 0x3A}, - []byte{0x48, 0xF4, 0xD0, 0x88, 0x4C, 0x37, 0x99, 0x18}}, - { - []byte{0x01, 0x70, 0xF1, 0x75, 0x46, 0x8F, 0xB5, 0xE6}, - []byte{0x07, 0x56, 0xD8, 0xE0, 0x77, 0x47, 0x61, 0xD2}, - []byte{0x43, 0x21, 0x93, 0xB7, 0x89, 0x51, 0xFC, 0x98}}, - { - []byte{0x43, 0x29, 0x7F, 0xAD, 0x38, 0xE3, 0x73, 0xFE}, - []byte{0x76, 0x25, 0x14, 0xB8, 0x29, 0xBF, 0x48, 0x6A}, - []byte{0x13, 0xF0, 0x41, 0x54, 0xD6, 0x9D, 0x1A, 0xE5}}, - { - []byte{0x07, 0xA7, 0x13, 0x70, 0x45, 0xDA, 0x2A, 0x16}, - []byte{0x3B, 0xDD, 0x11, 0x90, 0x49, 0x37, 0x28, 0x02}, - []byte{0x2E, 0xED, 0xDA, 0x93, 0xFF, 0xD3, 0x9C, 0x79}}, - { - []byte{0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F}, - []byte{0x26, 0x95, 0x5F, 0x68, 0x35, 0xAF, 0x60, 0x9A}, - []byte{0xD8, 0x87, 0xE0, 0x39, 0x3C, 0x2D, 0xA6, 0xE3}}, - { - []byte{0x37, 0xD0, 0x6B, 0xB5, 0x16, 0xCB, 0x75, 0x46}, - []byte{0x16, 0x4D, 0x5E, 0x40, 0x4F, 0x27, 0x52, 0x32}, - []byte{0x5F, 0x99, 0xD0, 0x4F, 0x5B, 0x16, 0x39, 0x69}}, - { - []byte{0x1F, 0x08, 0x26, 0x0D, 0x1A, 0xC2, 0x46, 0x5E}, - []byte{0x6B, 0x05, 0x6E, 0x18, 0x75, 0x9F, 0x5C, 0xCA}, - []byte{0x4A, 0x05, 0x7A, 0x3B, 0x24, 0xD3, 0x97, 0x7B}}, - { - []byte{0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76}, - []byte{0x00, 0x4B, 0xD6, 0xEF, 0x09, 0x17, 0x60, 0x62}, - []byte{0x45, 0x20, 0x31, 0xC1, 0xE4, 0xFA, 0xDA, 0x8E}}, - { - []byte{0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xB0, 0x07}, - []byte{0x48, 0x0D, 0x39, 0x00, 0x6E, 0xE7, 0x62, 0xF2}, - []byte{0x75, 0x55, 0xAE, 0x39, 0xF5, 0x9B, 0x87, 0xBD}}, - { - []byte{0x49, 0x79, 0x3E, 0xBC, 0x79, 0xB3, 0x25, 0x8F}, - []byte{0x43, 0x75, 0x40, 0xC8, 0x69, 0x8F, 0x3C, 0xFA}, - []byte{0x53, 0xC5, 0x5F, 0x9C, 0xB4, 0x9F, 0xC0, 0x19}}, - { - []byte{0x4F, 0xB0, 0x5E, 0x15, 0x15, 0xAB, 0x73, 0xA7}, - []byte{0x07, 0x2D, 0x43, 0xA0, 0x77, 0x07, 0x52, 0x92}, - []byte{0x7A, 0x8E, 0x7B, 0xFA, 0x93, 0x7E, 0x89, 0xA3}}, - { - []byte{0x49, 0xE9, 0x5D, 0x6D, 0x4C, 0xA2, 0x29, 0xBF}, - []byte{0x02, 0xFE, 0x55, 0x77, 0x81, 0x17, 0xF1, 0x2A}, - []byte{0xCF, 0x9C, 0x5D, 0x7A, 0x49, 0x86, 0xAD, 0xB5}}, - { - []byte{0x01, 0x83, 0x10, 0xDC, 0x40, 0x9B, 0x26, 0xD6}, - []byte{0x1D, 0x9D, 0x5C, 0x50, 0x18, 0xF7, 0x28, 0xC2}, - []byte{0xD1, 0xAB, 0xB2, 0x90, 0x65, 0x8B, 0xC7, 0x78}}, - { - []byte{0x1C, 0x58, 0x7F, 0x1C, 0x13, 0x92, 0x4F, 0xEF}, - []byte{0x30, 0x55, 0x32, 0x28, 0x6D, 0x6F, 0x29, 0x5A}, - []byte{0x55, 0xCB, 0x37, 0x74, 0xD1, 0x3E, 0xF2, 0x01}}, - { - []byte{0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - []byte{0xFA, 0x34, 0xEC, 0x48, 0x47, 0xB2, 0x68, 0xB2}}, - { - []byte{0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E}, - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - []byte{0xA7, 0x90, 0x79, 0x51, 0x08, 0xEA, 0x3C, 0xAE}}, - { - []byte{0xE0, 0xFE, 0xE0, 0xFE, 0xF1, 0xFE, 0xF1, 0xFE}, - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - []byte{0xC3, 0x9E, 0x07, 0x2D, 0x9F, 0xAC, 0x63, 0x1D}}, - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, - []byte{0x01, 0x49, 0x33, 0xE0, 0xCD, 0xAF, 0xF6, 0xE4}}, - { - []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0xF2, 0x1E, 0x9A, 0x77, 0xB7, 0x1C, 0x49, 0xBC}}, - { - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x24, 0x59, 0x46, 0x88, 0x57, 0x54, 0x36, 0x9A}}, - { - []byte{0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10}, - []byte{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, - []byte{0x6B, 0x5C, 0x5A, 0x9C, 0x5D, 0x9E, 0x0A, 0x5A}}, -} - -func TestCipherEncrypt(t *testing.T) { - for i, tt := range encryptTests { - c, err := NewCipher(tt.key) - if err != nil { - t.Errorf("NewCipher(%d bytes) = %s", len(tt.key), err) - continue - } - ct := make([]byte, len(tt.out)) - c.Encrypt(ct, tt.in) - for j, v := range ct { - if v != tt.out[j] { - t.Errorf("Cipher.Encrypt, test vector #%d: cipher-text[%d] = %#x, expected %#x", i, j, v, tt.out[j]) - break - } - } - } -} - -func TestCipherDecrypt(t *testing.T) { - for i, tt := range encryptTests { - c, err := NewCipher(tt.key) - if err != nil { - t.Errorf("NewCipher(%d bytes) = %s", len(tt.key), err) - continue - } - pt := make([]byte, len(tt.in)) - c.Decrypt(pt, tt.out) - for j, v := range pt { - if v != tt.in[j] { - t.Errorf("Cipher.Decrypt, test vector #%d: plain-text[%d] = %#x, expected %#x", i, j, v, tt.in[j]) - break - } - } - } -} - -func TestSaltedCipherKeyLength(t *testing.T) { - if _, err := NewSaltedCipher(nil, []byte{'a'}); err != KeySizeError(0) { - t.Errorf("NewSaltedCipher with short key, gave error %#v, expected %#v", err, KeySizeError(0)) - } - - // A 57-byte key. One over the typical blowfish restriction. - key := []byte("012345678901234567890123456789012345678901234567890123456") - if _, err := NewSaltedCipher(key, []byte{'a'}); err != nil { - t.Errorf("NewSaltedCipher with long key, gave error %#v", err) - } -} - -// Test vectors generated with Blowfish from OpenSSH. -var saltedVectors = [][8]byte{ - {0x0c, 0x82, 0x3b, 0x7b, 0x8d, 0x01, 0x4b, 0x7e}, - {0xd1, 0xe1, 0x93, 0xf0, 0x70, 0xa6, 0xdb, 0x12}, - {0xfc, 0x5e, 0xba, 0xde, 0xcb, 0xf8, 0x59, 0xad}, - {0x8a, 0x0c, 0x76, 0xe7, 0xdd, 0x2c, 0xd3, 0xa8}, - {0x2c, 0xcb, 0x7b, 0xee, 0xac, 0x7b, 0x7f, 0xf8}, - {0xbb, 0xf6, 0x30, 0x6f, 0xe1, 0x5d, 0x62, 0xbf}, - {0x97, 0x1e, 0xc1, 0x3d, 0x3d, 0xe0, 0x11, 0xe9}, - {0x06, 0xd7, 0x4d, 0xb1, 0x80, 0xa3, 0xb1, 0x38}, - {0x67, 0xa1, 0xa9, 0x75, 0x0e, 0x5b, 0xc6, 0xb4}, - {0x51, 0x0f, 0x33, 0x0e, 0x4f, 0x67, 0xd2, 0x0c}, - {0xf1, 0x73, 0x7e, 0xd8, 0x44, 0xea, 0xdb, 0xe5}, - {0x14, 0x0e, 0x16, 0xce, 0x7f, 0x4a, 0x9c, 0x7b}, - {0x4b, 0xfe, 0x43, 0xfd, 0xbf, 0x36, 0x04, 0x47}, - {0xb1, 0xeb, 0x3e, 0x15, 0x36, 0xa7, 0xbb, 0xe2}, - {0x6d, 0x0b, 0x41, 0xdd, 0x00, 0x98, 0x0b, 0x19}, - {0xd3, 0xce, 0x45, 0xce, 0x1d, 0x56, 0xb7, 0xfc}, - {0xd9, 0xf0, 0xfd, 0xda, 0xc0, 0x23, 0xb7, 0x93}, - {0x4c, 0x6f, 0xa1, 0xe4, 0x0c, 0xa8, 0xca, 0x57}, - {0xe6, 0x2f, 0x28, 0xa7, 0x0c, 0x94, 0x0d, 0x08}, - {0x8f, 0xe3, 0xf0, 0xb6, 0x29, 0xe3, 0x44, 0x03}, - {0xff, 0x98, 0xdd, 0x04, 0x45, 0xb4, 0x6d, 0x1f}, - {0x9e, 0x45, 0x4d, 0x18, 0x40, 0x53, 0xdb, 0xef}, - {0xb7, 0x3b, 0xef, 0x29, 0xbe, 0xa8, 0x13, 0x71}, - {0x02, 0x54, 0x55, 0x41, 0x8e, 0x04, 0xfc, 0xad}, - {0x6a, 0x0a, 0xee, 0x7c, 0x10, 0xd9, 0x19, 0xfe}, - {0x0a, 0x22, 0xd9, 0x41, 0xcc, 0x23, 0x87, 0x13}, - {0x6e, 0xff, 0x1f, 0xff, 0x36, 0x17, 0x9c, 0xbe}, - {0x79, 0xad, 0xb7, 0x40, 0xf4, 0x9f, 0x51, 0xa6}, - {0x97, 0x81, 0x99, 0xa4, 0xde, 0x9e, 0x9f, 0xb6}, - {0x12, 0x19, 0x7a, 0x28, 0xd0, 0xdc, 0xcc, 0x92}, - {0x81, 0xda, 0x60, 0x1e, 0x0e, 0xdd, 0x65, 0x56}, - {0x7d, 0x76, 0x20, 0xb2, 0x73, 0xc9, 0x9e, 0xee}, -} - -func TestSaltedCipher(t *testing.T) { - var key, salt [32]byte - for i := range key { - key[i] = byte(i) - salt[i] = byte(i + 32) - } - for i, v := range saltedVectors { - c, err := NewSaltedCipher(key[:], salt[:i]) - if err != nil { - t.Fatal(err) - } - var buf [8]byte - c.Encrypt(buf[:], buf[:]) - if v != buf { - t.Errorf("%d: expected %x, got %x", i, v, buf) - } - } -} - -func BenchmarkExpandKeyWithSalt(b *testing.B) { - key := make([]byte, 32) - salt := make([]byte, 16) - c, _ := NewCipher(key) - for i := 0; i < b.N; i++ { - expandKeyWithSalt(key, salt, c) - } -} - -func BenchmarkExpandKey(b *testing.B) { - key := make([]byte, 32) - c, _ := NewCipher(key) - for i := 0; i < b.N; i++ { - ExpandKey(key, c) - } -} diff --git a/vendor/golang.org/x/crypto/blowfish/cipher.go b/vendor/golang.org/x/crypto/blowfish/cipher.go deleted file mode 100644 index 2641dadd..00000000 --- a/vendor/golang.org/x/crypto/blowfish/cipher.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. -package blowfish // import "golang.org/x/crypto/blowfish" - -// The code is a port of Bruce Schneier's C implementation. -// See https://www.schneier.com/blowfish.html. - -import "strconv" - -// The Blowfish block size in bytes. -const BlockSize = 8 - -// A Cipher is an instance of Blowfish encryption using a particular key. -type Cipher struct { - p [18]uint32 - s0, s1, s2, s3 [256]uint32 -} - -type KeySizeError int - -func (k KeySizeError) Error() string { - return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k)) -} - -// NewCipher creates and returns a Cipher. -// The key argument should be the Blowfish key, from 1 to 56 bytes. -func NewCipher(key []byte) (*Cipher, error) { - var result Cipher - if k := len(key); k < 1 || k > 56 { - return nil, KeySizeError(k) - } - initCipher(&result) - ExpandKey(key, &result) - return &result, nil -} - -// NewSaltedCipher creates a returns a Cipher that folds a salt into its key -// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is -// sufficient and desirable. For bcrypt compatibility, the key can be over 56 -// bytes. -func NewSaltedCipher(key, salt []byte) (*Cipher, error) { - if len(salt) == 0 { - return NewCipher(key) - } - var result Cipher - if k := len(key); k < 1 { - return nil, KeySizeError(k) - } - initCipher(&result) - expandKeyWithSalt(key, salt, &result) - return &result, nil -} - -// BlockSize returns the Blowfish block size, 8 bytes. -// It is necessary to satisfy the Block interface in the -// package "crypto/cipher". -func (c *Cipher) BlockSize() int { return BlockSize } - -// Encrypt encrypts the 8-byte buffer src using the key k -// and stores the result in dst. -// Note that for amounts of data larger than a block, -// it is not safe to just call Encrypt on successive blocks; -// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). -func (c *Cipher) Encrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - l, r = encryptBlock(l, r, c) - dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) - dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) -} - -// Decrypt decrypts the 8-byte buffer src using the key k -// and stores the result in dst. -func (c *Cipher) Decrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - l, r = decryptBlock(l, r, c) - dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) - dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) -} - -func initCipher(c *Cipher) { - copy(c.p[0:], p[0:]) - copy(c.s0[0:], s0[0:]) - copy(c.s1[0:], s1[0:]) - copy(c.s2[0:], s2[0:]) - copy(c.s3[0:], s3[0:]) -} diff --git a/vendor/golang.org/x/crypto/blowfish/const.go b/vendor/golang.org/x/crypto/blowfish/const.go deleted file mode 100644 index d0407759..00000000 --- a/vendor/golang.org/x/crypto/blowfish/const.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// The startup permutation array and substitution boxes. -// They are the hexadecimal digits of PI; see: -// https://www.schneier.com/code/constants.txt. - -package blowfish - -var s0 = [256]uint32{ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, - 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, - 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, - 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, - 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, - 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, - 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, - 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, - 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, - 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, - 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, - 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, - 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, - 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, - 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, - 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, - 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, - 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, - 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, - 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, - 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, - 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, - 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, - 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, - 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, - 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, - 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, - 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, - 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, - 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, - 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, - 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, - 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, -} - -var s1 = [256]uint32{ - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, - 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, - 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, - 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, - 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, - 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, - 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, - 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, - 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, - 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, - 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, - 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, - 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, - 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, - 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, - 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, - 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, - 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, - 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, - 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, - 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, - 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, - 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, - 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, - 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, - 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, - 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, - 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, - 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, - 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, - 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, - 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, - 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, -} - -var s2 = [256]uint32{ - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, - 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, - 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, - 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, - 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, - 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, - 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, - 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, - 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, - 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, - 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, - 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, - 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, - 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, - 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, - 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, - 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, - 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, - 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, - 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, - 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, - 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, - 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, - 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, - 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, - 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, - 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, - 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, - 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, - 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, - 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, - 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, - 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, -} - -var s3 = [256]uint32{ - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, - 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, - 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, - 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, - 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, - 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, - 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, - 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, - 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, - 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, - 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, - 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, - 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, - 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, - 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, - 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, - 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, - 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, - 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, - 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, - 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, - 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, - 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, - 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, - 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, - 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, - 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, - 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, - 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, - 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, - 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, - 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, - 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, -} - -var p = [18]uint32{ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, - 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, - 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, -} diff --git a/vendor/golang.org/x/crypto/bn256/bn256.go b/vendor/golang.org/x/crypto/bn256/bn256.go deleted file mode 100644 index f88f3fc3..00000000 --- a/vendor/golang.org/x/crypto/bn256/bn256.go +++ /dev/null @@ -1,408 +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 bn256 implements a particular bilinear group. -// -// Bilinear groups are the basis of many of the new cryptographic protocols -// that have been proposed over the past decade. They consist of a triplet of -// groups (G₁, G₂ and GT) such that there exists a function e(g₁ˣ,g₂ʸ)=gTˣʸ -// (where gₓ is a generator of the respective group). That function is called -// a pairing function. -// -// This package specifically implements the Optimal Ate pairing over a 256-bit -// Barreto-Naehrig curve as described in -// http://cryptojedi.org/papers/dclxvi-20100714.pdf. Its output is compatible -// with the implementation described in that paper. -// -// (This package previously claimed to operate at a 128-bit security level. -// However, recent improvements in attacks mean that is no longer true. See -// https://moderncrypto.org/mail-archive/curves/2016/000740.html.) -package bn256 // import "golang.org/x/crypto/bn256" - -import ( - "crypto/rand" - "io" - "math/big" -) - -// BUG(agl): this implementation is not constant time. -// TODO(agl): keep GF(p²) elements in Mongomery form. - -// G1 is an abstract cyclic group. The zero value is suitable for use as the -// output of an operation, but cannot be used as an input. -type G1 struct { - p *curvePoint -} - -// RandomG1 returns x and g₁ˣ where x is a random, non-zero number read from r. -func RandomG1(r io.Reader) (*big.Int, *G1, error) { - var k *big.Int - var err error - - for { - k, err = rand.Int(r, Order) - if err != nil { - return nil, nil, err - } - if k.Sign() > 0 { - break - } - } - - return k, new(G1).ScalarBaseMult(k), nil -} - -func (e *G1) String() string { - return "bn256.G1" + e.p.String() -} - -// ScalarBaseMult sets e to g*k where g is the generator of the group and -// then returns e. -func (e *G1) ScalarBaseMult(k *big.Int) *G1 { - if e.p == nil { - e.p = newCurvePoint(nil) - } - e.p.Mul(curveGen, k, new(bnPool)) - return e -} - -// ScalarMult sets e to a*k and then returns e. -func (e *G1) ScalarMult(a *G1, k *big.Int) *G1 { - if e.p == nil { - e.p = newCurvePoint(nil) - } - e.p.Mul(a.p, k, new(bnPool)) - return e -} - -// Add sets e to a+b and then returns e. -// BUG(agl): this function is not complete: a==b fails. -func (e *G1) Add(a, b *G1) *G1 { - if e.p == nil { - e.p = newCurvePoint(nil) - } - e.p.Add(a.p, b.p, new(bnPool)) - return e -} - -// Neg sets e to -a and then returns e. -func (e *G1) Neg(a *G1) *G1 { - if e.p == nil { - e.p = newCurvePoint(nil) - } - e.p.Negative(a.p) - return e -} - -// Marshal converts n to a byte slice. -func (e *G1) Marshal() []byte { - e.p.MakeAffine(nil) - - xBytes := new(big.Int).Mod(e.p.x, p).Bytes() - yBytes := new(big.Int).Mod(e.p.y, p).Bytes() - - // Each value is a 256-bit number. - const numBytes = 256 / 8 - - ret := make([]byte, numBytes*2) - copy(ret[1*numBytes-len(xBytes):], xBytes) - copy(ret[2*numBytes-len(yBytes):], yBytes) - - return ret -} - -// Unmarshal sets e to the result of converting the output of Marshal back into -// a group element and then returns e. -func (e *G1) Unmarshal(m []byte) (*G1, bool) { - // Each value is a 256-bit number. - const numBytes = 256 / 8 - - if len(m) != 2*numBytes { - return nil, false - } - - if e.p == nil { - e.p = newCurvePoint(nil) - } - - e.p.x.SetBytes(m[0*numBytes : 1*numBytes]) - e.p.y.SetBytes(m[1*numBytes : 2*numBytes]) - - if e.p.x.Sign() == 0 && e.p.y.Sign() == 0 { - // This is the point at infinity. - e.p.y.SetInt64(1) - e.p.z.SetInt64(0) - e.p.t.SetInt64(0) - } else { - e.p.z.SetInt64(1) - e.p.t.SetInt64(1) - - if !e.p.IsOnCurve() { - return nil, false - } - } - - return e, true -} - -// G2 is an abstract cyclic group. The zero value is suitable for use as the -// output of an operation, but cannot be used as an input. -type G2 struct { - p *twistPoint -} - -// RandomG1 returns x and g₂ˣ where x is a random, non-zero number read from r. -func RandomG2(r io.Reader) (*big.Int, *G2, error) { - var k *big.Int - var err error - - for { - k, err = rand.Int(r, Order) - if err != nil { - return nil, nil, err - } - if k.Sign() > 0 { - break - } - } - - return k, new(G2).ScalarBaseMult(k), nil -} - -func (e *G2) String() string { - return "bn256.G2" + e.p.String() -} - -// ScalarBaseMult sets e to g*k where g is the generator of the group and -// then returns out. -func (e *G2) ScalarBaseMult(k *big.Int) *G2 { - if e.p == nil { - e.p = newTwistPoint(nil) - } - e.p.Mul(twistGen, k, new(bnPool)) - return e -} - -// ScalarMult sets e to a*k and then returns e. -func (e *G2) ScalarMult(a *G2, k *big.Int) *G2 { - if e.p == nil { - e.p = newTwistPoint(nil) - } - e.p.Mul(a.p, k, new(bnPool)) - return e -} - -// Add sets e to a+b and then returns e. -// BUG(agl): this function is not complete: a==b fails. -func (e *G2) Add(a, b *G2) *G2 { - if e.p == nil { - e.p = newTwistPoint(nil) - } - e.p.Add(a.p, b.p, new(bnPool)) - return e -} - -// Marshal converts n into a byte slice. -func (n *G2) Marshal() []byte { - n.p.MakeAffine(nil) - - xxBytes := new(big.Int).Mod(n.p.x.x, p).Bytes() - xyBytes := new(big.Int).Mod(n.p.x.y, p).Bytes() - yxBytes := new(big.Int).Mod(n.p.y.x, p).Bytes() - yyBytes := new(big.Int).Mod(n.p.y.y, p).Bytes() - - // Each value is a 256-bit number. - const numBytes = 256 / 8 - - ret := make([]byte, numBytes*4) - copy(ret[1*numBytes-len(xxBytes):], xxBytes) - copy(ret[2*numBytes-len(xyBytes):], xyBytes) - copy(ret[3*numBytes-len(yxBytes):], yxBytes) - copy(ret[4*numBytes-len(yyBytes):], yyBytes) - - return ret -} - -// Unmarshal sets e to the result of converting the output of Marshal back into -// a group element and then returns e. -func (e *G2) Unmarshal(m []byte) (*G2, bool) { - // Each value is a 256-bit number. - const numBytes = 256 / 8 - - if len(m) != 4*numBytes { - return nil, false - } - - if e.p == nil { - e.p = newTwistPoint(nil) - } - - e.p.x.x.SetBytes(m[0*numBytes : 1*numBytes]) - e.p.x.y.SetBytes(m[1*numBytes : 2*numBytes]) - e.p.y.x.SetBytes(m[2*numBytes : 3*numBytes]) - e.p.y.y.SetBytes(m[3*numBytes : 4*numBytes]) - - if e.p.x.x.Sign() == 0 && - e.p.x.y.Sign() == 0 && - e.p.y.x.Sign() == 0 && - e.p.y.y.Sign() == 0 { - // This is the point at infinity. - e.p.y.SetOne() - e.p.z.SetZero() - e.p.t.SetZero() - } else { - e.p.z.SetOne() - e.p.t.SetOne() - - if !e.p.IsOnCurve() { - return nil, false - } - } - - return e, true -} - -// GT is an abstract cyclic group. The zero value is suitable for use as the -// output of an operation, but cannot be used as an input. -type GT struct { - p *gfP12 -} - -func (g *GT) String() string { - return "bn256.GT" + g.p.String() -} - -// ScalarMult sets e to a*k and then returns e. -func (e *GT) ScalarMult(a *GT, k *big.Int) *GT { - if e.p == nil { - e.p = newGFp12(nil) - } - e.p.Exp(a.p, k, new(bnPool)) - return e -} - -// Add sets e to a+b and then returns e. -func (e *GT) Add(a, b *GT) *GT { - if e.p == nil { - e.p = newGFp12(nil) - } - e.p.Mul(a.p, b.p, new(bnPool)) - return e -} - -// Neg sets e to -a and then returns e. -func (e *GT) Neg(a *GT) *GT { - if e.p == nil { - e.p = newGFp12(nil) - } - e.p.Invert(a.p, new(bnPool)) - return e -} - -// Marshal converts n into a byte slice. -func (n *GT) Marshal() []byte { - n.p.Minimal() - - xxxBytes := n.p.x.x.x.Bytes() - xxyBytes := n.p.x.x.y.Bytes() - xyxBytes := n.p.x.y.x.Bytes() - xyyBytes := n.p.x.y.y.Bytes() - xzxBytes := n.p.x.z.x.Bytes() - xzyBytes := n.p.x.z.y.Bytes() - yxxBytes := n.p.y.x.x.Bytes() - yxyBytes := n.p.y.x.y.Bytes() - yyxBytes := n.p.y.y.x.Bytes() - yyyBytes := n.p.y.y.y.Bytes() - yzxBytes := n.p.y.z.x.Bytes() - yzyBytes := n.p.y.z.y.Bytes() - - // Each value is a 256-bit number. - const numBytes = 256 / 8 - - ret := make([]byte, numBytes*12) - copy(ret[1*numBytes-len(xxxBytes):], xxxBytes) - copy(ret[2*numBytes-len(xxyBytes):], xxyBytes) - copy(ret[3*numBytes-len(xyxBytes):], xyxBytes) - copy(ret[4*numBytes-len(xyyBytes):], xyyBytes) - copy(ret[5*numBytes-len(xzxBytes):], xzxBytes) - copy(ret[6*numBytes-len(xzyBytes):], xzyBytes) - copy(ret[7*numBytes-len(yxxBytes):], yxxBytes) - copy(ret[8*numBytes-len(yxyBytes):], yxyBytes) - copy(ret[9*numBytes-len(yyxBytes):], yyxBytes) - copy(ret[10*numBytes-len(yyyBytes):], yyyBytes) - copy(ret[11*numBytes-len(yzxBytes):], yzxBytes) - copy(ret[12*numBytes-len(yzyBytes):], yzyBytes) - - return ret -} - -// Unmarshal sets e to the result of converting the output of Marshal back into -// a group element and then returns e. -func (e *GT) Unmarshal(m []byte) (*GT, bool) { - // Each value is a 256-bit number. - const numBytes = 256 / 8 - - if len(m) != 12*numBytes { - return nil, false - } - - if e.p == nil { - e.p = newGFp12(nil) - } - - e.p.x.x.x.SetBytes(m[0*numBytes : 1*numBytes]) - e.p.x.x.y.SetBytes(m[1*numBytes : 2*numBytes]) - e.p.x.y.x.SetBytes(m[2*numBytes : 3*numBytes]) - e.p.x.y.y.SetBytes(m[3*numBytes : 4*numBytes]) - e.p.x.z.x.SetBytes(m[4*numBytes : 5*numBytes]) - e.p.x.z.y.SetBytes(m[5*numBytes : 6*numBytes]) - e.p.y.x.x.SetBytes(m[6*numBytes : 7*numBytes]) - e.p.y.x.y.SetBytes(m[7*numBytes : 8*numBytes]) - e.p.y.y.x.SetBytes(m[8*numBytes : 9*numBytes]) - e.p.y.y.y.SetBytes(m[9*numBytes : 10*numBytes]) - e.p.y.z.x.SetBytes(m[10*numBytes : 11*numBytes]) - e.p.y.z.y.SetBytes(m[11*numBytes : 12*numBytes]) - - return e, true -} - -// Pair calculates an Optimal Ate pairing. -func Pair(g1 *G1, g2 *G2) *GT { - return >{optimalAte(g2.p, g1.p, new(bnPool))} -} - -// bnPool implements a tiny cache of *big.Int objects that's used to reduce the -// number of allocations made during processing. -type bnPool struct { - bns []*big.Int - count int -} - -func (pool *bnPool) Get() *big.Int { - if pool == nil { - return new(big.Int) - } - - pool.count++ - l := len(pool.bns) - if l == 0 { - return new(big.Int) - } - - bn := pool.bns[l-1] - pool.bns = pool.bns[:l-1] - return bn -} - -func (pool *bnPool) Put(bn *big.Int) { - if pool == nil { - return - } - pool.bns = append(pool.bns, bn) - pool.count-- -} - -func (pool *bnPool) Count() int { - return pool.count -} diff --git a/vendor/golang.org/x/crypto/bn256/bn256_test.go b/vendor/golang.org/x/crypto/bn256/bn256_test.go deleted file mode 100644 index 1cec3884..00000000 --- a/vendor/golang.org/x/crypto/bn256/bn256_test.go +++ /dev/null @@ -1,304 +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 bn256 - -import ( - "bytes" - "crypto/rand" - "math/big" - "testing" -) - -func TestGFp2Invert(t *testing.T) { - pool := new(bnPool) - - a := newGFp2(pool) - a.x.SetString("23423492374", 10) - a.y.SetString("12934872398472394827398470", 10) - - inv := newGFp2(pool) - inv.Invert(a, pool) - - b := newGFp2(pool).Mul(inv, a, pool) - if b.x.Int64() != 0 || b.y.Int64() != 1 { - t.Fatalf("bad result for a^-1*a: %s %s", b.x, b.y) - } - - a.Put(pool) - b.Put(pool) - inv.Put(pool) - - if c := pool.Count(); c > 0 { - t.Errorf("Pool count non-zero: %d\n", c) - } -} - -func isZero(n *big.Int) bool { - return new(big.Int).Mod(n, p).Int64() == 0 -} - -func isOne(n *big.Int) bool { - return new(big.Int).Mod(n, p).Int64() == 1 -} - -func TestGFp6Invert(t *testing.T) { - pool := new(bnPool) - - a := newGFp6(pool) - a.x.x.SetString("239487238491", 10) - a.x.y.SetString("2356249827341", 10) - a.y.x.SetString("082659782", 10) - a.y.y.SetString("182703523765", 10) - a.z.x.SetString("978236549263", 10) - a.z.y.SetString("64893242", 10) - - inv := newGFp6(pool) - inv.Invert(a, pool) - - b := newGFp6(pool).Mul(inv, a, pool) - if !isZero(b.x.x) || - !isZero(b.x.y) || - !isZero(b.y.x) || - !isZero(b.y.y) || - !isZero(b.z.x) || - !isOne(b.z.y) { - t.Fatalf("bad result for a^-1*a: %s", b) - } - - a.Put(pool) - b.Put(pool) - inv.Put(pool) - - if c := pool.Count(); c > 0 { - t.Errorf("Pool count non-zero: %d\n", c) - } -} - -func TestGFp12Invert(t *testing.T) { - pool := new(bnPool) - - a := newGFp12(pool) - a.x.x.x.SetString("239846234862342323958623", 10) - a.x.x.y.SetString("2359862352529835623", 10) - a.x.y.x.SetString("928836523", 10) - a.x.y.y.SetString("9856234", 10) - a.x.z.x.SetString("235635286", 10) - a.x.z.y.SetString("5628392833", 10) - a.y.x.x.SetString("252936598265329856238956532167968", 10) - a.y.x.y.SetString("23596239865236954178968", 10) - a.y.y.x.SetString("95421692834", 10) - a.y.y.y.SetString("236548", 10) - a.y.z.x.SetString("924523", 10) - a.y.z.y.SetString("12954623", 10) - - inv := newGFp12(pool) - inv.Invert(a, pool) - - b := newGFp12(pool).Mul(inv, a, pool) - if !isZero(b.x.x.x) || - !isZero(b.x.x.y) || - !isZero(b.x.y.x) || - !isZero(b.x.y.y) || - !isZero(b.x.z.x) || - !isZero(b.x.z.y) || - !isZero(b.y.x.x) || - !isZero(b.y.x.y) || - !isZero(b.y.y.x) || - !isZero(b.y.y.y) || - !isZero(b.y.z.x) || - !isOne(b.y.z.y) { - t.Fatalf("bad result for a^-1*a: %s", b) - } - - a.Put(pool) - b.Put(pool) - inv.Put(pool) - - if c := pool.Count(); c > 0 { - t.Errorf("Pool count non-zero: %d\n", c) - } -} - -func TestCurveImpl(t *testing.T) { - pool := new(bnPool) - - g := &curvePoint{ - pool.Get().SetInt64(1), - pool.Get().SetInt64(-2), - pool.Get().SetInt64(1), - pool.Get().SetInt64(0), - } - - x := pool.Get().SetInt64(32498273234) - X := newCurvePoint(pool).Mul(g, x, pool) - - y := pool.Get().SetInt64(98732423523) - Y := newCurvePoint(pool).Mul(g, y, pool) - - s1 := newCurvePoint(pool).Mul(X, y, pool).MakeAffine(pool) - s2 := newCurvePoint(pool).Mul(Y, x, pool).MakeAffine(pool) - - if s1.x.Cmp(s2.x) != 0 || - s2.x.Cmp(s1.x) != 0 { - t.Errorf("DH points don't match: (%s, %s) (%s, %s)", s1.x, s1.y, s2.x, s2.y) - } - - pool.Put(x) - X.Put(pool) - pool.Put(y) - Y.Put(pool) - s1.Put(pool) - s2.Put(pool) - g.Put(pool) - - if c := pool.Count(); c > 0 { - t.Errorf("Pool count non-zero: %d\n", c) - } -} - -func TestOrderG1(t *testing.T) { - g := new(G1).ScalarBaseMult(Order) - if !g.p.IsInfinity() { - t.Error("G1 has incorrect order") - } - - one := new(G1).ScalarBaseMult(new(big.Int).SetInt64(1)) - g.Add(g, one) - g.p.MakeAffine(nil) - if g.p.x.Cmp(one.p.x) != 0 || g.p.y.Cmp(one.p.y) != 0 { - t.Errorf("1+0 != 1 in G1") - } -} - -func TestOrderG2(t *testing.T) { - g := new(G2).ScalarBaseMult(Order) - if !g.p.IsInfinity() { - t.Error("G2 has incorrect order") - } - - one := new(G2).ScalarBaseMult(new(big.Int).SetInt64(1)) - g.Add(g, one) - g.p.MakeAffine(nil) - if g.p.x.x.Cmp(one.p.x.x) != 0 || - g.p.x.y.Cmp(one.p.x.y) != 0 || - g.p.y.x.Cmp(one.p.y.x) != 0 || - g.p.y.y.Cmp(one.p.y.y) != 0 { - t.Errorf("1+0 != 1 in G2") - } -} - -func TestOrderGT(t *testing.T) { - gt := Pair(&G1{curveGen}, &G2{twistGen}) - g := new(GT).ScalarMult(gt, Order) - if !g.p.IsOne() { - t.Error("GT has incorrect order") - } -} - -func TestBilinearity(t *testing.T) { - for i := 0; i < 2; i++ { - a, p1, _ := RandomG1(rand.Reader) - b, p2, _ := RandomG2(rand.Reader) - e1 := Pair(p1, p2) - - e2 := Pair(&G1{curveGen}, &G2{twistGen}) - e2.ScalarMult(e2, a) - e2.ScalarMult(e2, b) - - minusE2 := new(GT).Neg(e2) - e1.Add(e1, minusE2) - - if !e1.p.IsOne() { - t.Fatalf("bad pairing result: %s", e1) - } - } -} - -func TestG1Marshal(t *testing.T) { - g := new(G1).ScalarBaseMult(new(big.Int).SetInt64(1)) - form := g.Marshal() - _, ok := new(G1).Unmarshal(form) - if !ok { - t.Fatalf("failed to unmarshal") - } - - g.ScalarBaseMult(Order) - form = g.Marshal() - g2, ok := new(G1).Unmarshal(form) - if !ok { - t.Fatalf("failed to unmarshal ∞") - } - if !g2.p.IsInfinity() { - t.Fatalf("∞ unmarshaled incorrectly") - } -} - -func TestG2Marshal(t *testing.T) { - g := new(G2).ScalarBaseMult(new(big.Int).SetInt64(1)) - form := g.Marshal() - _, ok := new(G2).Unmarshal(form) - if !ok { - t.Fatalf("failed to unmarshal") - } - - g.ScalarBaseMult(Order) - form = g.Marshal() - g2, ok := new(G2).Unmarshal(form) - if !ok { - t.Fatalf("failed to unmarshal ∞") - } - if !g2.p.IsInfinity() { - t.Fatalf("∞ unmarshaled incorrectly") - } -} - -func TestG1Identity(t *testing.T) { - g := new(G1).ScalarBaseMult(new(big.Int).SetInt64(0)) - if !g.p.IsInfinity() { - t.Error("failure") - } -} - -func TestG2Identity(t *testing.T) { - g := new(G2).ScalarBaseMult(new(big.Int).SetInt64(0)) - if !g.p.IsInfinity() { - t.Error("failure") - } -} - -func TestTripartiteDiffieHellman(t *testing.T) { - a, _ := rand.Int(rand.Reader, Order) - b, _ := rand.Int(rand.Reader, Order) - c, _ := rand.Int(rand.Reader, Order) - - pa, _ := new(G1).Unmarshal(new(G1).ScalarBaseMult(a).Marshal()) - qa, _ := new(G2).Unmarshal(new(G2).ScalarBaseMult(a).Marshal()) - pb, _ := new(G1).Unmarshal(new(G1).ScalarBaseMult(b).Marshal()) - qb, _ := new(G2).Unmarshal(new(G2).ScalarBaseMult(b).Marshal()) - pc, _ := new(G1).Unmarshal(new(G1).ScalarBaseMult(c).Marshal()) - qc, _ := new(G2).Unmarshal(new(G2).ScalarBaseMult(c).Marshal()) - - k1 := Pair(pb, qc) - k1.ScalarMult(k1, a) - k1Bytes := k1.Marshal() - - k2 := Pair(pc, qa) - k2.ScalarMult(k2, b) - k2Bytes := k2.Marshal() - - k3 := Pair(pa, qb) - k3.ScalarMult(k3, c) - k3Bytes := k3.Marshal() - - if !bytes.Equal(k1Bytes, k2Bytes) || !bytes.Equal(k2Bytes, k3Bytes) { - t.Errorf("keys didn't agree") - } -} - -func BenchmarkPairing(b *testing.B) { - for i := 0; i < b.N; i++ { - Pair(&G1{curveGen}, &G2{twistGen}) - } -} diff --git a/vendor/golang.org/x/crypto/bn256/constants.go b/vendor/golang.org/x/crypto/bn256/constants.go deleted file mode 100644 index 1ccefc49..00000000 --- a/vendor/golang.org/x/crypto/bn256/constants.go +++ /dev/null @@ -1,44 +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 bn256 - -import ( - "math/big" -) - -func bigFromBase10(s string) *big.Int { - n, _ := new(big.Int).SetString(s, 10) - return n -} - -// u is the BN parameter that determines the prime: 1868033³. -var u = bigFromBase10("6518589491078791937") - -// p is a prime over which we form a basic field: 36u⁴+36u³+24u²+6u+1. -var p = bigFromBase10("65000549695646603732796438742359905742825358107623003571877145026864184071783") - -// Order is the number of elements in both G₁ and G₂: 36u⁴+36u³+18u²+6u+1. -var Order = bigFromBase10("65000549695646603732796438742359905742570406053903786389881062969044166799969") - -// xiToPMinus1Over6 is ξ^((p-1)/6) where ξ = i+3. -var xiToPMinus1Over6 = &gfP2{bigFromBase10("8669379979083712429711189836753509758585994370025260553045152614783263110636"), bigFromBase10("19998038925833620163537568958541907098007303196759855091367510456613536016040")} - -// xiToPMinus1Over3 is ξ^((p-1)/3) where ξ = i+3. -var xiToPMinus1Over3 = &gfP2{bigFromBase10("26098034838977895781559542626833399156321265654106457577426020397262786167059"), bigFromBase10("15931493369629630809226283458085260090334794394361662678240713231519278691715")} - -// xiToPMinus1Over2 is ξ^((p-1)/2) where ξ = i+3. -var xiToPMinus1Over2 = &gfP2{bigFromBase10("50997318142241922852281555961173165965672272825141804376761836765206060036244"), bigFromBase10("38665955945962842195025998234511023902832543644254935982879660597356748036009")} - -// xiToPSquaredMinus1Over3 is ξ^((p²-1)/3) where ξ = i+3. -var xiToPSquaredMinus1Over3 = bigFromBase10("65000549695646603727810655408050771481677621702948236658134783353303381437752") - -// xiTo2PSquaredMinus2Over3 is ξ^((2p²-2)/3) where ξ = i+3 (a cubic root of unity, mod p). -var xiTo2PSquaredMinus2Over3 = bigFromBase10("4985783334309134261147736404674766913742361673560802634030") - -// xiToPSquaredMinus1Over6 is ξ^((1p²-1)/6) where ξ = i+3 (a cubic root of -1, mod p). -var xiToPSquaredMinus1Over6 = bigFromBase10("65000549695646603727810655408050771481677621702948236658134783353303381437753") - -// xiTo2PMinus2Over3 is ξ^((2p-2)/3) where ξ = i+3. -var xiTo2PMinus2Over3 = &gfP2{bigFromBase10("19885131339612776214803633203834694332692106372356013117629940868870585019582"), bigFromBase10("21645619881471562101905880913352894726728173167203616652430647841922248593627")} diff --git a/vendor/golang.org/x/crypto/bn256/curve.go b/vendor/golang.org/x/crypto/bn256/curve.go deleted file mode 100644 index 55b7063f..00000000 --- a/vendor/golang.org/x/crypto/bn256/curve.go +++ /dev/null @@ -1,278 +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 bn256 - -import ( - "math/big" -) - -// curvePoint implements the elliptic curve y²=x³+3. Points are kept in -// Jacobian form and t=z² when valid. G₁ is the set of points of this curve on -// GF(p). -type curvePoint struct { - x, y, z, t *big.Int -} - -var curveB = new(big.Int).SetInt64(3) - -// curveGen is the generator of G₁. -var curveGen = &curvePoint{ - new(big.Int).SetInt64(1), - new(big.Int).SetInt64(-2), - new(big.Int).SetInt64(1), - new(big.Int).SetInt64(1), -} - -func newCurvePoint(pool *bnPool) *curvePoint { - return &curvePoint{ - pool.Get(), - pool.Get(), - pool.Get(), - pool.Get(), - } -} - -func (c *curvePoint) String() string { - c.MakeAffine(new(bnPool)) - return "(" + c.x.String() + ", " + c.y.String() + ")" -} - -func (c *curvePoint) Put(pool *bnPool) { - pool.Put(c.x) - pool.Put(c.y) - pool.Put(c.z) - pool.Put(c.t) -} - -func (c *curvePoint) Set(a *curvePoint) { - c.x.Set(a.x) - c.y.Set(a.y) - c.z.Set(a.z) - c.t.Set(a.t) -} - -// IsOnCurve returns true iff c is on the curve where c must be in affine form. -func (c *curvePoint) IsOnCurve() bool { - yy := new(big.Int).Mul(c.y, c.y) - xxx := new(big.Int).Mul(c.x, c.x) - xxx.Mul(xxx, c.x) - yy.Sub(yy, xxx) - yy.Sub(yy, curveB) - if yy.Sign() < 0 || yy.Cmp(p) >= 0 { - yy.Mod(yy, p) - } - return yy.Sign() == 0 -} - -func (c *curvePoint) SetInfinity() { - c.z.SetInt64(0) -} - -func (c *curvePoint) IsInfinity() bool { - return c.z.Sign() == 0 -} - -func (c *curvePoint) Add(a, b *curvePoint, pool *bnPool) { - if a.IsInfinity() { - c.Set(b) - return - } - if b.IsInfinity() { - c.Set(a) - return - } - - // See http://hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2007-bl.op3 - - // Normalize the points by replacing a = [x1:y1:z1] and b = [x2:y2:z2] - // by [u1:s1:z1·z2] and [u2:s2:z1·z2] - // where u1 = x1·z2², s1 = y1·z2³ and u1 = x2·z1², s2 = y2·z1³ - z1z1 := pool.Get().Mul(a.z, a.z) - z1z1.Mod(z1z1, p) - z2z2 := pool.Get().Mul(b.z, b.z) - z2z2.Mod(z2z2, p) - u1 := pool.Get().Mul(a.x, z2z2) - u1.Mod(u1, p) - u2 := pool.Get().Mul(b.x, z1z1) - u2.Mod(u2, p) - - t := pool.Get().Mul(b.z, z2z2) - t.Mod(t, p) - s1 := pool.Get().Mul(a.y, t) - s1.Mod(s1, p) - - t.Mul(a.z, z1z1) - t.Mod(t, p) - s2 := pool.Get().Mul(b.y, t) - s2.Mod(s2, p) - - // Compute x = (2h)²(s²-u1-u2) - // where s = (s2-s1)/(u2-u1) is the slope of the line through - // (u1,s1) and (u2,s2). The extra factor 2h = 2(u2-u1) comes from the value of z below. - // This is also: - // 4(s2-s1)² - 4h²(u1+u2) = 4(s2-s1)² - 4h³ - 4h²(2u1) - // = r² - j - 2v - // with the notations below. - h := pool.Get().Sub(u2, u1) - xEqual := h.Sign() == 0 - - t.Add(h, h) - // i = 4h² - i := pool.Get().Mul(t, t) - i.Mod(i, p) - // j = 4h³ - j := pool.Get().Mul(h, i) - j.Mod(j, p) - - t.Sub(s2, s1) - yEqual := t.Sign() == 0 - if xEqual && yEqual { - c.Double(a, pool) - return - } - r := pool.Get().Add(t, t) - - v := pool.Get().Mul(u1, i) - v.Mod(v, p) - - // t4 = 4(s2-s1)² - t4 := pool.Get().Mul(r, r) - t4.Mod(t4, p) - t.Add(v, v) - t6 := pool.Get().Sub(t4, j) - c.x.Sub(t6, t) - - // Set y = -(2h)³(s1 + s*(x/4h²-u1)) - // This is also - // y = - 2·s1·j - (s2-s1)(2x - 2i·u1) = r(v-x) - 2·s1·j - t.Sub(v, c.x) // t7 - t4.Mul(s1, j) // t8 - t4.Mod(t4, p) - t6.Add(t4, t4) // t9 - t4.Mul(r, t) // t10 - t4.Mod(t4, p) - c.y.Sub(t4, t6) - - // Set z = 2(u2-u1)·z1·z2 = 2h·z1·z2 - t.Add(a.z, b.z) // t11 - t4.Mul(t, t) // t12 - t4.Mod(t4, p) - t.Sub(t4, z1z1) // t13 - t4.Sub(t, z2z2) // t14 - c.z.Mul(t4, h) - c.z.Mod(c.z, p) - - pool.Put(z1z1) - pool.Put(z2z2) - pool.Put(u1) - pool.Put(u2) - pool.Put(t) - pool.Put(s1) - pool.Put(s2) - pool.Put(h) - pool.Put(i) - pool.Put(j) - pool.Put(r) - pool.Put(v) - pool.Put(t4) - pool.Put(t6) -} - -func (c *curvePoint) Double(a *curvePoint, pool *bnPool) { - // See http://hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/doubling/dbl-2009-l.op3 - A := pool.Get().Mul(a.x, a.x) - A.Mod(A, p) - B := pool.Get().Mul(a.y, a.y) - B.Mod(B, p) - C := pool.Get().Mul(B, B) - C.Mod(C, p) - - t := pool.Get().Add(a.x, B) - t2 := pool.Get().Mul(t, t) - t2.Mod(t2, p) - t.Sub(t2, A) - t2.Sub(t, C) - d := pool.Get().Add(t2, t2) - t.Add(A, A) - e := pool.Get().Add(t, A) - f := pool.Get().Mul(e, e) - f.Mod(f, p) - - t.Add(d, d) - c.x.Sub(f, t) - - t.Add(C, C) - t2.Add(t, t) - t.Add(t2, t2) - c.y.Sub(d, c.x) - t2.Mul(e, c.y) - t2.Mod(t2, p) - c.y.Sub(t2, t) - - t.Mul(a.y, a.z) - t.Mod(t, p) - c.z.Add(t, t) - - pool.Put(A) - pool.Put(B) - pool.Put(C) - pool.Put(t) - pool.Put(t2) - pool.Put(d) - pool.Put(e) - pool.Put(f) -} - -func (c *curvePoint) Mul(a *curvePoint, scalar *big.Int, pool *bnPool) *curvePoint { - sum := newCurvePoint(pool) - sum.SetInfinity() - t := newCurvePoint(pool) - - for i := scalar.BitLen(); i >= 0; i-- { - t.Double(sum, pool) - if scalar.Bit(i) != 0 { - sum.Add(t, a, pool) - } else { - sum.Set(t) - } - } - - c.Set(sum) - sum.Put(pool) - t.Put(pool) - return c -} - -func (c *curvePoint) MakeAffine(pool *bnPool) *curvePoint { - if words := c.z.Bits(); len(words) == 1 && words[0] == 1 { - return c - } - - zInv := pool.Get().ModInverse(c.z, p) - t := pool.Get().Mul(c.y, zInv) - t.Mod(t, p) - zInv2 := pool.Get().Mul(zInv, zInv) - zInv2.Mod(zInv2, p) - c.y.Mul(t, zInv2) - c.y.Mod(c.y, p) - t.Mul(c.x, zInv2) - t.Mod(t, p) - c.x.Set(t) - c.z.SetInt64(1) - c.t.SetInt64(1) - - pool.Put(zInv) - pool.Put(t) - pool.Put(zInv2) - - return c -} - -func (c *curvePoint) Negative(a *curvePoint) { - c.x.Set(a.x) - c.y.Neg(a.y) - c.z.Set(a.z) - c.t.SetInt64(0) -} diff --git a/vendor/golang.org/x/crypto/bn256/example_test.go b/vendor/golang.org/x/crypto/bn256/example_test.go deleted file mode 100644 index b2d19807..00000000 --- a/vendor/golang.org/x/crypto/bn256/example_test.go +++ /dev/null @@ -1,43 +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 bn256 - -import ( - "crypto/rand" -) - -func ExamplePair() { - // This implements the tripartite Diffie-Hellman algorithm from "A One - // Round Protocol for Tripartite Diffie-Hellman", A. Joux. - // http://www.springerlink.com/content/cddc57yyva0hburb/fulltext.pdf - - // Each of three parties, a, b and c, generate a private value. - a, _ := rand.Int(rand.Reader, Order) - b, _ := rand.Int(rand.Reader, Order) - c, _ := rand.Int(rand.Reader, Order) - - // Then each party calculates g₁ and g₂ times their private value. - pa := new(G1).ScalarBaseMult(a) - qa := new(G2).ScalarBaseMult(a) - - pb := new(G1).ScalarBaseMult(b) - qb := new(G2).ScalarBaseMult(b) - - pc := new(G1).ScalarBaseMult(c) - qc := new(G2).ScalarBaseMult(c) - - // Now each party exchanges its public values with the other two and - // all parties can calculate the shared key. - k1 := Pair(pb, qc) - k1.ScalarMult(k1, a) - - k2 := Pair(pc, qa) - k2.ScalarMult(k2, b) - - k3 := Pair(pa, qb) - k3.ScalarMult(k3, c) - - // k1, k2 and k3 will all be equal. -} diff --git a/vendor/golang.org/x/crypto/bn256/gfp12.go b/vendor/golang.org/x/crypto/bn256/gfp12.go deleted file mode 100644 index f084eddf..00000000 --- a/vendor/golang.org/x/crypto/bn256/gfp12.go +++ /dev/null @@ -1,200 +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 bn256 - -// For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. -// http://eprint.iacr.org/2006/471.pdf. - -import ( - "math/big" -) - -// gfP12 implements the field of size p¹² as a quadratic extension of gfP6 -// where ω²=τ. -type gfP12 struct { - x, y *gfP6 // value is xω + y -} - -func newGFp12(pool *bnPool) *gfP12 { - return &gfP12{newGFp6(pool), newGFp6(pool)} -} - -func (e *gfP12) String() string { - return "(" + e.x.String() + "," + e.y.String() + ")" -} - -func (e *gfP12) Put(pool *bnPool) { - e.x.Put(pool) - e.y.Put(pool) -} - -func (e *gfP12) Set(a *gfP12) *gfP12 { - e.x.Set(a.x) - e.y.Set(a.y) - return e -} - -func (e *gfP12) SetZero() *gfP12 { - e.x.SetZero() - e.y.SetZero() - return e -} - -func (e *gfP12) SetOne() *gfP12 { - e.x.SetZero() - e.y.SetOne() - return e -} - -func (e *gfP12) Minimal() { - e.x.Minimal() - e.y.Minimal() -} - -func (e *gfP12) IsZero() bool { - e.Minimal() - return e.x.IsZero() && e.y.IsZero() -} - -func (e *gfP12) IsOne() bool { - e.Minimal() - return e.x.IsZero() && e.y.IsOne() -} - -func (e *gfP12) Conjugate(a *gfP12) *gfP12 { - e.x.Negative(a.x) - e.y.Set(a.y) - return a -} - -func (e *gfP12) Negative(a *gfP12) *gfP12 { - e.x.Negative(a.x) - e.y.Negative(a.y) - return e -} - -// Frobenius computes (xω+y)^p = x^p ω·ξ^((p-1)/6) + y^p -func (e *gfP12) Frobenius(a *gfP12, pool *bnPool) *gfP12 { - e.x.Frobenius(a.x, pool) - e.y.Frobenius(a.y, pool) - e.x.MulScalar(e.x, xiToPMinus1Over6, pool) - return e -} - -// FrobeniusP2 computes (xω+y)^p² = x^p² ω·ξ^((p²-1)/6) + y^p² -func (e *gfP12) FrobeniusP2(a *gfP12, pool *bnPool) *gfP12 { - e.x.FrobeniusP2(a.x) - e.x.MulGFP(e.x, xiToPSquaredMinus1Over6) - e.y.FrobeniusP2(a.y) - return e -} - -func (e *gfP12) Add(a, b *gfP12) *gfP12 { - e.x.Add(a.x, b.x) - e.y.Add(a.y, b.y) - return e -} - -func (e *gfP12) Sub(a, b *gfP12) *gfP12 { - e.x.Sub(a.x, b.x) - e.y.Sub(a.y, b.y) - return e -} - -func (e *gfP12) Mul(a, b *gfP12, pool *bnPool) *gfP12 { - tx := newGFp6(pool) - tx.Mul(a.x, b.y, pool) - t := newGFp6(pool) - t.Mul(b.x, a.y, pool) - tx.Add(tx, t) - - ty := newGFp6(pool) - ty.Mul(a.y, b.y, pool) - t.Mul(a.x, b.x, pool) - t.MulTau(t, pool) - e.y.Add(ty, t) - e.x.Set(tx) - - tx.Put(pool) - ty.Put(pool) - t.Put(pool) - return e -} - -func (e *gfP12) MulScalar(a *gfP12, b *gfP6, pool *bnPool) *gfP12 { - e.x.Mul(e.x, b, pool) - e.y.Mul(e.y, b, pool) - return e -} - -func (c *gfP12) Exp(a *gfP12, power *big.Int, pool *bnPool) *gfP12 { - sum := newGFp12(pool) - sum.SetOne() - t := newGFp12(pool) - - for i := power.BitLen() - 1; i >= 0; i-- { - t.Square(sum, pool) - if power.Bit(i) != 0 { - sum.Mul(t, a, pool) - } else { - sum.Set(t) - } - } - - c.Set(sum) - - sum.Put(pool) - t.Put(pool) - - return c -} - -func (e *gfP12) Square(a *gfP12, pool *bnPool) *gfP12 { - // Complex squaring algorithm - v0 := newGFp6(pool) - v0.Mul(a.x, a.y, pool) - - t := newGFp6(pool) - t.MulTau(a.x, pool) - t.Add(a.y, t) - ty := newGFp6(pool) - ty.Add(a.x, a.y) - ty.Mul(ty, t, pool) - ty.Sub(ty, v0) - t.MulTau(v0, pool) - ty.Sub(ty, t) - - e.y.Set(ty) - e.x.Double(v0) - - v0.Put(pool) - t.Put(pool) - ty.Put(pool) - - return e -} - -func (e *gfP12) Invert(a *gfP12, pool *bnPool) *gfP12 { - // See "Implementing cryptographic pairings", M. Scott, section 3.2. - // ftp://136.206.11.249/pub/crypto/pairings.pdf - t1 := newGFp6(pool) - t2 := newGFp6(pool) - - t1.Square(a.x, pool) - t2.Square(a.y, pool) - t1.MulTau(t1, pool) - t1.Sub(t2, t1) - t2.Invert(t1, pool) - - e.x.Negative(a.x) - e.y.Set(a.y) - e.MulScalar(e, t2, pool) - - t1.Put(pool) - t2.Put(pool) - - return e -} diff --git a/vendor/golang.org/x/crypto/bn256/gfp2.go b/vendor/golang.org/x/crypto/bn256/gfp2.go deleted file mode 100644 index 97f3f1f3..00000000 --- a/vendor/golang.org/x/crypto/bn256/gfp2.go +++ /dev/null @@ -1,219 +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 bn256 - -// For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. -// http://eprint.iacr.org/2006/471.pdf. - -import ( - "math/big" -) - -// gfP2 implements a field of size p² as a quadratic extension of the base -// field where i²=-1. -type gfP2 struct { - x, y *big.Int // value is xi+y. -} - -func newGFp2(pool *bnPool) *gfP2 { - return &gfP2{pool.Get(), pool.Get()} -} - -func (e *gfP2) String() string { - x := new(big.Int).Mod(e.x, p) - y := new(big.Int).Mod(e.y, p) - return "(" + x.String() + "," + y.String() + ")" -} - -func (e *gfP2) Put(pool *bnPool) { - pool.Put(e.x) - pool.Put(e.y) -} - -func (e *gfP2) Set(a *gfP2) *gfP2 { - e.x.Set(a.x) - e.y.Set(a.y) - return e -} - -func (e *gfP2) SetZero() *gfP2 { - e.x.SetInt64(0) - e.y.SetInt64(0) - return e -} - -func (e *gfP2) SetOne() *gfP2 { - e.x.SetInt64(0) - e.y.SetInt64(1) - return e -} - -func (e *gfP2) Minimal() { - if e.x.Sign() < 0 || e.x.Cmp(p) >= 0 { - e.x.Mod(e.x, p) - } - if e.y.Sign() < 0 || e.y.Cmp(p) >= 0 { - e.y.Mod(e.y, p) - } -} - -func (e *gfP2) IsZero() bool { - return e.x.Sign() == 0 && e.y.Sign() == 0 -} - -func (e *gfP2) IsOne() bool { - if e.x.Sign() != 0 { - return false - } - words := e.y.Bits() - return len(words) == 1 && words[0] == 1 -} - -func (e *gfP2) Conjugate(a *gfP2) *gfP2 { - e.y.Set(a.y) - e.x.Neg(a.x) - return e -} - -func (e *gfP2) Negative(a *gfP2) *gfP2 { - e.x.Neg(a.x) - e.y.Neg(a.y) - return e -} - -func (e *gfP2) Add(a, b *gfP2) *gfP2 { - e.x.Add(a.x, b.x) - e.y.Add(a.y, b.y) - return e -} - -func (e *gfP2) Sub(a, b *gfP2) *gfP2 { - e.x.Sub(a.x, b.x) - e.y.Sub(a.y, b.y) - return e -} - -func (e *gfP2) Double(a *gfP2) *gfP2 { - e.x.Lsh(a.x, 1) - e.y.Lsh(a.y, 1) - return e -} - -func (c *gfP2) Exp(a *gfP2, power *big.Int, pool *bnPool) *gfP2 { - sum := newGFp2(pool) - sum.SetOne() - t := newGFp2(pool) - - for i := power.BitLen() - 1; i >= 0; i-- { - t.Square(sum, pool) - if power.Bit(i) != 0 { - sum.Mul(t, a, pool) - } else { - sum.Set(t) - } - } - - c.Set(sum) - - sum.Put(pool) - t.Put(pool) - - return c -} - -// See "Multiplication and Squaring in Pairing-Friendly Fields", -// http://eprint.iacr.org/2006/471.pdf -func (e *gfP2) Mul(a, b *gfP2, pool *bnPool) *gfP2 { - tx := pool.Get().Mul(a.x, b.y) - t := pool.Get().Mul(b.x, a.y) - tx.Add(tx, t) - tx.Mod(tx, p) - - ty := pool.Get().Mul(a.y, b.y) - t.Mul(a.x, b.x) - ty.Sub(ty, t) - e.y.Mod(ty, p) - e.x.Set(tx) - - pool.Put(tx) - pool.Put(ty) - pool.Put(t) - - return e -} - -func (e *gfP2) MulScalar(a *gfP2, b *big.Int) *gfP2 { - e.x.Mul(a.x, b) - e.y.Mul(a.y, b) - return e -} - -// MulXi sets e=ξa where ξ=i+3 and then returns e. -func (e *gfP2) MulXi(a *gfP2, pool *bnPool) *gfP2 { - // (xi+y)(i+3) = (3x+y)i+(3y-x) - tx := pool.Get().Lsh(a.x, 1) - tx.Add(tx, a.x) - tx.Add(tx, a.y) - - ty := pool.Get().Lsh(a.y, 1) - ty.Add(ty, a.y) - ty.Sub(ty, a.x) - - e.x.Set(tx) - e.y.Set(ty) - - pool.Put(tx) - pool.Put(ty) - - return e -} - -func (e *gfP2) Square(a *gfP2, pool *bnPool) *gfP2 { - // Complex squaring algorithm: - // (xi+b)² = (x+y)(y-x) + 2*i*x*y - t1 := pool.Get().Sub(a.y, a.x) - t2 := pool.Get().Add(a.x, a.y) - ty := pool.Get().Mul(t1, t2) - ty.Mod(ty, p) - - t1.Mul(a.x, a.y) - t1.Lsh(t1, 1) - - e.x.Mod(t1, p) - e.y.Set(ty) - - pool.Put(t1) - pool.Put(t2) - pool.Put(ty) - - return e -} - -func (e *gfP2) Invert(a *gfP2, pool *bnPool) *gfP2 { - // See "Implementing cryptographic pairings", M. Scott, section 3.2. - // ftp://136.206.11.249/pub/crypto/pairings.pdf - t := pool.Get() - t.Mul(a.y, a.y) - t2 := pool.Get() - t2.Mul(a.x, a.x) - t.Add(t, t2) - - inv := pool.Get() - inv.ModInverse(t, p) - - e.x.Neg(a.x) - e.x.Mul(e.x, inv) - e.x.Mod(e.x, p) - - e.y.Mul(a.y, inv) - e.y.Mod(e.y, p) - - pool.Put(t) - pool.Put(t2) - pool.Put(inv) - - return e -} diff --git a/vendor/golang.org/x/crypto/bn256/gfp6.go b/vendor/golang.org/x/crypto/bn256/gfp6.go deleted file mode 100644 index f98ae782..00000000 --- a/vendor/golang.org/x/crypto/bn256/gfp6.go +++ /dev/null @@ -1,296 +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 bn256 - -// For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. -// http://eprint.iacr.org/2006/471.pdf. - -import ( - "math/big" -) - -// gfP6 implements the field of size p⁶ as a cubic extension of gfP2 where τ³=ξ -// and ξ=i+3. -type gfP6 struct { - x, y, z *gfP2 // value is xτ² + yτ + z -} - -func newGFp6(pool *bnPool) *gfP6 { - return &gfP6{newGFp2(pool), newGFp2(pool), newGFp2(pool)} -} - -func (e *gfP6) String() string { - return "(" + e.x.String() + "," + e.y.String() + "," + e.z.String() + ")" -} - -func (e *gfP6) Put(pool *bnPool) { - e.x.Put(pool) - e.y.Put(pool) - e.z.Put(pool) -} - -func (e *gfP6) Set(a *gfP6) *gfP6 { - e.x.Set(a.x) - e.y.Set(a.y) - e.z.Set(a.z) - return e -} - -func (e *gfP6) SetZero() *gfP6 { - e.x.SetZero() - e.y.SetZero() - e.z.SetZero() - return e -} - -func (e *gfP6) SetOne() *gfP6 { - e.x.SetZero() - e.y.SetZero() - e.z.SetOne() - return e -} - -func (e *gfP6) Minimal() { - e.x.Minimal() - e.y.Minimal() - e.z.Minimal() -} - -func (e *gfP6) IsZero() bool { - return e.x.IsZero() && e.y.IsZero() && e.z.IsZero() -} - -func (e *gfP6) IsOne() bool { - return e.x.IsZero() && e.y.IsZero() && e.z.IsOne() -} - -func (e *gfP6) Negative(a *gfP6) *gfP6 { - e.x.Negative(a.x) - e.y.Negative(a.y) - e.z.Negative(a.z) - return e -} - -func (e *gfP6) Frobenius(a *gfP6, pool *bnPool) *gfP6 { - e.x.Conjugate(a.x) - e.y.Conjugate(a.y) - e.z.Conjugate(a.z) - - e.x.Mul(e.x, xiTo2PMinus2Over3, pool) - e.y.Mul(e.y, xiToPMinus1Over3, pool) - return e -} - -// FrobeniusP2 computes (xτ²+yτ+z)^(p²) = xτ^(2p²) + yτ^(p²) + z -func (e *gfP6) FrobeniusP2(a *gfP6) *gfP6 { - // τ^(2p²) = τ²τ^(2p²-2) = τ²ξ^((2p²-2)/3) - e.x.MulScalar(a.x, xiTo2PSquaredMinus2Over3) - // τ^(p²) = ττ^(p²-1) = τξ^((p²-1)/3) - e.y.MulScalar(a.y, xiToPSquaredMinus1Over3) - e.z.Set(a.z) - return e -} - -func (e *gfP6) Add(a, b *gfP6) *gfP6 { - e.x.Add(a.x, b.x) - e.y.Add(a.y, b.y) - e.z.Add(a.z, b.z) - return e -} - -func (e *gfP6) Sub(a, b *gfP6) *gfP6 { - e.x.Sub(a.x, b.x) - e.y.Sub(a.y, b.y) - e.z.Sub(a.z, b.z) - return e -} - -func (e *gfP6) Double(a *gfP6) *gfP6 { - e.x.Double(a.x) - e.y.Double(a.y) - e.z.Double(a.z) - return e -} - -func (e *gfP6) Mul(a, b *gfP6, pool *bnPool) *gfP6 { - // "Multiplication and Squaring on Pairing-Friendly Fields" - // Section 4, Karatsuba method. - // http://eprint.iacr.org/2006/471.pdf - - v0 := newGFp2(pool) - v0.Mul(a.z, b.z, pool) - v1 := newGFp2(pool) - v1.Mul(a.y, b.y, pool) - v2 := newGFp2(pool) - v2.Mul(a.x, b.x, pool) - - t0 := newGFp2(pool) - t0.Add(a.x, a.y) - t1 := newGFp2(pool) - t1.Add(b.x, b.y) - tz := newGFp2(pool) - tz.Mul(t0, t1, pool) - - tz.Sub(tz, v1) - tz.Sub(tz, v2) - tz.MulXi(tz, pool) - tz.Add(tz, v0) - - t0.Add(a.y, a.z) - t1.Add(b.y, b.z) - ty := newGFp2(pool) - ty.Mul(t0, t1, pool) - ty.Sub(ty, v0) - ty.Sub(ty, v1) - t0.MulXi(v2, pool) - ty.Add(ty, t0) - - t0.Add(a.x, a.z) - t1.Add(b.x, b.z) - tx := newGFp2(pool) - tx.Mul(t0, t1, pool) - tx.Sub(tx, v0) - tx.Add(tx, v1) - tx.Sub(tx, v2) - - e.x.Set(tx) - e.y.Set(ty) - e.z.Set(tz) - - t0.Put(pool) - t1.Put(pool) - tx.Put(pool) - ty.Put(pool) - tz.Put(pool) - v0.Put(pool) - v1.Put(pool) - v2.Put(pool) - return e -} - -func (e *gfP6) MulScalar(a *gfP6, b *gfP2, pool *bnPool) *gfP6 { - e.x.Mul(a.x, b, pool) - e.y.Mul(a.y, b, pool) - e.z.Mul(a.z, b, pool) - return e -} - -func (e *gfP6) MulGFP(a *gfP6, b *big.Int) *gfP6 { - e.x.MulScalar(a.x, b) - e.y.MulScalar(a.y, b) - e.z.MulScalar(a.z, b) - return e -} - -// MulTau computes τ·(aτ²+bτ+c) = bτ²+cτ+aξ -func (e *gfP6) MulTau(a *gfP6, pool *bnPool) { - tz := newGFp2(pool) - tz.MulXi(a.x, pool) - ty := newGFp2(pool) - ty.Set(a.y) - e.y.Set(a.z) - e.x.Set(ty) - e.z.Set(tz) - tz.Put(pool) - ty.Put(pool) -} - -func (e *gfP6) Square(a *gfP6, pool *bnPool) *gfP6 { - v0 := newGFp2(pool).Square(a.z, pool) - v1 := newGFp2(pool).Square(a.y, pool) - v2 := newGFp2(pool).Square(a.x, pool) - - c0 := newGFp2(pool).Add(a.x, a.y) - c0.Square(c0, pool) - c0.Sub(c0, v1) - c0.Sub(c0, v2) - c0.MulXi(c0, pool) - c0.Add(c0, v0) - - c1 := newGFp2(pool).Add(a.y, a.z) - c1.Square(c1, pool) - c1.Sub(c1, v0) - c1.Sub(c1, v1) - xiV2 := newGFp2(pool).MulXi(v2, pool) - c1.Add(c1, xiV2) - - c2 := newGFp2(pool).Add(a.x, a.z) - c2.Square(c2, pool) - c2.Sub(c2, v0) - c2.Add(c2, v1) - c2.Sub(c2, v2) - - e.x.Set(c2) - e.y.Set(c1) - e.z.Set(c0) - - v0.Put(pool) - v1.Put(pool) - v2.Put(pool) - c0.Put(pool) - c1.Put(pool) - c2.Put(pool) - xiV2.Put(pool) - - return e -} - -func (e *gfP6) Invert(a *gfP6, pool *bnPool) *gfP6 { - // See "Implementing cryptographic pairings", M. Scott, section 3.2. - // ftp://136.206.11.249/pub/crypto/pairings.pdf - - // Here we can give a short explanation of how it works: let j be a cubic root of - // unity in GF(p²) so that 1+j+j²=0. - // Then (xτ² + yτ + z)(xj²τ² + yjτ + z)(xjτ² + yj²τ + z) - // = (xτ² + yτ + z)(Cτ²+Bτ+A) - // = (x³ξ²+y³ξ+z³-3ξxyz) = F is an element of the base field (the norm). - // - // On the other hand (xj²τ² + yjτ + z)(xjτ² + yj²τ + z) - // = τ²(y²-ξxz) + τ(ξx²-yz) + (z²-ξxy) - // - // So that's why A = (z²-ξxy), B = (ξx²-yz), C = (y²-ξxz) - t1 := newGFp2(pool) - - A := newGFp2(pool) - A.Square(a.z, pool) - t1.Mul(a.x, a.y, pool) - t1.MulXi(t1, pool) - A.Sub(A, t1) - - B := newGFp2(pool) - B.Square(a.x, pool) - B.MulXi(B, pool) - t1.Mul(a.y, a.z, pool) - B.Sub(B, t1) - - C := newGFp2(pool) - C.Square(a.y, pool) - t1.Mul(a.x, a.z, pool) - C.Sub(C, t1) - - F := newGFp2(pool) - F.Mul(C, a.y, pool) - F.MulXi(F, pool) - t1.Mul(A, a.z, pool) - F.Add(F, t1) - t1.Mul(B, a.x, pool) - t1.MulXi(t1, pool) - F.Add(F, t1) - - F.Invert(F, pool) - - e.x.Mul(C, F, pool) - e.y.Mul(B, F, pool) - e.z.Mul(A, F, pool) - - t1.Put(pool) - A.Put(pool) - B.Put(pool) - C.Put(pool) - F.Put(pool) - - return e -} diff --git a/vendor/golang.org/x/crypto/bn256/optate.go b/vendor/golang.org/x/crypto/bn256/optate.go deleted file mode 100644 index 7ae0746e..00000000 --- a/vendor/golang.org/x/crypto/bn256/optate.go +++ /dev/null @@ -1,395 +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 bn256 - -func lineFunctionAdd(r, p *twistPoint, q *curvePoint, r2 *gfP2, pool *bnPool) (a, b, c *gfP2, rOut *twistPoint) { - // See the mixed addition algorithm from "Faster Computation of the - // Tate Pairing", http://arxiv.org/pdf/0904.0854v3.pdf - - B := newGFp2(pool).Mul(p.x, r.t, pool) - - D := newGFp2(pool).Add(p.y, r.z) - D.Square(D, pool) - D.Sub(D, r2) - D.Sub(D, r.t) - D.Mul(D, r.t, pool) - - H := newGFp2(pool).Sub(B, r.x) - I := newGFp2(pool).Square(H, pool) - - E := newGFp2(pool).Add(I, I) - E.Add(E, E) - - J := newGFp2(pool).Mul(H, E, pool) - - L1 := newGFp2(pool).Sub(D, r.y) - L1.Sub(L1, r.y) - - V := newGFp2(pool).Mul(r.x, E, pool) - - rOut = newTwistPoint(pool) - rOut.x.Square(L1, pool) - rOut.x.Sub(rOut.x, J) - rOut.x.Sub(rOut.x, V) - rOut.x.Sub(rOut.x, V) - - rOut.z.Add(r.z, H) - rOut.z.Square(rOut.z, pool) - rOut.z.Sub(rOut.z, r.t) - rOut.z.Sub(rOut.z, I) - - t := newGFp2(pool).Sub(V, rOut.x) - t.Mul(t, L1, pool) - t2 := newGFp2(pool).Mul(r.y, J, pool) - t2.Add(t2, t2) - rOut.y.Sub(t, t2) - - rOut.t.Square(rOut.z, pool) - - t.Add(p.y, rOut.z) - t.Square(t, pool) - t.Sub(t, r2) - t.Sub(t, rOut.t) - - t2.Mul(L1, p.x, pool) - t2.Add(t2, t2) - a = newGFp2(pool) - a.Sub(t2, t) - - c = newGFp2(pool) - c.MulScalar(rOut.z, q.y) - c.Add(c, c) - - b = newGFp2(pool) - b.SetZero() - b.Sub(b, L1) - b.MulScalar(b, q.x) - b.Add(b, b) - - B.Put(pool) - D.Put(pool) - H.Put(pool) - I.Put(pool) - E.Put(pool) - J.Put(pool) - L1.Put(pool) - V.Put(pool) - t.Put(pool) - t2.Put(pool) - - return -} - -func lineFunctionDouble(r *twistPoint, q *curvePoint, pool *bnPool) (a, b, c *gfP2, rOut *twistPoint) { - // See the doubling algorithm for a=0 from "Faster Computation of the - // Tate Pairing", http://arxiv.org/pdf/0904.0854v3.pdf - - A := newGFp2(pool).Square(r.x, pool) - B := newGFp2(pool).Square(r.y, pool) - C := newGFp2(pool).Square(B, pool) - - D := newGFp2(pool).Add(r.x, B) - D.Square(D, pool) - D.Sub(D, A) - D.Sub(D, C) - D.Add(D, D) - - E := newGFp2(pool).Add(A, A) - E.Add(E, A) - - G := newGFp2(pool).Square(E, pool) - - rOut = newTwistPoint(pool) - rOut.x.Sub(G, D) - rOut.x.Sub(rOut.x, D) - - rOut.z.Add(r.y, r.z) - rOut.z.Square(rOut.z, pool) - rOut.z.Sub(rOut.z, B) - rOut.z.Sub(rOut.z, r.t) - - rOut.y.Sub(D, rOut.x) - rOut.y.Mul(rOut.y, E, pool) - t := newGFp2(pool).Add(C, C) - t.Add(t, t) - t.Add(t, t) - rOut.y.Sub(rOut.y, t) - - rOut.t.Square(rOut.z, pool) - - t.Mul(E, r.t, pool) - t.Add(t, t) - b = newGFp2(pool) - b.SetZero() - b.Sub(b, t) - b.MulScalar(b, q.x) - - a = newGFp2(pool) - a.Add(r.x, E) - a.Square(a, pool) - a.Sub(a, A) - a.Sub(a, G) - t.Add(B, B) - t.Add(t, t) - a.Sub(a, t) - - c = newGFp2(pool) - c.Mul(rOut.z, r.t, pool) - c.Add(c, c) - c.MulScalar(c, q.y) - - A.Put(pool) - B.Put(pool) - C.Put(pool) - D.Put(pool) - E.Put(pool) - G.Put(pool) - t.Put(pool) - - return -} - -func mulLine(ret *gfP12, a, b, c *gfP2, pool *bnPool) { - a2 := newGFp6(pool) - a2.x.SetZero() - a2.y.Set(a) - a2.z.Set(b) - a2.Mul(a2, ret.x, pool) - t3 := newGFp6(pool).MulScalar(ret.y, c, pool) - - t := newGFp2(pool) - t.Add(b, c) - t2 := newGFp6(pool) - t2.x.SetZero() - t2.y.Set(a) - t2.z.Set(t) - ret.x.Add(ret.x, ret.y) - - ret.y.Set(t3) - - ret.x.Mul(ret.x, t2, pool) - ret.x.Sub(ret.x, a2) - ret.x.Sub(ret.x, ret.y) - a2.MulTau(a2, pool) - ret.y.Add(ret.y, a2) - - a2.Put(pool) - t3.Put(pool) - t2.Put(pool) - t.Put(pool) -} - -// sixuPlus2NAF is 6u+2 in non-adjacent form. -var sixuPlus2NAF = []int8{0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 1} - -// miller implements the Miller loop for calculating the Optimal Ate pairing. -// See algorithm 1 from http://cryptojedi.org/papers/dclxvi-20100714.pdf -func miller(q *twistPoint, p *curvePoint, pool *bnPool) *gfP12 { - ret := newGFp12(pool) - ret.SetOne() - - aAffine := newTwistPoint(pool) - aAffine.Set(q) - aAffine.MakeAffine(pool) - - bAffine := newCurvePoint(pool) - bAffine.Set(p) - bAffine.MakeAffine(pool) - - minusA := newTwistPoint(pool) - minusA.Negative(aAffine, pool) - - r := newTwistPoint(pool) - r.Set(aAffine) - - r2 := newGFp2(pool) - r2.Square(aAffine.y, pool) - - for i := len(sixuPlus2NAF) - 1; i > 0; i-- { - a, b, c, newR := lineFunctionDouble(r, bAffine, pool) - if i != len(sixuPlus2NAF)-1 { - ret.Square(ret, pool) - } - - mulLine(ret, a, b, c, pool) - a.Put(pool) - b.Put(pool) - c.Put(pool) - r.Put(pool) - r = newR - - switch sixuPlus2NAF[i-1] { - case 1: - a, b, c, newR = lineFunctionAdd(r, aAffine, bAffine, r2, pool) - case -1: - a, b, c, newR = lineFunctionAdd(r, minusA, bAffine, r2, pool) - default: - continue - } - - mulLine(ret, a, b, c, pool) - a.Put(pool) - b.Put(pool) - c.Put(pool) - r.Put(pool) - r = newR - } - - // In order to calculate Q1 we have to convert q from the sextic twist - // to the full GF(p^12) group, apply the Frobenius there, and convert - // back. - // - // The twist isomorphism is (x', y') -> (xω², yω³). If we consider just - // x for a moment, then after applying the Frobenius, we have x̄ω^(2p) - // where x̄ is the conjugate of x. If we are going to apply the inverse - // isomorphism we need a value with a single coefficient of ω² so we - // rewrite this as x̄ω^(2p-2)ω². ξ⁶ = ω and, due to the construction of - // p, 2p-2 is a multiple of six. Therefore we can rewrite as - // x̄ξ^((p-1)/3)ω² and applying the inverse isomorphism eliminates the - // ω². - // - // A similar argument can be made for the y value. - - q1 := newTwistPoint(pool) - q1.x.Conjugate(aAffine.x) - q1.x.Mul(q1.x, xiToPMinus1Over3, pool) - q1.y.Conjugate(aAffine.y) - q1.y.Mul(q1.y, xiToPMinus1Over2, pool) - q1.z.SetOne() - q1.t.SetOne() - - // For Q2 we are applying the p² Frobenius. The two conjugations cancel - // out and we are left only with the factors from the isomorphism. In - // the case of x, we end up with a pure number which is why - // xiToPSquaredMinus1Over3 is ∈ GF(p). With y we get a factor of -1. We - // ignore this to end up with -Q2. - - minusQ2 := newTwistPoint(pool) - minusQ2.x.MulScalar(aAffine.x, xiToPSquaredMinus1Over3) - minusQ2.y.Set(aAffine.y) - minusQ2.z.SetOne() - minusQ2.t.SetOne() - - r2.Square(q1.y, pool) - a, b, c, newR := lineFunctionAdd(r, q1, bAffine, r2, pool) - mulLine(ret, a, b, c, pool) - a.Put(pool) - b.Put(pool) - c.Put(pool) - r.Put(pool) - r = newR - - r2.Square(minusQ2.y, pool) - a, b, c, newR = lineFunctionAdd(r, minusQ2, bAffine, r2, pool) - mulLine(ret, a, b, c, pool) - a.Put(pool) - b.Put(pool) - c.Put(pool) - r.Put(pool) - r = newR - - aAffine.Put(pool) - bAffine.Put(pool) - minusA.Put(pool) - r.Put(pool) - r2.Put(pool) - - return ret -} - -// finalExponentiation computes the (p¹²-1)/Order-th power of an element of -// GF(p¹²) to obtain an element of GT (steps 13-15 of algorithm 1 from -// http://cryptojedi.org/papers/dclxvi-20100714.pdf) -func finalExponentiation(in *gfP12, pool *bnPool) *gfP12 { - t1 := newGFp12(pool) - - // This is the p^6-Frobenius - t1.x.Negative(in.x) - t1.y.Set(in.y) - - inv := newGFp12(pool) - inv.Invert(in, pool) - t1.Mul(t1, inv, pool) - - t2 := newGFp12(pool).FrobeniusP2(t1, pool) - t1.Mul(t1, t2, pool) - - fp := newGFp12(pool).Frobenius(t1, pool) - fp2 := newGFp12(pool).FrobeniusP2(t1, pool) - fp3 := newGFp12(pool).Frobenius(fp2, pool) - - fu, fu2, fu3 := newGFp12(pool), newGFp12(pool), newGFp12(pool) - fu.Exp(t1, u, pool) - fu2.Exp(fu, u, pool) - fu3.Exp(fu2, u, pool) - - y3 := newGFp12(pool).Frobenius(fu, pool) - fu2p := newGFp12(pool).Frobenius(fu2, pool) - fu3p := newGFp12(pool).Frobenius(fu3, pool) - y2 := newGFp12(pool).FrobeniusP2(fu2, pool) - - y0 := newGFp12(pool) - y0.Mul(fp, fp2, pool) - y0.Mul(y0, fp3, pool) - - y1, y4, y5 := newGFp12(pool), newGFp12(pool), newGFp12(pool) - y1.Conjugate(t1) - y5.Conjugate(fu2) - y3.Conjugate(y3) - y4.Mul(fu, fu2p, pool) - y4.Conjugate(y4) - - y6 := newGFp12(pool) - y6.Mul(fu3, fu3p, pool) - y6.Conjugate(y6) - - t0 := newGFp12(pool) - t0.Square(y6, pool) - t0.Mul(t0, y4, pool) - t0.Mul(t0, y5, pool) - t1.Mul(y3, y5, pool) - t1.Mul(t1, t0, pool) - t0.Mul(t0, y2, pool) - t1.Square(t1, pool) - t1.Mul(t1, t0, pool) - t1.Square(t1, pool) - t0.Mul(t1, y1, pool) - t1.Mul(t1, y0, pool) - t0.Square(t0, pool) - t0.Mul(t0, t1, pool) - - inv.Put(pool) - t1.Put(pool) - t2.Put(pool) - fp.Put(pool) - fp2.Put(pool) - fp3.Put(pool) - fu.Put(pool) - fu2.Put(pool) - fu3.Put(pool) - fu2p.Put(pool) - fu3p.Put(pool) - y0.Put(pool) - y1.Put(pool) - y2.Put(pool) - y3.Put(pool) - y4.Put(pool) - y5.Put(pool) - y6.Put(pool) - - return t0 -} - -func optimalAte(a *twistPoint, b *curvePoint, pool *bnPool) *gfP12 { - e := miller(a, b, pool) - ret := finalExponentiation(e, pool) - e.Put(pool) - - if a.IsInfinity() || b.IsInfinity() { - ret.SetOne() - } - - return ret -} diff --git a/vendor/golang.org/x/crypto/bn256/twist.go b/vendor/golang.org/x/crypto/bn256/twist.go deleted file mode 100644 index 4f8b3fed..00000000 --- a/vendor/golang.org/x/crypto/bn256/twist.go +++ /dev/null @@ -1,249 +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 bn256 - -import ( - "math/big" -) - -// twistPoint implements the elliptic curve y²=x³+3/ξ over GF(p²). Points are -// kept in Jacobian form and t=z² when valid. The group G₂ is the set of -// n-torsion points of this curve over GF(p²) (where n = Order) -type twistPoint struct { - x, y, z, t *gfP2 -} - -var twistB = &gfP2{ - bigFromBase10("6500054969564660373279643874235990574282535810762300357187714502686418407178"), - bigFromBase10("45500384786952622612957507119651934019977750675336102500314001518804928850249"), -} - -// twistGen is the generator of group G₂. -var twistGen = &twistPoint{ - &gfP2{ - bigFromBase10("21167961636542580255011770066570541300993051739349375019639421053990175267184"), - bigFromBase10("64746500191241794695844075326670126197795977525365406531717464316923369116492"), - }, - &gfP2{ - bigFromBase10("20666913350058776956210519119118544732556678129809273996262322366050359951122"), - bigFromBase10("17778617556404439934652658462602675281523610326338642107814333856843981424549"), - }, - &gfP2{ - bigFromBase10("0"), - bigFromBase10("1"), - }, - &gfP2{ - bigFromBase10("0"), - bigFromBase10("1"), - }, -} - -func newTwistPoint(pool *bnPool) *twistPoint { - return &twistPoint{ - newGFp2(pool), - newGFp2(pool), - newGFp2(pool), - newGFp2(pool), - } -} - -func (c *twistPoint) String() string { - return "(" + c.x.String() + ", " + c.y.String() + ", " + c.z.String() + ")" -} - -func (c *twistPoint) Put(pool *bnPool) { - c.x.Put(pool) - c.y.Put(pool) - c.z.Put(pool) - c.t.Put(pool) -} - -func (c *twistPoint) Set(a *twistPoint) { - c.x.Set(a.x) - c.y.Set(a.y) - c.z.Set(a.z) - c.t.Set(a.t) -} - -// IsOnCurve returns true iff c is on the curve where c must be in affine form. -func (c *twistPoint) IsOnCurve() bool { - pool := new(bnPool) - yy := newGFp2(pool).Square(c.y, pool) - xxx := newGFp2(pool).Square(c.x, pool) - xxx.Mul(xxx, c.x, pool) - yy.Sub(yy, xxx) - yy.Sub(yy, twistB) - yy.Minimal() - return yy.x.Sign() == 0 && yy.y.Sign() == 0 -} - -func (c *twistPoint) SetInfinity() { - c.z.SetZero() -} - -func (c *twistPoint) IsInfinity() bool { - return c.z.IsZero() -} - -func (c *twistPoint) Add(a, b *twistPoint, pool *bnPool) { - // For additional comments, see the same function in curve.go. - - if a.IsInfinity() { - c.Set(b) - return - } - if b.IsInfinity() { - c.Set(a) - return - } - - // See http://hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/addition/add-2007-bl.op3 - z1z1 := newGFp2(pool).Square(a.z, pool) - z2z2 := newGFp2(pool).Square(b.z, pool) - u1 := newGFp2(pool).Mul(a.x, z2z2, pool) - u2 := newGFp2(pool).Mul(b.x, z1z1, pool) - - t := newGFp2(pool).Mul(b.z, z2z2, pool) - s1 := newGFp2(pool).Mul(a.y, t, pool) - - t.Mul(a.z, z1z1, pool) - s2 := newGFp2(pool).Mul(b.y, t, pool) - - h := newGFp2(pool).Sub(u2, u1) - xEqual := h.IsZero() - - t.Add(h, h) - i := newGFp2(pool).Square(t, pool) - j := newGFp2(pool).Mul(h, i, pool) - - t.Sub(s2, s1) - yEqual := t.IsZero() - if xEqual && yEqual { - c.Double(a, pool) - return - } - r := newGFp2(pool).Add(t, t) - - v := newGFp2(pool).Mul(u1, i, pool) - - t4 := newGFp2(pool).Square(r, pool) - t.Add(v, v) - t6 := newGFp2(pool).Sub(t4, j) - c.x.Sub(t6, t) - - t.Sub(v, c.x) // t7 - t4.Mul(s1, j, pool) // t8 - t6.Add(t4, t4) // t9 - t4.Mul(r, t, pool) // t10 - c.y.Sub(t4, t6) - - t.Add(a.z, b.z) // t11 - t4.Square(t, pool) // t12 - t.Sub(t4, z1z1) // t13 - t4.Sub(t, z2z2) // t14 - c.z.Mul(t4, h, pool) - - z1z1.Put(pool) - z2z2.Put(pool) - u1.Put(pool) - u2.Put(pool) - t.Put(pool) - s1.Put(pool) - s2.Put(pool) - h.Put(pool) - i.Put(pool) - j.Put(pool) - r.Put(pool) - v.Put(pool) - t4.Put(pool) - t6.Put(pool) -} - -func (c *twistPoint) Double(a *twistPoint, pool *bnPool) { - // See http://hyperelliptic.org/EFD/g1p/auto-code/shortw/jacobian-0/doubling/dbl-2009-l.op3 - A := newGFp2(pool).Square(a.x, pool) - B := newGFp2(pool).Square(a.y, pool) - C := newGFp2(pool).Square(B, pool) - - t := newGFp2(pool).Add(a.x, B) - t2 := newGFp2(pool).Square(t, pool) - t.Sub(t2, A) - t2.Sub(t, C) - d := newGFp2(pool).Add(t2, t2) - t.Add(A, A) - e := newGFp2(pool).Add(t, A) - f := newGFp2(pool).Square(e, pool) - - t.Add(d, d) - c.x.Sub(f, t) - - t.Add(C, C) - t2.Add(t, t) - t.Add(t2, t2) - c.y.Sub(d, c.x) - t2.Mul(e, c.y, pool) - c.y.Sub(t2, t) - - t.Mul(a.y, a.z, pool) - c.z.Add(t, t) - - A.Put(pool) - B.Put(pool) - C.Put(pool) - t.Put(pool) - t2.Put(pool) - d.Put(pool) - e.Put(pool) - f.Put(pool) -} - -func (c *twistPoint) Mul(a *twistPoint, scalar *big.Int, pool *bnPool) *twistPoint { - sum := newTwistPoint(pool) - sum.SetInfinity() - t := newTwistPoint(pool) - - for i := scalar.BitLen(); i >= 0; i-- { - t.Double(sum, pool) - if scalar.Bit(i) != 0 { - sum.Add(t, a, pool) - } else { - sum.Set(t) - } - } - - c.Set(sum) - sum.Put(pool) - t.Put(pool) - return c -} - -func (c *twistPoint) MakeAffine(pool *bnPool) *twistPoint { - if c.z.IsOne() { - return c - } - - zInv := newGFp2(pool).Invert(c.z, pool) - t := newGFp2(pool).Mul(c.y, zInv, pool) - zInv2 := newGFp2(pool).Square(zInv, pool) - c.y.Mul(t, zInv2, pool) - t.Mul(c.x, zInv2, pool) - c.x.Set(t) - c.z.SetOne() - c.t.SetOne() - - zInv.Put(pool) - t.Put(pool) - zInv2.Put(pool) - - return c -} - -func (c *twistPoint) Negative(a *twistPoint, pool *bnPool) { - c.x.Set(a.x) - c.y.SetZero() - c.y.Sub(c.y, a.y) - c.z.Set(a.z) - c.t.SetZero() -} diff --git a/vendor/golang.org/x/crypto/cast5/cast5.go b/vendor/golang.org/x/crypto/cast5/cast5.go deleted file mode 100644 index 0b4af37b..00000000 --- a/vendor/golang.org/x/crypto/cast5/cast5.go +++ /dev/null @@ -1,526 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package cast5 implements CAST5, as defined in RFC 2144. CAST5 is a common -// OpenPGP cipher. -package cast5 // import "golang.org/x/crypto/cast5" - -import "errors" - -const BlockSize = 8 -const KeySize = 16 - -type Cipher struct { - masking [16]uint32 - rotate [16]uint8 -} - -func NewCipher(key []byte) (c *Cipher, err error) { - if len(key) != KeySize { - return nil, errors.New("CAST5: keys must be 16 bytes") - } - - c = new(Cipher) - c.keySchedule(key) - return -} - -func (c *Cipher) BlockSize() int { - return BlockSize -} - -func (c *Cipher) Encrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - - l, r = r, l^f1(r, c.masking[0], c.rotate[0]) - l, r = r, l^f2(r, c.masking[1], c.rotate[1]) - l, r = r, l^f3(r, c.masking[2], c.rotate[2]) - l, r = r, l^f1(r, c.masking[3], c.rotate[3]) - - l, r = r, l^f2(r, c.masking[4], c.rotate[4]) - l, r = r, l^f3(r, c.masking[5], c.rotate[5]) - l, r = r, l^f1(r, c.masking[6], c.rotate[6]) - l, r = r, l^f2(r, c.masking[7], c.rotate[7]) - - l, r = r, l^f3(r, c.masking[8], c.rotate[8]) - l, r = r, l^f1(r, c.masking[9], c.rotate[9]) - l, r = r, l^f2(r, c.masking[10], c.rotate[10]) - l, r = r, l^f3(r, c.masking[11], c.rotate[11]) - - l, r = r, l^f1(r, c.masking[12], c.rotate[12]) - l, r = r, l^f2(r, c.masking[13], c.rotate[13]) - l, r = r, l^f3(r, c.masking[14], c.rotate[14]) - l, r = r, l^f1(r, c.masking[15], c.rotate[15]) - - dst[0] = uint8(r >> 24) - dst[1] = uint8(r >> 16) - dst[2] = uint8(r >> 8) - dst[3] = uint8(r) - dst[4] = uint8(l >> 24) - dst[5] = uint8(l >> 16) - dst[6] = uint8(l >> 8) - dst[7] = uint8(l) -} - -func (c *Cipher) Decrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - - l, r = r, l^f1(r, c.masking[15], c.rotate[15]) - l, r = r, l^f3(r, c.masking[14], c.rotate[14]) - l, r = r, l^f2(r, c.masking[13], c.rotate[13]) - l, r = r, l^f1(r, c.masking[12], c.rotate[12]) - - l, r = r, l^f3(r, c.masking[11], c.rotate[11]) - l, r = r, l^f2(r, c.masking[10], c.rotate[10]) - l, r = r, l^f1(r, c.masking[9], c.rotate[9]) - l, r = r, l^f3(r, c.masking[8], c.rotate[8]) - - l, r = r, l^f2(r, c.masking[7], c.rotate[7]) - l, r = r, l^f1(r, c.masking[6], c.rotate[6]) - l, r = r, l^f3(r, c.masking[5], c.rotate[5]) - l, r = r, l^f2(r, c.masking[4], c.rotate[4]) - - l, r = r, l^f1(r, c.masking[3], c.rotate[3]) - l, r = r, l^f3(r, c.masking[2], c.rotate[2]) - l, r = r, l^f2(r, c.masking[1], c.rotate[1]) - l, r = r, l^f1(r, c.masking[0], c.rotate[0]) - - dst[0] = uint8(r >> 24) - dst[1] = uint8(r >> 16) - dst[2] = uint8(r >> 8) - dst[3] = uint8(r) - dst[4] = uint8(l >> 24) - dst[5] = uint8(l >> 16) - dst[6] = uint8(l >> 8) - dst[7] = uint8(l) -} - -type keyScheduleA [4][7]uint8 -type keyScheduleB [4][5]uint8 - -// keyScheduleRound contains the magic values for a round of the key schedule. -// The keyScheduleA deals with the lines like: -// z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8] -// Conceptually, both x and z are in the same array, x first. The first -// element describes which word of this array gets written to and the -// second, which word gets read. So, for the line above, it's "4, 0", because -// it's writing to the first word of z, which, being after x, is word 4, and -// reading from the first word of x: word 0. -// -// Next are the indexes into the S-boxes. Now the array is treated as bytes. So -// "xD" is 0xd. The first byte of z is written as "16 + 0", just to be clear -// that it's z that we're indexing. -// -// keyScheduleB deals with lines like: -// K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2] -// "K1" is ignored because key words are always written in order. So the five -// elements are the S-box indexes. They use the same form as in keyScheduleA, -// above. - -type keyScheduleRound struct{} -type keySchedule []keyScheduleRound - -var schedule = []struct { - a keyScheduleA - b keyScheduleB -}{ - { - keyScheduleA{ - {4, 0, 0xd, 0xf, 0xc, 0xe, 0x8}, - {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, - {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, - {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, - }, - keyScheduleB{ - {16 + 8, 16 + 9, 16 + 7, 16 + 6, 16 + 2}, - {16 + 0xa, 16 + 0xb, 16 + 5, 16 + 4, 16 + 6}, - {16 + 0xc, 16 + 0xd, 16 + 3, 16 + 2, 16 + 9}, - {16 + 0xe, 16 + 0xf, 16 + 1, 16 + 0, 16 + 0xc}, - }, - }, - { - keyScheduleA{ - {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, - {1, 4, 0, 2, 1, 3, 16 + 2}, - {2, 5, 7, 6, 5, 4, 16 + 1}, - {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, - }, - keyScheduleB{ - {3, 2, 0xc, 0xd, 8}, - {1, 0, 0xe, 0xf, 0xd}, - {7, 6, 8, 9, 3}, - {5, 4, 0xa, 0xb, 7}, - }, - }, - { - keyScheduleA{ - {4, 0, 0xd, 0xf, 0xc, 0xe, 8}, - {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, - {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, - {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, - }, - keyScheduleB{ - {16 + 3, 16 + 2, 16 + 0xc, 16 + 0xd, 16 + 9}, - {16 + 1, 16 + 0, 16 + 0xe, 16 + 0xf, 16 + 0xc}, - {16 + 7, 16 + 6, 16 + 8, 16 + 9, 16 + 2}, - {16 + 5, 16 + 4, 16 + 0xa, 16 + 0xb, 16 + 6}, - }, - }, - { - keyScheduleA{ - {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, - {1, 4, 0, 2, 1, 3, 16 + 2}, - {2, 5, 7, 6, 5, 4, 16 + 1}, - {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, - }, - keyScheduleB{ - {8, 9, 7, 6, 3}, - {0xa, 0xb, 5, 4, 7}, - {0xc, 0xd, 3, 2, 8}, - {0xe, 0xf, 1, 0, 0xd}, - }, - }, -} - -func (c *Cipher) keySchedule(in []byte) { - var t [8]uint32 - var k [32]uint32 - - for i := 0; i < 4; i++ { - j := i * 4 - t[i] = uint32(in[j])<<24 | uint32(in[j+1])<<16 | uint32(in[j+2])<<8 | uint32(in[j+3]) - } - - x := []byte{6, 7, 4, 5} - ki := 0 - - for half := 0; half < 2; half++ { - for _, round := range schedule { - for j := 0; j < 4; j++ { - var a [7]uint8 - copy(a[:], round.a[j][:]) - w := t[a[1]] - w ^= sBox[4][(t[a[2]>>2]>>(24-8*(a[2]&3)))&0xff] - w ^= sBox[5][(t[a[3]>>2]>>(24-8*(a[3]&3)))&0xff] - w ^= sBox[6][(t[a[4]>>2]>>(24-8*(a[4]&3)))&0xff] - w ^= sBox[7][(t[a[5]>>2]>>(24-8*(a[5]&3)))&0xff] - w ^= sBox[x[j]][(t[a[6]>>2]>>(24-8*(a[6]&3)))&0xff] - t[a[0]] = w - } - - for j := 0; j < 4; j++ { - var b [5]uint8 - copy(b[:], round.b[j][:]) - w := sBox[4][(t[b[0]>>2]>>(24-8*(b[0]&3)))&0xff] - w ^= sBox[5][(t[b[1]>>2]>>(24-8*(b[1]&3)))&0xff] - w ^= sBox[6][(t[b[2]>>2]>>(24-8*(b[2]&3)))&0xff] - w ^= sBox[7][(t[b[3]>>2]>>(24-8*(b[3]&3)))&0xff] - w ^= sBox[4+j][(t[b[4]>>2]>>(24-8*(b[4]&3)))&0xff] - k[ki] = w - ki++ - } - } - } - - for i := 0; i < 16; i++ { - c.masking[i] = k[i] - c.rotate[i] = uint8(k[16+i] & 0x1f) - } -} - -// These are the three 'f' functions. See RFC 2144, section 2.2. -func f1(d, m uint32, r uint8) uint32 { - t := m + d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] ^ sBox[1][(I>>16)&0xff]) - sBox[2][(I>>8)&0xff]) + sBox[3][I&0xff] -} - -func f2(d, m uint32, r uint8) uint32 { - t := m ^ d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] - sBox[1][(I>>16)&0xff]) + sBox[2][(I>>8)&0xff]) ^ sBox[3][I&0xff] -} - -func f3(d, m uint32, r uint8) uint32 { - t := m - d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] + sBox[1][(I>>16)&0xff]) ^ sBox[2][(I>>8)&0xff]) - sBox[3][I&0xff] -} - -var sBox = [8][256]uint32{ - { - 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949, - 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, - 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, - 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0, - 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7, - 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935, - 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d, - 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, - 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe, - 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3, - 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167, - 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291, - 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779, - 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2, - 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511, - 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d, - 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5, - 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324, - 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, - 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc, - 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d, - 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96, - 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a, - 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, - 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, - 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6, - 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, - 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872, - 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c, - 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e, - 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9, - 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf, - }, - { - 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651, - 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, - 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb, - 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, - 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b, - 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359, - 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b, - 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c, - 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34, - 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb, - 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd, - 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860, - 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b, - 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, - 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b, - 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, - 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c, - 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13, - 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f, - 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, - 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6, - 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58, - 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, - 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, - 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6, - 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, - 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6, - 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f, - 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, - 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, - 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9, - 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1, - }, - { - 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90, - 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5, - 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e, - 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240, - 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, - 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, - 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71, - 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, - 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, - 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15, - 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2, - 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176, - 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148, - 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc, - 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, - 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e, - 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, - 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f, - 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a, - 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b, - 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, - 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, - 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, - 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536, - 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, - 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, - 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69, - 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, - 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49, - 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d, - 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a, - 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783, - }, - { - 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1, - 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf, - 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15, - 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121, - 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25, - 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, - 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb, - 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5, - 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d, - 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6, - 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23, - 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003, - 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, - 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119, - 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, - 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a, - 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79, - 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df, - 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, - 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab, - 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7, - 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, - 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2, - 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2, - 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, - 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919, - 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, - 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, - 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab, - 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04, - 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282, - 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2, - }, - { - 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f, - 0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a, - 0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff, - 0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02, - 0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a, - 0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7, - 0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9, - 0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981, - 0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774, - 0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655, - 0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2, - 0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910, - 0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1, - 0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da, - 0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049, - 0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f, - 0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba, - 0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be, - 0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3, - 0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840, - 0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4, - 0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2, - 0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7, - 0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5, - 0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e, - 0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e, - 0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801, - 0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad, - 0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0, - 0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20, - 0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8, - 0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4, - }, - { - 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac, - 0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138, - 0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367, - 0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98, - 0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072, - 0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3, - 0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd, - 0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8, - 0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9, - 0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54, - 0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387, - 0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc, - 0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf, - 0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf, - 0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f, - 0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289, - 0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950, - 0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f, - 0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b, - 0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be, - 0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13, - 0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976, - 0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0, - 0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891, - 0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da, - 0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc, - 0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084, - 0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25, - 0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121, - 0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5, - 0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd, - 0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f, - }, - { - 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f, - 0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de, - 0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43, - 0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19, - 0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2, - 0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516, - 0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88, - 0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816, - 0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756, - 0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a, - 0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264, - 0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688, - 0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28, - 0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3, - 0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7, - 0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06, - 0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033, - 0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a, - 0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566, - 0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509, - 0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962, - 0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e, - 0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c, - 0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c, - 0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285, - 0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301, - 0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be, - 0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767, - 0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647, - 0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914, - 0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c, - 0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3, - }, - { - 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5, - 0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc, - 0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd, - 0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d, - 0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2, - 0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862, - 0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc, - 0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c, - 0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e, - 0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039, - 0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8, - 0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42, - 0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5, - 0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472, - 0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225, - 0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c, - 0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb, - 0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054, - 0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70, - 0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc, - 0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c, - 0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3, - 0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4, - 0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101, - 0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f, - 0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e, - 0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a, - 0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c, - 0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384, - 0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c, - 0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82, - 0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e, - }, -} diff --git a/vendor/golang.org/x/crypto/cast5/cast5_test.go b/vendor/golang.org/x/crypto/cast5/cast5_test.go deleted file mode 100644 index 778b272a..00000000 --- a/vendor/golang.org/x/crypto/cast5/cast5_test.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cast5 - -import ( - "bytes" - "encoding/hex" - "testing" -) - -// This test vector is taken from RFC 2144, App B.1. -// Since the other two test vectors are for reduced-round variants, we can't -// use them. -var basicTests = []struct { - key, plainText, cipherText string -}{ - { - "0123456712345678234567893456789a", - "0123456789abcdef", - "238b4fe5847e44b2", - }, -} - -func TestBasic(t *testing.T) { - for i, test := range basicTests { - key, _ := hex.DecodeString(test.key) - plainText, _ := hex.DecodeString(test.plainText) - expected, _ := hex.DecodeString(test.cipherText) - - c, err := NewCipher(key) - if err != nil { - t.Errorf("#%d: failed to create Cipher: %s", i, err) - continue - } - var cipherText [BlockSize]byte - c.Encrypt(cipherText[:], plainText) - if !bytes.Equal(cipherText[:], expected) { - t.Errorf("#%d: got:%x want:%x", i, cipherText, expected) - } - - var plainTextAgain [BlockSize]byte - c.Decrypt(plainTextAgain[:], cipherText[:]) - if !bytes.Equal(plainTextAgain[:], plainText) { - t.Errorf("#%d: got:%x want:%x", i, plainTextAgain, plainText) - } - } -} - -// TestFull performs the test specified in RFC 2144, App B.2. -// However, due to the length of time taken, it's disabled here and a more -// limited version is included, below. -func TestFull(t *testing.T) { - if testing.Short() { - // This is too slow for normal testing - return - } - - a, b := iterate(1000000) - - const expectedA = "eea9d0a249fd3ba6b3436fb89d6dca92" - const expectedB = "b2c95eb00c31ad7180ac05b8e83d696e" - - if hex.EncodeToString(a) != expectedA { - t.Errorf("a: got:%x want:%s", a, expectedA) - } - if hex.EncodeToString(b) != expectedB { - t.Errorf("b: got:%x want:%s", b, expectedB) - } -} - -func iterate(iterations int) ([]byte, []byte) { - const initValueHex = "0123456712345678234567893456789a" - - initValue, _ := hex.DecodeString(initValueHex) - - var a, b [16]byte - copy(a[:], initValue) - copy(b[:], initValue) - - for i := 0; i < iterations; i++ { - c, _ := NewCipher(b[:]) - c.Encrypt(a[:8], a[:8]) - c.Encrypt(a[8:], a[8:]) - c, _ = NewCipher(a[:]) - c.Encrypt(b[:8], b[:8]) - c.Encrypt(b[8:], b[8:]) - } - - return a[:], b[:] -} - -func TestLimited(t *testing.T) { - a, b := iterate(1000) - - const expectedA = "23f73b14b02a2ad7dfb9f2c35644798d" - const expectedB = "e5bf37eff14c456a40b21ce369370a9f" - - if hex.EncodeToString(a) != expectedA { - t.Errorf("a: got:%x want:%s", a, expectedA) - } - if hex.EncodeToString(b) != expectedB { - t.Errorf("b: got:%x want:%s", b, expectedB) - } -} diff --git a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go b/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go deleted file mode 100644 index 3f0dcb9d..00000000 --- a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go +++ /dev/null @@ -1,83 +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 chacha20poly1305 implements the ChaCha20-Poly1305 AEAD as specified in RFC 7539. -package chacha20poly1305 // import "golang.org/x/crypto/chacha20poly1305" - -import ( - "crypto/cipher" - "errors" -) - -const ( - // KeySize is the size of the key used by this AEAD, in bytes. - KeySize = 32 - // NonceSize is the size of the nonce used with this AEAD, in bytes. - NonceSize = 12 -) - -type chacha20poly1305 struct { - key [32]byte -} - -// New returns a ChaCha20-Poly1305 AEAD that uses the given, 256-bit key. -func New(key []byte) (cipher.AEAD, error) { - if len(key) != KeySize { - return nil, errors.New("chacha20poly1305: bad key length") - } - ret := new(chacha20poly1305) - copy(ret.key[:], key) - return ret, nil -} - -func (c *chacha20poly1305) NonceSize() int { - return NonceSize -} - -func (c *chacha20poly1305) Overhead() int { - return 16 -} - -func (c *chacha20poly1305) Seal(dst, nonce, plaintext, additionalData []byte) []byte { - if len(nonce) != NonceSize { - panic("chacha20poly1305: bad nonce length passed to Seal") - } - - if uint64(len(plaintext)) > (1<<38)-64 { - panic("chacha20poly1305: plaintext too large") - } - - return c.seal(dst, nonce, plaintext, additionalData) -} - -var errOpen = errors.New("chacha20poly1305: message authentication failed") - -func (c *chacha20poly1305) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { - if len(nonce) != NonceSize { - panic("chacha20poly1305: bad nonce length passed to Open") - } - if len(ciphertext) < 16 { - return nil, errOpen - } - if uint64(len(ciphertext)) > (1<<38)-48 { - panic("chacha20poly1305: ciphertext too large") - } - - return c.open(dst, nonce, ciphertext, additionalData) -} - -// sliceForAppend takes a slice and a requested number of bytes. It returns a -// slice with the contents of the given slice followed by that many bytes and a -// second slice that aliases into it and contains only the extra bytes. If the -// original slice has sufficient capacity then no allocation is performed. -func sliceForAppend(in []byte, n int) (head, tail []byte) { - if total := len(in) + n; cap(in) >= total { - head = in[:total] - } else { - head = make([]byte, total) - copy(head, in) - } - tail = head[len(in):] - return -} diff --git a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go b/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go deleted file mode 100644 index 7cd7ad83..00000000 --- a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go +++ /dev/null @@ -1,127 +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. - -// +build go1.7,amd64,!gccgo,!appengine - -package chacha20poly1305 - -import "encoding/binary" - -//go:noescape -func chacha20Poly1305Open(dst []byte, key []uint32, src, ad []byte) bool - -//go:noescape -func chacha20Poly1305Seal(dst []byte, key []uint32, src, ad []byte) - -// cpuid is implemented in chacha20poly1305_amd64.s. -func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) - -// xgetbv with ecx = 0 is implemented in chacha20poly1305_amd64.s. -func xgetbv() (eax, edx uint32) - -var ( - useASM bool - useAVX2 bool -) - -func init() { - detectCPUFeatures() -} - -// detectCPUFeatures is used to detect if cpu instructions -// used by the functions implemented in assembler in -// chacha20poly1305_amd64.s are supported. -func detectCPUFeatures() { - maxID, _, _, _ := cpuid(0, 0) - if maxID < 1 { - return - } - - _, _, ecx1, _ := cpuid(1, 0) - - haveSSSE3 := isSet(9, ecx1) - useASM = haveSSSE3 - - haveOSXSAVE := isSet(27, ecx1) - - osSupportsAVX := false - // For XGETBV, OSXSAVE bit is required and sufficient. - if haveOSXSAVE { - eax, _ := xgetbv() - // Check if XMM and YMM registers have OS support. - osSupportsAVX = isSet(1, eax) && isSet(2, eax) - } - haveAVX := isSet(28, ecx1) && osSupportsAVX - - if maxID < 7 { - return - } - - _, ebx7, _, _ := cpuid(7, 0) - haveAVX2 := isSet(5, ebx7) && haveAVX - haveBMI2 := isSet(8, ebx7) - - useAVX2 = haveAVX2 && haveBMI2 -} - -// isSet checks if bit at bitpos is set in value. -func isSet(bitpos uint, value uint32) bool { - return value&(1<+0x00(SB)/4, $0x61707865 -DATA ·chacha20Constants<>+0x04(SB)/4, $0x3320646e -DATA ·chacha20Constants<>+0x08(SB)/4, $0x79622d32 -DATA ·chacha20Constants<>+0x0c(SB)/4, $0x6b206574 -DATA ·chacha20Constants<>+0x10(SB)/4, $0x61707865 -DATA ·chacha20Constants<>+0x14(SB)/4, $0x3320646e -DATA ·chacha20Constants<>+0x18(SB)/4, $0x79622d32 -DATA ·chacha20Constants<>+0x1c(SB)/4, $0x6b206574 -// <<< 16 with PSHUFB -DATA ·rol16<>+0x00(SB)/8, $0x0504070601000302 -DATA ·rol16<>+0x08(SB)/8, $0x0D0C0F0E09080B0A -DATA ·rol16<>+0x10(SB)/8, $0x0504070601000302 -DATA ·rol16<>+0x18(SB)/8, $0x0D0C0F0E09080B0A -// <<< 8 with PSHUFB -DATA ·rol8<>+0x00(SB)/8, $0x0605040702010003 -DATA ·rol8<>+0x08(SB)/8, $0x0E0D0C0F0A09080B -DATA ·rol8<>+0x10(SB)/8, $0x0605040702010003 -DATA ·rol8<>+0x18(SB)/8, $0x0E0D0C0F0A09080B - -DATA ·avx2InitMask<>+0x00(SB)/8, $0x0 -DATA ·avx2InitMask<>+0x08(SB)/8, $0x0 -DATA ·avx2InitMask<>+0x10(SB)/8, $0x1 -DATA ·avx2InitMask<>+0x18(SB)/8, $0x0 - -DATA ·avx2IncMask<>+0x00(SB)/8, $0x2 -DATA ·avx2IncMask<>+0x08(SB)/8, $0x0 -DATA ·avx2IncMask<>+0x10(SB)/8, $0x2 -DATA ·avx2IncMask<>+0x18(SB)/8, $0x0 -// Poly1305 key clamp -DATA ·polyClampMask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF -DATA ·polyClampMask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC -DATA ·polyClampMask<>+0x10(SB)/8, $0xFFFFFFFFFFFFFFFF -DATA ·polyClampMask<>+0x18(SB)/8, $0xFFFFFFFFFFFFFFFF - -DATA ·sseIncMask<>+0x00(SB)/8, $0x1 -DATA ·sseIncMask<>+0x08(SB)/8, $0x0 -// To load/store the last < 16 bytes in a buffer -DATA ·andMask<>+0x00(SB)/8, $0x00000000000000ff -DATA ·andMask<>+0x08(SB)/8, $0x0000000000000000 -DATA ·andMask<>+0x10(SB)/8, $0x000000000000ffff -DATA ·andMask<>+0x18(SB)/8, $0x0000000000000000 -DATA ·andMask<>+0x20(SB)/8, $0x0000000000ffffff -DATA ·andMask<>+0x28(SB)/8, $0x0000000000000000 -DATA ·andMask<>+0x30(SB)/8, $0x00000000ffffffff -DATA ·andMask<>+0x38(SB)/8, $0x0000000000000000 -DATA ·andMask<>+0x40(SB)/8, $0x000000ffffffffff -DATA ·andMask<>+0x48(SB)/8, $0x0000000000000000 -DATA ·andMask<>+0x50(SB)/8, $0x0000ffffffffffff -DATA ·andMask<>+0x58(SB)/8, $0x0000000000000000 -DATA ·andMask<>+0x60(SB)/8, $0x00ffffffffffffff -DATA ·andMask<>+0x68(SB)/8, $0x0000000000000000 -DATA ·andMask<>+0x70(SB)/8, $0xffffffffffffffff -DATA ·andMask<>+0x78(SB)/8, $0x0000000000000000 -DATA ·andMask<>+0x80(SB)/8, $0xffffffffffffffff -DATA ·andMask<>+0x88(SB)/8, $0x00000000000000ff -DATA ·andMask<>+0x90(SB)/8, $0xffffffffffffffff -DATA ·andMask<>+0x98(SB)/8, $0x000000000000ffff -DATA ·andMask<>+0xa0(SB)/8, $0xffffffffffffffff -DATA ·andMask<>+0xa8(SB)/8, $0x0000000000ffffff -DATA ·andMask<>+0xb0(SB)/8, $0xffffffffffffffff -DATA ·andMask<>+0xb8(SB)/8, $0x00000000ffffffff -DATA ·andMask<>+0xc0(SB)/8, $0xffffffffffffffff -DATA ·andMask<>+0xc8(SB)/8, $0x000000ffffffffff -DATA ·andMask<>+0xd0(SB)/8, $0xffffffffffffffff -DATA ·andMask<>+0xd8(SB)/8, $0x0000ffffffffffff -DATA ·andMask<>+0xe0(SB)/8, $0xffffffffffffffff -DATA ·andMask<>+0xe8(SB)/8, $0x00ffffffffffffff - -GLOBL ·chacha20Constants<>(SB), (NOPTR+RODATA), $32 -GLOBL ·rol16<>(SB), (NOPTR+RODATA), $32 -GLOBL ·rol8<>(SB), (NOPTR+RODATA), $32 -GLOBL ·sseIncMask<>(SB), (NOPTR+RODATA), $16 -GLOBL ·avx2IncMask<>(SB), (NOPTR+RODATA), $32 -GLOBL ·avx2InitMask<>(SB), (NOPTR+RODATA), $32 -GLOBL ·polyClampMask<>(SB), (NOPTR+RODATA), $32 -GLOBL ·andMask<>(SB), (NOPTR+RODATA), $240 -// No PALIGNR in Go ASM yet (but VPALIGNR is present). -#define shiftB0Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xdb; BYTE $0x04 // PALIGNR $4, X3, X3 -#define shiftB1Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xe4; BYTE $0x04 // PALIGNR $4, X4, X4 -#define shiftB2Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xed; BYTE $0x04 // PALIGNR $4, X5, X5 -#define shiftB3Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xed; BYTE $0x04 // PALIGNR $4, X13, X13 -#define shiftC0Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xf6; BYTE $0x08 // PALIGNR $8, X6, X6 -#define shiftC1Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xff; BYTE $0x08 // PALIGNR $8, X7, X7 -#define shiftC2Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xc0; BYTE $0x08 // PALIGNR $8, X8, X8 -#define shiftC3Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xf6; BYTE $0x08 // PALIGNR $8, X14, X14 -#define shiftD0Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xc9; BYTE $0x0c // PALIGNR $12, X9, X9 -#define shiftD1Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xd2; BYTE $0x0c // PALIGNR $12, X10, X10 -#define shiftD2Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xdb; BYTE $0x0c // PALIGNR $12, X11, X11 -#define shiftD3Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xff; BYTE $0x0c // PALIGNR $12, X15, X15 -#define shiftB0Right BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xdb; BYTE $0x0c // PALIGNR $12, X3, X3 -#define shiftB1Right BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xe4; BYTE $0x0c // PALIGNR $12, X4, X4 -#define shiftB2Right BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xed; BYTE $0x0c // PALIGNR $12, X5, X5 -#define shiftB3Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xed; BYTE $0x0c // PALIGNR $12, X13, X13 -#define shiftC0Right shiftC0Left -#define shiftC1Right shiftC1Left -#define shiftC2Right shiftC2Left -#define shiftC3Right shiftC3Left -#define shiftD0Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xc9; BYTE $0x04 // PALIGNR $4, X9, X9 -#define shiftD1Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xd2; BYTE $0x04 // PALIGNR $4, X10, X10 -#define shiftD2Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xdb; BYTE $0x04 // PALIGNR $4, X11, X11 -#define shiftD3Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xff; BYTE $0x04 // PALIGNR $4, X15, X15 -// Some macros -#define chachaQR(A, B, C, D, T) \ - PADDD B, A; PXOR A, D; PSHUFB ·rol16<>(SB), D \ - PADDD D, C; PXOR C, B; MOVO B, T; PSLLL $12, T; PSRLL $20, B; PXOR T, B \ - PADDD B, A; PXOR A, D; PSHUFB ·rol8<>(SB), D \ - PADDD D, C; PXOR C, B; MOVO B, T; PSLLL $7, T; PSRLL $25, B; PXOR T, B - -#define chachaQR_AVX2(A, B, C, D, T) \ - VPADDD B, A, A; VPXOR A, D, D; VPSHUFB ·rol16<>(SB), D, D \ - VPADDD D, C, C; VPXOR C, B, B; VPSLLD $12, B, T; VPSRLD $20, B, B; VPXOR T, B, B \ - VPADDD B, A, A; VPXOR A, D, D; VPSHUFB ·rol8<>(SB), D, D \ - VPADDD D, C, C; VPXOR C, B, B; VPSLLD $7, B, T; VPSRLD $25, B, B; VPXOR T, B, B - -#define polyAdd(S) ADDQ S, acc0; ADCQ 8+S, acc1; ADCQ $1, acc2 -#define polyMulStage1 MOVQ (0*8)(BP), AX; MOVQ AX, t2; MULQ acc0; MOVQ AX, t0; MOVQ DX, t1; MOVQ (0*8)(BP), AX; MULQ acc1; IMULQ acc2, t2; ADDQ AX, t1; ADCQ DX, t2 -#define polyMulStage2 MOVQ (1*8)(BP), AX; MOVQ AX, t3; MULQ acc0; ADDQ AX, t1; ADCQ $0, DX; MOVQ DX, acc0; MOVQ (1*8)(BP), AX; MULQ acc1; ADDQ AX, t2; ADCQ $0, DX -#define polyMulStage3 IMULQ acc2, t3; ADDQ acc0, t2; ADCQ DX, t3 -#define polyMulReduceStage MOVQ t0, acc0; MOVQ t1, acc1; MOVQ t2, acc2; ANDQ $3, acc2; MOVQ t2, t0; ANDQ $-4, t0; MOVQ t3, t1; SHRQ $2, t2:t3; SHRQ $2, t3; ADDQ t0, acc0; ADCQ t1, acc1; ADCQ $0, acc2; ADDQ t2, acc0; ADCQ t3, acc1; ADCQ $0, acc2 - -#define polyMulStage1_AVX2 MOVQ (0*8)(BP), DX; MOVQ DX, t2; MULXQ acc0, t0, t1; IMULQ acc2, t2; MULXQ acc1, AX, DX; ADDQ AX, t1; ADCQ DX, t2 -#define polyMulStage2_AVX2 MOVQ (1*8)(BP), DX; MULXQ acc0, acc0, AX; ADDQ acc0, t1; MULXQ acc1, acc1, t3; ADCQ acc1, t2; ADCQ $0, t3 -#define polyMulStage3_AVX2 IMULQ acc2, DX; ADDQ AX, t2; ADCQ DX, t3 - -#define polyMul polyMulStage1; polyMulStage2; polyMulStage3; polyMulReduceStage -#define polyMulAVX2 polyMulStage1_AVX2; polyMulStage2_AVX2; polyMulStage3_AVX2; polyMulReduceStage -// ---------------------------------------------------------------------------- -TEXT polyHashADInternal<>(SB), NOSPLIT, $0 - // adp points to beginning of additional data - // itr2 holds ad length - XORQ acc0, acc0 - XORQ acc1, acc1 - XORQ acc2, acc2 - CMPQ itr2, $13 - JNE hashADLoop - -openFastTLSAD: - // Special treatment for the TLS case of 13 bytes - MOVQ (adp), acc0 - MOVQ 5(adp), acc1 - SHRQ $24, acc1 - MOVQ $1, acc2 - polyMul - RET - -hashADLoop: - // Hash in 16 byte chunks - CMPQ itr2, $16 - JB hashADTail - polyAdd(0(adp)) - LEAQ (1*16)(adp), adp - SUBQ $16, itr2 - polyMul - JMP hashADLoop - -hashADTail: - CMPQ itr2, $0 - JE hashADDone - - // Hash last < 16 byte tail - XORQ t0, t0 - XORQ t1, t1 - XORQ t2, t2 - ADDQ itr2, adp - -hashADTailLoop: - SHLQ $8, t1:t0 - SHLQ $8, t0 - MOVB -1(adp), t2 - XORQ t2, t0 - DECQ adp - DECQ itr2 - JNE hashADTailLoop - -hashADTailFinish: - ADDQ t0, acc0; ADCQ t1, acc1; ADCQ $1, acc2 - polyMul - - // Finished AD -hashADDone: - RET - -// ---------------------------------------------------------------------------- -// func chacha20Poly1305Open(dst, key, src, ad []byte) bool -TEXT ·chacha20Poly1305Open(SB), 0, $288-97 - // For aligned stack access - MOVQ SP, BP - ADDQ $32, BP - ANDQ $-32, BP - MOVQ dst+0(FP), oup - MOVQ key+24(FP), keyp - MOVQ src+48(FP), inp - MOVQ src_len+56(FP), inl - MOVQ ad+72(FP), adp - - // Check for AVX2 support - CMPB ·useAVX2(SB), $1 - JE chacha20Poly1305Open_AVX2 - - // Special optimization, for very short buffers - CMPQ inl, $128 - JBE openSSE128 // About 16% faster - - // For long buffers, prepare the poly key first - MOVOU ·chacha20Constants<>(SB), A0 - MOVOU (1*16)(keyp), B0 - MOVOU (2*16)(keyp), C0 - MOVOU (3*16)(keyp), D0 - MOVO D0, T1 - - // Store state on stack for future use - MOVO B0, state1Store - MOVO C0, state2Store - MOVO D0, ctr3Store - MOVQ $10, itr2 - -openSSEPreparePolyKey: - chachaQR(A0, B0, C0, D0, T0) - shiftB0Left; shiftC0Left; shiftD0Left - chachaQR(A0, B0, C0, D0, T0) - shiftB0Right; shiftC0Right; shiftD0Right - DECQ itr2 - JNE openSSEPreparePolyKey - - // A0|B0 hold the Poly1305 32-byte key, C0,D0 can be discarded - PADDL ·chacha20Constants<>(SB), A0; PADDL state1Store, B0 - - // Clamp and store the key - PAND ·polyClampMask<>(SB), A0 - MOVO A0, rStore; MOVO B0, sStore - - // Hash AAD - MOVQ ad_len+80(FP), itr2 - CALL polyHashADInternal<>(SB) - -openSSEMainLoop: - CMPQ inl, $256 - JB openSSEMainLoopDone - - // Load state, increment counter blocks - MOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0 - MOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1 - MOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2 - MOVO A2, A3; MOVO B2, B3; MOVO C2, C3; MOVO D2, D3; PADDL ·sseIncMask<>(SB), D3 - - // Store counters - MOVO D0, ctr0Store; MOVO D1, ctr1Store; MOVO D2, ctr2Store; MOVO D3, ctr3Store - - // There are 10 ChaCha20 iterations of 2QR each, so for 6 iterations we hash 2 blocks, and for the remaining 4 only 1 block - for a total of 16 - MOVQ $4, itr1 - MOVQ inp, itr2 - -openSSEInternalLoop: - MOVO C3, tmpStore - chachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3) - MOVO tmpStore, C3 - MOVO C1, tmpStore - chachaQR(A3, B3, C3, D3, C1) - MOVO tmpStore, C1 - polyAdd(0(itr2)) - shiftB0Left; shiftB1Left; shiftB2Left; shiftB3Left - shiftC0Left; shiftC1Left; shiftC2Left; shiftC3Left - shiftD0Left; shiftD1Left; shiftD2Left; shiftD3Left - polyMulStage1 - polyMulStage2 - LEAQ (2*8)(itr2), itr2 - MOVO C3, tmpStore - chachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3) - MOVO tmpStore, C3 - MOVO C1, tmpStore - polyMulStage3 - chachaQR(A3, B3, C3, D3, C1) - MOVO tmpStore, C1 - polyMulReduceStage - shiftB0Right; shiftB1Right; shiftB2Right; shiftB3Right - shiftC0Right; shiftC1Right; shiftC2Right; shiftC3Right - shiftD0Right; shiftD1Right; shiftD2Right; shiftD3Right - DECQ itr1 - JGE openSSEInternalLoop - - polyAdd(0(itr2)) - polyMul - LEAQ (2*8)(itr2), itr2 - - CMPQ itr1, $-6 - JG openSSEInternalLoop - - // Add in the state - PADDD ·chacha20Constants<>(SB), A0; PADDD ·chacha20Constants<>(SB), A1; PADDD ·chacha20Constants<>(SB), A2; PADDD ·chacha20Constants<>(SB), A3 - PADDD state1Store, B0; PADDD state1Store, B1; PADDD state1Store, B2; PADDD state1Store, B3 - PADDD state2Store, C0; PADDD state2Store, C1; PADDD state2Store, C2; PADDD state2Store, C3 - PADDD ctr0Store, D0; PADDD ctr1Store, D1; PADDD ctr2Store, D2; PADDD ctr3Store, D3 - - // Load - xor - store - MOVO D3, tmpStore - MOVOU (0*16)(inp), D3; PXOR D3, A0; MOVOU A0, (0*16)(oup) - MOVOU (1*16)(inp), D3; PXOR D3, B0; MOVOU B0, (1*16)(oup) - MOVOU (2*16)(inp), D3; PXOR D3, C0; MOVOU C0, (2*16)(oup) - MOVOU (3*16)(inp), D3; PXOR D3, D0; MOVOU D0, (3*16)(oup) - MOVOU (4*16)(inp), D0; PXOR D0, A1; MOVOU A1, (4*16)(oup) - MOVOU (5*16)(inp), D0; PXOR D0, B1; MOVOU B1, (5*16)(oup) - MOVOU (6*16)(inp), D0; PXOR D0, C1; MOVOU C1, (6*16)(oup) - MOVOU (7*16)(inp), D0; PXOR D0, D1; MOVOU D1, (7*16)(oup) - MOVOU (8*16)(inp), D0; PXOR D0, A2; MOVOU A2, (8*16)(oup) - MOVOU (9*16)(inp), D0; PXOR D0, B2; MOVOU B2, (9*16)(oup) - MOVOU (10*16)(inp), D0; PXOR D0, C2; MOVOU C2, (10*16)(oup) - MOVOU (11*16)(inp), D0; PXOR D0, D2; MOVOU D2, (11*16)(oup) - MOVOU (12*16)(inp), D0; PXOR D0, A3; MOVOU A3, (12*16)(oup) - MOVOU (13*16)(inp), D0; PXOR D0, B3; MOVOU B3, (13*16)(oup) - MOVOU (14*16)(inp), D0; PXOR D0, C3; MOVOU C3, (14*16)(oup) - MOVOU (15*16)(inp), D0; PXOR tmpStore, D0; MOVOU D0, (15*16)(oup) - LEAQ 256(inp), inp - LEAQ 256(oup), oup - SUBQ $256, inl - JMP openSSEMainLoop - -openSSEMainLoopDone: - // Handle the various tail sizes efficiently - TESTQ inl, inl - JE openSSEFinalize - CMPQ inl, $64 - JBE openSSETail64 - CMPQ inl, $128 - JBE openSSETail128 - CMPQ inl, $192 - JBE openSSETail192 - JMP openSSETail256 - -openSSEFinalize: - // Hash in the PT, AAD lengths - ADDQ ad_len+80(FP), acc0; ADCQ src_len+56(FP), acc1; ADCQ $1, acc2 - polyMul - - // Final reduce - MOVQ acc0, t0 - MOVQ acc1, t1 - MOVQ acc2, t2 - SUBQ $-5, acc0 - SBBQ $-1, acc1 - SBBQ $3, acc2 - CMOVQCS t0, acc0 - CMOVQCS t1, acc1 - CMOVQCS t2, acc2 - - // Add in the "s" part of the key - ADDQ 0+sStore, acc0 - ADCQ 8+sStore, acc1 - - // Finally, constant time compare to the tag at the end of the message - XORQ AX, AX - MOVQ $1, DX - XORQ (0*8)(inp), acc0 - XORQ (1*8)(inp), acc1 - ORQ acc1, acc0 - CMOVQEQ DX, AX - - // Return true iff tags are equal - MOVB AX, ret+96(FP) - RET - -// ---------------------------------------------------------------------------- -// Special optimization for buffers smaller than 129 bytes -openSSE128: - // For up to 128 bytes of ciphertext and 64 bytes for the poly key, we require to process three blocks - MOVOU ·chacha20Constants<>(SB), A0; MOVOU (1*16)(keyp), B0; MOVOU (2*16)(keyp), C0; MOVOU (3*16)(keyp), D0 - MOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1 - MOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2 - MOVO B0, T1; MOVO C0, T2; MOVO D1, T3 - MOVQ $10, itr2 - -openSSE128InnerCipherLoop: - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0) - shiftB0Left; shiftB1Left; shiftB2Left - shiftC0Left; shiftC1Left; shiftC2Left - shiftD0Left; shiftD1Left; shiftD2Left - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0) - shiftB0Right; shiftB1Right; shiftB2Right - shiftC0Right; shiftC1Right; shiftC2Right - shiftD0Right; shiftD1Right; shiftD2Right - DECQ itr2 - JNE openSSE128InnerCipherLoop - - // A0|B0 hold the Poly1305 32-byte key, C0,D0 can be discarded - PADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1; PADDL ·chacha20Constants<>(SB), A2 - PADDL T1, B0; PADDL T1, B1; PADDL T1, B2 - PADDL T2, C1; PADDL T2, C2 - PADDL T3, D1; PADDL ·sseIncMask<>(SB), T3; PADDL T3, D2 - - // Clamp and store the key - PAND ·polyClampMask<>(SB), A0 - MOVOU A0, rStore; MOVOU B0, sStore - - // Hash - MOVQ ad_len+80(FP), itr2 - CALL polyHashADInternal<>(SB) - -openSSE128Open: - CMPQ inl, $16 - JB openSSETail16 - SUBQ $16, inl - - // Load for hashing - polyAdd(0(inp)) - - // Load for decryption - MOVOU (inp), T0; PXOR T0, A1; MOVOU A1, (oup) - LEAQ (1*16)(inp), inp - LEAQ (1*16)(oup), oup - polyMul - - // Shift the stream "left" - MOVO B1, A1 - MOVO C1, B1 - MOVO D1, C1 - MOVO A2, D1 - MOVO B2, A2 - MOVO C2, B2 - MOVO D2, C2 - JMP openSSE128Open - -openSSETail16: - TESTQ inl, inl - JE openSSEFinalize - - // We can safely load the CT from the end, because it is padded with the MAC - MOVQ inl, itr2 - SHLQ $4, itr2 - LEAQ ·andMask<>(SB), t0 - MOVOU (inp), T0 - ADDQ inl, inp - PAND -16(t0)(itr2*1), T0 - MOVO T0, 0+tmpStore - MOVQ T0, t0 - MOVQ 8+tmpStore, t1 - PXOR A1, T0 - - // We can only store one byte at a time, since plaintext can be shorter than 16 bytes -openSSETail16Store: - MOVQ T0, t3 - MOVB t3, (oup) - PSRLDQ $1, T0 - INCQ oup - DECQ inl - JNE openSSETail16Store - ADDQ t0, acc0; ADCQ t1, acc1; ADCQ $1, acc2 - polyMul - JMP openSSEFinalize - -// ---------------------------------------------------------------------------- -// Special optimization for the last 64 bytes of ciphertext -openSSETail64: - // Need to decrypt up to 64 bytes - prepare single block - MOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr0Store - XORQ itr2, itr2 - MOVQ inl, itr1 - CMPQ itr1, $16 - JB openSSETail64LoopB - -openSSETail64LoopA: - // Perform ChaCha rounds, while hashing the remaining input - polyAdd(0(inp)(itr2*1)) - polyMul - SUBQ $16, itr1 - -openSSETail64LoopB: - ADDQ $16, itr2 - chachaQR(A0, B0, C0, D0, T0) - shiftB0Left; shiftC0Left; shiftD0Left - chachaQR(A0, B0, C0, D0, T0) - shiftB0Right; shiftC0Right; shiftD0Right - - CMPQ itr1, $16 - JAE openSSETail64LoopA - - CMPQ itr2, $160 - JNE openSSETail64LoopB - - PADDL ·chacha20Constants<>(SB), A0; PADDL state1Store, B0; PADDL state2Store, C0; PADDL ctr0Store, D0 - -openSSETail64DecLoop: - CMPQ inl, $16 - JB openSSETail64DecLoopDone - SUBQ $16, inl - MOVOU (inp), T0 - PXOR T0, A0 - MOVOU A0, (oup) - LEAQ 16(inp), inp - LEAQ 16(oup), oup - MOVO B0, A0 - MOVO C0, B0 - MOVO D0, C0 - JMP openSSETail64DecLoop - -openSSETail64DecLoopDone: - MOVO A0, A1 - JMP openSSETail16 - -// ---------------------------------------------------------------------------- -// Special optimization for the last 128 bytes of ciphertext -openSSETail128: - // Need to decrypt up to 128 bytes - prepare two blocks - MOVO ·chacha20Constants<>(SB), A1; MOVO state1Store, B1; MOVO state2Store, C1; MOVO ctr3Store, D1; PADDL ·sseIncMask<>(SB), D1; MOVO D1, ctr0Store - MOVO A1, A0; MOVO B1, B0; MOVO C1, C0; MOVO D1, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr1Store - XORQ itr2, itr2 - MOVQ inl, itr1 - ANDQ $-16, itr1 - -openSSETail128LoopA: - // Perform ChaCha rounds, while hashing the remaining input - polyAdd(0(inp)(itr2*1)) - polyMul - -openSSETail128LoopB: - ADDQ $16, itr2 - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0) - shiftB0Left; shiftC0Left; shiftD0Left - shiftB1Left; shiftC1Left; shiftD1Left - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0) - shiftB0Right; shiftC0Right; shiftD0Right - shiftB1Right; shiftC1Right; shiftD1Right - - CMPQ itr2, itr1 - JB openSSETail128LoopA - - CMPQ itr2, $160 - JNE openSSETail128LoopB - - PADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1 - PADDL state1Store, B0; PADDL state1Store, B1 - PADDL state2Store, C0; PADDL state2Store, C1 - PADDL ctr1Store, D0; PADDL ctr0Store, D1 - - MOVOU (0*16)(inp), T0; MOVOU (1*16)(inp), T1; MOVOU (2*16)(inp), T2; MOVOU (3*16)(inp), T3 - PXOR T0, A1; PXOR T1, B1; PXOR T2, C1; PXOR T3, D1 - MOVOU A1, (0*16)(oup); MOVOU B1, (1*16)(oup); MOVOU C1, (2*16)(oup); MOVOU D1, (3*16)(oup) - - SUBQ $64, inl - LEAQ 64(inp), inp - LEAQ 64(oup), oup - JMP openSSETail64DecLoop - -// ---------------------------------------------------------------------------- -// Special optimization for the last 192 bytes of ciphertext -openSSETail192: - // Need to decrypt up to 192 bytes - prepare three blocks - MOVO ·chacha20Constants<>(SB), A2; MOVO state1Store, B2; MOVO state2Store, C2; MOVO ctr3Store, D2; PADDL ·sseIncMask<>(SB), D2; MOVO D2, ctr0Store - MOVO A2, A1; MOVO B2, B1; MOVO C2, C1; MOVO D2, D1; PADDL ·sseIncMask<>(SB), D1; MOVO D1, ctr1Store - MOVO A1, A0; MOVO B1, B0; MOVO C1, C0; MOVO D1, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr2Store - - MOVQ inl, itr1 - MOVQ $160, itr2 - CMPQ itr1, $160 - CMOVQGT itr2, itr1 - ANDQ $-16, itr1 - XORQ itr2, itr2 - -openSSLTail192LoopA: - // Perform ChaCha rounds, while hashing the remaining input - polyAdd(0(inp)(itr2*1)) - polyMul - -openSSLTail192LoopB: - ADDQ $16, itr2 - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0) - shiftB0Left; shiftC0Left; shiftD0Left - shiftB1Left; shiftC1Left; shiftD1Left - shiftB2Left; shiftC2Left; shiftD2Left - - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0) - shiftB0Right; shiftC0Right; shiftD0Right - shiftB1Right; shiftC1Right; shiftD1Right - shiftB2Right; shiftC2Right; shiftD2Right - - CMPQ itr2, itr1 - JB openSSLTail192LoopA - - CMPQ itr2, $160 - JNE openSSLTail192LoopB - - CMPQ inl, $176 - JB openSSLTail192Store - - polyAdd(160(inp)) - polyMul - - CMPQ inl, $192 - JB openSSLTail192Store - - polyAdd(176(inp)) - polyMul - -openSSLTail192Store: - PADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1; PADDL ·chacha20Constants<>(SB), A2 - PADDL state1Store, B0; PADDL state1Store, B1; PADDL state1Store, B2 - PADDL state2Store, C0; PADDL state2Store, C1; PADDL state2Store, C2 - PADDL ctr2Store, D0; PADDL ctr1Store, D1; PADDL ctr0Store, D2 - - MOVOU (0*16)(inp), T0; MOVOU (1*16)(inp), T1; MOVOU (2*16)(inp), T2; MOVOU (3*16)(inp), T3 - PXOR T0, A2; PXOR T1, B2; PXOR T2, C2; PXOR T3, D2 - MOVOU A2, (0*16)(oup); MOVOU B2, (1*16)(oup); MOVOU C2, (2*16)(oup); MOVOU D2, (3*16)(oup) - - MOVOU (4*16)(inp), T0; MOVOU (5*16)(inp), T1; MOVOU (6*16)(inp), T2; MOVOU (7*16)(inp), T3 - PXOR T0, A1; PXOR T1, B1; PXOR T2, C1; PXOR T3, D1 - MOVOU A1, (4*16)(oup); MOVOU B1, (5*16)(oup); MOVOU C1, (6*16)(oup); MOVOU D1, (7*16)(oup) - - SUBQ $128, inl - LEAQ 128(inp), inp - LEAQ 128(oup), oup - JMP openSSETail64DecLoop - -// ---------------------------------------------------------------------------- -// Special optimization for the last 256 bytes of ciphertext -openSSETail256: - // Need to decrypt up to 256 bytes - prepare four blocks - MOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0 - MOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1 - MOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2 - MOVO A2, A3; MOVO B2, B3; MOVO C2, C3; MOVO D2, D3; PADDL ·sseIncMask<>(SB), D3 - - // Store counters - MOVO D0, ctr0Store; MOVO D1, ctr1Store; MOVO D2, ctr2Store; MOVO D3, ctr3Store - XORQ itr2, itr2 - -openSSETail256Loop: - // This loop inteleaves 8 ChaCha quarter rounds with 1 poly multiplication - polyAdd(0(inp)(itr2*1)) - MOVO C3, tmpStore - chachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3) - MOVO tmpStore, C3 - MOVO C1, tmpStore - chachaQR(A3, B3, C3, D3, C1) - MOVO tmpStore, C1 - shiftB0Left; shiftB1Left; shiftB2Left; shiftB3Left - shiftC0Left; shiftC1Left; shiftC2Left; shiftC3Left - shiftD0Left; shiftD1Left; shiftD2Left; shiftD3Left - polyMulStage1 - polyMulStage2 - MOVO C3, tmpStore - chachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3) - MOVO tmpStore, C3 - MOVO C1, tmpStore - chachaQR(A3, B3, C3, D3, C1) - MOVO tmpStore, C1 - polyMulStage3 - polyMulReduceStage - shiftB0Right; shiftB1Right; shiftB2Right; shiftB3Right - shiftC0Right; shiftC1Right; shiftC2Right; shiftC3Right - shiftD0Right; shiftD1Right; shiftD2Right; shiftD3Right - ADDQ $2*8, itr2 - CMPQ itr2, $160 - JB openSSETail256Loop - MOVQ inl, itr1 - ANDQ $-16, itr1 - -openSSETail256HashLoop: - polyAdd(0(inp)(itr2*1)) - polyMul - ADDQ $2*8, itr2 - CMPQ itr2, itr1 - JB openSSETail256HashLoop - - // Add in the state - PADDD ·chacha20Constants<>(SB), A0; PADDD ·chacha20Constants<>(SB), A1; PADDD ·chacha20Constants<>(SB), A2; PADDD ·chacha20Constants<>(SB), A3 - PADDD state1Store, B0; PADDD state1Store, B1; PADDD state1Store, B2; PADDD state1Store, B3 - PADDD state2Store, C0; PADDD state2Store, C1; PADDD state2Store, C2; PADDD state2Store, C3 - PADDD ctr0Store, D0; PADDD ctr1Store, D1; PADDD ctr2Store, D2; PADDD ctr3Store, D3 - MOVO D3, tmpStore - - // Load - xor - store - MOVOU (0*16)(inp), D3; PXOR D3, A0 - MOVOU (1*16)(inp), D3; PXOR D3, B0 - MOVOU (2*16)(inp), D3; PXOR D3, C0 - MOVOU (3*16)(inp), D3; PXOR D3, D0 - MOVOU A0, (0*16)(oup) - MOVOU B0, (1*16)(oup) - MOVOU C0, (2*16)(oup) - MOVOU D0, (3*16)(oup) - MOVOU (4*16)(inp), A0; MOVOU (5*16)(inp), B0; MOVOU (6*16)(inp), C0; MOVOU (7*16)(inp), D0 - PXOR A0, A1; PXOR B0, B1; PXOR C0, C1; PXOR D0, D1 - MOVOU A1, (4*16)(oup); MOVOU B1, (5*16)(oup); MOVOU C1, (6*16)(oup); MOVOU D1, (7*16)(oup) - MOVOU (8*16)(inp), A0; MOVOU (9*16)(inp), B0; MOVOU (10*16)(inp), C0; MOVOU (11*16)(inp), D0 - PXOR A0, A2; PXOR B0, B2; PXOR C0, C2; PXOR D0, D2 - MOVOU A2, (8*16)(oup); MOVOU B2, (9*16)(oup); MOVOU C2, (10*16)(oup); MOVOU D2, (11*16)(oup) - LEAQ 192(inp), inp - LEAQ 192(oup), oup - SUBQ $192, inl - MOVO A3, A0 - MOVO B3, B0 - MOVO C3, C0 - MOVO tmpStore, D0 - - JMP openSSETail64DecLoop - -// ---------------------------------------------------------------------------- -// ------------------------- AVX2 Code ---------------------------------------- -chacha20Poly1305Open_AVX2: - VZEROUPPER - VMOVDQU ·chacha20Constants<>(SB), AA0 - BYTE $0xc4; BYTE $0x42; BYTE $0x7d; BYTE $0x5a; BYTE $0x70; BYTE $0x10 // broadcasti128 16(r8), ymm14 - BYTE $0xc4; BYTE $0x42; BYTE $0x7d; BYTE $0x5a; BYTE $0x60; BYTE $0x20 // broadcasti128 32(r8), ymm12 - BYTE $0xc4; BYTE $0xc2; BYTE $0x7d; BYTE $0x5a; BYTE $0x60; BYTE $0x30 // broadcasti128 48(r8), ymm4 - VPADDD ·avx2InitMask<>(SB), DD0, DD0 - - // Special optimization, for very short buffers - CMPQ inl, $192 - JBE openAVX2192 - CMPQ inl, $320 - JBE openAVX2320 - - // For the general key prepare the key first - as a byproduct we have 64 bytes of cipher stream - VMOVDQA BB0, state1StoreAVX2 - VMOVDQA CC0, state2StoreAVX2 - VMOVDQA DD0, ctr3StoreAVX2 - MOVQ $10, itr2 - -openAVX2PreparePolyKey: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0) - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $12, DD0, DD0, DD0 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0) - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $4, DD0, DD0, DD0 - DECQ itr2 - JNE openAVX2PreparePolyKey - - VPADDD ·chacha20Constants<>(SB), AA0, AA0 - VPADDD state1StoreAVX2, BB0, BB0 - VPADDD state2StoreAVX2, CC0, CC0 - VPADDD ctr3StoreAVX2, DD0, DD0 - - VPERM2I128 $0x02, AA0, BB0, TT0 - - // Clamp and store poly key - VPAND ·polyClampMask<>(SB), TT0, TT0 - VMOVDQA TT0, rsStoreAVX2 - - // Stream for the first 64 bytes - VPERM2I128 $0x13, AA0, BB0, AA0 - VPERM2I128 $0x13, CC0, DD0, BB0 - - // Hash AD + first 64 bytes - MOVQ ad_len+80(FP), itr2 - CALL polyHashADInternal<>(SB) - XORQ itr1, itr1 - -openAVX2InitialHash64: - polyAdd(0(inp)(itr1*1)) - polyMulAVX2 - ADDQ $16, itr1 - CMPQ itr1, $64 - JNE openAVX2InitialHash64 - - // Decrypt the first 64 bytes - VPXOR (0*32)(inp), AA0, AA0 - VPXOR (1*32)(inp), BB0, BB0 - VMOVDQU AA0, (0*32)(oup) - VMOVDQU BB0, (1*32)(oup) - LEAQ (2*32)(inp), inp - LEAQ (2*32)(oup), oup - SUBQ $64, inl - -openAVX2MainLoop: - CMPQ inl, $512 - JB openAVX2MainLoopDone - - // Load state, increment counter blocks, store the incremented counters - VMOVDQU ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3 - VMOVDQA ctr3StoreAVX2, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3 - VMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2 - XORQ itr1, itr1 - -openAVX2InternalLoop: - // Lets just say this spaghetti loop interleaves 2 quarter rounds with 3 poly multiplications - // Effectively per 512 bytes of stream we hash 480 bytes of ciphertext - polyAdd(0*8(inp)(itr1*1)) - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - polyMulStage1_AVX2 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - polyMulStage2_AVX2 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - polyMulStage3_AVX2 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyMulReduceStage - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3 - polyAdd(2*8(inp)(itr1*1)) - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - polyMulStage1_AVX2 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyMulStage2_AVX2 - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $4, BB3, BB3, BB3 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2; VPALIGNR $12, DD3, DD3, DD3 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - polyMulStage3_AVX2 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - polyMulReduceStage - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - polyAdd(4*8(inp)(itr1*1)) - LEAQ (6*8)(itr1), itr1 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyMulStage1_AVX2 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - polyMulStage2_AVX2 - VPSHUFB ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - polyMulStage3_AVX2 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyMulReduceStage - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $12, BB3, BB3, BB3 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2; VPALIGNR $4, DD3, DD3, DD3 - CMPQ itr1, $480 - JNE openAVX2InternalLoop - - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3 - VPADDD ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3 - VMOVDQA CC3, tmpStoreAVX2 - - // We only hashed 480 of the 512 bytes available - hash the remaining 32 here - polyAdd(480(inp)) - polyMulAVX2 - VPERM2I128 $0x02, AA0, BB0, CC3; VPERM2I128 $0x13, AA0, BB0, BB0; VPERM2I128 $0x02, CC0, DD0, AA0; VPERM2I128 $0x13, CC0, DD0, CC0 - VPXOR (0*32)(inp), CC3, CC3; VPXOR (1*32)(inp), AA0, AA0; VPXOR (2*32)(inp), BB0, BB0; VPXOR (3*32)(inp), CC0, CC0 - VMOVDQU CC3, (0*32)(oup); VMOVDQU AA0, (1*32)(oup); VMOVDQU BB0, (2*32)(oup); VMOVDQU CC0, (3*32)(oup) - VPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0 - VPXOR (4*32)(inp), AA0, AA0; VPXOR (5*32)(inp), BB0, BB0; VPXOR (6*32)(inp), CC0, CC0; VPXOR (7*32)(inp), DD0, DD0 - VMOVDQU AA0, (4*32)(oup); VMOVDQU BB0, (5*32)(oup); VMOVDQU CC0, (6*32)(oup); VMOVDQU DD0, (7*32)(oup) - - // and here - polyAdd(496(inp)) - polyMulAVX2 - VPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0 - VPXOR (8*32)(inp), AA0, AA0; VPXOR (9*32)(inp), BB0, BB0; VPXOR (10*32)(inp), CC0, CC0; VPXOR (11*32)(inp), DD0, DD0 - VMOVDQU AA0, (8*32)(oup); VMOVDQU BB0, (9*32)(oup); VMOVDQU CC0, (10*32)(oup); VMOVDQU DD0, (11*32)(oup) - VPERM2I128 $0x02, AA3, BB3, AA0; VPERM2I128 $0x02, tmpStoreAVX2, DD3, BB0; VPERM2I128 $0x13, AA3, BB3, CC0; VPERM2I128 $0x13, tmpStoreAVX2, DD3, DD0 - VPXOR (12*32)(inp), AA0, AA0; VPXOR (13*32)(inp), BB0, BB0; VPXOR (14*32)(inp), CC0, CC0; VPXOR (15*32)(inp), DD0, DD0 - VMOVDQU AA0, (12*32)(oup); VMOVDQU BB0, (13*32)(oup); VMOVDQU CC0, (14*32)(oup); VMOVDQU DD0, (15*32)(oup) - LEAQ (32*16)(inp), inp - LEAQ (32*16)(oup), oup - SUBQ $(32*16), inl - JMP openAVX2MainLoop - -openAVX2MainLoopDone: - // Handle the various tail sizes efficiently - TESTQ inl, inl - JE openSSEFinalize - CMPQ inl, $128 - JBE openAVX2Tail128 - CMPQ inl, $256 - JBE openAVX2Tail256 - CMPQ inl, $384 - JBE openAVX2Tail384 - JMP openAVX2Tail512 - -// ---------------------------------------------------------------------------- -// Special optimization for buffers smaller than 193 bytes -openAVX2192: - // For up to 192 bytes of ciphertext and 64 bytes for the poly key, we process four blocks - VMOVDQA AA0, AA1 - VMOVDQA BB0, BB1 - VMOVDQA CC0, CC1 - VPADDD ·avx2IncMask<>(SB), DD0, DD1 - VMOVDQA AA0, AA2 - VMOVDQA BB0, BB2 - VMOVDQA CC0, CC2 - VMOVDQA DD0, DD2 - VMOVDQA DD1, TT3 - MOVQ $10, itr2 - -openAVX2192InnerCipherLoop: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1 - DECQ itr2 - JNE openAVX2192InnerCipherLoop - VPADDD AA2, AA0, AA0; VPADDD AA2, AA1, AA1 - VPADDD BB2, BB0, BB0; VPADDD BB2, BB1, BB1 - VPADDD CC2, CC0, CC0; VPADDD CC2, CC1, CC1 - VPADDD DD2, DD0, DD0; VPADDD TT3, DD1, DD1 - VPERM2I128 $0x02, AA0, BB0, TT0 - - // Clamp and store poly key - VPAND ·polyClampMask<>(SB), TT0, TT0 - VMOVDQA TT0, rsStoreAVX2 - - // Stream for up to 192 bytes - VPERM2I128 $0x13, AA0, BB0, AA0 - VPERM2I128 $0x13, CC0, DD0, BB0 - VPERM2I128 $0x02, AA1, BB1, CC0 - VPERM2I128 $0x02, CC1, DD1, DD0 - VPERM2I128 $0x13, AA1, BB1, AA1 - VPERM2I128 $0x13, CC1, DD1, BB1 - -openAVX2ShortOpen: - // Hash - MOVQ ad_len+80(FP), itr2 - CALL polyHashADInternal<>(SB) - -openAVX2ShortOpenLoop: - CMPQ inl, $32 - JB openAVX2ShortTail32 - SUBQ $32, inl - - // Load for hashing - polyAdd(0*8(inp)) - polyMulAVX2 - polyAdd(2*8(inp)) - polyMulAVX2 - - // Load for decryption - VPXOR (inp), AA0, AA0 - VMOVDQU AA0, (oup) - LEAQ (1*32)(inp), inp - LEAQ (1*32)(oup), oup - - // Shift stream left - VMOVDQA BB0, AA0 - VMOVDQA CC0, BB0 - VMOVDQA DD0, CC0 - VMOVDQA AA1, DD0 - VMOVDQA BB1, AA1 - VMOVDQA CC1, BB1 - VMOVDQA DD1, CC1 - VMOVDQA AA2, DD1 - VMOVDQA BB2, AA2 - JMP openAVX2ShortOpenLoop - -openAVX2ShortTail32: - CMPQ inl, $16 - VMOVDQA A0, A1 - JB openAVX2ShortDone - - SUBQ $16, inl - - // Load for hashing - polyAdd(0*8(inp)) - polyMulAVX2 - - // Load for decryption - VPXOR (inp), A0, T0 - VMOVDQU T0, (oup) - LEAQ (1*16)(inp), inp - LEAQ (1*16)(oup), oup - VPERM2I128 $0x11, AA0, AA0, AA0 - VMOVDQA A0, A1 - -openAVX2ShortDone: - VZEROUPPER - JMP openSSETail16 - -// ---------------------------------------------------------------------------- -// Special optimization for buffers smaller than 321 bytes -openAVX2320: - // For up to 320 bytes of ciphertext and 64 bytes for the poly key, we process six blocks - VMOVDQA AA0, AA1; VMOVDQA BB0, BB1; VMOVDQA CC0, CC1; VPADDD ·avx2IncMask<>(SB), DD0, DD1 - VMOVDQA AA0, AA2; VMOVDQA BB0, BB2; VMOVDQA CC0, CC2; VPADDD ·avx2IncMask<>(SB), DD1, DD2 - VMOVDQA BB0, TT1; VMOVDQA CC0, TT2; VMOVDQA DD0, TT3 - MOVQ $10, itr2 - -openAVX2320InnerCipherLoop: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0) - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0) - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2 - DECQ itr2 - JNE openAVX2320InnerCipherLoop - - VMOVDQA ·chacha20Constants<>(SB), TT0 - VPADDD TT0, AA0, AA0; VPADDD TT0, AA1, AA1; VPADDD TT0, AA2, AA2 - VPADDD TT1, BB0, BB0; VPADDD TT1, BB1, BB1; VPADDD TT1, BB2, BB2 - VPADDD TT2, CC0, CC0; VPADDD TT2, CC1, CC1; VPADDD TT2, CC2, CC2 - VMOVDQA ·avx2IncMask<>(SB), TT0 - VPADDD TT3, DD0, DD0; VPADDD TT0, TT3, TT3 - VPADDD TT3, DD1, DD1; VPADDD TT0, TT3, TT3 - VPADDD TT3, DD2, DD2 - - // Clamp and store poly key - VPERM2I128 $0x02, AA0, BB0, TT0 - VPAND ·polyClampMask<>(SB), TT0, TT0 - VMOVDQA TT0, rsStoreAVX2 - - // Stream for up to 320 bytes - VPERM2I128 $0x13, AA0, BB0, AA0 - VPERM2I128 $0x13, CC0, DD0, BB0 - VPERM2I128 $0x02, AA1, BB1, CC0 - VPERM2I128 $0x02, CC1, DD1, DD0 - VPERM2I128 $0x13, AA1, BB1, AA1 - VPERM2I128 $0x13, CC1, DD1, BB1 - VPERM2I128 $0x02, AA2, BB2, CC1 - VPERM2I128 $0x02, CC2, DD2, DD1 - VPERM2I128 $0x13, AA2, BB2, AA2 - VPERM2I128 $0x13, CC2, DD2, BB2 - JMP openAVX2ShortOpen - -// ---------------------------------------------------------------------------- -// Special optimization for the last 128 bytes of ciphertext -openAVX2Tail128: - // Need to decrypt up to 128 bytes - prepare two blocks - VMOVDQA ·chacha20Constants<>(SB), AA1 - VMOVDQA state1StoreAVX2, BB1 - VMOVDQA state2StoreAVX2, CC1 - VMOVDQA ctr3StoreAVX2, DD1 - VPADDD ·avx2IncMask<>(SB), DD1, DD1 - VMOVDQA DD1, DD0 - - XORQ itr2, itr2 - MOVQ inl, itr1 - ANDQ $-16, itr1 - TESTQ itr1, itr1 - JE openAVX2Tail128LoopB - -openAVX2Tail128LoopA: - // Perform ChaCha rounds, while hashing the remaining input - polyAdd(0(inp)(itr2*1)) - polyMulAVX2 - -openAVX2Tail128LoopB: - ADDQ $16, itr2 - chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - VPALIGNR $4, BB1, BB1, BB1 - VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $12, DD1, DD1, DD1 - chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - VPALIGNR $12, BB1, BB1, BB1 - VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $4, DD1, DD1, DD1 - CMPQ itr2, itr1 - JB openAVX2Tail128LoopA - CMPQ itr2, $160 - JNE openAVX2Tail128LoopB - - VPADDD ·chacha20Constants<>(SB), AA1, AA1 - VPADDD state1StoreAVX2, BB1, BB1 - VPADDD state2StoreAVX2, CC1, CC1 - VPADDD DD0, DD1, DD1 - VPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0 - -openAVX2TailLoop: - CMPQ inl, $32 - JB openAVX2Tail - SUBQ $32, inl - - // Load for decryption - VPXOR (inp), AA0, AA0 - VMOVDQU AA0, (oup) - LEAQ (1*32)(inp), inp - LEAQ (1*32)(oup), oup - VMOVDQA BB0, AA0 - VMOVDQA CC0, BB0 - VMOVDQA DD0, CC0 - JMP openAVX2TailLoop - -openAVX2Tail: - CMPQ inl, $16 - VMOVDQA A0, A1 - JB openAVX2TailDone - SUBQ $16, inl - - // Load for decryption - VPXOR (inp), A0, T0 - VMOVDQU T0, (oup) - LEAQ (1*16)(inp), inp - LEAQ (1*16)(oup), oup - VPERM2I128 $0x11, AA0, AA0, AA0 - VMOVDQA A0, A1 - -openAVX2TailDone: - VZEROUPPER - JMP openSSETail16 - -// ---------------------------------------------------------------------------- -// Special optimization for the last 256 bytes of ciphertext -openAVX2Tail256: - // Need to decrypt up to 256 bytes - prepare four blocks - VMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1 - VMOVDQA ctr3StoreAVX2, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD1 - VMOVDQA DD0, TT1 - VMOVDQA DD1, TT2 - - // Compute the number of iterations that will hash data - MOVQ inl, tmpStoreAVX2 - MOVQ inl, itr1 - SUBQ $128, itr1 - SHRQ $4, itr1 - MOVQ $10, itr2 - CMPQ itr1, $10 - CMOVQGT itr2, itr1 - MOVQ inp, inl - XORQ itr2, itr2 - -openAVX2Tail256LoopA: - polyAdd(0(inl)) - polyMulAVX2 - LEAQ 16(inl), inl - - // Perform ChaCha rounds, while hashing the remaining input -openAVX2Tail256LoopB: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1 - INCQ itr2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1 - CMPQ itr2, itr1 - JB openAVX2Tail256LoopA - - CMPQ itr2, $10 - JNE openAVX2Tail256LoopB - - MOVQ inl, itr2 - SUBQ inp, inl - MOVQ inl, itr1 - MOVQ tmpStoreAVX2, inl - - // Hash the remainder of data (if any) -openAVX2Tail256Hash: - ADDQ $16, itr1 - CMPQ itr1, inl - JGT openAVX2Tail256HashEnd - polyAdd (0(itr2)) - polyMulAVX2 - LEAQ 16(itr2), itr2 - JMP openAVX2Tail256Hash - -// Store 128 bytes safely, then go to store loop -openAVX2Tail256HashEnd: - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1 - VPADDD TT1, DD0, DD0; VPADDD TT2, DD1, DD1 - VPERM2I128 $0x02, AA0, BB0, AA2; VPERM2I128 $0x02, CC0, DD0, BB2; VPERM2I128 $0x13, AA0, BB0, CC2; VPERM2I128 $0x13, CC0, DD0, DD2 - VPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0 - - VPXOR (0*32)(inp), AA2, AA2; VPXOR (1*32)(inp), BB2, BB2; VPXOR (2*32)(inp), CC2, CC2; VPXOR (3*32)(inp), DD2, DD2 - VMOVDQU AA2, (0*32)(oup); VMOVDQU BB2, (1*32)(oup); VMOVDQU CC2, (2*32)(oup); VMOVDQU DD2, (3*32)(oup) - LEAQ (4*32)(inp), inp - LEAQ (4*32)(oup), oup - SUBQ $4*32, inl - - JMP openAVX2TailLoop - -// ---------------------------------------------------------------------------- -// Special optimization for the last 384 bytes of ciphertext -openAVX2Tail384: - // Need to decrypt up to 384 bytes - prepare six blocks - VMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2 - VMOVDQA ctr3StoreAVX2, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD1 - VPADDD ·avx2IncMask<>(SB), DD1, DD2 - VMOVDQA DD0, ctr0StoreAVX2 - VMOVDQA DD1, ctr1StoreAVX2 - VMOVDQA DD2, ctr2StoreAVX2 - - // Compute the number of iterations that will hash two blocks of data - MOVQ inl, tmpStoreAVX2 - MOVQ inl, itr1 - SUBQ $256, itr1 - SHRQ $4, itr1 - ADDQ $6, itr1 - MOVQ $10, itr2 - CMPQ itr1, $10 - CMOVQGT itr2, itr1 - MOVQ inp, inl - XORQ itr2, itr2 - - // Perform ChaCha rounds, while hashing the remaining input -openAVX2Tail384LoopB: - polyAdd(0(inl)) - polyMulAVX2 - LEAQ 16(inl), inl - -openAVX2Tail384LoopA: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0) - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2 - polyAdd(0(inl)) - polyMulAVX2 - LEAQ 16(inl), inl - INCQ itr2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0) - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2 - - CMPQ itr2, itr1 - JB openAVX2Tail384LoopB - - CMPQ itr2, $10 - JNE openAVX2Tail384LoopA - - MOVQ inl, itr2 - SUBQ inp, inl - MOVQ inl, itr1 - MOVQ tmpStoreAVX2, inl - -openAVX2Tail384Hash: - ADDQ $16, itr1 - CMPQ itr1, inl - JGT openAVX2Tail384HashEnd - polyAdd(0(itr2)) - polyMulAVX2 - LEAQ 16(itr2), itr2 - JMP openAVX2Tail384Hash - -// Store 256 bytes safely, then go to store loop -openAVX2Tail384HashEnd: - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2 - VPADDD ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2 - VPERM2I128 $0x02, AA0, BB0, TT0; VPERM2I128 $0x02, CC0, DD0, TT1; VPERM2I128 $0x13, AA0, BB0, TT2; VPERM2I128 $0x13, CC0, DD0, TT3 - VPXOR (0*32)(inp), TT0, TT0; VPXOR (1*32)(inp), TT1, TT1; VPXOR (2*32)(inp), TT2, TT2; VPXOR (3*32)(inp), TT3, TT3 - VMOVDQU TT0, (0*32)(oup); VMOVDQU TT1, (1*32)(oup); VMOVDQU TT2, (2*32)(oup); VMOVDQU TT3, (3*32)(oup) - VPERM2I128 $0x02, AA1, BB1, TT0; VPERM2I128 $0x02, CC1, DD1, TT1; VPERM2I128 $0x13, AA1, BB1, TT2; VPERM2I128 $0x13, CC1, DD1, TT3 - VPXOR (4*32)(inp), TT0, TT0; VPXOR (5*32)(inp), TT1, TT1; VPXOR (6*32)(inp), TT2, TT2; VPXOR (7*32)(inp), TT3, TT3 - VMOVDQU TT0, (4*32)(oup); VMOVDQU TT1, (5*32)(oup); VMOVDQU TT2, (6*32)(oup); VMOVDQU TT3, (7*32)(oup) - VPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0 - LEAQ (8*32)(inp), inp - LEAQ (8*32)(oup), oup - SUBQ $8*32, inl - JMP openAVX2TailLoop - -// ---------------------------------------------------------------------------- -// Special optimization for the last 512 bytes of ciphertext -openAVX2Tail512: - VMOVDQU ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3 - VMOVDQA ctr3StoreAVX2, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3 - VMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2 - XORQ itr1, itr1 - MOVQ inp, itr2 - -openAVX2Tail512LoopB: - polyAdd(0(itr2)) - polyMulAVX2 - LEAQ (2*8)(itr2), itr2 - -openAVX2Tail512LoopA: - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyAdd(0*8(itr2)) - polyMulAVX2 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $4, BB3, BB3, BB3 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2; VPALIGNR $12, DD3, DD3, DD3 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - polyAdd(2*8(itr2)) - polyMulAVX2 - LEAQ (4*8)(itr2), itr2 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $12, BB3, BB3, BB3 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2; VPALIGNR $4, DD3, DD3, DD3 - INCQ itr1 - CMPQ itr1, $4 - JLT openAVX2Tail512LoopB - - CMPQ itr1, $10 - JNE openAVX2Tail512LoopA - - MOVQ inl, itr1 - SUBQ $384, itr1 - ANDQ $-16, itr1 - -openAVX2Tail512HashLoop: - TESTQ itr1, itr1 - JE openAVX2Tail512HashEnd - polyAdd(0(itr2)) - polyMulAVX2 - LEAQ 16(itr2), itr2 - SUBQ $16, itr1 - JMP openAVX2Tail512HashLoop - -openAVX2Tail512HashEnd: - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3 - VPADDD ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3 - VMOVDQA CC3, tmpStoreAVX2 - VPERM2I128 $0x02, AA0, BB0, CC3; VPERM2I128 $0x13, AA0, BB0, BB0; VPERM2I128 $0x02, CC0, DD0, AA0; VPERM2I128 $0x13, CC0, DD0, CC0 - VPXOR (0*32)(inp), CC3, CC3; VPXOR (1*32)(inp), AA0, AA0; VPXOR (2*32)(inp), BB0, BB0; VPXOR (3*32)(inp), CC0, CC0 - VMOVDQU CC3, (0*32)(oup); VMOVDQU AA0, (1*32)(oup); VMOVDQU BB0, (2*32)(oup); VMOVDQU CC0, (3*32)(oup) - VPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0 - VPXOR (4*32)(inp), AA0, AA0; VPXOR (5*32)(inp), BB0, BB0; VPXOR (6*32)(inp), CC0, CC0; VPXOR (7*32)(inp), DD0, DD0 - VMOVDQU AA0, (4*32)(oup); VMOVDQU BB0, (5*32)(oup); VMOVDQU CC0, (6*32)(oup); VMOVDQU DD0, (7*32)(oup) - VPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0 - VPXOR (8*32)(inp), AA0, AA0; VPXOR (9*32)(inp), BB0, BB0; VPXOR (10*32)(inp), CC0, CC0; VPXOR (11*32)(inp), DD0, DD0 - VMOVDQU AA0, (8*32)(oup); VMOVDQU BB0, (9*32)(oup); VMOVDQU CC0, (10*32)(oup); VMOVDQU DD0, (11*32)(oup) - VPERM2I128 $0x02, AA3, BB3, AA0; VPERM2I128 $0x02, tmpStoreAVX2, DD3, BB0; VPERM2I128 $0x13, AA3, BB3, CC0; VPERM2I128 $0x13, tmpStoreAVX2, DD3, DD0 - - LEAQ (12*32)(inp), inp - LEAQ (12*32)(oup), oup - SUBQ $12*32, inl - - JMP openAVX2TailLoop - -// ---------------------------------------------------------------------------- -// ---------------------------------------------------------------------------- -// func chacha20Poly1305Seal(dst, key, src, ad []byte) -TEXT ·chacha20Poly1305Seal(SB), 0, $288-96 - // For aligned stack access - MOVQ SP, BP - ADDQ $32, BP - ANDQ $-32, BP - MOVQ dst+0(FP), oup - MOVQ key+24(FP), keyp - MOVQ src+48(FP), inp - MOVQ src_len+56(FP), inl - MOVQ ad+72(FP), adp - - CMPB ·useAVX2(SB), $1 - JE chacha20Poly1305Seal_AVX2 - - // Special optimization, for very short buffers - CMPQ inl, $128 - JBE sealSSE128 // About 15% faster - - // In the seal case - prepare the poly key + 3 blocks of stream in the first iteration - MOVOU ·chacha20Constants<>(SB), A0 - MOVOU (1*16)(keyp), B0 - MOVOU (2*16)(keyp), C0 - MOVOU (3*16)(keyp), D0 - - // Store state on stack for future use - MOVO B0, state1Store - MOVO C0, state2Store - - // Load state, increment counter blocks - MOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1 - MOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2 - MOVO A2, A3; MOVO B2, B3; MOVO C2, C3; MOVO D2, D3; PADDL ·sseIncMask<>(SB), D3 - - // Store counters - MOVO D0, ctr0Store; MOVO D1, ctr1Store; MOVO D2, ctr2Store; MOVO D3, ctr3Store - MOVQ $10, itr2 - -sealSSEIntroLoop: - MOVO C3, tmpStore - chachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3) - MOVO tmpStore, C3 - MOVO C1, tmpStore - chachaQR(A3, B3, C3, D3, C1) - MOVO tmpStore, C1 - shiftB0Left; shiftB1Left; shiftB2Left; shiftB3Left - shiftC0Left; shiftC1Left; shiftC2Left; shiftC3Left - shiftD0Left; shiftD1Left; shiftD2Left; shiftD3Left - - MOVO C3, tmpStore - chachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3) - MOVO tmpStore, C3 - MOVO C1, tmpStore - chachaQR(A3, B3, C3, D3, C1) - MOVO tmpStore, C1 - shiftB0Right; shiftB1Right; shiftB2Right; shiftB3Right - shiftC0Right; shiftC1Right; shiftC2Right; shiftC3Right - shiftD0Right; shiftD1Right; shiftD2Right; shiftD3Right - DECQ itr2 - JNE sealSSEIntroLoop - - // Add in the state - PADDD ·chacha20Constants<>(SB), A0; PADDD ·chacha20Constants<>(SB), A1; PADDD ·chacha20Constants<>(SB), A2; PADDD ·chacha20Constants<>(SB), A3 - PADDD state1Store, B0; PADDD state1Store, B1; PADDD state1Store, B2; PADDD state1Store, B3 - PADDD state2Store, C1; PADDD state2Store, C2; PADDD state2Store, C3 - PADDD ctr1Store, D1; PADDD ctr2Store, D2; PADDD ctr3Store, D3 - - // Clamp and store the key - PAND ·polyClampMask<>(SB), A0 - MOVO A0, rStore - MOVO B0, sStore - - // Hash AAD - MOVQ ad_len+80(FP), itr2 - CALL polyHashADInternal<>(SB) - - MOVOU (0*16)(inp), A0; MOVOU (1*16)(inp), B0; MOVOU (2*16)(inp), C0; MOVOU (3*16)(inp), D0 - PXOR A0, A1; PXOR B0, B1; PXOR C0, C1; PXOR D0, D1 - MOVOU A1, (0*16)(oup); MOVOU B1, (1*16)(oup); MOVOU C1, (2*16)(oup); MOVOU D1, (3*16)(oup) - MOVOU (4*16)(inp), A0; MOVOU (5*16)(inp), B0; MOVOU (6*16)(inp), C0; MOVOU (7*16)(inp), D0 - PXOR A0, A2; PXOR B0, B2; PXOR C0, C2; PXOR D0, D2 - MOVOU A2, (4*16)(oup); MOVOU B2, (5*16)(oup); MOVOU C2, (6*16)(oup); MOVOU D2, (7*16)(oup) - - MOVQ $128, itr1 - SUBQ $128, inl - LEAQ 128(inp), inp - - MOVO A3, A1; MOVO B3, B1; MOVO C3, C1; MOVO D3, D1 - - CMPQ inl, $64 - JBE sealSSE128SealHash - - MOVOU (0*16)(inp), A0; MOVOU (1*16)(inp), B0; MOVOU (2*16)(inp), C0; MOVOU (3*16)(inp), D0 - PXOR A0, A3; PXOR B0, B3; PXOR C0, C3; PXOR D0, D3 - MOVOU A3, (8*16)(oup); MOVOU B3, (9*16)(oup); MOVOU C3, (10*16)(oup); MOVOU D3, (11*16)(oup) - - ADDQ $64, itr1 - SUBQ $64, inl - LEAQ 64(inp), inp - - MOVQ $2, itr1 - MOVQ $8, itr2 - - CMPQ inl, $64 - JBE sealSSETail64 - CMPQ inl, $128 - JBE sealSSETail128 - CMPQ inl, $192 - JBE sealSSETail192 - -sealSSEMainLoop: - // Load state, increment counter blocks - MOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0 - MOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1 - MOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2 - MOVO A2, A3; MOVO B2, B3; MOVO C2, C3; MOVO D2, D3; PADDL ·sseIncMask<>(SB), D3 - - // Store counters - MOVO D0, ctr0Store; MOVO D1, ctr1Store; MOVO D2, ctr2Store; MOVO D3, ctr3Store - -sealSSEInnerLoop: - MOVO C3, tmpStore - chachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3) - MOVO tmpStore, C3 - MOVO C1, tmpStore - chachaQR(A3, B3, C3, D3, C1) - MOVO tmpStore, C1 - polyAdd(0(oup)) - shiftB0Left; shiftB1Left; shiftB2Left; shiftB3Left - shiftC0Left; shiftC1Left; shiftC2Left; shiftC3Left - shiftD0Left; shiftD1Left; shiftD2Left; shiftD3Left - polyMulStage1 - polyMulStage2 - LEAQ (2*8)(oup), oup - MOVO C3, tmpStore - chachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3) - MOVO tmpStore, C3 - MOVO C1, tmpStore - polyMulStage3 - chachaQR(A3, B3, C3, D3, C1) - MOVO tmpStore, C1 - polyMulReduceStage - shiftB0Right; shiftB1Right; shiftB2Right; shiftB3Right - shiftC0Right; shiftC1Right; shiftC2Right; shiftC3Right - shiftD0Right; shiftD1Right; shiftD2Right; shiftD3Right - DECQ itr2 - JGE sealSSEInnerLoop - polyAdd(0(oup)) - polyMul - LEAQ (2*8)(oup), oup - DECQ itr1 - JG sealSSEInnerLoop - - // Add in the state - PADDD ·chacha20Constants<>(SB), A0; PADDD ·chacha20Constants<>(SB), A1; PADDD ·chacha20Constants<>(SB), A2; PADDD ·chacha20Constants<>(SB), A3 - PADDD state1Store, B0; PADDD state1Store, B1; PADDD state1Store, B2; PADDD state1Store, B3 - PADDD state2Store, C0; PADDD state2Store, C1; PADDD state2Store, C2; PADDD state2Store, C3 - PADDD ctr0Store, D0; PADDD ctr1Store, D1; PADDD ctr2Store, D2; PADDD ctr3Store, D3 - MOVO D3, tmpStore - - // Load - xor - store - MOVOU (0*16)(inp), D3; PXOR D3, A0 - MOVOU (1*16)(inp), D3; PXOR D3, B0 - MOVOU (2*16)(inp), D3; PXOR D3, C0 - MOVOU (3*16)(inp), D3; PXOR D3, D0 - MOVOU A0, (0*16)(oup) - MOVOU B0, (1*16)(oup) - MOVOU C0, (2*16)(oup) - MOVOU D0, (3*16)(oup) - MOVO tmpStore, D3 - - MOVOU (4*16)(inp), A0; MOVOU (5*16)(inp), B0; MOVOU (6*16)(inp), C0; MOVOU (7*16)(inp), D0 - PXOR A0, A1; PXOR B0, B1; PXOR C0, C1; PXOR D0, D1 - MOVOU A1, (4*16)(oup); MOVOU B1, (5*16)(oup); MOVOU C1, (6*16)(oup); MOVOU D1, (7*16)(oup) - MOVOU (8*16)(inp), A0; MOVOU (9*16)(inp), B0; MOVOU (10*16)(inp), C0; MOVOU (11*16)(inp), D0 - PXOR A0, A2; PXOR B0, B2; PXOR C0, C2; PXOR D0, D2 - MOVOU A2, (8*16)(oup); MOVOU B2, (9*16)(oup); MOVOU C2, (10*16)(oup); MOVOU D2, (11*16)(oup) - ADDQ $192, inp - MOVQ $192, itr1 - SUBQ $192, inl - MOVO A3, A1 - MOVO B3, B1 - MOVO C3, C1 - MOVO D3, D1 - CMPQ inl, $64 - JBE sealSSE128SealHash - MOVOU (0*16)(inp), A0; MOVOU (1*16)(inp), B0; MOVOU (2*16)(inp), C0; MOVOU (3*16)(inp), D0 - PXOR A0, A3; PXOR B0, B3; PXOR C0, C3; PXOR D0, D3 - MOVOU A3, (12*16)(oup); MOVOU B3, (13*16)(oup); MOVOU C3, (14*16)(oup); MOVOU D3, (15*16)(oup) - LEAQ 64(inp), inp - SUBQ $64, inl - MOVQ $6, itr1 - MOVQ $4, itr2 - CMPQ inl, $192 - JG sealSSEMainLoop - - MOVQ inl, itr1 - TESTQ inl, inl - JE sealSSE128SealHash - MOVQ $6, itr1 - CMPQ inl, $64 - JBE sealSSETail64 - CMPQ inl, $128 - JBE sealSSETail128 - JMP sealSSETail192 - -// ---------------------------------------------------------------------------- -// Special optimization for the last 64 bytes of plaintext -sealSSETail64: - // Need to encrypt up to 64 bytes - prepare single block, hash 192 or 256 bytes - MOVO ·chacha20Constants<>(SB), A1 - MOVO state1Store, B1 - MOVO state2Store, C1 - MOVO ctr3Store, D1 - PADDL ·sseIncMask<>(SB), D1 - MOVO D1, ctr0Store - -sealSSETail64LoopA: - // Perform ChaCha rounds, while hashing the previously encrypted ciphertext - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - -sealSSETail64LoopB: - chachaQR(A1, B1, C1, D1, T1) - shiftB1Left; shiftC1Left; shiftD1Left - chachaQR(A1, B1, C1, D1, T1) - shiftB1Right; shiftC1Right; shiftD1Right - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - - DECQ itr1 - JG sealSSETail64LoopA - - DECQ itr2 - JGE sealSSETail64LoopB - PADDL ·chacha20Constants<>(SB), A1 - PADDL state1Store, B1 - PADDL state2Store, C1 - PADDL ctr0Store, D1 - - JMP sealSSE128Seal - -// ---------------------------------------------------------------------------- -// Special optimization for the last 128 bytes of plaintext -sealSSETail128: - // Need to encrypt up to 128 bytes - prepare two blocks, hash 192 or 256 bytes - MOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr0Store - MOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1; MOVO D1, ctr1Store - -sealSSETail128LoopA: - // Perform ChaCha rounds, while hashing the previously encrypted ciphertext - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - -sealSSETail128LoopB: - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0) - shiftB0Left; shiftC0Left; shiftD0Left - shiftB1Left; shiftC1Left; shiftD1Left - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0) - shiftB0Right; shiftC0Right; shiftD0Right - shiftB1Right; shiftC1Right; shiftD1Right - - DECQ itr1 - JG sealSSETail128LoopA - - DECQ itr2 - JGE sealSSETail128LoopB - - PADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1 - PADDL state1Store, B0; PADDL state1Store, B1 - PADDL state2Store, C0; PADDL state2Store, C1 - PADDL ctr0Store, D0; PADDL ctr1Store, D1 - - MOVOU (0*16)(inp), T0; MOVOU (1*16)(inp), T1; MOVOU (2*16)(inp), T2; MOVOU (3*16)(inp), T3 - PXOR T0, A0; PXOR T1, B0; PXOR T2, C0; PXOR T3, D0 - MOVOU A0, (0*16)(oup); MOVOU B0, (1*16)(oup); MOVOU C0, (2*16)(oup); MOVOU D0, (3*16)(oup) - - MOVQ $64, itr1 - LEAQ 64(inp), inp - SUBQ $64, inl - - JMP sealSSE128SealHash - -// ---------------------------------------------------------------------------- -// Special optimization for the last 192 bytes of plaintext -sealSSETail192: - // Need to encrypt up to 192 bytes - prepare three blocks, hash 192 or 256 bytes - MOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr0Store - MOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1; MOVO D1, ctr1Store - MOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2; MOVO D2, ctr2Store - -sealSSETail192LoopA: - // Perform ChaCha rounds, while hashing the previously encrypted ciphertext - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - -sealSSETail192LoopB: - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0) - shiftB0Left; shiftC0Left; shiftD0Left - shiftB1Left; shiftC1Left; shiftD1Left - shiftB2Left; shiftC2Left; shiftD2Left - - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0) - shiftB0Right; shiftC0Right; shiftD0Right - shiftB1Right; shiftC1Right; shiftD1Right - shiftB2Right; shiftC2Right; shiftD2Right - - DECQ itr1 - JG sealSSETail192LoopA - - DECQ itr2 - JGE sealSSETail192LoopB - - PADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1; PADDL ·chacha20Constants<>(SB), A2 - PADDL state1Store, B0; PADDL state1Store, B1; PADDL state1Store, B2 - PADDL state2Store, C0; PADDL state2Store, C1; PADDL state2Store, C2 - PADDL ctr0Store, D0; PADDL ctr1Store, D1; PADDL ctr2Store, D2 - - MOVOU (0*16)(inp), T0; MOVOU (1*16)(inp), T1; MOVOU (2*16)(inp), T2; MOVOU (3*16)(inp), T3 - PXOR T0, A0; PXOR T1, B0; PXOR T2, C0; PXOR T3, D0 - MOVOU A0, (0*16)(oup); MOVOU B0, (1*16)(oup); MOVOU C0, (2*16)(oup); MOVOU D0, (3*16)(oup) - MOVOU (4*16)(inp), T0; MOVOU (5*16)(inp), T1; MOVOU (6*16)(inp), T2; MOVOU (7*16)(inp), T3 - PXOR T0, A1; PXOR T1, B1; PXOR T2, C1; PXOR T3, D1 - MOVOU A1, (4*16)(oup); MOVOU B1, (5*16)(oup); MOVOU C1, (6*16)(oup); MOVOU D1, (7*16)(oup) - - MOVO A2, A1 - MOVO B2, B1 - MOVO C2, C1 - MOVO D2, D1 - MOVQ $128, itr1 - LEAQ 128(inp), inp - SUBQ $128, inl - - JMP sealSSE128SealHash - -// ---------------------------------------------------------------------------- -// Special seal optimization for buffers smaller than 129 bytes -sealSSE128: - // For up to 128 bytes of ciphertext and 64 bytes for the poly key, we require to process three blocks - MOVOU ·chacha20Constants<>(SB), A0; MOVOU (1*16)(keyp), B0; MOVOU (2*16)(keyp), C0; MOVOU (3*16)(keyp), D0 - MOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1 - MOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2 - MOVO B0, T1; MOVO C0, T2; MOVO D1, T3 - MOVQ $10, itr2 - -sealSSE128InnerCipherLoop: - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0) - shiftB0Left; shiftB1Left; shiftB2Left - shiftC0Left; shiftC1Left; shiftC2Left - shiftD0Left; shiftD1Left; shiftD2Left - chachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0) - shiftB0Right; shiftB1Right; shiftB2Right - shiftC0Right; shiftC1Right; shiftC2Right - shiftD0Right; shiftD1Right; shiftD2Right - DECQ itr2 - JNE sealSSE128InnerCipherLoop - - // A0|B0 hold the Poly1305 32-byte key, C0,D0 can be discarded - PADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1; PADDL ·chacha20Constants<>(SB), A2 - PADDL T1, B0; PADDL T1, B1; PADDL T1, B2 - PADDL T2, C1; PADDL T2, C2 - PADDL T3, D1; PADDL ·sseIncMask<>(SB), T3; PADDL T3, D2 - PAND ·polyClampMask<>(SB), A0 - MOVOU A0, rStore - MOVOU B0, sStore - - // Hash - MOVQ ad_len+80(FP), itr2 - CALL polyHashADInternal<>(SB) - XORQ itr1, itr1 - -sealSSE128SealHash: - // itr1 holds the number of bytes encrypted but not yet hashed - CMPQ itr1, $16 - JB sealSSE128Seal - polyAdd(0(oup)) - polyMul - - SUBQ $16, itr1 - ADDQ $16, oup - - JMP sealSSE128SealHash - -sealSSE128Seal: - CMPQ inl, $16 - JB sealSSETail - SUBQ $16, inl - - // Load for decryption - MOVOU (inp), T0 - PXOR T0, A1 - MOVOU A1, (oup) - LEAQ (1*16)(inp), inp - LEAQ (1*16)(oup), oup - - // Extract for hashing - MOVQ A1, t0 - PSRLDQ $8, A1 - MOVQ A1, t1 - ADDQ t0, acc0; ADCQ t1, acc1; ADCQ $1, acc2 - polyMul - - // Shift the stream "left" - MOVO B1, A1 - MOVO C1, B1 - MOVO D1, C1 - MOVO A2, D1 - MOVO B2, A2 - MOVO C2, B2 - MOVO D2, C2 - JMP sealSSE128Seal - -sealSSETail: - TESTQ inl, inl - JE sealSSEFinalize - - // We can only load the PT one byte at a time to avoid read after end of buffer - MOVQ inl, itr2 - SHLQ $4, itr2 - LEAQ ·andMask<>(SB), t0 - MOVQ inl, itr1 - LEAQ -1(inp)(inl*1), inp - XORQ t2, t2 - XORQ t3, t3 - XORQ AX, AX - -sealSSETailLoadLoop: - SHLQ $8, t2, t3 - SHLQ $8, t2 - MOVB (inp), AX - XORQ AX, t2 - LEAQ -1(inp), inp - DECQ itr1 - JNE sealSSETailLoadLoop - MOVQ t2, 0+tmpStore - MOVQ t3, 8+tmpStore - PXOR 0+tmpStore, A1 - MOVOU A1, (oup) - MOVOU -16(t0)(itr2*1), T0 - PAND T0, A1 - MOVQ A1, t0 - PSRLDQ $8, A1 - MOVQ A1, t1 - ADDQ t0, acc0; ADCQ t1, acc1; ADCQ $1, acc2 - polyMul - - ADDQ inl, oup - -sealSSEFinalize: - // Hash in the buffer lengths - ADDQ ad_len+80(FP), acc0 - ADCQ src_len+56(FP), acc1 - ADCQ $1, acc2 - polyMul - - // Final reduce - MOVQ acc0, t0 - MOVQ acc1, t1 - MOVQ acc2, t2 - SUBQ $-5, acc0 - SBBQ $-1, acc1 - SBBQ $3, acc2 - CMOVQCS t0, acc0 - CMOVQCS t1, acc1 - CMOVQCS t2, acc2 - - // Add in the "s" part of the key - ADDQ 0+sStore, acc0 - ADCQ 8+sStore, acc1 - - // Finally store the tag at the end of the message - MOVQ acc0, (0*8)(oup) - MOVQ acc1, (1*8)(oup) - RET - -// ---------------------------------------------------------------------------- -// ------------------------- AVX2 Code ---------------------------------------- -chacha20Poly1305Seal_AVX2: - VZEROUPPER - VMOVDQU ·chacha20Constants<>(SB), AA0 - BYTE $0xc4; BYTE $0x42; BYTE $0x7d; BYTE $0x5a; BYTE $0x70; BYTE $0x10 // broadcasti128 16(r8), ymm14 - BYTE $0xc4; BYTE $0x42; BYTE $0x7d; BYTE $0x5a; BYTE $0x60; BYTE $0x20 // broadcasti128 32(r8), ymm12 - BYTE $0xc4; BYTE $0xc2; BYTE $0x7d; BYTE $0x5a; BYTE $0x60; BYTE $0x30 // broadcasti128 48(r8), ymm4 - VPADDD ·avx2InitMask<>(SB), DD0, DD0 - - // Special optimizations, for very short buffers - CMPQ inl, $192 - JBE seal192AVX2 // 33% faster - CMPQ inl, $320 - JBE seal320AVX2 // 17% faster - - // For the general key prepare the key first - as a byproduct we have 64 bytes of cipher stream - VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3 - VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3; VMOVDQA BB0, state1StoreAVX2 - VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3; VMOVDQA CC0, state2StoreAVX2 - VPADDD ·avx2IncMask<>(SB), DD0, DD1; VMOVDQA DD0, ctr0StoreAVX2 - VPADDD ·avx2IncMask<>(SB), DD1, DD2; VMOVDQA DD1, ctr1StoreAVX2 - VPADDD ·avx2IncMask<>(SB), DD2, DD3; VMOVDQA DD2, ctr2StoreAVX2 - VMOVDQA DD3, ctr3StoreAVX2 - MOVQ $10, itr2 - -sealAVX2IntroLoop: - VMOVDQA CC3, tmpStoreAVX2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, CC3); chachaQR_AVX2(AA1, BB1, CC1, DD1, CC3); chachaQR_AVX2(AA2, BB2, CC2, DD2, CC3) - VMOVDQA tmpStoreAVX2, CC3 - VMOVDQA CC1, tmpStoreAVX2 - chachaQR_AVX2(AA3, BB3, CC3, DD3, CC1) - VMOVDQA tmpStoreAVX2, CC1 - - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $12, DD0, DD0, DD0 - VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $12, DD1, DD1, DD1 - VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $12, DD2, DD2, DD2 - VPALIGNR $4, BB3, BB3, BB3; VPALIGNR $8, CC3, CC3, CC3; VPALIGNR $12, DD3, DD3, DD3 - - VMOVDQA CC3, tmpStoreAVX2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, CC3); chachaQR_AVX2(AA1, BB1, CC1, DD1, CC3); chachaQR_AVX2(AA2, BB2, CC2, DD2, CC3) - VMOVDQA tmpStoreAVX2, CC3 - VMOVDQA CC1, tmpStoreAVX2 - chachaQR_AVX2(AA3, BB3, CC3, DD3, CC1) - VMOVDQA tmpStoreAVX2, CC1 - - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $4, DD0, DD0, DD0 - VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $4, DD1, DD1, DD1 - VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $4, DD2, DD2, DD2 - VPALIGNR $12, BB3, BB3, BB3; VPALIGNR $8, CC3, CC3, CC3; VPALIGNR $4, DD3, DD3, DD3 - DECQ itr2 - JNE sealAVX2IntroLoop - - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3 - VPADDD ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3 - - VPERM2I128 $0x13, CC0, DD0, CC0 // Stream bytes 96 - 127 - VPERM2I128 $0x02, AA0, BB0, DD0 // The Poly1305 key - VPERM2I128 $0x13, AA0, BB0, AA0 // Stream bytes 64 - 95 - - // Clamp and store poly key - VPAND ·polyClampMask<>(SB), DD0, DD0 - VMOVDQA DD0, rsStoreAVX2 - - // Hash AD - MOVQ ad_len+80(FP), itr2 - CALL polyHashADInternal<>(SB) - - // Can store at least 320 bytes - VPXOR (0*32)(inp), AA0, AA0 - VPXOR (1*32)(inp), CC0, CC0 - VMOVDQU AA0, (0*32)(oup) - VMOVDQU CC0, (1*32)(oup) - - VPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0 - VPXOR (2*32)(inp), AA0, AA0; VPXOR (3*32)(inp), BB0, BB0; VPXOR (4*32)(inp), CC0, CC0; VPXOR (5*32)(inp), DD0, DD0 - VMOVDQU AA0, (2*32)(oup); VMOVDQU BB0, (3*32)(oup); VMOVDQU CC0, (4*32)(oup); VMOVDQU DD0, (5*32)(oup) - VPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0 - VPXOR (6*32)(inp), AA0, AA0; VPXOR (7*32)(inp), BB0, BB0; VPXOR (8*32)(inp), CC0, CC0; VPXOR (9*32)(inp), DD0, DD0 - VMOVDQU AA0, (6*32)(oup); VMOVDQU BB0, (7*32)(oup); VMOVDQU CC0, (8*32)(oup); VMOVDQU DD0, (9*32)(oup) - - MOVQ $320, itr1 - SUBQ $320, inl - LEAQ 320(inp), inp - - VPERM2I128 $0x02, AA3, BB3, AA0; VPERM2I128 $0x02, CC3, DD3, BB0; VPERM2I128 $0x13, AA3, BB3, CC0; VPERM2I128 $0x13, CC3, DD3, DD0 - CMPQ inl, $128 - JBE sealAVX2SealHash - - VPXOR (0*32)(inp), AA0, AA0; VPXOR (1*32)(inp), BB0, BB0; VPXOR (2*32)(inp), CC0, CC0; VPXOR (3*32)(inp), DD0, DD0 - VMOVDQU AA0, (10*32)(oup); VMOVDQU BB0, (11*32)(oup); VMOVDQU CC0, (12*32)(oup); VMOVDQU DD0, (13*32)(oup) - SUBQ $128, inl - LEAQ 128(inp), inp - - MOVQ $8, itr1 - MOVQ $2, itr2 - - CMPQ inl, $128 - JBE sealAVX2Tail128 - CMPQ inl, $256 - JBE sealAVX2Tail256 - CMPQ inl, $384 - JBE sealAVX2Tail384 - CMPQ inl, $512 - JBE sealAVX2Tail512 - - // We have 448 bytes to hash, but main loop hashes 512 bytes at a time - perform some rounds, before the main loop - VMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3 - VMOVDQA ctr3StoreAVX2, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3 - VMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2 - - VMOVDQA CC3, tmpStoreAVX2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, CC3); chachaQR_AVX2(AA1, BB1, CC1, DD1, CC3); chachaQR_AVX2(AA2, BB2, CC2, DD2, CC3) - VMOVDQA tmpStoreAVX2, CC3 - VMOVDQA CC1, tmpStoreAVX2 - chachaQR_AVX2(AA3, BB3, CC3, DD3, CC1) - VMOVDQA tmpStoreAVX2, CC1 - - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $12, DD0, DD0, DD0 - VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $12, DD1, DD1, DD1 - VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $12, DD2, DD2, DD2 - VPALIGNR $4, BB3, BB3, BB3; VPALIGNR $8, CC3, CC3, CC3; VPALIGNR $12, DD3, DD3, DD3 - - VMOVDQA CC3, tmpStoreAVX2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, CC3); chachaQR_AVX2(AA1, BB1, CC1, DD1, CC3); chachaQR_AVX2(AA2, BB2, CC2, DD2, CC3) - VMOVDQA tmpStoreAVX2, CC3 - VMOVDQA CC1, tmpStoreAVX2 - chachaQR_AVX2(AA3, BB3, CC3, DD3, CC1) - VMOVDQA tmpStoreAVX2, CC1 - - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $4, DD0, DD0, DD0 - VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $4, DD1, DD1, DD1 - VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $4, DD2, DD2, DD2 - VPALIGNR $12, BB3, BB3, BB3; VPALIGNR $8, CC3, CC3, CC3; VPALIGNR $4, DD3, DD3, DD3 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - - SUBQ $16, oup // Adjust the pointer - MOVQ $9, itr1 - JMP sealAVX2InternalLoopStart - -sealAVX2MainLoop: - // Load state, increment counter blocks, store the incremented counters - VMOVDQU ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3 - VMOVDQA ctr3StoreAVX2, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3 - VMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2 - MOVQ $10, itr1 - -sealAVX2InternalLoop: - polyAdd(0*8(oup)) - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - polyMulStage1_AVX2 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - polyMulStage2_AVX2 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - polyMulStage3_AVX2 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyMulReduceStage - -sealAVX2InternalLoopStart: - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3 - polyAdd(2*8(oup)) - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - polyMulStage1_AVX2 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyMulStage2_AVX2 - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $4, BB3, BB3, BB3 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2; VPALIGNR $12, DD3, DD3, DD3 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - polyMulStage3_AVX2 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - polyMulReduceStage - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - polyAdd(4*8(oup)) - LEAQ (6*8)(oup), oup - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyMulStage1_AVX2 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - polyMulStage2_AVX2 - VPSHUFB ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - polyMulStage3_AVX2 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyMulReduceStage - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $12, BB3, BB3, BB3 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2; VPALIGNR $4, DD3, DD3, DD3 - DECQ itr1 - JNE sealAVX2InternalLoop - - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3 - VPADDD ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3 - VMOVDQA CC3, tmpStoreAVX2 - - // We only hashed 480 of the 512 bytes available - hash the remaining 32 here - polyAdd(0*8(oup)) - polyMulAVX2 - LEAQ (4*8)(oup), oup - VPERM2I128 $0x02, AA0, BB0, CC3; VPERM2I128 $0x13, AA0, BB0, BB0; VPERM2I128 $0x02, CC0, DD0, AA0; VPERM2I128 $0x13, CC0, DD0, CC0 - VPXOR (0*32)(inp), CC3, CC3; VPXOR (1*32)(inp), AA0, AA0; VPXOR (2*32)(inp), BB0, BB0; VPXOR (3*32)(inp), CC0, CC0 - VMOVDQU CC3, (0*32)(oup); VMOVDQU AA0, (1*32)(oup); VMOVDQU BB0, (2*32)(oup); VMOVDQU CC0, (3*32)(oup) - VPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0 - VPXOR (4*32)(inp), AA0, AA0; VPXOR (5*32)(inp), BB0, BB0; VPXOR (6*32)(inp), CC0, CC0; VPXOR (7*32)(inp), DD0, DD0 - VMOVDQU AA0, (4*32)(oup); VMOVDQU BB0, (5*32)(oup); VMOVDQU CC0, (6*32)(oup); VMOVDQU DD0, (7*32)(oup) - - // and here - polyAdd(-2*8(oup)) - polyMulAVX2 - VPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0 - VPXOR (8*32)(inp), AA0, AA0; VPXOR (9*32)(inp), BB0, BB0; VPXOR (10*32)(inp), CC0, CC0; VPXOR (11*32)(inp), DD0, DD0 - VMOVDQU AA0, (8*32)(oup); VMOVDQU BB0, (9*32)(oup); VMOVDQU CC0, (10*32)(oup); VMOVDQU DD0, (11*32)(oup) - VPERM2I128 $0x02, AA3, BB3, AA0; VPERM2I128 $0x02, tmpStoreAVX2, DD3, BB0; VPERM2I128 $0x13, AA3, BB3, CC0; VPERM2I128 $0x13, tmpStoreAVX2, DD3, DD0 - VPXOR (12*32)(inp), AA0, AA0; VPXOR (13*32)(inp), BB0, BB0; VPXOR (14*32)(inp), CC0, CC0; VPXOR (15*32)(inp), DD0, DD0 - VMOVDQU AA0, (12*32)(oup); VMOVDQU BB0, (13*32)(oup); VMOVDQU CC0, (14*32)(oup); VMOVDQU DD0, (15*32)(oup) - LEAQ (32*16)(inp), inp - SUBQ $(32*16), inl - CMPQ inl, $512 - JG sealAVX2MainLoop - - // Tail can only hash 480 bytes - polyAdd(0*8(oup)) - polyMulAVX2 - polyAdd(2*8(oup)) - polyMulAVX2 - LEAQ 32(oup), oup - - MOVQ $10, itr1 - MOVQ $0, itr2 - CMPQ inl, $128 - JBE sealAVX2Tail128 - CMPQ inl, $256 - JBE sealAVX2Tail256 - CMPQ inl, $384 - JBE sealAVX2Tail384 - JMP sealAVX2Tail512 - -// ---------------------------------------------------------------------------- -// Special optimization for buffers smaller than 193 bytes -seal192AVX2: - // For up to 192 bytes of ciphertext and 64 bytes for the poly key, we process four blocks - VMOVDQA AA0, AA1 - VMOVDQA BB0, BB1 - VMOVDQA CC0, CC1 - VPADDD ·avx2IncMask<>(SB), DD0, DD1 - VMOVDQA AA0, AA2 - VMOVDQA BB0, BB2 - VMOVDQA CC0, CC2 - VMOVDQA DD0, DD2 - VMOVDQA DD1, TT3 - MOVQ $10, itr2 - -sealAVX2192InnerCipherLoop: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1 - DECQ itr2 - JNE sealAVX2192InnerCipherLoop - VPADDD AA2, AA0, AA0; VPADDD AA2, AA1, AA1 - VPADDD BB2, BB0, BB0; VPADDD BB2, BB1, BB1 - VPADDD CC2, CC0, CC0; VPADDD CC2, CC1, CC1 - VPADDD DD2, DD0, DD0; VPADDD TT3, DD1, DD1 - VPERM2I128 $0x02, AA0, BB0, TT0 - - // Clamp and store poly key - VPAND ·polyClampMask<>(SB), TT0, TT0 - VMOVDQA TT0, rsStoreAVX2 - - // Stream for up to 192 bytes - VPERM2I128 $0x13, AA0, BB0, AA0 - VPERM2I128 $0x13, CC0, DD0, BB0 - VPERM2I128 $0x02, AA1, BB1, CC0 - VPERM2I128 $0x02, CC1, DD1, DD0 - VPERM2I128 $0x13, AA1, BB1, AA1 - VPERM2I128 $0x13, CC1, DD1, BB1 - -sealAVX2ShortSeal: - // Hash aad - MOVQ ad_len+80(FP), itr2 - CALL polyHashADInternal<>(SB) - XORQ itr1, itr1 - -sealAVX2SealHash: - // itr1 holds the number of bytes encrypted but not yet hashed - CMPQ itr1, $16 - JB sealAVX2ShortSealLoop - polyAdd(0(oup)) - polyMul - SUBQ $16, itr1 - ADDQ $16, oup - JMP sealAVX2SealHash - -sealAVX2ShortSealLoop: - CMPQ inl, $32 - JB sealAVX2ShortTail32 - SUBQ $32, inl - - // Load for encryption - VPXOR (inp), AA0, AA0 - VMOVDQU AA0, (oup) - LEAQ (1*32)(inp), inp - - // Now can hash - polyAdd(0*8(oup)) - polyMulAVX2 - polyAdd(2*8(oup)) - polyMulAVX2 - LEAQ (1*32)(oup), oup - - // Shift stream left - VMOVDQA BB0, AA0 - VMOVDQA CC0, BB0 - VMOVDQA DD0, CC0 - VMOVDQA AA1, DD0 - VMOVDQA BB1, AA1 - VMOVDQA CC1, BB1 - VMOVDQA DD1, CC1 - VMOVDQA AA2, DD1 - VMOVDQA BB2, AA2 - JMP sealAVX2ShortSealLoop - -sealAVX2ShortTail32: - CMPQ inl, $16 - VMOVDQA A0, A1 - JB sealAVX2ShortDone - - SUBQ $16, inl - - // Load for encryption - VPXOR (inp), A0, T0 - VMOVDQU T0, (oup) - LEAQ (1*16)(inp), inp - - // Hash - polyAdd(0*8(oup)) - polyMulAVX2 - LEAQ (1*16)(oup), oup - VPERM2I128 $0x11, AA0, AA0, AA0 - VMOVDQA A0, A1 - -sealAVX2ShortDone: - VZEROUPPER - JMP sealSSETail - -// ---------------------------------------------------------------------------- -// Special optimization for buffers smaller than 321 bytes -seal320AVX2: - // For up to 320 bytes of ciphertext and 64 bytes for the poly key, we process six blocks - VMOVDQA AA0, AA1; VMOVDQA BB0, BB1; VMOVDQA CC0, CC1; VPADDD ·avx2IncMask<>(SB), DD0, DD1 - VMOVDQA AA0, AA2; VMOVDQA BB0, BB2; VMOVDQA CC0, CC2; VPADDD ·avx2IncMask<>(SB), DD1, DD2 - VMOVDQA BB0, TT1; VMOVDQA CC0, TT2; VMOVDQA DD0, TT3 - MOVQ $10, itr2 - -sealAVX2320InnerCipherLoop: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0) - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0) - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2 - DECQ itr2 - JNE sealAVX2320InnerCipherLoop - - VMOVDQA ·chacha20Constants<>(SB), TT0 - VPADDD TT0, AA0, AA0; VPADDD TT0, AA1, AA1; VPADDD TT0, AA2, AA2 - VPADDD TT1, BB0, BB0; VPADDD TT1, BB1, BB1; VPADDD TT1, BB2, BB2 - VPADDD TT2, CC0, CC0; VPADDD TT2, CC1, CC1; VPADDD TT2, CC2, CC2 - VMOVDQA ·avx2IncMask<>(SB), TT0 - VPADDD TT3, DD0, DD0; VPADDD TT0, TT3, TT3 - VPADDD TT3, DD1, DD1; VPADDD TT0, TT3, TT3 - VPADDD TT3, DD2, DD2 - - // Clamp and store poly key - VPERM2I128 $0x02, AA0, BB0, TT0 - VPAND ·polyClampMask<>(SB), TT0, TT0 - VMOVDQA TT0, rsStoreAVX2 - - // Stream for up to 320 bytes - VPERM2I128 $0x13, AA0, BB0, AA0 - VPERM2I128 $0x13, CC0, DD0, BB0 - VPERM2I128 $0x02, AA1, BB1, CC0 - VPERM2I128 $0x02, CC1, DD1, DD0 - VPERM2I128 $0x13, AA1, BB1, AA1 - VPERM2I128 $0x13, CC1, DD1, BB1 - VPERM2I128 $0x02, AA2, BB2, CC1 - VPERM2I128 $0x02, CC2, DD2, DD1 - VPERM2I128 $0x13, AA2, BB2, AA2 - VPERM2I128 $0x13, CC2, DD2, BB2 - JMP sealAVX2ShortSeal - -// ---------------------------------------------------------------------------- -// Special optimization for the last 128 bytes of ciphertext -sealAVX2Tail128: - // Need to decrypt up to 128 bytes - prepare two blocks - // If we got here after the main loop - there are 512 encrypted bytes waiting to be hashed - // If we got here before the main loop - there are 448 encrpyred bytes waiting to be hashed - VMOVDQA ·chacha20Constants<>(SB), AA0 - VMOVDQA state1StoreAVX2, BB0 - VMOVDQA state2StoreAVX2, CC0 - VMOVDQA ctr3StoreAVX2, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD0 - VMOVDQA DD0, DD1 - -sealAVX2Tail128LoopA: - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - -sealAVX2Tail128LoopB: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0) - polyAdd(0(oup)) - polyMul - VPALIGNR $4, BB0, BB0, BB0 - VPALIGNR $8, CC0, CC0, CC0 - VPALIGNR $12, DD0, DD0, DD0 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0) - polyAdd(16(oup)) - polyMul - LEAQ 32(oup), oup - VPALIGNR $12, BB0, BB0, BB0 - VPALIGNR $8, CC0, CC0, CC0 - VPALIGNR $4, DD0, DD0, DD0 - DECQ itr1 - JG sealAVX2Tail128LoopA - DECQ itr2 - JGE sealAVX2Tail128LoopB - - VPADDD ·chacha20Constants<>(SB), AA0, AA1 - VPADDD state1StoreAVX2, BB0, BB1 - VPADDD state2StoreAVX2, CC0, CC1 - VPADDD DD1, DD0, DD1 - - VPERM2I128 $0x02, AA1, BB1, AA0 - VPERM2I128 $0x02, CC1, DD1, BB0 - VPERM2I128 $0x13, AA1, BB1, CC0 - VPERM2I128 $0x13, CC1, DD1, DD0 - JMP sealAVX2ShortSealLoop - -// ---------------------------------------------------------------------------- -// Special optimization for the last 256 bytes of ciphertext -sealAVX2Tail256: - // Need to decrypt up to 256 bytes - prepare two blocks - // If we got here after the main loop - there are 512 encrypted bytes waiting to be hashed - // If we got here before the main loop - there are 448 encrpyred bytes waiting to be hashed - VMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA ·chacha20Constants<>(SB), AA1 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA state1StoreAVX2, BB1 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA state2StoreAVX2, CC1 - VMOVDQA ctr3StoreAVX2, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD1 - VMOVDQA DD0, TT1 - VMOVDQA DD1, TT2 - -sealAVX2Tail256LoopA: - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - -sealAVX2Tail256LoopB: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - polyAdd(0(oup)) - polyMul - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0) - polyAdd(16(oup)) - polyMul - LEAQ 32(oup), oup - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1 - DECQ itr1 - JG sealAVX2Tail256LoopA - DECQ itr2 - JGE sealAVX2Tail256LoopB - - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1 - VPADDD TT1, DD0, DD0; VPADDD TT2, DD1, DD1 - VPERM2I128 $0x02, AA0, BB0, TT0 - VPERM2I128 $0x02, CC0, DD0, TT1 - VPERM2I128 $0x13, AA0, BB0, TT2 - VPERM2I128 $0x13, CC0, DD0, TT3 - VPXOR (0*32)(inp), TT0, TT0; VPXOR (1*32)(inp), TT1, TT1; VPXOR (2*32)(inp), TT2, TT2; VPXOR (3*32)(inp), TT3, TT3 - VMOVDQU TT0, (0*32)(oup); VMOVDQU TT1, (1*32)(oup); VMOVDQU TT2, (2*32)(oup); VMOVDQU TT3, (3*32)(oup) - MOVQ $128, itr1 - LEAQ 128(inp), inp - SUBQ $128, inl - VPERM2I128 $0x02, AA1, BB1, AA0 - VPERM2I128 $0x02, CC1, DD1, BB0 - VPERM2I128 $0x13, AA1, BB1, CC0 - VPERM2I128 $0x13, CC1, DD1, DD0 - - JMP sealAVX2SealHash - -// ---------------------------------------------------------------------------- -// Special optimization for the last 384 bytes of ciphertext -sealAVX2Tail384: - // Need to decrypt up to 384 bytes - prepare two blocks - // If we got here after the main loop - there are 512 encrypted bytes waiting to be hashed - // If we got here before the main loop - there are 448 encrpyred bytes waiting to be hashed - VMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2 - VMOVDQA ctr3StoreAVX2, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2 - VMOVDQA DD0, TT1; VMOVDQA DD1, TT2; VMOVDQA DD2, TT3 - -sealAVX2Tail384LoopA: - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - -sealAVX2Tail384LoopB: - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0) - polyAdd(0(oup)) - polyMul - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2 - chachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0) - polyAdd(16(oup)) - polyMul - LEAQ 32(oup), oup - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2 - DECQ itr1 - JG sealAVX2Tail384LoopA - DECQ itr2 - JGE sealAVX2Tail384LoopB - - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2 - VPADDD TT1, DD0, DD0; VPADDD TT2, DD1, DD1; VPADDD TT3, DD2, DD2 - VPERM2I128 $0x02, AA0, BB0, TT0 - VPERM2I128 $0x02, CC0, DD0, TT1 - VPERM2I128 $0x13, AA0, BB0, TT2 - VPERM2I128 $0x13, CC0, DD0, TT3 - VPXOR (0*32)(inp), TT0, TT0; VPXOR (1*32)(inp), TT1, TT1; VPXOR (2*32)(inp), TT2, TT2; VPXOR (3*32)(inp), TT3, TT3 - VMOVDQU TT0, (0*32)(oup); VMOVDQU TT1, (1*32)(oup); VMOVDQU TT2, (2*32)(oup); VMOVDQU TT3, (3*32)(oup) - VPERM2I128 $0x02, AA1, BB1, TT0 - VPERM2I128 $0x02, CC1, DD1, TT1 - VPERM2I128 $0x13, AA1, BB1, TT2 - VPERM2I128 $0x13, CC1, DD1, TT3 - VPXOR (4*32)(inp), TT0, TT0; VPXOR (5*32)(inp), TT1, TT1; VPXOR (6*32)(inp), TT2, TT2; VPXOR (7*32)(inp), TT3, TT3 - VMOVDQU TT0, (4*32)(oup); VMOVDQU TT1, (5*32)(oup); VMOVDQU TT2, (6*32)(oup); VMOVDQU TT3, (7*32)(oup) - MOVQ $256, itr1 - LEAQ 256(inp), inp - SUBQ $256, inl - VPERM2I128 $0x02, AA2, BB2, AA0 - VPERM2I128 $0x02, CC2, DD2, BB0 - VPERM2I128 $0x13, AA2, BB2, CC0 - VPERM2I128 $0x13, CC2, DD2, DD0 - - JMP sealAVX2SealHash - -// ---------------------------------------------------------------------------- -// Special optimization for the last 512 bytes of ciphertext -sealAVX2Tail512: - // Need to decrypt up to 512 bytes - prepare two blocks - // If we got here after the main loop - there are 512 encrypted bytes waiting to be hashed - // If we got here before the main loop - there are 448 encrpyred bytes waiting to be hashed - VMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3 - VMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3 - VMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3 - VMOVDQA ctr3StoreAVX2, DD0 - VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3 - VMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2 - -sealAVX2Tail512LoopA: - polyAdd(0(oup)) - polyMul - LEAQ 16(oup), oup - -sealAVX2Tail512LoopB: - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - polyAdd(0*8(oup)) - polyMulAVX2 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - VPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $4, BB3, BB3, BB3 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3 - VPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2; VPALIGNR $12, DD3, DD3, DD3 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - polyAdd(2*8(oup)) - polyMulAVX2 - LEAQ (4*8)(oup), oup - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - VPADDD BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3 - VPXOR AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3 - VPSHUFB ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3 - VPADDD DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3 - VPXOR CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3 - VMOVDQA CC3, tmpStoreAVX2 - VPSLLD $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0 - VPSLLD $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1 - VPSLLD $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2 - VPSLLD $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3 - VMOVDQA tmpStoreAVX2, CC3 - VPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $12, BB3, BB3, BB3 - VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3 - VPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2; VPALIGNR $4, DD3, DD3, DD3 - - DECQ itr1 - JG sealAVX2Tail512LoopA - DECQ itr2 - JGE sealAVX2Tail512LoopB - - VPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3 - VPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3 - VPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3 - VPADDD ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3 - VMOVDQA CC3, tmpStoreAVX2 - VPERM2I128 $0x02, AA0, BB0, CC3 - VPXOR (0*32)(inp), CC3, CC3 - VMOVDQU CC3, (0*32)(oup) - VPERM2I128 $0x02, CC0, DD0, CC3 - VPXOR (1*32)(inp), CC3, CC3 - VMOVDQU CC3, (1*32)(oup) - VPERM2I128 $0x13, AA0, BB0, CC3 - VPXOR (2*32)(inp), CC3, CC3 - VMOVDQU CC3, (2*32)(oup) - VPERM2I128 $0x13, CC0, DD0, CC3 - VPXOR (3*32)(inp), CC3, CC3 - VMOVDQU CC3, (3*32)(oup) - - VPERM2I128 $0x02, AA1, BB1, AA0 - VPERM2I128 $0x02, CC1, DD1, BB0 - VPERM2I128 $0x13, AA1, BB1, CC0 - VPERM2I128 $0x13, CC1, DD1, DD0 - VPXOR (4*32)(inp), AA0, AA0; VPXOR (5*32)(inp), BB0, BB0; VPXOR (6*32)(inp), CC0, CC0; VPXOR (7*32)(inp), DD0, DD0 - VMOVDQU AA0, (4*32)(oup); VMOVDQU BB0, (5*32)(oup); VMOVDQU CC0, (6*32)(oup); VMOVDQU DD0, (7*32)(oup) - - VPERM2I128 $0x02, AA2, BB2, AA0 - VPERM2I128 $0x02, CC2, DD2, BB0 - VPERM2I128 $0x13, AA2, BB2, CC0 - VPERM2I128 $0x13, CC2, DD2, DD0 - VPXOR (8*32)(inp), AA0, AA0; VPXOR (9*32)(inp), BB0, BB0; VPXOR (10*32)(inp), CC0, CC0; VPXOR (11*32)(inp), DD0, DD0 - VMOVDQU AA0, (8*32)(oup); VMOVDQU BB0, (9*32)(oup); VMOVDQU CC0, (10*32)(oup); VMOVDQU DD0, (11*32)(oup) - - MOVQ $384, itr1 - LEAQ 384(inp), inp - SUBQ $384, inl - VPERM2I128 $0x02, AA3, BB3, AA0 - VPERM2I128 $0x02, tmpStoreAVX2, DD3, BB0 - VPERM2I128 $0x13, AA3, BB3, CC0 - VPERM2I128 $0x13, tmpStoreAVX2, DD3, DD0 - - JMP sealAVX2SealHash - -// func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) -TEXT ·cpuid(SB), NOSPLIT, $0-24 - MOVL eaxArg+0(FP), AX - MOVL ecxArg+4(FP), CX - CPUID - MOVL AX, eax+8(FP) - MOVL BX, ebx+12(FP) - MOVL CX, ecx+16(FP) - MOVL DX, edx+20(FP) - RET - -// func xgetbv() (eax, edx uint32) -TEXT ·xgetbv(SB),NOSPLIT,$0-8 - MOVL $0, CX - XGETBV - MOVL AX, eax+0(FP) - MOVL DX, edx+4(FP) - RET diff --git a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go b/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go deleted file mode 100644 index 4ac014f5..00000000 --- a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go +++ /dev/null @@ -1,70 +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 chacha20poly1305 - -import ( - "encoding/binary" - - "golang.org/x/crypto/internal/chacha20" - "golang.org/x/crypto/poly1305" -) - -func roundTo16(n int) int { - return 16 * ((n + 15) / 16) -} - -func (c *chacha20poly1305) sealGeneric(dst, nonce, plaintext, additionalData []byte) []byte { - var counter [16]byte - copy(counter[4:], nonce) - - var polyKey [32]byte - chacha20.XORKeyStream(polyKey[:], polyKey[:], &counter, &c.key) - - ret, out := sliceForAppend(dst, len(plaintext)+poly1305.TagSize) - counter[0] = 1 - chacha20.XORKeyStream(out, plaintext, &counter, &c.key) - - polyInput := make([]byte, roundTo16(len(additionalData))+roundTo16(len(plaintext))+8+8) - copy(polyInput, additionalData) - copy(polyInput[roundTo16(len(additionalData)):], out[:len(plaintext)]) - binary.LittleEndian.PutUint64(polyInput[len(polyInput)-16:], uint64(len(additionalData))) - binary.LittleEndian.PutUint64(polyInput[len(polyInput)-8:], uint64(len(plaintext))) - - var tag [poly1305.TagSize]byte - poly1305.Sum(&tag, polyInput, &polyKey) - copy(out[len(plaintext):], tag[:]) - - return ret -} - -func (c *chacha20poly1305) openGeneric(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { - var tag [poly1305.TagSize]byte - copy(tag[:], ciphertext[len(ciphertext)-16:]) - ciphertext = ciphertext[:len(ciphertext)-16] - - var counter [16]byte - copy(counter[4:], nonce) - - var polyKey [32]byte - chacha20.XORKeyStream(polyKey[:], polyKey[:], &counter, &c.key) - - polyInput := make([]byte, roundTo16(len(additionalData))+roundTo16(len(ciphertext))+8+8) - copy(polyInput, additionalData) - copy(polyInput[roundTo16(len(additionalData)):], ciphertext) - binary.LittleEndian.PutUint64(polyInput[len(polyInput)-16:], uint64(len(additionalData))) - binary.LittleEndian.PutUint64(polyInput[len(polyInput)-8:], uint64(len(ciphertext))) - - ret, out := sliceForAppend(dst, len(ciphertext)) - if !poly1305.Verify(&tag, polyInput, &polyKey) { - for i := range out { - out[i] = 0 - } - return nil, errOpen - } - - counter[0] = 1 - chacha20.XORKeyStream(out, ciphertext, &counter, &c.key) - return ret, nil -} diff --git a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go b/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go deleted file mode 100644 index 4c2eb703..00000000 --- a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go +++ /dev/null @@ -1,15 +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. - -// +build !amd64 !go1.7 gccgo appengine - -package chacha20poly1305 - -func (c *chacha20poly1305) seal(dst, nonce, plaintext, additionalData []byte) []byte { - return c.sealGeneric(dst, nonce, plaintext, additionalData) -} - -func (c *chacha20poly1305) open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) { - return c.openGeneric(dst, nonce, ciphertext, additionalData) -} diff --git a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_test.go b/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_test.go deleted file mode 100644 index 78f981a7..00000000 --- a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_test.go +++ /dev/null @@ -1,182 +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 chacha20poly1305 - -import ( - "bytes" - cr "crypto/rand" - "encoding/hex" - mr "math/rand" - "testing" -) - -func TestVectors(t *testing.T) { - for i, test := range chacha20Poly1305Tests { - key, _ := hex.DecodeString(test.key) - nonce, _ := hex.DecodeString(test.nonce) - ad, _ := hex.DecodeString(test.aad) - plaintext, _ := hex.DecodeString(test.plaintext) - - aead, err := New(key) - if err != nil { - t.Fatal(err) - } - - ct := aead.Seal(nil, nonce, plaintext, ad) - if ctHex := hex.EncodeToString(ct); ctHex != test.out { - t.Errorf("#%d: got %s, want %s", i, ctHex, test.out) - continue - } - - plaintext2, err := aead.Open(nil, nonce, ct, ad) - if err != nil { - t.Errorf("#%d: Open failed", i) - continue - } - - if !bytes.Equal(plaintext, plaintext2) { - t.Errorf("#%d: plaintext's don't match: got %x vs %x", i, plaintext2, plaintext) - continue - } - - if len(ad) > 0 { - alterAdIdx := mr.Intn(len(ad)) - ad[alterAdIdx] ^= 0x80 - if _, err := aead.Open(nil, nonce, ct, ad); err == nil { - t.Errorf("#%d: Open was successful after altering additional data", i) - } - ad[alterAdIdx] ^= 0x80 - } - - alterNonceIdx := mr.Intn(aead.NonceSize()) - nonce[alterNonceIdx] ^= 0x80 - if _, err := aead.Open(nil, nonce, ct, ad); err == nil { - t.Errorf("#%d: Open was successful after altering nonce", i) - } - nonce[alterNonceIdx] ^= 0x80 - - alterCtIdx := mr.Intn(len(ct)) - ct[alterCtIdx] ^= 0x80 - if _, err := aead.Open(nil, nonce, ct, ad); err == nil { - t.Errorf("#%d: Open was successful after altering ciphertext", i) - } - ct[alterCtIdx] ^= 0x80 - } -} - -func TestRandom(t *testing.T) { - // Some random tests to verify Open(Seal) == Plaintext - for i := 0; i < 256; i++ { - var nonce [12]byte - var key [32]byte - - al := mr.Intn(128) - pl := mr.Intn(16384) - ad := make([]byte, al) - plaintext := make([]byte, pl) - cr.Read(key[:]) - cr.Read(nonce[:]) - cr.Read(ad) - cr.Read(plaintext) - - aead, err := New(key[:]) - if err != nil { - t.Fatal(err) - } - - ct := aead.Seal(nil, nonce[:], plaintext, ad) - - plaintext2, err := aead.Open(nil, nonce[:], ct, ad) - if err != nil { - t.Errorf("Random #%d: Open failed", i) - continue - } - - if !bytes.Equal(plaintext, plaintext2) { - t.Errorf("Random #%d: plaintext's don't match: got %x vs %x", i, plaintext2, plaintext) - continue - } - - if len(ad) > 0 { - alterAdIdx := mr.Intn(len(ad)) - ad[alterAdIdx] ^= 0x80 - if _, err := aead.Open(nil, nonce[:], ct, ad); err == nil { - t.Errorf("Random #%d: Open was successful after altering additional data", i) - } - ad[alterAdIdx] ^= 0x80 - } - - alterNonceIdx := mr.Intn(aead.NonceSize()) - nonce[alterNonceIdx] ^= 0x80 - if _, err := aead.Open(nil, nonce[:], ct, ad); err == nil { - t.Errorf("Random #%d: Open was successful after altering nonce", i) - } - nonce[alterNonceIdx] ^= 0x80 - - alterCtIdx := mr.Intn(len(ct)) - ct[alterCtIdx] ^= 0x80 - if _, err := aead.Open(nil, nonce[:], ct, ad); err == nil { - t.Errorf("Random #%d: Open was successful after altering ciphertext", i) - } - ct[alterCtIdx] ^= 0x80 - } -} - -func benchamarkChaCha20Poly1305Seal(b *testing.B, buf []byte) { - b.SetBytes(int64(len(buf))) - - var key [32]byte - var nonce [12]byte - var ad [13]byte - var out []byte - - aead, _ := New(key[:]) - b.ResetTimer() - for i := 0; i < b.N; i++ { - out = aead.Seal(out[:0], nonce[:], buf[:], ad[:]) - } -} - -func benchamarkChaCha20Poly1305Open(b *testing.B, buf []byte) { - b.SetBytes(int64(len(buf))) - - var key [32]byte - var nonce [12]byte - var ad [13]byte - var ct []byte - var out []byte - - aead, _ := New(key[:]) - ct = aead.Seal(ct[:0], nonce[:], buf[:], ad[:]) - - b.ResetTimer() - for i := 0; i < b.N; i++ { - out, _ = aead.Open(out[:0], nonce[:], ct[:], ad[:]) - } -} - -func BenchmarkChacha20Poly1305Open_64(b *testing.B) { - benchamarkChaCha20Poly1305Open(b, make([]byte, 64)) -} - -func BenchmarkChacha20Poly1305Seal_64(b *testing.B) { - benchamarkChaCha20Poly1305Seal(b, make([]byte, 64)) -} - -func BenchmarkChacha20Poly1305Open_1350(b *testing.B) { - benchamarkChaCha20Poly1305Open(b, make([]byte, 1350)) -} - -func BenchmarkChacha20Poly1305Seal_1350(b *testing.B) { - benchamarkChaCha20Poly1305Seal(b, make([]byte, 1350)) -} - -func BenchmarkChacha20Poly1305Open_8K(b *testing.B) { - benchamarkChaCha20Poly1305Open(b, make([]byte, 8*1024)) -} - -func BenchmarkChacha20Poly1305Seal_8K(b *testing.B) { - benchamarkChaCha20Poly1305Seal(b, make([]byte, 8*1024)) -} diff --git a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_vectors_test.go b/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_vectors_test.go deleted file mode 100644 index 49f0da6b..00000000 --- a/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_vectors_test.go +++ /dev/null @@ -1,332 +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 chacha20poly1305 - -var chacha20Poly1305Tests = []struct { - plaintext, aad, key, nonce, out string -}{ - { - "4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e", - "50515253c0c1c2c3c4c5c6c7", - "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f", - "070000004041424344454647", - "d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b61161ae10b594f09e26a7e902ecbd0600691", - }, - { - "1400000cebccee3bf561b292340fec60", - "00000000000000001603030010", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "2b487a2941bc07f3cc76d1a531662588ee7c2598e59778c24d5b27559a80d163", - }, - { - "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "00000000000000000000000000", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "3f487a25aa70e9c8391763370569c9e83b7650dd1921c8b78869f241f25d2096c910b180930c5b8747fd90959fe8ca2dcadb4fa50fa1439f916b2301e1cc0810d6725775d3ab86721700f96e22709b0a7a8bef32627dd929b2dd3ba15772b669062bb558bc92e6c241a1d60d9f0035e80c335f854815fe1138ab8af653eab3e122135feeec7dfaba1cc24af82a2b7acccdd824899a7e03cc29c25be8a4f56a66673845b93bae1556f09dafc89a0d22af207718e2a6bb022e9d917597295992ea3b750cc0e7a7c3d33b23c5a8aeab45f5bb542f6c9e6c1747ae5a344aff483ba38577ad534b33b3abc7d284776ea33ed488c2a2475648a4fcda561745ea7787ed60f2368deb27c75adce6ff9b6cc6de1f5e72a741e2d59f64751b3ae482d714e0c90e83c671ff98ed611823afb39e6e5019a6ba548a2a72e829c7b7b4a101ac9deb90a25d3e0c50d22e1fc26c7c02296fa13c6d9c14767f68aaf46450a8d0fd5feb60d9d73c6e68623425b4984a79d619dd6bf896459aa77a681ec9c1a97f645e121f47779b051f8948a817f84d1f55da170d5bbbaf2f64e18b97ed3fd822db2819f523314f1e5ac72e8f69bbe6c87c22daddb0e1ac6790f8534071de2f258064b99789bfb165b065b8fe96f9127cd7dca9f7cb0368420f1e802faa3ca23792f2a5b93773dd405e71c320b211b54f7a26626b03c060e1ab87f32ac588abfa056ce090bd7c69913a700c80f325bfe824fa", - }, - { - "0967de57eefe1aaa999b9b746d88a1a248000d8734e0e938c6aa87", - "e4f0a3a4f90a8250f8806aa319053e8d73c62f150e2f239563037e9cc92823ad18c65111d0d462c954cc6c6ed2aafb45702a5a7e597d13bd8091594ab97cf7d1", - "f2db28620582e05f00f31c808475ca3df1c20e340bf14828352499466d79295f", - "4349e2131d44dc711148dfe3", - "bd06cc144fdc0d8b735fa4452eabbf78fd4ad2966ea41a84f68da40ca2da439777bc2ba6c4ec2de0d003eb", - }, - { - "c4c920fb52a56fe66eaa8aa3fa187c543e3db8e5c8094c4313dc4ed35dfc5821c5791d171e8cfe8d37883031a0ad", - "85deea3dc4", - "05ff881d1e151bab4ca3db7d44880222733fe62686f71ce1e4610f2ea19599a7", - "b34710f65aed442e4a40866b", - "b154452fb7e85d175dd0b0db08591565c5587a725cf22386922f5d27a01015aba778975510b38754b2182e24352f019b7ad493e1ed255906715644aec6e0", - }, - { - "c4b337df5e83823900c6c202e93541cf5bc8c677a9aad8b8d87a4d7221e294e595cbc4f34e462d4e0def50f62491c57f598cf60236cfba0f4908816aea154f80e013732e59a07c668fcc5cb35d2232b7ae29b9e4f874f3417c74ab6689fae6690d5a9766fa13cd8adf293d3d4b70f4f999adde9121d1d29d467d04cf77ea398444d0ea3fe4b7c9c3e106002c76f4260fa204a0c3d5", - "72611bef65eb664f24ea94f4d5d3d88c9c9c6da29c9a1991c02833c4c9f6993b57b5", - "dd0f2d4bb1c9e5ca5aa5f38d69bc8402f7dbb7229857b4a41b3044d481b7655e", - "2bbca0910cc47ca0b8517391", - "83aa28d6d98901e2981d21d3758ae4db8cce07fe08d82ca6f036a68daa88a7dda56eeb38040c942bdda0fd2d369eec44bd070e2c9314992f68dc16989a6ac0c3912c378cf3254f4bae74a66b075e828df6f855c0d8a827ffed3c03582c12a9112eeb7be43dfe8bd78beb2d1e56678b99a0372531727cb7f2b98d2f917ec10de93fe86267100c20356e80528c5066688c8b7acba76e591449952343f663993d5b642e59eb0f", - }, - { - "a9775b8e42b63335439cf1c79fe8a3560b3baebfdfc9ef239d70da02cea0947817f00659a63a8ee9d67fb1756854cc738f7a326e432191e1916be35f0b78d72268de7c0e180af7ee8aa864f2fc30658baa97f9edb88ace49f5b2a8002a8023925e9fa076a997643340c8253cf88ac8a221c190d94c5e224110cb423a4b65cca9046c1fad0483e1444c0680449148e7b20a778c56d5ae97e679d920c43eed6d42598cf05d10d1a15cd722a0686a871b74fea7cad45562bacf3bda937ac701bc218dac7e9d7d20f955429abdac21d821207febf4d54daea4898837035038bf71c66cef63e90f5d3e51f7fcfe18d41f38540a2c2958dacde16304e4b33da324030f1366f923c337", - "74ba3372d308910b5c9c3885f41252d57556", - "9cf77bd06a4ed8fb59349791b98ba40b6019611942f5768e8be2ee88477149e3", - "b928935c4c966c60fd6583c0", - "ec7fd64fd75b254961a2b7fc942470d8620f439258b871d0d00f58028b5e0bee5e139e8108ac439391465d6658f559b1df57aa21cf826ede1a28bc11af885e13eebfc009870928fae8abfdd943a60c54fca93f0502dc23d29c2fd5340f9bc0e6ef2a18b66ef627af95f796d5bbca50de22c8ec802da9397089b25c6ba5262468e3977b45dc112e51896c70731b0a52d7efec7c93b41995823436bf4b0c477ae79684407c9831b487928b2b8303caca752b3edf1f0598e15831155462706f94ef3fa3a9e5f937f37085afa9b4bbf939d275796a61b78f70597acfd25cd87f967021cd99328fc371b5eb5739869520657b30e4a5b0db7c8715cbe275dee78e719b357d3a9731f9eaba95986479bb2004a77822fc115a3d", - }, - { - "b3d3128bce6bbf66fd78f1a18352bae56bfcdae18b65c379ee0aeb37ee54fba1270d2df578ec5b75654d16e89fd1cd0acda7ec580dafd2fbbabd32a8112d49383a762db2638928c8d63eb0750f7e7fdd256b35321b072dd5c45f7dd58cc60dc63d3b79a0c4a1689adf180fef968eccbcfa01ee15091ceacd7b67a3082db0ce6aeb470aafe87249c88b58b721e783dde184ccf68de8e05b6347fe6b74ae3adf9a81e9496a5c9332e7ebe908d26ce6b3f0b2a97e9a89d9fdd0d7694585a3241f240d698e69fcc050e7a959ba153f6d06f117848ba05d887134f1b6b994dad9b9e74247513e08a125b1fadfc7394dcd2a6451b504ae3e75e22f2b9bc405747dedb6c43ef4ccdf1a7edaf9451346123eaa63f3af113124f361508e255503a242b96680ae3360c8b13ac1f64d08088bb26b7f617cb0866f11d6fd362b00d86eba3fee68724e302388f119d6f92161ac8ce00d08919377a26974d99575b1032ff0f1976240c785c8b89e9eb2bf005e4be06b5371ffca14683fedfdb49e00e38ff27af1324177faf91599abd5990920797574eb743effdc7decda318ada1419cc8e0bfecf82f9c99792746c2b", - "7e8da4f3018f673f8e43bd7a1dee05f8031ec49129c361abbc2a434e9eaf791c3c1d0f3dad767d3bba3ab6d728bbcf2bd994bd03571eae1348f161e6a1da03ddf7121ba4", - "7ee32dd501dce849cd492f6e23324c1a4567bfceff9f11d1352bcb8615f1b093", - "8998e043d2961afa51ea262a", - "ba85e72af18cb5ba85a4a0d6c28b4ac1e5509a3a2fdb0e3255cbc559df5e6a661fc560c756a0264dd99b72c61c51a4b7ad56ca4c8ccb7e8edfc48ff3cceac5d1e8ac5fc87096adc4d0e9a27492857b17604c3a694cfe0e70b22df106c8f3c61f840bcd634964cdb571840e125e381e7dd3a0d97972e965f16f775fa4ce555124318290bf508beb7bd77e633042deb0e863631478fc3dc9122862b3c31264471bcce54e0b74040c8bafd481cf798f332e8940f1134d3027d6f28e771d15e154fc89c6c25fe18a5d312807cc2e623bb1bbb4f0b6ec71d009407eb54bb0759f03682f65d0da8812f84d8e97483f6a8d76a8417efcd9526444abba24288647609791578887ef49780b0b89f51b072cae81c5b5014463da3633dda105b82add0f9c2f065dca46eedd2928be2570493c79a996fa78ea6aec0996497fe2dc444432ade4eaa662ee2255f0f4b92d593288a8e3ffe7a15a10e9d33b0203af23f4c9fd2cfcb6160db63b52810869ff1e65423dbe2c4415884b9f8dec3c968e14cd74f323c89053a96111bc9ce59ec483832c49c53a648e5f0f797f53642ac60170c94b473f1f2e7d8a38e46460b81219b52081263027f74cbf63a75af3a7", - }, - { - "68d5ba501e87994ef6bc8042d7c5a99693a835a4796ad044f0e536a0790a7ee1e03832fec0cb4cb688cdf85f92a1f526492acac2949a0684803c24f947a3da27db0c259bd87251603f49bfd1eab4f733dec2f5725cfcf6dc381ad57fbdb0a699bccc34943e86f47dcfb34eba6746ed4508e3b764dfad4117c8169785c63d1e8309531747d90cc4a8bf13622759506c613324c512d10629991dc01fe3fe3d6607907e4f698a1312492674707fc4dde0f701a609d2ac336cc9f38badf1c813f9599148c21b5bd4658249d5010db2e205b3880e863441f2fe357dab2645be1f9e5067616bc335d0457ea6468c5828910cb09f92e5e184e316018e3c464c5ce59cc34608867bd8cbfa7e1286d73a17e3ebb675d097f9b3adfa41ea408d46252a096b3290e70a5be1896d6760a87e439334b863ccb11679ab5763ebe4a9110eb37c4043634b9e44d40cab34b42977475e2faa2ae0c0a38b170776fbb0870a63044aa6679545ac6951579d0581144cdf43f60923b6acaecdb325c864acd2c7b01d6e18b2b3c41c041bb9099cce557b114b84350131e3cee4089648b5691065867e7d38314154355d0e3ef9dc9375eddef922df2a06ad0f0e4357c3ac672932e5a66b16e8bf4b45cd893ea91cb397faadb9d9d7bf86e6ceca3e9176a5baa98b6114a149d3ed8ea176cc4a9380e18d2d9b67045aedeb28b729ba2ece74d759d5ebfb1ebee8ac5f5e79aaf1f98b7f2626e62a81d315a98b3e", - "63b90dd89066ad7b61cc39497899a8f14399eace1810f5fe3b76d2501f5d8f83169c5ba602082164d45aad4df3553e36ef29050739fa067470d8c58f3554124bf06df1f27612564a6c04976059d69648ff9b50389556ad052e729563c6a7", - "7d5c4314a542aff57a454b274a7999dfdc5f878a159c29be27dabdfcf7c06975", - "aeb6159fa88bb1ffd51d036d", - "7597f7f44191e815a409754db7fea688e0105c987fa065e621823ea6dea617aed613092ad566c487cfa1a93f556615d2a575fb30ac34b11e19cd908d74545906f929dc9e59f6f1e1e6eaaabe182748ef87057ef7820ffcf254c40237d3ea9ff004472db783ed54b5a294a46cf90519bf89367b04fc01ce544c5bcdd3197eb1237923ce2c0c99921ca959c53b54176d292e97f6d9696ded6054711721aebda543e3e077c90e6f216cdc275b86d45603521c5aab24f08fd06833b0743c388382f941e19e0283ac7c4ef22383e1b9b08572882769c1382bab9ad127e7f3e09b5330b82d3e0c7d6f0df46edc93265999eef8e7afa0cb1db77df7accf5bff8631a320d146a5c751a637a80f627b0c9a41b44f09212f38c154226de02f4906ef34139bbeacc3f06739c8540e37334392d38ba1cbf4bc7debe77c09b35d2200216db15ed4389f43bfd8ae9bf76fd8243c3d869546e16b8e44a6cd1edbd2c58ef890b5a84cda889131e5cd9402ca4d8271052c6b4fe3f2dff54fb77bcb575c315b9109f90b14bc8e109919808a581c1809e2a188d29fd34ce639088a6683f641925f5b4b3529baa34e080bb47fb7ad9b43d0d67c9e6ae7cacb50527fa74e56d0c8b20149f5d332d686d48ebbe634c2b5d35fc84c69a5bcc93b93dedcf9fdf19a1fb9b75f6df9692d16f6c3490377a06294499e4b8ebeaa0cfd840bfa05fde21c0b5e94d13063b3f5da7b537caefe89069cfa9de9eb8f06e4d30125de64716f821bcc8279c0c7ea2e", - }, - { - "89c1ee38b6697d0190c87a2aa756892ee09fca095df1e31aeedbda5750f604d9b8f2116e5b8f70ec57ea16fe419f2d213ef72b9be90eb5d7e98f2e398632123e2524ac80b31c6c0a07820848223569602d94fc16a3b1ed8c411bc6c74ed80573fcb1f3afce60b9d5e2c21d04f78665241b613abe12274a5343101a91e91f04e5d1f7959f574e743a10913e0817a32c320467f0178e3b6ad14b856234a4661a755eaf14b5fd88ef0e192e1631d14263d6a954ed388f5709dadc6c0f81d229f630d80be6d593d5e3ad03f9ded53c41abe595981d24ef27ffcc930e4d653743960f4e7ce4e251c88f55c16d2afdaed5e3446d00685c276728ba757520acb9b6bb0732a0e9836878d829e5022794d70ad8440a40a132a8c9ec1d3f0ccaf8c285fff425e9788d6150b74753dedb2ae8b36ff2f310249bd911b9181d8310e00810d42ef94cbb5a9d72a1f0507c1a382f892b23994fbe7360778b7efa9c5e03ac3231a57fecff1c5fa10caf1d26e84db0137049622ebcc3a64841a0e49fa390d1d43550c1346c20d578cff39fb7404fcab0982dde55f0849d312581d0c811a19d46f25e7a5e7e50d74d43760583c5cf335dfc11b2ec964f1dbbd0ed83e18f2027817ea2dffcf2b64a352c4fb8f11eeb4f1bfc01079251254d2112d103a1f12a2270cc026cbeb8b6f3e505abd62496253f93274625786b73997e449c1f35c742a593441252fcc845e1cef1b8f287dd311a0477407ce3b31661f7b2802c79c2d20d06e45f03aca4e47a959c6c1d7a9d377e1577fbf82a115921c3d94e3d9c204aa204a9a5b04d8a2be3269700a035371f4aaf1a42d92b9bfbee74492b106975b36d1e581d6ce2484f09e04fa91586c85f35e2a10f0d3c0afcb05327c1bc9d7429bbcc4627af8f76b86fc561844c2ae3810c84901ac09a1670ed3d31a9daa5d296", - "7219bd21a834d917f93a9b45647ec77102578bc2f2a132dfde6489b9095b4f7b740c9c1c4075333ab0ce7f14", - "a7f849b054982cc8a4c8e5e53e181feee79e0233e58882839892134ad582da7c", - "4c46854e9e101090b1436f90", - "ab2e189baf60886bed88eb751bf3560a8bd3cdb6ee621d8c18b5fb3aa418f350048ecf359a7d542daf7090ec8688c3b0fe85914aa49d83be4ae3396f7bdc48051afae6a97fca7b42c0bf612a42d3c79ef6aadceb57f5cfe8d67f89d49add0ea1ffd423da058297239e72a85fa6cd1d82e243a503b1b0e12d7510a9ee98d7921dae2754d7581e52acb8ab9e7f9df3c73410789115cef6ce7c937a5441ad4edf2b7a8c0c6d152d5a5909c4ce839d59594a6163364038c4c71a1507389717f61e2bda1ea66a83ef477762e7834ebcfaa8f2ee61ced1605ba1380108236e1763bf40af5259da07dd3e3d0fb2801868c2e7c839e318678687cbe33384e2ef5750a0a0e2d2e19e869a4277e32a315ed4de79357f6a12a8a25d5b18291316d9bf40dad2d05d1b523ade76650669c700a1c2965f4e51337aa5d45ec7b4981072779401d6d30ed69034053334bccb18425ac68460becf2aeccc75aacd3d6709f07ee10366ed848c8a54904af4ea71fc2117de133f01e1cc031f2a4d0779b997b82682433ee615202d5dfffba6c916f11a00551d56ffde8c36b303263e14adaf45b6eab0bedf344e5214ce52f071d2f40154d788c6870020791a03d2fd4ec5879d9026241954ed45cfddef4937ea3d0d45647f252be31411237983a1be340fc65ebab9a5620abb0e8d475af4e89e842e895eda0cbd283bb5d0bf20236c62d956de733d60ebceb42fc0c9adbf9b69f8d66551b0aca0e260625ad41cad75d752a234af7caf7902c2c5b62f04b6a8e019a6179d44feeb2ad5859ef1c45371e66f1af1fe0de63997266c290e27f0dd62185c53f81e0a50c296a51ace7c90d9cf0dda8b2d7e72a347f64c44262e2a544d1acc7bb05734dc1783bbc1903279092fe7fe434610aa95fc2ce5fc5ee45858f5e8337d8fcb0a468464becb1cef6b7e5ea48ba383ad8a406df9c581f1cac057d8711fcb", - }, - { - "2dcfbb59975f217c445f95634d7c0250afe7d8316a70c47dba99ff94167ab74349729ce1d2bd5d161df27a6a6e7cba1e63924fcd03134abdad4952c3c409060d7ca2ee4e5f4c647c3edee7ad5aa1cbbd341a8a372ed4f4db1e469ee250a4efcc46de1aa52a7e22685d0915b7aae075defbff1529d40a04f250a2d4a046c36c8ca18631cb055334625c4919072a8ee5258efb4e6205525455f428f63aeb62c68de9f758ee4b8c50a7d669ae00f89425868f73e894c53ce9b964dff34f42b9dc2bb03519fbc169a397d25197cae5bc50742f3808f474f2add8d1a0281359043e0a395705fbc0a89293fa2a5ddfe6ae5416e65c0a5b4eb83320585b33b26072bc99c9c1948a6a271d64517a433728974d0ff4586a42109d6268f9961a5908d6f2d198875b02ae7866fff3a9361b41842a35dc9477ec32da542b706f8478457649ddfda5dfab1d45aa10efe12c3065566541ebdc2d1db6814826f0cc9e3642e813408df3ebaa3896bb2777e757dc3dbc1d28994a454fcb8d76bc5914f29cfc05dc89f8c734315def58d4d6b0b0136ccd3c05178155e30fcb9f68df9104dc96e0658fa899c0058818da5ec88a723558ae3a6f2f8f523e5af1a73a82ab16198c7ba8341568399d8013fc499e6e7ef61cb8654b48b88aa2a931dc2cdcf245686eed9c8355d620d5e91c1e878a9c7da655e3f29d9b7c3f44ad1c70890eb5f27ca28efff76420cd4e3cebd5c788536ddd365f7ad1dbb91588d58612e43b0460de9260d5f780a245bc8e1a83166df1f3a3506d742c268ab4fc10c6e04bca40295da0ff5420a199dd2fb36045215138c4a2a539ceccc382c8d349a81e13e848708947c4a9e85d861811e75d323896f6da3b2fa807f22bcfc57477e487602cf8e973bc925b1a19732b00d15d38675313a283bbaa75e6793b5af11fe2514bda3abe96cc19b0e58ddbe55e381ec58c31670fec1184d38bbf2d7cde0fcd29e907e780d30130b98e0c9eec44bcb1d0ed18dfda2a64adb523da3102eafe2bd3051353d8148491a290308ed4ec3fa5da5784b481e861360c3b670e256539f96a4c4c4360d0d40260049035f1cfdacb275e7fa847e0df531b466141ac9a3a16e7865947572e4ab732daec23aac6eed1256d796c4d58bf699f20aa4bbae461a16abbe9c1e9", - "33791b0d653fb72c2d88519b02bde85a7c51f99cfb4456dfa6f84a61e10b4a14846521", - "a0a7b73ca2fc9282a28acc036bd74d7f5cb2a146577a5c29dbc3963fe7ebfd87", - "eaa4d916d261676d632455be", - "c9a631de470fd04dcbf8ea9f4d8ac37c3988878b6381707ac2c91d3720edbb31576ba90731f433a5e13582aca2b3c76ae75ca8881a463ecfa789910d3a776a9ad4800521c6baa120b2f1afd10f32ef8da63f5b69f5e5fd88ee84bf66b0666b15d05c4050f5358a050b9d5cf1503719f56cd48ceba78f29efe2ae8092e37f5134df526831532f86ccb9339637e2c9e9b9036f83cc058fda23e826a188456e7fd3f4ee20f4e4a3221883fe3232b49db607b90a8956133ab95051c9ec33a908ea7e81a1bfa7bd06c09f0143d07bb23a3feeac7f0d7720269c93e2df19d03605828c8713b84d183c9a50954c12fe3b047511ad15ef03a63355520cbd224d06a34de67a671368e6a8f9feeefe48fc273764a8c69c00314e5d693f159cb5270544f3c4e1760b0529e3303ab308e9a6d03835a3a42aef2df5f7643696f707a574d1dcc676aeecdd9947ebe8c13bcf15d30b2d10d2cd95445a307c1d22d39450615ad38f9302c6eb9dc05764b0503d6a7eaff9feb94834853b47bc25660207be3e7c0e27cb3127b5402cb016396e5ff07ddc3df29861dd68a17f53bf660b23352b739d6da72381b8d19a9fc95da7efb79330a2b360dce4309860af429e3fd10cab235c4acc1d80d9e20d67019375bd161ab65648400f308815afe63cfc717f7d0eea150e687caac25b6603287d44dca4a7cc2f67c3bdd54450bd3170340253b03ba054ec003070eddf9c14fb9dc595e228e4968524900cb5d85af6d1e658a42d744e0e7eb6995023823a8dc33528c6715b2e1aa607782c8e1ddddad72026d657bf122ece8685f6e92236e809139325e4a3c069facf94c10b7896995bba01eb22c7b3a87ea2114a7649d7ed3e83d223e5e785c66a75119beab0968d3eaf0cbcc2d7ede95d024041e6db39a880ce3e19efea32fb89a40a2aae22f407e5fd615e51e48dbd50a8b4ec27ce95e2ba1928bf699d0418705482ed0ed7acc858dfbd690403c74667a88dd5221bb79940c6c4a268379c10343aaefb635982c14f33ad83d47ced9682961540bd4f75804d3d48ba8aa67fb2e3a1db83fbcbe57fec9e4ffb1b575e947f8bd8263c680357960e3a39382974774b5a013f2f8514b3c63c21dbfd314fd5d927d82ba616d76629ac018879f54ff84b5808e94af4fcfe1cf8845b65208ca5510b5b593ce6c109611652cd", - }, - { - "c335b055b752e083554b5aa2cbb6556cfcace658d5c11b6b000256fd89e9b24c1e62a2d5b582580acdb2ad9869020465aeeabe83acd9eeacdc44aa652d5cb24bbe542073d6787ea32b2b3c942d40f9db2bb75ed7914c836d902dd2be89840948d82abbaea23952cd648e6191ce5b6cf912cad0a3165410a781e3650b676e5340980eee3b484008acce6a3e9dc5aa96d775677b8bbb8b323c6e9747d6069a169ea904d9f145e29d134cdbb0118647e8fbae638669efb9a55d50ed33568749f5304ece2193b0bfa6fc9a570d209ef61b4c59a2b5485b5aa6ab47d902cf23f7ff71c5210476e0aa727a01809b9f76b6ebcf58a018b3fbbe5f42976111ba58112b1d322f9312da068cdb86277bfcde66cb3607e3ea02a1494439aa56f302671f1f994eb3ab28b937043f5f7f3b3de50673ecea5dee8ba633c45089b852f0d772892525344ede6b521dcad15807b65e7ba348d891d47fc498cf4d50223d2794c64db9fa9b9766edb430be0c38746ab317b38ba9870a6d1fdabb70fcf89790bfe449b97fe01f6c94502aa0889f0a3bb6bdc65f44d1cd64ab88d4a7806b373f5080f9cf60183cf4686694f0059e2bbc5cf21ba0c3e8046e70d815f1444c3094cc29632c429f20aa06b49b0b52c6c7aeb8e34f7bcb53e93c2cfe2d704a5d0416876742c90762730d160e1869d5e0178dc366098ebaf2cae6f1f7563b555a52dcc194a5c8f718d50d27ee76fcce8e8991f4921fae85ea9476e1eab1364403120698b7ce8fd0a49cf79213f360a17cf1950f104494fad80adcc3bb1207bf250d57dcdce6ac8082a312959672361363cc227310b66ee8c04aab7b5cb33a81c0915e9c770a1cfaae2e8f44a0c65703927977a22fe58aef2f366b8be9a50da9376b46ae7562a82391386831febf359039ac326891bc58c0f2c34bdb6858859fc3cb4e392df65cbe2ec4f02c8425bcbdd1ee2562ab7d229d406d79a9c6fe4889c996c2f68d1fb5bbe3a5e867caa4249b934afd3ec71fdb088c54b15252f9dc1b909e121dbdc7d8a16cc00836652dd1f877ce363eed11467966f7ccb8f1a8d48146e69e04ad76a51937ad4f9cda209451eeca90dbdbd65441ce20fabfc8ce400fb4de136154b87a8b65c92740e9bb91d78521b261f806a2c6279c85ef6ac5fe1ea3117ff7c9f9832fc2aa6fab660082eb22344c1a3befe0628b6551f62a5014cd6194c42b8d475a50f2c9fb58c97e43ebb29005ed7fe54f0a4aa10074f1154152a9067d364dd7863fa082976a00db55b26b5ba0ea40eff48b90", - "f5ff810a41d4b34751e9942970d4c9f26b33f24689a4b1e4449b243490afc485af468ff01a42376b2bcb949b9f5e8d0b917f511a", - "a74271c184a82cb074c14b131fd91eb05870cb7c73c9e511ec8140bfe2f34089", - "2403fe689e239c2ed261b381", - "af9be893d5fd23aab42e6a2e59a8e7cb13d4f543db02af87cb0802bc1af7c717cd0093cc8244994cf21189146922b69927ffd5745e57118bea07a6afe7c21d952c13ab636b3c2e461dc9ffb3ae701175360156338be94b1fa7115799831019455cfaf5114010fe45f8fb9c77ec50fe06f2c5a32423edccb3b2210ee1200a78e1a3130c567542377827586ca8cf0c14c19fa1449a2cce9c039bb441b04e9c0a3f9a743b31c828032174fcdb7c894349aa68f5adf97dfe9294d24e6b5fed95eb994397883f58487bf5c57b0aea5268be7cee9efeab370f89805ebe5373ab2e93658fc078955ccf68b554dd5605005751ee8531c35ca5336a5d0ce273370c0dc9307779b86e96d2d1daf2620d67d43e1fb7800ccf250ca3c02eb74047c1d2a2bc7f29fff8320301694b80d0fd975f834337d00d5f0e4215044d52aa4ca21e6a9d7e03f186d7cdd5c48e3765dc926fb0a46bb0f05c50d9f69c9c507527a60366b7dc251aae1d6bb0d9c73735dcfab959f6fd4382fe2a1f6ad07affb0601bb9040f81b55a48f6a6c5f8ac4a2acc2b0c9a6c439198f7926460695fa11e0b0b017e39de5cf0d5d5f84d972b5eee7b5d1e0343b5485cd84b92ad892e5b23f3e803f5b363f2398c11c15be9f13e59922b0d49902dc8483fb142850b4226da2fb84e9b434a34f6bb67f575a9e57fde3354bc3077a876e260311bb2481bb139aa9af55df5074749fe532d7b8a554218a90cc7e7ac69db280bae5d55a174dfc8d325b9909a8da1016d4e162fe5ba70cf8726cdf291f5e47083d9929cd5e32021cbfd982fd0975f6f9baf4322b553cb3174b11c007559879f308419ff9e4e18eee8d3640cec8aea082b90f69cf3c7676c28af0265c24c91cd58a06513198892ce6ce1ab3ee9ac0a2e937b973a9cac06a039a54f8d994c13d42c59187f677352e5feb32a417aebec4d852b2595e7e67450e06dbd183279e3b63022a3813b37257b085bf8454d6890875a2950d20210a8df4f9da746722f62687e92f0e9efc3e5d526d65ccfbcc042fcac7964dbe147932c73924bdcdf62f9eae58d29e8567ffed90048bcf0566b952e986efeae4c477944af18bd243c3eccf8d88c06d07279adad037450cb8547a8aa0a74223f4851747c803cb21a2dd027e7080aed75038cdcecbc4639d87763cdd41829a1b72cedf0d722b180d0d492a5740ea7607b95f3201df352fb1ab28149124d2df5d5ec106867897b537302c3431402348f94d28eebc701ae1b49d10adedea38f1654fbc48885e59e6e6dfd413c6b5a97d8c35dfb07a6cdefe317bf61cf91", - }, - { - "4aba5a776ace38b6e2578f0007e770d264e39c49f588ca3547ad2888365e3a811994f8836330394587c8458eb0b6611499fd5d8e8527c3cdd4ec550b4a8f8c632384e786b420cb3be911c999c72aad60270aefad31b27a069ecf11e95e9d4c81213308d554d3103de4d9d6ab04830c2b8dfbd8bead52c44c21d5357f72810193b5096809dc7846c1521c6c569f78812c735aea21acaf6dce84a24df7234e8ad857f3e1346b27f5bd436113e2da950e4deff96e9ba8db692c7db723a105ae795da15b910c8286cac6e7dda8c172b70f61b07dfd58596684d61da8772356f180f74c1103ce97cd947eab3d401df44f7fa4cc7cfc25e280fc002873237e64a375b0b4797f4b4613c9f150090f44588ee8250ae44aec6546ec8dba0f0c1eb281cf66fa4eb141617b32b28441f6ddcfdf02d9c34cc62893b2b64dc2c26b74433adb3e888c7fea07b19c8cf39269c2716b9c35b7625d4a141397d6d5034b193d2657c6b2d6b0ba874c467adeaf3d501ad985d13be21c4ff6b326cbb671e4f4973bba49116a0399b6491394f850e4122969e4644c00b442b3da0d6a4bf25ee22d182b3f822fd83878ebcc713cb183651a67ca66677ea81b58b685a3a8e385d5fbb0147ddfecb558d881c914324c794db443b31bc15c361912bbbcba9e418f99f2a416d190cb29684df27c7f3ff6ccf339800efbdc4514ee00d1a89f12373804db4fd66c1affd467f251e73147b3248033327b0f7790fd7861a51773dd4f78b89e4e24b94df9203f4a077091bb9411eec78dfe3e1dfbb67ea1cdf17e1d6936bbb75b74055495449e9cb52f5749404610cd444fea3f0568e0d35a5ef0c395ab7bf0208044b5c4e2517911a9c351efd31f33220972287253fbccb1eb8f46960a36b68a7a6b4f5cbdc86d668bbf555fde8881e7faa9594da425ff8fb54526bf7cdc4af64899530561c06bed7fc04c5d48cd4542779e901bc48fab79d4d13850ad8247f51b9afa7d5a656ada25b6376d837cb0fa1b4016dfcfc158a39290f43f133b352ed52fab2f951509bacb41284fbdd849d8185fb7e7200f8ab2a07ef2b3b927e18e568dbeeba2c7a66e08cebdc6a6069ebe6656a586652f3905ae2bb867529af6a827b494c97b3a378408f44aaefbe86c613e11e7a44020a9ee4b62569dfc4c462300daec7b1424ff1c1849ca1332367470475c14877cbe76c820cc651c18ab3f18852b93994f93b568dc7f7b0eb5f07ffc4c9384c851fa9071c6f68ddea1ccf627f889c0471c76aff9f52b07ab1b86a7671a2b2f6b25c0ddebb66ac95737bf7e2f493f7665b5265eaa5166556cecfdd3062802724ec24f3978b903d0f0c24e1f0b8d967142bccfed0d354279223f4c28684e9ab611e9ef89a3f25993b5a8b3c0354931780501651236a78b58e7d7814f251b053605f4c0a8e7193b9cc1ee5cf7378e6f3c8fd44ec57bd91e62b09fb1d6bab60cbfabcc6792e6a32ea7918a9ec9180d05a7e1546d5d2d8bbfde2a71b4e427c0a4d28d0b6473ae", - "921a401db90935c60edda8624a0590d5c46eff3522e35de2872f6f9394e24126fd8143b68a797c995624fba0298b75eef974", - "6a4d35ae03bf277f587da4541dcddf92bbd906dff45d5ff23c0f60ae53b062be", - "231b5780fedfb06d724450b3", - "ba40968282d98849b19d867f8b564ea5a81d657516099362926bca4cb6e9ae02719d10c8061f53008c727a0eeea5e1e36c9e55c117e9434e213316c96840231a1e356b254a9981d4a6ca3c66cfc61018bcaade1a4486506559e6aa3a86bac980d391d835fd5ded98d10f1394d84bf1bbf2cd3397890d704154802f7864ecc753db782fd3d19213ae65ace4770e1bacf32d61c6730aa5adcab4d7e2e437888c11c29abba4890a17a00f67a53b660becd94092df0598df5ac57326f6860593a519e28bd4a39f6481e1a4748881fd5f0456a3cd9f28d1d1e78dc64030cbd8fdb2c5abdab3f13d6ccccd187e71e989f8c486929efcdbf2a763effa95af62db5cef95e9081b818275c69267022fda4b7fdb8c650b491a785b03d4d0186625962b6326ec3f4e176373da4dc1f83a14815adf82c6bffa7c6967d77528d0249754bb4d17656bc4a89449b16152a4a1aea7eb0054a8892f271138971507d2f3b237ba5b620f444544e4a8c2b1ab4f9168762c27478c9f776c47ee2e9ff05bfa35ed127f0cabe7cc053640bb8aa01f8359b74bf89ef43ca94c48fcd201eae39d1835957eeccd6b3a852f4e1bbfef9a469f42c764481ff8408fe5871afeeae7676b58f4202199aad50a596626dff97c8e60d750cc59da9f595ce12ce9afdce14481cb1e39994de8fe4cce07845110d6703dc59d34734e93e9e57e1c52d61f44143a2d290220a4bad5098d098ee65ea4b6757d8a9bf5485aa3d697a7826d4a285186f5da10eff707566c23c6a15033365bcb498c44487c72d96402d1834753fdbf86770239761f03e0dc8963766441da99c0813e4f1df5a1d018c8799861a396562eb24ce305ca15f4022d83ea3c56b68d9a7ceac4742ec0ce50f4d36273df26005ec2b051fa071b319be2d8a5ed26eb75bc1ea83761b8454db234d15d84d6706cd178981c1f156e6d28f774aee3e9a4fade022e71b52b50aa532b8bc7fe464f22d6eb169c69671875d614e987658820c2f584a4fea3008afdcbb646dba3d69020fbf503f121be3480344db23efdda0d255aa058c3ff66abd3a5fe35db977521608bba7eddae72ae801f4fbb12a1de4133039e046ceb8db87e465e5ede1d79a08c857d59076d7ff858942c31e15cbbdae6fc15c3f9545a0825d6ff8583c0aba8a7d143d27b93f6caefb98c0d83bd8715abcab2a49087f55a9daf9090eacdf45be08ad80b5df5070e1719f68c4cc8f8711083f0f7823a09ec092f22df95fe9e95114fdf82a3f6eed0bfc9c0aa65222609442776154a474dbc9e662cd5dce66846572e52417ee5d7eb59287d07ef60a9537fe1f85c7fa74fe84dea0da235ac7574335e6649b54a6bd33397df4bf4a7976c4ab868aa702766d2bc8d2c82c2d1c2653fc8428b8d1e61852ac185a3a0b416dbcf8eb54c44967ff43c44f2b32c6d4a9dbf2c2f3a587b430aef50f0375cdb4c1b319ac9aca486d9bb321141b065f52f7b6decaf1985531ca7bbc3772a561eb1efb8a6297075920bc432131a5b211bf25e35fa31e12833bc77a9de14c7", - }, - { - "6c0056937faf1023032df1e2bfacbbc58bb022eba25ffa020d4eb26f0caf0678af5d0b2f0c1b520f4843f107f0adcc7b5dee66ff4d61025bafb4cabb64d133132e3e423a599549a1d83aa8c8e774444462aa44b00b460bbafad5755ea6a872d4e6b40e3f4957e0229288ea79fc2ebe5fd9020fe4481a9f42ef14a196bd136aa3c779e311d0c333624c1ddc484c9aa7259cb609e4d0a826c0bdc7567adac01da23900b30ac4e66c100348584fe200747eb67e6287268947e3509d5d2b5d7bcd977b80a13f660d4f6956a8b938a82db75eab19e5d2a22cb5f3c9131e278eebbe096b5f49d16c983ac240f3fbe821b247cccb2c9e6e59546122677f49f56a07fed56647a6d3e0e09520d49009f54250c10e7c607cd5b4ddf81b5c4110c6490e9baf56418236211856f5a85feaebafacf92c0c7501c052f9dbae3beb7484f90f334f50b68571cedc67763b5161ebfd5a1709cf18c92112a4cf4d8f43d1895204d8a2ba5e14883a7bff75cc6060cabb77d38a909daca2417befd1bfc05a11c432b47f90c807ca4306400f67a0d92218adaca84a584a8bd4395c93f9b6a4bde9583c79204444634a8473b1244cd33cf980e443d82ecfac672b3f60e2e41ecb3c5a445d9e88c0e90c339a31806e6d79ee52bdc6808c73e8b7b24899966664d3c1a9305f31f0483e24e36fa451dc1d3f2eda05af6678971e2bdfb7c1461c9407c5c466f6b5af34d992a37de3809a22ae75275ddba0f4f9cbd4b18c1acd212192e587889a36bd73c860f0abe08bcd8f00f5ecdb95e1d560b586eccf530df0e5f3776d8dae2a01768bf1226b7ceffa7ce4e75879c82dd97db3c64c06d33cebc6b35854618355d80e46fa79c3e9743fce5b974723c421a077e7ec7dba286881dbc1d53d442a1552700fcb33f83f73c69a0a0ebdcf2f5d461649c4d0712c514ded268a31509f83c1ae4ff4a68e676d29727be641aa4487c08d4b90ff78e24c6508d69759751a1a23690ec9f8763621e8b107295b4bb01bd9fcacd8748e24d996fa70ef6f8b0992f4185bec8e920d7643159f9f604fba394b6611bff435998b2f097a9e948430899c8c752a1e83a061983f00f88ebb32da214399167932a1a83c1b47d09f77593b03cf6521520583ea4483e2d33e14ad60584676d1791779b532c085d238df0d3bae735d0078e0eabd63cc90a2e13d023983780afc8f83b1c14437937c16a1b7c41414c48cf4ae49587ad9fa5b16fc949a749e96032248c4667f58e295f999590dae1d99a2cbe3fa45bcf4a1d3f0356d64d40367f64b2c5cca843e5f7dd7b88a85d52328a00622e6c317879607bc036c9006d38652ffe21c83207c00f8348a7d0aaea5aab4c89077df170de6d41052641726eb6925cd85a9ee01a9e636346340e209ea96d17b0eb0921b96662ce9cb430fb6ac348331dd7133875769bbbba99dc49333950e4145a15ddb0789c4d2ccd38878080ca9e57ddc6cd5452790eec45482f8e990392e319609391fce0beba19463a9a00d8f1de9fbf22f23821de7d69fdfbf3019ed61aff79acfc5a6ba663a1e10da2b9ff7149aea43bd6c61a543008402309df0924de72c1cacd2d6120cf422e61fc1de345cc8771934d8be77d9437a09e06a9b2d51c849fd9a200fa714328d34f36b684f33df6968b827df916a599a4bc3367814fec21198e2213ff653cd2a463892966c72ffd42a26b3bb91", - "0d55dcd08b54e58916f622f81761ef6a2e19b167ac47d3", - "e42e1d6d44138f3d2bf12c951f454686f18d590fd30057405b5a3dc2b317fa97", - "1e46a7486c5a03fd6758d938", - "fd3c1fac10cc82e49235fd57f5aea0ee7a7bd6d539b138d4b3fb623aee591615c1a61228ef9673113a3a90a3687a12d4c6367d5f7bc67d422fdc4106455084d79c2c42c5e86368dd164bcbce7925bfffe7d96c13a2f49aac8e9d1ada3554e3fdc21aab00455a0f33b0c1fdea91b3588e7ad301bfccf9940027332fbdf966463491f7a33c093e0a13831ea9d2183294f89f414cf7b5876af04fa68d594430194429df74fa5915394427259e832bc545c13400aef6cf16620d48280798a6e49773c9316d79fa1dc758e54cde2e2cdb856092d83f4e9b698385cb976fd6cc2538abe055273a5b34a784182ea5e7d3ac9019a05de5e5afe4308a7ed2d363cd50ed6a52df1c616e4a82f607ced768445d13ae4884f2ae1f9fd8313924e8a1a8a23905c92eb231f638dfa6f4cb27bbb9844e05afbbe2ca4d1a3b3a5b371bf33c9ab6f82a7387d61cf8bf662097624145a983839b0cb9f4bd07556800b4054fb3d0bac94f44bcc9b4ac49c39f5571fac4e02ff09f08b3ed5add4bf8bba934e9feb773c0590b45c45fa036382f3fe9782ad19107d4630321e414b7b442b64f18fdd5219039e5740f34b3ce8925d1afe8a39e35ce8db086060bab63b9720700499f82db19a62897c6d845389461260303f9cf2bc7235a898b4620c2191ef05604a5c8c783d58009533a86b27c12b0772635d34ac53993ccf174c9087073e5e69b26c0c3d9f768507ac4d4e2af847b65e3a6e1b7a6dafb0aefc190871cdae6c60f0b1d6137c351d4cb211870791cf4cb8af2ea446f6401eb9ec8a5bcebccce898d1dfb13454df6b35b81ed6d7637e6e261e004080c60944f3a08e8e5fc7e2e4939e7c2607c8cf07d1d10883ba3ad43e2611826f245df571857ae0a7a867df9659f2082c19f94ce400132e48c7f8de2b102c7f83ba5cd1e785597a0ba0d73bb81bba0c00300d4bcd6ec25fb73105a46122873bfa729c0979d8d314ab7ea52391aabab513dbfd1cf01c2990c0a3612f4511c2bcf0f5a07e659a881a7f99c3f1fc4a46e66904427fe26a4a80a904c047d090c861a075c0ae4e29bfbc18b9620aaa42237f4c6fa76ee7491ee638ab5f1cf0b440759828e1ec519679efc776eb1468999a00f667e87199ad6891e98b95fb682e02517b024a6bb803ed23c944010cb7bad0733eccc12d6ab6030c6e88d510ce92e2f98fdcfaa1e37e41fbfb4e99589c0e8efbefd40473db42b3a73b57b22a2f8c9bdaab16831f1b117dd83a77dd01ee8d0c2e92203adb670f4fd65e618823ad196220d70e014c1aafd8863797c61c16382c2600062683ed3a180c70891717c52da15191b02f25d1715ebf33a5e6037092421989c942082f4b836423cc3e976c9bcda185de36f06265dfc250a27d2de0bc48c73b3bff704f3b386f962522f572108458bdb283c6ab3fd33b3ac13a406268fd5d97e17db9c0f780b4b2a8f761d15a4d8b3a0cd73357ecf4d26a6492ee069f19325823ef50bcb2f73326719a57b67eeef506fe8915a1b1ba1a637592268257b91e9c7c5d33cdd947967efc1952005d82ccef9a3ad7ef8ffbb6b658983d64c51242ba53f8f8963245b87a25aa9324c527e53f8c11d55f30aab598401589acd13f090541b3b057b162190f27910718b02a6b8ddbb8ca6cf40bf0d2848f4b76341bd5e78f476862bcdbe2d1bac84c0566fb45b21388221ecd8483d99fe603646b1a9f38a49230cf4dbe5d7883d73eece01bf", - }, - { - "04892b94c65685f2eba438322b29bf8439938590d3e0eb10a29e279d356cb439f6dfcdbc3552af21f7e753221012a649a52bda780bc589ae63b04b981dffd113df9fcf14f17e35e865880a769bb1bf40dc99b9e85e4296c1f2e1590fe02b22bfcaf2d4bb7009a4d692ae4c2d5f0b6d3ca526240368bac55b9b1e6a7b498d3b137f0fcfef1873c5aa2111d7811d45bdc26be1c5d49b8a2f36a999b1f226ec06a5fbd59514485abe696c96ea89dba74b4688101a239b495944e30b3609f73caff3114407599ec5c30a5bad933655de7dddef97018ae15acec46504cd5d417c5052c057ac5f1c6f69781cfdae71db2b4fcac35054a4aa22681027356d68b2bdba721466d130d53ba8f23857631382b2de450232e9ad5551bd7c872ae439e79eabfb057d2bdab8d4ccf02b3003ade2e1f3e514dc92692e4fe5b579c9ee6067995b6c168647ce5a13be8543c23326a3260bb7029d2030ec05e565ced3c5366d20a283a6e95201fd108640d2b96676df712de20e4e12fa53f85f22cb24583844fabcebe40eece11e7221f12c88670bf994ed08e2000236f86258c386b0fccbaab8b68ec6a26fe41491d540193c4c12d1391ab3391de9317f41f505f1f1d09ca9862a6f289a533d2b297d4465c956360371ea3c8ed36e0d1563120654e3a2fd69cd6c9267bfcf92e84cd64e162c84199d6e552b42c33857264b5d7a2e007797cde32934a3f8c68b459cd95bc85e7466ccc9910e8dca65b315c32e43c3a5da908904c42cfc8ab74126919ceeef1054bbdae6ca67b02f1ac5f24808b5eee24577e609a3e3935a24b9ebc1a8dad1fc96abe26012928f2d5782755f3763427dda28867d0b1ad830d3c3f17b9ec278346e5a9480ed23ad44a523a4dd86e65a610ee0de1afab64ace7a3b4918fdc14c6b1ce0ec0903994da9bcf18643d7e0a4e6c08200bb394a89b385d2cb829417eeb0f7dab9fa7306a330f82973cf0917b5ca99b585d2ff0e8584e050077467f5245ecfdd5942e4fc72dc26e5ab2ffc61f996167e68168cee9a6d3ea1e1a696060465e35da8c75a1aa380004faffcb0a992c627fbdcb4e97721271802cdaf08d214ec2fbcb389d75709d7a6b9d35662661c8961f93d4a705e7188613f3769114c55400809cadf60d3b6068c8a5ceef078785171b59be1140c6a754ba1de5ced349df63d67d59d3a8ca3c716ffb506772d57e9e3f2caf7fe346c4ad64aa6c37e43b9bbaa8f58e51bfbac31fa6137728f8e5b728025697e5ad5c8301f6ff39eb2ad595d3cb24257adee88a84fbf1ade4d7550cd9ab94bf48e1424ae83184c35c5a5920157d45805c2e0ad129fc7f0ec3c41b9d6fa04cb8918ef379b0783d1cc2863cd80382585fa05320ca4f9fd90353e490b384ed6c166c6f802cd7bd39aa43667246e8da96992db7537d472c709b01114e95febaac5b1a3c77e1e9a18c2d180e63f0d8fa89f6a1ed63e909e4741af5c2a0e47d4d3f8779b7696358f58060f3f461cceeebb390c92779d30bfdedf1b08ed62dcc05a545bd0ea915f42976e81dd8a50cc4689d8d8007508bf53e7da5bd43c3894968cf0677681c6b818353af6bf8ac205139add1310e5d363ccadbfa0eaf735808325e7f9a6aeb1bee3ebb4a27576a88811859c216b6f84371c43d8063a0d87bd326eb6d81c6896ff534ba2c9c14a51d2cfedf33a5c787279bb4a7ff65706b389756a6191d2f791254233ee047d40d64c2dca878a42f903fd4382f39a89a723fe11848fe37b2008be53f7c2d037981d6462a4eea49df1a2e074957afd3c9dfb4d218a309cab395afe301ccf", - "67b5eccb1790babc2dab5e0d1ff3871c3024177d45a2ae", - "259603e1c3af3fd0ce3257eb627b02e0c0a48ea2f175de3d8c36570a445e5369", - "e14de73c4b17581a7e0d0649", - "33522e67ef932da5fa8abe628b51f3abd5049951dbc982ea95b7769652d4830c588fa45e3fcff094c8602b9008d7b2f9bf6c1c4a8cfb515401c7c44a7ec42ccb967722a710199e121a41160b1ec581507e9bd2e2e506b10c4b5a8d6977435aa08e27504957cd49e756e1574c4ccbbdde937de35128b7ee3455d2e665c596c2e97c253c94e405f85eb5de84874c099b4a97eb8f492d28f2e4bc64b228dd5984e76ca08376d7f1355ba8e0fa60fca96635075417d8b436278e0fb91e3bfc7d61ca8c7407086933c061b2d318f46f352099e1d317d6c44098539d1d2c1b7894db668e7a82ff991864fae236570cc420a4229883f1e2242d05aa07e175bc6abe11cc643cf1786a4456a2de8c066fb1a70fe387f149ffbe8cca7b110e256fd0c09b1d3bd7381cfa82fa700c8db1e79809ccf75ea52d0b349264557046e8703a191ddaace00ccfc513db5e78810eaac0a99d7bb1a5725e722d4e595216a0e12f3a7aab2e623ea9e1dad06169914bcd51b643016fea7dc3f2743b1e65877f1fd5581bee5ef206d86494a587ec8462a170746fcedb2c9f99090674ee687382711b4610ddac599732453dc063518aa36f5b4129098fb9fddc02eb8f8cfc2fdf0d904ef4d6d06014f977b29d0e9aab4044ce9c662a18b1a8db1ceea97854e90704430fe9b1046b221b27ac79054fcc68c3abd6fab7da66e255ff0cbd0506c852e961e619615c944cd9a05c25abb63742f5da7bd9939feb0f2f2208c8ce82f551a9d4d70e935dad018e3e4e6998e39670221601c3e34716ba75eb4e2fdf53c4d471c444330514986de45cf44d77f793c17e36a271fc65e6bf08943aef4c66547dc310c7a430e3fe7a54898de48f69f282f52bbdc4daabdb325cec7ab66fce1aea4e2fd932dc1a316c821f5220ea437447feae2fa478adade7cd515a27d8c132d0299b3ca1bc8516c9d9e7c65c38c238c69f03e104eb42a29cacc8d79b808ea6fb233a5056201e3697f81a2d49ccd8b8efd1ab0fd407c16a210767d1d3ca798ee53a4bbf1ce5090d321b1a64fc2c5f013c23829f5b0d2737936ca71595a1d02711c8a7b0e74654e5d76376ae26977dd49c68e3c0a7b36e047d44be42d732c31f681bd7b1b4b339f004ecd847960377acd005debfab13d0fb88355025877630aff753a7cfddf6851e8bcc8ec37b8f9149830f47e6b601098b2ba19a4c0808e31e8927b2525cb82bfddc9b4bcba2b46bbe768ee278fb89010243d16f9679f5ba4f13cfe76b5beb16c7b28daf99b0873098115c2233ee3402ac0f6c899a2cfcc83b2ccc06676999ad48017c4ace507080a26501993327ebdcbd1e2eaaaa99f4998b716cd9e36eb26b4573a03fd1d18047198fdf675ef4f979864ac85d230a011c69d8b6c45e9efbdc2a03f195c9731b4cefa60208ba845c0978e73d082bf6d6a513b93dc805a4f5973f4158f60a200167ca88704a15ac5ab1f38ed455a426f7c6a96b6bfea2ebc1ae1247cfe5ff29ee81bdbcb53b03b89568bae9a6f311d2b20e31c2d91bd18fd93a37be266d0de8015d52e325f78356dea0b77cc76f28e0f06e4ec705d1328340013a77b0b6196f44b7712fff4ae0ac7f6afab9456a95012b7c6d387285487476d189977e28f6c9d1a3f736320d61302c2d627d5a7ac8cde4988056b55eeba27efe7e640f94c115762ad5849423ae138c76f15b47bd2a2bde2c492489b7980aaf1c4e32a155f858d7be4fcd0f8a18e7b5d97c5a08d7885d6d56222ef49542c7f80498a14a8eed1c092543aac3439966d5b5d0cb9e602f4fd795c09d652b64f9ab67e38f48c88d18e30a9774f37e9c77b7a94cc7310d", - }, - { - "4ab8068988d4bbe0bf1e5bc2fe1c668cbe58019c958dd2ec97164aea7f3f41c9f747527f1c0e5fdb2cbb9d2ad704b6955cb731f14403dddb1a28c5996707635e4eb5dd6ac33d46eff8e319cfe7cf6443869534ca9812a5b23a6b4ca172afffc064dc2b28197117115431e03c00447f87d9b45172c6f724006270a1d41fa094847cbfac9630c3a785f488c1f5cc407ca6f4cd18bac43cba26ad5bfaccfb8f50784efc0e7fc0b504b43dc5a90a0525b0faf3c8b4b7046fdeb1cad87ec667ce3eb6cb4c358b01393f3ffee949030ef9fd01c1b2b9c5219777eb6ff5b1d7c3ef8d8e3bc2193dfb597cf942c5fc50befa527fac0b44cda2bbb811b06ae87459750295371cd232754e2bb7132807d1225950ce64949b0650531800bd0074177677acad937ee008cc0bbfdf33c6b0552000238494be8be412a3e5cfa359e619d092c76310a76bdcb22abbe6f16b3b116b5f95001d20e42fc3c9ff6723e580f378475788eec265a1ed2087de8cc2eff72184f73fa5dc6e68a56dcfc85350bccb97135386d5b827c2d9aea065708f5c921454d1b9303f21d5adf19e00415acbd86d1e5e42d78505b033a515a435713649c50702f54623cbf31469f355c3be2e30dd8c72b4127764451d79e952ea1f9bb0269da56dc07060d5d9542a9c1258ccefe53fa3f7b6073cd38026256b45c01b6c5dc0d91e3139f30a8d1da7a076738f5bb23352693a8e3cbbb46226fa22416680013f9e3278913d06aee4a62457357f0a68d173a360af5e1411840e34c574b4c6b352f92ce33632911ad8b6710d357b7607ee19679e777baffb8ae3c0fe9786b2e97fdeccb5105ecfe81441f549bc6b50ab84b749fb33f8f6bddcb6bb733d6d5dbc4b29725b8741439b8239e53fa435ea29ed3324202b1bdd07d1987b0e06d8cb51013dad897ef02401290940ce3f2af72c5d1b4c8836299008c10b16c7e3e119e41ec66d9db6929ee09bdeaeda08a50665c052edf77b7dff3d8815046bf71d5015e3bdb29a4f507aeb2e28c536cdcc9b8d1e89849a0683d78f99dbfa90f94aa5dc08587657a8f042d718080de5d4a973f232f78c387b63c7143fc2a4380c491414a18b6c4a7bae2194b62e798ad7ec7d09e409425f6d0973accb17e4d860f8ec0283584cff076d93bd9b0c4873f9c57cddcebe3c3bc8afe793c6cb6b26c4582847b07446b7e1d9757de6bdf0df826cbc502bf88cf3a773866d3ff293034abc4afa3091b2126a278f50e47f2f66ebebb616e342098ab690f7f5828bf8cc4742c677d378893e9f188e8397bee983a9a0998de2a31798330f8db59a8581e1c847589bc0e2d95ffa68e39226cc15cf6cae5c4f5174e7848375391dfabafec202565ec2383721339f04c5c5d1da953d88f18cda65745ee8e99805e35203a6545a0416923b38c5db3c8aa00d64354bed27d7c78c4b257534bd7a18107ebe64d8c27b6afdb330d8efba79fd1fae480cd51fd3626bf8d79fb651b7c6cf752aa737a5123558420d48fc86451b358d270aacfa6c17f343b7a9956e6f64e4990c1b3f1e5097605edf5ce4247819b19f245e9a90758dd42c36699ba5cd7f3ed99a7df7eb155749f4b42d192c47cacb6b2865fb9ef2cfca283865cd06e40cdf7f89d76a9e2eb393e2e0ac0e2776da929f3f8e3d325d075a966d289c51347bd0bd523a5c81edef63ce9b72f5114c88b08b16edbd73f518096240a5b37421843173be8df4ac7c587a17ca6f2916f7d9a10dc75f81bc778a1eb730d12b51555cc414eab9c066113a7edba9a7f1a18092ae47f12f0368ba211feaf34a3b48a7ff5c91b81cf7c95675a4001c95a19d284fe4197fe8823909a123fcec5e45935da12416be1bdf14918414ad19b54a41052f5b8417ddbd207ee01d6a3e62fd9b0321b1c13d91d6ce15ea7b2ea0c670a5f5cb290ca8e62c26c6499104ab8e9fafb05170ede246bbf7313625d1fc9576f1609ffd08852a2f4b73c04f1f4eeecefe3f3eeb2185a618b6dd3e87d9d3fdcb349cc83c21f26b6c662bbb857aa95378e991640a160a23cce76153c134508c68ec54a5", - "0d471079ad3c3432b6de852ec71692d12d9df4f984554d458a9dd1f28a2697976da8111ae4454c9a23d1c8eae75bbc14f8b00e7c065bc290f8938282b91a1a26c22b40a6708c40945d087e45633a595beb67d8f1c29a81", - "f3dac58738ce057d3140d68d2b3e651c00ff9dbb2ca0f913be50219dd36f23c6", - "bb2d033de71d570ddf824e85", - "238c4e6be84bfb151557327095c88f6dc2889bce2d6f0329e0c42a5cd7554ab16c8b5a4db26eab30f519c24766b1085e11d40823053ca77adfe2af387b4dcde12bc38502229510606ff086265f45b1087375dc4a022eb0b641101c74ad566ab6f230133b7aa61861aa8202b67beddc30dda506691a42032357010d45adc7ee633b536a2fefb3b2143837bb46db04f66a6e2bc628d6041b3d306ff78e96205ab66847036efa1fb6e6a387cf8d5a105738be7163df9da0db48e3d8fd6a786f0f887968e180ad6888e110fb3d7919c42a7f8c92491d795c813f30ea645fafcddf877f5035f133f864fd0ba1415b3d698f2349ebe03d9e76610355e7fc23221c5c72b1b2628a40b14badf93288fc4abeaff5306d274f21938650ab236a39496d3f8a6e9086eac058e365d4335b51eafac813f9175bb7bebb75605909ec3fde6515694e119f7b6e96aa1d6d6454c3a7dddeacc83bf0c1f5f6c2a9dd2f460f3e5b074a33b8d7904e6988ae43a22a87f0933f812e45c4c518bf83e606bad4c3c55422ab2207e9d3cfcbc5819049f55e35b9663273d9d3a6f8a897fa38b0dca77eb6c344290cc007b68d913187f2cd480a40262623a4e95d90d5701ac2b9d858d70a27f0672f919c2ded1fb89134ac9a8ba6ac62931c832372abb70e811dc50cce264ece65e87338231f18ac007c5f68f3b1c5904ffbb2e1dc361d53914917770d66afe28c547d8cd5896d892cbdadc34cd6af348c93bdb8b072f38b085361e62ded7a38b4368824c759ec7d2cf4caddb9191e5deedc8b8388bc4ba2c0672321bcda3a7343c9ea71ef03750912f35624d81da5fa8a6ee676c4efd99d0c7258b844ded7b35d8c8233a316b508d79c7c0b3edabad5db9543615179b1c111bfd78b79327ac5b4155336d670baa592d441c810cb1b7c07f3d35473a45b57e780b7d997782aeecfc0363976fb608d6967844ed00b63ba75996054d090aeb605c195b1ff86f9d9ab5892d27632cbb59c06b3ccd69d33ed5dea9398f00b7c6404fcfe2fcb5924e4cb75cbcae0a1b084ea8b15eaa5847431e9ab70e4afe15b4c82239f6165e243e3b76d6c91d23b16edecad8bcb16898641f8e323671452034a8ec9b42b29cec0db210bad0444f1c5bf3505cc41d514d5a270d556f0a34333bd06cd6509ba253a6ba7a6db8f1a60c99f0c3d566a038a72f1271a178cc3ff890b0df1e7438c0c1a12d9873643e2d7bfeb92379545de50834abe2a345faf7ca49beeab87ee516dd8598b71196b8cdb15e7200cb5bd814338babd74c565faaf33d9a8ed4209b417345a1ae611880ea22ab2e894d5d14a28fe3835d3b2718125f0e6daabd85327455646290ceab89e579ed5e1d72a0172e4a6d8da70290b5022c941f3866f96cc4218de5d2622d13af6dab15760a1ec5d10918267f9585284058aba611ba07b1d5711cef505869831699bedc2b190fe1d578814065c91d87a8c8dc9b0d4dae0c80cd241f0bda3a6d5e714c894b7a48b1e5eed4555f103eb03c9db30efcb855df422d7451a6d70f28174c7ebff536dd2cd2891f6c3f264d632ca924c4e0d84b37cf8e06e6f2e29efac6cf008cc27f062441278dbc9f09cf44987e0e9ca088a48437b0b89efb9cf00d3d0c5fb449fd4b64e21dc48cf300c2d80a502cb583219f1881e78e647783d91dd2f3b389a1594eefd8ea07d4786f983d13e33cf7a34e4c9a0ec4b791f1666a4eef4e63bde7a241f49b5cf615888bd8130743bc8a6d502bfc73ab64d1184ead9a611832b7e24483a1a0fc475d9ff6166b86a18a3dc96910ff182cf326456c4461ce8acb3467f801890eaf1ce0b24791da9c650876e718c0bf43c475174f9712dd4a228695e8f8b2b23fc4a06358b4a6a8e1afa87a0280c3e098f218f7a6d6bd716f8c105a7eb799ba0220837fa5a96c8a22a826a6f7ea9d7216a24acbc7b0133210cc17c8190507badb421bc54997ff9340cdc1ee415126ac46a4fec9fee12d40f06300f7e397b228250f36d6f0d2ddad5fe1898ea690e4c7cc3a116a70bfaf6d2dc996753fffae40ba5280b8356b7ab4ffbc914ec74eaa070581fdd1d9e5aa2", - }, - { - "4d81b652fee892d575bd13dad913d976cf0517c819d5183a72eba995b1f27efe743451721ce34791a15a6b7a6e44f13d4a080563dd1d9d4f0946e5ba3863b9ac970a1fb4ed66458ec1b1092ff5fa6c3f0271a2df8e3f2e97851352be760b6a0e1589c202f00791b1b89ae0ae944ced96bd90754bcfa3e355b735132d407d3b5507fd57f705e8a8bd82886b16d459ac91e921dcb8c5bf0d7cf420a9349ee589a5e2e19ce7c944a54ccc1062a0690f3152300d0bf5cd1871c1391bf6d7007f7ce26018ca2a5c6f76287fd8c8e9e7f93b1806460dd35f7f95989a8b6f9a0aeb7c6b0346955fb50b8735e34f1ecb4859e34ea0f022ff6fb797094206a34cf120b7f4664c531c57da513b296f0671c8e9bf68d9e1674998fe52da04f627f516dee97c2b3c988216e9bd3f58c3b021ac70898651f1cfeaef21c4f417ebe92dcad3aaf50f4277262c356584f816a5a5862f2bd720fac10f1b86033371ed603bc00a30cf4da8f579dd5bfdd571a37af7d2a5cef29f9001bb1605ee87f24ec3b259f381a69b771f78d21c4e43bfc83a916e08830d9885c8ae8ab6367c05f92e5eecaf0488262300f83f4e3bff177590857e149216995bc52311fb9f16f4cd74e07c7868a39b699bdbb7d7dace4c6a53ca7ee6e11741a63a52a1d96995a6dd752356dec6f14761ccfe38a6cd8511204f8f0630a747d6e19a77bb030c61e0828436604a28a7acf4a5e49b7269ac93b93b99e9e2e1c0c47b377f7e44e05ec6659526afbdcd5bb172404ce5a9f8786234114c16f20cda6d4359eb873a4a4d9fdf734e9c40aa4db3ea9a98939210f6c62142dd144eb78191116d194bb766ea96da38321ae27fcdcc196560ac75567297984fabe6072c771899906350f74de6d18518eb6898b934b11e945d94ead02b821fd6682602e03e9c70a1ec67eed33874eb24dc83dd1035fba5928f8f62ba1282907aa8935ae72fcb881b3277ee6bebda8fc75d6cd792677c25f70c87b11e094298b2d5f39904be211ff0980e5b83e8ea4a455622d8be9efdb5aa8466c88ea861407d54d98112faa10293af5e16974861dc9f83b45d21b112cc367894c421f5049e49dd205bd7c15e6a70bc810704e2e3a3659800864912527f8be743acdc474a26246a81fc2bdf669b9be7a2a0c986432e1e44b5675607e7e1ee2a8dcb72d8f1964272926e52f909ede0ac8daa32d1d850158db76b959e4d83c9da4e3bb23fd1f5b26463045d6cf13d187fe74a50c09a654d52d0e2f01d66b9f8b4f4aaf4c69fa62a02aa876f9bc4871aacd26a6c6ccfb9bea09cafbd0268b5b65d60aa23ff504d02fad4719698f8b044ca1bb037ea6af58a06a448080dfdbe6a5d698d5db9da5fb4aed04a46c8fa8b93153bca00a5bf8aab64d2b371d072db2ddb688a9442e948f0b99236828dc115a2fddfa2a29e2d4e02ff0173cf734efd4eb687e3f8712be82abe1fac4be0c1eddda090803fbdce41bccfb58c43038991ba1074b281a09bac5eba58a99a1a9678ba26f8f9e3c63ba095f02cd8f3b56aadc5de60477efbf3dcb54b854f651cc72042bf19268554c61b44f2f338a75de56c3c45b3ba40a697f5f21c4557380c777bcc91a151e5676c2a59606200bd476cf98d20b4cdc64bc3b8670810a014871be018bc32fe239e287cfe8a7cbcd1e8b55e08692ccfb4ef871cf797bc0b1fd7ec37931e35b6bc5d32bbe7ae77b9962c179f96436e4a32f566298d2235acf921e38c3f1942fb7674b65e222d17b95a2e58f072c63aa4bba1ce48c303f4bd24d84963f18c5e670015c52342dcdc9c0b348c7dfac721b568effe2bf2f2e816ca3279bbbed823beede8e12fc5bdccd0f1584deb1f6ea1875e9fb350919b675ccde0178bb83a4aa5232bd5e8e9a1b8daf905c6197367a0d106532297ef89f3bc690b48224592c768bd9c50a63d0881370d475081aef052b444744b33fd3fef674a37898fc950f887ed482d2a51ae615ef5b1dfa3a23257e6a6a319a4e2080b2c4094bb09e4b390d1fcbefc4d6c5dab620f8b05b1bd5d976300b007e2b8120ef8a6c9028b7d925c795058c6bdb6711fc5fc2476b9810d1d81bd24637537716edd3b7068b802c531531df710d3682f9865530e1ed51b3b56d860ba4e972bbc74662cdd1e2ea24f81bf469193afc02b14143a32e9556e3f2ecef97c65", - "2538d98b64b6aa9258f9141840a5abef66d6037a10356366a3a294719c10d6c148b04cac66f63ebff052d730f8821f5e5822d869573bcffbdd636c7973433abbf38767597da5186df8ef9df071bc4ecade2633366102313e659db8d8e0f293d379fa2df79f456497", - "a5049b0aa153e282457555bf6f82b60fc81aa6fd1c2ea3db031478ffb74b5b5d", - "350287a6bed5709dfba3d35c", - "849670914f5fe318eb01e8849e536374ec11e813acdbbe6a5e82a506f6aef4f916a3a7fb2e41db3adf990175e21f2386d1805af9bbc32a6ac156b13b1a9505958f68599019c4b7297314229c467114754277b10e9f49a4d12837ef24184629c8902ebe2a23f740dc826b01f8963d47100bf617b314835e436104eb207fa9a1079b8feba06d9369b9aa8222d38d87096b73678bc5db9a1add59394530e678b6ec93a80efc6e8320f2909e3e891306d69b016ade0d30cde64c2c903b401f9d01a29b5cb8619dc68ad6c21900b365a6b657f7d9ca4c145fe598a94eeea741e20a9329996b17aba5d7115c93623f2f5d6927068d0f190b49eb885429d771bbbb3980e9293e4d664a71c3cb629d869dc97e58fc3d328331b11df19a38d61e1705ec4c3d779168abe049e9d675337ff658e00d2d610c8f227d1341d1c41f1c01d8b5d83c4b1b30ae4318da9822f46402ee8cd5cfe9f3f22d90a5ec2d0aaa0baa85e10f5295cc6005c5a0887287b0c867a23da1a4c2196f91fe0bd4f0db1ab324c26fe6088d7583f3cd052b7f6fca38e8b21f98fd07fe78b7657da1f586f1fbd3d2b4079e20f21dccc0d269d53a29deb7c7fb63cc291d1d2c50ff163e08ce612310d3bd622f2416e193078ce4e1463f8a3490578af96ca98e665468281f1af9117a2ed23367df19b570885de9d6594f09aaba4090bdd1079720b08d54311793c97bbe14433b031c865b059cb4f75db74779b82c4f83eb4bd829c62eab995027b548063d7cab7d1a6f9642da6cf7181c0ac71594b97fc2c84b1768f81eb287091f63c76623c61e7ba90c922c74d46b9ae5d8094d9752bc1e8020a82601c356a201e0473d540053c707a88f4baad37826152dd245c4cee6b0019583c61e4327fdf6bdcae53584cdba8a503b835bfb5df9d649705fcc1f09376eec96c3da1e105accc1cbc21d90f527041a9beb85f8cbb1ee8db798838bb45374b741618f83b5d0801a3af2f640abdbe74ec3dc15d6711b4c1480aa8d6084defba82ed221ba359c9744705c4feee0955c27ef468cbb816694516f73fb541e0ad4ccf99ec8b67ef090505d1f7c4c3a8ed7e291c820261f12d92bbc6609da6c275349819848c9112826674f243acb9a29ab73f17c8f8af12c7437c11972c824f00db7ad284e51b9b508a925f0664bb259b4443d56463bffc9e5d845c9b9f79b24c1f457088fadd281f48238866e0b92d6253638eb188bbaa8bf6a81d2b1087904974752697cffb00b4ba05e5b7b842a3d2c0a743e4bd691625788fbe9df14600643b1d161bb2916176b6ee40aee38dbb594ec2735d41369ed3a0c6dd9073f1eb51d1b77eb9a967b53670a8ed755f3b2b73a6cb50a9e1ea7549346646dbe4b801c8aa642779d8761b6c2d2e1a9995e758ab92f07c4eb4a23c042171a4b354f434ced5f6d9ccd26cd6c2506e5023dc076ced15566fdabc7364f4a8594cd6ec404e1a9470f52a83052390e4f7789ade9179b069d9f84ca2c7ac9eea51035db817845aded7405bee90cbe92364c8c7cf8a366cbebd7a972438f2a9881395a8610a2cd0c06c46b60cdae5b1f473f4fd6ec48479cf35101656f05485198a470cd36af22838e7ba3e28863cd8ba7bbba7e3c2625c1106a6be44c9e3d9b9938679b26f0713c62c3757a2dc8b2d9eed5e652220a7711cd220bc91a9afd7c940dd8be71616ebb8b2cb0686dfa161c6ef56994a3cafaec5e79bd0a2531fd1c1a42771acb101a38988bcba51ad85bffcd8c67aebec5b37d526b29f7b9d31388e1e7ad7154f8e65516f0d80a30b88c2b868be2541d19ea1d2bcbadd30e2fbb1b4678bfef7f200e0f8309ac0701000c52ebbcd6fa00cb85c8d3ea9c5aceeb3adcf3773cfb3bfc9ac764d031d7c63ab888e9b03eb9fa74554dab4719d426d0875a508c8c86b22cabfeeb70b0f1461db4e5f639d2a2d28a089dbcc48e3f34394ff1acb887b89f75d3236c8143bb9b06273c3878744340ea1858a9f383f8bbdc259250e23a3c3992bf8b7ca7e1a66913547710402bb538a8866772d11cf4214060ed091d403e1c9ca3af75859259f88656a1cfecfdb49d57c193e60a2223627c681a2fbc7390140aeddc19df035a5207adde4f5736bc542bfdc943ae8b094f4a8701618688fadc2284fb423f602c41ad8ee11e5d9fdfa67fb7dc7d4dce7847d4875b3af667168ebb6082f6911c95", - }, - { - "67f0494a728fbfc84e2f4a043e121ee40f3b12b31616c78e157ed970db28674318b08d8b3f4c538d7b9d91b9b0b09ebfebb07201c6398fdbb8684c9390b3d6a8636333a3b086302b24c2e5d47283935d33065efa3fedd5f755218be5d4618d38c5c1db75470ba06bcd853f3f08d39c3cd9fa3618e70b103c2d9b2101fcaf39c1701436b720d723ed5c622d6535c9a10ec4d727abe237e80fd20911ceb84a90285fc6e07f9d036cfa65995f9b6300a927d7d0d2b907bac9d9c4daa87c2438a583fe85029c886f96ed08f5886bf53292cc0265850a1f4ee3e3288b604dc305d0c28ad35e1242f4ff4ae988b6deba48aabcad2fc6cd7eaab0a63510f3f915c4bb9f9719b1d90db123f639d9d4f3227eafcfad769c2b204dd2555dc54e738909122022c4f92f751d25aef6f9a1187750e825c68450e6d1223c2fe88aa27194b492b6788be6eda80b9b9f053cb77c8d9fa15324f23af5147624fc00c66e947b004bf38b31e1343c7cd341b98abe462a5f994e51d343664968624a2ed0dea9d0299d5c5a7e9097fa63d8b3ed96f917f693654766a9adb01110fa3fe0d8e9b102860d5c049df3fe00ccb2ed62ab05583e6aa0a5134d55245d4f643e274def29d3fc86d79979d599458786a8338b0071f6a01609ee6b2e4bba9289e2df780bb27491890d0b5ea650e62df819b8f98aae99a1b8870ce6d3c7785ca957d5b4094946925751f0fda1d62a9aefe3937a912c1b49b4272f87eea7e397feb84c0702929959e38a568460811e5064b1caf5dee53f920c6e19fb16fc9214b5de1cb770b510533f66d8a0e7f6f04ba8ba41869f8018abee31a6042d3919e217359988eaa9db2a10b3caf7aaba43527484d81304f0bef22165f74e9e1031b545ca3d2f74195984cc237b76ddbec85142a06446902339b1883000264031db85fb19b46f320ef3fe316f750f2d3d6070dec5b66ee8ef20701f20965f5171e44c8a99bcbca7afbbd81e30e74c6d48bc4b0d72baf562da6581fafbe14b6cc597f75e53b305036ede219ec56d0c0d29571a9c110ffeeb747fe56f6030dc26c8d3841b868a1ef56840932dad9f3bd7f75573086571f4d9f0d949510a2577d2f8fbed7e850c73ed4c071bf9a656d09dab43a610b49aeaa57333f67d586d4f50683dceee4942db9549f68eef4c5f8df8a2330857cdf2fc4025f2be7d5f0dcdc74a9cb593de91282787b716d416a3ccb8d6d40fa3c70be4ecfda26a5caf3724fad3d98db16ab6d8f26defc68392923b69664b0c2d56f01a549284b042bbd43c8faec940187f190aec08d06f9a62ab03c9f610f64c0010a0939451d5502511dfd3da1fec5a38f64640c7b6db2961def257eee9a3eff944828e9557deba68bd8e42dc7a9c1570e35537993061fa0f5351fd3cf4ec36386ec4cdc5a2882d5f16703b900c5000efa63888d69982e5ecd3e329c8cf5f003e23ce03c55631246ca15ffcadb0fc9d5634252ccda812ba7bf5e343c44244026512062a68374ed4d8add0855dcc22b30148e0cef0f2886be76bafabadf3ae1205b43c6deb8a41c338114895dd6b49deb329ada31b350e02a1bdad4eb05b61b50f9d22fa2863bd607406f552713e302467ddc78213d584b4933202438d63f99d011b97297f5589f35b7e45ccbd76f02453b7a7668c2b1a1f5d1d63eb805c8881771faaf67433eacfb22f9b6fa58b93f9423a5fcf667aeec39751ae17ad36992556431bca77059a29353598dac12bd3036633d2ccadc18f44123e5bc074f4e5ca380095af062fd83b647015259be929011cfbcdc9bc5d0dcf9b688f0f5d74da95746f447a9e1cb5028ccb2827b45129d04cf6990953a6d8ee0e67fe6bdbd8004f4744cae5607fe7ec4a0f14fe603dcead3367b6870d8e751cf57387d04b881f92cce9772d695f19b36e2db2cf6a807c9ee83225f5c09a11b50e99855921a4eced8e631af7c234aa31615c00ccdd7c6ac5ae8fba6e29cc233765a891864c7d73dae08ed1a3c27cd423d8d4efb550597afee8356c12018f496637daec83575f5e38ed2fdbafabafd38483c239d31cb4d104e93d16eacc6050033a3c86929be4ca8914a538bf540b43d7ce7daaea317bee1ab80504846554879f900d312bf2fbb406a0edc5f4f809cbc68675b0b7f09fd1a8a4d52c0929b3a8b9c1dae4b3d599b976867e6a7e8736450dabf5c49c949544386a71419324ea4ce5c4319899ca510f50d07ace57b013655b0929f79dbf3cd629ad17bdd10109b7c53a4f5f04a16e5471e823c898362df43f57ebdd1627b33fd4cafca6cc065d9140acf0454d5f99be47bc87e0f3b4d4320bbf0f21e7c261bb8d5d615963beeaa46bdbe9b83a8277813ffe6132b23564bef5", - "74dfdc364097c39ef91c01b707a522e28edb1c11529d5050ff820234e6c0295aa00591e09d547e9671804d7825705ab44b76c59d1315ed1297ef477db070d85076693013bdafa92e2ff6a654660008b176cd4e8ae23b9c792be3f7db54cf2bca385bddf50a8624397cca8ee3cb96944164e3cb461e68", - "b3b5ccd7ef49a27d2c6d13c0ae77a37abec2e27e0b2d3530cdbb7f36792a7d2c", - "c0494bb7249f864f69beab46", - "ed8d6e964bcde1df68e7f362243073941fd68ac77929c8e480c89f519f748b3dc337b1af6231632c975167a8425b174b42c2c60dfc0ec85a0a212bf5c9aada818a83f9664c8712d96de1036b5e5d8c8298786b753638de3a8da958549f16eb9c723355cdf7b999aac464ec39df7d6c1607e81b88b63043d1c847dab618f1b19336911b4b0145c2a694e61db71e021282006d48e37f10f3b6314dd012a07618228532c28ca84a936e0eff83723d117b2f2db857d14af5bbd5948a0e53018b31e57cc2a81f36aa013a844990753ccb347fe98fab294cbd252a8b8f7246276275d2780511fd3cb7baa2fd1548184f968c422230f7ad73ae9dde91295f79f6b799e7d234dfd6573fee6d6ae748b0a8cd7ed4862ebd957390826f276c2afb01fbb4b64b61a1bfc138508efd630e77580867bdc1e96a48a694cf0db6c2a11f05dd0bc8769e7200bb0749f5798b6f3559de55d0c281eb5df22b731fbbc109da9c68f209b888e61240c4c0ca006d105c0a7f43144021547d3316e5a99f6c429f9ea2f17d77dc68bc9d5125b6260f79bc8b3b8061972e6757d87b6544f21645c0b4debe5224f7c48142c09f35b8e144c0c1e6521f04c170519ff744d61abd59a56d25a26c5ed5972191b25e78e2140f3ce68fe17be9e59a79f6c69619a79b83614c670c7736d19c27fd22515fb5b896a6418cc0b4850e85c07b38b995cffafd9f69763cbbcfa9d1bbea6868244a66a5cc82e815fae09f5775d28437634926d571c2b0d200855e09cbdc67d10f85bd4cc334ded4c83aeea57f8e373a950f135997666b653e8de47a3bc0059525720045996bff500a47baeec97808fe971d7693dfde339e8beca3598fbc053121536c30d0af10f8f5d8e5eeaaaa9586d7abb563fd69e88351f93bcc46520f6d97c1a49ba9f8f6a25cdcfc11b2a722910aabe7435ac8f0dcda9f824fdde80850f21a2d4bcbfd2e9fcbd14dec05c117a9796db49e2f0dc55e74c7f0f615bd049fa7d0bfcf197dcda3ef3de90762e6f6f9f8a8936bd04fcf2a97cf18ecc8f2f118ffbf02b67f252097e4289d02f264161f6f90f79e1e1ef8414b01a9e1a77b88c039ad6eda6df1e28fcfe9370f0d574aa9e857dcebb19eb7ce8af9b19b4481c9fb3e1f0db3b02af483f737ce3ea824b2165e7c0fca8585383d4b0a16eab2c7e3ee5c038f939a97bc8e1c093cc5372ee45d81836c988f3ab3e6ee0e5f9549e4b7bc381a2afac2074cf75ed56b0e757e7966cb253d549fb0902da98294c6dd4de3c2e166b7e45098d2729b1393deb68471d4d3218dea3dfd0183b654ae4092a79357945eea4b28cfd06b40d30d1b4b8f19827895f6f908f0fe511f74ec84cbab2483ca4bdfc6ef50178eabad79b18b58529c9328c13c52c2869858cc20ec36ef7717e1c743d13f9607bbdb0b701d9df6aca7366814e883d23e51ee5b0f20ef70e2c4134ab037d213315fddc89009260981329a1872e541767adbd5ee9501e7df4ef0cdfae9769961f8716ee7dfbab0ec89b3f62e987387d5842e124a69b07245d359052ada50cfd67472d27ce2c4eacb5421b62dd7331da54ebf0989803797f4c8c781d0e2e6477b421c7d5cefc8146aacc0012af3f1f7cd71ce2b1045d86bf48c9a13fe469a1865294e160b4975023d0eb24ed26837afefc250a914f86f8b1f5d67d65e9737e841519148d4dd5dbf2b5a8b073861288ec9793d4b113d71c01727f67d791852fc3946dc912d60fc66bffccf4c45d859eed9f0bfc7f89086df5d5cd830ac919aa7cdb4504018052d67f6a3ca012ed69187cd5fbe91875cfade381bff1e804ba59cd59f0f75cb46dcfba234ab9832c3fb9aa8dde19fc1fb30677ac1793a38d94aefd9ffcd4e777e9e4f6d49e0cdac6c16a36bc2f3ed8e23b80350e3be6d866aaafbc8cbf7c69fe44c2aa80651164803150c23ebe262aa669c77ca94d215895d2ee9c3e325a0bf2c61e419a41e0f7b1ba8ee0508307d49301abccd5b74c054b6c7bd1aa67cffeafee033761d8226d9dbd7214b130a867764062cf4da685deefa23693b8549d5ef5e53df85c19bfb3c43c6bd073e7a836f849587a4747e1a9a3c7194f6d5472d2e3e4c81784a3061fc9bd3b94862c4784974d859134369486f2651f1db94f511c6f59f41da0d75307191602730b88e4e6101fc8d392c87687f3be454dd92fb8ec380715bcd88aadb63717cbce4db91a36821a572c363759d8d0a2ab007e5981b78731dfdea20d900b14f0c5ee6a4a9b532ed2134e6edb4dc267f001cb88dbe43aac4aad453b839d035697df7de98ca7a9ee7601228a79004b89796e9ab971aeb8e62c789bb21f38b77b492c57db402bf6a42ad0cee169e9251d865ea3e5f79b1801ef1e53797aa6c7060d6f9486081", - }, - { - "04cf92a64cbe135f7fc1d7223b95e41d13f04b482018039f4e7ccacba8aa15ac79a752c5666524e527fb076290ec80a3dccbebfce3ee9b316a65fd130f12bf88b9124d1f7772049e6d0c01fef881a1d44c8dd02f7b6b60e6d15df9e06fb86929cab64842284de09659e19451623525aec2f5dd3e603e24319b1d120bd57b34a0317ce25ac9c2f022a4847306b998b57c8d92baeed0de1f6cfb3177d0acab70de275238f1152813b9ac87bf651f74e1ad079b9bd779ba4374ecba459865b5768d08ae7e1dd691d6821895e8380ac9e5116580e8de3a2c5326e698bf4c4d35d955e45772bae8483d01de2539e8ee1ef9539ee132d80d85fff41dbe406af319c0d7703292587bcf5959f49241e2b03a364e1b682729ed261d0ae45d74d77634afe667413ee210983b042a7ce6dbb61c29d18450fa7176177b5a74f032ea24e1d08b220f6d32a7a836d1241cacda39d6acbd26a62f9dbeaaf7329a291dbf0aed4a2cfcb85ea360947585b1215feaf70ba71eb2d6bb7081b2a21bdcbfdae6ad2513a9dd714d3d06c2c2b7e322a1db2d48f9df1fb44fa066f2bb42b196295ebb3c0898ad55d5b317986afaba0bd5e754cec773821613e908ce2bba6454181f9020b73e758df18c255c87df675cc6bb2b8d2eada44196ac10c26674167f94a79f4be515d8d6a1fd3228dc9a85a355b030845dd4c5f481d5b6e74acc66de730629581b022fbcff61e5dcfb6a7f511aafd577849a6b057021ecbaee53986159c1ba74c3e930c34a159f467f1e9799cd6c1151067c56769e43308c96c8edef8aa7634d909310dba9af2128cdb8c29b24d3ec2a4f43a1ed86d1791c9a670b240e6e719f01827aaa319bd3ff53959a776886a1b7c942a54f141e6bae8576d294e44333e6c5ad90f74863f69bf890126016b318e0f6bd2f0adb9bb861118af5f6cd28dc93d56c8a1dd080b8c810ca29267d410673fe367dd9d1353ae2bf2fd88d57b4202c21aa49f12a01b93acbe260492367bc219d3afb6e6f35502f6529bcbcdddce9fe8632efb034a9eaff8b4a48afb105d04e3fcbbcae010ddd6636992213750b12fb3e01ab72aa957136e0bae591bfb5e0fe819cac82a98ae8df230af399160594540640c6b1d537e7b5f1cc47b08127ae02c35b846de56c4c08773fa18d4436e14b76a7fc4bdee301d0af4880306f2f33328ab79f6f24ec779b2b1928704f09bbc5b0b7108e9a115e4959df79c80eacfb98649a0788867e23b2974b22e654ddab0494bc922ecdf17727d0f0efde9dea7601857d890bfbacbd93f7df794bbc254f50e1e17eaed2f5d5a2e6c58083aff68434730d406fb9fd02b0dd7bfb99a04aea812b6830fe5e05a044ca21c77a174bae8b58eefa11ecfcc1c977bc6218064c9931b5c92f13cfd05799f11e130869c293c1b08dd29c899365014fc8195514b286c97cb6dc4b8633e47751f87fbaba137b6aa04d072ae06c2b2f34448449f60b1272c1efbd4722a2be749a3d2e5450aabef1f7c51bd8324607668a8caf8097c2f358b1b09fd3525d47ec9a7640eb20ffdc17c4f7eff63df75dc7830c471ace3a727feb11533d6e9a2a08106af33069cf482ec63724032e81cab18e12cb5c4c3ddc374e2f75bcc99fc5da09b80a738852a14e8ac552b8471c6ad52e35317b730db2c13c277e06c643e0d0fbea43833de4d2c7a9247ff040e9c56f1ff7ea92049c5341c4d1478a14275a10119d934e8165152b89951bca7ee1399dd8232fdcbf831d8354640e698b68799d060ceb877201b2fb96cec514affeb28721e163e1648164b9e5722271db9b0ee1a7f96819fa1b1590e9daa598d9571ffa3882db9d034056e9b2785a8d13686eba61d7d45cf2e9ecdbc391739ce89297211472be18b21401658c5bf29fc3615924382d802a166d05dafe7876e70a0d081e80c63632da379766928a0555eb5e7a238cfa4da267527c66caf34dd40055f2801b29b3f5604a5bf3d46048bfbec2e24abd2fed2481698a4b5cd71f5d2c12dd473b903c9bdb978eaff7d76fb69951005681ed7b0257054eb3dd6d10097fee51ba7e8d565925e4091cbb78d255c9d3ab4ac0264d172c9bcb0908db1288c9634248f198a1167daa323822058decd83936985f83b08b1e7b942756a7af200af168fb8a091107b4443fd649cdc22106f9b9657c69f19be485c23b2c715b3762c332eccc44f380883357d10019f20612ab6b8f155c2af9e2ec340e5d8f45bf5278ac1fbc9f9f44d2f615d21007d822b244b1c7a0dbc182c7f5912485d6e4d74e90f60a2f964e028c63d49c6aadbf1df170e4914ca514139ba538207b1cf7caaceed4db8423dd1086b2adf15f6c0e50dcf2e12898f53c339a745316904ae03c38b417bcd7f5cd5ea77a4f06e65d56c24f37ebe72d271ac79b6ddd2bb8bd67f0727ead49737aa71af4f620da53769ca3ae878adbaea5a249128074ca3ddbbbaf5a68f9cde2a0e8d69708b0ea7f4c8d2dd4180882bdaacccf2a409a681c551776bd10439fb12b7548342532b371c0e045d8e8c895929464bdd4fe25f0533c66104daaaffed52446094978bcbb389c", - "001084c8a5175c0ad43108f9215c35886c82321c800740c6118a3fcd45776a4588ee0e2d056a37d99b40d2bd9c0845088a77240b7e65d18fef105d3488c77910b5873dbbf275948db5", - "d614d2e671066e387f7eee07bca9f9313d86e6a4d1371360900d670e11ecf1e7", - "674a516f8f59f9067e0485e3", - "1ee376e9e3c89b2147bcf75480ff0dec1d0e8cd45ba812f34c84124871d484b4ca87bfc8cf99f85ad452c482933801426e2737a97468809fa36caebebe8eed07a626b3bc3614ef1ceb54f9221ecb16f413f0bd9ed4b3010c40632f05223484af7bf5948c2fb8a3d2ce04c53e3f2682494f3969a0f8eb738cf93c0141799c9e6b68924433f0326991e19626bb19e6fbb5dd46baf39f92e830f9b1ff465a007f031891fb1f1799cc122d3ae7a55624356b5297bd5d948d9ff2e414cd8adf00a53524df43f398938d33c93b2c06bcde2679566c0a7b0177b4a873f35874739d550712d5cfe3d25c19292ba97c01d84224738bb25546e5c252fe5e5f260ca881aaf176a271a6fca2edbb2cf23ae6d4c56c20daadadb8205c2e33881867cd67ae6e59132edccc3601f014b744ff8eb6aef5e09b358607695d3af42ab8fa30e9fdf99ce54427ba9da3699de19f7a8f9be368df47ff0607601a91e7a5fa6e72be50bb32b825427cdeda3972a18a23af290986cde14f5fb9cbddad336f5efcd2d7a0cf3d5b23e54b702352fd5ee52d7e3479441497d56e17d5868574c56cfc421ee47bb00e9c75b84262a1b9e2cbfcccfed9c4c386ef0d2c1be9a7b7556909b5d72a38b7258acdd624de2396c75386e077c34f005f92a2203c82d1072c8998f03b1df22de832ac733977705453b1d72336b8d371cf1ed3923f462ecd22075de5df68c83ab1e6648ede7fd5ee5794a744abcb32af73bcb182cf97d36f37c15535c4107b7c8f2321f9fe0e2b6ccbe74204df3d748c05bc1e0e2c55ae1aee2d4aa4a52e98ca7229d6d06576196ac8e4b14a9ce807075cdc876aaf904c9962741efa8c6caf41e6b87b2ecd6636e2e58f3ecf576e5d8b895162545e618960ff6e336ff17eacd5a1eb335001633fa78c41ed05466d904ef9b81b643a043298c0e291a085e4e67da72e329adfccc407f800709865147db49cbdf4232073b7bc7ad89b3dd901d927ee08ae6497e0f2f9d052ca8d7444d2e2ae2197f930a7b1c8af38d8739ad298464169823684612cb628c484f710cf9c552551b6837b575a43275100bf800b7a3d777adc44d07f67cee5000422b9049dcfbedfccded0f2aa4d189621579b01e3fdaedc4d772dcc593316ca85e7aa248d219dac21c561d318a4936ac0d3bd5c75311486c174e0e2182affdf69bdd6a086534e4a602efba2b9363beeb5346539b45336cbaf479da6b15b226a9ac026482216dedb84ae3443b306820d9f05f78dca7090d727c7481d82c6e5df80e189e24e46f5758e453e542bd91a58eb51a89e07c50afb543c6b998704432e863dc4c0d0236e0672835a7b0b64e14f5ced2904e54da4287597f920bb4d542c35d3b0271cf0eec055656d523d7d2cbd667445d3e8634854f8616b7d7a7f3e14fd32651e9df40e1daedfdff1371f16d5549ed5646adf2d417e4b3a4d145bbe0974ab388c2716861a08296b862e4fd035163281457877eff89dadb160eb2b780414435784804bf4fd36602699d8c2f6a8cbcb509198c38e2df2edaae7bd7c93313ca98a9c2d24419a12ce35b0b3d68c18840e3ff8739d70969927c7db9a6569787bdedf5c99948a9e79b2302a83a71159f4c789b3b3f05f1e574f8a24c899ae3457f8e73f9bd86976fbddd83b1af337eb8da4c0dbac3792921597e18a2fd3a0ac89a270794529d370d36bb6dc7452e754e903781cbf57c8646b92d5d02842e7df229b3d721f9b981f9d61a48f00e53948a5dbc4f739849609d94aba3e3f5f8163d40321576cb8eb8e89953b608a01184d41aafc13f40c47b12240e3ad49413473c26b6843f4514be221c2af632d1a54cba230457f23f00b2608485c381ae03b389ad0a1671fb416de4659cc7f7a9c4b6d9807789c307d061fcf613b96a2d79e5e3e20b863c8b1b75f35c982b40ac8dcb7d2712ef7df94901facef783e8015a9a48574aa6f0cfb0bf6c1a3409028f8d62137c347f5a35ad6a3cd60d71aeb29bae56bb4590f69226fb4e08fab7a9f41e58f4d5784540a70e7a97720c549c8440b089eabd0eb3e4d37a2e54b1160572ce568f4256dd244decec31fec555017ebf488e878945383750eff26a8a1cca73e7d6f52d8cb229d5603360a3bffec23029ee34145c4aade82d486758e0aea9e1b7bf0b4bfbd4fcc96aab66a27fb463b48c6a6c5c5a60253e2fbc5716ef55629277a5f3b89c300e21bf1226241ce0d587fe3f5b11e47f35614169dcfaa375ee1aa589be33a4363765368f5666d155cf72e851d426fa67b982aac4dbbc29356d71deb0715b34e00b9fd8876bbb09ca0701b15615f05cc45e128b3864b26003e6ffe801c4e27402f37b8997e0c29ebc273dc03358cd22fdb68d9cd3b56ff8248a727c2d4ac65acda4d0e0f511bc07ab06cefcf444f1002c151b953d7f7b19695668a86683497c2a2d2e69f19a4997148d2e8d158da859c8f44437d9ce9db92f84a88e89cbffc74c0ef4295088e2543a4f7c6ae9c908bd987bcfd7a074f83ffaf3888bd7f430dc5a5bb70d223c21b1bcd8bff2103408460df864dcc168486f6a66d67ded366c6e10f50bcddada93627cda711764a57ec36035ebc", - }, - { - "ce72c93caa49bb9850774149a87fcf8e23a0c53701554468645554553d54190bc6e247712b02097b794bc421ca94afed34742435ca689d2ebef183fb469c060c7f4d7daa508726c9d2eaeb9c7e9a89b30faee8d9168607d4778acfbd27d5caa623475073ce763ca061273cdfc2c692d1747baa8a01b15f783b2e36620400082747599a16cfd6b630fef310c0b9a2912d1d3bb71eec16972745cd8a49cd927014eb0a2abbe0e1ebded4fb9e8d9e2fbabb6a71da5688717ecd3e08160b9a861f86904a41702b2c4fff28ed8cc61d468187b75bde3fcc5c0c0a642215fea83584387fc5a9aaf2f8a91ae535e0027b618a32bd687289c47e9428a1a92649deab825d702b076223b07c08e55c0b60be95937bfd0504c18398e924420f6e20baf07e2b1b858d3e360a461b66517c24e60f9fe314a4a4973c8dbc7e9d2a9f571a1d8235a21073d81ab9f4800b70a5f17f44d593e8792a2507e6a3a41042fb2a5f7e5f028ed2daa88cce28973ecd88bd125d50fad77b1fde61c38272057d9c65fbfc6789ce41315a105af14e277a0c39d75c34aed7538c39160eab1c8c47818743e8111229426c399c5e88c4d894fdaff0315ec885ea019bf9acb785f3380c37201d494a60b583fc130bc0eb9fbe9b90eff95874e35910dc05c761f8006e2f208b786aeb2eeee841f9a82d9966c82956c181caa4dada81dfa2e2d7a25007c2dc7f2dc7ad1bafef14581cadbee4d614a557df4931b9ca105bade8fdfdefc0d96eeda11c08500b1ca827ca670ba07bb0f85af92914c43a6f71226d6e112d487f1ae99b2239a63ee2cd0849d8a9c488a11f82ca334604a2b7260f25373c6db75656527890f9b772c6bfbb9f687f27099ea9d4d1efd874a6ff83cc36c039ed1690408f20394692ff054d9e6eccc6776b6f4b3c5f24b0052334d159f40b470a9b8799bbc0df4dbfe59a5e536624cad193160ef23abef85df2c9b6e6d4fdf16f848a2a446a77044f1162a278866c491982570cbc16041908cdd0efa2cde011526a3c96d4b39a23c5fcc53d8232869cb4dea871f4ac8afc795aeb1b28cb2d7a3669100a1cab2ee1a7f31e2a25a5c6da836e4b771ad57393305faf582adcd26045e26b618d9943358c615fb206258c8993d700adac7440dcd3ef34fdcb065e10e9c9727662b5abee160aa01d2f2ca6c203a76fb01bb08cee9fc1eb6bc7497bb012ed2774a2d263b9dd03d60c307ccf33233ee33eee702c8e3118f9f86174a97462d0e804a24bbd7f4f938c7f105bb23399967288069e1637b60f2f1883d88ce5a874ea4bc0a7ca0f3b568e4bb1407e4bd6f0d3dc8fe91345f8435d7b1be961c45e4b0f1ef2d92d2d30bb78e1fbf72cd2e7ffae76e8c2bce005195c2003bde46108f37ffacdac28fd67a0de62970b347f0ae3f5f3a5b1d3aacb2fcaceecaf2ff4a2aeef6f5a176cc1b74b234f5658ce603bc353e075278a4056540e43033d37a6eb2615453d8206f5cd294423811283bcd5d79c4afe268a547b98977ed5cf24c0f53a0533bc0b2889356cacb67e2f7353060f9e04362859b1c1f02f96bf5457b58e5ce84a6810d39d7c7f53faaec64db5d6ebb90c1412bdd503ec6bc240c277ce1f5f18876feb24eb6a77e5193e33ce141e8720329add079dc9735f0a35d7d85436f1dba6dcff9147777760b5aa2ec9c8b5e9fb4fc602ec8f754c99ab2372ff5963dbff3fda91865108e606b214cf7acab875197e78060eed52a798751998ce7c73cebc4d5f429f6729a5193d7593072d0921ac8127ba6e796107ee7b9fbcf7128ab35fe9f6fe501fa4695c19fd64460685f287acacf5250efc13899bcf80ad5a340d432a0b9449affda5c8fa090f008e01873aae7d5fbc7972451542c5c29cf9cfdf23db736c8a7112536b1b626caa63f3e4117044cdeab612fff8d8c194d19174f56ce761f6587349c48fab30390f231d209461ee7e18007d10d83ea5aacf199f3b00003259747b1d03274d3c3670595604bb4482d345ffe31d3e88c70da16649a2677bfbdbf618de1d651a53d573aada2eee5c01335ce5519a6d18a70f7ff0b1e66bacc162c49f7f29b9d3fe2c7dd85b6b355c9f9141f02baf08d2be87c36f6d2e1b2e90dfcd100886e306b360df0ecb146a6aa5ac5ad05b63a219ea65885894a386248254348ada17908d776f9b438306ad28b208f80d6b9b265500aead945134b9d388ed5d6205edf07c5d8bbfe0916d0943750150e09c76359d24e3317517ea489fd8a501dd93f159f07d19d00e86d952fbdba2db771910143df346b30a30fba908a1abe5349c3f241958f428dece7ad9a91cb42035c43573b87b26c2ab216cb4c21799f6b3d81acd300ff50edd6fe7868b9ba6c160db3418565ada027b46b63e5d4f3411284fde585ed3673b424ec1cdea678e4a43c262991c3c9b988351d6e0a10af1c959cf21b7a288f2e4d7b3b2c11b400b5e036df71fa993b72ce48d0d8598fe4ef1ce70a970f89b55cf4f07906a479bc84a08bf6ab25221de37afebbc47ea0b38b87be128737d7d43cc84d336cc6ffe1677bd802910a2084751f30398dd0ed09589b2befd2f3b40fbc013318c822fa2faec2323fcc52b43161f47aefc557e92df3050dc5f8b1c5a4b2f8bd7b2ba7aaca79dcfa362fbe7781a2e261683a4a862d5f83e34845a8fcf8a1aa73cd521e87cbeb71f20b20698cc34bee3b8628b1a3784596c", - "08b3fbd73d157e79ea9f61665d19867dcb8c1598c1d37b793606936d8aecd992a0d46addeae857d488b83be5d1c1639d4d78350e4cb08782b61bef4107c9d3a79d3d85", - "a56f38b4bbe83b3d9e562cdf5ef5b30593f08a1a166676c4fb0d5861654e640b", - "8726dc5cae9497936658f603", - "88420357d1ad70e7c7bfd55b3cfd4bf06cd4e9b4ed5cba681045199a06985956d35fe86b28b9a4599964930d05d230a23c55a6a152f67082a453fc31f68489df05c553f9ae5cdb3f611445db384d79af865e52440a876fc4153d896b7a2318dbc2a4495ecdbb2e9dc68022326d35289e82aa55197aedc266dd91ba3018c7b474ba22b4e773773f3e9890ea84bc16a6b235e4bb69e785c40c1adc15b0e0ef03aa147b0d14e62341e27398b84a53f72c9199cc1c94cbcad2bd31aa69c96b06d01775b8c0f80278a43f526664bdd430164863c9c9140ad87798a5b8f38dfe90d37f54d1137709d5311136b728e6c799da244294daa4c8b44bfb0acc603a16c088a081129a0d2cff55ce1c4ccb486fa0ecc3098ef2196f47c49f9d253112bd5746fd99df5d2be577617dc2519c0ad04ee49ee1d7be3d50492017108fffc9a414ea227af39fe49fb2c895fcf00d927bf4a2d78c466fd44df4768e6775d39fa5c834b60979ca27ee9f00faf37a090838f56275a894ddadd265a8d2de74265e4d8d286639ce8f01eccd4f551cf6b4429eae3f08902b6ce6ef422cf91ce8946d9403fe8064784895b62a7f5df76ea294132c59da6b9f53d4195c1e9000bec499c14cf8bad460aebb024a76ac50616f0dcda71c0f56dd3239b11764f3ed6ed06c049b2ad673e4beea391dbb854fde1f01b1900858b9809259f3906b34f95a1c6ce8d24fdf0cf7c2ab7bde2202a7f1482baa6e51caaccef9f541c377da620bfbc63955cae0e6644ec8ed6878f704f1dea30d6b50d4291892bad19b0234582d50c6cc0b4165322cff24a9dc2ce1be35be0fdb3bb7abb777ff0b2f4cf16277388af5a89220d59f1f45ee9cc2a0fd7af9aa8e9e8d548fd65be4e47e7f8ef58f7701f93a42e7ff78f70e807fb63513157fcba96ad9731b2e8f80da85ef407d5c368ad16f0657620bfc122ba1b10d7ac2bf46d8133a9c6fec1fe04882f3d5765da8f825e1984a4313f72b67d806ed45c000dd3ddedd524d474b9b5788547d0712e8edb4c6c586d0cdf8f2384f1e093a7f6dffea6e79df9cb9398f5d0b9a7cbd63d489430fbfa397a0d03ef916b7702f33a54ebab84a7055b7ec6179b0ab7722f03e126ed343b1cdf2af3763df7e3a070162535514b01ad86c6cb051859aba1cc4766b12c8cd57b73fdd3c65af6961c45395aa7b885dd59e115db885f644e1c94bfa26b3804f767601c86e2c7dcecd4daa59955e6a40991a4b4701e63fc82b46dc0ccf59af40a8583171375551c868436ede535705f2e6380c5899cddfcaf9e94314794bab98846cd5ba9e9afbdbe1ea7fec5e22e7b2aae59fa598f4d6c0cc6f936a616e11bf01a2acc891cbfa2bc53c511a8a3a3da2e3aa5907d123ab2a4a3c0009fdb5235a3c33718fe4c504e1539abac6370e06150c402b5fc2f8c32608db4ce2eca9d1e4b96371ee195f6cd632f5b972385f9d5d357b87c78cb4e2c27aa9851534de14de923543f5fd9d55e34d6e8b7e1f3f2735df80046de01f79d0321066f9bbd76299c7386d285f7bf4ac15e033e89a040710c90f87aacc09fb8159f93c8b4860247eef079e32d05707e88aac734a2eadaa853f528d9986e0af3435b5c5f44ddfdab9b0c9ab3eea97676e920f80d1794740067f9b229fb018c804e595aa997533a5e967cb79ee58eea18995a90ac08333f1c69600b17ef4f454f540dbfa8b502457761bc4daa876d9053ae1f55001b6916ce559dc6268d01841255990e56614e6f4ee4ce04472dff0657360d75da4e83a71c852a2585110e53137e91bd89d64d99b5614ab2a5691c876f15d9931b092fc6729c0732db5cc40f966fe440ff99d7d05b24a872f552c27fb0cf2af443340b153214b407fb9ca3750d9c157aa75763b0b7600959663889d00f392d6ebc12835bd2f03ad802a21d0228f1d2e9731d0f0051eb2d5369ab790d1134c38e28d2bc2d5d57d6d897244742c176559961a1e40c84ee5c8225c8d72b92352a011e3785c262aac115cafccc2fe1b5e81a677a0220f207ebadd786b93f58e40eb6ade68ddda5b66c5f0f6b4b95cdb8241156110ba3303beb79acbd54423315768bb43b4fe8c4a465e50c4e63bce272c4d731ea4c797e14b2de31ce4264e2479179b906f67af4a23c56e817abafedc2c7a65aa45f0c89fcd0baba60561a8d013e2d5e0bdf9fbcc1346d3edb20e6e9f9c410982e1ac43039ad8fd0ebd453a6788376951fc20374b59946a6803498929d9fdf2e0f5e58c441329a79d1232e957b3a9ed17231c663b4819dcb6b4e33d205edaeb7d7ec466930bd84a064b40aa67fd76f6ca005408062b45b5aed6f8161836c7160a8c8313dc9aa1c6d42c2c16972a1065e41aea9c58db7916e1670cb42a8b54d85498561b4401761506860b19b446655f8988101fb4c45067e30edc3f00df8d88ee34111dd6626d605d993ff207be09704fd8dc242ce514bae77cecd20f10d4a38435a3f5e545882fdc224586a04ca6a162e118d23716240fa67892b78faf98a17916471f7f121fb9f85497a0b34bf5aaa4ee1ed8a4681bec55d1b4973d4368600115bea70f20a37c9e942b87f6cd1e2ab70fd401e703e3c8334c75fc338508e06d6370779578fbe737a75954b4701bfd92028ec32d3d7ae606caaf9f049d9774f70efa707c1c1174d9fcb5b0a0ae2a961c6f58e48ba82c2db14ebbbdc24288e42879f547b855c86dea9a3b9877e4b105515bd78cc43465", - }, - { - "bf7884fab52251e202afd7b5b46aa53f85bca5fb80a009d8016e276579e401385d853312a884f4aa33cc5fe7360426bbc0ccb7416cc0196e2e40d3a825d5e0825a1394029789acca550bb28b10d847d0a4fe1111be2b7fec6b5294902775128288a784203031ea853c9c104c75571d19552e2a1359a900c5fc9455230968a5920f2ab23f5b9cc49739d4e4ae2c01c7812ff295899b954e9729a3bb330b60c51a8a7759e5131d7d4cf261fa1e62c29f91b4341a4fc968e7f30ca2261702eb328d628b7275a9efc29b50bcb9b27e5844328d5e8256c76949d30b6fea0d5a1c9abca80d3251fcf4ec4db0a5ff2ffd43618aa2e3e1694c2a3c579a2665f443ffb1eb0ce33c09d7285687cd55b6ca9918553bfb36a44860e09ffa0604ef4904a034108370195a986fe165c598305eb08599abbb3df31b1d93162397056d9ba5a1ac2812c582aa356310fafb4058abc5f157802e4a9b4bddb16e75b6db105b7dbc838f820539b76949b1648909104efa67ce28b16a738f1be104d2bd142d3ad1b1c953b6020a1f4cbb84d5c49424befbf2e6ac5c593b783a3f4af75477312528fa78dffd82fe493d821e011642bf1135a5be91fef909383953308dcb61b2f35c2ad259acd1a2e953c0ea6a03a97b384e39c94c33d3846c26b4f9f116abe572d5b7cb81886d6adc2d544630fdc1684bfb32972e051b9a2bd0931de63e025813b923944290fe1ebd5264ee4f25569a2088314e8d4ce8b91c7bd602b9d85acc917d60d30d5ef1cbb055b9ff7b0f999b98caea2517d2de334eb436078c90d41e0e34f11b93e3e643389f43b3afdc4f47a7396cbe0b4bf159ff27618cb835aac6699be1fc7ec840b767836a165fb95d06f2cac4fe15b65714ddb8a095ed4a5b57e63d536405931b6c168683763fe07c32aa4130bff787d4d440746a2dbfc584a502d809076b257482abf7f8ead7741c82b54c41acd41581148aeb4149b0c6eeb39ef7ba091c2e8bc72583b2fdf8ce7fad1bc05aefd6db0360c644a9760a9729a88ee4b2ab123d7238c12435b9f3b4660e74c0fd4a9b00aa614453d84fea01f779e5a924f8e79630a8bb6561ae19c7bc8d88b9d823b98285fdd65d4cc05e443944ed5d3cd4f46c7cafd1dd5deaa519772dd24f508bd2d588a832d5689119a2d506ff11dbf37d57a24e35ff38da18af07eaff5775d12dfe795fd3e1f0ec83c5f283d6cd76532519a15a18d93431893b1b88929159bf8fd21f62b30f4e37d540baab0e30ff3349a08d627ac19303fcae8b8e3fe44eceb66d30697c7ea051bf5afdcd8bfc00d49c8d36164ec9194a78a4d8b78826863e93b6a810354861f4a35ec12e5ac102f74e390d9c0227e67acbbe3254e5b892786e3a88a383ea9726485854a319569a678fa70392cee90c9aa83eee8df6800565bb8e083e78a064c0f8b863120efd799ea57d3073663c0d0e7bfb9b717ca1d6372fdf75a77fd9677791cb899fc8033d6d806de1e6aaeef525ea909666316d9d604c1207cbeb6f427c3acc1b02cf59704fc65135703f2a9529bb2c8fec992c4de53e54b029c3f2a5fdbec1008d1a70dce0c11251003ce62af712b9e4abe631902485404e4933f346f1b4467fceb65baf776d0078aae6a2a1f95b85a441b635663c75b485a8a7cb9a5c12192ac874d940e2d9b88cc05a2db9b5b35df769925da508112ab0b8f64a1408633fd0d81810baf2c846b222736bd826c8cf905b2c35633d6013f5565e0a5ec1492e99613f53530799052a0d70023339d1c394fdf9f73a590a2faf68390d2a823bc3e47a173782b03dacbdadaef1e67fb47a7cad71b6067ce5b5e41fc20ea1fed28578e9bdfa99faa657a754488ed3fc084faa7a05b0f6eb66da0a28e9ab26bb319fa4ee993de840948f94dc1d68d926b783a0bd3396a89970b2c2595de8148e87b87c21f664618af4f567115d403715c3d7d2f66d7a90de2c5237893a4c18c20494e3faf94485ed39ecfe972c36acef0d7ee57bf8755924c790ad02dcc5c4e15aa7db53eb6040244c3ebb7874676782e54dfdddc256018ae6af8cc37450a4cef77f21e2e061062ca0c2a514290c960f5993ec1ce9eea6d09d3293118237e079b6015b966361c3032368174d74ae5cce4148ea2b3690fbd3c28ee544c5c5bd7bc618122979d52c9d3d44eab1f2467f338e695ec5f95998bbe77dffac42bc2809d43a324e0f5feb4ca3d5fd951b7dc8a9e6276ee080079b68849b14c7573cd02c76027a856165d1043acf99554c62fe32896d120974ae71f84986bfa0c28fcc399246bef3ab90f8e55f913aabf339dd7ca6f0861a9ef712e77dd28740615479f39a37e746c7df2b267066d1649fafe0459f665f3d5e7124db43ab1ba5ff94989acc7fe0935e0bbacf718b33103a1355d97ab416d8263ab369e6cf0ee563a77f2f265fc3856b7d54dc0887ed439a421c14f733ec1d6da086536f9539d23cb8026218c5e783423b5f4ac24c8d5d8faa7186dd5ea34afe299e6dbed73ffa8f415da706442a48808a9342d6209f65ca11eba76f8ef26db890da76671971f65bce9e6112c8aa92523dd5295d748e28857acff408c161c0513b37b855a8afb0764d118815bb1b68f8f09156641f7eea994ddea20f4062607b9919d041c880b71592402a4d5b92464b239caf431a99dc67787e76b8e1d7337af004bcb88473cd16b3f7640e8aaa59ad4609f060a2cdc71a4b3ed22c1506a7050a63bd8ed68aa58a8109980bb3f2b9f9fba9599d7620b8c25e8aee739095789af83529cfbfce5941d7f14c8ae30583deafdc7c25fc34e75bbed6ce4f6b47e9647c12333ce08c7db77dc94161cfc43f7ea0bba39def8bf8ae61c6fdcc0de6308af963c6d9ef43916d0cd2cedb970d5937c9fdd4b888cc66e99363b5a04ae62a4349f01c3933ada64080741b1781754e4a722303faef69e382cd9823177e4d5ac83e76017124a7b1a41bcdbb9c4209e7b42c", - "eaae1c53919e2029c137a80f91704d0871be2c1870d0333d8bcf7f94", - "4c434cddb399e52457113cc7e16f046c3f8301f5b6c296979f8a091a9ea557ea", - "b633c1a0e1ddf4727b149b3d", - "f1de487001a580cee6edadb1ef6b700c861a70c6ef16274447b8c61bb10d2d1efbf104d5f7d7172c6a5cf9c06d886165a2919ee9418e2e8f803d47832dae5ef232ee300d1f973a6298c22d777a1b16264353cc731a7a683cfe31e0abc704460788c555c0c24f281b81d7761235a955c736f17f213a896b40a034609ca8456ec3cf5906d01121b7580ce19d89347b6a59c81add318df487b2442a7a8b5e30df78467abbf46bcd5ee5b994a39ca5bd8846caba6f02f4f1335b73d4e20be0b6ad85966f86d1bb857713ebf947ae936782f1f4929498bbd66bdd5ad6fa252364a5a6b46180e93b54cc321b3cf63cf23d55392475c6b8c8c9dc707924b55544151c7c55ae0bf391f793e52bed70829fcd32b2926600f65be0943d6a9a96547675426b0dca9cc7b0f5dbc9d5439d0281014c6c159d055d6bd89d67828ba7fd2a0570ba82996037f7dcce297fe6518331270f6fd5ee63d406cc5081472bc5f2298a9208dba9398ccf807ce9af982885897715b3c5742456f756d79c70434a9baf7b4b6664c9d9f5696c5256b74099e593f97a2d4a469cb3430d0c3eb06083398cabd58af598945a85c9235a3fdd9ba7686e54d0de9afb594b1bb030be8e6bb839f6b45699dbcd2f771db64b0c62bbf6c8672fb412d60c00b3d87f82ffff6512e8308877573323c5a2d6a216ce3e2ce07c9763835ae59d44d7958fd873e3995b62b1b347e489ce86e023ae27a6cb03ddec27a38fb233499a714acd89232a91d38abce30299f38f437f7a46df647f2be862c1e7bcc1e4263c2147b13ee5b345b7fcb973f3ac71db8bc12309f67ddb62659bd73fbd20664eadcd23a79233386aeec1a6fcc8c592053954ee53826cb9b6bba22400648887311cdfa5414c96d5956fe193a3729be1434d923a3f9849f6c419f77ea05fb72f3c4f75ccec03b7f7aef8c8e55c8c5480ee505ae1a7594e6a911dfbc39dbb0ae8656f5972eb644c64203a920fe0078f3d050cc5666ed9747c23df7853d6913005d0156e741a5ead3bb1b22e5bd802c303a73a961f0b60d0fa698041c22577b44eba5d6071de4b545d9f5de24944c151de6a189bfdc223e0507c74ff929f06a2e7497e8c63073294b4aba110a006a6e9510a9617405d9ee711831e085940006761822672549d1d1c70e50002c2227f6f304b9a7f11dc05751be2dfd297087044d2e20ecfa0c091478d62c1bf5f0aacd25bb0384853762a51144b77d30418b633c4c10a6eda7b2eac46905641da0b685f85349749a91cdbaa4027fc50eb97a7dea9e8cbb5b5f386ace0363803ba579cd16ef80dc40ba1044b4ecd0e81e382635d7855e2341b18e0ca705ff46990282fe25093a248ca04a1fff64ebee25065350ea4b9e5990da4dd2e28688ab08b6d6fcb54d70f6d74fd7e5e05d21c12f5b140839aa966aea9ee094a923ee5ec704b5b709ff009c20ed89a75468c48b505d07c7a5ba1ad54ed610886c9d84468eaa598c71b017578404c909dbca431703e0cb1cfb975a696a1677bc015a75db007eccdcb21b9e5e119c48f148c2cffcf29e245e52156ba5ba0a8b0031570e4cbe7b3ac4646353594f0c4a9424c9d97845c5e1a4b4016df9be8df3013e5269484cf32258849afbdd733189ea11783f0f64d3aba9b4f48818011e868cc03ecaa44ff0ab83ed12981a6df445294ff672f3a16d6e0d19b90007d4646e967e0fb1763b3c879f548e1103a75c94f3a7f72be78555eafc086c1c58d1761aac60b843704f234c55b951a1303a12705f2120f784c2bc1494432a94c835d908f0edd5cbb169afd2d38087ca5bc5e5df9c3bd970dd2da4fb2a00933538148ebf669a20b5beef0402e53dbfc3a0f289b33b41ca27eb2f036a22f0d02e0617bd01e8c74be264515c9b46b9ab6fc67403a35837844580794088a9d3c14ad9309435daa0396f48017be524856ab6c191350529962ead64bab33171a01bb3c144b23bed406cb05102c693ce5df36eb541c47e871acf56f2b47de687eb9b3511ae83d06b1f69fbcef3225c3469c304741437fcd0ff4ae3484c117f51d24b6ae1363beb7d85d9b61e01e3dee901b90f2d3272eedb384ddb4d3b9594b9c0926595e500f8ce2e5cd407bd7a4e2c8e6f4315bf693e8c961ba5b8a6c7f5030c68a6b995e9d3f9eaee9eebc9d679eaf72a5f1cb6b2fc66edc7dffa2370dd778ea7ff446121999afba7bb35ceabf626c6269bc466d65f7f812c663bcb2fd87d3e09ab7d71e727f66d20ec48a5d2bf0aaf0aca05d1546d6e974f90df85c1393e3d45731f71ec7b5cb6cfb4e5c29976ead6944a99df2045056e198b19905362d4e9b765adb65eb089233a8b3777352665489c9456cceed593c6590d9f3cc4024d0bb92e1a0dc619bf8ae65be77456c18f8171e4d2d846073cf5c57ba93adbc0db9799e3d98934aa6899372acfa4d7d2ea32e20164b79c71d7bd33c94f9a781a25cbcafe563462eeacaec0e8d9d6c0199de85558a3a05d1ee3483351915d8a4e65ca0ab129a2386a9e26aff9b912c588babbcf25f8c467145061b9b8fbbff19d8c6ded8527d457be7c926c8f490bbcd627b3002044b7729a52e94147f95772591616f6074047e758597f410b3100f9efafaa4137dedfd0edfa85b0927804f0b4fcea1a174622116222004d42b36c2c73d04781f2f49d080f351e57154a3980005bcfb0ea34288e2fafec5bfd01e1f7901b3efc71ae58bf8df4cd7c045856103b77bd78073f0174aaaef4a3c0e8b5b46dc92db55478f012dc1b7d513e215e735573257f105d2390b5366f49b61809033c13ed4e1ebe19ab89313c947f2585f0788a0c5de90b41ad0dbbfc604a0d414d0e5390a0f3c9616cfce4097e38e05888b8bc6e55e40368bacdba7e5b76f4bd8fe619746155c30b38807a1ad325b00ecc3dbcf23014e79f1c39af7cdd0dc7ea58ce733e6611b7eae069deb047aeadfc21960e614db19d2e7e0905a9873268b9a24f856c28059321a742cd6cb3d1527", - }, - { - "c89c3cadc094bffd5ba06c600dabe30ea19ad037316fc13b895fe0e14ac8841264c1bf25557e22b01f8e102c3af43adb8e0a12bf79d3fa0232dae37ca3688e07294e2c7ecc4e2eebdd3f17173351f2c15b0480d4d77bd70955ba86f82214004b622cc92f7bf81a5837326f6a83612bdf65abb33c268a457c45cb7467e074b342a17c711c748c74abbee31541444020a9ecd4e5125e2a8ea3f6030bd677be18183a8a34af16a85ad48b7015cfb036789c0a5daf68883d0c7e401754b8d56cd00ff605be0cad19e03989f608392c81d636de859e66c2aae403c138bb96a58ba69b9064a83e7d8877067e7f40aa0016e0df9b7f455d292a60eb621b8107a727a3378c4b7509d3ec10526c50fc6c66dd4b015c915e85bbbf701ddaf2258119c8b9a5132eafe61bbf38870f35f375123f766ed0d4f38b9364a86e56cdef6f95a815a8d7c48ff283c77992fc6c070eab7d7c7b517006e5d4af532a7c429912ebaebac27249b4f5112d870d998e1c450b98c05d08c742dc769506f2d7a004c24ebf84c10838b619653e27ffcc4344d8db0435e4cb77c0410cc734e36738a6b5f72a7600632d19c86b40c737830b0f5f104443dbbb031dc7ca51ab318951e7817b5d81de8a9aa7f5db6e2d5e7a3cbd8a8100653c048204ced3af005d00e7de7b445f5acff901c4d46ff133e92ef073aff1d9ebf55befc32f9ec38c9eaa6a1aefc974bec2758297e474cacea2ba4151ab1a3ca0762c64a5ca273169d29b83c164f77f266c01bd5075871e17426068ed7aa58ef0d1f2959b19c604eb6187acc57e2becea2da93ba23159ba73b9226034c7ee2498e0ba34fa8038e5e2c092a73ebd9329ea3d648d6ebd47e1776941ab3130cfc91089fd0a0a36f0ecf68293343f275d2a64c1b7d27ffeb3f667f4a19824706235fa5f3f04952ff08bb183c0f1aa1d1b0edfd2e05ed093543788f5d0ac6532e15f912163275053b202d772f381900e906fe070cdb00421e78c16b7387be91adb7b3b3ea28b92548d69c780ea578e7ac66eeb931eefb4067bcabdb345a7cd2022085fc494f118215adfa2443630bffc9faa8fbd9943c3140d81c7532895734a9dd20e31c326531d06f5623c252139c4cbc882640c457819c63f6ceed4e03872b246a3766df69373ebf5af1116e8d5e1b15745bd9dbdd663fd4352d1238a43d5d1e74b3edddfb1c9d460daeb49afccfa0712b7a4cf8d07ccd0599ef3e4e1c9b5c814f3a6f3a46fc80449b34df87f47ff91fea3618cab2d5c04cb50e8ad199d752d901b21348ae939d39c86cc1bcecbadcc6f0e581a3bb51e070507b41ea4294b35456c69cf55a2a3f1296f0df73abac3a9c81cc303d1e20ad6e9bef48de83fc22dac2cfc01ce9ff3f70e00ee49bab2f282ceb6859f989075814e690e36a8d16354fd6056cbff49c30e49b1570363498531ff0ad0979a4518e9ae271f57f883abf5e301c0e24a83f09335479698911bca90269a28c0e040a98e67c9e55f4c91542f921511dd980270cd490766da22306b48ca9309aad3b2393b7b1e9ac7afeff64204081f9c0a8f6a5396d02eb9009901ca2c0a75ffbdae3a38ccd5007cc4f6bec8fedd64086cce5c039e8abc9e23bd694fc8de4e858c89bd585ebdd422b492eab26f4ebbdc1d17dfbba19b5ac458c31320a161a52dea638548205a6ad4ec54875ca34238c059177bfab2d5be0a98d12b3932d0661d33ec655446d0283224af8ec7f1c6874add03448fd8029a71d3c5aa06951123c9fd881d435845757df50444e6cacc31a8cf7537a778d1184b96c3512cd474f5d1fd1214555789d24c8d173358e36400b2d937595109729d9f35eecb0963c0da60d2eeb52a778876059fa95d820d5d34e7948d389dffd53d34c4083d27c917879b053cc57dc43c8263e5dfe5f33c19dad0a7126ea6e8abdbacb318d37c305a183596ddb25b1934beff13a4f24fbdcc2064de8e0bc639e672ecfe45692e9f8164365e1691784b4f775ef369aeb135ce15135c20da95064c810592ea33316b9767caaef842f948b9573b2205ec57d3026a2f2244c42991462e233061549cf9bc66a7b4a8a0fc61f73883fd24dad02644004989c4721a0aa03d3b0191d7fa4d3da102e541fe463936c9365ba30681e706ca70cb3c8ad5dcc710de59e7d8a6247aa809bba74ff4dd182a38bb31baa337841302c19ed89d65e87bbed05465f4ce0dfe89b44d7e9266a8ca21d984c41109d813ca76eb67dbd4e39aa437ff98050c968ec1e40c534ab51d6b8ea2309fab08b3757e9edc5972bff316f6f2affbff458ac0299613734b30dfdad20f797d172cf295cbcfee3d8ee25485d40380d3480a9372a1a6e5ecd7c4c6a9d34027ea6c197f37e86e757750c9fc24cc7cf814878b8628326c140930dbb2041bd9ee87f36ebfdbdc34522cfd4e50c9cb48dd52d4647a06d08e0f0069c104849bf30c8e61cb693dffbc69fc0ab9c5d502a227d606a1dcd630ebd799acdb1e47ce2ad52ff53f6cf4fbd5f0058fb5db915702675ea44334d42e0b6ddae78b22b5b5f7e5aa36519e31278e37b64312479b14aef9b8f12d8c1f39faf920851bd53b13bae5490c847b3312b2e956c430f1d8deea91cf171dee5017e7709d0346d81600bd5f0c41da3f548c28aa50589b293685ba059cd7f3edefdb5d8cdea364f4a42153b0632ef0b7ba18610b71fc34a781eead1dc5a00ab47b6840590ba44dafc6a16029cf50e089684194d93dc881beb62edb7ccee6304a4e71a35915f109db92690461b9e4ea21257ffb62477c20feaafc7a78e2aac2301b66893157920ce9fb114ab4f534d61bb3d17dfb4d9ef9f79a736f7c1d32ac3998356aefc876d8c38722787d564e980a1f15056cb3fe634d71d2c98e0475c79cab318b73a863362f85aeacdcfc44e61b5aeb870de9ea5b5abd24e8c19ab05e45e1e9b8894deeb9d29d65ae99aa94b5047f3c1168276cc2e491aba52b5b03703ced28c63a167f0cb3e4bb4d8e4f0292cf3ea4376510fa49a1a5efcc00f23c3cdf6402197b81262e66e17bf4307d87ffbc2b37213b316bddd65aa9d64ce6122c4a1545c5966bf4fc4c6ff17ded787ca9a3b3cadee435bbba8f6590dc4ba30895b84d5b4eb94f4b05be3c", - "82abb4ff5457b21f359754f151e456e2c0a185c8363d15918bcee0d6d49f12564ac655", - "b63b577e719494032062e3f63682098dcdcfe26cedea2a40893c847a331e4ce9", - "9f1d08be539f1244f0f69ad2", - "88dcdb0309f8c4a96ad5560f8210eda1f5afb31b85b7a8b15525777748967d4ed77c063f65d64ef19b31044f2adc690f5e457faa1abe2e127b38c626eaa94053c9ae1b6b4d0db1f02c8404b50f58210cc9fcc6fa4ecc615631da631031cd6253b4a13a3e88295ffdc775fd4bdf29655d9780dbe02b0a82aad4c4088e90b51f170909c0f98ff93ca3926067ec94be05841603db4f913b7025a9ee34b8d8bc629ed827a2a9857e0814d36b83cba21e670f8f94ceb4be5757e0b8782895b5d8605868e4f584b5bb6a5f3a94edd9b23fc2b6fa06914aec970c260fc370aa245ca68888c90c43eecb68474c9e45c53a7da055f5bfe39b56769fa56264dc8bf4c1616e30262bd501ff9fc5cd78f73ad89e093feba0393a11c6b2cbca765ba025c40dd0417dfa644fce96db5a0362235ad37a317145e7b5f3c7213c7fb3c393be57a1cb55035f06da1f0bf665653c5fe8a0f3ca67dbcbfc59852694d34819d0978cd09b508d103017168f6848258493be737cc24c2112f2afeabf41038bea1f74bc8656d9910b77d33cc691a0d9b12f7c518ecef93423cb4871949a518d2f06e5427823324275b97110f8f88b0d14788741e617f4b194e679a1627da50376a08d4f23b005c0446b46d4f534ed85e4692e7946ec818437089425ee30e47de995e8774b61003801de67939d9fed7bf0cdaf625798d0d0d04a61a2482217b890168e36f20cf1d6b81f9daf1a49a781567c4363ac2f3ebf0252d5adfbed17f98cc264ed2765aa279b7437410ee8b4cf42932e5055f4884deefd2a979ab1328f97cb750b3b7e4615b9c1c61659c90a5ff6d1c736e785587ec85040fb2c6decf789c2707974bfcbd0c7f699627b31e0762321d55bcc6acf1aabbd44abd7766d397bfbb68c424b311611d9eeb6598ca3126f569f688455da8d5ab86eb01f9c96186858c4b5e447aa2b9ca11aa5453f731beed4e09f95bb7376e200212e2f03551b8b09a19d6910f25898d692bc20bf6ed3ac9a0276db560de5c9e264f4db8fec6577042fbbd4510bb7070086508ac451a1fda26582c259412fbf1bd60cd5e921160c2604fde559b5ed4df52b805010b225f999450adadc6e108b70f169a3d8da6efbe1cce1c4908b004e928e3cdfdd0b4c5f742fd72a11c9585aa3517486201b6d9a98739b77970a88072750d29d005a291546f13b576b4249d71f04a9abf8f653ca206d98f738af2a1203bf0975f0a40138df054ee834ab73a3b1d7036567369a7ae15f808904e08adfc84b34a0e1356009d8a82e51c3e8f2170908179bfe47be8ad819cb12e85b6b76bba7c9b9398dfc00f550e32c171b4d5f2d9676063efee0b0b49660c10260ce052dd00addc3359e35c25dc33066d4b05bec7d93f71e0ad7d5ab83d844c7f33137894327f464260688ea4ce9847046e7dd0bfa48d4e15277a9586b4742daf0c5ecc59aceea6867068b03c20aad38d04a814472287d809a9285cd4dcdbf68f3f4ffb794701f4c265b2dff4aee55c9815938689162e08309df150538e60dccc03d495adcc560fb831444b922a6375845cef5dec56eff2910b5bde5f25f0e550ab5a13205de91d20896fe04a8ecc2c83d1371cf381424f8c43d2a5ced374878405f52bb92f4fa3c15d29ec151508488f9b4e42527921e245a8ee4b5d6ee95797f6ec4374d79acd7b467454a1d7eda05a8ae104534b23c46b27581abed6afc3ca555202dda94fc2b93501fe78867730a84f6f726dfd7364bc240b65d6c3022a04e09c89e36a809fbf244cc5522315110e9e33c8a4e1f1396e3e51fcdd53d9ae94fe7bf6c6ccef0ce02048a11441de3c25aa9787c577501977e486f8dfaa4c81e3183e648311148ce5cf3de56878847a9d14c0645777022c158670377dd9553eb63eb17e19ebb06202be8fd9bc2b24878cc86f9938e5996751ad9ca04b636497199f7f27dfa0f5ba2a01c3a491bec6dc5113d127f6aae38fa07ce7539a0c1817f7f0de0da538f4d85ffa394784a42eb50994e28530e3997e3345db28bafbb836fa463d34146d9f46d8d2b28b3954b9bc7f84046828e9b55e2fd663e562aa95caa97873f48f0a003d2251fb3ddbce0b6072fc17e0d3f99b655b8f41e8e6986ef7526544222e2d402489eabed4c219540605b9f5dd321ad902708601e85bc874c11efedd072aab7e10272c87b08b9457223de9fbc3abc2d1346656a524e9c67d79d4053c4257e886d6b430f5b7f57b2e5e92ae69273c1705a3074d5066def69fadea1af8fa9b3bf4890f9cda4b1833e5ed27f22bc4fe4cf452880c7b53320bc7cb748c0af6e7550ffa84e4714ec18d208131ae9e3edc6cd6fa2c60ab8ebc1ee56eafc01fbfba061e55014b9711eb58fdd01f8936d29dd081565de0b175b02989c5ff374e6f58c3383e9bc00d8a93903e6a221c7475e15aaef77594849af877f3807a76e03bdd54ff0b192bf34385d24d858d6f454810ee48141d73e3acf1aa3d19cd4c723a634cd8e25b4fb604c744e408dfd82961e46e8444f001d0991af24b3b6ec57ba41fb45122afc73ec6b25f501f1abd46181247945729337bf5083e5821968502a5a696043ee696c290095feac000957f968ac61ccb572ab2f37008830ab9a81d02456190af99873450b52df1888c3d8b6b13df65a9bb36a4b6d0538a0f179daebca2bed6f94b4670560fc5471c3770f2d004b6a138b8243068d754fd246e9881242638c6675f1611f237146f6e0f72ff2fba96f479fe0a662a81f40928f5400a0bbfb5ed07a87f457d5febdbdd6f323e2a59f749e6fc8a51d08b023734c762a91cc517401be57ffdf6a52b9174ea153abf2190ae2642955c3c02b4a15d72456c9d2f323de6fabbf56dfa3b566f1aa688c86b662bd34cf2511cc4a30621b6f1f1ac382bc1c4fa4c0d4d5a30ae90a5e54a9fb4afc1475e7c612eeb7f0e09e894c2004cd04126df9359d525d7f090e4b531916207c38c3512341c84218c86fc50061043ba1b89ddfb21cd756b391cb53e8c1cd55352be05efe562669e3986c022e30c79a97bdf087889a392e6da0d72cc7ea208aaf23408df23f3a9ea9bf9a935e49c9994a37a5dd0faf1267d5f7db47cf64ae1d3ec166466b2f882eb21698aa375cb50146c0e660e9bbb38d7bbc1c1c6d8333f7031d6a", - }, - { - "68ca38fccd585eb14f953358220027046c14ef965478d3d8f206f63fef4fe3571a1b53e774b298c347cc1b69cc426d39575ccfabd5a284c7a87a0698cae9efe40543cb79f5643c3c3057a5fc991235f06f059c44a7200b509a12e864fbd748001a14790f78b54ba80cf0a4a603da9672df32b68652c1d6edd3be51cf969acfb0ae49c026fe0bce0bfc72b1ff4c47712b7a27b2cce888b9bc470b8bdda55a8d53a34d79a25947ad55b95e5406a5c5311fece3ecd46ca590b3b01b9055761da8196b21bbc468681922c66d286c32598b1e3d77f2a91d835ccd9eec231409cb2e74ede9385552517718be9f84f0f9100e368701dfa4843b7222279537306065a54d4edda3a02f1ab9edba3ddeb34dece9d5edc8797103eb942a80cb5ae130ff2e7eddd11f0cecd8f9a615d75963c44238b10ab1230d9db7371d8291feb2912d306efe4f7aea2773903d4be9a00f2bd8c03589e342269a79441c0b42ce9c6fff0a6e4e845876f7e9b342d25351fe2b1233b4f576db90ef1facfa617b96d17aa03fc824973e1c80f15e5344b0516fc28424b7faff47ea1ef4e47f6f7b50e91b8fb14027f05ca7e1bafa266a4b952cd0b9e4cab82bb4d61f99568e14a6772f36296f5d19cb04fa86ff20f04ab61d1a6f01e5282c99fe4c3254da46fb5276317be58e94b1928e3791af27dc6544f6d445dbfc7275fbbea74f98ee4aea647b654909f9fa9c88312d3759099c9d0070e3db6d55506813f8b7abe602964a7dfb9387f58e237dbf50b4185a50b65ac099352dee8695017e4dac644f42aecc3e415333cf76b08fc764a721b45d7b74f6b0a2e43637e5b4849218d3d4c6a01208f345d76af56631590e520d6bcd82627d2446b45b2c68e0be81b3924753a54f47ea27b1e08de2399b34470701c9697eedaf3248db9b28991cdc2c632fd1b376bbda279b6709d5033d1c0a3ee573bdd222ef1afe8a4397a61fc30a4e94bdc55097ecebfef6c00133dc0b72c17e2f93a11eae9fa9f1364f10fa595e8e1623dead10caac068aad3967b9ab2837dabcd8f96a77a25baef16ba84bc93661ed150ffddfbb0369683cd021e8f959c2b531bb1fa95d7a574fe5ff9aae35fb9b4a0a9829c59b932ed8634fc05ca88211da3e30839baadaea8fd9843e0e80d9598a7282500d157ee579cda5d57628e7506617d301c2adec5186708f94f069ed7bdb70cbe88549cefe1673d48c9bbbdc01d2af03945cefe6e25f757750de64cbb9d496a25adf7058f5e32c827fe75e80ba0e834e6a72344dd2aac4228828ed42fd83e4576254af5737dcd9b6c338377d46baccb02d00fdffaac12133ea0e75e791593ef3aded4ae4c9249b8d5cd20aa28cd652b9d750b88111d9b4fbe729e27882206b2f0eb614d7daaf6436816fd80d452ac71c7a7f9e8c595287407c6ab9fe8a242e98da4270b4f1d4ea7243c27f89ed46a567c643f31f967b5f12e518106f3d3e08178078cc714cb6e39079631966a9becd6f02c18e983ceeaa2106ba9043f9985b791027eb5dddceed563106bcdbc48a4ac64bd95e87c708a8cdc33811bcd16c35e193203e70ef2bc7203183fbf60d46bc581f1bdfe62387b3e6c0c4a29130d872c3f8b134e7dcfb080e7e03048c49c0e468dbc44eff4b02e50bc6889cf7600fba58c0ee409ce948aa684baef4956fd8fd4a9c4c49e84e2ff314b7900b179fc66f5fb4affb9ef7a6064354fad8c3d2d50e6f2157576f864a843dda8f547955c4d80a73d4a86b7aaeaecea886927a5ba0e97df740ec7e8b70bb650010df55d4b75f478b07b205b560d45de666d84206c1bffd02ab7b8d1c37f21c47d1711b89d16214d8151a8e75eeeb5c54c39e5a855d578708d314240a064051d8b26c6183ce755be38fe9597dd5b5d198532b1db083a4b856b8dd60bf1db197cf1df852eb6daecffd97287a6cdd4c05307722e0fac798507f75b03e9361d5627ecdb56a3b633938fa61b2673efe6c6e768e4e7055e6c1d55c7113efd3e95151b606bbf169f4296455dccb93da370150c54fc11b3682f092f30381c6ecd218a3d9d39442c8bea61d9a71b174a8b2c56e028689380879cafb7c4bc2691dda0cf6ada039755edf93f851446df9f63267f8b8f030c069fabbe6457d4f63575b5905fb927a5a720d52c351bfbc48f12440a91471697e6b2564b1a2b314fa0e6dff090079637287b635d875f120671561102ad27aa83d9f0cee41bf023bcd703ad670b43ae23bf01713650834cc1e95dd486757f0a4f6fc9337bb95738805ad5e756198579c886eb0ee77e4ba957997dde0eecd84e4c9171c84ad8f0cb23c6a289e037f3a8beeea7965ce34fa47cbd727baa4ac9e6dc3baf17049fd2386674b246aca5ef6b8496f1d17a3175f6fee86299232c7fff682f066cbed895155d475bf9fd4b5571d257534c88c93377b1a600d4c280d42aafda975eb32c740073cffa610b5fd2dda7262a2fff5da7a0f3a875c62949e0c9247827d7a49bd8185bc27967124c34b9725ee961bc8102a029786652c2571be6cf33be63cf867c2b48e5826b31b714a415fe05c27f0862a870d8fb33200719ef4ac8530a4ecf2597b4a7f2e66f078a7505803774889a1cf963083c831f46725a1ec5545d8489e53921d81f80ef99f5e51a2d5992c7769c2a7ec8bd8e0f2fd81de53c7b69b650a2d838b269185c5efd668c470943bd956e3c5e1bba5d3b927b10cee68a75372d4d6fdfa6782c05659281bc9bc56a2123967f4f50cc7ae3379ba21e1617553354b5030b3d3f0092c1824f5d47b97e6b4fedaa90aa2573e1b115ffc72d44fa8209fd8d372c8dc9ee00193b47c2a9a302875da331731713243d02eb5a57d5dc51c35988ffd742ddd75c191f1eb2c2214a1fc47b82db8ea708818262d9583f2b1b98a40b6ff6e94742f25661a51882ef28475aab12d9422b6ac48e341cbd6f38460333b5fa1cfd4d0f43aeb46c21938468fe3f7bc771972246156652d2c58b18c8cecec2dbbc0feb0fae9f6bc022e029111f94e8913c0ad741612a1426b53cff73fbb24fb7b22ab750ba1310ecf339fe12ced6a3fae17b4c429550794a8d68be891b0e30cd28e81de2fb2ecfee58bdf11794951276005eb8a5af21e03c8aaeb595ace652c5ce60a8b98f6897d82698ffbb2e02213e50d9d3f00bb42c8652d22bffb87ec576ef6e206ed6c846fd5136a87f38c9ad899371799f35a6258878418830b04da79fabd80e7290456fe17c0850a4c20e2e657f97f4a53e1a3db65bb5e71bf38eab9f56aa11e6ef71c85b8a28f04c271", - "ea196b6a64be4b0799b1c2f72281300c3a2577db44e5d3606b8b02fa8fc46c7aded7e442", - "7c86a2c06b7520d60023d18fe73d09c514ed07a91d50d8fd5bff00e7550faed1", - "952f492fe00b26028c560fc6", - "b3f3294815ce461c8843172efe93f73a8254e58a0e71953e35c15aa89a7bd9dfee967853dcbfba73d3b87fa60449cbcabf13b1206d0cb27d2c3fedcfa695b6d41efda37bb6db35449bd470a23787619ee48f981d3f0b1c8e121725b2289b6d67858a4f9ab41683bdaec8a913ca2cc292a9640efe50fb85a1d1f7b286f45d4448f85b3242f45ab44e3281d759db24dfabbae4259f127d6546ecb914d7e93e2c19230c67fba8a6cba6069023ff7ea3d8a170289c2b4391bb97a7b899228d032b36186dfbb29ae8f0e6c06d753f4c6b21982d49ee682bef50a5c2c8434510c5fa2b9c0349592f33f8d7ad6f7243d42b292aee6d210c61e3f898875b91a17a89148275031b74cb34e628d7b701775dbfcf87c79ab279a73dad14d8eed365eb9f29a007b7d2ccc07ceb8cdcdaece67fa0166e135c9a4b939426882eeca98ab887ed2e4888bbebd5afc9f2da3e9162527262b0fa85903246bc8b80df3060c890ebaa516781a2b2a138b98001287e12a9c68471912dd297bc0beadccdc31a27b7c726baf31510cd355a28e4ef786b30084af66ef135909795aa73814cbbc6552270d5e11d46e9497ba30d6d8cecf343d16e7e3357bc9bbfbc7c1dcaa5fafd8a9b07056129da02e6228886463474c5af1d670bc14cf2868b816cc71578ad807a37477341c8192bfc2e8b1f7bfd58827e041f70384f92bb4c6acc415dde5099a1c2b27b709f9e53d1dab07c87a042ca4af7a2a6ee57b37bf2bb42259d372ecfeaf1dc55ac3a9f211f16fef3b2d5f11dc19fd1f425c14779580b2501ec6e0a84220e7e12baf9e0fee3e8cf499a7fba6721a746f598f04ee8ab4df31fb8fa5ce2d2419d5551155c009f2780cdd225ec2c19f94fb9c8b785ad4574b4da766eabfa696a1994e64a2518d1bcade6390cc683a6e80cf8b163c3e58cfa1134ee743079347f08a89c81478668df32ce9cdd7b853db5cf7af13436f3bbb11bcfa8f6b6d727a1df84f99fb3a5c248b8fd5baf669b68fd9af45298030f3251bf0351fa9b58b0b9fba53ecfd838300790ebd689744c1b7b333fbed76c8fb96fc669ecc6695ff5bf8379dd2a3c270af858cc60894be8922d69fb9707bd2a7825f2eec4a5056e5e91714f4dcfa86974259fcbfd5f20d55923a0a9936fb20e5ae9670e2019336e15f530c0be449fe355a7a02c0938d60720d5b8f4f59d2e4213ad5251c6058312b43d47c44ffc8946a98797f5ace279d3e126da63633c0eff1c412febdd47817aaee466c639e43637c1e179f606780ab490d3f0b3c2d79709f1262305fc87c02f68da2dc32f8c544e7b358c3a5d2c27986a19d13fe736c60a3524e94caa55e853eedeece985d16bfa6c487bed6583436cf82077fcdcf90a05f49db50588f46550f7a0c3a1cfca902d66d25dba8d2c53bb5557cc1d87c8a407898b3c30c4f0852df92d839859c191228d0a47324ea9ec2e0ae84513cbe4ff4aff85e77b8587f1044bcb9775099ebc2f28fbcd1cad58a8ce1f072f2228f559fbfdd8405d86f8262c27c3d95e01016b343c6a4e59dec81b59bb6e3c6109a4cffffa85e9752ed2149b5624417c0dfd1a27bd2630bf59814f15820c43bfa317be59ef6f433c95e8be154a8ae94765bcedadebb717f0d8c24e01e1952bd104ba9620f067554ae0faeb78f13c622c45d97b2b5774a3e30cb07f2cf0e8b19d1266d8a8861f3772305e24ec5c9cb714806c7d705a3bed6385f8be4e12562e17ec3df01afb4ef6f7427c48a1bc0e64fc65eb1c3d3ff2d6687e4c275a019f5ab5c63bbe47e3680fb1802d5835c4d494f0f394de1ae47f81eef005127d0971c4589c456ae6a69855f35635c28b590c1b93f155fabcab59b6c7cd8ea1c4ed1f67093aa782c54329cdcf9bf84a40400de707b894587d6e08cf7fd72fa45b6709a26e97ff5ec1269b8042358f872a79e8c2db1c7ebffac014d6b6f71b0c1c1945ddedaf5b6911668059b61b55eea4737aa307c829309c9ea548fba2bede023849bd61b5a467cd1ab1c61205ce64301e2531e5d58d03c74ecdafe1f5b74627be8716cad0d0a0be60984c9f9dfeae24a6c4949170ce2f589326e0a76c447a578ea3a5e4bd9f18884f18843eb1a78aa2fae06a7569a97551b227c34d429c8e1c8c5417ced93c30dcc607cb32a365d87328aaecb4ce57ab8e74f0d9099e267cfb747a3bca9f76b5f6dfb543bc4b5c06c3646062ec14f511058eb2939601913f8a0f1785249cb72b0bb1c12a9508b23caf490537eec53f614f3e06592eb61f75c1cecfa514cf7b500b0375095d5db74556220131390b77d0db72711c0c7229a5769b1d2b3f5105f3a4370beb1cacbd93ce32f89f1fc833c7949211dd204616c013a3399a22f5325f1a00008f4c8ee7dc5bd7476848721fef843123a6213cb0c0b6ae84233ed01a77a115d06e08990b8e60cfa4f41dbc9505cfae76463278b6c6b5ac7c3b83284caaba4a6a1d739c392528ff5b06bc3b82e98060e3001279a44aabaacc661fb14e7581d1235940cbe067c6b386da09454e0467c785ed0b65d41ff4cf36ba5f63d3ff2b45c11c6c22d3ea8ebbf1d52d770e0ebf2ba0c67c7d3641c145cab474a88119335990137fa82a340c2cc8c453752a3aa801127a47aeefe66d1af1a26ee1cd0e6d935bd548f6ce33a9c204be02ba08f9fa03c685665375db7c0c656ddf3e441ddd96b0d2018beff5086cc63339f26bc8332a5e6a1422bfedb69187a3443c23b630a28b02f8075faf3ff2fbeef6cdf02ba4af47a765003de2254b69f487bb5d038759a33ce6885611198b81b0b6fc5d7a531a7a90dbc3556aa758db1657698cb3698b8207b1c1b589efe5d52790667ac483dde9543953c6392d5eb8afdafa205d325e314f810e9c7722cbf5bb76fd6502733149bf21c60717ff5bc366b85ee9f206bb1f330ea72f61a9766090eabde747b1eb9c046cc8713d5a4f8d4b7dcd7c61f2496c5b467608cd9260382b8f11b04c318a5ebb6411a4c7fa060e08c295c6062ac644bd3d10bcbfcfe2e3748eba66f65d904ff21147faa8475f508f21238d42f62b697249b9fceb905127f7684c8130cb8663f09cd25ea038078e1980237389337d1446c3a77bce41b37b50b9c3a020526e7b7b3bef370cd7af71b225700627060eb65693899d277ed130ec5ed9eee75d4886f31aa93bbf302e0c69c9c4499396b43dceb67c02fafaff8b56698308393a03f60babde883f00de2c66831f024fafaf98b2fcf37a9ce01d4f34e95c9408395716dcf83fe86c7a0f5e3e6741c3b63b6ebe9964f1d5005eeb732ce66402007beb3e6a087053", - }, - { - "9100c5b2d7c5d5a854bce55e82f94b89a268da7b66357a661dcf75cba10a1b320ae0e4e1a5b989f9766e57f867a3810a0b5b857191ffd7aece4c796f5694a2617486421940cc12b63a6aaea20d2fac188b318a1c3061cafeae436e04d710654b96a864d674768caee03a50ed6afc06f52d90115df1db5c9f1ecaa4f5da094070b1a447251ad3d4fb0e24e87821ee6d4e7e7eac7059080f77d2b36cacbdac1c6e5063946a376865458c4ebdad3c2afcbba8a82b01b03a7882eee42eab904a19e0aead4ae515b02aa2fee74f3a114bf5b9f320baa35b3225491653f4a69e0d864cbbd031d0805b727e42c2b9530dae0c01cfc6a42af8ca730e1d67b4bb743a072f0a38008b937209d534c2284271344340fae76af2b1dd00cf44b48ab8ee92e8f9cae8845e5a8d338f505cd1c19014018bfb6b7dad487e7c8c32064421982c1a63149ec16f2bf4fe7b50cf3ce1e33d6cdea8e98bf067077c9a0ec1bba6edd5090273ca719ebf6f1a0f3e56f021945cff3c468b2dad92a947a06a024758d7505a4a1bcbe9da3a03e97859da99ed36982a7c23572ab60071566b749dc34bee1d9609e87fe32282cc9adba633c9ddcbf359ef4a83a54af5fbb5699978b487954a907dc9739f4b3f3927e66cf0c338e31c272da0cc7795c72dfe60a5b2e73bfd77b8c6ea58122a913910fe29d3360cef5d398f29b024f0dd225183d538bed2b076989aceaac460e3d45e0ca7941897f151261a024b0adf6d5b62429420144497adde6557a3c53b7723471fb760b6a8b1dcc2b327cd939528f5d7bc16ec00ad99df12f082d82bf9fb7318b3d3ce5b84ab1e38d2ebcb6713c03fd0d62bd083c4af96b4316ee02b6953431c261278aabd96e28f81adf7946e3664446135c825e45ed916ccb941350c84523296cadd5360bfe3e16dda75db10da1f710fe796f3456f0911294a4735cf9968656345b9c3049ca47176194c86f36cf702538df699fcffaa254af15b198ac37eed0837b00cd3547e496ecacf6136c6648a535a235059cd75a3bfd0bc49933b379b72e7a8463c268faaf05f0b27256fb179c9d4c923a13ec6600f83aaa2bee13e30c8e676040c06aefc65ba238a29d403f3a8cc164a0bdcaa1a5f54bc1d35fa4efee0c402eccab1e92f6b0cba94e1bd87898a9dd3957a7eafd9d26bf70866450646090833d4b91c032428bdb9097b409305de669a58e44931b7b428bf1a6dc56177cd944b87b04eabd80c64e287a5758c83db26dbc06f0c772335363ea2fb9f19c833644fe3b3fbbbbf5f9d460412d287eef862ae676f258aa45bc8465667601e9ac46e7d77693936c8d67ccde94e54d746b785ad26aa38ca0500105b6870790235e780ac50b9e3198f5fe678ae3a4ff4f1d4a2177edae183daf2de42625845973fc544907e27a90d868f8634c9d529bbaacbd228a5b4ac7fa68ac208e207a022cce4b24a0b5b5791eaddc6b3b3ef6e5dba41855ff531de9bbca0a39ea743c0732772bd32cd15c4b7f28a6ba579d902331a88920fb970aa75114e14b891d42cb947e9eb14feafccf1393796b21099e52b21773adae8e550f93364b1c438dd7d7fc76994c51860b652974d04a7e6ead207610de149f231422595f4e9ced1674d98d0e15ee841143ad8613f804729524e8a5f30d451611676f70a60c5dcc7127497f4d27f35e7ba0e48f98e9022e0deac400e809170970867a1682c7d2f3ef2c632c44568abff76f4f804841ae462c7247147b6e1debe48802674fd55b2ef1be5b4604d5f60c35358c7d773ab3a3ad0ab81868c6044d4e06a48ddbffacddadf813a2ce09aef34f3b60b666245a032f021b87c81fc506166983f25930cff728d399f6dd48ea1c745ad2da7f2cdd9e3ee915f708db0d1f3481018db1c174ea950ed17247bb8ebc065186758e5403bd4d19a445e4a15519326696e4280bcecd1a903f525bbe1e521f94d79df8db4b35f4ef7bd990c0f2c32789a75f95761ca0064bf251fa00b409a58b979e56d2c44bc2302552f118162891bd78272384c739c0c98bbaca3fc46fbb5bfe123eb25df0e27343e38b5a0c2d0774443af91b64b9d4e0649f20290edb84fcedb3bf4ba491bee8754a32716739e5ab64deb6c9888bb9fd2ada1629a59b16934ec5dee3678dcbdcc7fe5e2f3833da9d1281669b1d108837eaae5180396813883de26b957037623825b0675df431fb06b35191c06229f84cc849ccf1b1e079efc2e575331cd77b3297d2908c048b82b7dd14883f3e707bf6ca38f87c19625bec47c11f54988a97205d27ac51a32f19704391af72021b78cc4461386dc3844a1b45596fede3f70e311eba92b1d9ac221d3dc19f3fdd080c2169348f2cc8c9380e12a7ebf69efa37bda4ca6f7e66919b94532ac43022c0518c04d0a8cd99e0cbac88b7a317a1dac5469534b4fbc64080196b44498e149b0a196bb2d6f59392a21c4a4523ec1ff922a52de790e42810fd9355471169d22b734dde4a3361ecd57e271a92132a8b35cfa91d508d45618ad8c6c1ea209405a3d1d3ee1535caeaa3f20546052fc13aff7a584ff79db1726678344098d8563caa2a2abf6fe5aa03d7af49dccf1b17be85600e7cfdbfff54282394b0fbeafda615185574fdff78d59ec2a26dddba1c531a1ac007cabf5be2e2f0a3dedb9174e0a9da5597c9de6d68911fc66ec9d2b1e3fd71ebb83147ab14384ee303d067f47a324a01fc187f54a98f1b0848fdba2ceb3c18936d503e71887d548c4dbc70b7eecac9ead3393f8cb85a84f1484f2e237b36b6d886f54a0f629e8bb05b0c6839c722149a5b541703aeac04e6eb230a5659b12ed0a668d018f75bc94258218c1f5390b9aee4c0b2836cb76a47da649e2425bcf4cc15c4d51d109e5f78cfdb88137c31b2510264e46f1c4eb6e6b3450ad901ff9517b47a24d508844dc85fc5dbcc079e2d09f301691f401ff5f36500cc66f0617eb4dba389d427c7ac778d78438506608f0961f818a2080ea56d0f61c40fc342b49ee63e730df61f757387b9089e1987977b7fa02d87aec2e4be24b8bdf7fb6286d190f9df870944fa910df32f178ab692fa56b071f57366a3981f51800ab416dc4500abcc19e0c6aaeeb9ca063470993ec749a0bcbd07604516b1d51175ebedbaec8986f67a4d9158f75b5f3bcbe86a83220b4fdf12a0242951f94ac7d52882b1b209b82c4749753ea4d46a60bcc4f3eed033bde2d3d20c25cb46fd907f7052217a0a4db143b2efe8875a59441f4d22ef70d0c244b2de6a7e15581e84c860a6326ae3e3aea6d3972e2de0623d2d852c9e65eed318bd3d86d29595575df60d9050e1740f884796b6657718a294adcf2303adf61c6b23933db93885172e82a78f741b8efc6315a2c88ccb6b11692a346cd82a79334e0c610734e61e6378b5e2ecc161d924778bfcf4475805a0823a0d5a54768d9272ee99b7c4a81b3d5dfe1a2f5ff34", - "3c77f30bbb698b1571aeb54653fcae2c23dc16be58603f0c361eedd813ec0c4f63005a1e69e533da93e820e6e4ce1308aa29c60289060ebf24fc9738e8a4874ca4e26a0dc79ee75b8607416bd554737f", - "0223c0a6052bb3cdc99a284fa169ba76be2df53b677642a606090a9267a60769", - "7d3981073f90c6648c5e9c74", - "61ec5230306b70113f67b340575b77ef76d521ff75b754d551e4177591a02351ad382b2a4067f2b3af7e8e15431c7133e98be9d8293d17ef40161dbad9a4f1a4f30cdd557bb9a8b03b5f1b277c850e23ecfa0fc2ab1102e4b1d5e836a606883c3d43527fc3aa26955964b144a9a56cafa7b174d72a0635b80e7b4f871ead3838a955a14c4b8c5c3c66fd86a5e4ff10dfaa92105378bbc5f76ad29727e5bc4779ba3e6dc19bf45020f6ce4dfb3400df05cac51577d58eec21b22839b8f055226b204e641783bb3305b4461172f1c1d48eec56fe6f82aae564ac6688d7b0994747d9b23a24418e69f8a4fc548f854f86baacbdec78b7597b138c453349034c8cad2ff272781e0e6799ef2f8addaf18528736aef21ef8c2d213161e36b2c7815fcfc40747626e0165684e46a9a2275c533d548e52a9952a556168195d602ead86f6bd699e97ca59f4cb2050ff148f5bdfec358dc4542ff2f700db9861dfe5ba377ec7fdc0fcb2501e72fe6873c7cc76b95b4f300857f76e6e6e370119f403b556115b19fee7009f4f6675ad2d174f44002e35ddc360f309f20a3a1dbf39d90d7e5fa2106c53afb0bf445e4cede59cb50b8a7a2c0961d00b2c251f2d815309f74a46a424838ee87f1229273ff3b66dfb79e3b1ce11bd60e061e60e3f37bd7ac896b618cd78388590f44b1a276b965a4b95f2e3a7a175b30fb45dc7a71d4b3a1a33e98af30dbb46a217c50046ac21b8bbe9537c02f05a5780c8a5d796bd6424fd9e9f3ed5932069bc050bf4a1898a0ef0ca756aa2e2269b709cc92e0c5192ab49d692143388ede2bde4923c85eae8f59db5c7711dabeb33743c692be6dfebd815456958b5e1384a109f891f433e7b4a1031d4f30478b05766dd97eb964a28f2f7b55aa6c27c7f4ebf4d47ee8709bf99915426b3896412a855798e392e111789213af537cff7a976b4509e0eb6ffbb8e886a3596a242d16d95109b0ff562c624e06636a3611f804f9b2e252afe8a4e5e868b48e9e734f688f2da2012d7fdfe2d3aca75fd74730a85aae90353417fd52b92d28a5098b6af358a096b859859916bcd5a8f779676c6e04ea461fe62872050af92d08cdf1124bde1e889ace3c923457ecfe0a635ec757907a131ad7c2ca3f60e1317880f843c5e63f4ba59ab2882a492dd1e070b070af6f60e18cca29541206a7b267c3f75a5327fd9b8ffc9b36b57b73b36e586541d15c85253e17a2581e8f8a1518f275cc79afcf2b5c88a16e9bf553e757df089b5db90a9dcdc1867b788fe75abb5161dd7ee1cf37d3f0faa793ddb1bbf1eca13f4220ea63af8ef7c0e7144d999ba1c5a983e74d48cef708c1d28d3c0a168ab87d0ef70f381693f0d438ce013ffa2cba65a8cf6b498a7120209564535b7372690329cdbd74eaa76765962720f06aae58338a10064ad80f5a67395db2c31d36b1f5eb777306395f192599d2f737327afdcd9f14b3f24155a3f974915d3302427494fad756703b13afcd1764ef9735e7dbff920f1253cb668e9f40632aea1e0b4620db162138e4a97e6f0729b14be4a7c3256250d5e7423ba1238c704503c51cfc9cb68db7001b2f597a15e77138beea02e11e0bb98a72f2a77b7260e9172fe7e60483114ddd836addd966b69570db5eb26a0cfc4f8a8b80d26357ed51a70165bc0dd11ad7467688025bdb532e7222ea12f23c44d08d111b0ad4acb2f5b3d6b45c387d541ffc84466ed57acacefb1436ef00bcb5b6211dfd0650113ac369b9f3e4891acb2693c377467b1e9c949cc0ea6c4a72ef9292964275ed397cd2b1ed25fe1aa8f47e90cde362392da5e53893eef6e4f61decae1a75e3b726f0596f09c3cba62aa08bea89984b484d5768296a5afa8b0759dceba530a169d22b81979212b3343db35ce4e4766dd251ea6a47f5033cc090d6577efbed441bb4f8944937e812f12ef17ede76df621bd4cfa31567ade18b74583a2b783279150d584ca13c0d4784b70156afdf9be8ae96666b82def888465cd3df349de427d5f5b3572e4f963d33f968e6780e381ca196bc04a6664fe93fdc8558b21b84130dfa2a646950eb2e927885925af46d7a28d1507bcc3c02ba98318bfebe5b9eea1bd47935ad869eb701cbc35a9aef5efad88ff54eb350a34ccef2e159de8e16135b81105bf799fbd86aa11653b5ef93a1ab1c367231d61b42b8bdb4f04d8d05396d53247d51890be9b56c51cb19eec0fd1e6b8cdc98376b6c6b30963ac7ab02656ff94dec0e3a0eb3f3ffb8bebd99d5889df98e6c77093c370373dd5f17871fb334c7eb12c6ca22deb75bdac9eaf24281c965dffe03da9c940e13fb382fb6be332797813710a7cd2e7720f5b9e53fc0d98fcceeea4a8e9f787e670d60bfc4a849f34571e5d09b9e9c28cdf2b2d888eca9bb31ea8b9239bd19dca86880ad3e12b1583acc3a6d1f0a438ce3b5a337487279dc4ead1b214272d455e6a2c8cce4ae3bb29abfdbe77a67ababeaff5dd9c96b17f589cd4615c0209eba5e4b1c7167b4b739ca4b9957185961529d1082226f85068890c94aa1f1c244259ef7b120e40114926a49c4412b67b4caef1ff3ce6f3aea3c6107b830cd34df9f4d73d7d978b6b9d5c481e9d76e83d649e742b098334838fe50d80975fb567642d3b72c461ef3072ebb1d03c0099e97575bae6a12cd2352d9d296351df6965d736d7568c2911394a73d199743526ba54dd62c56c598f4e78495c0172739274c0b8c96755e489765723a24a8704093a94544f6c8764dcd1ce6b4bf2917cfad27d85e4442b4e5bd577ea1a88c2b79d61cc1be01ee9028235b36444483b4e45da1087bf6d45ca540620de5aacc644a0d5c4b807b582c7b058e140eebca539947502bf73c9abc81a0e3a618b39d3a38c4ff7f94767fd7e6b9eb61e629806bc3d183bdade7e369d180dd2f57fef677e22ce41be7224f11723a85a3f1d14d7b72dc98ccb2816b77e625ce3db3e2c5753af8b079e0d63939079a01910ee4699cb405d4d9c60e4ac86a7fda3a4c9c290662afbdb7678c3a84c87ff83470fa8a416511a06d3216a1445699d7ad7e6980491fd596d39762d576b08fcbf0825243c1fc01ec8300780857c429c607113160a8354f6699b368a87983464472a5754fd58943fca6f6779764fbe6cbb510d5280292df02c4a7ed9acec8c95ad67ebcda71d0f519ac18db9b43b28244cd34fe02c5d694df57410eb54c5e1ca0f8501e7776a811d7ee81eb9d8c80b2ca50a012b5eecd5428af965b217e7fdac80be88a01f76d473105b027eb557a523f13c55e1670ff34627667649573e0f19dda41c525a8c96c2866a88bd73e66c786767e1657960f6676d8a22be1c6024158a0f0e4ec761148b5a3d8ea481d8fed94855be82479ba23213190054f937838f0e35e00aa74c89b294c29ea25ad7e96b4b6fa952ea8f1cbe5397b7c86d0b74ccc25e22c88736b045fe86110bffa0679f28a1f27162b51410498cb7", - }, - { - "0fcff2c29cbb5cc40bfd2ec573ecf368275ade6a00e5730b77dab17e437b46524b3814e7f470acff6ddac4e0c6b748ed112657120bca1d83a4ce01e74a473995804d7c74bd28732a02370ac8ef52b600790d1284d82f077cfe096448509dddd0eb5944a882b7d384efdd4dde3003dea910f12de82035651e3ec9668e66435f519da3fa1f5bcda34aaaf028daf3068304f7b1ec18e65136241a9db281e011d27db5cc9c1099405a4430821e2488a228805314983966ce5d806b0f014c21d4c9d6a066e63aa6407ed6c29cfa4a3e22ca913762ca9d31271d9c371fe858f3b22e931814cdbe544b9416e88f6026b12bb8e88d8285beaaa35be1c24339b5f567480d7b16cbcf6160e549ef4570a0702889feaa0ebc54b11735735b6e2850d5715e5087291fe8890432784aa219bacaa2b874b075c9628cfed5e76dfe38426f9693f6bfb2de49b710c101b2dabb7c7c74f12de9ba8f75b8645d25629568d12bfbc7eaada63364b6f56569cf21e54c95d6797e9008f3496c506ecfe5d6a010d168fb7f0e2ee3c423492df36a133fffe9b87d7ac070c32cc131fba6089cb7d904b25812e03cd6048504f7ef1736ee00ee6b7aaedb3dda9c6fd6437772fa5076aca9888ce55e906a62875979bd477aabb2f4598d32342aa10a6d187c6768f213117a9ff6d830603bb7b9b475002e20b2237a4055ae6af6b8d70e343e76265188a0f07e7820dfb3d898684d99966d4bb9e78b0e95f5044dcc12810a89a75b11474c8fc06c6e734407db91a072ffeb2be6773a7c6c3ec939514b43daf29feb3aeb7afa57e96d9cf0492d90bb2c7be613f2208f5f5f5898b0a3db8a967a75d065efcabdd83759c88086583bb3d422c6c6425525a1adbd515199dbe71350b77940813618b88fe139153974c80d968ed4d9e3f97a91b7cce250a7c963f880dc38011250b9a131f2b76b677f78fd0e4cd6f1465182fd1d644dc42db0bcad8df4ae9f456841765af8e1c1775abf85a69577ece6f9e9035e36c88be784397479e713be4f5434aa4c166bc4702a4916c0c003a6baecaa182372a30af6dc7e6fc4912d13e662bd327829f6e85340fe130001babaee64d211d6761bcc52993c162a692a10cbe7434310392b64792a777a2b31341995072a6b7d4538cfde74e609dd1019a9f75cec0896186c0f42e3896d15be87aac5b11642f74e11d5c2f7de9f07f848ff543507ea4d73fa8f5683fc6b41831606352c482c7a5a013c51e0db59d824582c595f17a6d2113528943194d6b5aadcead62516507f178cd0f76729cf8b81fce4e0138ab224bfdbb8f16f8ea6196b90ef90a63f0fbdcbdfb5320984be8a80a26b932d1db7ecf870dd67fe838069136ff9b9ae087779e82cacf1b06a7b310ce6c439047c26fcec0364ea87e4549a544d540256cb7c3ef7282fa792aad89e919dd89519fe910501f5ef88da43232e917730e742ac2539d454e066feb9058f56dd246fdbb674dcab636585a788b338ffe41f4190447a65985acb9613d02669ad4ad888004c65acb0ca315752e58f51c9ae9259f20cbe8a668a207a5a46e30891bc909108f53db8bf6f0f11549e621d4cf4763e0035c867bfe9e1192fc421c080b25289a78f4167fe517852efdb6f3ccfe67ad01b4337da2c18f35bdc151c5dc76ee66efd27d5fc784e4e6829bea4f8a41ec8bf61ff998d178ce9f4a10551687337d7705eac6cd7fabb3f2379e31c1d01e4dc63e475f0fb01d9efa3de400b5177e2c2d68f2ead89e9ecad62cfc97fd0ad5b3391d0248dd2fd7c75dcbd802d3463ef0af21eb77b07a3286a72f1e9439f457630159abde7983a5c74f7dda12b40913632afedadb691d62003c70a46664fbd976457544cef8ea863858505b1c596e7f745d4a5fb657b1c694226afa9756c40d9c49425b323ce17a8531c5919b24010f715b5f27a300ee37334931ca9ff5c83c3f0a87713768ebccaaa15e35c56f3536ba945e5d954c94c885c68325bc4b51fb55d96c8d424849ece9a812af0747d5b1dc240f71609439f65acd1c17086e025e376eeb79a7255680cd692fc4b0f5768d1985fe8a1a387074f58c8bfdea8e5c11ed379b845ce2052a5b24ef0c1a658923eb87adf5b01e6aa59ae6937564ef97421722c67404cb9e5fe07d5bfad2e52ebe6cccb41ceb1eb2760545fb6a3582bc4ca572b0aa4e4f0a2ecc56299f3b485d980501a4e010576615ad518fd2d43c1f79aed013ed1f1e1bdb74357aaf7dc84772c9ec62da43c8ffe11a7fb3eeabc3584a936c37b28a438dfe78f89de6b0d5597ac1bc55057544e68fb49a6e505db69af122c2a3ad06219b7f2a2955db0ebf55c06baac5e0efac609436dee484857f75a8421945484ad0c7650a1d3008cc85c938208f19002b7994524878d6ddf85c763a65cb72a09c3a059657459f13cb584bfbd754fbf2de904517092be4f1786b2bde26ae8eb2d884592fc9e84395408f8117e47d1ab30d5fca167bbf07e41a33c230d240e3aac53cda9f251e24659da57d721288252fe7ff3653ae3e47b86209e9344accef0009b99f2ec7b3845558f1d77b89fc9b61ebc1b589fffd3261f71b9631e87541e22ed100e694854bed771358f10fe452fba61875a605b8080cc39e3eac13708e32518f28e60464c38b782c7c7800df63b6e7e95ced9154ea54e32900f6998f38eb1e51c112b6949e2eb11a96b1ea0a68c1e3b5af750a99c9fdb2cae44c5a1d37686ef87b158d19343e23daf00dd558cfb91e6f2e18f8e806abb2faf80d082f657717d08ca4e9c0d30d9bc30b612bcb1a3a3a3843231059dec344c6c04ce625b3fe064092e00175fd9d38f8fe54c4088efe30d211412be01460a6d4ad8d0a618b00a21de0a383de30ccd72f119b27a08958729a999e8aadff21829cbe8cfe398d90476e33db4c64981383a9aeab4a27f3bcb29d4b3d3b3a6ebdd71d3ac546b8658e269959630de176819b153cd53d2091efbddd2cf9178ba6ee98e1a3df9a095db0a2b713a0988a22239f5f08cc8f9abc3d67d9267f54dd5dedbf01bd490b0b09adb21d4e5aa7707e36cf77034f01bf8c7988a2e8dd7046bb2f486878436371f1258f3f7026afee6d7f6560be67103ad098edc9665e00118d4879f58bdd677cf2e6bc631d5c517acbb6db8a1debb4fe7492b7daf0b7ec7df056637c23caf926a1a589bef1db29cd81f547afd0fc9e459f46108ffdfcfdee43515a771c439dbde9177ceaf296a8749be0146cdca2b26be8c2ebd6cfd9b5032b1f7a375307f54c2f622711f8cf8684afaaf17c4da3e83666c40d26adc239c8d1a40024bbf560db5787ed404763d4e70ec6635c6a4b82c10f8ff7ad42217613c57648716ba94cb33129f3789dc86f9c8ec2e8e90e6bba0dfba1bb3dc3215188979a09f33346a6647099ed0e624c9ae10f83da0def840bdb25b718e8d86a616ff46b5327b1f99c22937920f5b5bbd6b53fa0b32f24befa4a7603234e6d94be51f00189a20b15c49e8ee58434a15ae9d10b9cf0204bfa7ab1fd9e006b22bebd22b036c4bb4c9949cb7ecdf01028d9f12466e144b2dbbf64d95d65347013e192d428678f64f0d9306f97208fb00a70d4615229143dd8890725ee3ba6021d38d6359055aa812edaf", - "0c5fb7075f5e15a6733737b614bf46871e29417e4b140bae6e10081623f5c52f557c36b4da4b5a4e82920497514b1e6f745fedbf73f86ee10976f82c6cbd5bc13a917514ddd062", - "e70954c812cac03e367e99f7b82a6dcc073d2f679f965d524872756ee58654cc", - "5f6267f6b3b21423267310e6", - "c53868c0fdc14e891ae1bc257fbb13be210a5d9cdbd9d18fe1b474f9a1929dbba3f25222d8fe8c1be3eef22352100064b922fd9642ad128a202b6382ae0a67c8affb0c5bfa1a80e55c1084cc372485243df872d677a80a3ef1ca3589908bca621f6f50133eb762cb9c05775d13db7dd3eb65ffd3eef96e8dd42928facc68390f6bbc50b17e1ef5ea6310d8756dd177be2cceb63a97bcceaa046794915589ca022d90756b02c22e8634c0ed44192abc3b8b1e2814c855ab27aaae3bdd801a73e6209fdd559ceb59a94fd98a66d12a31a643ca2f4b07ed910bc390f77ab89395d5cd1d783d8940dad4447f0452991b209cfcd998b0c814cebd08f9ff15052818bab0bf51c3b72ac1020d3b0974fbdf4ff941b1ab9c01f284fe82f2fd89c0aeb4b9fbb0a74ece08b3debc7b65e7263e2922fd4aba15ae3cba7885d04127c8e06a67f244e7aa4556f8694a5db6653f6e48d6de54f9e4024d25d3236d4f933205b6a358aa1506f832ef7d556c6a1bfe4aabfce51f3b5ac64bf6ab1e665bddb12fe13db9f07a55db3da3886df36ddb89f3a4939b1e9e5b701301570e3d01c0b947f498dcc6af438cc15e6038cb78a78986da0316cab67bca3e28c95e6b7e6b36cae9202cf4a77a0e15d3c3291d267aeee172dd587a944719b9fbe077603b4d39d4302b9a6415aa07af309a5e1cf7a9379552becdb4bc6a0b5c85d2e63bb141c405afc58a8b2b4188b3883a24eedf98dd50fc54725c440ccdb03514a6f37cab49296b6826b6bc7d7ad8cac0a3425eeb6866d94119acdad468cefe162a29e8831c77aa83321e8ae3e20e968cfe51dbf2b63f4e26c61536e6be4f63d61bbd06af38023b15f4fccb8ae0356d924dbf646bff69d1ac0d6e1c7f40b12d6d16e52d1c15958add5708bd38c514e47fe623a67c9ec211cd625b398fa7fd67a23e6e9f65d42dda2bae94524372fbc1a7e0ab3f1c451c126135536e73c573749aa60177dfb68843752b010e2cb9c1afaf51c94a48cf8ac7aab3fb200aaebcedefc6cccb581848da0121af92d9f4be002f0c2beffdfa65c36bec80e7f62d7009b1eb719d24b96e97059e6b50a52662c2c833738849f342391514349305228b29bfa9c7cf2a931558ca8e704c600148a28bd871465b23af499c11784aa45acd051f276d82789c58b14f12619372be4bc3a285f6cee21d65648d18e61752d6e7957736d3385f8ad36702c451c61ed475997d6d9f11c8be5257d8febce329aa701028aa2b5644b8515a95b5e866780e32754ac2e6f2e31b2c04a4ad35cbcbc25b23e9bf49cb1a5d877ca30880741757c29303af8676546760016f1538991b37cf0cd24ad3b1d877e5e1bd083e4b990af6ff5c0b28e530db3f463d21e76c928c8e1ffaa6c045937ea171a9071827a173e231f50e95430ae4895932c88ce048058ce6d0a50ca5c1842506158e98bb2912a61c7991a2256c97cb9050a4bb3ca32594622756291340561e9e584dd2e096263b6ff8eb898ae86f5f24500320d2d0ebb30d84cb4ef876a877dad23a611b39bf0cba5e22f2850e11c298fa23fed40691b83acc87136f8fa540b1dc40d1b0d0bd489ee9dad785c121955a094a2c6bd3353e142c04f7b88b2eb3305fd00d5eddb391b73fa2b16a6357aaa2abf2059ec979bd3ce06d5fff1c325bbe5c833a101615750613047d8155ac0c3a0734cc6aaeae7cb65d7501cb95f9d6d1161d09c961c0681547faf7983ed2efaf4e0fbb87a06169ecff1d0ee540a9223a73f75584441d4669cac09c2dbdb8aa2aed74eb9a2870f2021eb16e5f5c3e79a24d7110af4bece22a1086d27642550cadfa4f0e03f2c032a2745e1c9277a4f67fa4dc74ba056110fed3a63f643567d079c9430b8d5b3bf57a9b3f02d486d870229fee5462043b6bda8d265c745ddc1b8952bf91828d6db2edcfca7051e74df9dd456dca5e04ba469b9ff6a8130aab3903c05659b8f31cf4ba4c22511493a36541ff9d88c708dfb714d52a3c0356543e6efad37530b598bb63c3724772907abe4cad39c896c62daf5b30cd7d37eb36a7be2494353028c76e8d148b018c7bb755c45d2a33f61944071bae8316881e9aa37e4ec2374aac4f8436ed3c7db2092326538f07fc6644e0239899e3335f73c1e3c4602b12d19d7b639d4968974b6b2703ec1add8cd930cbafff4158f68f06aaac83bb4a2e31466e2ddc247ad71c5f4c49af7defd1394e21819cc24c78380caefb2ce87c0d1050680313037def12ca21cf67bb6692d6e4a9e90a9c9a0b7118ac300c6c6f636337aa25bc59cf1d9749dc183803cc0ccd1ff53210352795c6edb49ff1e5e8ebaee7b3eda6e3c0c340fa60594115e37fab60133b8a3b39d2e63db0bc6a03973e236fca801553912f93feafd8b96766049dd2066f3c5ac9222121ee9d36cbcd8f713adc8779949941f8a8dcc92ade62e46e9f1b292d5f7eced14c3bff50a811cb762ced1f103652773ef946e18569eb5892626627e085d4ffb3102c1586ddf88acbaeed903b22d3e7ccd8b8ddcdfddb872403240bc8e0e46a068f55bbddaf90fffb9a914187aac2ceedf21fefa1fe32fc7bdbb9fd76dcda1fca7b39107d308d11a118e47499dc4092ef0cd28d0d9af84440f095b4feb7adcba198894cd89a324c60ed0b996c520d4b33391bbbef1997256af7ba7ec1069244359066af81543ca23105742fee3480f890373d3205236bed566cd22a62bf69f8c0f27b714f84a203bca1605865e2cc2f9211389e0df7a4b3aab9d10826639357efe1f5fe64a1bd6d06d0b5605658c4d2d12e1bec77e70ea393b0a09043dd7d6684bd53f4c883f2f6928d99ba91873d063d43600f9105d503b11d8dc2b05e34b4fcf18e78b2b6c97d3b2c9249a2f6566ddab2a8a67fed6c9f8af2f4ef98dd579f2d4fb572e178489c503df5d5f03bee9920db347a6e734ed72ec7233387f1579c13725599a33a90915ddf03725dce20fd3806abc1029a20732380596057830ed63b6edcaa4d4418871bbfd58de1d1f2800588ed207f2016e11abd1baf1895f6096e2c75cc5916836a9ddc09cab4c28e53fadbd7d3080088131cc270095315b61011b0cea5b4d64b647bbcea54d20be1eec0992c72fc9c9771cae19191cf6a6f1840acec1deff605626d0a0d79ea8fe0af63ea75e80f8141fa8d7ca6f4c99dc7e78aeacc67762ed0134f1a0b053debfb9ccb145800b9818c2deb46f7124e8655f37c3291af107ed75384afcedb44518ca14cdea341c9657ec638531011cb957ed6b3434b736ae8c8199684cc58862638c5f6c07e1cbe8ae68c5582b1697ca9dbdd01e97023138a9173d6b1294cd99514a28102e6912b1c87ef22cdc611133bcc111e95c355a26b20a3d6f0ead66e932c5e1229b0fc17a7d6f78134c69beb362ca75017b1bf1105ac8970fad48acb8313cb3ff10e9d72c4ff11f95c2dab59575525c98653a9c7d31585a3742267c062d6ffc7a4303a3e81a45bf39e1ce2097623bba70f216aa612c64ba06ed6d596ad6abbdde69d56ab45e25ebcd4e485824449550232be26f987c14008f67c9db9d0f709f567fa44502b9e0839457e5f0aadec0395bf5c38ed8de7529708e58c0a895198fc8b2570fb6e68547630ca7f313526d392ac4776be973205f971854c300454d5", - }, - { - "95a17355dfa9d378a18ba20e58aa4b8711ea1d6e3c65e0b2d3c6382892c7d02768437d47ed50bf8edc619c340be7bb1cd1d88b0d3d6bbf1031f738c4be09eb264c686d39b92cc7958e63c9994a84b61b5c412999ace8a9dee0e2a29eeb8dc537f63271af5f3844ed9c0d86e6913c02ed7d2b862a132f08f311aa92fc3757342d89a5dce8dd20d5792d5c60be9862ab168d3140a061489472f2266f297da357064833ef2554c49f8120ff40b961ebcfee1d0f8e7e5722f049485f72c502c9cc4afdbb70517f0fd2a00e12596ffe285d1b37eb998e0e89d756e9491ceb13e83610a3a66122b533c2c3461b3244438f5f7a7af8088881dfdf6a29fb563ce38c4c8632ada8e7e06baa2686dc6aca6bc944e5c14d6e432c4dad554803912b8fddb1c18a59a86bc452914b2efc1599c5597f87a6edcad33a7728827bbaad0a975ecc22b7748d7cc71ec7f51adc8fe0350e67dcfb31af35a8d7b72391642e29c2fa4b796ed8f535f6bc2b1198baf1cec858aac38959f83130af55c21383ebd57d364eeb0e442104004c1599060667ce5e1191e76a89199a386e5c4bf147206e7d6e598bb27a90b3c6a54cccacb39a0ac42bf22eb40bc8ec7925376a6c57d8eac6317578ac052b72ab773f572ad961ee05531cb95ee5a6d70add4176351960fb4bd673f7db9f698616a8dd41823f2f87924c40f131e6c83bc40ab1f92312f46ee86765c306cf4a1d77275ef9668d80f9d9c1ea0aa7b2456bbcf764e009584ef1c0b4b4c683fee3fa2641f48ccf7485a8356fb3dd22f848deefadbef8050de9c5c19e8c449c6f3ec2b1324f80a7d428dc44dbb966d40244c3af03bcb410a57ad1430615e07553a22686f1a62dc6cf090aaac3707ec5b44274b7fe28c7a3a298e7a8adc71e016944875bebb421babd2b64809be3454f25b90723e2cec68467ad2d14744b15de8f9c397a505a340e85998e207cd46fa18d76c46f458af4ac3821c0ac6cd68afb72c376c31daad1a2435fc2bf333260c1a82430edaf2499e7455a93b1301eada2e12365ffcd36a1119664d0c996318a3e55bb2c04dfc5eb251f7fd64f9d83f27ea6577d748e1f85248355ed19867857dc3383e01249cc37684b0eb8e891aa663801e4ac8f0331b38686a19f0d19f6e94c7ac95ec395962be0a4e3c8358d2f6d8f13191e164ad29cd1733bde8c31c7d8ab90366e26cc9a06707dcfa60bfe139a112db827778ac348fdfe26892fed61db7e9849a464e3aad561797b6c778e0688bbbeaf3349727b4670a2d0a08f317b0dc9c4b12ea85c0309d57e754d0c7bd5c83985fb82f776c968189908a8ca83b5944767c2efc3c5f898436de54fe8bb17224012a437896d9fa106a749d12aff657266276129ec5ac12fc7a77eb06296d2a2a876d931e479d3ea201cbb4b1b20bd81471eaa33786c624013e1f07577c2171f38f0511c6924078a40c2d55ce392dd2ab0885e29f4c06907a1597c181b933853838970edad7777ed394c491cde27478eafa5b7a36520aa0779261f94b957e83ce058298dcfa07b08ecc425caeb6c599a11103d7631e77daa0d9d3fc6f42703d57f2c624ecddd56b9a27b848de7dd28f8ed656f1e4decc95a8908217e2f2453ae50b5fc1d9352d735ce5bc2b538eaae25501d449d090df793151811443c64f28d19eeaaac4081e10edca4c4148e723ade8f7e7b988b732ba08b3ce4c8a0d655bac4ff66048148135decd7727a49ac59d82ad470b5479c55d3d8399b790ff033d3ef99d770e1eacecdc140480aeca1e2167553cbbdef2090c7592b40681b733b0a0d127beefd49bcbe8904c975a5ab8b1afe56d7ed7667b5cf92f537ad6972b876843364817c20400524097ac9b405e4b35bbba0d12355a0b54bd763b4491b2acd4e8e4fcaaf8fcfd398499d4c4e81ffa93ca07a5ff51a1540f178f43a931e07e1ad56ab5ce57a2f7dc3ccca114dc9ba8a6934e95f4efe9f3f76947909b280ea5fd795bbbc0feb3ad2b704e305cd9d8f37d178961f77355eedc9d7f77c58e1db2f7797eb8682255939293c3ef7dacd2eab46c4cbbdf929aac301a13f59831a88fab173803399d96dc216abb9f079e79bbfab667ca590266891c8a7ea4bc1724573e5c5a67e9f1341b5bffaa538e240f78da7733237999ac86141b2ac0324f17609b71c885630c90befc3b027a5f01e33979165ce2a00968c414838446c2aba76e1d7fe3707c742f68af21d30e23b637accc848f6c8df820a27bb4e94e5090ac6e008fde7cf3fdd5931fa891335ec8d01b5d6f77db57a87dc35d6701adf7ae0bf82dda6511c83ab4d7d3460b221eeb3d6c4aa537924db5559b1c6739040534fc330f5144c78bf99f5f4faa715e85aebac043e2529197a82ca40f65a8149a9447a9e58c61618600b0c5ab221420c0cee114a133a648dbc2eceb2894ffc329376d1eb3ce7039cf30ff6a53038b23c26c38739fdebc7b919956ca2e468d577dea6621a8d66b78075ad26a6e6d8e20c9b694698540d516ea2bd108625e5fd038b5f1e19c5d5993b82bfe16897c375322dbbca81c81cef6ad900f0ffe5ed02714c208a12f5234d78e32ee07af155ad1e1077a0d8938f426d8f326c751f6ee66c8f707e8493cbfc76f9ddf1ea329e094315a91ba9385e16c890823db0f0231c7f939a042665009d5edd8e48102c515341fa6eea33cc00fb5d82380d735b29f2eec3f61428f7b186d43fcee46b2037ad1aa6974d729848cf1a80dc8ddb0580c9c876def06d8f7642cf45263a655ee77f047fcd76171546319622bf71283f3bf0b519e123a85765779c8bb201e99981ed184e642f63aa61f9cc206bf45fa6e514bfc637671d9cdfba2891bb112a3cff438a6372ee0dd3e7d9f352ce52f8b367b7799e1f963bfe50638f0c74b94873fcd3d66fc1e342a8bd36fb8b88f33eefabb78eca4dc9c89e2c57aaa010f2140dc5ea7c86cebe2f8bf42a167d1d546cc80bfa9258c35af6efb1a090c293a4cf588e4bdf5c090ee7fe38fd7b5551e71e5ce2b0b5a50bab95bc4c257edfc94d37579816b4a2249ba05c991bb2ea02d047e480fc8a8ba71f48f344c6d20d140a64ac20184e45b4eea14d0953370c237ef0a47a7a2f22997715dd3ee8ea52f24ffe12674d571b3bf968454ca051701e411499bc43bb55bbd033f9b81d4baa6c49bdd49614efd20d58175af868ca16a9deaf65216abbdc3beed5f30b209e786a5b4c006f3bd27d93e9d78b51a1a2fb7f5160a0bc1b7df70952ea1573888ddde3d9dd5314b0d0a899a733eb48d5e6c7274667e362e4da6b37c480aa4d0d8730e66483fb1453a3aefad69942ac7f09d3c571b6275590938c541336a121bdd20722550236a9a5e4a37c7de628fceffbc260b1e9b6417c4295907937b13609b8585ebb8f076073abdcf19104ed80ffafe1b09997f115d987a552be5689c70fe125ca702d2ae4d807d5690bc2e90b72cabb0b61ad203b34c68df21c16b92bf8def5680b204ce327214c32e4363d5600f96162a6819dda472acc6441858f396385a16fa5ee52cc0f9ffef3d53c49d535aa37db2cd4b573ff81d74006677969ec1ad891082b5d18ca5b0b9f975574ccffaca72b805c9f7fdd76bfe3dd384dc953255a5b50b7731a137fb9aad42e77d3da1eff5a7b9eda5814993cf2d289bb25ae1680ffcdf419e073d38b4701021adb2019359bb70ff4cca930be7bb979a0678f20665d14803d8753c8ce54cae92feb026486ba747a861daa449863bd38cb4d5831aa6db1e7f404b0c3587aac8765aeecec686066ee7d11321574f04d3f3da571e71222ce07277eca7ff97607", - "5e24f34a8d53b17bd0c2aee5369e3276dbd7e7c2ea0990f1300fbbb00831b76655aab1e2fd625ecd", - "c1d796f1e651a1ee825855d80206baff6818cc8c247ee6ce62b7531e6e9ac32f", - "240cb25aaae4d085bbb747a5", - "319e968ad291ea5d4a057c38f7afa4ddb9c9565962fa1a7b231e397a268ad8e0c5030a2df09dc4f99402ddf2e0d06e753bf55e1b318b3e5ff0108de2328d3b8d53e23e08bf7d84d59fededd60d47bbb52736b0491f82c616eb5f779c496abd6499555035e4513c8613e7204e6bff8d06dfecd9ce38c6b83efd8d0e41f84f7cfc9ae07113237987a4b2eaa87f7e0a310155e282e57858244e9071712fa026cb781e5a4bfe6fa1bc480e534096394459a3d1354e2d9a54aac6926a60b388410fd0b53f7a3a9116292f37406369c22ea674418c4deeead171e00f74f5cabae5d24a0686a4bcd8ba99aea613a23edd0a019a319daa3779c212fbdca9d772fc3fe612cf178c2aca2aeaf6bce2433494027a474eff699bba95fc7dcf79ca1d77b1e097439a9050a5cc78e0b78bf2e7f50f959ea2986a59be3880519cd84d0a673acb0432feb1945c603e70748445c74600ccfec60efcf9e4d02a7df5f967de4b473f63b0b0499ff4ba350ec1182f3a0ac17ef9ae28945fc9bc714c49909a7c1e2f311aa6ad7652e22e1f48bb51cf53814a2125152813752d86c7f9468a991d0ac84b1a2f3969b8081c228b7f5760718036e26a10e211ff04ea323acdaaddf9b06a08c92ed663d0fdf13fa601cda45c416c2d3803dd9b5ca29cba57e59cf4ad93176c65c64507b1995d638541c90b381ff758833a2ad67b0de44c280fdfd82b3c6d4353ae30b33768863cd3169a2032f26e37ddd57e7da1673cfc7375bf6e6792495a2b434155d684f2a6f2b919f944469d47be5aa7da74eed69d871e6f65c3ae08904a9ad042ba39905188f0b9158fd14094bd6a408fba6ef57566d69eccda86bb54cd3ca7381f51bffeaf8bcc1ae8df91d22c359888e21b70f640d6f3726a34e6100ee269124747f0ca05110f63deee07e3628bd6aacf926036ccec02c0b6bd7259db52ea8b7a686b36ba1d0296c85e43e25d72ce46c66a1e646301dafd2f4c502281e6f949011cea69459c026c65bd130d6ef06be17b23a9c9a84746e39d017b144135025ac527c1e653f233770cd68e9f232c3b623ceda836843b3e9ea313cc6a57d28ce71ccfb7265ce73b06bce1447220645e6f66caeb06b55129b97c8dd8db54c94d771504d24cedc86a8ec706a9f7dcbbcd7fc7cf38005b2913b1cfb77370bd23183ac7b5ca5135a2738cc91d05b2b22640469e3daeb6a7b0f14fc6652563663520f7754aba624a35e5d24529a6ee9f5ef0d019d83c04f5a93a38b68cbce0cecd42a11aae305475806326aebb4f673791f50c9f90894add51a0fd7c02807efd8c1bd21fa717a860e224bc9fa3f40975fd8d558e4844a09f8920256528450d77e546604e2ce2d38efadaf39a0ea3ea12156174aa8a20481e6c1190e448564675f9ca60bcef37cacec5aa218122e7bd25b571ff10f54979d62018b779a2a3d5d7d6cd56ae31efef2c844ba50ff9da88eba7a8e0d9fc5388a805ba4ad35eaa4798e395d2fe112083cce2f11cc850d25ca5c6e60a9996cee4789ca99d519daedb62f4fb1e535b742a35d71d7390117e93821ff18948a78c1fcdcb90a5f1211327d7ee0663ef16ff446e0e22d8cb7b2d3d05469b1c02864f4a87e2d9715f60c9e7be841e308d0a5f6c50161a4a0464aebafb88e0d2df8cefcead93c9623106d5518a9852f320235594be10c45bc0cf06c9daa007100ff97959357f9be8e49c870d0a11c884213e266c35e9131439fb3654fd5f1abd1e778ccb02b8c262753a22653a09272a0c33b6b2683c9045e8f967af756b98dc1797ff605c64ac5bda8252e9ebfe0e4d8d7ca754fcca5e3de3c4b63678da095281d76d60fa12ff4ca818825f346b9c4e426cee16db5818d78a527a901cd088bc2983f9b83430b50683018996996717a1738439680b68e3f61cbdcd0f0e1a6b436af8fa05d3ce2228054e319bad1dc6ac970c75313c552fc1136fabc302fcd1d09ef1b9138d18133a772cbd9cb197ff58c6e898f9e83e4e27206f3b15b6bf2778aaf9fb38e0d50152f8dbf5763816132a04b4b2e9639584b3dc8ea6d95ade024f9497944200ab0aeab206ef099859b9240aaa15f737c1e0fe6d015d04f47261ade4928e3c2ca21d1f5ab4a3f571f2ed92ebeeebf2493e6e39f0063ba931e165384ee1b5081f5f8d26ec24716757037f5158d35effbe67009080ad7b0381292a513f312eb28328cf5ff47a6599e36c14277c3eb5053c5aca530ff5954c21c03fb3fd5fc0facdac36dd819b0495fde421411e0440991da0cc4a20d294446115c0b79045037fbfacfeac574da3bf192fec4bf38c27cef71d03787430223b6069ba6d9273ec8679736a832277c657862ca791b559a5054ee8c7c07618083f75480c8aa01cb086c7317315911802e6cefb15bbe20494b14d97e3a885806db775c216dc15949e3b724f7cbb30bd2c46bd5a2fd6132352c2b21cc2b47891dd9794975f70a6fa7a0791ee761ccf4c263f27f64790826c1aa656c39483e029baef0855935e7e6c133a4035a3699925fbde131ca62948879373346af35bd7fa52b8d6c3338f213bbd9c79977c0d710028d1d386df614c5faf4a1f8fe5506a9af7059370893ff6d07d91383baba67a617b5d829e0e2eb20e541ed5c34be7ef0eaf6c6f6f52d7ca01933a2a4e8de46e422dc95161ba8ad354f6bc7c8e4cf8ab5e08607530147fcd7c9481afc621c5a3230a05e2c4db79db9e1e73f43556a8e8f0dff7ffe420282212f23d4c5f6f8d2febe129b9fe5ba7ddf27f72ae898a4eba270b5d2bb3b6b06e38c546ba80a9b2bc46097d0b47db5ae72485ef2c6419e856c33c2d66a861b9d474699e730eb8a8992e3ea9c1ed74316687d5d9fc611189eba2aa31af5ba8e81179866dc016bda977c59c595e40001c8ab3a4a44cec00ff84c6dbd9ad4be30bcc080e69b9398089d6ea464a70f536ace3b447693301c94850606d0de1299770b5f45e6d28f8ab83e3ffe52178522eb91fdaa9e4a696674ba0f52ee18e960b04415782f018d67479081b1bf9b4c9b90de026cbb66bf7d9d12cddccdd9b2c8ee2f010892571c6f0c0feac9555c71bf61f9cd69553cf7fc2be8d058e0c3430e134adb1ba28985fdc4f0cf71bd3cd09f5f82f303cded0de62f98404477bdd0a846c6c51e3e82ebf72f475afc8e6388aec57206018ba2528ede194345cc1ee95cb2023793f692f708aac3c9e8a682af36b078f5d6c7a3ed07475e9fe73b95d1eee048ab898edfee3fac4beda45f03eeb64b2128f6df9453ed77c6010e13c0270c068f704f49e62fb7410be90ffee47584ca2efc5287dae1f63bcc1819e7548eb9f0d8a3182f9ed00da3817255a2ff735876b75cd21cb25e86aa4b2893f9e5089dfac76194563f9a14335dd37ef06a501c89623caaf6feb4afb792092dfed515ba7518e278c341834a9dd17b50a0fc860b62ec621b69408cb3fbf7d4ab88a3e367fda84c82357376fa9b1161b739361c313b99dcbf4122f3870c8175093298cf432174217398928983ab6cea4759f18e7a21d71fe1b0f3cda05d241e12db0818b8763bd23d958d6e52981ce8d84cd6d82640d2000874a53c0bd14949ec99e48ce6c954ef0d08e6e319de5ebf7e142f25c0f50ff13f6acecde6a270c8d8de05ef4c310ce9e92f40f6f2b77d6e7aa3f056d4a20f7faa7cd0b93d82e3972343a50a26ff462caada10621bc953b73913944246d2a4da25fa52cc6ee1293c436ab9031ee2dc79cce39f139f44d473c236731257c6f65ca4d383e39cf8d33923afea3c80244021d36e0ed43230c44e7d1a1297d35464861f9149d869f26cc51879027169803e43c898d1b4a2a2480197500", - }, - { - "2158abc2472e1b9c061da2c01d0ad9e996fd687cccca331fe8a2baacd12c06f284b1b5cbdfd067e5ed09a60a137ff4a97c5c26482659680ffb22bbcd4ec1bfd272749e52440537320fdd3c225c30ccd98cf221b34b89c247ab7d14f93ed3ccb0486a028c6f3abe7e17fba1742b6d4db85f6e6baaf82df1a3aa059de8d9699821d39bad42d56cc1ec67626092cfad4a2e1cb5d814e2cab78ccf5474a8bd0dc990a877d37de394694af6cadcc57727f393dccba7bf955f4b65b3c00d71cdd701754ed4f231685b7b5e2557239d7e16305be2d81a773765dcea25ea5bf2c15d670f3159409ab5bbf8da121c779132a8ec1480068cb76b68a19152fd83135aeb228b446225f91d1ed4303a4bc16cf3ad8173b30d2a1e75ccafc8c933db231efeae6260d45c7ef230ae2c7b6f986f1c19e2cf260ded9cd99d64a2d03fc5ee3d73509e47ac1c39dcca655839fec75517a9243eb611da8fae3e317e7df66cbb6abd59b16975eb463f509e784e65cd660ef1a4c5027e54b1bc862f397c9cf4e6594d98c2c2830801d3a679220b46881a372cdf3aaa33eb66b91a9f36b6941c0fe1b4d2a437daa50b811f2d8c65b5a69de185d78bb9c2f172dc90a89324c5a2067974aab14f4fbcd06ee95cd49e03717f88480a410afbb4e68b5c79b0211cb69b90604cdfaf08af1ef10cf28f0f630e97ab18d9b5138d9b9ee9154e0b3104a6c164f2a114fa5032eb5c247a6b87880332a0dce7b36982515297a05dc8a4038a09f52b1def7b4fdad8735443fadc462c7c22132f8b9581de2d213bf5c53f7fce34aaeb24263afefead5341a72f88d3acaae6db367c5c14a97d4f9e438e1e11c3c8fde7ee37e5ece5382e8c68b660146046ef96c24caa6bc9fa0a0c88281e4bf01b32df5218cb3750f9c4b8af24cc106abca62d085198d14ba2ded3cafc1fbb17519a696965a1ba5f65720e893f1ef3fbc5200316b9d4615bb23426ae53e1c5a57b2f0ee0d0c83f353b4ebe7a6cb17531d278478b4ca8e6ffdd0cad30ed73d568a2e44972ac88a7e7d665614316d674e84ebc739b645a9a4166477254ba47bc5c2b05ced88e75bf64da21a7f1f71cd946d84de13ca77b7e0dc2f0617d371ed96323a83bb11dfa16f81bbde913d9c259b10f3aeeb6b56cc4775c25f49343cef667763118932c2e8b47ec745ac537b37746ed65fda2d1c11a2de60ec02adcb79152e8a9e614d8715cc4e6b6891d6a0063576560fa3621146308222432ffdbc351c36c37d844a934088fea92ac54920facf870a62e91ba9299dcb6cbdb918e2d54fb642c3f0d60489c4bda489f6c584b64c8f19359ab25f388dbbe636c4d90c048f5ed87024dcf9f98a9e738163f837a07750d61203254a80d120c795f9c3aa791272f9474fe330da81a45be5ac838613d46c25e781606862912ff88af393040605fd4d55d07e2052227c37ceffcdd2d42a08bbab69140dfa4406853799893daf768af546f915a91b81d0da719ebd45b8b5f1641f15621959689e810217bea18e3996c532ac6e4e2e4f289fddd5e5968bd6fa9aec5ca435c532b6c74a7568c8aeff9dd19bfc2fba3b484a191e2faf9a069a24e2e6d928ac0bdf635644cc1ef3bbacc547a8e4f1d42d4bed3b6b8cc56216fa550dc37da9cf4d1d1591d9348594d14adc7a3fde5e5d1a3b9875c85de7df483cdd0baa86dae793e0796d14fef1f649de6079acbec6b6fa5f2cb2bd0481f5316f00dbe5dbc379bc3cd6d13bd8c775a727ef43e6a5fad1051783b22c05a75d64a8394a73fcb430299b015563c8cb0ae0aa4ec750399855411c076d21aeca8656f3d0cae084fb0a1ffc6f73b52a7ea5d4bd6d24e7057a3811719533105fc967439a32241f2d3e3f299da2deb821748cdee1a1c5e71bfdf88d833bade2f505268f375a9e6488cd8e16705cce91d15b60b2fd269a19148296a7be348aa349a12270fbc0d5748e538afeb0598081a4f1349217ceab3c4141d40f765ea2bfffd530fb9606601469fb131a44939be984c07bac8f26d8c068accfdefb729eeb47cfd6ddc646e22031f53a7698c6501d86cbba05e282d64b2f962a1b08b9064078dd1e3f14006f45f599bc8e600cabe6d855fcbae8c3060859202361d929a241f6c0711ac0d050b67a1d44da19e0b0e236adad1f60a327c9c34b2b9c64cdde5b8e4f664f2fc70599d44a63ee2b14d051c27d71231098ecd3d4086038d63e84547dfaa39db1a92785e38b640ea0345062a1c185b25a72862e7ae6574114eba592d6492087e2580dc5d361c473a614d647e66c0a30de806f4976b69a8b92301e68794ee05b96ee116a5fd5edf5eab43dc1103801eec861383f17c2bab9f2d9126c1802b7aee0c909309ee72679ab644abb9c4caa54add283b5954e6f881781e42f849bce6554c7a5e3becc5d5a209805ccd4a0117272a53807e3978ffb19641a9dffd9034490a9284f658599961daf52f24f6464c2099cc9ed3459d84dbde2ebbdbbeef25c882a9beda03573bdd4c6a0143b14d634a1a021d5f9fa23a7ed0f5598ee57e56672814412b6c7c08b8e709fb98575fe2716100d000a20a7e7200d800e556564c7e6a8da9d609b18ff0bb8a8812e96b834a6b534b0d5dc97f5da17f42f8d58e763f1b201625d1a5158c2f9e9e190921637474ae81d278002f197f7211540088931ca8a941794e56067ef4a497fdc6fa713aa9f20c21f23c3a71ae4cc5aed459ca7c020bf55162fbcf56a066546660c5a009b8ad2aaae9651c97b1e145853a10013d1bf68e7df25dd492c328f823ed982da54557502ebc6cc56d4d0bf2881bf3c536ea53b4dcb0886e73b066969dfec343441b9372d7ff38454c4337d45e2b999415ec48f19cd05f0f80c5a61ec369610784f47a5cf3b2a13ff5d8145303ade7189a300936006846812dec9ff15500f8daf47236e724d72619af3a6cb3e854cb8284d5b8843dfe056beaa45c40a4541a98c7507feb27a605d6e07189c8c5554a492a03ce6701d3d2ec782e2c1c8346b54a963435bdda3a93bbac1d837172cebb9cd18903d25cd6bed404eaf18730a6d1c6da0783b5411770ed34f35fa6c11a4292a34565ff1b23d4200ec5a73e6b7905458088fac19f6aafd35e0e791f28bbb2cb0117ca1c3a9e3c4863e487ce5d8c14dd140e9eb4794d87d75b01f683bca84ebdbf19dafab716421bfac9e95755fd346a0cd31e8520a55c7ca652ff63fb4e20ba67fab41e11f7390bc02363162097802c6a9eb18b430d07ea60064d5b546d15bb68cada79c113848136e797577f1783e9b53574f9427be3a28230fdd69d139205dd6c7e9e7f031fb6eab70d69ce905384c5c77d084360aac590a89b2dbb2d339899b13619b455cf9f0cdc08db6c5b5f3223dc3a663ce42bcc8cc6f947f42cdf8dde15a6926b753177513a52be95b1f0b88d2a1ec90e49959b108fe204bbc29199d7382c42ad5dbaff970cbd2dbeade54bd70415e54daa805d396361f525f38efc2bba3fd818f9d7af0594dcc341c20f18c624fe13ce7e7108e1d2fd06c58b03f04642c95e3ba00d4035ea0476ac138f72378d85050bf60dedc90af38e96f67fdc38483a73e847b41d31b894ddcb234f02b0d507bbcb15a8941f9c23b592a291cbeacb3ed213f2f044aa842275a7717757467f121294bba6b357c969e96bfab455c6f328d9e5181d909c3f0543b17d9af7fcac099067b043be79aca8e5a75c3a6d4f6246357a63c516a3ca595447f34b43a055d3070517c67ec36e636aca9ed71a001d4f7b81149124deeb7826dec3697e183d861d544c9c17baff82849d599e9e77ed19f801aa1ce095940674576ff270ac788d00c429187e299a03c6f3a1646a8f7d6290287e70bd1276316ae624da929c67936191abdfba45e2803884e5a3136205a38a841448968a7900709dda033a42969bd3417a8d865d0dbee1f261f4556797dfebab278136a182a63e5ca9789e3f1371808efe06eb0cc5ccfe26c0538d573378035afa39fb7cdf3ad889b277c8c6e84954e74f3ff3140bf13bcb45c822784125d23b5eceb73e", - "088fc7ba068f80efd8d4d62813c93c1eba77e9ff400c7781314abc901873ce200295da09245bf8fd2fce254397616151d94b511957c89a881256182ac9e64acb7b25d4a080cc9daf9ac2f231235483fc9fd415f69caf7eaf0597", - "78d5f86b071bbf8a185e5e2d54faddd2a9e26983b1e7a74be0f0b979b9f4af31", - "d9ce7d249af9496e99c93b36", - "ad542824b49fc520f0b7ff8ce2bff8b3d47baacb4a1c95ed56a306483aac551fffba48e8a8f5e4cc536e9266182f6811d070fb9282f5c542cefb4993ccc7044b42cfd6fc71793dc8dd2de23c630f9ceaeddba45efed9d7fca25fcb07d193c000822478b19c2ee9fb31760cfe01475ba8a003db469d1130318a79345a29d054a9f9412dca1edf6d8f1498af5bb6fdbbd3d5f9a244ff176f62742c53779291ef6294df6540d841f4ee8c7c58fc8497ba74d9cf7947add5373427d81ae928305b93dd26cfc65e63b0ed0812ce759511bfbb10aca98f2abdbc9055c4e5ab82637f6a965bb74f592bdf11118b8eb79d50331e76cb4d10c6b4428cd4ec2ef4cb727bdba2b5375f5184d77772d0f9fd3a3c579a4a548b9c2dadc22c805ae959617af49a514b43f47af834313ed2e4d1fcec2c4b9ea87f328fa3d23129a36e6c54bcd08f7e30645de86e98ebb11bcaf99543503eb1e024bc9fd51fe6bd5e6d749033f2452cdf28b3d0f8a304111bdd26dbde641c02fcb15dc21b1a9baac5e86d35b4126ed1cc8a2c3c2a5b94c99fb9b2008daf1a0c090633bf9e31326428c75a50e821b1e72a6504c9d7bcfcaabecd929163d365832e8971f5efebff99ee3f5b95f957e8904d05b410936d8a81c60b4947f8605c58e5b727d491995c76fbe06e556c8ab5cc661a0c09ebc98d61010050f68b31fbe1f9de8f6481b2704204b0164d8433ba4dc1076908c782826e9b555e8d608463581099a466f92bfd6ac9796eacc0ab771a3f11d03806b0f33ec04c69cef6b87d58c11acb5d1374450ce61ba159456b915043c5c17cb03f0ba66d027105bb6fff41e6422f13e2a466f073358bf68149a3b577cfba7ea08b42f83fbc5a2aff17c5ee7dbdac3ff97389f5b8d1f3750e5c9be651209eeb9574127ea81bd7619da16d1cfab85754883543f6474c8c0cc9d5b80e34bf8262d2b4798f9917bcab4b880339397907a5bafe7d149247fd735523df3cbb17ae5e298846ad3bfb7d4f902aa549b7667d3ea945b002e7b209bc83842a7b120d6d27ce80631404371f31d1f61efc5423e1822032a1cbf4fa1a6b6fe79934a202d5add8c6e3595e49be3dd9553a569521c50e9653bc684ef2b73c3526ff7a0843fcac9cc9ecf46e63df5b9328a54c576bd299a366bbdc0f83a9de67b03f1da16244bd6d52e7e4b52c4ed693827735554b05b3a260cd01a41d7c944d0b7b58ae4b0eb052da34bc22b779d7ad46f90f3d4049c097e0adeaf71bbb30ed24b32ff5c7a65177db77492c2571e9cd99f15e613797e319ea7377038d53b28a4cd66a697e5e8f84cf16bd0f0430b34826114b4e1d1ebaaf2939dff7f9f4ce7c0861e51701c42d9cc9e871018b447ccaf4e402e3d63be164dcdf6799314a389ada8bf5e51a35148acf627e51481b9b0e4bec09c9e6d59229721b151fa9adf8323001fcf33afbc9a949643172f39b0d10ef57b37973683fdd9b9eb46e63054fd05ffbef889ff8fc8f251b0ab41fb00757ec1964ef373fceb8f6d148a7f7c89944b3cfc240d091601b23046188ba70a7cdf7b6f96eb93dcd3d24d4aebdc4a29a749bfe3cf5f6e1a025b62982ce188e6b57245d829c9fc1dcaaa5309a8b9557b8824a78eceef6e977721de4065b474ae008642b974001a5565ef5fe4250194e8b861cc45a8691c461817f10b646fb526bf0fe7790bb0db29d1356e8c7a197ec78df8310431d632a032b5490c2a458eb8d4327a9679d7e8ef8739797b0e820e2c567ce3562592e862a1dfcecd50bf77fcfcd00518db65ee0effb9eb3655d5d401a4a47808faa596d17b316f828cbbc14a7e018a0593da9320140a752f3824b5fcb66aa4c3cb94366ee8b821b09e7bea2c04ece15e8a7be1f58463b525e8cfcfc3fdd395ec5b0575094313557e632d0a65e3099e3c653111a5fb4f0eb2aa710229fc055a2bfd8a7147cbecc10823f1244fbb6894af1408ff9047d6483ef83573b5421b9798ee387dc38f166b11de6c33e9785e9b3d9d28bc24c37890e4f8f8ff24cca298b44d6fb1c6aad28cc634a67dd427205285521a172c2a4884ac5b038e261e38faf0086a02aa29195713cea335c47d03d67fa0dec7a8cb21db741519f5f0ba0143f14d71e33d82c75d6a19b3f7a42e6c16d762354daa2670ffa55bd400637de9cddf9e7964a03b4c8956f36bf54d89cf16de23e8c52957b52eb4572a11d1398be72bdb129e2c1abb58c65cc291bb7b0d2dc326c6125a441863a6c92de0f47a355222d58bf10af0d297a86a98b4e933a8f844fc7f1bbc8ba77919dfc50c41219e3db309b92ba056349faa758daf360b8ac05e43fc2069cd46e63fec399cd7764b111467fc65407ac06f5f84a3179930f6215ac5ec906146c19e0d3e162e77a2bca3582128284282b251cdcac03ecc204266ac3a9cfe8d8854008baf89c0ea0096a400d6a0d2f7c681c99462cf0105f7a3dde690ece0438fbb820b9c73c6cdf6208c336831101b904526cf8ac331d879d71615d8b1f750ac7f0ec692d97a5e21e17e194a98c10172b5c4bc1049a8743188ae7c4d70384a7e68c1353aab7882bb91aa383821046ed0ebabb4b2dd126ccb935f48646b299095cdb71ecd5cc402e4635a3f7a3c8a6f54f4076ba028dedb402bcc92f5668dec3d91dda7319f58382017e306237e42480ee2c1f5930564cf16fdf37a3434585336b8e4535bba87311cd47722b9da727250560624a5dde48a2090ee44592d2fc06edda634b600fad9f843c6b2eaa0697b42858afee8191dd2a31e5685bd104188e2ccb057dd0a8d4d1205d7c846f5b8ec0f06bff61c7f47ac4da30e1bc80a4e95af79b14a83e9af2e0f195cb92d14f752a5f12ff90a05765be453075d799694848fcddb07859336ec101c8052bdc273d4abc313cfb351b543fa340dcd01bf32fea59881ddb8f33c6023ccea70532814ce4a2d0c66c846347b86c29dfc34f6fa4db298911d4367c59939020a3d078194e6a3a3c5126c24ed182398468e77fd61a5b1271f5cb2a97868876954c3f7179d6a045f4bd770f681cd82216cd2b1ceeb4e724b3fddeb74481e662fbd7f5dd45bed6d4f89d21b8dd9c1009ad2b0b16954e97993ab8f3fdd9d61f8db102a945591b4552f419971a9e46a792dd8392c8d9502767c82d9b4f69e66071eb579859e9ca070cad5fe3b7fcb77b8474926ea991ce7ad201421f8a79c051b762a066027ab2b9595a1c97ad57f3149f5872ed4d8e99195d47bd3c03bbee590a50a99d8048e912aaeed797977b52f0240a6cf2c865b108456881adbfda60cf701454da17bae879cf098df808f34e50bccaada2d3edeb1aa73cfe3c512d814eb33897b6ff9d67d3d682517cc333c3c2552adc99860b1f0d1076390de9f84fcc9e802581f77e14f5254da01831c70cb8581630dadb44209377d90447a1a21cc8a2d6d897db62d8420afbcc6ed85ce42f3281255bd43e0afd3e86b27d3b957104ef54959282b0e1b381a26f16057246704c7888126055af5a1f494540f01897e8781e1a5c0193b7bef4b5588d0e9b9c8de74dcdb63f03f7b15cf48fbb71c7c3bbe9329e3d326988bad7d0cb85537c1e0b3cd88f37a3c7765f548f99e495ddc29daed8c7f15dadf2e5b79def91dbbea277c51a5da250e66c305604bcce4789ca2df9a10614d72824ba8e4f179f35ccae7119fd962cce13b282f0f970ca6c4776374c4bc438f0de98aa04fb3cf23d2c6800a4a666c15bd20c486e88e688ff9e5fce906b4ae96ec7c3388d7567ce6c8bc61f6d2373b93f9ddbb02b384084b3f28f54c9ddda232d3084daa5fac5ca356ac0059f2fd3fde5d6a9516d0954653b699aa986f70733538e19721daa41329abb95058450e602eb5726ad5a8b81aa474650659c6f7f6f53f8a6e635bf35f4b1191e0dbefad3be756c6141c7d55f007f4fd131e5d5eaa120ba31cc32b8d4c69d4fa784fe0af7dc272898789c774e7995cb252eb6c8e8053c9e7adb59c27f675952d161dba78bdfb15859fdfe4fe4a44c01efd394bf51d43c600aa9a527d9c490971e188e28b980e77a9c6ea0a4ef6bd38d11b47f5745ecdb", - }, - { - "9cd1c25b5bdab9b9080db3e5e05dc749e0783087c310777d89307138613bdffe0ca259677c13208420d4690031314a11a97a986d8b0fea143f5b4da0972c9ea3cef80b4b0b2bcf2bff392c306a764113f0d9807be86a9027c6ddc85d096600d85e0b236937f295362bc1679537a8a9278229a36a9433925a105ab719c0b7f11fc31488fa071d3032de97c81540713dc29ae02c2e13be8823183f3cd9f72ef8ba4280b4499ee47c7c7c4492bcb5cf7e4fafaa7ec26906e58146215a3d4f52f792d3abdb718f57ed0b9b7fc7504e45a0fdf01ebf5924a4da6ac635a715879ea75a4983cbd9dab9e47638acc687f16684e184443aa9e81513ae4abbc4d1596b2ca3eef77cc9b0603fe90c0570fe6cf4dff0381a99212fadcf7968934ac1ff7664ed6ee0b61e41f5074dfb774b676c2b57a445f1c5749e95ed062837c727ae2c151c0ccb3a4dc1429bbcb9e62325117aca566b8fca0924b70f4defd7749d0389b90f55f35d1635f8d2efdef514f06fde46db6e11e492c8f4dfb7cb5454cedd0ddd32013a4836321a25110f3a017f18475a86583e192132f8d8fd4c2dcb2a3aa95c3be3a57216bf9727cfd1284eea6fa870c8e689e91982c116ceeee2f8298b55646efad684b96eab883fd3d629437e9a0b6523f47ea5b59474a4766ccd01c13170bb08f47576a0fdb573d4dfb65279c1b79cb535426bcab60f4022dc42e40db29f15a6148b461241bae62070389932f035e7257752ef2d6130503d72344b24d360cae8ec11fa2dcbe04d3b18e66d081b552e93a71dc0094d1046bf4491e318f2ae00debffa0b8ada58c5f23e33fb598829ec2f46ad3894bd7f530210371a02e51ae0a414eb2eee43f3e08126dbdbae04c7de4b7416df32953234a6694ea84e6889f27c74206ab8144a393a2614e92adcc77550dd54827387b619f004c13f6c4a31e8bf525277669db0a0c3c589eda15063f12eb774a13e2aba2f2f7b6e9bc69f8485f1d6fc5773acf83671812412d28704003e78a17da25bacd1d61a6d9cb9f121abc71d023bcafa713b7c954e4e1c524e5bcaefd86c4a843e209eabbd579cde0263fc059ec6ff10017ba54fc9c2a1171d6b06f5d85079167117c12e6e5d0c71c008765fce756fd0f1141fbad6c1d2f32cd8e80429611a9a78dbc8e738d458f9ddce58ab43c77b34db9befb25cc1a588998e8dc2efa75c6883244fbbf9a7b4d6750c81b8d3fdedaf98dc61f49d067c369409f984b155ec347a3bef73e2a44957b0ca0f84c7fc335fd89453759ad0ac2fd9a5b38afa9fbe74daaee7bc52301302fb2286c21fb922f74d756de84519171fbecaa9b869682d431614ff6845126a4034f10253aa244bf89ab8e0dfd1f7fe8fc1a8472a10746d26896c8ece7ef80eb2e910069435518ccf096caeda63ad692455b04e6525bb8bae27197ca5118a57fb9a5d8fcfae1b9eb7874d91eafafa0e4fab5cb4d0173f7e3e58fae369843a641e98f3ee460e8cfe95d98f7fd38a8d2235e9d6050015833e6d7d21d7015c3b1ff42f0d3a3d9a38d373c8524752e06987c9408cca550f08c38c2a9a8d86d5ac7a04bab44254ed15c7b5670e0747788e11b81adb0d29e3d0b50d6a429340ee0d44a8c286fcaf9bc46403d26b4a4af95b021336103c1ae0f1274b33bb8b21c8cfca8a56c639f18a9df45d083fa7019aaa14d1ba50eb9a4112e574cd70969640602096265a87b1f77c0e00bbb501555f1626196611b4a824991cf10ab2874a12a8e0390267eaf9e3f8f99eadfbf40d111a26772cda1f50743c417eeec9c80171a83a730f246cf31c6691c96185d672a0fde9ccd7091c4b455dc93326913497396e0a4992773caeddcd783e534eb0f34b99bf23a2db6ee738381b5fc94ff603be014c507888ff55557793a8c5439b11dc5a347f35a2666eda81cda4d1c3a78fc4f3df3c7bde91d05524791b67142c446f60c3a4022912ddabdf817ca3280b671beaa496c935661e5adf39c1f4650563c5c807c8f21aa59df926199c4e2404690ea8ffd7dd65f637452ff93995fe9c5ac7a322b9bdc756b7ed6f533b9357a4a1ffa379dd096f144e9e0d87330c238ed3c6b08c8478e23b65518ea1e4e64585e5e9fec2f26dd7400ce4c73ff0eacdc3b07e4f34f6316f5b82fefc66e442ecc92bea8c1d58635d644724a3380e71fbbeef4bf3e57c6240ff603d65447f510eaa3c9ac794fd24f844489b7c560c7814fbc307e03f6a213eca5ea40fddf51d8731b74ec5b472bdf8ba59751065ed2461b02c41ef96622e60c0d26f9dc78c24f94372bef7e47cf09ed565ae3a52d39b02ffddf1953f1ff500f1659db9f1c2b23534702c19ec1cb7c18166fcd33997d53874c7cdb4e6c2b4d82751911913434e48b37a61a0971861187e5decb7f5c1ef6988bc1d6f7fd147a623d8bf361b0d7ece88df6e1ff8d037762d232e22e51d8c6ddaa9dc597b23ff9efbbfd416cc53e5543253732a23aba151cecf73b3ecff21c6a9fd1f24211fc21cde9633aae918ff1c6b72468f1de7e0ecb6539fa353c069fcbe8920dfa8e2fb86782e3062462f7eb2a2c441bfac21ab62744b05c70b6fc3c9f8e3a8a0c5a4263ed256a019861ecb28e20ce78e2d93f1a1def669e9652cb35d105bfdd5ff2313d27ab3eb00d1b628b4c20f42efa23390802af96a8f261ded3678ea0b780e1f4a88d23588a4ebb058adbf9a9c62ce2ce2f8264c874c697482e25f8d5a6daca4f57fd97d23c42d7b71ec150d4ee33931db5f7d63abe7d72dc936bb23a367c798e6a01509644284d52f9ae27d7d1bae597b2cbc26139354dcca0fff6d76c6065d661b66ca5eeb9f8d85810a029cb95b17e5173ef8ab92d475a1d3e21799e874ff04dbc962c668ef4be9f94d85b2a99d97c0db8f6b6d63e00e36c325cfab9aceaf7597113bff0086e8fad36eac7c0b443de6d3a8533789616d4c863df7200ba795a3b8d0a2b9568bb32af95fa604a3e3ea778c3dae159e1b612458584564ffda07b8aba9710134242b2d83d23127b51b9e41584c56f667b71bc01060240f3a2bc7e5d438e7095c1236e0e468079a83a5dbdcf132d258e9ed18f94d3c098867d06d3c09544565677b454be34ce567f1c143e2f3153bdc0353d65090dfd8f7af4633b89a781e01f4634dd7b0323ea1f38184e697bfc39a1299eaa278c39a2709cde0a346fea53a61f211112450b318d137fe68f6c102085aedabd2b045fab912da5c58d8019239f3a44b18f4fe30c5352e2e2bf030334a1dde1dcd23178636f1e38ec9e42102d8c54df0b94b207e804eacab3edddf89fabda6c8e1bd4e17ae31a57716c679ee8bc7de4412fec3934c6f3e8b4c1d1447dbba0fbc775dd3258f789ca53f1593cadc710fef6fd282bb41c0468ede5ad5b914e4758b4148b0d0c04c75ff6208ca3e79d92de8abafa4ec70ea7a4e454f0759337ce575c4954584e2bb8444c34e823d27b025d25fc9becfb4391df9882452bca0373164cd76e9af316df3f5bb7532e22557b485217254d5ab72ce349620f03758219b259784d4c9f1c7beac3cf08e624742e768b53b3d60ad0b94442c847b84a516a93d9b7d068c44c43980b4c7e2fb0ac964bf05a11fb2adb4f6d938715dde88061b238321afc7e5e84799b02a94baf3f879f89a98ab474ca12085137d639b837ebe069f6dcd8456141d063eb1c032aa392a44d1d58b1e77aba38a280625ab84e3b123507ea7a692c4acd1756c031fa52d637703ee957a993804c13e296cc20c1de55c9b8c032e50afffc51c02e5c12f48383237cdacd005b09243d9fe05e51cea42b77645e5c6f4e48c10e671d216b90a48f0d8f5c1dda553217f5126646d11a62587eb0a4ee0efdaf0d54bc2eb04cd34f5a529b682ce09a34d5acab2c8db58ed6244f7b024e68a14bcd5d7a7daa4dbcf490485cbd38e6f20e839d2b0142b9d766f9527937bb1a737877edf6122ba306bbfb5379243a6b22bdf85dcf3b079691f0e90b28a4259c1c9d8a02afa5b5a661a0f9dac52435e7d22e3591593d37eb2e10f646b51be2d1a96cd4490289ef642ad93eeffd64d7cf830d60dc4a98c768a9bdbf6ec9923062ff04abf19e8b65b95494a9420971018c7e6268b8fb2021a4ddd103976333fa52389643c711a980664e29a8479aa9c4091c2cc2074ce3ac1ab4afa217d39c6a1", - "c22add33457539a957d32dd07ec9110f8cdd2f00ab6ac256b4bc7732f63dd3b867b0ecac262555", - "e71f9a3dd457b4064df1d9055889f105af175a2d10dd7b8729da0d0116c2d9fd", - "7df9824e774c5f86d83cb5d8", - "689683c9e7aa9c48b9fda0cfffea0458ea0c3dedccd21efeb06126f1194780917c9f4f2f44b1daceec3f6b1f75506f4169bdacf12c1f65958784851056fe0b4b42a22aeb043ab35ca73747346ac58c550324c4b849a404c94b8860967b6fc58aff25dad0556f1952c045b91f56ec8eebf6f552c18b2a0641c037e6c6538b289601e1fd5a7bbe7b6e0b224124fec341bf77615183abafb52b3e30082a0abfc2cf224324338c132426011d9f800b382e6b834896ea48a8247f149d92ded7e69c7800096076cd2a729a1fe41c70dafb1f855ffa2ffc27b93e2f5f6827ade7118af60730033675d84de9cde6c260d3d615a945dfe0ed25f33b6cbd2c0e204ee919219d85c7536f4700f06fa61937f8dbbe9bda88db1f4ba8a8d195cd385eec62edd9ce673880800be9aa4430e5c10a5908f6dd349af70f32b32d8db38a7d73821af47b993b622bf168565082d07e88fc48231a440469adeca59263302438ece96d89de11cf8057454d1bfe8e4e36965a4d82618834a0847af39dd8776866d9558a5cff79a1cc9d1e3c22e050677e54ead68b3cf0094daa01330d41bb66708a8bbb8a196fae5c77dc6774629d38905e81d97c5b16d755182f687a8046e55d148419cf9c12139fee50c0533b0f04a805723ce1ea5595fca5b668e58f6b3b396f438308372489b640317cfa3a79392cf6d1afdd8c3359557a83790021a4eb418fa189ad15ba9be0f74182ac76076f102ec171117a3d16ca20b4d200e03e54f1f0ee6308e463a148c0c85aac3ccbe5781cf45b53a313f7c9975a45d1853ed9104a860c08634a8211b87500b5ffa3d8d9d56f22256d485b9b45b24d3873159adb8ae25966cc40f164f342519e88d1ead1e711e1b2bbd4be64c7e83f056f797c2d3a5cf7c5025f92be5637fa7738a1bbba55f761dcd1451ce4b1e85a6628b629a2f7917a86363b01516472c0f8614abe2ad1c9d5501b2a44a68e3eeeb34a64541125bf49138bcd15b7c82dfd40708414b85107d8b982c4f99783a03c707a37787a91a7198063f0e8a2d52dca61755105faaa09c063c7a0849570cba1aa7ddb3600eeba602c7e7c9b90ed00ec731d4d1d8e4bb42f9e9db21616c4aca48dc27b939428834404331288f03c2b5e887103c51748d0257519c3988f6492eb70cabbc2dd8a8a910d737a678d0970ec48bef3b81673bd10b687b37e11d49e7cf90c03c54826ecd833bfd9dbb8174274dd45b139d08371d5d248ee33298193194734c5863adf4bca92bc282bae2f47da5201fc240dd0710a22a8d922faf92c2071a7eede7ee17232d3b6ee5f3ebb1a8b230600b243c860968ab427a5f540912e5e7bfa0271201f288727f2bd5173539d5318e5c1c0a71cba4d9501b91c3bffa7bb61b3713f1751efe94a66e17d2b42da51d13c3df40f4db988dace42a6a1b9d138c4f590b7227990711afbf8f56fa63f2800cc019bbd4a7b3a0983c9b9e5f77562dcad6de96e3b2eb85cd99d28a021a10d6734400a91369236b48ed68528afc68f247d45c79318fc5d634ecb0f3ef8536d8ec2e877adc3308be906c5b96777d0e05970023e5c5dffed12310cc97249e4b95e32451c9acca8394fde699deda57e938bed7167e62e2cb62357f82fbe821ee73b4e09c6e2f512515412c2f27805762a8493e74a3d30bb409e499002a97354381318af28311ce484bdf7c39db53f08f73ca5793945e13fc8c66d503fa95506b37ce134ce2945d75b424ca6367ef4ed47b9cb8ba7de80e773279bf23ac888eb105385ea958b1b49b27c8db6b1e14a5c8ed5d28808a7d0b6bff1a58f24f9c57fd8b8f477a9d1365f89c698b8ba923896181299d474b93e05d3c915b10a69e61910761a6d8644933c593661b0828afeca590ca18e702322d9140d98fcf836c2f7a4f72b59eb529823a52ab05d919c3eee4db2cae1067213c5070450a160fd52fa44bc9bacc5c136701cd7adb1faf484da376477da08f6a4dcaa37af47c7b026c2da9d5fd0b30741357104cb2bc0d3cebd132b5fc7c873ebeceec5492aecab95ab393f35b93b923d2ca071e6bd8522c3ad8598a05e96646504f1620c045aa5734d665acbdda0ef73612be4ca4d95ba069041e042497f7b10445869989ce30f55206a1feb4e64890b7d1f7e9df2e88a352674a52ae4267c06592d425ed1d88101cf94588135892218ac11f3976ab2b47a27f02eb887696c94b13d48b4370eb11222274b5513a0fef905c66d0c1893832ffdb9b333178b65338fd8b81094d8f86f2e4e96a47e72032cd6fd47af87eec295c6e980f595b57f79abeb4654c4039fa03ade732b1e579551898b801ecd6e0fb1c5fd198335834b51673d074a8222640d2a969998f5b878bf897fdcf3426c4e24a7c599e5567643fa79ea5d20e7de581a873ee0181e3632a4e304f9dae09a81f882d4061ec17e588793b160c93a926874d5a8b78727f88de9bc125589a9562db5bb1c01012bbea1b2eeab68877871ce83455db43cc48455effbc71c436aebe362af22c6a319d134f65681c4d0d51f9aa42fb20f48ae3f7065664aeff5d8349624a5d79eb0bef3cbb2a1244ee445f560a6bf7a796b2c950a37dfb85ed5be11e8e305e835c9e077e676aa5ce23edb1f74806278548e3fa35059abc2f032289f9bd76043c8dd1352b6131cf34f66bcd0e7f1d13081f5b08ed0c69136f3b7ad8e05e9fe99a9b73624095f96740c1f40074e5d92ffeccdc0f15502082fdfcfc97a800be511c22b875f2832b2b891cb1aad2a17c7bd0be4427a4549404172f7c14d5e425e14498237c26a7813cd8612d048703cb180f1a6194f688b4644304950b078692faec7a2a5c5bbc482f3a7e8ef2825c4c19032a7a79a2908ca9774c6403e6b15625c485f2dd078902aff769dfee2dca9373704bf63ad981b51f61253910fd48c49ef10e3938f35ca8dd491a8e569baef675df30367b093f1088ebe8f876191dc32055481d074e5e47a4bd728efaea9fee3e83d8556255ffb2fa08194bdc66897d97d1557186d5f873169461494a83368ed8065b9a033fa4c2f07f7c60f945b60479e3c89233d58f674c0c6fa5918150bae0c6de2b65a09ccd490e2ad8571745bc37e70982411af667f3e8e9b9f7f75d863e5fef05c1f0d2acc7c86585a83ee32e0a64a9e67e75b80def5bfeb7cffe6e6822efa7a9cf049689b58336b081c039696e0fd3b2a2a6b0d177c9b3f8fe5cbb1c69ea93c1235b2c5b6934f603127eeafc4ed0728161612acdb2ba894a5ac376c4ef1fa8d49b4722379e5cb39752837395c413dd29a2a88c03849b6fb2221fd85ba6d5a50ba7ee9c09ecc5e6dc66afdaa1b021282cadc68f19529eadab809341187d57cfdfe01d0798ab8a94277b9b868612e575bd98f70de80ebe5f57637c511800373262eb5ac3836b03808ca5d5f732f286a5f18a7b7fb8cd8f60e4debe54731c9c524b84694c5469975443964ed28ccff2f4e8e0cf4c60c1c8a092e986cf12fa90a994e4f26ac89fabe8a0d1e27fdc00f1d3d3fdb73bb76809f93ea113e336cb0a5438147e454e262fbb7d656aa1be1288839bc342b48ba7d0e72c85a2e24be1a97dfb2db85b5d850481e62f3b11a28c6407686e73d550b9f1d0f010602e82af26813d2484a8db2da0814782c8404b2865abfbe3c98a07ffb37eea6de7992cad73a9b81ae96a9acb13ba213eb4111d868cc73b0432d2b6c2d7e0e0ca7ccbdce86d01576e1136871a07c76498eae53fb7ebf2e85fb8561d10dfba740400ef4495ece7eb33ce3bce26344eddd88cf1ed8028ec5fe8e71edda54dbdae08f50f8df6295f6d7ef1163f62262a200456a7777d0565d7f5832fcc7ac144b5c3e0ce3e5c9b7f880a54ed5e80662e96b356ff58f2e372b1dc0d73cb8b96c72caa9e5dd312841a8be23f838bc706d893e1a8a48b2c069874c293c41d00226f73f987aec8686046ac4c0c972c991c38b98cabce30e7255dbf16039b95dc7d103fde630b03441b15bd2c214763fece9d6778d1c6354d2c9478c226175c02cb006006715fffc879a6a2b4111f6234ee330d6c84d453c9ffac08efda1f380110a8ef8c2fe44e2ed644cc3e0146b4d02f76586fbb6d69b827be38b9add444e2bac4d7165007cdbf2ea8c4b967fc1bb70c68b229f19bc3f79cb13ee6265264885f04c09a96583f331ed46de3e5dcaf08313ba6053f3d0c1916a0f", - }, - { - "3ab6cbeebc18df951d371e0f3cce2697fb367476bd9d50ca9e668c77636eeb9d24b68be0ce6a75eca194fbde6221755d57e9d3148623de24896a9becd98789fd3d14de0c7e53f81fe7f3fd491472a66b5b797fe19c5d0525c7a111a0289a9e65ae7c712ccf694cb75c490070bca7db17205af9bdb7fee27f9ff41fc78ebd2d3d399e690908b5c064ffc0d5bb67b0d2880bcb45c2ca2741691b6131aa1e5ee758fc50610406216905e13ec049ee92d1f95e16bc283dfd91595ec2037d20ead51d3a362140578a4538c80581b79852b0f6686c1ea66aafffc872024592ec1aaf2650d167a75bace024b261db4ab48b401cf85ec2620dc12a7fc37012af8ac1d6db923d82eee962129bc4ede578782594708357d29118fd10dc6d228bf7e461d2769e556488b776237b6309f3dc2e884cb2df1f43f71c53d389765f805ac053d05fa835e75fab0adb0f13ceeb425637f43556372d728a00fb005f7c5a20cf2b7f776066d60b70b11a848005c6d63dba0c93f139067b39017c997dd6b94c0138c3619e9a6d0e4b8792cb8d58a2ca12ae5d03e7637f2065fbb9e2d1722fd3aaf234488ca157d829e9a3b642458054f3dd58da41d7fba6d2b488a327b776d1aaab1a364c710e755ab22b9cf7abf1eb8949c5ca20c070f275f8959cb00c6d5ab7879003f89f795351a4ef4850e033d929f9a349b9133b2e0bd1cabbdd381594bfa697b845100b96b5fade05db12de040b814ec49489f39f5abd5b37f570cbb516636d5b7378f12872d02d4de20b52ed8ca0b12029a4c084621bbb578b870ca2ea79fd5df1ef8664bfb3b1a1bf038e4ba33f6ccde42c5146470c9dd293aa747d2372db1561617920142ac1d32e4f1fd18e8b9e72b7efb8fefc56d08f00450d23b7e8381849b1385ddcf9310a4850dbd6db7a4992690190655760f557a5027b5ceab3743365ac9041a5c14bed1126c4eca00d7e0a0e0e6f666f64bd1466387150ece5835192149237d5dd25e703e9d3a4f652ae04601d6acf8228e4e86055394c3abc9dccd02f04a60c298d101260b408b2620c137f77e2019fc6eaff1b234c56dfe922b0192656254fe3356143e969f64b7609cbedebcc8cb2b68bcdd9d723b9c14669da6cbfffbca2351de51e87db6afde435ead0017682b8014f91d9734a9ab9b374257273e114a8fffac786d53183ba666d8a67e30c1fe45bb1bdcefb5787afcbad213f8e36e78d30ae1305df96bf450349ade655cccbb17d887f79e00728abb449ea427fd2d0af80e3b5607a74a57dbe5264131f2fc49cb74415974b3d43ff872d4106ff11b680f56be06fdf85ec9dd850b1f77f759337b9a9ce04e611036d3f45743e562abe4b959eba7424a712fcf7c3f3773886aef22f7cf6168efa83cd3ff70b9521cae1b6689b2b8c423d883a007bb138025f2a31db2147691bcb365ac242efe40cd09a746cc501ae0289e80205993b07f86538d486803da14b74fb0db6ebf1c2bb8c36275137d654c1be56c65891cd50f705247d85621fd0d61ade8c05cf4ec15b84e8adbcbe017d7d5743d5e91025e0154a5d9bac7c6b8297490e9c195c5d74e046219c042219817a5c56636c7c4382c6a01d721d88f4b4d20250eb5eae5f3ef481dbf8a3f47a1d51d080bd4cc33f12645c8481e57835b77a85a2d83301172782f22026e69a43376ac4f5b78734c9eb914e6c76c6a12d4127cf195ad030825322a279093cbc40a680355d086a27f3fb7560713b019e7c286d96833dc60590e9a709f2e3c632894668e74ed20e42cd83a23ebea3dc3bcc49d14f8697541780fb2072dee6a5672d0d4e7bdf5cbdacdf5fea9e03c6d9cf0faa1e954172acc26dcd344bb3d9b2e0e6015cc55d19713d795bdb7c21b44b305e69c69fdb7261483f9693f36f45d356462f1ba4498de1c2e8bc3e0a70893acef2006dcd73cf15b265a8a5d4ed792a34a846d8f1d3b9b3bb75f1c5e57a00b36c00203973ef4e2654f6cb29e4445318ed99f0de6ca992281e83ed03feedb66aeed6a461c6f2871ae95343cd9797e58430d5639d7ef5c59c78b29f76a055e18e2b85eff177770c60ca4f2d61e612e617e749b4653e7901b62ba02dcbf50e59219349120ac01e6b8a6e98eb54abd16b921a1ff85898f90fc49a3c8f8f4ae9b0dd32c3e7f2e1527c4feb67a496390f28532f20acc71abb8bb4f71b434104f41e36b705289858a4e8430b8cd9449b0198ca2244923cff1df0f63833373c275572de5a9a77b23e5ff54aebce8e86d02651f26ae32e69001e5f3951967579ebe8574682cef8c12dee0b18bc999f8cc0f07e2ad3ac94d3caf30c1c8a8295756aecbbecbbb4ade8a2b8015e52a0eb1290693c6316d036e0c443fc4ec591c32f7e7f1b3933c921d5812233d3c21ee5528822b59ef2ec7eb62f7b04f40cc8238a473ec37a07e54f8907825ccaa1421c2964d2c756be450dedc011e1cdd9045720421b9a4a00e9d3076c2fd10d71ee36d5c0fd2c7e42396b034a4cd0245027449242dfdc42c8af4a34df1b4150097726c9745247b78bb2bad5fe8af94eb13ee1f41dbd36e56d801a4c9c5b9ca5d3c26f4714b6fe9f69b87567426eb6f4ac97e8c9541eafc19fc90d3b24aae0f76c4f3f81063d206ff695d638048c2cb023147a78332939d2f2470d16f1ed0e5d3d4dde438affb2809488b99815e54938fac3b02deceaffde310cf422f9027f364f5e79da5d2b5af1b4138ac9f9d301f396b220829c1f60cd2b54ef24576e5ba6ccd4802900db1bb4eea57de7787eda0e30fa90cc19f099444488699bf7c442c398c2ed989d084c8cadc97325484e337848c34562b3dea6f7670f935ed3d5216c970e04351651c1c31a34e862821bdbcbde202d91fed38965e31cc3b6f1e52288f327bd0a787ecd92b3b6f535d1d000b0f02d41ee01ca54e4e6179ad7fcbd60f0e41dfa5c9cc7ee4f7de3844fb385ffa3b24092b30be697f1fd32c9faef29ead346e42fe2ab1d312901b678b43b7758edb7eaa1c2d038b4cd6a7dc759a6b12cec955bcf4179006a7ab6e22ef15986df107080d340b8870e2304d57caa87a9961c04655d7d66c7f71ca9260e02aced131d6de65d256d6b487141c51bc86eb1e4721742f07d09e799b30da7b5ba94c8d701ae34271ba06f8ce134a7a9a2598d1570cf05edd9ec868cfa2e41b4c20a8bc4b8bfebd45f5a60408f08e931617746d1464bbe1f3844ab3272ede635f771f9af30e483903ee4d0cdecbaff4d31451e7791dc97c92042fb932fe1c82652c1d682a55912e33de3b1299db076cef594458670dc4f911f4a244e2bec757dad4b0052a41235e2f5e60b929682608c16a61287826218a1ac3cf0d8286555d5b0552754685c365d4342f0d9c45065daf6786179da791a86b50a5edd6fb4b21f09d9747136aacf79ecbf52b00fb88b0630ec7f0a6699901ba4eff913a3ab33ac85a71ebb51ed343eac86eebb3e79c16e664078ccda09e77ef8e0919b8cc447116b65ccbd5200fbfe86e9bac5637b33c9bcac9596b57c14ad5da548e96a8ffad5f5c69247c68d464c770011da7b45a337f138cda6b4e15311879bfaf12af4c61fba596780e6adcd5dadde372823da6014122dbac70f0dd896a8d387d3c74df282a659028d06cfeab3ae22dcd1fc3ce60f69a0d678aeae0e5681952949e31ccb8975cd167c9d012f4b230b1c1f47022eb1a3042951b338a734cdd17db0ed483a621650deb3510efe74191a94611dc212c0c73b117a73b8ae41892cf176742bd98a7cb73dcdc53b42df56d640739852335f8d44d901fc884286b433fc285fd5b3db8df0a8522cea3182c071f559c328b8516c9252681a94eecec7ebf626c0a9014d9aaaa0c694d14855433dae06656657d1f8a939123d28e00513d72bd3802d211ad7c1e06b9228c0d5656edccad5339bcdddd5e01afdc01f10974be3187804324fc513ba583b7b2da1e9096bbe3d078c1adc6c34d92c54e9c49fccdc17d10e66962120ee5d9b1cfe852569436270cf7c4c3bb12568050e2ca4db08bbac16214238413195dd4d936272fca5d56d7551b9b002df1807ed44abc84c66746387b79bc9e830a635c308a7bfad7c2c22cee6d3d0c5ebd8b230837b7ceaefdf71a67a3a8eaae0c36de86b2d96e759b8b53f8b8604775eb7a7e13223cb21033dc87d775628581a954085c2d66c1c8f225b1aa86091061738e7495cb36a5ff032dc678904bfa39a00285cd6947865b6d4805e3411644b4a4c94a6fffe05ef31e156bae6165d801685dcec195552d029d22e5de393a82ddf3cd3de3ad8cd6bba2325a03982204f07fc3c21518ef17a601fd743b27f7191bb446ff61d3c61d7608777990997e911932532e5b3235f13423756f5b6c786720cf6682932c90092", - "50772c5a0e156ba13a9d86edc0e600021d56f7d31e7e452a74ad53a6775339c7ca6521d87a8c79b42900a1e9e6a1ec03f7e3d615611c3fd5c9927c40e5b508af1a298794b60148df01e9c9e78ab5ea8198c097fadcd6cfa6694be64e00eefe1a1885aece86f6ad87df766e692b58ebc41982bef5", - "93a2561a9904a1787a10e2a668cd6a814f2877a7b512698e94796805875c8d1a", - "588d9bc1d98210d9700ef488", - "165d8c9eabcd5e93e6eff7be122c8c242e1a7f284790c93324f924efabcec4a4ce48262011b7360c2833143d645ff295453853c92f0c48c6dfc2af7ec58d9bec0d13239c7e5593cdb39d49376c6341263df80c0ed2ed79fe9899d0c07de93f6ea95a5dfd307e49bdb5672b158a4df623ee86d54cd1a0fa9a60ce39d1f5f4b6b0ce9daf2a61a907cff3bdd3f29156ac439638e0910d728843ae17ea7368814ad7734732e7c023d4954e1cd5fd19fc9b76e9bb84b61dd4371478917757b14b366b4bfab4eab0d9de746088ad43d8742e2b9e58faff15c2eff084df5f4316111d5dd7d23cc0b1ee1000253f26cd260aa636f03f64a8342e531ca1515b3beecc3ee07a29184988325322d5c09754c278231f92c0d980adc919d4fccf4a1da1d37f1ddb58ca997d6d700946199fa007c43853b6caf5f8049233584087fb23c3952414ac487e452f0c3898486d04e5b008b843122501f9c8a294da9159a04119ad5c8e9f5c211411e34559d3a7bcf2ac10e0174f94f3f2968c80ebdf4498de172884dbdad0acc3a887f9bfe896a6004d54cc424567d53f1198ba33c56aa460edc6af0e437b34322c1144854bafb2434f00703c1992dbad0ceaa0616aec60a380676ca11558cece57a936959d6c2ffe0647eeffd37524fbafa9691f31499701b202d9dc9980e79ea517089eced779aa45b522c9ad193e63ea8b64e8a942f630d44370f23b7e9acfedac51dd9f139f8806b09a8fbbabc76fec3c3721fad5087a6d41f93973af8d787d8bc74a3122d99ea14e2f30a3c90be4b695c8b269784eefafa52d6a79e785eb47a23d72f037ca572b7029d2f37baabce57658119fb02c5b659e3aadfe0052f1cc3c0afc6fe4624533d9700388713945c20c1d175da53738fc73f48fe57fef8305e796b474b6f8d3fc5040042373a13384237d95bb045ce0c20934a964a8372acedfd6e559aa84180a86311a3996cc17bf7f73e5d85d4db2529989e5836edad490aaa5f56d17326825aa20608fd209903335de4b36b79f68b6a52194f6ea8ce42570533df650e65b50c367f69b9f08c32b3ce3e75318106b8b2c6b6d09369c781fbf2aaa35053af215b621f833814ec4778ac683de0dc22c418b077a917a6e405ccbde9f72ed523aa696be1a6f247b096b9235217bcf19b88d43178cce5a7d82335fccb4c079e00280bfd272b9f16ffefa7fea38d09dfb2e4874553b135052595812aed3fa15096abf1eebf9abd598289e0d156974de4c2654c60825d42b662ca7439816d9d3a0255f40a4965504f643f029da535d4b109e8658ec570e99859382ca0ede0b0495d508c63c7f1eff3f648c60e9b773590cc663a751178ba7603a11985ff519056661b9460c1aabc30e83bb0073a927682a06d1b8050c345f7920c1a37546d79587fae2a92c803a986248f90547f0b6c0ad0552d8260d2a0dc3cc76d092ab76b8c12f05dcf141167a6ea300bc23227933396ef6fe9d51a1ba5a754485950f06cfa6964db2d0fd1d4393cc36f0592fca25ac1a6aacda2a32f548ed20287e3d291661848a62d41504e4fcb1cd1785617fa5786712b3005f1a1041733df6cf838ea3ea0b93685889bc6b2857d80a9bc0e7a66f7fb3d805770402f049889311fc112dccc72a25bd127777fd87bf5ab56d39bfe6be2b45a8301c2f324dcc50b27540200d522c24941701f7293b8877ac84cf35638507c7d912a3a94e4384b68c507412df65d0c4ca8ec2da704bd4483eb2e0d13b68c0c2b68c106a55b9710ad0a1436d655a3cf3c419d5e6f027ddf5dcfc896a5b316a7dae9290a7bf81aed539a647c8c98e24e7ed6a4f7f00a11134ca715e5826625c250500f8f16b40de048b095b5dd08268407f58a91c86c36ca5a2bf4f8fc682adf1bf601da24414c74956e1a8fd2888b5260e980c32f6678a4dc4ff73220c22593d23144b84c2ff56920342248876d15ea54fc100c09a81b802dd15f030bda9aa08727ea49e34f0ca8693e0a06d0af06ea7ceddbf0584adfdebeb20510bbac683451d9f84cf0f4e85c34d979e550e07e7f414d6f1011cb3dc28d0df6d4aac113f2d5b04e4486ee2cdcd4157dafcbbd55e8330a7176d1b231d9f47a63da9ee30fec6cc2c5aba3a8c6154f79997af89d972743255355647235ee939f4f305ec655271e0cd562ff6f401b86dd5826c769298445108ad0d9e13c504551f74c507436911331db60ef0ea99dc259b13cfcb0596fa9b3c95cd7fc3b1611e3b012b6719afbcee7548939676dffc372276aecd08e6a14251407cf995266545427d49ae5ab245cd5d534c52542fc71b3973f0b766f3d234c8baaec8b74eaa8ba90abe160b4504769d02e08d7af4e7ecc167780c619cefa58865169b674b2b1e10d82f6560ba0be41a781f4afa46bd722566d941a8e6f87e4a5c03d89685a22a3470354f2922e2915f9d46288a5e8896ed13617dce694a595e379f25fe621dde8ba73d865976950954e5bd07db147a0fb74f87cb06aba49b073942b82fab33a878651df73df2721ef800b658bdc6c359d396f684598e93f38e79639b8736b02dfcc124fb9fc199c35f2fa1d0dc39939c57286e58a7deed7b6c76e02b99a14d9bbf11f65d8eb7fa096fe4baf0f78cb34736499a0ca550f10d7edc8909dc34b039e3abdf1aa67a51d37a2eaf4c07022897d4d8355d3325bcf392d91d02d462488ead90b366e9645b956c3802e4249d34b5b2b2484a1dec15a9477821df6bef5e1626ec5ee9832fc3bd0b63a3c4100d32fac3e9085f0b5ba43123f54beaa7ccbe6ba68231649f35a28acfcbbf97dea2d6cfd96025032b3950ec8437108d0f07baf1bc89e3afbc2cdbb5031d3cd9e20b19018adda466382059229e4c8c54b455eda4280bde43b36afa96e146e408c7104523d5f565d22ef86d4c7cbf9c6e0d0b30e37b37feb9332939c642eacfe19d0dae1259d3267635051ea5f9b518dd74786e45fb8bdf72cbe3753bd50bea2a961b49cc0e2d589e77fd25ebd962463fc728b1d288c38a79a182b124d345872afbcfe792d259e7e5334311244edc75d05f9a12eadb61fd3ff79fe8c097eb01a4ac1f0c339d3be74be3d96b0b6a15e8868d043a0f2007ee8aa51756d78b7a78ad90fd9a26afbcb51fdc20ed7a3947f715c833e363bb87504d8efc9f8b93a993e2e26430f79f3cce203b09093c9b456b1967212eb0db4f7688d4dccd4a523866f75c9d9e7ce07825ae34399c5607a60b771866a647b6d5e1e20795ca906e451f367d8c40ffe79a2cecfe7aa47a402f8d49be9084661c96ebb11f1b48e7e8abd2978ee626f962e98f99db4eb3c6a52aa2bb2e62194120ce1e773b9db784e8c9b5adcfb70e3bd5717293eebf014e9872c5c1bdf3fb296cb88eab5e97a5ac320092033b49f37d840dac23021c19ab2a89190f3c8dde927f6e6b41874bf71ba7747a616682bd5b3f17a1dad40f4993a1b186ce4f44afb4e36af7715450bac62cb1527eb8db1d87bbc4d9c99415d16660e48efd911e02f5777a77e72733af3c3f5315dd0c785d5212b79c46c3bccd74582c57cfac0d50fc0c85370476913f9d8e8e10d0f6602f2271994972de49ab1a91728713c3cfcedb0e61c270b5fb331a980965bcfe10b41251a0f7915d5943f49fb139626f1c424524f2fba3a407e77dd7513669894fd09fff4185fbb997b4e4677f6ea0b52892f013f1691bdb38eee9307a565e396bab484d91cea9268f49aed29e319b0add900b6a75f7461db5486aaf5366f98df05674361308931de753c70777de73337a996f6d4b0e06d63a69849ba7533bb0e446f062edbd6250e61a49f4120f84efc1cf74c1bd30cc61a2d719fa76991dab119fc814a7c56f48bd584c7935679c53bb0ac78905b5d961fcd89a4b567d17a5182651cb07146aa9a94972ce613e8ff9c878a8433c0244052f09980a52d800e97ba65e8ac186862def58c72b9feec91266e26aa5075b3337c7bb8716b3acafe666ffe2df32b78f9995661d3ba28f8a8780436aae1da2a3e6a0a16dc562b8d5df6f68391aab73a10508e0f55208f974a0505f0fc0d8a55049a7b631fc94fab91459ae1f199527362695b41972e50faee34c5cca9e35e8682099f5e9652f88cfe9fa990ff2154c89c1c2a4ed6bb8a889fecfdf048ee0aae7798c55d6cdfd062cbca97ca289578c832d658ceaf26faba54c9c3ee9eb5bac80698c1441b9cba287f749a5e30d5cc715a01c89353ceab0974ae77fecc1d2dfb31a5101783cbc002c73cd155dfd14685c2f9acc170dc437c649b6b4720b676848a7f9b56cc4787eabe72f6e3f2aed776f9bb1432fba93a63bfa44fbcfcb6eaa9ef4b79b32bdbd68cddbb9897cf5a02c6f99fc765790092edf0d5bca7c55cf232a03fbb6f3eae09b12e09a9b49a538e0589394700d16ebd3", - }, - { - "3497e8d61062e6f2084ebf72d00e9a47b550591edeee9746f31ea28039a1646d384c4348af293ab778f92a4807c48fbd14e8dbf3d67339c991dc4aca7dae38b5fb7bfeaaa538611d328b653950f4f664dcd257b345917cd66dc6a1ea75d99f70549d1af9d67b1608077b41576f38bb4c0a13ff4fa47b251142c6fbb79f9a27f43841ed0ebc0416c37f571aef8fd63b99e93ae88db50e9ef7d499ae7433d5686b165579d3598f96d9e7b1c876870310703df8fdf2069beadb34984f676eb7d3840c4c5766dcee3fc39f0739260a499647429339482e232362bc72c92a299cae36e9069cc5f4db8893e2c1b9ec0b4f334de26c951090b9724c2b3b7655d8248bc12a27861e020eb1e4cf6ad0dab903279b6fbdabff761d4ba159c1f631e681f210a8782faa86e08e554b5e30046157a0d1144bd08a691c2cc2dd22f3c3a4e5d44c5d03f7e3e385382ee4683345c0d316d41ee75f87038b49e0ad3ca45121789e7e7b95615e1a9a8dfe02c044c2935a97b141f639448182252ebfc980e0411e5fbcb3c01acd5aa7cc5d67101ffa6ab6acacace5f02d67155c26dedc071ffa66dbad26f67a819d46de0556fdffc1b4ab6d60905d8ef873ea1e51c62571c08b4c6db242e733e02e11e5840ee445c290b2232010b118839b37d4615c4521e8928e9ad475cdb4a3de9928ec7e6daf0e20d22e308347b31e7e877fdacda0c25f2e5c33a329e84707816ff4ffdca30dfc753c2cf883df16016795db34359e9363fac60624ae4d2b30bc1f2f99c23d953779c22ffca145fd08dad83c0f76cf727196799544c6c07483e0a41ca2e1b1da5a730956154f531d292b5a39a229ab13bf24a804eb68786e481c8aebfd3bc557afceadc41d00e1472c3b80ce652be1245089283bf1a1a93abd3325bb6eea121db8c0e1d6c0c31decfe9dba63c89b881824b0531651fc500f2f75ca9e5fdcbb179c9ded5d600a495ea704c2709f4a88c4fadcda4cd82a5b089f25a6fe0161159efe03fb5e0d44bdb5487f25e8c9adacc389860f62b06a6a4f8f104d9171622f70652ace736e8b28b70a4d9fd3fa4b9784d1a6e6811150d0a0601d31d17f6041e58a1058f99b80b0a6cd4f79c79a104b6bb731ecc881bc68e1d99ab358faf43d8504957ea0152e46e27dbfaa17d0f58287276e4fa82ab78a03513d5b4c3199d1362e4fd6447d1c26fadbd011abc69332ed0181952b391f2e8a5c89d68e22a7c451f69a9573b6bb6d918c7e3d52116f3f12f1d43d2af46bb450f58bde1732a268293cfd9cf2b90a844588c1979a30d6ac21aaea4b9e5500ef4a8bcd62bd70cae6acc8839f818d23c615e45daf14335c36dd46817c9b816be60c3848caa812b055da33f45bc01721d6fb7e850fb1e1458f27c70bc34876a955aef11f5703cfacde03a039c3b75b99b2d91fc18b00071a28ce25eb169b946b49858aa0885a4c665deca020a3fbba55d4d9175fd91e7901ec9eec0239806e8305f8238e5270f4af5c94d0008f8a5564636cc33c8a3d3e76db2a7915abe798b0dfbb3e322b33e188c7b188573bddbb9e4a7edbd4bb194b9743c4aceeab449f8affddbc2b109eb3d84f3b2f8b18ea2962680437241d82bb6146674ff1abee7baacc38d5dcd688b425c3e3b0dccdda3e36de755afcf7155d3d7cac2e279baad167e2a743b82ff8ddf3db8ecfa9680ddf468339427a4e9fb8ca4ce6f1e790c24e7269912a9989088c65965b0efe68ed44eb26876674261e3e72042f5995f1a7075b3932f4c23a8027d0db35ce4322122f489995bcc0b3fa32b7298c4c1b3354766c866a2fc0ea5690c58c5e08ae7037f70accb3ca7faefc37d78883f2bcd768285dd2571dbcaead813a0b8ae87cc1df868e93500d414c4418d5c80b919f73b9fd46111a02bfc884f9d30ee14fcfc1d55d54256b9572afad4777b8d8172c911472a22e7461f6f85aca063c19d6fdef3351149ee6864e93cdc54ca5dc7837f0ead91f5e3b155795df5dd1f933cee8671ffc05058353995019e5f6f55d2de6470605a5411afcd7fa5aa8f38d77dbf496d7fa9c5a4d35ab661aa15c77ce42bed44763166160ed5bba954e470c293ca301363f5b837406ea8ea746057588c34acf266030864d8c40e2da88ef04c49205fad1607d456767d30eadd884359bce04c12e35487bc1885d9b104c9fd4dea4ceaf054cf46cb3c77a619ffe963acc9bfcfad0447591ccd32cdd1fccb1fe7080ad75cca2e17f695ce0095a774327123f21e2839773506a9f2d896bde87dc5e35512ad733aa408f8a49e9018d1013cc32f550c968a03308cdbc73ab444f0a79a13450d4de906369da4c6a675d7e338f738358dc238be4f047579c8ba7a60448da541cb9e57f22bfcb8c26280a59b77edd0f5a009a3ef1e2958d6d3c3372840dc6a0c6ab1fe86aeb7590137feacbfdc7da57c77595b8572b45c4677836ec86fd8c4ca8ac351397aaa3aa298d752754507e1cc514d41c3f1ae0a692179218141f65bccb9acf6244730c6d00829455d21371972745b3665f930cf2aa9f0abebe6f7b89094aeb4dbdf7bbbe794f134b6284e289c995ef2929fc1bd39b259259950de29e57cdec15c4a7d33ef6e689596a6ce23301d25c2ace77fe699d90c2329da4d0f471bc093563dc735ac2fdb32c6995606a67bc953534939ed1236003c004d3b47590beabf39a1e4d5d1b00898496e9effda68433da17d1ab3a32aefa3681aeac116c5705077552649153ed15e9d704e67d8819579feb02d91db0d3533182ff43ee5648f5cc9a595ded4772d61e77bd9bffd6f29fc1f478dea44c32d5ce3118bc8860b254fb0bb1e85223bf709a7c0b9a52fd3914f1b1f295fd246bcb568388dee43a32df45e3c798068608a102143b5511746903255b98238003eed68776b46bb0e64af6c9118ecf9896709aaaabefbc1f58bf45b45768345b560ae2cdbe4d7da497736da8013c4098addb4258cafe7823bdbdd715250b707b155248d39fc6773639e4de3b201fd3cdfa1526c4149ee7d15bbee680c956fbdea844b1470a287d430c5c7e2d7b51fa756720397bbe214c19df3399a989958732d93979e361f7266e53a59bcef695435db67cd8749d258e7d582726e1bcad1395e68d7848849fb6d74451a53ae6e8989c64701102959f7fedc6a5cf8352e218396f9181f33037ca74886fae6e57460bbcb71cbe4cbb3d3a81e2090434eb1d6d5baeee4ede251952ad88001ce047279cfe435a4afe97847f798d84ad79a11bd44f09222d2f3b7fdcc47ff8a4c61f40c4629a0f603193e0aa2164579a05726e547c9081abcc0087907f8034469f740a020e19623fad42e9cea64068abb3d6ff2f6680da328061c200e1f646816a5083786ae5b71728a0e5cee14d7a942379c389fa9dbc7afe7e7ae075c061df11e4587bc90f92f1b077c091c43a25e7b3e870ad852c2883aba2632063c4ff74a857ef7267816317f823a8bc5dcda311b513be3a40e6bdeb89210bece50a608e624f00c9d063e0c8878884e45527f50a3ab4447a9a01652322700f087b6f96ddbe96a68ef98656800eda6563015a6d3c0eb1b6a9b21cccd58cdcdd074b73e40a098a980210ef831ec9e881cb42ee07519fbdfa52d9c62766a2046dee7752f880dc9082ed7f050b49ed8d14307b1b811bd87b6db2419418e49885d20fd7ca8fb45a11a1da17ac2304393734b552b5d02a303ddc72d1f456697a287851f207054c18a6262f5349348c806841d21e11fd4e4ed9c01fce1688483e009930079f7d2045a34f98ed83256dec66400a783d58c61619e6e42f6e2c6e6fc69e76651b96aabfe643ac69681955ce595f4696b80dadd1f3910061be6ed0840d47e928dd93e7c3d6932d3ead820d06e2539d9a604a6b53db6bb599da851de7cc060faa9af76d708a9aaf371dbc3eff0fdb99702504c3006f789a49feb730cabe40745837e2c8c17c77f999333798431231b337357637a5efd1eeed891fb7475f2c9f960e67578adf50241287bc5599ee08d0237f08c86ed9b75b62d612a9353e48cb4cb022d78f73fba1fab7f794a5ff64c97e6c91ec464847a81e5a5253989a1ee54a41bcd9b4b77bae6e72421471a7ddf0136edc59b72402d57e542916ee47fb3988b7123c6e8debddff2df171d4ce61e83c3d41f36143c9df97f2f68639f1bfc2a9d1fe175fe9f45e17e5cfebb330d3f06e15e3cf58acaff09ea576d896359a3f06985765824bc499319384e4c458d4326db801c564b0b503552bdbec60752b670d82cc8fce9028ff24ade3e805b81a72701b37d4ccedd72118b20d792739e035bbacc4893ded88619a6c499f246311947e48684a35406c4ef279c71ab2a74f6e5313f7900080f19aec3a39109d4aa41c930c66c84cd2163f4cdd59fe84a86cd8bb6468bce45a56d09490e032da844e6d90b436dd874c1cd32a75d1ae1d3e86d8a2ef948649eb56dd7b360f55ba5dc34a12f9279945436c6fb83d1ed57ba4ae1d9342a3dc2df9baa82fc9fee927c13439ba5bd2ff9f3e6f577b8d2df731db14c51db8a14bb15bf3e125f1ca4cb2fe856c5a576cf995db5010687d0799581c5e76d400c1855bb46680a631cc582f51c589a831", - "823d0cd34e7450550da9716c1f456ce0cbc79431483a6214939266581b0e899e4c95719a09c1ef166a618289a6ee6971b6fea3fe380512cb977823b387ac51d341c26d4a835c61eebde37764d2e1d588df7886177e98e3151106c898b3196bf4dbd83f5f", - "a4639c22fc7f370d8500a53819102df5e86c541c0ca10e8f6564e50b90c28f34", - "34a04df283c45655a52bdd84", - "cd8d1b2e5f65ddb3c0da8f12096134da22ad4d541444964077610aafc1f77f8da5ffc75bee807541cb6eb0526e78d57fd88fa9d9608914cf391ae7ccb8eedb0aa711889f9b6192601163b271c90df5d69fef487b6c05a24fc667469cf16cbd5afd58fc830119fc9f61b26dd50a96ed84c96825a615a3aee84ea4c950152323b20884346b25c9e2a6be3a93505ba059fbb114c224bed8f05f54eab76b2c9c23a0fd942eef9696ff67484b542c8347f1b1fd7df7242872b3528c9e45030447b2bc85eaf191963291e4223b75778335e5f1256618ff87bbd68b5a9e5cbd2ca1dc8aff4625c834edf8fb0d879b1f75ba9b85895a6bb4d7569a41bb3be6cdd020065bcc69b44a8fa335d9418ea2d090d8061e042e8e1a6ac03a6d5525079f14274079734ed42c5c9ab9986f0fee6bc9ee6c485e233e9b4d6de70664902529a135a5675ae129353eb2c00b73f226e84fe8c594272d6eceaca28b6da30492c92074250ec80beddb7208f9b5418944305b0864009b3bbb3dfbfb4cc2bba3313f8f7c6c19860f1dc0f5d7aa06e3b551adfc63dddac980a79d72bd2225d54a87a93717291c7b78bdfc5521f7f3239d5564fe9c9559dfefe76b77efc2e75991f31a0134529a6611ab9ef076491f2d2d81ffc5774ba8f8009dd7e5881e09ddf5116fcb5a44e576aef6cea91ebf52c56c742049639392cfb8b280dc2229252e04d8d394ffafa539290acdd8118656e7e1a4f7bfc0bb689448379e8cedff7590a09a3f5a29bf819fd87297b96ca07431a29a07ae126eb9d65e21824c16707db89868e127f17614a536de6ed268b1600a8b02aac2bca54a09b7cccf8e184448df334f95b9f0221187d56da7bd422f09b4d94228098b563df53414a5a86728962a2ea63023d8c3f03847b36db7cd189ccfef3e623b14842b8cccb18b4f80f01b32a4cec48f3009b98ffa25dbad76089c8700e90848da74aeca81d01f4dab2b7e844a3e48bef21f33c92734b821ab382bdf6d0b1048a9866e676b78ac9398678ff626d5c173a15a0a7514b2544405dd54eccaa2791605c87d7117bc9f8c0ad84623a9d3a2b1733304b492d4dec38f7981db9361b03a2837a95fe937976c7f4341a802dbf583366fbe368a3af3f92618046bb55696cf7af1f465a5a57ec5908621f431ffc762f35abe892f772a60a3f75ad8401321f67981e90083fdd1cce40903ce56a629120d6e13c8871523c4d848664331966298c8b31a5bc8174a8c14f61cbe98ae7ee3e90bc832b04318864d19a9b8b6d49a260f42bb120cef9afbe704faecf0f428d917ead9f020f5e9d772bc8f29600f8a7623d8971c1e3c5f1a3b094191e497bd70f85de124137cc4b9fe0617cb73cd44b89aada072625e25976e7aaa5a8fe9d9e3f32db47d1565aaef0e84d256bfce6aedfa1a2dce5a94976a2bb9a0da95941fb7ed444990b0e0e87627e35f3235a998019650a5e5cae804ecab8cf729a5c712f1e7d17486082dd50cbeb2ee1b0be6a7bf08a66ab3cf1fe9f49c7083f5b8ad183f32fb35fb8a41230e4041bcf0e5ef54bc3d21ecc1fceb08d95d745a997e8f2fc3c0f6b1b6c1c02e03ff02ae0d879d13eedd42d9f9949ca7ebb785764162ceb6c6f9944dcb3927b2f4eab23ab566b2b2bcc0c7d77b82579e88203602264064ce98b5b1ed992c1bb13edce579ae7f5e11697b493749f308b33e47512533350df5c07c3dadff656197884f359cdfcb736d29231aea1524b56e06c92f5a98ea663543f67e44003f5b41907a951dd792468c84c5e0e1b46149a5c9751295e153990b78c0cc712889a21b299b0315150dc50aa3b4f7fb0079ddd39d263a754b1dcc595c76ea9fea6c120384afb38d4bd40491c4689b1afc9dd096dd0327c84802bda6bb6b7a8830bc6c06b308ae9665a8666a5551ec954eb72adb827ef38f036c51698a28c92dc1c9e25c267532da2c04c1bf27f5b683ac750c3ef53a8460dc186331549bf82868f9327422c09afe1cd15e161bc41a70cab2f973efcfc8f01a380b86a432e1ae540e09d404d93d22a20dd5f685a52f0acb863dadea236288b1714700f23d1c19e40e219e8ed21f6a393e541abba850ffbbd4030e5f6567b7202fb66d86cc2a0beabd495814f6a50690e8d74cb8b093e4d43261fff80e7a67ca06dfe808899cbef84c09ece01414baac740cbe4c656b17991868e2a136f4785a0de311aeb18cc95ed33fbece22aaed8cc1e47f58cf6c09a6f92c96f37d2d2485b369093506f5e9f8534f8569655277d0399ddd3d33861bd40c71ac53a44d1981cd744d79202322d47a0228356c0e27efa2ff1009cf2a416fb6e8844eb76b8077a4a3961ff193e1c95b222e72688ba48be82ec5da498e58861ea613782ed1ab50a95b5cc236834af98e61528ab18453c20ff978551b81e1bcc0ff4b7092bdd9ab0b946b7324b7361ef05e1f7d7f6a336281b4bb2c671a95a6ab84be6bef1b9c8c3d2536edb8d79b40637e16d7281ec5243016232d7c9fc07ed9dfcf555055d8ae65f12ad150da81f62f2e1e82b3adacf6d623ee4759ad61a09038905bcf1dbbab671dd28fc1d10a0b7eaaef73a5862ab449bd84c8698d061e79fbe52a86739ba945a01353e0f3916667bd7b4356cc65451c7003927f2aa738d98245760550156dda529be741ce3ae1afdea0de35ada26ac241fcb5d518e6ee7f9930baf88bacf8bdaccbecfdb920f3b26285439912a8902ae029b07f28c1dbcfde780cd2bee6c6e5f4520c5c7ff3ab5448ec86cfb270c39586f80041f3764b5dc77dc5ced0695c89671cf90ed34c4067b4bd938b1493c7902dd94be824810a00bbde4915d138fcc7584790bb0b6682fc0799cd415441ac90c1caa008c7fde3ab4a3aae478c64991ebe07e6c4587d3046c9ebb8e125e795f0be9266bcee5a4e4355a2830c5b34e583b0355b34b89c08011db6f6b8371de003074704e8cdda37ce42c7e395b6a37bae3dfbe67bcfd1f125c9a262d56883ddc028773988270aa30c6dd326cbffee589f38286533e1d5c9486011170be591beab5e0ce98837cf91f0a58d69d872e364aa88daf9cfa71bad167129420282d99ed5884a1276dfffb2c4100c74a8b863b063c07937f2e9c12523deac4ea16178863d975e3a5be5efb5ffbea994d07f7ddc5326bed1f5c9415c1d4ee1667e3a581499bb573595158636ad94d84f7c6e4b8efc2b141f2bfab7932a050fd88a8c7b21877cddd488543db5b11138cc808e1248b6e2ef492faa8a32f9d93e3c060b5cec10f03794248f9662ed8c283a8e0eb493824e2750ec75b3b1292d80ce002083a3c64cc487afc31b20f84a778f386b012ef7bef46e638d0f1cd75487ea46e05621d608482637b3e642a9a2c5371bead4386eff968b3e007fc263086d8a930dc76a8431a4e6907ae35c7b3291075d1c723f02e4895714803c0e97d65b04c0f27d01d5d68001bdb3bbd44dfee1eff1754fe8c182cd9bc6ee273beb2a444ca1766f747d86f36cd8cef6eb1dafe0c38b9327a8cac6e83e076099188f02721cc4de3d940c3ef19d9b067be07b890c798a79ee8c44d96c5e05ee5d5202d941a674378386233a83bc85134dc8c46a7531b2b952fb277d8089cfb13e882bcf7545f0605271fe38bf4754f98dfa13fe6b635a62bcf962553882a8f28a9a5fc0b3f85509b702d4a7555d40c4f7d10fbe80d48b4826995fda7d15f14aa9b95fc6526101cf09c97fd74baca6bd26b4fce8a57b0726e0f68118969ec067e9ca39b2ba59fb0d78eb5cec5b872613b1b76763b3217d859bd6d991bbb5448bd4e49dd6597ddec9e46afb3f71d254aba828c91de51904139ab19138e36e6996a207da80323d96077c97a3e8994296376d4dcb602f1e77371efe8b020b7b6f6f7bd2bd733ad9c06c45b77a2893d73b4a8a57707969af74ba06b2fe7d4079bcad1cfeb3689ab95c8b1215fe0a855eb431f67df4ea589dadbf055086924e42cb142c9031e25b81e8e1167a54008ba1ad7fec6794f203b27f3092dd72bb766c9653a72b2e25c965f53487cf3baf74eb7742702380303af8c0a61cca3eec78d4b709e35e2cc5bd586263d9f56fc12454547bc6165e3f070ce7b2bcace5c8cbf52f987568dd90237cf190dabd4ee7a80494692a5379b013611f4eebeef8e1ab9a9c5ba61926095545e19c3dd61b7b404230729aff7d82b6bbbed6b4a926f6e49189e3bccb578fcb3537951fe9c78ac842350ddd80133275ac0bce3a669183776fee8288f874d29190b452d65bb7d8edfedc6fa0ae147102b92041af6dd8a566932e016763b60a5b9b1e3667f228cab075f966d1c525ac19d12046c6409345799adfd7154b6d8b51eeb1eab3a132ac6a2e08acd1a34bbbbdd019195af9f8a93c6ed5463765173e669cb0d42b6cffee1a4b45987853d43c02f920819f45a4fe0905d8c65aca182b4bf56fa0dc51cb53c642fef003d92c13ef4bc1bac571cbe2ba3673a49694f6311b7dfc17a4069759177930b179748d4403c7259e10a5d221cd0a6b745966e598f894e607b779dd5289fbdae0b4348141ad373a62c76aa454b35b39a7be875598bb30007fc300606ee2537cfcd7c22b6149880fb3cd8eb53054d698a0d20f26a5c3ce468255737a68706784", - }, - { - "5622aa8d2f308dd468a7e4959ccc01f0e80d91f79df65b8201eb44911f6abc758c6703bb97908fff377395d33f96c328a4541f414b7ac34c6607dd85729afbfe01feba988e4997c6bd2c99fcc35d2467b143a8fcbe6b49247226a9e4c0a4e3c1a29d5931e6f1f7a31d90a0e0edc4479f08ef9bc65ae4eacd0b93b1cb38948dda31e60b18d702bbf5935bd580201d1f280cbbee679fd834aa6be576a37a037eabe989c3c18c7fb61fda8b9ffaa8bf22b57a101c19e850c454353af7af3d755b26ff1ee78b9d9daa78294972d108958682a5a29c8ef260e2289ad9d7d74f32fd4e51e5d9ee828366abccd97dd56e035713a6f3a1985383c0ed5d98c4accac2fa1ba7d30a295670d5224952f7b7554fcbfb426c9496f054834dec48f9b70af3d2b1c6dcda1c4daf3e9601364e57851952c785e65d753be1c22729bbde33aeb1e4748dbe90da6ecf716f05bfc68ad819515dffafd33a909562b95140ecfff1d0747f8e0459fcd3ca6cd8893262614bb4bf4b639285f327e7ac782898781968ec98f6f0f2f3c4bc5f9c4691ffa7ddb3662816f8ad092095b598bd4d10d6b5fc6fabed619eb11dfd4d638f4c0b6cff7194156a411e8ad6d3229320336ad52fd9811c3a1fcd571d1bbbac67c6186737ac7ca1ed9b2bc46e4e578f81c164b09ae5cdd4059a2c22b5e7ce1dade684e49200867f9bb1430aff9b99805cfd31f7e3fecbe898f70a4eded86b8bbeef7050eff6cf8ba71395a7ae2e270a2b58010e56cdf6efc4003da3d8a82e96979ee68694b6113cc9a6e377d40a810063830eb95005a81405e5b7de8de67424845bab1911bc55da6338513742d237a555465fa54b07ba50ed712e7a57a39fdcfe4af50f064ae969823aa1c40cd86a621ec90769d0c1babd33e8388a8bd76689215b9827a5819127bb32ecc80a562a291f3192eff34cad2635e5b0c0bc174add72e2041864953f1fc72be7d28111fba0438d9036da3d5c0f220ccfde2319bb96fcbfae6055ed7f1c1967ee9a78e93bbb77cbf151084d602a5a2f087d49c3134582c1a5d7af24f4c88be26204cc9dbf4368b19470fef49a5823a2d66c65e9b1e8ab56bf5a7bb3220696840a6222caa58a7b39fb792d95d25038a8bd9d916e853cc5459640f8b8468e3d51f05f1b95e996cee40ffb7ae14cb289094f1b77d5573c1aee7c12a6c3a1e31491422f272cc5f510d4f18ab63d3c3f468c5abd61b2fa7ba0768d46392e2a4dc06c7ce79841dca916cd33cc0a700b50fc660e5d1808d8b87e65feb89428055495823b2dc317d6d9e50aa5ef7ab14076174ed32f56abe7d410e58ca40e92f8a31433d0d74ba7b130b1561f2b075fa11ead744d031f34d82f1a64d428f6cccb0a009be24b42937bf3e99a1ef1fabf0fa7335dab52918382abe756d3de229ee8223aca6d7c5de87047838e387d4e472481a4cfd4365256e13aacb518ce5300f18dcb5e0a28477a6fca08a74756ef6bd8933bacc98d02abc7ae60df7cb3e06d41abcc4bd313c543ddcdea2424d98ffc6dcaa83658aae11f5841ffd4f5df42368a0e815d2146a0fe138b223764b133d17cdb08d485e9f3dd2bf2b220d1f4565b02d7b9231d592130e4436849f49b1a70772244fc0c38da372a8c57fc80ad57828410a5a16ac6d14e093997fdd5b26e4cd4b248e0ea221715ae6e112e1b68b09f795540e31b1231244bc922207b906c4f42b5302dd7474286b653b4d1bb657134bab117d6c349fa0f121c2f8dac9cdcef510c1c28545eae0ab163db6cc84ca182feb858c10153d0136f00a01c9c7d0bed892715dd85c4e73627c3a2ef0f43710dfccacffd1d9f118c9fb1a83b2eb328b8da3e955f027d95294038184f7b895d77532c7570cb86fd6b37a5a66659cf1e330db3930f302838706050c0dcd91d532d49c89d144e9a7f864026ec99f50acc02bd5f11ee88495ee8991ec4723b189f84e03d992fd718b5173ea1b033ab7d3568dc4656648fb54d28d3119b0f293a930a772c394f45ee66838f17b73a94eca27033f9d5c2ae22eb813386905dc024673850a087958eed191d04d05798bcf909eff2deb2a0009d223323b290e3d6f71b2797a2bc2590d54294a5992d629336518514032614a04847c3fad8a7d1cfc2f86765b48cf58acf892f68b691fbece38100e6a71487ef5c4ae934f1ba03b4b26a1967f70ef1c697202e4eb22a3a95ab3b7b524f0241ab4d2adf3ee5e3f2974d0bfe4419ef0ab11039ffc26339570e74d260c4d5a16f22cb4f60b03253487f5e46c47836ce29460728086a615f78d631d89a06790928455889f58adc3d0a3a84ceb2ba9cdb00a403080e6567873b985fd59fd9dec71e375013c12c51cb67d599198f36f58fdaf897e85dfe6f9896cf6d35a84cfdc6834dd9447a2a10e1ffa9fa8edfef1db9e8b4a245b211de49e04b7e88977b4e1ac9285f43526f2452181ee0f80efeb1f6b2533b656519ae45652ccefca81c17714476b497e5d8e9fdf6c9f504c7a7fa7afa36df5f4f8da5b4b973b1618fc8d2d43e866b235e5420551d1659e5bd545fb78a3e17d9cbbc8e842f3fe6be07b892453ffd689d5188f26f9e4c545ba0b3132af12a03bce6914015d026d3d7df661c1e6384bbb50dae24abfa78079a2b1ac41c44c7d82a59183f293f12011e781d3cdca2f791afa5b55a9f2d6139587bfd74bfc54ce91e642847a33b48c1b366fd8f08f520b79ad5113a0273735aee71ceae361a97547fc09b22fbe4e4ae4ae13e52d65e0971341aab368d1e917c8f5f2ac57ac119f981b51b7c99ff2be3e16935b7c73e28fb58d332e6f2c36281228c479c4d6095cf15b14baeb0769191dfc649a70471a25d45d4433797a5b8ba31ff567e60ec4d759d99244d0fb5dfef7c2896809938ddde0d2015a4c5ce5ef6cdb5752da1c2a33e5bc78b6b7c6a5af892f0792c28560a357720da3cee3833bbeda8e98e6a8cccc6535831cfc28bc8557b4181a3978bd90eabb34b99eb7e55d9263e6790ca34561d8c87ec4e12b4a38df524318db00a9b5bbde6f5a8644a818a88e91b521d716fa9f95bf70b109b9905bfca926fd42ecb9114c039790abb0392a41ee4c190536a89ae6194befc2dc4bcf7562bcb84f65c99b69612c0511552f53436b6c489204d3881e1f67e0fba3a061165d2955c2e2e12c440d31556250a8a5cc04ee5e09b1d627c14e08bce1a92df7f6475db92a3ee57e4c16c3ae677c44237122818ad457a29595ab528744707f3ab7ccf3d20bd94047e013e647802a7af14cfc7c11441ea6e9b9f960fe69d03911ad2cf3a8f633e0d647c71dc7e188c92e75353fc953d6a30dd0040c39d4355b71524f1a4872fb1ecab22c8293b54bb22a80e1e3d4c886d2988adec26f041dd0565cfa9edfe5ad9aa7da1d3b8f68fda9e9df9dbe98148120af6ff30e6400deca6dc9593dbf06c856d0d582503e7ffa185f87c6e7ac58184bb80b4a1c0c18d669e23f9791365fe807356a5763ea418c39d94311759b29b14324fb6f3104359ae66532779b825f92b7c9ea2ba43ba7de04eaef7a86192bc93e17286f1b6e0a01c33c796ebed8f17692eb9237173a051c14e4869afda2643bb98c9ac4ea94c6bdc1401c80190df6abe988d2f0b2d80cc7bc8362ba25c6e5df4370a43e156aebd6aaf856b3f64d5fefc622d078faed40b760a361966a4765adb809dbcd74b7a41faffad3a64823860e5656874133c7f8a46b5a3ac591906359aa4f171ef6bb2ea6b5f24cfe25c2fc7c1973bd5d3bb5f197002c5ca1bccffb570f0265f5cd949c7386d961ac9c5e18b5d1d6030d8bf4a48c10f12dcdb11924b02b8ab5e91f425ca62bbe42b80c6b6dde3160ebbd55803966716734327058e29bd39874f2eac199067fdbbe8c372c5a688d3615e2b65f4937b67d6a26c64cc2a9e5379cc00925c678f174f538915f912e85b7014c064a73bcc7ddd38e1a9627ffddb4bfd6da764fdbfb45048c9495ab1a4cac5642f6c9ffbe97d33cb26964a23719620df3d85dcfc392c4502759fb31a6a797e99e51e94cf9bc79ac15de4e5cf7a05aeb88a8ab4c3b6f9c52b99794503f2c49cd7e230a67df7403e552523249f29d257b35c0c7712053c3d9eb583a1a7473d7f296d25a66566e4ba8b08de2a31b082e40c8e5b1e93985b324dded3f52511744e7e99f4e3ffd99d8ae17bb5122b37f637c5525558eab18a378f5e2cb56fa003ed3af8d139d16ec4b2ea79c415b0ba4d750ca2cdf653582ee3b65a9825fb9b123593e36e645232163cabda515b959ed0a1419e9894f6c677ac200fd11babe3503ec7bfa319f1b9559d94a6f82945c9ca8667621a5d28920949a1da644cbdb58b84742e9d65e7f2027b99fba4dec46f642bd17e88fa109143b26ba7fe285c89add0b74a369f3d381ad633bfb4f72e1822ff96aaf9a73b3c59a6e457cf40e17c1198c64737037f52d9b3118daa3fa5cd3e3c7738e3b3743c595893289974a4aa0d6bf1446e70964823a7d5cee67b9b25b7125d9ac5d1d61f2a6947c3deec6deb575e2fc5cec60df26de3c0545e5b79156dd6af33a78552d1ee9994cc8501b7dc5fe7a22eadaf201a92e06ef03be705a8bdb4db65392d3628c7cbf44cccac292c93cb5a407a7a5a0d5ac9fd95b0033d6eb719d3f14609190dd40d5aa1b983cd4c4e278cc8a1e7d5fbb0d39060d6cdce8de6a17e2dab973a7fa594205e17edab6514372eb51e03b0ced6402fac0efd3af49fb8214a505cc9f5f0ea5308d7fe6dec369ba154", - "9f522375925222a04f5c95ee14b6386412025903ecad0bc3ab78afe1145136b3a3592835ab4ad6faa66be9", - "d1ba82b3ced3e9817642aaacedf482e79bedd0560ef2754215ee792514bbf8e6", - "bb21211f342379370f2642d3", - "1a6683805d3f478ca1c1512b9846468378f83be27393db63956e151ec408368b47334afe610249182f54c4d0a01b704db2aa90a9755b8feb67ef9301f0715d7d6bdfa5cc4497cef1142a43eeb42f7c413e8f489af30d742a706d05a40a0c4a5991f9e2cc5d9fbca6ad3767682e20c146ac35aef38dfb2a77388b738fa022158d5c802e5f0761096bb45b50815ebf09172759521b5c5d459703ebe9ff669ee4d14a86e5d0650b597f4a082ba0aef366a924ea378b91c3262d99f48189eea19c76c0f644079f8415c11033cf24d30d6c149ab13ca5c29deafdc816e457257361c1af4b915da312d2e6c7fc712faa27be3e67c893f9005a0e2c28369991c1dab22d38961d1abd6d94c4d549cf491aa1f8d522be3ffa6d214825a5fde3c94c4e35c29b8d05b2627eb12c9d94f450a85eec6bc963a279a37c2344ca36eb604c4bd11c2bf2ecc0dc16c2c365bbbcad3541bd54f8d0bdbb3ca4a087b62fc19fcc1c13984eab807d2a6a1386643d90d412d027bcd0a638765498cdbb1f4cc1b91b69bd241eab3645f225ece85a56e5008d6094041f8cca6b9a0ae3b15585de6fe0695d79d348f8619431ece40e736957a7627224fe92bbe30df5124f476d97e36b5b08b3787e8e00f0c10013068eb156f82f3494a35d6edd5f7048d1e91954f1013ede22eca8b4ba41699ee08decedde87139180a567c6d169b672af0f12aa09ce20e9cac4e78b8067d31ba4f63606c00d1d787b868cf7643fbb170f8074667c9f7584d36af80b4e6557724013618c28d0dd40bfe9d4b25761b3c99558af528c2d290d04b09821bd7f992c044dd61dde9395bd0c9ddec6d0bf6e044ddf0b4b2d6753f5acf2e9c904caa4e9f310578527b85e6738803758da646919989f735b09c9a5744e63fed2c3982e59fd29d2baeb9771316bf8d29213a4956b66c78d5654436ffdd82d0d572530fd09507b988d13fd743f35333237681f8abbb301a8ea870159f802a57760659094d0e4902036c5a62c563f1fc86c4238e1ce89f5176ecaea194ca112fbdeefbef4fa7c203678cafd34486fe58b2af04f84a1cb620c6e123bfd96301e0a5e5e5abcc95d28b852d0cee2f51faa73e42f22fc335f50de4c3812ee14038633a195083f3944284c1086c34995832c3cceb7d385b4ce86af10685c16005495121105272d1d739c584a07ec7801c3667bb280987a8aa41f9537e9d1812a5dba5b385a0b71d2e9573c6f3e9ebf0bf7267528946a6aa6f43efce908d32525cdc3b825bb11c7239f1de412704d24c17455b9382fd6a873180f0d5d44dc449320973d5cd0d4e67e83946b6ef47e5fc3dabadd80751f1421404e56b1bce748b7bde63c6975ca81f3eaf52586a55242c9745dee3f7c796d4508e818eaa4fa50490c1a79624561b98d2e1139a328806414c905372356a22393ea0da51c83957029edd8c2dfcf46d9564264d74c1c0497034ec018b1dd4c14acebc34b6d2c1a616937c37b8b4a0ee5dcdf787a0de1173798ab929b72e0fa83a6c9b9a99d8024328d9c236a8f57550a4f83e8071eac76adb55939f85f5b5f514174b670a3e8dc2b54656f6201940a81fe4953d2680ae4ec58635ba74d15efab3e06dca6ac269711ef2d4dd49f731e24a92a3b935ebbb3fe8d001cd4062669ae4baa62c2947033afcfaca227d88a11769f87456d5cd1bb6606891e71d63aff9cd5a7d23263a78768ac2ac54ece1441fd37d096cd27e916e68891137fc3cca427febd1947cfb4d7ccfad75b2ec5e809c132111eadf25a73043d68333139bd2435de9941bbc61c5c509897cfc19a21645019eaaccb6d06371e3d0570c09c7556e41a727e44d9bd672fccd1f89cc7d58761c16df8fb75fb8a1dde2caaf088f02dad91b6489114398740e6798f3ea8c7b0cfd974e160a0106d703d9589ab09aae79108e3212f19cb950ea9c0798a1532bc2a065d5900a12054395c0545b0878ac0b1d461f553dccfc2a22bf254ced88dcb538e3889549960b77ba6237ab1458e158f4f46606372e797ec9d9ecc6534acaa1218e7540eef11030bb9c3e5a7816f3b33a590d970619bdd2dc04d5c6f4ec38b7cb4d525234b836eab57f65dd045e02367eede9049e219b8712b8d6fe178080c5f77b821f1a475259ae571a5578eb3b48863162d45486f71a28ecbcedb35b320e5b6401f9e7870aa5418449bf47502626e1f42abf481b48d5a6819c640bfdb64f873d583fc4e40187940a6c3373ea7b47195270a8657898f55568985018abcea9bce1c155d95b426f91a734b2a14ec2c7ca2011a4d30019fd9b3ef63a804e9c30c3de2651c4213e90285a4ba100b31ee402e8a7f23cf9d4dba003bbf982526bc63be5af102dca34e7d362d6fbf6f56046160d7af33b364f2a86074d1c0fdd54aae89b19480efde2a9caef9de7c0f9491e1cf43a48752cef405a0ff16b0fc67bbe433a3c1b9661406c3726092efdc076febd60c436476f24dab1b0b8f8893986d951ed72282990e8b1526f4dcf539b22c01c6a7eb5577cd540a16a81296ebeeb7ddda72e60fcf2840c5b42c5cba30eaea5402f267d1d04bc80da5ef0dd2bf3c7a2be986507617c9bdbc96c6273a0c9e586a0c48c98b4552113149c6f79557fc8ace0b1a512fec3aa09ef191f95c2163113ac5cdd940f0c2120509bc53c3ea493c54703effb902ef752c830c61e85636ca95429bf16937bf6786b3eae1b277bf08dcd69f521a0078d633beb33c9aa0cb33b238e1021ca67df122a403a3698452740bdcac81d22ccfe4ab5f835d1961708d1faf6d40f115f16c6094ea37a7ff15e0534f62c19a6f4ded0967be337cdbdd2a7c58ba16ba2e4c3686e9d075c6fa7d29b2a0335ab4940d2a95c4500295f4db84ae65e46c54b7300909cc5411c725a31fd962d239aa0e2007c285586b4c778e2ac7afec42cd8409a63d7cd9c677031f43f4aaf04258dcf1270c02a4764177aa66db2d8f860eeb1fd06d0b27587537410bcb641f90aaa7bfc6f12bd143f66e7c933a0f3ce6b5048913e1b2d79eaa6c19e7255d5eabd24d5f12426339541a22d600cdfd1781a1a3894740887840aa82e5a461fc324285b0223ac9b95c3eb88160353f168b3d4ae8a2e87b7715b5fd2671f66e6eaaf9365b3d9e3acd9a749faefba6009783771177aa4dc91f72fed7a5bf6b1b7738b84ac0a07b4a5a3f0a9134a39e1e7e3e2f9a92d5644295f31c5a356092bf07c709b4c34305ebf50e857a4f593dd1cce0439d3fd125c1ede1a48f583bbbe0eec7058345129ef78868a96f8a76ba7fbfd1c5eebf75f3e0eeeb9db87474b96f321b87fffc02433513fb467fb74e2fc8feb498d51530c753e9a173e95e0edc5ba9802641a45db281b2e2d87d409057b4fb1925e834e90fa5619ae3a9237d5b104e7ac67c2bdc31001eedb4ec7064b2f72e0379bf8780f67ec4b195db014a2d130e77b1778efe3dc703f1310a566a6d3b5c9b12b1d4e25815493ed1510a516a31ced3b64ca49a783ad63ea71a57290727fa31386d2fbfe41f12d36a618c6c28d8f10405eb3e0a33e8ac2e4133ba75c688c8c9a2bb33c8fa032eaf3ea0d2c27bf89269c4aec55f8232b292e7fa9fc24527184f19187d9d8a3f52335e2feb5dc6d997b9b773a79a31db832b752e5738963ee5d61a1b426414975693f986e165e52d46cb059fdd4f48f008e96d4c1a48306b7c002fd0c861721656074cf11173ca65cbdb694c79f58a3f3365e872b24670b691682c10261eb1ffb2b65da031d070e31542f49704b77970a78bcfb4c4ca517b4c966a4e8e27664704f633e90cb7d7917dc1d3a8b8b7fcf59ea3a8a81305761923cb182cebdd59255803a14ca8a75fd007670d79a25eacda1138d67a0fd1da981529dbf182fc4d7a700ba498e4476a1d415381c9e2ffa3bd46201cf2e454c4aaedbbe3893bb4121a6de02cbecc1f319155eb8c99d1030103bb6194bee51e74fa01f28dbe16092955b9599d5c1f1c3f356e26d48fcad7c4cdf0eef25c25273dd62171785c9d2c5a01b1f3da9b4786b1b399d890e2049b73c12de2fb7177f2bc3d9c645398111ebcfd83b73119897bb994f998f4a6fae1b3d6361e171059dba0bf9de9af7a5a1b21641790baf82a36278945d649cf5d310f3792fdefe8c58986a48118fd94647b786e47733ae703701e18992bc1b143b1da6110a98030bb9895c14d7b8eae1a155a550e219a5b6301b6d26d7956ecfe4c7023eec1ff62538b3606ebc7906a1243bf8357f593b6cfff32e3fc6b51f6a0ffaecb658d526f7a5e9faa6294e4808b779f4832318cc184e49e8957b72bea0d67366e040cf76a85889fc6b04e84afab0d02947d0d83e0de19f12966fa8372f6e82ff402bd7a69195eb1a7864a3375aa9e23736fa4d4b0224647e416474c01f72b7d4af240d7f43395b5b04c8fdef1165ce1d56ee8ba0e350e6ada893e0594facbfb5f0d8829ae203929525951584c21371b86deb0f76ef5daad5e847135a6488b35ea33e3a165fea502975d6421d4567a229bf3ce94605885453610eb9c82f9ea743bee9e14776bc3076a29af268cc72d9092a492d9ff08c345dc2eb2f8003b561d9912ae1198c58107f8b37a08b35075af9863110e6770425e9d59c2dfff9d9942c8bc3bf7904c2a952bcd573706caf1ee14420564ffc433c0f5871c4bda916f2530ac75819ade49fa1de21edacbbf6b7075dba21a84989411c566b7c356b81803c7215ab0f326a6b8910dbc62c1bee3af51f105fcdebc0dbc56a50b22cf81eda563bf8c2eff98b476e8", - }, - { - "99444e82c6c4c47070b164f298ffdf6955ee5bcb3070b9aa95ce658db4db084d2056cfe61a93568b44ba7ddcba5d450f4ba0da7b119425a6628b3416663c638692326cacc5c237097db5e537122b465dcb21d8dcb5fe831789b72deff3907685c2e23187a56990221e755930a09f8d6cc065487563cb8cec82b9dc754952fa0b342c92d99522fbb39854e338f470a4b4d5ed2a39b8b6253b7001b0b953abc588d757616c7a5d1f12b1024aa572ef5a47dc8480943aa6cfaaa78064fb2b29830280e46efa418d0cf38f57980146f2482276c9b6b16f865b1606bf1131e894336979a163ba2e70adbdc746be0d38062fafcfe5603e6bbb55717b66a263fbd5cc7476302ea4a0dc6167221f745a26a309f5886934f4258965a0ef0803eaddd05e54008df8a0695a078b797be59f1eef95a658c99a7d52001d4108212ce5f18a39f1173291808c980b0513f1a531e03ad7380372b65572d3967af4c25fe54d99d664cb67e557fff05c12e10143c13b1bfa3e8db093ff832a7978ecd85d3971349e3c9b83939b73f0ad55f1f1162d0c106b99c0ff98442911bc15e9194f5b4ded97e9702b84e31b31380c224f392e5fa5c720a45f64cd7020e25a3931b5871e4c708e77f4729225aa9f48f9d876597d3e79219dddee0efdd16836021dbd21692dafe121217347cc128fc5eb051e6843978ae17478ef714957a84c74656ddd931cbeb43e32fb0a448acf2f90ee98d38522b4fa9aa36be4fa13306e799d4c0cb90ac0f73cbc018146d1b0d6bf48aa446a5e3e0502aae9fcbd196b36b6b7426fc10367febf687f05392fdcf878863de2e47be7e625d0e3e3e94e199f055c0fc65f76c41ede43231873ff10eb854dcd6ac9b550ee8533d16f81eb0e86471d4da69311c47255e78ac8e79ab36ce880d6b135279fbb5a712adc5c3862a356af49e9c10d5b16f4e5dedb80914868111e194745b802a0292c7c8564de28ba8e71a44f7eff6573e5434e65d496cde5b5e62cfa9e2e9ac85a164dbff5767983e71dd2661d37d9027a27674ebe3433731a606db88e0880e91ecea8134421962b3f68915c9f6a5e1992c56750f99bc313fb30cb89384c72571a1a6a5e3c01897b691bd70985352217fa8a67f3252a06205bd1a9931d1cea3736559572561fedbf3ac4c8bff9ebd7f3753ee69a69ecbac4be6357db7f4213b697a828edc716ac01da75c1d46098c7d5d6ae6f3f9a2903588c5b340c9d47c234efea21b700cdb8db4279afa2117677e824e627bf0f2b179c864ba823926a57825478395545f130886bdf2a7c55a2647a888c3998b750343d9cdc602e46b7b09a2fe9ef74db1ffc46fe27c254c927ce51b307e96a571da7f3f907223fbed2daedbcc96197e95edde7859f3b4ec6099f791089e368a68a5ba0917ddf4f50b93c0c839ea36cfc8053811f8fcfe6986e5fa9f743119ecd6c3e5fea1dae3ad7eb465a89e9c68569190688a8d56e4143ceea3b11fbd9de67173d5134ec8b0bd7d16560ba2be52345ebacedc01a2e03e8183ef91317d87b2e15cc6301586ed829d438e4ff1d074408b332c8ce60ccb6790ab08c228807509dd4b39f2c227755f6b039f5cd413ad6f46c9ec2cc6a79457529d297b1d9e74ead9bedd9bd652fb31568a8e2a9e2b89e4e57601bc1d960360232cdb30cb502b950ef930d54c2c0692a684cd44b0472995bd2b41dac1553ae47216253d6640d2653a033a862f3118c5b5d60a662d240bda5f4da51092eff514f61a425c5b14b19517ec1b371d240cc30a0739273b34f18a72a69b1586802a7caa6cc8f5817a8a995695d063c9dd26c3d45feb0f84dc8a0773151cf9a537664f942f351599cfbee0558f441f5c7ad320cabe305f9aba570ddf6407749b6db42f9ce94526a8f4170e735b1dcfc5f0e090af10e039db3747aa9b4f1f26acc34639ac8b60557f7753e2c261a29852932901a4093b7f307319cbb228e26eec289898b3f8ee236032163293b8caf64be3f7ffed236f1da688d958a1bbb79dd45026884904bbb936c1ebca7aa6b0c68aa8b667dc1575729e4ecb4ffa82ddced2f4571bf902c52fc4a0ea3f47aaf5c243ac2a1fc19f825fde5d9fc8d06d97a351eebf4ae1846aa62554d57cffdb3f3377695338f8d598d723289ff3962796e8065632e7da9d8dffe2636cd23eac15a60568eefe3e77c561906555268cfc1e9342417b1cdf090cc16c79939b15a9311b0210094087dea22833f74eb0e35d44259ecf327dc84f3f24b8c2bfce7be0d97e00d2be88a150a0d557ff963b4cda60eb99935951d288768b4b2649b717133517f5e3909744417c9c3102c77ddd285976cba2c89e2b4f297665632d7c8652847c4625038a6670169772de0550066ec6c2018f503cce79a333ecc0a0632334df6959d2e3b052fa47c5c84d15ceabdc80bd6be0ea2a5a8d5e374e0e9a613369ca8d4cae3d9f98755560b27b2f6e47b01ba390f5ddeb732c22b12abd225e26ecdb639b08f3237e488430b3b39f0b63aaaef4907cd003a8f2b4c3bfd721d6c3fd3a5f062d72746606a529ba34251ddec4026f40d262e9d527ad84fecf5bb2cc8601c2a38437098aec2335104842ff1c455e5d17c136ece8d461d7a3bd9a60339c22d71059e09b3603c0565c0345684893b56054ec4d3db0bf15546cafb4a03bd7775c3157e7676bb7bdb7baf3100396c563eba1a12952503eb6ccde6b6d0a42d456743c4ddb97f5994fa08c5fa41315080eb6b928090956bfc6252b232f6e0785d233c3adcbb9370b59c35b0dd66005d516befd1fc843df8e68fab19858b91e2aecd1c8a88b0fa3d4c2fed2995ee87e65976b755fbf44ee183f9fa08848bea325807bce0b7b61e03e50b2c7af9b360532a17a8250cf6068fef0198738c82a5e58961c54017e343fcef7076e823d63b4deee472fada7989ca7a213d06a4e3eb2d44b16e5c94b1588321cf6c45a5a792938b058d667e1730f8386dfedc50ea0a959b78f12f2949b34b181f90bec622515227dfb8a5f6e89d2e559c0ba686153b218d2c50b67503018e22914ce9b49d3bdb7cf38172db1ea130baacd640c111614e3db204b3b50641d8978dc14b2afc27a7efa819cac6bafa8166d1c127e2237520d57ad38a80146217a12363cb1f8a720e328cd8f846d379ada43bd4865e4aa633c479bd448d205b2e43befa63486c717af84a733f1dececc127c047850aeeb8ce677612f5966e23d92c1d3c758aaeef82f862c1154fadd6766e1dfc780bb447732a5968c0c78b9af4a9d669338458b57cbb77910a24678092857c0b903152035bab6b1c73f7b667a08cd0d31128888de3ff1fed24866eb60beac19c1b139f77bf0b9332024999a2d56975e691fd7475fd93622119d0d725bb99c1d6ac604d6b6be09d6d29360fff9f84e5318259a67fec08a006d9772b9410ec6abd4cb828b898c625c2fc35c19cb9a6cd3b0073baec7b5af254d21de8e209539f560bc80ea38e33658a68262622cdf35dcd6618b9e272ac3644c91f27d372c6297d8e37201c6a86a7d3accdf579c15246276a0009ddac4021755f4848d10f714e9da86eba13f461e6a12edb1aef2d6117986120750d609682bfdfcb90ee3cde8be54d45f841a6dee2d5b9fdc4e65edb7ebffcf3cc5c8a4e1c6919ac57568be23bd8283319ce11fca3caf968b057432f163f22e29cac30b8154a646ca0ef4fdbc7770ee1451fdde9e9d651992d94c843d4eb2570975528ad9f8c193f7c681a43df28242547010e30d75fca04f39247c77d6c3715c25fc261ecdba16844bbab23e4d0482bd1565ca9b526ada9b8f5703661a84b23070d85f3e8265b2ce10750c5d798f1a8ef4d51a473ff4d2bf4be615566ac796db9fe61a224bcce05c31ecb9ab7bc43a609944a7c9398a7875609ddbcb556296f548a117847df7d0afe48a5b504e85b0d7ca589103d3197933a744fefca795e1e036f964a4f14554d5cfa0261e25d6e5e02f86e402906d3637a2352459cb1639f20faea6f0e3fbc6a39becb1b1b3a791e32e85e5bee31be685410adf0c11190e20b7a5119b90e83f2cc4f0de8898606bb6e64165c95d4c5eae472daa6836a888ee4d9a79de72b8fb47a9c9c0323a2be9106d4ee9ba8b3858c256032a9caba37af94df4c7b0adc2f8478cb879b6d452d73191b0fc1ce944df3f4809cbf3ad46eceb3ba4abd9679410f45c8aab20dd72626f235e7c0c934b4beb4507def24ebbdd7a507943c81d54bc69df578aacd9ed0bfd3b7809dec345ba084d88fa9c34d80685415a4d5eaef9b88e51432b2b2037186baf123a6257e47aa56d6531923d38178e8264dd315e95bfafd8dacaf901e354b0f58f135d638df2c0f32453205c7aaeeedf8c102e11cfddea9a98d3ac7c385d71b760cf2afeb1ebe1d64f0222b9b101893d11a74ed175297c1dfd188a2565fbecc6bb07b56ce3973322a965dc5a675587890cc65a71efc68fdcdf1a023505ef0bc0e6b12dca5860fcf1c6c94c2e2ec3a72b8a019d69c82d36a73738dc3d17d7fdfe992bc8e18cb5d3437f1f619dd318b95d1a56b6d273ed79ab2655d83e2dd63cb6f1f5987eab6bb21a7b13b84e2c619b36b842192c3f82c755d8af840675b0bd67a655d641b1886c3c9c147ac87615ff3e58085a879b21dd63c1616a3712279ec87d650a2eed665b797ad631f0ec312f343979cbc49b99385cfa92841cba12d52777df565545a1deb07800a15431c0987b4a543fd5ed6832e80ab6f4b4d9c9ec419932a6ded4759f5c7630a0b80139234b8d53117acb4452c60b477ad50157169a89bd796e2308baa9395b513a94747611c7978c82dbdf48d716c3ac181ac2b2a4702c02a324bd4c5e089d989d020ebec9963b5c721a95492158f54973b7fc1828181acb3cc8078ac095136d97221c60b847bd2a52427383ab68cd1f10b92738c13203fdfa0b78baa09c1837be2498667c459", - "0ce980442336d0f427db869a6799baa6785b5e030567c588e2a7d2680e96c11b7f415fa27730969e0b1c3973b5f3192d4e773153def6dcc09dae29ac44eac7c42c2666a356fd4262197bd5cf6eeefcbd662d104423ec05c19a2e6ddf1834a3445a09e8b1062a1320a5e8ef13d6ebd03c19e1813ccd86fd68b46a", - "1ac8a509db7bf4acb80d8d394a5abf47c273b2093f50f35049e749f3e16cb0fb", - "47cc9eea11f9f3f9aafa23bd", - "088888333340b3a057b05491fb2402301c8654948aa6d5ee1ec75eb045858c22056fef0873d6675f897126052923a47a30675b266ffb6181cbd29ce2da3720e36a227e4c6e53328d789913c0d9cd149a6e49293996b1be7d6c513b24d876445a950e723ade3efc36907c840b9b8cfdb1503811b4044d931a0009b381fd60a5bf1e73d16348cb57eea672709875fb9d56908dbc729d5d7d322a17a41d0f62c9af9a013ab1e19fb7b6c6e7fa0c0b18bec5e3d3e92546c77e3753193389e5fcdb6a6a1896cba461343e71ef7a156b136b27ae6f45be9368301cfade203e9b53824d70f07de9abfea1968b8ff8489b9804422ba05ac3c3adf23ba0848817fa51febab5e9b5500100310479e710b663f064c1ef101c9a5320367cd8bc6e52081a32f070e7d3fd6f4210cdffdb9fcab1de4af5b06a7c6d191dcc12b25b3053e58952bfd1f723afbf570796946c1df9579ad14ea9c8c30389c1de4d1e845c764fec5eb8faaf4c558c5eb5113018c6a21ef653ac7d7f5b6c7e1a8fd48c6f423e9913436202da176a86731287db7331db055508acc94168888040ee37b3c119c8a0d88360241d68745825fe480324a944d56e7cd0375d4d33a5fe7a3863c2aaa899b2d24f65b70bd804039116fe959c32442c9f0b5470463523eb4336985b71125fe5235cbca0c88a6f92416d038e144de5ff8ef6ca749a9e239f02db505bff8e16fad1cba8b1500445f067a674142b6413e9dc0f432242d8301879bfc11fa86d1ac9992ab12319fea8b703e10a13bfd4b017496222be26b56af3ef67610f904f0ca8a3e7cc249ca8122735a542b289f13922904ff23dd197f8883c7ac77150d7331316ef94e0cf13b6ad95070420513599100b0a6d117640b781c622ed7ef7ead29476b3c835bd9dbda2203930bcee7ac01c3b9c89da405ee436ee652ddcc3e96c7f1a94e200eec9a4a226f3cf7ae5725068916e73b61149497d11dd85157f895669f51978d1bea8fd2afabb18d082365daba2682ef623109988b7d0e27ae57bc14d86603f93b5ac040ae52d8db404ee27e6c34cd4246f40eccf9d3f8637a4615a4006918b01d34709bcbebd02ea72958d54db3e87d69e6d783de2f1841029d6975eb11f9b076c247108797d5368c656f888092b82aa81aa26e164e038b359bd68801c22fc107e4083a9d85fc254b002ece9d4545310b0cb22ec1af04a7ee31d210ede4b605dbdbcb70e4301989422ef46edf63f9c96de9cb3f70638b51df5c0abe79b7af8cd97148f2b7bf394bea0f7bbbf6925f83b901b87a6079f2c3b38a98fe1a86dc7f48bf97553701834f557451df4b41e7db984a34432823585380b45c1b84813d6aa21107cae252923fb4673cf660a541e65610ac0127d238285f53bf329b62169f3e42d5efe268dea62578e97da59a58a1314a1bd46cf7a7cae772814130b51411082e30062fdbda1c9e14d6b2bfff89d0379d32461f3b8e833b105f6a89532ae748b5fb43f283fc86450404e8befb8442b65e338aa0408303a70e9c27a1d923d9f2a06e7c6159c50bf2e3ba5b035420ecbd9d0b5fae478eb1ab72fa714f99d00188bb10e60380fa3a3a318c2d359ea3805c2fa0dde17ee52a504f70d6b466bd38d1dd4196be336a9ab4a9e573d1bc6404018a119f688c1dc2a8ed1433e8a8ebf455ce3808c245f0220f0c12d28c771757763bd111ab829294e2429a6f7a59858dfa1fe0b806e986d40aaff934589fefd75ab91097a979f26bc9352267efb2d82c4738e4e6c451b0d5adc398f546c646b9e6b8fc84e91651a1252d5b805a857c7798d102d1e6f90749252bc53588348ecec0897c79f514442fe3b27608c95d0cba999a7e0fbd7f601689b4dc63ecb9ff553ff12eca3e9b26e3eccbde28770bb6aff7c864ad6be77fc09f81f90df6efd0c4025d0916ab5197ab846dfe6121c462761d9cc87112ebbca197b0a222fd34a15b824b7eda06a56a6ffda760fae5f0b527e2798f01e205a3f47947a4bd190f6abfb1dab2e3a53131af95d593bb57e4f4af506440cf20636d9fccc449d9565bf43dec8b6877337ca5a43900c1dc600c877b290342914e909aad8c5f0755bc25652781535c057ed5ab2ff8ad4322a8edf3fc1b5311dae6361a7395919725f4cd87ce0ccba37c64eb3618f9c5a53644ada569b90cd07184fc048f1b589eb29852909e75e7116ef96a268ea85c2bd257cefdde9222d7eda875a2a3abcd3a02a1fb470ba967b20beb54914b8b0c6ed464ba978088d7f8b30d098966b0bde82a8f1210f5d0c3405c9bc73f703134d0b6ee13326f65fa0b8154f4e30808997d4afbd060285942ca1dededc3410a099881492b5730ab7bdc2a4cfd0068f67766d60b5d4945f121459d2083334ac878d067bef644b9ee427bbbd6c9351d7b019bfc051c05ac301ff3792a1c687546dbf6a07a0cf56717374bfa1191c22b7753f6ae02392f8aac9207d1ad0fcd57c5c8b35817574b7dd90a00cab75f508f8a234eabce6618305f94746cb6a8573389d336bb67e1b0d2b6e9bd3959ef344e1eb245b522c35222813b8c6e82df48987436b5592025e9786ca63b6d1a064223bfacf59ada713c2a3116611393aa8446ea79b3cb21e96d13b659ada2d6524686fd46ec66c1b4d8f5ae7831840c9e3db64d528f83a1cef1e0a586a783f8306cb261ed9c2905493e74d35883fcb39cfc5745c282104cc3ce804999231d13e1bc6f2c022f05999fb57575bbdaf00d7a990e17dd2f8b9dfe66a637b42f58ee49ba60f2dd9718d09d7025b6061b2087bc35f0a8c884f5b67a5e18c2b4e857d3b48b79dc7cab6b72f572d22987566238a7153ed6264578424f1ce091fd05b7f14563fe12c76104d3373367af3ed3aca694a21127b5912c0b7eb1ddf9d4a9f03f660d49f7a7f0fb42797fd112414c3eba2b75a04282dcb9645191fd3dbe376e7f60ab40bb7ca1e991053a1912854a68d7dcf854201d1f2c26c6cfaea32e29d80847e6288274713d2ca973b91dab97884326b280c6f06c65b8fd25d314be29139961051a1d8699467d02b67991baabc9b05629660c243ca3b0477362d5e6bf9eaa33beeb52cf399846c77fcae11a89cbfdb2058e443ddd44fe202a3ba5c2efce937d78b9639781b8b2b99077b433189cf3b0733ed73b59bb194c9a98c5aa0cba6e71d1c5522f193defb9e31fd2cd60f22bedaf7008c2fb0b55a8dd52731dfa2bc69b40f835ae95db040cda6a4a1588a5ba4769edfeb7369c1e9a3b1cda293255b4942881d94d771b7b82460004875e71be64c582f2830c5e80dd6de421a311c5852f4912bea1451b0328d01c7029867cf9af99284cdfc1e1f0aa0d8c19ba9bc035dc270b45724247137da5d3fc4daa09e7014fe1439889968eb23fe124f067825d5f7b304f17a983580e009e0e51630ea0006dbc74a30b512cd9eb4d0b315a0ffdbfb581609ea9661b0007cd234ce43c17c92269a7519bfe99c2ca94b5cd3e7654946e67b37d4270a369266db6804336a446022677a024d44cc02cb04108292dc12f790578a0d61cb6fada738902eed3afdf1850bafcb279f18b5798d7466752c6368a594533baff5dbd17974638ecc41753b184845206c79bbab84dfef148eb7f1390f8cb7346a14c88caf540c241cad11ce8869be3bec85d029ef490fc5edacf94fa962be39a33c8efefcbb6b43960d5bc35f8fb72038af3801466aed141b50e9ac7dcf1921f7a6abaf320ff02ac34bbfac265e05e27495e6e027e673a48a874e6f0c33827a050fa21c2efa789c1e3df2ecda95fc52ca7be35dbf17ff6c73f37cb236e5131542e002913d177ffb21ac450e2542e24b894650007c36c52d90f83731009a7c3239ccf11829cf0fb6510d9924e927f14d6a06f8dc772fc9b028a8bbd2d3388985f3e2609abbd08434c46642b97240c9380a831bbafdc5db77be63a1400cc9a4f7362a689b07a77162022c6ba7a1bb9f0446a0b6b460ebdd9111132694fa5f1b29da39be66c5179849ae9720b2da0a012d4bdfd1b18b8fbef0d5c32b92c351dcf2c599f069c3b53f622fc8e904f27584b2d97d43f779abcde6dc1413c0a677dd187b28cfbcf7fa6316f0967b53977432d45944ce8ebd2e265c0bf6b2870c75ae808fed52aa35421ef55667ecd6f9d279c9b91c9314bd9411bce267d6ad52b1d910b3e65147c3eb6021a0af98707408e66bb11ca5abf5e34b2bc85b144fd06ea56f5d7f8939fe0cfa4862e7f306de069cf85f4aa7aa97c6848594f5a6dbcc718d2af77497f4b9d5ffa217fc301127071e9bc9c2c9222ba90e286506e384f321e622f05d81c114953d0f7e9626b74f4a6bea8cfb86ceb4575e5cf4fb84e9efac8291d1f4153ad3cd9a34ce0ffcfbe30b6829c0f986a4f85d63b602ab99ff3934b1e0c46e55d56eb479b79ca0729beb59aed783e9a3ccd55db8d884733dbd93f9fd7a7209fb92fcc49826b2d4356ca676f01b0981637897b3d2f90f37bfd73b214a398a8e4e2f9e5abec01d8192ca690191255dd8304a2d95a69331288bce00385f462e942f4d694dc3560a263c8ac2b5cd1d2c63b90ec67c32eaf5bd947bd8ac730da9c09ebc6888b0b4f3bead157aa9d31c2802df8ff0e4d69b7abfed6f184bf35a16ffb5677ddfc4682322128932d57fe4c32f21e190e1147d8e673ae407b1dbbca31331310b299e9f3db08ebfd2dad3158562c2e47addcbcc831cef0194ac8ba9778d0103c2955c886d439967bf788eae688f2a7459b0ef3bd16808e8d768b8962a24588d918ceb2cd1cd611b504019f65216beca212f44600cb7fac77216b7645c49f18064a3acdc01399315084dc9ea151ee28534fb31628d190bc540ac6b6aba572ba51aee89544015e6fbca2b3c2330f2ac1f68849e99e1a1f7f523599eaee22720392ea52259e26f1101614d4edae481b3783af4e99082d75dcca549049290731bbadd1ec0a93789ad5c9afe8bae44e35b3e59e562362964", - }, - { - "0410d1f8bc890649c250a3819766f4496f339a6384e34acdd72b3a87266edd2a7eae223a372883f978277a108d6e59fca1f35f25d7a9f3aed42d35fa9b12241ac04754f76fd8f0e8ff6af88cd851887a45e89f1c9192ca66bfff605b128575d2ccc9ca3ba1ba23a0251b2cfd6db577b29d17ce2ea998946997f5c4a97a397c46024681a400a54425c071232d269adfc3b1adf15b4586c4dd7b8886f5c1023bc348bc674961ac6e221d914f432c2f06dddcf738227dfcfff88485ed45882809d0e57019461c88683919b87c45e78223c37a5be5f758e4f0dc6add22f2062bc2eb9bdc31b8649af17d526ec339f0e6fc6a41e26299c65276302f982235c3e5205ec1521625ec08a23e766577664b73d18d5533261c859c4cb4346feaf7540a56155c6c3a4874dc86ea42fd518d71221ac65541e2dadd2f8e129e7809f2835f07dfcc4128401dae2b5fac7ced1d9e07e3f348c6cd26f55b3893d4418557a18c366dcd5eadea0dd84ab95437d6f23eb9e5877fb2ad740ee507e2268c39c7186f34e5cee2d0dbba1a940f516a018f23e716a399c317a7a81f89cfabc296c432cba900ad79db67936f76e4d97874fc5f8a9ff84eb7a0f6d629c581ec5c451e27ef1ed468f93bfc68b2e0412a543d89dfdd812d9421236a4be9eb374531556c207340886c7b84d42d651557b952e0982f62c5c383e92dced21905174a5a836acdc3f2393e770d6cdc22c39575a42ea406f36889dc9558aeae5dc5f8b84862850b55bf4accccb6a8ef793d641d6b08235f70ad3b0605eab462afad1af80fa003645f4d302b03d81a7d167e9a8187bee0f76b1cfd7006b2d2b55fedad6e8db1d3ecfe031702dc327ff2b0197337d7542f42702cb276de852b3d72d9acff8a7feb8882028a5e340950e523c41cfa184b3d8878effe56742994e60240e58cbfd01541d39fa007a9f0ecccb409c6cc540354ccf35223677cb74e7ef7330bb60420f7d7bf97de6888cb343cd4fb0928fe5df5f1b018592ccfa7aac6dab57cded573b5950b94fd935f32cf332dd85b2b36501de6687612371dbcfdf77279d647ed8bdcf81fda8b7e0c5ab139330d64695d814fc6f761fd141dfb0c8f74e2d7616db3598d8de40b993fbdd272ca37db27b82aedb08bebc4a8e6d0385ab20fbc20c215ad50fab8e93975bcab3ff38667abb0545b3b3f20e325f01b80a32a3cc3ed51703d4b2826849ee22fddd5b544816599dca0d8fc84feed9f7e90caba53b70bc3f457eb1adb89fd0b67d2c0ab53264430c61d2c4a1b19ea99a9b453fc6b5ebf5fb5ab799134769c9b495c479c828bcc49a8f993c3127d5cbc31afb89c0e78fbc323755457ebf0f3344d3ad1cfc59d186e96ac31a9298e655b3d1df74b95f30fb868631053540388a13d597002f689708d35a2365e309bb96db8b1b94ea4c8060c2b165f7f19e72056409159371ac9c44f6bfaad9b9567094d18c29bbc8aa2c8b5b82735d20f55284fe68186004b4a4fb644fd52d9645b277c1dc238a764005c1d2791ef36e71786cd990ccee4571d9a9b1aec757e479cfa645e320bc33268e05af9cf90e0e616ae7f237c637a99fe15b4ea8a3232262d96855fa248920a28ec03f77ce4dd93925db60ec030a7be455ba9d08edbf6bb717b1a13c3ac1deb9821e21505c0a8971d5ea5dd8e4c9cd3a845a336209af191150ba5d9b8c2c450e3a765e8670d7f846b2461f971fdcd1942704f620a40f4204b99f9035bbd543f64b927cbc7a74f32cbb12c3caef955f169a45374e4479430e08d333c4a877baf41a27a0849ca3a157b6651295fa71ac94b6e3d30b5d160965e93d2a81b4d575cefd264399c9e4e17059f4064465b2d92c96ac27e3b221499b5e642d033992c236b905c072faa1e34495f9890bac6228330e4016c061605bbfc478c30e1b8534c49af54785972aca2d144328b0a540e3b3810a73e26acfa22f48652d53ea521875475ffade8ab50b9f08245fad753350f63dc4e898948ac7dcefe520ca47394f8e993a6d13ff68a2f78cf294f235f5f863bad10c4f5bc41c3ba93cf5e076357f0f7fdc136f34b656b1b8ebb3eed1ac429c7d4edbc902f7f4bc24ea9c9b200b9a9fd7adff0c6445ce1d2171fc031e3e9f8b8d6b448053393c8813d91333d4bdc3bc5bb2b8bff876cd29e8b92cf6f7bc727517b6f57ae031f3040b0637dfb40b8c1fbe44cfb6bb9cd0a445fd9b3daa1da2b1c4a82cb4da1fb8d525e0a4d9ec30e9aa75b951214621c58c1f60c9b97e6c6b330497e7dea790a3cd8158a76d898107ff3a5910707ae60c8a46c633b522aee83736d005de60b9abe202435f8bc4577b0eb08b7f2b617bb5a831e95d6488459bbf15919d764b39684d7cb7c9310f343fbfcfbeeb212a90d96c7a26c1026c5cb171ee4ef839785076e5084026077455c73404a2653f333e9bad555cafc1a9613387a02bb1287c380d7478238bec8943208de585bd18b448b6099565cb3ec70ec6672a778fa6af9d1b17b0970439da24c7bfaa74c85ecd8e5852e42391ab2258024ccf91e37f2f0e86df958b197fafd12f4a45f7990375f1665a14f7f5374ff7740f89677ea8660587fb80916b30629a7aa88213bbf80512421a0a37414a2eb549b81cc85072cdd87e4e69d97ecc63f974e60d20de0233101c3d475d777602b12e2f797e9237570085b0e9f48d4dedf233eb1301ed4621f9736946eadf599bfd79157c0b4cc31bc273f5c6f133a4e3679ff6797d3c9b76aff4bd8ad40726c1703c3d8b78f0974b748d0265b0a75928374f91b48c2d2b2c11d8b6e5efddb75009e4db72e562be59efb0bfa06808c89f585a43d4776ef08947a77f277526777f0b52f1e0b5a03aa560fa45c8f30e584b58ac1fc00b104942b7b86a3cdee1abea349dcaea4e058faeffc567e2c3b03e1c5c4ddc675e25aa15de1442bcf5ee972a8c5204ca5794694759c13a2d716839dda61635043bdf1a09e35cb6d93b4df3b7a00871f79cdb4ee69c79041dd14deb7754107b8fef8589d2d240ac1d8eafc52ea847263512651bbede2fccaf6da816b1b892319817bb6af9fc17078ab6cca95f03cf8426249fd4f2bf91921d39b8cee24af07a52bbe54ca7fc4422a310dbf2149b763ac0060fb2c59154d2cb0da1ad4892279b4e0ce7f5f92c189c3ce48e518ff48c4ffa9bf2b02d4792f84534958dc6bd2914ba010aa32d133f6a07bdbb87a237c7acc3ba5cf101efe947147ed4eb3bfdffe5fefa991c0dc8760586218d286944c52d0f221e0101f74826761d01a20af187f9ec1115e9e98bff6fbd7c8816c15d33c07f51c171490997bf269951218ae92b66fa3150d3bd40336abccb717e18b53e8806fff94009910f202a5041b5396d1c339e6d075bad4ab66a0637d81eed1696e4068024001123204b8371f0bcdf0ce07d79f7c917327f7138a75947846fde68665e9c767fbf96bb3308abffe7a8d05512c81e39fa8dab2334f46ab9543921ca97be31076dc7b2a0d05e90b7f7610d1a391b442398ef56cde3b18737faa8f282572389b4fb3c55cb8ae6737257708c808bc0a414bffae293bc69cba702ce2959e1a30edcdf64985a4b0bcc927c5912f819c71cc9b1ff5d6e5929055be72ea5c8c1a4a591093deb5449b7e6b60109be1ac0cae472ba31e1035ae65f3214f50ad699a077a2de52f7180addde0bd78c2698470b1af13cfbf497d243c9e738c4cdc265356543885c5b933a299f01a5b5a9ecb0b4ddfda0c28573064f6a3f142801795d66bcd5c31868fd3207fee7bd98c47e4da26bee64e1617b20cbaa34e3abbe31126b06d5737fc2b577b19d255a519397f3ff8668d0e7d401a37e368729e4b83c5fbf01c32ec478967605cbc0675f685b5eeeb42fc688216a0667e1204c995c9c485e6f7712d80d88edc9594528b1907790549756dcc8b0d32091f36d2b4009639e68daa130e83a1ea18353ca34f431c548d91c1591ccf8b25eec1f7a3c18ddca71b87bb290a5c13229250c5e193e1352072f6798ec504b3b4c6aa578737332f52baea7bc4468fe6d8dfabb9728cee93fee50c8caa113f5ed7e9b55e21e98d73a377ef68be7e4e965dfa50cf863e6285236f11ce80512c573ae2b55bcb43cf6ebabed6783c250f991f5f68a59dcb2ac13a3c8fba8dbb11c79dc6236809f2d7c4b0ad3cecd24b85f1aaed9748b8c109f2fd98ac8a53bd52f18475598d67305117de8e03b0d988a2847539cc2efad520f86dcd82c08ad4b10e490b9cb03bedc7197bcaca55526cd9c8a5a5f69f7a1697e7e31aa76eee597c386418e89f06b0b9817a83d6cdefaf9594548b33cea1cbb585e55df3d3b66f0b1a88f4b98ea4720f1ef5e6ebe4958078ea0bacb8ad776e325ccb252f81943b9b1c2f54aad3c7baf1bca0dda1355d191f69c5d8163c464898116dc89201032d1e3281c8054882f60522d3a65831bf779a854fb0c195f85aa66522386625658457e74d5c2fcf5234f226da4a579ac1f11f11a1e0a6993a4dfe5c856481ebe9d8d2363401058736f7ad104104aa03f5c91496aaba2fe4072d418d91c2787a9b4ab0cf4bb65681ad0392ef073cf2fc060692b0c0c194c8eed5558098cdfa3317ab02626159e40e5c76fd64b2ef60b8f5f368b6b4fd7ea3d2d3236aa01d9db7c8a01929f9fd38557335b926251ade1a0d47d0c1444e6416218781c1a51e786dbe9297b78fcf0d0304c62929e00744ed4e14af926313a9849b2a464048bead075044bee013cbe318920c4172138560629a0ff4fd229d81bdc7c7fd1086ab17d6efd5b603a1991b33a55ca5b9e2051b7c140f7937adfaf474c2f284489d9b1e8c71d58f126eaa451407eacde9f0e86504f7de3ba4d830199a229de2bf39014baad6dbbc448501588ceb2575db0ddae005b81ba9914bc22b6d600e2c990f7843e553ff29d8008265eba7dac7b5b5a7ba6dc263fe0e262a7b8638a81f4720622c7361554b61d7b04c7f8b133440baeead7d51ac8b77d606fd0eae1c55ce7e8141dfd68d40ae3d8d2dc8a061085b4fb6d8a06263183869154618329be6b01c2890f2b5d0a0f25dcdbbfe2ec3597d79311edb943613fd4b59157df4fc2e1024be03d98ea3cbec7186ea9f4a431dc3743b9f0871b205bc0c1b3a001768", - "113b261414b4b7dfa028668ac8b0cde5734120124991c54f4dd16a87d181efe2bc15f6d0caaeaf6ad615f59ec5c2833904a34b4d34109c82e10609b387f995430e8c13d83ac34310d838af9efa32d7fed6224c0a33", - "cd762390b93369f1e207eb15deeaeb0036f5331e82480d180f84a76c3e44550b", - "e88c14ef96c7768f5dba9de9", - "8d6aaa27892a76fb05a2e96cef9a9b4b7ae0670a12cff95f7b076372456889fbd3b9b4fb5fd98b3bd85b247f15009be2f4e7a0329dd118b6872199b314e159618ede0381dd97db28743461ace1a694c0383d8458150a501d6c45f4b50d5b1bd47e61a51f9ed4929bf2e564f201ed0e6825170027d93e482c1ce268459d2f81cab41f0e7ff281430c16b34a29b5c76630dba72ab9e751bae41122b26121d91f2af271a23e818263f46e05fdd52f319d58330bcabf66637a368c0a8aeeb20cad1916d966e5e0b0de74cc67ebe57e3d1fe01e9743d42a931cb4b98bb762ea43ab937d1e5c42eb08fd56e70e911bdcc1ca4ca0604a329c5364b262ce2de282b4732ea657b89300cc7b7127ba4a2d08c13f581f024fd093ac09c2bc245be60c80e102405597fa8082f4d28cc954a93217edffaba3d2a397bb59ee89c8cc0f33eded78f21183bd1acdce64a923dd609a0620d2911f61e81fb2c8ccad8ad9d81157223253a121ea2bc60d6a3670c563fe06bd75688572b3be83cd31dfeac6b17cf8455267b481219c42034b2252977f32b8e6588fb05166498fa37d17c2b002a655b5711bbc21175348225fdcca041b1f97fae48fb1e222c5bb46b5202191c00666b7e1b2d84aca3edbee7a97dc0f6d1330e929226f8a76c155e973c1ab62c867e1f87be37788754e51825ba31af9f4722b5782ef782fbb70c391a664f252d14e49a805e94790135ff6bd881a687f98b42da96fd34bf240eae4914488af739ec15f13f048a7eb5fa94af14e8b6ac5fae714cbef6268b114813ca2a3920a7a9d5eb506a2ca211758de292047eefdb5a97e18530dcd8410495fc42abed91b1204d9b8ba9d6aed11d2d0fa0d931d46f93f2c1a560ef9f5f7cee1497be770d3cb07c534215cec12c1458bb57aab4d95cf4a15a5e3a3bf8e650206d5cac4af3193d169f1a57638d9a50f6b7c6985d42f7138b9226451670d7359351c2affbca65680557693d03458341198b8e13d0ea6abb7496edea3cd4dee2eb93695e668c7c0901c6809b8ef434e88b85a8b22cab6508b9560fae62900056b7c5c29a8c899bed45a2b5159a1d4929476ef350101317f77f02d48a039cf4cf01c56319cbba16fe908c49ed6f3face88867c0ad3703452baa7b86fe58a00ab8f740b4e8055164b0385dd3fa44502ffbb99cdd843bc3287ea468aafe4cc298a3fc180f284dbf78aa09e0a2f7d8593356eab016ad8dc505420edd376b66598a3d0aaa848fd68c4e07419b8b50e40febe2b6b17ad07726fae1f87e86abd01490a0ce24fb57b533c765504ee0a9ca154187bcf5e6828e3addc7597532643cfd992558d63b1acd00e7aa41b9765094217480c08c43f4f0b3f0127120699b7f2a5ac07c655b6143e467777cdad4bc21d4b57da4d8f9b9a7e4523d8c6fba3614b7f7281e80ff0f9004577adcff1b79fe443c80ca9655ecc102d5df6aab2ff6c3401f344b77666c59ac7d5b92bf4f1e2322f74b75e6ef2bf43ad9e018f164ae76a91451e5221bdf5b65a4fbbaa8dc31e6063b451edbbf4965307f8e65bfae87b15f2453083bea8484017228a9cdc6edab1a28834eed8ce07430f776b916b3bdd2340798955ce9ffcf114c3f6a88bcc4c7b6f2e3842426488c340d00f2c4d2d6fd3b6263dcf7a57f5cea6c77efba7013297bd3320accf033acc0833aaa8e8f95cecba469704214f54a1ed581349878a591f9993371f1daf92e55b2a4faf8f952cf785c687a59b3c258daef1b6d7bf9f904123c7384a859933c3ac31e33edf648a1be4d6264ffade860915bd118f0b9aaec2eb8e16b2015fc25e68caac77a3accea53b9b178f6cf48d15029fac12963b4277df037b7a494cb29b1d9e6d2148531a1f7360519cba5657c080254f130a1cc3ccaadb4298d7ea0223897e63d798b4f4909577cf9b491a82de0275a246bb1211bc4144574c8ef176b382262c0e087975cbef33cc616d32e0131a9efdbe8ad3d9cb5f935d3f4f409852acca22ae2a6e7450e9a426ec3b9183f93b4b7f89d850e1c7053c661936e0cde23e831a261b319b430da45772f0fc0113679d06f025983bbf37ecfba35eeca28de5ff4815a490570491266e92faaf8d0ad4ac8df106faff8fe3c8d050ae9dfc03a01ad177c21d7b653509a80369a668a97eaa532dc9867c32aebaf89ed36586e1ebbe1045347766a354a86ec1e8b2f30c8fdfbb6c5d549e7a84db81b73fb828499c5c4be0d4b2b7ffb197133a0ee18abb5a4e371be0ec0a6535507029316f8decde30833ca47493ffcab781d028edfb91c138609baf1054ad52a5d8ccb98b3ca5b138f253d99bd556afd80f71b39f36e0d96fba4e0cbdb18926894968aa825392f12d98b6497ff85a0e4a91c97f37ba1dcad30fe688b54008b925805104a61dc22b712685202ecdb073fad9b10b5b9ee2ff781f23fd41ecdec87f85b369a304b85bd2af126d08f79d8a9e2bff0b18607a95c4efe35941c5493c94e3f2f3902e79f4cfe84c138b83c7f32d7c5a125b28c6107921e8ac92f1af7da015b46a2f9169369cede770292eee8a5f40d080ea1c267c33cb7d4187093d486dc3911bb2d6cae036cb508e81ca783ab5e95cec751e39f3038003081a252eefa7cd913baf136d4e27076251da9cbf0c7d2586fe02b62ec786790ef08fb3ff3d79bd06868eb1abd9875920e14fccf6dc144e898f578b7295fb5f4e84cbf683722ce3597aafe3195e194736fc317ed03ebbb00d956ce89f7a41a334020e1a88da355d3b47d5bd3965a290f6fbf5dfdc8c8e6347b4eb85151e53a960311582235f3b546ca80a670dcb628fef572dfae0c101bc08c80f78d5630a793bdfe402592c316227f2333b386839a67e6ee8d9396fabc9648ea656a407670efaf80966034958f4a70fe7b920c79dea3d5a0ff05f3ed0516537d51a686efcb258520936fdd415345251c9ac1143a41be295cf12da5d4319e78e1c57ce20507490e5213ca7be92afca8ec8b6a07b33571afe6940daa2afb0dd4dcc1c329474ff8e13d740488e5ced552074fff695a04fc1b70755245895a1e9c387fd9514261dbb0f600ae03f4896e795d1e72f421d8572543243d662f6811eb9402b6a3b8dbb0f32de95bb1ac01b1287663d3b6a3f52339a4f6b27789e15519b2b59f2f4fc8fd33ad1a6e4d02cf0ddf8499f45746da424ee78e72847e3cd3833551b6e6fd6b1aa98c688252b57a1d97660ff006ea1b970a0b8fc7d2e313ffd0b0b85299ded47b60cd2fe9bdd7ebace4b0c1072cdf67231a475045990b35ec761e1dc1dfbd0c402296566eb4b9462979d33c9d652a9295ae70943f38adb212b48bd8ebe82722b1712ab6a3be6060297e2aa54e7d0158e4aba6975237e7c7a1e22b29560b8d262125ff2a6e5c1332acd0f6b5ba15b4a82d3631891a01530321830aa8f2e8ab6b41bc5b5356957a4d0c3bc3eab04df7700305a95d0f9cd18d486c675c963876b25b1a0f78e245deb40dedd14dafdaa9d614fb06eb2538c5411e13be116c76fbd3377ff212eb07c5c035612e4cd7a1de2ceafe95832eff88a9bdb3595cc19287fa40b8d244afe9bd24dca40db49893602a59640d7a1b8e7475825b09cb0cee111864deba9d3d1beac03664279910accb9fac534ef099e398d7f6e3235cef7685fd1ae46e47da093135741894273c0c3486197c26057044b10faa57244721328b47e611633d16d3e4776d90309d68ce4a60d3ecda26c9f39c1c6da67ff79fde4977efc5653d79ad86c3b53090003bb72e78aeedcf4c8107185d9aa65221df4e2104640a1a083845c01000370371fea2a6bc8ae43fbe290949da4e559d3867c16df16b143fdc807616f51ebce8d05bb03c2b0bd587b95e3f6a15d907aa9a5b11622ddf4c81ff9fda4bb49d3e9577551bae649cf64ac0cfd646b02f6f16cdefde09a55e77afd16c74e8a3d777d80b7cc42c51f618a3c467968631119f11ca4385f0f5713e37ab1133b692de475db1d44fbfe9d274b9a09e673dac88aea74ba88cde8db3c831e9b5a0f1e40261281e5aea9d4dfd48c5d9e173f4d9cd56fe7fd610909c838bcbe1d6c729e151ecb4caef511a36a14b03cca7ec5d0feacb4647ea5212a11d18cbcbedf78443127680ac0b1bb65120b4197570288226830e2a92b380e32387bbcd3be2c77d6c7722054d849be9de459cc1832ec3ac8e7f60fba9c81cf5fbad37d228eba137a23227d56cd24970340f2b7599aada9d2424cdba8b50c2b97244dc83f7391e2ceba5bc0a11ba547c142126c791265b33a3db6238321a5f3273ffb01e42adee17b898153e41818b91413ec4f6386ab3dd48db875afe659db9eac94d16f850ac179d087d93784d607349e8711f5f96fd514e8d096de8b4a74122ba914520e93a11fa4adf006700e122e2531e1f39340cccbab4862708d69c117d3efbebabc14a0231916ae1ee8285727c9fc980051360346d53dfc76aa5a11fb1fc8f36f95f741e913bd2cd1031e508b320abd2d3a62baa400dc439969eb44e6abf8223b29d4025c3d1ca08d2dbdbbf9927c625270543e8c0cb5ac5bb5d504d224e66a1895719e4f975d819a95e54cecfa59ec8e385aaacbb023772fdddbe093afaf5a75e63a62d51926254e5b47da1e9b05851196644b9180734d05810dcf3502747c4ece652b67674c02aae74f20d07de2ad5993b3a68d10207eab6be5be34e52ada655aa96c1d82df9b24c2acec35e8f0bec9131c20d0ad8936880af87215611b80d07d7a741a12d8145bd05066c6ac171afd8684b92f72237bb0e4ca4aec1ec280e39f36928852d5d8d02fe463acbad8ecefc103083fd4298f399bb254e7bfa166638460b760ccf2b0f5fec0e3875206bdc8ce096274643824acfad71ba06441c74788356caebdd2208f6f077b056fa9d85aa4357e93bf064a776f5f3b0f288d0afdc51558c8f25cbee17247364c2bb24637dd69017f92bbb43024d9c773439626a02bd0cd44136a642c9c5ae593f32eada790c31a6704030f2e07f1173cbc0dabc410bf9864214c298a6283b3631acbf94b8371681ba81eed1aa81ccf258252d7f90fe733ac770b9744d0170cb554b39e6c72e05919cc237f8f4d7f3545f4d2732f4c9473c77401dcba04c0fd33efc73219f31c08dfab26abee9a7cd4ad3584730768fae899fc", - }, - { - "9c73ac05648e0c50a3ea3a8eea70841e8e06669c1e7520c5e25e093769c4b005375c0a9cea16ec8e00261ceb96a00924a66fc0c4e4e089c63e93fea857aead8e0ab82af4ce1682cf3c9fbad23fc3f7e632b7aa169834ddd6c7db7e1e892cac93e4d787b2ed0a812aa93bfce8fef3ce30ab794743ad241974ff989288c43e1ba815a25a03acdc2d5517293e161d0c46c8858d0b32b124a6b0bc3838807753288cf6838fa25fbcf876e6368c0342d3cbc860d6fa12faa1c2b7d9fb37504e60dd44e36ce74229dfb80f1545125718dd1f78b31a8aadbb4d6494489ce596fcc2dbdf2ec22157a1d966b61e780d36552daf084739b602861a96ceb67b65b23d40916c02b2c3a38c2a59aaa266e1f8939000dac9b6dc50d1731e87ee833a2cc3cb98c57e5b680a85c1b428289520bb252096efd7723fa8e55d2fd4e16900a435986ab3f3d2bd799471a1bc07c1772ce10d1bb8805a6065b8903999f9393d2ed1a7e1c57a9e3e0e10dfca17a04143814f5f3acfb99a34712a6e0a24a7485279ef343e69d27c77e25b41f9fb833d7cd29cb6a15551d5c77b43d19feb19f2640926a272f81eeadb792bd474ae11f080ada72103f8f7ca733a9b1325b50589be2b2b3023491afec246d336f4e4277592ce9695c68d5f39c8fa4cedaf51776d7ca29ea0ecb89eaefe71e5f3560c68e8dafe7da08cdcd954d626418677b8f3f45b9194474a32f548a4da3bfae6a3e2c0a25f602e3b3a821160c397d77c8bcbd71c5f1e669213af36eeea30d48e12953071f55eac2fe0bd8fa355671fe032f6fc9214632428125a16fc8aea8a9c7fba0d7518b9a4f876349ccb9bbbabcdb2a85fc60b83ee1ddd041967efa4036e5e10e377c9886f40bc0b0b57c7b724795f843f6a072e87e532a04c21445090a360731a2afb896ab795750e5c2c33d58bb714f5be427ca3751df09661402604a09a1eca95a8344d3daa5b99d68e6e6245825704c5d4a73af197d052d7f75778917542261d77735a21cff3f75d6159a3e4b1a7a9854ee376e6b3c8bdaa1f353b957862b2efd50d10a40007026261a546124cef979ad20d8085d53e30f5736b8aebcd3cdaa349ea474af249ac53eef2653ae1fcd5b3095538de9368d307d45df2a19acd44e3b78c2da9d5d9fcc4cb61feac5dd35f66299845bc0018c3d476b6761083baf33a4621e41cfae0e0c642de729fb2d206db6a4b976a635b3fd911b5e9946fddceb6feb2d2f893b2bed590317442037a1d6dc5b5d72910160221cbecb53bc983f1c736c3bfc9757e9e05af1248b28d651f521af67b2a0d7e4bd86a0013338404fabac7b9833c372142e6338a98c0efb7130aae8e34bb0c80937680a7a904aba3be735d41af9462f17b967b13566bcb697579f8a9340429c77baa6e24ae1ac86d8d25ae3cb9112e34a7a948fd141367898c5f33c0635c87de06f603b510cb229df0d0d9a9e107de88b12686c539ed4fc54c8285afde0c8ee502919a125cbcaf4c8c89f56e90d3f641f97c07326956f7b5d87c65b689f39b8b84359ee0f14d2c7ed621ec67f5e2a8ee5faf21c805187edd95e3941ed62fa95a65473a569566d46b87c0d27ca37b6b022a8cca30a4480d392ba15701d1015b3648958cddfb614983211bffc4966ac6c1f691f19bd9fed405a02c06712d62a775f73353f3949c76b6b7757a4ee0410fd6d20071abfe46b09e72b70f9f19b61410ea67037e037934bbefaf09cff018a5c218176d165d1eb5cfd5c46eee7b82fe65ea02e3ed7b18a86ac7b139b7c9df79e1f6e6f85304ad22d97190c7ec12c651fcc835ea434d92ae1444e7cb0dc644efbc2ae70f2f94310805c1d0f2d49643d05e78baa1c54d4fd99137a49efde88dba1374c94208fb4a0ebc1a0090b043610ebc1bb08168ff5bf936ff9834e825eefb9ab73da2b287b06fa2b0ff52f46061b07c1131e4108cde478c767b749b696f3520acd8d3338842d53941282da289dd1e9a0e02aa9be0f127566c9bf2d50a27f6b6ffc9e9880bbfc14ce7eeee70cb0c0ad90fb474efa69b46123638e8405fdef65fa7e0e7b29fa8fe8696edf661f9003a08b4aff85a4a3e6d817655c1d533b834da981b8c37c38abd5977b3ba71b3f57967a471c2eeaf2f6f258431fbb7e92f91814b1db80ea775681f282290db170942bb7b04aa2a331950b74a4b6e337affb4c51c6cd4c4e13ce3095e73e4767c2731f72bdb225ff572163fbd8573378427fda194d165750d487f6bbb63e1378a132fb6ee5115e3c32b2380b096b735bdb4d651853bc7928346fe3ea9df7534f2a4eae1f5ffc4b82ae738db7df0103ba4e68c2a2153bca499bae2439a57778cfc616df16032aa8a19e26597d275d2775b5ea17cb25d204b18028eb25a053e5666ac47c6def151f7d4b68ea62c601d87bfbe04711c24bc34274be6815024d7b7d01e7dae10cea6e485348ab195a83854663cc5826181b688cc9c091dc1e0d491fe51400e20e6f2a51a7d56af258e038bcbc80e2c4ac4b41661bd33229d07b39b59f3aa79d99c1ef41974a33e02a7cacd6fd8f9b99cadd0fd6a031f070bd3a364c64ddda0e9fb94036f374171de0b3f4ee3380780e6d77d50db9d58e670fb4a364827d631226a3491a27602808141ce657ad6e560ad62b088ff086e6f03b8a64bdf7c7d01e7b19289279509a9d6d80e50aef3b05b5561e4556952c46d0b6ab8eae735eccee77e570e1360b7ea38c53ae6b8eb420e4c2663b57827228392db6e79105a47f7d89e06ecfebdd63783101d3bfb5f494785acfdfed41f8166faefdf0b49260222c4080ec2c6e4f949f41784f076ce37fc7a34fa4e547bb44e6b9359b4b95cd67d64e4402ac83973bd50f8adc7c6e4c34019bd8f6d3843bba3d7155890712e0ed5134e00db877398d86b459f312a6272431f01b057446bfb1b8053acf181bac79408c7708f3a0867a64e06d7786849bb874a6bdf8fd6daaa572d5648ae100f4318d6b3a811bb0fb709168e817ed83c0622a7e5b17ebf5cd5ecb21d9ac32ddddb039083144c93cb55a95ad72732132d54bb120639d1620ebd142b58d75835b35cc6367012c93c6772963e9ac852c71c0dda2246ab845469997fc170d8f62334bc5aa4ce23e036967674303ec6f75bd3d17d197d026de69beda70bc59d2ff95a899d28ac7e5e42f4d37233996a8e6d3b0b86b80df49ea8e145b4a6e3e39f3d6c3c6518bac45baf97cde23037709d737b242b8918ca31f90fe59ff2c83e2f347a954d3559a8e4f075c620ad36be20b1e24b3afa156cf3255192171ad0474e4adc9b7f35436325b92945665f038611e5d14bdfe7b7d20c09642323346a717f460dfe7b5062a0098be66febe9f5fccfc747aeaeff81ba08e5dd2b1a489c998ea9970afaf9aa03859073707a686c492fb3f7ddb27897ba5e75e578bd82114b2ba85525a2002927909c970a04035334b64b1169c3a923211e0999db8baa26b6537cdcf57c051c0ca1b317a5b66ad96cb5ebd57994f99ab202348d8ddeb343312f1f26ab2442b8c5f5cf6bab394418ef2fed68c3e60275e836027515b6b946e5d86d91fdaf49c2a5182d5051726840a156a8653cabda25e1dd9af693533d782caa09295952ebfe6a194fbc8bb7fc2c0da5914a506c6f31490928dc5d6554890f5eb268b09d671bb6b6d7416dd36e7b78ffc5c86b34fab43d22909a87e5239643d5fef373650e291be56b89b9d90431d8c9fa44fdf4f83a1689d59d6ef833b1ce31a44197b36ab298d53b51ae3f8387087dcb0571c340874c1524ba0d576bdb88101c1fc387d25b5c0dad0b4d309255ad5d5b1e209ba56db0c927bd209399a8a3b5c8663c9ac199a76ea4f49e364a4b93a569b3400e20f0d748adf7db46a07efc68e43802a5d1a914759eb2abe8fe3e8d67f2cd7612bd4d5a6a4535b1e5b3ad4d97e54f3db7f8512c9603d87e01160b6908d8df1b952c750071abb1565e5ea3f643f233faeb84278187ff0089150bf21ee4d13979fdae796f592ac5b88869aecc5be1c64665edc8ececc87502d36720b73859313607aaa561d56a195dd3c7292fa8f0750ddd3df9ca056fccd9d6ec900f45c1454c6ceaad4154c69e288dc85735b8cc42950a3c5f0fab2be8811779905c3ad5a9a6bf56e7141d863caa4e93e0065f229b695efb790926618b3eda1b9a15f143bbb09aa3c4b72900617793417df364185cc213d5cc3a375778117212266356e214f085d8a7aed908256c4aa25faebabc70ce913c08c89380da06920069e8e27dd867567f152f883a9bd2dcfb8097b7f065482d6d11c0edebc67feb3068cead403503c04b324885ce1a62c99af9808a5ec8b7cbd978b8c43e37b06e9f7e1ce0b31fa0fe52e8842002e6e99cdf69263d31de080b56c0cf94f77f0397fd1f77b13e17af90ff33b00119999df802c33534a13d3ff7fd0e8cf58e8f8c8bae033cec1aec7d191f2d1a39c7b731c97a67fd1ca43c13a24b9f97d92e2364dc26a1c9408d4659ac7373e53a2a1704a47e01c0223ed4c489735b62a27ec67ea46747e4f48d3da101b0863bda9d3f7f1b413f3e7f130208875e6a29dc30a78198ef658c7ca32d7d53b4b92e51f8ad6d39ecabb800adc0870b2ab0e85b5769f346ce7fc371ad40c561f9f3b2f2a01f2b8ccae48c78a41383cfc36b2a1bd41d61a39c24144965d9aa5ecc5d506c7c7cf9476085bf049942d35caefd77821ad925b7fd3a006213abc1e008114c848d45cbedcb8af264cdc5c07bc338fddd1123940e5d95717040325048439dccd1e298bead22b011ef76d26a390a68161b8bab29e8409a5880cca9c8104694e1282c9fd64f50e73ec6b9a9ffc31115de9cc0088400a2dc806f85487fcbdd60f409ffca584fb197156b40142e512a0dedea1571ebb74d6b26d3b4a59e9105929a055cf3540e8a6a79ca7ea71ba8b40893c9797e81c6e9a7999d4d382e52cac95727bcac354616ae1094552b3d0a33d0d3ac4e547237fc0cd54944039b0eccf335889f6aceb518de496e0986783c564be8a4a05bdc9c67b1e5abb480b98173ef091259d8c772b611e0c09758fceea3e59243406edfa71fc452d4450b55b8fa5ecb543692c6eda3a6ad3bfea929a18ebbe5ce2ac4754989c71dced37286cdd1512107e4e7f4878da1c28b4beb2dd9a712a8d1d61d1a5fe5382db8aab4857b05a783e98e77711c1933a7641fd43dc6e6e597bd03b11ce8e94aa094fe250f03cc92ed5b0a5e7723911e87b0f3c476d9aa0d96adbfb395a8fd353cfb5a4cfe27deeb82e849f90bdb17928b0a5702e4010f7aaece2d43772a78b325d2ff24f9de0f7bc65974d2348c64", - "bf96bbc17abcd1f56a9f22ad164d25ca72f8c996f1a7a66d6effe140336da4f20460b47e1c8573872496343be35a055552ceec437692b0e4919224c4ffc8b603286a8245eff5cc148b004f6e5a54c4ac22b0f09842a07cd332a09732694d3591b8b7d6a7ada2bb38a30aa7fd5e6baa811b9a195d3a96306d", - "aa2f714d3a184a9883f4199e8e33fbc9c92b36fff2d59f07a9d0d335d7476e81", - "36c79f9f14d431cc8c077439", - "873d0617c986dc9d83e9cdfc50b1f916626a9d9e1c595dc7ccd99d1e993d25d89b04a893c89e205952eef8f1733054bbb55fa5e1b07135787d4fcfae226737b50cafa2c11276e8708451be9b4d7f662e98ef6b705c5c4fc64588728eab1dfee22a0a92bae61828a7394977b0ae8a3b6d0126a23583fec025becf0a72a28891391ac1495732a7a4a1d43a63ed8eb37b280b6d886096fbc4f77aadbc5e441e996334d0e10cd7f3dbba9bb7efb147297986509a07735385c681e0543186dc166291edc3b4664f5c8ffb0965c85bc30ff5e7769a69609c69ebb68f35d104bafe3dbd3e2a40e13865f19bca3612e48592aa930eaee29440b4ebc1c0a59f1c54519857c929709b086bfddd6d4a30940b592be48e0067976099efe71f45f956182dbb300e8076e1207baa32d59c1afef7f34171bd66099d2d7f07b39d16d0f8b085185bf2554c6ad66bcd656f07979e8f19575a116f5c4fb9700ec3b46a3254f28afa1ed51348c1af6dba26fd398098a76d7bfa2ff195eebab41330ef290bf75205a2ee570a2fa46bbaa74aa6ba68a0e63e2731dc1974eb44794f3c89ba58cf96f7a070fcca678185711d97cd9d7d8202351ed589e0b05a7a190e60ae4aa109254a7bcf7013f8addd07a64145e21226795ff7c7b1c225f40ed7c3552da8eb18b9bc9bc70c2e7ecb10c8b20c54f04b6e27b5044a7a67b558407eb330f2083444375c022565c45fe817dc00c7d24c23db320d15949b0b64fbbaedd310e73e423fcebe6e1e98a5cd232d97e6466642e5e3b23f06525ac1cdf8688650cd366b1b7ba2a9033e62d836b14bb73717757b76b9673671bd3d3b2a56628f5a309f3b86ad32abac0590c50f7c5a22e0a920d88dc9fbcb3add08b900a2a2fae4178aa100a0e645ab428e0e79bd90baf4af2755e48262b64838a6fbc21226e323c0a1ba5703e30738fc7b5a7df9eabec6199df5ff6ad58f9df5a734ccd6509e53ecb3de1c881732e26e52ab848a0335b04b25f2254aaf8c130c78b0c9a40b60d402673ac7ec7311d0b00c45bd176bc73ad81c2478611804f59e3c145110aacce922e473ef346f8acaabdbb9f313dd3f8d0a937d0c048e5af789e2e09a816146f9ea28170909caf2572a2f6e2d0d511242909de2815e9ec586b2d12183ddbeb7dd70f32424097e2ec28b4ba62cf78f547e2057a4c050cccdf6b582172343742ec8c85e2847efb1595bccf89ece3b3ebba824d2f097b1987ec26c6e5710544739d54a714060fa91b7995cff0161415eaf55758078772c0271d9d282354e47a25b673eb11497a6ed8db82267d65ad47412300ed525af96f943c5336b1de88676dc346e7339230032463d305b0442f934018bdf0242768511d20474c6ecc82fd752c0c0ca5cee1f3e06e679fa5835540f97870d47ccc6bab233290be7a3bbd4a73f1dc7682049bf7b3cbfb6687479c18d246e3c07161df5c889ee95d39cccd989625a8c9e80f951f8b1832f6378e05daa8566477d7fe547e49ae6e822a68de4df9fc4d6500d5219c3d3bd8887bd7f695151ba378da17c2e750399f7482973510a386721c59683a86003edb9f0ce1ea89bd7bb8a25c222df7ebedcc1b56c8ce18f367b2cae720e0591b477f6ffb498c3d7ce59cabb1b01d7cba84d7180b4b2a165d4b889a6ac361720e768f2913aa50b0b5c88e55c35bb4df4fbc4460338809605f1fd445a2bcd97ec1d2f269b5e779a18c8f215bbc5555c745424484ee5436119eb8754f5e9e91f51fe715353596baa1fbb0a690e99691636e6027cbd4b7be752bc278661e2677070ddc12dccc262d3dd47160345de51359ee8dcf2f61044f95dfdaf323881b2bbff68af6572348f786f6e52d1309cff871ad58148307d7eaedc93ef037922b6092ac62171433adc4934884efdee3052ebd60ee115f76f9dbd0eab7c4c0a77b4ce8078209d23d81d957335f331965b556ebd54732327b5aacc899f9ed0edacad9eb98cb845867f249efb0e1a5fa2483227f78decbf7f1f32d060ab0c01eb985d83920b2cc24b5f9a0d5d869e980129d3b78277fb87e5cda61e340a729d86b6617b8828dffc7c37d4c38080ef3515c2784935973dd184e0a8160f84bb78bcd8a5e691760be4a4d41ed6512ee436ce24650c0e17e7d74b5e01cc39b21e21514a84db262d673f24a82cfd5dfe2a162976171c538b24af16429bf8ed5fa8e37f89ec6e7d63ea1d83ac1087cf89e8f43161f225108889e922493d973e36b510074533cb1cb22174d21c4076959e4191a5df880a8b868b95a9cb5151a7ad47375fcd87725660cc0b59c88ceb86984941268493c49b8aa2baa8c531ecf497853ffc3d26b926a379e72188e246d42073041fbca453bd558f328881c8f8d9e099e898a912530c4be499f2b32229c359ea10e0befe6d94cba5ddafe51d164898166e890b22fd1eebd5724451511dce1f8f7431d712a3f1e50fa5f609da686253311af255b84b2106b09b803e94b51729cfa0826869945d46b9606547e7e33fd9961cf15b400d0f5e01d8fd4d92a83ae526934059d4514b9e0005317a70466aa0b6086d5fcfed201d958a0de55fd23f0919ea29b8aa02440031a9fc206b9feef362a73430a4204869354ec81b6fff92eca97e7f1bb12d25228eae466b8137b4806895ce34b57dc14bdcd107fe160776b0e5daab150ba06976eb884eaa574da393af4de355381c7caa4f611a2ee70a0c78df93a4276f55e6281997b4aeb36888a6d9638cc95444047e5202f41f8bdd787f1ff44a648cc7d39f05e49e5d6989fedb194c526780709763da81a780db0d1534a466cce57e11dd3a4c0e273d9873af1040d52a90e20101e1f80ef296d45769d204cd5417a84e022b6b336675d36d9cbdb16b0cbb08f5e240012967c8067c92f97f981cd19d449084400d76adfb7c610abb73bf21e161db04debe6665fca79d71c8cc50adc3ecf0e52d07773478ca97b8e9821a5704dc58acc647a5bc618d2b681f17942c46c266c73ec211ca403a7d47e42e12c775b370cd500d70a4aac7124f5f6d2d4ca78e1c17a96426c326bb60379ceb0c84a86200f3b450e5e9aaa11f45440f5260eee7675a8b9c47fbc58cf18a651a1dc7b39a911442504f12c103054bb50f15381e512dc6e3af7b414b3db26fe767d83a2a53d7181fec8f6b196c7874befd6628b31797ee3c9260c7b7853b137893e36696e2a47277add98462ea9a0edeb7d2d3c0f2805fd7db64c2c7eff353ff2b36f4de862a42779ffd4dbe77b6a79bc9f4ea3e909474ead915fa3fa990bc82b83a670b163e79300b627fb91c4502e96bb9dde00f716ae6ad14dac647c9f7c2e5b2e505708b5fee996b8e9113a8f4f2caaf414061ee72e76b8bf47ec4f781bd7c589adebc2c267448247e30d659998d8037783494a1fdadcc819d7ad7ea2674f75e10639c3d3055046a00814ddda0e463185454a4455d60b9780250183d591c3db6f27373cd2ce4f02f206ae10a8c32d71226e7cb8d5b05909445977164983c0073434d6c0f2bb62bda66a16792d6e53a49ccb5ac3e285a6baba935f30e9d1ddb812a018ce04f29e2009ad678ba72b6a7112d6e7cfcd3ee7b058ec954a6fd7fd01018a6eba6209687c3130de58147b07bcfa02ec1caf30b59daf87db4618b4a5fad34cbc8014a7529b9458e05eccb9a77ef1621aa95513c6fa4003b0877ffa6d48805e7867dcf53447caf348228ce926233f65d553146584d6ff3dc3ed3296db9bfe69dec6a07add13037b3aade118b2ac3c52350b9691a6cb32356ad93377059fb8ceab68de38d96876d6d383db01f3cf620e47cbfd471bf6dd1f601210482f7c3bdd4c3bd37dd0a7507e1f0fe515151634813dd4ecefe97b52eda28e7a7129993b0af311abd3a07bc463f3cbbcb4fb0eb265a5835663fdbab0d8b8b5a73837ac98ced6582348fdeb41ac8ea9e36f9818ab9c0a41bac1389a6b518ea17df043dd50550f32471645791bf59855ed695b84919aa5cb688e569122786660f06e3a919ef9cf18c355bb397b86710c367362cddb0239aa1d32d489328e4bf92b3abdc3d0dacd76ef1a1efa28fdb848e708aed6780e2d8efb19a2e26fea56b4440dc3eafd796896d73fd150bbd967871f5e6ee5db58995f2f85cc2a15077d7d472bec2e30430af6891193ef03dfc7761e2b3b3b54a72d4f1084a8fc541526fdeb0633dcba14e9485b43065aee8750397ea88d9ff13417149e0fa145be666e6f4afdabe7ad8e4864e777c20ee7a2842db44dedee22f3ce2f97d72919b9ff6059352083be816a7515c48c5140a99af8e81b9e18b10074dc73dab55fae66261421629c8e323d8134f08beefbda555660a51e4b55a9ba4573bdf0396cc413145a941c4175aa672586f7676027f9fe211db87fe07a23962f5b1ad8f566f0d5b13c5146457276f307a02e1e13d00c5032a06d225248215e4bc4be1b672f1eaff16ca95da42513fc4315c7a6663f9101aba80224acbf0c87fd3a2ee9dedd1808c1247c5bebf3cb8d77377a508ddb484ed91203a438ef5ed3ca14e087102bc5f3828d8c3437ecf5c92eeec0331ed93ae33520740abae9b7bfc45f097da70adbb9b9b879e46a7d655dbf75d89773f737b66fd8a8c13506cff7b44bd85dee279ea7053f3ed8447fe79c400cf23726fae800449d27af5e342ecf776378e2eb449a3af27a40fe4a9806487b81c942bfe1a4b0fc146c971a13f83669e0189e337cc9fa2024864436189a9165ade6b864698ecb797ea05fed0d60f0ab4b92cbae36c72ccb5aa45337cc02dd086afed9e5522ecdb75ccf389fcd63c5a4abbf60908e39cb3268c76a08687588be67a856a841eeaaee8ed016f6640ef0f5acce12ab8bb58dda380696e3fb22d0bae0788c4fb79d00cfa5ae3e479dcf7d08b45f4592c2d2a7f8081d5a9398659613ba4932ebfd7382d516b2648ec4ff4477648069b9b2e4decc89547c16ab82a0ad9cf293fee5adb17cea4c95ab7b8e386dcae6acac63ad0d1d13656dfd97d5623dbe45230de597751321bbe5a03c879c303fd7a0d837d48141decb6df4f0865717628c85dbfda29df9a8a69b2c956c75fc66e45c08960c23bbbc706e48395057f989dfe675305067b3ed8d046db339e504d5b2bc978ab4dc261d8afb325c5e794ec79d63d8db53f9dd24b623fbcc202679fae8f7d39f7f7e0667b142c714b6a723996e5254ad2ebafd63c3577f8909981ce6b3eb1a6ad67a4e93c45ac3b34587d153ec5ab67a2697a9741610d5a176cb9b5856bdccb98f69421061c84811dd6660495d9f30548efaa69e36ead246d997c95bad0ca3fdc1a08b4be31b12daf211d3e29d585cdac48af8f2268ec304bb35d", - }, - { - "ceb1f819497c0d631a9c9616655f419b5e3470fd3b19cd0e4fa556bd26cd9df57e960ec7121b2a2cb7c0421c1f84b77eb8277bf341490190ee574d1424eb09a281176a933394bfea5502077486bef23ee66e3127b732b7a58a04b9aeefc35170dabb030d4fc3f8a4c5ff194bbd0b89a379baca30ec81d576868f25755276e62c31e93a80ac322571313ebcee494592c3ff5cf3ecdec962645887d9aafdbfd62ea910af5542d4c7731283625bc9f41ec85012b42edb1792339e6cdd9c2bb3cad4c4792a064df17a5f74dcbb3dd0d90620ebba4fc6d1e1f9704dd60c798ad64d4e5077549d68cefdddaab81a7a91209b7ddbea43accb3d1c191328929dffdfeb4f5740ecbf0ee99cb9a1b73333d7ceb0b2b8f35f84307b9d44a42fe1a30ecdf2650dde251bc8c1d46978089c50d64c028f40611370ddb0b481df9624ed63165370f4788bbc396026b268c2023e0f04cd4f66e0bf439074c46f0ae85d6dfeb0ddf22868af61c8d5133097156fa61a3cf5801db5c3ad29871d336f7aa06d2a7d5f52e50eb3aee3c7de7bdc4d21f68a1776a7cc3954f5c071282febc89c1545fc672a0a1bd8eee2b769be048ab58ea12b356d658a6225fb8a55e752f1fc97ed64c2f87f9ae661514f1f56d9d4e47b001ae865a44b8a9fd5df8628d183bfbee781b6661c9cc76debe6c3c5bba840bbc228206673aa05498a8c715b0f3019f6b2d05cce6c233b5809ff1dc4a75d7f69859fcff94ad442d460b32f6fe348659518c16385e49fddee9efab2455732aedcd17dd51b5117efb2ca1e21ae6787437f48a7042d46e11be4dbcd2932ffd70fd154e4eca5fcdc57c6fa79746100b8e1485fe575a5c79089a25eb2d55d89e42eddc81b82c4f7da8bf153ff5353b7349b161911bbe0a14483fff6585d7f3c8b5c04a6dfc99db9548f0c53e25f0b16fa212f0bdd10ad2193ac18eb09972795f42b3bd3f4d98c4868989c4af7a760f1c88ffda59faac73256df1d607644f56a70303d6409c9ad716149bb58f01b4ab8ab475e4af1257d47049aa77adf9ce54fcd22b3d6ec60484da903a6991ff052ca37b01428d5916fd92c17530bb3385a805b0d57476e9f9417a23ab1c12a038b61b3a0898831f9615d10b468c3edc24448d09b8f3e3a2355dc5e069e880929eabcc97344fb6ca5587c5ac1404783848f531f1e915941e7359fedd328f7fd12b3c685f8c1f29d1a6ef7dbae3e5e32cdb251eb43aa2d2ae0cc18b3f40fb006c2778cba387e5852ec4f2d9b8e8ccd5b3e1f4781c974aca940c45d35d30d3b9584c750bd45a80f32f73dcd85c99ae107b92888839c342cdcf88911cb974d611b14b1d85a59e88c502559d6eef3b7f5addf7d307bb25c57aae669767db6d798ca887124e159b0317e09076cfdbe61aa9ddeda189036703b1cd9b1998f88325910a37ef1fc2e227a382ae635e847df8625b99eb6ef0ef10ce7a2a5762ad7d03a7a4e2b767c4df0b477d6e9601dc8e6438184f97193ea7d7a8c22f1b6fac1f0740f1beb8b68db40e0b22940cff2261273aa0be43df561b88184a9377e6a27f27942dd04abb9448b6b6ecb3a60f14dd39b58b8d94e1991cf9d3a071ba42e0e1d71eb211ca466a70fd4724a34639707feefbfd73dd9680d76a214924642a063b38b85cf30eb763fbfe889f34b20fa4a10ba214d938a5a092c6e9b73b13bd664c75b34f746aa360593c0f8dee0f328f0ad4a3e40d498490007e573b8204a1ce7a550deecfb15f18ed5ea6cb5dd95a68adfe4cab37c13b383f8273b1971580016a8df02a3f4f431c9de9e7ebb33244512080fc5852278081b9f4434109c3427441329e8071d19d0fbb74fb6ea73fbfc7c0ac1012d3a0948d94d7ceae9b0112ec43a16cb582f9c53e7eb0ad15e05ceda108fdb3dc9e585a332018d1cb19e4a75d86041308fdd8476c88e4826931601a3a5dce06fc16512f4669f10183d5a8d15bace4649abcac07358089aeb1e9b8fc3776f3239d5442d3be33d532097e13651af7c9a5b465ace9e626889800318447b8876b45dbbe1989e1eecbfb5cdf5067c71a0d7b7fba6555d0edede12f7228d7f9841dc532274f24060b1f52da6fbaa179b81ce962723f43601d248f8f4d5778c1653e038c8d27828836d562968004003810e9aa9318edf3260272b54fca2e012f6c04abe92c2e6152f3c3e973c7e9abe8c3467bdc246f0226d1b7669bd577bb317c571aa8758bfb694fe4dd17ce78f091cf6c6de3cb601a9d177128fce8d42e652b490d90c4f8fa04ddc71cac300d3dff699be3250bfdb2136edb0057af3ebcca77ba5b3ca34531810c5e2d4c5b5b3bc4e71ee9e30cac067b7706c326357fe0ad2a4bd9cd811b4e9d696bd9b4b70579ae246381210f879c769e5f9cc3cf8d70e9c94ab74a55f5d7bf61a17418b6edb6db4147fc40cf98c75de85421b7d192919add48e5334ebce2a06e56b915447fe085b7dcd677659dd55de1f705c389975e56e0338a2ef07ccf5ec3786407e8449d9011641786f1ecd4d3d3da975d61f5a442293e6119ab20686ea8cc7681010421226838a95a157e2de948c536aabadafcd4095dfda48e5613272289a8238dc945e5f1ef30075d5de096131740cdf23da1fb8b9fa009e5b321083cd93bba9271909460c09bbe1e8c54319394ff85c291814e21215816d4791f01424abbe4cc4c792d0d04db1b812f4d24b44caa76de2bc50f4d1d1611862512d87fcebd3c0b2659082b2423bc5360d107ad7b8e8ba7438ae4509105d6b618af25e75c51e272aafaaddf1e5a227f2b2a2c96a8a83dec23223cb428136a30b290181ee20a819cf52f6c03798e7294a89f3b5137693d5a8b7a0ea38d78e43008fc4eeaf6d077ebffd3ef7952620e0af1395c38a289832df391d1710ab5b103a1ffeea8c06684c03a74399cd63797c770e3f0136d8331611502d21fb883136a82f2034358880392fc3d2fc274b799e59b89f8f90d2a5a123d3c21e5bf3540323743858fdb8912c7c6329a3aea241075ae097ebb23c8cd50f4ff46b42486e65bda6beba5f4fe6dbb30f7e61b1bf690c9f00f7513c83274cd21bb71563257a20cc38da2b88c1063bd0849c8243058ee205853342085a8edb7545f0d96a6af936a3d4612b95676665eb02e72e0875100dfa444f039eddde1422ceed8d38e6c3dbba25064f8c6cb5786f9ca67712b7840cfbd40f99b1edadd4bb9a61f48124cf3b49d68bd642404eb1dcf428eeabadfba6810a4032f8ed06b38867a7098c7744d54dcfab8f0ff941ecee69da9916d54097e080cad86dd08bf53833fec4aa4399f7124586223ec70e2c31e8c647be06df9e86a976f37901e9b134e775de2a0fd53d545c5f92236dbf5455859c138b7bb1112427049d29ed4f5dd5c43cffd3113c276d9bba910879e55efe817189fc239a204a9ebe738c0dd161d10d60a51e9dcc8c38861d41ff029ffd841086803320a17ebf5ff14b6cc2ac3dcf0ce2eea9af7ae23597233599c2321dd2b99e06d93f84989e75e30a388f47079c2af545d96f270e064a43a00c76bddf2f5be5089a69a138de844216148a1eb0b413f58d831d9b8967df297455e7538442388cdda12d157fb25896c6e2b47696c76b234a88bed4f09dfd64f2e4b77627ef03049030190fe271a5a853591ee9218a0c6b12cb3f02683d665b211dd1480cd44c9c0566ace7d751902babae14cc3821374bec774d54b4b4afd5d1811ede556a7a5ad02642a878d2d32380e7efb9082604f49d51495105f827d77945b5cfaf2f2980566b28ce3dfbf1bee2e077eb067bdfa4cc28f5d2211ca99a615e69118d9391e3feb9b13cb4a2fa9682718189ec612db889228aaa3f3345a091aeb11f41420240fbb47caf567646d9e7c762d3288f8bb2b1165cf049a191db5042fa9185fcd180b04d3007c376e0aa3d427d66d10918821f74736816044366463df7cb3ac94cea167cf1daf2d1842f130295e40bad672a22da9238ded69e241395f04d5e3c3875b8294faafbd3d90ed56ff3e01c5a0a3e349d761273143686aa26d408620c7d1a35ccc430a09e3f750d3256298c6068c0fdded270f308f79d2fcba591d723ac0cef703d8f0e7c051bae5b453abbadfab98bcc297ed4201b03ebc195c2e441cfd3b10c63c08868db36c320707ecd6a37593661d70a81f30e6db4a32f98e4fe6b950ace55923631c8f95138781fa2af78d8104fe39242f1fff6942e8e782dfa0d37c863caff9492f8e5cb70046d207c4630cc29c20e1ac105aef093261d8d335456961e552ab14d107cbe14e9de912f0e5d58d16b729270208204469f917af4e710123c3bc38a4b3f485f2926f058344db105b9239829441a2d8ababf04aea615c0e350846d9bc3b5faecdbeb450f38f615f119ad1b5dc748e88107ec2fae01f0915174feec37b3e7248ed2699d0a5fb2fc785f17d6275fbea867aad815acc8a6fd3ca4ea7357d197e5a30082ad5f35a9d894c0aebb206c6487163c9cc20442c040e6aab33d7b4b221e4ba4cbabd975836e353129559d8ddcb3c97876cdba360da0e0c1dd5b0cff7957a444027db985ebefb6154453a221076c997d3954b347f49308d2ee14d1676b75ab6ef365f3de54aaf398fd96b9040253813ba734829bc78a6db59e3f1c0ab4c878a72d6b8681157919130fd3171126994dcdcdcf68955ad64af8156702c92f7a715ce6f7ddfb70f60e80c92691efbfdebc8cae252108fb6c0010d303d9027d4a5e63413b5fb2316d32fb93c3ea52a2a7df50cc0058c76c58d73f5bb041d9fb9f3c3cda9bee0c0920079ce4f1ef8698ced664ce2e2b3b86027ae2b3bcbbae5bf7ea3693d9429cf94938dd3a2763d3f53937c46763ffee6579d018358bc69182b1c7158a09b18352ea618c11c45f07fe97cb65faca535f43237879ae3e0a31efd14679daf8fd2ce25eb8f32218fa20afc586a98fd908d3fd804cabbf56dcae272328011b252dfd83e5f0a5fdebc6acb04c5540255e1322de5fce9db5aa4cdccd74dde8990ae51cefd6c1edc1879971d3efb1f94dc41b2b23e9c9d89415b46189914a229b2f3e8b05ff78c68711385a00e9534dae6f79d15842aaec575e4ee0f098028bc74016cd3f8e93c6a0cb21a0b574ee63e367343ca9de28003d76e02d0ee2b8d622cfa3615d3628fd02499eb7bd8c1aa1f34edd9c2d059c6a7c7c978a5e4f60801e03e17c3a09793c5217f310a30db1965b8e328893cef20f4a899aa8d9fa28f7fe0a733813ed7466046776a874273ecfb57158483f4a588ad4f232adec5ba4ea651822780596de09fd54b1717bf04130619979a0e3d12ab7c35d64afb8099a1d21bc952653742f50c8e1c244d10374329cedd27fbefd37815a9b3112a4cb2fc587c4ebda381b2b01fced45cdf0b9ff8ca7d10b65ce42e728de183a82e369486a2e3345664e70674a5dac174d6616d90de8e472b62759df057119875483cfbfb103041751747f9cd12bb31e91caf79eb2db1168026a4707dc618f30", - "e45eef9561f3acb3672b4f38570256e8cc4d877e2998e72b022e33de8fc20f7320fe0882f2b53559e084923786e8205336a7d15f3fb88a41e7bd20767f2feaa02df2221fa7577988db0bbf61f3dfb429868688c53e130725d0279c505686f083", - "475a44cde0cc931edf9a44b0c1e0001766f09ade023dfe6b59a6af800e549b55", - "7812a320691ca8442767a51a", - "eaa577bd67fe79ce4586f43355c94528e306c1678946e4f7a907d2a8ee7f4281270502522119a8b09b6f05d864921cb515fddf6a1000fc2f67b52d0627998591e2acf5b6faf71c278e5754b2703662ce670dd049da8d6e280c2b84d6a9b29ce28980563c40e03381a49c54608b72faec9b272ef05cfa41957d9eaf3e944b22610c725d8efea90aaac6e782848d368ffc08784d7fe37ea1effbbbb34952def29fc511fb10a1282bb0b6334328e4d00529a44de3259b522553a07d524dc75f431cc9670127c15670c0df419826617cfb5ebdd8788d5f528a9eb1e61324eac5c1746f339aae2e2e2fae598642a389da671482128acf2d69814258d83de98f186468136868b729aa5f0874fef2ff2575a1f87439d64e049e4d0637e9c99ecb7275417af654541306615f30b75a6caaa563e4790dfb28fe9f0e7881ea2d885eefdba99efa7f878925ce7d33e86d888154a1b03189429fe20af8fa3a68d65ced9b690a709031121425cfcd7e1890ed9614f9dc3ecbd0e38c6c84e453e3204978ddc1ef8d7fc6cae28c61a472d8e089e23209f0c36e80c994af771e6505e72ba90e5543f6bad6dcd31fdd468b13533a0254e44797825764ac1f63747d8d6ca019ff16fa732068ee94be382c46b168050ba725379df31a98ab81ec8eb266a3c3f2e1cd95e5f12b3bc79b8b435e4d94098c6184631cec57e9d8913458889223a2a4541f34d2f9df380f34c3e541fc587f0a6cf08c82e99476060eb84709a292f4c7a8551bda3a9eb6735787dbb9d7f1e83937c2e0e49f2cf6e0ab0ad84c40fbafc3c7e61886a8629bea816972fa0afd0f617b6340b1af19e341875e97565c8eb0b25fcf68696ee674d2abdc29396bfd0f282543d2b72a239c6470f76d3b5bff6d1d064e6e2d06f9deef2aae8a259c034373efc820f9a2fdbce36cc27f35dd6386de3b49509d0c305757257f8674d958c580a09e768c0f6ef237416fd53c31511badb2e7cdfee636508482f01899e72052b46b5d844799cf94708520178cfec2b61c8980fa7dfaad8915b0b75ce6eb57ed4a01edcb4a35c1dfcdf8d60f3191bbcdfd522a0e321ea41c2cd87a303522d0f98b82dcbe53232ecbf0e2528de7e1be75569584bf2ec574687fde67ffe9827ebbe78f2e5bc4fb368f3c9b0f588c97f7a139bd82fe86eb605b8e29cee75d07b510da1b24fd62cd2fb366f1621e7dbf268b15937f7f7ea4acf6e615775a32c90733769996dd2c5aebe08ecba73e0bc4781d33971992b2764c1b08aa972859cb61b003406479423254a01ea85a348ef249d408157cc0962d1e24cd9c426e6e6a3784dec6fe935be1f6730b01e8683d97e21d8774b2e2655f85db7149e930a44524d4f86004cd687d8a528b6ceadd890707458cab62809110ee28f61a7277ed79dc41e573fd4a59fabf15393ed4c21bf4d5138ac843e80bbf5e1c39ac2d7f2147f35996eb51a9e835db63faaa196b8aef1823ad72523fbfcb35b5560582a48a25ab770e7528e4b3ef291e6f62f5fac916e2162b3b56304287e46839858daf322b0de083d1691d6bda44d66d085ef0d0ad364eebacdd0a43a4456035e58910d0b2dacce45b1c0beabc784f3620a3e4390c345df6117b86d4fc386523b7ceeaecc21233a2865ec6b63bffba6689fb3323402119db8f0665a4730b2e26ca6411db04f1bcc78ce6272159ed2665a286f1ad7758d6d90090a6fd320e697dafbdfef575077e282b825bd64a4dbcf92d1fc0c6f795154e8466ee4b318f2d44b6f81c52523ab68ff8367e01090c2623e00b4008e784049df873a35c29e0abcfae7acbf27236adba0b913d19a15b4af4996669aba4c656c317084347ca962ac8df15cd2f849f522016eb92de4de62944b917d88200ef9aa2def0d13e5f4ae09d2eb4a2d0800af1d704cb01975f6d59768a2b50e39e78116147fd6dcdfbc08354c1b4033bf6772fa127856a4072556a9f07bd7516d01ef41bcb519005c0a3b2a04400427ec033f1b52fe5fdc1aed8e2521fd0fff663e203defc39d7546281a98a502b8a470af16cc62a6581c9985d7ca516864b799fcc55a803ce80711484f6b81591d2402bb1499c95dfb1dee9846679c22853be87c84b4547138dc4fd46b4e79ad12773a5392540a595954112f0cb1d9be4d4eb3aaa4286b6c01520558d58587d9d7f0df3a0282011ce01c9c17111d10ad61b3675b1826c1ad37fc562bdde951b43f890555d6f74ac4fbdb9abbe8bc1e80bb6d52c13de8960a3ff8f65201265e82981dbe39e0d65cf3f1fb6c56e11f9786210383d0150a5e0cbbdb52ca8b2bc45c12fb572657380df369082685b3de9847d5014beaeef815d63e203cc911061eb53d89a312d187f9f02760bfa71083fb643f5d8c324c410070b7ebde250a185e7359837899bb1568a43fa3418f39c12feb03b148b924bfb98b99352b1fbad3f07ac8e4302f85d1fe9ee4bf7507972670ff8beca105cdeb037f1cc4f944d6ca869d0281653de5ee93a7362420fdba8b01a375ff08fe27873655953ec1c00f53613c6ab8b244e2fc1b6babdca5311428d06f57aa4882dc870165deff75ba877dd2a04d1799f26ebfac97a1be53a83ab77dbc2cd4aa45bd779f61b1283eae1a1866ec8a9c150dd0a4deceb2ddea1bc0f4206cd435600a8f190b999b952337d9eb2bdeb3aba2cb2e7000319056629dc1f00901f0880278509417223a3ea0919fcdcf12bff0771c7cc725bdca292068478ccb2e1f35ae8964e0601789a73e7e7c1769ba53f865910fc3d0085c922d7f7849d27b6e7503d521371351f9d7dfd5afc5df0effdf6ac49617fa228501ad72154a73e07781dc4b07765dbfa721d95cf1dc41e161cbd34fc7883a25e3ba6b03e504b2c3b98c8b12ff629b965c2aefc26d74faff7f784baf09c3fc38c487a9d1f5818261162f97e9dff70cf42eb5dbcd7bebb66d68f26d917ddf2a3efc0db1e3372b170b4cd18da507e44c467943f73648dba74db1053b53f989e481c3054bac22c6342fca2c26d30a859a1312e9c353bf921f68136de2b1589747bc765153927c31ebe749dcdff98b5da84c4b66085451b4c87fe1ba2142f98636bcb268c33f7b8c2b96a6525298814578377aa189dd73d5bb27ec5cd2110d8751c18a3110273df2595d4c3a00809bdeda70d86c4a8169b7010c9cdeabfbc3dd3266518226d0ade9bcc4825f18198c854de329fb8fe456dd3bf35d89bd9d2384f3f3282f6872351a18a2f852bf173ea4426de6d01b3ef4b4685aa82df7dc45b99617a8b8c8a0c65a2237b3eaae8267e1f6c453f485432529d973924a080f6a1cc2cc18f804f53209383ce3601ad9361afc331707be1c88b4370404cb7fe0bc538df04adc5c8d9ced94b4c474b19619a53dca3fddb434cac09ce10c0293fea04e8e1b19fd3ff3d174baa988d91cb604fadc59ac0b61f4f87bfd07eee20f7f3ffd96766dd6f3555cd48da7ecd71d2fef34ab082678bfc4dd007669b3fc7a937a5a46269baa7e4e4e43eff1b2b847ea70b6c6c23905d6fb2fbccd944251087ac00c35c2eedba30641797d36ef9d3cb1afc0e3e8930f5b605a847ee77106995bd44047294d04350194369c5a7bf246d1108e1d18d9a638be0c051f695ce86579db613cd8922e86c683c91800b9a34fe6339e0dd79472daa662f78f04f0151a3acd18f11faa4e1216222843b521fb998c8490ab8bab27fde36395b456501307d07b484b453b189fa339282a634af30fea99c9af8f877e61871fe743238b2cee6cb69dbd17d574b5106ebe4b0fde4ef42fab469a5ba7d62c23b67d857f1af6ac981c320db70cdbb6be41bbca60bb7a159ee1c85cb82e0a220064359c06c660b75de6b49839eea68c80283b75d9d627aa4500c0c0f21edafe4a2cf7ee079d5310479da06ba58b142614fe69cb236c51447d63db31cdff91485b46325c26d40dc6d608d46a5e2fb01df06064a022ddf6d5cce0147d5b2a5aba5f9fadc5e778010a924e00a13e21daeea2cd330f45536ef4f42c2e77be00bb53b3f9a93d3eb327dbf30baccee5d26849cfad654ff3ef2b035b78dd3ef42de3302e5514551a968a205b823dffb040ac9452ae3efb43219b02436d0761ca11470405510e534d56caeaacc40eaf9c47a39475adad266f5ddc813e71223800dd46fa7c02b078353f870049806ed7ba57b40b7c3c6272296667500c4b97dd2d7026698b6bc4985bc01be99e0097013a2632c71740888ffaf902a02bf644b38cf9a42528880d9dd142de967cc2ad3e1f1737f0cb8dc5c59c252496e8cfe4e53c82f4a28d9ba2bfa62b6415ba3e5e09040d7f3e3abfeba53e46575e8817ac5eca806ec8a84c7cf77c9fa86c9dd2940f5b96b25a92d4a8f894d4717c8f80a62a35a51d8511f1e822fd79e6fc27cc3f3097d9e3272447de6f223971657ded9e660ee4f8836359742ce7616fd0ca2de6656c71b212b34b8edc71ff36bc84ac4af58eb1adcba4b2c0cb31468dbd2c2b7ee6752981ee1d152c4e4a9b25b2ce87796820def34b662381806d2e4fc77f0b69d7a87de43d94d62a6a6526a7f8c588392890e96f9c51bb58b4f438eb5d197477ce9b160d1c898c89ab408b3c1d648be93b531a5bb4988592c5a8999ae3acbe586d947fe6dd507cddb92dff4974ae17ab99aad5aec9d07b96bd29489876f51afa67570e86b69321d9e565d86001514638403f86666dbf93f18e0a62bf65db333bb85a3ae12d8411aa3c2a423a29bacbbfeebb8a5bafd90436bfded16f992232360211086a3084d9fd1980dd96631820a2cf25c3ac5c19d164cf5ab9a852399491962100ca4fd640146b7ea5460b4fb9e46bf8d23d508a4eeb8a3e9fad8249ece3648c2ec7705a7414eb8e8d602549204cb437f589161fe40de1447d14efa4d738b775d0333526c845cef5ffcbaf5c957df1d8022176b56eeb198e7ad2dfc3d7ea46b125ed432cd04c77efc011a2dad8573345080d7c3cdf5cc160fbc86c4ee1959ee1b8258056b0f3d9343c22dbb2f7858c5f162f08cffdca1acc866aa68e5f1c00b74f66544e8a61e429335adf6f73e32fa87e48e1adf15bb6c7aeacc93713dbc31cdccc9b0e52f922842679494039c395cc1d95eb97ae4df3bb8aba9a2584d97a236f87cb22f00c0a078b045044a5c456e22b2b94a76a559de2672c880660f9785b76bcc2aaed780e05212415c6e73880ca110654ed155a1004af45d5f15ae8e5bfd4817440c5d3d5589eea2c6c344ca0d85d91460638b37f877ea4cbbed35ea75678ef2335a5922cc8541987cc256c8f58045028d33a1c4899cc32265c619ac782ff998a478996be6a0c5b102a664831b395a884f18e77885d860d6b236c52a8066d2ced25432bce79a31b23117f405ef4ebdf3517de98d288f8c3baf04b63b6817c46c14b646308e9f97170b7dbbf9d1a36480338d8eb7466df56feb6baef42cba75512954fd7e33961d247b7393726e46c6e94e156d5776a89ad3e288554470ca0bc4cf4d2d2b0c01ae4fcafcb65ccd6ead03df1d4d6577bb", - }, - { - "228eabb5ad8b4ff13b10d13b27372bc2152dff149859ba47d9c89b741d4a5340d8fff5858a4576c55547007d7e2b3f94583ea8f0976237712bd2e5481c3988f5387e7ac2c3f18718388795b7b2d44b0a13f3faaa55311b800301c9203a511572cf8f349280bbabb9424070f415bbfe28aef8d20329ee842cef4d4c299e619b6ef1cf00718aab2accec9ac00155be2903b6fb07dfe98b0bd8d8580176b99ce4aa6be51cf59046c17ce1817d363fa63af5a241d48bcce064a438651af102ff9c6de4b86374fe24f1dfa66e16e51550dbb791af425d8fa601c70c1bb90e1a557bfe0dde730b0364eba9d2018ee751699ee219e13fa8874070935b29a1767e1d748bfbe796fe4b81a71e823605d39fa4b5b885f4610c34d1a090fa4106785e7a035a629958ad1b00cb9d36d171d575268efa1bef064fc0a6dfbae8e532466035a0c2cef96fe9f93b872f0cf804811e927b39818189412868fb104e2d56ae62f77031f0df1ae91aa11826991ca7b8af22f130a47a72cce36ddc319b32dffd294f2e192e490249ea1a6f8437173ce6392d16dda888a98bf685bc91b89b8ee1eabdfb1806fd61f018d1744fe8b03521de4bff86d4a811ca2ecd5be668e9c752a6c26aacc0cc9dd89d112785c25ca6a0a7a5267b4e37457c04a0626c8a29be30ec28ddacf47a84918bab164d07bdedae62132ab04a6f2c4e108eba9ab878caa4a1a7509521d427ad7f3dfa86fae8345dfb5e0d46ce3a94dec84f7880c7422468ea74fe0b4825b8c762b34d5d9b82ba96e0c7dcae01718ccac0044a87476ff031e3ee3c2c13f5f375a841d243c38cd9a354b6525527de1fe7e36a6e2ad95e5bbc4c97e85f8cdcd5341da777e03451838807d5dd2eb4fd15976783c140e21cfc2eb3e58e40c16374de0aecbe3e3d41c64417a472cba18762080a2348ec3f441bf229a932ea0ca7c816938655d0c81b14dfbf86aa600d0c68172fb0046ef51f601ec89309d43ad1eacd583f9d205bb1ff1a37a97b44b5e35be4945f52897eb2a74645b01a7f82054cda44e9fa9f9af9bad1a235155718713bacd08d354f3fdd95858db0040fb551e9f93ae399d5dc53a67e88bcd5a02d104dfd9d824cdd5fe262ed9266fc47b7e640f2c9d9c7a62c6d24b429fa55560aa254a824a0858482e771144d6d5b05539cf71d75bec3a22be75655e1ababec4dff9472a019f6220067374dd49252282e4945a407084633ef9c88d14833bd95335107d36afdf56a642cb739bf0a61ed53a6915baed78e9d74166ebc492b517c7c594fe6564550bb7108f43012551e65fbafc0a9874e46fb64b5b7aee0082a5d617a43b8bf9473309c6761aebc7f13b72ed460b522a6b0875b67353c705f99d1d9dc899870fcc90c632aba1fa9ced6d7a2368dc4dd3d4b38a5807415e00de6b9ea70525a6c1b67d04521efeeefc6c591fc5256d990a1123522864a029430bb7ea00dd80d283fdd6d61cc5b509221e28f73386803d97a38fb0182fd95b3b91353c6eb60ef2b3d5c8c0ab8dc9cd9be2b4cf69450d00e88cb0f0bc9a4be82b71148a37237ceaf945ab94c365625f58171eb15c1bb244a87335550d813d28f241a3296520046e65aff3291555786d7c871ec8a2d10d4b44429041c3cd6ab60f0def742de3d28393c5aca92b150697ac15504ee66d8a2aa01a6c63d7c719d6d4f94af2ed1d8670e3231a0e481095e425e6231c43ad36e3b7a3478f6a61563f5aa13237beb8a891dbb29013c325f7f91c1b055fb83c436fdf8aef49ec457946e6ab7e955427373fd9c743acfd4b9609569b591ec79c7ea7276de103a35a4a8a05c91f59e04689ba1ddd570b18ed046f785d7e4ff9fce7115ac814fe126f781828877208ddfbb2ebc919e6d1f6eb417f38bfbf22ac9633f75e58e560b85d88d0e4fad9b2e68c9ebf9675819d50c30c8982bbbc2f41e02690390bf0e16979b24e648bf15b18800aaef58c3c465f38cfd1e47bf1266c17b69523b7868d2138cb95c4bce0dd3ceb7c2267b868b6e12888d5a489fc0091b295b56a1c328b54fe1119aaf1e6d7dd52fa450b52fbfc8b84c2200ebe209060b655cad288562786673121691809366af37b76567762d1fc24f1fad3128b43c8d10e9b6954b2efcbe40124fc0a5b670dd6dd544e30263a551825282aa06be3817a8eeacf31ca8b25cba011d60b78d3d2462810764e4acb566ff371005f5481c9d36c991527143af2c44cc8cfc59c920bb4a281f2ed4d494d30ba4d900edf59e23be2f763072255cb6f1e8b24ab1d305fbfb2429cff8bda303617c034e71a17230d0e860420dbcf9fea4ab48557e4d50797179496936ec6c97686fe6d9115809e14069244d251d4bc9c8931e47e06ec051e709ba1df526b55d959b37a6f3408833aaac80cfc9cb99915eb7d83e26998f0da2492b986fe0f5047b2cab6e6d33a117df21e6a8ec7f394a3712885dab176a4d6095e5cf75dbd3f0077e5e74b1ff8b902072380cf172562884de852ff5f07c55856224fb3df8eb44764ab9284944b86ab6f176a863cdd0e7ab5616a14692f6cbf41bc63113b27689fc2fb145736aaf2a5b26d2bef3a2a59ef8bb3f3e4d360a4251d0736482e9ed7e189fc48c0973b6649988228c2ac72b23826a61cfa06b11f13c8555be6e433d87e20113eb74c94f0e51719a7b38c59eba300089d06b9bc2a72017668e5aa3153ca4282718f1762642e7c1be1f865cd9b65c6387c8fe496f1e60d5acbb78c2f71cea1f35dc955b1e7d1cdc9ca339765995d9e05dd729cdf58aa2a1451b633c374e5b6c2af1c8486ee4250a875e80e1f359c15130eb1e2575c0c7badb2af61378527fa24347ebb12c10bbb36e3c94619556b2c641d0ebb691b2706cdd667f55b8fff8fb46e3ac72f3682661a4bac2391075ff5145eb07d69d77437adec2d096c1c89208ab3e7a9ea6a0ff4a5bc1846b3683bd7c6ec4520c3c95861a5856b0191e4221c9819c67273c66729728f6035e79c0dae8842df4c0c27ada1ad18b34efcd55b94ef120762e87e8c5afdec80d5788e83f0d1533cdd7aea8f27f33266e007b274f6d48c59bcfad607e8b298be2b17322be88558c60033452826778f167f318b660607bfb2f285cadb385399636acb8f5350d819511b5e7931c5f8483529d3ab3fdb5ae2dde0ada918f1327c6c0dfbbf5ed3c8afef171910dd0169022b3cad5b08084dd5e8eb8ef1ecb17e48bf69f80e3db0ae1cc7b73d94b89696e3c3443ecb4c7ca12568201744d1858d90ff759f2d264d49edf47772bd0e0990c14dcf8c8a4c2dafa44dc6e92f4c66b03bdc4f68f28ca2d0811a433e184cced99a8e5614ca83c46ec18b47e0c7ae91037ae06c6d6d0f3dee19711c21cddafb5869416d23c5219296acda7774891877f3f8d46155d39f43ed10500ede3afa26943b83b800b54a9752250ec6ae173e920002f365d692a9b3a2f9b27124ac97b8e81b70e8c0bb7022d07ee97e962810962b03fc019695b5399f77aab414327cfc5dedd51e99453179c42ae85a42f8e06e0cec6f937224dd019c77c5a0ba32ad08107216a9c758138b730bd5b5f4b613f192839514a8621634d9dbd5840e728c1ef4a2c8bbfadc376dd80d13dcb327ce55ab536a43b570789f5c5e135ac0af79b54232613d0e989ae695aeb358c671ae71d508b58a793e19c58c3d204cdc9a021ecc634bcb0bd6a1917554ea3bd688adab8163260a914fc01d7ce05a497a5c5836cf9401cb6aa35cd008470bdecfb97a511c905badd01bbb4d0c05867661debd2162beeccd52399d5a70a929405293916f33ed0d03f8b850f4bdd77b1fb6283118d71de629577383c81cad086f4099ce7476cb787f73c96431a0df4156f7826fce9045f7e7c97bbfd618b845595203cdc8df4638430fac74a07bc5f773486731d8ad29c06695704cbe2882077a85d543551b7ba81b181ccb93d2b3071b1a38f3c762b42df8246aa64cecbdc772830ac79e766fa99e8c65225f28297a32526df9b51227bd368253737f013ae18435a912bc18cc4a95216ce449865e8bd8bc759dce9d4af52f9e789eafa37023e91946952202dfb7243cab7db2f9f98bb66f19750c547a2bf2e2ba92862ab66f33fcf465ffc41d23f0b891a3b28b3f68ea48dde6ad4802902abd22b0d7d9101bd61471c5d88ee9d9477b7cf9f6ac52e0f520c79278da22938745446f1e647ae478ecba416b941aa31f979d0633efe72910bebb8988de1d0013616f31c5da163eb6c07022649ac57422627a5642618f53103adc9918f9992c5b085e10d2744f9934bfbb994a710d6cd387c325e94278f97d5582864f1bb29a1400aaf674ea8fb99a3b42e4ac50418fd804a5b1471eaac4642d4aa338fd3d5d0dd84372b2c32c5cfe7f319acf731a9787b048cedee3833300dde639cb1386c8fbca4bae8d67fb7bd72d1696a0212e27e166e6b04a79e34b47c98502ed0bdbd8d61777537f72df569fe5ed30071b57e8724e98ccb88c07f0458cf32298cefb6ed672b255e581ac756789b57e950d57174bffd3f47bdbe4b168e7e3f1a6df508d4202d327947facfbf9526a9e5fc1a5abb179902d4584deae6cb2900391e080d3f3540b87c3a873ccfaee5b4aaff0e6516a867ea00b4d5e680fee6b91defc65c240614a1409bdd0f49c2c4f3c1d258d77abfc17a749660f49547adb236730e5a7a22fbbabdd8ca079a8efa5b605332db12f455868ab67a1ffd27d1339bdf8d150189cfbf6199c6fc27c05788138a63267eb8ac086e27286b4ef99ee9d92cfedab5ce9916675f128f206a1733f47a597232067aa12da20c7b9cab6575d7634f8c31e9a29948b528681f3f9c13b9f585ebfbff8c28a299a43e4409b31b6c02a79eeb493734fe5f9c1d9e3830572eb54229b5cf525768f695acff48c76b4a6e0936b7406ab69f06d33d3f04946db9d7966ea6e8c50ede5abadda28149edef5223a6938d5c32933070d234043feddbd65c81be218f9d7c497a1ecac30bb9162e60a9bbbcdb4fec4b212050610e2b376aadf58b3c9207860d2650d0310ae6606a8f1b266b6a13b68c3306ed413224abdf19371bac3ea1b964f28996fc70f666ff118c6a7c9f2108d327f5145919c03832f754de35f5979ae72130e39126499037d6fbb3751cbb4843b05d9dc91dd5fc1429da491f72e3069313ea243933b47109af247fcbe0c70f9024ac5a41815655ab309fcaa282d03596ba59cfee0e40f7bd657689453e98d562442fa4c585f970b6983a581b0b8eb1c5e780b3f5c1abb326213c6b5fd440c2187066ddf55f4eabf88804139392c45979440c6f05b7222bd95e963832d7fa4a4760273cc075e8b8feeccb917e8feaf7d3f766d9ae880487e69bc01872ba62b91b8af5dbffdd93fdc95e8f47ed793fc070a5991f2e9ea61439662dab218f643c1959171937aa160008a548f51f87b58f2c4fae5aed556f26bb9cd1dc2b3518458e2f5ec5d974c6e11a0ed639958cc8c1db771cc8cc8bee8727bf6452f47c9782acf548856a0e67841c3dbdb1c98572a4fc8e6cc8195a504019b4930d302a90dc20d8628ae6c90e0206cbb3d05025744db4e115cd3b650e5519a1624acbf226ebca8875b05183b2584e65289f8b9cec3f7d010cb9671a0e80bb70ca8763f1722d79e8decb6b9023baf64b5981e745c06546cc1e", - "ade72c2ea29cf829ffe99c2d63840b2eef9b51a9919c02128347d2e88e9f063b86326928cf6252ce4beefbae7206dc61a22d0b33c90d464d551835e3b73c1e3d6e88663deab80c35a607e4180ec079b0ee84e3b7922904e7423acaf976e837", - "43348cf32211d7daa300de8a4218543c8e3c7373ad10950765c39760f80b733c", - "e4709d225a552e90fb357413", - "562050bfb40451f27b1181c389508550a0f46b53d14ca73143da9dae3d3d2b466e9618db39e3219675d2b6eadded7dd9c741d7c9bf3c5619a521189607acbcf6b3964d469d966fa134444aa06d80749c873f0f976e0c5efc5be8d00a2729f03eda6a7b8630575df8b3a19388ff88daf0d00bb3e7c35a525ded90a4511ce815fe6c8904406cf72d7bfa14ca533566f7b54268835285c5402e22a63f98b5d90c86dae0a76d65eacc1ba85b3f5a1499d5f3432dd5455fab9e8bfbd266e99283c2bddf9b556410956b2f061603d1fc91194766f90da841699ba7da3d53ed5abdd8e98034f8fe734446d92b458a731aa4c578552ec1ac5d1baaccc4153a67b48a290602d5f955d61a08436b27cfb0786a80afef76e1266310a42d90feeb3bcc40ae5c4506432dcc92f7e5758ceaf277255401f5c5f4b10df93a249e38edd9effe7bacdf7fecc451d3b2cea77c9bab0403450c41929775b8c0ace46f6928f4d9cf3adf86832d298ea32b236d3201464e2ff506ef01da0e1e389e26e2b3ddc553b369b48d1aa5dd43edd5cab065e276aeff72a4c43206063fc7eea3bcc783ba2221f5b615a7a43a75cecda6bca5aa159e9208bf66af61e2e465c2daee630c4c62077ea6ef0e8b4b4e272d4e93a5f5284f9da463e1a60f815a8a31698ecdc09dff2b62f00e37aea5fd4b07a110cef27e12466c1814d3b10017cb9b8e12f2f38f10cbe31296de2570d5662b16639fcdc05db81e0d48178d055ef873501148d00903ec771400fa4873c5579dc3265028f531538f6dab1e5607a15c8b90cbfa4835107cba6f453bbdc71d08c7e423f58b44be38a9c8a610469f2551ee6177edf639cde35fe8e02f76b7ed106d691a876a4fda3b42d8ace3e0d3d4e026206c5d7d4d56fdda9dcd30fd7b74217fab3c617903f1aeffb8363443ed128af94c391810e327704d6f655e57dece97658d41e074029823850ddf7c5937af41c64465046d8544bba65c691ac69121bd272107f7eef8cfdb6a25da5da16d1033cede09129d51f6abfe63905a6fba9a64d7832fa35825447150595a60163af848eea878fb31a5fb97b1859efbfcc8586eebce8cfe64386461a9b88aa5efc1db43c64dfd5d4a45aa74803fd178f9e16a3f59acfb6e13a564d645cedd73890d0a82fb6dffeef527694a7cf2a89aed9750c3675a67505bff77de8d046087bd39a85c90aedb085e99baf04c7e3bf92e350b332da1b8af85550a00d68904ca426da61add864496d6ff442bb0b848e9aa463bb0c2085cff1a83a47d6f702bd184cfb5c139752754c8978d27b58d364bd88722b9097ee3a6ae28eabb14ca7c31e40461101e92448dbbc63b55cfe56efd078d0058c5e6146c73bcd949c4b3ec9f881b9a5f7b41ca83301261e0c674f2d35d96761baa00ce0675c082bf73dc52dc726a3e605067569a372d2bb47fc8fe1e74f00078ce6f352a6d9d97fd2834670ba3a45aa6751eafc7ed6694e1e07542860c8ea516f296ee901a3ee16b00b40419c74bf6db12c7230325e85a918f412bc2f6469c1a13a5aa77f028e327749efd05b91053f49d9f1edf49aa552c58c68257233a168db60ac55b4086ddaea275b078869cda7b69493c4b371b4e9c8361357a7ac7d3d3bbb464c960addfa8df2b208b21b090d540c440241598212d33273203d484e0930e22469c2a8e866579a4a2b3db8f8344dbf8baa1b97be0c4d976f6aaf14cc09ec52630139b894b2b6f4dad3a205a7b286253f1522b1d6e43bfa37beaf06f831c6f0945cefb2593b9b298da13b0d910582086c5d7e256ed4067bfb476dbe01bcddb437d46ba716d6ace2ff9912c8e460ad33ab3d8f97b7b08dd4ba9e01968d1949ff85b4b9d5b8da291fc0f90ab1eab1d246f67d76092b7a37528ceb388dd76f8a8f0aabb7490f02a2c8bc6498cb26350d859c466dd611bf0ceb81a8b7899c67742c22697ccee21c4963acb003d15c1a2078112bab05595917584e417db3872a0ff0a29138bbca7314449b19827525340370d7e48fdf9f7c6b4a280e78d00775a291081a5e78e7a00ff915015dd5af5f0a45690baba8b1b503bf85f326c23136f4424be4a559aed03fbc81400ac27a33dadb2155d1704950d98043dcd86df1eee78f3f266c4d14deb8126708f74b59aa15e8b497c6a52924a473f999aaf0abd3d148fee8503a1568efec7bfb0bd463402f563e4019cc9c9e1eb498aa54dcb659f43b86df0a34de4e51ec558bbbade3d69511d3fea2baf44f67e85ada7398d7f72ecadcd9e981f82b0743ed74bd33088ba4cbc85b0c99dc5382c599706dd2d51aa9f470c25a98e7e8248dec216a155495630662bf6ba0b7a4baa2cdad30e9ce3e1a65e3c23d69d5f946606ee8504dd70830aa5a8ddd84f10e064695469727d2efeb46186c9d3b7a170057636f05b9ec4c2de7d935fba504a1e7eddf7a5a95226b253b0b9eccec976ca3c57599850db40c27a51ae755c1f30d392467cb74e5c8235861d11d0f8461b0e1d84f5718d64ea92da62f4de184a6499dba473e82b3d197305de0e494f118a263237c7b4c0652327977edb427ccded35552c00a5804b9557ccf2bca2484d9da2c33f6c1bbf2c666ea10b4644a21e3905e5c4eb417ac3572e783428d23dd7222e75c356b99e8183d033034e29e618c90e66ec2f1e9fca47d82c1cffda8ad14c96045159d9437e91ecef41d24cff89009ff57e18c1a422860aa9cd31dd2a85b07422c72a5decc614a9742e62a4988f394421b6918e51c2412d749bb53b1e8fed7b2ef0873ffe14fa77bc366bbd5fa1432be465f5e25266c6c12b55df1f19b1a491acfc5c9019f122c422243d751d8eaa8ff721397915171556e999b34425f7d3ad6f6c3323b8133b4618c65ac16cb5941edc979472734bdccafc73c08939c0b1e306ae3015faa9cfa09ed6560269a1dc54c2c046a12a178144f4381f7b6fd3fd2d28f778d444d9f7a0dae00ea96c6969b78ef326a962d23275f1518f0e6a2469440612f3710b53538fe99a6179471be8c5b2d682ab3e9a5126e41ed6de000cd9e92fec3974e0f4cb2d2245d03d6ee80d6a793b16efa829d75c796f34d4e918250f457703559bb48ff78f0896be1bda403b7f1fd6a319d68478ff70d88238f2b8afc7d20e51757bb9db3bffb35a8040fc0db913c4f03d48619af7fd24cb8986b3e139058be3cc253b3de9b3bb3f8dab7b8818638279b2e6a0c29cfe16fa7250d3c74362ffa07e2977cf562140fe28afba8f61d81f7c73bdd4a2faddb00752bb049d0a57d05c6475c7387e6716ee31974169930c9fd830cef138659cf56f2212de185186c3d683fc6b7fd36e7821f69d0de041a569765066dc4a1934870a7b80f174e8f9e484942e62404a42b21658467873865ef94fc262c231527f39e82dfec91215947b99567daf75c6a28073ee4e67d4307e4b35b46f85433abd9812f35438b34598ff3b6dbd60b60747ad64565391df45ac80b272d0141702ab807fa27c6a6ba2f42c3facfae0c773940cb2943bb1353b41298258bc0d07542b69483e17ab9ce709e4160b80a0968dae9af8fc7c0324c753ca4a11a6df32dfa79a87b445c988154bb3c503e6884cf6d8f5e062a16b4ff230fbda109a6127d35e3bf2b29bfd3b18ba275af773b1981d603300035e046ef023d51874aa105d136bfcc9c7323bd0513a6b2b397ffea71afb7a8d4695411d86164917099eef504f6cff3c5cefb88f23f56c4ae3e2b09a3f353fa55630f45f06c29e8912e8c3c4f493f25eda781680585580595bba43dca9cfd400d9eaf5081d2c6697da59e012dfd0b875336b88fe16609c2e9876737b9afb868ed52417ed0c6b359d582d585ff82d98edd4e63c6b65cf43d4f69eee2af4819157b8a433966953862d1ff2c6d0cba382644a1b0033ddb7be3d1fa9a204042d7b821b293bd659dca980c108ad1db740800b9bd2fc1a163f9b4066f7604f160a7910bd947cb48ce6c81e680fc6571ff0cd12a3ded9c8cd560970ca5cb480a70a8322d5072edcd257604eba8dcf55f9ec97ea2b14fdcc72fbf615131836fb14e42b8d7171d0a06d2fb3caec2e0759e86b0d8f21e312d9211ed7fe0b48669934ffb892baf1db9aa457c07820723e5446420334bf6479f2099e01ef8adf273adfdd9ed0b741931284515d69c211cc2efead8339e450b13be71b35c36c1f00c2b8ed0cfa9792e422912e14b5b1455ef6abdbbec0035480c6cb69d21321d12ee19d528dd48f43b142cf0502eae5304ce52b7fb827552db9ab885b93e83d56a33346135aef11b7e48efca7cd52e2499a7edab0bd0562862187ff4599b2446bff11c37181092fbb05d0e05220ca6bc37f529d6599e8c29acb9f25616c27df291d4fb07430188e6470df7002f73cfe5fe6907dab0b4f90bb58130fe90241c29c6063a22c9f45d032b282eb92c93736692bd5cbde2a17552e942b595b08e6ba0c91a03b9079e9117fbba8f26ce6c5d0500c69bb6e22e3562a50baece49109c2d42b6714250665afd0f0a7e951182012f21aef4b917cd434d9ca22661437608e32666497516be34652500def6c28ef8f56f2273de5416142ce9606faf7df92ab779ed6aa74cb99bb1bfe758ffd344e1d31f479807326d1a7b98f6811e275545d69198707b0fbf027dc6a5e4815d62ef191535569a452c27c4e25ecf139df949d70dd5935bddc04f33b2f0bcf5073c51fc51c15067963a20569b5659f0e7413b347d6d5ee38a92b7e6e656c199149f07ebafe5281db6b1b2ecd9e0384b6f5a8e27ecea9a0249c61b16564964054f5f9621471a98de132e102f518c1419829e2ae2c8c5fffd1270f0a0b33a383437b0034783d50bce8bd7420c059d16364eecbd55b6ac8df8a70382734d8127f4f5895cc9e508b13c000ea053ab59b87ee639745418ffc566ceebad37a17b842d24d3423ac3f086142c622eceaadc4106f8c90c5dae1f52f407fa0bf1e6bf9385cbcbf3b61006ea3b1e66b693ce704577ca9598587f41e05d36d1de424e0e51290a5f2e2f99f1960c0253a046a49b19eef249ca2dda2af1e8dd78411088eff1e9c23c31bd20abd4fc9e7eab19500827d202f76270fe9f90e95309516343e0fca48e5a12182e91c78ebf2cdd4644629afdc90bbccb77546cd765135910ba1cd8a3e3c00fa77e585865e898bfecd06c01a0a4d7be483801099c61941c4967154af5620b171b426cf229df59d2944ba50754140c3f305c16956953be376fe6e7cf31a2e9c276bb09cc24c4b86b2b26f039b0d8511853adcb7feb8502e7641a34e3242bf2c538006bb1983345ec3cacbf219ef10efc1681d52e6e1b1c60bb556b6b8a63d1d1f6869077841d1b816f3165a35833e33d39a8c6e62a2f7c482c395768fc6a0e3cbfc7a1a6d64da53adad66c8016f76eaa73df1b8ef83012ecbe75c92a8e39b48169433f951a539b28a034d5fdd00639a5e3e17ef14dafe869064d130c90c68be4d5ceddabed1bc94e97e2cdf7313f780cd6e175a9e3eba3eaed896fe464073fcf07ae7b5bd41d58c3160f66ac95a76fdaa7a8cbaebb304fe3c8f03cef927a1182ac2281c3b32378813b24bb99e42cb0774331ad78b74d46b8ce48bbf4ef8431a82d4240edfd61b910c38570ba0bfbd4a41665117e6d5f5a97908462e62d0b76160d06aa56cc6e17aaf4607ba8263648f2a0077e306c25486f5f39a75", - }, - { - "2f6210063cb3071b3d49339185c2cef8357b08ca826d8d1acd852540c16540f1c850f70404fe1f414853d3cd15a1c64a1cce149e3ca1b80926de4ae8438ad90bdad010decf2f201782f3e49794aae1b079f54eb59607bebde508a528927e346d4e444b1d736b34f65e198df2c36fa23c64f1f1fbf8b0b8ddb85d054bdb39b8297d0347f16f7be7cd9474c058e36294485386434b36fb28ee582e393367f15ce5f5a3d6641fbd31b331f10b1554a05da726a0f35c9b1b4af3498426b17582966a266cce452900f85af1046f45a4ccedca6ce02607fb70fa45f420f66aa38cd4c9f8a30e21a3067b940aebdaaeb7c77824a79e2ba20f26e70346dd6de96942b261e5c08288c7fe1cd1e9f680a0bdf8c46497f007a616eea95ccc17463559f8973eb919c68017e25100d9d1a196ca65fb615502076bf0b0c8bcc70ef22006895ebfa2243fba0791bae0625b762cc1718d1673948264454a200c58122d5e9b8b1e3eb05df8b7eeb297510e0d7dcf7f0be5f29f6756e4b177f109891e6825a9866359e35b10d20da7231bb5a0ea34abd0264b377d2fe9f420f27d3e5aa2e8e00541c46052966ef9b989ae5974e2054409507b867f647aa057f7deb19ac6929f0856005aec6e53a5f702fe6be403afed532b73d38fed73e6e551987f182a1e20801e7a6c8ccd1184cf0fefb4139fa166ca15395902ac40e7fed8661602853682a3b0ee307dffb44d0ea3012142a2880cb7c166ba6ea6a16c7e0882808db8023068f060e5ef1432fdb8331ffad6a7078d686d47d613e94291f1c4117e7c13aee4030fcaf223fcefdb300ed606b5dd931e4adbf45dc437eeb5fbff337812e15c15f026071423f6ef5305c559baa2ecd8ecc7cd498b043740ff3673774855d45d45fa64591d5b4970600ec91ab1b6f39d7dc0e709c41e49c355bd3b9d120ffb57095fb127bafa971a086135b917285794e83e9dac5ce76fb1a4aa4fb6b94a0dc3a9beea64b8817ec1e2b37af9dbd18ec30f2b6f6c12df1db6896c6c43b67a066038f0c4f17142b254f62c4dd1fedb950d07047919e397d06d033cb0bab6b61aefa6dee01720926b16beb9e8bc947dca9b8143b565da85d2dec182987838b267de9047f5b0d961c7971aaf54ae2c1e4aad61ff123c84e41a4566b2bd9e64247cf46b72a444d36bdced1a309b464ee5f4afe406eb68eb05ae51b76bf01b906c0ffbdeb440b11f1c9e3a4c3a809a1f7449047b356c663a1ab7f286a70d16141d11f2d151a4f06d422ab97cab539c1f9da09ad20c000c27b8fead5f0cc37329d466fa260aea934c154dc9c0a065df3d057a0f117a1c38321ae59226a8054f7d6b49a3753436c249838b0924f0e861f5627106dd8d3f0fa724a1cecda71d4a1267ed889b234ae4a7d5edcbc5d52cba389dc0152aff24d224c6a0f16dbd3b7f242807bf4b51a3f22690bdeb66eaa59e8766b3b265d784899d247a0ae1b58a06dd91c529e3691b09f9d9f55fc39afd4a00b0fc668880ef25a46a30861fba8cfd4b51262eba4138b41a2d13ddc71128c8c1242e49a51d6f49879fcfa7595ba4a4adcad3670b0b1b26382f03ff402bc70150f54bf513ba3e9a590e41b269e55616af297ebb3499e16cc8e46c0810330a602955553c0f93d668a1181a0bfd7021ad9a9f68ce39493b012da70a3dda149d0369f23f788616e0272efa322b6a54d804f340d32c890e2eb7b538f48f4c9293b584d22d0ae80d321607644271b81a76ac5b49d8e457069b0c3e909b8a222e3fa6016cb1e979e300804742f2005c68acb7b1849c088b3714c9c7af54e9de9390df0041c87924c8fa6b0aec6b6754171e059cba0d27f221f0b9d044a3aed8338dd8745651981e4b0329376f908b86ae9022699d495bbe3a148f7eb73d56eacb2e5e2180f63fcbfa680369f88eefa71f1210bc5b6b7b957f0a1437476a2112998033197673e470dbe7d9d476c97b95db8b5136f6cccc75d6e0ac1e4ace30e34e64fcc4d7e135b2c80e863ed701d3b28c25e982f1b5f8c895a4e6df7216c3c07abf8551a0ba0469c88aa7a08c7b5218a03b9b91f0935985373f65aa56286ad0e7ef2288a926f172b098123c136455b3a0f04590839e16bade7b6434a3cf048abe2612684c03dafd9cec39af508e63f07ea881014697bc24122058b5ef5d3fae835216d055f0cdf1dc06a12c95041d13ac9e15f235d11747f16ffce1cc3b8f508da520e395edd471f3759d8879ba9c2558b1188d822fd4739ed0546b0ce3bb9988db7c1dc8518ebbc62c4440e6e0653f917dcc13aca1864b71dbb67dbe7117474c936414e4f3cfab1f13eb05f3504484ce11977ab21ec523f97ba1b7ecb8fe384b634c30561cdb752fc67a2316bfa7e4d03f5f825d24a556a0460d8cfe0cc54a6f117ac52d553a5d1bb48031732716436675c5c3996b1939b127c6b0338bfaa29c7467cac9a127e455a715c9ce2b0c35a0d2f83a3d1273ee39399e6cc4980e610c752bd51652b96bf9cf34c7fa41fc9b13f5d55007483e4082ddac4675baa7822fd257452411b01de0e5e5da26e17539d64a89dd93c71d15a4c95b1a83039cb2d5f3f7fa04a817e48dfcbfb3de34ecb47f7592123caf27e17982fbfc8597af5b8aa6558f4e6c73db69328e47677afbe6ef8df82c3d1f0db6a108b2279f61822908d7b856432c32ac5ec0f3c53befab2a7ca356b9c2636f646b228b0a830d348be4ece2271814d477d4c73c0fb6e83a338b90ec4ef45cb25f7e3d6a014a9e8d2e8a6f55a383291a57f15667a73ea1daca31c7182523ca85a107efa2518d2f7f179ed4ba21fed479ef2be09669817133b2384bd85b155dfc1c4c9e6dd9ceecf06cc1ab8ebf7f07aeaae7441468b5471aed93f248a84f44c59be33274b11f651de010ab9f8fb24d3a99914e0147951c34280e7dd15ec196f9a4c86e55e7d373c7e31e6672d1b3ac6a45fa6c8c9088c0b8963d89f4ff1feea3e85cf9cf2f6c97128afd845bb131c6f62b3282bbba42745080fd457f1d3322058f1bd4be876bd01269546d1a853310b165926c1fd4e07054deb5d3fbe8f6007711d435994005aba95918c3df4cd390b165fcd139dd418ebbf661b6de57b655698a8a02ca8fad73e8c536c7110957c36e5494a831d536eccb97a2a9ef58fe58e2885aad170720ffcc57c7de601ea1cf723577a30aad8fd544317e33897c8b6c04e5191bec391ab990e197f10038c0726d371677e4a54c28d7ca5c6046e7cc4acde565b91f7f72af6109a0614160d3ae97e9257b8f71a4663b00c681e793cbb478306e97b0e04711eae7722b4845dadf2fff5bbe71ff24acffea2ee67df99bf62a098ddae9d4ebd3bc5dff04a2d9e3d1d83e8f493db3f63c9e24231b1dbe1147c79f21b0730c842f6983330c5c17dd34556d7e932074cfbe98f2dab5b0ebfd778a1e28fe2bac2d942f61a08b787ebfcdeb3d600bb130ca4922a4ffd38ffc4a1a1a7218451e45da4da67ad81ef898ece3d54cef877cb9d09f5dcf72eccbbc06e62f1e2b4d64059b0a807329780b155ce1614b68de04387d6108ef4dd3ab54b9da72e528d6eac3e16a360ae3421f3f23808a8b5e8ec3dbefcbca3c9f76905850033d78d9283bba9272c475b4e3b4d7643e62c2cc259ebbf168f890de88e82f8b26a7654ee31fe055e45609c70ae02b4942ee15678cd158f4c9e8d351d102ddf7a942458c6125e1457bea0d86ca38cf0c26e474b2b5cca77eb57ad0867cad7d25efc2b250e79396637ea3e948dbb855029cc9b452955bd04ad5a0d0514d4d773c0f298df7bc235a3ac64383a1fbd8a397a158e936b3ba81895a51daa89f51e4ae7a71a53794ff715a42f4fc3dcc9fd56df7bea4ab782534d3760e7b15605fc4dad16911656983c0ab77bce9445bbeb1537c55fef57a32c8f1404306a0a2ca7b73348cd99d0f9948875531cbb0ef7c036cd201614c33293d746c44140e0e8f82421c5bdf2bf428b249597df949fafdb5ccfe1618323f56a6ab9abab9a84a3beb6696ca918af244d34cc1cd95bbca4a87c860a0fa9ff6a04a905b0338a53f230bd5ee9c60e0e0332ca200c15dca0be5936b858d0a7b2e540b8958432e9767396c55d5cc35b60062580023b5cb2f9a5e9a1feba59a19f9a5a251e9d0e8500955a5df21da95213ced2260a2ed8f3d4b295c36cef750c89cf21985c302d5cc577aab7855409a912dbcf1d0a9800df4aa692a78607a40fd6d5a82305c58fcb3d2a82b27e8c5b91681aae62a2bf31ed55c494dbdc38eba30e83c6044945df76705228eede8470369f2e9941ddcb2f239fb3ff6bfcdb0efb5ec50f981adf0e8b213769ffbbea364b08cf8cd69abbfa2a6fe9865cc48558134a57bb5526b9d047e14a379d246de82d3d64f3c810ede280c768dd8bee25af287d5a8d94045ddbf5981382bc716ad9aedfcd66e0ab496172a24efe80649db8e1e83675fc8451e22c6564d8d6dfb285af7fec802b35f19dd8308c68952a11770247fcfecc4ed0e8a445c17b1573f0b4e3ed350f13269ceb572943fc435563459d5044699f1542335b03be6077af156b8c5a6a9f71078ad820cec4642427a9b187ee1b17036d5a5e6108cee8a7d444342eaec3afa64e77c71d3c2b3153d4e2dbb30df2b66b4d14cc45d3a4eda7e911d697e5763e23ee05311a20626df55549b8533c6ebe79737abf472f9cff08bec590943bdeb819d3f923f45b81f9a0cba1f3f800a261842d10cb4cbdba456c7fe5f0abb4a8b58891d97cfd6b669e2708922f1934809d51a1589e5f12e3bb82c9ac3e7e44e3f6e6cd63d428da624fd2f46eec38ff798a90d228efe50c9b67c63796347c8a2b53478f27605999a03c8e1f18b70e92419f646a7f49670aa12d324751aec17d0208fc296955b3098241189af8172d39a6819415cafb107c1842b369f174d6f37dd31cd728dfd0ab10f93609006342b6e4d6ccbfd1ed2bea2fdf5411442b04b1fe218916f159b20242f80b535b4e0a3024c6eff6a40bd0d3db24e51f5ff9c14e1b4a650ca4170ee70f0a3a5a58349a7d0b7a63af86347351696870b95231f76d8c5c6a20736907726341dcbb76672871d18c2157c094b929fd29d34f5bcaacd82706f89a60000cd341d98eb830b73a12335b69f3e0131ded3ce12c98bbd960d2d0696d40696a13ab43925374498d868cd8f070c9039ea6407fc2d92b9c39fe7c935bbcfcc5c0980952fb7dac79042951f49a1af828b138a87401c4104bc28cdf1e39dbd3fa63dd4d5f5ae9d85f032a43ad353bc5e6746e5a76326ab1f4e79103116ce70bc0b459200f32f85e461291e347dda92e421778b849e37a3ecb0b31ec6818e828dd3148dc74313aba43cc9d8b9a36a9dc4e229488060eb6c109f8ad6201958adec6d3bb3b04e5e558a272d44cb98e18f7a0ad8fa6ac3667a62f150830aa930f6166baac6b9081b44304988fbe1698a5b746255de26bb5988aca90bb6523cad68a7572f615f4aa58f932d8a749615cf0a7724e99de042268ceb31433e6df0a61547d576a6201b36b348c028ded5f7e94d1cd2eafc141088ff42cb3dafbbe4c402b93aa9d955df8d9d9fb57c75ac65c2c837acc44bbd4d4aff1888aed46c73d625ad7fff035e8ca0fe411c73ed8135b6b8e17a039ec74e9de0d64cb442bf8a676c0a666f68f21066332cd921ae0ed766f0516a8e19b82cf98e78add0373737a3419e13aa902310c44feae5fdf8bc64e80dce772686a31f141bcce452041bf545b908ef4a2b000e7beaf378e2afdccbbcaa42e330e5024400cf2852d3444718", - "fd5008477b0855f6f2486fd4f74b9fb4f6e19726c6996bc66893183bd76054d5b05c1c2b64722256ba912ab2dcca66d2abfdf972966438fff7513acfb18ea461eac08c4e32aea4ed3fcf9f1c9905ee4402e7b6984bef974340d212f160b6524b76de99a98d3e96cc0d35e8a63ad7ea3cbea1d40a906c4dd03e5fc19e1513e9", - "390a5e75c9ff4ad38fb6205ff47f209294337c1f25ff54a3c01eee8e1e220257", - "8bf183347ec1ca4bceff3374", - "19fa2641519e21293094e9d767ee1237f9e0715dc57172794867c3bbe2cb647f9b28a8d3f85c0ff557b91bad66f5ea16e0107757b0277fdd3ca05bf47c19bcb92a958a57e8c142a51af29bddb20af84377b6db65f77494e0dc4d2634a776b3a5d777319873bc0dacbbd4b9ebccfae849fa7e9769cdf54660ecca0d5cf4fa5190713726d54d02b3a3f21857125b8a808c0ca2f99d11dc430ed5113ee49ff8f00bcc08f0370dd510e8100e1285659a7b2c7457a6049f2af7786c4db1471ce5bd164e11c7a2165e83e03a135ae2b3429f82f677de044a067e99e0bda2d65a7270d629c00e1d528212d3aeb2896e58ee5145a93ed06a9c00705ad5c5988d3a192304c1d17661d45257c5d16799ef70771964435b12e3b2ee9d5b467c3b1992f45b7a59871b40d8daa1c280747ecb3d170257b91df1f549ce6d66455b5b6f60b7c6e95c92a67e20cffe8599ceb183de53f1dedfe19bae836447af8e053ba419660e0912cad064d6125b9e978e8d0d5f28f8a4e43ca3cdf2d4c0e9a11221d8184e9eb6c90761b0beac82d0d22793279aedb1c7db3632adbee323bc3bbde4801152694831abf5676979af26af7dcbadfba1cad1306b635840cbca76c558b37db0803b4c12befa27d16f21506b07ade4a838d6beba1816eb29ed5e3c4f132a752fc747bd9ba879156e87e6c1584e911da9f796e1fa4a055e427272559e4bd6d0f54b8257100f8a55d84c27b702bb1fe2f995425c85fd48b0a0610db5b39f7a5031407a12dae9f508b21b1378f14952d1beb2dea81d016b2d9b7f1a67b814569b69c0e619adea02a8683242d63a11d3317d060e5b4d85df5ad73127541ba5314715d187990735aa81f438f8b94070ec506ba536274d98b766c1694e54367891a602b99e370425b47a70b819277a249fa429c5bbd0530267f987e6022f25030c30f3baeedc0d13c95f3d5e4b2b87465d179a3a23b9f9e76a42ceea55226ce072f9488392f40621289124d786109d2498e74fb37e2ef466fe8bf3016d96e34204c32978775765aa80461cac48518157f86d59f6187bad4ee62fba1ddbe166b29452f4a59af1e057300c353440644a8e40ae8171ea028be2fa315804abf518847c7945e8228b7766cfdb08d3a3116b59aab8e94b6d8c8c9ef442c2dc7f923bc2cd3e5c663baca7dded976bf191fe36da16948c89c385fe71434f4aa5dd15fe0e925d2459e3b068b9d82a9cc8b8f9786bd9f5fef9baaaf2d67027d9bfd58bb2c58ec7c746b747ab62f9242e4b53ed14d6fc75f5280eca0de23717c97a2293826e19cc8eb47f946421516c349dc4ba49225b91e4e868874bdebd373700df1f3792aaa140597e58b88f90e163397dbad3941705b53d754e3e0c9003df836a7fb8d23f40362fcb5f3947a4281b24240be4ee89aa8e917b194f94345eeca224df0adc15f22a617b6427f29410bc48ea3f92216163785723efc36301d23ed52780c6fd7924bcfaa03269b13582b7c7ea9c0e4a451f38a469fbdb585dcb7c81452da77945ebe27eb26ff6e8c7b2decea289aac5af74746dc257c9bea44a0847f02c4f586e1d76f39d5bf952355a0875f177a666d1d354ad86ce5ec0aba2c2b20cab050eaffd31095395132f5af80a2d2d53b77bda49f948bbb37bdf31c8a690476488e14e542ff6841e7fbfc2eb84795696562d079dc1612274b6dff362567084f793f0bc2dd8de23392d05aeeeeac6991c9f74387153a4b7da94790375e336a00c8293bad0fcef2dd1880e7094e2e53f738247c860780ebe308410ca02ae409ae720e841f48c9677acc6e7d4ccd18c219c400f8b7e1257f692e09eaef96802b17a1cb7d93eb81d3bfcbc7af4cdf05b98e22556b3d1a8b56d6d83bb5f5724696f8f329839dbe477483ec3c09fa2e0628faeba1bf285c224bea3f6cdc7bbd768133c6ef1da14f248cc3b819b196588811b073a7291817bd1e89c65760435d8d17cbf9423744a92143e0f956e2977b39c54fdead5a57f3a04a0facca01bbf44d3b1fb9c4fa83ae1046985e3f26aa0a437999004dd8adc04c5111759849f919b93558dbc559173a23b069b59f800096d9fcf077c7640f59170bb9a6fffe64778bac272365d27ea62aa956559e90edd3f6393cc8775597bcf7d91990ab9511973d948324a27261059e93f4b5dd2f70caf12e1a08e0493cb05588618764391f355379578cf94dd33e616136eea997ec11c0d4ff064ff51a767e5558433a2e3a9a74c232d8e187f47b8cca010709eb9fea0dac8f1ea53bf18822e154ecd929c83b0eac366e30fffbd5ba6a46d734f58d26e7f5df538e18b3d827884aa857a680823131bcf30a76f1a555bcabb17b02b53aefad96fe76f7312da69719434c580d3ff1bcdcd594e6375935003d5d732cc577e11ea2abb1d04259f50aed4c3af9866e8c4a52a09809046ee330f05c4403acbc297a9416c5208fadb31ed4eb7a3b01b87bf08c75cf44c2b0df84df30872d021d6567ea649859268e5e1b5b6405e1b41e350a32c1af13722959c17c01b52c42241313b26b25995a1c89a53e248488724d280647226195746901929501df36d1e94815d7fe6c4ca2731f3181293217f71b9d7f59c2474856972013924ae4796db4cbd22d8905a6043c959941ca6b556c53d1688c439036c715d33a47a7dfc2fe40e53424c5093020d2e85e4b04aa4c704ea5bfe5a2384878da38319c59d41d66b6add2a443d9ea11edd8d18fa41004251653857733b388b453943eb33df93dcd5d549757fa2967ef0f9a5105836c48826c47fcccb2d9bc349032b286962136b848632bdcf186a08cbeaa52d195efcfc3a440bac154971d11ff4994f293b14fb8c3214ebe7ab8b3d0f2fe0b03ed7b145fafd7730a173e3cc1847f0cdf2cf629f5ea81a07bef716b1a67dd9e3b7a52fea1aaa7a393f53b5bdb5988df78a57a9dad19a8253316835acab8a6b9a9fb42d97bf29b2443322f46de386fd82bd3453ed68e2370c6eac4497b1bde7b42d569c452f377bd38bd50fa5a6792ef5c9ec6c647001149b86fedb3e2f18d4271e9cc4801aa16ecddb31b6a795fecabc613bfbc8e4f5636d71e74595c841fd11b6a6bc7f169317c1added56b82a71fc36d774bb4d661685363e9da5fd2e1f357006dc5b5bbf8b42ee3f869e75a541586fba558a8f490d641b78c27368b9b4c2db046354e9358ae9140e91cd95ebeffc6c0d2676a3ff4ab10d463bf32bed97023a80a79df191ab9858c43537a03072a17c30b1bd99efbd361590ed6b7d5b0ec4e2326fa35904ab9a48596f44491cbbc0112890f9386ed04dec30126be359a05e99b2b77fa2c8f6b7460a6cd590d71c73b2a1b23312ff89306b6e41c76ddc0a099bfa79498e36ae5cf0c560b8854dff32d2b690ce0ac4aabfa723ac6f2e97ad1083235196b464ad67fdd649aec01695d55c8b4bb198f30630ca635aa5a1915f3718341bcfd8b522f764015fa5479004d28eceea7fe67df7ee24a97a9708d528b89589f1899f13242a0d00f7464c3cdfce213699340e754533b934f4a8410224e111f31cf8e54d7b5e90cd8c68bf96edbc8d183894deefdf4fcc1a83162a3f6341dcd9a9aecf171c0df28257a68b1af1b67c54c43c3cff27fed89cc64bc46e23a49ec74a9efbab7981d9f0a018247441e4f0f5b5f68ba9325582f92de4cca4a5f878a0c5c387581e64324e3246d8f3205c838a29f1abeea24446e496421f0e742d411adb55f70272ae4a992e825a3d327e44b8b3762b25aa451d07eb4eac0322b431fa676462632daba2aba7bdeee1b438f051d21d4b1897e2ac2f95ee7c23f9996a805de8fffb3b30b855cd6c5b84c011accf4bf94d304d944079f04b5cadf8fcd6751c22a0f9165ab98998b2d89e6514641f1f3b91b8c0bf057d69c3d893fc4e041e06a2229e2ee58082ffb58cb920972ede58483287d0ace94c1becef26a410b93e4ff402e61dcc574b790d49679f18f4e2004f8b7cc357faba34a80e56821bb5b883d1a8b49c6605002152f270bbc36bc79095644e29ab08cc988deda765d67e4fff12b726d5de135ff9d0cbd9d5f9d440e548836633b93a38330d638468b59a32642da3375cdf70b062d14b46a78569c24a706e179baa2058dcae5c61fb6cadd9e015b017f26e9dbe3e6366cf5f1ec839aa3bbb21dd6c9b8e910245fa95b09b7d6cbf08a4c6c84bef257a70389be962dad14d97a893c128b73bf6580689e540d004f21edf8403f36b1ad7c9a2e83ffceb141af59700c316c8c1e3347187f24819c2ff0c9f9a2360dce354f3374374eab1643d2d8831310a8e3ca6768200ea7759822b82f7027cd450479fcc7f6d04802b15735a137ad489f1e1ee78434a253a9dd16684ad58fc91960cde6754f82e8b38edd5e798fdbbbf8fc2e2380a4e21dd94f8c1c063b18f29d8cd8d89f65deac5640799d4ca2caa29c1e72ad8bc417490d11e4051d94956fbc74289857e5f8e9e87b9a2d83074a994de0b10bc7782f6650cfbdb8c835c81cd88bdce5f04ca939b3c5cd010d4dc5d51224fcacbca9851694b8bf55b22dead859d023eee5a7ad3436a912c3fc0284456d5d72ea5f1afa8545c856676ac2dd9a057028bd3ca0f50e7070fa74152f13997c95c1834c3e67504f1a4165d2b49a96919b88f72caed60f56ca7ab5a3204fb12ad3592c725fdebb048732fc189c7dfed185c6c184a626e07d7356860d00389862d5b9701eaa4e5f7889e6db0f54633369b8d26805c08471de8fc3f8fa1fb0b0711d9e015add5373f7f8b64abaddbac3399c756244b1b07c579d33e4967e5e0cf16de29cb8a7efad07ff9039ca305772a6e45c76bd9b77e24949556766a8b8425c5e595efb431bde4ee222f9eb3fc2d002a1e2d14db2b23135266c942eea33bffd30eb0218405373240e0cd3040436ca895093bf056fd001c00ba59d90502042e6e6c0167105051628895c8164c9ab959400898309cabafdef12be53604fa57df44e0a90a81bd63c331291a93bffefe809e80db0679568f6e94e0d8e2edec0087c35bcb3c4f4725e6013bcf197156cd9d90612423348123383e45c14d27d8833f56ddb04083c069fd6e282fe69c940840f5f747dfb72ad72fd8cf9f3ded15c9e2f4727fd60b4f40e95dbe77a89b47dde7d5326942600554905d9dade9d145ab6da802643f2081678392609c2fdd1b79dd8caec137cbed315374c6f05c0758070f3bb17e23d81ccc39c6aa89913897e487fde889c5aacd422278f8571641cc4f0a93d9768aef9e45d6bd187d1ba637ce0fbd3c573d6778cf7bf5188c00dcdf13be3fd599143952b376220283e34e014e83b214bd5f64eb0ecb098ae8bef883949907cc36e22ece60b893b963cfa73d120513e285aaf70ce5add34edbdac60b3aa7b385b90e339058fb9b3cf984b06f79788016035c5ce490f2de7995b98a8c1c9c80f29603ae2b7fc41886663163e604275cb085f8453b27f4d795b9bad19ade2f98a1c99b43a7581bd991e5d0e5e1a6e713acc522ba9fe8302658a9782558e35436e714ac6bc85ad1d3cd008f24106901fa954f5fefb61210d6f8dc9ff35c480f1d14e59c0e501917a31ee9d00c6bdb06a00af5a8b08c3928cc5f37476248223627cb77eaf0e96213cb0a13e97d3fe9b9814d462690e8d68d02655a32fc271ee73db4f88a33386ea88a5857e15a28d9b3e3a96f00c7cd85aa53f9282ab8c8ca6d6a8afed43aa87fe7fc1ad59b0f0db2dd25c20af96e8c282c19fc883ef01a4060398926a1c82f07bcd3bc314580d7636b623b7bad8ddba05850291a6344df0f346fa4a321a85ee3e9c", - }, - { - "67c6697351ff4aec29cdbaabf2fbe3467cc254f81be8e78d765a2e63339fc99a66320db73158a35a255d051758e95ed4abb2cdc69bb454110e827441213ddc8770e93ea141e1fc673e017e97eadc6b968f385c2aecb03bfb32af3c54ec18db5c021afe43fbfaaa3afb29d1e6053c7c9475d8be6189f95cbba8990f95b1ebf1b305eff700e9a13ae5ca0bcbd0484764bd1f231ea81c7b64c514735ac55e4b79633b706424119e09dcaad4acf21b10af3b33cde3504847155cbb6f2219ba9b7df50be11a1c7f23f829f8a41b13b5ca4ee8983238e0794d3d34bc5f4e77facb6c05ac86212baa1a55a2be70b5733b045cd33694b3afe2f0e49e4f321549fd824ea90870d4b28a2954489a0abcd50e18a844ac5bf38e4cd72d9b", - "0942e506c433afcda3847f2dad", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "588e1356fb8fa32410dad99cf7922aae47b4042502c92f3afe33dc22c1c2e90caf22bc37a254f8dd62a09582c70194f9616982639415178e9fe95740c0f1d497a69b69d4924a7a15290187f9c8acf09cf5b3b3188ecde2d2807207f5bb6a6d3504314b1b47684cf8ba8807eb9a3c497c79ebe1e4c1eca2aa90328563e201425227fca8ee05dcc05fd6c98128626c1e71d2fb3a21860567093db1012dfabe13055c48219d2a301c8a5a49033a811d8d9413bafbb2eefc177226fe578e93c2ef1f309416dc98843bfac387debb1b610b1d2366178ce7212a7312057a3d058357a629f18c78e129e60979a2310455a76207be5611e8b4b840629564020c17f5c9446882e23f610e931246ec434e62de765bf22954cfae02b2ff4b4086fbbd1b6cec23e45481eac5a25d", - }, - { - "67c6697351ff4aec29cdbaabf2fbe3467cc254f81be8e78d765a2e63339fc99a66320db73158a35a255d051758e95ed4abb2cdc69bb454110e827441213ddc8770e93ea141e1fc673e017e97eadc6b968f385c2aecb03bfb32af3c54ec18db5c021afe43fbfaaa3afb29d1e6053c7c9475d8be6189f95cbba8990f95b1ebf1b305eff700e9a13ae5ca0bcbd0484764bd1f231ea81c7b64c514735ac55e4b79633b706424119e09dcaad4acf21b10af3b33cde3504847155cbb6f2219ba9b7df50be11a1c7f23f829f8a41b13b5ca4ee8983238e0794d3d34bc5f4e77facb6c05ac86212baa1a55a2be70b5733b045cd33694b3afe2f0e49e4f321549fd824ea90870d4b28a2954489a0abcd50e18a844ac5bf38e4cd72d9b0942e506c433afcda3847f2dadd47647de321cec4ac430f62023856cfbb20704f4ec0bb920ba86c33e05f1ecd96733b79950a3e314", - "d3d934f75ea0f210a8f6059401", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "588e1356fb8fa32410dad99cf7922aae47b4042502c92f3afe33dc22c1c2e90caf22bc37a254f8dd62a09582c70194f9616982639415178e9fe95740c0f1d497a69b69d4924a7a15290187f9c8acf09cf5b3b3188ecde2d2807207f5bb6a6d3504314b1b47684cf8ba8807eb9a3c497c79ebe1e4c1eca2aa90328563e201425227fca8ee05dcc05fd6c98128626c1e71d2fb3a21860567093db1012dfabe13055c48219d2a301c8a5a49033a811d8d9413bafbb2eefc177226fe578e93c2ef1f309416dc98843bfac387debb1b610b1d2366178ce7212a7312057a3d058357a629f18c78e129e60979a2310455a76207be5611e8b4b840629564020c17f5c9446882e23f610e931246ec434e62de765bf22954cfae02b2ff7c59dfe246e4bb2d6a8afcebdc2beeaabf2a3f43f95a5ea639853f38719875ecdd2bbc0d81bb2a5ed59553b1e76b6365b74f618f685eb7731024bbf6794c3f4c7c5a1cf925", - }, - { - "67c6697351ff4aec29cdbaabf2fbe3467cc254f81be8e78d765a2e63339fc99a66320db73158a35a255d051758e95ed4abb2cdc69bb454110e827441213ddc8770e93ea141e1fc673e017e97eadc6b968f385c2aecb03bfb32af3c54ec18db5c021afe43fbfaaa3afb29d1e6053c7c9475d8be6189f95cbba8990f95b1ebf1b305eff700e9a13ae5ca0bcbd0484764bd1f231ea81c7b64c514735ac55e4b79633b706424119e09dcaad4acf21b10af3b33cde3504847155cbb6f2219ba9b7df50be11a1c7f23f829f8a41b13b5ca4ee8983238e0794d3d34bc5f4e77facb6c05ac86212baa1a55a2be70b5733b045cd33694b3afe2f0e49e4f321549fd824ea90870d4b28a2954489a0abcd50e18a844ac5bf38e4cd72d9b0942e506c433afcda3847f2dadd47647de321cec4ac430f62023856cfbb20704f4ec0bb920ba86c33e05f1ecd96733b79950a3e314", - "d3d934f75ea0f210a8f6059401beb4bc4478fa4969e623d01ada696a7e4c7e5125b34884533a94fb319990325744ee9bbce9e525cf08f5e9e25e5360aad2b2d085fa54d835e8d466826498d9a8877565705a8a3f62802944de7ca5894e5759d351adac869580ec17e485f18c0c66f17cc07cbb", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "588e1356fb8fa32410dad99cf7922aae47b4042502c92f3afe33dc22c1c2e90caf22bc37a254f8dd62a09582c70194f9616982639415178e9fe95740c0f1d497a69b69d4924a7a15290187f9c8acf09cf5b3b3188ecde2d2807207f5bb6a6d3504314b1b47684cf8ba8807eb9a3c497c79ebe1e4c1eca2aa90328563e201425227fca8ee05dcc05fd6c98128626c1e71d2fb3a21860567093db1012dfabe13055c48219d2a301c8a5a49033a811d8d9413bafbb2eefc177226fe578e93c2ef1f309416dc98843bfac387debb1b610b1d2366178ce7212a7312057a3d058357a629f18c78e129e60979a2310455a76207be5611e8b4b840629564020c17f5c9446882e23f610e931246ec434e62de765bf22954cfae02b2ff7c59dfe246e4bb2d6a8afcebdc2beeaabf2a3f43f95a5ea639853f38719875ecdd2bbc0d81bb2a5ed59553b1e76b6365b74f618f68a12d0f1cc99e132db9014100d9668c91", - }, - { - "67c6697351ff4aec29cdbaabf2fbe3467cc254f81be8e78d765a2e63339fc99a66320db73158a35a255d051758e95ed4abb2cdc69bb454110e827441213ddc8770e93ea141e1fc673e017e97eadc6b968f385c2aecb03bfb32af3c54ec18db5c021afe43fbfaaa3afb29d1e6053c7c9475d8be6189f95cbba8990f95b1ebf1b305eff700e9a13ae5ca0bcbd0484764bd1f231ea81c7b64c514735ac55e4b79633b706424119e09dcaad4acf21b10af3b33cde3504847155cbb6f2219ba9b7df50be11a1c7f23f829f8a41b13b5ca4ee8983238e0794d3d34bc5f4e77facb6c05ac86212baa1a55a2be70b5733b045cd33694b3afe2f0e49e4f321549fd824ea90870d4b28a2954489a0abcd50e18a844ac5bf38e4cd72d9b0942e506c433afcda3847f2dadd47647de321cec4ac430f62023856cfbb20704f4ec0bb920ba86c33e05f1ecd96733b79950a3e314d3d934f75ea0f210a8f6059401beb4bc4478fa4969e623d01ada696a7e4c7e5125b34884533a94fb319990325744ee9b", - "bc", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "588e1356fb8fa32410dad99cf7922aae47b4042502c92f3afe33dc22c1c2e90caf22bc37a254f8dd62a09582c70194f9616982639415178e9fe95740c0f1d497a69b69d4924a7a15290187f9c8acf09cf5b3b3188ecde2d2807207f5bb6a6d3504314b1b47684cf8ba8807eb9a3c497c79ebe1e4c1eca2aa90328563e201425227fca8ee05dcc05fd6c98128626c1e71d2fb3a21860567093db1012dfabe13055c48219d2a301c8a5a49033a811d8d9413bafbb2eefc177226fe578e93c2ef1f309416dc98843bfac387debb1b610b1d2366178ce7212a7312057a3d058357a629f18c78e129e60979a2310455a76207be5611e8b4b840629564020c17f5c9446882e23f610e931246ec434e62de765bf22954cfae02b2ff7c59dfe246e4bb2d6a8afcebdc2beeaabf2a3f43f95a5ea639853f38719875ecdd2bbc0d81bb2a5ed59553b1e76b6365b74f618f68d1f05b5662cd6e04de896d3ef5dae4149485a5a2093ff4ec74b20b5e5bf8e61b5c65515938c202beab3eea5a498d2f32d4d00a24b826b6efb16013ef54cbe170", - }, - { - "67c6697351ff4aec29cdbaabf2fbe3467cc254f81be8e78d765a2e63339fc99a66320db73158a35a255d051758e95ed4abb2cdc69bb454110e827441213ddc8770e93ea141e1fc673e017e97eadc6b968f385c2aecb03bfb32af3c54ec18db5c021afe43fbfaaa3afb29d1e6053c7c9475d8be6189f95cbba8990f95b1ebf1b305eff700e9a13ae5ca0bcbd0484764bd1f231ea81c7b64c514735ac55e4b79633b706424119e09dcaad4acf21b10af3b33cde3504847155cbb6f2219ba9b7df50be11a1c7f23f829f8a41b13b5ca4ee8983238e0794d3d34bc5f4e77facb6c05ac86212baa1a55a2be70b5733b045cd33694b3afe2f0e49e4f321549fd824ea90870d4b28a2954489a0abcd50e18a844ac5bf38e4cd72d9b0942e506c433afcda3847f2dadd47647de321cec4ac430f62023856cfbb20704f4ec0bb920ba86c33e05f1ecd96733b79950a3e314d3d934f75ea0f210a8f6059401beb4bc4478fa4969e623d01ada696a7e4c7e5125b34884533a94fb319990325744ee9bbce9e525cf08f5e9e25e5360aad2b2d085fa54d835e8d466826498d9a8877565705a8a3f62802944de7ca5894e5759d351adac869580ec17e485f18c0c66f17cc0", - "7cbb22fce466da610b63af62bc83b4692f3affaf271693ac071fb86d11342d", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "588e1356fb8fa32410dad99cf7922aae47b4042502c92f3afe33dc22c1c2e90caf22bc37a254f8dd62a09582c70194f9616982639415178e9fe95740c0f1d497a69b69d4924a7a15290187f9c8acf09cf5b3b3188ecde2d2807207f5bb6a6d3504314b1b47684cf8ba8807eb9a3c497c79ebe1e4c1eca2aa90328563e201425227fca8ee05dcc05fd6c98128626c1e71d2fb3a21860567093db1012dfabe13055c48219d2a301c8a5a49033a811d8d9413bafbb2eefc177226fe578e93c2ef1f309416dc98843bfac387debb1b610b1d2366178ce7212a7312057a3d058357a629f18c78e129e60979a2310455a76207be5611e8b4b840629564020c17f5c9446882e23f610e931246ec434e62de765bf22954cfae02b2ff7c59dfe246e4bb2d6a8afcebdc2beeaabf2a3f43f95a5ea639853f38719875ecdd2bbc0d81bb2a5ed59553b1e76b6365b74f618f68d1f05b5662cd6e04de896d3ef5dae4149485a5a2093ff4ec74b20b5e5bf8e61b5c65515938c202beab3eea5a498d2f32c38dbb37d04f8272e741da2802c54a9d9aaf8ecf38b36fc9ad0079523f6a4abd5281a22697a3180bc02662a7c13ee23599d18e5c48300dbb831509df4c172f53e524b3c15124a87ac73e5028cde6c94d8d", - }, - { - "67c6697351ff4aec29cdbaabf2fbe3467cc254f81be8e78d765a2e63339fc99a66320db73158a35a255d051758e95ed4abb2cdc69bb454110e827441213ddc8770e93ea141e1fc673e017e97eadc6b968f385c2aecb03bfb32af3c54ec18db5c021afe43fbfaaa3afb29d1e6053c7c9475d8be6189f95cbba8990f95b1ebf1b305eff700e9a13ae5ca0bcbd0484764bd1f231ea81c7b64c514735ac55e4b79633b706424119e09dcaad4acf21b10af3b33cde3504847155cbb6f2219ba9b7df50be11a1c7f23f829f8a41b13b5ca4ee8983238e0794d3d34bc5f4e77facb6c05ac86212baa1a55a2be70b5733b045cd33694b3afe2f0e49e4f321549fd824ea90870d4b28a2954489a0abcd50e18a844ac5bf38e4cd72d9b0942e506c433afcda3847f2dadd47647de321cec4ac430f62023856cfbb20704f4ec0bb920ba86c33e05f1ecd96733b79950a3e314d3d934f75ea0f210a8f6059401beb4bc4478fa4969e623d01ada696a7e4c7e5125b34884533a94fb319990325744ee9bbce9e525", - "", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "588e1356fb8fa32410dad99cf7922aae47b4042502c92f3afe33dc22c1c2e90caf22bc37a254f8dd62a09582c70194f9616982639415178e9fe95740c0f1d497a69b69d4924a7a15290187f9c8acf09cf5b3b3188ecde2d2807207f5bb6a6d3504314b1b47684cf8ba8807eb9a3c497c79ebe1e4c1eca2aa90328563e201425227fca8ee05dcc05fd6c98128626c1e71d2fb3a21860567093db1012dfabe13055c48219d2a301c8a5a49033a811d8d9413bafbb2eefc177226fe578e93c2ef1f309416dc98843bfac387debb1b610b1d2366178ce7212a7312057a3d058357a629f18c78e129e60979a2310455a76207be5611e8b4b840629564020c17f5c9446882e23f610e931246ec434e62de765bf22954cfae02b2ff7c59dfe246e4bb2d6a8afcebdc2beeaabf2a3f43f95a5ea639853f38719875ecdd2bbc0d81bb2a5ed59553b1e76b6365b74f618f68d1f05b5662cd6e04de896d3ef5dae4149485a5a2093ff4ec74b20b5e5bf8e61b5c65515938c202beab3eea5a498d2f32c38dbb370a9bbc3187cc260ddac991f94ce4f0d5", - }, - { - "0fb826ddb2eb5e708de203d0438be12cf708d635ebdbae56278be09077009586b9bc646ba7c2db35a5de05e86ae71461efea96dac64430edcf117d461113cccacf303576f310ab98efb180599894ba877e50614494923163a3afa9b4c2757f91a6b40799c5b331b464b10dfc45c783c317e408ab76390e19e8b7ceaa2c4d3bd201436bc6f69c7a5a4d8756924ed95665bd5e1034971e4d80d51b2a", - "026866d46aa940309fdcabf92a324fbc", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "30f05cf8189bb7b8b4f560e746e228c4cc7e86e8f2fa66e1afe212d1855db51070acd5eb34ce80b2e223957df50fde4c2531d97fc9e573725e7a5e47f0dfc4da1942620320bb2deaf8b17937bae4218d04db8e76f6efe84a117292159507c9f8a09fb2c17921d7762510dbf1dac7b62b1bd7572e3e2cf008d01c445c7fa78833235034281ae180e051451c6a64f22ca9708634bd0d604e4cfcd971b13742efa5b6363e662a875daccb2b00", - }, - { - "c7d4f8790e4c47d4daecbddf5939973521ddbf3b832e564afc66f03b5583c41c58bd956609dc3ae3c8f7c2213059575236168dba44e3044049f47c9e7840bbd0fd5036062d70e9f567ac1797056ee93c8476f6c959fa09a3ee854166c6fc36c34d6cca7adcb36f435f86db65f4c4a1793b974294914b377fd179e697751c5ac289243c65d8aca93732849c27483da083d4e218652d4fe5fec8cb953ee7f00070143dd6ece97f241b03c0424bfee2cfd2c4e738f2361df0ffe8863dcf763d408a7a167763959b7f985bc1e359a4b22c6899645ad0814bcf69d10c38474978d1c48e482723e3a6bb3f689f980c51c474eb28cfbba91a8a12eb964b32dfc303a3524ccb752f71316ed9d007e521cb5a0cf429c79d4351b02ee7fb60c7be636a10af3586dfa7b74d80875466a820c0b514e97cb12cce615ab55cba7c1b1de72bcd1cb1acc368f944ef4eaa986e6a4d8253c9337f9795d94df193c90cb0b0387dcde929905223d441717ed9dfe826613bf094ba872993d41b269e27d74e5f541b497eac9ba180dc12ffb6f1e7dc5223cce6dd541071282b97c6526e15b2c330fb41dc96e25d72f45c28e543053766d11d44252db54e584c14abbb295d7e5a58bf36eea1936095ef897a338eb1995fcedd85fc92d354dfe7ff9a115c186bb4d7a1a27835030d248c87571a38f17906cefe0261d15740b9", - "56", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "f89c825ca43cae1ce3fbdee85c505edd1aabefe69a0f9efd740f027aa7dee48a91ad24e69ad061648f0a52b4afb19d7ffccdc21f4b4247dfd89f5f9f998cb3c02b226173fedb6f8770aceef9271e7236fefd19fb3b87d08a5c587ac7918e80aa4b477f22602189811e270d686bc4949137a41d11d95ec96ee9d26c6126f6e923ab37638b34d1538d2e46d6df6216da4f193a3cecb731e632e109ced643056a1673059355d2d1314df35ded8364efed7de490201090a6f2d1751748585f64d26041637ba3723cbc4b60e226f10a19699d223075bc1f27d82e7f560c0db630ea670b3f8a70a8950894af4d1c7b3f674a3fa00d19ee4cc2b6174c1d259a297424bf2c3943a29a16a9830ce11abaa79cd2eb77b53a02b365b1838e7bfd5ae1bd044ffc885c61c6b2186a357e8b8f732b7ab96517969aeb70c7b493bbaca9462a61815a3c6135c748bf9c8487ac0631807aa69243fa09cd3b8efb63f8d4e090ad30b6c2f08bf4e82f191cedfa5cbe2b42268d67ecd105918181e44fc9879efd642d20be84e6f74717e03fb94fcbaa6ed3b307431d2a9384b8a2b3e5825ffce8d99af48f177e43bb4272226d8a5edd37d53807f768feb9e0733b437a1d0f84779ab68a1804e92a5eecca56364f0fa6dca152203b249fdc8fbd950fdc37c1887596308a90ba3a5751c7096bfbd1cb177bb17847b33c4379b43938a67674459cd9a06e3017ccac5b", - }, - { - "135a28170fe89066da7bcff3a9ccc1b27dfe942a6f47b23835ef746aaea63dc10066d90f4e697528e5451b8e11dd408fdbd4b94a1c6c82515bf7bc099df9cb9d5fa4acad0d22d5f267f18078cec107a995c1f3b12d7603886dbf910ab85ca7180053c50e759b00dc8c81555a425c03d71df6894a6c8cd2d94b64e303c08a1bc1dee1cf537ccf300850856292e1656aff5bf349c87f1ca1ca8085cd400fe901edcad04146a0714ef0f6b083d715edd670e020385f3cda29bc5ff6fc6edffe5ca9ce9def6e0e3d5f04ede2db02cfb2", - "73afd2ab0e0e8537cae42dc6530dc4afb6934ca6", - "a5117e70953568bf750862df9e6f92af81677c3a188e847917a4a915bda7792e", - "129039b5572e8a7a8131f76a", - "2c125232a59879aee36cacc4aca5085a4688c4f776667a8fbd86862b5cfb1d57c976688fdd652eafa2b88b1b8e358aa2110ff6ef13cdc1ceca9c9f087c35c38d89d6fbd8de89538070f17916ecb19ca3ef4a1c834f0bdaa1df62aaabef2e117106787056c909e61ecd208357dd5c363f11c5d6cf24992cc873cf69f59360a820fcf290bd90b2cab24c47286acb4e1033962b6d41e562a206a94796a8ab1c6b8bade804ff9bdf5ba6062d2c1f8fe0f4dfc05720bd9a612b92c26789f9f6a7ce43f5e8e3aee99a9cd7d6c11eaa611983c36935b0dda57d898a60a0ab7c4b54", - }, -} diff --git a/vendor/golang.org/x/crypto/codereview.cfg b/vendor/golang.org/x/crypto/codereview.cfg deleted file mode 100644 index 3f8b14b6..00000000 --- a/vendor/golang.org/x/crypto/codereview.cfg +++ /dev/null @@ -1 +0,0 @@ -issuerepo: golang/go diff --git a/vendor/golang.org/x/crypto/cryptobyte/asn1.go b/vendor/golang.org/x/crypto/cryptobyte/asn1.go deleted file mode 100644 index 88ec8b4f..00000000 --- a/vendor/golang.org/x/crypto/cryptobyte/asn1.go +++ /dev/null @@ -1,732 +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 cryptobyte - -import ( - encoding_asn1 "encoding/asn1" - "fmt" - "math/big" - "reflect" - "time" - - "golang.org/x/crypto/cryptobyte/asn1" -) - -// This file contains ASN.1-related methods for String and Builder. - -// Builder - -// AddASN1Int64 appends a DER-encoded ASN.1 INTEGER. -func (b *Builder) AddASN1Int64(v int64) { - b.addASN1Signed(asn1.INTEGER, v) -} - -// AddASN1Enum appends a DER-encoded ASN.1 ENUMERATION. -func (b *Builder) AddASN1Enum(v int64) { - b.addASN1Signed(asn1.ENUM, v) -} - -func (b *Builder) addASN1Signed(tag asn1.Tag, v int64) { - b.AddASN1(tag, func(c *Builder) { - length := 1 - for i := v; i >= 0x80 || i < -0x80; i >>= 8 { - length++ - } - - for ; length > 0; length-- { - i := v >> uint((length-1)*8) & 0xff - c.AddUint8(uint8(i)) - } - }) -} - -// AddASN1Uint64 appends a DER-encoded ASN.1 INTEGER. -func (b *Builder) AddASN1Uint64(v uint64) { - b.AddASN1(asn1.INTEGER, func(c *Builder) { - length := 1 - for i := v; i >= 0x80; i >>= 8 { - length++ - } - - for ; length > 0; length-- { - i := v >> uint((length-1)*8) & 0xff - c.AddUint8(uint8(i)) - } - }) -} - -// AddASN1BigInt appends a DER-encoded ASN.1 INTEGER. -func (b *Builder) AddASN1BigInt(n *big.Int) { - if b.err != nil { - return - } - - b.AddASN1(asn1.INTEGER, func(c *Builder) { - if n.Sign() < 0 { - // A negative number has to be converted to two's-complement form. So we - // invert and subtract 1. If the most-significant-bit isn't set then - // we'll need to pad the beginning with 0xff in order to keep the number - // negative. - nMinus1 := new(big.Int).Neg(n) - nMinus1.Sub(nMinus1, bigOne) - bytes := nMinus1.Bytes() - for i := range bytes { - bytes[i] ^= 0xff - } - if bytes[0]&0x80 == 0 { - c.add(0xff) - } - c.add(bytes...) - } else if n.Sign() == 0 { - c.add(0) - } else { - bytes := n.Bytes() - if bytes[0]&0x80 != 0 { - c.add(0) - } - c.add(bytes...) - } - }) -} - -// AddASN1OctetString appends a DER-encoded ASN.1 OCTET STRING. -func (b *Builder) AddASN1OctetString(bytes []byte) { - b.AddASN1(asn1.OCTET_STRING, func(c *Builder) { - c.AddBytes(bytes) - }) -} - -const generalizedTimeFormatStr = "20060102150405Z0700" - -// AddASN1GeneralizedTime appends a DER-encoded ASN.1 GENERALIZEDTIME. -func (b *Builder) AddASN1GeneralizedTime(t time.Time) { - if t.Year() < 0 || t.Year() > 9999 { - b.err = fmt.Errorf("cryptobyte: cannot represent %v as a GeneralizedTime", t) - return - } - b.AddASN1(asn1.GeneralizedTime, func(c *Builder) { - c.AddBytes([]byte(t.Format(generalizedTimeFormatStr))) - }) -} - -// AddASN1BitString appends a DER-encoded ASN.1 BIT STRING. This does not -// support BIT STRINGs that are not a whole number of bytes. -func (b *Builder) AddASN1BitString(data []byte) { - b.AddASN1(asn1.BIT_STRING, func(b *Builder) { - b.AddUint8(0) - b.AddBytes(data) - }) -} - -func (b *Builder) addBase128Int(n int64) { - var length int - if n == 0 { - length = 1 - } else { - for i := n; i > 0; i >>= 7 { - length++ - } - } - - for i := length - 1; i >= 0; i-- { - o := byte(n >> uint(i*7)) - o &= 0x7f - if i != 0 { - o |= 0x80 - } - - b.add(o) - } -} - -func isValidOID(oid encoding_asn1.ObjectIdentifier) bool { - if len(oid) < 2 { - return false - } - - if oid[0] > 2 || (oid[0] <= 1 && oid[1] >= 40) { - return false - } - - for _, v := range oid { - if v < 0 { - return false - } - } - - return true -} - -func (b *Builder) AddASN1ObjectIdentifier(oid encoding_asn1.ObjectIdentifier) { - b.AddASN1(asn1.OBJECT_IDENTIFIER, func(b *Builder) { - if !isValidOID(oid) { - b.err = fmt.Errorf("cryptobyte: invalid OID: %v", oid) - return - } - - b.addBase128Int(int64(oid[0])*40 + int64(oid[1])) - for _, v := range oid[2:] { - b.addBase128Int(int64(v)) - } - }) -} - -func (b *Builder) AddASN1Boolean(v bool) { - b.AddASN1(asn1.BOOLEAN, func(b *Builder) { - if v { - b.AddUint8(0xff) - } else { - b.AddUint8(0) - } - }) -} - -func (b *Builder) AddASN1NULL() { - b.add(uint8(asn1.NULL), 0) -} - -// MarshalASN1 calls encoding_asn1.Marshal on its input and appends the result if -// successful or records an error if one occurred. -func (b *Builder) MarshalASN1(v interface{}) { - // NOTE(martinkr): This is somewhat of a hack to allow propagation of - // encoding_asn1.Marshal errors into Builder.err. N.B. if you call MarshalASN1 with a - // value embedded into a struct, its tag information is lost. - if b.err != nil { - return - } - bytes, err := encoding_asn1.Marshal(v) - if err != nil { - b.err = err - return - } - b.AddBytes(bytes) -} - -// AddASN1 appends an ASN.1 object. The object is prefixed with the given tag. -// Tags greater than 30 are not supported and result in an error (i.e. -// low-tag-number form only). The child builder passed to the -// BuilderContinuation can be used to build the content of the ASN.1 object. -func (b *Builder) AddASN1(tag asn1.Tag, f BuilderContinuation) { - if b.err != nil { - return - } - // Identifiers with the low five bits set indicate high-tag-number format - // (two or more octets), which we don't support. - if tag&0x1f == 0x1f { - b.err = fmt.Errorf("cryptobyte: high-tag number identifier octects not supported: 0x%x", tag) - return - } - b.AddUint8(uint8(tag)) - b.addLengthPrefixed(1, true, f) -} - -// String - -func (s *String) ReadASN1Boolean(out *bool) bool { - var bytes String - if !s.ReadASN1(&bytes, asn1.INTEGER) || len(bytes) != 1 { - return false - } - - switch bytes[0] { - case 0: - *out = false - case 0xff: - *out = true - default: - return false - } - - return true -} - -var bigIntType = reflect.TypeOf((*big.Int)(nil)).Elem() - -// ReadASN1Integer decodes an ASN.1 INTEGER into out and advances. If out does -// not point to an integer or to a big.Int, it panics. It returns true on -// success and false on error. -func (s *String) ReadASN1Integer(out interface{}) bool { - if reflect.TypeOf(out).Kind() != reflect.Ptr { - panic("out is not a pointer") - } - switch reflect.ValueOf(out).Elem().Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - var i int64 - if !s.readASN1Int64(&i) || reflect.ValueOf(out).Elem().OverflowInt(i) { - return false - } - reflect.ValueOf(out).Elem().SetInt(i) - return true - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: - var u uint64 - if !s.readASN1Uint64(&u) || reflect.ValueOf(out).Elem().OverflowUint(u) { - return false - } - reflect.ValueOf(out).Elem().SetUint(u) - return true - case reflect.Struct: - if reflect.TypeOf(out).Elem() == bigIntType { - return s.readASN1BigInt(out.(*big.Int)) - } - } - panic("out does not point to an integer type") -} - -func checkASN1Integer(bytes []byte) bool { - if len(bytes) == 0 { - // An INTEGER is encoded with at least one octet. - return false - } - if len(bytes) == 1 { - return true - } - if bytes[0] == 0 && bytes[1]&0x80 == 0 || bytes[0] == 0xff && bytes[1]&0x80 == 0x80 { - // Value is not minimally encoded. - return false - } - return true -} - -var bigOne = big.NewInt(1) - -func (s *String) readASN1BigInt(out *big.Int) bool { - var bytes String - if !s.ReadASN1(&bytes, asn1.INTEGER) || !checkASN1Integer(bytes) { - return false - } - if bytes[0]&0x80 == 0x80 { - // Negative number. - neg := make([]byte, len(bytes)) - for i, b := range bytes { - neg[i] = ^b - } - out.SetBytes(neg) - out.Add(out, bigOne) - out.Neg(out) - } else { - out.SetBytes(bytes) - } - return true -} - -func (s *String) readASN1Int64(out *int64) bool { - var bytes String - if !s.ReadASN1(&bytes, asn1.INTEGER) || !checkASN1Integer(bytes) || !asn1Signed(out, bytes) { - return false - } - return true -} - -func asn1Signed(out *int64, n []byte) bool { - length := len(n) - if length > 8 { - return false - } - for i := 0; i < length; i++ { - *out <<= 8 - *out |= int64(n[i]) - } - // Shift up and down in order to sign extend the result. - *out <<= 64 - uint8(length)*8 - *out >>= 64 - uint8(length)*8 - return true -} - -func (s *String) readASN1Uint64(out *uint64) bool { - var bytes String - if !s.ReadASN1(&bytes, asn1.INTEGER) || !checkASN1Integer(bytes) || !asn1Unsigned(out, bytes) { - return false - } - return true -} - -func asn1Unsigned(out *uint64, n []byte) bool { - length := len(n) - if length > 9 || length == 9 && n[0] != 0 { - // Too large for uint64. - return false - } - if n[0]&0x80 != 0 { - // Negative number. - return false - } - for i := 0; i < length; i++ { - *out <<= 8 - *out |= uint64(n[i]) - } - return true -} - -// ReadASN1Enum decodes an ASN.1 ENUMERATION into out and advances. It returns -// true on success and false on error. -func (s *String) ReadASN1Enum(out *int) bool { - var bytes String - var i int64 - if !s.ReadASN1(&bytes, asn1.ENUM) || !checkASN1Integer(bytes) || !asn1Signed(&i, bytes) { - return false - } - if int64(int(i)) != i { - return false - } - *out = int(i) - return true -} - -func (s *String) readBase128Int(out *int) bool { - ret := 0 - for i := 0; len(*s) > 0; i++ { - if i == 4 { - return false - } - ret <<= 7 - b := s.read(1)[0] - ret |= int(b & 0x7f) - if b&0x80 == 0 { - *out = ret - return true - } - } - return false // truncated -} - -// ReadASN1ObjectIdentifier decodes an ASN.1 OBJECT IDENTIFIER into out and -// advances. It returns true on success and false on error. -func (s *String) ReadASN1ObjectIdentifier(out *encoding_asn1.ObjectIdentifier) bool { - var bytes String - if !s.ReadASN1(&bytes, asn1.OBJECT_IDENTIFIER) || len(bytes) == 0 { - return false - } - - // In the worst case, we get two elements from the first byte (which is - // encoded differently) and then every varint is a single byte long. - components := make([]int, len(bytes)+1) - - // The first varint is 40*value1 + value2: - // According to this packing, value1 can take the values 0, 1 and 2 only. - // When value1 = 0 or value1 = 1, then value2 is <= 39. When value1 = 2, - // then there are no restrictions on value2. - var v int - if !bytes.readBase128Int(&v) { - return false - } - if v < 80 { - components[0] = v / 40 - components[1] = v % 40 - } else { - components[0] = 2 - components[1] = v - 80 - } - - i := 2 - for ; len(bytes) > 0; i++ { - if !bytes.readBase128Int(&v) { - return false - } - components[i] = v - } - *out = components[:i] - return true -} - -// ReadASN1GeneralizedTime decodes an ASN.1 GENERALIZEDTIME into out and -// advances. It returns true on success and false on error. -func (s *String) ReadASN1GeneralizedTime(out *time.Time) bool { - var bytes String - if !s.ReadASN1(&bytes, asn1.GeneralizedTime) { - return false - } - t := string(bytes) - res, err := time.Parse(generalizedTimeFormatStr, t) - if err != nil { - return false - } - if serialized := res.Format(generalizedTimeFormatStr); serialized != t { - return false - } - *out = res - return true -} - -// ReadASN1BitString decodes an ASN.1 BIT STRING into out and advances. It -// returns true on success and false on error. -func (s *String) ReadASN1BitString(out *encoding_asn1.BitString) bool { - var bytes String - if !s.ReadASN1(&bytes, asn1.BIT_STRING) || len(bytes) == 0 { - return false - } - - paddingBits := uint8(bytes[0]) - bytes = bytes[1:] - if paddingBits > 7 || - len(bytes) == 0 && paddingBits != 0 || - len(bytes) > 0 && bytes[len(bytes)-1]&(1< 4 || len(*s) < int(2+lenLen) { - return false - } - - lenBytes := String((*s)[2 : 2+lenLen]) - if !lenBytes.readUnsigned(&len32, int(lenLen)) { - return false - } - - // ITU-T X.690 section 10.1 (DER length forms) requires encoding the length - // with the minimum number of octets. - if len32 < 128 { - // Length should have used short-form encoding. - return false - } - if len32>>((lenLen-1)*8) == 0 { - // Leading octet is 0. Length should have been at least one byte shorter. - return false - } - - headerLen = 2 + uint32(lenLen) - if headerLen+len32 < len32 { - // Overflow. - return false - } - length = headerLen + len32 - } - - if uint32(int(length)) != length || !s.ReadBytes((*[]byte)(out), int(length)) { - return false - } - if skipHeader && !out.Skip(int(headerLen)) { - panic("cryptobyte: internal error") - } - - return true -} diff --git a/vendor/golang.org/x/crypto/cryptobyte/asn1/asn1.go b/vendor/golang.org/x/crypto/cryptobyte/asn1/asn1.go deleted file mode 100644 index cda8e3ed..00000000 --- a/vendor/golang.org/x/crypto/cryptobyte/asn1/asn1.go +++ /dev/null @@ -1,46 +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 asn1 contains supporting types for parsing and building ASN.1 -// messages with the cryptobyte package. -package asn1 // import "golang.org/x/crypto/cryptobyte/asn1" - -// Tag represents an ASN.1 identifier octet, consisting of a tag number -// (indicating a type) and class (such as context-specific or constructed). -// -// Methods in the cryptobyte package only support the low-tag-number form, i.e. -// a single identifier octet with bits 7-8 encoding the class and bits 1-6 -// encoding the tag number. -type Tag uint8 - -const ( - classConstructed = 0x20 - classContextSpecific = 0x80 -) - -// Constructed returns t with the constructed class bit set. -func (t Tag) Constructed() Tag { return t | classConstructed } - -// ContextSpecific returns t with the context-specific class bit set. -func (t Tag) ContextSpecific() Tag { return t | classContextSpecific } - -// The following is a list of standard tag and class combinations. -const ( - BOOLEAN = Tag(1) - INTEGER = Tag(2) - BIT_STRING = Tag(3) - OCTET_STRING = Tag(4) - NULL = Tag(5) - OBJECT_IDENTIFIER = Tag(6) - ENUM = Tag(10) - UTF8String = Tag(12) - SEQUENCE = Tag(16 | classConstructed) - SET = Tag(17 | classConstructed) - PrintableString = Tag(19) - T61String = Tag(20) - IA5String = Tag(22) - UTCTime = Tag(23) - GeneralizedTime = Tag(24) - GeneralString = Tag(27) -) diff --git a/vendor/golang.org/x/crypto/cryptobyte/asn1_test.go b/vendor/golang.org/x/crypto/cryptobyte/asn1_test.go deleted file mode 100644 index ee6674a2..00000000 --- a/vendor/golang.org/x/crypto/cryptobyte/asn1_test.go +++ /dev/null @@ -1,300 +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 cryptobyte - -import ( - "bytes" - encoding_asn1 "encoding/asn1" - "math/big" - "reflect" - "testing" - "time" - - "golang.org/x/crypto/cryptobyte/asn1" -) - -type readASN1Test struct { - name string - in []byte - tag asn1.Tag - ok bool - out interface{} -} - -var readASN1TestData = []readASN1Test{ - {"valid", []byte{0x30, 2, 1, 2}, 0x30, true, []byte{1, 2}}, - {"truncated", []byte{0x30, 3, 1, 2}, 0x30, false, nil}, - {"zero length of length", []byte{0x30, 0x80}, 0x30, false, nil}, - {"invalid long form length", []byte{0x30, 0x81, 1, 1}, 0x30, false, nil}, - {"non-minimal length", append([]byte{0x30, 0x82, 0, 0x80}, make([]byte, 0x80)...), 0x30, false, nil}, - {"invalid tag", []byte{0xa1, 3, 0x4, 1, 1}, 31, false, nil}, - {"high tag", []byte{0x1f, 0x81, 0x80, 0x01, 2, 1, 2}, 0xff /* actually 0x4001, but tag is uint8 */, false, nil}, -} - -func TestReadASN1(t *testing.T) { - for _, test := range readASN1TestData { - t.Run(test.name, func(t *testing.T) { - var in, out String = test.in, nil - ok := in.ReadASN1(&out, test.tag) - if ok != test.ok || ok && !bytes.Equal(out, test.out.([]byte)) { - t.Errorf("in.ReadASN1() = %v, want %v; out = %v, want %v", ok, test.ok, out, test.out) - } - }) - } -} - -func TestReadASN1Optional(t *testing.T) { - var empty String - var present bool - ok := empty.ReadOptionalASN1(nil, &present, 0xa0) - if !ok || present { - t.Errorf("empty.ReadOptionalASN1() = %v, want true; present = %v want false", ok, present) - } - - var in, out String = []byte{0xa1, 3, 0x4, 1, 1}, nil - ok = in.ReadOptionalASN1(&out, &present, 0xa0) - if !ok || present { - t.Errorf("in.ReadOptionalASN1() = %v, want true, present = %v, want false", ok, present) - } - ok = in.ReadOptionalASN1(&out, &present, 0xa1) - wantBytes := []byte{4, 1, 1} - if !ok || !present || !bytes.Equal(out, wantBytes) { - t.Errorf("in.ReadOptionalASN1() = %v, want true; present = %v, want true; out = %v, want = %v", ok, present, out, wantBytes) - } -} - -var optionalOctetStringTestData = []struct { - readASN1Test - present bool -}{ - {readASN1Test{"empty", []byte{}, 0xa0, true, []byte{}}, false}, - {readASN1Test{"invalid", []byte{0xa1, 3, 0x4, 2, 1}, 0xa1, false, []byte{}}, true}, - {readASN1Test{"missing", []byte{0xa1, 3, 0x4, 1, 1}, 0xa0, true, []byte{}}, false}, - {readASN1Test{"present", []byte{0xa1, 3, 0x4, 1, 1}, 0xa1, true, []byte{1}}, true}, -} - -func TestReadASN1OptionalOctetString(t *testing.T) { - for _, test := range optionalOctetStringTestData { - t.Run(test.name, func(t *testing.T) { - in := String(test.in) - var out []byte - var present bool - ok := in.ReadOptionalASN1OctetString(&out, &present, test.tag) - if ok != test.ok || present != test.present || !bytes.Equal(out, test.out.([]byte)) { - t.Errorf("in.ReadOptionalASN1OctetString() = %v, want %v; present = %v want %v; out = %v, want %v", ok, test.ok, present, test.present, out, test.out) - } - }) - } -} - -const defaultInt = -1 - -var optionalIntTestData = []readASN1Test{ - {"empty", []byte{}, 0xa0, true, defaultInt}, - {"invalid", []byte{0xa1, 3, 0x2, 2, 127}, 0xa1, false, 0}, - {"missing", []byte{0xa1, 3, 0x2, 1, 127}, 0xa0, true, defaultInt}, - {"present", []byte{0xa1, 3, 0x2, 1, 42}, 0xa1, true, 42}, -} - -func TestReadASN1OptionalInteger(t *testing.T) { - for _, test := range optionalIntTestData { - t.Run(test.name, func(t *testing.T) { - in := String(test.in) - var out int - ok := in.ReadOptionalASN1Integer(&out, test.tag, defaultInt) - if ok != test.ok || ok && out != test.out.(int) { - t.Errorf("in.ReadOptionalASN1Integer() = %v, want %v; out = %v, want %v", ok, test.ok, out, test.out) - } - }) - } -} - -func TestReadASN1IntegerSigned(t *testing.T) { - testData64 := []struct { - in []byte - out int64 - }{ - {[]byte{2, 3, 128, 0, 0}, -0x800000}, - {[]byte{2, 2, 255, 0}, -256}, - {[]byte{2, 2, 255, 127}, -129}, - {[]byte{2, 1, 128}, -128}, - {[]byte{2, 1, 255}, -1}, - {[]byte{2, 1, 0}, 0}, - {[]byte{2, 1, 1}, 1}, - {[]byte{2, 1, 2}, 2}, - {[]byte{2, 1, 127}, 127}, - {[]byte{2, 2, 0, 128}, 128}, - {[]byte{2, 2, 1, 0}, 256}, - {[]byte{2, 4, 0, 128, 0, 0}, 0x800000}, - } - for i, test := range testData64 { - in := String(test.in) - var out int64 - ok := in.ReadASN1Integer(&out) - if !ok || out != test.out { - t.Errorf("#%d: in.ReadASN1Integer() = %v, want true; out = %d, want %d", i, ok, out, test.out) - } - } - - // Repeat the same cases, reading into a big.Int. - t.Run("big.Int", func(t *testing.T) { - for i, test := range testData64 { - in := String(test.in) - var out big.Int - ok := in.ReadASN1Integer(&out) - if !ok || out.Int64() != test.out { - t.Errorf("#%d: in.ReadASN1Integer() = %v, want true; out = %d, want %d", i, ok, out.Int64(), test.out) - } - } - }) -} - -func TestReadASN1IntegerUnsigned(t *testing.T) { - testData := []struct { - in []byte - out uint64 - }{ - {[]byte{2, 1, 0}, 0}, - {[]byte{2, 1, 1}, 1}, - {[]byte{2, 1, 2}, 2}, - {[]byte{2, 1, 127}, 127}, - {[]byte{2, 2, 0, 128}, 128}, - {[]byte{2, 2, 1, 0}, 256}, - {[]byte{2, 4, 0, 128, 0, 0}, 0x800000}, - {[]byte{2, 8, 127, 255, 255, 255, 255, 255, 255, 255}, 0x7fffffffffffffff}, - {[]byte{2, 9, 0, 128, 0, 0, 0, 0, 0, 0, 0}, 0x8000000000000000}, - {[]byte{2, 9, 0, 255, 255, 255, 255, 255, 255, 255, 255}, 0xffffffffffffffff}, - } - for i, test := range testData { - in := String(test.in) - var out uint64 - ok := in.ReadASN1Integer(&out) - if !ok || out != test.out { - t.Errorf("#%d: in.ReadASN1Integer() = %v, want true; out = %d, want %d", i, ok, out, test.out) - } - } -} - -func TestReadASN1IntegerInvalid(t *testing.T) { - testData := []String{ - []byte{3, 1, 0}, // invalid tag - // truncated - []byte{2, 1}, - []byte{2, 2, 0}, - // not minimally encoded - []byte{2, 2, 0, 1}, - []byte{2, 2, 0xff, 0xff}, - } - - for i, test := range testData { - var out int64 - if test.ReadASN1Integer(&out) { - t.Errorf("#%d: in.ReadASN1Integer() = true, want false (out = %d)", i, out) - } - } -} - -func TestASN1ObjectIdentifier(t *testing.T) { - testData := []struct { - in []byte - ok bool - out []int - }{ - {[]byte{}, false, []int{}}, - {[]byte{6, 0}, false, []int{}}, - {[]byte{5, 1, 85}, false, []int{2, 5}}, - {[]byte{6, 1, 85}, true, []int{2, 5}}, - {[]byte{6, 2, 85, 0x02}, true, []int{2, 5, 2}}, - {[]byte{6, 4, 85, 0x02, 0xc0, 0x00}, true, []int{2, 5, 2, 0x2000}}, - {[]byte{6, 3, 0x81, 0x34, 0x03}, true, []int{2, 100, 3}}, - {[]byte{6, 7, 85, 0x02, 0xc0, 0x80, 0x80, 0x80, 0x80}, false, []int{}}, - } - - for i, test := range testData { - in := String(test.in) - var out encoding_asn1.ObjectIdentifier - ok := in.ReadASN1ObjectIdentifier(&out) - if ok != test.ok || ok && !out.Equal(test.out) { - t.Errorf("#%d: in.ReadASN1ObjectIdentifier() = %v, want %v; out = %v, want %v", i, ok, test.ok, out, test.out) - continue - } - - var b Builder - b.AddASN1ObjectIdentifier(out) - result, err := b.Bytes() - if builderOk := err == nil; test.ok != builderOk { - t.Errorf("#%d: error from Builder.Bytes: %s", i, err) - continue - } - if test.ok && !bytes.Equal(result, test.in) { - t.Errorf("#%d: reserialisation didn't match, got %x, want %x", i, result, test.in) - continue - } - } -} - -func TestReadASN1GeneralizedTime(t *testing.T) { - testData := []struct { - in string - ok bool - out time.Time - }{ - {"20100102030405Z", true, time.Date(2010, 01, 02, 03, 04, 05, 0, time.UTC)}, - {"20100102030405", false, time.Time{}}, - {"20100102030405+0607", true, time.Date(2010, 01, 02, 03, 04, 05, 0, time.FixedZone("", 6*60*60+7*60))}, - {"20100102030405-0607", true, time.Date(2010, 01, 02, 03, 04, 05, 0, time.FixedZone("", -6*60*60-7*60))}, - /* These are invalid times. However, the time package normalises times - * and they were accepted in some versions. See #11134. */ - {"00000100000000Z", false, time.Time{}}, - {"20101302030405Z", false, time.Time{}}, - {"20100002030405Z", false, time.Time{}}, - {"20100100030405Z", false, time.Time{}}, - {"20100132030405Z", false, time.Time{}}, - {"20100231030405Z", false, time.Time{}}, - {"20100102240405Z", false, time.Time{}}, - {"20100102036005Z", false, time.Time{}}, - {"20100102030460Z", false, time.Time{}}, - {"-20100102030410Z", false, time.Time{}}, - {"2010-0102030410Z", false, time.Time{}}, - {"2010-0002030410Z", false, time.Time{}}, - {"201001-02030410Z", false, time.Time{}}, - {"20100102-030410Z", false, time.Time{}}, - {"2010010203-0410Z", false, time.Time{}}, - {"201001020304-10Z", false, time.Time{}}, - } - for i, test := range testData { - in := String(append([]byte{byte(asn1.GeneralizedTime), byte(len(test.in))}, test.in...)) - var out time.Time - ok := in.ReadASN1GeneralizedTime(&out) - if ok != test.ok || ok && !reflect.DeepEqual(out, test.out) { - t.Errorf("#%d: in.ReadASN1GeneralizedTime() = %v, want %v; out = %q, want %q", i, ok, test.ok, out, test.out) - } - } -} - -func TestReadASN1BitString(t *testing.T) { - testData := []struct { - in []byte - ok bool - out encoding_asn1.BitString - }{ - {[]byte{}, false, encoding_asn1.BitString{}}, - {[]byte{0x00}, true, encoding_asn1.BitString{}}, - {[]byte{0x07, 0x00}, true, encoding_asn1.BitString{Bytes: []byte{0}, BitLength: 1}}, - {[]byte{0x07, 0x01}, false, encoding_asn1.BitString{}}, - {[]byte{0x07, 0x40}, false, encoding_asn1.BitString{}}, - {[]byte{0x08, 0x00}, false, encoding_asn1.BitString{}}, - {[]byte{0xff}, false, encoding_asn1.BitString{}}, - {[]byte{0xfe, 0x00}, false, encoding_asn1.BitString{}}, - } - for i, test := range testData { - in := String(append([]byte{3, byte(len(test.in))}, test.in...)) - var out encoding_asn1.BitString - ok := in.ReadASN1BitString(&out) - if ok != test.ok || ok && (!bytes.Equal(out.Bytes, test.out.Bytes) || out.BitLength != test.out.BitLength) { - t.Errorf("#%d: in.ReadASN1BitString() = %v, want %v; out = %v, want %v", i, ok, test.ok, out, test.out) - } - } -} diff --git a/vendor/golang.org/x/crypto/cryptobyte/builder.go b/vendor/golang.org/x/crypto/cryptobyte/builder.go deleted file mode 100644 index 29b4c764..00000000 --- a/vendor/golang.org/x/crypto/cryptobyte/builder.go +++ /dev/null @@ -1,309 +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 cryptobyte - -import ( - "errors" - "fmt" -) - -// A Builder builds byte strings from fixed-length and length-prefixed values. -// Builders either allocate space as needed, or are ‘fixed’, which means that -// they write into a given buffer and produce an error if it's exhausted. -// -// The zero value is a usable Builder that allocates space as needed. -// -// Simple values are marshaled and appended to a Builder using methods on the -// Builder. Length-prefixed values are marshaled by providing a -// BuilderContinuation, which is a function that writes the inner contents of -// the value to a given Builder. See the documentation for BuilderContinuation -// for details. -type Builder struct { - err error - result []byte - fixedSize bool - child *Builder - offset int - pendingLenLen int - pendingIsASN1 bool - inContinuation *bool -} - -// NewBuilder creates a Builder that appends its output to the given buffer. -// Like append(), the slice will be reallocated if its capacity is exceeded. -// Use Bytes to get the final buffer. -func NewBuilder(buffer []byte) *Builder { - return &Builder{ - result: buffer, - } -} - -// NewFixedBuilder creates a Builder that appends its output into the given -// buffer. This builder does not reallocate the output buffer. Writes that -// would exceed the buffer's capacity are treated as an error. -func NewFixedBuilder(buffer []byte) *Builder { - return &Builder{ - result: buffer, - fixedSize: true, - } -} - -// Bytes returns the bytes written by the builder or an error if one has -// occurred during during building. -func (b *Builder) Bytes() ([]byte, error) { - if b.err != nil { - return nil, b.err - } - return b.result[b.offset:], nil -} - -// BytesOrPanic returns the bytes written by the builder or panics if an error -// has occurred during building. -func (b *Builder) BytesOrPanic() []byte { - if b.err != nil { - panic(b.err) - } - return b.result[b.offset:] -} - -// AddUint8 appends an 8-bit value to the byte string. -func (b *Builder) AddUint8(v uint8) { - b.add(byte(v)) -} - -// AddUint16 appends a big-endian, 16-bit value to the byte string. -func (b *Builder) AddUint16(v uint16) { - b.add(byte(v>>8), byte(v)) -} - -// AddUint24 appends a big-endian, 24-bit value to the byte string. The highest -// byte of the 32-bit input value is silently truncated. -func (b *Builder) AddUint24(v uint32) { - b.add(byte(v>>16), byte(v>>8), byte(v)) -} - -// AddUint32 appends a big-endian, 32-bit value to the byte string. -func (b *Builder) AddUint32(v uint32) { - b.add(byte(v>>24), byte(v>>16), byte(v>>8), byte(v)) -} - -// AddBytes appends a sequence of bytes to the byte string. -func (b *Builder) AddBytes(v []byte) { - b.add(v...) -} - -// BuilderContinuation is continuation-passing interface for building -// length-prefixed byte sequences. Builder methods for length-prefixed -// sequences (AddUint8LengthPrefixed etc) will invoke the BuilderContinuation -// supplied to them. The child builder passed to the continuation can be used -// to build the content of the length-prefixed sequence. For example: -// -// parent := cryptobyte.NewBuilder() -// parent.AddUint8LengthPrefixed(func (child *Builder) { -// child.AddUint8(42) -// child.AddUint8LengthPrefixed(func (grandchild *Builder) { -// grandchild.AddUint8(5) -// }) -// }) -// -// It is an error to write more bytes to the child than allowed by the reserved -// length prefix. After the continuation returns, the child must be considered -// invalid, i.e. users must not store any copies or references of the child -// that outlive the continuation. -// -// If the continuation panics with a value of type BuildError then the inner -// error will be returned as the error from Bytes. If the child panics -// otherwise then Bytes will repanic with the same value. -type BuilderContinuation func(child *Builder) - -// BuildError wraps an error. If a BuilderContinuation panics with this value, -// the panic will be recovered and the inner error will be returned from -// Builder.Bytes. -type BuildError struct { - Err error -} - -// AddUint8LengthPrefixed adds a 8-bit length-prefixed byte sequence. -func (b *Builder) AddUint8LengthPrefixed(f BuilderContinuation) { - b.addLengthPrefixed(1, false, f) -} - -// AddUint16LengthPrefixed adds a big-endian, 16-bit length-prefixed byte sequence. -func (b *Builder) AddUint16LengthPrefixed(f BuilderContinuation) { - b.addLengthPrefixed(2, false, f) -} - -// AddUint24LengthPrefixed adds a big-endian, 24-bit length-prefixed byte sequence. -func (b *Builder) AddUint24LengthPrefixed(f BuilderContinuation) { - b.addLengthPrefixed(3, false, f) -} - -// AddUint32LengthPrefixed adds a big-endian, 32-bit length-prefixed byte sequence. -func (b *Builder) AddUint32LengthPrefixed(f BuilderContinuation) { - b.addLengthPrefixed(4, false, f) -} - -func (b *Builder) callContinuation(f BuilderContinuation, arg *Builder) { - if !*b.inContinuation { - *b.inContinuation = true - - defer func() { - *b.inContinuation = false - - r := recover() - if r == nil { - return - } - - if buildError, ok := r.(BuildError); ok { - b.err = buildError.Err - } else { - panic(r) - } - }() - } - - f(arg) -} - -func (b *Builder) addLengthPrefixed(lenLen int, isASN1 bool, f BuilderContinuation) { - // Subsequent writes can be ignored if the builder has encountered an error. - if b.err != nil { - return - } - - offset := len(b.result) - b.add(make([]byte, lenLen)...) - - if b.inContinuation == nil { - b.inContinuation = new(bool) - } - - b.child = &Builder{ - result: b.result, - fixedSize: b.fixedSize, - offset: offset, - pendingLenLen: lenLen, - pendingIsASN1: isASN1, - inContinuation: b.inContinuation, - } - - b.callContinuation(f, b.child) - b.flushChild() - if b.child != nil { - panic("cryptobyte: internal error") - } -} - -func (b *Builder) flushChild() { - if b.child == nil { - return - } - b.child.flushChild() - child := b.child - b.child = nil - - if child.err != nil { - b.err = child.err - return - } - - length := len(child.result) - child.pendingLenLen - child.offset - - if length < 0 { - panic("cryptobyte: internal error") // result unexpectedly shrunk - } - - if child.pendingIsASN1 { - // For ASN.1, we reserved a single byte for the length. If that turned out - // to be incorrect, we have to move the contents along in order to make - // space. - if child.pendingLenLen != 1 { - panic("cryptobyte: internal error") - } - var lenLen, lenByte uint8 - if int64(length) > 0xfffffffe { - b.err = errors.New("pending ASN.1 child too long") - return - } else if length > 0xffffff { - lenLen = 5 - lenByte = 0x80 | 4 - } else if length > 0xffff { - lenLen = 4 - lenByte = 0x80 | 3 - } else if length > 0xff { - lenLen = 3 - lenByte = 0x80 | 2 - } else if length > 0x7f { - lenLen = 2 - lenByte = 0x80 | 1 - } else { - lenLen = 1 - lenByte = uint8(length) - length = 0 - } - - // Insert the initial length byte, make space for successive length bytes, - // and adjust the offset. - child.result[child.offset] = lenByte - extraBytes := int(lenLen - 1) - if extraBytes != 0 { - child.add(make([]byte, extraBytes)...) - childStart := child.offset + child.pendingLenLen - copy(child.result[childStart+extraBytes:], child.result[childStart:]) - } - child.offset++ - child.pendingLenLen = extraBytes - } - - l := length - for i := child.pendingLenLen - 1; i >= 0; i-- { - child.result[child.offset+i] = uint8(l) - l >>= 8 - } - if l != 0 { - b.err = fmt.Errorf("cryptobyte: pending child length %d exceeds %d-byte length prefix", length, child.pendingLenLen) - return - } - - if !b.fixedSize { - b.result = child.result // In case child reallocated result. - } -} - -func (b *Builder) add(bytes ...byte) { - if b.err != nil { - return - } - if b.child != nil { - panic("attempted write while child is pending") - } - if len(b.result)+len(bytes) < len(bytes) { - b.err = errors.New("cryptobyte: length overflow") - } - if b.fixedSize && len(b.result)+len(bytes) > cap(b.result) { - b.err = errors.New("cryptobyte: Builder is exceeding its fixed-size buffer") - return - } - b.result = append(b.result, bytes...) -} - -// A MarshalingValue marshals itself into a Builder. -type MarshalingValue interface { - // Marshal is called by Builder.AddValue. It receives a pointer to a builder - // to marshal itself into. It may return an error that occurred during - // marshaling, such as unset or invalid values. - Marshal(b *Builder) error -} - -// AddValue calls Marshal on v, passing a pointer to the builder to append to. -// If Marshal returns an error, it is set on the Builder so that subsequent -// appends don't have an effect. -func (b *Builder) AddValue(v MarshalingValue) { - err := v.Marshal(b) - if err != nil { - b.err = err - } -} diff --git a/vendor/golang.org/x/crypto/cryptobyte/cryptobyte_test.go b/vendor/golang.org/x/crypto/cryptobyte/cryptobyte_test.go deleted file mode 100644 index f294dd55..00000000 --- a/vendor/golang.org/x/crypto/cryptobyte/cryptobyte_test.go +++ /dev/null @@ -1,428 +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 cryptobyte - -import ( - "bytes" - "errors" - "fmt" - "testing" -) - -func builderBytesEq(b *Builder, want ...byte) error { - got := b.BytesOrPanic() - if !bytes.Equal(got, want) { - return fmt.Errorf("Bytes() = %v, want %v", got, want) - } - return nil -} - -func TestContinuationError(t *testing.T) { - const errorStr = "TestContinuationError" - var b Builder - b.AddUint8LengthPrefixed(func(b *Builder) { - b.AddUint8(1) - panic(BuildError{Err: errors.New(errorStr)}) - }) - - ret, err := b.Bytes() - if ret != nil { - t.Error("expected nil result") - } - if err == nil { - t.Fatal("unexpected nil error") - } - if s := err.Error(); s != errorStr { - t.Errorf("expected error %q, got %v", errorStr, s) - } -} - -func TestContinuationNonError(t *testing.T) { - defer func() { - recover() - }() - - var b Builder - b.AddUint8LengthPrefixed(func(b *Builder) { - b.AddUint8(1) - panic(1) - }) - - t.Error("Builder did not panic") -} - -func TestGeneratedPanic(t *testing.T) { - defer func() { - recover() - }() - - var b Builder - b.AddUint8LengthPrefixed(func(b *Builder) { - var p *byte - *p = 0 - }) - - t.Error("Builder did not panic") -} - -func TestBytes(t *testing.T) { - var b Builder - v := []byte("foobarbaz") - b.AddBytes(v[0:3]) - b.AddBytes(v[3:4]) - b.AddBytes(v[4:9]) - if err := builderBytesEq(&b, v...); err != nil { - t.Error(err) - } - s := String(b.BytesOrPanic()) - for _, w := range []string{"foo", "bar", "baz"} { - var got []byte - if !s.ReadBytes(&got, 3) { - t.Errorf("ReadBytes() = false, want true (w = %v)", w) - } - want := []byte(w) - if !bytes.Equal(got, want) { - t.Errorf("ReadBytes(): got = %v, want %v", got, want) - } - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } -} - -func TestUint8(t *testing.T) { - var b Builder - b.AddUint8(42) - if err := builderBytesEq(&b, 42); err != nil { - t.Error(err) - } - - var s String = b.BytesOrPanic() - var v uint8 - if !s.ReadUint8(&v) { - t.Error("ReadUint8() = false, want true") - } - if v != 42 { - t.Errorf("v = %d, want 42", v) - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } -} - -func TestUint16(t *testing.T) { - var b Builder - b.AddUint16(65534) - if err := builderBytesEq(&b, 255, 254); err != nil { - t.Error(err) - } - var s String = b.BytesOrPanic() - var v uint16 - if !s.ReadUint16(&v) { - t.Error("ReadUint16() == false, want true") - } - if v != 65534 { - t.Errorf("v = %d, want 65534", v) - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } -} - -func TestUint24(t *testing.T) { - var b Builder - b.AddUint24(0xfffefd) - if err := builderBytesEq(&b, 255, 254, 253); err != nil { - t.Error(err) - } - - var s String = b.BytesOrPanic() - var v uint32 - if !s.ReadUint24(&v) { - t.Error("ReadUint8() = false, want true") - } - if v != 0xfffefd { - t.Errorf("v = %d, want fffefd", v) - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } -} - -func TestUint24Truncation(t *testing.T) { - var b Builder - b.AddUint24(0x10111213) - if err := builderBytesEq(&b, 0x11, 0x12, 0x13); err != nil { - t.Error(err) - } -} - -func TestUint32(t *testing.T) { - var b Builder - b.AddUint32(0xfffefdfc) - if err := builderBytesEq(&b, 255, 254, 253, 252); err != nil { - t.Error(err) - } - - var s String = b.BytesOrPanic() - var v uint32 - if !s.ReadUint32(&v) { - t.Error("ReadUint8() = false, want true") - } - if v != 0xfffefdfc { - t.Errorf("v = %x, want fffefdfc", v) - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } -} - -func TestUMultiple(t *testing.T) { - var b Builder - b.AddUint8(23) - b.AddUint32(0xfffefdfc) - b.AddUint16(42) - if err := builderBytesEq(&b, 23, 255, 254, 253, 252, 0, 42); err != nil { - t.Error(err) - } - - var s String = b.BytesOrPanic() - var ( - x uint8 - y uint32 - z uint16 - ) - if !s.ReadUint8(&x) || !s.ReadUint32(&y) || !s.ReadUint16(&z) { - t.Error("ReadUint8() = false, want true") - } - if x != 23 || y != 0xfffefdfc || z != 42 { - t.Errorf("x, y, z = %d, %d, %d; want 23, 4294901244, 5", x, y, z) - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } -} - -func TestUint8LengthPrefixedSimple(t *testing.T) { - var b Builder - b.AddUint8LengthPrefixed(func(c *Builder) { - c.AddUint8(23) - c.AddUint8(42) - }) - if err := builderBytesEq(&b, 2, 23, 42); err != nil { - t.Error(err) - } - - var base, child String = b.BytesOrPanic(), nil - var x, y uint8 - if !base.ReadUint8LengthPrefixed(&child) || !child.ReadUint8(&x) || - !child.ReadUint8(&y) { - t.Error("parsing failed") - } - if x != 23 || y != 42 { - t.Errorf("want x, y == 23, 42; got %d, %d", x, y) - } - if len(base) != 0 { - t.Errorf("len(base) = %d, want 0", len(base)) - } - if len(child) != 0 { - t.Errorf("len(child) = %d, want 0", len(child)) - } -} - -func TestUint8LengthPrefixedMulti(t *testing.T) { - var b Builder - b.AddUint8LengthPrefixed(func(c *Builder) { - c.AddUint8(23) - c.AddUint8(42) - }) - b.AddUint8(5) - b.AddUint8LengthPrefixed(func(c *Builder) { - c.AddUint8(123) - c.AddUint8(234) - }) - if err := builderBytesEq(&b, 2, 23, 42, 5, 2, 123, 234); err != nil { - t.Error(err) - } - - var s, child String = b.BytesOrPanic(), nil - var u, v, w, x, y uint8 - if !s.ReadUint8LengthPrefixed(&child) || !child.ReadUint8(&u) || !child.ReadUint8(&v) || - !s.ReadUint8(&w) || !s.ReadUint8LengthPrefixed(&child) || !child.ReadUint8(&x) || !child.ReadUint8(&y) { - t.Error("parsing failed") - } - if u != 23 || v != 42 || w != 5 || x != 123 || y != 234 { - t.Errorf("u, v, w, x, y = %d, %d, %d, %d, %d; want 23, 42, 5, 123, 234", - u, v, w, x, y) - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } - if len(child) != 0 { - t.Errorf("len(child) = %d, want 0", len(child)) - } -} - -func TestUint8LengthPrefixedNested(t *testing.T) { - var b Builder - b.AddUint8LengthPrefixed(func(c *Builder) { - c.AddUint8(5) - c.AddUint8LengthPrefixed(func(d *Builder) { - d.AddUint8(23) - d.AddUint8(42) - }) - c.AddUint8(123) - }) - if err := builderBytesEq(&b, 5, 5, 2, 23, 42, 123); err != nil { - t.Error(err) - } - - var base, child1, child2 String = b.BytesOrPanic(), nil, nil - var u, v, w, x uint8 - if !base.ReadUint8LengthPrefixed(&child1) { - t.Error("parsing base failed") - } - if !child1.ReadUint8(&u) || !child1.ReadUint8LengthPrefixed(&child2) || !child1.ReadUint8(&x) { - t.Error("parsing child1 failed") - } - if !child2.ReadUint8(&v) || !child2.ReadUint8(&w) { - t.Error("parsing child2 failed") - } - if u != 5 || v != 23 || w != 42 || x != 123 { - t.Errorf("u, v, w, x = %d, %d, %d, %d, want 5, 23, 42, 123", - u, v, w, x) - } - if len(base) != 0 { - t.Errorf("len(base) = %d, want 0", len(base)) - } - if len(child1) != 0 { - t.Errorf("len(child1) = %d, want 0", len(child1)) - } - if len(base) != 0 { - t.Errorf("len(child2) = %d, want 0", len(child2)) - } -} - -func TestPreallocatedBuffer(t *testing.T) { - var buf [5]byte - b := NewBuilder(buf[0:0]) - b.AddUint8(1) - b.AddUint8LengthPrefixed(func(c *Builder) { - c.AddUint8(3) - c.AddUint8(4) - }) - b.AddUint16(1286) // Outgrow buf by one byte. - want := []byte{1, 2, 3, 4, 0} - if !bytes.Equal(buf[:], want) { - t.Errorf("buf = %v want %v", buf, want) - } - if err := builderBytesEq(b, 1, 2, 3, 4, 5, 6); err != nil { - t.Error(err) - } -} - -func TestWriteWithPendingChild(t *testing.T) { - var b Builder - b.AddUint8LengthPrefixed(func(c *Builder) { - c.AddUint8LengthPrefixed(func(d *Builder) { - defer func() { - if recover() == nil { - t.Errorf("recover() = nil, want error; c.AddUint8() did not panic") - } - }() - c.AddUint8(2) // panics - - defer func() { - if recover() == nil { - t.Errorf("recover() = nil, want error; b.AddUint8() did not panic") - } - }() - b.AddUint8(2) // panics - }) - - defer func() { - if recover() == nil { - t.Errorf("recover() = nil, want error; b.AddUint8() did not panic") - } - }() - b.AddUint8(2) // panics - }) -} - -// ASN.1 - -func TestASN1Int64(t *testing.T) { - tests := []struct { - in int64 - want []byte - }{ - {-0x800000, []byte{2, 3, 128, 0, 0}}, - {-256, []byte{2, 2, 255, 0}}, - {-129, []byte{2, 2, 255, 127}}, - {-128, []byte{2, 1, 128}}, - {-1, []byte{2, 1, 255}}, - {0, []byte{2, 1, 0}}, - {1, []byte{2, 1, 1}}, - {2, []byte{2, 1, 2}}, - {127, []byte{2, 1, 127}}, - {128, []byte{2, 2, 0, 128}}, - {256, []byte{2, 2, 1, 0}}, - {0x800000, []byte{2, 4, 0, 128, 0, 0}}, - } - for i, tt := range tests { - var b Builder - b.AddASN1Int64(tt.in) - if err := builderBytesEq(&b, tt.want...); err != nil { - t.Errorf("%v, (i = %d; in = %v)", err, i, tt.in) - } - - var n int64 - s := String(b.BytesOrPanic()) - ok := s.ReadASN1Integer(&n) - if !ok || n != tt.in { - t.Errorf("s.ReadASN1Integer(&n) = %v, n = %d; want true, n = %d (i = %d)", - ok, n, tt.in, i) - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } - } -} - -func TestASN1Uint64(t *testing.T) { - tests := []struct { - in uint64 - want []byte - }{ - {0, []byte{2, 1, 0}}, - {1, []byte{2, 1, 1}}, - {2, []byte{2, 1, 2}}, - {127, []byte{2, 1, 127}}, - {128, []byte{2, 2, 0, 128}}, - {256, []byte{2, 2, 1, 0}}, - {0x800000, []byte{2, 4, 0, 128, 0, 0}}, - {0x7fffffffffffffff, []byte{2, 8, 127, 255, 255, 255, 255, 255, 255, 255}}, - {0x8000000000000000, []byte{2, 9, 0, 128, 0, 0, 0, 0, 0, 0, 0}}, - {0xffffffffffffffff, []byte{2, 9, 0, 255, 255, 255, 255, 255, 255, 255, 255}}, - } - for i, tt := range tests { - var b Builder - b.AddASN1Uint64(tt.in) - if err := builderBytesEq(&b, tt.want...); err != nil { - t.Errorf("%v, (i = %d; in = %v)", err, i, tt.in) - } - - var n uint64 - s := String(b.BytesOrPanic()) - ok := s.ReadASN1Integer(&n) - if !ok || n != tt.in { - t.Errorf("s.ReadASN1Integer(&n) = %v, n = %d; want true, n = %d (i = %d)", - ok, n, tt.in, i) - } - if len(s) != 0 { - t.Errorf("len(s) = %d, want 0", len(s)) - } - } -} diff --git a/vendor/golang.org/x/crypto/cryptobyte/example_test.go b/vendor/golang.org/x/crypto/cryptobyte/example_test.go deleted file mode 100644 index 86c098ad..00000000 --- a/vendor/golang.org/x/crypto/cryptobyte/example_test.go +++ /dev/null @@ -1,154 +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 cryptobyte_test - -import ( - "errors" - "fmt" - - "golang.org/x/crypto/cryptobyte" - "golang.org/x/crypto/cryptobyte/asn1" -) - -func ExampleString_lengthPrefixed() { - // This is an example of parsing length-prefixed data (as found in, for - // example, TLS). Imagine a 16-bit prefixed series of 8-bit prefixed - // strings. - - input := cryptobyte.String([]byte{0, 12, 5, 'h', 'e', 'l', 'l', 'o', 5, 'w', 'o', 'r', 'l', 'd'}) - var result []string - - var values cryptobyte.String - if !input.ReadUint16LengthPrefixed(&values) || - !input.Empty() { - panic("bad format") - } - - for !values.Empty() { - var value cryptobyte.String - if !values.ReadUint8LengthPrefixed(&value) { - panic("bad format") - } - - result = append(result, string(value)) - } - - // Output: []string{"hello", "world"} - fmt.Printf("%#v\n", result) -} - -func ExampleString_aSN1() { - // This is an example of parsing ASN.1 data that looks like: - // Foo ::= SEQUENCE { - // version [6] INTEGER DEFAULT 0 - // data OCTET STRING - // } - - input := cryptobyte.String([]byte{0x30, 12, 0xa6, 3, 2, 1, 2, 4, 5, 'h', 'e', 'l', 'l', 'o'}) - - var ( - version int64 - data, inner, versionBytes cryptobyte.String - haveVersion bool - ) - if !input.ReadASN1(&inner, asn1.SEQUENCE) || - !input.Empty() || - !inner.ReadOptionalASN1(&versionBytes, &haveVersion, asn1.Tag(6).Constructed().ContextSpecific()) || - (haveVersion && !versionBytes.ReadASN1Integer(&version)) || - (haveVersion && !versionBytes.Empty()) || - !inner.ReadASN1(&data, asn1.OCTET_STRING) || - !inner.Empty() { - panic("bad format") - } - - // Output: haveVersion: true, version: 2, data: hello - fmt.Printf("haveVersion: %t, version: %d, data: %s\n", haveVersion, version, string(data)) -} - -func ExampleBuilder_aSN1() { - // This is an example of building ASN.1 data that looks like: - // Foo ::= SEQUENCE { - // version [6] INTEGER DEFAULT 0 - // data OCTET STRING - // } - - version := int64(2) - data := []byte("hello") - const defaultVersion = 0 - - var b cryptobyte.Builder - b.AddASN1(asn1.SEQUENCE, func(b *cryptobyte.Builder) { - if version != defaultVersion { - b.AddASN1(asn1.Tag(6).Constructed().ContextSpecific(), func(b *cryptobyte.Builder) { - b.AddASN1Int64(version) - }) - } - b.AddASN1OctetString(data) - }) - - result, err := b.Bytes() - if err != nil { - panic(err) - } - - // Output: 300ca603020102040568656c6c6f - fmt.Printf("%x\n", result) -} - -func ExampleBuilder_lengthPrefixed() { - // This is an example of building length-prefixed data (as found in, - // for example, TLS). Imagine a 16-bit prefixed series of 8-bit - // prefixed strings. - input := []string{"hello", "world"} - - var b cryptobyte.Builder - b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { - for _, value := range input { - b.AddUint8LengthPrefixed(func(b *cryptobyte.Builder) { - b.AddBytes([]byte(value)) - }) - } - }) - - result, err := b.Bytes() - if err != nil { - panic(err) - } - - // Output: 000c0568656c6c6f05776f726c64 - fmt.Printf("%x\n", result) -} - -func ExampleBuilder_lengthPrefixOverflow() { - // Writing more data that can be expressed by the length prefix results - // in an error from Bytes(). - - tooLarge := make([]byte, 256) - - var b cryptobyte.Builder - b.AddUint8LengthPrefixed(func(b *cryptobyte.Builder) { - b.AddBytes(tooLarge) - }) - - result, err := b.Bytes() - fmt.Printf("len=%d err=%s\n", len(result), err) - - // Output: len=0 err=cryptobyte: pending child length 256 exceeds 1-byte length prefix -} - -func ExampleBuilderContinuation_errorHandling() { - var b cryptobyte.Builder - // Continuations that panic with a BuildError will cause Bytes to - // return the inner error. - b.AddUint16LengthPrefixed(func(b *cryptobyte.Builder) { - b.AddUint32(0) - panic(cryptobyte.BuildError{Err: errors.New("example error")}) - }) - - result, err := b.Bytes() - fmt.Printf("len=%d err=%s\n", len(result), err) - - // Output: len=0 err=example error -} diff --git a/vendor/golang.org/x/crypto/cryptobyte/string.go b/vendor/golang.org/x/crypto/cryptobyte/string.go deleted file mode 100644 index 7636fb9c..00000000 --- a/vendor/golang.org/x/crypto/cryptobyte/string.go +++ /dev/null @@ -1,167 +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 cryptobyte contains types that help with parsing and constructing -// length-prefixed, binary messages, including ASN.1 DER. (The asn1 subpackage -// contains useful ASN.1 constants.) -// -// The String type is for parsing. It wraps a []byte slice and provides helper -// functions for consuming structures, value by value. -// -// The Builder type is for constructing messages. It providers helper functions -// for appending values and also for appending length-prefixed submessages – -// without having to worry about calculating the length prefix ahead of time. -// -// See the documentation and examples for the Builder and String types to get -// started. -package cryptobyte // import "golang.org/x/crypto/cryptobyte" - -// String represents a string of bytes. It provides methods for parsing -// fixed-length and length-prefixed values from it. -type String []byte - -// read advances a String by n bytes and returns them. If less than n bytes -// remain, it returns nil. -func (s *String) read(n int) []byte { - if len(*s) < n { - return nil - } - v := (*s)[:n] - *s = (*s)[n:] - return v -} - -// Skip advances the String by n byte and reports whether it was successful. -func (s *String) Skip(n int) bool { - return s.read(n) != nil -} - -// ReadUint8 decodes an 8-bit value into out and advances over it. It -// returns true on success and false on error. -func (s *String) ReadUint8(out *uint8) bool { - v := s.read(1) - if v == nil { - return false - } - *out = uint8(v[0]) - return true -} - -// ReadUint16 decodes a big-endian, 16-bit value into out and advances over it. -// It returns true on success and false on error. -func (s *String) ReadUint16(out *uint16) bool { - v := s.read(2) - if v == nil { - return false - } - *out = uint16(v[0])<<8 | uint16(v[1]) - return true -} - -// ReadUint24 decodes a big-endian, 24-bit value into out and advances over it. -// It returns true on success and false on error. -func (s *String) ReadUint24(out *uint32) bool { - v := s.read(3) - if v == nil { - return false - } - *out = uint32(v[0])<<16 | uint32(v[1])<<8 | uint32(v[2]) - return true -} - -// ReadUint32 decodes a big-endian, 32-bit value into out and advances over it. -// It returns true on success and false on error. -func (s *String) ReadUint32(out *uint32) bool { - v := s.read(4) - if v == nil { - return false - } - *out = uint32(v[0])<<24 | uint32(v[1])<<16 | uint32(v[2])<<8 | uint32(v[3]) - return true -} - -func (s *String) readUnsigned(out *uint32, length int) bool { - v := s.read(length) - if v == nil { - return false - } - var result uint32 - for i := 0; i < length; i++ { - result <<= 8 - result |= uint32(v[i]) - } - *out = result - return true -} - -func (s *String) readLengthPrefixed(lenLen int, outChild *String) bool { - lenBytes := s.read(lenLen) - if lenBytes == nil { - return false - } - var length uint32 - for _, b := range lenBytes { - length = length << 8 - length = length | uint32(b) - } - if int(length) < 0 { - // This currently cannot overflow because we read uint24 at most, but check - // anyway in case that changes in the future. - return false - } - v := s.read(int(length)) - if v == nil { - return false - } - *outChild = v - return true -} - -// ReadUint8LengthPrefixed reads the content of an 8-bit length-prefixed value -// into out and advances over it. It returns true on success and false on -// error. -func (s *String) ReadUint8LengthPrefixed(out *String) bool { - return s.readLengthPrefixed(1, out) -} - -// ReadUint16LengthPrefixed reads the content of a big-endian, 16-bit -// length-prefixed value into out and advances over it. It returns true on -// success and false on error. -func (s *String) ReadUint16LengthPrefixed(out *String) bool { - return s.readLengthPrefixed(2, out) -} - -// ReadUint24LengthPrefixed reads the content of a big-endian, 24-bit -// length-prefixed value into out and advances over it. It returns true on -// success and false on error. -func (s *String) ReadUint24LengthPrefixed(out *String) bool { - return s.readLengthPrefixed(3, out) -} - -// ReadBytes reads n bytes into out and advances over them. It returns true on -// success and false and error. -func (s *String) ReadBytes(out *[]byte, n int) bool { - v := s.read(n) - if v == nil { - return false - } - *out = v - return true -} - -// CopyBytes copies len(out) bytes into out and advances over them. It returns -// true on success and false on error. -func (s *String) CopyBytes(out []byte) bool { - n := len(out) - v := s.read(n) - if v == nil { - return false - } - return copy(out, v) == n -} - -// Empty reports whether the string does not contain any bytes. -func (s String) Empty() bool { - return len(s) == 0 -} diff --git a/vendor/golang.org/x/crypto/curve25519/const_amd64.h b/vendor/golang.org/x/crypto/curve25519/const_amd64.h deleted file mode 100644 index b3f74162..00000000 --- a/vendor/golang.org/x/crypto/curve25519/const_amd64.h +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This code was translated into a form compatible with 6a from the public -// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html - -#define REDMASK51 0x0007FFFFFFFFFFFF diff --git a/vendor/golang.org/x/crypto/curve25519/const_amd64.s b/vendor/golang.org/x/crypto/curve25519/const_amd64.s deleted file mode 100644 index ee7b4bd5..00000000 --- a/vendor/golang.org/x/crypto/curve25519/const_amd64.s +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This code was translated into a form compatible with 6a from the public -// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html - -// +build amd64,!gccgo,!appengine - -// These constants cannot be encoded in non-MOVQ immediates. -// We access them directly from memory instead. - -DATA ·_121666_213(SB)/8, $996687872 -GLOBL ·_121666_213(SB), 8, $8 - -DATA ·_2P0(SB)/8, $0xFFFFFFFFFFFDA -GLOBL ·_2P0(SB), 8, $8 - -DATA ·_2P1234(SB)/8, $0xFFFFFFFFFFFFE -GLOBL ·_2P1234(SB), 8, $8 diff --git a/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s b/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s deleted file mode 100644 index cd793a5b..00000000 --- a/vendor/golang.org/x/crypto/curve25519/cswap_amd64.s +++ /dev/null @@ -1,65 +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. - -// +build amd64,!gccgo,!appengine - -// func cswap(inout *[4][5]uint64, v uint64) -TEXT ·cswap(SB),7,$0 - MOVQ inout+0(FP),DI - MOVQ v+8(FP),SI - - SUBQ $1, SI - NOTQ SI - MOVQ SI, X15 - PSHUFD $0x44, X15, X15 - - MOVOU 0(DI), X0 - MOVOU 16(DI), X2 - MOVOU 32(DI), X4 - MOVOU 48(DI), X6 - MOVOU 64(DI), X8 - MOVOU 80(DI), X1 - MOVOU 96(DI), X3 - MOVOU 112(DI), X5 - MOVOU 128(DI), X7 - MOVOU 144(DI), X9 - - MOVO X1, X10 - MOVO X3, X11 - MOVO X5, X12 - MOVO X7, X13 - MOVO X9, X14 - - PXOR X0, X10 - PXOR X2, X11 - PXOR X4, X12 - PXOR X6, X13 - PXOR X8, X14 - PAND X15, X10 - PAND X15, X11 - PAND X15, X12 - PAND X15, X13 - PAND X15, X14 - PXOR X10, X0 - PXOR X10, X1 - PXOR X11, X2 - PXOR X11, X3 - PXOR X12, X4 - PXOR X12, X5 - PXOR X13, X6 - PXOR X13, X7 - PXOR X14, X8 - PXOR X14, X9 - - MOVOU X0, 0(DI) - MOVOU X2, 16(DI) - MOVOU X4, 32(DI) - MOVOU X6, 48(DI) - MOVOU X8, 64(DI) - MOVOU X1, 80(DI) - MOVOU X3, 96(DI) - MOVOU X5, 112(DI) - MOVOU X7, 128(DI) - MOVOU X9, 144(DI) - RET diff --git a/vendor/golang.org/x/crypto/curve25519/curve25519.go b/vendor/golang.org/x/crypto/curve25519/curve25519.go deleted file mode 100644 index cb8fbc57..00000000 --- a/vendor/golang.org/x/crypto/curve25519/curve25519.go +++ /dev/null @@ -1,834 +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. - -// We have an implementation in amd64 assembly so this code is only run on -// non-amd64 platforms. The amd64 assembly does not support gccgo. -// +build !amd64 gccgo appengine - -package curve25519 - -import ( - "encoding/binary" -) - -// This code is a port of the public domain, "ref10" implementation of -// curve25519 from SUPERCOP 20130419 by D. J. Bernstein. - -// fieldElement represents an element of the field GF(2^255 - 19). An element -// t, entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77 -// t[3]+2^102 t[4]+...+2^230 t[9]. Bounds on each t[i] vary depending on -// context. -type fieldElement [10]int32 - -func feZero(fe *fieldElement) { - for i := range fe { - fe[i] = 0 - } -} - -func feOne(fe *fieldElement) { - feZero(fe) - fe[0] = 1 -} - -func feAdd(dst, a, b *fieldElement) { - for i := range dst { - dst[i] = a[i] + b[i] - } -} - -func feSub(dst, a, b *fieldElement) { - for i := range dst { - dst[i] = a[i] - b[i] - } -} - -func feCopy(dst, src *fieldElement) { - for i := range dst { - dst[i] = src[i] - } -} - -// feCSwap replaces (f,g) with (g,f) if b == 1; replaces (f,g) with (f,g) if b == 0. -// -// Preconditions: b in {0,1}. -func feCSwap(f, g *fieldElement, b int32) { - b = -b - for i := range f { - t := b & (f[i] ^ g[i]) - f[i] ^= t - g[i] ^= t - } -} - -// load3 reads a 24-bit, little-endian value from in. -func load3(in []byte) int64 { - var r int64 - r = int64(in[0]) - r |= int64(in[1]) << 8 - r |= int64(in[2]) << 16 - return r -} - -// load4 reads a 32-bit, little-endian value from in. -func load4(in []byte) int64 { - return int64(binary.LittleEndian.Uint32(in)) -} - -func feFromBytes(dst *fieldElement, src *[32]byte) { - h0 := load4(src[:]) - h1 := load3(src[4:]) << 6 - h2 := load3(src[7:]) << 5 - h3 := load3(src[10:]) << 3 - h4 := load3(src[13:]) << 2 - h5 := load4(src[16:]) - h6 := load3(src[20:]) << 7 - h7 := load3(src[23:]) << 5 - h8 := load3(src[26:]) << 4 - h9 := load3(src[29:]) << 2 - - var carry [10]int64 - carry[9] = (h9 + 1<<24) >> 25 - h0 += carry[9] * 19 - h9 -= carry[9] << 25 - carry[1] = (h1 + 1<<24) >> 25 - h2 += carry[1] - h1 -= carry[1] << 25 - carry[3] = (h3 + 1<<24) >> 25 - h4 += carry[3] - h3 -= carry[3] << 25 - carry[5] = (h5 + 1<<24) >> 25 - h6 += carry[5] - h5 -= carry[5] << 25 - carry[7] = (h7 + 1<<24) >> 25 - h8 += carry[7] - h7 -= carry[7] << 25 - - carry[0] = (h0 + 1<<25) >> 26 - h1 += carry[0] - h0 -= carry[0] << 26 - carry[2] = (h2 + 1<<25) >> 26 - h3 += carry[2] - h2 -= carry[2] << 26 - carry[4] = (h4 + 1<<25) >> 26 - h5 += carry[4] - h4 -= carry[4] << 26 - carry[6] = (h6 + 1<<25) >> 26 - h7 += carry[6] - h6 -= carry[6] << 26 - carry[8] = (h8 + 1<<25) >> 26 - h9 += carry[8] - h8 -= carry[8] << 26 - - dst[0] = int32(h0) - dst[1] = int32(h1) - dst[2] = int32(h2) - dst[3] = int32(h3) - dst[4] = int32(h4) - dst[5] = int32(h5) - dst[6] = int32(h6) - dst[7] = int32(h7) - dst[8] = int32(h8) - dst[9] = int32(h9) -} - -// feToBytes marshals h to s. -// Preconditions: -// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -// -// Write p=2^255-19; q=floor(h/p). -// Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). -// -// Proof: -// Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. -// Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4. -// -// Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). -// Then 0> 25 - q = (h[0] + q) >> 26 - q = (h[1] + q) >> 25 - q = (h[2] + q) >> 26 - q = (h[3] + q) >> 25 - q = (h[4] + q) >> 26 - q = (h[5] + q) >> 25 - q = (h[6] + q) >> 26 - q = (h[7] + q) >> 25 - q = (h[8] + q) >> 26 - q = (h[9] + q) >> 25 - - // Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. - h[0] += 19 * q - // Goal: Output h-2^255 q, which is between 0 and 2^255-20. - - carry[0] = h[0] >> 26 - h[1] += carry[0] - h[0] -= carry[0] << 26 - carry[1] = h[1] >> 25 - h[2] += carry[1] - h[1] -= carry[1] << 25 - carry[2] = h[2] >> 26 - h[3] += carry[2] - h[2] -= carry[2] << 26 - carry[3] = h[3] >> 25 - h[4] += carry[3] - h[3] -= carry[3] << 25 - carry[4] = h[4] >> 26 - h[5] += carry[4] - h[4] -= carry[4] << 26 - carry[5] = h[5] >> 25 - h[6] += carry[5] - h[5] -= carry[5] << 25 - carry[6] = h[6] >> 26 - h[7] += carry[6] - h[6] -= carry[6] << 26 - carry[7] = h[7] >> 25 - h[8] += carry[7] - h[7] -= carry[7] << 25 - carry[8] = h[8] >> 26 - h[9] += carry[8] - h[8] -= carry[8] << 26 - carry[9] = h[9] >> 25 - h[9] -= carry[9] << 25 - // h10 = carry9 - - // Goal: Output h[0]+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. - // Have h[0]+...+2^230 h[9] between 0 and 2^255-1; - // evidently 2^255 h10-2^255 q = 0. - // Goal: Output h[0]+...+2^230 h[9]. - - s[0] = byte(h[0] >> 0) - s[1] = byte(h[0] >> 8) - s[2] = byte(h[0] >> 16) - s[3] = byte((h[0] >> 24) | (h[1] << 2)) - s[4] = byte(h[1] >> 6) - s[5] = byte(h[1] >> 14) - s[6] = byte((h[1] >> 22) | (h[2] << 3)) - s[7] = byte(h[2] >> 5) - s[8] = byte(h[2] >> 13) - s[9] = byte((h[2] >> 21) | (h[3] << 5)) - s[10] = byte(h[3] >> 3) - s[11] = byte(h[3] >> 11) - s[12] = byte((h[3] >> 19) | (h[4] << 6)) - s[13] = byte(h[4] >> 2) - s[14] = byte(h[4] >> 10) - s[15] = byte(h[4] >> 18) - s[16] = byte(h[5] >> 0) - s[17] = byte(h[5] >> 8) - s[18] = byte(h[5] >> 16) - s[19] = byte((h[5] >> 24) | (h[6] << 1)) - s[20] = byte(h[6] >> 7) - s[21] = byte(h[6] >> 15) - s[22] = byte((h[6] >> 23) | (h[7] << 3)) - s[23] = byte(h[7] >> 5) - s[24] = byte(h[7] >> 13) - s[25] = byte((h[7] >> 21) | (h[8] << 4)) - s[26] = byte(h[8] >> 4) - s[27] = byte(h[8] >> 12) - s[28] = byte((h[8] >> 20) | (h[9] << 6)) - s[29] = byte(h[9] >> 2) - s[30] = byte(h[9] >> 10) - s[31] = byte(h[9] >> 18) -} - -// feMul calculates h = f * g -// Can overlap h with f or g. -// -// Preconditions: -// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -// |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -// -// Postconditions: -// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -// -// Notes on implementation strategy: -// -// Using schoolbook multiplication. -// Karatsuba would save a little in some cost models. -// -// Most multiplications by 2 and 19 are 32-bit precomputations; -// cheaper than 64-bit postcomputations. -// -// There is one remaining multiplication by 19 in the carry chain; -// one *19 precomputation can be merged into this, -// but the resulting data flow is considerably less clean. -// -// There are 12 carries below. -// 10 of them are 2-way parallelizable and vectorizable. -// Can get away with 11 carries, but then data flow is much deeper. -// -// With tighter constraints on inputs can squeeze carries into int32. -func feMul(h, f, g *fieldElement) { - f0 := f[0] - f1 := f[1] - f2 := f[2] - f3 := f[3] - f4 := f[4] - f5 := f[5] - f6 := f[6] - f7 := f[7] - f8 := f[8] - f9 := f[9] - g0 := g[0] - g1 := g[1] - g2 := g[2] - g3 := g[3] - g4 := g[4] - g5 := g[5] - g6 := g[6] - g7 := g[7] - g8 := g[8] - g9 := g[9] - g1_19 := 19 * g1 // 1.4*2^29 - g2_19 := 19 * g2 // 1.4*2^30; still ok - g3_19 := 19 * g3 - g4_19 := 19 * g4 - g5_19 := 19 * g5 - g6_19 := 19 * g6 - g7_19 := 19 * g7 - g8_19 := 19 * g8 - g9_19 := 19 * g9 - f1_2 := 2 * f1 - f3_2 := 2 * f3 - f5_2 := 2 * f5 - f7_2 := 2 * f7 - f9_2 := 2 * f9 - f0g0 := int64(f0) * int64(g0) - f0g1 := int64(f0) * int64(g1) - f0g2 := int64(f0) * int64(g2) - f0g3 := int64(f0) * int64(g3) - f0g4 := int64(f0) * int64(g4) - f0g5 := int64(f0) * int64(g5) - f0g6 := int64(f0) * int64(g6) - f0g7 := int64(f0) * int64(g7) - f0g8 := int64(f0) * int64(g8) - f0g9 := int64(f0) * int64(g9) - f1g0 := int64(f1) * int64(g0) - f1g1_2 := int64(f1_2) * int64(g1) - f1g2 := int64(f1) * int64(g2) - f1g3_2 := int64(f1_2) * int64(g3) - f1g4 := int64(f1) * int64(g4) - f1g5_2 := int64(f1_2) * int64(g5) - f1g6 := int64(f1) * int64(g6) - f1g7_2 := int64(f1_2) * int64(g7) - f1g8 := int64(f1) * int64(g8) - f1g9_38 := int64(f1_2) * int64(g9_19) - f2g0 := int64(f2) * int64(g0) - f2g1 := int64(f2) * int64(g1) - f2g2 := int64(f2) * int64(g2) - f2g3 := int64(f2) * int64(g3) - f2g4 := int64(f2) * int64(g4) - f2g5 := int64(f2) * int64(g5) - f2g6 := int64(f2) * int64(g6) - f2g7 := int64(f2) * int64(g7) - f2g8_19 := int64(f2) * int64(g8_19) - f2g9_19 := int64(f2) * int64(g9_19) - f3g0 := int64(f3) * int64(g0) - f3g1_2 := int64(f3_2) * int64(g1) - f3g2 := int64(f3) * int64(g2) - f3g3_2 := int64(f3_2) * int64(g3) - f3g4 := int64(f3) * int64(g4) - f3g5_2 := int64(f3_2) * int64(g5) - f3g6 := int64(f3) * int64(g6) - f3g7_38 := int64(f3_2) * int64(g7_19) - f3g8_19 := int64(f3) * int64(g8_19) - f3g9_38 := int64(f3_2) * int64(g9_19) - f4g0 := int64(f4) * int64(g0) - f4g1 := int64(f4) * int64(g1) - f4g2 := int64(f4) * int64(g2) - f4g3 := int64(f4) * int64(g3) - f4g4 := int64(f4) * int64(g4) - f4g5 := int64(f4) * int64(g5) - f4g6_19 := int64(f4) * int64(g6_19) - f4g7_19 := int64(f4) * int64(g7_19) - f4g8_19 := int64(f4) * int64(g8_19) - f4g9_19 := int64(f4) * int64(g9_19) - f5g0 := int64(f5) * int64(g0) - f5g1_2 := int64(f5_2) * int64(g1) - f5g2 := int64(f5) * int64(g2) - f5g3_2 := int64(f5_2) * int64(g3) - f5g4 := int64(f5) * int64(g4) - f5g5_38 := int64(f5_2) * int64(g5_19) - f5g6_19 := int64(f5) * int64(g6_19) - f5g7_38 := int64(f5_2) * int64(g7_19) - f5g8_19 := int64(f5) * int64(g8_19) - f5g9_38 := int64(f5_2) * int64(g9_19) - f6g0 := int64(f6) * int64(g0) - f6g1 := int64(f6) * int64(g1) - f6g2 := int64(f6) * int64(g2) - f6g3 := int64(f6) * int64(g3) - f6g4_19 := int64(f6) * int64(g4_19) - f6g5_19 := int64(f6) * int64(g5_19) - f6g6_19 := int64(f6) * int64(g6_19) - f6g7_19 := int64(f6) * int64(g7_19) - f6g8_19 := int64(f6) * int64(g8_19) - f6g9_19 := int64(f6) * int64(g9_19) - f7g0 := int64(f7) * int64(g0) - f7g1_2 := int64(f7_2) * int64(g1) - f7g2 := int64(f7) * int64(g2) - f7g3_38 := int64(f7_2) * int64(g3_19) - f7g4_19 := int64(f7) * int64(g4_19) - f7g5_38 := int64(f7_2) * int64(g5_19) - f7g6_19 := int64(f7) * int64(g6_19) - f7g7_38 := int64(f7_2) * int64(g7_19) - f7g8_19 := int64(f7) * int64(g8_19) - f7g9_38 := int64(f7_2) * int64(g9_19) - f8g0 := int64(f8) * int64(g0) - f8g1 := int64(f8) * int64(g1) - f8g2_19 := int64(f8) * int64(g2_19) - f8g3_19 := int64(f8) * int64(g3_19) - f8g4_19 := int64(f8) * int64(g4_19) - f8g5_19 := int64(f8) * int64(g5_19) - f8g6_19 := int64(f8) * int64(g6_19) - f8g7_19 := int64(f8) * int64(g7_19) - f8g8_19 := int64(f8) * int64(g8_19) - f8g9_19 := int64(f8) * int64(g9_19) - f9g0 := int64(f9) * int64(g0) - f9g1_38 := int64(f9_2) * int64(g1_19) - f9g2_19 := int64(f9) * int64(g2_19) - f9g3_38 := int64(f9_2) * int64(g3_19) - f9g4_19 := int64(f9) * int64(g4_19) - f9g5_38 := int64(f9_2) * int64(g5_19) - f9g6_19 := int64(f9) * int64(g6_19) - f9g7_38 := int64(f9_2) * int64(g7_19) - f9g8_19 := int64(f9) * int64(g8_19) - f9g9_38 := int64(f9_2) * int64(g9_19) - h0 := f0g0 + f1g9_38 + f2g8_19 + f3g7_38 + f4g6_19 + f5g5_38 + f6g4_19 + f7g3_38 + f8g2_19 + f9g1_38 - h1 := f0g1 + f1g0 + f2g9_19 + f3g8_19 + f4g7_19 + f5g6_19 + f6g5_19 + f7g4_19 + f8g3_19 + f9g2_19 - h2 := f0g2 + f1g1_2 + f2g0 + f3g9_38 + f4g8_19 + f5g7_38 + f6g6_19 + f7g5_38 + f8g4_19 + f9g3_38 - h3 := f0g3 + f1g2 + f2g1 + f3g0 + f4g9_19 + f5g8_19 + f6g7_19 + f7g6_19 + f8g5_19 + f9g4_19 - h4 := f0g4 + f1g3_2 + f2g2 + f3g1_2 + f4g0 + f5g9_38 + f6g8_19 + f7g7_38 + f8g6_19 + f9g5_38 - h5 := f0g5 + f1g4 + f2g3 + f3g2 + f4g1 + f5g0 + f6g9_19 + f7g8_19 + f8g7_19 + f9g6_19 - h6 := f0g6 + f1g5_2 + f2g4 + f3g3_2 + f4g2 + f5g1_2 + f6g0 + f7g9_38 + f8g8_19 + f9g7_38 - h7 := f0g7 + f1g6 + f2g5 + f3g4 + f4g3 + f5g2 + f6g1 + f7g0 + f8g9_19 + f9g8_19 - h8 := f0g8 + f1g7_2 + f2g6 + f3g5_2 + f4g4 + f5g3_2 + f6g2 + f7g1_2 + f8g0 + f9g9_38 - h9 := f0g9 + f1g8 + f2g7 + f3g6 + f4g5 + f5g4 + f6g3 + f7g2 + f8g1 + f9g0 - var carry [10]int64 - - // |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38)) - // i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8 - // |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19)) - // i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9 - - carry[0] = (h0 + (1 << 25)) >> 26 - h1 += carry[0] - h0 -= carry[0] << 26 - carry[4] = (h4 + (1 << 25)) >> 26 - h5 += carry[4] - h4 -= carry[4] << 26 - // |h0| <= 2^25 - // |h4| <= 2^25 - // |h1| <= 1.51*2^58 - // |h5| <= 1.51*2^58 - - carry[1] = (h1 + (1 << 24)) >> 25 - h2 += carry[1] - h1 -= carry[1] << 25 - carry[5] = (h5 + (1 << 24)) >> 25 - h6 += carry[5] - h5 -= carry[5] << 25 - // |h1| <= 2^24; from now on fits into int32 - // |h5| <= 2^24; from now on fits into int32 - // |h2| <= 1.21*2^59 - // |h6| <= 1.21*2^59 - - carry[2] = (h2 + (1 << 25)) >> 26 - h3 += carry[2] - h2 -= carry[2] << 26 - carry[6] = (h6 + (1 << 25)) >> 26 - h7 += carry[6] - h6 -= carry[6] << 26 - // |h2| <= 2^25; from now on fits into int32 unchanged - // |h6| <= 2^25; from now on fits into int32 unchanged - // |h3| <= 1.51*2^58 - // |h7| <= 1.51*2^58 - - carry[3] = (h3 + (1 << 24)) >> 25 - h4 += carry[3] - h3 -= carry[3] << 25 - carry[7] = (h7 + (1 << 24)) >> 25 - h8 += carry[7] - h7 -= carry[7] << 25 - // |h3| <= 2^24; from now on fits into int32 unchanged - // |h7| <= 2^24; from now on fits into int32 unchanged - // |h4| <= 1.52*2^33 - // |h8| <= 1.52*2^33 - - carry[4] = (h4 + (1 << 25)) >> 26 - h5 += carry[4] - h4 -= carry[4] << 26 - carry[8] = (h8 + (1 << 25)) >> 26 - h9 += carry[8] - h8 -= carry[8] << 26 - // |h4| <= 2^25; from now on fits into int32 unchanged - // |h8| <= 2^25; from now on fits into int32 unchanged - // |h5| <= 1.01*2^24 - // |h9| <= 1.51*2^58 - - carry[9] = (h9 + (1 << 24)) >> 25 - h0 += carry[9] * 19 - h9 -= carry[9] << 25 - // |h9| <= 2^24; from now on fits into int32 unchanged - // |h0| <= 1.8*2^37 - - carry[0] = (h0 + (1 << 25)) >> 26 - h1 += carry[0] - h0 -= carry[0] << 26 - // |h0| <= 2^25; from now on fits into int32 unchanged - // |h1| <= 1.01*2^24 - - h[0] = int32(h0) - h[1] = int32(h1) - h[2] = int32(h2) - h[3] = int32(h3) - h[4] = int32(h4) - h[5] = int32(h5) - h[6] = int32(h6) - h[7] = int32(h7) - h[8] = int32(h8) - h[9] = int32(h9) -} - -// feSquare calculates h = f*f. Can overlap h with f. -// -// Preconditions: -// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -// -// Postconditions: -// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -func feSquare(h, f *fieldElement) { - f0 := f[0] - f1 := f[1] - f2 := f[2] - f3 := f[3] - f4 := f[4] - f5 := f[5] - f6 := f[6] - f7 := f[7] - f8 := f[8] - f9 := f[9] - f0_2 := 2 * f0 - f1_2 := 2 * f1 - f2_2 := 2 * f2 - f3_2 := 2 * f3 - f4_2 := 2 * f4 - f5_2 := 2 * f5 - f6_2 := 2 * f6 - f7_2 := 2 * f7 - f5_38 := 38 * f5 // 1.31*2^30 - f6_19 := 19 * f6 // 1.31*2^30 - f7_38 := 38 * f7 // 1.31*2^30 - f8_19 := 19 * f8 // 1.31*2^30 - f9_38 := 38 * f9 // 1.31*2^30 - f0f0 := int64(f0) * int64(f0) - f0f1_2 := int64(f0_2) * int64(f1) - f0f2_2 := int64(f0_2) * int64(f2) - f0f3_2 := int64(f0_2) * int64(f3) - f0f4_2 := int64(f0_2) * int64(f4) - f0f5_2 := int64(f0_2) * int64(f5) - f0f6_2 := int64(f0_2) * int64(f6) - f0f7_2 := int64(f0_2) * int64(f7) - f0f8_2 := int64(f0_2) * int64(f8) - f0f9_2 := int64(f0_2) * int64(f9) - f1f1_2 := int64(f1_2) * int64(f1) - f1f2_2 := int64(f1_2) * int64(f2) - f1f3_4 := int64(f1_2) * int64(f3_2) - f1f4_2 := int64(f1_2) * int64(f4) - f1f5_4 := int64(f1_2) * int64(f5_2) - f1f6_2 := int64(f1_2) * int64(f6) - f1f7_4 := int64(f1_2) * int64(f7_2) - f1f8_2 := int64(f1_2) * int64(f8) - f1f9_76 := int64(f1_2) * int64(f9_38) - f2f2 := int64(f2) * int64(f2) - f2f3_2 := int64(f2_2) * int64(f3) - f2f4_2 := int64(f2_2) * int64(f4) - f2f5_2 := int64(f2_2) * int64(f5) - f2f6_2 := int64(f2_2) * int64(f6) - f2f7_2 := int64(f2_2) * int64(f7) - f2f8_38 := int64(f2_2) * int64(f8_19) - f2f9_38 := int64(f2) * int64(f9_38) - f3f3_2 := int64(f3_2) * int64(f3) - f3f4_2 := int64(f3_2) * int64(f4) - f3f5_4 := int64(f3_2) * int64(f5_2) - f3f6_2 := int64(f3_2) * int64(f6) - f3f7_76 := int64(f3_2) * int64(f7_38) - f3f8_38 := int64(f3_2) * int64(f8_19) - f3f9_76 := int64(f3_2) * int64(f9_38) - f4f4 := int64(f4) * int64(f4) - f4f5_2 := int64(f4_2) * int64(f5) - f4f6_38 := int64(f4_2) * int64(f6_19) - f4f7_38 := int64(f4) * int64(f7_38) - f4f8_38 := int64(f4_2) * int64(f8_19) - f4f9_38 := int64(f4) * int64(f9_38) - f5f5_38 := int64(f5) * int64(f5_38) - f5f6_38 := int64(f5_2) * int64(f6_19) - f5f7_76 := int64(f5_2) * int64(f7_38) - f5f8_38 := int64(f5_2) * int64(f8_19) - f5f9_76 := int64(f5_2) * int64(f9_38) - f6f6_19 := int64(f6) * int64(f6_19) - f6f7_38 := int64(f6) * int64(f7_38) - f6f8_38 := int64(f6_2) * int64(f8_19) - f6f9_38 := int64(f6) * int64(f9_38) - f7f7_38 := int64(f7) * int64(f7_38) - f7f8_38 := int64(f7_2) * int64(f8_19) - f7f9_76 := int64(f7_2) * int64(f9_38) - f8f8_19 := int64(f8) * int64(f8_19) - f8f9_38 := int64(f8) * int64(f9_38) - f9f9_38 := int64(f9) * int64(f9_38) - h0 := f0f0 + f1f9_76 + f2f8_38 + f3f7_76 + f4f6_38 + f5f5_38 - h1 := f0f1_2 + f2f9_38 + f3f8_38 + f4f7_38 + f5f6_38 - h2 := f0f2_2 + f1f1_2 + f3f9_76 + f4f8_38 + f5f7_76 + f6f6_19 - h3 := f0f3_2 + f1f2_2 + f4f9_38 + f5f8_38 + f6f7_38 - h4 := f0f4_2 + f1f3_4 + f2f2 + f5f9_76 + f6f8_38 + f7f7_38 - h5 := f0f5_2 + f1f4_2 + f2f3_2 + f6f9_38 + f7f8_38 - h6 := f0f6_2 + f1f5_4 + f2f4_2 + f3f3_2 + f7f9_76 + f8f8_19 - h7 := f0f7_2 + f1f6_2 + f2f5_2 + f3f4_2 + f8f9_38 - h8 := f0f8_2 + f1f7_4 + f2f6_2 + f3f5_4 + f4f4 + f9f9_38 - h9 := f0f9_2 + f1f8_2 + f2f7_2 + f3f6_2 + f4f5_2 - var carry [10]int64 - - carry[0] = (h0 + (1 << 25)) >> 26 - h1 += carry[0] - h0 -= carry[0] << 26 - carry[4] = (h4 + (1 << 25)) >> 26 - h5 += carry[4] - h4 -= carry[4] << 26 - - carry[1] = (h1 + (1 << 24)) >> 25 - h2 += carry[1] - h1 -= carry[1] << 25 - carry[5] = (h5 + (1 << 24)) >> 25 - h6 += carry[5] - h5 -= carry[5] << 25 - - carry[2] = (h2 + (1 << 25)) >> 26 - h3 += carry[2] - h2 -= carry[2] << 26 - carry[6] = (h6 + (1 << 25)) >> 26 - h7 += carry[6] - h6 -= carry[6] << 26 - - carry[3] = (h3 + (1 << 24)) >> 25 - h4 += carry[3] - h3 -= carry[3] << 25 - carry[7] = (h7 + (1 << 24)) >> 25 - h8 += carry[7] - h7 -= carry[7] << 25 - - carry[4] = (h4 + (1 << 25)) >> 26 - h5 += carry[4] - h4 -= carry[4] << 26 - carry[8] = (h8 + (1 << 25)) >> 26 - h9 += carry[8] - h8 -= carry[8] << 26 - - carry[9] = (h9 + (1 << 24)) >> 25 - h0 += carry[9] * 19 - h9 -= carry[9] << 25 - - carry[0] = (h0 + (1 << 25)) >> 26 - h1 += carry[0] - h0 -= carry[0] << 26 - - h[0] = int32(h0) - h[1] = int32(h1) - h[2] = int32(h2) - h[3] = int32(h3) - h[4] = int32(h4) - h[5] = int32(h5) - h[6] = int32(h6) - h[7] = int32(h7) - h[8] = int32(h8) - h[9] = int32(h9) -} - -// feMul121666 calculates h = f * 121666. Can overlap h with f. -// -// Preconditions: -// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -// -// Postconditions: -// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -func feMul121666(h, f *fieldElement) { - h0 := int64(f[0]) * 121666 - h1 := int64(f[1]) * 121666 - h2 := int64(f[2]) * 121666 - h3 := int64(f[3]) * 121666 - h4 := int64(f[4]) * 121666 - h5 := int64(f[5]) * 121666 - h6 := int64(f[6]) * 121666 - h7 := int64(f[7]) * 121666 - h8 := int64(f[8]) * 121666 - h9 := int64(f[9]) * 121666 - var carry [10]int64 - - carry[9] = (h9 + (1 << 24)) >> 25 - h0 += carry[9] * 19 - h9 -= carry[9] << 25 - carry[1] = (h1 + (1 << 24)) >> 25 - h2 += carry[1] - h1 -= carry[1] << 25 - carry[3] = (h3 + (1 << 24)) >> 25 - h4 += carry[3] - h3 -= carry[3] << 25 - carry[5] = (h5 + (1 << 24)) >> 25 - h6 += carry[5] - h5 -= carry[5] << 25 - carry[7] = (h7 + (1 << 24)) >> 25 - h8 += carry[7] - h7 -= carry[7] << 25 - - carry[0] = (h0 + (1 << 25)) >> 26 - h1 += carry[0] - h0 -= carry[0] << 26 - carry[2] = (h2 + (1 << 25)) >> 26 - h3 += carry[2] - h2 -= carry[2] << 26 - carry[4] = (h4 + (1 << 25)) >> 26 - h5 += carry[4] - h4 -= carry[4] << 26 - carry[6] = (h6 + (1 << 25)) >> 26 - h7 += carry[6] - h6 -= carry[6] << 26 - carry[8] = (h8 + (1 << 25)) >> 26 - h9 += carry[8] - h8 -= carry[8] << 26 - - h[0] = int32(h0) - h[1] = int32(h1) - h[2] = int32(h2) - h[3] = int32(h3) - h[4] = int32(h4) - h[5] = int32(h5) - h[6] = int32(h6) - h[7] = int32(h7) - h[8] = int32(h8) - h[9] = int32(h9) -} - -// feInvert sets out = z^-1. -func feInvert(out, z *fieldElement) { - var t0, t1, t2, t3 fieldElement - var i int - - feSquare(&t0, z) - for i = 1; i < 1; i++ { - feSquare(&t0, &t0) - } - feSquare(&t1, &t0) - for i = 1; i < 2; i++ { - feSquare(&t1, &t1) - } - feMul(&t1, z, &t1) - feMul(&t0, &t0, &t1) - feSquare(&t2, &t0) - for i = 1; i < 1; i++ { - feSquare(&t2, &t2) - } - feMul(&t1, &t1, &t2) - feSquare(&t2, &t1) - for i = 1; i < 5; i++ { - feSquare(&t2, &t2) - } - feMul(&t1, &t2, &t1) - feSquare(&t2, &t1) - for i = 1; i < 10; i++ { - feSquare(&t2, &t2) - } - feMul(&t2, &t2, &t1) - feSquare(&t3, &t2) - for i = 1; i < 20; i++ { - feSquare(&t3, &t3) - } - feMul(&t2, &t3, &t2) - feSquare(&t2, &t2) - for i = 1; i < 10; i++ { - feSquare(&t2, &t2) - } - feMul(&t1, &t2, &t1) - feSquare(&t2, &t1) - for i = 1; i < 50; i++ { - feSquare(&t2, &t2) - } - feMul(&t2, &t2, &t1) - feSquare(&t3, &t2) - for i = 1; i < 100; i++ { - feSquare(&t3, &t3) - } - feMul(&t2, &t3, &t2) - feSquare(&t2, &t2) - for i = 1; i < 50; i++ { - feSquare(&t2, &t2) - } - feMul(&t1, &t2, &t1) - feSquare(&t1, &t1) - for i = 1; i < 5; i++ { - feSquare(&t1, &t1) - } - feMul(out, &t1, &t0) -} - -func scalarMult(out, in, base *[32]byte) { - var e [32]byte - - copy(e[:], in[:]) - e[0] &= 248 - e[31] &= 127 - e[31] |= 64 - - var x1, x2, z2, x3, z3, tmp0, tmp1 fieldElement - feFromBytes(&x1, base) - feOne(&x2) - feCopy(&x3, &x1) - feOne(&z3) - - swap := int32(0) - for pos := 254; pos >= 0; pos-- { - b := e[pos/8] >> uint(pos&7) - b &= 1 - swap ^= int32(b) - feCSwap(&x2, &x3, swap) - feCSwap(&z2, &z3, swap) - swap = int32(b) - - feSub(&tmp0, &x3, &z3) - feSub(&tmp1, &x2, &z2) - feAdd(&x2, &x2, &z2) - feAdd(&z2, &x3, &z3) - feMul(&z3, &tmp0, &x2) - feMul(&z2, &z2, &tmp1) - feSquare(&tmp0, &tmp1) - feSquare(&tmp1, &x2) - feAdd(&x3, &z3, &z2) - feSub(&z2, &z3, &z2) - feMul(&x2, &tmp1, &tmp0) - feSub(&tmp1, &tmp1, &tmp0) - feSquare(&z2, &z2) - feMul121666(&z3, &tmp1) - feSquare(&x3, &x3) - feAdd(&tmp0, &tmp0, &z3) - feMul(&z3, &x1, &z2) - feMul(&z2, &tmp1, &tmp0) - } - - feCSwap(&x2, &x3, swap) - feCSwap(&z2, &z3, swap) - - feInvert(&z2, &z2) - feMul(&x2, &x2, &z2) - feToBytes(out, &x2) -} diff --git a/vendor/golang.org/x/crypto/curve25519/curve25519_test.go b/vendor/golang.org/x/crypto/curve25519/curve25519_test.go deleted file mode 100644 index 051a8301..00000000 --- a/vendor/golang.org/x/crypto/curve25519/curve25519_test.go +++ /dev/null @@ -1,39 +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 curve25519 - -import ( - "fmt" - "testing" -) - -const expectedHex = "89161fde887b2b53de549af483940106ecc114d6982daa98256de23bdf77661a" - -func TestBaseScalarMult(t *testing.T) { - var a, b [32]byte - in := &a - out := &b - a[0] = 1 - - for i := 0; i < 200; i++ { - ScalarBaseMult(out, in) - in, out = out, in - } - - result := fmt.Sprintf("%x", in[:]) - if result != expectedHex { - t.Errorf("incorrect result: got %s, want %s", result, expectedHex) - } -} - -func BenchmarkScalarBaseMult(b *testing.B) { - var in, out [32]byte - in[0] = 1 - - b.SetBytes(32) - for i := 0; i < b.N; i++ { - ScalarBaseMult(&out, &in) - } -} diff --git a/vendor/golang.org/x/crypto/curve25519/doc.go b/vendor/golang.org/x/crypto/curve25519/doc.go deleted file mode 100644 index da9b10d9..00000000 --- a/vendor/golang.org/x/crypto/curve25519/doc.go +++ /dev/null @@ -1,23 +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 curve25519 provides an implementation of scalar multiplication on -// the elliptic curve known as curve25519. See https://cr.yp.to/ecdh.html -package curve25519 // import "golang.org/x/crypto/curve25519" - -// basePoint is the x coordinate of the generator of the curve. -var basePoint = [32]byte{9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - -// ScalarMult sets dst to the product in*base where dst and base are the x -// coordinates of group points and all values are in little-endian form. -func ScalarMult(dst, in, base *[32]byte) { - scalarMult(dst, in, base) -} - -// ScalarBaseMult sets dst to the product in*base where dst and base are the x -// coordinates of group points, base is the standard generator and all values -// are in little-endian form. -func ScalarBaseMult(dst, in *[32]byte) { - ScalarMult(dst, in, &basePoint) -} diff --git a/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s b/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s deleted file mode 100644 index 39081610..00000000 --- a/vendor/golang.org/x/crypto/curve25519/freeze_amd64.s +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This code was translated into a form compatible with 6a from the public -// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html - -// +build amd64,!gccgo,!appengine - -#include "const_amd64.h" - -// func freeze(inout *[5]uint64) -TEXT ·freeze(SB),7,$0-8 - MOVQ inout+0(FP), DI - - MOVQ 0(DI),SI - MOVQ 8(DI),DX - MOVQ 16(DI),CX - MOVQ 24(DI),R8 - MOVQ 32(DI),R9 - MOVQ $REDMASK51,AX - MOVQ AX,R10 - SUBQ $18,R10 - MOVQ $3,R11 -REDUCELOOP: - MOVQ SI,R12 - SHRQ $51,R12 - ANDQ AX,SI - ADDQ R12,DX - MOVQ DX,R12 - SHRQ $51,R12 - ANDQ AX,DX - ADDQ R12,CX - MOVQ CX,R12 - SHRQ $51,R12 - ANDQ AX,CX - ADDQ R12,R8 - MOVQ R8,R12 - SHRQ $51,R12 - ANDQ AX,R8 - ADDQ R12,R9 - MOVQ R9,R12 - SHRQ $51,R12 - ANDQ AX,R9 - IMUL3Q $19,R12,R12 - ADDQ R12,SI - SUBQ $1,R11 - JA REDUCELOOP - MOVQ $1,R12 - CMPQ R10,SI - CMOVQLT R11,R12 - CMPQ AX,DX - CMOVQNE R11,R12 - CMPQ AX,CX - CMOVQNE R11,R12 - CMPQ AX,R8 - CMOVQNE R11,R12 - CMPQ AX,R9 - CMOVQNE R11,R12 - NEGQ R12 - ANDQ R12,AX - ANDQ R12,R10 - SUBQ R10,SI - SUBQ AX,DX - SUBQ AX,CX - SUBQ AX,R8 - SUBQ AX,R9 - MOVQ SI,0(DI) - MOVQ DX,8(DI) - MOVQ CX,16(DI) - MOVQ R8,24(DI) - MOVQ R9,32(DI) - RET diff --git a/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s b/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s deleted file mode 100644 index 9e9040b2..00000000 --- a/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s +++ /dev/null @@ -1,1377 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This code was translated into a form compatible with 6a from the public -// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html - -// +build amd64,!gccgo,!appengine - -#include "const_amd64.h" - -// func ladderstep(inout *[5][5]uint64) -TEXT ·ladderstep(SB),0,$296-8 - MOVQ inout+0(FP),DI - - MOVQ 40(DI),SI - MOVQ 48(DI),DX - MOVQ 56(DI),CX - MOVQ 64(DI),R8 - MOVQ 72(DI),R9 - MOVQ SI,AX - MOVQ DX,R10 - MOVQ CX,R11 - MOVQ R8,R12 - MOVQ R9,R13 - ADDQ ·_2P0(SB),AX - ADDQ ·_2P1234(SB),R10 - ADDQ ·_2P1234(SB),R11 - ADDQ ·_2P1234(SB),R12 - ADDQ ·_2P1234(SB),R13 - ADDQ 80(DI),SI - ADDQ 88(DI),DX - ADDQ 96(DI),CX - ADDQ 104(DI),R8 - ADDQ 112(DI),R9 - SUBQ 80(DI),AX - SUBQ 88(DI),R10 - SUBQ 96(DI),R11 - SUBQ 104(DI),R12 - SUBQ 112(DI),R13 - MOVQ SI,0(SP) - MOVQ DX,8(SP) - MOVQ CX,16(SP) - MOVQ R8,24(SP) - MOVQ R9,32(SP) - MOVQ AX,40(SP) - MOVQ R10,48(SP) - MOVQ R11,56(SP) - MOVQ R12,64(SP) - MOVQ R13,72(SP) - MOVQ 40(SP),AX - MULQ 40(SP) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 40(SP),AX - SHLQ $1,AX - MULQ 48(SP) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 40(SP),AX - SHLQ $1,AX - MULQ 56(SP) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 40(SP),AX - SHLQ $1,AX - MULQ 64(SP) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 40(SP),AX - SHLQ $1,AX - MULQ 72(SP) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 48(SP),AX - MULQ 48(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 48(SP),AX - SHLQ $1,AX - MULQ 56(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 48(SP),AX - SHLQ $1,AX - MULQ 64(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 48(SP),DX - IMUL3Q $38,DX,AX - MULQ 72(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 56(SP),AX - MULQ 56(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 56(SP),DX - IMUL3Q $38,DX,AX - MULQ 64(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 56(SP),DX - IMUL3Q $38,DX,AX - MULQ 72(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 64(SP),DX - IMUL3Q $19,DX,AX - MULQ 64(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 64(SP),DX - IMUL3Q $38,DX,AX - MULQ 72(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 72(SP),DX - IMUL3Q $19,DX,AX - MULQ 72(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - ANDQ DX,SI - MOVQ CX,R8 - SHRQ $51,CX - ADDQ R10,CX - ANDQ DX,R8 - MOVQ CX,R9 - SHRQ $51,CX - ADDQ R12,CX - ANDQ DX,R9 - MOVQ CX,AX - SHRQ $51,CX - ADDQ R14,CX - ANDQ DX,AX - MOVQ CX,R10 - SHRQ $51,CX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,80(SP) - MOVQ R8,88(SP) - MOVQ R9,96(SP) - MOVQ AX,104(SP) - MOVQ R10,112(SP) - MOVQ 0(SP),AX - MULQ 0(SP) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 0(SP),AX - SHLQ $1,AX - MULQ 8(SP) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 0(SP),AX - SHLQ $1,AX - MULQ 16(SP) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 0(SP),AX - SHLQ $1,AX - MULQ 24(SP) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 0(SP),AX - SHLQ $1,AX - MULQ 32(SP) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 8(SP),AX - MULQ 8(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 8(SP),AX - SHLQ $1,AX - MULQ 16(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 8(SP),AX - SHLQ $1,AX - MULQ 24(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 8(SP),DX - IMUL3Q $38,DX,AX - MULQ 32(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 16(SP),AX - MULQ 16(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 16(SP),DX - IMUL3Q $38,DX,AX - MULQ 24(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 16(SP),DX - IMUL3Q $38,DX,AX - MULQ 32(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 24(SP),DX - IMUL3Q $19,DX,AX - MULQ 24(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 24(SP),DX - IMUL3Q $38,DX,AX - MULQ 32(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 32(SP),DX - IMUL3Q $19,DX,AX - MULQ 32(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - ANDQ DX,SI - MOVQ CX,R8 - SHRQ $51,CX - ADDQ R10,CX - ANDQ DX,R8 - MOVQ CX,R9 - SHRQ $51,CX - ADDQ R12,CX - ANDQ DX,R9 - MOVQ CX,AX - SHRQ $51,CX - ADDQ R14,CX - ANDQ DX,AX - MOVQ CX,R10 - SHRQ $51,CX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,120(SP) - MOVQ R8,128(SP) - MOVQ R9,136(SP) - MOVQ AX,144(SP) - MOVQ R10,152(SP) - MOVQ SI,SI - MOVQ R8,DX - MOVQ R9,CX - MOVQ AX,R8 - MOVQ R10,R9 - ADDQ ·_2P0(SB),SI - ADDQ ·_2P1234(SB),DX - ADDQ ·_2P1234(SB),CX - ADDQ ·_2P1234(SB),R8 - ADDQ ·_2P1234(SB),R9 - SUBQ 80(SP),SI - SUBQ 88(SP),DX - SUBQ 96(SP),CX - SUBQ 104(SP),R8 - SUBQ 112(SP),R9 - MOVQ SI,160(SP) - MOVQ DX,168(SP) - MOVQ CX,176(SP) - MOVQ R8,184(SP) - MOVQ R9,192(SP) - MOVQ 120(DI),SI - MOVQ 128(DI),DX - MOVQ 136(DI),CX - MOVQ 144(DI),R8 - MOVQ 152(DI),R9 - MOVQ SI,AX - MOVQ DX,R10 - MOVQ CX,R11 - MOVQ R8,R12 - MOVQ R9,R13 - ADDQ ·_2P0(SB),AX - ADDQ ·_2P1234(SB),R10 - ADDQ ·_2P1234(SB),R11 - ADDQ ·_2P1234(SB),R12 - ADDQ ·_2P1234(SB),R13 - ADDQ 160(DI),SI - ADDQ 168(DI),DX - ADDQ 176(DI),CX - ADDQ 184(DI),R8 - ADDQ 192(DI),R9 - SUBQ 160(DI),AX - SUBQ 168(DI),R10 - SUBQ 176(DI),R11 - SUBQ 184(DI),R12 - SUBQ 192(DI),R13 - MOVQ SI,200(SP) - MOVQ DX,208(SP) - MOVQ CX,216(SP) - MOVQ R8,224(SP) - MOVQ R9,232(SP) - MOVQ AX,240(SP) - MOVQ R10,248(SP) - MOVQ R11,256(SP) - MOVQ R12,264(SP) - MOVQ R13,272(SP) - MOVQ 224(SP),SI - IMUL3Q $19,SI,AX - MOVQ AX,280(SP) - MULQ 56(SP) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 232(SP),DX - IMUL3Q $19,DX,AX - MOVQ AX,288(SP) - MULQ 48(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 200(SP),AX - MULQ 40(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 200(SP),AX - MULQ 48(SP) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 200(SP),AX - MULQ 56(SP) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 200(SP),AX - MULQ 64(SP) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 200(SP),AX - MULQ 72(SP) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 208(SP),AX - MULQ 40(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 208(SP),AX - MULQ 48(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 208(SP),AX - MULQ 56(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 208(SP),AX - MULQ 64(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 208(SP),DX - IMUL3Q $19,DX,AX - MULQ 72(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 216(SP),AX - MULQ 40(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 216(SP),AX - MULQ 48(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 216(SP),AX - MULQ 56(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 216(SP),DX - IMUL3Q $19,DX,AX - MULQ 64(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 216(SP),DX - IMUL3Q $19,DX,AX - MULQ 72(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 224(SP),AX - MULQ 40(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 224(SP),AX - MULQ 48(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 280(SP),AX - MULQ 64(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 280(SP),AX - MULQ 72(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 232(SP),AX - MULQ 40(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 288(SP),AX - MULQ 56(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 288(SP),AX - MULQ 64(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 288(SP),AX - MULQ 72(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - MOVQ CX,R8 - SHRQ $51,CX - ANDQ DX,SI - ADDQ R10,CX - MOVQ CX,R9 - SHRQ $51,CX - ANDQ DX,R8 - ADDQ R12,CX - MOVQ CX,AX - SHRQ $51,CX - ANDQ DX,R9 - ADDQ R14,CX - MOVQ CX,R10 - SHRQ $51,CX - ANDQ DX,AX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,40(SP) - MOVQ R8,48(SP) - MOVQ R9,56(SP) - MOVQ AX,64(SP) - MOVQ R10,72(SP) - MOVQ 264(SP),SI - IMUL3Q $19,SI,AX - MOVQ AX,200(SP) - MULQ 16(SP) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 272(SP),DX - IMUL3Q $19,DX,AX - MOVQ AX,208(SP) - MULQ 8(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 240(SP),AX - MULQ 0(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 240(SP),AX - MULQ 8(SP) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 240(SP),AX - MULQ 16(SP) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 240(SP),AX - MULQ 24(SP) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 240(SP),AX - MULQ 32(SP) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 248(SP),AX - MULQ 0(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 248(SP),AX - MULQ 8(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 248(SP),AX - MULQ 16(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 248(SP),AX - MULQ 24(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 248(SP),DX - IMUL3Q $19,DX,AX - MULQ 32(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 256(SP),AX - MULQ 0(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 256(SP),AX - MULQ 8(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 256(SP),AX - MULQ 16(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 256(SP),DX - IMUL3Q $19,DX,AX - MULQ 24(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 256(SP),DX - IMUL3Q $19,DX,AX - MULQ 32(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 264(SP),AX - MULQ 0(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 264(SP),AX - MULQ 8(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 200(SP),AX - MULQ 24(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 200(SP),AX - MULQ 32(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 272(SP),AX - MULQ 0(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 208(SP),AX - MULQ 16(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 208(SP),AX - MULQ 24(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 208(SP),AX - MULQ 32(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - MOVQ CX,R8 - SHRQ $51,CX - ANDQ DX,SI - ADDQ R10,CX - MOVQ CX,R9 - SHRQ $51,CX - ANDQ DX,R8 - ADDQ R12,CX - MOVQ CX,AX - SHRQ $51,CX - ANDQ DX,R9 - ADDQ R14,CX - MOVQ CX,R10 - SHRQ $51,CX - ANDQ DX,AX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,DX - MOVQ R8,CX - MOVQ R9,R11 - MOVQ AX,R12 - MOVQ R10,R13 - ADDQ ·_2P0(SB),DX - ADDQ ·_2P1234(SB),CX - ADDQ ·_2P1234(SB),R11 - ADDQ ·_2P1234(SB),R12 - ADDQ ·_2P1234(SB),R13 - ADDQ 40(SP),SI - ADDQ 48(SP),R8 - ADDQ 56(SP),R9 - ADDQ 64(SP),AX - ADDQ 72(SP),R10 - SUBQ 40(SP),DX - SUBQ 48(SP),CX - SUBQ 56(SP),R11 - SUBQ 64(SP),R12 - SUBQ 72(SP),R13 - MOVQ SI,120(DI) - MOVQ R8,128(DI) - MOVQ R9,136(DI) - MOVQ AX,144(DI) - MOVQ R10,152(DI) - MOVQ DX,160(DI) - MOVQ CX,168(DI) - MOVQ R11,176(DI) - MOVQ R12,184(DI) - MOVQ R13,192(DI) - MOVQ 120(DI),AX - MULQ 120(DI) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 120(DI),AX - SHLQ $1,AX - MULQ 128(DI) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 120(DI),AX - SHLQ $1,AX - MULQ 136(DI) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 120(DI),AX - SHLQ $1,AX - MULQ 144(DI) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 120(DI),AX - SHLQ $1,AX - MULQ 152(DI) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 128(DI),AX - MULQ 128(DI) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 128(DI),AX - SHLQ $1,AX - MULQ 136(DI) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 128(DI),AX - SHLQ $1,AX - MULQ 144(DI) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 128(DI),DX - IMUL3Q $38,DX,AX - MULQ 152(DI) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 136(DI),AX - MULQ 136(DI) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 136(DI),DX - IMUL3Q $38,DX,AX - MULQ 144(DI) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 136(DI),DX - IMUL3Q $38,DX,AX - MULQ 152(DI) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 144(DI),DX - IMUL3Q $19,DX,AX - MULQ 144(DI) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 144(DI),DX - IMUL3Q $38,DX,AX - MULQ 152(DI) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 152(DI),DX - IMUL3Q $19,DX,AX - MULQ 152(DI) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - ANDQ DX,SI - MOVQ CX,R8 - SHRQ $51,CX - ADDQ R10,CX - ANDQ DX,R8 - MOVQ CX,R9 - SHRQ $51,CX - ADDQ R12,CX - ANDQ DX,R9 - MOVQ CX,AX - SHRQ $51,CX - ADDQ R14,CX - ANDQ DX,AX - MOVQ CX,R10 - SHRQ $51,CX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,120(DI) - MOVQ R8,128(DI) - MOVQ R9,136(DI) - MOVQ AX,144(DI) - MOVQ R10,152(DI) - MOVQ 160(DI),AX - MULQ 160(DI) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 160(DI),AX - SHLQ $1,AX - MULQ 168(DI) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 160(DI),AX - SHLQ $1,AX - MULQ 176(DI) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 160(DI),AX - SHLQ $1,AX - MULQ 184(DI) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 160(DI),AX - SHLQ $1,AX - MULQ 192(DI) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 168(DI),AX - MULQ 168(DI) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 168(DI),AX - SHLQ $1,AX - MULQ 176(DI) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 168(DI),AX - SHLQ $1,AX - MULQ 184(DI) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 168(DI),DX - IMUL3Q $38,DX,AX - MULQ 192(DI) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 176(DI),AX - MULQ 176(DI) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 176(DI),DX - IMUL3Q $38,DX,AX - MULQ 184(DI) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 176(DI),DX - IMUL3Q $38,DX,AX - MULQ 192(DI) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 184(DI),DX - IMUL3Q $19,DX,AX - MULQ 184(DI) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 184(DI),DX - IMUL3Q $38,DX,AX - MULQ 192(DI) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 192(DI),DX - IMUL3Q $19,DX,AX - MULQ 192(DI) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - ANDQ DX,SI - MOVQ CX,R8 - SHRQ $51,CX - ADDQ R10,CX - ANDQ DX,R8 - MOVQ CX,R9 - SHRQ $51,CX - ADDQ R12,CX - ANDQ DX,R9 - MOVQ CX,AX - SHRQ $51,CX - ADDQ R14,CX - ANDQ DX,AX - MOVQ CX,R10 - SHRQ $51,CX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,160(DI) - MOVQ R8,168(DI) - MOVQ R9,176(DI) - MOVQ AX,184(DI) - MOVQ R10,192(DI) - MOVQ 184(DI),SI - IMUL3Q $19,SI,AX - MOVQ AX,0(SP) - MULQ 16(DI) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 192(DI),DX - IMUL3Q $19,DX,AX - MOVQ AX,8(SP) - MULQ 8(DI) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 160(DI),AX - MULQ 0(DI) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 160(DI),AX - MULQ 8(DI) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 160(DI),AX - MULQ 16(DI) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 160(DI),AX - MULQ 24(DI) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 160(DI),AX - MULQ 32(DI) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 168(DI),AX - MULQ 0(DI) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 168(DI),AX - MULQ 8(DI) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 168(DI),AX - MULQ 16(DI) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 168(DI),AX - MULQ 24(DI) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 168(DI),DX - IMUL3Q $19,DX,AX - MULQ 32(DI) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 176(DI),AX - MULQ 0(DI) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 176(DI),AX - MULQ 8(DI) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 176(DI),AX - MULQ 16(DI) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 176(DI),DX - IMUL3Q $19,DX,AX - MULQ 24(DI) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 176(DI),DX - IMUL3Q $19,DX,AX - MULQ 32(DI) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 184(DI),AX - MULQ 0(DI) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 184(DI),AX - MULQ 8(DI) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 0(SP),AX - MULQ 24(DI) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 0(SP),AX - MULQ 32(DI) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 192(DI),AX - MULQ 0(DI) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 8(SP),AX - MULQ 16(DI) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 8(SP),AX - MULQ 24(DI) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 8(SP),AX - MULQ 32(DI) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - MOVQ CX,R8 - SHRQ $51,CX - ANDQ DX,SI - ADDQ R10,CX - MOVQ CX,R9 - SHRQ $51,CX - ANDQ DX,R8 - ADDQ R12,CX - MOVQ CX,AX - SHRQ $51,CX - ANDQ DX,R9 - ADDQ R14,CX - MOVQ CX,R10 - SHRQ $51,CX - ANDQ DX,AX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,160(DI) - MOVQ R8,168(DI) - MOVQ R9,176(DI) - MOVQ AX,184(DI) - MOVQ R10,192(DI) - MOVQ 144(SP),SI - IMUL3Q $19,SI,AX - MOVQ AX,0(SP) - MULQ 96(SP) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 152(SP),DX - IMUL3Q $19,DX,AX - MOVQ AX,8(SP) - MULQ 88(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 120(SP),AX - MULQ 80(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 120(SP),AX - MULQ 88(SP) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 120(SP),AX - MULQ 96(SP) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 120(SP),AX - MULQ 104(SP) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 120(SP),AX - MULQ 112(SP) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 128(SP),AX - MULQ 80(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 128(SP),AX - MULQ 88(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 128(SP),AX - MULQ 96(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 128(SP),AX - MULQ 104(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 128(SP),DX - IMUL3Q $19,DX,AX - MULQ 112(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 136(SP),AX - MULQ 80(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 136(SP),AX - MULQ 88(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 136(SP),AX - MULQ 96(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 136(SP),DX - IMUL3Q $19,DX,AX - MULQ 104(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 136(SP),DX - IMUL3Q $19,DX,AX - MULQ 112(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 144(SP),AX - MULQ 80(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 144(SP),AX - MULQ 88(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 0(SP),AX - MULQ 104(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 0(SP),AX - MULQ 112(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 152(SP),AX - MULQ 80(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 8(SP),AX - MULQ 96(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 8(SP),AX - MULQ 104(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 8(SP),AX - MULQ 112(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - MOVQ CX,R8 - SHRQ $51,CX - ANDQ DX,SI - ADDQ R10,CX - MOVQ CX,R9 - SHRQ $51,CX - ANDQ DX,R8 - ADDQ R12,CX - MOVQ CX,AX - SHRQ $51,CX - ANDQ DX,R9 - ADDQ R14,CX - MOVQ CX,R10 - SHRQ $51,CX - ANDQ DX,AX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,40(DI) - MOVQ R8,48(DI) - MOVQ R9,56(DI) - MOVQ AX,64(DI) - MOVQ R10,72(DI) - MOVQ 160(SP),AX - MULQ ·_121666_213(SB) - SHRQ $13,AX - MOVQ AX,SI - MOVQ DX,CX - MOVQ 168(SP),AX - MULQ ·_121666_213(SB) - SHRQ $13,AX - ADDQ AX,CX - MOVQ DX,R8 - MOVQ 176(SP),AX - MULQ ·_121666_213(SB) - SHRQ $13,AX - ADDQ AX,R8 - MOVQ DX,R9 - MOVQ 184(SP),AX - MULQ ·_121666_213(SB) - SHRQ $13,AX - ADDQ AX,R9 - MOVQ DX,R10 - MOVQ 192(SP),AX - MULQ ·_121666_213(SB) - SHRQ $13,AX - ADDQ AX,R10 - IMUL3Q $19,DX,DX - ADDQ DX,SI - ADDQ 80(SP),SI - ADDQ 88(SP),CX - ADDQ 96(SP),R8 - ADDQ 104(SP),R9 - ADDQ 112(SP),R10 - MOVQ SI,80(DI) - MOVQ CX,88(DI) - MOVQ R8,96(DI) - MOVQ R9,104(DI) - MOVQ R10,112(DI) - MOVQ 104(DI),SI - IMUL3Q $19,SI,AX - MOVQ AX,0(SP) - MULQ 176(SP) - MOVQ AX,SI - MOVQ DX,CX - MOVQ 112(DI),DX - IMUL3Q $19,DX,AX - MOVQ AX,8(SP) - MULQ 168(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 80(DI),AX - MULQ 160(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 80(DI),AX - MULQ 168(SP) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 80(DI),AX - MULQ 176(SP) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 80(DI),AX - MULQ 184(SP) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 80(DI),AX - MULQ 192(SP) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 88(DI),AX - MULQ 160(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 88(DI),AX - MULQ 168(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 88(DI),AX - MULQ 176(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 88(DI),AX - MULQ 184(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 88(DI),DX - IMUL3Q $19,DX,AX - MULQ 192(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 96(DI),AX - MULQ 160(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 96(DI),AX - MULQ 168(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 96(DI),AX - MULQ 176(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 96(DI),DX - IMUL3Q $19,DX,AX - MULQ 184(SP) - ADDQ AX,SI - ADCQ DX,CX - MOVQ 96(DI),DX - IMUL3Q $19,DX,AX - MULQ 192(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 104(DI),AX - MULQ 160(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 104(DI),AX - MULQ 168(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 0(SP),AX - MULQ 184(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 0(SP),AX - MULQ 192(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 112(DI),AX - MULQ 160(SP) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 8(SP),AX - MULQ 176(SP) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 8(SP),AX - MULQ 184(SP) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 8(SP),AX - MULQ 192(SP) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ $REDMASK51,DX - SHLQ $13,CX:SI - ANDQ DX,SI - SHLQ $13,R9:R8 - ANDQ DX,R8 - ADDQ CX,R8 - SHLQ $13,R11:R10 - ANDQ DX,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ DX,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ DX,R14 - ADDQ R13,R14 - IMUL3Q $19,R15,CX - ADDQ CX,SI - MOVQ SI,CX - SHRQ $51,CX - ADDQ R8,CX - MOVQ CX,R8 - SHRQ $51,CX - ANDQ DX,SI - ADDQ R10,CX - MOVQ CX,R9 - SHRQ $51,CX - ANDQ DX,R8 - ADDQ R12,CX - MOVQ CX,AX - SHRQ $51,CX - ANDQ DX,R9 - ADDQ R14,CX - MOVQ CX,R10 - SHRQ $51,CX - ANDQ DX,AX - IMUL3Q $19,CX,CX - ADDQ CX,SI - ANDQ DX,R10 - MOVQ SI,80(DI) - MOVQ R8,88(DI) - MOVQ R9,96(DI) - MOVQ AX,104(DI) - MOVQ R10,112(DI) - RET diff --git a/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go b/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go deleted file mode 100644 index 5822bd53..00000000 --- a/vendor/golang.org/x/crypto/curve25519/mont25519_amd64.go +++ /dev/null @@ -1,240 +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. - -// +build amd64,!gccgo,!appengine - -package curve25519 - -// These functions are implemented in the .s files. The names of the functions -// in the rest of the file are also taken from the SUPERCOP sources to help -// people following along. - -//go:noescape - -func cswap(inout *[5]uint64, v uint64) - -//go:noescape - -func ladderstep(inout *[5][5]uint64) - -//go:noescape - -func freeze(inout *[5]uint64) - -//go:noescape - -func mul(dest, a, b *[5]uint64) - -//go:noescape - -func square(out, in *[5]uint64) - -// mladder uses a Montgomery ladder to calculate (xr/zr) *= s. -func mladder(xr, zr *[5]uint64, s *[32]byte) { - var work [5][5]uint64 - - work[0] = *xr - setint(&work[1], 1) - setint(&work[2], 0) - work[3] = *xr - setint(&work[4], 1) - - j := uint(6) - var prevbit byte - - for i := 31; i >= 0; i-- { - for j < 8 { - bit := ((*s)[i] >> j) & 1 - swap := bit ^ prevbit - prevbit = bit - cswap(&work[1], uint64(swap)) - ladderstep(&work) - j-- - } - j = 7 - } - - *xr = work[1] - *zr = work[2] -} - -func scalarMult(out, in, base *[32]byte) { - var e [32]byte - copy(e[:], (*in)[:]) - e[0] &= 248 - e[31] &= 127 - e[31] |= 64 - - var t, z [5]uint64 - unpack(&t, base) - mladder(&t, &z, &e) - invert(&z, &z) - mul(&t, &t, &z) - pack(out, &t) -} - -func setint(r *[5]uint64, v uint64) { - r[0] = v - r[1] = 0 - r[2] = 0 - r[3] = 0 - r[4] = 0 -} - -// unpack sets r = x where r consists of 5, 51-bit limbs in little-endian -// order. -func unpack(r *[5]uint64, x *[32]byte) { - r[0] = uint64(x[0]) | - uint64(x[1])<<8 | - uint64(x[2])<<16 | - uint64(x[3])<<24 | - uint64(x[4])<<32 | - uint64(x[5])<<40 | - uint64(x[6]&7)<<48 - - r[1] = uint64(x[6])>>3 | - uint64(x[7])<<5 | - uint64(x[8])<<13 | - uint64(x[9])<<21 | - uint64(x[10])<<29 | - uint64(x[11])<<37 | - uint64(x[12]&63)<<45 - - r[2] = uint64(x[12])>>6 | - uint64(x[13])<<2 | - uint64(x[14])<<10 | - uint64(x[15])<<18 | - uint64(x[16])<<26 | - uint64(x[17])<<34 | - uint64(x[18])<<42 | - uint64(x[19]&1)<<50 - - r[3] = uint64(x[19])>>1 | - uint64(x[20])<<7 | - uint64(x[21])<<15 | - uint64(x[22])<<23 | - uint64(x[23])<<31 | - uint64(x[24])<<39 | - uint64(x[25]&15)<<47 - - r[4] = uint64(x[25])>>4 | - uint64(x[26])<<4 | - uint64(x[27])<<12 | - uint64(x[28])<<20 | - uint64(x[29])<<28 | - uint64(x[30])<<36 | - uint64(x[31]&127)<<44 -} - -// pack sets out = x where out is the usual, little-endian form of the 5, -// 51-bit limbs in x. -func pack(out *[32]byte, x *[5]uint64) { - t := *x - freeze(&t) - - out[0] = byte(t[0]) - out[1] = byte(t[0] >> 8) - out[2] = byte(t[0] >> 16) - out[3] = byte(t[0] >> 24) - out[4] = byte(t[0] >> 32) - out[5] = byte(t[0] >> 40) - out[6] = byte(t[0] >> 48) - - out[6] ^= byte(t[1]<<3) & 0xf8 - out[7] = byte(t[1] >> 5) - out[8] = byte(t[1] >> 13) - out[9] = byte(t[1] >> 21) - out[10] = byte(t[1] >> 29) - out[11] = byte(t[1] >> 37) - out[12] = byte(t[1] >> 45) - - out[12] ^= byte(t[2]<<6) & 0xc0 - out[13] = byte(t[2] >> 2) - out[14] = byte(t[2] >> 10) - out[15] = byte(t[2] >> 18) - out[16] = byte(t[2] >> 26) - out[17] = byte(t[2] >> 34) - out[18] = byte(t[2] >> 42) - out[19] = byte(t[2] >> 50) - - out[19] ^= byte(t[3]<<1) & 0xfe - out[20] = byte(t[3] >> 7) - out[21] = byte(t[3] >> 15) - out[22] = byte(t[3] >> 23) - out[23] = byte(t[3] >> 31) - out[24] = byte(t[3] >> 39) - out[25] = byte(t[3] >> 47) - - out[25] ^= byte(t[4]<<4) & 0xf0 - out[26] = byte(t[4] >> 4) - out[27] = byte(t[4] >> 12) - out[28] = byte(t[4] >> 20) - out[29] = byte(t[4] >> 28) - out[30] = byte(t[4] >> 36) - out[31] = byte(t[4] >> 44) -} - -// invert calculates r = x^-1 mod p using Fermat's little theorem. -func invert(r *[5]uint64, x *[5]uint64) { - var z2, z9, z11, z2_5_0, z2_10_0, z2_20_0, z2_50_0, z2_100_0, t [5]uint64 - - square(&z2, x) /* 2 */ - square(&t, &z2) /* 4 */ - square(&t, &t) /* 8 */ - mul(&z9, &t, x) /* 9 */ - mul(&z11, &z9, &z2) /* 11 */ - square(&t, &z11) /* 22 */ - mul(&z2_5_0, &t, &z9) /* 2^5 - 2^0 = 31 */ - - square(&t, &z2_5_0) /* 2^6 - 2^1 */ - for i := 1; i < 5; i++ { /* 2^20 - 2^10 */ - square(&t, &t) - } - mul(&z2_10_0, &t, &z2_5_0) /* 2^10 - 2^0 */ - - square(&t, &z2_10_0) /* 2^11 - 2^1 */ - for i := 1; i < 10; i++ { /* 2^20 - 2^10 */ - square(&t, &t) - } - mul(&z2_20_0, &t, &z2_10_0) /* 2^20 - 2^0 */ - - square(&t, &z2_20_0) /* 2^21 - 2^1 */ - for i := 1; i < 20; i++ { /* 2^40 - 2^20 */ - square(&t, &t) - } - mul(&t, &t, &z2_20_0) /* 2^40 - 2^0 */ - - square(&t, &t) /* 2^41 - 2^1 */ - for i := 1; i < 10; i++ { /* 2^50 - 2^10 */ - square(&t, &t) - } - mul(&z2_50_0, &t, &z2_10_0) /* 2^50 - 2^0 */ - - square(&t, &z2_50_0) /* 2^51 - 2^1 */ - for i := 1; i < 50; i++ { /* 2^100 - 2^50 */ - square(&t, &t) - } - mul(&z2_100_0, &t, &z2_50_0) /* 2^100 - 2^0 */ - - square(&t, &z2_100_0) /* 2^101 - 2^1 */ - for i := 1; i < 100; i++ { /* 2^200 - 2^100 */ - square(&t, &t) - } - mul(&t, &t, &z2_100_0) /* 2^200 - 2^0 */ - - square(&t, &t) /* 2^201 - 2^1 */ - for i := 1; i < 50; i++ { /* 2^250 - 2^50 */ - square(&t, &t) - } - mul(&t, &t, &z2_50_0) /* 2^250 - 2^0 */ - - square(&t, &t) /* 2^251 - 2^1 */ - square(&t, &t) /* 2^252 - 2^2 */ - square(&t, &t) /* 2^253 - 2^3 */ - - square(&t, &t) /* 2^254 - 2^4 */ - - square(&t, &t) /* 2^255 - 2^5 */ - mul(r, &t, &z11) /* 2^255 - 21 */ -} diff --git a/vendor/golang.org/x/crypto/curve25519/mul_amd64.s b/vendor/golang.org/x/crypto/curve25519/mul_amd64.s deleted file mode 100644 index 5ce80a2e..00000000 --- a/vendor/golang.org/x/crypto/curve25519/mul_amd64.s +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This code was translated into a form compatible with 6a from the public -// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html - -// +build amd64,!gccgo,!appengine - -#include "const_amd64.h" - -// func mul(dest, a, b *[5]uint64) -TEXT ·mul(SB),0,$16-24 - MOVQ dest+0(FP), DI - MOVQ a+8(FP), SI - MOVQ b+16(FP), DX - - MOVQ DX,CX - MOVQ 24(SI),DX - IMUL3Q $19,DX,AX - MOVQ AX,0(SP) - MULQ 16(CX) - MOVQ AX,R8 - MOVQ DX,R9 - MOVQ 32(SI),DX - IMUL3Q $19,DX,AX - MOVQ AX,8(SP) - MULQ 8(CX) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 0(SI),AX - MULQ 0(CX) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 0(SI),AX - MULQ 8(CX) - MOVQ AX,R10 - MOVQ DX,R11 - MOVQ 0(SI),AX - MULQ 16(CX) - MOVQ AX,R12 - MOVQ DX,R13 - MOVQ 0(SI),AX - MULQ 24(CX) - MOVQ AX,R14 - MOVQ DX,R15 - MOVQ 0(SI),AX - MULQ 32(CX) - MOVQ AX,BX - MOVQ DX,BP - MOVQ 8(SI),AX - MULQ 0(CX) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 8(SI),AX - MULQ 8(CX) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 8(SI),AX - MULQ 16(CX) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 8(SI),AX - MULQ 24(CX) - ADDQ AX,BX - ADCQ DX,BP - MOVQ 8(SI),DX - IMUL3Q $19,DX,AX - MULQ 32(CX) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 16(SI),AX - MULQ 0(CX) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 16(SI),AX - MULQ 8(CX) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 16(SI),AX - MULQ 16(CX) - ADDQ AX,BX - ADCQ DX,BP - MOVQ 16(SI),DX - IMUL3Q $19,DX,AX - MULQ 24(CX) - ADDQ AX,R8 - ADCQ DX,R9 - MOVQ 16(SI),DX - IMUL3Q $19,DX,AX - MULQ 32(CX) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 24(SI),AX - MULQ 0(CX) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ 24(SI),AX - MULQ 8(CX) - ADDQ AX,BX - ADCQ DX,BP - MOVQ 0(SP),AX - MULQ 24(CX) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 0(SP),AX - MULQ 32(CX) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 32(SI),AX - MULQ 0(CX) - ADDQ AX,BX - ADCQ DX,BP - MOVQ 8(SP),AX - MULQ 16(CX) - ADDQ AX,R10 - ADCQ DX,R11 - MOVQ 8(SP),AX - MULQ 24(CX) - ADDQ AX,R12 - ADCQ DX,R13 - MOVQ 8(SP),AX - MULQ 32(CX) - ADDQ AX,R14 - ADCQ DX,R15 - MOVQ $REDMASK51,SI - SHLQ $13,R9:R8 - ANDQ SI,R8 - SHLQ $13,R11:R10 - ANDQ SI,R10 - ADDQ R9,R10 - SHLQ $13,R13:R12 - ANDQ SI,R12 - ADDQ R11,R12 - SHLQ $13,R15:R14 - ANDQ SI,R14 - ADDQ R13,R14 - SHLQ $13,BP:BX - ANDQ SI,BX - ADDQ R15,BX - IMUL3Q $19,BP,DX - ADDQ DX,R8 - MOVQ R8,DX - SHRQ $51,DX - ADDQ R10,DX - MOVQ DX,CX - SHRQ $51,DX - ANDQ SI,R8 - ADDQ R12,DX - MOVQ DX,R9 - SHRQ $51,DX - ANDQ SI,CX - ADDQ R14,DX - MOVQ DX,AX - SHRQ $51,DX - ANDQ SI,R9 - ADDQ BX,DX - MOVQ DX,R10 - SHRQ $51,DX - ANDQ SI,AX - IMUL3Q $19,DX,DX - ADDQ DX,R8 - ANDQ SI,R10 - MOVQ R8,0(DI) - MOVQ CX,8(DI) - MOVQ R9,16(DI) - MOVQ AX,24(DI) - MOVQ R10,32(DI) - RET diff --git a/vendor/golang.org/x/crypto/curve25519/square_amd64.s b/vendor/golang.org/x/crypto/curve25519/square_amd64.s deleted file mode 100644 index 12f73734..00000000 --- a/vendor/golang.org/x/crypto/curve25519/square_amd64.s +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This code was translated into a form compatible with 6a from the public -// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html - -// +build amd64,!gccgo,!appengine - -#include "const_amd64.h" - -// func square(out, in *[5]uint64) -TEXT ·square(SB),7,$0-16 - MOVQ out+0(FP), DI - MOVQ in+8(FP), SI - - MOVQ 0(SI),AX - MULQ 0(SI) - MOVQ AX,CX - MOVQ DX,R8 - MOVQ 0(SI),AX - SHLQ $1,AX - MULQ 8(SI) - MOVQ AX,R9 - MOVQ DX,R10 - MOVQ 0(SI),AX - SHLQ $1,AX - MULQ 16(SI) - MOVQ AX,R11 - MOVQ DX,R12 - MOVQ 0(SI),AX - SHLQ $1,AX - MULQ 24(SI) - MOVQ AX,R13 - MOVQ DX,R14 - MOVQ 0(SI),AX - SHLQ $1,AX - MULQ 32(SI) - MOVQ AX,R15 - MOVQ DX,BX - MOVQ 8(SI),AX - MULQ 8(SI) - ADDQ AX,R11 - ADCQ DX,R12 - MOVQ 8(SI),AX - SHLQ $1,AX - MULQ 16(SI) - ADDQ AX,R13 - ADCQ DX,R14 - MOVQ 8(SI),AX - SHLQ $1,AX - MULQ 24(SI) - ADDQ AX,R15 - ADCQ DX,BX - MOVQ 8(SI),DX - IMUL3Q $38,DX,AX - MULQ 32(SI) - ADDQ AX,CX - ADCQ DX,R8 - MOVQ 16(SI),AX - MULQ 16(SI) - ADDQ AX,R15 - ADCQ DX,BX - MOVQ 16(SI),DX - IMUL3Q $38,DX,AX - MULQ 24(SI) - ADDQ AX,CX - ADCQ DX,R8 - MOVQ 16(SI),DX - IMUL3Q $38,DX,AX - MULQ 32(SI) - ADDQ AX,R9 - ADCQ DX,R10 - MOVQ 24(SI),DX - IMUL3Q $19,DX,AX - MULQ 24(SI) - ADDQ AX,R9 - ADCQ DX,R10 - MOVQ 24(SI),DX - IMUL3Q $38,DX,AX - MULQ 32(SI) - ADDQ AX,R11 - ADCQ DX,R12 - MOVQ 32(SI),DX - IMUL3Q $19,DX,AX - MULQ 32(SI) - ADDQ AX,R13 - ADCQ DX,R14 - MOVQ $REDMASK51,SI - SHLQ $13,R8:CX - ANDQ SI,CX - SHLQ $13,R10:R9 - ANDQ SI,R9 - ADDQ R8,R9 - SHLQ $13,R12:R11 - ANDQ SI,R11 - ADDQ R10,R11 - SHLQ $13,R14:R13 - ANDQ SI,R13 - ADDQ R12,R13 - SHLQ $13,BX:R15 - ANDQ SI,R15 - ADDQ R14,R15 - IMUL3Q $19,BX,DX - ADDQ DX,CX - MOVQ CX,DX - SHRQ $51,DX - ADDQ R9,DX - ANDQ SI,CX - MOVQ DX,R8 - SHRQ $51,DX - ADDQ R11,DX - ANDQ SI,R8 - MOVQ DX,R9 - SHRQ $51,DX - ADDQ R13,DX - ANDQ SI,R9 - MOVQ DX,AX - SHRQ $51,DX - ADDQ R15,DX - ANDQ SI,AX - MOVQ DX,R10 - SHRQ $51,DX - IMUL3Q $19,DX,DX - ADDQ DX,CX - ANDQ SI,R10 - MOVQ CX,0(DI) - MOVQ R8,8(DI) - MOVQ R9,16(DI) - MOVQ AX,24(DI) - MOVQ R10,32(DI) - RET diff --git a/vendor/golang.org/x/crypto/ed25519/ed25519.go b/vendor/golang.org/x/crypto/ed25519/ed25519.go deleted file mode 100644 index 4f26b49b..00000000 --- a/vendor/golang.org/x/crypto/ed25519/ed25519.go +++ /dev/null @@ -1,181 +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 ed25519 implements the Ed25519 signature algorithm. See -// https://ed25519.cr.yp.to/. -// -// These functions are also compatible with the “Ed25519” function defined in -// RFC 8032. -package ed25519 - -// This code is a port of the public domain, “ref10” implementation of ed25519 -// from SUPERCOP. - -import ( - "bytes" - "crypto" - cryptorand "crypto/rand" - "crypto/sha512" - "errors" - "io" - "strconv" - - "golang.org/x/crypto/ed25519/internal/edwards25519" -) - -const ( - // PublicKeySize is the size, in bytes, of public keys as used in this package. - PublicKeySize = 32 - // PrivateKeySize is the size, in bytes, of private keys as used in this package. - PrivateKeySize = 64 - // SignatureSize is the size, in bytes, of signatures generated and verified by this package. - SignatureSize = 64 -) - -// PublicKey is the type of Ed25519 public keys. -type PublicKey []byte - -// PrivateKey is the type of Ed25519 private keys. It implements crypto.Signer. -type PrivateKey []byte - -// Public returns the PublicKey corresponding to priv. -func (priv PrivateKey) Public() crypto.PublicKey { - publicKey := make([]byte, PublicKeySize) - copy(publicKey, priv[32:]) - return PublicKey(publicKey) -} - -// Sign signs the given message with priv. -// Ed25519 performs two passes over messages to be signed and therefore cannot -// handle pre-hashed messages. Thus opts.HashFunc() must return zero to -// indicate the message hasn't been hashed. This can be achieved by passing -// crypto.Hash(0) as the value for opts. -func (priv PrivateKey) Sign(rand io.Reader, message []byte, opts crypto.SignerOpts) (signature []byte, err error) { - if opts.HashFunc() != crypto.Hash(0) { - return nil, errors.New("ed25519: cannot sign hashed message") - } - - return Sign(priv, message), nil -} - -// GenerateKey generates a public/private key pair using entropy from rand. -// If rand is nil, crypto/rand.Reader will be used. -func GenerateKey(rand io.Reader) (publicKey PublicKey, privateKey PrivateKey, err error) { - if rand == nil { - rand = cryptorand.Reader - } - - privateKey = make([]byte, PrivateKeySize) - publicKey = make([]byte, PublicKeySize) - _, err = io.ReadFull(rand, privateKey[:32]) - if err != nil { - return nil, nil, err - } - - digest := sha512.Sum512(privateKey[:32]) - digest[0] &= 248 - digest[31] &= 127 - digest[31] |= 64 - - var A edwards25519.ExtendedGroupElement - var hBytes [32]byte - copy(hBytes[:], digest[:]) - edwards25519.GeScalarMultBase(&A, &hBytes) - var publicKeyBytes [32]byte - A.ToBytes(&publicKeyBytes) - - copy(privateKey[32:], publicKeyBytes[:]) - copy(publicKey, publicKeyBytes[:]) - - return publicKey, privateKey, nil -} - -// Sign signs the message with privateKey and returns a signature. It will -// panic if len(privateKey) is not PrivateKeySize. -func Sign(privateKey PrivateKey, message []byte) []byte { - if l := len(privateKey); l != PrivateKeySize { - panic("ed25519: bad private key length: " + strconv.Itoa(l)) - } - - h := sha512.New() - h.Write(privateKey[:32]) - - var digest1, messageDigest, hramDigest [64]byte - var expandedSecretKey [32]byte - h.Sum(digest1[:0]) - copy(expandedSecretKey[:], digest1[:]) - expandedSecretKey[0] &= 248 - expandedSecretKey[31] &= 63 - expandedSecretKey[31] |= 64 - - h.Reset() - h.Write(digest1[32:]) - h.Write(message) - h.Sum(messageDigest[:0]) - - var messageDigestReduced [32]byte - edwards25519.ScReduce(&messageDigestReduced, &messageDigest) - var R edwards25519.ExtendedGroupElement - edwards25519.GeScalarMultBase(&R, &messageDigestReduced) - - var encodedR [32]byte - R.ToBytes(&encodedR) - - h.Reset() - h.Write(encodedR[:]) - h.Write(privateKey[32:]) - h.Write(message) - h.Sum(hramDigest[:0]) - var hramDigestReduced [32]byte - edwards25519.ScReduce(&hramDigestReduced, &hramDigest) - - var s [32]byte - edwards25519.ScMulAdd(&s, &hramDigestReduced, &expandedSecretKey, &messageDigestReduced) - - signature := make([]byte, SignatureSize) - copy(signature[:], encodedR[:]) - copy(signature[32:], s[:]) - - return signature -} - -// Verify reports whether sig is a valid signature of message by publicKey. It -// will panic if len(publicKey) is not PublicKeySize. -func Verify(publicKey PublicKey, message, sig []byte) bool { - if l := len(publicKey); l != PublicKeySize { - panic("ed25519: bad public key length: " + strconv.Itoa(l)) - } - - if len(sig) != SignatureSize || sig[63]&224 != 0 { - return false - } - - var A edwards25519.ExtendedGroupElement - var publicKeyBytes [32]byte - copy(publicKeyBytes[:], publicKey) - if !A.FromBytes(&publicKeyBytes) { - return false - } - edwards25519.FeNeg(&A.X, &A.X) - edwards25519.FeNeg(&A.T, &A.T) - - h := sha512.New() - h.Write(sig[:32]) - h.Write(publicKey[:]) - h.Write(message) - var digest [64]byte - h.Sum(digest[:0]) - - var hReduced [32]byte - edwards25519.ScReduce(&hReduced, &digest) - - var R edwards25519.ProjectiveGroupElement - var b [32]byte - copy(b[:], sig[32:]) - edwards25519.GeDoubleScalarMultVartime(&R, &hReduced, &A, &b) - - var checkR [32]byte - R.ToBytes(&checkR) - return bytes.Equal(sig[:32], checkR[:]) -} diff --git a/vendor/golang.org/x/crypto/ed25519/ed25519_test.go b/vendor/golang.org/x/crypto/ed25519/ed25519_test.go deleted file mode 100644 index e272f8a5..00000000 --- a/vendor/golang.org/x/crypto/ed25519/ed25519_test.go +++ /dev/null @@ -1,183 +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 ed25519 - -import ( - "bufio" - "bytes" - "compress/gzip" - "crypto" - "crypto/rand" - "encoding/hex" - "os" - "strings" - "testing" - - "golang.org/x/crypto/ed25519/internal/edwards25519" -) - -type zeroReader struct{} - -func (zeroReader) Read(buf []byte) (int, error) { - for i := range buf { - buf[i] = 0 - } - return len(buf), nil -} - -func TestUnmarshalMarshal(t *testing.T) { - pub, _, _ := GenerateKey(rand.Reader) - - var A edwards25519.ExtendedGroupElement - var pubBytes [32]byte - copy(pubBytes[:], pub) - if !A.FromBytes(&pubBytes) { - t.Fatalf("ExtendedGroupElement.FromBytes failed") - } - - var pub2 [32]byte - A.ToBytes(&pub2) - - if pubBytes != pub2 { - t.Errorf("FromBytes(%v)->ToBytes does not round-trip, got %x\n", pubBytes, pub2) - } -} - -func TestSignVerify(t *testing.T) { - var zero zeroReader - public, private, _ := GenerateKey(zero) - - message := []byte("test message") - sig := Sign(private, message) - if !Verify(public, message, sig) { - t.Errorf("valid signature rejected") - } - - wrongMessage := []byte("wrong message") - if Verify(public, wrongMessage, sig) { - t.Errorf("signature of different message accepted") - } -} - -func TestCryptoSigner(t *testing.T) { - var zero zeroReader - public, private, _ := GenerateKey(zero) - - signer := crypto.Signer(private) - - publicInterface := signer.Public() - public2, ok := publicInterface.(PublicKey) - if !ok { - t.Fatalf("expected PublicKey from Public() but got %T", publicInterface) - } - - if !bytes.Equal(public, public2) { - t.Errorf("public keys do not match: original:%x vs Public():%x", public, public2) - } - - message := []byte("message") - var noHash crypto.Hash - signature, err := signer.Sign(zero, message, noHash) - if err != nil { - t.Fatalf("error from Sign(): %s", err) - } - - if !Verify(public, message, signature) { - t.Errorf("Verify failed on signature from Sign()") - } -} - -func TestGolden(t *testing.T) { - // sign.input.gz is a selection of test cases from - // https://ed25519.cr.yp.to/python/sign.input - testDataZ, err := os.Open("testdata/sign.input.gz") - if err != nil { - t.Fatal(err) - } - defer testDataZ.Close() - testData, err := gzip.NewReader(testDataZ) - if err != nil { - t.Fatal(err) - } - defer testData.Close() - - scanner := bufio.NewScanner(testData) - lineNo := 0 - - for scanner.Scan() { - lineNo++ - - line := scanner.Text() - parts := strings.Split(line, ":") - if len(parts) != 5 { - t.Fatalf("bad number of parts on line %d", lineNo) - } - - privBytes, _ := hex.DecodeString(parts[0]) - pubKey, _ := hex.DecodeString(parts[1]) - msg, _ := hex.DecodeString(parts[2]) - sig, _ := hex.DecodeString(parts[3]) - // The signatures in the test vectors also include the message - // at the end, but we just want R and S. - sig = sig[:SignatureSize] - - if l := len(pubKey); l != PublicKeySize { - t.Fatalf("bad public key length on line %d: got %d bytes", lineNo, l) - } - - var priv [PrivateKeySize]byte - copy(priv[:], privBytes) - copy(priv[32:], pubKey) - - sig2 := Sign(priv[:], msg) - if !bytes.Equal(sig, sig2[:]) { - t.Errorf("different signature result on line %d: %x vs %x", lineNo, sig, sig2) - } - - if !Verify(pubKey, msg, sig2) { - t.Errorf("signature failed to verify on line %d", lineNo) - } - } - - if err := scanner.Err(); err != nil { - t.Fatalf("error reading test data: %s", err) - } -} - -func BenchmarkKeyGeneration(b *testing.B) { - var zero zeroReader - for i := 0; i < b.N; i++ { - if _, _, err := GenerateKey(zero); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkSigning(b *testing.B) { - var zero zeroReader - _, priv, err := GenerateKey(zero) - if err != nil { - b.Fatal(err) - } - message := []byte("Hello, world!") - b.ResetTimer() - for i := 0; i < b.N; i++ { - Sign(priv, message) - } -} - -func BenchmarkVerification(b *testing.B) { - var zero zeroReader - pub, priv, err := GenerateKey(zero) - if err != nil { - b.Fatal(err) - } - message := []byte("Hello, world!") - signature := Sign(priv, message) - b.ResetTimer() - for i := 0; i < b.N; i++ { - Verify(pub, message, signature) - } -} diff --git a/vendor/golang.org/x/crypto/ed25519/internal/edwards25519/const.go b/vendor/golang.org/x/crypto/ed25519/internal/edwards25519/const.go deleted file mode 100644 index e39f086c..00000000 --- a/vendor/golang.org/x/crypto/ed25519/internal/edwards25519/const.go +++ /dev/null @@ -1,1422 +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 edwards25519 - -// These values are from the public domain, “ref10” implementation of ed25519 -// from SUPERCOP. - -// d is a constant in the Edwards curve equation. -var d = FieldElement{ - -10913610, 13857413, -15372611, 6949391, 114729, -8787816, -6275908, -3247719, -18696448, -12055116, -} - -// d2 is 2*d. -var d2 = FieldElement{ - -21827239, -5839606, -30745221, 13898782, 229458, 15978800, -12551817, -6495438, 29715968, 9444199, -} - -// SqrtM1 is the square-root of -1 in the field. -var SqrtM1 = FieldElement{ - -32595792, -7943725, 9377950, 3500415, 12389472, -272473, -25146209, -2005654, 326686, 11406482, -} - -// A is a constant in the Montgomery-form of curve25519. -var A = FieldElement{ - 486662, 0, 0, 0, 0, 0, 0, 0, 0, 0, -} - -// bi contains precomputed multiples of the base-point. See the Ed25519 paper -// for a discussion about how these values are used. -var bi = [8]PreComputedGroupElement{ - { - FieldElement{25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605}, - FieldElement{-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378}, - FieldElement{-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546}, - }, - { - FieldElement{15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024}, - FieldElement{16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574}, - FieldElement{30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357}, - }, - { - FieldElement{10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380}, - FieldElement{4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306}, - FieldElement{19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942}, - }, - { - FieldElement{5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766}, - FieldElement{-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701}, - FieldElement{28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300}, - }, - { - FieldElement{-22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877}, - FieldElement{-6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951}, - FieldElement{4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784}, - }, - { - FieldElement{-25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436}, - FieldElement{25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918}, - FieldElement{23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877}, - }, - { - FieldElement{-33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800}, - FieldElement{-25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305}, - FieldElement{-13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300}, - }, - { - FieldElement{-3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876}, - FieldElement{-24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619}, - FieldElement{-3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683}, - }, -} - -// base contains precomputed multiples of the base-point. See the Ed25519 paper -// for a discussion about how these values are used. -var base = [32][8]PreComputedGroupElement{ - { - { - FieldElement{25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605}, - FieldElement{-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378}, - FieldElement{-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546}, - }, - { - FieldElement{-12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303}, - FieldElement{-21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081}, - FieldElement{26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697}, - }, - { - FieldElement{15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024}, - FieldElement{16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574}, - FieldElement{30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357}, - }, - { - FieldElement{-17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540}, - FieldElement{23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397}, - FieldElement{7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325}, - }, - { - FieldElement{10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380}, - FieldElement{4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306}, - FieldElement{19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942}, - }, - { - FieldElement{-15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777}, - FieldElement{-8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737}, - FieldElement{-18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652}, - }, - { - FieldElement{5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766}, - FieldElement{-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701}, - FieldElement{28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300}, - }, - { - FieldElement{14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726}, - FieldElement{-7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955}, - FieldElement{27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425}, - }, - }, - { - { - FieldElement{-13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171}, - FieldElement{27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510}, - FieldElement{17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660}, - }, - { - FieldElement{-10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639}, - FieldElement{29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963}, - FieldElement{5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950}, - }, - { - FieldElement{-27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568}, - FieldElement{12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335}, - FieldElement{25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628}, - }, - { - FieldElement{-26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007}, - FieldElement{-2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772}, - FieldElement{-22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653}, - }, - { - FieldElement{2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567}, - FieldElement{13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686}, - FieldElement{21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372}, - }, - { - FieldElement{-13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887}, - FieldElement{-23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954}, - FieldElement{-29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953}, - }, - { - FieldElement{24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833}, - FieldElement{-16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532}, - FieldElement{-22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876}, - }, - { - FieldElement{2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268}, - FieldElement{33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214}, - FieldElement{1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038}, - }, - }, - { - { - FieldElement{6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800}, - FieldElement{4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645}, - FieldElement{-4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664}, - }, - { - FieldElement{1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933}, - FieldElement{-25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182}, - FieldElement{-17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222}, - }, - { - FieldElement{-18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991}, - FieldElement{20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880}, - FieldElement{9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092}, - }, - { - FieldElement{-16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295}, - FieldElement{19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788}, - FieldElement{8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553}, - }, - { - FieldElement{-15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026}, - FieldElement{11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347}, - FieldElement{-18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033}, - }, - { - FieldElement{-23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395}, - FieldElement{-27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278}, - FieldElement{1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890}, - }, - { - FieldElement{32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995}, - FieldElement{-30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596}, - FieldElement{-11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891}, - }, - { - FieldElement{31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060}, - FieldElement{11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608}, - FieldElement{-20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606}, - }, - }, - { - { - FieldElement{7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389}, - FieldElement{-19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016}, - FieldElement{-11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341}, - }, - { - FieldElement{-22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505}, - FieldElement{14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553}, - FieldElement{-28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655}, - }, - { - FieldElement{15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220}, - FieldElement{12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631}, - FieldElement{-4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099}, - }, - { - FieldElement{26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556}, - FieldElement{14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749}, - FieldElement{236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930}, - }, - { - FieldElement{1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391}, - FieldElement{5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253}, - FieldElement{20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066}, - }, - { - FieldElement{24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958}, - FieldElement{-11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082}, - FieldElement{-28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383}, - }, - { - FieldElement{-30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521}, - FieldElement{-11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807}, - FieldElement{23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948}, - }, - { - FieldElement{9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134}, - FieldElement{-32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455}, - FieldElement{27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629}, - }, - }, - { - { - FieldElement{-8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069}, - FieldElement{-32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746}, - FieldElement{24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919}, - }, - { - FieldElement{11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837}, - FieldElement{8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906}, - FieldElement{-28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771}, - }, - { - FieldElement{-25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817}, - FieldElement{10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098}, - FieldElement{10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409}, - }, - { - FieldElement{-12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504}, - FieldElement{-26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727}, - FieldElement{28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420}, - }, - { - FieldElement{-32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003}, - FieldElement{-1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605}, - FieldElement{-30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384}, - }, - { - FieldElement{-26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701}, - FieldElement{-23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683}, - FieldElement{29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708}, - }, - { - FieldElement{-3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563}, - FieldElement{-19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260}, - FieldElement{-5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387}, - }, - { - FieldElement{-19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870, 15664672}, - FieldElement{23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686}, - FieldElement{-24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665}, - }, - }, - { - { - FieldElement{11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182}, - FieldElement{-31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277}, - FieldElement{14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628}, - }, - { - FieldElement{-4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474}, - FieldElement{-26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539}, - FieldElement{-25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822}, - }, - { - FieldElement{-10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970}, - FieldElement{19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756}, - FieldElement{-24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508}, - }, - { - FieldElement{-26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683}, - FieldElement{-10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655}, - FieldElement{-20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158}, - }, - { - FieldElement{-4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125}, - FieldElement{-15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839}, - FieldElement{-20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664}, - }, - { - FieldElement{27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294}, - FieldElement{-18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899}, - FieldElement{-11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070}, - }, - { - FieldElement{3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294}, - FieldElement{-15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949}, - FieldElement{-21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083}, - }, - { - FieldElement{31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420}, - FieldElement{-5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940}, - FieldElement{29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396}, - }, - }, - { - { - FieldElement{-12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567}, - FieldElement{20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127}, - FieldElement{-16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294}, - }, - { - FieldElement{-12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887}, - FieldElement{22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964}, - FieldElement{16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195}, - }, - { - FieldElement{9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244}, - FieldElement{24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999}, - FieldElement{-1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762}, - }, - { - FieldElement{-18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274}, - FieldElement{-33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236}, - FieldElement{-16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605}, - }, - { - FieldElement{-13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761}, - FieldElement{-22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884}, - FieldElement{-6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482}, - }, - { - FieldElement{-24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638}, - FieldElement{-11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490}, - FieldElement{-32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170}, - }, - { - FieldElement{5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736}, - FieldElement{10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124}, - FieldElement{-17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392}, - }, - { - FieldElement{8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029}, - FieldElement{6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048}, - FieldElement{28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958}, - }, - }, - { - { - FieldElement{24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593}, - FieldElement{26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071}, - FieldElement{-11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692}, - }, - { - FieldElement{11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687}, - FieldElement{-160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441}, - FieldElement{-20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001}, - }, - { - FieldElement{-938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460}, - FieldElement{-19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007}, - FieldElement{-21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762}, - }, - { - FieldElement{15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005}, - FieldElement{-9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674}, - FieldElement{4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035}, - }, - { - FieldElement{7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590}, - FieldElement{-2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957}, - FieldElement{-30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812}, - }, - { - FieldElement{33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740}, - FieldElement{-18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122}, - FieldElement{-27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158}, - }, - { - FieldElement{8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885}, - FieldElement{26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140}, - FieldElement{19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857}, - }, - { - FieldElement{801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155}, - FieldElement{19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260}, - FieldElement{19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483}, - }, - }, - { - { - FieldElement{-3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677}, - FieldElement{32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815}, - FieldElement{22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751}, - }, - { - FieldElement{-16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203}, - FieldElement{-11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208}, - FieldElement{1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230}, - }, - { - FieldElement{16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850}, - FieldElement{-21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389}, - FieldElement{-9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968}, - }, - { - FieldElement{-11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689}, - FieldElement{14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880}, - FieldElement{5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304}, - }, - { - FieldElement{30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632}, - FieldElement{-3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412}, - FieldElement{20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566}, - }, - { - FieldElement{-20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038}, - FieldElement{-26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232}, - FieldElement{-1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943}, - }, - { - FieldElement{17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856}, - FieldElement{23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738}, - FieldElement{15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971}, - }, - { - FieldElement{-27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718}, - FieldElement{-13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697}, - FieldElement{-11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883}, - }, - }, - { - { - FieldElement{5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912}, - FieldElement{-26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358}, - FieldElement{3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849}, - }, - { - FieldElement{29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307}, - FieldElement{-14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977}, - FieldElement{-6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335}, - }, - { - FieldElement{-29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831, 15026644}, - FieldElement{-22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616}, - FieldElement{-27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735}, - }, - { - FieldElement{-21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099}, - FieldElement{29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341}, - FieldElement{-936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336}, - }, - { - FieldElement{-23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646}, - FieldElement{31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425}, - FieldElement{-17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388}, - }, - { - FieldElement{-31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743}, - FieldElement{-16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822}, - FieldElement{-8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462}, - }, - { - FieldElement{18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985}, - FieldElement{9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702}, - FieldElement{-22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797}, - }, - { - FieldElement{21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293}, - FieldElement{27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100}, - FieldElement{19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688}, - }, - }, - { - { - FieldElement{12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186}, - FieldElement{2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610}, - FieldElement{-2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707}, - }, - { - FieldElement{7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220}, - FieldElement{915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025}, - FieldElement{32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044}, - }, - { - FieldElement{32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992}, - FieldElement{-4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027}, - FieldElement{21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197}, - }, - { - FieldElement{8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901}, - FieldElement{31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952}, - FieldElement{19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878}, - }, - { - FieldElement{-28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390}, - FieldElement{32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730}, - FieldElement{2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730}, - }, - { - FieldElement{-19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180}, - FieldElement{-30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272}, - FieldElement{-15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715}, - }, - { - FieldElement{-22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970}, - FieldElement{-31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772}, - FieldElement{-17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865}, - }, - { - FieldElement{15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750}, - FieldElement{20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373}, - FieldElement{32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348}, - }, - }, - { - { - FieldElement{9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144}, - FieldElement{-22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195}, - FieldElement{5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086}, - }, - { - FieldElement{-13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684}, - FieldElement{-8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518}, - FieldElement{-2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233}, - }, - { - FieldElement{-5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793}, - FieldElement{-2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794}, - FieldElement{580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435}, - }, - { - FieldElement{23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921}, - FieldElement{13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518}, - FieldElement{2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563}, - }, - { - FieldElement{14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278}, - FieldElement{-27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024}, - FieldElement{4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030}, - }, - { - FieldElement{10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783}, - FieldElement{27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717}, - FieldElement{6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844}, - }, - { - FieldElement{14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333}, - FieldElement{16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048}, - FieldElement{22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760}, - }, - { - FieldElement{-4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760}, - FieldElement{-15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757}, - FieldElement{-2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112}, - }, - }, - { - { - FieldElement{-19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468}, - FieldElement{3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184}, - FieldElement{10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289}, - }, - { - FieldElement{15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066}, - FieldElement{24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882}, - FieldElement{13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226}, - }, - { - FieldElement{16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101}, - FieldElement{29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279}, - FieldElement{-6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811}, - }, - { - FieldElement{27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709}, - FieldElement{20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714}, - FieldElement{-2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121}, - }, - { - FieldElement{9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464}, - FieldElement{12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847}, - FieldElement{13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400}, - }, - { - FieldElement{4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414}, - FieldElement{-15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158}, - FieldElement{17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045}, - }, - { - FieldElement{-461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415}, - FieldElement{-5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459}, - FieldElement{-31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079}, - }, - { - FieldElement{21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412}, - FieldElement{-20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743}, - FieldElement{-14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836}, - }, - }, - { - { - FieldElement{12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022}, - FieldElement{18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429}, - FieldElement{-6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065}, - }, - { - FieldElement{30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861}, - FieldElement{10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000}, - FieldElement{-33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101}, - }, - { - FieldElement{32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815}, - FieldElement{29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642}, - FieldElement{10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966}, - }, - { - FieldElement{25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574}, - FieldElement{-21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742}, - FieldElement{-18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689}, - }, - { - FieldElement{12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020}, - FieldElement{-10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772}, - FieldElement{3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982}, - }, - { - FieldElement{-14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953}, - FieldElement{-16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218}, - FieldElement{-17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265}, - }, - { - FieldElement{29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073}, - FieldElement{-3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325}, - FieldElement{-11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798}, - }, - { - FieldElement{-4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870}, - FieldElement{-7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863}, - FieldElement{-13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927}, - }, - }, - { - { - FieldElement{-2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267}, - FieldElement{-9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663}, - FieldElement{22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862}, - }, - { - FieldElement{-25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673}, - FieldElement{15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943}, - FieldElement{15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020}, - }, - { - FieldElement{-4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238}, - FieldElement{11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064}, - FieldElement{14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795}, - }, - { - FieldElement{15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052}, - FieldElement{-10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904}, - FieldElement{29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531}, - }, - { - FieldElement{-13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979}, - FieldElement{-5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841}, - FieldElement{10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431}, - }, - { - FieldElement{10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324}, - FieldElement{-31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940}, - FieldElement{10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320}, - }, - { - FieldElement{-15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184}, - FieldElement{14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114}, - FieldElement{30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878}, - }, - { - FieldElement{12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784}, - FieldElement{-2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091}, - FieldElement{-16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585}, - }, - }, - { - { - FieldElement{-8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208}, - FieldElement{10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864}, - FieldElement{17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661}, - }, - { - FieldElement{7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233}, - FieldElement{26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212}, - FieldElement{-12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525}, - }, - { - FieldElement{-24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068}, - FieldElement{9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397}, - FieldElement{-8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988}, - }, - { - FieldElement{5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889}, - FieldElement{32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038}, - FieldElement{14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697}, - }, - { - FieldElement{20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875}, - FieldElement{-25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905}, - FieldElement{-25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656}, - }, - { - FieldElement{11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818}, - FieldElement{27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714}, - FieldElement{10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203}, - }, - { - FieldElement{20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931}, - FieldElement{-30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024}, - FieldElement{-23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084}, - }, - { - FieldElement{-1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204}, - FieldElement{20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817}, - FieldElement{27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667}, - }, - }, - { - { - FieldElement{11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504}, - FieldElement{-12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768}, - FieldElement{-19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255}, - }, - { - FieldElement{6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790}, - FieldElement{1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438}, - FieldElement{-22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333}, - }, - { - FieldElement{17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971}, - FieldElement{31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905}, - FieldElement{29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409}, - }, - { - FieldElement{12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409}, - FieldElement{6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499}, - FieldElement{-8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363}, - }, - { - FieldElement{28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664}, - FieldElement{-11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324}, - FieldElement{-21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940}, - }, - { - FieldElement{13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990}, - FieldElement{-17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914}, - FieldElement{-25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290}, - }, - { - FieldElement{24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257}, - FieldElement{-6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433}, - FieldElement{-16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236}, - }, - { - FieldElement{-12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045}, - FieldElement{11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093}, - FieldElement{-1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347}, - }, - }, - { - { - FieldElement{-28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191}, - FieldElement{-15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507}, - FieldElement{-12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906}, - }, - { - FieldElement{3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018}, - FieldElement{-16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109}, - FieldElement{-23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926}, - }, - { - FieldElement{-24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528}, - FieldElement{8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625}, - FieldElement{-32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286}, - }, - { - FieldElement{2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033}, - FieldElement{27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866}, - FieldElement{21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896}, - }, - { - FieldElement{30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075}, - FieldElement{26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347}, - FieldElement{-22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437}, - }, - { - FieldElement{-5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165}, - FieldElement{-18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588}, - FieldElement{-32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193}, - }, - { - FieldElement{-19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017}, - FieldElement{-28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883}, - FieldElement{21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961}, - }, - { - FieldElement{8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043}, - FieldElement{29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663}, - FieldElement{-20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362}, - }, - }, - { - { - FieldElement{-33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860}, - FieldElement{2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466}, - FieldElement{-24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063}, - }, - { - FieldElement{-26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997}, - FieldElement{-1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295}, - FieldElement{-13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369}, - }, - { - FieldElement{9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385}, - FieldElement{18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109}, - FieldElement{2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906}, - }, - { - FieldElement{4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424}, - FieldElement{-19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185}, - FieldElement{7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962}, - }, - { - FieldElement{-7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325}, - FieldElement{10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593}, - FieldElement{696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404}, - }, - { - FieldElement{-11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644}, - FieldElement{17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801}, - FieldElement{26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804}, - }, - { - FieldElement{-31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884}, - FieldElement{-586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577}, - FieldElement{-9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849}, - }, - { - FieldElement{32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473}, - FieldElement{-8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644}, - FieldElement{-2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319}, - }, - }, - { - { - FieldElement{-11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599}, - FieldElement{-9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768}, - FieldElement{-27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084}, - }, - { - FieldElement{-27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328}, - FieldElement{-15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369}, - FieldElement{20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920}, - }, - { - FieldElement{12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815}, - FieldElement{-32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025}, - FieldElement{-21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397}, - }, - { - FieldElement{-20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448}, - FieldElement{6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981}, - FieldElement{30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165}, - }, - { - FieldElement{32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501}, - FieldElement{17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073}, - FieldElement{-1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861}, - }, - { - FieldElement{14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845}, - FieldElement{-1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211}, - FieldElement{18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870}, - }, - { - FieldElement{10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096}, - FieldElement{33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803}, - FieldElement{-32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168}, - }, - { - FieldElement{30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965}, - FieldElement{-14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505}, - FieldElement{18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598}, - }, - }, - { - { - FieldElement{5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782}, - FieldElement{5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900}, - FieldElement{-31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479}, - }, - { - FieldElement{-12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208}, - FieldElement{8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232}, - FieldElement{17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719}, - }, - { - FieldElement{16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271}, - FieldElement{-4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326}, - FieldElement{-8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132}, - }, - { - FieldElement{14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300}, - FieldElement{8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570}, - FieldElement{15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670}, - }, - { - FieldElement{-2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994}, - FieldElement{-12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913}, - FieldElement{31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317}, - }, - { - FieldElement{-25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730}, - FieldElement{842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096}, - FieldElement{-4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078}, - }, - { - FieldElement{-15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411}, - FieldElement{-19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905}, - FieldElement{-9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654}, - }, - { - FieldElement{-28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870}, - FieldElement{-23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498}, - FieldElement{12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579}, - }, - }, - { - { - FieldElement{14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677}, - FieldElement{10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647}, - FieldElement{-2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743}, - }, - { - FieldElement{-25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468}, - FieldElement{21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375}, - FieldElement{-25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155}, - }, - { - FieldElement{6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725}, - FieldElement{-12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612}, - FieldElement{-10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943}, - }, - { - FieldElement{-30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944}, - FieldElement{30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928}, - FieldElement{9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406}, - }, - { - FieldElement{22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139}, - FieldElement{-8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963}, - FieldElement{-31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693}, - }, - { - FieldElement{1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734}, - FieldElement{-448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680}, - FieldElement{-24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410}, - }, - { - FieldElement{-9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931}, - FieldElement{-16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654}, - FieldElement{22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710}, - }, - { - FieldElement{29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180}, - FieldElement{-26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684}, - FieldElement{-10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895}, - }, - }, - { - { - FieldElement{22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501}, - FieldElement{-11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413}, - FieldElement{6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880}, - }, - { - FieldElement{-8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874}, - FieldElement{22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962}, - FieldElement{-7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899}, - }, - { - FieldElement{21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152}, - FieldElement{9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063}, - FieldElement{7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080}, - }, - { - FieldElement{-9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146}, - FieldElement{-17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183}, - FieldElement{-19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133}, - }, - { - FieldElement{-32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421}, - FieldElement{-3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622}, - FieldElement{-4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197}, - }, - { - FieldElement{2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663}, - FieldElement{31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753}, - FieldElement{4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755}, - }, - { - FieldElement{-9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862}, - FieldElement{-26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118}, - FieldElement{26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171}, - }, - { - FieldElement{15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380}, - FieldElement{16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824}, - FieldElement{28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270}, - }, - }, - { - { - FieldElement{-817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438}, - FieldElement{-31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584}, - FieldElement{-594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562}, - }, - { - FieldElement{30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471}, - FieldElement{18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610}, - FieldElement{19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269}, - }, - { - FieldElement{-30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650}, - FieldElement{14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369}, - FieldElement{19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461}, - }, - { - FieldElement{30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462}, - FieldElement{-5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793}, - FieldElement{-2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218}, - }, - { - FieldElement{-24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226}, - FieldElement{18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019}, - FieldElement{-15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037}, - }, - { - FieldElement{31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171}, - FieldElement{-17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132}, - FieldElement{-28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841}, - }, - { - FieldElement{21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181}, - FieldElement{-33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210}, - FieldElement{-1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040}, - }, - { - FieldElement{3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935}, - FieldElement{24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105}, - FieldElement{-28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814}, - }, - }, - { - { - FieldElement{793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852}, - FieldElement{5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581}, - FieldElement{-4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646}, - }, - { - FieldElement{10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844}, - FieldElement{10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025}, - FieldElement{27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453}, - }, - { - FieldElement{-23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068}, - FieldElement{4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192}, - FieldElement{-17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921}, - }, - { - FieldElement{-9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259}, - FieldElement{-12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426}, - FieldElement{-5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072}, - }, - { - FieldElement{-17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305}, - FieldElement{13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204, -9421832}, - FieldElement{28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943}, - }, - { - FieldElement{-16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011}, - FieldElement{24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447}, - FieldElement{17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494}, - }, - { - FieldElement{-28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245}, - FieldElement{-20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859}, - FieldElement{28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915}, - }, - { - FieldElement{16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707}, - FieldElement{10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848}, - FieldElement{-11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224}, - }, - }, - { - { - FieldElement{-25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391}, - FieldElement{15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215}, - FieldElement{-23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101}, - }, - { - FieldElement{23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713}, - FieldElement{21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849}, - FieldElement{-7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930}, - }, - { - FieldElement{-29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940}, - FieldElement{-21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031}, - FieldElement{-17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404}, - }, - { - FieldElement{-25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243}, - FieldElement{-23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116}, - FieldElement{-24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525}, - }, - { - FieldElement{-23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509}, - FieldElement{-10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883}, - FieldElement{15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865}, - }, - { - FieldElement{-3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660}, - FieldElement{4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273}, - FieldElement{-28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138}, - }, - { - FieldElement{-25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560}, - FieldElement{-10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135}, - FieldElement{2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941}, - }, - { - FieldElement{-4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739}, - FieldElement{18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756}, - FieldElement{-30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819}, - }, - }, - { - { - FieldElement{-6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347}, - FieldElement{-27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028}, - FieldElement{21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075}, - }, - { - FieldElement{16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799}, - FieldElement{-2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609}, - FieldElement{-25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817}, - }, - { - FieldElement{-23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989}, - FieldElement{-30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523}, - FieldElement{4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278}, - }, - { - FieldElement{31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045}, - FieldElement{19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377}, - FieldElement{24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480}, - }, - { - FieldElement{17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016}, - FieldElement{510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426}, - FieldElement{18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525}, - }, - { - FieldElement{13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396}, - FieldElement{9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080}, - FieldElement{12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892}, - }, - { - FieldElement{15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275}, - FieldElement{11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074}, - FieldElement{20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140}, - }, - { - FieldElement{-16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717}, - FieldElement{-1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101}, - FieldElement{24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127}, - }, - }, - { - { - FieldElement{-12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632}, - FieldElement{-26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415}, - FieldElement{-31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160}, - }, - { - FieldElement{31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876}, - FieldElement{22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625}, - FieldElement{-15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478}, - }, - { - FieldElement{27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164}, - FieldElement{26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595}, - FieldElement{-7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248}, - }, - { - FieldElement{-16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858}, - FieldElement{15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193}, - FieldElement{8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184}, - }, - { - FieldElement{-18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942}, - FieldElement{-1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635}, - FieldElement{21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948}, - }, - { - FieldElement{11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935}, - FieldElement{-25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415}, - FieldElement{-15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416}, - }, - { - FieldElement{-7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018}, - FieldElement{4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778}, - FieldElement{366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659}, - }, - { - FieldElement{-24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385}, - FieldElement{18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503}, - FieldElement{476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329}, - }, - }, - { - { - FieldElement{20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056}, - FieldElement{-13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838}, - FieldElement{24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948}, - }, - { - FieldElement{-3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691}, - FieldElement{-15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118}, - FieldElement{-23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517}, - }, - { - FieldElement{-20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269}, - FieldElement{-6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904}, - FieldElement{-23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589}, - }, - { - FieldElement{-28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193}, - FieldElement{-7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910}, - FieldElement{-30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930}, - }, - { - FieldElement{-7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667}, - FieldElement{25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481}, - FieldElement{-9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876}, - }, - { - FieldElement{22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640}, - FieldElement{-8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278}, - FieldElement{-21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112}, - }, - { - FieldElement{26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272}, - FieldElement{17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012}, - FieldElement{-10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221}, - }, - { - FieldElement{30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046}, - FieldElement{13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345}, - FieldElement{-19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310}, - }, - }, - { - { - FieldElement{19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937}, - FieldElement{31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636}, - FieldElement{-9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008}, - }, - { - FieldElement{-2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429}, - FieldElement{-15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576}, - FieldElement{31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066}, - }, - { - FieldElement{-9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490}, - FieldElement{-12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104}, - FieldElement{33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053}, - }, - { - FieldElement{31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275}, - FieldElement{-20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511}, - FieldElement{22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095}, - }, - { - FieldElement{-28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439}, - FieldElement{23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939}, - FieldElement{-23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424}, - }, - { - FieldElement{2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310}, - FieldElement{3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608}, - FieldElement{-32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079}, - }, - { - FieldElement{-23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101}, - FieldElement{21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418}, - FieldElement{18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576}, - }, - { - FieldElement{30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356}, - FieldElement{9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996}, - FieldElement{-26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099}, - }, - }, - { - { - FieldElement{-26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728}, - FieldElement{-13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658}, - FieldElement{-10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242}, - }, - { - FieldElement{-21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001}, - FieldElement{-4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766}, - FieldElement{18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373}, - }, - { - FieldElement{26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458}, - FieldElement{-17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628}, - FieldElement{-13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657}, - }, - { - FieldElement{-23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062}, - FieldElement{25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616}, - FieldElement{31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014}, - }, - { - FieldElement{24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383}, - FieldElement{-25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814}, - FieldElement{-20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718}, - }, - { - FieldElement{30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417}, - FieldElement{2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222}, - FieldElement{33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444}, - }, - { - FieldElement{-20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597}, - FieldElement{23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970}, - FieldElement{1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799}, - }, - { - FieldElement{-5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647}, - FieldElement{13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511}, - FieldElement{-29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032}, - }, - }, - { - { - FieldElement{9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834}, - FieldElement{-23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461}, - FieldElement{29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062}, - }, - { - FieldElement{-25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516}, - FieldElement{-20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547}, - FieldElement{-24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240}, - }, - { - FieldElement{-17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038}, - FieldElement{-33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741}, - FieldElement{16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103}, - }, - { - FieldElement{-19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747}, - FieldElement{-1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323}, - FieldElement{31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016}, - }, - { - FieldElement{-14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373}, - FieldElement{15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228}, - FieldElement{-2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141}, - }, - { - FieldElement{16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399}, - FieldElement{11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831}, - FieldElement{-185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376}, - }, - { - FieldElement{-32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313}, - FieldElement{-18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958}, - FieldElement{-6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577}, - }, - { - FieldElement{-22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743}, - FieldElement{29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684}, - FieldElement{-20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476}, - }, - }, -} diff --git a/vendor/golang.org/x/crypto/ed25519/internal/edwards25519/edwards25519.go b/vendor/golang.org/x/crypto/ed25519/internal/edwards25519/edwards25519.go deleted file mode 100644 index 5f8b9947..00000000 --- a/vendor/golang.org/x/crypto/ed25519/internal/edwards25519/edwards25519.go +++ /dev/null @@ -1,1771 +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 edwards25519 - -// This code is a port of the public domain, “ref10” implementation of ed25519 -// from SUPERCOP. - -// FieldElement represents an element of the field GF(2^255 - 19). An element -// t, entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77 -// t[3]+2^102 t[4]+...+2^230 t[9]. Bounds on each t[i] vary depending on -// context. -type FieldElement [10]int32 - -var zero FieldElement - -func FeZero(fe *FieldElement) { - copy(fe[:], zero[:]) -} - -func FeOne(fe *FieldElement) { - FeZero(fe) - fe[0] = 1 -} - -func FeAdd(dst, a, b *FieldElement) { - dst[0] = a[0] + b[0] - dst[1] = a[1] + b[1] - dst[2] = a[2] + b[2] - dst[3] = a[3] + b[3] - dst[4] = a[4] + b[4] - dst[5] = a[5] + b[5] - dst[6] = a[6] + b[6] - dst[7] = a[7] + b[7] - dst[8] = a[8] + b[8] - dst[9] = a[9] + b[9] -} - -func FeSub(dst, a, b *FieldElement) { - dst[0] = a[0] - b[0] - dst[1] = a[1] - b[1] - dst[2] = a[2] - b[2] - dst[3] = a[3] - b[3] - dst[4] = a[4] - b[4] - dst[5] = a[5] - b[5] - dst[6] = a[6] - b[6] - dst[7] = a[7] - b[7] - dst[8] = a[8] - b[8] - dst[9] = a[9] - b[9] -} - -func FeCopy(dst, src *FieldElement) { - copy(dst[:], src[:]) -} - -// Replace (f,g) with (g,g) if b == 1; -// replace (f,g) with (f,g) if b == 0. -// -// Preconditions: b in {0,1}. -func FeCMove(f, g *FieldElement, b int32) { - b = -b - f[0] ^= b & (f[0] ^ g[0]) - f[1] ^= b & (f[1] ^ g[1]) - f[2] ^= b & (f[2] ^ g[2]) - f[3] ^= b & (f[3] ^ g[3]) - f[4] ^= b & (f[4] ^ g[4]) - f[5] ^= b & (f[5] ^ g[5]) - f[6] ^= b & (f[6] ^ g[6]) - f[7] ^= b & (f[7] ^ g[7]) - f[8] ^= b & (f[8] ^ g[8]) - f[9] ^= b & (f[9] ^ g[9]) -} - -func load3(in []byte) int64 { - var r int64 - r = int64(in[0]) - r |= int64(in[1]) << 8 - r |= int64(in[2]) << 16 - return r -} - -func load4(in []byte) int64 { - var r int64 - r = int64(in[0]) - r |= int64(in[1]) << 8 - r |= int64(in[2]) << 16 - r |= int64(in[3]) << 24 - return r -} - -func FeFromBytes(dst *FieldElement, src *[32]byte) { - h0 := load4(src[:]) - h1 := load3(src[4:]) << 6 - h2 := load3(src[7:]) << 5 - h3 := load3(src[10:]) << 3 - h4 := load3(src[13:]) << 2 - h5 := load4(src[16:]) - h6 := load3(src[20:]) << 7 - h7 := load3(src[23:]) << 5 - h8 := load3(src[26:]) << 4 - h9 := (load3(src[29:]) & 8388607) << 2 - - FeCombine(dst, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9) -} - -// FeToBytes marshals h to s. -// Preconditions: -// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -// -// Write p=2^255-19; q=floor(h/p). -// Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))). -// -// Proof: -// Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4. -// Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4. -// -// Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9). -// Then 0> 25 - q = (h[0] + q) >> 26 - q = (h[1] + q) >> 25 - q = (h[2] + q) >> 26 - q = (h[3] + q) >> 25 - q = (h[4] + q) >> 26 - q = (h[5] + q) >> 25 - q = (h[6] + q) >> 26 - q = (h[7] + q) >> 25 - q = (h[8] + q) >> 26 - q = (h[9] + q) >> 25 - - // Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. - h[0] += 19 * q - // Goal: Output h-2^255 q, which is between 0 and 2^255-20. - - carry[0] = h[0] >> 26 - h[1] += carry[0] - h[0] -= carry[0] << 26 - carry[1] = h[1] >> 25 - h[2] += carry[1] - h[1] -= carry[1] << 25 - carry[2] = h[2] >> 26 - h[3] += carry[2] - h[2] -= carry[2] << 26 - carry[3] = h[3] >> 25 - h[4] += carry[3] - h[3] -= carry[3] << 25 - carry[4] = h[4] >> 26 - h[5] += carry[4] - h[4] -= carry[4] << 26 - carry[5] = h[5] >> 25 - h[6] += carry[5] - h[5] -= carry[5] << 25 - carry[6] = h[6] >> 26 - h[7] += carry[6] - h[6] -= carry[6] << 26 - carry[7] = h[7] >> 25 - h[8] += carry[7] - h[7] -= carry[7] << 25 - carry[8] = h[8] >> 26 - h[9] += carry[8] - h[8] -= carry[8] << 26 - carry[9] = h[9] >> 25 - h[9] -= carry[9] << 25 - // h10 = carry9 - - // Goal: Output h[0]+...+2^255 h10-2^255 q, which is between 0 and 2^255-20. - // Have h[0]+...+2^230 h[9] between 0 and 2^255-1; - // evidently 2^255 h10-2^255 q = 0. - // Goal: Output h[0]+...+2^230 h[9]. - - s[0] = byte(h[0] >> 0) - s[1] = byte(h[0] >> 8) - s[2] = byte(h[0] >> 16) - s[3] = byte((h[0] >> 24) | (h[1] << 2)) - s[4] = byte(h[1] >> 6) - s[5] = byte(h[1] >> 14) - s[6] = byte((h[1] >> 22) | (h[2] << 3)) - s[7] = byte(h[2] >> 5) - s[8] = byte(h[2] >> 13) - s[9] = byte((h[2] >> 21) | (h[3] << 5)) - s[10] = byte(h[3] >> 3) - s[11] = byte(h[3] >> 11) - s[12] = byte((h[3] >> 19) | (h[4] << 6)) - s[13] = byte(h[4] >> 2) - s[14] = byte(h[4] >> 10) - s[15] = byte(h[4] >> 18) - s[16] = byte(h[5] >> 0) - s[17] = byte(h[5] >> 8) - s[18] = byte(h[5] >> 16) - s[19] = byte((h[5] >> 24) | (h[6] << 1)) - s[20] = byte(h[6] >> 7) - s[21] = byte(h[6] >> 15) - s[22] = byte((h[6] >> 23) | (h[7] << 3)) - s[23] = byte(h[7] >> 5) - s[24] = byte(h[7] >> 13) - s[25] = byte((h[7] >> 21) | (h[8] << 4)) - s[26] = byte(h[8] >> 4) - s[27] = byte(h[8] >> 12) - s[28] = byte((h[8] >> 20) | (h[9] << 6)) - s[29] = byte(h[9] >> 2) - s[30] = byte(h[9] >> 10) - s[31] = byte(h[9] >> 18) -} - -func FeIsNegative(f *FieldElement) byte { - var s [32]byte - FeToBytes(&s, f) - return s[0] & 1 -} - -func FeIsNonZero(f *FieldElement) int32 { - var s [32]byte - FeToBytes(&s, f) - var x uint8 - for _, b := range s { - x |= b - } - x |= x >> 4 - x |= x >> 2 - x |= x >> 1 - return int32(x & 1) -} - -// FeNeg sets h = -f -// -// Preconditions: -// |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -// -// Postconditions: -// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -func FeNeg(h, f *FieldElement) { - h[0] = -f[0] - h[1] = -f[1] - h[2] = -f[2] - h[3] = -f[3] - h[4] = -f[4] - h[5] = -f[5] - h[6] = -f[6] - h[7] = -f[7] - h[8] = -f[8] - h[9] = -f[9] -} - -func FeCombine(h *FieldElement, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 int64) { - var c0, c1, c2, c3, c4, c5, c6, c7, c8, c9 int64 - - /* - |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38)) - i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8 - |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19)) - i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9 - */ - - c0 = (h0 + (1 << 25)) >> 26 - h1 += c0 - h0 -= c0 << 26 - c4 = (h4 + (1 << 25)) >> 26 - h5 += c4 - h4 -= c4 << 26 - /* |h0| <= 2^25 */ - /* |h4| <= 2^25 */ - /* |h1| <= 1.51*2^58 */ - /* |h5| <= 1.51*2^58 */ - - c1 = (h1 + (1 << 24)) >> 25 - h2 += c1 - h1 -= c1 << 25 - c5 = (h5 + (1 << 24)) >> 25 - h6 += c5 - h5 -= c5 << 25 - /* |h1| <= 2^24; from now on fits into int32 */ - /* |h5| <= 2^24; from now on fits into int32 */ - /* |h2| <= 1.21*2^59 */ - /* |h6| <= 1.21*2^59 */ - - c2 = (h2 + (1 << 25)) >> 26 - h3 += c2 - h2 -= c2 << 26 - c6 = (h6 + (1 << 25)) >> 26 - h7 += c6 - h6 -= c6 << 26 - /* |h2| <= 2^25; from now on fits into int32 unchanged */ - /* |h6| <= 2^25; from now on fits into int32 unchanged */ - /* |h3| <= 1.51*2^58 */ - /* |h7| <= 1.51*2^58 */ - - c3 = (h3 + (1 << 24)) >> 25 - h4 += c3 - h3 -= c3 << 25 - c7 = (h7 + (1 << 24)) >> 25 - h8 += c7 - h7 -= c7 << 25 - /* |h3| <= 2^24; from now on fits into int32 unchanged */ - /* |h7| <= 2^24; from now on fits into int32 unchanged */ - /* |h4| <= 1.52*2^33 */ - /* |h8| <= 1.52*2^33 */ - - c4 = (h4 + (1 << 25)) >> 26 - h5 += c4 - h4 -= c4 << 26 - c8 = (h8 + (1 << 25)) >> 26 - h9 += c8 - h8 -= c8 << 26 - /* |h4| <= 2^25; from now on fits into int32 unchanged */ - /* |h8| <= 2^25; from now on fits into int32 unchanged */ - /* |h5| <= 1.01*2^24 */ - /* |h9| <= 1.51*2^58 */ - - c9 = (h9 + (1 << 24)) >> 25 - h0 += c9 * 19 - h9 -= c9 << 25 - /* |h9| <= 2^24; from now on fits into int32 unchanged */ - /* |h0| <= 1.8*2^37 */ - - c0 = (h0 + (1 << 25)) >> 26 - h1 += c0 - h0 -= c0 << 26 - /* |h0| <= 2^25; from now on fits into int32 unchanged */ - /* |h1| <= 1.01*2^24 */ - - h[0] = int32(h0) - h[1] = int32(h1) - h[2] = int32(h2) - h[3] = int32(h3) - h[4] = int32(h4) - h[5] = int32(h5) - h[6] = int32(h6) - h[7] = int32(h7) - h[8] = int32(h8) - h[9] = int32(h9) -} - -// FeMul calculates h = f * g -// Can overlap h with f or g. -// -// Preconditions: -// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -// |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -// -// Postconditions: -// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -// -// Notes on implementation strategy: -// -// Using schoolbook multiplication. -// Karatsuba would save a little in some cost models. -// -// Most multiplications by 2 and 19 are 32-bit precomputations; -// cheaper than 64-bit postcomputations. -// -// There is one remaining multiplication by 19 in the carry chain; -// one *19 precomputation can be merged into this, -// but the resulting data flow is considerably less clean. -// -// There are 12 carries below. -// 10 of them are 2-way parallelizable and vectorizable. -// Can get away with 11 carries, but then data flow is much deeper. -// -// With tighter constraints on inputs, can squeeze carries into int32. -func FeMul(h, f, g *FieldElement) { - f0 := int64(f[0]) - f1 := int64(f[1]) - f2 := int64(f[2]) - f3 := int64(f[3]) - f4 := int64(f[4]) - f5 := int64(f[5]) - f6 := int64(f[6]) - f7 := int64(f[7]) - f8 := int64(f[8]) - f9 := int64(f[9]) - - f1_2 := int64(2 * f[1]) - f3_2 := int64(2 * f[3]) - f5_2 := int64(2 * f[5]) - f7_2 := int64(2 * f[7]) - f9_2 := int64(2 * f[9]) - - g0 := int64(g[0]) - g1 := int64(g[1]) - g2 := int64(g[2]) - g3 := int64(g[3]) - g4 := int64(g[4]) - g5 := int64(g[5]) - g6 := int64(g[6]) - g7 := int64(g[7]) - g8 := int64(g[8]) - g9 := int64(g[9]) - - g1_19 := int64(19 * g[1]) /* 1.4*2^29 */ - g2_19 := int64(19 * g[2]) /* 1.4*2^30; still ok */ - g3_19 := int64(19 * g[3]) - g4_19 := int64(19 * g[4]) - g5_19 := int64(19 * g[5]) - g6_19 := int64(19 * g[6]) - g7_19 := int64(19 * g[7]) - g8_19 := int64(19 * g[8]) - g9_19 := int64(19 * g[9]) - - h0 := f0*g0 + f1_2*g9_19 + f2*g8_19 + f3_2*g7_19 + f4*g6_19 + f5_2*g5_19 + f6*g4_19 + f7_2*g3_19 + f8*g2_19 + f9_2*g1_19 - h1 := f0*g1 + f1*g0 + f2*g9_19 + f3*g8_19 + f4*g7_19 + f5*g6_19 + f6*g5_19 + f7*g4_19 + f8*g3_19 + f9*g2_19 - h2 := f0*g2 + f1_2*g1 + f2*g0 + f3_2*g9_19 + f4*g8_19 + f5_2*g7_19 + f6*g6_19 + f7_2*g5_19 + f8*g4_19 + f9_2*g3_19 - h3 := f0*g3 + f1*g2 + f2*g1 + f3*g0 + f4*g9_19 + f5*g8_19 + f6*g7_19 + f7*g6_19 + f8*g5_19 + f9*g4_19 - h4 := f0*g4 + f1_2*g3 + f2*g2 + f3_2*g1 + f4*g0 + f5_2*g9_19 + f6*g8_19 + f7_2*g7_19 + f8*g6_19 + f9_2*g5_19 - h5 := f0*g5 + f1*g4 + f2*g3 + f3*g2 + f4*g1 + f5*g0 + f6*g9_19 + f7*g8_19 + f8*g7_19 + f9*g6_19 - h6 := f0*g6 + f1_2*g5 + f2*g4 + f3_2*g3 + f4*g2 + f5_2*g1 + f6*g0 + f7_2*g9_19 + f8*g8_19 + f9_2*g7_19 - h7 := f0*g7 + f1*g6 + f2*g5 + f3*g4 + f4*g3 + f5*g2 + f6*g1 + f7*g0 + f8*g9_19 + f9*g8_19 - h8 := f0*g8 + f1_2*g7 + f2*g6 + f3_2*g5 + f4*g4 + f5_2*g3 + f6*g2 + f7_2*g1 + f8*g0 + f9_2*g9_19 - h9 := f0*g9 + f1*g8 + f2*g7 + f3*g6 + f4*g5 + f5*g4 + f6*g3 + f7*g2 + f8*g1 + f9*g0 - - FeCombine(h, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9) -} - -func feSquare(f *FieldElement) (h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 int64) { - f0 := int64(f[0]) - f1 := int64(f[1]) - f2 := int64(f[2]) - f3 := int64(f[3]) - f4 := int64(f[4]) - f5 := int64(f[5]) - f6 := int64(f[6]) - f7 := int64(f[7]) - f8 := int64(f[8]) - f9 := int64(f[9]) - f0_2 := int64(2 * f[0]) - f1_2 := int64(2 * f[1]) - f2_2 := int64(2 * f[2]) - f3_2 := int64(2 * f[3]) - f4_2 := int64(2 * f[4]) - f5_2 := int64(2 * f[5]) - f6_2 := int64(2 * f[6]) - f7_2 := int64(2 * f[7]) - f5_38 := 38 * f5 // 1.31*2^30 - f6_19 := 19 * f6 // 1.31*2^30 - f7_38 := 38 * f7 // 1.31*2^30 - f8_19 := 19 * f8 // 1.31*2^30 - f9_38 := 38 * f9 // 1.31*2^30 - - h0 = f0*f0 + f1_2*f9_38 + f2_2*f8_19 + f3_2*f7_38 + f4_2*f6_19 + f5*f5_38 - h1 = f0_2*f1 + f2*f9_38 + f3_2*f8_19 + f4*f7_38 + f5_2*f6_19 - h2 = f0_2*f2 + f1_2*f1 + f3_2*f9_38 + f4_2*f8_19 + f5_2*f7_38 + f6*f6_19 - h3 = f0_2*f3 + f1_2*f2 + f4*f9_38 + f5_2*f8_19 + f6*f7_38 - h4 = f0_2*f4 + f1_2*f3_2 + f2*f2 + f5_2*f9_38 + f6_2*f8_19 + f7*f7_38 - h5 = f0_2*f5 + f1_2*f4 + f2_2*f3 + f6*f9_38 + f7_2*f8_19 - h6 = f0_2*f6 + f1_2*f5_2 + f2_2*f4 + f3_2*f3 + f7_2*f9_38 + f8*f8_19 - h7 = f0_2*f7 + f1_2*f6 + f2_2*f5 + f3_2*f4 + f8*f9_38 - h8 = f0_2*f8 + f1_2*f7_2 + f2_2*f6 + f3_2*f5_2 + f4*f4 + f9*f9_38 - h9 = f0_2*f9 + f1_2*f8 + f2_2*f7 + f3_2*f6 + f4_2*f5 - - return -} - -// FeSquare calculates h = f*f. Can overlap h with f. -// -// Preconditions: -// |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc. -// -// Postconditions: -// |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc. -func FeSquare(h, f *FieldElement) { - h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 := feSquare(f) - FeCombine(h, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9) -} - -// FeSquare2 sets h = 2 * f * f -// -// Can overlap h with f. -// -// Preconditions: -// |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc. -// -// Postconditions: -// |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc. -// See fe_mul.c for discussion of implementation strategy. -func FeSquare2(h, f *FieldElement) { - h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 := feSquare(f) - - h0 += h0 - h1 += h1 - h2 += h2 - h3 += h3 - h4 += h4 - h5 += h5 - h6 += h6 - h7 += h7 - h8 += h8 - h9 += h9 - - FeCombine(h, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9) -} - -func FeInvert(out, z *FieldElement) { - var t0, t1, t2, t3 FieldElement - var i int - - FeSquare(&t0, z) // 2^1 - FeSquare(&t1, &t0) // 2^2 - for i = 1; i < 2; i++ { // 2^3 - FeSquare(&t1, &t1) - } - FeMul(&t1, z, &t1) // 2^3 + 2^0 - FeMul(&t0, &t0, &t1) // 2^3 + 2^1 + 2^0 - FeSquare(&t2, &t0) // 2^4 + 2^2 + 2^1 - FeMul(&t1, &t1, &t2) // 2^4 + 2^3 + 2^2 + 2^1 + 2^0 - FeSquare(&t2, &t1) // 5,4,3,2,1 - for i = 1; i < 5; i++ { // 9,8,7,6,5 - FeSquare(&t2, &t2) - } - FeMul(&t1, &t2, &t1) // 9,8,7,6,5,4,3,2,1,0 - FeSquare(&t2, &t1) // 10..1 - for i = 1; i < 10; i++ { // 19..10 - FeSquare(&t2, &t2) - } - FeMul(&t2, &t2, &t1) // 19..0 - FeSquare(&t3, &t2) // 20..1 - for i = 1; i < 20; i++ { // 39..20 - FeSquare(&t3, &t3) - } - FeMul(&t2, &t3, &t2) // 39..0 - FeSquare(&t2, &t2) // 40..1 - for i = 1; i < 10; i++ { // 49..10 - FeSquare(&t2, &t2) - } - FeMul(&t1, &t2, &t1) // 49..0 - FeSquare(&t2, &t1) // 50..1 - for i = 1; i < 50; i++ { // 99..50 - FeSquare(&t2, &t2) - } - FeMul(&t2, &t2, &t1) // 99..0 - FeSquare(&t3, &t2) // 100..1 - for i = 1; i < 100; i++ { // 199..100 - FeSquare(&t3, &t3) - } - FeMul(&t2, &t3, &t2) // 199..0 - FeSquare(&t2, &t2) // 200..1 - for i = 1; i < 50; i++ { // 249..50 - FeSquare(&t2, &t2) - } - FeMul(&t1, &t2, &t1) // 249..0 - FeSquare(&t1, &t1) // 250..1 - for i = 1; i < 5; i++ { // 254..5 - FeSquare(&t1, &t1) - } - FeMul(out, &t1, &t0) // 254..5,3,1,0 -} - -func fePow22523(out, z *FieldElement) { - var t0, t1, t2 FieldElement - var i int - - FeSquare(&t0, z) - for i = 1; i < 1; i++ { - FeSquare(&t0, &t0) - } - FeSquare(&t1, &t0) - for i = 1; i < 2; i++ { - FeSquare(&t1, &t1) - } - FeMul(&t1, z, &t1) - FeMul(&t0, &t0, &t1) - FeSquare(&t0, &t0) - for i = 1; i < 1; i++ { - FeSquare(&t0, &t0) - } - FeMul(&t0, &t1, &t0) - FeSquare(&t1, &t0) - for i = 1; i < 5; i++ { - FeSquare(&t1, &t1) - } - FeMul(&t0, &t1, &t0) - FeSquare(&t1, &t0) - for i = 1; i < 10; i++ { - FeSquare(&t1, &t1) - } - FeMul(&t1, &t1, &t0) - FeSquare(&t2, &t1) - for i = 1; i < 20; i++ { - FeSquare(&t2, &t2) - } - FeMul(&t1, &t2, &t1) - FeSquare(&t1, &t1) - for i = 1; i < 10; i++ { - FeSquare(&t1, &t1) - } - FeMul(&t0, &t1, &t0) - FeSquare(&t1, &t0) - for i = 1; i < 50; i++ { - FeSquare(&t1, &t1) - } - FeMul(&t1, &t1, &t0) - FeSquare(&t2, &t1) - for i = 1; i < 100; i++ { - FeSquare(&t2, &t2) - } - FeMul(&t1, &t2, &t1) - FeSquare(&t1, &t1) - for i = 1; i < 50; i++ { - FeSquare(&t1, &t1) - } - FeMul(&t0, &t1, &t0) - FeSquare(&t0, &t0) - for i = 1; i < 2; i++ { - FeSquare(&t0, &t0) - } - FeMul(out, &t0, z) -} - -// Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 * -// y^2 where d = -121665/121666. -// -// Several representations are used: -// ProjectiveGroupElement: (X:Y:Z) satisfying x=X/Z, y=Y/Z -// ExtendedGroupElement: (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT -// CompletedGroupElement: ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T -// PreComputedGroupElement: (y+x,y-x,2dxy) - -type ProjectiveGroupElement struct { - X, Y, Z FieldElement -} - -type ExtendedGroupElement struct { - X, Y, Z, T FieldElement -} - -type CompletedGroupElement struct { - X, Y, Z, T FieldElement -} - -type PreComputedGroupElement struct { - yPlusX, yMinusX, xy2d FieldElement -} - -type CachedGroupElement struct { - yPlusX, yMinusX, Z, T2d FieldElement -} - -func (p *ProjectiveGroupElement) Zero() { - FeZero(&p.X) - FeOne(&p.Y) - FeOne(&p.Z) -} - -func (p *ProjectiveGroupElement) Double(r *CompletedGroupElement) { - var t0 FieldElement - - FeSquare(&r.X, &p.X) - FeSquare(&r.Z, &p.Y) - FeSquare2(&r.T, &p.Z) - FeAdd(&r.Y, &p.X, &p.Y) - FeSquare(&t0, &r.Y) - FeAdd(&r.Y, &r.Z, &r.X) - FeSub(&r.Z, &r.Z, &r.X) - FeSub(&r.X, &t0, &r.Y) - FeSub(&r.T, &r.T, &r.Z) -} - -func (p *ProjectiveGroupElement) ToBytes(s *[32]byte) { - var recip, x, y FieldElement - - FeInvert(&recip, &p.Z) - FeMul(&x, &p.X, &recip) - FeMul(&y, &p.Y, &recip) - FeToBytes(s, &y) - s[31] ^= FeIsNegative(&x) << 7 -} - -func (p *ExtendedGroupElement) Zero() { - FeZero(&p.X) - FeOne(&p.Y) - FeOne(&p.Z) - FeZero(&p.T) -} - -func (p *ExtendedGroupElement) Double(r *CompletedGroupElement) { - var q ProjectiveGroupElement - p.ToProjective(&q) - q.Double(r) -} - -func (p *ExtendedGroupElement) ToCached(r *CachedGroupElement) { - FeAdd(&r.yPlusX, &p.Y, &p.X) - FeSub(&r.yMinusX, &p.Y, &p.X) - FeCopy(&r.Z, &p.Z) - FeMul(&r.T2d, &p.T, &d2) -} - -func (p *ExtendedGroupElement) ToProjective(r *ProjectiveGroupElement) { - FeCopy(&r.X, &p.X) - FeCopy(&r.Y, &p.Y) - FeCopy(&r.Z, &p.Z) -} - -func (p *ExtendedGroupElement) ToBytes(s *[32]byte) { - var recip, x, y FieldElement - - FeInvert(&recip, &p.Z) - FeMul(&x, &p.X, &recip) - FeMul(&y, &p.Y, &recip) - FeToBytes(s, &y) - s[31] ^= FeIsNegative(&x) << 7 -} - -func (p *ExtendedGroupElement) FromBytes(s *[32]byte) bool { - var u, v, v3, vxx, check FieldElement - - FeFromBytes(&p.Y, s) - FeOne(&p.Z) - FeSquare(&u, &p.Y) - FeMul(&v, &u, &d) - FeSub(&u, &u, &p.Z) // y = y^2-1 - FeAdd(&v, &v, &p.Z) // v = dy^2+1 - - FeSquare(&v3, &v) - FeMul(&v3, &v3, &v) // v3 = v^3 - FeSquare(&p.X, &v3) - FeMul(&p.X, &p.X, &v) - FeMul(&p.X, &p.X, &u) // x = uv^7 - - fePow22523(&p.X, &p.X) // x = (uv^7)^((q-5)/8) - FeMul(&p.X, &p.X, &v3) - FeMul(&p.X, &p.X, &u) // x = uv^3(uv^7)^((q-5)/8) - - var tmpX, tmp2 [32]byte - - FeSquare(&vxx, &p.X) - FeMul(&vxx, &vxx, &v) - FeSub(&check, &vxx, &u) // vx^2-u - if FeIsNonZero(&check) == 1 { - FeAdd(&check, &vxx, &u) // vx^2+u - if FeIsNonZero(&check) == 1 { - return false - } - FeMul(&p.X, &p.X, &SqrtM1) - - FeToBytes(&tmpX, &p.X) - for i, v := range tmpX { - tmp2[31-i] = v - } - } - - if FeIsNegative(&p.X) != (s[31] >> 7) { - FeNeg(&p.X, &p.X) - } - - FeMul(&p.T, &p.X, &p.Y) - return true -} - -func (p *CompletedGroupElement) ToProjective(r *ProjectiveGroupElement) { - FeMul(&r.X, &p.X, &p.T) - FeMul(&r.Y, &p.Y, &p.Z) - FeMul(&r.Z, &p.Z, &p.T) -} - -func (p *CompletedGroupElement) ToExtended(r *ExtendedGroupElement) { - FeMul(&r.X, &p.X, &p.T) - FeMul(&r.Y, &p.Y, &p.Z) - FeMul(&r.Z, &p.Z, &p.T) - FeMul(&r.T, &p.X, &p.Y) -} - -func (p *PreComputedGroupElement) Zero() { - FeOne(&p.yPlusX) - FeOne(&p.yMinusX) - FeZero(&p.xy2d) -} - -func geAdd(r *CompletedGroupElement, p *ExtendedGroupElement, q *CachedGroupElement) { - var t0 FieldElement - - FeAdd(&r.X, &p.Y, &p.X) - FeSub(&r.Y, &p.Y, &p.X) - FeMul(&r.Z, &r.X, &q.yPlusX) - FeMul(&r.Y, &r.Y, &q.yMinusX) - FeMul(&r.T, &q.T2d, &p.T) - FeMul(&r.X, &p.Z, &q.Z) - FeAdd(&t0, &r.X, &r.X) - FeSub(&r.X, &r.Z, &r.Y) - FeAdd(&r.Y, &r.Z, &r.Y) - FeAdd(&r.Z, &t0, &r.T) - FeSub(&r.T, &t0, &r.T) -} - -func geSub(r *CompletedGroupElement, p *ExtendedGroupElement, q *CachedGroupElement) { - var t0 FieldElement - - FeAdd(&r.X, &p.Y, &p.X) - FeSub(&r.Y, &p.Y, &p.X) - FeMul(&r.Z, &r.X, &q.yMinusX) - FeMul(&r.Y, &r.Y, &q.yPlusX) - FeMul(&r.T, &q.T2d, &p.T) - FeMul(&r.X, &p.Z, &q.Z) - FeAdd(&t0, &r.X, &r.X) - FeSub(&r.X, &r.Z, &r.Y) - FeAdd(&r.Y, &r.Z, &r.Y) - FeSub(&r.Z, &t0, &r.T) - FeAdd(&r.T, &t0, &r.T) -} - -func geMixedAdd(r *CompletedGroupElement, p *ExtendedGroupElement, q *PreComputedGroupElement) { - var t0 FieldElement - - FeAdd(&r.X, &p.Y, &p.X) - FeSub(&r.Y, &p.Y, &p.X) - FeMul(&r.Z, &r.X, &q.yPlusX) - FeMul(&r.Y, &r.Y, &q.yMinusX) - FeMul(&r.T, &q.xy2d, &p.T) - FeAdd(&t0, &p.Z, &p.Z) - FeSub(&r.X, &r.Z, &r.Y) - FeAdd(&r.Y, &r.Z, &r.Y) - FeAdd(&r.Z, &t0, &r.T) - FeSub(&r.T, &t0, &r.T) -} - -func geMixedSub(r *CompletedGroupElement, p *ExtendedGroupElement, q *PreComputedGroupElement) { - var t0 FieldElement - - FeAdd(&r.X, &p.Y, &p.X) - FeSub(&r.Y, &p.Y, &p.X) - FeMul(&r.Z, &r.X, &q.yMinusX) - FeMul(&r.Y, &r.Y, &q.yPlusX) - FeMul(&r.T, &q.xy2d, &p.T) - FeAdd(&t0, &p.Z, &p.Z) - FeSub(&r.X, &r.Z, &r.Y) - FeAdd(&r.Y, &r.Z, &r.Y) - FeSub(&r.Z, &t0, &r.T) - FeAdd(&r.T, &t0, &r.T) -} - -func slide(r *[256]int8, a *[32]byte) { - for i := range r { - r[i] = int8(1 & (a[i>>3] >> uint(i&7))) - } - - for i := range r { - if r[i] != 0 { - for b := 1; b <= 6 && i+b < 256; b++ { - if r[i+b] != 0 { - if r[i]+(r[i+b]<= -15 { - r[i] -= r[i+b] << uint(b) - for k := i + b; k < 256; k++ { - if r[k] == 0 { - r[k] = 1 - break - } - r[k] = 0 - } - } else { - break - } - } - } - } - } -} - -// GeDoubleScalarMultVartime sets r = a*A + b*B -// where a = a[0]+256*a[1]+...+256^31 a[31]. -// and b = b[0]+256*b[1]+...+256^31 b[31]. -// B is the Ed25519 base point (x,4/5) with x positive. -func GeDoubleScalarMultVartime(r *ProjectiveGroupElement, a *[32]byte, A *ExtendedGroupElement, b *[32]byte) { - var aSlide, bSlide [256]int8 - var Ai [8]CachedGroupElement // A,3A,5A,7A,9A,11A,13A,15A - var t CompletedGroupElement - var u, A2 ExtendedGroupElement - var i int - - slide(&aSlide, a) - slide(&bSlide, b) - - A.ToCached(&Ai[0]) - A.Double(&t) - t.ToExtended(&A2) - - for i := 0; i < 7; i++ { - geAdd(&t, &A2, &Ai[i]) - t.ToExtended(&u) - u.ToCached(&Ai[i+1]) - } - - r.Zero() - - for i = 255; i >= 0; i-- { - if aSlide[i] != 0 || bSlide[i] != 0 { - break - } - } - - for ; i >= 0; i-- { - r.Double(&t) - - if aSlide[i] > 0 { - t.ToExtended(&u) - geAdd(&t, &u, &Ai[aSlide[i]/2]) - } else if aSlide[i] < 0 { - t.ToExtended(&u) - geSub(&t, &u, &Ai[(-aSlide[i])/2]) - } - - if bSlide[i] > 0 { - t.ToExtended(&u) - geMixedAdd(&t, &u, &bi[bSlide[i]/2]) - } else if bSlide[i] < 0 { - t.ToExtended(&u) - geMixedSub(&t, &u, &bi[(-bSlide[i])/2]) - } - - t.ToProjective(r) - } -} - -// equal returns 1 if b == c and 0 otherwise, assuming that b and c are -// non-negative. -func equal(b, c int32) int32 { - x := uint32(b ^ c) - x-- - return int32(x >> 31) -} - -// negative returns 1 if b < 0 and 0 otherwise. -func negative(b int32) int32 { - return (b >> 31) & 1 -} - -func PreComputedGroupElementCMove(t, u *PreComputedGroupElement, b int32) { - FeCMove(&t.yPlusX, &u.yPlusX, b) - FeCMove(&t.yMinusX, &u.yMinusX, b) - FeCMove(&t.xy2d, &u.xy2d, b) -} - -func selectPoint(t *PreComputedGroupElement, pos int32, b int32) { - var minusT PreComputedGroupElement - bNegative := negative(b) - bAbs := b - (((-bNegative) & b) << 1) - - t.Zero() - for i := int32(0); i < 8; i++ { - PreComputedGroupElementCMove(t, &base[pos][i], equal(bAbs, i+1)) - } - FeCopy(&minusT.yPlusX, &t.yMinusX) - FeCopy(&minusT.yMinusX, &t.yPlusX) - FeNeg(&minusT.xy2d, &t.xy2d) - PreComputedGroupElementCMove(t, &minusT, bNegative) -} - -// GeScalarMultBase computes h = a*B, where -// a = a[0]+256*a[1]+...+256^31 a[31] -// B is the Ed25519 base point (x,4/5) with x positive. -// -// Preconditions: -// a[31] <= 127 -func GeScalarMultBase(h *ExtendedGroupElement, a *[32]byte) { - var e [64]int8 - - for i, v := range a { - e[2*i] = int8(v & 15) - e[2*i+1] = int8((v >> 4) & 15) - } - - // each e[i] is between 0 and 15 and e[63] is between 0 and 7. - - carry := int8(0) - for i := 0; i < 63; i++ { - e[i] += carry - carry = (e[i] + 8) >> 4 - e[i] -= carry << 4 - } - e[63] += carry - // each e[i] is between -8 and 8. - - h.Zero() - var t PreComputedGroupElement - var r CompletedGroupElement - for i := int32(1); i < 64; i += 2 { - selectPoint(&t, i/2, int32(e[i])) - geMixedAdd(&r, h, &t) - r.ToExtended(h) - } - - var s ProjectiveGroupElement - - h.Double(&r) - r.ToProjective(&s) - s.Double(&r) - r.ToProjective(&s) - s.Double(&r) - r.ToProjective(&s) - s.Double(&r) - r.ToExtended(h) - - for i := int32(0); i < 64; i += 2 { - selectPoint(&t, i/2, int32(e[i])) - geMixedAdd(&r, h, &t) - r.ToExtended(h) - } -} - -// The scalars are GF(2^252 + 27742317777372353535851937790883648493). - -// Input: -// a[0]+256*a[1]+...+256^31*a[31] = a -// b[0]+256*b[1]+...+256^31*b[31] = b -// c[0]+256*c[1]+...+256^31*c[31] = c -// -// Output: -// s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l -// where l = 2^252 + 27742317777372353535851937790883648493. -func ScMulAdd(s, a, b, c *[32]byte) { - a0 := 2097151 & load3(a[:]) - a1 := 2097151 & (load4(a[2:]) >> 5) - a2 := 2097151 & (load3(a[5:]) >> 2) - a3 := 2097151 & (load4(a[7:]) >> 7) - a4 := 2097151 & (load4(a[10:]) >> 4) - a5 := 2097151 & (load3(a[13:]) >> 1) - a6 := 2097151 & (load4(a[15:]) >> 6) - a7 := 2097151 & (load3(a[18:]) >> 3) - a8 := 2097151 & load3(a[21:]) - a9 := 2097151 & (load4(a[23:]) >> 5) - a10 := 2097151 & (load3(a[26:]) >> 2) - a11 := (load4(a[28:]) >> 7) - b0 := 2097151 & load3(b[:]) - b1 := 2097151 & (load4(b[2:]) >> 5) - b2 := 2097151 & (load3(b[5:]) >> 2) - b3 := 2097151 & (load4(b[7:]) >> 7) - b4 := 2097151 & (load4(b[10:]) >> 4) - b5 := 2097151 & (load3(b[13:]) >> 1) - b6 := 2097151 & (load4(b[15:]) >> 6) - b7 := 2097151 & (load3(b[18:]) >> 3) - b8 := 2097151 & load3(b[21:]) - b9 := 2097151 & (load4(b[23:]) >> 5) - b10 := 2097151 & (load3(b[26:]) >> 2) - b11 := (load4(b[28:]) >> 7) - c0 := 2097151 & load3(c[:]) - c1 := 2097151 & (load4(c[2:]) >> 5) - c2 := 2097151 & (load3(c[5:]) >> 2) - c3 := 2097151 & (load4(c[7:]) >> 7) - c4 := 2097151 & (load4(c[10:]) >> 4) - c5 := 2097151 & (load3(c[13:]) >> 1) - c6 := 2097151 & (load4(c[15:]) >> 6) - c7 := 2097151 & (load3(c[18:]) >> 3) - c8 := 2097151 & load3(c[21:]) - c9 := 2097151 & (load4(c[23:]) >> 5) - c10 := 2097151 & (load3(c[26:]) >> 2) - c11 := (load4(c[28:]) >> 7) - var carry [23]int64 - - s0 := c0 + a0*b0 - s1 := c1 + a0*b1 + a1*b0 - s2 := c2 + a0*b2 + a1*b1 + a2*b0 - s3 := c3 + a0*b3 + a1*b2 + a2*b1 + a3*b0 - s4 := c4 + a0*b4 + a1*b3 + a2*b2 + a3*b1 + a4*b0 - s5 := c5 + a0*b5 + a1*b4 + a2*b3 + a3*b2 + a4*b1 + a5*b0 - s6 := c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0 - s7 := c7 + a0*b7 + a1*b6 + a2*b5 + a3*b4 + a4*b3 + a5*b2 + a6*b1 + a7*b0 - s8 := c8 + a0*b8 + a1*b7 + a2*b6 + a3*b5 + a4*b4 + a5*b3 + a6*b2 + a7*b1 + a8*b0 - s9 := c9 + a0*b9 + a1*b8 + a2*b7 + a3*b6 + a4*b5 + a5*b4 + a6*b3 + a7*b2 + a8*b1 + a9*b0 - s10 := c10 + a0*b10 + a1*b9 + a2*b8 + a3*b7 + a4*b6 + a5*b5 + a6*b4 + a7*b3 + a8*b2 + a9*b1 + a10*b0 - s11 := c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0 - s12 := a1*b11 + a2*b10 + a3*b9 + a4*b8 + a5*b7 + a6*b6 + a7*b5 + a8*b4 + a9*b3 + a10*b2 + a11*b1 - s13 := a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2 - s14 := a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3 - s15 := a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4 - s16 := a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5 - s17 := a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6 - s18 := a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7 - s19 := a8*b11 + a9*b10 + a10*b9 + a11*b8 - s20 := a9*b11 + a10*b10 + a11*b9 - s21 := a10*b11 + a11*b10 - s22 := a11 * b11 - s23 := int64(0) - - carry[0] = (s0 + (1 << 20)) >> 21 - s1 += carry[0] - s0 -= carry[0] << 21 - carry[2] = (s2 + (1 << 20)) >> 21 - s3 += carry[2] - s2 -= carry[2] << 21 - carry[4] = (s4 + (1 << 20)) >> 21 - s5 += carry[4] - s4 -= carry[4] << 21 - carry[6] = (s6 + (1 << 20)) >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[8] = (s8 + (1 << 20)) >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[10] = (s10 + (1 << 20)) >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - carry[12] = (s12 + (1 << 20)) >> 21 - s13 += carry[12] - s12 -= carry[12] << 21 - carry[14] = (s14 + (1 << 20)) >> 21 - s15 += carry[14] - s14 -= carry[14] << 21 - carry[16] = (s16 + (1 << 20)) >> 21 - s17 += carry[16] - s16 -= carry[16] << 21 - carry[18] = (s18 + (1 << 20)) >> 21 - s19 += carry[18] - s18 -= carry[18] << 21 - carry[20] = (s20 + (1 << 20)) >> 21 - s21 += carry[20] - s20 -= carry[20] << 21 - carry[22] = (s22 + (1 << 20)) >> 21 - s23 += carry[22] - s22 -= carry[22] << 21 - - carry[1] = (s1 + (1 << 20)) >> 21 - s2 += carry[1] - s1 -= carry[1] << 21 - carry[3] = (s3 + (1 << 20)) >> 21 - s4 += carry[3] - s3 -= carry[3] << 21 - carry[5] = (s5 + (1 << 20)) >> 21 - s6 += carry[5] - s5 -= carry[5] << 21 - carry[7] = (s7 + (1 << 20)) >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[9] = (s9 + (1 << 20)) >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[11] = (s11 + (1 << 20)) >> 21 - s12 += carry[11] - s11 -= carry[11] << 21 - carry[13] = (s13 + (1 << 20)) >> 21 - s14 += carry[13] - s13 -= carry[13] << 21 - carry[15] = (s15 + (1 << 20)) >> 21 - s16 += carry[15] - s15 -= carry[15] << 21 - carry[17] = (s17 + (1 << 20)) >> 21 - s18 += carry[17] - s17 -= carry[17] << 21 - carry[19] = (s19 + (1 << 20)) >> 21 - s20 += carry[19] - s19 -= carry[19] << 21 - carry[21] = (s21 + (1 << 20)) >> 21 - s22 += carry[21] - s21 -= carry[21] << 21 - - s11 += s23 * 666643 - s12 += s23 * 470296 - s13 += s23 * 654183 - s14 -= s23 * 997805 - s15 += s23 * 136657 - s16 -= s23 * 683901 - s23 = 0 - - s10 += s22 * 666643 - s11 += s22 * 470296 - s12 += s22 * 654183 - s13 -= s22 * 997805 - s14 += s22 * 136657 - s15 -= s22 * 683901 - s22 = 0 - - s9 += s21 * 666643 - s10 += s21 * 470296 - s11 += s21 * 654183 - s12 -= s21 * 997805 - s13 += s21 * 136657 - s14 -= s21 * 683901 - s21 = 0 - - s8 += s20 * 666643 - s9 += s20 * 470296 - s10 += s20 * 654183 - s11 -= s20 * 997805 - s12 += s20 * 136657 - s13 -= s20 * 683901 - s20 = 0 - - s7 += s19 * 666643 - s8 += s19 * 470296 - s9 += s19 * 654183 - s10 -= s19 * 997805 - s11 += s19 * 136657 - s12 -= s19 * 683901 - s19 = 0 - - s6 += s18 * 666643 - s7 += s18 * 470296 - s8 += s18 * 654183 - s9 -= s18 * 997805 - s10 += s18 * 136657 - s11 -= s18 * 683901 - s18 = 0 - - carry[6] = (s6 + (1 << 20)) >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[8] = (s8 + (1 << 20)) >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[10] = (s10 + (1 << 20)) >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - carry[12] = (s12 + (1 << 20)) >> 21 - s13 += carry[12] - s12 -= carry[12] << 21 - carry[14] = (s14 + (1 << 20)) >> 21 - s15 += carry[14] - s14 -= carry[14] << 21 - carry[16] = (s16 + (1 << 20)) >> 21 - s17 += carry[16] - s16 -= carry[16] << 21 - - carry[7] = (s7 + (1 << 20)) >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[9] = (s9 + (1 << 20)) >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[11] = (s11 + (1 << 20)) >> 21 - s12 += carry[11] - s11 -= carry[11] << 21 - carry[13] = (s13 + (1 << 20)) >> 21 - s14 += carry[13] - s13 -= carry[13] << 21 - carry[15] = (s15 + (1 << 20)) >> 21 - s16 += carry[15] - s15 -= carry[15] << 21 - - s5 += s17 * 666643 - s6 += s17 * 470296 - s7 += s17 * 654183 - s8 -= s17 * 997805 - s9 += s17 * 136657 - s10 -= s17 * 683901 - s17 = 0 - - s4 += s16 * 666643 - s5 += s16 * 470296 - s6 += s16 * 654183 - s7 -= s16 * 997805 - s8 += s16 * 136657 - s9 -= s16 * 683901 - s16 = 0 - - s3 += s15 * 666643 - s4 += s15 * 470296 - s5 += s15 * 654183 - s6 -= s15 * 997805 - s7 += s15 * 136657 - s8 -= s15 * 683901 - s15 = 0 - - s2 += s14 * 666643 - s3 += s14 * 470296 - s4 += s14 * 654183 - s5 -= s14 * 997805 - s6 += s14 * 136657 - s7 -= s14 * 683901 - s14 = 0 - - s1 += s13 * 666643 - s2 += s13 * 470296 - s3 += s13 * 654183 - s4 -= s13 * 997805 - s5 += s13 * 136657 - s6 -= s13 * 683901 - s13 = 0 - - s0 += s12 * 666643 - s1 += s12 * 470296 - s2 += s12 * 654183 - s3 -= s12 * 997805 - s4 += s12 * 136657 - s5 -= s12 * 683901 - s12 = 0 - - carry[0] = (s0 + (1 << 20)) >> 21 - s1 += carry[0] - s0 -= carry[0] << 21 - carry[2] = (s2 + (1 << 20)) >> 21 - s3 += carry[2] - s2 -= carry[2] << 21 - carry[4] = (s4 + (1 << 20)) >> 21 - s5 += carry[4] - s4 -= carry[4] << 21 - carry[6] = (s6 + (1 << 20)) >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[8] = (s8 + (1 << 20)) >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[10] = (s10 + (1 << 20)) >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - - carry[1] = (s1 + (1 << 20)) >> 21 - s2 += carry[1] - s1 -= carry[1] << 21 - carry[3] = (s3 + (1 << 20)) >> 21 - s4 += carry[3] - s3 -= carry[3] << 21 - carry[5] = (s5 + (1 << 20)) >> 21 - s6 += carry[5] - s5 -= carry[5] << 21 - carry[7] = (s7 + (1 << 20)) >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[9] = (s9 + (1 << 20)) >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[11] = (s11 + (1 << 20)) >> 21 - s12 += carry[11] - s11 -= carry[11] << 21 - - s0 += s12 * 666643 - s1 += s12 * 470296 - s2 += s12 * 654183 - s3 -= s12 * 997805 - s4 += s12 * 136657 - s5 -= s12 * 683901 - s12 = 0 - - carry[0] = s0 >> 21 - s1 += carry[0] - s0 -= carry[0] << 21 - carry[1] = s1 >> 21 - s2 += carry[1] - s1 -= carry[1] << 21 - carry[2] = s2 >> 21 - s3 += carry[2] - s2 -= carry[2] << 21 - carry[3] = s3 >> 21 - s4 += carry[3] - s3 -= carry[3] << 21 - carry[4] = s4 >> 21 - s5 += carry[4] - s4 -= carry[4] << 21 - carry[5] = s5 >> 21 - s6 += carry[5] - s5 -= carry[5] << 21 - carry[6] = s6 >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[7] = s7 >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[8] = s8 >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[9] = s9 >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[10] = s10 >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - carry[11] = s11 >> 21 - s12 += carry[11] - s11 -= carry[11] << 21 - - s0 += s12 * 666643 - s1 += s12 * 470296 - s2 += s12 * 654183 - s3 -= s12 * 997805 - s4 += s12 * 136657 - s5 -= s12 * 683901 - s12 = 0 - - carry[0] = s0 >> 21 - s1 += carry[0] - s0 -= carry[0] << 21 - carry[1] = s1 >> 21 - s2 += carry[1] - s1 -= carry[1] << 21 - carry[2] = s2 >> 21 - s3 += carry[2] - s2 -= carry[2] << 21 - carry[3] = s3 >> 21 - s4 += carry[3] - s3 -= carry[3] << 21 - carry[4] = s4 >> 21 - s5 += carry[4] - s4 -= carry[4] << 21 - carry[5] = s5 >> 21 - s6 += carry[5] - s5 -= carry[5] << 21 - carry[6] = s6 >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[7] = s7 >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[8] = s8 >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[9] = s9 >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[10] = s10 >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - - s[0] = byte(s0 >> 0) - s[1] = byte(s0 >> 8) - s[2] = byte((s0 >> 16) | (s1 << 5)) - s[3] = byte(s1 >> 3) - s[4] = byte(s1 >> 11) - s[5] = byte((s1 >> 19) | (s2 << 2)) - s[6] = byte(s2 >> 6) - s[7] = byte((s2 >> 14) | (s3 << 7)) - s[8] = byte(s3 >> 1) - s[9] = byte(s3 >> 9) - s[10] = byte((s3 >> 17) | (s4 << 4)) - s[11] = byte(s4 >> 4) - s[12] = byte(s4 >> 12) - s[13] = byte((s4 >> 20) | (s5 << 1)) - s[14] = byte(s5 >> 7) - s[15] = byte((s5 >> 15) | (s6 << 6)) - s[16] = byte(s6 >> 2) - s[17] = byte(s6 >> 10) - s[18] = byte((s6 >> 18) | (s7 << 3)) - s[19] = byte(s7 >> 5) - s[20] = byte(s7 >> 13) - s[21] = byte(s8 >> 0) - s[22] = byte(s8 >> 8) - s[23] = byte((s8 >> 16) | (s9 << 5)) - s[24] = byte(s9 >> 3) - s[25] = byte(s9 >> 11) - s[26] = byte((s9 >> 19) | (s10 << 2)) - s[27] = byte(s10 >> 6) - s[28] = byte((s10 >> 14) | (s11 << 7)) - s[29] = byte(s11 >> 1) - s[30] = byte(s11 >> 9) - s[31] = byte(s11 >> 17) -} - -// Input: -// s[0]+256*s[1]+...+256^63*s[63] = s -// -// Output: -// s[0]+256*s[1]+...+256^31*s[31] = s mod l -// where l = 2^252 + 27742317777372353535851937790883648493. -func ScReduce(out *[32]byte, s *[64]byte) { - s0 := 2097151 & load3(s[:]) - s1 := 2097151 & (load4(s[2:]) >> 5) - s2 := 2097151 & (load3(s[5:]) >> 2) - s3 := 2097151 & (load4(s[7:]) >> 7) - s4 := 2097151 & (load4(s[10:]) >> 4) - s5 := 2097151 & (load3(s[13:]) >> 1) - s6 := 2097151 & (load4(s[15:]) >> 6) - s7 := 2097151 & (load3(s[18:]) >> 3) - s8 := 2097151 & load3(s[21:]) - s9 := 2097151 & (load4(s[23:]) >> 5) - s10 := 2097151 & (load3(s[26:]) >> 2) - s11 := 2097151 & (load4(s[28:]) >> 7) - s12 := 2097151 & (load4(s[31:]) >> 4) - s13 := 2097151 & (load3(s[34:]) >> 1) - s14 := 2097151 & (load4(s[36:]) >> 6) - s15 := 2097151 & (load3(s[39:]) >> 3) - s16 := 2097151 & load3(s[42:]) - s17 := 2097151 & (load4(s[44:]) >> 5) - s18 := 2097151 & (load3(s[47:]) >> 2) - s19 := 2097151 & (load4(s[49:]) >> 7) - s20 := 2097151 & (load4(s[52:]) >> 4) - s21 := 2097151 & (load3(s[55:]) >> 1) - s22 := 2097151 & (load4(s[57:]) >> 6) - s23 := (load4(s[60:]) >> 3) - - s11 += s23 * 666643 - s12 += s23 * 470296 - s13 += s23 * 654183 - s14 -= s23 * 997805 - s15 += s23 * 136657 - s16 -= s23 * 683901 - s23 = 0 - - s10 += s22 * 666643 - s11 += s22 * 470296 - s12 += s22 * 654183 - s13 -= s22 * 997805 - s14 += s22 * 136657 - s15 -= s22 * 683901 - s22 = 0 - - s9 += s21 * 666643 - s10 += s21 * 470296 - s11 += s21 * 654183 - s12 -= s21 * 997805 - s13 += s21 * 136657 - s14 -= s21 * 683901 - s21 = 0 - - s8 += s20 * 666643 - s9 += s20 * 470296 - s10 += s20 * 654183 - s11 -= s20 * 997805 - s12 += s20 * 136657 - s13 -= s20 * 683901 - s20 = 0 - - s7 += s19 * 666643 - s8 += s19 * 470296 - s9 += s19 * 654183 - s10 -= s19 * 997805 - s11 += s19 * 136657 - s12 -= s19 * 683901 - s19 = 0 - - s6 += s18 * 666643 - s7 += s18 * 470296 - s8 += s18 * 654183 - s9 -= s18 * 997805 - s10 += s18 * 136657 - s11 -= s18 * 683901 - s18 = 0 - - var carry [17]int64 - - carry[6] = (s6 + (1 << 20)) >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[8] = (s8 + (1 << 20)) >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[10] = (s10 + (1 << 20)) >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - carry[12] = (s12 + (1 << 20)) >> 21 - s13 += carry[12] - s12 -= carry[12] << 21 - carry[14] = (s14 + (1 << 20)) >> 21 - s15 += carry[14] - s14 -= carry[14] << 21 - carry[16] = (s16 + (1 << 20)) >> 21 - s17 += carry[16] - s16 -= carry[16] << 21 - - carry[7] = (s7 + (1 << 20)) >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[9] = (s9 + (1 << 20)) >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[11] = (s11 + (1 << 20)) >> 21 - s12 += carry[11] - s11 -= carry[11] << 21 - carry[13] = (s13 + (1 << 20)) >> 21 - s14 += carry[13] - s13 -= carry[13] << 21 - carry[15] = (s15 + (1 << 20)) >> 21 - s16 += carry[15] - s15 -= carry[15] << 21 - - s5 += s17 * 666643 - s6 += s17 * 470296 - s7 += s17 * 654183 - s8 -= s17 * 997805 - s9 += s17 * 136657 - s10 -= s17 * 683901 - s17 = 0 - - s4 += s16 * 666643 - s5 += s16 * 470296 - s6 += s16 * 654183 - s7 -= s16 * 997805 - s8 += s16 * 136657 - s9 -= s16 * 683901 - s16 = 0 - - s3 += s15 * 666643 - s4 += s15 * 470296 - s5 += s15 * 654183 - s6 -= s15 * 997805 - s7 += s15 * 136657 - s8 -= s15 * 683901 - s15 = 0 - - s2 += s14 * 666643 - s3 += s14 * 470296 - s4 += s14 * 654183 - s5 -= s14 * 997805 - s6 += s14 * 136657 - s7 -= s14 * 683901 - s14 = 0 - - s1 += s13 * 666643 - s2 += s13 * 470296 - s3 += s13 * 654183 - s4 -= s13 * 997805 - s5 += s13 * 136657 - s6 -= s13 * 683901 - s13 = 0 - - s0 += s12 * 666643 - s1 += s12 * 470296 - s2 += s12 * 654183 - s3 -= s12 * 997805 - s4 += s12 * 136657 - s5 -= s12 * 683901 - s12 = 0 - - carry[0] = (s0 + (1 << 20)) >> 21 - s1 += carry[0] - s0 -= carry[0] << 21 - carry[2] = (s2 + (1 << 20)) >> 21 - s3 += carry[2] - s2 -= carry[2] << 21 - carry[4] = (s4 + (1 << 20)) >> 21 - s5 += carry[4] - s4 -= carry[4] << 21 - carry[6] = (s6 + (1 << 20)) >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[8] = (s8 + (1 << 20)) >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[10] = (s10 + (1 << 20)) >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - - carry[1] = (s1 + (1 << 20)) >> 21 - s2 += carry[1] - s1 -= carry[1] << 21 - carry[3] = (s3 + (1 << 20)) >> 21 - s4 += carry[3] - s3 -= carry[3] << 21 - carry[5] = (s5 + (1 << 20)) >> 21 - s6 += carry[5] - s5 -= carry[5] << 21 - carry[7] = (s7 + (1 << 20)) >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[9] = (s9 + (1 << 20)) >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[11] = (s11 + (1 << 20)) >> 21 - s12 += carry[11] - s11 -= carry[11] << 21 - - s0 += s12 * 666643 - s1 += s12 * 470296 - s2 += s12 * 654183 - s3 -= s12 * 997805 - s4 += s12 * 136657 - s5 -= s12 * 683901 - s12 = 0 - - carry[0] = s0 >> 21 - s1 += carry[0] - s0 -= carry[0] << 21 - carry[1] = s1 >> 21 - s2 += carry[1] - s1 -= carry[1] << 21 - carry[2] = s2 >> 21 - s3 += carry[2] - s2 -= carry[2] << 21 - carry[3] = s3 >> 21 - s4 += carry[3] - s3 -= carry[3] << 21 - carry[4] = s4 >> 21 - s5 += carry[4] - s4 -= carry[4] << 21 - carry[5] = s5 >> 21 - s6 += carry[5] - s5 -= carry[5] << 21 - carry[6] = s6 >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[7] = s7 >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[8] = s8 >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[9] = s9 >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[10] = s10 >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - carry[11] = s11 >> 21 - s12 += carry[11] - s11 -= carry[11] << 21 - - s0 += s12 * 666643 - s1 += s12 * 470296 - s2 += s12 * 654183 - s3 -= s12 * 997805 - s4 += s12 * 136657 - s5 -= s12 * 683901 - s12 = 0 - - carry[0] = s0 >> 21 - s1 += carry[0] - s0 -= carry[0] << 21 - carry[1] = s1 >> 21 - s2 += carry[1] - s1 -= carry[1] << 21 - carry[2] = s2 >> 21 - s3 += carry[2] - s2 -= carry[2] << 21 - carry[3] = s3 >> 21 - s4 += carry[3] - s3 -= carry[3] << 21 - carry[4] = s4 >> 21 - s5 += carry[4] - s4 -= carry[4] << 21 - carry[5] = s5 >> 21 - s6 += carry[5] - s5 -= carry[5] << 21 - carry[6] = s6 >> 21 - s7 += carry[6] - s6 -= carry[6] << 21 - carry[7] = s7 >> 21 - s8 += carry[7] - s7 -= carry[7] << 21 - carry[8] = s8 >> 21 - s9 += carry[8] - s8 -= carry[8] << 21 - carry[9] = s9 >> 21 - s10 += carry[9] - s9 -= carry[9] << 21 - carry[10] = s10 >> 21 - s11 += carry[10] - s10 -= carry[10] << 21 - - out[0] = byte(s0 >> 0) - out[1] = byte(s0 >> 8) - out[2] = byte((s0 >> 16) | (s1 << 5)) - out[3] = byte(s1 >> 3) - out[4] = byte(s1 >> 11) - out[5] = byte((s1 >> 19) | (s2 << 2)) - out[6] = byte(s2 >> 6) - out[7] = byte((s2 >> 14) | (s3 << 7)) - out[8] = byte(s3 >> 1) - out[9] = byte(s3 >> 9) - out[10] = byte((s3 >> 17) | (s4 << 4)) - out[11] = byte(s4 >> 4) - out[12] = byte(s4 >> 12) - out[13] = byte((s4 >> 20) | (s5 << 1)) - out[14] = byte(s5 >> 7) - out[15] = byte((s5 >> 15) | (s6 << 6)) - out[16] = byte(s6 >> 2) - out[17] = byte(s6 >> 10) - out[18] = byte((s6 >> 18) | (s7 << 3)) - out[19] = byte(s7 >> 5) - out[20] = byte(s7 >> 13) - out[21] = byte(s8 >> 0) - out[22] = byte(s8 >> 8) - out[23] = byte((s8 >> 16) | (s9 << 5)) - out[24] = byte(s9 >> 3) - out[25] = byte(s9 >> 11) - out[26] = byte((s9 >> 19) | (s10 << 2)) - out[27] = byte(s10 >> 6) - out[28] = byte((s10 >> 14) | (s11 << 7)) - out[29] = byte(s11 >> 1) - out[30] = byte(s11 >> 9) - out[31] = byte(s11 >> 17) -} diff --git a/vendor/golang.org/x/crypto/ed25519/testdata/sign.input.gz b/vendor/golang.org/x/crypto/ed25519/testdata/sign.input.gz deleted file mode 100644 index 41030690..00000000 Binary files a/vendor/golang.org/x/crypto/ed25519/testdata/sign.input.gz and /dev/null differ diff --git a/vendor/golang.org/x/crypto/hkdf/example_test.go b/vendor/golang.org/x/crypto/hkdf/example_test.go deleted file mode 100644 index df843951..00000000 --- a/vendor/golang.org/x/crypto/hkdf/example_test.go +++ /dev/null @@ -1,61 +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 hkdf_test - -import ( - "bytes" - "crypto/rand" - "crypto/sha256" - "fmt" - "golang.org/x/crypto/hkdf" - "io" -) - -// Usage example that expands one master key into three other cryptographically -// secure keys. -func Example_usage() { - // Underlying hash function to use - hash := sha256.New - - // Cryptographically secure master key. - master := []byte{0x00, 0x01, 0x02, 0x03} // i.e. NOT this. - - // Non secret salt, optional (can be nil) - // Recommended: hash-length sized random - salt := make([]byte, hash().Size()) - n, err := io.ReadFull(rand.Reader, salt) - if n != len(salt) || err != nil { - fmt.Println("error:", err) - return - } - - // Non secret context specific info, optional (can be nil). - // Note, independent from the master key. - info := []byte{0x03, 0x14, 0x15, 0x92, 0x65} - - // Create the key derivation function - hkdf := hkdf.New(hash, master, salt, info) - - // Generate the required keys - keys := make([][]byte, 3) - for i := 0; i < len(keys); i++ { - keys[i] = make([]byte, 24) - n, err := io.ReadFull(hkdf, keys[i]) - if n != len(keys[i]) || err != nil { - fmt.Println("error:", err) - return - } - } - - // Keys should contain 192 bit random keys - for i := 1; i <= len(keys); i++ { - fmt.Printf("Key #%d: %v\n", i, !bytes.Equal(keys[i-1], make([]byte, 24))) - } - - // Output: - // Key #1: true - // Key #2: true - // Key #3: true -} diff --git a/vendor/golang.org/x/crypto/hkdf/hkdf.go b/vendor/golang.org/x/crypto/hkdf/hkdf.go deleted file mode 100644 index 5bc24635..00000000 --- a/vendor/golang.org/x/crypto/hkdf/hkdf.go +++ /dev/null @@ -1,75 +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 hkdf implements the HMAC-based Extract-and-Expand Key Derivation -// Function (HKDF) as defined in RFC 5869. -// -// HKDF is a cryptographic key derivation function (KDF) with the goal of -// expanding limited input keying material into one or more cryptographically -// strong secret keys. -// -// RFC 5869: https://tools.ietf.org/html/rfc5869 -package hkdf // import "golang.org/x/crypto/hkdf" - -import ( - "crypto/hmac" - "errors" - "hash" - "io" -) - -type hkdf struct { - expander hash.Hash - size int - - info []byte - counter byte - - prev []byte - cache []byte -} - -func (f *hkdf) Read(p []byte) (int, error) { - // Check whether enough data can be generated - need := len(p) - remains := len(f.cache) + int(255-f.counter+1)*f.size - if remains < need { - return 0, errors.New("hkdf: entropy limit reached") - } - // Read from the cache, if enough data is present - n := copy(p, f.cache) - p = p[n:] - - // Fill the buffer - for len(p) > 0 { - f.expander.Reset() - f.expander.Write(f.prev) - f.expander.Write(f.info) - f.expander.Write([]byte{f.counter}) - f.prev = f.expander.Sum(f.prev[:0]) - f.counter++ - - // Copy the new batch into p - f.cache = f.prev - n = copy(p, f.cache) - p = p[n:] - } - // Save leftovers for next run - f.cache = f.cache[n:] - - return need, nil -} - -// New returns a new HKDF using the given hash, the secret keying material to expand -// and optional salt and info fields. -func New(hash func() hash.Hash, secret, salt, info []byte) io.Reader { - if salt == nil { - salt = make([]byte, hash().Size()) - } - extractor := hmac.New(hash, salt) - extractor.Write(secret) - prk := extractor.Sum(nil) - - return &hkdf{hmac.New(hash, prk), extractor.Size(), info, 1, nil, nil} -} diff --git a/vendor/golang.org/x/crypto/hkdf/hkdf_test.go b/vendor/golang.org/x/crypto/hkdf/hkdf_test.go deleted file mode 100644 index cee659bc..00000000 --- a/vendor/golang.org/x/crypto/hkdf/hkdf_test.go +++ /dev/null @@ -1,370 +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 hkdf - -import ( - "bytes" - "crypto/md5" - "crypto/sha1" - "crypto/sha256" - "crypto/sha512" - "hash" - "io" - "testing" -) - -type hkdfTest struct { - hash func() hash.Hash - master []byte - salt []byte - info []byte - out []byte -} - -var hkdfTests = []hkdfTest{ - // Tests from RFC 5869 - { - sha256.New, - []byte{ - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - }, - []byte{ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, - }, - []byte{ - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, - }, - []byte{ - 0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a, - 0x90, 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a, - 0x2d, 0x2d, 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c, - 0x5d, 0xb0, 0x2d, 0x56, 0xec, 0xc4, 0xc5, 0xbf, - 0x34, 0x00, 0x72, 0x08, 0xd5, 0xb8, 0x87, 0x18, - 0x58, 0x65, - }, - }, - { - sha256.New, - []byte{ - 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, 0x1f, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, - 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, - }, - []byte{ - 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, - 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - }, - []byte{ - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, - 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, - }, - []byte{ - 0xb1, 0x1e, 0x39, 0x8d, 0xc8, 0x03, 0x27, 0xa1, - 0xc8, 0xe7, 0xf7, 0x8c, 0x59, 0x6a, 0x49, 0x34, - 0x4f, 0x01, 0x2e, 0xda, 0x2d, 0x4e, 0xfa, 0xd8, - 0xa0, 0x50, 0xcc, 0x4c, 0x19, 0xaf, 0xa9, 0x7c, - 0x59, 0x04, 0x5a, 0x99, 0xca, 0xc7, 0x82, 0x72, - 0x71, 0xcb, 0x41, 0xc6, 0x5e, 0x59, 0x0e, 0x09, - 0xda, 0x32, 0x75, 0x60, 0x0c, 0x2f, 0x09, 0xb8, - 0x36, 0x77, 0x93, 0xa9, 0xac, 0xa3, 0xdb, 0x71, - 0xcc, 0x30, 0xc5, 0x81, 0x79, 0xec, 0x3e, 0x87, - 0xc1, 0x4c, 0x01, 0xd5, 0xc1, 0xf3, 0x43, 0x4f, - 0x1d, 0x87, - }, - }, - { - sha256.New, - []byte{ - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - }, - []byte{}, - []byte{}, - []byte{ - 0x8d, 0xa4, 0xe7, 0x75, 0xa5, 0x63, 0xc1, 0x8f, - 0x71, 0x5f, 0x80, 0x2a, 0x06, 0x3c, 0x5a, 0x31, - 0xb8, 0xa1, 0x1f, 0x5c, 0x5e, 0xe1, 0x87, 0x9e, - 0xc3, 0x45, 0x4e, 0x5f, 0x3c, 0x73, 0x8d, 0x2d, - 0x9d, 0x20, 0x13, 0x95, 0xfa, 0xa4, 0xb6, 0x1a, - 0x96, 0xc8, - }, - }, - { - sha1.New, - []byte{ - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, - }, - []byte{ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, - }, - []byte{ - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, - }, - []byte{ - 0x08, 0x5a, 0x01, 0xea, 0x1b, 0x10, 0xf3, 0x69, - 0x33, 0x06, 0x8b, 0x56, 0xef, 0xa5, 0xad, 0x81, - 0xa4, 0xf1, 0x4b, 0x82, 0x2f, 0x5b, 0x09, 0x15, - 0x68, 0xa9, 0xcd, 0xd4, 0xf1, 0x55, 0xfd, 0xa2, - 0xc2, 0x2e, 0x42, 0x24, 0x78, 0xd3, 0x05, 0xf3, - 0xf8, 0x96, - }, - }, - { - sha1.New, - []byte{ - 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, 0x1f, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, - 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, - }, - []byte{ - 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, - 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - }, - []byte{ - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, - 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, - }, - []byte{ - 0x0b, 0xd7, 0x70, 0xa7, 0x4d, 0x11, 0x60, 0xf7, - 0xc9, 0xf1, 0x2c, 0xd5, 0x91, 0x2a, 0x06, 0xeb, - 0xff, 0x6a, 0xdc, 0xae, 0x89, 0x9d, 0x92, 0x19, - 0x1f, 0xe4, 0x30, 0x56, 0x73, 0xba, 0x2f, 0xfe, - 0x8f, 0xa3, 0xf1, 0xa4, 0xe5, 0xad, 0x79, 0xf3, - 0xf3, 0x34, 0xb3, 0xb2, 0x02, 0xb2, 0x17, 0x3c, - 0x48, 0x6e, 0xa3, 0x7c, 0xe3, 0xd3, 0x97, 0xed, - 0x03, 0x4c, 0x7f, 0x9d, 0xfe, 0xb1, 0x5c, 0x5e, - 0x92, 0x73, 0x36, 0xd0, 0x44, 0x1f, 0x4c, 0x43, - 0x00, 0xe2, 0xcf, 0xf0, 0xd0, 0x90, 0x0b, 0x52, - 0xd3, 0xb4, - }, - }, - { - sha1.New, - []byte{ - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - }, - []byte{}, - []byte{}, - []byte{ - 0x0a, 0xc1, 0xaf, 0x70, 0x02, 0xb3, 0xd7, 0x61, - 0xd1, 0xe5, 0x52, 0x98, 0xda, 0x9d, 0x05, 0x06, - 0xb9, 0xae, 0x52, 0x05, 0x72, 0x20, 0xa3, 0x06, - 0xe0, 0x7b, 0x6b, 0x87, 0xe8, 0xdf, 0x21, 0xd0, - 0xea, 0x00, 0x03, 0x3d, 0xe0, 0x39, 0x84, 0xd3, - 0x49, 0x18, - }, - }, - { - sha1.New, - []byte{ - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - }, - nil, - []byte{}, - []byte{ - 0x2c, 0x91, 0x11, 0x72, 0x04, 0xd7, 0x45, 0xf3, - 0x50, 0x0d, 0x63, 0x6a, 0x62, 0xf6, 0x4f, 0x0a, - 0xb3, 0xba, 0xe5, 0x48, 0xaa, 0x53, 0xd4, 0x23, - 0xb0, 0xd1, 0xf2, 0x7e, 0xbb, 0xa6, 0xf5, 0xe5, - 0x67, 0x3a, 0x08, 0x1d, 0x70, 0xcc, 0xe7, 0xac, - 0xfc, 0x48, - }, - }, -} - -func TestHKDF(t *testing.T) { - for i, tt := range hkdfTests { - hkdf := New(tt.hash, tt.master, tt.salt, tt.info) - out := make([]byte, len(tt.out)) - - n, err := io.ReadFull(hkdf, out) - if n != len(tt.out) || err != nil { - t.Errorf("test %d: not enough output bytes: %d.", i, n) - } - - if !bytes.Equal(out, tt.out) { - t.Errorf("test %d: incorrect output: have %v, need %v.", i, out, tt.out) - } - } -} - -func TestHKDFMultiRead(t *testing.T) { - for i, tt := range hkdfTests { - hkdf := New(tt.hash, tt.master, tt.salt, tt.info) - out := make([]byte, len(tt.out)) - - for b := 0; b < len(tt.out); b++ { - n, err := io.ReadFull(hkdf, out[b:b+1]) - if n != 1 || err != nil { - t.Errorf("test %d.%d: not enough output bytes: have %d, need %d .", i, b, n, len(tt.out)) - } - } - - if !bytes.Equal(out, tt.out) { - t.Errorf("test %d: incorrect output: have %v, need %v.", i, out, tt.out) - } - } -} - -func TestHKDFLimit(t *testing.T) { - hash := sha1.New - master := []byte{0x00, 0x01, 0x02, 0x03} - info := []byte{} - - hkdf := New(hash, master, nil, info) - limit := hash().Size() * 255 - out := make([]byte, limit) - - // The maximum output bytes should be extractable - n, err := io.ReadFull(hkdf, out) - if n != limit || err != nil { - t.Errorf("not enough output bytes: %d, %v.", n, err) - } - - // Reading one more should fail - n, err = io.ReadFull(hkdf, make([]byte, 1)) - if n > 0 || err == nil { - t.Errorf("key expansion overflowed: n = %d, err = %v", n, err) - } -} - -func Benchmark16ByteMD5Single(b *testing.B) { - benchmarkHKDFSingle(md5.New, 16, b) -} - -func Benchmark20ByteSHA1Single(b *testing.B) { - benchmarkHKDFSingle(sha1.New, 20, b) -} - -func Benchmark32ByteSHA256Single(b *testing.B) { - benchmarkHKDFSingle(sha256.New, 32, b) -} - -func Benchmark64ByteSHA512Single(b *testing.B) { - benchmarkHKDFSingle(sha512.New, 64, b) -} - -func Benchmark8ByteMD5Stream(b *testing.B) { - benchmarkHKDFStream(md5.New, 8, b) -} - -func Benchmark16ByteMD5Stream(b *testing.B) { - benchmarkHKDFStream(md5.New, 16, b) -} - -func Benchmark8ByteSHA1Stream(b *testing.B) { - benchmarkHKDFStream(sha1.New, 8, b) -} - -func Benchmark20ByteSHA1Stream(b *testing.B) { - benchmarkHKDFStream(sha1.New, 20, b) -} - -func Benchmark8ByteSHA256Stream(b *testing.B) { - benchmarkHKDFStream(sha256.New, 8, b) -} - -func Benchmark32ByteSHA256Stream(b *testing.B) { - benchmarkHKDFStream(sha256.New, 32, b) -} - -func Benchmark8ByteSHA512Stream(b *testing.B) { - benchmarkHKDFStream(sha512.New, 8, b) -} - -func Benchmark64ByteSHA512Stream(b *testing.B) { - benchmarkHKDFStream(sha512.New, 64, b) -} - -func benchmarkHKDFSingle(hasher func() hash.Hash, block int, b *testing.B) { - master := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07} - salt := []byte{0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17} - info := []byte{0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27} - out := make([]byte, block) - - b.SetBytes(int64(block)) - b.ResetTimer() - - for i := 0; i < b.N; i++ { - hkdf := New(hasher, master, salt, info) - io.ReadFull(hkdf, out) - } -} - -func benchmarkHKDFStream(hasher func() hash.Hash, block int, b *testing.B) { - master := []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07} - salt := []byte{0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17} - info := []byte{0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27} - out := make([]byte, block) - - b.SetBytes(int64(block)) - b.ResetTimer() - - hkdf := New(hasher, master, salt, info) - for i := 0; i < b.N; i++ { - _, err := io.ReadFull(hkdf, out) - if err != nil { - hkdf = New(hasher, master, salt, info) - i-- - } - } -} diff --git a/vendor/golang.org/x/crypto/internal/chacha20/chacha_generic.go b/vendor/golang.org/x/crypto/internal/chacha20/chacha_generic.go deleted file mode 100644 index 0f8efdba..00000000 --- a/vendor/golang.org/x/crypto/internal/chacha20/chacha_generic.go +++ /dev/null @@ -1,198 +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 ChaCha20 implements the core ChaCha20 function as specified in https://tools.ietf.org/html/rfc7539#section-2.3. -package chacha20 - -import "encoding/binary" - -const rounds = 20 - -// core applies the ChaCha20 core function to 16-byte input in, 32-byte key k, -// and 16-byte constant c, and puts the result into 64-byte array out. -func core(out *[64]byte, in *[16]byte, k *[32]byte) { - j0 := uint32(0x61707865) - j1 := uint32(0x3320646e) - j2 := uint32(0x79622d32) - j3 := uint32(0x6b206574) - j4 := binary.LittleEndian.Uint32(k[0:4]) - j5 := binary.LittleEndian.Uint32(k[4:8]) - j6 := binary.LittleEndian.Uint32(k[8:12]) - j7 := binary.LittleEndian.Uint32(k[12:16]) - j8 := binary.LittleEndian.Uint32(k[16:20]) - j9 := binary.LittleEndian.Uint32(k[20:24]) - j10 := binary.LittleEndian.Uint32(k[24:28]) - j11 := binary.LittleEndian.Uint32(k[28:32]) - j12 := binary.LittleEndian.Uint32(in[0:4]) - j13 := binary.LittleEndian.Uint32(in[4:8]) - j14 := binary.LittleEndian.Uint32(in[8:12]) - j15 := binary.LittleEndian.Uint32(in[12:16]) - - x0, x1, x2, x3, x4, x5, x6, x7 := j0, j1, j2, j3, j4, j5, j6, j7 - x8, x9, x10, x11, x12, x13, x14, x15 := j8, j9, j10, j11, j12, j13, j14, j15 - - for i := 0; i < rounds; i += 2 { - x0 += x4 - x12 ^= x0 - x12 = (x12 << 16) | (x12 >> (16)) - x8 += x12 - x4 ^= x8 - x4 = (x4 << 12) | (x4 >> (20)) - x0 += x4 - x12 ^= x0 - x12 = (x12 << 8) | (x12 >> (24)) - x8 += x12 - x4 ^= x8 - x4 = (x4 << 7) | (x4 >> (25)) - x1 += x5 - x13 ^= x1 - x13 = (x13 << 16) | (x13 >> 16) - x9 += x13 - x5 ^= x9 - x5 = (x5 << 12) | (x5 >> 20) - x1 += x5 - x13 ^= x1 - x13 = (x13 << 8) | (x13 >> 24) - x9 += x13 - x5 ^= x9 - x5 = (x5 << 7) | (x5 >> 25) - x2 += x6 - x14 ^= x2 - x14 = (x14 << 16) | (x14 >> 16) - x10 += x14 - x6 ^= x10 - x6 = (x6 << 12) | (x6 >> 20) - x2 += x6 - x14 ^= x2 - x14 = (x14 << 8) | (x14 >> 24) - x10 += x14 - x6 ^= x10 - x6 = (x6 << 7) | (x6 >> 25) - x3 += x7 - x15 ^= x3 - x15 = (x15 << 16) | (x15 >> 16) - x11 += x15 - x7 ^= x11 - x7 = (x7 << 12) | (x7 >> 20) - x3 += x7 - x15 ^= x3 - x15 = (x15 << 8) | (x15 >> 24) - x11 += x15 - x7 ^= x11 - x7 = (x7 << 7) | (x7 >> 25) - x0 += x5 - x15 ^= x0 - x15 = (x15 << 16) | (x15 >> 16) - x10 += x15 - x5 ^= x10 - x5 = (x5 << 12) | (x5 >> 20) - x0 += x5 - x15 ^= x0 - x15 = (x15 << 8) | (x15 >> 24) - x10 += x15 - x5 ^= x10 - x5 = (x5 << 7) | (x5 >> 25) - x1 += x6 - x12 ^= x1 - x12 = (x12 << 16) | (x12 >> 16) - x11 += x12 - x6 ^= x11 - x6 = (x6 << 12) | (x6 >> 20) - x1 += x6 - x12 ^= x1 - x12 = (x12 << 8) | (x12 >> 24) - x11 += x12 - x6 ^= x11 - x6 = (x6 << 7) | (x6 >> 25) - x2 += x7 - x13 ^= x2 - x13 = (x13 << 16) | (x13 >> 16) - x8 += x13 - x7 ^= x8 - x7 = (x7 << 12) | (x7 >> 20) - x2 += x7 - x13 ^= x2 - x13 = (x13 << 8) | (x13 >> 24) - x8 += x13 - x7 ^= x8 - x7 = (x7 << 7) | (x7 >> 25) - x3 += x4 - x14 ^= x3 - x14 = (x14 << 16) | (x14 >> 16) - x9 += x14 - x4 ^= x9 - x4 = (x4 << 12) | (x4 >> 20) - x3 += x4 - x14 ^= x3 - x14 = (x14 << 8) | (x14 >> 24) - x9 += x14 - x4 ^= x9 - x4 = (x4 << 7) | (x4 >> 25) - } - - x0 += j0 - x1 += j1 - x2 += j2 - x3 += j3 - x4 += j4 - x5 += j5 - x6 += j6 - x7 += j7 - x8 += j8 - x9 += j9 - x10 += j10 - x11 += j11 - x12 += j12 - x13 += j13 - x14 += j14 - x15 += j15 - - binary.LittleEndian.PutUint32(out[0:4], x0) - binary.LittleEndian.PutUint32(out[4:8], x1) - binary.LittleEndian.PutUint32(out[8:12], x2) - binary.LittleEndian.PutUint32(out[12:16], x3) - binary.LittleEndian.PutUint32(out[16:20], x4) - binary.LittleEndian.PutUint32(out[20:24], x5) - binary.LittleEndian.PutUint32(out[24:28], x6) - binary.LittleEndian.PutUint32(out[28:32], x7) - binary.LittleEndian.PutUint32(out[32:36], x8) - binary.LittleEndian.PutUint32(out[36:40], x9) - binary.LittleEndian.PutUint32(out[40:44], x10) - binary.LittleEndian.PutUint32(out[44:48], x11) - binary.LittleEndian.PutUint32(out[48:52], x12) - binary.LittleEndian.PutUint32(out[52:56], x13) - binary.LittleEndian.PutUint32(out[56:60], x14) - binary.LittleEndian.PutUint32(out[60:64], x15) -} - -// XORKeyStream crypts bytes from in to out using the given key and counters. -// In and out must overlap entirely or not at all. Counter contains the raw -// ChaCha20 counter bytes (i.e. block counter followed by nonce). -func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { - var block [64]byte - var counterCopy [16]byte - copy(counterCopy[:], counter[:]) - - for len(in) >= 64 { - core(&block, &counterCopy, key) - for i, x := range block { - out[i] = in[i] ^ x - } - u := uint32(1) - for i := 0; i < 4; i++ { - u += uint32(counterCopy[i]) - counterCopy[i] = byte(u) - u >>= 8 - } - in = in[64:] - out = out[64:] - } - - if len(in) > 0 { - core(&block, &counterCopy, key) - for i, v := range in { - out[i] = v ^ block[i] - } - } -} diff --git a/vendor/golang.org/x/crypto/internal/chacha20/chacha_test.go b/vendor/golang.org/x/crypto/internal/chacha20/chacha_test.go deleted file mode 100644 index b80d34cd..00000000 --- a/vendor/golang.org/x/crypto/internal/chacha20/chacha_test.go +++ /dev/null @@ -1,33 +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 chacha20 - -import ( - "encoding/hex" - "testing" -) - -func TestCore(t *testing.T) { - // This is just a smoke test that checks the example from - // https://tools.ietf.org/html/rfc7539#section-2.3.2. The - // chacha20poly1305 package contains much more extensive tests of this - // code. - var key [32]byte - for i := range key { - key[i] = byte(i) - } - - var input [16]byte - input[0] = 1 - input[7] = 9 - input[11] = 0x4a - - var out [64]byte - XORKeyStream(out[:], out[:], &input, &key) - const expected = "10f1e7e4d13b5915500fdd1fa32071c4c7d1f4c733c068030422aa9ac3d46c4ed2826446079faa0914c2d705d98b02a2b5129cd1de164eb9cbd083e8a2503c4e" - if result := hex.EncodeToString(out[:]); result != expected { - t.Errorf("wanted %x but got %x", expected, result) - } -} diff --git a/vendor/golang.org/x/crypto/md4/example_test.go b/vendor/golang.org/x/crypto/md4/example_test.go deleted file mode 100644 index db3f59b1..00000000 --- a/vendor/golang.org/x/crypto/md4/example_test.go +++ /dev/null @@ -1,20 +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 md4_test - -import ( - "fmt" - "io" - - "golang.org/x/crypto/md4" -) - -func ExampleNew() { - h := md4.New() - data := "These pretzels are making me thirsty." - io.WriteString(h, data) - fmt.Printf("%x", h.Sum(nil)) - // Output: 48c4e365090b30a32f084c4888deceaa -} diff --git a/vendor/golang.org/x/crypto/md4/md4.go b/vendor/golang.org/x/crypto/md4/md4.go deleted file mode 100644 index 6d9ba9e5..00000000 --- a/vendor/golang.org/x/crypto/md4/md4.go +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package md4 implements the MD4 hash algorithm as defined in RFC 1320. -package md4 // import "golang.org/x/crypto/md4" - -import ( - "crypto" - "hash" -) - -func init() { - crypto.RegisterHash(crypto.MD4, New) -} - -// The size of an MD4 checksum in bytes. -const Size = 16 - -// The blocksize of MD4 in bytes. -const BlockSize = 64 - -const ( - _Chunk = 64 - _Init0 = 0x67452301 - _Init1 = 0xEFCDAB89 - _Init2 = 0x98BADCFE - _Init3 = 0x10325476 -) - -// digest represents the partial evaluation of a checksum. -type digest struct { - s [4]uint32 - x [_Chunk]byte - nx int - len uint64 -} - -func (d *digest) Reset() { - d.s[0] = _Init0 - d.s[1] = _Init1 - d.s[2] = _Init2 - d.s[3] = _Init3 - d.nx = 0 - d.len = 0 -} - -// New returns a new hash.Hash computing the MD4 checksum. -func New() hash.Hash { - d := new(digest) - d.Reset() - return d -} - -func (d *digest) Size() int { return Size } - -func (d *digest) BlockSize() int { return BlockSize } - -func (d *digest) Write(p []byte) (nn int, err error) { - nn = len(p) - d.len += uint64(nn) - if d.nx > 0 { - n := len(p) - if n > _Chunk-d.nx { - n = _Chunk - d.nx - } - for i := 0; i < n; i++ { - d.x[d.nx+i] = p[i] - } - d.nx += n - if d.nx == _Chunk { - _Block(d, d.x[0:]) - d.nx = 0 - } - p = p[n:] - } - n := _Block(d, p) - p = p[n:] - if len(p) > 0 { - d.nx = copy(d.x[:], p) - } - return -} - -func (d0 *digest) Sum(in []byte) []byte { - // Make a copy of d0, so that caller can keep writing and summing. - d := new(digest) - *d = *d0 - - // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. - len := d.len - var tmp [64]byte - tmp[0] = 0x80 - if len%64 < 56 { - d.Write(tmp[0 : 56-len%64]) - } else { - d.Write(tmp[0 : 64+56-len%64]) - } - - // Length in bits. - len <<= 3 - for i := uint(0); i < 8; i++ { - tmp[i] = byte(len >> (8 * i)) - } - d.Write(tmp[0:8]) - - if d.nx != 0 { - panic("d.nx != 0") - } - - for _, s := range d.s { - in = append(in, byte(s>>0)) - in = append(in, byte(s>>8)) - in = append(in, byte(s>>16)) - in = append(in, byte(s>>24)) - } - return in -} diff --git a/vendor/golang.org/x/crypto/md4/md4_test.go b/vendor/golang.org/x/crypto/md4/md4_test.go deleted file mode 100644 index b56edd78..00000000 --- a/vendor/golang.org/x/crypto/md4/md4_test.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package md4 - -import ( - "fmt" - "io" - "testing" -) - -type md4Test struct { - out string - in string -} - -var golden = []md4Test{ - {"31d6cfe0d16ae931b73c59d7e0c089c0", ""}, - {"bde52cb31de33e46245e05fbdbd6fb24", "a"}, - {"ec388dd78999dfc7cf4632465693b6bf", "ab"}, - {"a448017aaf21d8525fc10ae87aa6729d", "abc"}, - {"41decd8f579255c5200f86a4bb3ba740", "abcd"}, - {"9803f4a34e8eb14f96adba49064a0c41", "abcde"}, - {"804e7f1c2586e50b49ac65db5b645131", "abcdef"}, - {"752f4adfe53d1da0241b5bc216d098fc", "abcdefg"}, - {"ad9daf8d49d81988590a6f0e745d15dd", "abcdefgh"}, - {"1e4e28b05464316b56402b3815ed2dfd", "abcdefghi"}, - {"dc959c6f5d6f9e04e4380777cc964b3d", "abcdefghij"}, - {"1b5701e265778898ef7de5623bbe7cc0", "Discard medicine more than two years old."}, - {"d7f087e090fe7ad4a01cb59dacc9a572", "He who has a shady past knows that nice guys finish last."}, - {"a6f8fd6df617c72837592fc3570595c9", "I wouldn't marry him with a ten foot pole."}, - {"c92a84a9526da8abc240c05d6b1a1ce0", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave"}, - {"f6013160c4dcb00847069fee3bb09803", "The days of the digital watch are numbered. -Tom Stoppard"}, - {"2c3bb64f50b9107ed57640fe94bec09f", "Nepal premier won't resign."}, - {"45b7d8a32c7806f2f7f897332774d6e4", "For every action there is an equal and opposite government program."}, - {"b5b4f9026b175c62d7654bdc3a1cd438", "His money is twice tainted: 'taint yours and 'taint mine."}, - {"caf44e80f2c20ce19b5ba1cab766e7bd", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977"}, - {"191fae6707f496aa54a6bce9f2ecf74d", "It's a tiny change to the code and not completely disgusting. - Bob Manchek"}, - {"9ddc753e7a4ccee6081cd1b45b23a834", "size: a.out: bad magic"}, - {"8d050f55b1cadb9323474564be08a521", "The major problem is with sendmail. -Mark Horton"}, - {"ad6e2587f74c3e3cc19146f6127fa2e3", "Give me a rock, paper and scissors and I will move the world. CCFestoon"}, - {"1d616d60a5fabe85589c3f1566ca7fca", "If the enemy is within range, then so are you."}, - {"aec3326a4f496a2ced65a1963f84577f", "It's well we cannot hear the screams/That we create in others' dreams."}, - {"77b4fd762d6b9245e61c50bf6ebf118b", "You remind me of a TV show, but that's all right: I watch it anyway."}, - {"e8f48c726bae5e516f6ddb1a4fe62438", "C is as portable as Stonehedge!!"}, - {"a3a84366e7219e887423b01f9be7166e", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley"}, - {"a6b7aa35157e984ef5d9b7f32e5fbb52", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction. Lewis-Randall Rule"}, - {"75661f0545955f8f9abeeb17845f3fd6", "How can you write a big system without C++? -Paul Glick"}, -} - -func TestGolden(t *testing.T) { - for i := 0; i < len(golden); i++ { - g := golden[i] - c := New() - for j := 0; j < 3; j++ { - if j < 2 { - io.WriteString(c, g.in) - } else { - io.WriteString(c, g.in[0:len(g.in)/2]) - c.Sum(nil) - io.WriteString(c, g.in[len(g.in)/2:]) - } - s := fmt.Sprintf("%x", c.Sum(nil)) - if s != g.out { - t.Fatalf("md4[%d](%s) = %s want %s", j, g.in, s, g.out) - } - c.Reset() - } - } -} diff --git a/vendor/golang.org/x/crypto/md4/md4block.go b/vendor/golang.org/x/crypto/md4/md4block.go deleted file mode 100644 index 3fed475f..00000000 --- a/vendor/golang.org/x/crypto/md4/md4block.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// MD4 block step. -// In its own file so that a faster assembly or C version -// can be substituted easily. - -package md4 - -var shift1 = []uint{3, 7, 11, 19} -var shift2 = []uint{3, 5, 9, 13} -var shift3 = []uint{3, 9, 11, 15} - -var xIndex2 = []uint{0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15} -var xIndex3 = []uint{0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15} - -func _Block(dig *digest, p []byte) int { - a := dig.s[0] - b := dig.s[1] - c := dig.s[2] - d := dig.s[3] - n := 0 - var X [16]uint32 - for len(p) >= _Chunk { - aa, bb, cc, dd := a, b, c, d - - j := 0 - for i := 0; i < 16; i++ { - X[i] = uint32(p[j]) | uint32(p[j+1])<<8 | uint32(p[j+2])<<16 | uint32(p[j+3])<<24 - j += 4 - } - - // If this needs to be made faster in the future, - // the usual trick is to unroll each of these - // loops by a factor of 4; that lets you replace - // the shift[] lookups with constants and, - // with suitable variable renaming in each - // unrolled body, delete the a, b, c, d = d, a, b, c - // (or you can let the optimizer do the renaming). - // - // The index variables are uint so that % by a power - // of two can be optimized easily by a compiler. - - // Round 1. - for i := uint(0); i < 16; i++ { - x := i - s := shift1[i%4] - f := ((c ^ d) & b) ^ d - a += f + X[x] - a = a<>(32-s) - a, b, c, d = d, a, b, c - } - - // Round 2. - for i := uint(0); i < 16; i++ { - x := xIndex2[i] - s := shift2[i%4] - g := (b & c) | (b & d) | (c & d) - a += g + X[x] + 0x5a827999 - a = a<>(32-s) - a, b, c, d = d, a, b, c - } - - // Round 3. - for i := uint(0); i < 16; i++ { - x := xIndex3[i] - s := shift3[i%4] - h := b ^ c ^ d - a += h + X[x] + 0x6ed9eba1 - a = a<>(32-s) - a, b, c, d = d, a, b, c - } - - a += aa - b += bb - c += cc - d += dd - - p = p[_Chunk:] - n += _Chunk - } - - dig.s[0] = a - dig.s[1] = b - dig.s[2] = c - dig.s[3] = d - return n -} diff --git a/vendor/golang.org/x/crypto/nacl/auth/auth.go b/vendor/golang.org/x/crypto/nacl/auth/auth.go deleted file mode 100644 index ec1d6ebe..00000000 --- a/vendor/golang.org/x/crypto/nacl/auth/auth.go +++ /dev/null @@ -1,58 +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 auth authenticates a message using a secret key. - -The Sum function, viewed as a function of the message for a uniform random -key, is designed to meet the standard notion of unforgeability. This means -that an attacker cannot find authenticators for any messages not authenticated -by the sender, even if the attacker has adaptively influenced the messages -authenticated by the sender. For a formal definition see, e.g., Section 2.4 -of Bellare, Kilian, and Rogaway, "The security of the cipher block chaining -message authentication code," Journal of Computer and System Sciences 61 (2000), -362–399; http://www-cse.ucsd.edu/~mihir/papers/cbc.html. - -auth does not make any promises regarding "strong" unforgeability; perhaps -one valid authenticator can be converted into another valid authenticator for -the same message. NaCl also does not make any promises regarding "truncated -unforgeability." - -This package is interoperable with NaCl: https://nacl.cr.yp.to/auth.html. -*/ -package auth - -import ( - "crypto/hmac" - "crypto/sha512" -) - -const ( - // Size is the size, in bytes, of an authenticated digest. - Size = 32 - // KeySize is the size, in bytes, of an authentication key. - KeySize = 32 -) - -// Sum generates an authenticator for m using a secret key and returns the -// 32-byte digest. -func Sum(m []byte, key *[KeySize]byte) *[Size]byte { - mac := hmac.New(sha512.New, key[:]) - mac.Write(m) - out := new([KeySize]byte) - copy(out[:], mac.Sum(nil)[:Size]) - return out -} - -// Verify checks that digest is a valid authenticator of message m under the -// given secret key. Verify does not leak timing information. -func Verify(digest []byte, m []byte, key *[KeySize]byte) bool { - if len(digest) != Size { - return false - } - mac := hmac.New(sha512.New, key[:]) - mac.Write(m) - expectedMAC := mac.Sum(nil) // first 256 bits of 512-bit sum - return hmac.Equal(digest, expectedMAC[:Size]) -} diff --git a/vendor/golang.org/x/crypto/nacl/auth/auth_test.go b/vendor/golang.org/x/crypto/nacl/auth/auth_test.go deleted file mode 100644 index 92074b50..00000000 --- a/vendor/golang.org/x/crypto/nacl/auth/auth_test.go +++ /dev/null @@ -1,172 +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 auth - -import ( - "bytes" - rand "crypto/rand" - mrand "math/rand" - "testing" -) - -// Test cases are from RFC 4231, and match those present in the tests directory -// of the download here: https://nacl.cr.yp.to/install.html -var testCases = []struct { - key [32]byte - msg []byte - out [32]byte -}{ - { - key: [32]byte{ - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, - }, - msg: []byte("Hi There"), - out: [32]byte{ - 0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d, - 0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0, - 0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78, - 0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde, - }, - }, - { - key: [32]byte{'J', 'e', 'f', 'e'}, - msg: []byte("what do ya want for nothing?"), - out: [32]byte{ - 0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2, - 0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3, - 0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6, - 0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54, - }, - }, - { - key: [32]byte{ - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, - }, - msg: []byte{ // 50 bytes of 0xdd - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, - }, - out: [32]byte{ - 0xfa, 0x73, 0xb0, 0x08, 0x9d, 0x56, 0xa2, 0x84, - 0xef, 0xb0, 0xf0, 0x75, 0x6c, 0x89, 0x0b, 0xe9, - 0xb1, 0xb5, 0xdb, 0xdd, 0x8e, 0xe8, 0x1a, 0x36, - 0x55, 0xf8, 0x3e, 0x33, 0xb2, 0x27, 0x9d, 0x39, - }, - }, - { - key: [32]byte{ - 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, - }, - msg: []byte{ - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, - }, - out: [32]byte{ - 0xb0, 0xba, 0x46, 0x56, 0x37, 0x45, 0x8c, 0x69, - 0x90, 0xe5, 0xa8, 0xc5, 0xf6, 0x1d, 0x4a, 0xf7, - 0xe5, 0x76, 0xd9, 0x7f, 0xf9, 0x4b, 0x87, 0x2d, - 0xe7, 0x6f, 0x80, 0x50, 0x36, 0x1e, 0xe3, 0xdb, - }, - }, -} - -func TestSum(t *testing.T) { - for i, test := range testCases { - tag := Sum(test.msg, &test.key) - if !bytes.Equal(tag[:], test.out[:]) { - t.Errorf("#%d: Sum: got\n%x\nwant\n%x", i, tag, test.out) - } - } -} - -func TestVerify(t *testing.T) { - wrongMsg := []byte("unknown msg") - - for i, test := range testCases { - if !Verify(test.out[:], test.msg, &test.key) { - t.Errorf("#%d: Verify(%x, %q, %x) failed", i, test.out, test.msg, test.key) - } - if Verify(test.out[:], wrongMsg, &test.key) { - t.Errorf("#%d: Verify(%x, %q, %x) unexpectedly passed", i, test.out, wrongMsg, test.key) - } - } -} - -func TestStress(t *testing.T) { - if testing.Short() { - t.Skip("exhaustiveness test") - } - - var key [32]byte - msg := make([]byte, 10000) - prng := mrand.New(mrand.NewSource(0)) - - // copied from tests/auth5.c in nacl - for i := 0; i < 10000; i++ { - if _, err := rand.Read(key[:]); err != nil { - t.Fatal(err) - } - if _, err := rand.Read(msg[:i]); err != nil { - t.Fatal(err) - } - tag := Sum(msg[:i], &key) - if !Verify(tag[:], msg[:i], &key) { - t.Errorf("#%d: unexpected failure from Verify", i) - } - if i > 0 { - msgIndex := prng.Intn(i) - oldMsgByte := msg[msgIndex] - msg[msgIndex] += byte(1 + prng.Intn(255)) - if Verify(tag[:], msg[:i], &key) { - t.Errorf("#%d: unexpected success from Verify after corrupting message", i) - } - msg[msgIndex] = oldMsgByte - - tag[prng.Intn(len(tag))] += byte(1 + prng.Intn(255)) - if Verify(tag[:], msg[:i], &key) { - t.Errorf("#%d: unexpected success from Verify after corrupting authenticator", i) - } - } - } -} - -func BenchmarkAuth(b *testing.B) { - var key [32]byte - if _, err := rand.Read(key[:]); err != nil { - b.Fatal(err) - } - buf := make([]byte, 1024) - if _, err := rand.Read(buf[:]); err != nil { - b.Fatal(err) - } - - b.SetBytes(int64(len(buf))) - b.ReportAllocs() - b.ResetTimer() - - for i := 0; i < b.N; i++ { - tag := Sum(buf, &key) - if Verify(tag[:], buf, &key) == false { - b.Fatal("unexpected failure from Verify") - } - } -} diff --git a/vendor/golang.org/x/crypto/nacl/auth/example_test.go b/vendor/golang.org/x/crypto/nacl/auth/example_test.go deleted file mode 100644 index 02a2cd6c..00000000 --- a/vendor/golang.org/x/crypto/nacl/auth/example_test.go +++ /dev/null @@ -1,36 +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 auth_test - -import ( - "encoding/hex" - "fmt" - - "golang.org/x/crypto/nacl/auth" -) - -func Example() { - // Load your secret key from a safe place and reuse it across multiple - // Sum calls. (Obviously don't use this example key for anything - // real.) If you want to convert a passphrase to a key, use a suitable - // package like bcrypt or scrypt. - secretKeyBytes, err := hex.DecodeString("6368616e676520746869732070617373776f726420746f206120736563726574") - if err != nil { - panic(err) - } - - var secretKey [32]byte - copy(secretKey[:], secretKeyBytes) - - mac := auth.Sum([]byte("hello world"), &secretKey) - fmt.Printf("%x\n", *mac) - result := auth.Verify(mac[:], []byte("hello world"), &secretKey) - fmt.Println(result) - badResult := auth.Verify(mac[:], []byte("different message"), &secretKey) - fmt.Println(badResult) - // Output: eca5a521f3d77b63f567fb0cb6f5f2d200641bc8dada42f60c5f881260c30317 - // true - // false -} diff --git a/vendor/golang.org/x/crypto/nacl/box/box.go b/vendor/golang.org/x/crypto/nacl/box/box.go deleted file mode 100644 index 31b697be..00000000 --- a/vendor/golang.org/x/crypto/nacl/box/box.go +++ /dev/null @@ -1,103 +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 box authenticates and encrypts small messages using public-key cryptography. - -Box uses Curve25519, XSalsa20 and Poly1305 to encrypt and authenticate -messages. The length of messages is not hidden. - -It is the caller's responsibility to ensure the uniqueness of nonces—for -example, by using nonce 1 for the first message, nonce 2 for the second -message, etc. Nonces are long enough that randomly generated nonces have -negligible risk of collision. - -Messages should be small because: - -1. The whole message needs to be held in memory to be processed. - -2. Using large messages pressures implementations on small machines to decrypt -and process plaintext before authenticating it. This is very dangerous, and -this API does not allow it, but a protocol that uses excessive message sizes -might present some implementations with no other choice. - -3. Fixed overheads will be sufficiently amortised by messages as small as 8KB. - -4. Performance may be improved by working with messages that fit into data caches. - -Thus large amounts of data should be chunked so that each message is small. -(Each message still needs a unique nonce.) If in doubt, 16KB is a reasonable -chunk size. - -This package is interoperable with NaCl: https://nacl.cr.yp.to/box.html. -*/ -package box // import "golang.org/x/crypto/nacl/box" - -import ( - "io" - - "golang.org/x/crypto/curve25519" - "golang.org/x/crypto/nacl/secretbox" - "golang.org/x/crypto/salsa20/salsa" -) - -// Overhead is the number of bytes of overhead when boxing a message. -const Overhead = secretbox.Overhead - -// GenerateKey generates a new public/private key pair suitable for use with -// Seal and Open. -func GenerateKey(rand io.Reader) (publicKey, privateKey *[32]byte, err error) { - publicKey = new([32]byte) - privateKey = new([32]byte) - _, err = io.ReadFull(rand, privateKey[:]) - if err != nil { - publicKey = nil - privateKey = nil - return - } - - curve25519.ScalarBaseMult(publicKey, privateKey) - return -} - -var zeros [16]byte - -// Precompute calculates the shared key between peersPublicKey and privateKey -// and writes it to sharedKey. The shared key can be used with -// OpenAfterPrecomputation and SealAfterPrecomputation to speed up processing -// when using the same pair of keys repeatedly. -func Precompute(sharedKey, peersPublicKey, privateKey *[32]byte) { - curve25519.ScalarMult(sharedKey, privateKey, peersPublicKey) - salsa.HSalsa20(sharedKey, &zeros, sharedKey, &salsa.Sigma) -} - -// Seal appends an encrypted and authenticated copy of message to out, which -// will be Overhead bytes longer than the original and must not overlap it. The -// nonce must be unique for each distinct message for a given pair of keys. -func Seal(out, message []byte, nonce *[24]byte, peersPublicKey, privateKey *[32]byte) []byte { - var sharedKey [32]byte - Precompute(&sharedKey, peersPublicKey, privateKey) - return secretbox.Seal(out, message, nonce, &sharedKey) -} - -// SealAfterPrecomputation performs the same actions as Seal, but takes a -// shared key as generated by Precompute. -func SealAfterPrecomputation(out, message []byte, nonce *[24]byte, sharedKey *[32]byte) []byte { - return secretbox.Seal(out, message, nonce, sharedKey) -} - -// Open authenticates and decrypts a box produced by Seal and appends the -// message to out, which must not overlap box. The output will be Overhead -// bytes smaller than box. -func Open(out, box []byte, nonce *[24]byte, peersPublicKey, privateKey *[32]byte) ([]byte, bool) { - var sharedKey [32]byte - Precompute(&sharedKey, peersPublicKey, privateKey) - return secretbox.Open(out, box, nonce, &sharedKey) -} - -// OpenAfterPrecomputation performs the same actions as Open, but takes a -// shared key as generated by Precompute. -func OpenAfterPrecomputation(out, box []byte, nonce *[24]byte, sharedKey *[32]byte) ([]byte, bool) { - return secretbox.Open(out, box, nonce, sharedKey) -} diff --git a/vendor/golang.org/x/crypto/nacl/box/box_test.go b/vendor/golang.org/x/crypto/nacl/box/box_test.go deleted file mode 100644 index 481ade28..00000000 --- a/vendor/golang.org/x/crypto/nacl/box/box_test.go +++ /dev/null @@ -1,78 +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 box - -import ( - "bytes" - "crypto/rand" - "encoding/hex" - "testing" - - "golang.org/x/crypto/curve25519" -) - -func TestSealOpen(t *testing.T) { - publicKey1, privateKey1, _ := GenerateKey(rand.Reader) - publicKey2, privateKey2, _ := GenerateKey(rand.Reader) - - if *privateKey1 == *privateKey2 { - t.Fatalf("private keys are equal!") - } - if *publicKey1 == *publicKey2 { - t.Fatalf("public keys are equal!") - } - message := []byte("test message") - var nonce [24]byte - - box := Seal(nil, message, &nonce, publicKey1, privateKey2) - opened, ok := Open(nil, box, &nonce, publicKey2, privateKey1) - if !ok { - t.Fatalf("failed to open box") - } - - if !bytes.Equal(opened, message) { - t.Fatalf("got %x, want %x", opened, message) - } - - for i := range box { - box[i] ^= 0x40 - _, ok := Open(nil, box, &nonce, publicKey2, privateKey1) - if ok { - t.Fatalf("opened box with byte %d corrupted", i) - } - box[i] ^= 0x40 - } -} - -func TestBox(t *testing.T) { - var privateKey1, privateKey2 [32]byte - for i := range privateKey1[:] { - privateKey1[i] = 1 - } - for i := range privateKey2[:] { - privateKey2[i] = 2 - } - - var publicKey1 [32]byte - curve25519.ScalarBaseMult(&publicKey1, &privateKey1) - var message [64]byte - for i := range message[:] { - message[i] = 3 - } - - var nonce [24]byte - for i := range nonce[:] { - nonce[i] = 4 - } - - box := Seal(nil, message[:], &nonce, &publicKey1, &privateKey2) - - // expected was generated using the C implementation of NaCl. - expected, _ := hex.DecodeString("78ea30b19d2341ebbdba54180f821eec265cf86312549bea8a37652a8bb94f07b78a73ed1708085e6ddd0e943bbdeb8755079a37eb31d86163ce241164a47629c0539f330b4914cd135b3855bc2a2dfc") - - if !bytes.Equal(box, expected) { - t.Fatalf("box didn't match, got\n%x\n, expected\n%x", box, expected) - } -} diff --git a/vendor/golang.org/x/crypto/nacl/box/example_test.go b/vendor/golang.org/x/crypto/nacl/box/example_test.go deleted file mode 100644 index 25e42d2b..00000000 --- a/vendor/golang.org/x/crypto/nacl/box/example_test.go +++ /dev/null @@ -1,95 +0,0 @@ -package box_test - -import ( - crypto_rand "crypto/rand" // Custom so it's clear which rand we're using. - "fmt" - "io" - - "golang.org/x/crypto/nacl/box" -) - -func Example() { - senderPublicKey, senderPrivateKey, err := box.GenerateKey(crypto_rand.Reader) - if err != nil { - panic(err) - } - - recipientPublicKey, recipientPrivateKey, err := box.GenerateKey(crypto_rand.Reader) - if err != nil { - panic(err) - } - - // You must use a different nonce for each message you encrypt with the - // same key. Since the nonce here is 192 bits long, a random value - // provides a sufficiently small probability of repeats. - var nonce [24]byte - if _, err := io.ReadFull(crypto_rand.Reader, nonce[:]); err != nil { - panic(err) - } - - msg := []byte("Alas, poor Yorick! I knew him, Horatio") - // This encrypts msg and appends the result to the nonce. - encrypted := box.Seal(nonce[:], msg, &nonce, recipientPublicKey, senderPrivateKey) - - // The recipient can decrypt the message using their private key and the - // sender's public key. When you decrypt, you must use the same nonce you - // used to encrypt the message. One way to achieve this is to store the - // nonce alongside the encrypted message. Above, we stored the nonce in the - // first 24 bytes of the encrypted text. - var decryptNonce [24]byte - copy(decryptNonce[:], encrypted[:24]) - decrypted, ok := box.Open(nil, encrypted[24:], &decryptNonce, senderPublicKey, recipientPrivateKey) - if !ok { - panic("decryption error") - } - fmt.Println(string(decrypted)) - // Output: Alas, poor Yorick! I knew him, Horatio -} - -func Example_precompute() { - senderPublicKey, senderPrivateKey, err := box.GenerateKey(crypto_rand.Reader) - if err != nil { - panic(err) - } - - recipientPublicKey, recipientPrivateKey, err := box.GenerateKey(crypto_rand.Reader) - if err != nil { - panic(err) - } - - // The shared key can be used to speed up processing when using the same - // pair of keys repeatedly. - sharedEncryptKey := new([32]byte) - box.Precompute(sharedEncryptKey, recipientPublicKey, senderPrivateKey) - - // You must use a different nonce for each message you encrypt with the - // same key. Since the nonce here is 192 bits long, a random value - // provides a sufficiently small probability of repeats. - var nonce [24]byte - if _, err := io.ReadFull(crypto_rand.Reader, nonce[:]); err != nil { - panic(err) - } - - msg := []byte("A fellow of infinite jest, of most excellent fancy") - // This encrypts msg and appends the result to the nonce. - encrypted := box.SealAfterPrecomputation(nonce[:], msg, &nonce, sharedEncryptKey) - - // The shared key can be used to speed up processing when using the same - // pair of keys repeatedly. - var sharedDecryptKey [32]byte - box.Precompute(&sharedDecryptKey, senderPublicKey, recipientPrivateKey) - - // The recipient can decrypt the message using the shared key. When you - // decrypt, you must use the same nonce you used to encrypt the message. - // One way to achieve this is to store the nonce alongside the encrypted - // message. Above, we stored the nonce in the first 24 bytes of the - // encrypted text. - var decryptNonce [24]byte - copy(decryptNonce[:], encrypted[:24]) - decrypted, ok := box.OpenAfterPrecomputation(nil, encrypted[24:], &decryptNonce, &sharedDecryptKey) - if !ok { - panic("decryption error") - } - fmt.Println(string(decrypted)) - // Output: A fellow of infinite jest, of most excellent fancy -} diff --git a/vendor/golang.org/x/crypto/nacl/secretbox/example_test.go b/vendor/golang.org/x/crypto/nacl/secretbox/example_test.go deleted file mode 100644 index 789f4ff0..00000000 --- a/vendor/golang.org/x/crypto/nacl/secretbox/example_test.go +++ /dev/null @@ -1,53 +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 secretbox_test - -import ( - "crypto/rand" - "encoding/hex" - "fmt" - "io" - - "golang.org/x/crypto/nacl/secretbox" -) - -func Example() { - // Load your secret key from a safe place and reuse it across multiple - // Seal calls. (Obviously don't use this example key for anything - // real.) If you want to convert a passphrase to a key, use a suitable - // package like bcrypt or scrypt. - secretKeyBytes, err := hex.DecodeString("6368616e676520746869732070617373776f726420746f206120736563726574") - if err != nil { - panic(err) - } - - var secretKey [32]byte - copy(secretKey[:], secretKeyBytes) - - // You must use a different nonce for each message you encrypt with the - // same key. Since the nonce here is 192 bits long, a random value - // provides a sufficiently small probability of repeats. - var nonce [24]byte - if _, err := io.ReadFull(rand.Reader, nonce[:]); err != nil { - panic(err) - } - - // This encrypts "hello world" and appends the result to the nonce. - encrypted := secretbox.Seal(nonce[:], []byte("hello world"), &nonce, &secretKey) - - // When you decrypt, you must use the same nonce and key you used to - // encrypt the message. One way to achieve this is to store the nonce - // alongside the encrypted message. Above, we stored the nonce in the first - // 24 bytes of the encrypted text. - var decryptNonce [24]byte - copy(decryptNonce[:], encrypted[:24]) - decrypted, ok := secretbox.Open(nil, encrypted[24:], &decryptNonce, &secretKey) - if !ok { - panic("decryption error") - } - - fmt.Println(string(decrypted)) - // Output: hello world -} diff --git a/vendor/golang.org/x/crypto/nacl/secretbox/secretbox.go b/vendor/golang.org/x/crypto/nacl/secretbox/secretbox.go deleted file mode 100644 index 53ee83cf..00000000 --- a/vendor/golang.org/x/crypto/nacl/secretbox/secretbox.go +++ /dev/null @@ -1,166 +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 secretbox encrypts and authenticates small messages. - -Secretbox uses XSalsa20 and Poly1305 to encrypt and authenticate messages with -secret-key cryptography. The length of messages is not hidden. - -It is the caller's responsibility to ensure the uniqueness of nonces—for -example, by using nonce 1 for the first message, nonce 2 for the second -message, etc. Nonces are long enough that randomly generated nonces have -negligible risk of collision. - -Messages should be small because: - -1. The whole message needs to be held in memory to be processed. - -2. Using large messages pressures implementations on small machines to decrypt -and process plaintext before authenticating it. This is very dangerous, and -this API does not allow it, but a protocol that uses excessive message sizes -might present some implementations with no other choice. - -3. Fixed overheads will be sufficiently amortised by messages as small as 8KB. - -4. Performance may be improved by working with messages that fit into data caches. - -Thus large amounts of data should be chunked so that each message is small. -(Each message still needs a unique nonce.) If in doubt, 16KB is a reasonable -chunk size. - -This package is interoperable with NaCl: https://nacl.cr.yp.to/secretbox.html. -*/ -package secretbox // import "golang.org/x/crypto/nacl/secretbox" - -import ( - "golang.org/x/crypto/poly1305" - "golang.org/x/crypto/salsa20/salsa" -) - -// Overhead is the number of bytes of overhead when boxing a message. -const Overhead = poly1305.TagSize - -// setup produces a sub-key and Salsa20 counter given a nonce and key. -func setup(subKey *[32]byte, counter *[16]byte, nonce *[24]byte, key *[32]byte) { - // We use XSalsa20 for encryption so first we need to generate a - // key and nonce with HSalsa20. - var hNonce [16]byte - copy(hNonce[:], nonce[:]) - salsa.HSalsa20(subKey, &hNonce, key, &salsa.Sigma) - - // The final 8 bytes of the original nonce form the new nonce. - copy(counter[:], nonce[16:]) -} - -// sliceForAppend takes a slice and a requested number of bytes. It returns a -// slice with the contents of the given slice followed by that many bytes and a -// second slice that aliases into it and contains only the extra bytes. If the -// original slice has sufficient capacity then no allocation is performed. -func sliceForAppend(in []byte, n int) (head, tail []byte) { - if total := len(in) + n; cap(in) >= total { - head = in[:total] - } else { - head = make([]byte, total) - copy(head, in) - } - tail = head[len(in):] - return -} - -// Seal appends an encrypted and authenticated copy of message to out, which -// must not overlap message. The key and nonce pair must be unique for each -// distinct message and the output will be Overhead bytes longer than message. -func Seal(out, message []byte, nonce *[24]byte, key *[32]byte) []byte { - var subKey [32]byte - var counter [16]byte - setup(&subKey, &counter, nonce, key) - - // The Poly1305 key is generated by encrypting 32 bytes of zeros. Since - // Salsa20 works with 64-byte blocks, we also generate 32 bytes of - // keystream as a side effect. - var firstBlock [64]byte - salsa.XORKeyStream(firstBlock[:], firstBlock[:], &counter, &subKey) - - var poly1305Key [32]byte - copy(poly1305Key[:], firstBlock[:]) - - ret, out := sliceForAppend(out, len(message)+poly1305.TagSize) - - // We XOR up to 32 bytes of message with the keystream generated from - // the first block. - firstMessageBlock := message - if len(firstMessageBlock) > 32 { - firstMessageBlock = firstMessageBlock[:32] - } - - tagOut := out - out = out[poly1305.TagSize:] - for i, x := range firstMessageBlock { - out[i] = firstBlock[32+i] ^ x - } - message = message[len(firstMessageBlock):] - ciphertext := out - out = out[len(firstMessageBlock):] - - // Now encrypt the rest. - counter[8] = 1 - salsa.XORKeyStream(out, message, &counter, &subKey) - - var tag [poly1305.TagSize]byte - poly1305.Sum(&tag, ciphertext, &poly1305Key) - copy(tagOut, tag[:]) - - return ret -} - -// Open authenticates and decrypts a box produced by Seal and appends the -// message to out, which must not overlap box. The output will be Overhead -// bytes smaller than box. -func Open(out []byte, box []byte, nonce *[24]byte, key *[32]byte) ([]byte, bool) { - if len(box) < Overhead { - return nil, false - } - - var subKey [32]byte - var counter [16]byte - setup(&subKey, &counter, nonce, key) - - // The Poly1305 key is generated by encrypting 32 bytes of zeros. Since - // Salsa20 works with 64-byte blocks, we also generate 32 bytes of - // keystream as a side effect. - var firstBlock [64]byte - salsa.XORKeyStream(firstBlock[:], firstBlock[:], &counter, &subKey) - - var poly1305Key [32]byte - copy(poly1305Key[:], firstBlock[:]) - var tag [poly1305.TagSize]byte - copy(tag[:], box) - - if !poly1305.Verify(&tag, box[poly1305.TagSize:], &poly1305Key) { - return nil, false - } - - ret, out := sliceForAppend(out, len(box)-Overhead) - - // We XOR up to 32 bytes of box with the keystream generated from - // the first block. - box = box[Overhead:] - firstMessageBlock := box - if len(firstMessageBlock) > 32 { - firstMessageBlock = firstMessageBlock[:32] - } - for i, x := range firstMessageBlock { - out[i] = firstBlock[32+i] ^ x - } - - box = box[len(firstMessageBlock):] - out = out[len(firstMessageBlock):] - - // Now decrypt the rest. - counter[8] = 1 - salsa.XORKeyStream(out, box, &counter, &subKey) - - return ret, true -} diff --git a/vendor/golang.org/x/crypto/nacl/secretbox/secretbox_test.go b/vendor/golang.org/x/crypto/nacl/secretbox/secretbox_test.go deleted file mode 100644 index 3c70b0f4..00000000 --- a/vendor/golang.org/x/crypto/nacl/secretbox/secretbox_test.go +++ /dev/null @@ -1,154 +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 secretbox - -import ( - "bytes" - "crypto/rand" - "encoding/hex" - "testing" -) - -func TestSealOpen(t *testing.T) { - var key [32]byte - var nonce [24]byte - - rand.Reader.Read(key[:]) - rand.Reader.Read(nonce[:]) - - var box, opened []byte - - for msgLen := 0; msgLen < 128; msgLen += 17 { - message := make([]byte, msgLen) - rand.Reader.Read(message) - - box = Seal(box[:0], message, &nonce, &key) - var ok bool - opened, ok = Open(opened[:0], box, &nonce, &key) - if !ok { - t.Errorf("%d: failed to open box", msgLen) - continue - } - - if !bytes.Equal(opened, message) { - t.Errorf("%d: got %x, expected %x", msgLen, opened, message) - continue - } - } - - for i := range box { - box[i] ^= 0x20 - _, ok := Open(opened[:0], box, &nonce, &key) - if ok { - t.Errorf("box was opened after corrupting byte %d", i) - } - box[i] ^= 0x20 - } -} - -func TestSecretBox(t *testing.T) { - var key [32]byte - var nonce [24]byte - var message [64]byte - - for i := range key[:] { - key[i] = 1 - } - for i := range nonce[:] { - nonce[i] = 2 - } - for i := range message[:] { - message[i] = 3 - } - - box := Seal(nil, message[:], &nonce, &key) - // expected was generated using the C implementation of NaCl. - expected, _ := hex.DecodeString("8442bc313f4626f1359e3b50122b6ce6fe66ddfe7d39d14e637eb4fd5b45beadab55198df6ab5368439792a23c87db70acb6156dc5ef957ac04f6276cf6093b84be77ff0849cc33e34b7254d5a8f65ad") - - if !bytes.Equal(box, expected) { - t.Fatalf("box didn't match, got\n%x\n, expected\n%x", box, expected) - } -} - -func TestAppend(t *testing.T) { - var key [32]byte - var nonce [24]byte - var message [8]byte - - out := make([]byte, 4) - box := Seal(out, message[:], &nonce, &key) - if !bytes.Equal(box[:4], out[:4]) { - t.Fatalf("Seal didn't correctly append") - } - - out = make([]byte, 4, 100) - box = Seal(out, message[:], &nonce, &key) - if !bytes.Equal(box[:4], out[:4]) { - t.Fatalf("Seal didn't correctly append with sufficient capacity.") - } -} - -func benchmarkSealSize(b *testing.B, size int) { - message := make([]byte, size) - out := make([]byte, size+Overhead) - var nonce [24]byte - var key [32]byte - - b.SetBytes(int64(size)) - b.ResetTimer() - - for i := 0; i < b.N; i++ { - out = Seal(out[:0], message, &nonce, &key) - } -} - -func BenchmarkSeal8Bytes(b *testing.B) { - benchmarkSealSize(b, 8) -} - -func BenchmarkSeal100Bytes(b *testing.B) { - benchmarkSealSize(b, 100) -} - -func BenchmarkSeal1K(b *testing.B) { - benchmarkSealSize(b, 1024) -} - -func BenchmarkSeal8K(b *testing.B) { - benchmarkSealSize(b, 8192) -} - -func benchmarkOpenSize(b *testing.B, size int) { - msg := make([]byte, size) - result := make([]byte, size) - var nonce [24]byte - var key [32]byte - box := Seal(nil, msg, &nonce, &key) - - b.SetBytes(int64(size)) - b.ResetTimer() - - for i := 0; i < b.N; i++ { - if _, ok := Open(result[:0], box, &nonce, &key); !ok { - panic("Open failed") - } - } -} - -func BenchmarkOpen8Bytes(b *testing.B) { - benchmarkOpenSize(b, 8) -} - -func BenchmarkOpen100Bytes(b *testing.B) { - benchmarkOpenSize(b, 100) -} - -func BenchmarkOpen1K(b *testing.B) { - benchmarkOpenSize(b, 1024) -} - -func BenchmarkOpen8K(b *testing.B) { - benchmarkOpenSize(b, 8192) -} diff --git a/vendor/golang.org/x/crypto/ocsp/ocsp.go b/vendor/golang.org/x/crypto/ocsp/ocsp.go deleted file mode 100644 index 589dfd35..00000000 --- a/vendor/golang.org/x/crypto/ocsp/ocsp.go +++ /dev/null @@ -1,778 +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 ocsp parses OCSP responses as specified in RFC 2560. OCSP responses -// are signed messages attesting to the validity of a certificate for a small -// period of time. This is used to manage revocation for X.509 certificates. -package ocsp // import "golang.org/x/crypto/ocsp" - -import ( - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/rsa" - _ "crypto/sha1" - _ "crypto/sha256" - _ "crypto/sha512" - "crypto/x509" - "crypto/x509/pkix" - "encoding/asn1" - "errors" - "fmt" - "math/big" - "strconv" - "time" -) - -var idPKIXOCSPBasic = asn1.ObjectIdentifier([]int{1, 3, 6, 1, 5, 5, 7, 48, 1, 1}) - -// ResponseStatus contains the result of an OCSP request. See -// https://tools.ietf.org/html/rfc6960#section-2.3 -type ResponseStatus int - -const ( - Success ResponseStatus = 0 - Malformed ResponseStatus = 1 - InternalError ResponseStatus = 2 - TryLater ResponseStatus = 3 - // Status code four is unused in OCSP. See - // https://tools.ietf.org/html/rfc6960#section-4.2.1 - SignatureRequired ResponseStatus = 5 - Unauthorized ResponseStatus = 6 -) - -func (r ResponseStatus) String() string { - switch r { - case Success: - return "success" - case Malformed: - return "malformed" - case InternalError: - return "internal error" - case TryLater: - return "try later" - case SignatureRequired: - return "signature required" - case Unauthorized: - return "unauthorized" - default: - return "unknown OCSP status: " + strconv.Itoa(int(r)) - } -} - -// ResponseError is an error that may be returned by ParseResponse to indicate -// that the response itself is an error, not just that its indicating that a -// certificate is revoked, unknown, etc. -type ResponseError struct { - Status ResponseStatus -} - -func (r ResponseError) Error() string { - return "ocsp: error from server: " + r.Status.String() -} - -// These are internal structures that reflect the ASN.1 structure of an OCSP -// response. See RFC 2560, section 4.2. - -type certID struct { - HashAlgorithm pkix.AlgorithmIdentifier - NameHash []byte - IssuerKeyHash []byte - SerialNumber *big.Int -} - -// https://tools.ietf.org/html/rfc2560#section-4.1.1 -type ocspRequest struct { - TBSRequest tbsRequest -} - -type tbsRequest struct { - Version int `asn1:"explicit,tag:0,default:0,optional"` - RequestorName pkix.RDNSequence `asn1:"explicit,tag:1,optional"` - RequestList []request -} - -type request struct { - Cert certID -} - -type responseASN1 struct { - Status asn1.Enumerated - Response responseBytes `asn1:"explicit,tag:0,optional"` -} - -type responseBytes struct { - ResponseType asn1.ObjectIdentifier - Response []byte -} - -type basicResponse struct { - TBSResponseData responseData - SignatureAlgorithm pkix.AlgorithmIdentifier - Signature asn1.BitString - Certificates []asn1.RawValue `asn1:"explicit,tag:0,optional"` -} - -type responseData struct { - Raw asn1.RawContent - Version int `asn1:"optional,default:0,explicit,tag:0"` - RawResponderID asn1.RawValue - ProducedAt time.Time `asn1:"generalized"` - Responses []singleResponse -} - -type singleResponse struct { - CertID certID - Good asn1.Flag `asn1:"tag:0,optional"` - Revoked revokedInfo `asn1:"tag:1,optional"` - Unknown asn1.Flag `asn1:"tag:2,optional"` - ThisUpdate time.Time `asn1:"generalized"` - NextUpdate time.Time `asn1:"generalized,explicit,tag:0,optional"` - SingleExtensions []pkix.Extension `asn1:"explicit,tag:1,optional"` -} - -type revokedInfo struct { - RevocationTime time.Time `asn1:"generalized"` - Reason asn1.Enumerated `asn1:"explicit,tag:0,optional"` -} - -var ( - oidSignatureMD2WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 2} - oidSignatureMD5WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 4} - oidSignatureSHA1WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 5} - oidSignatureSHA256WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 11} - oidSignatureSHA384WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 12} - oidSignatureSHA512WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 13} - oidSignatureDSAWithSHA1 = asn1.ObjectIdentifier{1, 2, 840, 10040, 4, 3} - oidSignatureDSAWithSHA256 = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 3, 2} - oidSignatureECDSAWithSHA1 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 1} - oidSignatureECDSAWithSHA256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 2} - oidSignatureECDSAWithSHA384 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 3} - oidSignatureECDSAWithSHA512 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 4} -) - -var hashOIDs = map[crypto.Hash]asn1.ObjectIdentifier{ - crypto.SHA1: asn1.ObjectIdentifier([]int{1, 3, 14, 3, 2, 26}), - crypto.SHA256: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 1}), - crypto.SHA384: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 2}), - crypto.SHA512: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 3}), -} - -// TODO(rlb): This is also from crypto/x509, so same comment as AGL's below -var signatureAlgorithmDetails = []struct { - algo x509.SignatureAlgorithm - oid asn1.ObjectIdentifier - pubKeyAlgo x509.PublicKeyAlgorithm - hash crypto.Hash -}{ - {x509.MD2WithRSA, oidSignatureMD2WithRSA, x509.RSA, crypto.Hash(0) /* no value for MD2 */}, - {x509.MD5WithRSA, oidSignatureMD5WithRSA, x509.RSA, crypto.MD5}, - {x509.SHA1WithRSA, oidSignatureSHA1WithRSA, x509.RSA, crypto.SHA1}, - {x509.SHA256WithRSA, oidSignatureSHA256WithRSA, x509.RSA, crypto.SHA256}, - {x509.SHA384WithRSA, oidSignatureSHA384WithRSA, x509.RSA, crypto.SHA384}, - {x509.SHA512WithRSA, oidSignatureSHA512WithRSA, x509.RSA, crypto.SHA512}, - {x509.DSAWithSHA1, oidSignatureDSAWithSHA1, x509.DSA, crypto.SHA1}, - {x509.DSAWithSHA256, oidSignatureDSAWithSHA256, x509.DSA, crypto.SHA256}, - {x509.ECDSAWithSHA1, oidSignatureECDSAWithSHA1, x509.ECDSA, crypto.SHA1}, - {x509.ECDSAWithSHA256, oidSignatureECDSAWithSHA256, x509.ECDSA, crypto.SHA256}, - {x509.ECDSAWithSHA384, oidSignatureECDSAWithSHA384, x509.ECDSA, crypto.SHA384}, - {x509.ECDSAWithSHA512, oidSignatureECDSAWithSHA512, x509.ECDSA, crypto.SHA512}, -} - -// TODO(rlb): This is also from crypto/x509, so same comment as AGL's below -func signingParamsForPublicKey(pub interface{}, requestedSigAlgo x509.SignatureAlgorithm) (hashFunc crypto.Hash, sigAlgo pkix.AlgorithmIdentifier, err error) { - var pubType x509.PublicKeyAlgorithm - - switch pub := pub.(type) { - case *rsa.PublicKey: - pubType = x509.RSA - hashFunc = crypto.SHA256 - sigAlgo.Algorithm = oidSignatureSHA256WithRSA - sigAlgo.Parameters = asn1.RawValue{ - Tag: 5, - } - - case *ecdsa.PublicKey: - pubType = x509.ECDSA - - switch pub.Curve { - case elliptic.P224(), elliptic.P256(): - hashFunc = crypto.SHA256 - sigAlgo.Algorithm = oidSignatureECDSAWithSHA256 - case elliptic.P384(): - hashFunc = crypto.SHA384 - sigAlgo.Algorithm = oidSignatureECDSAWithSHA384 - case elliptic.P521(): - hashFunc = crypto.SHA512 - sigAlgo.Algorithm = oidSignatureECDSAWithSHA512 - default: - err = errors.New("x509: unknown elliptic curve") - } - - default: - err = errors.New("x509: only RSA and ECDSA keys supported") - } - - if err != nil { - return - } - - if requestedSigAlgo == 0 { - return - } - - found := false - for _, details := range signatureAlgorithmDetails { - if details.algo == requestedSigAlgo { - if details.pubKeyAlgo != pubType { - err = errors.New("x509: requested SignatureAlgorithm does not match private key type") - return - } - sigAlgo.Algorithm, hashFunc = details.oid, details.hash - if hashFunc == 0 { - err = errors.New("x509: cannot sign with hash function requested") - return - } - found = true - break - } - } - - if !found { - err = errors.New("x509: unknown SignatureAlgorithm") - } - - return -} - -// TODO(agl): this is taken from crypto/x509 and so should probably be exported -// from crypto/x509 or crypto/x509/pkix. -func getSignatureAlgorithmFromOID(oid asn1.ObjectIdentifier) x509.SignatureAlgorithm { - for _, details := range signatureAlgorithmDetails { - if oid.Equal(details.oid) { - return details.algo - } - } - return x509.UnknownSignatureAlgorithm -} - -// TODO(rlb): This is not taken from crypto/x509, but it's of the same general form. -func getHashAlgorithmFromOID(target asn1.ObjectIdentifier) crypto.Hash { - for hash, oid := range hashOIDs { - if oid.Equal(target) { - return hash - } - } - return crypto.Hash(0) -} - -func getOIDFromHashAlgorithm(target crypto.Hash) asn1.ObjectIdentifier { - for hash, oid := range hashOIDs { - if hash == target { - return oid - } - } - return nil -} - -// This is the exposed reflection of the internal OCSP structures. - -// The status values that can be expressed in OCSP. See RFC 6960. -const ( - // Good means that the certificate is valid. - Good = iota - // Revoked means that the certificate has been deliberately revoked. - Revoked - // Unknown means that the OCSP responder doesn't know about the certificate. - Unknown - // ServerFailed is unused and was never used (see - // https://go-review.googlesource.com/#/c/18944). ParseResponse will - // return a ResponseError when an error response is parsed. - ServerFailed -) - -// The enumerated reasons for revoking a certificate. See RFC 5280. -const ( - Unspecified = 0 - KeyCompromise = 1 - CACompromise = 2 - AffiliationChanged = 3 - Superseded = 4 - CessationOfOperation = 5 - CertificateHold = 6 - - RemoveFromCRL = 8 - PrivilegeWithdrawn = 9 - AACompromise = 10 -) - -// Request represents an OCSP request. See RFC 6960. -type Request struct { - HashAlgorithm crypto.Hash - IssuerNameHash []byte - IssuerKeyHash []byte - SerialNumber *big.Int -} - -// Marshal marshals the OCSP request to ASN.1 DER encoded form. -func (req *Request) Marshal() ([]byte, error) { - hashAlg := getOIDFromHashAlgorithm(req.HashAlgorithm) - if hashAlg == nil { - return nil, errors.New("Unknown hash algorithm") - } - return asn1.Marshal(ocspRequest{ - tbsRequest{ - Version: 0, - RequestList: []request{ - { - Cert: certID{ - pkix.AlgorithmIdentifier{ - Algorithm: hashAlg, - Parameters: asn1.RawValue{Tag: 5 /* ASN.1 NULL */}, - }, - req.IssuerNameHash, - req.IssuerKeyHash, - req.SerialNumber, - }, - }, - }, - }, - }) -} - -// Response represents an OCSP response containing a single SingleResponse. See -// RFC 6960. -type Response struct { - // Status is one of {Good, Revoked, Unknown} - Status int - SerialNumber *big.Int - ProducedAt, ThisUpdate, NextUpdate, RevokedAt time.Time - RevocationReason int - Certificate *x509.Certificate - // TBSResponseData contains the raw bytes of the signed response. If - // Certificate is nil then this can be used to verify Signature. - TBSResponseData []byte - Signature []byte - SignatureAlgorithm x509.SignatureAlgorithm - - // IssuerHash is the hash used to compute the IssuerNameHash and IssuerKeyHash. - // Valid values are crypto.SHA1, crypto.SHA256, crypto.SHA384, and crypto.SHA512. - // If zero, the default is crypto.SHA1. - IssuerHash crypto.Hash - - // RawResponderName optionally contains the DER-encoded subject of the - // responder certificate. Exactly one of RawResponderName and - // ResponderKeyHash is set. - RawResponderName []byte - // ResponderKeyHash optionally contains the SHA-1 hash of the - // responder's public key. Exactly one of RawResponderName and - // ResponderKeyHash is set. - ResponderKeyHash []byte - - // Extensions contains raw X.509 extensions from the singleExtensions field - // of the OCSP response. When parsing certificates, this can be used to - // extract non-critical extensions that are not parsed by this package. When - // marshaling OCSP responses, the Extensions field is ignored, see - // ExtraExtensions. - Extensions []pkix.Extension - - // ExtraExtensions contains extensions to be copied, raw, into any marshaled - // OCSP response (in the singleExtensions field). Values override any - // extensions that would otherwise be produced based on the other fields. The - // ExtraExtensions field is not populated when parsing certificates, see - // Extensions. - ExtraExtensions []pkix.Extension -} - -// These are pre-serialized error responses for the various non-success codes -// defined by OCSP. The Unauthorized code in particular can be used by an OCSP -// responder that supports only pre-signed responses as a response to requests -// for certificates with unknown status. See RFC 5019. -var ( - MalformedRequestErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x01} - InternalErrorErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x02} - TryLaterErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x03} - SigRequredErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x05} - UnauthorizedErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x06} -) - -// CheckSignatureFrom checks that the signature in resp is a valid signature -// from issuer. This should only be used if resp.Certificate is nil. Otherwise, -// the OCSP response contained an intermediate certificate that created the -// signature. That signature is checked by ParseResponse and only -// resp.Certificate remains to be validated. -func (resp *Response) CheckSignatureFrom(issuer *x509.Certificate) error { - return issuer.CheckSignature(resp.SignatureAlgorithm, resp.TBSResponseData, resp.Signature) -} - -// ParseError results from an invalid OCSP response. -type ParseError string - -func (p ParseError) Error() string { - return string(p) -} - -// ParseRequest parses an OCSP request in DER form. It only supports -// requests for a single certificate. Signed requests are not supported. -// If a request includes a signature, it will result in a ParseError. -func ParseRequest(bytes []byte) (*Request, error) { - var req ocspRequest - rest, err := asn1.Unmarshal(bytes, &req) - if err != nil { - return nil, err - } - if len(rest) > 0 { - return nil, ParseError("trailing data in OCSP request") - } - - if len(req.TBSRequest.RequestList) == 0 { - return nil, ParseError("OCSP request contains no request body") - } - innerRequest := req.TBSRequest.RequestList[0] - - hashFunc := getHashAlgorithmFromOID(innerRequest.Cert.HashAlgorithm.Algorithm) - if hashFunc == crypto.Hash(0) { - return nil, ParseError("OCSP request uses unknown hash function") - } - - return &Request{ - HashAlgorithm: hashFunc, - IssuerNameHash: innerRequest.Cert.NameHash, - IssuerKeyHash: innerRequest.Cert.IssuerKeyHash, - SerialNumber: innerRequest.Cert.SerialNumber, - }, nil -} - -// ParseResponse parses an OCSP response in DER form. It only supports -// responses for a single certificate. If the response contains a certificate -// then the signature over the response is checked. If issuer is not nil then -// it will be used to validate the signature or embedded certificate. -// -// Invalid responses and parse failures will result in a ParseError. -// Error responses will result in a ResponseError. -func ParseResponse(bytes []byte, issuer *x509.Certificate) (*Response, error) { - return ParseResponseForCert(bytes, nil, issuer) -} - -// ParseResponseForCert parses an OCSP response in DER form and searches for a -// Response relating to cert. If such a Response is found and the OCSP response -// contains a certificate then the signature over the response is checked. If -// issuer is not nil then it will be used to validate the signature or embedded -// certificate. -// -// Invalid responses and parse failures will result in a ParseError. -// Error responses will result in a ResponseError. -func ParseResponseForCert(bytes []byte, cert, issuer *x509.Certificate) (*Response, error) { - var resp responseASN1 - rest, err := asn1.Unmarshal(bytes, &resp) - if err != nil { - return nil, err - } - if len(rest) > 0 { - return nil, ParseError("trailing data in OCSP response") - } - - if status := ResponseStatus(resp.Status); status != Success { - return nil, ResponseError{status} - } - - if !resp.Response.ResponseType.Equal(idPKIXOCSPBasic) { - return nil, ParseError("bad OCSP response type") - } - - var basicResp basicResponse - rest, err = asn1.Unmarshal(resp.Response.Response, &basicResp) - if err != nil { - return nil, err - } - - if len(basicResp.Certificates) > 1 { - return nil, ParseError("OCSP response contains bad number of certificates") - } - - if n := len(basicResp.TBSResponseData.Responses); n == 0 || cert == nil && n > 1 { - return nil, ParseError("OCSP response contains bad number of responses") - } - - var singleResp singleResponse - if cert == nil { - singleResp = basicResp.TBSResponseData.Responses[0] - } else { - match := false - for _, resp := range basicResp.TBSResponseData.Responses { - if cert.SerialNumber.Cmp(resp.CertID.SerialNumber) == 0 { - singleResp = resp - match = true - break - } - } - if !match { - return nil, ParseError("no response matching the supplied certificate") - } - } - - ret := &Response{ - TBSResponseData: basicResp.TBSResponseData.Raw, - Signature: basicResp.Signature.RightAlign(), - SignatureAlgorithm: getSignatureAlgorithmFromOID(basicResp.SignatureAlgorithm.Algorithm), - Extensions: singleResp.SingleExtensions, - SerialNumber: singleResp.CertID.SerialNumber, - ProducedAt: basicResp.TBSResponseData.ProducedAt, - ThisUpdate: singleResp.ThisUpdate, - NextUpdate: singleResp.NextUpdate, - } - - // Handle the ResponderID CHOICE tag. ResponderID can be flattened into - // TBSResponseData once https://go-review.googlesource.com/34503 has been - // released. - rawResponderID := basicResp.TBSResponseData.RawResponderID - switch rawResponderID.Tag { - case 1: // Name - var rdn pkix.RDNSequence - if rest, err := asn1.Unmarshal(rawResponderID.Bytes, &rdn); err != nil || len(rest) != 0 { - return nil, ParseError("invalid responder name") - } - ret.RawResponderName = rawResponderID.Bytes - case 2: // KeyHash - if rest, err := asn1.Unmarshal(rawResponderID.Bytes, &ret.ResponderKeyHash); err != nil || len(rest) != 0 { - return nil, ParseError("invalid responder key hash") - } - default: - return nil, ParseError("invalid responder id tag") - } - - if len(basicResp.Certificates) > 0 { - ret.Certificate, err = x509.ParseCertificate(basicResp.Certificates[0].FullBytes) - if err != nil { - return nil, err - } - - if err := ret.CheckSignatureFrom(ret.Certificate); err != nil { - return nil, ParseError("bad signature on embedded certificate: " + err.Error()) - } - - if issuer != nil { - if err := issuer.CheckSignature(ret.Certificate.SignatureAlgorithm, ret.Certificate.RawTBSCertificate, ret.Certificate.Signature); err != nil { - return nil, ParseError("bad OCSP signature: " + err.Error()) - } - } - } else if issuer != nil { - if err := ret.CheckSignatureFrom(issuer); err != nil { - return nil, ParseError("bad OCSP signature: " + err.Error()) - } - } - - for _, ext := range singleResp.SingleExtensions { - if ext.Critical { - return nil, ParseError("unsupported critical extension") - } - } - - for h, oid := range hashOIDs { - if singleResp.CertID.HashAlgorithm.Algorithm.Equal(oid) { - ret.IssuerHash = h - break - } - } - if ret.IssuerHash == 0 { - return nil, ParseError("unsupported issuer hash algorithm") - } - - switch { - case bool(singleResp.Good): - ret.Status = Good - case bool(singleResp.Unknown): - ret.Status = Unknown - default: - ret.Status = Revoked - ret.RevokedAt = singleResp.Revoked.RevocationTime - ret.RevocationReason = int(singleResp.Revoked.Reason) - } - - return ret, nil -} - -// RequestOptions contains options for constructing OCSP requests. -type RequestOptions struct { - // Hash contains the hash function that should be used when - // constructing the OCSP request. If zero, SHA-1 will be used. - Hash crypto.Hash -} - -func (opts *RequestOptions) hash() crypto.Hash { - if opts == nil || opts.Hash == 0 { - // SHA-1 is nearly universally used in OCSP. - return crypto.SHA1 - } - return opts.Hash -} - -// CreateRequest returns a DER-encoded, OCSP request for the status of cert. If -// opts is nil then sensible defaults are used. -func CreateRequest(cert, issuer *x509.Certificate, opts *RequestOptions) ([]byte, error) { - hashFunc := opts.hash() - - // OCSP seems to be the only place where these raw hash identifiers are - // used. I took the following from - // http://msdn.microsoft.com/en-us/library/ff635603.aspx - _, ok := hashOIDs[hashFunc] - if !ok { - return nil, x509.ErrUnsupportedAlgorithm - } - - if !hashFunc.Available() { - return nil, x509.ErrUnsupportedAlgorithm - } - h := opts.hash().New() - - var publicKeyInfo struct { - Algorithm pkix.AlgorithmIdentifier - PublicKey asn1.BitString - } - if _, err := asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, &publicKeyInfo); err != nil { - return nil, err - } - - h.Write(publicKeyInfo.PublicKey.RightAlign()) - issuerKeyHash := h.Sum(nil) - - h.Reset() - h.Write(issuer.RawSubject) - issuerNameHash := h.Sum(nil) - - req := &Request{ - HashAlgorithm: hashFunc, - IssuerNameHash: issuerNameHash, - IssuerKeyHash: issuerKeyHash, - SerialNumber: cert.SerialNumber, - } - return req.Marshal() -} - -// CreateResponse returns a DER-encoded OCSP response with the specified contents. -// The fields in the response are populated as follows: -// -// The responder cert is used to populate the responder's name field, and the -// certificate itself is provided alongside the OCSP response signature. -// -// The issuer cert is used to puplate the IssuerNameHash and IssuerKeyHash fields. -// -// The template is used to populate the SerialNumber, Status, RevokedAt, -// RevocationReason, ThisUpdate, and NextUpdate fields. -// -// If template.IssuerHash is not set, SHA1 will be used. -// -// The ProducedAt date is automatically set to the current date, to the nearest minute. -func CreateResponse(issuer, responderCert *x509.Certificate, template Response, priv crypto.Signer) ([]byte, error) { - var publicKeyInfo struct { - Algorithm pkix.AlgorithmIdentifier - PublicKey asn1.BitString - } - if _, err := asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, &publicKeyInfo); err != nil { - return nil, err - } - - if template.IssuerHash == 0 { - template.IssuerHash = crypto.SHA1 - } - hashOID := getOIDFromHashAlgorithm(template.IssuerHash) - if hashOID == nil { - return nil, errors.New("unsupported issuer hash algorithm") - } - - if !template.IssuerHash.Available() { - return nil, fmt.Errorf("issuer hash algorithm %v not linked into binary", template.IssuerHash) - } - h := template.IssuerHash.New() - h.Write(publicKeyInfo.PublicKey.RightAlign()) - issuerKeyHash := h.Sum(nil) - - h.Reset() - h.Write(issuer.RawSubject) - issuerNameHash := h.Sum(nil) - - innerResponse := singleResponse{ - CertID: certID{ - HashAlgorithm: pkix.AlgorithmIdentifier{ - Algorithm: hashOID, - Parameters: asn1.RawValue{Tag: 5 /* ASN.1 NULL */}, - }, - NameHash: issuerNameHash, - IssuerKeyHash: issuerKeyHash, - SerialNumber: template.SerialNumber, - }, - ThisUpdate: template.ThisUpdate.UTC(), - NextUpdate: template.NextUpdate.UTC(), - SingleExtensions: template.ExtraExtensions, - } - - switch template.Status { - case Good: - innerResponse.Good = true - case Unknown: - innerResponse.Unknown = true - case Revoked: - innerResponse.Revoked = revokedInfo{ - RevocationTime: template.RevokedAt.UTC(), - Reason: asn1.Enumerated(template.RevocationReason), - } - } - - rawResponderID := asn1.RawValue{ - Class: 2, // context-specific - Tag: 1, // Name (explicit tag) - IsCompound: true, - Bytes: responderCert.RawSubject, - } - tbsResponseData := responseData{ - Version: 0, - RawResponderID: rawResponderID, - ProducedAt: time.Now().Truncate(time.Minute).UTC(), - Responses: []singleResponse{innerResponse}, - } - - tbsResponseDataDER, err := asn1.Marshal(tbsResponseData) - if err != nil { - return nil, err - } - - hashFunc, signatureAlgorithm, err := signingParamsForPublicKey(priv.Public(), template.SignatureAlgorithm) - if err != nil { - return nil, err - } - - responseHash := hashFunc.New() - responseHash.Write(tbsResponseDataDER) - signature, err := priv.Sign(rand.Reader, responseHash.Sum(nil), hashFunc) - if err != nil { - return nil, err - } - - response := basicResponse{ - TBSResponseData: tbsResponseData, - SignatureAlgorithm: signatureAlgorithm, - Signature: asn1.BitString{ - Bytes: signature, - BitLength: 8 * len(signature), - }, - } - if template.Certificate != nil { - response.Certificates = []asn1.RawValue{ - {FullBytes: template.Certificate.Raw}, - } - } - responseDER, err := asn1.Marshal(response) - if err != nil { - return nil, err - } - - return asn1.Marshal(responseASN1{ - Status: asn1.Enumerated(Success), - Response: responseBytes{ - ResponseType: idPKIXOCSPBasic, - Response: responseDER, - }, - }) -} diff --git a/vendor/golang.org/x/crypto/ocsp/ocsp_test.go b/vendor/golang.org/x/crypto/ocsp/ocsp_test.go deleted file mode 100644 index 70b19764..00000000 --- a/vendor/golang.org/x/crypto/ocsp/ocsp_test.go +++ /dev/null @@ -1,875 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.7 - -package ocsp - -import ( - "bytes" - "crypto" - "crypto/sha1" - "crypto/x509" - "crypto/x509/pkix" - "encoding/asn1" - "encoding/hex" - "math/big" - "reflect" - "testing" - "time" -) - -func TestOCSPDecode(t *testing.T) { - responseBytes, _ := hex.DecodeString(ocspResponseHex) - resp, err := ParseResponse(responseBytes, nil) - if err != nil { - t.Fatal(err) - } - - responderCert, _ := hex.DecodeString(startComResponderCertHex) - responder, err := x509.ParseCertificate(responderCert) - if err != nil { - t.Fatal(err) - } - - expected := Response{ - Status: Good, - SerialNumber: big.NewInt(0x1d0fa), - RevocationReason: Unspecified, - ThisUpdate: time.Date(2010, 7, 7, 15, 1, 5, 0, time.UTC), - NextUpdate: time.Date(2010, 7, 7, 18, 35, 17, 0, time.UTC), - RawResponderName: responder.RawSubject, - } - - if !reflect.DeepEqual(resp.ThisUpdate, expected.ThisUpdate) { - t.Errorf("resp.ThisUpdate: got %v, want %v", resp.ThisUpdate, expected.ThisUpdate) - } - - if !reflect.DeepEqual(resp.NextUpdate, expected.NextUpdate) { - t.Errorf("resp.NextUpdate: got %v, want %v", resp.NextUpdate, expected.NextUpdate) - } - - if resp.Status != expected.Status { - t.Errorf("resp.Status: got %d, want %d", resp.Status, expected.Status) - } - - if resp.SerialNumber.Cmp(expected.SerialNumber) != 0 { - t.Errorf("resp.SerialNumber: got %x, want %x", resp.SerialNumber, expected.SerialNumber) - } - - if resp.RevocationReason != expected.RevocationReason { - t.Errorf("resp.RevocationReason: got %d, want %d", resp.RevocationReason, expected.RevocationReason) - } - - if !bytes.Equal(resp.RawResponderName, expected.RawResponderName) { - t.Errorf("resp.RawResponderName: got %x, want %x", resp.RawResponderName, expected.RawResponderName) - } - - if !bytes.Equal(resp.ResponderKeyHash, expected.ResponderKeyHash) { - t.Errorf("resp.ResponderKeyHash: got %x, want %x", resp.ResponderKeyHash, expected.ResponderKeyHash) - } -} - -func TestOCSPDecodeWithoutCert(t *testing.T) { - responseBytes, _ := hex.DecodeString(ocspResponseWithoutCertHex) - _, err := ParseResponse(responseBytes, nil) - if err != nil { - t.Error(err) - } -} - -func TestOCSPDecodeWithExtensions(t *testing.T) { - responseBytes, _ := hex.DecodeString(ocspResponseWithCriticalExtensionHex) - _, err := ParseResponse(responseBytes, nil) - if err == nil { - t.Error(err) - } - - responseBytes, _ = hex.DecodeString(ocspResponseWithExtensionHex) - response, err := ParseResponse(responseBytes, nil) - if err != nil { - t.Fatal(err) - } - - if len(response.Extensions) != 1 { - t.Errorf("len(response.Extensions): got %v, want %v", len(response.Extensions), 1) - } - - extensionBytes := response.Extensions[0].Value - expectedBytes, _ := hex.DecodeString(ocspExtensionValueHex) - if !bytes.Equal(extensionBytes, expectedBytes) { - t.Errorf("response.Extensions[0]: got %x, want %x", extensionBytes, expectedBytes) - } -} - -func TestOCSPSignature(t *testing.T) { - issuerCert, _ := hex.DecodeString(startComHex) - issuer, err := x509.ParseCertificate(issuerCert) - if err != nil { - t.Fatal(err) - } - - response, _ := hex.DecodeString(ocspResponseHex) - if _, err := ParseResponse(response, issuer); err != nil { - t.Error(err) - } -} - -func TestOCSPRequest(t *testing.T) { - leafCert, _ := hex.DecodeString(leafCertHex) - cert, err := x509.ParseCertificate(leafCert) - if err != nil { - t.Fatal(err) - } - - issuerCert, _ := hex.DecodeString(issuerCertHex) - issuer, err := x509.ParseCertificate(issuerCert) - if err != nil { - t.Fatal(err) - } - - request, err := CreateRequest(cert, issuer, nil) - if err != nil { - t.Fatal(err) - } - - expectedBytes, _ := hex.DecodeString(ocspRequestHex) - if !bytes.Equal(request, expectedBytes) { - t.Errorf("request: got %x, wanted %x", request, expectedBytes) - } - - decodedRequest, err := ParseRequest(expectedBytes) - if err != nil { - t.Fatal(err) - } - - if decodedRequest.HashAlgorithm != crypto.SHA1 { - t.Errorf("request.HashAlgorithm: got %v, want %v", decodedRequest.HashAlgorithm, crypto.SHA1) - } - - var publicKeyInfo struct { - Algorithm pkix.AlgorithmIdentifier - PublicKey asn1.BitString - } - _, err = asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, &publicKeyInfo) - if err != nil { - t.Fatal(err) - } - - h := sha1.New() - h.Write(publicKeyInfo.PublicKey.RightAlign()) - issuerKeyHash := h.Sum(nil) - - h.Reset() - h.Write(issuer.RawSubject) - issuerNameHash := h.Sum(nil) - - if got := decodedRequest.IssuerKeyHash; !bytes.Equal(got, issuerKeyHash) { - t.Errorf("request.IssuerKeyHash: got %x, want %x", got, issuerKeyHash) - } - - if got := decodedRequest.IssuerNameHash; !bytes.Equal(got, issuerNameHash) { - t.Errorf("request.IssuerKeyHash: got %x, want %x", got, issuerNameHash) - } - - if got := decodedRequest.SerialNumber; got.Cmp(cert.SerialNumber) != 0 { - t.Errorf("request.SerialNumber: got %x, want %x", got, cert.SerialNumber) - } - - marshaledRequest, err := decodedRequest.Marshal() - if err != nil { - t.Fatal(err) - } - - if bytes.Compare(expectedBytes, marshaledRequest) != 0 { - t.Errorf( - "Marshaled request doesn't match expected: wanted %x, got %x", - expectedBytes, - marshaledRequest, - ) - } -} - -func TestOCSPResponse(t *testing.T) { - leafCert, _ := hex.DecodeString(leafCertHex) - leaf, err := x509.ParseCertificate(leafCert) - if err != nil { - t.Fatal(err) - } - - issuerCert, _ := hex.DecodeString(issuerCertHex) - issuer, err := x509.ParseCertificate(issuerCert) - if err != nil { - t.Fatal(err) - } - - responderCert, _ := hex.DecodeString(responderCertHex) - responder, err := x509.ParseCertificate(responderCert) - if err != nil { - t.Fatal(err) - } - - responderPrivateKeyDER, _ := hex.DecodeString(responderPrivateKeyHex) - responderPrivateKey, err := x509.ParsePKCS1PrivateKey(responderPrivateKeyDER) - if err != nil { - t.Fatal(err) - } - - extensionBytes, _ := hex.DecodeString(ocspExtensionValueHex) - extensions := []pkix.Extension{ - { - Id: ocspExtensionOID, - Critical: false, - Value: extensionBytes, - }, - } - - thisUpdate := time.Date(2010, 7, 7, 15, 1, 5, 0, time.UTC) - nextUpdate := time.Date(2010, 7, 7, 18, 35, 17, 0, time.UTC) - template := Response{ - Status: Revoked, - SerialNumber: leaf.SerialNumber, - ThisUpdate: thisUpdate, - NextUpdate: nextUpdate, - RevokedAt: thisUpdate, - RevocationReason: KeyCompromise, - Certificate: responder, - ExtraExtensions: extensions, - } - - template.IssuerHash = crypto.MD5 - _, err = CreateResponse(issuer, responder, template, responderPrivateKey) - if err == nil { - t.Fatal("CreateResponse didn't fail with non-valid template.IssuerHash value crypto.MD5") - } - - testCases := []struct { - name string - issuerHash crypto.Hash - }{ - {"Zero value", 0}, - {"crypto.SHA1", crypto.SHA1}, - {"crypto.SHA256", crypto.SHA256}, - {"crypto.SHA384", crypto.SHA384}, - {"crypto.SHA512", crypto.SHA512}, - } - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - template.IssuerHash = tc.issuerHash - responseBytes, err := CreateResponse(issuer, responder, template, responderPrivateKey) - if err != nil { - t.Fatalf("CreateResponse failed: %s", err) - } - - resp, err := ParseResponse(responseBytes, nil) - if err != nil { - t.Fatalf("ParseResponse failed: %s", err) - } - - if !reflect.DeepEqual(resp.ThisUpdate, template.ThisUpdate) { - t.Errorf("resp.ThisUpdate: got %v, want %v", resp.ThisUpdate, template.ThisUpdate) - } - - if !reflect.DeepEqual(resp.NextUpdate, template.NextUpdate) { - t.Errorf("resp.NextUpdate: got %v, want %v", resp.NextUpdate, template.NextUpdate) - } - - if !reflect.DeepEqual(resp.RevokedAt, template.RevokedAt) { - t.Errorf("resp.RevokedAt: got %v, want %v", resp.RevokedAt, template.RevokedAt) - } - - if !reflect.DeepEqual(resp.Extensions, template.ExtraExtensions) { - t.Errorf("resp.Extensions: got %v, want %v", resp.Extensions, template.ExtraExtensions) - } - - delay := time.Since(resp.ProducedAt) - if delay < -time.Hour || delay > time.Hour { - t.Errorf("resp.ProducedAt: got %s, want close to current time (%s)", resp.ProducedAt, time.Now()) - } - - if resp.Status != template.Status { - t.Errorf("resp.Status: got %d, want %d", resp.Status, template.Status) - } - - if resp.SerialNumber.Cmp(template.SerialNumber) != 0 { - t.Errorf("resp.SerialNumber: got %x, want %x", resp.SerialNumber, template.SerialNumber) - } - - if resp.RevocationReason != template.RevocationReason { - t.Errorf("resp.RevocationReason: got %d, want %d", resp.RevocationReason, template.RevocationReason) - } - - expectedHash := tc.issuerHash - if tc.issuerHash == 0 { - expectedHash = crypto.SHA1 - } - - if resp.IssuerHash != expectedHash { - t.Errorf("resp.IssuerHash: got %d, want %d", resp.IssuerHash, expectedHash) - } - }) - } -} - -func TestErrorResponse(t *testing.T) { - responseBytes, _ := hex.DecodeString(errorResponseHex) - _, err := ParseResponse(responseBytes, nil) - - respErr, ok := err.(ResponseError) - if !ok { - t.Fatalf("expected ResponseError from ParseResponse but got %#v", err) - } - if respErr.Status != Malformed { - t.Fatalf("expected Malformed status from ParseResponse but got %d", respErr.Status) - } -} - -func TestOCSPDecodeMultiResponse(t *testing.T) { - inclCert, _ := hex.DecodeString(ocspMultiResponseCertHex) - cert, err := x509.ParseCertificate(inclCert) - if err != nil { - t.Fatal(err) - } - - responseBytes, _ := hex.DecodeString(ocspMultiResponseHex) - resp, err := ParseResponseForCert(responseBytes, cert, nil) - if err != nil { - t.Fatal(err) - } - - if resp.SerialNumber.Cmp(cert.SerialNumber) != 0 { - t.Errorf("resp.SerialNumber: got %x, want %x", resp.SerialNumber, cert.SerialNumber) - } -} - -func TestOCSPDecodeMultiResponseWithoutMatchingCert(t *testing.T) { - wrongCert, _ := hex.DecodeString(startComHex) - cert, err := x509.ParseCertificate(wrongCert) - if err != nil { - t.Fatal(err) - } - - responseBytes, _ := hex.DecodeString(ocspMultiResponseHex) - _, err = ParseResponseForCert(responseBytes, cert, nil) - want := ParseError("no response matching the supplied certificate") - if err != want { - t.Errorf("err: got %q, want %q", err, want) - } -} - -// This OCSP response was taken from Thawte's public OCSP responder. -// To recreate: -// $ openssl s_client -tls1 -showcerts -servername www.google.com -connect www.google.com:443 -// Copy and paste the first certificate into /tmp/cert.crt and the second into -// /tmp/intermediate.crt -// $ openssl ocsp -issuer /tmp/intermediate.crt -cert /tmp/cert.crt -url http://ocsp.thawte.com -resp_text -respout /tmp/ocsp.der -// Then hex encode the result: -// $ python -c 'print file("/tmp/ocsp.der", "r").read().encode("hex")' - -const ocspResponseHex = "308206bc0a0100a08206b5308206b106092b0601050507300101048206a23082069e3081" + - "c9a14e304c310b300906035504061302494c31163014060355040a130d5374617274436f" + - "6d204c74642e312530230603550403131c5374617274436f6d20436c6173732031204f43" + - "5350205369676e6572180f32303130303730373137333531375a30663064303c30090605" + - "2b0e03021a050004146568874f40750f016a3475625e1f5c93e5a26d580414eb4234d098" + - "b0ab9ff41b6b08f7cc642eef0e2c45020301d0fa8000180f323031303037303731353031" + - "30355aa011180f32303130303730373138333531375a300d06092a864886f70d01010505" + - "000382010100ab557ff070d1d7cebbb5f0ec91a15c3fed22eb2e1b8244f1b84545f013a4" + - "fb46214c5e3fbfbebb8a56acc2b9db19f68fd3c3201046b3824d5ba689f99864328710cb" + - "467195eb37d84f539e49f859316b32964dc3e47e36814ce94d6c56dd02733b1d0802f7ff" + - "4eebdbbd2927dcf580f16cbc290f91e81b53cb365e7223f1d6e20a88ea064104875e0145" + - "672b20fc14829d51ca122f5f5d77d3ad6c83889c55c7dc43680ba2fe3cef8b05dbcabdc0" + - "d3e09aaf9725597f8c858c2fa38c0d6aed2e6318194420dd1a1137445d13e1c97ab47896" + - "17a4e08925f46f867b72e3a4dc1f08cb870b2b0717f7207faa0ac512e628a029aba7457a" + - "e63dcf3281e2162d9349a08204ba308204b6308204b23082039aa003020102020101300d" + - "06092a864886f70d010105050030818c310b300906035504061302494c31163014060355" + - "040a130d5374617274436f6d204c74642e312b3029060355040b13225365637572652044" + - "69676974616c204365727469666963617465205369676e696e6731383036060355040313" + - "2f5374617274436f6d20436c6173732031205072696d61727920496e7465726d65646961" + - "746520536572766572204341301e170d3037313032353030323330365a170d3132313032" + - "333030323330365a304c310b300906035504061302494c31163014060355040a130d5374" + - "617274436f6d204c74642e312530230603550403131c5374617274436f6d20436c617373" + - "2031204f435350205369676e657230820122300d06092a864886f70d0101010500038201" + - "0f003082010a0282010100b9561b4c45318717178084e96e178df2255e18ed8d8ecc7c2b" + - "7b51a6c1c2e6bf0aa3603066f132fe10ae97b50e99fa24b83fc53dd2777496387d14e1c3" + - "a9b6a4933e2ac12413d085570a95b8147414a0bc007c7bcf222446ef7f1a156d7ea1c577" + - "fc5f0facdfd42eb0f5974990cb2f5cefebceef4d1bdc7ae5c1075c5a99a93171f2b0845b" + - "4ff0864e973fcfe32f9d7511ff87a3e943410c90a4493a306b6944359340a9ca96f02b66" + - "ce67f028df2980a6aaee8d5d5d452b8b0eb93f923cc1e23fcccbdbe7ffcb114d08fa7a6a" + - "3c404f825d1a0e715935cf623a8c7b59670014ed0622f6089a9447a7a19010f7fe58f841" + - "29a2765ea367824d1c3bb2fda308530203010001a382015c30820158300c0603551d1301" + - "01ff04023000300b0603551d0f0404030203a8301e0603551d250417301506082b060105" + - "0507030906092b0601050507300105301d0603551d0e0416041445e0a36695414c5dd449" + - "bc00e33cdcdbd2343e173081a80603551d230481a030819d8014eb4234d098b0ab9ff41b" + - "6b08f7cc642eef0e2c45a18181a47f307d310b300906035504061302494c311630140603" + - "55040a130d5374617274436f6d204c74642e312b3029060355040b132253656375726520" + - "4469676974616c204365727469666963617465205369676e696e67312930270603550403" + - "13205374617274436f6d2043657274696669636174696f6e20417574686f726974798201" + - "0a30230603551d12041c301a8618687474703a2f2f7777772e737461727473736c2e636f" + - "6d2f302c06096086480186f842010d041f161d5374617274436f6d205265766f63617469" + - "6f6e20417574686f72697479300d06092a864886f70d01010505000382010100182d2215" + - "8f0fc0291324fa8574c49bb8ff2835085adcbf7b7fc4191c397ab6951328253fffe1e5ec" + - "2a7da0d50fca1a404e6968481366939e666c0a6209073eca57973e2fefa9ed1718e8176f" + - "1d85527ff522c08db702e3b2b180f1cbff05d98128252cf0f450f7dd2772f4188047f19d" + - "c85317366f94bc52d60f453a550af58e308aaab00ced33040b62bf37f5b1ab2a4f7f0f80" + - "f763bf4d707bc8841d7ad9385ee2a4244469260b6f2bf085977af9074796048ecc2f9d48" + - "a1d24ce16e41a9941568fec5b42771e118f16c106a54ccc339a4b02166445a167902e75e" + - "6d8620b0825dcd18a069b90fd851d10fa8effd409deec02860d26d8d833f304b10669b42" - -const startComResponderCertHex = "308204b23082039aa003020102020101300d06092a864886f70d010105050030818c310b" + - "300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e31" + - "2b3029060355040b1322536563757265204469676974616c204365727469666963617465" + - "205369676e696e67313830360603550403132f5374617274436f6d20436c617373203120" + - "5072696d61727920496e7465726d65646961746520536572766572204341301e170d3037" + - "313032353030323330365a170d3132313032333030323330365a304c310b300906035504" + - "061302494c31163014060355040a130d5374617274436f6d204c74642e31253023060355" + - "0403131c5374617274436f6d20436c6173732031204f435350205369676e657230820122" + - "300d06092a864886f70d01010105000382010f003082010a0282010100b9561b4c453187" + - "17178084e96e178df2255e18ed8d8ecc7c2b7b51a6c1c2e6bf0aa3603066f132fe10ae97" + - "b50e99fa24b83fc53dd2777496387d14e1c3a9b6a4933e2ac12413d085570a95b8147414" + - "a0bc007c7bcf222446ef7f1a156d7ea1c577fc5f0facdfd42eb0f5974990cb2f5cefebce" + - "ef4d1bdc7ae5c1075c5a99a93171f2b0845b4ff0864e973fcfe32f9d7511ff87a3e94341" + - "0c90a4493a306b6944359340a9ca96f02b66ce67f028df2980a6aaee8d5d5d452b8b0eb9" + - "3f923cc1e23fcccbdbe7ffcb114d08fa7a6a3c404f825d1a0e715935cf623a8c7b596700" + - "14ed0622f6089a9447a7a19010f7fe58f84129a2765ea367824d1c3bb2fda30853020301" + - "0001a382015c30820158300c0603551d130101ff04023000300b0603551d0f0404030203" + - "a8301e0603551d250417301506082b0601050507030906092b0601050507300105301d06" + - "03551d0e0416041445e0a36695414c5dd449bc00e33cdcdbd2343e173081a80603551d23" + - "0481a030819d8014eb4234d098b0ab9ff41b6b08f7cc642eef0e2c45a18181a47f307d31" + - "0b300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e" + - "312b3029060355040b1322536563757265204469676974616c2043657274696669636174" + - "65205369676e696e6731293027060355040313205374617274436f6d2043657274696669" + - "636174696f6e20417574686f7269747982010a30230603551d12041c301a861868747470" + - "3a2f2f7777772e737461727473736c2e636f6d2f302c06096086480186f842010d041f16" + - "1d5374617274436f6d205265766f636174696f6e20417574686f72697479300d06092a86" + - "4886f70d01010505000382010100182d22158f0fc0291324fa8574c49bb8ff2835085adc" + - "bf7b7fc4191c397ab6951328253fffe1e5ec2a7da0d50fca1a404e6968481366939e666c" + - "0a6209073eca57973e2fefa9ed1718e8176f1d85527ff522c08db702e3b2b180f1cbff05" + - "d98128252cf0f450f7dd2772f4188047f19dc85317366f94bc52d60f453a550af58e308a" + - "aab00ced33040b62bf37f5b1ab2a4f7f0f80f763bf4d707bc8841d7ad9385ee2a4244469" + - "260b6f2bf085977af9074796048ecc2f9d48a1d24ce16e41a9941568fec5b42771e118f1" + - "6c106a54ccc339a4b02166445a167902e75e6d8620b0825dcd18a069b90fd851d10fa8ef" + - "fd409deec02860d26d8d833f304b10669b42" - -const startComHex = "308206343082041ca003020102020118300d06092a864886f70d0101050500307d310b30" + - "0906035504061302494c31163014060355040a130d5374617274436f6d204c74642e312b" + - "3029060355040b1322536563757265204469676974616c20436572746966696361746520" + - "5369676e696e6731293027060355040313205374617274436f6d20436572746966696361" + - "74696f6e20417574686f72697479301e170d3037313032343230353431375a170d313731" + - "3032343230353431375a30818c310b300906035504061302494c31163014060355040a13" + - "0d5374617274436f6d204c74642e312b3029060355040b13225365637572652044696769" + - "74616c204365727469666963617465205369676e696e67313830360603550403132f5374" + - "617274436f6d20436c6173732031205072696d61727920496e7465726d65646961746520" + - "53657276657220434130820122300d06092a864886f70d01010105000382010f00308201" + - "0a0282010100b689c6acef09527807ac9263d0f44418188480561f91aee187fa3250b4d3" + - "4706f0e6075f700e10f71dc0ce103634855a0f92ac83c6ac58523fba38e8fce7a724e240" + - "a60876c0926e9e2a6d4d3f6e61200adb59ded27d63b33e46fefa215118d7cd30a6ed076e" + - "3b7087b4f9faebee823c056f92f7a4dc0a301e9373fe07cad75f809d225852ae06da8b87" + - "2369b0e42ad8ea83d2bdf371db705a280faf5a387045123f304dcd3baf17e50fcba0a95d" + - "48aab16150cb34cd3c5cc30be810c08c9bf0030362feb26c3e720eee1c432ac9480e5739" + - "c43121c810c12c87fe5495521f523c31129b7fe7c0a0a559d5e28f3ef0d5a8e1d77031a9" + - "c4b3cfaf6d532f06f4a70203010001a38201ad308201a9300f0603551d130101ff040530" + - "030101ff300e0603551d0f0101ff040403020106301d0603551d0e04160414eb4234d098" + - "b0ab9ff41b6b08f7cc642eef0e2c45301f0603551d230418301680144e0bef1aa4405ba5" + - "17698730ca346843d041aef2306606082b06010505070101045a3058302706082b060105" + - "05073001861b687474703a2f2f6f6373702e737461727473736c2e636f6d2f6361302d06" + - "082b060105050730028621687474703a2f2f7777772e737461727473736c2e636f6d2f73" + - "667363612e637274305b0603551d1f045430523027a025a0238621687474703a2f2f7777" + - "772e737461727473736c2e636f6d2f73667363612e63726c3027a025a023862168747470" + - "3a2f2f63726c2e737461727473736c2e636f6d2f73667363612e63726c3081800603551d" + - "20047930773075060b2b0601040181b5370102013066302e06082b060105050702011622" + - "687474703a2f2f7777772e737461727473736c2e636f6d2f706f6c6963792e7064663034" + - "06082b060105050702011628687474703a2f2f7777772e737461727473736c2e636f6d2f" + - "696e7465726d6564696174652e706466300d06092a864886f70d01010505000382020100" + - "2109493ea5886ee00b8b48da314d8ff75657a2e1d36257e9b556f38545753be5501f048b" + - "e6a05a3ee700ae85d0fbff200364cbad02e1c69172f8a34dd6dee8cc3fa18aa2e37c37a7" + - "c64f8f35d6f4d66e067bdd21d9cf56ffcb302249fe8904f385e5aaf1e71fe875904dddf9" + - "46f74234f745580c110d84b0c6da5d3ef9019ee7e1da5595be741c7bfc4d144fac7e5547" + - "7d7bf4a50d491e95e8f712c1ccff76a62547d0f37535be97b75816ebaa5c786fec5330af" + - "ea044dcca902e3f0b60412f630b1113d904e5664d7dc3c435f7339ef4baf87ebf6fe6888" + - "4472ead207c669b0c1a18bef1749d761b145485f3b2021e95bb2ccf4d7e931f50b15613b" + - "7a94e3ebd9bc7f94ae6ae3626296a8647cb887f399327e92a252bebbf865cfc9f230fc8b" + - "c1c2a696d75f89e15c3480f58f47072fb491bfb1a27e5f4b5ad05b9f248605515a690365" + - "434971c5e06f94346bf61bd8a9b04c7e53eb8f48dfca33b548fa364a1a53a6330cd089cd" + - "4915cd89313c90c072d7654b52358a461144b93d8e2865a63e799e5c084429adb035112e" + - "214eb8d2e7103e5d8483b3c3c2e4d2c6fd094b7409ddf1b3d3193e800da20b19f038e7c5" + - "c2afe223db61e29d5c6e2089492e236ab262c145b49faf8ba7f1223bf87de290d07a19fb" + - "4a4ce3d27d5f4a8303ed27d6239e6b8db459a2d9ef6c8229dd75193c3f4c108defbb7527" + - "d2ae83a7a8ce5ba7" - -const ocspResponseWithoutCertHex = "308201d40a0100a08201cd308201c906092b0601050507300101048201ba3082" + - "01b630819fa2160414884451ff502a695e2d88f421bad90cf2cecbea7c180f3230313330" + - "3631383037323434335a30743072304a300906052b0e03021a0500041448b60d38238df8" + - "456e4ee5843ea394111802979f0414884451ff502a695e2d88f421bad90cf2cecbea7c02" + - "1100f78b13b946fc9635d8ab49de9d2148218000180f3230313330363138303732343433" + - "5aa011180f32303133303632323037323434335a300d06092a864886f70d010105050003" + - "82010100103e18b3d297a5e7a6c07a4fc52ac46a15c0eba96f3be17f0ffe84de5b8c8e05" + - "5a8f577586a849dc4abd6440eb6fedde4622451e2823c1cbf3558b4e8184959c9fe96eff" + - "8bc5f95866c58c6d087519faabfdae37e11d9874f1bc0db292208f645dd848185e4dd38b" + - "6a8547dfa7b74d514a8470015719064d35476b95bebb03d4d2845c5ca15202d2784878f2" + - "0f904c24f09736f044609e9c271381713400e563023d212db422236440c6f377bbf24b2b" + - "9e7dec8698e36a8df68b7592ad3489fb2937afb90eb85d2aa96b81c94c25057dbd4759d9" + - "20a1a65c7f0b6427a224b3c98edd96b9b61f706099951188b0289555ad30a216fb774651" + - "5a35fca2e054dfa8" - -// PKIX nonce extension -var ocspExtensionOID = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 48, 1, 2} -var ocspExtensionValueHex = "0403000000" - -const ocspResponseWithCriticalExtensionHex = "308204fe0a0100a08204f7308204f306092b0601050507300101048204e4308204e03081" + - "dba003020100a11b3019311730150603550403130e4f43535020526573706f6e64657218" + - "0f32303136303130343137303130305a3081a53081a23049300906052b0e03021a050004" + - "14c0fe0278fc99188891b3f212e9c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b21317" + - "7e6f8d157cd4f60210017f77deb3bcbb235d44ccc7dba62e72a116180f32303130303730" + - "373135303130355aa0030a0101180f32303130303730373135303130355aa011180f3230" + - "3130303730373138333531375aa1193017301506092b06010505073001020101ff040504" + - "03000000300d06092a864886f70d01010b0500038201010031c730ca60a7a0d92d8e4010" + - "911b469de95b4d27e89de6537552436237967694f76f701cf6b45c932bd308bca4a8d092" + - "5c604ba94796903091d9e6c000178e72c1f0a24a277dd262835af5d17d3f9d7869606c9f" + - "e7c8e708a41645699895beee38bfa63bb46296683761c5d1d65439b8ab868dc3017c9eeb" + - "b70b82dbf3a31c55b457d48bb9e82b335ed49f445042eaf606b06a3e0639824924c89c63" + - "eccddfe85e6694314138b2536f5e15e07085d0f6e26d4b2f8244bab0d70de07283ac6384" + - "a0501fc3dea7cf0adfd4c7f34871080900e252ddc403e3f0265f2a704af905d3727504ed" + - "28f3214a219d898a022463c78439799ca81c8cbafdbcec34ea937cd6a08202ea308202e6" + - "308202e2308201caa003020102020101300d06092a864886f70d01010b05003019311730" + - "150603550403130e4f43535020526573706f6e646572301e170d31353031333031353530" + - "33335a170d3136303133303135353033335a3019311730150603550403130e4f43535020" + - "526573706f6e64657230820122300d06092a864886f70d01010105000382010f00308201" + - "0a0282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616e" + - "c5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbc" + - "bec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b72" + - "3350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b898" + - "9ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d" + - "285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e6" + - "55b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31" + - "a77dcf920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030" + - "130603551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d" + - "06092a864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab8612" + - "31c15fd5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d2288" + - "9064f4aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f3267" + - "09dce52c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156" + - "d67156e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff5" + - "9e2005d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf9" + - "66705de17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d9" + - "3a25439a94299a65a709756c7a3e568be049d5c38839" - -const ocspResponseWithExtensionHex = "308204fb0a0100a08204f4308204f006092b0601050507300101048204e1308204dd3081" + - "d8a003020100a11b3019311730150603550403130e4f43535020526573706f6e64657218" + - "0f32303136303130343136353930305a3081a230819f3049300906052b0e03021a050004" + - "14c0fe0278fc99188891b3f212e9c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b21317" + - "7e6f8d157cd4f60210017f77deb3bcbb235d44ccc7dba62e72a116180f32303130303730" + - "373135303130355aa0030a0101180f32303130303730373135303130355aa011180f3230" + - "3130303730373138333531375aa1163014301206092b0601050507300102040504030000" + - "00300d06092a864886f70d01010b05000382010100c09a33e0b2324c852421bb83f85ac9" + - "9113f5426012bd2d2279a8166e9241d18a33c870894250622ffc7ed0c4601b16d624f90b" + - "779265442cdb6868cf40ab304ab4b66e7315ed02cf663b1601d1d4751772b31bc299db23" + - "9aebac78ed6797c06ed815a7a8d18d63cfbb609cafb47ec2e89e37db255216eb09307848" + - "d01be0a3e943653c78212b96ff524b74c9ec456b17cdfb950cc97645c577b2e09ff41dde" + - "b03afb3adaa381cc0f7c1d95663ef22a0f72f2c45613ae8e2b2d1efc96e8463c7d1d8a1d" + - "7e3b35df8fe73a301fc3f804b942b2b3afa337ff105fc1462b7b1c1d75eb4566c8665e59" + - "f80393b0adbf8004ff6c3327ed34f007cb4a3348a7d55e06e3a08202ea308202e6308202" + - "e2308201caa003020102020101300d06092a864886f70d01010b05003019311730150603" + - "550403130e4f43535020526573706f6e646572301e170d3135303133303135353033335a" + - "170d3136303133303135353033335a3019311730150603550403130e4f43535020526573" + - "706f6e64657230820122300d06092a864886f70d01010105000382010f003082010a0282" + - "010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616ec5265b" + - "56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbcbec75a" + - "70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b723350f0" + - "a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b8989ad0f6" + - "3aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d285b6a" + - "04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e655b104" + - "9a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31a77dcf" + - "920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030130603" + - "551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d06092a" + - "864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab861231c15f" + - "d5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d22889064f4" + - "aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f326709dce5" + - "2c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156d67156" + - "e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff59e2005" + - "d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf966705d" + - "e17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d93a2543" + - "9a94299a65a709756c7a3e568be049d5c38839" - -const ocspMultiResponseHex = "30820ee60a0100a0820edf30820edb06092b060105050730010104820ecc30820ec83082" + - "0839a216041445ac2ecd75f53f1cf6e4c51d3de0047ad0aa7465180f3230313530363032" + - "3130303033305a3082080c3065303d300906052b0e03021a05000414f7452a0080601527" + - "72e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f0204" + - "5456656a8000180f32303135303630323039303230375aa011180f323031353036303331" + - "30303033305a3065303d300906052b0e03021a05000414f7452a008060152772e4a135e7" + - "6e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f02045456656b80" + - "00180f32303135303630323039303230375aa011180f3230313530363033313030303330" + - "5a3065303d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0" + - "f1580414edd8f2ee977252853a330b297a18f5c993853b3f02045456656c8000180f3230" + - "3135303630323039303230375aa011180f32303135303630333130303033305a3065303d" + - "300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414ed" + - "d8f2ee977252853a330b297a18f5c993853b3f02045456656d8000180f32303135303630" + - "323039303230375aa011180f32303135303630333130303033305a3065303d300906052b" + - "0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee9772" + - "52853a330b297a18f5c993853b3f02045456656e8000180f323031353036303230393032" + - "30375aa011180f32303135303630333130303033305a3065303d300906052b0e03021a05" + - "000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b" + - "297a18f5c993853b3f02045456656f8000180f32303135303630323039303230375aa011" + - "180f32303135303630333130303033305a3065303d300906052b0e03021a05000414f745" + - "2a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c9" + - "93853b3f0204545665708000180f32303135303630323039303230375aa011180f323031" + - "35303630333130303033305a3065303d300906052b0e03021a05000414f7452a00806015" + - "2772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f02" + - "04545665718000180f32303135303630323039303230375aa011180f3230313530363033" + - "3130303033305a3065303d300906052b0e03021a05000414f7452a008060152772e4a135" + - "e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f020454566572" + - "8000180f32303135303630323039303230375aa011180f32303135303630333130303033" + - "305a3065303d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fd" + - "e0f1580414edd8f2ee977252853a330b297a18f5c993853b3f0204545665738000180f32" + - "303135303630323039303230375aa011180f32303135303630333130303033305a306530" + - "3d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414" + - "edd8f2ee977252853a330b297a18f5c993853b3f0204545665748000180f323031353036" + - "30323039303230375aa011180f32303135303630333130303033305a3065303d30090605" + - "2b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee97" + - "7252853a330b297a18f5c993853b3f0204545665758000180f3230313530363032303930" + - "3230375aa011180f32303135303630333130303033305a3065303d300906052b0e03021a" + - "05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a33" + - "0b297a18f5c993853b3f0204545665768000180f32303135303630323039303230375aa0" + - "11180f32303135303630333130303033305a3065303d300906052b0e03021a05000414f7" + - "452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5" + - "c993853b3f0204545665778000180f32303135303630323039303230375aa011180f3230" + - "3135303630333130303033305a3065303d300906052b0e03021a05000414f7452a008060" + - "152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f" + - "0204545665788000180f32303135303630323039303230375aa011180f32303135303630" + - "333130303033305a3065303d300906052b0e03021a05000414f7452a008060152772e4a1" + - "35e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f0204545665" + - "798000180f32303135303630323039303230375aa011180f323031353036303331303030" + - "33305a3065303d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52" + - "fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f02045456657a8000180f" + - "32303135303630323039303230375aa011180f32303135303630333130303033305a3065" + - "303d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f15804" + - "14edd8f2ee977252853a330b297a18f5c993853b3f02045456657b8000180f3230313530" + - "3630323039303230375aa011180f32303135303630333130303033305a3065303d300906" + - "052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee" + - "977252853a330b297a18f5c993853b3f02045456657c8000180f32303135303630323039" + - "303230375aa011180f32303135303630333130303033305a3065303d300906052b0e0302" + - "1a05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a" + - "330b297a18f5c993853b3f02045456657d8000180f32303135303630323039303230375a" + - "a011180f32303135303630333130303033305a300d06092a864886f70d01010505000382" + - "01010016b73b92859979f27d15eb018cf069eed39c3d280213565f3026de11ba15bdb94d" + - "764cf2d0fdd204ef926c588d7b183483c8a2b1995079c7ed04dcefcc650c1965be4b6832" + - "a8839e832f7f60f638425eccdf9bc3a81fbe700fda426ddf4f06c29bee431bbbe81effda" + - "a60b7da5b378f199af2f3c8380be7ba6c21c8e27124f8a4d8989926aea19055700848d33" + - "799e833512945fd75364edbd2dd18b783c1e96e332266b17979a0b88c35b43f47c87c493" + - "19155056ad8dbbae5ff2afad3c0e1c69ed111206ffda49875e8e4efc0926264823bc4423" + - "c8a002f34288c4bc22516f98f54fc609943721f590ddd8d24f989457526b599b0eb75cb5" + - "a80da1ad93a621a08205733082056f3082056b30820453a0030201020204545638c4300d" + - "06092a864886f70d01010b0500308182310b300906035504061302555331183016060355" + - "040a130f552e532e20476f7665726e6d656e7431233021060355040b131a446570617274" + - "6d656e74206f662074686520547265617375727931223020060355040b13194365727469" + - "6669636174696f6e20417574686f7269746965733110300e060355040b13074f43494f20" + - "4341301e170d3135303332303131353531335a170d3135303633303034303030305a3081" + - "98310b300906035504061302555331183016060355040a130f552e532e20476f7665726e" + - "6d656e7431233021060355040b131a4465706172746d656e74206f662074686520547265" + - "617375727931223020060355040b131943657274696669636174696f6e20417574686f72" + - "69746965733110300e060355040b13074f43494f204341311430120603550403130b4f43" + - "5350205369676e657230820122300d06092a864886f70d01010105000382010f00308201" + - "0a0282010100c1b6fe1ba1ad50bb98c855811acbd67fe68057f48b8e08d3800e7f2c51b7" + - "9e20551934971fd92b9c9e6c49453097927cba83a94c0b2fea7124ba5ac442b38e37dba6" + - "7303d4962dd7d92b22a04b0e0e182e9ea67620b1c6ce09ee607c19e0e6e3adae81151db1" + - "2bb7f706149349a292e21c1eb28565b6839df055e1a838a772ff34b5a1452618e2c26042" + - "705d53f0af4b57aae6163f58216af12f3887813fe44b0321827b3a0c52b0e47d0aab94a2" + - "f768ab0ba3901d22f8bb263823090b0e37a7f8856db4b0d165c42f3aa7e94f5f6ce1855e" + - "98dc57adea0ae98ad39f67ecdec00b88685566e9e8d69f6cefb6ddced53015d0d3b862bc" + - "be21f3d72251eefcec730203010001a38201cf308201cb300e0603551d0f0101ff040403" + - "020780306b0603551d2004643062300c060a60864801650302010502300c060a60864801" + - "650302010503300c060a60864801650302010504300c060a60864801650302010507300c" + - "060a60864801650302010508300c060a6086480165030201030d300c060a608648016503" + - "020103113081e506082b060105050701010481d83081d5303006082b0601050507300286" + - "24687474703a2f2f706b692e74726561732e676f762f746f63615f65655f6169612e7037" + - "633081a006082b060105050730028681936c6461703a2f2f6c6461702e74726561732e67" + - "6f762f6f753d4f43494f25323043412c6f753d43657274696669636174696f6e25323041" + - "7574686f7269746965732c6f753d4465706172746d656e742532306f6625323074686525" + - "323054726561737572792c6f3d552e532e253230476f7665726e6d656e742c633d55533f" + - "634143657274696669636174653b62696e61727930130603551d25040c300a06082b0601" + - "0505070309300f06092b060105050730010504020500301f0603551d23041830168014a2" + - "13a8e5c607546c243d4eb72b27a2a7711ab5af301d0603551d0e0416041451f98046818a" + - "e46d953ac90c210ccfaa1a06980c300d06092a864886f70d01010b050003820101003a37" + - "0b301d14ffdeb370883639bec5ae6f572dcbddadd672af16ee2a8303316b14e1fbdca8c2" + - "8f4bad9c7b1410250e149c14e9830ca6f17370a8d13151205d956e28c141cc0500379596" + - "c5b9239fcfa3d2de8f1d4f1a2b1bf2d1851bed1c86012ee8135bdc395cd4496ce69fadd0" + - "3b682b90350ca7b4f458190b7a0ab5c33a04cf1347a77d541877a380a4c94988c5658908" + - "44fdc22637a72b9fa410333e2caf969477f9fe07f50e3681c204fb3bf073b9da01cd8d91" + - "8044c40b1159955af12a3263ab1d34119d7f59bfa6cae88ed058addc4e08250263f8f836" + - "2f5bdffd45636fea7474c60a55c535954477b2f286e1b2535f0dd12c162f1b353c370e08" + - "be67" - -const ocspMultiResponseCertHex = "308207943082067ca003020102020454566573300d06092a864886f70d01010b05003081" + - "82310b300906035504061302555331183016060355040a130f552e532e20476f7665726e" + - "6d656e7431233021060355040b131a4465706172746d656e74206f662074686520547265" + - "617375727931223020060355040b131943657274696669636174696f6e20417574686f72" + - "69746965733110300e060355040b13074f43494f204341301e170d313530343130313535" + - "3733385a170d3138303431303136323733385a30819d310b300906035504061302555331" + - "183016060355040a130f552e532e20476f7665726e6d656e7431233021060355040b131a" + - "4465706172746d656e74206f662074686520547265617375727931253023060355040b13" + - "1c427572656175206f66207468652046697363616c20536572766963653110300e060355" + - "040b130744657669636573311630140603550403130d706b692e74726561732e676f7630" + - "820122300d06092a864886f70d01010105000382010f003082010a0282010100c7273623" + - "8c49c48bf501515a2490ef6e5ae0c06e0ad2aa9a6bb77f3d0370d846b2571581ebf38fd3" + - "1948daad3dec7a4da095f1dcbe9654e65bcf7acdfd4ee802421dad9b90536c721d2bca58" + - "8413e6bfd739a72470560bb7d64f9a09284f90ff8af1d5a3c5c84d0f95a00f9c6d988dd0" + - "d87f1d0d3344580901c955139f54d09de0acdbd3322b758cb0c58881bf04913243401f44" + - "013fd9f6d8348044cc8bb0a71978ad93366b2a4687a5274b2ee07d0fb40225453eb244ed" + - "b20152251ac77c59455260ff07eeceb3cb3c60fb8121cf92afd3daa2a4650e1942ccb555" + - "de10b3d481feb299838ef05d0fd1810b146753472ae80da65dd34da25ca1f89971f10039" + - "0203010001a38203f3308203ef300e0603551d0f0101ff0404030205a030170603551d20" + - "0410300e300c060a60864801650302010503301106096086480186f84201010404030206" + - "4030130603551d25040c300a06082b060105050703013082010806082b06010505070101" + - "0481fb3081f8303006082b060105050730028624687474703a2f2f706b692e7472656173" + - "2e676f762f746f63615f65655f6169612e7037633081a006082b06010505073002868193" + - "6c6461703a2f2f6c6461702e74726561732e676f762f6f753d4f43494f25323043412c6f" + - "753d43657274696669636174696f6e253230417574686f7269746965732c6f753d446570" + - "6172746d656e742532306f6625323074686525323054726561737572792c6f3d552e532e" + - "253230476f7665726e6d656e742c633d55533f634143657274696669636174653b62696e" + - "617279302106082b060105050730018615687474703a2f2f6f6373702e74726561732e67" + - "6f76307b0603551d1104743072811c6373612d7465616d4066697363616c2e7472656173" + - "7572792e676f768210706b692e74726561737572792e676f768210706b692e64696d632e" + - "6468732e676f76820d706b692e74726561732e676f76811f6563622d686f7374696e6740" + - "66697363616c2e74726561737572792e676f76308201890603551d1f048201803082017c" + - "3027a025a0238621687474703a2f2f706b692e74726561732e676f762f4f43494f5f4341" + - "332e63726c3082014fa082014ba0820147a48197308194310b3009060355040613025553" + - "31183016060355040a130f552e532e20476f7665726e6d656e7431233021060355040b13" + - "1a4465706172746d656e74206f662074686520547265617375727931223020060355040b" + - "131943657274696669636174696f6e20417574686f7269746965733110300e060355040b" + - "13074f43494f2043413110300e0603550403130743524c313430398681aa6c6461703a2f" + - "2f6c6461702e74726561732e676f762f636e3d43524c313430392c6f753d4f43494f2532" + - "3043412c6f753d43657274696669636174696f6e253230417574686f7269746965732c6f" + - "753d4465706172746d656e742532306f6625323074686525323054726561737572792c6f" + - "3d552e532e253230476f7665726e6d656e742c633d55533f636572746966696361746552" + - "65766f636174696f6e4c6973743b62696e617279302b0603551d1004243022800f323031" + - "35303431303135353733385a810f32303138303431303136323733385a301f0603551d23" + - "041830168014a213a8e5c607546c243d4eb72b27a2a7711ab5af301d0603551d0e041604" + - "14b0869c12c293914cd460e33ed43e6c5a26e0d68f301906092a864886f67d074100040c" + - "300a1b0456382e31030203a8300d06092a864886f70d01010b050003820101004968d182" + - "8f9efdc147e747bb5dda15536a42a079b32d3d7f87e619b483aeee70b7e26bda393c6028" + - "7c733ecb468fe8b8b11bf809ff76add6b90eb25ad8d3a1052e43ee281e48a3a1ebe7efb5" + - "9e2c4a48765dedeb23f5346242145786cc988c762d230d28dd33bf4c2405d80cbb2cb1d6" + - "4c8f10ba130d50cb174f6ffb9cfc12808297a2cefba385f4fad170f39b51ebd87c12abf9" + - "3c51fc000af90d8aaba78f48923908804a5eb35f617ccf71d201e3708a559e6d16f9f13e" + - "074361eb9007e28d86bb4e0bfa13aad0e9ddd9124e84519de60e2fc6040b18d9fd602b02" + - "684b4c071c3019fc842197d00c120c41654bcbfbc4a096a1c637b79112b81ce1fa3899f9" - -const ocspRequestHex = "3051304f304d304b3049300906052b0e03021a05000414c0fe0278fc99188891b3f212e9" + - "c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b213177e6f8d157cd4f60210017f77deb3" + - "bcbb235d44ccc7dba62e72" - -const leafCertHex = "308203c830820331a0030201020210017f77deb3bcbb235d44ccc7dba62e72300d06092a" + - "864886f70d01010505003081ba311f301d060355040a1316566572695369676e20547275" + - "7374204e6574776f726b31173015060355040b130e566572695369676e2c20496e632e31" + - "333031060355040b132a566572695369676e20496e7465726e6174696f6e616c20536572" + - "766572204341202d20436c617373203331493047060355040b13407777772e7665726973" + - "69676e2e636f6d2f43505320496e636f72702e6279205265662e204c494142494c495459" + - "204c54442e286329393720566572695369676e301e170d3132303632313030303030305a" + - "170d3133313233313233353935395a3068310b3009060355040613025553311330110603" + - "550408130a43616c69666f726e6961311230100603550407130950616c6f20416c746f31" + - "173015060355040a130e46616365626f6f6b2c20496e632e311730150603550403140e2a" + - "2e66616365626f6f6b2e636f6d30819f300d06092a864886f70d010101050003818d0030" + - "818902818100ae94b171e2deccc1693e051063240102e0689ae83c39b6b3e74b97d48d7b" + - "23689100b0b496ee62f0e6d356bcf4aa0f50643402f5d1766aa972835a7564723f39bbef" + - "5290ded9bcdbf9d3d55dfad23aa03dc604c54d29cf1d4b3bdbd1a809cfae47b44c7eae17" + - "c5109bee24a9cf4a8d911bb0fd0415ae4c3f430aa12a557e2ae10203010001a382011e30" + - "82011a30090603551d130402300030440603551d20043d303b3039060b6086480186f845" + - "01071703302a302806082b06010505070201161c68747470733a2f2f7777772e76657269" + - "7369676e2e636f6d2f727061303c0603551d1f043530333031a02fa02d862b687474703a" + - "2f2f535652496e746c2d63726c2e766572697369676e2e636f6d2f535652496e746c2e63" + - "726c301d0603551d250416301406082b0601050507030106082b06010505070302300b06" + - "03551d0f0404030205a0303406082b0601050507010104283026302406082b0601050507" + - "30018618687474703a2f2f6f6373702e766572697369676e2e636f6d30270603551d1104" + - "20301e820e2a2e66616365626f6f6b2e636f6d820c66616365626f6f6b2e636f6d300d06" + - "092a864886f70d0101050500038181005b6c2b75f8ed30aa51aad36aba595e555141951f" + - "81a53b447910ac1f76ff78fc2781616b58f3122afc1c87010425e9ed43df1a7ba6498060" + - "67e2688af03db58c7df4ee03309a6afc247ccb134dc33e54c6bc1d5133a532a73273b1d7" + - "9cadc08e7e1a83116d34523340b0305427a21742827c98916698ee7eaf8c3bdd71700817" - -const issuerCertHex = "30820383308202eca003020102021046fcebbab4d02f0f926098233f93078f300d06092a" + - "864886f70d0101050500305f310b300906035504061302555331173015060355040a130e" + - "566572695369676e2c20496e632e31373035060355040b132e436c617373203320507562" + - "6c6963205072696d6172792043657274696669636174696f6e20417574686f7269747930" + - "1e170d3937303431373030303030305a170d3136313032343233353935395a3081ba311f" + - "301d060355040a1316566572695369676e205472757374204e6574776f726b3117301506" + - "0355040b130e566572695369676e2c20496e632e31333031060355040b132a5665726953" + - "69676e20496e7465726e6174696f6e616c20536572766572204341202d20436c61737320" + - "3331493047060355040b13407777772e766572697369676e2e636f6d2f43505320496e63" + - "6f72702e6279205265662e204c494142494c495459204c54442e28632939372056657269" + - "5369676e30819f300d06092a864886f70d010101050003818d0030818902818100d88280" + - "e8d619027d1f85183925a2652be1bfd405d3bce6363baaf04c6c5bb6e7aa3c734555b2f1" + - "bdea9742ed9a340a15d4a95cf54025ddd907c132b2756cc4cabba3fe56277143aa63f530" + - "3e9328e5faf1093bf3b74d4e39f75c495ab8c11dd3b28afe70309542cbfe2b518b5a3c3a" + - "f9224f90b202a7539c4f34e7ab04b27b6f0203010001a381e33081e0300f0603551d1304" + - "0830060101ff02010030440603551d20043d303b3039060b6086480186f8450107010130" + - "2a302806082b06010505070201161c68747470733a2f2f7777772e766572697369676e2e" + - "636f6d2f43505330340603551d25042d302b06082b0601050507030106082b0601050507" + - "030206096086480186f8420401060a6086480186f845010801300b0603551d0f04040302" + - "0106301106096086480186f842010104040302010630310603551d1f042a30283026a024" + - "a0228620687474703a2f2f63726c2e766572697369676e2e636f6d2f706361332e63726c" + - "300d06092a864886f70d010105050003818100408e4997968a73dd8e4def3e61b7caa062" + - "adf40e0abb753de26ed82cc7bff4b98c369bcaa2d09c724639f6a682036511c4bcbf2da6" + - "f5d93b0ab598fab378b91ef22b4c62d5fdb27a1ddf33fd73f9a5d82d8c2aead1fcb028b6" + - "e94948134b838a1b487b24f738de6f4154b8ab576b06dfc7a2d4a9f6f136628088f28b75" + - "d68071" - -// Key and certificate for the OCSP responder were not taken from the Thawte -// responder, since CreateResponse requires that we have the private key. -// Instead, they were generated randomly. -const responderPrivateKeyHex = "308204a40201000282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef" + - "1099f0f6616ec5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df" + - "1701dc6ccfbcbec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074f" + - "fde8a99d5b723350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14" + - "c9fc0f27b8989ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa7" + - "7e7332971c7d285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f" + - "1290bafd97e655b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb9" + - "6222b12ace31a77dcf920334dc94581b02030100010282010100bcf0b93d7238bda329a8" + - "72e7149f61bcb37c154330ccb3f42a85c9002c2e2bdea039d77d8581cd19bed94078794e" + - "56293d601547fc4bf6a2f9002fe5772b92b21b254403b403585e3130cc99ccf08f0ef81a" + - "575b38f597ba4660448b54f44bfbb97072b5a2bf043bfeca828cf7741d13698e3f38162b" + - "679faa646b82abd9a72c5c7d722c5fc577a76d2c2daac588accad18516d1bbad10b0dfa2" + - "05cfe246b59e28608a43942e1b71b0c80498075121de5b900d727c31c42c78cf1db5c0aa" + - "5b491e10ea4ed5c0962aaf2ae025dd81fa4ce490d9d6b4a4465411d8e542fc88617e5695" + - "1aa4fc8ea166f2b4d0eb89ef17f2b206bd5f1014bf8fe0e71fe62f2cccf102818100f2dc" + - "ddf878d553286daad68bac4070a82ffec3dc4666a2750f47879eec913f91836f1d976b60" + - "daf9356e078446dafab5bd2e489e5d64f8572ba24a4ba4f3729b5e106c4dd831cc2497a7" + - "e6c7507df05cb64aeb1bbc81c1e340d58b5964cf39cff84ea30c29ec5d3f005ee1362698" + - "07395037955955655292c3e85f6187fa1f9502818100f4a33c102630840705f8c778a47b" + - "87e8da31e68809af981ac5e5999cf1551685d761cdf0d6520361b99aebd5777a940fa64d" + - "327c09fa63746fbb3247ec73a86edf115f1fe5c83598db803881ade71c33c6e956118345" + - "497b98b5e07bb5be75971465ec78f2f9467e1b74956ca9d4c7c3e314e742a72d8b33889c" + - "6c093a466cef0281801d3df0d02124766dd0be98349b19eb36a508c4e679e793ba0a8bef" + - "4d786888c1e9947078b1ea28938716677b4ad8c5052af12eb73ac194915264a913709a0b" + - "7b9f98d4a18edd781a13d49899f91c20dbd8eb2e61d991ba19b5cdc08893f5cb9d39e5a6" + - "0629ea16d426244673b1b3ee72bd30e41fac8395acac40077403de5efd028180050731dd" + - "d71b1a2b96c8d538ba90bb6b62c8b1c74c03aae9a9f59d21a7a82b0d572ef06fa9c807bf" + - "c373d6b30d809c7871df96510c577421d9860c7383fda0919ece19996b3ca13562159193" + - "c0c246471e287f975e8e57034e5136aaf44254e2650def3d51292474c515b1588969112e" + - "0a85cc77073e9d64d2c2fc497844284b02818100d71d63eabf416cf677401ebf965f8314" + - "120b568a57dd3bd9116c629c40dc0c6948bab3a13cc544c31c7da40e76132ef5dd3f7534" + - "45a635930c74326ae3df0edd1bfb1523e3aa259873ac7cf1ac31151ec8f37b528c275622" + - "48f99b8bed59fd4da2576aa6ee20d93a684900bf907e80c66d6e2261ae15e55284b4ed9d" + - "6bdaa059" - -const responderCertHex = "308202e2308201caa003020102020101300d06092a864886f70d01010b05003019311730" + - "150603550403130e4f43535020526573706f6e646572301e170d31353031333031353530" + - "33335a170d3136303133303135353033335a3019311730150603550403130e4f43535020" + - "526573706f6e64657230820122300d06092a864886f70d01010105000382010f00308201" + - "0a0282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616e" + - "c5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbc" + - "bec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b72" + - "3350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b898" + - "9ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d" + - "285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e6" + - "55b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31" + - "a77dcf920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030" + - "130603551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d" + - "06092a864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab8612" + - "31c15fd5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d2288" + - "9064f4aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f3267" + - "09dce52c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156" + - "d67156e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff5" + - "9e2005d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf9" + - "66705de17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d9" + - "3a25439a94299a65a709756c7a3e568be049d5c38839" - -const errorResponseHex = "30030a0101" diff --git a/vendor/golang.org/x/crypto/openpgp/armor/armor.go b/vendor/golang.org/x/crypto/openpgp/armor/armor.go deleted file mode 100644 index 592d1864..00000000 --- a/vendor/golang.org/x/crypto/openpgp/armor/armor.go +++ /dev/null @@ -1,219 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package armor implements OpenPGP ASCII Armor, see RFC 4880. OpenPGP Armor is -// very similar to PEM except that it has an additional CRC checksum. -package armor // import "golang.org/x/crypto/openpgp/armor" - -import ( - "bufio" - "bytes" - "encoding/base64" - "golang.org/x/crypto/openpgp/errors" - "io" -) - -// A Block represents an OpenPGP armored structure. -// -// The encoded form is: -// -----BEGIN Type----- -// Headers -// -// base64-encoded Bytes -// '=' base64 encoded checksum -// -----END Type----- -// where Headers is a possibly empty sequence of Key: Value lines. -// -// Since the armored data can be very large, this package presents a streaming -// interface. -type Block struct { - Type string // The type, taken from the preamble (i.e. "PGP SIGNATURE"). - Header map[string]string // Optional headers. - Body io.Reader // A Reader from which the contents can be read - lReader lineReader - oReader openpgpReader -} - -var ArmorCorrupt error = errors.StructuralError("armor invalid") - -const crc24Init = 0xb704ce -const crc24Poly = 0x1864cfb -const crc24Mask = 0xffffff - -// crc24 calculates the OpenPGP checksum as specified in RFC 4880, section 6.1 -func crc24(crc uint32, d []byte) uint32 { - for _, b := range d { - crc ^= uint32(b) << 16 - for i := 0; i < 8; i++ { - crc <<= 1 - if crc&0x1000000 != 0 { - crc ^= crc24Poly - } - } - } - return crc -} - -var armorStart = []byte("-----BEGIN ") -var armorEnd = []byte("-----END ") -var armorEndOfLine = []byte("-----") - -// lineReader wraps a line based reader. It watches for the end of an armor -// block and records the expected CRC value. -type lineReader struct { - in *bufio.Reader - buf []byte - eof bool - crc uint32 -} - -func (l *lineReader) Read(p []byte) (n int, err error) { - if l.eof { - return 0, io.EOF - } - - if len(l.buf) > 0 { - n = copy(p, l.buf) - l.buf = l.buf[n:] - return - } - - line, isPrefix, err := l.in.ReadLine() - if err != nil { - return - } - if isPrefix { - return 0, ArmorCorrupt - } - - if len(line) == 5 && line[0] == '=' { - // This is the checksum line - var expectedBytes [3]byte - var m int - m, err = base64.StdEncoding.Decode(expectedBytes[0:], line[1:]) - if m != 3 || err != nil { - return - } - l.crc = uint32(expectedBytes[0])<<16 | - uint32(expectedBytes[1])<<8 | - uint32(expectedBytes[2]) - - line, _, err = l.in.ReadLine() - if err != nil && err != io.EOF { - return - } - if !bytes.HasPrefix(line, armorEnd) { - return 0, ArmorCorrupt - } - - l.eof = true - return 0, io.EOF - } - - if len(line) > 96 { - return 0, ArmorCorrupt - } - - n = copy(p, line) - bytesToSave := len(line) - n - if bytesToSave > 0 { - if cap(l.buf) < bytesToSave { - l.buf = make([]byte, 0, bytesToSave) - } - l.buf = l.buf[0:bytesToSave] - copy(l.buf, line[n:]) - } - - return -} - -// openpgpReader passes Read calls to the underlying base64 decoder, but keeps -// a running CRC of the resulting data and checks the CRC against the value -// found by the lineReader at EOF. -type openpgpReader struct { - lReader *lineReader - b64Reader io.Reader - currentCRC uint32 -} - -func (r *openpgpReader) Read(p []byte) (n int, err error) { - n, err = r.b64Reader.Read(p) - r.currentCRC = crc24(r.currentCRC, p[:n]) - - if err == io.EOF { - if r.lReader.crc != uint32(r.currentCRC&crc24Mask) { - return 0, ArmorCorrupt - } - } - - return -} - -// Decode reads a PGP armored block from the given Reader. It will ignore -// leading garbage. If it doesn't find a block, it will return nil, io.EOF. The -// given Reader is not usable after calling this function: an arbitrary amount -// of data may have been read past the end of the block. -func Decode(in io.Reader) (p *Block, err error) { - r := bufio.NewReaderSize(in, 100) - var line []byte - ignoreNext := false - -TryNextBlock: - p = nil - - // Skip leading garbage - for { - ignoreThis := ignoreNext - line, ignoreNext, err = r.ReadLine() - if err != nil { - return - } - if ignoreNext || ignoreThis { - continue - } - line = bytes.TrimSpace(line) - if len(line) > len(armorStart)+len(armorEndOfLine) && bytes.HasPrefix(line, armorStart) { - break - } - } - - p = new(Block) - p.Type = string(line[len(armorStart) : len(line)-len(armorEndOfLine)]) - p.Header = make(map[string]string) - nextIsContinuation := false - var lastKey string - - // Read headers - for { - isContinuation := nextIsContinuation - line, nextIsContinuation, err = r.ReadLine() - if err != nil { - p = nil - return - } - if isContinuation { - p.Header[lastKey] += string(line) - continue - } - line = bytes.TrimSpace(line) - if len(line) == 0 { - break - } - - i := bytes.Index(line, []byte(": ")) - if i == -1 { - goto TryNextBlock - } - lastKey = string(line[:i]) - p.Header[lastKey] = string(line[i+2:]) - } - - p.lReader.in = r - p.oReader.currentCRC = crc24Init - p.oReader.lReader = &p.lReader - p.oReader.b64Reader = base64.NewDecoder(base64.StdEncoding, &p.lReader) - p.Body = &p.oReader - - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/armor/armor_test.go b/vendor/golang.org/x/crypto/openpgp/armor/armor_test.go deleted file mode 100644 index 9334e94e..00000000 --- a/vendor/golang.org/x/crypto/openpgp/armor/armor_test.go +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package armor - -import ( - "bytes" - "hash/adler32" - "io/ioutil" - "testing" -) - -func TestDecodeEncode(t *testing.T) { - buf := bytes.NewBuffer([]byte(armorExample1)) - result, err := Decode(buf) - if err != nil { - t.Error(err) - } - expectedType := "PGP SIGNATURE" - if result.Type != expectedType { - t.Errorf("result.Type: got:%s want:%s", result.Type, expectedType) - } - if len(result.Header) != 1 { - t.Errorf("len(result.Header): got:%d want:1", len(result.Header)) - } - v, ok := result.Header["Version"] - if !ok || v != "GnuPG v1.4.10 (GNU/Linux)" { - t.Errorf("result.Header: got:%#v", result.Header) - } - - contents, err := ioutil.ReadAll(result.Body) - if err != nil { - t.Error(err) - } - - if adler32.Checksum(contents) != 0x27b144be { - t.Errorf("contents: got: %x", contents) - } - - buf = bytes.NewBuffer(nil) - w, err := Encode(buf, result.Type, result.Header) - if err != nil { - t.Error(err) - } - _, err = w.Write(contents) - if err != nil { - t.Error(err) - } - w.Close() - - if !bytes.Equal(buf.Bytes(), []byte(armorExample1)) { - t.Errorf("got: %s\nwant: %s", string(buf.Bytes()), armorExample1) - } -} - -func TestLongHeader(t *testing.T) { - buf := bytes.NewBuffer([]byte(armorLongLine)) - result, err := Decode(buf) - if err != nil { - t.Error(err) - return - } - value, ok := result.Header["Version"] - if !ok { - t.Errorf("missing Version header") - } - if value != longValueExpected { - t.Errorf("got: %s want: %s", value, longValueExpected) - } -} - -const armorExample1 = `-----BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.10 (GNU/Linux) - -iJwEAAECAAYFAk1Fv/0ACgkQo01+GMIMMbsYTwQAiAw+QAaNfY6WBdplZ/uMAccm -4g+81QPmTSGHnetSb6WBiY13kVzK4HQiZH8JSkmmroMLuGeJwsRTEL4wbjRyUKEt -p1xwUZDECs234F1xiG5enc5SGlRtP7foLBz9lOsjx+LEcA4sTl5/2eZR9zyFZqWW -TxRjs+fJCIFuo71xb1g= -=/teI ------END PGP SIGNATURE-----` - -const armorLongLine = `-----BEGIN PGP SIGNATURE----- -Version: 0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz - -iQEcBAABAgAGBQJMtFESAAoJEKsQXJGvOPsVj40H/1WW6jaMXv4BW+1ueDSMDwM8 -kx1fLOXbVM5/Kn5LStZNt1jWWnpxdz7eq3uiqeCQjmqUoRde3YbB2EMnnwRbAhpp -cacnAvy9ZQ78OTxUdNW1mhX5bS6q1MTEJnl+DcyigD70HG/yNNQD7sOPMdYQw0TA -byQBwmLwmTsuZsrYqB68QyLHI+DUugn+kX6Hd2WDB62DKa2suoIUIHQQCd/ofwB3 -WfCYInXQKKOSxu2YOg2Eb4kLNhSMc1i9uKUWAH+sdgJh7NBgdoE4MaNtBFkHXRvv -okWuf3+xA9ksp1npSY/mDvgHijmjvtpRDe6iUeqfCn8N9u9CBg8geANgaG8+QA4= -=wfQG ------END PGP SIGNATURE-----` - -const longValueExpected = "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz" diff --git a/vendor/golang.org/x/crypto/openpgp/armor/encode.go b/vendor/golang.org/x/crypto/openpgp/armor/encode.go deleted file mode 100644 index 6f07582c..00000000 --- a/vendor/golang.org/x/crypto/openpgp/armor/encode.go +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package armor - -import ( - "encoding/base64" - "io" -) - -var armorHeaderSep = []byte(": ") -var blockEnd = []byte("\n=") -var newline = []byte("\n") -var armorEndOfLineOut = []byte("-----\n") - -// writeSlices writes its arguments to the given Writer. -func writeSlices(out io.Writer, slices ...[]byte) (err error) { - for _, s := range slices { - _, err = out.Write(s) - if err != nil { - return err - } - } - return -} - -// lineBreaker breaks data across several lines, all of the same byte length -// (except possibly the last). Lines are broken with a single '\n'. -type lineBreaker struct { - lineLength int - line []byte - used int - out io.Writer - haveWritten bool -} - -func newLineBreaker(out io.Writer, lineLength int) *lineBreaker { - return &lineBreaker{ - lineLength: lineLength, - line: make([]byte, lineLength), - used: 0, - out: out, - } -} - -func (l *lineBreaker) Write(b []byte) (n int, err error) { - n = len(b) - - if n == 0 { - return - } - - if l.used == 0 && l.haveWritten { - _, err = l.out.Write([]byte{'\n'}) - if err != nil { - return - } - } - - if l.used+len(b) < l.lineLength { - l.used += copy(l.line[l.used:], b) - return - } - - l.haveWritten = true - _, err = l.out.Write(l.line[0:l.used]) - if err != nil { - return - } - excess := l.lineLength - l.used - l.used = 0 - - _, err = l.out.Write(b[0:excess]) - if err != nil { - return - } - - _, err = l.Write(b[excess:]) - return -} - -func (l *lineBreaker) Close() (err error) { - if l.used > 0 { - _, err = l.out.Write(l.line[0:l.used]) - if err != nil { - return - } - } - - return -} - -// encoding keeps track of a running CRC24 over the data which has been written -// to it and outputs a OpenPGP checksum when closed, followed by an armor -// trailer. -// -// It's built into a stack of io.Writers: -// encoding -> base64 encoder -> lineBreaker -> out -type encoding struct { - out io.Writer - breaker *lineBreaker - b64 io.WriteCloser - crc uint32 - blockType []byte -} - -func (e *encoding) Write(data []byte) (n int, err error) { - e.crc = crc24(e.crc, data) - return e.b64.Write(data) -} - -func (e *encoding) Close() (err error) { - err = e.b64.Close() - if err != nil { - return - } - e.breaker.Close() - - var checksumBytes [3]byte - checksumBytes[0] = byte(e.crc >> 16) - checksumBytes[1] = byte(e.crc >> 8) - checksumBytes[2] = byte(e.crc) - - var b64ChecksumBytes [4]byte - base64.StdEncoding.Encode(b64ChecksumBytes[:], checksumBytes[:]) - - return writeSlices(e.out, blockEnd, b64ChecksumBytes[:], newline, armorEnd, e.blockType, armorEndOfLine) -} - -// Encode returns a WriteCloser which will encode the data written to it in -// OpenPGP armor. -func Encode(out io.Writer, blockType string, headers map[string]string) (w io.WriteCloser, err error) { - bType := []byte(blockType) - err = writeSlices(out, armorStart, bType, armorEndOfLineOut) - if err != nil { - return - } - - for k, v := range headers { - err = writeSlices(out, []byte(k), armorHeaderSep, []byte(v), newline) - if err != nil { - return - } - } - - _, err = out.Write(newline) - if err != nil { - return - } - - e := &encoding{ - out: out, - breaker: newLineBreaker(out, 64), - crc: crc24Init, - blockType: bType, - } - e.b64 = base64.NewEncoder(base64.StdEncoding, e.breaker) - return e, nil -} diff --git a/vendor/golang.org/x/crypto/openpgp/canonical_text.go b/vendor/golang.org/x/crypto/openpgp/canonical_text.go deleted file mode 100644 index e601e389..00000000 --- a/vendor/golang.org/x/crypto/openpgp/canonical_text.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package openpgp - -import "hash" - -// NewCanonicalTextHash reformats text written to it into the canonical -// form and then applies the hash h. See RFC 4880, section 5.2.1. -func NewCanonicalTextHash(h hash.Hash) hash.Hash { - return &canonicalTextHash{h, 0} -} - -type canonicalTextHash struct { - h hash.Hash - s int -} - -var newline = []byte{'\r', '\n'} - -func (cth *canonicalTextHash) Write(buf []byte) (int, error) { - start := 0 - - for i, c := range buf { - switch cth.s { - case 0: - if c == '\r' { - cth.s = 1 - } else if c == '\n' { - cth.h.Write(buf[start:i]) - cth.h.Write(newline) - start = i + 1 - } - case 1: - cth.s = 0 - } - } - - cth.h.Write(buf[start:]) - return len(buf), nil -} - -func (cth *canonicalTextHash) Sum(in []byte) []byte { - return cth.h.Sum(in) -} - -func (cth *canonicalTextHash) Reset() { - cth.h.Reset() - cth.s = 0 -} - -func (cth *canonicalTextHash) Size() int { - return cth.h.Size() -} - -func (cth *canonicalTextHash) BlockSize() int { - return cth.h.BlockSize() -} diff --git a/vendor/golang.org/x/crypto/openpgp/canonical_text_test.go b/vendor/golang.org/x/crypto/openpgp/canonical_text_test.go deleted file mode 100644 index 8f3ba2a8..00000000 --- a/vendor/golang.org/x/crypto/openpgp/canonical_text_test.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package openpgp - -import ( - "bytes" - "testing" -) - -type recordingHash struct { - buf *bytes.Buffer -} - -func (r recordingHash) Write(b []byte) (n int, err error) { - return r.buf.Write(b) -} - -func (r recordingHash) Sum(in []byte) []byte { - return append(in, r.buf.Bytes()...) -} - -func (r recordingHash) Reset() { - panic("shouldn't be called") -} - -func (r recordingHash) Size() int { - panic("shouldn't be called") -} - -func (r recordingHash) BlockSize() int { - panic("shouldn't be called") -} - -func testCanonicalText(t *testing.T, input, expected string) { - r := recordingHash{bytes.NewBuffer(nil)} - c := NewCanonicalTextHash(r) - c.Write([]byte(input)) - result := c.Sum(nil) - if expected != string(result) { - t.Errorf("input: %x got: %x want: %x", input, result, expected) - } -} - -func TestCanonicalText(t *testing.T) { - testCanonicalText(t, "foo\n", "foo\r\n") - testCanonicalText(t, "foo", "foo") - testCanonicalText(t, "foo\r\n", "foo\r\n") - testCanonicalText(t, "foo\r\nbar", "foo\r\nbar") - testCanonicalText(t, "foo\r\nbar\n\n", "foo\r\nbar\r\n\r\n") -} diff --git a/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign.go b/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign.go deleted file mode 100644 index def4caba..00000000 --- a/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign.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 clearsign generates and processes OpenPGP, clear-signed data. See -// RFC 4880, section 7. -// -// Clearsigned messages are cryptographically signed, but the contents of the -// message are kept in plaintext so that it can be read without special tools. -package clearsign // import "golang.org/x/crypto/openpgp/clearsign" - -import ( - "bufio" - "bytes" - "crypto" - "hash" - "io" - "net/textproto" - "strconv" - - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/packet" -) - -// A Block represents a clearsigned message. A signature on a Block can -// be checked by passing Bytes into openpgp.CheckDetachedSignature. -type Block struct { - Headers textproto.MIMEHeader // Optional message headers - Plaintext []byte // The original message text - Bytes []byte // The signed message - ArmoredSignature *armor.Block // The signature block -} - -// start is the marker which denotes the beginning of a clearsigned message. -var start = []byte("\n-----BEGIN PGP SIGNED MESSAGE-----") - -// dashEscape is prefixed to any lines that begin with a hyphen so that they -// can't be confused with endText. -var dashEscape = []byte("- ") - -// endText is a marker which denotes the end of the message and the start of -// an armored signature. -var endText = []byte("-----BEGIN PGP SIGNATURE-----") - -// end is a marker which denotes the end of the armored signature. -var end = []byte("\n-----END PGP SIGNATURE-----") - -var crlf = []byte("\r\n") -var lf = byte('\n') - -// getLine returns the first \r\n or \n delineated line from the given byte -// array. The line does not include the \r\n or \n. The remainder of the byte -// array (also not including the new line bytes) is also returned and this will -// always be smaller than the original argument. -func getLine(data []byte) (line, rest []byte) { - i := bytes.Index(data, []byte{'\n'}) - var j int - if i < 0 { - i = len(data) - j = i - } else { - j = i + 1 - if i > 0 && data[i-1] == '\r' { - i-- - } - } - return data[0:i], data[j:] -} - -// Decode finds the first clearsigned message in data and returns it, as well -// as the suffix of data which remains after the message. -func Decode(data []byte) (b *Block, rest []byte) { - // start begins with a newline. However, at the very beginning of - // the byte array, we'll accept the start string without it. - rest = data - if bytes.HasPrefix(data, start[1:]) { - rest = rest[len(start)-1:] - } else if i := bytes.Index(data, start); i >= 0 { - rest = rest[i+len(start):] - } else { - return nil, data - } - - // Consume the start line. - _, rest = getLine(rest) - - var line []byte - b = &Block{ - Headers: make(textproto.MIMEHeader), - } - - // Next come a series of header lines. - for { - // This loop terminates because getLine's second result is - // always smaller than its argument. - if len(rest) == 0 { - return nil, data - } - // An empty line marks the end of the headers. - if line, rest = getLine(rest); len(line) == 0 { - break - } - - i := bytes.Index(line, []byte{':'}) - if i == -1 { - return nil, data - } - - key, val := line[0:i], line[i+1:] - key = bytes.TrimSpace(key) - val = bytes.TrimSpace(val) - b.Headers.Add(string(key), string(val)) - } - - firstLine := true - for { - start := rest - - line, rest = getLine(rest) - if len(line) == 0 && len(rest) == 0 { - // No armored data was found, so this isn't a complete message. - return nil, data - } - if bytes.Equal(line, endText) { - // Back up to the start of the line because armor expects to see the - // header line. - rest = start - break - } - - // The final CRLF isn't included in the hash so we don't write it until - // we've seen the next line. - if firstLine { - firstLine = false - } else { - b.Bytes = append(b.Bytes, crlf...) - } - - if bytes.HasPrefix(line, dashEscape) { - line = line[2:] - } - line = bytes.TrimRight(line, " \t") - b.Bytes = append(b.Bytes, line...) - - b.Plaintext = append(b.Plaintext, line...) - b.Plaintext = append(b.Plaintext, lf) - } - - // We want to find the extent of the armored data (including any newlines at - // the end). - i := bytes.Index(rest, end) - if i == -1 { - return nil, data - } - i += len(end) - for i < len(rest) && (rest[i] == '\r' || rest[i] == '\n') { - i++ - } - armored := rest[:i] - rest = rest[i:] - - var err error - b.ArmoredSignature, err = armor.Decode(bytes.NewBuffer(armored)) - if err != nil { - return nil, data - } - - return b, rest -} - -// A dashEscaper is an io.WriteCloser which processes the body of a clear-signed -// message. The clear-signed message is written to buffered and a hash, suitable -// for signing, is maintained in h. -// -// When closed, an armored signature is created and written to complete the -// message. -type dashEscaper struct { - buffered *bufio.Writer - h hash.Hash - hashType crypto.Hash - - atBeginningOfLine bool - isFirstLine bool - - whitespace []byte - byteBuf []byte // a one byte buffer to save allocations - - privateKey *packet.PrivateKey - config *packet.Config -} - -func (d *dashEscaper) Write(data []byte) (n int, err error) { - for _, b := range data { - d.byteBuf[0] = b - - if d.atBeginningOfLine { - // The final CRLF isn't included in the hash so we have to wait - // until this point (the start of the next line) before writing it. - if !d.isFirstLine { - d.h.Write(crlf) - } - d.isFirstLine = false - } - - // Any whitespace at the end of the line has to be removed so we - // buffer it until we find out whether there's more on this line. - if b == ' ' || b == '\t' || b == '\r' { - d.whitespace = append(d.whitespace, b) - d.atBeginningOfLine = false - continue - } - - if d.atBeginningOfLine { - // At the beginning of a line, hyphens have to be escaped. - if b == '-' { - // The signature isn't calculated over the dash-escaped text so - // the escape is only written to buffered. - if _, err = d.buffered.Write(dashEscape); err != nil { - return - } - d.h.Write(d.byteBuf) - d.atBeginningOfLine = false - } else if b == '\n' { - // Nothing to do because we delay writing CRLF to the hash. - } else { - d.h.Write(d.byteBuf) - d.atBeginningOfLine = false - } - if err = d.buffered.WriteByte(b); err != nil { - return - } - } else { - if b == '\n' { - // We got a raw \n. Drop any trailing whitespace and write a - // CRLF. - d.whitespace = d.whitespace[:0] - // We delay writing CRLF to the hash until the start of the - // next line. - if err = d.buffered.WriteByte(b); err != nil { - return - } - d.atBeginningOfLine = true - } else { - // Any buffered whitespace wasn't at the end of the line so - // we need to write it out. - if len(d.whitespace) > 0 { - d.h.Write(d.whitespace) - if _, err = d.buffered.Write(d.whitespace); err != nil { - return - } - d.whitespace = d.whitespace[:0] - } - d.h.Write(d.byteBuf) - if err = d.buffered.WriteByte(b); err != nil { - return - } - } - } - } - - n = len(data) - return -} - -func (d *dashEscaper) Close() (err error) { - if !d.atBeginningOfLine { - if err = d.buffered.WriteByte(lf); err != nil { - return - } - } - sig := new(packet.Signature) - sig.SigType = packet.SigTypeText - sig.PubKeyAlgo = d.privateKey.PubKeyAlgo - sig.Hash = d.hashType - sig.CreationTime = d.config.Now() - sig.IssuerKeyId = &d.privateKey.KeyId - - if err = sig.Sign(d.h, d.privateKey, d.config); err != nil { - return - } - - out, err := armor.Encode(d.buffered, "PGP SIGNATURE", nil) - if err != nil { - return - } - - if err = sig.Serialize(out); err != nil { - return - } - if err = out.Close(); err != nil { - return - } - if err = d.buffered.Flush(); err != nil { - return - } - return -} - -// Encode returns a WriteCloser which will clear-sign a message with privateKey -// and write it to w. If config is nil, sensible defaults are used. -func Encode(w io.Writer, privateKey *packet.PrivateKey, config *packet.Config) (plaintext io.WriteCloser, err error) { - if privateKey.Encrypted { - return nil, errors.InvalidArgumentError("signing key is encrypted") - } - - hashType := config.Hash() - name := nameOfHash(hashType) - if len(name) == 0 { - return nil, errors.UnsupportedError("unknown hash type: " + strconv.Itoa(int(hashType))) - } - - if !hashType.Available() { - return nil, errors.UnsupportedError("unsupported hash type: " + strconv.Itoa(int(hashType))) - } - h := hashType.New() - - buffered := bufio.NewWriter(w) - // start has a \n at the beginning that we don't want here. - if _, err = buffered.Write(start[1:]); err != nil { - return - } - if err = buffered.WriteByte(lf); err != nil { - return - } - if _, err = buffered.WriteString("Hash: "); err != nil { - return - } - if _, err = buffered.WriteString(name); err != nil { - return - } - if err = buffered.WriteByte(lf); err != nil { - return - } - if err = buffered.WriteByte(lf); err != nil { - return - } - - plaintext = &dashEscaper{ - buffered: buffered, - h: h, - hashType: hashType, - - atBeginningOfLine: true, - isFirstLine: true, - - byteBuf: make([]byte, 1), - - privateKey: privateKey, - config: config, - } - - return -} - -// nameOfHash returns the OpenPGP name for the given hash, or the empty string -// if the name isn't known. See RFC 4880, section 9.4. -func nameOfHash(h crypto.Hash) string { - switch h { - case crypto.MD5: - return "MD5" - case crypto.SHA1: - return "SHA1" - case crypto.RIPEMD160: - return "RIPEMD160" - case crypto.SHA224: - return "SHA224" - case crypto.SHA256: - return "SHA256" - case crypto.SHA384: - return "SHA384" - case crypto.SHA512: - return "SHA512" - } - return "" -} diff --git a/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign_test.go b/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign_test.go deleted file mode 100644 index 2c094807..00000000 --- a/vendor/golang.org/x/crypto/openpgp/clearsign/clearsign_test.go +++ /dev/null @@ -1,210 +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 clearsign - -import ( - "bytes" - "golang.org/x/crypto/openpgp" - "testing" -) - -func testParse(t *testing.T, input []byte, expected, expectedPlaintext string) { - b, rest := Decode(input) - if b == nil { - t.Fatal("failed to decode clearsign message") - } - if !bytes.Equal(rest, []byte("trailing")) { - t.Errorf("unexpected remaining bytes returned: %s", string(rest)) - } - if b.ArmoredSignature.Type != "PGP SIGNATURE" { - t.Errorf("bad armor type, got:%s, want:PGP SIGNATURE", b.ArmoredSignature.Type) - } - if !bytes.Equal(b.Bytes, []byte(expected)) { - t.Errorf("bad body, got:%x want:%x", b.Bytes, expected) - } - - if !bytes.Equal(b.Plaintext, []byte(expectedPlaintext)) { - t.Errorf("bad plaintext, got:%x want:%x", b.Plaintext, expectedPlaintext) - } - - keyring, err := openpgp.ReadArmoredKeyRing(bytes.NewBufferString(signingKey)) - if err != nil { - t.Errorf("failed to parse public key: %s", err) - } - - if _, err := openpgp.CheckDetachedSignature(keyring, bytes.NewBuffer(b.Bytes), b.ArmoredSignature.Body); err != nil { - t.Errorf("failed to check signature: %s", err) - } -} - -func TestParse(t *testing.T) { - testParse(t, clearsignInput, "Hello world\r\nline 2", "Hello world\nline 2\n") - testParse(t, clearsignInput2, "\r\n\r\n(This message has a couple of blank lines at the start and end.)\r\n\r\n", "\n\n(This message has a couple of blank lines at the start and end.)\n\n\n") -} - -func TestParseInvalid(t *testing.T) { - if b, _ := Decode(clearsignInput3); b != nil { - t.Fatal("decoded a bad clearsigned message without any error") - } -} - -func TestParseWithNoNewlineAtEnd(t *testing.T) { - input := clearsignInput - input = input[:len(input)-len("trailing")-1] - b, rest := Decode(input) - if b == nil { - t.Fatal("failed to decode clearsign message") - } - if len(rest) > 0 { - t.Errorf("unexpected remaining bytes returned: %s", string(rest)) - } -} - -var signingTests = []struct { - in, signed, plaintext string -}{ - {"", "", ""}, - {"a", "a", "a\n"}, - {"a\n", "a", "a\n"}, - {"-a\n", "-a", "-a\n"}, - {"--a\nb", "--a\r\nb", "--a\nb\n"}, - // leading whitespace - {" a\n", " a", " a\n"}, - {" a\n", " a", " a\n"}, - // trailing whitespace (should be stripped) - {"a \n", "a", "a\n"}, - {"a ", "a", "a\n"}, - // whitespace-only lines (should be stripped) - {" \n", "", "\n"}, - {" ", "", "\n"}, - {"a\n \n \nb\n", "a\r\n\r\n\r\nb", "a\n\n\nb\n"}, -} - -func TestSigning(t *testing.T) { - keyring, err := openpgp.ReadArmoredKeyRing(bytes.NewBufferString(signingKey)) - if err != nil { - t.Errorf("failed to parse public key: %s", err) - } - - for i, test := range signingTests { - var buf bytes.Buffer - - plaintext, err := Encode(&buf, keyring[0].PrivateKey, nil) - if err != nil { - t.Errorf("#%d: error from Encode: %s", i, err) - continue - } - if _, err := plaintext.Write([]byte(test.in)); err != nil { - t.Errorf("#%d: error from Write: %s", i, err) - continue - } - if err := plaintext.Close(); err != nil { - t.Fatalf("#%d: error from Close: %s", i, err) - continue - } - - b, _ := Decode(buf.Bytes()) - if b == nil { - t.Errorf("#%d: failed to decode clearsign message", i) - continue - } - if !bytes.Equal(b.Bytes, []byte(test.signed)) { - t.Errorf("#%d: bad result, got:%x, want:%x", i, b.Bytes, test.signed) - continue - } - if !bytes.Equal(b.Plaintext, []byte(test.plaintext)) { - t.Errorf("#%d: bad result, got:%x, want:%x", i, b.Plaintext, test.plaintext) - continue - } - - if _, err := openpgp.CheckDetachedSignature(keyring, bytes.NewBuffer(b.Bytes), b.ArmoredSignature.Body); err != nil { - t.Errorf("#%d: failed to check signature: %s", i, err) - } - } -} - -var clearsignInput = []byte(` -;lasjlkfdsa - ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -Hello world -line 2 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.10 (GNU/Linux) - -iJwEAQECAAYFAk8kMuEACgkQO9o98PRieSpMsAQAhmY/vwmNpflrPgmfWsYhk5O8 -pjnBUzZwqTDoDeINjZEoPDSpQAHGhjFjgaDx/Gj4fAl0dM4D0wuUEBb6QOrwflog -2A2k9kfSOMOtk0IH/H5VuFN1Mie9L/erYXjTQIptv9t9J7NoRBMU0QOOaFU0JaO9 -MyTpno24AjIAGb+mH1U= -=hIJ6 ------END PGP SIGNATURE----- -trailing`) - -var clearsignInput2 = []byte(` -asdlfkjasdlkfjsadf - ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA256 - - - -(This message has a couple of blank lines at the start and end.) - - ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.11 (GNU/Linux) - -iJwEAQEIAAYFAlPpSREACgkQO9o98PRieSpZTAP+M8QUoCt/7Rf3YbXPcdzIL32v -pt1I+cMNeopzfLy0u4ioEFi8s5VkwpL1AFmirvgViCwlf82inoRxzZRiW05JQ5LI -ESEzeCoy2LIdRCQ2hcrG8pIUPzUO4TqO5D/dMbdHwNH4h5nNmGJUAEG6FpURlPm+ -qZg6BaTvOxepqOxnhVU= -=e+C6 ------END PGP SIGNATURE----- - -trailing`) - -var clearsignInput3 = []byte(` ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA256 - -(This message was truncated.) -`) - -var signingKey = `-----BEGIN PGP PRIVATE KEY BLOCK----- -Version: GnuPG v1.4.10 (GNU/Linux) - -lQHYBE2rFNoBBADFwqWQIW/DSqcB4yCQqnAFTJ27qS5AnB46ccAdw3u4Greeu3Bp -idpoHdjULy7zSKlwR1EA873dO/k/e11Ml3dlAFUinWeejWaK2ugFP6JjiieSsrKn -vWNicdCS4HTWn0X4sjl0ZiAygw6GNhqEQ3cpLeL0g8E9hnYzJKQ0LWJa0QARAQAB -AAP/TB81EIo2VYNmTq0pK1ZXwUpxCrvAAIG3hwKjEzHcbQznsjNvPUihZ+NZQ6+X -0HCfPAdPkGDCLCb6NavcSW+iNnLTrdDnSI6+3BbIONqWWdRDYJhqZCkqmG6zqSfL -IdkJgCw94taUg5BWP/AAeQrhzjChvpMQTVKQL5mnuZbUCeMCAN5qrYMP2S9iKdnk -VANIFj7656ARKt/nf4CBzxcpHTyB8+d2CtPDKCmlJP6vL8t58Jmih+kHJMvC0dzn -gr5f5+sCAOOe5gt9e0am7AvQWhdbHVfJU0TQJx+m2OiCJAqGTB1nvtBLHdJnfdC9 -TnXXQ6ZXibqLyBies/xeY2sCKL5qtTMCAKnX9+9d/5yQxRyrQUHt1NYhaXZnJbHx -q4ytu0eWz+5i68IYUSK69jJ1NWPM0T6SkqpB3KCAIv68VFm9PxqG1KmhSrQIVGVz -dCBLZXmIuAQTAQIAIgUCTasU2gIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA -CgkQO9o98PRieSoLhgQAkLEZex02Qt7vGhZzMwuN0R22w3VwyYyjBx+fM3JFETy1 -ut4xcLJoJfIaF5ZS38UplgakHG0FQ+b49i8dMij0aZmDqGxrew1m4kBfjXw9B/v+ -eIqpODryb6cOSwyQFH0lQkXC040pjq9YqDsO5w0WYNXYKDnzRV0p4H1pweo2VDid -AdgETasU2gEEAN46UPeWRqKHvA99arOxee38fBt2CI08iiWyI8T3J6ivtFGixSqV -bRcPxYO/qLpVe5l84Nb3X71GfVXlc9hyv7CD6tcowL59hg1E/DC5ydI8K8iEpUmK -/UnHdIY5h8/kqgGxkY/T/hgp5fRQgW1ZoZxLajVlMRZ8W4tFtT0DeA+JABEBAAEA -A/0bE1jaaZKj6ndqcw86jd+QtD1SF+Cf21CWRNeLKnUds4FRRvclzTyUMuWPkUeX -TaNNsUOFqBsf6QQ2oHUBBK4VCHffHCW4ZEX2cd6umz7mpHW6XzN4DECEzOVksXtc -lUC1j4UB91DC/RNQqwX1IV2QLSwssVotPMPqhOi0ZLNY7wIA3n7DWKInxYZZ4K+6 -rQ+POsz6brEoRHwr8x6XlHenq1Oki855pSa1yXIARoTrSJkBtn5oI+f8AzrnN0BN -oyeQAwIA/7E++3HDi5aweWrViiul9cd3rcsS0dEnksPhvS0ozCJiHsq/6GFmy7J8 -QSHZPteedBnZyNp5jR+H7cIfVN3KgwH/Skq4PsuPhDq5TKK6i8Pc1WW8MA6DXTdU -nLkX7RGmMwjC0DBf7KWAlPjFaONAX3a8ndnz//fy1q7u2l9AZwrj1qa1iJ8EGAEC -AAkFAk2rFNoCGwwACgkQO9o98PRieSo2/QP/WTzr4ioINVsvN1akKuekmEMI3LAp -BfHwatufxxP1U+3Si/6YIk7kuPB9Hs+pRqCXzbvPRrI8NHZBmc8qIGthishdCYad -AHcVnXjtxrULkQFGbGvhKURLvS9WnzD/m1K2zzwxzkPTzT9/Yf06O6Mal5AdugPL -VrM0m72/jnpKo04= -=zNCn ------END PGP PRIVATE KEY BLOCK----- -` diff --git a/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal.go b/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal.go deleted file mode 100644 index 73f4fe37..00000000 --- a/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal.go +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package elgamal implements ElGamal encryption, suitable for OpenPGP, -// as specified in "A Public-Key Cryptosystem and a Signature Scheme Based on -// Discrete Logarithms," IEEE Transactions on Information Theory, v. IT-31, -// n. 4, 1985, pp. 469-472. -// -// This form of ElGamal embeds PKCS#1 v1.5 padding, which may make it -// unsuitable for other protocols. RSA should be used in preference in any -// case. -package elgamal // import "golang.org/x/crypto/openpgp/elgamal" - -import ( - "crypto/rand" - "crypto/subtle" - "errors" - "io" - "math/big" -) - -// PublicKey represents an ElGamal public key. -type PublicKey struct { - G, P, Y *big.Int -} - -// PrivateKey represents an ElGamal private key. -type PrivateKey struct { - PublicKey - X *big.Int -} - -// Encrypt encrypts the given message to the given public key. The result is a -// pair of integers. Errors can result from reading random, or because msg is -// too large to be encrypted to the public key. -func Encrypt(random io.Reader, pub *PublicKey, msg []byte) (c1, c2 *big.Int, err error) { - pLen := (pub.P.BitLen() + 7) / 8 - if len(msg) > pLen-11 { - err = errors.New("elgamal: message too long") - return - } - - // EM = 0x02 || PS || 0x00 || M - em := make([]byte, pLen-1) - em[0] = 2 - ps, mm := em[1:len(em)-len(msg)-1], em[len(em)-len(msg):] - err = nonZeroRandomBytes(ps, random) - if err != nil { - return - } - em[len(em)-len(msg)-1] = 0 - copy(mm, msg) - - m := new(big.Int).SetBytes(em) - - k, err := rand.Int(random, pub.P) - if err != nil { - return - } - - c1 = new(big.Int).Exp(pub.G, k, pub.P) - s := new(big.Int).Exp(pub.Y, k, pub.P) - c2 = s.Mul(s, m) - c2.Mod(c2, pub.P) - - return -} - -// Decrypt takes two integers, resulting from an ElGamal encryption, and -// returns the plaintext of the message. An error can result only if the -// ciphertext is invalid. Users should keep in mind that this is a padding -// oracle and thus, if exposed to an adaptive chosen ciphertext attack, can -// be used to break the cryptosystem. See ``Chosen Ciphertext Attacks -// Against Protocols Based on the RSA Encryption Standard PKCS #1'', Daniel -// Bleichenbacher, Advances in Cryptology (Crypto '98), -func Decrypt(priv *PrivateKey, c1, c2 *big.Int) (msg []byte, err error) { - s := new(big.Int).Exp(c1, priv.X, priv.P) - s.ModInverse(s, priv.P) - s.Mul(s, c2) - s.Mod(s, priv.P) - em := s.Bytes() - - firstByteIsTwo := subtle.ConstantTimeByteEq(em[0], 2) - - // The remainder of the plaintext must be a string of non-zero random - // octets, followed by a 0, followed by the message. - // lookingForIndex: 1 iff we are still looking for the zero. - // index: the offset of the first zero byte. - var lookingForIndex, index int - lookingForIndex = 1 - - for i := 1; i < len(em); i++ { - equals0 := subtle.ConstantTimeByteEq(em[i], 0) - index = subtle.ConstantTimeSelect(lookingForIndex&equals0, i, index) - lookingForIndex = subtle.ConstantTimeSelect(equals0, 0, lookingForIndex) - } - - if firstByteIsTwo != 1 || lookingForIndex != 0 || index < 9 { - return nil, errors.New("elgamal: decryption error") - } - return em[index+1:], nil -} - -// nonZeroRandomBytes fills the given slice with non-zero random octets. -func nonZeroRandomBytes(s []byte, rand io.Reader) (err error) { - _, err = io.ReadFull(rand, s) - if err != nil { - return - } - - for i := 0; i < len(s); i++ { - for s[i] == 0 { - _, err = io.ReadFull(rand, s[i:i+1]) - if err != nil { - return - } - } - } - - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal_test.go b/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal_test.go deleted file mode 100644 index c4f99f5c..00000000 --- a/vendor/golang.org/x/crypto/openpgp/elgamal/elgamal_test.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package elgamal - -import ( - "bytes" - "crypto/rand" - "math/big" - "testing" -) - -// This is the 1024-bit MODP group from RFC 5114, section 2.1: -const primeHex = "B10B8F96A080E01DDE92DE5EAE5D54EC52C99FBCFB06A3C69A6A9DCA52D23B616073E28675A23D189838EF1E2EE652C013ECB4AEA906112324975C3CD49B83BFACCBDD7D90C4BD7098488E9C219A73724EFFD6FAE5644738FAA31A4FF55BCCC0A151AF5F0DC8B4BD45BF37DF365C1A65E68CFDA76D4DA708DF1FB2BC2E4A4371" - -const generatorHex = "A4D1CBD5C3FD34126765A442EFB99905F8104DD258AC507FD6406CFF14266D31266FEA1E5C41564B777E690F5504F213160217B4B01B886A5E91547F9E2749F4D7FBD7D3B9A92EE1909D0D2263F80A76A6A24C087A091F531DBF0A0169B6A28AD662A4D18E73AFA32D779D5918D08BC8858F4DCEF97C2A24855E6EEB22B3B2E5" - -func fromHex(hex string) *big.Int { - n, ok := new(big.Int).SetString(hex, 16) - if !ok { - panic("failed to parse hex number") - } - return n -} - -func TestEncryptDecrypt(t *testing.T) { - priv := &PrivateKey{ - PublicKey: PublicKey{ - G: fromHex(generatorHex), - P: fromHex(primeHex), - }, - X: fromHex("42"), - } - priv.Y = new(big.Int).Exp(priv.G, priv.X, priv.P) - - message := []byte("hello world") - c1, c2, err := Encrypt(rand.Reader, &priv.PublicKey, message) - if err != nil { - t.Errorf("error encrypting: %s", err) - } - message2, err := Decrypt(priv, c1, c2) - if err != nil { - t.Errorf("error decrypting: %s", err) - } - if !bytes.Equal(message2, message) { - t.Errorf("decryption failed, got: %x, want: %x", message2, message) - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/errors/errors.go b/vendor/golang.org/x/crypto/openpgp/errors/errors.go deleted file mode 100644 index eb0550b2..00000000 --- a/vendor/golang.org/x/crypto/openpgp/errors/errors.go +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package errors contains common error types for the OpenPGP packages. -package errors // import "golang.org/x/crypto/openpgp/errors" - -import ( - "strconv" -) - -// A StructuralError is returned when OpenPGP data is found to be syntactically -// invalid. -type StructuralError string - -func (s StructuralError) Error() string { - return "openpgp: invalid data: " + string(s) -} - -// UnsupportedError indicates that, although the OpenPGP data is valid, it -// makes use of currently unimplemented features. -type UnsupportedError string - -func (s UnsupportedError) Error() string { - return "openpgp: unsupported feature: " + string(s) -} - -// InvalidArgumentError indicates that the caller is in error and passed an -// incorrect value. -type InvalidArgumentError string - -func (i InvalidArgumentError) Error() string { - return "openpgp: invalid argument: " + string(i) -} - -// SignatureError indicates that a syntactically valid signature failed to -// validate. -type SignatureError string - -func (b SignatureError) Error() string { - return "openpgp: invalid signature: " + string(b) -} - -type keyIncorrectError int - -func (ki keyIncorrectError) Error() string { - return "openpgp: incorrect key" -} - -var ErrKeyIncorrect error = keyIncorrectError(0) - -type unknownIssuerError int - -func (unknownIssuerError) Error() string { - return "openpgp: signature made by unknown entity" -} - -var ErrUnknownIssuer error = unknownIssuerError(0) - -type keyRevokedError int - -func (keyRevokedError) Error() string { - return "openpgp: signature made by revoked key" -} - -var ErrKeyRevoked error = keyRevokedError(0) - -type UnknownPacketTypeError uint8 - -func (upte UnknownPacketTypeError) Error() string { - return "openpgp: unknown packet type: " + strconv.Itoa(int(upte)) -} diff --git a/vendor/golang.org/x/crypto/openpgp/keys.go b/vendor/golang.org/x/crypto/openpgp/keys.go deleted file mode 100644 index fd582a89..00000000 --- a/vendor/golang.org/x/crypto/openpgp/keys.go +++ /dev/null @@ -1,641 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package openpgp - -import ( - "crypto/rsa" - "io" - "time" - - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/packet" -) - -// PublicKeyType is the armor type for a PGP public key. -var PublicKeyType = "PGP PUBLIC KEY BLOCK" - -// PrivateKeyType is the armor type for a PGP private key. -var PrivateKeyType = "PGP PRIVATE KEY BLOCK" - -// An Entity represents the components of an OpenPGP key: a primary public key -// (which must be a signing key), one or more identities claimed by that key, -// and zero or more subkeys, which may be encryption keys. -type Entity struct { - PrimaryKey *packet.PublicKey - PrivateKey *packet.PrivateKey - Identities map[string]*Identity // indexed by Identity.Name - Revocations []*packet.Signature - Subkeys []Subkey -} - -// An Identity represents an identity claimed by an Entity and zero or more -// assertions by other entities about that claim. -type Identity struct { - Name string // by convention, has the form "Full Name (comment) " - UserId *packet.UserId - SelfSignature *packet.Signature - Signatures []*packet.Signature -} - -// A Subkey is an additional public key in an Entity. Subkeys can be used for -// encryption. -type Subkey struct { - PublicKey *packet.PublicKey - PrivateKey *packet.PrivateKey - Sig *packet.Signature -} - -// A Key identifies a specific public key in an Entity. This is either the -// Entity's primary key or a subkey. -type Key struct { - Entity *Entity - PublicKey *packet.PublicKey - PrivateKey *packet.PrivateKey - SelfSignature *packet.Signature -} - -// A KeyRing provides access to public and private keys. -type KeyRing interface { - // KeysById returns the set of keys that have the given key id. - KeysById(id uint64) []Key - // KeysByIdAndUsage returns the set of keys with the given id - // that also meet the key usage given by requiredUsage. - // The requiredUsage is expressed as the bitwise-OR of - // packet.KeyFlag* values. - KeysByIdUsage(id uint64, requiredUsage byte) []Key - // DecryptionKeys returns all private keys that are valid for - // decryption. - DecryptionKeys() []Key -} - -// primaryIdentity returns the Identity marked as primary or the first identity -// if none are so marked. -func (e *Entity) primaryIdentity() *Identity { - var firstIdentity *Identity - for _, ident := range e.Identities { - if firstIdentity == nil { - firstIdentity = ident - } - if ident.SelfSignature.IsPrimaryId != nil && *ident.SelfSignature.IsPrimaryId { - return ident - } - } - return firstIdentity -} - -// encryptionKey returns the best candidate Key for encrypting a message to the -// given Entity. -func (e *Entity) encryptionKey(now time.Time) (Key, bool) { - candidateSubkey := -1 - - // Iterate the keys to find the newest key - var maxTime time.Time - for i, subkey := range e.Subkeys { - if subkey.Sig.FlagsValid && - subkey.Sig.FlagEncryptCommunications && - subkey.PublicKey.PubKeyAlgo.CanEncrypt() && - !subkey.Sig.KeyExpired(now) && - (maxTime.IsZero() || subkey.Sig.CreationTime.After(maxTime)) { - candidateSubkey = i - maxTime = subkey.Sig.CreationTime - } - } - - if candidateSubkey != -1 { - subkey := e.Subkeys[candidateSubkey] - return Key{e, subkey.PublicKey, subkey.PrivateKey, subkey.Sig}, true - } - - // If we don't have any candidate subkeys for encryption and - // the primary key doesn't have any usage metadata then we - // assume that the primary key is ok. Or, if the primary key is - // marked as ok to encrypt to, then we can obviously use it. - i := e.primaryIdentity() - if !i.SelfSignature.FlagsValid || i.SelfSignature.FlagEncryptCommunications && - e.PrimaryKey.PubKeyAlgo.CanEncrypt() && - !i.SelfSignature.KeyExpired(now) { - return Key{e, e.PrimaryKey, e.PrivateKey, i.SelfSignature}, true - } - - // This Entity appears to be signing only. - return Key{}, false -} - -// signingKey return the best candidate Key for signing a message with this -// Entity. -func (e *Entity) signingKey(now time.Time) (Key, bool) { - candidateSubkey := -1 - - for i, subkey := range e.Subkeys { - if subkey.Sig.FlagsValid && - subkey.Sig.FlagSign && - subkey.PublicKey.PubKeyAlgo.CanSign() && - !subkey.Sig.KeyExpired(now) { - candidateSubkey = i - break - } - } - - if candidateSubkey != -1 { - subkey := e.Subkeys[candidateSubkey] - return Key{e, subkey.PublicKey, subkey.PrivateKey, subkey.Sig}, true - } - - // If we have no candidate subkey then we assume that it's ok to sign - // with the primary key. - i := e.primaryIdentity() - if !i.SelfSignature.FlagsValid || i.SelfSignature.FlagSign && - !i.SelfSignature.KeyExpired(now) { - return Key{e, e.PrimaryKey, e.PrivateKey, i.SelfSignature}, true - } - - return Key{}, false -} - -// An EntityList contains one or more Entities. -type EntityList []*Entity - -// KeysById returns the set of keys that have the given key id. -func (el EntityList) KeysById(id uint64) (keys []Key) { - for _, e := range el { - if e.PrimaryKey.KeyId == id { - var selfSig *packet.Signature - for _, ident := range e.Identities { - if selfSig == nil { - selfSig = ident.SelfSignature - } else if ident.SelfSignature.IsPrimaryId != nil && *ident.SelfSignature.IsPrimaryId { - selfSig = ident.SelfSignature - break - } - } - keys = append(keys, Key{e, e.PrimaryKey, e.PrivateKey, selfSig}) - } - - for _, subKey := range e.Subkeys { - if subKey.PublicKey.KeyId == id { - keys = append(keys, Key{e, subKey.PublicKey, subKey.PrivateKey, subKey.Sig}) - } - } - } - return -} - -// KeysByIdAndUsage returns the set of keys with the given id that also meet -// the key usage given by requiredUsage. The requiredUsage is expressed as -// the bitwise-OR of packet.KeyFlag* values. -func (el EntityList) KeysByIdUsage(id uint64, requiredUsage byte) (keys []Key) { - for _, key := range el.KeysById(id) { - if len(key.Entity.Revocations) > 0 { - continue - } - - if key.SelfSignature.RevocationReason != nil { - continue - } - - if key.SelfSignature.FlagsValid && requiredUsage != 0 { - var usage byte - if key.SelfSignature.FlagCertify { - usage |= packet.KeyFlagCertify - } - if key.SelfSignature.FlagSign { - usage |= packet.KeyFlagSign - } - if key.SelfSignature.FlagEncryptCommunications { - usage |= packet.KeyFlagEncryptCommunications - } - if key.SelfSignature.FlagEncryptStorage { - usage |= packet.KeyFlagEncryptStorage - } - if usage&requiredUsage != requiredUsage { - continue - } - } - - keys = append(keys, key) - } - return -} - -// DecryptionKeys returns all private keys that are valid for decryption. -func (el EntityList) DecryptionKeys() (keys []Key) { - for _, e := range el { - for _, subKey := range e.Subkeys { - if subKey.PrivateKey != nil && (!subKey.Sig.FlagsValid || subKey.Sig.FlagEncryptStorage || subKey.Sig.FlagEncryptCommunications) { - keys = append(keys, Key{e, subKey.PublicKey, subKey.PrivateKey, subKey.Sig}) - } - } - } - return -} - -// ReadArmoredKeyRing reads one or more public/private keys from an armor keyring file. -func ReadArmoredKeyRing(r io.Reader) (EntityList, error) { - block, err := armor.Decode(r) - if err == io.EOF { - return nil, errors.InvalidArgumentError("no armored data found") - } - if err != nil { - return nil, err - } - if block.Type != PublicKeyType && block.Type != PrivateKeyType { - return nil, errors.InvalidArgumentError("expected public or private key block, got: " + block.Type) - } - - return ReadKeyRing(block.Body) -} - -// ReadKeyRing reads one or more public/private keys. Unsupported keys are -// ignored as long as at least a single valid key is found. -func ReadKeyRing(r io.Reader) (el EntityList, err error) { - packets := packet.NewReader(r) - var lastUnsupportedError error - - for { - var e *Entity - e, err = ReadEntity(packets) - if err != nil { - // TODO: warn about skipped unsupported/unreadable keys - if _, ok := err.(errors.UnsupportedError); ok { - lastUnsupportedError = err - err = readToNextPublicKey(packets) - } else if _, ok := err.(errors.StructuralError); ok { - // Skip unreadable, badly-formatted keys - lastUnsupportedError = err - err = readToNextPublicKey(packets) - } - if err == io.EOF { - err = nil - break - } - if err != nil { - el = nil - break - } - } else { - el = append(el, e) - } - } - - if len(el) == 0 && err == nil { - err = lastUnsupportedError - } - return -} - -// readToNextPublicKey reads packets until the start of the entity and leaves -// the first packet of the new entity in the Reader. -func readToNextPublicKey(packets *packet.Reader) (err error) { - var p packet.Packet - for { - p, err = packets.Next() - if err == io.EOF { - return - } else if err != nil { - if _, ok := err.(errors.UnsupportedError); ok { - err = nil - continue - } - return - } - - if pk, ok := p.(*packet.PublicKey); ok && !pk.IsSubkey { - packets.Unread(p) - return - } - } -} - -// ReadEntity reads an entity (public key, identities, subkeys etc) from the -// given Reader. -func ReadEntity(packets *packet.Reader) (*Entity, error) { - e := new(Entity) - e.Identities = make(map[string]*Identity) - - p, err := packets.Next() - if err != nil { - return nil, err - } - - var ok bool - if e.PrimaryKey, ok = p.(*packet.PublicKey); !ok { - if e.PrivateKey, ok = p.(*packet.PrivateKey); !ok { - packets.Unread(p) - return nil, errors.StructuralError("first packet was not a public/private key") - } - e.PrimaryKey = &e.PrivateKey.PublicKey - } - - if !e.PrimaryKey.PubKeyAlgo.CanSign() { - return nil, errors.StructuralError("primary key cannot be used for signatures") - } - - var current *Identity - var revocations []*packet.Signature -EachPacket: - for { - p, err := packets.Next() - if err == io.EOF { - break - } else if err != nil { - return nil, err - } - - switch pkt := p.(type) { - case *packet.UserId: - current = new(Identity) - current.Name = pkt.Id - current.UserId = pkt - e.Identities[pkt.Id] = current - - for { - p, err = packets.Next() - if err == io.EOF { - return nil, io.ErrUnexpectedEOF - } else if err != nil { - return nil, err - } - - sig, ok := p.(*packet.Signature) - if !ok { - return nil, errors.StructuralError("user ID packet not followed by self-signature") - } - - if (sig.SigType == packet.SigTypePositiveCert || sig.SigType == packet.SigTypeGenericCert) && sig.IssuerKeyId != nil && *sig.IssuerKeyId == e.PrimaryKey.KeyId { - if err = e.PrimaryKey.VerifyUserIdSignature(pkt.Id, e.PrimaryKey, sig); err != nil { - return nil, errors.StructuralError("user ID self-signature invalid: " + err.Error()) - } - current.SelfSignature = sig - break - } - current.Signatures = append(current.Signatures, sig) - } - case *packet.Signature: - if pkt.SigType == packet.SigTypeKeyRevocation { - revocations = append(revocations, pkt) - } else if pkt.SigType == packet.SigTypeDirectSignature { - // TODO: RFC4880 5.2.1 permits signatures - // directly on keys (eg. to bind additional - // revocation keys). - } else if current == nil { - return nil, errors.StructuralError("signature packet found before user id packet") - } else { - current.Signatures = append(current.Signatures, pkt) - } - case *packet.PrivateKey: - if pkt.IsSubkey == false { - packets.Unread(p) - break EachPacket - } - err = addSubkey(e, packets, &pkt.PublicKey, pkt) - if err != nil { - return nil, err - } - case *packet.PublicKey: - if pkt.IsSubkey == false { - packets.Unread(p) - break EachPacket - } - err = addSubkey(e, packets, pkt, nil) - if err != nil { - return nil, err - } - default: - // we ignore unknown packets - } - } - - if len(e.Identities) == 0 { - return nil, errors.StructuralError("entity without any identities") - } - - for _, revocation := range revocations { - err = e.PrimaryKey.VerifyRevocationSignature(revocation) - if err == nil { - e.Revocations = append(e.Revocations, revocation) - } else { - // TODO: RFC 4880 5.2.3.15 defines revocation keys. - return nil, errors.StructuralError("revocation signature signed by alternate key") - } - } - - return e, nil -} - -func addSubkey(e *Entity, packets *packet.Reader, pub *packet.PublicKey, priv *packet.PrivateKey) error { - var subKey Subkey - subKey.PublicKey = pub - subKey.PrivateKey = priv - p, err := packets.Next() - if err == io.EOF { - return io.ErrUnexpectedEOF - } - if err != nil { - return errors.StructuralError("subkey signature invalid: " + err.Error()) - } - var ok bool - subKey.Sig, ok = p.(*packet.Signature) - if !ok { - return errors.StructuralError("subkey packet not followed by signature") - } - if subKey.Sig.SigType != packet.SigTypeSubkeyBinding && subKey.Sig.SigType != packet.SigTypeSubkeyRevocation { - return errors.StructuralError("subkey signature with wrong type") - } - err = e.PrimaryKey.VerifyKeySignature(subKey.PublicKey, subKey.Sig) - if err != nil { - return errors.StructuralError("subkey signature invalid: " + err.Error()) - } - e.Subkeys = append(e.Subkeys, subKey) - return nil -} - -const defaultRSAKeyBits = 2048 - -// NewEntity returns an Entity that contains a fresh RSA/RSA keypair with a -// single identity composed of the given full name, comment and email, any of -// which may be empty but must not contain any of "()<>\x00". -// If config is nil, sensible defaults will be used. -func NewEntity(name, comment, email string, config *packet.Config) (*Entity, error) { - currentTime := config.Now() - - bits := defaultRSAKeyBits - if config != nil && config.RSABits != 0 { - bits = config.RSABits - } - - uid := packet.NewUserId(name, comment, email) - if uid == nil { - return nil, errors.InvalidArgumentError("user id field contained invalid characters") - } - signingPriv, err := rsa.GenerateKey(config.Random(), bits) - if err != nil { - return nil, err - } - encryptingPriv, err := rsa.GenerateKey(config.Random(), bits) - if err != nil { - return nil, err - } - - e := &Entity{ - PrimaryKey: packet.NewRSAPublicKey(currentTime, &signingPriv.PublicKey), - PrivateKey: packet.NewRSAPrivateKey(currentTime, signingPriv), - Identities: make(map[string]*Identity), - } - isPrimaryId := true - e.Identities[uid.Id] = &Identity{ - Name: uid.Id, - UserId: uid, - SelfSignature: &packet.Signature{ - CreationTime: currentTime, - SigType: packet.SigTypePositiveCert, - PubKeyAlgo: packet.PubKeyAlgoRSA, - Hash: config.Hash(), - IsPrimaryId: &isPrimaryId, - FlagsValid: true, - FlagSign: true, - FlagCertify: true, - IssuerKeyId: &e.PrimaryKey.KeyId, - }, - } - - // If the user passes in a DefaultHash via packet.Config, - // set the PreferredHash for the SelfSignature. - if config != nil && config.DefaultHash != 0 { - e.Identities[uid.Id].SelfSignature.PreferredHash = []uint8{hashToHashId(config.DefaultHash)} - } - - // Likewise for DefaultCipher. - if config != nil && config.DefaultCipher != 0 { - e.Identities[uid.Id].SelfSignature.PreferredSymmetric = []uint8{uint8(config.DefaultCipher)} - } - - e.Subkeys = make([]Subkey, 1) - e.Subkeys[0] = Subkey{ - PublicKey: packet.NewRSAPublicKey(currentTime, &encryptingPriv.PublicKey), - PrivateKey: packet.NewRSAPrivateKey(currentTime, encryptingPriv), - Sig: &packet.Signature{ - CreationTime: currentTime, - SigType: packet.SigTypeSubkeyBinding, - PubKeyAlgo: packet.PubKeyAlgoRSA, - Hash: config.Hash(), - FlagsValid: true, - FlagEncryptStorage: true, - FlagEncryptCommunications: true, - IssuerKeyId: &e.PrimaryKey.KeyId, - }, - } - e.Subkeys[0].PublicKey.IsSubkey = true - e.Subkeys[0].PrivateKey.IsSubkey = true - - return e, nil -} - -// SerializePrivate serializes an Entity, including private key material, to -// the given Writer. For now, it must only be used on an Entity returned from -// NewEntity. -// If config is nil, sensible defaults will be used. -func (e *Entity) SerializePrivate(w io.Writer, config *packet.Config) (err error) { - err = e.PrivateKey.Serialize(w) - if err != nil { - return - } - for _, ident := range e.Identities { - err = ident.UserId.Serialize(w) - if err != nil { - return - } - err = ident.SelfSignature.SignUserId(ident.UserId.Id, e.PrimaryKey, e.PrivateKey, config) - if err != nil { - return - } - err = ident.SelfSignature.Serialize(w) - if err != nil { - return - } - } - for _, subkey := range e.Subkeys { - err = subkey.PrivateKey.Serialize(w) - if err != nil { - return - } - err = subkey.Sig.SignKey(subkey.PublicKey, e.PrivateKey, config) - if err != nil { - return - } - err = subkey.Sig.Serialize(w) - if err != nil { - return - } - } - return nil -} - -// Serialize writes the public part of the given Entity to w. (No private -// key material will be output). -func (e *Entity) Serialize(w io.Writer) error { - err := e.PrimaryKey.Serialize(w) - if err != nil { - return err - } - for _, ident := range e.Identities { - err = ident.UserId.Serialize(w) - if err != nil { - return err - } - err = ident.SelfSignature.Serialize(w) - if err != nil { - return err - } - for _, sig := range ident.Signatures { - err = sig.Serialize(w) - if err != nil { - return err - } - } - } - for _, subkey := range e.Subkeys { - err = subkey.PublicKey.Serialize(w) - if err != nil { - return err - } - err = subkey.Sig.Serialize(w) - if err != nil { - return err - } - } - return nil -} - -// SignIdentity adds a signature to e, from signer, attesting that identity is -// associated with e. The provided identity must already be an element of -// e.Identities and the private key of signer must have been decrypted if -// necessary. -// If config is nil, sensible defaults will be used. -func (e *Entity) SignIdentity(identity string, signer *Entity, config *packet.Config) error { - if signer.PrivateKey == nil { - return errors.InvalidArgumentError("signing Entity must have a private key") - } - if signer.PrivateKey.Encrypted { - return errors.InvalidArgumentError("signing Entity's private key must be decrypted") - } - ident, ok := e.Identities[identity] - if !ok { - return errors.InvalidArgumentError("given identity string not found in Entity") - } - - sig := &packet.Signature{ - SigType: packet.SigTypeGenericCert, - PubKeyAlgo: signer.PrivateKey.PubKeyAlgo, - Hash: config.Hash(), - CreationTime: config.Now(), - IssuerKeyId: &signer.PrivateKey.KeyId, - } - if err := sig.SignUserId(identity, e.PrimaryKey, signer.PrivateKey, config); err != nil { - return err - } - ident.Signatures = append(ident.Signatures, sig) - return nil -} diff --git a/vendor/golang.org/x/crypto/openpgp/keys_test.go b/vendor/golang.org/x/crypto/openpgp/keys_test.go deleted file mode 100644 index 3a155063..00000000 --- a/vendor/golang.org/x/crypto/openpgp/keys_test.go +++ /dev/null @@ -1,469 +0,0 @@ -package openpgp - -import ( - "bytes" - "crypto" - "strings" - "testing" - "time" - - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/packet" -) - -func TestKeyExpiry(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(expiringKeyHex)) - if err != nil { - t.Fatal(err) - } - entity := kring[0] - - const timeFormat = "2006-01-02" - time1, _ := time.Parse(timeFormat, "2013-07-01") - - // The expiringKeyHex key is structured as: - // - // pub 1024R/5E237D8C created: 2013-07-01 expires: 2013-07-31 usage: SC - // sub 1024R/1ABB25A0 created: 2013-07-01 23:11:07 +0200 CEST expires: 2013-07-08 usage: E - // sub 1024R/96A672F5 created: 2013-07-01 23:11:23 +0200 CEST expires: 2013-07-31 usage: E - // - // So this should select the newest, non-expired encryption key. - key, _ := entity.encryptionKey(time1) - if id := key.PublicKey.KeyIdShortString(); id != "96A672F5" { - t.Errorf("Expected key 1ABB25A0 at time %s, but got key %s", time1.Format(timeFormat), id) - } - - // Once the first encryption subkey has expired, the second should be - // selected. - time2, _ := time.Parse(timeFormat, "2013-07-09") - key, _ = entity.encryptionKey(time2) - if id := key.PublicKey.KeyIdShortString(); id != "96A672F5" { - t.Errorf("Expected key 96A672F5 at time %s, but got key %s", time2.Format(timeFormat), id) - } - - // Once all the keys have expired, nothing should be returned. - time3, _ := time.Parse(timeFormat, "2013-08-01") - if key, ok := entity.encryptionKey(time3); ok { - t.Errorf("Expected no key at time %s, but got key %s", time3.Format(timeFormat), key.PublicKey.KeyIdShortString()) - } -} - -func TestMissingCrossSignature(t *testing.T) { - // This public key has a signing subkey, but the subkey does not - // contain a cross-signature. - keys, err := ReadArmoredKeyRing(bytes.NewBufferString(missingCrossSignatureKey)) - if len(keys) != 0 { - t.Errorf("Accepted key with missing cross signature") - } - if err == nil { - t.Fatal("Failed to detect error in keyring with missing cross signature") - } - structural, ok := err.(errors.StructuralError) - if !ok { - t.Fatalf("Unexpected class of error: %T. Wanted StructuralError", err) - } - const expectedMsg = "signing subkey is missing cross-signature" - if !strings.Contains(string(structural), expectedMsg) { - t.Fatalf("Unexpected error: %q. Expected it to contain %q", err, expectedMsg) - } -} - -func TestInvalidCrossSignature(t *testing.T) { - // This public key has a signing subkey, and the subkey has an - // embedded cross-signature. However, the cross-signature does - // not correctly validate over the primary and subkey. - keys, err := ReadArmoredKeyRing(bytes.NewBufferString(invalidCrossSignatureKey)) - if len(keys) != 0 { - t.Errorf("Accepted key with invalid cross signature") - } - if err == nil { - t.Fatal("Failed to detect error in keyring with an invalid cross signature") - } - structural, ok := err.(errors.StructuralError) - if !ok { - t.Fatalf("Unexpected class of error: %T. Wanted StructuralError", err) - } - const expectedMsg = "subkey signature invalid" - if !strings.Contains(string(structural), expectedMsg) { - t.Fatalf("Unexpected error: %q. Expected it to contain %q", err, expectedMsg) - } -} - -func TestGoodCrossSignature(t *testing.T) { - // This public key has a signing subkey, and the subkey has an - // embedded cross-signature which correctly validates over the - // primary and subkey. - keys, err := ReadArmoredKeyRing(bytes.NewBufferString(goodCrossSignatureKey)) - if err != nil { - t.Fatal(err) - } - if len(keys) != 1 { - t.Errorf("Failed to accept key with good cross signature, %d", len(keys)) - } - if len(keys[0].Subkeys) != 1 { - t.Errorf("Failed to accept good subkey, %d", len(keys[0].Subkeys)) - } -} - -// TestExternallyRevokableKey attempts to load and parse a key with a third party revocation permission. -func TestExternallyRevocableKey(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(subkeyUsageHex)) - if err != nil { - t.Fatal(err) - } - - // The 0xA42704B92866382A key can be revoked by 0xBE3893CB843D0FE70C - // according to this signature that appears within the key: - // :signature packet: algo 1, keyid A42704B92866382A - // version 4, created 1396409682, md5len 0, sigclass 0x1f - // digest algo 2, begin of digest a9 84 - // hashed subpkt 2 len 4 (sig created 2014-04-02) - // hashed subpkt 12 len 22 (revocation key: c=80 a=1 f=CE094AA433F7040BB2DDF0BE3893CB843D0FE70C) - // hashed subpkt 7 len 1 (not revocable) - // subpkt 16 len 8 (issuer key ID A42704B92866382A) - // data: [1024 bits] - - id := uint64(0xA42704B92866382A) - keys := kring.KeysById(id) - if len(keys) != 1 { - t.Errorf("Expected to find key id %X, but got %d matches", id, len(keys)) - } -} - -func TestKeyRevocation(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(revokedKeyHex)) - if err != nil { - t.Fatal(err) - } - - // revokedKeyHex contains these keys: - // pub 1024R/9A34F7C0 2014-03-25 [revoked: 2014-03-25] - // sub 1024R/1BA3CD60 2014-03-25 [revoked: 2014-03-25] - ids := []uint64{0xA401D9F09A34F7C0, 0x5CD3BE0A1BA3CD60} - - for _, id := range ids { - keys := kring.KeysById(id) - if len(keys) != 1 { - t.Errorf("Expected KeysById to find revoked key %X, but got %d matches", id, len(keys)) - } - keys = kring.KeysByIdUsage(id, 0) - if len(keys) != 0 { - t.Errorf("Expected KeysByIdUsage to filter out revoked key %X, but got %d matches", id, len(keys)) - } - } -} - -func TestSubkeyRevocation(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(revokedSubkeyHex)) - if err != nil { - t.Fatal(err) - } - - // revokedSubkeyHex contains these keys: - // pub 1024R/4EF7E4BECCDE97F0 2014-03-25 - // sub 1024R/D63636E2B96AE423 2014-03-25 - // sub 1024D/DBCE4EE19529437F 2014-03-25 - // sub 1024R/677815E371C2FD23 2014-03-25 [revoked: 2014-03-25] - validKeys := []uint64{0x4EF7E4BECCDE97F0, 0xD63636E2B96AE423, 0xDBCE4EE19529437F} - revokedKey := uint64(0x677815E371C2FD23) - - for _, id := range validKeys { - keys := kring.KeysById(id) - if len(keys) != 1 { - t.Errorf("Expected KeysById to find key %X, but got %d matches", id, len(keys)) - } - keys = kring.KeysByIdUsage(id, 0) - if len(keys) != 1 { - t.Errorf("Expected KeysByIdUsage to find key %X, but got %d matches", id, len(keys)) - } - } - - keys := kring.KeysById(revokedKey) - if len(keys) != 1 { - t.Errorf("Expected KeysById to find key %X, but got %d matches", revokedKey, len(keys)) - } - - keys = kring.KeysByIdUsage(revokedKey, 0) - if len(keys) != 0 { - t.Errorf("Expected KeysByIdUsage to filter out revoked key %X, but got %d matches", revokedKey, len(keys)) - } -} - -func TestKeyUsage(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(subkeyUsageHex)) - if err != nil { - t.Fatal(err) - } - - // subkeyUsageHex contains these keys: - // pub 1024R/2866382A created: 2014-04-01 expires: never usage: SC - // sub 1024R/936C9153 created: 2014-04-01 expires: never usage: E - // sub 1024R/64D5F5BB created: 2014-04-02 expires: never usage: E - // sub 1024D/BC0BA992 created: 2014-04-02 expires: never usage: S - certifiers := []uint64{0xA42704B92866382A} - signers := []uint64{0xA42704B92866382A, 0x42CE2C64BC0BA992} - encrypters := []uint64{0x09C0C7D9936C9153, 0xC104E98664D5F5BB} - - for _, id := range certifiers { - keys := kring.KeysByIdUsage(id, packet.KeyFlagCertify) - if len(keys) == 1 { - if keys[0].PublicKey.KeyId != id { - t.Errorf("Expected to find certifier key id %X, but got %X", id, keys[0].PublicKey.KeyId) - } - } else { - t.Errorf("Expected one match for certifier key id %X, but got %d matches", id, len(keys)) - } - } - - for _, id := range signers { - keys := kring.KeysByIdUsage(id, packet.KeyFlagSign) - if len(keys) == 1 { - if keys[0].PublicKey.KeyId != id { - t.Errorf("Expected to find signing key id %X, but got %X", id, keys[0].PublicKey.KeyId) - } - } else { - t.Errorf("Expected one match for signing key id %X, but got %d matches", id, len(keys)) - } - - // This keyring contains no encryption keys that are also good for signing. - keys = kring.KeysByIdUsage(id, packet.KeyFlagEncryptStorage|packet.KeyFlagEncryptCommunications) - if len(keys) != 0 { - t.Errorf("Unexpected match for encryption key id %X", id) - } - } - - for _, id := range encrypters { - keys := kring.KeysByIdUsage(id, packet.KeyFlagEncryptStorage|packet.KeyFlagEncryptCommunications) - if len(keys) == 1 { - if keys[0].PublicKey.KeyId != id { - t.Errorf("Expected to find encryption key id %X, but got %X", id, keys[0].PublicKey.KeyId) - } - } else { - t.Errorf("Expected one match for encryption key id %X, but got %d matches", id, len(keys)) - } - - // This keyring contains no encryption keys that are also good for signing. - keys = kring.KeysByIdUsage(id, packet.KeyFlagSign) - if len(keys) != 0 { - t.Errorf("Unexpected match for signing key id %X", id) - } - } -} - -func TestIdVerification(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(testKeys1And2PrivateHex)) - if err != nil { - t.Fatal(err) - } - if err := kring[1].PrivateKey.Decrypt([]byte("passphrase")); err != nil { - t.Fatal(err) - } - - const identity = "Test Key 1 (RSA)" - if err := kring[0].SignIdentity(identity, kring[1], nil); err != nil { - t.Fatal(err) - } - - ident, ok := kring[0].Identities[identity] - if !ok { - t.Fatal("identity missing from key after signing") - } - - checked := false - for _, sig := range ident.Signatures { - if sig.IssuerKeyId == nil || *sig.IssuerKeyId != kring[1].PrimaryKey.KeyId { - continue - } - - if err := kring[1].PrimaryKey.VerifyUserIdSignature(identity, kring[0].PrimaryKey, sig); err != nil { - t.Fatalf("error verifying new identity signature: %s", err) - } - checked = true - break - } - - if !checked { - t.Fatal("didn't find identity signature in Entity") - } -} - -func TestNewEntityWithPreferredHash(t *testing.T) { - c := &packet.Config{ - DefaultHash: crypto.SHA256, - } - entity, err := NewEntity("Golang Gopher", "Test Key", "no-reply@golang.com", c) - if err != nil { - t.Fatal(err) - } - - for _, identity := range entity.Identities { - if len(identity.SelfSignature.PreferredHash) == 0 { - t.Fatal("didn't find a preferred hash in self signature") - } - ph := hashToHashId(c.DefaultHash) - if identity.SelfSignature.PreferredHash[0] != ph { - t.Fatalf("Expected preferred hash to be %d, got %d", ph, identity.SelfSignature.PreferredHash[0]) - } - } -} - -func TestNewEntityWithoutPreferredHash(t *testing.T) { - entity, err := NewEntity("Golang Gopher", "Test Key", "no-reply@golang.com", nil) - if err != nil { - t.Fatal(err) - } - - for _, identity := range entity.Identities { - if len(identity.SelfSignature.PreferredHash) != 0 { - t.Fatalf("Expected preferred hash to be empty but got length %d", len(identity.SelfSignature.PreferredHash)) - } - } -} - -func TestNewEntityCorrectName(t *testing.T) { - entity, err := NewEntity("Golang Gopher", "Test Key", "no-reply@golang.com", nil) - if err != nil { - t.Fatal(err) - } - if len(entity.Identities) != 1 { - t.Fatalf("len(entity.Identities) = %d, want 1", len(entity.Identities)) - } - var got string - for _, i := range entity.Identities { - got = i.Name - } - want := "Golang Gopher (Test Key) " - if got != want { - t.Fatalf("Identity.Name = %q, want %q", got, want) - } -} - -func TestNewEntityWithPreferredSymmetric(t *testing.T) { - c := &packet.Config{ - DefaultCipher: packet.CipherAES256, - } - entity, err := NewEntity("Golang Gopher", "Test Key", "no-reply@golang.com", c) - if err != nil { - t.Fatal(err) - } - - for _, identity := range entity.Identities { - if len(identity.SelfSignature.PreferredSymmetric) == 0 { - t.Fatal("didn't find a preferred cipher in self signature") - } - if identity.SelfSignature.PreferredSymmetric[0] != uint8(c.DefaultCipher) { - t.Fatalf("Expected preferred cipher to be %d, got %d", uint8(c.DefaultCipher), identity.SelfSignature.PreferredSymmetric[0]) - } - } -} - -func TestNewEntityWithoutPreferredSymmetric(t *testing.T) { - entity, err := NewEntity("Golang Gopher", "Test Key", "no-reply@golang.com", nil) - if err != nil { - t.Fatal(err) - } - - for _, identity := range entity.Identities { - if len(identity.SelfSignature.PreferredSymmetric) != 0 { - t.Fatalf("Expected preferred cipher to be empty but got length %d", len(identity.SelfSignature.PreferredSymmetric)) - } - } -} - -const expiringKeyHex = "988d0451d1ec5d010400ba3385721f2dc3f4ab096b2ee867ab77213f0a27a8538441c35d2fa225b08798a1439a66a5150e6bdc3f40f5d28d588c712394c632b6299f77db8c0d48d37903fb72ebd794d61be6aa774688839e5fdecfe06b2684cc115d240c98c66cb1ef22ae84e3aa0c2b0c28665c1e7d4d044e7f270706193f5223c8d44e0d70b7b8da830011010001b40f4578706972792074657374206b657988be041301020028050251d1ec5d021b03050900278d00060b090807030206150802090a0b0416020301021e01021780000a091072589ad75e237d8c033503fd10506d72837834eb7f994117740723adc39227104b0d326a1161871c0b415d25b4aedef946ca77ea4c05af9c22b32cf98be86ab890111fced1ee3f75e87b7cc3c00dc63bbc85dfab91c0dc2ad9de2c4d13a34659333a85c6acc1a669c5e1d6cecb0cf1e56c10e72d855ae177ddc9e766f9b2dda57ccbb75f57156438bbdb4e42b88d0451d1ec5d0104009c64906559866c5cb61578f5846a94fcee142a489c9b41e67b12bb54cfe86eb9bc8566460f9a720cb00d6526fbccfd4f552071a8e3f7744b1882d01036d811ee5a3fb91a1c568055758f43ba5d2c6a9676b012f3a1a89e47bbf624f1ad571b208f3cc6224eb378f1645dd3d47584463f9eadeacfd1ce6f813064fbfdcc4b5a53001101000188a504180102000f021b0c050251d1f06b050900093e89000a091072589ad75e237d8c20e00400ab8310a41461425b37889c4da28129b5fae6084fafbc0a47dd1adc74a264c6e9c9cc125f40462ee1433072a58384daef88c961c390ed06426a81b464a53194c4e291ddd7e2e2ba3efced01537d713bd111f48437bde2363446200995e8e0d4e528dda377fd1e8f8ede9c8e2198b393bd86852ce7457a7e3daf74d510461a5b77b88d0451d1ece8010400b3a519f83ab0010307e83bca895170acce8964a044190a2b368892f7a244758d9fc193482648acb1fb9780d28cc22d171931f38bb40279389fc9bf2110876d4f3db4fcfb13f22f7083877fe56592b3b65251312c36f83ffcb6d313c6a17f197dd471f0712aad15a8537b435a92471ba2e5b0c72a6c72536c3b567c558d7b6051001101000188a504180102000f021b0c050251d1f07b050900279091000a091072589ad75e237d8ce69e03fe286026afacf7c97ee20673864d4459a2240b5655219950643c7dba0ac384b1d4359c67805b21d98211f7b09c2a0ccf6410c8c04d4ff4a51293725d8d6570d9d8bb0e10c07d22357caeb49626df99c180be02d77d1fe8ed25e7a54481237646083a9f89a11566cd20b9e995b1487c5f9e02aeb434f3a1897cd416dd0a87861838da3e9e" -const subkeyUsageHex = "988d04533a52bc010400d26af43085558f65b9e7dbc90cb9238015259aed5e954637adcfa2181548b2d0b60c65f1f42ec5081cbf1bc0a8aa4900acfb77070837c58f26012fbce297d70afe96e759ad63531f0037538e70dbf8e384569b9720d99d8eb39d8d0a2947233ed242436cb6ac7dfe74123354b3d0119b5c235d3dd9c9d6c004f8ffaf67ad8583001101000188b7041f010200210502533b8552170c8001ce094aa433f7040bb2ddf0be3893cb843d0fe70c020700000a0910a42704b92866382aa98404009d63d916a27543da4221c60087c33f1c44bec9998c5438018ed370cca4962876c748e94b73eb39c58eb698063f3fd6346d58dd2a11c0247934c4a9d71f24754f7468f96fb24c3e791dd2392b62f626148ad724189498cbf993db2df7c0cdc2d677c35da0f16cb16c9ce7c33b4de65a4a91b1d21a130ae9cc26067718910ef8e2b417556d627261203c756d627261407379642e65642e61753e88b80413010200220502533a52bc021b03060b090807030206150802090a0b0416020301021e01021780000a0910a42704b92866382a47840400c0c2bd04f5fca586de408b395b3c280a278259c93eaaa8b79a53b97003f8ed502a8a00446dd9947fb462677e4fcac0dac2f0701847d15130aadb6cd9e0705ea0cf5f92f129136c7be21a718d46c8e641eb7f044f2adae573e11ae423a0a9ca51324f03a8a2f34b91fa40c3cc764bee4dccadedb54c768ba0469b683ea53f1c29b88d04533a52bc01040099c92a5d6f8b744224da27bc2369127c35269b58bec179de6bbc038f749344222f85a31933224f26b70243c4e4b2d242f0c4777eaef7b5502f9dad6d8bf3aaeb471210674b74de2d7078af497d55f5cdad97c7bedfbc1b41e8065a97c9c3d344b21fc81d27723af8e374bc595da26ea242dccb6ae497be26eea57e563ed517e90011010001889f0418010200090502533a52bc021b0c000a0910a42704b92866382afa1403ff70284c2de8a043ff51d8d29772602fa98009b7861c540535f874f2c230af8caf5638151a636b21f8255003997ccd29747fdd06777bb24f9593bd7d98a3e887689bf902f999915fcc94625ae487e5d13e6616f89090ebc4fdc7eb5cad8943e4056995bb61c6af37f8043016876a958ec7ebf39c43d20d53b7f546cfa83e8d2604b88d04533b8283010400c0b529316dbdf58b4c54461e7e669dc11c09eb7f73819f178ccd4177b9182b91d138605fcf1e463262fabefa73f94a52b5e15d1904635541c7ea540f07050ce0fb51b73e6f88644cec86e91107c957a114f69554548a85295d2b70bd0b203992f76eb5d493d86d9eabcaa7ef3fc7db7e458438db3fcdb0ca1cc97c638439a9170011010001889f0418010200090502533b8283021b0c000a0910a42704b92866382adc6d0400cfff6258485a21675adb7a811c3e19ebca18851533f75a7ba317950b9997fda8d1a4c8c76505c08c04b6c2cc31dc704d33da36a21273f2b388a1a706f7c3378b66d887197a525936ed9a69acb57fe7f718133da85ec742001c5d1864e9c6c8ea1b94f1c3759cebfd93b18606066c063a63be86085b7e37bdbc65f9a915bf084bb901a204533b85cd110400aed3d2c52af2b38b5b67904b0ef73d6dd7aef86adb770e2b153cd22489654dcc91730892087bb9856ae2d9f7ed1eb48f214243fe86bfe87b349ebd7c30e630e49c07b21fdabf78b7a95c8b7f969e97e3d33f2e074c63552ba64a2ded7badc05ce0ea2be6d53485f6900c7860c7aa76560376ce963d7271b9b54638a4028b573f00a0d8854bfcdb04986141568046202192263b9b67350400aaa1049dbc7943141ef590a70dcb028d730371d92ea4863de715f7f0f16d168bd3dc266c2450457d46dcbbf0b071547e5fbee7700a820c3750b236335d8d5848adb3c0da010e998908dfd93d961480084f3aea20b247034f8988eccb5546efaa35a92d0451df3aaf1aee5aa36a4c4d462c760ecd9cebcabfbe1412b1f21450f203fd126687cd486496e971a87fd9e1a8a765fe654baa219a6871ab97768596ab05c26c1aeea8f1a2c72395a58dbc12ef9640d2b95784e974a4d2d5a9b17c25fedacfe551bda52602de8f6d2e48443f5dd1a2a2a8e6a5e70ecdb88cd6e766ad9745c7ee91d78cc55c3d06536b49c3fee6c3d0b6ff0fb2bf13a314f57c953b8f4d93bf88e70418010200090502533b85cd021b0200520910a42704b92866382a47200419110200060502533b85cd000a091042ce2c64bc0ba99214b2009e26b26852c8b13b10c35768e40e78fbbb48bd084100a0c79d9ea0844fa5853dd3c85ff3ecae6f2c9dd6c557aa04008bbbc964cd65b9b8299d4ebf31f41cc7264b8cf33a00e82c5af022331fac79efc9563a822497ba012953cefe2629f1242fcdcb911dbb2315985bab060bfd58261ace3c654bdbbe2e8ed27a46e836490145c86dc7bae15c011f7e1ffc33730109b9338cd9f483e7cef3d2f396aab5bd80efb6646d7e778270ee99d934d187dd98" -const revokedKeyHex = "988d045331ce82010400c4fdf7b40a5477f206e6ee278eaef888ca73bf9128a9eef9f2f1ddb8b7b71a4c07cfa241f028a04edb405e4d916c61d6beabc333813dc7b484d2b3c52ee233c6a79b1eea4e9cc51596ba9cd5ac5aeb9df62d86ea051055b79d03f8a4fa9f38386f5bd17529138f3325d46801514ea9047977e0829ed728e68636802796801be10011010001889f04200102000905025331d0e3021d03000a0910a401d9f09a34f7c042aa040086631196405b7e6af71026b88e98012eab44aa9849f6ef3fa930c7c9f23deaedba9db1538830f8652fb7648ec3fcade8dbcbf9eaf428e83c6cbcc272201bfe2fbb90d41963397a7c0637a1a9d9448ce695d9790db2dc95433ad7be19eb3de72dacf1d6db82c3644c13eae2a3d072b99bb341debba012c5ce4006a7d34a1f4b94b444526567205265766f6b657220283c52656727732022424d204261726973746122204b657920262530305c303e5c29203c72656740626d626172697374612e636f2e61753e88b704130102002205025331ce82021b03060b090807030206150802090a0b0416020301021e01021780000a0910a401d9f09a34f7c0019c03f75edfbeb6a73e7225ad3cc52724e2872e04260d7daf0d693c170d8c4b243b8767bc7785763533febc62ec2600c30603c433c095453ede59ff2fcabeb84ce32e0ed9d5cf15ffcbc816202b64370d4d77c1e9077d74e94a16fb4fa2e5bec23a56d7a73cf275f91691ae1801a976fcde09e981a2f6327ac27ea1fecf3185df0d56889c04100102000605025331cfb5000a0910fe9645554e8266b64b4303fc084075396674fb6f778d302ac07cef6bc0b5d07b66b2004c44aef711cbac79617ef06d836b4957522d8772dd94bf41a2f4ac8b1ee6d70c57503f837445a74765a076d07b829b8111fc2a918423ddb817ead7ca2a613ef0bfb9c6b3562aec6c3cf3c75ef3031d81d95f6563e4cdcc9960bcb386c5d757b104fcca5fe11fc709df884604101102000605025331cfe7000a09107b15a67f0b3ddc0317f6009e360beea58f29c1d963a22b962b80788c3fa6c84e009d148cfde6b351469b8eae91187eff07ad9d08fcaab88d045331ce820104009f25e20a42b904f3fa555530fe5c46737cf7bd076c35a2a0d22b11f7e0b61a69320b768f4a80fe13980ce380d1cfc4a0cd8fbe2d2e2ef85416668b77208baa65bf973fe8e500e78cc310d7c8705cdb34328bf80e24f0385fce5845c33bc7943cf6b11b02348a23da0bf6428e57c05135f2dc6bd7c1ce325d666d5a5fd2fd5e410011010001889f04180102000905025331ce82021b0c000a0910a401d9f09a34f7c0418003fe34feafcbeaef348a800a0d908a7a6809cc7304017d820f70f0474d5e23cb17e38b67dc6dca282c6ca00961f4ec9edf2738d0f087b1d81e4871ef08e1798010863afb4eac4c44a376cb343be929c5be66a78cfd4456ae9ec6a99d97f4e1c3ff3583351db2147a65c0acef5c003fb544ab3a2e2dc4d43646f58b811a6c3a369d1f" -const revokedSubkeyHex = "988d04533121f6010400aefc803a3e4bb1a61c86e8a86d2726c6a43e0079e9f2713f1fa017e9854c83877f4aced8e331d675c67ea83ddab80aacbfa0b9040bb12d96f5a3d6be09455e2a76546cbd21677537db941cab710216b6d24ec277ee0bd65b910f416737ed120f6b93a9d3b306245c8cfd8394606fdb462e5cf43c551438d2864506c63367fc890011010001b41d416c696365203c616c69636540626d626172697374612e636f2e61753e88bb041301020025021b03060b090807030206150802090a0b0416020301021e01021780050253312798021901000a09104ef7e4beccde97f015a803ff5448437780f63263b0df8442a995e7f76c221351a51edd06f2063d8166cf3157aada4923dfc44aa0f2a6a4da5cf83b7fe722ba8ab416c976e77c6b5682e7f1069026673bd0de56ba06fd5d7a9f177607f277d9b55ff940a638c3e68525c67517e2b3d976899b93ca267f705b3e5efad7d61220e96b618a4497eab8d04403d23f8846041011020006050253312910000a09107b15a67f0b3ddc03d96e009f50b6365d86c4be5d5e9d0ea42d5e56f5794c617700a0ab274e19c2827780016d23417ce89e0a2c0d987d889c04100102000605025331cf7a000a0910a401d9f09a34f7c0ee970400aca292f213041c9f3b3fc49148cbda9d84afee6183c8dd6c5ff2600b29482db5fecd4303797be1ee6d544a20a858080fec43412061c9a71fae4039fd58013b4ae341273e6c66ad4c7cdd9e68245bedb260562e7b166f2461a1032f2b38c0e0e5715fb3d1656979e052b55ca827a76f872b78a9fdae64bc298170bfcebedc1271b41a416c696365203c616c696365407379646973702e6f722e61753e88b804130102002205025331278b021b03060b090807030206150802090a0b0416020301021e01021780000a09104ef7e4beccde97f06a7003fa03c3af68d272ebc1fa08aa72a03b02189c26496a2833d90450801c4e42c5b5f51ad96ce2d2c9cef4b7c02a6a2fcf1412d6a2d486098eb762f5010a201819c17fd2888aec8eda20c65a3b75744de7ee5cc8ac7bfc470cbe3cb982720405a27a3c6a8c229cfe36905f881b02ed5680f6a8f05866efb9d6c5844897e631deb949ca8846041011020006050253312910000a09107b15a67f0b3ddc0347bc009f7fa35db59147469eb6f2c5aaf6428accb138b22800a0caa2f5f0874bacc5909c652a57a31beda65eddd5889c04100102000605025331cf7a000a0910a401d9f09a34f7c0316403ff46f2a5c101256627f16384d34a38fb47a6c88ba60506843e532d91614339fccae5f884a5741e7582ffaf292ba38ee10a270a05f139bde3814b6a077e8cd2db0f105ebea2a83af70d385f13b507fac2ad93ff79d84950328bb86f3074745a8b7f9b64990fb142e2a12976e27e8d09a28dc5621f957ac49091116da410ac3cbde1b88d04533121f6010400cbd785b56905e4192e2fb62a720727d43c4fa487821203cf72138b884b78b701093243e1d8c92a0248a6c0203a5a88693da34af357499abacaf4b3309c640797d03093870a323b4b6f37865f6eaa2838148a67df4735d43a90ca87942554cdf1c4a751b1e75f9fd4ce4e97e278d6c1c7ed59d33441df7d084f3f02beb68896c70011010001889f0418010200090502533121f6021b0c000a09104ef7e4beccde97f0b98b03fc0a5ccf6a372995835a2f5da33b282a7d612c0ab2a97f59cf9fff73e9110981aac2858c41399afa29624a7fd8a0add11654e3d882c0fd199e161bdad65e5e2548f7b68a437ea64293db1246e3011cbb94dc1bcdeaf0f2539bd88ff16d95547144d97cead6a8c5927660a91e6db0d16eb36b7b49a3525b54d1644e65599b032b7eb901a204533127a0110400bd3edaa09eff9809c4edc2c2a0ebe52e53c50a19c1e49ab78e6167bf61473bb08f2050d78a5cbbc6ed66aff7b42cd503f16b4a0b99fa1609681fca9b7ce2bbb1a5b3864d6cdda4d7ef7849d156d534dea30fb0efb9e4cf8959a2b2ce623905882d5430b995a15c3b9fe92906086788b891002924f94abe139b42cbbfaaabe42f00a0b65dc1a1ad27d798adbcb5b5ad02d2688c89477b03ff4eebb6f7b15a73b96a96bed201c0e5e4ea27e4c6e2dd1005b94d4b90137a5b1cf5e01c6226c070c4cc999938101578877ee76d296b9aab8246d57049caacf489e80a3f40589cade790a020b1ac146d6f7a6241184b8c7fcde680eae3188f5dcbe846d7f7bdad34f6fcfca08413e19c1d5df83fc7c7c627d493492e009c2f52a80400a2fe82de87136fd2e8845888c4431b032ba29d9a29a804277e31002a8201fb8591a3e55c7a0d0881496caf8b9fb07544a5a4879291d0dc026a0ea9e5bd88eb4aa4947bbd694b25012e208a250d65ddc6f1eea59d3aed3b4ec15fcab85e2afaa23a40ab1ef9ce3e11e1bc1c34a0e758e7aa64deb8739276df0af7d4121f834a9b88e70418010200090502533127a0021b02005209104ef7e4beccde97f047200419110200060502533127a0000a0910dbce4ee19529437fe045009c0b32f5ead48ee8a7e98fac0dea3d3e6c0e2c552500a0ad71fadc5007cfaf842d9b7db3335a8cdad15d3d1a6404009b08e2c68fe8f3b45c1bb72a4b3278cdf3012aa0f229883ad74aa1f6000bb90b18301b2f85372ca5d6b9bf478d235b733b1b197d19ccca48e9daf8e890cb64546b4ce1b178faccfff07003c172a2d4f5ebaba9f57153955f3f61a9b80a4f5cb959908f8b211b03b7026a8a82fc612bfedd3794969bcf458c4ce92be215a1176ab88d045331d144010400a5063000c5aaf34953c1aa3bfc95045b3aab9882b9a8027fecfe2142dc6b47ba8aca667399990244d513dd0504716908c17d92c65e74219e004f7b83fc125e575dd58efec3ab6dd22e3580106998523dea42ec75bf9aa111734c82df54630bebdff20fe981cfc36c76f865eb1c2fb62c9e85bc3a6e5015a361a2eb1c8431578d0011010001889f04280102000905025331d433021d03000a09104ef7e4beccde97f02e5503ff5e0630d1b65291f4882b6d40a29da4616bb5088717d469fbcc3648b8276de04a04988b1f1b9f3e18f52265c1f8b6c85861691c1a6b8a3a25a1809a0b32ad330aec5667cb4262f4450649184e8113849b05e5ad06a316ea80c001e8e71838190339a6e48bbde30647bcf245134b9a97fa875c1d83a9862cae87ffd7e2c4ce3a1b89013d04180102000905025331d144021b0200a809104ef7e4beccde97f09d2004190102000605025331d144000a0910677815e371c2fd23522203fe22ab62b8e7a151383cea3edd3a12995693911426f8ccf125e1f6426388c0010f88d9ca7da2224aee8d1c12135998640c5e1813d55a93df472faae75bef858457248db41b4505827590aeccf6f9eb646da7f980655dd3050c6897feddddaca90676dee856d66db8923477d251712bb9b3186b4d0114daf7d6b59272b53218dd1da94a03ff64006fcbe71211e5daecd9961fba66cdb6de3f914882c58ba5beddeba7dcb950c1156d7fba18c19ea880dccc800eae335deec34e3b84ac75ffa24864f782f87815cda1c0f634b3dd2fa67cea30811d21723d21d9551fa12ccbcfa62b6d3a15d01307b99925707992556d50065505b090aadb8579083a20fe65bd2a270da9b011" -const missingCrossSignatureKey = `-----BEGIN PGP PUBLIC KEY BLOCK----- -Charset: UTF-8 - -mQENBFMYynYBCACVOZ3/e8Bm2b9KH9QyIlHGo/i1bnkpqsgXj8tpJ2MIUOnXMMAY -ztW7kKFLCmgVdLIC0vSoLA4yhaLcMojznh/2CcUglZeb6Ao8Gtelr//Rd5DRfPpG -zqcfUo+m+eO1co2Orabw0tZDfGpg5p3AYl0hmxhUyYSc/xUq93xL1UJzBFgYXY54 -QsM8dgeQgFseSk/YvdP5SMx1ev+eraUyiiUtWzWrWC1TdyRa5p4UZg6Rkoppf+WJ -QrW6BWrhAtqATHc8ozV7uJjeONjUEq24roRc/OFZdmQQGK6yrzKnnbA6MdHhqpdo -9kWDcXYb7pSE63Lc+OBa5X2GUVvXJLS/3nrtABEBAAG0F2ludmFsaWQtc2lnbmlu -Zy1zdWJrZXlziQEoBBMBAgASBQJTnKB5AhsBAgsHAhUIAh4BAAoJEO3UDQUIHpI/ -dN4H/idX4FQ1LIZCnpHS/oxoWQWfpRgdKAEM0qCqjMgiipJeEwSQbqjTCynuh5/R -JlODDz85ABR06aoF4l5ebGLQWFCYifPnJZ/Yf5OYcMGtb7dIbqxWVFL9iLMO/oDL -ioI3dotjPui5e+2hI9pVH1UHB/bZ/GvMGo6Zg0XxLPolKQODMVjpjLAQ0YJ3spew -RAmOGre6tIvbDsMBnm8qREt7a07cBJ6XK7xjxYaZHQBiHVxyEWDa6gyANONx8duW -/fhQ/zDTnyVM/ik6VO0Ty9BhPpcEYLFwh5c1ilFari1ta3e6qKo6ZGa9YMk/REhu -yBHd9nTkI+0CiQUmbckUiVjDKKe5AQ0EUxjKdgEIAJcXQeP+NmuciE99YcJoffxv -2gVLU4ZXBNHEaP0mgaJ1+tmMD089vUQAcyGRvw8jfsNsVZQIOAuRxY94aHQhIRHR -bUzBN28ofo/AJJtfx62C15xt6fDKRV6HXYqAiygrHIpEoRLyiN69iScUsjIJeyFL -C8wa72e8pSL6dkHoaV1N9ZH/xmrJ+k0vsgkQaAh9CzYufncDxcwkoP+aOlGtX1gP -WwWoIbz0JwLEMPHBWvDDXQcQPQTYQyj+LGC9U6f9VZHN25E94subM1MjuT9OhN9Y -MLfWaaIc5WyhLFyQKW2Upofn9wSFi8ubyBnv640Dfd0rVmaWv7LNTZpoZ/GbJAMA -EQEAAYkBHwQYAQIACQUCU5ygeQIbAgAKCRDt1A0FCB6SP0zCB/sEzaVR38vpx+OQ -MMynCBJrakiqDmUZv9xtplY7zsHSQjpd6xGflbU2n+iX99Q+nav0ETQZifNUEd4N -1ljDGQejcTyKD6Pkg6wBL3x9/RJye7Zszazm4+toJXZ8xJ3800+BtaPoI39akYJm -+ijzbskvN0v/j5GOFJwQO0pPRAFtdHqRs9Kf4YanxhedB4dIUblzlIJuKsxFit6N -lgGRblagG3Vv2eBszbxzPbJjHCgVLR3RmrVezKOsZjr/2i7X+xLWIR0uD3IN1qOW -CXQxLBizEEmSNVNxsp7KPGTLnqO3bPtqFirxS9PJLIMPTPLNBY7ZYuPNTMqVIUWF -4artDmrG -=7FfJ ------END PGP PUBLIC KEY BLOCK-----` - -const invalidCrossSignatureKey = `-----BEGIN PGP PUBLIC KEY BLOCK----- - -mQENBFMYynYBCACVOZ3/e8Bm2b9KH9QyIlHGo/i1bnkpqsgXj8tpJ2MIUOnXMMAY -ztW7kKFLCmgVdLIC0vSoLA4yhaLcMojznh/2CcUglZeb6Ao8Gtelr//Rd5DRfPpG -zqcfUo+m+eO1co2Orabw0tZDfGpg5p3AYl0hmxhUyYSc/xUq93xL1UJzBFgYXY54 -QsM8dgeQgFseSk/YvdP5SMx1ev+eraUyiiUtWzWrWC1TdyRa5p4UZg6Rkoppf+WJ -QrW6BWrhAtqATHc8ozV7uJjeONjUEq24roRc/OFZdmQQGK6yrzKnnbA6MdHhqpdo -9kWDcXYb7pSE63Lc+OBa5X2GUVvXJLS/3nrtABEBAAG0F2ludmFsaWQtc2lnbmlu -Zy1zdWJrZXlziQEoBBMBAgASBQJTnKB5AhsBAgsHAhUIAh4BAAoJEO3UDQUIHpI/ -dN4H/idX4FQ1LIZCnpHS/oxoWQWfpRgdKAEM0qCqjMgiipJeEwSQbqjTCynuh5/R -JlODDz85ABR06aoF4l5ebGLQWFCYifPnJZ/Yf5OYcMGtb7dIbqxWVFL9iLMO/oDL -ioI3dotjPui5e+2hI9pVH1UHB/bZ/GvMGo6Zg0XxLPolKQODMVjpjLAQ0YJ3spew -RAmOGre6tIvbDsMBnm8qREt7a07cBJ6XK7xjxYaZHQBiHVxyEWDa6gyANONx8duW -/fhQ/zDTnyVM/ik6VO0Ty9BhPpcEYLFwh5c1ilFari1ta3e6qKo6ZGa9YMk/REhu -yBHd9nTkI+0CiQUmbckUiVjDKKe5AQ0EUxjKdgEIAIINDqlj7X6jYKc6DjwrOkjQ -UIRWbQQar0LwmNilehmt70g5DCL1SYm9q4LcgJJ2Nhxj0/5qqsYib50OSWMcKeEe -iRXpXzv1ObpcQtI5ithp0gR53YPXBib80t3bUzomQ5UyZqAAHzMp3BKC54/vUrSK -FeRaxDzNLrCeyI00+LHNUtwghAqHvdNcsIf8VRumK8oTm3RmDh0TyjASWYbrt9c8 -R1Um3zuoACOVy+mEIgIzsfHq0u7dwYwJB5+KeM7ZLx+HGIYdUYzHuUE1sLwVoELh -+SHIGHI1HDicOjzqgajShuIjj5hZTyQySVprrsLKiXS6NEwHAP20+XjayJ/R3tEA -EQEAAYkCPgQYAQIBKAUCU5ygeQIbAsBdIAQZAQIABgUCU5ygeQAKCRCpVlnFZmhO -52RJB/9uD1MSa0wjY6tHOIgquZcP3bHBvHmrHNMw9HR2wRCMO91ZkhrpdS3ZHtgb -u3/55etj0FdvDo1tb8P8FGSVtO5Vcwf5APM8sbbqoi8L951Q3i7qt847lfhu6sMl -w0LWFvPTOLHrliZHItPRjOltS1WAWfr2jUYhsU9ytaDAJmvf9DujxEOsN5G1YJep -54JCKVCkM/y585Zcnn+yxk/XwqoNQ0/iJUT9qRrZWvoeasxhl1PQcwihCwss44A+ -YXaAt3hbk+6LEQuZoYS73yR3WHj+42tfm7YxRGeubXfgCEz/brETEWXMh4pe0vCL -bfWrmfSPq2rDegYcAybxRQz0lF8PAAoJEO3UDQUIHpI/exkH/0vQfdHA8g/N4T6E -i6b1CUVBAkvtdJpCATZjWPhXmShOw62gkDw306vHPilL4SCvEEi4KzG72zkp6VsB -DSRcpxCwT4mHue+duiy53/aRMtSJ+vDfiV1Vhq+3sWAck/yUtfDU9/u4eFaiNok1 -8/Gd7reyuZt5CiJnpdPpjCwelK21l2w7sHAnJF55ITXdOxI8oG3BRKufz0z5lyDY -s2tXYmhhQIggdgelN8LbcMhWs/PBbtUr6uZlNJG2lW1yscD4aI529VjwJlCeo745 -U7pO4eF05VViUJ2mmfoivL3tkhoTUWhx8xs8xCUcCg8DoEoSIhxtOmoTPR22Z9BL -6LCg2mg= -=Dhm4 ------END PGP PUBLIC KEY BLOCK-----` - -const goodCrossSignatureKey = `-----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -mI0EVUqeVwEEAMufHRrMPWK3gyvi0O0tABCs/oON9zV9KDZlr1a1M91ShCSFwCPo -7r80PxdWVWcj0V5h50/CJYtpN3eE/mUIgW2z1uDYQF1OzrQ8ubrksfsJvpAhENom -lTQEppv9mV8qhcM278teb7TX0pgrUHLYF5CfPdp1L957JLLXoQR/lwLVABEBAAG0 -E2dvb2Qtc2lnbmluZy1zdWJrZXmIuAQTAQIAIgUCVUqeVwIbAwYLCQgHAwIGFQgC -CQoLBBYCAwECHgECF4AACgkQNRjL95IRWP69XQQAlH6+eyXJN4DZTLX78KGjHrsw -6FCvxxClEPtPUjcJy/1KCRQmtLAt9PbbA78dvgzjDeZMZqRAwdjyJhjyg/fkU2OH -7wq4ktjUu+dLcOBb+BFMEY+YjKZhf6EJuVfxoTVr5f82XNPbYHfTho9/OABKH6kv -X70PaKZhbwnwij8Nts65AaIEVUqftREEAJ3WxZfqAX0bTDbQPf2CMT2IVMGDfhK7 -GyubOZgDFFjwUJQvHNvsrbeGLZ0xOBumLINyPO1amIfTgJNm1iiWFWfmnHReGcDl -y5mpYG60Mb79Whdcer7CMm3AqYh/dW4g6IB02NwZMKoUHo3PXmFLxMKXnWyJ0clw -R0LI/Qn509yXAKDh1SO20rqrBM+EAP2c5bfI98kyNwQAi3buu94qo3RR1ZbvfxgW -CKXDVm6N99jdZGNK7FbRifXqzJJDLcXZKLnstnC4Sd3uyfyf1uFhmDLIQRryn5m+ -LBYHfDBPN3kdm7bsZDDq9GbTHiFZUfm/tChVKXWxkhpAmHhU/tH6GGzNSMXuIWSO -aOz3Rqq0ED4NXyNKjdF9MiwD/i83S0ZBc0LmJYt4Z10jtH2B6tYdqnAK29uQaadx -yZCX2scE09UIm32/w7pV77CKr1Cp/4OzAXS1tmFzQ+bX7DR+Gl8t4wxr57VeEMvl -BGw4Vjh3X8//m3xynxycQU18Q1zJ6PkiMyPw2owZ/nss3hpSRKFJsxMLhW3fKmKr -Ey2KiOcEGAECAAkFAlVKn7UCGwIAUgkQNRjL95IRWP5HIAQZEQIABgUCVUqftQAK -CRD98VjDN10SqkWrAKDTpEY8D8HC02E/KVC5YUI01B30wgCgurpILm20kXEDCeHp -C5pygfXw1DJrhAP+NyPJ4um/bU1I+rXaHHJYroYJs8YSweiNcwiHDQn0Engh/mVZ -SqLHvbKh2dL/RXymC3+rjPvQf5cup9bPxNMa6WagdYBNAfzWGtkVISeaQW+cTEp/ -MtgVijRGXR/lGLGETPg2X3Afwn9N9bLMBkBprKgbBqU7lpaoPupxT61bL70= -=vtbN ------END PGP PUBLIC KEY BLOCK-----` diff --git a/vendor/golang.org/x/crypto/openpgp/packet/compressed.go b/vendor/golang.org/x/crypto/openpgp/packet/compressed.go deleted file mode 100644 index e8f0b5ca..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/compressed.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "compress/bzip2" - "compress/flate" - "compress/zlib" - "golang.org/x/crypto/openpgp/errors" - "io" - "strconv" -) - -// Compressed represents a compressed OpenPGP packet. The decompressed contents -// will contain more OpenPGP packets. See RFC 4880, section 5.6. -type Compressed struct { - Body io.Reader -} - -const ( - NoCompression = flate.NoCompression - BestSpeed = flate.BestSpeed - BestCompression = flate.BestCompression - DefaultCompression = flate.DefaultCompression -) - -// CompressionConfig contains compressor configuration settings. -type CompressionConfig struct { - // Level is the compression level to use. It must be set to - // between -1 and 9, with -1 causing the compressor to use the - // default compression level, 0 causing the compressor to use - // no compression and 1 to 9 representing increasing (better, - // slower) compression levels. If Level is less than -1 or - // more then 9, a non-nil error will be returned during - // encryption. See the constants above for convenient common - // settings for Level. - Level int -} - -func (c *Compressed) parse(r io.Reader) error { - var buf [1]byte - _, err := readFull(r, buf[:]) - if err != nil { - return err - } - - switch buf[0] { - case 1: - c.Body = flate.NewReader(r) - case 2: - c.Body, err = zlib.NewReader(r) - case 3: - c.Body = bzip2.NewReader(r) - default: - err = errors.UnsupportedError("unknown compression algorithm: " + strconv.Itoa(int(buf[0]))) - } - - return err -} - -// compressedWriterCloser represents the serialized compression stream -// header and the compressor. Its Close() method ensures that both the -// compressor and serialized stream header are closed. Its Write() -// method writes to the compressor. -type compressedWriteCloser struct { - sh io.Closer // Stream Header - c io.WriteCloser // Compressor -} - -func (cwc compressedWriteCloser) Write(p []byte) (int, error) { - return cwc.c.Write(p) -} - -func (cwc compressedWriteCloser) Close() (err error) { - err = cwc.c.Close() - if err != nil { - return err - } - - return cwc.sh.Close() -} - -// SerializeCompressed serializes a compressed data packet to w and -// returns a WriteCloser to which the literal data packets themselves -// can be written and which MUST be closed on completion. If cc is -// nil, sensible defaults will be used to configure the compression -// algorithm. -func SerializeCompressed(w io.WriteCloser, algo CompressionAlgo, cc *CompressionConfig) (literaldata io.WriteCloser, err error) { - compressed, err := serializeStreamHeader(w, packetTypeCompressed) - if err != nil { - return - } - - _, err = compressed.Write([]byte{uint8(algo)}) - if err != nil { - return - } - - level := DefaultCompression - if cc != nil { - level = cc.Level - } - - var compressor io.WriteCloser - switch algo { - case CompressionZIP: - compressor, err = flate.NewWriter(compressed, level) - case CompressionZLIB: - compressor, err = zlib.NewWriterLevel(compressed, level) - default: - s := strconv.Itoa(int(algo)) - err = errors.UnsupportedError("Unsupported compression algorithm: " + s) - } - if err != nil { - return - } - - literaldata = compressedWriteCloser{compressed, compressor} - - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/compressed_test.go b/vendor/golang.org/x/crypto/openpgp/packet/compressed_test.go deleted file mode 100644 index cb2d70bd..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/compressed_test.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "encoding/hex" - "io" - "io/ioutil" - "testing" -) - -func TestCompressed(t *testing.T) { - packet, err := Read(readerFromHex(compressedHex)) - if err != nil { - t.Errorf("failed to read Compressed: %s", err) - return - } - - c, ok := packet.(*Compressed) - if !ok { - t.Error("didn't find Compressed packet") - return - } - - contents, err := ioutil.ReadAll(c.Body) - if err != nil && err != io.EOF { - t.Error(err) - return - } - - expected, _ := hex.DecodeString(compressedExpectedHex) - if !bytes.Equal(expected, contents) { - t.Errorf("got:%x want:%x", contents, expected) - } -} - -const compressedHex = "a3013b2d90c4e02b72e25f727e5e496a5e49b11e1700" -const compressedExpectedHex = "cb1062004d14c8fe636f6e74656e74732e0a" diff --git a/vendor/golang.org/x/crypto/openpgp/packet/config.go b/vendor/golang.org/x/crypto/openpgp/packet/config.go deleted file mode 100644 index c76eecc9..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/config.go +++ /dev/null @@ -1,91 +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 packet - -import ( - "crypto" - "crypto/rand" - "io" - "time" -) - -// Config collects a number of parameters along with sensible defaults. -// A nil *Config is valid and results in all default values. -type Config struct { - // Rand provides the source of entropy. - // If nil, the crypto/rand Reader is used. - Rand io.Reader - // DefaultHash is the default hash function to be used. - // If zero, SHA-256 is used. - DefaultHash crypto.Hash - // DefaultCipher is the cipher to be used. - // If zero, AES-128 is used. - DefaultCipher CipherFunction - // Time returns the current time as the number of seconds since the - // epoch. If Time is nil, time.Now is used. - Time func() time.Time - // DefaultCompressionAlgo is the compression algorithm to be - // applied to the plaintext before encryption. If zero, no - // compression is done. - DefaultCompressionAlgo CompressionAlgo - // CompressionConfig configures the compression settings. - CompressionConfig *CompressionConfig - // S2KCount is only used for symmetric encryption. It - // determines the strength of the passphrase stretching when - // the said passphrase is hashed to produce a key. S2KCount - // should be between 1024 and 65011712, inclusive. If Config - // is nil or S2KCount is 0, the value 65536 used. Not all - // values in the above range can be represented. S2KCount will - // be rounded up to the next representable value if it cannot - // be encoded exactly. When set, it is strongly encrouraged to - // use a value that is at least 65536. See RFC 4880 Section - // 3.7.1.3. - S2KCount int - // RSABits is the number of bits in new RSA keys made with NewEntity. - // If zero, then 2048 bit keys are created. - RSABits int -} - -func (c *Config) Random() io.Reader { - if c == nil || c.Rand == nil { - return rand.Reader - } - return c.Rand -} - -func (c *Config) Hash() crypto.Hash { - if c == nil || uint(c.DefaultHash) == 0 { - return crypto.SHA256 - } - return c.DefaultHash -} - -func (c *Config) Cipher() CipherFunction { - if c == nil || uint8(c.DefaultCipher) == 0 { - return CipherAES128 - } - return c.DefaultCipher -} - -func (c *Config) Now() time.Time { - if c == nil || c.Time == nil { - return time.Now() - } - return c.Time() -} - -func (c *Config) Compression() CompressionAlgo { - if c == nil { - return CompressionNone - } - return c.DefaultCompressionAlgo -} - -func (c *Config) PasswordHashIterations() int { - if c == nil || c.S2KCount == 0 { - return 0 - } - return c.S2KCount -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go b/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go deleted file mode 100644 index 266840d0..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "crypto/rsa" - "encoding/binary" - "io" - "math/big" - "strconv" - - "golang.org/x/crypto/openpgp/elgamal" - "golang.org/x/crypto/openpgp/errors" -) - -const encryptedKeyVersion = 3 - -// EncryptedKey represents a public-key encrypted session key. See RFC 4880, -// section 5.1. -type EncryptedKey struct { - KeyId uint64 - Algo PublicKeyAlgorithm - CipherFunc CipherFunction // only valid after a successful Decrypt - Key []byte // only valid after a successful Decrypt - - encryptedMPI1, encryptedMPI2 parsedMPI -} - -func (e *EncryptedKey) parse(r io.Reader) (err error) { - var buf [10]byte - _, err = readFull(r, buf[:]) - if err != nil { - return - } - if buf[0] != encryptedKeyVersion { - return errors.UnsupportedError("unknown EncryptedKey version " + strconv.Itoa(int(buf[0]))) - } - e.KeyId = binary.BigEndian.Uint64(buf[1:9]) - e.Algo = PublicKeyAlgorithm(buf[9]) - switch e.Algo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - e.encryptedMPI1.bytes, e.encryptedMPI1.bitLength, err = readMPI(r) - case PubKeyAlgoElGamal: - e.encryptedMPI1.bytes, e.encryptedMPI1.bitLength, err = readMPI(r) - if err != nil { - return - } - e.encryptedMPI2.bytes, e.encryptedMPI2.bitLength, err = readMPI(r) - } - _, err = consumeAll(r) - return -} - -func checksumKeyMaterial(key []byte) uint16 { - var checksum uint16 - for _, v := range key { - checksum += uint16(v) - } - return checksum -} - -// Decrypt decrypts an encrypted session key with the given private key. The -// private key must have been decrypted first. -// If config is nil, sensible defaults will be used. -func (e *EncryptedKey) Decrypt(priv *PrivateKey, config *Config) error { - var err error - var b []byte - - // TODO(agl): use session key decryption routines here to avoid - // padding oracle attacks. - switch priv.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - b, err = rsa.DecryptPKCS1v15(config.Random(), priv.PrivateKey.(*rsa.PrivateKey), e.encryptedMPI1.bytes) - case PubKeyAlgoElGamal: - c1 := new(big.Int).SetBytes(e.encryptedMPI1.bytes) - c2 := new(big.Int).SetBytes(e.encryptedMPI2.bytes) - b, err = elgamal.Decrypt(priv.PrivateKey.(*elgamal.PrivateKey), c1, c2) - default: - err = errors.InvalidArgumentError("cannot decrypted encrypted session key with private key of type " + strconv.Itoa(int(priv.PubKeyAlgo))) - } - - if err != nil { - return err - } - - e.CipherFunc = CipherFunction(b[0]) - e.Key = b[1 : len(b)-2] - expectedChecksum := uint16(b[len(b)-2])<<8 | uint16(b[len(b)-1]) - checksum := checksumKeyMaterial(e.Key) - if checksum != expectedChecksum { - return errors.StructuralError("EncryptedKey checksum incorrect") - } - - return nil -} - -// Serialize writes the encrypted key packet, e, to w. -func (e *EncryptedKey) Serialize(w io.Writer) error { - var mpiLen int - switch e.Algo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - mpiLen = 2 + len(e.encryptedMPI1.bytes) - case PubKeyAlgoElGamal: - mpiLen = 2 + len(e.encryptedMPI1.bytes) + 2 + len(e.encryptedMPI2.bytes) - default: - return errors.InvalidArgumentError("don't know how to serialize encrypted key type " + strconv.Itoa(int(e.Algo))) - } - - serializeHeader(w, packetTypeEncryptedKey, 1 /* version */ +8 /* key id */ +1 /* algo */ +mpiLen) - - w.Write([]byte{encryptedKeyVersion}) - binary.Write(w, binary.BigEndian, e.KeyId) - w.Write([]byte{byte(e.Algo)}) - - switch e.Algo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - writeMPIs(w, e.encryptedMPI1) - case PubKeyAlgoElGamal: - writeMPIs(w, e.encryptedMPI1, e.encryptedMPI2) - default: - panic("internal error") - } - - return nil -} - -// SerializeEncryptedKey serializes an encrypted key packet to w that contains -// key, encrypted to pub. -// If config is nil, sensible defaults will be used. -func SerializeEncryptedKey(w io.Writer, pub *PublicKey, cipherFunc CipherFunction, key []byte, config *Config) error { - var buf [10]byte - buf[0] = encryptedKeyVersion - binary.BigEndian.PutUint64(buf[1:9], pub.KeyId) - buf[9] = byte(pub.PubKeyAlgo) - - keyBlock := make([]byte, 1 /* cipher type */ +len(key)+2 /* checksum */) - keyBlock[0] = byte(cipherFunc) - copy(keyBlock[1:], key) - checksum := checksumKeyMaterial(key) - keyBlock[1+len(key)] = byte(checksum >> 8) - keyBlock[1+len(key)+1] = byte(checksum) - - switch pub.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly: - return serializeEncryptedKeyRSA(w, config.Random(), buf, pub.PublicKey.(*rsa.PublicKey), keyBlock) - case PubKeyAlgoElGamal: - return serializeEncryptedKeyElGamal(w, config.Random(), buf, pub.PublicKey.(*elgamal.PublicKey), keyBlock) - case PubKeyAlgoDSA, PubKeyAlgoRSASignOnly: - return errors.InvalidArgumentError("cannot encrypt to public key of type " + strconv.Itoa(int(pub.PubKeyAlgo))) - } - - return errors.UnsupportedError("encrypting a key to public key of type " + strconv.Itoa(int(pub.PubKeyAlgo))) -} - -func serializeEncryptedKeyRSA(w io.Writer, rand io.Reader, header [10]byte, pub *rsa.PublicKey, keyBlock []byte) error { - cipherText, err := rsa.EncryptPKCS1v15(rand, pub, keyBlock) - if err != nil { - return errors.InvalidArgumentError("RSA encryption failed: " + err.Error()) - } - - packetLen := 10 /* header length */ + 2 /* mpi size */ + len(cipherText) - - err = serializeHeader(w, packetTypeEncryptedKey, packetLen) - if err != nil { - return err - } - _, err = w.Write(header[:]) - if err != nil { - return err - } - return writeMPI(w, 8*uint16(len(cipherText)), cipherText) -} - -func serializeEncryptedKeyElGamal(w io.Writer, rand io.Reader, header [10]byte, pub *elgamal.PublicKey, keyBlock []byte) error { - c1, c2, err := elgamal.Encrypt(rand, pub, keyBlock) - if err != nil { - return errors.InvalidArgumentError("ElGamal encryption failed: " + err.Error()) - } - - packetLen := 10 /* header length */ - packetLen += 2 /* mpi size */ + (c1.BitLen()+7)/8 - packetLen += 2 /* mpi size */ + (c2.BitLen()+7)/8 - - err = serializeHeader(w, packetTypeEncryptedKey, packetLen) - if err != nil { - return err - } - _, err = w.Write(header[:]) - if err != nil { - return err - } - err = writeBig(w, c1) - if err != nil { - return err - } - return writeBig(w, c2) -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key_test.go b/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key_test.go deleted file mode 100644 index fee14cf3..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/encrypted_key_test.go +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto/rsa" - "encoding/hex" - "fmt" - "math/big" - "testing" -) - -func bigFromBase10(s string) *big.Int { - b, ok := new(big.Int).SetString(s, 10) - if !ok { - panic("bigFromBase10 failed") - } - return b -} - -var encryptedKeyPub = rsa.PublicKey{ - E: 65537, - N: bigFromBase10("115804063926007623305902631768113868327816898845124614648849934718568541074358183759250136204762053879858102352159854352727097033322663029387610959884180306668628526686121021235757016368038585212410610742029286439607686208110250133174279811431933746643015923132833417396844716207301518956640020862630546868823"), -} - -var encryptedKeyRSAPriv = &rsa.PrivateKey{ - PublicKey: encryptedKeyPub, - D: bigFromBase10("32355588668219869544751561565313228297765464314098552250409557267371233892496951383426602439009993875125222579159850054973310859166139474359774543943714622292329487391199285040721944491839695981199720170366763547754915493640685849961780092241140181198779299712578774460837139360803883139311171713302987058393"), -} - -var encryptedKeyPriv = &PrivateKey{ - PublicKey: PublicKey{ - PubKeyAlgo: PubKeyAlgoRSA, - }, - PrivateKey: encryptedKeyRSAPriv, -} - -func TestDecryptingEncryptedKey(t *testing.T) { - const encryptedKeyHex = "c18c032a67d68660df41c70104005789d0de26b6a50c985a02a13131ca829c413a35d0e6fa8d6842599252162808ac7439c72151c8c6183e76923fe3299301414d0c25a2f06a2257db3839e7df0ec964773f6e4c4ac7ff3b48c444237166dd46ba8ff443a5410dc670cb486672fdbe7c9dfafb75b4fea83af3a204fe2a7dfa86bd20122b4f3d2646cbeecb8f7be8" - const expectedKeyHex = "d930363f7e0308c333b9618617ea728963d8df993665ae7be1092d4926fd864b" - - p, err := Read(readerFromHex(encryptedKeyHex)) - if err != nil { - t.Errorf("error from Read: %s", err) - return - } - ek, ok := p.(*EncryptedKey) - if !ok { - t.Errorf("didn't parse an EncryptedKey, got %#v", p) - return - } - - if ek.KeyId != 0x2a67d68660df41c7 || ek.Algo != PubKeyAlgoRSA { - t.Errorf("unexpected EncryptedKey contents: %#v", ek) - return - } - - err = ek.Decrypt(encryptedKeyPriv, nil) - if err != nil { - t.Errorf("error from Decrypt: %s", err) - return - } - - if ek.CipherFunc != CipherAES256 { - t.Errorf("unexpected EncryptedKey contents: %#v", ek) - return - } - - keyHex := fmt.Sprintf("%x", ek.Key) - if keyHex != expectedKeyHex { - t.Errorf("bad key, got %s want %x", keyHex, expectedKeyHex) - } -} - -func TestEncryptingEncryptedKey(t *testing.T) { - key := []byte{1, 2, 3, 4} - const expectedKeyHex = "01020304" - const keyId = 42 - - pub := &PublicKey{ - PublicKey: &encryptedKeyPub, - KeyId: keyId, - PubKeyAlgo: PubKeyAlgoRSAEncryptOnly, - } - - buf := new(bytes.Buffer) - err := SerializeEncryptedKey(buf, pub, CipherAES128, key, nil) - if err != nil { - t.Errorf("error writing encrypted key packet: %s", err) - } - - p, err := Read(buf) - if err != nil { - t.Errorf("error from Read: %s", err) - return - } - ek, ok := p.(*EncryptedKey) - if !ok { - t.Errorf("didn't parse an EncryptedKey, got %#v", p) - return - } - - if ek.KeyId != keyId || ek.Algo != PubKeyAlgoRSAEncryptOnly { - t.Errorf("unexpected EncryptedKey contents: %#v", ek) - return - } - - err = ek.Decrypt(encryptedKeyPriv, nil) - if err != nil { - t.Errorf("error from Decrypt: %s", err) - return - } - - if ek.CipherFunc != CipherAES128 { - t.Errorf("unexpected EncryptedKey contents: %#v", ek) - return - } - - keyHex := fmt.Sprintf("%x", ek.Key) - if keyHex != expectedKeyHex { - t.Errorf("bad key, got %s want %x", keyHex, expectedKeyHex) - } -} - -func TestSerializingEncryptedKey(t *testing.T) { - const encryptedKeyHex = "c18c032a67d68660df41c70104005789d0de26b6a50c985a02a13131ca829c413a35d0e6fa8d6842599252162808ac7439c72151c8c6183e76923fe3299301414d0c25a2f06a2257db3839e7df0ec964773f6e4c4ac7ff3b48c444237166dd46ba8ff443a5410dc670cb486672fdbe7c9dfafb75b4fea83af3a204fe2a7dfa86bd20122b4f3d2646cbeecb8f7be8" - - p, err := Read(readerFromHex(encryptedKeyHex)) - if err != nil { - t.Fatalf("error from Read: %s", err) - } - ek, ok := p.(*EncryptedKey) - if !ok { - t.Fatalf("didn't parse an EncryptedKey, got %#v", p) - } - - var buf bytes.Buffer - ek.Serialize(&buf) - - if bufHex := hex.EncodeToString(buf.Bytes()); bufHex != encryptedKeyHex { - t.Fatalf("serialization of encrypted key differed from original. Original was %s, but reserialized as %s", encryptedKeyHex, bufHex) - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/literal.go b/vendor/golang.org/x/crypto/openpgp/packet/literal.go deleted file mode 100644 index 1a9ec6e5..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/literal.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "encoding/binary" - "io" -) - -// LiteralData represents an encrypted file. See RFC 4880, section 5.9. -type LiteralData struct { - IsBinary bool - FileName string - Time uint32 // Unix epoch time. Either creation time or modification time. 0 means undefined. - Body io.Reader -} - -// ForEyesOnly returns whether the contents of the LiteralData have been marked -// as especially sensitive. -func (l *LiteralData) ForEyesOnly() bool { - return l.FileName == "_CONSOLE" -} - -func (l *LiteralData) parse(r io.Reader) (err error) { - var buf [256]byte - - _, err = readFull(r, buf[:2]) - if err != nil { - return - } - - l.IsBinary = buf[0] == 'b' - fileNameLen := int(buf[1]) - - _, err = readFull(r, buf[:fileNameLen]) - if err != nil { - return - } - - l.FileName = string(buf[:fileNameLen]) - - _, err = readFull(r, buf[:4]) - if err != nil { - return - } - - l.Time = binary.BigEndian.Uint32(buf[:4]) - l.Body = r - return -} - -// SerializeLiteral serializes a literal data packet to w and returns a -// WriteCloser to which the data itself can be written and which MUST be closed -// on completion. The fileName is truncated to 255 bytes. -func SerializeLiteral(w io.WriteCloser, isBinary bool, fileName string, time uint32) (plaintext io.WriteCloser, err error) { - var buf [4]byte - buf[0] = 't' - if isBinary { - buf[0] = 'b' - } - if len(fileName) > 255 { - fileName = fileName[:255] - } - buf[1] = byte(len(fileName)) - - inner, err := serializeStreamHeader(w, packetTypeLiteralData) - if err != nil { - return - } - - _, err = inner.Write(buf[:2]) - if err != nil { - return - } - _, err = inner.Write([]byte(fileName)) - if err != nil { - return - } - binary.BigEndian.PutUint32(buf[:], time) - _, err = inner.Write(buf[:]) - if err != nil { - return - } - - plaintext = inner - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/ocfb.go b/vendor/golang.org/x/crypto/openpgp/packet/ocfb.go deleted file mode 100644 index ce2a33a5..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/ocfb.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// OpenPGP CFB Mode. http://tools.ietf.org/html/rfc4880#section-13.9 - -package packet - -import ( - "crypto/cipher" -) - -type ocfbEncrypter struct { - b cipher.Block - fre []byte - outUsed int -} - -// An OCFBResyncOption determines if the "resynchronization step" of OCFB is -// performed. -type OCFBResyncOption bool - -const ( - OCFBResync OCFBResyncOption = true - OCFBNoResync OCFBResyncOption = false -) - -// NewOCFBEncrypter returns a cipher.Stream which encrypts data with OpenPGP's -// cipher feedback mode using the given cipher.Block, and an initial amount of -// ciphertext. randData must be random bytes and be the same length as the -// cipher.Block's block size. Resync determines if the "resynchronization step" -// from RFC 4880, 13.9 step 7 is performed. Different parts of OpenPGP vary on -// this point. -func NewOCFBEncrypter(block cipher.Block, randData []byte, resync OCFBResyncOption) (cipher.Stream, []byte) { - blockSize := block.BlockSize() - if len(randData) != blockSize { - return nil, nil - } - - x := &ocfbEncrypter{ - b: block, - fre: make([]byte, blockSize), - outUsed: 0, - } - prefix := make([]byte, blockSize+2) - - block.Encrypt(x.fre, x.fre) - for i := 0; i < blockSize; i++ { - prefix[i] = randData[i] ^ x.fre[i] - } - - block.Encrypt(x.fre, prefix[:blockSize]) - prefix[blockSize] = x.fre[0] ^ randData[blockSize-2] - prefix[blockSize+1] = x.fre[1] ^ randData[blockSize-1] - - if resync { - block.Encrypt(x.fre, prefix[2:]) - } else { - x.fre[0] = prefix[blockSize] - x.fre[1] = prefix[blockSize+1] - x.outUsed = 2 - } - return x, prefix -} - -func (x *ocfbEncrypter) XORKeyStream(dst, src []byte) { - for i := 0; i < len(src); i++ { - if x.outUsed == len(x.fre) { - x.b.Encrypt(x.fre, x.fre) - x.outUsed = 0 - } - - x.fre[x.outUsed] ^= src[i] - dst[i] = x.fre[x.outUsed] - x.outUsed++ - } -} - -type ocfbDecrypter struct { - b cipher.Block - fre []byte - outUsed int -} - -// NewOCFBDecrypter returns a cipher.Stream which decrypts data with OpenPGP's -// cipher feedback mode using the given cipher.Block. Prefix must be the first -// blockSize + 2 bytes of the ciphertext, where blockSize is the cipher.Block's -// block size. If an incorrect key is detected then nil is returned. On -// successful exit, blockSize+2 bytes of decrypted data are written into -// prefix. Resync determines if the "resynchronization step" from RFC 4880, -// 13.9 step 7 is performed. Different parts of OpenPGP vary on this point. -func NewOCFBDecrypter(block cipher.Block, prefix []byte, resync OCFBResyncOption) cipher.Stream { - blockSize := block.BlockSize() - if len(prefix) != blockSize+2 { - return nil - } - - x := &ocfbDecrypter{ - b: block, - fre: make([]byte, blockSize), - outUsed: 0, - } - prefixCopy := make([]byte, len(prefix)) - copy(prefixCopy, prefix) - - block.Encrypt(x.fre, x.fre) - for i := 0; i < blockSize; i++ { - prefixCopy[i] ^= x.fre[i] - } - - block.Encrypt(x.fre, prefix[:blockSize]) - prefixCopy[blockSize] ^= x.fre[0] - prefixCopy[blockSize+1] ^= x.fre[1] - - if prefixCopy[blockSize-2] != prefixCopy[blockSize] || - prefixCopy[blockSize-1] != prefixCopy[blockSize+1] { - return nil - } - - if resync { - block.Encrypt(x.fre, prefix[2:]) - } else { - x.fre[0] = prefix[blockSize] - x.fre[1] = prefix[blockSize+1] - x.outUsed = 2 - } - copy(prefix, prefixCopy) - return x -} - -func (x *ocfbDecrypter) XORKeyStream(dst, src []byte) { - for i := 0; i < len(src); i++ { - if x.outUsed == len(x.fre) { - x.b.Encrypt(x.fre, x.fre) - x.outUsed = 0 - } - - c := src[i] - dst[i] = x.fre[x.outUsed] ^ src[i] - x.fre[x.outUsed] = c - x.outUsed++ - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/ocfb_test.go b/vendor/golang.org/x/crypto/openpgp/packet/ocfb_test.go deleted file mode 100644 index 91022c04..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/ocfb_test.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto/aes" - "crypto/rand" - "testing" -) - -var commonKey128 = []byte{0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c} - -func testOCFB(t *testing.T, resync OCFBResyncOption) { - block, err := aes.NewCipher(commonKey128) - if err != nil { - t.Error(err) - return - } - - plaintext := []byte("this is the plaintext, which is long enough to span several blocks.") - randData := make([]byte, block.BlockSize()) - rand.Reader.Read(randData) - ocfb, prefix := NewOCFBEncrypter(block, randData, resync) - ciphertext := make([]byte, len(plaintext)) - ocfb.XORKeyStream(ciphertext, plaintext) - - ocfbdec := NewOCFBDecrypter(block, prefix, resync) - if ocfbdec == nil { - t.Errorf("NewOCFBDecrypter failed (resync: %t)", resync) - return - } - plaintextCopy := make([]byte, len(plaintext)) - ocfbdec.XORKeyStream(plaintextCopy, ciphertext) - - if !bytes.Equal(plaintextCopy, plaintext) { - t.Errorf("got: %x, want: %x (resync: %t)", plaintextCopy, plaintext, resync) - } -} - -func TestOCFB(t *testing.T) { - testOCFB(t, OCFBNoResync) - testOCFB(t, OCFBResync) -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/one_pass_signature.go b/vendor/golang.org/x/crypto/openpgp/packet/one_pass_signature.go deleted file mode 100644 index 17135033..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/one_pass_signature.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "crypto" - "encoding/binary" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" - "io" - "strconv" -) - -// OnePassSignature represents a one-pass signature packet. See RFC 4880, -// section 5.4. -type OnePassSignature struct { - SigType SignatureType - Hash crypto.Hash - PubKeyAlgo PublicKeyAlgorithm - KeyId uint64 - IsLast bool -} - -const onePassSignatureVersion = 3 - -func (ops *OnePassSignature) parse(r io.Reader) (err error) { - var buf [13]byte - - _, err = readFull(r, buf[:]) - if err != nil { - return - } - if buf[0] != onePassSignatureVersion { - err = errors.UnsupportedError("one-pass-signature packet version " + strconv.Itoa(int(buf[0]))) - } - - var ok bool - ops.Hash, ok = s2k.HashIdToHash(buf[2]) - if !ok { - return errors.UnsupportedError("hash function: " + strconv.Itoa(int(buf[2]))) - } - - ops.SigType = SignatureType(buf[1]) - ops.PubKeyAlgo = PublicKeyAlgorithm(buf[3]) - ops.KeyId = binary.BigEndian.Uint64(buf[4:12]) - ops.IsLast = buf[12] != 0 - return -} - -// Serialize marshals the given OnePassSignature to w. -func (ops *OnePassSignature) Serialize(w io.Writer) error { - var buf [13]byte - buf[0] = onePassSignatureVersion - buf[1] = uint8(ops.SigType) - var ok bool - buf[2], ok = s2k.HashToHashId(ops.Hash) - if !ok { - return errors.UnsupportedError("hash type: " + strconv.Itoa(int(ops.Hash))) - } - buf[3] = uint8(ops.PubKeyAlgo) - binary.BigEndian.PutUint64(buf[4:12], ops.KeyId) - if ops.IsLast { - buf[12] = 1 - } - - if err := serializeHeader(w, packetTypeOnePassSignature, len(buf)); err != nil { - return err - } - _, err := w.Write(buf[:]) - return err -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/opaque.go b/vendor/golang.org/x/crypto/openpgp/packet/opaque.go deleted file mode 100644 index 456d807f..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/opaque.go +++ /dev/null @@ -1,162 +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 packet - -import ( - "bytes" - "io" - "io/ioutil" - - "golang.org/x/crypto/openpgp/errors" -) - -// OpaquePacket represents an OpenPGP packet as raw, unparsed data. This is -// useful for splitting and storing the original packet contents separately, -// handling unsupported packet types or accessing parts of the packet not yet -// implemented by this package. -type OpaquePacket struct { - // Packet type - Tag uint8 - // Reason why the packet was parsed opaquely - Reason error - // Binary contents of the packet data - Contents []byte -} - -func (op *OpaquePacket) parse(r io.Reader) (err error) { - op.Contents, err = ioutil.ReadAll(r) - return -} - -// Serialize marshals the packet to a writer in its original form, including -// the packet header. -func (op *OpaquePacket) Serialize(w io.Writer) (err error) { - err = serializeHeader(w, packetType(op.Tag), len(op.Contents)) - if err == nil { - _, err = w.Write(op.Contents) - } - return -} - -// Parse attempts to parse the opaque contents into a structure supported by -// this package. If the packet is not known then the result will be another -// OpaquePacket. -func (op *OpaquePacket) Parse() (p Packet, err error) { - hdr := bytes.NewBuffer(nil) - err = serializeHeader(hdr, packetType(op.Tag), len(op.Contents)) - if err != nil { - op.Reason = err - return op, err - } - p, err = Read(io.MultiReader(hdr, bytes.NewBuffer(op.Contents))) - if err != nil { - op.Reason = err - p = op - } - return -} - -// OpaqueReader reads OpaquePackets from an io.Reader. -type OpaqueReader struct { - r io.Reader -} - -func NewOpaqueReader(r io.Reader) *OpaqueReader { - return &OpaqueReader{r: r} -} - -// Read the next OpaquePacket. -func (or *OpaqueReader) Next() (op *OpaquePacket, err error) { - tag, _, contents, err := readHeader(or.r) - if err != nil { - return - } - op = &OpaquePacket{Tag: uint8(tag), Reason: err} - err = op.parse(contents) - if err != nil { - consumeAll(contents) - } - return -} - -// OpaqueSubpacket represents an unparsed OpenPGP subpacket, -// as found in signature and user attribute packets. -type OpaqueSubpacket struct { - SubType uint8 - Contents []byte -} - -// OpaqueSubpackets extracts opaque, unparsed OpenPGP subpackets from -// their byte representation. -func OpaqueSubpackets(contents []byte) (result []*OpaqueSubpacket, err error) { - var ( - subHeaderLen int - subPacket *OpaqueSubpacket - ) - for len(contents) > 0 { - subHeaderLen, subPacket, err = nextSubpacket(contents) - if err != nil { - break - } - result = append(result, subPacket) - contents = contents[subHeaderLen+len(subPacket.Contents):] - } - return -} - -func nextSubpacket(contents []byte) (subHeaderLen int, subPacket *OpaqueSubpacket, err error) { - // RFC 4880, section 5.2.3.1 - var subLen uint32 - if len(contents) < 1 { - goto Truncated - } - subPacket = &OpaqueSubpacket{} - switch { - case contents[0] < 192: - subHeaderLen = 2 // 1 length byte, 1 subtype byte - if len(contents) < subHeaderLen { - goto Truncated - } - subLen = uint32(contents[0]) - contents = contents[1:] - case contents[0] < 255: - subHeaderLen = 3 // 2 length bytes, 1 subtype - if len(contents) < subHeaderLen { - goto Truncated - } - subLen = uint32(contents[0]-192)<<8 + uint32(contents[1]) + 192 - contents = contents[2:] - default: - subHeaderLen = 6 // 5 length bytes, 1 subtype - if len(contents) < subHeaderLen { - goto Truncated - } - subLen = uint32(contents[1])<<24 | - uint32(contents[2])<<16 | - uint32(contents[3])<<8 | - uint32(contents[4]) - contents = contents[5:] - } - if subLen > uint32(len(contents)) || subLen == 0 { - goto Truncated - } - subPacket.SubType = contents[0] - subPacket.Contents = contents[1:subLen] - return -Truncated: - err = errors.StructuralError("subpacket truncated") - return -} - -func (osp *OpaqueSubpacket) Serialize(w io.Writer) (err error) { - buf := make([]byte, 6) - n := serializeSubpacketLength(buf, len(osp.Contents)+1) - buf[n] = osp.SubType - if _, err = w.Write(buf[:n+1]); err != nil { - return - } - _, err = w.Write(osp.Contents) - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/opaque_test.go b/vendor/golang.org/x/crypto/openpgp/packet/opaque_test.go deleted file mode 100644 index f27bbfe0..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/opaque_test.go +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "encoding/hex" - "io" - "testing" -) - -// Test packet.Read error handling in OpaquePacket.Parse, -// which attempts to re-read an OpaquePacket as a supported -// Packet type. -func TestOpaqueParseReason(t *testing.T) { - buf, err := hex.DecodeString(UnsupportedKeyHex) - if err != nil { - t.Fatal(err) - } - or := NewOpaqueReader(bytes.NewBuffer(buf)) - count := 0 - badPackets := 0 - var uid *UserId - for { - op, err := or.Next() - if err == io.EOF { - break - } else if err != nil { - t.Errorf("#%d: opaque read error: %v", count, err) - break - } - // try to parse opaque packet - p, err := op.Parse() - switch pkt := p.(type) { - case *UserId: - uid = pkt - case *OpaquePacket: - // If an OpaquePacket can't re-parse, packet.Read - // certainly had its reasons. - if pkt.Reason == nil { - t.Errorf("#%d: opaque packet, no reason", count) - } else { - badPackets++ - } - } - count++ - } - - const expectedBad = 3 - // Test post-conditions, make sure we actually parsed packets as expected. - if badPackets != expectedBad { - t.Errorf("unexpected # unparseable packets: %d (want %d)", badPackets, expectedBad) - } - if uid == nil { - t.Errorf("failed to find expected UID in unsupported keyring") - } else if uid.Id != "Armin M. Warda " { - t.Errorf("unexpected UID: %v", uid.Id) - } -} - -// This key material has public key and signature packet versions modified to -// an unsupported value (1), so that trying to parse the OpaquePacket to -// a typed packet will get an error. It also contains a GnuPG trust packet. -// (Created with: od -An -t x1 pubring.gpg | xargs | sed 's/ //g') -const UnsupportedKeyHex = `988d012e7a18a20000010400d6ac00d92b89c1f4396c243abb9b76d2e9673ad63483291fed88e22b82e255e441c078c6abbbf7d2d195e50b62eeaa915b85b0ec20c225ce2c64c167cacb6e711daf2e45da4a8356a059b8160e3b3628ac0dd8437b31f06d53d6e8ea4214d4a26406a6b63e1001406ef23e0bb3069fac9a99a91f77dfafd5de0f188a5da5e3c9000511b42741726d696e204d2e205761726461203c7761726461406e657068696c696d2e727568722e64653e8900950105102e8936c705d1eb399e58489901013f0e03ff5a0c4f421e34fcfa388129166420c08cd76987bcdec6f01bd0271459a85cc22048820dd4e44ac2c7d23908d540f54facf1b36b0d9c20488781ce9dca856531e76e2e846826e9951338020a03a09b57aa5faa82e9267458bd76105399885ac35af7dc1cbb6aaed7c39e1039f3b5beda2c0e916bd38560509bab81235d1a0ead83b0020000` diff --git a/vendor/golang.org/x/crypto/openpgp/packet/packet.go b/vendor/golang.org/x/crypto/openpgp/packet/packet.go deleted file mode 100644 index 3eded93f..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/packet.go +++ /dev/null @@ -1,537 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package packet implements parsing and serialization of OpenPGP packets, as -// specified in RFC 4880. -package packet // import "golang.org/x/crypto/openpgp/packet" - -import ( - "bufio" - "crypto/aes" - "crypto/cipher" - "crypto/des" - "golang.org/x/crypto/cast5" - "golang.org/x/crypto/openpgp/errors" - "io" - "math/big" -) - -// readFull is the same as io.ReadFull except that reading zero bytes returns -// ErrUnexpectedEOF rather than EOF. -func readFull(r io.Reader, buf []byte) (n int, err error) { - n, err = io.ReadFull(r, buf) - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - return -} - -// readLength reads an OpenPGP length from r. See RFC 4880, section 4.2.2. -func readLength(r io.Reader) (length int64, isPartial bool, err error) { - var buf [4]byte - _, err = readFull(r, buf[:1]) - if err != nil { - return - } - switch { - case buf[0] < 192: - length = int64(buf[0]) - case buf[0] < 224: - length = int64(buf[0]-192) << 8 - _, err = readFull(r, buf[0:1]) - if err != nil { - return - } - length += int64(buf[0]) + 192 - case buf[0] < 255: - length = int64(1) << (buf[0] & 0x1f) - isPartial = true - default: - _, err = readFull(r, buf[0:4]) - if err != nil { - return - } - length = int64(buf[0])<<24 | - int64(buf[1])<<16 | - int64(buf[2])<<8 | - int64(buf[3]) - } - return -} - -// partialLengthReader wraps an io.Reader and handles OpenPGP partial lengths. -// The continuation lengths are parsed and removed from the stream and EOF is -// returned at the end of the packet. See RFC 4880, section 4.2.2.4. -type partialLengthReader struct { - r io.Reader - remaining int64 - isPartial bool -} - -func (r *partialLengthReader) Read(p []byte) (n int, err error) { - for r.remaining == 0 { - if !r.isPartial { - return 0, io.EOF - } - r.remaining, r.isPartial, err = readLength(r.r) - if err != nil { - return 0, err - } - } - - toRead := int64(len(p)) - if toRead > r.remaining { - toRead = r.remaining - } - - n, err = r.r.Read(p[:int(toRead)]) - r.remaining -= int64(n) - if n < int(toRead) && err == io.EOF { - err = io.ErrUnexpectedEOF - } - return -} - -// partialLengthWriter writes a stream of data using OpenPGP partial lengths. -// See RFC 4880, section 4.2.2.4. -type partialLengthWriter struct { - w io.WriteCloser - lengthByte [1]byte -} - -func (w *partialLengthWriter) Write(p []byte) (n int, err error) { - for len(p) > 0 { - for power := uint(14); power < 32; power-- { - l := 1 << power - if len(p) >= l { - w.lengthByte[0] = 224 + uint8(power) - _, err = w.w.Write(w.lengthByte[:]) - if err != nil { - return - } - var m int - m, err = w.w.Write(p[:l]) - n += m - if err != nil { - return - } - p = p[l:] - break - } - } - } - return -} - -func (w *partialLengthWriter) Close() error { - w.lengthByte[0] = 0 - _, err := w.w.Write(w.lengthByte[:]) - if err != nil { - return err - } - return w.w.Close() -} - -// A spanReader is an io.LimitReader, but it returns ErrUnexpectedEOF if the -// underlying Reader returns EOF before the limit has been reached. -type spanReader struct { - r io.Reader - n int64 -} - -func (l *spanReader) Read(p []byte) (n int, err error) { - if l.n <= 0 { - return 0, io.EOF - } - if int64(len(p)) > l.n { - p = p[0:l.n] - } - n, err = l.r.Read(p) - l.n -= int64(n) - if l.n > 0 && err == io.EOF { - err = io.ErrUnexpectedEOF - } - return -} - -// readHeader parses a packet header and returns an io.Reader which will return -// the contents of the packet. See RFC 4880, section 4.2. -func readHeader(r io.Reader) (tag packetType, length int64, contents io.Reader, err error) { - var buf [4]byte - _, err = io.ReadFull(r, buf[:1]) - if err != nil { - return - } - if buf[0]&0x80 == 0 { - err = errors.StructuralError("tag byte does not have MSB set") - return - } - if buf[0]&0x40 == 0 { - // Old format packet - tag = packetType((buf[0] & 0x3f) >> 2) - lengthType := buf[0] & 3 - if lengthType == 3 { - length = -1 - contents = r - return - } - lengthBytes := 1 << lengthType - _, err = readFull(r, buf[0:lengthBytes]) - if err != nil { - return - } - for i := 0; i < lengthBytes; i++ { - length <<= 8 - length |= int64(buf[i]) - } - contents = &spanReader{r, length} - return - } - - // New format packet - tag = packetType(buf[0] & 0x3f) - length, isPartial, err := readLength(r) - if err != nil { - return - } - if isPartial { - contents = &partialLengthReader{ - remaining: length, - isPartial: true, - r: r, - } - length = -1 - } else { - contents = &spanReader{r, length} - } - return -} - -// serializeHeader writes an OpenPGP packet header to w. See RFC 4880, section -// 4.2. -func serializeHeader(w io.Writer, ptype packetType, length int) (err error) { - var buf [6]byte - var n int - - buf[0] = 0x80 | 0x40 | byte(ptype) - if length < 192 { - buf[1] = byte(length) - n = 2 - } else if length < 8384 { - length -= 192 - buf[1] = 192 + byte(length>>8) - buf[2] = byte(length) - n = 3 - } else { - buf[1] = 255 - buf[2] = byte(length >> 24) - buf[3] = byte(length >> 16) - buf[4] = byte(length >> 8) - buf[5] = byte(length) - n = 6 - } - - _, err = w.Write(buf[:n]) - return -} - -// serializeStreamHeader writes an OpenPGP packet header to w where the -// length of the packet is unknown. It returns a io.WriteCloser which can be -// used to write the contents of the packet. See RFC 4880, section 4.2. -func serializeStreamHeader(w io.WriteCloser, ptype packetType) (out io.WriteCloser, err error) { - var buf [1]byte - buf[0] = 0x80 | 0x40 | byte(ptype) - _, err = w.Write(buf[:]) - if err != nil { - return - } - out = &partialLengthWriter{w: w} - return -} - -// Packet represents an OpenPGP packet. Users are expected to try casting -// instances of this interface to specific packet types. -type Packet interface { - parse(io.Reader) error -} - -// consumeAll reads from the given Reader until error, returning the number of -// bytes read. -func consumeAll(r io.Reader) (n int64, err error) { - var m int - var buf [1024]byte - - for { - m, err = r.Read(buf[:]) - n += int64(m) - if err == io.EOF { - err = nil - return - } - if err != nil { - return - } - } -} - -// packetType represents the numeric ids of the different OpenPGP packet types. See -// http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-2 -type packetType uint8 - -const ( - packetTypeEncryptedKey packetType = 1 - packetTypeSignature packetType = 2 - packetTypeSymmetricKeyEncrypted packetType = 3 - packetTypeOnePassSignature packetType = 4 - packetTypePrivateKey packetType = 5 - packetTypePublicKey packetType = 6 - packetTypePrivateSubkey packetType = 7 - packetTypeCompressed packetType = 8 - packetTypeSymmetricallyEncrypted packetType = 9 - packetTypeLiteralData packetType = 11 - packetTypeUserId packetType = 13 - packetTypePublicSubkey packetType = 14 - packetTypeUserAttribute packetType = 17 - packetTypeSymmetricallyEncryptedMDC packetType = 18 -) - -// peekVersion detects the version of a public key packet about to -// be read. A bufio.Reader at the original position of the io.Reader -// is returned. -func peekVersion(r io.Reader) (bufr *bufio.Reader, ver byte, err error) { - bufr = bufio.NewReader(r) - var verBuf []byte - if verBuf, err = bufr.Peek(1); err != nil { - return - } - ver = verBuf[0] - return -} - -// Read reads a single OpenPGP packet from the given io.Reader. If there is an -// error parsing a packet, the whole packet is consumed from the input. -func Read(r io.Reader) (p Packet, err error) { - tag, _, contents, err := readHeader(r) - if err != nil { - return - } - - switch tag { - case packetTypeEncryptedKey: - p = new(EncryptedKey) - case packetTypeSignature: - var version byte - // Detect signature version - if contents, version, err = peekVersion(contents); err != nil { - return - } - if version < 4 { - p = new(SignatureV3) - } else { - p = new(Signature) - } - case packetTypeSymmetricKeyEncrypted: - p = new(SymmetricKeyEncrypted) - case packetTypeOnePassSignature: - p = new(OnePassSignature) - case packetTypePrivateKey, packetTypePrivateSubkey: - pk := new(PrivateKey) - if tag == packetTypePrivateSubkey { - pk.IsSubkey = true - } - p = pk - case packetTypePublicKey, packetTypePublicSubkey: - var version byte - if contents, version, err = peekVersion(contents); err != nil { - return - } - isSubkey := tag == packetTypePublicSubkey - if version < 4 { - p = &PublicKeyV3{IsSubkey: isSubkey} - } else { - p = &PublicKey{IsSubkey: isSubkey} - } - case packetTypeCompressed: - p = new(Compressed) - case packetTypeSymmetricallyEncrypted: - p = new(SymmetricallyEncrypted) - case packetTypeLiteralData: - p = new(LiteralData) - case packetTypeUserId: - p = new(UserId) - case packetTypeUserAttribute: - p = new(UserAttribute) - case packetTypeSymmetricallyEncryptedMDC: - se := new(SymmetricallyEncrypted) - se.MDC = true - p = se - default: - err = errors.UnknownPacketTypeError(tag) - } - if p != nil { - err = p.parse(contents) - } - if err != nil { - consumeAll(contents) - } - return -} - -// SignatureType represents the different semantic meanings of an OpenPGP -// signature. See RFC 4880, section 5.2.1. -type SignatureType uint8 - -const ( - SigTypeBinary SignatureType = 0 - SigTypeText = 1 - SigTypeGenericCert = 0x10 - SigTypePersonaCert = 0x11 - SigTypeCasualCert = 0x12 - SigTypePositiveCert = 0x13 - SigTypeSubkeyBinding = 0x18 - SigTypePrimaryKeyBinding = 0x19 - SigTypeDirectSignature = 0x1F - SigTypeKeyRevocation = 0x20 - SigTypeSubkeyRevocation = 0x28 -) - -// PublicKeyAlgorithm represents the different public key system specified for -// OpenPGP. See -// http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-12 -type PublicKeyAlgorithm uint8 - -const ( - PubKeyAlgoRSA PublicKeyAlgorithm = 1 - PubKeyAlgoRSAEncryptOnly PublicKeyAlgorithm = 2 - PubKeyAlgoRSASignOnly PublicKeyAlgorithm = 3 - PubKeyAlgoElGamal PublicKeyAlgorithm = 16 - PubKeyAlgoDSA PublicKeyAlgorithm = 17 - // RFC 6637, Section 5. - PubKeyAlgoECDH PublicKeyAlgorithm = 18 - PubKeyAlgoECDSA PublicKeyAlgorithm = 19 -) - -// CanEncrypt returns true if it's possible to encrypt a message to a public -// key of the given type. -func (pka PublicKeyAlgorithm) CanEncrypt() bool { - switch pka { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoElGamal: - return true - } - return false -} - -// CanSign returns true if it's possible for a public key of the given type to -// sign a message. -func (pka PublicKeyAlgorithm) CanSign() bool { - switch pka { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoDSA, PubKeyAlgoECDSA: - return true - } - return false -} - -// CipherFunction represents the different block ciphers specified for OpenPGP. See -// http://www.iana.org/assignments/pgp-parameters/pgp-parameters.xhtml#pgp-parameters-13 -type CipherFunction uint8 - -const ( - Cipher3DES CipherFunction = 2 - CipherCAST5 CipherFunction = 3 - CipherAES128 CipherFunction = 7 - CipherAES192 CipherFunction = 8 - CipherAES256 CipherFunction = 9 -) - -// KeySize returns the key size, in bytes, of cipher. -func (cipher CipherFunction) KeySize() int { - switch cipher { - case Cipher3DES: - return 24 - case CipherCAST5: - return cast5.KeySize - case CipherAES128: - return 16 - case CipherAES192: - return 24 - case CipherAES256: - return 32 - } - return 0 -} - -// blockSize returns the block size, in bytes, of cipher. -func (cipher CipherFunction) blockSize() int { - switch cipher { - case Cipher3DES: - return des.BlockSize - case CipherCAST5: - return 8 - case CipherAES128, CipherAES192, CipherAES256: - return 16 - } - return 0 -} - -// new returns a fresh instance of the given cipher. -func (cipher CipherFunction) new(key []byte) (block cipher.Block) { - switch cipher { - case Cipher3DES: - block, _ = des.NewTripleDESCipher(key) - case CipherCAST5: - block, _ = cast5.NewCipher(key) - case CipherAES128, CipherAES192, CipherAES256: - block, _ = aes.NewCipher(key) - } - return -} - -// readMPI reads a big integer from r. The bit length returned is the bit -// length that was specified in r. This is preserved so that the integer can be -// reserialized exactly. -func readMPI(r io.Reader) (mpi []byte, bitLength uint16, err error) { - var buf [2]byte - _, err = readFull(r, buf[0:]) - if err != nil { - return - } - bitLength = uint16(buf[0])<<8 | uint16(buf[1]) - numBytes := (int(bitLength) + 7) / 8 - mpi = make([]byte, numBytes) - _, err = readFull(r, mpi) - return -} - -// mpiLength returns the length of the given *big.Int when serialized as an -// MPI. -func mpiLength(n *big.Int) (mpiLengthInBytes int) { - mpiLengthInBytes = 2 /* MPI length */ - mpiLengthInBytes += (n.BitLen() + 7) / 8 - return -} - -// writeMPI serializes a big integer to w. -func writeMPI(w io.Writer, bitLength uint16, mpiBytes []byte) (err error) { - _, err = w.Write([]byte{byte(bitLength >> 8), byte(bitLength)}) - if err == nil { - _, err = w.Write(mpiBytes) - } - return -} - -// writeBig serializes a *big.Int to w. -func writeBig(w io.Writer, i *big.Int) error { - return writeMPI(w, uint16(i.BitLen()), i.Bytes()) -} - -// CompressionAlgo Represents the different compression algorithms -// supported by OpenPGP (except for BZIP2, which is not currently -// supported). See Section 9.3 of RFC 4880. -type CompressionAlgo uint8 - -const ( - CompressionNone CompressionAlgo = 0 - CompressionZIP CompressionAlgo = 1 - CompressionZLIB CompressionAlgo = 2 -) diff --git a/vendor/golang.org/x/crypto/openpgp/packet/packet_test.go b/vendor/golang.org/x/crypto/openpgp/packet/packet_test.go deleted file mode 100644 index 1dab5c3d..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/packet_test.go +++ /dev/null @@ -1,255 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "encoding/hex" - "fmt" - "golang.org/x/crypto/openpgp/errors" - "io" - "io/ioutil" - "testing" -) - -func TestReadFull(t *testing.T) { - var out [4]byte - - b := bytes.NewBufferString("foo") - n, err := readFull(b, out[:3]) - if n != 3 || err != nil { - t.Errorf("full read failed n:%d err:%s", n, err) - } - - b = bytes.NewBufferString("foo") - n, err = readFull(b, out[:4]) - if n != 3 || err != io.ErrUnexpectedEOF { - t.Errorf("partial read failed n:%d err:%s", n, err) - } - - b = bytes.NewBuffer(nil) - n, err = readFull(b, out[:3]) - if n != 0 || err != io.ErrUnexpectedEOF { - t.Errorf("empty read failed n:%d err:%s", n, err) - } -} - -func readerFromHex(s string) io.Reader { - data, err := hex.DecodeString(s) - if err != nil { - panic("readerFromHex: bad input") - } - return bytes.NewBuffer(data) -} - -var readLengthTests = []struct { - hexInput string - length int64 - isPartial bool - err error -}{ - {"", 0, false, io.ErrUnexpectedEOF}, - {"1f", 31, false, nil}, - {"c0", 0, false, io.ErrUnexpectedEOF}, - {"c101", 256 + 1 + 192, false, nil}, - {"e0", 1, true, nil}, - {"e1", 2, true, nil}, - {"e2", 4, true, nil}, - {"ff", 0, false, io.ErrUnexpectedEOF}, - {"ff00", 0, false, io.ErrUnexpectedEOF}, - {"ff0000", 0, false, io.ErrUnexpectedEOF}, - {"ff000000", 0, false, io.ErrUnexpectedEOF}, - {"ff00000000", 0, false, nil}, - {"ff01020304", 16909060, false, nil}, -} - -func TestReadLength(t *testing.T) { - for i, test := range readLengthTests { - length, isPartial, err := readLength(readerFromHex(test.hexInput)) - if test.err != nil { - if err != test.err { - t.Errorf("%d: expected different error got:%s want:%s", i, err, test.err) - } - continue - } - if err != nil { - t.Errorf("%d: unexpected error: %s", i, err) - continue - } - if length != test.length || isPartial != test.isPartial { - t.Errorf("%d: bad result got:(%d,%t) want:(%d,%t)", i, length, isPartial, test.length, test.isPartial) - } - } -} - -var partialLengthReaderTests = []struct { - hexInput string - err error - hexOutput string -}{ - {"e0", io.ErrUnexpectedEOF, ""}, - {"e001", io.ErrUnexpectedEOF, ""}, - {"e0010102", nil, "0102"}, - {"ff00000000", nil, ""}, - {"e10102e1030400", nil, "01020304"}, - {"e101", io.ErrUnexpectedEOF, ""}, -} - -func TestPartialLengthReader(t *testing.T) { - for i, test := range partialLengthReaderTests { - r := &partialLengthReader{readerFromHex(test.hexInput), 0, true} - out, err := ioutil.ReadAll(r) - if test.err != nil { - if err != test.err { - t.Errorf("%d: expected different error got:%s want:%s", i, err, test.err) - } - continue - } - if err != nil { - t.Errorf("%d: unexpected error: %s", i, err) - continue - } - - got := fmt.Sprintf("%x", out) - if got != test.hexOutput { - t.Errorf("%d: got:%s want:%s", i, test.hexOutput, got) - } - } -} - -var readHeaderTests = []struct { - hexInput string - structuralError bool - unexpectedEOF bool - tag int - length int64 - hexOutput string -}{ - {"", false, false, 0, 0, ""}, - {"7f", true, false, 0, 0, ""}, - - // Old format headers - {"80", false, true, 0, 0, ""}, - {"8001", false, true, 0, 1, ""}, - {"800102", false, false, 0, 1, "02"}, - {"81000102", false, false, 0, 1, "02"}, - {"820000000102", false, false, 0, 1, "02"}, - {"860000000102", false, false, 1, 1, "02"}, - {"83010203", false, false, 0, -1, "010203"}, - - // New format headers - {"c0", false, true, 0, 0, ""}, - {"c000", false, false, 0, 0, ""}, - {"c00102", false, false, 0, 1, "02"}, - {"c0020203", false, false, 0, 2, "0203"}, - {"c00202", false, true, 0, 2, ""}, - {"c3020203", false, false, 3, 2, "0203"}, -} - -func TestReadHeader(t *testing.T) { - for i, test := range readHeaderTests { - tag, length, contents, err := readHeader(readerFromHex(test.hexInput)) - if test.structuralError { - if _, ok := err.(errors.StructuralError); ok { - continue - } - t.Errorf("%d: expected StructuralError, got:%s", i, err) - continue - } - if err != nil { - if len(test.hexInput) == 0 && err == io.EOF { - continue - } - if !test.unexpectedEOF || err != io.ErrUnexpectedEOF { - t.Errorf("%d: unexpected error from readHeader: %s", i, err) - } - continue - } - if int(tag) != test.tag || length != test.length { - t.Errorf("%d: got:(%d,%d) want:(%d,%d)", i, int(tag), length, test.tag, test.length) - continue - } - - body, err := ioutil.ReadAll(contents) - if err != nil { - if !test.unexpectedEOF || err != io.ErrUnexpectedEOF { - t.Errorf("%d: unexpected error from contents: %s", i, err) - } - continue - } - if test.unexpectedEOF { - t.Errorf("%d: expected ErrUnexpectedEOF from contents but got no error", i) - continue - } - got := fmt.Sprintf("%x", body) - if got != test.hexOutput { - t.Errorf("%d: got:%s want:%s", i, got, test.hexOutput) - } - } -} - -func TestSerializeHeader(t *testing.T) { - tag := packetTypePublicKey - lengths := []int{0, 1, 2, 64, 192, 193, 8000, 8384, 8385, 10000} - - for _, length := range lengths { - buf := bytes.NewBuffer(nil) - serializeHeader(buf, tag, length) - tag2, length2, _, err := readHeader(buf) - if err != nil { - t.Errorf("length %d, err: %s", length, err) - } - if tag2 != tag { - t.Errorf("length %d, tag incorrect (got %d, want %d)", length, tag2, tag) - } - if int(length2) != length { - t.Errorf("length %d, length incorrect (got %d)", length, length2) - } - } -} - -func TestPartialLengths(t *testing.T) { - buf := bytes.NewBuffer(nil) - w := new(partialLengthWriter) - w.w = noOpCloser{buf} - - const maxChunkSize = 64 - - var b [maxChunkSize]byte - var n uint8 - for l := 1; l <= maxChunkSize; l++ { - for i := 0; i < l; i++ { - b[i] = n - n++ - } - m, err := w.Write(b[:l]) - if m != l { - t.Errorf("short write got: %d want: %d", m, l) - } - if err != nil { - t.Errorf("error from write: %s", err) - } - } - w.Close() - - want := (maxChunkSize * (maxChunkSize + 1)) / 2 - copyBuf := bytes.NewBuffer(nil) - r := &partialLengthReader{buf, 0, true} - m, err := io.Copy(copyBuf, r) - if m != int64(want) { - t.Errorf("short copy got: %d want: %d", m, want) - } - if err != nil { - t.Errorf("error from copy: %s", err) - } - - copyBytes := copyBuf.Bytes() - for i := 0; i < want; i++ { - if copyBytes[i] != uint8(i) { - t.Errorf("bad pattern in copy at %d", i) - break - } - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/private_key.go b/vendor/golang.org/x/crypto/openpgp/packet/private_key.go deleted file mode 100644 index 34734cc6..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/private_key.go +++ /dev/null @@ -1,380 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto" - "crypto/cipher" - "crypto/dsa" - "crypto/ecdsa" - "crypto/rsa" - "crypto/sha1" - "io" - "io/ioutil" - "math/big" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/elgamal" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" -) - -// PrivateKey represents a possibly encrypted private key. See RFC 4880, -// section 5.5.3. -type PrivateKey struct { - PublicKey - Encrypted bool // if true then the private key is unavailable until Decrypt has been called. - encryptedData []byte - cipher CipherFunction - s2k func(out, in []byte) - PrivateKey interface{} // An *{rsa|dsa|ecdsa}.PrivateKey or a crypto.Signer. - sha1Checksum bool - iv []byte -} - -func NewRSAPrivateKey(currentTime time.Time, priv *rsa.PrivateKey) *PrivateKey { - pk := new(PrivateKey) - pk.PublicKey = *NewRSAPublicKey(currentTime, &priv.PublicKey) - pk.PrivateKey = priv - return pk -} - -func NewDSAPrivateKey(currentTime time.Time, priv *dsa.PrivateKey) *PrivateKey { - pk := new(PrivateKey) - pk.PublicKey = *NewDSAPublicKey(currentTime, &priv.PublicKey) - pk.PrivateKey = priv - return pk -} - -func NewElGamalPrivateKey(currentTime time.Time, priv *elgamal.PrivateKey) *PrivateKey { - pk := new(PrivateKey) - pk.PublicKey = *NewElGamalPublicKey(currentTime, &priv.PublicKey) - pk.PrivateKey = priv - return pk -} - -func NewECDSAPrivateKey(currentTime time.Time, priv *ecdsa.PrivateKey) *PrivateKey { - pk := new(PrivateKey) - pk.PublicKey = *NewECDSAPublicKey(currentTime, &priv.PublicKey) - pk.PrivateKey = priv - return pk -} - -// NewSignerPrivateKey creates a sign-only PrivateKey from a crypto.Signer that -// implements RSA or ECDSA. -func NewSignerPrivateKey(currentTime time.Time, signer crypto.Signer) *PrivateKey { - pk := new(PrivateKey) - switch pubkey := signer.Public().(type) { - case rsa.PublicKey: - pk.PublicKey = *NewRSAPublicKey(currentTime, &pubkey) - pk.PubKeyAlgo = PubKeyAlgoRSASignOnly - case ecdsa.PublicKey: - pk.PublicKey = *NewECDSAPublicKey(currentTime, &pubkey) - default: - panic("openpgp: unknown crypto.Signer type in NewSignerPrivateKey") - } - pk.PrivateKey = signer - return pk -} - -func (pk *PrivateKey) parse(r io.Reader) (err error) { - err = (&pk.PublicKey).parse(r) - if err != nil { - return - } - var buf [1]byte - _, err = readFull(r, buf[:]) - if err != nil { - return - } - - s2kType := buf[0] - - switch s2kType { - case 0: - pk.s2k = nil - pk.Encrypted = false - case 254, 255: - _, err = readFull(r, buf[:]) - if err != nil { - return - } - pk.cipher = CipherFunction(buf[0]) - pk.Encrypted = true - pk.s2k, err = s2k.Parse(r) - if err != nil { - return - } - if s2kType == 254 { - pk.sha1Checksum = true - } - default: - return errors.UnsupportedError("deprecated s2k function in private key") - } - - if pk.Encrypted { - blockSize := pk.cipher.blockSize() - if blockSize == 0 { - return errors.UnsupportedError("unsupported cipher in private key: " + strconv.Itoa(int(pk.cipher))) - } - pk.iv = make([]byte, blockSize) - _, err = readFull(r, pk.iv) - if err != nil { - return - } - } - - pk.encryptedData, err = ioutil.ReadAll(r) - if err != nil { - return - } - - if !pk.Encrypted { - return pk.parsePrivateKey(pk.encryptedData) - } - - return -} - -func mod64kHash(d []byte) uint16 { - var h uint16 - for _, b := range d { - h += uint16(b) - } - return h -} - -func (pk *PrivateKey) Serialize(w io.Writer) (err error) { - // TODO(agl): support encrypted private keys - buf := bytes.NewBuffer(nil) - err = pk.PublicKey.serializeWithoutHeaders(buf) - if err != nil { - return - } - buf.WriteByte(0 /* no encryption */) - - privateKeyBuf := bytes.NewBuffer(nil) - - switch priv := pk.PrivateKey.(type) { - case *rsa.PrivateKey: - err = serializeRSAPrivateKey(privateKeyBuf, priv) - case *dsa.PrivateKey: - err = serializeDSAPrivateKey(privateKeyBuf, priv) - case *elgamal.PrivateKey: - err = serializeElGamalPrivateKey(privateKeyBuf, priv) - case *ecdsa.PrivateKey: - err = serializeECDSAPrivateKey(privateKeyBuf, priv) - default: - err = errors.InvalidArgumentError("unknown private key type") - } - if err != nil { - return - } - - ptype := packetTypePrivateKey - contents := buf.Bytes() - privateKeyBytes := privateKeyBuf.Bytes() - if pk.IsSubkey { - ptype = packetTypePrivateSubkey - } - err = serializeHeader(w, ptype, len(contents)+len(privateKeyBytes)+2) - if err != nil { - return - } - _, err = w.Write(contents) - if err != nil { - return - } - _, err = w.Write(privateKeyBytes) - if err != nil { - return - } - - checksum := mod64kHash(privateKeyBytes) - var checksumBytes [2]byte - checksumBytes[0] = byte(checksum >> 8) - checksumBytes[1] = byte(checksum) - _, err = w.Write(checksumBytes[:]) - - return -} - -func serializeRSAPrivateKey(w io.Writer, priv *rsa.PrivateKey) error { - err := writeBig(w, priv.D) - if err != nil { - return err - } - err = writeBig(w, priv.Primes[1]) - if err != nil { - return err - } - err = writeBig(w, priv.Primes[0]) - if err != nil { - return err - } - return writeBig(w, priv.Precomputed.Qinv) -} - -func serializeDSAPrivateKey(w io.Writer, priv *dsa.PrivateKey) error { - return writeBig(w, priv.X) -} - -func serializeElGamalPrivateKey(w io.Writer, priv *elgamal.PrivateKey) error { - return writeBig(w, priv.X) -} - -func serializeECDSAPrivateKey(w io.Writer, priv *ecdsa.PrivateKey) error { - return writeBig(w, priv.D) -} - -// Decrypt decrypts an encrypted private key using a passphrase. -func (pk *PrivateKey) Decrypt(passphrase []byte) error { - if !pk.Encrypted { - return nil - } - - key := make([]byte, pk.cipher.KeySize()) - pk.s2k(key, passphrase) - block := pk.cipher.new(key) - cfb := cipher.NewCFBDecrypter(block, pk.iv) - - data := make([]byte, len(pk.encryptedData)) - cfb.XORKeyStream(data, pk.encryptedData) - - if pk.sha1Checksum { - if len(data) < sha1.Size { - return errors.StructuralError("truncated private key data") - } - h := sha1.New() - h.Write(data[:len(data)-sha1.Size]) - sum := h.Sum(nil) - if !bytes.Equal(sum, data[len(data)-sha1.Size:]) { - return errors.StructuralError("private key checksum failure") - } - data = data[:len(data)-sha1.Size] - } else { - if len(data) < 2 { - return errors.StructuralError("truncated private key data") - } - var sum uint16 - for i := 0; i < len(data)-2; i++ { - sum += uint16(data[i]) - } - if data[len(data)-2] != uint8(sum>>8) || - data[len(data)-1] != uint8(sum) { - return errors.StructuralError("private key checksum failure") - } - data = data[:len(data)-2] - } - - return pk.parsePrivateKey(data) -} - -func (pk *PrivateKey) parsePrivateKey(data []byte) (err error) { - switch pk.PublicKey.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoRSAEncryptOnly: - return pk.parseRSAPrivateKey(data) - case PubKeyAlgoDSA: - return pk.parseDSAPrivateKey(data) - case PubKeyAlgoElGamal: - return pk.parseElGamalPrivateKey(data) - case PubKeyAlgoECDSA: - return pk.parseECDSAPrivateKey(data) - } - panic("impossible") -} - -func (pk *PrivateKey) parseRSAPrivateKey(data []byte) (err error) { - rsaPub := pk.PublicKey.PublicKey.(*rsa.PublicKey) - rsaPriv := new(rsa.PrivateKey) - rsaPriv.PublicKey = *rsaPub - - buf := bytes.NewBuffer(data) - d, _, err := readMPI(buf) - if err != nil { - return - } - p, _, err := readMPI(buf) - if err != nil { - return - } - q, _, err := readMPI(buf) - if err != nil { - return - } - - rsaPriv.D = new(big.Int).SetBytes(d) - rsaPriv.Primes = make([]*big.Int, 2) - rsaPriv.Primes[0] = new(big.Int).SetBytes(p) - rsaPriv.Primes[1] = new(big.Int).SetBytes(q) - if err := rsaPriv.Validate(); err != nil { - return err - } - rsaPriv.Precompute() - pk.PrivateKey = rsaPriv - pk.Encrypted = false - pk.encryptedData = nil - - return nil -} - -func (pk *PrivateKey) parseDSAPrivateKey(data []byte) (err error) { - dsaPub := pk.PublicKey.PublicKey.(*dsa.PublicKey) - dsaPriv := new(dsa.PrivateKey) - dsaPriv.PublicKey = *dsaPub - - buf := bytes.NewBuffer(data) - x, _, err := readMPI(buf) - if err != nil { - return - } - - dsaPriv.X = new(big.Int).SetBytes(x) - pk.PrivateKey = dsaPriv - pk.Encrypted = false - pk.encryptedData = nil - - return nil -} - -func (pk *PrivateKey) parseElGamalPrivateKey(data []byte) (err error) { - pub := pk.PublicKey.PublicKey.(*elgamal.PublicKey) - priv := new(elgamal.PrivateKey) - priv.PublicKey = *pub - - buf := bytes.NewBuffer(data) - x, _, err := readMPI(buf) - if err != nil { - return - } - - priv.X = new(big.Int).SetBytes(x) - pk.PrivateKey = priv - pk.Encrypted = false - pk.encryptedData = nil - - return nil -} - -func (pk *PrivateKey) parseECDSAPrivateKey(data []byte) (err error) { - ecdsaPub := pk.PublicKey.PublicKey.(*ecdsa.PublicKey) - - buf := bytes.NewBuffer(data) - d, _, err := readMPI(buf) - if err != nil { - return - } - - pk.PrivateKey = &ecdsa.PrivateKey{ - PublicKey: *ecdsaPub, - D: new(big.Int).SetBytes(d), - } - pk.Encrypted = false - pk.encryptedData = nil - - return nil -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/private_key_test.go b/vendor/golang.org/x/crypto/openpgp/packet/private_key_test.go deleted file mode 100644 index ac651d91..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/private_key_test.go +++ /dev/null @@ -1,270 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/rsa" - "crypto/x509" - "encoding/hex" - "hash" - "io" - "testing" - "time" -) - -var privateKeyTests = []struct { - privateKeyHex string - creationTime time.Time -}{ - { - privKeyRSAHex, - time.Unix(0x4cc349a8, 0), - }, - { - privKeyElGamalHex, - time.Unix(0x4df9ee1a, 0), - }, -} - -func TestPrivateKeyRead(t *testing.T) { - for i, test := range privateKeyTests { - packet, err := Read(readerFromHex(test.privateKeyHex)) - if err != nil { - t.Errorf("#%d: failed to parse: %s", i, err) - continue - } - - privKey := packet.(*PrivateKey) - - if !privKey.Encrypted { - t.Errorf("#%d: private key isn't encrypted", i) - continue - } - - err = privKey.Decrypt([]byte("wrong password")) - if err == nil { - t.Errorf("#%d: decrypted with incorrect key", i) - continue - } - - err = privKey.Decrypt([]byte("testing")) - if err != nil { - t.Errorf("#%d: failed to decrypt: %s", i, err) - continue - } - - if !privKey.CreationTime.Equal(test.creationTime) || privKey.Encrypted { - t.Errorf("#%d: bad result, got: %#v", i, privKey) - } - } -} - -func populateHash(hashFunc crypto.Hash, msg []byte) (hash.Hash, error) { - h := hashFunc.New() - if _, err := h.Write(msg); err != nil { - return nil, err - } - return h, nil -} - -func TestRSAPrivateKey(t *testing.T) { - privKeyDER, _ := hex.DecodeString(pkcs1PrivKeyHex) - rsaPriv, err := x509.ParsePKCS1PrivateKey(privKeyDER) - if err != nil { - t.Fatal(err) - } - - var buf bytes.Buffer - if err := NewRSAPrivateKey(time.Now(), rsaPriv).Serialize(&buf); err != nil { - t.Fatal(err) - } - - p, err := Read(&buf) - if err != nil { - t.Fatal(err) - } - - priv, ok := p.(*PrivateKey) - if !ok { - t.Fatal("didn't parse private key") - } - - sig := &Signature{ - PubKeyAlgo: PubKeyAlgoRSA, - Hash: crypto.SHA256, - } - msg := []byte("Hello World!") - - h, err := populateHash(sig.Hash, msg) - if err != nil { - t.Fatal(err) - } - if err := sig.Sign(h, priv, nil); err != nil { - t.Fatal(err) - } - - if h, err = populateHash(sig.Hash, msg); err != nil { - t.Fatal(err) - } - if err := priv.VerifySignature(h, sig); err != nil { - t.Fatal(err) - } -} - -func TestECDSAPrivateKey(t *testing.T) { - ecdsaPriv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - - var buf bytes.Buffer - if err := NewECDSAPrivateKey(time.Now(), ecdsaPriv).Serialize(&buf); err != nil { - t.Fatal(err) - } - - p, err := Read(&buf) - if err != nil { - t.Fatal(err) - } - - priv, ok := p.(*PrivateKey) - if !ok { - t.Fatal("didn't parse private key") - } - - sig := &Signature{ - PubKeyAlgo: PubKeyAlgoECDSA, - Hash: crypto.SHA256, - } - msg := []byte("Hello World!") - - h, err := populateHash(sig.Hash, msg) - if err != nil { - t.Fatal(err) - } - if err := sig.Sign(h, priv, nil); err != nil { - t.Fatal(err) - } - - if h, err = populateHash(sig.Hash, msg); err != nil { - t.Fatal(err) - } - if err := priv.VerifySignature(h, sig); err != nil { - t.Fatal(err) - } -} - -type rsaSigner struct { - priv *rsa.PrivateKey -} - -func (s *rsaSigner) Public() crypto.PublicKey { - return s.priv.PublicKey -} - -func (s *rsaSigner) Sign(rand io.Reader, msg []byte, opts crypto.SignerOpts) ([]byte, error) { - return s.priv.Sign(rand, msg, opts) -} - -func TestRSASignerPrivateKey(t *testing.T) { - rsaPriv, err := rsa.GenerateKey(rand.Reader, 1024) - if err != nil { - t.Fatal(err) - } - - priv := NewSignerPrivateKey(time.Now(), &rsaSigner{rsaPriv}) - - if priv.PubKeyAlgo != PubKeyAlgoRSASignOnly { - t.Fatal("NewSignerPrivateKey should have made a sign-only RSA private key") - } - - sig := &Signature{ - PubKeyAlgo: PubKeyAlgoRSASignOnly, - Hash: crypto.SHA256, - } - msg := []byte("Hello World!") - - h, err := populateHash(sig.Hash, msg) - if err != nil { - t.Fatal(err) - } - if err := sig.Sign(h, priv, nil); err != nil { - t.Fatal(err) - } - - if h, err = populateHash(sig.Hash, msg); err != nil { - t.Fatal(err) - } - if err := priv.VerifySignature(h, sig); err != nil { - t.Fatal(err) - } -} - -type ecdsaSigner struct { - priv *ecdsa.PrivateKey -} - -func (s *ecdsaSigner) Public() crypto.PublicKey { - return s.priv.PublicKey -} - -func (s *ecdsaSigner) Sign(rand io.Reader, msg []byte, opts crypto.SignerOpts) ([]byte, error) { - return s.priv.Sign(rand, msg, opts) -} - -func TestECDSASignerPrivateKey(t *testing.T) { - ecdsaPriv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatal(err) - } - - priv := NewSignerPrivateKey(time.Now(), &ecdsaSigner{ecdsaPriv}) - - if priv.PubKeyAlgo != PubKeyAlgoECDSA { - t.Fatal("NewSignerPrivateKey should have made an ECSDA private key") - } - - sig := &Signature{ - PubKeyAlgo: PubKeyAlgoECDSA, - Hash: crypto.SHA256, - } - msg := []byte("Hello World!") - - h, err := populateHash(sig.Hash, msg) - if err != nil { - t.Fatal(err) - } - if err := sig.Sign(h, priv, nil); err != nil { - t.Fatal(err) - } - - if h, err = populateHash(sig.Hash, msg); err != nil { - t.Fatal(err) - } - if err := priv.VerifySignature(h, sig); err != nil { - t.Fatal(err) - } -} - -func TestIssue11505(t *testing.T) { - // parsing a rsa private key with p or q == 1 used to panic due to a divide by zero - _, _ = Read(readerFromHex("9c3004303030300100000011303030000000000000010130303030303030303030303030303030303030303030303030303030303030303030303030303030303030")) -} - -// Generated with `gpg --export-secret-keys "Test Key 2"` -const privKeyRSAHex = "9501fe044cc349a8010400b70ca0010e98c090008d45d1ee8f9113bd5861fd57b88bacb7c68658747663f1e1a3b5a98f32fda6472373c024b97359cd2efc88ff60f77751adfbf6af5e615e6a1408cfad8bf0cea30b0d5f53aa27ad59089ba9b15b7ebc2777a25d7b436144027e3bcd203909f147d0e332b240cf63d3395f5dfe0df0a6c04e8655af7eacdf0011010001fe0303024a252e7d475fd445607de39a265472aa74a9320ba2dac395faa687e9e0336aeb7e9a7397e511b5afd9dc84557c80ac0f3d4d7bfec5ae16f20d41c8c84a04552a33870b930420e230e179564f6d19bb153145e76c33ae993886c388832b0fa042ddda7f133924f3854481533e0ede31d51278c0519b29abc3bf53da673e13e3e1214b52413d179d7f66deee35cac8eacb060f78379d70ef4af8607e68131ff529439668fc39c9ce6dfef8a5ac234d234802cbfb749a26107db26406213ae5c06d4673253a3cbee1fcbae58d6ab77e38d6e2c0e7c6317c48e054edadb5a40d0d48acb44643d998139a8a66bb820be1f3f80185bc777d14b5954b60effe2448a036d565c6bc0b915fcea518acdd20ab07bc1529f561c58cd044f723109b93f6fd99f876ff891d64306b5d08f48bab59f38695e9109c4dec34013ba3153488ce070268381ba923ee1eb77125b36afcb4347ec3478c8f2735b06ef17351d872e577fa95d0c397c88c71b59629a36aec" - -// Generated by `gpg --export-secret-keys` followed by a manual extraction of -// the ElGamal subkey from the packets. -const privKeyElGamalHex = "9d0157044df9ee1a100400eb8e136a58ec39b582629cdadf830bc64e0a94ed8103ca8bb247b27b11b46d1d25297ef4bcc3071785ba0c0bedfe89eabc5287fcc0edf81ab5896c1c8e4b20d27d79813c7aede75320b33eaeeaa586edc00fd1036c10133e6ba0ff277245d0d59d04b2b3421b7244aca5f4a8d870c6f1c1fbff9e1c26699a860b9504f35ca1d700030503fd1ededd3b840795be6d9ccbe3c51ee42e2f39233c432b831ddd9c4e72b7025a819317e47bf94f9ee316d7273b05d5fcf2999c3a681f519b1234bbfa6d359b4752bd9c3f77d6b6456cde152464763414ca130f4e91d91041432f90620fec0e6d6b5116076c2985d5aeaae13be492b9b329efcaf7ee25120159a0a30cd976b42d7afe030302dae7eb80db744d4960c4df930d57e87fe81412eaace9f900e6c839817a614ddb75ba6603b9417c33ea7b6c93967dfa2bcff3fa3c74a5ce2c962db65b03aece14c96cbd0038fc" - -// pkcs1PrivKeyHex is a PKCS#1, RSA private key. -// Generated by `openssl genrsa 1024 | openssl rsa -outform DER | xxd -p` -const pkcs1PrivKeyHex = "3082025d02010002818100e98edfa1c3b35884a54d0b36a6a603b0290fa85e49e30fa23fc94fef9c6790bc4849928607aa48d809da326fb42a969d06ad756b98b9c1a90f5d4a2b6d0ac05953c97f4da3120164a21a679793ce181c906dc01d235cc085ddcdf6ea06c389b6ab8885dfd685959e693138856a68a7e5db263337ff82a088d583a897cf2d59e9020301000102818100b6d5c9eb70b02d5369b3ee5b520a14490b5bde8a317d36f7e4c74b7460141311d1e5067735f8f01d6f5908b2b96fbd881f7a1ab9a84d82753e39e19e2d36856be960d05ac9ef8e8782ea1b6d65aee28fdfe1d61451e8cff0adfe84322f12cf455028b581cf60eb9e0e140ba5d21aeba6c2634d7c65318b9a665fc01c3191ca21024100fa5e818da3705b0fa33278bb28d4b6f6050388af2d4b75ec9375dd91ccf2e7d7068086a8b82a8f6282e4fbbdb8a7f2622eb97295249d87acea7f5f816f54d347024100eecf9406d7dc49cdfb95ab1eff4064de84c7a30f64b2798936a0d2018ba9eb52e4b636f82e96c49cc63b80b675e91e40d1b2e4017d4b9adaf33ab3d9cf1c214f024100c173704ace742c082323066226a4655226819a85304c542b9dacbeacbf5d1881ee863485fcf6f59f3a604f9b42289282067447f2b13dfeed3eab7851fc81e0550240741fc41f3fc002b382eed8730e33c5d8de40256e4accee846667f536832f711ab1d4590e7db91a8a116ac5bff3be13d3f9243ff2e976662aa9b395d907f8e9c9024046a5696c9ef882363e06c9fa4e2f5b580906452befba03f4a99d0f873697ef1f851d2226ca7934b30b7c3e80cb634a67172bbbf4781735fe3e09263e2dd723e7" diff --git a/vendor/golang.org/x/crypto/openpgp/packet/public_key.go b/vendor/golang.org/x/crypto/openpgp/packet/public_key.go deleted file mode 100644 index ead26233..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/public_key.go +++ /dev/null @@ -1,748 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto" - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rsa" - "crypto/sha1" - _ "crypto/sha256" - _ "crypto/sha512" - "encoding/binary" - "fmt" - "hash" - "io" - "math/big" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/elgamal" - "golang.org/x/crypto/openpgp/errors" -) - -var ( - // NIST curve P-256 - oidCurveP256 []byte = []byte{0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07} - // NIST curve P-384 - oidCurveP384 []byte = []byte{0x2B, 0x81, 0x04, 0x00, 0x22} - // NIST curve P-521 - oidCurveP521 []byte = []byte{0x2B, 0x81, 0x04, 0x00, 0x23} -) - -const maxOIDLength = 8 - -// ecdsaKey stores the algorithm-specific fields for ECDSA keys. -// as defined in RFC 6637, Section 9. -type ecdsaKey struct { - // oid contains the OID byte sequence identifying the elliptic curve used - oid []byte - // p contains the elliptic curve point that represents the public key - p parsedMPI -} - -// parseOID reads the OID for the curve as defined in RFC 6637, Section 9. -func parseOID(r io.Reader) (oid []byte, err error) { - buf := make([]byte, maxOIDLength) - if _, err = readFull(r, buf[:1]); err != nil { - return - } - oidLen := buf[0] - if int(oidLen) > len(buf) { - err = errors.UnsupportedError("invalid oid length: " + strconv.Itoa(int(oidLen))) - return - } - oid = buf[:oidLen] - _, err = readFull(r, oid) - return -} - -func (f *ecdsaKey) parse(r io.Reader) (err error) { - if f.oid, err = parseOID(r); err != nil { - return err - } - f.p.bytes, f.p.bitLength, err = readMPI(r) - return -} - -func (f *ecdsaKey) serialize(w io.Writer) (err error) { - buf := make([]byte, maxOIDLength+1) - buf[0] = byte(len(f.oid)) - copy(buf[1:], f.oid) - if _, err = w.Write(buf[:len(f.oid)+1]); err != nil { - return - } - return writeMPIs(w, f.p) -} - -func (f *ecdsaKey) newECDSA() (*ecdsa.PublicKey, error) { - var c elliptic.Curve - if bytes.Equal(f.oid, oidCurveP256) { - c = elliptic.P256() - } else if bytes.Equal(f.oid, oidCurveP384) { - c = elliptic.P384() - } else if bytes.Equal(f.oid, oidCurveP521) { - c = elliptic.P521() - } else { - return nil, errors.UnsupportedError(fmt.Sprintf("unsupported oid: %x", f.oid)) - } - x, y := elliptic.Unmarshal(c, f.p.bytes) - if x == nil { - return nil, errors.UnsupportedError("failed to parse EC point") - } - return &ecdsa.PublicKey{Curve: c, X: x, Y: y}, nil -} - -func (f *ecdsaKey) byteLen() int { - return 1 + len(f.oid) + 2 + len(f.p.bytes) -} - -type kdfHashFunction byte -type kdfAlgorithm byte - -// ecdhKdf stores key derivation function parameters -// used for ECDH encryption. See RFC 6637, Section 9. -type ecdhKdf struct { - KdfHash kdfHashFunction - KdfAlgo kdfAlgorithm -} - -func (f *ecdhKdf) parse(r io.Reader) (err error) { - buf := make([]byte, 1) - if _, err = readFull(r, buf); err != nil { - return - } - kdfLen := int(buf[0]) - if kdfLen < 3 { - return errors.UnsupportedError("Unsupported ECDH KDF length: " + strconv.Itoa(kdfLen)) - } - buf = make([]byte, kdfLen) - if _, err = readFull(r, buf); err != nil { - return - } - reserved := int(buf[0]) - f.KdfHash = kdfHashFunction(buf[1]) - f.KdfAlgo = kdfAlgorithm(buf[2]) - if reserved != 0x01 { - return errors.UnsupportedError("Unsupported KDF reserved field: " + strconv.Itoa(reserved)) - } - return -} - -func (f *ecdhKdf) serialize(w io.Writer) (err error) { - buf := make([]byte, 4) - // See RFC 6637, Section 9, Algorithm-Specific Fields for ECDH keys. - buf[0] = byte(0x03) // Length of the following fields - buf[1] = byte(0x01) // Reserved for future extensions, must be 1 for now - buf[2] = byte(f.KdfHash) - buf[3] = byte(f.KdfAlgo) - _, err = w.Write(buf[:]) - return -} - -func (f *ecdhKdf) byteLen() int { - return 4 -} - -// PublicKey represents an OpenPGP public key. See RFC 4880, section 5.5.2. -type PublicKey struct { - CreationTime time.Time - PubKeyAlgo PublicKeyAlgorithm - PublicKey interface{} // *rsa.PublicKey, *dsa.PublicKey or *ecdsa.PublicKey - Fingerprint [20]byte - KeyId uint64 - IsSubkey bool - - n, e, p, q, g, y parsedMPI - - // RFC 6637 fields - ec *ecdsaKey - ecdh *ecdhKdf -} - -// signingKey provides a convenient abstraction over signature verification -// for v3 and v4 public keys. -type signingKey interface { - SerializeSignaturePrefix(io.Writer) - serializeWithoutHeaders(io.Writer) error -} - -func fromBig(n *big.Int) parsedMPI { - return parsedMPI{ - bytes: n.Bytes(), - bitLength: uint16(n.BitLen()), - } -} - -// NewRSAPublicKey returns a PublicKey that wraps the given rsa.PublicKey. -func NewRSAPublicKey(creationTime time.Time, pub *rsa.PublicKey) *PublicKey { - pk := &PublicKey{ - CreationTime: creationTime, - PubKeyAlgo: PubKeyAlgoRSA, - PublicKey: pub, - n: fromBig(pub.N), - e: fromBig(big.NewInt(int64(pub.E))), - } - - pk.setFingerPrintAndKeyId() - return pk -} - -// NewDSAPublicKey returns a PublicKey that wraps the given dsa.PublicKey. -func NewDSAPublicKey(creationTime time.Time, pub *dsa.PublicKey) *PublicKey { - pk := &PublicKey{ - CreationTime: creationTime, - PubKeyAlgo: PubKeyAlgoDSA, - PublicKey: pub, - p: fromBig(pub.P), - q: fromBig(pub.Q), - g: fromBig(pub.G), - y: fromBig(pub.Y), - } - - pk.setFingerPrintAndKeyId() - return pk -} - -// NewElGamalPublicKey returns a PublicKey that wraps the given elgamal.PublicKey. -func NewElGamalPublicKey(creationTime time.Time, pub *elgamal.PublicKey) *PublicKey { - pk := &PublicKey{ - CreationTime: creationTime, - PubKeyAlgo: PubKeyAlgoElGamal, - PublicKey: pub, - p: fromBig(pub.P), - g: fromBig(pub.G), - y: fromBig(pub.Y), - } - - pk.setFingerPrintAndKeyId() - return pk -} - -func NewECDSAPublicKey(creationTime time.Time, pub *ecdsa.PublicKey) *PublicKey { - pk := &PublicKey{ - CreationTime: creationTime, - PubKeyAlgo: PubKeyAlgoECDSA, - PublicKey: pub, - ec: new(ecdsaKey), - } - - switch pub.Curve { - case elliptic.P256(): - pk.ec.oid = oidCurveP256 - case elliptic.P384(): - pk.ec.oid = oidCurveP384 - case elliptic.P521(): - pk.ec.oid = oidCurveP521 - default: - panic("unknown elliptic curve") - } - - pk.ec.p.bytes = elliptic.Marshal(pub.Curve, pub.X, pub.Y) - pk.ec.p.bitLength = uint16(8 * len(pk.ec.p.bytes)) - - pk.setFingerPrintAndKeyId() - return pk -} - -func (pk *PublicKey) parse(r io.Reader) (err error) { - // RFC 4880, section 5.5.2 - var buf [6]byte - _, err = readFull(r, buf[:]) - if err != nil { - return - } - if buf[0] != 4 { - return errors.UnsupportedError("public key version") - } - pk.CreationTime = time.Unix(int64(uint32(buf[1])<<24|uint32(buf[2])<<16|uint32(buf[3])<<8|uint32(buf[4])), 0) - pk.PubKeyAlgo = PublicKeyAlgorithm(buf[5]) - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - err = pk.parseRSA(r) - case PubKeyAlgoDSA: - err = pk.parseDSA(r) - case PubKeyAlgoElGamal: - err = pk.parseElGamal(r) - case PubKeyAlgoECDSA: - pk.ec = new(ecdsaKey) - if err = pk.ec.parse(r); err != nil { - return err - } - pk.PublicKey, err = pk.ec.newECDSA() - case PubKeyAlgoECDH: - pk.ec = new(ecdsaKey) - if err = pk.ec.parse(r); err != nil { - return - } - pk.ecdh = new(ecdhKdf) - if err = pk.ecdh.parse(r); err != nil { - return - } - // The ECDH key is stored in an ecdsa.PublicKey for convenience. - pk.PublicKey, err = pk.ec.newECDSA() - default: - err = errors.UnsupportedError("public key type: " + strconv.Itoa(int(pk.PubKeyAlgo))) - } - if err != nil { - return - } - - pk.setFingerPrintAndKeyId() - return -} - -func (pk *PublicKey) setFingerPrintAndKeyId() { - // RFC 4880, section 12.2 - fingerPrint := sha1.New() - pk.SerializeSignaturePrefix(fingerPrint) - pk.serializeWithoutHeaders(fingerPrint) - copy(pk.Fingerprint[:], fingerPrint.Sum(nil)) - pk.KeyId = binary.BigEndian.Uint64(pk.Fingerprint[12:20]) -} - -// parseRSA parses RSA public key material from the given Reader. See RFC 4880, -// section 5.5.2. -func (pk *PublicKey) parseRSA(r io.Reader) (err error) { - pk.n.bytes, pk.n.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.e.bytes, pk.e.bitLength, err = readMPI(r) - if err != nil { - return - } - - if len(pk.e.bytes) > 3 { - err = errors.UnsupportedError("large public exponent") - return - } - rsa := &rsa.PublicKey{ - N: new(big.Int).SetBytes(pk.n.bytes), - E: 0, - } - for i := 0; i < len(pk.e.bytes); i++ { - rsa.E <<= 8 - rsa.E |= int(pk.e.bytes[i]) - } - pk.PublicKey = rsa - return -} - -// parseDSA parses DSA public key material from the given Reader. See RFC 4880, -// section 5.5.2. -func (pk *PublicKey) parseDSA(r io.Reader) (err error) { - pk.p.bytes, pk.p.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.q.bytes, pk.q.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.g.bytes, pk.g.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.y.bytes, pk.y.bitLength, err = readMPI(r) - if err != nil { - return - } - - dsa := new(dsa.PublicKey) - dsa.P = new(big.Int).SetBytes(pk.p.bytes) - dsa.Q = new(big.Int).SetBytes(pk.q.bytes) - dsa.G = new(big.Int).SetBytes(pk.g.bytes) - dsa.Y = new(big.Int).SetBytes(pk.y.bytes) - pk.PublicKey = dsa - return -} - -// parseElGamal parses ElGamal public key material from the given Reader. See -// RFC 4880, section 5.5.2. -func (pk *PublicKey) parseElGamal(r io.Reader) (err error) { - pk.p.bytes, pk.p.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.g.bytes, pk.g.bitLength, err = readMPI(r) - if err != nil { - return - } - pk.y.bytes, pk.y.bitLength, err = readMPI(r) - if err != nil { - return - } - - elgamal := new(elgamal.PublicKey) - elgamal.P = new(big.Int).SetBytes(pk.p.bytes) - elgamal.G = new(big.Int).SetBytes(pk.g.bytes) - elgamal.Y = new(big.Int).SetBytes(pk.y.bytes) - pk.PublicKey = elgamal - return -} - -// SerializeSignaturePrefix writes the prefix for this public key to the given Writer. -// The prefix is used when calculating a signature over this public key. See -// RFC 4880, section 5.2.4. -func (pk *PublicKey) SerializeSignaturePrefix(h io.Writer) { - var pLength uint16 - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - pLength += 2 + uint16(len(pk.n.bytes)) - pLength += 2 + uint16(len(pk.e.bytes)) - case PubKeyAlgoDSA: - pLength += 2 + uint16(len(pk.p.bytes)) - pLength += 2 + uint16(len(pk.q.bytes)) - pLength += 2 + uint16(len(pk.g.bytes)) - pLength += 2 + uint16(len(pk.y.bytes)) - case PubKeyAlgoElGamal: - pLength += 2 + uint16(len(pk.p.bytes)) - pLength += 2 + uint16(len(pk.g.bytes)) - pLength += 2 + uint16(len(pk.y.bytes)) - case PubKeyAlgoECDSA: - pLength += uint16(pk.ec.byteLen()) - case PubKeyAlgoECDH: - pLength += uint16(pk.ec.byteLen()) - pLength += uint16(pk.ecdh.byteLen()) - default: - panic("unknown public key algorithm") - } - pLength += 6 - h.Write([]byte{0x99, byte(pLength >> 8), byte(pLength)}) - return -} - -func (pk *PublicKey) Serialize(w io.Writer) (err error) { - length := 6 // 6 byte header - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - length += 2 + len(pk.n.bytes) - length += 2 + len(pk.e.bytes) - case PubKeyAlgoDSA: - length += 2 + len(pk.p.bytes) - length += 2 + len(pk.q.bytes) - length += 2 + len(pk.g.bytes) - length += 2 + len(pk.y.bytes) - case PubKeyAlgoElGamal: - length += 2 + len(pk.p.bytes) - length += 2 + len(pk.g.bytes) - length += 2 + len(pk.y.bytes) - case PubKeyAlgoECDSA: - length += pk.ec.byteLen() - case PubKeyAlgoECDH: - length += pk.ec.byteLen() - length += pk.ecdh.byteLen() - default: - panic("unknown public key algorithm") - } - - packetType := packetTypePublicKey - if pk.IsSubkey { - packetType = packetTypePublicSubkey - } - err = serializeHeader(w, packetType, length) - if err != nil { - return - } - return pk.serializeWithoutHeaders(w) -} - -// serializeWithoutHeaders marshals the PublicKey to w in the form of an -// OpenPGP public key packet, not including the packet header. -func (pk *PublicKey) serializeWithoutHeaders(w io.Writer) (err error) { - var buf [6]byte - buf[0] = 4 - t := uint32(pk.CreationTime.Unix()) - buf[1] = byte(t >> 24) - buf[2] = byte(t >> 16) - buf[3] = byte(t >> 8) - buf[4] = byte(t) - buf[5] = byte(pk.PubKeyAlgo) - - _, err = w.Write(buf[:]) - if err != nil { - return - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - return writeMPIs(w, pk.n, pk.e) - case PubKeyAlgoDSA: - return writeMPIs(w, pk.p, pk.q, pk.g, pk.y) - case PubKeyAlgoElGamal: - return writeMPIs(w, pk.p, pk.g, pk.y) - case PubKeyAlgoECDSA: - return pk.ec.serialize(w) - case PubKeyAlgoECDH: - if err = pk.ec.serialize(w); err != nil { - return - } - return pk.ecdh.serialize(w) - } - return errors.InvalidArgumentError("bad public-key algorithm") -} - -// CanSign returns true iff this public key can generate signatures -func (pk *PublicKey) CanSign() bool { - return pk.PubKeyAlgo != PubKeyAlgoRSAEncryptOnly && pk.PubKeyAlgo != PubKeyAlgoElGamal -} - -// VerifySignature returns nil iff sig is a valid signature, made by this -// public key, of the data hashed into signed. signed is mutated by this call. -func (pk *PublicKey) VerifySignature(signed hash.Hash, sig *Signature) (err error) { - if !pk.CanSign() { - return errors.InvalidArgumentError("public key cannot generate signatures") - } - - signed.Write(sig.HashSuffix) - hashBytes := signed.Sum(nil) - - if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] { - return errors.SignatureError("hash tag doesn't match") - } - - if pk.PubKeyAlgo != sig.PubKeyAlgo { - return errors.InvalidArgumentError("public key and signature use different algorithms") - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - rsaPublicKey, _ := pk.PublicKey.(*rsa.PublicKey) - err = rsa.VerifyPKCS1v15(rsaPublicKey, sig.Hash, hashBytes, sig.RSASignature.bytes) - if err != nil { - return errors.SignatureError("RSA verification failure") - } - return nil - case PubKeyAlgoDSA: - dsaPublicKey, _ := pk.PublicKey.(*dsa.PublicKey) - // Need to truncate hashBytes to match FIPS 186-3 section 4.6. - subgroupSize := (dsaPublicKey.Q.BitLen() + 7) / 8 - if len(hashBytes) > subgroupSize { - hashBytes = hashBytes[:subgroupSize] - } - if !dsa.Verify(dsaPublicKey, hashBytes, new(big.Int).SetBytes(sig.DSASigR.bytes), new(big.Int).SetBytes(sig.DSASigS.bytes)) { - return errors.SignatureError("DSA verification failure") - } - return nil - case PubKeyAlgoECDSA: - ecdsaPublicKey := pk.PublicKey.(*ecdsa.PublicKey) - if !ecdsa.Verify(ecdsaPublicKey, hashBytes, new(big.Int).SetBytes(sig.ECDSASigR.bytes), new(big.Int).SetBytes(sig.ECDSASigS.bytes)) { - return errors.SignatureError("ECDSA verification failure") - } - return nil - default: - return errors.SignatureError("Unsupported public key algorithm used in signature") - } -} - -// VerifySignatureV3 returns nil iff sig is a valid signature, made by this -// public key, of the data hashed into signed. signed is mutated by this call. -func (pk *PublicKey) VerifySignatureV3(signed hash.Hash, sig *SignatureV3) (err error) { - if !pk.CanSign() { - return errors.InvalidArgumentError("public key cannot generate signatures") - } - - suffix := make([]byte, 5) - suffix[0] = byte(sig.SigType) - binary.BigEndian.PutUint32(suffix[1:], uint32(sig.CreationTime.Unix())) - signed.Write(suffix) - hashBytes := signed.Sum(nil) - - if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] { - return errors.SignatureError("hash tag doesn't match") - } - - if pk.PubKeyAlgo != sig.PubKeyAlgo { - return errors.InvalidArgumentError("public key and signature use different algorithms") - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - rsaPublicKey := pk.PublicKey.(*rsa.PublicKey) - if err = rsa.VerifyPKCS1v15(rsaPublicKey, sig.Hash, hashBytes, sig.RSASignature.bytes); err != nil { - return errors.SignatureError("RSA verification failure") - } - return - case PubKeyAlgoDSA: - dsaPublicKey := pk.PublicKey.(*dsa.PublicKey) - // Need to truncate hashBytes to match FIPS 186-3 section 4.6. - subgroupSize := (dsaPublicKey.Q.BitLen() + 7) / 8 - if len(hashBytes) > subgroupSize { - hashBytes = hashBytes[:subgroupSize] - } - if !dsa.Verify(dsaPublicKey, hashBytes, new(big.Int).SetBytes(sig.DSASigR.bytes), new(big.Int).SetBytes(sig.DSASigS.bytes)) { - return errors.SignatureError("DSA verification failure") - } - return nil - default: - panic("shouldn't happen") - } -} - -// keySignatureHash returns a Hash of the message that needs to be signed for -// pk to assert a subkey relationship to signed. -func keySignatureHash(pk, signed signingKey, hashFunc crypto.Hash) (h hash.Hash, err error) { - if !hashFunc.Available() { - return nil, errors.UnsupportedError("hash function") - } - h = hashFunc.New() - - // RFC 4880, section 5.2.4 - pk.SerializeSignaturePrefix(h) - pk.serializeWithoutHeaders(h) - signed.SerializeSignaturePrefix(h) - signed.serializeWithoutHeaders(h) - return -} - -// VerifyKeySignature returns nil iff sig is a valid signature, made by this -// public key, of signed. -func (pk *PublicKey) VerifyKeySignature(signed *PublicKey, sig *Signature) error { - h, err := keySignatureHash(pk, signed, sig.Hash) - if err != nil { - return err - } - if err = pk.VerifySignature(h, sig); err != nil { - return err - } - - if sig.FlagSign { - // Signing subkeys must be cross-signed. See - // https://www.gnupg.org/faq/subkey-cross-certify.html. - if sig.EmbeddedSignature == nil { - return errors.StructuralError("signing subkey is missing cross-signature") - } - // Verify the cross-signature. This is calculated over the same - // data as the main signature, so we cannot just recursively - // call signed.VerifyKeySignature(...) - if h, err = keySignatureHash(pk, signed, sig.EmbeddedSignature.Hash); err != nil { - return errors.StructuralError("error while hashing for cross-signature: " + err.Error()) - } - if err := signed.VerifySignature(h, sig.EmbeddedSignature); err != nil { - return errors.StructuralError("error while verifying cross-signature: " + err.Error()) - } - } - - return nil -} - -func keyRevocationHash(pk signingKey, hashFunc crypto.Hash) (h hash.Hash, err error) { - if !hashFunc.Available() { - return nil, errors.UnsupportedError("hash function") - } - h = hashFunc.New() - - // RFC 4880, section 5.2.4 - pk.SerializeSignaturePrefix(h) - pk.serializeWithoutHeaders(h) - - return -} - -// VerifyRevocationSignature returns nil iff sig is a valid signature, made by this -// public key. -func (pk *PublicKey) VerifyRevocationSignature(sig *Signature) (err error) { - h, err := keyRevocationHash(pk, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignature(h, sig) -} - -// userIdSignatureHash returns a Hash of the message that needs to be signed -// to assert that pk is a valid key for id. -func userIdSignatureHash(id string, pk *PublicKey, hashFunc crypto.Hash) (h hash.Hash, err error) { - if !hashFunc.Available() { - return nil, errors.UnsupportedError("hash function") - } - h = hashFunc.New() - - // RFC 4880, section 5.2.4 - pk.SerializeSignaturePrefix(h) - pk.serializeWithoutHeaders(h) - - var buf [5]byte - buf[0] = 0xb4 - buf[1] = byte(len(id) >> 24) - buf[2] = byte(len(id) >> 16) - buf[3] = byte(len(id) >> 8) - buf[4] = byte(len(id)) - h.Write(buf[:]) - h.Write([]byte(id)) - - return -} - -// VerifyUserIdSignature returns nil iff sig is a valid signature, made by this -// public key, that id is the identity of pub. -func (pk *PublicKey) VerifyUserIdSignature(id string, pub *PublicKey, sig *Signature) (err error) { - h, err := userIdSignatureHash(id, pub, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignature(h, sig) -} - -// VerifyUserIdSignatureV3 returns nil iff sig is a valid signature, made by this -// public key, that id is the identity of pub. -func (pk *PublicKey) VerifyUserIdSignatureV3(id string, pub *PublicKey, sig *SignatureV3) (err error) { - h, err := userIdSignatureV3Hash(id, pub, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignatureV3(h, sig) -} - -// KeyIdString returns the public key's fingerprint in capital hex -// (e.g. "6C7EE1B8621CC013"). -func (pk *PublicKey) KeyIdString() string { - return fmt.Sprintf("%X", pk.Fingerprint[12:20]) -} - -// KeyIdShortString returns the short form of public key's fingerprint -// in capital hex, as shown by gpg --list-keys (e.g. "621CC013"). -func (pk *PublicKey) KeyIdShortString() string { - return fmt.Sprintf("%X", pk.Fingerprint[16:20]) -} - -// A parsedMPI is used to store the contents of a big integer, along with the -// bit length that was specified in the original input. This allows the MPI to -// be reserialized exactly. -type parsedMPI struct { - bytes []byte - bitLength uint16 -} - -// writeMPIs is a utility function for serializing several big integers to the -// given Writer. -func writeMPIs(w io.Writer, mpis ...parsedMPI) (err error) { - for _, mpi := range mpis { - err = writeMPI(w, mpi.bitLength, mpi.bytes) - if err != nil { - return - } - } - return -} - -// BitLength returns the bit length for the given public key. -func (pk *PublicKey) BitLength() (bitLength uint16, err error) { - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - bitLength = pk.n.bitLength - case PubKeyAlgoDSA: - bitLength = pk.p.bitLength - case PubKeyAlgoElGamal: - bitLength = pk.p.bitLength - default: - err = errors.InvalidArgumentError("bad public-key algorithm") - } - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/public_key_test.go b/vendor/golang.org/x/crypto/openpgp/packet/public_key_test.go deleted file mode 100644 index 7ad7d918..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/public_key_test.go +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "encoding/hex" - "testing" - "time" -) - -var pubKeyTests = []struct { - hexData string - hexFingerprint string - creationTime time.Time - pubKeyAlgo PublicKeyAlgorithm - keyId uint64 - keyIdString string - keyIdShort string -}{ - {rsaPkDataHex, rsaFingerprintHex, time.Unix(0x4d3c5c10, 0), PubKeyAlgoRSA, 0xa34d7e18c20c31bb, "A34D7E18C20C31BB", "C20C31BB"}, - {dsaPkDataHex, dsaFingerprintHex, time.Unix(0x4d432f89, 0), PubKeyAlgoDSA, 0x8e8fbe54062f19ed, "8E8FBE54062F19ED", "062F19ED"}, - {ecdsaPkDataHex, ecdsaFingerprintHex, time.Unix(0x5071c294, 0), PubKeyAlgoECDSA, 0x43fe956c542ca00b, "43FE956C542CA00B", "542CA00B"}, -} - -func TestPublicKeyRead(t *testing.T) { - for i, test := range pubKeyTests { - packet, err := Read(readerFromHex(test.hexData)) - if err != nil { - t.Errorf("#%d: Read error: %s", i, err) - continue - } - pk, ok := packet.(*PublicKey) - if !ok { - t.Errorf("#%d: failed to parse, got: %#v", i, packet) - continue - } - if pk.PubKeyAlgo != test.pubKeyAlgo { - t.Errorf("#%d: bad public key algorithm got:%x want:%x", i, pk.PubKeyAlgo, test.pubKeyAlgo) - } - if !pk.CreationTime.Equal(test.creationTime) { - t.Errorf("#%d: bad creation time got:%v want:%v", i, pk.CreationTime, test.creationTime) - } - expectedFingerprint, _ := hex.DecodeString(test.hexFingerprint) - if !bytes.Equal(expectedFingerprint, pk.Fingerprint[:]) { - t.Errorf("#%d: bad fingerprint got:%x want:%x", i, pk.Fingerprint[:], expectedFingerprint) - } - if pk.KeyId != test.keyId { - t.Errorf("#%d: bad keyid got:%x want:%x", i, pk.KeyId, test.keyId) - } - if g, e := pk.KeyIdString(), test.keyIdString; g != e { - t.Errorf("#%d: bad KeyIdString got:%q want:%q", i, g, e) - } - if g, e := pk.KeyIdShortString(), test.keyIdShort; g != e { - t.Errorf("#%d: bad KeyIdShortString got:%q want:%q", i, g, e) - } - } -} - -func TestPublicKeySerialize(t *testing.T) { - for i, test := range pubKeyTests { - packet, err := Read(readerFromHex(test.hexData)) - if err != nil { - t.Errorf("#%d: Read error: %s", i, err) - continue - } - pk, ok := packet.(*PublicKey) - if !ok { - t.Errorf("#%d: failed to parse, got: %#v", i, packet) - continue - } - serializeBuf := bytes.NewBuffer(nil) - err = pk.Serialize(serializeBuf) - if err != nil { - t.Errorf("#%d: failed to serialize: %s", i, err) - continue - } - - packet, err = Read(serializeBuf) - if err != nil { - t.Errorf("#%d: Read error (from serialized data): %s", i, err) - continue - } - pk, ok = packet.(*PublicKey) - if !ok { - t.Errorf("#%d: failed to parse serialized data, got: %#v", i, packet) - continue - } - } -} - -func TestEcc384Serialize(t *testing.T) { - r := readerFromHex(ecc384PubHex) - var w bytes.Buffer - for i := 0; i < 2; i++ { - // Public key - p, err := Read(r) - if err != nil { - t.Error(err) - } - pubkey := p.(*PublicKey) - if !bytes.Equal(pubkey.ec.oid, []byte{0x2b, 0x81, 0x04, 0x00, 0x22}) { - t.Errorf("Unexpected pubkey OID: %x", pubkey.ec.oid) - } - if !bytes.Equal(pubkey.ec.p.bytes[:5], []byte{0x04, 0xf6, 0xb8, 0xc5, 0xac}) { - t.Errorf("Unexpected pubkey P[:5]: %x", pubkey.ec.p.bytes) - } - if pubkey.KeyId != 0x098033880F54719F { - t.Errorf("Unexpected pubkey ID: %x", pubkey.KeyId) - } - err = pubkey.Serialize(&w) - if err != nil { - t.Error(err) - } - // User ID - p, err = Read(r) - if err != nil { - t.Error(err) - } - uid := p.(*UserId) - if uid.Id != "ec_dsa_dh_384 " { - t.Error("Unexpected UID:", uid.Id) - } - err = uid.Serialize(&w) - if err != nil { - t.Error(err) - } - // User ID Sig - p, err = Read(r) - if err != nil { - t.Error(err) - } - uidSig := p.(*Signature) - err = pubkey.VerifyUserIdSignature(uid.Id, pubkey, uidSig) - if err != nil { - t.Error(err, ": UID") - } - err = uidSig.Serialize(&w) - if err != nil { - t.Error(err) - } - // Subkey - p, err = Read(r) - if err != nil { - t.Error(err) - } - subkey := p.(*PublicKey) - if !bytes.Equal(subkey.ec.oid, []byte{0x2b, 0x81, 0x04, 0x00, 0x22}) { - t.Errorf("Unexpected subkey OID: %x", subkey.ec.oid) - } - if !bytes.Equal(subkey.ec.p.bytes[:5], []byte{0x04, 0x2f, 0xaa, 0x84, 0x02}) { - t.Errorf("Unexpected subkey P[:5]: %x", subkey.ec.p.bytes) - } - if subkey.ecdh.KdfHash != 0x09 { - t.Error("Expected KDF hash function SHA384 (0x09), got", subkey.ecdh.KdfHash) - } - if subkey.ecdh.KdfAlgo != 0x09 { - t.Error("Expected KDF symmetric alg AES256 (0x09), got", subkey.ecdh.KdfAlgo) - } - if subkey.KeyId != 0xAA8B938F9A201946 { - t.Errorf("Unexpected subkey ID: %x", subkey.KeyId) - } - err = subkey.Serialize(&w) - if err != nil { - t.Error(err) - } - // Subkey Sig - p, err = Read(r) - if err != nil { - t.Error(err) - } - subkeySig := p.(*Signature) - err = pubkey.VerifyKeySignature(subkey, subkeySig) - if err != nil { - t.Error(err) - } - err = subkeySig.Serialize(&w) - if err != nil { - t.Error(err) - } - // Now read back what we've written again - r = bytes.NewBuffer(w.Bytes()) - w.Reset() - } -} - -const rsaFingerprintHex = "5fb74b1d03b1e3cb31bc2f8aa34d7e18c20c31bb" - -const rsaPkDataHex = "988d044d3c5c10010400b1d13382944bd5aba23a4312968b5095d14f947f600eb478e14a6fcb16b0e0cac764884909c020bc495cfcc39a935387c661507bdb236a0612fb582cac3af9b29cc2c8c70090616c41b662f4da4c1201e195472eb7f4ae1ccbcbf9940fe21d985e379a5563dde5b9a23d35f1cfaa5790da3b79db26f23695107bfaca8e7b5bcd0011010001" - -const dsaFingerprintHex = "eece4c094db002103714c63c8e8fbe54062f19ed" - -const dsaPkDataHex = "9901a2044d432f89110400cd581334f0d7a1e1bdc8b9d6d8c0baf68793632735d2bb0903224cbaa1dfbf35a60ee7a13b92643421e1eb41aa8d79bea19a115a677f6b8ba3c7818ce53a6c2a24a1608bd8b8d6e55c5090cbde09dd26e356267465ae25e69ec8bdd57c7bbb2623e4d73336f73a0a9098f7f16da2e25252130fd694c0e8070c55a812a423ae7f00a0ebf50e70c2f19c3520a551bd4b08d30f23530d3d03ff7d0bf4a53a64a09dc5e6e6e35854b7d70c882b0c60293401958b1bd9e40abec3ea05ba87cf64899299d4bd6aa7f459c201d3fbbd6c82004bdc5e8a9eb8082d12054cc90fa9d4ec251a843236a588bf49552441817436c4f43326966fe85447d4e6d0acf8fa1ef0f014730770603ad7634c3088dc52501c237328417c31c89ed70400b2f1a98b0bf42f11fefc430704bebbaa41d9f355600c3facee1e490f64208e0e094ea55e3a598a219a58500bf78ac677b670a14f4e47e9cf8eab4f368cc1ddcaa18cc59309d4cc62dd4f680e73e6cc3e1ce87a84d0925efbcb26c575c093fc42eecf45135fabf6403a25c2016e1774c0484e440a18319072c617cc97ac0a3bb0" - -const ecdsaFingerprintHex = "9892270b38b8980b05c8d56d43fe956c542ca00b" - -const ecdsaPkDataHex = "9893045071c29413052b8104002304230401f4867769cedfa52c325018896245443968e52e51d0c2df8d939949cb5b330f2921711fbee1c9b9dddb95d15cb0255e99badeddda7cc23d9ddcaacbc290969b9f24019375d61c2e4e3b36953a28d8b2bc95f78c3f1d592fb24499be348656a7b17e3963187b4361afe497bc5f9f81213f04069f8e1fb9e6a6290ae295ca1a92b894396cb4" - -// Source: https://sites.google.com/site/brainhub/pgpecckeys#TOC-ECC-NIST-P-384-key -const ecc384PubHex = `99006f044d53059213052b81040022030304f6b8c5aced5b84ef9f4a209db2e4a9dfb70d28cb8c10ecd57674a9fa5a67389942b62d5e51367df4c7bfd3f8e500feecf07ed265a621a8ebbbe53e947ec78c677eba143bd1533c2b350e1c29f82313e1e1108eba063be1e64b10e6950e799c2db42465635f6473615f64685f333834203c6f70656e70677040627261696e6875622e6f72673e8900cb04101309005305024d530592301480000000002000077072656665727265642d656d61696c2d656e636f64696e67407067702e636f6d7067706d696d65040b090807021901051b03000000021602051e010000000415090a08000a0910098033880f54719fca2b0180aa37350968bd5f115afd8ce7bc7b103822152dbff06d0afcda835329510905b98cb469ba208faab87c7412b799e7b633017f58364ea480e8a1a3f253a0c5f22c446e8be9a9fce6210136ee30811abbd49139de28b5bdf8dc36d06ae748579e9ff503b90073044d53059212052b810400220303042faa84024a20b6735c4897efa5bfb41bf85b7eefeab5ca0cb9ffc8ea04a46acb25534a577694f9e25340a4ab5223a9dd1eda530c8aa2e6718db10d7e672558c7736fe09369ea5739a2a3554bf16d41faa50562f11c6d39bbd5dffb6b9a9ec9180301090989008404181309000c05024d530592051b0c000000000a0910098033880f54719f80970180eee7a6d8fcee41ee4f9289df17f9bcf9d955dca25c583b94336f3a2b2d4986dc5cf417b8d2dc86f741a9e1a6d236c0e3017d1c76575458a0cfb93ae8a2b274fcc65ceecd7a91eec83656ba13219969f06945b48c56bd04152c3a0553c5f2f4bd1267` diff --git a/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go b/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go deleted file mode 100644 index 5daf7b6c..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3.go +++ /dev/null @@ -1,279 +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 packet - -import ( - "crypto" - "crypto/md5" - "crypto/rsa" - "encoding/binary" - "fmt" - "hash" - "io" - "math/big" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/errors" -) - -// PublicKeyV3 represents older, version 3 public keys. These keys are less secure and -// should not be used for signing or encrypting. They are supported here only for -// parsing version 3 key material and validating signatures. -// See RFC 4880, section 5.5.2. -type PublicKeyV3 struct { - CreationTime time.Time - DaysToExpire uint16 - PubKeyAlgo PublicKeyAlgorithm - PublicKey *rsa.PublicKey - Fingerprint [16]byte - KeyId uint64 - IsSubkey bool - - n, e parsedMPI -} - -// newRSAPublicKeyV3 returns a PublicKey that wraps the given rsa.PublicKey. -// Included here for testing purposes only. RFC 4880, section 5.5.2: -// "an implementation MUST NOT generate a V3 key, but MAY accept it." -func newRSAPublicKeyV3(creationTime time.Time, pub *rsa.PublicKey) *PublicKeyV3 { - pk := &PublicKeyV3{ - CreationTime: creationTime, - PublicKey: pub, - n: fromBig(pub.N), - e: fromBig(big.NewInt(int64(pub.E))), - } - - pk.setFingerPrintAndKeyId() - return pk -} - -func (pk *PublicKeyV3) parse(r io.Reader) (err error) { - // RFC 4880, section 5.5.2 - var buf [8]byte - if _, err = readFull(r, buf[:]); err != nil { - return - } - if buf[0] < 2 || buf[0] > 3 { - return errors.UnsupportedError("public key version") - } - pk.CreationTime = time.Unix(int64(uint32(buf[1])<<24|uint32(buf[2])<<16|uint32(buf[3])<<8|uint32(buf[4])), 0) - pk.DaysToExpire = binary.BigEndian.Uint16(buf[5:7]) - pk.PubKeyAlgo = PublicKeyAlgorithm(buf[7]) - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - err = pk.parseRSA(r) - default: - err = errors.UnsupportedError("public key type: " + strconv.Itoa(int(pk.PubKeyAlgo))) - } - if err != nil { - return - } - - pk.setFingerPrintAndKeyId() - return -} - -func (pk *PublicKeyV3) setFingerPrintAndKeyId() { - // RFC 4880, section 12.2 - fingerPrint := md5.New() - fingerPrint.Write(pk.n.bytes) - fingerPrint.Write(pk.e.bytes) - fingerPrint.Sum(pk.Fingerprint[:0]) - pk.KeyId = binary.BigEndian.Uint64(pk.n.bytes[len(pk.n.bytes)-8:]) -} - -// parseRSA parses RSA public key material from the given Reader. See RFC 4880, -// section 5.5.2. -func (pk *PublicKeyV3) parseRSA(r io.Reader) (err error) { - if pk.n.bytes, pk.n.bitLength, err = readMPI(r); err != nil { - return - } - if pk.e.bytes, pk.e.bitLength, err = readMPI(r); err != nil { - return - } - - // RFC 4880 Section 12.2 requires the low 8 bytes of the - // modulus to form the key id. - if len(pk.n.bytes) < 8 { - return errors.StructuralError("v3 public key modulus is too short") - } - if len(pk.e.bytes) > 3 { - err = errors.UnsupportedError("large public exponent") - return - } - rsa := &rsa.PublicKey{N: new(big.Int).SetBytes(pk.n.bytes)} - for i := 0; i < len(pk.e.bytes); i++ { - rsa.E <<= 8 - rsa.E |= int(pk.e.bytes[i]) - } - pk.PublicKey = rsa - return -} - -// SerializeSignaturePrefix writes the prefix for this public key to the given Writer. -// The prefix is used when calculating a signature over this public key. See -// RFC 4880, section 5.2.4. -func (pk *PublicKeyV3) SerializeSignaturePrefix(w io.Writer) { - var pLength uint16 - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - pLength += 2 + uint16(len(pk.n.bytes)) - pLength += 2 + uint16(len(pk.e.bytes)) - default: - panic("unknown public key algorithm") - } - pLength += 6 - w.Write([]byte{0x99, byte(pLength >> 8), byte(pLength)}) - return -} - -func (pk *PublicKeyV3) Serialize(w io.Writer) (err error) { - length := 8 // 8 byte header - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - length += 2 + len(pk.n.bytes) - length += 2 + len(pk.e.bytes) - default: - panic("unknown public key algorithm") - } - - packetType := packetTypePublicKey - if pk.IsSubkey { - packetType = packetTypePublicSubkey - } - if err = serializeHeader(w, packetType, length); err != nil { - return - } - return pk.serializeWithoutHeaders(w) -} - -// serializeWithoutHeaders marshals the PublicKey to w in the form of an -// OpenPGP public key packet, not including the packet header. -func (pk *PublicKeyV3) serializeWithoutHeaders(w io.Writer) (err error) { - var buf [8]byte - // Version 3 - buf[0] = 3 - // Creation time - t := uint32(pk.CreationTime.Unix()) - buf[1] = byte(t >> 24) - buf[2] = byte(t >> 16) - buf[3] = byte(t >> 8) - buf[4] = byte(t) - // Days to expire - buf[5] = byte(pk.DaysToExpire >> 8) - buf[6] = byte(pk.DaysToExpire) - // Public key algorithm - buf[7] = byte(pk.PubKeyAlgo) - - if _, err = w.Write(buf[:]); err != nil { - return - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - return writeMPIs(w, pk.n, pk.e) - } - return errors.InvalidArgumentError("bad public-key algorithm") -} - -// CanSign returns true iff this public key can generate signatures -func (pk *PublicKeyV3) CanSign() bool { - return pk.PubKeyAlgo != PubKeyAlgoRSAEncryptOnly -} - -// VerifySignatureV3 returns nil iff sig is a valid signature, made by this -// public key, of the data hashed into signed. signed is mutated by this call. -func (pk *PublicKeyV3) VerifySignatureV3(signed hash.Hash, sig *SignatureV3) (err error) { - if !pk.CanSign() { - return errors.InvalidArgumentError("public key cannot generate signatures") - } - - suffix := make([]byte, 5) - suffix[0] = byte(sig.SigType) - binary.BigEndian.PutUint32(suffix[1:], uint32(sig.CreationTime.Unix())) - signed.Write(suffix) - hashBytes := signed.Sum(nil) - - if hashBytes[0] != sig.HashTag[0] || hashBytes[1] != sig.HashTag[1] { - return errors.SignatureError("hash tag doesn't match") - } - - if pk.PubKeyAlgo != sig.PubKeyAlgo { - return errors.InvalidArgumentError("public key and signature use different algorithms") - } - - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - if err = rsa.VerifyPKCS1v15(pk.PublicKey, sig.Hash, hashBytes, sig.RSASignature.bytes); err != nil { - return errors.SignatureError("RSA verification failure") - } - return - default: - // V3 public keys only support RSA. - panic("shouldn't happen") - } -} - -// VerifyUserIdSignatureV3 returns nil iff sig is a valid signature, made by this -// public key, that id is the identity of pub. -func (pk *PublicKeyV3) VerifyUserIdSignatureV3(id string, pub *PublicKeyV3, sig *SignatureV3) (err error) { - h, err := userIdSignatureV3Hash(id, pk, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignatureV3(h, sig) -} - -// VerifyKeySignatureV3 returns nil iff sig is a valid signature, made by this -// public key, of signed. -func (pk *PublicKeyV3) VerifyKeySignatureV3(signed *PublicKeyV3, sig *SignatureV3) (err error) { - h, err := keySignatureHash(pk, signed, sig.Hash) - if err != nil { - return err - } - return pk.VerifySignatureV3(h, sig) -} - -// userIdSignatureV3Hash returns a Hash of the message that needs to be signed -// to assert that pk is a valid key for id. -func userIdSignatureV3Hash(id string, pk signingKey, hfn crypto.Hash) (h hash.Hash, err error) { - if !hfn.Available() { - return nil, errors.UnsupportedError("hash function") - } - h = hfn.New() - - // RFC 4880, section 5.2.4 - pk.SerializeSignaturePrefix(h) - pk.serializeWithoutHeaders(h) - - h.Write([]byte(id)) - - return -} - -// KeyIdString returns the public key's fingerprint in capital hex -// (e.g. "6C7EE1B8621CC013"). -func (pk *PublicKeyV3) KeyIdString() string { - return fmt.Sprintf("%X", pk.KeyId) -} - -// KeyIdShortString returns the short form of public key's fingerprint -// in capital hex, as shown by gpg --list-keys (e.g. "621CC013"). -func (pk *PublicKeyV3) KeyIdShortString() string { - return fmt.Sprintf("%X", pk.KeyId&0xFFFFFFFF) -} - -// BitLength returns the bit length for the given public key. -func (pk *PublicKeyV3) BitLength() (bitLength uint16, err error) { - switch pk.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSAEncryptOnly, PubKeyAlgoRSASignOnly: - bitLength = pk.n.bitLength - default: - err = errors.InvalidArgumentError("bad public-key algorithm") - } - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3_test.go b/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3_test.go deleted file mode 100644 index e0640590..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/public_key_v3_test.go +++ /dev/null @@ -1,82 +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 packet - -import ( - "bytes" - "encoding/hex" - "testing" - "time" -) - -var pubKeyV3Test = struct { - hexFingerprint string - creationTime time.Time - pubKeyAlgo PublicKeyAlgorithm - keyId uint64 - keyIdString string - keyIdShort string -}{ - "103BECF5BD1E837C89D19E98487767F7", - time.Unix(779753634, 0), - PubKeyAlgoRSA, - 0xDE0F188A5DA5E3C9, - "DE0F188A5DA5E3C9", - "5DA5E3C9"} - -func TestPublicKeyV3Read(t *testing.T) { - i, test := 0, pubKeyV3Test - packet, err := Read(v3KeyReader(t)) - if err != nil { - t.Fatalf("#%d: Read error: %s", i, err) - } - pk, ok := packet.(*PublicKeyV3) - if !ok { - t.Fatalf("#%d: failed to parse, got: %#v", i, packet) - } - if pk.PubKeyAlgo != test.pubKeyAlgo { - t.Errorf("#%d: bad public key algorithm got:%x want:%x", i, pk.PubKeyAlgo, test.pubKeyAlgo) - } - if !pk.CreationTime.Equal(test.creationTime) { - t.Errorf("#%d: bad creation time got:%v want:%v", i, pk.CreationTime, test.creationTime) - } - expectedFingerprint, _ := hex.DecodeString(test.hexFingerprint) - if !bytes.Equal(expectedFingerprint, pk.Fingerprint[:]) { - t.Errorf("#%d: bad fingerprint got:%x want:%x", i, pk.Fingerprint[:], expectedFingerprint) - } - if pk.KeyId != test.keyId { - t.Errorf("#%d: bad keyid got:%x want:%x", i, pk.KeyId, test.keyId) - } - if g, e := pk.KeyIdString(), test.keyIdString; g != e { - t.Errorf("#%d: bad KeyIdString got:%q want:%q", i, g, e) - } - if g, e := pk.KeyIdShortString(), test.keyIdShort; g != e { - t.Errorf("#%d: bad KeyIdShortString got:%q want:%q", i, g, e) - } -} - -func TestPublicKeyV3Serialize(t *testing.T) { - //for i, test := range pubKeyV3Tests { - i := 0 - packet, err := Read(v3KeyReader(t)) - if err != nil { - t.Fatalf("#%d: Read error: %s", i, err) - } - pk, ok := packet.(*PublicKeyV3) - if !ok { - t.Fatalf("#%d: failed to parse, got: %#v", i, packet) - } - var serializeBuf bytes.Buffer - if err = pk.Serialize(&serializeBuf); err != nil { - t.Fatalf("#%d: failed to serialize: %s", i, err) - } - - if packet, err = Read(bytes.NewBuffer(serializeBuf.Bytes())); err != nil { - t.Fatalf("#%d: Read error (from serialized data): %s", i, err) - } - if pk, ok = packet.(*PublicKeyV3); !ok { - t.Fatalf("#%d: failed to parse serialized data, got: %#v", i, packet) - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/reader.go b/vendor/golang.org/x/crypto/openpgp/packet/reader.go deleted file mode 100644 index 34bc7c61..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/reader.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "golang.org/x/crypto/openpgp/errors" - "io" -) - -// Reader reads packets from an io.Reader and allows packets to be 'unread' so -// that they result from the next call to Next. -type Reader struct { - q []Packet - readers []io.Reader -} - -// New io.Readers are pushed when a compressed or encrypted packet is processed -// and recursively treated as a new source of packets. However, a carefully -// crafted packet can trigger an infinite recursive sequence of packets. See -// http://mumble.net/~campbell/misc/pgp-quine -// https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-4402 -// This constant limits the number of recursive packets that may be pushed. -const maxReaders = 32 - -// Next returns the most recently unread Packet, or reads another packet from -// the top-most io.Reader. Unknown packet types are skipped. -func (r *Reader) Next() (p Packet, err error) { - if len(r.q) > 0 { - p = r.q[len(r.q)-1] - r.q = r.q[:len(r.q)-1] - return - } - - for len(r.readers) > 0 { - p, err = Read(r.readers[len(r.readers)-1]) - if err == nil { - return - } - if err == io.EOF { - r.readers = r.readers[:len(r.readers)-1] - continue - } - if _, ok := err.(errors.UnknownPacketTypeError); !ok { - return nil, err - } - } - - return nil, io.EOF -} - -// Push causes the Reader to start reading from a new io.Reader. When an EOF -// error is seen from the new io.Reader, it is popped and the Reader continues -// to read from the next most recent io.Reader. Push returns a StructuralError -// if pushing the reader would exceed the maximum recursion level, otherwise it -// returns nil. -func (r *Reader) Push(reader io.Reader) (err error) { - if len(r.readers) >= maxReaders { - return errors.StructuralError("too many layers of packets") - } - r.readers = append(r.readers, reader) - return nil -} - -// Unread causes the given Packet to be returned from the next call to Next. -func (r *Reader) Unread(p Packet) { - r.q = append(r.q, p) -} - -func NewReader(r io.Reader) *Reader { - return &Reader{ - q: nil, - readers: []io.Reader{r}, - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/signature.go b/vendor/golang.org/x/crypto/openpgp/packet/signature.go deleted file mode 100644 index 6ce0cbed..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/signature.go +++ /dev/null @@ -1,731 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto" - "crypto/dsa" - "crypto/ecdsa" - "encoding/asn1" - "encoding/binary" - "hash" - "io" - "math/big" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" -) - -const ( - // See RFC 4880, section 5.2.3.21 for details. - KeyFlagCertify = 1 << iota - KeyFlagSign - KeyFlagEncryptCommunications - KeyFlagEncryptStorage -) - -// Signature represents a signature. See RFC 4880, section 5.2. -type Signature struct { - SigType SignatureType - PubKeyAlgo PublicKeyAlgorithm - Hash crypto.Hash - - // HashSuffix is extra data that is hashed in after the signed data. - HashSuffix []byte - // HashTag contains the first two bytes of the hash for fast rejection - // of bad signed data. - HashTag [2]byte - CreationTime time.Time - - RSASignature parsedMPI - DSASigR, DSASigS parsedMPI - ECDSASigR, ECDSASigS parsedMPI - - // rawSubpackets contains the unparsed subpackets, in order. - rawSubpackets []outputSubpacket - - // The following are optional so are nil when not included in the - // signature. - - SigLifetimeSecs, KeyLifetimeSecs *uint32 - PreferredSymmetric, PreferredHash, PreferredCompression []uint8 - IssuerKeyId *uint64 - IsPrimaryId *bool - - // FlagsValid is set if any flags were given. See RFC 4880, section - // 5.2.3.21 for details. - FlagsValid bool - FlagCertify, FlagSign, FlagEncryptCommunications, FlagEncryptStorage bool - - // RevocationReason is set if this signature has been revoked. - // See RFC 4880, section 5.2.3.23 for details. - RevocationReason *uint8 - RevocationReasonText string - - // MDC is set if this signature has a feature packet that indicates - // support for MDC subpackets. - MDC bool - - // EmbeddedSignature, if non-nil, is a signature of the parent key, by - // this key. This prevents an attacker from claiming another's signing - // subkey as their own. - EmbeddedSignature *Signature - - outSubpackets []outputSubpacket -} - -func (sig *Signature) parse(r io.Reader) (err error) { - // RFC 4880, section 5.2.3 - var buf [5]byte - _, err = readFull(r, buf[:1]) - if err != nil { - return - } - if buf[0] != 4 { - err = errors.UnsupportedError("signature packet version " + strconv.Itoa(int(buf[0]))) - return - } - - _, err = readFull(r, buf[:5]) - if err != nil { - return - } - sig.SigType = SignatureType(buf[0]) - sig.PubKeyAlgo = PublicKeyAlgorithm(buf[1]) - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoDSA, PubKeyAlgoECDSA: - default: - err = errors.UnsupportedError("public key algorithm " + strconv.Itoa(int(sig.PubKeyAlgo))) - return - } - - var ok bool - sig.Hash, ok = s2k.HashIdToHash(buf[2]) - if !ok { - return errors.UnsupportedError("hash function " + strconv.Itoa(int(buf[2]))) - } - - hashedSubpacketsLength := int(buf[3])<<8 | int(buf[4]) - l := 6 + hashedSubpacketsLength - sig.HashSuffix = make([]byte, l+6) - sig.HashSuffix[0] = 4 - copy(sig.HashSuffix[1:], buf[:5]) - hashedSubpackets := sig.HashSuffix[6:l] - _, err = readFull(r, hashedSubpackets) - if err != nil { - return - } - // See RFC 4880, section 5.2.4 - trailer := sig.HashSuffix[l:] - trailer[0] = 4 - trailer[1] = 0xff - trailer[2] = uint8(l >> 24) - trailer[3] = uint8(l >> 16) - trailer[4] = uint8(l >> 8) - trailer[5] = uint8(l) - - err = parseSignatureSubpackets(sig, hashedSubpackets, true) - if err != nil { - return - } - - _, err = readFull(r, buf[:2]) - if err != nil { - return - } - unhashedSubpacketsLength := int(buf[0])<<8 | int(buf[1]) - unhashedSubpackets := make([]byte, unhashedSubpacketsLength) - _, err = readFull(r, unhashedSubpackets) - if err != nil { - return - } - err = parseSignatureSubpackets(sig, unhashedSubpackets, false) - if err != nil { - return - } - - _, err = readFull(r, sig.HashTag[:2]) - if err != nil { - return - } - - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - sig.RSASignature.bytes, sig.RSASignature.bitLength, err = readMPI(r) - case PubKeyAlgoDSA: - sig.DSASigR.bytes, sig.DSASigR.bitLength, err = readMPI(r) - if err == nil { - sig.DSASigS.bytes, sig.DSASigS.bitLength, err = readMPI(r) - } - case PubKeyAlgoECDSA: - sig.ECDSASigR.bytes, sig.ECDSASigR.bitLength, err = readMPI(r) - if err == nil { - sig.ECDSASigS.bytes, sig.ECDSASigS.bitLength, err = readMPI(r) - } - default: - panic("unreachable") - } - return -} - -// parseSignatureSubpackets parses subpackets of the main signature packet. See -// RFC 4880, section 5.2.3.1. -func parseSignatureSubpackets(sig *Signature, subpackets []byte, isHashed bool) (err error) { - for len(subpackets) > 0 { - subpackets, err = parseSignatureSubpacket(sig, subpackets, isHashed) - if err != nil { - return - } - } - - if sig.CreationTime.IsZero() { - err = errors.StructuralError("no creation time in signature") - } - - return -} - -type signatureSubpacketType uint8 - -const ( - creationTimeSubpacket signatureSubpacketType = 2 - signatureExpirationSubpacket signatureSubpacketType = 3 - keyExpirationSubpacket signatureSubpacketType = 9 - prefSymmetricAlgosSubpacket signatureSubpacketType = 11 - issuerSubpacket signatureSubpacketType = 16 - prefHashAlgosSubpacket signatureSubpacketType = 21 - prefCompressionSubpacket signatureSubpacketType = 22 - primaryUserIdSubpacket signatureSubpacketType = 25 - keyFlagsSubpacket signatureSubpacketType = 27 - reasonForRevocationSubpacket signatureSubpacketType = 29 - featuresSubpacket signatureSubpacketType = 30 - embeddedSignatureSubpacket signatureSubpacketType = 32 -) - -// parseSignatureSubpacket parses a single subpacket. len(subpacket) is >= 1. -func parseSignatureSubpacket(sig *Signature, subpacket []byte, isHashed bool) (rest []byte, err error) { - // RFC 4880, section 5.2.3.1 - var ( - length uint32 - packetType signatureSubpacketType - isCritical bool - ) - switch { - case subpacket[0] < 192: - length = uint32(subpacket[0]) - subpacket = subpacket[1:] - case subpacket[0] < 255: - if len(subpacket) < 2 { - goto Truncated - } - length = uint32(subpacket[0]-192)<<8 + uint32(subpacket[1]) + 192 - subpacket = subpacket[2:] - default: - if len(subpacket) < 5 { - goto Truncated - } - length = uint32(subpacket[1])<<24 | - uint32(subpacket[2])<<16 | - uint32(subpacket[3])<<8 | - uint32(subpacket[4]) - subpacket = subpacket[5:] - } - if length > uint32(len(subpacket)) { - goto Truncated - } - rest = subpacket[length:] - subpacket = subpacket[:length] - if len(subpacket) == 0 { - err = errors.StructuralError("zero length signature subpacket") - return - } - packetType = signatureSubpacketType(subpacket[0] & 0x7f) - isCritical = subpacket[0]&0x80 == 0x80 - subpacket = subpacket[1:] - sig.rawSubpackets = append(sig.rawSubpackets, outputSubpacket{isHashed, packetType, isCritical, subpacket}) - switch packetType { - case creationTimeSubpacket: - if !isHashed { - err = errors.StructuralError("signature creation time in non-hashed area") - return - } - if len(subpacket) != 4 { - err = errors.StructuralError("signature creation time not four bytes") - return - } - t := binary.BigEndian.Uint32(subpacket) - sig.CreationTime = time.Unix(int64(t), 0) - case signatureExpirationSubpacket: - // Signature expiration time, section 5.2.3.10 - if !isHashed { - return - } - if len(subpacket) != 4 { - err = errors.StructuralError("expiration subpacket with bad length") - return - } - sig.SigLifetimeSecs = new(uint32) - *sig.SigLifetimeSecs = binary.BigEndian.Uint32(subpacket) - case keyExpirationSubpacket: - // Key expiration time, section 5.2.3.6 - if !isHashed { - return - } - if len(subpacket) != 4 { - err = errors.StructuralError("key expiration subpacket with bad length") - return - } - sig.KeyLifetimeSecs = new(uint32) - *sig.KeyLifetimeSecs = binary.BigEndian.Uint32(subpacket) - case prefSymmetricAlgosSubpacket: - // Preferred symmetric algorithms, section 5.2.3.7 - if !isHashed { - return - } - sig.PreferredSymmetric = make([]byte, len(subpacket)) - copy(sig.PreferredSymmetric, subpacket) - case issuerSubpacket: - // Issuer, section 5.2.3.5 - if len(subpacket) != 8 { - err = errors.StructuralError("issuer subpacket with bad length") - return - } - sig.IssuerKeyId = new(uint64) - *sig.IssuerKeyId = binary.BigEndian.Uint64(subpacket) - case prefHashAlgosSubpacket: - // Preferred hash algorithms, section 5.2.3.8 - if !isHashed { - return - } - sig.PreferredHash = make([]byte, len(subpacket)) - copy(sig.PreferredHash, subpacket) - case prefCompressionSubpacket: - // Preferred compression algorithms, section 5.2.3.9 - if !isHashed { - return - } - sig.PreferredCompression = make([]byte, len(subpacket)) - copy(sig.PreferredCompression, subpacket) - case primaryUserIdSubpacket: - // Primary User ID, section 5.2.3.19 - if !isHashed { - return - } - if len(subpacket) != 1 { - err = errors.StructuralError("primary user id subpacket with bad length") - return - } - sig.IsPrimaryId = new(bool) - if subpacket[0] > 0 { - *sig.IsPrimaryId = true - } - case keyFlagsSubpacket: - // Key flags, section 5.2.3.21 - if !isHashed { - return - } - if len(subpacket) == 0 { - err = errors.StructuralError("empty key flags subpacket") - return - } - sig.FlagsValid = true - if subpacket[0]&KeyFlagCertify != 0 { - sig.FlagCertify = true - } - if subpacket[0]&KeyFlagSign != 0 { - sig.FlagSign = true - } - if subpacket[0]&KeyFlagEncryptCommunications != 0 { - sig.FlagEncryptCommunications = true - } - if subpacket[0]&KeyFlagEncryptStorage != 0 { - sig.FlagEncryptStorage = true - } - case reasonForRevocationSubpacket: - // Reason For Revocation, section 5.2.3.23 - if !isHashed { - return - } - if len(subpacket) == 0 { - err = errors.StructuralError("empty revocation reason subpacket") - return - } - sig.RevocationReason = new(uint8) - *sig.RevocationReason = subpacket[0] - sig.RevocationReasonText = string(subpacket[1:]) - case featuresSubpacket: - // Features subpacket, section 5.2.3.24 specifies a very general - // mechanism for OpenPGP implementations to signal support for new - // features. In practice, the subpacket is used exclusively to - // indicate support for MDC-protected encryption. - sig.MDC = len(subpacket) >= 1 && subpacket[0]&1 == 1 - case embeddedSignatureSubpacket: - // Only usage is in signatures that cross-certify - // signing subkeys. section 5.2.3.26 describes the - // format, with its usage described in section 11.1 - if sig.EmbeddedSignature != nil { - err = errors.StructuralError("Cannot have multiple embedded signatures") - return - } - sig.EmbeddedSignature = new(Signature) - // Embedded signatures are required to be v4 signatures see - // section 12.1. However, we only parse v4 signatures in this - // file anyway. - if err := sig.EmbeddedSignature.parse(bytes.NewBuffer(subpacket)); err != nil { - return nil, err - } - if sigType := sig.EmbeddedSignature.SigType; sigType != SigTypePrimaryKeyBinding { - return nil, errors.StructuralError("cross-signature has unexpected type " + strconv.Itoa(int(sigType))) - } - default: - if isCritical { - err = errors.UnsupportedError("unknown critical signature subpacket type " + strconv.Itoa(int(packetType))) - return - } - } - return - -Truncated: - err = errors.StructuralError("signature subpacket truncated") - return -} - -// subpacketLengthLength returns the length, in bytes, of an encoded length value. -func subpacketLengthLength(length int) int { - if length < 192 { - return 1 - } - if length < 16320 { - return 2 - } - return 5 -} - -// serializeSubpacketLength marshals the given length into to. -func serializeSubpacketLength(to []byte, length int) int { - // RFC 4880, Section 4.2.2. - if length < 192 { - to[0] = byte(length) - return 1 - } - if length < 16320 { - length -= 192 - to[0] = byte((length >> 8) + 192) - to[1] = byte(length) - return 2 - } - to[0] = 255 - to[1] = byte(length >> 24) - to[2] = byte(length >> 16) - to[3] = byte(length >> 8) - to[4] = byte(length) - return 5 -} - -// subpacketsLength returns the serialized length, in bytes, of the given -// subpackets. -func subpacketsLength(subpackets []outputSubpacket, hashed bool) (length int) { - for _, subpacket := range subpackets { - if subpacket.hashed == hashed { - length += subpacketLengthLength(len(subpacket.contents) + 1) - length += 1 // type byte - length += len(subpacket.contents) - } - } - return -} - -// serializeSubpackets marshals the given subpackets into to. -func serializeSubpackets(to []byte, subpackets []outputSubpacket, hashed bool) { - for _, subpacket := range subpackets { - if subpacket.hashed == hashed { - n := serializeSubpacketLength(to, len(subpacket.contents)+1) - to[n] = byte(subpacket.subpacketType) - to = to[1+n:] - n = copy(to, subpacket.contents) - to = to[n:] - } - } - return -} - -// KeyExpired returns whether sig is a self-signature of a key that has -// expired. -func (sig *Signature) KeyExpired(currentTime time.Time) bool { - if sig.KeyLifetimeSecs == nil { - return false - } - expiry := sig.CreationTime.Add(time.Duration(*sig.KeyLifetimeSecs) * time.Second) - return currentTime.After(expiry) -} - -// buildHashSuffix constructs the HashSuffix member of sig in preparation for signing. -func (sig *Signature) buildHashSuffix() (err error) { - hashedSubpacketsLen := subpacketsLength(sig.outSubpackets, true) - - var ok bool - l := 6 + hashedSubpacketsLen - sig.HashSuffix = make([]byte, l+6) - sig.HashSuffix[0] = 4 - sig.HashSuffix[1] = uint8(sig.SigType) - sig.HashSuffix[2] = uint8(sig.PubKeyAlgo) - sig.HashSuffix[3], ok = s2k.HashToHashId(sig.Hash) - if !ok { - sig.HashSuffix = nil - return errors.InvalidArgumentError("hash cannot be represented in OpenPGP: " + strconv.Itoa(int(sig.Hash))) - } - sig.HashSuffix[4] = byte(hashedSubpacketsLen >> 8) - sig.HashSuffix[5] = byte(hashedSubpacketsLen) - serializeSubpackets(sig.HashSuffix[6:l], sig.outSubpackets, true) - trailer := sig.HashSuffix[l:] - trailer[0] = 4 - trailer[1] = 0xff - trailer[2] = byte(l >> 24) - trailer[3] = byte(l >> 16) - trailer[4] = byte(l >> 8) - trailer[5] = byte(l) - return -} - -func (sig *Signature) signPrepareHash(h hash.Hash) (digest []byte, err error) { - err = sig.buildHashSuffix() - if err != nil { - return - } - - h.Write(sig.HashSuffix) - digest = h.Sum(nil) - copy(sig.HashTag[:], digest) - return -} - -// Sign signs a message with a private key. The hash, h, must contain -// the hash of the message to be signed and will be mutated by this function. -// On success, the signature is stored in sig. Call Serialize to write it out. -// If config is nil, sensible defaults will be used. -func (sig *Signature) Sign(h hash.Hash, priv *PrivateKey, config *Config) (err error) { - sig.outSubpackets = sig.buildSubpackets() - digest, err := sig.signPrepareHash(h) - if err != nil { - return - } - - switch priv.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - // supports both *rsa.PrivateKey and crypto.Signer - sig.RSASignature.bytes, err = priv.PrivateKey.(crypto.Signer).Sign(config.Random(), digest, sig.Hash) - sig.RSASignature.bitLength = uint16(8 * len(sig.RSASignature.bytes)) - case PubKeyAlgoDSA: - dsaPriv := priv.PrivateKey.(*dsa.PrivateKey) - - // Need to truncate hashBytes to match FIPS 186-3 section 4.6. - subgroupSize := (dsaPriv.Q.BitLen() + 7) / 8 - if len(digest) > subgroupSize { - digest = digest[:subgroupSize] - } - r, s, err := dsa.Sign(config.Random(), dsaPriv, digest) - if err == nil { - sig.DSASigR.bytes = r.Bytes() - sig.DSASigR.bitLength = uint16(8 * len(sig.DSASigR.bytes)) - sig.DSASigS.bytes = s.Bytes() - sig.DSASigS.bitLength = uint16(8 * len(sig.DSASigS.bytes)) - } - case PubKeyAlgoECDSA: - var r, s *big.Int - if pk, ok := priv.PrivateKey.(*ecdsa.PrivateKey); ok { - // direct support, avoid asn1 wrapping/unwrapping - r, s, err = ecdsa.Sign(config.Random(), pk, digest) - } else { - var b []byte - b, err = priv.PrivateKey.(crypto.Signer).Sign(config.Random(), digest, nil) - if err == nil { - r, s, err = unwrapECDSASig(b) - } - } - if err == nil { - sig.ECDSASigR = fromBig(r) - sig.ECDSASigS = fromBig(s) - } - default: - err = errors.UnsupportedError("public key algorithm: " + strconv.Itoa(int(sig.PubKeyAlgo))) - } - - return -} - -// unwrapECDSASig parses the two integer components of an ASN.1-encoded ECDSA -// signature. -func unwrapECDSASig(b []byte) (r, s *big.Int, err error) { - var ecsdaSig struct { - R, S *big.Int - } - _, err = asn1.Unmarshal(b, &ecsdaSig) - if err != nil { - return - } - return ecsdaSig.R, ecsdaSig.S, nil -} - -// SignUserId computes a signature from priv, asserting that pub is a valid -// key for the identity id. On success, the signature is stored in sig. Call -// Serialize to write it out. -// If config is nil, sensible defaults will be used. -func (sig *Signature) SignUserId(id string, pub *PublicKey, priv *PrivateKey, config *Config) error { - h, err := userIdSignatureHash(id, pub, sig.Hash) - if err != nil { - return err - } - return sig.Sign(h, priv, config) -} - -// SignKey computes a signature from priv, asserting that pub is a subkey. On -// success, the signature is stored in sig. Call Serialize to write it out. -// If config is nil, sensible defaults will be used. -func (sig *Signature) SignKey(pub *PublicKey, priv *PrivateKey, config *Config) error { - h, err := keySignatureHash(&priv.PublicKey, pub, sig.Hash) - if err != nil { - return err - } - return sig.Sign(h, priv, config) -} - -// Serialize marshals sig to w. Sign, SignUserId or SignKey must have been -// called first. -func (sig *Signature) Serialize(w io.Writer) (err error) { - if len(sig.outSubpackets) == 0 { - sig.outSubpackets = sig.rawSubpackets - } - if sig.RSASignature.bytes == nil && sig.DSASigR.bytes == nil && sig.ECDSASigR.bytes == nil { - return errors.InvalidArgumentError("Signature: need to call Sign, SignUserId or SignKey before Serialize") - } - - sigLength := 0 - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - sigLength = 2 + len(sig.RSASignature.bytes) - case PubKeyAlgoDSA: - sigLength = 2 + len(sig.DSASigR.bytes) - sigLength += 2 + len(sig.DSASigS.bytes) - case PubKeyAlgoECDSA: - sigLength = 2 + len(sig.ECDSASigR.bytes) - sigLength += 2 + len(sig.ECDSASigS.bytes) - default: - panic("impossible") - } - - unhashedSubpacketsLen := subpacketsLength(sig.outSubpackets, false) - length := len(sig.HashSuffix) - 6 /* trailer not included */ + - 2 /* length of unhashed subpackets */ + unhashedSubpacketsLen + - 2 /* hash tag */ + sigLength - err = serializeHeader(w, packetTypeSignature, length) - if err != nil { - return - } - - _, err = w.Write(sig.HashSuffix[:len(sig.HashSuffix)-6]) - if err != nil { - return - } - - unhashedSubpackets := make([]byte, 2+unhashedSubpacketsLen) - unhashedSubpackets[0] = byte(unhashedSubpacketsLen >> 8) - unhashedSubpackets[1] = byte(unhashedSubpacketsLen) - serializeSubpackets(unhashedSubpackets[2:], sig.outSubpackets, false) - - _, err = w.Write(unhashedSubpackets) - if err != nil { - return - } - _, err = w.Write(sig.HashTag[:]) - if err != nil { - return - } - - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - err = writeMPIs(w, sig.RSASignature) - case PubKeyAlgoDSA: - err = writeMPIs(w, sig.DSASigR, sig.DSASigS) - case PubKeyAlgoECDSA: - err = writeMPIs(w, sig.ECDSASigR, sig.ECDSASigS) - default: - panic("impossible") - } - return -} - -// outputSubpacket represents a subpacket to be marshaled. -type outputSubpacket struct { - hashed bool // true if this subpacket is in the hashed area. - subpacketType signatureSubpacketType - isCritical bool - contents []byte -} - -func (sig *Signature) buildSubpackets() (subpackets []outputSubpacket) { - creationTime := make([]byte, 4) - binary.BigEndian.PutUint32(creationTime, uint32(sig.CreationTime.Unix())) - subpackets = append(subpackets, outputSubpacket{true, creationTimeSubpacket, false, creationTime}) - - if sig.IssuerKeyId != nil { - keyId := make([]byte, 8) - binary.BigEndian.PutUint64(keyId, *sig.IssuerKeyId) - subpackets = append(subpackets, outputSubpacket{true, issuerSubpacket, false, keyId}) - } - - if sig.SigLifetimeSecs != nil && *sig.SigLifetimeSecs != 0 { - sigLifetime := make([]byte, 4) - binary.BigEndian.PutUint32(sigLifetime, *sig.SigLifetimeSecs) - subpackets = append(subpackets, outputSubpacket{true, signatureExpirationSubpacket, true, sigLifetime}) - } - - // Key flags may only appear in self-signatures or certification signatures. - - if sig.FlagsValid { - var flags byte - if sig.FlagCertify { - flags |= KeyFlagCertify - } - if sig.FlagSign { - flags |= KeyFlagSign - } - if sig.FlagEncryptCommunications { - flags |= KeyFlagEncryptCommunications - } - if sig.FlagEncryptStorage { - flags |= KeyFlagEncryptStorage - } - subpackets = append(subpackets, outputSubpacket{true, keyFlagsSubpacket, false, []byte{flags}}) - } - - // The following subpackets may only appear in self-signatures - - if sig.KeyLifetimeSecs != nil && *sig.KeyLifetimeSecs != 0 { - keyLifetime := make([]byte, 4) - binary.BigEndian.PutUint32(keyLifetime, *sig.KeyLifetimeSecs) - subpackets = append(subpackets, outputSubpacket{true, keyExpirationSubpacket, true, keyLifetime}) - } - - if sig.IsPrimaryId != nil && *sig.IsPrimaryId { - subpackets = append(subpackets, outputSubpacket{true, primaryUserIdSubpacket, false, []byte{1}}) - } - - if len(sig.PreferredSymmetric) > 0 { - subpackets = append(subpackets, outputSubpacket{true, prefSymmetricAlgosSubpacket, false, sig.PreferredSymmetric}) - } - - if len(sig.PreferredHash) > 0 { - subpackets = append(subpackets, outputSubpacket{true, prefHashAlgosSubpacket, false, sig.PreferredHash}) - } - - if len(sig.PreferredCompression) > 0 { - subpackets = append(subpackets, outputSubpacket{true, prefCompressionSubpacket, false, sig.PreferredCompression}) - } - - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/signature_test.go b/vendor/golang.org/x/crypto/openpgp/packet/signature_test.go deleted file mode 100644 index 56e76117..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/signature_test.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto" - "encoding/hex" - "testing" -) - -func TestSignatureRead(t *testing.T) { - packet, err := Read(readerFromHex(signatureDataHex)) - if err != nil { - t.Error(err) - return - } - sig, ok := packet.(*Signature) - if !ok || sig.SigType != SigTypeBinary || sig.PubKeyAlgo != PubKeyAlgoRSA || sig.Hash != crypto.SHA1 { - t.Errorf("failed to parse, got: %#v", packet) - } -} - -func TestSignatureReserialize(t *testing.T) { - packet, _ := Read(readerFromHex(signatureDataHex)) - sig := packet.(*Signature) - out := new(bytes.Buffer) - err := sig.Serialize(out) - if err != nil { - t.Errorf("error reserializing: %s", err) - return - } - - expected, _ := hex.DecodeString(signatureDataHex) - if !bytes.Equal(expected, out.Bytes()) { - t.Errorf("output doesn't match input (got vs expected):\n%s\n%s", hex.Dump(out.Bytes()), hex.Dump(expected)) - } -} - -func TestSignUserId(t *testing.T) { - sig := &Signature{ - SigType: SigTypeGenericCert, - PubKeyAlgo: PubKeyAlgoRSA, - Hash: 0, // invalid hash function - } - - packet, err := Read(readerFromHex(rsaPkDataHex)) - if err != nil { - t.Fatalf("failed to deserialize public key: %v", err) - } - pubKey := packet.(*PublicKey) - - packet, err = Read(readerFromHex(privKeyRSAHex)) - if err != nil { - t.Fatalf("failed to deserialize private key: %v", err) - } - privKey := packet.(*PrivateKey) - - err = sig.SignUserId("", pubKey, privKey, nil) - if err == nil { - t.Errorf("did not receive an error when expected") - } - - sig.Hash = crypto.SHA256 - err = privKey.Decrypt([]byte("testing")) - if err != nil { - t.Fatalf("failed to decrypt private key: %v", err) - } - - err = sig.SignUserId("", pubKey, privKey, nil) - if err != nil { - t.Errorf("failed to sign user id: %v", err) - } -} - -const signatureDataHex = "c2c05c04000102000605024cb45112000a0910ab105c91af38fb158f8d07ff5596ea368c5efe015bed6e78348c0f033c931d5f2ce5db54ce7f2a7e4b4ad64db758d65a7a71773edeab7ba2a9e0908e6a94a1175edd86c1d843279f045b021a6971a72702fcbd650efc393c5474d5b59a15f96d2eaad4c4c426797e0dcca2803ef41c6ff234d403eec38f31d610c344c06f2401c262f0993b2e66cad8a81ebc4322c723e0d4ba09fe917e8777658307ad8329adacba821420741009dfe87f007759f0982275d028a392c6ed983a0d846f890b36148c7358bdb8a516007fac760261ecd06076813831a36d0459075d1befa245ae7f7fb103d92ca759e9498fe60ef8078a39a3beda510deea251ea9f0a7f0df6ef42060f20780360686f3e400e" diff --git a/vendor/golang.org/x/crypto/openpgp/packet/signature_v3.go b/vendor/golang.org/x/crypto/openpgp/packet/signature_v3.go deleted file mode 100644 index 6edff889..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/signature_v3.go +++ /dev/null @@ -1,146 +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 packet - -import ( - "crypto" - "encoding/binary" - "fmt" - "io" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" -) - -// SignatureV3 represents older version 3 signatures. These signatures are less secure -// than version 4 and should not be used to create new signatures. They are included -// here for backwards compatibility to read and validate with older key material. -// See RFC 4880, section 5.2.2. -type SignatureV3 struct { - SigType SignatureType - CreationTime time.Time - IssuerKeyId uint64 - PubKeyAlgo PublicKeyAlgorithm - Hash crypto.Hash - HashTag [2]byte - - RSASignature parsedMPI - DSASigR, DSASigS parsedMPI -} - -func (sig *SignatureV3) parse(r io.Reader) (err error) { - // RFC 4880, section 5.2.2 - var buf [8]byte - if _, err = readFull(r, buf[:1]); err != nil { - return - } - if buf[0] < 2 || buf[0] > 3 { - err = errors.UnsupportedError("signature packet version " + strconv.Itoa(int(buf[0]))) - return - } - if _, err = readFull(r, buf[:1]); err != nil { - return - } - if buf[0] != 5 { - err = errors.UnsupportedError( - "invalid hashed material length " + strconv.Itoa(int(buf[0]))) - return - } - - // Read hashed material: signature type + creation time - if _, err = readFull(r, buf[:5]); err != nil { - return - } - sig.SigType = SignatureType(buf[0]) - t := binary.BigEndian.Uint32(buf[1:5]) - sig.CreationTime = time.Unix(int64(t), 0) - - // Eight-octet Key ID of signer. - if _, err = readFull(r, buf[:8]); err != nil { - return - } - sig.IssuerKeyId = binary.BigEndian.Uint64(buf[:]) - - // Public-key and hash algorithm - if _, err = readFull(r, buf[:2]); err != nil { - return - } - sig.PubKeyAlgo = PublicKeyAlgorithm(buf[0]) - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly, PubKeyAlgoDSA: - default: - err = errors.UnsupportedError("public key algorithm " + strconv.Itoa(int(sig.PubKeyAlgo))) - return - } - var ok bool - if sig.Hash, ok = s2k.HashIdToHash(buf[1]); !ok { - return errors.UnsupportedError("hash function " + strconv.Itoa(int(buf[2]))) - } - - // Two-octet field holding left 16 bits of signed hash value. - if _, err = readFull(r, sig.HashTag[:2]); err != nil { - return - } - - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - sig.RSASignature.bytes, sig.RSASignature.bitLength, err = readMPI(r) - case PubKeyAlgoDSA: - if sig.DSASigR.bytes, sig.DSASigR.bitLength, err = readMPI(r); err != nil { - return - } - sig.DSASigS.bytes, sig.DSASigS.bitLength, err = readMPI(r) - default: - panic("unreachable") - } - return -} - -// Serialize marshals sig to w. Sign, SignUserId or SignKey must have been -// called first. -func (sig *SignatureV3) Serialize(w io.Writer) (err error) { - buf := make([]byte, 8) - - // Write the sig type and creation time - buf[0] = byte(sig.SigType) - binary.BigEndian.PutUint32(buf[1:5], uint32(sig.CreationTime.Unix())) - if _, err = w.Write(buf[:5]); err != nil { - return - } - - // Write the issuer long key ID - binary.BigEndian.PutUint64(buf[:8], sig.IssuerKeyId) - if _, err = w.Write(buf[:8]); err != nil { - return - } - - // Write public key algorithm, hash ID, and hash value - buf[0] = byte(sig.PubKeyAlgo) - hashId, ok := s2k.HashToHashId(sig.Hash) - if !ok { - return errors.UnsupportedError(fmt.Sprintf("hash function %v", sig.Hash)) - } - buf[1] = hashId - copy(buf[2:4], sig.HashTag[:]) - if _, err = w.Write(buf[:4]); err != nil { - return - } - - if sig.RSASignature.bytes == nil && sig.DSASigR.bytes == nil { - return errors.InvalidArgumentError("Signature: need to call Sign, SignUserId or SignKey before Serialize") - } - - switch sig.PubKeyAlgo { - case PubKeyAlgoRSA, PubKeyAlgoRSASignOnly: - err = writeMPIs(w, sig.RSASignature) - case PubKeyAlgoDSA: - err = writeMPIs(w, sig.DSASigR, sig.DSASigS) - default: - panic("impossible") - } - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/signature_v3_test.go b/vendor/golang.org/x/crypto/openpgp/packet/signature_v3_test.go deleted file mode 100644 index ad7b62ac..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/signature_v3_test.go +++ /dev/null @@ -1,92 +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 packet - -import ( - "bytes" - "crypto" - "encoding/hex" - "io" - "io/ioutil" - "testing" - - "golang.org/x/crypto/openpgp/armor" -) - -func TestSignatureV3Read(t *testing.T) { - r := v3KeyReader(t) - Read(r) // Skip public key - Read(r) // Skip uid - packet, err := Read(r) // Signature - if err != nil { - t.Error(err) - return - } - sig, ok := packet.(*SignatureV3) - if !ok || sig.SigType != SigTypeGenericCert || sig.PubKeyAlgo != PubKeyAlgoRSA || sig.Hash != crypto.MD5 { - t.Errorf("failed to parse, got: %#v", packet) - } -} - -func TestSignatureV3Reserialize(t *testing.T) { - r := v3KeyReader(t) - Read(r) // Skip public key - Read(r) // Skip uid - packet, err := Read(r) - if err != nil { - t.Error(err) - return - } - sig := packet.(*SignatureV3) - out := new(bytes.Buffer) - if err = sig.Serialize(out); err != nil { - t.Errorf("error reserializing: %s", err) - return - } - expected, err := ioutil.ReadAll(v3KeyReader(t)) - if err != nil { - t.Error(err) - return - } - expected = expected[4+141+4+39:] // See pgpdump offsets below, this is where the sig starts - if !bytes.Equal(expected, out.Bytes()) { - t.Errorf("output doesn't match input (got vs expected):\n%s\n%s", hex.Dump(out.Bytes()), hex.Dump(expected)) - } -} - -func v3KeyReader(t *testing.T) io.Reader { - armorBlock, err := armor.Decode(bytes.NewBufferString(keySigV3Armor)) - if err != nil { - t.Fatalf("armor Decode failed: %v", err) - } - return armorBlock.Body -} - -// keySigV3Armor is some V3 public key I found in an SKS dump. -// Old: Public Key Packet(tag 6)(141 bytes) -// Ver 4 - new -// Public key creation time - Fri Sep 16 17:13:54 CDT 1994 -// Pub alg - unknown(pub 0) -// Unknown public key(pub 0) -// Old: User ID Packet(tag 13)(39 bytes) -// User ID - Armin M. Warda -// Old: Signature Packet(tag 2)(149 bytes) -// Ver 4 - new -// Sig type - unknown(05) -// Pub alg - ElGamal Encrypt-Only(pub 16) -// Hash alg - unknown(hash 46) -// Hashed Sub: unknown(sub 81, critical)(1988 bytes) -const keySigV3Armor = `-----BEGIN PGP PUBLIC KEY BLOCK----- -Version: SKS 1.0.10 - -mI0CLnoYogAAAQQA1qwA2SuJwfQ5bCQ6u5t20ulnOtY0gykf7YjiK4LiVeRBwHjGq7v30tGV -5Qti7qqRW4Ww7CDCJc4sZMFnystucR2vLkXaSoNWoFm4Fg47NiisDdhDezHwbVPW6OpCFNSi -ZAamtj4QAUBu8j4LswafrJqZqR9336/V3g8Yil2l48kABRG0J0FybWluIE0uIFdhcmRhIDx3 -YXJkYUBuZXBoaWxpbS5ydWhyLmRlPoiVAgUQLok2xwXR6zmeWEiZAQE/DgP/WgxPQh40/Po4 -gSkWZCDAjNdph7zexvAb0CcUWahcwiBIgg3U5ErCx9I5CNVA9U+s8bNrDZwgSIeBzp3KhWUx -524uhGgm6ZUTOAIKA6CbV6pfqoLpJnRYvXYQU5mIWsNa99wcu2qu18OeEDnztb7aLA6Ra9OF -YFCbq4EjXRoOrYM= -=LPjs ------END PGP PUBLIC KEY BLOCK-----` diff --git a/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted.go b/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted.go deleted file mode 100644 index 744c2d2c..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted.go +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto/cipher" - "io" - "strconv" - - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/s2k" -) - -// This is the largest session key that we'll support. Since no 512-bit cipher -// has even been seriously used, this is comfortably large. -const maxSessionKeySizeInBytes = 64 - -// SymmetricKeyEncrypted represents a passphrase protected session key. See RFC -// 4880, section 5.3. -type SymmetricKeyEncrypted struct { - CipherFunc CipherFunction - s2k func(out, in []byte) - encryptedKey []byte -} - -const symmetricKeyEncryptedVersion = 4 - -func (ske *SymmetricKeyEncrypted) parse(r io.Reader) error { - // RFC 4880, section 5.3. - var buf [2]byte - if _, err := readFull(r, buf[:]); err != nil { - return err - } - if buf[0] != symmetricKeyEncryptedVersion { - return errors.UnsupportedError("SymmetricKeyEncrypted version") - } - ske.CipherFunc = CipherFunction(buf[1]) - - if ske.CipherFunc.KeySize() == 0 { - return errors.UnsupportedError("unknown cipher: " + strconv.Itoa(int(buf[1]))) - } - - var err error - ske.s2k, err = s2k.Parse(r) - if err != nil { - return err - } - - encryptedKey := make([]byte, maxSessionKeySizeInBytes) - // The session key may follow. We just have to try and read to find - // out. If it exists then we limit it to maxSessionKeySizeInBytes. - n, err := readFull(r, encryptedKey) - if err != nil && err != io.ErrUnexpectedEOF { - return err - } - - if n != 0 { - if n == maxSessionKeySizeInBytes { - return errors.UnsupportedError("oversized encrypted session key") - } - ske.encryptedKey = encryptedKey[:n] - } - - return nil -} - -// Decrypt attempts to decrypt an encrypted session key and returns the key and -// the cipher to use when decrypting a subsequent Symmetrically Encrypted Data -// packet. -func (ske *SymmetricKeyEncrypted) Decrypt(passphrase []byte) ([]byte, CipherFunction, error) { - key := make([]byte, ske.CipherFunc.KeySize()) - ske.s2k(key, passphrase) - - if len(ske.encryptedKey) == 0 { - return key, ske.CipherFunc, nil - } - - // the IV is all zeros - iv := make([]byte, ske.CipherFunc.blockSize()) - c := cipher.NewCFBDecrypter(ske.CipherFunc.new(key), iv) - plaintextKey := make([]byte, len(ske.encryptedKey)) - c.XORKeyStream(plaintextKey, ske.encryptedKey) - cipherFunc := CipherFunction(plaintextKey[0]) - if cipherFunc.blockSize() == 0 { - return nil, ske.CipherFunc, errors.UnsupportedError("unknown cipher: " + strconv.Itoa(int(cipherFunc))) - } - plaintextKey = plaintextKey[1:] - if l, cipherKeySize := len(plaintextKey), cipherFunc.KeySize(); l != cipherFunc.KeySize() { - return nil, cipherFunc, errors.StructuralError("length of decrypted key (" + strconv.Itoa(l) + ") " + - "not equal to cipher keysize (" + strconv.Itoa(cipherKeySize) + ")") - } - return plaintextKey, cipherFunc, nil -} - -// SerializeSymmetricKeyEncrypted serializes a symmetric key packet to w. The -// packet contains a random session key, encrypted by a key derived from the -// given passphrase. The session key is returned and must be passed to -// SerializeSymmetricallyEncrypted. -// If config is nil, sensible defaults will be used. -func SerializeSymmetricKeyEncrypted(w io.Writer, passphrase []byte, config *Config) (key []byte, err error) { - cipherFunc := config.Cipher() - keySize := cipherFunc.KeySize() - if keySize == 0 { - return nil, errors.UnsupportedError("unknown cipher: " + strconv.Itoa(int(cipherFunc))) - } - - s2kBuf := new(bytes.Buffer) - keyEncryptingKey := make([]byte, keySize) - // s2k.Serialize salts and stretches the passphrase, and writes the - // resulting key to keyEncryptingKey and the s2k descriptor to s2kBuf. - err = s2k.Serialize(s2kBuf, keyEncryptingKey, config.Random(), passphrase, &s2k.Config{Hash: config.Hash(), S2KCount: config.PasswordHashIterations()}) - if err != nil { - return - } - s2kBytes := s2kBuf.Bytes() - - packetLength := 2 /* header */ + len(s2kBytes) + 1 /* cipher type */ + keySize - err = serializeHeader(w, packetTypeSymmetricKeyEncrypted, packetLength) - if err != nil { - return - } - - var buf [2]byte - buf[0] = symmetricKeyEncryptedVersion - buf[1] = byte(cipherFunc) - _, err = w.Write(buf[:]) - if err != nil { - return - } - _, err = w.Write(s2kBytes) - if err != nil { - return - } - - sessionKey := make([]byte, keySize) - _, err = io.ReadFull(config.Random(), sessionKey) - if err != nil { - return - } - iv := make([]byte, cipherFunc.blockSize()) - c := cipher.NewCFBEncrypter(cipherFunc.new(keyEncryptingKey), iv) - encryptedCipherAndKey := make([]byte, keySize+1) - c.XORKeyStream(encryptedCipherAndKey, buf[1:]) - c.XORKeyStream(encryptedCipherAndKey[1:], sessionKey) - _, err = w.Write(encryptedCipherAndKey) - if err != nil { - return - } - - key = sessionKey - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted_test.go b/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted_test.go deleted file mode 100644 index e1d52c12..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/symmetric_key_encrypted_test.go +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "encoding/hex" - "io" - "io/ioutil" - "testing" -) - -func TestSymmetricKeyEncrypted(t *testing.T) { - buf := readerFromHex(symmetricallyEncryptedHex) - packet, err := Read(buf) - if err != nil { - t.Errorf("failed to read SymmetricKeyEncrypted: %s", err) - return - } - ske, ok := packet.(*SymmetricKeyEncrypted) - if !ok { - t.Error("didn't find SymmetricKeyEncrypted packet") - return - } - key, cipherFunc, err := ske.Decrypt([]byte("password")) - if err != nil { - t.Error(err) - return - } - - packet, err = Read(buf) - if err != nil { - t.Errorf("failed to read SymmetricallyEncrypted: %s", err) - return - } - se, ok := packet.(*SymmetricallyEncrypted) - if !ok { - t.Error("didn't find SymmetricallyEncrypted packet") - return - } - r, err := se.Decrypt(cipherFunc, key) - if err != nil { - t.Error(err) - return - } - - contents, err := ioutil.ReadAll(r) - if err != nil && err != io.EOF { - t.Error(err) - return - } - - expectedContents, _ := hex.DecodeString(symmetricallyEncryptedContentsHex) - if !bytes.Equal(expectedContents, contents) { - t.Errorf("bad contents got:%x want:%x", contents, expectedContents) - } -} - -const symmetricallyEncryptedHex = "8c0d04030302371a0b38d884f02060c91cf97c9973b8e58e028e9501708ccfe618fb92afef7fa2d80ddadd93cf" -const symmetricallyEncryptedContentsHex = "cb1062004d14c4df636f6e74656e74732e0a" - -func TestSerializeSymmetricKeyEncryptedCiphers(t *testing.T) { - tests := [...]struct { - cipherFunc CipherFunction - name string - }{ - {Cipher3DES, "Cipher3DES"}, - {CipherCAST5, "CipherCAST5"}, - {CipherAES128, "CipherAES128"}, - {CipherAES192, "CipherAES192"}, - {CipherAES256, "CipherAES256"}, - } - - for _, test := range tests { - var buf bytes.Buffer - passphrase := []byte("testing") - config := &Config{ - DefaultCipher: test.cipherFunc, - } - - key, err := SerializeSymmetricKeyEncrypted(&buf, passphrase, config) - if err != nil { - t.Errorf("cipher(%s) failed to serialize: %s", test.name, err) - continue - } - - p, err := Read(&buf) - if err != nil { - t.Errorf("cipher(%s) failed to reparse: %s", test.name, err) - continue - } - - ske, ok := p.(*SymmetricKeyEncrypted) - if !ok { - t.Errorf("cipher(%s) parsed a different packet type: %#v", test.name, p) - continue - } - - if ske.CipherFunc != config.DefaultCipher { - t.Errorf("cipher(%s) SKE cipher function is %d (expected %d)", test.name, ske.CipherFunc, config.DefaultCipher) - } - parsedKey, parsedCipherFunc, err := ske.Decrypt(passphrase) - if err != nil { - t.Errorf("cipher(%s) failed to decrypt reparsed SKE: %s", test.name, err) - continue - } - if !bytes.Equal(key, parsedKey) { - t.Errorf("cipher(%s) keys don't match after Decrypt: %x (original) vs %x (parsed)", test.name, key, parsedKey) - } - if parsedCipherFunc != test.cipherFunc { - t.Errorf("cipher(%s) cipher function doesn't match after Decrypt: %d (original) vs %d (parsed)", - test.name, test.cipherFunc, parsedCipherFunc) - } - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted.go b/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted.go deleted file mode 100644 index 6126030e..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted.go +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "crypto/cipher" - "crypto/sha1" - "crypto/subtle" - "golang.org/x/crypto/openpgp/errors" - "hash" - "io" - "strconv" -) - -// SymmetricallyEncrypted represents a symmetrically encrypted byte string. The -// encrypted contents will consist of more OpenPGP packets. See RFC 4880, -// sections 5.7 and 5.13. -type SymmetricallyEncrypted struct { - MDC bool // true iff this is a type 18 packet and thus has an embedded MAC. - contents io.Reader - prefix []byte -} - -const symmetricallyEncryptedVersion = 1 - -func (se *SymmetricallyEncrypted) parse(r io.Reader) error { - if se.MDC { - // See RFC 4880, section 5.13. - var buf [1]byte - _, err := readFull(r, buf[:]) - if err != nil { - return err - } - if buf[0] != symmetricallyEncryptedVersion { - return errors.UnsupportedError("unknown SymmetricallyEncrypted version") - } - } - se.contents = r - return nil -} - -// Decrypt returns a ReadCloser, from which the decrypted contents of the -// packet can be read. An incorrect key can, with high probability, be detected -// immediately and this will result in a KeyIncorrect error being returned. -func (se *SymmetricallyEncrypted) Decrypt(c CipherFunction, key []byte) (io.ReadCloser, error) { - keySize := c.KeySize() - if keySize == 0 { - return nil, errors.UnsupportedError("unknown cipher: " + strconv.Itoa(int(c))) - } - if len(key) != keySize { - return nil, errors.InvalidArgumentError("SymmetricallyEncrypted: incorrect key length") - } - - if se.prefix == nil { - se.prefix = make([]byte, c.blockSize()+2) - _, err := readFull(se.contents, se.prefix) - if err != nil { - return nil, err - } - } else if len(se.prefix) != c.blockSize()+2 { - return nil, errors.InvalidArgumentError("can't try ciphers with different block lengths") - } - - ocfbResync := OCFBResync - if se.MDC { - // MDC packets use a different form of OCFB mode. - ocfbResync = OCFBNoResync - } - - s := NewOCFBDecrypter(c.new(key), se.prefix, ocfbResync) - if s == nil { - return nil, errors.ErrKeyIncorrect - } - - plaintext := cipher.StreamReader{S: s, R: se.contents} - - if se.MDC { - // MDC packets have an embedded hash that we need to check. - h := sha1.New() - h.Write(se.prefix) - return &seMDCReader{in: plaintext, h: h}, nil - } - - // Otherwise, we just need to wrap plaintext so that it's a valid ReadCloser. - return seReader{plaintext}, nil -} - -// seReader wraps an io.Reader with a no-op Close method. -type seReader struct { - in io.Reader -} - -func (ser seReader) Read(buf []byte) (int, error) { - return ser.in.Read(buf) -} - -func (ser seReader) Close() error { - return nil -} - -const mdcTrailerSize = 1 /* tag byte */ + 1 /* length byte */ + sha1.Size - -// An seMDCReader wraps an io.Reader, maintains a running hash and keeps hold -// of the most recent 22 bytes (mdcTrailerSize). Upon EOF, those bytes form an -// MDC packet containing a hash of the previous contents which is checked -// against the running hash. See RFC 4880, section 5.13. -type seMDCReader struct { - in io.Reader - h hash.Hash - trailer [mdcTrailerSize]byte - scratch [mdcTrailerSize]byte - trailerUsed int - error bool - eof bool -} - -func (ser *seMDCReader) Read(buf []byte) (n int, err error) { - if ser.error { - err = io.ErrUnexpectedEOF - return - } - if ser.eof { - err = io.EOF - return - } - - // If we haven't yet filled the trailer buffer then we must do that - // first. - for ser.trailerUsed < mdcTrailerSize { - n, err = ser.in.Read(ser.trailer[ser.trailerUsed:]) - ser.trailerUsed += n - if err == io.EOF { - if ser.trailerUsed != mdcTrailerSize { - n = 0 - err = io.ErrUnexpectedEOF - ser.error = true - return - } - ser.eof = true - n = 0 - return - } - - if err != nil { - n = 0 - return - } - } - - // If it's a short read then we read into a temporary buffer and shift - // the data into the caller's buffer. - if len(buf) <= mdcTrailerSize { - n, err = readFull(ser.in, ser.scratch[:len(buf)]) - copy(buf, ser.trailer[:n]) - ser.h.Write(buf[:n]) - copy(ser.trailer[:], ser.trailer[n:]) - copy(ser.trailer[mdcTrailerSize-n:], ser.scratch[:]) - if n < len(buf) { - ser.eof = true - err = io.EOF - } - return - } - - n, err = ser.in.Read(buf[mdcTrailerSize:]) - copy(buf, ser.trailer[:]) - ser.h.Write(buf[:n]) - copy(ser.trailer[:], buf[n:]) - - if err == io.EOF { - ser.eof = true - } - return -} - -// This is a new-format packet tag byte for a type 19 (MDC) packet. -const mdcPacketTagByte = byte(0x80) | 0x40 | 19 - -func (ser *seMDCReader) Close() error { - if ser.error { - return errors.SignatureError("error during reading") - } - - for !ser.eof { - // We haven't seen EOF so we need to read to the end - var buf [1024]byte - _, err := ser.Read(buf[:]) - if err == io.EOF { - break - } - if err != nil { - return errors.SignatureError("error during reading") - } - } - - if ser.trailer[0] != mdcPacketTagByte || ser.trailer[1] != sha1.Size { - return errors.SignatureError("MDC packet not found") - } - ser.h.Write(ser.trailer[:2]) - - final := ser.h.Sum(nil) - if subtle.ConstantTimeCompare(final, ser.trailer[2:]) != 1 { - return errors.SignatureError("hash mismatch") - } - return nil -} - -// An seMDCWriter writes through to an io.WriteCloser while maintains a running -// hash of the data written. On close, it emits an MDC packet containing the -// running hash. -type seMDCWriter struct { - w io.WriteCloser - h hash.Hash -} - -func (w *seMDCWriter) Write(buf []byte) (n int, err error) { - w.h.Write(buf) - return w.w.Write(buf) -} - -func (w *seMDCWriter) Close() (err error) { - var buf [mdcTrailerSize]byte - - buf[0] = mdcPacketTagByte - buf[1] = sha1.Size - w.h.Write(buf[:2]) - digest := w.h.Sum(nil) - copy(buf[2:], digest) - - _, err = w.w.Write(buf[:]) - if err != nil { - return - } - return w.w.Close() -} - -// noOpCloser is like an ioutil.NopCloser, but for an io.Writer. -type noOpCloser struct { - w io.Writer -} - -func (c noOpCloser) Write(data []byte) (n int, err error) { - return c.w.Write(data) -} - -func (c noOpCloser) Close() error { - return nil -} - -// SerializeSymmetricallyEncrypted serializes a symmetrically encrypted packet -// to w and returns a WriteCloser to which the to-be-encrypted packets can be -// written. -// If config is nil, sensible defaults will be used. -func SerializeSymmetricallyEncrypted(w io.Writer, c CipherFunction, key []byte, config *Config) (contents io.WriteCloser, err error) { - if c.KeySize() != len(key) { - return nil, errors.InvalidArgumentError("SymmetricallyEncrypted.Serialize: bad key length") - } - writeCloser := noOpCloser{w} - ciphertext, err := serializeStreamHeader(writeCloser, packetTypeSymmetricallyEncryptedMDC) - if err != nil { - return - } - - _, err = ciphertext.Write([]byte{symmetricallyEncryptedVersion}) - if err != nil { - return - } - - block := c.new(key) - blockSize := block.BlockSize() - iv := make([]byte, blockSize) - _, err = config.Random().Read(iv) - if err != nil { - return - } - s, prefix := NewOCFBEncrypter(block, iv, OCFBNoResync) - _, err = ciphertext.Write(prefix) - if err != nil { - return - } - plaintext := cipher.StreamWriter{S: s, W: ciphertext} - - h := sha1.New() - h.Write(iv) - h.Write(iv[blockSize-2:]) - contents = &seMDCWriter{w: plaintext, h: h} - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted_test.go b/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted_test.go deleted file mode 100644 index c5c00f7b..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/symmetrically_encrypted_test.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "crypto/sha1" - "encoding/hex" - "golang.org/x/crypto/openpgp/errors" - "io" - "io/ioutil" - "testing" -) - -// TestReader wraps a []byte and returns reads of a specific length. -type testReader struct { - data []byte - stride int -} - -func (t *testReader) Read(buf []byte) (n int, err error) { - n = t.stride - if n > len(t.data) { - n = len(t.data) - } - if n > len(buf) { - n = len(buf) - } - copy(buf, t.data) - t.data = t.data[n:] - if len(t.data) == 0 { - err = io.EOF - } - return -} - -func testMDCReader(t *testing.T) { - mdcPlaintext, _ := hex.DecodeString(mdcPlaintextHex) - - for stride := 1; stride < len(mdcPlaintext)/2; stride++ { - r := &testReader{data: mdcPlaintext, stride: stride} - mdcReader := &seMDCReader{in: r, h: sha1.New()} - body, err := ioutil.ReadAll(mdcReader) - if err != nil { - t.Errorf("stride: %d, error: %s", stride, err) - continue - } - if !bytes.Equal(body, mdcPlaintext[:len(mdcPlaintext)-22]) { - t.Errorf("stride: %d: bad contents %x", stride, body) - continue - } - - err = mdcReader.Close() - if err != nil { - t.Errorf("stride: %d, error on Close: %s", stride, err) - } - } - - mdcPlaintext[15] ^= 80 - - r := &testReader{data: mdcPlaintext, stride: 2} - mdcReader := &seMDCReader{in: r, h: sha1.New()} - _, err := ioutil.ReadAll(mdcReader) - if err != nil { - t.Errorf("corruption test, error: %s", err) - return - } - err = mdcReader.Close() - if err == nil { - t.Error("corruption: no error") - } else if _, ok := err.(*errors.SignatureError); !ok { - t.Errorf("corruption: expected SignatureError, got: %s", err) - } -} - -const mdcPlaintextHex = "a302789c3b2d93c4e0eb9aba22283539b3203335af44a134afb800c849cb4c4de10200aff40b45d31432c80cb384299a0655966d6939dfdeed1dddf980" - -func TestSerialize(t *testing.T) { - buf := bytes.NewBuffer(nil) - c := CipherAES128 - key := make([]byte, c.KeySize()) - - w, err := SerializeSymmetricallyEncrypted(buf, c, key, nil) - if err != nil { - t.Errorf("error from SerializeSymmetricallyEncrypted: %s", err) - return - } - - contents := []byte("hello world\n") - - w.Write(contents) - w.Close() - - p, err := Read(buf) - if err != nil { - t.Errorf("error from Read: %s", err) - return - } - - se, ok := p.(*SymmetricallyEncrypted) - if !ok { - t.Errorf("didn't read a *SymmetricallyEncrypted") - return - } - - r, err := se.Decrypt(c, key) - if err != nil { - t.Errorf("error from Decrypt: %s", err) - return - } - - contentsCopy := bytes.NewBuffer(nil) - _, err = io.Copy(contentsCopy, r) - if err != nil { - t.Errorf("error from io.Copy: %s", err) - return - } - if !bytes.Equal(contentsCopy.Bytes(), contents) { - t.Errorf("contents not equal got: %x want: %x", contentsCopy.Bytes(), contents) - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/userattribute.go b/vendor/golang.org/x/crypto/openpgp/packet/userattribute.go deleted file mode 100644 index 96a2b382..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/userattribute.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 packet - -import ( - "bytes" - "image" - "image/jpeg" - "io" - "io/ioutil" -) - -const UserAttrImageSubpacket = 1 - -// UserAttribute is capable of storing other types of data about a user -// beyond name, email and a text comment. In practice, user attributes are typically used -// to store a signed thumbnail photo JPEG image of the user. -// See RFC 4880, section 5.12. -type UserAttribute struct { - Contents []*OpaqueSubpacket -} - -// NewUserAttributePhoto creates a user attribute packet -// containing the given images. -func NewUserAttributePhoto(photos ...image.Image) (uat *UserAttribute, err error) { - uat = new(UserAttribute) - for _, photo := range photos { - var buf bytes.Buffer - // RFC 4880, Section 5.12.1. - data := []byte{ - 0x10, 0x00, // Little-endian image header length (16 bytes) - 0x01, // Image header version 1 - 0x01, // JPEG - 0, 0, 0, 0, // 12 reserved octets, must be all zero. - 0, 0, 0, 0, - 0, 0, 0, 0} - if _, err = buf.Write(data); err != nil { - return - } - if err = jpeg.Encode(&buf, photo, nil); err != nil { - return - } - uat.Contents = append(uat.Contents, &OpaqueSubpacket{ - SubType: UserAttrImageSubpacket, - Contents: buf.Bytes()}) - } - return -} - -// NewUserAttribute creates a new user attribute packet containing the given subpackets. -func NewUserAttribute(contents ...*OpaqueSubpacket) *UserAttribute { - return &UserAttribute{Contents: contents} -} - -func (uat *UserAttribute) parse(r io.Reader) (err error) { - // RFC 4880, section 5.13 - b, err := ioutil.ReadAll(r) - if err != nil { - return - } - uat.Contents, err = OpaqueSubpackets(b) - return -} - -// Serialize marshals the user attribute to w in the form of an OpenPGP packet, including -// header. -func (uat *UserAttribute) Serialize(w io.Writer) (err error) { - var buf bytes.Buffer - for _, sp := range uat.Contents { - sp.Serialize(&buf) - } - if err = serializeHeader(w, packetTypeUserAttribute, buf.Len()); err != nil { - return err - } - _, err = w.Write(buf.Bytes()) - return -} - -// ImageData returns zero or more byte slices, each containing -// JPEG File Interchange Format (JFIF), for each photo in the -// the user attribute packet. -func (uat *UserAttribute) ImageData() (imageData [][]byte) { - for _, sp := range uat.Contents { - if sp.SubType == UserAttrImageSubpacket && len(sp.Contents) > 16 { - imageData = append(imageData, sp.Contents[16:]) - } - } - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/userattribute_test.go b/vendor/golang.org/x/crypto/openpgp/packet/userattribute_test.go deleted file mode 100644 index 13ca5143..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/userattribute_test.go +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "bytes" - "encoding/base64" - "image/color" - "image/jpeg" - "testing" -) - -func TestParseUserAttribute(t *testing.T) { - r := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(userAttributePacket)) - for i := 0; i < 2; i++ { - p, err := Read(r) - if err != nil { - t.Fatal(err) - } - uat := p.(*UserAttribute) - imgs := uat.ImageData() - if len(imgs) != 1 { - t.Errorf("Unexpected number of images in user attribute packet: %d", len(imgs)) - } - if len(imgs[0]) != 3395 { - t.Errorf("Unexpected JPEG image size: %d", len(imgs[0])) - } - img, err := jpeg.Decode(bytes.NewBuffer(imgs[0])) - if err != nil { - t.Errorf("Error decoding JPEG image: %v", err) - } - // A pixel in my right eye. - pixel := color.NRGBAModel.Convert(img.At(56, 36)) - ref := color.NRGBA{R: 157, G: 128, B: 124, A: 255} - if pixel != ref { - t.Errorf("Unexpected pixel color: %v", pixel) - } - w := bytes.NewBuffer(nil) - err = uat.Serialize(w) - if err != nil { - t.Errorf("Error writing user attribute: %v", err) - } - r = bytes.NewBuffer(w.Bytes()) - } -} - -const userAttributePacket = ` -0cyWzJQBEAABAQAAAAAAAAAAAAAAAP/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sAQwAFAwQEBAMFBAQE -BQUFBgcMCAcHBwcPCgsJDBEPEhIRDxEQExYcFxMUGhUQERghGBocHR8fHxMXIiQiHiQcHh8e/9sA -QwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e -Hh4eHh4eHh4e/8AAEQgAZABkAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYH -CAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHw -JDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6 -g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk -5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIB -AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEX -GBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKT -lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX2 -9/j5+v/aAAwDAQACEQMRAD8A5uGP06VehQ4pIox04q5EnHSvAep+hIIl4zVuMHGPWmRrUWtalaaN -pU2oXsgSGJSxPr6ClvoitErs0Itqjc7BQOpPAFYmrfEnwjojtHNqaXEynBjtx5hH4jj9a8B8d+Od -W8UXZjWR4LJT+7t0Jwfc+prnIdO1CWZEW2mZ3HyDactXXDB3V5s8evm1namj6r0H4weCLtxG+ova -ueP30RA/MV6not1bX0Ed1ZzxzwyDKvGwZSPqK+Ff+ES8R8t/ZV2oHUmM10Hgbxp4m8BatEfNnWBH -/eWshOxx9Kmpg4te49RUM1kn+8Wh9zQ4P1FaMC7l465rjPh14y0fxnoseoaXOpfaPOgJ+eI98j09 -67W19M15bi4uzPSqTU480WXkjZkAyAR61DPE6OCSOalWRRgZxjvTb598sfU4FBwx5uY4T4feIm8P -TeJbAgc65NIM+8cX+FFeLfF3Vr3SfiNrMFrMypJMJcDPUqP8KK+kpVFyLU+ar037SXqX4hxVpMY7 -1UhPpVlT2rybKx9smWYz3NeH/EDVLzxt40j8O6bITaQybPlbKkjq39K9O8fasdH8IahfKxWQRFIy -Ou9uB/OuE/Z/0y3j1d9TuyoZCMs5xjuea1pLli5nn46q240l13PcfhN8EvDNtpcEl/CklyVBLuMk -mvU/Dfwo0BL/AO13FjEDD/qyV7Vn+CvGPg8zRpJrVm8ikLtEg6+1ew2dxZ3EQaJgysuQPasH7eXW -1zzsbVhT92kk/PsYieEND+zlPs6c/wCyAPyryH4wfCPRtW0u6j+xRLOxLxSoADkDpXY+MPjJ4c0S -9k082d3O8ZKkxw5XI96ytK+IGk+IpFjRpod+Qq3C7QT6A1E6NenaXbqRg6rlLlqS0fRnxjpd1r/w -w8afa7GWRPKbZLGeBKmeVNfZngLxNaeKfDdprVjxHcLlkJ5Vh1H5185/tDad9h8XOsqAw3Cb0cjq -CfX61P8AsveKf7L8T3fhe5nxa3g324YniQdh9R/KuivTdSmp9TXB1/Z1nRlsfU249QBx1pWfcwI7 -Cq6u2Ovamb9rYz16V5x7Psz5q/aJhZfibcupIElvE3H+7j+lFbXx9szP45jlUfeso8/99OKK9elL -3EeNVopzZVharCtxVRGGMk02S5JyFOB69zWTieypnL/GksfB+0cr9oQt69awPhPpD69Y3Ky3DWth -CWluGU4LAdq3vibGs/g68BJygVxjrwRW5+ztoRv/AAs8EeCZnO/J/hzz/Kumi4wp3kePjlOdZKPY -ml8Mvo6WM9ppi7J0EkQYMzkb1X0wW+bJHGACa+ivg14huZPCkjXUO6SImIYOQAP6UQ2sGneHmiWF -CYoSAAuM8etXfhBpMr+EZ3SSNRcMx6ZxWdes6ytBGSwkMNFuo7pnP614Ut9Zn1C4uLySKcwObGFA -Qnm4+XcR71h+CfDHiKCQWuv2YWFtw+bBZQD8rcE8n2Ney+GbGGQSM6I7xvtI681rXdp8hKRRp6t3 -FYPE1VDlsY1nQjWdl+J8w/tOeDZZ/AMd/EGefTHyxxyYjwfyODXg3waRh8UtEcFh+8Jb8FNfZPxh -Ak8J6nbPIsiyW7LnseK+Ofh99ptPHFnf2lu0y2twGcKuSEPB/Q1WHk50miq1o14TXU+xop+On61H -NMC6Nis1LgsAcUTSt1APFcXJZn0EqmhyvxA037friTYziBV6f7Tf40Vr3k4aXLx5OMZIzRXZB2ik -efJXbPHJJcnaD9aN2R1qoGO8/WkuLlIV+YjdjpXSonQ5lTxfiTwzqCnkeQxx9BWx+zPrQsrBFYja -zEfrXL6lfie3khcjY6lSPUGud+G3iA6FrY0uQ/KJsA9gCa0jSvFpnBi6tpKSPu++nsIfDFxeXciR -qIicscY4rxTwB8RUkn1axsPEf2LTYx85kTGzqCUP8VcJ47+JOs+I0Hhq1njjt/ufIeSvq1VtE+Gs -eoaUbSHUrkHdu3WtuX5Ix81XRh7OL5jirVpV5Whdn0F8C/iX4auVn0i612T7bASoe8wjTAd89K9g -vtSt5NMa4t5lkRhgOh3Dn6V8aaz8KZrIR3OlQ6r56LySmSxxz06Vo/CHx34h0rxBP4XvJ5AjK2RP -nEbAEj6ZxjPrWM6fMmoswqJxqJ1VZnqHxn1NLPwveqWHmNC2BnnNcD8DfDkGi+CH1m+ijN1qMzNA -4GSIiAMf+hVxPxU8Tapc3c0F9MGCn5GU5BX0Pau3+HmrT3XgXSIJCBHDGdgAx1NYSpezha52Yauq -1dya2Wh2onAIwTj1p0lxxWWLkhRyCKWa5O3ORXOos9KVQluZm83j0oqi84JyWH50Vdmc7ep43d3I -t1Z2Iz2FYdxeSTsxyRnvTdVuDNcNluM9KrKcg817NOnZGNbEXdkNckjrXGeIIprPxFFdRHAlIwem -COtdmxrG8Q2cd/ZNExw45RvQ1bVjim+dWNzw7eaTD4mN3dndCQCo6hmI5zXpj/Ea/wBHjkh0kwRW -xXEfl4yTxXzXZalJDL9nuWKMmRnHcV2Hh3WreCyYXW2SWQhd5P3F6n+lS43d2cTm6d7Ox9EWPxH1 -ODQxPqWpCaSU/ukUc4z3/WvKW8UhviAdaMewYZG98gj9c1ymoa8LyWOJHwkTDaVPb0qpr+q2m6Nb -cfvNo349az9mou9iZVXNWbub3jm98/Vza2ReV7lsJg/e3dsV654UR9N0K0sZP9ZDGFbHr3rzL4P+ -H7rXfEEWr3I3W1qf3IYdW9fwqDxf4k8UeH/G95p08kscHmk25dPlZT0we9YTj7SXKjpw1aNG8mj3 -FLv5ccU959ycnmvKPDnxB82YQarGsZPAlTp+IrvIr1ZIgySKwIyCOhFYTpyg9T0qWIhVV4svzPvf -IdhgY4orPachj81FRdmtzxqdiZmJ9aQEgdqZcPtmbJ71DJcAZ5r20kkeXJtsfPIQDwPzrG1a+S3i -LyHAHvmp7y7HOD1rlNdm+1T7Acovf3o+J2RMpezjzMvrob67pX9o2ShZlYgg/wAWKxZLLWLZ/Ke3 -mVh14yK9M+BMC3dre2ko3LHKCB7EV7EngeGQJdQ7HyBkMKS0djgq1W3c+XtK03U522RwzsTwNiEk -ntXoHgf4calql9El/G8UZbLfLyfr7V9FeGvh+s+0Lbxxcglu2K1NW1nwN4Gk/wBLuI57tV5jjwzE -/QVNS+0dWYRqNvXRFv4eeCodKsY1ggVIY1G3K4z714h+1Jqul3GpwaXYeXJLbzgyyrg4b+6D+HNb -vjz436zq9m+naHF/ZdkeGfOZXH17V4Vqt2b29K+ZuOc5bnce5zWdPBShL2lTfojSeJhy+zp/NjVz -1Bwa6DSfFGq6fbJFDKrov8DjPFcu97ZxsUe4jVhwVJ5Bpp1mwQiLewJPXacVq6fNpYyjOUXdHoKf -EG8VQHsInbuVcgflRXnt5fIs2FYHgcgUVi8LG+xusdW/mN7U2KgEVkTzPt60UVfQ9eHxGHrV1MGi -iD4V25x1qvdgLAMd6KK0pbHm4x++dp8FtUubLxJ5EIjMc+A4Za+qfD8pe1JZVOBmiinW3RyRPMfi -R8QPE638+k2l6LK0Hylbddhb6nOa80mlkcmWR2kcnlnOSaKK7qCXKcNdu5narcSrAoBxvODWJIga -VckjDdqKKwq/EaQ0gUdbjQ6mr7QGBUcd6tPBC6gtGpOOuKKKie5qn7qIpEXd0HSiiimSf//Z` diff --git a/vendor/golang.org/x/crypto/openpgp/packet/userid.go b/vendor/golang.org/x/crypto/openpgp/packet/userid.go deleted file mode 100644 index d6bea7d4..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/userid.go +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "io" - "io/ioutil" - "strings" -) - -// UserId contains text that is intended to represent the name and email -// address of the key holder. See RFC 4880, section 5.11. By convention, this -// takes the form "Full Name (Comment) " -type UserId struct { - Id string // By convention, this takes the form "Full Name (Comment) " which is split out in the fields below. - - Name, Comment, Email string -} - -func hasInvalidCharacters(s string) bool { - for _, c := range s { - switch c { - case '(', ')', '<', '>', 0: - return true - } - } - return false -} - -// NewUserId returns a UserId or nil if any of the arguments contain invalid -// characters. The invalid characters are '\x00', '(', ')', '<' and '>' -func NewUserId(name, comment, email string) *UserId { - // RFC 4880 doesn't deal with the structure of userid strings; the - // name, comment and email form is just a convention. However, there's - // no convention about escaping the metacharacters and GPG just refuses - // to create user ids where, say, the name contains a '('. We mirror - // this behaviour. - - if hasInvalidCharacters(name) || hasInvalidCharacters(comment) || hasInvalidCharacters(email) { - return nil - } - - uid := new(UserId) - uid.Name, uid.Comment, uid.Email = name, comment, email - uid.Id = name - if len(comment) > 0 { - if len(uid.Id) > 0 { - uid.Id += " " - } - uid.Id += "(" - uid.Id += comment - uid.Id += ")" - } - if len(email) > 0 { - if len(uid.Id) > 0 { - uid.Id += " " - } - uid.Id += "<" - uid.Id += email - uid.Id += ">" - } - return uid -} - -func (uid *UserId) parse(r io.Reader) (err error) { - // RFC 4880, section 5.11 - b, err := ioutil.ReadAll(r) - if err != nil { - return - } - uid.Id = string(b) - uid.Name, uid.Comment, uid.Email = parseUserId(uid.Id) - return -} - -// Serialize marshals uid to w in the form of an OpenPGP packet, including -// header. -func (uid *UserId) Serialize(w io.Writer) error { - err := serializeHeader(w, packetTypeUserId, len(uid.Id)) - if err != nil { - return err - } - _, err = w.Write([]byte(uid.Id)) - return err -} - -// parseUserId extracts the name, comment and email from a user id string that -// is formatted as "Full Name (Comment) ". -func parseUserId(id string) (name, comment, email string) { - var n, c, e struct { - start, end int - } - var state int - - for offset, rune := range id { - switch state { - case 0: - // Entering name - n.start = offset - state = 1 - fallthrough - case 1: - // In name - if rune == '(' { - state = 2 - n.end = offset - } else if rune == '<' { - state = 5 - n.end = offset - } - case 2: - // Entering comment - c.start = offset - state = 3 - fallthrough - case 3: - // In comment - if rune == ')' { - state = 4 - c.end = offset - } - case 4: - // Between comment and email - if rune == '<' { - state = 5 - } - case 5: - // Entering email - e.start = offset - state = 6 - fallthrough - case 6: - // In email - if rune == '>' { - state = 7 - e.end = offset - } - default: - // After email - } - } - switch state { - case 1: - // ended in the name - n.end = len(id) - case 3: - // ended in comment - c.end = len(id) - case 6: - // ended in email - e.end = len(id) - } - - name = strings.TrimSpace(id[n.start:n.end]) - comment = strings.TrimSpace(id[c.start:c.end]) - email = strings.TrimSpace(id[e.start:e.end]) - return -} diff --git a/vendor/golang.org/x/crypto/openpgp/packet/userid_test.go b/vendor/golang.org/x/crypto/openpgp/packet/userid_test.go deleted file mode 100644 index 29681938..00000000 --- a/vendor/golang.org/x/crypto/openpgp/packet/userid_test.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package packet - -import ( - "testing" -) - -var userIdTests = []struct { - id string - name, comment, email string -}{ - {"", "", "", ""}, - {"John Smith", "John Smith", "", ""}, - {"John Smith ()", "John Smith", "", ""}, - {"John Smith () <>", "John Smith", "", ""}, - {"(comment", "", "comment", ""}, - {"(comment)", "", "comment", ""}, - {" sdfk", "", "", "email"}, - {" John Smith ( Comment ) asdkflj < email > lksdfj", "John Smith", "Comment", "email"}, - {" John Smith < email > lksdfj", "John Smith", "", "email"}, - {"("}, - {"foo", "bar", "", "foo (bar)"}, - {"foo", "", "baz", "foo "}, - {"", "bar", "baz", "(bar) "}, - {"foo", "bar", "baz", "foo (bar) "}, -} - -func TestNewUserId(t *testing.T) { - for i, test := range newUserIdTests { - uid := NewUserId(test.name, test.comment, test.email) - if uid == nil { - t.Errorf("#%d: returned nil", i) - continue - } - if uid.Id != test.id { - t.Errorf("#%d: got '%s', want '%s'", i, uid.Id, test.id) - } - } -} - -var invalidNewUserIdTests = []struct { - name, comment, email string -}{ - {"foo(", "", ""}, - {"foo<", "", ""}, - {"", "bar)", ""}, - {"", "bar<", ""}, - {"", "", "baz>"}, - {"", "", "baz)"}, - {"", "", "baz\x00"}, -} - -func TestNewUserIdWithInvalidInput(t *testing.T) { - for i, test := range invalidNewUserIdTests { - if uid := NewUserId(test.name, test.comment, test.email); uid != nil { - t.Errorf("#%d: returned non-nil value: %#v", i, uid) - } - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/read.go b/vendor/golang.org/x/crypto/openpgp/read.go deleted file mode 100644 index 6ec664f4..00000000 --- a/vendor/golang.org/x/crypto/openpgp/read.go +++ /dev/null @@ -1,442 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package openpgp implements high level operations on OpenPGP messages. -package openpgp // import "golang.org/x/crypto/openpgp" - -import ( - "crypto" - _ "crypto/sha256" - "hash" - "io" - "strconv" - - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/packet" -) - -// SignatureType is the armor type for a PGP signature. -var SignatureType = "PGP SIGNATURE" - -// readArmored reads an armored block with the given type. -func readArmored(r io.Reader, expectedType string) (body io.Reader, err error) { - block, err := armor.Decode(r) - if err != nil { - return - } - - if block.Type != expectedType { - return nil, errors.InvalidArgumentError("expected '" + expectedType + "', got: " + block.Type) - } - - return block.Body, nil -} - -// MessageDetails contains the result of parsing an OpenPGP encrypted and/or -// signed message. -type MessageDetails struct { - IsEncrypted bool // true if the message was encrypted. - EncryptedToKeyIds []uint64 // the list of recipient key ids. - IsSymmetricallyEncrypted bool // true if a passphrase could have decrypted the message. - DecryptedWith Key // the private key used to decrypt the message, if any. - IsSigned bool // true if the message is signed. - SignedByKeyId uint64 // the key id of the signer, if any. - SignedBy *Key // the key of the signer, if available. - LiteralData *packet.LiteralData // the metadata of the contents - UnverifiedBody io.Reader // the contents of the message. - - // If IsSigned is true and SignedBy is non-zero then the signature will - // be verified as UnverifiedBody is read. The signature cannot be - // checked until the whole of UnverifiedBody is read so UnverifiedBody - // must be consumed until EOF before the data can be trusted. Even if a - // message isn't signed (or the signer is unknown) the data may contain - // an authentication code that is only checked once UnverifiedBody has - // been consumed. Once EOF has been seen, the following fields are - // valid. (An authentication code failure is reported as a - // SignatureError error when reading from UnverifiedBody.) - SignatureError error // nil if the signature is good. - Signature *packet.Signature // the signature packet itself, if v4 (default) - SignatureV3 *packet.SignatureV3 // the signature packet if it is a v2 or v3 signature - - decrypted io.ReadCloser -} - -// A PromptFunction is used as a callback by functions that may need to decrypt -// a private key, or prompt for a passphrase. It is called with a list of -// acceptable, encrypted private keys and a boolean that indicates whether a -// passphrase is usable. It should either decrypt a private key or return a -// passphrase to try. If the decrypted private key or given passphrase isn't -// correct, the function will be called again, forever. Any error returned will -// be passed up. -type PromptFunction func(keys []Key, symmetric bool) ([]byte, error) - -// A keyEnvelopePair is used to store a private key with the envelope that -// contains a symmetric key, encrypted with that key. -type keyEnvelopePair struct { - key Key - encryptedKey *packet.EncryptedKey -} - -// ReadMessage parses an OpenPGP message that may be signed and/or encrypted. -// The given KeyRing should contain both public keys (for signature -// verification) and, possibly encrypted, private keys for decrypting. -// If config is nil, sensible defaults will be used. -func ReadMessage(r io.Reader, keyring KeyRing, prompt PromptFunction, config *packet.Config) (md *MessageDetails, err error) { - var p packet.Packet - - var symKeys []*packet.SymmetricKeyEncrypted - var pubKeys []keyEnvelopePair - var se *packet.SymmetricallyEncrypted - - packets := packet.NewReader(r) - md = new(MessageDetails) - md.IsEncrypted = true - - // The message, if encrypted, starts with a number of packets - // containing an encrypted decryption key. The decryption key is either - // encrypted to a public key, or with a passphrase. This loop - // collects these packets. -ParsePackets: - for { - p, err = packets.Next() - if err != nil { - return nil, err - } - switch p := p.(type) { - case *packet.SymmetricKeyEncrypted: - // This packet contains the decryption key encrypted with a passphrase. - md.IsSymmetricallyEncrypted = true - symKeys = append(symKeys, p) - case *packet.EncryptedKey: - // This packet contains the decryption key encrypted to a public key. - md.EncryptedToKeyIds = append(md.EncryptedToKeyIds, p.KeyId) - switch p.Algo { - case packet.PubKeyAlgoRSA, packet.PubKeyAlgoRSAEncryptOnly, packet.PubKeyAlgoElGamal: - break - default: - continue - } - var keys []Key - if p.KeyId == 0 { - keys = keyring.DecryptionKeys() - } else { - keys = keyring.KeysById(p.KeyId) - } - for _, k := range keys { - pubKeys = append(pubKeys, keyEnvelopePair{k, p}) - } - case *packet.SymmetricallyEncrypted: - se = p - break ParsePackets - case *packet.Compressed, *packet.LiteralData, *packet.OnePassSignature: - // This message isn't encrypted. - if len(symKeys) != 0 || len(pubKeys) != 0 { - return nil, errors.StructuralError("key material not followed by encrypted message") - } - packets.Unread(p) - return readSignedMessage(packets, nil, keyring) - } - } - - var candidates []Key - var decrypted io.ReadCloser - - // Now that we have the list of encrypted keys we need to decrypt at - // least one of them or, if we cannot, we need to call the prompt - // function so that it can decrypt a key or give us a passphrase. -FindKey: - for { - // See if any of the keys already have a private key available - candidates = candidates[:0] - candidateFingerprints := make(map[string]bool) - - for _, pk := range pubKeys { - if pk.key.PrivateKey == nil { - continue - } - if !pk.key.PrivateKey.Encrypted { - if len(pk.encryptedKey.Key) == 0 { - pk.encryptedKey.Decrypt(pk.key.PrivateKey, config) - } - if len(pk.encryptedKey.Key) == 0 { - continue - } - decrypted, err = se.Decrypt(pk.encryptedKey.CipherFunc, pk.encryptedKey.Key) - if err != nil && err != errors.ErrKeyIncorrect { - return nil, err - } - if decrypted != nil { - md.DecryptedWith = pk.key - break FindKey - } - } else { - fpr := string(pk.key.PublicKey.Fingerprint[:]) - if v := candidateFingerprints[fpr]; v { - continue - } - candidates = append(candidates, pk.key) - candidateFingerprints[fpr] = true - } - } - - if len(candidates) == 0 && len(symKeys) == 0 { - return nil, errors.ErrKeyIncorrect - } - - if prompt == nil { - return nil, errors.ErrKeyIncorrect - } - - passphrase, err := prompt(candidates, len(symKeys) != 0) - if err != nil { - return nil, err - } - - // Try the symmetric passphrase first - if len(symKeys) != 0 && passphrase != nil { - for _, s := range symKeys { - key, cipherFunc, err := s.Decrypt(passphrase) - if err == nil { - decrypted, err = se.Decrypt(cipherFunc, key) - if err != nil && err != errors.ErrKeyIncorrect { - return nil, err - } - if decrypted != nil { - break FindKey - } - } - - } - } - } - - md.decrypted = decrypted - if err := packets.Push(decrypted); err != nil { - return nil, err - } - return readSignedMessage(packets, md, keyring) -} - -// readSignedMessage reads a possibly signed message if mdin is non-zero then -// that structure is updated and returned. Otherwise a fresh MessageDetails is -// used. -func readSignedMessage(packets *packet.Reader, mdin *MessageDetails, keyring KeyRing) (md *MessageDetails, err error) { - if mdin == nil { - mdin = new(MessageDetails) - } - md = mdin - - var p packet.Packet - var h hash.Hash - var wrappedHash hash.Hash -FindLiteralData: - for { - p, err = packets.Next() - if err != nil { - return nil, err - } - switch p := p.(type) { - case *packet.Compressed: - if err := packets.Push(p.Body); err != nil { - return nil, err - } - case *packet.OnePassSignature: - if !p.IsLast { - return nil, errors.UnsupportedError("nested signatures") - } - - h, wrappedHash, err = hashForSignature(p.Hash, p.SigType) - if err != nil { - md = nil - return - } - - md.IsSigned = true - md.SignedByKeyId = p.KeyId - keys := keyring.KeysByIdUsage(p.KeyId, packet.KeyFlagSign) - if len(keys) > 0 { - md.SignedBy = &keys[0] - } - case *packet.LiteralData: - md.LiteralData = p - break FindLiteralData - } - } - - if md.SignedBy != nil { - md.UnverifiedBody = &signatureCheckReader{packets, h, wrappedHash, md} - } else if md.decrypted != nil { - md.UnverifiedBody = checkReader{md} - } else { - md.UnverifiedBody = md.LiteralData.Body - } - - return md, nil -} - -// hashForSignature returns a pair of hashes that can be used to verify a -// signature. The signature may specify that the contents of the signed message -// should be preprocessed (i.e. to normalize line endings). Thus this function -// returns two hashes. The second should be used to hash the message itself and -// performs any needed preprocessing. -func hashForSignature(hashId crypto.Hash, sigType packet.SignatureType) (hash.Hash, hash.Hash, error) { - if !hashId.Available() { - return nil, nil, errors.UnsupportedError("hash not available: " + strconv.Itoa(int(hashId))) - } - h := hashId.New() - - switch sigType { - case packet.SigTypeBinary: - return h, h, nil - case packet.SigTypeText: - return h, NewCanonicalTextHash(h), nil - } - - return nil, nil, errors.UnsupportedError("unsupported signature type: " + strconv.Itoa(int(sigType))) -} - -// checkReader wraps an io.Reader from a LiteralData packet. When it sees EOF -// it closes the ReadCloser from any SymmetricallyEncrypted packet to trigger -// MDC checks. -type checkReader struct { - md *MessageDetails -} - -func (cr checkReader) Read(buf []byte) (n int, err error) { - n, err = cr.md.LiteralData.Body.Read(buf) - if err == io.EOF { - mdcErr := cr.md.decrypted.Close() - if mdcErr != nil { - err = mdcErr - } - } - return -} - -// signatureCheckReader wraps an io.Reader from a LiteralData packet and hashes -// the data as it is read. When it sees an EOF from the underlying io.Reader -// it parses and checks a trailing Signature packet and triggers any MDC checks. -type signatureCheckReader struct { - packets *packet.Reader - h, wrappedHash hash.Hash - md *MessageDetails -} - -func (scr *signatureCheckReader) Read(buf []byte) (n int, err error) { - n, err = scr.md.LiteralData.Body.Read(buf) - scr.wrappedHash.Write(buf[:n]) - if err == io.EOF { - var p packet.Packet - p, scr.md.SignatureError = scr.packets.Next() - if scr.md.SignatureError != nil { - return - } - - var ok bool - if scr.md.Signature, ok = p.(*packet.Signature); ok { - scr.md.SignatureError = scr.md.SignedBy.PublicKey.VerifySignature(scr.h, scr.md.Signature) - } else if scr.md.SignatureV3, ok = p.(*packet.SignatureV3); ok { - scr.md.SignatureError = scr.md.SignedBy.PublicKey.VerifySignatureV3(scr.h, scr.md.SignatureV3) - } else { - scr.md.SignatureError = errors.StructuralError("LiteralData not followed by Signature") - return - } - - // The SymmetricallyEncrypted packet, if any, might have an - // unsigned hash of its own. In order to check this we need to - // close that Reader. - if scr.md.decrypted != nil { - mdcErr := scr.md.decrypted.Close() - if mdcErr != nil { - err = mdcErr - } - } - } - return -} - -// CheckDetachedSignature takes a signed file and a detached signature and -// returns the signer if the signature is valid. If the signer isn't known, -// ErrUnknownIssuer is returned. -func CheckDetachedSignature(keyring KeyRing, signed, signature io.Reader) (signer *Entity, err error) { - var issuerKeyId uint64 - var hashFunc crypto.Hash - var sigType packet.SignatureType - var keys []Key - var p packet.Packet - - packets := packet.NewReader(signature) - for { - p, err = packets.Next() - if err == io.EOF { - return nil, errors.ErrUnknownIssuer - } - if err != nil { - return nil, err - } - - switch sig := p.(type) { - case *packet.Signature: - if sig.IssuerKeyId == nil { - return nil, errors.StructuralError("signature doesn't have an issuer") - } - issuerKeyId = *sig.IssuerKeyId - hashFunc = sig.Hash - sigType = sig.SigType - case *packet.SignatureV3: - issuerKeyId = sig.IssuerKeyId - hashFunc = sig.Hash - sigType = sig.SigType - default: - return nil, errors.StructuralError("non signature packet found") - } - - keys = keyring.KeysByIdUsage(issuerKeyId, packet.KeyFlagSign) - if len(keys) > 0 { - break - } - } - - if len(keys) == 0 { - panic("unreachable") - } - - h, wrappedHash, err := hashForSignature(hashFunc, sigType) - if err != nil { - return nil, err - } - - if _, err := io.Copy(wrappedHash, signed); err != nil && err != io.EOF { - return nil, err - } - - for _, key := range keys { - switch sig := p.(type) { - case *packet.Signature: - err = key.PublicKey.VerifySignature(h, sig) - case *packet.SignatureV3: - err = key.PublicKey.VerifySignatureV3(h, sig) - default: - panic("unreachable") - } - - if err == nil { - return key.Entity, nil - } - } - - return nil, err -} - -// CheckArmoredDetachedSignature performs the same actions as -// CheckDetachedSignature but expects the signature to be armored. -func CheckArmoredDetachedSignature(keyring KeyRing, signed, signature io.Reader) (signer *Entity, err error) { - body, err := readArmored(signature, SignatureType) - if err != nil { - return - } - - return CheckDetachedSignature(keyring, signed, body) -} diff --git a/vendor/golang.org/x/crypto/openpgp/read_test.go b/vendor/golang.org/x/crypto/openpgp/read_test.go deleted file mode 100644 index 1fbfbac4..00000000 --- a/vendor/golang.org/x/crypto/openpgp/read_test.go +++ /dev/null @@ -1,613 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package openpgp - -import ( - "bytes" - _ "crypto/sha512" - "encoding/hex" - "io" - "io/ioutil" - "strings" - "testing" - - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/errors" -) - -func readerFromHex(s string) io.Reader { - data, err := hex.DecodeString(s) - if err != nil { - panic("readerFromHex: bad input") - } - return bytes.NewBuffer(data) -} - -func TestReadKeyRing(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(testKeys1And2Hex)) - if err != nil { - t.Error(err) - return - } - if len(kring) != 2 || uint32(kring[0].PrimaryKey.KeyId) != 0xC20C31BB || uint32(kring[1].PrimaryKey.KeyId) != 0x1E35246B { - t.Errorf("bad keyring: %#v", kring) - } -} - -func TestRereadKeyRing(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(testKeys1And2Hex)) - if err != nil { - t.Errorf("error in initial parse: %s", err) - return - } - out := new(bytes.Buffer) - err = kring[0].Serialize(out) - if err != nil { - t.Errorf("error in serialization: %s", err) - return - } - kring, err = ReadKeyRing(out) - if err != nil { - t.Errorf("error in second parse: %s", err) - return - } - - if len(kring) != 1 || uint32(kring[0].PrimaryKey.KeyId) != 0xC20C31BB { - t.Errorf("bad keyring: %#v", kring) - } -} - -func TestReadPrivateKeyRing(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(testKeys1And2PrivateHex)) - if err != nil { - t.Error(err) - return - } - if len(kring) != 2 || uint32(kring[0].PrimaryKey.KeyId) != 0xC20C31BB || uint32(kring[1].PrimaryKey.KeyId) != 0x1E35246B || kring[0].PrimaryKey == nil { - t.Errorf("bad keyring: %#v", kring) - } -} - -func TestReadDSAKey(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(dsaTestKeyHex)) - if err != nil { - t.Error(err) - return - } - if len(kring) != 1 || uint32(kring[0].PrimaryKey.KeyId) != 0x0CCC0360 { - t.Errorf("bad parse: %#v", kring) - } -} - -func TestReadP256Key(t *testing.T) { - kring, err := ReadKeyRing(readerFromHex(p256TestKeyHex)) - if err != nil { - t.Error(err) - return - } - if len(kring) != 1 || uint32(kring[0].PrimaryKey.KeyId) != 0x5918513E { - t.Errorf("bad parse: %#v", kring) - } -} - -func TestDSAHashTruncatation(t *testing.T) { - // dsaKeyWithSHA512 was generated with GnuPG and --cert-digest-algo - // SHA512 in order to require DSA hash truncation to verify correctly. - _, err := ReadKeyRing(readerFromHex(dsaKeyWithSHA512)) - if err != nil { - t.Error(err) - } -} - -func TestGetKeyById(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(testKeys1And2Hex)) - - keys := kring.KeysById(0xa34d7e18c20c31bb) - if len(keys) != 1 || keys[0].Entity != kring[0] { - t.Errorf("bad result for 0xa34d7e18c20c31bb: %#v", keys) - } - - keys = kring.KeysById(0xfd94408d4543314f) - if len(keys) != 1 || keys[0].Entity != kring[0] { - t.Errorf("bad result for 0xa34d7e18c20c31bb: %#v", keys) - } -} - -func checkSignedMessage(t *testing.T, signedHex, expected string) { - kring, _ := ReadKeyRing(readerFromHex(testKeys1And2Hex)) - - md, err := ReadMessage(readerFromHex(signedHex), kring, nil, nil) - if err != nil { - t.Error(err) - return - } - - if !md.IsSigned || md.SignedByKeyId != 0xa34d7e18c20c31bb || md.SignedBy == nil || md.IsEncrypted || md.IsSymmetricallyEncrypted || len(md.EncryptedToKeyIds) != 0 || md.IsSymmetricallyEncrypted { - t.Errorf("bad MessageDetails: %#v", md) - } - - contents, err := ioutil.ReadAll(md.UnverifiedBody) - if err != nil { - t.Errorf("error reading UnverifiedBody: %s", err) - } - if string(contents) != expected { - t.Errorf("bad UnverifiedBody got:%s want:%s", string(contents), expected) - } - if md.SignatureError != nil || md.Signature == nil { - t.Errorf("failed to validate: %s", md.SignatureError) - } -} - -func TestSignedMessage(t *testing.T) { - checkSignedMessage(t, signedMessageHex, signedInput) -} - -func TestTextSignedMessage(t *testing.T) { - checkSignedMessage(t, signedTextMessageHex, signedTextInput) -} - -// The reader should detect "compressed quines", which are compressed -// packets that expand into themselves and cause an infinite recursive -// parsing loop. -// The packet in this test case comes from Taylor R. Campbell at -// http://mumble.net/~campbell/misc/pgp-quine/ -func TestCampbellQuine(t *testing.T) { - md, err := ReadMessage(readerFromHex(campbellQuine), nil, nil, nil) - if md != nil { - t.Errorf("Reading a compressed quine should not return any data: %#v", md) - } - structural, ok := err.(errors.StructuralError) - if !ok { - t.Fatalf("Unexpected class of error: %T", err) - } - if !strings.Contains(string(structural), "too many layers of packets") { - t.Fatalf("Unexpected error: %s", err) - } -} - -var signedEncryptedMessageTests = []struct { - keyRingHex string - messageHex string - signedByKeyId uint64 - encryptedToKeyId uint64 -}{ - { - testKeys1And2PrivateHex, - signedEncryptedMessageHex, - 0xa34d7e18c20c31bb, - 0x2a67d68660df41c7, - }, - { - dsaElGamalTestKeysHex, - signedEncryptedMessage2Hex, - 0x33af447ccd759b09, - 0xcf6a7abcd43e3673, - }, -} - -func TestSignedEncryptedMessage(t *testing.T) { - for i, test := range signedEncryptedMessageTests { - expected := "Signed and encrypted message\n" - kring, _ := ReadKeyRing(readerFromHex(test.keyRingHex)) - prompt := func(keys []Key, symmetric bool) ([]byte, error) { - if symmetric { - t.Errorf("prompt: message was marked as symmetrically encrypted") - return nil, errors.ErrKeyIncorrect - } - - if len(keys) == 0 { - t.Error("prompt: no keys requested") - return nil, errors.ErrKeyIncorrect - } - - err := keys[0].PrivateKey.Decrypt([]byte("passphrase")) - if err != nil { - t.Errorf("prompt: error decrypting key: %s", err) - return nil, errors.ErrKeyIncorrect - } - - return nil, nil - } - - md, err := ReadMessage(readerFromHex(test.messageHex), kring, prompt, nil) - if err != nil { - t.Errorf("#%d: error reading message: %s", i, err) - return - } - - if !md.IsSigned || md.SignedByKeyId != test.signedByKeyId || md.SignedBy == nil || !md.IsEncrypted || md.IsSymmetricallyEncrypted || len(md.EncryptedToKeyIds) == 0 || md.EncryptedToKeyIds[0] != test.encryptedToKeyId { - t.Errorf("#%d: bad MessageDetails: %#v", i, md) - } - - contents, err := ioutil.ReadAll(md.UnverifiedBody) - if err != nil { - t.Errorf("#%d: error reading UnverifiedBody: %s", i, err) - } - if string(contents) != expected { - t.Errorf("#%d: bad UnverifiedBody got:%s want:%s", i, string(contents), expected) - } - - if md.SignatureError != nil || md.Signature == nil { - t.Errorf("#%d: failed to validate: %s", i, md.SignatureError) - } - } -} - -func TestUnspecifiedRecipient(t *testing.T) { - expected := "Recipient unspecified\n" - kring, _ := ReadKeyRing(readerFromHex(testKeys1And2PrivateHex)) - - md, err := ReadMessage(readerFromHex(recipientUnspecifiedHex), kring, nil, nil) - if err != nil { - t.Errorf("error reading message: %s", err) - return - } - - contents, err := ioutil.ReadAll(md.UnverifiedBody) - if err != nil { - t.Errorf("error reading UnverifiedBody: %s", err) - } - if string(contents) != expected { - t.Errorf("bad UnverifiedBody got:%s want:%s", string(contents), expected) - } -} - -func TestSymmetricallyEncrypted(t *testing.T) { - firstTimeCalled := true - - prompt := func(keys []Key, symmetric bool) ([]byte, error) { - if len(keys) != 0 { - t.Errorf("prompt: len(keys) = %d (want 0)", len(keys)) - } - - if !symmetric { - t.Errorf("symmetric is not set") - } - - if firstTimeCalled { - firstTimeCalled = false - return []byte("wrongpassword"), nil - } - - return []byte("password"), nil - } - - md, err := ReadMessage(readerFromHex(symmetricallyEncryptedCompressedHex), nil, prompt, nil) - if err != nil { - t.Errorf("ReadMessage: %s", err) - return - } - - contents, err := ioutil.ReadAll(md.UnverifiedBody) - if err != nil { - t.Errorf("ReadAll: %s", err) - } - - expectedCreationTime := uint32(1295992998) - if md.LiteralData.Time != expectedCreationTime { - t.Errorf("LiteralData.Time is %d, want %d", md.LiteralData.Time, expectedCreationTime) - } - - const expected = "Symmetrically encrypted.\n" - if string(contents) != expected { - t.Errorf("contents got: %s want: %s", string(contents), expected) - } -} - -func testDetachedSignature(t *testing.T, kring KeyRing, signature io.Reader, sigInput, tag string, expectedSignerKeyId uint64) { - signed := bytes.NewBufferString(sigInput) - signer, err := CheckDetachedSignature(kring, signed, signature) - if err != nil { - t.Errorf("%s: signature error: %s", tag, err) - return - } - if signer == nil { - t.Errorf("%s: signer is nil", tag) - return - } - if signer.PrimaryKey.KeyId != expectedSignerKeyId { - t.Errorf("%s: wrong signer got:%x want:%x", tag, signer.PrimaryKey.KeyId, expectedSignerKeyId) - } -} - -func TestDetachedSignature(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(testKeys1And2Hex)) - testDetachedSignature(t, kring, readerFromHex(detachedSignatureHex), signedInput, "binary", testKey1KeyId) - testDetachedSignature(t, kring, readerFromHex(detachedSignatureTextHex), signedInput, "text", testKey1KeyId) - testDetachedSignature(t, kring, readerFromHex(detachedSignatureV3TextHex), signedInput, "v3", testKey1KeyId) - - incorrectSignedInput := signedInput + "X" - _, err := CheckDetachedSignature(kring, bytes.NewBufferString(incorrectSignedInput), readerFromHex(detachedSignatureHex)) - if err == nil { - t.Fatal("CheckDetachedSignature returned without error for bad signature") - } - if err == errors.ErrUnknownIssuer { - t.Fatal("CheckDetachedSignature returned ErrUnknownIssuer when the signer was known, but the signature invalid") - } -} - -func TestDetachedSignatureDSA(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(dsaTestKeyHex)) - testDetachedSignature(t, kring, readerFromHex(detachedSignatureDSAHex), signedInput, "binary", testKey3KeyId) -} - -func TestMultipleSignaturePacketsDSA(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(dsaTestKeyHex)) - testDetachedSignature(t, kring, readerFromHex(missingHashFunctionHex+detachedSignatureDSAHex), signedInput, "binary", testKey3KeyId) -} - -func TestDetachedSignatureP256(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(p256TestKeyHex)) - testDetachedSignature(t, kring, readerFromHex(detachedSignatureP256Hex), signedInput, "binary", testKeyP256KeyId) -} - -func testHashFunctionError(t *testing.T, signatureHex string) { - kring, _ := ReadKeyRing(readerFromHex(testKeys1And2Hex)) - _, err := CheckDetachedSignature(kring, nil, readerFromHex(signatureHex)) - if err == nil { - t.Fatal("Packet with bad hash type was correctly parsed") - } - unsupported, ok := err.(errors.UnsupportedError) - if !ok { - t.Fatalf("Unexpected class of error: %s", err) - } - if !strings.Contains(string(unsupported), "hash ") { - t.Fatalf("Unexpected error: %s", err) - } -} - -func TestUnknownHashFunction(t *testing.T) { - // unknownHashFunctionHex contains a signature packet with hash - // function type 153 (which isn't a real hash function id). - testHashFunctionError(t, unknownHashFunctionHex) -} - -func TestMissingHashFunction(t *testing.T) { - // missingHashFunctionHex contains a signature packet that uses - // RIPEMD160, which isn't compiled in. Since that's the only signature - // packet we don't find any suitable packets and end up with ErrUnknownIssuer - kring, _ := ReadKeyRing(readerFromHex(testKeys1And2Hex)) - _, err := CheckDetachedSignature(kring, nil, readerFromHex(missingHashFunctionHex)) - if err == nil { - t.Fatal("Packet with missing hash type was correctly parsed") - } - if err != errors.ErrUnknownIssuer { - t.Fatalf("Unexpected class of error: %s", err) - } -} - -func TestReadingArmoredPrivateKey(t *testing.T) { - el, err := ReadArmoredKeyRing(bytes.NewBufferString(armoredPrivateKeyBlock)) - if err != nil { - t.Error(err) - } - if len(el) != 1 { - t.Errorf("got %d entities, wanted 1\n", len(el)) - } -} - -func TestReadingArmoredPublicKey(t *testing.T) { - el, err := ReadArmoredKeyRing(bytes.NewBufferString(e2ePublicKey)) - if err != nil { - t.Error(err) - } - if len(el) != 1 { - t.Errorf("didn't get a valid entity") - } -} - -func TestNoArmoredData(t *testing.T) { - _, err := ReadArmoredKeyRing(bytes.NewBufferString("foo")) - if _, ok := err.(errors.InvalidArgumentError); !ok { - t.Errorf("error was not an InvalidArgumentError: %s", err) - } -} - -func testReadMessageError(t *testing.T, messageHex string) { - buf, err := hex.DecodeString(messageHex) - if err != nil { - t.Errorf("hex.DecodeString(): %v", err) - } - - kr, err := ReadKeyRing(new(bytes.Buffer)) - if err != nil { - t.Errorf("ReadKeyring(): %v", err) - } - - _, err = ReadMessage(bytes.NewBuffer(buf), kr, - func([]Key, bool) ([]byte, error) { - return []byte("insecure"), nil - }, nil) - - if err == nil { - t.Errorf("ReadMessage(): Unexpected nil error") - } -} - -func TestIssue11503(t *testing.T) { - testReadMessageError(t, "8c040402000aa430aa8228b9248b01fc899a91197130303030") -} - -func TestIssue11504(t *testing.T) { - testReadMessageError(t, "9303000130303030303030303030983002303030303030030000000130") -} - -// TestSignatureV3Message tests the verification of V3 signature, generated -// with a modern V4-style key. Some people have their clients set to generate -// V3 signatures, so it's useful to be able to verify them. -func TestSignatureV3Message(t *testing.T) { - sig, err := armor.Decode(strings.NewReader(signedMessageV3)) - if err != nil { - t.Error(err) - return - } - key, err := ReadArmoredKeyRing(strings.NewReader(keyV4forVerifyingSignedMessageV3)) - if err != nil { - t.Error(err) - return - } - md, err := ReadMessage(sig.Body, key, nil, nil) - if err != nil { - t.Error(err) - return - } - - _, err = ioutil.ReadAll(md.UnverifiedBody) - if err != nil { - t.Error(err) - return - } - - // We'll see a sig error here after reading in the UnverifiedBody above, - // if there was one to see. - if err = md.SignatureError; err != nil { - t.Error(err) - return - } - - if md.SignatureV3 == nil { - t.Errorf("No available signature after checking signature") - return - } - if md.Signature != nil { - t.Errorf("Did not expect a signature V4 back") - return - } - return -} - -const testKey1KeyId = 0xA34D7E18C20C31BB -const testKey3KeyId = 0x338934250CCC0360 -const testKeyP256KeyId = 0xd44a2c495918513e - -const signedInput = "Signed message\nline 2\nline 3\n" -const signedTextInput = "Signed message\r\nline 2\r\nline 3\r\n" - -const recipientUnspecifiedHex = "848c0300000000000000000103ff62d4d578d03cf40c3da998dfe216c074fa6ddec5e31c197c9666ba292830d91d18716a80f699f9d897389a90e6d62d0238f5f07a5248073c0f24920e4bc4a30c2d17ee4e0cae7c3d4aaa4e8dced50e3010a80ee692175fa0385f62ecca4b56ee6e9980aa3ec51b61b077096ac9e800edaf161268593eedb6cc7027ff5cb32745d250010d407a6221ae22ef18469b444f2822478c4d190b24d36371a95cb40087cdd42d9399c3d06a53c0673349bfb607927f20d1e122bde1e2bf3aa6cae6edf489629bcaa0689539ae3b718914d88ededc3b" - -const detachedSignatureHex = "889c04000102000605024d449cd1000a0910a34d7e18c20c31bb167603ff57718d09f28a519fdc7b5a68b6a3336da04df85e38c5cd5d5bd2092fa4629848a33d85b1729402a2aab39c3ac19f9d573f773cc62c264dc924c067a79dfd8a863ae06c7c8686120760749f5fd9b1e03a64d20a7df3446ddc8f0aeadeaeba7cbaee5c1e366d65b6a0c6cc749bcb912d2f15013f812795c2e29eb7f7b77f39ce77" - -const detachedSignatureTextHex = "889c04010102000605024d449d21000a0910a34d7e18c20c31bbc8c60400a24fbef7342603a41cb1165767bd18985d015fb72fe05db42db36cfb2f1d455967f1e491194fbf6cf88146222b23bf6ffbd50d17598d976a0417d3192ff9cc0034fd00f287b02e90418bbefe609484b09231e4e7a5f3562e199bf39909ab5276c4d37382fe088f6b5c3426fc1052865da8b3ab158672d58b6264b10823dc4b39" - -const detachedSignatureV3TextHex = "8900950305005255c25ca34d7e18c20c31bb0102bb3f04009f6589ef8a028d6e54f6eaf25432e590d31c3a41f4710897585e10c31e5e332c7f9f409af8512adceaff24d0da1474ab07aa7bce4f674610b010fccc5b579ae5eb00a127f272fb799f988ab8e4574c141da6dbfecfef7e6b2c478d9a3d2551ba741f260ee22bec762812f0053e05380bfdd55ad0f22d8cdf71b233fe51ae8a24" - -const detachedSignatureDSAHex = "884604001102000605024d6c4eac000a0910338934250ccc0360f18d00a087d743d6405ed7b87755476629600b8b694a39e900a0abff8126f46faf1547c1743c37b21b4ea15b8f83" - -const detachedSignatureP256Hex = "885e0400130a0006050256e5bb00000a0910d44a2c495918513edef001009841a4f792beb0befccb35c8838a6a87d9b936beaa86db6745ddc7b045eee0cf00fd1ac1f78306b17e965935dd3f8bae4587a76587e4af231efe19cc4011a8434817" - -const testKeys1And2Hex = "988d044d3c5c10010400b1d13382944bd5aba23a4312968b5095d14f947f600eb478e14a6fcb16b0e0cac764884909c020bc495cfcc39a935387c661507bdb236a0612fb582cac3af9b29cc2c8c70090616c41b662f4da4c1201e195472eb7f4ae1ccbcbf9940fe21d985e379a5563dde5b9a23d35f1cfaa5790da3b79db26f23695107bfaca8e7b5bcd0011010001b41054657374204b6579203120285253412988b804130102002205024d3c5c10021b03060b090807030206150802090a0b0416020301021e01021780000a0910a34d7e18c20c31bbb5b304009cc45fe610b641a2c146331be94dade0a396e73ca725e1b25c21708d9cab46ecca5ccebc23055879df8f99eea39b377962a400f2ebdc36a7c99c333d74aeba346315137c3ff9d0a09b0273299090343048afb8107cf94cbd1400e3026f0ccac7ecebbc4d78588eb3e478fe2754d3ca664bcf3eac96ca4a6b0c8d7df5102f60f6b0020003b88d044d3c5c10010400b201df61d67487301f11879d514f4248ade90c8f68c7af1284c161098de4c28c2850f1ec7b8e30f959793e571542ffc6532189409cb51c3d30dad78c4ad5165eda18b20d9826d8707d0f742e2ab492103a85bbd9ddf4f5720f6de7064feb0d39ee002219765bb07bcfb8b877f47abe270ddeda4f676108cecb6b9bb2ad484a4f0011010001889f04180102000905024d3c5c10021b0c000a0910a34d7e18c20c31bb1a03040085c8d62e16d05dc4e9dad64953c8a2eed8b6c12f92b1575eeaa6dcf7be9473dd5b24b37b6dffbb4e7c99ed1bd3cb11634be19b3e6e207bed7505c7ca111ccf47cb323bf1f8851eb6360e8034cbff8dd149993c959de89f8f77f38e7e98b8e3076323aa719328e2b408db5ec0d03936efd57422ba04f925cdc7b4c1af7590e40ab0020003988d044d3c5c33010400b488c3e5f83f4d561f317817538d9d0397981e9aef1321ca68ebfae1cf8b7d388e19f4b5a24a82e2fbbf1c6c26557a6c5845307a03d815756f564ac7325b02bc83e87d5480a8fae848f07cb891f2d51ce7df83dcafdc12324517c86d472cc0ee10d47a68fd1d9ae49a6c19bbd36d82af597a0d88cc9c49de9df4e696fc1f0b5d0011010001b42754657374204b6579203220285253412c20656e637279707465642070726976617465206b65792988b804130102002205024d3c5c33021b03060b090807030206150802090a0b0416020301021e01021780000a0910d4984f961e35246b98940400908a73b6a6169f700434f076c6c79015a49bee37130eaf23aaa3cfa9ce60bfe4acaa7bc95f1146ada5867e0079babb38804891f4f0b8ebca57a86b249dee786161a755b7a342e68ccf3f78ed6440a93a6626beb9a37aa66afcd4f888790cb4bb46d94a4ae3eb3d7d3e6b00f6bfec940303e89ec5b32a1eaaacce66497d539328b0020003b88d044d3c5c33010400a4e913f9442abcc7f1804ccab27d2f787ffa592077ca935a8bb23165bd8d57576acac647cc596b2c3f814518cc8c82953c7a4478f32e0cf645630a5ba38d9618ef2bc3add69d459ae3dece5cab778938d988239f8c5ae437807075e06c828019959c644ff05ef6a5a1dab72227c98e3a040b0cf219026640698d7a13d8538a570011010001889f04180102000905024d3c5c33021b0c000a0910d4984f961e35246b26c703ff7ee29ef53bc1ae1ead533c408fa136db508434e233d6e62be621e031e5940bbd4c08142aed0f82217e7c3e1ec8de574bc06ccf3c36633be41ad78a9eacd209f861cae7b064100758545cc9dd83db71806dc1cfd5fb9ae5c7474bba0c19c44034ae61bae5eca379383339dece94ff56ff7aa44a582f3e5c38f45763af577c0934b0020003" - -const testKeys1And2PrivateHex = "9501d8044d3c5c10010400b1d13382944bd5aba23a4312968b5095d14f947f600eb478e14a6fcb16b0e0cac764884909c020bc495cfcc39a935387c661507bdb236a0612fb582cac3af9b29cc2c8c70090616c41b662f4da4c1201e195472eb7f4ae1ccbcbf9940fe21d985e379a5563dde5b9a23d35f1cfaa5790da3b79db26f23695107bfaca8e7b5bcd00110100010003ff4d91393b9a8e3430b14d6209df42f98dc927425b881f1209f319220841273a802a97c7bdb8b3a7740b3ab5866c4d1d308ad0d3a79bd1e883aacf1ac92dfe720285d10d08752a7efe3c609b1d00f17f2805b217be53999a7da7e493bfc3e9618fd17018991b8128aea70a05dbce30e4fbe626aa45775fa255dd9177aabf4df7cf0200c1ded12566e4bc2bb590455e5becfb2e2c9796482270a943343a7835de41080582c2be3caf5981aa838140e97afa40ad652a0b544f83eb1833b0957dce26e47b0200eacd6046741e9ce2ec5beb6fb5e6335457844fb09477f83b050a96be7da043e17f3a9523567ed40e7a521f818813a8b8a72209f1442844843ccc7eb9805442570200bdafe0438d97ac36e773c7162028d65844c4d463e2420aa2228c6e50dc2743c3d6c72d0d782a5173fe7be2169c8a9f4ef8a7cf3e37165e8c61b89c346cdc6c1799d2b41054657374204b6579203120285253412988b804130102002205024d3c5c10021b03060b090807030206150802090a0b0416020301021e01021780000a0910a34d7e18c20c31bbb5b304009cc45fe610b641a2c146331be94dade0a396e73ca725e1b25c21708d9cab46ecca5ccebc23055879df8f99eea39b377962a400f2ebdc36a7c99c333d74aeba346315137c3ff9d0a09b0273299090343048afb8107cf94cbd1400e3026f0ccac7ecebbc4d78588eb3e478fe2754d3ca664bcf3eac96ca4a6b0c8d7df5102f60f6b00200009d01d8044d3c5c10010400b201df61d67487301f11879d514f4248ade90c8f68c7af1284c161098de4c28c2850f1ec7b8e30f959793e571542ffc6532189409cb51c3d30dad78c4ad5165eda18b20d9826d8707d0f742e2ab492103a85bbd9ddf4f5720f6de7064feb0d39ee002219765bb07bcfb8b877f47abe270ddeda4f676108cecb6b9bb2ad484a4f00110100010003fd17a7490c22a79c59281fb7b20f5e6553ec0c1637ae382e8adaea295f50241037f8997cf42c1ce26417e015091451b15424b2c59eb8d4161b0975630408e394d3b00f88d4b4e18e2cc85e8251d4753a27c639c83f5ad4a571c4f19d7cd460b9b73c25ade730c99df09637bd173d8e3e981ac64432078263bb6dc30d3e974150dd0200d0ee05be3d4604d2146fb0457f31ba17c057560785aa804e8ca5530a7cd81d3440d0f4ba6851efcfd3954b7e68908fc0ba47f7ac37bf559c6c168b70d3a7c8cd0200da1c677c4bce06a068070f2b3733b0a714e88d62aa3f9a26c6f5216d48d5c2b5624144f3807c0df30be66b3268eeeca4df1fbded58faf49fc95dc3c35f134f8b01fd1396b6c0fc1b6c4f0eb8f5e44b8eace1e6073e20d0b8bc5385f86f1cf3f050f66af789f3ef1fc107b7f4421e19e0349c730c68f0a226981f4e889054fdb4dc149e8e889f04180102000905024d3c5c10021b0c000a0910a34d7e18c20c31bb1a03040085c8d62e16d05dc4e9dad64953c8a2eed8b6c12f92b1575eeaa6dcf7be9473dd5b24b37b6dffbb4e7c99ed1bd3cb11634be19b3e6e207bed7505c7ca111ccf47cb323bf1f8851eb6360e8034cbff8dd149993c959de89f8f77f38e7e98b8e3076323aa719328e2b408db5ec0d03936efd57422ba04f925cdc7b4c1af7590e40ab00200009501fe044d3c5c33010400b488c3e5f83f4d561f317817538d9d0397981e9aef1321ca68ebfae1cf8b7d388e19f4b5a24a82e2fbbf1c6c26557a6c5845307a03d815756f564ac7325b02bc83e87d5480a8fae848f07cb891f2d51ce7df83dcafdc12324517c86d472cc0ee10d47a68fd1d9ae49a6c19bbd36d82af597a0d88cc9c49de9df4e696fc1f0b5d0011010001fe030302e9030f3c783e14856063f16938530e148bc57a7aa3f3e4f90df9dceccdc779bc0835e1ad3d006e4a8d7b36d08b8e0de5a0d947254ecfbd22037e6572b426bcfdc517796b224b0036ff90bc574b5509bede85512f2eefb520fb4b02aa523ba739bff424a6fe81c5041f253f8d757e69a503d3563a104d0d49e9e890b9d0c26f96b55b743883b472caa7050c4acfd4a21f875bdf1258d88bd61224d303dc9df77f743137d51e6d5246b88c406780528fd9a3e15bab5452e5b93970d9dcc79f48b38651b9f15bfbcf6da452837e9cc70683d1bdca94507870f743e4ad902005812488dd342f836e72869afd00ce1850eea4cfa53ce10e3608e13d3c149394ee3cbd0e23d018fcbcb6e2ec5a1a22972d1d462ca05355d0d290dd2751e550d5efb38c6c89686344df64852bf4ff86638708f644e8ec6bd4af9b50d8541cb91891a431326ab2e332faa7ae86cfb6e0540aa63160c1e5cdd5a4add518b303fff0a20117c6bc77f7cfbaf36b04c865c6c2b42754657374204b6579203220285253412c20656e637279707465642070726976617465206b65792988b804130102002205024d3c5c33021b03060b090807030206150802090a0b0416020301021e01021780000a0910d4984f961e35246b98940400908a73b6a6169f700434f076c6c79015a49bee37130eaf23aaa3cfa9ce60bfe4acaa7bc95f1146ada5867e0079babb38804891f4f0b8ebca57a86b249dee786161a755b7a342e68ccf3f78ed6440a93a6626beb9a37aa66afcd4f888790cb4bb46d94a4ae3eb3d7d3e6b00f6bfec940303e89ec5b32a1eaaacce66497d539328b00200009d01fe044d3c5c33010400a4e913f9442abcc7f1804ccab27d2f787ffa592077ca935a8bb23165bd8d57576acac647cc596b2c3f814518cc8c82953c7a4478f32e0cf645630a5ba38d9618ef2bc3add69d459ae3dece5cab778938d988239f8c5ae437807075e06c828019959c644ff05ef6a5a1dab72227c98e3a040b0cf219026640698d7a13d8538a570011010001fe030302e9030f3c783e148560f936097339ae381d63116efcf802ff8b1c9360767db5219cc987375702a4123fd8657d3e22700f23f95020d1b261eda5257e9a72f9a918e8ef22dd5b3323ae03bbc1923dd224db988cadc16acc04b120a9f8b7e84da9716c53e0334d7b66586ddb9014df604b41be1e960dcfcbc96f4ed150a1a0dd070b9eb14276b9b6be413a769a75b519a53d3ecc0c220e85cd91ca354d57e7344517e64b43b6e29823cbd87eae26e2b2e78e6dedfbb76e3e9f77bcb844f9a8932eb3db2c3f9e44316e6f5d60e9e2a56e46b72abe6b06dc9a31cc63f10023d1f5e12d2a3ee93b675c96f504af0001220991c88db759e231b3320dcedf814dcf723fd9857e3d72d66a0f2af26950b915abdf56c1596f46a325bf17ad4810d3535fb02a259b247ac3dbd4cc3ecf9c51b6c07cebb009c1506fba0a89321ec8683e3fd009a6e551d50243e2d5092fefb3321083a4bad91320dc624bd6b5dddf93553e3d53924c05bfebec1fb4bd47e89a1a889f04180102000905024d3c5c33021b0c000a0910d4984f961e35246b26c703ff7ee29ef53bc1ae1ead533c408fa136db508434e233d6e62be621e031e5940bbd4c08142aed0f82217e7c3e1ec8de574bc06ccf3c36633be41ad78a9eacd209f861cae7b064100758545cc9dd83db71806dc1cfd5fb9ae5c7474bba0c19c44034ae61bae5eca379383339dece94ff56ff7aa44a582f3e5c38f45763af577c0934b0020000" - -const dsaElGamalTestKeysHex = "9501e1044dfcb16a110400aa3e5c1a1f43dd28c2ffae8abf5cfce555ee874134d8ba0a0f7b868ce2214beddc74e5e1e21ded354a95d18acdaf69e5e342371a71fbb9093162e0c5f3427de413a7f2c157d83f5cd2f9d791256dc4f6f0e13f13c3302af27f2384075ab3021dff7a050e14854bbde0a1094174855fc02f0bae8e00a340d94a1f22b32e48485700a0cec672ac21258fb95f61de2ce1af74b2c4fa3e6703ff698edc9be22c02ae4d916e4fa223f819d46582c0516235848a77b577ea49018dcd5e9e15cff9dbb4663a1ae6dd7580fa40946d40c05f72814b0f88481207e6c0832c3bded4853ebba0a7e3bd8e8c66df33d5a537cd4acf946d1080e7a3dcea679cb2b11a72a33a2b6a9dc85f466ad2ddf4c3db6283fa645343286971e3dd700703fc0c4e290d45767f370831a90187e74e9972aae5bff488eeff7d620af0362bfb95c1a6c3413ab5d15a2e4139e5d07a54d72583914661ed6a87cce810be28a0aa8879a2dd39e52fb6fe800f4f181ac7e328f740cde3d09a05cecf9483e4cca4253e60d4429ffd679d9996a520012aad119878c941e3cf151459873bdfc2a9563472fe0303027a728f9feb3b864260a1babe83925ce794710cfd642ee4ae0e5b9d74cee49e9c67b6cd0ea5dfbb582132195a121356a1513e1bca73e5b80c58c7ccb4164453412f456c47616d616c2054657374204b65792031886204131102002205024dfcb16a021b03060b090807030206150802090a0b0416020301021e01021780000a091033af447ccd759b09fadd00a0b8fd6f5a790bad7e9f2dbb7632046dc4493588db009c087c6a9ba9f7f49fab221587a74788c00db4889ab00200009d0157044dfcb16a1004008dec3f9291205255ccff8c532318133a6840739dd68b03ba942676f9038612071447bf07d00d559c5c0875724ea16a4c774f80d8338b55fca691a0522e530e604215b467bbc9ccfd483a1da99d7bc2648b4318fdbd27766fc8bfad3fddb37c62b8ae7ccfe9577e9b8d1e77c1d417ed2c2ef02d52f4da11600d85d3229607943700030503ff506c94c87c8cab778e963b76cf63770f0a79bf48fb49d3b4e52234620fc9f7657f9f8d56c96a2b7c7826ae6b57ebb2221a3fe154b03b6637cea7e6d98e3e45d87cf8dc432f723d3d71f89c5192ac8d7290684d2c25ce55846a80c9a7823f6acd9bb29fa6cd71f20bc90eccfca20451d0c976e460e672b000df49466408d527affe0303027a728f9feb3b864260abd761730327bca2aaa4ea0525c175e92bf240682a0e83b226f97ecb2e935b62c9a133858ce31b271fa8eb41f6a1b3cd72a63025ce1a75ee4180dcc284884904181102000905024dfcb16a021b0c000a091033af447ccd759b09dd0b009e3c3e7296092c81bee5a19929462caaf2fff3ae26009e218c437a2340e7ea628149af1ec98ec091a43992b00200009501e1044dfcb1be1104009f61faa61aa43df75d128cbe53de528c4aec49ce9360c992e70c77072ad5623de0a3a6212771b66b39a30dad6781799e92608316900518ec01184a85d872365b7d2ba4bacfb5882ea3c2473d3750dc6178cc1cf82147fb58caa28b28e9f12f6d1efcb0534abed644156c91cca4ab78834268495160b2400bc422beb37d237c2300a0cac94911b6d493bda1e1fbc6feeca7cb7421d34b03fe22cec6ccb39675bb7b94a335c2b7be888fd3906a1125f33301d8aa6ec6ee6878f46f73961c8d57a3e9544d8ef2a2cbfd4d52da665b1266928cfe4cb347a58c412815f3b2d2369dec04b41ac9a71cc9547426d5ab941cccf3b18575637ccfb42df1a802df3cfe0a999f9e7109331170e3a221991bf868543960f8c816c28097e503fe319db10fb98049f3a57d7c80c420da66d56f3644371631fad3f0ff4040a19a4fedc2d07727a1b27576f75a4d28c47d8246f27071e12d7a8de62aad216ddbae6aa02efd6b8a3e2818cda48526549791ab277e447b3a36c57cefe9b592f5eab73959743fcc8e83cbefec03a329b55018b53eec196765ae40ef9e20521a603c551efe0303020950d53a146bf9c66034d00c23130cce95576a2ff78016ca471276e8227fb30b1ffbd92e61804fb0c3eff9e30b1a826ee8f3e4730b4d86273ca977b4164453412f456c47616d616c2054657374204b65792032886204131102002205024dfcb1be021b03060b090807030206150802090a0b0416020301021e01021780000a0910a86bf526325b21b22bd9009e34511620415c974750a20df5cb56b182f3b48e6600a0a9466cb1a1305a84953445f77d461593f1d42bc1b00200009d0157044dfcb1be1004009565a951da1ee87119d600c077198f1c1bceb0f7aa54552489298e41ff788fa8f0d43a69871f0f6f77ebdfb14a4260cf9fbeb65d5844b4272a1904dd95136d06c3da745dc46327dd44a0f16f60135914368c8039a34033862261806bb2c5ce1152e2840254697872c85441ccb7321431d75a747a4bfb1d2c66362b51ce76311700030503fc0ea76601c196768070b7365a200e6ddb09307f262d5f39eec467b5f5784e22abdf1aa49226f59ab37cb49969d8f5230ea65caf56015abda62604544ed526c5c522bf92bed178a078789f6c807b6d34885688024a5bed9e9f8c58d11d4b82487b44c5f470c5606806a0443b79cadb45e0f897a561a53f724e5349b9267c75ca17fe0303020950d53a146bf9c660bc5f4ce8f072465e2d2466434320c1e712272fafc20e342fe7608101580fa1a1a367e60486a7cd1246b7ef5586cf5e10b32762b710a30144f12dd17dd4884904181102000905024dfcb1be021b0c000a0910a86bf526325b21b2904c00a0b2b66b4b39ccffda1d10f3ea8d58f827e30a8b8e009f4255b2d8112a184e40cde43a34e8655ca7809370b0020000" - -const signedMessageHex = "a3019bc0cbccc0c4b8d8b74ee2108fe16ec6d3ca490cbe362d3f8333d3f352531472538b8b13d353b97232f352158c20943157c71c16064626063656269052062e4e01987e9b6fccff4b7df3a34c534b23e679cbec3bc0f8f6e64dfb4b55fe3f8efa9ce110ddb5cd79faf1d753c51aecfa669f7e7aa043436596cccc3359cb7dd6bbe9ecaa69e5989d9e57209571edc0b2fa7f57b9b79a64ee6e99ce1371395fee92fec2796f7b15a77c386ff668ee27f6d38f0baa6c438b561657377bf6acff3c5947befd7bf4c196252f1d6e5c524d0300" - -const signedTextMessageHex = "a3019bc0cbccc8c4b8d8b74ee2108fe16ec6d36a250cbece0c178233d3f352531472538b8b13d35379b97232f352158ca0b4312f57c71c1646462606365626906a062e4e019811591798ff99bf8afee860b0d8a8c2a85c3387e3bcf0bb3b17987f2bbcfab2aa526d930cbfd3d98757184df3995c9f3e7790e36e3e9779f06089d4c64e9e47dd6202cb6e9bc73c5d11bb59fbaf89d22d8dc7cf199ddf17af96e77c5f65f9bbed56f427bd8db7af37f6c9984bf9385efaf5f184f986fb3e6adb0ecfe35bbf92d16a7aa2a344fb0bc52fb7624f0200" - -const signedEncryptedMessageHex = "848c032a67d68660df41c70103ff5789d0de26b6a50c985a02a13131ca829c413a35d0e6fa8d6842599252162808ac7439c72151c8c6183e76923fe3299301414d0c25a2f06a2257db3839e7df0ec964773f6e4c4ac7ff3b48c444237166dd46ba8ff443a5410dc670cb486672fdbe7c9dfafb75b4fea83af3a204fe2a7dfa86bd20122b4f3d2646cbeecb8f7be8d2c03b018bd210b1d3791e1aba74b0f1034e122ab72e760492c192383cf5e20b5628bd043272d63df9b923f147eb6091cd897553204832aba48fec54aa447547bb16305a1024713b90e77fd0065f1918271947549205af3c74891af22ee0b56cd29bfec6d6e351901cd4ab3ece7c486f1e32a792d4e474aed98ee84b3f591c7dff37b64e0ecd68fd036d517e412dcadf85840ce184ad7921ad446c4ee28db80447aea1ca8d4f574db4d4e37688158ddd19e14ee2eab4873d46947d65d14a23e788d912cf9a19624ca7352469b72a83866b7c23cb5ace3deab3c7018061b0ba0f39ed2befe27163e5083cf9b8271e3e3d52cc7ad6e2a3bd81d4c3d7022f8d" - -const signedEncryptedMessage2Hex = "85010e03cf6a7abcd43e36731003fb057f5495b79db367e277cdbe4ab90d924ddee0c0381494112ff8c1238fb0184af35d1731573b01bc4c55ecacd2aafbe2003d36310487d1ecc9ac994f3fada7f9f7f5c3a64248ab7782906c82c6ff1303b69a84d9a9529c31ecafbcdb9ba87e05439897d87e8a2a3dec55e14df19bba7f7bd316291c002ae2efd24f83f9e3441203fc081c0c23dc3092a454ca8a082b27f631abf73aca341686982e8fbda7e0e7d863941d68f3de4a755c2964407f4b5e0477b3196b8c93d551dd23c8beef7d0f03fbb1b6066f78907faf4bf1677d8fcec72651124080e0b7feae6b476e72ab207d38d90b958759fdedfc3c6c35717c9dbfc979b3cfbbff0a76d24a5e57056bb88acbd2a901ef64bc6e4db02adc05b6250ff378de81dca18c1910ab257dff1b9771b85bb9bbe0a69f5989e6d1710a35e6dfcceb7d8fb5ccea8db3932b3d9ff3fe0d327597c68b3622aec8e3716c83a6c93f497543b459b58ba504ed6bcaa747d37d2ca746fe49ae0a6ce4a8b694234e941b5159ff8bd34b9023da2814076163b86f40eed7c9472f81b551452d5ab87004a373c0172ec87ea6ce42ccfa7dbdad66b745496c4873d8019e8c28d6b3" - -const symmetricallyEncryptedCompressedHex = "8c0d04030302eb4a03808145d0d260c92f714339e13de5a79881216431925bf67ee2898ea61815f07894cd0703c50d0a76ef64d482196f47a8bc729af9b80bb6" - -const dsaTestKeyHex = "9901a2044d6c49de110400cb5ce438cf9250907ac2ba5bf6547931270b89f7c4b53d9d09f4d0213a5ef2ec1f26806d3d259960f872a4a102ef1581ea3f6d6882d15134f21ef6a84de933cc34c47cc9106efe3bd84c6aec12e78523661e29bc1a61f0aab17fa58a627fd5fd33f5149153fbe8cd70edf3d963bc287ef875270ff14b5bfdd1bca4483793923b00a0fe46d76cb6e4cbdc568435cd5480af3266d610d303fe33ae8273f30a96d4d34f42fa28ce1112d425b2e3bf7ea553d526e2db6b9255e9dc7419045ce817214d1a0056dbc8d5289956a4b1b69f20f1105124096e6a438f41f2e2495923b0f34b70642607d45559595c7fe94d7fa85fc41bf7d68c1fd509ebeaa5f315f6059a446b9369c277597e4f474a9591535354c7e7f4fd98a08aa60400b130c24ff20bdfbf683313f5daebf1c9b34b3bdadfc77f2ddd72ee1fb17e56c473664bc21d66467655dd74b9005e3a2bacce446f1920cd7017231ae447b67036c9b431b8179deacd5120262d894c26bc015bffe3d827ba7087ad9b700d2ca1f6d16cc1786581e5dd065f293c31209300f9b0afcc3f7c08dd26d0a22d87580b4db41054657374204b65792033202844534129886204131102002205024d6c49de021b03060b090807030206150802090a0b0416020301021e01021780000a0910338934250ccc03607e0400a0bdb9193e8a6b96fc2dfc108ae848914b504481f100a09c4dc148cb693293a67af24dd40d2b13a9e36794" - -const dsaTestKeyPrivateHex = "9501bb044d6c49de110400cb5ce438cf9250907ac2ba5bf6547931270b89f7c4b53d9d09f4d0213a5ef2ec1f26806d3d259960f872a4a102ef1581ea3f6d6882d15134f21ef6a84de933cc34c47cc9106efe3bd84c6aec12e78523661e29bc1a61f0aab17fa58a627fd5fd33f5149153fbe8cd70edf3d963bc287ef875270ff14b5bfdd1bca4483793923b00a0fe46d76cb6e4cbdc568435cd5480af3266d610d303fe33ae8273f30a96d4d34f42fa28ce1112d425b2e3bf7ea553d526e2db6b9255e9dc7419045ce817214d1a0056dbc8d5289956a4b1b69f20f1105124096e6a438f41f2e2495923b0f34b70642607d45559595c7fe94d7fa85fc41bf7d68c1fd509ebeaa5f315f6059a446b9369c277597e4f474a9591535354c7e7f4fd98a08aa60400b130c24ff20bdfbf683313f5daebf1c9b34b3bdadfc77f2ddd72ee1fb17e56c473664bc21d66467655dd74b9005e3a2bacce446f1920cd7017231ae447b67036c9b431b8179deacd5120262d894c26bc015bffe3d827ba7087ad9b700d2ca1f6d16cc1786581e5dd065f293c31209300f9b0afcc3f7c08dd26d0a22d87580b4d00009f592e0619d823953577d4503061706843317e4fee083db41054657374204b65792033202844534129886204131102002205024d6c49de021b03060b090807030206150802090a0b0416020301021e01021780000a0910338934250ccc03607e0400a0bdb9193e8a6b96fc2dfc108ae848914b504481f100a09c4dc148cb693293a67af24dd40d2b13a9e36794" - -const p256TestKeyHex = "98520456e5b83813082a8648ce3d030107020304a2072cd6d21321266c758cc5b83fab0510f751cb8d91897cddb7047d8d6f185546e2107111b0a95cb8ef063c33245502af7a65f004d5919d93ee74eb71a66253b424502d3235362054657374204b6579203c696e76616c6964406578616d706c652e636f6d3e8879041313080021050256e5b838021b03050b09080702061508090a0b020416020301021e01021780000a0910d44a2c495918513e54e50100dfa64f97d9b47766fc1943c6314ba3f2b2a103d71ad286dc5b1efb96a345b0c80100dbc8150b54241f559da6ef4baacea6d31902b4f4b1bdc09b34bf0502334b7754b8560456e5b83812082a8648ce3d030107020304bfe3cea9cee13486f8d518aa487fecab451f25467d2bf08e58f63e5fa525d5482133e6a79299c274b068ef0be448152ad65cf11cf764348588ca4f6a0bcf22b6030108078861041813080009050256e5b838021b0c000a0910d44a2c495918513e4a4800ff49d589fa64024ad30be363a032e3a0e0e6f5db56ba4c73db850518bf0121b8f20100fd78e065f4c70ea5be9df319ea67e493b936fc78da834a71828043d3154af56e" - -const p256TestKeyPrivateHex = "94a50456e5b83813082a8648ce3d030107020304a2072cd6d21321266c758cc5b83fab0510f751cb8d91897cddb7047d8d6f185546e2107111b0a95cb8ef063c33245502af7a65f004d5919d93ee74eb71a66253fe070302f0c2bfb0b6c30f87ee1599472b8636477eab23ced13b271886a4b50ed34c9d8436af5af5b8f88921f0efba6ef8c37c459bbb88bc1c6a13bbd25c4ce9b1e97679569ee77645d469bf4b43de637f5561b424502d3235362054657374204b6579203c696e76616c6964406578616d706c652e636f6d3e8879041313080021050256e5b838021b03050b09080702061508090a0b020416020301021e01021780000a0910d44a2c495918513e54e50100dfa64f97d9b47766fc1943c6314ba3f2b2a103d71ad286dc5b1efb96a345b0c80100dbc8150b54241f559da6ef4baacea6d31902b4f4b1bdc09b34bf0502334b77549ca90456e5b83812082a8648ce3d030107020304bfe3cea9cee13486f8d518aa487fecab451f25467d2bf08e58f63e5fa525d5482133e6a79299c274b068ef0be448152ad65cf11cf764348588ca4f6a0bcf22b603010807fe0703027510012471a603cfee2968dce19f732721ddf03e966fd133b4e3c7a685b788705cbc46fb026dc94724b830c9edbaecd2fb2c662f23169516cacd1fe423f0475c364ecc10abcabcfd4bbbda1a36a1bd8861041813080009050256e5b838021b0c000a0910d44a2c495918513e4a4800ff49d589fa64024ad30be363a032e3a0e0e6f5db56ba4c73db850518bf0121b8f20100fd78e065f4c70ea5be9df319ea67e493b936fc78da834a71828043d3154af56e" - -const armoredPrivateKeyBlock = `-----BEGIN PGP PRIVATE KEY BLOCK----- -Version: GnuPG v1.4.10 (GNU/Linux) - -lQHYBE2rFNoBBADFwqWQIW/DSqcB4yCQqnAFTJ27qS5AnB46ccAdw3u4Greeu3Bp -idpoHdjULy7zSKlwR1EA873dO/k/e11Ml3dlAFUinWeejWaK2ugFP6JjiieSsrKn -vWNicdCS4HTWn0X4sjl0ZiAygw6GNhqEQ3cpLeL0g8E9hnYzJKQ0LWJa0QARAQAB -AAP/TB81EIo2VYNmTq0pK1ZXwUpxCrvAAIG3hwKjEzHcbQznsjNvPUihZ+NZQ6+X -0HCfPAdPkGDCLCb6NavcSW+iNnLTrdDnSI6+3BbIONqWWdRDYJhqZCkqmG6zqSfL -IdkJgCw94taUg5BWP/AAeQrhzjChvpMQTVKQL5mnuZbUCeMCAN5qrYMP2S9iKdnk -VANIFj7656ARKt/nf4CBzxcpHTyB8+d2CtPDKCmlJP6vL8t58Jmih+kHJMvC0dzn -gr5f5+sCAOOe5gt9e0am7AvQWhdbHVfJU0TQJx+m2OiCJAqGTB1nvtBLHdJnfdC9 -TnXXQ6ZXibqLyBies/xeY2sCKL5qtTMCAKnX9+9d/5yQxRyrQUHt1NYhaXZnJbHx -q4ytu0eWz+5i68IYUSK69jJ1NWPM0T6SkqpB3KCAIv68VFm9PxqG1KmhSrQIVGVz -dCBLZXmIuAQTAQIAIgUCTasU2gIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA -CgkQO9o98PRieSoLhgQAkLEZex02Qt7vGhZzMwuN0R22w3VwyYyjBx+fM3JFETy1 -ut4xcLJoJfIaF5ZS38UplgakHG0FQ+b49i8dMij0aZmDqGxrew1m4kBfjXw9B/v+ -eIqpODryb6cOSwyQFH0lQkXC040pjq9YqDsO5w0WYNXYKDnzRV0p4H1pweo2VDid -AdgETasU2gEEAN46UPeWRqKHvA99arOxee38fBt2CI08iiWyI8T3J6ivtFGixSqV -bRcPxYO/qLpVe5l84Nb3X71GfVXlc9hyv7CD6tcowL59hg1E/DC5ydI8K8iEpUmK -/UnHdIY5h8/kqgGxkY/T/hgp5fRQgW1ZoZxLajVlMRZ8W4tFtT0DeA+JABEBAAEA -A/0bE1jaaZKj6ndqcw86jd+QtD1SF+Cf21CWRNeLKnUds4FRRvclzTyUMuWPkUeX -TaNNsUOFqBsf6QQ2oHUBBK4VCHffHCW4ZEX2cd6umz7mpHW6XzN4DECEzOVksXtc -lUC1j4UB91DC/RNQqwX1IV2QLSwssVotPMPqhOi0ZLNY7wIA3n7DWKInxYZZ4K+6 -rQ+POsz6brEoRHwr8x6XlHenq1Oki855pSa1yXIARoTrSJkBtn5oI+f8AzrnN0BN -oyeQAwIA/7E++3HDi5aweWrViiul9cd3rcsS0dEnksPhvS0ozCJiHsq/6GFmy7J8 -QSHZPteedBnZyNp5jR+H7cIfVN3KgwH/Skq4PsuPhDq5TKK6i8Pc1WW8MA6DXTdU -nLkX7RGmMwjC0DBf7KWAlPjFaONAX3a8ndnz//fy1q7u2l9AZwrj1qa1iJ8EGAEC -AAkFAk2rFNoCGwwACgkQO9o98PRieSo2/QP/WTzr4ioINVsvN1akKuekmEMI3LAp -BfHwatufxxP1U+3Si/6YIk7kuPB9Hs+pRqCXzbvPRrI8NHZBmc8qIGthishdCYad -AHcVnXjtxrULkQFGbGvhKURLvS9WnzD/m1K2zzwxzkPTzT9/Yf06O6Mal5AdugPL -VrM0m72/jnpKo04= -=zNCn ------END PGP PRIVATE KEY BLOCK-----` - -const e2ePublicKey = `-----BEGIN PGP PUBLIC KEY BLOCK----- -Charset: UTF-8 - -xv8AAABSBAAAAAATCCqGSM49AwEHAgME1LRoXSpOxtHXDUdmuvzchyg6005qIBJ4 -sfaSxX7QgH9RV2ONUhC+WiayCNADq+UMzuR/vunSr4aQffXvuGnR383/AAAAFDxk -Z2lsQHlhaG9vLWluYy5jb20+wv8AAACGBBATCAA4/wAAAAWCVGvAG/8AAAACiwn/ -AAAACZC2VkQCOjdvYf8AAAAFlQgJCgv/AAAAA5YBAv8AAAACngEAAE1BAP0X8veD -24IjmI5/C6ZAfVNXxgZZFhTAACFX75jUA3oD6AEAzoSwKf1aqH6oq62qhCN/pekX -+WAsVMBhNwzLpqtCRjLO/wAAAFYEAAAAABIIKoZIzj0DAQcCAwT50ain7vXiIRv8 -B1DO3x3cE/aattZ5sHNixJzRCXi2vQIA5QmOxZ6b5jjUekNbdHG3SZi1a2Ak5mfX -fRxC/5VGAwEIB8L/AAAAZQQYEwgAGP8AAAAFglRrwBz/AAAACZC2VkQCOjdvYQAA -FJAA9isX3xtGyMLYwp2F3nXm7QEdY5bq5VUcD/RJlj792VwA/1wH0pCzVLl4Q9F9 -ex7En5r7rHR5xwX82Msc+Rq9dSyO -=7MrZ ------END PGP PUBLIC KEY BLOCK-----` - -const dsaKeyWithSHA512 = `9901a2044f04b07f110400db244efecc7316553ee08d179972aab87bb1214de7692593fcf5b6feb1c80fba268722dd464748539b85b81d574cd2d7ad0ca2444de4d849b8756bad7768c486c83a824f9bba4af773d11742bdfb4ac3b89ef8cc9452d4aad31a37e4b630d33927bff68e879284a1672659b8b298222fc68f370f3e24dccacc4a862442b9438b00a0ea444a24088dc23e26df7daf8f43cba3bffc4fe703fe3d6cd7fdca199d54ed8ae501c30e3ec7871ea9cdd4cf63cfe6fc82281d70a5b8bb493f922cd99fba5f088935596af087c8d818d5ec4d0b9afa7f070b3d7c1dd32a84fca08d8280b4890c8da1dde334de8e3cad8450eed2a4a4fcc2db7b8e5528b869a74a7f0189e11ef097ef1253582348de072bb07a9fa8ab838e993cef0ee203ff49298723e2d1f549b00559f886cd417a41692ce58d0ac1307dc71d85a8af21b0cf6eaa14baf2922d3a70389bedf17cc514ba0febbd107675a372fe84b90162a9e88b14d4b1c6be855b96b33fb198c46f058568817780435b6936167ebb3724b680f32bf27382ada2e37a879b3d9de2abe0c3f399350afd1ad438883f4791e2e3b4184453412068617368207472756e636174696f6e207465737488620413110a002205024f04b07f021b03060b090807030206150802090a0b0416020301021e01021780000a0910ef20e0cefca131581318009e2bf3bf047a44d75a9bacd00161ee04d435522397009a03a60d51bd8a568c6c021c8d7cf1be8d990d6417b0020003` - -const unknownHashFunctionHex = `8a00000040040001990006050253863c24000a09103b4fe6acc0b21f32ffff01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101` - -const missingHashFunctionHex = `8a00000040040001030006050253863c24000a09103b4fe6acc0b21f32ffff0101010101010101010101010101010101010101010101010101010101010101010101010101` - -const campbellQuine = `a0b001000300fcffa0b001000d00f2ff000300fcffa0b001000d00f2ff8270a01c00000500faff8270a01c00000500faff000500faff001400ebff8270a01c00000500faff000500faff001400ebff428821c400001400ebff428821c400001400ebff428821c400001400ebff428821c400001400ebff428821c400000000ffff000000ffff000b00f4ff428821c400000000ffff000000ffff000b00f4ff0233214c40000100feff000233214c40000100feff0000` - -const keyV4forVerifyingSignedMessageV3 = `-----BEGIN PGP PUBLIC KEY BLOCK----- -Comment: GPGTools - https://gpgtools.org - -mI0EVfxoFQEEAMBIqmbDfYygcvP6Phr1wr1XI41IF7Qixqybs/foBF8qqblD9gIY -BKpXjnBOtbkcVOJ0nljd3/sQIfH4E0vQwK5/4YRQSI59eKOqd6Fx+fWQOLG+uu6z -tewpeCj9LLHvibx/Sc7VWRnrznia6ftrXxJ/wHMezSab3tnGC0YPVdGNABEBAAG0 -JEdvY3J5cHRvIFRlc3QgS2V5IDx0aGVtYXhAZ21haWwuY29tPoi5BBMBCgAjBQJV -/GgVAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQeXnQmhdGW9PFVAP+ -K7TU0qX5ArvIONIxh/WAweyOk884c5cE8f+3NOPOOCRGyVy0FId5A7MmD5GOQh4H -JseOZVEVCqlmngEvtHZb3U1VYtVGE5WZ+6rQhGsMcWP5qaT4soYwMBlSYxgYwQcx -YhN9qOr292f9j2Y//TTIJmZT4Oa+lMxhWdqTfX+qMgG4jQRV/GgVAQQArhFSiij1 -b+hT3dnapbEU+23Z1yTu1DfF6zsxQ4XQWEV3eR8v+8mEDDNcz8oyyF56k6UQ3rXi -UMTIwRDg4V6SbZmaFbZYCOwp/EmXJ3rfhm7z7yzXj2OFN22luuqbyVhuL7LRdB0M -pxgmjXb4tTvfgKd26x34S+QqUJ7W6uprY4sAEQEAAYifBBgBCgAJBQJV/GgVAhsM -AAoJEHl50JoXRlvT7y8D/02ckx4OMkKBZo7viyrBw0MLG92i+DC2bs35PooHR6zz -786mitjOp5z2QWNLBvxC70S0qVfCIz8jKupO1J6rq6Z8CcbLF3qjm6h1omUBf8Nd -EfXKD2/2HV6zMKVknnKzIEzauh+eCKS2CeJUSSSryap/QLVAjRnckaES/OsEWhNB -=RZia ------END PGP PUBLIC KEY BLOCK----- -` - -const signedMessageV3 = `-----BEGIN PGP MESSAGE----- -Comment: GPGTools - https://gpgtools.org - -owGbwMvMwMVYWXlhlrhb9GXG03JJDKF/MtxDMjKLFYAoUaEktbhEITe1uDgxPVWP -q5NhKjMrWAVcC9evD8z/bF/uWNjqtk/X3y5/38XGRQHm/57rrDRYuGnTw597Xqka -uM3137/hH3Os+Jf2dc0fXOITKwJvXJvecPVs0ta+Vg7ZO1MLn8w58Xx+6L58mbka -DGHyU9yTueZE8D+QF/Tz28Y78dqtF56R1VPn9Xw4uJqrWYdd7b3vIZ1V6R4Nh05d -iT57d/OhWwA= -=hG7R ------END PGP MESSAGE----- -` diff --git a/vendor/golang.org/x/crypto/openpgp/s2k/s2k.go b/vendor/golang.org/x/crypto/openpgp/s2k/s2k.go deleted file mode 100644 index 4b9a44ca..00000000 --- a/vendor/golang.org/x/crypto/openpgp/s2k/s2k.go +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package s2k implements the various OpenPGP string-to-key transforms as -// specified in RFC 4800 section 3.7.1. -package s2k // import "golang.org/x/crypto/openpgp/s2k" - -import ( - "crypto" - "hash" - "io" - "strconv" - - "golang.org/x/crypto/openpgp/errors" -) - -// Config collects configuration parameters for s2k key-stretching -// transformatioms. A nil *Config is valid and results in all default -// values. Currently, Config is used only by the Serialize function in -// this package. -type Config struct { - // Hash is the default hash function to be used. If - // nil, SHA1 is used. - Hash crypto.Hash - // S2KCount is only used for symmetric encryption. It - // determines the strength of the passphrase stretching when - // the said passphrase is hashed to produce a key. S2KCount - // should be between 1024 and 65011712, inclusive. If Config - // is nil or S2KCount is 0, the value 65536 used. Not all - // values in the above range can be represented. S2KCount will - // be rounded up to the next representable value if it cannot - // be encoded exactly. When set, it is strongly encrouraged to - // use a value that is at least 65536. See RFC 4880 Section - // 3.7.1.3. - S2KCount int -} - -func (c *Config) hash() crypto.Hash { - if c == nil || uint(c.Hash) == 0 { - // SHA1 is the historical default in this package. - return crypto.SHA1 - } - - return c.Hash -} - -func (c *Config) encodedCount() uint8 { - if c == nil || c.S2KCount == 0 { - return 96 // The common case. Correspoding to 65536 - } - - i := c.S2KCount - switch { - // Behave like GPG. Should we make 65536 the lowest value used? - case i < 1024: - i = 1024 - case i > 65011712: - i = 65011712 - } - - return encodeCount(i) -} - -// encodeCount converts an iterative "count" in the range 1024 to -// 65011712, inclusive, to an encoded count. The return value is the -// octet that is actually stored in the GPG file. encodeCount panics -// if i is not in the above range (encodedCount above takes care to -// pass i in the correct range). See RFC 4880 Section 3.7.7.1. -func encodeCount(i int) uint8 { - if i < 1024 || i > 65011712 { - panic("count arg i outside the required range") - } - - for encoded := 0; encoded < 256; encoded++ { - count := decodeCount(uint8(encoded)) - if count >= i { - return uint8(encoded) - } - } - - return 255 -} - -// decodeCount returns the s2k mode 3 iterative "count" corresponding to -// the encoded octet c. -func decodeCount(c uint8) int { - return (16 + int(c&15)) << (uint32(c>>4) + 6) -} - -// Simple writes to out the result of computing the Simple S2K function (RFC -// 4880, section 3.7.1.1) using the given hash and input passphrase. -func Simple(out []byte, h hash.Hash, in []byte) { - Salted(out, h, in, nil) -} - -var zero [1]byte - -// Salted writes to out the result of computing the Salted S2K function (RFC -// 4880, section 3.7.1.2) using the given hash, input passphrase and salt. -func Salted(out []byte, h hash.Hash, in []byte, salt []byte) { - done := 0 - var digest []byte - - for i := 0; done < len(out); i++ { - h.Reset() - for j := 0; j < i; j++ { - h.Write(zero[:]) - } - h.Write(salt) - h.Write(in) - digest = h.Sum(digest[:0]) - n := copy(out[done:], digest) - done += n - } -} - -// Iterated writes to out the result of computing the Iterated and Salted S2K -// function (RFC 4880, section 3.7.1.3) using the given hash, input passphrase, -// salt and iteration count. -func Iterated(out []byte, h hash.Hash, in []byte, salt []byte, count int) { - combined := make([]byte, len(in)+len(salt)) - copy(combined, salt) - copy(combined[len(salt):], in) - - if count < len(combined) { - count = len(combined) - } - - done := 0 - var digest []byte - for i := 0; done < len(out); i++ { - h.Reset() - for j := 0; j < i; j++ { - h.Write(zero[:]) - } - written := 0 - for written < count { - if written+len(combined) > count { - todo := count - written - h.Write(combined[:todo]) - written = count - } else { - h.Write(combined) - written += len(combined) - } - } - digest = h.Sum(digest[:0]) - n := copy(out[done:], digest) - done += n - } -} - -// Parse reads a binary specification for a string-to-key transformation from r -// and returns a function which performs that transform. -func Parse(r io.Reader) (f func(out, in []byte), err error) { - var buf [9]byte - - _, err = io.ReadFull(r, buf[:2]) - if err != nil { - return - } - - hash, ok := HashIdToHash(buf[1]) - if !ok { - return nil, errors.UnsupportedError("hash for S2K function: " + strconv.Itoa(int(buf[1]))) - } - if !hash.Available() { - return nil, errors.UnsupportedError("hash not available: " + strconv.Itoa(int(hash))) - } - h := hash.New() - - switch buf[0] { - case 0: - f := func(out, in []byte) { - Simple(out, h, in) - } - return f, nil - case 1: - _, err = io.ReadFull(r, buf[:8]) - if err != nil { - return - } - f := func(out, in []byte) { - Salted(out, h, in, buf[:8]) - } - return f, nil - case 3: - _, err = io.ReadFull(r, buf[:9]) - if err != nil { - return - } - count := decodeCount(buf[8]) - f := func(out, in []byte) { - Iterated(out, h, in, buf[:8], count) - } - return f, nil - } - - return nil, errors.UnsupportedError("S2K function") -} - -// Serialize salts and stretches the given passphrase and writes the -// resulting key into key. It also serializes an S2K descriptor to -// w. The key stretching can be configured with c, which may be -// nil. In that case, sensible defaults will be used. -func Serialize(w io.Writer, key []byte, rand io.Reader, passphrase []byte, c *Config) error { - var buf [11]byte - buf[0] = 3 /* iterated and salted */ - buf[1], _ = HashToHashId(c.hash()) - salt := buf[2:10] - if _, err := io.ReadFull(rand, salt); err != nil { - return err - } - encodedCount := c.encodedCount() - count := decodeCount(encodedCount) - buf[10] = encodedCount - if _, err := w.Write(buf[:]); err != nil { - return err - } - - Iterated(key, c.hash().New(), passphrase, salt, count) - return nil -} - -// hashToHashIdMapping contains pairs relating OpenPGP's hash identifier with -// Go's crypto.Hash type. See RFC 4880, section 9.4. -var hashToHashIdMapping = []struct { - id byte - hash crypto.Hash - name string -}{ - {1, crypto.MD5, "MD5"}, - {2, crypto.SHA1, "SHA1"}, - {3, crypto.RIPEMD160, "RIPEMD160"}, - {8, crypto.SHA256, "SHA256"}, - {9, crypto.SHA384, "SHA384"}, - {10, crypto.SHA512, "SHA512"}, - {11, crypto.SHA224, "SHA224"}, -} - -// HashIdToHash returns a crypto.Hash which corresponds to the given OpenPGP -// hash id. -func HashIdToHash(id byte) (h crypto.Hash, ok bool) { - for _, m := range hashToHashIdMapping { - if m.id == id { - return m.hash, true - } - } - return 0, false -} - -// HashIdToString returns the name of the hash function corresponding to the -// given OpenPGP hash id. -func HashIdToString(id byte) (name string, ok bool) { - for _, m := range hashToHashIdMapping { - if m.id == id { - return m.name, true - } - } - - return "", false -} - -// HashIdToHash returns an OpenPGP hash id which corresponds the given Hash. -func HashToHashId(h crypto.Hash) (id byte, ok bool) { - for _, m := range hashToHashIdMapping { - if m.hash == h { - return m.id, true - } - } - return 0, false -} diff --git a/vendor/golang.org/x/crypto/openpgp/s2k/s2k_test.go b/vendor/golang.org/x/crypto/openpgp/s2k/s2k_test.go deleted file mode 100644 index 183d2605..00000000 --- a/vendor/golang.org/x/crypto/openpgp/s2k/s2k_test.go +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package s2k - -import ( - "bytes" - "crypto" - _ "crypto/md5" - "crypto/rand" - "crypto/sha1" - _ "crypto/sha256" - _ "crypto/sha512" - "encoding/hex" - "testing" - - _ "golang.org/x/crypto/ripemd160" -) - -var saltedTests = []struct { - in, out string -}{ - {"hello", "10295ac1"}, - {"world", "ac587a5e"}, - {"foo", "4dda8077"}, - {"bar", "bd8aac6b9ea9cae04eae6a91c6133b58b5d9a61c14f355516ed9370456"}, - {"x", "f1d3f289"}, - {"xxxxxxxxxxxxxxxxxxxxxxx", "e00d7b45"}, -} - -func TestSalted(t *testing.T) { - h := sha1.New() - salt := [4]byte{1, 2, 3, 4} - - for i, test := range saltedTests { - expected, _ := hex.DecodeString(test.out) - out := make([]byte, len(expected)) - Salted(out, h, []byte(test.in), salt[:]) - if !bytes.Equal(expected, out) { - t.Errorf("#%d, got: %x want: %x", i, out, expected) - } - } -} - -var iteratedTests = []struct { - in, out string -}{ - {"hello", "83126105"}, - {"world", "6fa317f9"}, - {"foo", "8fbc35b9"}, - {"bar", "2af5a99b54f093789fd657f19bd245af7604d0f6ae06f66602a46a08ae"}, - {"x", "5a684dfe"}, - {"xxxxxxxxxxxxxxxxxxxxxxx", "18955174"}, -} - -func TestIterated(t *testing.T) { - h := sha1.New() - salt := [4]byte{4, 3, 2, 1} - - for i, test := range iteratedTests { - expected, _ := hex.DecodeString(test.out) - out := make([]byte, len(expected)) - Iterated(out, h, []byte(test.in), salt[:], 31) - if !bytes.Equal(expected, out) { - t.Errorf("#%d, got: %x want: %x", i, out, expected) - } - } -} - -var parseTests = []struct { - spec, in, out string -}{ - /* Simple with SHA1 */ - {"0002", "hello", "aaf4c61d"}, - /* Salted with SHA1 */ - {"01020102030405060708", "hello", "f4f7d67e"}, - /* Iterated with SHA1 */ - {"03020102030405060708f1", "hello", "f2a57b7c"}, -} - -func TestParse(t *testing.T) { - for i, test := range parseTests { - spec, _ := hex.DecodeString(test.spec) - buf := bytes.NewBuffer(spec) - f, err := Parse(buf) - if err != nil { - t.Errorf("%d: Parse returned error: %s", i, err) - continue - } - - expected, _ := hex.DecodeString(test.out) - out := make([]byte, len(expected)) - f(out, []byte(test.in)) - if !bytes.Equal(out, expected) { - t.Errorf("%d: output got: %x want: %x", i, out, expected) - } - if testing.Short() { - break - } - } -} - -func TestSerialize(t *testing.T) { - hashes := []crypto.Hash{crypto.MD5, crypto.SHA1, crypto.RIPEMD160, - crypto.SHA256, crypto.SHA384, crypto.SHA512, crypto.SHA224} - testCounts := []int{-1, 0, 1024, 65536, 4063232, 65011712} - for _, h := range hashes { - for _, c := range testCounts { - testSerializeConfig(t, &Config{Hash: h, S2KCount: c}) - } - } -} - -func testSerializeConfig(t *testing.T, c *Config) { - t.Logf("Running testSerializeConfig() with config: %+v", c) - - buf := bytes.NewBuffer(nil) - key := make([]byte, 16) - passphrase := []byte("testing") - err := Serialize(buf, key, rand.Reader, passphrase, c) - if err != nil { - t.Errorf("failed to serialize: %s", err) - return - } - - f, err := Parse(buf) - if err != nil { - t.Errorf("failed to reparse: %s", err) - return - } - key2 := make([]byte, len(key)) - f(key2, passphrase) - if !bytes.Equal(key2, key) { - t.Errorf("keys don't match: %x (serialied) vs %x (parsed)", key, key2) - } -} diff --git a/vendor/golang.org/x/crypto/openpgp/write.go b/vendor/golang.org/x/crypto/openpgp/write.go deleted file mode 100644 index 65a304cc..00000000 --- a/vendor/golang.org/x/crypto/openpgp/write.go +++ /dev/null @@ -1,378 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package openpgp - -import ( - "crypto" - "hash" - "io" - "strconv" - "time" - - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/errors" - "golang.org/x/crypto/openpgp/packet" - "golang.org/x/crypto/openpgp/s2k" -) - -// DetachSign signs message with the private key from signer (which must -// already have been decrypted) and writes the signature to w. -// If config is nil, sensible defaults will be used. -func DetachSign(w io.Writer, signer *Entity, message io.Reader, config *packet.Config) error { - return detachSign(w, signer, message, packet.SigTypeBinary, config) -} - -// ArmoredDetachSign signs message with the private key from signer (which -// must already have been decrypted) and writes an armored signature to w. -// If config is nil, sensible defaults will be used. -func ArmoredDetachSign(w io.Writer, signer *Entity, message io.Reader, config *packet.Config) (err error) { - return armoredDetachSign(w, signer, message, packet.SigTypeBinary, config) -} - -// DetachSignText signs message (after canonicalising the line endings) with -// the private key from signer (which must already have been decrypted) and -// writes the signature to w. -// If config is nil, sensible defaults will be used. -func DetachSignText(w io.Writer, signer *Entity, message io.Reader, config *packet.Config) error { - return detachSign(w, signer, message, packet.SigTypeText, config) -} - -// ArmoredDetachSignText signs message (after canonicalising the line endings) -// with the private key from signer (which must already have been decrypted) -// and writes an armored signature to w. -// If config is nil, sensible defaults will be used. -func ArmoredDetachSignText(w io.Writer, signer *Entity, message io.Reader, config *packet.Config) error { - return armoredDetachSign(w, signer, message, packet.SigTypeText, config) -} - -func armoredDetachSign(w io.Writer, signer *Entity, message io.Reader, sigType packet.SignatureType, config *packet.Config) (err error) { - out, err := armor.Encode(w, SignatureType, nil) - if err != nil { - return - } - err = detachSign(out, signer, message, sigType, config) - if err != nil { - return - } - return out.Close() -} - -func detachSign(w io.Writer, signer *Entity, message io.Reader, sigType packet.SignatureType, config *packet.Config) (err error) { - if signer.PrivateKey == nil { - return errors.InvalidArgumentError("signing key doesn't have a private key") - } - if signer.PrivateKey.Encrypted { - return errors.InvalidArgumentError("signing key is encrypted") - } - - sig := new(packet.Signature) - sig.SigType = sigType - sig.PubKeyAlgo = signer.PrivateKey.PubKeyAlgo - sig.Hash = config.Hash() - sig.CreationTime = config.Now() - sig.IssuerKeyId = &signer.PrivateKey.KeyId - - h, wrappedHash, err := hashForSignature(sig.Hash, sig.SigType) - if err != nil { - return - } - io.Copy(wrappedHash, message) - - err = sig.Sign(h, signer.PrivateKey, config) - if err != nil { - return - } - - return sig.Serialize(w) -} - -// FileHints contains metadata about encrypted files. This metadata is, itself, -// encrypted. -type FileHints struct { - // IsBinary can be set to hint that the contents are binary data. - IsBinary bool - // FileName hints at the name of the file that should be written. It's - // truncated to 255 bytes if longer. It may be empty to suggest that the - // file should not be written to disk. It may be equal to "_CONSOLE" to - // suggest the data should not be written to disk. - FileName string - // ModTime contains the modification time of the file, or the zero time if not applicable. - ModTime time.Time -} - -// SymmetricallyEncrypt acts like gpg -c: it encrypts a file with a passphrase. -// The resulting WriteCloser must be closed after the contents of the file have -// been written. -// If config is nil, sensible defaults will be used. -func SymmetricallyEncrypt(ciphertext io.Writer, passphrase []byte, hints *FileHints, config *packet.Config) (plaintext io.WriteCloser, err error) { - if hints == nil { - hints = &FileHints{} - } - - key, err := packet.SerializeSymmetricKeyEncrypted(ciphertext, passphrase, config) - if err != nil { - return - } - w, err := packet.SerializeSymmetricallyEncrypted(ciphertext, config.Cipher(), key, config) - if err != nil { - return - } - - literaldata := w - if algo := config.Compression(); algo != packet.CompressionNone { - var compConfig *packet.CompressionConfig - if config != nil { - compConfig = config.CompressionConfig - } - literaldata, err = packet.SerializeCompressed(w, algo, compConfig) - if err != nil { - return - } - } - - var epochSeconds uint32 - if !hints.ModTime.IsZero() { - epochSeconds = uint32(hints.ModTime.Unix()) - } - return packet.SerializeLiteral(literaldata, hints.IsBinary, hints.FileName, epochSeconds) -} - -// intersectPreferences mutates and returns a prefix of a that contains only -// the values in the intersection of a and b. The order of a is preserved. -func intersectPreferences(a []uint8, b []uint8) (intersection []uint8) { - var j int - for _, v := range a { - for _, v2 := range b { - if v == v2 { - a[j] = v - j++ - break - } - } - } - - return a[:j] -} - -func hashToHashId(h crypto.Hash) uint8 { - v, ok := s2k.HashToHashId(h) - if !ok { - panic("tried to convert unknown hash") - } - return v -} - -// Encrypt encrypts a message to a number of recipients and, optionally, signs -// it. hints contains optional information, that is also encrypted, that aids -// the recipients in processing the message. The resulting WriteCloser must -// be closed after the contents of the file have been written. -// If config is nil, sensible defaults will be used. -func Encrypt(ciphertext io.Writer, to []*Entity, signed *Entity, hints *FileHints, config *packet.Config) (plaintext io.WriteCloser, err error) { - var signer *packet.PrivateKey - if signed != nil { - signKey, ok := signed.signingKey(config.Now()) - if !ok { - return nil, errors.InvalidArgumentError("no valid signing keys") - } - signer = signKey.PrivateKey - if signer == nil { - return nil, errors.InvalidArgumentError("no private key in signing key") - } - if signer.Encrypted { - return nil, errors.InvalidArgumentError("signing key must be decrypted") - } - } - - // These are the possible ciphers that we'll use for the message. - candidateCiphers := []uint8{ - uint8(packet.CipherAES128), - uint8(packet.CipherAES256), - uint8(packet.CipherCAST5), - } - // These are the possible hash functions that we'll use for the signature. - candidateHashes := []uint8{ - hashToHashId(crypto.SHA256), - hashToHashId(crypto.SHA512), - hashToHashId(crypto.SHA1), - hashToHashId(crypto.RIPEMD160), - } - // In the event that a recipient doesn't specify any supported ciphers - // or hash functions, these are the ones that we assume that every - // implementation supports. - defaultCiphers := candidateCiphers[len(candidateCiphers)-1:] - defaultHashes := candidateHashes[len(candidateHashes)-1:] - - encryptKeys := make([]Key, len(to)) - for i := range to { - var ok bool - encryptKeys[i], ok = to[i].encryptionKey(config.Now()) - if !ok { - return nil, errors.InvalidArgumentError("cannot encrypt a message to key id " + strconv.FormatUint(to[i].PrimaryKey.KeyId, 16) + " because it has no encryption keys") - } - - sig := to[i].primaryIdentity().SelfSignature - - preferredSymmetric := sig.PreferredSymmetric - if len(preferredSymmetric) == 0 { - preferredSymmetric = defaultCiphers - } - preferredHashes := sig.PreferredHash - if len(preferredHashes) == 0 { - preferredHashes = defaultHashes - } - candidateCiphers = intersectPreferences(candidateCiphers, preferredSymmetric) - candidateHashes = intersectPreferences(candidateHashes, preferredHashes) - } - - if len(candidateCiphers) == 0 || len(candidateHashes) == 0 { - return nil, errors.InvalidArgumentError("cannot encrypt because recipient set shares no common algorithms") - } - - cipher := packet.CipherFunction(candidateCiphers[0]) - // If the cipher specified by config is a candidate, we'll use that. - configuredCipher := config.Cipher() - for _, c := range candidateCiphers { - cipherFunc := packet.CipherFunction(c) - if cipherFunc == configuredCipher { - cipher = cipherFunc - break - } - } - - var hash crypto.Hash - for _, hashId := range candidateHashes { - if h, ok := s2k.HashIdToHash(hashId); ok && h.Available() { - hash = h - break - } - } - - // If the hash specified by config is a candidate, we'll use that. - if configuredHash := config.Hash(); configuredHash.Available() { - for _, hashId := range candidateHashes { - if h, ok := s2k.HashIdToHash(hashId); ok && h == configuredHash { - hash = h - break - } - } - } - - if hash == 0 { - hashId := candidateHashes[0] - name, ok := s2k.HashIdToString(hashId) - if !ok { - name = "#" + strconv.Itoa(int(hashId)) - } - return nil, errors.InvalidArgumentError("cannot encrypt because no candidate hash functions are compiled in. (Wanted " + name + " in this case.)") - } - - symKey := make([]byte, cipher.KeySize()) - if _, err := io.ReadFull(config.Random(), symKey); err != nil { - return nil, err - } - - for _, key := range encryptKeys { - if err := packet.SerializeEncryptedKey(ciphertext, key.PublicKey, cipher, symKey, config); err != nil { - return nil, err - } - } - - encryptedData, err := packet.SerializeSymmetricallyEncrypted(ciphertext, cipher, symKey, config) - if err != nil { - return - } - - if signer != nil { - ops := &packet.OnePassSignature{ - SigType: packet.SigTypeBinary, - Hash: hash, - PubKeyAlgo: signer.PubKeyAlgo, - KeyId: signer.KeyId, - IsLast: true, - } - if err := ops.Serialize(encryptedData); err != nil { - return nil, err - } - } - - if hints == nil { - hints = &FileHints{} - } - - w := encryptedData - if signer != nil { - // If we need to write a signature packet after the literal - // data then we need to stop literalData from closing - // encryptedData. - w = noOpCloser{encryptedData} - - } - var epochSeconds uint32 - if !hints.ModTime.IsZero() { - epochSeconds = uint32(hints.ModTime.Unix()) - } - literalData, err := packet.SerializeLiteral(w, hints.IsBinary, hints.FileName, epochSeconds) - if err != nil { - return nil, err - } - - if signer != nil { - return signatureWriter{encryptedData, literalData, hash, hash.New(), signer, config}, nil - } - return literalData, nil -} - -// signatureWriter hashes the contents of a message while passing it along to -// literalData. When closed, it closes literalData, writes a signature packet -// to encryptedData and then also closes encryptedData. -type signatureWriter struct { - encryptedData io.WriteCloser - literalData io.WriteCloser - hashType crypto.Hash - h hash.Hash - signer *packet.PrivateKey - config *packet.Config -} - -func (s signatureWriter) Write(data []byte) (int, error) { - s.h.Write(data) - return s.literalData.Write(data) -} - -func (s signatureWriter) Close() error { - sig := &packet.Signature{ - SigType: packet.SigTypeBinary, - PubKeyAlgo: s.signer.PubKeyAlgo, - Hash: s.hashType, - CreationTime: s.config.Now(), - IssuerKeyId: &s.signer.KeyId, - } - - if err := sig.Sign(s.h, s.signer, s.config); err != nil { - return err - } - if err := s.literalData.Close(); err != nil { - return err - } - if err := sig.Serialize(s.encryptedData); err != nil { - return err - } - return s.encryptedData.Close() -} - -// noOpCloser is like an ioutil.NopCloser, but for an io.Writer. -// TODO: we have two of these in OpenPGP packages alone. This probably needs -// to be promoted somewhere more common. -type noOpCloser struct { - w io.Writer -} - -func (c noOpCloser) Write(data []byte) (n int, err error) { - return c.w.Write(data) -} - -func (c noOpCloser) Close() error { - return nil -} diff --git a/vendor/golang.org/x/crypto/openpgp/write_test.go b/vendor/golang.org/x/crypto/openpgp/write_test.go deleted file mode 100644 index f2d50a0c..00000000 --- a/vendor/golang.org/x/crypto/openpgp/write_test.go +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package openpgp - -import ( - "bytes" - "io" - "io/ioutil" - "testing" - "time" - - "golang.org/x/crypto/openpgp/packet" -) - -func TestSignDetached(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(testKeys1And2PrivateHex)) - out := bytes.NewBuffer(nil) - message := bytes.NewBufferString(signedInput) - err := DetachSign(out, kring[0], message, nil) - if err != nil { - t.Error(err) - } - - testDetachedSignature(t, kring, out, signedInput, "check", testKey1KeyId) -} - -func TestSignTextDetached(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(testKeys1And2PrivateHex)) - out := bytes.NewBuffer(nil) - message := bytes.NewBufferString(signedInput) - err := DetachSignText(out, kring[0], message, nil) - if err != nil { - t.Error(err) - } - - testDetachedSignature(t, kring, out, signedInput, "check", testKey1KeyId) -} - -func TestSignDetachedDSA(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(dsaTestKeyPrivateHex)) - out := bytes.NewBuffer(nil) - message := bytes.NewBufferString(signedInput) - err := DetachSign(out, kring[0], message, nil) - if err != nil { - t.Error(err) - } - - testDetachedSignature(t, kring, out, signedInput, "check", testKey3KeyId) -} - -func TestSignDetachedP256(t *testing.T) { - kring, _ := ReadKeyRing(readerFromHex(p256TestKeyPrivateHex)) - kring[0].PrivateKey.Decrypt([]byte("passphrase")) - - out := bytes.NewBuffer(nil) - message := bytes.NewBufferString(signedInput) - err := DetachSign(out, kring[0], message, nil) - if err != nil { - t.Error(err) - } - - testDetachedSignature(t, kring, out, signedInput, "check", testKeyP256KeyId) -} - -func TestNewEntity(t *testing.T) { - if testing.Short() { - return - } - - // Check bit-length with no config. - e, err := NewEntity("Test User", "test", "test@example.com", nil) - if err != nil { - t.Errorf("failed to create entity: %s", err) - return - } - bl, err := e.PrimaryKey.BitLength() - if err != nil { - t.Errorf("failed to find bit length: %s", err) - } - if int(bl) != defaultRSAKeyBits { - t.Errorf("BitLength %v, expected %v", int(bl), defaultRSAKeyBits) - } - - // Check bit-length with a config. - cfg := &packet.Config{RSABits: 1024} - e, err = NewEntity("Test User", "test", "test@example.com", cfg) - if err != nil { - t.Errorf("failed to create entity: %s", err) - return - } - bl, err = e.PrimaryKey.BitLength() - if err != nil { - t.Errorf("failed to find bit length: %s", err) - } - if int(bl) != cfg.RSABits { - t.Errorf("BitLength %v, expected %v", bl, cfg.RSABits) - } - - w := bytes.NewBuffer(nil) - if err := e.SerializePrivate(w, nil); err != nil { - t.Errorf("failed to serialize entity: %s", err) - return - } - serialized := w.Bytes() - - el, err := ReadKeyRing(w) - if err != nil { - t.Errorf("failed to reparse entity: %s", err) - return - } - - if len(el) != 1 { - t.Errorf("wrong number of entities found, got %d, want 1", len(el)) - } - - w = bytes.NewBuffer(nil) - if err := e.SerializePrivate(w, nil); err != nil { - t.Errorf("failed to serialize entity second time: %s", err) - return - } - - if !bytes.Equal(w.Bytes(), serialized) { - t.Errorf("results differed") - } -} - -func TestSymmetricEncryption(t *testing.T) { - buf := new(bytes.Buffer) - plaintext, err := SymmetricallyEncrypt(buf, []byte("testing"), nil, nil) - if err != nil { - t.Errorf("error writing headers: %s", err) - return - } - message := []byte("hello world\n") - _, err = plaintext.Write(message) - if err != nil { - t.Errorf("error writing to plaintext writer: %s", err) - } - err = plaintext.Close() - if err != nil { - t.Errorf("error closing plaintext writer: %s", err) - } - - md, err := ReadMessage(buf, nil, func(keys []Key, symmetric bool) ([]byte, error) { - return []byte("testing"), nil - }, nil) - if err != nil { - t.Errorf("error rereading message: %s", err) - } - messageBuf := bytes.NewBuffer(nil) - _, err = io.Copy(messageBuf, md.UnverifiedBody) - if err != nil { - t.Errorf("error rereading message: %s", err) - } - if !bytes.Equal(message, messageBuf.Bytes()) { - t.Errorf("recovered message incorrect got '%s', want '%s'", messageBuf.Bytes(), message) - } -} - -var testEncryptionTests = []struct { - keyRingHex string - isSigned bool -}{ - { - testKeys1And2PrivateHex, - false, - }, - { - testKeys1And2PrivateHex, - true, - }, - { - dsaElGamalTestKeysHex, - false, - }, - { - dsaElGamalTestKeysHex, - true, - }, -} - -func TestEncryption(t *testing.T) { - for i, test := range testEncryptionTests { - kring, _ := ReadKeyRing(readerFromHex(test.keyRingHex)) - - passphrase := []byte("passphrase") - for _, entity := range kring { - if entity.PrivateKey != nil && entity.PrivateKey.Encrypted { - err := entity.PrivateKey.Decrypt(passphrase) - if err != nil { - t.Errorf("#%d: failed to decrypt key", i) - } - } - for _, subkey := range entity.Subkeys { - if subkey.PrivateKey != nil && subkey.PrivateKey.Encrypted { - err := subkey.PrivateKey.Decrypt(passphrase) - if err != nil { - t.Errorf("#%d: failed to decrypt subkey", i) - } - } - } - } - - var signed *Entity - if test.isSigned { - signed = kring[0] - } - - buf := new(bytes.Buffer) - w, err := Encrypt(buf, kring[:1], signed, nil /* no hints */, nil) - if err != nil { - t.Errorf("#%d: error in Encrypt: %s", i, err) - continue - } - - const message = "testing" - _, err = w.Write([]byte(message)) - if err != nil { - t.Errorf("#%d: error writing plaintext: %s", i, err) - continue - } - err = w.Close() - if err != nil { - t.Errorf("#%d: error closing WriteCloser: %s", i, err) - continue - } - - md, err := ReadMessage(buf, kring, nil /* no prompt */, nil) - if err != nil { - t.Errorf("#%d: error reading message: %s", i, err) - continue - } - - testTime, _ := time.Parse("2006-01-02", "2013-07-01") - if test.isSigned { - signKey, _ := kring[0].signingKey(testTime) - expectedKeyId := signKey.PublicKey.KeyId - if md.SignedByKeyId != expectedKeyId { - t.Errorf("#%d: message signed by wrong key id, got: %v, want: %v", i, *md.SignedBy, expectedKeyId) - } - if md.SignedBy == nil { - t.Errorf("#%d: failed to find the signing Entity", i) - } - } - - plaintext, err := ioutil.ReadAll(md.UnverifiedBody) - if err != nil { - t.Errorf("#%d: error reading encrypted contents: %s", i, err) - continue - } - - encryptKey, _ := kring[0].encryptionKey(testTime) - expectedKeyId := encryptKey.PublicKey.KeyId - if len(md.EncryptedToKeyIds) != 1 || md.EncryptedToKeyIds[0] != expectedKeyId { - t.Errorf("#%d: expected message to be encrypted to %v, but got %#v", i, expectedKeyId, md.EncryptedToKeyIds) - } - - if string(plaintext) != message { - t.Errorf("#%d: got: %s, want: %s", i, string(plaintext), message) - } - - if test.isSigned { - if md.SignatureError != nil { - t.Errorf("#%d: signature error: %s", i, md.SignatureError) - } - if md.Signature == nil { - t.Error("signature missing") - } - } - } -} diff --git a/vendor/golang.org/x/crypto/otr/libotr_test_helper.c b/vendor/golang.org/x/crypto/otr/libotr_test_helper.c deleted file mode 100644 index b3ca072d..00000000 --- a/vendor/golang.org/x/crypto/otr/libotr_test_helper.c +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This code can be compiled and used to test the otr package against libotr. -// See otr_test.go. - -// +build ignore - -#include -#include -#include - -#include -#include -#include - -static int g_session_established = 0; - -OtrlPolicy policy(void *opdata, ConnContext *context) { - return OTRL_POLICY_ALWAYS; -} - -int is_logged_in(void *opdata, const char *accountname, const char *protocol, - const char *recipient) { - return 1; -} - -void inject_message(void *opdata, const char *accountname, const char *protocol, - const char *recipient, const char *message) { - printf("%s\n", message); - fflush(stdout); - fprintf(stderr, "libotr helper sent: %s\n", message); -} - -void update_context_list(void *opdata) {} - -void new_fingerprint(void *opdata, OtrlUserState us, const char *accountname, - const char *protocol, const char *username, - unsigned char fingerprint[20]) { - fprintf(stderr, "NEW FINGERPRINT\n"); - g_session_established = 1; -} - -void write_fingerprints(void *opdata) {} - -void gone_secure(void *opdata, ConnContext *context) {} - -void gone_insecure(void *opdata, ConnContext *context) {} - -void still_secure(void *opdata, ConnContext *context, int is_reply) {} - -int max_message_size(void *opdata, ConnContext *context) { return 99999; } - -const char *account_name(void *opdata, const char *account, - const char *protocol) { - return "ACCOUNT"; -} - -void account_name_free(void *opdata, const char *account_name) {} - -const char *error_message(void *opdata, ConnContext *context, - OtrlErrorCode err_code) { - return "ERR"; -} - -void error_message_free(void *opdata, const char *msg) {} - -void resent_msg_prefix_free(void *opdata, const char *prefix) {} - -void handle_smp_event(void *opdata, OtrlSMPEvent smp_event, - ConnContext *context, unsigned short progress_event, - char *question) {} - -void handle_msg_event(void *opdata, OtrlMessageEvent msg_event, - ConnContext *context, const char *message, - gcry_error_t err) { - fprintf(stderr, "msg event: %d %s\n", msg_event, message); -} - -OtrlMessageAppOps uiops = { - policy, - NULL, - is_logged_in, - inject_message, - update_context_list, - new_fingerprint, - write_fingerprints, - gone_secure, - gone_insecure, - still_secure, - max_message_size, - account_name, - account_name_free, - NULL, /* received_symkey */ - error_message, - error_message_free, - NULL, /* resent_msg_prefix */ - resent_msg_prefix_free, - handle_smp_event, - handle_msg_event, - NULL /* create_instag */, - NULL /* convert_msg */, - NULL /* convert_free */, - NULL /* timer_control */, -}; - -static const char kPrivateKeyData[] = - "(privkeys (account (name \"account\") (protocol proto) (private-key (dsa " - "(p " - "#00FC07ABCF0DC916AFF6E9AE47BEF60C7AB9B4D6B2469E436630E36F8A489BE812486A09F" - "30B71224508654940A835301ACC525A4FF133FC152CC53DCC59D65C30A54F1993FE13FE63E" - "5823D4C746DB21B90F9B9C00B49EC7404AB1D929BA7FBA12F2E45C6E0A651689750E8528AB" - "8C031D3561FECEE72EBB4A090D450A9B7A857#) (q " - "#00997BD266EF7B1F60A5C23F3A741F2AEFD07A2081#) (g " - "#535E360E8A95EBA46A4F7DE50AD6E9B2A6DB785A66B64EB9F20338D2A3E8FB0E94725848F" - "1AA6CC567CB83A1CC517EC806F2E92EAE71457E80B2210A189B91250779434B41FC8A8873F" - "6DB94BEA7D177F5D59E7E114EE10A49CFD9CEF88AE43387023B672927BA74B04EB6BBB5E57" - "597766A2F9CE3857D7ACE3E1E3BC1FC6F26#) (y " - "#0AC8670AD767D7A8D9D14CC1AC6744CD7D76F993B77FFD9E39DF01E5A6536EF65E775FCEF" - "2A983E2A19BD6415500F6979715D9FD1257E1FE2B6F5E1E74B333079E7C880D39868462A93" - "454B41877BE62E5EF0A041C2EE9C9E76BD1E12AE25D9628DECB097025DD625EF49C3258A1A" - "3C0FF501E3DC673B76D7BABF349009B6ECF#) (x " - "#14D0345A3562C480A039E3C72764F72D79043216#)))))\n"; - -int main() { - OTRL_INIT; - - // We have to write the private key information to a file because the libotr - // API demands a filename to read from. - const char *tmpdir = "/tmp"; - if (getenv("TMP")) { - tmpdir = getenv("TMP"); - } - - char private_key_file[256]; - snprintf(private_key_file, sizeof(private_key_file), - "%s/libotr_test_helper_privatekeys-XXXXXX", tmpdir); - int fd = mkstemp(private_key_file); - if (fd == -1) { - perror("creating temp file"); - } - write(fd, kPrivateKeyData, sizeof(kPrivateKeyData) - 1); - close(fd); - - OtrlUserState userstate = otrl_userstate_create(); - otrl_privkey_read(userstate, private_key_file); - unlink(private_key_file); - - fprintf(stderr, "libotr helper started\n"); - - char buf[4096]; - - for (;;) { - char *message = fgets(buf, sizeof(buf), stdin); - if (strlen(message) == 0) { - break; - } - message[strlen(message) - 1] = 0; - fprintf(stderr, "libotr helper got: %s\n", message); - - char *newmessage = NULL; - OtrlTLV *tlvs; - int ignore_message = otrl_message_receiving( - userstate, &uiops, NULL, "account", "proto", "peer", message, - &newmessage, &tlvs, NULL, NULL, NULL); - if (tlvs) { - otrl_tlv_free(tlvs); - } - - if (newmessage != NULL) { - fprintf(stderr, "libotr got: %s\n", newmessage); - otrl_message_free(newmessage); - - gcry_error_t err; - char *newmessage = NULL; - - err = otrl_message_sending(userstate, &uiops, NULL, "account", "proto", - "peer", 0, "test message", NULL, &newmessage, - OTRL_FRAGMENT_SEND_SKIP, NULL, NULL, NULL); - if (newmessage == NULL) { - fprintf(stderr, "libotr didn't encrypt message\n"); - return 1; - } - write(1, newmessage, strlen(newmessage)); - write(1, "\n", 1); - fprintf(stderr, "libotr sent: %s\n", newmessage); - otrl_message_free(newmessage); - - g_session_established = 0; - write(1, "?OTRv2?\n", 8); - fprintf(stderr, "libotr sent: ?OTRv2\n"); - } - } - - return 0; -} diff --git a/vendor/golang.org/x/crypto/otr/otr.go b/vendor/golang.org/x/crypto/otr/otr.go deleted file mode 100644 index 173b753d..00000000 --- a/vendor/golang.org/x/crypto/otr/otr.go +++ /dev/null @@ -1,1415 +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 otr implements the Off The Record protocol as specified in -// http://www.cypherpunks.ca/otr/Protocol-v2-3.1.0.html -package otr // import "golang.org/x/crypto/otr" - -import ( - "bytes" - "crypto/aes" - "crypto/cipher" - "crypto/dsa" - "crypto/hmac" - "crypto/rand" - "crypto/sha1" - "crypto/sha256" - "crypto/subtle" - "encoding/base64" - "encoding/hex" - "errors" - "hash" - "io" - "math/big" - "strconv" -) - -// SecurityChange describes a change in the security state of a Conversation. -type SecurityChange int - -const ( - NoChange SecurityChange = iota - // NewKeys indicates that a key exchange has completed. This occurs - // when a conversation first becomes encrypted, and when the keys are - // renegotiated within an encrypted conversation. - NewKeys - // SMPSecretNeeded indicates that the peer has started an - // authentication and that we need to supply a secret. Call SMPQuestion - // to get the optional, human readable challenge and then Authenticate - // to supply the matching secret. - SMPSecretNeeded - // SMPComplete indicates that an authentication completed. The identity - // of the peer has now been confirmed. - SMPComplete - // SMPFailed indicates that an authentication failed. - SMPFailed - // ConversationEnded indicates that the peer ended the secure - // conversation. - ConversationEnded -) - -// QueryMessage can be sent to a peer to start an OTR conversation. -var QueryMessage = "?OTRv2?" - -// ErrorPrefix can be used to make an OTR error by appending an error message -// to it. -var ErrorPrefix = "?OTR Error:" - -var ( - fragmentPartSeparator = []byte(",") - fragmentPrefix = []byte("?OTR,") - msgPrefix = []byte("?OTR:") - queryMarker = []byte("?OTR") -) - -// isQuery attempts to parse an OTR query from msg and returns the greatest -// common version, or 0 if msg is not an OTR query. -func isQuery(msg []byte) (greatestCommonVersion int) { - pos := bytes.Index(msg, queryMarker) - if pos == -1 { - return 0 - } - for i, c := range msg[pos+len(queryMarker):] { - if i == 0 { - if c == '?' { - // Indicates support for version 1, but we don't - // implement that. - continue - } - - if c != 'v' { - // Invalid message - return 0 - } - - continue - } - - if c == '?' { - // End of message - return - } - - if c == ' ' || c == '\t' { - // Probably an invalid message - return 0 - } - - if c == '2' { - greatestCommonVersion = 2 - } - } - - return 0 -} - -const ( - statePlaintext = iota - stateEncrypted - stateFinished -) - -const ( - authStateNone = iota - authStateAwaitingDHKey - authStateAwaitingRevealSig - authStateAwaitingSig -) - -const ( - msgTypeDHCommit = 2 - msgTypeData = 3 - msgTypeDHKey = 10 - msgTypeRevealSig = 17 - msgTypeSig = 18 -) - -const ( - // If the requested fragment size is less than this, it will be ignored. - minFragmentSize = 18 - // Messages are padded to a multiple of this number of bytes. - paddingGranularity = 256 - // The number of bytes in a Diffie-Hellman private value (320-bits). - dhPrivateBytes = 40 - // The number of bytes needed to represent an element of the DSA - // subgroup (160-bits). - dsaSubgroupBytes = 20 - // The number of bytes of the MAC that are sent on the wire (160-bits). - macPrefixBytes = 20 -) - -// These are the global, common group parameters for OTR. -var ( - p *big.Int // group prime - g *big.Int // group generator - q *big.Int // group order - pMinus2 *big.Int -) - -func init() { - p, _ = new(big.Int).SetString("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF", 16) - q, _ = new(big.Int).SetString("7FFFFFFFFFFFFFFFE487ED5110B4611A62633145C06E0E68948127044533E63A0105DF531D89CD9128A5043CC71A026EF7CA8CD9E69D218D98158536F92F8A1BA7F09AB6B6A8E122F242DABB312F3F637A262174D31BF6B585FFAE5B7A035BF6F71C35FDAD44CFD2D74F9208BE258FF324943328F6722D9EE1003E5C50B1DF82CC6D241B0E2AE9CD348B1FD47E9267AFC1B2AE91EE51D6CB0E3179AB1042A95DCF6A9483B84B4B36B3861AA7255E4C0278BA36046511B993FFFFFFFFFFFFFFFF", 16) - g = new(big.Int).SetInt64(2) - pMinus2 = new(big.Int).Sub(p, g) -} - -// Conversation represents a relation with a peer. The zero value is a valid -// Conversation, although PrivateKey must be set. -// -// When communicating with a peer, all inbound messages should be passed to -// Conversation.Receive and all outbound messages to Conversation.Send. The -// Conversation will take care of maintaining the encryption state and -// negotiating encryption as needed. -type Conversation struct { - // PrivateKey contains the private key to use to sign key exchanges. - PrivateKey *PrivateKey - - // Rand can be set to override the entropy source. Otherwise, - // crypto/rand will be used. - Rand io.Reader - // If FragmentSize is set, all messages produced by Receive and Send - // will be fragmented into messages of, at most, this number of bytes. - FragmentSize int - - // Once Receive has returned NewKeys once, the following fields are - // valid. - SSID [8]byte - TheirPublicKey PublicKey - - state, authState int - - r [16]byte - x, y *big.Int - gx, gy *big.Int - gxBytes []byte - digest [sha256.Size]byte - - revealKeys, sigKeys akeKeys - - myKeyId uint32 - myCurrentDHPub *big.Int - myCurrentDHPriv *big.Int - myLastDHPub *big.Int - myLastDHPriv *big.Int - - theirKeyId uint32 - theirCurrentDHPub *big.Int - theirLastDHPub *big.Int - - keySlots [4]keySlot - - myCounter [8]byte - theirLastCtr [8]byte - oldMACs []byte - - k, n int // fragment state - frag []byte - - smp smpState -} - -// A keySlot contains key material for a specific (their keyid, my keyid) pair. -type keySlot struct { - // used is true if this slot is valid. If false, it's free for reuse. - used bool - theirKeyId uint32 - myKeyId uint32 - sendAESKey, recvAESKey []byte - sendMACKey, recvMACKey []byte - theirLastCtr [8]byte -} - -// akeKeys are generated during key exchange. There's one set for the reveal -// signature message and another for the signature message. In the protocol -// spec the latter are indicated with a prime mark. -type akeKeys struct { - c [16]byte - m1, m2 [32]byte -} - -func (c *Conversation) rand() io.Reader { - if c.Rand != nil { - return c.Rand - } - return rand.Reader -} - -func (c *Conversation) randMPI(buf []byte) *big.Int { - _, err := io.ReadFull(c.rand(), buf) - if err != nil { - panic("otr: short read from random source") - } - - return new(big.Int).SetBytes(buf) -} - -// tlv represents the type-length value from the protocol. -type tlv struct { - typ, length uint16 - data []byte -} - -const ( - tlvTypePadding = 0 - tlvTypeDisconnected = 1 - tlvTypeSMP1 = 2 - tlvTypeSMP2 = 3 - tlvTypeSMP3 = 4 - tlvTypeSMP4 = 5 - tlvTypeSMPAbort = 6 - tlvTypeSMP1WithQuestion = 7 -) - -// Receive handles a message from a peer. It returns a human readable message, -// an indicator of whether that message was encrypted, a hint about the -// encryption state and zero or more messages to send back to the peer. -// These messages do not need to be passed to Send before transmission. -func (c *Conversation) Receive(in []byte) (out []byte, encrypted bool, change SecurityChange, toSend [][]byte, err error) { - if bytes.HasPrefix(in, fragmentPrefix) { - in, err = c.processFragment(in) - if in == nil || err != nil { - return - } - } - - if bytes.HasPrefix(in, msgPrefix) && in[len(in)-1] == '.' { - in = in[len(msgPrefix) : len(in)-1] - } else if version := isQuery(in); version > 0 { - c.authState = authStateAwaitingDHKey - c.reset() - toSend = c.encode(c.generateDHCommit()) - return - } else { - // plaintext message - out = in - return - } - - msg := make([]byte, base64.StdEncoding.DecodedLen(len(in))) - msgLen, err := base64.StdEncoding.Decode(msg, in) - if err != nil { - err = errors.New("otr: invalid base64 encoding in message") - return - } - msg = msg[:msgLen] - - // The first two bytes are the protocol version (2) - if len(msg) < 3 || msg[0] != 0 || msg[1] != 2 { - err = errors.New("otr: invalid OTR message") - return - } - - msgType := int(msg[2]) - msg = msg[3:] - - switch msgType { - case msgTypeDHCommit: - switch c.authState { - case authStateNone: - c.authState = authStateAwaitingRevealSig - if err = c.processDHCommit(msg); err != nil { - return - } - c.reset() - toSend = c.encode(c.generateDHKey()) - return - case authStateAwaitingDHKey: - // This is a 'SYN-crossing'. The greater digest wins. - var cmp int - if cmp, err = c.compareToDHCommit(msg); err != nil { - return - } - if cmp > 0 { - // We win. Retransmit DH commit. - toSend = c.encode(c.serializeDHCommit()) - return - } else { - // They win. We forget about our DH commit. - c.authState = authStateAwaitingRevealSig - if err = c.processDHCommit(msg); err != nil { - return - } - c.reset() - toSend = c.encode(c.generateDHKey()) - return - } - case authStateAwaitingRevealSig: - if err = c.processDHCommit(msg); err != nil { - return - } - toSend = c.encode(c.serializeDHKey()) - case authStateAwaitingSig: - if err = c.processDHCommit(msg); err != nil { - return - } - c.reset() - toSend = c.encode(c.generateDHKey()) - c.authState = authStateAwaitingRevealSig - default: - panic("bad state") - } - case msgTypeDHKey: - switch c.authState { - case authStateAwaitingDHKey: - var isSame bool - if isSame, err = c.processDHKey(msg); err != nil { - return - } - if isSame { - err = errors.New("otr: unexpected duplicate DH key") - return - } - toSend = c.encode(c.generateRevealSig()) - c.authState = authStateAwaitingSig - case authStateAwaitingSig: - var isSame bool - if isSame, err = c.processDHKey(msg); err != nil { - return - } - if isSame { - toSend = c.encode(c.serializeDHKey()) - } - } - case msgTypeRevealSig: - if c.authState != authStateAwaitingRevealSig { - return - } - if err = c.processRevealSig(msg); err != nil { - return - } - toSend = c.encode(c.generateSig()) - c.authState = authStateNone - c.state = stateEncrypted - change = NewKeys - case msgTypeSig: - if c.authState != authStateAwaitingSig { - return - } - if err = c.processSig(msg); err != nil { - return - } - c.authState = authStateNone - c.state = stateEncrypted - change = NewKeys - case msgTypeData: - if c.state != stateEncrypted { - err = errors.New("otr: encrypted message received without encrypted session established") - return - } - var tlvs []tlv - out, tlvs, err = c.processData(msg) - encrypted = true - - EachTLV: - for _, inTLV := range tlvs { - switch inTLV.typ { - case tlvTypeDisconnected: - change = ConversationEnded - c.state = stateFinished - break EachTLV - case tlvTypeSMP1, tlvTypeSMP2, tlvTypeSMP3, tlvTypeSMP4, tlvTypeSMPAbort, tlvTypeSMP1WithQuestion: - var reply tlv - var complete bool - reply, complete, err = c.processSMP(inTLV) - if err == smpSecretMissingError { - err = nil - change = SMPSecretNeeded - c.smp.saved = &inTLV - return - } - if err == smpFailureError { - err = nil - change = SMPFailed - } else if complete { - change = SMPComplete - } - if reply.typ != 0 { - toSend = c.encode(c.generateData(nil, &reply)) - } - break EachTLV - default: - // skip unknown TLVs - } - } - default: - err = errors.New("otr: unknown message type " + strconv.Itoa(msgType)) - } - - return -} - -// Send takes a human readable message from the local user, possibly encrypts -// it and returns zero one or more messages to send to the peer. -func (c *Conversation) Send(msg []byte) ([][]byte, error) { - switch c.state { - case statePlaintext: - return [][]byte{msg}, nil - case stateEncrypted: - return c.encode(c.generateData(msg, nil)), nil - case stateFinished: - return nil, errors.New("otr: cannot send message because secure conversation has finished") - } - - return nil, errors.New("otr: cannot send message in current state") -} - -// SMPQuestion returns the human readable challenge question from the peer. -// It's only valid after Receive has returned SMPSecretNeeded. -func (c *Conversation) SMPQuestion() string { - return c.smp.question -} - -// Authenticate begins an authentication with the peer. Authentication involves -// an optional challenge message and a shared secret. The authentication -// proceeds until either Receive returns SMPComplete, SMPSecretNeeded (which -// indicates that a new authentication is happening and thus this one was -// aborted) or SMPFailed. -func (c *Conversation) Authenticate(question string, mutualSecret []byte) (toSend [][]byte, err error) { - if c.state != stateEncrypted { - err = errors.New("otr: can't authenticate a peer without a secure conversation established") - return - } - - if c.smp.saved != nil { - c.calcSMPSecret(mutualSecret, false /* they started it */) - - var out tlv - var complete bool - out, complete, err = c.processSMP(*c.smp.saved) - if complete { - panic("SMP completed on the first message") - } - c.smp.saved = nil - if out.typ != 0 { - toSend = c.encode(c.generateData(nil, &out)) - } - return - } - - c.calcSMPSecret(mutualSecret, true /* we started it */) - outs := c.startSMP(question) - for _, out := range outs { - toSend = append(toSend, c.encode(c.generateData(nil, &out))...) - } - return -} - -// End ends a secure conversation by generating a termination message for -// the peer and switches to unencrypted communication. -func (c *Conversation) End() (toSend [][]byte) { - switch c.state { - case statePlaintext: - return nil - case stateEncrypted: - c.state = statePlaintext - return c.encode(c.generateData(nil, &tlv{typ: tlvTypeDisconnected})) - case stateFinished: - c.state = statePlaintext - return nil - } - panic("unreachable") -} - -// IsEncrypted returns true if a message passed to Send would be encrypted -// before transmission. This result remains valid until the next call to -// Receive or End, which may change the state of the Conversation. -func (c *Conversation) IsEncrypted() bool { - return c.state == stateEncrypted -} - -var fragmentError = errors.New("otr: invalid OTR fragment") - -// processFragment processes a fragmented OTR message and possibly returns a -// complete message. Fragmented messages look like "?OTR,k,n,msg," where k is -// the fragment number (starting from 1), n is the number of fragments in this -// message and msg is a substring of the base64 encoded message. -func (c *Conversation) processFragment(in []byte) (out []byte, err error) { - in = in[len(fragmentPrefix):] // remove "?OTR," - parts := bytes.Split(in, fragmentPartSeparator) - if len(parts) != 4 || len(parts[3]) != 0 { - return nil, fragmentError - } - - k, err := strconv.Atoi(string(parts[0])) - if err != nil { - return nil, fragmentError - } - - n, err := strconv.Atoi(string(parts[1])) - if err != nil { - return nil, fragmentError - } - - if k < 1 || n < 1 || k > n { - return nil, fragmentError - } - - if k == 1 { - c.frag = append(c.frag[:0], parts[2]...) - c.k, c.n = k, n - } else if n == c.n && k == c.k+1 { - c.frag = append(c.frag, parts[2]...) - c.k++ - } else { - c.frag = c.frag[:0] - c.n, c.k = 0, 0 - } - - if c.n > 0 && c.k == c.n { - c.n, c.k = 0, 0 - return c.frag, nil - } - - return nil, nil -} - -func (c *Conversation) generateDHCommit() []byte { - _, err := io.ReadFull(c.rand(), c.r[:]) - if err != nil { - panic("otr: short read from random source") - } - - var xBytes [dhPrivateBytes]byte - c.x = c.randMPI(xBytes[:]) - c.gx = new(big.Int).Exp(g, c.x, p) - c.gy = nil - c.gxBytes = appendMPI(nil, c.gx) - - h := sha256.New() - h.Write(c.gxBytes) - h.Sum(c.digest[:0]) - - aesCipher, err := aes.NewCipher(c.r[:]) - if err != nil { - panic(err.Error()) - } - - var iv [aes.BlockSize]byte - ctr := cipher.NewCTR(aesCipher, iv[:]) - ctr.XORKeyStream(c.gxBytes, c.gxBytes) - - return c.serializeDHCommit() -} - -func (c *Conversation) serializeDHCommit() []byte { - var ret []byte - ret = appendU16(ret, 2) // protocol version - ret = append(ret, msgTypeDHCommit) - ret = appendData(ret, c.gxBytes) - ret = appendData(ret, c.digest[:]) - return ret -} - -func (c *Conversation) processDHCommit(in []byte) error { - var ok1, ok2 bool - c.gxBytes, in, ok1 = getData(in) - digest, in, ok2 := getData(in) - if !ok1 || !ok2 || len(in) > 0 { - return errors.New("otr: corrupt DH commit message") - } - copy(c.digest[:], digest) - return nil -} - -func (c *Conversation) compareToDHCommit(in []byte) (int, error) { - _, in, ok1 := getData(in) - digest, in, ok2 := getData(in) - if !ok1 || !ok2 || len(in) > 0 { - return 0, errors.New("otr: corrupt DH commit message") - } - return bytes.Compare(c.digest[:], digest), nil -} - -func (c *Conversation) generateDHKey() []byte { - var yBytes [dhPrivateBytes]byte - c.y = c.randMPI(yBytes[:]) - c.gy = new(big.Int).Exp(g, c.y, p) - return c.serializeDHKey() -} - -func (c *Conversation) serializeDHKey() []byte { - var ret []byte - ret = appendU16(ret, 2) // protocol version - ret = append(ret, msgTypeDHKey) - ret = appendMPI(ret, c.gy) - return ret -} - -func (c *Conversation) processDHKey(in []byte) (isSame bool, err error) { - gy, in, ok := getMPI(in) - if !ok { - err = errors.New("otr: corrupt DH key message") - return - } - if gy.Cmp(g) < 0 || gy.Cmp(pMinus2) > 0 { - err = errors.New("otr: DH value out of range") - return - } - if c.gy != nil { - isSame = c.gy.Cmp(gy) == 0 - return - } - c.gy = gy - return -} - -func (c *Conversation) generateEncryptedSignature(keys *akeKeys, xFirst bool) ([]byte, []byte) { - var xb []byte - xb = c.PrivateKey.PublicKey.Serialize(xb) - - var verifyData []byte - if xFirst { - verifyData = appendMPI(verifyData, c.gx) - verifyData = appendMPI(verifyData, c.gy) - } else { - verifyData = appendMPI(verifyData, c.gy) - verifyData = appendMPI(verifyData, c.gx) - } - verifyData = append(verifyData, xb...) - verifyData = appendU32(verifyData, c.myKeyId) - - mac := hmac.New(sha256.New, keys.m1[:]) - mac.Write(verifyData) - mb := mac.Sum(nil) - - xb = appendU32(xb, c.myKeyId) - xb = append(xb, c.PrivateKey.Sign(c.rand(), mb)...) - - aesCipher, err := aes.NewCipher(keys.c[:]) - if err != nil { - panic(err.Error()) - } - var iv [aes.BlockSize]byte - ctr := cipher.NewCTR(aesCipher, iv[:]) - ctr.XORKeyStream(xb, xb) - - mac = hmac.New(sha256.New, keys.m2[:]) - encryptedSig := appendData(nil, xb) - mac.Write(encryptedSig) - - return encryptedSig, mac.Sum(nil) -} - -func (c *Conversation) generateRevealSig() []byte { - s := new(big.Int).Exp(c.gy, c.x, p) - c.calcAKEKeys(s) - c.myKeyId++ - - encryptedSig, mac := c.generateEncryptedSignature(&c.revealKeys, true /* gx comes first */) - - c.myCurrentDHPub = c.gx - c.myCurrentDHPriv = c.x - c.rotateDHKeys() - incCounter(&c.myCounter) - - var ret []byte - ret = appendU16(ret, 2) - ret = append(ret, msgTypeRevealSig) - ret = appendData(ret, c.r[:]) - ret = append(ret, encryptedSig...) - ret = append(ret, mac[:20]...) - return ret -} - -func (c *Conversation) processEncryptedSig(encryptedSig, theirMAC []byte, keys *akeKeys, xFirst bool) error { - mac := hmac.New(sha256.New, keys.m2[:]) - mac.Write(appendData(nil, encryptedSig)) - myMAC := mac.Sum(nil)[:20] - - if len(myMAC) != len(theirMAC) || subtle.ConstantTimeCompare(myMAC, theirMAC) == 0 { - return errors.New("bad signature MAC in encrypted signature") - } - - aesCipher, err := aes.NewCipher(keys.c[:]) - if err != nil { - panic(err.Error()) - } - var iv [aes.BlockSize]byte - ctr := cipher.NewCTR(aesCipher, iv[:]) - ctr.XORKeyStream(encryptedSig, encryptedSig) - - sig := encryptedSig - sig, ok1 := c.TheirPublicKey.Parse(sig) - keyId, sig, ok2 := getU32(sig) - if !ok1 || !ok2 { - return errors.New("otr: corrupt encrypted signature") - } - - var verifyData []byte - if xFirst { - verifyData = appendMPI(verifyData, c.gx) - verifyData = appendMPI(verifyData, c.gy) - } else { - verifyData = appendMPI(verifyData, c.gy) - verifyData = appendMPI(verifyData, c.gx) - } - verifyData = c.TheirPublicKey.Serialize(verifyData) - verifyData = appendU32(verifyData, keyId) - - mac = hmac.New(sha256.New, keys.m1[:]) - mac.Write(verifyData) - mb := mac.Sum(nil) - - sig, ok1 = c.TheirPublicKey.Verify(mb, sig) - if !ok1 { - return errors.New("bad signature in encrypted signature") - } - if len(sig) > 0 { - return errors.New("corrupt encrypted signature") - } - - c.theirKeyId = keyId - zero(c.theirLastCtr[:]) - return nil -} - -func (c *Conversation) processRevealSig(in []byte) error { - r, in, ok1 := getData(in) - encryptedSig, in, ok2 := getData(in) - theirMAC := in - if !ok1 || !ok2 || len(theirMAC) != 20 { - return errors.New("otr: corrupt reveal signature message") - } - - aesCipher, err := aes.NewCipher(r) - if err != nil { - return errors.New("otr: cannot create AES cipher from reveal signature message: " + err.Error()) - } - var iv [aes.BlockSize]byte - ctr := cipher.NewCTR(aesCipher, iv[:]) - ctr.XORKeyStream(c.gxBytes, c.gxBytes) - h := sha256.New() - h.Write(c.gxBytes) - digest := h.Sum(nil) - if len(digest) != len(c.digest) || subtle.ConstantTimeCompare(digest, c.digest[:]) == 0 { - return errors.New("otr: bad commit MAC in reveal signature message") - } - var rest []byte - c.gx, rest, ok1 = getMPI(c.gxBytes) - if !ok1 || len(rest) > 0 { - return errors.New("otr: gx corrupt after decryption") - } - if c.gx.Cmp(g) < 0 || c.gx.Cmp(pMinus2) > 0 { - return errors.New("otr: DH value out of range") - } - s := new(big.Int).Exp(c.gx, c.y, p) - c.calcAKEKeys(s) - - if err := c.processEncryptedSig(encryptedSig, theirMAC, &c.revealKeys, true /* gx comes first */); err != nil { - return errors.New("otr: in reveal signature message: " + err.Error()) - } - - c.theirCurrentDHPub = c.gx - c.theirLastDHPub = nil - - return nil -} - -func (c *Conversation) generateSig() []byte { - c.myKeyId++ - - encryptedSig, mac := c.generateEncryptedSignature(&c.sigKeys, false /* gy comes first */) - - c.myCurrentDHPub = c.gy - c.myCurrentDHPriv = c.y - c.rotateDHKeys() - incCounter(&c.myCounter) - - var ret []byte - ret = appendU16(ret, 2) - ret = append(ret, msgTypeSig) - ret = append(ret, encryptedSig...) - ret = append(ret, mac[:macPrefixBytes]...) - return ret -} - -func (c *Conversation) processSig(in []byte) error { - encryptedSig, in, ok1 := getData(in) - theirMAC := in - if !ok1 || len(theirMAC) != macPrefixBytes { - return errors.New("otr: corrupt signature message") - } - - if err := c.processEncryptedSig(encryptedSig, theirMAC, &c.sigKeys, false /* gy comes first */); err != nil { - return errors.New("otr: in signature message: " + err.Error()) - } - - c.theirCurrentDHPub = c.gy - c.theirLastDHPub = nil - - return nil -} - -func (c *Conversation) rotateDHKeys() { - // evict slots using our retired key id - for i := range c.keySlots { - slot := &c.keySlots[i] - if slot.used && slot.myKeyId == c.myKeyId-1 { - slot.used = false - c.oldMACs = append(c.oldMACs, slot.recvMACKey...) - } - } - - c.myLastDHPriv = c.myCurrentDHPriv - c.myLastDHPub = c.myCurrentDHPub - - var xBytes [dhPrivateBytes]byte - c.myCurrentDHPriv = c.randMPI(xBytes[:]) - c.myCurrentDHPub = new(big.Int).Exp(g, c.myCurrentDHPriv, p) - c.myKeyId++ -} - -func (c *Conversation) processData(in []byte) (out []byte, tlvs []tlv, err error) { - origIn := in - flags, in, ok1 := getU8(in) - theirKeyId, in, ok2 := getU32(in) - myKeyId, in, ok3 := getU32(in) - y, in, ok4 := getMPI(in) - counter, in, ok5 := getNBytes(in, 8) - encrypted, in, ok6 := getData(in) - macedData := origIn[:len(origIn)-len(in)] - theirMAC, in, ok7 := getNBytes(in, macPrefixBytes) - _, in, ok8 := getData(in) - if !ok1 || !ok2 || !ok3 || !ok4 || !ok5 || !ok6 || !ok7 || !ok8 || len(in) > 0 { - err = errors.New("otr: corrupt data message") - return - } - - ignoreErrors := flags&1 != 0 - - slot, err := c.calcDataKeys(myKeyId, theirKeyId) - if err != nil { - if ignoreErrors { - err = nil - } - return - } - - mac := hmac.New(sha1.New, slot.recvMACKey) - mac.Write([]byte{0, 2, 3}) - mac.Write(macedData) - myMAC := mac.Sum(nil) - if len(myMAC) != len(theirMAC) || subtle.ConstantTimeCompare(myMAC, theirMAC) == 0 { - if !ignoreErrors { - err = errors.New("otr: bad MAC on data message") - } - return - } - - if bytes.Compare(counter, slot.theirLastCtr[:]) <= 0 { - err = errors.New("otr: counter regressed") - return - } - copy(slot.theirLastCtr[:], counter) - - var iv [aes.BlockSize]byte - copy(iv[:], counter) - aesCipher, err := aes.NewCipher(slot.recvAESKey) - if err != nil { - panic(err.Error()) - } - ctr := cipher.NewCTR(aesCipher, iv[:]) - ctr.XORKeyStream(encrypted, encrypted) - decrypted := encrypted - - if myKeyId == c.myKeyId { - c.rotateDHKeys() - } - if theirKeyId == c.theirKeyId { - // evict slots using their retired key id - for i := range c.keySlots { - slot := &c.keySlots[i] - if slot.used && slot.theirKeyId == theirKeyId-1 { - slot.used = false - c.oldMACs = append(c.oldMACs, slot.recvMACKey...) - } - } - - c.theirLastDHPub = c.theirCurrentDHPub - c.theirKeyId++ - c.theirCurrentDHPub = y - } - - if nulPos := bytes.IndexByte(decrypted, 0); nulPos >= 0 { - out = decrypted[:nulPos] - tlvData := decrypted[nulPos+1:] - for len(tlvData) > 0 { - var t tlv - var ok1, ok2, ok3 bool - - t.typ, tlvData, ok1 = getU16(tlvData) - t.length, tlvData, ok2 = getU16(tlvData) - t.data, tlvData, ok3 = getNBytes(tlvData, int(t.length)) - if !ok1 || !ok2 || !ok3 { - err = errors.New("otr: corrupt tlv data") - return - } - tlvs = append(tlvs, t) - } - } else { - out = decrypted - } - - return -} - -func (c *Conversation) generateData(msg []byte, extra *tlv) []byte { - slot, err := c.calcDataKeys(c.myKeyId-1, c.theirKeyId) - if err != nil { - panic("otr: failed to generate sending keys: " + err.Error()) - } - - var plaintext []byte - plaintext = append(plaintext, msg...) - plaintext = append(plaintext, 0) - - padding := paddingGranularity - ((len(plaintext) + 4) % paddingGranularity) - plaintext = appendU16(plaintext, tlvTypePadding) - plaintext = appendU16(plaintext, uint16(padding)) - for i := 0; i < padding; i++ { - plaintext = append(plaintext, 0) - } - - if extra != nil { - plaintext = appendU16(plaintext, extra.typ) - plaintext = appendU16(plaintext, uint16(len(extra.data))) - plaintext = append(plaintext, extra.data...) - } - - encrypted := make([]byte, len(plaintext)) - - var iv [aes.BlockSize]byte - copy(iv[:], c.myCounter[:]) - aesCipher, err := aes.NewCipher(slot.sendAESKey) - if err != nil { - panic(err.Error()) - } - ctr := cipher.NewCTR(aesCipher, iv[:]) - ctr.XORKeyStream(encrypted, plaintext) - - var ret []byte - ret = appendU16(ret, 2) - ret = append(ret, msgTypeData) - ret = append(ret, 0 /* flags */) - ret = appendU32(ret, c.myKeyId-1) - ret = appendU32(ret, c.theirKeyId) - ret = appendMPI(ret, c.myCurrentDHPub) - ret = append(ret, c.myCounter[:]...) - ret = appendData(ret, encrypted) - - mac := hmac.New(sha1.New, slot.sendMACKey) - mac.Write(ret) - ret = append(ret, mac.Sum(nil)[:macPrefixBytes]...) - ret = appendData(ret, c.oldMACs) - c.oldMACs = nil - incCounter(&c.myCounter) - - return ret -} - -func incCounter(counter *[8]byte) { - for i := 7; i >= 0; i-- { - counter[i]++ - if counter[i] > 0 { - break - } - } -} - -// calcDataKeys computes the keys used to encrypt a data message given the key -// IDs. -func (c *Conversation) calcDataKeys(myKeyId, theirKeyId uint32) (slot *keySlot, err error) { - // Check for a cache hit. - for i := range c.keySlots { - slot = &c.keySlots[i] - if slot.used && slot.theirKeyId == theirKeyId && slot.myKeyId == myKeyId { - return - } - } - - // Find an empty slot to write into. - slot = nil - for i := range c.keySlots { - if !c.keySlots[i].used { - slot = &c.keySlots[i] - break - } - } - if slot == nil { - return nil, errors.New("otr: internal error: no more key slots") - } - - var myPriv, myPub, theirPub *big.Int - - if myKeyId == c.myKeyId { - myPriv = c.myCurrentDHPriv - myPub = c.myCurrentDHPub - } else if myKeyId == c.myKeyId-1 { - myPriv = c.myLastDHPriv - myPub = c.myLastDHPub - } else { - err = errors.New("otr: peer requested keyid " + strconv.FormatUint(uint64(myKeyId), 10) + " when I'm on " + strconv.FormatUint(uint64(c.myKeyId), 10)) - return - } - - if theirKeyId == c.theirKeyId { - theirPub = c.theirCurrentDHPub - } else if theirKeyId == c.theirKeyId-1 && c.theirLastDHPub != nil { - theirPub = c.theirLastDHPub - } else { - err = errors.New("otr: peer requested keyid " + strconv.FormatUint(uint64(myKeyId), 10) + " when they're on " + strconv.FormatUint(uint64(c.myKeyId), 10)) - return - } - - var sendPrefixByte, recvPrefixByte [1]byte - - if myPub.Cmp(theirPub) > 0 { - // we're the high end - sendPrefixByte[0], recvPrefixByte[0] = 1, 2 - } else { - // we're the low end - sendPrefixByte[0], recvPrefixByte[0] = 2, 1 - } - - s := new(big.Int).Exp(theirPub, myPriv, p) - sBytes := appendMPI(nil, s) - - h := sha1.New() - h.Write(sendPrefixByte[:]) - h.Write(sBytes) - slot.sendAESKey = h.Sum(slot.sendAESKey[:0])[:16] - - h.Reset() - h.Write(slot.sendAESKey) - slot.sendMACKey = h.Sum(slot.sendMACKey[:0]) - - h.Reset() - h.Write(recvPrefixByte[:]) - h.Write(sBytes) - slot.recvAESKey = h.Sum(slot.recvAESKey[:0])[:16] - - h.Reset() - h.Write(slot.recvAESKey) - slot.recvMACKey = h.Sum(slot.recvMACKey[:0]) - - slot.theirKeyId = theirKeyId - slot.myKeyId = myKeyId - slot.used = true - - zero(slot.theirLastCtr[:]) - return -} - -func (c *Conversation) calcAKEKeys(s *big.Int) { - mpi := appendMPI(nil, s) - h := sha256.New() - - var cBytes [32]byte - hashWithPrefix(c.SSID[:], 0, mpi, h) - - hashWithPrefix(cBytes[:], 1, mpi, h) - copy(c.revealKeys.c[:], cBytes[:16]) - copy(c.sigKeys.c[:], cBytes[16:]) - - hashWithPrefix(c.revealKeys.m1[:], 2, mpi, h) - hashWithPrefix(c.revealKeys.m2[:], 3, mpi, h) - hashWithPrefix(c.sigKeys.m1[:], 4, mpi, h) - hashWithPrefix(c.sigKeys.m2[:], 5, mpi, h) -} - -func hashWithPrefix(out []byte, prefix byte, in []byte, h hash.Hash) { - h.Reset() - var p [1]byte - p[0] = prefix - h.Write(p[:]) - h.Write(in) - if len(out) == h.Size() { - h.Sum(out[:0]) - } else { - digest := h.Sum(nil) - copy(out, digest) - } -} - -func (c *Conversation) encode(msg []byte) [][]byte { - b64 := make([]byte, base64.StdEncoding.EncodedLen(len(msg))+len(msgPrefix)+1) - base64.StdEncoding.Encode(b64[len(msgPrefix):], msg) - copy(b64, msgPrefix) - b64[len(b64)-1] = '.' - - if c.FragmentSize < minFragmentSize || len(b64) <= c.FragmentSize { - // We can encode this in a single fragment. - return [][]byte{b64} - } - - // We have to fragment this message. - var ret [][]byte - bytesPerFragment := c.FragmentSize - minFragmentSize - numFragments := (len(b64) + bytesPerFragment) / bytesPerFragment - - for i := 0; i < numFragments; i++ { - frag := []byte("?OTR," + strconv.Itoa(i+1) + "," + strconv.Itoa(numFragments) + ",") - todo := bytesPerFragment - if todo > len(b64) { - todo = len(b64) - } - frag = append(frag, b64[:todo]...) - b64 = b64[todo:] - frag = append(frag, ',') - ret = append(ret, frag) - } - - return ret -} - -func (c *Conversation) reset() { - c.myKeyId = 0 - - for i := range c.keySlots { - c.keySlots[i].used = false - } -} - -type PublicKey struct { - dsa.PublicKey -} - -func (pk *PublicKey) Parse(in []byte) ([]byte, bool) { - var ok bool - var pubKeyType uint16 - - if pubKeyType, in, ok = getU16(in); !ok || pubKeyType != 0 { - return nil, false - } - if pk.P, in, ok = getMPI(in); !ok { - return nil, false - } - if pk.Q, in, ok = getMPI(in); !ok { - return nil, false - } - if pk.G, in, ok = getMPI(in); !ok { - return nil, false - } - if pk.Y, in, ok = getMPI(in); !ok { - return nil, false - } - - return in, true -} - -func (pk *PublicKey) Serialize(in []byte) []byte { - in = appendU16(in, 0) - in = appendMPI(in, pk.P) - in = appendMPI(in, pk.Q) - in = appendMPI(in, pk.G) - in = appendMPI(in, pk.Y) - return in -} - -// Fingerprint returns the 20-byte, binary fingerprint of the PublicKey. -func (pk *PublicKey) Fingerprint() []byte { - b := pk.Serialize(nil) - h := sha1.New() - h.Write(b[2:]) - return h.Sum(nil) -} - -func (pk *PublicKey) Verify(hashed, sig []byte) ([]byte, bool) { - if len(sig) != 2*dsaSubgroupBytes { - return nil, false - } - r := new(big.Int).SetBytes(sig[:dsaSubgroupBytes]) - s := new(big.Int).SetBytes(sig[dsaSubgroupBytes:]) - ok := dsa.Verify(&pk.PublicKey, hashed, r, s) - return sig[dsaSubgroupBytes*2:], ok -} - -type PrivateKey struct { - PublicKey - dsa.PrivateKey -} - -func (priv *PrivateKey) Sign(rand io.Reader, hashed []byte) []byte { - r, s, err := dsa.Sign(rand, &priv.PrivateKey, hashed) - if err != nil { - panic(err.Error()) - } - rBytes := r.Bytes() - sBytes := s.Bytes() - if len(rBytes) > dsaSubgroupBytes || len(sBytes) > dsaSubgroupBytes { - panic("DSA signature too large") - } - - out := make([]byte, 2*dsaSubgroupBytes) - copy(out[dsaSubgroupBytes-len(rBytes):], rBytes) - copy(out[len(out)-len(sBytes):], sBytes) - return out -} - -func (priv *PrivateKey) Serialize(in []byte) []byte { - in = priv.PublicKey.Serialize(in) - in = appendMPI(in, priv.PrivateKey.X) - return in -} - -func (priv *PrivateKey) Parse(in []byte) ([]byte, bool) { - in, ok := priv.PublicKey.Parse(in) - if !ok { - return in, ok - } - priv.PrivateKey.PublicKey = priv.PublicKey.PublicKey - priv.PrivateKey.X, in, ok = getMPI(in) - return in, ok -} - -func (priv *PrivateKey) Generate(rand io.Reader) { - if err := dsa.GenerateParameters(&priv.PrivateKey.PublicKey.Parameters, rand, dsa.L1024N160); err != nil { - panic(err.Error()) - } - if err := dsa.GenerateKey(&priv.PrivateKey, rand); err != nil { - panic(err.Error()) - } - priv.PublicKey.PublicKey = priv.PrivateKey.PublicKey -} - -func notHex(r rune) bool { - if r >= '0' && r <= '9' || - r >= 'a' && r <= 'f' || - r >= 'A' && r <= 'F' { - return false - } - - return true -} - -// Import parses the contents of a libotr private key file. -func (priv *PrivateKey) Import(in []byte) bool { - mpiStart := []byte(" #") - - mpis := make([]*big.Int, 5) - - for i := 0; i < len(mpis); i++ { - start := bytes.Index(in, mpiStart) - if start == -1 { - return false - } - in = in[start+len(mpiStart):] - end := bytes.IndexFunc(in, notHex) - if end == -1 { - return false - } - hexBytes := in[:end] - in = in[end:] - - if len(hexBytes)&1 != 0 { - return false - } - - mpiBytes := make([]byte, len(hexBytes)/2) - if _, err := hex.Decode(mpiBytes, hexBytes); err != nil { - return false - } - - mpis[i] = new(big.Int).SetBytes(mpiBytes) - } - - for _, mpi := range mpis { - if mpi.Sign() <= 0 { - return false - } - } - - priv.PrivateKey.P = mpis[0] - priv.PrivateKey.Q = mpis[1] - priv.PrivateKey.G = mpis[2] - priv.PrivateKey.Y = mpis[3] - priv.PrivateKey.X = mpis[4] - priv.PublicKey.PublicKey = priv.PrivateKey.PublicKey - - a := new(big.Int).Exp(priv.PrivateKey.G, priv.PrivateKey.X, priv.PrivateKey.P) - return a.Cmp(priv.PrivateKey.Y) == 0 -} - -func getU8(in []byte) (uint8, []byte, bool) { - if len(in) < 1 { - return 0, in, false - } - return in[0], in[1:], true -} - -func getU16(in []byte) (uint16, []byte, bool) { - if len(in) < 2 { - return 0, in, false - } - r := uint16(in[0])<<8 | uint16(in[1]) - return r, in[2:], true -} - -func getU32(in []byte) (uint32, []byte, bool) { - if len(in) < 4 { - return 0, in, false - } - r := uint32(in[0])<<24 | uint32(in[1])<<16 | uint32(in[2])<<8 | uint32(in[3]) - return r, in[4:], true -} - -func getMPI(in []byte) (*big.Int, []byte, bool) { - l, in, ok := getU32(in) - if !ok || uint32(len(in)) < l { - return nil, in, false - } - r := new(big.Int).SetBytes(in[:l]) - return r, in[l:], true -} - -func getData(in []byte) ([]byte, []byte, bool) { - l, in, ok := getU32(in) - if !ok || uint32(len(in)) < l { - return nil, in, false - } - return in[:l], in[l:], true -} - -func getNBytes(in []byte, n int) ([]byte, []byte, bool) { - if len(in) < n { - return nil, in, false - } - return in[:n], in[n:], true -} - -func appendU16(out []byte, v uint16) []byte { - out = append(out, byte(v>>8), byte(v)) - return out -} - -func appendU32(out []byte, v uint32) []byte { - out = append(out, byte(v>>24), byte(v>>16), byte(v>>8), byte(v)) - return out -} - -func appendData(out, v []byte) []byte { - out = appendU32(out, uint32(len(v))) - out = append(out, v...) - return out -} - -func appendMPI(out []byte, v *big.Int) []byte { - vBytes := v.Bytes() - out = appendU32(out, uint32(len(vBytes))) - out = append(out, vBytes...) - return out -} - -func appendMPIs(out []byte, mpis ...*big.Int) []byte { - for _, mpi := range mpis { - out = appendMPI(out, mpi) - } - return out -} - -func zero(b []byte) { - for i := range b { - b[i] = 0 - } -} diff --git a/vendor/golang.org/x/crypto/otr/otr_test.go b/vendor/golang.org/x/crypto/otr/otr_test.go deleted file mode 100644 index cfcd062b..00000000 --- a/vendor/golang.org/x/crypto/otr/otr_test.go +++ /dev/null @@ -1,470 +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 otr - -import ( - "bufio" - "bytes" - "crypto/rand" - "encoding/hex" - "math/big" - "os" - "os/exec" - "testing" -) - -var isQueryTests = []struct { - msg string - expectedVersion int -}{ - {"foo", 0}, - {"?OtR", 0}, - {"?OtR?", 0}, - {"?OTR?", 0}, - {"?OTRv?", 0}, - {"?OTRv1?", 0}, - {"?OTR?v1?", 0}, - {"?OTR?v?", 0}, - {"?OTR?v2?", 2}, - {"?OTRv2?", 2}, - {"?OTRv23?", 2}, - {"?OTRv23 ?", 0}, -} - -func TestIsQuery(t *testing.T) { - for i, test := range isQueryTests { - version := isQuery([]byte(test.msg)) - if version != test.expectedVersion { - t.Errorf("#%d: got %d, want %d", i, version, test.expectedVersion) - } - } -} - -var alicePrivateKeyHex = "000000000080c81c2cb2eb729b7e6fd48e975a932c638b3a9055478583afa46755683e30102447f6da2d8bec9f386bbb5da6403b0040fee8650b6ab2d7f32c55ab017ae9b6aec8c324ab5844784e9a80e194830d548fb7f09a0410df2c4d5c8bc2b3e9ad484e65412be689cf0834694e0839fb2954021521ffdffb8f5c32c14dbf2020b3ce7500000014da4591d58def96de61aea7b04a8405fe1609308d000000808ddd5cb0b9d66956e3dea5a915d9aba9d8a6e7053b74dadb2fc52f9fe4e5bcc487d2305485ed95fed026ad93f06ebb8c9e8baf693b7887132c7ffdd3b0f72f4002ff4ed56583ca7c54458f8c068ca3e8a4dfa309d1dd5d34e2a4b68e6f4338835e5e0fb4317c9e4c7e4806dafda3ef459cd563775a586dd91b1319f72621bf3f00000080b8147e74d8c45e6318c37731b8b33b984a795b3653c2cd1d65cc99efe097cb7eb2fa49569bab5aab6e8a1c261a27d0f7840a5e80b317e6683042b59b6dceca2879c6ffc877a465be690c15e4a42f9a7588e79b10faac11b1ce3741fcef7aba8ce05327a2c16d279ee1b3d77eb783fb10e3356caa25635331e26dd42b8396c4d00000001420bec691fea37ecea58a5c717142f0b804452f57" - -var aliceFingerprintHex = "0bb01c360424522e94ee9c346ce877a1a4288b2f" - -var bobPrivateKeyHex = "000000000080a5138eb3d3eb9c1d85716faecadb718f87d31aaed1157671d7fee7e488f95e8e0ba60ad449ec732710a7dec5190f7182af2e2f98312d98497221dff160fd68033dd4f3a33b7c078d0d9f66e26847e76ca7447d4bab35486045090572863d9e4454777f24d6706f63e02548dfec2d0a620af37bbc1d24f884708a212c343b480d00000014e9c58f0ea21a5e4dfd9f44b6a9f7f6a9961a8fa9000000803c4d111aebd62d3c50c2889d420a32cdf1e98b70affcc1fcf44d59cca2eb019f6b774ef88153fb9b9615441a5fe25ea2d11b74ce922ca0232bd81b3c0fcac2a95b20cb6e6c0c5c1ace2e26f65dc43c751af0edbb10d669890e8ab6beea91410b8b2187af1a8347627a06ecea7e0f772c28aae9461301e83884860c9b656c722f0000008065af8625a555ea0e008cd04743671a3cda21162e83af045725db2eb2bb52712708dc0cc1a84c08b3649b88a966974bde27d8612c2861792ec9f08786a246fcadd6d8d3a81a32287745f309238f47618c2bd7612cb8b02d940571e0f30b96420bcd462ff542901b46109b1e5ad6423744448d20a57818a8cbb1647d0fea3b664e0000001440f9f2eb554cb00d45a5826b54bfa419b6980e48" - -func TestKeySerialization(t *testing.T) { - var priv PrivateKey - alicePrivateKey, _ := hex.DecodeString(alicePrivateKeyHex) - rest, ok := priv.Parse(alicePrivateKey) - if !ok { - t.Error("failed to parse private key") - } - if len(rest) > 0 { - t.Error("data remaining after parsing private key") - } - - out := priv.Serialize(nil) - if !bytes.Equal(alicePrivateKey, out) { - t.Errorf("serialization (%x) is not equal to original (%x)", out, alicePrivateKey) - } - - aliceFingerprint, _ := hex.DecodeString(aliceFingerprintHex) - fingerprint := priv.PublicKey.Fingerprint() - if !bytes.Equal(aliceFingerprint, fingerprint) { - t.Errorf("fingerprint (%x) is not equal to expected value (%x)", fingerprint, aliceFingerprint) - } -} - -const libOTRPrivateKey = `(privkeys - (account -(name "foo@example.com") -(protocol prpl-jabber) -(private-key - (dsa - (p #00FC07ABCF0DC916AFF6E9AE47BEF60C7AB9B4D6B2469E436630E36F8A489BE812486A09F30B71224508654940A835301ACC525A4FF133FC152CC53DCC59D65C30A54F1993FE13FE63E5823D4C746DB21B90F9B9C00B49EC7404AB1D929BA7FBA12F2E45C6E0A651689750E8528AB8C031D3561FECEE72EBB4A090D450A9B7A857#) - (q #00997BD266EF7B1F60A5C23F3A741F2AEFD07A2081#) - (g #535E360E8A95EBA46A4F7DE50AD6E9B2A6DB785A66B64EB9F20338D2A3E8FB0E94725848F1AA6CC567CB83A1CC517EC806F2E92EAE71457E80B2210A189B91250779434B41FC8A8873F6DB94BEA7D177F5D59E7E114EE10A49CFD9CEF88AE43387023B672927BA74B04EB6BBB5E57597766A2F9CE3857D7ACE3E1E3BC1FC6F26#) - (y #0AC8670AD767D7A8D9D14CC1AC6744CD7D76F993B77FFD9E39DF01E5A6536EF65E775FCEF2A983E2A19BD6415500F6979715D9FD1257E1FE2B6F5E1E74B333079E7C880D39868462A93454B41877BE62E5EF0A041C2EE9C9E76BD1E12AE25D9628DECB097025DD625EF49C3258A1A3C0FF501E3DC673B76D7BABF349009B6ECF#) - (x #14D0345A3562C480A039E3C72764F72D79043216#) - ) - ) - ) -)` - -func TestParseLibOTRPrivateKey(t *testing.T) { - var priv PrivateKey - - if !priv.Import([]byte(libOTRPrivateKey)) { - t.Fatalf("Failed to import sample private key") - } -} - -func TestSignVerify(t *testing.T) { - var priv PrivateKey - alicePrivateKey, _ := hex.DecodeString(alicePrivateKeyHex) - _, ok := priv.Parse(alicePrivateKey) - if !ok { - t.Error("failed to parse private key") - } - - var msg [32]byte - rand.Reader.Read(msg[:]) - - sig := priv.Sign(rand.Reader, msg[:]) - rest, ok := priv.PublicKey.Verify(msg[:], sig) - if !ok { - t.Errorf("signature (%x) of %x failed to verify", sig, msg[:]) - } else if len(rest) > 0 { - t.Error("signature data remains after verification") - } - - sig[10] ^= 80 - _, ok = priv.PublicKey.Verify(msg[:], sig) - if ok { - t.Errorf("corrupted signature (%x) of %x verified", sig, msg[:]) - } -} - -func setupConversation(t *testing.T) (alice, bob *Conversation) { - alicePrivateKey, _ := hex.DecodeString(alicePrivateKeyHex) - bobPrivateKey, _ := hex.DecodeString(bobPrivateKeyHex) - - alice, bob = new(Conversation), new(Conversation) - - alice.PrivateKey = new(PrivateKey) - bob.PrivateKey = new(PrivateKey) - alice.PrivateKey.Parse(alicePrivateKey) - bob.PrivateKey.Parse(bobPrivateKey) - alice.FragmentSize = 100 - bob.FragmentSize = 100 - - if alice.IsEncrypted() { - t.Error("Alice believes that the conversation is secure before we've started") - } - if bob.IsEncrypted() { - t.Error("Bob believes that the conversation is secure before we've started") - } - - performHandshake(t, alice, bob) - return alice, bob -} - -func performHandshake(t *testing.T, alice, bob *Conversation) { - var alicesMessage, bobsMessage [][]byte - var out []byte - var aliceChange, bobChange SecurityChange - var err error - alicesMessage = append(alicesMessage, []byte(QueryMessage)) - - for round := 0; len(alicesMessage) > 0 || len(bobsMessage) > 0; round++ { - bobsMessage = nil - for i, msg := range alicesMessage { - out, _, bobChange, bobsMessage, err = bob.Receive(msg) - if len(out) > 0 { - t.Errorf("Bob generated output during key exchange, round %d, message %d", round, i) - } - if err != nil { - t.Fatalf("Bob returned an error, round %d, message %d (%x): %s", round, i, msg, err) - } - if len(bobsMessage) > 0 && i != len(alicesMessage)-1 { - t.Errorf("Bob produced output while processing a fragment, round %d, message %d", round, i) - } - } - - alicesMessage = nil - for i, msg := range bobsMessage { - out, _, aliceChange, alicesMessage, err = alice.Receive(msg) - if len(out) > 0 { - t.Errorf("Alice generated output during key exchange, round %d, message %d", round, i) - } - if err != nil { - t.Fatalf("Alice returned an error, round %d, message %d (%x): %s", round, i, msg, err) - } - if len(alicesMessage) > 0 && i != len(bobsMessage)-1 { - t.Errorf("Alice produced output while processing a fragment, round %d, message %d", round, i) - } - } - } - - if aliceChange != NewKeys { - t.Errorf("Alice terminated without signaling new keys") - } - if bobChange != NewKeys { - t.Errorf("Bob terminated without signaling new keys") - } - - if !bytes.Equal(alice.SSID[:], bob.SSID[:]) { - t.Errorf("Session identifiers don't match. Alice has %x, Bob has %x", alice.SSID[:], bob.SSID[:]) - } - - if !alice.IsEncrypted() { - t.Error("Alice doesn't believe that the conversation is secure") - } - if !bob.IsEncrypted() { - t.Error("Bob doesn't believe that the conversation is secure") - } -} - -const ( - firstRoundTrip = iota - subsequentRoundTrip - noMACKeyCheck -) - -func roundTrip(t *testing.T, alice, bob *Conversation, message []byte, macKeyCheck int) { - alicesMessage, err := alice.Send(message) - if err != nil { - t.Errorf("Error from Alice sending message: %s", err) - } - - if len(alice.oldMACs) != 0 { - t.Errorf("Alice has not revealed all MAC keys") - } - - for i, msg := range alicesMessage { - out, encrypted, _, _, err := bob.Receive(msg) - - if err != nil { - t.Errorf("Error generated while processing test message: %s", err.Error()) - } - if len(out) > 0 { - if i != len(alicesMessage)-1 { - t.Fatal("Bob produced a message while processing a fragment of Alice's") - } - if !encrypted { - t.Errorf("Message was not marked as encrypted") - } - if !bytes.Equal(out, message) { - t.Errorf("Message corrupted: got %x, want %x", out, message) - } - } - } - - switch macKeyCheck { - case firstRoundTrip: - if len(bob.oldMACs) != 0 { - t.Errorf("Bob should not have MAC keys to reveal") - } - case subsequentRoundTrip: - if len(bob.oldMACs) != 40 { - t.Errorf("Bob has %d bytes of MAC keys to reveal, but should have 40", len(bob.oldMACs)) - } - } - - bobsMessage, err := bob.Send(message) - if err != nil { - t.Errorf("Error from Bob sending message: %s", err) - } - - if len(bob.oldMACs) != 0 { - t.Errorf("Bob has not revealed all MAC keys") - } - - for i, msg := range bobsMessage { - out, encrypted, _, _, err := alice.Receive(msg) - - if err != nil { - t.Errorf("Error generated while processing test message: %s", err.Error()) - } - if len(out) > 0 { - if i != len(bobsMessage)-1 { - t.Fatal("Alice produced a message while processing a fragment of Bob's") - } - if !encrypted { - t.Errorf("Message was not marked as encrypted") - } - if !bytes.Equal(out, message) { - t.Errorf("Message corrupted: got %x, want %x", out, message) - } - } - } - - switch macKeyCheck { - case firstRoundTrip: - if len(alice.oldMACs) != 20 { - t.Errorf("Alice has %d bytes of MAC keys to reveal, but should have 20", len(alice.oldMACs)) - } - case subsequentRoundTrip: - if len(alice.oldMACs) != 40 { - t.Errorf("Alice has %d bytes of MAC keys to reveal, but should have 40", len(alice.oldMACs)) - } - } -} - -func TestConversation(t *testing.T) { - alice, bob := setupConversation(t) - - var testMessages = [][]byte{ - []byte("hello"), []byte("bye"), - } - - roundTripType := firstRoundTrip - - for _, testMessage := range testMessages { - roundTrip(t, alice, bob, testMessage, roundTripType) - roundTripType = subsequentRoundTrip - } -} - -func TestGoodSMP(t *testing.T) { - var alice, bob Conversation - - alice.smp.secret = new(big.Int).SetInt64(42) - bob.smp.secret = alice.smp.secret - - var alicesMessages, bobsMessages []tlv - var aliceComplete, bobComplete bool - var err error - var out tlv - - alicesMessages = alice.startSMP("") - for round := 0; len(alicesMessages) > 0 || len(bobsMessages) > 0; round++ { - bobsMessages = bobsMessages[:0] - for i, msg := range alicesMessages { - out, bobComplete, err = bob.processSMP(msg) - if err != nil { - t.Errorf("Error from Bob in round %d: %s", round, err) - } - if bobComplete && i != len(alicesMessages)-1 { - t.Errorf("Bob returned a completed signal before processing all of Alice's messages in round %d", round) - } - if out.typ != 0 { - bobsMessages = append(bobsMessages, out) - } - } - - alicesMessages = alicesMessages[:0] - for i, msg := range bobsMessages { - out, aliceComplete, err = alice.processSMP(msg) - if err != nil { - t.Errorf("Error from Alice in round %d: %s", round, err) - } - if aliceComplete && i != len(bobsMessages)-1 { - t.Errorf("Alice returned a completed signal before processing all of Bob's messages in round %d", round) - } - if out.typ != 0 { - alicesMessages = append(alicesMessages, out) - } - } - } - - if !aliceComplete || !bobComplete { - t.Errorf("SMP completed without both sides reporting success: alice: %v, bob: %v\n", aliceComplete, bobComplete) - } -} - -func TestBadSMP(t *testing.T) { - var alice, bob Conversation - - alice.smp.secret = new(big.Int).SetInt64(42) - bob.smp.secret = new(big.Int).SetInt64(43) - - var alicesMessages, bobsMessages []tlv - - alicesMessages = alice.startSMP("") - for round := 0; len(alicesMessages) > 0 || len(bobsMessages) > 0; round++ { - bobsMessages = bobsMessages[:0] - for _, msg := range alicesMessages { - out, complete, _ := bob.processSMP(msg) - if complete { - t.Errorf("Bob signaled completion in round %d", round) - } - if out.typ != 0 { - bobsMessages = append(bobsMessages, out) - } - } - - alicesMessages = alicesMessages[:0] - for _, msg := range bobsMessages { - out, complete, _ := alice.processSMP(msg) - if complete { - t.Errorf("Alice signaled completion in round %d", round) - } - if out.typ != 0 { - alicesMessages = append(alicesMessages, out) - } - } - } -} - -func TestRehandshaking(t *testing.T) { - alice, bob := setupConversation(t) - roundTrip(t, alice, bob, []byte("test"), firstRoundTrip) - roundTrip(t, alice, bob, []byte("test 2"), subsequentRoundTrip) - roundTrip(t, alice, bob, []byte("test 3"), subsequentRoundTrip) - roundTrip(t, alice, bob, []byte("test 4"), subsequentRoundTrip) - roundTrip(t, alice, bob, []byte("test 5"), subsequentRoundTrip) - roundTrip(t, alice, bob, []byte("test 6"), subsequentRoundTrip) - roundTrip(t, alice, bob, []byte("test 7"), subsequentRoundTrip) - roundTrip(t, alice, bob, []byte("test 8"), subsequentRoundTrip) - performHandshake(t, alice, bob) - roundTrip(t, alice, bob, []byte("test"), noMACKeyCheck) - roundTrip(t, alice, bob, []byte("test 2"), noMACKeyCheck) -} - -func TestAgainstLibOTR(t *testing.T) { - // This test requires otr.c.test to be built as /tmp/a.out. - // If enabled, this tests runs forever performing OTR handshakes in a - // loop. - return - - alicePrivateKey, _ := hex.DecodeString(alicePrivateKeyHex) - var alice Conversation - alice.PrivateKey = new(PrivateKey) - alice.PrivateKey.Parse(alicePrivateKey) - - cmd := exec.Command("/tmp/a.out") - cmd.Stderr = os.Stderr - - out, err := cmd.StdinPipe() - if err != nil { - t.Fatal(err) - } - defer out.Close() - stdout, err := cmd.StdoutPipe() - if err != nil { - t.Fatal(err) - } - in := bufio.NewReader(stdout) - - if err := cmd.Start(); err != nil { - t.Fatal(err) - } - - out.Write([]byte(QueryMessage)) - out.Write([]byte("\n")) - var expectedText = []byte("test message") - - for { - line, isPrefix, err := in.ReadLine() - if isPrefix { - t.Fatal("line from subprocess too long") - } - if err != nil { - t.Fatal(err) - } - text, encrypted, change, alicesMessage, err := alice.Receive(line) - if err != nil { - t.Fatal(err) - } - for _, msg := range alicesMessage { - out.Write(msg) - out.Write([]byte("\n")) - } - if change == NewKeys { - alicesMessage, err := alice.Send([]byte("Go -> libotr test message")) - if err != nil { - t.Fatalf("error sending message: %s", err.Error()) - } else { - for _, msg := range alicesMessage { - out.Write(msg) - out.Write([]byte("\n")) - } - } - } - if len(text) > 0 { - if !bytes.Equal(text, expectedText) { - t.Fatalf("expected %x, but got %x", expectedText, text) - } - if !encrypted { - t.Fatal("message wasn't encrypted") - } - } - } -} diff --git a/vendor/golang.org/x/crypto/otr/smp.go b/vendor/golang.org/x/crypto/otr/smp.go deleted file mode 100644 index dc6de4ee..00000000 --- a/vendor/golang.org/x/crypto/otr/smp.go +++ /dev/null @@ -1,572 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This file implements the Socialist Millionaires Protocol as described in -// http://www.cypherpunks.ca/otr/Protocol-v2-3.1.0.html. The protocol -// specification is required in order to understand this code and, where -// possible, the variable names in the code match up with the spec. - -package otr - -import ( - "bytes" - "crypto/sha256" - "errors" - "hash" - "math/big" -) - -type smpFailure string - -func (s smpFailure) Error() string { - return string(s) -} - -var smpFailureError = smpFailure("otr: SMP protocol failed") -var smpSecretMissingError = smpFailure("otr: mutual secret needed") - -const smpVersion = 1 - -const ( - smpState1 = iota - smpState2 - smpState3 - smpState4 -) - -type smpState struct { - state int - a2, a3, b2, b3, pb, qb *big.Int - g2a, g3a *big.Int - g2, g3 *big.Int - g3b, papb, qaqb, ra *big.Int - saved *tlv - secret *big.Int - question string -} - -func (c *Conversation) startSMP(question string) (tlvs []tlv) { - if c.smp.state != smpState1 { - tlvs = append(tlvs, c.generateSMPAbort()) - } - tlvs = append(tlvs, c.generateSMP1(question)) - c.smp.question = "" - c.smp.state = smpState2 - return -} - -func (c *Conversation) resetSMP() { - c.smp.state = smpState1 - c.smp.secret = nil - c.smp.question = "" -} - -func (c *Conversation) processSMP(in tlv) (out tlv, complete bool, err error) { - data := in.data - - switch in.typ { - case tlvTypeSMPAbort: - if c.smp.state != smpState1 { - err = smpFailureError - } - c.resetSMP() - return - case tlvTypeSMP1WithQuestion: - // We preprocess this into a SMP1 message. - nulPos := bytes.IndexByte(data, 0) - if nulPos == -1 { - err = errors.New("otr: SMP message with question didn't contain a NUL byte") - return - } - c.smp.question = string(data[:nulPos]) - data = data[nulPos+1:] - } - - numMPIs, data, ok := getU32(data) - if !ok || numMPIs > 20 { - err = errors.New("otr: corrupt SMP message") - return - } - - mpis := make([]*big.Int, numMPIs) - for i := range mpis { - var ok bool - mpis[i], data, ok = getMPI(data) - if !ok { - err = errors.New("otr: corrupt SMP message") - return - } - } - - switch in.typ { - case tlvTypeSMP1, tlvTypeSMP1WithQuestion: - if c.smp.state != smpState1 { - c.resetSMP() - out = c.generateSMPAbort() - return - } - if c.smp.secret == nil { - err = smpSecretMissingError - return - } - if err = c.processSMP1(mpis); err != nil { - return - } - c.smp.state = smpState3 - out = c.generateSMP2() - case tlvTypeSMP2: - if c.smp.state != smpState2 { - c.resetSMP() - out = c.generateSMPAbort() - return - } - if out, err = c.processSMP2(mpis); err != nil { - out = c.generateSMPAbort() - return - } - c.smp.state = smpState4 - case tlvTypeSMP3: - if c.smp.state != smpState3 { - c.resetSMP() - out = c.generateSMPAbort() - return - } - if out, err = c.processSMP3(mpis); err != nil { - return - } - c.smp.state = smpState1 - c.smp.secret = nil - complete = true - case tlvTypeSMP4: - if c.smp.state != smpState4 { - c.resetSMP() - out = c.generateSMPAbort() - return - } - if err = c.processSMP4(mpis); err != nil { - out = c.generateSMPAbort() - return - } - c.smp.state = smpState1 - c.smp.secret = nil - complete = true - default: - panic("unknown SMP message") - } - - return -} - -func (c *Conversation) calcSMPSecret(mutualSecret []byte, weStarted bool) { - h := sha256.New() - h.Write([]byte{smpVersion}) - if weStarted { - h.Write(c.PrivateKey.PublicKey.Fingerprint()) - h.Write(c.TheirPublicKey.Fingerprint()) - } else { - h.Write(c.TheirPublicKey.Fingerprint()) - h.Write(c.PrivateKey.PublicKey.Fingerprint()) - } - h.Write(c.SSID[:]) - h.Write(mutualSecret) - c.smp.secret = new(big.Int).SetBytes(h.Sum(nil)) -} - -func (c *Conversation) generateSMP1(question string) tlv { - var randBuf [16]byte - c.smp.a2 = c.randMPI(randBuf[:]) - c.smp.a3 = c.randMPI(randBuf[:]) - g2a := new(big.Int).Exp(g, c.smp.a2, p) - g3a := new(big.Int).Exp(g, c.smp.a3, p) - h := sha256.New() - - r2 := c.randMPI(randBuf[:]) - r := new(big.Int).Exp(g, r2, p) - c2 := new(big.Int).SetBytes(hashMPIs(h, 1, r)) - d2 := new(big.Int).Mul(c.smp.a2, c2) - d2.Sub(r2, d2) - d2.Mod(d2, q) - if d2.Sign() < 0 { - d2.Add(d2, q) - } - - r3 := c.randMPI(randBuf[:]) - r.Exp(g, r3, p) - c3 := new(big.Int).SetBytes(hashMPIs(h, 2, r)) - d3 := new(big.Int).Mul(c.smp.a3, c3) - d3.Sub(r3, d3) - d3.Mod(d3, q) - if d3.Sign() < 0 { - d3.Add(d3, q) - } - - var ret tlv - if len(question) > 0 { - ret.typ = tlvTypeSMP1WithQuestion - ret.data = append(ret.data, question...) - ret.data = append(ret.data, 0) - } else { - ret.typ = tlvTypeSMP1 - } - ret.data = appendU32(ret.data, 6) - ret.data = appendMPIs(ret.data, g2a, c2, d2, g3a, c3, d3) - return ret -} - -func (c *Conversation) processSMP1(mpis []*big.Int) error { - if len(mpis) != 6 { - return errors.New("otr: incorrect number of arguments in SMP1 message") - } - g2a := mpis[0] - c2 := mpis[1] - d2 := mpis[2] - g3a := mpis[3] - c3 := mpis[4] - d3 := mpis[5] - h := sha256.New() - - r := new(big.Int).Exp(g, d2, p) - s := new(big.Int).Exp(g2a, c2, p) - r.Mul(r, s) - r.Mod(r, p) - t := new(big.Int).SetBytes(hashMPIs(h, 1, r)) - if c2.Cmp(t) != 0 { - return errors.New("otr: ZKP c2 incorrect in SMP1 message") - } - r.Exp(g, d3, p) - s.Exp(g3a, c3, p) - r.Mul(r, s) - r.Mod(r, p) - t.SetBytes(hashMPIs(h, 2, r)) - if c3.Cmp(t) != 0 { - return errors.New("otr: ZKP c3 incorrect in SMP1 message") - } - - c.smp.g2a = g2a - c.smp.g3a = g3a - return nil -} - -func (c *Conversation) generateSMP2() tlv { - var randBuf [16]byte - b2 := c.randMPI(randBuf[:]) - c.smp.b3 = c.randMPI(randBuf[:]) - r2 := c.randMPI(randBuf[:]) - r3 := c.randMPI(randBuf[:]) - r4 := c.randMPI(randBuf[:]) - r5 := c.randMPI(randBuf[:]) - r6 := c.randMPI(randBuf[:]) - - g2b := new(big.Int).Exp(g, b2, p) - g3b := new(big.Int).Exp(g, c.smp.b3, p) - - r := new(big.Int).Exp(g, r2, p) - h := sha256.New() - c2 := new(big.Int).SetBytes(hashMPIs(h, 3, r)) - d2 := new(big.Int).Mul(b2, c2) - d2.Sub(r2, d2) - d2.Mod(d2, q) - if d2.Sign() < 0 { - d2.Add(d2, q) - } - - r.Exp(g, r3, p) - c3 := new(big.Int).SetBytes(hashMPIs(h, 4, r)) - d3 := new(big.Int).Mul(c.smp.b3, c3) - d3.Sub(r3, d3) - d3.Mod(d3, q) - if d3.Sign() < 0 { - d3.Add(d3, q) - } - - c.smp.g2 = new(big.Int).Exp(c.smp.g2a, b2, p) - c.smp.g3 = new(big.Int).Exp(c.smp.g3a, c.smp.b3, p) - c.smp.pb = new(big.Int).Exp(c.smp.g3, r4, p) - c.smp.qb = new(big.Int).Exp(g, r4, p) - r.Exp(c.smp.g2, c.smp.secret, p) - c.smp.qb.Mul(c.smp.qb, r) - c.smp.qb.Mod(c.smp.qb, p) - - s := new(big.Int) - s.Exp(c.smp.g2, r6, p) - r.Exp(g, r5, p) - s.Mul(r, s) - s.Mod(s, p) - r.Exp(c.smp.g3, r5, p) - cp := new(big.Int).SetBytes(hashMPIs(h, 5, r, s)) - - // D5 = r5 - r4 cP mod q and D6 = r6 - y cP mod q - - s.Mul(r4, cp) - r.Sub(r5, s) - d5 := new(big.Int).Mod(r, q) - if d5.Sign() < 0 { - d5.Add(d5, q) - } - - s.Mul(c.smp.secret, cp) - r.Sub(r6, s) - d6 := new(big.Int).Mod(r, q) - if d6.Sign() < 0 { - d6.Add(d6, q) - } - - var ret tlv - ret.typ = tlvTypeSMP2 - ret.data = appendU32(ret.data, 11) - ret.data = appendMPIs(ret.data, g2b, c2, d2, g3b, c3, d3, c.smp.pb, c.smp.qb, cp, d5, d6) - return ret -} - -func (c *Conversation) processSMP2(mpis []*big.Int) (out tlv, err error) { - if len(mpis) != 11 { - err = errors.New("otr: incorrect number of arguments in SMP2 message") - return - } - g2b := mpis[0] - c2 := mpis[1] - d2 := mpis[2] - g3b := mpis[3] - c3 := mpis[4] - d3 := mpis[5] - pb := mpis[6] - qb := mpis[7] - cp := mpis[8] - d5 := mpis[9] - d6 := mpis[10] - h := sha256.New() - - r := new(big.Int).Exp(g, d2, p) - s := new(big.Int).Exp(g2b, c2, p) - r.Mul(r, s) - r.Mod(r, p) - s.SetBytes(hashMPIs(h, 3, r)) - if c2.Cmp(s) != 0 { - err = errors.New("otr: ZKP c2 failed in SMP2 message") - return - } - - r.Exp(g, d3, p) - s.Exp(g3b, c3, p) - r.Mul(r, s) - r.Mod(r, p) - s.SetBytes(hashMPIs(h, 4, r)) - if c3.Cmp(s) != 0 { - err = errors.New("otr: ZKP c3 failed in SMP2 message") - return - } - - c.smp.g2 = new(big.Int).Exp(g2b, c.smp.a2, p) - c.smp.g3 = new(big.Int).Exp(g3b, c.smp.a3, p) - - r.Exp(g, d5, p) - s.Exp(c.smp.g2, d6, p) - r.Mul(r, s) - s.Exp(qb, cp, p) - r.Mul(r, s) - r.Mod(r, p) - - s.Exp(c.smp.g3, d5, p) - t := new(big.Int).Exp(pb, cp, p) - s.Mul(s, t) - s.Mod(s, p) - t.SetBytes(hashMPIs(h, 5, s, r)) - if cp.Cmp(t) != 0 { - err = errors.New("otr: ZKP cP failed in SMP2 message") - return - } - - var randBuf [16]byte - r4 := c.randMPI(randBuf[:]) - r5 := c.randMPI(randBuf[:]) - r6 := c.randMPI(randBuf[:]) - r7 := c.randMPI(randBuf[:]) - - pa := new(big.Int).Exp(c.smp.g3, r4, p) - r.Exp(c.smp.g2, c.smp.secret, p) - qa := new(big.Int).Exp(g, r4, p) - qa.Mul(qa, r) - qa.Mod(qa, p) - - r.Exp(g, r5, p) - s.Exp(c.smp.g2, r6, p) - r.Mul(r, s) - r.Mod(r, p) - - s.Exp(c.smp.g3, r5, p) - cp.SetBytes(hashMPIs(h, 6, s, r)) - - r.Mul(r4, cp) - d5 = new(big.Int).Sub(r5, r) - d5.Mod(d5, q) - if d5.Sign() < 0 { - d5.Add(d5, q) - } - - r.Mul(c.smp.secret, cp) - d6 = new(big.Int).Sub(r6, r) - d6.Mod(d6, q) - if d6.Sign() < 0 { - d6.Add(d6, q) - } - - r.ModInverse(qb, p) - qaqb := new(big.Int).Mul(qa, r) - qaqb.Mod(qaqb, p) - - ra := new(big.Int).Exp(qaqb, c.smp.a3, p) - r.Exp(qaqb, r7, p) - s.Exp(g, r7, p) - cr := new(big.Int).SetBytes(hashMPIs(h, 7, s, r)) - - r.Mul(c.smp.a3, cr) - d7 := new(big.Int).Sub(r7, r) - d7.Mod(d7, q) - if d7.Sign() < 0 { - d7.Add(d7, q) - } - - c.smp.g3b = g3b - c.smp.qaqb = qaqb - - r.ModInverse(pb, p) - c.smp.papb = new(big.Int).Mul(pa, r) - c.smp.papb.Mod(c.smp.papb, p) - c.smp.ra = ra - - out.typ = tlvTypeSMP3 - out.data = appendU32(out.data, 8) - out.data = appendMPIs(out.data, pa, qa, cp, d5, d6, ra, cr, d7) - return -} - -func (c *Conversation) processSMP3(mpis []*big.Int) (out tlv, err error) { - if len(mpis) != 8 { - err = errors.New("otr: incorrect number of arguments in SMP3 message") - return - } - pa := mpis[0] - qa := mpis[1] - cp := mpis[2] - d5 := mpis[3] - d6 := mpis[4] - ra := mpis[5] - cr := mpis[6] - d7 := mpis[7] - h := sha256.New() - - r := new(big.Int).Exp(g, d5, p) - s := new(big.Int).Exp(c.smp.g2, d6, p) - r.Mul(r, s) - s.Exp(qa, cp, p) - r.Mul(r, s) - r.Mod(r, p) - - s.Exp(c.smp.g3, d5, p) - t := new(big.Int).Exp(pa, cp, p) - s.Mul(s, t) - s.Mod(s, p) - t.SetBytes(hashMPIs(h, 6, s, r)) - if t.Cmp(cp) != 0 { - err = errors.New("otr: ZKP cP failed in SMP3 message") - return - } - - r.ModInverse(c.smp.qb, p) - qaqb := new(big.Int).Mul(qa, r) - qaqb.Mod(qaqb, p) - - r.Exp(qaqb, d7, p) - s.Exp(ra, cr, p) - r.Mul(r, s) - r.Mod(r, p) - - s.Exp(g, d7, p) - t.Exp(c.smp.g3a, cr, p) - s.Mul(s, t) - s.Mod(s, p) - t.SetBytes(hashMPIs(h, 7, s, r)) - if t.Cmp(cr) != 0 { - err = errors.New("otr: ZKP cR failed in SMP3 message") - return - } - - var randBuf [16]byte - r7 := c.randMPI(randBuf[:]) - rb := new(big.Int).Exp(qaqb, c.smp.b3, p) - - r.Exp(qaqb, r7, p) - s.Exp(g, r7, p) - cr = new(big.Int).SetBytes(hashMPIs(h, 8, s, r)) - - r.Mul(c.smp.b3, cr) - d7 = new(big.Int).Sub(r7, r) - d7.Mod(d7, q) - if d7.Sign() < 0 { - d7.Add(d7, q) - } - - out.typ = tlvTypeSMP4 - out.data = appendU32(out.data, 3) - out.data = appendMPIs(out.data, rb, cr, d7) - - r.ModInverse(c.smp.pb, p) - r.Mul(pa, r) - r.Mod(r, p) - s.Exp(ra, c.smp.b3, p) - if r.Cmp(s) != 0 { - err = smpFailureError - } - - return -} - -func (c *Conversation) processSMP4(mpis []*big.Int) error { - if len(mpis) != 3 { - return errors.New("otr: incorrect number of arguments in SMP4 message") - } - rb := mpis[0] - cr := mpis[1] - d7 := mpis[2] - h := sha256.New() - - r := new(big.Int).Exp(c.smp.qaqb, d7, p) - s := new(big.Int).Exp(rb, cr, p) - r.Mul(r, s) - r.Mod(r, p) - - s.Exp(g, d7, p) - t := new(big.Int).Exp(c.smp.g3b, cr, p) - s.Mul(s, t) - s.Mod(s, p) - t.SetBytes(hashMPIs(h, 8, s, r)) - if t.Cmp(cr) != 0 { - return errors.New("otr: ZKP cR failed in SMP4 message") - } - - r.Exp(rb, c.smp.a3, p) - if r.Cmp(c.smp.papb) != 0 { - return smpFailureError - } - - return nil -} - -func (c *Conversation) generateSMPAbort() tlv { - return tlv{typ: tlvTypeSMPAbort} -} - -func hashMPIs(h hash.Hash, magic byte, mpis ...*big.Int) []byte { - if h != nil { - h.Reset() - } else { - h = sha256.New() - } - - h.Write([]byte{magic}) - for _, mpi := range mpis { - h.Write(appendMPI(nil, mpi)) - } - return h.Sum(nil) -} diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go deleted file mode 100644 index 593f6530..00000000 --- a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC -2898 / PKCS #5 v2.0. - -A key derivation function is useful when encrypting data based on a password -or any other not-fully-random data. It uses a pseudorandom function to derive -a secure encryption key based on the password. - -While v2.0 of the standard defines only one pseudorandom function to use, -HMAC-SHA1, the drafted v2.1 specification allows use of all five FIPS Approved -Hash Functions SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 for HMAC. To -choose, you can pass the `New` functions from the different SHA packages to -pbkdf2.Key. -*/ -package pbkdf2 // import "golang.org/x/crypto/pbkdf2" - -import ( - "crypto/hmac" - "hash" -) - -// Key derives a key from the password, salt and iteration count, returning a -// []byte of length keylen that can be used as cryptographic key. The key is -// derived based on the method described as PBKDF2 with the HMAC variant using -// the supplied hash function. -// -// For example, to use a HMAC-SHA-1 based PBKDF2 key derivation function, you -// can get a derived key for e.g. AES-256 (which needs a 32-byte key) by -// doing: -// -// dk := pbkdf2.Key([]byte("some password"), salt, 4096, 32, sha1.New) -// -// Remember to get a good random salt. At least 8 bytes is recommended by the -// RFC. -// -// Using a higher iteration count will increase the cost of an exhaustive -// search but will also make derivation proportionally slower. -func Key(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte { - prf := hmac.New(h, password) - hashLen := prf.Size() - numBlocks := (keyLen + hashLen - 1) / hashLen - - var buf [4]byte - dk := make([]byte, 0, numBlocks*hashLen) - U := make([]byte, hashLen) - for block := 1; block <= numBlocks; block++ { - // N.B.: || means concatenation, ^ means XOR - // for each block T_i = U_1 ^ U_2 ^ ... ^ U_iter - // U_1 = PRF(password, salt || uint(i)) - prf.Reset() - prf.Write(salt) - buf[0] = byte(block >> 24) - buf[1] = byte(block >> 16) - buf[2] = byte(block >> 8) - buf[3] = byte(block) - prf.Write(buf[:4]) - dk = prf.Sum(dk) - T := dk[len(dk)-hashLen:] - copy(U, T) - - // U_n = PRF(password, U_(n-1)) - for n := 2; n <= iter; n++ { - prf.Reset() - prf.Write(U) - U = U[:0] - U = prf.Sum(U) - for x := range U { - T[x] ^= U[x] - } - } - } - return dk[:keyLen] -} diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2_test.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2_test.go deleted file mode 100644 index f83cb692..00000000 --- a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2_test.go +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package pbkdf2 - -import ( - "bytes" - "crypto/sha1" - "crypto/sha256" - "hash" - "testing" -) - -type testVector struct { - password string - salt string - iter int - output []byte -} - -// Test vectors from RFC 6070, http://tools.ietf.org/html/rfc6070 -var sha1TestVectors = []testVector{ - { - "password", - "salt", - 1, - []byte{ - 0x0c, 0x60, 0xc8, 0x0f, 0x96, 0x1f, 0x0e, 0x71, - 0xf3, 0xa9, 0xb5, 0x24, 0xaf, 0x60, 0x12, 0x06, - 0x2f, 0xe0, 0x37, 0xa6, - }, - }, - { - "password", - "salt", - 2, - []byte{ - 0xea, 0x6c, 0x01, 0x4d, 0xc7, 0x2d, 0x6f, 0x8c, - 0xcd, 0x1e, 0xd9, 0x2a, 0xce, 0x1d, 0x41, 0xf0, - 0xd8, 0xde, 0x89, 0x57, - }, - }, - { - "password", - "salt", - 4096, - []byte{ - 0x4b, 0x00, 0x79, 0x01, 0xb7, 0x65, 0x48, 0x9a, - 0xbe, 0xad, 0x49, 0xd9, 0x26, 0xf7, 0x21, 0xd0, - 0x65, 0xa4, 0x29, 0xc1, - }, - }, - // // This one takes too long - // { - // "password", - // "salt", - // 16777216, - // []byte{ - // 0xee, 0xfe, 0x3d, 0x61, 0xcd, 0x4d, 0xa4, 0xe4, - // 0xe9, 0x94, 0x5b, 0x3d, 0x6b, 0xa2, 0x15, 0x8c, - // 0x26, 0x34, 0xe9, 0x84, - // }, - // }, - { - "passwordPASSWORDpassword", - "saltSALTsaltSALTsaltSALTsaltSALTsalt", - 4096, - []byte{ - 0x3d, 0x2e, 0xec, 0x4f, 0xe4, 0x1c, 0x84, 0x9b, - 0x80, 0xc8, 0xd8, 0x36, 0x62, 0xc0, 0xe4, 0x4a, - 0x8b, 0x29, 0x1a, 0x96, 0x4c, 0xf2, 0xf0, 0x70, - 0x38, - }, - }, - { - "pass\000word", - "sa\000lt", - 4096, - []byte{ - 0x56, 0xfa, 0x6a, 0xa7, 0x55, 0x48, 0x09, 0x9d, - 0xcc, 0x37, 0xd7, 0xf0, 0x34, 0x25, 0xe0, 0xc3, - }, - }, -} - -// Test vectors from -// http://stackoverflow.com/questions/5130513/pbkdf2-hmac-sha2-test-vectors -var sha256TestVectors = []testVector{ - { - "password", - "salt", - 1, - []byte{ - 0x12, 0x0f, 0xb6, 0xcf, 0xfc, 0xf8, 0xb3, 0x2c, - 0x43, 0xe7, 0x22, 0x52, 0x56, 0xc4, 0xf8, 0x37, - 0xa8, 0x65, 0x48, 0xc9, - }, - }, - { - "password", - "salt", - 2, - []byte{ - 0xae, 0x4d, 0x0c, 0x95, 0xaf, 0x6b, 0x46, 0xd3, - 0x2d, 0x0a, 0xdf, 0xf9, 0x28, 0xf0, 0x6d, 0xd0, - 0x2a, 0x30, 0x3f, 0x8e, - }, - }, - { - "password", - "salt", - 4096, - []byte{ - 0xc5, 0xe4, 0x78, 0xd5, 0x92, 0x88, 0xc8, 0x41, - 0xaa, 0x53, 0x0d, 0xb6, 0x84, 0x5c, 0x4c, 0x8d, - 0x96, 0x28, 0x93, 0xa0, - }, - }, - { - "passwordPASSWORDpassword", - "saltSALTsaltSALTsaltSALTsaltSALTsalt", - 4096, - []byte{ - 0x34, 0x8c, 0x89, 0xdb, 0xcb, 0xd3, 0x2b, 0x2f, - 0x32, 0xd8, 0x14, 0xb8, 0x11, 0x6e, 0x84, 0xcf, - 0x2b, 0x17, 0x34, 0x7e, 0xbc, 0x18, 0x00, 0x18, - 0x1c, - }, - }, - { - "pass\000word", - "sa\000lt", - 4096, - []byte{ - 0x89, 0xb6, 0x9d, 0x05, 0x16, 0xf8, 0x29, 0x89, - 0x3c, 0x69, 0x62, 0x26, 0x65, 0x0a, 0x86, 0x87, - }, - }, -} - -func testHash(t *testing.T, h func() hash.Hash, hashName string, vectors []testVector) { - for i, v := range vectors { - o := Key([]byte(v.password), []byte(v.salt), v.iter, len(v.output), h) - if !bytes.Equal(o, v.output) { - t.Errorf("%s %d: expected %x, got %x", hashName, i, v.output, o) - } - } -} - -func TestWithHMACSHA1(t *testing.T) { - testHash(t, sha1.New, "SHA1", sha1TestVectors) -} - -func TestWithHMACSHA256(t *testing.T) { - testHash(t, sha256.New, "SHA256", sha256TestVectors) -} - -var sink uint8 - -func benchmark(b *testing.B, h func() hash.Hash) { - password := make([]byte, h().Size()) - salt := make([]byte, 8) - for i := 0; i < b.N; i++ { - password = Key(password, salt, 4096, len(password), h) - } - sink += password[0] -} - -func BenchmarkHMACSHA1(b *testing.B) { - benchmark(b, sha1.New) -} - -func BenchmarkHMACSHA256(b *testing.B) { - benchmark(b, sha256.New) -} diff --git a/vendor/golang.org/x/crypto/pkcs12/bmp-string.go b/vendor/golang.org/x/crypto/pkcs12/bmp-string.go deleted file mode 100644 index 233b8b62..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/bmp-string.go +++ /dev/null @@ -1,50 +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 pkcs12 - -import ( - "errors" - "unicode/utf16" -) - -// bmpString returns s encoded in UCS-2 with a zero terminator. -func bmpString(s string) ([]byte, error) { - // References: - // https://tools.ietf.org/html/rfc7292#appendix-B.1 - // https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane - // - non-BMP characters are encoded in UTF 16 by using a surrogate pair of 16-bit codes - // EncodeRune returns 0xfffd if the rune does not need special encoding - // - the above RFC provides the info that BMPStrings are NULL terminated. - - ret := make([]byte, 0, 2*len(s)+2) - - for _, r := range s { - if t, _ := utf16.EncodeRune(r); t != 0xfffd { - return nil, errors.New("pkcs12: string contains characters that cannot be encoded in UCS-2") - } - ret = append(ret, byte(r/256), byte(r%256)) - } - - return append(ret, 0, 0), nil -} - -func decodeBMPString(bmpString []byte) (string, error) { - if len(bmpString)%2 != 0 { - return "", errors.New("pkcs12: odd-length BMP string") - } - - // strip terminator if present - if l := len(bmpString); l >= 2 && bmpString[l-1] == 0 && bmpString[l-2] == 0 { - bmpString = bmpString[:l-2] - } - - s := make([]uint16, 0, len(bmpString)/2) - for len(bmpString) > 0 { - s = append(s, uint16(bmpString[0])<<8+uint16(bmpString[1])) - bmpString = bmpString[2:] - } - - return string(utf16.Decode(s)), nil -} diff --git a/vendor/golang.org/x/crypto/pkcs12/bmp-string_test.go b/vendor/golang.org/x/crypto/pkcs12/bmp-string_test.go deleted file mode 100644 index 7fca55f4..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/bmp-string_test.go +++ /dev/null @@ -1,63 +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 pkcs12 - -import ( - "bytes" - "encoding/hex" - "testing" -) - -var bmpStringTests = []struct { - in string - expectedHex string - shouldFail bool -}{ - {"", "0000", false}, - // Example from https://tools.ietf.org/html/rfc7292#appendix-B. - {"Beavis", "0042006500610076006900730000", false}, - // Some characters from the "Letterlike Symbols Unicode block". - {"\u2115 - Double-struck N", "21150020002d00200044006f00750062006c0065002d00730074007200750063006b0020004e0000", false}, - // any character outside the BMP should trigger an error. - {"\U0001f000 East wind (Mahjong)", "", true}, -} - -func TestBMPString(t *testing.T) { - for i, test := range bmpStringTests { - expected, err := hex.DecodeString(test.expectedHex) - if err != nil { - t.Fatalf("#%d: failed to decode expectation", i) - } - - out, err := bmpString(test.in) - if err == nil && test.shouldFail { - t.Errorf("#%d: expected to fail, but produced %x", i, out) - continue - } - - if err != nil && !test.shouldFail { - t.Errorf("#%d: failed unexpectedly: %s", i, err) - continue - } - - if !test.shouldFail { - if !bytes.Equal(out, expected) { - t.Errorf("#%d: expected %s, got %x", i, test.expectedHex, out) - continue - } - - roundTrip, err := decodeBMPString(out) - if err != nil { - t.Errorf("#%d: decoding output gave an error: %s", i, err) - continue - } - - if roundTrip != test.in { - t.Errorf("#%d: decoding output resulted in %q, but it should have been %q", i, roundTrip, test.in) - continue - } - } - } -} diff --git a/vendor/golang.org/x/crypto/pkcs12/crypto.go b/vendor/golang.org/x/crypto/pkcs12/crypto.go deleted file mode 100644 index 484ca51b..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/crypto.go +++ /dev/null @@ -1,131 +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 pkcs12 - -import ( - "bytes" - "crypto/cipher" - "crypto/des" - "crypto/x509/pkix" - "encoding/asn1" - "errors" - - "golang.org/x/crypto/pkcs12/internal/rc2" -) - -var ( - oidPBEWithSHAAnd3KeyTripleDESCBC = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 12, 1, 3}) - oidPBEWithSHAAnd40BitRC2CBC = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 12, 1, 6}) -) - -// pbeCipher is an abstraction of a PKCS#12 cipher. -type pbeCipher interface { - // create returns a cipher.Block given a key. - create(key []byte) (cipher.Block, error) - // deriveKey returns a key derived from the given password and salt. - deriveKey(salt, password []byte, iterations int) []byte - // deriveKey returns an IV derived from the given password and salt. - deriveIV(salt, password []byte, iterations int) []byte -} - -type shaWithTripleDESCBC struct{} - -func (shaWithTripleDESCBC) create(key []byte) (cipher.Block, error) { - return des.NewTripleDESCipher(key) -} - -func (shaWithTripleDESCBC) deriveKey(salt, password []byte, iterations int) []byte { - return pbkdf(sha1Sum, 20, 64, salt, password, iterations, 1, 24) -} - -func (shaWithTripleDESCBC) deriveIV(salt, password []byte, iterations int) []byte { - return pbkdf(sha1Sum, 20, 64, salt, password, iterations, 2, 8) -} - -type shaWith40BitRC2CBC struct{} - -func (shaWith40BitRC2CBC) create(key []byte) (cipher.Block, error) { - return rc2.New(key, len(key)*8) -} - -func (shaWith40BitRC2CBC) deriveKey(salt, password []byte, iterations int) []byte { - return pbkdf(sha1Sum, 20, 64, salt, password, iterations, 1, 5) -} - -func (shaWith40BitRC2CBC) deriveIV(salt, password []byte, iterations int) []byte { - return pbkdf(sha1Sum, 20, 64, salt, password, iterations, 2, 8) -} - -type pbeParams struct { - Salt []byte - Iterations int -} - -func pbDecrypterFor(algorithm pkix.AlgorithmIdentifier, password []byte) (cipher.BlockMode, int, error) { - var cipherType pbeCipher - - switch { - case algorithm.Algorithm.Equal(oidPBEWithSHAAnd3KeyTripleDESCBC): - cipherType = shaWithTripleDESCBC{} - case algorithm.Algorithm.Equal(oidPBEWithSHAAnd40BitRC2CBC): - cipherType = shaWith40BitRC2CBC{} - default: - return nil, 0, NotImplementedError("algorithm " + algorithm.Algorithm.String() + " is not supported") - } - - var params pbeParams - if err := unmarshal(algorithm.Parameters.FullBytes, ¶ms); err != nil { - return nil, 0, err - } - - key := cipherType.deriveKey(params.Salt, password, params.Iterations) - iv := cipherType.deriveIV(params.Salt, password, params.Iterations) - - block, err := cipherType.create(key) - if err != nil { - return nil, 0, err - } - - return cipher.NewCBCDecrypter(block, iv), block.BlockSize(), nil -} - -func pbDecrypt(info decryptable, password []byte) (decrypted []byte, err error) { - cbc, blockSize, err := pbDecrypterFor(info.Algorithm(), password) - if err != nil { - return nil, err - } - - encrypted := info.Data() - if len(encrypted) == 0 { - return nil, errors.New("pkcs12: empty encrypted data") - } - if len(encrypted)%blockSize != 0 { - return nil, errors.New("pkcs12: input is not a multiple of the block size") - } - decrypted = make([]byte, len(encrypted)) - cbc.CryptBlocks(decrypted, encrypted) - - psLen := int(decrypted[len(decrypted)-1]) - if psLen == 0 || psLen > blockSize { - return nil, ErrDecryption - } - - if len(decrypted) < psLen { - return nil, ErrDecryption - } - ps := decrypted[len(decrypted)-psLen:] - decrypted = decrypted[:len(decrypted)-psLen] - if bytes.Compare(ps, bytes.Repeat([]byte{byte(psLen)}, psLen)) != 0 { - return nil, ErrDecryption - } - - return -} - -// decryptable abstracts an object that contains ciphertext. -type decryptable interface { - Algorithm() pkix.AlgorithmIdentifier - Data() []byte -} diff --git a/vendor/golang.org/x/crypto/pkcs12/crypto_test.go b/vendor/golang.org/x/crypto/pkcs12/crypto_test.go deleted file mode 100644 index eb4dae8f..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/crypto_test.go +++ /dev/null @@ -1,125 +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 pkcs12 - -import ( - "bytes" - "crypto/x509/pkix" - "encoding/asn1" - "testing" -) - -var sha1WithTripleDES = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 12, 1, 3}) - -func TestPbDecrypterFor(t *testing.T) { - params, _ := asn1.Marshal(pbeParams{ - Salt: []byte{1, 2, 3, 4, 5, 6, 7, 8}, - Iterations: 2048, - }) - alg := pkix.AlgorithmIdentifier{ - Algorithm: asn1.ObjectIdentifier([]int{1, 2, 3}), - Parameters: asn1.RawValue{ - FullBytes: params, - }, - } - - pass, _ := bmpString("Sesame open") - - _, _, err := pbDecrypterFor(alg, pass) - if _, ok := err.(NotImplementedError); !ok { - t.Errorf("expected not implemented error, got: %T %s", err, err) - } - - alg.Algorithm = sha1WithTripleDES - cbc, blockSize, err := pbDecrypterFor(alg, pass) - if err != nil { - t.Errorf("unexpected error from pbDecrypterFor %v", err) - } - if blockSize != 8 { - t.Errorf("unexpected block size %d, wanted 8", blockSize) - } - - plaintext := []byte{1, 2, 3, 4, 5, 6, 7, 8} - expectedCiphertext := []byte{185, 73, 135, 249, 137, 1, 122, 247} - ciphertext := make([]byte, len(plaintext)) - cbc.CryptBlocks(ciphertext, plaintext) - - if bytes.Compare(ciphertext, expectedCiphertext) != 0 { - t.Errorf("bad ciphertext, got %x but wanted %x", ciphertext, expectedCiphertext) - } -} - -var pbDecryptTests = []struct { - in []byte - expected []byte - expectedError error -}{ - { - []byte("\x33\x73\xf3\x9f\xda\x49\xae\xfc\xa0\x9a\xdf\x5a\x58\xa0\xea\x46"), // 7 padding bytes - []byte("A secret!"), - nil, - }, - { - []byte("\x33\x73\xf3\x9f\xda\x49\xae\xfc\x96\x24\x2f\x71\x7e\x32\x3f\xe7"), // 8 padding bytes - []byte("A secret"), - nil, - }, - { - []byte("\x35\x0c\xc0\x8d\xab\xa9\x5d\x30\x7f\x9a\xec\x6a\xd8\x9b\x9c\xd9"), // 9 padding bytes, incorrect - nil, - ErrDecryption, - }, - { - []byte("\xb2\xf9\x6e\x06\x60\xae\x20\xcf\x08\xa0\x7b\xd9\x6b\x20\xef\x41"), // incorrect padding bytes: [ ... 0x04 0x02 ] - nil, - ErrDecryption, - }, -} - -func TestPbDecrypt(t *testing.T) { - for i, test := range pbDecryptTests { - decryptable := testDecryptable{ - data: test.in, - algorithm: pkix.AlgorithmIdentifier{ - Algorithm: sha1WithTripleDES, - Parameters: pbeParams{ - Salt: []byte("\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8"), - Iterations: 4096, - }.RawASN1(), - }, - } - password, _ := bmpString("sesame") - - plaintext, err := pbDecrypt(decryptable, password) - if err != test.expectedError { - t.Errorf("#%d: got error %q, but wanted %q", i, err, test.expectedError) - continue - } - - if !bytes.Equal(plaintext, test.expected) { - t.Errorf("#%d: got %x, but wanted %x", i, plaintext, test.expected) - } - } -} - -type testDecryptable struct { - data []byte - algorithm pkix.AlgorithmIdentifier -} - -func (d testDecryptable) Algorithm() pkix.AlgorithmIdentifier { return d.algorithm } -func (d testDecryptable) Data() []byte { return d.data } - -func (params pbeParams) RawASN1() (raw asn1.RawValue) { - asn1Bytes, err := asn1.Marshal(params) - if err != nil { - panic(err) - } - _, err = asn1.Unmarshal(asn1Bytes, &raw) - if err != nil { - panic(err) - } - return -} diff --git a/vendor/golang.org/x/crypto/pkcs12/errors.go b/vendor/golang.org/x/crypto/pkcs12/errors.go deleted file mode 100644 index 7377ce6f..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/errors.go +++ /dev/null @@ -1,23 +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 pkcs12 - -import "errors" - -var ( - // ErrDecryption represents a failure to decrypt the input. - ErrDecryption = errors.New("pkcs12: decryption error, incorrect padding") - - // ErrIncorrectPassword is returned when an incorrect password is detected. - // Usually, P12/PFX data is signed to be able to verify the password. - ErrIncorrectPassword = errors.New("pkcs12: decryption password incorrect") -) - -// NotImplementedError indicates that the input is not currently supported. -type NotImplementedError string - -func (e NotImplementedError) Error() string { - return "pkcs12: " + string(e) -} diff --git a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/bench_test.go b/vendor/golang.org/x/crypto/pkcs12/internal/rc2/bench_test.go deleted file mode 100644 index 3347f338..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/bench_test.go +++ /dev/null @@ -1,27 +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 rc2 - -import ( - "testing" -) - -func BenchmarkEncrypt(b *testing.B) { - r, _ := New([]byte{0, 0, 0, 0, 0, 0, 0, 0}, 64) - b.ResetTimer() - var src [8]byte - for i := 0; i < b.N; i++ { - r.Encrypt(src[:], src[:]) - } -} - -func BenchmarkDecrypt(b *testing.B) { - r, _ := New([]byte{0, 0, 0, 0, 0, 0, 0, 0}, 64) - b.ResetTimer() - var src [8]byte - for i := 0; i < b.N; i++ { - r.Decrypt(src[:], src[:]) - } -} diff --git a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go b/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go deleted file mode 100644 index 7499e3fb..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2.go +++ /dev/null @@ -1,271 +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 rc2 implements the RC2 cipher -/* -https://www.ietf.org/rfc/rfc2268.txt -http://people.csail.mit.edu/rivest/pubs/KRRR98.pdf - -This code is licensed under the MIT license. -*/ -package rc2 - -import ( - "crypto/cipher" - "encoding/binary" -) - -// The rc2 block size in bytes -const BlockSize = 8 - -type rc2Cipher struct { - k [64]uint16 -} - -// New returns a new rc2 cipher with the given key and effective key length t1 -func New(key []byte, t1 int) (cipher.Block, error) { - // TODO(dgryski): error checking for key length - return &rc2Cipher{ - k: expandKey(key, t1), - }, nil -} - -func (*rc2Cipher) BlockSize() int { return BlockSize } - -var piTable = [256]byte{ - 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d, - 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2, - 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13, 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32, - 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82, - 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc, - 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26, - 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03, - 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7, 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7, - 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a, - 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec, - 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39, - 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31, - 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae, 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9, - 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9, - 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e, - 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad, -} - -func expandKey(key []byte, t1 int) [64]uint16 { - - l := make([]byte, 128) - copy(l, key) - - var t = len(key) - var t8 = (t1 + 7) / 8 - var tm = byte(255 % uint(1<<(8+uint(t1)-8*uint(t8)))) - - for i := len(key); i < 128; i++ { - l[i] = piTable[l[i-1]+l[uint8(i-t)]] - } - - l[128-t8] = piTable[l[128-t8]&tm] - - for i := 127 - t8; i >= 0; i-- { - l[i] = piTable[l[i+1]^l[i+t8]] - } - - var k [64]uint16 - - for i := range k { - k[i] = uint16(l[2*i]) + uint16(l[2*i+1])*256 - } - - return k -} - -func rotl16(x uint16, b uint) uint16 { - return (x >> (16 - b)) | (x << b) -} - -func (c *rc2Cipher) Encrypt(dst, src []byte) { - - r0 := binary.LittleEndian.Uint16(src[0:]) - r1 := binary.LittleEndian.Uint16(src[2:]) - r2 := binary.LittleEndian.Uint16(src[4:]) - r3 := binary.LittleEndian.Uint16(src[6:]) - - var j int - - for j <= 16 { - // mix r0 - r0 = r0 + c.k[j] + (r3 & r2) + ((^r3) & r1) - r0 = rotl16(r0, 1) - j++ - - // mix r1 - r1 = r1 + c.k[j] + (r0 & r3) + ((^r0) & r2) - r1 = rotl16(r1, 2) - j++ - - // mix r2 - r2 = r2 + c.k[j] + (r1 & r0) + ((^r1) & r3) - r2 = rotl16(r2, 3) - j++ - - // mix r3 - r3 = r3 + c.k[j] + (r2 & r1) + ((^r2) & r0) - r3 = rotl16(r3, 5) - j++ - - } - - r0 = r0 + c.k[r3&63] - r1 = r1 + c.k[r0&63] - r2 = r2 + c.k[r1&63] - r3 = r3 + c.k[r2&63] - - for j <= 40 { - // mix r0 - r0 = r0 + c.k[j] + (r3 & r2) + ((^r3) & r1) - r0 = rotl16(r0, 1) - j++ - - // mix r1 - r1 = r1 + c.k[j] + (r0 & r3) + ((^r0) & r2) - r1 = rotl16(r1, 2) - j++ - - // mix r2 - r2 = r2 + c.k[j] + (r1 & r0) + ((^r1) & r3) - r2 = rotl16(r2, 3) - j++ - - // mix r3 - r3 = r3 + c.k[j] + (r2 & r1) + ((^r2) & r0) - r3 = rotl16(r3, 5) - j++ - - } - - r0 = r0 + c.k[r3&63] - r1 = r1 + c.k[r0&63] - r2 = r2 + c.k[r1&63] - r3 = r3 + c.k[r2&63] - - for j <= 60 { - // mix r0 - r0 = r0 + c.k[j] + (r3 & r2) + ((^r3) & r1) - r0 = rotl16(r0, 1) - j++ - - // mix r1 - r1 = r1 + c.k[j] + (r0 & r3) + ((^r0) & r2) - r1 = rotl16(r1, 2) - j++ - - // mix r2 - r2 = r2 + c.k[j] + (r1 & r0) + ((^r1) & r3) - r2 = rotl16(r2, 3) - j++ - - // mix r3 - r3 = r3 + c.k[j] + (r2 & r1) + ((^r2) & r0) - r3 = rotl16(r3, 5) - j++ - } - - binary.LittleEndian.PutUint16(dst[0:], r0) - binary.LittleEndian.PutUint16(dst[2:], r1) - binary.LittleEndian.PutUint16(dst[4:], r2) - binary.LittleEndian.PutUint16(dst[6:], r3) -} - -func (c *rc2Cipher) Decrypt(dst, src []byte) { - - r0 := binary.LittleEndian.Uint16(src[0:]) - r1 := binary.LittleEndian.Uint16(src[2:]) - r2 := binary.LittleEndian.Uint16(src[4:]) - r3 := binary.LittleEndian.Uint16(src[6:]) - - j := 63 - - for j >= 44 { - // unmix r3 - r3 = rotl16(r3, 16-5) - r3 = r3 - c.k[j] - (r2 & r1) - ((^r2) & r0) - j-- - - // unmix r2 - r2 = rotl16(r2, 16-3) - r2 = r2 - c.k[j] - (r1 & r0) - ((^r1) & r3) - j-- - - // unmix r1 - r1 = rotl16(r1, 16-2) - r1 = r1 - c.k[j] - (r0 & r3) - ((^r0) & r2) - j-- - - // unmix r0 - r0 = rotl16(r0, 16-1) - r0 = r0 - c.k[j] - (r3 & r2) - ((^r3) & r1) - j-- - } - - r3 = r3 - c.k[r2&63] - r2 = r2 - c.k[r1&63] - r1 = r1 - c.k[r0&63] - r0 = r0 - c.k[r3&63] - - for j >= 20 { - // unmix r3 - r3 = rotl16(r3, 16-5) - r3 = r3 - c.k[j] - (r2 & r1) - ((^r2) & r0) - j-- - - // unmix r2 - r2 = rotl16(r2, 16-3) - r2 = r2 - c.k[j] - (r1 & r0) - ((^r1) & r3) - j-- - - // unmix r1 - r1 = rotl16(r1, 16-2) - r1 = r1 - c.k[j] - (r0 & r3) - ((^r0) & r2) - j-- - - // unmix r0 - r0 = rotl16(r0, 16-1) - r0 = r0 - c.k[j] - (r3 & r2) - ((^r3) & r1) - j-- - - } - - r3 = r3 - c.k[r2&63] - r2 = r2 - c.k[r1&63] - r1 = r1 - c.k[r0&63] - r0 = r0 - c.k[r3&63] - - for j >= 0 { - // unmix r3 - r3 = rotl16(r3, 16-5) - r3 = r3 - c.k[j] - (r2 & r1) - ((^r2) & r0) - j-- - - // unmix r2 - r2 = rotl16(r2, 16-3) - r2 = r2 - c.k[j] - (r1 & r0) - ((^r1) & r3) - j-- - - // unmix r1 - r1 = rotl16(r1, 16-2) - r1 = r1 - c.k[j] - (r0 & r3) - ((^r0) & r2) - j-- - - // unmix r0 - r0 = rotl16(r0, 16-1) - r0 = r0 - c.k[j] - (r3 & r2) - ((^r3) & r1) - j-- - - } - - binary.LittleEndian.PutUint16(dst[0:], r0) - binary.LittleEndian.PutUint16(dst[2:], r1) - binary.LittleEndian.PutUint16(dst[4:], r2) - binary.LittleEndian.PutUint16(dst[6:], r3) -} diff --git a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go b/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go deleted file mode 100644 index 51a7efe5..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go +++ /dev/null @@ -1,92 +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 rc2 - -import ( - "bytes" - "encoding/hex" - "testing" -) - -func TestEncryptDecrypt(t *testing.T) { - // TODO(dgryski): add the rest of the test vectors from the RFC - var tests = []struct { - key string - plain string - cipher string - t1 int - }{ - { - "0000000000000000", - "0000000000000000", - "ebb773f993278eff", - 63, - }, - { - "ffffffffffffffff", - "ffffffffffffffff", - "278b27e42e2f0d49", - 64, - }, - { - "3000000000000000", - "1000000000000001", - "30649edf9be7d2c2", - 64, - }, - { - "88", - "0000000000000000", - "61a8a244adacccf0", - 64, - }, - { - "88bca90e90875a", - "0000000000000000", - "6ccf4308974c267f", - 64, - }, - { - "88bca90e90875a7f0f79c384627bafb2", - "0000000000000000", - "1a807d272bbe5db1", - 64, - }, - { - "88bca90e90875a7f0f79c384627bafb2", - "0000000000000000", - "2269552ab0f85ca6", - 128, - }, - { - "88bca90e90875a7f0f79c384627bafb216f80a6f85920584c42fceb0be255daf1e", - "0000000000000000", - "5b78d3a43dfff1f1", - 129, - }, - } - - for _, tt := range tests { - k, _ := hex.DecodeString(tt.key) - p, _ := hex.DecodeString(tt.plain) - c, _ := hex.DecodeString(tt.cipher) - - b, _ := New(k, tt.t1) - - var dst [8]byte - - b.Encrypt(dst[:], p) - - if !bytes.Equal(dst[:], c) { - t.Errorf("encrypt failed: got % 2x wanted % 2x\n", dst, c) - } - - b.Decrypt(dst[:], c) - - if !bytes.Equal(dst[:], p) { - t.Errorf("decrypt failed: got % 2x wanted % 2x\n", dst, p) - } - } -} diff --git a/vendor/golang.org/x/crypto/pkcs12/mac.go b/vendor/golang.org/x/crypto/pkcs12/mac.go deleted file mode 100644 index 5f38aa7d..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/mac.go +++ /dev/null @@ -1,45 +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 pkcs12 - -import ( - "crypto/hmac" - "crypto/sha1" - "crypto/x509/pkix" - "encoding/asn1" -) - -type macData struct { - Mac digestInfo - MacSalt []byte - Iterations int `asn1:"optional,default:1"` -} - -// from PKCS#7: -type digestInfo struct { - Algorithm pkix.AlgorithmIdentifier - Digest []byte -} - -var ( - oidSHA1 = asn1.ObjectIdentifier([]int{1, 3, 14, 3, 2, 26}) -) - -func verifyMac(macData *macData, message, password []byte) error { - if !macData.Mac.Algorithm.Algorithm.Equal(oidSHA1) { - return NotImplementedError("unknown digest algorithm: " + macData.Mac.Algorithm.Algorithm.String()) - } - - key := pbkdf(sha1Sum, 20, 64, macData.MacSalt, password, macData.Iterations, 3, 20) - - mac := hmac.New(sha1.New, key) - mac.Write(message) - expectedMAC := mac.Sum(nil) - - if !hmac.Equal(macData.Mac.Digest, expectedMAC) { - return ErrIncorrectPassword - } - return nil -} diff --git a/vendor/golang.org/x/crypto/pkcs12/mac_test.go b/vendor/golang.org/x/crypto/pkcs12/mac_test.go deleted file mode 100644 index 1ed4ff21..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/mac_test.go +++ /dev/null @@ -1,42 +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 pkcs12 - -import ( - "encoding/asn1" - "testing" -) - -func TestVerifyMac(t *testing.T) { - td := macData{ - Mac: digestInfo{ - Digest: []byte{0x18, 0x20, 0x3d, 0xff, 0x1e, 0x16, 0xf4, 0x92, 0xf2, 0xaf, 0xc8, 0x91, 0xa9, 0xba, 0xd6, 0xca, 0x9d, 0xee, 0x51, 0x93}, - }, - MacSalt: []byte{1, 2, 3, 4, 5, 6, 7, 8}, - Iterations: 2048, - } - - message := []byte{11, 12, 13, 14, 15} - password, _ := bmpString("") - - td.Mac.Algorithm.Algorithm = asn1.ObjectIdentifier([]int{1, 2, 3}) - err := verifyMac(&td, message, password) - if _, ok := err.(NotImplementedError); !ok { - t.Errorf("err: %v", err) - } - - td.Mac.Algorithm.Algorithm = asn1.ObjectIdentifier([]int{1, 3, 14, 3, 2, 26}) - err = verifyMac(&td, message, password) - if err != ErrIncorrectPassword { - t.Errorf("Expected incorrect password, got err: %v", err) - } - - password, _ = bmpString("Sesame open") - err = verifyMac(&td, message, password) - if err != nil { - t.Errorf("err: %v", err) - } - -} diff --git a/vendor/golang.org/x/crypto/pkcs12/pbkdf.go b/vendor/golang.org/x/crypto/pkcs12/pbkdf.go deleted file mode 100644 index 5c419d41..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/pbkdf.go +++ /dev/null @@ -1,170 +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 pkcs12 - -import ( - "bytes" - "crypto/sha1" - "math/big" -) - -var ( - one = big.NewInt(1) -) - -// sha1Sum returns the SHA-1 hash of in. -func sha1Sum(in []byte) []byte { - sum := sha1.Sum(in) - return sum[:] -} - -// fillWithRepeats returns v*ceiling(len(pattern) / v) bytes consisting of -// repeats of pattern. -func fillWithRepeats(pattern []byte, v int) []byte { - if len(pattern) == 0 { - return nil - } - outputLen := v * ((len(pattern) + v - 1) / v) - return bytes.Repeat(pattern, (outputLen+len(pattern)-1)/len(pattern))[:outputLen] -} - -func pbkdf(hash func([]byte) []byte, u, v int, salt, password []byte, r int, ID byte, size int) (key []byte) { - // implementation of https://tools.ietf.org/html/rfc7292#appendix-B.2 , RFC text verbatim in comments - - // Let H be a hash function built around a compression function f: - - // Z_2^u x Z_2^v -> Z_2^u - - // (that is, H has a chaining variable and output of length u bits, and - // the message input to the compression function of H is v bits). The - // values for u and v are as follows: - - // HASH FUNCTION VALUE u VALUE v - // MD2, MD5 128 512 - // SHA-1 160 512 - // SHA-224 224 512 - // SHA-256 256 512 - // SHA-384 384 1024 - // SHA-512 512 1024 - // SHA-512/224 224 1024 - // SHA-512/256 256 1024 - - // Furthermore, let r be the iteration count. - - // We assume here that u and v are both multiples of 8, as are the - // lengths of the password and salt strings (which we denote by p and s, - // respectively) and the number n of pseudorandom bits required. In - // addition, u and v are of course non-zero. - - // For information on security considerations for MD5 [19], see [25] and - // [1], and on those for MD2, see [18]. - - // The following procedure can be used to produce pseudorandom bits for - // a particular "purpose" that is identified by a byte called "ID". - // This standard specifies 3 different values for the ID byte: - - // 1. If ID=1, then the pseudorandom bits being produced are to be used - // as key material for performing encryption or decryption. - - // 2. If ID=2, then the pseudorandom bits being produced are to be used - // as an IV (Initial Value) for encryption or decryption. - - // 3. If ID=3, then the pseudorandom bits being produced are to be used - // as an integrity key for MACing. - - // 1. Construct a string, D (the "diversifier"), by concatenating v/8 - // copies of ID. - var D []byte - for i := 0; i < v; i++ { - D = append(D, ID) - } - - // 2. Concatenate copies of the salt together to create a string S of - // length v(ceiling(s/v)) bits (the final copy of the salt may be - // truncated to create S). Note that if the salt is the empty - // string, then so is S. - - S := fillWithRepeats(salt, v) - - // 3. Concatenate copies of the password together to create a string P - // of length v(ceiling(p/v)) bits (the final copy of the password - // may be truncated to create P). Note that if the password is the - // empty string, then so is P. - - P := fillWithRepeats(password, v) - - // 4. Set I=S||P to be the concatenation of S and P. - I := append(S, P...) - - // 5. Set c=ceiling(n/u). - c := (size + u - 1) / u - - // 6. For i=1, 2, ..., c, do the following: - A := make([]byte, c*20) - var IjBuf []byte - for i := 0; i < c; i++ { - // A. Set A2=H^r(D||I). (i.e., the r-th hash of D||1, - // H(H(H(... H(D||I)))) - Ai := hash(append(D, I...)) - for j := 1; j < r; j++ { - Ai = hash(Ai) - } - copy(A[i*20:], Ai[:]) - - if i < c-1 { // skip on last iteration - // B. Concatenate copies of Ai to create a string B of length v - // bits (the final copy of Ai may be truncated to create B). - var B []byte - for len(B) < v { - B = append(B, Ai[:]...) - } - B = B[:v] - - // C. Treating I as a concatenation I_0, I_1, ..., I_(k-1) of v-bit - // blocks, where k=ceiling(s/v)+ceiling(p/v), modify I by - // setting I_j=(I_j+B+1) mod 2^v for each j. - { - Bbi := new(big.Int).SetBytes(B) - Ij := new(big.Int) - - for j := 0; j < len(I)/v; j++ { - Ij.SetBytes(I[j*v : (j+1)*v]) - Ij.Add(Ij, Bbi) - Ij.Add(Ij, one) - Ijb := Ij.Bytes() - // We expect Ijb to be exactly v bytes, - // if it is longer or shorter we must - // adjust it accordingly. - if len(Ijb) > v { - Ijb = Ijb[len(Ijb)-v:] - } - if len(Ijb) < v { - if IjBuf == nil { - IjBuf = make([]byte, v) - } - bytesShort := v - len(Ijb) - for i := 0; i < bytesShort; i++ { - IjBuf[i] = 0 - } - copy(IjBuf[bytesShort:], Ijb) - Ijb = IjBuf - } - copy(I[j*v:(j+1)*v], Ijb) - } - } - } - } - // 7. Concatenate A_1, A_2, ..., A_c together to form a pseudorandom - // bit string, A. - - // 8. Use the first n bits of A as the output of this entire process. - return A[:size] - - // If the above process is being used to generate a DES key, the process - // should be used to create 64 random bits, and the key's parity bits - // should be set after the 64 bits have been produced. Similar concerns - // hold for 2-key and 3-key triple-DES keys, for CDMF keys, and for any - // similar keys with parity bits "built into them". -} diff --git a/vendor/golang.org/x/crypto/pkcs12/pbkdf_test.go b/vendor/golang.org/x/crypto/pkcs12/pbkdf_test.go deleted file mode 100644 index 262037d7..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/pbkdf_test.go +++ /dev/null @@ -1,34 +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 pkcs12 - -import ( - "bytes" - "testing" -) - -func TestThatPBKDFWorksCorrectlyForLongKeys(t *testing.T) { - cipherInfo := shaWithTripleDESCBC{} - - salt := []byte("\xff\xff\xff\xff\xff\xff\xff\xff") - password, _ := bmpString("sesame") - key := cipherInfo.deriveKey(salt, password, 2048) - - if expected := []byte("\x7c\xd9\xfd\x3e\x2b\x3b\xe7\x69\x1a\x44\xe3\xbe\xf0\xf9\xea\x0f\xb9\xb8\x97\xd4\xe3\x25\xd9\xd1"); bytes.Compare(key, expected) != 0 { - t.Fatalf("expected key '%x', but found '%x'", expected, key) - } -} - -func TestThatPBKDFHandlesLeadingZeros(t *testing.T) { - // This test triggers a case where I_j (in step 6C) ends up with leading zero - // byte, meaning that len(Ijb) < v (leading zeros get stripped by big.Int). - // This was previously causing bug whereby certain inputs would break the - // derivation and produce the wrong output. - key := pbkdf(sha1Sum, 20, 64, []byte("\xf3\x7e\x05\xb5\x18\x32\x4b\x4b"), []byte("\x00\x00"), 2048, 1, 24) - expected := []byte("\x00\xf7\x59\xff\x47\xd1\x4d\xd0\x36\x65\xd5\x94\x3c\xb3\xc4\xa3\x9a\x25\x55\xc0\x2a\xed\x66\xe1") - if bytes.Compare(key, expected) != 0 { - t.Fatalf("expected key '%x', but found '%x'", expected, key) - } -} diff --git a/vendor/golang.org/x/crypto/pkcs12/pkcs12.go b/vendor/golang.org/x/crypto/pkcs12/pkcs12.go deleted file mode 100644 index eff9ad3a..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/pkcs12.go +++ /dev/null @@ -1,346 +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 pkcs12 implements some of PKCS#12. -// -// This implementation is distilled from https://tools.ietf.org/html/rfc7292 -// and referenced documents. It is intended for decoding P12/PFX-stored -// certificates and keys for use with the crypto/tls package. -package pkcs12 - -import ( - "crypto/ecdsa" - "crypto/rsa" - "crypto/x509" - "crypto/x509/pkix" - "encoding/asn1" - "encoding/hex" - "encoding/pem" - "errors" -) - -var ( - oidDataContentType = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 7, 1}) - oidEncryptedDataContentType = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 7, 6}) - - oidFriendlyName = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 9, 20}) - oidLocalKeyID = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 9, 21}) - oidMicrosoftCSPName = asn1.ObjectIdentifier([]int{1, 3, 6, 1, 4, 1, 311, 17, 1}) -) - -type pfxPdu struct { - Version int - AuthSafe contentInfo - MacData macData `asn1:"optional"` -} - -type contentInfo struct { - ContentType asn1.ObjectIdentifier - Content asn1.RawValue `asn1:"tag:0,explicit,optional"` -} - -type encryptedData struct { - Version int - EncryptedContentInfo encryptedContentInfo -} - -type encryptedContentInfo struct { - ContentType asn1.ObjectIdentifier - ContentEncryptionAlgorithm pkix.AlgorithmIdentifier - EncryptedContent []byte `asn1:"tag:0,optional"` -} - -func (i encryptedContentInfo) Algorithm() pkix.AlgorithmIdentifier { - return i.ContentEncryptionAlgorithm -} - -func (i encryptedContentInfo) Data() []byte { return i.EncryptedContent } - -type safeBag struct { - Id asn1.ObjectIdentifier - Value asn1.RawValue `asn1:"tag:0,explicit"` - Attributes []pkcs12Attribute `asn1:"set,optional"` -} - -type pkcs12Attribute struct { - Id asn1.ObjectIdentifier - Value asn1.RawValue `asn1:"set"` -} - -type encryptedPrivateKeyInfo struct { - AlgorithmIdentifier pkix.AlgorithmIdentifier - EncryptedData []byte -} - -func (i encryptedPrivateKeyInfo) Algorithm() pkix.AlgorithmIdentifier { - return i.AlgorithmIdentifier -} - -func (i encryptedPrivateKeyInfo) Data() []byte { - return i.EncryptedData -} - -// PEM block types -const ( - certificateType = "CERTIFICATE" - privateKeyType = "PRIVATE KEY" -) - -// unmarshal calls asn1.Unmarshal, but also returns an error if there is any -// trailing data after unmarshaling. -func unmarshal(in []byte, out interface{}) error { - trailing, err := asn1.Unmarshal(in, out) - if err != nil { - return err - } - if len(trailing) != 0 { - return errors.New("pkcs12: trailing data found") - } - return nil -} - -// ConvertToPEM converts all "safe bags" contained in pfxData to PEM blocks. -func ToPEM(pfxData []byte, password string) ([]*pem.Block, error) { - encodedPassword, err := bmpString(password) - if err != nil { - return nil, ErrIncorrectPassword - } - - bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword) - - if err != nil { - return nil, err - } - - blocks := make([]*pem.Block, 0, len(bags)) - for _, bag := range bags { - block, err := convertBag(&bag, encodedPassword) - if err != nil { - return nil, err - } - blocks = append(blocks, block) - } - - return blocks, nil -} - -func convertBag(bag *safeBag, password []byte) (*pem.Block, error) { - block := &pem.Block{ - Headers: make(map[string]string), - } - - for _, attribute := range bag.Attributes { - k, v, err := convertAttribute(&attribute) - if err != nil { - return nil, err - } - block.Headers[k] = v - } - - switch { - case bag.Id.Equal(oidCertBag): - block.Type = certificateType - certsData, err := decodeCertBag(bag.Value.Bytes) - if err != nil { - return nil, err - } - block.Bytes = certsData - case bag.Id.Equal(oidPKCS8ShroundedKeyBag): - block.Type = privateKeyType - - key, err := decodePkcs8ShroudedKeyBag(bag.Value.Bytes, password) - if err != nil { - return nil, err - } - - switch key := key.(type) { - case *rsa.PrivateKey: - block.Bytes = x509.MarshalPKCS1PrivateKey(key) - case *ecdsa.PrivateKey: - block.Bytes, err = x509.MarshalECPrivateKey(key) - if err != nil { - return nil, err - } - default: - return nil, errors.New("found unknown private key type in PKCS#8 wrapping") - } - default: - return nil, errors.New("don't know how to convert a safe bag of type " + bag.Id.String()) - } - return block, nil -} - -func convertAttribute(attribute *pkcs12Attribute) (key, value string, err error) { - isString := false - - switch { - case attribute.Id.Equal(oidFriendlyName): - key = "friendlyName" - isString = true - case attribute.Id.Equal(oidLocalKeyID): - key = "localKeyId" - case attribute.Id.Equal(oidMicrosoftCSPName): - // This key is chosen to match OpenSSL. - key = "Microsoft CSP Name" - isString = true - default: - return "", "", errors.New("pkcs12: unknown attribute with OID " + attribute.Id.String()) - } - - if isString { - if err := unmarshal(attribute.Value.Bytes, &attribute.Value); err != nil { - return "", "", err - } - if value, err = decodeBMPString(attribute.Value.Bytes); err != nil { - return "", "", err - } - } else { - var id []byte - if err := unmarshal(attribute.Value.Bytes, &id); err != nil { - return "", "", err - } - value = hex.EncodeToString(id) - } - - return key, value, nil -} - -// Decode extracts a certificate and private key from pfxData. This function -// assumes that there is only one certificate and only one private key in the -// pfxData. -func Decode(pfxData []byte, password string) (privateKey interface{}, certificate *x509.Certificate, err error) { - encodedPassword, err := bmpString(password) - if err != nil { - return nil, nil, err - } - - bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword) - if err != nil { - return nil, nil, err - } - - if len(bags) != 2 { - err = errors.New("pkcs12: expected exactly two safe bags in the PFX PDU") - return - } - - for _, bag := range bags { - switch { - case bag.Id.Equal(oidCertBag): - if certificate != nil { - err = errors.New("pkcs12: expected exactly one certificate bag") - } - - certsData, err := decodeCertBag(bag.Value.Bytes) - if err != nil { - return nil, nil, err - } - certs, err := x509.ParseCertificates(certsData) - if err != nil { - return nil, nil, err - } - if len(certs) != 1 { - err = errors.New("pkcs12: expected exactly one certificate in the certBag") - return nil, nil, err - } - certificate = certs[0] - - case bag.Id.Equal(oidPKCS8ShroundedKeyBag): - if privateKey != nil { - err = errors.New("pkcs12: expected exactly one key bag") - } - - if privateKey, err = decodePkcs8ShroudedKeyBag(bag.Value.Bytes, encodedPassword); err != nil { - return nil, nil, err - } - } - } - - if certificate == nil { - return nil, nil, errors.New("pkcs12: certificate missing") - } - if privateKey == nil { - return nil, nil, errors.New("pkcs12: private key missing") - } - - return -} - -func getSafeContents(p12Data, password []byte) (bags []safeBag, updatedPassword []byte, err error) { - pfx := new(pfxPdu) - if err := unmarshal(p12Data, pfx); err != nil { - return nil, nil, errors.New("pkcs12: error reading P12 data: " + err.Error()) - } - - if pfx.Version != 3 { - return nil, nil, NotImplementedError("can only decode v3 PFX PDU's") - } - - if !pfx.AuthSafe.ContentType.Equal(oidDataContentType) { - return nil, nil, NotImplementedError("only password-protected PFX is implemented") - } - - // unmarshal the explicit bytes in the content for type 'data' - if err := unmarshal(pfx.AuthSafe.Content.Bytes, &pfx.AuthSafe.Content); err != nil { - return nil, nil, err - } - - if len(pfx.MacData.Mac.Algorithm.Algorithm) == 0 { - return nil, nil, errors.New("pkcs12: no MAC in data") - } - - if err := verifyMac(&pfx.MacData, pfx.AuthSafe.Content.Bytes, password); err != nil { - if err == ErrIncorrectPassword && len(password) == 2 && password[0] == 0 && password[1] == 0 { - // some implementations use an empty byte array - // for the empty string password try one more - // time with empty-empty password - password = nil - err = verifyMac(&pfx.MacData, pfx.AuthSafe.Content.Bytes, password) - } - if err != nil { - return nil, nil, err - } - } - - var authenticatedSafe []contentInfo - if err := unmarshal(pfx.AuthSafe.Content.Bytes, &authenticatedSafe); err != nil { - return nil, nil, err - } - - if len(authenticatedSafe) != 2 { - return nil, nil, NotImplementedError("expected exactly two items in the authenticated safe") - } - - for _, ci := range authenticatedSafe { - var data []byte - - switch { - case ci.ContentType.Equal(oidDataContentType): - if err := unmarshal(ci.Content.Bytes, &data); err != nil { - return nil, nil, err - } - case ci.ContentType.Equal(oidEncryptedDataContentType): - var encryptedData encryptedData - if err := unmarshal(ci.Content.Bytes, &encryptedData); err != nil { - return nil, nil, err - } - if encryptedData.Version != 0 { - return nil, nil, NotImplementedError("only version 0 of EncryptedData is supported") - } - if data, err = pbDecrypt(encryptedData.EncryptedContentInfo, password); err != nil { - return nil, nil, err - } - default: - return nil, nil, NotImplementedError("only data and encryptedData content types are supported in authenticated safe") - } - - var safeContents []safeBag - if err := unmarshal(data, &safeContents); err != nil { - return nil, nil, err - } - bags = append(bags, safeContents...) - } - - return bags, password, nil -} diff --git a/vendor/golang.org/x/crypto/pkcs12/pkcs12_test.go b/vendor/golang.org/x/crypto/pkcs12/pkcs12_test.go deleted file mode 100644 index 14dd2a6c..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/pkcs12_test.go +++ /dev/null @@ -1,138 +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 pkcs12 - -import ( - "crypto/rsa" - "crypto/tls" - "encoding/base64" - "encoding/pem" - "testing" -) - -func TestPfx(t *testing.T) { - for commonName, base64P12 := range testdata { - p12, _ := base64.StdEncoding.DecodeString(base64P12) - - priv, cert, err := Decode(p12, "") - if err != nil { - t.Fatal(err) - } - - if err := priv.(*rsa.PrivateKey).Validate(); err != nil { - t.Errorf("error while validating private key: %v", err) - } - - if cert.Subject.CommonName != commonName { - t.Errorf("expected common name to be %q, but found %q", commonName, cert.Subject.CommonName) - } - } -} - -func TestPEM(t *testing.T) { - for commonName, base64P12 := range testdata { - p12, _ := base64.StdEncoding.DecodeString(base64P12) - - blocks, err := ToPEM(p12, "") - if err != nil { - t.Fatalf("error while converting to PEM: %s", err) - } - - var pemData []byte - for _, b := range blocks { - pemData = append(pemData, pem.EncodeToMemory(b)...) - } - - cert, err := tls.X509KeyPair(pemData, pemData) - if err != nil { - t.Errorf("err while converting to key pair: %v", err) - } - config := tls.Config{ - Certificates: []tls.Certificate{cert}, - } - config.BuildNameToCertificate() - - if _, exists := config.NameToCertificate[commonName]; !exists { - t.Errorf("did not find our cert in PEM?: %v", config.NameToCertificate) - } - } -} - -func ExampleToPEM() { - p12, _ := base64.StdEncoding.DecodeString(`MIIJzgIBAzCCCZQGCS ... CA+gwggPk==`) - - blocks, err := ToPEM(p12, "password") - if err != nil { - panic(err) - } - - var pemData []byte - for _, b := range blocks { - pemData = append(pemData, pem.EncodeToMemory(b)...) - } - - // then use PEM data for tls to construct tls certificate: - cert, err := tls.X509KeyPair(pemData, pemData) - if err != nil { - panic(err) - } - - config := &tls.Config{ - Certificates: []tls.Certificate{cert}, - } - - _ = config -} - -var testdata = map[string]string{ - // 'null' password test case - "Windows Azure Tools": `MIIKDAIBAzCCCcwGCSqGSIb3DQEHAaCCCb0Eggm5MIIJtTCCBe4GCSqGSIb3DQEHAaCCBd8EggXbMIIF1zCCBdMGCyqGSIb3DQEMCgECoIIE7jCCBOowHAYKKoZIhvcNAQwBAzAOBAhStUNnlTGV+gICB9AEggTIJ81JIossF6boFWpPtkiQRPtI6DW6e9QD4/WvHAVrM2bKdpMzSMsCML5NyuddANTKHBVq00Jc9keqGNAqJPKkjhSUebzQFyhe0E1oI9T4zY5UKr/I8JclOeccH4QQnsySzYUG2SnniXnQ+JrG3juetli7EKth9h6jLc6xbubPadY5HMB3wL/eG/kJymiXwU2KQ9Mgd4X6jbcV+NNCE/8jbZHvSTCPeYTJIjxfeX61Sj5kFKUCzERbsnpyevhY3X0eYtEDezZQarvGmXtMMdzf8HJHkWRdk9VLDLgjk8uiJif/+X4FohZ37ig0CpgC2+dP4DGugaZZ51hb8tN9GeCKIsrmWogMXDIVd0OACBp/EjJVmFB6y0kUCXxUE0TZt0XA1tjAGJcjDUpBvTntZjPsnH/4ZySy+s2d9OOhJ6pzRQBRm360TzkFdSwk9DLiLdGfv4pwMMu/vNGBlqjP/1sQtj+jprJiD1sDbCl4AdQZVoMBQHadF2uSD4/o17XG/Ci0r2h6Htc2yvZMAbEY4zMjjIn2a+vqIxD6onexaek1R3zbkS9j19D6EN9EWn8xgz80YRCyW65znZk8xaIhhvlU/mg7sTxeyuqroBZNcq6uDaQTehDpyH7bY2l4zWRpoj10a6JfH2q5shYz8Y6UZC/kOTfuGqbZDNZWro/9pYquvNNW0M847E5t9bsf9VkAAMHRGBbWoVoU9VpI0UnoXSfvpOo+aXa2DSq5sHHUTVY7A9eov3z5IqT+pligx11xcs+YhDWcU8di3BTJisohKvv5Y8WSkm/rloiZd4ig269k0jTRk1olP/vCksPli4wKG2wdsd5o42nX1yL7mFfXocOANZbB+5qMkiwdyoQSk+Vq+C8nAZx2bbKhUq2MbrORGMzOe0Hh0x2a0PeObycN1Bpyv7Mp3ZI9h5hBnONKCnqMhtyQHUj/nNvbJUnDVYNfoOEqDiEqqEwB7YqWzAKz8KW0OIqdlM8uiQ4JqZZlFllnWJUfaiDrdFM3lYSnFQBkzeVlts6GpDOOBjCYd7dcCNS6kq6pZC6p6HN60Twu0JnurZD6RT7rrPkIGE8vAenFt4iGe/yF52fahCSY8Ws4K0UTwN7bAS+4xRHVCWvE8sMRZsRCHizb5laYsVrPZJhE6+hux6OBb6w8kwPYXc+ud5v6UxawUWgt6uPwl8mlAtU9Z7Miw4Nn/wtBkiLL/ke1UI1gqJtcQXgHxx6mzsjh41+nAgTvdbsSEyU6vfOmxGj3Rwc1eOrIhJUqn5YjOWfzzsz/D5DzWKmwXIwdspt1p+u+kol1N3f2wT9fKPnd/RGCb4g/1hc3Aju4DQYgGY782l89CEEdalpQ/35bQczMFk6Fje12HykakWEXd/bGm9Unh82gH84USiRpeOfQvBDYoqEyrY3zkFZzBjhDqa+jEcAj41tcGx47oSfDq3iVYCdL7HSIjtnyEktVXd7mISZLoMt20JACFcMw+mrbjlug+eU7o2GR7T+LwtOp/p4LZqyLa7oQJDwde1BNZtm3TCK2P1mW94QDL0nDUps5KLtr1DaZXEkRbjSJub2ZE9WqDHyU3KA8G84Tq/rN1IoNu/if45jacyPje1Npj9IftUZSP22nV7HMwZtwQ4P4MYHRMBMGCSqGSIb3DQEJFTEGBAQBAAAAMFsGCSqGSIb3DQEJFDFOHkwAewBCADQAQQA0AEYARQBCADAALQBBADEAOABBAC0ANAA0AEIAQgAtAEIANQBGADIALQA0ADkAMQBFAEYAMQA1ADIAQgBBADEANgB9MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAG8AZgB0AHcAYQByAGUAIABLAGUAeQAgAFMAdABvAHIAYQBnAGUAIABQAHIAbwB2AGkAZABlAHIwggO/BgkqhkiG9w0BBwagggOwMIIDrAIBADCCA6UGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECEBk5ZAYpu0WAgIH0ICCA3hik4mQFGpw9Ha8TQPtk+j2jwWdxfF0+sTk6S8PTsEfIhB7wPltjiCK92Uv2tCBQnodBUmatIfkpnRDEySmgmdglmOCzj204lWAMRs94PoALGn3JVBXbO1vIDCbAPOZ7Z0Hd0/1t2hmk8v3//QJGUg+qr59/4y/MuVfIg4qfkPcC2QSvYWcK3oTf6SFi5rv9B1IOWFgN5D0+C+x/9Lb/myPYX+rbOHrwtJ4W1fWKoz9g7wwmGFA9IJ2DYGuH8ifVFbDFT1Vcgsvs8arSX7oBsJVW0qrP7XkuDRe3EqCmKW7rBEwYrFznhxZcRDEpMwbFoSvgSIZ4XhFY9VKYglT+JpNH5iDceYEBOQL4vBLpxNUk3l5jKaBNxVa14AIBxq18bVHJ+STInhLhad4u10v/Xbx7wIL3f9DX1yLAkPrpBYbNHS2/ew6H/ySDJnoIDxkw2zZ4qJ+qUJZ1S0lbZVG+VT0OP5uF6tyOSpbMlcGkdl3z254n6MlCrTifcwkzscysDsgKXaYQw06rzrPW6RDub+t+hXzGny799fS9jhQMLDmOggaQ7+LA4oEZsfT89HLMWxJYDqjo3gIfjciV2mV54R684qLDS+AO09U49e6yEbwGlq8lpmO/pbXCbpGbB1b3EomcQbxdWxW2WEkkEd/VBn81K4M3obmywwXJkw+tPXDXfBmzzaqqCR+onMQ5ME1nMkY8ybnfoCc1bDIupjVWsEL2Wvq752RgI6KqzVNr1ew1IdqV5AWN2fOfek+0vi3Jd9FHF3hx8JMwjJL9dZsETV5kHtYJtE7wJ23J68BnCt2eI0GEuwXcCf5EdSKN/xXCTlIokc4Qk/gzRdIZsvcEJ6B1lGovKG54X4IohikqTjiepjbsMWj38yxDmK3mtENZ9ci8FPfbbvIEcOCZIinuY3qFUlRSbx7VUerEoV1IP3clUwexVQo4lHFee2jd7ocWsdSqSapW7OWUupBtDzRkqVhE7tGria+i1W2d6YLlJ21QTjyapWJehAMO637OdbJCCzDs1cXbodRRE7bsP492ocJy8OX66rKdhYbg8srSFNKdb3pF3UDNbN9jhI/t8iagRhNBhlQtTr1me2E/c86Q18qcRXl4bcXTt6acgCeffK6Y26LcVlrgjlD33AEYRRUeyC+rpxbT0aMjdFderlndKRIyG23mSp0HaUwNzAfMAcGBSsOAwIaBBRlviCbIyRrhIysg2dc/KbLFTc2vQQUg4rfwHMM4IKYRD/fsd1x6dda+wQ=`, - // empty string password test case - "testing@example.com": `MIIJzgIBAzCCCZQGCSqGSIb3DQEHAaCCCYUEggmBMIIJfTCCA/cGCSqGSIb3DQEHBqCCA+gwggPk -AgEAMIID3QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIIszfRGqcmPcCAggAgIIDsOZ9Eg1L -s5Wx8JhYoV3HAL4aRnkAWvTYB5NISZOgSgIQTssmt/3A7134dibTmaT/93LikkL3cTKLnQzJ4wDf -YZ1bprpVJvUqz+HFT79m27bP9zYXFrvxWBJbxjYKTSjQMgz+h8LAEpXXGajCmxMJ1oCOtdXkhhzc -LdZN6SAYgtmtyFnCdMEDskSggGuLb3fw84QEJ/Sj6FAULXunW/CPaS7Ce0TMsKmNU/jfFWj3yXXw -ro0kwjKiVLpVFlnBlHo2OoVU7hmkm59YpGhLgS7nxLD3n7nBroQ0ID1+8R01NnV9XLGoGzxMm1te -6UyTCkr5mj+kEQ8EP1Ys7g/TC411uhVWySMt/rcpkx7Vz1r9kYEAzJpONAfr6cuEVkPKrxpq4Fh0 -2fzlKBky0i/hrfIEUmngh+ERHUb/Mtv/fkv1j5w9suESbhsMLLiCXAlsP1UWMX+3bNizi3WVMEts -FM2k9byn+p8IUD/A8ULlE4kEaWeoc+2idkCNQkLGuIdGUXUFVm58se0auUkVRoRJx8x4CkMesT8j -b1H831W66YRWoEwwDQp2kK1lA2vQXxdVHWlFevMNxJeromLzj3ayiaFrfByeUXhR2S+Hpm+c0yNR -4UVU9WED2kacsZcpRm9nlEa5sr28mri5JdBrNa/K02OOhvKCxr5ZGmbOVzUQKla2z4w+Ku9k8POm -dfDNU/fGx1b5hcFWtghXe3msWVsSJrQihnN6q1ughzNiYZlJUGcHdZDRtiWwCFI0bR8h/Dmg9uO9 -4rawQQrjIRT7B8yF3UbkZyAqs8Ppb1TsMeNPHh1rxEfGVQknh/48ouJYsmtbnzugTUt3mJCXXiL+ -XcPMV6bBVAUu4aaVKSmg9+yJtY4/VKv10iw88ktv29fViIdBe3t6l/oPuvQgbQ8dqf4T8w0l/uKZ -9lS1Na9jfT1vCoS7F5TRi+tmyj1vL5kr/amEIW6xKEP6oeAMvCMtbPAzVEj38zdJ1R22FfuIBxkh -f0Zl7pdVbmzRxl/SBx9iIBJSqAvcXItiT0FIj8HxQ+0iZKqMQMiBuNWJf5pYOLWGrIyntCWwHuaQ -wrx0sTGuEL9YXLEAsBDrsvzLkx/56E4INGZFrH8G7HBdW6iGqb22IMI4GHltYSyBRKbB0gadYTyv -abPEoqww8o7/85aPSzOTJ/53ozD438Q+d0u9SyDuOb60SzCD/zPuCEd78YgtXJwBYTuUNRT27FaM -3LGMX8Hz+6yPNRnmnA2XKPn7dx/IlaqAjIs8MIIFfgYJKoZIhvcNAQcBoIIFbwSCBWswggVnMIIF -YwYLKoZIhvcNAQwKAQKgggTuMIIE6jAcBgoqhkiG9w0BDAEDMA4ECJr0cClYqOlcAgIIAASCBMhe -OQSiP2s0/46ONXcNeVAkz2ksW3u/+qorhSiskGZ0b3dFa1hhgBU2Q7JVIkc4Hf7OXaT1eVQ8oqND -uhqsNz83/kqYo70+LS8Hocj49jFgWAKrf/yQkdyP1daHa2yzlEw4mkpqOfnIORQHvYCa8nEApspZ -wVu8y6WVuLHKU67mel7db2xwstQp7PRuSAYqGjTfAylElog8ASdaqqYbYIrCXucF8iF9oVgmb/Qo -xrXshJ9aSLO4MuXlTPELmWgj07AXKSb90FKNihE+y0bWb9LPVFY1Sly3AX9PfrtkSXIZwqW3phpv -MxGxQl/R6mr1z+hlTfY9Wdpb5vlKXPKA0L0Rt8d2pOesylFi6esJoS01QgP1kJILjbrV731kvDc0 -Jsd+Oxv4BMwA7ClG8w1EAOInc/GrV1MWFGw/HeEqj3CZ/l/0jv9bwkbVeVCiIhoL6P6lVx9pXq4t -KZ0uKg/tk5TVJmG2vLcMLvezD0Yk3G2ZOMrywtmskrwoF7oAUpO9e87szoH6fEvUZlkDkPVW1NV4 -cZk3DBSQiuA3VOOg8qbo/tx/EE3H59P0axZWno2GSB0wFPWd1aj+b//tJEJHaaNR6qPRj4IWj9ru -Qbc8eRAcVWleHg8uAehSvUXlFpyMQREyrnpvMGddpiTC8N4UMrrBRhV7+UbCOWhxPCbItnInBqgl -1JpSZIP7iUtsIMdu3fEC2cdbXMTRul+4rdzUR7F9OaezV3jjvcAbDvgbK1CpyC+MJ1Mxm/iTgk9V -iUArydhlR8OniN84GyGYoYCW9O/KUwb6ASmeFOu/msx8x6kAsSQHIkKqMKv0TUR3kZnkxUvdpBGP -KTl4YCTvNGX4dYALBqrAETRDhua2KVBD/kEttDHwBNVbN2xi81+Mc7ml461aADfk0c66R/m2sjHB -2tN9+wG12OIWFQjL6wF/UfJMYamxx2zOOExiId29Opt57uYiNVLOO4ourPewHPeH0u8Gz35aero7 -lkt7cZAe1Q0038JUuE/QGlnK4lESK9UkSIQAjSaAlTsrcfwtQxB2EjoOoLhwH5mvxUEmcNGNnXUc -9xj3M5BD3zBz3Ft7G3YMMDwB1+zC2l+0UG0MGVjMVaeoy32VVNvxgX7jk22OXG1iaOB+PY9kdk+O -X+52BGSf/rD6X0EnqY7XuRPkMGgjtpZeAYxRQnFtCZgDY4wYheuxqSSpdF49yNczSPLkgB3CeCfS -+9NTKN7aC6hBbmW/8yYh6OvSiCEwY0lFS/T+7iaVxr1loE4zI1y/FFp4Pe1qfLlLttVlkygga2UU -SCunTQ8UB/M5IXWKkhMOO11dP4niWwb39Y7pCWpau7mwbXOKfRPX96cgHnQJK5uG+BesDD1oYnX0 -6frN7FOnTSHKruRIwuI8KnOQ/I+owmyz71wiv5LMQt+yM47UrEjB/EZa5X8dpEwOZvkdqL7utcyo -l0XH5kWMXdW856LL/FYftAqJIDAmtX1TXF/rbP6mPyN/IlDC0gjP84Uzd/a2UyTIWr+wk49Ek3vQ -/uDamq6QrwAxVmNh5Tset5Vhpc1e1kb7mRMZIzxSP8JcTuYd45oFKi98I8YjvueHVZce1g7OudQP -SbFQoJvdT46iBg1TTatlltpOiH2mFaxWVS0xYjAjBgkqhkiG9w0BCRUxFgQUdA9eVqvETX4an/c8 -p8SsTugkit8wOwYJKoZIhvcNAQkUMS4eLABGAHIAaQBlAG4AZABsAHkAIABuAGEAbQBlACAAZgBv -AHIAIABjAGUAcgB0MDEwITAJBgUrDgMCGgUABBRFsNz3Zd1O1GI8GTuFwCWuDOjEEwQIuBEfIcAy -HQ8CAggA`, -} diff --git a/vendor/golang.org/x/crypto/pkcs12/safebags.go b/vendor/golang.org/x/crypto/pkcs12/safebags.go deleted file mode 100644 index def1f7b9..00000000 --- a/vendor/golang.org/x/crypto/pkcs12/safebags.go +++ /dev/null @@ -1,57 +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 pkcs12 - -import ( - "crypto/x509" - "encoding/asn1" - "errors" -) - -var ( - // see https://tools.ietf.org/html/rfc7292#appendix-D - oidCertTypeX509Certificate = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 9, 22, 1}) - oidPKCS8ShroundedKeyBag = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 12, 10, 1, 2}) - oidCertBag = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 12, 10, 1, 3}) -) - -type certBag struct { - Id asn1.ObjectIdentifier - Data []byte `asn1:"tag:0,explicit"` -} - -func decodePkcs8ShroudedKeyBag(asn1Data, password []byte) (privateKey interface{}, err error) { - pkinfo := new(encryptedPrivateKeyInfo) - if err = unmarshal(asn1Data, pkinfo); err != nil { - return nil, errors.New("pkcs12: error decoding PKCS#8 shrouded key bag: " + err.Error()) - } - - pkData, err := pbDecrypt(pkinfo, password) - if err != nil { - return nil, errors.New("pkcs12: error decrypting PKCS#8 shrouded key bag: " + err.Error()) - } - - ret := new(asn1.RawValue) - if err = unmarshal(pkData, ret); err != nil { - return nil, errors.New("pkcs12: error unmarshaling decrypted private key: " + err.Error()) - } - - if privateKey, err = x509.ParsePKCS8PrivateKey(pkData); err != nil { - return nil, errors.New("pkcs12: error parsing PKCS#8 private key: " + err.Error()) - } - - return privateKey, nil -} - -func decodeCertBag(asn1Data []byte) (x509Certificates []byte, err error) { - bag := new(certBag) - if err := unmarshal(asn1Data, bag); err != nil { - return nil, errors.New("pkcs12: error decoding cert bag: " + err.Error()) - } - if !bag.Id.Equal(oidCertTypeX509Certificate) { - return nil, NotImplementedError("only X509 certificates are supported") - } - return bag.Data, nil -} diff --git a/vendor/golang.org/x/crypto/poly1305/poly1305.go b/vendor/golang.org/x/crypto/poly1305/poly1305.go deleted file mode 100644 index f562fa57..00000000 --- a/vendor/golang.org/x/crypto/poly1305/poly1305.go +++ /dev/null @@ -1,33 +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 poly1305 implements Poly1305 one-time message authentication code as -specified in https://cr.yp.to/mac/poly1305-20050329.pdf. - -Poly1305 is a fast, one-time authentication function. It is infeasible for an -attacker to generate an authenticator for a message without the key. However, a -key must only be used for a single message. Authenticating two different -messages with the same key allows an attacker to forge authenticators for other -messages with the same key. - -Poly1305 was originally coupled with AES in order to make Poly1305-AES. AES was -used with a fixed key in order to generate one-time keys from an nonce. -However, in this package AES isn't used and the one-time key is specified -directly. -*/ -package poly1305 // import "golang.org/x/crypto/poly1305" - -import "crypto/subtle" - -// TagSize is the size, in bytes, of a poly1305 authenticator. -const TagSize = 16 - -// Verify returns true if mac is a valid authenticator for m with the given -// key. -func Verify(mac *[16]byte, m []byte, key *[32]byte) bool { - var tmp [16]byte - Sum(&tmp, m, key) - return subtle.ConstantTimeCompare(tmp[:], mac[:]) == 1 -} diff --git a/vendor/golang.org/x/crypto/poly1305/poly1305_test.go b/vendor/golang.org/x/crypto/poly1305/poly1305_test.go deleted file mode 100644 index 017027fe..00000000 --- a/vendor/golang.org/x/crypto/poly1305/poly1305_test.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. - -package poly1305 - -import ( - "bytes" - "encoding/hex" - "flag" - "testing" - "unsafe" -) - -var stressFlag = flag.Bool("stress", false, "run slow stress tests") - -var testData = []struct { - in, k, correct []byte -}{ - { - []byte("Hello world!"), - []byte("this is 32-byte key for Poly1305"), - []byte{0xa6, 0xf7, 0x45, 0x00, 0x8f, 0x81, 0xc9, 0x16, 0xa2, 0x0d, 0xcc, 0x74, 0xee, 0xf2, 0xb2, 0xf0}, - }, - { - make([]byte, 32), - []byte("this is 32-byte key for Poly1305"), - []byte{0x49, 0xec, 0x78, 0x09, 0x0e, 0x48, 0x1e, 0xc6, 0xc2, 0x6b, 0x33, 0xb9, 0x1c, 0xcc, 0x03, 0x07}, - }, - { - make([]byte, 2007), - []byte("this is 32-byte key for Poly1305"), - []byte{0xda, 0x84, 0xbc, 0xab, 0x02, 0x67, 0x6c, 0x38, 0xcd, 0xb0, 0x15, 0x60, 0x42, 0x74, 0xc2, 0xaa}, - }, - { - make([]byte, 2007), - make([]byte, 32), - make([]byte, 16), - }, - { - // This test triggers an edge-case. See https://go-review.googlesource.com/#/c/30101/. - []byte{0x81, 0xd8, 0xb2, 0xe4, 0x6a, 0x25, 0x21, 0x3b, 0x58, 0xfe, 0xe4, 0x21, 0x3a, 0x2a, 0x28, 0xe9, 0x21, 0xc1, 0x2a, 0x96, 0x32, 0x51, 0x6d, 0x3b, 0x73, 0x27, 0x27, 0x27, 0xbe, 0xcf, 0x21, 0x29}, - []byte{0x3b, 0x3a, 0x29, 0xe9, 0x3b, 0x21, 0x3a, 0x5c, 0x5c, 0x3b, 0x3b, 0x05, 0x3a, 0x3a, 0x8c, 0x0d}, - []byte{0x6d, 0xc1, 0x8b, 0x8c, 0x34, 0x4c, 0xd7, 0x99, 0x27, 0x11, 0x8b, 0xbe, 0x84, 0xb7, 0xf3, 0x14}, - }, - { - // This test generates a result of (2^130-1) % (2^130-5). - []byte{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 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, - }, - []byte{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - []byte{4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - }, - { - // This test generates a result of (2^130-6) % (2^130-5). - []byte{ - 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 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, - }, - []byte{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - []byte{0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, - }, - { - // This test generates a result of (2^130-5) % (2^130-5). - []byte{ - 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 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, - }, - []byte{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - }, -} - -func testSum(t *testing.T, unaligned bool) { - var out [16]byte - var key [32]byte - - for i, v := range testData { - in := v.in - if unaligned { - in = unalignBytes(in) - } - copy(key[:], v.k) - Sum(&out, in, &key) - if !bytes.Equal(out[:], v.correct) { - t.Errorf("%d: expected %x, got %x", i, v.correct, out[:]) - } - } -} - -func TestBurnin(t *testing.T) { - // This test can be used to sanity-check significant changes. It can - // take about many minutes to run, even on fast machines. It's disabled - // by default. - if !*stressFlag { - t.Skip("skipping without -stress") - } - - var key [32]byte - var input [25]byte - var output [16]byte - - for i := range key { - key[i] = 1 - } - for i := range input { - input[i] = 2 - } - - for i := uint64(0); i < 1e10; i++ { - Sum(&output, input[:], &key) - copy(key[0:], output[:]) - copy(key[16:], output[:]) - copy(input[:], output[:]) - copy(input[16:], output[:]) - } - - const expected = "5e3b866aea0b636d240c83c428f84bfa" - if got := hex.EncodeToString(output[:]); got != expected { - t.Errorf("expected %s, got %s", expected, got) - } -} - -func TestSum(t *testing.T) { testSum(t, false) } -func TestSumUnaligned(t *testing.T) { testSum(t, true) } - -func benchmark(b *testing.B, size int, unaligned bool) { - var out [16]byte - var key [32]byte - in := make([]byte, size) - if unaligned { - in = unalignBytes(in) - } - b.SetBytes(int64(len(in))) - b.ResetTimer() - for i := 0; i < b.N; i++ { - Sum(&out, in, &key) - } -} - -func Benchmark64(b *testing.B) { benchmark(b, 64, false) } -func Benchmark1K(b *testing.B) { benchmark(b, 1024, false) } -func Benchmark64Unaligned(b *testing.B) { benchmark(b, 64, true) } -func Benchmark1KUnaligned(b *testing.B) { benchmark(b, 1024, true) } - -func unalignBytes(in []byte) []byte { - out := make([]byte, len(in)+1) - if uintptr(unsafe.Pointer(&out[0]))&(unsafe.Alignof(uint32(0))-1) == 0 { - out = out[1:] - } else { - out = out[:len(in)] - } - copy(out, in) - return out -} diff --git a/vendor/golang.org/x/crypto/poly1305/sum_amd64.go b/vendor/golang.org/x/crypto/poly1305/sum_amd64.go deleted file mode 100644 index 4dd72fe7..00000000 --- a/vendor/golang.org/x/crypto/poly1305/sum_amd64.go +++ /dev/null @@ -1,22 +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. - -// +build amd64,!gccgo,!appengine - -package poly1305 - -// This function is implemented in sum_amd64.s -//go:noescape -func poly1305(out *[16]byte, m *byte, mlen uint64, key *[32]byte) - -// Sum generates an authenticator for m using a one-time key and puts the -// 16-byte result into out. Authenticating two different messages with the same -// key allows an attacker to forge messages at will. -func Sum(out *[16]byte, m []byte, key *[32]byte) { - var mPtr *byte - if len(m) > 0 { - mPtr = &m[0] - } - poly1305(out, mPtr, uint64(len(m)), key) -} diff --git a/vendor/golang.org/x/crypto/poly1305/sum_amd64.s b/vendor/golang.org/x/crypto/poly1305/sum_amd64.s deleted file mode 100644 index 2edae638..00000000 --- a/vendor/golang.org/x/crypto/poly1305/sum_amd64.s +++ /dev/null @@ -1,125 +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. - -// +build amd64,!gccgo,!appengine - -#include "textflag.h" - -#define POLY1305_ADD(msg, h0, h1, h2) \ - ADDQ 0(msg), h0; \ - ADCQ 8(msg), h1; \ - ADCQ $1, h2; \ - LEAQ 16(msg), msg - -#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3) \ - MOVQ r0, AX; \ - MULQ h0; \ - MOVQ AX, t0; \ - MOVQ DX, t1; \ - MOVQ r0, AX; \ - MULQ h1; \ - ADDQ AX, t1; \ - ADCQ $0, DX; \ - MOVQ r0, t2; \ - IMULQ h2, t2; \ - ADDQ DX, t2; \ - \ - MOVQ r1, AX; \ - MULQ h0; \ - ADDQ AX, t1; \ - ADCQ $0, DX; \ - MOVQ DX, h0; \ - MOVQ r1, t3; \ - IMULQ h2, t3; \ - MOVQ r1, AX; \ - MULQ h1; \ - ADDQ AX, t2; \ - ADCQ DX, t3; \ - ADDQ h0, t2; \ - ADCQ $0, t3; \ - \ - MOVQ t0, h0; \ - MOVQ t1, h1; \ - MOVQ t2, h2; \ - ANDQ $3, h2; \ - MOVQ t2, t0; \ - ANDQ $0xFFFFFFFFFFFFFFFC, t0; \ - ADDQ t0, h0; \ - ADCQ t3, h1; \ - ADCQ $0, h2; \ - SHRQ $2, t3, t2; \ - SHRQ $2, t3; \ - ADDQ t2, h0; \ - ADCQ t3, h1; \ - ADCQ $0, h2 - -DATA ·poly1305Mask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF -DATA ·poly1305Mask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC -GLOBL ·poly1305Mask<>(SB), RODATA, $16 - -// func poly1305(out *[16]byte, m *byte, mlen uint64, key *[32]key) -TEXT ·poly1305(SB), $0-32 - MOVQ out+0(FP), DI - MOVQ m+8(FP), SI - MOVQ mlen+16(FP), R15 - MOVQ key+24(FP), AX - - MOVQ 0(AX), R11 - MOVQ 8(AX), R12 - ANDQ ·poly1305Mask<>(SB), R11 // r0 - ANDQ ·poly1305Mask<>+8(SB), R12 // r1 - XORQ R8, R8 // h0 - XORQ R9, R9 // h1 - XORQ R10, R10 // h2 - - CMPQ R15, $16 - JB bytes_between_0_and_15 - -loop: - POLY1305_ADD(SI, R8, R9, R10) - -multiply: - POLY1305_MUL(R8, R9, R10, R11, R12, BX, CX, R13, R14) - SUBQ $16, R15 - CMPQ R15, $16 - JAE loop - -bytes_between_0_and_15: - TESTQ R15, R15 - JZ done - MOVQ $1, BX - XORQ CX, CX - XORQ R13, R13 - ADDQ R15, SI - -flush_buffer: - SHLQ $8, BX, CX - SHLQ $8, BX - MOVB -1(SI), R13 - XORQ R13, BX - DECQ SI - DECQ R15 - JNZ flush_buffer - - ADDQ BX, R8 - ADCQ CX, R9 - ADCQ $0, R10 - MOVQ $16, R15 - JMP multiply - -done: - MOVQ R8, AX - MOVQ R9, BX - SUBQ $0xFFFFFFFFFFFFFFFB, AX - SBBQ $0xFFFFFFFFFFFFFFFF, BX - SBBQ $3, R10 - CMOVQCS R8, AX - CMOVQCS R9, BX - MOVQ key+24(FP), R8 - ADDQ 16(R8), AX - ADCQ 24(R8), BX - - MOVQ AX, 0(DI) - MOVQ BX, 8(DI) - RET diff --git a/vendor/golang.org/x/crypto/poly1305/sum_arm.go b/vendor/golang.org/x/crypto/poly1305/sum_arm.go deleted file mode 100644 index 5dc321c2..00000000 --- a/vendor/golang.org/x/crypto/poly1305/sum_arm.go +++ /dev/null @@ -1,22 +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. - -// +build arm,!gccgo,!appengine,!nacl - -package poly1305 - -// This function is implemented in sum_arm.s -//go:noescape -func poly1305_auth_armv6(out *[16]byte, m *byte, mlen uint32, key *[32]byte) - -// Sum generates an authenticator for m using a one-time key and puts the -// 16-byte result into out. Authenticating two different messages with the same -// key allows an attacker to forge messages at will. -func Sum(out *[16]byte, m []byte, key *[32]byte) { - var mPtr *byte - if len(m) > 0 { - mPtr = &m[0] - } - poly1305_auth_armv6(out, mPtr, uint32(len(m)), key) -} diff --git a/vendor/golang.org/x/crypto/poly1305/sum_arm.s b/vendor/golang.org/x/crypto/poly1305/sum_arm.s deleted file mode 100644 index f70b4ac4..00000000 --- a/vendor/golang.org/x/crypto/poly1305/sum_arm.s +++ /dev/null @@ -1,427 +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. - -// +build arm,!gccgo,!appengine,!nacl - -#include "textflag.h" - -// This code was translated into a form compatible with 5a from the public -// domain source by Andrew Moon: github.com/floodyberry/poly1305-opt/blob/master/app/extensions/poly1305. - -DATA ·poly1305_init_constants_armv6<>+0x00(SB)/4, $0x3ffffff -DATA ·poly1305_init_constants_armv6<>+0x04(SB)/4, $0x3ffff03 -DATA ·poly1305_init_constants_armv6<>+0x08(SB)/4, $0x3ffc0ff -DATA ·poly1305_init_constants_armv6<>+0x0c(SB)/4, $0x3f03fff -DATA ·poly1305_init_constants_armv6<>+0x10(SB)/4, $0x00fffff -GLOBL ·poly1305_init_constants_armv6<>(SB), 8, $20 - -// Warning: the linker may use R11 to synthesize certain instructions. Please -// take care and verify that no synthetic instructions use it. - -TEXT poly1305_init_ext_armv6<>(SB), NOSPLIT, $0 - // Needs 16 bytes of stack and 64 bytes of space pointed to by R0. (It - // might look like it's only 60 bytes of space but the final four bytes - // will be written by another function.) We need to skip over four - // bytes of stack because that's saving the value of 'g'. - ADD $4, R13, R8 - MOVM.IB [R4-R7], (R8) - MOVM.IA.W (R1), [R2-R5] - MOVW $·poly1305_init_constants_armv6<>(SB), R7 - MOVW R2, R8 - MOVW R2>>26, R9 - MOVW R3>>20, g - MOVW R4>>14, R11 - MOVW R5>>8, R12 - ORR R3<<6, R9, R9 - ORR R4<<12, g, g - ORR R5<<18, R11, R11 - MOVM.IA (R7), [R2-R6] - AND R8, R2, R2 - AND R9, R3, R3 - AND g, R4, R4 - AND R11, R5, R5 - AND R12, R6, R6 - MOVM.IA.W [R2-R6], (R0) - EOR R2, R2, R2 - EOR R3, R3, R3 - EOR R4, R4, R4 - EOR R5, R5, R5 - EOR R6, R6, R6 - MOVM.IA.W [R2-R6], (R0) - MOVM.IA.W (R1), [R2-R5] - MOVM.IA [R2-R6], (R0) - ADD $20, R13, R0 - MOVM.DA (R0), [R4-R7] - RET - -#define MOVW_UNALIGNED(Rsrc, Rdst, Rtmp, offset) \ - MOVBU (offset+0)(Rsrc), Rtmp; \ - MOVBU Rtmp, (offset+0)(Rdst); \ - MOVBU (offset+1)(Rsrc), Rtmp; \ - MOVBU Rtmp, (offset+1)(Rdst); \ - MOVBU (offset+2)(Rsrc), Rtmp; \ - MOVBU Rtmp, (offset+2)(Rdst); \ - MOVBU (offset+3)(Rsrc), Rtmp; \ - MOVBU Rtmp, (offset+3)(Rdst) - -TEXT poly1305_blocks_armv6<>(SB), NOSPLIT, $0 - // Needs 24 bytes of stack for saved registers and then 88 bytes of - // scratch space after that. We assume that 24 bytes at (R13) have - // already been used: four bytes for the link register saved in the - // prelude of poly1305_auth_armv6, four bytes for saving the value of g - // in that function and 16 bytes of scratch space used around - // poly1305_finish_ext_armv6_skip1. - ADD $24, R13, R12 - MOVM.IB [R4-R8, R14], (R12) - MOVW R0, 88(R13) - MOVW R1, 92(R13) - MOVW R2, 96(R13) - MOVW R1, R14 - MOVW R2, R12 - MOVW 56(R0), R8 - WORD $0xe1180008 // TST R8, R8 not working see issue 5921 - EOR R6, R6, R6 - MOVW.EQ $(1<<24), R6 - MOVW R6, 84(R13) - ADD $116, R13, g - MOVM.IA (R0), [R0-R9] - MOVM.IA [R0-R4], (g) - CMP $16, R12 - BLO poly1305_blocks_armv6_done - -poly1305_blocks_armv6_mainloop: - WORD $0xe31e0003 // TST R14, #3 not working see issue 5921 - BEQ poly1305_blocks_armv6_mainloop_aligned - ADD $100, R13, g - MOVW_UNALIGNED(R14, g, R0, 0) - MOVW_UNALIGNED(R14, g, R0, 4) - MOVW_UNALIGNED(R14, g, R0, 8) - MOVW_UNALIGNED(R14, g, R0, 12) - MOVM.IA (g), [R0-R3] - ADD $16, R14 - B poly1305_blocks_armv6_mainloop_loaded - -poly1305_blocks_armv6_mainloop_aligned: - MOVM.IA.W (R14), [R0-R3] - -poly1305_blocks_armv6_mainloop_loaded: - MOVW R0>>26, g - MOVW R1>>20, R11 - MOVW R2>>14, R12 - MOVW R14, 92(R13) - MOVW R3>>8, R4 - ORR R1<<6, g, g - ORR R2<<12, R11, R11 - ORR R3<<18, R12, R12 - BIC $0xfc000000, R0, R0 - BIC $0xfc000000, g, g - MOVW 84(R13), R3 - BIC $0xfc000000, R11, R11 - BIC $0xfc000000, R12, R12 - ADD R0, R5, R5 - ADD g, R6, R6 - ORR R3, R4, R4 - ADD R11, R7, R7 - ADD $116, R13, R14 - ADD R12, R8, R8 - ADD R4, R9, R9 - MOVM.IA (R14), [R0-R4] - MULLU R4, R5, (R11, g) - MULLU R3, R5, (R14, R12) - MULALU R3, R6, (R11, g) - MULALU R2, R6, (R14, R12) - MULALU R2, R7, (R11, g) - MULALU R1, R7, (R14, R12) - ADD R4<<2, R4, R4 - ADD R3<<2, R3, R3 - MULALU R1, R8, (R11, g) - MULALU R0, R8, (R14, R12) - MULALU R0, R9, (R11, g) - MULALU R4, R9, (R14, R12) - MOVW g, 76(R13) - MOVW R11, 80(R13) - MOVW R12, 68(R13) - MOVW R14, 72(R13) - MULLU R2, R5, (R11, g) - MULLU R1, R5, (R14, R12) - MULALU R1, R6, (R11, g) - MULALU R0, R6, (R14, R12) - MULALU R0, R7, (R11, g) - MULALU R4, R7, (R14, R12) - ADD R2<<2, R2, R2 - ADD R1<<2, R1, R1 - MULALU R4, R8, (R11, g) - MULALU R3, R8, (R14, R12) - MULALU R3, R9, (R11, g) - MULALU R2, R9, (R14, R12) - MOVW g, 60(R13) - MOVW R11, 64(R13) - MOVW R12, 52(R13) - MOVW R14, 56(R13) - MULLU R0, R5, (R11, g) - MULALU R4, R6, (R11, g) - MULALU R3, R7, (R11, g) - MULALU R2, R8, (R11, g) - MULALU R1, R9, (R11, g) - ADD $52, R13, R0 - MOVM.IA (R0), [R0-R7] - MOVW g>>26, R12 - MOVW R4>>26, R14 - ORR R11<<6, R12, R12 - ORR R5<<6, R14, R14 - BIC $0xfc000000, g, g - BIC $0xfc000000, R4, R4 - ADD.S R12, R0, R0 - ADC $0, R1, R1 - ADD.S R14, R6, R6 - ADC $0, R7, R7 - MOVW R0>>26, R12 - MOVW R6>>26, R14 - ORR R1<<6, R12, R12 - ORR R7<<6, R14, R14 - BIC $0xfc000000, R0, R0 - BIC $0xfc000000, R6, R6 - ADD R14<<2, R14, R14 - ADD.S R12, R2, R2 - ADC $0, R3, R3 - ADD R14, g, g - MOVW R2>>26, R12 - MOVW g>>26, R14 - ORR R3<<6, R12, R12 - BIC $0xfc000000, g, R5 - BIC $0xfc000000, R2, R7 - ADD R12, R4, R4 - ADD R14, R0, R0 - MOVW R4>>26, R12 - BIC $0xfc000000, R4, R8 - ADD R12, R6, R9 - MOVW 96(R13), R12 - MOVW 92(R13), R14 - MOVW R0, R6 - CMP $32, R12 - SUB $16, R12, R12 - MOVW R12, 96(R13) - BHS poly1305_blocks_armv6_mainloop - -poly1305_blocks_armv6_done: - MOVW 88(R13), R12 - MOVW R5, 20(R12) - MOVW R6, 24(R12) - MOVW R7, 28(R12) - MOVW R8, 32(R12) - MOVW R9, 36(R12) - ADD $48, R13, R0 - MOVM.DA (R0), [R4-R8, R14] - RET - -#define MOVHUP_UNALIGNED(Rsrc, Rdst, Rtmp) \ - MOVBU.P 1(Rsrc), Rtmp; \ - MOVBU.P Rtmp, 1(Rdst); \ - MOVBU.P 1(Rsrc), Rtmp; \ - MOVBU.P Rtmp, 1(Rdst) - -#define MOVWP_UNALIGNED(Rsrc, Rdst, Rtmp) \ - MOVHUP_UNALIGNED(Rsrc, Rdst, Rtmp); \ - MOVHUP_UNALIGNED(Rsrc, Rdst, Rtmp) - -// func poly1305_auth_armv6(out *[16]byte, m *byte, mlen uint32, key *[32]key) -TEXT ·poly1305_auth_armv6(SB), $196-16 - // The value 196, just above, is the sum of 64 (the size of the context - // structure) and 132 (the amount of stack needed). - // - // At this point, the stack pointer (R13) has been moved down. It - // points to the saved link register and there's 196 bytes of free - // space above it. - // - // The stack for this function looks like: - // - // +--------------------- - // | - // | 64 bytes of context structure - // | - // +--------------------- - // | - // | 112 bytes for poly1305_blocks_armv6 - // | - // +--------------------- - // | 16 bytes of final block, constructed at - // | poly1305_finish_ext_armv6_skip8 - // +--------------------- - // | four bytes of saved 'g' - // +--------------------- - // | lr, saved by prelude <- R13 points here - // +--------------------- - MOVW g, 4(R13) - - MOVW out+0(FP), R4 - MOVW m+4(FP), R5 - MOVW mlen+8(FP), R6 - MOVW key+12(FP), R7 - - ADD $136, R13, R0 // 136 = 4 + 4 + 16 + 112 - MOVW R7, R1 - - // poly1305_init_ext_armv6 will write to the stack from R13+4, but - // that's ok because none of the other values have been written yet. - BL poly1305_init_ext_armv6<>(SB) - BIC.S $15, R6, R2 - BEQ poly1305_auth_armv6_noblocks - ADD $136, R13, R0 - MOVW R5, R1 - ADD R2, R5, R5 - SUB R2, R6, R6 - BL poly1305_blocks_armv6<>(SB) - -poly1305_auth_armv6_noblocks: - ADD $136, R13, R0 - MOVW R5, R1 - MOVW R6, R2 - MOVW R4, R3 - - MOVW R0, R5 - MOVW R1, R6 - MOVW R2, R7 - MOVW R3, R8 - AND.S R2, R2, R2 - BEQ poly1305_finish_ext_armv6_noremaining - EOR R0, R0 - ADD $8, R13, R9 // 8 = offset to 16 byte scratch space - MOVW R0, (R9) - MOVW R0, 4(R9) - MOVW R0, 8(R9) - MOVW R0, 12(R9) - WORD $0xe3110003 // TST R1, #3 not working see issue 5921 - BEQ poly1305_finish_ext_armv6_aligned - WORD $0xe3120008 // TST R2, #8 not working see issue 5921 - BEQ poly1305_finish_ext_armv6_skip8 - MOVWP_UNALIGNED(R1, R9, g) - MOVWP_UNALIGNED(R1, R9, g) - -poly1305_finish_ext_armv6_skip8: - WORD $0xe3120004 // TST $4, R2 not working see issue 5921 - BEQ poly1305_finish_ext_armv6_skip4 - MOVWP_UNALIGNED(R1, R9, g) - -poly1305_finish_ext_armv6_skip4: - WORD $0xe3120002 // TST $2, R2 not working see issue 5921 - BEQ poly1305_finish_ext_armv6_skip2 - MOVHUP_UNALIGNED(R1, R9, g) - B poly1305_finish_ext_armv6_skip2 - -poly1305_finish_ext_armv6_aligned: - WORD $0xe3120008 // TST R2, #8 not working see issue 5921 - BEQ poly1305_finish_ext_armv6_skip8_aligned - MOVM.IA.W (R1), [g-R11] - MOVM.IA.W [g-R11], (R9) - -poly1305_finish_ext_armv6_skip8_aligned: - WORD $0xe3120004 // TST $4, R2 not working see issue 5921 - BEQ poly1305_finish_ext_armv6_skip4_aligned - MOVW.P 4(R1), g - MOVW.P g, 4(R9) - -poly1305_finish_ext_armv6_skip4_aligned: - WORD $0xe3120002 // TST $2, R2 not working see issue 5921 - BEQ poly1305_finish_ext_armv6_skip2 - MOVHU.P 2(R1), g - MOVH.P g, 2(R9) - -poly1305_finish_ext_armv6_skip2: - WORD $0xe3120001 // TST $1, R2 not working see issue 5921 - BEQ poly1305_finish_ext_armv6_skip1 - MOVBU.P 1(R1), g - MOVBU.P g, 1(R9) - -poly1305_finish_ext_armv6_skip1: - MOVW $1, R11 - MOVBU R11, 0(R9) - MOVW R11, 56(R5) - MOVW R5, R0 - ADD $8, R13, R1 - MOVW $16, R2 - BL poly1305_blocks_armv6<>(SB) - -poly1305_finish_ext_armv6_noremaining: - MOVW 20(R5), R0 - MOVW 24(R5), R1 - MOVW 28(R5), R2 - MOVW 32(R5), R3 - MOVW 36(R5), R4 - MOVW R4>>26, R12 - BIC $0xfc000000, R4, R4 - ADD R12<<2, R12, R12 - ADD R12, R0, R0 - MOVW R0>>26, R12 - BIC $0xfc000000, R0, R0 - ADD R12, R1, R1 - MOVW R1>>26, R12 - BIC $0xfc000000, R1, R1 - ADD R12, R2, R2 - MOVW R2>>26, R12 - BIC $0xfc000000, R2, R2 - ADD R12, R3, R3 - MOVW R3>>26, R12 - BIC $0xfc000000, R3, R3 - ADD R12, R4, R4 - ADD $5, R0, R6 - MOVW R6>>26, R12 - BIC $0xfc000000, R6, R6 - ADD R12, R1, R7 - MOVW R7>>26, R12 - BIC $0xfc000000, R7, R7 - ADD R12, R2, g - MOVW g>>26, R12 - BIC $0xfc000000, g, g - ADD R12, R3, R11 - MOVW $-(1<<26), R12 - ADD R11>>26, R12, R12 - BIC $0xfc000000, R11, R11 - ADD R12, R4, R9 - MOVW R9>>31, R12 - SUB $1, R12 - AND R12, R6, R6 - AND R12, R7, R7 - AND R12, g, g - AND R12, R11, R11 - AND R12, R9, R9 - MVN R12, R12 - AND R12, R0, R0 - AND R12, R1, R1 - AND R12, R2, R2 - AND R12, R3, R3 - AND R12, R4, R4 - ORR R6, R0, R0 - ORR R7, R1, R1 - ORR g, R2, R2 - ORR R11, R3, R3 - ORR R9, R4, R4 - ORR R1<<26, R0, R0 - MOVW R1>>6, R1 - ORR R2<<20, R1, R1 - MOVW R2>>12, R2 - ORR R3<<14, R2, R2 - MOVW R3>>18, R3 - ORR R4<<8, R3, R3 - MOVW 40(R5), R6 - MOVW 44(R5), R7 - MOVW 48(R5), g - MOVW 52(R5), R11 - ADD.S R6, R0, R0 - ADC.S R7, R1, R1 - ADC.S g, R2, R2 - ADC.S R11, R3, R3 - MOVM.IA [R0-R3], (R8) - MOVW R5, R12 - EOR R0, R0, R0 - EOR R1, R1, R1 - EOR R2, R2, R2 - EOR R3, R3, R3 - EOR R4, R4, R4 - EOR R5, R5, R5 - EOR R6, R6, R6 - EOR R7, R7, R7 - MOVM.IA.W [R0-R7], (R12) - MOVM.IA [R0-R7], (R12) - MOVW 4(R13), g - RET diff --git a/vendor/golang.org/x/crypto/poly1305/sum_ref.go b/vendor/golang.org/x/crypto/poly1305/sum_ref.go deleted file mode 100644 index b2805a5c..00000000 --- a/vendor/golang.org/x/crypto/poly1305/sum_ref.go +++ /dev/null @@ -1,141 +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. - -// +build !amd64,!arm gccgo appengine nacl - -package poly1305 - -import "encoding/binary" - -// Sum generates an authenticator for msg using a one-time key and puts the -// 16-byte result into out. Authenticating two different messages with the same -// key allows an attacker to forge messages at will. -func Sum(out *[TagSize]byte, msg []byte, key *[32]byte) { - var ( - h0, h1, h2, h3, h4 uint32 // the hash accumulators - r0, r1, r2, r3, r4 uint64 // the r part of the key - ) - - r0 = uint64(binary.LittleEndian.Uint32(key[0:]) & 0x3ffffff) - r1 = uint64((binary.LittleEndian.Uint32(key[3:]) >> 2) & 0x3ffff03) - r2 = uint64((binary.LittleEndian.Uint32(key[6:]) >> 4) & 0x3ffc0ff) - r3 = uint64((binary.LittleEndian.Uint32(key[9:]) >> 6) & 0x3f03fff) - r4 = uint64((binary.LittleEndian.Uint32(key[12:]) >> 8) & 0x00fffff) - - R1, R2, R3, R4 := r1*5, r2*5, r3*5, r4*5 - - for len(msg) >= TagSize { - // h += msg - h0 += binary.LittleEndian.Uint32(msg[0:]) & 0x3ffffff - h1 += (binary.LittleEndian.Uint32(msg[3:]) >> 2) & 0x3ffffff - h2 += (binary.LittleEndian.Uint32(msg[6:]) >> 4) & 0x3ffffff - h3 += (binary.LittleEndian.Uint32(msg[9:]) >> 6) & 0x3ffffff - h4 += (binary.LittleEndian.Uint32(msg[12:]) >> 8) | (1 << 24) - - // h *= r - d0 := (uint64(h0) * r0) + (uint64(h1) * R4) + (uint64(h2) * R3) + (uint64(h3) * R2) + (uint64(h4) * R1) - d1 := (d0 >> 26) + (uint64(h0) * r1) + (uint64(h1) * r0) + (uint64(h2) * R4) + (uint64(h3) * R3) + (uint64(h4) * R2) - d2 := (d1 >> 26) + (uint64(h0) * r2) + (uint64(h1) * r1) + (uint64(h2) * r0) + (uint64(h3) * R4) + (uint64(h4) * R3) - d3 := (d2 >> 26) + (uint64(h0) * r3) + (uint64(h1) * r2) + (uint64(h2) * r1) + (uint64(h3) * r0) + (uint64(h4) * R4) - d4 := (d3 >> 26) + (uint64(h0) * r4) + (uint64(h1) * r3) + (uint64(h2) * r2) + (uint64(h3) * r1) + (uint64(h4) * r0) - - // h %= p - h0 = uint32(d0) & 0x3ffffff - h1 = uint32(d1) & 0x3ffffff - h2 = uint32(d2) & 0x3ffffff - h3 = uint32(d3) & 0x3ffffff - h4 = uint32(d4) & 0x3ffffff - - h0 += uint32(d4>>26) * 5 - h1 += h0 >> 26 - h0 = h0 & 0x3ffffff - - msg = msg[TagSize:] - } - - if len(msg) > 0 { - var block [TagSize]byte - off := copy(block[:], msg) - block[off] = 0x01 - - // h += msg - h0 += binary.LittleEndian.Uint32(block[0:]) & 0x3ffffff - h1 += (binary.LittleEndian.Uint32(block[3:]) >> 2) & 0x3ffffff - h2 += (binary.LittleEndian.Uint32(block[6:]) >> 4) & 0x3ffffff - h3 += (binary.LittleEndian.Uint32(block[9:]) >> 6) & 0x3ffffff - h4 += (binary.LittleEndian.Uint32(block[12:]) >> 8) - - // h *= r - d0 := (uint64(h0) * r0) + (uint64(h1) * R4) + (uint64(h2) * R3) + (uint64(h3) * R2) + (uint64(h4) * R1) - d1 := (d0 >> 26) + (uint64(h0) * r1) + (uint64(h1) * r0) + (uint64(h2) * R4) + (uint64(h3) * R3) + (uint64(h4) * R2) - d2 := (d1 >> 26) + (uint64(h0) * r2) + (uint64(h1) * r1) + (uint64(h2) * r0) + (uint64(h3) * R4) + (uint64(h4) * R3) - d3 := (d2 >> 26) + (uint64(h0) * r3) + (uint64(h1) * r2) + (uint64(h2) * r1) + (uint64(h3) * r0) + (uint64(h4) * R4) - d4 := (d3 >> 26) + (uint64(h0) * r4) + (uint64(h1) * r3) + (uint64(h2) * r2) + (uint64(h3) * r1) + (uint64(h4) * r0) - - // h %= p - h0 = uint32(d0) & 0x3ffffff - h1 = uint32(d1) & 0x3ffffff - h2 = uint32(d2) & 0x3ffffff - h3 = uint32(d3) & 0x3ffffff - h4 = uint32(d4) & 0x3ffffff - - h0 += uint32(d4>>26) * 5 - h1 += h0 >> 26 - h0 = h0 & 0x3ffffff - } - - // h %= p reduction - h2 += h1 >> 26 - h1 &= 0x3ffffff - h3 += h2 >> 26 - h2 &= 0x3ffffff - h4 += h3 >> 26 - h3 &= 0x3ffffff - h0 += 5 * (h4 >> 26) - h4 &= 0x3ffffff - h1 += h0 >> 26 - h0 &= 0x3ffffff - - // h - p - t0 := h0 + 5 - t1 := h1 + (t0 >> 26) - t2 := h2 + (t1 >> 26) - t3 := h3 + (t2 >> 26) - t4 := h4 + (t3 >> 26) - (1 << 26) - t0 &= 0x3ffffff - t1 &= 0x3ffffff - t2 &= 0x3ffffff - t3 &= 0x3ffffff - - // select h if h < p else h - p - t_mask := (t4 >> 31) - 1 - h_mask := ^t_mask - h0 = (h0 & h_mask) | (t0 & t_mask) - h1 = (h1 & h_mask) | (t1 & t_mask) - h2 = (h2 & h_mask) | (t2 & t_mask) - h3 = (h3 & h_mask) | (t3 & t_mask) - h4 = (h4 & h_mask) | (t4 & t_mask) - - // h %= 2^128 - h0 |= h1 << 26 - h1 = ((h1 >> 6) | (h2 << 20)) - h2 = ((h2 >> 12) | (h3 << 14)) - h3 = ((h3 >> 18) | (h4 << 8)) - - // s: the s part of the key - // tag = (h + s) % (2^128) - t := uint64(h0) + uint64(binary.LittleEndian.Uint32(key[16:])) - h0 = uint32(t) - t = uint64(h1) + uint64(binary.LittleEndian.Uint32(key[20:])) + (t >> 32) - h1 = uint32(t) - t = uint64(h2) + uint64(binary.LittleEndian.Uint32(key[24:])) + (t >> 32) - h2 = uint32(t) - t = uint64(h3) + uint64(binary.LittleEndian.Uint32(key[28:])) + (t >> 32) - h3 = uint32(t) - - binary.LittleEndian.PutUint32(out[0:], h0) - binary.LittleEndian.PutUint32(out[4:], h1) - binary.LittleEndian.PutUint32(out[8:], h2) - binary.LittleEndian.PutUint32(out[12:], h3) -} diff --git a/vendor/golang.org/x/crypto/ripemd160/ripemd160.go b/vendor/golang.org/x/crypto/ripemd160/ripemd160.go deleted file mode 100644 index 6c6e8423..00000000 --- a/vendor/golang.org/x/crypto/ripemd160/ripemd160.go +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package ripemd160 implements the RIPEMD-160 hash algorithm. -package ripemd160 // import "golang.org/x/crypto/ripemd160" - -// RIPEMD-160 is designed by by Hans Dobbertin, Antoon Bosselaers, and Bart -// Preneel with specifications available at: -// http://homes.esat.kuleuven.be/~cosicart/pdf/AB-9601/AB-9601.pdf. - -import ( - "crypto" - "hash" -) - -func init() { - crypto.RegisterHash(crypto.RIPEMD160, New) -} - -// The size of the checksum in bytes. -const Size = 20 - -// The block size of the hash algorithm in bytes. -const BlockSize = 64 - -const ( - _s0 = 0x67452301 - _s1 = 0xefcdab89 - _s2 = 0x98badcfe - _s3 = 0x10325476 - _s4 = 0xc3d2e1f0 -) - -// digest represents the partial evaluation of a checksum. -type digest struct { - s [5]uint32 // running context - x [BlockSize]byte // temporary buffer - nx int // index into x - tc uint64 // total count of bytes processed -} - -func (d *digest) Reset() { - d.s[0], d.s[1], d.s[2], d.s[3], d.s[4] = _s0, _s1, _s2, _s3, _s4 - d.nx = 0 - d.tc = 0 -} - -// New returns a new hash.Hash computing the checksum. -func New() hash.Hash { - result := new(digest) - result.Reset() - return result -} - -func (d *digest) Size() int { return Size } - -func (d *digest) BlockSize() int { return BlockSize } - -func (d *digest) Write(p []byte) (nn int, err error) { - nn = len(p) - d.tc += uint64(nn) - if d.nx > 0 { - n := len(p) - if n > BlockSize-d.nx { - n = BlockSize - d.nx - } - for i := 0; i < n; i++ { - d.x[d.nx+i] = p[i] - } - d.nx += n - if d.nx == BlockSize { - _Block(d, d.x[0:]) - d.nx = 0 - } - p = p[n:] - } - n := _Block(d, p) - p = p[n:] - if len(p) > 0 { - d.nx = copy(d.x[:], p) - } - return -} - -func (d0 *digest) Sum(in []byte) []byte { - // Make a copy of d0 so that caller can keep writing and summing. - d := *d0 - - // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. - tc := d.tc - var tmp [64]byte - tmp[0] = 0x80 - if tc%64 < 56 { - d.Write(tmp[0 : 56-tc%64]) - } else { - d.Write(tmp[0 : 64+56-tc%64]) - } - - // Length in bits. - tc <<= 3 - for i := uint(0); i < 8; i++ { - tmp[i] = byte(tc >> (8 * i)) - } - d.Write(tmp[0:8]) - - if d.nx != 0 { - panic("d.nx != 0") - } - - var digest [Size]byte - for i, s := range d.s { - digest[i*4] = byte(s) - digest[i*4+1] = byte(s >> 8) - digest[i*4+2] = byte(s >> 16) - digest[i*4+3] = byte(s >> 24) - } - - return append(in, digest[:]...) -} diff --git a/vendor/golang.org/x/crypto/ripemd160/ripemd160_test.go b/vendor/golang.org/x/crypto/ripemd160/ripemd160_test.go deleted file mode 100644 index 5df1b259..00000000 --- a/vendor/golang.org/x/crypto/ripemd160/ripemd160_test.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ripemd160 - -// Test vectors are from: -// http://homes.esat.kuleuven.be/~bosselae/ripemd160.html - -import ( - "fmt" - "io" - "testing" -) - -type mdTest struct { - out string - in string -} - -var vectors = [...]mdTest{ - {"9c1185a5c5e9fc54612808977ee8f548b2258d31", ""}, - {"0bdc9d2d256b3ee9daae347be6f4dc835a467ffe", "a"}, - {"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc", "abc"}, - {"5d0689ef49d2fae572b881b123a85ffa21595f36", "message digest"}, - {"f71c27109c692c1b56bbdceb5b9d2865b3708dbc", "abcdefghijklmnopqrstuvwxyz"}, - {"12a053384a9c0c88e405a06c27dcf49ada62eb2b", "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"}, - {"b0e20b6e3116640286ed3a87a5713079b21f5189", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"}, - {"9b752e45573d4b39f4dbd3323cab82bf63326bfb", "12345678901234567890123456789012345678901234567890123456789012345678901234567890"}, -} - -func TestVectors(t *testing.T) { - for i := 0; i < len(vectors); i++ { - tv := vectors[i] - md := New() - for j := 0; j < 3; j++ { - if j < 2 { - io.WriteString(md, tv.in) - } else { - io.WriteString(md, tv.in[0:len(tv.in)/2]) - md.Sum(nil) - io.WriteString(md, tv.in[len(tv.in)/2:]) - } - s := fmt.Sprintf("%x", md.Sum(nil)) - if s != tv.out { - t.Fatalf("RIPEMD-160[%d](%s) = %s, expected %s", j, tv.in, s, tv.out) - } - md.Reset() - } - } -} - -func TestMillionA(t *testing.T) { - md := New() - for i := 0; i < 100000; i++ { - io.WriteString(md, "aaaaaaaaaa") - } - out := "52783243c1697bdbe16d37f97f68f08325dc1528" - s := fmt.Sprintf("%x", md.Sum(nil)) - if s != out { - t.Fatalf("RIPEMD-160 (1 million 'a') = %s, expected %s", s, out) - } - md.Reset() -} diff --git a/vendor/golang.org/x/crypto/ripemd160/ripemd160block.go b/vendor/golang.org/x/crypto/ripemd160/ripemd160block.go deleted file mode 100644 index 7bc8e6c4..00000000 --- a/vendor/golang.org/x/crypto/ripemd160/ripemd160block.go +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// RIPEMD-160 block step. -// In its own file so that a faster assembly or C version -// can be substituted easily. - -package ripemd160 - -// work buffer indices and roll amounts for one line -var _n = [80]uint{ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13, -} - -var _r = [80]uint{ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6, -} - -// same for the other parallel one -var n_ = [80]uint{ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11, -} - -var r_ = [80]uint{ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11, -} - -func _Block(md *digest, p []byte) int { - n := 0 - var x [16]uint32 - var alpha, beta uint32 - for len(p) >= BlockSize { - a, b, c, d, e := md.s[0], md.s[1], md.s[2], md.s[3], md.s[4] - aa, bb, cc, dd, ee := a, b, c, d, e - j := 0 - for i := 0; i < 16; i++ { - x[i] = uint32(p[j]) | uint32(p[j+1])<<8 | uint32(p[j+2])<<16 | uint32(p[j+3])<<24 - j += 4 - } - - // round 1 - i := 0 - for i < 16 { - alpha = a + (b ^ c ^ d) + x[_n[i]] - s := _r[i] - alpha = (alpha<>(32-s)) + e - beta = c<<10 | c>>22 - a, b, c, d, e = e, alpha, b, beta, d - - // parallel line - alpha = aa + (bb ^ (cc | ^dd)) + x[n_[i]] + 0x50a28be6 - s = r_[i] - alpha = (alpha<>(32-s)) + ee - beta = cc<<10 | cc>>22 - aa, bb, cc, dd, ee = ee, alpha, bb, beta, dd - - i++ - } - - // round 2 - for i < 32 { - alpha = a + (b&c | ^b&d) + x[_n[i]] + 0x5a827999 - s := _r[i] - alpha = (alpha<>(32-s)) + e - beta = c<<10 | c>>22 - a, b, c, d, e = e, alpha, b, beta, d - - // parallel line - alpha = aa + (bb&dd | cc&^dd) + x[n_[i]] + 0x5c4dd124 - s = r_[i] - alpha = (alpha<>(32-s)) + ee - beta = cc<<10 | cc>>22 - aa, bb, cc, dd, ee = ee, alpha, bb, beta, dd - - i++ - } - - // round 3 - for i < 48 { - alpha = a + (b | ^c ^ d) + x[_n[i]] + 0x6ed9eba1 - s := _r[i] - alpha = (alpha<>(32-s)) + e - beta = c<<10 | c>>22 - a, b, c, d, e = e, alpha, b, beta, d - - // parallel line - alpha = aa + (bb | ^cc ^ dd) + x[n_[i]] + 0x6d703ef3 - s = r_[i] - alpha = (alpha<>(32-s)) + ee - beta = cc<<10 | cc>>22 - aa, bb, cc, dd, ee = ee, alpha, bb, beta, dd - - i++ - } - - // round 4 - for i < 64 { - alpha = a + (b&d | c&^d) + x[_n[i]] + 0x8f1bbcdc - s := _r[i] - alpha = (alpha<>(32-s)) + e - beta = c<<10 | c>>22 - a, b, c, d, e = e, alpha, b, beta, d - - // parallel line - alpha = aa + (bb&cc | ^bb&dd) + x[n_[i]] + 0x7a6d76e9 - s = r_[i] - alpha = (alpha<>(32-s)) + ee - beta = cc<<10 | cc>>22 - aa, bb, cc, dd, ee = ee, alpha, bb, beta, dd - - i++ - } - - // round 5 - for i < 80 { - alpha = a + (b ^ (c | ^d)) + x[_n[i]] + 0xa953fd4e - s := _r[i] - alpha = (alpha<>(32-s)) + e - beta = c<<10 | c>>22 - a, b, c, d, e = e, alpha, b, beta, d - - // parallel line - alpha = aa + (bb ^ cc ^ dd) + x[n_[i]] - s = r_[i] - alpha = (alpha<>(32-s)) + ee - beta = cc<<10 | cc>>22 - aa, bb, cc, dd, ee = ee, alpha, bb, beta, dd - - i++ - } - - // combine results - dd += c + md.s[1] - md.s[1] = md.s[2] + d + ee - md.s[2] = md.s[3] + e + aa - md.s[3] = md.s[4] + a + bb - md.s[4] = md.s[0] + b + cc - md.s[0] = dd - - p = p[BlockSize:] - n += BlockSize - } - return n -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go deleted file mode 100644 index 4c96147c..00000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go +++ /dev/null @@ -1,144 +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 salsa provides low-level access to functions in the Salsa family. -package salsa // import "golang.org/x/crypto/salsa20/salsa" - -// Sigma is the Salsa20 constant for 256-bit keys. -var Sigma = [16]byte{'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k'} - -// HSalsa20 applies the HSalsa20 core function to a 16-byte input in, 32-byte -// key k, and 16-byte constant c, and puts the result into the 32-byte array -// out. -func HSalsa20(out *[32]byte, in *[16]byte, k *[32]byte, c *[16]byte) { - x0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 - x1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 - x2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 - x3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 - x4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 - x5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 - x6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 - x7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 - x8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 - x9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 - x10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 - x11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 - x12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 - x13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 - x14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 - x15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 - - for i := 0; i < 20; i += 2 { - u := x0 + x12 - x4 ^= u<<7 | u>>(32-7) - u = x4 + x0 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x4 - x12 ^= u<<13 | u>>(32-13) - u = x12 + x8 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x1 - x9 ^= u<<7 | u>>(32-7) - u = x9 + x5 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x9 - x1 ^= u<<13 | u>>(32-13) - u = x1 + x13 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x6 - x14 ^= u<<7 | u>>(32-7) - u = x14 + x10 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x14 - x6 ^= u<<13 | u>>(32-13) - u = x6 + x2 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x11 - x3 ^= u<<7 | u>>(32-7) - u = x3 + x15 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x3 - x11 ^= u<<13 | u>>(32-13) - u = x11 + x7 - x15 ^= u<<18 | u>>(32-18) - - u = x0 + x3 - x1 ^= u<<7 | u>>(32-7) - u = x1 + x0 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x1 - x3 ^= u<<13 | u>>(32-13) - u = x3 + x2 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x4 - x6 ^= u<<7 | u>>(32-7) - u = x6 + x5 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x6 - x4 ^= u<<13 | u>>(32-13) - u = x4 + x7 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x9 - x11 ^= u<<7 | u>>(32-7) - u = x11 + x10 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x11 - x9 ^= u<<13 | u>>(32-13) - u = x9 + x8 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x14 - x12 ^= u<<7 | u>>(32-7) - u = x12 + x15 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x12 - x14 ^= u<<13 | u>>(32-13) - u = x14 + x13 - x15 ^= u<<18 | u>>(32-18) - } - out[0] = byte(x0) - out[1] = byte(x0 >> 8) - out[2] = byte(x0 >> 16) - out[3] = byte(x0 >> 24) - - out[4] = byte(x5) - out[5] = byte(x5 >> 8) - out[6] = byte(x5 >> 16) - out[7] = byte(x5 >> 24) - - out[8] = byte(x10) - out[9] = byte(x10 >> 8) - out[10] = byte(x10 >> 16) - out[11] = byte(x10 >> 24) - - out[12] = byte(x15) - out[13] = byte(x15 >> 8) - out[14] = byte(x15 >> 16) - out[15] = byte(x15 >> 24) - - out[16] = byte(x6) - out[17] = byte(x6 >> 8) - out[18] = byte(x6 >> 16) - out[19] = byte(x6 >> 24) - - out[20] = byte(x7) - out[21] = byte(x7 >> 8) - out[22] = byte(x7 >> 16) - out[23] = byte(x7 >> 24) - - out[24] = byte(x8) - out[25] = byte(x8 >> 8) - out[26] = byte(x8 >> 16) - out[27] = byte(x8 >> 24) - - out[28] = byte(x9) - out[29] = byte(x9 >> 8) - out[30] = byte(x9 >> 16) - out[31] = byte(x9 >> 24) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa2020_amd64.s b/vendor/golang.org/x/crypto/salsa20/salsa/salsa2020_amd64.s deleted file mode 100644 index 22afbdca..00000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa2020_amd64.s +++ /dev/null @@ -1,889 +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. - -// +build amd64,!appengine,!gccgo - -// This code was translated into a form compatible with 6a from the public -// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html - -// func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) -// This needs up to 64 bytes at 360(SP); hence the non-obvious frame size. -TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment - MOVQ out+0(FP),DI - MOVQ in+8(FP),SI - MOVQ n+16(FP),DX - MOVQ nonce+24(FP),CX - MOVQ key+32(FP),R8 - - MOVQ SP,R12 - MOVQ SP,R9 - ADDQ $31, R9 - ANDQ $~31, R9 - MOVQ R9, SP - - MOVQ DX,R9 - MOVQ CX,DX - MOVQ R8,R10 - CMPQ R9,$0 - JBE DONE - START: - MOVL 20(R10),CX - MOVL 0(R10),R8 - MOVL 0(DX),AX - MOVL 16(R10),R11 - MOVL CX,0(SP) - MOVL R8, 4 (SP) - MOVL AX, 8 (SP) - MOVL R11, 12 (SP) - MOVL 8(DX),CX - MOVL 24(R10),R8 - MOVL 4(R10),AX - MOVL 4(DX),R11 - MOVL CX,16(SP) - MOVL R8, 20 (SP) - MOVL AX, 24 (SP) - MOVL R11, 28 (SP) - MOVL 12(DX),CX - MOVL 12(R10),DX - MOVL 28(R10),R8 - MOVL 8(R10),AX - MOVL DX,32(SP) - MOVL CX, 36 (SP) - MOVL R8, 40 (SP) - MOVL AX, 44 (SP) - MOVQ $1634760805,DX - MOVQ $857760878,CX - MOVQ $2036477234,R8 - MOVQ $1797285236,AX - MOVL DX,48(SP) - MOVL CX, 52 (SP) - MOVL R8, 56 (SP) - MOVL AX, 60 (SP) - CMPQ R9,$256 - JB BYTESBETWEEN1AND255 - MOVOA 48(SP),X0 - PSHUFL $0X55,X0,X1 - PSHUFL $0XAA,X0,X2 - PSHUFL $0XFF,X0,X3 - PSHUFL $0X00,X0,X0 - MOVOA X1,64(SP) - MOVOA X2,80(SP) - MOVOA X3,96(SP) - MOVOA X0,112(SP) - MOVOA 0(SP),X0 - PSHUFL $0XAA,X0,X1 - PSHUFL $0XFF,X0,X2 - PSHUFL $0X00,X0,X3 - PSHUFL $0X55,X0,X0 - MOVOA X1,128(SP) - MOVOA X2,144(SP) - MOVOA X3,160(SP) - MOVOA X0,176(SP) - MOVOA 16(SP),X0 - PSHUFL $0XFF,X0,X1 - PSHUFL $0X55,X0,X2 - PSHUFL $0XAA,X0,X0 - MOVOA X1,192(SP) - MOVOA X2,208(SP) - MOVOA X0,224(SP) - MOVOA 32(SP),X0 - PSHUFL $0X00,X0,X1 - PSHUFL $0XAA,X0,X2 - PSHUFL $0XFF,X0,X0 - MOVOA X1,240(SP) - MOVOA X2,256(SP) - MOVOA X0,272(SP) - BYTESATLEAST256: - MOVL 16(SP),DX - MOVL 36 (SP),CX - MOVL DX,288(SP) - MOVL CX,304(SP) - ADDQ $1,DX - SHLQ $32,CX - ADDQ CX,DX - MOVQ DX,CX - SHRQ $32,CX - MOVL DX, 292 (SP) - MOVL CX, 308 (SP) - ADDQ $1,DX - SHLQ $32,CX - ADDQ CX,DX - MOVQ DX,CX - SHRQ $32,CX - MOVL DX, 296 (SP) - MOVL CX, 312 (SP) - ADDQ $1,DX - SHLQ $32,CX - ADDQ CX,DX - MOVQ DX,CX - SHRQ $32,CX - MOVL DX, 300 (SP) - MOVL CX, 316 (SP) - ADDQ $1,DX - SHLQ $32,CX - ADDQ CX,DX - MOVQ DX,CX - SHRQ $32,CX - MOVL DX,16(SP) - MOVL CX, 36 (SP) - MOVQ R9,352(SP) - MOVQ $20,DX - MOVOA 64(SP),X0 - MOVOA 80(SP),X1 - MOVOA 96(SP),X2 - MOVOA 256(SP),X3 - MOVOA 272(SP),X4 - MOVOA 128(SP),X5 - MOVOA 144(SP),X6 - MOVOA 176(SP),X7 - MOVOA 192(SP),X8 - MOVOA 208(SP),X9 - MOVOA 224(SP),X10 - MOVOA 304(SP),X11 - MOVOA 112(SP),X12 - MOVOA 160(SP),X13 - MOVOA 240(SP),X14 - MOVOA 288(SP),X15 - MAINLOOP1: - MOVOA X1,320(SP) - MOVOA X2,336(SP) - MOVOA X13,X1 - PADDL X12,X1 - MOVOA X1,X2 - PSLLL $7,X1 - PXOR X1,X14 - PSRLL $25,X2 - PXOR X2,X14 - MOVOA X7,X1 - PADDL X0,X1 - MOVOA X1,X2 - PSLLL $7,X1 - PXOR X1,X11 - PSRLL $25,X2 - PXOR X2,X11 - MOVOA X12,X1 - PADDL X14,X1 - MOVOA X1,X2 - PSLLL $9,X1 - PXOR X1,X15 - PSRLL $23,X2 - PXOR X2,X15 - MOVOA X0,X1 - PADDL X11,X1 - MOVOA X1,X2 - PSLLL $9,X1 - PXOR X1,X9 - PSRLL $23,X2 - PXOR X2,X9 - MOVOA X14,X1 - PADDL X15,X1 - MOVOA X1,X2 - PSLLL $13,X1 - PXOR X1,X13 - PSRLL $19,X2 - PXOR X2,X13 - MOVOA X11,X1 - PADDL X9,X1 - MOVOA X1,X2 - PSLLL $13,X1 - PXOR X1,X7 - PSRLL $19,X2 - PXOR X2,X7 - MOVOA X15,X1 - PADDL X13,X1 - MOVOA X1,X2 - PSLLL $18,X1 - PXOR X1,X12 - PSRLL $14,X2 - PXOR X2,X12 - MOVOA 320(SP),X1 - MOVOA X12,320(SP) - MOVOA X9,X2 - PADDL X7,X2 - MOVOA X2,X12 - PSLLL $18,X2 - PXOR X2,X0 - PSRLL $14,X12 - PXOR X12,X0 - MOVOA X5,X2 - PADDL X1,X2 - MOVOA X2,X12 - PSLLL $7,X2 - PXOR X2,X3 - PSRLL $25,X12 - PXOR X12,X3 - MOVOA 336(SP),X2 - MOVOA X0,336(SP) - MOVOA X6,X0 - PADDL X2,X0 - MOVOA X0,X12 - PSLLL $7,X0 - PXOR X0,X4 - PSRLL $25,X12 - PXOR X12,X4 - MOVOA X1,X0 - PADDL X3,X0 - MOVOA X0,X12 - PSLLL $9,X0 - PXOR X0,X10 - PSRLL $23,X12 - PXOR X12,X10 - MOVOA X2,X0 - PADDL X4,X0 - MOVOA X0,X12 - PSLLL $9,X0 - PXOR X0,X8 - PSRLL $23,X12 - PXOR X12,X8 - MOVOA X3,X0 - PADDL X10,X0 - MOVOA X0,X12 - PSLLL $13,X0 - PXOR X0,X5 - PSRLL $19,X12 - PXOR X12,X5 - MOVOA X4,X0 - PADDL X8,X0 - MOVOA X0,X12 - PSLLL $13,X0 - PXOR X0,X6 - PSRLL $19,X12 - PXOR X12,X6 - MOVOA X10,X0 - PADDL X5,X0 - MOVOA X0,X12 - PSLLL $18,X0 - PXOR X0,X1 - PSRLL $14,X12 - PXOR X12,X1 - MOVOA 320(SP),X0 - MOVOA X1,320(SP) - MOVOA X4,X1 - PADDL X0,X1 - MOVOA X1,X12 - PSLLL $7,X1 - PXOR X1,X7 - PSRLL $25,X12 - PXOR X12,X7 - MOVOA X8,X1 - PADDL X6,X1 - MOVOA X1,X12 - PSLLL $18,X1 - PXOR X1,X2 - PSRLL $14,X12 - PXOR X12,X2 - MOVOA 336(SP),X12 - MOVOA X2,336(SP) - MOVOA X14,X1 - PADDL X12,X1 - MOVOA X1,X2 - PSLLL $7,X1 - PXOR X1,X5 - PSRLL $25,X2 - PXOR X2,X5 - MOVOA X0,X1 - PADDL X7,X1 - MOVOA X1,X2 - PSLLL $9,X1 - PXOR X1,X10 - PSRLL $23,X2 - PXOR X2,X10 - MOVOA X12,X1 - PADDL X5,X1 - MOVOA X1,X2 - PSLLL $9,X1 - PXOR X1,X8 - PSRLL $23,X2 - PXOR X2,X8 - MOVOA X7,X1 - PADDL X10,X1 - MOVOA X1,X2 - PSLLL $13,X1 - PXOR X1,X4 - PSRLL $19,X2 - PXOR X2,X4 - MOVOA X5,X1 - PADDL X8,X1 - MOVOA X1,X2 - PSLLL $13,X1 - PXOR X1,X14 - PSRLL $19,X2 - PXOR X2,X14 - MOVOA X10,X1 - PADDL X4,X1 - MOVOA X1,X2 - PSLLL $18,X1 - PXOR X1,X0 - PSRLL $14,X2 - PXOR X2,X0 - MOVOA 320(SP),X1 - MOVOA X0,320(SP) - MOVOA X8,X0 - PADDL X14,X0 - MOVOA X0,X2 - PSLLL $18,X0 - PXOR X0,X12 - PSRLL $14,X2 - PXOR X2,X12 - MOVOA X11,X0 - PADDL X1,X0 - MOVOA X0,X2 - PSLLL $7,X0 - PXOR X0,X6 - PSRLL $25,X2 - PXOR X2,X6 - MOVOA 336(SP),X2 - MOVOA X12,336(SP) - MOVOA X3,X0 - PADDL X2,X0 - MOVOA X0,X12 - PSLLL $7,X0 - PXOR X0,X13 - PSRLL $25,X12 - PXOR X12,X13 - MOVOA X1,X0 - PADDL X6,X0 - MOVOA X0,X12 - PSLLL $9,X0 - PXOR X0,X15 - PSRLL $23,X12 - PXOR X12,X15 - MOVOA X2,X0 - PADDL X13,X0 - MOVOA X0,X12 - PSLLL $9,X0 - PXOR X0,X9 - PSRLL $23,X12 - PXOR X12,X9 - MOVOA X6,X0 - PADDL X15,X0 - MOVOA X0,X12 - PSLLL $13,X0 - PXOR X0,X11 - PSRLL $19,X12 - PXOR X12,X11 - MOVOA X13,X0 - PADDL X9,X0 - MOVOA X0,X12 - PSLLL $13,X0 - PXOR X0,X3 - PSRLL $19,X12 - PXOR X12,X3 - MOVOA X15,X0 - PADDL X11,X0 - MOVOA X0,X12 - PSLLL $18,X0 - PXOR X0,X1 - PSRLL $14,X12 - PXOR X12,X1 - MOVOA X9,X0 - PADDL X3,X0 - MOVOA X0,X12 - PSLLL $18,X0 - PXOR X0,X2 - PSRLL $14,X12 - PXOR X12,X2 - MOVOA 320(SP),X12 - MOVOA 336(SP),X0 - SUBQ $2,DX - JA MAINLOOP1 - PADDL 112(SP),X12 - PADDL 176(SP),X7 - PADDL 224(SP),X10 - PADDL 272(SP),X4 - MOVD X12,DX - MOVD X7,CX - MOVD X10,R8 - MOVD X4,R9 - PSHUFL $0X39,X12,X12 - PSHUFL $0X39,X7,X7 - PSHUFL $0X39,X10,X10 - PSHUFL $0X39,X4,X4 - XORL 0(SI),DX - XORL 4(SI),CX - XORL 8(SI),R8 - XORL 12(SI),R9 - MOVL DX,0(DI) - MOVL CX,4(DI) - MOVL R8,8(DI) - MOVL R9,12(DI) - MOVD X12,DX - MOVD X7,CX - MOVD X10,R8 - MOVD X4,R9 - PSHUFL $0X39,X12,X12 - PSHUFL $0X39,X7,X7 - PSHUFL $0X39,X10,X10 - PSHUFL $0X39,X4,X4 - XORL 64(SI),DX - XORL 68(SI),CX - XORL 72(SI),R8 - XORL 76(SI),R9 - MOVL DX,64(DI) - MOVL CX,68(DI) - MOVL R8,72(DI) - MOVL R9,76(DI) - MOVD X12,DX - MOVD X7,CX - MOVD X10,R8 - MOVD X4,R9 - PSHUFL $0X39,X12,X12 - PSHUFL $0X39,X7,X7 - PSHUFL $0X39,X10,X10 - PSHUFL $0X39,X4,X4 - XORL 128(SI),DX - XORL 132(SI),CX - XORL 136(SI),R8 - XORL 140(SI),R9 - MOVL DX,128(DI) - MOVL CX,132(DI) - MOVL R8,136(DI) - MOVL R9,140(DI) - MOVD X12,DX - MOVD X7,CX - MOVD X10,R8 - MOVD X4,R9 - XORL 192(SI),DX - XORL 196(SI),CX - XORL 200(SI),R8 - XORL 204(SI),R9 - MOVL DX,192(DI) - MOVL CX,196(DI) - MOVL R8,200(DI) - MOVL R9,204(DI) - PADDL 240(SP),X14 - PADDL 64(SP),X0 - PADDL 128(SP),X5 - PADDL 192(SP),X8 - MOVD X14,DX - MOVD X0,CX - MOVD X5,R8 - MOVD X8,R9 - PSHUFL $0X39,X14,X14 - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X5,X5 - PSHUFL $0X39,X8,X8 - XORL 16(SI),DX - XORL 20(SI),CX - XORL 24(SI),R8 - XORL 28(SI),R9 - MOVL DX,16(DI) - MOVL CX,20(DI) - MOVL R8,24(DI) - MOVL R9,28(DI) - MOVD X14,DX - MOVD X0,CX - MOVD X5,R8 - MOVD X8,R9 - PSHUFL $0X39,X14,X14 - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X5,X5 - PSHUFL $0X39,X8,X8 - XORL 80(SI),DX - XORL 84(SI),CX - XORL 88(SI),R8 - XORL 92(SI),R9 - MOVL DX,80(DI) - MOVL CX,84(DI) - MOVL R8,88(DI) - MOVL R9,92(DI) - MOVD X14,DX - MOVD X0,CX - MOVD X5,R8 - MOVD X8,R9 - PSHUFL $0X39,X14,X14 - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X5,X5 - PSHUFL $0X39,X8,X8 - XORL 144(SI),DX - XORL 148(SI),CX - XORL 152(SI),R8 - XORL 156(SI),R9 - MOVL DX,144(DI) - MOVL CX,148(DI) - MOVL R8,152(DI) - MOVL R9,156(DI) - MOVD X14,DX - MOVD X0,CX - MOVD X5,R8 - MOVD X8,R9 - XORL 208(SI),DX - XORL 212(SI),CX - XORL 216(SI),R8 - XORL 220(SI),R9 - MOVL DX,208(DI) - MOVL CX,212(DI) - MOVL R8,216(DI) - MOVL R9,220(DI) - PADDL 288(SP),X15 - PADDL 304(SP),X11 - PADDL 80(SP),X1 - PADDL 144(SP),X6 - MOVD X15,DX - MOVD X11,CX - MOVD X1,R8 - MOVD X6,R9 - PSHUFL $0X39,X15,X15 - PSHUFL $0X39,X11,X11 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X6,X6 - XORL 32(SI),DX - XORL 36(SI),CX - XORL 40(SI),R8 - XORL 44(SI),R9 - MOVL DX,32(DI) - MOVL CX,36(DI) - MOVL R8,40(DI) - MOVL R9,44(DI) - MOVD X15,DX - MOVD X11,CX - MOVD X1,R8 - MOVD X6,R9 - PSHUFL $0X39,X15,X15 - PSHUFL $0X39,X11,X11 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X6,X6 - XORL 96(SI),DX - XORL 100(SI),CX - XORL 104(SI),R8 - XORL 108(SI),R9 - MOVL DX,96(DI) - MOVL CX,100(DI) - MOVL R8,104(DI) - MOVL R9,108(DI) - MOVD X15,DX - MOVD X11,CX - MOVD X1,R8 - MOVD X6,R9 - PSHUFL $0X39,X15,X15 - PSHUFL $0X39,X11,X11 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X6,X6 - XORL 160(SI),DX - XORL 164(SI),CX - XORL 168(SI),R8 - XORL 172(SI),R9 - MOVL DX,160(DI) - MOVL CX,164(DI) - MOVL R8,168(DI) - MOVL R9,172(DI) - MOVD X15,DX - MOVD X11,CX - MOVD X1,R8 - MOVD X6,R9 - XORL 224(SI),DX - XORL 228(SI),CX - XORL 232(SI),R8 - XORL 236(SI),R9 - MOVL DX,224(DI) - MOVL CX,228(DI) - MOVL R8,232(DI) - MOVL R9,236(DI) - PADDL 160(SP),X13 - PADDL 208(SP),X9 - PADDL 256(SP),X3 - PADDL 96(SP),X2 - MOVD X13,DX - MOVD X9,CX - MOVD X3,R8 - MOVD X2,R9 - PSHUFL $0X39,X13,X13 - PSHUFL $0X39,X9,X9 - PSHUFL $0X39,X3,X3 - PSHUFL $0X39,X2,X2 - XORL 48(SI),DX - XORL 52(SI),CX - XORL 56(SI),R8 - XORL 60(SI),R9 - MOVL DX,48(DI) - MOVL CX,52(DI) - MOVL R8,56(DI) - MOVL R9,60(DI) - MOVD X13,DX - MOVD X9,CX - MOVD X3,R8 - MOVD X2,R9 - PSHUFL $0X39,X13,X13 - PSHUFL $0X39,X9,X9 - PSHUFL $0X39,X3,X3 - PSHUFL $0X39,X2,X2 - XORL 112(SI),DX - XORL 116(SI),CX - XORL 120(SI),R8 - XORL 124(SI),R9 - MOVL DX,112(DI) - MOVL CX,116(DI) - MOVL R8,120(DI) - MOVL R9,124(DI) - MOVD X13,DX - MOVD X9,CX - MOVD X3,R8 - MOVD X2,R9 - PSHUFL $0X39,X13,X13 - PSHUFL $0X39,X9,X9 - PSHUFL $0X39,X3,X3 - PSHUFL $0X39,X2,X2 - XORL 176(SI),DX - XORL 180(SI),CX - XORL 184(SI),R8 - XORL 188(SI),R9 - MOVL DX,176(DI) - MOVL CX,180(DI) - MOVL R8,184(DI) - MOVL R9,188(DI) - MOVD X13,DX - MOVD X9,CX - MOVD X3,R8 - MOVD X2,R9 - XORL 240(SI),DX - XORL 244(SI),CX - XORL 248(SI),R8 - XORL 252(SI),R9 - MOVL DX,240(DI) - MOVL CX,244(DI) - MOVL R8,248(DI) - MOVL R9,252(DI) - MOVQ 352(SP),R9 - SUBQ $256,R9 - ADDQ $256,SI - ADDQ $256,DI - CMPQ R9,$256 - JAE BYTESATLEAST256 - CMPQ R9,$0 - JBE DONE - BYTESBETWEEN1AND255: - CMPQ R9,$64 - JAE NOCOPY - MOVQ DI,DX - LEAQ 360(SP),DI - MOVQ R9,CX - REP; MOVSB - LEAQ 360(SP),DI - LEAQ 360(SP),SI - NOCOPY: - MOVQ R9,352(SP) - MOVOA 48(SP),X0 - MOVOA 0(SP),X1 - MOVOA 16(SP),X2 - MOVOA 32(SP),X3 - MOVOA X1,X4 - MOVQ $20,CX - MAINLOOP2: - PADDL X0,X4 - MOVOA X0,X5 - MOVOA X4,X6 - PSLLL $7,X4 - PSRLL $25,X6 - PXOR X4,X3 - PXOR X6,X3 - PADDL X3,X5 - MOVOA X3,X4 - MOVOA X5,X6 - PSLLL $9,X5 - PSRLL $23,X6 - PXOR X5,X2 - PSHUFL $0X93,X3,X3 - PXOR X6,X2 - PADDL X2,X4 - MOVOA X2,X5 - MOVOA X4,X6 - PSLLL $13,X4 - PSRLL $19,X6 - PXOR X4,X1 - PSHUFL $0X4E,X2,X2 - PXOR X6,X1 - PADDL X1,X5 - MOVOA X3,X4 - MOVOA X5,X6 - PSLLL $18,X5 - PSRLL $14,X6 - PXOR X5,X0 - PSHUFL $0X39,X1,X1 - PXOR X6,X0 - PADDL X0,X4 - MOVOA X0,X5 - MOVOA X4,X6 - PSLLL $7,X4 - PSRLL $25,X6 - PXOR X4,X1 - PXOR X6,X1 - PADDL X1,X5 - MOVOA X1,X4 - MOVOA X5,X6 - PSLLL $9,X5 - PSRLL $23,X6 - PXOR X5,X2 - PSHUFL $0X93,X1,X1 - PXOR X6,X2 - PADDL X2,X4 - MOVOA X2,X5 - MOVOA X4,X6 - PSLLL $13,X4 - PSRLL $19,X6 - PXOR X4,X3 - PSHUFL $0X4E,X2,X2 - PXOR X6,X3 - PADDL X3,X5 - MOVOA X1,X4 - MOVOA X5,X6 - PSLLL $18,X5 - PSRLL $14,X6 - PXOR X5,X0 - PSHUFL $0X39,X3,X3 - PXOR X6,X0 - PADDL X0,X4 - MOVOA X0,X5 - MOVOA X4,X6 - PSLLL $7,X4 - PSRLL $25,X6 - PXOR X4,X3 - PXOR X6,X3 - PADDL X3,X5 - MOVOA X3,X4 - MOVOA X5,X6 - PSLLL $9,X5 - PSRLL $23,X6 - PXOR X5,X2 - PSHUFL $0X93,X3,X3 - PXOR X6,X2 - PADDL X2,X4 - MOVOA X2,X5 - MOVOA X4,X6 - PSLLL $13,X4 - PSRLL $19,X6 - PXOR X4,X1 - PSHUFL $0X4E,X2,X2 - PXOR X6,X1 - PADDL X1,X5 - MOVOA X3,X4 - MOVOA X5,X6 - PSLLL $18,X5 - PSRLL $14,X6 - PXOR X5,X0 - PSHUFL $0X39,X1,X1 - PXOR X6,X0 - PADDL X0,X4 - MOVOA X0,X5 - MOVOA X4,X6 - PSLLL $7,X4 - PSRLL $25,X6 - PXOR X4,X1 - PXOR X6,X1 - PADDL X1,X5 - MOVOA X1,X4 - MOVOA X5,X6 - PSLLL $9,X5 - PSRLL $23,X6 - PXOR X5,X2 - PSHUFL $0X93,X1,X1 - PXOR X6,X2 - PADDL X2,X4 - MOVOA X2,X5 - MOVOA X4,X6 - PSLLL $13,X4 - PSRLL $19,X6 - PXOR X4,X3 - PSHUFL $0X4E,X2,X2 - PXOR X6,X3 - SUBQ $4,CX - PADDL X3,X5 - MOVOA X1,X4 - MOVOA X5,X6 - PSLLL $18,X5 - PXOR X7,X7 - PSRLL $14,X6 - PXOR X5,X0 - PSHUFL $0X39,X3,X3 - PXOR X6,X0 - JA MAINLOOP2 - PADDL 48(SP),X0 - PADDL 0(SP),X1 - PADDL 16(SP),X2 - PADDL 32(SP),X3 - MOVD X0,CX - MOVD X1,R8 - MOVD X2,R9 - MOVD X3,AX - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X2,X2 - PSHUFL $0X39,X3,X3 - XORL 0(SI),CX - XORL 48(SI),R8 - XORL 32(SI),R9 - XORL 16(SI),AX - MOVL CX,0(DI) - MOVL R8,48(DI) - MOVL R9,32(DI) - MOVL AX,16(DI) - MOVD X0,CX - MOVD X1,R8 - MOVD X2,R9 - MOVD X3,AX - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X2,X2 - PSHUFL $0X39,X3,X3 - XORL 20(SI),CX - XORL 4(SI),R8 - XORL 52(SI),R9 - XORL 36(SI),AX - MOVL CX,20(DI) - MOVL R8,4(DI) - MOVL R9,52(DI) - MOVL AX,36(DI) - MOVD X0,CX - MOVD X1,R8 - MOVD X2,R9 - MOVD X3,AX - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X2,X2 - PSHUFL $0X39,X3,X3 - XORL 40(SI),CX - XORL 24(SI),R8 - XORL 8(SI),R9 - XORL 56(SI),AX - MOVL CX,40(DI) - MOVL R8,24(DI) - MOVL R9,8(DI) - MOVL AX,56(DI) - MOVD X0,CX - MOVD X1,R8 - MOVD X2,R9 - MOVD X3,AX - XORL 60(SI),CX - XORL 44(SI),R8 - XORL 28(SI),R9 - XORL 12(SI),AX - MOVL CX,60(DI) - MOVL R8,44(DI) - MOVL R9,28(DI) - MOVL AX,12(DI) - MOVQ 352(SP),R9 - MOVL 16(SP),CX - MOVL 36 (SP),R8 - ADDQ $1,CX - SHLQ $32,R8 - ADDQ R8,CX - MOVQ CX,R8 - SHRQ $32,R8 - MOVL CX,16(SP) - MOVL R8, 36 (SP) - CMPQ R9,$64 - JA BYTESATLEAST65 - JAE BYTESATLEAST64 - MOVQ DI,SI - MOVQ DX,DI - MOVQ R9,CX - REP; MOVSB - BYTESATLEAST64: - DONE: - MOVQ R12,SP - RET - BYTESATLEAST65: - SUBQ $64,R9 - ADDQ $64,DI - ADDQ $64,SI - JMP BYTESBETWEEN1AND255 diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go deleted file mode 100644 index 9bfc0927..00000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go +++ /dev/null @@ -1,199 +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 salsa - -// Core208 applies the Salsa20/8 core function to the 64-byte array in and puts -// the result into the 64-byte array out. The input and output may be the same array. -func Core208(out *[64]byte, in *[64]byte) { - j0 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 - j1 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 - j2 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 - j3 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 - j4 := uint32(in[16]) | uint32(in[17])<<8 | uint32(in[18])<<16 | uint32(in[19])<<24 - j5 := uint32(in[20]) | uint32(in[21])<<8 | uint32(in[22])<<16 | uint32(in[23])<<24 - j6 := uint32(in[24]) | uint32(in[25])<<8 | uint32(in[26])<<16 | uint32(in[27])<<24 - j7 := uint32(in[28]) | uint32(in[29])<<8 | uint32(in[30])<<16 | uint32(in[31])<<24 - j8 := uint32(in[32]) | uint32(in[33])<<8 | uint32(in[34])<<16 | uint32(in[35])<<24 - j9 := uint32(in[36]) | uint32(in[37])<<8 | uint32(in[38])<<16 | uint32(in[39])<<24 - j10 := uint32(in[40]) | uint32(in[41])<<8 | uint32(in[42])<<16 | uint32(in[43])<<24 - j11 := uint32(in[44]) | uint32(in[45])<<8 | uint32(in[46])<<16 | uint32(in[47])<<24 - j12 := uint32(in[48]) | uint32(in[49])<<8 | uint32(in[50])<<16 | uint32(in[51])<<24 - j13 := uint32(in[52]) | uint32(in[53])<<8 | uint32(in[54])<<16 | uint32(in[55])<<24 - j14 := uint32(in[56]) | uint32(in[57])<<8 | uint32(in[58])<<16 | uint32(in[59])<<24 - j15 := uint32(in[60]) | uint32(in[61])<<8 | uint32(in[62])<<16 | uint32(in[63])<<24 - - x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 - x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 - - for i := 0; i < 8; i += 2 { - u := x0 + x12 - x4 ^= u<<7 | u>>(32-7) - u = x4 + x0 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x4 - x12 ^= u<<13 | u>>(32-13) - u = x12 + x8 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x1 - x9 ^= u<<7 | u>>(32-7) - u = x9 + x5 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x9 - x1 ^= u<<13 | u>>(32-13) - u = x1 + x13 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x6 - x14 ^= u<<7 | u>>(32-7) - u = x14 + x10 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x14 - x6 ^= u<<13 | u>>(32-13) - u = x6 + x2 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x11 - x3 ^= u<<7 | u>>(32-7) - u = x3 + x15 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x3 - x11 ^= u<<13 | u>>(32-13) - u = x11 + x7 - x15 ^= u<<18 | u>>(32-18) - - u = x0 + x3 - x1 ^= u<<7 | u>>(32-7) - u = x1 + x0 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x1 - x3 ^= u<<13 | u>>(32-13) - u = x3 + x2 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x4 - x6 ^= u<<7 | u>>(32-7) - u = x6 + x5 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x6 - x4 ^= u<<13 | u>>(32-13) - u = x4 + x7 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x9 - x11 ^= u<<7 | u>>(32-7) - u = x11 + x10 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x11 - x9 ^= u<<13 | u>>(32-13) - u = x9 + x8 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x14 - x12 ^= u<<7 | u>>(32-7) - u = x12 + x15 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x12 - x14 ^= u<<13 | u>>(32-13) - u = x14 + x13 - x15 ^= u<<18 | u>>(32-18) - } - x0 += j0 - x1 += j1 - x2 += j2 - x3 += j3 - x4 += j4 - x5 += j5 - x6 += j6 - x7 += j7 - x8 += j8 - x9 += j9 - x10 += j10 - x11 += j11 - x12 += j12 - x13 += j13 - x14 += j14 - x15 += j15 - - out[0] = byte(x0) - out[1] = byte(x0 >> 8) - out[2] = byte(x0 >> 16) - out[3] = byte(x0 >> 24) - - out[4] = byte(x1) - out[5] = byte(x1 >> 8) - out[6] = byte(x1 >> 16) - out[7] = byte(x1 >> 24) - - out[8] = byte(x2) - out[9] = byte(x2 >> 8) - out[10] = byte(x2 >> 16) - out[11] = byte(x2 >> 24) - - out[12] = byte(x3) - out[13] = byte(x3 >> 8) - out[14] = byte(x3 >> 16) - out[15] = byte(x3 >> 24) - - out[16] = byte(x4) - out[17] = byte(x4 >> 8) - out[18] = byte(x4 >> 16) - out[19] = byte(x4 >> 24) - - out[20] = byte(x5) - out[21] = byte(x5 >> 8) - out[22] = byte(x5 >> 16) - out[23] = byte(x5 >> 24) - - out[24] = byte(x6) - out[25] = byte(x6 >> 8) - out[26] = byte(x6 >> 16) - out[27] = byte(x6 >> 24) - - out[28] = byte(x7) - out[29] = byte(x7 >> 8) - out[30] = byte(x7 >> 16) - out[31] = byte(x7 >> 24) - - out[32] = byte(x8) - out[33] = byte(x8 >> 8) - out[34] = byte(x8 >> 16) - out[35] = byte(x8 >> 24) - - out[36] = byte(x9) - out[37] = byte(x9 >> 8) - out[38] = byte(x9 >> 16) - out[39] = byte(x9 >> 24) - - out[40] = byte(x10) - out[41] = byte(x10 >> 8) - out[42] = byte(x10 >> 16) - out[43] = byte(x10 >> 24) - - out[44] = byte(x11) - out[45] = byte(x11 >> 8) - out[46] = byte(x11 >> 16) - out[47] = byte(x11 >> 24) - - out[48] = byte(x12) - out[49] = byte(x12 >> 8) - out[50] = byte(x12 >> 16) - out[51] = byte(x12 >> 24) - - out[52] = byte(x13) - out[53] = byte(x13 >> 8) - out[54] = byte(x13 >> 16) - out[55] = byte(x13 >> 24) - - out[56] = byte(x14) - out[57] = byte(x14 >> 8) - out[58] = byte(x14 >> 16) - out[59] = byte(x14 >> 24) - - out[60] = byte(x15) - out[61] = byte(x15 >> 8) - out[62] = byte(x15 >> 16) - out[63] = byte(x15 >> 24) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go deleted file mode 100644 index f9269c38..00000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go +++ /dev/null @@ -1,24 +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. - -// +build amd64,!appengine,!gccgo - -package salsa - -// This function is implemented in salsa2020_amd64.s. - -//go:noescape - -func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) - -// XORKeyStream crypts bytes from in to out using the given key and counters. -// In and out must overlap entirely or not at all. Counter -// contains the raw salsa20 counter bytes (both nonce and block counter). -func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { - if len(in) == 0 { - return - } - _ = out[len(in)-1] - salsa2020XORKeyStream(&out[0], &in[0], uint64(len(in)), &counter[0], &key[0]) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go deleted file mode 100644 index 22126d17..00000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go +++ /dev/null @@ -1,234 +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. - -// +build !amd64 appengine gccgo - -package salsa - -const rounds = 20 - -// core applies the Salsa20 core function to 16-byte input in, 32-byte key k, -// and 16-byte constant c, and puts the result into 64-byte array out. -func core(out *[64]byte, in *[16]byte, k *[32]byte, c *[16]byte) { - j0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 - j1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 - j2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 - j3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 - j4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 - j5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 - j6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 - j7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 - j8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 - j9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 - j10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 - j11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 - j12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 - j13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 - j14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 - j15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 - - x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 - x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 - - for i := 0; i < rounds; i += 2 { - u := x0 + x12 - x4 ^= u<<7 | u>>(32-7) - u = x4 + x0 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x4 - x12 ^= u<<13 | u>>(32-13) - u = x12 + x8 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x1 - x9 ^= u<<7 | u>>(32-7) - u = x9 + x5 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x9 - x1 ^= u<<13 | u>>(32-13) - u = x1 + x13 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x6 - x14 ^= u<<7 | u>>(32-7) - u = x14 + x10 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x14 - x6 ^= u<<13 | u>>(32-13) - u = x6 + x2 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x11 - x3 ^= u<<7 | u>>(32-7) - u = x3 + x15 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x3 - x11 ^= u<<13 | u>>(32-13) - u = x11 + x7 - x15 ^= u<<18 | u>>(32-18) - - u = x0 + x3 - x1 ^= u<<7 | u>>(32-7) - u = x1 + x0 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x1 - x3 ^= u<<13 | u>>(32-13) - u = x3 + x2 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x4 - x6 ^= u<<7 | u>>(32-7) - u = x6 + x5 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x6 - x4 ^= u<<13 | u>>(32-13) - u = x4 + x7 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x9 - x11 ^= u<<7 | u>>(32-7) - u = x11 + x10 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x11 - x9 ^= u<<13 | u>>(32-13) - u = x9 + x8 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x14 - x12 ^= u<<7 | u>>(32-7) - u = x12 + x15 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x12 - x14 ^= u<<13 | u>>(32-13) - u = x14 + x13 - x15 ^= u<<18 | u>>(32-18) - } - x0 += j0 - x1 += j1 - x2 += j2 - x3 += j3 - x4 += j4 - x5 += j5 - x6 += j6 - x7 += j7 - x8 += j8 - x9 += j9 - x10 += j10 - x11 += j11 - x12 += j12 - x13 += j13 - x14 += j14 - x15 += j15 - - out[0] = byte(x0) - out[1] = byte(x0 >> 8) - out[2] = byte(x0 >> 16) - out[3] = byte(x0 >> 24) - - out[4] = byte(x1) - out[5] = byte(x1 >> 8) - out[6] = byte(x1 >> 16) - out[7] = byte(x1 >> 24) - - out[8] = byte(x2) - out[9] = byte(x2 >> 8) - out[10] = byte(x2 >> 16) - out[11] = byte(x2 >> 24) - - out[12] = byte(x3) - out[13] = byte(x3 >> 8) - out[14] = byte(x3 >> 16) - out[15] = byte(x3 >> 24) - - out[16] = byte(x4) - out[17] = byte(x4 >> 8) - out[18] = byte(x4 >> 16) - out[19] = byte(x4 >> 24) - - out[20] = byte(x5) - out[21] = byte(x5 >> 8) - out[22] = byte(x5 >> 16) - out[23] = byte(x5 >> 24) - - out[24] = byte(x6) - out[25] = byte(x6 >> 8) - out[26] = byte(x6 >> 16) - out[27] = byte(x6 >> 24) - - out[28] = byte(x7) - out[29] = byte(x7 >> 8) - out[30] = byte(x7 >> 16) - out[31] = byte(x7 >> 24) - - out[32] = byte(x8) - out[33] = byte(x8 >> 8) - out[34] = byte(x8 >> 16) - out[35] = byte(x8 >> 24) - - out[36] = byte(x9) - out[37] = byte(x9 >> 8) - out[38] = byte(x9 >> 16) - out[39] = byte(x9 >> 24) - - out[40] = byte(x10) - out[41] = byte(x10 >> 8) - out[42] = byte(x10 >> 16) - out[43] = byte(x10 >> 24) - - out[44] = byte(x11) - out[45] = byte(x11 >> 8) - out[46] = byte(x11 >> 16) - out[47] = byte(x11 >> 24) - - out[48] = byte(x12) - out[49] = byte(x12 >> 8) - out[50] = byte(x12 >> 16) - out[51] = byte(x12 >> 24) - - out[52] = byte(x13) - out[53] = byte(x13 >> 8) - out[54] = byte(x13 >> 16) - out[55] = byte(x13 >> 24) - - out[56] = byte(x14) - out[57] = byte(x14 >> 8) - out[58] = byte(x14 >> 16) - out[59] = byte(x14 >> 24) - - out[60] = byte(x15) - out[61] = byte(x15 >> 8) - out[62] = byte(x15 >> 16) - out[63] = byte(x15 >> 24) -} - -// XORKeyStream crypts bytes from in to out using the given key and counters. -// In and out must overlap entirely or not at all. Counter -// contains the raw salsa20 counter bytes (both nonce and block counter). -func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { - var block [64]byte - var counterCopy [16]byte - copy(counterCopy[:], counter[:]) - - for len(in) >= 64 { - core(&block, &counterCopy, key, &Sigma) - for i, x := range block { - out[i] = in[i] ^ x - } - u := uint32(1) - for i := 8; i < 16; i++ { - u += uint32(counterCopy[i]) - counterCopy[i] = byte(u) - u >>= 8 - } - in = in[64:] - out = out[64:] - } - - if len(in) > 0 { - core(&block, &counterCopy, key, &Sigma) - for i, v := range in { - out[i] = v ^ block[i] - } - } -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa_test.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa_test.go deleted file mode 100644 index f67e94eb..00000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa_test.go +++ /dev/null @@ -1,54 +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 salsa - -import "testing" - -func TestCore208(t *testing.T) { - in := [64]byte{ - 0x7e, 0x87, 0x9a, 0x21, 0x4f, 0x3e, 0xc9, 0x86, - 0x7c, 0xa9, 0x40, 0xe6, 0x41, 0x71, 0x8f, 0x26, - 0xba, 0xee, 0x55, 0x5b, 0x8c, 0x61, 0xc1, 0xb5, - 0x0d, 0xf8, 0x46, 0x11, 0x6d, 0xcd, 0x3b, 0x1d, - 0xee, 0x24, 0xf3, 0x19, 0xdf, 0x9b, 0x3d, 0x85, - 0x14, 0x12, 0x1e, 0x4b, 0x5a, 0xc5, 0xaa, 0x32, - 0x76, 0x02, 0x1d, 0x29, 0x09, 0xc7, 0x48, 0x29, - 0xed, 0xeb, 0xc6, 0x8d, 0xb8, 0xb8, 0xc2, 0x5e} - - out := [64]byte{ - 0xa4, 0x1f, 0x85, 0x9c, 0x66, 0x08, 0xcc, 0x99, - 0x3b, 0x81, 0xca, 0xcb, 0x02, 0x0c, 0xef, 0x05, - 0x04, 0x4b, 0x21, 0x81, 0xa2, 0xfd, 0x33, 0x7d, - 0xfd, 0x7b, 0x1c, 0x63, 0x96, 0x68, 0x2f, 0x29, - 0xb4, 0x39, 0x31, 0x68, 0xe3, 0xc9, 0xe6, 0xbc, - 0xfe, 0x6b, 0xc5, 0xb7, 0xa0, 0x6d, 0x96, 0xba, - 0xe4, 0x24, 0xcc, 0x10, 0x2c, 0x91, 0x74, 0x5c, - 0x24, 0xad, 0x67, 0x3d, 0xc7, 0x61, 0x8f, 0x81, - } - - Core208(&in, &in) - if in != out { - t.Errorf("expected %x, got %x", out, in) - } -} - -func TestOutOfBoundsWrite(t *testing.T) { - // encrypted "0123456789" - cipherText := []byte{170, 166, 196, 104, 175, 121, 68, 44, 174, 51} - var counter [16]byte - var key [32]byte - want := "abcdefghij" - plainText := []byte(want) - defer func() { - err := recover() - if err == nil { - t.Error("XORKeyStream expected to panic on len(dst) < len(src), but didn't") - } - if plainText[3] == '3' { - t.Errorf("XORKeyStream did out of bounds write, want %v, got %v", want, string(plainText)) - } - }() - XORKeyStream(plainText[:3], cipherText, &counter, &key) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa20.go deleted file mode 100644 index 0ee62485..00000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa20.go +++ /dev/null @@ -1,54 +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 salsa20 implements the Salsa20 stream cipher as specified in https://cr.yp.to/snuffle/spec.pdf. - -Salsa20 differs from many other stream ciphers in that it is message orientated -rather than byte orientated. Keystream blocks are not preserved between calls, -therefore each side must encrypt/decrypt data with the same segmentation. - -Another aspect of this difference is that part of the counter is exposed as -a nonce in each call. Encrypting two different messages with the same (key, -nonce) pair leads to trivial plaintext recovery. This is analogous to -encrypting two different messages with the same key with a traditional stream -cipher. - -This package also implements XSalsa20: a version of Salsa20 with a 24-byte -nonce as specified in https://cr.yp.to/snuffle/xsalsa-20081128.pdf. Simply -passing a 24-byte slice as the nonce triggers XSalsa20. -*/ -package salsa20 // import "golang.org/x/crypto/salsa20" - -// TODO(agl): implement XORKeyStream12 and XORKeyStream8 - the reduced round variants of Salsa20. - -import ( - "golang.org/x/crypto/salsa20/salsa" -) - -// XORKeyStream crypts bytes from in to out using the given key and nonce. -// In and out must overlap entirely or not at all. Nonce must -// be either 8 or 24 bytes long. -func XORKeyStream(out, in []byte, nonce []byte, key *[32]byte) { - if len(out) < len(in) { - in = in[:len(out)] - } - - var subNonce [16]byte - - if len(nonce) == 24 { - var subKey [32]byte - var hNonce [16]byte - copy(hNonce[:], nonce[:16]) - salsa.HSalsa20(&subKey, &hNonce, key, &salsa.Sigma) - copy(subNonce[:], nonce[16:]) - key = &subKey - } else if len(nonce) == 8 { - copy(subNonce[:], nonce[:]) - } else { - panic("salsa20: nonce must be 8 or 24 bytes") - } - - salsa.XORKeyStream(out, in, &subNonce, key) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa20_test.go b/vendor/golang.org/x/crypto/salsa20/salsa20_test.go deleted file mode 100644 index 0ef3328e..00000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa20_test.go +++ /dev/null @@ -1,139 +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 salsa20 - -import ( - "bytes" - "encoding/hex" - "testing" -) - -func fromHex(s string) []byte { - ret, err := hex.DecodeString(s) - if err != nil { - panic(err) - } - return ret -} - -// testVectors was taken from set 6 of the ECRYPT test vectors: -// http://www.ecrypt.eu.org/stream/svn/viewcvs.cgi/ecrypt/trunk/submissions/salsa20/full/verified.test-vectors?logsort=rev&rev=210&view=markup -var testVectors = []struct { - key []byte - iv []byte - numBytes int - xor []byte -}{ - { - fromHex("0053A6F94C9FF24598EB3E91E4378ADD3083D6297CCF2275C81B6EC11467BA0D"), - fromHex("0D74DB42A91077DE"), - 131072, - fromHex("C349B6A51A3EC9B712EAED3F90D8BCEE69B7628645F251A996F55260C62EF31FD6C6B0AEA94E136C9D984AD2DF3578F78E457527B03A0450580DD874F63B1AB9"), - }, - { - fromHex("0558ABFE51A4F74A9DF04396E93C8FE23588DB2E81D4277ACD2073C6196CBF12"), - fromHex("167DE44BB21980E7"), - 131072, - fromHex("C3EAAF32836BACE32D04E1124231EF47E101367D6305413A0EEB07C60698A2876E4D031870A739D6FFDDD208597AFF0A47AC17EDB0167DD67EBA84F1883D4DFD"), - }, - { - fromHex("0A5DB00356A9FC4FA2F5489BEE4194E73A8DE03386D92C7FD22578CB1E71C417"), - fromHex("1F86ED54BB2289F0"), - 131072, - fromHex("3CD23C3DC90201ACC0CF49B440B6C417F0DC8D8410A716D5314C059E14B1A8D9A9FB8EA3D9C8DAE12B21402F674AA95C67B1FC514E994C9D3F3A6E41DFF5BBA6"), - }, - { - fromHex("0F62B5085BAE0154A7FA4DA0F34699EC3F92E5388BDE3184D72A7DD02376C91C"), - fromHex("288FF65DC42B92F9"), - 131072, - fromHex("E00EBCCD70D69152725F9987982178A2E2E139C7BCBE04CA8A0E99E318D9AB76F988C8549F75ADD790BA4F81C176DA653C1A043F11A958E169B6D2319F4EEC1A"), - }, -} - -func TestSalsa20(t *testing.T) { - var inBuf, outBuf []byte - var key [32]byte - - for i, test := range testVectors { - if test.numBytes%64 != 0 { - t.Errorf("#%d: numBytes is not a multiple of 64", i) - continue - } - - if test.numBytes > len(inBuf) { - inBuf = make([]byte, test.numBytes) - outBuf = make([]byte, test.numBytes) - } - in := inBuf[:test.numBytes] - out := outBuf[:test.numBytes] - copy(key[:], test.key) - XORKeyStream(out, in, test.iv, &key) - - var xor [64]byte - for len(out) > 0 { - for i := 0; i < 64; i++ { - xor[i] ^= out[i] - } - out = out[64:] - } - - if !bytes.Equal(xor[:], test.xor) { - t.Errorf("#%d: bad result", i) - } - } -} - -var xSalsa20TestData = []struct { - in, nonce, key, out []byte -}{ - { - []byte("Hello world!"), - []byte("24-byte nonce for xsalsa"), - []byte("this is 32-byte key for xsalsa20"), - []byte{0x00, 0x2d, 0x45, 0x13, 0x84, 0x3f, 0xc2, 0x40, 0xc4, 0x01, 0xe5, 0x41}, - }, - { - make([]byte, 64), - []byte("24-byte nonce for xsalsa"), - []byte("this is 32-byte key for xsalsa20"), - []byte{0x48, 0x48, 0x29, 0x7f, 0xeb, 0x1f, 0xb5, 0x2f, 0xb6, - 0x6d, 0x81, 0x60, 0x9b, 0xd5, 0x47, 0xfa, 0xbc, 0xbe, 0x70, - 0x26, 0xed, 0xc8, 0xb5, 0xe5, 0xe4, 0x49, 0xd0, 0x88, 0xbf, - 0xa6, 0x9c, 0x08, 0x8f, 0x5d, 0x8d, 0xa1, 0xd7, 0x91, 0x26, - 0x7c, 0x2c, 0x19, 0x5a, 0x7f, 0x8c, 0xae, 0x9c, 0x4b, 0x40, - 0x50, 0xd0, 0x8c, 0xe6, 0xd3, 0xa1, 0x51, 0xec, 0x26, 0x5f, - 0x3a, 0x58, 0xe4, 0x76, 0x48}, - }, -} - -func TestXSalsa20(t *testing.T) { - var key [32]byte - - for i, test := range xSalsa20TestData { - out := make([]byte, len(test.in)) - copy(key[:], test.key) - XORKeyStream(out, test.in, test.nonce, &key) - if !bytes.Equal(out, test.out) { - t.Errorf("%d: expected %x, got %x", i, test.out, out) - } - } -} - -var ( - keyArray [32]byte - key = &keyArray - nonce [8]byte - msg = make([]byte, 1<<10) -) - -func BenchmarkXOR1K(b *testing.B) { - b.StopTimer() - out := make([]byte, 1024) - b.StartTimer() - for i := 0; i < b.N; i++ { - XORKeyStream(out, msg[:1024], nonce[:], key) - } - b.SetBytes(1024) -} diff --git a/vendor/golang.org/x/crypto/scrypt/example_test.go b/vendor/golang.org/x/crypto/scrypt/example_test.go deleted file mode 100644 index 6736479b..00000000 --- a/vendor/golang.org/x/crypto/scrypt/example_test.go +++ /dev/null @@ -1,26 +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 scrypt_test - -import ( - "encoding/base64" - "fmt" - "log" - - "golang.org/x/crypto/scrypt" -) - -func Example() { - // DO NOT use this salt value; generate your own random salt. 8 bytes is - // a good length. - salt := []byte{0xc8, 0x28, 0xf2, 0x58, 0xa7, 0x6a, 0xad, 0x7b} - - dk, err := scrypt.Key([]byte("some password"), salt, 1<<15, 8, 1, 32) - if err != nil { - log.Fatal(err) - } - fmt.Println(base64.StdEncoding.EncodeToString(dk)) - // Output: lGnMz8io0AUkfzn6Pls1qX20Vs7PGN6sbYQ2TQgY12M= -} diff --git a/vendor/golang.org/x/crypto/scrypt/scrypt.go b/vendor/golang.org/x/crypto/scrypt/scrypt.go deleted file mode 100644 index ff28aaef..00000000 --- a/vendor/golang.org/x/crypto/scrypt/scrypt.go +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package scrypt implements the scrypt key derivation function as defined in -// Colin Percival's paper "Stronger Key Derivation via Sequential Memory-Hard -// Functions" (https://www.tarsnap.com/scrypt/scrypt.pdf). -package scrypt // import "golang.org/x/crypto/scrypt" - -import ( - "crypto/sha256" - "errors" - - "golang.org/x/crypto/pbkdf2" -) - -const maxInt = int(^uint(0) >> 1) - -// blockCopy copies n numbers from src into dst. -func blockCopy(dst, src []uint32, n int) { - copy(dst, src[:n]) -} - -// blockXOR XORs numbers from dst with n numbers from src. -func blockXOR(dst, src []uint32, n int) { - for i, v := range src[:n] { - dst[i] ^= v - } -} - -// salsaXOR applies Salsa20/8 to the XOR of 16 numbers from tmp and in, -// and puts the result into both both tmp and out. -func salsaXOR(tmp *[16]uint32, in, out []uint32) { - w0 := tmp[0] ^ in[0] - w1 := tmp[1] ^ in[1] - w2 := tmp[2] ^ in[2] - w3 := tmp[3] ^ in[3] - w4 := tmp[4] ^ in[4] - w5 := tmp[5] ^ in[5] - w6 := tmp[6] ^ in[6] - w7 := tmp[7] ^ in[7] - w8 := tmp[8] ^ in[8] - w9 := tmp[9] ^ in[9] - w10 := tmp[10] ^ in[10] - w11 := tmp[11] ^ in[11] - w12 := tmp[12] ^ in[12] - w13 := tmp[13] ^ in[13] - w14 := tmp[14] ^ in[14] - w15 := tmp[15] ^ in[15] - - x0, x1, x2, x3, x4, x5, x6, x7, x8 := w0, w1, w2, w3, w4, w5, w6, w7, w8 - x9, x10, x11, x12, x13, x14, x15 := w9, w10, w11, w12, w13, w14, w15 - - for i := 0; i < 8; i += 2 { - u := x0 + x12 - x4 ^= u<<7 | u>>(32-7) - u = x4 + x0 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x4 - x12 ^= u<<13 | u>>(32-13) - u = x12 + x8 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x1 - x9 ^= u<<7 | u>>(32-7) - u = x9 + x5 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x9 - x1 ^= u<<13 | u>>(32-13) - u = x1 + x13 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x6 - x14 ^= u<<7 | u>>(32-7) - u = x14 + x10 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x14 - x6 ^= u<<13 | u>>(32-13) - u = x6 + x2 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x11 - x3 ^= u<<7 | u>>(32-7) - u = x3 + x15 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x3 - x11 ^= u<<13 | u>>(32-13) - u = x11 + x7 - x15 ^= u<<18 | u>>(32-18) - - u = x0 + x3 - x1 ^= u<<7 | u>>(32-7) - u = x1 + x0 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x1 - x3 ^= u<<13 | u>>(32-13) - u = x3 + x2 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x4 - x6 ^= u<<7 | u>>(32-7) - u = x6 + x5 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x6 - x4 ^= u<<13 | u>>(32-13) - u = x4 + x7 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x9 - x11 ^= u<<7 | u>>(32-7) - u = x11 + x10 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x11 - x9 ^= u<<13 | u>>(32-13) - u = x9 + x8 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x14 - x12 ^= u<<7 | u>>(32-7) - u = x12 + x15 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x12 - x14 ^= u<<13 | u>>(32-13) - u = x14 + x13 - x15 ^= u<<18 | u>>(32-18) - } - x0 += w0 - x1 += w1 - x2 += w2 - x3 += w3 - x4 += w4 - x5 += w5 - x6 += w6 - x7 += w7 - x8 += w8 - x9 += w9 - x10 += w10 - x11 += w11 - x12 += w12 - x13 += w13 - x14 += w14 - x15 += w15 - - out[0], tmp[0] = x0, x0 - out[1], tmp[1] = x1, x1 - out[2], tmp[2] = x2, x2 - out[3], tmp[3] = x3, x3 - out[4], tmp[4] = x4, x4 - out[5], tmp[5] = x5, x5 - out[6], tmp[6] = x6, x6 - out[7], tmp[7] = x7, x7 - out[8], tmp[8] = x8, x8 - out[9], tmp[9] = x9, x9 - out[10], tmp[10] = x10, x10 - out[11], tmp[11] = x11, x11 - out[12], tmp[12] = x12, x12 - out[13], tmp[13] = x13, x13 - out[14], tmp[14] = x14, x14 - out[15], tmp[15] = x15, x15 -} - -func blockMix(tmp *[16]uint32, in, out []uint32, r int) { - blockCopy(tmp[:], in[(2*r-1)*16:], 16) - for i := 0; i < 2*r; i += 2 { - salsaXOR(tmp, in[i*16:], out[i*8:]) - salsaXOR(tmp, in[i*16+16:], out[i*8+r*16:]) - } -} - -func integer(b []uint32, r int) uint64 { - j := (2*r - 1) * 16 - return uint64(b[j]) | uint64(b[j+1])<<32 -} - -func smix(b []byte, r, N int, v, xy []uint32) { - var tmp [16]uint32 - x := xy - y := xy[32*r:] - - j := 0 - for i := 0; i < 32*r; i++ { - x[i] = uint32(b[j]) | uint32(b[j+1])<<8 | uint32(b[j+2])<<16 | uint32(b[j+3])<<24 - j += 4 - } - for i := 0; i < N; i += 2 { - blockCopy(v[i*(32*r):], x, 32*r) - blockMix(&tmp, x, y, r) - - blockCopy(v[(i+1)*(32*r):], y, 32*r) - blockMix(&tmp, y, x, r) - } - for i := 0; i < N; i += 2 { - j := int(integer(x, r) & uint64(N-1)) - blockXOR(x, v[j*(32*r):], 32*r) - blockMix(&tmp, x, y, r) - - j = int(integer(y, r) & uint64(N-1)) - blockXOR(y, v[j*(32*r):], 32*r) - blockMix(&tmp, y, x, r) - } - j = 0 - for _, v := range x[:32*r] { - b[j+0] = byte(v >> 0) - b[j+1] = byte(v >> 8) - b[j+2] = byte(v >> 16) - b[j+3] = byte(v >> 24) - j += 4 - } -} - -// Key derives a key from the password, salt, and cost parameters, returning -// a byte slice of length keyLen that can be used as cryptographic key. -// -// N is a CPU/memory cost parameter, which must be a power of two greater than 1. -// r and p must satisfy r * p < 2³⁰. If the parameters do not satisfy the -// limits, the function returns a nil byte slice and an error. -// -// For example, you can get a derived key for e.g. AES-256 (which needs a -// 32-byte key) by doing: -// -// dk, err := scrypt.Key([]byte("some password"), salt, 16384, 8, 1, 32) -// -// The recommended parameters for interactive logins as of 2017 are N=32768, r=8 -// and p=1. The parameters N, r, and p should be increased as memory latency and -// CPU parallelism increases; consider setting N to the highest power of 2 you -// can derive within 100 milliseconds. Remember to get a good random salt. -func Key(password, salt []byte, N, r, p, keyLen int) ([]byte, error) { - if N <= 1 || N&(N-1) != 0 { - return nil, errors.New("scrypt: N must be > 1 and a power of 2") - } - if uint64(r)*uint64(p) >= 1<<30 || r > maxInt/128/p || r > maxInt/256 || N > maxInt/128/r { - return nil, errors.New("scrypt: parameters are too large") - } - - xy := make([]uint32, 64*r) - v := make([]uint32, 32*N*r) - b := pbkdf2.Key(password, salt, 1, p*128*r, sha256.New) - - for i := 0; i < p; i++ { - smix(b[i*128*r:], r, N, v, xy) - } - - return pbkdf2.Key(password, b, 1, keyLen, sha256.New), nil -} diff --git a/vendor/golang.org/x/crypto/scrypt/scrypt_test.go b/vendor/golang.org/x/crypto/scrypt/scrypt_test.go deleted file mode 100644 index 766ed8d9..00000000 --- a/vendor/golang.org/x/crypto/scrypt/scrypt_test.go +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package scrypt - -import ( - "bytes" - "testing" -) - -type testVector struct { - password string - salt string - N, r, p int - output []byte -} - -var good = []testVector{ - { - "password", - "salt", - 2, 10, 10, - []byte{ - 0x48, 0x2c, 0x85, 0x8e, 0x22, 0x90, 0x55, 0xe6, 0x2f, - 0x41, 0xe0, 0xec, 0x81, 0x9a, 0x5e, 0xe1, 0x8b, 0xdb, - 0x87, 0x25, 0x1a, 0x53, 0x4f, 0x75, 0xac, 0xd9, 0x5a, - 0xc5, 0xe5, 0xa, 0xa1, 0x5f, - }, - }, - { - "password", - "salt", - 16, 100, 100, - []byte{ - 0x88, 0xbd, 0x5e, 0xdb, 0x52, 0xd1, 0xdd, 0x0, 0x18, - 0x87, 0x72, 0xad, 0x36, 0x17, 0x12, 0x90, 0x22, 0x4e, - 0x74, 0x82, 0x95, 0x25, 0xb1, 0x8d, 0x73, 0x23, 0xa5, - 0x7f, 0x91, 0x96, 0x3c, 0x37, - }, - }, - { - "this is a long \000 password", - "and this is a long \000 salt", - 16384, 8, 1, - []byte{ - 0xc3, 0xf1, 0x82, 0xee, 0x2d, 0xec, 0x84, 0x6e, 0x70, - 0xa6, 0x94, 0x2f, 0xb5, 0x29, 0x98, 0x5a, 0x3a, 0x09, - 0x76, 0x5e, 0xf0, 0x4c, 0x61, 0x29, 0x23, 0xb1, 0x7f, - 0x18, 0x55, 0x5a, 0x37, 0x07, 0x6d, 0xeb, 0x2b, 0x98, - 0x30, 0xd6, 0x9d, 0xe5, 0x49, 0x26, 0x51, 0xe4, 0x50, - 0x6a, 0xe5, 0x77, 0x6d, 0x96, 0xd4, 0x0f, 0x67, 0xaa, - 0xee, 0x37, 0xe1, 0x77, 0x7b, 0x8a, 0xd5, 0xc3, 0x11, - 0x14, 0x32, 0xbb, 0x3b, 0x6f, 0x7e, 0x12, 0x64, 0x40, - 0x18, 0x79, 0xe6, 0x41, 0xae, - }, - }, - { - "p", - "s", - 2, 1, 1, - []byte{ - 0x48, 0xb0, 0xd2, 0xa8, 0xa3, 0x27, 0x26, 0x11, 0x98, - 0x4c, 0x50, 0xeb, 0xd6, 0x30, 0xaf, 0x52, - }, - }, - - { - "", - "", - 16, 1, 1, - []byte{ - 0x77, 0xd6, 0x57, 0x62, 0x38, 0x65, 0x7b, 0x20, 0x3b, - 0x19, 0xca, 0x42, 0xc1, 0x8a, 0x04, 0x97, 0xf1, 0x6b, - 0x48, 0x44, 0xe3, 0x07, 0x4a, 0xe8, 0xdf, 0xdf, 0xfa, - 0x3f, 0xed, 0xe2, 0x14, 0x42, 0xfc, 0xd0, 0x06, 0x9d, - 0xed, 0x09, 0x48, 0xf8, 0x32, 0x6a, 0x75, 0x3a, 0x0f, - 0xc8, 0x1f, 0x17, 0xe8, 0xd3, 0xe0, 0xfb, 0x2e, 0x0d, - 0x36, 0x28, 0xcf, 0x35, 0xe2, 0x0c, 0x38, 0xd1, 0x89, - 0x06, - }, - }, - { - "password", - "NaCl", - 1024, 8, 16, - []byte{ - 0xfd, 0xba, 0xbe, 0x1c, 0x9d, 0x34, 0x72, 0x00, 0x78, - 0x56, 0xe7, 0x19, 0x0d, 0x01, 0xe9, 0xfe, 0x7c, 0x6a, - 0xd7, 0xcb, 0xc8, 0x23, 0x78, 0x30, 0xe7, 0x73, 0x76, - 0x63, 0x4b, 0x37, 0x31, 0x62, 0x2e, 0xaf, 0x30, 0xd9, - 0x2e, 0x22, 0xa3, 0x88, 0x6f, 0xf1, 0x09, 0x27, 0x9d, - 0x98, 0x30, 0xda, 0xc7, 0x27, 0xaf, 0xb9, 0x4a, 0x83, - 0xee, 0x6d, 0x83, 0x60, 0xcb, 0xdf, 0xa2, 0xcc, 0x06, - 0x40, - }, - }, - { - "pleaseletmein", "SodiumChloride", - 16384, 8, 1, - []byte{ - 0x70, 0x23, 0xbd, 0xcb, 0x3a, 0xfd, 0x73, 0x48, 0x46, - 0x1c, 0x06, 0xcd, 0x81, 0xfd, 0x38, 0xeb, 0xfd, 0xa8, - 0xfb, 0xba, 0x90, 0x4f, 0x8e, 0x3e, 0xa9, 0xb5, 0x43, - 0xf6, 0x54, 0x5d, 0xa1, 0xf2, 0xd5, 0x43, 0x29, 0x55, - 0x61, 0x3f, 0x0f, 0xcf, 0x62, 0xd4, 0x97, 0x05, 0x24, - 0x2a, 0x9a, 0xf9, 0xe6, 0x1e, 0x85, 0xdc, 0x0d, 0x65, - 0x1e, 0x40, 0xdf, 0xcf, 0x01, 0x7b, 0x45, 0x57, 0x58, - 0x87, - }, - }, - /* - // Disabled: needs 1 GiB RAM and takes too long for a simple test. - { - "pleaseletmein", "SodiumChloride", - 1048576, 8, 1, - []byte{ - 0x21, 0x01, 0xcb, 0x9b, 0x6a, 0x51, 0x1a, 0xae, 0xad, - 0xdb, 0xbe, 0x09, 0xcf, 0x70, 0xf8, 0x81, 0xec, 0x56, - 0x8d, 0x57, 0x4a, 0x2f, 0xfd, 0x4d, 0xab, 0xe5, 0xee, - 0x98, 0x20, 0xad, 0xaa, 0x47, 0x8e, 0x56, 0xfd, 0x8f, - 0x4b, 0xa5, 0xd0, 0x9f, 0xfa, 0x1c, 0x6d, 0x92, 0x7c, - 0x40, 0xf4, 0xc3, 0x37, 0x30, 0x40, 0x49, 0xe8, 0xa9, - 0x52, 0xfb, 0xcb, 0xf4, 0x5c, 0x6f, 0xa7, 0x7a, 0x41, - 0xa4, - }, - }, - */ -} - -var bad = []testVector{ - {"p", "s", 0, 1, 1, nil}, // N == 0 - {"p", "s", 1, 1, 1, nil}, // N == 1 - {"p", "s", 7, 8, 1, nil}, // N is not power of 2 - {"p", "s", 16, maxInt / 2, maxInt / 2, nil}, // p * r too large -} - -func TestKey(t *testing.T) { - for i, v := range good { - k, err := Key([]byte(v.password), []byte(v.salt), v.N, v.r, v.p, len(v.output)) - if err != nil { - t.Errorf("%d: got unexpected error: %s", i, err) - } - if !bytes.Equal(k, v.output) { - t.Errorf("%d: expected %x, got %x", i, v.output, k) - } - } - for i, v := range bad { - _, err := Key([]byte(v.password), []byte(v.salt), v.N, v.r, v.p, 32) - if err == nil { - t.Errorf("%d: expected error, got nil", i) - } - } -} - -var sink []byte - -func BenchmarkKey(b *testing.B) { - for i := 0; i < b.N; i++ { - sink, _ = Key([]byte("password"), []byte("salt"), 1<<15, 8, 1, 64) - } -} diff --git a/vendor/golang.org/x/crypto/sha3/doc.go b/vendor/golang.org/x/crypto/sha3/doc.go deleted file mode 100644 index a0ee3ae7..00000000 --- a/vendor/golang.org/x/crypto/sha3/doc.go +++ /dev/null @@ -1,66 +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 sha3 implements the SHA-3 fixed-output-length hash functions and -// the SHAKE variable-output-length hash functions defined by FIPS-202. -// -// Both types of hash function use the "sponge" construction and the Keccak -// permutation. For a detailed specification see http://keccak.noekeon.org/ -// -// -// Guidance -// -// If you aren't sure what function you need, use SHAKE256 with at least 64 -// bytes of output. The SHAKE instances are faster than the SHA3 instances; -// the latter have to allocate memory to conform to the hash.Hash interface. -// -// If you need a secret-key MAC (message authentication code), prepend the -// secret key to the input, hash with SHAKE256 and read at least 32 bytes of -// output. -// -// -// Security strengths -// -// The SHA3-x (x equals 224, 256, 384, or 512) functions have a security -// strength against preimage attacks of x bits. Since they only produce "x" -// bits of output, their collision-resistance is only "x/2" bits. -// -// The SHAKE-256 and -128 functions have a generic security strength of 256 and -// 128 bits against all attacks, provided that at least 2x bits of their output -// is used. Requesting more than 64 or 32 bytes of output, respectively, does -// not increase the collision-resistance of the SHAKE functions. -// -// -// The sponge construction -// -// A sponge builds a pseudo-random function from a public pseudo-random -// permutation, by applying the permutation to a state of "rate + capacity" -// bytes, but hiding "capacity" of the bytes. -// -// A sponge starts out with a zero state. To hash an input using a sponge, up -// to "rate" bytes of the input are XORed into the sponge's state. The sponge -// is then "full" and the permutation is applied to "empty" it. This process is -// repeated until all the input has been "absorbed". The input is then padded. -// The digest is "squeezed" from the sponge in the same way, except that output -// output is copied out instead of input being XORed in. -// -// A sponge is parameterized by its generic security strength, which is equal -// to half its capacity; capacity + rate is equal to the permutation's width. -// Since the KeccakF-1600 permutation is 1600 bits (200 bytes) wide, this means -// that the security strength of a sponge instance is equal to (1600 - bitrate) / 2. -// -// -// Recommendations -// -// The SHAKE functions are recommended for most new uses. They can produce -// output of arbitrary length. SHAKE256, with an output length of at least -// 64 bytes, provides 256-bit security against all attacks. The Keccak team -// recommends it for most applications upgrading from SHA2-512. (NIST chose a -// much stronger, but much slower, sponge instance for SHA3-512.) -// -// The SHA-3 functions are "drop-in" replacements for the SHA-2 functions. -// They produce output of the same length, with the same security strengths -// against all attacks. This means, in particular, that SHA3-256 only has -// 128-bit collision resistance, because its output length is 32 bytes. -package sha3 // import "golang.org/x/crypto/sha3" diff --git a/vendor/golang.org/x/crypto/sha3/hashes.go b/vendor/golang.org/x/crypto/sha3/hashes.go deleted file mode 100644 index 2b51cf4e..00000000 --- a/vendor/golang.org/x/crypto/sha3/hashes.go +++ /dev/null @@ -1,65 +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 sha3 - -// This file provides functions for creating instances of the SHA-3 -// and SHAKE hash functions, as well as utility functions for hashing -// bytes. - -import ( - "hash" -) - -// New224 creates a new SHA3-224 hash. -// Its generic security strength is 224 bits against preimage attacks, -// and 112 bits against collision attacks. -func New224() hash.Hash { return &state{rate: 144, outputLen: 28, dsbyte: 0x06} } - -// New256 creates a new SHA3-256 hash. -// Its generic security strength is 256 bits against preimage attacks, -// and 128 bits against collision attacks. -func New256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x06} } - -// New384 creates a new SHA3-384 hash. -// Its generic security strength is 384 bits against preimage attacks, -// and 192 bits against collision attacks. -func New384() hash.Hash { return &state{rate: 104, outputLen: 48, dsbyte: 0x06} } - -// New512 creates a new SHA3-512 hash. -// Its generic security strength is 512 bits against preimage attacks, -// and 256 bits against collision attacks. -func New512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x06} } - -// Sum224 returns the SHA3-224 digest of the data. -func Sum224(data []byte) (digest [28]byte) { - h := New224() - h.Write(data) - h.Sum(digest[:0]) - return -} - -// Sum256 returns the SHA3-256 digest of the data. -func Sum256(data []byte) (digest [32]byte) { - h := New256() - h.Write(data) - h.Sum(digest[:0]) - return -} - -// Sum384 returns the SHA3-384 digest of the data. -func Sum384(data []byte) (digest [48]byte) { - h := New384() - h.Write(data) - h.Sum(digest[:0]) - return -} - -// Sum512 returns the SHA3-512 digest of the data. -func Sum512(data []byte) (digest [64]byte) { - h := New512() - h.Write(data) - h.Sum(digest[:0]) - return -} diff --git a/vendor/golang.org/x/crypto/sha3/keccakf.go b/vendor/golang.org/x/crypto/sha3/keccakf.go deleted file mode 100644 index 46d03ed3..00000000 --- a/vendor/golang.org/x/crypto/sha3/keccakf.go +++ /dev/null @@ -1,412 +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. - -// +build !amd64 appengine gccgo - -package sha3 - -// rc stores the round constants for use in the ι step. -var rc = [24]uint64{ - 0x0000000000000001, - 0x0000000000008082, - 0x800000000000808A, - 0x8000000080008000, - 0x000000000000808B, - 0x0000000080000001, - 0x8000000080008081, - 0x8000000000008009, - 0x000000000000008A, - 0x0000000000000088, - 0x0000000080008009, - 0x000000008000000A, - 0x000000008000808B, - 0x800000000000008B, - 0x8000000000008089, - 0x8000000000008003, - 0x8000000000008002, - 0x8000000000000080, - 0x000000000000800A, - 0x800000008000000A, - 0x8000000080008081, - 0x8000000000008080, - 0x0000000080000001, - 0x8000000080008008, -} - -// keccakF1600 applies the Keccak permutation to a 1600b-wide -// state represented as a slice of 25 uint64s. -func keccakF1600(a *[25]uint64) { - // Implementation translated from Keccak-inplace.c - // in the keccak reference code. - var t, bc0, bc1, bc2, bc3, bc4, d0, d1, d2, d3, d4 uint64 - - for i := 0; i < 24; i += 4 { - // Combines the 5 steps in each round into 2 steps. - // Unrolls 4 rounds per loop and spreads some steps across rounds. - - // Round 1 - bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] - bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] - bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] - bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] - bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] - d0 = bc4 ^ (bc1<<1 | bc1>>63) - d1 = bc0 ^ (bc2<<1 | bc2>>63) - d2 = bc1 ^ (bc3<<1 | bc3>>63) - d3 = bc2 ^ (bc4<<1 | bc4>>63) - d4 = bc3 ^ (bc0<<1 | bc0>>63) - - bc0 = a[0] ^ d0 - t = a[6] ^ d1 - bc1 = t<<44 | t>>(64-44) - t = a[12] ^ d2 - bc2 = t<<43 | t>>(64-43) - t = a[18] ^ d3 - bc3 = t<<21 | t>>(64-21) - t = a[24] ^ d4 - bc4 = t<<14 | t>>(64-14) - a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i] - a[6] = bc1 ^ (bc3 &^ bc2) - a[12] = bc2 ^ (bc4 &^ bc3) - a[18] = bc3 ^ (bc0 &^ bc4) - a[24] = bc4 ^ (bc1 &^ bc0) - - t = a[10] ^ d0 - bc2 = t<<3 | t>>(64-3) - t = a[16] ^ d1 - bc3 = t<<45 | t>>(64-45) - t = a[22] ^ d2 - bc4 = t<<61 | t>>(64-61) - t = a[3] ^ d3 - bc0 = t<<28 | t>>(64-28) - t = a[9] ^ d4 - bc1 = t<<20 | t>>(64-20) - a[10] = bc0 ^ (bc2 &^ bc1) - a[16] = bc1 ^ (bc3 &^ bc2) - a[22] = bc2 ^ (bc4 &^ bc3) - a[3] = bc3 ^ (bc0 &^ bc4) - a[9] = bc4 ^ (bc1 &^ bc0) - - t = a[20] ^ d0 - bc4 = t<<18 | t>>(64-18) - t = a[1] ^ d1 - bc0 = t<<1 | t>>(64-1) - t = a[7] ^ d2 - bc1 = t<<6 | t>>(64-6) - t = a[13] ^ d3 - bc2 = t<<25 | t>>(64-25) - t = a[19] ^ d4 - bc3 = t<<8 | t>>(64-8) - a[20] = bc0 ^ (bc2 &^ bc1) - a[1] = bc1 ^ (bc3 &^ bc2) - a[7] = bc2 ^ (bc4 &^ bc3) - a[13] = bc3 ^ (bc0 &^ bc4) - a[19] = bc4 ^ (bc1 &^ bc0) - - t = a[5] ^ d0 - bc1 = t<<36 | t>>(64-36) - t = a[11] ^ d1 - bc2 = t<<10 | t>>(64-10) - t = a[17] ^ d2 - bc3 = t<<15 | t>>(64-15) - t = a[23] ^ d3 - bc4 = t<<56 | t>>(64-56) - t = a[4] ^ d4 - bc0 = t<<27 | t>>(64-27) - a[5] = bc0 ^ (bc2 &^ bc1) - a[11] = bc1 ^ (bc3 &^ bc2) - a[17] = bc2 ^ (bc4 &^ bc3) - a[23] = bc3 ^ (bc0 &^ bc4) - a[4] = bc4 ^ (bc1 &^ bc0) - - t = a[15] ^ d0 - bc3 = t<<41 | t>>(64-41) - t = a[21] ^ d1 - bc4 = t<<2 | t>>(64-2) - t = a[2] ^ d2 - bc0 = t<<62 | t>>(64-62) - t = a[8] ^ d3 - bc1 = t<<55 | t>>(64-55) - t = a[14] ^ d4 - bc2 = t<<39 | t>>(64-39) - a[15] = bc0 ^ (bc2 &^ bc1) - a[21] = bc1 ^ (bc3 &^ bc2) - a[2] = bc2 ^ (bc4 &^ bc3) - a[8] = bc3 ^ (bc0 &^ bc4) - a[14] = bc4 ^ (bc1 &^ bc0) - - // Round 2 - bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] - bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] - bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] - bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] - bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] - d0 = bc4 ^ (bc1<<1 | bc1>>63) - d1 = bc0 ^ (bc2<<1 | bc2>>63) - d2 = bc1 ^ (bc3<<1 | bc3>>63) - d3 = bc2 ^ (bc4<<1 | bc4>>63) - d4 = bc3 ^ (bc0<<1 | bc0>>63) - - bc0 = a[0] ^ d0 - t = a[16] ^ d1 - bc1 = t<<44 | t>>(64-44) - t = a[7] ^ d2 - bc2 = t<<43 | t>>(64-43) - t = a[23] ^ d3 - bc3 = t<<21 | t>>(64-21) - t = a[14] ^ d4 - bc4 = t<<14 | t>>(64-14) - a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+1] - a[16] = bc1 ^ (bc3 &^ bc2) - a[7] = bc2 ^ (bc4 &^ bc3) - a[23] = bc3 ^ (bc0 &^ bc4) - a[14] = bc4 ^ (bc1 &^ bc0) - - t = a[20] ^ d0 - bc2 = t<<3 | t>>(64-3) - t = a[11] ^ d1 - bc3 = t<<45 | t>>(64-45) - t = a[2] ^ d2 - bc4 = t<<61 | t>>(64-61) - t = a[18] ^ d3 - bc0 = t<<28 | t>>(64-28) - t = a[9] ^ d4 - bc1 = t<<20 | t>>(64-20) - a[20] = bc0 ^ (bc2 &^ bc1) - a[11] = bc1 ^ (bc3 &^ bc2) - a[2] = bc2 ^ (bc4 &^ bc3) - a[18] = bc3 ^ (bc0 &^ bc4) - a[9] = bc4 ^ (bc1 &^ bc0) - - t = a[15] ^ d0 - bc4 = t<<18 | t>>(64-18) - t = a[6] ^ d1 - bc0 = t<<1 | t>>(64-1) - t = a[22] ^ d2 - bc1 = t<<6 | t>>(64-6) - t = a[13] ^ d3 - bc2 = t<<25 | t>>(64-25) - t = a[4] ^ d4 - bc3 = t<<8 | t>>(64-8) - a[15] = bc0 ^ (bc2 &^ bc1) - a[6] = bc1 ^ (bc3 &^ bc2) - a[22] = bc2 ^ (bc4 &^ bc3) - a[13] = bc3 ^ (bc0 &^ bc4) - a[4] = bc4 ^ (bc1 &^ bc0) - - t = a[10] ^ d0 - bc1 = t<<36 | t>>(64-36) - t = a[1] ^ d1 - bc2 = t<<10 | t>>(64-10) - t = a[17] ^ d2 - bc3 = t<<15 | t>>(64-15) - t = a[8] ^ d3 - bc4 = t<<56 | t>>(64-56) - t = a[24] ^ d4 - bc0 = t<<27 | t>>(64-27) - a[10] = bc0 ^ (bc2 &^ bc1) - a[1] = bc1 ^ (bc3 &^ bc2) - a[17] = bc2 ^ (bc4 &^ bc3) - a[8] = bc3 ^ (bc0 &^ bc4) - a[24] = bc4 ^ (bc1 &^ bc0) - - t = a[5] ^ d0 - bc3 = t<<41 | t>>(64-41) - t = a[21] ^ d1 - bc4 = t<<2 | t>>(64-2) - t = a[12] ^ d2 - bc0 = t<<62 | t>>(64-62) - t = a[3] ^ d3 - bc1 = t<<55 | t>>(64-55) - t = a[19] ^ d4 - bc2 = t<<39 | t>>(64-39) - a[5] = bc0 ^ (bc2 &^ bc1) - a[21] = bc1 ^ (bc3 &^ bc2) - a[12] = bc2 ^ (bc4 &^ bc3) - a[3] = bc3 ^ (bc0 &^ bc4) - a[19] = bc4 ^ (bc1 &^ bc0) - - // Round 3 - bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] - bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] - bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] - bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] - bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] - d0 = bc4 ^ (bc1<<1 | bc1>>63) - d1 = bc0 ^ (bc2<<1 | bc2>>63) - d2 = bc1 ^ (bc3<<1 | bc3>>63) - d3 = bc2 ^ (bc4<<1 | bc4>>63) - d4 = bc3 ^ (bc0<<1 | bc0>>63) - - bc0 = a[0] ^ d0 - t = a[11] ^ d1 - bc1 = t<<44 | t>>(64-44) - t = a[22] ^ d2 - bc2 = t<<43 | t>>(64-43) - t = a[8] ^ d3 - bc3 = t<<21 | t>>(64-21) - t = a[19] ^ d4 - bc4 = t<<14 | t>>(64-14) - a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+2] - a[11] = bc1 ^ (bc3 &^ bc2) - a[22] = bc2 ^ (bc4 &^ bc3) - a[8] = bc3 ^ (bc0 &^ bc4) - a[19] = bc4 ^ (bc1 &^ bc0) - - t = a[15] ^ d0 - bc2 = t<<3 | t>>(64-3) - t = a[1] ^ d1 - bc3 = t<<45 | t>>(64-45) - t = a[12] ^ d2 - bc4 = t<<61 | t>>(64-61) - t = a[23] ^ d3 - bc0 = t<<28 | t>>(64-28) - t = a[9] ^ d4 - bc1 = t<<20 | t>>(64-20) - a[15] = bc0 ^ (bc2 &^ bc1) - a[1] = bc1 ^ (bc3 &^ bc2) - a[12] = bc2 ^ (bc4 &^ bc3) - a[23] = bc3 ^ (bc0 &^ bc4) - a[9] = bc4 ^ (bc1 &^ bc0) - - t = a[5] ^ d0 - bc4 = t<<18 | t>>(64-18) - t = a[16] ^ d1 - bc0 = t<<1 | t>>(64-1) - t = a[2] ^ d2 - bc1 = t<<6 | t>>(64-6) - t = a[13] ^ d3 - bc2 = t<<25 | t>>(64-25) - t = a[24] ^ d4 - bc3 = t<<8 | t>>(64-8) - a[5] = bc0 ^ (bc2 &^ bc1) - a[16] = bc1 ^ (bc3 &^ bc2) - a[2] = bc2 ^ (bc4 &^ bc3) - a[13] = bc3 ^ (bc0 &^ bc4) - a[24] = bc4 ^ (bc1 &^ bc0) - - t = a[20] ^ d0 - bc1 = t<<36 | t>>(64-36) - t = a[6] ^ d1 - bc2 = t<<10 | t>>(64-10) - t = a[17] ^ d2 - bc3 = t<<15 | t>>(64-15) - t = a[3] ^ d3 - bc4 = t<<56 | t>>(64-56) - t = a[14] ^ d4 - bc0 = t<<27 | t>>(64-27) - a[20] = bc0 ^ (bc2 &^ bc1) - a[6] = bc1 ^ (bc3 &^ bc2) - a[17] = bc2 ^ (bc4 &^ bc3) - a[3] = bc3 ^ (bc0 &^ bc4) - a[14] = bc4 ^ (bc1 &^ bc0) - - t = a[10] ^ d0 - bc3 = t<<41 | t>>(64-41) - t = a[21] ^ d1 - bc4 = t<<2 | t>>(64-2) - t = a[7] ^ d2 - bc0 = t<<62 | t>>(64-62) - t = a[18] ^ d3 - bc1 = t<<55 | t>>(64-55) - t = a[4] ^ d4 - bc2 = t<<39 | t>>(64-39) - a[10] = bc0 ^ (bc2 &^ bc1) - a[21] = bc1 ^ (bc3 &^ bc2) - a[7] = bc2 ^ (bc4 &^ bc3) - a[18] = bc3 ^ (bc0 &^ bc4) - a[4] = bc4 ^ (bc1 &^ bc0) - - // Round 4 - bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] - bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] - bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] - bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] - bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] - d0 = bc4 ^ (bc1<<1 | bc1>>63) - d1 = bc0 ^ (bc2<<1 | bc2>>63) - d2 = bc1 ^ (bc3<<1 | bc3>>63) - d3 = bc2 ^ (bc4<<1 | bc4>>63) - d4 = bc3 ^ (bc0<<1 | bc0>>63) - - bc0 = a[0] ^ d0 - t = a[1] ^ d1 - bc1 = t<<44 | t>>(64-44) - t = a[2] ^ d2 - bc2 = t<<43 | t>>(64-43) - t = a[3] ^ d3 - bc3 = t<<21 | t>>(64-21) - t = a[4] ^ d4 - bc4 = t<<14 | t>>(64-14) - a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+3] - a[1] = bc1 ^ (bc3 &^ bc2) - a[2] = bc2 ^ (bc4 &^ bc3) - a[3] = bc3 ^ (bc0 &^ bc4) - a[4] = bc4 ^ (bc1 &^ bc0) - - t = a[5] ^ d0 - bc2 = t<<3 | t>>(64-3) - t = a[6] ^ d1 - bc3 = t<<45 | t>>(64-45) - t = a[7] ^ d2 - bc4 = t<<61 | t>>(64-61) - t = a[8] ^ d3 - bc0 = t<<28 | t>>(64-28) - t = a[9] ^ d4 - bc1 = t<<20 | t>>(64-20) - a[5] = bc0 ^ (bc2 &^ bc1) - a[6] = bc1 ^ (bc3 &^ bc2) - a[7] = bc2 ^ (bc4 &^ bc3) - a[8] = bc3 ^ (bc0 &^ bc4) - a[9] = bc4 ^ (bc1 &^ bc0) - - t = a[10] ^ d0 - bc4 = t<<18 | t>>(64-18) - t = a[11] ^ d1 - bc0 = t<<1 | t>>(64-1) - t = a[12] ^ d2 - bc1 = t<<6 | t>>(64-6) - t = a[13] ^ d3 - bc2 = t<<25 | t>>(64-25) - t = a[14] ^ d4 - bc3 = t<<8 | t>>(64-8) - a[10] = bc0 ^ (bc2 &^ bc1) - a[11] = bc1 ^ (bc3 &^ bc2) - a[12] = bc2 ^ (bc4 &^ bc3) - a[13] = bc3 ^ (bc0 &^ bc4) - a[14] = bc4 ^ (bc1 &^ bc0) - - t = a[15] ^ d0 - bc1 = t<<36 | t>>(64-36) - t = a[16] ^ d1 - bc2 = t<<10 | t>>(64-10) - t = a[17] ^ d2 - bc3 = t<<15 | t>>(64-15) - t = a[18] ^ d3 - bc4 = t<<56 | t>>(64-56) - t = a[19] ^ d4 - bc0 = t<<27 | t>>(64-27) - a[15] = bc0 ^ (bc2 &^ bc1) - a[16] = bc1 ^ (bc3 &^ bc2) - a[17] = bc2 ^ (bc4 &^ bc3) - a[18] = bc3 ^ (bc0 &^ bc4) - a[19] = bc4 ^ (bc1 &^ bc0) - - t = a[20] ^ d0 - bc3 = t<<41 | t>>(64-41) - t = a[21] ^ d1 - bc4 = t<<2 | t>>(64-2) - t = a[22] ^ d2 - bc0 = t<<62 | t>>(64-62) - t = a[23] ^ d3 - bc1 = t<<55 | t>>(64-55) - t = a[24] ^ d4 - bc2 = t<<39 | t>>(64-39) - a[20] = bc0 ^ (bc2 &^ bc1) - a[21] = bc1 ^ (bc3 &^ bc2) - a[22] = bc2 ^ (bc4 &^ bc3) - a[23] = bc3 ^ (bc0 &^ bc4) - a[24] = bc4 ^ (bc1 &^ bc0) - } -} diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go deleted file mode 100644 index 78867958..00000000 --- a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go +++ /dev/null @@ -1,13 +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. - -// +build amd64,!appengine,!gccgo - -package sha3 - -// This function is implemented in keccakf_amd64.s. - -//go:noescape - -func keccakF1600(a *[25]uint64) diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s deleted file mode 100644 index f88533ac..00000000 --- a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s +++ /dev/null @@ -1,390 +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. - -// +build amd64,!appengine,!gccgo - -// This code was translated into a form compatible with 6a from the public -// domain sources at https://github.com/gvanas/KeccakCodePackage - -// Offsets in state -#define _ba (0*8) -#define _be (1*8) -#define _bi (2*8) -#define _bo (3*8) -#define _bu (4*8) -#define _ga (5*8) -#define _ge (6*8) -#define _gi (7*8) -#define _go (8*8) -#define _gu (9*8) -#define _ka (10*8) -#define _ke (11*8) -#define _ki (12*8) -#define _ko (13*8) -#define _ku (14*8) -#define _ma (15*8) -#define _me (16*8) -#define _mi (17*8) -#define _mo (18*8) -#define _mu (19*8) -#define _sa (20*8) -#define _se (21*8) -#define _si (22*8) -#define _so (23*8) -#define _su (24*8) - -// Temporary registers -#define rT1 AX - -// Round vars -#define rpState DI -#define rpStack SP - -#define rDa BX -#define rDe CX -#define rDi DX -#define rDo R8 -#define rDu R9 - -#define rBa R10 -#define rBe R11 -#define rBi R12 -#define rBo R13 -#define rBu R14 - -#define rCa SI -#define rCe BP -#define rCi rBi -#define rCo rBo -#define rCu R15 - -#define MOVQ_RBI_RCE MOVQ rBi, rCe -#define XORQ_RT1_RCA XORQ rT1, rCa -#define XORQ_RT1_RCE XORQ rT1, rCe -#define XORQ_RBA_RCU XORQ rBa, rCu -#define XORQ_RBE_RCU XORQ rBe, rCu -#define XORQ_RDU_RCU XORQ rDu, rCu -#define XORQ_RDA_RCA XORQ rDa, rCa -#define XORQ_RDE_RCE XORQ rDe, rCe - -#define mKeccakRound(iState, oState, rc, B_RBI_RCE, G_RT1_RCA, G_RT1_RCE, G_RBA_RCU, K_RT1_RCA, K_RT1_RCE, K_RBA_RCU, M_RT1_RCA, M_RT1_RCE, M_RBE_RCU, S_RDU_RCU, S_RDA_RCA, S_RDE_RCE) \ - /* Prepare round */ \ - MOVQ rCe, rDa; \ - ROLQ $1, rDa; \ - \ - MOVQ _bi(iState), rCi; \ - XORQ _gi(iState), rDi; \ - XORQ rCu, rDa; \ - XORQ _ki(iState), rCi; \ - XORQ _mi(iState), rDi; \ - XORQ rDi, rCi; \ - \ - MOVQ rCi, rDe; \ - ROLQ $1, rDe; \ - \ - MOVQ _bo(iState), rCo; \ - XORQ _go(iState), rDo; \ - XORQ rCa, rDe; \ - XORQ _ko(iState), rCo; \ - XORQ _mo(iState), rDo; \ - XORQ rDo, rCo; \ - \ - MOVQ rCo, rDi; \ - ROLQ $1, rDi; \ - \ - MOVQ rCu, rDo; \ - XORQ rCe, rDi; \ - ROLQ $1, rDo; \ - \ - MOVQ rCa, rDu; \ - XORQ rCi, rDo; \ - ROLQ $1, rDu; \ - \ - /* Result b */ \ - MOVQ _ba(iState), rBa; \ - MOVQ _ge(iState), rBe; \ - XORQ rCo, rDu; \ - MOVQ _ki(iState), rBi; \ - MOVQ _mo(iState), rBo; \ - MOVQ _su(iState), rBu; \ - XORQ rDe, rBe; \ - ROLQ $44, rBe; \ - XORQ rDi, rBi; \ - XORQ rDa, rBa; \ - ROLQ $43, rBi; \ - \ - MOVQ rBe, rCa; \ - MOVQ rc, rT1; \ - ORQ rBi, rCa; \ - XORQ rBa, rT1; \ - XORQ rT1, rCa; \ - MOVQ rCa, _ba(oState); \ - \ - XORQ rDu, rBu; \ - ROLQ $14, rBu; \ - MOVQ rBa, rCu; \ - ANDQ rBe, rCu; \ - XORQ rBu, rCu; \ - MOVQ rCu, _bu(oState); \ - \ - XORQ rDo, rBo; \ - ROLQ $21, rBo; \ - MOVQ rBo, rT1; \ - ANDQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _bi(oState); \ - \ - NOTQ rBi; \ - ORQ rBa, rBu; \ - ORQ rBo, rBi; \ - XORQ rBo, rBu; \ - XORQ rBe, rBi; \ - MOVQ rBu, _bo(oState); \ - MOVQ rBi, _be(oState); \ - B_RBI_RCE; \ - \ - /* Result g */ \ - MOVQ _gu(iState), rBe; \ - XORQ rDu, rBe; \ - MOVQ _ka(iState), rBi; \ - ROLQ $20, rBe; \ - XORQ rDa, rBi; \ - ROLQ $3, rBi; \ - MOVQ _bo(iState), rBa; \ - MOVQ rBe, rT1; \ - ORQ rBi, rT1; \ - XORQ rDo, rBa; \ - MOVQ _me(iState), rBo; \ - MOVQ _si(iState), rBu; \ - ROLQ $28, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ga(oState); \ - G_RT1_RCA; \ - \ - XORQ rDe, rBo; \ - ROLQ $45, rBo; \ - MOVQ rBi, rT1; \ - ANDQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _ge(oState); \ - G_RT1_RCE; \ - \ - XORQ rDi, rBu; \ - ROLQ $61, rBu; \ - MOVQ rBu, rT1; \ - ORQ rBa, rT1; \ - XORQ rBo, rT1; \ - MOVQ rT1, _go(oState); \ - \ - ANDQ rBe, rBa; \ - XORQ rBu, rBa; \ - MOVQ rBa, _gu(oState); \ - NOTQ rBu; \ - G_RBA_RCU; \ - \ - ORQ rBu, rBo; \ - XORQ rBi, rBo; \ - MOVQ rBo, _gi(oState); \ - \ - /* Result k */ \ - MOVQ _be(iState), rBa; \ - MOVQ _gi(iState), rBe; \ - MOVQ _ko(iState), rBi; \ - MOVQ _mu(iState), rBo; \ - MOVQ _sa(iState), rBu; \ - XORQ rDi, rBe; \ - ROLQ $6, rBe; \ - XORQ rDo, rBi; \ - ROLQ $25, rBi; \ - MOVQ rBe, rT1; \ - ORQ rBi, rT1; \ - XORQ rDe, rBa; \ - ROLQ $1, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ka(oState); \ - K_RT1_RCA; \ - \ - XORQ rDu, rBo; \ - ROLQ $8, rBo; \ - MOVQ rBi, rT1; \ - ANDQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _ke(oState); \ - K_RT1_RCE; \ - \ - XORQ rDa, rBu; \ - ROLQ $18, rBu; \ - NOTQ rBo; \ - MOVQ rBo, rT1; \ - ANDQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _ki(oState); \ - \ - MOVQ rBu, rT1; \ - ORQ rBa, rT1; \ - XORQ rBo, rT1; \ - MOVQ rT1, _ko(oState); \ - \ - ANDQ rBe, rBa; \ - XORQ rBu, rBa; \ - MOVQ rBa, _ku(oState); \ - K_RBA_RCU; \ - \ - /* Result m */ \ - MOVQ _ga(iState), rBe; \ - XORQ rDa, rBe; \ - MOVQ _ke(iState), rBi; \ - ROLQ $36, rBe; \ - XORQ rDe, rBi; \ - MOVQ _bu(iState), rBa; \ - ROLQ $10, rBi; \ - MOVQ rBe, rT1; \ - MOVQ _mi(iState), rBo; \ - ANDQ rBi, rT1; \ - XORQ rDu, rBa; \ - MOVQ _so(iState), rBu; \ - ROLQ $27, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ma(oState); \ - M_RT1_RCA; \ - \ - XORQ rDi, rBo; \ - ROLQ $15, rBo; \ - MOVQ rBi, rT1; \ - ORQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _me(oState); \ - M_RT1_RCE; \ - \ - XORQ rDo, rBu; \ - ROLQ $56, rBu; \ - NOTQ rBo; \ - MOVQ rBo, rT1; \ - ORQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _mi(oState); \ - \ - ORQ rBa, rBe; \ - XORQ rBu, rBe; \ - MOVQ rBe, _mu(oState); \ - \ - ANDQ rBa, rBu; \ - XORQ rBo, rBu; \ - MOVQ rBu, _mo(oState); \ - M_RBE_RCU; \ - \ - /* Result s */ \ - MOVQ _bi(iState), rBa; \ - MOVQ _go(iState), rBe; \ - MOVQ _ku(iState), rBi; \ - XORQ rDi, rBa; \ - MOVQ _ma(iState), rBo; \ - ROLQ $62, rBa; \ - XORQ rDo, rBe; \ - MOVQ _se(iState), rBu; \ - ROLQ $55, rBe; \ - \ - XORQ rDu, rBi; \ - MOVQ rBa, rDu; \ - XORQ rDe, rBu; \ - ROLQ $2, rBu; \ - ANDQ rBe, rDu; \ - XORQ rBu, rDu; \ - MOVQ rDu, _su(oState); \ - \ - ROLQ $39, rBi; \ - S_RDU_RCU; \ - NOTQ rBe; \ - XORQ rDa, rBo; \ - MOVQ rBe, rDa; \ - ANDQ rBi, rDa; \ - XORQ rBa, rDa; \ - MOVQ rDa, _sa(oState); \ - S_RDA_RCA; \ - \ - ROLQ $41, rBo; \ - MOVQ rBi, rDe; \ - ORQ rBo, rDe; \ - XORQ rBe, rDe; \ - MOVQ rDe, _se(oState); \ - S_RDE_RCE; \ - \ - MOVQ rBo, rDi; \ - MOVQ rBu, rDo; \ - ANDQ rBu, rDi; \ - ORQ rBa, rDo; \ - XORQ rBi, rDi; \ - XORQ rBo, rDo; \ - MOVQ rDi, _si(oState); \ - MOVQ rDo, _so(oState) \ - -// func keccakF1600(state *[25]uint64) -TEXT ·keccakF1600(SB), 0, $200-8 - MOVQ state+0(FP), rpState - - // Convert the user state into an internal state - NOTQ _be(rpState) - NOTQ _bi(rpState) - NOTQ _go(rpState) - NOTQ _ki(rpState) - NOTQ _mi(rpState) - NOTQ _sa(rpState) - - // Execute the KeccakF permutation - MOVQ _ba(rpState), rCa - MOVQ _be(rpState), rCe - MOVQ _bu(rpState), rCu - - XORQ _ga(rpState), rCa - XORQ _ge(rpState), rCe - XORQ _gu(rpState), rCu - - XORQ _ka(rpState), rCa - XORQ _ke(rpState), rCe - XORQ _ku(rpState), rCu - - XORQ _ma(rpState), rCa - XORQ _me(rpState), rCe - XORQ _mu(rpState), rCu - - XORQ _sa(rpState), rCa - XORQ _se(rpState), rCe - MOVQ _si(rpState), rDi - MOVQ _so(rpState), rDo - XORQ _su(rpState), rCu - - mKeccakRound(rpState, rpStack, $0x0000000000000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000000008082, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x800000000000808a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000080008000, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000008a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000000000088, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x0000000080008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x000000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000008000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x800000000000008b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000000008089, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008003, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000000008002, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000000080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000800a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x800000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000080008008, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP) - - // Revert the internal state to the user state - NOTQ _be(rpState) - NOTQ _bi(rpState) - NOTQ _go(rpState) - NOTQ _ki(rpState) - NOTQ _mi(rpState) - NOTQ _sa(rpState) - - RET diff --git a/vendor/golang.org/x/crypto/sha3/register.go b/vendor/golang.org/x/crypto/sha3/register.go deleted file mode 100644 index 3cf6a22e..00000000 --- a/vendor/golang.org/x/crypto/sha3/register.go +++ /dev/null @@ -1,18 +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. - -// +build go1.4 - -package sha3 - -import ( - "crypto" -) - -func init() { - crypto.RegisterHash(crypto.SHA3_224, New224) - crypto.RegisterHash(crypto.SHA3_256, New256) - crypto.RegisterHash(crypto.SHA3_384, New384) - crypto.RegisterHash(crypto.SHA3_512, New512) -} diff --git a/vendor/golang.org/x/crypto/sha3/sha3.go b/vendor/golang.org/x/crypto/sha3/sha3.go deleted file mode 100644 index b12a35c8..00000000 --- a/vendor/golang.org/x/crypto/sha3/sha3.go +++ /dev/null @@ -1,192 +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 sha3 - -// spongeDirection indicates the direction bytes are flowing through the sponge. -type spongeDirection int - -const ( - // spongeAbsorbing indicates that the sponge is absorbing input. - spongeAbsorbing spongeDirection = iota - // spongeSqueezing indicates that the sponge is being squeezed. - spongeSqueezing -) - -const ( - // maxRate is the maximum size of the internal buffer. SHAKE-256 - // currently needs the largest buffer. - maxRate = 168 -) - -type state struct { - // Generic sponge components. - a [25]uint64 // main state of the hash - buf []byte // points into storage - rate int // the number of bytes of state to use - - // dsbyte contains the "domain separation" bits and the first bit of - // the padding. Sections 6.1 and 6.2 of [1] separate the outputs of the - // SHA-3 and SHAKE functions by appending bitstrings to the message. - // Using a little-endian bit-ordering convention, these are "01" for SHA-3 - // and "1111" for SHAKE, or 00000010b and 00001111b, respectively. Then the - // padding rule from section 5.1 is applied to pad the message to a multiple - // of the rate, which involves adding a "1" bit, zero or more "0" bits, and - // a final "1" bit. We merge the first "1" bit from the padding into dsbyte, - // giving 00000110b (0x06) and 00011111b (0x1f). - // [1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf - // "Draft FIPS 202: SHA-3 Standard: Permutation-Based Hash and - // Extendable-Output Functions (May 2014)" - dsbyte byte - storage [maxRate]byte - - // Specific to SHA-3 and SHAKE. - outputLen int // the default output size in bytes - state spongeDirection // whether the sponge is absorbing or squeezing -} - -// BlockSize returns the rate of sponge underlying this hash function. -func (d *state) BlockSize() int { return d.rate } - -// Size returns the output size of the hash function in bytes. -func (d *state) Size() int { return d.outputLen } - -// Reset clears the internal state by zeroing the sponge state and -// the byte buffer, and setting Sponge.state to absorbing. -func (d *state) Reset() { - // Zero the permutation's state. - for i := range d.a { - d.a[i] = 0 - } - d.state = spongeAbsorbing - d.buf = d.storage[:0] -} - -func (d *state) clone() *state { - ret := *d - if ret.state == spongeAbsorbing { - ret.buf = ret.storage[:len(ret.buf)] - } else { - ret.buf = ret.storage[d.rate-cap(d.buf) : d.rate] - } - - return &ret -} - -// permute applies the KeccakF-1600 permutation. It handles -// any input-output buffering. -func (d *state) permute() { - switch d.state { - case spongeAbsorbing: - // If we're absorbing, we need to xor the input into the state - // before applying the permutation. - xorIn(d, d.buf) - d.buf = d.storage[:0] - keccakF1600(&d.a) - case spongeSqueezing: - // If we're squeezing, we need to apply the permutatin before - // copying more output. - keccakF1600(&d.a) - d.buf = d.storage[:d.rate] - copyOut(d, d.buf) - } -} - -// pads appends the domain separation bits in dsbyte, applies -// the multi-bitrate 10..1 padding rule, and permutes the state. -func (d *state) padAndPermute(dsbyte byte) { - if d.buf == nil { - d.buf = d.storage[:0] - } - // Pad with this instance's domain-separator bits. We know that there's - // at least one byte of space in d.buf because, if it were full, - // permute would have been called to empty it. dsbyte also contains the - // first one bit for the padding. See the comment in the state struct. - d.buf = append(d.buf, dsbyte) - zerosStart := len(d.buf) - d.buf = d.storage[:d.rate] - for i := zerosStart; i < d.rate; i++ { - d.buf[i] = 0 - } - // This adds the final one bit for the padding. Because of the way that - // bits are numbered from the LSB upwards, the final bit is the MSB of - // the last byte. - d.buf[d.rate-1] ^= 0x80 - // Apply the permutation - d.permute() - d.state = spongeSqueezing - d.buf = d.storage[:d.rate] - copyOut(d, d.buf) -} - -// Write absorbs more data into the hash's state. It produces an error -// if more data is written to the ShakeHash after writing -func (d *state) Write(p []byte) (written int, err error) { - if d.state != spongeAbsorbing { - panic("sha3: write to sponge after read") - } - if d.buf == nil { - d.buf = d.storage[:0] - } - written = len(p) - - for len(p) > 0 { - if len(d.buf) == 0 && len(p) >= d.rate { - // The fast path; absorb a full "rate" bytes of input and apply the permutation. - xorIn(d, p[:d.rate]) - p = p[d.rate:] - keccakF1600(&d.a) - } else { - // The slow path; buffer the input until we can fill the sponge, and then xor it in. - todo := d.rate - len(d.buf) - if todo > len(p) { - todo = len(p) - } - d.buf = append(d.buf, p[:todo]...) - p = p[todo:] - - // If the sponge is full, apply the permutation. - if len(d.buf) == d.rate { - d.permute() - } - } - } - - return -} - -// Read squeezes an arbitrary number of bytes from the sponge. -func (d *state) Read(out []byte) (n int, err error) { - // If we're still absorbing, pad and apply the permutation. - if d.state == spongeAbsorbing { - d.padAndPermute(d.dsbyte) - } - - n = len(out) - - // Now, do the squeezing. - for len(out) > 0 { - n := copy(out, d.buf) - d.buf = d.buf[n:] - out = out[n:] - - // Apply the permutation if we've squeezed the sponge dry. - if len(d.buf) == 0 { - d.permute() - } - } - - return -} - -// Sum applies padding to the hash state and then squeezes out the desired -// number of output bytes. -func (d *state) Sum(in []byte) []byte { - // Make a copy of the original hash so that caller can keep writing - // and summing. - dup := d.clone() - hash := make([]byte, dup.outputLen) - dup.Read(hash) - return append(in, hash...) -} diff --git a/vendor/golang.org/x/crypto/sha3/sha3_test.go b/vendor/golang.org/x/crypto/sha3/sha3_test.go deleted file mode 100644 index 2c8719b4..00000000 --- a/vendor/golang.org/x/crypto/sha3/sha3_test.go +++ /dev/null @@ -1,311 +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 sha3 - -// Tests include all the ShortMsgKATs provided by the Keccak team at -// https://github.com/gvanas/KeccakCodePackage -// -// They only include the zero-bit case of the bitwise testvectors -// published by NIST in the draft of FIPS-202. - -import ( - "bytes" - "compress/flate" - "encoding/hex" - "encoding/json" - "fmt" - "hash" - "os" - "strings" - "testing" -) - -const ( - testString = "brekeccakkeccak koax koax" - katFilename = "testdata/keccakKats.json.deflate" -) - -// Internal-use instances of SHAKE used to test against KATs. -func newHashShake128() hash.Hash { - return &state{rate: 168, dsbyte: 0x1f, outputLen: 512} -} -func newHashShake256() hash.Hash { - return &state{rate: 136, dsbyte: 0x1f, outputLen: 512} -} - -// testDigests contains functions returning hash.Hash instances -// with output-length equal to the KAT length for both SHA-3 and -// SHAKE instances. -var testDigests = map[string]func() hash.Hash{ - "SHA3-224": New224, - "SHA3-256": New256, - "SHA3-384": New384, - "SHA3-512": New512, - "SHAKE128": newHashShake128, - "SHAKE256": newHashShake256, -} - -// testShakes contains functions that return ShakeHash instances for -// testing the ShakeHash-specific interface. -var testShakes = map[string]func() ShakeHash{ - "SHAKE128": NewShake128, - "SHAKE256": NewShake256, -} - -// decodeHex converts a hex-encoded string into a raw byte string. -func decodeHex(s string) []byte { - b, err := hex.DecodeString(s) - if err != nil { - panic(err) - } - return b -} - -// structs used to marshal JSON test-cases. -type KeccakKats struct { - Kats map[string][]struct { - Digest string `json:"digest"` - Length int64 `json:"length"` - Message string `json:"message"` - } -} - -func testUnalignedAndGeneric(t *testing.T, testf func(impl string)) { - xorInOrig, copyOutOrig := xorIn, copyOut - xorIn, copyOut = xorInGeneric, copyOutGeneric - testf("generic") - if xorImplementationUnaligned != "generic" { - xorIn, copyOut = xorInUnaligned, copyOutUnaligned - testf("unaligned") - } - xorIn, copyOut = xorInOrig, copyOutOrig -} - -// TestKeccakKats tests the SHA-3 and Shake implementations against all the -// ShortMsgKATs from https://github.com/gvanas/KeccakCodePackage -// (The testvectors are stored in keccakKats.json.deflate due to their length.) -func TestKeccakKats(t *testing.T) { - testUnalignedAndGeneric(t, func(impl string) { - // Read the KATs. - deflated, err := os.Open(katFilename) - if err != nil { - t.Errorf("error opening %s: %s", katFilename, err) - } - file := flate.NewReader(deflated) - dec := json.NewDecoder(file) - var katSet KeccakKats - err = dec.Decode(&katSet) - if err != nil { - t.Errorf("error decoding KATs: %s", err) - } - - // Do the KATs. - for functionName, kats := range katSet.Kats { - d := testDigests[functionName]() - for _, kat := range kats { - d.Reset() - in, err := hex.DecodeString(kat.Message) - if err != nil { - t.Errorf("error decoding KAT: %s", err) - } - d.Write(in[:kat.Length/8]) - got := strings.ToUpper(hex.EncodeToString(d.Sum(nil))) - if got != kat.Digest { - t.Errorf("function=%s, implementation=%s, length=%d\nmessage:\n %s\ngot:\n %s\nwanted:\n %s", - functionName, impl, kat.Length, kat.Message, got, kat.Digest) - t.Logf("wanted %+v", kat) - t.FailNow() - } - continue - } - } - }) -} - -// TestUnalignedWrite tests that writing data in an arbitrary pattern with -// small input buffers. -func testUnalignedWrite(t *testing.T) { - testUnalignedAndGeneric(t, func(impl string) { - buf := sequentialBytes(0x10000) - for alg, df := range testDigests { - d := df() - d.Reset() - d.Write(buf) - want := d.Sum(nil) - d.Reset() - for i := 0; i < len(buf); { - // Cycle through offsets which make a 137 byte sequence. - // Because 137 is prime this sequence should exercise all corner cases. - offsets := [17]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1} - for _, j := range offsets { - if v := len(buf) - i; v < j { - j = v - } - d.Write(buf[i : i+j]) - i += j - } - } - got := d.Sum(nil) - if !bytes.Equal(got, want) { - t.Errorf("Unaligned writes, implementation=%s, alg=%s\ngot %q, want %q", impl, alg, got, want) - } - } - }) -} - -// TestAppend checks that appending works when reallocation is necessary. -func TestAppend(t *testing.T) { - testUnalignedAndGeneric(t, func(impl string) { - d := New224() - - for capacity := 2; capacity <= 66; capacity += 64 { - // The first time around the loop, Sum will have to reallocate. - // The second time, it will not. - buf := make([]byte, 2, capacity) - d.Reset() - d.Write([]byte{0xcc}) - buf = d.Sum(buf) - expected := "0000DF70ADC49B2E76EEE3A6931B93FA41841C3AF2CDF5B32A18B5478C39" - if got := strings.ToUpper(hex.EncodeToString(buf)); got != expected { - t.Errorf("got %s, want %s", got, expected) - } - } - }) -} - -// TestAppendNoRealloc tests that appending works when no reallocation is necessary. -func TestAppendNoRealloc(t *testing.T) { - testUnalignedAndGeneric(t, func(impl string) { - buf := make([]byte, 1, 200) - d := New224() - d.Write([]byte{0xcc}) - buf = d.Sum(buf) - expected := "00DF70ADC49B2E76EEE3A6931B93FA41841C3AF2CDF5B32A18B5478C39" - if got := strings.ToUpper(hex.EncodeToString(buf)); got != expected { - t.Errorf("%s: got %s, want %s", impl, got, expected) - } - }) -} - -// TestSqueezing checks that squeezing the full output a single time produces -// the same output as repeatedly squeezing the instance. -func TestSqueezing(t *testing.T) { - testUnalignedAndGeneric(t, func(impl string) { - for functionName, newShakeHash := range testShakes { - d0 := newShakeHash() - d0.Write([]byte(testString)) - ref := make([]byte, 32) - d0.Read(ref) - - d1 := newShakeHash() - d1.Write([]byte(testString)) - var multiple []byte - for range ref { - one := make([]byte, 1) - d1.Read(one) - multiple = append(multiple, one...) - } - if !bytes.Equal(ref, multiple) { - t.Errorf("%s (%s): squeezing %d bytes one at a time failed", functionName, impl, len(ref)) - } - } - }) -} - -// sequentialBytes produces a buffer of size consecutive bytes 0x00, 0x01, ..., used for testing. -func sequentialBytes(size int) []byte { - result := make([]byte, size) - for i := range result { - result[i] = byte(i) - } - return result -} - -// BenchmarkPermutationFunction measures the speed of the permutation function -// with no input data. -func BenchmarkPermutationFunction(b *testing.B) { - b.SetBytes(int64(200)) - var lanes [25]uint64 - for i := 0; i < b.N; i++ { - keccakF1600(&lanes) - } -} - -// benchmarkHash tests the speed to hash num buffers of buflen each. -func benchmarkHash(b *testing.B, h hash.Hash, size, num int) { - b.StopTimer() - h.Reset() - data := sequentialBytes(size) - b.SetBytes(int64(size * num)) - b.StartTimer() - - var state []byte - for i := 0; i < b.N; i++ { - for j := 0; j < num; j++ { - h.Write(data) - } - state = h.Sum(state[:0]) - } - b.StopTimer() - h.Reset() -} - -// benchmarkShake is specialized to the Shake instances, which don't -// require a copy on reading output. -func benchmarkShake(b *testing.B, h ShakeHash, size, num int) { - b.StopTimer() - h.Reset() - data := sequentialBytes(size) - d := make([]byte, 32) - - b.SetBytes(int64(size * num)) - b.StartTimer() - - for i := 0; i < b.N; i++ { - h.Reset() - for j := 0; j < num; j++ { - h.Write(data) - } - h.Read(d) - } -} - -func BenchmarkSha3_512_MTU(b *testing.B) { benchmarkHash(b, New512(), 1350, 1) } -func BenchmarkSha3_384_MTU(b *testing.B) { benchmarkHash(b, New384(), 1350, 1) } -func BenchmarkSha3_256_MTU(b *testing.B) { benchmarkHash(b, New256(), 1350, 1) } -func BenchmarkSha3_224_MTU(b *testing.B) { benchmarkHash(b, New224(), 1350, 1) } - -func BenchmarkShake128_MTU(b *testing.B) { benchmarkShake(b, NewShake128(), 1350, 1) } -func BenchmarkShake256_MTU(b *testing.B) { benchmarkShake(b, NewShake256(), 1350, 1) } -func BenchmarkShake256_16x(b *testing.B) { benchmarkShake(b, NewShake256(), 16, 1024) } -func BenchmarkShake256_1MiB(b *testing.B) { benchmarkShake(b, NewShake256(), 1024, 1024) } - -func BenchmarkSha3_512_1MiB(b *testing.B) { benchmarkHash(b, New512(), 1024, 1024) } - -func Example_sum() { - buf := []byte("some data to hash") - // A hash needs to be 64 bytes long to have 256-bit collision resistance. - h := make([]byte, 64) - // Compute a 64-byte hash of buf and put it in h. - ShakeSum256(h, buf) - fmt.Printf("%x\n", h) - // Output: 0f65fe41fc353e52c55667bb9e2b27bfcc8476f2c413e9437d272ee3194a4e3146d05ec04a25d16b8f577c19b82d16b1424c3e022e783d2b4da98de3658d363d -} - -func Example_mac() { - k := []byte("this is a secret key; you should generate a strong random key that's at least 32 bytes long") - buf := []byte("and this is some data to authenticate") - // A MAC with 32 bytes of output has 256-bit security strength -- if you use at least a 32-byte-long key. - h := make([]byte, 32) - d := NewShake256() - // Write the key into the hash. - d.Write(k) - // Now write the data. - d.Write(buf) - // Read 32 bytes of output from the hash into h. - d.Read(h) - fmt.Printf("%x\n", h) - // Output: 78de2974bd2711d5549ffd32b753ef0f5fa80a0db2556db60f0987eb8a9218ff -} diff --git a/vendor/golang.org/x/crypto/sha3/shake.go b/vendor/golang.org/x/crypto/sha3/shake.go deleted file mode 100644 index 841f9860..00000000 --- a/vendor/golang.org/x/crypto/sha3/shake.go +++ /dev/null @@ -1,60 +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 sha3 - -// This file defines the ShakeHash interface, and provides -// functions for creating SHAKE instances, as well as utility -// functions for hashing bytes to arbitrary-length output. - -import ( - "io" -) - -// ShakeHash defines the interface to hash functions that -// support arbitrary-length output. -type ShakeHash interface { - // Write absorbs more data into the hash's state. It panics if input is - // written to it after output has been read from it. - io.Writer - - // Read reads more output from the hash; reading affects the hash's - // state. (ShakeHash.Read is thus very different from Hash.Sum) - // It never returns an error. - io.Reader - - // Clone returns a copy of the ShakeHash in its current state. - Clone() ShakeHash - - // Reset resets the ShakeHash to its initial state. - Reset() -} - -func (d *state) Clone() ShakeHash { - return d.clone() -} - -// NewShake128 creates a new SHAKE128 variable-output-length ShakeHash. -// Its generic security strength is 128 bits against all attacks if at -// least 32 bytes of its output are used. -func NewShake128() ShakeHash { return &state{rate: 168, dsbyte: 0x1f} } - -// NewShake256 creates a new SHAKE128 variable-output-length ShakeHash. -// Its generic security strength is 256 bits against all attacks if -// at least 64 bytes of its output are used. -func NewShake256() ShakeHash { return &state{rate: 136, dsbyte: 0x1f} } - -// ShakeSum128 writes an arbitrary-length digest of data into hash. -func ShakeSum128(hash, data []byte) { - h := NewShake128() - h.Write(data) - h.Read(hash) -} - -// ShakeSum256 writes an arbitrary-length digest of data into hash. -func ShakeSum256(hash, data []byte) { - h := NewShake256() - h.Write(data) - h.Read(hash) -} diff --git a/vendor/golang.org/x/crypto/sha3/testdata/keccakKats.json.deflate b/vendor/golang.org/x/crypto/sha3/testdata/keccakKats.json.deflate deleted file mode 100644 index 62e85ae2..00000000 Binary files a/vendor/golang.org/x/crypto/sha3/testdata/keccakKats.json.deflate and /dev/null differ diff --git a/vendor/golang.org/x/crypto/sha3/xor.go b/vendor/golang.org/x/crypto/sha3/xor.go deleted file mode 100644 index 46a0d63a..00000000 --- a/vendor/golang.org/x/crypto/sha3/xor.go +++ /dev/null @@ -1,16 +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. - -// +build !amd64,!386,!ppc64le appengine - -package sha3 - -var ( - xorIn = xorInGeneric - copyOut = copyOutGeneric - xorInUnaligned = xorInGeneric - copyOutUnaligned = copyOutGeneric -) - -const xorImplementationUnaligned = "generic" diff --git a/vendor/golang.org/x/crypto/sha3/xor_generic.go b/vendor/golang.org/x/crypto/sha3/xor_generic.go deleted file mode 100644 index fd35f02e..00000000 --- a/vendor/golang.org/x/crypto/sha3/xor_generic.go +++ /dev/null @@ -1,28 +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 sha3 - -import "encoding/binary" - -// xorInGeneric xors the bytes in buf into the state; it -// makes no non-portable assumptions about memory layout -// or alignment. -func xorInGeneric(d *state, buf []byte) { - n := len(buf) / 8 - - for i := 0; i < n; i++ { - a := binary.LittleEndian.Uint64(buf) - d.a[i] ^= a - buf = buf[8:] - } -} - -// copyOutGeneric copies ulint64s to a byte buffer. -func copyOutGeneric(d *state, b []byte) { - for i := 0; len(b) >= 8; i++ { - binary.LittleEndian.PutUint64(b, d.a[i]) - b = b[8:] - } -} diff --git a/vendor/golang.org/x/crypto/sha3/xor_unaligned.go b/vendor/golang.org/x/crypto/sha3/xor_unaligned.go deleted file mode 100644 index 929a486a..00000000 --- a/vendor/golang.org/x/crypto/sha3/xor_unaligned.go +++ /dev/null @@ -1,58 +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. - -// +build amd64 386 ppc64le -// +build !appengine - -package sha3 - -import "unsafe" - -func xorInUnaligned(d *state, buf []byte) { - bw := (*[maxRate / 8]uint64)(unsafe.Pointer(&buf[0])) - n := len(buf) - if n >= 72 { - d.a[0] ^= bw[0] - d.a[1] ^= bw[1] - d.a[2] ^= bw[2] - d.a[3] ^= bw[3] - d.a[4] ^= bw[4] - d.a[5] ^= bw[5] - d.a[6] ^= bw[6] - d.a[7] ^= bw[7] - d.a[8] ^= bw[8] - } - if n >= 104 { - d.a[9] ^= bw[9] - d.a[10] ^= bw[10] - d.a[11] ^= bw[11] - d.a[12] ^= bw[12] - } - if n >= 136 { - d.a[13] ^= bw[13] - d.a[14] ^= bw[14] - d.a[15] ^= bw[15] - d.a[16] ^= bw[16] - } - if n >= 144 { - d.a[17] ^= bw[17] - } - if n >= 168 { - d.a[18] ^= bw[18] - d.a[19] ^= bw[19] - d.a[20] ^= bw[20] - } -} - -func copyOutUnaligned(d *state, buf []byte) { - ab := (*[maxRate]uint8)(unsafe.Pointer(&d.a[0])) - copy(buf, ab[:]) -} - -var ( - xorIn = xorInUnaligned - copyOut = copyOutUnaligned -) - -const xorImplementationUnaligned = "unaligned" diff --git a/vendor/golang.org/x/crypto/ssh/agent/client.go b/vendor/golang.org/x/crypto/ssh/agent/client.go deleted file mode 100644 index acb5ad80..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/client.go +++ /dev/null @@ -1,683 +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 agent implements the ssh-agent protocol, and provides both -// a client and a server. The client can talk to a standard ssh-agent -// that uses UNIX sockets, and one could implement an alternative -// ssh-agent process using the sample server. -// -// References: -// [PROTOCOL.agent]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.agent?rev=HEAD -package agent // import "golang.org/x/crypto/ssh/agent" - -import ( - "bytes" - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rsa" - "encoding/base64" - "encoding/binary" - "errors" - "fmt" - "io" - "math/big" - "sync" - - "golang.org/x/crypto/ed25519" - "golang.org/x/crypto/ssh" -) - -// Agent represents the capabilities of an ssh-agent. -type Agent interface { - // List returns the identities known to the agent. - List() ([]*Key, error) - - // Sign has the agent sign the data using a protocol 2 key as defined - // in [PROTOCOL.agent] section 2.6.2. - Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) - - // Add adds a private key to the agent. - Add(key AddedKey) error - - // Remove removes all identities with the given public key. - Remove(key ssh.PublicKey) error - - // RemoveAll removes all identities. - RemoveAll() error - - // Lock locks the agent. Sign and Remove will fail, and List will empty an empty list. - Lock(passphrase []byte) error - - // Unlock undoes the effect of Lock - Unlock(passphrase []byte) error - - // Signers returns signers for all the known keys. - Signers() ([]ssh.Signer, error) -} - -// ConstraintExtension describes an optional constraint defined by users. -type ConstraintExtension struct { - // ExtensionName consist of a UTF-8 string suffixed by the - // implementation domain following the naming scheme defined - // in Section 4.2 of [RFC4251], e.g. "foo@example.com". - ExtensionName string - // ExtensionDetails contains the actual content of the extended - // constraint. - ExtensionDetails []byte -} - -// AddedKey describes an SSH key to be added to an Agent. -type AddedKey struct { - // PrivateKey must be a *rsa.PrivateKey, *dsa.PrivateKey or - // *ecdsa.PrivateKey, which will be inserted into the agent. - PrivateKey interface{} - // Certificate, if not nil, is communicated to the agent and will be - // stored with the key. - Certificate *ssh.Certificate - // Comment is an optional, free-form string. - Comment string - // LifetimeSecs, if not zero, is the number of seconds that the - // agent will store the key for. - LifetimeSecs uint32 - // ConfirmBeforeUse, if true, requests that the agent confirm with the - // user before each use of this key. - ConfirmBeforeUse bool - // ConstraintExtensions are the experimental or private-use constraints - // defined by users. - ConstraintExtensions []ConstraintExtension -} - -// See [PROTOCOL.agent], section 3. -const ( - agentRequestV1Identities = 1 - agentRemoveAllV1Identities = 9 - - // 3.2 Requests from client to agent for protocol 2 key operations - agentAddIdentity = 17 - agentRemoveIdentity = 18 - agentRemoveAllIdentities = 19 - agentAddIDConstrained = 25 - - // 3.3 Key-type independent requests from client to agent - agentAddSmartcardKey = 20 - agentRemoveSmartcardKey = 21 - agentLock = 22 - agentUnlock = 23 - agentAddSmartcardKeyConstrained = 26 - - // 3.7 Key constraint identifiers - agentConstrainLifetime = 1 - agentConstrainConfirm = 2 - agentConstrainExtension = 3 -) - -// maxAgentResponseBytes is the maximum agent reply size that is accepted. This -// is a sanity check, not a limit in the spec. -const maxAgentResponseBytes = 16 << 20 - -// Agent messages: -// These structures mirror the wire format of the corresponding ssh agent -// messages found in [PROTOCOL.agent]. - -// 3.4 Generic replies from agent to client -const agentFailure = 5 - -type failureAgentMsg struct{} - -const agentSuccess = 6 - -type successAgentMsg struct{} - -// See [PROTOCOL.agent], section 2.5.2. -const agentRequestIdentities = 11 - -type requestIdentitiesAgentMsg struct{} - -// See [PROTOCOL.agent], section 2.5.2. -const agentIdentitiesAnswer = 12 - -type identitiesAnswerAgentMsg struct { - NumKeys uint32 `sshtype:"12"` - Keys []byte `ssh:"rest"` -} - -// See [PROTOCOL.agent], section 2.6.2. -const agentSignRequest = 13 - -type signRequestAgentMsg struct { - KeyBlob []byte `sshtype:"13"` - Data []byte - Flags uint32 -} - -// See [PROTOCOL.agent], section 2.6.2. - -// 3.6 Replies from agent to client for protocol 2 key operations -const agentSignResponse = 14 - -type signResponseAgentMsg struct { - SigBlob []byte `sshtype:"14"` -} - -type publicKey struct { - Format string - Rest []byte `ssh:"rest"` -} - -// 3.7 Key constraint identifiers -type constrainLifetimeAgentMsg struct { - LifetimeSecs uint32 `sshtype:"1"` -} - -type constrainExtensionAgentMsg struct { - ExtensionName string `sshtype:"3"` - ExtensionDetails []byte - - // Rest is a field used for parsing, not part of message - Rest []byte `ssh:"rest"` -} - -// Key represents a protocol 2 public key as defined in -// [PROTOCOL.agent], section 2.5.2. -type Key struct { - Format string - Blob []byte - Comment string -} - -func clientErr(err error) error { - return fmt.Errorf("agent: client error: %v", err) -} - -// String returns the storage form of an agent key with the format, base64 -// encoded serialized key, and the comment if it is not empty. -func (k *Key) String() string { - s := string(k.Format) + " " + base64.StdEncoding.EncodeToString(k.Blob) - - if k.Comment != "" { - s += " " + k.Comment - } - - return s -} - -// Type returns the public key type. -func (k *Key) Type() string { - return k.Format -} - -// Marshal returns key blob to satisfy the ssh.PublicKey interface. -func (k *Key) Marshal() []byte { - return k.Blob -} - -// Verify satisfies the ssh.PublicKey interface. -func (k *Key) Verify(data []byte, sig *ssh.Signature) error { - pubKey, err := ssh.ParsePublicKey(k.Blob) - if err != nil { - return fmt.Errorf("agent: bad public key: %v", err) - } - return pubKey.Verify(data, sig) -} - -type wireKey struct { - Format string - Rest []byte `ssh:"rest"` -} - -func parseKey(in []byte) (out *Key, rest []byte, err error) { - var record struct { - Blob []byte - Comment string - Rest []byte `ssh:"rest"` - } - - if err := ssh.Unmarshal(in, &record); err != nil { - return nil, nil, err - } - - var wk wireKey - if err := ssh.Unmarshal(record.Blob, &wk); err != nil { - return nil, nil, err - } - - return &Key{ - Format: wk.Format, - Blob: record.Blob, - Comment: record.Comment, - }, record.Rest, nil -} - -// client is a client for an ssh-agent process. -type client struct { - // conn is typically a *net.UnixConn - conn io.ReadWriter - // mu is used to prevent concurrent access to the agent - mu sync.Mutex -} - -// NewClient returns an Agent that talks to an ssh-agent process over -// the given connection. -func NewClient(rw io.ReadWriter) Agent { - return &client{conn: rw} -} - -// call sends an RPC to the agent. On success, the reply is -// unmarshaled into reply and replyType is set to the first byte of -// the reply, which contains the type of the message. -func (c *client) call(req []byte) (reply interface{}, err error) { - c.mu.Lock() - defer c.mu.Unlock() - - msg := make([]byte, 4+len(req)) - binary.BigEndian.PutUint32(msg, uint32(len(req))) - copy(msg[4:], req) - if _, err = c.conn.Write(msg); err != nil { - return nil, clientErr(err) - } - - var respSizeBuf [4]byte - if _, err = io.ReadFull(c.conn, respSizeBuf[:]); err != nil { - return nil, clientErr(err) - } - respSize := binary.BigEndian.Uint32(respSizeBuf[:]) - if respSize > maxAgentResponseBytes { - return nil, clientErr(err) - } - - buf := make([]byte, respSize) - if _, err = io.ReadFull(c.conn, buf); err != nil { - return nil, clientErr(err) - } - reply, err = unmarshal(buf) - if err != nil { - return nil, clientErr(err) - } - return reply, err -} - -func (c *client) simpleCall(req []byte) error { - resp, err := c.call(req) - if err != nil { - return err - } - if _, ok := resp.(*successAgentMsg); ok { - return nil - } - return errors.New("agent: failure") -} - -func (c *client) RemoveAll() error { - return c.simpleCall([]byte{agentRemoveAllIdentities}) -} - -func (c *client) Remove(key ssh.PublicKey) error { - req := ssh.Marshal(&agentRemoveIdentityMsg{ - KeyBlob: key.Marshal(), - }) - return c.simpleCall(req) -} - -func (c *client) Lock(passphrase []byte) error { - req := ssh.Marshal(&agentLockMsg{ - Passphrase: passphrase, - }) - return c.simpleCall(req) -} - -func (c *client) Unlock(passphrase []byte) error { - req := ssh.Marshal(&agentUnlockMsg{ - Passphrase: passphrase, - }) - return c.simpleCall(req) -} - -// List returns the identities known to the agent. -func (c *client) List() ([]*Key, error) { - // see [PROTOCOL.agent] section 2.5.2. - req := []byte{agentRequestIdentities} - - msg, err := c.call(req) - if err != nil { - return nil, err - } - - switch msg := msg.(type) { - case *identitiesAnswerAgentMsg: - if msg.NumKeys > maxAgentResponseBytes/8 { - return nil, errors.New("agent: too many keys in agent reply") - } - keys := make([]*Key, msg.NumKeys) - data := msg.Keys - for i := uint32(0); i < msg.NumKeys; i++ { - var key *Key - var err error - if key, data, err = parseKey(data); err != nil { - return nil, err - } - keys[i] = key - } - return keys, nil - case *failureAgentMsg: - return nil, errors.New("agent: failed to list keys") - } - panic("unreachable") -} - -// Sign has the agent sign the data using a protocol 2 key as defined -// in [PROTOCOL.agent] section 2.6.2. -func (c *client) Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) { - req := ssh.Marshal(signRequestAgentMsg{ - KeyBlob: key.Marshal(), - Data: data, - }) - - msg, err := c.call(req) - if err != nil { - return nil, err - } - - switch msg := msg.(type) { - case *signResponseAgentMsg: - var sig ssh.Signature - if err := ssh.Unmarshal(msg.SigBlob, &sig); err != nil { - return nil, err - } - - return &sig, nil - case *failureAgentMsg: - return nil, errors.New("agent: failed to sign challenge") - } - panic("unreachable") -} - -// unmarshal parses an agent message in packet, returning the parsed -// form and the message type of packet. -func unmarshal(packet []byte) (interface{}, error) { - if len(packet) < 1 { - return nil, errors.New("agent: empty packet") - } - var msg interface{} - switch packet[0] { - case agentFailure: - return new(failureAgentMsg), nil - case agentSuccess: - return new(successAgentMsg), nil - case agentIdentitiesAnswer: - msg = new(identitiesAnswerAgentMsg) - case agentSignResponse: - msg = new(signResponseAgentMsg) - case agentV1IdentitiesAnswer: - msg = new(agentV1IdentityMsg) - default: - return nil, fmt.Errorf("agent: unknown type tag %d", packet[0]) - } - if err := ssh.Unmarshal(packet, msg); err != nil { - return nil, err - } - return msg, nil -} - -type rsaKeyMsg struct { - Type string `sshtype:"17|25"` - N *big.Int - E *big.Int - D *big.Int - Iqmp *big.Int // IQMP = Inverse Q Mod P - P *big.Int - Q *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type dsaKeyMsg struct { - Type string `sshtype:"17|25"` - P *big.Int - Q *big.Int - G *big.Int - Y *big.Int - X *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type ecdsaKeyMsg struct { - Type string `sshtype:"17|25"` - Curve string - KeyBytes []byte - D *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type ed25519KeyMsg struct { - Type string `sshtype:"17|25"` - Pub []byte - Priv []byte - Comments string - Constraints []byte `ssh:"rest"` -} - -// Insert adds a private key to the agent. -func (c *client) insertKey(s interface{}, comment string, constraints []byte) error { - var req []byte - switch k := s.(type) { - case *rsa.PrivateKey: - if len(k.Primes) != 2 { - return fmt.Errorf("agent: unsupported RSA key with %d primes", len(k.Primes)) - } - k.Precompute() - req = ssh.Marshal(rsaKeyMsg{ - Type: ssh.KeyAlgoRSA, - N: k.N, - E: big.NewInt(int64(k.E)), - D: k.D, - Iqmp: k.Precomputed.Qinv, - P: k.Primes[0], - Q: k.Primes[1], - Comments: comment, - Constraints: constraints, - }) - case *dsa.PrivateKey: - req = ssh.Marshal(dsaKeyMsg{ - Type: ssh.KeyAlgoDSA, - P: k.P, - Q: k.Q, - G: k.G, - Y: k.Y, - X: k.X, - Comments: comment, - Constraints: constraints, - }) - case *ecdsa.PrivateKey: - nistID := fmt.Sprintf("nistp%d", k.Params().BitSize) - req = ssh.Marshal(ecdsaKeyMsg{ - Type: "ecdsa-sha2-" + nistID, - Curve: nistID, - KeyBytes: elliptic.Marshal(k.Curve, k.X, k.Y), - D: k.D, - Comments: comment, - Constraints: constraints, - }) - case *ed25519.PrivateKey: - req = ssh.Marshal(ed25519KeyMsg{ - Type: ssh.KeyAlgoED25519, - Pub: []byte(*k)[32:], - Priv: []byte(*k), - Comments: comment, - Constraints: constraints, - }) - default: - return fmt.Errorf("agent: unsupported key type %T", s) - } - - // if constraints are present then the message type needs to be changed. - if len(constraints) != 0 { - req[0] = agentAddIDConstrained - } - - resp, err := c.call(req) - if err != nil { - return err - } - if _, ok := resp.(*successAgentMsg); ok { - return nil - } - return errors.New("agent: failure") -} - -type rsaCertMsg struct { - Type string `sshtype:"17|25"` - CertBytes []byte - D *big.Int - Iqmp *big.Int // IQMP = Inverse Q Mod P - P *big.Int - Q *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type dsaCertMsg struct { - Type string `sshtype:"17|25"` - CertBytes []byte - X *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type ecdsaCertMsg struct { - Type string `sshtype:"17|25"` - CertBytes []byte - D *big.Int - Comments string - Constraints []byte `ssh:"rest"` -} - -type ed25519CertMsg struct { - Type string `sshtype:"17|25"` - CertBytes []byte - Pub []byte - Priv []byte - Comments string - Constraints []byte `ssh:"rest"` -} - -// Add adds a private key to the agent. If a certificate is given, -// that certificate is added instead as public key. -func (c *client) Add(key AddedKey) error { - var constraints []byte - - if secs := key.LifetimeSecs; secs != 0 { - constraints = append(constraints, ssh.Marshal(constrainLifetimeAgentMsg{secs})...) - } - - if key.ConfirmBeforeUse { - constraints = append(constraints, agentConstrainConfirm) - } - - cert := key.Certificate - if cert == nil { - return c.insertKey(key.PrivateKey, key.Comment, constraints) - } - return c.insertCert(key.PrivateKey, cert, key.Comment, constraints) -} - -func (c *client) insertCert(s interface{}, cert *ssh.Certificate, comment string, constraints []byte) error { - var req []byte - switch k := s.(type) { - case *rsa.PrivateKey: - if len(k.Primes) != 2 { - return fmt.Errorf("agent: unsupported RSA key with %d primes", len(k.Primes)) - } - k.Precompute() - req = ssh.Marshal(rsaCertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - D: k.D, - Iqmp: k.Precomputed.Qinv, - P: k.Primes[0], - Q: k.Primes[1], - Comments: comment, - Constraints: constraints, - }) - case *dsa.PrivateKey: - req = ssh.Marshal(dsaCertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - X: k.X, - Comments: comment, - Constraints: constraints, - }) - case *ecdsa.PrivateKey: - req = ssh.Marshal(ecdsaCertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - D: k.D, - Comments: comment, - Constraints: constraints, - }) - case *ed25519.PrivateKey: - req = ssh.Marshal(ed25519CertMsg{ - Type: cert.Type(), - CertBytes: cert.Marshal(), - Pub: []byte(*k)[32:], - Priv: []byte(*k), - Comments: comment, - Constraints: constraints, - }) - default: - return fmt.Errorf("agent: unsupported key type %T", s) - } - - // if constraints are present then the message type needs to be changed. - if len(constraints) != 0 { - req[0] = agentAddIDConstrained - } - - signer, err := ssh.NewSignerFromKey(s) - if err != nil { - return err - } - if bytes.Compare(cert.Key.Marshal(), signer.PublicKey().Marshal()) != 0 { - return errors.New("agent: signer and cert have different public key") - } - - resp, err := c.call(req) - if err != nil { - return err - } - if _, ok := resp.(*successAgentMsg); ok { - return nil - } - return errors.New("agent: failure") -} - -// Signers provides a callback for client authentication. -func (c *client) Signers() ([]ssh.Signer, error) { - keys, err := c.List() - if err != nil { - return nil, err - } - - var result []ssh.Signer - for _, k := range keys { - result = append(result, &agentKeyringSigner{c, k}) - } - return result, nil -} - -type agentKeyringSigner struct { - agent *client - pub ssh.PublicKey -} - -func (s *agentKeyringSigner) PublicKey() ssh.PublicKey { - return s.pub -} - -func (s *agentKeyringSigner) Sign(rand io.Reader, data []byte) (*ssh.Signature, error) { - // The agent has its own entropy source, so the rand argument is ignored. - return s.agent.Sign(s.pub, data) -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/client_test.go b/vendor/golang.org/x/crypto/ssh/agent/client_test.go deleted file mode 100644 index 266fd6d4..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/client_test.go +++ /dev/null @@ -1,379 +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 agent - -import ( - "bytes" - "crypto/rand" - "errors" - "net" - "os" - "os/exec" - "path/filepath" - "strconv" - "testing" - "time" - - "golang.org/x/crypto/ssh" -) - -// startOpenSSHAgent executes ssh-agent, and returns an Agent interface to it. -func startOpenSSHAgent(t *testing.T) (client Agent, socket string, cleanup func()) { - if testing.Short() { - // ssh-agent is not always available, and the key - // types supported vary by platform. - t.Skip("skipping test due to -short") - } - - bin, err := exec.LookPath("ssh-agent") - if err != nil { - t.Skip("could not find ssh-agent") - } - - cmd := exec.Command(bin, "-s") - out, err := cmd.Output() - if err != nil { - t.Fatalf("cmd.Output: %v", err) - } - - /* Output looks like: - - SSH_AUTH_SOCK=/tmp/ssh-P65gpcqArqvH/agent.15541; export SSH_AUTH_SOCK; - SSH_AGENT_PID=15542; export SSH_AGENT_PID; - echo Agent pid 15542; - */ - fields := bytes.Split(out, []byte(";")) - line := bytes.SplitN(fields[0], []byte("="), 2) - line[0] = bytes.TrimLeft(line[0], "\n") - if string(line[0]) != "SSH_AUTH_SOCK" { - t.Fatalf("could not find key SSH_AUTH_SOCK in %q", fields[0]) - } - socket = string(line[1]) - - line = bytes.SplitN(fields[2], []byte("="), 2) - line[0] = bytes.TrimLeft(line[0], "\n") - if string(line[0]) != "SSH_AGENT_PID" { - t.Fatalf("could not find key SSH_AGENT_PID in %q", fields[2]) - } - pidStr := line[1] - pid, err := strconv.Atoi(string(pidStr)) - if err != nil { - t.Fatalf("Atoi(%q): %v", pidStr, err) - } - - conn, err := net.Dial("unix", string(socket)) - if err != nil { - t.Fatalf("net.Dial: %v", err) - } - - ac := NewClient(conn) - return ac, socket, func() { - proc, _ := os.FindProcess(pid) - if proc != nil { - proc.Kill() - } - conn.Close() - os.RemoveAll(filepath.Dir(socket)) - } -} - -// startKeyringAgent uses Keyring to simulate a ssh-agent Server and returns a client. -func startKeyringAgent(t *testing.T) (client Agent, cleanup func()) { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - go ServeAgent(NewKeyring(), c2) - - return NewClient(c1), func() { - c1.Close() - c2.Close() - } -} - -func testOpenSSHAgent(t *testing.T, key interface{}, cert *ssh.Certificate, lifetimeSecs uint32) { - agent, _, cleanup := startOpenSSHAgent(t) - defer cleanup() - - testAgentInterface(t, agent, key, cert, lifetimeSecs) -} - -func testKeyringAgent(t *testing.T, key interface{}, cert *ssh.Certificate, lifetimeSecs uint32) { - agent, cleanup := startKeyringAgent(t) - defer cleanup() - - testAgentInterface(t, agent, key, cert, lifetimeSecs) -} - -func testAgentInterface(t *testing.T, agent Agent, key interface{}, cert *ssh.Certificate, lifetimeSecs uint32) { - signer, err := ssh.NewSignerFromKey(key) - if err != nil { - t.Fatalf("NewSignerFromKey(%T): %v", key, err) - } - // The agent should start up empty. - if keys, err := agent.List(); err != nil { - t.Fatalf("RequestIdentities: %v", err) - } else if len(keys) > 0 { - t.Fatalf("got %d keys, want 0: %v", len(keys), keys) - } - - // Attempt to insert the key, with certificate if specified. - var pubKey ssh.PublicKey - if cert != nil { - err = agent.Add(AddedKey{ - PrivateKey: key, - Certificate: cert, - Comment: "comment", - LifetimeSecs: lifetimeSecs, - }) - pubKey = cert - } else { - err = agent.Add(AddedKey{PrivateKey: key, Comment: "comment", LifetimeSecs: lifetimeSecs}) - pubKey = signer.PublicKey() - } - if err != nil { - t.Fatalf("insert(%T): %v", key, err) - } - - // Did the key get inserted successfully? - if keys, err := agent.List(); err != nil { - t.Fatalf("List: %v", err) - } else if len(keys) != 1 { - t.Fatalf("got %v, want 1 key", keys) - } else if keys[0].Comment != "comment" { - t.Fatalf("key comment: got %v, want %v", keys[0].Comment, "comment") - } else if !bytes.Equal(keys[0].Blob, pubKey.Marshal()) { - t.Fatalf("key mismatch") - } - - // Can the agent make a valid signature? - data := []byte("hello") - sig, err := agent.Sign(pubKey, data) - if err != nil { - t.Fatalf("Sign(%s): %v", pubKey.Type(), err) - } - - if err := pubKey.Verify(data, sig); err != nil { - t.Fatalf("Verify(%s): %v", pubKey.Type(), err) - } - - // If the key has a lifetime, is it removed when it should be? - if lifetimeSecs > 0 { - time.Sleep(time.Second*time.Duration(lifetimeSecs) + 100*time.Millisecond) - keys, err := agent.List() - if err != nil { - t.Fatalf("List: %v", err) - } - if len(keys) > 0 { - t.Fatalf("key not expired") - } - } - -} - -func TestAgent(t *testing.T) { - for _, keyType := range []string{"rsa", "dsa", "ecdsa", "ed25519"} { - testOpenSSHAgent(t, testPrivateKeys[keyType], nil, 0) - testKeyringAgent(t, testPrivateKeys[keyType], nil, 0) - } -} - -func TestCert(t *testing.T) { - cert := &ssh.Certificate{ - Key: testPublicKeys["rsa"], - ValidBefore: ssh.CertTimeInfinity, - CertType: ssh.UserCert, - } - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - - testOpenSSHAgent(t, testPrivateKeys["rsa"], cert, 0) - testKeyringAgent(t, testPrivateKeys["rsa"], cert, 0) -} - -// netPipe is analogous to net.Pipe, but it uses a real net.Conn, and -// therefore is buffered (net.Pipe deadlocks if both sides start with -// a write.) -func netPipe() (net.Conn, net.Conn, error) { - listener, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - listener, err = net.Listen("tcp", "[::1]:0") - if err != nil { - return nil, nil, err - } - } - defer listener.Close() - c1, err := net.Dial("tcp", listener.Addr().String()) - if err != nil { - return nil, nil, err - } - - c2, err := listener.Accept() - if err != nil { - c1.Close() - return nil, nil, err - } - - return c1, c2, nil -} - -func TestAuth(t *testing.T) { - agent, _, cleanup := startOpenSSHAgent(t) - defer cleanup() - - a, b, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - - defer a.Close() - defer b.Close() - - if err := agent.Add(AddedKey{PrivateKey: testPrivateKeys["rsa"], Comment: "comment"}); err != nil { - t.Errorf("Add: %v", err) - } - - serverConf := ssh.ServerConfig{} - serverConf.AddHostKey(testSigners["rsa"]) - serverConf.PublicKeyCallback = func(c ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) { - if bytes.Equal(key.Marshal(), testPublicKeys["rsa"].Marshal()) { - return nil, nil - } - - return nil, errors.New("pubkey rejected") - } - - go func() { - conn, _, _, err := ssh.NewServerConn(a, &serverConf) - if err != nil { - t.Fatalf("Server: %v", err) - } - conn.Close() - }() - - conf := ssh.ClientConfig{ - HostKeyCallback: ssh.InsecureIgnoreHostKey(), - } - conf.Auth = append(conf.Auth, ssh.PublicKeysCallback(agent.Signers)) - conn, _, _, err := ssh.NewClientConn(b, "", &conf) - if err != nil { - t.Fatalf("NewClientConn: %v", err) - } - conn.Close() -} - -func TestLockOpenSSHAgent(t *testing.T) { - agent, _, cleanup := startOpenSSHAgent(t) - defer cleanup() - testLockAgent(agent, t) -} - -func TestLockKeyringAgent(t *testing.T) { - agent, cleanup := startKeyringAgent(t) - defer cleanup() - testLockAgent(agent, t) -} - -func testLockAgent(agent Agent, t *testing.T) { - if err := agent.Add(AddedKey{PrivateKey: testPrivateKeys["rsa"], Comment: "comment 1"}); err != nil { - t.Errorf("Add: %v", err) - } - if err := agent.Add(AddedKey{PrivateKey: testPrivateKeys["dsa"], Comment: "comment dsa"}); err != nil { - t.Errorf("Add: %v", err) - } - if keys, err := agent.List(); err != nil { - t.Errorf("List: %v", err) - } else if len(keys) != 2 { - t.Errorf("Want 2 keys, got %v", keys) - } - - passphrase := []byte("secret") - if err := agent.Lock(passphrase); err != nil { - t.Errorf("Lock: %v", err) - } - - if keys, err := agent.List(); err != nil { - t.Errorf("List: %v", err) - } else if len(keys) != 0 { - t.Errorf("Want 0 keys, got %v", keys) - } - - signer, _ := ssh.NewSignerFromKey(testPrivateKeys["rsa"]) - if _, err := agent.Sign(signer.PublicKey(), []byte("hello")); err == nil { - t.Fatalf("Sign did not fail") - } - - if err := agent.Remove(signer.PublicKey()); err == nil { - t.Fatalf("Remove did not fail") - } - - if err := agent.RemoveAll(); err == nil { - t.Fatalf("RemoveAll did not fail") - } - - if err := agent.Unlock(nil); err == nil { - t.Errorf("Unlock with wrong passphrase succeeded") - } - if err := agent.Unlock(passphrase); err != nil { - t.Errorf("Unlock: %v", err) - } - - if err := agent.Remove(signer.PublicKey()); err != nil { - t.Fatalf("Remove: %v", err) - } - - if keys, err := agent.List(); err != nil { - t.Errorf("List: %v", err) - } else if len(keys) != 1 { - t.Errorf("Want 1 keys, got %v", keys) - } -} - -func testOpenSSHAgentLifetime(t *testing.T) { - agent, _, cleanup := startOpenSSHAgent(t) - defer cleanup() - testAgentLifetime(t, agent) -} - -func testKeyringAgentLifetime(t *testing.T) { - agent, cleanup := startKeyringAgent(t) - defer cleanup() - testAgentLifetime(t, agent) -} - -func testAgentLifetime(t *testing.T, agent Agent) { - for _, keyType := range []string{"rsa", "dsa", "ecdsa"} { - // Add private keys to the agent. - err := agent.Add(AddedKey{ - PrivateKey: testPrivateKeys[keyType], - Comment: "comment", - LifetimeSecs: 1, - }) - if err != nil { - t.Fatalf("add: %v", err) - } - // Add certs to the agent. - cert := &ssh.Certificate{ - Key: testPublicKeys[keyType], - ValidBefore: ssh.CertTimeInfinity, - CertType: ssh.UserCert, - } - cert.SignCert(rand.Reader, testSigners[keyType]) - err = agent.Add(AddedKey{ - PrivateKey: testPrivateKeys[keyType], - Certificate: cert, - Comment: "comment", - LifetimeSecs: 1, - }) - if err != nil { - t.Fatalf("add: %v", err) - } - } - time.Sleep(1100 * time.Millisecond) - if keys, err := agent.List(); err != nil { - t.Errorf("List: %v", err) - } else if len(keys) != 0 { - t.Errorf("Want 0 keys, got %v", len(keys)) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/example_test.go b/vendor/golang.org/x/crypto/ssh/agent/example_test.go deleted file mode 100644 index 85562253..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/example_test.go +++ /dev/null @@ -1,41 +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 agent_test - -import ( - "log" - "net" - "os" - - "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/agent" -) - -func ExampleClientAgent() { - // ssh-agent has a UNIX socket under $SSH_AUTH_SOCK - socket := os.Getenv("SSH_AUTH_SOCK") - conn, err := net.Dial("unix", socket) - if err != nil { - log.Fatalf("net.Dial: %v", err) - } - agentClient := agent.NewClient(conn) - config := &ssh.ClientConfig{ - User: "username", - Auth: []ssh.AuthMethod{ - // Use a callback rather than PublicKeys - // so we only consult the agent once the remote server - // wants it. - ssh.PublicKeysCallback(agentClient.Signers), - }, - HostKeyCallback: ssh.InsecureIgnoreHostKey(), - } - - sshc, err := ssh.Dial("tcp", "localhost:22", config) - if err != nil { - log.Fatalf("Dial: %v", err) - } - // .. use sshc - sshc.Close() -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/forward.go b/vendor/golang.org/x/crypto/ssh/agent/forward.go deleted file mode 100644 index fd24ba90..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/forward.go +++ /dev/null @@ -1,103 +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 agent - -import ( - "errors" - "io" - "net" - "sync" - - "golang.org/x/crypto/ssh" -) - -// RequestAgentForwarding sets up agent forwarding for the session. -// ForwardToAgent or ForwardToRemote should be called to route -// the authentication requests. -func RequestAgentForwarding(session *ssh.Session) error { - ok, err := session.SendRequest("auth-agent-req@openssh.com", true, nil) - if err != nil { - return err - } - if !ok { - return errors.New("forwarding request denied") - } - return nil -} - -// ForwardToAgent routes authentication requests to the given keyring. -func ForwardToAgent(client *ssh.Client, keyring Agent) error { - channels := client.HandleChannelOpen(channelType) - if channels == nil { - return errors.New("agent: already have handler for " + channelType) - } - - go func() { - for ch := range channels { - channel, reqs, err := ch.Accept() - if err != nil { - continue - } - go ssh.DiscardRequests(reqs) - go func() { - ServeAgent(keyring, channel) - channel.Close() - }() - } - }() - return nil -} - -const channelType = "auth-agent@openssh.com" - -// ForwardToRemote routes authentication requests to the ssh-agent -// process serving on the given unix socket. -func ForwardToRemote(client *ssh.Client, addr string) error { - channels := client.HandleChannelOpen(channelType) - if channels == nil { - return errors.New("agent: already have handler for " + channelType) - } - conn, err := net.Dial("unix", addr) - if err != nil { - return err - } - conn.Close() - - go func() { - for ch := range channels { - channel, reqs, err := ch.Accept() - if err != nil { - continue - } - go ssh.DiscardRequests(reqs) - go forwardUnixSocket(channel, addr) - } - }() - return nil -} - -func forwardUnixSocket(channel ssh.Channel, addr string) { - conn, err := net.Dial("unix", addr) - if err != nil { - return - } - - var wg sync.WaitGroup - wg.Add(2) - go func() { - io.Copy(conn, channel) - conn.(*net.UnixConn).CloseWrite() - wg.Done() - }() - go func() { - io.Copy(channel, conn) - channel.CloseWrite() - wg.Done() - }() - - wg.Wait() - conn.Close() - channel.Close() -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/keyring.go b/vendor/golang.org/x/crypto/ssh/agent/keyring.go deleted file mode 100644 index a6ba06ab..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/keyring.go +++ /dev/null @@ -1,215 +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 agent - -import ( - "bytes" - "crypto/rand" - "crypto/subtle" - "errors" - "fmt" - "sync" - "time" - - "golang.org/x/crypto/ssh" -) - -type privKey struct { - signer ssh.Signer - comment string - expire *time.Time -} - -type keyring struct { - mu sync.Mutex - keys []privKey - - locked bool - passphrase []byte -} - -var errLocked = errors.New("agent: locked") - -// NewKeyring returns an Agent that holds keys in memory. It is safe -// for concurrent use by multiple goroutines. -func NewKeyring() Agent { - return &keyring{} -} - -// RemoveAll removes all identities. -func (r *keyring) RemoveAll() error { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return errLocked - } - - r.keys = nil - return nil -} - -// removeLocked does the actual key removal. The caller must already be holding the -// keyring mutex. -func (r *keyring) removeLocked(want []byte) error { - found := false - for i := 0; i < len(r.keys); { - if bytes.Equal(r.keys[i].signer.PublicKey().Marshal(), want) { - found = true - r.keys[i] = r.keys[len(r.keys)-1] - r.keys = r.keys[:len(r.keys)-1] - continue - } else { - i++ - } - } - - if !found { - return errors.New("agent: key not found") - } - return nil -} - -// Remove removes all identities with the given public key. -func (r *keyring) Remove(key ssh.PublicKey) error { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return errLocked - } - - return r.removeLocked(key.Marshal()) -} - -// Lock locks the agent. Sign and Remove will fail, and List will return an empty list. -func (r *keyring) Lock(passphrase []byte) error { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return errLocked - } - - r.locked = true - r.passphrase = passphrase - return nil -} - -// Unlock undoes the effect of Lock -func (r *keyring) Unlock(passphrase []byte) error { - r.mu.Lock() - defer r.mu.Unlock() - if !r.locked { - return errors.New("agent: not locked") - } - if len(passphrase) != len(r.passphrase) || 1 != subtle.ConstantTimeCompare(passphrase, r.passphrase) { - return fmt.Errorf("agent: incorrect passphrase") - } - - r.locked = false - r.passphrase = nil - return nil -} - -// expireKeysLocked removes expired keys from the keyring. If a key was added -// with a lifetimesecs contraint and seconds >= lifetimesecs seconds have -// ellapsed, it is removed. The caller *must* be holding the keyring mutex. -func (r *keyring) expireKeysLocked() { - for _, k := range r.keys { - if k.expire != nil && time.Now().After(*k.expire) { - r.removeLocked(k.signer.PublicKey().Marshal()) - } - } -} - -// List returns the identities known to the agent. -func (r *keyring) List() ([]*Key, error) { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - // section 2.7: locked agents return empty. - return nil, nil - } - - r.expireKeysLocked() - var ids []*Key - for _, k := range r.keys { - pub := k.signer.PublicKey() - ids = append(ids, &Key{ - Format: pub.Type(), - Blob: pub.Marshal(), - Comment: k.comment}) - } - return ids, nil -} - -// Insert adds a private key to the keyring. If a certificate -// is given, that certificate is added as public key. Note that -// any constraints given are ignored. -func (r *keyring) Add(key AddedKey) error { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return errLocked - } - signer, err := ssh.NewSignerFromKey(key.PrivateKey) - - if err != nil { - return err - } - - if cert := key.Certificate; cert != nil { - signer, err = ssh.NewCertSigner(cert, signer) - if err != nil { - return err - } - } - - p := privKey{ - signer: signer, - comment: key.Comment, - } - - if key.LifetimeSecs > 0 { - t := time.Now().Add(time.Duration(key.LifetimeSecs) * time.Second) - p.expire = &t - } - - r.keys = append(r.keys, p) - - return nil -} - -// Sign returns a signature for the data. -func (r *keyring) Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return nil, errLocked - } - - r.expireKeysLocked() - wanted := key.Marshal() - for _, k := range r.keys { - if bytes.Equal(k.signer.PublicKey().Marshal(), wanted) { - return k.signer.Sign(rand.Reader, data) - } - } - return nil, errors.New("not found") -} - -// Signers returns signers for all the known keys. -func (r *keyring) Signers() ([]ssh.Signer, error) { - r.mu.Lock() - defer r.mu.Unlock() - if r.locked { - return nil, errLocked - } - - r.expireKeysLocked() - s := make([]ssh.Signer, 0, len(r.keys)) - for _, k := range r.keys { - s = append(s, k.signer) - } - return s, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/keyring_test.go b/vendor/golang.org/x/crypto/ssh/agent/keyring_test.go deleted file mode 100644 index e5d50e7e..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/keyring_test.go +++ /dev/null @@ -1,76 +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 agent - -import "testing" - -func addTestKey(t *testing.T, a Agent, keyName string) { - err := a.Add(AddedKey{ - PrivateKey: testPrivateKeys[keyName], - Comment: keyName, - }) - if err != nil { - t.Fatalf("failed to add key %q: %v", keyName, err) - } -} - -func removeTestKey(t *testing.T, a Agent, keyName string) { - err := a.Remove(testPublicKeys[keyName]) - if err != nil { - t.Fatalf("failed to remove key %q: %v", keyName, err) - } -} - -func validateListedKeys(t *testing.T, a Agent, expectedKeys []string) { - listedKeys, err := a.List() - if err != nil { - t.Fatalf("failed to list keys: %v", err) - return - } - actualKeys := make(map[string]bool) - for _, key := range listedKeys { - actualKeys[key.Comment] = true - } - - matchedKeys := make(map[string]bool) - for _, expectedKey := range expectedKeys { - if !actualKeys[expectedKey] { - t.Fatalf("expected key %q, but was not found", expectedKey) - } else { - matchedKeys[expectedKey] = true - } - } - - for actualKey := range actualKeys { - if !matchedKeys[actualKey] { - t.Fatalf("key %q was found, but was not expected", actualKey) - } - } -} - -func TestKeyringAddingAndRemoving(t *testing.T) { - keyNames := []string{"dsa", "ecdsa", "rsa", "user"} - - // add all test private keys - k := NewKeyring() - for _, keyName := range keyNames { - addTestKey(t, k, keyName) - } - validateListedKeys(t, k, keyNames) - - // remove a key in the middle - keyToRemove := keyNames[1] - keyNames = append(keyNames[:1], keyNames[2:]...) - - removeTestKey(t, k, keyToRemove) - validateListedKeys(t, k, keyNames) - - // remove all keys - err := k.RemoveAll() - if err != nil { - t.Fatalf("failed to remove all keys: %v", err) - } - validateListedKeys(t, k, []string{}) -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/server.go b/vendor/golang.org/x/crypto/ssh/agent/server.go deleted file mode 100644 index 2e4692cb..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/server.go +++ /dev/null @@ -1,523 +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 agent - -import ( - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rsa" - "encoding/binary" - "errors" - "fmt" - "io" - "log" - "math/big" - - "golang.org/x/crypto/ed25519" - "golang.org/x/crypto/ssh" -) - -// Server wraps an Agent and uses it to implement the agent side of -// the SSH-agent, wire protocol. -type server struct { - agent Agent -} - -func (s *server) processRequestBytes(reqData []byte) []byte { - rep, err := s.processRequest(reqData) - if err != nil { - if err != errLocked { - // TODO(hanwen): provide better logging interface? - log.Printf("agent %d: %v", reqData[0], err) - } - return []byte{agentFailure} - } - - if err == nil && rep == nil { - return []byte{agentSuccess} - } - - return ssh.Marshal(rep) -} - -func marshalKey(k *Key) []byte { - var record struct { - Blob []byte - Comment string - } - record.Blob = k.Marshal() - record.Comment = k.Comment - - return ssh.Marshal(&record) -} - -// See [PROTOCOL.agent], section 2.5.1. -const agentV1IdentitiesAnswer = 2 - -type agentV1IdentityMsg struct { - Numkeys uint32 `sshtype:"2"` -} - -type agentRemoveIdentityMsg struct { - KeyBlob []byte `sshtype:"18"` -} - -type agentLockMsg struct { - Passphrase []byte `sshtype:"22"` -} - -type agentUnlockMsg struct { - Passphrase []byte `sshtype:"23"` -} - -func (s *server) processRequest(data []byte) (interface{}, error) { - switch data[0] { - case agentRequestV1Identities: - return &agentV1IdentityMsg{0}, nil - - case agentRemoveAllV1Identities: - return nil, nil - - case agentRemoveIdentity: - var req agentRemoveIdentityMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - - var wk wireKey - if err := ssh.Unmarshal(req.KeyBlob, &wk); err != nil { - return nil, err - } - - return nil, s.agent.Remove(&Key{Format: wk.Format, Blob: req.KeyBlob}) - - case agentRemoveAllIdentities: - return nil, s.agent.RemoveAll() - - case agentLock: - var req agentLockMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - - return nil, s.agent.Lock(req.Passphrase) - - case agentUnlock: - var req agentUnlockMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - return nil, s.agent.Unlock(req.Passphrase) - - case agentSignRequest: - var req signRequestAgentMsg - if err := ssh.Unmarshal(data, &req); err != nil { - return nil, err - } - - var wk wireKey - if err := ssh.Unmarshal(req.KeyBlob, &wk); err != nil { - return nil, err - } - - k := &Key{ - Format: wk.Format, - Blob: req.KeyBlob, - } - - sig, err := s.agent.Sign(k, req.Data) // TODO(hanwen): flags. - if err != nil { - return nil, err - } - return &signResponseAgentMsg{SigBlob: ssh.Marshal(sig)}, nil - - case agentRequestIdentities: - keys, err := s.agent.List() - if err != nil { - return nil, err - } - - rep := identitiesAnswerAgentMsg{ - NumKeys: uint32(len(keys)), - } - for _, k := range keys { - rep.Keys = append(rep.Keys, marshalKey(k)...) - } - return rep, nil - - case agentAddIDConstrained, agentAddIdentity: - return nil, s.insertIdentity(data) - } - - return nil, fmt.Errorf("unknown opcode %d", data[0]) -} - -func parseConstraints(constraints []byte) (lifetimeSecs uint32, confirmBeforeUse bool, extensions []ConstraintExtension, err error) { - for len(constraints) != 0 { - switch constraints[0] { - case agentConstrainLifetime: - lifetimeSecs = binary.BigEndian.Uint32(constraints[1:5]) - constraints = constraints[5:] - case agentConstrainConfirm: - confirmBeforeUse = true - constraints = constraints[1:] - case agentConstrainExtension: - var msg constrainExtensionAgentMsg - if err = ssh.Unmarshal(constraints, &msg); err != nil { - return 0, false, nil, err - } - extensions = append(extensions, ConstraintExtension{ - ExtensionName: msg.ExtensionName, - ExtensionDetails: msg.ExtensionDetails, - }) - constraints = msg.Rest - default: - return 0, false, nil, fmt.Errorf("unknown constraint type: %d", constraints[0]) - } - } - return -} - -func setConstraints(key *AddedKey, constraintBytes []byte) error { - lifetimeSecs, confirmBeforeUse, constraintExtensions, err := parseConstraints(constraintBytes) - if err != nil { - return err - } - - key.LifetimeSecs = lifetimeSecs - key.ConfirmBeforeUse = confirmBeforeUse - key.ConstraintExtensions = constraintExtensions - return nil -} - -func parseRSAKey(req []byte) (*AddedKey, error) { - var k rsaKeyMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - if k.E.BitLen() > 30 { - return nil, errors.New("agent: RSA public exponent too large") - } - priv := &rsa.PrivateKey{ - PublicKey: rsa.PublicKey{ - E: int(k.E.Int64()), - N: k.N, - }, - D: k.D, - Primes: []*big.Int{k.P, k.Q}, - } - priv.Precompute() - - addedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseEd25519Key(req []byte) (*AddedKey, error) { - var k ed25519KeyMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - priv := ed25519.PrivateKey(k.Priv) - - addedKey := &AddedKey{PrivateKey: &priv, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseDSAKey(req []byte) (*AddedKey, error) { - var k dsaKeyMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - priv := &dsa.PrivateKey{ - PublicKey: dsa.PublicKey{ - Parameters: dsa.Parameters{ - P: k.P, - Q: k.Q, - G: k.G, - }, - Y: k.Y, - }, - X: k.X, - } - - addedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func unmarshalECDSA(curveName string, keyBytes []byte, privScalar *big.Int) (priv *ecdsa.PrivateKey, err error) { - priv = &ecdsa.PrivateKey{ - D: privScalar, - } - - switch curveName { - case "nistp256": - priv.Curve = elliptic.P256() - case "nistp384": - priv.Curve = elliptic.P384() - case "nistp521": - priv.Curve = elliptic.P521() - default: - return nil, fmt.Errorf("agent: unknown curve %q", curveName) - } - - priv.X, priv.Y = elliptic.Unmarshal(priv.Curve, keyBytes) - if priv.X == nil || priv.Y == nil { - return nil, errors.New("agent: point not on curve") - } - - return priv, nil -} - -func parseEd25519Cert(req []byte) (*AddedKey, error) { - var k ed25519CertMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - pubKey, err := ssh.ParsePublicKey(k.CertBytes) - if err != nil { - return nil, err - } - priv := ed25519.PrivateKey(k.Priv) - cert, ok := pubKey.(*ssh.Certificate) - if !ok { - return nil, errors.New("agent: bad ED25519 certificate") - } - - addedKey := &AddedKey{PrivateKey: &priv, Certificate: cert, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseECDSAKey(req []byte) (*AddedKey, error) { - var k ecdsaKeyMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - - priv, err := unmarshalECDSA(k.Curve, k.KeyBytes, k.D) - if err != nil { - return nil, err - } - - addedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseRSACert(req []byte) (*AddedKey, error) { - var k rsaCertMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - - pubKey, err := ssh.ParsePublicKey(k.CertBytes) - if err != nil { - return nil, err - } - - cert, ok := pubKey.(*ssh.Certificate) - if !ok { - return nil, errors.New("agent: bad RSA certificate") - } - - // An RSA publickey as marshaled by rsaPublicKey.Marshal() in keys.go - var rsaPub struct { - Name string - E *big.Int - N *big.Int - } - if err := ssh.Unmarshal(cert.Key.Marshal(), &rsaPub); err != nil { - return nil, fmt.Errorf("agent: Unmarshal failed to parse public key: %v", err) - } - - if rsaPub.E.BitLen() > 30 { - return nil, errors.New("agent: RSA public exponent too large") - } - - priv := rsa.PrivateKey{ - PublicKey: rsa.PublicKey{ - E: int(rsaPub.E.Int64()), - N: rsaPub.N, - }, - D: k.D, - Primes: []*big.Int{k.Q, k.P}, - } - priv.Precompute() - - addedKey := &AddedKey{PrivateKey: &priv, Certificate: cert, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseDSACert(req []byte) (*AddedKey, error) { - var k dsaCertMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - pubKey, err := ssh.ParsePublicKey(k.CertBytes) - if err != nil { - return nil, err - } - cert, ok := pubKey.(*ssh.Certificate) - if !ok { - return nil, errors.New("agent: bad DSA certificate") - } - - // A DSA publickey as marshaled by dsaPublicKey.Marshal() in keys.go - var w struct { - Name string - P, Q, G, Y *big.Int - } - if err := ssh.Unmarshal(cert.Key.Marshal(), &w); err != nil { - return nil, fmt.Errorf("agent: Unmarshal failed to parse public key: %v", err) - } - - priv := &dsa.PrivateKey{ - PublicKey: dsa.PublicKey{ - Parameters: dsa.Parameters{ - P: w.P, - Q: w.Q, - G: w.G, - }, - Y: w.Y, - }, - X: k.X, - } - - addedKey := &AddedKey{PrivateKey: priv, Certificate: cert, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func parseECDSACert(req []byte) (*AddedKey, error) { - var k ecdsaCertMsg - if err := ssh.Unmarshal(req, &k); err != nil { - return nil, err - } - - pubKey, err := ssh.ParsePublicKey(k.CertBytes) - if err != nil { - return nil, err - } - cert, ok := pubKey.(*ssh.Certificate) - if !ok { - return nil, errors.New("agent: bad ECDSA certificate") - } - - // An ECDSA publickey as marshaled by ecdsaPublicKey.Marshal() in keys.go - var ecdsaPub struct { - Name string - ID string - Key []byte - } - if err := ssh.Unmarshal(cert.Key.Marshal(), &ecdsaPub); err != nil { - return nil, err - } - - priv, err := unmarshalECDSA(ecdsaPub.ID, ecdsaPub.Key, k.D) - if err != nil { - return nil, err - } - - addedKey := &AddedKey{PrivateKey: priv, Certificate: cert, Comment: k.Comments} - if err := setConstraints(addedKey, k.Constraints); err != nil { - return nil, err - } - return addedKey, nil -} - -func (s *server) insertIdentity(req []byte) error { - var record struct { - Type string `sshtype:"17|25"` - Rest []byte `ssh:"rest"` - } - - if err := ssh.Unmarshal(req, &record); err != nil { - return err - } - - var addedKey *AddedKey - var err error - - switch record.Type { - case ssh.KeyAlgoRSA: - addedKey, err = parseRSAKey(req) - case ssh.KeyAlgoDSA: - addedKey, err = parseDSAKey(req) - case ssh.KeyAlgoECDSA256, ssh.KeyAlgoECDSA384, ssh.KeyAlgoECDSA521: - addedKey, err = parseECDSAKey(req) - case ssh.KeyAlgoED25519: - addedKey, err = parseEd25519Key(req) - case ssh.CertAlgoRSAv01: - addedKey, err = parseRSACert(req) - case ssh.CertAlgoDSAv01: - addedKey, err = parseDSACert(req) - case ssh.CertAlgoECDSA256v01, ssh.CertAlgoECDSA384v01, ssh.CertAlgoECDSA521v01: - addedKey, err = parseECDSACert(req) - case ssh.CertAlgoED25519v01: - addedKey, err = parseEd25519Cert(req) - default: - return fmt.Errorf("agent: not implemented: %q", record.Type) - } - - if err != nil { - return err - } - return s.agent.Add(*addedKey) -} - -// ServeAgent serves the agent protocol on the given connection. It -// returns when an I/O error occurs. -func ServeAgent(agent Agent, c io.ReadWriter) error { - s := &server{agent} - - var length [4]byte - for { - if _, err := io.ReadFull(c, length[:]); err != nil { - return err - } - l := binary.BigEndian.Uint32(length[:]) - if l > maxAgentResponseBytes { - // We also cap requests. - return fmt.Errorf("agent: request too large: %d", l) - } - - req := make([]byte, l) - if _, err := io.ReadFull(c, req); err != nil { - return err - } - - repData := s.processRequestBytes(req) - if len(repData) > maxAgentResponseBytes { - return fmt.Errorf("agent: reply too large: %d bytes", len(repData)) - } - - binary.BigEndian.PutUint32(length[:], uint32(len(repData))) - if _, err := c.Write(length[:]); err != nil { - return err - } - if _, err := c.Write(repData); err != nil { - return err - } - } -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/server_test.go b/vendor/golang.org/x/crypto/ssh/agent/server_test.go deleted file mode 100644 index 038018eb..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/server_test.go +++ /dev/null @@ -1,259 +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 agent - -import ( - "crypto" - "crypto/rand" - "fmt" - pseudorand "math/rand" - "reflect" - "strings" - "testing" - - "golang.org/x/crypto/ssh" -) - -func TestServer(t *testing.T) { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - client := NewClient(c1) - - go ServeAgent(NewKeyring(), c2) - - testAgentInterface(t, client, testPrivateKeys["rsa"], nil, 0) -} - -func TestLockServer(t *testing.T) { - testLockAgent(NewKeyring(), t) -} - -func TestSetupForwardAgent(t *testing.T) { - a, b, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - - defer a.Close() - defer b.Close() - - _, socket, cleanup := startOpenSSHAgent(t) - defer cleanup() - - serverConf := ssh.ServerConfig{ - NoClientAuth: true, - } - serverConf.AddHostKey(testSigners["rsa"]) - incoming := make(chan *ssh.ServerConn, 1) - go func() { - conn, _, _, err := ssh.NewServerConn(a, &serverConf) - if err != nil { - t.Fatalf("Server: %v", err) - } - incoming <- conn - }() - - conf := ssh.ClientConfig{ - HostKeyCallback: ssh.InsecureIgnoreHostKey(), - } - conn, chans, reqs, err := ssh.NewClientConn(b, "", &conf) - if err != nil { - t.Fatalf("NewClientConn: %v", err) - } - client := ssh.NewClient(conn, chans, reqs) - - if err := ForwardToRemote(client, socket); err != nil { - t.Fatalf("SetupForwardAgent: %v", err) - } - - server := <-incoming - ch, reqs, err := server.OpenChannel(channelType, nil) - if err != nil { - t.Fatalf("OpenChannel(%q): %v", channelType, err) - } - go ssh.DiscardRequests(reqs) - - agentClient := NewClient(ch) - testAgentInterface(t, agentClient, testPrivateKeys["rsa"], nil, 0) - conn.Close() -} - -func TestV1ProtocolMessages(t *testing.T) { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - c := NewClient(c1) - - go ServeAgent(NewKeyring(), c2) - - testV1ProtocolMessages(t, c.(*client)) -} - -func testV1ProtocolMessages(t *testing.T, c *client) { - reply, err := c.call([]byte{agentRequestV1Identities}) - if err != nil { - t.Fatalf("v1 request all failed: %v", err) - } - if msg, ok := reply.(*agentV1IdentityMsg); !ok || msg.Numkeys != 0 { - t.Fatalf("invalid request all response: %#v", reply) - } - - reply, err = c.call([]byte{agentRemoveAllV1Identities}) - if err != nil { - t.Fatalf("v1 remove all failed: %v", err) - } - if _, ok := reply.(*successAgentMsg); !ok { - t.Fatalf("invalid remove all response: %#v", reply) - } -} - -func verifyKey(sshAgent Agent) error { - keys, err := sshAgent.List() - if err != nil { - return fmt.Errorf("listing keys: %v", err) - } - - if len(keys) != 1 { - return fmt.Errorf("bad number of keys found. expected 1, got %d", len(keys)) - } - - buf := make([]byte, 128) - if _, err := rand.Read(buf); err != nil { - return fmt.Errorf("rand: %v", err) - } - - sig, err := sshAgent.Sign(keys[0], buf) - if err != nil { - return fmt.Errorf("sign: %v", err) - } - - if err := keys[0].Verify(buf, sig); err != nil { - return fmt.Errorf("verify: %v", err) - } - return nil -} - -func addKeyToAgent(key crypto.PrivateKey) error { - sshAgent := NewKeyring() - if err := sshAgent.Add(AddedKey{PrivateKey: key}); err != nil { - return fmt.Errorf("add: %v", err) - } - return verifyKey(sshAgent) -} - -func TestKeyTypes(t *testing.T) { - for k, v := range testPrivateKeys { - if err := addKeyToAgent(v); err != nil { - t.Errorf("error adding key type %s, %v", k, err) - } - if err := addCertToAgentSock(v, nil); err != nil { - t.Errorf("error adding key type %s, %v", k, err) - } - } -} - -func addCertToAgentSock(key crypto.PrivateKey, cert *ssh.Certificate) error { - a, b, err := netPipe() - if err != nil { - return err - } - agentServer := NewKeyring() - go ServeAgent(agentServer, a) - - agentClient := NewClient(b) - if err := agentClient.Add(AddedKey{PrivateKey: key, Certificate: cert}); err != nil { - return fmt.Errorf("add: %v", err) - } - return verifyKey(agentClient) -} - -func addCertToAgent(key crypto.PrivateKey, cert *ssh.Certificate) error { - sshAgent := NewKeyring() - if err := sshAgent.Add(AddedKey{PrivateKey: key, Certificate: cert}); err != nil { - return fmt.Errorf("add: %v", err) - } - return verifyKey(sshAgent) -} - -func TestCertTypes(t *testing.T) { - for keyType, key := range testPublicKeys { - cert := &ssh.Certificate{ - ValidPrincipals: []string{"gopher1"}, - ValidAfter: 0, - ValidBefore: ssh.CertTimeInfinity, - Key: key, - Serial: 1, - CertType: ssh.UserCert, - SignatureKey: testPublicKeys["rsa"], - Permissions: ssh.Permissions{ - CriticalOptions: map[string]string{}, - Extensions: map[string]string{}, - }, - } - if err := cert.SignCert(rand.Reader, testSigners["rsa"]); err != nil { - t.Fatalf("signcert: %v", err) - } - if err := addCertToAgent(testPrivateKeys[keyType], cert); err != nil { - t.Fatalf("%v", err) - } - if err := addCertToAgentSock(testPrivateKeys[keyType], cert); err != nil { - t.Fatalf("%v", err) - } - } -} - -func TestParseConstraints(t *testing.T) { - // Test LifetimeSecs - var msg = constrainLifetimeAgentMsg{pseudorand.Uint32()} - lifetimeSecs, _, _, err := parseConstraints(ssh.Marshal(msg)) - if err != nil { - t.Fatalf("parseConstraints: %v", err) - } - if lifetimeSecs != msg.LifetimeSecs { - t.Errorf("got lifetime %v, want %v", lifetimeSecs, msg.LifetimeSecs) - } - - // Test ConfirmBeforeUse - _, confirmBeforeUse, _, err := parseConstraints([]byte{agentConstrainConfirm}) - if err != nil { - t.Fatalf("%v", err) - } - if !confirmBeforeUse { - t.Error("got comfirmBeforeUse == false") - } - - // Test ConstraintExtensions - var data []byte - var expect []ConstraintExtension - for i := 0; i < 10; i++ { - var ext = ConstraintExtension{ - ExtensionName: fmt.Sprintf("name%d", i), - ExtensionDetails: []byte(fmt.Sprintf("details: %d", i)), - } - expect = append(expect, ext) - data = append(data, agentConstrainExtension) - data = append(data, ssh.Marshal(ext)...) - } - _, _, extensions, err := parseConstraints(data) - if err != nil { - t.Fatalf("%v", err) - } - if !reflect.DeepEqual(expect, extensions) { - t.Errorf("got extension %v, want %v", extensions, expect) - } - - // Test Unknown Constraint - _, _, _, err = parseConstraints([]byte{128}) - if err == nil || !strings.Contains(err.Error(), "unknown constraint") { - t.Errorf("unexpected error: %v", err) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/testdata_test.go b/vendor/golang.org/x/crypto/ssh/agent/testdata_test.go deleted file mode 100644 index cc42a87c..00000000 --- a/vendor/golang.org/x/crypto/ssh/agent/testdata_test.go +++ /dev/null @@ -1,64 +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. - -// IMPLEMENTATION NOTE: To avoid a package loop, this file is in three places: -// ssh/, ssh/agent, and ssh/test/. It should be kept in sync across all three -// instances. - -package agent - -import ( - "crypto/rand" - "fmt" - - "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/testdata" -) - -var ( - testPrivateKeys map[string]interface{} - testSigners map[string]ssh.Signer - testPublicKeys map[string]ssh.PublicKey -) - -func init() { - var err error - - n := len(testdata.PEMBytes) - testPrivateKeys = make(map[string]interface{}, n) - testSigners = make(map[string]ssh.Signer, n) - testPublicKeys = make(map[string]ssh.PublicKey, n) - for t, k := range testdata.PEMBytes { - testPrivateKeys[t], err = ssh.ParseRawPrivateKey(k) - if err != nil { - panic(fmt.Sprintf("Unable to parse test key %s: %v", t, err)) - } - testSigners[t], err = ssh.NewSignerFromKey(testPrivateKeys[t]) - if err != nil { - panic(fmt.Sprintf("Unable to create signer for test key %s: %v", t, err)) - } - testPublicKeys[t] = testSigners[t].PublicKey() - } - - // Create a cert and sign it for use in tests. - testCert := &ssh.Certificate{ - Nonce: []byte{}, // To pass reflect.DeepEqual after marshal & parse, this must be non-nil - ValidPrincipals: []string{"gopher1", "gopher2"}, // increases test coverage - ValidAfter: 0, // unix epoch - ValidBefore: ssh.CertTimeInfinity, // The end of currently representable time. - Reserved: []byte{}, // To pass reflect.DeepEqual after marshal & parse, this must be non-nil - Key: testPublicKeys["ecdsa"], - SignatureKey: testPublicKeys["rsa"], - Permissions: ssh.Permissions{ - CriticalOptions: map[string]string{}, - Extensions: map[string]string{}, - }, - } - testCert.SignCert(rand.Reader, testSigners["rsa"]) - testPrivateKeys["cert"] = testPrivateKeys["ecdsa"] - testSigners["cert"], err = ssh.NewCertSigner(testCert, testSigners["ecdsa"]) - if err != nil { - panic(fmt.Sprintf("Unable to create certificate signer: %v", err)) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/benchmark_test.go b/vendor/golang.org/x/crypto/ssh/benchmark_test.go deleted file mode 100644 index 20c33077..00000000 --- a/vendor/golang.org/x/crypto/ssh/benchmark_test.go +++ /dev/null @@ -1,123 +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 ssh - -import ( - "errors" - "io" - "net" - "testing" -) - -type server struct { - *ServerConn - chans <-chan NewChannel -} - -func newServer(c net.Conn, conf *ServerConfig) (*server, error) { - sconn, chans, reqs, err := NewServerConn(c, conf) - if err != nil { - return nil, err - } - go DiscardRequests(reqs) - return &server{sconn, chans}, nil -} - -func (s *server) Accept() (NewChannel, error) { - n, ok := <-s.chans - if !ok { - return nil, io.EOF - } - return n, nil -} - -func sshPipe() (Conn, *server, error) { - c1, c2, err := netPipe() - if err != nil { - return nil, nil, err - } - - clientConf := ClientConfig{ - User: "user", - HostKeyCallback: InsecureIgnoreHostKey(), - } - serverConf := ServerConfig{ - NoClientAuth: true, - } - serverConf.AddHostKey(testSigners["ecdsa"]) - done := make(chan *server, 1) - go func() { - server, err := newServer(c2, &serverConf) - if err != nil { - done <- nil - } - done <- server - }() - - client, _, reqs, err := NewClientConn(c1, "", &clientConf) - if err != nil { - return nil, nil, err - } - - server := <-done - if server == nil { - return nil, nil, errors.New("server handshake failed.") - } - go DiscardRequests(reqs) - - return client, server, nil -} - -func BenchmarkEndToEnd(b *testing.B) { - b.StopTimer() - - client, server, err := sshPipe() - if err != nil { - b.Fatalf("sshPipe: %v", err) - } - - defer client.Close() - defer server.Close() - - size := (1 << 20) - input := make([]byte, size) - output := make([]byte, size) - b.SetBytes(int64(size)) - done := make(chan int, 1) - - go func() { - newCh, err := server.Accept() - if err != nil { - b.Fatalf("Client: %v", err) - } - ch, incoming, err := newCh.Accept() - go DiscardRequests(incoming) - for i := 0; i < b.N; i++ { - if _, err := io.ReadFull(ch, output); err != nil { - b.Fatalf("ReadFull: %v", err) - } - } - ch.Close() - done <- 1 - }() - - ch, in, err := client.OpenChannel("speed", nil) - if err != nil { - b.Fatalf("OpenChannel: %v", err) - } - go DiscardRequests(in) - - b.ResetTimer() - b.StartTimer() - for i := 0; i < b.N; i++ { - if _, err := ch.Write(input); err != nil { - b.Fatalf("WriteFull: %v", err) - } - } - ch.Close() - b.StopTimer() - - <-done -} diff --git a/vendor/golang.org/x/crypto/ssh/buffer.go b/vendor/golang.org/x/crypto/ssh/buffer.go deleted file mode 100644 index 1ab07d07..00000000 --- a/vendor/golang.org/x/crypto/ssh/buffer.go +++ /dev/null @@ -1,97 +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 ssh - -import ( - "io" - "sync" -) - -// buffer provides a linked list buffer for data exchange -// between producer and consumer. Theoretically the buffer is -// of unlimited capacity as it does no allocation of its own. -type buffer struct { - // protects concurrent access to head, tail and closed - *sync.Cond - - head *element // the buffer that will be read first - tail *element // the buffer that will be read last - - closed bool -} - -// An element represents a single link in a linked list. -type element struct { - buf []byte - next *element -} - -// newBuffer returns an empty buffer that is not closed. -func newBuffer() *buffer { - e := new(element) - b := &buffer{ - Cond: newCond(), - head: e, - tail: e, - } - return b -} - -// write makes buf available for Read to receive. -// buf must not be modified after the call to write. -func (b *buffer) write(buf []byte) { - b.Cond.L.Lock() - e := &element{buf: buf} - b.tail.next = e - b.tail = e - b.Cond.Signal() - b.Cond.L.Unlock() -} - -// eof closes the buffer. Reads from the buffer once all -// the data has been consumed will receive io.EOF. -func (b *buffer) eof() { - b.Cond.L.Lock() - b.closed = true - b.Cond.Signal() - b.Cond.L.Unlock() -} - -// Read reads data from the internal buffer in buf. Reads will block -// if no data is available, or until the buffer is closed. -func (b *buffer) Read(buf []byte) (n int, err error) { - b.Cond.L.Lock() - defer b.Cond.L.Unlock() - - for len(buf) > 0 { - // if there is data in b.head, copy it - if len(b.head.buf) > 0 { - r := copy(buf, b.head.buf) - buf, b.head.buf = buf[r:], b.head.buf[r:] - n += r - continue - } - // if there is a next buffer, make it the head - if len(b.head.buf) == 0 && b.head != b.tail { - b.head = b.head.next - continue - } - - // if at least one byte has been copied, return - if n > 0 { - break - } - - // if nothing was read, and there is nothing outstanding - // check to see if the buffer is closed. - if b.closed { - err = io.EOF - break - } - // out of buffers, wait for producer - b.Cond.Wait() - } - return -} diff --git a/vendor/golang.org/x/crypto/ssh/buffer_test.go b/vendor/golang.org/x/crypto/ssh/buffer_test.go deleted file mode 100644 index d5781cb3..00000000 --- a/vendor/golang.org/x/crypto/ssh/buffer_test.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "io" - "testing" -) - -var alphabet = []byte("abcdefghijklmnopqrstuvwxyz") - -func TestBufferReadwrite(t *testing.T) { - b := newBuffer() - b.write(alphabet[:10]) - r, _ := b.Read(make([]byte, 10)) - if r != 10 { - t.Fatalf("Expected written == read == 10, written: 10, read %d", r) - } - - b = newBuffer() - b.write(alphabet[:5]) - r, _ = b.Read(make([]byte, 10)) - if r != 5 { - t.Fatalf("Expected written == read == 5, written: 5, read %d", r) - } - - b = newBuffer() - b.write(alphabet[:10]) - r, _ = b.Read(make([]byte, 5)) - if r != 5 { - t.Fatalf("Expected written == 10, read == 5, written: 10, read %d", r) - } - - b = newBuffer() - b.write(alphabet[:5]) - b.write(alphabet[5:15]) - r, _ = b.Read(make([]byte, 10)) - r2, _ := b.Read(make([]byte, 10)) - if r != 10 || r2 != 5 || 15 != r+r2 { - t.Fatal("Expected written == read == 15") - } -} - -func TestBufferClose(t *testing.T) { - b := newBuffer() - b.write(alphabet[:10]) - b.eof() - _, err := b.Read(make([]byte, 5)) - if err != nil { - t.Fatal("expected read of 5 to not return EOF") - } - b = newBuffer() - b.write(alphabet[:10]) - b.eof() - r, err := b.Read(make([]byte, 5)) - r2, err2 := b.Read(make([]byte, 10)) - if r != 5 || r2 != 5 || err != nil || err2 != nil { - t.Fatal("expected reads of 5 and 5") - } - - b = newBuffer() - b.write(alphabet[:10]) - b.eof() - r, err = b.Read(make([]byte, 5)) - r2, err2 = b.Read(make([]byte, 10)) - r3, err3 := b.Read(make([]byte, 10)) - if r != 5 || r2 != 5 || r3 != 0 || err != nil || err2 != nil || err3 != io.EOF { - t.Fatal("expected reads of 5 and 5 and 0, with EOF") - } - - b = newBuffer() - b.write(make([]byte, 5)) - b.write(make([]byte, 10)) - b.eof() - r, err = b.Read(make([]byte, 9)) - r2, err2 = b.Read(make([]byte, 3)) - r3, err3 = b.Read(make([]byte, 3)) - r4, err4 := b.Read(make([]byte, 10)) - if err != nil || err2 != nil || err3 != nil || err4 != io.EOF { - t.Fatalf("Expected EOF on forth read only, err=%v, err2=%v, err3=%v, err4=%v", err, err2, err3, err4) - } - if r != 9 || r2 != 3 || r3 != 3 || r4 != 0 { - t.Fatal("Expected written == read == 15", r, r2, r3, r4) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/certs.go b/vendor/golang.org/x/crypto/ssh/certs.go deleted file mode 100644 index 42106f3f..00000000 --- a/vendor/golang.org/x/crypto/ssh/certs.go +++ /dev/null @@ -1,521 +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 ssh - -import ( - "bytes" - "errors" - "fmt" - "io" - "net" - "sort" - "time" -) - -// These constants from [PROTOCOL.certkeys] represent the algorithm names -// for certificate types supported by this package. -const ( - CertAlgoRSAv01 = "ssh-rsa-cert-v01@openssh.com" - CertAlgoDSAv01 = "ssh-dss-cert-v01@openssh.com" - CertAlgoECDSA256v01 = "ecdsa-sha2-nistp256-cert-v01@openssh.com" - CertAlgoECDSA384v01 = "ecdsa-sha2-nistp384-cert-v01@openssh.com" - CertAlgoECDSA521v01 = "ecdsa-sha2-nistp521-cert-v01@openssh.com" - CertAlgoED25519v01 = "ssh-ed25519-cert-v01@openssh.com" -) - -// Certificate types distinguish between host and user -// certificates. The values can be set in the CertType field of -// Certificate. -const ( - UserCert = 1 - HostCert = 2 -) - -// Signature represents a cryptographic signature. -type Signature struct { - Format string - Blob []byte -} - -// CertTimeInfinity can be used for OpenSSHCertV01.ValidBefore to indicate that -// a certificate does not expire. -const CertTimeInfinity = 1<<64 - 1 - -// An Certificate represents an OpenSSH certificate as defined in -// [PROTOCOL.certkeys]?rev=1.8. The Certificate type implements the -// PublicKey interface, so it can be unmarshaled using -// ParsePublicKey. -type Certificate struct { - Nonce []byte - Key PublicKey - Serial uint64 - CertType uint32 - KeyId string - ValidPrincipals []string - ValidAfter uint64 - ValidBefore uint64 - Permissions - Reserved []byte - SignatureKey PublicKey - Signature *Signature -} - -// genericCertData holds the key-independent part of the certificate data. -// Overall, certificates contain an nonce, public key fields and -// key-independent fields. -type genericCertData struct { - Serial uint64 - CertType uint32 - KeyId string - ValidPrincipals []byte - ValidAfter uint64 - ValidBefore uint64 - CriticalOptions []byte - Extensions []byte - Reserved []byte - SignatureKey []byte - Signature []byte -} - -func marshalStringList(namelist []string) []byte { - var to []byte - for _, name := range namelist { - s := struct{ N string }{name} - to = append(to, Marshal(&s)...) - } - return to -} - -type optionsTuple struct { - Key string - Value []byte -} - -type optionsTupleValue struct { - Value string -} - -// serialize a map of critical options or extensions -// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation, -// we need two length prefixes for a non-empty string value -func marshalTuples(tups map[string]string) []byte { - keys := make([]string, 0, len(tups)) - for key := range tups { - keys = append(keys, key) - } - sort.Strings(keys) - - var ret []byte - for _, key := range keys { - s := optionsTuple{Key: key} - if value := tups[key]; len(value) > 0 { - s.Value = Marshal(&optionsTupleValue{value}) - } - ret = append(ret, Marshal(&s)...) - } - return ret -} - -// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation, -// we need two length prefixes for a non-empty option value -func parseTuples(in []byte) (map[string]string, error) { - tups := map[string]string{} - var lastKey string - var haveLastKey bool - - for len(in) > 0 { - var key, val, extra []byte - var ok bool - - if key, in, ok = parseString(in); !ok { - return nil, errShortRead - } - keyStr := string(key) - // according to [PROTOCOL.certkeys], the names must be in - // lexical order. - if haveLastKey && keyStr <= lastKey { - return nil, fmt.Errorf("ssh: certificate options are not in lexical order") - } - lastKey, haveLastKey = keyStr, true - // the next field is a data field, which if non-empty has a string embedded - if val, in, ok = parseString(in); !ok { - return nil, errShortRead - } - if len(val) > 0 { - val, extra, ok = parseString(val) - if !ok { - return nil, errShortRead - } - if len(extra) > 0 { - return nil, fmt.Errorf("ssh: unexpected trailing data after certificate option value") - } - tups[keyStr] = string(val) - } else { - tups[keyStr] = "" - } - } - return tups, nil -} - -func parseCert(in []byte, privAlgo string) (*Certificate, error) { - nonce, rest, ok := parseString(in) - if !ok { - return nil, errShortRead - } - - key, rest, err := parsePubKey(rest, privAlgo) - if err != nil { - return nil, err - } - - var g genericCertData - if err := Unmarshal(rest, &g); err != nil { - return nil, err - } - - c := &Certificate{ - Nonce: nonce, - Key: key, - Serial: g.Serial, - CertType: g.CertType, - KeyId: g.KeyId, - ValidAfter: g.ValidAfter, - ValidBefore: g.ValidBefore, - } - - for principals := g.ValidPrincipals; len(principals) > 0; { - principal, rest, ok := parseString(principals) - if !ok { - return nil, errShortRead - } - c.ValidPrincipals = append(c.ValidPrincipals, string(principal)) - principals = rest - } - - c.CriticalOptions, err = parseTuples(g.CriticalOptions) - if err != nil { - return nil, err - } - c.Extensions, err = parseTuples(g.Extensions) - if err != nil { - return nil, err - } - c.Reserved = g.Reserved - k, err := ParsePublicKey(g.SignatureKey) - if err != nil { - return nil, err - } - - c.SignatureKey = k - c.Signature, rest, ok = parseSignatureBody(g.Signature) - if !ok || len(rest) > 0 { - return nil, errors.New("ssh: signature parse error") - } - - return c, nil -} - -type openSSHCertSigner struct { - pub *Certificate - signer Signer -} - -// NewCertSigner returns a Signer that signs with the given Certificate, whose -// private key is held by signer. It returns an error if the public key in cert -// doesn't match the key used by signer. -func NewCertSigner(cert *Certificate, signer Signer) (Signer, error) { - if bytes.Compare(cert.Key.Marshal(), signer.PublicKey().Marshal()) != 0 { - return nil, errors.New("ssh: signer and cert have different public key") - } - - return &openSSHCertSigner{cert, signer}, nil -} - -func (s *openSSHCertSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { - return s.signer.Sign(rand, data) -} - -func (s *openSSHCertSigner) PublicKey() PublicKey { - return s.pub -} - -const sourceAddressCriticalOption = "source-address" - -// CertChecker does the work of verifying a certificate. Its methods -// can be plugged into ClientConfig.HostKeyCallback and -// ServerConfig.PublicKeyCallback. For the CertChecker to work, -// minimally, the IsAuthority callback should be set. -type CertChecker struct { - // SupportedCriticalOptions lists the CriticalOptions that the - // server application layer understands. These are only used - // for user certificates. - SupportedCriticalOptions []string - - // IsUserAuthority should return true if the key is recognized as an - // authority for the given user certificate. This allows for - // certificates to be signed by other certificates. This must be set - // if this CertChecker will be checking user certificates. - IsUserAuthority func(auth PublicKey) bool - - // IsHostAuthority should report whether the key is recognized as - // an authority for this host. This allows for certificates to be - // signed by other keys, and for those other keys to only be valid - // signers for particular hostnames. This must be set if this - // CertChecker will be checking host certificates. - IsHostAuthority func(auth PublicKey, address string) bool - - // Clock is used for verifying time stamps. If nil, time.Now - // is used. - Clock func() time.Time - - // UserKeyFallback is called when CertChecker.Authenticate encounters a - // public key that is not a certificate. It must implement validation - // of user keys or else, if nil, all such keys are rejected. - UserKeyFallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) - - // HostKeyFallback is called when CertChecker.CheckHostKey encounters a - // public key that is not a certificate. It must implement host key - // validation or else, if nil, all such keys are rejected. - HostKeyFallback HostKeyCallback - - // IsRevoked is called for each certificate so that revocation checking - // can be implemented. It should return true if the given certificate - // is revoked and false otherwise. If nil, no certificates are - // considered to have been revoked. - IsRevoked func(cert *Certificate) bool -} - -// CheckHostKey checks a host key certificate. This method can be -// plugged into ClientConfig.HostKeyCallback. -func (c *CertChecker) CheckHostKey(addr string, remote net.Addr, key PublicKey) error { - cert, ok := key.(*Certificate) - if !ok { - if c.HostKeyFallback != nil { - return c.HostKeyFallback(addr, remote, key) - } - return errors.New("ssh: non-certificate host key") - } - if cert.CertType != HostCert { - return fmt.Errorf("ssh: certificate presented as a host key has type %d", cert.CertType) - } - if !c.IsHostAuthority(cert.SignatureKey, addr) { - return fmt.Errorf("ssh: no authorities for hostname: %v", addr) - } - - hostname, _, err := net.SplitHostPort(addr) - if err != nil { - return err - } - - // Pass hostname only as principal for host certificates (consistent with OpenSSH) - return c.CheckCert(hostname, cert) -} - -// Authenticate checks a user certificate. Authenticate can be used as -// a value for ServerConfig.PublicKeyCallback. -func (c *CertChecker) Authenticate(conn ConnMetadata, pubKey PublicKey) (*Permissions, error) { - cert, ok := pubKey.(*Certificate) - if !ok { - if c.UserKeyFallback != nil { - return c.UserKeyFallback(conn, pubKey) - } - return nil, errors.New("ssh: normal key pairs not accepted") - } - - if cert.CertType != UserCert { - return nil, fmt.Errorf("ssh: cert has type %d", cert.CertType) - } - if !c.IsUserAuthority(cert.SignatureKey) { - return nil, fmt.Errorf("ssh: certificate signed by unrecognized authority") - } - - if err := c.CheckCert(conn.User(), cert); err != nil { - return nil, err - } - - return &cert.Permissions, nil -} - -// CheckCert checks CriticalOptions, ValidPrincipals, revocation, timestamp and -// the signature of the certificate. -func (c *CertChecker) CheckCert(principal string, cert *Certificate) error { - if c.IsRevoked != nil && c.IsRevoked(cert) { - return fmt.Errorf("ssh: certificate serial %d revoked", cert.Serial) - } - - for opt := range cert.CriticalOptions { - // sourceAddressCriticalOption will be enforced by - // serverAuthenticate - if opt == sourceAddressCriticalOption { - continue - } - - found := false - for _, supp := range c.SupportedCriticalOptions { - if supp == opt { - found = true - break - } - } - if !found { - return fmt.Errorf("ssh: unsupported critical option %q in certificate", opt) - } - } - - if len(cert.ValidPrincipals) > 0 { - // By default, certs are valid for all users/hosts. - found := false - for _, p := range cert.ValidPrincipals { - if p == principal { - found = true - break - } - } - if !found { - return fmt.Errorf("ssh: principal %q not in the set of valid principals for given certificate: %q", principal, cert.ValidPrincipals) - } - } - - clock := c.Clock - if clock == nil { - clock = time.Now - } - - unixNow := clock().Unix() - if after := int64(cert.ValidAfter); after < 0 || unixNow < int64(cert.ValidAfter) { - return fmt.Errorf("ssh: cert is not yet valid") - } - if before := int64(cert.ValidBefore); cert.ValidBefore != uint64(CertTimeInfinity) && (unixNow >= before || before < 0) { - return fmt.Errorf("ssh: cert has expired") - } - if err := cert.SignatureKey.Verify(cert.bytesForSigning(), cert.Signature); err != nil { - return fmt.Errorf("ssh: certificate signature does not verify") - } - - return nil -} - -// SignCert sets c.SignatureKey to the authority's public key and stores a -// Signature, by authority, in the certificate. -func (c *Certificate) SignCert(rand io.Reader, authority Signer) error { - c.Nonce = make([]byte, 32) - if _, err := io.ReadFull(rand, c.Nonce); err != nil { - return err - } - c.SignatureKey = authority.PublicKey() - - sig, err := authority.Sign(rand, c.bytesForSigning()) - if err != nil { - return err - } - c.Signature = sig - return nil -} - -var certAlgoNames = map[string]string{ - KeyAlgoRSA: CertAlgoRSAv01, - KeyAlgoDSA: CertAlgoDSAv01, - KeyAlgoECDSA256: CertAlgoECDSA256v01, - KeyAlgoECDSA384: CertAlgoECDSA384v01, - KeyAlgoECDSA521: CertAlgoECDSA521v01, - KeyAlgoED25519: CertAlgoED25519v01, -} - -// certToPrivAlgo returns the underlying algorithm for a certificate algorithm. -// Panics if a non-certificate algorithm is passed. -func certToPrivAlgo(algo string) string { - for privAlgo, pubAlgo := range certAlgoNames { - if pubAlgo == algo { - return privAlgo - } - } - panic("unknown cert algorithm") -} - -func (cert *Certificate) bytesForSigning() []byte { - c2 := *cert - c2.Signature = nil - out := c2.Marshal() - // Drop trailing signature length. - return out[:len(out)-4] -} - -// Marshal serializes c into OpenSSH's wire format. It is part of the -// PublicKey interface. -func (c *Certificate) Marshal() []byte { - generic := genericCertData{ - Serial: c.Serial, - CertType: c.CertType, - KeyId: c.KeyId, - ValidPrincipals: marshalStringList(c.ValidPrincipals), - ValidAfter: uint64(c.ValidAfter), - ValidBefore: uint64(c.ValidBefore), - CriticalOptions: marshalTuples(c.CriticalOptions), - Extensions: marshalTuples(c.Extensions), - Reserved: c.Reserved, - SignatureKey: c.SignatureKey.Marshal(), - } - if c.Signature != nil { - generic.Signature = Marshal(c.Signature) - } - genericBytes := Marshal(&generic) - keyBytes := c.Key.Marshal() - _, keyBytes, _ = parseString(keyBytes) - prefix := Marshal(&struct { - Name string - Nonce []byte - Key []byte `ssh:"rest"` - }{c.Type(), c.Nonce, keyBytes}) - - result := make([]byte, 0, len(prefix)+len(genericBytes)) - result = append(result, prefix...) - result = append(result, genericBytes...) - return result -} - -// Type returns the key name. It is part of the PublicKey interface. -func (c *Certificate) Type() string { - algo, ok := certAlgoNames[c.Key.Type()] - if !ok { - panic("unknown cert key type " + c.Key.Type()) - } - return algo -} - -// Verify verifies a signature against the certificate's public -// key. It is part of the PublicKey interface. -func (c *Certificate) Verify(data []byte, sig *Signature) error { - return c.Key.Verify(data, sig) -} - -func parseSignatureBody(in []byte) (out *Signature, rest []byte, ok bool) { - format, in, ok := parseString(in) - if !ok { - return - } - - out = &Signature{ - Format: string(format), - } - - if out.Blob, in, ok = parseString(in); !ok { - return - } - - return out, in, ok -} - -func parseSignature(in []byte) (out *Signature, rest []byte, ok bool) { - sigBytes, rest, ok := parseString(in) - if !ok { - return - } - - out, trailing, ok := parseSignatureBody(sigBytes) - if !ok || len(trailing) > 0 { - return nil, nil, false - } - return -} diff --git a/vendor/golang.org/x/crypto/ssh/certs_test.go b/vendor/golang.org/x/crypto/ssh/certs_test.go deleted file mode 100644 index c8e7cf58..00000000 --- a/vendor/golang.org/x/crypto/ssh/certs_test.go +++ /dev/null @@ -1,335 +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 ssh - -import ( - "bytes" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "net" - "reflect" - "testing" - "time" - - "golang.org/x/crypto/ssh/testdata" -) - -// Cert generated by ssh-keygen 6.0p1 Debian-4. -// % ssh-keygen -s ca-key -I test user-key -const exampleSSHCert = `ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgb1srW/W3ZDjYAO45xLYAwzHBDLsJ4Ux6ICFIkTjb1LEAAAADAQABAAAAYQCkoR51poH0wE8w72cqSB8Sszx+vAhzcMdCO0wqHTj7UNENHWEXGrU0E0UQekD7U+yhkhtoyjbPOVIP7hNa6aRk/ezdh/iUnCIt4Jt1v3Z1h1P+hA4QuYFMHNB+rmjPwAcAAAAAAAAAAAAAAAEAAAAEdGVzdAAAAAAAAAAAAAAAAP//////////AAAAAAAAAIIAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAAHcAAAAHc3NoLXJzYQAAAAMBAAEAAABhANFS2kaktpSGc+CcmEKPyw9mJC4nZKxHKTgLVZeaGbFZOvJTNzBspQHdy7Q1uKSfktxpgjZnksiu/tFF9ngyY2KFoc+U88ya95IZUycBGCUbBQ8+bhDtw/icdDGQD5WnUwAAAG8AAAAHc3NoLXJzYQAAAGC8Y9Z2LQKhIhxf52773XaWrXdxP0t3GBVo4A10vUWiYoAGepr6rQIoGGXFxT4B9Gp+nEBJjOwKDXPrAevow0T9ca8gZN+0ykbhSrXLE5Ao48rqr3zP4O1/9P7e6gp0gw8=` - -func TestParseCert(t *testing.T) { - authKeyBytes := []byte(exampleSSHCert) - - key, _, _, rest, err := ParseAuthorizedKey(authKeyBytes) - if err != nil { - t.Fatalf("ParseAuthorizedKey: %v", err) - } - if len(rest) > 0 { - t.Errorf("rest: got %q, want empty", rest) - } - - if _, ok := key.(*Certificate); !ok { - t.Fatalf("got %v (%T), want *Certificate", key, key) - } - - marshaled := MarshalAuthorizedKey(key) - // Before comparison, remove the trailing newline that - // MarshalAuthorizedKey adds. - marshaled = marshaled[:len(marshaled)-1] - if !bytes.Equal(authKeyBytes, marshaled) { - t.Errorf("marshaled certificate does not match original: got %q, want %q", marshaled, authKeyBytes) - } -} - -// Cert generated by ssh-keygen OpenSSH_6.8p1 OS X 10.10.3 -// % ssh-keygen -s ca -I testcert -O source-address=192.168.1.0/24 -O force-command=/bin/sleep user.pub -// user.pub key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDACh1rt2DXfV3hk6fszSQcQ/rueMId0kVD9U7nl8cfEnFxqOCrNT92g4laQIGl2mn8lsGZfTLg8ksHq3gkvgO3oo/0wHy4v32JeBOHTsN5AL4gfHNEhWeWb50ev47hnTsRIt9P4dxogeUo/hTu7j9+s9lLpEQXCvq6xocXQt0j8MV9qZBBXFLXVT3cWIkSqOdwt/5ZBg+1GSrc7WfCXVWgTk4a20uPMuJPxU4RQwZW6X3+O8Pqo8C3cW0OzZRFP6gUYUKUsTI5WntlS+LAxgw1mZNsozFGdbiOPRnEryE3SRldh9vjDR3tin1fGpA5P7+CEB/bqaXtG3V+F2OkqaMN -// Critical Options: -// force-command /bin/sleep -// source-address 192.168.1.0/24 -// Extensions: -// permit-X11-forwarding -// permit-agent-forwarding -// permit-port-forwarding -// permit-pty -// permit-user-rc -const exampleSSHCertWithOptions = `ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgDyysCJY0XrO1n03EeRRoITnTPdjENFmWDs9X58PP3VUAAAADAQABAAABAQDACh1rt2DXfV3hk6fszSQcQ/rueMId0kVD9U7nl8cfEnFxqOCrNT92g4laQIGl2mn8lsGZfTLg8ksHq3gkvgO3oo/0wHy4v32JeBOHTsN5AL4gfHNEhWeWb50ev47hnTsRIt9P4dxogeUo/hTu7j9+s9lLpEQXCvq6xocXQt0j8MV9qZBBXFLXVT3cWIkSqOdwt/5ZBg+1GSrc7WfCXVWgTk4a20uPMuJPxU4RQwZW6X3+O8Pqo8C3cW0OzZRFP6gUYUKUsTI5WntlS+LAxgw1mZNsozFGdbiOPRnEryE3SRldh9vjDR3tin1fGpA5P7+CEB/bqaXtG3V+F2OkqaMNAAAAAAAAAAAAAAABAAAACHRlc3RjZXJ0AAAAAAAAAAAAAAAA//////////8AAABLAAAADWZvcmNlLWNvbW1hbmQAAAAOAAAACi9iaW4vc2xlZXAAAAAOc291cmNlLWFkZHJlc3MAAAASAAAADjE5Mi4xNjguMS4wLzI0AAAAggAAABVwZXJtaXQtWDExLWZvcndhcmRpbmcAAAAAAAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtcG9ydC1mb3J3YXJkaW5nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXNlci1yYwAAAAAAAAAAAAABFwAAAAdzc2gtcnNhAAAAAwEAAQAAAQEAwU+c5ui5A8+J/CFpjW8wCa52bEODA808WWQDCSuTG/eMXNf59v9Y8Pk0F1E9dGCosSNyVcB/hacUrc6He+i97+HJCyKavBsE6GDxrjRyxYqAlfcOXi/IVmaUGiO8OQ39d4GHrjToInKvExSUeleQyH4Y4/e27T/pILAqPFL3fyrvMLT5qU9QyIt6zIpa7GBP5+urouNavMprV3zsfIqNBbWypinOQAw823a5wN+zwXnhZrgQiHZ/USG09Y6k98y1dTVz8YHlQVR4D3lpTAsKDKJ5hCH9WU4fdf+lU8OyNGaJ/vz0XNqxcToe1l4numLTnaoSuH89pHryjqurB7lJKwAAAQ8AAAAHc3NoLXJzYQAAAQCaHvUIoPL1zWUHIXLvu96/HU1s/i4CAW2IIEuGgxCUCiFj6vyTyYtgxQxcmbfZf6eaITlS6XJZa7Qq4iaFZh75C1DXTX8labXhRSD4E2t//AIP9MC1rtQC5xo6FmbQ+BoKcDskr+mNACcbRSxs3IL3bwCfWDnIw2WbVox9ZdcthJKk4UoCW4ix4QwdHw7zlddlz++fGEEVhmTbll1SUkycGApPFBsAYRTMupUJcYPIeReBI/m8XfkoMk99bV8ZJQTAd7OekHY2/48Ff53jLmyDjP7kNw1F8OaPtkFs6dGJXta4krmaekPy87j+35In5hFj7yoOqvSbmYUkeX70/GGQ` - -func TestParseCertWithOptions(t *testing.T) { - opts := map[string]string{ - "source-address": "192.168.1.0/24", - "force-command": "/bin/sleep", - } - exts := map[string]string{ - "permit-X11-forwarding": "", - "permit-agent-forwarding": "", - "permit-port-forwarding": "", - "permit-pty": "", - "permit-user-rc": "", - } - authKeyBytes := []byte(exampleSSHCertWithOptions) - - key, _, _, rest, err := ParseAuthorizedKey(authKeyBytes) - if err != nil { - t.Fatalf("ParseAuthorizedKey: %v", err) - } - if len(rest) > 0 { - t.Errorf("rest: got %q, want empty", rest) - } - cert, ok := key.(*Certificate) - if !ok { - t.Fatalf("got %v (%T), want *Certificate", key, key) - } - if !reflect.DeepEqual(cert.CriticalOptions, opts) { - t.Errorf("unexpected critical options - got %v, want %v", cert.CriticalOptions, opts) - } - if !reflect.DeepEqual(cert.Extensions, exts) { - t.Errorf("unexpected Extensions - got %v, want %v", cert.Extensions, exts) - } - marshaled := MarshalAuthorizedKey(key) - // Before comparison, remove the trailing newline that - // MarshalAuthorizedKey adds. - marshaled = marshaled[:len(marshaled)-1] - if !bytes.Equal(authKeyBytes, marshaled) { - t.Errorf("marshaled certificate does not match original: got %q, want %q", marshaled, authKeyBytes) - } -} - -func TestValidateCert(t *testing.T) { - key, _, _, _, err := ParseAuthorizedKey([]byte(exampleSSHCert)) - if err != nil { - t.Fatalf("ParseAuthorizedKey: %v", err) - } - validCert, ok := key.(*Certificate) - if !ok { - t.Fatalf("got %v (%T), want *Certificate", key, key) - } - checker := CertChecker{} - checker.IsUserAuthority = func(k PublicKey) bool { - return bytes.Equal(k.Marshal(), validCert.SignatureKey.Marshal()) - } - - if err := checker.CheckCert("user", validCert); err != nil { - t.Errorf("Unable to validate certificate: %v", err) - } - invalidCert := &Certificate{ - Key: testPublicKeys["rsa"], - SignatureKey: testPublicKeys["ecdsa"], - ValidBefore: CertTimeInfinity, - Signature: &Signature{}, - } - if err := checker.CheckCert("user", invalidCert); err == nil { - t.Error("Invalid cert signature passed validation") - } -} - -func TestValidateCertTime(t *testing.T) { - cert := Certificate{ - ValidPrincipals: []string{"user"}, - Key: testPublicKeys["rsa"], - ValidAfter: 50, - ValidBefore: 100, - } - - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - - for ts, ok := range map[int64]bool{ - 25: false, - 50: true, - 99: true, - 100: false, - 125: false, - } { - checker := CertChecker{ - Clock: func() time.Time { return time.Unix(ts, 0) }, - } - checker.IsUserAuthority = func(k PublicKey) bool { - return bytes.Equal(k.Marshal(), - testPublicKeys["ecdsa"].Marshal()) - } - - if v := checker.CheckCert("user", &cert); (v == nil) != ok { - t.Errorf("Authenticate(%d): %v", ts, v) - } - } -} - -// TODO(hanwen): tests for -// -// host keys: -// * fallbacks - -func TestHostKeyCert(t *testing.T) { - cert := &Certificate{ - ValidPrincipals: []string{"hostname", "hostname.domain", "otherhost"}, - Key: testPublicKeys["rsa"], - ValidBefore: CertTimeInfinity, - CertType: HostCert, - } - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - - checker := &CertChecker{ - IsHostAuthority: func(p PublicKey, addr string) bool { - return addr == "hostname:22" && bytes.Equal(testPublicKeys["ecdsa"].Marshal(), p.Marshal()) - }, - } - - certSigner, err := NewCertSigner(cert, testSigners["rsa"]) - if err != nil { - t.Errorf("NewCertSigner: %v", err) - } - - for _, test := range []struct { - addr string - succeed bool - }{ - {addr: "hostname:22", succeed: true}, - {addr: "otherhost:22", succeed: false}, // The certificate is valid for 'otherhost' as hostname, but we only recognize the authority of the signer for the address 'hostname:22' - {addr: "lasthost:22", succeed: false}, - } { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - errc := make(chan error) - - go func() { - conf := ServerConfig{ - NoClientAuth: true, - } - conf.AddHostKey(certSigner) - _, _, _, err := NewServerConn(c1, &conf) - errc <- err - }() - - config := &ClientConfig{ - User: "user", - HostKeyCallback: checker.CheckHostKey, - } - _, _, _, err = NewClientConn(c2, test.addr, config) - - if (err == nil) != test.succeed { - t.Fatalf("NewClientConn(%q): %v", test.addr, err) - } - - err = <-errc - if (err == nil) != test.succeed { - t.Fatalf("NewServerConn(%q): %v", test.addr, err) - } - } -} - -func TestCertTypes(t *testing.T) { - var testVars = []struct { - name string - keys func() Signer - }{ - { - name: CertAlgoECDSA256v01, - keys: func() Signer { - s, _ := ParsePrivateKey(testdata.PEMBytes["ecdsap256"]) - return s - }, - }, - { - name: CertAlgoECDSA384v01, - keys: func() Signer { - s, _ := ParsePrivateKey(testdata.PEMBytes["ecdsap384"]) - return s - }, - }, - { - name: CertAlgoECDSA521v01, - keys: func() Signer { - s, _ := ParsePrivateKey(testdata.PEMBytes["ecdsap521"]) - return s - }, - }, - { - name: CertAlgoED25519v01, - keys: func() Signer { - s, _ := ParsePrivateKey(testdata.PEMBytes["ed25519"]) - return s - }, - }, - { - name: CertAlgoRSAv01, - keys: func() Signer { - s, _ := ParsePrivateKey(testdata.PEMBytes["rsa"]) - return s - }, - }, - { - name: CertAlgoDSAv01, - keys: func() Signer { - s, _ := ParsePrivateKey(testdata.PEMBytes["dsa"]) - return s - }, - }, - } - - k, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) - if err != nil { - t.Fatalf("error generating host key: %v", err) - } - - signer, err := NewSignerFromKey(k) - if err != nil { - t.Fatalf("error generating signer for ssh listener: %v", err) - } - - conf := &ServerConfig{ - PublicKeyCallback: func(c ConnMetadata, k PublicKey) (*Permissions, error) { - return new(Permissions), nil - }, - } - conf.AddHostKey(signer) - - for _, m := range testVars { - t.Run(m.name, func(t *testing.T) { - - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - go NewServerConn(c1, conf) - - priv := m.keys() - if err != nil { - t.Fatalf("error generating ssh pubkey: %v", err) - } - - cert := &Certificate{ - CertType: UserCert, - Key: priv.PublicKey(), - } - cert.SignCert(rand.Reader, priv) - - certSigner, err := NewCertSigner(cert, priv) - if err != nil { - t.Fatalf("error generating cert signer: %v", err) - } - - config := &ClientConfig{ - User: "user", - HostKeyCallback: func(h string, r net.Addr, k PublicKey) error { return nil }, - Auth: []AuthMethod{PublicKeys(certSigner)}, - } - - _, _, _, err = NewClientConn(c2, "", config) - if err != nil { - t.Fatalf("error connecting: %v", err) - } - }) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/channel.go b/vendor/golang.org/x/crypto/ssh/channel.go deleted file mode 100644 index c0834c00..00000000 --- a/vendor/golang.org/x/crypto/ssh/channel.go +++ /dev/null @@ -1,633 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "encoding/binary" - "errors" - "fmt" - "io" - "log" - "sync" -) - -const ( - minPacketLength = 9 - // channelMaxPacket contains the maximum number of bytes that will be - // sent in a single packet. As per RFC 4253, section 6.1, 32k is also - // the minimum. - channelMaxPacket = 1 << 15 - // We follow OpenSSH here. - channelWindowSize = 64 * channelMaxPacket -) - -// NewChannel represents an incoming request to a channel. It must either be -// accepted for use by calling Accept, or rejected by calling Reject. -type NewChannel interface { - // Accept accepts the channel creation request. It returns the Channel - // and a Go channel containing SSH requests. The Go channel must be - // serviced otherwise the Channel will hang. - Accept() (Channel, <-chan *Request, error) - - // Reject rejects the channel creation request. After calling - // this, no other methods on the Channel may be called. - Reject(reason RejectionReason, message string) error - - // ChannelType returns the type of the channel, as supplied by the - // client. - ChannelType() string - - // ExtraData returns the arbitrary payload for this channel, as supplied - // by the client. This data is specific to the channel type. - ExtraData() []byte -} - -// A Channel is an ordered, reliable, flow-controlled, duplex stream -// that is multiplexed over an SSH connection. -type Channel interface { - // Read reads up to len(data) bytes from the channel. - Read(data []byte) (int, error) - - // Write writes len(data) bytes to the channel. - Write(data []byte) (int, error) - - // Close signals end of channel use. No data may be sent after this - // call. - Close() error - - // CloseWrite signals the end of sending in-band - // data. Requests may still be sent, and the other side may - // still send data - CloseWrite() error - - // SendRequest sends a channel request. If wantReply is true, - // it will wait for a reply and return the result as a - // boolean, otherwise the return value will be false. Channel - // requests are out-of-band messages so they may be sent even - // if the data stream is closed or blocked by flow control. - // If the channel is closed before a reply is returned, io.EOF - // is returned. - SendRequest(name string, wantReply bool, payload []byte) (bool, error) - - // Stderr returns an io.ReadWriter that writes to this channel - // with the extended data type set to stderr. Stderr may - // safely be read and written from a different goroutine than - // Read and Write respectively. - Stderr() io.ReadWriter -} - -// Request is a request sent outside of the normal stream of -// data. Requests can either be specific to an SSH channel, or they -// can be global. -type Request struct { - Type string - WantReply bool - Payload []byte - - ch *channel - mux *mux -} - -// Reply sends a response to a request. It must be called for all requests -// where WantReply is true and is a no-op otherwise. The payload argument is -// ignored for replies to channel-specific requests. -func (r *Request) Reply(ok bool, payload []byte) error { - if !r.WantReply { - return nil - } - - if r.ch == nil { - return r.mux.ackRequest(ok, payload) - } - - return r.ch.ackRequest(ok) -} - -// RejectionReason is an enumeration used when rejecting channel creation -// requests. See RFC 4254, section 5.1. -type RejectionReason uint32 - -const ( - Prohibited RejectionReason = iota + 1 - ConnectionFailed - UnknownChannelType - ResourceShortage -) - -// String converts the rejection reason to human readable form. -func (r RejectionReason) String() string { - switch r { - case Prohibited: - return "administratively prohibited" - case ConnectionFailed: - return "connect failed" - case UnknownChannelType: - return "unknown channel type" - case ResourceShortage: - return "resource shortage" - } - return fmt.Sprintf("unknown reason %d", int(r)) -} - -func min(a uint32, b int) uint32 { - if a < uint32(b) { - return a - } - return uint32(b) -} - -type channelDirection uint8 - -const ( - channelInbound channelDirection = iota - channelOutbound -) - -// channel is an implementation of the Channel interface that works -// with the mux class. -type channel struct { - // R/O after creation - chanType string - extraData []byte - localId, remoteId uint32 - - // maxIncomingPayload and maxRemotePayload are the maximum - // payload sizes of normal and extended data packets for - // receiving and sending, respectively. The wire packet will - // be 9 or 13 bytes larger (excluding encryption overhead). - maxIncomingPayload uint32 - maxRemotePayload uint32 - - mux *mux - - // decided is set to true if an accept or reject message has been sent - // (for outbound channels) or received (for inbound channels). - decided bool - - // direction contains either channelOutbound, for channels created - // locally, or channelInbound, for channels created by the peer. - direction channelDirection - - // Pending internal channel messages. - msg chan interface{} - - // Since requests have no ID, there can be only one request - // with WantReply=true outstanding. This lock is held by a - // goroutine that has such an outgoing request pending. - sentRequestMu sync.Mutex - - incomingRequests chan *Request - - sentEOF bool - - // thread-safe data - remoteWin window - pending *buffer - extPending *buffer - - // windowMu protects myWindow, the flow-control window. - windowMu sync.Mutex - myWindow uint32 - - // writeMu serializes calls to mux.conn.writePacket() and - // protects sentClose and packetPool. This mutex must be - // different from windowMu, as writePacket can block if there - // is a key exchange pending. - writeMu sync.Mutex - sentClose bool - - // packetPool has a buffer for each extended channel ID to - // save allocations during writes. - packetPool map[uint32][]byte -} - -// writePacket sends a packet. If the packet is a channel close, it updates -// sentClose. This method takes the lock c.writeMu. -func (ch *channel) writePacket(packet []byte) error { - ch.writeMu.Lock() - if ch.sentClose { - ch.writeMu.Unlock() - return io.EOF - } - ch.sentClose = (packet[0] == msgChannelClose) - err := ch.mux.conn.writePacket(packet) - ch.writeMu.Unlock() - return err -} - -func (ch *channel) sendMessage(msg interface{}) error { - if debugMux { - log.Printf("send(%d): %#v", ch.mux.chanList.offset, msg) - } - - p := Marshal(msg) - binary.BigEndian.PutUint32(p[1:], ch.remoteId) - return ch.writePacket(p) -} - -// WriteExtended writes data to a specific extended stream. These streams are -// used, for example, for stderr. -func (ch *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) { - if ch.sentEOF { - return 0, io.EOF - } - // 1 byte message type, 4 bytes remoteId, 4 bytes data length - opCode := byte(msgChannelData) - headerLength := uint32(9) - if extendedCode > 0 { - headerLength += 4 - opCode = msgChannelExtendedData - } - - ch.writeMu.Lock() - packet := ch.packetPool[extendedCode] - // We don't remove the buffer from packetPool, so - // WriteExtended calls from different goroutines will be - // flagged as errors by the race detector. - ch.writeMu.Unlock() - - for len(data) > 0 { - space := min(ch.maxRemotePayload, len(data)) - if space, err = ch.remoteWin.reserve(space); err != nil { - return n, err - } - if want := headerLength + space; uint32(cap(packet)) < want { - packet = make([]byte, want) - } else { - packet = packet[:want] - } - - todo := data[:space] - - packet[0] = opCode - binary.BigEndian.PutUint32(packet[1:], ch.remoteId) - if extendedCode > 0 { - binary.BigEndian.PutUint32(packet[5:], uint32(extendedCode)) - } - binary.BigEndian.PutUint32(packet[headerLength-4:], uint32(len(todo))) - copy(packet[headerLength:], todo) - if err = ch.writePacket(packet); err != nil { - return n, err - } - - n += len(todo) - data = data[len(todo):] - } - - ch.writeMu.Lock() - ch.packetPool[extendedCode] = packet - ch.writeMu.Unlock() - - return n, err -} - -func (ch *channel) handleData(packet []byte) error { - headerLen := 9 - isExtendedData := packet[0] == msgChannelExtendedData - if isExtendedData { - headerLen = 13 - } - if len(packet) < headerLen { - // malformed data packet - return parseError(packet[0]) - } - - var extended uint32 - if isExtendedData { - extended = binary.BigEndian.Uint32(packet[5:]) - } - - length := binary.BigEndian.Uint32(packet[headerLen-4 : headerLen]) - if length == 0 { - return nil - } - if length > ch.maxIncomingPayload { - // TODO(hanwen): should send Disconnect? - return errors.New("ssh: incoming packet exceeds maximum payload size") - } - - data := packet[headerLen:] - if length != uint32(len(data)) { - return errors.New("ssh: wrong packet length") - } - - ch.windowMu.Lock() - if ch.myWindow < length { - ch.windowMu.Unlock() - // TODO(hanwen): should send Disconnect with reason? - return errors.New("ssh: remote side wrote too much") - } - ch.myWindow -= length - ch.windowMu.Unlock() - - if extended == 1 { - ch.extPending.write(data) - } else if extended > 0 { - // discard other extended data. - } else { - ch.pending.write(data) - } - return nil -} - -func (c *channel) adjustWindow(n uint32) error { - c.windowMu.Lock() - // Since myWindow is managed on our side, and can never exceed - // the initial window setting, we don't worry about overflow. - c.myWindow += uint32(n) - c.windowMu.Unlock() - return c.sendMessage(windowAdjustMsg{ - AdditionalBytes: uint32(n), - }) -} - -func (c *channel) ReadExtended(data []byte, extended uint32) (n int, err error) { - switch extended { - case 1: - n, err = c.extPending.Read(data) - case 0: - n, err = c.pending.Read(data) - default: - return 0, fmt.Errorf("ssh: extended code %d unimplemented", extended) - } - - if n > 0 { - err = c.adjustWindow(uint32(n)) - // sendWindowAdjust can return io.EOF if the remote - // peer has closed the connection, however we want to - // defer forwarding io.EOF to the caller of Read until - // the buffer has been drained. - if n > 0 && err == io.EOF { - err = nil - } - } - - return n, err -} - -func (c *channel) close() { - c.pending.eof() - c.extPending.eof() - close(c.msg) - close(c.incomingRequests) - c.writeMu.Lock() - // This is not necessary for a normal channel teardown, but if - // there was another error, it is. - c.sentClose = true - c.writeMu.Unlock() - // Unblock writers. - c.remoteWin.close() -} - -// responseMessageReceived is called when a success or failure message is -// received on a channel to check that such a message is reasonable for the -// given channel. -func (ch *channel) responseMessageReceived() error { - if ch.direction == channelInbound { - return errors.New("ssh: channel response message received on inbound channel") - } - if ch.decided { - return errors.New("ssh: duplicate response received for channel") - } - ch.decided = true - return nil -} - -func (ch *channel) handlePacket(packet []byte) error { - switch packet[0] { - case msgChannelData, msgChannelExtendedData: - return ch.handleData(packet) - case msgChannelClose: - ch.sendMessage(channelCloseMsg{PeersID: ch.remoteId}) - ch.mux.chanList.remove(ch.localId) - ch.close() - return nil - case msgChannelEOF: - // RFC 4254 is mute on how EOF affects dataExt messages but - // it is logical to signal EOF at the same time. - ch.extPending.eof() - ch.pending.eof() - return nil - } - - decoded, err := decode(packet) - if err != nil { - return err - } - - switch msg := decoded.(type) { - case *channelOpenFailureMsg: - if err := ch.responseMessageReceived(); err != nil { - return err - } - ch.mux.chanList.remove(msg.PeersID) - ch.msg <- msg - case *channelOpenConfirmMsg: - if err := ch.responseMessageReceived(); err != nil { - return err - } - if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { - return fmt.Errorf("ssh: invalid MaxPacketSize %d from peer", msg.MaxPacketSize) - } - ch.remoteId = msg.MyID - ch.maxRemotePayload = msg.MaxPacketSize - ch.remoteWin.add(msg.MyWindow) - ch.msg <- msg - case *windowAdjustMsg: - if !ch.remoteWin.add(msg.AdditionalBytes) { - return fmt.Errorf("ssh: invalid window update for %d bytes", msg.AdditionalBytes) - } - case *channelRequestMsg: - req := Request{ - Type: msg.Request, - WantReply: msg.WantReply, - Payload: msg.RequestSpecificData, - ch: ch, - } - - ch.incomingRequests <- &req - default: - ch.msg <- msg - } - return nil -} - -func (m *mux) newChannel(chanType string, direction channelDirection, extraData []byte) *channel { - ch := &channel{ - remoteWin: window{Cond: newCond()}, - myWindow: channelWindowSize, - pending: newBuffer(), - extPending: newBuffer(), - direction: direction, - incomingRequests: make(chan *Request, chanSize), - msg: make(chan interface{}, chanSize), - chanType: chanType, - extraData: extraData, - mux: m, - packetPool: make(map[uint32][]byte), - } - ch.localId = m.chanList.add(ch) - return ch -} - -var errUndecided = errors.New("ssh: must Accept or Reject channel") -var errDecidedAlready = errors.New("ssh: can call Accept or Reject only once") - -type extChannel struct { - code uint32 - ch *channel -} - -func (e *extChannel) Write(data []byte) (n int, err error) { - return e.ch.WriteExtended(data, e.code) -} - -func (e *extChannel) Read(data []byte) (n int, err error) { - return e.ch.ReadExtended(data, e.code) -} - -func (ch *channel) Accept() (Channel, <-chan *Request, error) { - if ch.decided { - return nil, nil, errDecidedAlready - } - ch.maxIncomingPayload = channelMaxPacket - confirm := channelOpenConfirmMsg{ - PeersID: ch.remoteId, - MyID: ch.localId, - MyWindow: ch.myWindow, - MaxPacketSize: ch.maxIncomingPayload, - } - ch.decided = true - if err := ch.sendMessage(confirm); err != nil { - return nil, nil, err - } - - return ch, ch.incomingRequests, nil -} - -func (ch *channel) Reject(reason RejectionReason, message string) error { - if ch.decided { - return errDecidedAlready - } - reject := channelOpenFailureMsg{ - PeersID: ch.remoteId, - Reason: reason, - Message: message, - Language: "en", - } - ch.decided = true - return ch.sendMessage(reject) -} - -func (ch *channel) Read(data []byte) (int, error) { - if !ch.decided { - return 0, errUndecided - } - return ch.ReadExtended(data, 0) -} - -func (ch *channel) Write(data []byte) (int, error) { - if !ch.decided { - return 0, errUndecided - } - return ch.WriteExtended(data, 0) -} - -func (ch *channel) CloseWrite() error { - if !ch.decided { - return errUndecided - } - ch.sentEOF = true - return ch.sendMessage(channelEOFMsg{ - PeersID: ch.remoteId}) -} - -func (ch *channel) Close() error { - if !ch.decided { - return errUndecided - } - - return ch.sendMessage(channelCloseMsg{ - PeersID: ch.remoteId}) -} - -// Extended returns an io.ReadWriter that sends and receives data on the given, -// SSH extended stream. Such streams are used, for example, for stderr. -func (ch *channel) Extended(code uint32) io.ReadWriter { - if !ch.decided { - return nil - } - return &extChannel{code, ch} -} - -func (ch *channel) Stderr() io.ReadWriter { - return ch.Extended(1) -} - -func (ch *channel) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { - if !ch.decided { - return false, errUndecided - } - - if wantReply { - ch.sentRequestMu.Lock() - defer ch.sentRequestMu.Unlock() - } - - msg := channelRequestMsg{ - PeersID: ch.remoteId, - Request: name, - WantReply: wantReply, - RequestSpecificData: payload, - } - - if err := ch.sendMessage(msg); err != nil { - return false, err - } - - if wantReply { - m, ok := (<-ch.msg) - if !ok { - return false, io.EOF - } - switch m.(type) { - case *channelRequestFailureMsg: - return false, nil - case *channelRequestSuccessMsg: - return true, nil - default: - return false, fmt.Errorf("ssh: unexpected response to channel request: %#v", m) - } - } - - return false, nil -} - -// ackRequest either sends an ack or nack to the channel request. -func (ch *channel) ackRequest(ok bool) error { - if !ch.decided { - return errUndecided - } - - var msg interface{} - if !ok { - msg = channelRequestFailureMsg{ - PeersID: ch.remoteId, - } - } else { - msg = channelRequestSuccessMsg{ - PeersID: ch.remoteId, - } - } - return ch.sendMessage(msg) -} - -func (ch *channel) ChannelType() string { - return ch.chanType -} - -func (ch *channel) ExtraData() []byte { - return ch.extraData -} diff --git a/vendor/golang.org/x/crypto/ssh/cipher.go b/vendor/golang.org/x/crypto/ssh/cipher.go deleted file mode 100644 index 30a49fdf..00000000 --- a/vendor/golang.org/x/crypto/ssh/cipher.go +++ /dev/null @@ -1,771 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "crypto/aes" - "crypto/cipher" - "crypto/des" - "crypto/rc4" - "crypto/subtle" - "encoding/binary" - "errors" - "fmt" - "hash" - "io" - "io/ioutil" - - "golang.org/x/crypto/internal/chacha20" - "golang.org/x/crypto/poly1305" -) - -const ( - packetSizeMultiple = 16 // TODO(huin) this should be determined by the cipher. - - // RFC 4253 section 6.1 defines a minimum packet size of 32768 that implementations - // MUST be able to process (plus a few more kilobytes for padding and mac). The RFC - // indicates implementations SHOULD be able to handle larger packet sizes, but then - // waffles on about reasonable limits. - // - // OpenSSH caps their maxPacket at 256kB so we choose to do - // the same. maxPacket is also used to ensure that uint32 - // length fields do not overflow, so it should remain well - // below 4G. - maxPacket = 256 * 1024 -) - -// noneCipher implements cipher.Stream and provides no encryption. It is used -// by the transport before the first key-exchange. -type noneCipher struct{} - -func (c noneCipher) XORKeyStream(dst, src []byte) { - copy(dst, src) -} - -func newAESCTR(key, iv []byte) (cipher.Stream, error) { - c, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - return cipher.NewCTR(c, iv), nil -} - -func newRC4(key, iv []byte) (cipher.Stream, error) { - return rc4.NewCipher(key) -} - -type cipherMode struct { - keySize int - ivSize int - create func(key, iv []byte, macKey []byte, algs directionAlgorithms) (packetCipher, error) -} - -func streamCipherMode(skip int, createFunc func(key, iv []byte) (cipher.Stream, error)) func(key, iv []byte, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - return func(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - stream, err := createFunc(key, iv) - if err != nil { - return nil, err - } - - var streamDump []byte - if skip > 0 { - streamDump = make([]byte, 512) - } - - for remainingToDump := skip; remainingToDump > 0; { - dumpThisTime := remainingToDump - if dumpThisTime > len(streamDump) { - dumpThisTime = len(streamDump) - } - stream.XORKeyStream(streamDump[:dumpThisTime], streamDump[:dumpThisTime]) - remainingToDump -= dumpThisTime - } - - mac := macModes[algs.MAC].new(macKey) - return &streamPacketCipher{ - mac: mac, - etm: macModes[algs.MAC].etm, - macResult: make([]byte, mac.Size()), - cipher: stream, - }, nil - } -} - -// cipherModes documents properties of supported ciphers. Ciphers not included -// are not supported and will not be negotiated, even if explicitly requested in -// ClientConfig.Crypto.Ciphers. -var cipherModes = map[string]*cipherMode{ - // Ciphers from RFC4344, which introduced many CTR-based ciphers. Algorithms - // are defined in the order specified in the RFC. - "aes128-ctr": {16, aes.BlockSize, streamCipherMode(0, newAESCTR)}, - "aes192-ctr": {24, aes.BlockSize, streamCipherMode(0, newAESCTR)}, - "aes256-ctr": {32, aes.BlockSize, streamCipherMode(0, newAESCTR)}, - - // Ciphers from RFC4345, which introduces security-improved arcfour ciphers. - // They are defined in the order specified in the RFC. - "arcfour128": {16, 0, streamCipherMode(1536, newRC4)}, - "arcfour256": {32, 0, streamCipherMode(1536, newRC4)}, - - // Cipher defined in RFC 4253, which describes SSH Transport Layer Protocol. - // Note that this cipher is not safe, as stated in RFC 4253: "Arcfour (and - // RC4) has problems with weak keys, and should be used with caution." - // RFC4345 introduces improved versions of Arcfour. - "arcfour": {16, 0, streamCipherMode(0, newRC4)}, - - // AEAD ciphers - gcmCipherID: {16, 12, newGCMCipher}, - chacha20Poly1305ID: {64, 0, newChaCha20Cipher}, - - // CBC mode is insecure and so is not included in the default config. - // (See http://www.isg.rhul.ac.uk/~kp/SandPfinal.pdf). If absolutely - // needed, it's possible to specify a custom Config to enable it. - // You should expect that an active attacker can recover plaintext if - // you do. - aes128cbcID: {16, aes.BlockSize, newAESCBCCipher}, - - // 3des-cbc is insecure and is not included in the default - // config. - tripledescbcID: {24, des.BlockSize, newTripleDESCBCCipher}, -} - -// prefixLen is the length of the packet prefix that contains the packet length -// and number of padding bytes. -const prefixLen = 5 - -// streamPacketCipher is a packetCipher using a stream cipher. -type streamPacketCipher struct { - mac hash.Hash - cipher cipher.Stream - etm bool - - // The following members are to avoid per-packet allocations. - prefix [prefixLen]byte - seqNumBytes [4]byte - padding [2 * packetSizeMultiple]byte - packetData []byte - macResult []byte -} - -// readPacket reads and decrypt a single packet from the reader argument. -func (s *streamPacketCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { - if _, err := io.ReadFull(r, s.prefix[:]); err != nil { - return nil, err - } - - var encryptedPaddingLength [1]byte - if s.mac != nil && s.etm { - copy(encryptedPaddingLength[:], s.prefix[4:5]) - s.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5]) - } else { - s.cipher.XORKeyStream(s.prefix[:], s.prefix[:]) - } - - length := binary.BigEndian.Uint32(s.prefix[0:4]) - paddingLength := uint32(s.prefix[4]) - - var macSize uint32 - if s.mac != nil { - s.mac.Reset() - binary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum) - s.mac.Write(s.seqNumBytes[:]) - if s.etm { - s.mac.Write(s.prefix[:4]) - s.mac.Write(encryptedPaddingLength[:]) - } else { - s.mac.Write(s.prefix[:]) - } - macSize = uint32(s.mac.Size()) - } - - if length <= paddingLength+1 { - return nil, errors.New("ssh: invalid packet length, packet too small") - } - - if length > maxPacket { - return nil, errors.New("ssh: invalid packet length, packet too large") - } - - // the maxPacket check above ensures that length-1+macSize - // does not overflow. - if uint32(cap(s.packetData)) < length-1+macSize { - s.packetData = make([]byte, length-1+macSize) - } else { - s.packetData = s.packetData[:length-1+macSize] - } - - if _, err := io.ReadFull(r, s.packetData); err != nil { - return nil, err - } - mac := s.packetData[length-1:] - data := s.packetData[:length-1] - - if s.mac != nil && s.etm { - s.mac.Write(data) - } - - s.cipher.XORKeyStream(data, data) - - if s.mac != nil { - if !s.etm { - s.mac.Write(data) - } - s.macResult = s.mac.Sum(s.macResult[:0]) - if subtle.ConstantTimeCompare(s.macResult, mac) != 1 { - return nil, errors.New("ssh: MAC failure") - } - } - - return s.packetData[:length-paddingLength-1], nil -} - -// writePacket encrypts and sends a packet of data to the writer argument -func (s *streamPacketCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { - if len(packet) > maxPacket { - return errors.New("ssh: packet too large") - } - - aadlen := 0 - if s.mac != nil && s.etm { - // packet length is not encrypted for EtM modes - aadlen = 4 - } - - paddingLength := packetSizeMultiple - (prefixLen+len(packet)-aadlen)%packetSizeMultiple - if paddingLength < 4 { - paddingLength += packetSizeMultiple - } - - length := len(packet) + 1 + paddingLength - binary.BigEndian.PutUint32(s.prefix[:], uint32(length)) - s.prefix[4] = byte(paddingLength) - padding := s.padding[:paddingLength] - if _, err := io.ReadFull(rand, padding); err != nil { - return err - } - - if s.mac != nil { - s.mac.Reset() - binary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum) - s.mac.Write(s.seqNumBytes[:]) - - if s.etm { - // For EtM algorithms, the packet length must stay unencrypted, - // but the following data (padding length) must be encrypted - s.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5]) - } - - s.mac.Write(s.prefix[:]) - - if !s.etm { - // For non-EtM algorithms, the algorithm is applied on unencrypted data - s.mac.Write(packet) - s.mac.Write(padding) - } - } - - if !(s.mac != nil && s.etm) { - // For EtM algorithms, the padding length has already been encrypted - // and the packet length must remain unencrypted - s.cipher.XORKeyStream(s.prefix[:], s.prefix[:]) - } - - s.cipher.XORKeyStream(packet, packet) - s.cipher.XORKeyStream(padding, padding) - - if s.mac != nil && s.etm { - // For EtM algorithms, packet and padding must be encrypted - s.mac.Write(packet) - s.mac.Write(padding) - } - - if _, err := w.Write(s.prefix[:]); err != nil { - return err - } - if _, err := w.Write(packet); err != nil { - return err - } - if _, err := w.Write(padding); err != nil { - return err - } - - if s.mac != nil { - s.macResult = s.mac.Sum(s.macResult[:0]) - if _, err := w.Write(s.macResult); err != nil { - return err - } - } - - return nil -} - -type gcmCipher struct { - aead cipher.AEAD - prefix [4]byte - iv []byte - buf []byte -} - -func newGCMCipher(key, iv, unusedMacKey []byte, unusedAlgs directionAlgorithms) (packetCipher, error) { - c, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - - aead, err := cipher.NewGCM(c) - if err != nil { - return nil, err - } - - return &gcmCipher{ - aead: aead, - iv: iv, - }, nil -} - -const gcmTagSize = 16 - -func (c *gcmCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { - // Pad out to multiple of 16 bytes. This is different from the - // stream cipher because that encrypts the length too. - padding := byte(packetSizeMultiple - (1+len(packet))%packetSizeMultiple) - if padding < 4 { - padding += packetSizeMultiple - } - - length := uint32(len(packet) + int(padding) + 1) - binary.BigEndian.PutUint32(c.prefix[:], length) - if _, err := w.Write(c.prefix[:]); err != nil { - return err - } - - if cap(c.buf) < int(length) { - c.buf = make([]byte, length) - } else { - c.buf = c.buf[:length] - } - - c.buf[0] = padding - copy(c.buf[1:], packet) - if _, err := io.ReadFull(rand, c.buf[1+len(packet):]); err != nil { - return err - } - c.buf = c.aead.Seal(c.buf[:0], c.iv, c.buf, c.prefix[:]) - if _, err := w.Write(c.buf); err != nil { - return err - } - c.incIV() - - return nil -} - -func (c *gcmCipher) incIV() { - for i := 4 + 7; i >= 4; i-- { - c.iv[i]++ - if c.iv[i] != 0 { - break - } - } -} - -func (c *gcmCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { - if _, err := io.ReadFull(r, c.prefix[:]); err != nil { - return nil, err - } - length := binary.BigEndian.Uint32(c.prefix[:]) - if length > maxPacket { - return nil, errors.New("ssh: max packet length exceeded") - } - - if cap(c.buf) < int(length+gcmTagSize) { - c.buf = make([]byte, length+gcmTagSize) - } else { - c.buf = c.buf[:length+gcmTagSize] - } - - if _, err := io.ReadFull(r, c.buf); err != nil { - return nil, err - } - - plain, err := c.aead.Open(c.buf[:0], c.iv, c.buf, c.prefix[:]) - if err != nil { - return nil, err - } - c.incIV() - - padding := plain[0] - if padding < 4 { - // padding is a byte, so it automatically satisfies - // the maximum size, which is 255. - return nil, fmt.Errorf("ssh: illegal padding %d", padding) - } - - if int(padding+1) >= len(plain) { - return nil, fmt.Errorf("ssh: padding %d too large", padding) - } - plain = plain[1 : length-uint32(padding)] - return plain, nil -} - -// cbcCipher implements aes128-cbc cipher defined in RFC 4253 section 6.1 -type cbcCipher struct { - mac hash.Hash - macSize uint32 - decrypter cipher.BlockMode - encrypter cipher.BlockMode - - // The following members are to avoid per-packet allocations. - seqNumBytes [4]byte - packetData []byte - macResult []byte - - // Amount of data we should still read to hide which - // verification error triggered. - oracleCamouflage uint32 -} - -func newCBCCipher(c cipher.Block, key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - cbc := &cbcCipher{ - mac: macModes[algs.MAC].new(macKey), - decrypter: cipher.NewCBCDecrypter(c, iv), - encrypter: cipher.NewCBCEncrypter(c, iv), - packetData: make([]byte, 1024), - } - if cbc.mac != nil { - cbc.macSize = uint32(cbc.mac.Size()) - } - - return cbc, nil -} - -func newAESCBCCipher(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - c, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - - cbc, err := newCBCCipher(c, key, iv, macKey, algs) - if err != nil { - return nil, err - } - - return cbc, nil -} - -func newTripleDESCBCCipher(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) { - c, err := des.NewTripleDESCipher(key) - if err != nil { - return nil, err - } - - cbc, err := newCBCCipher(c, key, iv, macKey, algs) - if err != nil { - return nil, err - } - - return cbc, nil -} - -func maxUInt32(a, b int) uint32 { - if a > b { - return uint32(a) - } - return uint32(b) -} - -const ( - cbcMinPacketSizeMultiple = 8 - cbcMinPacketSize = 16 - cbcMinPaddingSize = 4 -) - -// cbcError represents a verification error that may leak information. -type cbcError string - -func (e cbcError) Error() string { return string(e) } - -func (c *cbcCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { - p, err := c.readPacketLeaky(seqNum, r) - if err != nil { - if _, ok := err.(cbcError); ok { - // Verification error: read a fixed amount of - // data, to make distinguishing between - // failing MAC and failing length check more - // difficult. - io.CopyN(ioutil.Discard, r, int64(c.oracleCamouflage)) - } - } - return p, err -} - -func (c *cbcCipher) readPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) { - blockSize := c.decrypter.BlockSize() - - // Read the header, which will include some of the subsequent data in the - // case of block ciphers - this is copied back to the payload later. - // How many bytes of payload/padding will be read with this first read. - firstBlockLength := uint32((prefixLen + blockSize - 1) / blockSize * blockSize) - firstBlock := c.packetData[:firstBlockLength] - if _, err := io.ReadFull(r, firstBlock); err != nil { - return nil, err - } - - c.oracleCamouflage = maxPacket + 4 + c.macSize - firstBlockLength - - c.decrypter.CryptBlocks(firstBlock, firstBlock) - length := binary.BigEndian.Uint32(firstBlock[:4]) - if length > maxPacket { - return nil, cbcError("ssh: packet too large") - } - if length+4 < maxUInt32(cbcMinPacketSize, blockSize) { - // The minimum size of a packet is 16 (or the cipher block size, whichever - // is larger) bytes. - return nil, cbcError("ssh: packet too small") - } - // The length of the packet (including the length field but not the MAC) must - // be a multiple of the block size or 8, whichever is larger. - if (length+4)%maxUInt32(cbcMinPacketSizeMultiple, blockSize) != 0 { - return nil, cbcError("ssh: invalid packet length multiple") - } - - paddingLength := uint32(firstBlock[4]) - if paddingLength < cbcMinPaddingSize || length <= paddingLength+1 { - return nil, cbcError("ssh: invalid packet length") - } - - // Positions within the c.packetData buffer: - macStart := 4 + length - paddingStart := macStart - paddingLength - - // Entire packet size, starting before length, ending at end of mac. - entirePacketSize := macStart + c.macSize - - // Ensure c.packetData is large enough for the entire packet data. - if uint32(cap(c.packetData)) < entirePacketSize { - // Still need to upsize and copy, but this should be rare at runtime, only - // on upsizing the packetData buffer. - c.packetData = make([]byte, entirePacketSize) - copy(c.packetData, firstBlock) - } else { - c.packetData = c.packetData[:entirePacketSize] - } - - n, err := io.ReadFull(r, c.packetData[firstBlockLength:]) - if err != nil { - return nil, err - } - c.oracleCamouflage -= uint32(n) - - remainingCrypted := c.packetData[firstBlockLength:macStart] - c.decrypter.CryptBlocks(remainingCrypted, remainingCrypted) - - mac := c.packetData[macStart:] - if c.mac != nil { - c.mac.Reset() - binary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum) - c.mac.Write(c.seqNumBytes[:]) - c.mac.Write(c.packetData[:macStart]) - c.macResult = c.mac.Sum(c.macResult[:0]) - if subtle.ConstantTimeCompare(c.macResult, mac) != 1 { - return nil, cbcError("ssh: MAC failure") - } - } - - return c.packetData[prefixLen:paddingStart], nil -} - -func (c *cbcCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { - effectiveBlockSize := maxUInt32(cbcMinPacketSizeMultiple, c.encrypter.BlockSize()) - - // Length of encrypted portion of the packet (header, payload, padding). - // Enforce minimum padding and packet size. - encLength := maxUInt32(prefixLen+len(packet)+cbcMinPaddingSize, cbcMinPaddingSize) - // Enforce block size. - encLength = (encLength + effectiveBlockSize - 1) / effectiveBlockSize * effectiveBlockSize - - length := encLength - 4 - paddingLength := int(length) - (1 + len(packet)) - - // Overall buffer contains: header, payload, padding, mac. - // Space for the MAC is reserved in the capacity but not the slice length. - bufferSize := encLength + c.macSize - if uint32(cap(c.packetData)) < bufferSize { - c.packetData = make([]byte, encLength, bufferSize) - } else { - c.packetData = c.packetData[:encLength] - } - - p := c.packetData - - // Packet header. - binary.BigEndian.PutUint32(p, length) - p = p[4:] - p[0] = byte(paddingLength) - - // Payload. - p = p[1:] - copy(p, packet) - - // Padding. - p = p[len(packet):] - if _, err := io.ReadFull(rand, p); err != nil { - return err - } - - if c.mac != nil { - c.mac.Reset() - binary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum) - c.mac.Write(c.seqNumBytes[:]) - c.mac.Write(c.packetData) - // The MAC is now appended into the capacity reserved for it earlier. - c.packetData = c.mac.Sum(c.packetData) - } - - c.encrypter.CryptBlocks(c.packetData[:encLength], c.packetData[:encLength]) - - if _, err := w.Write(c.packetData); err != nil { - return err - } - - return nil -} - -const chacha20Poly1305ID = "chacha20-poly1305@openssh.com" - -// chacha20Poly1305Cipher implements the chacha20-poly1305@openssh.com -// AEAD, which is described here: -// -// https://tools.ietf.org/html/draft-josefsson-ssh-chacha20-poly1305-openssh-00 -// -// the methods here also implement padding, which RFC4253 Section 6 -// also requires of stream ciphers. -type chacha20Poly1305Cipher struct { - lengthKey [32]byte - contentKey [32]byte - buf []byte -} - -func newChaCha20Cipher(key, unusedIV, unusedMACKey []byte, unusedAlgs directionAlgorithms) (packetCipher, error) { - if len(key) != 64 { - panic(len(key)) - } - - c := &chacha20Poly1305Cipher{ - buf: make([]byte, 256), - } - - copy(c.contentKey[:], key[:32]) - copy(c.lengthKey[:], key[32:]) - return c, nil -} - -// The Poly1305 key is obtained by encrypting 32 0-bytes. -var chacha20PolyKeyInput [32]byte - -func (c *chacha20Poly1305Cipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { - var counter [16]byte - binary.BigEndian.PutUint64(counter[8:], uint64(seqNum)) - - var polyKey [32]byte - chacha20.XORKeyStream(polyKey[:], chacha20PolyKeyInput[:], &counter, &c.contentKey) - - encryptedLength := c.buf[:4] - if _, err := io.ReadFull(r, encryptedLength); err != nil { - return nil, err - } - - var lenBytes [4]byte - chacha20.XORKeyStream(lenBytes[:], encryptedLength, &counter, &c.lengthKey) - - length := binary.BigEndian.Uint32(lenBytes[:]) - if length > maxPacket { - return nil, errors.New("ssh: invalid packet length, packet too large") - } - - contentEnd := 4 + length - packetEnd := contentEnd + poly1305.TagSize - if uint32(cap(c.buf)) < packetEnd { - c.buf = make([]byte, packetEnd) - copy(c.buf[:], encryptedLength) - } else { - c.buf = c.buf[:packetEnd] - } - - if _, err := io.ReadFull(r, c.buf[4:packetEnd]); err != nil { - return nil, err - } - - var mac [poly1305.TagSize]byte - copy(mac[:], c.buf[contentEnd:packetEnd]) - if !poly1305.Verify(&mac, c.buf[:contentEnd], &polyKey) { - return nil, errors.New("ssh: MAC failure") - } - - counter[0] = 1 - - plain := c.buf[4:contentEnd] - chacha20.XORKeyStream(plain, plain, &counter, &c.contentKey) - - padding := plain[0] - if padding < 4 { - // padding is a byte, so it automatically satisfies - // the maximum size, which is 255. - return nil, fmt.Errorf("ssh: illegal padding %d", padding) - } - - if int(padding)+1 >= len(plain) { - return nil, fmt.Errorf("ssh: padding %d too large", padding) - } - - plain = plain[1 : len(plain)-int(padding)] - - return plain, nil -} - -func (c *chacha20Poly1305Cipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error { - var counter [16]byte - binary.BigEndian.PutUint64(counter[8:], uint64(seqNum)) - - var polyKey [32]byte - chacha20.XORKeyStream(polyKey[:], chacha20PolyKeyInput[:], &counter, &c.contentKey) - - // There is no blocksize, so fall back to multiple of 8 byte - // padding, as described in RFC 4253, Sec 6. - const packetSizeMultiple = 8 - - padding := packetSizeMultiple - (1+len(payload))%packetSizeMultiple - if padding < 4 { - padding += packetSizeMultiple - } - - // size (4 bytes), padding (1), payload, padding, tag. - totalLength := 4 + 1 + len(payload) + padding + poly1305.TagSize - if cap(c.buf) < totalLength { - c.buf = make([]byte, totalLength) - } else { - c.buf = c.buf[:totalLength] - } - - binary.BigEndian.PutUint32(c.buf, uint32(1+len(payload)+padding)) - chacha20.XORKeyStream(c.buf, c.buf[:4], &counter, &c.lengthKey) - c.buf[4] = byte(padding) - copy(c.buf[5:], payload) - packetEnd := 5 + len(payload) + padding - if _, err := io.ReadFull(rand, c.buf[5+len(payload):packetEnd]); err != nil { - return err - } - - counter[0] = 1 - chacha20.XORKeyStream(c.buf[4:], c.buf[4:packetEnd], &counter, &c.contentKey) - - var mac [poly1305.TagSize]byte - poly1305.Sum(&mac, c.buf[:packetEnd], &polyKey) - - copy(c.buf[packetEnd:], mac[:]) - - if _, err := w.Write(c.buf); err != nil { - return err - } - return nil -} diff --git a/vendor/golang.org/x/crypto/ssh/cipher_test.go b/vendor/golang.org/x/crypto/ssh/cipher_test.go deleted file mode 100644 index a52d6e48..00000000 --- a/vendor/golang.org/x/crypto/ssh/cipher_test.go +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bytes" - "crypto" - "crypto/rand" - "testing" -) - -func TestDefaultCiphersExist(t *testing.T) { - for _, cipherAlgo := range supportedCiphers { - if _, ok := cipherModes[cipherAlgo]; !ok { - t.Errorf("supported cipher %q is unknown", cipherAlgo) - } - } - for _, cipherAlgo := range preferredCiphers { - if _, ok := cipherModes[cipherAlgo]; !ok { - t.Errorf("preferred cipher %q is unknown", cipherAlgo) - } - } -} - -func TestPacketCiphers(t *testing.T) { - defaultMac := "hmac-sha2-256" - defaultCipher := "aes128-ctr" - for cipher := range cipherModes { - t.Run("cipher="+cipher, - func(t *testing.T) { testPacketCipher(t, cipher, defaultMac) }) - } - for mac := range macModes { - t.Run("mac="+mac, - func(t *testing.T) { testPacketCipher(t, defaultCipher, mac) }) - } -} - -func testPacketCipher(t *testing.T, cipher, mac string) { - kr := &kexResult{Hash: crypto.SHA1} - algs := directionAlgorithms{ - Cipher: cipher, - MAC: mac, - Compression: "none", - } - client, err := newPacketCipher(clientKeys, algs, kr) - if err != nil { - t.Fatalf("newPacketCipher(client, %q, %q): %v", cipher, mac, err) - } - server, err := newPacketCipher(clientKeys, algs, kr) - if err != nil { - t.Fatalf("newPacketCipher(client, %q, %q): %v", cipher, mac, err) - } - - want := "bla bla" - input := []byte(want) - buf := &bytes.Buffer{} - if err := client.writePacket(0, buf, rand.Reader, input); err != nil { - t.Fatalf("writePacket(%q, %q): %v", cipher, mac, err) - } - - packet, err := server.readPacket(0, buf) - if err != nil { - t.Fatalf("readPacket(%q, %q): %v", cipher, mac, err) - } - - if string(packet) != want { - t.Errorf("roundtrip(%q, %q): got %q, want %q", cipher, mac, packet, want) - } -} - -func TestCBCOracleCounterMeasure(t *testing.T) { - kr := &kexResult{Hash: crypto.SHA1} - algs := directionAlgorithms{ - Cipher: aes128cbcID, - MAC: "hmac-sha1", - Compression: "none", - } - client, err := newPacketCipher(clientKeys, algs, kr) - if err != nil { - t.Fatalf("newPacketCipher(client): %v", err) - } - - want := "bla bla" - input := []byte(want) - buf := &bytes.Buffer{} - if err := client.writePacket(0, buf, rand.Reader, input); err != nil { - t.Errorf("writePacket: %v", err) - } - - packetSize := buf.Len() - buf.Write(make([]byte, 2*maxPacket)) - - // We corrupt each byte, but this usually will only test the - // 'packet too large' or 'MAC failure' cases. - lastRead := -1 - for i := 0; i < packetSize; i++ { - server, err := newPacketCipher(clientKeys, algs, kr) - if err != nil { - t.Fatalf("newPacketCipher(client): %v", err) - } - - fresh := &bytes.Buffer{} - fresh.Write(buf.Bytes()) - fresh.Bytes()[i] ^= 0x01 - - before := fresh.Len() - _, err = server.readPacket(0, fresh) - if err == nil { - t.Errorf("corrupt byte %d: readPacket succeeded ", i) - continue - } - if _, ok := err.(cbcError); !ok { - t.Errorf("corrupt byte %d: got %v (%T), want cbcError", i, err, err) - continue - } - - after := fresh.Len() - bytesRead := before - after - if bytesRead < maxPacket { - t.Errorf("corrupt byte %d: read %d bytes, want more than %d", i, bytesRead, maxPacket) - continue - } - - if i > 0 && bytesRead != lastRead { - t.Errorf("corrupt byte %d: read %d bytes, want %d bytes read", i, bytesRead, lastRead) - } - lastRead = bytesRead - } -} diff --git a/vendor/golang.org/x/crypto/ssh/client.go b/vendor/golang.org/x/crypto/ssh/client.go deleted file mode 100644 index 6fd19945..00000000 --- a/vendor/golang.org/x/crypto/ssh/client.go +++ /dev/null @@ -1,278 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bytes" - "errors" - "fmt" - "net" - "os" - "sync" - "time" -) - -// Client implements a traditional SSH client that supports shells, -// subprocesses, TCP port/streamlocal forwarding and tunneled dialing. -type Client struct { - Conn - - forwards forwardList // forwarded tcpip connections from the remote side - mu sync.Mutex - channelHandlers map[string]chan NewChannel -} - -// HandleChannelOpen returns a channel on which NewChannel requests -// for the given type are sent. If the type already is being handled, -// nil is returned. The channel is closed when the connection is closed. -func (c *Client) HandleChannelOpen(channelType string) <-chan NewChannel { - c.mu.Lock() - defer c.mu.Unlock() - if c.channelHandlers == nil { - // The SSH channel has been closed. - c := make(chan NewChannel) - close(c) - return c - } - - ch := c.channelHandlers[channelType] - if ch != nil { - return nil - } - - ch = make(chan NewChannel, chanSize) - c.channelHandlers[channelType] = ch - return ch -} - -// NewClient creates a Client on top of the given connection. -func NewClient(c Conn, chans <-chan NewChannel, reqs <-chan *Request) *Client { - conn := &Client{ - Conn: c, - channelHandlers: make(map[string]chan NewChannel, 1), - } - - go conn.handleGlobalRequests(reqs) - go conn.handleChannelOpens(chans) - go func() { - conn.Wait() - conn.forwards.closeAll() - }() - go conn.forwards.handleChannels(conn.HandleChannelOpen("forwarded-tcpip")) - go conn.forwards.handleChannels(conn.HandleChannelOpen("forwarded-streamlocal@openssh.com")) - return conn -} - -// NewClientConn establishes an authenticated SSH connection using c -// as the underlying transport. The Request and NewChannel channels -// must be serviced or the connection will hang. -func NewClientConn(c net.Conn, addr string, config *ClientConfig) (Conn, <-chan NewChannel, <-chan *Request, error) { - fullConf := *config - fullConf.SetDefaults() - if fullConf.HostKeyCallback == nil { - c.Close() - return nil, nil, nil, errors.New("ssh: must specify HostKeyCallback") - } - - conn := &connection{ - sshConn: sshConn{conn: c}, - } - - if err := conn.clientHandshake(addr, &fullConf); err != nil { - c.Close() - return nil, nil, nil, fmt.Errorf("ssh: handshake failed: %v", err) - } - conn.mux = newMux(conn.transport) - return conn, conn.mux.incomingChannels, conn.mux.incomingRequests, nil -} - -// clientHandshake performs the client side key exchange. See RFC 4253 Section -// 7. -func (c *connection) clientHandshake(dialAddress string, config *ClientConfig) error { - if config.ClientVersion != "" { - c.clientVersion = []byte(config.ClientVersion) - } else { - c.clientVersion = []byte(packageVersion) - } - var err error - c.serverVersion, err = exchangeVersions(c.sshConn.conn, c.clientVersion) - if err != nil { - return err - } - - c.transport = newClientTransport( - newTransport(c.sshConn.conn, config.Rand, true /* is client */), - c.clientVersion, c.serverVersion, config, dialAddress, c.sshConn.RemoteAddr()) - if err := c.transport.waitSession(); err != nil { - return err - } - - c.sessionID = c.transport.getSessionID() - return c.clientAuthenticate(config) -} - -// verifyHostKeySignature verifies the host key obtained in the key -// exchange. -func verifyHostKeySignature(hostKey PublicKey, result *kexResult) error { - sig, rest, ok := parseSignatureBody(result.Signature) - if len(rest) > 0 || !ok { - return errors.New("ssh: signature parse error") - } - - return hostKey.Verify(result.H, sig) -} - -// NewSession opens a new Session for this client. (A session is a remote -// execution of a program.) -func (c *Client) NewSession() (*Session, error) { - ch, in, err := c.OpenChannel("session", nil) - if err != nil { - return nil, err - } - return newSession(ch, in) -} - -func (c *Client) handleGlobalRequests(incoming <-chan *Request) { - for r := range incoming { - // This handles keepalive messages and matches - // the behaviour of OpenSSH. - r.Reply(false, nil) - } -} - -// handleChannelOpens channel open messages from the remote side. -func (c *Client) handleChannelOpens(in <-chan NewChannel) { - for ch := range in { - c.mu.Lock() - handler := c.channelHandlers[ch.ChannelType()] - c.mu.Unlock() - - if handler != nil { - handler <- ch - } else { - ch.Reject(UnknownChannelType, fmt.Sprintf("unknown channel type: %v", ch.ChannelType())) - } - } - - c.mu.Lock() - for _, ch := range c.channelHandlers { - close(ch) - } - c.channelHandlers = nil - c.mu.Unlock() -} - -// Dial starts a client connection to the given SSH server. It is a -// convenience function that connects to the given network address, -// initiates the SSH handshake, and then sets up a Client. For access -// to incoming channels and requests, use net.Dial with NewClientConn -// instead. -func Dial(network, addr string, config *ClientConfig) (*Client, error) { - conn, err := net.DialTimeout(network, addr, config.Timeout) - if err != nil { - return nil, err - } - c, chans, reqs, err := NewClientConn(conn, addr, config) - if err != nil { - return nil, err - } - return NewClient(c, chans, reqs), nil -} - -// HostKeyCallback is the function type used for verifying server -// keys. A HostKeyCallback must return nil if the host key is OK, or -// an error to reject it. It receives the hostname as passed to Dial -// or NewClientConn. The remote address is the RemoteAddr of the -// net.Conn underlying the the SSH connection. -type HostKeyCallback func(hostname string, remote net.Addr, key PublicKey) error - -// BannerCallback is the function type used for treat the banner sent by -// the server. A BannerCallback receives the message sent by the remote server. -type BannerCallback func(message string) error - -// A ClientConfig structure is used to configure a Client. It must not be -// modified after having been passed to an SSH function. -type ClientConfig struct { - // Config contains configuration that is shared between clients and - // servers. - Config - - // User contains the username to authenticate as. - User string - - // Auth contains possible authentication methods to use with the - // server. Only the first instance of a particular RFC 4252 method will - // be used during authentication. - Auth []AuthMethod - - // HostKeyCallback is called during the cryptographic - // handshake to validate the server's host key. The client - // configuration must supply this callback for the connection - // to succeed. The functions InsecureIgnoreHostKey or - // FixedHostKey can be used for simplistic host key checks. - HostKeyCallback HostKeyCallback - - // BannerCallback is called during the SSH dance to display a custom - // server's message. The client configuration can supply this callback to - // handle it as wished. The function BannerDisplayStderr can be used for - // simplistic display on Stderr. - BannerCallback BannerCallback - - // ClientVersion contains the version identification string that will - // be used for the connection. If empty, a reasonable default is used. - ClientVersion string - - // HostKeyAlgorithms lists the key types that the client will - // accept from the server as host key, in order of - // preference. If empty, a reasonable default is used. Any - // string returned from PublicKey.Type method may be used, or - // any of the CertAlgoXxxx and KeyAlgoXxxx constants. - HostKeyAlgorithms []string - - // Timeout is the maximum amount of time for the TCP connection to establish. - // - // A Timeout of zero means no timeout. - Timeout time.Duration -} - -// InsecureIgnoreHostKey returns a function that can be used for -// ClientConfig.HostKeyCallback to accept any host key. It should -// not be used for production code. -func InsecureIgnoreHostKey() HostKeyCallback { - return func(hostname string, remote net.Addr, key PublicKey) error { - return nil - } -} - -type fixedHostKey struct { - key PublicKey -} - -func (f *fixedHostKey) check(hostname string, remote net.Addr, key PublicKey) error { - if f.key == nil { - return fmt.Errorf("ssh: required host key was nil") - } - if !bytes.Equal(key.Marshal(), f.key.Marshal()) { - return fmt.Errorf("ssh: host key mismatch") - } - return nil -} - -// FixedHostKey returns a function for use in -// ClientConfig.HostKeyCallback to accept only a specific host key. -func FixedHostKey(key PublicKey) HostKeyCallback { - hk := &fixedHostKey{key} - return hk.check -} - -// BannerDisplayStderr returns a function that can be used for -// ClientConfig.BannerCallback to display banners on os.Stderr. -func BannerDisplayStderr() BannerCallback { - return func(banner string) error { - _, err := os.Stderr.WriteString(banner) - - return err - } -} diff --git a/vendor/golang.org/x/crypto/ssh/client_auth.go b/vendor/golang.org/x/crypto/ssh/client_auth.go deleted file mode 100644 index 5f44b774..00000000 --- a/vendor/golang.org/x/crypto/ssh/client_auth.go +++ /dev/null @@ -1,525 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bytes" - "errors" - "fmt" - "io" -) - -type authResult int - -const ( - authFailure authResult = iota - authPartialSuccess - authSuccess -) - -// clientAuthenticate authenticates with the remote server. See RFC 4252. -func (c *connection) clientAuthenticate(config *ClientConfig) error { - // initiate user auth session - if err := c.transport.writePacket(Marshal(&serviceRequestMsg{serviceUserAuth})); err != nil { - return err - } - packet, err := c.transport.readPacket() - if err != nil { - return err - } - var serviceAccept serviceAcceptMsg - if err := Unmarshal(packet, &serviceAccept); err != nil { - return err - } - - // during the authentication phase the client first attempts the "none" method - // then any untried methods suggested by the server. - tried := make(map[string]bool) - var lastMethods []string - - sessionID := c.transport.getSessionID() - for auth := AuthMethod(new(noneAuth)); auth != nil; { - ok, methods, err := auth.auth(sessionID, config.User, c.transport, config.Rand) - if err != nil { - return err - } - if ok == authSuccess { - // success - return nil - } else if ok == authFailure { - tried[auth.method()] = true - } - if methods == nil { - methods = lastMethods - } - lastMethods = methods - - auth = nil - - findNext: - for _, a := range config.Auth { - candidateMethod := a.method() - if tried[candidateMethod] { - continue - } - for _, meth := range methods { - if meth == candidateMethod { - auth = a - break findNext - } - } - } - } - return fmt.Errorf("ssh: unable to authenticate, attempted methods %v, no supported methods remain", keys(tried)) -} - -func keys(m map[string]bool) []string { - s := make([]string, 0, len(m)) - - for key := range m { - s = append(s, key) - } - return s -} - -// An AuthMethod represents an instance of an RFC 4252 authentication method. -type AuthMethod interface { - // auth authenticates user over transport t. - // Returns true if authentication is successful. - // If authentication is not successful, a []string of alternative - // method names is returned. If the slice is nil, it will be ignored - // and the previous set of possible methods will be reused. - auth(session []byte, user string, p packetConn, rand io.Reader) (authResult, []string, error) - - // method returns the RFC 4252 method name. - method() string -} - -// "none" authentication, RFC 4252 section 5.2. -type noneAuth int - -func (n *noneAuth) auth(session []byte, user string, c packetConn, rand io.Reader) (authResult, []string, error) { - if err := c.writePacket(Marshal(&userAuthRequestMsg{ - User: user, - Service: serviceSSH, - Method: "none", - })); err != nil { - return authFailure, nil, err - } - - return handleAuthResponse(c) -} - -func (n *noneAuth) method() string { - return "none" -} - -// passwordCallback is an AuthMethod that fetches the password through -// a function call, e.g. by prompting the user. -type passwordCallback func() (password string, err error) - -func (cb passwordCallback) auth(session []byte, user string, c packetConn, rand io.Reader) (authResult, []string, error) { - type passwordAuthMsg struct { - User string `sshtype:"50"` - Service string - Method string - Reply bool - Password string - } - - pw, err := cb() - // REVIEW NOTE: is there a need to support skipping a password attempt? - // The program may only find out that the user doesn't have a password - // when prompting. - if err != nil { - return authFailure, nil, err - } - - if err := c.writePacket(Marshal(&passwordAuthMsg{ - User: user, - Service: serviceSSH, - Method: cb.method(), - Reply: false, - Password: pw, - })); err != nil { - return authFailure, nil, err - } - - return handleAuthResponse(c) -} - -func (cb passwordCallback) method() string { - return "password" -} - -// Password returns an AuthMethod using the given password. -func Password(secret string) AuthMethod { - return passwordCallback(func() (string, error) { return secret, nil }) -} - -// PasswordCallback returns an AuthMethod that uses a callback for -// fetching a password. -func PasswordCallback(prompt func() (secret string, err error)) AuthMethod { - return passwordCallback(prompt) -} - -type publickeyAuthMsg struct { - User string `sshtype:"50"` - Service string - Method string - // HasSig indicates to the receiver packet that the auth request is signed and - // should be used for authentication of the request. - HasSig bool - Algoname string - PubKey []byte - // Sig is tagged with "rest" so Marshal will exclude it during - // validateKey - Sig []byte `ssh:"rest"` -} - -// publicKeyCallback is an AuthMethod that uses a set of key -// pairs for authentication. -type publicKeyCallback func() ([]Signer, error) - -func (cb publicKeyCallback) method() string { - return "publickey" -} - -func (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand io.Reader) (authResult, []string, error) { - // Authentication is performed by sending an enquiry to test if a key is - // acceptable to the remote. If the key is acceptable, the client will - // attempt to authenticate with the valid key. If not the client will repeat - // the process with the remaining keys. - - signers, err := cb() - if err != nil { - return authFailure, nil, err - } - var methods []string - for _, signer := range signers { - ok, err := validateKey(signer.PublicKey(), user, c) - if err != nil { - return authFailure, nil, err - } - if !ok { - continue - } - - pub := signer.PublicKey() - pubKey := pub.Marshal() - sign, err := signer.Sign(rand, buildDataSignedForAuth(session, userAuthRequestMsg{ - User: user, - Service: serviceSSH, - Method: cb.method(), - }, []byte(pub.Type()), pubKey)) - if err != nil { - return authFailure, nil, err - } - - // manually wrap the serialized signature in a string - s := Marshal(sign) - sig := make([]byte, stringLength(len(s))) - marshalString(sig, s) - msg := publickeyAuthMsg{ - User: user, - Service: serviceSSH, - Method: cb.method(), - HasSig: true, - Algoname: pub.Type(), - PubKey: pubKey, - Sig: sig, - } - p := Marshal(&msg) - if err := c.writePacket(p); err != nil { - return authFailure, nil, err - } - var success authResult - success, methods, err = handleAuthResponse(c) - if err != nil { - return authFailure, nil, err - } - - // If authentication succeeds or the list of available methods does not - // contain the "publickey" method, do not attempt to authenticate with any - // other keys. According to RFC 4252 Section 7, the latter can occur when - // additional authentication methods are required. - if success == authSuccess || !containsMethod(methods, cb.method()) { - return success, methods, err - } - } - - return authFailure, methods, nil -} - -func containsMethod(methods []string, method string) bool { - for _, m := range methods { - if m == method { - return true - } - } - - return false -} - -// validateKey validates the key provided is acceptable to the server. -func validateKey(key PublicKey, user string, c packetConn) (bool, error) { - pubKey := key.Marshal() - msg := publickeyAuthMsg{ - User: user, - Service: serviceSSH, - Method: "publickey", - HasSig: false, - Algoname: key.Type(), - PubKey: pubKey, - } - if err := c.writePacket(Marshal(&msg)); err != nil { - return false, err - } - - return confirmKeyAck(key, c) -} - -func confirmKeyAck(key PublicKey, c packetConn) (bool, error) { - pubKey := key.Marshal() - algoname := key.Type() - - for { - packet, err := c.readPacket() - if err != nil { - return false, err - } - switch packet[0] { - case msgUserAuthBanner: - if err := handleBannerResponse(c, packet); err != nil { - return false, err - } - case msgUserAuthPubKeyOk: - var msg userAuthPubKeyOkMsg - if err := Unmarshal(packet, &msg); err != nil { - return false, err - } - if msg.Algo != algoname || !bytes.Equal(msg.PubKey, pubKey) { - return false, nil - } - return true, nil - case msgUserAuthFailure: - return false, nil - default: - return false, unexpectedMessageError(msgUserAuthSuccess, packet[0]) - } - } -} - -// PublicKeys returns an AuthMethod that uses the given key -// pairs. -func PublicKeys(signers ...Signer) AuthMethod { - return publicKeyCallback(func() ([]Signer, error) { return signers, nil }) -} - -// PublicKeysCallback returns an AuthMethod that runs the given -// function to obtain a list of key pairs. -func PublicKeysCallback(getSigners func() (signers []Signer, err error)) AuthMethod { - return publicKeyCallback(getSigners) -} - -// handleAuthResponse returns whether the preceding authentication request succeeded -// along with a list of remaining authentication methods to try next and -// an error if an unexpected response was received. -func handleAuthResponse(c packetConn) (authResult, []string, error) { - for { - packet, err := c.readPacket() - if err != nil { - return authFailure, nil, err - } - - switch packet[0] { - case msgUserAuthBanner: - if err := handleBannerResponse(c, packet); err != nil { - return authFailure, nil, err - } - case msgUserAuthFailure: - var msg userAuthFailureMsg - if err := Unmarshal(packet, &msg); err != nil { - return authFailure, nil, err - } - if msg.PartialSuccess { - return authPartialSuccess, msg.Methods, nil - } - return authFailure, msg.Methods, nil - case msgUserAuthSuccess: - return authSuccess, nil, nil - default: - return authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0]) - } - } -} - -func handleBannerResponse(c packetConn, packet []byte) error { - var msg userAuthBannerMsg - if err := Unmarshal(packet, &msg); err != nil { - return err - } - - transport, ok := c.(*handshakeTransport) - if !ok { - return nil - } - - if transport.bannerCallback != nil { - return transport.bannerCallback(msg.Message) - } - - return nil -} - -// KeyboardInteractiveChallenge should print questions, optionally -// disabling echoing (e.g. for passwords), and return all the answers. -// Challenge may be called multiple times in a single session. After -// successful authentication, the server may send a challenge with no -// questions, for which the user and instruction messages should be -// printed. RFC 4256 section 3.3 details how the UI should behave for -// both CLI and GUI environments. -type KeyboardInteractiveChallenge func(user, instruction string, questions []string, echos []bool) (answers []string, err error) - -// KeyboardInteractive returns an AuthMethod using a prompt/response -// sequence controlled by the server. -func KeyboardInteractive(challenge KeyboardInteractiveChallenge) AuthMethod { - return challenge -} - -func (cb KeyboardInteractiveChallenge) method() string { - return "keyboard-interactive" -} - -func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packetConn, rand io.Reader) (authResult, []string, error) { - type initiateMsg struct { - User string `sshtype:"50"` - Service string - Method string - Language string - Submethods string - } - - if err := c.writePacket(Marshal(&initiateMsg{ - User: user, - Service: serviceSSH, - Method: "keyboard-interactive", - })); err != nil { - return authFailure, nil, err - } - - for { - packet, err := c.readPacket() - if err != nil { - return authFailure, nil, err - } - - // like handleAuthResponse, but with less options. - switch packet[0] { - case msgUserAuthBanner: - if err := handleBannerResponse(c, packet); err != nil { - return authFailure, nil, err - } - continue - case msgUserAuthInfoRequest: - // OK - case msgUserAuthFailure: - var msg userAuthFailureMsg - if err := Unmarshal(packet, &msg); err != nil { - return authFailure, nil, err - } - if msg.PartialSuccess { - return authPartialSuccess, msg.Methods, nil - } - return authFailure, msg.Methods, nil - case msgUserAuthSuccess: - return authSuccess, nil, nil - default: - return authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) - } - - var msg userAuthInfoRequestMsg - if err := Unmarshal(packet, &msg); err != nil { - return authFailure, nil, err - } - - // Manually unpack the prompt/echo pairs. - rest := msg.Prompts - var prompts []string - var echos []bool - for i := 0; i < int(msg.NumPrompts); i++ { - prompt, r, ok := parseString(rest) - if !ok || len(r) == 0 { - return authFailure, nil, errors.New("ssh: prompt format error") - } - prompts = append(prompts, string(prompt)) - echos = append(echos, r[0] != 0) - rest = r[1:] - } - - if len(rest) != 0 { - return authFailure, nil, errors.New("ssh: extra data following keyboard-interactive pairs") - } - - answers, err := cb(msg.User, msg.Instruction, prompts, echos) - if err != nil { - return authFailure, nil, err - } - - if len(answers) != len(prompts) { - return authFailure, nil, errors.New("ssh: not enough answers from keyboard-interactive callback") - } - responseLength := 1 + 4 - for _, a := range answers { - responseLength += stringLength(len(a)) - } - serialized := make([]byte, responseLength) - p := serialized - p[0] = msgUserAuthInfoResponse - p = p[1:] - p = marshalUint32(p, uint32(len(answers))) - for _, a := range answers { - p = marshalString(p, []byte(a)) - } - - if err := c.writePacket(serialized); err != nil { - return authFailure, nil, err - } - } -} - -type retryableAuthMethod struct { - authMethod AuthMethod - maxTries int -} - -func (r *retryableAuthMethod) auth(session []byte, user string, c packetConn, rand io.Reader) (ok authResult, methods []string, err error) { - for i := 0; r.maxTries <= 0 || i < r.maxTries; i++ { - ok, methods, err = r.authMethod.auth(session, user, c, rand) - if ok != authFailure || err != nil { // either success, partial success or error terminate - return ok, methods, err - } - } - return ok, methods, err -} - -func (r *retryableAuthMethod) method() string { - return r.authMethod.method() -} - -// RetryableAuthMethod is a decorator for other auth methods enabling them to -// be retried up to maxTries before considering that AuthMethod itself failed. -// If maxTries is <= 0, will retry indefinitely -// -// This is useful for interactive clients using challenge/response type -// authentication (e.g. Keyboard-Interactive, Password, etc) where the user -// could mistype their response resulting in the server issuing a -// SSH_MSG_USERAUTH_FAILURE (rfc4252 #8 [password] and rfc4256 #3.4 -// [keyboard-interactive]); Without this decorator, the non-retryable -// AuthMethod would be removed from future consideration, and never tried again -// (and so the user would never be able to retry their entry). -func RetryableAuthMethod(auth AuthMethod, maxTries int) AuthMethod { - return &retryableAuthMethod{authMethod: auth, maxTries: maxTries} -} diff --git a/vendor/golang.org/x/crypto/ssh/client_auth_test.go b/vendor/golang.org/x/crypto/ssh/client_auth_test.go deleted file mode 100644 index 5fbb20d8..00000000 --- a/vendor/golang.org/x/crypto/ssh/client_auth_test.go +++ /dev/null @@ -1,628 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bytes" - "crypto/rand" - "errors" - "fmt" - "os" - "strings" - "testing" -) - -type keyboardInteractive map[string]string - -func (cr keyboardInteractive) Challenge(user string, instruction string, questions []string, echos []bool) ([]string, error) { - var answers []string - for _, q := range questions { - answers = append(answers, cr[q]) - } - return answers, nil -} - -// reused internally by tests -var clientPassword = "tiger" - -// tryAuth runs a handshake with a given config against an SSH server -// with config serverConfig -func tryAuth(t *testing.T, config *ClientConfig) error { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - certChecker := CertChecker{ - IsUserAuthority: func(k PublicKey) bool { - return bytes.Equal(k.Marshal(), testPublicKeys["ecdsa"].Marshal()) - }, - UserKeyFallback: func(conn ConnMetadata, key PublicKey) (*Permissions, error) { - if conn.User() == "testuser" && bytes.Equal(key.Marshal(), testPublicKeys["rsa"].Marshal()) { - return nil, nil - } - - return nil, fmt.Errorf("pubkey for %q not acceptable", conn.User()) - }, - IsRevoked: func(c *Certificate) bool { - return c.Serial == 666 - }, - } - - serverConfig := &ServerConfig{ - PasswordCallback: func(conn ConnMetadata, pass []byte) (*Permissions, error) { - if conn.User() == "testuser" && string(pass) == clientPassword { - return nil, nil - } - return nil, errors.New("password auth failed") - }, - PublicKeyCallback: certChecker.Authenticate, - KeyboardInteractiveCallback: func(conn ConnMetadata, challenge KeyboardInteractiveChallenge) (*Permissions, error) { - ans, err := challenge("user", - "instruction", - []string{"question1", "question2"}, - []bool{true, true}) - if err != nil { - return nil, err - } - ok := conn.User() == "testuser" && ans[0] == "answer1" && ans[1] == "answer2" - if ok { - challenge("user", "motd", nil, nil) - return nil, nil - } - return nil, errors.New("keyboard-interactive failed") - }, - } - serverConfig.AddHostKey(testSigners["rsa"]) - - go newServer(c1, serverConfig) - _, _, _, err = NewClientConn(c2, "", config) - return err -} - -func TestClientAuthPublicKey(t *testing.T) { - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(testSigners["rsa"]), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - if err := tryAuth(t, config); err != nil { - t.Fatalf("unable to dial remote side: %s", err) - } -} - -func TestAuthMethodPassword(t *testing.T) { - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - Password(clientPassword), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - - if err := tryAuth(t, config); err != nil { - t.Fatalf("unable to dial remote side: %s", err) - } -} - -func TestAuthMethodFallback(t *testing.T) { - var passwordCalled bool - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(testSigners["rsa"]), - PasswordCallback( - func() (string, error) { - passwordCalled = true - return "WRONG", nil - }), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - - if err := tryAuth(t, config); err != nil { - t.Fatalf("unable to dial remote side: %s", err) - } - - if passwordCalled { - t.Errorf("password auth tried before public-key auth.") - } -} - -func TestAuthMethodWrongPassword(t *testing.T) { - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - Password("wrong"), - PublicKeys(testSigners["rsa"]), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - - if err := tryAuth(t, config); err != nil { - t.Fatalf("unable to dial remote side: %s", err) - } -} - -func TestAuthMethodKeyboardInteractive(t *testing.T) { - answers := keyboardInteractive(map[string]string{ - "question1": "answer1", - "question2": "answer2", - }) - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - KeyboardInteractive(answers.Challenge), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - - if err := tryAuth(t, config); err != nil { - t.Fatalf("unable to dial remote side: %s", err) - } -} - -func TestAuthMethodWrongKeyboardInteractive(t *testing.T) { - answers := keyboardInteractive(map[string]string{ - "question1": "answer1", - "question2": "WRONG", - }) - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - KeyboardInteractive(answers.Challenge), - }, - } - - if err := tryAuth(t, config); err == nil { - t.Fatalf("wrong answers should not have authenticated with KeyboardInteractive") - } -} - -// the mock server will only authenticate ssh-rsa keys -func TestAuthMethodInvalidPublicKey(t *testing.T) { - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(testSigners["dsa"]), - }, - } - - if err := tryAuth(t, config); err == nil { - t.Fatalf("dsa private key should not have authenticated with rsa public key") - } -} - -// the client should authenticate with the second key -func TestAuthMethodRSAandDSA(t *testing.T) { - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(testSigners["dsa"], testSigners["rsa"]), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - if err := tryAuth(t, config); err != nil { - t.Fatalf("client could not authenticate with rsa key: %v", err) - } -} - -func TestClientHMAC(t *testing.T) { - for _, mac := range supportedMACs { - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(testSigners["rsa"]), - }, - Config: Config{ - MACs: []string{mac}, - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - if err := tryAuth(t, config); err != nil { - t.Fatalf("client could not authenticate with mac algo %s: %v", mac, err) - } - } -} - -// issue 4285. -func TestClientUnsupportedCipher(t *testing.T) { - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(), - }, - Config: Config{ - Ciphers: []string{"aes128-cbc"}, // not currently supported - }, - } - if err := tryAuth(t, config); err == nil { - t.Errorf("expected no ciphers in common") - } -} - -func TestClientUnsupportedKex(t *testing.T) { - if os.Getenv("GO_BUILDER_NAME") != "" { - t.Skip("skipping known-flaky test on the Go build dashboard; see golang.org/issue/15198") - } - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(), - }, - Config: Config{ - KeyExchanges: []string{"diffie-hellman-group-exchange-sha256"}, // not currently supported - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - if err := tryAuth(t, config); err == nil || !strings.Contains(err.Error(), "common algorithm") { - t.Errorf("got %v, expected 'common algorithm'", err) - } -} - -func TestClientLoginCert(t *testing.T) { - cert := &Certificate{ - Key: testPublicKeys["rsa"], - ValidBefore: CertTimeInfinity, - CertType: UserCert, - } - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - certSigner, err := NewCertSigner(cert, testSigners["rsa"]) - if err != nil { - t.Fatalf("NewCertSigner: %v", err) - } - - clientConfig := &ClientConfig{ - User: "user", - HostKeyCallback: InsecureIgnoreHostKey(), - } - clientConfig.Auth = append(clientConfig.Auth, PublicKeys(certSigner)) - - // should succeed - if err := tryAuth(t, clientConfig); err != nil { - t.Errorf("cert login failed: %v", err) - } - - // corrupted signature - cert.Signature.Blob[0]++ - if err := tryAuth(t, clientConfig); err == nil { - t.Errorf("cert login passed with corrupted sig") - } - - // revoked - cert.Serial = 666 - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - if err := tryAuth(t, clientConfig); err == nil { - t.Errorf("revoked cert login succeeded") - } - cert.Serial = 1 - - // sign with wrong key - cert.SignCert(rand.Reader, testSigners["dsa"]) - if err := tryAuth(t, clientConfig); err == nil { - t.Errorf("cert login passed with non-authoritative key") - } - - // host cert - cert.CertType = HostCert - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - if err := tryAuth(t, clientConfig); err == nil { - t.Errorf("cert login passed with wrong type") - } - cert.CertType = UserCert - - // principal specified - cert.ValidPrincipals = []string{"user"} - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - if err := tryAuth(t, clientConfig); err != nil { - t.Errorf("cert login failed: %v", err) - } - - // wrong principal specified - cert.ValidPrincipals = []string{"fred"} - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - if err := tryAuth(t, clientConfig); err == nil { - t.Errorf("cert login passed with wrong principal") - } - cert.ValidPrincipals = nil - - // added critical option - cert.CriticalOptions = map[string]string{"root-access": "yes"} - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - if err := tryAuth(t, clientConfig); err == nil { - t.Errorf("cert login passed with unrecognized critical option") - } - - // allowed source address - cert.CriticalOptions = map[string]string{"source-address": "127.0.0.42/24,::42/120"} - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - if err := tryAuth(t, clientConfig); err != nil { - t.Errorf("cert login with source-address failed: %v", err) - } - - // disallowed source address - cert.CriticalOptions = map[string]string{"source-address": "127.0.0.42,::42"} - cert.SignCert(rand.Reader, testSigners["ecdsa"]) - if err := tryAuth(t, clientConfig); err == nil { - t.Errorf("cert login with source-address succeeded") - } -} - -func testPermissionsPassing(withPermissions bool, t *testing.T) { - serverConfig := &ServerConfig{ - PublicKeyCallback: func(conn ConnMetadata, key PublicKey) (*Permissions, error) { - if conn.User() == "nopermissions" { - return nil, nil - } - return &Permissions{}, nil - }, - } - serverConfig.AddHostKey(testSigners["rsa"]) - - clientConfig := &ClientConfig{ - Auth: []AuthMethod{ - PublicKeys(testSigners["rsa"]), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - if withPermissions { - clientConfig.User = "permissions" - } else { - clientConfig.User = "nopermissions" - } - - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - go NewClientConn(c2, "", clientConfig) - serverConn, err := newServer(c1, serverConfig) - if err != nil { - t.Fatal(err) - } - if p := serverConn.Permissions; (p != nil) != withPermissions { - t.Fatalf("withPermissions is %t, but Permissions object is %#v", withPermissions, p) - } -} - -func TestPermissionsPassing(t *testing.T) { - testPermissionsPassing(true, t) -} - -func TestNoPermissionsPassing(t *testing.T) { - testPermissionsPassing(false, t) -} - -func TestRetryableAuth(t *testing.T) { - n := 0 - passwords := []string{"WRONG1", "WRONG2"} - - config := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - RetryableAuthMethod(PasswordCallback(func() (string, error) { - p := passwords[n] - n++ - return p, nil - }), 2), - PublicKeys(testSigners["rsa"]), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - - if err := tryAuth(t, config); err != nil { - t.Fatalf("unable to dial remote side: %s", err) - } - if n != 2 { - t.Fatalf("Did not try all passwords") - } -} - -func ExampleRetryableAuthMethod(t *testing.T) { - user := "testuser" - NumberOfPrompts := 3 - - // Normally this would be a callback that prompts the user to answer the - // provided questions - Cb := func(user, instruction string, questions []string, echos []bool) (answers []string, err error) { - return []string{"answer1", "answer2"}, nil - } - - config := &ClientConfig{ - HostKeyCallback: InsecureIgnoreHostKey(), - User: user, - Auth: []AuthMethod{ - RetryableAuthMethod(KeyboardInteractiveChallenge(Cb), NumberOfPrompts), - }, - } - - if err := tryAuth(t, config); err != nil { - t.Fatalf("unable to dial remote side: %s", err) - } -} - -// Test if username is received on server side when NoClientAuth is used -func TestClientAuthNone(t *testing.T) { - user := "testuser" - serverConfig := &ServerConfig{ - NoClientAuth: true, - } - serverConfig.AddHostKey(testSigners["rsa"]) - - clientConfig := &ClientConfig{ - User: user, - HostKeyCallback: InsecureIgnoreHostKey(), - } - - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - go NewClientConn(c2, "", clientConfig) - serverConn, err := newServer(c1, serverConfig) - if err != nil { - t.Fatalf("newServer: %v", err) - } - if serverConn.User() != user { - t.Fatalf("server: got %q, want %q", serverConn.User(), user) - } -} - -// Test if authentication attempts are limited on server when MaxAuthTries is set -func TestClientAuthMaxAuthTries(t *testing.T) { - user := "testuser" - - serverConfig := &ServerConfig{ - MaxAuthTries: 2, - PasswordCallback: func(conn ConnMetadata, pass []byte) (*Permissions, error) { - if conn.User() == "testuser" && string(pass) == "right" { - return nil, nil - } - return nil, errors.New("password auth failed") - }, - } - serverConfig.AddHostKey(testSigners["rsa"]) - - expectedErr := fmt.Errorf("ssh: handshake failed: %v", &disconnectMsg{ - Reason: 2, - Message: "too many authentication failures", - }) - - for tries := 2; tries < 4; tries++ { - n := tries - clientConfig := &ClientConfig{ - User: user, - Auth: []AuthMethod{ - RetryableAuthMethod(PasswordCallback(func() (string, error) { - n-- - if n == 0 { - return "right", nil - } - return "wrong", nil - }), tries), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - go newServer(c1, serverConfig) - _, _, _, err = NewClientConn(c2, "", clientConfig) - if tries > 2 { - if err == nil { - t.Fatalf("client: got no error, want %s", expectedErr) - } else if err.Error() != expectedErr.Error() { - t.Fatalf("client: got %s, want %s", err, expectedErr) - } - } else { - if err != nil { - t.Fatalf("client: got %s, want no error", err) - } - } - } -} - -// Test if authentication attempts are correctly limited on server -// when more public keys are provided then MaxAuthTries -func TestClientAuthMaxAuthTriesPublicKey(t *testing.T) { - signers := []Signer{} - for i := 0; i < 6; i++ { - signers = append(signers, testSigners["dsa"]) - } - - validConfig := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(append([]Signer{testSigners["rsa"]}, signers...)...), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - if err := tryAuth(t, validConfig); err != nil { - t.Fatalf("unable to dial remote side: %s", err) - } - - expectedErr := fmt.Errorf("ssh: handshake failed: %v", &disconnectMsg{ - Reason: 2, - Message: "too many authentication failures", - }) - invalidConfig := &ClientConfig{ - User: "testuser", - Auth: []AuthMethod{ - PublicKeys(append(signers, testSigners["rsa"])...), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - if err := tryAuth(t, invalidConfig); err == nil { - t.Fatalf("client: got no error, want %s", expectedErr) - } else if err.Error() != expectedErr.Error() { - t.Fatalf("client: got %s, want %s", err, expectedErr) - } -} - -// Test whether authentication errors are being properly logged if all -// authentication methods have been exhausted -func TestClientAuthErrorList(t *testing.T) { - publicKeyErr := errors.New("This is an error from PublicKeyCallback") - - clientConfig := &ClientConfig{ - Auth: []AuthMethod{ - PublicKeys(testSigners["rsa"]), - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - serverConfig := &ServerConfig{ - PublicKeyCallback: func(_ ConnMetadata, _ PublicKey) (*Permissions, error) { - return nil, publicKeyErr - }, - } - serverConfig.AddHostKey(testSigners["rsa"]) - - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - go NewClientConn(c2, "", clientConfig) - _, err = newServer(c1, serverConfig) - if err == nil { - t.Fatal("newServer: got nil, expected errors") - } - - authErrs, ok := err.(*ServerAuthError) - if !ok { - t.Fatalf("errors: got %T, want *ssh.ServerAuthError", err) - } - for i, e := range authErrs.Errors { - switch i { - case 0: - if e != ErrNoAuth { - t.Fatalf("errors: got error %v, want ErrNoAuth", e) - } - case 1: - if e != publicKeyErr { - t.Fatalf("errors: got %v, want %v", e, publicKeyErr) - } - default: - t.Fatalf("errors: got %v, expected 2 errors", authErrs.Errors) - } - } -} diff --git a/vendor/golang.org/x/crypto/ssh/client_test.go b/vendor/golang.org/x/crypto/ssh/client_test.go deleted file mode 100644 index 81f9599e..00000000 --- a/vendor/golang.org/x/crypto/ssh/client_test.go +++ /dev/null @@ -1,166 +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 ssh - -import ( - "strings" - "testing" -) - -func TestClientVersion(t *testing.T) { - for _, tt := range []struct { - name string - version string - multiLine string - wantErr bool - }{ - { - name: "default version", - version: packageVersion, - }, - { - name: "custom version", - version: "SSH-2.0-CustomClientVersionString", - }, - { - name: "good multi line version", - version: packageVersion, - multiLine: strings.Repeat("ignored\r\n", 20), - }, - { - name: "bad multi line version", - version: packageVersion, - multiLine: "bad multi line version", - wantErr: true, - }, - { - name: "long multi line version", - version: packageVersion, - multiLine: strings.Repeat("long multi line version\r\n", 50)[:256], - wantErr: true, - }, - } { - t.Run(tt.name, func(t *testing.T) { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - go func() { - if tt.multiLine != "" { - c1.Write([]byte(tt.multiLine)) - } - NewClientConn(c1, "", &ClientConfig{ - ClientVersion: tt.version, - HostKeyCallback: InsecureIgnoreHostKey(), - }) - c1.Close() - }() - conf := &ServerConfig{NoClientAuth: true} - conf.AddHostKey(testSigners["rsa"]) - conn, _, _, err := NewServerConn(c2, conf) - if err == nil == tt.wantErr { - t.Fatalf("got err %v; wantErr %t", err, tt.wantErr) - } - if tt.wantErr { - // Don't verify the version on an expected error. - return - } - if got := string(conn.ClientVersion()); got != tt.version { - t.Fatalf("got %q; want %q", got, tt.version) - } - }) - } -} - -func TestHostKeyCheck(t *testing.T) { - for _, tt := range []struct { - name string - wantError string - key PublicKey - }{ - {"no callback", "must specify HostKeyCallback", nil}, - {"correct key", "", testSigners["rsa"].PublicKey()}, - {"mismatch", "mismatch", testSigners["ecdsa"].PublicKey()}, - } { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - serverConf := &ServerConfig{ - NoClientAuth: true, - } - serverConf.AddHostKey(testSigners["rsa"]) - - go NewServerConn(c1, serverConf) - clientConf := ClientConfig{ - User: "user", - } - if tt.key != nil { - clientConf.HostKeyCallback = FixedHostKey(tt.key) - } - - _, _, _, err = NewClientConn(c2, "", &clientConf) - if err != nil { - if tt.wantError == "" || !strings.Contains(err.Error(), tt.wantError) { - t.Errorf("%s: got error %q, missing %q", tt.name, err.Error(), tt.wantError) - } - } else if tt.wantError != "" { - t.Errorf("%s: succeeded, but want error string %q", tt.name, tt.wantError) - } - } -} - -func TestBannerCallback(t *testing.T) { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - serverConf := &ServerConfig{ - PasswordCallback: func(conn ConnMetadata, password []byte) (*Permissions, error) { - return &Permissions{}, nil - }, - BannerCallback: func(conn ConnMetadata) string { - return "Hello World" - }, - } - serverConf.AddHostKey(testSigners["rsa"]) - go NewServerConn(c1, serverConf) - - var receivedBanner string - var bannerCount int - clientConf := ClientConfig{ - Auth: []AuthMethod{ - Password("123"), - }, - User: "user", - HostKeyCallback: InsecureIgnoreHostKey(), - BannerCallback: func(message string) error { - bannerCount++ - receivedBanner = message - return nil - }, - } - - _, _, _, err = NewClientConn(c2, "", &clientConf) - if err != nil { - t.Fatal(err) - } - - if bannerCount != 1 { - t.Errorf("got %d banners; want 1", bannerCount) - } - - expected := "Hello World" - if receivedBanner != expected { - t.Fatalf("got %s; want %s", receivedBanner, expected) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go deleted file mode 100644 index 04f3620b..00000000 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "crypto" - "crypto/rand" - "fmt" - "io" - "math" - "sync" - - _ "crypto/sha1" - _ "crypto/sha256" - _ "crypto/sha512" -) - -// These are string constants in the SSH protocol. -const ( - compressionNone = "none" - serviceUserAuth = "ssh-userauth" - serviceSSH = "ssh-connection" -) - -// supportedCiphers lists ciphers we support but might not recommend. -var supportedCiphers = []string{ - "aes128-ctr", "aes192-ctr", "aes256-ctr", - "aes128-gcm@openssh.com", - chacha20Poly1305ID, - "arcfour256", "arcfour128", "arcfour", - aes128cbcID, - tripledescbcID, -} - -// preferredCiphers specifies the default preference for ciphers. -var preferredCiphers = []string{ - "aes128-gcm@openssh.com", - chacha20Poly1305ID, - "aes128-ctr", "aes192-ctr", "aes256-ctr", -} - -// supportedKexAlgos specifies the supported key-exchange algorithms in -// preference order. -var supportedKexAlgos = []string{ - kexAlgoCurve25519SHA256, - // P384 and P521 are not constant-time yet, but since we don't - // reuse ephemeral keys, using them for ECDH should be OK. - kexAlgoECDH256, kexAlgoECDH384, kexAlgoECDH521, - kexAlgoDH14SHA1, kexAlgoDH1SHA1, -} - -// supportedHostKeyAlgos specifies the supported host-key algorithms (i.e. methods -// of authenticating servers) in preference order. -var supportedHostKeyAlgos = []string{ - CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, - CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoED25519v01, - - KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521, - KeyAlgoRSA, KeyAlgoDSA, - - KeyAlgoED25519, -} - -// supportedMACs specifies a default set of MAC algorithms in preference order. -// This is based on RFC 4253, section 6.4, but with hmac-md5 variants removed -// because they have reached the end of their useful life. -var supportedMACs = []string{ - "hmac-sha2-256-etm@openssh.com", "hmac-sha2-256", "hmac-sha1", "hmac-sha1-96", -} - -var supportedCompressions = []string{compressionNone} - -// hashFuncs keeps the mapping of supported algorithms to their respective -// hashes needed for signature verification. -var hashFuncs = map[string]crypto.Hash{ - KeyAlgoRSA: crypto.SHA1, - KeyAlgoDSA: crypto.SHA1, - KeyAlgoECDSA256: crypto.SHA256, - KeyAlgoECDSA384: crypto.SHA384, - KeyAlgoECDSA521: crypto.SHA512, - CertAlgoRSAv01: crypto.SHA1, - CertAlgoDSAv01: crypto.SHA1, - CertAlgoECDSA256v01: crypto.SHA256, - CertAlgoECDSA384v01: crypto.SHA384, - CertAlgoECDSA521v01: crypto.SHA512, -} - -// unexpectedMessageError results when the SSH message that we received didn't -// match what we wanted. -func unexpectedMessageError(expected, got uint8) error { - return fmt.Errorf("ssh: unexpected message type %d (expected %d)", got, expected) -} - -// parseError results from a malformed SSH message. -func parseError(tag uint8) error { - return fmt.Errorf("ssh: parse error in message type %d", tag) -} - -func findCommon(what string, client []string, server []string) (common string, err error) { - for _, c := range client { - for _, s := range server { - if c == s { - return c, nil - } - } - } - return "", fmt.Errorf("ssh: no common algorithm for %s; client offered: %v, server offered: %v", what, client, server) -} - -type directionAlgorithms struct { - Cipher string - MAC string - Compression string -} - -// rekeyBytes returns a rekeying intervals in bytes. -func (a *directionAlgorithms) rekeyBytes() int64 { - // According to RFC4344 block ciphers should rekey after - // 2^(BLOCKSIZE/4) blocks. For all AES flavors BLOCKSIZE is - // 128. - switch a.Cipher { - case "aes128-ctr", "aes192-ctr", "aes256-ctr", gcmCipherID, aes128cbcID: - return 16 * (1 << 32) - - } - - // For others, stick with RFC4253 recommendation to rekey after 1 Gb of data. - return 1 << 30 -} - -type algorithms struct { - kex string - hostKey string - w directionAlgorithms - r directionAlgorithms -} - -func findAgreedAlgorithms(clientKexInit, serverKexInit *kexInitMsg) (algs *algorithms, err error) { - result := &algorithms{} - - result.kex, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos) - if err != nil { - return - } - - result.hostKey, err = findCommon("host key", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos) - if err != nil { - return - } - - result.w.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer) - if err != nil { - return - } - - result.r.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient) - if err != nil { - return - } - - result.w.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer) - if err != nil { - return - } - - result.r.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient) - if err != nil { - return - } - - result.w.Compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer) - if err != nil { - return - } - - result.r.Compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient) - if err != nil { - return - } - - return result, nil -} - -// If rekeythreshold is too small, we can't make any progress sending -// stuff. -const minRekeyThreshold uint64 = 256 - -// Config contains configuration data common to both ServerConfig and -// ClientConfig. -type Config struct { - // Rand provides the source of entropy for cryptographic - // primitives. If Rand is nil, the cryptographic random reader - // in package crypto/rand will be used. - Rand io.Reader - - // The maximum number of bytes sent or received after which a - // new key is negotiated. It must be at least 256. If - // unspecified, a size suitable for the chosen cipher is used. - RekeyThreshold uint64 - - // The allowed key exchanges algorithms. If unspecified then a - // default set of algorithms is used. - KeyExchanges []string - - // The allowed cipher algorithms. If unspecified then a sensible - // default is used. - Ciphers []string - - // The allowed MAC algorithms. If unspecified then a sensible default - // is used. - MACs []string -} - -// SetDefaults sets sensible values for unset fields in config. This is -// exported for testing: Configs passed to SSH functions are copied and have -// default values set automatically. -func (c *Config) SetDefaults() { - if c.Rand == nil { - c.Rand = rand.Reader - } - if c.Ciphers == nil { - c.Ciphers = preferredCiphers - } - var ciphers []string - for _, c := range c.Ciphers { - if cipherModes[c] != nil { - // reject the cipher if we have no cipherModes definition - ciphers = append(ciphers, c) - } - } - c.Ciphers = ciphers - - if c.KeyExchanges == nil { - c.KeyExchanges = supportedKexAlgos - } - - if c.MACs == nil { - c.MACs = supportedMACs - } - - if c.RekeyThreshold == 0 { - // cipher specific default - } else if c.RekeyThreshold < minRekeyThreshold { - c.RekeyThreshold = minRekeyThreshold - } else if c.RekeyThreshold >= math.MaxInt64 { - // Avoid weirdness if somebody uses -1 as a threshold. - c.RekeyThreshold = math.MaxInt64 - } -} - -// buildDataSignedForAuth returns the data that is signed in order to prove -// possession of a private key. See RFC 4252, section 7. -func buildDataSignedForAuth(sessionID []byte, req userAuthRequestMsg, algo, pubKey []byte) []byte { - data := struct { - Session []byte - Type byte - User string - Service string - Method string - Sign bool - Algo []byte - PubKey []byte - }{ - sessionID, - msgUserAuthRequest, - req.User, - req.Service, - req.Method, - true, - algo, - pubKey, - } - return Marshal(data) -} - -func appendU16(buf []byte, n uint16) []byte { - return append(buf, byte(n>>8), byte(n)) -} - -func appendU32(buf []byte, n uint32) []byte { - return append(buf, byte(n>>24), byte(n>>16), byte(n>>8), byte(n)) -} - -func appendU64(buf []byte, n uint64) []byte { - return append(buf, - byte(n>>56), byte(n>>48), byte(n>>40), byte(n>>32), - byte(n>>24), byte(n>>16), byte(n>>8), byte(n)) -} - -func appendInt(buf []byte, n int) []byte { - return appendU32(buf, uint32(n)) -} - -func appendString(buf []byte, s string) []byte { - buf = appendU32(buf, uint32(len(s))) - buf = append(buf, s...) - return buf -} - -func appendBool(buf []byte, b bool) []byte { - if b { - return append(buf, 1) - } - return append(buf, 0) -} - -// newCond is a helper to hide the fact that there is no usable zero -// value for sync.Cond. -func newCond() *sync.Cond { return sync.NewCond(new(sync.Mutex)) } - -// window represents the buffer available to clients -// wishing to write to a channel. -type window struct { - *sync.Cond - win uint32 // RFC 4254 5.2 says the window size can grow to 2^32-1 - writeWaiters int - closed bool -} - -// add adds win to the amount of window available -// for consumers. -func (w *window) add(win uint32) bool { - // a zero sized window adjust is a noop. - if win == 0 { - return true - } - w.L.Lock() - if w.win+win < win { - w.L.Unlock() - return false - } - w.win += win - // It is unusual that multiple goroutines would be attempting to reserve - // window space, but not guaranteed. Use broadcast to notify all waiters - // that additional window is available. - w.Broadcast() - w.L.Unlock() - return true -} - -// close sets the window to closed, so all reservations fail -// immediately. -func (w *window) close() { - w.L.Lock() - w.closed = true - w.Broadcast() - w.L.Unlock() -} - -// reserve reserves win from the available window capacity. -// If no capacity remains, reserve will block. reserve may -// return less than requested. -func (w *window) reserve(win uint32) (uint32, error) { - var err error - w.L.Lock() - w.writeWaiters++ - w.Broadcast() - for w.win == 0 && !w.closed { - w.Wait() - } - w.writeWaiters-- - if w.win < win { - win = w.win - } - w.win -= win - if w.closed { - err = io.EOF - } - w.L.Unlock() - return win, err -} - -// waitWriterBlocked waits until some goroutine is blocked for further -// writes. It is used in tests only. -func (w *window) waitWriterBlocked() { - w.Cond.L.Lock() - for w.writeWaiters == 0 { - w.Cond.Wait() - } - w.Cond.L.Unlock() -} diff --git a/vendor/golang.org/x/crypto/ssh/connection.go b/vendor/golang.org/x/crypto/ssh/connection.go deleted file mode 100644 index fd6b0681..00000000 --- a/vendor/golang.org/x/crypto/ssh/connection.go +++ /dev/null @@ -1,143 +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 ssh - -import ( - "fmt" - "net" -) - -// OpenChannelError is returned if the other side rejects an -// OpenChannel request. -type OpenChannelError struct { - Reason RejectionReason - Message string -} - -func (e *OpenChannelError) Error() string { - return fmt.Sprintf("ssh: rejected: %s (%s)", e.Reason, e.Message) -} - -// ConnMetadata holds metadata for the connection. -type ConnMetadata interface { - // User returns the user ID for this connection. - User() string - - // SessionID returns the session hash, also denoted by H. - SessionID() []byte - - // ClientVersion returns the client's version string as hashed - // into the session ID. - ClientVersion() []byte - - // ServerVersion returns the server's version string as hashed - // into the session ID. - ServerVersion() []byte - - // RemoteAddr returns the remote address for this connection. - RemoteAddr() net.Addr - - // LocalAddr returns the local address for this connection. - LocalAddr() net.Addr -} - -// Conn represents an SSH connection for both server and client roles. -// Conn is the basis for implementing an application layer, such -// as ClientConn, which implements the traditional shell access for -// clients. -type Conn interface { - ConnMetadata - - // SendRequest sends a global request, and returns the - // reply. If wantReply is true, it returns the response status - // and payload. See also RFC4254, section 4. - SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) - - // OpenChannel tries to open an channel. If the request is - // rejected, it returns *OpenChannelError. On success it returns - // the SSH Channel and a Go channel for incoming, out-of-band - // requests. The Go channel must be serviced, or the - // connection will hang. - OpenChannel(name string, data []byte) (Channel, <-chan *Request, error) - - // Close closes the underlying network connection - Close() error - - // Wait blocks until the connection has shut down, and returns the - // error causing the shutdown. - Wait() error - - // TODO(hanwen): consider exposing: - // RequestKeyChange - // Disconnect -} - -// DiscardRequests consumes and rejects all requests from the -// passed-in channel. -func DiscardRequests(in <-chan *Request) { - for req := range in { - if req.WantReply { - req.Reply(false, nil) - } - } -} - -// A connection represents an incoming connection. -type connection struct { - transport *handshakeTransport - sshConn - - // The connection protocol. - *mux -} - -func (c *connection) Close() error { - return c.sshConn.conn.Close() -} - -// sshconn provides net.Conn metadata, but disallows direct reads and -// writes. -type sshConn struct { - conn net.Conn - - user string - sessionID []byte - clientVersion []byte - serverVersion []byte -} - -func dup(src []byte) []byte { - dst := make([]byte, len(src)) - copy(dst, src) - return dst -} - -func (c *sshConn) User() string { - return c.user -} - -func (c *sshConn) RemoteAddr() net.Addr { - return c.conn.RemoteAddr() -} - -func (c *sshConn) Close() error { - return c.conn.Close() -} - -func (c *sshConn) LocalAddr() net.Addr { - return c.conn.LocalAddr() -} - -func (c *sshConn) SessionID() []byte { - return dup(c.sessionID) -} - -func (c *sshConn) ClientVersion() []byte { - return dup(c.clientVersion) -} - -func (c *sshConn) ServerVersion() []byte { - return dup(c.serverVersion) -} diff --git a/vendor/golang.org/x/crypto/ssh/doc.go b/vendor/golang.org/x/crypto/ssh/doc.go deleted file mode 100644 index 67b7322c..00000000 --- a/vendor/golang.org/x/crypto/ssh/doc.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package ssh implements an SSH client and server. - -SSH is a transport security protocol, an authentication protocol and a -family of application protocols. The most typical application level -protocol is a remote shell and this is specifically implemented. However, -the multiplexed nature of SSH is exposed to users that wish to support -others. - -References: - [PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD - [SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1 - -This package does not fall under the stability promise of the Go language itself, -so its API may be changed when pressing needs arise. -*/ -package ssh // import "golang.org/x/crypto/ssh" diff --git a/vendor/golang.org/x/crypto/ssh/example_test.go b/vendor/golang.org/x/crypto/ssh/example_test.go deleted file mode 100644 index b910c7bf..00000000 --- a/vendor/golang.org/x/crypto/ssh/example_test.go +++ /dev/null @@ -1,320 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh_test - -import ( - "bufio" - "bytes" - "fmt" - "io/ioutil" - "log" - "net" - "net/http" - "os" - "path/filepath" - "strings" - - "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/terminal" -) - -func ExampleNewServerConn() { - // Public key authentication is done by comparing - // the public key of a received connection - // with the entries in the authorized_keys file. - authorizedKeysBytes, err := ioutil.ReadFile("authorized_keys") - if err != nil { - log.Fatalf("Failed to load authorized_keys, err: %v", err) - } - - authorizedKeysMap := map[string]bool{} - for len(authorizedKeysBytes) > 0 { - pubKey, _, _, rest, err := ssh.ParseAuthorizedKey(authorizedKeysBytes) - if err != nil { - log.Fatal(err) - } - - authorizedKeysMap[string(pubKey.Marshal())] = true - authorizedKeysBytes = rest - } - - // An SSH server is represented by a ServerConfig, which holds - // certificate details and handles authentication of ServerConns. - config := &ssh.ServerConfig{ - // Remove to disable password auth. - PasswordCallback: func(c ssh.ConnMetadata, pass []byte) (*ssh.Permissions, error) { - // Should use constant-time compare (or better, salt+hash) in - // a production setting. - if c.User() == "testuser" && string(pass) == "tiger" { - return nil, nil - } - return nil, fmt.Errorf("password rejected for %q", c.User()) - }, - - // Remove to disable public key auth. - PublicKeyCallback: func(c ssh.ConnMetadata, pubKey ssh.PublicKey) (*ssh.Permissions, error) { - if authorizedKeysMap[string(pubKey.Marshal())] { - return &ssh.Permissions{ - // Record the public key used for authentication. - Extensions: map[string]string{ - "pubkey-fp": ssh.FingerprintSHA256(pubKey), - }, - }, nil - } - return nil, fmt.Errorf("unknown public key for %q", c.User()) - }, - } - - privateBytes, err := ioutil.ReadFile("id_rsa") - if err != nil { - log.Fatal("Failed to load private key: ", err) - } - - private, err := ssh.ParsePrivateKey(privateBytes) - if err != nil { - log.Fatal("Failed to parse private key: ", err) - } - - config.AddHostKey(private) - - // Once a ServerConfig has been configured, connections can be - // accepted. - listener, err := net.Listen("tcp", "0.0.0.0:2022") - if err != nil { - log.Fatal("failed to listen for connection: ", err) - } - nConn, err := listener.Accept() - if err != nil { - log.Fatal("failed to accept incoming connection: ", err) - } - - // Before use, a handshake must be performed on the incoming - // net.Conn. - conn, chans, reqs, err := ssh.NewServerConn(nConn, config) - if err != nil { - log.Fatal("failed to handshake: ", err) - } - log.Printf("logged in with key %s", conn.Permissions.Extensions["pubkey-fp"]) - - // The incoming Request channel must be serviced. - go ssh.DiscardRequests(reqs) - - // Service the incoming Channel channel. - for newChannel := range chans { - // Channels have a type, depending on the application level - // protocol intended. In the case of a shell, the type is - // "session" and ServerShell may be used to present a simple - // terminal interface. - if newChannel.ChannelType() != "session" { - newChannel.Reject(ssh.UnknownChannelType, "unknown channel type") - continue - } - channel, requests, err := newChannel.Accept() - if err != nil { - log.Fatalf("Could not accept channel: %v", err) - } - - // Sessions have out-of-band requests such as "shell", - // "pty-req" and "env". Here we handle only the - // "shell" request. - go func(in <-chan *ssh.Request) { - for req := range in { - req.Reply(req.Type == "shell", nil) - } - }(requests) - - term := terminal.NewTerminal(channel, "> ") - - go func() { - defer channel.Close() - for { - line, err := term.ReadLine() - if err != nil { - break - } - fmt.Println(line) - } - }() - } -} - -func ExampleHostKeyCheck() { - // Every client must provide a host key check. Here is a - // simple-minded parse of OpenSSH's known_hosts file - host := "hostname" - file, err := os.Open(filepath.Join(os.Getenv("HOME"), ".ssh", "known_hosts")) - if err != nil { - log.Fatal(err) - } - defer file.Close() - - scanner := bufio.NewScanner(file) - var hostKey ssh.PublicKey - for scanner.Scan() { - fields := strings.Split(scanner.Text(), " ") - if len(fields) != 3 { - continue - } - if strings.Contains(fields[0], host) { - var err error - hostKey, _, _, _, err = ssh.ParseAuthorizedKey(scanner.Bytes()) - if err != nil { - log.Fatalf("error parsing %q: %v", fields[2], err) - } - break - } - } - - if hostKey == nil { - log.Fatalf("no hostkey for %s", host) - } - - config := ssh.ClientConfig{ - User: os.Getenv("USER"), - HostKeyCallback: ssh.FixedHostKey(hostKey), - } - - _, err = ssh.Dial("tcp", host+":22", &config) - log.Println(err) -} - -func ExampleDial() { - var hostKey ssh.PublicKey - // An SSH client is represented with a ClientConn. - // - // To authenticate with the remote server you must pass at least one - // implementation of AuthMethod via the Auth field in ClientConfig, - // and provide a HostKeyCallback. - config := &ssh.ClientConfig{ - User: "username", - Auth: []ssh.AuthMethod{ - ssh.Password("yourpassword"), - }, - HostKeyCallback: ssh.FixedHostKey(hostKey), - } - client, err := ssh.Dial("tcp", "yourserver.com:22", config) - if err != nil { - log.Fatal("Failed to dial: ", err) - } - - // Each ClientConn can support multiple interactive sessions, - // represented by a Session. - session, err := client.NewSession() - if err != nil { - log.Fatal("Failed to create session: ", err) - } - defer session.Close() - - // Once a Session is created, you can execute a single command on - // the remote side using the Run method. - var b bytes.Buffer - session.Stdout = &b - if err := session.Run("/usr/bin/whoami"); err != nil { - log.Fatal("Failed to run: " + err.Error()) - } - fmt.Println(b.String()) -} - -func ExamplePublicKeys() { - var hostKey ssh.PublicKey - // A public key may be used to authenticate against the remote - // server by using an unencrypted PEM-encoded private key file. - // - // If you have an encrypted private key, the crypto/x509 package - // can be used to decrypt it. - key, err := ioutil.ReadFile("/home/user/.ssh/id_rsa") - if err != nil { - log.Fatalf("unable to read private key: %v", err) - } - - // Create the Signer for this private key. - signer, err := ssh.ParsePrivateKey(key) - if err != nil { - log.Fatalf("unable to parse private key: %v", err) - } - - config := &ssh.ClientConfig{ - User: "user", - Auth: []ssh.AuthMethod{ - // Use the PublicKeys method for remote authentication. - ssh.PublicKeys(signer), - }, - HostKeyCallback: ssh.FixedHostKey(hostKey), - } - - // Connect to the remote server and perform the SSH handshake. - client, err := ssh.Dial("tcp", "host.com:22", config) - if err != nil { - log.Fatalf("unable to connect: %v", err) - } - defer client.Close() -} - -func ExampleClient_Listen() { - var hostKey ssh.PublicKey - config := &ssh.ClientConfig{ - User: "username", - Auth: []ssh.AuthMethod{ - ssh.Password("password"), - }, - HostKeyCallback: ssh.FixedHostKey(hostKey), - } - // Dial your ssh server. - conn, err := ssh.Dial("tcp", "localhost:22", config) - if err != nil { - log.Fatal("unable to connect: ", err) - } - defer conn.Close() - - // Request the remote side to open port 8080 on all interfaces. - l, err := conn.Listen("tcp", "0.0.0.0:8080") - if err != nil { - log.Fatal("unable to register tcp forward: ", err) - } - defer l.Close() - - // Serve HTTP with your SSH server acting as a reverse proxy. - http.Serve(l, http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) { - fmt.Fprintf(resp, "Hello world!\n") - })) -} - -func ExampleSession_RequestPty() { - var hostKey ssh.PublicKey - // Create client config - config := &ssh.ClientConfig{ - User: "username", - Auth: []ssh.AuthMethod{ - ssh.Password("password"), - }, - HostKeyCallback: ssh.FixedHostKey(hostKey), - } - // Connect to ssh server - conn, err := ssh.Dial("tcp", "localhost:22", config) - if err != nil { - log.Fatal("unable to connect: ", err) - } - defer conn.Close() - // Create a session - session, err := conn.NewSession() - if err != nil { - log.Fatal("unable to create session: ", err) - } - defer session.Close() - // Set up terminal modes - modes := ssh.TerminalModes{ - ssh.ECHO: 0, // disable echoing - ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud - ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud - } - // Request pseudo terminal - if err := session.RequestPty("xterm", 40, 80, modes); err != nil { - log.Fatal("request for pseudo terminal failed: ", err) - } - // Start remote shell - if err := session.Shell(); err != nil { - log.Fatal("failed to start shell: ", err) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/handshake.go b/vendor/golang.org/x/crypto/ssh/handshake.go deleted file mode 100644 index 4f7912ec..00000000 --- a/vendor/golang.org/x/crypto/ssh/handshake.go +++ /dev/null @@ -1,646 +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 ssh - -import ( - "crypto/rand" - "errors" - "fmt" - "io" - "log" - "net" - "sync" -) - -// debugHandshake, if set, prints messages sent and received. Key -// exchange messages are printed as if DH were used, so the debug -// messages are wrong when using ECDH. -const debugHandshake = false - -// chanSize sets the amount of buffering SSH connections. This is -// primarily for testing: setting chanSize=0 uncovers deadlocks more -// quickly. -const chanSize = 16 - -// keyingTransport is a packet based transport that supports key -// changes. It need not be thread-safe. It should pass through -// msgNewKeys in both directions. -type keyingTransport interface { - packetConn - - // prepareKeyChange sets up a key change. The key change for a - // direction will be effected if a msgNewKeys message is sent - // or received. - prepareKeyChange(*algorithms, *kexResult) error -} - -// handshakeTransport implements rekeying on top of a keyingTransport -// and offers a thread-safe writePacket() interface. -type handshakeTransport struct { - conn keyingTransport - config *Config - - serverVersion []byte - clientVersion []byte - - // hostKeys is non-empty if we are the server. In that case, - // it contains all host keys that can be used to sign the - // connection. - hostKeys []Signer - - // hostKeyAlgorithms is non-empty if we are the client. In that case, - // we accept these key types from the server as host key. - hostKeyAlgorithms []string - - // On read error, incoming is closed, and readError is set. - incoming chan []byte - readError error - - mu sync.Mutex - writeError error - sentInitPacket []byte - sentInitMsg *kexInitMsg - pendingPackets [][]byte // Used when a key exchange is in progress. - - // If the read loop wants to schedule a kex, it pings this - // channel, and the write loop will send out a kex - // message. - requestKex chan struct{} - - // If the other side requests or confirms a kex, its kexInit - // packet is sent here for the write loop to find it. - startKex chan *pendingKex - - // data for host key checking - hostKeyCallback HostKeyCallback - dialAddress string - remoteAddr net.Addr - - // bannerCallback is non-empty if we are the client and it has been set in - // ClientConfig. In that case it is called during the user authentication - // dance to handle a custom server's message. - bannerCallback BannerCallback - - // Algorithms agreed in the last key exchange. - algorithms *algorithms - - readPacketsLeft uint32 - readBytesLeft int64 - - writePacketsLeft uint32 - writeBytesLeft int64 - - // The session ID or nil if first kex did not complete yet. - sessionID []byte -} - -type pendingKex struct { - otherInit []byte - done chan error -} - -func newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, serverVersion []byte) *handshakeTransport { - t := &handshakeTransport{ - conn: conn, - serverVersion: serverVersion, - clientVersion: clientVersion, - incoming: make(chan []byte, chanSize), - requestKex: make(chan struct{}, 1), - startKex: make(chan *pendingKex, 1), - - config: config, - } - t.resetReadThresholds() - t.resetWriteThresholds() - - // We always start with a mandatory key exchange. - t.requestKex <- struct{}{} - return t -} - -func newClientTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ClientConfig, dialAddr string, addr net.Addr) *handshakeTransport { - t := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion) - t.dialAddress = dialAddr - t.remoteAddr = addr - t.hostKeyCallback = config.HostKeyCallback - t.bannerCallback = config.BannerCallback - if config.HostKeyAlgorithms != nil { - t.hostKeyAlgorithms = config.HostKeyAlgorithms - } else { - t.hostKeyAlgorithms = supportedHostKeyAlgos - } - go t.readLoop() - go t.kexLoop() - return t -} - -func newServerTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ServerConfig) *handshakeTransport { - t := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion) - t.hostKeys = config.hostKeys - go t.readLoop() - go t.kexLoop() - return t -} - -func (t *handshakeTransport) getSessionID() []byte { - return t.sessionID -} - -// waitSession waits for the session to be established. This should be -// the first thing to call after instantiating handshakeTransport. -func (t *handshakeTransport) waitSession() error { - p, err := t.readPacket() - if err != nil { - return err - } - if p[0] != msgNewKeys { - return fmt.Errorf("ssh: first packet should be msgNewKeys") - } - - return nil -} - -func (t *handshakeTransport) id() string { - if len(t.hostKeys) > 0 { - return "server" - } - return "client" -} - -func (t *handshakeTransport) printPacket(p []byte, write bool) { - action := "got" - if write { - action = "sent" - } - - if p[0] == msgChannelData || p[0] == msgChannelExtendedData { - log.Printf("%s %s data (packet %d bytes)", t.id(), action, len(p)) - } else { - msg, err := decode(p) - log.Printf("%s %s %T %v (%v)", t.id(), action, msg, msg, err) - } -} - -func (t *handshakeTransport) readPacket() ([]byte, error) { - p, ok := <-t.incoming - if !ok { - return nil, t.readError - } - return p, nil -} - -func (t *handshakeTransport) readLoop() { - first := true - for { - p, err := t.readOnePacket(first) - first = false - if err != nil { - t.readError = err - close(t.incoming) - break - } - if p[0] == msgIgnore || p[0] == msgDebug { - continue - } - t.incoming <- p - } - - // Stop writers too. - t.recordWriteError(t.readError) - - // Unblock the writer should it wait for this. - close(t.startKex) - - // Don't close t.requestKex; it's also written to from writePacket. -} - -func (t *handshakeTransport) pushPacket(p []byte) error { - if debugHandshake { - t.printPacket(p, true) - } - return t.conn.writePacket(p) -} - -func (t *handshakeTransport) getWriteError() error { - t.mu.Lock() - defer t.mu.Unlock() - return t.writeError -} - -func (t *handshakeTransport) recordWriteError(err error) { - t.mu.Lock() - defer t.mu.Unlock() - if t.writeError == nil && err != nil { - t.writeError = err - } -} - -func (t *handshakeTransport) requestKeyExchange() { - select { - case t.requestKex <- struct{}{}: - default: - // something already requested a kex, so do nothing. - } -} - -func (t *handshakeTransport) resetWriteThresholds() { - t.writePacketsLeft = packetRekeyThreshold - if t.config.RekeyThreshold > 0 { - t.writeBytesLeft = int64(t.config.RekeyThreshold) - } else if t.algorithms != nil { - t.writeBytesLeft = t.algorithms.w.rekeyBytes() - } else { - t.writeBytesLeft = 1 << 30 - } -} - -func (t *handshakeTransport) kexLoop() { - -write: - for t.getWriteError() == nil { - var request *pendingKex - var sent bool - - for request == nil || !sent { - var ok bool - select { - case request, ok = <-t.startKex: - if !ok { - break write - } - case <-t.requestKex: - break - } - - if !sent { - if err := t.sendKexInit(); err != nil { - t.recordWriteError(err) - break - } - sent = true - } - } - - if err := t.getWriteError(); err != nil { - if request != nil { - request.done <- err - } - break - } - - // We're not servicing t.requestKex, but that is OK: - // we never block on sending to t.requestKex. - - // We're not servicing t.startKex, but the remote end - // has just sent us a kexInitMsg, so it can't send - // another key change request, until we close the done - // channel on the pendingKex request. - - err := t.enterKeyExchange(request.otherInit) - - t.mu.Lock() - t.writeError = err - t.sentInitPacket = nil - t.sentInitMsg = nil - - t.resetWriteThresholds() - - // we have completed the key exchange. Since the - // reader is still blocked, it is safe to clear out - // the requestKex channel. This avoids the situation - // where: 1) we consumed our own request for the - // initial kex, and 2) the kex from the remote side - // caused another send on the requestKex channel, - clear: - for { - select { - case <-t.requestKex: - // - default: - break clear - } - } - - request.done <- t.writeError - - // kex finished. Push packets that we received while - // the kex was in progress. Don't look at t.startKex - // and don't increment writtenSinceKex: if we trigger - // another kex while we are still busy with the last - // one, things will become very confusing. - for _, p := range t.pendingPackets { - t.writeError = t.pushPacket(p) - if t.writeError != nil { - break - } - } - t.pendingPackets = t.pendingPackets[:0] - t.mu.Unlock() - } - - // drain startKex channel. We don't service t.requestKex - // because nobody does blocking sends there. - go func() { - for init := range t.startKex { - init.done <- t.writeError - } - }() - - // Unblock reader. - t.conn.Close() -} - -// The protocol uses uint32 for packet counters, so we can't let them -// reach 1<<32. We will actually read and write more packets than -// this, though: the other side may send more packets, and after we -// hit this limit on writing we will send a few more packets for the -// key exchange itself. -const packetRekeyThreshold = (1 << 31) - -func (t *handshakeTransport) resetReadThresholds() { - t.readPacketsLeft = packetRekeyThreshold - if t.config.RekeyThreshold > 0 { - t.readBytesLeft = int64(t.config.RekeyThreshold) - } else if t.algorithms != nil { - t.readBytesLeft = t.algorithms.r.rekeyBytes() - } else { - t.readBytesLeft = 1 << 30 - } -} - -func (t *handshakeTransport) readOnePacket(first bool) ([]byte, error) { - p, err := t.conn.readPacket() - if err != nil { - return nil, err - } - - if t.readPacketsLeft > 0 { - t.readPacketsLeft-- - } else { - t.requestKeyExchange() - } - - if t.readBytesLeft > 0 { - t.readBytesLeft -= int64(len(p)) - } else { - t.requestKeyExchange() - } - - if debugHandshake { - t.printPacket(p, false) - } - - if first && p[0] != msgKexInit { - return nil, fmt.Errorf("ssh: first packet should be msgKexInit") - } - - if p[0] != msgKexInit { - return p, nil - } - - firstKex := t.sessionID == nil - - kex := pendingKex{ - done: make(chan error, 1), - otherInit: p, - } - t.startKex <- &kex - err = <-kex.done - - if debugHandshake { - log.Printf("%s exited key exchange (first %v), err %v", t.id(), firstKex, err) - } - - if err != nil { - return nil, err - } - - t.resetReadThresholds() - - // By default, a key exchange is hidden from higher layers by - // translating it into msgIgnore. - successPacket := []byte{msgIgnore} - if firstKex { - // sendKexInit() for the first kex waits for - // msgNewKeys so the authentication process is - // guaranteed to happen over an encrypted transport. - successPacket = []byte{msgNewKeys} - } - - return successPacket, nil -} - -// sendKexInit sends a key change message. -func (t *handshakeTransport) sendKexInit() error { - t.mu.Lock() - defer t.mu.Unlock() - if t.sentInitMsg != nil { - // kexInits may be sent either in response to the other side, - // or because our side wants to initiate a key change, so we - // may have already sent a kexInit. In that case, don't send a - // second kexInit. - return nil - } - - msg := &kexInitMsg{ - KexAlgos: t.config.KeyExchanges, - CiphersClientServer: t.config.Ciphers, - CiphersServerClient: t.config.Ciphers, - MACsClientServer: t.config.MACs, - MACsServerClient: t.config.MACs, - CompressionClientServer: supportedCompressions, - CompressionServerClient: supportedCompressions, - } - io.ReadFull(rand.Reader, msg.Cookie[:]) - - if len(t.hostKeys) > 0 { - for _, k := range t.hostKeys { - msg.ServerHostKeyAlgos = append( - msg.ServerHostKeyAlgos, k.PublicKey().Type()) - } - } else { - msg.ServerHostKeyAlgos = t.hostKeyAlgorithms - } - packet := Marshal(msg) - - // writePacket destroys the contents, so save a copy. - packetCopy := make([]byte, len(packet)) - copy(packetCopy, packet) - - if err := t.pushPacket(packetCopy); err != nil { - return err - } - - t.sentInitMsg = msg - t.sentInitPacket = packet - - return nil -} - -func (t *handshakeTransport) writePacket(p []byte) error { - switch p[0] { - case msgKexInit: - return errors.New("ssh: only handshakeTransport can send kexInit") - case msgNewKeys: - return errors.New("ssh: only handshakeTransport can send newKeys") - } - - t.mu.Lock() - defer t.mu.Unlock() - if t.writeError != nil { - return t.writeError - } - - if t.sentInitMsg != nil { - // Copy the packet so the writer can reuse the buffer. - cp := make([]byte, len(p)) - copy(cp, p) - t.pendingPackets = append(t.pendingPackets, cp) - return nil - } - - if t.writeBytesLeft > 0 { - t.writeBytesLeft -= int64(len(p)) - } else { - t.requestKeyExchange() - } - - if t.writePacketsLeft > 0 { - t.writePacketsLeft-- - } else { - t.requestKeyExchange() - } - - if err := t.pushPacket(p); err != nil { - t.writeError = err - } - - return nil -} - -func (t *handshakeTransport) Close() error { - return t.conn.Close() -} - -func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { - if debugHandshake { - log.Printf("%s entered key exchange", t.id()) - } - - otherInit := &kexInitMsg{} - if err := Unmarshal(otherInitPacket, otherInit); err != nil { - return err - } - - magics := handshakeMagics{ - clientVersion: t.clientVersion, - serverVersion: t.serverVersion, - clientKexInit: otherInitPacket, - serverKexInit: t.sentInitPacket, - } - - clientInit := otherInit - serverInit := t.sentInitMsg - if len(t.hostKeys) == 0 { - clientInit, serverInit = serverInit, clientInit - - magics.clientKexInit = t.sentInitPacket - magics.serverKexInit = otherInitPacket - } - - var err error - t.algorithms, err = findAgreedAlgorithms(clientInit, serverInit) - if err != nil { - return err - } - - // We don't send FirstKexFollows, but we handle receiving it. - // - // RFC 4253 section 7 defines the kex and the agreement method for - // first_kex_packet_follows. It states that the guessed packet - // should be ignored if the "kex algorithm and/or the host - // key algorithm is guessed wrong (server and client have - // different preferred algorithm), or if any of the other - // algorithms cannot be agreed upon". The other algorithms have - // already been checked above so the kex algorithm and host key - // algorithm are checked here. - if otherInit.FirstKexFollows && (clientInit.KexAlgos[0] != serverInit.KexAlgos[0] || clientInit.ServerHostKeyAlgos[0] != serverInit.ServerHostKeyAlgos[0]) { - // other side sent a kex message for the wrong algorithm, - // which we have to ignore. - if _, err := t.conn.readPacket(); err != nil { - return err - } - } - - kex, ok := kexAlgoMap[t.algorithms.kex] - if !ok { - return fmt.Errorf("ssh: unexpected key exchange algorithm %v", t.algorithms.kex) - } - - var result *kexResult - if len(t.hostKeys) > 0 { - result, err = t.server(kex, t.algorithms, &magics) - } else { - result, err = t.client(kex, t.algorithms, &magics) - } - - if err != nil { - return err - } - - if t.sessionID == nil { - t.sessionID = result.H - } - result.SessionID = t.sessionID - - if err := t.conn.prepareKeyChange(t.algorithms, result); err != nil { - return err - } - if err = t.conn.writePacket([]byte{msgNewKeys}); err != nil { - return err - } - if packet, err := t.conn.readPacket(); err != nil { - return err - } else if packet[0] != msgNewKeys { - return unexpectedMessageError(msgNewKeys, packet[0]) - } - - return nil -} - -func (t *handshakeTransport) server(kex kexAlgorithm, algs *algorithms, magics *handshakeMagics) (*kexResult, error) { - var hostKey Signer - for _, k := range t.hostKeys { - if algs.hostKey == k.PublicKey().Type() { - hostKey = k - } - } - - r, err := kex.Server(t.conn, t.config.Rand, magics, hostKey) - return r, err -} - -func (t *handshakeTransport) client(kex kexAlgorithm, algs *algorithms, magics *handshakeMagics) (*kexResult, error) { - result, err := kex.Client(t.conn, t.config.Rand, magics) - if err != nil { - return nil, err - } - - hostKey, err := ParsePublicKey(result.HostKey) - if err != nil { - return nil, err - } - - if err := verifyHostKeySignature(hostKey, result); err != nil { - return nil, err - } - - err = t.hostKeyCallback(t.dialAddress, t.remoteAddr, hostKey) - if err != nil { - return nil, err - } - - return result, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/handshake_test.go b/vendor/golang.org/x/crypto/ssh/handshake_test.go deleted file mode 100644 index 91d49356..00000000 --- a/vendor/golang.org/x/crypto/ssh/handshake_test.go +++ /dev/null @@ -1,559 +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 ssh - -import ( - "bytes" - "crypto/rand" - "errors" - "fmt" - "io" - "net" - "reflect" - "runtime" - "strings" - "sync" - "testing" -) - -type testChecker struct { - calls []string -} - -func (t *testChecker) Check(dialAddr string, addr net.Addr, key PublicKey) error { - if dialAddr == "bad" { - return fmt.Errorf("dialAddr is bad") - } - - if tcpAddr, ok := addr.(*net.TCPAddr); !ok || tcpAddr == nil { - return fmt.Errorf("testChecker: got %T want *net.TCPAddr", addr) - } - - t.calls = append(t.calls, fmt.Sprintf("%s %v %s %x", dialAddr, addr, key.Type(), key.Marshal())) - - return nil -} - -// netPipe is analogous to net.Pipe, but it uses a real net.Conn, and -// therefore is buffered (net.Pipe deadlocks if both sides start with -// a write.) -func netPipe() (net.Conn, net.Conn, error) { - listener, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - listener, err = net.Listen("tcp", "[::1]:0") - if err != nil { - return nil, nil, err - } - } - defer listener.Close() - c1, err := net.Dial("tcp", listener.Addr().String()) - if err != nil { - return nil, nil, err - } - - c2, err := listener.Accept() - if err != nil { - c1.Close() - return nil, nil, err - } - - return c1, c2, nil -} - -// noiseTransport inserts ignore messages to check that the read loop -// and the key exchange filters out these messages. -type noiseTransport struct { - keyingTransport -} - -func (t *noiseTransport) writePacket(p []byte) error { - ignore := []byte{msgIgnore} - if err := t.keyingTransport.writePacket(ignore); err != nil { - return err - } - debug := []byte{msgDebug, 1, 2, 3} - if err := t.keyingTransport.writePacket(debug); err != nil { - return err - } - - return t.keyingTransport.writePacket(p) -} - -func addNoiseTransport(t keyingTransport) keyingTransport { - return &noiseTransport{t} -} - -// handshakePair creates two handshakeTransports connected with each -// other. If the noise argument is true, both transports will try to -// confuse the other side by sending ignore and debug messages. -func handshakePair(clientConf *ClientConfig, addr string, noise bool) (client *handshakeTransport, server *handshakeTransport, err error) { - a, b, err := netPipe() - if err != nil { - return nil, nil, err - } - - var trC, trS keyingTransport - - trC = newTransport(a, rand.Reader, true) - trS = newTransport(b, rand.Reader, false) - if noise { - trC = addNoiseTransport(trC) - trS = addNoiseTransport(trS) - } - clientConf.SetDefaults() - - v := []byte("version") - client = newClientTransport(trC, v, v, clientConf, addr, a.RemoteAddr()) - - serverConf := &ServerConfig{} - serverConf.AddHostKey(testSigners["ecdsa"]) - serverConf.AddHostKey(testSigners["rsa"]) - serverConf.SetDefaults() - server = newServerTransport(trS, v, v, serverConf) - - if err := server.waitSession(); err != nil { - return nil, nil, fmt.Errorf("server.waitSession: %v", err) - } - if err := client.waitSession(); err != nil { - return nil, nil, fmt.Errorf("client.waitSession: %v", err) - } - - return client, server, nil -} - -func TestHandshakeBasic(t *testing.T) { - if runtime.GOOS == "plan9" { - t.Skip("see golang.org/issue/7237") - } - - checker := &syncChecker{ - waitCall: make(chan int, 10), - called: make(chan int, 10), - } - - checker.waitCall <- 1 - trC, trS, err := handshakePair(&ClientConfig{HostKeyCallback: checker.Check}, "addr", false) - if err != nil { - t.Fatalf("handshakePair: %v", err) - } - - defer trC.Close() - defer trS.Close() - - // Let first kex complete normally. - <-checker.called - - clientDone := make(chan int, 0) - gotHalf := make(chan int, 0) - const N = 20 - - go func() { - defer close(clientDone) - // Client writes a bunch of stuff, and does a key - // change in the middle. This should not confuse the - // handshake in progress. We do this twice, so we test - // that the packet buffer is reset correctly. - for i := 0; i < N; i++ { - p := []byte{msgRequestSuccess, byte(i)} - if err := trC.writePacket(p); err != nil { - t.Fatalf("sendPacket: %v", err) - } - if (i % 10) == 5 { - <-gotHalf - // halfway through, we request a key change. - trC.requestKeyExchange() - - // Wait until we can be sure the key - // change has really started before we - // write more. - <-checker.called - } - if (i % 10) == 7 { - // write some packets until the kex - // completes, to test buffering of - // packets. - checker.waitCall <- 1 - } - } - }() - - // Server checks that client messages come in cleanly - i := 0 - err = nil - for ; i < N; i++ { - var p []byte - p, err = trS.readPacket() - if err != nil { - break - } - if (i % 10) == 5 { - gotHalf <- 1 - } - - want := []byte{msgRequestSuccess, byte(i)} - if bytes.Compare(p, want) != 0 { - t.Errorf("message %d: got %v, want %v", i, p, want) - } - } - <-clientDone - if err != nil && err != io.EOF { - t.Fatalf("server error: %v", err) - } - if i != N { - t.Errorf("received %d messages, want 10.", i) - } - - close(checker.called) - if _, ok := <-checker.called; ok { - // If all went well, we registered exactly 2 key changes: one - // that establishes the session, and one that we requested - // additionally. - t.Fatalf("got another host key checks after 2 handshakes") - } -} - -func TestForceFirstKex(t *testing.T) { - // like handshakePair, but must access the keyingTransport. - checker := &testChecker{} - clientConf := &ClientConfig{HostKeyCallback: checker.Check} - a, b, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - - var trC, trS keyingTransport - - trC = newTransport(a, rand.Reader, true) - - // This is the disallowed packet: - trC.writePacket(Marshal(&serviceRequestMsg{serviceUserAuth})) - - // Rest of the setup. - trS = newTransport(b, rand.Reader, false) - clientConf.SetDefaults() - - v := []byte("version") - client := newClientTransport(trC, v, v, clientConf, "addr", a.RemoteAddr()) - - serverConf := &ServerConfig{} - serverConf.AddHostKey(testSigners["ecdsa"]) - serverConf.AddHostKey(testSigners["rsa"]) - serverConf.SetDefaults() - server := newServerTransport(trS, v, v, serverConf) - - defer client.Close() - defer server.Close() - - // We setup the initial key exchange, but the remote side - // tries to send serviceRequestMsg in cleartext, which is - // disallowed. - - if err := server.waitSession(); err == nil { - t.Errorf("server first kex init should reject unexpected packet") - } -} - -func TestHandshakeAutoRekeyWrite(t *testing.T) { - checker := &syncChecker{ - called: make(chan int, 10), - waitCall: nil, - } - clientConf := &ClientConfig{HostKeyCallback: checker.Check} - clientConf.RekeyThreshold = 500 - trC, trS, err := handshakePair(clientConf, "addr", false) - if err != nil { - t.Fatalf("handshakePair: %v", err) - } - defer trC.Close() - defer trS.Close() - - input := make([]byte, 251) - input[0] = msgRequestSuccess - - done := make(chan int, 1) - const numPacket = 5 - go func() { - defer close(done) - j := 0 - for ; j < numPacket; j++ { - if p, err := trS.readPacket(); err != nil { - break - } else if !bytes.Equal(input, p) { - t.Errorf("got packet type %d, want %d", p[0], input[0]) - } - } - - if j != numPacket { - t.Errorf("got %d, want 5 messages", j) - } - }() - - <-checker.called - - for i := 0; i < numPacket; i++ { - p := make([]byte, len(input)) - copy(p, input) - if err := trC.writePacket(p); err != nil { - t.Errorf("writePacket: %v", err) - } - if i == 2 { - // Make sure the kex is in progress. - <-checker.called - } - - } - <-done -} - -type syncChecker struct { - waitCall chan int - called chan int -} - -func (c *syncChecker) Check(dialAddr string, addr net.Addr, key PublicKey) error { - c.called <- 1 - if c.waitCall != nil { - <-c.waitCall - } - return nil -} - -func TestHandshakeAutoRekeyRead(t *testing.T) { - sync := &syncChecker{ - called: make(chan int, 2), - waitCall: nil, - } - clientConf := &ClientConfig{ - HostKeyCallback: sync.Check, - } - clientConf.RekeyThreshold = 500 - - trC, trS, err := handshakePair(clientConf, "addr", false) - if err != nil { - t.Fatalf("handshakePair: %v", err) - } - defer trC.Close() - defer trS.Close() - - packet := make([]byte, 501) - packet[0] = msgRequestSuccess - if err := trS.writePacket(packet); err != nil { - t.Fatalf("writePacket: %v", err) - } - - // While we read out the packet, a key change will be - // initiated. - done := make(chan int, 1) - go func() { - defer close(done) - if _, err := trC.readPacket(); err != nil { - t.Fatalf("readPacket(client): %v", err) - } - - }() - - <-done - <-sync.called -} - -// errorKeyingTransport generates errors after a given number of -// read/write operations. -type errorKeyingTransport struct { - packetConn - readLeft, writeLeft int -} - -func (n *errorKeyingTransport) prepareKeyChange(*algorithms, *kexResult) error { - return nil -} - -func (n *errorKeyingTransport) getSessionID() []byte { - return nil -} - -func (n *errorKeyingTransport) writePacket(packet []byte) error { - if n.writeLeft == 0 { - n.Close() - return errors.New("barf") - } - - n.writeLeft-- - return n.packetConn.writePacket(packet) -} - -func (n *errorKeyingTransport) readPacket() ([]byte, error) { - if n.readLeft == 0 { - n.Close() - return nil, errors.New("barf") - } - - n.readLeft-- - return n.packetConn.readPacket() -} - -func TestHandshakeErrorHandlingRead(t *testing.T) { - for i := 0; i < 20; i++ { - testHandshakeErrorHandlingN(t, i, -1, false) - } -} - -func TestHandshakeErrorHandlingWrite(t *testing.T) { - for i := 0; i < 20; i++ { - testHandshakeErrorHandlingN(t, -1, i, false) - } -} - -func TestHandshakeErrorHandlingReadCoupled(t *testing.T) { - for i := 0; i < 20; i++ { - testHandshakeErrorHandlingN(t, i, -1, true) - } -} - -func TestHandshakeErrorHandlingWriteCoupled(t *testing.T) { - for i := 0; i < 20; i++ { - testHandshakeErrorHandlingN(t, -1, i, true) - } -} - -// testHandshakeErrorHandlingN runs handshakes, injecting errors. If -// handshakeTransport deadlocks, the go runtime will detect it and -// panic. -func testHandshakeErrorHandlingN(t *testing.T, readLimit, writeLimit int, coupled bool) { - msg := Marshal(&serviceRequestMsg{strings.Repeat("x", int(minRekeyThreshold)/4)}) - - a, b := memPipe() - defer a.Close() - defer b.Close() - - key := testSigners["ecdsa"] - serverConf := Config{RekeyThreshold: minRekeyThreshold} - serverConf.SetDefaults() - serverConn := newHandshakeTransport(&errorKeyingTransport{a, readLimit, writeLimit}, &serverConf, []byte{'a'}, []byte{'b'}) - serverConn.hostKeys = []Signer{key} - go serverConn.readLoop() - go serverConn.kexLoop() - - clientConf := Config{RekeyThreshold: 10 * minRekeyThreshold} - clientConf.SetDefaults() - clientConn := newHandshakeTransport(&errorKeyingTransport{b, -1, -1}, &clientConf, []byte{'a'}, []byte{'b'}) - clientConn.hostKeyAlgorithms = []string{key.PublicKey().Type()} - clientConn.hostKeyCallback = InsecureIgnoreHostKey() - go clientConn.readLoop() - go clientConn.kexLoop() - - var wg sync.WaitGroup - - for _, hs := range []packetConn{serverConn, clientConn} { - if !coupled { - wg.Add(2) - go func(c packetConn) { - for i := 0; ; i++ { - str := fmt.Sprintf("%08x", i) + strings.Repeat("x", int(minRekeyThreshold)/4-8) - err := c.writePacket(Marshal(&serviceRequestMsg{str})) - if err != nil { - break - } - } - wg.Done() - c.Close() - }(hs) - go func(c packetConn) { - for { - _, err := c.readPacket() - if err != nil { - break - } - } - wg.Done() - }(hs) - } else { - wg.Add(1) - go func(c packetConn) { - for { - _, err := c.readPacket() - if err != nil { - break - } - if err := c.writePacket(msg); err != nil { - break - } - - } - wg.Done() - }(hs) - } - } - wg.Wait() -} - -func TestDisconnect(t *testing.T) { - if runtime.GOOS == "plan9" { - t.Skip("see golang.org/issue/7237") - } - checker := &testChecker{} - trC, trS, err := handshakePair(&ClientConfig{HostKeyCallback: checker.Check}, "addr", false) - if err != nil { - t.Fatalf("handshakePair: %v", err) - } - - defer trC.Close() - defer trS.Close() - - trC.writePacket([]byte{msgRequestSuccess, 0, 0}) - errMsg := &disconnectMsg{ - Reason: 42, - Message: "such is life", - } - trC.writePacket(Marshal(errMsg)) - trC.writePacket([]byte{msgRequestSuccess, 0, 0}) - - packet, err := trS.readPacket() - if err != nil { - t.Fatalf("readPacket 1: %v", err) - } - if packet[0] != msgRequestSuccess { - t.Errorf("got packet %v, want packet type %d", packet, msgRequestSuccess) - } - - _, err = trS.readPacket() - if err == nil { - t.Errorf("readPacket 2 succeeded") - } else if !reflect.DeepEqual(err, errMsg) { - t.Errorf("got error %#v, want %#v", err, errMsg) - } - - _, err = trS.readPacket() - if err == nil { - t.Errorf("readPacket 3 succeeded") - } -} - -func TestHandshakeRekeyDefault(t *testing.T) { - clientConf := &ClientConfig{ - Config: Config{ - Ciphers: []string{"aes128-ctr"}, - }, - HostKeyCallback: InsecureIgnoreHostKey(), - } - trC, trS, err := handshakePair(clientConf, "addr", false) - if err != nil { - t.Fatalf("handshakePair: %v", err) - } - defer trC.Close() - defer trS.Close() - - trC.writePacket([]byte{msgRequestSuccess, 0, 0}) - trC.Close() - - rgb := (1024 + trC.readBytesLeft) >> 30 - wgb := (1024 + trC.writeBytesLeft) >> 30 - - if rgb != 64 { - t.Errorf("got rekey after %dG read, want 64G", rgb) - } - if wgb != 64 { - t.Errorf("got rekey after %dG write, want 64G", wgb) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/kex.go b/vendor/golang.org/x/crypto/ssh/kex.go deleted file mode 100644 index f34bcc01..00000000 --- a/vendor/golang.org/x/crypto/ssh/kex.go +++ /dev/null @@ -1,540 +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 ssh - -import ( - "crypto" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/subtle" - "errors" - "io" - "math/big" - - "golang.org/x/crypto/curve25519" -) - -const ( - kexAlgoDH1SHA1 = "diffie-hellman-group1-sha1" - kexAlgoDH14SHA1 = "diffie-hellman-group14-sha1" - kexAlgoECDH256 = "ecdh-sha2-nistp256" - kexAlgoECDH384 = "ecdh-sha2-nistp384" - kexAlgoECDH521 = "ecdh-sha2-nistp521" - kexAlgoCurve25519SHA256 = "curve25519-sha256@libssh.org" -) - -// kexResult captures the outcome of a key exchange. -type kexResult struct { - // Session hash. See also RFC 4253, section 8. - H []byte - - // Shared secret. See also RFC 4253, section 8. - K []byte - - // Host key as hashed into H. - HostKey []byte - - // Signature of H. - Signature []byte - - // A cryptographic hash function that matches the security - // level of the key exchange algorithm. It is used for - // calculating H, and for deriving keys from H and K. - Hash crypto.Hash - - // The session ID, which is the first H computed. This is used - // to derive key material inside the transport. - SessionID []byte -} - -// handshakeMagics contains data that is always included in the -// session hash. -type handshakeMagics struct { - clientVersion, serverVersion []byte - clientKexInit, serverKexInit []byte -} - -func (m *handshakeMagics) write(w io.Writer) { - writeString(w, m.clientVersion) - writeString(w, m.serverVersion) - writeString(w, m.clientKexInit) - writeString(w, m.serverKexInit) -} - -// kexAlgorithm abstracts different key exchange algorithms. -type kexAlgorithm interface { - // Server runs server-side key agreement, signing the result - // with a hostkey. - Server(p packetConn, rand io.Reader, magics *handshakeMagics, s Signer) (*kexResult, error) - - // Client runs the client-side key agreement. Caller is - // responsible for verifying the host key signature. - Client(p packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) -} - -// dhGroup is a multiplicative group suitable for implementing Diffie-Hellman key agreement. -type dhGroup struct { - g, p, pMinus1 *big.Int -} - -func (group *dhGroup) diffieHellman(theirPublic, myPrivate *big.Int) (*big.Int, error) { - if theirPublic.Cmp(bigOne) <= 0 || theirPublic.Cmp(group.pMinus1) >= 0 { - return nil, errors.New("ssh: DH parameter out of bounds") - } - return new(big.Int).Exp(theirPublic, myPrivate, group.p), nil -} - -func (group *dhGroup) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) { - hashFunc := crypto.SHA1 - - var x *big.Int - for { - var err error - if x, err = rand.Int(randSource, group.pMinus1); err != nil { - return nil, err - } - if x.Sign() > 0 { - break - } - } - - X := new(big.Int).Exp(group.g, x, group.p) - kexDHInit := kexDHInitMsg{ - X: X, - } - if err := c.writePacket(Marshal(&kexDHInit)); err != nil { - return nil, err - } - - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var kexDHReply kexDHReplyMsg - if err = Unmarshal(packet, &kexDHReply); err != nil { - return nil, err - } - - ki, err := group.diffieHellman(kexDHReply.Y, x) - if err != nil { - return nil, err - } - - h := hashFunc.New() - magics.write(h) - writeString(h, kexDHReply.HostKey) - writeInt(h, X) - writeInt(h, kexDHReply.Y) - K := make([]byte, intLength(ki)) - marshalInt(K, ki) - h.Write(K) - - return &kexResult{ - H: h.Sum(nil), - K: K, - HostKey: kexDHReply.HostKey, - Signature: kexDHReply.Signature, - Hash: crypto.SHA1, - }, nil -} - -func (group *dhGroup) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv Signer) (result *kexResult, err error) { - hashFunc := crypto.SHA1 - packet, err := c.readPacket() - if err != nil { - return - } - var kexDHInit kexDHInitMsg - if err = Unmarshal(packet, &kexDHInit); err != nil { - return - } - - var y *big.Int - for { - if y, err = rand.Int(randSource, group.pMinus1); err != nil { - return - } - if y.Sign() > 0 { - break - } - } - - Y := new(big.Int).Exp(group.g, y, group.p) - ki, err := group.diffieHellman(kexDHInit.X, y) - if err != nil { - return nil, err - } - - hostKeyBytes := priv.PublicKey().Marshal() - - h := hashFunc.New() - magics.write(h) - writeString(h, hostKeyBytes) - writeInt(h, kexDHInit.X) - writeInt(h, Y) - - K := make([]byte, intLength(ki)) - marshalInt(K, ki) - h.Write(K) - - H := h.Sum(nil) - - // H is already a hash, but the hostkey signing will apply its - // own key-specific hash algorithm. - sig, err := signAndMarshal(priv, randSource, H) - if err != nil { - return nil, err - } - - kexDHReply := kexDHReplyMsg{ - HostKey: hostKeyBytes, - Y: Y, - Signature: sig, - } - packet = Marshal(&kexDHReply) - - err = c.writePacket(packet) - return &kexResult{ - H: H, - K: K, - HostKey: hostKeyBytes, - Signature: sig, - Hash: crypto.SHA1, - }, nil -} - -// ecdh performs Elliptic Curve Diffie-Hellman key exchange as -// described in RFC 5656, section 4. -type ecdh struct { - curve elliptic.Curve -} - -func (kex *ecdh) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { - ephKey, err := ecdsa.GenerateKey(kex.curve, rand) - if err != nil { - return nil, err - } - - kexInit := kexECDHInitMsg{ - ClientPubKey: elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y), - } - - serialized := Marshal(&kexInit) - if err := c.writePacket(serialized); err != nil { - return nil, err - } - - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var reply kexECDHReplyMsg - if err = Unmarshal(packet, &reply); err != nil { - return nil, err - } - - x, y, err := unmarshalECKey(kex.curve, reply.EphemeralPubKey) - if err != nil { - return nil, err - } - - // generate shared secret - secret, _ := kex.curve.ScalarMult(x, y, ephKey.D.Bytes()) - - h := ecHash(kex.curve).New() - magics.write(h) - writeString(h, reply.HostKey) - writeString(h, kexInit.ClientPubKey) - writeString(h, reply.EphemeralPubKey) - K := make([]byte, intLength(secret)) - marshalInt(K, secret) - h.Write(K) - - return &kexResult{ - H: h.Sum(nil), - K: K, - HostKey: reply.HostKey, - Signature: reply.Signature, - Hash: ecHash(kex.curve), - }, nil -} - -// unmarshalECKey parses and checks an EC key. -func unmarshalECKey(curve elliptic.Curve, pubkey []byte) (x, y *big.Int, err error) { - x, y = elliptic.Unmarshal(curve, pubkey) - if x == nil { - return nil, nil, errors.New("ssh: elliptic.Unmarshal failure") - } - if !validateECPublicKey(curve, x, y) { - return nil, nil, errors.New("ssh: public key not on curve") - } - return x, y, nil -} - -// validateECPublicKey checks that the point is a valid public key for -// the given curve. See [SEC1], 3.2.2 -func validateECPublicKey(curve elliptic.Curve, x, y *big.Int) bool { - if x.Sign() == 0 && y.Sign() == 0 { - return false - } - - if x.Cmp(curve.Params().P) >= 0 { - return false - } - - if y.Cmp(curve.Params().P) >= 0 { - return false - } - - if !curve.IsOnCurve(x, y) { - return false - } - - // We don't check if N * PubKey == 0, since - // - // - the NIST curves have cofactor = 1, so this is implicit. - // (We don't foresee an implementation that supports non NIST - // curves) - // - // - for ephemeral keys, we don't need to worry about small - // subgroup attacks. - return true -} - -func (kex *ecdh) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv Signer) (result *kexResult, err error) { - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var kexECDHInit kexECDHInitMsg - if err = Unmarshal(packet, &kexECDHInit); err != nil { - return nil, err - } - - clientX, clientY, err := unmarshalECKey(kex.curve, kexECDHInit.ClientPubKey) - if err != nil { - return nil, err - } - - // We could cache this key across multiple users/multiple - // connection attempts, but the benefit is small. OpenSSH - // generates a new key for each incoming connection. - ephKey, err := ecdsa.GenerateKey(kex.curve, rand) - if err != nil { - return nil, err - } - - hostKeyBytes := priv.PublicKey().Marshal() - - serializedEphKey := elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y) - - // generate shared secret - secret, _ := kex.curve.ScalarMult(clientX, clientY, ephKey.D.Bytes()) - - h := ecHash(kex.curve).New() - magics.write(h) - writeString(h, hostKeyBytes) - writeString(h, kexECDHInit.ClientPubKey) - writeString(h, serializedEphKey) - - K := make([]byte, intLength(secret)) - marshalInt(K, secret) - h.Write(K) - - H := h.Sum(nil) - - // H is already a hash, but the hostkey signing will apply its - // own key-specific hash algorithm. - sig, err := signAndMarshal(priv, rand, H) - if err != nil { - return nil, err - } - - reply := kexECDHReplyMsg{ - EphemeralPubKey: serializedEphKey, - HostKey: hostKeyBytes, - Signature: sig, - } - - serialized := Marshal(&reply) - if err := c.writePacket(serialized); err != nil { - return nil, err - } - - return &kexResult{ - H: H, - K: K, - HostKey: reply.HostKey, - Signature: sig, - Hash: ecHash(kex.curve), - }, nil -} - -var kexAlgoMap = map[string]kexAlgorithm{} - -func init() { - // This is the group called diffie-hellman-group1-sha1 in RFC - // 4253 and Oakley Group 2 in RFC 2409. - p, _ := new(big.Int).SetString("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF", 16) - kexAlgoMap[kexAlgoDH1SHA1] = &dhGroup{ - g: new(big.Int).SetInt64(2), - p: p, - pMinus1: new(big.Int).Sub(p, bigOne), - } - - // This is the group called diffie-hellman-group14-sha1 in RFC - // 4253 and Oakley Group 14 in RFC 3526. - p, _ = new(big.Int).SetString("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF", 16) - - kexAlgoMap[kexAlgoDH14SHA1] = &dhGroup{ - g: new(big.Int).SetInt64(2), - p: p, - pMinus1: new(big.Int).Sub(p, bigOne), - } - - kexAlgoMap[kexAlgoECDH521] = &ecdh{elliptic.P521()} - kexAlgoMap[kexAlgoECDH384] = &ecdh{elliptic.P384()} - kexAlgoMap[kexAlgoECDH256] = &ecdh{elliptic.P256()} - kexAlgoMap[kexAlgoCurve25519SHA256] = &curve25519sha256{} -} - -// curve25519sha256 implements the curve25519-sha256@libssh.org key -// agreement protocol, as described in -// https://git.libssh.org/projects/libssh.git/tree/doc/curve25519-sha256@libssh.org.txt -type curve25519sha256 struct{} - -type curve25519KeyPair struct { - priv [32]byte - pub [32]byte -} - -func (kp *curve25519KeyPair) generate(rand io.Reader) error { - if _, err := io.ReadFull(rand, kp.priv[:]); err != nil { - return err - } - curve25519.ScalarBaseMult(&kp.pub, &kp.priv) - return nil -} - -// curve25519Zeros is just an array of 32 zero bytes so that we have something -// convenient to compare against in order to reject curve25519 points with the -// wrong order. -var curve25519Zeros [32]byte - -func (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { - var kp curve25519KeyPair - if err := kp.generate(rand); err != nil { - return nil, err - } - if err := c.writePacket(Marshal(&kexECDHInitMsg{kp.pub[:]})); err != nil { - return nil, err - } - - packet, err := c.readPacket() - if err != nil { - return nil, err - } - - var reply kexECDHReplyMsg - if err = Unmarshal(packet, &reply); err != nil { - return nil, err - } - if len(reply.EphemeralPubKey) != 32 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong length") - } - - var servPub, secret [32]byte - copy(servPub[:], reply.EphemeralPubKey) - curve25519.ScalarMult(&secret, &kp.priv, &servPub) - if subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong order") - } - - h := crypto.SHA256.New() - magics.write(h) - writeString(h, reply.HostKey) - writeString(h, kp.pub[:]) - writeString(h, reply.EphemeralPubKey) - - ki := new(big.Int).SetBytes(secret[:]) - K := make([]byte, intLength(ki)) - marshalInt(K, ki) - h.Write(K) - - return &kexResult{ - H: h.Sum(nil), - K: K, - HostKey: reply.HostKey, - Signature: reply.Signature, - Hash: crypto.SHA256, - }, nil -} - -func (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv Signer) (result *kexResult, err error) { - packet, err := c.readPacket() - if err != nil { - return - } - var kexInit kexECDHInitMsg - if err = Unmarshal(packet, &kexInit); err != nil { - return - } - - if len(kexInit.ClientPubKey) != 32 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong length") - } - - var kp curve25519KeyPair - if err := kp.generate(rand); err != nil { - return nil, err - } - - var clientPub, secret [32]byte - copy(clientPub[:], kexInit.ClientPubKey) - curve25519.ScalarMult(&secret, &kp.priv, &clientPub) - if subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong order") - } - - hostKeyBytes := priv.PublicKey().Marshal() - - h := crypto.SHA256.New() - magics.write(h) - writeString(h, hostKeyBytes) - writeString(h, kexInit.ClientPubKey) - writeString(h, kp.pub[:]) - - ki := new(big.Int).SetBytes(secret[:]) - K := make([]byte, intLength(ki)) - marshalInt(K, ki) - h.Write(K) - - H := h.Sum(nil) - - sig, err := signAndMarshal(priv, rand, H) - if err != nil { - return nil, err - } - - reply := kexECDHReplyMsg{ - EphemeralPubKey: kp.pub[:], - HostKey: hostKeyBytes, - Signature: sig, - } - if err := c.writePacket(Marshal(&reply)); err != nil { - return nil, err - } - return &kexResult{ - H: H, - K: K, - HostKey: hostKeyBytes, - Signature: sig, - Hash: crypto.SHA256, - }, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/kex_test.go b/vendor/golang.org/x/crypto/ssh/kex_test.go deleted file mode 100644 index 12ca0acd..00000000 --- a/vendor/golang.org/x/crypto/ssh/kex_test.go +++ /dev/null @@ -1,50 +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 ssh - -// Key exchange tests. - -import ( - "crypto/rand" - "reflect" - "testing" -) - -func TestKexes(t *testing.T) { - type kexResultErr struct { - result *kexResult - err error - } - - for name, kex := range kexAlgoMap { - a, b := memPipe() - - s := make(chan kexResultErr, 1) - c := make(chan kexResultErr, 1) - var magics handshakeMagics - go func() { - r, e := kex.Client(a, rand.Reader, &magics) - a.Close() - c <- kexResultErr{r, e} - }() - go func() { - r, e := kex.Server(b, rand.Reader, &magics, testSigners["ecdsa"]) - b.Close() - s <- kexResultErr{r, e} - }() - - clientRes := <-c - serverRes := <-s - if clientRes.err != nil { - t.Errorf("client: %v", clientRes.err) - } - if serverRes.err != nil { - t.Errorf("server: %v", serverRes.err) - } - if !reflect.DeepEqual(clientRes.result, serverRes.result) { - t.Errorf("kex %q: mismatch %#v, %#v", name, clientRes.result, serverRes.result) - } - } -} diff --git a/vendor/golang.org/x/crypto/ssh/keys.go b/vendor/golang.org/x/crypto/ssh/keys.go deleted file mode 100644 index 73697ded..00000000 --- a/vendor/golang.org/x/crypto/ssh/keys.go +++ /dev/null @@ -1,1032 +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 ssh - -import ( - "bytes" - "crypto" - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/md5" - "crypto/rsa" - "crypto/sha256" - "crypto/x509" - "encoding/asn1" - "encoding/base64" - "encoding/hex" - "encoding/pem" - "errors" - "fmt" - "io" - "math/big" - "strings" - - "golang.org/x/crypto/ed25519" -) - -// These constants represent the algorithm names for key types supported by this -// package. -const ( - KeyAlgoRSA = "ssh-rsa" - KeyAlgoDSA = "ssh-dss" - KeyAlgoECDSA256 = "ecdsa-sha2-nistp256" - KeyAlgoECDSA384 = "ecdsa-sha2-nistp384" - KeyAlgoECDSA521 = "ecdsa-sha2-nistp521" - KeyAlgoED25519 = "ssh-ed25519" -) - -// parsePubKey parses a public key of the given algorithm. -// Use ParsePublicKey for keys with prepended algorithm. -func parsePubKey(in []byte, algo string) (pubKey PublicKey, rest []byte, err error) { - switch algo { - case KeyAlgoRSA: - return parseRSA(in) - case KeyAlgoDSA: - return parseDSA(in) - case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521: - return parseECDSA(in) - case KeyAlgoED25519: - return parseED25519(in) - case CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoED25519v01: - cert, err := parseCert(in, certToPrivAlgo(algo)) - if err != nil { - return nil, nil, err - } - return cert, nil, nil - } - return nil, nil, fmt.Errorf("ssh: unknown key algorithm: %v", algo) -} - -// parseAuthorizedKey parses a public key in OpenSSH authorized_keys format -// (see sshd(8) manual page) once the options and key type fields have been -// removed. -func parseAuthorizedKey(in []byte) (out PublicKey, comment string, err error) { - in = bytes.TrimSpace(in) - - i := bytes.IndexAny(in, " \t") - if i == -1 { - i = len(in) - } - base64Key := in[:i] - - key := make([]byte, base64.StdEncoding.DecodedLen(len(base64Key))) - n, err := base64.StdEncoding.Decode(key, base64Key) - if err != nil { - return nil, "", err - } - key = key[:n] - out, err = ParsePublicKey(key) - if err != nil { - return nil, "", err - } - comment = string(bytes.TrimSpace(in[i:])) - return out, comment, nil -} - -// ParseKnownHosts parses an entry in the format of the known_hosts file. -// -// The known_hosts format is documented in the sshd(8) manual page. This -// function will parse a single entry from in. On successful return, marker -// will contain the optional marker value (i.e. "cert-authority" or "revoked") -// or else be empty, hosts will contain the hosts that this entry matches, -// pubKey will contain the public key and comment will contain any trailing -// comment at the end of the line. See the sshd(8) manual page for the various -// forms that a host string can take. -// -// The unparsed remainder of the input will be returned in rest. This function -// can be called repeatedly to parse multiple entries. -// -// If no entries were found in the input then err will be io.EOF. Otherwise a -// non-nil err value indicates a parse error. -func ParseKnownHosts(in []byte) (marker string, hosts []string, pubKey PublicKey, comment string, rest []byte, err error) { - for len(in) > 0 { - end := bytes.IndexByte(in, '\n') - if end != -1 { - rest = in[end+1:] - in = in[:end] - } else { - rest = nil - } - - end = bytes.IndexByte(in, '\r') - if end != -1 { - in = in[:end] - } - - in = bytes.TrimSpace(in) - if len(in) == 0 || in[0] == '#' { - in = rest - continue - } - - i := bytes.IndexAny(in, " \t") - if i == -1 { - in = rest - continue - } - - // Strip out the beginning of the known_host key. - // This is either an optional marker or a (set of) hostname(s). - keyFields := bytes.Fields(in) - if len(keyFields) < 3 || len(keyFields) > 5 { - return "", nil, nil, "", nil, errors.New("ssh: invalid entry in known_hosts data") - } - - // keyFields[0] is either "@cert-authority", "@revoked" or a comma separated - // list of hosts - marker := "" - if keyFields[0][0] == '@' { - marker = string(keyFields[0][1:]) - keyFields = keyFields[1:] - } - - hosts := string(keyFields[0]) - // keyFields[1] contains the key type (e.g. “ssh-rsa”). - // However, that information is duplicated inside the - // base64-encoded key and so is ignored here. - - key := bytes.Join(keyFields[2:], []byte(" ")) - if pubKey, comment, err = parseAuthorizedKey(key); err != nil { - return "", nil, nil, "", nil, err - } - - return marker, strings.Split(hosts, ","), pubKey, comment, rest, nil - } - - return "", nil, nil, "", nil, io.EOF -} - -// ParseAuthorizedKeys parses a public key from an authorized_keys -// file used in OpenSSH according to the sshd(8) manual page. -func ParseAuthorizedKey(in []byte) (out PublicKey, comment string, options []string, rest []byte, err error) { - for len(in) > 0 { - end := bytes.IndexByte(in, '\n') - if end != -1 { - rest = in[end+1:] - in = in[:end] - } else { - rest = nil - } - - end = bytes.IndexByte(in, '\r') - if end != -1 { - in = in[:end] - } - - in = bytes.TrimSpace(in) - if len(in) == 0 || in[0] == '#' { - in = rest - continue - } - - i := bytes.IndexAny(in, " \t") - if i == -1 { - in = rest - continue - } - - if out, comment, err = parseAuthorizedKey(in[i:]); err == nil { - return out, comment, options, rest, nil - } - - // No key type recognised. Maybe there's an options field at - // the beginning. - var b byte - inQuote := false - var candidateOptions []string - optionStart := 0 - for i, b = range in { - isEnd := !inQuote && (b == ' ' || b == '\t') - if (b == ',' && !inQuote) || isEnd { - if i-optionStart > 0 { - candidateOptions = append(candidateOptions, string(in[optionStart:i])) - } - optionStart = i + 1 - } - if isEnd { - break - } - if b == '"' && (i == 0 || (i > 0 && in[i-1] != '\\')) { - inQuote = !inQuote - } - } - for i < len(in) && (in[i] == ' ' || in[i] == '\t') { - i++ - } - if i == len(in) { - // Invalid line: unmatched quote - in = rest - continue - } - - in = in[i:] - i = bytes.IndexAny(in, " \t") - if i == -1 { - in = rest - continue - } - - if out, comment, err = parseAuthorizedKey(in[i:]); err == nil { - options = candidateOptions - return out, comment, options, rest, nil - } - - in = rest - continue - } - - return nil, "", nil, nil, errors.New("ssh: no key found") -} - -// ParsePublicKey parses an SSH public key formatted for use in -// the SSH wire protocol according to RFC 4253, section 6.6. -func ParsePublicKey(in []byte) (out PublicKey, err error) { - algo, in, ok := parseString(in) - if !ok { - return nil, errShortRead - } - var rest []byte - out, rest, err = parsePubKey(in, string(algo)) - if len(rest) > 0 { - return nil, errors.New("ssh: trailing junk in public key") - } - - return out, err -} - -// MarshalAuthorizedKey serializes key for inclusion in an OpenSSH -// authorized_keys file. The return value ends with newline. -func MarshalAuthorizedKey(key PublicKey) []byte { - b := &bytes.Buffer{} - b.WriteString(key.Type()) - b.WriteByte(' ') - e := base64.NewEncoder(base64.StdEncoding, b) - e.Write(key.Marshal()) - e.Close() - b.WriteByte('\n') - return b.Bytes() -} - -// PublicKey is an abstraction of different types of public keys. -type PublicKey interface { - // Type returns the key's type, e.g. "ssh-rsa". - Type() string - - // Marshal returns the serialized key data in SSH wire format, - // with the name prefix. To unmarshal the returned data, use - // the ParsePublicKey function. - Marshal() []byte - - // Verify that sig is a signature on the given data using this - // key. This function will hash the data appropriately first. - Verify(data []byte, sig *Signature) error -} - -// CryptoPublicKey, if implemented by a PublicKey, -// returns the underlying crypto.PublicKey form of the key. -type CryptoPublicKey interface { - CryptoPublicKey() crypto.PublicKey -} - -// A Signer can create signatures that verify against a public key. -type Signer interface { - // PublicKey returns an associated PublicKey instance. - PublicKey() PublicKey - - // Sign returns raw signature for the given data. This method - // will apply the hash specified for the keytype to the data. - Sign(rand io.Reader, data []byte) (*Signature, error) -} - -type rsaPublicKey rsa.PublicKey - -func (r *rsaPublicKey) Type() string { - return "ssh-rsa" -} - -// parseRSA parses an RSA key according to RFC 4253, section 6.6. -func parseRSA(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - E *big.Int - N *big.Int - Rest []byte `ssh:"rest"` - } - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - if w.E.BitLen() > 24 { - return nil, nil, errors.New("ssh: exponent too large") - } - e := w.E.Int64() - if e < 3 || e&1 == 0 { - return nil, nil, errors.New("ssh: incorrect exponent") - } - - var key rsa.PublicKey - key.E = int(e) - key.N = w.N - return (*rsaPublicKey)(&key), w.Rest, nil -} - -func (r *rsaPublicKey) Marshal() []byte { - e := new(big.Int).SetInt64(int64(r.E)) - // RSA publickey struct layout should match the struct used by - // parseRSACert in the x/crypto/ssh/agent package. - wirekey := struct { - Name string - E *big.Int - N *big.Int - }{ - KeyAlgoRSA, - e, - r.N, - } - return Marshal(&wirekey) -} - -func (r *rsaPublicKey) Verify(data []byte, sig *Signature) error { - if sig.Format != r.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, r.Type()) - } - h := crypto.SHA1.New() - h.Write(data) - digest := h.Sum(nil) - return rsa.VerifyPKCS1v15((*rsa.PublicKey)(r), crypto.SHA1, digest, sig.Blob) -} - -func (r *rsaPublicKey) CryptoPublicKey() crypto.PublicKey { - return (*rsa.PublicKey)(r) -} - -type dsaPublicKey dsa.PublicKey - -func (k *dsaPublicKey) Type() string { - return "ssh-dss" -} - -func checkDSAParams(param *dsa.Parameters) error { - // SSH specifies FIPS 186-2, which only provided a single size - // (1024 bits) DSA key. FIPS 186-3 allows for larger key - // sizes, which would confuse SSH. - if l := param.P.BitLen(); l != 1024 { - return fmt.Errorf("ssh: unsupported DSA key size %d", l) - } - - return nil -} - -// parseDSA parses an DSA key according to RFC 4253, section 6.6. -func parseDSA(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - P, Q, G, Y *big.Int - Rest []byte `ssh:"rest"` - } - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - param := dsa.Parameters{ - P: w.P, - Q: w.Q, - G: w.G, - } - if err := checkDSAParams(¶m); err != nil { - return nil, nil, err - } - - key := &dsaPublicKey{ - Parameters: param, - Y: w.Y, - } - return key, w.Rest, nil -} - -func (k *dsaPublicKey) Marshal() []byte { - // DSA publickey struct layout should match the struct used by - // parseDSACert in the x/crypto/ssh/agent package. - w := struct { - Name string - P, Q, G, Y *big.Int - }{ - k.Type(), - k.P, - k.Q, - k.G, - k.Y, - } - - return Marshal(&w) -} - -func (k *dsaPublicKey) Verify(data []byte, sig *Signature) error { - if sig.Format != k.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) - } - h := crypto.SHA1.New() - h.Write(data) - digest := h.Sum(nil) - - // Per RFC 4253, section 6.6, - // The value for 'dss_signature_blob' is encoded as a string containing - // r, followed by s (which are 160-bit integers, without lengths or - // padding, unsigned, and in network byte order). - // For DSS purposes, sig.Blob should be exactly 40 bytes in length. - if len(sig.Blob) != 40 { - return errors.New("ssh: DSA signature parse error") - } - r := new(big.Int).SetBytes(sig.Blob[:20]) - s := new(big.Int).SetBytes(sig.Blob[20:]) - if dsa.Verify((*dsa.PublicKey)(k), digest, r, s) { - return nil - } - return errors.New("ssh: signature did not verify") -} - -func (k *dsaPublicKey) CryptoPublicKey() crypto.PublicKey { - return (*dsa.PublicKey)(k) -} - -type dsaPrivateKey struct { - *dsa.PrivateKey -} - -func (k *dsaPrivateKey) PublicKey() PublicKey { - return (*dsaPublicKey)(&k.PrivateKey.PublicKey) -} - -func (k *dsaPrivateKey) Sign(rand io.Reader, data []byte) (*Signature, error) { - h := crypto.SHA1.New() - h.Write(data) - digest := h.Sum(nil) - r, s, err := dsa.Sign(rand, k.PrivateKey, digest) - if err != nil { - return nil, err - } - - sig := make([]byte, 40) - rb := r.Bytes() - sb := s.Bytes() - - copy(sig[20-len(rb):20], rb) - copy(sig[40-len(sb):], sb) - - return &Signature{ - Format: k.PublicKey().Type(), - Blob: sig, - }, nil -} - -type ecdsaPublicKey ecdsa.PublicKey - -func (k *ecdsaPublicKey) Type() string { - return "ecdsa-sha2-" + k.nistID() -} - -func (k *ecdsaPublicKey) nistID() string { - switch k.Params().BitSize { - case 256: - return "nistp256" - case 384: - return "nistp384" - case 521: - return "nistp521" - } - panic("ssh: unsupported ecdsa key size") -} - -type ed25519PublicKey ed25519.PublicKey - -func (k ed25519PublicKey) Type() string { - return KeyAlgoED25519 -} - -func parseED25519(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - KeyBytes []byte - Rest []byte `ssh:"rest"` - } - - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - key := ed25519.PublicKey(w.KeyBytes) - - return (ed25519PublicKey)(key), w.Rest, nil -} - -func (k ed25519PublicKey) Marshal() []byte { - w := struct { - Name string - KeyBytes []byte - }{ - KeyAlgoED25519, - []byte(k), - } - return Marshal(&w) -} - -func (k ed25519PublicKey) Verify(b []byte, sig *Signature) error { - if sig.Format != k.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) - } - - edKey := (ed25519.PublicKey)(k) - if ok := ed25519.Verify(edKey, b, sig.Blob); !ok { - return errors.New("ssh: signature did not verify") - } - - return nil -} - -func (k ed25519PublicKey) CryptoPublicKey() crypto.PublicKey { - return ed25519.PublicKey(k) -} - -func supportedEllipticCurve(curve elliptic.Curve) bool { - return curve == elliptic.P256() || curve == elliptic.P384() || curve == elliptic.P521() -} - -// ecHash returns the hash to match the given elliptic curve, see RFC -// 5656, section 6.2.1 -func ecHash(curve elliptic.Curve) crypto.Hash { - bitSize := curve.Params().BitSize - switch { - case bitSize <= 256: - return crypto.SHA256 - case bitSize <= 384: - return crypto.SHA384 - } - return crypto.SHA512 -} - -// parseECDSA parses an ECDSA key according to RFC 5656, section 3.1. -func parseECDSA(in []byte) (out PublicKey, rest []byte, err error) { - var w struct { - Curve string - KeyBytes []byte - Rest []byte `ssh:"rest"` - } - - if err := Unmarshal(in, &w); err != nil { - return nil, nil, err - } - - key := new(ecdsa.PublicKey) - - switch w.Curve { - case "nistp256": - key.Curve = elliptic.P256() - case "nistp384": - key.Curve = elliptic.P384() - case "nistp521": - key.Curve = elliptic.P521() - default: - return nil, nil, errors.New("ssh: unsupported curve") - } - - key.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes) - if key.X == nil || key.Y == nil { - return nil, nil, errors.New("ssh: invalid curve point") - } - return (*ecdsaPublicKey)(key), w.Rest, nil -} - -func (k *ecdsaPublicKey) Marshal() []byte { - // See RFC 5656, section 3.1. - keyBytes := elliptic.Marshal(k.Curve, k.X, k.Y) - // ECDSA publickey struct layout should match the struct used by - // parseECDSACert in the x/crypto/ssh/agent package. - w := struct { - Name string - ID string - Key []byte - }{ - k.Type(), - k.nistID(), - keyBytes, - } - - return Marshal(&w) -} - -func (k *ecdsaPublicKey) Verify(data []byte, sig *Signature) error { - if sig.Format != k.Type() { - return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) - } - - h := ecHash(k.Curve).New() - h.Write(data) - digest := h.Sum(nil) - - // Per RFC 5656, section 3.1.2, - // The ecdsa_signature_blob value has the following specific encoding: - // mpint r - // mpint s - var ecSig struct { - R *big.Int - S *big.Int - } - - if err := Unmarshal(sig.Blob, &ecSig); err != nil { - return err - } - - if ecdsa.Verify((*ecdsa.PublicKey)(k), digest, ecSig.R, ecSig.S) { - return nil - } - return errors.New("ssh: signature did not verify") -} - -func (k *ecdsaPublicKey) CryptoPublicKey() crypto.PublicKey { - return (*ecdsa.PublicKey)(k) -} - -// NewSignerFromKey takes an *rsa.PrivateKey, *dsa.PrivateKey, -// *ecdsa.PrivateKey or any other crypto.Signer and returns a -// corresponding Signer instance. ECDSA keys must use P-256, P-384 or -// P-521. DSA keys must use parameter size L1024N160. -func NewSignerFromKey(key interface{}) (Signer, error) { - switch key := key.(type) { - case crypto.Signer: - return NewSignerFromSigner(key) - case *dsa.PrivateKey: - return newDSAPrivateKey(key) - default: - return nil, fmt.Errorf("ssh: unsupported key type %T", key) - } -} - -func newDSAPrivateKey(key *dsa.PrivateKey) (Signer, error) { - if err := checkDSAParams(&key.PublicKey.Parameters); err != nil { - return nil, err - } - - return &dsaPrivateKey{key}, nil -} - -type wrappedSigner struct { - signer crypto.Signer - pubKey PublicKey -} - -// NewSignerFromSigner takes any crypto.Signer implementation and -// returns a corresponding Signer interface. This can be used, for -// example, with keys kept in hardware modules. -func NewSignerFromSigner(signer crypto.Signer) (Signer, error) { - pubKey, err := NewPublicKey(signer.Public()) - if err != nil { - return nil, err - } - - return &wrappedSigner{signer, pubKey}, nil -} - -func (s *wrappedSigner) PublicKey() PublicKey { - return s.pubKey -} - -func (s *wrappedSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { - var hashFunc crypto.Hash - - switch key := s.pubKey.(type) { - case *rsaPublicKey, *dsaPublicKey: - hashFunc = crypto.SHA1 - case *ecdsaPublicKey: - hashFunc = ecHash(key.Curve) - case ed25519PublicKey: - default: - return nil, fmt.Errorf("ssh: unsupported key type %T", key) - } - - var digest []byte - if hashFunc != 0 { - h := hashFunc.New() - h.Write(data) - digest = h.Sum(nil) - } else { - digest = data - } - - signature, err := s.signer.Sign(rand, digest, hashFunc) - if err != nil { - return nil, err - } - - // crypto.Signer.Sign is expected to return an ASN.1-encoded signature - // for ECDSA and DSA, but that's not the encoding expected by SSH, so - // re-encode. - switch s.pubKey.(type) { - case *ecdsaPublicKey, *dsaPublicKey: - type asn1Signature struct { - R, S *big.Int - } - asn1Sig := new(asn1Signature) - _, err := asn1.Unmarshal(signature, asn1Sig) - if err != nil { - return nil, err - } - - switch s.pubKey.(type) { - case *ecdsaPublicKey: - signature = Marshal(asn1Sig) - - case *dsaPublicKey: - signature = make([]byte, 40) - r := asn1Sig.R.Bytes() - s := asn1Sig.S.Bytes() - copy(signature[20-len(r):20], r) - copy(signature[40-len(s):40], s) - } - } - - return &Signature{ - Format: s.pubKey.Type(), - Blob: signature, - }, nil -} - -// NewPublicKey takes an *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey, -// or ed25519.PublicKey returns a corresponding PublicKey instance. -// ECDSA keys must use P-256, P-384 or P-521. -func NewPublicKey(key interface{}) (PublicKey, error) { - switch key := key.(type) { - case *rsa.PublicKey: - return (*rsaPublicKey)(key), nil - case *ecdsa.PublicKey: - if !supportedEllipticCurve(key.Curve) { - return nil, errors.New("ssh: only P-256, P-384 and P-521 EC keys are supported") - } - return (*ecdsaPublicKey)(key), nil - case *dsa.PublicKey: - return (*dsaPublicKey)(key), nil - case ed25519.PublicKey: - return (ed25519PublicKey)(key), nil - default: - return nil, fmt.Errorf("ssh: unsupported key type %T", key) - } -} - -// ParsePrivateKey returns a Signer from a PEM encoded private key. It supports -// the same keys as ParseRawPrivateKey. -func ParsePrivateKey(pemBytes []byte) (Signer, error) { - key, err := ParseRawPrivateKey(pemBytes) - if err != nil { - return nil, err - } - - return NewSignerFromKey(key) -} - -// ParsePrivateKeyWithPassphrase returns a Signer from a PEM encoded private -// key and passphrase. It supports the same keys as -// ParseRawPrivateKeyWithPassphrase. -func ParsePrivateKeyWithPassphrase(pemBytes, passPhrase []byte) (Signer, error) { - key, err := ParseRawPrivateKeyWithPassphrase(pemBytes, passPhrase) - if err != nil { - return nil, err - } - - return NewSignerFromKey(key) -} - -// encryptedBlock tells whether a private key is -// encrypted by examining its Proc-Type header -// for a mention of ENCRYPTED -// according to RFC 1421 Section 4.6.1.1. -func encryptedBlock(block *pem.Block) bool { - return strings.Contains(block.Headers["Proc-Type"], "ENCRYPTED") -} - -// ParseRawPrivateKey returns a private key from a PEM encoded private key. It -// supports RSA (PKCS#1), DSA (OpenSSL), and ECDSA private keys. -func ParseRawPrivateKey(pemBytes []byte) (interface{}, error) { - block, _ := pem.Decode(pemBytes) - if block == nil { - return nil, errors.New("ssh: no key found") - } - - if encryptedBlock(block) { - return nil, errors.New("ssh: cannot decode encrypted private keys") - } - - switch block.Type { - case "RSA PRIVATE KEY": - return x509.ParsePKCS1PrivateKey(block.Bytes) - case "EC PRIVATE KEY": - return x509.ParseECPrivateKey(block.Bytes) - case "DSA PRIVATE KEY": - return ParseDSAPrivateKey(block.Bytes) - case "OPENSSH PRIVATE KEY": - return parseOpenSSHPrivateKey(block.Bytes) - default: - return nil, fmt.Errorf("ssh: unsupported key type %q", block.Type) - } -} - -// ParseRawPrivateKeyWithPassphrase returns a private key decrypted with -// passphrase from a PEM encoded private key. If wrong passphrase, return -// x509.IncorrectPasswordError. -func ParseRawPrivateKeyWithPassphrase(pemBytes, passPhrase []byte) (interface{}, error) { - block, _ := pem.Decode(pemBytes) - if block == nil { - return nil, errors.New("ssh: no key found") - } - buf := block.Bytes - - if encryptedBlock(block) { - if x509.IsEncryptedPEMBlock(block) { - var err error - buf, err = x509.DecryptPEMBlock(block, passPhrase) - if err != nil { - if err == x509.IncorrectPasswordError { - return nil, err - } - return nil, fmt.Errorf("ssh: cannot decode encrypted private keys: %v", err) - } - } - } - - switch block.Type { - case "RSA PRIVATE KEY": - return x509.ParsePKCS1PrivateKey(buf) - case "EC PRIVATE KEY": - return x509.ParseECPrivateKey(buf) - case "DSA PRIVATE KEY": - return ParseDSAPrivateKey(buf) - case "OPENSSH PRIVATE KEY": - return parseOpenSSHPrivateKey(buf) - default: - return nil, fmt.Errorf("ssh: unsupported key type %q", block.Type) - } -} - -// ParseDSAPrivateKey returns a DSA private key from its ASN.1 DER encoding, as -// specified by the OpenSSL DSA man page. -func ParseDSAPrivateKey(der []byte) (*dsa.PrivateKey, error) { - var k struct { - Version int - P *big.Int - Q *big.Int - G *big.Int - Pub *big.Int - Priv *big.Int - } - rest, err := asn1.Unmarshal(der, &k) - if err != nil { - return nil, errors.New("ssh: failed to parse DSA key: " + err.Error()) - } - if len(rest) > 0 { - return nil, errors.New("ssh: garbage after DSA key") - } - - return &dsa.PrivateKey{ - PublicKey: dsa.PublicKey{ - Parameters: dsa.Parameters{ - P: k.P, - Q: k.Q, - G: k.G, - }, - Y: k.Pub, - }, - X: k.Priv, - }, nil -} - -// Implemented based on the documentation at -// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key -func parseOpenSSHPrivateKey(key []byte) (crypto.PrivateKey, error) { - magic := append([]byte("openssh-key-v1"), 0) - if !bytes.Equal(magic, key[0:len(magic)]) { - return nil, errors.New("ssh: invalid openssh private key format") - } - remaining := key[len(magic):] - - var w struct { - CipherName string - KdfName string - KdfOpts string - NumKeys uint32 - PubKey []byte - PrivKeyBlock []byte - } - - if err := Unmarshal(remaining, &w); err != nil { - return nil, err - } - - if w.KdfName != "none" || w.CipherName != "none" { - return nil, errors.New("ssh: cannot decode encrypted private keys") - } - - pk1 := struct { - Check1 uint32 - Check2 uint32 - Keytype string - Rest []byte `ssh:"rest"` - }{} - - if err := Unmarshal(w.PrivKeyBlock, &pk1); err != nil { - return nil, err - } - - if pk1.Check1 != pk1.Check2 { - return nil, errors.New("ssh: checkint mismatch") - } - - // we only handle ed25519 and rsa keys currently - switch pk1.Keytype { - case KeyAlgoRSA: - // https://github.com/openssh/openssh-portable/blob/master/sshkey.c#L2760-L2773 - key := struct { - N *big.Int - E *big.Int - D *big.Int - Iqmp *big.Int - P *big.Int - Q *big.Int - Comment string - Pad []byte `ssh:"rest"` - }{} - - if err := Unmarshal(pk1.Rest, &key); err != nil { - return nil, err - } - - for i, b := range key.Pad { - if int(b) != i+1 { - return nil, errors.New("ssh: padding not as expected") - } - } - - pk := &rsa.PrivateKey{ - PublicKey: rsa.PublicKey{ - N: key.N, - E: int(key.E.Int64()), - }, - D: key.D, - Primes: []*big.Int{key.P, key.Q}, - } - - if err := pk.Validate(); err != nil { - return nil, err - } - - pk.Precompute() - - return pk, nil - case KeyAlgoED25519: - key := struct { - Pub []byte - Priv []byte - Comment string - Pad []byte `ssh:"rest"` - }{} - - if err := Unmarshal(pk1.Rest, &key); err != nil { - return nil, err - } - - if len(key.Priv) != ed25519.PrivateKeySize { - return nil, errors.New("ssh: private key unexpected length") - } - - for i, b := range key.Pad { - if int(b) != i+1 { - return nil, errors.New("ssh: padding not as expected") - } - } - - pk := ed25519.PrivateKey(make([]byte, ed25519.PrivateKeySize)) - copy(pk, key.Priv) - return &pk, nil - default: - return nil, errors.New("ssh: unhandled key type") - } -} - -// FingerprintLegacyMD5 returns the user presentation of the key's -// fingerprint as described by RFC 4716 section 4. -func FingerprintLegacyMD5(pubKey PublicKey) string { - md5sum := md5.Sum(pubKey.Marshal()) - hexarray := make([]string, len(md5sum)) - for i, c := range md5sum { - hexarray[i] = hex.EncodeToString([]byte{c}) - } - return strings.Join(hexarray, ":") -} - -// FingerprintSHA256 returns the user presentation of the key's -// fingerprint as unpadded base64 encoded sha256 hash. -// This format was introduced from OpenSSH 6.8. -// https://www.openssh.com/txt/release-6.8 -// https://tools.ietf.org/html/rfc4648#section-3.2 (unpadded base64 encoding) -func FingerprintSHA256(pubKey PublicKey) string { - sha256sum := sha256.Sum256(pubKey.Marshal()) - hash := base64.RawStdEncoding.EncodeToString(sha256sum[:]) - return "SHA256:" + hash -} diff --git a/vendor/golang.org/x/crypto/ssh/keys_test.go b/vendor/golang.org/x/crypto/ssh/keys_test.go deleted file mode 100644 index 9a90abc0..00000000 --- a/vendor/golang.org/x/crypto/ssh/keys_test.go +++ /dev/null @@ -1,500 +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 ssh - -import ( - "bytes" - "crypto/dsa" - "crypto/ecdsa" - "crypto/elliptic" - "crypto/rand" - "crypto/rsa" - "crypto/x509" - "encoding/base64" - "fmt" - "reflect" - "strings" - "testing" - - "golang.org/x/crypto/ed25519" - "golang.org/x/crypto/ssh/testdata" -) - -func rawKey(pub PublicKey) interface{} { - switch k := pub.(type) { - case *rsaPublicKey: - return (*rsa.PublicKey)(k) - case *dsaPublicKey: - return (*dsa.PublicKey)(k) - case *ecdsaPublicKey: - return (*ecdsa.PublicKey)(k) - case ed25519PublicKey: - return (ed25519.PublicKey)(k) - case *Certificate: - return k - } - panic("unknown key type") -} - -func TestKeyMarshalParse(t *testing.T) { - for _, priv := range testSigners { - pub := priv.PublicKey() - roundtrip, err := ParsePublicKey(pub.Marshal()) - if err != nil { - t.Errorf("ParsePublicKey(%T): %v", pub, err) - } - - k1 := rawKey(pub) - k2 := rawKey(roundtrip) - - if !reflect.DeepEqual(k1, k2) { - t.Errorf("got %#v in roundtrip, want %#v", k2, k1) - } - } -} - -func TestUnsupportedCurves(t *testing.T) { - raw, err := ecdsa.GenerateKey(elliptic.P224(), rand.Reader) - if err != nil { - t.Fatalf("GenerateKey: %v", err) - } - - if _, err = NewSignerFromKey(raw); err == nil || !strings.Contains(err.Error(), "only P-256") { - t.Fatalf("NewPrivateKey should not succeed with P-224, got: %v", err) - } - - if _, err = NewPublicKey(&raw.PublicKey); err == nil || !strings.Contains(err.Error(), "only P-256") { - t.Fatalf("NewPublicKey should not succeed with P-224, got: %v", err) - } -} - -func TestNewPublicKey(t *testing.T) { - for _, k := range testSigners { - raw := rawKey(k.PublicKey()) - // Skip certificates, as NewPublicKey does not support them. - if _, ok := raw.(*Certificate); ok { - continue - } - pub, err := NewPublicKey(raw) - if err != nil { - t.Errorf("NewPublicKey(%#v): %v", raw, err) - } - if !reflect.DeepEqual(k.PublicKey(), pub) { - t.Errorf("NewPublicKey(%#v) = %#v, want %#v", raw, pub, k.PublicKey()) - } - } -} - -func TestKeySignVerify(t *testing.T) { - for _, priv := range testSigners { - pub := priv.PublicKey() - - data := []byte("sign me") - sig, err := priv.Sign(rand.Reader, data) - if err != nil { - t.Fatalf("Sign(%T): %v", priv, err) - } - - if err := pub.Verify(data, sig); err != nil { - t.Errorf("publicKey.Verify(%T): %v", priv, err) - } - sig.Blob[5]++ - if err := pub.Verify(data, sig); err == nil { - t.Errorf("publicKey.Verify on broken sig did not fail") - } - } -} - -func TestParseRSAPrivateKey(t *testing.T) { - key := testPrivateKeys["rsa"] - - rsa, ok := key.(*rsa.PrivateKey) - if !ok { - t.Fatalf("got %T, want *rsa.PrivateKey", rsa) - } - - if err := rsa.Validate(); err != nil { - t.Errorf("Validate: %v", err) - } -} - -func TestParseECPrivateKey(t *testing.T) { - key := testPrivateKeys["ecdsa"] - - ecKey, ok := key.(*ecdsa.PrivateKey) - if !ok { - t.Fatalf("got %T, want *ecdsa.PrivateKey", ecKey) - } - - if !validateECPublicKey(ecKey.Curve, ecKey.X, ecKey.Y) { - t.Fatalf("public key does not validate.") - } -} - -// See Issue https://github.com/golang/go/issues/6650. -func TestParseEncryptedPrivateKeysFails(t *testing.T) { - const wantSubstring = "encrypted" - for i, tt := range testdata.PEMEncryptedKeys { - _, err := ParsePrivateKey(tt.PEMBytes) - if err == nil { - t.Errorf("#%d key %s: ParsePrivateKey successfully parsed, expected an error", i, tt.Name) - continue - } - - if !strings.Contains(err.Error(), wantSubstring) { - t.Errorf("#%d key %s: got error %q, want substring %q", i, tt.Name, err, wantSubstring) - } - } -} - -// Parse encrypted private keys with passphrase -func TestParseEncryptedPrivateKeysWithPassphrase(t *testing.T) { - data := []byte("sign me") - for _, tt := range testdata.PEMEncryptedKeys { - s, err := ParsePrivateKeyWithPassphrase(tt.PEMBytes, []byte(tt.EncryptionKey)) - if err != nil { - t.Fatalf("ParsePrivateKeyWithPassphrase returned error: %s", err) - continue - } - sig, err := s.Sign(rand.Reader, data) - if err != nil { - t.Fatalf("dsa.Sign: %v", err) - } - if err := s.PublicKey().Verify(data, sig); err != nil { - t.Errorf("Verify failed: %v", err) - } - } - - tt := testdata.PEMEncryptedKeys[0] - _, err := ParsePrivateKeyWithPassphrase(tt.PEMBytes, []byte("incorrect")) - if err != x509.IncorrectPasswordError { - t.Fatalf("got %v want IncorrectPasswordError", err) - } -} - -func TestParseDSA(t *testing.T) { - // We actually exercise the ParsePrivateKey codepath here, as opposed to - // using the ParseRawPrivateKey+NewSignerFromKey path that testdata_test.go - // uses. - s, err := ParsePrivateKey(testdata.PEMBytes["dsa"]) - if err != nil { - t.Fatalf("ParsePrivateKey returned error: %s", err) - } - - data := []byte("sign me") - sig, err := s.Sign(rand.Reader, data) - if err != nil { - t.Fatalf("dsa.Sign: %v", err) - } - - if err := s.PublicKey().Verify(data, sig); err != nil { - t.Errorf("Verify failed: %v", err) - } -} - -// Tests for authorized_keys parsing. - -// getTestKey returns a public key, and its base64 encoding. -func getTestKey() (PublicKey, string) { - k := testPublicKeys["rsa"] - - b := &bytes.Buffer{} - e := base64.NewEncoder(base64.StdEncoding, b) - e.Write(k.Marshal()) - e.Close() - - return k, b.String() -} - -func TestMarshalParsePublicKey(t *testing.T) { - pub, pubSerialized := getTestKey() - line := fmt.Sprintf("%s %s user@host", pub.Type(), pubSerialized) - - authKeys := MarshalAuthorizedKey(pub) - actualFields := strings.Fields(string(authKeys)) - if len(actualFields) == 0 { - t.Fatalf("failed authKeys: %v", authKeys) - } - - // drop the comment - expectedFields := strings.Fields(line)[0:2] - - if !reflect.DeepEqual(actualFields, expectedFields) { - t.Errorf("got %v, expected %v", actualFields, expectedFields) - } - - actPub, _, _, _, err := ParseAuthorizedKey([]byte(line)) - if err != nil { - t.Fatalf("cannot parse %v: %v", line, err) - } - if !reflect.DeepEqual(actPub, pub) { - t.Errorf("got %v, expected %v", actPub, pub) - } -} - -type testAuthResult struct { - pubKey PublicKey - options []string - comments string - rest string - ok bool -} - -func testAuthorizedKeys(t *testing.T, authKeys []byte, expected []testAuthResult) { - rest := authKeys - var values []testAuthResult - for len(rest) > 0 { - var r testAuthResult - var err error - r.pubKey, r.comments, r.options, rest, err = ParseAuthorizedKey(rest) - r.ok = (err == nil) - t.Log(err) - r.rest = string(rest) - values = append(values, r) - } - - if !reflect.DeepEqual(values, expected) { - t.Errorf("got %#v, expected %#v", values, expected) - } -} - -func TestAuthorizedKeyBasic(t *testing.T) { - pub, pubSerialized := getTestKey() - line := "ssh-rsa " + pubSerialized + " user@host" - testAuthorizedKeys(t, []byte(line), - []testAuthResult{ - {pub, nil, "user@host", "", true}, - }) -} - -func TestAuth(t *testing.T) { - pub, pubSerialized := getTestKey() - authWithOptions := []string{ - `# comments to ignore before any keys...`, - ``, - `env="HOME=/home/root",no-port-forwarding ssh-rsa ` + pubSerialized + ` user@host`, - `# comments to ignore, along with a blank line`, - ``, - `env="HOME=/home/root2" ssh-rsa ` + pubSerialized + ` user2@host2`, - ``, - `# more comments, plus a invalid entry`, - `ssh-rsa data-that-will-not-parse user@host3`, - } - for _, eol := range []string{"\n", "\r\n"} { - authOptions := strings.Join(authWithOptions, eol) - rest2 := strings.Join(authWithOptions[3:], eol) - rest3 := strings.Join(authWithOptions[6:], eol) - testAuthorizedKeys(t, []byte(authOptions), []testAuthResult{ - {pub, []string{`env="HOME=/home/root"`, "no-port-forwarding"}, "user@host", rest2, true}, - {pub, []string{`env="HOME=/home/root2"`}, "user2@host2", rest3, true}, - {nil, nil, "", "", false}, - }) - } -} - -func TestAuthWithQuotedSpaceInEnv(t *testing.T) { - pub, pubSerialized := getTestKey() - authWithQuotedSpaceInEnv := []byte(`env="HOME=/home/root dir",no-port-forwarding ssh-rsa ` + pubSerialized + ` user@host`) - testAuthorizedKeys(t, []byte(authWithQuotedSpaceInEnv), []testAuthResult{ - {pub, []string{`env="HOME=/home/root dir"`, "no-port-forwarding"}, "user@host", "", true}, - }) -} - -func TestAuthWithQuotedCommaInEnv(t *testing.T) { - pub, pubSerialized := getTestKey() - authWithQuotedCommaInEnv := []byte(`env="HOME=/home/root,dir",no-port-forwarding ssh-rsa ` + pubSerialized + ` user@host`) - testAuthorizedKeys(t, []byte(authWithQuotedCommaInEnv), []testAuthResult{ - {pub, []string{`env="HOME=/home/root,dir"`, "no-port-forwarding"}, "user@host", "", true}, - }) -} - -func TestAuthWithQuotedQuoteInEnv(t *testing.T) { - pub, pubSerialized := getTestKey() - authWithQuotedQuoteInEnv := []byte(`env="HOME=/home/\"root dir",no-port-forwarding` + "\t" + `ssh-rsa` + "\t" + pubSerialized + ` user@host`) - authWithDoubleQuotedQuote := []byte(`no-port-forwarding,env="HOME=/home/ \"root dir\"" ssh-rsa ` + pubSerialized + "\t" + `user@host`) - testAuthorizedKeys(t, []byte(authWithQuotedQuoteInEnv), []testAuthResult{ - {pub, []string{`env="HOME=/home/\"root dir"`, "no-port-forwarding"}, "user@host", "", true}, - }) - - testAuthorizedKeys(t, []byte(authWithDoubleQuotedQuote), []testAuthResult{ - {pub, []string{"no-port-forwarding", `env="HOME=/home/ \"root dir\""`}, "user@host", "", true}, - }) -} - -func TestAuthWithInvalidSpace(t *testing.T) { - _, pubSerialized := getTestKey() - authWithInvalidSpace := []byte(`env="HOME=/home/root dir", no-port-forwarding ssh-rsa ` + pubSerialized + ` user@host -#more to follow but still no valid keys`) - testAuthorizedKeys(t, []byte(authWithInvalidSpace), []testAuthResult{ - {nil, nil, "", "", false}, - }) -} - -func TestAuthWithMissingQuote(t *testing.T) { - pub, pubSerialized := getTestKey() - authWithMissingQuote := []byte(`env="HOME=/home/root,no-port-forwarding ssh-rsa ` + pubSerialized + ` user@host -env="HOME=/home/root",shared-control ssh-rsa ` + pubSerialized + ` user@host`) - - testAuthorizedKeys(t, []byte(authWithMissingQuote), []testAuthResult{ - {pub, []string{`env="HOME=/home/root"`, `shared-control`}, "user@host", "", true}, - }) -} - -func TestInvalidEntry(t *testing.T) { - authInvalid := []byte(`ssh-rsa`) - _, _, _, _, err := ParseAuthorizedKey(authInvalid) - if err == nil { - t.Errorf("got valid entry for %q", authInvalid) - } -} - -var knownHostsParseTests = []struct { - input string - err string - - marker string - comment string - hosts []string - rest string -}{ - { - "", - "EOF", - - "", "", nil, "", - }, - { - "# Just a comment", - "EOF", - - "", "", nil, "", - }, - { - " \t ", - "EOF", - - "", "", nil, "", - }, - { - "localhost ssh-rsa {RSAPUB}", - "", - - "", "", []string{"localhost"}, "", - }, - { - "localhost\tssh-rsa {RSAPUB}", - "", - - "", "", []string{"localhost"}, "", - }, - { - "localhost\tssh-rsa {RSAPUB}\tcomment comment", - "", - - "", "comment comment", []string{"localhost"}, "", - }, - { - "localhost\tssh-rsa {RSAPUB}\tcomment comment\n", - "", - - "", "comment comment", []string{"localhost"}, "", - }, - { - "localhost\tssh-rsa {RSAPUB}\tcomment comment\r\n", - "", - - "", "comment comment", []string{"localhost"}, "", - }, - { - "localhost\tssh-rsa {RSAPUB}\tcomment comment\r\nnext line", - "", - - "", "comment comment", []string{"localhost"}, "next line", - }, - { - "localhost,[host2:123]\tssh-rsa {RSAPUB}\tcomment comment", - "", - - "", "comment comment", []string{"localhost", "[host2:123]"}, "", - }, - { - "@marker \tlocalhost,[host2:123]\tssh-rsa {RSAPUB}", - "", - - "marker", "", []string{"localhost", "[host2:123]"}, "", - }, - { - "@marker \tlocalhost,[host2:123]\tssh-rsa aabbccdd", - "short read", - - "", "", nil, "", - }, -} - -func TestKnownHostsParsing(t *testing.T) { - rsaPub, rsaPubSerialized := getTestKey() - - for i, test := range knownHostsParseTests { - var expectedKey PublicKey - const rsaKeyToken = "{RSAPUB}" - - input := test.input - if strings.Contains(input, rsaKeyToken) { - expectedKey = rsaPub - input = strings.Replace(test.input, rsaKeyToken, rsaPubSerialized, -1) - } - - marker, hosts, pubKey, comment, rest, err := ParseKnownHosts([]byte(input)) - if err != nil { - if len(test.err) == 0 { - t.Errorf("#%d: unexpectedly failed with %q", i, err) - } else if !strings.Contains(err.Error(), test.err) { - t.Errorf("#%d: expected error containing %q, but got %q", i, test.err, err) - } - continue - } else if len(test.err) != 0 { - t.Errorf("#%d: succeeded but expected error including %q", i, test.err) - continue - } - - if !reflect.DeepEqual(expectedKey, pubKey) { - t.Errorf("#%d: expected key %#v, but got %#v", i, expectedKey, pubKey) - } - - if marker != test.marker { - t.Errorf("#%d: expected marker %q, but got %q", i, test.marker, marker) - } - - if comment != test.comment { - t.Errorf("#%d: expected comment %q, but got %q", i, test.comment, comment) - } - - if !reflect.DeepEqual(test.hosts, hosts) { - t.Errorf("#%d: expected hosts %#v, but got %#v", i, test.hosts, hosts) - } - - if rest := string(rest); rest != test.rest { - t.Errorf("#%d: expected remaining input to be %q, but got %q", i, test.rest, rest) - } - } -} - -func TestFingerprintLegacyMD5(t *testing.T) { - pub, _ := getTestKey() - fingerprint := FingerprintLegacyMD5(pub) - want := "fb:61:6d:1a:e3:f0:95:45:3c:a0:79:be:4a:93:63:66" // ssh-keygen -lf -E md5 rsa - if fingerprint != want { - t.Errorf("got fingerprint %q want %q", fingerprint, want) - } -} - -func TestFingerprintSHA256(t *testing.T) { - pub, _ := getTestKey() - fingerprint := FingerprintSHA256(pub) - want := "SHA256:Anr3LjZK8YVpjrxu79myrW9Hrb/wpcMNpVvTq/RcBm8" // ssh-keygen -lf rsa - if fingerprint != want { - t.Errorf("got fingerprint %q want %q", fingerprint, want) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go b/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go deleted file mode 100644 index 46dad140..00000000 --- a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go +++ /dev/null @@ -1,546 +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 knownhosts implements a parser for the OpenSSH -// known_hosts host key database. -package knownhosts - -import ( - "bufio" - "bytes" - "crypto/hmac" - "crypto/rand" - "crypto/sha1" - "encoding/base64" - "errors" - "fmt" - "io" - "net" - "os" - "strings" - - "golang.org/x/crypto/ssh" -) - -// See the sshd manpage -// (http://man.openbsd.org/sshd#SSH_KNOWN_HOSTS_FILE_FORMAT) for -// background. - -type addr struct{ host, port string } - -func (a *addr) String() string { - h := a.host - if strings.Contains(h, ":") { - h = "[" + h + "]" - } - return h + ":" + a.port -} - -type matcher interface { - match([]addr) bool -} - -type hostPattern struct { - negate bool - addr addr -} - -func (p *hostPattern) String() string { - n := "" - if p.negate { - n = "!" - } - - return n + p.addr.String() -} - -type hostPatterns []hostPattern - -func (ps hostPatterns) match(addrs []addr) bool { - matched := false - for _, p := range ps { - for _, a := range addrs { - m := p.match(a) - if !m { - continue - } - if p.negate { - return false - } - matched = true - } - } - return matched -} - -// See -// https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/addrmatch.c -// The matching of * has no regard for separators, unlike filesystem globs -func wildcardMatch(pat []byte, str []byte) bool { - for { - if len(pat) == 0 { - return len(str) == 0 - } - if len(str) == 0 { - return false - } - - if pat[0] == '*' { - if len(pat) == 1 { - return true - } - - for j := range str { - if wildcardMatch(pat[1:], str[j:]) { - return true - } - } - return false - } - - if pat[0] == '?' || pat[0] == str[0] { - pat = pat[1:] - str = str[1:] - } else { - return false - } - } -} - -func (p *hostPattern) match(a addr) bool { - return wildcardMatch([]byte(p.addr.host), []byte(a.host)) && p.addr.port == a.port -} - -type keyDBLine struct { - cert bool - matcher matcher - knownKey KnownKey -} - -func serialize(k ssh.PublicKey) string { - return k.Type() + " " + base64.StdEncoding.EncodeToString(k.Marshal()) -} - -func (l *keyDBLine) match(addrs []addr) bool { - return l.matcher.match(addrs) -} - -type hostKeyDB struct { - // Serialized version of revoked keys - revoked map[string]*KnownKey - lines []keyDBLine -} - -func newHostKeyDB() *hostKeyDB { - db := &hostKeyDB{ - revoked: make(map[string]*KnownKey), - } - - return db -} - -func keyEq(a, b ssh.PublicKey) bool { - return bytes.Equal(a.Marshal(), b.Marshal()) -} - -// IsAuthorityForHost can be used as a callback in ssh.CertChecker -func (db *hostKeyDB) IsHostAuthority(remote ssh.PublicKey, address string) bool { - h, p, err := net.SplitHostPort(address) - if err != nil { - return false - } - a := addr{host: h, port: p} - - for _, l := range db.lines { - if l.cert && keyEq(l.knownKey.Key, remote) && l.match([]addr{a}) { - return true - } - } - return false -} - -// IsRevoked can be used as a callback in ssh.CertChecker -func (db *hostKeyDB) IsRevoked(key *ssh.Certificate) bool { - _, ok := db.revoked[string(key.Marshal())] - return ok -} - -const markerCert = "@cert-authority" -const markerRevoked = "@revoked" - -func nextWord(line []byte) (string, []byte) { - i := bytes.IndexAny(line, "\t ") - if i == -1 { - return string(line), nil - } - - return string(line[:i]), bytes.TrimSpace(line[i:]) -} - -func parseLine(line []byte) (marker, host string, key ssh.PublicKey, err error) { - if w, next := nextWord(line); w == markerCert || w == markerRevoked { - marker = w - line = next - } - - host, line = nextWord(line) - if len(line) == 0 { - return "", "", nil, errors.New("knownhosts: missing host pattern") - } - - // ignore the keytype as it's in the key blob anyway. - _, line = nextWord(line) - if len(line) == 0 { - return "", "", nil, errors.New("knownhosts: missing key type pattern") - } - - keyBlob, _ := nextWord(line) - - keyBytes, err := base64.StdEncoding.DecodeString(keyBlob) - if err != nil { - return "", "", nil, err - } - key, err = ssh.ParsePublicKey(keyBytes) - if err != nil { - return "", "", nil, err - } - - return marker, host, key, nil -} - -func (db *hostKeyDB) parseLine(line []byte, filename string, linenum int) error { - marker, pattern, key, err := parseLine(line) - if err != nil { - return err - } - - if marker == markerRevoked { - db.revoked[string(key.Marshal())] = &KnownKey{ - Key: key, - Filename: filename, - Line: linenum, - } - - return nil - } - - entry := keyDBLine{ - cert: marker == markerCert, - knownKey: KnownKey{ - Filename: filename, - Line: linenum, - Key: key, - }, - } - - if pattern[0] == '|' { - entry.matcher, err = newHashedHost(pattern) - } else { - entry.matcher, err = newHostnameMatcher(pattern) - } - - if err != nil { - return err - } - - db.lines = append(db.lines, entry) - return nil -} - -func newHostnameMatcher(pattern string) (matcher, error) { - var hps hostPatterns - for _, p := range strings.Split(pattern, ",") { - if len(p) == 0 { - continue - } - - var a addr - var negate bool - if p[0] == '!' { - negate = true - p = p[1:] - } - - if len(p) == 0 { - return nil, errors.New("knownhosts: negation without following hostname") - } - - var err error - if p[0] == '[' { - a.host, a.port, err = net.SplitHostPort(p) - if err != nil { - return nil, err - } - } else { - a.host, a.port, err = net.SplitHostPort(p) - if err != nil { - a.host = p - a.port = "22" - } - } - hps = append(hps, hostPattern{ - negate: negate, - addr: a, - }) - } - return hps, nil -} - -// KnownKey represents a key declared in a known_hosts file. -type KnownKey struct { - Key ssh.PublicKey - Filename string - Line int -} - -func (k *KnownKey) String() string { - return fmt.Sprintf("%s:%d: %s", k.Filename, k.Line, serialize(k.Key)) -} - -// KeyError is returned if we did not find the key in the host key -// database, or there was a mismatch. Typically, in batch -// applications, this should be interpreted as failure. Interactive -// applications can offer an interactive prompt to the user. -type KeyError struct { - // Want holds the accepted host keys. For each key algorithm, - // there can be one hostkey. If Want is empty, the host is - // unknown. If Want is non-empty, there was a mismatch, which - // can signify a MITM attack. - Want []KnownKey -} - -func (u *KeyError) Error() string { - if len(u.Want) == 0 { - return "knownhosts: key is unknown" - } - return "knownhosts: key mismatch" -} - -// RevokedError is returned if we found a key that was revoked. -type RevokedError struct { - Revoked KnownKey -} - -func (r *RevokedError) Error() string { - return "knownhosts: key is revoked" -} - -// check checks a key against the host database. This should not be -// used for verifying certificates. -func (db *hostKeyDB) check(address string, remote net.Addr, remoteKey ssh.PublicKey) error { - if revoked := db.revoked[string(remoteKey.Marshal())]; revoked != nil { - return &RevokedError{Revoked: *revoked} - } - - host, port, err := net.SplitHostPort(remote.String()) - if err != nil { - return fmt.Errorf("knownhosts: SplitHostPort(%s): %v", remote, err) - } - - addrs := []addr{ - {host, port}, - } - - if address != "" { - host, port, err := net.SplitHostPort(address) - if err != nil { - return fmt.Errorf("knownhosts: SplitHostPort(%s): %v", address, err) - } - - addrs = append(addrs, addr{host, port}) - } - - return db.checkAddrs(addrs, remoteKey) -} - -// checkAddrs checks if we can find the given public key for any of -// the given addresses. If we only find an entry for the IP address, -// or only the hostname, then this still succeeds. -func (db *hostKeyDB) checkAddrs(addrs []addr, remoteKey ssh.PublicKey) error { - // TODO(hanwen): are these the right semantics? What if there - // is just a key for the IP address, but not for the - // hostname? - - // Algorithm => key. - knownKeys := map[string]KnownKey{} - for _, l := range db.lines { - if l.match(addrs) { - typ := l.knownKey.Key.Type() - if _, ok := knownKeys[typ]; !ok { - knownKeys[typ] = l.knownKey - } - } - } - - keyErr := &KeyError{} - for _, v := range knownKeys { - keyErr.Want = append(keyErr.Want, v) - } - - // Unknown remote host. - if len(knownKeys) == 0 { - return keyErr - } - - // If the remote host starts using a different, unknown key type, we - // also interpret that as a mismatch. - if known, ok := knownKeys[remoteKey.Type()]; !ok || !keyEq(known.Key, remoteKey) { - return keyErr - } - - return nil -} - -// The Read function parses file contents. -func (db *hostKeyDB) Read(r io.Reader, filename string) error { - scanner := bufio.NewScanner(r) - - lineNum := 0 - for scanner.Scan() { - lineNum++ - line := scanner.Bytes() - line = bytes.TrimSpace(line) - if len(line) == 0 || line[0] == '#' { - continue - } - - if err := db.parseLine(line, filename, lineNum); err != nil { - return fmt.Errorf("knownhosts: %s:%d: %v", filename, lineNum, err) - } - } - return scanner.Err() -} - -// New creates a host key callback from the given OpenSSH host key -// files. The returned callback is for use in -// ssh.ClientConfig.HostKeyCallback. -func New(files ...string) (ssh.HostKeyCallback, error) { - db := newHostKeyDB() - for _, fn := range files { - f, err := os.Open(fn) - if err != nil { - return nil, err - } - defer f.Close() - if err := db.Read(f, fn); err != nil { - return nil, err - } - } - - var certChecker ssh.CertChecker - certChecker.IsHostAuthority = db.IsHostAuthority - certChecker.IsRevoked = db.IsRevoked - certChecker.HostKeyFallback = db.check - - return certChecker.CheckHostKey, nil -} - -// Normalize normalizes an address into the form used in known_hosts -func Normalize(address string) string { - host, port, err := net.SplitHostPort(address) - if err != nil { - host = address - port = "22" - } - entry := host - if port != "22" { - entry = "[" + entry + "]:" + port - } else if strings.Contains(host, ":") && !strings.HasPrefix(host, "[") { - entry = "[" + entry + "]" - } - return entry -} - -// Line returns a line to add append to the known_hosts files. -func Line(addresses []string, key ssh.PublicKey) string { - var trimmed []string - for _, a := range addresses { - trimmed = append(trimmed, Normalize(a)) - } - - return strings.Join(trimmed, ",") + " " + serialize(key) -} - -// HashHostname hashes the given hostname. The hostname is not -// normalized before hashing. -func HashHostname(hostname string) string { - // TODO(hanwen): check if we can safely normalize this always. - salt := make([]byte, sha1.Size) - - _, err := rand.Read(salt) - if err != nil { - panic(fmt.Sprintf("crypto/rand failure %v", err)) - } - - hash := hashHost(hostname, salt) - return encodeHash(sha1HashType, salt, hash) -} - -func decodeHash(encoded string) (hashType string, salt, hash []byte, err error) { - if len(encoded) == 0 || encoded[0] != '|' { - err = errors.New("knownhosts: hashed host must start with '|'") - return - } - components := strings.Split(encoded, "|") - if len(components) != 4 { - err = fmt.Errorf("knownhosts: got %d components, want 3", len(components)) - return - } - - hashType = components[1] - if salt, err = base64.StdEncoding.DecodeString(components[2]); err != nil { - return - } - if hash, err = base64.StdEncoding.DecodeString(components[3]); err != nil { - return - } - return -} - -func encodeHash(typ string, salt []byte, hash []byte) string { - return strings.Join([]string{"", - typ, - base64.StdEncoding.EncodeToString(salt), - base64.StdEncoding.EncodeToString(hash), - }, "|") -} - -// See https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/hostfile.c#120 -func hashHost(hostname string, salt []byte) []byte { - mac := hmac.New(sha1.New, salt) - mac.Write([]byte(hostname)) - return mac.Sum(nil) -} - -type hashedHost struct { - salt []byte - hash []byte -} - -const sha1HashType = "1" - -func newHashedHost(encoded string) (*hashedHost, error) { - typ, salt, hash, err := decodeHash(encoded) - if err != nil { - return nil, err - } - - // The type field seems for future algorithm agility, but it's - // actually hardcoded in openssh currently, see - // https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/hostfile.c#120 - if typ != sha1HashType { - return nil, fmt.Errorf("knownhosts: got hash type %s, must be '1'", typ) - } - - return &hashedHost{salt: salt, hash: hash}, nil -} - -func (h *hashedHost) match(addrs []addr) bool { - for _, a := range addrs { - if bytes.Equal(hashHost(Normalize(a.String()), h.salt), h.hash) { - return true - } - } - return false -} diff --git a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts_test.go b/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts_test.go deleted file mode 100644 index be7cc0e8..00000000 --- a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts_test.go +++ /dev/null @@ -1,329 +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 knownhosts - -import ( - "bytes" - "fmt" - "net" - "reflect" - "testing" - - "golang.org/x/crypto/ssh" -) - -const edKeyStr = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGBAarftlLeoyf+v+nVchEZII/vna2PCV8FaX4vsF5BX" -const alternateEdKeyStr = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIXffBYeYL+WVzVru8npl5JHt2cjlr4ornFTWzoij9sx" -const ecKeyStr = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNLCu01+wpXe3xB5olXCN4SqU2rQu0qjSRKJO4Bg+JRCPU+ENcgdA5srTU8xYDz/GEa4dzK5ldPw4J/gZgSXCMs=" - -var ecKey, alternateEdKey, edKey ssh.PublicKey -var testAddr = &net.TCPAddr{ - IP: net.IP{198, 41, 30, 196}, - Port: 22, -} - -var testAddr6 = &net.TCPAddr{ - IP: net.IP{198, 41, 30, 196, - 1, 2, 3, 4, - 1, 2, 3, 4, - 1, 2, 3, 4, - }, - Port: 22, -} - -func init() { - var err error - ecKey, _, _, _, err = ssh.ParseAuthorizedKey([]byte(ecKeyStr)) - if err != nil { - panic(err) - } - edKey, _, _, _, err = ssh.ParseAuthorizedKey([]byte(edKeyStr)) - if err != nil { - panic(err) - } - alternateEdKey, _, _, _, err = ssh.ParseAuthorizedKey([]byte(alternateEdKeyStr)) - if err != nil { - panic(err) - } -} - -func testDB(t *testing.T, s string) *hostKeyDB { - db := newHostKeyDB() - if err := db.Read(bytes.NewBufferString(s), "testdb"); err != nil { - t.Fatalf("Read: %v", err) - } - - return db -} - -func TestRevoked(t *testing.T) { - db := testDB(t, "\n\n@revoked * "+edKeyStr+"\n") - want := &RevokedError{ - Revoked: KnownKey{ - Key: edKey, - Filename: "testdb", - Line: 3, - }, - } - if err := db.check("", &net.TCPAddr{ - Port: 42, - }, edKey); err == nil { - t.Fatal("no error for revoked key") - } else if !reflect.DeepEqual(want, err) { - t.Fatalf("got %#v, want %#v", want, err) - } -} - -func TestHostAuthority(t *testing.T) { - for _, m := range []struct { - authorityFor string - address string - - good bool - }{ - {authorityFor: "localhost", address: "localhost:22", good: true}, - {authorityFor: "localhost", address: "localhost", good: false}, - {authorityFor: "localhost", address: "localhost:1234", good: false}, - {authorityFor: "[localhost]:1234", address: "localhost:1234", good: true}, - {authorityFor: "[localhost]:1234", address: "localhost:22", good: false}, - {authorityFor: "[localhost]:1234", address: "localhost", good: false}, - } { - db := testDB(t, `@cert-authority `+m.authorityFor+` `+edKeyStr) - if ok := db.IsHostAuthority(db.lines[0].knownKey.Key, m.address); ok != m.good { - t.Errorf("IsHostAuthority: authority %s, address %s, wanted good = %v, got good = %v", - m.authorityFor, m.address, m.good, ok) - } - } -} - -func TestBracket(t *testing.T) { - db := testDB(t, `[git.eclipse.org]:29418,[198.41.30.196]:29418 `+edKeyStr) - - if err := db.check("git.eclipse.org:29418", &net.TCPAddr{ - IP: net.IP{198, 41, 30, 196}, - Port: 29418, - }, edKey); err != nil { - t.Errorf("got error %v, want none", err) - } - - if err := db.check("git.eclipse.org:29419", &net.TCPAddr{ - Port: 42, - }, edKey); err == nil { - t.Fatalf("no error for unknown address") - } else if ke, ok := err.(*KeyError); !ok { - t.Fatalf("got type %T, want *KeyError", err) - } else if len(ke.Want) > 0 { - t.Fatalf("got Want %v, want []", ke.Want) - } -} - -func TestNewKeyType(t *testing.T) { - str := fmt.Sprintf("%s %s", testAddr, edKeyStr) - db := testDB(t, str) - if err := db.check("", testAddr, ecKey); err == nil { - t.Fatalf("no error for unknown address") - } else if ke, ok := err.(*KeyError); !ok { - t.Fatalf("got type %T, want *KeyError", err) - } else if len(ke.Want) == 0 { - t.Fatalf("got empty KeyError.Want") - } -} - -func TestSameKeyType(t *testing.T) { - str := fmt.Sprintf("%s %s", testAddr, edKeyStr) - db := testDB(t, str) - if err := db.check("", testAddr, alternateEdKey); err == nil { - t.Fatalf("no error for unknown address") - } else if ke, ok := err.(*KeyError); !ok { - t.Fatalf("got type %T, want *KeyError", err) - } else if len(ke.Want) == 0 { - t.Fatalf("got empty KeyError.Want") - } else if got, want := ke.Want[0].Key.Marshal(), edKey.Marshal(); !bytes.Equal(got, want) { - t.Fatalf("got key %q, want %q", got, want) - } -} - -func TestIPAddress(t *testing.T) { - str := fmt.Sprintf("%s %s", testAddr, edKeyStr) - db := testDB(t, str) - if err := db.check("", testAddr, edKey); err != nil { - t.Errorf("got error %q, want none", err) - } -} - -func TestIPv6Address(t *testing.T) { - str := fmt.Sprintf("%s %s", testAddr6, edKeyStr) - db := testDB(t, str) - - if err := db.check("", testAddr6, edKey); err != nil { - t.Errorf("got error %q, want none", err) - } -} - -func TestBasic(t *testing.T) { - str := fmt.Sprintf("#comment\n\nserver.org,%s %s\notherhost %s", testAddr, edKeyStr, ecKeyStr) - db := testDB(t, str) - if err := db.check("server.org:22", testAddr, edKey); err != nil { - t.Errorf("got error %q, want none", err) - } - - want := KnownKey{ - Key: edKey, - Filename: "testdb", - Line: 3, - } - if err := db.check("server.org:22", testAddr, ecKey); err == nil { - t.Errorf("succeeded, want KeyError") - } else if ke, ok := err.(*KeyError); !ok { - t.Errorf("got %T, want *KeyError", err) - } else if len(ke.Want) != 1 { - t.Errorf("got %v, want 1 entry", ke) - } else if !reflect.DeepEqual(ke.Want[0], want) { - t.Errorf("got %v, want %v", ke.Want[0], want) - } -} - -func TestNegate(t *testing.T) { - str := fmt.Sprintf("%s,!server.org %s", testAddr, edKeyStr) - db := testDB(t, str) - if err := db.check("server.org:22", testAddr, ecKey); err == nil { - t.Errorf("succeeded") - } else if ke, ok := err.(*KeyError); !ok { - t.Errorf("got error type %T, want *KeyError", err) - } else if len(ke.Want) != 0 { - t.Errorf("got expected keys %d (first of type %s), want []", len(ke.Want), ke.Want[0].Key.Type()) - } -} - -func TestWildcard(t *testing.T) { - str := fmt.Sprintf("server*.domain %s", edKeyStr) - db := testDB(t, str) - - want := &KeyError{ - Want: []KnownKey{{ - Filename: "testdb", - Line: 1, - Key: edKey, - }}, - } - - got := db.check("server.domain:22", &net.TCPAddr{}, ecKey) - if !reflect.DeepEqual(got, want) { - t.Errorf("got %s, want %s", got, want) - } -} - -func TestLine(t *testing.T) { - for in, want := range map[string]string{ - "server.org": "server.org " + edKeyStr, - "server.org:22": "server.org " + edKeyStr, - "server.org:23": "[server.org]:23 " + edKeyStr, - "[c629:1ec4:102:304:102:304:102:304]:22": "[c629:1ec4:102:304:102:304:102:304] " + edKeyStr, - "[c629:1ec4:102:304:102:304:102:304]:23": "[c629:1ec4:102:304:102:304:102:304]:23 " + edKeyStr, - } { - if got := Line([]string{in}, edKey); got != want { - t.Errorf("Line(%q) = %q, want %q", in, got, want) - } - } -} - -func TestWildcardMatch(t *testing.T) { - for _, c := range []struct { - pat, str string - want bool - }{ - {"a?b", "abb", true}, - {"ab", "abc", false}, - {"abc", "ab", false}, - {"a*b", "axxxb", true}, - {"a*b", "axbxb", true}, - {"a*b", "axbxbc", false}, - {"a*?", "axbxc", true}, - {"a*b*", "axxbxxxxxx", true}, - {"a*b*c", "axxbxxxxxxc", true}, - {"a*b*?", "axxbxxxxxxc", true}, - {"a*b*z", "axxbxxbxxxz", true}, - {"a*b*z", "axxbxxzxxxz", true}, - {"a*b*z", "axxbxxzxxx", false}, - } { - got := wildcardMatch([]byte(c.pat), []byte(c.str)) - if got != c.want { - t.Errorf("wildcardMatch(%q, %q) = %v, want %v", c.pat, c.str, got, c.want) - } - - } -} - -// TODO(hanwen): test coverage for certificates. - -const testHostname = "hostname" - -// generated with keygen -H -f -const encodedTestHostnameHash = "|1|IHXZvQMvTcZTUU29+2vXFgx8Frs=|UGccIWfRVDwilMBnA3WJoRAC75Y=" - -func TestHostHash(t *testing.T) { - testHostHash(t, testHostname, encodedTestHostnameHash) -} - -func TestHashList(t *testing.T) { - encoded := HashHostname(testHostname) - testHostHash(t, testHostname, encoded) -} - -func testHostHash(t *testing.T, hostname, encoded string) { - typ, salt, hash, err := decodeHash(encoded) - if err != nil { - t.Fatalf("decodeHash: %v", err) - } - - if got := encodeHash(typ, salt, hash); got != encoded { - t.Errorf("got encoding %s want %s", got, encoded) - } - - if typ != sha1HashType { - t.Fatalf("got hash type %q, want %q", typ, sha1HashType) - } - - got := hashHost(hostname, salt) - if !bytes.Equal(got, hash) { - t.Errorf("got hash %x want %x", got, hash) - } -} - -func TestNormalize(t *testing.T) { - for in, want := range map[string]string{ - "127.0.0.1:22": "127.0.0.1", - "[127.0.0.1]:22": "127.0.0.1", - "[127.0.0.1]:23": "[127.0.0.1]:23", - "127.0.0.1:23": "[127.0.0.1]:23", - "[a.b.c]:22": "a.b.c", - "[abcd:abcd:abcd:abcd]": "[abcd:abcd:abcd:abcd]", - "[abcd:abcd:abcd:abcd]:22": "[abcd:abcd:abcd:abcd]", - "[abcd:abcd:abcd:abcd]:23": "[abcd:abcd:abcd:abcd]:23", - } { - got := Normalize(in) - if got != want { - t.Errorf("Normalize(%q) = %q, want %q", in, got, want) - } - } -} - -func TestHashedHostkeyCheck(t *testing.T) { - str := fmt.Sprintf("%s %s", HashHostname(testHostname), edKeyStr) - db := testDB(t, str) - if err := db.check(testHostname+":22", testAddr, edKey); err != nil { - t.Errorf("check(%s): %v", testHostname, err) - } - want := &KeyError{ - Want: []KnownKey{{ - Filename: "testdb", - Line: 1, - Key: edKey, - }}, - } - if got := db.check(testHostname+":22", testAddr, alternateEdKey); !reflect.DeepEqual(got, want) { - t.Errorf("got error %v, want %v", got, want) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/mac.go b/vendor/golang.org/x/crypto/ssh/mac.go deleted file mode 100644 index c07a0628..00000000 --- a/vendor/golang.org/x/crypto/ssh/mac.go +++ /dev/null @@ -1,61 +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 ssh - -// Message authentication support - -import ( - "crypto/hmac" - "crypto/sha1" - "crypto/sha256" - "hash" -) - -type macMode struct { - keySize int - etm bool - new func(key []byte) hash.Hash -} - -// truncatingMAC wraps around a hash.Hash and truncates the output digest to -// a given size. -type truncatingMAC struct { - length int - hmac hash.Hash -} - -func (t truncatingMAC) Write(data []byte) (int, error) { - return t.hmac.Write(data) -} - -func (t truncatingMAC) Sum(in []byte) []byte { - out := t.hmac.Sum(in) - return out[:len(in)+t.length] -} - -func (t truncatingMAC) Reset() { - t.hmac.Reset() -} - -func (t truncatingMAC) Size() int { - return t.length -} - -func (t truncatingMAC) BlockSize() int { return t.hmac.BlockSize() } - -var macModes = map[string]*macMode{ - "hmac-sha2-256-etm@openssh.com": {32, true, func(key []byte) hash.Hash { - return hmac.New(sha256.New, key) - }}, - "hmac-sha2-256": {32, false, func(key []byte) hash.Hash { - return hmac.New(sha256.New, key) - }}, - "hmac-sha1": {20, false, func(key []byte) hash.Hash { - return hmac.New(sha1.New, key) - }}, - "hmac-sha1-96": {20, false, func(key []byte) hash.Hash { - return truncatingMAC{12, hmac.New(sha1.New, key)} - }}, -} diff --git a/vendor/golang.org/x/crypto/ssh/mempipe_test.go b/vendor/golang.org/x/crypto/ssh/mempipe_test.go deleted file mode 100644 index 8697cd61..00000000 --- a/vendor/golang.org/x/crypto/ssh/mempipe_test.go +++ /dev/null @@ -1,110 +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 ssh - -import ( - "io" - "sync" - "testing" -) - -// An in-memory packetConn. It is safe to call Close and writePacket -// from different goroutines. -type memTransport struct { - eof bool - pending [][]byte - write *memTransport - sync.Mutex - *sync.Cond -} - -func (t *memTransport) readPacket() ([]byte, error) { - t.Lock() - defer t.Unlock() - for { - if len(t.pending) > 0 { - r := t.pending[0] - t.pending = t.pending[1:] - return r, nil - } - if t.eof { - return nil, io.EOF - } - t.Cond.Wait() - } -} - -func (t *memTransport) closeSelf() error { - t.Lock() - defer t.Unlock() - if t.eof { - return io.EOF - } - t.eof = true - t.Cond.Broadcast() - return nil -} - -func (t *memTransport) Close() error { - err := t.write.closeSelf() - t.closeSelf() - return err -} - -func (t *memTransport) writePacket(p []byte) error { - t.write.Lock() - defer t.write.Unlock() - if t.write.eof { - return io.EOF - } - c := make([]byte, len(p)) - copy(c, p) - t.write.pending = append(t.write.pending, c) - t.write.Cond.Signal() - return nil -} - -func memPipe() (a, b packetConn) { - t1 := memTransport{} - t2 := memTransport{} - t1.write = &t2 - t2.write = &t1 - t1.Cond = sync.NewCond(&t1.Mutex) - t2.Cond = sync.NewCond(&t2.Mutex) - return &t1, &t2 -} - -func TestMemPipe(t *testing.T) { - a, b := memPipe() - if err := a.writePacket([]byte{42}); err != nil { - t.Fatalf("writePacket: %v", err) - } - if err := a.Close(); err != nil { - t.Fatal("Close: ", err) - } - p, err := b.readPacket() - if err != nil { - t.Fatal("readPacket: ", err) - } - if len(p) != 1 || p[0] != 42 { - t.Fatalf("got %v, want {42}", p) - } - p, err = b.readPacket() - if err != io.EOF { - t.Fatalf("got %v, %v, want EOF", p, err) - } -} - -func TestDoubleClose(t *testing.T) { - a, _ := memPipe() - err := a.Close() - if err != nil { - t.Errorf("Close: %v", err) - } - err = a.Close() - if err != io.EOF { - t.Errorf("expect EOF on double close.") - } -} diff --git a/vendor/golang.org/x/crypto/ssh/messages.go b/vendor/golang.org/x/crypto/ssh/messages.go deleted file mode 100644 index 08d28117..00000000 --- a/vendor/golang.org/x/crypto/ssh/messages.go +++ /dev/null @@ -1,766 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "io" - "math/big" - "reflect" - "strconv" - "strings" -) - -// These are SSH message type numbers. They are scattered around several -// documents but many were taken from [SSH-PARAMETERS]. -const ( - msgIgnore = 2 - msgUnimplemented = 3 - msgDebug = 4 - msgNewKeys = 21 -) - -// SSH messages: -// -// These structures mirror the wire format of the corresponding SSH messages. -// They are marshaled using reflection with the marshal and unmarshal functions -// in this file. The only wrinkle is that a final member of type []byte with a -// ssh tag of "rest" receives the remainder of a packet when unmarshaling. - -// See RFC 4253, section 11.1. -const msgDisconnect = 1 - -// disconnectMsg is the message that signals a disconnect. It is also -// the error type returned from mux.Wait() -type disconnectMsg struct { - Reason uint32 `sshtype:"1"` - Message string - Language string -} - -func (d *disconnectMsg) Error() string { - return fmt.Sprintf("ssh: disconnect, reason %d: %s", d.Reason, d.Message) -} - -// See RFC 4253, section 7.1. -const msgKexInit = 20 - -type kexInitMsg struct { - Cookie [16]byte `sshtype:"20"` - KexAlgos []string - ServerHostKeyAlgos []string - CiphersClientServer []string - CiphersServerClient []string - MACsClientServer []string - MACsServerClient []string - CompressionClientServer []string - CompressionServerClient []string - LanguagesClientServer []string - LanguagesServerClient []string - FirstKexFollows bool - Reserved uint32 -} - -// See RFC 4253, section 8. - -// Diffie-Helman -const msgKexDHInit = 30 - -type kexDHInitMsg struct { - X *big.Int `sshtype:"30"` -} - -const msgKexECDHInit = 30 - -type kexECDHInitMsg struct { - ClientPubKey []byte `sshtype:"30"` -} - -const msgKexECDHReply = 31 - -type kexECDHReplyMsg struct { - HostKey []byte `sshtype:"31"` - EphemeralPubKey []byte - Signature []byte -} - -const msgKexDHReply = 31 - -type kexDHReplyMsg struct { - HostKey []byte `sshtype:"31"` - Y *big.Int - Signature []byte -} - -// See RFC 4253, section 10. -const msgServiceRequest = 5 - -type serviceRequestMsg struct { - Service string `sshtype:"5"` -} - -// See RFC 4253, section 10. -const msgServiceAccept = 6 - -type serviceAcceptMsg struct { - Service string `sshtype:"6"` -} - -// See RFC 4252, section 5. -const msgUserAuthRequest = 50 - -type userAuthRequestMsg struct { - User string `sshtype:"50"` - Service string - Method string - Payload []byte `ssh:"rest"` -} - -// Used for debug printouts of packets. -type userAuthSuccessMsg struct { -} - -// See RFC 4252, section 5.1 -const msgUserAuthFailure = 51 - -type userAuthFailureMsg struct { - Methods []string `sshtype:"51"` - PartialSuccess bool -} - -// See RFC 4252, section 5.1 -const msgUserAuthSuccess = 52 - -// See RFC 4252, section 5.4 -const msgUserAuthBanner = 53 - -type userAuthBannerMsg struct { - Message string `sshtype:"53"` - // unused, but required to allow message parsing - Language string -} - -// See RFC 4256, section 3.2 -const msgUserAuthInfoRequest = 60 -const msgUserAuthInfoResponse = 61 - -type userAuthInfoRequestMsg struct { - User string `sshtype:"60"` - Instruction string - DeprecatedLanguage string - NumPrompts uint32 - Prompts []byte `ssh:"rest"` -} - -// See RFC 4254, section 5.1. -const msgChannelOpen = 90 - -type channelOpenMsg struct { - ChanType string `sshtype:"90"` - PeersID uint32 - PeersWindow uint32 - MaxPacketSize uint32 - TypeSpecificData []byte `ssh:"rest"` -} - -const msgChannelExtendedData = 95 -const msgChannelData = 94 - -// Used for debug print outs of packets. -type channelDataMsg struct { - PeersID uint32 `sshtype:"94"` - Length uint32 - Rest []byte `ssh:"rest"` -} - -// See RFC 4254, section 5.1. -const msgChannelOpenConfirm = 91 - -type channelOpenConfirmMsg struct { - PeersID uint32 `sshtype:"91"` - MyID uint32 - MyWindow uint32 - MaxPacketSize uint32 - TypeSpecificData []byte `ssh:"rest"` -} - -// See RFC 4254, section 5.1. -const msgChannelOpenFailure = 92 - -type channelOpenFailureMsg struct { - PeersID uint32 `sshtype:"92"` - Reason RejectionReason - Message string - Language string -} - -const msgChannelRequest = 98 - -type channelRequestMsg struct { - PeersID uint32 `sshtype:"98"` - Request string - WantReply bool - RequestSpecificData []byte `ssh:"rest"` -} - -// See RFC 4254, section 5.4. -const msgChannelSuccess = 99 - -type channelRequestSuccessMsg struct { - PeersID uint32 `sshtype:"99"` -} - -// See RFC 4254, section 5.4. -const msgChannelFailure = 100 - -type channelRequestFailureMsg struct { - PeersID uint32 `sshtype:"100"` -} - -// See RFC 4254, section 5.3 -const msgChannelClose = 97 - -type channelCloseMsg struct { - PeersID uint32 `sshtype:"97"` -} - -// See RFC 4254, section 5.3 -const msgChannelEOF = 96 - -type channelEOFMsg struct { - PeersID uint32 `sshtype:"96"` -} - -// See RFC 4254, section 4 -const msgGlobalRequest = 80 - -type globalRequestMsg struct { - Type string `sshtype:"80"` - WantReply bool - Data []byte `ssh:"rest"` -} - -// See RFC 4254, section 4 -const msgRequestSuccess = 81 - -type globalRequestSuccessMsg struct { - Data []byte `ssh:"rest" sshtype:"81"` -} - -// See RFC 4254, section 4 -const msgRequestFailure = 82 - -type globalRequestFailureMsg struct { - Data []byte `ssh:"rest" sshtype:"82"` -} - -// See RFC 4254, section 5.2 -const msgChannelWindowAdjust = 93 - -type windowAdjustMsg struct { - PeersID uint32 `sshtype:"93"` - AdditionalBytes uint32 -} - -// See RFC 4252, section 7 -const msgUserAuthPubKeyOk = 60 - -type userAuthPubKeyOkMsg struct { - Algo string `sshtype:"60"` - PubKey []byte -} - -// typeTags returns the possible type bytes for the given reflect.Type, which -// should be a struct. The possible values are separated by a '|' character. -func typeTags(structType reflect.Type) (tags []byte) { - tagStr := structType.Field(0).Tag.Get("sshtype") - - for _, tag := range strings.Split(tagStr, "|") { - i, err := strconv.Atoi(tag) - if err == nil { - tags = append(tags, byte(i)) - } - } - - return tags -} - -func fieldError(t reflect.Type, field int, problem string) error { - if problem != "" { - problem = ": " + problem - } - return fmt.Errorf("ssh: unmarshal error for field %s of type %s%s", t.Field(field).Name, t.Name(), problem) -} - -var errShortRead = errors.New("ssh: short read") - -// Unmarshal parses data in SSH wire format into a structure. The out -// argument should be a pointer to struct. If the first member of the -// struct has the "sshtype" tag set to a '|'-separated set of numbers -// in decimal, the packet must start with one of those numbers. In -// case of error, Unmarshal returns a ParseError or -// UnexpectedMessageError. -func Unmarshal(data []byte, out interface{}) error { - v := reflect.ValueOf(out).Elem() - structType := v.Type() - expectedTypes := typeTags(structType) - - var expectedType byte - if len(expectedTypes) > 0 { - expectedType = expectedTypes[0] - } - - if len(data) == 0 { - return parseError(expectedType) - } - - if len(expectedTypes) > 0 { - goodType := false - for _, e := range expectedTypes { - if e > 0 && data[0] == e { - goodType = true - break - } - } - if !goodType { - return fmt.Errorf("ssh: unexpected message type %d (expected one of %v)", data[0], expectedTypes) - } - data = data[1:] - } - - var ok bool - for i := 0; i < v.NumField(); i++ { - field := v.Field(i) - t := field.Type() - switch t.Kind() { - case reflect.Bool: - if len(data) < 1 { - return errShortRead - } - field.SetBool(data[0] != 0) - data = data[1:] - case reflect.Array: - if t.Elem().Kind() != reflect.Uint8 { - return fieldError(structType, i, "array of unsupported type") - } - if len(data) < t.Len() { - return errShortRead - } - for j, n := 0, t.Len(); j < n; j++ { - field.Index(j).Set(reflect.ValueOf(data[j])) - } - data = data[t.Len():] - case reflect.Uint64: - var u64 uint64 - if u64, data, ok = parseUint64(data); !ok { - return errShortRead - } - field.SetUint(u64) - case reflect.Uint32: - var u32 uint32 - if u32, data, ok = parseUint32(data); !ok { - return errShortRead - } - field.SetUint(uint64(u32)) - case reflect.Uint8: - if len(data) < 1 { - return errShortRead - } - field.SetUint(uint64(data[0])) - data = data[1:] - case reflect.String: - var s []byte - if s, data, ok = parseString(data); !ok { - return fieldError(structType, i, "") - } - field.SetString(string(s)) - case reflect.Slice: - switch t.Elem().Kind() { - case reflect.Uint8: - if structType.Field(i).Tag.Get("ssh") == "rest" { - field.Set(reflect.ValueOf(data)) - data = nil - } else { - var s []byte - if s, data, ok = parseString(data); !ok { - return errShortRead - } - field.Set(reflect.ValueOf(s)) - } - case reflect.String: - var nl []string - if nl, data, ok = parseNameList(data); !ok { - return errShortRead - } - field.Set(reflect.ValueOf(nl)) - default: - return fieldError(structType, i, "slice of unsupported type") - } - case reflect.Ptr: - if t == bigIntType { - var n *big.Int - if n, data, ok = parseInt(data); !ok { - return errShortRead - } - field.Set(reflect.ValueOf(n)) - } else { - return fieldError(structType, i, "pointer to unsupported type") - } - default: - return fieldError(structType, i, fmt.Sprintf("unsupported type: %v", t)) - } - } - - if len(data) != 0 { - return parseError(expectedType) - } - - return nil -} - -// Marshal serializes the message in msg to SSH wire format. The msg -// argument should be a struct or pointer to struct. If the first -// member has the "sshtype" tag set to a number in decimal, that -// number is prepended to the result. If the last of member has the -// "ssh" tag set to "rest", its contents are appended to the output. -func Marshal(msg interface{}) []byte { - out := make([]byte, 0, 64) - return marshalStruct(out, msg) -} - -func marshalStruct(out []byte, msg interface{}) []byte { - v := reflect.Indirect(reflect.ValueOf(msg)) - msgTypes := typeTags(v.Type()) - if len(msgTypes) > 0 { - out = append(out, msgTypes[0]) - } - - for i, n := 0, v.NumField(); i < n; i++ { - field := v.Field(i) - switch t := field.Type(); t.Kind() { - case reflect.Bool: - var v uint8 - if field.Bool() { - v = 1 - } - out = append(out, v) - case reflect.Array: - if t.Elem().Kind() != reflect.Uint8 { - panic(fmt.Sprintf("array of non-uint8 in field %d: %T", i, field.Interface())) - } - for j, l := 0, t.Len(); j < l; j++ { - out = append(out, uint8(field.Index(j).Uint())) - } - case reflect.Uint32: - out = appendU32(out, uint32(field.Uint())) - case reflect.Uint64: - out = appendU64(out, uint64(field.Uint())) - case reflect.Uint8: - out = append(out, uint8(field.Uint())) - case reflect.String: - s := field.String() - out = appendInt(out, len(s)) - out = append(out, s...) - case reflect.Slice: - switch t.Elem().Kind() { - case reflect.Uint8: - if v.Type().Field(i).Tag.Get("ssh") != "rest" { - out = appendInt(out, field.Len()) - } - out = append(out, field.Bytes()...) - case reflect.String: - offset := len(out) - out = appendU32(out, 0) - if n := field.Len(); n > 0 { - for j := 0; j < n; j++ { - f := field.Index(j) - if j != 0 { - out = append(out, ',') - } - out = append(out, f.String()...) - } - // overwrite length value - binary.BigEndian.PutUint32(out[offset:], uint32(len(out)-offset-4)) - } - default: - panic(fmt.Sprintf("slice of unknown type in field %d: %T", i, field.Interface())) - } - case reflect.Ptr: - if t == bigIntType { - var n *big.Int - nValue := reflect.ValueOf(&n) - nValue.Elem().Set(field) - needed := intLength(n) - oldLength := len(out) - - if cap(out)-len(out) < needed { - newOut := make([]byte, len(out), 2*(len(out)+needed)) - copy(newOut, out) - out = newOut - } - out = out[:oldLength+needed] - marshalInt(out[oldLength:], n) - } else { - panic(fmt.Sprintf("pointer to unknown type in field %d: %T", i, field.Interface())) - } - } - } - - return out -} - -var bigOne = big.NewInt(1) - -func parseString(in []byte) (out, rest []byte, ok bool) { - if len(in) < 4 { - return - } - length := binary.BigEndian.Uint32(in) - in = in[4:] - if uint32(len(in)) < length { - return - } - out = in[:length] - rest = in[length:] - ok = true - return -} - -var ( - comma = []byte{','} - emptyNameList = []string{} -) - -func parseNameList(in []byte) (out []string, rest []byte, ok bool) { - contents, rest, ok := parseString(in) - if !ok { - return - } - if len(contents) == 0 { - out = emptyNameList - return - } - parts := bytes.Split(contents, comma) - out = make([]string, len(parts)) - for i, part := range parts { - out[i] = string(part) - } - return -} - -func parseInt(in []byte) (out *big.Int, rest []byte, ok bool) { - contents, rest, ok := parseString(in) - if !ok { - return - } - out = new(big.Int) - - if len(contents) > 0 && contents[0]&0x80 == 0x80 { - // This is a negative number - notBytes := make([]byte, len(contents)) - for i := range notBytes { - notBytes[i] = ^contents[i] - } - out.SetBytes(notBytes) - out.Add(out, bigOne) - out.Neg(out) - } else { - // Positive number - out.SetBytes(contents) - } - ok = true - return -} - -func parseUint32(in []byte) (uint32, []byte, bool) { - if len(in) < 4 { - return 0, nil, false - } - return binary.BigEndian.Uint32(in), in[4:], true -} - -func parseUint64(in []byte) (uint64, []byte, bool) { - if len(in) < 8 { - return 0, nil, false - } - return binary.BigEndian.Uint64(in), in[8:], true -} - -func intLength(n *big.Int) int { - length := 4 /* length bytes */ - if n.Sign() < 0 { - nMinus1 := new(big.Int).Neg(n) - nMinus1.Sub(nMinus1, bigOne) - bitLen := nMinus1.BitLen() - if bitLen%8 == 0 { - // The number will need 0xff padding - length++ - } - length += (bitLen + 7) / 8 - } else if n.Sign() == 0 { - // A zero is the zero length string - } else { - bitLen := n.BitLen() - if bitLen%8 == 0 { - // The number will need 0x00 padding - length++ - } - length += (bitLen + 7) / 8 - } - - return length -} - -func marshalUint32(to []byte, n uint32) []byte { - binary.BigEndian.PutUint32(to, n) - return to[4:] -} - -func marshalUint64(to []byte, n uint64) []byte { - binary.BigEndian.PutUint64(to, n) - return to[8:] -} - -func marshalInt(to []byte, n *big.Int) []byte { - lengthBytes := to - to = to[4:] - length := 0 - - if n.Sign() < 0 { - // A negative number has to be converted to two's-complement - // form. So we'll subtract 1 and invert. If the - // most-significant-bit isn't set then we'll need to pad the - // beginning with 0xff in order to keep the number negative. - nMinus1 := new(big.Int).Neg(n) - nMinus1.Sub(nMinus1, bigOne) - bytes := nMinus1.Bytes() - for i := range bytes { - bytes[i] ^= 0xff - } - if len(bytes) == 0 || bytes[0]&0x80 == 0 { - to[0] = 0xff - to = to[1:] - length++ - } - nBytes := copy(to, bytes) - to = to[nBytes:] - length += nBytes - } else if n.Sign() == 0 { - // A zero is the zero length string - } else { - bytes := n.Bytes() - if len(bytes) > 0 && bytes[0]&0x80 != 0 { - // We'll have to pad this with a 0x00 in order to - // stop it looking like a negative number. - to[0] = 0 - to = to[1:] - length++ - } - nBytes := copy(to, bytes) - to = to[nBytes:] - length += nBytes - } - - lengthBytes[0] = byte(length >> 24) - lengthBytes[1] = byte(length >> 16) - lengthBytes[2] = byte(length >> 8) - lengthBytes[3] = byte(length) - return to -} - -func writeInt(w io.Writer, n *big.Int) { - length := intLength(n) - buf := make([]byte, length) - marshalInt(buf, n) - w.Write(buf) -} - -func writeString(w io.Writer, s []byte) { - var lengthBytes [4]byte - lengthBytes[0] = byte(len(s) >> 24) - lengthBytes[1] = byte(len(s) >> 16) - lengthBytes[2] = byte(len(s) >> 8) - lengthBytes[3] = byte(len(s)) - w.Write(lengthBytes[:]) - w.Write(s) -} - -func stringLength(n int) int { - return 4 + n -} - -func marshalString(to []byte, s []byte) []byte { - to[0] = byte(len(s) >> 24) - to[1] = byte(len(s) >> 16) - to[2] = byte(len(s) >> 8) - to[3] = byte(len(s)) - to = to[4:] - copy(to, s) - return to[len(s):] -} - -var bigIntType = reflect.TypeOf((*big.Int)(nil)) - -// Decode a packet into its corresponding message. -func decode(packet []byte) (interface{}, error) { - var msg interface{} - switch packet[0] { - case msgDisconnect: - msg = new(disconnectMsg) - case msgServiceRequest: - msg = new(serviceRequestMsg) - case msgServiceAccept: - msg = new(serviceAcceptMsg) - case msgKexInit: - msg = new(kexInitMsg) - case msgKexDHInit: - msg = new(kexDHInitMsg) - case msgKexDHReply: - msg = new(kexDHReplyMsg) - case msgUserAuthRequest: - msg = new(userAuthRequestMsg) - case msgUserAuthSuccess: - return new(userAuthSuccessMsg), nil - case msgUserAuthFailure: - msg = new(userAuthFailureMsg) - case msgUserAuthPubKeyOk: - msg = new(userAuthPubKeyOkMsg) - case msgGlobalRequest: - msg = new(globalRequestMsg) - case msgRequestSuccess: - msg = new(globalRequestSuccessMsg) - case msgRequestFailure: - msg = new(globalRequestFailureMsg) - case msgChannelOpen: - msg = new(channelOpenMsg) - case msgChannelData: - msg = new(channelDataMsg) - case msgChannelOpenConfirm: - msg = new(channelOpenConfirmMsg) - case msgChannelOpenFailure: - msg = new(channelOpenFailureMsg) - case msgChannelWindowAdjust: - msg = new(windowAdjustMsg) - case msgChannelEOF: - msg = new(channelEOFMsg) - case msgChannelClose: - msg = new(channelCloseMsg) - case msgChannelRequest: - msg = new(channelRequestMsg) - case msgChannelSuccess: - msg = new(channelRequestSuccessMsg) - case msgChannelFailure: - msg = new(channelRequestFailureMsg) - default: - return nil, unexpectedMessageError(0, packet[0]) - } - if err := Unmarshal(packet, msg); err != nil { - return nil, err - } - return msg, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/messages_test.go b/vendor/golang.org/x/crypto/ssh/messages_test.go deleted file mode 100644 index e7907641..00000000 --- a/vendor/golang.org/x/crypto/ssh/messages_test.go +++ /dev/null @@ -1,288 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bytes" - "math/big" - "math/rand" - "reflect" - "testing" - "testing/quick" -) - -var intLengthTests = []struct { - val, length int -}{ - {0, 4 + 0}, - {1, 4 + 1}, - {127, 4 + 1}, - {128, 4 + 2}, - {-1, 4 + 1}, -} - -func TestIntLength(t *testing.T) { - for _, test := range intLengthTests { - v := new(big.Int).SetInt64(int64(test.val)) - length := intLength(v) - if length != test.length { - t.Errorf("For %d, got length %d but expected %d", test.val, length, test.length) - } - } -} - -type msgAllTypes struct { - Bool bool `sshtype:"21"` - Array [16]byte - Uint64 uint64 - Uint32 uint32 - Uint8 uint8 - String string - Strings []string - Bytes []byte - Int *big.Int - Rest []byte `ssh:"rest"` -} - -func (t *msgAllTypes) Generate(rand *rand.Rand, size int) reflect.Value { - m := &msgAllTypes{} - m.Bool = rand.Intn(2) == 1 - randomBytes(m.Array[:], rand) - m.Uint64 = uint64(rand.Int63n(1<<63 - 1)) - m.Uint32 = uint32(rand.Intn((1 << 31) - 1)) - m.Uint8 = uint8(rand.Intn(1 << 8)) - m.String = string(m.Array[:]) - m.Strings = randomNameList(rand) - m.Bytes = m.Array[:] - m.Int = randomInt(rand) - m.Rest = m.Array[:] - return reflect.ValueOf(m) -} - -func TestMarshalUnmarshal(t *testing.T) { - rand := rand.New(rand.NewSource(0)) - iface := &msgAllTypes{} - ty := reflect.ValueOf(iface).Type() - - n := 100 - if testing.Short() { - n = 5 - } - for j := 0; j < n; j++ { - v, ok := quick.Value(ty, rand) - if !ok { - t.Errorf("failed to create value") - break - } - - m1 := v.Elem().Interface() - m2 := iface - - marshaled := Marshal(m1) - if err := Unmarshal(marshaled, m2); err != nil { - t.Errorf("Unmarshal %#v: %s", m1, err) - break - } - - if !reflect.DeepEqual(v.Interface(), m2) { - t.Errorf("got: %#v\nwant:%#v\n%x", m2, m1, marshaled) - break - } - } -} - -func TestUnmarshalEmptyPacket(t *testing.T) { - var b []byte - var m channelRequestSuccessMsg - if err := Unmarshal(b, &m); err == nil { - t.Fatalf("unmarshal of empty slice succeeded") - } -} - -func TestUnmarshalUnexpectedPacket(t *testing.T) { - type S struct { - I uint32 `sshtype:"43"` - S string - B bool - } - - s := S{11, "hello", true} - packet := Marshal(s) - packet[0] = 42 - roundtrip := S{} - err := Unmarshal(packet, &roundtrip) - if err == nil { - t.Fatal("expected error, not nil") - } -} - -func TestMarshalPtr(t *testing.T) { - s := struct { - S string - }{"hello"} - - m1 := Marshal(s) - m2 := Marshal(&s) - if !bytes.Equal(m1, m2) { - t.Errorf("got %q, want %q for marshaled pointer", m2, m1) - } -} - -func TestBareMarshalUnmarshal(t *testing.T) { - type S struct { - I uint32 - S string - B bool - } - - s := S{42, "hello", true} - packet := Marshal(s) - roundtrip := S{} - Unmarshal(packet, &roundtrip) - - if !reflect.DeepEqual(s, roundtrip) { - t.Errorf("got %#v, want %#v", roundtrip, s) - } -} - -func TestBareMarshal(t *testing.T) { - type S2 struct { - I uint32 - } - s := S2{42} - packet := Marshal(s) - i, rest, ok := parseUint32(packet) - if len(rest) > 0 || !ok { - t.Errorf("parseInt(%q): parse error", packet) - } - if i != s.I { - t.Errorf("got %d, want %d", i, s.I) - } -} - -func TestUnmarshalShortKexInitPacket(t *testing.T) { - // This used to panic. - // Issue 11348 - packet := []byte{0x14, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xff, 0xff, 0xff, 0xff} - kim := &kexInitMsg{} - if err := Unmarshal(packet, kim); err == nil { - t.Error("truncated packet unmarshaled without error") - } -} - -func TestMarshalMultiTag(t *testing.T) { - var res struct { - A uint32 `sshtype:"1|2"` - } - - good1 := struct { - A uint32 `sshtype:"1"` - }{ - 1, - } - good2 := struct { - A uint32 `sshtype:"2"` - }{ - 1, - } - - if e := Unmarshal(Marshal(good1), &res); e != nil { - t.Errorf("error unmarshaling multipart tag: %v", e) - } - - if e := Unmarshal(Marshal(good2), &res); e != nil { - t.Errorf("error unmarshaling multipart tag: %v", e) - } - - bad1 := struct { - A uint32 `sshtype:"3"` - }{ - 1, - } - if e := Unmarshal(Marshal(bad1), &res); e == nil { - t.Errorf("bad struct unmarshaled without error") - } -} - -func randomBytes(out []byte, rand *rand.Rand) { - for i := 0; i < len(out); i++ { - out[i] = byte(rand.Int31()) - } -} - -func randomNameList(rand *rand.Rand) []string { - ret := make([]string, rand.Int31()&15) - for i := range ret { - s := make([]byte, 1+(rand.Int31()&15)) - for j := range s { - s[j] = 'a' + uint8(rand.Int31()&15) - } - ret[i] = string(s) - } - return ret -} - -func randomInt(rand *rand.Rand) *big.Int { - return new(big.Int).SetInt64(int64(int32(rand.Uint32()))) -} - -func (*kexInitMsg) Generate(rand *rand.Rand, size int) reflect.Value { - ki := &kexInitMsg{} - randomBytes(ki.Cookie[:], rand) - ki.KexAlgos = randomNameList(rand) - ki.ServerHostKeyAlgos = randomNameList(rand) - ki.CiphersClientServer = randomNameList(rand) - ki.CiphersServerClient = randomNameList(rand) - ki.MACsClientServer = randomNameList(rand) - ki.MACsServerClient = randomNameList(rand) - ki.CompressionClientServer = randomNameList(rand) - ki.CompressionServerClient = randomNameList(rand) - ki.LanguagesClientServer = randomNameList(rand) - ki.LanguagesServerClient = randomNameList(rand) - if rand.Int31()&1 == 1 { - ki.FirstKexFollows = true - } - return reflect.ValueOf(ki) -} - -func (*kexDHInitMsg) Generate(rand *rand.Rand, size int) reflect.Value { - dhi := &kexDHInitMsg{} - dhi.X = randomInt(rand) - return reflect.ValueOf(dhi) -} - -var ( - _kexInitMsg = new(kexInitMsg).Generate(rand.New(rand.NewSource(0)), 10).Elem().Interface() - _kexDHInitMsg = new(kexDHInitMsg).Generate(rand.New(rand.NewSource(0)), 10).Elem().Interface() - - _kexInit = Marshal(_kexInitMsg) - _kexDHInit = Marshal(_kexDHInitMsg) -) - -func BenchmarkMarshalKexInitMsg(b *testing.B) { - for i := 0; i < b.N; i++ { - Marshal(_kexInitMsg) - } -} - -func BenchmarkUnmarshalKexInitMsg(b *testing.B) { - m := new(kexInitMsg) - for i := 0; i < b.N; i++ { - Unmarshal(_kexInit, m) - } -} - -func BenchmarkMarshalKexDHInitMsg(b *testing.B) { - for i := 0; i < b.N; i++ { - Marshal(_kexDHInitMsg) - } -} - -func BenchmarkUnmarshalKexDHInitMsg(b *testing.B) { - m := new(kexDHInitMsg) - for i := 0; i < b.N; i++ { - Unmarshal(_kexDHInit, m) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/mux.go b/vendor/golang.org/x/crypto/ssh/mux.go deleted file mode 100644 index f1901627..00000000 --- a/vendor/golang.org/x/crypto/ssh/mux.go +++ /dev/null @@ -1,330 +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 ssh - -import ( - "encoding/binary" - "fmt" - "io" - "log" - "sync" - "sync/atomic" -) - -// debugMux, if set, causes messages in the connection protocol to be -// logged. -const debugMux = false - -// chanList is a thread safe channel list. -type chanList struct { - // protects concurrent access to chans - sync.Mutex - - // chans are indexed by the local id of the channel, which the - // other side should send in the PeersId field. - chans []*channel - - // This is a debugging aid: it offsets all IDs by this - // amount. This helps distinguish otherwise identical - // server/client muxes - offset uint32 -} - -// Assigns a channel ID to the given channel. -func (c *chanList) add(ch *channel) uint32 { - c.Lock() - defer c.Unlock() - for i := range c.chans { - if c.chans[i] == nil { - c.chans[i] = ch - return uint32(i) + c.offset - } - } - c.chans = append(c.chans, ch) - return uint32(len(c.chans)-1) + c.offset -} - -// getChan returns the channel for the given ID. -func (c *chanList) getChan(id uint32) *channel { - id -= c.offset - - c.Lock() - defer c.Unlock() - if id < uint32(len(c.chans)) { - return c.chans[id] - } - return nil -} - -func (c *chanList) remove(id uint32) { - id -= c.offset - c.Lock() - if id < uint32(len(c.chans)) { - c.chans[id] = nil - } - c.Unlock() -} - -// dropAll forgets all channels it knows, returning them in a slice. -func (c *chanList) dropAll() []*channel { - c.Lock() - defer c.Unlock() - var r []*channel - - for _, ch := range c.chans { - if ch == nil { - continue - } - r = append(r, ch) - } - c.chans = nil - return r -} - -// mux represents the state for the SSH connection protocol, which -// multiplexes many channels onto a single packet transport. -type mux struct { - conn packetConn - chanList chanList - - incomingChannels chan NewChannel - - globalSentMu sync.Mutex - globalResponses chan interface{} - incomingRequests chan *Request - - errCond *sync.Cond - err error -} - -// When debugging, each new chanList instantiation has a different -// offset. -var globalOff uint32 - -func (m *mux) Wait() error { - m.errCond.L.Lock() - defer m.errCond.L.Unlock() - for m.err == nil { - m.errCond.Wait() - } - return m.err -} - -// newMux returns a mux that runs over the given connection. -func newMux(p packetConn) *mux { - m := &mux{ - conn: p, - incomingChannels: make(chan NewChannel, chanSize), - globalResponses: make(chan interface{}, 1), - incomingRequests: make(chan *Request, chanSize), - errCond: newCond(), - } - if debugMux { - m.chanList.offset = atomic.AddUint32(&globalOff, 1) - } - - go m.loop() - return m -} - -func (m *mux) sendMessage(msg interface{}) error { - p := Marshal(msg) - if debugMux { - log.Printf("send global(%d): %#v", m.chanList.offset, msg) - } - return m.conn.writePacket(p) -} - -func (m *mux) SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) { - if wantReply { - m.globalSentMu.Lock() - defer m.globalSentMu.Unlock() - } - - if err := m.sendMessage(globalRequestMsg{ - Type: name, - WantReply: wantReply, - Data: payload, - }); err != nil { - return false, nil, err - } - - if !wantReply { - return false, nil, nil - } - - msg, ok := <-m.globalResponses - if !ok { - return false, nil, io.EOF - } - switch msg := msg.(type) { - case *globalRequestFailureMsg: - return false, msg.Data, nil - case *globalRequestSuccessMsg: - return true, msg.Data, nil - default: - return false, nil, fmt.Errorf("ssh: unexpected response to request: %#v", msg) - } -} - -// ackRequest must be called after processing a global request that -// has WantReply set. -func (m *mux) ackRequest(ok bool, data []byte) error { - if ok { - return m.sendMessage(globalRequestSuccessMsg{Data: data}) - } - return m.sendMessage(globalRequestFailureMsg{Data: data}) -} - -func (m *mux) Close() error { - return m.conn.Close() -} - -// loop runs the connection machine. It will process packets until an -// error is encountered. To synchronize on loop exit, use mux.Wait. -func (m *mux) loop() { - var err error - for err == nil { - err = m.onePacket() - } - - for _, ch := range m.chanList.dropAll() { - ch.close() - } - - close(m.incomingChannels) - close(m.incomingRequests) - close(m.globalResponses) - - m.conn.Close() - - m.errCond.L.Lock() - m.err = err - m.errCond.Broadcast() - m.errCond.L.Unlock() - - if debugMux { - log.Println("loop exit", err) - } -} - -// onePacket reads and processes one packet. -func (m *mux) onePacket() error { - packet, err := m.conn.readPacket() - if err != nil { - return err - } - - if debugMux { - if packet[0] == msgChannelData || packet[0] == msgChannelExtendedData { - log.Printf("decoding(%d): data packet - %d bytes", m.chanList.offset, len(packet)) - } else { - p, _ := decode(packet) - log.Printf("decoding(%d): %d %#v - %d bytes", m.chanList.offset, packet[0], p, len(packet)) - } - } - - switch packet[0] { - case msgChannelOpen: - return m.handleChannelOpen(packet) - case msgGlobalRequest, msgRequestSuccess, msgRequestFailure: - return m.handleGlobalPacket(packet) - } - - // assume a channel packet. - if len(packet) < 5 { - return parseError(packet[0]) - } - id := binary.BigEndian.Uint32(packet[1:]) - ch := m.chanList.getChan(id) - if ch == nil { - return fmt.Errorf("ssh: invalid channel %d", id) - } - - return ch.handlePacket(packet) -} - -func (m *mux) handleGlobalPacket(packet []byte) error { - msg, err := decode(packet) - if err != nil { - return err - } - - switch msg := msg.(type) { - case *globalRequestMsg: - m.incomingRequests <- &Request{ - Type: msg.Type, - WantReply: msg.WantReply, - Payload: msg.Data, - mux: m, - } - case *globalRequestSuccessMsg, *globalRequestFailureMsg: - m.globalResponses <- msg - default: - panic(fmt.Sprintf("not a global message %#v", msg)) - } - - return nil -} - -// handleChannelOpen schedules a channel to be Accept()ed. -func (m *mux) handleChannelOpen(packet []byte) error { - var msg channelOpenMsg - if err := Unmarshal(packet, &msg); err != nil { - return err - } - - if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { - failMsg := channelOpenFailureMsg{ - PeersID: msg.PeersID, - Reason: ConnectionFailed, - Message: "invalid request", - Language: "en_US.UTF-8", - } - return m.sendMessage(failMsg) - } - - c := m.newChannel(msg.ChanType, channelInbound, msg.TypeSpecificData) - c.remoteId = msg.PeersID - c.maxRemotePayload = msg.MaxPacketSize - c.remoteWin.add(msg.PeersWindow) - m.incomingChannels <- c - return nil -} - -func (m *mux) OpenChannel(chanType string, extra []byte) (Channel, <-chan *Request, error) { - ch, err := m.openChannel(chanType, extra) - if err != nil { - return nil, nil, err - } - - return ch, ch.incomingRequests, nil -} - -func (m *mux) openChannel(chanType string, extra []byte) (*channel, error) { - ch := m.newChannel(chanType, channelOutbound, extra) - - ch.maxIncomingPayload = channelMaxPacket - - open := channelOpenMsg{ - ChanType: chanType, - PeersWindow: ch.myWindow, - MaxPacketSize: ch.maxIncomingPayload, - TypeSpecificData: extra, - PeersID: ch.localId, - } - if err := m.sendMessage(open); err != nil { - return nil, err - } - - switch msg := (<-ch.msg).(type) { - case *channelOpenConfirmMsg: - return ch, nil - case *channelOpenFailureMsg: - return nil, &OpenChannelError{msg.Reason, msg.Message} - default: - return nil, fmt.Errorf("ssh: unexpected packet in response to channel open: %T", msg) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/mux_test.go b/vendor/golang.org/x/crypto/ssh/mux_test.go deleted file mode 100644 index 25d2181d..00000000 --- a/vendor/golang.org/x/crypto/ssh/mux_test.go +++ /dev/null @@ -1,505 +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 ssh - -import ( - "io" - "io/ioutil" - "sync" - "testing" -) - -func muxPair() (*mux, *mux) { - a, b := memPipe() - - s := newMux(a) - c := newMux(b) - - return s, c -} - -// Returns both ends of a channel, and the mux for the the 2nd -// channel. -func channelPair(t *testing.T) (*channel, *channel, *mux) { - c, s := muxPair() - - res := make(chan *channel, 1) - go func() { - newCh, ok := <-s.incomingChannels - if !ok { - t.Fatalf("No incoming channel") - } - if newCh.ChannelType() != "chan" { - t.Fatalf("got type %q want chan", newCh.ChannelType()) - } - ch, _, err := newCh.Accept() - if err != nil { - t.Fatalf("Accept %v", err) - } - res <- ch.(*channel) - }() - - ch, err := c.openChannel("chan", nil) - if err != nil { - t.Fatalf("OpenChannel: %v", err) - } - - return <-res, ch, c -} - -// Test that stderr and stdout can be addressed from different -// goroutines. This is intended for use with the race detector. -func TestMuxChannelExtendedThreadSafety(t *testing.T) { - writer, reader, mux := channelPair(t) - defer writer.Close() - defer reader.Close() - defer mux.Close() - - var wr, rd sync.WaitGroup - magic := "hello world" - - wr.Add(2) - go func() { - io.WriteString(writer, magic) - wr.Done() - }() - go func() { - io.WriteString(writer.Stderr(), magic) - wr.Done() - }() - - rd.Add(2) - go func() { - c, err := ioutil.ReadAll(reader) - if string(c) != magic { - t.Fatalf("stdout read got %q, want %q (error %s)", c, magic, err) - } - rd.Done() - }() - go func() { - c, err := ioutil.ReadAll(reader.Stderr()) - if string(c) != magic { - t.Fatalf("stderr read got %q, want %q (error %s)", c, magic, err) - } - rd.Done() - }() - - wr.Wait() - writer.CloseWrite() - rd.Wait() -} - -func TestMuxReadWrite(t *testing.T) { - s, c, mux := channelPair(t) - defer s.Close() - defer c.Close() - defer mux.Close() - - magic := "hello world" - magicExt := "hello stderr" - go func() { - _, err := s.Write([]byte(magic)) - if err != nil { - t.Fatalf("Write: %v", err) - } - _, err = s.Extended(1).Write([]byte(magicExt)) - if err != nil { - t.Fatalf("Write: %v", err) - } - err = s.Close() - if err != nil { - t.Fatalf("Close: %v", err) - } - }() - - var buf [1024]byte - n, err := c.Read(buf[:]) - if err != nil { - t.Fatalf("server Read: %v", err) - } - got := string(buf[:n]) - if got != magic { - t.Fatalf("server: got %q want %q", got, magic) - } - - n, err = c.Extended(1).Read(buf[:]) - if err != nil { - t.Fatalf("server Read: %v", err) - } - - got = string(buf[:n]) - if got != magicExt { - t.Fatalf("server: got %q want %q", got, magic) - } -} - -func TestMuxChannelOverflow(t *testing.T) { - reader, writer, mux := channelPair(t) - defer reader.Close() - defer writer.Close() - defer mux.Close() - - wDone := make(chan int, 1) - go func() { - if _, err := writer.Write(make([]byte, channelWindowSize)); err != nil { - t.Errorf("could not fill window: %v", err) - } - writer.Write(make([]byte, 1)) - wDone <- 1 - }() - writer.remoteWin.waitWriterBlocked() - - // Send 1 byte. - packet := make([]byte, 1+4+4+1) - packet[0] = msgChannelData - marshalUint32(packet[1:], writer.remoteId) - marshalUint32(packet[5:], uint32(1)) - packet[9] = 42 - - if err := writer.mux.conn.writePacket(packet); err != nil { - t.Errorf("could not send packet") - } - if _, err := reader.SendRequest("hello", true, nil); err == nil { - t.Errorf("SendRequest succeeded.") - } - <-wDone -} - -func TestMuxChannelCloseWriteUnblock(t *testing.T) { - reader, writer, mux := channelPair(t) - defer reader.Close() - defer writer.Close() - defer mux.Close() - - wDone := make(chan int, 1) - go func() { - if _, err := writer.Write(make([]byte, channelWindowSize)); err != nil { - t.Errorf("could not fill window: %v", err) - } - if _, err := writer.Write(make([]byte, 1)); err != io.EOF { - t.Errorf("got %v, want EOF for unblock write", err) - } - wDone <- 1 - }() - - writer.remoteWin.waitWriterBlocked() - reader.Close() - <-wDone -} - -func TestMuxConnectionCloseWriteUnblock(t *testing.T) { - reader, writer, mux := channelPair(t) - defer reader.Close() - defer writer.Close() - defer mux.Close() - - wDone := make(chan int, 1) - go func() { - if _, err := writer.Write(make([]byte, channelWindowSize)); err != nil { - t.Errorf("could not fill window: %v", err) - } - if _, err := writer.Write(make([]byte, 1)); err != io.EOF { - t.Errorf("got %v, want EOF for unblock write", err) - } - wDone <- 1 - }() - - writer.remoteWin.waitWriterBlocked() - mux.Close() - <-wDone -} - -func TestMuxReject(t *testing.T) { - client, server := muxPair() - defer server.Close() - defer client.Close() - - go func() { - ch, ok := <-server.incomingChannels - if !ok { - t.Fatalf("Accept") - } - if ch.ChannelType() != "ch" || string(ch.ExtraData()) != "extra" { - t.Fatalf("unexpected channel: %q, %q", ch.ChannelType(), ch.ExtraData()) - } - ch.Reject(RejectionReason(42), "message") - }() - - ch, err := client.openChannel("ch", []byte("extra")) - if ch != nil { - t.Fatal("openChannel not rejected") - } - - ocf, ok := err.(*OpenChannelError) - if !ok { - t.Errorf("got %#v want *OpenChannelError", err) - } else if ocf.Reason != 42 || ocf.Message != "message" { - t.Errorf("got %#v, want {Reason: 42, Message: %q}", ocf, "message") - } - - want := "ssh: rejected: unknown reason 42 (message)" - if err.Error() != want { - t.Errorf("got %q, want %q", err.Error(), want) - } -} - -func TestMuxChannelRequest(t *testing.T) { - client, server, mux := channelPair(t) - defer server.Close() - defer client.Close() - defer mux.Close() - - var received int - var wg sync.WaitGroup - wg.Add(1) - go func() { - for r := range server.incomingRequests { - received++ - r.Reply(r.Type == "yes", nil) - } - wg.Done() - }() - _, err := client.SendRequest("yes", false, nil) - if err != nil { - t.Fatalf("SendRequest: %v", err) - } - ok, err := client.SendRequest("yes", true, nil) - if err != nil { - t.Fatalf("SendRequest: %v", err) - } - - if !ok { - t.Errorf("SendRequest(yes): %v", ok) - - } - - ok, err = client.SendRequest("no", true, nil) - if err != nil { - t.Fatalf("SendRequest: %v", err) - } - if ok { - t.Errorf("SendRequest(no): %v", ok) - - } - - client.Close() - wg.Wait() - - if received != 3 { - t.Errorf("got %d requests, want %d", received, 3) - } -} - -func TestMuxGlobalRequest(t *testing.T) { - clientMux, serverMux := muxPair() - defer serverMux.Close() - defer clientMux.Close() - - var seen bool - go func() { - for r := range serverMux.incomingRequests { - seen = seen || r.Type == "peek" - if r.WantReply { - err := r.Reply(r.Type == "yes", - append([]byte(r.Type), r.Payload...)) - if err != nil { - t.Errorf("AckRequest: %v", err) - } - } - } - }() - - _, _, err := clientMux.SendRequest("peek", false, nil) - if err != nil { - t.Errorf("SendRequest: %v", err) - } - - ok, data, err := clientMux.SendRequest("yes", true, []byte("a")) - if !ok || string(data) != "yesa" || err != nil { - t.Errorf("SendRequest(\"yes\", true, \"a\"): %v %v %v", - ok, data, err) - } - if ok, data, err := clientMux.SendRequest("yes", true, []byte("a")); !ok || string(data) != "yesa" || err != nil { - t.Errorf("SendRequest(\"yes\", true, \"a\"): %v %v %v", - ok, data, err) - } - - if ok, data, err := clientMux.SendRequest("no", true, []byte("a")); ok || string(data) != "noa" || err != nil { - t.Errorf("SendRequest(\"no\", true, \"a\"): %v %v %v", - ok, data, err) - } - - if !seen { - t.Errorf("never saw 'peek' request") - } -} - -func TestMuxGlobalRequestUnblock(t *testing.T) { - clientMux, serverMux := muxPair() - defer serverMux.Close() - defer clientMux.Close() - - result := make(chan error, 1) - go func() { - _, _, err := clientMux.SendRequest("hello", true, nil) - result <- err - }() - - <-serverMux.incomingRequests - serverMux.conn.Close() - err := <-result - - if err != io.EOF { - t.Errorf("want EOF, got %v", io.EOF) - } -} - -func TestMuxChannelRequestUnblock(t *testing.T) { - a, b, connB := channelPair(t) - defer a.Close() - defer b.Close() - defer connB.Close() - - result := make(chan error, 1) - go func() { - _, err := a.SendRequest("hello", true, nil) - result <- err - }() - - <-b.incomingRequests - connB.conn.Close() - err := <-result - - if err != io.EOF { - t.Errorf("want EOF, got %v", err) - } -} - -func TestMuxCloseChannel(t *testing.T) { - r, w, mux := channelPair(t) - defer mux.Close() - defer r.Close() - defer w.Close() - - result := make(chan error, 1) - go func() { - var b [1024]byte - _, err := r.Read(b[:]) - result <- err - }() - if err := w.Close(); err != nil { - t.Errorf("w.Close: %v", err) - } - - if _, err := w.Write([]byte("hello")); err != io.EOF { - t.Errorf("got err %v, want io.EOF after Close", err) - } - - if err := <-result; err != io.EOF { - t.Errorf("got %v (%T), want io.EOF", err, err) - } -} - -func TestMuxCloseWriteChannel(t *testing.T) { - r, w, mux := channelPair(t) - defer mux.Close() - - result := make(chan error, 1) - go func() { - var b [1024]byte - _, err := r.Read(b[:]) - result <- err - }() - if err := w.CloseWrite(); err != nil { - t.Errorf("w.CloseWrite: %v", err) - } - - if _, err := w.Write([]byte("hello")); err != io.EOF { - t.Errorf("got err %v, want io.EOF after CloseWrite", err) - } - - if err := <-result; err != io.EOF { - t.Errorf("got %v (%T), want io.EOF", err, err) - } -} - -func TestMuxInvalidRecord(t *testing.T) { - a, b := muxPair() - defer a.Close() - defer b.Close() - - packet := make([]byte, 1+4+4+1) - packet[0] = msgChannelData - marshalUint32(packet[1:], 29348723 /* invalid channel id */) - marshalUint32(packet[5:], 1) - packet[9] = 42 - - a.conn.writePacket(packet) - go a.SendRequest("hello", false, nil) - // 'a' wrote an invalid packet, so 'b' has exited. - req, ok := <-b.incomingRequests - if ok { - t.Errorf("got request %#v after receiving invalid packet", req) - } -} - -func TestZeroWindowAdjust(t *testing.T) { - a, b, mux := channelPair(t) - defer a.Close() - defer b.Close() - defer mux.Close() - - go func() { - io.WriteString(a, "hello") - // bogus adjust. - a.sendMessage(windowAdjustMsg{}) - io.WriteString(a, "world") - a.Close() - }() - - want := "helloworld" - c, _ := ioutil.ReadAll(b) - if string(c) != want { - t.Errorf("got %q want %q", c, want) - } -} - -func TestMuxMaxPacketSize(t *testing.T) { - a, b, mux := channelPair(t) - defer a.Close() - defer b.Close() - defer mux.Close() - - large := make([]byte, a.maxRemotePayload+1) - packet := make([]byte, 1+4+4+1+len(large)) - packet[0] = msgChannelData - marshalUint32(packet[1:], a.remoteId) - marshalUint32(packet[5:], uint32(len(large))) - packet[9] = 42 - - if err := a.mux.conn.writePacket(packet); err != nil { - t.Errorf("could not send packet") - } - - go a.SendRequest("hello", false, nil) - - _, ok := <-b.incomingRequests - if ok { - t.Errorf("connection still alive after receiving large packet.") - } -} - -// Don't ship code with debug=true. -func TestDebug(t *testing.T) { - if debugMux { - t.Error("mux debug switched on") - } - if debugHandshake { - t.Error("handshake debug switched on") - } - if debugTransport { - t.Error("transport debug switched on") - } -} diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go deleted file mode 100644 index d0f48253..00000000 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ /dev/null @@ -1,593 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bytes" - "errors" - "fmt" - "io" - "net" - "strings" -) - -// The Permissions type holds fine-grained permissions that are -// specific to a user or a specific authentication method for a user. -// The Permissions value for a successful authentication attempt is -// available in ServerConn, so it can be used to pass information from -// the user-authentication phase to the application layer. -type Permissions struct { - // CriticalOptions indicate restrictions to the default - // permissions, and are typically used in conjunction with - // user certificates. The standard for SSH certificates - // defines "force-command" (only allow the given command to - // execute) and "source-address" (only allow connections from - // the given address). The SSH package currently only enforces - // the "source-address" critical option. It is up to server - // implementations to enforce other critical options, such as - // "force-command", by checking them after the SSH handshake - // is successful. In general, SSH servers should reject - // connections that specify critical options that are unknown - // or not supported. - CriticalOptions map[string]string - - // Extensions are extra functionality that the server may - // offer on authenticated connections. Lack of support for an - // extension does not preclude authenticating a user. Common - // extensions are "permit-agent-forwarding", - // "permit-X11-forwarding". The Go SSH library currently does - // not act on any extension, and it is up to server - // implementations to honor them. Extensions can be used to - // pass data from the authentication callbacks to the server - // application layer. - Extensions map[string]string -} - -// ServerConfig holds server specific configuration data. -type ServerConfig struct { - // Config contains configuration shared between client and server. - Config - - hostKeys []Signer - - // NoClientAuth is true if clients are allowed to connect without - // authenticating. - NoClientAuth bool - - // MaxAuthTries specifies the maximum number of authentication attempts - // permitted per connection. If set to a negative number, the number of - // attempts are unlimited. If set to zero, the number of attempts are limited - // to 6. - MaxAuthTries int - - // PasswordCallback, if non-nil, is called when a user - // attempts to authenticate using a password. - PasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error) - - // PublicKeyCallback, if non-nil, is called when a client - // offers a public key for authentication. It must return a nil error - // if the given public key can be used to authenticate the - // given user. For example, see CertChecker.Authenticate. A - // call to this function does not guarantee that the key - // offered is in fact used to authenticate. To record any data - // depending on the public key, store it inside a - // Permissions.Extensions entry. - PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) - - // KeyboardInteractiveCallback, if non-nil, is called when - // keyboard-interactive authentication is selected (RFC - // 4256). The client object's Challenge function should be - // used to query the user. The callback may offer multiple - // Challenge rounds. To avoid information leaks, the client - // should be presented a challenge even if the user is - // unknown. - KeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error) - - // AuthLogCallback, if non-nil, is called to log all authentication - // attempts. - AuthLogCallback func(conn ConnMetadata, method string, err error) - - // ServerVersion is the version identification string to announce in - // the public handshake. - // If empty, a reasonable default is used. - // Note that RFC 4253 section 4.2 requires that this string start with - // "SSH-2.0-". - ServerVersion string - - // BannerCallback, if present, is called and the return string is sent to - // the client after key exchange completed but before authentication. - BannerCallback func(conn ConnMetadata) string -} - -// AddHostKey adds a private key as a host key. If an existing host -// key exists with the same algorithm, it is overwritten. Each server -// config must have at least one host key. -func (s *ServerConfig) AddHostKey(key Signer) { - for i, k := range s.hostKeys { - if k.PublicKey().Type() == key.PublicKey().Type() { - s.hostKeys[i] = key - return - } - } - - s.hostKeys = append(s.hostKeys, key) -} - -// cachedPubKey contains the results of querying whether a public key is -// acceptable for a user. -type cachedPubKey struct { - user string - pubKeyData []byte - result error - perms *Permissions -} - -const maxCachedPubKeys = 16 - -// pubKeyCache caches tests for public keys. Since SSH clients -// will query whether a public key is acceptable before attempting to -// authenticate with it, we end up with duplicate queries for public -// key validity. The cache only applies to a single ServerConn. -type pubKeyCache struct { - keys []cachedPubKey -} - -// get returns the result for a given user/algo/key tuple. -func (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) { - for _, k := range c.keys { - if k.user == user && bytes.Equal(k.pubKeyData, pubKeyData) { - return k, true - } - } - return cachedPubKey{}, false -} - -// add adds the given tuple to the cache. -func (c *pubKeyCache) add(candidate cachedPubKey) { - if len(c.keys) < maxCachedPubKeys { - c.keys = append(c.keys, candidate) - } -} - -// ServerConn is an authenticated SSH connection, as seen from the -// server -type ServerConn struct { - Conn - - // If the succeeding authentication callback returned a - // non-nil Permissions pointer, it is stored here. - Permissions *Permissions -} - -// NewServerConn starts a new SSH server with c as the underlying -// transport. It starts with a handshake and, if the handshake is -// unsuccessful, it closes the connection and returns an error. The -// Request and NewChannel channels must be serviced, or the connection -// will hang. -// -// The returned error may be of type *ServerAuthError for -// authentication errors. -func NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewChannel, <-chan *Request, error) { - fullConf := *config - fullConf.SetDefaults() - if fullConf.MaxAuthTries == 0 { - fullConf.MaxAuthTries = 6 - } - - s := &connection{ - sshConn: sshConn{conn: c}, - } - perms, err := s.serverHandshake(&fullConf) - if err != nil { - c.Close() - return nil, nil, nil, err - } - return &ServerConn{s, perms}, s.mux.incomingChannels, s.mux.incomingRequests, nil -} - -// signAndMarshal signs the data with the appropriate algorithm, -// and serializes the result in SSH wire format. -func signAndMarshal(k Signer, rand io.Reader, data []byte) ([]byte, error) { - sig, err := k.Sign(rand, data) - if err != nil { - return nil, err - } - - return Marshal(sig), nil -} - -// handshake performs key exchange and user authentication. -func (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error) { - if len(config.hostKeys) == 0 { - return nil, errors.New("ssh: server has no host keys") - } - - if !config.NoClientAuth && config.PasswordCallback == nil && config.PublicKeyCallback == nil && config.KeyboardInteractiveCallback == nil { - return nil, errors.New("ssh: no authentication methods configured but NoClientAuth is also false") - } - - if config.ServerVersion != "" { - s.serverVersion = []byte(config.ServerVersion) - } else { - s.serverVersion = []byte(packageVersion) - } - var err error - s.clientVersion, err = exchangeVersions(s.sshConn.conn, s.serverVersion) - if err != nil { - return nil, err - } - - tr := newTransport(s.sshConn.conn, config.Rand, false /* not client */) - s.transport = newServerTransport(tr, s.clientVersion, s.serverVersion, config) - - if err := s.transport.waitSession(); err != nil { - return nil, err - } - - // We just did the key change, so the session ID is established. - s.sessionID = s.transport.getSessionID() - - var packet []byte - if packet, err = s.transport.readPacket(); err != nil { - return nil, err - } - - var serviceRequest serviceRequestMsg - if err = Unmarshal(packet, &serviceRequest); err != nil { - return nil, err - } - if serviceRequest.Service != serviceUserAuth { - return nil, errors.New("ssh: requested service '" + serviceRequest.Service + "' before authenticating") - } - serviceAccept := serviceAcceptMsg{ - Service: serviceUserAuth, - } - if err := s.transport.writePacket(Marshal(&serviceAccept)); err != nil { - return nil, err - } - - perms, err := s.serverAuthenticate(config) - if err != nil { - return nil, err - } - s.mux = newMux(s.transport) - return perms, err -} - -func isAcceptableAlgo(algo string) bool { - switch algo { - case KeyAlgoRSA, KeyAlgoDSA, KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521, KeyAlgoED25519, - CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoED25519v01: - return true - } - return false -} - -func checkSourceAddress(addr net.Addr, sourceAddrs string) error { - if addr == nil { - return errors.New("ssh: no address known for client, but source-address match required") - } - - tcpAddr, ok := addr.(*net.TCPAddr) - if !ok { - return fmt.Errorf("ssh: remote address %v is not an TCP address when checking source-address match", addr) - } - - for _, sourceAddr := range strings.Split(sourceAddrs, ",") { - if allowedIP := net.ParseIP(sourceAddr); allowedIP != nil { - if allowedIP.Equal(tcpAddr.IP) { - return nil - } - } else { - _, ipNet, err := net.ParseCIDR(sourceAddr) - if err != nil { - return fmt.Errorf("ssh: error parsing source-address restriction %q: %v", sourceAddr, err) - } - - if ipNet.Contains(tcpAddr.IP) { - return nil - } - } - } - - return fmt.Errorf("ssh: remote address %v is not allowed because of source-address restriction", addr) -} - -// ServerAuthError represents server authentication errors and is -// sometimes returned by NewServerConn. It appends any authentication -// errors that may occur, and is returned if all of the authentication -// methods provided by the user failed to authenticate. -type ServerAuthError struct { - // Errors contains authentication errors returned by the authentication - // callback methods. The first entry is typically ErrNoAuth. - Errors []error -} - -func (l ServerAuthError) Error() string { - var errs []string - for _, err := range l.Errors { - errs = append(errs, err.Error()) - } - return "[" + strings.Join(errs, ", ") + "]" -} - -// ErrNoAuth is the error value returned if no -// authentication method has been passed yet. This happens as a normal -// part of the authentication loop, since the client first tries -// 'none' authentication to discover available methods. -// It is returned in ServerAuthError.Errors from NewServerConn. -var ErrNoAuth = errors.New("ssh: no auth passed yet") - -func (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, error) { - sessionID := s.transport.getSessionID() - var cache pubKeyCache - var perms *Permissions - - authFailures := 0 - var authErrs []error - var displayedBanner bool - -userAuthLoop: - for { - if authFailures >= config.MaxAuthTries && config.MaxAuthTries > 0 { - discMsg := &disconnectMsg{ - Reason: 2, - Message: "too many authentication failures", - } - - if err := s.transport.writePacket(Marshal(discMsg)); err != nil { - return nil, err - } - - return nil, discMsg - } - - var userAuthReq userAuthRequestMsg - if packet, err := s.transport.readPacket(); err != nil { - if err == io.EOF { - return nil, &ServerAuthError{Errors: authErrs} - } - return nil, err - } else if err = Unmarshal(packet, &userAuthReq); err != nil { - return nil, err - } - - if userAuthReq.Service != serviceSSH { - return nil, errors.New("ssh: client attempted to negotiate for unknown service: " + userAuthReq.Service) - } - - s.user = userAuthReq.User - - if !displayedBanner && config.BannerCallback != nil { - displayedBanner = true - msg := config.BannerCallback(s) - if msg != "" { - bannerMsg := &userAuthBannerMsg{ - Message: msg, - } - if err := s.transport.writePacket(Marshal(bannerMsg)); err != nil { - return nil, err - } - } - } - - perms = nil - authErr := ErrNoAuth - - switch userAuthReq.Method { - case "none": - if config.NoClientAuth { - authErr = nil - } - - // allow initial attempt of 'none' without penalty - if authFailures == 0 { - authFailures-- - } - case "password": - if config.PasswordCallback == nil { - authErr = errors.New("ssh: password auth not configured") - break - } - payload := userAuthReq.Payload - if len(payload) < 1 || payload[0] != 0 { - return nil, parseError(msgUserAuthRequest) - } - payload = payload[1:] - password, payload, ok := parseString(payload) - if !ok || len(payload) > 0 { - return nil, parseError(msgUserAuthRequest) - } - - perms, authErr = config.PasswordCallback(s, password) - case "keyboard-interactive": - if config.KeyboardInteractiveCallback == nil { - authErr = errors.New("ssh: keyboard-interactive auth not configubred") - break - } - - prompter := &sshClientKeyboardInteractive{s} - perms, authErr = config.KeyboardInteractiveCallback(s, prompter.Challenge) - case "publickey": - if config.PublicKeyCallback == nil { - authErr = errors.New("ssh: publickey auth not configured") - break - } - payload := userAuthReq.Payload - if len(payload) < 1 { - return nil, parseError(msgUserAuthRequest) - } - isQuery := payload[0] == 0 - payload = payload[1:] - algoBytes, payload, ok := parseString(payload) - if !ok { - return nil, parseError(msgUserAuthRequest) - } - algo := string(algoBytes) - if !isAcceptableAlgo(algo) { - authErr = fmt.Errorf("ssh: algorithm %q not accepted", algo) - break - } - - pubKeyData, payload, ok := parseString(payload) - if !ok { - return nil, parseError(msgUserAuthRequest) - } - - pubKey, err := ParsePublicKey(pubKeyData) - if err != nil { - return nil, err - } - - candidate, ok := cache.get(s.user, pubKeyData) - if !ok { - candidate.user = s.user - candidate.pubKeyData = pubKeyData - candidate.perms, candidate.result = config.PublicKeyCallback(s, pubKey) - if candidate.result == nil && candidate.perms != nil && candidate.perms.CriticalOptions != nil && candidate.perms.CriticalOptions[sourceAddressCriticalOption] != "" { - candidate.result = checkSourceAddress( - s.RemoteAddr(), - candidate.perms.CriticalOptions[sourceAddressCriticalOption]) - } - cache.add(candidate) - } - - if isQuery { - // The client can query if the given public key - // would be okay. - - if len(payload) > 0 { - return nil, parseError(msgUserAuthRequest) - } - - if candidate.result == nil { - okMsg := userAuthPubKeyOkMsg{ - Algo: algo, - PubKey: pubKeyData, - } - if err = s.transport.writePacket(Marshal(&okMsg)); err != nil { - return nil, err - } - continue userAuthLoop - } - authErr = candidate.result - } else { - sig, payload, ok := parseSignature(payload) - if !ok || len(payload) > 0 { - return nil, parseError(msgUserAuthRequest) - } - // Ensure the public key algo and signature algo - // are supported. Compare the private key - // algorithm name that corresponds to algo with - // sig.Format. This is usually the same, but - // for certs, the names differ. - if !isAcceptableAlgo(sig.Format) { - break - } - signedData := buildDataSignedForAuth(sessionID, userAuthReq, algoBytes, pubKeyData) - - if err := pubKey.Verify(signedData, sig); err != nil { - return nil, err - } - - authErr = candidate.result - perms = candidate.perms - } - default: - authErr = fmt.Errorf("ssh: unknown method %q", userAuthReq.Method) - } - - authErrs = append(authErrs, authErr) - - if config.AuthLogCallback != nil { - config.AuthLogCallback(s, userAuthReq.Method, authErr) - } - - if authErr == nil { - break userAuthLoop - } - - authFailures++ - - var failureMsg userAuthFailureMsg - if config.PasswordCallback != nil { - failureMsg.Methods = append(failureMsg.Methods, "password") - } - if config.PublicKeyCallback != nil { - failureMsg.Methods = append(failureMsg.Methods, "publickey") - } - if config.KeyboardInteractiveCallback != nil { - failureMsg.Methods = append(failureMsg.Methods, "keyboard-interactive") - } - - if len(failureMsg.Methods) == 0 { - return nil, errors.New("ssh: no authentication methods configured but NoClientAuth is also false") - } - - if err := s.transport.writePacket(Marshal(&failureMsg)); err != nil { - return nil, err - } - } - - if err := s.transport.writePacket([]byte{msgUserAuthSuccess}); err != nil { - return nil, err - } - return perms, nil -} - -// sshClientKeyboardInteractive implements a ClientKeyboardInteractive by -// asking the client on the other side of a ServerConn. -type sshClientKeyboardInteractive struct { - *connection -} - -func (c *sshClientKeyboardInteractive) Challenge(user, instruction string, questions []string, echos []bool) (answers []string, err error) { - if len(questions) != len(echos) { - return nil, errors.New("ssh: echos and questions must have equal length") - } - - var prompts []byte - for i := range questions { - prompts = appendString(prompts, questions[i]) - prompts = appendBool(prompts, echos[i]) - } - - if err := c.transport.writePacket(Marshal(&userAuthInfoRequestMsg{ - Instruction: instruction, - NumPrompts: uint32(len(questions)), - Prompts: prompts, - })); err != nil { - return nil, err - } - - packet, err := c.transport.readPacket() - if err != nil { - return nil, err - } - if packet[0] != msgUserAuthInfoResponse { - return nil, unexpectedMessageError(msgUserAuthInfoResponse, packet[0]) - } - packet = packet[1:] - - n, packet, ok := parseUint32(packet) - if !ok || int(n) != len(questions) { - return nil, parseError(msgUserAuthInfoResponse) - } - - for i := uint32(0); i < n; i++ { - ans, rest, ok := parseString(packet) - if !ok { - return nil, parseError(msgUserAuthInfoResponse) - } - - answers = append(answers, string(ans)) - packet = rest - } - if len(packet) != 0 { - return nil, errors.New("ssh: junk at end of message") - } - - return answers, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/session.go b/vendor/golang.org/x/crypto/ssh/session.go deleted file mode 100644 index d3321f6b..00000000 --- a/vendor/golang.org/x/crypto/ssh/session.go +++ /dev/null @@ -1,647 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -// Session implements an interactive session described in -// "RFC 4254, section 6". - -import ( - "bytes" - "encoding/binary" - "errors" - "fmt" - "io" - "io/ioutil" - "sync" -) - -type Signal string - -// POSIX signals as listed in RFC 4254 Section 6.10. -const ( - SIGABRT Signal = "ABRT" - SIGALRM Signal = "ALRM" - SIGFPE Signal = "FPE" - SIGHUP Signal = "HUP" - SIGILL Signal = "ILL" - SIGINT Signal = "INT" - SIGKILL Signal = "KILL" - SIGPIPE Signal = "PIPE" - SIGQUIT Signal = "QUIT" - SIGSEGV Signal = "SEGV" - SIGTERM Signal = "TERM" - SIGUSR1 Signal = "USR1" - SIGUSR2 Signal = "USR2" -) - -var signals = map[Signal]int{ - SIGABRT: 6, - SIGALRM: 14, - SIGFPE: 8, - SIGHUP: 1, - SIGILL: 4, - SIGINT: 2, - SIGKILL: 9, - SIGPIPE: 13, - SIGQUIT: 3, - SIGSEGV: 11, - SIGTERM: 15, -} - -type TerminalModes map[uint8]uint32 - -// POSIX terminal mode flags as listed in RFC 4254 Section 8. -const ( - tty_OP_END = 0 - VINTR = 1 - VQUIT = 2 - VERASE = 3 - VKILL = 4 - VEOF = 5 - VEOL = 6 - VEOL2 = 7 - VSTART = 8 - VSTOP = 9 - VSUSP = 10 - VDSUSP = 11 - VREPRINT = 12 - VWERASE = 13 - VLNEXT = 14 - VFLUSH = 15 - VSWTCH = 16 - VSTATUS = 17 - VDISCARD = 18 - IGNPAR = 30 - PARMRK = 31 - INPCK = 32 - ISTRIP = 33 - INLCR = 34 - IGNCR = 35 - ICRNL = 36 - IUCLC = 37 - IXON = 38 - IXANY = 39 - IXOFF = 40 - IMAXBEL = 41 - ISIG = 50 - ICANON = 51 - XCASE = 52 - ECHO = 53 - ECHOE = 54 - ECHOK = 55 - ECHONL = 56 - NOFLSH = 57 - TOSTOP = 58 - IEXTEN = 59 - ECHOCTL = 60 - ECHOKE = 61 - PENDIN = 62 - OPOST = 70 - OLCUC = 71 - ONLCR = 72 - OCRNL = 73 - ONOCR = 74 - ONLRET = 75 - CS7 = 90 - CS8 = 91 - PARENB = 92 - PARODD = 93 - TTY_OP_ISPEED = 128 - TTY_OP_OSPEED = 129 -) - -// A Session represents a connection to a remote command or shell. -type Session struct { - // Stdin specifies the remote process's standard input. - // If Stdin is nil, the remote process reads from an empty - // bytes.Buffer. - Stdin io.Reader - - // Stdout and Stderr specify the remote process's standard - // output and error. - // - // If either is nil, Run connects the corresponding file - // descriptor to an instance of ioutil.Discard. There is a - // fixed amount of buffering that is shared for the two streams. - // If either blocks it may eventually cause the remote - // command to block. - Stdout io.Writer - Stderr io.Writer - - ch Channel // the channel backing this session - started bool // true once Start, Run or Shell is invoked. - copyFuncs []func() error - errors chan error // one send per copyFunc - - // true if pipe method is active - stdinpipe, stdoutpipe, stderrpipe bool - - // stdinPipeWriter is non-nil if StdinPipe has not been called - // and Stdin was specified by the user; it is the write end of - // a pipe connecting Session.Stdin to the stdin channel. - stdinPipeWriter io.WriteCloser - - exitStatus chan error -} - -// SendRequest sends an out-of-band channel request on the SSH channel -// underlying the session. -func (s *Session) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { - return s.ch.SendRequest(name, wantReply, payload) -} - -func (s *Session) Close() error { - return s.ch.Close() -} - -// RFC 4254 Section 6.4. -type setenvRequest struct { - Name string - Value string -} - -// Setenv sets an environment variable that will be applied to any -// command executed by Shell or Run. -func (s *Session) Setenv(name, value string) error { - msg := setenvRequest{ - Name: name, - Value: value, - } - ok, err := s.ch.SendRequest("env", true, Marshal(&msg)) - if err == nil && !ok { - err = errors.New("ssh: setenv failed") - } - return err -} - -// RFC 4254 Section 6.2. -type ptyRequestMsg struct { - Term string - Columns uint32 - Rows uint32 - Width uint32 - Height uint32 - Modelist string -} - -// RequestPty requests the association of a pty with the session on the remote host. -func (s *Session) RequestPty(term string, h, w int, termmodes TerminalModes) error { - var tm []byte - for k, v := range termmodes { - kv := struct { - Key byte - Val uint32 - }{k, v} - - tm = append(tm, Marshal(&kv)...) - } - tm = append(tm, tty_OP_END) - req := ptyRequestMsg{ - Term: term, - Columns: uint32(w), - Rows: uint32(h), - Width: uint32(w * 8), - Height: uint32(h * 8), - Modelist: string(tm), - } - ok, err := s.ch.SendRequest("pty-req", true, Marshal(&req)) - if err == nil && !ok { - err = errors.New("ssh: pty-req failed") - } - return err -} - -// RFC 4254 Section 6.5. -type subsystemRequestMsg struct { - Subsystem string -} - -// RequestSubsystem requests the association of a subsystem with the session on the remote host. -// A subsystem is a predefined command that runs in the background when the ssh session is initiated -func (s *Session) RequestSubsystem(subsystem string) error { - msg := subsystemRequestMsg{ - Subsystem: subsystem, - } - ok, err := s.ch.SendRequest("subsystem", true, Marshal(&msg)) - if err == nil && !ok { - err = errors.New("ssh: subsystem request failed") - } - return err -} - -// RFC 4254 Section 6.7. -type ptyWindowChangeMsg struct { - Columns uint32 - Rows uint32 - Width uint32 - Height uint32 -} - -// WindowChange informs the remote host about a terminal window dimension change to h rows and w columns. -func (s *Session) WindowChange(h, w int) error { - req := ptyWindowChangeMsg{ - Columns: uint32(w), - Rows: uint32(h), - Width: uint32(w * 8), - Height: uint32(h * 8), - } - _, err := s.ch.SendRequest("window-change", false, Marshal(&req)) - return err -} - -// RFC 4254 Section 6.9. -type signalMsg struct { - Signal string -} - -// Signal sends the given signal to the remote process. -// sig is one of the SIG* constants. -func (s *Session) Signal(sig Signal) error { - msg := signalMsg{ - Signal: string(sig), - } - - _, err := s.ch.SendRequest("signal", false, Marshal(&msg)) - return err -} - -// RFC 4254 Section 6.5. -type execMsg struct { - Command string -} - -// Start runs cmd on the remote host. Typically, the remote -// server passes cmd to the shell for interpretation. -// A Session only accepts one call to Run, Start or Shell. -func (s *Session) Start(cmd string) error { - if s.started { - return errors.New("ssh: session already started") - } - req := execMsg{ - Command: cmd, - } - - ok, err := s.ch.SendRequest("exec", true, Marshal(&req)) - if err == nil && !ok { - err = fmt.Errorf("ssh: command %v failed", cmd) - } - if err != nil { - return err - } - return s.start() -} - -// Run runs cmd on the remote host. Typically, the remote -// server passes cmd to the shell for interpretation. -// A Session only accepts one call to Run, Start, Shell, Output, -// or CombinedOutput. -// -// The returned error is nil if the command runs, has no problems -// copying stdin, stdout, and stderr, and exits with a zero exit -// status. -// -// If the remote server does not send an exit status, an error of type -// *ExitMissingError is returned. If the command completes -// unsuccessfully or is interrupted by a signal, the error is of type -// *ExitError. Other error types may be returned for I/O problems. -func (s *Session) Run(cmd string) error { - err := s.Start(cmd) - if err != nil { - return err - } - return s.Wait() -} - -// Output runs cmd on the remote host and returns its standard output. -func (s *Session) Output(cmd string) ([]byte, error) { - if s.Stdout != nil { - return nil, errors.New("ssh: Stdout already set") - } - var b bytes.Buffer - s.Stdout = &b - err := s.Run(cmd) - return b.Bytes(), err -} - -type singleWriter struct { - b bytes.Buffer - mu sync.Mutex -} - -func (w *singleWriter) Write(p []byte) (int, error) { - w.mu.Lock() - defer w.mu.Unlock() - return w.b.Write(p) -} - -// CombinedOutput runs cmd on the remote host and returns its combined -// standard output and standard error. -func (s *Session) CombinedOutput(cmd string) ([]byte, error) { - if s.Stdout != nil { - return nil, errors.New("ssh: Stdout already set") - } - if s.Stderr != nil { - return nil, errors.New("ssh: Stderr already set") - } - var b singleWriter - s.Stdout = &b - s.Stderr = &b - err := s.Run(cmd) - return b.b.Bytes(), err -} - -// Shell starts a login shell on the remote host. A Session only -// accepts one call to Run, Start, Shell, Output, or CombinedOutput. -func (s *Session) Shell() error { - if s.started { - return errors.New("ssh: session already started") - } - - ok, err := s.ch.SendRequest("shell", true, nil) - if err == nil && !ok { - return errors.New("ssh: could not start shell") - } - if err != nil { - return err - } - return s.start() -} - -func (s *Session) start() error { - s.started = true - - type F func(*Session) - for _, setupFd := range []F{(*Session).stdin, (*Session).stdout, (*Session).stderr} { - setupFd(s) - } - - s.errors = make(chan error, len(s.copyFuncs)) - for _, fn := range s.copyFuncs { - go func(fn func() error) { - s.errors <- fn() - }(fn) - } - return nil -} - -// Wait waits for the remote command to exit. -// -// The returned error is nil if the command runs, has no problems -// copying stdin, stdout, and stderr, and exits with a zero exit -// status. -// -// If the remote server does not send an exit status, an error of type -// *ExitMissingError is returned. If the command completes -// unsuccessfully or is interrupted by a signal, the error is of type -// *ExitError. Other error types may be returned for I/O problems. -func (s *Session) Wait() error { - if !s.started { - return errors.New("ssh: session not started") - } - waitErr := <-s.exitStatus - - if s.stdinPipeWriter != nil { - s.stdinPipeWriter.Close() - } - var copyError error - for range s.copyFuncs { - if err := <-s.errors; err != nil && copyError == nil { - copyError = err - } - } - if waitErr != nil { - return waitErr - } - return copyError -} - -func (s *Session) wait(reqs <-chan *Request) error { - wm := Waitmsg{status: -1} - // Wait for msg channel to be closed before returning. - for msg := range reqs { - switch msg.Type { - case "exit-status": - wm.status = int(binary.BigEndian.Uint32(msg.Payload)) - case "exit-signal": - var sigval struct { - Signal string - CoreDumped bool - Error string - Lang string - } - if err := Unmarshal(msg.Payload, &sigval); err != nil { - return err - } - - // Must sanitize strings? - wm.signal = sigval.Signal - wm.msg = sigval.Error - wm.lang = sigval.Lang - default: - // This handles keepalives and matches - // OpenSSH's behaviour. - if msg.WantReply { - msg.Reply(false, nil) - } - } - } - if wm.status == 0 { - return nil - } - if wm.status == -1 { - // exit-status was never sent from server - if wm.signal == "" { - // signal was not sent either. RFC 4254 - // section 6.10 recommends against this - // behavior, but it is allowed, so we let - // clients handle it. - return &ExitMissingError{} - } - wm.status = 128 - if _, ok := signals[Signal(wm.signal)]; ok { - wm.status += signals[Signal(wm.signal)] - } - } - - return &ExitError{wm} -} - -// ExitMissingError is returned if a session is torn down cleanly, but -// the server sends no confirmation of the exit status. -type ExitMissingError struct{} - -func (e *ExitMissingError) Error() string { - return "wait: remote command exited without exit status or exit signal" -} - -func (s *Session) stdin() { - if s.stdinpipe { - return - } - var stdin io.Reader - if s.Stdin == nil { - stdin = new(bytes.Buffer) - } else { - r, w := io.Pipe() - go func() { - _, err := io.Copy(w, s.Stdin) - w.CloseWithError(err) - }() - stdin, s.stdinPipeWriter = r, w - } - s.copyFuncs = append(s.copyFuncs, func() error { - _, err := io.Copy(s.ch, stdin) - if err1 := s.ch.CloseWrite(); err == nil && err1 != io.EOF { - err = err1 - } - return err - }) -} - -func (s *Session) stdout() { - if s.stdoutpipe { - return - } - if s.Stdout == nil { - s.Stdout = ioutil.Discard - } - s.copyFuncs = append(s.copyFuncs, func() error { - _, err := io.Copy(s.Stdout, s.ch) - return err - }) -} - -func (s *Session) stderr() { - if s.stderrpipe { - return - } - if s.Stderr == nil { - s.Stderr = ioutil.Discard - } - s.copyFuncs = append(s.copyFuncs, func() error { - _, err := io.Copy(s.Stderr, s.ch.Stderr()) - return err - }) -} - -// sessionStdin reroutes Close to CloseWrite. -type sessionStdin struct { - io.Writer - ch Channel -} - -func (s *sessionStdin) Close() error { - return s.ch.CloseWrite() -} - -// StdinPipe returns a pipe that will be connected to the -// remote command's standard input when the command starts. -func (s *Session) StdinPipe() (io.WriteCloser, error) { - if s.Stdin != nil { - return nil, errors.New("ssh: Stdin already set") - } - if s.started { - return nil, errors.New("ssh: StdinPipe after process started") - } - s.stdinpipe = true - return &sessionStdin{s.ch, s.ch}, nil -} - -// StdoutPipe returns a pipe that will be connected to the -// remote command's standard output when the command starts. -// There is a fixed amount of buffering that is shared between -// stdout and stderr streams. If the StdoutPipe reader is -// not serviced fast enough it may eventually cause the -// remote command to block. -func (s *Session) StdoutPipe() (io.Reader, error) { - if s.Stdout != nil { - return nil, errors.New("ssh: Stdout already set") - } - if s.started { - return nil, errors.New("ssh: StdoutPipe after process started") - } - s.stdoutpipe = true - return s.ch, nil -} - -// StderrPipe returns a pipe that will be connected to the -// remote command's standard error when the command starts. -// There is a fixed amount of buffering that is shared between -// stdout and stderr streams. If the StderrPipe reader is -// not serviced fast enough it may eventually cause the -// remote command to block. -func (s *Session) StderrPipe() (io.Reader, error) { - if s.Stderr != nil { - return nil, errors.New("ssh: Stderr already set") - } - if s.started { - return nil, errors.New("ssh: StderrPipe after process started") - } - s.stderrpipe = true - return s.ch.Stderr(), nil -} - -// newSession returns a new interactive session on the remote host. -func newSession(ch Channel, reqs <-chan *Request) (*Session, error) { - s := &Session{ - ch: ch, - } - s.exitStatus = make(chan error, 1) - go func() { - s.exitStatus <- s.wait(reqs) - }() - - return s, nil -} - -// An ExitError reports unsuccessful completion of a remote command. -type ExitError struct { - Waitmsg -} - -func (e *ExitError) Error() string { - return e.Waitmsg.String() -} - -// Waitmsg stores the information about an exited remote command -// as reported by Wait. -type Waitmsg struct { - status int - signal string - msg string - lang string -} - -// ExitStatus returns the exit status of the remote command. -func (w Waitmsg) ExitStatus() int { - return w.status -} - -// Signal returns the exit signal of the remote command if -// it was terminated violently. -func (w Waitmsg) Signal() string { - return w.signal -} - -// Msg returns the exit message given by the remote command -func (w Waitmsg) Msg() string { - return w.msg -} - -// Lang returns the language tag. See RFC 3066 -func (w Waitmsg) Lang() string { - return w.lang -} - -func (w Waitmsg) String() string { - str := fmt.Sprintf("Process exited with status %v", w.status) - if w.signal != "" { - str += fmt.Sprintf(" from signal %v", w.signal) - } - if w.msg != "" { - str += fmt.Sprintf(". Reason was: %v", w.msg) - } - return str -} diff --git a/vendor/golang.org/x/crypto/ssh/session_test.go b/vendor/golang.org/x/crypto/ssh/session_test.go deleted file mode 100644 index 7dce6dd6..00000000 --- a/vendor/golang.org/x/crypto/ssh/session_test.go +++ /dev/null @@ -1,774 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -// Session tests. - -import ( - "bytes" - crypto_rand "crypto/rand" - "errors" - "io" - "io/ioutil" - "math/rand" - "net" - "testing" - - "golang.org/x/crypto/ssh/terminal" -) - -type serverType func(Channel, <-chan *Request, *testing.T) - -// dial constructs a new test server and returns a *ClientConn. -func dial(handler serverType, t *testing.T) *Client { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - - go func() { - defer c1.Close() - conf := ServerConfig{ - NoClientAuth: true, - } - conf.AddHostKey(testSigners["rsa"]) - - _, chans, reqs, err := NewServerConn(c1, &conf) - if err != nil { - t.Fatalf("Unable to handshake: %v", err) - } - go DiscardRequests(reqs) - - for newCh := range chans { - if newCh.ChannelType() != "session" { - newCh.Reject(UnknownChannelType, "unknown channel type") - continue - } - - ch, inReqs, err := newCh.Accept() - if err != nil { - t.Errorf("Accept: %v", err) - continue - } - go func() { - handler(ch, inReqs, t) - }() - } - }() - - config := &ClientConfig{ - User: "testuser", - HostKeyCallback: InsecureIgnoreHostKey(), - } - - conn, chans, reqs, err := NewClientConn(c2, "", config) - if err != nil { - t.Fatalf("unable to dial remote side: %v", err) - } - - return NewClient(conn, chans, reqs) -} - -// Test a simple string is returned to session.Stdout. -func TestSessionShell(t *testing.T) { - conn := dial(shellHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - stdout := new(bytes.Buffer) - session.Stdout = stdout - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %s", err) - } - if err := session.Wait(); err != nil { - t.Fatalf("Remote command did not exit cleanly: %v", err) - } - actual := stdout.String() - if actual != "golang" { - t.Fatalf("Remote shell did not return expected string: expected=golang, actual=%s", actual) - } -} - -// TODO(dfc) add support for Std{in,err}Pipe when the Server supports it. - -// Test a simple string is returned via StdoutPipe. -func TestSessionStdoutPipe(t *testing.T) { - conn := dial(shellHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - stdout, err := session.StdoutPipe() - if err != nil { - t.Fatalf("Unable to request StdoutPipe(): %v", err) - } - var buf bytes.Buffer - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %v", err) - } - done := make(chan bool, 1) - go func() { - if _, err := io.Copy(&buf, stdout); err != nil { - t.Errorf("Copy of stdout failed: %v", err) - } - done <- true - }() - if err := session.Wait(); err != nil { - t.Fatalf("Remote command did not exit cleanly: %v", err) - } - <-done - actual := buf.String() - if actual != "golang" { - t.Fatalf("Remote shell did not return expected string: expected=golang, actual=%s", actual) - } -} - -// Test that a simple string is returned via the Output helper, -// and that stderr is discarded. -func TestSessionOutput(t *testing.T) { - conn := dial(fixedOutputHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - - buf, err := session.Output("") // cmd is ignored by fixedOutputHandler - if err != nil { - t.Error("Remote command did not exit cleanly:", err) - } - w := "this-is-stdout." - g := string(buf) - if g != w { - t.Error("Remote command did not return expected string:") - t.Logf("want %q", w) - t.Logf("got %q", g) - } -} - -// Test that both stdout and stderr are returned -// via the CombinedOutput helper. -func TestSessionCombinedOutput(t *testing.T) { - conn := dial(fixedOutputHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - - buf, err := session.CombinedOutput("") // cmd is ignored by fixedOutputHandler - if err != nil { - t.Error("Remote command did not exit cleanly:", err) - } - const stdout = "this-is-stdout." - const stderr = "this-is-stderr." - g := string(buf) - if g != stdout+stderr && g != stderr+stdout { - t.Error("Remote command did not return expected string:") - t.Logf("want %q, or %q", stdout+stderr, stderr+stdout) - t.Logf("got %q", g) - } -} - -// Test non-0 exit status is returned correctly. -func TestExitStatusNonZero(t *testing.T) { - conn := dial(exitStatusNonZeroHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %v", err) - } - err = session.Wait() - if err == nil { - t.Fatalf("expected command to fail but it didn't") - } - e, ok := err.(*ExitError) - if !ok { - t.Fatalf("expected *ExitError but got %T", err) - } - if e.ExitStatus() != 15 { - t.Fatalf("expected command to exit with 15 but got %v", e.ExitStatus()) - } -} - -// Test 0 exit status is returned correctly. -func TestExitStatusZero(t *testing.T) { - conn := dial(exitStatusZeroHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %v", err) - } - err = session.Wait() - if err != nil { - t.Fatalf("expected nil but got %v", err) - } -} - -// Test exit signal and status are both returned correctly. -func TestExitSignalAndStatus(t *testing.T) { - conn := dial(exitSignalAndStatusHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %v", err) - } - err = session.Wait() - if err == nil { - t.Fatalf("expected command to fail but it didn't") - } - e, ok := err.(*ExitError) - if !ok { - t.Fatalf("expected *ExitError but got %T", err) - } - if e.Signal() != "TERM" || e.ExitStatus() != 15 { - t.Fatalf("expected command to exit with signal TERM and status 15 but got signal %s and status %v", e.Signal(), e.ExitStatus()) - } -} - -// Test exit signal and status are both returned correctly. -func TestKnownExitSignalOnly(t *testing.T) { - conn := dial(exitSignalHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %v", err) - } - err = session.Wait() - if err == nil { - t.Fatalf("expected command to fail but it didn't") - } - e, ok := err.(*ExitError) - if !ok { - t.Fatalf("expected *ExitError but got %T", err) - } - if e.Signal() != "TERM" || e.ExitStatus() != 143 { - t.Fatalf("expected command to exit with signal TERM and status 143 but got signal %s and status %v", e.Signal(), e.ExitStatus()) - } -} - -// Test exit signal and status are both returned correctly. -func TestUnknownExitSignal(t *testing.T) { - conn := dial(exitSignalUnknownHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %v", err) - } - err = session.Wait() - if err == nil { - t.Fatalf("expected command to fail but it didn't") - } - e, ok := err.(*ExitError) - if !ok { - t.Fatalf("expected *ExitError but got %T", err) - } - if e.Signal() != "SYS" || e.ExitStatus() != 128 { - t.Fatalf("expected command to exit with signal SYS and status 128 but got signal %s and status %v", e.Signal(), e.ExitStatus()) - } -} - -func TestExitWithoutStatusOrSignal(t *testing.T) { - conn := dial(exitWithoutSignalOrStatus, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatalf("Unable to request new session: %v", err) - } - defer session.Close() - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %v", err) - } - err = session.Wait() - if err == nil { - t.Fatalf("expected command to fail but it didn't") - } - if _, ok := err.(*ExitMissingError); !ok { - t.Fatalf("got %T want *ExitMissingError", err) - } -} - -// windowTestBytes is the number of bytes that we'll send to the SSH server. -const windowTestBytes = 16000 * 200 - -// TestServerWindow writes random data to the server. The server is expected to echo -// the same data back, which is compared against the original. -func TestServerWindow(t *testing.T) { - origBuf := bytes.NewBuffer(make([]byte, 0, windowTestBytes)) - io.CopyN(origBuf, crypto_rand.Reader, windowTestBytes) - origBytes := origBuf.Bytes() - - conn := dial(echoHandler, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatal(err) - } - defer session.Close() - result := make(chan []byte) - - go func() { - defer close(result) - echoedBuf := bytes.NewBuffer(make([]byte, 0, windowTestBytes)) - serverStdout, err := session.StdoutPipe() - if err != nil { - t.Errorf("StdoutPipe failed: %v", err) - return - } - n, err := copyNRandomly("stdout", echoedBuf, serverStdout, windowTestBytes) - if err != nil && err != io.EOF { - t.Errorf("Read only %d bytes from server, expected %d: %v", n, windowTestBytes, err) - } - result <- echoedBuf.Bytes() - }() - - serverStdin, err := session.StdinPipe() - if err != nil { - t.Fatalf("StdinPipe failed: %v", err) - } - written, err := copyNRandomly("stdin", serverStdin, origBuf, windowTestBytes) - if err != nil { - t.Fatalf("failed to copy origBuf to serverStdin: %v", err) - } - if written != windowTestBytes { - t.Fatalf("Wrote only %d of %d bytes to server", written, windowTestBytes) - } - - echoedBytes := <-result - - if !bytes.Equal(origBytes, echoedBytes) { - t.Fatalf("Echoed buffer differed from original, orig %d, echoed %d", len(origBytes), len(echoedBytes)) - } -} - -// Verify the client can handle a keepalive packet from the server. -func TestClientHandlesKeepalives(t *testing.T) { - conn := dial(channelKeepaliveSender, t) - defer conn.Close() - session, err := conn.NewSession() - if err != nil { - t.Fatal(err) - } - defer session.Close() - if err := session.Shell(); err != nil { - t.Fatalf("Unable to execute command: %v", err) - } - err = session.Wait() - if err != nil { - t.Fatalf("expected nil but got: %v", err) - } -} - -type exitStatusMsg struct { - Status uint32 -} - -type exitSignalMsg struct { - Signal string - CoreDumped bool - Errmsg string - Lang string -} - -func handleTerminalRequests(in <-chan *Request) { - for req := range in { - ok := false - switch req.Type { - case "shell": - ok = true - if len(req.Payload) > 0 { - // We don't accept any commands, only the default shell. - ok = false - } - case "env": - ok = true - } - req.Reply(ok, nil) - } -} - -func newServerShell(ch Channel, in <-chan *Request, prompt string) *terminal.Terminal { - term := terminal.NewTerminal(ch, prompt) - go handleTerminalRequests(in) - return term -} - -func exitStatusZeroHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - // this string is returned to stdout - shell := newServerShell(ch, in, "> ") - readLine(shell, t) - sendStatus(0, ch, t) -} - -func exitStatusNonZeroHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - shell := newServerShell(ch, in, "> ") - readLine(shell, t) - sendStatus(15, ch, t) -} - -func exitSignalAndStatusHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - shell := newServerShell(ch, in, "> ") - readLine(shell, t) - sendStatus(15, ch, t) - sendSignal("TERM", ch, t) -} - -func exitSignalHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - shell := newServerShell(ch, in, "> ") - readLine(shell, t) - sendSignal("TERM", ch, t) -} - -func exitSignalUnknownHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - shell := newServerShell(ch, in, "> ") - readLine(shell, t) - sendSignal("SYS", ch, t) -} - -func exitWithoutSignalOrStatus(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - shell := newServerShell(ch, in, "> ") - readLine(shell, t) -} - -func shellHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - // this string is returned to stdout - shell := newServerShell(ch, in, "golang") - readLine(shell, t) - sendStatus(0, ch, t) -} - -// Ignores the command, writes fixed strings to stderr and stdout. -// Strings are "this-is-stdout." and "this-is-stderr.". -func fixedOutputHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - _, err := ch.Read(nil) - - req, ok := <-in - if !ok { - t.Fatalf("error: expected channel request, got: %#v", err) - return - } - - // ignore request, always send some text - req.Reply(true, nil) - - _, err = io.WriteString(ch, "this-is-stdout.") - if err != nil { - t.Fatalf("error writing on server: %v", err) - } - _, err = io.WriteString(ch.Stderr(), "this-is-stderr.") - if err != nil { - t.Fatalf("error writing on server: %v", err) - } - sendStatus(0, ch, t) -} - -func readLine(shell *terminal.Terminal, t *testing.T) { - if _, err := shell.ReadLine(); err != nil && err != io.EOF { - t.Errorf("unable to read line: %v", err) - } -} - -func sendStatus(status uint32, ch Channel, t *testing.T) { - msg := exitStatusMsg{ - Status: status, - } - if _, err := ch.SendRequest("exit-status", false, Marshal(&msg)); err != nil { - t.Errorf("unable to send status: %v", err) - } -} - -func sendSignal(signal string, ch Channel, t *testing.T) { - sig := exitSignalMsg{ - Signal: signal, - CoreDumped: false, - Errmsg: "Process terminated", - Lang: "en-GB-oed", - } - if _, err := ch.SendRequest("exit-signal", false, Marshal(&sig)); err != nil { - t.Errorf("unable to send signal: %v", err) - } -} - -func discardHandler(ch Channel, t *testing.T) { - defer ch.Close() - io.Copy(ioutil.Discard, ch) -} - -func echoHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - if n, err := copyNRandomly("echohandler", ch, ch, windowTestBytes); err != nil { - t.Errorf("short write, wrote %d, expected %d: %v ", n, windowTestBytes, err) - } -} - -// copyNRandomly copies n bytes from src to dst. It uses a variable, and random, -// buffer size to exercise more code paths. -func copyNRandomly(title string, dst io.Writer, src io.Reader, n int) (int, error) { - var ( - buf = make([]byte, 32*1024) - written int - remaining = n - ) - for remaining > 0 { - l := rand.Intn(1 << 15) - if remaining < l { - l = remaining - } - nr, er := src.Read(buf[:l]) - nw, ew := dst.Write(buf[:nr]) - remaining -= nw - written += nw - if ew != nil { - return written, ew - } - if nr != nw { - return written, io.ErrShortWrite - } - if er != nil && er != io.EOF { - return written, er - } - } - return written, nil -} - -func channelKeepaliveSender(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - shell := newServerShell(ch, in, "> ") - readLine(shell, t) - if _, err := ch.SendRequest("keepalive@openssh.com", true, nil); err != nil { - t.Errorf("unable to send channel keepalive request: %v", err) - } - sendStatus(0, ch, t) -} - -func TestClientWriteEOF(t *testing.T) { - conn := dial(simpleEchoHandler, t) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatal(err) - } - defer session.Close() - stdin, err := session.StdinPipe() - if err != nil { - t.Fatalf("StdinPipe failed: %v", err) - } - stdout, err := session.StdoutPipe() - if err != nil { - t.Fatalf("StdoutPipe failed: %v", err) - } - - data := []byte(`0000`) - _, err = stdin.Write(data) - if err != nil { - t.Fatalf("Write failed: %v", err) - } - stdin.Close() - - res, err := ioutil.ReadAll(stdout) - if err != nil { - t.Fatalf("Read failed: %v", err) - } - - if !bytes.Equal(data, res) { - t.Fatalf("Read differed from write, wrote: %v, read: %v", data, res) - } -} - -func simpleEchoHandler(ch Channel, in <-chan *Request, t *testing.T) { - defer ch.Close() - data, err := ioutil.ReadAll(ch) - if err != nil { - t.Errorf("handler read error: %v", err) - } - _, err = ch.Write(data) - if err != nil { - t.Errorf("handler write error: %v", err) - } -} - -func TestSessionID(t *testing.T) { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - serverID := make(chan []byte, 1) - clientID := make(chan []byte, 1) - - serverConf := &ServerConfig{ - NoClientAuth: true, - } - serverConf.AddHostKey(testSigners["ecdsa"]) - clientConf := &ClientConfig{ - HostKeyCallback: InsecureIgnoreHostKey(), - User: "user", - } - - go func() { - conn, chans, reqs, err := NewServerConn(c1, serverConf) - if err != nil { - t.Fatalf("server handshake: %v", err) - } - serverID <- conn.SessionID() - go DiscardRequests(reqs) - for ch := range chans { - ch.Reject(Prohibited, "") - } - }() - - go func() { - conn, chans, reqs, err := NewClientConn(c2, "", clientConf) - if err != nil { - t.Fatalf("client handshake: %v", err) - } - clientID <- conn.SessionID() - go DiscardRequests(reqs) - for ch := range chans { - ch.Reject(Prohibited, "") - } - }() - - s := <-serverID - c := <-clientID - if bytes.Compare(s, c) != 0 { - t.Errorf("server session ID (%x) != client session ID (%x)", s, c) - } else if len(s) == 0 { - t.Errorf("client and server SessionID were empty.") - } -} - -type noReadConn struct { - readSeen bool - net.Conn -} - -func (c *noReadConn) Close() error { - return nil -} - -func (c *noReadConn) Read(b []byte) (int, error) { - c.readSeen = true - return 0, errors.New("noReadConn error") -} - -func TestInvalidServerConfiguration(t *testing.T) { - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - serveConn := noReadConn{Conn: c1} - serverConf := &ServerConfig{} - - NewServerConn(&serveConn, serverConf) - if serveConn.readSeen { - t.Fatalf("NewServerConn attempted to Read() from Conn while configuration is missing host key") - } - - serverConf.AddHostKey(testSigners["ecdsa"]) - - NewServerConn(&serveConn, serverConf) - if serveConn.readSeen { - t.Fatalf("NewServerConn attempted to Read() from Conn while configuration is missing authentication method") - } -} - -func TestHostKeyAlgorithms(t *testing.T) { - serverConf := &ServerConfig{ - NoClientAuth: true, - } - serverConf.AddHostKey(testSigners["rsa"]) - serverConf.AddHostKey(testSigners["ecdsa"]) - - connect := func(clientConf *ClientConfig, want string) { - var alg string - clientConf.HostKeyCallback = func(h string, a net.Addr, key PublicKey) error { - alg = key.Type() - return nil - } - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - go NewServerConn(c1, serverConf) - _, _, _, err = NewClientConn(c2, "", clientConf) - if err != nil { - t.Fatalf("NewClientConn: %v", err) - } - if alg != want { - t.Errorf("selected key algorithm %s, want %s", alg, want) - } - } - - // By default, we get the preferred algorithm, which is ECDSA 256. - - clientConf := &ClientConfig{ - HostKeyCallback: InsecureIgnoreHostKey(), - } - connect(clientConf, KeyAlgoECDSA256) - - // Client asks for RSA explicitly. - clientConf.HostKeyAlgorithms = []string{KeyAlgoRSA} - connect(clientConf, KeyAlgoRSA) - - c1, c2, err := netPipe() - if err != nil { - t.Fatalf("netPipe: %v", err) - } - defer c1.Close() - defer c2.Close() - - go NewServerConn(c1, serverConf) - clientConf.HostKeyAlgorithms = []string{"nonexistent-hostkey-algo"} - _, _, _, err = NewClientConn(c2, "", clientConf) - if err == nil { - t.Fatal("succeeded connecting with unknown hostkey algorithm") - } -} diff --git a/vendor/golang.org/x/crypto/ssh/streamlocal.go b/vendor/golang.org/x/crypto/ssh/streamlocal.go deleted file mode 100644 index a2dccc64..00000000 --- a/vendor/golang.org/x/crypto/ssh/streamlocal.go +++ /dev/null @@ -1,115 +0,0 @@ -package ssh - -import ( - "errors" - "io" - "net" -) - -// streamLocalChannelOpenDirectMsg is a struct used for SSH_MSG_CHANNEL_OPEN message -// with "direct-streamlocal@openssh.com" string. -// -// See openssh-portable/PROTOCOL, section 2.4. connection: Unix domain socket forwarding -// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL#L235 -type streamLocalChannelOpenDirectMsg struct { - socketPath string - reserved0 string - reserved1 uint32 -} - -// forwardedStreamLocalPayload is a struct used for SSH_MSG_CHANNEL_OPEN message -// with "forwarded-streamlocal@openssh.com" string. -type forwardedStreamLocalPayload struct { - SocketPath string - Reserved0 string -} - -// streamLocalChannelForwardMsg is a struct used for SSH2_MSG_GLOBAL_REQUEST message -// with "streamlocal-forward@openssh.com"/"cancel-streamlocal-forward@openssh.com" string. -type streamLocalChannelForwardMsg struct { - socketPath string -} - -// ListenUnix is similar to ListenTCP but uses a Unix domain socket. -func (c *Client) ListenUnix(socketPath string) (net.Listener, error) { - m := streamLocalChannelForwardMsg{ - socketPath, - } - // send message - ok, _, err := c.SendRequest("streamlocal-forward@openssh.com", true, Marshal(&m)) - if err != nil { - return nil, err - } - if !ok { - return nil, errors.New("ssh: streamlocal-forward@openssh.com request denied by peer") - } - ch := c.forwards.add(&net.UnixAddr{Name: socketPath, Net: "unix"}) - - return &unixListener{socketPath, c, ch}, nil -} - -func (c *Client) dialStreamLocal(socketPath string) (Channel, error) { - msg := streamLocalChannelOpenDirectMsg{ - socketPath: socketPath, - } - ch, in, err := c.OpenChannel("direct-streamlocal@openssh.com", Marshal(&msg)) - if err != nil { - return nil, err - } - go DiscardRequests(in) - return ch, err -} - -type unixListener struct { - socketPath string - - conn *Client - in <-chan forward -} - -// Accept waits for and returns the next connection to the listener. -func (l *unixListener) Accept() (net.Conn, error) { - s, ok := <-l.in - if !ok { - return nil, io.EOF - } - ch, incoming, err := s.newCh.Accept() - if err != nil { - return nil, err - } - go DiscardRequests(incoming) - - return &chanConn{ - Channel: ch, - laddr: &net.UnixAddr{ - Name: l.socketPath, - Net: "unix", - }, - raddr: &net.UnixAddr{ - Name: "@", - Net: "unix", - }, - }, nil -} - -// Close closes the listener. -func (l *unixListener) Close() error { - // this also closes the listener. - l.conn.forwards.remove(&net.UnixAddr{Name: l.socketPath, Net: "unix"}) - m := streamLocalChannelForwardMsg{ - l.socketPath, - } - ok, _, err := l.conn.SendRequest("cancel-streamlocal-forward@openssh.com", true, Marshal(&m)) - if err == nil && !ok { - err = errors.New("ssh: cancel-streamlocal-forward@openssh.com failed") - } - return err -} - -// Addr returns the listener's network address. -func (l *unixListener) Addr() net.Addr { - return &net.UnixAddr{ - Name: l.socketPath, - Net: "unix", - } -} diff --git a/vendor/golang.org/x/crypto/ssh/tcpip.go b/vendor/golang.org/x/crypto/ssh/tcpip.go deleted file mode 100644 index acf17175..00000000 --- a/vendor/golang.org/x/crypto/ssh/tcpip.go +++ /dev/null @@ -1,465 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "errors" - "fmt" - "io" - "math/rand" - "net" - "strconv" - "strings" - "sync" - "time" -) - -// Listen requests the remote peer open a listening socket on -// addr. Incoming connections will be available by calling Accept on -// the returned net.Listener. The listener must be serviced, or the -// SSH connection may hang. -// N must be "tcp", "tcp4", "tcp6", or "unix". -func (c *Client) Listen(n, addr string) (net.Listener, error) { - switch n { - case "tcp", "tcp4", "tcp6": - laddr, err := net.ResolveTCPAddr(n, addr) - if err != nil { - return nil, err - } - return c.ListenTCP(laddr) - case "unix": - return c.ListenUnix(addr) - default: - return nil, fmt.Errorf("ssh: unsupported protocol: %s", n) - } -} - -// Automatic port allocation is broken with OpenSSH before 6.0. See -// also https://bugzilla.mindrot.org/show_bug.cgi?id=2017. In -// particular, OpenSSH 5.9 sends a channelOpenMsg with port number 0, -// rather than the actual port number. This means you can never open -// two different listeners with auto allocated ports. We work around -// this by trying explicit ports until we succeed. - -const openSSHPrefix = "OpenSSH_" - -var portRandomizer = rand.New(rand.NewSource(time.Now().UnixNano())) - -// isBrokenOpenSSHVersion returns true if the given version string -// specifies a version of OpenSSH that is known to have a bug in port -// forwarding. -func isBrokenOpenSSHVersion(versionStr string) bool { - i := strings.Index(versionStr, openSSHPrefix) - if i < 0 { - return false - } - i += len(openSSHPrefix) - j := i - for ; j < len(versionStr); j++ { - if versionStr[j] < '0' || versionStr[j] > '9' { - break - } - } - version, _ := strconv.Atoi(versionStr[i:j]) - return version < 6 -} - -// autoPortListenWorkaround simulates automatic port allocation by -// trying random ports repeatedly. -func (c *Client) autoPortListenWorkaround(laddr *net.TCPAddr) (net.Listener, error) { - var sshListener net.Listener - var err error - const tries = 10 - for i := 0; i < tries; i++ { - addr := *laddr - addr.Port = 1024 + portRandomizer.Intn(60000) - sshListener, err = c.ListenTCP(&addr) - if err == nil { - laddr.Port = addr.Port - return sshListener, err - } - } - return nil, fmt.Errorf("ssh: listen on random port failed after %d tries: %v", tries, err) -} - -// RFC 4254 7.1 -type channelForwardMsg struct { - addr string - rport uint32 -} - -// ListenTCP requests the remote peer open a listening socket -// on laddr. Incoming connections will be available by calling -// Accept on the returned net.Listener. -func (c *Client) ListenTCP(laddr *net.TCPAddr) (net.Listener, error) { - if laddr.Port == 0 && isBrokenOpenSSHVersion(string(c.ServerVersion())) { - return c.autoPortListenWorkaround(laddr) - } - - m := channelForwardMsg{ - laddr.IP.String(), - uint32(laddr.Port), - } - // send message - ok, resp, err := c.SendRequest("tcpip-forward", true, Marshal(&m)) - if err != nil { - return nil, err - } - if !ok { - return nil, errors.New("ssh: tcpip-forward request denied by peer") - } - - // If the original port was 0, then the remote side will - // supply a real port number in the response. - if laddr.Port == 0 { - var p struct { - Port uint32 - } - if err := Unmarshal(resp, &p); err != nil { - return nil, err - } - laddr.Port = int(p.Port) - } - - // Register this forward, using the port number we obtained. - ch := c.forwards.add(laddr) - - return &tcpListener{laddr, c, ch}, nil -} - -// forwardList stores a mapping between remote -// forward requests and the tcpListeners. -type forwardList struct { - sync.Mutex - entries []forwardEntry -} - -// forwardEntry represents an established mapping of a laddr on a -// remote ssh server to a channel connected to a tcpListener. -type forwardEntry struct { - laddr net.Addr - c chan forward -} - -// forward represents an incoming forwarded tcpip connection. The -// arguments to add/remove/lookup should be address as specified in -// the original forward-request. -type forward struct { - newCh NewChannel // the ssh client channel underlying this forward - raddr net.Addr // the raddr of the incoming connection -} - -func (l *forwardList) add(addr net.Addr) chan forward { - l.Lock() - defer l.Unlock() - f := forwardEntry{ - laddr: addr, - c: make(chan forward, 1), - } - l.entries = append(l.entries, f) - return f.c -} - -// See RFC 4254, section 7.2 -type forwardedTCPPayload struct { - Addr string - Port uint32 - OriginAddr string - OriginPort uint32 -} - -// parseTCPAddr parses the originating address from the remote into a *net.TCPAddr. -func parseTCPAddr(addr string, port uint32) (*net.TCPAddr, error) { - if port == 0 || port > 65535 { - return nil, fmt.Errorf("ssh: port number out of range: %d", port) - } - ip := net.ParseIP(string(addr)) - if ip == nil { - return nil, fmt.Errorf("ssh: cannot parse IP address %q", addr) - } - return &net.TCPAddr{IP: ip, Port: int(port)}, nil -} - -func (l *forwardList) handleChannels(in <-chan NewChannel) { - for ch := range in { - var ( - laddr net.Addr - raddr net.Addr - err error - ) - switch channelType := ch.ChannelType(); channelType { - case "forwarded-tcpip": - var payload forwardedTCPPayload - if err = Unmarshal(ch.ExtraData(), &payload); err != nil { - ch.Reject(ConnectionFailed, "could not parse forwarded-tcpip payload: "+err.Error()) - continue - } - - // RFC 4254 section 7.2 specifies that incoming - // addresses should list the address, in string - // format. It is implied that this should be an IP - // address, as it would be impossible to connect to it - // otherwise. - laddr, err = parseTCPAddr(payload.Addr, payload.Port) - if err != nil { - ch.Reject(ConnectionFailed, err.Error()) - continue - } - raddr, err = parseTCPAddr(payload.OriginAddr, payload.OriginPort) - if err != nil { - ch.Reject(ConnectionFailed, err.Error()) - continue - } - - case "forwarded-streamlocal@openssh.com": - var payload forwardedStreamLocalPayload - if err = Unmarshal(ch.ExtraData(), &payload); err != nil { - ch.Reject(ConnectionFailed, "could not parse forwarded-streamlocal@openssh.com payload: "+err.Error()) - continue - } - laddr = &net.UnixAddr{ - Name: payload.SocketPath, - Net: "unix", - } - raddr = &net.UnixAddr{ - Name: "@", - Net: "unix", - } - default: - panic(fmt.Errorf("ssh: unknown channel type %s", channelType)) - } - if ok := l.forward(laddr, raddr, ch); !ok { - // Section 7.2, implementations MUST reject spurious incoming - // connections. - ch.Reject(Prohibited, "no forward for address") - continue - } - - } -} - -// remove removes the forward entry, and the channel feeding its -// listener. -func (l *forwardList) remove(addr net.Addr) { - l.Lock() - defer l.Unlock() - for i, f := range l.entries { - if addr.Network() == f.laddr.Network() && addr.String() == f.laddr.String() { - l.entries = append(l.entries[:i], l.entries[i+1:]...) - close(f.c) - return - } - } -} - -// closeAll closes and clears all forwards. -func (l *forwardList) closeAll() { - l.Lock() - defer l.Unlock() - for _, f := range l.entries { - close(f.c) - } - l.entries = nil -} - -func (l *forwardList) forward(laddr, raddr net.Addr, ch NewChannel) bool { - l.Lock() - defer l.Unlock() - for _, f := range l.entries { - if laddr.Network() == f.laddr.Network() && laddr.String() == f.laddr.String() { - f.c <- forward{newCh: ch, raddr: raddr} - return true - } - } - return false -} - -type tcpListener struct { - laddr *net.TCPAddr - - conn *Client - in <-chan forward -} - -// Accept waits for and returns the next connection to the listener. -func (l *tcpListener) Accept() (net.Conn, error) { - s, ok := <-l.in - if !ok { - return nil, io.EOF - } - ch, incoming, err := s.newCh.Accept() - if err != nil { - return nil, err - } - go DiscardRequests(incoming) - - return &chanConn{ - Channel: ch, - laddr: l.laddr, - raddr: s.raddr, - }, nil -} - -// Close closes the listener. -func (l *tcpListener) Close() error { - m := channelForwardMsg{ - l.laddr.IP.String(), - uint32(l.laddr.Port), - } - - // this also closes the listener. - l.conn.forwards.remove(l.laddr) - ok, _, err := l.conn.SendRequest("cancel-tcpip-forward", true, Marshal(&m)) - if err == nil && !ok { - err = errors.New("ssh: cancel-tcpip-forward failed") - } - return err -} - -// Addr returns the listener's network address. -func (l *tcpListener) Addr() net.Addr { - return l.laddr -} - -// Dial initiates a connection to the addr from the remote host. -// The resulting connection has a zero LocalAddr() and RemoteAddr(). -func (c *Client) Dial(n, addr string) (net.Conn, error) { - var ch Channel - switch n { - case "tcp", "tcp4", "tcp6": - // Parse the address into host and numeric port. - host, portString, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - port, err := strconv.ParseUint(portString, 10, 16) - if err != nil { - return nil, err - } - ch, err = c.dial(net.IPv4zero.String(), 0, host, int(port)) - if err != nil { - return nil, err - } - // Use a zero address for local and remote address. - zeroAddr := &net.TCPAddr{ - IP: net.IPv4zero, - Port: 0, - } - return &chanConn{ - Channel: ch, - laddr: zeroAddr, - raddr: zeroAddr, - }, nil - case "unix": - var err error - ch, err = c.dialStreamLocal(addr) - if err != nil { - return nil, err - } - return &chanConn{ - Channel: ch, - laddr: &net.UnixAddr{ - Name: "@", - Net: "unix", - }, - raddr: &net.UnixAddr{ - Name: addr, - Net: "unix", - }, - }, nil - default: - return nil, fmt.Errorf("ssh: unsupported protocol: %s", n) - } -} - -// DialTCP connects to the remote address raddr on the network net, -// which must be "tcp", "tcp4", or "tcp6". If laddr is not nil, it is used -// as the local address for the connection. -func (c *Client) DialTCP(n string, laddr, raddr *net.TCPAddr) (net.Conn, error) { - if laddr == nil { - laddr = &net.TCPAddr{ - IP: net.IPv4zero, - Port: 0, - } - } - ch, err := c.dial(laddr.IP.String(), laddr.Port, raddr.IP.String(), raddr.Port) - if err != nil { - return nil, err - } - return &chanConn{ - Channel: ch, - laddr: laddr, - raddr: raddr, - }, nil -} - -// RFC 4254 7.2 -type channelOpenDirectMsg struct { - raddr string - rport uint32 - laddr string - lport uint32 -} - -func (c *Client) dial(laddr string, lport int, raddr string, rport int) (Channel, error) { - msg := channelOpenDirectMsg{ - raddr: raddr, - rport: uint32(rport), - laddr: laddr, - lport: uint32(lport), - } - ch, in, err := c.OpenChannel("direct-tcpip", Marshal(&msg)) - if err != nil { - return nil, err - } - go DiscardRequests(in) - return ch, err -} - -type tcpChan struct { - Channel // the backing channel -} - -// chanConn fulfills the net.Conn interface without -// the tcpChan having to hold laddr or raddr directly. -type chanConn struct { - Channel - laddr, raddr net.Addr -} - -// LocalAddr returns the local network address. -func (t *chanConn) LocalAddr() net.Addr { - return t.laddr -} - -// RemoteAddr returns the remote network address. -func (t *chanConn) RemoteAddr() net.Addr { - return t.raddr -} - -// SetDeadline sets the read and write deadlines associated -// with the connection. -func (t *chanConn) SetDeadline(deadline time.Time) error { - if err := t.SetReadDeadline(deadline); err != nil { - return err - } - return t.SetWriteDeadline(deadline) -} - -// SetReadDeadline sets the read deadline. -// A zero value for t means Read will not time out. -// After the deadline, the error from Read will implement net.Error -// with Timeout() == true. -func (t *chanConn) SetReadDeadline(deadline time.Time) error { - // for compatibility with previous version, - // the error message contains "tcpChan" - return errors.New("ssh: tcpChan: deadline not supported") -} - -// SetWriteDeadline exists to satisfy the net.Conn interface -// but is not implemented by this type. It always returns an error. -func (t *chanConn) SetWriteDeadline(deadline time.Time) error { - return errors.New("ssh: tcpChan: deadline not supported") -} diff --git a/vendor/golang.org/x/crypto/ssh/tcpip_test.go b/vendor/golang.org/x/crypto/ssh/tcpip_test.go deleted file mode 100644 index f1265cb4..00000000 --- a/vendor/golang.org/x/crypto/ssh/tcpip_test.go +++ /dev/null @@ -1,20 +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 ssh - -import ( - "testing" -) - -func TestAutoPortListenBroken(t *testing.T) { - broken := "SSH-2.0-OpenSSH_5.9hh11" - works := "SSH-2.0-OpenSSH_6.1" - if !isBrokenOpenSSHVersion(broken) { - t.Errorf("version %q not marked as broken", broken) - } - if isBrokenOpenSSHVersion(works) { - t.Errorf("version %q marked as broken", works) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go b/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go deleted file mode 100644 index 901c72ab..00000000 --- a/vendor/golang.org/x/crypto/ssh/terminal/terminal_test.go +++ /dev/null @@ -1,350 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package terminal - -import ( - "bytes" - "io" - "os" - "testing" -) - -type MockTerminal struct { - toSend []byte - bytesPerRead int - received []byte -} - -func (c *MockTerminal) Read(data []byte) (n int, err error) { - n = len(data) - if n == 0 { - return - } - if n > len(c.toSend) { - n = len(c.toSend) - } - if n == 0 { - return 0, io.EOF - } - if c.bytesPerRead > 0 && n > c.bytesPerRead { - n = c.bytesPerRead - } - copy(data, c.toSend[:n]) - c.toSend = c.toSend[n:] - return -} - -func (c *MockTerminal) Write(data []byte) (n int, err error) { - c.received = append(c.received, data...) - return len(data), nil -} - -func TestClose(t *testing.T) { - c := &MockTerminal{} - ss := NewTerminal(c, "> ") - line, err := ss.ReadLine() - if line != "" { - t.Errorf("Expected empty line but got: %s", line) - } - if err != io.EOF { - t.Errorf("Error should have been EOF but got: %s", err) - } -} - -var keyPressTests = []struct { - in string - line string - err error - throwAwayLines int -}{ - { - err: io.EOF, - }, - { - in: "\r", - line: "", - }, - { - in: "foo\r", - line: "foo", - }, - { - in: "a\x1b[Cb\r", // right - line: "ab", - }, - { - in: "a\x1b[Db\r", // left - line: "ba", - }, - { - in: "a\177b\r", // backspace - line: "b", - }, - { - in: "\x1b[A\r", // up - }, - { - in: "\x1b[B\r", // down - }, - { - in: "line\x1b[A\x1b[B\r", // up then down - line: "line", - }, - { - in: "line1\rline2\x1b[A\r", // recall previous line. - line: "line1", - throwAwayLines: 1, - }, - { - // recall two previous lines and append. - in: "line1\rline2\rline3\x1b[A\x1b[Axxx\r", - line: "line1xxx", - throwAwayLines: 2, - }, - { - // Ctrl-A to move to beginning of line followed by ^K to kill - // line. - in: "a b \001\013\r", - line: "", - }, - { - // Ctrl-A to move to beginning of line, Ctrl-E to move to end, - // finally ^K to kill nothing. - in: "a b \001\005\013\r", - line: "a b ", - }, - { - in: "\027\r", - line: "", - }, - { - in: "a\027\r", - line: "", - }, - { - in: "a \027\r", - line: "", - }, - { - in: "a b\027\r", - line: "a ", - }, - { - in: "a b \027\r", - line: "a ", - }, - { - in: "one two thr\x1b[D\027\r", - line: "one two r", - }, - { - in: "\013\r", - line: "", - }, - { - in: "a\013\r", - line: "a", - }, - { - in: "ab\x1b[D\013\r", - line: "a", - }, - { - in: "Ξεσκεπάζω\r", - line: "Ξεσκεπάζω", - }, - { - in: "£\r\x1b[A\177\r", // non-ASCII char, enter, up, backspace. - line: "", - throwAwayLines: 1, - }, - { - in: "£\r££\x1b[A\x1b[B\177\r", // non-ASCII char, enter, 2x non-ASCII, up, down, backspace, enter. - line: "£", - throwAwayLines: 1, - }, - { - // Ctrl-D at the end of the line should be ignored. - in: "a\004\r", - line: "a", - }, - { - // a, b, left, Ctrl-D should erase the b. - in: "ab\x1b[D\004\r", - line: "a", - }, - { - // a, b, c, d, left, left, ^U should erase to the beginning of - // the line. - in: "abcd\x1b[D\x1b[D\025\r", - line: "cd", - }, - { - // Bracketed paste mode: control sequences should be returned - // verbatim in paste mode. - in: "abc\x1b[200~de\177f\x1b[201~\177\r", - line: "abcde\177", - }, - { - // Enter in bracketed paste mode should still work. - in: "abc\x1b[200~d\refg\x1b[201~h\r", - line: "efgh", - throwAwayLines: 1, - }, - { - // Lines consisting entirely of pasted data should be indicated as such. - in: "\x1b[200~a\r", - line: "a", - err: ErrPasteIndicator, - }, -} - -func TestKeyPresses(t *testing.T) { - for i, test := range keyPressTests { - for j := 1; j < len(test.in); j++ { - c := &MockTerminal{ - toSend: []byte(test.in), - bytesPerRead: j, - } - ss := NewTerminal(c, "> ") - for k := 0; k < test.throwAwayLines; k++ { - _, err := ss.ReadLine() - if err != nil { - t.Errorf("Throwaway line %d from test %d resulted in error: %s", k, i, err) - } - } - line, err := ss.ReadLine() - if line != test.line { - t.Errorf("Line resulting from test %d (%d bytes per read) was '%s', expected '%s'", i, j, line, test.line) - break - } - if err != test.err { - t.Errorf("Error resulting from test %d (%d bytes per read) was '%v', expected '%v'", i, j, err, test.err) - break - } - } - } -} - -func TestPasswordNotSaved(t *testing.T) { - c := &MockTerminal{ - toSend: []byte("password\r\x1b[A\r"), - bytesPerRead: 1, - } - ss := NewTerminal(c, "> ") - pw, _ := ss.ReadPassword("> ") - if pw != "password" { - t.Fatalf("failed to read password, got %s", pw) - } - line, _ := ss.ReadLine() - if len(line) > 0 { - t.Fatalf("password was saved in history") - } -} - -var setSizeTests = []struct { - width, height int -}{ - {40, 13}, - {80, 24}, - {132, 43}, -} - -func TestTerminalSetSize(t *testing.T) { - for _, setSize := range setSizeTests { - c := &MockTerminal{ - toSend: []byte("password\r\x1b[A\r"), - bytesPerRead: 1, - } - ss := NewTerminal(c, "> ") - ss.SetSize(setSize.width, setSize.height) - pw, _ := ss.ReadPassword("Password: ") - if pw != "password" { - t.Fatalf("failed to read password, got %s", pw) - } - if string(c.received) != "Password: \r\n" { - t.Errorf("failed to set the temporary prompt expected %q, got %q", "Password: ", c.received) - } - } -} - -func TestReadPasswordLineEnd(t *testing.T) { - var tests = []struct { - input string - want string - }{ - {"\n", ""}, - {"\r\n", ""}, - {"test\r\n", "test"}, - {"testtesttesttes\n", "testtesttesttes"}, - {"testtesttesttes\r\n", "testtesttesttes"}, - {"testtesttesttesttest\n", "testtesttesttesttest"}, - {"testtesttesttesttest\r\n", "testtesttesttesttest"}, - } - for _, test := range tests { - buf := new(bytes.Buffer) - if _, err := buf.WriteString(test.input); err != nil { - t.Fatal(err) - } - - have, err := readPasswordLine(buf) - if err != nil { - t.Errorf("readPasswordLine(%q) failed: %v", test.input, err) - continue - } - if string(have) != test.want { - t.Errorf("readPasswordLine(%q) returns %q, but %q is expected", test.input, string(have), test.want) - continue - } - - if _, err = buf.WriteString(test.input); err != nil { - t.Fatal(err) - } - have, err = readPasswordLine(buf) - if err != nil { - t.Errorf("readPasswordLine(%q) failed: %v", test.input, err) - continue - } - if string(have) != test.want { - t.Errorf("readPasswordLine(%q) returns %q, but %q is expected", test.input, string(have), test.want) - continue - } - } -} - -func TestMakeRawState(t *testing.T) { - fd := int(os.Stdout.Fd()) - if !IsTerminal(fd) { - t.Skip("stdout is not a terminal; skipping test") - } - - st, err := GetState(fd) - if err != nil { - t.Fatalf("failed to get terminal state from GetState: %s", err) - } - defer Restore(fd, st) - raw, err := MakeRaw(fd) - if err != nil { - t.Fatalf("failed to get terminal state from MakeRaw: %s", err) - } - - if *st != *raw { - t.Errorf("states do not match; was %v, expected %v", raw, st) - } -} - -func TestOutputNewlines(t *testing.T) { - // \n should be changed to \r\n in terminal output. - buf := new(bytes.Buffer) - term := NewTerminal(buf, ">") - - term.Write([]byte("1\n2\n")) - output := string(buf.Bytes()) - const expected = "1\r\n2\r\n" - - if output != expected { - t.Errorf("incorrect output: was %q, expected %q", output, expected) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/test/agent_unix_test.go b/vendor/golang.org/x/crypto/ssh/test/agent_unix_test.go deleted file mode 100644 index f481253c..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/agent_unix_test.go +++ /dev/null @@ -1,59 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd - -package test - -import ( - "bytes" - "testing" - - "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/agent" -) - -func TestAgentForward(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - keyring := agent.NewKeyring() - if err := keyring.Add(agent.AddedKey{PrivateKey: testPrivateKeys["dsa"]}); err != nil { - t.Fatalf("Error adding key: %s", err) - } - if err := keyring.Add(agent.AddedKey{ - PrivateKey: testPrivateKeys["dsa"], - ConfirmBeforeUse: true, - LifetimeSecs: 3600, - }); err != nil { - t.Fatalf("Error adding key with constraints: %s", err) - } - pub := testPublicKeys["dsa"] - - sess, err := conn.NewSession() - if err != nil { - t.Fatalf("NewSession: %v", err) - } - if err := agent.RequestAgentForwarding(sess); err != nil { - t.Fatalf("RequestAgentForwarding: %v", err) - } - - if err := agent.ForwardToAgent(conn, keyring); err != nil { - t.Fatalf("SetupForwardKeyring: %v", err) - } - out, err := sess.CombinedOutput("ssh-add -L") - if err != nil { - t.Fatalf("running ssh-add: %v, out %s", err, out) - } - key, _, _, _, err := ssh.ParseAuthorizedKey(out) - if err != nil { - t.Fatalf("ParseAuthorizedKey(%q): %v", out, err) - } - - if !bytes.Equal(key.Marshal(), pub.Marshal()) { - t.Fatalf("got key %s, want %s", ssh.MarshalAuthorizedKey(key), ssh.MarshalAuthorizedKey(pub)) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/test/banner_test.go b/vendor/golang.org/x/crypto/ssh/test/banner_test.go deleted file mode 100644 index d3b21ac7..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/banner_test.go +++ /dev/null @@ -1,32 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd - -package test - -import ( - "testing" -) - -func TestBannerCallbackAgainstOpenSSH(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - - clientConf := clientConfig() - - var receivedBanner string - clientConf.BannerCallback = func(message string) error { - receivedBanner = message - return nil - } - - conn := server.Dial(clientConf) - defer conn.Close() - - expected := "Server Banner" - if receivedBanner != expected { - t.Fatalf("got %v; want %v", receivedBanner, expected) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/test/cert_test.go b/vendor/golang.org/x/crypto/ssh/test/cert_test.go deleted file mode 100644 index b231dd80..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/cert_test.go +++ /dev/null @@ -1,77 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd - -package test - -import ( - "bytes" - "crypto/rand" - "testing" - - "golang.org/x/crypto/ssh" -) - -// Test both logging in with a cert, and also that the certificate presented by an OpenSSH host can be validated correctly -func TestCertLogin(t *testing.T) { - s := newServer(t) - defer s.Shutdown() - - // Use a key different from the default. - clientKey := testSigners["dsa"] - caAuthKey := testSigners["ecdsa"] - cert := &ssh.Certificate{ - Key: clientKey.PublicKey(), - ValidPrincipals: []string{username()}, - CertType: ssh.UserCert, - ValidBefore: ssh.CertTimeInfinity, - } - if err := cert.SignCert(rand.Reader, caAuthKey); err != nil { - t.Fatalf("SetSignature: %v", err) - } - - certSigner, err := ssh.NewCertSigner(cert, clientKey) - if err != nil { - t.Fatalf("NewCertSigner: %v", err) - } - - conf := &ssh.ClientConfig{ - User: username(), - HostKeyCallback: (&ssh.CertChecker{ - IsHostAuthority: func(pk ssh.PublicKey, addr string) bool { - return bytes.Equal(pk.Marshal(), testPublicKeys["ca"].Marshal()) - }, - }).CheckHostKey, - } - conf.Auth = append(conf.Auth, ssh.PublicKeys(certSigner)) - - for _, test := range []struct { - addr string - succeed bool - }{ - {addr: "host.example.com:22", succeed: true}, - {addr: "host.example.com:10000", succeed: true}, // non-standard port must be OK - {addr: "host.example.com", succeed: false}, // port must be specified - {addr: "host.ex4mple.com:22", succeed: false}, // wrong host - } { - client, err := s.TryDialWithAddr(conf, test.addr) - - // Always close client if opened successfully - if err == nil { - client.Close() - } - - // Now evaluate whether the test failed or passed - if test.succeed { - if err != nil { - t.Fatalf("TryDialWithAddr: %v", err) - } - } else { - if err == nil { - t.Fatalf("TryDialWithAddr, unexpected success") - } - } - } -} diff --git a/vendor/golang.org/x/crypto/ssh/test/dial_unix_test.go b/vendor/golang.org/x/crypto/ssh/test/dial_unix_test.go deleted file mode 100644 index 091e48cc..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/dial_unix_test.go +++ /dev/null @@ -1,128 +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. - -// +build !windows - -package test - -// direct-tcpip and direct-streamlocal functional tests - -import ( - "fmt" - "io" - "io/ioutil" - "net" - "strings" - "testing" -) - -type dialTester interface { - TestServerConn(t *testing.T, c net.Conn) - TestClientConn(t *testing.T, c net.Conn) -} - -func testDial(t *testing.T, n, listenAddr string, x dialTester) { - server := newServer(t) - defer server.Shutdown() - sshConn := server.Dial(clientConfig()) - defer sshConn.Close() - - l, err := net.Listen(n, listenAddr) - if err != nil { - t.Fatalf("Listen: %v", err) - } - defer l.Close() - - testData := fmt.Sprintf("hello from %s, %s", n, listenAddr) - go func() { - for { - c, err := l.Accept() - if err != nil { - break - } - x.TestServerConn(t, c) - - io.WriteString(c, testData) - c.Close() - } - }() - - conn, err := sshConn.Dial(n, l.Addr().String()) - if err != nil { - t.Fatalf("Dial: %v", err) - } - x.TestClientConn(t, conn) - defer conn.Close() - b, err := ioutil.ReadAll(conn) - if err != nil { - t.Fatalf("ReadAll: %v", err) - } - t.Logf("got %q", string(b)) - if string(b) != testData { - t.Fatalf("expected %q, got %q", testData, string(b)) - } -} - -type tcpDialTester struct { - listenAddr string -} - -func (x *tcpDialTester) TestServerConn(t *testing.T, c net.Conn) { - host := strings.Split(x.listenAddr, ":")[0] - prefix := host + ":" - if !strings.HasPrefix(c.LocalAddr().String(), prefix) { - t.Fatalf("expected to start with %q, got %q", prefix, c.LocalAddr().String()) - } - if !strings.HasPrefix(c.RemoteAddr().String(), prefix) { - t.Fatalf("expected to start with %q, got %q", prefix, c.RemoteAddr().String()) - } -} - -func (x *tcpDialTester) TestClientConn(t *testing.T, c net.Conn) { - // we use zero addresses. see *Client.Dial. - if c.LocalAddr().String() != "0.0.0.0:0" { - t.Fatalf("expected \"0.0.0.0:0\", got %q", c.LocalAddr().String()) - } - if c.RemoteAddr().String() != "0.0.0.0:0" { - t.Fatalf("expected \"0.0.0.0:0\", got %q", c.RemoteAddr().String()) - } -} - -func TestDialTCP(t *testing.T) { - x := &tcpDialTester{ - listenAddr: "127.0.0.1:0", - } - testDial(t, "tcp", x.listenAddr, x) -} - -type unixDialTester struct { - listenAddr string -} - -func (x *unixDialTester) TestServerConn(t *testing.T, c net.Conn) { - if c.LocalAddr().String() != x.listenAddr { - t.Fatalf("expected %q, got %q", x.listenAddr, c.LocalAddr().String()) - } - if c.RemoteAddr().String() != "@" { - t.Fatalf("expected \"@\", got %q", c.RemoteAddr().String()) - } -} - -func (x *unixDialTester) TestClientConn(t *testing.T, c net.Conn) { - if c.RemoteAddr().String() != x.listenAddr { - t.Fatalf("expected %q, got %q", x.listenAddr, c.RemoteAddr().String()) - } - if c.LocalAddr().String() != "@" { - t.Fatalf("expected \"@\", got %q", c.LocalAddr().String()) - } -} - -func TestDialUnix(t *testing.T) { - addr, cleanup := newTempSocket(t) - defer cleanup() - x := &unixDialTester{ - listenAddr: addr, - } - testDial(t, "unix", x.listenAddr, x) -} diff --git a/vendor/golang.org/x/crypto/ssh/test/doc.go b/vendor/golang.org/x/crypto/ssh/test/doc.go deleted file mode 100644 index 198f0ca1..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/doc.go +++ /dev/null @@ -1,7 +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 test contains integration tests for the -// golang.org/x/crypto/ssh package. -package test // import "golang.org/x/crypto/ssh/test" diff --git a/vendor/golang.org/x/crypto/ssh/test/forward_unix_test.go b/vendor/golang.org/x/crypto/ssh/test/forward_unix_test.go deleted file mode 100644 index ea819378..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/forward_unix_test.go +++ /dev/null @@ -1,194 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd - -package test - -import ( - "bytes" - "io" - "io/ioutil" - "math/rand" - "net" - "testing" - "time" -) - -type closeWriter interface { - CloseWrite() error -} - -func testPortForward(t *testing.T, n, listenAddr string) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - sshListener, err := conn.Listen(n, listenAddr) - if err != nil { - t.Fatal(err) - } - - go func() { - sshConn, err := sshListener.Accept() - if err != nil { - t.Fatalf("listen.Accept failed: %v", err) - } - - _, err = io.Copy(sshConn, sshConn) - if err != nil && err != io.EOF { - t.Fatalf("ssh client copy: %v", err) - } - sshConn.Close() - }() - - forwardedAddr := sshListener.Addr().String() - netConn, err := net.Dial(n, forwardedAddr) - if err != nil { - t.Fatalf("net dial failed: %v", err) - } - - readChan := make(chan []byte) - go func() { - data, _ := ioutil.ReadAll(netConn) - readChan <- data - }() - - // Invent some data. - data := make([]byte, 100*1000) - for i := range data { - data[i] = byte(i % 255) - } - - var sent []byte - for len(sent) < 1000*1000 { - // Send random sized chunks - m := rand.Intn(len(data)) - n, err := netConn.Write(data[:m]) - if err != nil { - break - } - sent = append(sent, data[:n]...) - } - if err := netConn.(closeWriter).CloseWrite(); err != nil { - t.Errorf("netConn.CloseWrite: %v", err) - } - - read := <-readChan - - if len(sent) != len(read) { - t.Fatalf("got %d bytes, want %d", len(read), len(sent)) - } - if bytes.Compare(sent, read) != 0 { - t.Fatalf("read back data does not match") - } - - if err := sshListener.Close(); err != nil { - t.Fatalf("sshListener.Close: %v", err) - } - - // Check that the forward disappeared. - netConn, err = net.Dial(n, forwardedAddr) - if err == nil { - netConn.Close() - t.Errorf("still listening to %s after closing", forwardedAddr) - } -} - -func TestPortForwardTCP(t *testing.T) { - testPortForward(t, "tcp", "localhost:0") -} - -func TestPortForwardUnix(t *testing.T) { - addr, cleanup := newTempSocket(t) - defer cleanup() - testPortForward(t, "unix", addr) -} - -func testAcceptClose(t *testing.T, n, listenAddr string) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - - sshListener, err := conn.Listen(n, listenAddr) - if err != nil { - t.Fatal(err) - } - - quit := make(chan error, 1) - go func() { - for { - c, err := sshListener.Accept() - if err != nil { - quit <- err - break - } - c.Close() - } - }() - sshListener.Close() - - select { - case <-time.After(1 * time.Second): - t.Errorf("timeout: listener did not close.") - case err := <-quit: - t.Logf("quit as expected (error %v)", err) - } -} - -func TestAcceptCloseTCP(t *testing.T) { - testAcceptClose(t, "tcp", "localhost:0") -} - -func TestAcceptCloseUnix(t *testing.T) { - addr, cleanup := newTempSocket(t) - defer cleanup() - testAcceptClose(t, "unix", addr) -} - -// Check that listeners exit if the underlying client transport dies. -func testPortForwardConnectionClose(t *testing.T, n, listenAddr string) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - - sshListener, err := conn.Listen(n, listenAddr) - if err != nil { - t.Fatal(err) - } - - quit := make(chan error, 1) - go func() { - for { - c, err := sshListener.Accept() - if err != nil { - quit <- err - break - } - c.Close() - } - }() - - // It would be even nicer if we closed the server side, but it - // is more involved as the fd for that side is dup()ed. - server.clientConn.Close() - - select { - case <-time.After(1 * time.Second): - t.Errorf("timeout: listener did not close.") - case err := <-quit: - t.Logf("quit as expected (error %v)", err) - } -} - -func TestPortForwardConnectionCloseTCP(t *testing.T) { - testPortForwardConnectionClose(t, "tcp", "localhost:0") -} - -func TestPortForwardConnectionCloseUnix(t *testing.T) { - addr, cleanup := newTempSocket(t) - defer cleanup() - testPortForwardConnectionClose(t, "unix", addr) -} diff --git a/vendor/golang.org/x/crypto/ssh/test/multi_auth_test.go b/vendor/golang.org/x/crypto/ssh/test/multi_auth_test.go deleted file mode 100644 index f594d36e..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/multi_auth_test.go +++ /dev/null @@ -1,144 +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. - -// Tests for ssh client multi-auth -// -// These tests run a simple go ssh client against OpenSSH server -// over unix domain sockets. The tests use multiple combinations -// of password, keyboard-interactive and publickey authentication -// methods. -// -// A wrapper library for making sshd PAM authentication use test -// passwords is required in ./sshd_test_pw.so. If the library does -// not exist these tests will be skipped. See compile instructions -// (for linux) in file ./sshd_test_pw.c. - -// +build linux - -package test - -import ( - "fmt" - "strings" - "testing" - - "golang.org/x/crypto/ssh" -) - -// test cases -type multiAuthTestCase struct { - authMethods []string - expectedPasswordCbs int - expectedKbdIntCbs int -} - -// test context -type multiAuthTestCtx struct { - password string - numPasswordCbs int - numKbdIntCbs int -} - -// create test context -func newMultiAuthTestCtx(t *testing.T) *multiAuthTestCtx { - password, err := randomPassword() - if err != nil { - t.Fatalf("Failed to generate random test password: %s", err.Error()) - } - - return &multiAuthTestCtx{ - password: password, - } -} - -// password callback -func (ctx *multiAuthTestCtx) passwordCb() (secret string, err error) { - ctx.numPasswordCbs++ - return ctx.password, nil -} - -// keyboard-interactive callback -func (ctx *multiAuthTestCtx) kbdIntCb(user, instruction string, questions []string, echos []bool) (answers []string, err error) { - if len(questions) == 0 { - return nil, nil - } - - ctx.numKbdIntCbs++ - if len(questions) == 1 { - return []string{ctx.password}, nil - } - - return nil, fmt.Errorf("unsupported keyboard-interactive flow") -} - -// TestMultiAuth runs several subtests for different combinations of password, keyboard-interactive and publickey authentication methods -func TestMultiAuth(t *testing.T) { - testCases := []multiAuthTestCase{ - // Test password,publickey authentication, assert that password callback is called 1 time - multiAuthTestCase{ - authMethods: []string{"password", "publickey"}, - expectedPasswordCbs: 1, - }, - // Test keyboard-interactive,publickey authentication, assert that keyboard-interactive callback is called 1 time - multiAuthTestCase{ - authMethods: []string{"keyboard-interactive", "publickey"}, - expectedKbdIntCbs: 1, - }, - // Test publickey,password authentication, assert that password callback is called 1 time - multiAuthTestCase{ - authMethods: []string{"publickey", "password"}, - expectedPasswordCbs: 1, - }, - // Test publickey,keyboard-interactive authentication, assert that keyboard-interactive callback is called 1 time - multiAuthTestCase{ - authMethods: []string{"publickey", "keyboard-interactive"}, - expectedKbdIntCbs: 1, - }, - // Test password,password authentication, assert that password callback is called 2 times - multiAuthTestCase{ - authMethods: []string{"password", "password"}, - expectedPasswordCbs: 2, - }, - } - - for _, testCase := range testCases { - t.Run(strings.Join(testCase.authMethods, ","), func(t *testing.T) { - ctx := newMultiAuthTestCtx(t) - - server := newServerForConfig(t, "MultiAuth", map[string]string{"AuthMethods": strings.Join(testCase.authMethods, ",")}) - defer server.Shutdown() - - clientConfig := clientConfig() - server.setTestPassword(clientConfig.User, ctx.password) - - publicKeyAuthMethod := clientConfig.Auth[0] - clientConfig.Auth = nil - for _, authMethod := range testCase.authMethods { - switch authMethod { - case "publickey": - clientConfig.Auth = append(clientConfig.Auth, publicKeyAuthMethod) - case "password": - clientConfig.Auth = append(clientConfig.Auth, - ssh.RetryableAuthMethod(ssh.PasswordCallback(ctx.passwordCb), 5)) - case "keyboard-interactive": - clientConfig.Auth = append(clientConfig.Auth, - ssh.RetryableAuthMethod(ssh.KeyboardInteractive(ctx.kbdIntCb), 5)) - default: - t.Fatalf("Unknown authentication method %s", authMethod) - } - } - - conn := server.Dial(clientConfig) - defer conn.Close() - - if ctx.numPasswordCbs != testCase.expectedPasswordCbs { - t.Fatalf("passwordCallback was called %d times, expected %d times", ctx.numPasswordCbs, testCase.expectedPasswordCbs) - } - - if ctx.numKbdIntCbs != testCase.expectedKbdIntCbs { - t.Fatalf("keyboardInteractiveCallback was called %d times, expected %d times", ctx.numKbdIntCbs, testCase.expectedKbdIntCbs) - } - }) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/test/session_test.go b/vendor/golang.org/x/crypto/ssh/test/session_test.go deleted file mode 100644 index 4eb7afde..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/session_test.go +++ /dev/null @@ -1,443 +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. - -// +build !windows - -package test - -// Session functional tests. - -import ( - "bytes" - "errors" - "fmt" - "io" - "strings" - "testing" - - "golang.org/x/crypto/ssh" -) - -func TestRunCommandSuccess(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("session failed: %v", err) - } - defer session.Close() - err = session.Run("true") - if err != nil { - t.Fatalf("session failed: %v", err) - } -} - -func TestHostKeyCheck(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - - conf := clientConfig() - hostDB := hostKeyDB() - conf.HostKeyCallback = hostDB.Check - - // change the keys. - hostDB.keys[ssh.KeyAlgoRSA][25]++ - hostDB.keys[ssh.KeyAlgoDSA][25]++ - hostDB.keys[ssh.KeyAlgoECDSA256][25]++ - - conn, err := server.TryDial(conf) - if err == nil { - conn.Close() - t.Fatalf("dial should have failed.") - } else if !strings.Contains(err.Error(), "host key mismatch") { - t.Fatalf("'host key mismatch' not found in %v", err) - } -} - -func TestRunCommandStdin(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("session failed: %v", err) - } - defer session.Close() - - r, w := io.Pipe() - defer r.Close() - defer w.Close() - session.Stdin = r - - err = session.Run("true") - if err != nil { - t.Fatalf("session failed: %v", err) - } -} - -func TestRunCommandStdinError(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("session failed: %v", err) - } - defer session.Close() - - r, w := io.Pipe() - defer r.Close() - session.Stdin = r - pipeErr := errors.New("closing write end of pipe") - w.CloseWithError(pipeErr) - - err = session.Run("true") - if err != pipeErr { - t.Fatalf("expected %v, found %v", pipeErr, err) - } -} - -func TestRunCommandFailed(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("session failed: %v", err) - } - defer session.Close() - err = session.Run(`bash -c "kill -9 $$"`) - if err == nil { - t.Fatalf("session succeeded: %v", err) - } -} - -func TestRunCommandWeClosed(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("session failed: %v", err) - } - err = session.Shell() - if err != nil { - t.Fatalf("shell failed: %v", err) - } - err = session.Close() - if err != nil { - t.Fatalf("shell failed: %v", err) - } -} - -func TestFuncLargeRead(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("unable to create new session: %s", err) - } - - stdout, err := session.StdoutPipe() - if err != nil { - t.Fatalf("unable to acquire stdout pipe: %s", err) - } - - err = session.Start("dd if=/dev/urandom bs=2048 count=1024") - if err != nil { - t.Fatalf("unable to execute remote command: %s", err) - } - - buf := new(bytes.Buffer) - n, err := io.Copy(buf, stdout) - if err != nil { - t.Fatalf("error reading from remote stdout: %s", err) - } - - if n != 2048*1024 { - t.Fatalf("Expected %d bytes but read only %d from remote command", 2048, n) - } -} - -func TestKeyChange(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conf := clientConfig() - hostDB := hostKeyDB() - conf.HostKeyCallback = hostDB.Check - conf.RekeyThreshold = 1024 - conn := server.Dial(conf) - defer conn.Close() - - for i := 0; i < 4; i++ { - session, err := conn.NewSession() - if err != nil { - t.Fatalf("unable to create new session: %s", err) - } - - stdout, err := session.StdoutPipe() - if err != nil { - t.Fatalf("unable to acquire stdout pipe: %s", err) - } - - err = session.Start("dd if=/dev/urandom bs=1024 count=1") - if err != nil { - t.Fatalf("unable to execute remote command: %s", err) - } - buf := new(bytes.Buffer) - n, err := io.Copy(buf, stdout) - if err != nil { - t.Fatalf("error reading from remote stdout: %s", err) - } - - want := int64(1024) - if n != want { - t.Fatalf("Expected %d bytes but read only %d from remote command", want, n) - } - } - - if changes := hostDB.checkCount; changes < 4 { - t.Errorf("got %d key changes, want 4", changes) - } -} - -func TestInvalidTerminalMode(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("session failed: %v", err) - } - defer session.Close() - - if err = session.RequestPty("vt100", 80, 40, ssh.TerminalModes{255: 1984}); err == nil { - t.Fatalf("req-pty failed: successful request with invalid mode") - } -} - -func TestValidTerminalMode(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("session failed: %v", err) - } - defer session.Close() - - stdout, err := session.StdoutPipe() - if err != nil { - t.Fatalf("unable to acquire stdout pipe: %s", err) - } - - stdin, err := session.StdinPipe() - if err != nil { - t.Fatalf("unable to acquire stdin pipe: %s", err) - } - - tm := ssh.TerminalModes{ssh.ECHO: 0} - if err = session.RequestPty("xterm", 80, 40, tm); err != nil { - t.Fatalf("req-pty failed: %s", err) - } - - err = session.Shell() - if err != nil { - t.Fatalf("session failed: %s", err) - } - - stdin.Write([]byte("stty -a && exit\n")) - - var buf bytes.Buffer - if _, err := io.Copy(&buf, stdout); err != nil { - t.Fatalf("reading failed: %s", err) - } - - if sttyOutput := buf.String(); !strings.Contains(sttyOutput, "-echo ") { - t.Fatalf("terminal mode failure: expected -echo in stty output, got %s", sttyOutput) - } -} - -func TestWindowChange(t *testing.T) { - server := newServer(t) - defer server.Shutdown() - conn := server.Dial(clientConfig()) - defer conn.Close() - - session, err := conn.NewSession() - if err != nil { - t.Fatalf("session failed: %v", err) - } - defer session.Close() - - stdout, err := session.StdoutPipe() - if err != nil { - t.Fatalf("unable to acquire stdout pipe: %s", err) - } - - stdin, err := session.StdinPipe() - if err != nil { - t.Fatalf("unable to acquire stdin pipe: %s", err) - } - - tm := ssh.TerminalModes{ssh.ECHO: 0} - if err = session.RequestPty("xterm", 80, 40, tm); err != nil { - t.Fatalf("req-pty failed: %s", err) - } - - if err := session.WindowChange(100, 100); err != nil { - t.Fatalf("window-change failed: %s", err) - } - - err = session.Shell() - if err != nil { - t.Fatalf("session failed: %s", err) - } - - stdin.Write([]byte("stty size && exit\n")) - - var buf bytes.Buffer - if _, err := io.Copy(&buf, stdout); err != nil { - t.Fatalf("reading failed: %s", err) - } - - if sttyOutput := buf.String(); !strings.Contains(sttyOutput, "100 100") { - t.Fatalf("terminal WindowChange failure: expected \"100 100\" stty output, got %s", sttyOutput) - } -} - -func testOneCipher(t *testing.T, cipher string, cipherOrder []string) { - server := newServer(t) - defer server.Shutdown() - conf := clientConfig() - conf.Ciphers = []string{cipher} - // Don't fail if sshd doesn't have the cipher. - conf.Ciphers = append(conf.Ciphers, cipherOrder...) - conn, err := server.TryDial(conf) - if err != nil { - t.Fatalf("TryDial: %v", err) - } - defer conn.Close() - - numBytes := 4096 - - // Exercise sending data to the server - if _, _, err := conn.Conn.SendRequest("drop-me", false, make([]byte, numBytes)); err != nil { - t.Fatalf("SendRequest: %v", err) - } - - // Exercise receiving data from the server - session, err := conn.NewSession() - if err != nil { - t.Fatalf("NewSession: %v", err) - } - - out, err := session.Output(fmt.Sprintf("dd if=/dev/zero of=/dev/stdout bs=%d count=1", numBytes)) - if err != nil { - t.Fatalf("Output: %v", err) - } - - if len(out) != numBytes { - t.Fatalf("got %d bytes, want %d bytes", len(out), numBytes) - } -} - -var deprecatedCiphers = []string{ - "aes128-cbc", "3des-cbc", - "arcfour128", "arcfour256", -} - -func TestCiphers(t *testing.T) { - var config ssh.Config - config.SetDefaults() - cipherOrder := append(config.Ciphers, deprecatedCiphers...) - - for _, ciph := range cipherOrder { - t.Run(ciph, func(t *testing.T) { - testOneCipher(t, ciph, cipherOrder) - }) - } -} - -func TestMACs(t *testing.T) { - var config ssh.Config - config.SetDefaults() - macOrder := config.MACs - - for _, mac := range macOrder { - server := newServer(t) - defer server.Shutdown() - conf := clientConfig() - conf.MACs = []string{mac} - // Don't fail if sshd doesn't have the MAC. - conf.MACs = append(conf.MACs, macOrder...) - if conn, err := server.TryDial(conf); err == nil { - conn.Close() - } else { - t.Fatalf("failed for MAC %q", mac) - } - } -} - -func TestKeyExchanges(t *testing.T) { - var config ssh.Config - config.SetDefaults() - kexOrder := config.KeyExchanges - for _, kex := range kexOrder { - server := newServer(t) - defer server.Shutdown() - conf := clientConfig() - // Don't fail if sshd doesn't have the kex. - conf.KeyExchanges = append([]string{kex}, kexOrder...) - conn, err := server.TryDial(conf) - if err == nil { - conn.Close() - } else { - t.Errorf("failed for kex %q", kex) - } - } -} - -func TestClientAuthAlgorithms(t *testing.T) { - for _, key := range []string{ - "rsa", - "dsa", - "ecdsa", - "ed25519", - } { - server := newServer(t) - conf := clientConfig() - conf.SetDefaults() - conf.Auth = []ssh.AuthMethod{ - ssh.PublicKeys(testSigners[key]), - } - - conn, err := server.TryDial(conf) - if err == nil { - conn.Close() - } else { - t.Errorf("failed for key %q", key) - } - - server.Shutdown() - } -} diff --git a/vendor/golang.org/x/crypto/ssh/test/sshd_test_pw.c b/vendor/golang.org/x/crypto/ssh/test/sshd_test_pw.c deleted file mode 100644 index 2794a563..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/sshd_test_pw.c +++ /dev/null @@ -1,173 +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. - -// sshd_test_pw.c -// Wrapper to inject test password data for sshd PAM authentication -// -// This wrapper implements custom versions of getpwnam, getpwnam_r, -// getspnam and getspnam_r. These functions first call their real -// libc versions, then check if the requested user matches test user -// specified in env variable TEST_USER and if so replace the password -// with crypted() value of TEST_PASSWD env variable. -// -// Compile: -// gcc -Wall -shared -o sshd_test_pw.so -fPIC sshd_test_pw.c -// -// Compile with debug: -// gcc -DVERBOSE -Wall -shared -o sshd_test_pw.so -fPIC sshd_test_pw.c -// -// Run sshd: -// LD_PRELOAD="sshd_test_pw.so" TEST_USER="..." TEST_PASSWD="..." sshd ... - -// +build ignore - -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include - -#ifdef VERBOSE -#define DEBUG(X...) fprintf(stderr, X) -#else -#define DEBUG(X...) while (0) { } -#endif - -/* crypt() password */ -static char * -pwhash(char *passwd) { - return strdup(crypt(passwd, "$6$")); -} - -/* Pointers to real functions in libc */ -static struct passwd * (*real_getpwnam)(const char *) = NULL; -static int (*real_getpwnam_r)(const char *, struct passwd *, char *, size_t, struct passwd **) = NULL; -static struct spwd * (*real_getspnam)(const char *) = NULL; -static int (*real_getspnam_r)(const char *, struct spwd *, char *, size_t, struct spwd **) = NULL; - -/* Cached test user and test password */ -static char *test_user = NULL; -static char *test_passwd_hash = NULL; - -static void -init(void) { - /* Fetch real libc function pointers */ - real_getpwnam = dlsym(RTLD_NEXT, "getpwnam"); - real_getpwnam_r = dlsym(RTLD_NEXT, "getpwnam_r"); - real_getspnam = dlsym(RTLD_NEXT, "getspnam"); - real_getspnam_r = dlsym(RTLD_NEXT, "getspnam_r"); - - /* abort if env variables are not defined */ - if (getenv("TEST_USER") == NULL || getenv("TEST_PASSWD") == NULL) { - fprintf(stderr, "env variables TEST_USER and TEST_PASSWD are missing\n"); - abort(); - } - - /* Fetch test user and test password from env */ - test_user = strdup(getenv("TEST_USER")); - test_passwd_hash = pwhash(getenv("TEST_PASSWD")); - - DEBUG("sshd_test_pw init():\n"); - DEBUG("\treal_getpwnam: %p\n", real_getpwnam); - DEBUG("\treal_getpwnam_r: %p\n", real_getpwnam_r); - DEBUG("\treal_getspnam: %p\n", real_getspnam); - DEBUG("\treal_getspnam_r: %p\n", real_getspnam_r); - DEBUG("\tTEST_USER: '%s'\n", test_user); - DEBUG("\tTEST_PASSWD: '%s'\n", getenv("TEST_PASSWD")); - DEBUG("\tTEST_PASSWD_HASH: '%s'\n", test_passwd_hash); -} - -static int -is_test_user(const char *name) { - if (test_user != NULL && strcmp(test_user, name) == 0) - return 1; - return 0; -} - -/* getpwnam */ - -struct passwd * -getpwnam(const char *name) { - struct passwd *pw; - - DEBUG("sshd_test_pw getpwnam(%s)\n", name); - - if (real_getpwnam == NULL) - init(); - if ((pw = real_getpwnam(name)) == NULL) - return NULL; - - if (is_test_user(name)) - pw->pw_passwd = strdup(test_passwd_hash); - - return pw; -} - -/* getpwnam_r */ - -int -getpwnam_r(const char *name, - struct passwd *pwd, - char *buf, - size_t buflen, - struct passwd **result) { - int r; - - DEBUG("sshd_test_pw getpwnam_r(%s)\n", name); - - if (real_getpwnam_r == NULL) - init(); - if ((r = real_getpwnam_r(name, pwd, buf, buflen, result)) != 0 || *result == NULL) - return r; - - if (is_test_user(name)) - pwd->pw_passwd = strdup(test_passwd_hash); - - return 0; -} - -/* getspnam */ - -struct spwd * -getspnam(const char *name) { - struct spwd *sp; - - DEBUG("sshd_test_pw getspnam(%s)\n", name); - - if (real_getspnam == NULL) - init(); - if ((sp = real_getspnam(name)) == NULL) - return NULL; - - if (is_test_user(name)) - sp->sp_pwdp = strdup(test_passwd_hash); - - return sp; -} - -/* getspnam_r */ - -int -getspnam_r(const char *name, - struct spwd *spbuf, - char *buf, - size_t buflen, - struct spwd **spbufp) { - int r; - - DEBUG("sshd_test_pw getspnam_r(%s)\n", name); - - if (real_getspnam_r == NULL) - init(); - if ((r = real_getspnam_r(name, spbuf, buf, buflen, spbufp)) != 0) - return r; - - if (is_test_user(name)) - spbuf->sp_pwdp = strdup(test_passwd_hash); - - return r; -} diff --git a/vendor/golang.org/x/crypto/ssh/test/test_unix_test.go b/vendor/golang.org/x/crypto/ssh/test/test_unix_test.go deleted file mode 100644 index 39607868..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/test_unix_test.go +++ /dev/null @@ -1,361 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd plan9 - -package test - -// functional test harness for unix. - -import ( - "bytes" - "crypto/rand" - "encoding/base64" - "fmt" - "io/ioutil" - "log" - "net" - "os" - "os/exec" - "os/user" - "path/filepath" - "testing" - "text/template" - - "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/testdata" -) - -const ( - defaultSshdConfig = ` -Protocol 2 -Banner {{.Dir}}/banner -HostKey {{.Dir}}/id_rsa -HostKey {{.Dir}}/id_dsa -HostKey {{.Dir}}/id_ecdsa -HostCertificate {{.Dir}}/id_rsa-cert.pub -Pidfile {{.Dir}}/sshd.pid -#UsePrivilegeSeparation no -KeyRegenerationInterval 3600 -ServerKeyBits 768 -SyslogFacility AUTH -LogLevel DEBUG2 -LoginGraceTime 120 -PermitRootLogin no -StrictModes no -RSAAuthentication yes -PubkeyAuthentication yes -AuthorizedKeysFile {{.Dir}}/authorized_keys -TrustedUserCAKeys {{.Dir}}/id_ecdsa.pub -IgnoreRhosts yes -RhostsRSAAuthentication no -HostbasedAuthentication no -PubkeyAcceptedKeyTypes=* -` - multiAuthSshdConfigTail = ` -UsePAM yes -PasswordAuthentication yes -ChallengeResponseAuthentication yes -AuthenticationMethods {{.AuthMethods}} -` -) - -var configTmpl = map[string]*template.Template{ - "default": template.Must(template.New("").Parse(defaultSshdConfig)), - "MultiAuth": template.Must(template.New("").Parse(defaultSshdConfig + multiAuthSshdConfigTail))} - -type server struct { - t *testing.T - cleanup func() // executed during Shutdown - configfile string - cmd *exec.Cmd - output bytes.Buffer // holds stderr from sshd process - - testUser string // test username for sshd - testPasswd string // test password for sshd - sshdTestPwSo string // dynamic library to inject a custom password into sshd - - // Client half of the network connection. - clientConn net.Conn -} - -func username() string { - var username string - if user, err := user.Current(); err == nil { - username = user.Username - } else { - // user.Current() currently requires cgo. If an error is - // returned attempt to get the username from the environment. - log.Printf("user.Current: %v; falling back on $USER", err) - username = os.Getenv("USER") - } - if username == "" { - panic("Unable to get username") - } - return username -} - -type storedHostKey struct { - // keys map from an algorithm string to binary key data. - keys map[string][]byte - - // checkCount counts the Check calls. Used for testing - // rekeying. - checkCount int -} - -func (k *storedHostKey) Add(key ssh.PublicKey) { - if k.keys == nil { - k.keys = map[string][]byte{} - } - k.keys[key.Type()] = key.Marshal() -} - -func (k *storedHostKey) Check(addr string, remote net.Addr, key ssh.PublicKey) error { - k.checkCount++ - algo := key.Type() - - if k.keys == nil || bytes.Compare(key.Marshal(), k.keys[algo]) != 0 { - return fmt.Errorf("host key mismatch. Got %q, want %q", key, k.keys[algo]) - } - return nil -} - -func hostKeyDB() *storedHostKey { - keyChecker := &storedHostKey{} - keyChecker.Add(testPublicKeys["ecdsa"]) - keyChecker.Add(testPublicKeys["rsa"]) - keyChecker.Add(testPublicKeys["dsa"]) - return keyChecker -} - -func clientConfig() *ssh.ClientConfig { - config := &ssh.ClientConfig{ - User: username(), - Auth: []ssh.AuthMethod{ - ssh.PublicKeys(testSigners["user"]), - }, - HostKeyCallback: hostKeyDB().Check, - HostKeyAlgorithms: []string{ // by default, don't allow certs as this affects the hostKeyDB checker - ssh.KeyAlgoECDSA256, ssh.KeyAlgoECDSA384, ssh.KeyAlgoECDSA521, - ssh.KeyAlgoRSA, ssh.KeyAlgoDSA, - ssh.KeyAlgoED25519, - }, - } - return config -} - -// unixConnection creates two halves of a connected net.UnixConn. It -// is used for connecting the Go SSH client with sshd without opening -// ports. -func unixConnection() (*net.UnixConn, *net.UnixConn, error) { - dir, err := ioutil.TempDir("", "unixConnection") - if err != nil { - return nil, nil, err - } - defer os.Remove(dir) - - addr := filepath.Join(dir, "ssh") - listener, err := net.Listen("unix", addr) - if err != nil { - return nil, nil, err - } - defer listener.Close() - c1, err := net.Dial("unix", addr) - if err != nil { - return nil, nil, err - } - - c2, err := listener.Accept() - if err != nil { - c1.Close() - return nil, nil, err - } - - return c1.(*net.UnixConn), c2.(*net.UnixConn), nil -} - -func (s *server) TryDial(config *ssh.ClientConfig) (*ssh.Client, error) { - return s.TryDialWithAddr(config, "") -} - -// addr is the user specified host:port. While we don't actually dial it, -// we need to know this for host key matching -func (s *server) TryDialWithAddr(config *ssh.ClientConfig, addr string) (*ssh.Client, error) { - sshd, err := exec.LookPath("sshd") - if err != nil { - s.t.Skipf("skipping test: %v", err) - } - - c1, c2, err := unixConnection() - if err != nil { - s.t.Fatalf("unixConnection: %v", err) - } - - s.cmd = exec.Command(sshd, "-f", s.configfile, "-i", "-e") - f, err := c2.File() - if err != nil { - s.t.Fatalf("UnixConn.File: %v", err) - } - defer f.Close() - s.cmd.Stdin = f - s.cmd.Stdout = f - s.cmd.Stderr = &s.output - - if s.sshdTestPwSo != "" { - if s.testUser == "" { - s.t.Fatal("user missing from sshd_test_pw.so config") - } - if s.testPasswd == "" { - s.t.Fatal("password missing from sshd_test_pw.so config") - } - s.cmd.Env = append(os.Environ(), - fmt.Sprintf("LD_PRELOAD=%s", s.sshdTestPwSo), - fmt.Sprintf("TEST_USER=%s", s.testUser), - fmt.Sprintf("TEST_PASSWD=%s", s.testPasswd)) - } - - if err := s.cmd.Start(); err != nil { - s.t.Fail() - s.Shutdown() - s.t.Fatalf("s.cmd.Start: %v", err) - } - s.clientConn = c1 - conn, chans, reqs, err := ssh.NewClientConn(c1, addr, config) - if err != nil { - return nil, err - } - return ssh.NewClient(conn, chans, reqs), nil -} - -func (s *server) Dial(config *ssh.ClientConfig) *ssh.Client { - conn, err := s.TryDial(config) - if err != nil { - s.t.Fail() - s.Shutdown() - s.t.Fatalf("ssh.Client: %v", err) - } - return conn -} - -func (s *server) Shutdown() { - if s.cmd != nil && s.cmd.Process != nil { - // Don't check for errors; if it fails it's most - // likely "os: process already finished", and we don't - // care about that. Use os.Interrupt, so child - // processes are killed too. - s.cmd.Process.Signal(os.Interrupt) - s.cmd.Wait() - } - if s.t.Failed() { - // log any output from sshd process - s.t.Logf("sshd: %s", s.output.String()) - } - s.cleanup() -} - -func writeFile(path string, contents []byte) { - f, err := os.OpenFile(path, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0600) - if err != nil { - panic(err) - } - defer f.Close() - if _, err := f.Write(contents); err != nil { - panic(err) - } -} - -// generate random password -func randomPassword() (string, error) { - b := make([]byte, 12) - _, err := rand.Read(b) - if err != nil { - return "", err - } - return base64.RawURLEncoding.EncodeToString(b), nil -} - -// setTestPassword is used for setting user and password data for sshd_test_pw.so -// This function also checks that ./sshd_test_pw.so exists and if not calls s.t.Skip() -func (s *server) setTestPassword(user, passwd string) error { - wd, _ := os.Getwd() - wrapper := filepath.Join(wd, "sshd_test_pw.so") - if _, err := os.Stat(wrapper); err != nil { - s.t.Skip(fmt.Errorf("sshd_test_pw.so is not available")) - return err - } - - s.sshdTestPwSo = wrapper - s.testUser = user - s.testPasswd = passwd - return nil -} - -// newServer returns a new mock ssh server. -func newServer(t *testing.T) *server { - return newServerForConfig(t, "default", map[string]string{}) -} - -// newServerForConfig returns a new mock ssh server. -func newServerForConfig(t *testing.T, config string, configVars map[string]string) *server { - if testing.Short() { - t.Skip("skipping test due to -short") - } - dir, err := ioutil.TempDir("", "sshtest") - if err != nil { - t.Fatal(err) - } - f, err := os.Create(filepath.Join(dir, "sshd_config")) - if err != nil { - t.Fatal(err) - } - if _, ok := configTmpl[config]; ok == false { - t.Fatal(fmt.Errorf("Invalid server config '%s'", config)) - } - configVars["Dir"] = dir - err = configTmpl[config].Execute(f, configVars) - if err != nil { - t.Fatal(err) - } - f.Close() - - writeFile(filepath.Join(dir, "banner"), []byte("Server Banner")) - - for k, v := range testdata.PEMBytes { - filename := "id_" + k - writeFile(filepath.Join(dir, filename), v) - writeFile(filepath.Join(dir, filename+".pub"), ssh.MarshalAuthorizedKey(testPublicKeys[k])) - } - - for k, v := range testdata.SSHCertificates { - filename := "id_" + k + "-cert.pub" - writeFile(filepath.Join(dir, filename), v) - } - - var authkeys bytes.Buffer - for k := range testdata.PEMBytes { - authkeys.Write(ssh.MarshalAuthorizedKey(testPublicKeys[k])) - } - writeFile(filepath.Join(dir, "authorized_keys"), authkeys.Bytes()) - - return &server{ - t: t, - configfile: f.Name(), - cleanup: func() { - if err := os.RemoveAll(dir); err != nil { - t.Error(err) - } - }, - } -} - -func newTempSocket(t *testing.T) (string, func()) { - dir, err := ioutil.TempDir("", "socket") - if err != nil { - t.Fatal(err) - } - deferFunc := func() { os.RemoveAll(dir) } - addr := filepath.Join(dir, "sock") - return addr, deferFunc -} diff --git a/vendor/golang.org/x/crypto/ssh/test/testdata_test.go b/vendor/golang.org/x/crypto/ssh/test/testdata_test.go deleted file mode 100644 index a053f67e..00000000 --- a/vendor/golang.org/x/crypto/ssh/test/testdata_test.go +++ /dev/null @@ -1,64 +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. - -// IMPLEMENTATION NOTE: To avoid a package loop, this file is in three places: -// ssh/, ssh/agent, and ssh/test/. It should be kept in sync across all three -// instances. - -package test - -import ( - "crypto/rand" - "fmt" - - "golang.org/x/crypto/ssh" - "golang.org/x/crypto/ssh/testdata" -) - -var ( - testPrivateKeys map[string]interface{} - testSigners map[string]ssh.Signer - testPublicKeys map[string]ssh.PublicKey -) - -func init() { - var err error - - n := len(testdata.PEMBytes) - testPrivateKeys = make(map[string]interface{}, n) - testSigners = make(map[string]ssh.Signer, n) - testPublicKeys = make(map[string]ssh.PublicKey, n) - for t, k := range testdata.PEMBytes { - testPrivateKeys[t], err = ssh.ParseRawPrivateKey(k) - if err != nil { - panic(fmt.Sprintf("Unable to parse test key %s: %v", t, err)) - } - testSigners[t], err = ssh.NewSignerFromKey(testPrivateKeys[t]) - if err != nil { - panic(fmt.Sprintf("Unable to create signer for test key %s: %v", t, err)) - } - testPublicKeys[t] = testSigners[t].PublicKey() - } - - // Create a cert and sign it for use in tests. - testCert := &ssh.Certificate{ - Nonce: []byte{}, // To pass reflect.DeepEqual after marshal & parse, this must be non-nil - ValidPrincipals: []string{"gopher1", "gopher2"}, // increases test coverage - ValidAfter: 0, // unix epoch - ValidBefore: ssh.CertTimeInfinity, // The end of currently representable time. - Reserved: []byte{}, // To pass reflect.DeepEqual after marshal & parse, this must be non-nil - Key: testPublicKeys["ecdsa"], - SignatureKey: testPublicKeys["rsa"], - Permissions: ssh.Permissions{ - CriticalOptions: map[string]string{}, - Extensions: map[string]string{}, - }, - } - testCert.SignCert(rand.Reader, testSigners["rsa"]) - testPrivateKeys["cert"] = testPrivateKeys["ecdsa"] - testSigners["cert"], err = ssh.NewCertSigner(testCert, testSigners["ecdsa"]) - if err != nil { - panic(fmt.Sprintf("Unable to create certificate signer: %v", err)) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/testdata/doc.go b/vendor/golang.org/x/crypto/ssh/testdata/doc.go deleted file mode 100644 index fcae47ca..00000000 --- a/vendor/golang.org/x/crypto/ssh/testdata/doc.go +++ /dev/null @@ -1,8 +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. - -// This package contains test data shared between the various subpackages of -// the golang.org/x/crypto/ssh package. Under no circumstance should -// this data be used for production code. -package testdata // import "golang.org/x/crypto/ssh/testdata" diff --git a/vendor/golang.org/x/crypto/ssh/testdata/keys.go b/vendor/golang.org/x/crypto/ssh/testdata/keys.go deleted file mode 100644 index 521b6be9..00000000 --- a/vendor/golang.org/x/crypto/ssh/testdata/keys.go +++ /dev/null @@ -1,198 +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 testdata - -var PEMBytes = map[string][]byte{ - "dsa": []byte(`-----BEGIN DSA PRIVATE KEY----- -MIIBuwIBAAKBgQD6PDSEyXiI9jfNs97WuM46MSDCYlOqWw80ajN16AohtBncs1YB -lHk//dQOvCYOsYaE+gNix2jtoRjwXhDsc25/IqQbU1ahb7mB8/rsaILRGIbA5WH3 -EgFtJmXFovDz3if6F6TzvhFpHgJRmLYVR8cqsezL3hEZOvvs2iH7MorkxwIVAJHD -nD82+lxh2fb4PMsIiaXudAsBAoGAQRf7Q/iaPRn43ZquUhd6WwvirqUj+tkIu6eV -2nZWYmXLlqFQKEy4Tejl7Wkyzr2OSYvbXLzo7TNxLKoWor6ips0phYPPMyXld14r -juhT24CrhOzuLMhDduMDi032wDIZG4Y+K7ElU8Oufn8Sj5Wge8r6ANmmVgmFfynr -FhdYCngCgYEA3ucGJ93/Mx4q4eKRDxcWD3QzWyqpbRVRRV1Vmih9Ha/qC994nJFz -DQIdjxDIT2Rk2AGzMqFEB68Zc3O+Wcsmz5eWWzEwFxaTwOGWTyDqsDRLm3fD+QYj -nOwuxb0Kce+gWI8voWcqC9cyRm09jGzu2Ab3Bhtpg8JJ8L7gS3MRZK4CFEx4UAfY -Fmsr0W6fHB9nhS4/UXM8 ------END DSA PRIVATE KEY----- -`), - "ecdsa": []byte(`-----BEGIN EC PRIVATE KEY----- -MHcCAQEEINGWx0zo6fhJ/0EAfrPzVFyFC9s18lBt3cRoEDhS3ARooAoGCCqGSM49 -AwEHoUQDQgAEi9Hdw6KvZcWxfg2IDhA7UkpDtzzt6ZqJXSsFdLd+Kx4S3Sx4cVO+ -6/ZOXRnPmNAlLUqjShUsUBBngG0u2fqEqA== ------END EC PRIVATE KEY----- -`), - "ecdsap256": []byte(`-----BEGIN EC PRIVATE KEY----- -MHcCAQEEIAPCE25zK0PQSnsgVcEbM1mbKTASH4pqb5QJajplDwDZoAoGCCqGSM49 -AwEHoUQDQgAEWy8TxGcIHRh5XGpO4dFVfDjeNY+VkgubQrf/eyFJZHxAn1SKraXU -qJUjTKj1z622OxYtJ5P7s9CfAEVsTzLCzg== ------END EC PRIVATE KEY----- -`), - "ecdsap384": []byte(`-----BEGIN EC PRIVATE KEY----- -MIGkAgEBBDBWfSnMuNKq8J9rQLzzEkx3KAoEohSXqhE/4CdjEYtoU2i22HW80DDS -qQhYNHRAduygBwYFK4EEACKhZANiAAQWaDMAd0HUd8ZiXCX7mYDDnC54gwH/nG43 -VhCUEYmF7HMZm/B9Yn3GjFk3qYEDEvuF/52+NvUKBKKaLbh32AWxMv0ibcoba4cz -hL9+hWYhUD9XIUlzMWiZ2y6eBE9PdRI= ------END EC PRIVATE KEY----- -`), - "ecdsap521": []byte(`-----BEGIN EC PRIVATE KEY----- -MIHcAgEBBEIBrkYpQcy8KTVHNiAkjlFZwee90224Bu6wz94R4OBo+Ts0eoAQG7SF -iaygEDMUbx6kTgXTBcKZ0jrWPKakayNZ/kigBwYFK4EEACOhgYkDgYYABADFuvLV -UoaCDGHcw5uNfdRIsvaLKuWSpLsl48eWGZAwdNG432GDVKduO+pceuE+8XzcyJb+ -uMv+D2b11Q/LQUcHJwE6fqbm8m3EtDKPsoKs0u/XUJb0JsH4J8lkZzbUTjvGYamn -FFlRjzoB3Oxu8UQgb+MWPedtH9XYBbg9biz4jJLkXQ== ------END EC PRIVATE KEY----- -`), - "rsa": []byte(`-----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQC8A6FGHDiWCSREAXCq6yBfNVr0xCVG2CzvktFNRpue+RXrGs/2 -a6ySEJQb3IYquw7HlJgu6fg3WIWhOmHCjfpG0PrL4CRwbqQ2LaPPXhJErWYejcD8 -Di00cF3677+G10KMZk9RXbmHtuBFZT98wxg8j+ZsBMqGM1+7yrWUvynswQIDAQAB -AoGAJMCk5vqfSRzyXOTXLGIYCuR4Kj6pdsbNSeuuRGfYBeR1F2c/XdFAg7D/8s5R -38p/Ih52/Ty5S8BfJtwtvgVY9ecf/JlU/rl/QzhG8/8KC0NG7KsyXklbQ7gJT8UT -Ojmw5QpMk+rKv17ipDVkQQmPaj+gJXYNAHqImke5mm/K/h0CQQDciPmviQ+DOhOq -2ZBqUfH8oXHgFmp7/6pXw80DpMIxgV3CwkxxIVx6a8lVH9bT/AFySJ6vXq4zTuV9 -6QmZcZzDAkEA2j/UXJPIs1fQ8z/6sONOkU/BjtoePFIWJlRxdN35cZjXnBraX5UR -fFHkePv4YwqmXNqrBOvSu+w2WdSDci+IKwJAcsPRc/jWmsrJW1q3Ha0hSf/WG/Bu -X7MPuXaKpP/DkzGoUmb8ks7yqj6XWnYkPNLjCc8izU5vRwIiyWBRf4mxMwJBAILa -NDvRS0rjwt6lJGv7zPZoqDc65VfrK2aNyHx2PgFyzwrEOtuF57bu7pnvEIxpLTeM -z26i6XVMeYXAWZMTloMCQBbpGgEERQpeUknLBqUHhg/wXF6+lFA+vEGnkY+Dwab2 -KCXFGd+SQ5GdUcEMe9isUH6DYj/6/yCDoFrXXmpQb+M= ------END RSA PRIVATE KEY----- -`), - "ed25519": []byte(`-----BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW -QyNTUxOQAAACA+3f7hS7g5UWwXOGVTrMfhmxyrjqz7Sxxbx7I1j8DvvwAAAJhAFfkOQBX5 -DgAAAAtzc2gtZWQyNTUxOQAAACA+3f7hS7g5UWwXOGVTrMfhmxyrjqz7Sxxbx7I1j8Dvvw -AAAEAaYmXltfW6nhRo3iWGglRB48lYq0z0Q3I3KyrdutEr6j7d/uFLuDlRbBc4ZVOsx+Gb -HKuOrPtLHFvHsjWPwO+/AAAAE2dhcnRvbm1AZ2FydG9ubS14cHMBAg== ------END OPENSSH PRIVATE KEY----- -`), - "rsa-openssh-format": []byte(`-----BEGIN OPENSSH PRIVATE KEY----- -b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAlwAAAAdzc2gtcn -NhAAAAAwEAAQAAAIEAwa48yfWFi3uIdqzuf9X7C2Zxfea/Iaaw0zIwHudpF8U92WVIiC5l -oEuW1+OaVi3UWfIEjWMV1tHGysrHOwtwc34BPCJqJknUQO/KtDTBTJ4Pryhw1bWPC999Lz -a+yrCTdNQYBzoROXKExZgPFh9pTMi5wqpHDuOQ2qZFIEI3lT0AAAIQWL0H31i9B98AAAAH -c3NoLXJzYQAAAIEAwa48yfWFi3uIdqzuf9X7C2Zxfea/Iaaw0zIwHudpF8U92WVIiC5loE -uW1+OaVi3UWfIEjWMV1tHGysrHOwtwc34BPCJqJknUQO/KtDTBTJ4Pryhw1bWPC999Lza+ -yrCTdNQYBzoROXKExZgPFh9pTMi5wqpHDuOQ2qZFIEI3lT0AAAADAQABAAAAgCThyTGsT4 -IARDxVMhWl6eiB2ZrgFgWSeJm/NOqtppWgOebsIqPMMg4UVuVFsl422/lE3RkPhVkjGXgE -pWvZAdCnmLmApK8wK12vF334lZhZT7t3Z9EzJps88PWEHo7kguf285HcnUM7FlFeissJdk -kXly34y7/3X/a6Tclm+iABAAAAQE0xR/KxZ39slwfMv64Rz7WKk1PPskaryI29aHE3mKHk -pY2QA+P3QlrKxT/VWUMjHUbNNdYfJm48xu0SGNMRdKMAAABBAORh2NP/06JUV3J9W/2Hju -X1ViJuqqcQnJPVzpgSL826EC2xwOECTqoY8uvFpUdD7CtpksIxNVqRIhuNOlz0lqEAAABB -ANkaHTTaPojClO0dKJ/Zjs7pWOCGliebBYprQ/Y4r9QLBkC/XaWMS26gFIrjgC7D2Rv+rZ -wSD0v0RcmkITP1ZR0AAAAYcHF1ZXJuYUBMdWNreUh5ZHJvLmxvY2FsAQID ------END OPENSSH PRIVATE KEY-----`), - "user": []byte(`-----BEGIN EC PRIVATE KEY----- -MHcCAQEEILYCAeq8f7V4vSSypRw7pxy8yz3V5W4qg8kSC3zJhqpQoAoGCCqGSM49 -AwEHoUQDQgAEYcO2xNKiRUYOLEHM7VYAp57HNyKbOdYtHD83Z4hzNPVC4tM5mdGD -PLL8IEwvYu2wq+lpXfGQnNMbzYf9gspG0w== ------END EC PRIVATE KEY----- -`), - "ca": []byte(`-----BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAvg9dQ9IRG59lYJb+GESfKWTch4yBpr7Ydw1jkK6vvtrx9jLo -5hkA8X6+ElRPRqTAZSlN5cBm6YCAcQIOsmXDUn6Oj1lVPQAoOjTBTvsjM3NjGhvv -52kHTY0nsMsBeY9q5DTtlzmlYkVUq2a6Htgf2mNi01dIw5fJ7uTTo8EbNf7O0i3u -c9a8P19HaZl5NKiWN4EIZkfB2WdXYRJCVBsGgQj3dE/GrEmH9QINq1A+GkNvK96u -vZm8H1jjmuqzHplWa7lFeXcx8FTVTbVb/iJrZ2Lc/JvIPitKZWhqbR59yrGjpwEp -Id7bo4WhO5L3OB0fSIJYvfu+o4WYnt4f3UzecwIDAQABAoIBABRD9yHgKErVuC2Q -bA+SYZY8VvdtF/X7q4EmQFORDNRA7EPgMc03JU6awRGbQ8i4kHs46EFzPoXvWcKz -AXYsO6N0Myc900Tp22A5d9NAHATEbPC/wdje7hRq1KyZONMJY9BphFv3nZbY5apR -Dc90JBFZP5RhXjTc3n9GjvqLAKfFEKVmPRCvqxCOZunw6XR+SgIQLJo36nsIsbhW -QUXIVaCI6cXMN8bRPm8EITdBNZu06Fpu4ZHm6VaxlXN9smERCDkgBSNXNWHKxmmA -c3Glo2DByUr2/JFBOrLEe9fkYgr24KNCQkHVcSaFxEcZvTggr7StjKISVHlCNEaB -7Q+kPoECgYEA3zE9FmvFGoQCU4g4Nl3dpQHs6kaAW8vJlrmq3xsireIuaJoa2HMe -wYdIvgCnK9DIjyxd5OWnE4jXtAEYPsyGD32B5rSLQrRO96lgb3f4bESCLUb3Bsn/ -sdgeE3p1xZMA0B59htqCrvVgN9k8WxyevBxYl3/gSBm/p8OVH1RTW/ECgYEA2f9Z -95OLj0KQHQtxQXf+I3VjhCw3LkLW39QZOXVI0QrCJfqqP7uxsJXH9NYX0l0GFTcR -kRrlyoaSU1EGQosZh+n1MvplGBTkTSV47/bPsTzFpgK2NfEZuFm9RoWgltS+nYeH -Y2k4mnAN3PhReCMwuprmJz8GRLsO3Cs2s2YylKMCgYEA2UX+uO/q7jgqZ5UJW+ue -1H5+W0aMuFA3i7JtZEnvRaUVFqFGlwXin/WJ2+WY1++k/rPrJ+Rk9IBXtBUIvEGw -FC5TIfsKQsJyyWgqx/jbbtJ2g4s8+W/1qfTAuqeRNOg5d2DnRDs90wJuS4//0JaY -9HkHyVwkQyxFxhSA/AHEMJECgYA2MvyFR1O9bIk0D3I7GsA+xKLXa77Ua53MzIjw -9i4CezBGDQpjCiFli/fI8am+jY5DnAtsDknvjoG24UAzLy5L0mk6IXMdB6SzYYut -7ak5oahqW+Y9hxIj+XvLmtGQbphtxhJtLu35x75KoBpxSh6FZpmuTEccs31AVCYn -eFM/DQKBgQDOPUwbLKqVi6ddFGgrV9MrWw+SWsDa43bPuyvYppMM3oqesvyaX1Dt -qDvN7owaNxNM4OnfKcZr91z8YPVCFo4RbBif3DXRzjNNBlxEjHBtuMOikwvsmucN -vIrbeEpjTiUMTEAr6PoTiVHjsfS8WAM6MDlF5M+2PNswDsBpa2yLgA== ------END RSA PRIVATE KEY----- -`), -} - -var SSHCertificates = map[string][]byte{ - // The following are corresponding certificates for the private keys above, signed by the CA key - // Generated by the following commands: - // - // 1. Assumes "rsa" key above in file named "rsa", write out the public key to "rsa.pub": - // ssh-keygen -y -f rsa > rsa.pu - // - // 2. Assumes "ca" key above in file named "ca", sign a cert for "rsa.pub": - // ssh-keygen -s ca -h -n host.example.com -V +500w -I host.example.com-key rsa.pub - "rsa": []byte(`ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgLjYqmmuTSEmjVhSfLQphBSTJMLwIZhRgmpn8FHKLiEIAAAADAQABAAAAgQC8A6FGHDiWCSREAXCq6yBfNVr0xCVG2CzvktFNRpue+RXrGs/2a6ySEJQb3IYquw7HlJgu6fg3WIWhOmHCjfpG0PrL4CRwbqQ2LaPPXhJErWYejcD8Di00cF3677+G10KMZk9RXbmHtuBFZT98wxg8j+ZsBMqGM1+7yrWUvynswQAAAAAAAAAAAAAAAgAAABRob3N0LmV4YW1wbGUuY29tLWtleQAAABQAAAAQaG9zdC5leGFtcGxlLmNvbQAAAABZHN8UAAAAAGsjIYUAAAAAAAAAAAAAAAAAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQC+D11D0hEbn2Vglv4YRJ8pZNyHjIGmvth3DWOQrq++2vH2MujmGQDxfr4SVE9GpMBlKU3lwGbpgIBxAg6yZcNSfo6PWVU9ACg6NMFO+yMzc2MaG+/naQdNjSewywF5j2rkNO2XOaViRVSrZroe2B/aY2LTV0jDl8nu5NOjwRs1/s7SLe5z1rw/X0dpmXk0qJY3gQhmR8HZZ1dhEkJUGwaBCPd0T8asSYf1Ag2rUD4aQ28r3q69mbwfWOOa6rMemVZruUV5dzHwVNVNtVv+ImtnYtz8m8g+K0plaGptHn3KsaOnASkh3tujhaE7kvc4HR9Igli9+76jhZie3h/dTN5zAAABDwAAAAdzc2gtcnNhAAABALeDea+60H6xJGhktAyosHaSY7AYzLocaqd8hJQjEIDifBwzoTlnBmcK9CxGhKuaoJFThdCLdaevCeOSuquh8HTkf+2ebZZc/G5T+2thPvPqmcuEcmMosWo+SIjYhbP3S6KD49aLC1X0kz8IBQeauFvURhkZ5ZjhA1L4aQYt9NjL73nqOl8PplRui+Ov5w8b4ldul4zOvYAFrzfcP6wnnXk3c1Zzwwf5wynD5jakO8GpYKBuhM7Z4crzkKSQjU3hla7xqgfomC5Gz4XbR2TNjcQiRrJQ0UlKtX3X3ObRCEhuvG0Kzjklhv+Ddw6txrhKjMjiSi/Yyius/AE8TmC1p4U= host.example.com -`), -} - -var PEMEncryptedKeys = []struct { - Name string - EncryptionKey string - PEMBytes []byte -}{ - 0: { - Name: "rsa-encrypted", - EncryptionKey: "r54-G0pher_t3st$", - PEMBytes: []byte(`-----BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: AES-128-CBC,3E1714DE130BC5E81327F36564B05462 - -MqW88sud4fnWk/Jk3fkjh7ydu51ZkHLN5qlQgA4SkAXORPPMj2XvqZOv1v2LOgUV -dUevUn8PZK7a9zbZg4QShUSzwE5k6wdB7XKPyBgI39mJ79GBd2U4W3h6KT6jIdWA -goQpluxkrzr2/X602IaxLEre97FT9mpKC6zxKCLvyFWVIP9n3OSFS47cTTXyFr+l -7PdRhe60nn6jSBgUNk/Q1lAvEQ9fufdPwDYY93F1wyJ6lOr0F1+mzRrMbH67NyKs -rG8J1Fa7cIIre7ueKIAXTIne7OAWqpU9UDgQatDtZTbvA7ciqGsSFgiwwW13N+Rr -hN8MkODKs9cjtONxSKi05s206A3NDU6STtZ3KuPDjFE1gMJODotOuqSM+cxKfyFq -wxpk/CHYCDdMAVBSwxb/vraOHamylL4uCHpJdBHypzf2HABt+lS8Su23uAmL87DR -yvyCS/lmpuNTndef6qHPRkoW2EV3xqD3ovosGf7kgwGJUk2ZpCLVteqmYehKlZDK -r/Jy+J26ooI2jIg9bjvD1PZq+Mv+2dQ1RlDrPG3PB+rEixw6vBaL9x3jatCd4ej7 -XG7lb3qO9xFpLsx89tkEcvpGR+broSpUJ6Mu5LBCVmrvqHjvnDhrZVz1brMiQtU9 -iMZbgXqDLXHd6ERWygk7OTU03u+l1gs+KGMfmS0h0ZYw6KGVLgMnsoxqd6cFSKNB -8Ohk9ZTZGCiovlXBUepyu8wKat1k8YlHSfIHoRUJRhhcd7DrmojC+bcbMIZBU22T -Pl2ftVRGtcQY23lYd0NNKfebF7ncjuLWQGy+vZW+7cgfI6wPIbfYfP6g7QAutk6W -KQx0AoX5woZ6cNxtpIrymaVjSMRRBkKQrJKmRp3pC/lul5E5P2cueMs1fj4OHTbJ -lAUv88ywr+R+mRgYQlFW/XQ653f6DT4t6+njfO9oBcPrQDASZel3LjXLpjjYG/N5 -+BWnVexuJX9ika8HJiFl55oqaKb+WknfNhk5cPY+x7SDV9ywQeMiDZpr0ffeYAEP -LlwwiWRDYpO+uwXHSFF3+JjWwjhs8m8g99iFb7U93yKgBB12dCEPPa2ZeH9wUHMJ -sreYhNuq6f4iWWSXpzN45inQqtTi8jrJhuNLTT543ErW7DtntBO2rWMhff3aiXbn -Uy3qzZM1nPbuCGuBmP9L2dJ3Z5ifDWB4JmOyWY4swTZGt9AVmUxMIKdZpRONx8vz -I9u9nbVPGZBcou50Pa0qTLbkWsSL94MNXrARBxzhHC9Zs6XNEtwN7mOuii7uMkVc -adrxgknBH1J1N+NX/eTKzUwJuPvDtA+Z5ILWNN9wpZT/7ed8zEnKHPNUexyeT5g3 -uw9z9jH7ffGxFYlx87oiVPHGOrCXYZYW5uoZE31SCBkbtNuffNRJRKIFeipmpJ3P -7bpAG+kGHMelQH6b+5K1Qgsv4tpuSyKeTKpPFH9Av5nN4P1ZBm9N80tzbNWqjSJm -S7rYdHnuNEVnUGnRmEUMmVuYZnNBEVN/fP2m2SEwXcP3Uh7TiYlcWw10ygaGmOr7 -MvMLGkYgQ4Utwnd98mtqa0jr0hK2TcOSFir3AqVvXN3XJj4cVULkrXe4Im1laWgp ------END RSA PRIVATE KEY----- -`), - }, - - 1: { - Name: "dsa-encrypted", - EncryptionKey: "qG0pher-dsa_t3st$", - PEMBytes: []byte(`-----BEGIN DSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: AES-128-CBC,7CE7A6E4A647DC01AF860210B15ADE3E - -hvnBpI99Hceq/55pYRdOzBLntIEis02JFNXuLEydWL+RJBFDn7tA+vXec0ERJd6J -G8JXlSOAhmC2H4uK3q2xR8/Y3yL95n6OIcjvCBiLsV+o3jj1MYJmErxP6zRtq4w3 -JjIjGHWmaYFSxPKQ6e8fs74HEqaeMV9ONUoTtB+aISmgaBL15Fcoayg245dkBvVl -h5Kqspe7yvOBmzA3zjRuxmSCqKJmasXM7mqs3vIrMxZE3XPo1/fWKcPuExgpVQoT -HkJZEoIEIIPnPMwT2uYbFJSGgPJVMDT84xz7yvjCdhLmqrsXgs5Qw7Pw0i0c0BUJ -b7fDJ2UhdiwSckWGmIhTLlJZzr8K+JpjCDlP+REYBI5meB7kosBnlvCEHdw2EJkH -0QDc/2F4xlVrHOLbPRFyu1Oi2Gvbeoo9EsM/DThpd1hKAlb0sF5Y0y0d+owv0PnE -R/4X3HWfIdOHsDUvJ8xVWZ4BZk9Zk9qol045DcFCehpr/3hslCrKSZHakLt9GI58 -vVQJ4L0aYp5nloLfzhViZtKJXRLkySMKdzYkIlNmW1oVGl7tce5UCNI8Nok4j6yn -IiHM7GBn+0nJoKTXsOGMIBe3ulKlKVxLjEuk9yivh/8= ------END DSA PRIVATE KEY----- -`), - }, -} diff --git a/vendor/golang.org/x/crypto/ssh/testdata_test.go b/vendor/golang.org/x/crypto/ssh/testdata_test.go deleted file mode 100644 index 2da8c79d..00000000 --- a/vendor/golang.org/x/crypto/ssh/testdata_test.go +++ /dev/null @@ -1,63 +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. - -// IMPLEMENTATION NOTE: To avoid a package loop, this file is in three places: -// ssh/, ssh/agent, and ssh/test/. It should be kept in sync across all three -// instances. - -package ssh - -import ( - "crypto/rand" - "fmt" - - "golang.org/x/crypto/ssh/testdata" -) - -var ( - testPrivateKeys map[string]interface{} - testSigners map[string]Signer - testPublicKeys map[string]PublicKey -) - -func init() { - var err error - - n := len(testdata.PEMBytes) - testPrivateKeys = make(map[string]interface{}, n) - testSigners = make(map[string]Signer, n) - testPublicKeys = make(map[string]PublicKey, n) - for t, k := range testdata.PEMBytes { - testPrivateKeys[t], err = ParseRawPrivateKey(k) - if err != nil { - panic(fmt.Sprintf("Unable to parse test key %s: %v", t, err)) - } - testSigners[t], err = NewSignerFromKey(testPrivateKeys[t]) - if err != nil { - panic(fmt.Sprintf("Unable to create signer for test key %s: %v", t, err)) - } - testPublicKeys[t] = testSigners[t].PublicKey() - } - - // Create a cert and sign it for use in tests. - testCert := &Certificate{ - Nonce: []byte{}, // To pass reflect.DeepEqual after marshal & parse, this must be non-nil - ValidPrincipals: []string{"gopher1", "gopher2"}, // increases test coverage - ValidAfter: 0, // unix epoch - ValidBefore: CertTimeInfinity, // The end of currently representable time. - Reserved: []byte{}, // To pass reflect.DeepEqual after marshal & parse, this must be non-nil - Key: testPublicKeys["ecdsa"], - SignatureKey: testPublicKeys["rsa"], - Permissions: Permissions{ - CriticalOptions: map[string]string{}, - Extensions: map[string]string{}, - }, - } - testCert.SignCert(rand.Reader, testSigners["rsa"]) - testPrivateKeys["cert"] = testPrivateKeys["ecdsa"] - testSigners["cert"], err = NewCertSigner(testCert, testSigners["ecdsa"]) - if err != nil { - panic(fmt.Sprintf("Unable to create certificate signer: %v", err)) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/transport.go b/vendor/golang.org/x/crypto/ssh/transport.go deleted file mode 100644 index f6fae1db..00000000 --- a/vendor/golang.org/x/crypto/ssh/transport.go +++ /dev/null @@ -1,353 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bufio" - "bytes" - "errors" - "io" - "log" -) - -// debugTransport if set, will print packet types as they go over the -// wire. No message decoding is done, to minimize the impact on timing. -const debugTransport = false - -const ( - gcmCipherID = "aes128-gcm@openssh.com" - aes128cbcID = "aes128-cbc" - tripledescbcID = "3des-cbc" -) - -// packetConn represents a transport that implements packet based -// operations. -type packetConn interface { - // Encrypt and send a packet of data to the remote peer. - writePacket(packet []byte) error - - // Read a packet from the connection. The read is blocking, - // i.e. if error is nil, then the returned byte slice is - // always non-empty. - readPacket() ([]byte, error) - - // Close closes the write-side of the connection. - Close() error -} - -// transport is the keyingTransport that implements the SSH packet -// protocol. -type transport struct { - reader connectionState - writer connectionState - - bufReader *bufio.Reader - bufWriter *bufio.Writer - rand io.Reader - isClient bool - io.Closer -} - -// packetCipher represents a combination of SSH encryption/MAC -// protocol. A single instance should be used for one direction only. -type packetCipher interface { - // writePacket encrypts the packet and writes it to w. The - // contents of the packet are generally scrambled. - writePacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error - - // readPacket reads and decrypts a packet of data. The - // returned packet may be overwritten by future calls of - // readPacket. - readPacket(seqnum uint32, r io.Reader) ([]byte, error) -} - -// connectionState represents one side (read or write) of the -// connection. This is necessary because each direction has its own -// keys, and can even have its own algorithms -type connectionState struct { - packetCipher - seqNum uint32 - dir direction - pendingKeyChange chan packetCipher -} - -// prepareKeyChange sets up key material for a keychange. The key changes in -// both directions are triggered by reading and writing a msgNewKey packet -// respectively. -func (t *transport) prepareKeyChange(algs *algorithms, kexResult *kexResult) error { - ciph, err := newPacketCipher(t.reader.dir, algs.r, kexResult) - if err != nil { - return err - } - t.reader.pendingKeyChange <- ciph - - ciph, err = newPacketCipher(t.writer.dir, algs.w, kexResult) - if err != nil { - return err - } - t.writer.pendingKeyChange <- ciph - - return nil -} - -func (t *transport) printPacket(p []byte, write bool) { - if len(p) == 0 { - return - } - who := "server" - if t.isClient { - who = "client" - } - what := "read" - if write { - what = "write" - } - - log.Println(what, who, p[0]) -} - -// Read and decrypt next packet. -func (t *transport) readPacket() (p []byte, err error) { - for { - p, err = t.reader.readPacket(t.bufReader) - if err != nil { - break - } - if len(p) == 0 || (p[0] != msgIgnore && p[0] != msgDebug) { - break - } - } - if debugTransport { - t.printPacket(p, false) - } - - return p, err -} - -func (s *connectionState) readPacket(r *bufio.Reader) ([]byte, error) { - packet, err := s.packetCipher.readPacket(s.seqNum, r) - s.seqNum++ - if err == nil && len(packet) == 0 { - err = errors.New("ssh: zero length packet") - } - - if len(packet) > 0 { - switch packet[0] { - case msgNewKeys: - select { - case cipher := <-s.pendingKeyChange: - s.packetCipher = cipher - default: - return nil, errors.New("ssh: got bogus newkeys message") - } - - case msgDisconnect: - // Transform a disconnect message into an - // error. Since this is lowest level at which - // we interpret message types, doing it here - // ensures that we don't have to handle it - // elsewhere. - var msg disconnectMsg - if err := Unmarshal(packet, &msg); err != nil { - return nil, err - } - return nil, &msg - } - } - - // The packet may point to an internal buffer, so copy the - // packet out here. - fresh := make([]byte, len(packet)) - copy(fresh, packet) - - return fresh, err -} - -func (t *transport) writePacket(packet []byte) error { - if debugTransport { - t.printPacket(packet, true) - } - return t.writer.writePacket(t.bufWriter, t.rand, packet) -} - -func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte) error { - changeKeys := len(packet) > 0 && packet[0] == msgNewKeys - - err := s.packetCipher.writePacket(s.seqNum, w, rand, packet) - if err != nil { - return err - } - if err = w.Flush(); err != nil { - return err - } - s.seqNum++ - if changeKeys { - select { - case cipher := <-s.pendingKeyChange: - s.packetCipher = cipher - default: - panic("ssh: no key material for msgNewKeys") - } - } - return err -} - -func newTransport(rwc io.ReadWriteCloser, rand io.Reader, isClient bool) *transport { - t := &transport{ - bufReader: bufio.NewReader(rwc), - bufWriter: bufio.NewWriter(rwc), - rand: rand, - reader: connectionState{ - packetCipher: &streamPacketCipher{cipher: noneCipher{}}, - pendingKeyChange: make(chan packetCipher, 1), - }, - writer: connectionState{ - packetCipher: &streamPacketCipher{cipher: noneCipher{}}, - pendingKeyChange: make(chan packetCipher, 1), - }, - Closer: rwc, - } - t.isClient = isClient - - if isClient { - t.reader.dir = serverKeys - t.writer.dir = clientKeys - } else { - t.reader.dir = clientKeys - t.writer.dir = serverKeys - } - - return t -} - -type direction struct { - ivTag []byte - keyTag []byte - macKeyTag []byte -} - -var ( - serverKeys = direction{[]byte{'B'}, []byte{'D'}, []byte{'F'}} - clientKeys = direction{[]byte{'A'}, []byte{'C'}, []byte{'E'}} -) - -// setupKeys sets the cipher and MAC keys from kex.K, kex.H and sessionId, as -// described in RFC 4253, section 6.4. direction should either be serverKeys -// (to setup server->client keys) or clientKeys (for client->server keys). -func newPacketCipher(d direction, algs directionAlgorithms, kex *kexResult) (packetCipher, error) { - cipherMode := cipherModes[algs.Cipher] - macMode := macModes[algs.MAC] - - iv := make([]byte, cipherMode.ivSize) - key := make([]byte, cipherMode.keySize) - macKey := make([]byte, macMode.keySize) - - generateKeyMaterial(iv, d.ivTag, kex) - generateKeyMaterial(key, d.keyTag, kex) - generateKeyMaterial(macKey, d.macKeyTag, kex) - - return cipherModes[algs.Cipher].create(key, iv, macKey, algs) -} - -// generateKeyMaterial fills out with key material generated from tag, K, H -// and sessionId, as specified in RFC 4253, section 7.2. -func generateKeyMaterial(out, tag []byte, r *kexResult) { - var digestsSoFar []byte - - h := r.Hash.New() - for len(out) > 0 { - h.Reset() - h.Write(r.K) - h.Write(r.H) - - if len(digestsSoFar) == 0 { - h.Write(tag) - h.Write(r.SessionID) - } else { - h.Write(digestsSoFar) - } - - digest := h.Sum(nil) - n := copy(out, digest) - out = out[n:] - if len(out) > 0 { - digestsSoFar = append(digestsSoFar, digest...) - } - } -} - -const packageVersion = "SSH-2.0-Go" - -// Sends and receives a version line. The versionLine string should -// be US ASCII, start with "SSH-2.0-", and should not include a -// newline. exchangeVersions returns the other side's version line. -func exchangeVersions(rw io.ReadWriter, versionLine []byte) (them []byte, err error) { - // Contrary to the RFC, we do not ignore lines that don't - // start with "SSH-2.0-" to make the library usable with - // nonconforming servers. - for _, c := range versionLine { - // The spec disallows non US-ASCII chars, and - // specifically forbids null chars. - if c < 32 { - return nil, errors.New("ssh: junk character in version line") - } - } - if _, err = rw.Write(append(versionLine, '\r', '\n')); err != nil { - return - } - - them, err = readVersion(rw) - return them, err -} - -// maxVersionStringBytes is the maximum number of bytes that we'll -// accept as a version string. RFC 4253 section 4.2 limits this at 255 -// chars -const maxVersionStringBytes = 255 - -// Read version string as specified by RFC 4253, section 4.2. -func readVersion(r io.Reader) ([]byte, error) { - versionString := make([]byte, 0, 64) - var ok bool - var buf [1]byte - - for length := 0; length < maxVersionStringBytes; length++ { - _, err := io.ReadFull(r, buf[:]) - if err != nil { - return nil, err - } - // The RFC says that the version should be terminated with \r\n - // but several SSH servers actually only send a \n. - if buf[0] == '\n' { - if !bytes.HasPrefix(versionString, []byte("SSH-")) { - // RFC 4253 says we need to ignore all version string lines - // except the one containing the SSH version (provided that - // all the lines do not exceed 255 bytes in total). - versionString = versionString[:0] - continue - } - ok = true - break - } - - // non ASCII chars are disallowed, but we are lenient, - // since Go doesn't use null-terminated strings. - - // The RFC allows a comment after a space, however, - // all of it (version and comments) goes into the - // session hash. - versionString = append(versionString, buf[0]) - } - - if !ok { - return nil, errors.New("ssh: overflow reading version string") - } - - // There might be a '\r' on the end which we should remove. - if len(versionString) > 0 && versionString[len(versionString)-1] == '\r' { - versionString = versionString[:len(versionString)-1] - } - return versionString, nil -} diff --git a/vendor/golang.org/x/crypto/ssh/transport_test.go b/vendor/golang.org/x/crypto/ssh/transport_test.go deleted file mode 100644 index 8445e1e5..00000000 --- a/vendor/golang.org/x/crypto/ssh/transport_test.go +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ssh - -import ( - "bytes" - "crypto/rand" - "encoding/binary" - "strings" - "testing" -) - -func TestReadVersion(t *testing.T) { - longVersion := strings.Repeat("SSH-2.0-bla", 50)[:253] - multiLineVersion := strings.Repeat("ignored\r\n", 20) + "SSH-2.0-bla\r\n" - cases := map[string]string{ - "SSH-2.0-bla\r\n": "SSH-2.0-bla", - "SSH-2.0-bla\n": "SSH-2.0-bla", - multiLineVersion: "SSH-2.0-bla", - longVersion + "\r\n": longVersion, - } - - for in, want := range cases { - result, err := readVersion(bytes.NewBufferString(in)) - if err != nil { - t.Errorf("readVersion(%q): %s", in, err) - } - got := string(result) - if got != want { - t.Errorf("got %q, want %q", got, want) - } - } -} - -func TestReadVersionError(t *testing.T) { - longVersion := strings.Repeat("SSH-2.0-bla", 50)[:253] - multiLineVersion := strings.Repeat("ignored\r\n", 50) + "SSH-2.0-bla\r\n" - cases := []string{ - longVersion + "too-long\r\n", - multiLineVersion, - } - for _, in := range cases { - if _, err := readVersion(bytes.NewBufferString(in)); err == nil { - t.Errorf("readVersion(%q) should have failed", in) - } - } -} - -func TestExchangeVersionsBasic(t *testing.T) { - v := "SSH-2.0-bla" - buf := bytes.NewBufferString(v + "\r\n") - them, err := exchangeVersions(buf, []byte("xyz")) - if err != nil { - t.Errorf("exchangeVersions: %v", err) - } - - if want := "SSH-2.0-bla"; string(them) != want { - t.Errorf("got %q want %q for our version", them, want) - } -} - -func TestExchangeVersions(t *testing.T) { - cases := []string{ - "not\x000allowed", - "not allowed\x01\r\n", - } - for _, c := range cases { - buf := bytes.NewBufferString("SSH-2.0-bla\r\n") - if _, err := exchangeVersions(buf, []byte(c)); err == nil { - t.Errorf("exchangeVersions(%q): should have failed", c) - } - } -} - -type closerBuffer struct { - bytes.Buffer -} - -func (b *closerBuffer) Close() error { - return nil -} - -func TestTransportMaxPacketWrite(t *testing.T) { - buf := &closerBuffer{} - tr := newTransport(buf, rand.Reader, true) - huge := make([]byte, maxPacket+1) - err := tr.writePacket(huge) - if err == nil { - t.Errorf("transport accepted write for a huge packet.") - } -} - -func TestTransportMaxPacketReader(t *testing.T) { - var header [5]byte - huge := make([]byte, maxPacket+128) - binary.BigEndian.PutUint32(header[0:], uint32(len(huge))) - // padding. - header[4] = 0 - - buf := &closerBuffer{} - buf.Write(header[:]) - buf.Write(huge) - - tr := newTransport(buf, rand.Reader, true) - _, err := tr.readPacket() - if err == nil { - t.Errorf("transport succeeded reading huge packet.") - } else if !strings.Contains(err.Error(), "large") { - t.Errorf("got %q, should mention %q", err.Error(), "large") - } -} diff --git a/vendor/golang.org/x/crypto/tea/cipher.go b/vendor/golang.org/x/crypto/tea/cipher.go deleted file mode 100644 index ce223b2c..00000000 --- a/vendor/golang.org/x/crypto/tea/cipher.go +++ /dev/null @@ -1,108 +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 tea implements the TEA algorithm, as defined in Needham and -// Wheeler's 1994 technical report, “TEA, a Tiny Encryption Algorithm”. See -// http://www.cix.co.uk/~klockstone/tea.pdf for details. -package tea - -import ( - "crypto/cipher" - "encoding/binary" - "errors" -) - -const ( - // BlockSize is the size of a TEA block, in bytes. - BlockSize = 8 - - // KeySize is the size of a TEA key, in bytes. - KeySize = 16 - - // delta is the TEA key schedule constant. - delta = 0x9e3779b9 - - // numRounds is the standard number of rounds in TEA. - numRounds = 64 -) - -// tea is an instance of the TEA cipher with a particular key. -type tea struct { - key [16]byte - rounds int -} - -// NewCipher returns an instance of the TEA cipher with the standard number of -// rounds. The key argument must be 16 bytes long. -func NewCipher(key []byte) (cipher.Block, error) { - return NewCipherWithRounds(key, numRounds) -} - -// NewCipherWithRounds returns an instance of the TEA cipher with a given -// number of rounds, which must be even. The key argument must be 16 bytes -// long. -func NewCipherWithRounds(key []byte, rounds int) (cipher.Block, error) { - if len(key) != 16 { - return nil, errors.New("tea: incorrect key size") - } - - if rounds&1 != 0 { - return nil, errors.New("tea: odd number of rounds specified") - } - - c := &tea{ - rounds: rounds, - } - copy(c.key[:], key) - - return c, nil -} - -// BlockSize returns the TEA block size, which is eight bytes. It is necessary -// to satisfy the Block interface in the package "crypto/cipher". -func (*tea) BlockSize() int { - return BlockSize -} - -// Encrypt encrypts the 8 byte buffer src using the key in t and stores the -// result in dst. Note that for amounts of data larger than a block, it is not -// safe to just call Encrypt on successive blocks; instead, use an encryption -// mode like CBC (see crypto/cipher/cbc.go). -func (t *tea) Encrypt(dst, src []byte) { - e := binary.BigEndian - v0, v1 := e.Uint32(src), e.Uint32(src[4:]) - k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) - - sum := uint32(0) - delta := uint32(delta) - - for i := 0; i < t.rounds/2; i++ { - sum += delta - v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) - v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) - } - - e.PutUint32(dst, v0) - e.PutUint32(dst[4:], v1) -} - -// Decrypt decrypts the 8 byte buffer src using the key in t and stores the -// result in dst. -func (t *tea) Decrypt(dst, src []byte) { - e := binary.BigEndian - v0, v1 := e.Uint32(src), e.Uint32(src[4:]) - k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) - - delta := uint32(delta) - sum := delta * uint32(t.rounds/2) // in general, sum = delta * n - - for i := 0; i < t.rounds/2; i++ { - v1 -= ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) - v0 -= ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) - sum -= delta - } - - e.PutUint32(dst, v0) - e.PutUint32(dst[4:], v1) -} diff --git a/vendor/golang.org/x/crypto/tea/tea_test.go b/vendor/golang.org/x/crypto/tea/tea_test.go deleted file mode 100644 index eb98d1e0..00000000 --- a/vendor/golang.org/x/crypto/tea/tea_test.go +++ /dev/null @@ -1,93 +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 tea - -import ( - "bytes" - "testing" -) - -// A sample test key for when we just want to initialize a cipher -var testKey = []byte{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF} - -// Test that the block size for tea is correct -func TestBlocksize(t *testing.T) { - c, err := NewCipher(testKey) - if err != nil { - t.Fatalf("NewCipher returned error: %s", err) - } - - if result := c.BlockSize(); result != BlockSize { - t.Errorf("cipher.BlockSize returned %d, but expected %d", result, BlockSize) - } -} - -// Test that invalid key sizes return an error -func TestInvalidKeySize(t *testing.T) { - var key [KeySize + 1]byte - - if _, err := NewCipher(key[:]); err == nil { - t.Errorf("invalid key size %d didn't result in an error.", len(key)) - } - - if _, err := NewCipher(key[:KeySize-1]); err == nil { - t.Errorf("invalid key size %d didn't result in an error.", KeySize-1) - } -} - -// Test Vectors -type teaTest struct { - rounds int - key []byte - plaintext []byte - ciphertext []byte -} - -var teaTests = []teaTest{ - // These were sourced from https://github.com/froydnj/ironclad/blob/master/testing/test-vectors/tea.testvec - { - numRounds, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x41, 0xea, 0x3a, 0x0a, 0x94, 0xba, 0xa9, 0x40}, - }, - { - numRounds, - []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, - []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, - []byte{0x31, 0x9b, 0xbe, 0xfb, 0x01, 0x6a, 0xbd, 0xb2}, - }, - { - 16, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0xed, 0x28, 0x5d, 0xa1, 0x45, 0x5b, 0x33, 0xc1}, - }, -} - -// Test encryption -func TestCipherEncrypt(t *testing.T) { - // Test encryption with standard 64 rounds - for i, test := range teaTests { - c, err := NewCipherWithRounds(test.key, test.rounds) - if err != nil { - t.Fatalf("#%d: NewCipher returned error: %s", i, err) - } - - var ciphertext [BlockSize]byte - c.Encrypt(ciphertext[:], test.plaintext) - - if !bytes.Equal(ciphertext[:], test.ciphertext) { - t.Errorf("#%d: incorrect ciphertext. Got %x, wanted %x", i, ciphertext, test.ciphertext) - } - - var plaintext2 [BlockSize]byte - c.Decrypt(plaintext2[:], ciphertext[:]) - - if !bytes.Equal(plaintext2[:], test.plaintext) { - t.Errorf("#%d: incorrect plaintext. Got %x, wanted %x", i, plaintext2, test.plaintext) - } - } -} diff --git a/vendor/golang.org/x/crypto/twofish/twofish.go b/vendor/golang.org/x/crypto/twofish/twofish.go deleted file mode 100644 index 6db01fcf..00000000 --- a/vendor/golang.org/x/crypto/twofish/twofish.go +++ /dev/null @@ -1,342 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package twofish implements Bruce Schneier's Twofish encryption algorithm. -package twofish // import "golang.org/x/crypto/twofish" - -// Twofish is defined in https://www.schneier.com/paper-twofish-paper.pdf [TWOFISH] - -// This code is a port of the LibTom C implementation. -// See http://libtom.org/?page=features&newsitems=5&whatfile=crypt. -// LibTomCrypt is free for all purposes under the public domain. -// It was heavily inspired by the go blowfish package. - -import "strconv" - -// BlockSize is the constant block size of Twofish. -const BlockSize = 16 - -const mdsPolynomial = 0x169 // x^8 + x^6 + x^5 + x^3 + 1, see [TWOFISH] 4.2 -const rsPolynomial = 0x14d // x^8 + x^6 + x^3 + x^2 + 1, see [TWOFISH] 4.3 - -// A Cipher is an instance of Twofish encryption using a particular key. -type Cipher struct { - s [4][256]uint32 - k [40]uint32 -} - -type KeySizeError int - -func (k KeySizeError) Error() string { - return "crypto/twofish: invalid key size " + strconv.Itoa(int(k)) -} - -// NewCipher creates and returns a Cipher. -// The key argument should be the Twofish key, 16, 24 or 32 bytes. -func NewCipher(key []byte) (*Cipher, error) { - keylen := len(key) - - if keylen != 16 && keylen != 24 && keylen != 32 { - return nil, KeySizeError(keylen) - } - - // k is the number of 64 bit words in key - k := keylen / 8 - - // Create the S[..] words - var S [4 * 4]byte - for i := 0; i < k; i++ { - // Computes [y0 y1 y2 y3] = rs . [x0 x1 x2 x3 x4 x5 x6 x7] - for j, rsRow := range rs { - for k, rsVal := range rsRow { - S[4*i+j] ^= gfMult(key[8*i+k], rsVal, rsPolynomial) - } - } - } - - // Calculate subkeys - c := new(Cipher) - var tmp [4]byte - for i := byte(0); i < 20; i++ { - // A = h(p * 2x, Me) - for j := range tmp { - tmp[j] = 2 * i - } - A := h(tmp[:], key, 0) - - // B = rolc(h(p * (2x + 1), Mo), 8) - for j := range tmp { - tmp[j] = 2*i + 1 - } - B := h(tmp[:], key, 1) - B = rol(B, 8) - - c.k[2*i] = A + B - - // K[2i+1] = (A + 2B) <<< 9 - c.k[2*i+1] = rol(2*B+A, 9) - } - - // Calculate sboxes - switch k { - case 2: - for i := range c.s[0] { - c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][byte(i)]^S[0]]^S[4]], 0) - c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][byte(i)]^S[1]]^S[5]], 1) - c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][byte(i)]^S[2]]^S[6]], 2) - c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][byte(i)]^S[3]]^S[7]], 3) - } - case 3: - for i := range c.s[0] { - c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]], 0) - c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[1]]^S[5]]^S[9]], 1) - c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]], 2) - c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[3]]^S[7]]^S[11]], 3) - } - default: - for i := range c.s[0] { - c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]]^S[12]], 0) - c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[1]]^S[5]]^S[9]]^S[13]], 1) - c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]]^S[14]], 2) - c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][sbox[1][byte(i)]^S[3]]^S[7]]^S[11]]^S[15]], 3) - } - } - - return c, nil -} - -// BlockSize returns the Twofish block size, 16 bytes. -func (c *Cipher) BlockSize() int { return BlockSize } - -// store32l stores src in dst in little-endian form. -func store32l(dst []byte, src uint32) { - dst[0] = byte(src) - dst[1] = byte(src >> 8) - dst[2] = byte(src >> 16) - dst[3] = byte(src >> 24) - return -} - -// load32l reads a little-endian uint32 from src. -func load32l(src []byte) uint32 { - return uint32(src[0]) | uint32(src[1])<<8 | uint32(src[2])<<16 | uint32(src[3])<<24 -} - -// rol returns x after a left circular rotation of y bits. -func rol(x, y uint32) uint32 { - return (x << (y & 31)) | (x >> (32 - (y & 31))) -} - -// ror returns x after a right circular rotation of y bits. -func ror(x, y uint32) uint32 { - return (x >> (y & 31)) | (x << (32 - (y & 31))) -} - -// The RS matrix. See [TWOFISH] 4.3 -var rs = [4][8]byte{ - {0x01, 0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E}, - {0xA4, 0x56, 0x82, 0xF3, 0x1E, 0xC6, 0x68, 0xE5}, - {0x02, 0xA1, 0xFC, 0xC1, 0x47, 0xAE, 0x3D, 0x19}, - {0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E, 0x03}, -} - -// sbox tables -var sbox = [2][256]byte{ - { - 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, - 0x0d, 0xc6, 0x35, 0x98, 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, 0x94, 0x48, - 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, - 0x63, 0x01, 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, 0x16, 0x0c, 0xe3, 0x61, - 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, - 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, - 0xfb, 0xc3, 0x8e, 0xb5, 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, 0x62, 0x71, - 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, - 0xa1, 0x1d, 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, 0x31, 0xc2, 0x27, 0x90, - 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, - 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, - 0x2a, 0xce, 0xcb, 0x2f, 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, 0xa7, 0x5a, - 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, - 0x57, 0xc7, 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, - 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, - 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0, - }, - { - 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, - 0xd6, 0x32, 0xd8, 0xfd, 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, 0x06, 0x3f, - 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, - 0xa0, 0x84, 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, 0x92, 0x74, 0x36, 0x51, - 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, - 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, - 0xa6, 0x83, 0x20, 0xff, 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, 0x2b, 0xe2, - 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, - 0x66, 0x94, 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, 0xef, 0xd1, 0x53, 0x3e, - 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, - 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, - 0x4f, 0xf2, 0x65, 0x8e, 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, 0x05, 0x64, - 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, - 0x29, 0x2e, 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, 0x35, 0x6a, 0xcf, 0xdc, - 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, - 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91, - }, -} - -// gfMult returns a·b in GF(2^8)/p -func gfMult(a, b byte, p uint32) byte { - B := [2]uint32{0, uint32(b)} - P := [2]uint32{0, p} - var result uint32 - - // branchless GF multiplier - for i := 0; i < 7; i++ { - result ^= B[a&1] - a >>= 1 - B[1] = P[B[1]>>7] ^ (B[1] << 1) - } - result ^= B[a&1] - return byte(result) -} - -// mdsColumnMult calculates y{col} where [y0 y1 y2 y3] = MDS · [x0] -func mdsColumnMult(in byte, col int) uint32 { - mul01 := in - mul5B := gfMult(in, 0x5B, mdsPolynomial) - mulEF := gfMult(in, 0xEF, mdsPolynomial) - - switch col { - case 0: - return uint32(mul01) | uint32(mul5B)<<8 | uint32(mulEF)<<16 | uint32(mulEF)<<24 - case 1: - return uint32(mulEF) | uint32(mulEF)<<8 | uint32(mul5B)<<16 | uint32(mul01)<<24 - case 2: - return uint32(mul5B) | uint32(mulEF)<<8 | uint32(mul01)<<16 | uint32(mulEF)<<24 - case 3: - return uint32(mul5B) | uint32(mul01)<<8 | uint32(mulEF)<<16 | uint32(mul5B)<<24 - } - - panic("unreachable") -} - -// h implements the S-box generation function. See [TWOFISH] 4.3.5 -func h(in, key []byte, offset int) uint32 { - var y [4]byte - for x := range y { - y[x] = in[x] - } - switch len(key) / 8 { - case 4: - y[0] = sbox[1][y[0]] ^ key[4*(6+offset)+0] - y[1] = sbox[0][y[1]] ^ key[4*(6+offset)+1] - y[2] = sbox[0][y[2]] ^ key[4*(6+offset)+2] - y[3] = sbox[1][y[3]] ^ key[4*(6+offset)+3] - fallthrough - case 3: - y[0] = sbox[1][y[0]] ^ key[4*(4+offset)+0] - y[1] = sbox[1][y[1]] ^ key[4*(4+offset)+1] - y[2] = sbox[0][y[2]] ^ key[4*(4+offset)+2] - y[3] = sbox[0][y[3]] ^ key[4*(4+offset)+3] - fallthrough - case 2: - y[0] = sbox[1][sbox[0][sbox[0][y[0]]^key[4*(2+offset)+0]]^key[4*(0+offset)+0]] - y[1] = sbox[0][sbox[0][sbox[1][y[1]]^key[4*(2+offset)+1]]^key[4*(0+offset)+1]] - y[2] = sbox[1][sbox[1][sbox[0][y[2]]^key[4*(2+offset)+2]]^key[4*(0+offset)+2]] - y[3] = sbox[0][sbox[1][sbox[1][y[3]]^key[4*(2+offset)+3]]^key[4*(0+offset)+3]] - } - // [y0 y1 y2 y3] = MDS . [x0 x1 x2 x3] - var mdsMult uint32 - for i := range y { - mdsMult ^= mdsColumnMult(y[i], i) - } - return mdsMult -} - -// Encrypt encrypts a 16-byte block from src to dst, which may overlap. -// Note that for amounts of data larger than a block, -// it is not safe to just call Encrypt on successive blocks; -// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). -func (c *Cipher) Encrypt(dst, src []byte) { - S1 := c.s[0] - S2 := c.s[1] - S3 := c.s[2] - S4 := c.s[3] - - // Load input - ia := load32l(src[0:4]) - ib := load32l(src[4:8]) - ic := load32l(src[8:12]) - id := load32l(src[12:16]) - - // Pre-whitening - ia ^= c.k[0] - ib ^= c.k[1] - ic ^= c.k[2] - id ^= c.k[3] - - for i := 0; i < 8; i++ { - k := c.k[8+i*4 : 12+i*4] - t2 := S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] - t1 := S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 - ic = ror(ic^(t1+k[0]), 1) - id = rol(id, 1) ^ (t2 + t1 + k[1]) - - t2 = S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] - t1 = S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 - ia = ror(ia^(t1+k[2]), 1) - ib = rol(ib, 1) ^ (t2 + t1 + k[3]) - } - - // Output with "undo last swap" - ta := ic ^ c.k[4] - tb := id ^ c.k[5] - tc := ia ^ c.k[6] - td := ib ^ c.k[7] - - store32l(dst[0:4], ta) - store32l(dst[4:8], tb) - store32l(dst[8:12], tc) - store32l(dst[12:16], td) -} - -// Decrypt decrypts a 16-byte block from src to dst, which may overlap. -func (c *Cipher) Decrypt(dst, src []byte) { - S1 := c.s[0] - S2 := c.s[1] - S3 := c.s[2] - S4 := c.s[3] - - // Load input - ta := load32l(src[0:4]) - tb := load32l(src[4:8]) - tc := load32l(src[8:12]) - td := load32l(src[12:16]) - - // Undo undo final swap - ia := tc ^ c.k[6] - ib := td ^ c.k[7] - ic := ta ^ c.k[4] - id := tb ^ c.k[5] - - for i := 8; i > 0; i-- { - k := c.k[4+i*4 : 8+i*4] - t2 := S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] - t1 := S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 - ia = rol(ia, 1) ^ (t1 + k[2]) - ib = ror(ib^(t2+t1+k[3]), 1) - - t2 = S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] - t1 = S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 - ic = rol(ic, 1) ^ (t1 + k[0]) - id = ror(id^(t2+t1+k[1]), 1) - } - - // Undo pre-whitening - ia ^= c.k[0] - ib ^= c.k[1] - ic ^= c.k[2] - id ^= c.k[3] - - store32l(dst[0:4], ia) - store32l(dst[4:8], ib) - store32l(dst[8:12], ic) - store32l(dst[12:16], id) -} diff --git a/vendor/golang.org/x/crypto/twofish/twofish_test.go b/vendor/golang.org/x/crypto/twofish/twofish_test.go deleted file mode 100644 index ed6a1a8f..00000000 --- a/vendor/golang.org/x/crypto/twofish/twofish_test.go +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package twofish - -import ( - "bytes" - "testing" -) - -var qbox = [2][4][16]byte{ - { - {0x8, 0x1, 0x7, 0xD, 0x6, 0xF, 0x3, 0x2, 0x0, 0xB, 0x5, 0x9, 0xE, 0xC, 0xA, 0x4}, - {0xE, 0xC, 0xB, 0x8, 0x1, 0x2, 0x3, 0x5, 0xF, 0x4, 0xA, 0x6, 0x7, 0x0, 0x9, 0xD}, - {0xB, 0xA, 0x5, 0xE, 0x6, 0xD, 0x9, 0x0, 0xC, 0x8, 0xF, 0x3, 0x2, 0x4, 0x7, 0x1}, - {0xD, 0x7, 0xF, 0x4, 0x1, 0x2, 0x6, 0xE, 0x9, 0xB, 0x3, 0x0, 0x8, 0x5, 0xC, 0xA}, - }, - { - {0x2, 0x8, 0xB, 0xD, 0xF, 0x7, 0x6, 0xE, 0x3, 0x1, 0x9, 0x4, 0x0, 0xA, 0xC, 0x5}, - {0x1, 0xE, 0x2, 0xB, 0x4, 0xC, 0x3, 0x7, 0x6, 0xD, 0xA, 0x5, 0xF, 0x9, 0x0, 0x8}, - {0x4, 0xC, 0x7, 0x5, 0x1, 0x6, 0x9, 0xA, 0x0, 0xE, 0xD, 0x8, 0x2, 0xB, 0x3, 0xF}, - {0xB, 0x9, 0x5, 0x1, 0xC, 0x3, 0xD, 0xE, 0x6, 0x4, 0x7, 0xF, 0x2, 0x0, 0x8, 0xA}, - }, -} - -// genSbox generates the variable sbox -func genSbox(qi int, x byte) byte { - a0, b0 := x/16, x%16 - for i := 0; i < 2; i++ { - a1 := a0 ^ b0 - b1 := (a0 ^ ((b0 << 3) | (b0 >> 1)) ^ (a0 << 3)) & 15 - a0 = qbox[qi][2*i][a1] - b0 = qbox[qi][2*i+1][b1] - } - return (b0 << 4) + a0 -} - -func TestSbox(t *testing.T) { - for n := range sbox { - for m := range sbox[n] { - if genSbox(n, byte(m)) != sbox[n][m] { - t.Errorf("#%d|%d: sbox value = %d want %d", n, m, sbox[n][m], genSbox(n, byte(m))) - } - } - } -} - -var testVectors = []struct { - key []byte - dec []byte - enc []byte -}{ - // These tests are extracted from LibTom - { - []byte{0x9F, 0x58, 0x9F, 0x5C, 0xF6, 0x12, 0x2C, 0x32, 0xB6, 0xBF, 0xEC, 0x2F, 0x2A, 0xE8, 0xC3, 0x5A}, - []byte{0xD4, 0x91, 0xDB, 0x16, 0xE7, 0xB1, 0xC3, 0x9E, 0x86, 0xCB, 0x08, 0x6B, 0x78, 0x9F, 0x54, 0x19}, - []byte{0x01, 0x9F, 0x98, 0x09, 0xDE, 0x17, 0x11, 0x85, 0x8F, 0xAA, 0xC3, 0xA3, 0xBA, 0x20, 0xFB, 0xC3}, - }, - { - []byte{0x88, 0xB2, 0xB2, 0x70, 0x6B, 0x10, 0x5E, 0x36, 0xB4, 0x46, 0xBB, 0x6D, 0x73, 0x1A, 0x1E, 0x88, - 0xEF, 0xA7, 0x1F, 0x78, 0x89, 0x65, 0xBD, 0x44}, - []byte{0x39, 0xDA, 0x69, 0xD6, 0xBA, 0x49, 0x97, 0xD5, 0x85, 0xB6, 0xDC, 0x07, 0x3C, 0xA3, 0x41, 0xB2}, - []byte{0x18, 0x2B, 0x02, 0xD8, 0x14, 0x97, 0xEA, 0x45, 0xF9, 0xDA, 0xAC, 0xDC, 0x29, 0x19, 0x3A, 0x65}, - }, - { - []byte{0xD4, 0x3B, 0xB7, 0x55, 0x6E, 0xA3, 0x2E, 0x46, 0xF2, 0xA2, 0x82, 0xB7, 0xD4, 0x5B, 0x4E, 0x0D, - 0x57, 0xFF, 0x73, 0x9D, 0x4D, 0xC9, 0x2C, 0x1B, 0xD7, 0xFC, 0x01, 0x70, 0x0C, 0xC8, 0x21, 0x6F}, - []byte{0x90, 0xAF, 0xE9, 0x1B, 0xB2, 0x88, 0x54, 0x4F, 0x2C, 0x32, 0xDC, 0x23, 0x9B, 0x26, 0x35, 0xE6}, - []byte{0x6C, 0xB4, 0x56, 0x1C, 0x40, 0xBF, 0x0A, 0x97, 0x05, 0x93, 0x1C, 0xB6, 0xD4, 0x08, 0xE7, 0xFA}, - }, - // These tests are derived from https://www.schneier.com/code/ecb_ival.txt - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x9F, 0x58, 0x9F, 0x5C, 0xF6, 0x12, 0x2C, 0x32, 0xB6, 0xBF, 0xEC, 0x2F, 0x2A, 0xE8, 0xC3, 0x5A}, - }, - { - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - }, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0xCF, 0xD1, 0xD2, 0xE5, 0xA9, 0xBE, 0x9C, 0xDF, 0x50, 0x1F, 0x13, 0xB8, 0x92, 0xBD, 0x22, 0x48}, - }, - { - []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, - }, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x37, 0x52, 0x7B, 0xE0, 0x05, 0x23, 0x34, 0xB8, 0x9F, 0x0C, 0xFC, 0xCA, 0xE8, 0x7C, 0xFA, 0x20}, - }, -} - -func TestCipher(t *testing.T) { - for n, tt := range testVectors { - // Test if the plaintext (dec) is encrypts to the given - // ciphertext (enc) using the given key. Test also if enc can - // be decrypted again into dec. - c, err := NewCipher(tt.key) - if err != nil { - t.Errorf("#%d: NewCipher: %v", n, err) - return - } - - buf := make([]byte, 16) - c.Encrypt(buf, tt.dec) - if !bytes.Equal(buf, tt.enc) { - t.Errorf("#%d: encrypt = %x want %x", n, buf, tt.enc) - } - c.Decrypt(buf, tt.enc) - if !bytes.Equal(buf, tt.dec) { - t.Errorf("#%d: decrypt = %x want %x", n, buf, tt.dec) - } - - // Test that 16 zero bytes, encrypted 1000 times then decrypted - // 1000 times results in zero bytes again. - zero := make([]byte, 16) - buf = make([]byte, 16) - for i := 0; i < 1000; i++ { - c.Encrypt(buf, buf) - } - for i := 0; i < 1000; i++ { - c.Decrypt(buf, buf) - } - if !bytes.Equal(buf, zero) { - t.Errorf("#%d: encrypt/decrypt 1000: have %x want %x", n, buf, zero) - } - } -} diff --git a/vendor/golang.org/x/crypto/xtea/block.go b/vendor/golang.org/x/crypto/xtea/block.go deleted file mode 100644 index bf5d2459..00000000 --- a/vendor/golang.org/x/crypto/xtea/block.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* - Implementation adapted from Needham and Wheeler's paper: - http://www.cix.co.uk/~klockstone/xtea.pdf - - A precalculated look up table is used during encryption/decryption for values that are based purely on the key. -*/ - -package xtea - -// XTEA is based on 64 rounds. -const numRounds = 64 - -// blockToUint32 reads an 8 byte slice into two uint32s. -// The block is treated as big endian. -func blockToUint32(src []byte) (uint32, uint32) { - r0 := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r1 := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - return r0, r1 -} - -// uint32ToBlock writes two uint32s into an 8 byte data block. -// Values are written as big endian. -func uint32ToBlock(v0, v1 uint32, dst []byte) { - dst[0] = byte(v0 >> 24) - dst[1] = byte(v0 >> 16) - dst[2] = byte(v0 >> 8) - dst[3] = byte(v0) - dst[4] = byte(v1 >> 24) - dst[5] = byte(v1 >> 16) - dst[6] = byte(v1 >> 8) - dst[7] = byte(v1 >> 0) -} - -// encryptBlock encrypts a single 8 byte block using XTEA. -func encryptBlock(c *Cipher, dst, src []byte) { - v0, v1 := blockToUint32(src) - - // Two rounds of XTEA applied per loop - for i := 0; i < numRounds; { - v0 += ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] - i++ - v1 += ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] - i++ - } - - uint32ToBlock(v0, v1, dst) -} - -// decryptBlock decrypt a single 8 byte block using XTEA. -func decryptBlock(c *Cipher, dst, src []byte) { - v0, v1 := blockToUint32(src) - - // Two rounds of XTEA applied per loop - for i := numRounds; i > 0; { - i-- - v1 -= ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] - i-- - v0 -= ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] - } - - uint32ToBlock(v0, v1, dst) -} diff --git a/vendor/golang.org/x/crypto/xtea/cipher.go b/vendor/golang.org/x/crypto/xtea/cipher.go deleted file mode 100644 index 66ea0df1..00000000 --- a/vendor/golang.org/x/crypto/xtea/cipher.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package xtea implements XTEA encryption, as defined in Needham and Wheeler's -// 1997 technical report, "Tea extensions." -package xtea // import "golang.org/x/crypto/xtea" - -// For details, see http://www.cix.co.uk/~klockstone/xtea.pdf - -import "strconv" - -// The XTEA block size in bytes. -const BlockSize = 8 - -// A Cipher is an instance of an XTEA cipher using a particular key. -// table contains a series of precalculated values that are used each round. -type Cipher struct { - table [64]uint32 -} - -type KeySizeError int - -func (k KeySizeError) Error() string { - return "crypto/xtea: invalid key size " + strconv.Itoa(int(k)) -} - -// NewCipher creates and returns a new Cipher. -// The key argument should be the XTEA key. -// XTEA only supports 128 bit (16 byte) keys. -func NewCipher(key []byte) (*Cipher, error) { - k := len(key) - switch k { - default: - return nil, KeySizeError(k) - case 16: - break - } - - c := new(Cipher) - initCipher(c, key) - - return c, nil -} - -// BlockSize returns the XTEA block size, 8 bytes. -// It is necessary to satisfy the Block interface in the -// package "crypto/cipher". -func (c *Cipher) BlockSize() int { return BlockSize } - -// Encrypt encrypts the 8 byte buffer src using the key and stores the result in dst. -// Note that for amounts of data larger than a block, -// it is not safe to just call Encrypt on successive blocks; -// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). -func (c *Cipher) Encrypt(dst, src []byte) { encryptBlock(c, dst, src) } - -// Decrypt decrypts the 8 byte buffer src using the key k and stores the result in dst. -func (c *Cipher) Decrypt(dst, src []byte) { decryptBlock(c, dst, src) } - -// initCipher initializes the cipher context by creating a look up table -// of precalculated values that are based on the key. -func initCipher(c *Cipher, key []byte) { - // Load the key into four uint32s - var k [4]uint32 - for i := 0; i < len(k); i++ { - j := i << 2 // Multiply by 4 - k[i] = uint32(key[j+0])<<24 | uint32(key[j+1])<<16 | uint32(key[j+2])<<8 | uint32(key[j+3]) - } - - // Precalculate the table - const delta = 0x9E3779B9 - var sum uint32 - - // Two rounds of XTEA applied per loop - for i := 0; i < numRounds; { - c.table[i] = sum + k[sum&3] - i++ - sum += delta - c.table[i] = sum + k[(sum>>11)&3] - i++ - } -} diff --git a/vendor/golang.org/x/crypto/xtea/xtea_test.go b/vendor/golang.org/x/crypto/xtea/xtea_test.go deleted file mode 100644 index be711bf5..00000000 --- a/vendor/golang.org/x/crypto/xtea/xtea_test.go +++ /dev/null @@ -1,229 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xtea - -import ( - "testing" -) - -// A sample test key for when we just want to initialize a cipher -var testKey = []byte{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF} - -// Test that the block size for XTEA is correct -func TestBlocksize(t *testing.T) { - if BlockSize != 8 { - t.Errorf("BlockSize constant - expected 8, got %d", BlockSize) - return - } - - c, err := NewCipher(testKey) - if err != nil { - t.Errorf("NewCipher(%d bytes) = %s", len(testKey), err) - return - } - - result := c.BlockSize() - if result != 8 { - t.Errorf("BlockSize function - expected 8, got %d", result) - return - } -} - -// A series of test values to confirm that the Cipher.table array was initialized correctly -var testTable = []uint32{ - 0x00112233, 0x6B1568B8, 0xE28CE030, 0xC5089E2D, 0xC5089E2D, 0x1EFBD3A2, 0xA7845C2A, 0x78EF0917, - 0x78EF0917, 0x172682D0, 0x5B6AC714, 0x822AC955, 0x3DE68511, 0xDC1DFECA, 0x2062430E, 0x3611343F, - 0xF1CCEFFB, 0x900469B4, 0xD448ADF8, 0x2E3BE36D, 0xB6C46BF5, 0x994029F2, 0x994029F2, 0xF3335F67, - 0x6AAAD6DF, 0x4D2694DC, 0x4D2694DC, 0xEB5E0E95, 0x2FA252D9, 0x4551440A, 0x121E10D6, 0xB0558A8F, - 0xE388BDC3, 0x0A48C004, 0xC6047BC0, 0x643BF579, 0xA88039BD, 0x02736F32, 0x8AFBF7BA, 0x5C66A4A7, - 0x5C66A4A7, 0xC76AEB2C, 0x3EE262A4, 0x215E20A1, 0x215E20A1, 0x7B515616, 0x03D9DE9E, 0x1988CFCF, - 0xD5448B8B, 0x737C0544, 0xB7C04988, 0xDE804BC9, 0x9A3C0785, 0x3873813E, 0x7CB7C582, 0xD6AAFAF7, - 0x4E22726F, 0x309E306C, 0x309E306C, 0x8A9165E1, 0x1319EE69, 0xF595AC66, 0xF595AC66, 0x4F88E1DB, -} - -// Test that the cipher context is initialized correctly -func TestCipherInit(t *testing.T) { - c, err := NewCipher(testKey) - if err != nil { - t.Errorf("NewCipher(%d bytes) = %s", len(testKey), err) - return - } - - for i := 0; i < len(c.table); i++ { - if c.table[i] != testTable[i] { - t.Errorf("NewCipher() failed to initialize Cipher.table[%d] correctly. Expected %08X, got %08X", i, testTable[i], c.table[i]) - break - } - } -} - -// Test that invalid key sizes return an error -func TestInvalidKeySize(t *testing.T) { - // Test a long key - key := []byte{ - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, - } - - _, err := NewCipher(key) - if err == nil { - t.Errorf("Invalid key size %d didn't result in an error.", len(key)) - } - - // Test a short key - key = []byte{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77} - - _, err = NewCipher(key) - if err == nil { - t.Errorf("Invalid key size %d didn't result in an error.", len(key)) - } -} - -// Test that we can correctly decode some bytes we have encoded -func TestEncodeDecode(t *testing.T) { - original := []byte{0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF} - input := original - output := make([]byte, BlockSize) - - c, err := NewCipher(testKey) - if err != nil { - t.Errorf("NewCipher(%d bytes) = %s", len(testKey), err) - return - } - - // Encrypt the input block - c.Encrypt(output, input) - - // Check that the output does not match the input - differs := false - for i := 0; i < len(input); i++ { - if output[i] != input[i] { - differs = true - break - } - } - if differs == false { - t.Error("Cipher.Encrypt: Failed to encrypt the input block.") - return - } - - // Decrypt the block we just encrypted - input = output - output = make([]byte, BlockSize) - c.Decrypt(output, input) - - // Check that the output from decrypt matches our initial input - for i := 0; i < len(input); i++ { - if output[i] != original[i] { - t.Errorf("Decrypted byte %d differed. Expected %02X, got %02X\n", i, original[i], output[i]) - return - } - } -} - -// Test Vectors -type CryptTest struct { - key []byte - plainText []byte - cipherText []byte -} - -var CryptTests = []CryptTest{ - // These were sourced from http://www.freemedialibrary.com/index.php/XTEA_test_vectors - { - []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}, - []byte{0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}, - []byte{0x49, 0x7d, 0xf3, 0xd0, 0x72, 0x61, 0x2c, 0xb5}, - }, - { - []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}, - []byte{0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41}, - []byte{0xe7, 0x8f, 0x2d, 0x13, 0x74, 0x43, 0x41, 0xd8}, - }, - { - []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}, - []byte{0x5a, 0x5b, 0x6e, 0x27, 0x89, 0x48, 0xd7, 0x7f}, - []byte{0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41}, - }, - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}, - []byte{0xa0, 0x39, 0x05, 0x89, 0xf8, 0xb8, 0xef, 0xa5}, - }, - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41}, - []byte{0xed, 0x23, 0x37, 0x5a, 0x82, 0x1a, 0x8c, 0x2d}, - }, - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x70, 0xe1, 0x22, 0x5d, 0x6e, 0x4e, 0x76, 0x55}, - []byte{0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41}, - }, - - // These vectors are from http://wiki.secondlife.com/wiki/XTEA_Strong_Encryption_Implementation#Bouncy_Castle_C.23_API - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0xDE, 0xE9, 0xD4, 0xD8, 0xF7, 0x13, 0x1E, 0xD9}, - }, - { - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, - []byte{0x06, 0x5C, 0x1B, 0x89, 0x75, 0xC6, 0xA8, 0x16}, - }, - { - []byte{0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9A}, - []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - []byte{0x1F, 0xF9, 0xA0, 0x26, 0x1A, 0xC6, 0x42, 0x64}, - }, - { - []byte{0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9A}, - []byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}, - []byte{0x8C, 0x67, 0x15, 0x5B, 0x2E, 0xF9, 0x1E, 0xAD}, - }, -} - -// Test encryption -func TestCipherEncrypt(t *testing.T) { - for i, tt := range CryptTests { - c, err := NewCipher(tt.key) - if err != nil { - t.Errorf("NewCipher(%d bytes), vector %d = %s", len(tt.key), i, err) - continue - } - - out := make([]byte, len(tt.plainText)) - c.Encrypt(out, tt.plainText) - - for j := 0; j < len(out); j++ { - if out[j] != tt.cipherText[j] { - t.Errorf("Cipher.Encrypt %d: out[%d] = %02X, expected %02X", i, j, out[j], tt.cipherText[j]) - break - } - } - } -} - -// Test decryption -func TestCipherDecrypt(t *testing.T) { - for i, tt := range CryptTests { - c, err := NewCipher(tt.key) - if err != nil { - t.Errorf("NewCipher(%d bytes), vector %d = %s", len(tt.key), i, err) - continue - } - - out := make([]byte, len(tt.cipherText)) - c.Decrypt(out, tt.cipherText) - - for j := 0; j < len(out); j++ { - if out[j] != tt.plainText[j] { - t.Errorf("Cipher.Decrypt %d: out[%d] = %02X, expected %02X", i, j, out[j], tt.plainText[j]) - break - } - } - } -} diff --git a/vendor/golang.org/x/crypto/xts/xts.go b/vendor/golang.org/x/crypto/xts/xts.go deleted file mode 100644 index 92cbce99..00000000 --- a/vendor/golang.org/x/crypto/xts/xts.go +++ /dev/null @@ -1,137 +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 xts implements the XTS cipher mode as specified in IEEE P1619/D16. -// -// XTS mode is typically used for disk encryption, which presents a number of -// novel problems that make more common modes inapplicable. The disk is -// conceptually an array of sectors and we must be able to encrypt and decrypt -// a sector in isolation. However, an attacker must not be able to transpose -// two sectors of plaintext by transposing their ciphertext. -// -// XTS wraps a block cipher with Rogaway's XEX mode in order to build a -// tweakable block cipher. This allows each sector to have a unique tweak and -// effectively create a unique key for each sector. -// -// XTS does not provide any authentication. An attacker can manipulate the -// ciphertext and randomise a block (16 bytes) of the plaintext. -// -// (Note: this package does not implement ciphertext-stealing so sectors must -// be a multiple of 16 bytes.) -package xts // import "golang.org/x/crypto/xts" - -import ( - "crypto/cipher" - "encoding/binary" - "errors" -) - -// Cipher contains an expanded key structure. It doesn't contain mutable state -// and therefore can be used concurrently. -type Cipher struct { - k1, k2 cipher.Block -} - -// blockSize is the block size that the underlying cipher must have. XTS is -// only defined for 16-byte ciphers. -const blockSize = 16 - -// NewCipher creates a Cipher given a function for creating the underlying -// block cipher (which must have a block size of 16 bytes). The key must be -// twice the length of the underlying cipher's key. -func NewCipher(cipherFunc func([]byte) (cipher.Block, error), key []byte) (c *Cipher, err error) { - c = new(Cipher) - if c.k1, err = cipherFunc(key[:len(key)/2]); err != nil { - return - } - c.k2, err = cipherFunc(key[len(key)/2:]) - - if c.k1.BlockSize() != blockSize { - err = errors.New("xts: cipher does not have a block size of 16") - } - - return -} - -// Encrypt encrypts a sector of plaintext and puts the result into ciphertext. -// Plaintext and ciphertext must overlap entirely or not at all. -// Sectors must be a multiple of 16 bytes and less than 2²⁴ bytes. -func (c *Cipher) Encrypt(ciphertext, plaintext []byte, sectorNum uint64) { - if len(ciphertext) < len(plaintext) { - panic("xts: ciphertext is smaller than plaintext") - } - if len(plaintext)%blockSize != 0 { - panic("xts: plaintext is not a multiple of the block size") - } - - var tweak [blockSize]byte - binary.LittleEndian.PutUint64(tweak[:8], sectorNum) - - c.k2.Encrypt(tweak[:], tweak[:]) - - for len(plaintext) > 0 { - for j := range tweak { - ciphertext[j] = plaintext[j] ^ tweak[j] - } - c.k1.Encrypt(ciphertext, ciphertext) - for j := range tweak { - ciphertext[j] ^= tweak[j] - } - plaintext = plaintext[blockSize:] - ciphertext = ciphertext[blockSize:] - - mul2(&tweak) - } -} - -// Decrypt decrypts a sector of ciphertext and puts the result into plaintext. -// Plaintext and ciphertext must overlap entirely or not at all. -// Sectors must be a multiple of 16 bytes and less than 2²⁴ bytes. -func (c *Cipher) Decrypt(plaintext, ciphertext []byte, sectorNum uint64) { - if len(plaintext) < len(ciphertext) { - panic("xts: plaintext is smaller than ciphertext") - } - if len(ciphertext)%blockSize != 0 { - panic("xts: ciphertext is not a multiple of the block size") - } - - var tweak [blockSize]byte - binary.LittleEndian.PutUint64(tweak[:8], sectorNum) - - c.k2.Encrypt(tweak[:], tweak[:]) - - for len(ciphertext) > 0 { - for j := range tweak { - plaintext[j] = ciphertext[j] ^ tweak[j] - } - c.k1.Decrypt(plaintext, plaintext) - for j := range tweak { - plaintext[j] ^= tweak[j] - } - plaintext = plaintext[blockSize:] - ciphertext = ciphertext[blockSize:] - - mul2(&tweak) - } -} - -// mul2 multiplies tweak by 2 in GF(2¹²⁸) with an irreducible polynomial of -// x¹²⁸ + x⁷ + x² + x + 1. -func mul2(tweak *[blockSize]byte) { - var carryIn byte - for j := range tweak { - carryOut := tweak[j] >> 7 - tweak[j] = (tweak[j] << 1) + carryIn - carryIn = carryOut - } - if carryIn != 0 { - // If we have a carry bit then we need to subtract a multiple - // of the irreducible polynomial (x¹²⁸ + x⁷ + x² + x + 1). - // By dropping the carry bit, we're subtracting the x^128 term - // so all that remains is to subtract x⁷ + x² + x + 1. - // Subtraction (and addition) in this representation is just - // XOR. - tweak[0] ^= 1<<7 | 1<<2 | 1<<1 | 1 - } -} diff --git a/vendor/golang.org/x/crypto/xts/xts_test.go b/vendor/golang.org/x/crypto/xts/xts_test.go deleted file mode 100644 index 96d3b6cb..00000000 --- a/vendor/golang.org/x/crypto/xts/xts_test.go +++ /dev/null @@ -1,105 +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 xts - -import ( - "bytes" - "crypto/aes" - "encoding/hex" - "testing" -) - -// These test vectors have been taken from IEEE P1619/D16, Annex B. -var xtsTestVectors = []struct { - key string - sector uint64 - plaintext string - ciphertext string -}{ - { - "0000000000000000000000000000000000000000000000000000000000000000", - 0, - "0000000000000000000000000000000000000000000000000000000000000000", - "917cf69ebd68b2ec9b9fe9a3eadda692cd43d2f59598ed858c02c2652fbf922e", - }, { - "1111111111111111111111111111111122222222222222222222222222222222", - 0x3333333333, - "4444444444444444444444444444444444444444444444444444444444444444", - "c454185e6a16936e39334038acef838bfb186fff7480adc4289382ecd6d394f0", - }, { - "fffefdfcfbfaf9f8f7f6f5f4f3f2f1f022222222222222222222222222222222", - 0x3333333333, - "4444444444444444444444444444444444444444444444444444444444444444", - "af85336b597afc1a900b2eb21ec949d292df4c047e0b21532186a5971a227a89", - }, { - "2718281828459045235360287471352631415926535897932384626433832795", - 0, - "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff", - "27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f9172af82b604dc4b8e51bcb08235a6f4341332e4ca60482a4ba1a03b3e65008fc5da76b70bf1690db4eae29c5f1badd03c5ccf2a55d705ddcd86d449511ceb7ec30bf12b1fa35b913f9f747a8afd1b130e94bff94effd01a91735ca1726acd0b197c4e5b03393697e126826fb6bbde8ecc1e08298516e2c9ed03ff3c1b7860f6de76d4cecd94c8119855ef5297ca67e9f3e7ff72b1e99785ca0a7e7720c5b36dc6d72cac9574c8cbbc2f801e23e56fd344b07f22154beba0f08ce8891e643ed995c94d9a69c9f1b5f499027a78572aeebd74d20cc39881c213ee770b1010e4bea718846977ae119f7a023ab58cca0ad752afe656bb3c17256a9f6e9bf19fdd5a38fc82bbe872c5539edb609ef4f79c203ebb140f2e583cb2ad15b4aa5b655016a8449277dbd477ef2c8d6c017db738b18deb4a427d1923ce3ff262735779a418f20a282df920147beabe421ee5319d0568", - }, { - "2718281828459045235360287471352631415926535897932384626433832795", - 1, - "27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f9172af82b604dc4b8e51bcb08235a6f4341332e4ca60482a4ba1a03b3e65008fc5da76b70bf1690db4eae29c5f1badd03c5ccf2a55d705ddcd86d449511ceb7ec30bf12b1fa35b913f9f747a8afd1b130e94bff94effd01a91735ca1726acd0b197c4e5b03393697e126826fb6bbde8ecc1e08298516e2c9ed03ff3c1b7860f6de76d4cecd94c8119855ef5297ca67e9f3e7ff72b1e99785ca0a7e7720c5b36dc6d72cac9574c8cbbc2f801e23e56fd344b07f22154beba0f08ce8891e643ed995c94d9a69c9f1b5f499027a78572aeebd74d20cc39881c213ee770b1010e4bea718846977ae119f7a023ab58cca0ad752afe656bb3c17256a9f6e9bf19fdd5a38fc82bbe872c5539edb609ef4f79c203ebb140f2e583cb2ad15b4aa5b655016a8449277dbd477ef2c8d6c017db738b18deb4a427d1923ce3ff262735779a418f20a282df920147beabe421ee5319d0568", - "264d3ca8512194fec312c8c9891f279fefdd608d0c027b60483a3fa811d65ee59d52d9e40ec5672d81532b38b6b089ce951f0f9c35590b8b978d175213f329bb1c2fd30f2f7f30492a61a532a79f51d36f5e31a7c9a12c286082ff7d2394d18f783e1a8e72c722caaaa52d8f065657d2631fd25bfd8e5baad6e527d763517501c68c5edc3cdd55435c532d7125c8614deed9adaa3acade5888b87bef641c4c994c8091b5bcd387f3963fb5bc37aa922fbfe3df4e5b915e6eb514717bdd2a74079a5073f5c4bfd46adf7d282e7a393a52579d11a028da4d9cd9c77124f9648ee383b1ac763930e7162a8d37f350b2f74b8472cf09902063c6b32e8c2d9290cefbd7346d1c779a0df50edcde4531da07b099c638e83a755944df2aef1aa31752fd323dcb710fb4bfbb9d22b925bc3577e1b8949e729a90bbafeacf7f7879e7b1147e28ba0bae940db795a61b15ecf4df8db07b824bb062802cc98a9545bb2aaeed77cb3fc6db15dcd7d80d7d5bc406c4970a3478ada8899b329198eb61c193fb6275aa8ca340344a75a862aebe92eee1ce032fd950b47d7704a3876923b4ad62844bf4a09c4dbe8b4397184b7471360c9564880aedddb9baa4af2e75394b08cd32ff479c57a07d3eab5d54de5f9738b8d27f27a9f0ab11799d7b7ffefb2704c95c6ad12c39f1e867a4b7b1d7818a4b753dfd2a89ccb45e001a03a867b187f225dd", - }, { - "27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592", - 0xff, - "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff", - "1c3b3a102f770386e4836c99e370cf9bea00803f5e482357a4ae12d414a3e63b5d31e276f8fe4a8d66b317f9ac683f44680a86ac35adfc3345befecb4bb188fd5776926c49a3095eb108fd1098baec70aaa66999a72a82f27d848b21d4a741b0c5cd4d5fff9dac89aeba122961d03a757123e9870f8acf1000020887891429ca2a3e7a7d7df7b10355165c8b9a6d0a7de8b062c4500dc4cd120c0f7418dae3d0b5781c34803fa75421c790dfe1de1834f280d7667b327f6c8cd7557e12ac3a0f93ec05c52e0493ef31a12d3d9260f79a289d6a379bc70c50841473d1a8cc81ec583e9645e07b8d9670655ba5bbcfecc6dc3966380ad8fecb17b6ba02469a020a84e18e8f84252070c13e9f1f289be54fbc481457778f616015e1327a02b140f1505eb309326d68378f8374595c849d84f4c333ec4423885143cb47bd71c5edae9be69a2ffeceb1bec9de244fbe15992b11b77c040f12bd8f6a975a44a0f90c29a9abc3d4d893927284c58754cce294529f8614dcd2aba991925fedc4ae74ffac6e333b93eb4aff0479da9a410e4450e0dd7ae4c6e2910900575da401fc07059f645e8b7e9bfdef33943054ff84011493c27b3429eaedb4ed5376441a77ed43851ad77f16f541dfd269d50d6a5f14fb0aab1cbb4c1550be97f7ab4066193c4caa773dad38014bd2092fa755c824bb5e54c4f36ffda9fcea70b9c6e693e148c151", - }, -} - -func fromHex(s string) []byte { - ret, err := hex.DecodeString(s) - if err != nil { - panic("xts: invalid hex in test") - } - return ret -} - -func TestXTS(t *testing.T) { - for i, test := range xtsTestVectors { - c, err := NewCipher(aes.NewCipher, fromHex(test.key)) - if err != nil { - t.Errorf("#%d: failed to create cipher: %s", i, err) - continue - } - plaintext := fromHex(test.plaintext) - ciphertext := make([]byte, len(plaintext)) - c.Encrypt(ciphertext, plaintext, test.sector) - - expectedCiphertext := fromHex(test.ciphertext) - if !bytes.Equal(ciphertext, expectedCiphertext) { - t.Errorf("#%d: encrypted failed, got: %x, want: %x", i, ciphertext, expectedCiphertext) - continue - } - - decrypted := make([]byte, len(ciphertext)) - c.Decrypt(decrypted, ciphertext, test.sector) - if !bytes.Equal(decrypted, plaintext) { - t.Errorf("#%d: decryption failed, got: %x, want: %x", i, decrypted, plaintext) - } - } -} - -func TestShorterCiphertext(t *testing.T) { - // Decrypt used to panic if the input was shorter than the output. See - // https://go-review.googlesource.com/c/39954/ - c, err := NewCipher(aes.NewCipher, make([]byte, 32)) - if err != nil { - t.Fatalf("NewCipher failed: %s", err) - } - - plaintext := make([]byte, 32) - encrypted := make([]byte, 48) - decrypted := make([]byte, 48) - - c.Encrypt(encrypted, plaintext, 0) - c.Decrypt(decrypted, encrypted[:len(plaintext)], 0) - - if !bytes.Equal(plaintext, decrypted[:len(plaintext)]) { - t.Errorf("En/Decryption is not inverse") - } -} diff --git a/vendor/golang.org/x/net/.gitattributes b/vendor/golang.org/x/net/.gitattributes deleted file mode 100644 index d2f212e5..00000000 --- a/vendor/golang.org/x/net/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -# Treat all files in this repo as binary, with no git magic updating -# line endings. Windows users contributing to Go will need to use a -# modern version of git and editors capable of LF line endings. -# -# We'll prevent accidental CRLF line endings from entering the repo -# via the git-review gofmt checks. -# -# See golang.org/issue/9281 - -* -text diff --git a/vendor/golang.org/x/net/.gitignore b/vendor/golang.org/x/net/.gitignore deleted file mode 100644 index 8339fd61..00000000 --- a/vendor/golang.org/x/net/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Add no patterns to .hgignore except for files generated by the build. -last-change diff --git a/vendor/golang.org/x/net/CONTRIBUTING.md b/vendor/golang.org/x/net/CONTRIBUTING.md deleted file mode 100644 index 88dff59b..00000000 --- a/vendor/golang.org/x/net/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# Contributing to Go - -Go is an open source project. - -It is the work of hundreds of contributors. We appreciate your help! - - -## Filing issues - -When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions: - -1. What version of Go are you using (`go version`)? -2. What operating system and processor architecture are you using? -3. What did you do? -4. What did you expect to see? -5. What did you see instead? - -General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. -The gophers there will answer or ask you to file an issue if you've tripped over a bug. - -## Contributing code - -Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) -before sending patches. - -**We do not accept GitHub pull requests** -(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review). - -Unless otherwise noted, the Go source files are distributed under -the BSD-style license found in the LICENSE file. - diff --git a/vendor/golang.org/x/net/README.md b/vendor/golang.org/x/net/README.md deleted file mode 100644 index 00a9b6eb..00000000 --- a/vendor/golang.org/x/net/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Go Networking - -This repository holds supplementary Go networking libraries. - -## Download/Install - -The easiest way to install is to run `go get -u golang.org/x/net`. You can -also manually git clone the repository to `$GOPATH/src/golang.org/x/net`. - -## Report Issues / Send Patches - -This repository uses Gerrit for code changes. To learn how to submit -changes to this repository, see https://golang.org/doc/contribute.html. -The main issue tracker for the net repository is located at -https://github.com/golang/go/issues. Prefix your issue with "x/net:" in the -subject line, so it is easy to find. diff --git a/vendor/golang.org/x/net/bpf/asm.go b/vendor/golang.org/x/net/bpf/asm.go deleted file mode 100644 index 15e21b18..00000000 --- a/vendor/golang.org/x/net/bpf/asm.go +++ /dev/null @@ -1,41 +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 bpf - -import "fmt" - -// Assemble converts insts into raw instructions suitable for loading -// into a BPF virtual machine. -// -// Currently, no optimization is attempted, the assembled program flow -// is exactly as provided. -func Assemble(insts []Instruction) ([]RawInstruction, error) { - ret := make([]RawInstruction, len(insts)) - var err error - for i, inst := range insts { - ret[i], err = inst.Assemble() - if err != nil { - return nil, fmt.Errorf("assembling instruction %d: %s", i+1, err) - } - } - return ret, nil -} - -// Disassemble attempts to parse raw back into -// Instructions. Unrecognized RawInstructions are assumed to be an -// extension not implemented by this package, and are passed through -// unchanged to the output. The allDecoded value reports whether insts -// contains no RawInstructions. -func Disassemble(raw []RawInstruction) (insts []Instruction, allDecoded bool) { - insts = make([]Instruction, len(raw)) - allDecoded = true - for i, r := range raw { - insts[i] = r.Disassemble() - if _, ok := insts[i].(RawInstruction); ok { - allDecoded = false - } - } - return insts, allDecoded -} diff --git a/vendor/golang.org/x/net/bpf/constants.go b/vendor/golang.org/x/net/bpf/constants.go deleted file mode 100644 index b89ca352..00000000 --- a/vendor/golang.org/x/net/bpf/constants.go +++ /dev/null @@ -1,218 +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 bpf - -// A Register is a register of the BPF virtual machine. -type Register uint16 - -const ( - // RegA is the accumulator register. RegA is always the - // destination register of ALU operations. - RegA Register = iota - // RegX is the indirection register, used by LoadIndirect - // operations. - RegX -) - -// An ALUOp is an arithmetic or logic operation. -type ALUOp uint16 - -// ALU binary operation types. -const ( - ALUOpAdd ALUOp = iota << 4 - ALUOpSub - ALUOpMul - ALUOpDiv - ALUOpOr - ALUOpAnd - ALUOpShiftLeft - ALUOpShiftRight - aluOpNeg // Not exported because it's the only unary ALU operation, and gets its own instruction type. - ALUOpMod - ALUOpXor -) - -// A JumpTest is a comparison operator used in conditional jumps. -type JumpTest uint16 - -// Supported operators for conditional jumps. -const ( - // K == A - JumpEqual JumpTest = iota - // K != A - JumpNotEqual - // K > A - JumpGreaterThan - // K < A - JumpLessThan - // K >= A - JumpGreaterOrEqual - // K <= A - JumpLessOrEqual - // K & A != 0 - JumpBitsSet - // K & A == 0 - JumpBitsNotSet -) - -// An Extension is a function call provided by the kernel that -// performs advanced operations that are expensive or impossible -// within the BPF virtual machine. -// -// Extensions are only implemented by the Linux kernel. -// -// TODO: should we prune this list? Some of these extensions seem -// either broken or near-impossible to use correctly, whereas other -// (len, random, ifindex) are quite useful. -type Extension int - -// Extension functions available in the Linux kernel. -const ( - // extOffset is the negative maximum number of instructions used - // to load instructions by overloading the K argument. - extOffset = -0x1000 - // ExtLen returns the length of the packet. - ExtLen Extension = 1 - // ExtProto returns the packet's L3 protocol type. - ExtProto Extension = 0 - // ExtType returns the packet's type (skb->pkt_type in the kernel) - // - // TODO: better documentation. How nice an API do we want to - // provide for these esoteric extensions? - ExtType Extension = 4 - // ExtPayloadOffset returns the offset of the packet payload, or - // the first protocol header that the kernel does not know how to - // parse. - ExtPayloadOffset Extension = 52 - // ExtInterfaceIndex returns the index of the interface on which - // the packet was received. - ExtInterfaceIndex Extension = 8 - // ExtNetlinkAttr returns the netlink attribute of type X at - // offset A. - ExtNetlinkAttr Extension = 12 - // ExtNetlinkAttrNested returns the nested netlink attribute of - // type X at offset A. - ExtNetlinkAttrNested Extension = 16 - // ExtMark returns the packet's mark value. - ExtMark Extension = 20 - // ExtQueue returns the packet's assigned hardware queue. - ExtQueue Extension = 24 - // ExtLinkLayerType returns the packet's hardware address type - // (e.g. Ethernet, Infiniband). - ExtLinkLayerType Extension = 28 - // ExtRXHash returns the packets receive hash. - // - // TODO: figure out what this rxhash actually is. - ExtRXHash Extension = 32 - // ExtCPUID returns the ID of the CPU processing the current - // packet. - ExtCPUID Extension = 36 - // ExtVLANTag returns the packet's VLAN tag. - ExtVLANTag Extension = 44 - // ExtVLANTagPresent returns non-zero if the packet has a VLAN - // tag. - // - // TODO: I think this might be a lie: it reads bit 0x1000 of the - // VLAN header, which changed meaning in recent revisions of the - // spec - this extension may now return meaningless information. - ExtVLANTagPresent Extension = 48 - // ExtVLANProto returns 0x8100 if the frame has a VLAN header, - // 0x88a8 if the frame has a "Q-in-Q" double VLAN header, or some - // other value if no VLAN information is present. - ExtVLANProto Extension = 60 - // ExtRand returns a uniformly random uint32. - ExtRand Extension = 56 -) - -// The following gives names to various bit patterns used in opcode construction. - -const ( - opMaskCls uint16 = 0x7 - // opClsLoad masks - opMaskLoadDest = 0x01 - opMaskLoadWidth = 0x18 - opMaskLoadMode = 0xe0 - // opClsALU - opMaskOperandSrc = 0x08 - opMaskOperator = 0xf0 - // opClsJump - opMaskJumpConst = 0x0f - opMaskJumpCond = 0xf0 -) - -const ( - // +---------------+-----------------+---+---+---+ - // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 0 | - // +---------------+-----------------+---+---+---+ - opClsLoadA uint16 = iota - // +---------------+-----------------+---+---+---+ - // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 1 | - // +---------------+-----------------+---+---+---+ - opClsLoadX - // +---+---+---+---+---+---+---+---+ - // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | - // +---+---+---+---+---+---+---+---+ - opClsStoreA - // +---+---+---+---+---+---+---+---+ - // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | - // +---+---+---+---+---+---+---+---+ - opClsStoreX - // +---------------+-----------------+---+---+---+ - // | Operator (4b) | OperandSrc (1b) | 1 | 0 | 0 | - // +---------------+-----------------+---+---+---+ - opClsALU - // +-----------------------------+---+---+---+---+ - // | TestOperator (4b) | 0 | 1 | 0 | 1 | - // +-----------------------------+---+---+---+---+ - opClsJump - // +---+-------------------------+---+---+---+---+ - // | 0 | 0 | 0 | RetSrc (1b) | 0 | 1 | 1 | 0 | - // +---+-------------------------+---+---+---+---+ - opClsReturn - // +---+-------------------------+---+---+---+---+ - // | 0 | 0 | 0 | TXAorTAX (1b) | 0 | 1 | 1 | 1 | - // +---+-------------------------+---+---+---+---+ - opClsMisc -) - -const ( - opAddrModeImmediate uint16 = iota << 5 - opAddrModeAbsolute - opAddrModeIndirect - opAddrModeScratch - opAddrModePacketLen // actually an extension, not an addressing mode. - opAddrModeMemShift -) - -const ( - opLoadWidth4 uint16 = iota << 3 - opLoadWidth2 - opLoadWidth1 -) - -// Operator defined by ALUOp* - -const ( - opALUSrcConstant uint16 = iota << 3 - opALUSrcX -) - -const ( - opJumpAlways = iota << 4 - opJumpEqual - opJumpGT - opJumpGE - opJumpSet -) - -const ( - opRetSrcConstant uint16 = iota << 4 - opRetSrcA -) - -const ( - opMiscTAX = 0x00 - opMiscTXA = 0x80 -) diff --git a/vendor/golang.org/x/net/bpf/doc.go b/vendor/golang.org/x/net/bpf/doc.go deleted file mode 100644 index ae62feb5..00000000 --- a/vendor/golang.org/x/net/bpf/doc.go +++ /dev/null @@ -1,82 +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 bpf implements marshaling and unmarshaling of programs for the -Berkeley Packet Filter virtual machine, and provides a Go implementation -of the virtual machine. - -BPF's main use is to specify a packet filter for network taps, so that -the kernel doesn't have to expensively copy every packet it sees to -userspace. However, it's been repurposed to other areas where running -user code in-kernel is needed. For example, Linux's seccomp uses BPF -to apply security policies to system calls. For simplicity, this -documentation refers only to packets, but other uses of BPF have their -own data payloads. - -BPF programs run in a restricted virtual machine. It has almost no -access to kernel functions, and while conditional branches are -allowed, they can only jump forwards, to guarantee that there are no -infinite loops. - -The virtual machine - -The BPF VM is an accumulator machine. Its main register, called -register A, is an implicit source and destination in all arithmetic -and logic operations. The machine also has 16 scratch registers for -temporary storage, and an indirection register (register X) for -indirect memory access. All registers are 32 bits wide. - -Each run of a BPF program is given one packet, which is placed in the -VM's read-only "main memory". LoadAbsolute and LoadIndirect -instructions can fetch up to 32 bits at a time into register A for -examination. - -The goal of a BPF program is to produce and return a verdict (uint32), -which tells the kernel what to do with the packet. In the context of -packet filtering, the returned value is the number of bytes of the -packet to forward to userspace, or 0 to ignore the packet. Other -contexts like seccomp define their own return values. - -In order to simplify programs, attempts to read past the end of the -packet terminate the program execution with a verdict of 0 (ignore -packet). This means that the vast majority of BPF programs don't need -to do any explicit bounds checking. - -In addition to the bytes of the packet, some BPF programs have access -to extensions, which are essentially calls to kernel utility -functions. Currently, the only extensions supported by this package -are the Linux packet filter extensions. - -Examples - -This packet filter selects all ARP packets. - - bpf.Assemble([]bpf.Instruction{ - // Load "EtherType" field from the ethernet header. - bpf.LoadAbsolute{Off: 12, Size: 2}, - // Skip over the next instruction if EtherType is not ARP. - bpf.JumpIf{Cond: bpf.JumpNotEqual, Val: 0x0806, SkipTrue: 1}, - // Verdict is "send up to 4k of the packet to userspace." - bpf.RetConstant{Val: 4096}, - // Verdict is "ignore packet." - bpf.RetConstant{Val: 0}, - }) - -This packet filter captures a random 1% sample of traffic. - - bpf.Assemble([]bpf.Instruction{ - // Get a 32-bit random number from the Linux kernel. - bpf.LoadExtension{Num: bpf.ExtRand}, - // 1% dice roll? - bpf.JumpIf{Cond: bpf.JumpLessThan, Val: 2^32/100, SkipFalse: 1}, - // Capture. - bpf.RetConstant{Val: 4096}, - // Ignore. - bpf.RetConstant{Val: 0}, - }) - -*/ -package bpf // import "golang.org/x/net/bpf" diff --git a/vendor/golang.org/x/net/bpf/instructions.go b/vendor/golang.org/x/net/bpf/instructions.go deleted file mode 100644 index f9dc0e8e..00000000 --- a/vendor/golang.org/x/net/bpf/instructions.go +++ /dev/null @@ -1,704 +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 bpf - -import "fmt" - -// An Instruction is one instruction executed by the BPF virtual -// machine. -type Instruction interface { - // Assemble assembles the Instruction into a RawInstruction. - Assemble() (RawInstruction, error) -} - -// A RawInstruction is a raw BPF virtual machine instruction. -type RawInstruction struct { - // Operation to execute. - Op uint16 - // For conditional jump instructions, the number of instructions - // to skip if the condition is true/false. - Jt uint8 - Jf uint8 - // Constant parameter. The meaning depends on the Op. - K uint32 -} - -// Assemble implements the Instruction Assemble method. -func (ri RawInstruction) Assemble() (RawInstruction, error) { return ri, nil } - -// Disassemble parses ri into an Instruction and returns it. If ri is -// not recognized by this package, ri itself is returned. -func (ri RawInstruction) Disassemble() Instruction { - switch ri.Op & opMaskCls { - case opClsLoadA, opClsLoadX: - reg := Register(ri.Op & opMaskLoadDest) - sz := 0 - switch ri.Op & opMaskLoadWidth { - case opLoadWidth4: - sz = 4 - case opLoadWidth2: - sz = 2 - case opLoadWidth1: - sz = 1 - default: - return ri - } - switch ri.Op & opMaskLoadMode { - case opAddrModeImmediate: - if sz != 4 { - return ri - } - return LoadConstant{Dst: reg, Val: ri.K} - case opAddrModeScratch: - if sz != 4 || ri.K > 15 { - return ri - } - return LoadScratch{Dst: reg, N: int(ri.K)} - case opAddrModeAbsolute: - if ri.K > extOffset+0xffffffff { - return LoadExtension{Num: Extension(-extOffset + ri.K)} - } - return LoadAbsolute{Size: sz, Off: ri.K} - case opAddrModeIndirect: - return LoadIndirect{Size: sz, Off: ri.K} - case opAddrModePacketLen: - if sz != 4 { - return ri - } - return LoadExtension{Num: ExtLen} - case opAddrModeMemShift: - return LoadMemShift{Off: ri.K} - default: - return ri - } - - case opClsStoreA: - if ri.Op != opClsStoreA || ri.K > 15 { - return ri - } - return StoreScratch{Src: RegA, N: int(ri.K)} - - case opClsStoreX: - if ri.Op != opClsStoreX || ri.K > 15 { - return ri - } - return StoreScratch{Src: RegX, N: int(ri.K)} - - case opClsALU: - switch op := ALUOp(ri.Op & opMaskOperator); op { - case ALUOpAdd, ALUOpSub, ALUOpMul, ALUOpDiv, ALUOpOr, ALUOpAnd, ALUOpShiftLeft, ALUOpShiftRight, ALUOpMod, ALUOpXor: - if ri.Op&opMaskOperandSrc != 0 { - return ALUOpX{Op: op} - } - return ALUOpConstant{Op: op, Val: ri.K} - case aluOpNeg: - return NegateA{} - default: - return ri - } - - case opClsJump: - if ri.Op&opMaskJumpConst != opClsJump { - return ri - } - switch ri.Op & opMaskJumpCond { - case opJumpAlways: - return Jump{Skip: ri.K} - case opJumpEqual: - if ri.Jt == 0 { - return JumpIf{ - Cond: JumpNotEqual, - Val: ri.K, - SkipTrue: ri.Jf, - SkipFalse: 0, - } - } - return JumpIf{ - Cond: JumpEqual, - Val: ri.K, - SkipTrue: ri.Jt, - SkipFalse: ri.Jf, - } - case opJumpGT: - if ri.Jt == 0 { - return JumpIf{ - Cond: JumpLessOrEqual, - Val: ri.K, - SkipTrue: ri.Jf, - SkipFalse: 0, - } - } - return JumpIf{ - Cond: JumpGreaterThan, - Val: ri.K, - SkipTrue: ri.Jt, - SkipFalse: ri.Jf, - } - case opJumpGE: - if ri.Jt == 0 { - return JumpIf{ - Cond: JumpLessThan, - Val: ri.K, - SkipTrue: ri.Jf, - SkipFalse: 0, - } - } - return JumpIf{ - Cond: JumpGreaterOrEqual, - Val: ri.K, - SkipTrue: ri.Jt, - SkipFalse: ri.Jf, - } - case opJumpSet: - return JumpIf{ - Cond: JumpBitsSet, - Val: ri.K, - SkipTrue: ri.Jt, - SkipFalse: ri.Jf, - } - default: - return ri - } - - case opClsReturn: - switch ri.Op { - case opClsReturn | opRetSrcA: - return RetA{} - case opClsReturn | opRetSrcConstant: - return RetConstant{Val: ri.K} - default: - return ri - } - - case opClsMisc: - switch ri.Op { - case opClsMisc | opMiscTAX: - return TAX{} - case opClsMisc | opMiscTXA: - return TXA{} - default: - return ri - } - - default: - panic("unreachable") // switch is exhaustive on the bit pattern - } -} - -// LoadConstant loads Val into register Dst. -type LoadConstant struct { - Dst Register - Val uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadConstant) Assemble() (RawInstruction, error) { - return assembleLoad(a.Dst, 4, opAddrModeImmediate, a.Val) -} - -// String returns the instruction in assembler notation. -func (a LoadConstant) String() string { - switch a.Dst { - case RegA: - return fmt.Sprintf("ld #%d", a.Val) - case RegX: - return fmt.Sprintf("ldx #%d", a.Val) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// LoadScratch loads scratch[N] into register Dst. -type LoadScratch struct { - Dst Register - N int // 0-15 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadScratch) Assemble() (RawInstruction, error) { - if a.N < 0 || a.N > 15 { - return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) - } - return assembleLoad(a.Dst, 4, opAddrModeScratch, uint32(a.N)) -} - -// String returns the instruction in assembler notation. -func (a LoadScratch) String() string { - switch a.Dst { - case RegA: - return fmt.Sprintf("ld M[%d]", a.N) - case RegX: - return fmt.Sprintf("ldx M[%d]", a.N) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// LoadAbsolute loads packet[Off:Off+Size] as an integer value into -// register A. -type LoadAbsolute struct { - Off uint32 - Size int // 1, 2 or 4 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadAbsolute) Assemble() (RawInstruction, error) { - return assembleLoad(RegA, a.Size, opAddrModeAbsolute, a.Off) -} - -// String returns the instruction in assembler notation. -func (a LoadAbsolute) String() string { - switch a.Size { - case 1: // byte - return fmt.Sprintf("ldb [%d]", a.Off) - case 2: // half word - return fmt.Sprintf("ldh [%d]", a.Off) - case 4: // word - if a.Off > extOffset+0xffffffff { - return LoadExtension{Num: Extension(a.Off + 0x1000)}.String() - } - return fmt.Sprintf("ld [%d]", a.Off) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// LoadIndirect loads packet[X+Off:X+Off+Size] as an integer value -// into register A. -type LoadIndirect struct { - Off uint32 - Size int // 1, 2 or 4 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadIndirect) Assemble() (RawInstruction, error) { - return assembleLoad(RegA, a.Size, opAddrModeIndirect, a.Off) -} - -// String returns the instruction in assembler notation. -func (a LoadIndirect) String() string { - switch a.Size { - case 1: // byte - return fmt.Sprintf("ldb [x + %d]", a.Off) - case 2: // half word - return fmt.Sprintf("ldh [x + %d]", a.Off) - case 4: // word - return fmt.Sprintf("ld [x + %d]", a.Off) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// LoadMemShift multiplies the first 4 bits of the byte at packet[Off] -// by 4 and stores the result in register X. -// -// This instruction is mainly useful to load into X the length of an -// IPv4 packet header in a single instruction, rather than have to do -// the arithmetic on the header's first byte by hand. -type LoadMemShift struct { - Off uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadMemShift) Assemble() (RawInstruction, error) { - return assembleLoad(RegX, 1, opAddrModeMemShift, a.Off) -} - -// String returns the instruction in assembler notation. -func (a LoadMemShift) String() string { - return fmt.Sprintf("ldx 4*([%d]&0xf)", a.Off) -} - -// LoadExtension invokes a linux-specific extension and stores the -// result in register A. -type LoadExtension struct { - Num Extension -} - -// Assemble implements the Instruction Assemble method. -func (a LoadExtension) Assemble() (RawInstruction, error) { - if a.Num == ExtLen { - return assembleLoad(RegA, 4, opAddrModePacketLen, 0) - } - return assembleLoad(RegA, 4, opAddrModeAbsolute, uint32(extOffset+a.Num)) -} - -// String returns the instruction in assembler notation. -func (a LoadExtension) String() string { - switch a.Num { - case ExtLen: - return "ld #len" - case ExtProto: - return "ld #proto" - case ExtType: - return "ld #type" - case ExtPayloadOffset: - return "ld #poff" - case ExtInterfaceIndex: - return "ld #ifidx" - case ExtNetlinkAttr: - return "ld #nla" - case ExtNetlinkAttrNested: - return "ld #nlan" - case ExtMark: - return "ld #mark" - case ExtQueue: - return "ld #queue" - case ExtLinkLayerType: - return "ld #hatype" - case ExtRXHash: - return "ld #rxhash" - case ExtCPUID: - return "ld #cpu" - case ExtVLANTag: - return "ld #vlan_tci" - case ExtVLANTagPresent: - return "ld #vlan_avail" - case ExtVLANProto: - return "ld #vlan_tpid" - case ExtRand: - return "ld #rand" - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// StoreScratch stores register Src into scratch[N]. -type StoreScratch struct { - Src Register - N int // 0-15 -} - -// Assemble implements the Instruction Assemble method. -func (a StoreScratch) Assemble() (RawInstruction, error) { - if a.N < 0 || a.N > 15 { - return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) - } - var op uint16 - switch a.Src { - case RegA: - op = opClsStoreA - case RegX: - op = opClsStoreX - default: - return RawInstruction{}, fmt.Errorf("invalid source register %v", a.Src) - } - - return RawInstruction{ - Op: op, - K: uint32(a.N), - }, nil -} - -// String returns the instruction in assembler notation. -func (a StoreScratch) String() string { - switch a.Src { - case RegA: - return fmt.Sprintf("st M[%d]", a.N) - case RegX: - return fmt.Sprintf("stx M[%d]", a.N) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// ALUOpConstant executes A = A Val. -type ALUOpConstant struct { - Op ALUOp - Val uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a ALUOpConstant) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsALU | opALUSrcConstant | uint16(a.Op), - K: a.Val, - }, nil -} - -// String returns the instruction in assembler notation. -func (a ALUOpConstant) String() string { - switch a.Op { - case ALUOpAdd: - return fmt.Sprintf("add #%d", a.Val) - case ALUOpSub: - return fmt.Sprintf("sub #%d", a.Val) - case ALUOpMul: - return fmt.Sprintf("mul #%d", a.Val) - case ALUOpDiv: - return fmt.Sprintf("div #%d", a.Val) - case ALUOpMod: - return fmt.Sprintf("mod #%d", a.Val) - case ALUOpAnd: - return fmt.Sprintf("and #%d", a.Val) - case ALUOpOr: - return fmt.Sprintf("or #%d", a.Val) - case ALUOpXor: - return fmt.Sprintf("xor #%d", a.Val) - case ALUOpShiftLeft: - return fmt.Sprintf("lsh #%d", a.Val) - case ALUOpShiftRight: - return fmt.Sprintf("rsh #%d", a.Val) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// ALUOpX executes A = A X -type ALUOpX struct { - Op ALUOp -} - -// Assemble implements the Instruction Assemble method. -func (a ALUOpX) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsALU | opALUSrcX | uint16(a.Op), - }, nil -} - -// String returns the instruction in assembler notation. -func (a ALUOpX) String() string { - switch a.Op { - case ALUOpAdd: - return "add x" - case ALUOpSub: - return "sub x" - case ALUOpMul: - return "mul x" - case ALUOpDiv: - return "div x" - case ALUOpMod: - return "mod x" - case ALUOpAnd: - return "and x" - case ALUOpOr: - return "or x" - case ALUOpXor: - return "xor x" - case ALUOpShiftLeft: - return "lsh x" - case ALUOpShiftRight: - return "rsh x" - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// NegateA executes A = -A. -type NegateA struct{} - -// Assemble implements the Instruction Assemble method. -func (a NegateA) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsALU | uint16(aluOpNeg), - }, nil -} - -// String returns the instruction in assembler notation. -func (a NegateA) String() string { - return fmt.Sprintf("neg") -} - -// Jump skips the following Skip instructions in the program. -type Jump struct { - Skip uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a Jump) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsJump | opJumpAlways, - K: a.Skip, - }, nil -} - -// String returns the instruction in assembler notation. -func (a Jump) String() string { - return fmt.Sprintf("ja %d", a.Skip) -} - -// JumpIf skips the following Skip instructions in the program if A -// Val is true. -type JumpIf struct { - Cond JumpTest - Val uint32 - SkipTrue uint8 - SkipFalse uint8 -} - -// Assemble implements the Instruction Assemble method. -func (a JumpIf) Assemble() (RawInstruction, error) { - var ( - cond uint16 - flip bool - ) - switch a.Cond { - case JumpEqual: - cond = opJumpEqual - case JumpNotEqual: - cond, flip = opJumpEqual, true - case JumpGreaterThan: - cond = opJumpGT - case JumpLessThan: - cond, flip = opJumpGE, true - case JumpGreaterOrEqual: - cond = opJumpGE - case JumpLessOrEqual: - cond, flip = opJumpGT, true - case JumpBitsSet: - cond = opJumpSet - case JumpBitsNotSet: - cond, flip = opJumpSet, true - default: - return RawInstruction{}, fmt.Errorf("unknown JumpTest %v", a.Cond) - } - jt, jf := a.SkipTrue, a.SkipFalse - if flip { - jt, jf = jf, jt - } - return RawInstruction{ - Op: opClsJump | cond, - Jt: jt, - Jf: jf, - K: a.Val, - }, nil -} - -// String returns the instruction in assembler notation. -func (a JumpIf) String() string { - switch a.Cond { - // K == A - case JumpEqual: - return conditionalJump(a, "jeq", "jneq") - // K != A - case JumpNotEqual: - return fmt.Sprintf("jneq #%d,%d", a.Val, a.SkipTrue) - // K > A - case JumpGreaterThan: - return conditionalJump(a, "jgt", "jle") - // K < A - case JumpLessThan: - return fmt.Sprintf("jlt #%d,%d", a.Val, a.SkipTrue) - // K >= A - case JumpGreaterOrEqual: - return conditionalJump(a, "jge", "jlt") - // K <= A - case JumpLessOrEqual: - return fmt.Sprintf("jle #%d,%d", a.Val, a.SkipTrue) - // K & A != 0 - case JumpBitsSet: - if a.SkipFalse > 0 { - return fmt.Sprintf("jset #%d,%d,%d", a.Val, a.SkipTrue, a.SkipFalse) - } - return fmt.Sprintf("jset #%d,%d", a.Val, a.SkipTrue) - // K & A == 0, there is no assembler instruction for JumpBitNotSet, use JumpBitSet and invert skips - case JumpBitsNotSet: - return JumpIf{Cond: JumpBitsSet, SkipTrue: a.SkipFalse, SkipFalse: a.SkipTrue, Val: a.Val}.String() - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -func conditionalJump(inst JumpIf, positiveJump, negativeJump string) string { - if inst.SkipTrue > 0 { - if inst.SkipFalse > 0 { - return fmt.Sprintf("%s #%d,%d,%d", positiveJump, inst.Val, inst.SkipTrue, inst.SkipFalse) - } - return fmt.Sprintf("%s #%d,%d", positiveJump, inst.Val, inst.SkipTrue) - } - return fmt.Sprintf("%s #%d,%d", negativeJump, inst.Val, inst.SkipFalse) -} - -// RetA exits the BPF program, returning the value of register A. -type RetA struct{} - -// Assemble implements the Instruction Assemble method. -func (a RetA) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsReturn | opRetSrcA, - }, nil -} - -// String returns the instruction in assembler notation. -func (a RetA) String() string { - return fmt.Sprintf("ret a") -} - -// RetConstant exits the BPF program, returning a constant value. -type RetConstant struct { - Val uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a RetConstant) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsReturn | opRetSrcConstant, - K: a.Val, - }, nil -} - -// String returns the instruction in assembler notation. -func (a RetConstant) String() string { - return fmt.Sprintf("ret #%d", a.Val) -} - -// TXA copies the value of register X to register A. -type TXA struct{} - -// Assemble implements the Instruction Assemble method. -func (a TXA) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsMisc | opMiscTXA, - }, nil -} - -// String returns the instruction in assembler notation. -func (a TXA) String() string { - return fmt.Sprintf("txa") -} - -// TAX copies the value of register A to register X. -type TAX struct{} - -// Assemble implements the Instruction Assemble method. -func (a TAX) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsMisc | opMiscTAX, - }, nil -} - -// String returns the instruction in assembler notation. -func (a TAX) String() string { - return fmt.Sprintf("tax") -} - -func assembleLoad(dst Register, loadSize int, mode uint16, k uint32) (RawInstruction, error) { - var ( - cls uint16 - sz uint16 - ) - switch dst { - case RegA: - cls = opClsLoadA - case RegX: - cls = opClsLoadX - default: - return RawInstruction{}, fmt.Errorf("invalid target register %v", dst) - } - switch loadSize { - case 1: - sz = opLoadWidth1 - case 2: - sz = opLoadWidth2 - case 4: - sz = opLoadWidth4 - default: - return RawInstruction{}, fmt.Errorf("invalid load byte length %d", sz) - } - return RawInstruction{ - Op: cls | sz | mode, - K: k, - }, nil -} diff --git a/vendor/golang.org/x/net/bpf/instructions_test.go b/vendor/golang.org/x/net/bpf/instructions_test.go deleted file mode 100644 index dde474ab..00000000 --- a/vendor/golang.org/x/net/bpf/instructions_test.go +++ /dev/null @@ -1,525 +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 bpf - -import ( - "fmt" - "io/ioutil" - "reflect" - "strconv" - "strings" - "testing" -) - -// This is a direct translation of the program in -// testdata/all_instructions.txt. -var allInstructions = []Instruction{ - LoadConstant{Dst: RegA, Val: 42}, - LoadConstant{Dst: RegX, Val: 42}, - - LoadScratch{Dst: RegA, N: 3}, - LoadScratch{Dst: RegX, N: 3}, - - LoadAbsolute{Off: 42, Size: 1}, - LoadAbsolute{Off: 42, Size: 2}, - LoadAbsolute{Off: 42, Size: 4}, - - LoadIndirect{Off: 42, Size: 1}, - LoadIndirect{Off: 42, Size: 2}, - LoadIndirect{Off: 42, Size: 4}, - - LoadMemShift{Off: 42}, - - LoadExtension{Num: ExtLen}, - LoadExtension{Num: ExtProto}, - LoadExtension{Num: ExtType}, - LoadExtension{Num: ExtRand}, - - StoreScratch{Src: RegA, N: 3}, - StoreScratch{Src: RegX, N: 3}, - - ALUOpConstant{Op: ALUOpAdd, Val: 42}, - ALUOpConstant{Op: ALUOpSub, Val: 42}, - ALUOpConstant{Op: ALUOpMul, Val: 42}, - ALUOpConstant{Op: ALUOpDiv, Val: 42}, - ALUOpConstant{Op: ALUOpOr, Val: 42}, - ALUOpConstant{Op: ALUOpAnd, Val: 42}, - ALUOpConstant{Op: ALUOpShiftLeft, Val: 42}, - ALUOpConstant{Op: ALUOpShiftRight, Val: 42}, - ALUOpConstant{Op: ALUOpMod, Val: 42}, - ALUOpConstant{Op: ALUOpXor, Val: 42}, - - ALUOpX{Op: ALUOpAdd}, - ALUOpX{Op: ALUOpSub}, - ALUOpX{Op: ALUOpMul}, - ALUOpX{Op: ALUOpDiv}, - ALUOpX{Op: ALUOpOr}, - ALUOpX{Op: ALUOpAnd}, - ALUOpX{Op: ALUOpShiftLeft}, - ALUOpX{Op: ALUOpShiftRight}, - ALUOpX{Op: ALUOpMod}, - ALUOpX{Op: ALUOpXor}, - - NegateA{}, - - Jump{Skip: 10}, - JumpIf{Cond: JumpEqual, Val: 42, SkipTrue: 8, SkipFalse: 9}, - JumpIf{Cond: JumpNotEqual, Val: 42, SkipTrue: 8}, - JumpIf{Cond: JumpLessThan, Val: 42, SkipTrue: 7}, - JumpIf{Cond: JumpLessOrEqual, Val: 42, SkipTrue: 6}, - JumpIf{Cond: JumpGreaterThan, Val: 42, SkipTrue: 4, SkipFalse: 5}, - JumpIf{Cond: JumpGreaterOrEqual, Val: 42, SkipTrue: 3, SkipFalse: 4}, - JumpIf{Cond: JumpBitsSet, Val: 42, SkipTrue: 2, SkipFalse: 3}, - - TAX{}, - TXA{}, - - RetA{}, - RetConstant{Val: 42}, -} -var allInstructionsExpected = "testdata/all_instructions.bpf" - -// Check that we produce the same output as the canonical bpf_asm -// linux kernel tool. -func TestInterop(t *testing.T) { - out, err := Assemble(allInstructions) - if err != nil { - t.Fatalf("assembly of allInstructions program failed: %s", err) - } - t.Logf("Assembled program is %d instructions long", len(out)) - - bs, err := ioutil.ReadFile(allInstructionsExpected) - if err != nil { - t.Fatalf("reading %s: %s", allInstructionsExpected, err) - } - // First statement is the number of statements, last statement is - // empty. We just ignore both and rely on slice length. - stmts := strings.Split(string(bs), ",") - if len(stmts)-2 != len(out) { - t.Fatalf("test program lengths don't match: %s has %d, Go implementation has %d", allInstructionsExpected, len(stmts)-2, len(allInstructions)) - } - - for i, stmt := range stmts[1 : len(stmts)-2] { - nums := strings.Split(stmt, " ") - if len(nums) != 4 { - t.Fatalf("malformed instruction %d in %s: %s", i+1, allInstructionsExpected, stmt) - } - - actual := out[i] - - op, err := strconv.ParseUint(nums[0], 10, 16) - if err != nil { - t.Fatalf("malformed opcode %s in instruction %d of %s", nums[0], i+1, allInstructionsExpected) - } - if actual.Op != uint16(op) { - t.Errorf("opcode mismatch on instruction %d (%#v): got 0x%02x, want 0x%02x", i+1, allInstructions[i], actual.Op, op) - } - - jt, err := strconv.ParseUint(nums[1], 10, 8) - if err != nil { - t.Fatalf("malformed jt offset %s in instruction %d of %s", nums[1], i+1, allInstructionsExpected) - } - if actual.Jt != uint8(jt) { - t.Errorf("jt mismatch on instruction %d (%#v): got %d, want %d", i+1, allInstructions[i], actual.Jt, jt) - } - - jf, err := strconv.ParseUint(nums[2], 10, 8) - if err != nil { - t.Fatalf("malformed jf offset %s in instruction %d of %s", nums[2], i+1, allInstructionsExpected) - } - if actual.Jf != uint8(jf) { - t.Errorf("jf mismatch on instruction %d (%#v): got %d, want %d", i+1, allInstructions[i], actual.Jf, jf) - } - - k, err := strconv.ParseUint(nums[3], 10, 32) - if err != nil { - t.Fatalf("malformed constant %s in instruction %d of %s", nums[3], i+1, allInstructionsExpected) - } - if actual.K != uint32(k) { - t.Errorf("constant mismatch on instruction %d (%#v): got %d, want %d", i+1, allInstructions[i], actual.K, k) - } - } -} - -// Check that assembly and disassembly match each other. -func TestAsmDisasm(t *testing.T) { - prog1, err := Assemble(allInstructions) - if err != nil { - t.Fatalf("assembly of allInstructions program failed: %s", err) - } - t.Logf("Assembled program is %d instructions long", len(prog1)) - - got, allDecoded := Disassemble(prog1) - if !allDecoded { - t.Errorf("Disassemble(Assemble(allInstructions)) produced unrecognized instructions:") - for i, inst := range got { - if r, ok := inst.(RawInstruction); ok { - t.Logf(" insn %d, %#v --> %#v", i+1, allInstructions[i], r) - } - } - } - - if len(allInstructions) != len(got) { - t.Fatalf("disassembly changed program size: %d insns before, %d insns after", len(allInstructions), len(got)) - } - if !reflect.DeepEqual(allInstructions, got) { - t.Errorf("program mutated by disassembly:") - for i := range got { - if !reflect.DeepEqual(allInstructions[i], got[i]) { - t.Logf(" insn %d, s: %#v, p1: %#v, got: %#v", i+1, allInstructions[i], prog1[i], got[i]) - } - } - } -} - -type InvalidInstruction struct{} - -func (a InvalidInstruction) Assemble() (RawInstruction, error) { - return RawInstruction{}, fmt.Errorf("Invalid Instruction") -} - -func (a InvalidInstruction) String() string { - return fmt.Sprintf("unknown instruction: %#v", a) -} - -func TestString(t *testing.T) { - testCases := []struct { - instruction Instruction - assembler string - }{ - { - instruction: LoadConstant{Dst: RegA, Val: 42}, - assembler: "ld #42", - }, - { - instruction: LoadConstant{Dst: RegX, Val: 42}, - assembler: "ldx #42", - }, - { - instruction: LoadConstant{Dst: 0xffff, Val: 42}, - assembler: "unknown instruction: bpf.LoadConstant{Dst:0xffff, Val:0x2a}", - }, - { - instruction: LoadScratch{Dst: RegA, N: 3}, - assembler: "ld M[3]", - }, - { - instruction: LoadScratch{Dst: RegX, N: 3}, - assembler: "ldx M[3]", - }, - { - instruction: LoadScratch{Dst: 0xffff, N: 3}, - assembler: "unknown instruction: bpf.LoadScratch{Dst:0xffff, N:3}", - }, - { - instruction: LoadAbsolute{Off: 42, Size: 1}, - assembler: "ldb [42]", - }, - { - instruction: LoadAbsolute{Off: 42, Size: 2}, - assembler: "ldh [42]", - }, - { - instruction: LoadAbsolute{Off: 42, Size: 4}, - assembler: "ld [42]", - }, - { - instruction: LoadAbsolute{Off: 42, Size: -1}, - assembler: "unknown instruction: bpf.LoadAbsolute{Off:0x2a, Size:-1}", - }, - { - instruction: LoadIndirect{Off: 42, Size: 1}, - assembler: "ldb [x + 42]", - }, - { - instruction: LoadIndirect{Off: 42, Size: 2}, - assembler: "ldh [x + 42]", - }, - { - instruction: LoadIndirect{Off: 42, Size: 4}, - assembler: "ld [x + 42]", - }, - { - instruction: LoadIndirect{Off: 42, Size: -1}, - assembler: "unknown instruction: bpf.LoadIndirect{Off:0x2a, Size:-1}", - }, - { - instruction: LoadMemShift{Off: 42}, - assembler: "ldx 4*([42]&0xf)", - }, - { - instruction: LoadExtension{Num: ExtLen}, - assembler: "ld #len", - }, - { - instruction: LoadExtension{Num: ExtProto}, - assembler: "ld #proto", - }, - { - instruction: LoadExtension{Num: ExtType}, - assembler: "ld #type", - }, - { - instruction: LoadExtension{Num: ExtPayloadOffset}, - assembler: "ld #poff", - }, - { - instruction: LoadExtension{Num: ExtInterfaceIndex}, - assembler: "ld #ifidx", - }, - { - instruction: LoadExtension{Num: ExtNetlinkAttr}, - assembler: "ld #nla", - }, - { - instruction: LoadExtension{Num: ExtNetlinkAttrNested}, - assembler: "ld #nlan", - }, - { - instruction: LoadExtension{Num: ExtMark}, - assembler: "ld #mark", - }, - { - instruction: LoadExtension{Num: ExtQueue}, - assembler: "ld #queue", - }, - { - instruction: LoadExtension{Num: ExtLinkLayerType}, - assembler: "ld #hatype", - }, - { - instruction: LoadExtension{Num: ExtRXHash}, - assembler: "ld #rxhash", - }, - { - instruction: LoadExtension{Num: ExtCPUID}, - assembler: "ld #cpu", - }, - { - instruction: LoadExtension{Num: ExtVLANTag}, - assembler: "ld #vlan_tci", - }, - { - instruction: LoadExtension{Num: ExtVLANTagPresent}, - assembler: "ld #vlan_avail", - }, - { - instruction: LoadExtension{Num: ExtVLANProto}, - assembler: "ld #vlan_tpid", - }, - { - instruction: LoadExtension{Num: ExtRand}, - assembler: "ld #rand", - }, - { - instruction: LoadAbsolute{Off: 0xfffff038, Size: 4}, - assembler: "ld #rand", - }, - { - instruction: LoadExtension{Num: 0xfff}, - assembler: "unknown instruction: bpf.LoadExtension{Num:4095}", - }, - { - instruction: StoreScratch{Src: RegA, N: 3}, - assembler: "st M[3]", - }, - { - instruction: StoreScratch{Src: RegX, N: 3}, - assembler: "stx M[3]", - }, - { - instruction: StoreScratch{Src: 0xffff, N: 3}, - assembler: "unknown instruction: bpf.StoreScratch{Src:0xffff, N:3}", - }, - { - instruction: ALUOpConstant{Op: ALUOpAdd, Val: 42}, - assembler: "add #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpSub, Val: 42}, - assembler: "sub #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpMul, Val: 42}, - assembler: "mul #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpDiv, Val: 42}, - assembler: "div #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpOr, Val: 42}, - assembler: "or #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpAnd, Val: 42}, - assembler: "and #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpShiftLeft, Val: 42}, - assembler: "lsh #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpShiftRight, Val: 42}, - assembler: "rsh #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpMod, Val: 42}, - assembler: "mod #42", - }, - { - instruction: ALUOpConstant{Op: ALUOpXor, Val: 42}, - assembler: "xor #42", - }, - { - instruction: ALUOpConstant{Op: 0xffff, Val: 42}, - assembler: "unknown instruction: bpf.ALUOpConstant{Op:0xffff, Val:0x2a}", - }, - { - instruction: ALUOpX{Op: ALUOpAdd}, - assembler: "add x", - }, - { - instruction: ALUOpX{Op: ALUOpSub}, - assembler: "sub x", - }, - { - instruction: ALUOpX{Op: ALUOpMul}, - assembler: "mul x", - }, - { - instruction: ALUOpX{Op: ALUOpDiv}, - assembler: "div x", - }, - { - instruction: ALUOpX{Op: ALUOpOr}, - assembler: "or x", - }, - { - instruction: ALUOpX{Op: ALUOpAnd}, - assembler: "and x", - }, - { - instruction: ALUOpX{Op: ALUOpShiftLeft}, - assembler: "lsh x", - }, - { - instruction: ALUOpX{Op: ALUOpShiftRight}, - assembler: "rsh x", - }, - { - instruction: ALUOpX{Op: ALUOpMod}, - assembler: "mod x", - }, - { - instruction: ALUOpX{Op: ALUOpXor}, - assembler: "xor x", - }, - { - instruction: ALUOpX{Op: 0xffff}, - assembler: "unknown instruction: bpf.ALUOpX{Op:0xffff}", - }, - { - instruction: NegateA{}, - assembler: "neg", - }, - { - instruction: Jump{Skip: 10}, - assembler: "ja 10", - }, - { - instruction: JumpIf{Cond: JumpEqual, Val: 42, SkipTrue: 8, SkipFalse: 9}, - assembler: "jeq #42,8,9", - }, - { - instruction: JumpIf{Cond: JumpEqual, Val: 42, SkipTrue: 8}, - assembler: "jeq #42,8", - }, - { - instruction: JumpIf{Cond: JumpEqual, Val: 42, SkipFalse: 8}, - assembler: "jneq #42,8", - }, - { - instruction: JumpIf{Cond: JumpNotEqual, Val: 42, SkipTrue: 8}, - assembler: "jneq #42,8", - }, - { - instruction: JumpIf{Cond: JumpLessThan, Val: 42, SkipTrue: 7}, - assembler: "jlt #42,7", - }, - { - instruction: JumpIf{Cond: JumpLessOrEqual, Val: 42, SkipTrue: 6}, - assembler: "jle #42,6", - }, - { - instruction: JumpIf{Cond: JumpGreaterThan, Val: 42, SkipTrue: 4, SkipFalse: 5}, - assembler: "jgt #42,4,5", - }, - { - instruction: JumpIf{Cond: JumpGreaterThan, Val: 42, SkipTrue: 4}, - assembler: "jgt #42,4", - }, - { - instruction: JumpIf{Cond: JumpGreaterOrEqual, Val: 42, SkipTrue: 3, SkipFalse: 4}, - assembler: "jge #42,3,4", - }, - { - instruction: JumpIf{Cond: JumpGreaterOrEqual, Val: 42, SkipTrue: 3}, - assembler: "jge #42,3", - }, - { - instruction: JumpIf{Cond: JumpBitsSet, Val: 42, SkipTrue: 2, SkipFalse: 3}, - assembler: "jset #42,2,3", - }, - { - instruction: JumpIf{Cond: JumpBitsSet, Val: 42, SkipTrue: 2}, - assembler: "jset #42,2", - }, - { - instruction: JumpIf{Cond: JumpBitsNotSet, Val: 42, SkipTrue: 2, SkipFalse: 3}, - assembler: "jset #42,3,2", - }, - { - instruction: JumpIf{Cond: JumpBitsNotSet, Val: 42, SkipTrue: 2}, - assembler: "jset #42,0,2", - }, - { - instruction: JumpIf{Cond: 0xffff, Val: 42, SkipTrue: 1, SkipFalse: 2}, - assembler: "unknown instruction: bpf.JumpIf{Cond:0xffff, Val:0x2a, SkipTrue:0x1, SkipFalse:0x2}", - }, - { - instruction: TAX{}, - assembler: "tax", - }, - { - instruction: TXA{}, - assembler: "txa", - }, - { - instruction: RetA{}, - assembler: "ret a", - }, - { - instruction: RetConstant{Val: 42}, - assembler: "ret #42", - }, - // Invalid instruction - { - instruction: InvalidInstruction{}, - assembler: "unknown instruction: bpf.InvalidInstruction{}", - }, - } - - for _, testCase := range testCases { - if input, ok := testCase.instruction.(fmt.Stringer); ok { - got := input.String() - if got != testCase.assembler { - t.Errorf("String did not return expected assembler notation, expected: %s, got: %s", testCase.assembler, got) - } - } else { - t.Errorf("Instruction %#v is not a fmt.Stringer", testCase.instruction) - } - } -} diff --git a/vendor/golang.org/x/net/bpf/setter.go b/vendor/golang.org/x/net/bpf/setter.go deleted file mode 100644 index 43e35f0a..00000000 --- a/vendor/golang.org/x/net/bpf/setter.go +++ /dev/null @@ -1,10 +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 bpf - -// A Setter is a type which can attach a compiled BPF filter to itself. -type Setter interface { - SetBPF(filter []RawInstruction) error -} diff --git a/vendor/golang.org/x/net/bpf/testdata/all_instructions.bpf b/vendor/golang.org/x/net/bpf/testdata/all_instructions.bpf deleted file mode 100644 index f8714406..00000000 --- a/vendor/golang.org/x/net/bpf/testdata/all_instructions.bpf +++ /dev/null @@ -1 +0,0 @@ -50,0 0 0 42,1 0 0 42,96 0 0 3,97 0 0 3,48 0 0 42,40 0 0 42,32 0 0 42,80 0 0 42,72 0 0 42,64 0 0 42,177 0 0 42,128 0 0 0,32 0 0 4294963200,32 0 0 4294963204,32 0 0 4294963256,2 0 0 3,3 0 0 3,4 0 0 42,20 0 0 42,36 0 0 42,52 0 0 42,68 0 0 42,84 0 0 42,100 0 0 42,116 0 0 42,148 0 0 42,164 0 0 42,12 0 0 0,28 0 0 0,44 0 0 0,60 0 0 0,76 0 0 0,92 0 0 0,108 0 0 0,124 0 0 0,156 0 0 0,172 0 0 0,132 0 0 0,5 0 0 10,21 8 9 42,21 0 8 42,53 0 7 42,37 0 6 42,37 4 5 42,53 3 4 42,69 2 3 42,7 0 0 0,135 0 0 0,22 0 0 0,6 0 0 0, diff --git a/vendor/golang.org/x/net/bpf/testdata/all_instructions.txt b/vendor/golang.org/x/net/bpf/testdata/all_instructions.txt deleted file mode 100644 index 30455015..00000000 --- a/vendor/golang.org/x/net/bpf/testdata/all_instructions.txt +++ /dev/null @@ -1,79 +0,0 @@ -# This filter is compiled to all_instructions.bpf by the `bpf_asm` -# tool, which can be found in the linux kernel source tree under -# tools/net. - -# Load immediate -ld #42 -ldx #42 - -# Load scratch -ld M[3] -ldx M[3] - -# Load absolute -ldb [42] -ldh [42] -ld [42] - -# Load indirect -ldb [x + 42] -ldh [x + 42] -ld [x + 42] - -# Load IPv4 header length -ldx 4*([42]&0xf) - -# Run extension function -ld #len -ld #proto -ld #type -ld #rand - -# Store scratch -st M[3] -stx M[3] - -# A constant -add #42 -sub #42 -mul #42 -div #42 -or #42 -and #42 -lsh #42 -rsh #42 -mod #42 -xor #42 - -# A X -add x -sub x -mul x -div x -or x -and x -lsh x -rsh x -mod x -xor x - -# !A -neg - -# Jumps -ja end -jeq #42,prev,end -jne #42,end -jlt #42,end -jle #42,end -jgt #42,prev,end -jge #42,prev,end -jset #42,prev,end - -# Register transfers -tax -txa - -# Returns -prev: ret a -end: ret #42 diff --git a/vendor/golang.org/x/net/bpf/vm.go b/vendor/golang.org/x/net/bpf/vm.go deleted file mode 100644 index 4c656f1e..00000000 --- a/vendor/golang.org/x/net/bpf/vm.go +++ /dev/null @@ -1,140 +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 bpf - -import ( - "errors" - "fmt" -) - -// A VM is an emulated BPF virtual machine. -type VM struct { - filter []Instruction -} - -// NewVM returns a new VM using the input BPF program. -func NewVM(filter []Instruction) (*VM, error) { - if len(filter) == 0 { - return nil, errors.New("one or more Instructions must be specified") - } - - for i, ins := range filter { - check := len(filter) - (i + 1) - switch ins := ins.(type) { - // Check for out-of-bounds jumps in instructions - case Jump: - if check <= int(ins.Skip) { - return nil, fmt.Errorf("cannot jump %d instructions; jumping past program bounds", ins.Skip) - } - case JumpIf: - if check <= int(ins.SkipTrue) { - return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) - } - if check <= int(ins.SkipFalse) { - return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) - } - // Check for division or modulus by zero - case ALUOpConstant: - if ins.Val != 0 { - break - } - - switch ins.Op { - case ALUOpDiv, ALUOpMod: - return nil, errors.New("cannot divide by zero using ALUOpConstant") - } - // Check for unknown extensions - case LoadExtension: - switch ins.Num { - case ExtLen: - default: - return nil, fmt.Errorf("extension %d not implemented", ins.Num) - } - } - } - - // Make sure last instruction is a return instruction - switch filter[len(filter)-1].(type) { - case RetA, RetConstant: - default: - return nil, errors.New("BPF program must end with RetA or RetConstant") - } - - // Though our VM works using disassembled instructions, we - // attempt to assemble the input filter anyway to ensure it is compatible - // with an operating system VM. - _, err := Assemble(filter) - - return &VM{ - filter: filter, - }, err -} - -// Run runs the VM's BPF program against the input bytes. -// Run returns the number of bytes accepted by the BPF program, and any errors -// which occurred while processing the program. -func (v *VM) Run(in []byte) (int, error) { - var ( - // Registers of the virtual machine - regA uint32 - regX uint32 - regScratch [16]uint32 - - // OK is true if the program should continue processing the next - // instruction, or false if not, causing the loop to break - ok = true - ) - - // TODO(mdlayher): implement: - // - NegateA: - // - would require a change from uint32 registers to int32 - // registers - - // TODO(mdlayher): add interop tests that check signedness of ALU - // operations against kernel implementation, and make sure Go - // implementation matches behavior - - for i := 0; i < len(v.filter) && ok; i++ { - ins := v.filter[i] - - switch ins := ins.(type) { - case ALUOpConstant: - regA = aluOpConstant(ins, regA) - case ALUOpX: - regA, ok = aluOpX(ins, regA, regX) - case Jump: - i += int(ins.Skip) - case JumpIf: - jump := jumpIf(ins, regA) - i += jump - case LoadAbsolute: - regA, ok = loadAbsolute(ins, in) - case LoadConstant: - regA, regX = loadConstant(ins, regA, regX) - case LoadExtension: - regA = loadExtension(ins, in) - case LoadIndirect: - regA, ok = loadIndirect(ins, in, regX) - case LoadMemShift: - regX, ok = loadMemShift(ins, in) - case LoadScratch: - regA, regX = loadScratch(ins, regScratch, regA, regX) - case RetA: - return int(regA), nil - case RetConstant: - return int(ins.Val), nil - case StoreScratch: - regScratch = storeScratch(ins, regScratch, regA, regX) - case TAX: - regX = regA - case TXA: - regA = regX - default: - return 0, fmt.Errorf("unknown Instruction at index %d: %T", i, ins) - } - } - - return 0, nil -} diff --git a/vendor/golang.org/x/net/bpf/vm_aluop_test.go b/vendor/golang.org/x/net/bpf/vm_aluop_test.go deleted file mode 100644 index 16678244..00000000 --- a/vendor/golang.org/x/net/bpf/vm_aluop_test.go +++ /dev/null @@ -1,512 +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 bpf_test - -import ( - "testing" - - "golang.org/x/net/bpf" -) - -func TestVMALUOpAdd(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpAdd, - Val: 3, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 8, 2, 3, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 3, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpSub(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.TAX{}, - bpf.ALUOpX{ - Op: bpf.ALUOpSub, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 1, 2, 3, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 0, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpMul(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpMul, - Val: 2, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 6, 2, 3, 4, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 4, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpDiv(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpDiv, - Val: 2, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 20, 2, 3, 4, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 2, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpDivByZeroALUOpConstant(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.ALUOpConstant{ - Op: bpf.ALUOpDiv, - Val: 0, - }, - bpf.RetA{}, - }) - if errStr(err) != "cannot divide by zero using ALUOpConstant" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMALUOpDivByZeroALUOpX(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - // Load byte 0 into X - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.TAX{}, - // Load byte 1 into A - bpf.LoadAbsolute{ - Off: 9, - Size: 1, - }, - // Attempt to perform 1/0 - bpf.ALUOpX{ - Op: bpf.ALUOpDiv, - }, - // Return 4 bytes if program does not terminate - bpf.LoadConstant{ - Val: 12, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, 3, 4, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 0, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpOr(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 2, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpOr, - Val: 0x01, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x00, 0x10, 0x03, 0x04, - 0x05, 0x06, 0x07, 0x08, - 0x09, 0xff, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 9, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpAnd(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 2, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpAnd, - Val: 0x0019, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0xaa, 0x09, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpShiftLeft(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpShiftLeft, - Val: 0x01, - }, - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: 0x02, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 9, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x01, 0xaa, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpShiftRight(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpShiftRight, - Val: 0x01, - }, - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: 0x04, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 9, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x08, 0xff, 0xff, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpMod(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpMod, - Val: 20, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 30, 0, 0, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 2, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpModByZeroALUOpConstant(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpMod, - Val: 0, - }, - bpf.RetA{}, - }) - if errStr(err) != "cannot divide by zero using ALUOpConstant" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMALUOpModByZeroALUOpX(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - // Load byte 0 into X - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.TAX{}, - // Load byte 1 into A - bpf.LoadAbsolute{ - Off: 9, - Size: 1, - }, - // Attempt to perform 1%0 - bpf.ALUOpX{ - Op: bpf.ALUOpMod, - }, - // Return 4 bytes if program does not terminate - bpf.LoadConstant{ - Val: 12, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, 3, 4, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 0, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpXor(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpXor, - Val: 0x0a, - }, - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: 0x01, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 9, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x0b, 0x00, 0x00, 0x00, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMALUOpUnknown(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.ALUOpConstant{ - Op: bpf.ALUOpAdd, - Val: 1, - }, - // Verify that an unknown operation is a no-op - bpf.ALUOpConstant{ - Op: 100, - }, - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: 0x02, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 9, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 1, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} diff --git a/vendor/golang.org/x/net/bpf/vm_bpf_test.go b/vendor/golang.org/x/net/bpf/vm_bpf_test.go deleted file mode 100644 index 77fa8fe4..00000000 --- a/vendor/golang.org/x/net/bpf/vm_bpf_test.go +++ /dev/null @@ -1,192 +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 bpf_test - -import ( - "net" - "runtime" - "testing" - "time" - - "golang.org/x/net/bpf" - "golang.org/x/net/ipv4" -) - -// A virtualMachine is a BPF virtual machine which can process an -// input packet against a BPF program and render a verdict. -type virtualMachine interface { - Run(in []byte) (int, error) -} - -// canUseOSVM indicates if the OS BPF VM is available on this platform. -func canUseOSVM() bool { - // OS BPF VM can only be used on platforms where x/net/ipv4 supports - // attaching a BPF program to a socket. - switch runtime.GOOS { - case "linux": - return true - } - - return false -} - -// All BPF tests against both the Go VM and OS VM are assumed to -// be used with a UDP socket. As a result, the entire contents -// of a UDP datagram is sent through the BPF program, but only -// the body after the UDP header will ever be returned in output. - -// testVM sets up a Go BPF VM, and if available, a native OS BPF VM -// for integration testing. -func testVM(t *testing.T, filter []bpf.Instruction) (virtualMachine, func(), error) { - goVM, err := bpf.NewVM(filter) - if err != nil { - // Some tests expect an error, so this error must be returned - // instead of fatally exiting the test - return nil, nil, err - } - - mvm := &multiVirtualMachine{ - goVM: goVM, - - t: t, - } - - // If available, add the OS VM for tests which verify that both the Go - // VM and OS VM have exactly the same output for the same input program - // and packet. - done := func() {} - if canUseOSVM() { - osVM, osVMDone := testOSVM(t, filter) - done = func() { osVMDone() } - mvm.osVM = osVM - } - - return mvm, done, nil -} - -// udpHeaderLen is the length of a UDP header. -const udpHeaderLen = 8 - -// A multiVirtualMachine is a virtualMachine which can call out to both the Go VM -// and the native OS VM, if the OS VM is available. -type multiVirtualMachine struct { - goVM virtualMachine - osVM virtualMachine - - t *testing.T -} - -func (mvm *multiVirtualMachine) Run(in []byte) (int, error) { - if len(in) < udpHeaderLen { - mvm.t.Fatalf("input must be at least length of UDP header (%d), got: %d", - udpHeaderLen, len(in)) - } - - // All tests have a UDP header as part of input, because the OS VM - // packets always will. For the Go VM, this output is trimmed before - // being sent back to tests. - goOut, goErr := mvm.goVM.Run(in) - if goOut >= udpHeaderLen { - goOut -= udpHeaderLen - } - - // If Go output is larger than the size of the packet, packet filtering - // interop tests must trim the output bytes to the length of the packet. - // The BPF VM should not do this on its own, as other uses of it do - // not trim the output byte count. - trim := len(in) - udpHeaderLen - if goOut > trim { - goOut = trim - } - - // When the OS VM is not available, process using the Go VM alone - if mvm.osVM == nil { - return goOut, goErr - } - - // The OS VM will apply its own UDP header, so remove the pseudo header - // that the Go VM needs. - osOut, err := mvm.osVM.Run(in[udpHeaderLen:]) - if err != nil { - mvm.t.Fatalf("error while running OS VM: %v", err) - } - - // Verify both VMs return same number of bytes - var mismatch bool - if goOut != osOut { - mismatch = true - mvm.t.Logf("output byte count does not match:\n- go: %v\n- os: %v", goOut, osOut) - } - - if mismatch { - mvm.t.Fatal("Go BPF and OS BPF packet outputs do not match") - } - - return goOut, goErr -} - -// An osVirtualMachine is a virtualMachine which uses the OS's BPF VM for -// processing BPF programs. -type osVirtualMachine struct { - l net.PacketConn - s net.Conn -} - -// testOSVM creates a virtualMachine which uses the OS's BPF VM by injecting -// packets into a UDP listener with a BPF program attached to it. -func testOSVM(t *testing.T, filter []bpf.Instruction) (virtualMachine, func()) { - l, err := net.ListenPacket("udp4", "127.0.0.1:0") - if err != nil { - t.Fatalf("failed to open OS VM UDP listener: %v", err) - } - - prog, err := bpf.Assemble(filter) - if err != nil { - t.Fatalf("failed to compile BPF program: %v", err) - } - - p := ipv4.NewPacketConn(l) - if err = p.SetBPF(prog); err != nil { - t.Fatalf("failed to attach BPF program to listener: %v", err) - } - - s, err := net.Dial("udp4", l.LocalAddr().String()) - if err != nil { - t.Fatalf("failed to dial connection to listener: %v", err) - } - - done := func() { - _ = s.Close() - _ = l.Close() - } - - return &osVirtualMachine{ - l: l, - s: s, - }, done -} - -// Run sends the input bytes into the OS's BPF VM and returns its verdict. -func (vm *osVirtualMachine) Run(in []byte) (int, error) { - go func() { - _, _ = vm.s.Write(in) - }() - - vm.l.SetDeadline(time.Now().Add(50 * time.Millisecond)) - - var b [512]byte - n, _, err := vm.l.ReadFrom(b[:]) - if err != nil { - // A timeout indicates that BPF filtered out the packet, and thus, - // no input should be returned. - if nerr, ok := err.(net.Error); ok && nerr.Timeout() { - return n, nil - } - - return n, err - } - - return n, nil -} diff --git a/vendor/golang.org/x/net/bpf/vm_extension_test.go b/vendor/golang.org/x/net/bpf/vm_extension_test.go deleted file mode 100644 index 7a48c82f..00000000 --- a/vendor/golang.org/x/net/bpf/vm_extension_test.go +++ /dev/null @@ -1,49 +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 bpf_test - -import ( - "testing" - - "golang.org/x/net/bpf" -) - -func TestVMLoadExtensionNotImplemented(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.LoadExtension{ - Num: 100, - }, - bpf.RetA{}, - }) - if errStr(err) != "extension 100 not implemented" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMLoadExtensionExtLen(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadExtension{ - Num: bpf.ExtLen, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, 2, 3, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 4, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} diff --git a/vendor/golang.org/x/net/bpf/vm_instructions.go b/vendor/golang.org/x/net/bpf/vm_instructions.go deleted file mode 100644 index 516f9462..00000000 --- a/vendor/golang.org/x/net/bpf/vm_instructions.go +++ /dev/null @@ -1,174 +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 bpf - -import ( - "encoding/binary" - "fmt" -) - -func aluOpConstant(ins ALUOpConstant, regA uint32) uint32 { - return aluOpCommon(ins.Op, regA, ins.Val) -} - -func aluOpX(ins ALUOpX, regA uint32, regX uint32) (uint32, bool) { - // Guard against division or modulus by zero by terminating - // the program, as the OS BPF VM does - if regX == 0 { - switch ins.Op { - case ALUOpDiv, ALUOpMod: - return 0, false - } - } - - return aluOpCommon(ins.Op, regA, regX), true -} - -func aluOpCommon(op ALUOp, regA uint32, value uint32) uint32 { - switch op { - case ALUOpAdd: - return regA + value - case ALUOpSub: - return regA - value - case ALUOpMul: - return regA * value - case ALUOpDiv: - // Division by zero not permitted by NewVM and aluOpX checks - return regA / value - case ALUOpOr: - return regA | value - case ALUOpAnd: - return regA & value - case ALUOpShiftLeft: - return regA << value - case ALUOpShiftRight: - return regA >> value - case ALUOpMod: - // Modulus by zero not permitted by NewVM and aluOpX checks - return regA % value - case ALUOpXor: - return regA ^ value - default: - return regA - } -} - -func jumpIf(ins JumpIf, value uint32) int { - var ok bool - inV := uint32(ins.Val) - - switch ins.Cond { - case JumpEqual: - ok = value == inV - case JumpNotEqual: - ok = value != inV - case JumpGreaterThan: - ok = value > inV - case JumpLessThan: - ok = value < inV - case JumpGreaterOrEqual: - ok = value >= inV - case JumpLessOrEqual: - ok = value <= inV - case JumpBitsSet: - ok = (value & inV) != 0 - case JumpBitsNotSet: - ok = (value & inV) == 0 - } - - if ok { - return int(ins.SkipTrue) - } - - return int(ins.SkipFalse) -} - -func loadAbsolute(ins LoadAbsolute, in []byte) (uint32, bool) { - offset := int(ins.Off) - size := int(ins.Size) - - return loadCommon(in, offset, size) -} - -func loadConstant(ins LoadConstant, regA uint32, regX uint32) (uint32, uint32) { - switch ins.Dst { - case RegA: - regA = ins.Val - case RegX: - regX = ins.Val - } - - return regA, regX -} - -func loadExtension(ins LoadExtension, in []byte) uint32 { - switch ins.Num { - case ExtLen: - return uint32(len(in)) - default: - panic(fmt.Sprintf("unimplemented extension: %d", ins.Num)) - } -} - -func loadIndirect(ins LoadIndirect, in []byte, regX uint32) (uint32, bool) { - offset := int(ins.Off) + int(regX) - size := int(ins.Size) - - return loadCommon(in, offset, size) -} - -func loadMemShift(ins LoadMemShift, in []byte) (uint32, bool) { - offset := int(ins.Off) - - if !inBounds(len(in), offset, 0) { - return 0, false - } - - // Mask off high 4 bits and multiply low 4 bits by 4 - return uint32(in[offset]&0x0f) * 4, true -} - -func inBounds(inLen int, offset int, size int) bool { - return offset+size <= inLen -} - -func loadCommon(in []byte, offset int, size int) (uint32, bool) { - if !inBounds(len(in), offset, size) { - return 0, false - } - - switch size { - case 1: - return uint32(in[offset]), true - case 2: - return uint32(binary.BigEndian.Uint16(in[offset : offset+size])), true - case 4: - return uint32(binary.BigEndian.Uint32(in[offset : offset+size])), true - default: - panic(fmt.Sprintf("invalid load size: %d", size)) - } -} - -func loadScratch(ins LoadScratch, regScratch [16]uint32, regA uint32, regX uint32) (uint32, uint32) { - switch ins.Dst { - case RegA: - regA = regScratch[ins.N] - case RegX: - regX = regScratch[ins.N] - } - - return regA, regX -} - -func storeScratch(ins StoreScratch, regScratch [16]uint32, regA uint32, regX uint32) [16]uint32 { - switch ins.Src { - case RegA: - regScratch[ins.N] = regA - case RegX: - regScratch[ins.N] = regX - } - - return regScratch -} diff --git a/vendor/golang.org/x/net/bpf/vm_jump_test.go b/vendor/golang.org/x/net/bpf/vm_jump_test.go deleted file mode 100644 index e0a3a988..00000000 --- a/vendor/golang.org/x/net/bpf/vm_jump_test.go +++ /dev/null @@ -1,380 +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 bpf_test - -import ( - "testing" - - "golang.org/x/net/bpf" -) - -func TestVMJumpOne(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.Jump{ - Skip: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 9, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 1, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMJumpOutOfProgram(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.Jump{ - Skip: 1, - }, - bpf.RetA{}, - }) - if errStr(err) != "cannot jump 1 instructions; jumping past program bounds" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMJumpIfTrueOutOfProgram(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.JumpIf{ - Cond: bpf.JumpEqual, - SkipTrue: 2, - }, - bpf.RetA{}, - }) - if errStr(err) != "cannot jump 2 instructions in true case; jumping past program bounds" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMJumpIfFalseOutOfProgram(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.JumpIf{ - Cond: bpf.JumpEqual, - SkipFalse: 3, - }, - bpf.RetA{}, - }) - if errStr(err) != "cannot jump 3 instructions in false case; jumping past program bounds" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMJumpIfEqual(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: 1, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 9, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 1, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMJumpIfNotEqual(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.JumpIf{ - Cond: bpf.JumpNotEqual, - Val: 1, - SkipFalse: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 9, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 1, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMJumpIfGreaterThan(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 4, - }, - bpf.JumpIf{ - Cond: bpf.JumpGreaterThan, - Val: 0x00010202, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 12, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, 2, 3, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 4, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMJumpIfLessThan(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 4, - }, - bpf.JumpIf{ - Cond: bpf.JumpLessThan, - Val: 0xff010203, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 12, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, 2, 3, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 4, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMJumpIfGreaterOrEqual(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 4, - }, - bpf.JumpIf{ - Cond: bpf.JumpGreaterOrEqual, - Val: 0x00010203, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 12, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, 2, 3, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 4, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMJumpIfLessOrEqual(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 4, - }, - bpf.JumpIf{ - Cond: bpf.JumpLessOrEqual, - Val: 0xff010203, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 12, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, 2, 3, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 4, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMJumpIfBitsSet(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 2, - }, - bpf.JumpIf{ - Cond: bpf.JumpBitsSet, - Val: 0x1122, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 10, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x01, 0x02, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 2, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMJumpIfBitsNotSet(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 2, - }, - bpf.JumpIf{ - Cond: bpf.JumpBitsNotSet, - Val: 0x1221, - SkipTrue: 1, - }, - bpf.RetConstant{ - Val: 0, - }, - bpf.RetConstant{ - Val: 10, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x01, 0x02, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 2, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} diff --git a/vendor/golang.org/x/net/bpf/vm_load_test.go b/vendor/golang.org/x/net/bpf/vm_load_test.go deleted file mode 100644 index 04578b66..00000000 --- a/vendor/golang.org/x/net/bpf/vm_load_test.go +++ /dev/null @@ -1,246 +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 bpf_test - -import ( - "net" - "testing" - - "golang.org/x/net/bpf" - "golang.org/x/net/ipv4" -) - -func TestVMLoadAbsoluteOffsetOutOfBounds(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 100, - Size: 2, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, 2, 3, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 0, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMLoadAbsoluteOffsetPlusSizeOutOfBounds(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 2, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 0, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMLoadAbsoluteBadInstructionSize(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Size: 5, - }, - bpf.RetA{}, - }) - if errStr(err) != "assembling instruction 1: invalid load byte length 0" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMLoadConstantOK(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadConstant{ - Dst: bpf.RegX, - Val: 9, - }, - bpf.TXA{}, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMLoadIndirectOutOfBounds(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadIndirect{ - Off: 100, - Size: 1, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 0, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMLoadMemShiftOutOfBounds(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadMemShift{ - Off: 100, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 0, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -const ( - dhcp4Port = 53 -) - -func TestVMLoadMemShiftLoadIndirectNoResult(t *testing.T) { - vm, in, done := testDHCPv4(t) - defer done() - - // Append mostly empty UDP header with incorrect DHCPv4 port - in = append(in, []byte{ - 0, 0, - 0, dhcp4Port + 1, - 0, 0, - 0, 0, - }...) - - out, err := vm.Run(in) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 0, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMLoadMemShiftLoadIndirectOK(t *testing.T) { - vm, in, done := testDHCPv4(t) - defer done() - - // Append mostly empty UDP header with correct DHCPv4 port - in = append(in, []byte{ - 0, 0, - 0, dhcp4Port, - 0, 0, - 0, 0, - }...) - - out, err := vm.Run(in) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := len(in)-8, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func testDHCPv4(t *testing.T) (virtualMachine, []byte, func()) { - // DHCPv4 test data courtesy of David Anderson: - // https://github.com/google/netboot/blob/master/dhcp4/conn_linux.go#L59-L70 - vm, done, err := testVM(t, []bpf.Instruction{ - // Load IPv4 packet length - bpf.LoadMemShift{Off: 8}, - // Get UDP dport - bpf.LoadIndirect{Off: 8 + 2, Size: 2}, - // Correct dport? - bpf.JumpIf{Cond: bpf.JumpEqual, Val: dhcp4Port, SkipFalse: 1}, - // Accept - bpf.RetConstant{Val: 1500}, - // Ignore - bpf.RetConstant{Val: 0}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - - // Minimal requirements to make a valid IPv4 header - h := &ipv4.Header{ - Len: ipv4.HeaderLen, - Src: net.IPv4(192, 168, 1, 1), - Dst: net.IPv4(192, 168, 1, 2), - } - hb, err := h.Marshal() - if err != nil { - t.Fatalf("failed to marshal IPv4 header: %v", err) - } - - hb = append([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - }, hb...) - - return vm, hb, done -} diff --git a/vendor/golang.org/x/net/bpf/vm_ret_test.go b/vendor/golang.org/x/net/bpf/vm_ret_test.go deleted file mode 100644 index 2d86eae3..00000000 --- a/vendor/golang.org/x/net/bpf/vm_ret_test.go +++ /dev/null @@ -1,115 +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 bpf_test - -import ( - "testing" - - "golang.org/x/net/bpf" -) - -func TestVMRetA(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 9, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMRetALargerThanInput(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadAbsolute{ - Off: 8, - Size: 2, - }, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 255, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 2, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMRetConstant(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.RetConstant{ - Val: 9, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 1, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMRetConstantLargerThanInput(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.RetConstant{ - Val: 16, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0, 1, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 2, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} diff --git a/vendor/golang.org/x/net/bpf/vm_scratch_test.go b/vendor/golang.org/x/net/bpf/vm_scratch_test.go deleted file mode 100644 index e600e3c2..00000000 --- a/vendor/golang.org/x/net/bpf/vm_scratch_test.go +++ /dev/null @@ -1,247 +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 bpf_test - -import ( - "testing" - - "golang.org/x/net/bpf" -) - -func TestVMStoreScratchInvalidScratchRegisterTooSmall(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.StoreScratch{ - Src: bpf.RegA, - N: -1, - }, - bpf.RetA{}, - }) - if errStr(err) != "assembling instruction 1: invalid scratch slot -1" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMStoreScratchInvalidScratchRegisterTooLarge(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.StoreScratch{ - Src: bpf.RegA, - N: 16, - }, - bpf.RetA{}, - }) - if errStr(err) != "assembling instruction 1: invalid scratch slot 16" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMStoreScratchUnknownSourceRegister(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.StoreScratch{ - Src: 100, - N: 0, - }, - bpf.RetA{}, - }) - if errStr(err) != "assembling instruction 1: invalid source register 100" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMLoadScratchInvalidScratchRegisterTooSmall(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.LoadScratch{ - Dst: bpf.RegX, - N: -1, - }, - bpf.RetA{}, - }) - if errStr(err) != "assembling instruction 1: invalid scratch slot -1" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMLoadScratchInvalidScratchRegisterTooLarge(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.LoadScratch{ - Dst: bpf.RegX, - N: 16, - }, - bpf.RetA{}, - }) - if errStr(err) != "assembling instruction 1: invalid scratch slot 16" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMLoadScratchUnknownDestinationRegister(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.LoadScratch{ - Dst: 100, - N: 0, - }, - bpf.RetA{}, - }) - if errStr(err) != "assembling instruction 1: invalid target register 100" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMStoreScratchLoadScratchOneValue(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - // Load byte 255 - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - // Copy to X and store in scratch[0] - bpf.TAX{}, - bpf.StoreScratch{ - Src: bpf.RegX, - N: 0, - }, - // Load byte 1 - bpf.LoadAbsolute{ - Off: 9, - Size: 1, - }, - // Overwrite 1 with 255 from scratch[0] - bpf.LoadScratch{ - Dst: bpf.RegA, - N: 0, - }, - // Return 255 - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 255, 1, 2, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 3, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} - -func TestVMStoreScratchLoadScratchMultipleValues(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - // Load byte 10 - bpf.LoadAbsolute{ - Off: 8, - Size: 1, - }, - // Store in scratch[0] - bpf.StoreScratch{ - Src: bpf.RegA, - N: 0, - }, - // Load byte 20 - bpf.LoadAbsolute{ - Off: 9, - Size: 1, - }, - // Store in scratch[1] - bpf.StoreScratch{ - Src: bpf.RegA, - N: 1, - }, - // Load byte 30 - bpf.LoadAbsolute{ - Off: 10, - Size: 1, - }, - // Store in scratch[2] - bpf.StoreScratch{ - Src: bpf.RegA, - N: 2, - }, - // Load byte 1 - bpf.LoadAbsolute{ - Off: 11, - Size: 1, - }, - // Store in scratch[3] - bpf.StoreScratch{ - Src: bpf.RegA, - N: 3, - }, - // Load in byte 10 to X - bpf.LoadScratch{ - Dst: bpf.RegX, - N: 0, - }, - // Copy X -> A - bpf.TXA{}, - // Verify value is 10 - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: 10, - SkipTrue: 1, - }, - // Fail test if incorrect - bpf.RetConstant{ - Val: 0, - }, - // Load in byte 20 to A - bpf.LoadScratch{ - Dst: bpf.RegA, - N: 1, - }, - // Verify value is 20 - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: 20, - SkipTrue: 1, - }, - // Fail test if incorrect - bpf.RetConstant{ - Val: 0, - }, - // Load in byte 30 to A - bpf.LoadScratch{ - Dst: bpf.RegA, - N: 2, - }, - // Verify value is 30 - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: 30, - SkipTrue: 1, - }, - // Fail test if incorrect - bpf.RetConstant{ - Val: 0, - }, - // Return first two bytes on success - bpf.RetConstant{ - Val: 10, - }, - }) - if err != nil { - t.Fatalf("failed to load BPF program: %v", err) - } - defer done() - - out, err := vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 10, 20, 30, 1, - }) - if err != nil { - t.Fatalf("unexpected error while running program: %v", err) - } - if want, got := 2, out; want != got { - t.Fatalf("unexpected number of output bytes:\n- want: %d\n- got: %d", - want, got) - } -} diff --git a/vendor/golang.org/x/net/bpf/vm_test.go b/vendor/golang.org/x/net/bpf/vm_test.go deleted file mode 100644 index 6bd4dd5c..00000000 --- a/vendor/golang.org/x/net/bpf/vm_test.go +++ /dev/null @@ -1,144 +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 bpf_test - -import ( - "fmt" - "testing" - - "golang.org/x/net/bpf" -) - -var _ bpf.Instruction = unknown{} - -type unknown struct{} - -func (unknown) Assemble() (bpf.RawInstruction, error) { - return bpf.RawInstruction{}, nil -} - -func TestVMUnknownInstruction(t *testing.T) { - vm, done, err := testVM(t, []bpf.Instruction{ - bpf.LoadConstant{ - Dst: bpf.RegA, - Val: 100, - }, - // Should terminate the program with an error immediately - unknown{}, - bpf.RetA{}, - }) - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - defer done() - - _, err = vm.Run([]byte{ - 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, - }) - if errStr(err) != "unknown Instruction at index 1: bpf_test.unknown" { - t.Fatalf("unexpected error while running program: %v", err) - } -} - -func TestVMNoReturnInstruction(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{ - bpf.LoadConstant{ - Dst: bpf.RegA, - Val: 1, - }, - }) - if errStr(err) != "BPF program must end with RetA or RetConstant" { - t.Fatalf("unexpected error: %v", err) - } -} - -func TestVMNoInputInstructions(t *testing.T) { - _, _, err := testVM(t, []bpf.Instruction{}) - if errStr(err) != "one or more Instructions must be specified" { - t.Fatalf("unexpected error: %v", err) - } -} - -// ExampleNewVM demonstrates usage of a VM, using an Ethernet frame -// as input and checking its EtherType to determine if it should be accepted. -func ExampleNewVM() { - // Offset | Length | Comment - // ------------------------- - // 00 | 06 | Ethernet destination MAC address - // 06 | 06 | Ethernet source MAC address - // 12 | 02 | Ethernet EtherType - const ( - etOff = 12 - etLen = 2 - - etARP = 0x0806 - ) - - // Set up a VM to filter traffic based on if its EtherType - // matches the ARP EtherType. - vm, err := bpf.NewVM([]bpf.Instruction{ - // Load EtherType value from Ethernet header - bpf.LoadAbsolute{ - Off: etOff, - Size: etLen, - }, - // If EtherType is equal to the ARP EtherType, jump to allow - // packet to be accepted - bpf.JumpIf{ - Cond: bpf.JumpEqual, - Val: etARP, - SkipTrue: 1, - }, - // EtherType does not match the ARP EtherType - bpf.RetConstant{ - Val: 0, - }, - // EtherType matches the ARP EtherType, accept up to 1500 - // bytes of packet - bpf.RetConstant{ - Val: 1500, - }, - }) - if err != nil { - panic(fmt.Sprintf("failed to load BPF program: %v", err)) - } - - // Create an Ethernet frame with the ARP EtherType for testing - frame := []byte{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, - 0x08, 0x06, - // Payload omitted for brevity - } - - // Run our VM's BPF program using the Ethernet frame as input - out, err := vm.Run(frame) - if err != nil { - panic(fmt.Sprintf("failed to accept Ethernet frame: %v", err)) - } - - // BPF VM can return a byte count greater than the number of input - // bytes, so trim the output to match the input byte length - if out > len(frame) { - out = len(frame) - } - - fmt.Printf("out: %d bytes", out) - - // Output: - // out: 14 bytes -} - -// errStr returns the string representation of an error, or -// "" if it is nil. -func errStr(err error) string { - if err == nil { - return "" - } - - return err.Error() -} diff --git a/vendor/golang.org/x/net/codereview.cfg b/vendor/golang.org/x/net/codereview.cfg deleted file mode 100644 index 3f8b14b6..00000000 --- a/vendor/golang.org/x/net/codereview.cfg +++ /dev/null @@ -1 +0,0 @@ -issuerepo: golang/go diff --git a/vendor/golang.org/x/net/context/context_test.go b/vendor/golang.org/x/net/context/context_test.go deleted file mode 100644 index 62844131..00000000 --- a/vendor/golang.org/x/net/context/context_test.go +++ /dev/null @@ -1,583 +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. - -// +build !go1.7 - -package context - -import ( - "fmt" - "math/rand" - "runtime" - "strings" - "sync" - "testing" - "time" -) - -// otherContext is a Context that's not one of the types defined in context.go. -// This lets us test code paths that differ based on the underlying type of the -// Context. -type otherContext struct { - Context -} - -func TestBackground(t *testing.T) { - c := Background() - if c == nil { - t.Fatalf("Background returned nil") - } - select { - case x := <-c.Done(): - t.Errorf("<-c.Done() == %v want nothing (it should block)", x) - default: - } - if got, want := fmt.Sprint(c), "context.Background"; got != want { - t.Errorf("Background().String() = %q want %q", got, want) - } -} - -func TestTODO(t *testing.T) { - c := TODO() - if c == nil { - t.Fatalf("TODO returned nil") - } - select { - case x := <-c.Done(): - t.Errorf("<-c.Done() == %v want nothing (it should block)", x) - default: - } - if got, want := fmt.Sprint(c), "context.TODO"; got != want { - t.Errorf("TODO().String() = %q want %q", got, want) - } -} - -func TestWithCancel(t *testing.T) { - c1, cancel := WithCancel(Background()) - - if got, want := fmt.Sprint(c1), "context.Background.WithCancel"; got != want { - t.Errorf("c1.String() = %q want %q", got, want) - } - - o := otherContext{c1} - c2, _ := WithCancel(o) - contexts := []Context{c1, o, c2} - - for i, c := range contexts { - if d := c.Done(); d == nil { - t.Errorf("c[%d].Done() == %v want non-nil", i, d) - } - if e := c.Err(); e != nil { - t.Errorf("c[%d].Err() == %v want nil", i, e) - } - - select { - case x := <-c.Done(): - t.Errorf("<-c.Done() == %v want nothing (it should block)", x) - default: - } - } - - cancel() - time.Sleep(100 * time.Millisecond) // let cancelation propagate - - for i, c := range contexts { - select { - case <-c.Done(): - default: - t.Errorf("<-c[%d].Done() blocked, but shouldn't have", i) - } - if e := c.Err(); e != Canceled { - t.Errorf("c[%d].Err() == %v want %v", i, e, Canceled) - } - } -} - -func TestParentFinishesChild(t *testing.T) { - // Context tree: - // parent -> cancelChild - // parent -> valueChild -> timerChild - parent, cancel := WithCancel(Background()) - cancelChild, stop := WithCancel(parent) - defer stop() - valueChild := WithValue(parent, "key", "value") - timerChild, stop := WithTimeout(valueChild, 10000*time.Hour) - defer stop() - - select { - case x := <-parent.Done(): - t.Errorf("<-parent.Done() == %v want nothing (it should block)", x) - case x := <-cancelChild.Done(): - t.Errorf("<-cancelChild.Done() == %v want nothing (it should block)", x) - case x := <-timerChild.Done(): - t.Errorf("<-timerChild.Done() == %v want nothing (it should block)", x) - case x := <-valueChild.Done(): - t.Errorf("<-valueChild.Done() == %v want nothing (it should block)", x) - default: - } - - // The parent's children should contain the two cancelable children. - pc := parent.(*cancelCtx) - cc := cancelChild.(*cancelCtx) - tc := timerChild.(*timerCtx) - pc.mu.Lock() - if len(pc.children) != 2 || !pc.children[cc] || !pc.children[tc] { - t.Errorf("bad linkage: pc.children = %v, want %v and %v", - pc.children, cc, tc) - } - pc.mu.Unlock() - - if p, ok := parentCancelCtx(cc.Context); !ok || p != pc { - t.Errorf("bad linkage: parentCancelCtx(cancelChild.Context) = %v, %v want %v, true", p, ok, pc) - } - if p, ok := parentCancelCtx(tc.Context); !ok || p != pc { - t.Errorf("bad linkage: parentCancelCtx(timerChild.Context) = %v, %v want %v, true", p, ok, pc) - } - - cancel() - - pc.mu.Lock() - if len(pc.children) != 0 { - t.Errorf("pc.cancel didn't clear pc.children = %v", pc.children) - } - pc.mu.Unlock() - - // parent and children should all be finished. - check := func(ctx Context, name string) { - select { - case <-ctx.Done(): - default: - t.Errorf("<-%s.Done() blocked, but shouldn't have", name) - } - if e := ctx.Err(); e != Canceled { - t.Errorf("%s.Err() == %v want %v", name, e, Canceled) - } - } - check(parent, "parent") - check(cancelChild, "cancelChild") - check(valueChild, "valueChild") - check(timerChild, "timerChild") - - // WithCancel should return a canceled context on a canceled parent. - precanceledChild := WithValue(parent, "key", "value") - select { - case <-precanceledChild.Done(): - default: - t.Errorf("<-precanceledChild.Done() blocked, but shouldn't have") - } - if e := precanceledChild.Err(); e != Canceled { - t.Errorf("precanceledChild.Err() == %v want %v", e, Canceled) - } -} - -func TestChildFinishesFirst(t *testing.T) { - cancelable, stop := WithCancel(Background()) - defer stop() - for _, parent := range []Context{Background(), cancelable} { - child, cancel := WithCancel(parent) - - select { - case x := <-parent.Done(): - t.Errorf("<-parent.Done() == %v want nothing (it should block)", x) - case x := <-child.Done(): - t.Errorf("<-child.Done() == %v want nothing (it should block)", x) - default: - } - - cc := child.(*cancelCtx) - pc, pcok := parent.(*cancelCtx) // pcok == false when parent == Background() - if p, ok := parentCancelCtx(cc.Context); ok != pcok || (ok && pc != p) { - t.Errorf("bad linkage: parentCancelCtx(cc.Context) = %v, %v want %v, %v", p, ok, pc, pcok) - } - - if pcok { - pc.mu.Lock() - if len(pc.children) != 1 || !pc.children[cc] { - t.Errorf("bad linkage: pc.children = %v, cc = %v", pc.children, cc) - } - pc.mu.Unlock() - } - - cancel() - - if pcok { - pc.mu.Lock() - if len(pc.children) != 0 { - t.Errorf("child's cancel didn't remove self from pc.children = %v", pc.children) - } - pc.mu.Unlock() - } - - // child should be finished. - select { - case <-child.Done(): - default: - t.Errorf("<-child.Done() blocked, but shouldn't have") - } - if e := child.Err(); e != Canceled { - t.Errorf("child.Err() == %v want %v", e, Canceled) - } - - // parent should not be finished. - select { - case x := <-parent.Done(): - t.Errorf("<-parent.Done() == %v want nothing (it should block)", x) - default: - } - if e := parent.Err(); e != nil { - t.Errorf("parent.Err() == %v want nil", e) - } - } -} - -func testDeadline(c Context, wait time.Duration, t *testing.T) { - select { - case <-time.After(wait): - t.Fatalf("context should have timed out") - case <-c.Done(): - } - if e := c.Err(); e != DeadlineExceeded { - t.Errorf("c.Err() == %v want %v", e, DeadlineExceeded) - } -} - -func TestDeadline(t *testing.T) { - t.Parallel() - const timeUnit = 500 * time.Millisecond - c, _ := WithDeadline(Background(), time.Now().Add(1*timeUnit)) - if got, prefix := fmt.Sprint(c), "context.Background.WithDeadline("; !strings.HasPrefix(got, prefix) { - t.Errorf("c.String() = %q want prefix %q", got, prefix) - } - testDeadline(c, 2*timeUnit, t) - - c, _ = WithDeadline(Background(), time.Now().Add(1*timeUnit)) - o := otherContext{c} - testDeadline(o, 2*timeUnit, t) - - c, _ = WithDeadline(Background(), time.Now().Add(1*timeUnit)) - o = otherContext{c} - c, _ = WithDeadline(o, time.Now().Add(3*timeUnit)) - testDeadline(c, 2*timeUnit, t) -} - -func TestTimeout(t *testing.T) { - t.Parallel() - const timeUnit = 500 * time.Millisecond - c, _ := WithTimeout(Background(), 1*timeUnit) - if got, prefix := fmt.Sprint(c), "context.Background.WithDeadline("; !strings.HasPrefix(got, prefix) { - t.Errorf("c.String() = %q want prefix %q", got, prefix) - } - testDeadline(c, 2*timeUnit, t) - - c, _ = WithTimeout(Background(), 1*timeUnit) - o := otherContext{c} - testDeadline(o, 2*timeUnit, t) - - c, _ = WithTimeout(Background(), 1*timeUnit) - o = otherContext{c} - c, _ = WithTimeout(o, 3*timeUnit) - testDeadline(c, 2*timeUnit, t) -} - -func TestCanceledTimeout(t *testing.T) { - t.Parallel() - const timeUnit = 500 * time.Millisecond - c, _ := WithTimeout(Background(), 2*timeUnit) - o := otherContext{c} - c, cancel := WithTimeout(o, 4*timeUnit) - cancel() - time.Sleep(1 * timeUnit) // let cancelation propagate - select { - case <-c.Done(): - default: - t.Errorf("<-c.Done() blocked, but shouldn't have") - } - if e := c.Err(); e != Canceled { - t.Errorf("c.Err() == %v want %v", e, Canceled) - } -} - -type key1 int -type key2 int - -var k1 = key1(1) -var k2 = key2(1) // same int as k1, different type -var k3 = key2(3) // same type as k2, different int - -func TestValues(t *testing.T) { - check := func(c Context, nm, v1, v2, v3 string) { - if v, ok := c.Value(k1).(string); ok == (len(v1) == 0) || v != v1 { - t.Errorf(`%s.Value(k1).(string) = %q, %t want %q, %t`, nm, v, ok, v1, len(v1) != 0) - } - if v, ok := c.Value(k2).(string); ok == (len(v2) == 0) || v != v2 { - t.Errorf(`%s.Value(k2).(string) = %q, %t want %q, %t`, nm, v, ok, v2, len(v2) != 0) - } - if v, ok := c.Value(k3).(string); ok == (len(v3) == 0) || v != v3 { - t.Errorf(`%s.Value(k3).(string) = %q, %t want %q, %t`, nm, v, ok, v3, len(v3) != 0) - } - } - - c0 := Background() - check(c0, "c0", "", "", "") - - c1 := WithValue(Background(), k1, "c1k1") - check(c1, "c1", "c1k1", "", "") - - if got, want := fmt.Sprint(c1), `context.Background.WithValue(1, "c1k1")`; got != want { - t.Errorf("c.String() = %q want %q", got, want) - } - - c2 := WithValue(c1, k2, "c2k2") - check(c2, "c2", "c1k1", "c2k2", "") - - c3 := WithValue(c2, k3, "c3k3") - check(c3, "c2", "c1k1", "c2k2", "c3k3") - - c4 := WithValue(c3, k1, nil) - check(c4, "c4", "", "c2k2", "c3k3") - - o0 := otherContext{Background()} - check(o0, "o0", "", "", "") - - o1 := otherContext{WithValue(Background(), k1, "c1k1")} - check(o1, "o1", "c1k1", "", "") - - o2 := WithValue(o1, k2, "o2k2") - check(o2, "o2", "c1k1", "o2k2", "") - - o3 := otherContext{c4} - check(o3, "o3", "", "c2k2", "c3k3") - - o4 := WithValue(o3, k3, nil) - check(o4, "o4", "", "c2k2", "") -} - -func TestAllocs(t *testing.T) { - bg := Background() - for _, test := range []struct { - desc string - f func() - limit float64 - gccgoLimit float64 - }{ - { - desc: "Background()", - f: func() { Background() }, - limit: 0, - gccgoLimit: 0, - }, - { - desc: fmt.Sprintf("WithValue(bg, %v, nil)", k1), - f: func() { - c := WithValue(bg, k1, nil) - c.Value(k1) - }, - limit: 3, - gccgoLimit: 3, - }, - { - desc: "WithTimeout(bg, 15*time.Millisecond)", - f: func() { - c, _ := WithTimeout(bg, 15*time.Millisecond) - <-c.Done() - }, - limit: 8, - gccgoLimit: 16, - }, - { - desc: "WithCancel(bg)", - f: func() { - c, cancel := WithCancel(bg) - cancel() - <-c.Done() - }, - limit: 5, - gccgoLimit: 8, - }, - { - desc: "WithTimeout(bg, 100*time.Millisecond)", - f: func() { - c, cancel := WithTimeout(bg, 100*time.Millisecond) - cancel() - <-c.Done() - }, - limit: 8, - gccgoLimit: 25, - }, - } { - limit := test.limit - if runtime.Compiler == "gccgo" { - // gccgo does not yet do escape analysis. - // TODO(iant): Remove this when gccgo does do escape analysis. - limit = test.gccgoLimit - } - if n := testing.AllocsPerRun(100, test.f); n > limit { - t.Errorf("%s allocs = %f want %d", test.desc, n, int(limit)) - } - } -} - -func TestSimultaneousCancels(t *testing.T) { - root, cancel := WithCancel(Background()) - m := map[Context]CancelFunc{root: cancel} - q := []Context{root} - // Create a tree of contexts. - for len(q) != 0 && len(m) < 100 { - parent := q[0] - q = q[1:] - for i := 0; i < 4; i++ { - ctx, cancel := WithCancel(parent) - m[ctx] = cancel - q = append(q, ctx) - } - } - // Start all the cancels in a random order. - var wg sync.WaitGroup - wg.Add(len(m)) - for _, cancel := range m { - go func(cancel CancelFunc) { - cancel() - wg.Done() - }(cancel) - } - // Wait on all the contexts in a random order. - for ctx := range m { - select { - case <-ctx.Done(): - case <-time.After(1 * time.Second): - buf := make([]byte, 10<<10) - n := runtime.Stack(buf, true) - t.Fatalf("timed out waiting for <-ctx.Done(); stacks:\n%s", buf[:n]) - } - } - // Wait for all the cancel functions to return. - done := make(chan struct{}) - go func() { - wg.Wait() - close(done) - }() - select { - case <-done: - case <-time.After(1 * time.Second): - buf := make([]byte, 10<<10) - n := runtime.Stack(buf, true) - t.Fatalf("timed out waiting for cancel functions; stacks:\n%s", buf[:n]) - } -} - -func TestInterlockedCancels(t *testing.T) { - parent, cancelParent := WithCancel(Background()) - child, cancelChild := WithCancel(parent) - go func() { - parent.Done() - cancelChild() - }() - cancelParent() - select { - case <-child.Done(): - case <-time.After(1 * time.Second): - buf := make([]byte, 10<<10) - n := runtime.Stack(buf, true) - t.Fatalf("timed out waiting for child.Done(); stacks:\n%s", buf[:n]) - } -} - -func TestLayersCancel(t *testing.T) { - testLayers(t, time.Now().UnixNano(), false) -} - -func TestLayersTimeout(t *testing.T) { - testLayers(t, time.Now().UnixNano(), true) -} - -func testLayers(t *testing.T, seed int64, testTimeout bool) { - rand.Seed(seed) - errorf := func(format string, a ...interface{}) { - t.Errorf(fmt.Sprintf("seed=%d: %s", seed, format), a...) - } - const ( - timeout = 200 * time.Millisecond - minLayers = 30 - ) - type value int - var ( - vals []*value - cancels []CancelFunc - numTimers int - ctx = Background() - ) - for i := 0; i < minLayers || numTimers == 0 || len(cancels) == 0 || len(vals) == 0; i++ { - switch rand.Intn(3) { - case 0: - v := new(value) - ctx = WithValue(ctx, v, v) - vals = append(vals, v) - case 1: - var cancel CancelFunc - ctx, cancel = WithCancel(ctx) - cancels = append(cancels, cancel) - case 2: - var cancel CancelFunc - ctx, cancel = WithTimeout(ctx, timeout) - cancels = append(cancels, cancel) - numTimers++ - } - } - checkValues := func(when string) { - for _, key := range vals { - if val := ctx.Value(key).(*value); key != val { - errorf("%s: ctx.Value(%p) = %p want %p", when, key, val, key) - } - } - } - select { - case <-ctx.Done(): - errorf("ctx should not be canceled yet") - default: - } - if s, prefix := fmt.Sprint(ctx), "context.Background."; !strings.HasPrefix(s, prefix) { - t.Errorf("ctx.String() = %q want prefix %q", s, prefix) - } - t.Log(ctx) - checkValues("before cancel") - if testTimeout { - select { - case <-ctx.Done(): - case <-time.After(timeout + 100*time.Millisecond): - errorf("ctx should have timed out") - } - checkValues("after timeout") - } else { - cancel := cancels[rand.Intn(len(cancels))] - cancel() - select { - case <-ctx.Done(): - default: - errorf("ctx should be canceled") - } - checkValues("after cancel") - } -} - -func TestCancelRemoves(t *testing.T) { - checkChildren := func(when string, ctx Context, want int) { - if got := len(ctx.(*cancelCtx).children); got != want { - t.Errorf("%s: context has %d children, want %d", when, got, want) - } - } - - ctx, _ := WithCancel(Background()) - checkChildren("after creation", ctx, 0) - _, cancel := WithCancel(ctx) - checkChildren("with WithCancel child ", ctx, 1) - cancel() - checkChildren("after cancelling WithCancel child", ctx, 0) - - ctx, _ = WithCancel(Background()) - checkChildren("after creation", ctx, 0) - _, cancel = WithTimeout(ctx, 60*time.Minute) - checkChildren("with WithTimeout child ", ctx, 1) - cancel() - checkChildren("after cancelling WithTimeout child", ctx, 0) -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go deleted file mode 100644 index 606cf1f9..00000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +++ /dev/null @@ -1,74 +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. - -// +build go1.7 - -// Package ctxhttp provides helper functions for performing context-aware HTTP requests. -package ctxhttp // import "golang.org/x/net/context/ctxhttp" - -import ( - "io" - "net/http" - "net/url" - "strings" - - "golang.org/x/net/context" -) - -// Do sends an HTTP request with the provided http.Client and returns -// an HTTP response. -// -// If the client is nil, http.DefaultClient is used. -// -// The provided ctx must be non-nil. If it is canceled or times out, -// ctx.Err() will be returned. -func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) { - if client == nil { - client = http.DefaultClient - } - resp, err := client.Do(req.WithContext(ctx)) - // If we got an error, and the context has been canceled, - // the context's error is probably more useful. - if err != nil { - select { - case <-ctx.Done(): - err = ctx.Err() - default: - } - } - return resp, err -} - -// Get issues a GET request via the Do function. -func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Head issues a HEAD request via the Do function. -func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("HEAD", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Post issues a POST request via the Do function. -func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) { - req, err := http.NewRequest("POST", url, body) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", bodyType) - return Do(ctx, client, req) -} - -// PostForm issues a POST request via the Do function. -func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) { - return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode())) -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_17_test.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_17_test.go deleted file mode 100644 index 72411b1b..00000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_17_test.go +++ /dev/null @@ -1,29 +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. - -// +build !plan9,go1.7 - -package ctxhttp - -import ( - "io" - "net/http" - "net/http/httptest" - "testing" - - "context" -) - -func TestGo17Context(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, "ok") - })) - defer ts.Close() - ctx := context.Background() - resp, err := Get(ctx, http.DefaultClient, ts.URL) - if resp == nil || err != nil { - t.Fatalf("error received from client: %v %v", err, resp) - } - resp.Body.Close() -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go deleted file mode 100644 index 926870cc..00000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17.go +++ /dev/null @@ -1,147 +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. - -// +build !go1.7 - -package ctxhttp // import "golang.org/x/net/context/ctxhttp" - -import ( - "io" - "net/http" - "net/url" - "strings" - - "golang.org/x/net/context" -) - -func nop() {} - -var ( - testHookContextDoneBeforeHeaders = nop - testHookDoReturned = nop - testHookDidBodyClose = nop -) - -// Do sends an HTTP request with the provided http.Client and returns an HTTP response. -// If the client is nil, http.DefaultClient is used. -// If the context is canceled or times out, ctx.Err() will be returned. -func Do(ctx context.Context, client *http.Client, req *http.Request) (*http.Response, error) { - if client == nil { - client = http.DefaultClient - } - - // TODO(djd): Respect any existing value of req.Cancel. - cancel := make(chan struct{}) - req.Cancel = cancel - - type responseAndError struct { - resp *http.Response - err error - } - result := make(chan responseAndError, 1) - - // Make local copies of test hooks closed over by goroutines below. - // Prevents data races in tests. - testHookDoReturned := testHookDoReturned - testHookDidBodyClose := testHookDidBodyClose - - go func() { - resp, err := client.Do(req) - testHookDoReturned() - result <- responseAndError{resp, err} - }() - - var resp *http.Response - - select { - case <-ctx.Done(): - testHookContextDoneBeforeHeaders() - close(cancel) - // Clean up after the goroutine calling client.Do: - go func() { - if r := <-result; r.resp != nil { - testHookDidBodyClose() - r.resp.Body.Close() - } - }() - return nil, ctx.Err() - case r := <-result: - var err error - resp, err = r.resp, r.err - if err != nil { - return resp, err - } - } - - c := make(chan struct{}) - go func() { - select { - case <-ctx.Done(): - close(cancel) - case <-c: - // The response's Body is closed. - } - }() - resp.Body = ¬ifyingReader{resp.Body, c} - - return resp, nil -} - -// Get issues a GET request via the Do function. -func Get(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Head issues a HEAD request via the Do function. -func Head(ctx context.Context, client *http.Client, url string) (*http.Response, error) { - req, err := http.NewRequest("HEAD", url, nil) - if err != nil { - return nil, err - } - return Do(ctx, client, req) -} - -// Post issues a POST request via the Do function. -func Post(ctx context.Context, client *http.Client, url string, bodyType string, body io.Reader) (*http.Response, error) { - req, err := http.NewRequest("POST", url, body) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", bodyType) - return Do(ctx, client, req) -} - -// PostForm issues a POST request via the Do function. -func PostForm(ctx context.Context, client *http.Client, url string, data url.Values) (*http.Response, error) { - return Post(ctx, client, url, "application/x-www-form-urlencoded", strings.NewReader(data.Encode())) -} - -// notifyingReader is an io.ReadCloser that closes the notify channel after -// Close is called or a Read fails on the underlying ReadCloser. -type notifyingReader struct { - io.ReadCloser - notify chan<- struct{} -} - -func (r *notifyingReader) Read(p []byte) (int, error) { - n, err := r.ReadCloser.Read(p) - if err != nil && r.notify != nil { - close(r.notify) - r.notify = nil - } - return n, err -} - -func (r *notifyingReader) Close() error { - err := r.ReadCloser.Close() - if r.notify != nil { - close(r.notify) - r.notify = nil - } - return err -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17_test.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17_test.go deleted file mode 100644 index 9159cf02..00000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_pre17_test.go +++ /dev/null @@ -1,79 +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. - -// +build !plan9,!go1.7 - -package ctxhttp - -import ( - "net" - "net/http" - "net/http/httptest" - "sync" - "testing" - "time" - - "golang.org/x/net/context" -) - -// golang.org/issue/14065 -func TestClosesResponseBodyOnCancel(t *testing.T) { - defer func() { testHookContextDoneBeforeHeaders = nop }() - defer func() { testHookDoReturned = nop }() - defer func() { testHookDidBodyClose = nop }() - - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})) - defer ts.Close() - - ctx, cancel := context.WithCancel(context.Background()) - - // closed when Do enters select case <-ctx.Done() - enteredDonePath := make(chan struct{}) - - testHookContextDoneBeforeHeaders = func() { - close(enteredDonePath) - } - - testHookDoReturned = func() { - // We now have the result (the Flush'd headers) at least, - // so we can cancel the request. - cancel() - - // But block the client.Do goroutine from sending - // until Do enters into the <-ctx.Done() path, since - // otherwise if both channels are readable, select - // picks a random one. - <-enteredDonePath - } - - sawBodyClose := make(chan struct{}) - testHookDidBodyClose = func() { close(sawBodyClose) } - - tr := &http.Transport{} - defer tr.CloseIdleConnections() - c := &http.Client{Transport: tr} - req, _ := http.NewRequest("GET", ts.URL, nil) - _, doErr := Do(ctx, c, req) - - select { - case <-sawBodyClose: - case <-time.After(5 * time.Second): - t.Fatal("timeout waiting for body to close") - } - - if doErr != ctx.Err() { - t.Errorf("Do error = %v; want %v", doErr, ctx.Err()) - } -} - -type noteCloseConn struct { - net.Conn - onceClose sync.Once - closefn func() -} - -func (c *noteCloseConn) Close() error { - c.onceClose.Do(c.closefn) - return c.Conn.Close() -} diff --git a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_test.go b/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_test.go deleted file mode 100644 index 1e415518..00000000 --- a/vendor/golang.org/x/net/context/ctxhttp/ctxhttp_test.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. - -// +build !plan9 - -package ctxhttp - -import ( - "io" - "io/ioutil" - "net/http" - "net/http/httptest" - "testing" - "time" - - "golang.org/x/net/context" -) - -const ( - requestDuration = 100 * time.Millisecond - requestBody = "ok" -) - -func okHandler(w http.ResponseWriter, r *http.Request) { - time.Sleep(requestDuration) - io.WriteString(w, requestBody) -} - -func TestNoTimeout(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(okHandler)) - defer ts.Close() - - ctx := context.Background() - res, err := Get(ctx, nil, ts.URL) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - t.Fatal(err) - } - if string(slurp) != requestBody { - t.Errorf("body = %q; want %q", slurp, requestBody) - } -} - -func TestCancelBeforeHeaders(t *testing.T) { - ctx, cancel := context.WithCancel(context.Background()) - - blockServer := make(chan struct{}) - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - cancel() - <-blockServer - io.WriteString(w, requestBody) - })) - defer ts.Close() - defer close(blockServer) - - res, err := Get(ctx, nil, ts.URL) - if err == nil { - res.Body.Close() - t.Fatal("Get returned unexpected nil error") - } - if err != context.Canceled { - t.Errorf("err = %v; want %v", err, context.Canceled) - } -} - -func TestCancelAfterHangingRequest(t *testing.T) { - ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusOK) - w.(http.Flusher).Flush() - <-w.(http.CloseNotifier).CloseNotify() - })) - defer ts.Close() - - ctx, cancel := context.WithCancel(context.Background()) - resp, err := Get(ctx, nil, ts.URL) - if err != nil { - t.Fatalf("unexpected error in Get: %v", err) - } - - // Cancel befer reading the body. - // Reading Request.Body should fail, since the request was - // canceled before anything was written. - cancel() - - done := make(chan struct{}) - - go func() { - b, err := ioutil.ReadAll(resp.Body) - if len(b) != 0 || err == nil { - t.Errorf(`Read got (%q, %v); want ("", error)`, b, err) - } - close(done) - }() - - select { - case <-time.After(1 * time.Second): - t.Errorf("Test timed out") - case <-done: - } -} diff --git a/vendor/golang.org/x/net/context/withtimeout_test.go b/vendor/golang.org/x/net/context/withtimeout_test.go deleted file mode 100644 index e6f56691..00000000 --- a/vendor/golang.org/x/net/context/withtimeout_test.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package context_test - -import ( - "fmt" - "time" - - "golang.org/x/net/context" -) - -// This example passes a context with a timeout to tell a blocking function that -// it should abandon its work after the timeout elapses. -func ExampleWithTimeout() { - // Pass a context with a timeout to tell a blocking function that it - // should abandon its work after the timeout elapses. - ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) - defer cancel() - - select { - case <-time.After(1 * time.Second): - fmt.Println("overslept") - case <-ctx.Done(): - fmt.Println(ctx.Err()) // prints "context deadline exceeded" - } - - // Output: - // context deadline exceeded -} diff --git a/vendor/golang.org/x/net/dict/dict.go b/vendor/golang.org/x/net/dict/dict.go deleted file mode 100644 index 93e65c03..00000000 --- a/vendor/golang.org/x/net/dict/dict.go +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package dict implements the Dictionary Server Protocol -// as defined in RFC 2229. -package dict // import "golang.org/x/net/dict" - -import ( - "net/textproto" - "strconv" - "strings" -) - -// A Client represents a client connection to a dictionary server. -type Client struct { - text *textproto.Conn -} - -// Dial returns a new client connected to a dictionary server at -// addr on the given network. -func Dial(network, addr string) (*Client, error) { - text, err := textproto.Dial(network, addr) - if err != nil { - return nil, err - } - _, _, err = text.ReadCodeLine(220) - if err != nil { - text.Close() - return nil, err - } - return &Client{text: text}, nil -} - -// Close closes the connection to the dictionary server. -func (c *Client) Close() error { - return c.text.Close() -} - -// A Dict represents a dictionary available on the server. -type Dict struct { - Name string // short name of dictionary - Desc string // long description -} - -// Dicts returns a list of the dictionaries available on the server. -func (c *Client) Dicts() ([]Dict, error) { - id, err := c.text.Cmd("SHOW DB") - if err != nil { - return nil, err - } - - c.text.StartResponse(id) - defer c.text.EndResponse(id) - - _, _, err = c.text.ReadCodeLine(110) - if err != nil { - return nil, err - } - lines, err := c.text.ReadDotLines() - if err != nil { - return nil, err - } - _, _, err = c.text.ReadCodeLine(250) - - dicts := make([]Dict, len(lines)) - for i := range dicts { - d := &dicts[i] - a, _ := fields(lines[i]) - if len(a) < 2 { - return nil, textproto.ProtocolError("invalid dictionary: " + lines[i]) - } - d.Name = a[0] - d.Desc = a[1] - } - return dicts, err -} - -// A Defn represents a definition. -type Defn struct { - Dict Dict // Dict where definition was found - Word string // Word being defined - Text []byte // Definition text, typically multiple lines -} - -// Define requests the definition of the given word. -// The argument dict names the dictionary to use, -// the Name field of a Dict returned by Dicts. -// -// The special dictionary name "*" means to look in all the -// server's dictionaries. -// The special dictionary name "!" means to look in all the -// server's dictionaries in turn, stopping after finding the word -// in one of them. -func (c *Client) Define(dict, word string) ([]*Defn, error) { - id, err := c.text.Cmd("DEFINE %s %q", dict, word) - if err != nil { - return nil, err - } - - c.text.StartResponse(id) - defer c.text.EndResponse(id) - - _, line, err := c.text.ReadCodeLine(150) - if err != nil { - return nil, err - } - a, _ := fields(line) - if len(a) < 1 { - return nil, textproto.ProtocolError("malformed response: " + line) - } - n, err := strconv.Atoi(a[0]) - if err != nil { - return nil, textproto.ProtocolError("invalid definition count: " + a[0]) - } - def := make([]*Defn, n) - for i := 0; i < n; i++ { - _, line, err = c.text.ReadCodeLine(151) - if err != nil { - return nil, err - } - a, _ := fields(line) - if len(a) < 3 { - // skip it, to keep protocol in sync - i-- - n-- - def = def[0:n] - continue - } - d := &Defn{Word: a[0], Dict: Dict{a[1], a[2]}} - d.Text, err = c.text.ReadDotBytes() - if err != nil { - return nil, err - } - def[i] = d - } - _, _, err = c.text.ReadCodeLine(250) - return def, err -} - -// Fields returns the fields in s. -// Fields are space separated unquoted words -// or quoted with single or double quote. -func fields(s string) ([]string, error) { - var v []string - i := 0 - for { - for i < len(s) && (s[i] == ' ' || s[i] == '\t') { - i++ - } - if i >= len(s) { - break - } - if s[i] == '"' || s[i] == '\'' { - q := s[i] - // quoted string - var j int - for j = i + 1; ; j++ { - if j >= len(s) { - return nil, textproto.ProtocolError("malformed quoted string") - } - if s[j] == '\\' { - j++ - continue - } - if s[j] == q { - j++ - break - } - } - v = append(v, unquote(s[i+1:j-1])) - i = j - } else { - // atom - var j int - for j = i; j < len(s); j++ { - if s[j] == ' ' || s[j] == '\t' || s[j] == '\\' || s[j] == '"' || s[j] == '\'' { - break - } - } - v = append(v, s[i:j]) - i = j - } - if i < len(s) { - c := s[i] - if c != ' ' && c != '\t' { - return nil, textproto.ProtocolError("quotes not on word boundaries") - } - } - } - return v, nil -} - -func unquote(s string) string { - if strings.Index(s, "\\") < 0 { - return s - } - b := []byte(s) - w := 0 - for r := 0; r < len(b); r++ { - c := b[r] - if c == '\\' { - r++ - c = b[r] - } - b[w] = c - w++ - } - return string(b[0:w]) -} diff --git a/vendor/golang.org/x/net/dns/dnsmessage/example_test.go b/vendor/golang.org/x/net/dns/dnsmessage/example_test.go deleted file mode 100644 index 5415c2d3..00000000 --- a/vendor/golang.org/x/net/dns/dnsmessage/example_test.go +++ /dev/null @@ -1,132 +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 dnsmessage_test - -import ( - "fmt" - "net" - "strings" - - "golang.org/x/net/dns/dnsmessage" -) - -func mustNewName(name string) dnsmessage.Name { - n, err := dnsmessage.NewName(name) - if err != nil { - panic(err) - } - return n -} - -func ExampleParser() { - msg := dnsmessage.Message{ - Header: dnsmessage.Header{Response: true, Authoritative: true}, - Questions: []dnsmessage.Question{ - { - Name: mustNewName("foo.bar.example.com."), - Type: dnsmessage.TypeA, - Class: dnsmessage.ClassINET, - }, - { - Name: mustNewName("bar.example.com."), - Type: dnsmessage.TypeA, - Class: dnsmessage.ClassINET, - }, - }, - Answers: []dnsmessage.Resource{ - { - dnsmessage.ResourceHeader{ - Name: mustNewName("foo.bar.example.com."), - Type: dnsmessage.TypeA, - Class: dnsmessage.ClassINET, - }, - &dnsmessage.AResource{[4]byte{127, 0, 0, 1}}, - }, - { - dnsmessage.ResourceHeader{ - Name: mustNewName("bar.example.com."), - Type: dnsmessage.TypeA, - Class: dnsmessage.ClassINET, - }, - &dnsmessage.AResource{[4]byte{127, 0, 0, 2}}, - }, - }, - } - - buf, err := msg.Pack() - if err != nil { - panic(err) - } - - wantName := "bar.example.com." - - var p dnsmessage.Parser - if _, err := p.Start(buf); err != nil { - panic(err) - } - - for { - q, err := p.Question() - if err == dnsmessage.ErrSectionDone { - break - } - if err != nil { - panic(err) - } - - if q.Name.String() != wantName { - continue - } - - fmt.Println("Found question for name", wantName) - if err := p.SkipAllQuestions(); err != nil { - panic(err) - } - break - } - - var gotIPs []net.IP - for { - h, err := p.AnswerHeader() - if err == dnsmessage.ErrSectionDone { - break - } - if err != nil { - panic(err) - } - - if (h.Type != dnsmessage.TypeA && h.Type != dnsmessage.TypeAAAA) || h.Class != dnsmessage.ClassINET { - continue - } - - if !strings.EqualFold(h.Name.String(), wantName) { - if err := p.SkipAnswer(); err != nil { - panic(err) - } - continue - } - - switch h.Type { - case dnsmessage.TypeA: - r, err := p.AResource() - if err != nil { - panic(err) - } - gotIPs = append(gotIPs, r.A[:]) - case dnsmessage.TypeAAAA: - r, err := p.AAAAResource() - if err != nil { - panic(err) - } - gotIPs = append(gotIPs, r.AAAA[:]) - } - } - - fmt.Printf("Found A/AAAA records for name %s: %v\n", wantName, gotIPs) - - // Output: - // Found question for name bar.example.com. - // Found A/AAAA records for name bar.example.com.: [127.0.0.2] -} diff --git a/vendor/golang.org/x/net/dns/dnsmessage/message.go b/vendor/golang.org/x/net/dns/dnsmessage/message.go deleted file mode 100644 index e98fda66..00000000 --- a/vendor/golang.org/x/net/dns/dnsmessage/message.go +++ /dev/null @@ -1,2034 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package dnsmessage provides a mostly RFC 1035 compliant implementation of -// DNS message packing and unpacking. -// -// This implementation is designed to minimize heap allocations and avoid -// unnecessary packing and unpacking as much as possible. -package dnsmessage - -import ( - "errors" -) - -// Message formats - -// A Type is a type of DNS request and response. -type Type uint16 - -// A Class is a type of network. -type Class uint16 - -// An OpCode is a DNS operation code. -type OpCode uint16 - -// An RCode is a DNS response status code. -type RCode uint16 - -// Wire constants. -const ( - // ResourceHeader.Type and Question.Type - TypeA Type = 1 - TypeNS Type = 2 - TypeCNAME Type = 5 - TypeSOA Type = 6 - TypePTR Type = 12 - TypeMX Type = 15 - TypeTXT Type = 16 - TypeAAAA Type = 28 - TypeSRV Type = 33 - - // Question.Type - TypeWKS Type = 11 - TypeHINFO Type = 13 - TypeMINFO Type = 14 - TypeAXFR Type = 252 - TypeALL Type = 255 - - // ResourceHeader.Class and Question.Class - ClassINET Class = 1 - ClassCSNET Class = 2 - ClassCHAOS Class = 3 - ClassHESIOD Class = 4 - - // Question.Class - ClassANY Class = 255 - - // Message.Rcode - RCodeSuccess RCode = 0 - RCodeFormatError RCode = 1 - RCodeServerFailure RCode = 2 - RCodeNameError RCode = 3 - RCodeNotImplemented RCode = 4 - RCodeRefused RCode = 5 -) - -var ( - // ErrNotStarted indicates that the prerequisite information isn't - // available yet because the previous records haven't been appropriately - // parsed, skipped or finished. - ErrNotStarted = errors.New("parsing/packing of this type isn't available yet") - - // ErrSectionDone indicated that all records in the section have been - // parsed or finished. - ErrSectionDone = errors.New("parsing/packing of this section has completed") - - errBaseLen = errors.New("insufficient data for base length type") - errCalcLen = errors.New("insufficient data for calculated length type") - errReserved = errors.New("segment prefix is reserved") - errTooManyPtr = errors.New("too many pointers (>10)") - errInvalidPtr = errors.New("invalid pointer") - errNilResouceBody = errors.New("nil resource body") - errResourceLen = errors.New("insufficient data for resource body length") - errSegTooLong = errors.New("segment length too long") - errZeroSegLen = errors.New("zero length segment") - errResTooLong = errors.New("resource length too long") - errTooManyQuestions = errors.New("too many Questions to pack (>65535)") - errTooManyAnswers = errors.New("too many Answers to pack (>65535)") - errTooManyAuthorities = errors.New("too many Authorities to pack (>65535)") - errTooManyAdditionals = errors.New("too many Additionals to pack (>65535)") - errNonCanonicalName = errors.New("name is not in canonical format (it must end with a .)") -) - -// Internal constants. -const ( - // packStartingCap is the default initial buffer size allocated during - // packing. - // - // The starting capacity doesn't matter too much, but most DNS responses - // Will be <= 512 bytes as it is the limit for DNS over UDP. - packStartingCap = 512 - - // uint16Len is the length (in bytes) of a uint16. - uint16Len = 2 - - // uint32Len is the length (in bytes) of a uint32. - uint32Len = 4 - - // headerLen is the length (in bytes) of a DNS header. - // - // A header is comprised of 6 uint16s and no padding. - headerLen = 6 * uint16Len -) - -type nestedError struct { - // s is the current level's error message. - s string - - // err is the nested error. - err error -} - -// nestedError implements error.Error. -func (e *nestedError) Error() string { - return e.s + ": " + e.err.Error() -} - -// Header is a representation of a DNS message header. -type Header struct { - ID uint16 - Response bool - OpCode OpCode - Authoritative bool - Truncated bool - RecursionDesired bool - RecursionAvailable bool - RCode RCode -} - -func (m *Header) pack() (id uint16, bits uint16) { - id = m.ID - bits = uint16(m.OpCode)<<11 | uint16(m.RCode) - if m.RecursionAvailable { - bits |= headerBitRA - } - if m.RecursionDesired { - bits |= headerBitRD - } - if m.Truncated { - bits |= headerBitTC - } - if m.Authoritative { - bits |= headerBitAA - } - if m.Response { - bits |= headerBitQR - } - return -} - -// Message is a representation of a DNS message. -type Message struct { - Header - Questions []Question - Answers []Resource - Authorities []Resource - Additionals []Resource -} - -type section uint8 - -const ( - sectionNotStarted section = iota - sectionHeader - sectionQuestions - sectionAnswers - sectionAuthorities - sectionAdditionals - sectionDone - - headerBitQR = 1 << 15 // query/response (response=1) - headerBitAA = 1 << 10 // authoritative - headerBitTC = 1 << 9 // truncated - headerBitRD = 1 << 8 // recursion desired - headerBitRA = 1 << 7 // recursion available -) - -var sectionNames = map[section]string{ - sectionHeader: "header", - sectionQuestions: "Question", - sectionAnswers: "Answer", - sectionAuthorities: "Authority", - sectionAdditionals: "Additional", -} - -// header is the wire format for a DNS message header. -type header struct { - id uint16 - bits uint16 - questions uint16 - answers uint16 - authorities uint16 - additionals uint16 -} - -func (h *header) count(sec section) uint16 { - switch sec { - case sectionQuestions: - return h.questions - case sectionAnswers: - return h.answers - case sectionAuthorities: - return h.authorities - case sectionAdditionals: - return h.additionals - } - return 0 -} - -func (h *header) pack(msg []byte) []byte { - msg = packUint16(msg, h.id) - msg = packUint16(msg, h.bits) - msg = packUint16(msg, h.questions) - msg = packUint16(msg, h.answers) - msg = packUint16(msg, h.authorities) - return packUint16(msg, h.additionals) -} - -func (h *header) unpack(msg []byte, off int) (int, error) { - newOff := off - var err error - if h.id, newOff, err = unpackUint16(msg, newOff); err != nil { - return off, &nestedError{"id", err} - } - if h.bits, newOff, err = unpackUint16(msg, newOff); err != nil { - return off, &nestedError{"bits", err} - } - if h.questions, newOff, err = unpackUint16(msg, newOff); err != nil { - return off, &nestedError{"questions", err} - } - if h.answers, newOff, err = unpackUint16(msg, newOff); err != nil { - return off, &nestedError{"answers", err} - } - if h.authorities, newOff, err = unpackUint16(msg, newOff); err != nil { - return off, &nestedError{"authorities", err} - } - if h.additionals, newOff, err = unpackUint16(msg, newOff); err != nil { - return off, &nestedError{"additionals", err} - } - return newOff, nil -} - -func (h *header) header() Header { - return Header{ - ID: h.id, - Response: (h.bits & headerBitQR) != 0, - OpCode: OpCode(h.bits>>11) & 0xF, - Authoritative: (h.bits & headerBitAA) != 0, - Truncated: (h.bits & headerBitTC) != 0, - RecursionDesired: (h.bits & headerBitRD) != 0, - RecursionAvailable: (h.bits & headerBitRA) != 0, - RCode: RCode(h.bits & 0xF), - } -} - -// A Resource is a DNS resource record. -type Resource struct { - Header ResourceHeader - Body ResourceBody -} - -// A ResourceBody is a DNS resource record minus the header. -type ResourceBody interface { - // pack packs a Resource except for its header. - pack(msg []byte, compression map[string]int) ([]byte, error) - - // realType returns the actual type of the Resource. This is used to - // fill in the header Type field. - realType() Type -} - -func (r *Resource) pack(msg []byte, compression map[string]int) ([]byte, error) { - if r.Body == nil { - return msg, errNilResouceBody - } - oldMsg := msg - r.Header.Type = r.Body.realType() - msg, length, err := r.Header.pack(msg, compression) - if err != nil { - return msg, &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - msg, err = r.Body.pack(msg, compression) - if err != nil { - return msg, &nestedError{"content", err} - } - if err := r.Header.fixLen(msg, length, preLen); err != nil { - return oldMsg, err - } - return msg, nil -} - -// A Parser allows incrementally parsing a DNS message. -// -// When parsing is started, the Header is parsed. Next, each Question can be -// either parsed or skipped. Alternatively, all Questions can be skipped at -// once. When all Questions have been parsed, attempting to parse Questions -// will return (nil, nil) and attempting to skip Questions will return -// (true, nil). After all Questions have been either parsed or skipped, all -// Answers, Authorities and Additionals can be either parsed or skipped in the -// same way, and each type of Resource must be fully parsed or skipped before -// proceeding to the next type of Resource. -// -// Note that there is no requirement to fully skip or parse the message. -type Parser struct { - msg []byte - header header - - section section - off int - index int - resHeaderValid bool - resHeader ResourceHeader -} - -// Start parses the header and enables the parsing of Questions. -func (p *Parser) Start(msg []byte) (Header, error) { - if p.msg != nil { - *p = Parser{} - } - p.msg = msg - var err error - if p.off, err = p.header.unpack(msg, 0); err != nil { - return Header{}, &nestedError{"unpacking header", err} - } - p.section = sectionQuestions - return p.header.header(), nil -} - -func (p *Parser) checkAdvance(sec section) error { - if p.section < sec { - return ErrNotStarted - } - if p.section > sec { - return ErrSectionDone - } - p.resHeaderValid = false - if p.index == int(p.header.count(sec)) { - p.index = 0 - p.section++ - return ErrSectionDone - } - return nil -} - -func (p *Parser) resource(sec section) (Resource, error) { - var r Resource - var err error - r.Header, err = p.resourceHeader(sec) - if err != nil { - return r, err - } - p.resHeaderValid = false - r.Body, p.off, err = unpackResourceBody(p.msg, p.off, r.Header) - if err != nil { - return Resource{}, &nestedError{"unpacking " + sectionNames[sec], err} - } - p.index++ - return r, nil -} - -func (p *Parser) resourceHeader(sec section) (ResourceHeader, error) { - if p.resHeaderValid { - return p.resHeader, nil - } - if err := p.checkAdvance(sec); err != nil { - return ResourceHeader{}, err - } - var hdr ResourceHeader - off, err := hdr.unpack(p.msg, p.off) - if err != nil { - return ResourceHeader{}, err - } - p.resHeaderValid = true - p.resHeader = hdr - p.off = off - return hdr, nil -} - -func (p *Parser) skipResource(sec section) error { - if p.resHeaderValid { - newOff := p.off + int(p.resHeader.Length) - if newOff > len(p.msg) { - return errResourceLen - } - p.off = newOff - p.resHeaderValid = false - p.index++ - return nil - } - if err := p.checkAdvance(sec); err != nil { - return err - } - var err error - p.off, err = skipResource(p.msg, p.off) - if err != nil { - return &nestedError{"skipping: " + sectionNames[sec], err} - } - p.index++ - return nil -} - -// Question parses a single Question. -func (p *Parser) Question() (Question, error) { - if err := p.checkAdvance(sectionQuestions); err != nil { - return Question{}, err - } - var name Name - off, err := name.unpack(p.msg, p.off) - if err != nil { - return Question{}, &nestedError{"unpacking Question.Name", err} - } - typ, off, err := unpackType(p.msg, off) - if err != nil { - return Question{}, &nestedError{"unpacking Question.Type", err} - } - class, off, err := unpackClass(p.msg, off) - if err != nil { - return Question{}, &nestedError{"unpacking Question.Class", err} - } - p.off = off - p.index++ - return Question{name, typ, class}, nil -} - -// AllQuestions parses all Questions. -func (p *Parser) AllQuestions() ([]Question, error) { - // Multiple questions are valid according to the spec, - // but servers don't actually support them. There will - // be at most one question here. - // - // Do not pre-allocate based on info in p.header, since - // the data is untrusted. - qs := []Question{} - for { - q, err := p.Question() - if err == ErrSectionDone { - return qs, nil - } - if err != nil { - return nil, err - } - qs = append(qs, q) - } -} - -// SkipQuestion skips a single Question. -func (p *Parser) SkipQuestion() error { - if err := p.checkAdvance(sectionQuestions); err != nil { - return err - } - off, err := skipName(p.msg, p.off) - if err != nil { - return &nestedError{"skipping Question Name", err} - } - if off, err = skipType(p.msg, off); err != nil { - return &nestedError{"skipping Question Type", err} - } - if off, err = skipClass(p.msg, off); err != nil { - return &nestedError{"skipping Question Class", err} - } - p.off = off - p.index++ - return nil -} - -// SkipAllQuestions skips all Questions. -func (p *Parser) SkipAllQuestions() error { - for { - if err := p.SkipQuestion(); err == ErrSectionDone { - return nil - } else if err != nil { - return err - } - } -} - -// AnswerHeader parses a single Answer ResourceHeader. -func (p *Parser) AnswerHeader() (ResourceHeader, error) { - return p.resourceHeader(sectionAnswers) -} - -// Answer parses a single Answer Resource. -func (p *Parser) Answer() (Resource, error) { - return p.resource(sectionAnswers) -} - -// AllAnswers parses all Answer Resources. -func (p *Parser) AllAnswers() ([]Resource, error) { - // The most common query is for A/AAAA, which usually returns - // a handful of IPs. - // - // Pre-allocate up to a certain limit, since p.header is - // untrusted data. - n := int(p.header.answers) - if n > 20 { - n = 20 - } - as := make([]Resource, 0, n) - for { - a, err := p.Answer() - if err == ErrSectionDone { - return as, nil - } - if err != nil { - return nil, err - } - as = append(as, a) - } -} - -// SkipAnswer skips a single Answer Resource. -func (p *Parser) SkipAnswer() error { - return p.skipResource(sectionAnswers) -} - -// SkipAllAnswers skips all Answer Resources. -func (p *Parser) SkipAllAnswers() error { - for { - if err := p.SkipAnswer(); err == ErrSectionDone { - return nil - } else if err != nil { - return err - } - } -} - -// AuthorityHeader parses a single Authority ResourceHeader. -func (p *Parser) AuthorityHeader() (ResourceHeader, error) { - return p.resourceHeader(sectionAuthorities) -} - -// Authority parses a single Authority Resource. -func (p *Parser) Authority() (Resource, error) { - return p.resource(sectionAuthorities) -} - -// AllAuthorities parses all Authority Resources. -func (p *Parser) AllAuthorities() ([]Resource, error) { - // Authorities contains SOA in case of NXDOMAIN and friends, - // otherwise it is empty. - // - // Pre-allocate up to a certain limit, since p.header is - // untrusted data. - n := int(p.header.authorities) - if n > 10 { - n = 10 - } - as := make([]Resource, 0, n) - for { - a, err := p.Authority() - if err == ErrSectionDone { - return as, nil - } - if err != nil { - return nil, err - } - as = append(as, a) - } -} - -// SkipAuthority skips a single Authority Resource. -func (p *Parser) SkipAuthority() error { - return p.skipResource(sectionAuthorities) -} - -// SkipAllAuthorities skips all Authority Resources. -func (p *Parser) SkipAllAuthorities() error { - for { - if err := p.SkipAuthority(); err == ErrSectionDone { - return nil - } else if err != nil { - return err - } - } -} - -// AdditionalHeader parses a single Additional ResourceHeader. -func (p *Parser) AdditionalHeader() (ResourceHeader, error) { - return p.resourceHeader(sectionAdditionals) -} - -// Additional parses a single Additional Resource. -func (p *Parser) Additional() (Resource, error) { - return p.resource(sectionAdditionals) -} - -// AllAdditionals parses all Additional Resources. -func (p *Parser) AllAdditionals() ([]Resource, error) { - // Additionals usually contain OPT, and sometimes A/AAAA - // glue records. - // - // Pre-allocate up to a certain limit, since p.header is - // untrusted data. - n := int(p.header.additionals) - if n > 10 { - n = 10 - } - as := make([]Resource, 0, n) - for { - a, err := p.Additional() - if err == ErrSectionDone { - return as, nil - } - if err != nil { - return nil, err - } - as = append(as, a) - } -} - -// SkipAdditional skips a single Additional Resource. -func (p *Parser) SkipAdditional() error { - return p.skipResource(sectionAdditionals) -} - -// SkipAllAdditionals skips all Additional Resources. -func (p *Parser) SkipAllAdditionals() error { - for { - if err := p.SkipAdditional(); err == ErrSectionDone { - return nil - } else if err != nil { - return err - } - } -} - -// CNAMEResource parses a single CNAMEResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) CNAMEResource() (CNAMEResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypeCNAME { - return CNAMEResource{}, ErrNotStarted - } - r, err := unpackCNAMEResource(p.msg, p.off) - if err != nil { - return CNAMEResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// MXResource parses a single MXResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) MXResource() (MXResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypeMX { - return MXResource{}, ErrNotStarted - } - r, err := unpackMXResource(p.msg, p.off) - if err != nil { - return MXResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// NSResource parses a single NSResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) NSResource() (NSResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypeNS { - return NSResource{}, ErrNotStarted - } - r, err := unpackNSResource(p.msg, p.off) - if err != nil { - return NSResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// PTRResource parses a single PTRResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) PTRResource() (PTRResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypePTR { - return PTRResource{}, ErrNotStarted - } - r, err := unpackPTRResource(p.msg, p.off) - if err != nil { - return PTRResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// SOAResource parses a single SOAResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) SOAResource() (SOAResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypeSOA { - return SOAResource{}, ErrNotStarted - } - r, err := unpackSOAResource(p.msg, p.off) - if err != nil { - return SOAResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// TXTResource parses a single TXTResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) TXTResource() (TXTResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypeTXT { - return TXTResource{}, ErrNotStarted - } - r, err := unpackTXTResource(p.msg, p.off, p.resHeader.Length) - if err != nil { - return TXTResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// SRVResource parses a single SRVResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) SRVResource() (SRVResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypeSRV { - return SRVResource{}, ErrNotStarted - } - r, err := unpackSRVResource(p.msg, p.off) - if err != nil { - return SRVResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// AResource parses a single AResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) AResource() (AResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypeA { - return AResource{}, ErrNotStarted - } - r, err := unpackAResource(p.msg, p.off) - if err != nil { - return AResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// AAAAResource parses a single AAAAResource. -// -// One of the XXXHeader methods must have been called before calling this -// method. -func (p *Parser) AAAAResource() (AAAAResource, error) { - if !p.resHeaderValid || p.resHeader.Type != TypeAAAA { - return AAAAResource{}, ErrNotStarted - } - r, err := unpackAAAAResource(p.msg, p.off) - if err != nil { - return AAAAResource{}, err - } - p.off += int(p.resHeader.Length) - p.resHeaderValid = false - p.index++ - return r, nil -} - -// Unpack parses a full Message. -func (m *Message) Unpack(msg []byte) error { - var p Parser - var err error - if m.Header, err = p.Start(msg); err != nil { - return err - } - if m.Questions, err = p.AllQuestions(); err != nil { - return err - } - if m.Answers, err = p.AllAnswers(); err != nil { - return err - } - if m.Authorities, err = p.AllAuthorities(); err != nil { - return err - } - if m.Additionals, err = p.AllAdditionals(); err != nil { - return err - } - return nil -} - -// Pack packs a full Message. -func (m *Message) Pack() ([]byte, error) { - return m.AppendPack(make([]byte, 0, packStartingCap)) -} - -// AppendPack is like Pack but appends the full Message to b and returns the -// extended buffer. -func (m *Message) AppendPack(b []byte) ([]byte, error) { - // Validate the lengths. It is very unlikely that anyone will try to - // pack more than 65535 of any particular type, but it is possible and - // we should fail gracefully. - if len(m.Questions) > int(^uint16(0)) { - return nil, errTooManyQuestions - } - if len(m.Answers) > int(^uint16(0)) { - return nil, errTooManyAnswers - } - if len(m.Authorities) > int(^uint16(0)) { - return nil, errTooManyAuthorities - } - if len(m.Additionals) > int(^uint16(0)) { - return nil, errTooManyAdditionals - } - - var h header - h.id, h.bits = m.Header.pack() - - h.questions = uint16(len(m.Questions)) - h.answers = uint16(len(m.Answers)) - h.authorities = uint16(len(m.Authorities)) - h.additionals = uint16(len(m.Additionals)) - - msg := h.pack(b) - - // RFC 1035 allows (but does not require) compression for packing. RFC - // 1035 requires unpacking implementations to support compression, so - // unconditionally enabling it is fine. - // - // DNS lookups are typically done over UDP, and RFC 1035 states that UDP - // DNS messages can be a maximum of 512 bytes long. Without compression, - // many DNS response messages are over this limit, so enabling - // compression will help ensure compliance. - compression := map[string]int{} - - for i := range m.Questions { - var err error - if msg, err = m.Questions[i].pack(msg, compression); err != nil { - return nil, &nestedError{"packing Question", err} - } - } - for i := range m.Answers { - var err error - if msg, err = m.Answers[i].pack(msg, compression); err != nil { - return nil, &nestedError{"packing Answer", err} - } - } - for i := range m.Authorities { - var err error - if msg, err = m.Authorities[i].pack(msg, compression); err != nil { - return nil, &nestedError{"packing Authority", err} - } - } - for i := range m.Additionals { - var err error - if msg, err = m.Additionals[i].pack(msg, compression); err != nil { - return nil, &nestedError{"packing Additional", err} - } - } - - return msg, nil -} - -// A Builder allows incrementally packing a DNS message. -type Builder struct { - msg []byte - header header - section section - compression map[string]int -} - -// Start initializes the builder. -// -// buf is optional (nil is fine), but if provided, Start takes ownership of buf. -func (b *Builder) Start(buf []byte, h Header) { - b.StartWithoutCompression(buf, h) - b.compression = map[string]int{} -} - -// StartWithoutCompression initializes the builder with compression disabled. -// -// This avoids compression related allocations, but can result in larger message -// sizes. Be careful with this mode as it can cause messages to exceed the UDP -// size limit. -// -// buf is optional (nil is fine), but if provided, Start takes ownership of buf. -func (b *Builder) StartWithoutCompression(buf []byte, h Header) { - *b = Builder{msg: buf} - b.header.id, b.header.bits = h.pack() - if cap(b.msg) < headerLen { - b.msg = make([]byte, 0, packStartingCap) - } - b.msg = b.msg[:headerLen] - b.section = sectionHeader -} - -func (b *Builder) startCheck(s section) error { - if b.section <= sectionNotStarted { - return ErrNotStarted - } - if b.section > s { - return ErrSectionDone - } - return nil -} - -// StartQuestions prepares the builder for packing Questions. -func (b *Builder) StartQuestions() error { - if err := b.startCheck(sectionQuestions); err != nil { - return err - } - b.section = sectionQuestions - return nil -} - -// StartAnswers prepares the builder for packing Answers. -func (b *Builder) StartAnswers() error { - if err := b.startCheck(sectionAnswers); err != nil { - return err - } - b.section = sectionAnswers - return nil -} - -// StartAuthorities prepares the builder for packing Authorities. -func (b *Builder) StartAuthorities() error { - if err := b.startCheck(sectionAuthorities); err != nil { - return err - } - b.section = sectionAuthorities - return nil -} - -// StartAdditionals prepares the builder for packing Additionals. -func (b *Builder) StartAdditionals() error { - if err := b.startCheck(sectionAdditionals); err != nil { - return err - } - b.section = sectionAdditionals - return nil -} - -func (b *Builder) incrementSectionCount() error { - var count *uint16 - var err error - switch b.section { - case sectionQuestions: - count = &b.header.questions - err = errTooManyQuestions - case sectionAnswers: - count = &b.header.answers - err = errTooManyAnswers - case sectionAuthorities: - count = &b.header.authorities - err = errTooManyAuthorities - case sectionAdditionals: - count = &b.header.additionals - err = errTooManyAdditionals - } - if *count == ^uint16(0) { - return err - } - *count++ - return nil -} - -// Question adds a single Question. -func (b *Builder) Question(q Question) error { - if b.section < sectionQuestions { - return ErrNotStarted - } - if b.section > sectionQuestions { - return ErrSectionDone - } - msg, err := q.pack(b.msg, b.compression) - if err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -func (b *Builder) checkResourceSection() error { - if b.section < sectionAnswers { - return ErrNotStarted - } - if b.section > sectionAdditionals { - return ErrSectionDone - } - return nil -} - -// CNAMEResource adds a single CNAMEResource. -func (b *Builder) CNAMEResource(h ResourceHeader, r CNAMEResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"CNAMEResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// MXResource adds a single MXResource. -func (b *Builder) MXResource(h ResourceHeader, r MXResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"MXResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// NSResource adds a single NSResource. -func (b *Builder) NSResource(h ResourceHeader, r NSResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"NSResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// PTRResource adds a single PTRResource. -func (b *Builder) PTRResource(h ResourceHeader, r PTRResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"PTRResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// SOAResource adds a single SOAResource. -func (b *Builder) SOAResource(h ResourceHeader, r SOAResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"SOAResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// TXTResource adds a single TXTResource. -func (b *Builder) TXTResource(h ResourceHeader, r TXTResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"TXTResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// SRVResource adds a single SRVResource. -func (b *Builder) SRVResource(h ResourceHeader, r SRVResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"SRVResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// AResource adds a single AResource. -func (b *Builder) AResource(h ResourceHeader, r AResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"AResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// AAAAResource adds a single AAAAResource. -func (b *Builder) AAAAResource(h ResourceHeader, r AAAAResource) error { - if err := b.checkResourceSection(); err != nil { - return err - } - h.Type = r.realType() - msg, length, err := h.pack(b.msg, b.compression) - if err != nil { - return &nestedError{"ResourceHeader", err} - } - preLen := len(msg) - if msg, err = r.pack(msg, b.compression); err != nil { - return &nestedError{"AAAAResource body", err} - } - if err := h.fixLen(msg, length, preLen); err != nil { - return err - } - if err := b.incrementSectionCount(); err != nil { - return err - } - b.msg = msg - return nil -} - -// Finish ends message building and generates a binary message. -func (b *Builder) Finish() ([]byte, error) { - if b.section < sectionHeader { - return nil, ErrNotStarted - } - b.section = sectionDone - b.header.pack(b.msg[:0]) - return b.msg, nil -} - -// A ResourceHeader is the header of a DNS resource record. There are -// many types of DNS resource records, but they all share the same header. -type ResourceHeader struct { - // Name is the domain name for which this resource record pertains. - Name Name - - // Type is the type of DNS resource record. - // - // This field will be set automatically during packing. - Type Type - - // Class is the class of network to which this DNS resource record - // pertains. - Class Class - - // TTL is the length of time (measured in seconds) which this resource - // record is valid for (time to live). All Resources in a set should - // have the same TTL (RFC 2181 Section 5.2). - TTL uint32 - - // Length is the length of data in the resource record after the header. - // - // This field will be set automatically during packing. - Length uint16 -} - -// pack packs all of the fields in a ResourceHeader except for the length. The -// length bytes are returned as a slice so they can be filled in after the rest -// of the Resource has been packed. -func (h *ResourceHeader) pack(oldMsg []byte, compression map[string]int) (msg []byte, length []byte, err error) { - msg = oldMsg - if msg, err = h.Name.pack(msg, compression); err != nil { - return oldMsg, nil, &nestedError{"Name", err} - } - msg = packType(msg, h.Type) - msg = packClass(msg, h.Class) - msg = packUint32(msg, h.TTL) - lenBegin := len(msg) - msg = packUint16(msg, h.Length) - return msg, msg[lenBegin : lenBegin+uint16Len], nil -} - -func (h *ResourceHeader) unpack(msg []byte, off int) (int, error) { - newOff := off - var err error - if newOff, err = h.Name.unpack(msg, newOff); err != nil { - return off, &nestedError{"Name", err} - } - if h.Type, newOff, err = unpackType(msg, newOff); err != nil { - return off, &nestedError{"Type", err} - } - if h.Class, newOff, err = unpackClass(msg, newOff); err != nil { - return off, &nestedError{"Class", err} - } - if h.TTL, newOff, err = unpackUint32(msg, newOff); err != nil { - return off, &nestedError{"TTL", err} - } - if h.Length, newOff, err = unpackUint16(msg, newOff); err != nil { - return off, &nestedError{"Length", err} - } - return newOff, nil -} - -func (h *ResourceHeader) fixLen(msg []byte, length []byte, preLen int) error { - conLen := len(msg) - preLen - if conLen > int(^uint16(0)) { - return errResTooLong - } - - // Fill in the length now that we know how long the content is. - packUint16(length[:0], uint16(conLen)) - h.Length = uint16(conLen) - - return nil -} - -func skipResource(msg []byte, off int) (int, error) { - newOff, err := skipName(msg, off) - if err != nil { - return off, &nestedError{"Name", err} - } - if newOff, err = skipType(msg, newOff); err != nil { - return off, &nestedError{"Type", err} - } - if newOff, err = skipClass(msg, newOff); err != nil { - return off, &nestedError{"Class", err} - } - if newOff, err = skipUint32(msg, newOff); err != nil { - return off, &nestedError{"TTL", err} - } - length, newOff, err := unpackUint16(msg, newOff) - if err != nil { - return off, &nestedError{"Length", err} - } - if newOff += int(length); newOff > len(msg) { - return off, errResourceLen - } - return newOff, nil -} - -func packUint16(msg []byte, field uint16) []byte { - return append(msg, byte(field>>8), byte(field)) -} - -func unpackUint16(msg []byte, off int) (uint16, int, error) { - if off+uint16Len > len(msg) { - return 0, off, errBaseLen - } - return uint16(msg[off])<<8 | uint16(msg[off+1]), off + uint16Len, nil -} - -func skipUint16(msg []byte, off int) (int, error) { - if off+uint16Len > len(msg) { - return off, errBaseLen - } - return off + uint16Len, nil -} - -func packType(msg []byte, field Type) []byte { - return packUint16(msg, uint16(field)) -} - -func unpackType(msg []byte, off int) (Type, int, error) { - t, o, err := unpackUint16(msg, off) - return Type(t), o, err -} - -func skipType(msg []byte, off int) (int, error) { - return skipUint16(msg, off) -} - -func packClass(msg []byte, field Class) []byte { - return packUint16(msg, uint16(field)) -} - -func unpackClass(msg []byte, off int) (Class, int, error) { - c, o, err := unpackUint16(msg, off) - return Class(c), o, err -} - -func skipClass(msg []byte, off int) (int, error) { - return skipUint16(msg, off) -} - -func packUint32(msg []byte, field uint32) []byte { - return append( - msg, - byte(field>>24), - byte(field>>16), - byte(field>>8), - byte(field), - ) -} - -func unpackUint32(msg []byte, off int) (uint32, int, error) { - if off+uint32Len > len(msg) { - return 0, off, errBaseLen - } - v := uint32(msg[off])<<24 | uint32(msg[off+1])<<16 | uint32(msg[off+2])<<8 | uint32(msg[off+3]) - return v, off + uint32Len, nil -} - -func skipUint32(msg []byte, off int) (int, error) { - if off+uint32Len > len(msg) { - return off, errBaseLen - } - return off + uint32Len, nil -} - -func packText(msg []byte, field string) []byte { - for len(field) > 0 { - l := len(field) - if l > 255 { - l = 255 - } - msg = append(msg, byte(l)) - msg = append(msg, field[:l]...) - field = field[l:] - } - return msg -} - -func unpackText(msg []byte, off int) (string, int, error) { - if off >= len(msg) { - return "", off, errBaseLen - } - beginOff := off + 1 - endOff := beginOff + int(msg[off]) - if endOff > len(msg) { - return "", off, errCalcLen - } - return string(msg[beginOff:endOff]), endOff, nil -} - -func skipText(msg []byte, off int) (int, error) { - if off >= len(msg) { - return off, errBaseLen - } - endOff := off + 1 + int(msg[off]) - if endOff > len(msg) { - return off, errCalcLen - } - return endOff, nil -} - -func packBytes(msg []byte, field []byte) []byte { - return append(msg, field...) -} - -func unpackBytes(msg []byte, off int, field []byte) (int, error) { - newOff := off + len(field) - if newOff > len(msg) { - return off, errBaseLen - } - copy(field, msg[off:newOff]) - return newOff, nil -} - -func skipBytes(msg []byte, off int, field []byte) (int, error) { - newOff := off + len(field) - if newOff > len(msg) { - return off, errBaseLen - } - return newOff, nil -} - -const nameLen = 255 - -// A Name is a non-encoded domain name. It is used instead of strings to avoid -// allocations. -type Name struct { - Data [nameLen]byte - Length uint8 -} - -// NewName creates a new Name from a string. -func NewName(name string) (Name, error) { - if len([]byte(name)) > nameLen { - return Name{}, errCalcLen - } - n := Name{Length: uint8(len(name))} - copy(n.Data[:], []byte(name)) - return n, nil -} - -func (n Name) String() string { - return string(n.Data[:n.Length]) -} - -// pack packs a domain name. -// -// Domain names are a sequence of counted strings split at the dots. They end -// with a zero-length string. Compression can be used to reuse domain suffixes. -// -// The compression map will be updated with new domain suffixes. If compression -// is nil, compression will not be used. -func (n *Name) pack(msg []byte, compression map[string]int) ([]byte, error) { - oldMsg := msg - - // Add a trailing dot to canonicalize name. - if n.Length == 0 || n.Data[n.Length-1] != '.' { - return oldMsg, errNonCanonicalName - } - - // Allow root domain. - if n.Data[0] == '.' && n.Length == 1 { - return append(msg, 0), nil - } - - // Emit sequence of counted strings, chopping at dots. - for i, begin := 0, 0; i < int(n.Length); i++ { - // Check for the end of the segment. - if n.Data[i] == '.' { - // The two most significant bits have special meaning. - // It isn't allowed for segments to be long enough to - // need them. - if i-begin >= 1<<6 { - return oldMsg, errSegTooLong - } - - // Segments must have a non-zero length. - if i-begin == 0 { - return oldMsg, errZeroSegLen - } - - msg = append(msg, byte(i-begin)) - - for j := begin; j < i; j++ { - msg = append(msg, n.Data[j]) - } - - begin = i + 1 - continue - } - - // We can only compress domain suffixes starting with a new - // segment. A pointer is two bytes with the two most significant - // bits set to 1 to indicate that it is a pointer. - if (i == 0 || n.Data[i-1] == '.') && compression != nil { - if ptr, ok := compression[string(n.Data[i:])]; ok { - // Hit. Emit a pointer instead of the rest of - // the domain. - return append(msg, byte(ptr>>8|0xC0), byte(ptr)), nil - } - - // Miss. Add the suffix to the compression table if the - // offset can be stored in the available 14 bytes. - if len(msg) <= int(^uint16(0)>>2) { - compression[string(n.Data[i:])] = len(msg) - } - } - } - return append(msg, 0), nil -} - -// unpack unpacks a domain name. -func (n *Name) unpack(msg []byte, off int) (int, error) { - // currOff is the current working offset. - currOff := off - - // newOff is the offset where the next record will start. Pointers lead - // to data that belongs to other names and thus doesn't count towards to - // the usage of this name. - newOff := off - - // ptr is the number of pointers followed. - var ptr int - - // Name is a slice representation of the name data. - name := n.Data[:0] - -Loop: - for { - if currOff >= len(msg) { - return off, errBaseLen - } - c := int(msg[currOff]) - currOff++ - switch c & 0xC0 { - case 0x00: // String segment - if c == 0x00 { - // A zero length signals the end of the name. - break Loop - } - endOff := currOff + c - if endOff > len(msg) { - return off, errCalcLen - } - name = append(name, msg[currOff:endOff]...) - name = append(name, '.') - currOff = endOff - case 0xC0: // Pointer - if currOff >= len(msg) { - return off, errInvalidPtr - } - c1 := msg[currOff] - currOff++ - if ptr == 0 { - newOff = currOff - } - // Don't follow too many pointers, maybe there's a loop. - if ptr++; ptr > 10 { - return off, errTooManyPtr - } - currOff = (c^0xC0)<<8 | int(c1) - default: - // Prefixes 0x80 and 0x40 are reserved. - return off, errReserved - } - } - if len(name) == 0 { - name = append(name, '.') - } - if len(name) > len(n.Data) { - return off, errCalcLen - } - n.Length = uint8(len(name)) - if ptr == 0 { - newOff = currOff - } - return newOff, nil -} - -func skipName(msg []byte, off int) (int, error) { - // newOff is the offset where the next record will start. Pointers lead - // to data that belongs to other names and thus doesn't count towards to - // the usage of this name. - newOff := off - -Loop: - for { - if newOff >= len(msg) { - return off, errBaseLen - } - c := int(msg[newOff]) - newOff++ - switch c & 0xC0 { - case 0x00: - if c == 0x00 { - // A zero length signals the end of the name. - break Loop - } - // literal string - newOff += c - if newOff > len(msg) { - return off, errCalcLen - } - case 0xC0: - // Pointer to somewhere else in msg. - - // Pointers are two bytes. - newOff++ - - // Don't follow the pointer as the data here has ended. - break Loop - default: - // Prefixes 0x80 and 0x40 are reserved. - return off, errReserved - } - } - - return newOff, nil -} - -// A Question is a DNS query. -type Question struct { - Name Name - Type Type - Class Class -} - -func (q *Question) pack(msg []byte, compression map[string]int) ([]byte, error) { - msg, err := q.Name.pack(msg, compression) - if err != nil { - return msg, &nestedError{"Name", err} - } - msg = packType(msg, q.Type) - return packClass(msg, q.Class), nil -} - -func unpackResourceBody(msg []byte, off int, hdr ResourceHeader) (ResourceBody, int, error) { - var ( - r ResourceBody - err error - name string - ) - switch hdr.Type { - case TypeA: - var rb AResource - rb, err = unpackAResource(msg, off) - r = &rb - name = "A" - case TypeNS: - var rb NSResource - rb, err = unpackNSResource(msg, off) - r = &rb - name = "NS" - case TypeCNAME: - var rb CNAMEResource - rb, err = unpackCNAMEResource(msg, off) - r = &rb - name = "CNAME" - case TypeSOA: - var rb SOAResource - rb, err = unpackSOAResource(msg, off) - r = &rb - name = "SOA" - case TypePTR: - var rb PTRResource - rb, err = unpackPTRResource(msg, off) - r = &rb - name = "PTR" - case TypeMX: - var rb MXResource - rb, err = unpackMXResource(msg, off) - r = &rb - name = "MX" - case TypeTXT: - var rb TXTResource - rb, err = unpackTXTResource(msg, off, hdr.Length) - r = &rb - name = "TXT" - case TypeAAAA: - var rb AAAAResource - rb, err = unpackAAAAResource(msg, off) - r = &rb - name = "AAAA" - case TypeSRV: - var rb SRVResource - rb, err = unpackSRVResource(msg, off) - r = &rb - name = "SRV" - } - if err != nil { - return nil, off, &nestedError{name + " record", err} - } - if r == nil { - return nil, off, errors.New("invalid resource type: " + string(hdr.Type+'0')) - } - return r, off + int(hdr.Length), nil -} - -// A CNAMEResource is a CNAME Resource record. -type CNAMEResource struct { - CNAME Name -} - -func (r *CNAMEResource) realType() Type { - return TypeCNAME -} - -func (r *CNAMEResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - return r.CNAME.pack(msg, compression) -} - -func unpackCNAMEResource(msg []byte, off int) (CNAMEResource, error) { - var cname Name - if _, err := cname.unpack(msg, off); err != nil { - return CNAMEResource{}, err - } - return CNAMEResource{cname}, nil -} - -// An MXResource is an MX Resource record. -type MXResource struct { - Pref uint16 - MX Name -} - -func (r *MXResource) realType() Type { - return TypeMX -} - -func (r *MXResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - oldMsg := msg - msg = packUint16(msg, r.Pref) - msg, err := r.MX.pack(msg, compression) - if err != nil { - return oldMsg, &nestedError{"MXResource.MX", err} - } - return msg, nil -} - -func unpackMXResource(msg []byte, off int) (MXResource, error) { - pref, off, err := unpackUint16(msg, off) - if err != nil { - return MXResource{}, &nestedError{"Pref", err} - } - var mx Name - if _, err := mx.unpack(msg, off); err != nil { - return MXResource{}, &nestedError{"MX", err} - } - return MXResource{pref, mx}, nil -} - -// An NSResource is an NS Resource record. -type NSResource struct { - NS Name -} - -func (r *NSResource) realType() Type { - return TypeNS -} - -func (r *NSResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - return r.NS.pack(msg, compression) -} - -func unpackNSResource(msg []byte, off int) (NSResource, error) { - var ns Name - if _, err := ns.unpack(msg, off); err != nil { - return NSResource{}, err - } - return NSResource{ns}, nil -} - -// A PTRResource is a PTR Resource record. -type PTRResource struct { - PTR Name -} - -func (r *PTRResource) realType() Type { - return TypePTR -} - -func (r *PTRResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - return r.PTR.pack(msg, compression) -} - -func unpackPTRResource(msg []byte, off int) (PTRResource, error) { - var ptr Name - if _, err := ptr.unpack(msg, off); err != nil { - return PTRResource{}, err - } - return PTRResource{ptr}, nil -} - -// An SOAResource is an SOA Resource record. -type SOAResource struct { - NS Name - MBox Name - Serial uint32 - Refresh uint32 - Retry uint32 - Expire uint32 - - // MinTTL the is the default TTL of Resources records which did not - // contain a TTL value and the TTL of negative responses. (RFC 2308 - // Section 4) - MinTTL uint32 -} - -func (r *SOAResource) realType() Type { - return TypeSOA -} - -func (r *SOAResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - oldMsg := msg - msg, err := r.NS.pack(msg, compression) - if err != nil { - return oldMsg, &nestedError{"SOAResource.NS", err} - } - msg, err = r.MBox.pack(msg, compression) - if err != nil { - return oldMsg, &nestedError{"SOAResource.MBox", err} - } - msg = packUint32(msg, r.Serial) - msg = packUint32(msg, r.Refresh) - msg = packUint32(msg, r.Retry) - msg = packUint32(msg, r.Expire) - return packUint32(msg, r.MinTTL), nil -} - -func unpackSOAResource(msg []byte, off int) (SOAResource, error) { - var ns Name - off, err := ns.unpack(msg, off) - if err != nil { - return SOAResource{}, &nestedError{"NS", err} - } - var mbox Name - if off, err = mbox.unpack(msg, off); err != nil { - return SOAResource{}, &nestedError{"MBox", err} - } - serial, off, err := unpackUint32(msg, off) - if err != nil { - return SOAResource{}, &nestedError{"Serial", err} - } - refresh, off, err := unpackUint32(msg, off) - if err != nil { - return SOAResource{}, &nestedError{"Refresh", err} - } - retry, off, err := unpackUint32(msg, off) - if err != nil { - return SOAResource{}, &nestedError{"Retry", err} - } - expire, off, err := unpackUint32(msg, off) - if err != nil { - return SOAResource{}, &nestedError{"Expire", err} - } - minTTL, _, err := unpackUint32(msg, off) - if err != nil { - return SOAResource{}, &nestedError{"MinTTL", err} - } - return SOAResource{ns, mbox, serial, refresh, retry, expire, minTTL}, nil -} - -// A TXTResource is a TXT Resource record. -type TXTResource struct { - Txt string // Not a domain name. -} - -func (r *TXTResource) realType() Type { - return TypeTXT -} - -func (r *TXTResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - return packText(msg, r.Txt), nil -} - -func unpackTXTResource(msg []byte, off int, length uint16) (TXTResource, error) { - var txt string - for n := uint16(0); n < length; { - var t string - var err error - if t, off, err = unpackText(msg, off); err != nil { - return TXTResource{}, &nestedError{"text", err} - } - // Check if we got too many bytes. - if length-n < uint16(len(t))+1 { - return TXTResource{}, errCalcLen - } - n += uint16(len(t)) + 1 - txt += t - } - return TXTResource{txt}, nil -} - -// An SRVResource is an SRV Resource record. -type SRVResource struct { - Priority uint16 - Weight uint16 - Port uint16 - Target Name // Not compressed as per RFC 2782. -} - -func (r *SRVResource) realType() Type { - return TypeSRV -} - -func (r *SRVResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - oldMsg := msg - msg = packUint16(msg, r.Priority) - msg = packUint16(msg, r.Weight) - msg = packUint16(msg, r.Port) - msg, err := r.Target.pack(msg, nil) - if err != nil { - return oldMsg, &nestedError{"SRVResource.Target", err} - } - return msg, nil -} - -func unpackSRVResource(msg []byte, off int) (SRVResource, error) { - priority, off, err := unpackUint16(msg, off) - if err != nil { - return SRVResource{}, &nestedError{"Priority", err} - } - weight, off, err := unpackUint16(msg, off) - if err != nil { - return SRVResource{}, &nestedError{"Weight", err} - } - port, off, err := unpackUint16(msg, off) - if err != nil { - return SRVResource{}, &nestedError{"Port", err} - } - var target Name - if _, err := target.unpack(msg, off); err != nil { - return SRVResource{}, &nestedError{"Target", err} - } - return SRVResource{priority, weight, port, target}, nil -} - -// An AResource is an A Resource record. -type AResource struct { - A [4]byte -} - -func (r *AResource) realType() Type { - return TypeA -} - -func (r *AResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - return packBytes(msg, r.A[:]), nil -} - -func unpackAResource(msg []byte, off int) (AResource, error) { - var a [4]byte - if _, err := unpackBytes(msg, off, a[:]); err != nil { - return AResource{}, err - } - return AResource{a}, nil -} - -// An AAAAResource is an AAAA Resource record. -type AAAAResource struct { - AAAA [16]byte -} - -func (r *AAAAResource) realType() Type { - return TypeAAAA -} - -func (r *AAAAResource) pack(msg []byte, compression map[string]int) ([]byte, error) { - return packBytes(msg, r.AAAA[:]), nil -} - -func unpackAAAAResource(msg []byte, off int) (AAAAResource, error) { - var aaaa [16]byte - if _, err := unpackBytes(msg, off, aaaa[:]); err != nil { - return AAAAResource{}, err - } - return AAAAResource{aaaa}, nil -} diff --git a/vendor/golang.org/x/net/dns/dnsmessage/message_test.go b/vendor/golang.org/x/net/dns/dnsmessage/message_test.go deleted file mode 100644 index 2bb76342..00000000 --- a/vendor/golang.org/x/net/dns/dnsmessage/message_test.go +++ /dev/null @@ -1,1141 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package dnsmessage - -import ( - "bytes" - "fmt" - "reflect" - "testing" -) - -func mustNewName(name string) Name { - n, err := NewName(name) - if err != nil { - panic(err) - } - return n -} - -func (m *Message) String() string { - s := fmt.Sprintf("Message: %#v\n", &m.Header) - if len(m.Questions) > 0 { - s += "-- Questions\n" - for _, q := range m.Questions { - s += fmt.Sprintf("%#v\n", q) - } - } - if len(m.Answers) > 0 { - s += "-- Answers\n" - for _, a := range m.Answers { - s += fmt.Sprintf("%#v\n", a) - } - } - if len(m.Authorities) > 0 { - s += "-- Authorities\n" - for _, ns := range m.Authorities { - s += fmt.Sprintf("%#v\n", ns) - } - } - if len(m.Additionals) > 0 { - s += "-- Additionals\n" - for _, e := range m.Additionals { - s += fmt.Sprintf("%#v\n", e) - } - } - return s -} - -func TestNameString(t *testing.T) { - want := "foo" - name := mustNewName(want) - if got := fmt.Sprint(name); got != want { - t.Errorf("got fmt.Sprint(%#v) = %s, want = %s", name, got, want) - } -} - -func TestQuestionPackUnpack(t *testing.T) { - want := Question{ - Name: mustNewName("."), - Type: TypeA, - Class: ClassINET, - } - buf, err := want.pack(make([]byte, 1, 50), map[string]int{}) - if err != nil { - t.Fatal("Packing failed:", err) - } - var p Parser - p.msg = buf - p.header.questions = 1 - p.section = sectionQuestions - p.off = 1 - got, err := p.Question() - if err != nil { - t.Fatalf("Unpacking failed: %v\n%s", err, string(buf[1:])) - } - if p.off != len(buf) { - t.Errorf("Unpacked different amount than packed: got n = %d, want = %d", p.off, len(buf)) - } - if !reflect.DeepEqual(got, want) { - t.Errorf("Got = %+v, want = %+v", got, want) - } -} - -func TestName(t *testing.T) { - tests := []string{ - "", - ".", - "google..com", - "google.com", - "google..com.", - "google.com.", - ".google.com.", - "www..google.com.", - "www.google.com.", - } - - for _, test := range tests { - n, err := NewName(test) - if err != nil { - t.Errorf("Creating name for %q: %v", test, err) - continue - } - if ns := n.String(); ns != test { - t.Errorf("Got %#v.String() = %q, want = %q", n, ns, test) - continue - } - } -} - -func TestNamePackUnpack(t *testing.T) { - tests := []struct { - in string - want string - err error - }{ - {"", "", errNonCanonicalName}, - {".", ".", nil}, - {"google..com", "", errNonCanonicalName}, - {"google.com", "", errNonCanonicalName}, - {"google..com.", "", errZeroSegLen}, - {"google.com.", "google.com.", nil}, - {".google.com.", "", errZeroSegLen}, - {"www..google.com.", "", errZeroSegLen}, - {"www.google.com.", "www.google.com.", nil}, - } - - for _, test := range tests { - in := mustNewName(test.in) - want := mustNewName(test.want) - buf, err := in.pack(make([]byte, 0, 30), map[string]int{}) - if err != test.err { - t.Errorf("Packing of %q: got err = %v, want err = %v", test.in, err, test.err) - continue - } - if test.err != nil { - continue - } - var got Name - n, err := got.unpack(buf, 0) - if err != nil { - t.Errorf("Unpacking for %q failed: %v", test.in, err) - continue - } - if n != len(buf) { - t.Errorf( - "Unpacked different amount than packed for %q: got n = %d, want = %d", - test.in, - n, - len(buf), - ) - } - if got != want { - t.Errorf("Unpacking packing of %q: got = %#v, want = %#v", test.in, got, want) - } - } -} - -func checkErrorPrefix(err error, prefix string) bool { - e, ok := err.(*nestedError) - return ok && e.s == prefix -} - -func TestHeaderUnpackError(t *testing.T) { - wants := []string{ - "id", - "bits", - "questions", - "answers", - "authorities", - "additionals", - } - var buf []byte - var h header - for _, want := range wants { - n, err := h.unpack(buf, 0) - if n != 0 || !checkErrorPrefix(err, want) { - t.Errorf("got h.unpack([%d]byte, 0) = %d, %v, want = 0, %s", len(buf), n, err, want) - } - buf = append(buf, 0, 0) - } -} - -func TestParserStart(t *testing.T) { - const want = "unpacking header" - var p Parser - for i := 0; i <= 1; i++ { - _, err := p.Start([]byte{}) - if !checkErrorPrefix(err, want) { - t.Errorf("got p.Start(nil) = _, %v, want = _, %s", err, want) - } - } -} - -func TestResourceNotStarted(t *testing.T) { - tests := []struct { - name string - fn func(*Parser) error - }{ - {"CNAMEResource", func(p *Parser) error { _, err := p.CNAMEResource(); return err }}, - {"MXResource", func(p *Parser) error { _, err := p.MXResource(); return err }}, - {"NSResource", func(p *Parser) error { _, err := p.NSResource(); return err }}, - {"PTRResource", func(p *Parser) error { _, err := p.PTRResource(); return err }}, - {"SOAResource", func(p *Parser) error { _, err := p.SOAResource(); return err }}, - {"TXTResource", func(p *Parser) error { _, err := p.TXTResource(); return err }}, - {"SRVResource", func(p *Parser) error { _, err := p.SRVResource(); return err }}, - {"AResource", func(p *Parser) error { _, err := p.AResource(); return err }}, - {"AAAAResource", func(p *Parser) error { _, err := p.AAAAResource(); return err }}, - } - - for _, test := range tests { - if err := test.fn(&Parser{}); err != ErrNotStarted { - t.Errorf("got _, %v = p.%s(), want = _, %v", err, test.name, ErrNotStarted) - } - } -} - -func TestDNSPackUnpack(t *testing.T) { - wants := []Message{ - { - Questions: []Question{ - { - Name: mustNewName("."), - Type: TypeAAAA, - Class: ClassINET, - }, - }, - Answers: []Resource{}, - Authorities: []Resource{}, - Additionals: []Resource{}, - }, - largeTestMsg(), - } - for i, want := range wants { - b, err := want.Pack() - if err != nil { - t.Fatalf("%d: packing failed: %v", i, err) - } - var got Message - err = got.Unpack(b) - if err != nil { - t.Fatalf("%d: unpacking failed: %v", i, err) - } - if !reflect.DeepEqual(got, want) { - t.Errorf("%d: got = %+v, want = %+v", i, &got, &want) - } - } -} - -func TestSkipAll(t *testing.T) { - msg := largeTestMsg() - buf, err := msg.Pack() - if err != nil { - t.Fatal("Packing large test message:", err) - } - var p Parser - if _, err := p.Start(buf); err != nil { - t.Fatal(err) - } - - tests := []struct { - name string - f func() error - }{ - {"SkipAllQuestions", p.SkipAllQuestions}, - {"SkipAllAnswers", p.SkipAllAnswers}, - {"SkipAllAuthorities", p.SkipAllAuthorities}, - {"SkipAllAdditionals", p.SkipAllAdditionals}, - } - for _, test := range tests { - for i := 1; i <= 3; i++ { - if err := test.f(); err != nil { - t.Errorf("Call #%d to %s(): %v", i, test.name, err) - } - } - } -} - -func TestSkipEach(t *testing.T) { - msg := smallTestMsg() - - buf, err := msg.Pack() - if err != nil { - t.Fatal("Packing test message:", err) - } - var p Parser - if _, err := p.Start(buf); err != nil { - t.Fatal(err) - } - - tests := []struct { - name string - f func() error - }{ - {"SkipQuestion", p.SkipQuestion}, - {"SkipAnswer", p.SkipAnswer}, - {"SkipAuthority", p.SkipAuthority}, - {"SkipAdditional", p.SkipAdditional}, - } - for _, test := range tests { - if err := test.f(); err != nil { - t.Errorf("First call: got %s() = %v, want = %v", test.name, err, nil) - } - if err := test.f(); err != ErrSectionDone { - t.Errorf("Second call: got %s() = %v, want = %v", test.name, err, ErrSectionDone) - } - } -} - -func TestSkipAfterRead(t *testing.T) { - msg := smallTestMsg() - - buf, err := msg.Pack() - if err != nil { - t.Fatal("Packing test message:", err) - } - var p Parser - if _, err := p.Start(buf); err != nil { - t.Fatal(err) - } - - tests := []struct { - name string - skip func() error - read func() error - }{ - {"Question", p.SkipQuestion, func() error { _, err := p.Question(); return err }}, - {"Answer", p.SkipAnswer, func() error { _, err := p.Answer(); return err }}, - {"Authority", p.SkipAuthority, func() error { _, err := p.Authority(); return err }}, - {"Additional", p.SkipAdditional, func() error { _, err := p.Additional(); return err }}, - } - for _, test := range tests { - if err := test.read(); err != nil { - t.Errorf("Got %s() = _, %v, want = _, %v", test.name, err, nil) - } - if err := test.skip(); err != ErrSectionDone { - t.Errorf("Got Skip%s() = %v, want = %v", test.name, err, ErrSectionDone) - } - } -} - -func TestSkipNotStarted(t *testing.T) { - var p Parser - - tests := []struct { - name string - f func() error - }{ - {"SkipAllQuestions", p.SkipAllQuestions}, - {"SkipAllAnswers", p.SkipAllAnswers}, - {"SkipAllAuthorities", p.SkipAllAuthorities}, - {"SkipAllAdditionals", p.SkipAllAdditionals}, - } - for _, test := range tests { - if err := test.f(); err != ErrNotStarted { - t.Errorf("Got %s() = %v, want = %v", test.name, err, ErrNotStarted) - } - } -} - -func TestTooManyRecords(t *testing.T) { - const recs = int(^uint16(0)) + 1 - tests := []struct { - name string - msg Message - want error - }{ - { - "Questions", - Message{ - Questions: make([]Question, recs), - }, - errTooManyQuestions, - }, - { - "Answers", - Message{ - Answers: make([]Resource, recs), - }, - errTooManyAnswers, - }, - { - "Authorities", - Message{ - Authorities: make([]Resource, recs), - }, - errTooManyAuthorities, - }, - { - "Additionals", - Message{ - Additionals: make([]Resource, recs), - }, - errTooManyAdditionals, - }, - } - - for _, test := range tests { - if _, got := test.msg.Pack(); got != test.want { - t.Errorf("Packing %d %s: got = %v, want = %v", recs, test.name, got, test.want) - } - } -} - -func TestVeryLongTxt(t *testing.T) { - want := Resource{ - ResourceHeader{ - Name: mustNewName("foo.bar.example.com."), - Type: TypeTXT, - Class: ClassINET, - }, - &TXTResource{loremIpsum}, - } - buf, err := want.pack(make([]byte, 0, 8000), map[string]int{}) - if err != nil { - t.Fatal("Packing failed:", err) - } - var got Resource - off, err := got.Header.unpack(buf, 0) - if err != nil { - t.Fatal("Unpacking ResourceHeader failed:", err) - } - body, n, err := unpackResourceBody(buf, off, got.Header) - if err != nil { - t.Fatal("Unpacking failed:", err) - } - got.Body = body - if n != len(buf) { - t.Errorf("Unpacked different amount than packed: got n = %d, want = %d", n, len(buf)) - } - if !reflect.DeepEqual(got, want) { - t.Errorf("Got = %#v, want = %#v", got, want) - } -} - -func TestStartError(t *testing.T) { - tests := []struct { - name string - fn func(*Builder) error - }{ - {"Questions", func(b *Builder) error { return b.StartQuestions() }}, - {"Answers", func(b *Builder) error { return b.StartAnswers() }}, - {"Authorities", func(b *Builder) error { return b.StartAuthorities() }}, - {"Additionals", func(b *Builder) error { return b.StartAdditionals() }}, - } - - envs := []struct { - name string - fn func() *Builder - want error - }{ - {"sectionNotStarted", func() *Builder { return &Builder{section: sectionNotStarted} }, ErrNotStarted}, - {"sectionDone", func() *Builder { return &Builder{section: sectionDone} }, ErrSectionDone}, - } - - for _, env := range envs { - for _, test := range tests { - if got := test.fn(env.fn()); got != env.want { - t.Errorf("got Builder{%s}.Start%s = %v, want = %v", env.name, test.name, got, env.want) - } - } - } -} - -func TestBuilderResourceError(t *testing.T) { - tests := []struct { - name string - fn func(*Builder) error - }{ - {"CNAMEResource", func(b *Builder) error { return b.CNAMEResource(ResourceHeader{}, CNAMEResource{}) }}, - {"MXResource", func(b *Builder) error { return b.MXResource(ResourceHeader{}, MXResource{}) }}, - {"NSResource", func(b *Builder) error { return b.NSResource(ResourceHeader{}, NSResource{}) }}, - {"PTRResource", func(b *Builder) error { return b.PTRResource(ResourceHeader{}, PTRResource{}) }}, - {"SOAResource", func(b *Builder) error { return b.SOAResource(ResourceHeader{}, SOAResource{}) }}, - {"TXTResource", func(b *Builder) error { return b.TXTResource(ResourceHeader{}, TXTResource{}) }}, - {"SRVResource", func(b *Builder) error { return b.SRVResource(ResourceHeader{}, SRVResource{}) }}, - {"AResource", func(b *Builder) error { return b.AResource(ResourceHeader{}, AResource{}) }}, - {"AAAAResource", func(b *Builder) error { return b.AAAAResource(ResourceHeader{}, AAAAResource{}) }}, - } - - envs := []struct { - name string - fn func() *Builder - want error - }{ - {"sectionNotStarted", func() *Builder { return &Builder{section: sectionNotStarted} }, ErrNotStarted}, - {"sectionHeader", func() *Builder { return &Builder{section: sectionHeader} }, ErrNotStarted}, - {"sectionQuestions", func() *Builder { return &Builder{section: sectionQuestions} }, ErrNotStarted}, - {"sectionDone", func() *Builder { return &Builder{section: sectionDone} }, ErrSectionDone}, - } - - for _, env := range envs { - for _, test := range tests { - if got := test.fn(env.fn()); got != env.want { - t.Errorf("got Builder{%s}.%s = %v, want = %v", env.name, test.name, got, env.want) - } - } - } -} - -func TestFinishError(t *testing.T) { - var b Builder - want := ErrNotStarted - if _, got := b.Finish(); got != want { - t.Errorf("got Builder{}.Finish() = %v, want = %v", got, want) - } -} - -func TestBuilder(t *testing.T) { - msg := largeTestMsg() - want, err := msg.Pack() - if err != nil { - t.Fatal("Packing without builder:", err) - } - - var b Builder - b.Start(nil, msg.Header) - - if err := b.StartQuestions(); err != nil { - t.Fatal("b.StartQuestions():", err) - } - for _, q := range msg.Questions { - if err := b.Question(q); err != nil { - t.Fatalf("b.Question(%#v): %v", q, err) - } - } - - if err := b.StartAnswers(); err != nil { - t.Fatal("b.StartAnswers():", err) - } - for _, a := range msg.Answers { - switch a.Header.Type { - case TypeA: - if err := b.AResource(a.Header, *a.Body.(*AResource)); err != nil { - t.Fatalf("b.AResource(%#v): %v", a, err) - } - case TypeNS: - if err := b.NSResource(a.Header, *a.Body.(*NSResource)); err != nil { - t.Fatalf("b.NSResource(%#v): %v", a, err) - } - case TypeCNAME: - if err := b.CNAMEResource(a.Header, *a.Body.(*CNAMEResource)); err != nil { - t.Fatalf("b.CNAMEResource(%#v): %v", a, err) - } - case TypeSOA: - if err := b.SOAResource(a.Header, *a.Body.(*SOAResource)); err != nil { - t.Fatalf("b.SOAResource(%#v): %v", a, err) - } - case TypePTR: - if err := b.PTRResource(a.Header, *a.Body.(*PTRResource)); err != nil { - t.Fatalf("b.PTRResource(%#v): %v", a, err) - } - case TypeMX: - if err := b.MXResource(a.Header, *a.Body.(*MXResource)); err != nil { - t.Fatalf("b.MXResource(%#v): %v", a, err) - } - case TypeTXT: - if err := b.TXTResource(a.Header, *a.Body.(*TXTResource)); err != nil { - t.Fatalf("b.TXTResource(%#v): %v", a, err) - } - case TypeAAAA: - if err := b.AAAAResource(a.Header, *a.Body.(*AAAAResource)); err != nil { - t.Fatalf("b.AAAAResource(%#v): %v", a, err) - } - case TypeSRV: - if err := b.SRVResource(a.Header, *a.Body.(*SRVResource)); err != nil { - t.Fatalf("b.SRVResource(%#v): %v", a, err) - } - } - } - - if err := b.StartAuthorities(); err != nil { - t.Fatal("b.StartAuthorities():", err) - } - for _, a := range msg.Authorities { - if err := b.NSResource(a.Header, *a.Body.(*NSResource)); err != nil { - t.Fatalf("b.NSResource(%#v): %v", a, err) - } - } - - if err := b.StartAdditionals(); err != nil { - t.Fatal("b.StartAdditionals():", err) - } - for _, a := range msg.Additionals { - if err := b.TXTResource(a.Header, *a.Body.(*TXTResource)); err != nil { - t.Fatalf("b.TXTResource(%#v): %v", a, err) - } - } - - got, err := b.Finish() - if err != nil { - t.Fatal("b.Finish():", err) - } - if !bytes.Equal(got, want) { - t.Fatalf("Got from Builder: %#v\nwant = %#v", got, want) - } -} - -func TestResourcePack(t *testing.T) { - for _, tt := range []struct { - m Message - err error - }{ - { - Message{ - Questions: []Question{ - { - Name: mustNewName("."), - Type: TypeAAAA, - Class: ClassINET, - }, - }, - Answers: []Resource{{ResourceHeader{}, nil}}, - }, - &nestedError{"packing Answer", errNilResouceBody}, - }, - { - Message{ - Questions: []Question{ - { - Name: mustNewName("."), - Type: TypeAAAA, - Class: ClassINET, - }, - }, - Authorities: []Resource{{ResourceHeader{}, (*NSResource)(nil)}}, - }, - &nestedError{"packing Authority", - &nestedError{"ResourceHeader", - &nestedError{"Name", errNonCanonicalName}, - }, - }, - }, - { - Message{ - Questions: []Question{ - { - Name: mustNewName("."), - Type: TypeA, - Class: ClassINET, - }, - }, - Additionals: []Resource{{ResourceHeader{}, nil}}, - }, - &nestedError{"packing Additional", errNilResouceBody}, - }, - } { - _, err := tt.m.Pack() - if !reflect.DeepEqual(err, tt.err) { - t.Errorf("got %v for %v; want %v", err, tt.m, tt.err) - } - } -} - -func BenchmarkParsing(b *testing.B) { - b.ReportAllocs() - - name := mustNewName("foo.bar.example.com.") - msg := Message{ - Header: Header{Response: true, Authoritative: true}, - Questions: []Question{ - { - Name: name, - Type: TypeA, - Class: ClassINET, - }, - }, - Answers: []Resource{ - { - ResourceHeader{ - Name: name, - Class: ClassINET, - }, - &AResource{[4]byte{}}, - }, - { - ResourceHeader{ - Name: name, - Class: ClassINET, - }, - &AAAAResource{[16]byte{}}, - }, - { - ResourceHeader{ - Name: name, - Class: ClassINET, - }, - &CNAMEResource{name}, - }, - { - ResourceHeader{ - Name: name, - Class: ClassINET, - }, - &NSResource{name}, - }, - }, - } - - buf, err := msg.Pack() - if err != nil { - b.Fatal("msg.Pack():", err) - } - - for i := 0; i < b.N; i++ { - var p Parser - if _, err := p.Start(buf); err != nil { - b.Fatal("p.Start(buf):", err) - } - - for { - _, err := p.Question() - if err == ErrSectionDone { - break - } - if err != nil { - b.Fatal("p.Question():", err) - } - } - - for { - h, err := p.AnswerHeader() - if err == ErrSectionDone { - break - } - if err != nil { - panic(err) - } - - switch h.Type { - case TypeA: - if _, err := p.AResource(); err != nil { - b.Fatal("p.AResource():", err) - } - case TypeAAAA: - if _, err := p.AAAAResource(); err != nil { - b.Fatal("p.AAAAResource():", err) - } - case TypeCNAME: - if _, err := p.CNAMEResource(); err != nil { - b.Fatal("p.CNAMEResource():", err) - } - case TypeNS: - if _, err := p.NSResource(); err != nil { - b.Fatal("p.NSResource():", err) - } - default: - b.Fatalf("unknown type: %T", h) - } - } - } -} - -func BenchmarkBuilding(b *testing.B) { - b.ReportAllocs() - - name := mustNewName("foo.bar.example.com.") - buf := make([]byte, 0, packStartingCap) - - for i := 0; i < b.N; i++ { - var bld Builder - bld.StartWithoutCompression(buf, Header{Response: true, Authoritative: true}) - - if err := bld.StartQuestions(); err != nil { - b.Fatal("bld.StartQuestions():", err) - } - q := Question{ - Name: name, - Type: TypeA, - Class: ClassINET, - } - if err := bld.Question(q); err != nil { - b.Fatalf("bld.Question(%+v): %v", q, err) - } - - hdr := ResourceHeader{ - Name: name, - Class: ClassINET, - } - if err := bld.StartAnswers(); err != nil { - b.Fatal("bld.StartQuestions():", err) - } - - ar := AResource{[4]byte{}} - if err := bld.AResource(hdr, ar); err != nil { - b.Fatalf("bld.AResource(%+v, %+v): %v", hdr, ar, err) - } - - aaar := AAAAResource{[16]byte{}} - if err := bld.AAAAResource(hdr, aaar); err != nil { - b.Fatalf("bld.AAAAResource(%+v, %+v): %v", hdr, aaar, err) - } - - cnr := CNAMEResource{name} - if err := bld.CNAMEResource(hdr, cnr); err != nil { - b.Fatalf("bld.CNAMEResource(%+v, %+v): %v", hdr, cnr, err) - } - - nsr := NSResource{name} - if err := bld.NSResource(hdr, nsr); err != nil { - b.Fatalf("bld.NSResource(%+v, %+v): %v", hdr, nsr, err) - } - - if _, err := bld.Finish(); err != nil { - b.Fatal("bld.Finish():", err) - } - } -} - -func smallTestMsg() Message { - name := mustNewName("example.com.") - return Message{ - Header: Header{Response: true, Authoritative: true}, - Questions: []Question{ - { - Name: name, - Type: TypeA, - Class: ClassINET, - }, - }, - Answers: []Resource{ - { - ResourceHeader{ - Name: name, - Type: TypeA, - Class: ClassINET, - }, - &AResource{[4]byte{127, 0, 0, 1}}, - }, - }, - Authorities: []Resource{ - { - ResourceHeader{ - Name: name, - Type: TypeA, - Class: ClassINET, - }, - &AResource{[4]byte{127, 0, 0, 1}}, - }, - }, - Additionals: []Resource{ - { - ResourceHeader{ - Name: name, - Type: TypeA, - Class: ClassINET, - }, - &AResource{[4]byte{127, 0, 0, 1}}, - }, - }, - } -} - -func BenchmarkPack(b *testing.B) { - msg := largeTestMsg() - - b.ReportAllocs() - - for i := 0; i < b.N; i++ { - if _, err := msg.Pack(); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkAppendPack(b *testing.B) { - msg := largeTestMsg() - buf := make([]byte, 0, packStartingCap) - - b.ReportAllocs() - - for i := 0; i < b.N; i++ { - if _, err := msg.AppendPack(buf[:0]); err != nil { - b.Fatal(err) - } - } -} - -func largeTestMsg() Message { - name := mustNewName("foo.bar.example.com.") - return Message{ - Header: Header{Response: true, Authoritative: true}, - Questions: []Question{ - { - Name: name, - Type: TypeA, - Class: ClassINET, - }, - }, - Answers: []Resource{ - { - ResourceHeader{ - Name: name, - Type: TypeA, - Class: ClassINET, - }, - &AResource{[4]byte{127, 0, 0, 1}}, - }, - { - ResourceHeader{ - Name: name, - Type: TypeA, - Class: ClassINET, - }, - &AResource{[4]byte{127, 0, 0, 2}}, - }, - { - ResourceHeader{ - Name: name, - Type: TypeAAAA, - Class: ClassINET, - }, - &AAAAResource{[16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}}, - }, - { - ResourceHeader{ - Name: name, - Type: TypeCNAME, - Class: ClassINET, - }, - &CNAMEResource{mustNewName("alias.example.com.")}, - }, - { - ResourceHeader{ - Name: name, - Type: TypeSOA, - Class: ClassINET, - }, - &SOAResource{ - NS: mustNewName("ns1.example.com."), - MBox: mustNewName("mb.example.com."), - Serial: 1, - Refresh: 2, - Retry: 3, - Expire: 4, - MinTTL: 5, - }, - }, - { - ResourceHeader{ - Name: name, - Type: TypePTR, - Class: ClassINET, - }, - &PTRResource{mustNewName("ptr.example.com.")}, - }, - { - ResourceHeader{ - Name: name, - Type: TypeMX, - Class: ClassINET, - }, - &MXResource{ - 7, - mustNewName("mx.example.com."), - }, - }, - { - ResourceHeader{ - Name: name, - Type: TypeSRV, - Class: ClassINET, - }, - &SRVResource{ - 8, - 9, - 11, - mustNewName("srv.example.com."), - }, - }, - }, - Authorities: []Resource{ - { - ResourceHeader{ - Name: name, - Type: TypeNS, - Class: ClassINET, - }, - &NSResource{mustNewName("ns1.example.com.")}, - }, - { - ResourceHeader{ - Name: name, - Type: TypeNS, - Class: ClassINET, - }, - &NSResource{mustNewName("ns2.example.com.")}, - }, - }, - Additionals: []Resource{ - { - ResourceHeader{ - Name: name, - Type: TypeTXT, - Class: ClassINET, - }, - &TXTResource{"So Long, and Thanks for All the Fish"}, - }, - { - ResourceHeader{ - Name: name, - Type: TypeTXT, - Class: ClassINET, - }, - &TXTResource{"Hamster Huey and the Gooey Kablooie"}, - }, - }, - } -} - -const loremIpsum = ` -Lorem ipsum dolor sit amet, nec enim antiopam id, an ullum choro -nonumes qui, pro eu debet honestatis mediocritatem. No alia enim eos, -magna signiferumque ex vis. Mei no aperiri dissentias, cu vel quas -regione. Malorum quaeque vim ut, eum cu semper aliquid invidunt, ei -nam ipsum assentior. - -Nostrum appellantur usu no, vis ex probatus adipiscing. Cu usu illum -facilis eleifend. Iusto conceptam complectitur vim id. Tale omnesque -no usu, ei oblique sadipscing vim. At nullam voluptua usu, mei laudem -reformidans et. Qui ei eros porro reformidans, ius suas veritus -torquatos ex. Mea te facer alterum consequat. - -Soleat torquatos democritum sed et, no mea congue appareat, facer -aliquam nec in. Has te ipsum tritani. At justo dicta option nec, movet -phaedrum ad nam. Ea detracto verterem liberavisse has, delectus -suscipiantur in mei. Ex nam meliore complectitur. Ut nam omnis -honestatis quaerendum, ea mea nihil affert detracto, ad vix rebum -mollis. - -Ut epicurei praesent neglegentur pri, prima fuisset intellegebat ad -vim. An habemus comprehensam usu, at enim dignissim pro. Eam reque -vivendum adipisci ea. Vel ne odio choro minimum. Sea admodum -dissentiet ex. Mundi tamquam evertitur ius cu. Homero postea iisque ut -pro, vel ne saepe senserit consetetur. - -Nulla utamur facilisis ius ea, in viderer diceret pertinax eum. Mei no -enim quodsi facilisi, ex sed aeterno appareat mediocritatem, eum -sententiae deterruisset ut. At suas timeam euismod cum, offendit -appareat interpretaris ne vix. Vel ea civibus albucius, ex vim quidam -accusata intellegebat, noluisse instructior sea id. Nec te nonumes -habemus appellantur, quis dignissim vituperata eu nam. - -At vix apeirian patrioque vituperatoribus, an usu agam assum. Debet -iisque an mea. Per eu dicant ponderum accommodare. Pri alienum -placerat senserit an, ne eum ferri abhorreant vituperatoribus. Ut mea -eligendi disputationi. Ius no tation everti impedit, ei magna quidam -mediocritatem pri. - -Legendos perpetua iracundia ne usu, no ius ullum epicurei intellegam, -ad modus epicuri lucilius eam. In unum quaerendum usu. Ne diam paulo -has, ea veri virtute sed. Alia honestatis conclusionemque mea eu, ut -iudico albucius his. - -Usu essent probatus eu, sed omnis dolor delicatissimi ex. No qui augue -dissentias dissentiet. Laudem recteque no usu, vel an velit noluisse, -an sed utinam eirmod appetere. Ne mea fuisset inimicus ocurreret. At -vis dicant abhorreant, utinam forensibus nec ne, mei te docendi -consequat. Brute inermis persecuti cum id. Ut ipsum munere propriae -usu, dicit graeco disputando id has. - -Eros dolore quaerendum nam ei. Timeam ornatus inciderint pro id. Nec -torquatos sadipscing ei, ancillae molestie per in. Malis principes duo -ea, usu liber postulant ei. - -Graece timeam voluptatibus eu eam. Alia probatus quo no, ea scripta -feugiat duo. Congue option meliore ex qui, noster invenire appellantur -ea vel. Eu exerci legendos vel. Consetetur repudiandae vim ut. Vix an -probo minimum, et nam illud falli tempor. - -Cum dico signiferumque eu. Sed ut regione maiorum, id veritus insolens -tacimates vix. Eu mel sint tamquam lucilius, duo no oporteat -tacimates. Atqui augue concludaturque vix ei, id mel utroque menandri. - -Ad oratio blandit aliquando pro. Vis et dolorum rationibus -philosophia, ad cum nulla molestie. Hinc fuisset adversarium eum et, -ne qui nisl verear saperet, vel te quaestio forensibus. Per odio -option delenit an. Alii placerat has no, in pri nihil platonem -cotidieque. Est ut elit copiosae scaevola, debet tollit maluisset sea -an. - -Te sea hinc debet pericula, liber ridens fabulas cu sed, quem mutat -accusam mea et. Elitr labitur albucius et pri, an labore feugait mel. -Velit zril melius usu ea. Ad stet putent interpretaris qui. Mel no -error volumus scripserit. In pro paulo iudico, quo ei dolorem -verterem, affert fabellas dissentiet ea vix. - -Vis quot deserunt te. Error aliquid detraxit eu usu, vis alia eruditi -salutatus cu. Est nostrud bonorum an, ei usu alii salutatus. Vel at -nisl primis, eum ex aperiri noluisse reformidans. Ad veri velit -utroque vis, ex equidem detraxit temporibus has. - -Inermis appareat usu ne. Eros placerat periculis mea ad, in dictas -pericula pro. Errem postulant at usu, ea nec amet ornatus mentitum. Ad -mazim graeco eum, vel ex percipit volutpat iudicabit, sit ne delicata -interesset. Mel sapientem prodesset abhorreant et, oblique suscipit -eam id. - -An maluisset disputando mea, vidit mnesarchum pri et. Malis insolens -inciderint no sea. Ea persius maluisset vix, ne vim appellantur -instructior, consul quidam definiebas pri id. Cum integre feugiat -pericula in, ex sed persius similique, mel ne natum dicit percipitur. - -Primis discere ne pri, errem putent definitionem at vis. Ei mel dolore -neglegentur, mei tincidunt percipitur ei. Pro ad simul integre -rationibus. Eu vel alii honestatis definitiones, mea no nonumy -reprehendunt. - -Dicta appareat legendos est cu. Eu vel congue dicunt omittam, no vix -adhuc minimum constituam, quot noluisse id mel. Eu quot sale mutat -duo, ex nisl munere invenire duo. Ne nec ullum utamur. Pro alterum -debitis nostrum no, ut vel aliquid vivendo. - -Aliquip fierent praesent quo ne, id sit audiam recusabo delicatissimi. -Usu postulant incorrupte cu. At pro dicit tibique intellegam, cibo -dolore impedit id eam, et aeque feugait assentior has. Quando sensibus -nec ex. Possit sensibus pri ad, unum mutat periculis cu vix. - -Mundi tibique vix te, duo simul partiendo qualisque id, est at vidit -sonet tempor. No per solet aeterno deseruisse. Petentium salutandi -definiebas pri cu. Munere vivendum est in. Ei justo congue eligendi -vis, modus offendit omittantur te mel. - -Integre voluptaria in qui, sit habemus tractatos constituam no. Utinam -melius conceptam est ne, quo in minimum apeirian delicata, ut ius -porro recusabo. Dicant expetenda vix no, ludus scripserit sed ex, eu -his modo nostro. Ut etiam sonet his, quodsi inciderint philosophia te -per. Nullam lobortis eu cum, vix an sonet efficiendi repudiandae. Vis -ad idque fabellas intellegebat. - -Eum commodo senserit conclusionemque ex. Sed forensibus sadipscing ut, -mei in facer delicata periculis, sea ne hinc putent cetero. Nec ne -alia corpora invenire, alia prima soleat te cum. Eleifend posidonium -nam at. - -Dolorum indoctum cu quo, ex dolor legendos recteque eam, cu pri zril -discere. Nec civibus officiis dissentiunt ex, est te liber ludus -elaboraret. Cum ea fabellas invenire. Ex vim nostrud eripuit -comprehensam, nam te inermis delectus, saepe inermis senserit. -` diff --git a/vendor/golang.org/x/net/html/atom/atom_test.go b/vendor/golang.org/x/net/html/atom/atom_test.go deleted file mode 100644 index 6e33704d..00000000 --- a/vendor/golang.org/x/net/html/atom/atom_test.go +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package atom - -import ( - "sort" - "testing" -) - -func TestKnown(t *testing.T) { - for _, s := range testAtomList { - if atom := Lookup([]byte(s)); atom.String() != s { - t.Errorf("Lookup(%q) = %#x (%q)", s, uint32(atom), atom.String()) - } - } -} - -func TestHits(t *testing.T) { - for _, a := range table { - if a == 0 { - continue - } - got := Lookup([]byte(a.String())) - if got != a { - t.Errorf("Lookup(%q) = %#x, want %#x", a.String(), uint32(got), uint32(a)) - } - } -} - -func TestMisses(t *testing.T) { - testCases := []string{ - "", - "\x00", - "\xff", - "A", - "DIV", - "Div", - "dIV", - "aa", - "a\x00", - "ab", - "abb", - "abbr0", - "abbr ", - " abbr", - " a", - "acceptcharset", - "acceptCharset", - "accept_charset", - "h0", - "h1h2", - "h7", - "onClick", - "λ", - // The following string has the same hash (0xa1d7fab7) as "onmouseover". - "\x00\x00\x00\x00\x00\x50\x18\xae\x38\xd0\xb7", - } - for _, tc := range testCases { - got := Lookup([]byte(tc)) - if got != 0 { - t.Errorf("Lookup(%q): got %d, want 0", tc, got) - } - } -} - -func TestForeignObject(t *testing.T) { - const ( - afo = Foreignobject - afO = ForeignObject - sfo = "foreignobject" - sfO = "foreignObject" - ) - if got := Lookup([]byte(sfo)); got != afo { - t.Errorf("Lookup(%q): got %#v, want %#v", sfo, got, afo) - } - if got := Lookup([]byte(sfO)); got != afO { - t.Errorf("Lookup(%q): got %#v, want %#v", sfO, got, afO) - } - if got := afo.String(); got != sfo { - t.Errorf("Atom(%#v).String(): got %q, want %q", afo, got, sfo) - } - if got := afO.String(); got != sfO { - t.Errorf("Atom(%#v).String(): got %q, want %q", afO, got, sfO) - } -} - -func BenchmarkLookup(b *testing.B) { - sortedTable := make([]string, 0, len(table)) - for _, a := range table { - if a != 0 { - sortedTable = append(sortedTable, a.String()) - } - } - sort.Strings(sortedTable) - - x := make([][]byte, 1000) - for i := range x { - x[i] = []byte(sortedTable[i%len(sortedTable)]) - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - for _, s := range x { - Lookup(s) - } - } -} diff --git a/vendor/golang.org/x/net/html/atom/table_test.go b/vendor/golang.org/x/net/html/atom/table_test.go deleted file mode 100644 index 46d9d701..00000000 --- a/vendor/golang.org/x/net/html/atom/table_test.go +++ /dev/null @@ -1,374 +0,0 @@ -// Code generated by go generate gen.go; DO NOT EDIT. - -//go:generate go run gen.go -test - -package atom - -var testAtomList = []string{ - "a", - "abbr", - "accept", - "accept-charset", - "accesskey", - "acronym", - "action", - "address", - "align", - "allowfullscreen", - "allowpaymentrequest", - "allowusermedia", - "alt", - "annotation", - "annotation-xml", - "applet", - "area", - "article", - "as", - "aside", - "async", - "audio", - "autocomplete", - "autofocus", - "autoplay", - "b", - "base", - "basefont", - "bdi", - "bdo", - "bgsound", - "big", - "blink", - "blockquote", - "body", - "br", - "button", - "canvas", - "caption", - "center", - "challenge", - "charset", - "checked", - "cite", - "class", - "code", - "col", - "colgroup", - "color", - "cols", - "colspan", - "command", - "content", - "contenteditable", - "contextmenu", - "controls", - "coords", - "crossorigin", - "data", - "datalist", - "datetime", - "dd", - "default", - "defer", - "del", - "desc", - "details", - "dfn", - "dialog", - "dir", - "dirname", - "disabled", - "div", - "dl", - "download", - "draggable", - "dropzone", - "dt", - "em", - "embed", - "enctype", - "face", - "fieldset", - "figcaption", - "figure", - "font", - "footer", - "for", - "foreignObject", - "foreignobject", - "form", - "formaction", - "formenctype", - "formmethod", - "formnovalidate", - "formtarget", - "frame", - "frameset", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "head", - "header", - "headers", - "height", - "hgroup", - "hidden", - "high", - "hr", - "href", - "hreflang", - "html", - "http-equiv", - "i", - "icon", - "id", - "iframe", - "image", - "img", - "input", - "inputmode", - "ins", - "integrity", - "is", - "isindex", - "ismap", - "itemid", - "itemprop", - "itemref", - "itemscope", - "itemtype", - "kbd", - "keygen", - "keytype", - "kind", - "label", - "lang", - "legend", - "li", - "link", - "list", - "listing", - "loop", - "low", - "main", - "malignmark", - "manifest", - "map", - "mark", - "marquee", - "math", - "max", - "maxlength", - "media", - "mediagroup", - "menu", - "menuitem", - "meta", - "meter", - "method", - "mglyph", - "mi", - "min", - "minlength", - "mn", - "mo", - "ms", - "mtext", - "multiple", - "muted", - "name", - "nav", - "nobr", - "noembed", - "noframes", - "nomodule", - "nonce", - "noscript", - "novalidate", - "object", - "ol", - "onabort", - "onafterprint", - "onautocomplete", - "onautocompleteerror", - "onauxclick", - "onbeforeprint", - "onbeforeunload", - "onblur", - "oncancel", - "oncanplay", - "oncanplaythrough", - "onchange", - "onclick", - "onclose", - "oncontextmenu", - "oncopy", - "oncuechange", - "oncut", - "ondblclick", - "ondrag", - "ondragend", - "ondragenter", - "ondragexit", - "ondragleave", - "ondragover", - "ondragstart", - "ondrop", - "ondurationchange", - "onemptied", - "onended", - "onerror", - "onfocus", - "onhashchange", - "oninput", - "oninvalid", - "onkeydown", - "onkeypress", - "onkeyup", - "onlanguagechange", - "onload", - "onloadeddata", - "onloadedmetadata", - "onloadend", - "onloadstart", - "onmessage", - "onmessageerror", - "onmousedown", - "onmouseenter", - "onmouseleave", - "onmousemove", - "onmouseout", - "onmouseover", - "onmouseup", - "onmousewheel", - "onoffline", - "ononline", - "onpagehide", - "onpageshow", - "onpaste", - "onpause", - "onplay", - "onplaying", - "onpopstate", - "onprogress", - "onratechange", - "onrejectionhandled", - "onreset", - "onresize", - "onscroll", - "onsecuritypolicyviolation", - "onseeked", - "onseeking", - "onselect", - "onshow", - "onsort", - "onstalled", - "onstorage", - "onsubmit", - "onsuspend", - "ontimeupdate", - "ontoggle", - "onunhandledrejection", - "onunload", - "onvolumechange", - "onwaiting", - "onwheel", - "open", - "optgroup", - "optimum", - "option", - "output", - "p", - "param", - "pattern", - "picture", - "ping", - "placeholder", - "plaintext", - "playsinline", - "poster", - "pre", - "preload", - "progress", - "prompt", - "public", - "q", - "radiogroup", - "readonly", - "referrerpolicy", - "rel", - "required", - "reversed", - "rows", - "rowspan", - "rp", - "rt", - "ruby", - "s", - "samp", - "sandbox", - "scope", - "scoped", - "script", - "seamless", - "section", - "select", - "selected", - "shape", - "size", - "sizes", - "slot", - "small", - "sortable", - "sorted", - "source", - "spacer", - "span", - "spellcheck", - "src", - "srcdoc", - "srclang", - "srcset", - "start", - "step", - "strike", - "strong", - "style", - "sub", - "summary", - "sup", - "svg", - "system", - "tabindex", - "table", - "target", - "tbody", - "td", - "template", - "textarea", - "tfoot", - "th", - "thead", - "time", - "title", - "tr", - "track", - "translate", - "tt", - "type", - "typemustmatch", - "u", - "ul", - "updateviacache", - "usemap", - "value", - "var", - "video", - "wbr", - "width", - "workertype", - "wrap", - "xmp", -} diff --git a/vendor/golang.org/x/net/html/charset/charset_test.go b/vendor/golang.org/x/net/html/charset/charset_test.go deleted file mode 100644 index e4e7d86b..00000000 --- a/vendor/golang.org/x/net/html/charset/charset_test.go +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package charset - -import ( - "bytes" - "encoding/xml" - "io/ioutil" - "runtime" - "strings" - "testing" - - "golang.org/x/text/transform" -) - -func transformString(t transform.Transformer, s string) (string, error) { - r := transform.NewReader(strings.NewReader(s), t) - b, err := ioutil.ReadAll(r) - return string(b), err -} - -type testCase struct { - utf8, other, otherEncoding string -} - -// testCases for encoding and decoding. -var testCases = []testCase{ - {"Résumé", "Résumé", "utf8"}, - {"Résumé", "R\xe9sum\xe9", "latin1"}, - {"これは漢字です。", "S0\x8c0o0\"oW[g0Y0\x020", "UTF-16LE"}, - {"これは漢字です。", "0S0\x8c0oo\"[W0g0Y0\x02", "UTF-16BE"}, - {"Hello, world", "Hello, world", "ASCII"}, - {"Gdańsk", "Gda\xf1sk", "ISO-8859-2"}, - {"Ââ Čč Đđ Ŋŋ Õõ Šš Žž Åå Ää", "\xc2\xe2 \xc8\xe8 \xa9\xb9 \xaf\xbf \xd5\xf5 \xaa\xba \xac\xbc \xc5\xe5 \xc4\xe4", "ISO-8859-10"}, - {"สำหรับ", "\xca\xd3\xcb\xc3\u047a", "ISO-8859-11"}, - {"latviešu", "latvie\xf0u", "ISO-8859-13"}, - {"Seònaid", "Se\xf2naid", "ISO-8859-14"}, - {"€1 is cheap", "\xa41 is cheap", "ISO-8859-15"}, - {"românește", "rom\xe2ne\xbate", "ISO-8859-16"}, - {"nutraĵo", "nutra\xbco", "ISO-8859-3"}, - {"Kalâdlit", "Kal\xe2dlit", "ISO-8859-4"}, - {"русский", "\xe0\xe3\xe1\xe1\xda\xd8\xd9", "ISO-8859-5"}, - {"ελληνικά", "\xe5\xeb\xeb\xe7\xed\xe9\xea\xdc", "ISO-8859-7"}, - {"Kağan", "Ka\xf0an", "ISO-8859-9"}, - {"Résumé", "R\x8esum\x8e", "macintosh"}, - {"Gdańsk", "Gda\xf1sk", "windows-1250"}, - {"русский", "\xf0\xf3\xf1\xf1\xea\xe8\xe9", "windows-1251"}, - {"Résumé", "R\xe9sum\xe9", "windows-1252"}, - {"ελληνικά", "\xe5\xeb\xeb\xe7\xed\xe9\xea\xdc", "windows-1253"}, - {"Kağan", "Ka\xf0an", "windows-1254"}, - {"עִבְרִית", "\xf2\xc4\xe1\xc0\xf8\xc4\xe9\xfa", "windows-1255"}, - {"العربية", "\xc7\xe1\xda\xd1\xc8\xed\xc9", "windows-1256"}, - {"latviešu", "latvie\xf0u", "windows-1257"}, - {"Việt", "Vi\xea\xf2t", "windows-1258"}, - {"สำหรับ", "\xca\xd3\xcb\xc3\u047a", "windows-874"}, - {"русский", "\xd2\xd5\xd3\xd3\xcb\xc9\xca", "KOI8-R"}, - {"українська", "\xd5\xcb\xd2\xc1\xa7\xce\xd3\xd8\xcb\xc1", "KOI8-U"}, - {"Hello 常用國字標準字體表", "Hello \xb1`\xa5\u03b0\xea\xa6r\xbc\u0437\u01e6r\xc5\xe9\xaa\xed", "big5"}, - {"Hello 常用國字標準字體表", "Hello \xb3\xa3\xd3\xc3\x87\xf8\xd7\xd6\x98\xcb\x9c\xca\xd7\xd6\xf3\x77\xb1\xed", "gbk"}, - {"Hello 常用國字標準字體表", "Hello \xb3\xa3\xd3\xc3\x87\xf8\xd7\xd6\x98\xcb\x9c\xca\xd7\xd6\xf3\x77\xb1\xed", "gb18030"}, - {"עִבְרִית", "\x81\x30\xfb\x30\x81\x30\xf6\x34\x81\x30\xf9\x33\x81\x30\xf6\x30\x81\x30\xfb\x36\x81\x30\xf6\x34\x81\x30\xfa\x31\x81\x30\xfb\x38", "gb18030"}, - {"㧯", "\x82\x31\x89\x38", "gb18030"}, - {"これは漢字です。", "\x82\xb1\x82\xea\x82\xcd\x8a\xbf\x8e\x9a\x82\xc5\x82\xb7\x81B", "SJIS"}, - {"Hello, 世界!", "Hello, \x90\xa2\x8aE!", "SJIS"}, - {"イウエオカ", "\xb2\xb3\xb4\xb5\xb6", "SJIS"}, - {"これは漢字です。", "\xa4\xb3\xa4\xec\xa4\u03f4\xc1\xbb\xfa\xa4\u01e4\xb9\xa1\xa3", "EUC-JP"}, - {"Hello, 世界!", "Hello, \x1b$B@$3&\x1b(B!", "ISO-2022-JP"}, - {"다음과 같은 조건을 따라야 합니다: 저작자표시", "\xb4\xd9\xc0\xbd\xb0\xfa \xb0\xb0\xc0\xba \xc1\xb6\xb0\xc7\xc0\xbb \xb5\xfb\xb6\xf3\xbe\xdf \xc7մϴ\xd9: \xc0\xfa\xc0\xdb\xc0\xdaǥ\xbd\xc3", "EUC-KR"}, -} - -func TestDecode(t *testing.T) { - testCases := append(testCases, []testCase{ - // Replace multi-byte maximum subpart of ill-formed subsequence with - // single replacement character (WhatWG requirement). - {"Rés\ufffdumé", "Rés\xe1\x80umé", "utf8"}, - }...) - for _, tc := range testCases { - e, _ := Lookup(tc.otherEncoding) - if e == nil { - t.Errorf("%s: not found", tc.otherEncoding) - continue - } - s, err := transformString(e.NewDecoder(), tc.other) - if err != nil { - t.Errorf("%s: decode %q: %v", tc.otherEncoding, tc.other, err) - continue - } - if s != tc.utf8 { - t.Errorf("%s: got %q, want %q", tc.otherEncoding, s, tc.utf8) - } - } -} - -func TestEncode(t *testing.T) { - testCases := append(testCases, []testCase{ - // Use Go-style replacement. - {"Rés\xe1\x80umé", "Rés\ufffd\ufffdumé", "utf8"}, - // U+0144 LATIN SMALL LETTER N WITH ACUTE not supported by encoding. - {"Gdańsk", "Gdańsk", "ISO-8859-11"}, - {"\ufffd", "�", "ISO-8859-11"}, - {"a\xe1\x80b", "a��b", "ISO-8859-11"}, - }...) - for _, tc := range testCases { - e, _ := Lookup(tc.otherEncoding) - if e == nil { - t.Errorf("%s: not found", tc.otherEncoding) - continue - } - s, err := transformString(e.NewEncoder(), tc.utf8) - if err != nil { - t.Errorf("%s: encode %q: %s", tc.otherEncoding, tc.utf8, err) - continue - } - if s != tc.other { - t.Errorf("%s: got %q, want %q", tc.otherEncoding, s, tc.other) - } - } -} - -var sniffTestCases = []struct { - filename, declared, want string -}{ - {"HTTP-charset.html", "text/html; charset=iso-8859-15", "iso-8859-15"}, - {"UTF-16LE-BOM.html", "", "utf-16le"}, - {"UTF-16BE-BOM.html", "", "utf-16be"}, - {"meta-content-attribute.html", "text/html", "iso-8859-15"}, - {"meta-charset-attribute.html", "text/html", "iso-8859-15"}, - {"No-encoding-declaration.html", "text/html", "utf-8"}, - {"HTTP-vs-UTF-8-BOM.html", "text/html; charset=iso-8859-15", "utf-8"}, - {"HTTP-vs-meta-content.html", "text/html; charset=iso-8859-15", "iso-8859-15"}, - {"HTTP-vs-meta-charset.html", "text/html; charset=iso-8859-15", "iso-8859-15"}, - {"UTF-8-BOM-vs-meta-content.html", "text/html", "utf-8"}, - {"UTF-8-BOM-vs-meta-charset.html", "text/html", "utf-8"}, -} - -func TestSniff(t *testing.T) { - switch runtime.GOOS { - case "nacl": // platforms that don't permit direct file system access - t.Skipf("not supported on %q", runtime.GOOS) - } - - for _, tc := range sniffTestCases { - content, err := ioutil.ReadFile("testdata/" + tc.filename) - if err != nil { - t.Errorf("%s: error reading file: %v", tc.filename, err) - continue - } - - _, name, _ := DetermineEncoding(content, tc.declared) - if name != tc.want { - t.Errorf("%s: got %q, want %q", tc.filename, name, tc.want) - continue - } - } -} - -func TestReader(t *testing.T) { - switch runtime.GOOS { - case "nacl": // platforms that don't permit direct file system access - t.Skipf("not supported on %q", runtime.GOOS) - } - - for _, tc := range sniffTestCases { - content, err := ioutil.ReadFile("testdata/" + tc.filename) - if err != nil { - t.Errorf("%s: error reading file: %v", tc.filename, err) - continue - } - - r, err := NewReader(bytes.NewReader(content), tc.declared) - if err != nil { - t.Errorf("%s: error creating reader: %v", tc.filename, err) - continue - } - - got, err := ioutil.ReadAll(r) - if err != nil { - t.Errorf("%s: error reading from charset.NewReader: %v", tc.filename, err) - continue - } - - e, _ := Lookup(tc.want) - want, err := ioutil.ReadAll(transform.NewReader(bytes.NewReader(content), e.NewDecoder())) - if err != nil { - t.Errorf("%s: error decoding with hard-coded charset name: %v", tc.filename, err) - continue - } - - if !bytes.Equal(got, want) { - t.Errorf("%s: got %q, want %q", tc.filename, got, want) - continue - } - } -} - -var metaTestCases = []struct { - meta, want string -}{ - {"", ""}, - {"text/html", ""}, - {"text/html; charset utf-8", ""}, - {"text/html; charset=latin-2", "latin-2"}, - {"text/html; charset; charset = utf-8", "utf-8"}, - {`charset="big5"`, "big5"}, - {"charset='shift_jis'", "shift_jis"}, -} - -func TestFromMeta(t *testing.T) { - for _, tc := range metaTestCases { - got := fromMetaElement(tc.meta) - if got != tc.want { - t.Errorf("%q: got %q, want %q", tc.meta, got, tc.want) - } - } -} - -func TestXML(t *testing.T) { - const s = "r\xe9sum\xe9" - - d := xml.NewDecoder(strings.NewReader(s)) - d.CharsetReader = NewReaderLabel - - var a struct { - Word string - } - err := d.Decode(&a) - if err != nil { - t.Fatalf("Decode: %v", err) - } - - want := "résumé" - if a.Word != want { - t.Errorf("got %q, want %q", a.Word, want) - } -} diff --git a/vendor/golang.org/x/net/html/charset/testdata/HTTP-charset.html b/vendor/golang.org/x/net/html/charset/testdata/HTTP-charset.html deleted file mode 100644 index 9915fa0e..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/HTTP-charset.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - HTTP charset - - - - - - - - - - - -

HTTP charset

- - -
- - -
 
- - - - - -
-

The character encoding of a page can be set using the HTTP header charset declaration.

-

The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

The only character encoding declaration for this HTML file is in the HTTP header, which sets the encoding to ISO 8859-15.

-
-
-
HTML5
-

the-input-byte-stream-001
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The default encoding for the browser you are testing is not set to ISO 8859-15.
  • -
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html b/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html deleted file mode 100644 index 26e5d8b4..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-UTF-8-BOM.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - HTTP vs UTF-8 BOM - - - - - - - - - - - -

HTTP vs UTF-8 BOM

- - -
- - -
 
- - - - - -
-

A character encoding set in the HTTP header has lower precedence than the UTF-8 signature.

-

The HTTP header attempts to set the character encoding to ISO 8859-15. The page starts with a UTF-8 signature.

The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ýäè. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.

If the test is unsuccessful, the characters  should appear at the top of the page. These represent the bytes that make up the UTF-8 signature when encountered in the ISO 8859-15 encoding.

-
-
-
HTML5
-

the-input-byte-stream-034
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The default encoding for the browser you are testing is not set to ISO 8859-15.
  • -
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html b/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html deleted file mode 100644 index 2f07e951..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-charset.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - HTTP vs meta charset - - - - - - - - - - - -

HTTP vs meta charset

- - -
- - -
 
- - - - - -
-

The HTTP header has a higher precedence than an encoding declaration in a meta charset attribute.

-

The HTTP header attempts to set the character encoding to ISO 8859-15. The page contains an encoding declaration in a meta charset attribute that attempts to set the character encoding to ISO 8859-1.

The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

-
-
-
HTML5
-

the-input-byte-stream-018
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The default encoding for the browser you are testing is not set to ISO 8859-15.
  • -
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html b/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html deleted file mode 100644 index 6853cdde..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/HTTP-vs-meta-content.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - HTTP vs meta content - - - - - - - - - - - -

HTTP vs meta content

- - -
- - -
 
- - - - - -
-

The HTTP header has a higher precedence than an encoding declaration in a meta content attribute.

-

The HTTP header attempts to set the character encoding to ISO 8859-15. The page contains an encoding declaration in a meta content attribute that attempts to set the character encoding to ISO 8859-1.

The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

-
-
-
HTML5
-

the-input-byte-stream-016
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The default encoding for the browser you are testing is not set to ISO 8859-15.
  • -
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html b/vendor/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html deleted file mode 100644 index 612e26c6..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/No-encoding-declaration.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - No encoding declaration - - - - - - - - - - - -

No encoding declaration

- - -
- - -
 
- - - - - -
-

A page with no encoding information in HTTP, BOM, XML declaration or meta element will be treated as UTF-8.

-

The test on this page contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ýäè. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.

-
-
-
HTML5
-

the-input-byte-stream-015
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/charset/testdata/README b/vendor/golang.org/x/net/html/charset/testdata/README deleted file mode 100644 index 38ef0f9f..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/README +++ /dev/null @@ -1,9 +0,0 @@ -These test cases come from -http://www.w3.org/International/tests/repository/html5/the-input-byte-stream/results-basics - -Distributed under both the W3C Test Suite License -(http://www.w3.org/Consortium/Legal/2008/04-testsuite-license) -and the W3C 3-clause BSD License -(http://www.w3.org/Consortium/Legal/2008/03-bsd-license). -To contribute to a W3C Test Suite, see the policies and contribution -forms (http://www.w3.org/2004/10/27-testcases). diff --git a/vendor/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html b/vendor/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html deleted file mode 100644 index 3abf7a93..00000000 Binary files a/vendor/golang.org/x/net/html/charset/testdata/UTF-16BE-BOM.html and /dev/null differ diff --git a/vendor/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html b/vendor/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html deleted file mode 100644 index 76254c98..00000000 Binary files a/vendor/golang.org/x/net/html/charset/testdata/UTF-16LE-BOM.html and /dev/null differ diff --git a/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html b/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html deleted file mode 100644 index 83de4333..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-charset.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - UTF-8 BOM vs meta charset - - - - - - - - - - - -

UTF-8 BOM vs meta charset

- - -
- - -
 
- - - - - -
-

A page with a UTF-8 BOM will be recognized as UTF-8 even if the meta charset attribute declares a different encoding.

-

The page contains an encoding declaration in a meta charset attribute that attempts to set the character encoding to ISO 8859-15, but the file starts with a UTF-8 signature.

The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ýäè. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.

-
-
-
HTML5
-

the-input-byte-stream-038
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The default encoding for the browser you are testing is not set to ISO 8859-15.
  • -
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html b/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html deleted file mode 100644 index 501aac2d..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/UTF-8-BOM-vs-meta-content.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - UTF-8 BOM vs meta content - - - - - - - - - - - -

UTF-8 BOM vs meta content

- - -
- - -
 
- - - - - -
-

A page with a UTF-8 BOM will be recognized as UTF-8 even if the meta content attribute declares a different encoding.

-

The page contains an encoding declaration in a meta content attribute that attempts to set the character encoding to ISO 8859-15, but the file starts with a UTF-8 signature.

The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ýäè. This matches the sequence of bytes above when they are interpreted as UTF-8. If the class name matches the selector then the test will pass.

-
-
-
HTML5
-

the-input-byte-stream-037
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The default encoding for the browser you are testing is not set to ISO 8859-15.
  • -
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html b/vendor/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html deleted file mode 100644 index 2d7d25ab..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/meta-charset-attribute.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - meta charset attribute - - - - - - - - - - - -

meta charset attribute

- - -
- - -
 
- - - - - -
-

The character encoding of the page can be set by a meta element with charset attribute.

-

The only character encoding declaration for this HTML file is in the charset attribute of the meta element, which declares the encoding to be ISO 8859-15.

The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

-
-
-
HTML5
-

the-input-byte-stream-009
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The default encoding for the browser you are testing is not set to ISO 8859-15.
  • -
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/charset/testdata/meta-content-attribute.html b/vendor/golang.org/x/net/html/charset/testdata/meta-content-attribute.html deleted file mode 100644 index 1c3f228e..00000000 --- a/vendor/golang.org/x/net/html/charset/testdata/meta-content-attribute.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - meta content attribute - - - - - - - - - - - -

meta content attribute

- - -
- - -
 
- - - - - -
-

The character encoding of the page can be set by a meta element with http-equiv and content attributes.

-

The only character encoding declaration for this HTML file is in the content attribute of the meta element, which declares the encoding to be ISO 8859-15.

The test contains a div with a class name that contains the following sequence of bytes: 0xC3 0xBD 0xC3 0xA4 0xC3 0xA8. These represent different sequences of characters in ISO 8859-15, ISO 8859-1 and UTF-8. The external, UTF-8-encoded stylesheet contains a selector .test div.ÜÀÚ. This matches the sequence of bytes above when they are interpreted as ISO 8859-15. If the class name matches the selector then the test will pass.

-
-
-
HTML5
-

the-input-byte-stream-007
Result summary & related tests
Detailed results for this test
Link to spec

-
Assumptions:
  • The default encoding for the browser you are testing is not set to ISO 8859-15.
  • -
  • The test is read from a server that supports HTTP.
-
- - - - - - diff --git a/vendor/golang.org/x/net/html/entity_test.go b/vendor/golang.org/x/net/html/entity_test.go deleted file mode 100644 index b53f866f..00000000 --- a/vendor/golang.org/x/net/html/entity_test.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "testing" - "unicode/utf8" -) - -func TestEntityLength(t *testing.T) { - // We verify that the length of UTF-8 encoding of each value is <= 1 + len(key). - // The +1 comes from the leading "&". This property implies that the length of - // unescaped text is <= the length of escaped text. - for k, v := range entity { - if 1+len(k) < utf8.RuneLen(v) { - t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v)) - } - if len(k) > longestEntityWithoutSemicolon && k[len(k)-1] != ';' { - t.Errorf("entity name %s is %d characters, but longestEntityWithoutSemicolon=%d", k, len(k), longestEntityWithoutSemicolon) - } - } - for k, v := range entity2 { - if 1+len(k) < utf8.RuneLen(v[0])+utf8.RuneLen(v[1]) { - t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v[0]) + string(v[1])) - } - } -} diff --git a/vendor/golang.org/x/net/html/escape_test.go b/vendor/golang.org/x/net/html/escape_test.go deleted file mode 100644 index b405d4b4..00000000 --- a/vendor/golang.org/x/net/html/escape_test.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import "testing" - -type unescapeTest struct { - // A short description of the test case. - desc string - // The HTML text. - html string - // The unescaped text. - unescaped string -} - -var unescapeTests = []unescapeTest{ - // Handle no entities. - { - "copy", - "A\ttext\nstring", - "A\ttext\nstring", - }, - // Handle simple named entities. - { - "simple", - "& > <", - "& > <", - }, - // Handle hitting the end of the string. - { - "stringEnd", - "& &", - "& &", - }, - // Handle entities with two codepoints. - { - "multiCodepoint", - "text ⋛︀ blah", - "text \u22db\ufe00 blah", - }, - // Handle decimal numeric entities. - { - "decimalEntity", - "Delta = Δ ", - "Delta = Δ ", - }, - // Handle hexadecimal numeric entities. - { - "hexadecimalEntity", - "Lambda = λ = λ ", - "Lambda = λ = λ ", - }, - // Handle numeric early termination. - { - "numericEnds", - "&# &#x €43 © = ©f = ©", - "&# &#x €43 © = ©f = ©", - }, - // Handle numeric ISO-8859-1 entity replacements. - { - "numericReplacements", - "Footnote‡", - "Footnote‡", - }, -} - -func TestUnescape(t *testing.T) { - for _, tt := range unescapeTests { - unescaped := UnescapeString(tt.html) - if unescaped != tt.unescaped { - t.Errorf("TestUnescape %s: want %q, got %q", tt.desc, tt.unescaped, unescaped) - } - } -} - -func TestUnescapeEscape(t *testing.T) { - ss := []string{ - ``, - `abc def`, - `a & b`, - `a&b`, - `a & b`, - `"`, - `"`, - `"<&>"`, - `"<&>"`, - `3&5==1 && 0<1, "0<1", a+acute=á`, - `The special characters are: <, >, &, ' and "`, - } - for _, s := range ss { - if got := UnescapeString(EscapeString(s)); got != s { - t.Errorf("got %q want %q", got, s) - } - } -} diff --git a/vendor/golang.org/x/net/html/example_test.go b/vendor/golang.org/x/net/html/example_test.go deleted file mode 100644 index 0b06ed77..00000000 --- a/vendor/golang.org/x/net/html/example_test.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This example demonstrates parsing HTML data and walking the resulting tree. -package html_test - -import ( - "fmt" - "log" - "strings" - - "golang.org/x/net/html" -) - -func ExampleParse() { - s := `

Links:

` - doc, err := html.Parse(strings.NewReader(s)) - if err != nil { - log.Fatal(err) - } - var f func(*html.Node) - f = func(n *html.Node) { - if n.Type == html.ElementNode && n.Data == "a" { - for _, a := range n.Attr { - if a.Key == "href" { - fmt.Println(a.Val) - break - } - } - } - for c := n.FirstChild; c != nil; c = c.NextSibling { - f(c) - } - } - f(doc) - // Output: - // foo - // /bar/baz -} diff --git a/vendor/golang.org/x/net/html/node_test.go b/vendor/golang.org/x/net/html/node_test.go deleted file mode 100644 index 471102f3..00000000 --- a/vendor/golang.org/x/net/html/node_test.go +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "fmt" -) - -// checkTreeConsistency checks that a node and its descendants are all -// consistent in their parent/child/sibling relationships. -func checkTreeConsistency(n *Node) error { - return checkTreeConsistency1(n, 0) -} - -func checkTreeConsistency1(n *Node, depth int) error { - if depth == 1e4 { - return fmt.Errorf("html: tree looks like it contains a cycle") - } - if err := checkNodeConsistency(n); err != nil { - return err - } - for c := n.FirstChild; c != nil; c = c.NextSibling { - if err := checkTreeConsistency1(c, depth+1); err != nil { - return err - } - } - return nil -} - -// checkNodeConsistency checks that a node's parent/child/sibling relationships -// are consistent. -func checkNodeConsistency(n *Node) error { - if n == nil { - return nil - } - - nParent := 0 - for p := n.Parent; p != nil; p = p.Parent { - nParent++ - if nParent == 1e4 { - return fmt.Errorf("html: parent list looks like an infinite loop") - } - } - - nForward := 0 - for c := n.FirstChild; c != nil; c = c.NextSibling { - nForward++ - if nForward == 1e6 { - return fmt.Errorf("html: forward list of children looks like an infinite loop") - } - if c.Parent != n { - return fmt.Errorf("html: inconsistent child/parent relationship") - } - } - - nBackward := 0 - for c := n.LastChild; c != nil; c = c.PrevSibling { - nBackward++ - if nBackward == 1e6 { - return fmt.Errorf("html: backward list of children looks like an infinite loop") - } - if c.Parent != n { - return fmt.Errorf("html: inconsistent child/parent relationship") - } - } - - if n.Parent != nil { - if n.Parent == n { - return fmt.Errorf("html: inconsistent parent relationship") - } - if n.Parent == n.FirstChild { - return fmt.Errorf("html: inconsistent parent/first relationship") - } - if n.Parent == n.LastChild { - return fmt.Errorf("html: inconsistent parent/last relationship") - } - if n.Parent == n.PrevSibling { - return fmt.Errorf("html: inconsistent parent/prev relationship") - } - if n.Parent == n.NextSibling { - return fmt.Errorf("html: inconsistent parent/next relationship") - } - - parentHasNAsAChild := false - for c := n.Parent.FirstChild; c != nil; c = c.NextSibling { - if c == n { - parentHasNAsAChild = true - break - } - } - if !parentHasNAsAChild { - return fmt.Errorf("html: inconsistent parent/child relationship") - } - } - - if n.PrevSibling != nil && n.PrevSibling.NextSibling != n { - return fmt.Errorf("html: inconsistent prev/next relationship") - } - if n.NextSibling != nil && n.NextSibling.PrevSibling != n { - return fmt.Errorf("html: inconsistent next/prev relationship") - } - - if (n.FirstChild == nil) != (n.LastChild == nil) { - return fmt.Errorf("html: inconsistent first/last relationship") - } - if n.FirstChild != nil && n.FirstChild == n.LastChild { - // We have a sole child. - if n.FirstChild.PrevSibling != nil || n.FirstChild.NextSibling != nil { - return fmt.Errorf("html: inconsistent sole child's sibling relationship") - } - } - - seen := map[*Node]bool{} - - var last *Node - for c := n.FirstChild; c != nil; c = c.NextSibling { - if seen[c] { - return fmt.Errorf("html: inconsistent repeated child") - } - seen[c] = true - last = c - } - if last != n.LastChild { - return fmt.Errorf("html: inconsistent last relationship") - } - - var first *Node - for c := n.LastChild; c != nil; c = c.PrevSibling { - if !seen[c] { - return fmt.Errorf("html: inconsistent missing child") - } - delete(seen, c) - first = c - } - if first != n.FirstChild { - return fmt.Errorf("html: inconsistent first relationship") - } - - if len(seen) != 0 { - return fmt.Errorf("html: inconsistent forwards/backwards child list") - } - - return nil -} diff --git a/vendor/golang.org/x/net/html/parse_test.go b/vendor/golang.org/x/net/html/parse_test.go deleted file mode 100644 index 7e47d11b..00000000 --- a/vendor/golang.org/x/net/html/parse_test.go +++ /dev/null @@ -1,388 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "bufio" - "bytes" - "errors" - "fmt" - "io" - "io/ioutil" - "os" - "path/filepath" - "runtime" - "sort" - "strings" - "testing" - - "golang.org/x/net/html/atom" -) - -// readParseTest reads a single test case from r. -func readParseTest(r *bufio.Reader) (text, want, context string, err error) { - line, err := r.ReadSlice('\n') - if err != nil { - return "", "", "", err - } - var b []byte - - // Read the HTML. - if string(line) != "#data\n" { - return "", "", "", fmt.Errorf(`got %q want "#data\n"`, line) - } - for { - line, err = r.ReadSlice('\n') - if err != nil { - return "", "", "", err - } - if line[0] == '#' { - break - } - b = append(b, line...) - } - text = strings.TrimSuffix(string(b), "\n") - b = b[:0] - - // Skip the error list. - if string(line) != "#errors\n" { - return "", "", "", fmt.Errorf(`got %q want "#errors\n"`, line) - } - for { - line, err = r.ReadSlice('\n') - if err != nil { - return "", "", "", err - } - if line[0] == '#' { - break - } - } - - if string(line) == "#document-fragment\n" { - line, err = r.ReadSlice('\n') - if err != nil { - return "", "", "", err - } - context = strings.TrimSpace(string(line)) - line, err = r.ReadSlice('\n') - if err != nil { - return "", "", "", err - } - } - - // Read the dump of what the parse tree should be. - if string(line) != "#document\n" { - return "", "", "", fmt.Errorf(`got %q want "#document\n"`, line) - } - inQuote := false - for { - line, err = r.ReadSlice('\n') - if err != nil && err != io.EOF { - return "", "", "", err - } - trimmed := bytes.Trim(line, "| \n") - if len(trimmed) > 0 { - if line[0] == '|' && trimmed[0] == '"' { - inQuote = true - } - if trimmed[len(trimmed)-1] == '"' && !(line[0] == '|' && len(trimmed) == 1) { - inQuote = false - } - } - if len(line) == 0 || len(line) == 1 && line[0] == '\n' && !inQuote { - break - } - b = append(b, line...) - } - return text, string(b), context, nil -} - -func dumpIndent(w io.Writer, level int) { - io.WriteString(w, "| ") - for i := 0; i < level; i++ { - io.WriteString(w, " ") - } -} - -type sortedAttributes []Attribute - -func (a sortedAttributes) Len() int { - return len(a) -} - -func (a sortedAttributes) Less(i, j int) bool { - if a[i].Namespace != a[j].Namespace { - return a[i].Namespace < a[j].Namespace - } - return a[i].Key < a[j].Key -} - -func (a sortedAttributes) Swap(i, j int) { - a[i], a[j] = a[j], a[i] -} - -func dumpLevel(w io.Writer, n *Node, level int) error { - dumpIndent(w, level) - switch n.Type { - case ErrorNode: - return errors.New("unexpected ErrorNode") - case DocumentNode: - return errors.New("unexpected DocumentNode") - case ElementNode: - if n.Namespace != "" { - fmt.Fprintf(w, "<%s %s>", n.Namespace, n.Data) - } else { - fmt.Fprintf(w, "<%s>", n.Data) - } - attr := sortedAttributes(n.Attr) - sort.Sort(attr) - for _, a := range attr { - io.WriteString(w, "\n") - dumpIndent(w, level+1) - if a.Namespace != "" { - fmt.Fprintf(w, `%s %s="%s"`, a.Namespace, a.Key, a.Val) - } else { - fmt.Fprintf(w, `%s="%s"`, a.Key, a.Val) - } - } - case TextNode: - fmt.Fprintf(w, `"%s"`, n.Data) - case CommentNode: - fmt.Fprintf(w, "", n.Data) - case DoctypeNode: - fmt.Fprintf(w, "") - case scopeMarkerNode: - return errors.New("unexpected scopeMarkerNode") - default: - return errors.New("unknown node type") - } - io.WriteString(w, "\n") - for c := n.FirstChild; c != nil; c = c.NextSibling { - if err := dumpLevel(w, c, level+1); err != nil { - return err - } - } - return nil -} - -func dump(n *Node) (string, error) { - if n == nil || n.FirstChild == nil { - return "", nil - } - var b bytes.Buffer - for c := n.FirstChild; c != nil; c = c.NextSibling { - if err := dumpLevel(&b, c, 0); err != nil { - return "", err - } - } - return b.String(), nil -} - -const testDataDir = "testdata/webkit/" - -func TestParser(t *testing.T) { - testFiles, err := filepath.Glob(testDataDir + "*.dat") - if err != nil { - t.Fatal(err) - } - for _, tf := range testFiles { - f, err := os.Open(tf) - if err != nil { - t.Fatal(err) - } - defer f.Close() - r := bufio.NewReader(f) - - for i := 0; ; i++ { - text, want, context, err := readParseTest(r) - if err == io.EOF { - break - } - if err != nil { - t.Fatal(err) - } - - err = testParseCase(text, want, context) - - if err != nil { - t.Errorf("%s test #%d %q, %s", tf, i, text, err) - } - } - } -} - -// testParseCase tests one test case from the test files. If the test does not -// pass, it returns an error that explains the failure. -// text is the HTML to be parsed, want is a dump of the correct parse tree, -// and context is the name of the context node, if any. -func testParseCase(text, want, context string) (err error) { - defer func() { - if x := recover(); x != nil { - switch e := x.(type) { - case error: - err = e - default: - err = fmt.Errorf("%v", e) - } - } - }() - - var doc *Node - if context == "" { - doc, err = Parse(strings.NewReader(text)) - if err != nil { - return err - } - } else { - contextNode := &Node{ - Type: ElementNode, - DataAtom: atom.Lookup([]byte(context)), - Data: context, - } - nodes, err := ParseFragment(strings.NewReader(text), contextNode) - if err != nil { - return err - } - doc = &Node{ - Type: DocumentNode, - } - for _, n := range nodes { - doc.AppendChild(n) - } - } - - if err := checkTreeConsistency(doc); err != nil { - return err - } - - got, err := dump(doc) - if err != nil { - return err - } - // Compare the parsed tree to the #document section. - if got != want { - return fmt.Errorf("got vs want:\n----\n%s----\n%s----", got, want) - } - - if renderTestBlacklist[text] || context != "" { - return nil - } - - // Check that rendering and re-parsing results in an identical tree. - pr, pw := io.Pipe() - go func() { - pw.CloseWithError(Render(pw, doc)) - }() - doc1, err := Parse(pr) - if err != nil { - return err - } - got1, err := dump(doc1) - if err != nil { - return err - } - if got != got1 { - return fmt.Errorf("got vs got1:\n----\n%s----\n%s----", got, got1) - } - - return nil -} - -// Some test input result in parse trees are not 'well-formed' despite -// following the HTML5 recovery algorithms. Rendering and re-parsing such a -// tree will not result in an exact clone of that tree. We blacklist such -// inputs from the render test. -var renderTestBlacklist = map[string]bool{ - // The second will be reparented to the first 's parent. This - // results in an whose parent is an , which is not 'well-formed'. - `
XCY`: true, - // The same thing with a

: - `

`: true, - // More cases of being reparented: - `aba
brx
aoe`: true, - `

`: true, - `
`: true, - // A similar reparenting situation involving : - `123`: true, - // A element is reparented, putting it before a table. - // A <plaintext> element can't have anything after it in HTML. - `<table><plaintext><td>`: true, - `<!doctype html><table><plaintext></plaintext>`: true, - `<!doctype html><table><tbody><plaintext></plaintext>`: true, - `<!doctype html><table><tbody><tr><plaintext></plaintext>`: true, - // A form inside a table inside a form doesn't work either. - `<!doctype html><form><table></form><form></table></form>`: true, - // A script that ends at EOF may escape its own closing tag when rendered. - `<!doctype html><script><!--<script `: true, - `<!doctype html><script><!--<script <`: true, - `<!doctype html><script><!--<script <a`: true, - `<!doctype html><script><!--<script </`: true, - `<!doctype html><script><!--<script </s`: true, - `<!doctype html><script><!--<script </script`: true, - `<!doctype html><script><!--<script </scripta`: true, - `<!doctype html><script><!--<script -`: true, - `<!doctype html><script><!--<script -a`: true, - `<!doctype html><script><!--<script -<`: true, - `<!doctype html><script><!--<script --`: true, - `<!doctype html><script><!--<script --a`: true, - `<!doctype html><script><!--<script --<`: true, - `<script><!--<script `: true, - `<script><!--<script <a`: true, - `<script><!--<script </script`: true, - `<script><!--<script </scripta`: true, - `<script><!--<script -`: true, - `<script><!--<script -a`: true, - `<script><!--<script --`: true, - `<script><!--<script --a`: true, - `<script><!--<script <`: true, - `<script><!--<script </`: true, - `<script><!--<script </s`: true, - // Reconstructing the active formatting elements results in a <plaintext> - // element that contains an <a> element. - `<!doctype html><p><a><plaintext>b`: true, -} - -func TestNodeConsistency(t *testing.T) { - // inconsistentNode is a Node whose DataAtom and Data do not agree. - inconsistentNode := &Node{ - Type: ElementNode, - DataAtom: atom.Frameset, - Data: "table", - } - _, err := ParseFragment(strings.NewReader("<p>hello</p>"), inconsistentNode) - if err == nil { - t.Errorf("got nil error, want non-nil") - } -} - -func BenchmarkParser(b *testing.B) { - buf, err := ioutil.ReadFile("testdata/go1.html") - if err != nil { - b.Fatalf("could not read testdata/go1.html: %v", err) - } - b.SetBytes(int64(len(buf))) - runtime.GC() - b.ReportAllocs() - b.ResetTimer() - for i := 0; i < b.N; i++ { - Parse(bytes.NewBuffer(buf)) - } -} diff --git a/vendor/golang.org/x/net/html/render_test.go b/vendor/golang.org/x/net/html/render_test.go deleted file mode 100644 index 11da54b3..00000000 --- a/vendor/golang.org/x/net/html/render_test.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "bytes" - "testing" -) - -func TestRenderer(t *testing.T) { - nodes := [...]*Node{ - 0: { - Type: ElementNode, - Data: "html", - }, - 1: { - Type: ElementNode, - Data: "head", - }, - 2: { - Type: ElementNode, - Data: "body", - }, - 3: { - Type: TextNode, - Data: "0<1", - }, - 4: { - Type: ElementNode, - Data: "p", - Attr: []Attribute{ - { - Key: "id", - Val: "A", - }, - { - Key: "foo", - Val: `abc"def`, - }, - }, - }, - 5: { - Type: TextNode, - Data: "2", - }, - 6: { - Type: ElementNode, - Data: "b", - Attr: []Attribute{ - { - Key: "empty", - Val: "", - }, - }, - }, - 7: { - Type: TextNode, - Data: "3", - }, - 8: { - Type: ElementNode, - Data: "i", - Attr: []Attribute{ - { - Key: "backslash", - Val: `\`, - }, - }, - }, - 9: { - Type: TextNode, - Data: "&4", - }, - 10: { - Type: TextNode, - Data: "5", - }, - 11: { - Type: ElementNode, - Data: "blockquote", - }, - 12: { - Type: ElementNode, - Data: "br", - }, - 13: { - Type: TextNode, - Data: "6", - }, - } - - // Build a tree out of those nodes, based on a textual representation. - // Only the ".\t"s are significant. The trailing HTML-like text is - // just commentary. The "0:" prefixes are for easy cross-reference with - // the nodes array. - treeAsText := [...]string{ - 0: `<html>`, - 1: `. <head>`, - 2: `. <body>`, - 3: `. . "0&lt;1"`, - 4: `. . <p id="A" foo="abc&#34;def">`, - 5: `. . . "2"`, - 6: `. . . <b empty="">`, - 7: `. . . . "3"`, - 8: `. . . <i backslash="\">`, - 9: `. . . . "&amp;4"`, - 10: `. . "5"`, - 11: `. . <blockquote>`, - 12: `. . <br>`, - 13: `. . "6"`, - } - if len(nodes) != len(treeAsText) { - t.Fatal("len(nodes) != len(treeAsText)") - } - var stack [8]*Node - for i, line := range treeAsText { - level := 0 - for line[0] == '.' { - // Strip a leading ".\t". - line = line[2:] - level++ - } - n := nodes[i] - if level == 0 { - if stack[0] != nil { - t.Fatal("multiple root nodes") - } - stack[0] = n - } else { - stack[level-1].AppendChild(n) - stack[level] = n - for i := level + 1; i < len(stack); i++ { - stack[i] = nil - } - } - // At each stage of tree construction, we check all nodes for consistency. - for j, m := range nodes { - if err := checkNodeConsistency(m); err != nil { - t.Fatalf("i=%d, j=%d: %v", i, j, err) - } - } - } - - want := `<html><head></head><body>0&lt;1<p id="A" foo="abc&#34;def">` + - `2<b empty="">3</b><i backslash="\">&amp;4</i></p>` + - `5<blockquote></blockquote><br/>6</body></html>` - b := new(bytes.Buffer) - if err := Render(b, nodes[0]); err != nil { - t.Fatal(err) - } - if got := b.String(); got != want { - t.Errorf("got vs want:\n%s\n%s\n", got, want) - } -} diff --git a/vendor/golang.org/x/net/html/testdata/go1.html b/vendor/golang.org/x/net/html/testdata/go1.html deleted file mode 100644 index d238257c..00000000 --- a/vendor/golang.org/x/net/html/testdata/go1.html +++ /dev/null @@ -1,2237 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - - <title>Go 1 Release Notes - The Go Programming Language</title> - -<link type="text/css" rel="stylesheet" href="/doc/style.css"> -<script type="text/javascript" src="/doc/godocs.js"></script> - -<link rel="search" type="application/opensearchdescription+xml" title="godoc" href="/opensearch.xml" /> - -<script type="text/javascript"> -var _gaq = _gaq || []; -_gaq.push(["_setAccount", "UA-11222381-2"]); -_gaq.push(["_trackPageview"]); -</script> -</head> -<body> - -<div id="topbar"><div class="container wide"> - -<form method="GET" action="/search"> -<div id="menu"> -<a href="/doc/">Documents</a> -<a href="/ref/">References</a> -<a href="/pkg/">Packages</a> -<a href="/project/">The Project</a> -<a href="/help/">Help</a> -<input type="text" id="search" name="q" class="inactive" value="Search"> -</div> -<div id="heading"><a href="/">The Go Programming Language</a></div> -</form> - -</div></div> - -<div id="page" class="wide"> - - - <div id="plusone"><g:plusone size="small" annotation="none"></g:plusone></div> - <h1>Go 1 Release Notes</h1> - - - - -<div id="nav"></div> - - - - -<h2 id="introduction">Introduction to Go 1</h2> - -<p> -Go version 1, Go 1 for short, defines a language and a set of core libraries -that provide a stable foundation for creating reliable products, projects, and -publications. -</p> - -<p> -The driving motivation for Go 1 is stability for its users. People should be able to -write Go programs and expect that they will continue to compile and run without -change, on a time scale of years, including in production environments such as -Google App Engine. Similarly, people should be able to write books about Go, be -able to say which version of Go the book is describing, and have that version -number still be meaningful much later. -</p> - -<p> -Code that compiles in Go 1 should, with few exceptions, continue to compile and -run throughout the lifetime of that version, even as we issue updates and bug -fixes such as Go version 1.1, 1.2, and so on. Other than critical fixes, changes -made to the language and library for subsequent releases of Go 1 may -add functionality but will not break existing Go 1 programs. -<a href="go1compat.html">The Go 1 compatibility document</a> -explains the compatibility guidelines in more detail. -</p> - -<p> -Go 1 is a representation of Go as it used today, not a wholesale rethinking of -the language. We avoided designing new features and instead focused on cleaning -up problems and inconsistencies and improving portability. There are a number -changes to the Go language and packages that we had considered for some time and -prototyped but not released primarily because they are significant and -backwards-incompatible. Go 1 was an opportunity to get them out, which is -helpful for the long term, but also means that Go 1 introduces incompatibilities -for old programs. Fortunately, the <code>go</code> <code>fix</code> tool can -automate much of the work needed to bring programs up to the Go 1 standard. -</p> - -<p> -This document outlines the major changes in Go 1 that will affect programmers -updating existing code; its reference point is the prior release, r60 (tagged as -r60.3). It also explains how to update code from r60 to run under Go 1. -</p> - -<h2 id="language">Changes to the language</h2> - -<h3 id="append">Append</h3> - -<p> -The <code>append</code> predeclared variadic function makes it easy to grow a slice -by adding elements to the end. -A common use is to add bytes to the end of a byte slice when generating output. -However, <code>append</code> did not provide a way to append a string to a <code>[]byte</code>, -which is another common case. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/greeting := ..byte/` `/append.*hello/`}} ---> greeting := []byte{} - greeting = append(greeting, []byte(&#34;hello &#34;)...)</pre> - -<p> -By analogy with the similar property of <code>copy</code>, Go 1 -permits a string to be appended (byte-wise) directly to a byte -slice, reducing the friction between strings and byte slices. -The conversion is no longer necessary: -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/append.*world/`}} ---> greeting = append(greeting, &#34;world&#34;...)</pre> - -<p> -<em>Updating</em>: -This is a new feature, so existing code needs no changes. -</p> - -<h3 id="close">Close</h3> - -<p> -The <code>close</code> predeclared function provides a mechanism -for a sender to signal that no more values will be sent. -It is important to the implementation of <code>for</code> <code>range</code> -loops over channels and is helpful in other situations. -Partly by design and partly because of race conditions that can occur otherwise, -it is intended for use only by the goroutine sending on the channel, -not by the goroutine receiving data. -However, before Go 1 there was no compile-time checking that <code>close</code> -was being used correctly. -</p> - -<p> -To close this gap, at least in part, Go 1 disallows <code>close</code> on receive-only channels. -Attempting to close such a channel is a compile-time error. -</p> - -<pre> - var c chan int - var csend chan&lt;- int = c - var crecv &lt;-chan int = c - close(c) // legal - close(csend) // legal - close(crecv) // illegal -</pre> - -<p> -<em>Updating</em>: -Existing code that attempts to close a receive-only channel was -erroneous even before Go 1 and should be fixed. The compiler will -now reject such code. -</p> - -<h3 id="literals">Composite literals</h3> - -<p> -In Go 1, a composite literal of array, slice, or map type can elide the -type specification for the elements' initializers if they are of pointer type. -All four of the initializations in this example are legal; the last one was illegal before Go 1. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/type Date struct/` `/STOP/`}} ---> type Date struct { - month string - day int - } - <span class="comment">// Struct values, fully qualified; always legal.</span> - holiday1 := []Date{ - Date{&#34;Feb&#34;, 14}, - Date{&#34;Nov&#34;, 11}, - Date{&#34;Dec&#34;, 25}, - } - <span class="comment">// Struct values, type name elided; always legal.</span> - holiday2 := []Date{ - {&#34;Feb&#34;, 14}, - {&#34;Nov&#34;, 11}, - {&#34;Dec&#34;, 25}, - } - <span class="comment">// Pointers, fully qualified, always legal.</span> - holiday3 := []*Date{ - &amp;Date{&#34;Feb&#34;, 14}, - &amp;Date{&#34;Nov&#34;, 11}, - &amp;Date{&#34;Dec&#34;, 25}, - } - <span class="comment">// Pointers, type name elided; legal in Go 1.</span> - holiday4 := []*Date{ - {&#34;Feb&#34;, 14}, - {&#34;Nov&#34;, 11}, - {&#34;Dec&#34;, 25}, - }</pre> - -<p> -<em>Updating</em>: -This change has no effect on existing code, but the command -<code>gofmt</code> <code>-s</code> applied to existing source -will, among other things, elide explicit element types wherever permitted. -</p> - - -<h3 id="init">Goroutines during init</h3> - -<p> -The old language defined that <code>go</code> statements executed during initialization created goroutines but that they did not begin to run until initialization of the entire program was complete. -This introduced clumsiness in many places and, in effect, limited the utility -of the <code>init</code> construct: -if it was possible for another package to use the library during initialization, the library -was forced to avoid goroutines. -This design was done for reasons of simplicity and safety but, -as our confidence in the language grew, it seemed unnecessary. -Running goroutines during initialization is no more complex or unsafe than running them during normal execution. -</p> - -<p> -In Go 1, code that uses goroutines can be called from -<code>init</code> routines and global initialization expressions -without introducing a deadlock. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/PackageGlobal/` `/^}/`}} --->var PackageGlobal int - -func init() { - c := make(chan int) - go initializationFunction(c) - PackageGlobal = &lt;-c -}</pre> - -<p> -<em>Updating</em>: -This is a new feature, so existing code needs no changes, -although it's possible that code that depends on goroutines not starting before <code>main</code> will break. -There was no such code in the standard repository. -</p> - -<h3 id="rune">The rune type</h3> - -<p> -The language spec allows the <code>int</code> type to be 32 or 64 bits wide, but current implementations set <code>int</code> to 32 bits even on 64-bit platforms. -It would be preferable to have <code>int</code> be 64 bits on 64-bit platforms. -(There are important consequences for indexing large slices.) -However, this change would waste space when processing Unicode characters with -the old language because the <code>int</code> type was also used to hold Unicode code points: each code point would waste an extra 32 bits of storage if <code>int</code> grew from 32 bits to 64. -</p> - -<p> -To make changing to 64-bit <code>int</code> feasible, -Go 1 introduces a new basic type, <code>rune</code>, to represent -individual Unicode code points. -It is an alias for <code>int32</code>, analogous to <code>byte</code> -as an alias for <code>uint8</code>. -</p> - -<p> -Character literals such as <code>'a'</code>, <code>'語'</code>, and <code>'\u0345'</code> -now have default type <code>rune</code>, -analogous to <code>1.0</code> having default type <code>float64</code>. -A variable initialized to a character constant will therefore -have type <code>rune</code> unless otherwise specified. -</p> - -<p> -Libraries have been updated to use <code>rune</code> rather than <code>int</code> -when appropriate. For instance, the functions <code>unicode.ToLower</code> and -relatives now take and return a <code>rune</code>. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/STARTRUNE/` `/ENDRUNE/`}} ---> delta := &#39;δ&#39; <span class="comment">// delta has type rune.</span> - var DELTA rune - DELTA = unicode.ToUpper(delta) - epsilon := unicode.ToLower(DELTA + 1) - if epsilon != &#39;δ&#39;+1 { - log.Fatal(&#34;inconsistent casing for Greek&#34;) - }</pre> - -<p> -<em>Updating</em>: -Most source code will be unaffected by this because the type inference from -<code>:=</code> initializers introduces the new type silently, and it propagates -from there. -Some code may get type errors that a trivial conversion will resolve. -</p> - -<h3 id="error">The error type</h3> - -<p> -Go 1 introduces a new built-in type, <code>error</code>, which has the following definition: -</p> - -<pre> - type error interface { - Error() string - } -</pre> - -<p> -Since the consequences of this type are all in the package library, -it is discussed <a href="#errors">below</a>. -</p> - -<h3 id="delete">Deleting from maps</h3> - -<p> -In the old language, to delete the entry with key <code>k</code> from map <code>m</code>, one wrote the statement, -</p> - -<pre> - m[k] = value, false -</pre> - -<p> -This syntax was a peculiar special case, the only two-to-one assignment. -It required passing a value (usually ignored) that is evaluated but discarded, -plus a boolean that was nearly always the constant <code>false</code>. -It did the job but was odd and a point of contention. -</p> - -<p> -In Go 1, that syntax has gone; instead there is a new built-in -function, <code>delete</code>. The call -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/delete\(m, k\)/`}} ---> delete(m, k)</pre> - -<p> -will delete the map entry retrieved by the expression <code>m[k]</code>. -There is no return value. Deleting a non-existent entry is a no-op. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will convert expressions of the form <code>m[k] = value, -false</code> into <code>delete(m, k)</code> when it is clear that -the ignored value can be safely discarded from the program and -<code>false</code> refers to the predefined boolean constant. -The fix tool -will flag other uses of the syntax for inspection by the programmer. -</p> - -<h3 id="iteration">Iterating in maps</h3> - -<p> -The old language specification did not define the order of iteration for maps, -and in practice it differed across hardware platforms. -This caused tests that iterated over maps to be fragile and non-portable, with the -unpleasant property that a test might always pass on one machine but break on another. -</p> - -<p> -In Go 1, the order in which elements are visited when iterating -over a map using a <code>for</code> <code>range</code> statement -is defined to be unpredictable, even if the same loop is run multiple -times with the same map. -Code should not assume that the elements are visited in any particular order. -</p> - -<p> -This change means that code that depends on iteration order is very likely to break early and be fixed long before it becomes a problem. -Just as important, it allows the map implementation to ensure better map balancing even when programs are using range loops to select an element from a map. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/Sunday/` `/^ }/`}} ---> m := map[string]int{&#34;Sunday&#34;: 0, &#34;Monday&#34;: 1} - for name, value := range m { - <span class="comment">// This loop should not assume Sunday will be visited first.</span> - f(name, value) - }</pre> - -<p> -<em>Updating</em>: -This is one change where tools cannot help. Most existing code -will be unaffected, but some programs may break or misbehave; we -recommend manual checking of all range statements over maps to -verify they do not depend on iteration order. There were a few such -examples in the standard repository; they have been fixed. -Note that it was already incorrect to depend on the iteration order, which -was unspecified. This change codifies the unpredictability. -</p> - -<h3 id="multiple_assignment">Multiple assignment</h3> - -<p> -The language specification has long guaranteed that in assignments -the right-hand-side expressions are all evaluated before any left-hand-side expressions are assigned. -To guarantee predictable behavior, -Go 1 refines the specification further. -</p> - -<p> -If the left-hand side of the assignment -statement contains expressions that require evaluation, such as -function calls or array indexing operations, these will all be done -using the usual left-to-right rule before any variables are assigned -their value. Once everything is evaluated, the actual assignments -proceed in left-to-right order. -</p> - -<p> -These examples illustrate the behavior. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/sa :=/` `/then sc.0. = 2/`}} ---> sa := []int{1, 2, 3} - i := 0 - i, sa[i] = 1, 2 <span class="comment">// sets i = 1, sa[0] = 2</span> - - sb := []int{1, 2, 3} - j := 0 - sb[j], j = 2, 1 <span class="comment">// sets sb[0] = 2, j = 1</span> - - sc := []int{1, 2, 3} - sc[0], sc[0] = 1, 2 <span class="comment">// sets sc[0] = 1, then sc[0] = 2 (so sc[0] = 2 at end)</span></pre> - -<p> -<em>Updating</em>: -This is one change where tools cannot help, but breakage is unlikely. -No code in the standard repository was broken by this change, and code -that depended on the previous unspecified behavior was already incorrect. -</p> - -<h3 id="shadowing">Returns and shadowed variables</h3> - -<p> -A common mistake is to use <code>return</code> (without arguments) after an assignment to a variable that has the same name as a result variable but is not the same variable. -This situation is called <em>shadowing</em>: the result variable has been shadowed by another variable with the same name declared in an inner scope. -</p> - -<p> -In functions with named return values, -the Go 1 compilers disallow return statements without arguments if any of the named return values is shadowed at the point of the return statement. -(It isn't part of the specification, because this is one area we are still exploring; -the situation is analogous to the compilers rejecting functions that do not end with an explicit return statement.) -</p> - -<p> -This function implicitly returns a shadowed return value and will be rejected by the compiler: -</p> - -<pre> - func Bug() (i, j, k int) { - for i = 0; i &lt; 5; i++ { - for j := 0; j &lt; 5; j++ { // Redeclares j. - k += i*j - if k > 100 { - return // Rejected: j is shadowed here. - } - } - } - return // OK: j is not shadowed here. - } -</pre> - -<p> -<em>Updating</em>: -Code that shadows return values in this way will be rejected by the compiler and will need to be fixed by hand. -The few cases that arose in the standard repository were mostly bugs. -</p> - -<h3 id="unexported">Copying structs with unexported fields</h3> - -<p> -The old language did not allow a package to make a copy of a struct value containing unexported fields belonging to a different package. -There was, however, a required exception for a method receiver; -also, the implementations of <code>copy</code> and <code>append</code> have never honored the restriction. -</p> - -<p> -Go 1 will allow packages to copy struct values containing unexported fields from other packages. -Besides resolving the inconsistency, -this change admits a new kind of API: a package can return an opaque value without resorting to a pointer or interface. -The new implementations of <code>time.Time</code> and -<code>reflect.Value</code> are examples of types taking advantage of this new property. -</p> - -<p> -As an example, if package <code>p</code> includes the definitions, -</p> - -<pre> - type Struct struct { - Public int - secret int - } - func NewStruct(a int) Struct { // Note: not a pointer. - return Struct{a, f(a)} - } - func (s Struct) String() string { - return fmt.Sprintf("{%d (secret %d)}", s.Public, s.secret) - } -</pre> - -<p> -a package that imports <code>p</code> can assign and copy values of type -<code>p.Struct</code> at will. -Behind the scenes the unexported fields will be assigned and copied just -as if they were exported, -but the client code will never be aware of them. The code -</p> - -<pre> - import "p" - - myStruct := p.NewStruct(23) - copyOfMyStruct := myStruct - fmt.Println(myStruct, copyOfMyStruct) -</pre> - -<p> -will show that the secret field of the struct has been copied to the new value. -</p> - -<p> -<em>Updating</em>: -This is a new feature, so existing code needs no changes. -</p> - -<h3 id="equality">Equality</h3> - -<p> -Before Go 1, the language did not define equality on struct and array values. -This meant, -among other things, that structs and arrays could not be used as map keys. -On the other hand, Go did define equality on function and map values. -Function equality was problematic in the presence of closures -(when are two closures equal?) -while map equality compared pointers, not the maps' content, which was usually -not what the user would want. -</p> - -<p> -Go 1 addressed these issues. -First, structs and arrays can be compared for equality and inequality -(<code>==</code> and <code>!=</code>), -and therefore be used as map keys, -provided they are composed from elements for which equality is also defined, -using element-wise comparison. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/type Day struct/` `/Printf/`}} ---> type Day struct { - long string - short string - } - Christmas := Day{&#34;Christmas&#34;, &#34;XMas&#34;} - Thanksgiving := Day{&#34;Thanksgiving&#34;, &#34;Turkey&#34;} - holiday := map[Day]bool{ - Christmas: true, - Thanksgiving: true, - } - fmt.Printf(&#34;Christmas is a holiday: %t\n&#34;, holiday[Christmas])</pre> - -<p> -Second, Go 1 removes the definition of equality for function values, -except for comparison with <code>nil</code>. -Finally, map equality is gone too, also except for comparison with <code>nil</code>. -</p> - -<p> -Note that equality is still undefined for slices, for which the -calculation is in general infeasible. Also note that the ordered -comparison operators (<code>&lt;</code> <code>&lt;=</code> -<code>&gt;</code> <code>&gt;=</code>) are still undefined for -structs and arrays. - -<p> -<em>Updating</em>: -Struct and array equality is a new feature, so existing code needs no changes. -Existing code that depends on function or map equality will be -rejected by the compiler and will need to be fixed by hand. -Few programs will be affected, but the fix may require some -redesign. -</p> - -<h2 id="packages">The package hierarchy</h2> - -<p> -Go 1 addresses many deficiencies in the old standard library and -cleans up a number of packages, making them more internally consistent -and portable. -</p> - -<p> -This section describes how the packages have been rearranged in Go 1. -Some have moved, some have been renamed, some have been deleted. -New packages are described in later sections. -</p> - -<h3 id="hierarchy">The package hierarchy</h3> - -<p> -Go 1 has a rearranged package hierarchy that groups related items -into subdirectories. For instance, <code>utf8</code> and -<code>utf16</code> now occupy subdirectories of <code>unicode</code>. -Also, <a href="#subrepo">some packages</a> have moved into -subrepositories of -<a href="http://code.google.com/p/go"><code>code.google.com/p/go</code></a> -while <a href="#deleted">others</a> have been deleted outright. -</p> - -<table class="codetable" frame="border" summary="Moved packages"> -<colgroup align="left" width="60%"></colgroup> -<colgroup align="left" width="40%"></colgroup> -<tr> -<th align="left">Old path</th> -<th align="left">New path</th> -</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>asn1</td> <td>encoding/asn1</td></tr> -<tr><td>csv</td> <td>encoding/csv</td></tr> -<tr><td>gob</td> <td>encoding/gob</td></tr> -<tr><td>json</td> <td>encoding/json</td></tr> -<tr><td>xml</td> <td>encoding/xml</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>exp/template/html</td> <td>html/template</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>big</td> <td>math/big</td></tr> -<tr><td>cmath</td> <td>math/cmplx</td></tr> -<tr><td>rand</td> <td>math/rand</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>http</td> <td>net/http</td></tr> -<tr><td>http/cgi</td> <td>net/http/cgi</td></tr> -<tr><td>http/fcgi</td> <td>net/http/fcgi</td></tr> -<tr><td>http/httptest</td> <td>net/http/httptest</td></tr> -<tr><td>http/pprof</td> <td>net/http/pprof</td></tr> -<tr><td>mail</td> <td>net/mail</td></tr> -<tr><td>rpc</td> <td>net/rpc</td></tr> -<tr><td>rpc/jsonrpc</td> <td>net/rpc/jsonrpc</td></tr> -<tr><td>smtp</td> <td>net/smtp</td></tr> -<tr><td>url</td> <td>net/url</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>exec</td> <td>os/exec</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>scanner</td> <td>text/scanner</td></tr> -<tr><td>tabwriter</td> <td>text/tabwriter</td></tr> -<tr><td>template</td> <td>text/template</td></tr> -<tr><td>template/parse</td> <td>text/template/parse</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>utf8</td> <td>unicode/utf8</td></tr> -<tr><td>utf16</td> <td>unicode/utf16</td></tr> -</table> - -<p> -Note that the package names for the old <code>cmath</code> and -<code>exp/template/html</code> packages have changed to <code>cmplx</code> -and <code>template</code>. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update all imports and package renames for packages that -remain inside the standard repository. Programs that import packages -that are no longer in the standard repository will need to be edited -by hand. -</p> - -<h3 id="exp">The package tree exp</h3> - -<p> -Because they are not standardized, the packages under the <code>exp</code> directory will not be available in the -standard Go 1 release distributions, although they will be available in source code form -in <a href="http://code.google.com/p/go/">the repository</a> for -developers who wish to use them. -</p> - -<p> -Several packages have moved under <code>exp</code> at the time of Go 1's release: -</p> - -<ul> -<li><code>ebnf</code></li> -<li><code>html</code><sup>&#8224;</sup></li> -<li><code>go/types</code></li> -</ul> - -<p> -(<sup>&#8224;</sup>The <code>EscapeString</code> and <code>UnescapeString</code> types remain -in package <code>html</code>.) -</p> - -<p> -All these packages are available under the same names, with the prefix <code>exp/</code>: <code>exp/ebnf</code> etc. -</p> - -<p> -Also, the <code>utf8.String</code> type has been moved to its own package, <code>exp/utf8string</code>. -</p> - -<p> -Finally, the <code>gotype</code> command now resides in <code>exp/gotype</code>, while -<code>ebnflint</code> is now in <code>exp/ebnflint</code>. -If they are installed, they now reside in <code>$GOROOT/bin/tool</code>. -</p> - -<p> -<em>Updating</em>: -Code that uses packages in <code>exp</code> will need to be updated by hand, -or else compiled from an installation that has <code>exp</code> available. -The <code>go</code> <code>fix</code> tool or the compiler will complain about such uses. -</p> - -<h3 id="old">The package tree old</h3> - -<p> -Because they are deprecated, the packages under the <code>old</code> directory will not be available in the -standard Go 1 release distributions, although they will be available in source code form for -developers who wish to use them. -</p> - -<p> -The packages in their new locations are: -</p> - -<ul> -<li><code>old/netchan</code></li> -<li><code>old/regexp</code></li> -<li><code>old/template</code></li> -</ul> - -<p> -<em>Updating</em>: -Code that uses packages now in <code>old</code> will need to be updated by hand, -or else compiled from an installation that has <code>old</code> available. -The <code>go</code> <code>fix</code> tool will warn about such uses. -</p> - -<h3 id="deleted">Deleted packages</h3> - -<p> -Go 1 deletes several packages outright: -</p> - -<ul> -<li><code>container/vector</code></li> -<li><code>exp/datafmt</code></li> -<li><code>go/typechecker</code></li> -<li><code>try</code></li> -</ul> - -<p> -and also the command <code>gotry</code>. -</p> - -<p> -<em>Updating</em>: -Code that uses <code>container/vector</code> should be updated to use -slices directly. See -<a href="http://code.google.com/p/go-wiki/wiki/SliceTricks">the Go -Language Community Wiki</a> for some suggestions. -Code that uses the other packages (there should be almost zero) will need to be rethought. -</p> - -<h3 id="subrepo">Packages moving to subrepositories</h3> - -<p> -Go 1 has moved a number of packages into other repositories, usually sub-repositories of -<a href="http://code.google.com/p/go/">the main Go repository</a>. -This table lists the old and new import paths: - -<table class="codetable" frame="border" summary="Sub-repositories"> -<colgroup align="left" width="40%"></colgroup> -<colgroup align="left" width="60%"></colgroup> -<tr> -<th align="left">Old</th> -<th align="left">New</th> -</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>crypto/bcrypt</td> <td>code.google.com/p/go.crypto/bcrypt</tr> -<tr><td>crypto/blowfish</td> <td>code.google.com/p/go.crypto/blowfish</tr> -<tr><td>crypto/cast5</td> <td>code.google.com/p/go.crypto/cast5</tr> -<tr><td>crypto/md4</td> <td>code.google.com/p/go.crypto/md4</tr> -<tr><td>crypto/ocsp</td> <td>code.google.com/p/go.crypto/ocsp</tr> -<tr><td>crypto/openpgp</td> <td>code.google.com/p/go.crypto/openpgp</tr> -<tr><td>crypto/openpgp/armor</td> <td>code.google.com/p/go.crypto/openpgp/armor</tr> -<tr><td>crypto/openpgp/elgamal</td> <td>code.google.com/p/go.crypto/openpgp/elgamal</tr> -<tr><td>crypto/openpgp/errors</td> <td>code.google.com/p/go.crypto/openpgp/errors</tr> -<tr><td>crypto/openpgp/packet</td> <td>code.google.com/p/go.crypto/openpgp/packet</tr> -<tr><td>crypto/openpgp/s2k</td> <td>code.google.com/p/go.crypto/openpgp/s2k</tr> -<tr><td>crypto/ripemd160</td> <td>code.google.com/p/go.crypto/ripemd160</tr> -<tr><td>crypto/twofish</td> <td>code.google.com/p/go.crypto/twofish</tr> -<tr><td>crypto/xtea</td> <td>code.google.com/p/go.crypto/xtea</tr> -<tr><td>exp/ssh</td> <td>code.google.com/p/go.crypto/ssh</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr> -<tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>net/dict</td> <td>code.google.com/p/go.net/dict</tr> -<tr><td>net/websocket</td> <td>code.google.com/p/go.net/websocket</tr> -<tr><td>exp/spdy</td> <td>code.google.com/p/go.net/spdy</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>encoding/git85</td> <td>code.google.com/p/go.codereview/git85</tr> -<tr><td>patch</td> <td>code.google.com/p/go.codereview/patch</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>exp/wingui</td> <td>code.google.com/p/gowingui</tr> -</table> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update imports of these packages to use the new import paths. -Installations that depend on these packages will need to install them using -a <code>go get</code> command. -</p> - -<h2 id="major">Major changes to the library</h2> - -<p> -This section describes significant changes to the core libraries, the ones that -affect the most programs. -</p> - -<h3 id="errors">The error type and errors package</h3> - -<p> -The placement of <code>os.Error</code> in package <code>os</code> is mostly historical: errors first came up when implementing package <code>os</code>, and they seemed system-related at the time. -Since then it has become clear that errors are more fundamental than the operating system. For example, it would be nice to use <code>Errors</code> in packages that <code>os</code> depends on, like <code>syscall</code>. -Also, having <code>Error</code> in <code>os</code> introduces many dependencies on <code>os</code> that would otherwise not exist. -</p> - -<p> -Go 1 solves these problems by introducing a built-in <code>error</code> interface type and a separate <code>errors</code> package (analogous to <code>bytes</code> and <code>strings</code>) that contains utility functions. -It replaces <code>os.NewError</code> with -<a href="/pkg/errors/#New"><code>errors.New</code></a>, -giving errors a more central place in the environment. -</p> - -<p> -So the widely-used <code>String</code> method does not cause accidental satisfaction -of the <code>error</code> interface, the <code>error</code> interface uses instead -the name <code>Error</code> for that method: -</p> - -<pre> - type error interface { - Error() string - } -</pre> - -<p> -The <code>fmt</code> library automatically invokes <code>Error</code>, as it already -does for <code>String</code>, for easy printing of error values. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/START ERROR EXAMPLE/` `/END ERROR EXAMPLE/`}} --->type SyntaxError struct { - File string - Line int - Message string -} - -func (se *SyntaxError) Error() string { - return fmt.Sprintf(&#34;%s:%d: %s&#34;, se.File, se.Line, se.Message) -}</pre> - -<p> -All standard packages have been updated to use the new interface; the old <code>os.Error</code> is gone. -</p> - -<p> -A new package, <a href="/pkg/errors/"><code>errors</code></a>, contains the function -</p> - -<pre> -func New(text string) error -</pre> - -<p> -to turn a string into an error. It replaces the old <code>os.NewError</code>. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/ErrSyntax/`}} ---> var ErrSyntax = errors.New(&#34;syntax error&#34;)</pre> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update almost all code affected by the change. -Code that defines error types with a <code>String</code> method will need to be updated -by hand to rename the methods to <code>Error</code>. -</p> - -<h3 id="errno">System call errors</h3> - -<p> -The old <code>syscall</code> package, which predated <code>os.Error</code> -(and just about everything else), -returned errors as <code>int</code> values. -In turn, the <code>os</code> package forwarded many of these errors, such -as <code>EINVAL</code>, but using a different set of errors on each platform. -This behavior was unpleasant and unportable. -</p> - -<p> -In Go 1, the -<a href="/pkg/syscall/"><code>syscall</code></a> -package instead returns an <code>error</code> for system call errors. -On Unix, the implementation is done by a -<a href="/pkg/syscall/#Errno"><code>syscall.Errno</code></a> type -that satisfies <code>error</code> and replaces the old <code>os.Errno</code>. -</p> - -<p> -The changes affecting <code>os.EINVAL</code> and relatives are -described <a href="#os">elsewhere</a>. - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update almost all code affected by the change. -Regardless, most code should use the <code>os</code> package -rather than <code>syscall</code> and so will be unaffected. -</p> - -<h3 id="time">Time</h3> - -<p> -Time is always a challenge to support well in a programming language. -The old Go <code>time</code> package had <code>int64</code> units, no -real type safety, -and no distinction between absolute times and durations. -</p> - -<p> -One of the most sweeping changes in the Go 1 library is therefore a -complete redesign of the -<a href="/pkg/time/"><code>time</code></a> package. -Instead of an integer number of nanoseconds as an <code>int64</code>, -and a separate <code>*time.Time</code> type to deal with human -units such as hours and years, -there are now two fundamental types: -<a href="/pkg/time/#Time"><code>time.Time</code></a> -(a value, so the <code>*</code> is gone), which represents a moment in time; -and <a href="/pkg/time/#Duration"><code>time.Duration</code></a>, -which represents an interval. -Both have nanosecond resolution. -A <code>Time</code> can represent any time into the ancient -past and remote future, while a <code>Duration</code> can -span plus or minus only about 290 years. -There are methods on these types, plus a number of helpful -predefined constant durations such as <code>time.Second</code>. -</p> - -<p> -Among the new methods are things like -<a href="/pkg/time/#Time.Add"><code>Time.Add</code></a>, -which adds a <code>Duration</code> to a <code>Time</code>, and -<a href="/pkg/time/#Time.Sub"><code>Time.Sub</code></a>, -which subtracts two <code>Times</code> to yield a <code>Duration</code>. -</p> - -<p> -The most important semantic change is that the Unix epoch (Jan 1, 1970) is now -relevant only for those functions and methods that mention Unix: -<a href="/pkg/time/#Unix"><code>time.Unix</code></a> -and the <a href="/pkg/time/#Time.Unix"><code>Unix</code></a> -and <a href="/pkg/time/#Time.UnixNano"><code>UnixNano</code></a> methods -of the <code>Time</code> type. -In particular, -<a href="/pkg/time/#Now"><code>time.Now</code></a> -returns a <code>time.Time</code> value rather than, in the old -API, an integer nanosecond count since the Unix epoch. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/sleepUntil/` `/^}/`}} ---><span class="comment">// sleepUntil sleeps until the specified time. It returns immediately if it&#39;s too late.</span> -func sleepUntil(wakeup time.Time) { - now := time.Now() <span class="comment">// A Time.</span> - if !wakeup.After(now) { - return - } - delta := wakeup.Sub(now) <span class="comment">// A Duration.</span> - fmt.Printf(&#34;Sleeping for %.3fs\n&#34;, delta.Seconds()) - time.Sleep(delta) -}</pre> - -<p> -The new types, methods, and constants have been propagated through -all the standard packages that use time, such as <code>os</code> and -its representation of file time stamps. -</p> - -<p> -<em>Updating</em>: -The <code>go</code> <code>fix</code> tool will update many uses of the old <code>time</code> package to use the new -types and methods, although it does not replace values such as <code>1e9</code> -representing nanoseconds per second. -Also, because of type changes in some of the values that arise, -some of the expressions rewritten by the fix tool may require -further hand editing; in such cases the rewrite will include -the correct function or method for the old functionality, but -may have the wrong type or require further analysis. -</p> - -<h2 id="minor">Minor changes to the library</h2> - -<p> -This section describes smaller changes, such as those to less commonly -used packages or that affect -few programs beyond the need to run <code>go</code> <code>fix</code>. -This category includes packages that are new in Go 1. -Collectively they improve portability, regularize behavior, and -make the interfaces more modern and Go-like. -</p> - -<h3 id="archive_zip">The archive/zip package</h3> - -<p> -In Go 1, <a href="/pkg/archive/zip/#Writer"><code>*zip.Writer</code></a> no -longer has a <code>Write</code> method. Its presence was a mistake. -</p> - -<p> -<em>Updating</em>: -What little code is affected will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="bufio">The bufio package</h3> - -<p> -In Go 1, <a href="/pkg/bufio/#NewReaderSize"><code>bufio.NewReaderSize</code></a> -and -<a href="/pkg/bufio/#NewWriterSize"><code>bufio.NewWriterSize</code></a> -functions no longer return an error for invalid sizes. -If the argument size is too small or invalid, it is adjusted. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update calls that assign the error to _. -Calls that aren't fixed will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="compress">The compress/flate, compress/gzip and compress/zlib packages</h3> - -<p> -In Go 1, the <code>NewWriterXxx</code> functions in -<a href="/pkg/compress/flate"><code>compress/flate</code></a>, -<a href="/pkg/compress/gzip"><code>compress/gzip</code></a> and -<a href="/pkg/compress/zlib"><code>compress/zlib</code></a> -all return <code>(*Writer, error)</code> if they take a compression level, -and <code>*Writer</code> otherwise. Package <code>gzip</code>'s -<code>Compressor</code> and <code>Decompressor</code> types have been renamed -to <code>Writer</code> and <code>Reader</code>. Package <code>flate</code>'s -<code>WrongValueError</code> type has been removed. -</p> - -<p> -<em>Updating</em> -Running <code>go</code> <code>fix</code> will update old names and calls that assign the error to _. -Calls that aren't fixed will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="crypto_aes_des">The crypto/aes and crypto/des packages</h3> - -<p> -In Go 1, the <code>Reset</code> method has been removed. Go does not guarantee -that memory is not copied and therefore this method was misleading. -</p> - -<p> -The cipher-specific types <code>*aes.Cipher</code>, <code>*des.Cipher</code>, -and <code>*des.TripleDESCipher</code> have been removed in favor of -<code>cipher.Block</code>. -</p> - -<p> -<em>Updating</em>: -Remove the calls to Reset. Replace uses of the specific cipher types with -cipher.Block. -</p> - -<h3 id="crypto_elliptic">The crypto/elliptic package</h3> - -<p> -In Go 1, <a href="/pkg/crypto/elliptic/#Curve"><code>elliptic.Curve</code></a> -has been made an interface to permit alternative implementations. The curve -parameters have been moved to the -<a href="/pkg/crypto/elliptic/#CurveParams"><code>elliptic.CurveParams</code></a> -structure. -</p> - -<p> -<em>Updating</em>: -Existing users of <code>*elliptic.Curve</code> will need to change to -simply <code>elliptic.Curve</code>. Calls to <code>Marshal</code>, -<code>Unmarshal</code> and <code>GenerateKey</code> are now functions -in <code>crypto/elliptic</code> that take an <code>elliptic.Curve</code> -as their first argument. -</p> - -<h3 id="crypto_hmac">The crypto/hmac package</h3> - -<p> -In Go 1, the hash-specific functions, such as <code>hmac.NewMD5</code>, have -been removed from <code>crypto/hmac</code>. Instead, <code>hmac.New</code> takes -a function that returns a <code>hash.Hash</code>, such as <code>md5.New</code>. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will perform the needed changes. -</p> - -<h3 id="crypto_x509">The crypto/x509 package</h3> - -<p> -In Go 1, the -<a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a> -and -<a href="/pkg/crypto/x509/#CreateCRL"><code>CreateCRL</code></a> -functions in <code>crypto/x509</code> have been altered to take an -<code>interface{}</code> where they previously took a <code>*rsa.PublicKey</code> -or <code>*rsa.PrivateKey</code>. This will allow other public key algorithms -to be implemented in the future. -</p> - -<p> -<em>Updating</em>: -No changes will be needed. -</p> - -<h3 id="encoding_binary">The encoding/binary package</h3> - -<p> -In Go 1, the <code>binary.TotalSize</code> function has been replaced by -<a href="/pkg/encoding/binary/#Size"><code>Size</code></a>, -which takes an <code>interface{}</code> argument rather than -a <code>reflect.Value</code>. -</p> - -<p> -<em>Updating</em>: -What little code is affected will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="encoding_xml">The encoding/xml package</h3> - -<p> -In Go 1, the <a href="/pkg/encoding/xml/"><code>xml</code></a> package -has been brought closer in design to the other marshaling packages such -as <a href="/pkg/encoding/gob/"><code>encoding/gob</code></a>. -</p> - -<p> -The old <code>Parser</code> type is renamed -<a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> and has a new -<a href="/pkg/encoding/xml/#Decoder.Decode"><code>Decode</code></a> method. An -<a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a> type was also introduced. -</p> - -<p> -The functions <a href="/pkg/encoding/xml/#Marshal"><code>Marshal</code></a> -and <a href="/pkg/encoding/xml/#Unmarshal"><code>Unmarshal</code></a> -work with <code>[]byte</code> values now. To work with streams, -use the new <a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a> -and <a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> types. -</p> - -<p> -When marshaling or unmarshaling values, the format of supported flags in -field tags has changed to be closer to the -<a href="/pkg/encoding/json"><code>json</code></a> package -(<code>`xml:"name,flag"`</code>). The matching done between field tags, field -names, and the XML attribute and element names is now case-sensitive. -The <code>XMLName</code> field tag, if present, must also match the name -of the XML element being marshaled. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update most uses of the package except for some calls to -<code>Unmarshal</code>. Special care must be taken with field tags, -since the fix tool will not update them and if not fixed by hand they will -misbehave silently in some cases. For example, the old -<code>"attr"</code> is now written <code>",attr"</code> while plain -<code>"attr"</code> remains valid but with a different meaning. -</p> - -<h3 id="expvar">The expvar package</h3> - -<p> -In Go 1, the <code>RemoveAll</code> function has been removed. -The <code>Iter</code> function and Iter method on <code>*Map</code> have -been replaced by -<a href="/pkg/expvar/#Do"><code>Do</code></a> -and -<a href="/pkg/expvar/#Map.Do"><code>(*Map).Do</code></a>. -</p> - -<p> -<em>Updating</em>: -Most code using <code>expvar</code> will not need changing. The rare code that used -<code>Iter</code> can be updated to pass a closure to <code>Do</code> to achieve the same effect. -</p> - -<h3 id="flag">The flag package</h3> - -<p> -In Go 1, the interface <a href="/pkg/flag/#Value"><code>flag.Value</code></a> has changed slightly. -The <code>Set</code> method now returns an <code>error</code> instead of -a <code>bool</code> to indicate success or failure. -</p> - -<p> -There is also a new kind of flag, <code>Duration</code>, to support argument -values specifying time intervals. -Values for such flags must be given units, just as <code>time.Duration</code> -formats them: <code>10s</code>, <code>1h30m</code>, etc. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/timeout/`}} --->var timeout = flag.Duration(&#34;timeout&#34;, 30*time.Second, &#34;how long to wait for completion&#34;)</pre> - -<p> -<em>Updating</em>: -Programs that implement their own flags will need minor manual fixes to update their -<code>Set</code> methods. -The <code>Duration</code> flag is new and affects no existing code. -</p> - - -<h3 id="go">The go/* packages</h3> - -<p> -Several packages under <code>go</code> have slightly revised APIs. -</p> - -<p> -A concrete <code>Mode</code> type was introduced for configuration mode flags -in the packages -<a href="/pkg/go/scanner/"><code>go/scanner</code></a>, -<a href="/pkg/go/parser/"><code>go/parser</code></a>, -<a href="/pkg/go/printer/"><code>go/printer</code></a>, and -<a href="/pkg/go/doc/"><code>go/doc</code></a>. -</p> - -<p> -The modes <code>AllowIllegalChars</code> and <code>InsertSemis</code> have been removed -from the <a href="/pkg/go/scanner/"><code>go/scanner</code></a> package. They were mostly -useful for scanning text other then Go source files. Instead, the -<a href="/pkg/text/scanner/"><code>text/scanner</code></a> package should be used -for that purpose. -</p> - -<p> -The <a href="/pkg/go/scanner/#ErrorHandler"><code>ErrorHandler</code></a> provided -to the scanner's <a href="/pkg/go/scanner/#Scanner.Init"><code>Init</code></a> method is -now simply a function rather than an interface. The <code>ErrorVector</code> type has -been removed in favor of the (existing) <a href="/pkg/go/scanner/#ErrorList"><code>ErrorList</code></a> -type, and the <code>ErrorVector</code> methods have been migrated. Instead of embedding -an <code>ErrorVector</code> in a client of the scanner, now a client should maintain -an <code>ErrorList</code>. -</p> - -<p> -The set of parse functions provided by the <a href="/pkg/go/parser/"><code>go/parser</code></a> -package has been reduced to the primary parse function -<a href="/pkg/go/parser/#ParseFile"><code>ParseFile</code></a>, and a couple of -convenience functions <a href="/pkg/go/parser/#ParseDir"><code>ParseDir</code></a> -and <a href="/pkg/go/parser/#ParseExpr"><code>ParseExpr</code></a>. -</p> - -<p> -The <a href="/pkg/go/printer/"><code>go/printer</code></a> package supports an additional -configuration mode <a href="/pkg/go/printer/#Mode"><code>SourcePos</code></a>; -if set, the printer will emit <code>//line</code> comments such that the generated -output contains the original source code position information. The new type -<a href="/pkg/go/printer/#CommentedNode"><code>CommentedNode</code></a> can be -used to provide comments associated with an arbitrary -<a href="/pkg/go/ast/#Node"><code>ast.Node</code></a> (until now only -<a href="/pkg/go/ast/#File"><code>ast.File</code></a> carried comment information). -</p> - -<p> -The type names of the <a href="/pkg/go/doc/"><code>go/doc</code></a> package have been -streamlined by removing the <code>Doc</code> suffix: <code>PackageDoc</code> -is now <code>Package</code>, <code>ValueDoc</code> is <code>Value</code>, etc. -Also, all types now consistently have a <code>Name</code> field (or <code>Names</code>, -in the case of type <code>Value</code>) and <code>Type.Factories</code> has become -<code>Type.Funcs</code>. -Instead of calling <code>doc.NewPackageDoc(pkg, importpath)</code>, -documentation for a package is created with: -</p> - -<pre> - doc.New(pkg, importpath, mode) -</pre> - -<p> -where the new <code>mode</code> parameter specifies the operation mode: -if set to <a href="/pkg/go/doc/#AllDecls"><code>AllDecls</code></a>, all declarations -(not just exported ones) are considered. -The function <code>NewFileDoc</code> was removed, and the function -<code>CommentText</code> has become the method -<a href="/pkg/go/ast/#Text"><code>Text</code></a> of -<a href="/pkg/go/ast/#CommentGroup"><code>ast.CommentGroup</code></a>. -</p> - -<p> -In package <a href="/pkg/go/token/"><code>go/token</code></a>, the -<a href="/pkg/go/token/#FileSet"><code>token.FileSet</code></a> method <code>Files</code> -(which originally returned a channel of <code>*token.File</code>s) has been replaced -with the iterator <a href="/pkg/go/token/#FileSet.Iterate"><code>Iterate</code></a> that -accepts a function argument instead. -</p> - -<p> -In package <a href="/pkg/go/build/"><code>go/build</code></a>, the API -has been nearly completely replaced. -The package still computes Go package information -but it does not run the build: the <code>Cmd</code> and <code>Script</code> -types are gone. -(To build code, use the new -<a href="/cmd/go/"><code>go</code></a> command instead.) -The <code>DirInfo</code> type is now named -<a href="/pkg/go/build/#Package"><code>Package</code></a>. -<code>FindTree</code> and <code>ScanDir</code> are replaced by -<a href="/pkg/go/build/#Import"><code>Import</code></a> -and -<a href="/pkg/go/build/#ImportDir"><code>ImportDir</code></a>. -</p> - -<p> -<em>Updating</em>: -Code that uses packages in <code>go</code> will have to be updated by hand; the -compiler will reject incorrect uses. Templates used in conjunction with any of the -<code>go/doc</code> types may need manual fixes; the renamed fields will lead -to run-time errors. -</p> - -<h3 id="hash">The hash package</h3> - -<p> -In Go 1, the definition of <a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> includes -a new method, <code>BlockSize</code>. This new method is used primarily in the -cryptographic libraries. -</p> - -<p> -The <code>Sum</code> method of the -<a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> interface now takes a -<code>[]byte</code> argument, to which the hash value will be appended. -The previous behavior can be recreated by adding a <code>nil</code> argument to the call. -</p> - -<p> -<em>Updating</em>: -Existing implementations of <code>hash.Hash</code> will need to add a -<code>BlockSize</code> method. Hashes that process the input one byte at -a time can implement <code>BlockSize</code> to return 1. -Running <code>go</code> <code>fix</code> will update calls to the <code>Sum</code> methods of the various -implementations of <code>hash.Hash</code>. -</p> - -<p> -<em>Updating</em>: -Since the package's functionality is new, no updating is necessary. -</p> - -<h3 id="http">The http package</h3> - -<p> -In Go 1 the <a href="/pkg/net/http/"><code>http</code></a> package is refactored, -putting some of the utilities into a -<a href="/pkg/net/http/httputil/"><code>httputil</code></a> subdirectory. -These pieces are only rarely needed by HTTP clients. -The affected items are: -</p> - -<ul> -<li>ClientConn</li> -<li>DumpRequest</li> -<li>DumpRequestOut</li> -<li>DumpResponse</li> -<li>NewChunkedReader</li> -<li>NewChunkedWriter</li> -<li>NewClientConn</li> -<li>NewProxyClientConn</li> -<li>NewServerConn</li> -<li>NewSingleHostReverseProxy</li> -<li>ReverseProxy</li> -<li>ServerConn</li> -</ul> - -<p> -The <code>Request.RawURL</code> field has been removed; it was a -historical artifact. -</p> - -<p> -The <code>Handle</code> and <code>HandleFunc</code> -functions, and the similarly-named methods of <code>ServeMux</code>, -now panic if an attempt is made to register the same pattern twice. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update the few programs that are affected except for -uses of <code>RawURL</code>, which must be fixed by hand. -</p> - -<h3 id="image">The image package</h3> - -<p> -The <a href="/pkg/image/"><code>image</code></a> package has had a number of -minor changes, rearrangements and renamings. -</p> - -<p> -Most of the color handling code has been moved into its own package, -<a href="/pkg/image/color/"><code>image/color</code></a>. -For the elements that moved, a symmetry arises; for instance, -each pixel of an -<a href="/pkg/image/#RGBA"><code>image.RGBA</code></a> -is a -<a href="/pkg/image/color/#RGBA"><code>color.RGBA</code></a>. -</p> - -<p> -The old <code>image/ycbcr</code> package has been folded, with some -renamings, into the -<a href="/pkg/image/"><code>image</code></a> -and -<a href="/pkg/image/color/"><code>image/color</code></a> -packages. -</p> - -<p> -The old <code>image.ColorImage</code> type is still in the <code>image</code> -package but has been renamed -<a href="/pkg/image/#Uniform"><code>image.Uniform</code></a>, -while <code>image.Tiled</code> has been removed. -</p> - -<p> -This table lists the renamings. -</p> - -<table class="codetable" frame="border" summary="image renames"> -<colgroup align="left" width="50%"></colgroup> -<colgroup align="left" width="50%"></colgroup> -<tr> -<th align="left">Old</th> -<th align="left">New</th> -</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image.Color</td> <td>color.Color</td></tr> -<tr><td>image.ColorModel</td> <td>color.Model</td></tr> -<tr><td>image.ColorModelFunc</td> <td>color.ModelFunc</td></tr> -<tr><td>image.PalettedColorModel</td> <td>color.Palette</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image.RGBAColor</td> <td>color.RGBA</td></tr> -<tr><td>image.RGBA64Color</td> <td>color.RGBA64</td></tr> -<tr><td>image.NRGBAColor</td> <td>color.NRGBA</td></tr> -<tr><td>image.NRGBA64Color</td> <td>color.NRGBA64</td></tr> -<tr><td>image.AlphaColor</td> <td>color.Alpha</td></tr> -<tr><td>image.Alpha16Color</td> <td>color.Alpha16</td></tr> -<tr><td>image.GrayColor</td> <td>color.Gray</td></tr> -<tr><td>image.Gray16Color</td> <td>color.Gray16</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image.RGBAColorModel</td> <td>color.RGBAModel</td></tr> -<tr><td>image.RGBA64ColorModel</td> <td>color.RGBA64Model</td></tr> -<tr><td>image.NRGBAColorModel</td> <td>color.NRGBAModel</td></tr> -<tr><td>image.NRGBA64ColorModel</td> <td>color.NRGBA64Model</td></tr> -<tr><td>image.AlphaColorModel</td> <td>color.AlphaModel</td></tr> -<tr><td>image.Alpha16ColorModel</td> <td>color.Alpha16Model</td></tr> -<tr><td>image.GrayColorModel</td> <td>color.GrayModel</td></tr> -<tr><td>image.Gray16ColorModel</td> <td>color.Gray16Model</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>ycbcr.RGBToYCbCr</td> <td>color.RGBToYCbCr</td></tr> -<tr><td>ycbcr.YCbCrToRGB</td> <td>color.YCbCrToRGB</td></tr> -<tr><td>ycbcr.YCbCrColorModel</td> <td>color.YCbCrModel</td></tr> -<tr><td>ycbcr.YCbCrColor</td> <td>color.YCbCr</td></tr> -<tr><td>ycbcr.YCbCr</td> <td>image.YCbCr</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>ycbcr.SubsampleRatio444</td> <td>image.YCbCrSubsampleRatio444</td></tr> -<tr><td>ycbcr.SubsampleRatio422</td> <td>image.YCbCrSubsampleRatio422</td></tr> -<tr><td>ycbcr.SubsampleRatio420</td> <td>image.YCbCrSubsampleRatio420</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>image.ColorImage</td> <td>image.Uniform</td></tr> -</table> - -<p> -The image package's <code>New</code> functions -(<a href="/pkg/image/#NewRGBA"><code>NewRGBA</code></a>, -<a href="/pkg/image/#NewRGBA64"><code>NewRGBA64</code></a>, etc.) -take an <a href="/pkg/image/#Rectangle"><code>image.Rectangle</code></a> as an argument -instead of four integers. -</p> - -<p> -Finally, there are new predefined <code>color.Color</code> variables -<a href="/pkg/image/color/#Black"><code>color.Black</code></a>, -<a href="/pkg/image/color/#White"><code>color.White</code></a>, -<a href="/pkg/image/color/#Opaque"><code>color.Opaque</code></a> -and -<a href="/pkg/image/color/#Transparent"><code>color.Transparent</code></a>. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update almost all code affected by the change. -</p> - -<h3 id="log_syslog">The log/syslog package</h3> - -<p> -In Go 1, the <a href="/pkg/log/syslog/#NewLogger"><code>syslog.NewLogger</code></a> -function returns an error as well as a <code>log.Logger</code>. -</p> - -<p> -<em>Updating</em>: -What little code is affected will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="mime">The mime package</h3> - -<p> -In Go 1, the <a href="/pkg/mime/#FormatMediaType"><code>FormatMediaType</code></a> function -of the <code>mime</code> package has been simplified to make it -consistent with -<a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>. -It now takes <code>"text/html"</code> rather than <code>"text"</code> and <code>"html"</code>. -</p> - -<p> -<em>Updating</em>: -What little code is affected will be caught by the compiler and must be updated by hand. -</p> - -<h3 id="net">The net package</h3> - -<p> -In Go 1, the various <code>SetTimeout</code>, -<code>SetReadTimeout</code>, and <code>SetWriteTimeout</code> methods -have been replaced with -<a href="/pkg/net/#IPConn.SetDeadline"><code>SetDeadline</code></a>, -<a href="/pkg/net/#IPConn.SetReadDeadline"><code>SetReadDeadline</code></a>, and -<a href="/pkg/net/#IPConn.SetWriteDeadline"><code>SetWriteDeadline</code></a>, -respectively. Rather than taking a timeout value in nanoseconds that -apply to any activity on the connection, the new methods set an -absolute deadline (as a <code>time.Time</code> value) after which -reads and writes will time out and no longer block. -</p> - -<p> -There are also new functions -<a href="/pkg/net/#DialTimeout"><code>net.DialTimeout</code></a> -to simplify timing out dialing a network address and -<a href="/pkg/net/#ListenMulticastUDP"><code>net.ListenMulticastUDP</code></a> -to allow multicast UDP to listen concurrently across multiple listeners. -The <code>net.ListenMulticastUDP</code> function replaces the old -<code>JoinGroup</code> and <code>LeaveGroup</code> methods. -</p> - -<p> -<em>Updating</em>: -Code that uses the old methods will fail to compile and must be updated by hand. -The semantic change makes it difficult for the fix tool to update automatically. -</p> - -<h3 id="os">The os package</h3> - -<p> -The <code>Time</code> function has been removed; callers should use -the <a href="/pkg/time/#Time"><code>Time</code></a> type from the -<code>time</code> package. -</p> - -<p> -The <code>Exec</code> function has been removed; callers should use -<code>Exec</code> from the <code>syscall</code> package, where available. -</p> - -<p> -The <code>ShellExpand</code> function has been renamed to <a -href="/pkg/os/#ExpandEnv"><code>ExpandEnv</code></a>. -</p> - -<p> -The <a href="/pkg/os/#NewFile"><code>NewFile</code></a> function -now takes a <code>uintptr</code> fd, instead of an <code>int</code>. -The <a href="/pkg/os/#File.Fd"><code>Fd</code></a> method on files now -also returns a <code>uintptr</code>. -</p> - -<p> -There are no longer error constants such as <code>EINVAL</code> -in the <code>os</code> package, since the set of values varied with -the underlying operating system. There are new portable functions like -<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a> -to test common error properties, plus a few new error values -with more Go-like names, such as -<a href="/pkg/os/#ErrPermission"><code>ErrPermission</code></a> -and -<a href="/pkg/os/#ErrNoEnv"><code>ErrNoEnv</code></a>. -</p> - -<p> -The <code>Getenverror</code> function has been removed. To distinguish -between a non-existent environment variable and an empty string, -use <a href="/pkg/os/#Environ"><code>os.Environ</code></a> or -<a href="/pkg/syscall/#Getenv"><code>syscall.Getenv</code></a>. -</p> - - -<p> -The <a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a> method has -dropped its option argument and the associated constants are gone -from the package. -Also, the function <code>Wait</code> is gone; only the method of -the <code>Process</code> type persists. -</p> - -<p> -The <code>Waitmsg</code> type returned by -<a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a> -has been replaced with a more portable -<a href="/pkg/os/#ProcessState"><code>ProcessState</code></a> -type with accessor methods to recover information about the -process. -Because of changes to <code>Wait</code>, the <code>ProcessState</code> -value always describes an exited process. -Portability concerns simplified the interface in other ways, but the values returned by the -<a href="/pkg/os/#ProcessState.Sys"><code>ProcessState.Sys</code></a> and -<a href="/pkg/os/#ProcessState.SysUsage"><code>ProcessState.SysUsage</code></a> -methods can be type-asserted to underlying system-specific data structures such as -<a href="/pkg/syscall/#WaitStatus"><code>syscall.WaitStatus</code></a> and -<a href="/pkg/syscall/#Rusage"><code>syscall.Rusage</code></a> on Unix. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will drop a zero argument to <code>Process.Wait</code>. -All other changes will be caught by the compiler and must be updated by hand. -</p> - -<h4 id="os_fileinfo">The os.FileInfo type</h4> - -<p> -Go 1 redefines the <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a> type, -changing it from a struct to an interface: -</p> - -<pre> - type FileInfo interface { - Name() string // base name of the file - Size() int64 // length in bytes - Mode() FileMode // file mode bits - ModTime() time.Time // modification time - IsDir() bool // abbreviation for Mode().IsDir() - Sys() interface{} // underlying data source (can return nil) - } -</pre> - -<p> -The file mode information has been moved into a subtype called -<a href="/pkg/os/#FileMode"><code>os.FileMode</code></a>, -a simple integer type with <code>IsDir</code>, <code>Perm</code>, and <code>String</code> -methods. -</p> - -<p> -The system-specific details of file modes and properties such as (on Unix) -i-number have been removed from <code>FileInfo</code> altogether. -Instead, each operating system's <code>os</code> package provides an -implementation of the <code>FileInfo</code> interface, which -has a <code>Sys</code> method that returns the -system-specific representation of file metadata. -For instance, to discover the i-number of a file on a Unix system, unpack -the <code>FileInfo</code> like this: -</p> - -<pre> - fi, err := os.Stat("hello.go") - if err != nil { - log.Fatal(err) - } - // Check that it's a Unix file. - unixStat, ok := fi.Sys().(*syscall.Stat_t) - if !ok { - log.Fatal("hello.go: not a Unix file") - } - fmt.Printf("file i-number: %d\n", unixStat.Ino) -</pre> - -<p> -Assuming (which is unwise) that <code>"hello.go"</code> is a Unix file, -the i-number expression could be contracted to -</p> - -<pre> - fi.Sys().(*syscall.Stat_t).Ino -</pre> - -<p> -The vast majority of uses of <code>FileInfo</code> need only the methods -of the standard interface. -</p> - -<p> -The <code>os</code> package no longer contains wrappers for the POSIX errors -such as <code>ENOENT</code>. -For the few programs that need to verify particular error conditions, there are -now the boolean functions -<a href="/pkg/os/#IsExist"><code>IsExist</code></a>, -<a href="/pkg/os/#IsNotExist"><code>IsNotExist</code></a> -and -<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/os\.Open/` `/}/`}} ---> f, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600) - if os.IsExist(err) { - log.Printf(&#34;%s already exists&#34;, name) - }</pre> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update code that uses the old equivalent of the current <code>os.FileInfo</code> -and <code>os.FileMode</code> API. -Code that needs system-specific file details will need to be updated by hand. -Code that uses the old POSIX error values from the <code>os</code> package -will fail to compile and will also need to be updated by hand. -</p> - -<h3 id="os_signal">The os/signal package</h3> - -<p> -The <code>os/signal</code> package in Go 1 replaces the -<code>Incoming</code> function, which returned a channel -that received all incoming signals, -with the selective <code>Notify</code> function, which asks -for delivery of specific signals on an existing channel. -</p> - -<p> -<em>Updating</em>: -Code must be updated by hand. -A literal translation of -</p> -<pre> -c := signal.Incoming() -</pre> -<p> -is -</p> -<pre> -c := make(chan os.Signal) -signal.Notify(c) // ask for all signals -</pre> -<p> -but most code should list the specific signals it wants to handle instead: -</p> -<pre> -c := make(chan os.Signal) -signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT) -</pre> - -<h3 id="path_filepath">The path/filepath package</h3> - -<p> -In Go 1, the <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a> function of the -<code>path/filepath</code> package -has been changed to take a function value of type -<a href="/pkg/path/filepath/#WalkFunc"><code>WalkFunc</code></a> -instead of a <code>Visitor</code> interface value. -<code>WalkFunc</code> unifies the handling of both files and directories. -</p> - -<pre> - type WalkFunc func(path string, info os.FileInfo, err error) error -</pre> - -<p> -The <code>WalkFunc</code> function will be called even for files or directories that could not be opened; -in such cases the error argument will describe the failure. -If a directory's contents are to be skipped, -the function should return the value <a href="/pkg/path/filepath/#variables"><code>filepath.SkipDir</code></a> -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/STARTWALK/` `/ENDWALK/`}} ---> markFn := func(path string, info os.FileInfo, err error) error { - if path == &#34;pictures&#34; { <span class="comment">// Will skip walking of directory pictures and its contents.</span> - return filepath.SkipDir - } - if err != nil { - return err - } - log.Println(path) - return nil - } - err := filepath.Walk(&#34;.&#34;, markFn) - if err != nil { - log.Fatal(err) - }</pre> - -<p> -<em>Updating</em>: -The change simplifies most code but has subtle consequences, so affected programs -will need to be updated by hand. -The compiler will catch code using the old interface. -</p> - -<h3 id="regexp">The regexp package</h3> - -<p> -The <a href="/pkg/regexp/"><code>regexp</code></a> package has been rewritten. -It has the same interface but the specification of the regular expressions -it supports has changed from the old "egrep" form to that of -<a href="http://code.google.com/p/re2/">RE2</a>. -</p> - -<p> -<em>Updating</em>: -Code that uses the package should have its regular expressions checked by hand. -</p> - -<h3 id="runtime">The runtime package</h3> - -<p> -In Go 1, much of the API exported by package -<code>runtime</code> has been removed in favor of -functionality provided by other packages. -Code using the <code>runtime.Type</code> interface -or its specific concrete type implementations should -now use package <a href="/pkg/reflect/"><code>reflect</code></a>. -Code using <code>runtime.Semacquire</code> or <code>runtime.Semrelease</code> -should use channels or the abstractions in package <a href="/pkg/sync/"><code>sync</code></a>. -The <code>runtime.Alloc</code>, <code>runtime.Free</code>, -and <code>runtime.Lookup</code> functions, an unsafe API created for -debugging the memory allocator, have no replacement. -</p> - -<p> -Before, <code>runtime.MemStats</code> was a global variable holding -statistics about memory allocation, and calls to <code>runtime.UpdateMemStats</code> -ensured that it was up to date. -In Go 1, <code>runtime.MemStats</code> is a struct type, and code should use -<a href="/pkg/runtime/#ReadMemStats"><code>runtime.ReadMemStats</code></a> -to obtain the current statistics. -</p> - -<p> -The package adds a new function, -<a href="/pkg/runtime/#NumCPU"><code>runtime.NumCPU</code></a>, that returns the number of CPUs available -for parallel execution, as reported by the operating system kernel. -Its value can inform the setting of <code>GOMAXPROCS</code>. -The <code>runtime.Cgocalls</code> and <code>runtime.Goroutines</code> functions -have been renamed to <code>runtime.NumCgoCall</code> and <code>runtime.NumGoroutine</code>. -</p> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update code for the function renamings. -Other code will need to be updated by hand. -</p> - -<h3 id="strconv">The strconv package</h3> - -<p> -In Go 1, the -<a href="/pkg/strconv/"><code>strconv</code></a> -package has been significantly reworked to make it more Go-like and less C-like, -although <code>Atoi</code> lives on (it's similar to -<code>int(ParseInt(x, 10, 0))</code>, as does -<code>Itoa(x)</code> (<code>FormatInt(int64(x), 10)</code>). -There are also new variants of some of the functions that append to byte slices rather than -return strings, to allow control over allocation. -</p> - -<p> -This table summarizes the renamings; see the -<a href="/pkg/strconv/">package documentation</a> -for full details. -</p> - -<table class="codetable" frame="border" summary="strconv renames"> -<colgroup align="left" width="50%"></colgroup> -<colgroup align="left" width="50%"></colgroup> -<tr> -<th align="left">Old call</th> -<th align="left">New call</th> -</tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Atob(x)</td> <td>ParseBool(x)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Atof32(x)</td> <td>ParseFloat(x, 32)§</td></tr> -<tr><td>Atof64(x)</td> <td>ParseFloat(x, 64)</td></tr> -<tr><td>AtofN(x, n)</td> <td>ParseFloat(x, n)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Atoi(x)</td> <td>Atoi(x)</td></tr> -<tr><td>Atoi(x)</td> <td>ParseInt(x, 10, 0)§</td></tr> -<tr><td>Atoi64(x)</td> <td>ParseInt(x, 10, 64)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Atoui(x)</td> <td>ParseUint(x, 10, 0)§</td></tr> -<tr><td>Atoui64(x)</td> <td>ParseUint(x, 10, 64)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Btoi64(x, b)</td> <td>ParseInt(x, b, 64)</td></tr> -<tr><td>Btoui64(x, b)</td> <td>ParseUint(x, b, 64)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Btoa(x)</td> <td>FormatBool(x)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Ftoa32(x, f, p)</td> <td>FormatFloat(float64(x), f, p, 32)</td></tr> -<tr><td>Ftoa64(x, f, p)</td> <td>FormatFloat(x, f, p, 64)</td></tr> -<tr><td>FtoaN(x, f, p, n)</td> <td>FormatFloat(x, f, p, n)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Itoa(x)</td> <td>Itoa(x)</td></tr> -<tr><td>Itoa(x)</td> <td>FormatInt(int64(x), 10)</td></tr> -<tr><td>Itoa64(x)</td> <td>FormatInt(x, 10)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Itob(x, b)</td> <td>FormatInt(int64(x), b)</td></tr> -<tr><td>Itob64(x, b)</td> <td>FormatInt(x, b)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Uitoa(x)</td> <td>FormatUint(uint64(x), 10)</td></tr> -<tr><td>Uitoa64(x)</td> <td>FormatUint(x, 10)</td></tr> -<tr> -<td colspan="2"><hr></td> -</tr> -<tr><td>Uitob(x, b)</td> <td>FormatUint(uint64(x), b)</td></tr> -<tr><td>Uitob64(x, b)</td> <td>FormatUint(x, b)</td></tr> -</table> - -<p> -<em>Updating</em>: -Running <code>go</code> <code>fix</code> will update almost all code affected by the change. -<br> -§ <code>Atoi</code> persists but <code>Atoui</code> and <code>Atof32</code> do not, so -they may require -a cast that must be added by hand; the <code>go</code> <code>fix</code> tool will warn about it. -</p> - - -<h3 id="templates">The template packages</h3> - -<p> -The <code>template</code> and <code>exp/template/html</code> packages have moved to -<a href="/pkg/text/template/"><code>text/template</code></a> and -<a href="/pkg/html/template/"><code>html/template</code></a>. -More significant, the interface to these packages has been simplified. -The template language is the same, but the concept of "template set" is gone -and the functions and methods of the packages have changed accordingly, -often by elimination. -</p> - -<p> -Instead of sets, a <code>Template</code> object -may contain multiple named template definitions, -in effect constructing -name spaces for template invocation. -A template can invoke any other template associated with it, but only those -templates associated with it. -The simplest way to associate templates is to parse them together, something -made easier with the new structure of the packages. -</p> - -<p> -<em>Updating</em>: -The imports will be updated by fix tool. -Single-template uses will be otherwise be largely unaffected. -Code that uses multiple templates in concert will need to be updated by hand. -The <a href="/pkg/text/template/#examples">examples</a> in -the documentation for <code>text/template</code> can provide guidance. -</p> - -<h3 id="testing">The testing package</h3> - -<p> -The testing package has a type, <code>B</code>, passed as an argument to benchmark functions. -In Go 1, <code>B</code> has new methods, analogous to those of <code>T</code>, enabling -logging and failure reporting. -</p> - -<pre><!--{{code "/doc/progs/go1.go" `/func.*Benchmark/` `/^}/`}} --->func BenchmarkSprintf(b *testing.B) { - <span class="comment">// Verify correctness before running benchmark.</span> - b.StopTimer() - got := fmt.Sprintf(&#34;%x&#34;, 23) - const expect = &#34;17&#34; - if expect != got { - b.Fatalf(&#34;expected %q; got %q&#34;, expect, got) - } - b.StartTimer() - for i := 0; i &lt; b.N; i++ { - fmt.Sprintf(&#34;%x&#34;, 23) - } -}</pre> - -<p> -<em>Updating</em>: -Existing code is unaffected, although benchmarks that use <code>println</code> -or <code>panic</code> should be updated to use the new methods. -</p> - -<h3 id="testing_script">The testing/script package</h3> - -<p> -The testing/script package has been deleted. It was a dreg. -</p> - -<p> -<em>Updating</em>: -No code is likely to be affected. -</p> - -<h3 id="unsafe">The unsafe package</h3> - -<p> -In Go 1, the functions -<code>unsafe.Typeof</code>, <code>unsafe.Reflect</code>, -<code>unsafe.Unreflect</code>, <code>unsafe.New</code>, and -<code>unsafe.NewArray</code> have been removed; -they duplicated safer functionality provided by -package <a href="/pkg/reflect/"><code>reflect</code></a>. -</p> - -<p> -<em>Updating</em>: -Code using these functions must be rewritten to use -package <a href="/pkg/reflect/"><code>reflect</code></a>. -The changes to <a href="http://code.google.com/p/go/source/detail?r=2646dc956207">encoding/gob</a> and the <a href="http://code.google.com/p/goprotobuf/source/detail?r=5340ad310031">protocol buffer library</a> -may be helpful as examples. -</p> - -<h3 id="url">The url package</h3> - -<p> -In Go 1 several fields from the <a href="/pkg/net/url/#URL"><code>url.URL</code></a> type -were removed or replaced. -</p> - -<p> -The <a href="/pkg/net/url/#URL.String"><code>String</code></a> method now -predictably rebuilds an encoded URL string using all of <code>URL</code>'s -fields as necessary. The resulting string will also no longer have -passwords escaped. -</p> - -<p> -The <code>Raw</code> field has been removed. In most cases the <code>String</code> -method may be used in its place. -</p> - -<p> -The old <code>RawUserinfo</code> field is replaced by the <code>User</code> -field, of type <a href="/pkg/net/url/#Userinfo"><code>*net.Userinfo</code></a>. -Values of this type may be created using the new <a href="/pkg/net/url/#User"><code>net.User</code></a> -and <a href="/pkg/net/url/#UserPassword"><code>net.UserPassword</code></a> -functions. The <code>EscapeUserinfo</code> and <code>UnescapeUserinfo</code> -functions are also gone. -</p> - -<p> -The <code>RawAuthority</code> field has been removed. The same information is -available in the <code>Host</code> and <code>User</code> fields. -</p> - -<p> -The <code>RawPath</code> field and the <code>EncodedPath</code> method have -been removed. The path information in rooted URLs (with a slash following the -schema) is now available only in decoded form in the <code>Path</code> field. -Occasionally, the encoded data may be required to obtain information that -was lost in the decoding process. These cases must be handled by accessing -the data the URL was built from. -</p> - -<p> -URLs with non-rooted paths, such as <code>"mailto:dev@golang.org?subject=Hi"</code>, -are also handled differently. The <code>OpaquePath</code> boolean field has been -removed and a new <code>Opaque</code> string field introduced to hold the encoded -path for such URLs. In Go 1, the cited URL parses as: -</p> - -<pre> - URL{ - Scheme: "mailto", - Opaque: "dev@golang.org", - RawQuery: "subject=Hi", - } -</pre> - -<p> -A new <a href="/pkg/net/url/#URL.RequestURI"><code>RequestURI</code></a> method was -added to <code>URL</code>. -</p> - -<p> -The <code>ParseWithReference</code> function has been renamed to <code>ParseWithFragment</code>. -</p> - -<p> -<em>Updating</em>: -Code that uses the old fields will fail to compile and must be updated by hand. -The semantic changes make it difficult for the fix tool to update automatically. -</p> - -<h2 id="cmd_go">The go command</h2> - -<p> -Go 1 introduces the <a href="/cmd/go/">go command</a>, a tool for fetching, -building, and installing Go packages and commands. The <code>go</code> command -does away with makefiles, instead using Go source code to find dependencies and -determine build conditions. Most existing Go programs will no longer require -makefiles to be built. -</p> - -<p> -See <a href="/doc/code.html">How to Write Go Code</a> for a primer on the -<code>go</code> command and the <a href="/cmd/go/">go command documentation</a> -for the full details. -</p> - -<p> -<em>Updating</em>: -Projects that depend on the Go project's old makefile-based build -infrastructure (<code>Make.pkg</code>, <code>Make.cmd</code>, and so on) should -switch to using the <code>go</code> command for building Go code and, if -necessary, rewrite their makefiles to perform any auxiliary build tasks. -</p> - -<h2 id="cmd_cgo">The cgo command</h2> - -<p> -In Go 1, the <a href="/cmd/cgo">cgo command</a> -uses a different <code>_cgo_export.h</code> -file, which is generated for packages containing <code>//export</code> lines. -The <code>_cgo_export.h</code> file now begins with the C preamble comment, -so that exported function definitions can use types defined there. -This has the effect of compiling the preamble multiple times, so a -package using <code>//export</code> must not put function definitions -or variable initializations in the C preamble. -</p> - -<h2 id="releases">Packaged releases</h2> - -<p> -One of the most significant changes associated with Go 1 is the availability -of prepackaged, downloadable distributions. -They are available for many combinations of architecture and operating system -(including Windows) and the list will grow. -Installation details are described on the -<a href="/doc/install">Getting Started</a> page, while -the distributions themselves are listed on the -<a href="http://code.google.com/p/go/downloads/list">downloads page</a>. - - -</div> - -<div id="footer"> -Build version go1.0.1.<br> -A link <a href="http://code.google.com/policies.html#restrictions">noted</a>, -and then, coming up on the very next line, we will -find yet another link, link 3.0 if you will, -after a few more words <a href="/LINK">link text</a>.<br> -<a href="/doc/tos.html">Terms of Service</a> | -<a href="http://www.google.com/intl/en/privacy/privacy-policy.html">Privacy Policy</a> -</div> - -<script type="text/javascript"> -(function() { - var ga = document.createElement("script"); ga.type = "text/javascript"; ga.async = true; - ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js"; - var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ga, s); -})(); -</script> -</body> -<script type="text/javascript"> - (function() { - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - })(); -</script> -</html> - diff --git a/vendor/golang.org/x/net/html/testdata/webkit/README b/vendor/golang.org/x/net/html/testdata/webkit/README deleted file mode 100644 index 9b4c2d8b..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/README +++ /dev/null @@ -1,28 +0,0 @@ -The *.dat files in this directory are copied from The WebKit Open Source -Project, specifically $WEBKITROOT/LayoutTests/html5lib/resources. -WebKit is licensed under a BSD style license. -http://webkit.org/coding/bsd-license.html says: - -Copyright (C) 2009 Apple Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS "AS IS" AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/vendor/golang.org/x/net/html/testdata/webkit/adoption01.dat b/vendor/golang.org/x/net/html/testdata/webkit/adoption01.dat deleted file mode 100644 index 787e1b01..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/adoption01.dat +++ /dev/null @@ -1,194 +0,0 @@ -#data -<a><p></a></p> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <p> -| <a> - -#data -<a>1<p>2</a>3</p> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| "1" -| <p> -| <a> -| "2" -| "3" - -#data -<a>1<button>2</a>3</button> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| "1" -| <button> -| <a> -| "2" -| "3" - -#data -<a>1<b>2</a>3</b> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| "1" -| <b> -| "2" -| <b> -| "3" - -#data -<a>1<div>2<div>3</a>4</div>5</div> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| "1" -| <div> -| <a> -| "2" -| <div> -| <a> -| "3" -| "4" -| "5" - -#data -<table><a>1<p>2</a>3</p> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| "1" -| <p> -| <a> -| "2" -| "3" -| <table> - -#data -<b><b><a><p></a> -#errors -#document -| <html> -| <head> -| <body> -| <b> -| <b> -| <a> -| <p> -| <a> - -#data -<b><a><b><p></a> -#errors -#document -| <html> -| <head> -| <body> -| <b> -| <a> -| <b> -| <b> -| <p> -| <a> - -#data -<a><b><b><p></a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <b> -| <b> -| <b> -| <b> -| <p> -| <a> - -#data -<p>1<s id="A">2<b id="B">3</p>4</s>5</b> -#errors -#document -| <html> -| <head> -| <body> -| <p> -| "1" -| <s> -| id="A" -| "2" -| <b> -| id="B" -| "3" -| <s> -| id="A" -| <b> -| id="B" -| "4" -| <b> -| id="B" -| "5" - -#data -<table><a>1<td>2</td>3</table> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| "1" -| <a> -| "3" -| <table> -| <tbody> -| <tr> -| <td> -| "2" - -#data -<table>A<td>B</td>C</table> -#errors -#document -| <html> -| <head> -| <body> -| "AC" -| <table> -| <tbody> -| <tr> -| <td> -| "B" - -#data -<a><svg><tr><input></a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <svg svg> -| <svg tr> -| <svg input> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/adoption02.dat b/vendor/golang.org/x/net/html/testdata/webkit/adoption02.dat deleted file mode 100644 index d18151b4..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/adoption02.dat +++ /dev/null @@ -1,31 +0,0 @@ -#data -<b>1<i>2<p>3</b>4 -#errors -#document -| <html> -| <head> -| <body> -| <b> -| "1" -| <i> -| "2" -| <i> -| <p> -| <b> -| "3" -| "4" - -#data -<a><div><style></style><address><a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <div> -| <a> -| <style> -| <address> -| <a> -| <a> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/comments01.dat b/vendor/golang.org/x/net/html/testdata/webkit/comments01.dat deleted file mode 100644 index 44f18768..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/comments01.dat +++ /dev/null @@ -1,135 +0,0 @@ -#data -FOO<!-- BAR -->BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- BAR --> -| "BAZ" - -#data -FOO<!-- BAR --!>BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- BAR --> -| "BAZ" - -#data -FOO<!-- BAR -- >BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- BAR -- >BAZ --> - -#data -FOO<!-- BAR -- <QUX> -- MUX -->BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- BAR -- <QUX> -- MUX --> -| "BAZ" - -#data -FOO<!-- BAR -- <QUX> -- MUX --!>BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- BAR -- <QUX> -- MUX --> -| "BAZ" - -#data -FOO<!-- BAR -- <QUX> -- MUX -- >BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- BAR -- <QUX> -- MUX -- >BAZ --> - -#data -FOO<!---->BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- --> -| "BAZ" - -#data -FOO<!--->BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- --> -| "BAZ" - -#data -FOO<!-->BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- --> -| "BAZ" - -#data -<?xml version="1.0">Hi -#errors -#document -| <!-- ?xml version="1.0" --> -| <html> -| <head> -| <body> -| "Hi" - -#data -<?xml version="1.0"> -#errors -#document -| <!-- ?xml version="1.0" --> -| <html> -| <head> -| <body> - -#data -<?xml version -#errors -#document -| <!-- ?xml version --> -| <html> -| <head> -| <body> - -#data -FOO<!----->BAZ -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <!-- - --> -| "BAZ" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/doctype01.dat b/vendor/golang.org/x/net/html/testdata/webkit/doctype01.dat deleted file mode 100644 index ae457328..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/doctype01.dat +++ /dev/null @@ -1,370 +0,0 @@ -#data -<!DOCTYPE html>Hello -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!dOctYpE HtMl>Hello -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPEhtml>Hello -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE>Hello -#errors -#document -| <!DOCTYPE > -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE >Hello -#errors -#document -| <!DOCTYPE > -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato >Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato taco>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato taco "ddd>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato sYstEM>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato sYstEM >Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato sYstEM ggg>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato SYSTEM taco >Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato SYSTEM 'taco"'>Hello -#errors -#document -| <!DOCTYPE potato "" "taco""> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato SYSTEM "taco">Hello -#errors -#document -| <!DOCTYPE potato "" "taco"> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato SYSTEM "tai'co">Hello -#errors -#document -| <!DOCTYPE potato "" "tai'co"> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato SYSTEMtaco "ddd">Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato grass SYSTEM taco>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato pUbLIc>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato pUbLIc >Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato pUbLIcgoof>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato PUBLIC goof>Hello -#errors -#document -| <!DOCTYPE potato> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato PUBLIC "go'of">Hello -#errors -#document -| <!DOCTYPE potato "go'of" ""> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato PUBLIC 'go'of'>Hello -#errors -#document -| <!DOCTYPE potato "go" ""> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato PUBLIC 'go:hh of' >Hello -#errors -#document -| <!DOCTYPE potato "go:hh of" ""> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE potato PUBLIC "W3C-//dfdf" SYSTEM ggg>Hello -#errors -#document -| <!DOCTYPE potato "W3C-//dfdf" ""> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" - "http://www.w3.org/TR/html4/strict.dtd">Hello -#errors -#document -| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE ...>Hello -#errors -#document -| <!DOCTYPE ...> -| <html> -| <head> -| <body> -| "Hello" - -#data -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -#errors -#document -| <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> -#errors -#document -| <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE root-element [SYSTEM OR PUBLIC FPI] "uri" [ -<!-- internal declarations --> -]> -#errors -#document -| <!DOCTYPE root-element> -| <html> -| <head> -| <body> -| "]>" - -#data -<!DOCTYPE html PUBLIC - "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" - "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> -#errors -#document -| <!DOCTYPE html "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE HTML SYSTEM "http://www.w3.org/DTD/HTML4-strict.dtd"><body><b>Mine!</b></body> -#errors -#document -| <!DOCTYPE html "" "http://www.w3.org/DTD/HTML4-strict.dtd"> -| <html> -| <head> -| <body> -| <b> -| "Mine!" - -#data -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> -#errors -#document -| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'http://www.w3.org/TR/html4/strict.dtd'> -#errors -#document -| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01//EN"'http://www.w3.org/TR/html4/strict.dtd'> -#errors -#document -| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE HTML PUBLIC'-//W3C//DTD HTML 4.01//EN''http://www.w3.org/TR/html4/strict.dtd'> -#errors -#document -| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> -| <html> -| <head> -| <body> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/entities01.dat b/vendor/golang.org/x/net/html/testdata/webkit/entities01.dat deleted file mode 100644 index c8073b78..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/entities01.dat +++ /dev/null @@ -1,603 +0,0 @@ -#data -FOO&gt;BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO>BAR" - -#data -FOO&gtBAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO>BAR" - -#data -FOO&gt BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO> BAR" - -#data -FOO&gt;;;BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO>;;BAR" - -#data -I'm &notit; I tell you -#errors -#document -| <html> -| <head> -| <body> -| "I'm ¬it; I tell you" - -#data -I'm &notin; I tell you -#errors -#document -| <html> -| <head> -| <body> -| "I'm ∉ I tell you" - -#data -FOO& BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO& BAR" - -#data -FOO&<BAR> -#errors -#document -| <html> -| <head> -| <body> -| "FOO&" -| <bar> - -#data -FOO&&&&gt;BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO&&&>BAR" - -#data -FOO&#41;BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO)BAR" - -#data -FOO&#x41;BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOOABAR" - -#data -FOO&#X41;BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOOABAR" - -#data -FOO&#BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO&#BAR" - -#data -FOO&#ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO&#ZOO" - -#data -FOO&#xBAR -#errors -#document -| <html> -| <head> -| <body> -| "FOOºR" - -#data -FOO&#xZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO&#xZOO" - -#data -FOO&#XZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO&#XZOO" - -#data -FOO&#41BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO)BAR" - -#data -FOO&#x41BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO䆺R" - -#data -FOO&#x41ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOAZOO" - -#data -FOO&#x0000;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO�ZOO" - -#data -FOO&#x0078;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOxZOO" - -#data -FOO&#x0079;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOyZOO" - -#data -FOO&#x0080;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO€ZOO" - -#data -FOO&#x0081;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOZOO" - -#data -FOO&#x0082;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO‚ZOO" - -#data -FOO&#x0083;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOƒZOO" - -#data -FOO&#x0084;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO„ZOO" - -#data -FOO&#x0085;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO…ZOO" - -#data -FOO&#x0086;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO†ZOO" - -#data -FOO&#x0087;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO‡ZOO" - -#data -FOO&#x0088;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOˆZOO" - -#data -FOO&#x0089;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO‰ZOO" - -#data -FOO&#x008A;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOŠZOO" - -#data -FOO&#x008B;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO‹ZOO" - -#data -FOO&#x008C;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOŒZOO" - -#data -FOO&#x008D;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOZOO" - -#data -FOO&#x008E;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOŽZOO" - -#data -FOO&#x008F;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOZOO" - -#data -FOO&#x0090;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOZOO" - -#data -FOO&#x0091;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO‘ZOO" - -#data -FOO&#x0092;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO’ZOO" - -#data -FOO&#x0093;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO“ZOO" - -#data -FOO&#x0094;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO”ZOO" - -#data -FOO&#x0095;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO•ZOO" - -#data -FOO&#x0096;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO–ZOO" - -#data -FOO&#x0097;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO—ZOO" - -#data -FOO&#x0098;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO˜ZOO" - -#data -FOO&#x0099;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO™ZOO" - -#data -FOO&#x009A;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOšZOO" - -#data -FOO&#x009B;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO›ZOO" - -#data -FOO&#x009C;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOœZOO" - -#data -FOO&#x009D;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOZOO" - -#data -FOO&#x009E;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOžZOO" - -#data -FOO&#x009F;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOŸZOO" - -#data -FOO&#x00A0;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO ZOO" - -#data -FOO&#xD7FF;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO퟿ZOO" - -#data -FOO&#xD800;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO�ZOO" - -#data -FOO&#xD801;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO�ZOO" - -#data -FOO&#xDFFE;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO�ZOO" - -#data -FOO&#xDFFF;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO�ZOO" - -#data -FOO&#xE000;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOOZOO" - -#data -FOO&#x10FFFE;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO􏿾ZOO" - -#data -FOO&#x1087D4;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO􈟔ZOO" - -#data -FOO&#x10FFFF;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO􏿿ZOO" - -#data -FOO&#x110000;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO�ZOO" - -#data -FOO&#xFFFFFF;ZOO -#errors -#document -| <html> -| <head> -| <body> -| "FOO�ZOO" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/entities02.dat b/vendor/golang.org/x/net/html/testdata/webkit/entities02.dat deleted file mode 100644 index e2fb42a0..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/entities02.dat +++ /dev/null @@ -1,249 +0,0 @@ -#data -<div bar="ZZ&gt;YY"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ>YY" - -#data -<div bar="ZZ&"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&" - -#data -<div bar='ZZ&'></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&" - -#data -<div bar=ZZ&></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&" - -#data -<div bar="ZZ&gt=YY"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&gt=YY" - -#data -<div bar="ZZ&gt0YY"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&gt0YY" - -#data -<div bar="ZZ&gt9YY"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&gt9YY" - -#data -<div bar="ZZ&gtaYY"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&gtaYY" - -#data -<div bar="ZZ&gtZYY"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&gtZYY" - -#data -<div bar="ZZ&gt YY"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ> YY" - -#data -<div bar="ZZ&gt"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ>" - -#data -<div bar='ZZ&gt'></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ>" - -#data -<div bar=ZZ&gt></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ>" - -#data -<div bar="ZZ&pound_id=23"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ£_id=23" - -#data -<div bar="ZZ&prod_id=23"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&prod_id=23" - -#data -<div bar="ZZ&pound;_id=23"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ£_id=23" - -#data -<div bar="ZZ&prod;_id=23"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ∏_id=23" - -#data -<div bar="ZZ&pound=23"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&pound=23" - -#data -<div bar="ZZ&prod=23"></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| bar="ZZ&prod=23" - -#data -<div>ZZ&pound_id=23</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "ZZ£_id=23" - -#data -<div>ZZ&prod_id=23</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "ZZ&prod_id=23" - -#data -<div>ZZ&pound;_id=23</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "ZZ£_id=23" - -#data -<div>ZZ&prod;_id=23</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "ZZ∏_id=23" - -#data -<div>ZZ&pound=23</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "ZZ£=23" - -#data -<div>ZZ&prod=23</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "ZZ&prod=23" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/html5test-com.dat b/vendor/golang.org/x/net/html/testdata/webkit/html5test-com.dat deleted file mode 100644 index d7cb71db..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/html5test-com.dat +++ /dev/null @@ -1,246 +0,0 @@ -#data -<div<div> -#errors -#document -| <html> -| <head> -| <body> -| <div<div> - -#data -<div foo<bar=''> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| foo<bar="" - -#data -<div foo=`bar`> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| foo="`bar`" - -#data -<div \"foo=''> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| \"foo="" - -#data -<a href='\nbar'></a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| href="\nbar" - -#data -<!DOCTYPE html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> - -#data -&lang;&rang; -#errors -#document -| <html> -| <head> -| <body> -| "⟨⟩" - -#data -&apos; -#errors -#document -| <html> -| <head> -| <body> -| "'" - -#data -&ImaginaryI; -#errors -#document -| <html> -| <head> -| <body> -| "ⅈ" - -#data -&Kopf; -#errors -#document -| <html> -| <head> -| <body> -| "𝕂" - -#data -&notinva; -#errors -#document -| <html> -| <head> -| <body> -| "∉" - -#data -<?import namespace="foo" implementation="#bar"> -#errors -#document -| <!-- ?import namespace="foo" implementation="#bar" --> -| <html> -| <head> -| <body> - -#data -<!--foo--bar--> -#errors -#document -| <!-- foo--bar --> -| <html> -| <head> -| <body> - -#data -<![CDATA[x]]> -#errors -#document -| <!-- [CDATA[x]] --> -| <html> -| <head> -| <body> - -#data -<textarea><!--</textarea>--></textarea> -#errors -#document -| <html> -| <head> -| <body> -| <textarea> -| "<!--" -| "-->" - -#data -<textarea><!--</textarea>--> -#errors -#document -| <html> -| <head> -| <body> -| <textarea> -| "<!--" -| "-->" - -#data -<style><!--</style>--></style> -#errors -#document -| <html> -| <head> -| <style> -| "<!--" -| <body> -| "-->" - -#data -<style><!--</style>--> -#errors -#document -| <html> -| <head> -| <style> -| "<!--" -| <body> -| "-->" - -#data -<ul><li>A </li> <li>B</li></ul> -#errors -#document -| <html> -| <head> -| <body> -| <ul> -| <li> -| "A " -| " " -| <li> -| "B" - -#data -<table><form><input type=hidden><input></form><div></div></table> -#errors -#document -| <html> -| <head> -| <body> -| <input> -| <div> -| <table> -| <form> -| <input> -| type="hidden" - -#data -<i>A<b>B<p></i>C</b>D -#errors -#document -| <html> -| <head> -| <body> -| <i> -| "A" -| <b> -| "B" -| <b> -| <p> -| <b> -| <i> -| "C" -| "D" - -#data -<div></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> - -#data -<svg></svg> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> - -#data -<math></math> -#errors -#document -| <html> -| <head> -| <body> -| <math math> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/inbody01.dat b/vendor/golang.org/x/net/html/testdata/webkit/inbody01.dat deleted file mode 100644 index 3f2bd374..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/inbody01.dat +++ /dev/null @@ -1,43 +0,0 @@ -#data -<button>1</foo> -#errors -#document -| <html> -| <head> -| <body> -| <button> -| "1" - -#data -<foo>1<p>2</foo> -#errors -#document -| <html> -| <head> -| <body> -| <foo> -| "1" -| <p> -| "2" - -#data -<dd>1</foo> -#errors -#document -| <html> -| <head> -| <body> -| <dd> -| "1" - -#data -<foo>1<dd>2</foo> -#errors -#document -| <html> -| <head> -| <body> -| <foo> -| "1" -| <dd> -| "2" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/isindex.dat b/vendor/golang.org/x/net/html/testdata/webkit/isindex.dat deleted file mode 100644 index 88325ffe..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/isindex.dat +++ /dev/null @@ -1,40 +0,0 @@ -#data -<isindex> -#errors -#document -| <html> -| <head> -| <body> -| <form> -| <hr> -| <label> -| "This is a searchable index. Enter search keywords: " -| <input> -| name="isindex" -| <hr> - -#data -<isindex name="A" action="B" prompt="C" foo="D"> -#errors -#document -| <html> -| <head> -| <body> -| <form> -| action="B" -| <hr> -| <label> -| "C" -| <input> -| foo="D" -| name="isindex" -| <hr> - -#data -<form><isindex> -#errors -#document -| <html> -| <head> -| <body> -| <form> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat b/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat deleted file mode 100644 index a5ebb1eb..00000000 Binary files a/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat and /dev/null differ diff --git a/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat b/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat deleted file mode 100644 index 5a920846..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/pending-spec-changes.dat +++ /dev/null @@ -1,52 +0,0 @@ -#data -<input type="hidden"><frameset> -#errors -21: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -31: “frameset” start tag seen. -31: End of file seen and there were open elements. -#document -| <html> -| <head> -| <frameset> - -#data -<!DOCTYPE html><table><caption><svg>foo</table>bar -#errors -47: End tag “table” did not match the name of the current open element (“svg”). -47: “table” closed but “caption” was still open. -47: End tag “table” seen, but there were open elements. -36: Unclosed element “svg”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <svg svg> -| "foo" -| "bar" - -#data -<table><tr><td><svg><desc><td></desc><circle> -#errors -7: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -30: A table cell was implicitly closed, but there were open elements. -26: Unclosed element “desc”. -20: Unclosed element “svg”. -37: Stray end tag “desc”. -45: End of file seen and there were open elements. -45: Unclosed element “circle”. -7: Unclosed element “table”. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <svg svg> -| <svg desc> -| <td> -| <circle> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat b/vendor/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat deleted file mode 100644 index 04cc11fb..00000000 Binary files a/vendor/golang.org/x/net/html/testdata/webkit/plain-text-unsafe.dat and /dev/null differ diff --git a/vendor/golang.org/x/net/html/testdata/webkit/scriptdata01.dat b/vendor/golang.org/x/net/html/testdata/webkit/scriptdata01.dat deleted file mode 100644 index 76b67f4b..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/scriptdata01.dat +++ /dev/null @@ -1,308 +0,0 @@ -#data -FOO<script>'Hello'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'Hello'" -| "BAR" - -#data -FOO<script></script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "BAR" - -#data -FOO<script></script >BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "BAR" - -#data -FOO<script></script/>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "BAR" - -#data -FOO<script></script/ >BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "BAR" - -#data -FOO<script type="text/plain"></scriptx>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "</scriptx>BAR" - -#data -FOO<script></script foo=">" dd>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "BAR" - -#data -FOO<script>'<'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<'" -| "BAR" - -#data -FOO<script>'<!'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!'" -| "BAR" - -#data -FOO<script>'<!-'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!-'" -| "BAR" - -#data -FOO<script>'<!--'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!--'" -| "BAR" - -#data -FOO<script>'<!---'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!---'" -| "BAR" - -#data -FOO<script>'<!-->'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!-->'" -| "BAR" - -#data -FOO<script>'<!-->'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!-->'" -| "BAR" - -#data -FOO<script>'<!-- potato'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!-- potato'" -| "BAR" - -#data -FOO<script>'<!-- <sCrIpt'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!-- <sCrIpt'" -| "BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt>'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt>'</script>BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt> -'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt> -'</script>BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt> --'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt> --'</script>BAR" - -#data -FOO<script>'<!-- <sCrIpt> -->'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| "'<!-- <sCrIpt> -->'" -| "BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt> --!>'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt> --!>'</script>BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt> -- >'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt> -- >'</script>BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt '</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt '</script>BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt/'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt/'</script>BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt\'</script>BAR -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt\'" -| "BAR" - -#data -FOO<script type="text/plain">'<!-- <sCrIpt/'</script>BAR</script>QUX -#errors -#document -| <html> -| <head> -| <body> -| "FOO" -| <script> -| type="text/plain" -| "'<!-- <sCrIpt/'</script>BAR" -| "QUX" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat b/vendor/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat deleted file mode 100644 index 4e08d0e8..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/scripted/adoption01.dat +++ /dev/null @@ -1,15 +0,0 @@ -#data -<p><b id="A"><script>document.getElementById("A").id = "B"</script></p>TEXT</b> -#errors -#document -| <html> -| <head> -| <body> -| <p> -| <b> -| id="B" -| <script> -| "document.getElementById("A").id = "B"" -| <b> -| id="A" -| "TEXT" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat b/vendor/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat deleted file mode 100644 index ef4a41ca..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/scripted/webkit01.dat +++ /dev/null @@ -1,28 +0,0 @@ -#data -1<script>document.write("2")</script>3 -#errors -#document -| <html> -| <head> -| <body> -| "1" -| <script> -| "document.write("2")" -| "23" - -#data -1<script>document.write("<script>document.write('2')</scr"+ "ipt><script>document.write('3')</scr" + "ipt>")</script>4 -#errors -#document -| <html> -| <head> -| <body> -| "1" -| <script> -| "document.write("<script>document.write('2')</scr"+ "ipt><script>document.write('3')</scr" + "ipt>")" -| <script> -| "document.write('2')" -| "2" -| <script> -| "document.write('3')" -| "34" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tables01.dat b/vendor/golang.org/x/net/html/testdata/webkit/tables01.dat deleted file mode 100644 index c4b47e48..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tables01.dat +++ /dev/null @@ -1,212 +0,0 @@ -#data -<table><th> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <th> - -#data -<table><td> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> - -#data -<table><col foo='bar'> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <colgroup> -| <col> -| foo="bar" - -#data -<table><colgroup></html>foo -#errors -#document -| <html> -| <head> -| <body> -| "foo" -| <table> -| <colgroup> - -#data -<table></table><p>foo -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <p> -| "foo" - -#data -<table></body></caption></col></colgroup></html></tbody></td></tfoot></th></thead></tr><td> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> - -#data -<table><select><option>3</select></table> -#errors -#document -| <html> -| <head> -| <body> -| <select> -| <option> -| "3" -| <table> - -#data -<table><select><table></table></select></table> -#errors -#document -| <html> -| <head> -| <body> -| <select> -| <table> -| <table> - -#data -<table><select></table> -#errors -#document -| <html> -| <head> -| <body> -| <select> -| <table> - -#data -<table><select><option>A<tr><td>B</td></tr></table> -#errors -#document -| <html> -| <head> -| <body> -| <select> -| <option> -| "A" -| <table> -| <tbody> -| <tr> -| <td> -| "B" - -#data -<table><td></body></caption></col></colgroup></html>foo -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| "foo" - -#data -<table><td>A</table>B -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| "A" -| "B" - -#data -<table><tr><caption> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <caption> - -#data -<table><tr></body></caption></col></colgroup></html></td></th><td>foo -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| "foo" - -#data -<table><td><tr> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <tr> - -#data -<table><td><button><td> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <button> -| <td> - -#data -<table><tr><td><svg><desc><td> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <svg svg> -| <svg desc> -| <td> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests1.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests1.dat deleted file mode 100644 index cbf8bdda..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests1.dat +++ /dev/null @@ -1,1952 +0,0 @@ -#data -Test -#errors -Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "Test" - -#data -<p>One<p>Two -#errors -Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <p> -| "One" -| <p> -| "Two" - -#data -Line1<br>Line2<br>Line3<br>Line4 -#errors -Line: 1 Col: 5 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "Line1" -| <br> -| "Line2" -| <br> -| "Line3" -| <br> -| "Line4" - -#data -<html> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<head> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<body> -#errors -Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<html><head> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<html><head></head> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<html><head></head><body> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<html><head></head><body></body> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<html><head><body></body></html> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<html><head></body></html> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -Line: 1 Col: 19 Unexpected end tag (body). -Line: 1 Col: 26 Unexpected end tag (html). -#document -| <html> -| <head> -| <body> - -#data -<html><head><body></html> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<html><body></html> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<body></html> -#errors -Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<head></html> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -Line: 1 Col: 13 Unexpected end tag (html). Ignored. -#document -| <html> -| <head> -| <body> - -#data -</head> -#errors -Line: 1 Col: 7 Unexpected end tag (head). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -</body> -#errors -Line: 1 Col: 7 Unexpected end tag (body). Expected DOCTYPE. -Line: 1 Col: 7 Unexpected end tag (body) after the (implied) root element. -#document -| <html> -| <head> -| <body> - -#data -</html> -#errors -Line: 1 Col: 7 Unexpected end tag (html). Expected DOCTYPE. -Line: 1 Col: 7 Unexpected end tag (html) after the (implied) root element. -#document -| <html> -| <head> -| <body> - -#data -<b><table><td><i></table> -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 25 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 25 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| <table> -| <tbody> -| <tr> -| <td> -| <i> - -#data -<b><table><td></b><i></table>X -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 18 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 29 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 30 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| <table> -| <tbody> -| <tr> -| <td> -| <i> -| "X" - -#data -<h1>Hello<h2>World -#errors -4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -13: Heading cannot be a child of another heading. -18: End of file seen and there were open elements. -#document -| <html> -| <head> -| <body> -| <h1> -| "Hello" -| <h2> -| "World" - -#data -<a><p>X<a>Y</a>Z</p></a> -#errors -Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 10 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 10 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 24 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm. -#document -| <html> -| <head> -| <body> -| <a> -| <p> -| <a> -| "X" -| <a> -| "Y" -| "Z" - -#data -<b><button>foo</b>bar -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 15 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -#document -| <html> -| <head> -| <body> -| <b> -| <button> -| <b> -| "foo" -| "bar" - -#data -<!DOCTYPE html><span><button>foo</span>bar -#errors -39: End tag “span” seen but there were unclosed elements. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <span> -| <button> -| "foobar" - -#data -<p><b><div><marquee></p></b></div>X -#errors -Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end tag (p). Ignored. -Line: 1 Col: 24 Unexpected end tag (p). Ignored. -Line: 1 Col: 28 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 34 End tag (div) seen too early. Expected other end tag. -Line: 1 Col: 35 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <p> -| <b> -| <div> -| <b> -| <marquee> -| <p> -| "X" - -#data -<script><div></script></div><title><p></title><p><p> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 28 Unexpected end tag (div). Ignored. -#document -| <html> -| <head> -| <script> -| "<div>" -| <title> -| "<p>" -| <body> -| <p> -| <p> - -#data -<!--><div>--<!--> -#errors -Line: 1 Col: 5 Incorrect comment. -Line: 1 Col: 10 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 17 Incorrect comment. -Line: 1 Col: 17 Expected closing tag. Unexpected end of file. -#document -| <!-- --> -| <html> -| <head> -| <body> -| <div> -| "--" -| <!-- --> - -#data -<p><hr></p> -#errors -Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end tag (p). Ignored. -#document -| <html> -| <head> -| <body> -| <p> -| <hr> -| <p> - -#data -<select><b><option><select><option></b></select>X -#errors -Line: 1 Col: 8 Unexpected start tag (select). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected start tag token (b) in the select phase. Ignored. -Line: 1 Col: 27 Unexpected select start tag in the select phase treated as select end tag. -Line: 1 Col: 39 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 48 Unexpected end tag (select). Ignored. -Line: 1 Col: 49 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <select> -| <option> -| <option> -| "X" - -#data -<a><table><td><a><table></table><a></tr><a></table><b>X</b>C<a>Y -#errors -Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 40 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 43 Unexpected start tag (a) in table context caused voodoo mode. -Line: 1 Col: 43 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 43 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 51 Unexpected implied end tag (a) in the table phase. -Line: 1 Col: 63 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 64 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <a> -| <a> -| <table> -| <tbody> -| <tr> -| <td> -| <a> -| <table> -| <a> -| <a> -| <b> -| "X" -| "C" -| <a> -| "Y" - -#data -<a X>0<b>1<a Y>2 -#errors -Line: 1 Col: 5 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 15 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 16 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <a> -| x="" -| "0" -| <b> -| "1" -| <b> -| <a> -| y="" -| "2" - -#data -<!-----><font><div>hello<table>excite!<b>me!<th><i>please!</tr><!--X--> -#errors -Line: 1 Col: 7 Unexpected '-' after '--' found in comment. -Line: 1 Col: 14 Unexpected start tag (font). Expected DOCTYPE. -Line: 1 Col: 38 Unexpected non-space characters in table context caused voodoo mode. -Line: 1 Col: 41 Unexpected start tag (b) in table context caused voodoo mode. -Line: 1 Col: 48 Unexpected implied end tag (b) in the table phase. -Line: 1 Col: 48 Unexpected table cell start tag (th) in the table body phase. -Line: 1 Col: 63 Got table cell end tag (th) while required end tags are missing. -Line: 1 Col: 71 Unexpected end of file. Expected table content. -#document -| <!-- - --> -| <html> -| <head> -| <body> -| <font> -| <div> -| "helloexcite!" -| <b> -| "me!" -| <table> -| <tbody> -| <tr> -| <th> -| <i> -| "please!" -| <!-- X --> - -#data -<!DOCTYPE html><li>hello<li>world<ul>how<li>do</ul>you</body><!--do--> -#errors -Line: 1 Col: 61 Unexpected end tag (li). Missing end tag (body). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <li> -| "hello" -| <li> -| "world" -| <ul> -| "how" -| <li> -| "do" -| "you" -| <!-- do --> - -#data -<!DOCTYPE html>A<option>B<optgroup>C<select>D</option>E -#errors -Line: 1 Col: 54 Unexpected end tag (option) in the select phase. Ignored. -Line: 1 Col: 55 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "A" -| <option> -| "B" -| <optgroup> -| "C" -| <select> -| "DE" - -#data -< -#errors -Line: 1 Col: 1 Expected tag name. Got something else instead -Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "<" - -#data -<# -#errors -Line: 1 Col: 1 Expected tag name. Got something else instead -Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "<#" - -#data -</ -#errors -Line: 1 Col: 2 Expected closing tag. Unexpected end of file. -Line: 1 Col: 2 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "</" - -#data -</# -#errors -Line: 1 Col: 2 Expected closing tag. Unexpected character '#' found. -Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- # --> -| <html> -| <head> -| <body> - -#data -<? -#errors -Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.) -Line: 1 Col: 2 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- ? --> -| <html> -| <head> -| <body> - -#data -<?# -#errors -Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.) -Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- ?# --> -| <html> -| <head> -| <body> - -#data -<! -#errors -Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found. -Line: 1 Col: 2 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- --> -| <html> -| <head> -| <body> - -#data -<!# -#errors -Line: 1 Col: 3 Expected '--' or 'DOCTYPE'. Not found. -Line: 1 Col: 3 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- # --> -| <html> -| <head> -| <body> - -#data -<?COMMENT?> -#errors -Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.) -Line: 1 Col: 11 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- ?COMMENT? --> -| <html> -| <head> -| <body> - -#data -<!COMMENT> -#errors -Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found. -Line: 1 Col: 10 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- COMMENT --> -| <html> -| <head> -| <body> - -#data -</ COMMENT > -#errors -Line: 1 Col: 2 Expected closing tag. Unexpected character ' ' found. -Line: 1 Col: 12 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- COMMENT --> -| <html> -| <head> -| <body> - -#data -<?COM--MENT?> -#errors -Line: 1 Col: 1 Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.) -Line: 1 Col: 13 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- ?COM--MENT? --> -| <html> -| <head> -| <body> - -#data -<!COM--MENT> -#errors -Line: 1 Col: 2 Expected '--' or 'DOCTYPE'. Not found. -Line: 1 Col: 12 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- COM--MENT --> -| <html> -| <head> -| <body> - -#data -</ COM--MENT > -#errors -Line: 1 Col: 2 Expected closing tag. Unexpected character ' ' found. -Line: 1 Col: 14 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- COM--MENT --> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html><style> EOF -#errors -Line: 1 Col: 26 Unexpected end of file. Expected end tag (style). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| " EOF" -| <body> - -#data -<!DOCTYPE html><script> <!-- </script> --> </script> EOF -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| " <!-- " -| " " -| <body> -| "--> EOF" - -#data -<b><p></b>TEST -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 10 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -#document -| <html> -| <head> -| <body> -| <b> -| <p> -| <b> -| "TEST" - -#data -<p id=a><b><p id=b></b>TEST -#errors -Line: 1 Col: 8 Unexpected start tag (p). Expected DOCTYPE. -Line: 1 Col: 19 Unexpected end tag (p). Ignored. -Line: 1 Col: 23 End tag (b) violates step 1, paragraph 2 of the adoption agency algorithm. -#document -| <html> -| <head> -| <body> -| <p> -| id="a" -| <b> -| <p> -| id="b" -| "TEST" - -#data -<b id=a><p><b id=b></p></b>TEST -#errors -Line: 1 Col: 8 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 23 Unexpected end tag (p). Ignored. -Line: 1 Col: 27 End tag (b) violates step 1, paragraph 2 of the adoption agency algorithm. -Line: 1 Col: 31 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| id="a" -| <p> -| <b> -| id="b" -| "TEST" - -#data -<!DOCTYPE html><title>U-test</title><body><div><p>Test<u></p></div></body> -#errors -Line: 1 Col: 61 Unexpected end tag (p). Ignored. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <title> -| "U-test" -| <body> -| <div> -| <p> -| "Test" -| <u> - -#data -<!DOCTYPE html><font><table></font></table></font> -#errors -Line: 1 Col: 35 Unexpected end tag (font) in table context caused voodoo mode. -Line: 1 Col: 35 End tag (font) violates step 1, paragraph 1 of the adoption agency algorithm. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <font> -| <table> - -#data -<font><p>hello<b>cruel</font>world -#errors -Line: 1 Col: 6 Unexpected start tag (font). Expected DOCTYPE. -Line: 1 Col: 29 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 29 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 34 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <font> -| <p> -| <font> -| "hello" -| <b> -| "cruel" -| <b> -| "world" - -#data -<b>Test</i>Test -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 11 End tag (i) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 15 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| "TestTest" - -#data -<b>A<cite>B<div>C -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 17 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| "A" -| <cite> -| "B" -| <div> -| "C" - -#data -<b>A<cite>B<div>C</cite>D -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 24 Unexpected end tag (cite). Ignored. -Line: 1 Col: 25 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| "A" -| <cite> -| "B" -| <div> -| "CD" - -#data -<b>A<cite>B<div>C</b>D -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 21 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 22 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| "A" -| <cite> -| "B" -| <div> -| <b> -| "C" -| "D" - -#data - -#errors -Line: 1 Col: 0 Unexpected End of file. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<DIV> -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 5 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> - -#data -<DIV> abc -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 9 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc" - -#data -<DIV> abc <B> -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 13 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> - -#data -<DIV> abc <B> def -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 17 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def" - -#data -<DIV> abc <B> def <I> -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 21 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> - -#data -<DIV> abc <B> def <I> ghi -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 25 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi" - -#data -<DIV> abc <B> def <I> ghi <P> -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 29 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi " -| <p> - -#data -<DIV> abc <B> def <I> ghi <P> jkl -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 33 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi " -| <p> -| " jkl" - -#data -<DIV> abc <B> def <I> ghi <P> jkl </B> -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 38 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi " -| <i> -| <p> -| <b> -| " jkl " - -#data -<DIV> abc <B> def <I> ghi <P> jkl </B> mno -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 42 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi " -| <i> -| <p> -| <b> -| " jkl " -| " mno" - -#data -<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 47 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi " -| <i> -| <p> -| <i> -| <b> -| " jkl " -| " mno " - -#data -<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 51 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi " -| <i> -| <p> -| <i> -| <b> -| " jkl " -| " mno " -| " pqr" - -#data -<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr </P> -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 56 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi " -| <i> -| <p> -| <i> -| <b> -| " jkl " -| " mno " -| " pqr " - -#data -<DIV> abc <B> def <I> ghi <P> jkl </B> mno </I> pqr </P> stu -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 38 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 47 End tag (i) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 60 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " abc " -| <b> -| " def " -| <i> -| " ghi " -| <i> -| <p> -| <i> -| <b> -| " jkl " -| " mno " -| " pqr " -| " stu" - -#data -<test attribute----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> -#errors -Line: 1 Col: 1040 Unexpected start tag (test). Expected DOCTYPE. -Line: 1 Col: 1040 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <test> -| attribute----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------="" - -#data -<a href="blah">aba<table><a href="foo">br<tr><td></td></tr>x</table>aoe -#errors -Line: 1 Col: 15 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 39 Unexpected start tag (a) in table context caused voodoo mode. -Line: 1 Col: 39 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 39 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 45 Unexpected implied end tag (a) in the table phase. -Line: 1 Col: 68 Unexpected implied end tag (a) in the table phase. -Line: 1 Col: 71 Expected closing tag. Unexpected end of file. - -#document -| <html> -| <head> -| <body> -| <a> -| href="blah" -| "aba" -| <a> -| href="foo" -| "br" -| <a> -| href="foo" -| "x" -| <table> -| <tbody> -| <tr> -| <td> -| <a> -| href="foo" -| "aoe" - -#data -<a href="blah">aba<table><tr><td><a href="foo">br</td></tr>x</table>aoe -#errors -Line: 1 Col: 15 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 54 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 60 Unexpected non-space characters in table context caused voodoo mode. -Line: 1 Col: 71 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <a> -| href="blah" -| "abax" -| <table> -| <tbody> -| <tr> -| <td> -| <a> -| href="foo" -| "br" -| "aoe" - -#data -<table><a href="blah">aba<tr><td><a href="foo">br</td></tr>x</table>aoe -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 22 Unexpected start tag (a) in table context caused voodoo mode. -Line: 1 Col: 29 Unexpected implied end tag (a) in the table phase. -Line: 1 Col: 54 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 68 Unexpected implied end tag (a) in the table phase. -Line: 1 Col: 71 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <a> -| href="blah" -| "aba" -| <a> -| href="blah" -| "x" -| <table> -| <tbody> -| <tr> -| <td> -| <a> -| href="foo" -| "br" -| <a> -| href="blah" -| "aoe" - -#data -<a href=a>aa<marquee>aa<a href=b>bb</marquee>aa -#errors -Line: 1 Col: 10 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 45 End tag (marquee) seen too early. Expected other end tag. -Line: 1 Col: 47 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <a> -| href="a" -| "aa" -| <marquee> -| "aa" -| <a> -| href="b" -| "bb" -| "aa" - -#data -<wbr><strike><code></strike><code><strike></code> -#errors -Line: 1 Col: 5 Unexpected start tag (wbr). Expected DOCTYPE. -Line: 1 Col: 28 End tag (strike) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 49 Unexpected end tag (code). Ignored. -#document -| <html> -| <head> -| <body> -| <wbr> -| <strike> -| <code> -| <code> -| <code> -| <strike> - -#data -<!DOCTYPE html><spacer>foo -#errors -26: End of file seen and there were open elements. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <spacer> -| "foo" - -#data -<title><meta></title><link><title><meta></title> -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -#document -| <html> -| <head> -| <title> -| "<meta>" -| <link> -| <title> -| "<meta>" -| <body> - -#data -<style><!--</style><meta><script>--><link></script> -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -Line: 1 Col: 51 Unexpected end of file. Expected end tag (style). -#document -| <html> -| <head> -| <style> -| "<!--" -| <meta> -| <script> -| "--><link>" -| <body> - -#data -<head><meta></head><link> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -Line: 1 Col: 25 Unexpected start tag (link) that can be in head. Moved. -#document -| <html> -| <head> -| <meta> -| <link> -| <body> - -#data -<table><tr><tr><td><td><span><th><span>X</table> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 33 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 48 Got table cell end tag (th) while required end tags are missing. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <tr> -| <td> -| <td> -| <span> -| <th> -| <span> -| "X" - -#data -<body><body><base><link><meta><title><p></title><body><p></body> -#errors -Line: 1 Col: 6 Unexpected start tag (body). Expected DOCTYPE. -Line: 1 Col: 12 Unexpected start tag (body). -Line: 1 Col: 54 Unexpected start tag (body). -Line: 1 Col: 64 Unexpected end tag (p). Missing end tag (body). -#document -| <html> -| <head> -| <body> -| <base> -| <link> -| <meta> -| <title> -| "<p>" -| <p> - -#data -<textarea><p></textarea> -#errors -Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <textarea> -| "<p>" - -#data -<p><image></p> -#errors -Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE. -Line: 1 Col: 10 Unexpected start tag (image). Treated as img. -#document -| <html> -| <head> -| <body> -| <p> -| <img> - -#data -<a><table><a></table><p><a><div><a> -#errors -Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 13 Unexpected start tag (a) in table context caused voodoo mode. -Line: 1 Col: 13 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 13 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 21 Unexpected end tag (table). Expected end tag (a). -Line: 1 Col: 27 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 27 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm. -Line: 1 Col: 32 Unexpected end tag (p). Ignored. -Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 35 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm. -Line: 1 Col: 35 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <a> -| <a> -| <table> -| <p> -| <a> -| <div> -| <a> - -#data -<head></p><meta><p> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -Line: 1 Col: 10 Unexpected end tag (p). Ignored. -#document -| <html> -| <head> -| <meta> -| <body> -| <p> - -#data -<head></html><meta><p> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -Line: 1 Col: 19 Unexpected start tag (meta). -#document -| <html> -| <head> -| <body> -| <meta> -| <p> - -#data -<b><table><td><i></table> -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 25 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 25 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| <table> -| <tbody> -| <tr> -| <td> -| <i> - -#data -<b><table><td></b><i></table> -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 18 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 29 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 29 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| <table> -| <tbody> -| <tr> -| <td> -| <i> - -#data -<h1><h2> -#errors -4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -8: Heading cannot be a child of another heading. -8: End of file seen and there were open elements. -#document -| <html> -| <head> -| <body> -| <h1> -| <h2> - -#data -<a><p><a></a></p></a> -#errors -Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 9 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 9 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 21 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm. -#document -| <html> -| <head> -| <body> -| <a> -| <p> -| <a> -| <a> - -#data -<b><button></b></button></b> -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 15 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -#document -| <html> -| <head> -| <body> -| <b> -| <button> -| <b> - -#data -<p><b><div><marquee></p></b></div> -#errors -Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end tag (p). Ignored. -Line: 1 Col: 24 Unexpected end tag (p). Ignored. -Line: 1 Col: 28 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 34 End tag (div) seen too early. Expected other end tag. -Line: 1 Col: 34 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <p> -| <b> -| <div> -| <b> -| <marquee> -| <p> - -#data -<script></script></div><title></title><p><p> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 23 Unexpected end tag (div). Ignored. -#document -| <html> -| <head> -| <script> -| <title> -| <body> -| <p> -| <p> - -#data -<p><hr></p> -#errors -Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end tag (p). Ignored. -#document -| <html> -| <head> -| <body> -| <p> -| <hr> -| <p> - -#data -<select><b><option><select><option></b></select> -#errors -Line: 1 Col: 8 Unexpected start tag (select). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected start tag token (b) in the select phase. Ignored. -Line: 1 Col: 27 Unexpected select start tag in the select phase treated as select end tag. -Line: 1 Col: 39 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 48 Unexpected end tag (select). Ignored. -Line: 1 Col: 48 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <select> -| <option> -| <option> - -#data -<html><head><title></title><body></body></html> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <title> -| <body> - -#data -<a><table><td><a><table></table><a></tr><a></table><a> -#errors -Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 35 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 40 Got table cell end tag (td) while required end tags are missing. -Line: 1 Col: 43 Unexpected start tag (a) in table context caused voodoo mode. -Line: 1 Col: 43 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 43 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 51 Unexpected implied end tag (a) in the table phase. -Line: 1 Col: 54 Unexpected start tag (a) implies end tag (a). -Line: 1 Col: 54 End tag (a) violates step 1, paragraph 2 of the adoption agency algorithm. -Line: 1 Col: 54 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <a> -| <a> -| <table> -| <tbody> -| <tr> -| <td> -| <a> -| <table> -| <a> -| <a> - -#data -<ul><li></li><div><li></div><li><li><div><li><address><li><b><em></b><li></ul> -#errors -Line: 1 Col: 4 Unexpected start tag (ul). Expected DOCTYPE. -Line: 1 Col: 45 Missing end tag (div, li). -Line: 1 Col: 58 Missing end tag (address, li). -Line: 1 Col: 69 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -#document -| <html> -| <head> -| <body> -| <ul> -| <li> -| <div> -| <li> -| <li> -| <li> -| <div> -| <li> -| <address> -| <li> -| <b> -| <em> -| <li> - -#data -<ul><li><ul></li><li>a</li></ul></li></ul> -#errors -XXX: fix me -#document -| <html> -| <head> -| <body> -| <ul> -| <li> -| <ul> -| <li> -| "a" - -#data -<frameset><frame><frameset><frame></frameset><noframes></noframes></frameset> -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -#document -| <html> -| <head> -| <frameset> -| <frame> -| <frameset> -| <frame> -| <noframes> - -#data -<h1><table><td><h3></table><h3></h1> -#errors -4: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -15: “td” start tag in table body. -27: Unclosed elements. -31: Heading cannot be a child of another heading. -36: End tag “h1” seen but there were unclosed elements. -#document -| <html> -| <head> -| <body> -| <h1> -| <table> -| <tbody> -| <tr> -| <td> -| <h3> -| <h3> - -#data -<table><colgroup><col><colgroup><col><col><col><colgroup><col><col><thead><tr><td></table> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <table> -| <colgroup> -| <col> -| <colgroup> -| <col> -| <col> -| <col> -| <colgroup> -| <col> -| <col> -| <thead> -| <tr> -| <td> - -#data -<table><col><tbody><col><tr><col><td><col></table><col> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 37 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 55 Unexpected start tag col. Ignored. -#document -| <html> -| <head> -| <body> -| <table> -| <colgroup> -| <col> -| <tbody> -| <colgroup> -| <col> -| <tbody> -| <tr> -| <colgroup> -| <col> -| <tbody> -| <tr> -| <td> -| <colgroup> -| <col> - -#data -<table><colgroup><tbody><colgroup><tr><colgroup><td><colgroup></table><colgroup> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 52 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 80 Unexpected start tag colgroup. Ignored. -#document -| <html> -| <head> -| <body> -| <table> -| <colgroup> -| <tbody> -| <colgroup> -| <tbody> -| <tr> -| <colgroup> -| <tbody> -| <tr> -| <td> -| <colgroup> - -#data -</strong></b></em></i></u></strike></s></blink></tt></pre></big></small></font></select></h1></h2></h3></h4></h5></h6></body></br></a></img></title></span></style></script></table></th></td></tr></frame></area></link></param></hr></input></col></base></meta></basefont></bgsound></embed></spacer></p></dd></dt></caption></colgroup></tbody></tfoot></thead></address></blockquote></center></dir></div></dl></fieldset></listing></menu></ol></ul></li></nobr></wbr></form></button></marquee></object></html></frameset></head></iframe></image></isindex></noembed></noframes></noscript></optgroup></option></plaintext></textarea> -#errors -Line: 1 Col: 9 Unexpected end tag (strong). Expected DOCTYPE. -Line: 1 Col: 9 Unexpected end tag (strong) after the (implied) root element. -Line: 1 Col: 13 Unexpected end tag (b) after the (implied) root element. -Line: 1 Col: 18 Unexpected end tag (em) after the (implied) root element. -Line: 1 Col: 22 Unexpected end tag (i) after the (implied) root element. -Line: 1 Col: 26 Unexpected end tag (u) after the (implied) root element. -Line: 1 Col: 35 Unexpected end tag (strike) after the (implied) root element. -Line: 1 Col: 39 Unexpected end tag (s) after the (implied) root element. -Line: 1 Col: 47 Unexpected end tag (blink) after the (implied) root element. -Line: 1 Col: 52 Unexpected end tag (tt) after the (implied) root element. -Line: 1 Col: 58 Unexpected end tag (pre) after the (implied) root element. -Line: 1 Col: 64 Unexpected end tag (big) after the (implied) root element. -Line: 1 Col: 72 Unexpected end tag (small) after the (implied) root element. -Line: 1 Col: 79 Unexpected end tag (font) after the (implied) root element. -Line: 1 Col: 88 Unexpected end tag (select) after the (implied) root element. -Line: 1 Col: 93 Unexpected end tag (h1) after the (implied) root element. -Line: 1 Col: 98 Unexpected end tag (h2) after the (implied) root element. -Line: 1 Col: 103 Unexpected end tag (h3) after the (implied) root element. -Line: 1 Col: 108 Unexpected end tag (h4) after the (implied) root element. -Line: 1 Col: 113 Unexpected end tag (h5) after the (implied) root element. -Line: 1 Col: 118 Unexpected end tag (h6) after the (implied) root element. -Line: 1 Col: 125 Unexpected end tag (body) after the (implied) root element. -Line: 1 Col: 130 Unexpected end tag (br). Treated as br element. -Line: 1 Col: 134 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 140 This element (img) has no end tag. -Line: 1 Col: 148 Unexpected end tag (title). Ignored. -Line: 1 Col: 155 Unexpected end tag (span). Ignored. -Line: 1 Col: 163 Unexpected end tag (style). Ignored. -Line: 1 Col: 172 Unexpected end tag (script). Ignored. -Line: 1 Col: 180 Unexpected end tag (table). Ignored. -Line: 1 Col: 185 Unexpected end tag (th). Ignored. -Line: 1 Col: 190 Unexpected end tag (td). Ignored. -Line: 1 Col: 195 Unexpected end tag (tr). Ignored. -Line: 1 Col: 203 This element (frame) has no end tag. -Line: 1 Col: 210 This element (area) has no end tag. -Line: 1 Col: 217 Unexpected end tag (link). Ignored. -Line: 1 Col: 225 This element (param) has no end tag. -Line: 1 Col: 230 This element (hr) has no end tag. -Line: 1 Col: 238 This element (input) has no end tag. -Line: 1 Col: 244 Unexpected end tag (col). Ignored. -Line: 1 Col: 251 Unexpected end tag (base). Ignored. -Line: 1 Col: 258 Unexpected end tag (meta). Ignored. -Line: 1 Col: 269 This element (basefont) has no end tag. -Line: 1 Col: 279 This element (bgsound) has no end tag. -Line: 1 Col: 287 This element (embed) has no end tag. -Line: 1 Col: 296 This element (spacer) has no end tag. -Line: 1 Col: 300 Unexpected end tag (p). Ignored. -Line: 1 Col: 305 End tag (dd) seen too early. Expected other end tag. -Line: 1 Col: 310 End tag (dt) seen too early. Expected other end tag. -Line: 1 Col: 320 Unexpected end tag (caption). Ignored. -Line: 1 Col: 331 Unexpected end tag (colgroup). Ignored. -Line: 1 Col: 339 Unexpected end tag (tbody). Ignored. -Line: 1 Col: 347 Unexpected end tag (tfoot). Ignored. -Line: 1 Col: 355 Unexpected end tag (thead). Ignored. -Line: 1 Col: 365 End tag (address) seen too early. Expected other end tag. -Line: 1 Col: 378 End tag (blockquote) seen too early. Expected other end tag. -Line: 1 Col: 387 End tag (center) seen too early. Expected other end tag. -Line: 1 Col: 393 Unexpected end tag (dir). Ignored. -Line: 1 Col: 399 End tag (div) seen too early. Expected other end tag. -Line: 1 Col: 404 End tag (dl) seen too early. Expected other end tag. -Line: 1 Col: 415 End tag (fieldset) seen too early. Expected other end tag. -Line: 1 Col: 425 End tag (listing) seen too early. Expected other end tag. -Line: 1 Col: 432 End tag (menu) seen too early. Expected other end tag. -Line: 1 Col: 437 End tag (ol) seen too early. Expected other end tag. -Line: 1 Col: 442 End tag (ul) seen too early. Expected other end tag. -Line: 1 Col: 447 End tag (li) seen too early. Expected other end tag. -Line: 1 Col: 454 End tag (nobr) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 460 This element (wbr) has no end tag. -Line: 1 Col: 476 End tag (button) seen too early. Expected other end tag. -Line: 1 Col: 486 End tag (marquee) seen too early. Expected other end tag. -Line: 1 Col: 495 End tag (object) seen too early. Expected other end tag. -Line: 1 Col: 513 Unexpected end tag (html). Ignored. -Line: 1 Col: 513 Unexpected end tag (frameset). Ignored. -Line: 1 Col: 520 Unexpected end tag (head). Ignored. -Line: 1 Col: 529 Unexpected end tag (iframe). Ignored. -Line: 1 Col: 537 This element (image) has no end tag. -Line: 1 Col: 547 This element (isindex) has no end tag. -Line: 1 Col: 557 Unexpected end tag (noembed). Ignored. -Line: 1 Col: 568 Unexpected end tag (noframes). Ignored. -Line: 1 Col: 579 Unexpected end tag (noscript). Ignored. -Line: 1 Col: 590 Unexpected end tag (optgroup). Ignored. -Line: 1 Col: 599 Unexpected end tag (option). Ignored. -Line: 1 Col: 611 Unexpected end tag (plaintext). Ignored. -Line: 1 Col: 622 Unexpected end tag (textarea). Ignored. -#document -| <html> -| <head> -| <body> -| <br> -| <p> - -#data -<table><tr></strong></b></em></i></u></strike></s></blink></tt></pre></big></small></font></select></h1></h2></h3></h4></h5></h6></body></br></a></img></title></span></style></script></table></th></td></tr></frame></area></link></param></hr></input></col></base></meta></basefont></bgsound></embed></spacer></p></dd></dt></caption></colgroup></tbody></tfoot></thead></address></blockquote></center></dir></div></dl></fieldset></listing></menu></ol></ul></li></nobr></wbr></form></button></marquee></object></html></frameset></head></iframe></image></isindex></noembed></noframes></noscript></optgroup></option></plaintext></textarea> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 20 Unexpected end tag (strong) in table context caused voodoo mode. -Line: 1 Col: 20 End tag (strong) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 24 Unexpected end tag (b) in table context caused voodoo mode. -Line: 1 Col: 24 End tag (b) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 29 Unexpected end tag (em) in table context caused voodoo mode. -Line: 1 Col: 29 End tag (em) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 33 Unexpected end tag (i) in table context caused voodoo mode. -Line: 1 Col: 33 End tag (i) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 37 Unexpected end tag (u) in table context caused voodoo mode. -Line: 1 Col: 37 End tag (u) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 46 Unexpected end tag (strike) in table context caused voodoo mode. -Line: 1 Col: 46 End tag (strike) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 50 Unexpected end tag (s) in table context caused voodoo mode. -Line: 1 Col: 50 End tag (s) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 58 Unexpected end tag (blink) in table context caused voodoo mode. -Line: 1 Col: 58 Unexpected end tag (blink). Ignored. -Line: 1 Col: 63 Unexpected end tag (tt) in table context caused voodoo mode. -Line: 1 Col: 63 End tag (tt) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 69 Unexpected end tag (pre) in table context caused voodoo mode. -Line: 1 Col: 69 End tag (pre) seen too early. Expected other end tag. -Line: 1 Col: 75 Unexpected end tag (big) in table context caused voodoo mode. -Line: 1 Col: 75 End tag (big) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 83 Unexpected end tag (small) in table context caused voodoo mode. -Line: 1 Col: 83 End tag (small) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 90 Unexpected end tag (font) in table context caused voodoo mode. -Line: 1 Col: 90 End tag (font) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 99 Unexpected end tag (select) in table context caused voodoo mode. -Line: 1 Col: 99 Unexpected end tag (select). Ignored. -Line: 1 Col: 104 Unexpected end tag (h1) in table context caused voodoo mode. -Line: 1 Col: 104 End tag (h1) seen too early. Expected other end tag. -Line: 1 Col: 109 Unexpected end tag (h2) in table context caused voodoo mode. -Line: 1 Col: 109 End tag (h2) seen too early. Expected other end tag. -Line: 1 Col: 114 Unexpected end tag (h3) in table context caused voodoo mode. -Line: 1 Col: 114 End tag (h3) seen too early. Expected other end tag. -Line: 1 Col: 119 Unexpected end tag (h4) in table context caused voodoo mode. -Line: 1 Col: 119 End tag (h4) seen too early. Expected other end tag. -Line: 1 Col: 124 Unexpected end tag (h5) in table context caused voodoo mode. -Line: 1 Col: 124 End tag (h5) seen too early. Expected other end tag. -Line: 1 Col: 129 Unexpected end tag (h6) in table context caused voodoo mode. -Line: 1 Col: 129 End tag (h6) seen too early. Expected other end tag. -Line: 1 Col: 136 Unexpected end tag (body) in the table row phase. Ignored. -Line: 1 Col: 141 Unexpected end tag (br) in table context caused voodoo mode. -Line: 1 Col: 141 Unexpected end tag (br). Treated as br element. -Line: 1 Col: 145 Unexpected end tag (a) in table context caused voodoo mode. -Line: 1 Col: 145 End tag (a) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 151 Unexpected end tag (img) in table context caused voodoo mode. -Line: 1 Col: 151 This element (img) has no end tag. -Line: 1 Col: 159 Unexpected end tag (title) in table context caused voodoo mode. -Line: 1 Col: 159 Unexpected end tag (title). Ignored. -Line: 1 Col: 166 Unexpected end tag (span) in table context caused voodoo mode. -Line: 1 Col: 166 Unexpected end tag (span). Ignored. -Line: 1 Col: 174 Unexpected end tag (style) in table context caused voodoo mode. -Line: 1 Col: 174 Unexpected end tag (style). Ignored. -Line: 1 Col: 183 Unexpected end tag (script) in table context caused voodoo mode. -Line: 1 Col: 183 Unexpected end tag (script). Ignored. -Line: 1 Col: 196 Unexpected end tag (th). Ignored. -Line: 1 Col: 201 Unexpected end tag (td). Ignored. -Line: 1 Col: 206 Unexpected end tag (tr). Ignored. -Line: 1 Col: 214 This element (frame) has no end tag. -Line: 1 Col: 221 This element (area) has no end tag. -Line: 1 Col: 228 Unexpected end tag (link). Ignored. -Line: 1 Col: 236 This element (param) has no end tag. -Line: 1 Col: 241 This element (hr) has no end tag. -Line: 1 Col: 249 This element (input) has no end tag. -Line: 1 Col: 255 Unexpected end tag (col). Ignored. -Line: 1 Col: 262 Unexpected end tag (base). Ignored. -Line: 1 Col: 269 Unexpected end tag (meta). Ignored. -Line: 1 Col: 280 This element (basefont) has no end tag. -Line: 1 Col: 290 This element (bgsound) has no end tag. -Line: 1 Col: 298 This element (embed) has no end tag. -Line: 1 Col: 307 This element (spacer) has no end tag. -Line: 1 Col: 311 Unexpected end tag (p). Ignored. -Line: 1 Col: 316 End tag (dd) seen too early. Expected other end tag. -Line: 1 Col: 321 End tag (dt) seen too early. Expected other end tag. -Line: 1 Col: 331 Unexpected end tag (caption). Ignored. -Line: 1 Col: 342 Unexpected end tag (colgroup). Ignored. -Line: 1 Col: 350 Unexpected end tag (tbody). Ignored. -Line: 1 Col: 358 Unexpected end tag (tfoot). Ignored. -Line: 1 Col: 366 Unexpected end tag (thead). Ignored. -Line: 1 Col: 376 End tag (address) seen too early. Expected other end tag. -Line: 1 Col: 389 End tag (blockquote) seen too early. Expected other end tag. -Line: 1 Col: 398 End tag (center) seen too early. Expected other end tag. -Line: 1 Col: 404 Unexpected end tag (dir). Ignored. -Line: 1 Col: 410 End tag (div) seen too early. Expected other end tag. -Line: 1 Col: 415 End tag (dl) seen too early. Expected other end tag. -Line: 1 Col: 426 End tag (fieldset) seen too early. Expected other end tag. -Line: 1 Col: 436 End tag (listing) seen too early. Expected other end tag. -Line: 1 Col: 443 End tag (menu) seen too early. Expected other end tag. -Line: 1 Col: 448 End tag (ol) seen too early. Expected other end tag. -Line: 1 Col: 453 End tag (ul) seen too early. Expected other end tag. -Line: 1 Col: 458 End tag (li) seen too early. Expected other end tag. -Line: 1 Col: 465 End tag (nobr) violates step 1, paragraph 1 of the adoption agency algorithm. -Line: 1 Col: 471 This element (wbr) has no end tag. -Line: 1 Col: 487 End tag (button) seen too early. Expected other end tag. -Line: 1 Col: 497 End tag (marquee) seen too early. Expected other end tag. -Line: 1 Col: 506 End tag (object) seen too early. Expected other end tag. -Line: 1 Col: 524 Unexpected end tag (html). Ignored. -Line: 1 Col: 524 Unexpected end tag (frameset). Ignored. -Line: 1 Col: 531 Unexpected end tag (head). Ignored. -Line: 1 Col: 540 Unexpected end tag (iframe). Ignored. -Line: 1 Col: 548 This element (image) has no end tag. -Line: 1 Col: 558 This element (isindex) has no end tag. -Line: 1 Col: 568 Unexpected end tag (noembed). Ignored. -Line: 1 Col: 579 Unexpected end tag (noframes). Ignored. -Line: 1 Col: 590 Unexpected end tag (noscript). Ignored. -Line: 1 Col: 601 Unexpected end tag (optgroup). Ignored. -Line: 1 Col: 610 Unexpected end tag (option). Ignored. -Line: 1 Col: 622 Unexpected end tag (plaintext). Ignored. -Line: 1 Col: 633 Unexpected end tag (textarea). Ignored. -#document -| <html> -| <head> -| <body> -| <br> -| <table> -| <tbody> -| <tr> -| <p> - -#data -<frameset> -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -Line: 1 Col: 10 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <frameset> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests10.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests10.dat deleted file mode 100644 index 4f8df86f..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests10.dat +++ /dev/null @@ -1,799 +0,0 @@ -#data -<!DOCTYPE html><svg></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> - -#data -<!DOCTYPE html><svg></svg><![CDATA[a]]> -#errors -29: Bogus comment -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <!-- [CDATA[a]] --> - -#data -<!DOCTYPE html><body><svg></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> - -#data -<!DOCTYPE html><body><select><svg></svg></select> -#errors -35: Stray “svg” start tag. -42: Stray end tag “svg” -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!DOCTYPE html><body><select><option><svg></svg></option></select> -#errors -43: Stray “svg” start tag. -50: Stray end tag “svg” -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <option> - -#data -<!DOCTYPE html><body><table><svg></svg></table> -#errors -34: Start tag “svg” seen in “table”. -41: Stray end tag “svg”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <table> - -#data -<!DOCTYPE html><body><table><svg><g>foo</g></svg></table> -#errors -34: Start tag “svg” seen in “table”. -46: Stray end tag “g”. -53: Stray end tag “svg”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg g> -| "foo" -| <table> - -#data -<!DOCTYPE html><body><table><svg><g>foo</g><g>bar</g></svg></table> -#errors -34: Start tag “svg” seen in “table”. -46: Stray end tag “g”. -58: Stray end tag “g”. -65: Stray end tag “svg”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <table> - -#data -<!DOCTYPE html><body><table><tbody><svg><g>foo</g><g>bar</g></svg></tbody></table> -#errors -41: Start tag “svg” seen in “table”. -53: Stray end tag “g”. -65: Stray end tag “g”. -72: Stray end tag “svg”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <table> -| <tbody> - -#data -<!DOCTYPE html><body><table><tbody><tr><svg><g>foo</g><g>bar</g></svg></tr></tbody></table> -#errors -45: Start tag “svg” seen in “table”. -57: Stray end tag “g”. -69: Stray end tag “g”. -76: Stray end tag “svg”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <table> -| <tbody> -| <tr> - -#data -<!DOCTYPE html><body><table><tbody><tr><td><svg><g>foo</g><g>bar</g></svg></td></tr></tbody></table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" - -#data -<!DOCTYPE html><body><table><tbody><tr><td><svg><g>foo</g><g>bar</g></svg><p>baz</td></tr></tbody></table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <p> -| "baz" - -#data -<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g></svg><p>baz</caption></table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <p> -| "baz" - -#data -<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g><p>baz</table><p>quux -#errors -70: HTML start tag “p” in a foreign namespace context. -81: “table” closed but “caption” was still open. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <p> -| "baz" -| <p> -| "quux" - -#data -<!DOCTYPE html><body><table><caption><svg><g>foo</g><g>bar</g>baz</table><p>quux -#errors -78: “table” closed but “caption” was still open. -78: Unclosed elements on stack. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| "baz" -| <p> -| "quux" - -#data -<!DOCTYPE html><body><table><colgroup><svg><g>foo</g><g>bar</g><p>baz</table><p>quux -#errors -44: Start tag “svg” seen in “table”. -56: Stray end tag “g”. -68: Stray end tag “g”. -71: HTML start tag “p” in a foreign namespace context. -71: Start tag “p” seen in “table”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <p> -| "baz" -| <table> -| <colgroup> -| <p> -| "quux" - -#data -<!DOCTYPE html><body><table><tr><td><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux -#errors -50: Stray “svg” start tag. -54: Stray “g” start tag. -62: Stray end tag “g” -66: Stray “g” start tag. -74: Stray end tag “g” -77: Stray “p” start tag. -88: “table” end tag with “select” open. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <select> -| "foobarbaz" -| <p> -| "quux" - -#data -<!DOCTYPE html><body><table><select><svg><g>foo</g><g>bar</g><p>baz</table><p>quux -#errors -36: Start tag “select” seen in “table”. -42: Stray “svg” start tag. -46: Stray “g” start tag. -54: Stray end tag “g” -58: Stray “g” start tag. -66: Stray end tag “g” -69: Stray “p” start tag. -80: “table” end tag with “select” open. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| "foobarbaz" -| <table> -| <p> -| "quux" - -#data -<!DOCTYPE html><body></body></html><svg><g>foo</g><g>bar</g><p>baz -#errors -41: Stray “svg” start tag. -68: HTML start tag “p” in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <p> -| "baz" - -#data -<!DOCTYPE html><body></body><svg><g>foo</g><g>bar</g><p>baz -#errors -34: Stray “svg” start tag. -61: HTML start tag “p” in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg g> -| "foo" -| <svg g> -| "bar" -| <p> -| "baz" - -#data -<!DOCTYPE html><frameset><svg><g></g><g></g><p><span> -#errors -31: Stray “svg” start tag. -35: Stray “g” start tag. -40: Stray end tag “g” -44: Stray “g” start tag. -49: Stray end tag “g” -52: Stray “p” start tag. -58: Stray “span” start tag. -58: End of file seen and there were open elements. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!DOCTYPE html><frameset></frameset><svg><g></g><g></g><p><span> -#errors -42: Stray “svg” start tag. -46: Stray “g” start tag. -51: Stray end tag “g” -55: Stray “g” start tag. -60: Stray end tag “g” -63: Stray “p” start tag. -69: Stray “span” start tag. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!DOCTYPE html><body xlink:href=foo><svg xlink:href=foo></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| xlink:href="foo" -| <svg svg> -| xlink href="foo" - -#data -<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo></g></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| xlink:href="foo" -| xml:lang="en" -| <svg svg> -| <svg g> -| xlink href="foo" -| xml lang="en" - -#data -<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo /></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| xlink:href="foo" -| xml:lang="en" -| <svg svg> -| <svg g> -| xlink href="foo" -| xml lang="en" - -#data -<!DOCTYPE html><body xlink:href=foo xml:lang=en><svg><g xml:lang=en xlink:href=foo />bar</svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| xlink:href="foo" -| xml:lang="en" -| <svg svg> -| <svg g> -| xlink href="foo" -| xml lang="en" -| "bar" - -#data -<svg></path> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> - -#data -<div><svg></div>a -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <svg svg> -| "a" - -#data -<div><svg><path></div>a -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <svg svg> -| <svg path> -| "a" - -#data -<div><svg><path></svg><path> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <svg svg> -| <svg path> -| <path> - -#data -<div><svg><path><foreignObject><math></div>a -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <svg svg> -| <svg path> -| <svg foreignObject> -| <math math> -| "a" - -#data -<div><svg><path><foreignObject><p></div>a -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <svg svg> -| <svg path> -| <svg foreignObject> -| <p> -| "a" - -#data -<!DOCTYPE html><svg><desc><div><svg><ul>a -#errors -40: HTML start tag “ul” in a foreign namespace context. -41: End of file in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg desc> -| <div> -| <svg svg> -| <ul> -| "a" - -#data -<!DOCTYPE html><svg><desc><svg><ul>a -#errors -35: HTML start tag “ul” in a foreign namespace context. -36: End of file in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg desc> -| <svg svg> -| <ul> -| "a" - -#data -<!DOCTYPE html><p><svg><desc><p> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <svg svg> -| <svg desc> -| <p> - -#data -<!DOCTYPE html><p><svg><title><p> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <svg svg> -| <svg title> -| <p> - -#data -<div><svg><path><foreignObject><p></foreignObject><p> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <svg svg> -| <svg path> -| <svg foreignObject> -| <p> -| <p> - -#data -<math><mi><div><object><div><span></span></div></object></div></mi><mi> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| <div> -| <object> -| <div> -| <span> -| <math mi> - -#data -<math><mi><svg><foreignObject><div><div></div></div></foreignObject></svg></mi><mi> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| <svg svg> -| <svg foreignObject> -| <div> -| <div> -| <math mi> - -#data -<svg><script></script><path> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| <svg script> -| <svg path> - -#data -<table><svg></svg><tr> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| <table> -| <tbody> -| <tr> - -#data -<math><mi><mglyph> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| <math mglyph> - -#data -<math><mi><malignmark> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| <math malignmark> - -#data -<math><mo><mglyph> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mo> -| <math mglyph> - -#data -<math><mo><malignmark> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mo> -| <math malignmark> - -#data -<math><mn><mglyph> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mn> -| <math mglyph> - -#data -<math><mn><malignmark> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mn> -| <math malignmark> - -#data -<math><ms><mglyph> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math ms> -| <math mglyph> - -#data -<math><ms><malignmark> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math ms> -| <math malignmark> - -#data -<math><mtext><mglyph> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mtext> -| <math mglyph> - -#data -<math><mtext><malignmark> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mtext> -| <math malignmark> - -#data -<math><annotation-xml><svg></svg></annotation-xml><mi> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| <svg svg> -| <math mi> - -#data -<math><annotation-xml><svg><foreignObject><div><math><mi></mi></math><span></span></div></foreignObject><path></path></svg></annotation-xml><mi> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| <svg svg> -| <svg foreignObject> -| <div> -| <math math> -| <math mi> -| <span> -| <svg path> -| <math mi> - -#data -<math><annotation-xml><svg><foreignObject><math><mi><svg></svg></mi><mo></mo></math><span></span></foreignObject><path></path></svg></annotation-xml><mi> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| <svg svg> -| <svg foreignObject> -| <math math> -| <math mi> -| <svg svg> -| <math mo> -| <span> -| <svg path> -| <math mi> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests11.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests11.dat deleted file mode 100644 index 638cde47..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests11.dat +++ /dev/null @@ -1,482 +0,0 @@ -#data -<!DOCTYPE html><body><svg attributeName='' attributeType='' baseFrequency='' baseProfile='' calcMode='' clipPathUnits='' contentScriptType='' contentStyleType='' diffuseConstant='' edgeMode='' externalResourcesRequired='' filterRes='' filterUnits='' glyphRef='' gradientTransform='' gradientUnits='' kernelMatrix='' kernelUnitLength='' keyPoints='' keySplines='' keyTimes='' lengthAdjust='' limitingConeAngle='' markerHeight='' markerUnits='' markerWidth='' maskContentUnits='' maskUnits='' numOctaves='' pathLength='' patternContentUnits='' patternTransform='' patternUnits='' pointsAtX='' pointsAtY='' pointsAtZ='' preserveAlpha='' preserveAspectRatio='' primitiveUnits='' refX='' refY='' repeatCount='' repeatDur='' requiredExtensions='' requiredFeatures='' specularConstant='' specularExponent='' spreadMethod='' startOffset='' stdDeviation='' stitchTiles='' surfaceScale='' systemLanguage='' tableValues='' targetX='' targetY='' textLength='' viewBox='' viewTarget='' xChannelSelector='' yChannelSelector='' zoomAndPan=''></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| attributeName="" -| attributeType="" -| baseFrequency="" -| baseProfile="" -| calcMode="" -| clipPathUnits="" -| contentScriptType="" -| contentStyleType="" -| diffuseConstant="" -| edgeMode="" -| externalResourcesRequired="" -| filterRes="" -| filterUnits="" -| glyphRef="" -| gradientTransform="" -| gradientUnits="" -| kernelMatrix="" -| kernelUnitLength="" -| keyPoints="" -| keySplines="" -| keyTimes="" -| lengthAdjust="" -| limitingConeAngle="" -| markerHeight="" -| markerUnits="" -| markerWidth="" -| maskContentUnits="" -| maskUnits="" -| numOctaves="" -| pathLength="" -| patternContentUnits="" -| patternTransform="" -| patternUnits="" -| pointsAtX="" -| pointsAtY="" -| pointsAtZ="" -| preserveAlpha="" -| preserveAspectRatio="" -| primitiveUnits="" -| refX="" -| refY="" -| repeatCount="" -| repeatDur="" -| requiredExtensions="" -| requiredFeatures="" -| specularConstant="" -| specularExponent="" -| spreadMethod="" -| startOffset="" -| stdDeviation="" -| stitchTiles="" -| surfaceScale="" -| systemLanguage="" -| tableValues="" -| targetX="" -| targetY="" -| textLength="" -| viewBox="" -| viewTarget="" -| xChannelSelector="" -| yChannelSelector="" -| zoomAndPan="" - -#data -<!DOCTYPE html><BODY><SVG ATTRIBUTENAME='' ATTRIBUTETYPE='' BASEFREQUENCY='' BASEPROFILE='' CALCMODE='' CLIPPATHUNITS='' CONTENTSCRIPTTYPE='' CONTENTSTYLETYPE='' DIFFUSECONSTANT='' EDGEMODE='' EXTERNALRESOURCESREQUIRED='' FILTERRES='' FILTERUNITS='' GLYPHREF='' GRADIENTTRANSFORM='' GRADIENTUNITS='' KERNELMATRIX='' KERNELUNITLENGTH='' KEYPOINTS='' KEYSPLINES='' KEYTIMES='' LENGTHADJUST='' LIMITINGCONEANGLE='' MARKERHEIGHT='' MARKERUNITS='' MARKERWIDTH='' MASKCONTENTUNITS='' MASKUNITS='' NUMOCTAVES='' PATHLENGTH='' PATTERNCONTENTUNITS='' PATTERNTRANSFORM='' PATTERNUNITS='' POINTSATX='' POINTSATY='' POINTSATZ='' PRESERVEALPHA='' PRESERVEASPECTRATIO='' PRIMITIVEUNITS='' REFX='' REFY='' REPEATCOUNT='' REPEATDUR='' REQUIREDEXTENSIONS='' REQUIREDFEATURES='' SPECULARCONSTANT='' SPECULAREXPONENT='' SPREADMETHOD='' STARTOFFSET='' STDDEVIATION='' STITCHTILES='' SURFACESCALE='' SYSTEMLANGUAGE='' TABLEVALUES='' TARGETX='' TARGETY='' TEXTLENGTH='' VIEWBOX='' VIEWTARGET='' XCHANNELSELECTOR='' YCHANNELSELECTOR='' ZOOMANDPAN=''></SVG> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| attributeName="" -| attributeType="" -| baseFrequency="" -| baseProfile="" -| calcMode="" -| clipPathUnits="" -| contentScriptType="" -| contentStyleType="" -| diffuseConstant="" -| edgeMode="" -| externalResourcesRequired="" -| filterRes="" -| filterUnits="" -| glyphRef="" -| gradientTransform="" -| gradientUnits="" -| kernelMatrix="" -| kernelUnitLength="" -| keyPoints="" -| keySplines="" -| keyTimes="" -| lengthAdjust="" -| limitingConeAngle="" -| markerHeight="" -| markerUnits="" -| markerWidth="" -| maskContentUnits="" -| maskUnits="" -| numOctaves="" -| pathLength="" -| patternContentUnits="" -| patternTransform="" -| patternUnits="" -| pointsAtX="" -| pointsAtY="" -| pointsAtZ="" -| preserveAlpha="" -| preserveAspectRatio="" -| primitiveUnits="" -| refX="" -| refY="" -| repeatCount="" -| repeatDur="" -| requiredExtensions="" -| requiredFeatures="" -| specularConstant="" -| specularExponent="" -| spreadMethod="" -| startOffset="" -| stdDeviation="" -| stitchTiles="" -| surfaceScale="" -| systemLanguage="" -| tableValues="" -| targetX="" -| targetY="" -| textLength="" -| viewBox="" -| viewTarget="" -| xChannelSelector="" -| yChannelSelector="" -| zoomAndPan="" - -#data -<!DOCTYPE html><body><svg attributename='' attributetype='' basefrequency='' baseprofile='' calcmode='' clippathunits='' contentscripttype='' contentstyletype='' diffuseconstant='' edgemode='' externalresourcesrequired='' filterres='' filterunits='' glyphref='' gradienttransform='' gradientunits='' kernelmatrix='' kernelunitlength='' keypoints='' keysplines='' keytimes='' lengthadjust='' limitingconeangle='' markerheight='' markerunits='' markerwidth='' maskcontentunits='' maskunits='' numoctaves='' pathlength='' patterncontentunits='' patterntransform='' patternunits='' pointsatx='' pointsaty='' pointsatz='' preservealpha='' preserveaspectratio='' primitiveunits='' refx='' refy='' repeatcount='' repeatdur='' requiredextensions='' requiredfeatures='' specularconstant='' specularexponent='' spreadmethod='' startoffset='' stddeviation='' stitchtiles='' surfacescale='' systemlanguage='' tablevalues='' targetx='' targety='' textlength='' viewbox='' viewtarget='' xchannelselector='' ychannelselector='' zoomandpan=''></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| attributeName="" -| attributeType="" -| baseFrequency="" -| baseProfile="" -| calcMode="" -| clipPathUnits="" -| contentScriptType="" -| contentStyleType="" -| diffuseConstant="" -| edgeMode="" -| externalResourcesRequired="" -| filterRes="" -| filterUnits="" -| glyphRef="" -| gradientTransform="" -| gradientUnits="" -| kernelMatrix="" -| kernelUnitLength="" -| keyPoints="" -| keySplines="" -| keyTimes="" -| lengthAdjust="" -| limitingConeAngle="" -| markerHeight="" -| markerUnits="" -| markerWidth="" -| maskContentUnits="" -| maskUnits="" -| numOctaves="" -| pathLength="" -| patternContentUnits="" -| patternTransform="" -| patternUnits="" -| pointsAtX="" -| pointsAtY="" -| pointsAtZ="" -| preserveAlpha="" -| preserveAspectRatio="" -| primitiveUnits="" -| refX="" -| refY="" -| repeatCount="" -| repeatDur="" -| requiredExtensions="" -| requiredFeatures="" -| specularConstant="" -| specularExponent="" -| spreadMethod="" -| startOffset="" -| stdDeviation="" -| stitchTiles="" -| surfaceScale="" -| systemLanguage="" -| tableValues="" -| targetX="" -| targetY="" -| textLength="" -| viewBox="" -| viewTarget="" -| xChannelSelector="" -| yChannelSelector="" -| zoomAndPan="" - -#data -<!DOCTYPE html><body><math attributeName='' attributeType='' baseFrequency='' baseProfile='' calcMode='' clipPathUnits='' contentScriptType='' contentStyleType='' diffuseConstant='' edgeMode='' externalResourcesRequired='' filterRes='' filterUnits='' glyphRef='' gradientTransform='' gradientUnits='' kernelMatrix='' kernelUnitLength='' keyPoints='' keySplines='' keyTimes='' lengthAdjust='' limitingConeAngle='' markerHeight='' markerUnits='' markerWidth='' maskContentUnits='' maskUnits='' numOctaves='' pathLength='' patternContentUnits='' patternTransform='' patternUnits='' pointsAtX='' pointsAtY='' pointsAtZ='' preserveAlpha='' preserveAspectRatio='' primitiveUnits='' refX='' refY='' repeatCount='' repeatDur='' requiredExtensions='' requiredFeatures='' specularConstant='' specularExponent='' spreadMethod='' startOffset='' stdDeviation='' stitchTiles='' surfaceScale='' systemLanguage='' tableValues='' targetX='' targetY='' textLength='' viewBox='' viewTarget='' xChannelSelector='' yChannelSelector='' zoomAndPan=''></math> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| attributename="" -| attributetype="" -| basefrequency="" -| baseprofile="" -| calcmode="" -| clippathunits="" -| contentscripttype="" -| contentstyletype="" -| diffuseconstant="" -| edgemode="" -| externalresourcesrequired="" -| filterres="" -| filterunits="" -| glyphref="" -| gradienttransform="" -| gradientunits="" -| kernelmatrix="" -| kernelunitlength="" -| keypoints="" -| keysplines="" -| keytimes="" -| lengthadjust="" -| limitingconeangle="" -| markerheight="" -| markerunits="" -| markerwidth="" -| maskcontentunits="" -| maskunits="" -| numoctaves="" -| pathlength="" -| patterncontentunits="" -| patterntransform="" -| patternunits="" -| pointsatx="" -| pointsaty="" -| pointsatz="" -| preservealpha="" -| preserveaspectratio="" -| primitiveunits="" -| refx="" -| refy="" -| repeatcount="" -| repeatdur="" -| requiredextensions="" -| requiredfeatures="" -| specularconstant="" -| specularexponent="" -| spreadmethod="" -| startoffset="" -| stddeviation="" -| stitchtiles="" -| surfacescale="" -| systemlanguage="" -| tablevalues="" -| targetx="" -| targety="" -| textlength="" -| viewbox="" -| viewtarget="" -| xchannelselector="" -| ychannelselector="" -| zoomandpan="" - -#data -<!DOCTYPE html><body><svg><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg altGlyph> -| <svg altGlyphDef> -| <svg altGlyphItem> -| <svg animateColor> -| <svg animateMotion> -| <svg animateTransform> -| <svg clipPath> -| <svg feBlend> -| <svg feColorMatrix> -| <svg feComponentTransfer> -| <svg feComposite> -| <svg feConvolveMatrix> -| <svg feDiffuseLighting> -| <svg feDisplacementMap> -| <svg feDistantLight> -| <svg feFlood> -| <svg feFuncA> -| <svg feFuncB> -| <svg feFuncG> -| <svg feFuncR> -| <svg feGaussianBlur> -| <svg feImage> -| <svg feMerge> -| <svg feMergeNode> -| <svg feMorphology> -| <svg feOffset> -| <svg fePointLight> -| <svg feSpecularLighting> -| <svg feSpotLight> -| <svg feTile> -| <svg feTurbulence> -| <svg foreignObject> -| <svg glyphRef> -| <svg linearGradient> -| <svg radialGradient> -| <svg textPath> - -#data -<!DOCTYPE html><body><svg><altglyph /><altglyphdef /><altglyphitem /><animatecolor /><animatemotion /><animatetransform /><clippath /><feblend /><fecolormatrix /><fecomponenttransfer /><fecomposite /><feconvolvematrix /><fediffuselighting /><fedisplacementmap /><fedistantlight /><feflood /><fefunca /><fefuncb /><fefuncg /><fefuncr /><fegaussianblur /><feimage /><femerge /><femergenode /><femorphology /><feoffset /><fepointlight /><fespecularlighting /><fespotlight /><fetile /><feturbulence /><foreignobject /><glyphref /><lineargradient /><radialgradient /><textpath /></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg altGlyph> -| <svg altGlyphDef> -| <svg altGlyphItem> -| <svg animateColor> -| <svg animateMotion> -| <svg animateTransform> -| <svg clipPath> -| <svg feBlend> -| <svg feColorMatrix> -| <svg feComponentTransfer> -| <svg feComposite> -| <svg feConvolveMatrix> -| <svg feDiffuseLighting> -| <svg feDisplacementMap> -| <svg feDistantLight> -| <svg feFlood> -| <svg feFuncA> -| <svg feFuncB> -| <svg feFuncG> -| <svg feFuncR> -| <svg feGaussianBlur> -| <svg feImage> -| <svg feMerge> -| <svg feMergeNode> -| <svg feMorphology> -| <svg feOffset> -| <svg fePointLight> -| <svg feSpecularLighting> -| <svg feSpotLight> -| <svg feTile> -| <svg feTurbulence> -| <svg foreignObject> -| <svg glyphRef> -| <svg linearGradient> -| <svg radialGradient> -| <svg textPath> - -#data -<!DOCTYPE html><BODY><SVG><ALTGLYPH /><ALTGLYPHDEF /><ALTGLYPHITEM /><ANIMATECOLOR /><ANIMATEMOTION /><ANIMATETRANSFORM /><CLIPPATH /><FEBLEND /><FECOLORMATRIX /><FECOMPONENTTRANSFER /><FECOMPOSITE /><FECONVOLVEMATRIX /><FEDIFFUSELIGHTING /><FEDISPLACEMENTMAP /><FEDISTANTLIGHT /><FEFLOOD /><FEFUNCA /><FEFUNCB /><FEFUNCG /><FEFUNCR /><FEGAUSSIANBLUR /><FEIMAGE /><FEMERGE /><FEMERGENODE /><FEMORPHOLOGY /><FEOFFSET /><FEPOINTLIGHT /><FESPECULARLIGHTING /><FESPOTLIGHT /><FETILE /><FETURBULENCE /><FOREIGNOBJECT /><GLYPHREF /><LINEARGRADIENT /><RADIALGRADIENT /><TEXTPATH /></SVG> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg altGlyph> -| <svg altGlyphDef> -| <svg altGlyphItem> -| <svg animateColor> -| <svg animateMotion> -| <svg animateTransform> -| <svg clipPath> -| <svg feBlend> -| <svg feColorMatrix> -| <svg feComponentTransfer> -| <svg feComposite> -| <svg feConvolveMatrix> -| <svg feDiffuseLighting> -| <svg feDisplacementMap> -| <svg feDistantLight> -| <svg feFlood> -| <svg feFuncA> -| <svg feFuncB> -| <svg feFuncG> -| <svg feFuncR> -| <svg feGaussianBlur> -| <svg feImage> -| <svg feMerge> -| <svg feMergeNode> -| <svg feMorphology> -| <svg feOffset> -| <svg fePointLight> -| <svg feSpecularLighting> -| <svg feSpotLight> -| <svg feTile> -| <svg feTurbulence> -| <svg foreignObject> -| <svg glyphRef> -| <svg linearGradient> -| <svg radialGradient> -| <svg textPath> - -#data -<!DOCTYPE html><body><math><altGlyph /><altGlyphDef /><altGlyphItem /><animateColor /><animateMotion /><animateTransform /><clipPath /><feBlend /><feColorMatrix /><feComponentTransfer /><feComposite /><feConvolveMatrix /><feDiffuseLighting /><feDisplacementMap /><feDistantLight /><feFlood /><feFuncA /><feFuncB /><feFuncG /><feFuncR /><feGaussianBlur /><feImage /><feMerge /><feMergeNode /><feMorphology /><feOffset /><fePointLight /><feSpecularLighting /><feSpotLight /><feTile /><feTurbulence /><foreignObject /><glyphRef /><linearGradient /><radialGradient /><textPath /></math> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math altglyph> -| <math altglyphdef> -| <math altglyphitem> -| <math animatecolor> -| <math animatemotion> -| <math animatetransform> -| <math clippath> -| <math feblend> -| <math fecolormatrix> -| <math fecomponenttransfer> -| <math fecomposite> -| <math feconvolvematrix> -| <math fediffuselighting> -| <math fedisplacementmap> -| <math fedistantlight> -| <math feflood> -| <math fefunca> -| <math fefuncb> -| <math fefuncg> -| <math fefuncr> -| <math fegaussianblur> -| <math feimage> -| <math femerge> -| <math femergenode> -| <math femorphology> -| <math feoffset> -| <math fepointlight> -| <math fespecularlighting> -| <math fespotlight> -| <math fetile> -| <math feturbulence> -| <math foreignobject> -| <math glyphref> -| <math lineargradient> -| <math radialgradient> -| <math textpath> - -#data -<!DOCTYPE html><body><svg><solidColor /></svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg solidcolor> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests12.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests12.dat deleted file mode 100644 index 63107d27..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests12.dat +++ /dev/null @@ -1,62 +0,0 @@ -#data -<!DOCTYPE html><body><p>foo<math><mtext><i>baz</i></mtext><annotation-xml><svg><desc><b>eggs</b></desc><g><foreignObject><P>spam<TABLE><tr><td><img></td></table></foreignObject></g><g>quux</g></svg></annotation-xml></math>bar -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| "foo" -| <math math> -| <math mtext> -| <i> -| "baz" -| <math annotation-xml> -| <svg svg> -| <svg desc> -| <b> -| "eggs" -| <svg g> -| <svg foreignObject> -| <p> -| "spam" -| <table> -| <tbody> -| <tr> -| <td> -| <img> -| <svg g> -| "quux" -| "bar" - -#data -<!DOCTYPE html><body>foo<math><mtext><i>baz</i></mtext><annotation-xml><svg><desc><b>eggs</b></desc><g><foreignObject><P>spam<TABLE><tr><td><img></td></table></foreignObject></g><g>quux</g></svg></annotation-xml></math>bar -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "foo" -| <math math> -| <math mtext> -| <i> -| "baz" -| <math annotation-xml> -| <svg svg> -| <svg desc> -| <b> -| "eggs" -| <svg g> -| <svg foreignObject> -| <p> -| "spam" -| <table> -| <tbody> -| <tr> -| <td> -| <img> -| <svg g> -| "quux" -| "bar" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests14.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests14.dat deleted file mode 100644 index b8713f88..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests14.dat +++ /dev/null @@ -1,74 +0,0 @@ -#data -<!DOCTYPE html><html><body><xyz:abc></xyz:abc> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <xyz:abc> - -#data -<!DOCTYPE html><html><body><xyz:abc></xyz:abc><span></span> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <xyz:abc> -| <span> - -#data -<!DOCTYPE html><html><html abc:def=gh><xyz:abc></xyz:abc> -#errors -15: Unexpected start tag html -#document -| <!DOCTYPE html> -| <html> -| abc:def="gh" -| <head> -| <body> -| <xyz:abc> - -#data -<!DOCTYPE html><html xml:lang=bar><html xml:lang=foo> -#errors -15: Unexpected start tag html -#document -| <!DOCTYPE html> -| <html> -| xml:lang="bar" -| <head> -| <body> - -#data -<!DOCTYPE html><html 123=456> -#errors -#document -| <!DOCTYPE html> -| <html> -| 123="456" -| <head> -| <body> - -#data -<!DOCTYPE html><html 123=456><html 789=012> -#errors -#document -| <!DOCTYPE html> -| <html> -| 123="456" -| 789="012" -| <head> -| <body> - -#data -<!DOCTYPE html><html><body 789=012> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| 789="012" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests15.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests15.dat deleted file mode 100644 index 6ce1c0d1..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests15.dat +++ /dev/null @@ -1,208 +0,0 @@ -#data -<!DOCTYPE html><p><b><i><u></p> <p>X -#errors -Line: 1 Col: 31 Unexpected end tag (p). Ignored. -Line: 1 Col: 36 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <b> -| <i> -| <u> -| <b> -| <i> -| <u> -| " " -| <p> -| "X" - -#data -<p><b><i><u></p> -<p>X -#errors -Line: 1 Col: 3 Unexpected start tag (p). Expected DOCTYPE. -Line: 1 Col: 16 Unexpected end tag (p). Ignored. -Line: 2 Col: 4 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <p> -| <b> -| <i> -| <u> -| <b> -| <i> -| <u> -| " -" -| <p> -| "X" - -#data -<!doctype html></html> <head> -#errors -Line: 1 Col: 22 Unexpected end tag (html) after the (implied) root element. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| " " - -#data -<!doctype html></body><meta> -#errors -Line: 1 Col: 22 Unexpected end tag (body) after the (implied) root element. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <meta> - -#data -<html></html><!-- foo --> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -Line: 1 Col: 13 Unexpected end tag (html) after the (implied) root element. -#document -| <html> -| <head> -| <body> -| <!-- foo --> - -#data -<!doctype html></body><title>X</title> -#errors -Line: 1 Col: 22 Unexpected end tag (body) after the (implied) root element. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <title> -| "X" - -#data -<!doctype html><table> X<meta></table> -#errors -Line: 1 Col: 24 Unexpected non-space characters in table context caused voodoo mode. -Line: 1 Col: 30 Unexpected start tag (meta) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| " X" -| <meta> -| <table> - -#data -<!doctype html><table> x</table> -#errors -Line: 1 Col: 24 Unexpected non-space characters in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| " x" -| <table> - -#data -<!doctype html><table> x </table> -#errors -Line: 1 Col: 25 Unexpected non-space characters in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| " x " -| <table> - -#data -<!doctype html><table><tr> x</table> -#errors -Line: 1 Col: 28 Unexpected non-space characters in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| " x" -| <table> -| <tbody> -| <tr> - -#data -<!doctype html><table>X<style> <tr>x </style> </table> -#errors -Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "X" -| <table> -| <style> -| " <tr>x " -| " " - -#data -<!doctype html><div><table><a>foo</a> <tr><td>bar</td> </tr></table></div> -#errors -Line: 1 Col: 30 Unexpected start tag (a) in table context caused voodoo mode. -Line: 1 Col: 37 Unexpected end tag (a) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <div> -| <a> -| "foo" -| <table> -| " " -| <tbody> -| <tr> -| <td> -| "bar" -| " " - -#data -<frame></frame></frame><frameset><frame><frameset><frame></frameset><noframes></frameset><noframes> -#errors -6: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -13: Stray start tag “frame”. -21: Stray end tag “frame”. -29: Stray end tag “frame”. -39: “frameset” start tag after “body” already open. -105: End of file seen inside an [R]CDATA element. -105: End of file seen and there were open elements. -XXX: These errors are wrong, please fix me! -#document -| <html> -| <head> -| <frameset> -| <frame> -| <frameset> -| <frame> -| <noframes> -| "</frameset><noframes>" - -#data -<!DOCTYPE html><object></html> -#errors -1: Expected closing tag. Unexpected end of file -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <object> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests16.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests16.dat deleted file mode 100644 index c8ef66f0..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests16.dat +++ /dev/null @@ -1,2299 +0,0 @@ -#data -<!doctype html><script> -#errors -Line: 1 Col: 23 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| <body> - -#data -<!doctype html><script>a -#errors -Line: 1 Col: 24 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "a" -| <body> - -#data -<!doctype html><script>< -#errors -Line: 1 Col: 24 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<" -| <body> - -#data -<!doctype html><script></ -#errors -Line: 1 Col: 25 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</" -| <body> - -#data -<!doctype html><script></S -#errors -Line: 1 Col: 26 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</S" -| <body> - -#data -<!doctype html><script></SC -#errors -Line: 1 Col: 27 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</SC" -| <body> - -#data -<!doctype html><script></SCR -#errors -Line: 1 Col: 28 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</SCR" -| <body> - -#data -<!doctype html><script></SCRI -#errors -Line: 1 Col: 29 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</SCRI" -| <body> - -#data -<!doctype html><script></SCRIP -#errors -Line: 1 Col: 30 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</SCRIP" -| <body> - -#data -<!doctype html><script></SCRIPT -#errors -Line: 1 Col: 31 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</SCRIPT" -| <body> - -#data -<!doctype html><script></SCRIPT -#errors -Line: 1 Col: 32 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| <body> - -#data -<!doctype html><script></s -#errors -Line: 1 Col: 26 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</s" -| <body> - -#data -<!doctype html><script></sc -#errors -Line: 1 Col: 27 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</sc" -| <body> - -#data -<!doctype html><script></scr -#errors -Line: 1 Col: 28 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</scr" -| <body> - -#data -<!doctype html><script></scri -#errors -Line: 1 Col: 29 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</scri" -| <body> - -#data -<!doctype html><script></scrip -#errors -Line: 1 Col: 30 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</scrip" -| <body> - -#data -<!doctype html><script></script -#errors -Line: 1 Col: 31 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "</script" -| <body> - -#data -<!doctype html><script></script -#errors -Line: 1 Col: 32 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| <body> - -#data -<!doctype html><script><! -#errors -Line: 1 Col: 25 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!" -| <body> - -#data -<!doctype html><script><!a -#errors -Line: 1 Col: 26 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!a" -| <body> - -#data -<!doctype html><script><!- -#errors -Line: 1 Col: 26 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!-" -| <body> - -#data -<!doctype html><script><!-a -#errors -Line: 1 Col: 27 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!-a" -| <body> - -#data -<!doctype html><script><!-- -#errors -Line: 1 Col: 27 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--" -| <body> - -#data -<!doctype html><script><!--a -#errors -Line: 1 Col: 28 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--a" -| <body> - -#data -<!doctype html><script><!--< -#errors -Line: 1 Col: 28 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<" -| <body> - -#data -<!doctype html><script><!--<a -#errors -Line: 1 Col: 29 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<a" -| <body> - -#data -<!doctype html><script><!--</ -#errors -Line: 1 Col: 27 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--</" -| <body> - -#data -<!doctype html><script><!--</script -#errors -Line: 1 Col: 35 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--</script" -| <body> - -#data -<!doctype html><script><!--</script -#errors -Line: 1 Col: 36 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--" -| <body> - -#data -<!doctype html><script><!--<s -#errors -Line: 1 Col: 29 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<s" -| <body> - -#data -<!doctype html><script><!--<script -#errors -Line: 1 Col: 34 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script" -| <body> - -#data -<!doctype html><script><!--<script -#errors -Line: 1 Col: 35 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script " -| <body> - -#data -<!doctype html><script><!--<script < -#errors -Line: 1 Col: 36 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script <" -| <body> - -#data -<!doctype html><script><!--<script <a -#errors -Line: 1 Col: 37 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script <a" -| <body> - -#data -<!doctype html><script><!--<script </ -#errors -Line: 1 Col: 37 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </" -| <body> - -#data -<!doctype html><script><!--<script </s -#errors -Line: 1 Col: 38 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </s" -| <body> - -#data -<!doctype html><script><!--<script </script -#errors -Line: 1 Col: 43 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script" -| <body> - -#data -<!doctype html><script><!--<script </scripta -#errors -Line: 1 Col: 44 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </scripta" -| <body> - -#data -<!doctype html><script><!--<script </script -#errors -Line: 1 Col: 44 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script " -| <body> - -#data -<!doctype html><script><!--<script </script> -#errors -Line: 1 Col: 44 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script>" -| <body> - -#data -<!doctype html><script><!--<script </script/ -#errors -Line: 1 Col: 44 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script/" -| <body> - -#data -<!doctype html><script><!--<script </script < -#errors -Line: 1 Col: 45 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script <" -| <body> - -#data -<!doctype html><script><!--<script </script <a -#errors -Line: 1 Col: 46 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script <a" -| <body> - -#data -<!doctype html><script><!--<script </script </ -#errors -Line: 1 Col: 46 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script </" -| <body> - -#data -<!doctype html><script><!--<script </script </script -#errors -Line: 1 Col: 52 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script </script" -| <body> - -#data -<!doctype html><script><!--<script </script </script -#errors -Line: 1 Col: 53 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script " -| <body> - -#data -<!doctype html><script><!--<script </script </script/ -#errors -Line: 1 Col: 53 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script " -| <body> - -#data -<!doctype html><script><!--<script </script </script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script </script " -| <body> - -#data -<!doctype html><script><!--<script - -#errors -Line: 1 Col: 36 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script -" -| <body> - -#data -<!doctype html><script><!--<script -a -#errors -Line: 1 Col: 37 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script -a" -| <body> - -#data -<!doctype html><script><!--<script -< -#errors -Line: 1 Col: 37 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script -<" -| <body> - -#data -<!doctype html><script><!--<script -- -#errors -Line: 1 Col: 37 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script --" -| <body> - -#data -<!doctype html><script><!--<script --a -#errors -Line: 1 Col: 38 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script --a" -| <body> - -#data -<!doctype html><script><!--<script --< -#errors -Line: 1 Col: 38 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script --<" -| <body> - -#data -<!doctype html><script><!--<script --> -#errors -Line: 1 Col: 38 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script -->" -| <body> - -#data -<!doctype html><script><!--<script -->< -#errors -Line: 1 Col: 39 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script --><" -| <body> - -#data -<!doctype html><script><!--<script --></ -#errors -Line: 1 Col: 40 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script --></" -| <body> - -#data -<!doctype html><script><!--<script --></script -#errors -Line: 1 Col: 46 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script --></script" -| <body> - -#data -<!doctype html><script><!--<script --></script -#errors -Line: 1 Col: 47 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script -->" -| <body> - -#data -<!doctype html><script><!--<script --></script/ -#errors -Line: 1 Col: 47 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script -->" -| <body> - -#data -<!doctype html><script><!--<script --></script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script -->" -| <body> - -#data -<!doctype html><script><!--<script><\/script>--></script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script><\/script>-->" -| <body> - -#data -<!doctype html><script><!--<script></scr'+'ipt>--></script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script></scr'+'ipt>-->" -| <body> - -#data -<!doctype html><script><!--<script></script><script></script></script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>" -| <body> - -#data -<!doctype html><script><!--<script></script><script></script>--><!--</script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>--><!--" -| <body> - -#data -<!doctype html><script><!--<script></script><script></script>-- ></script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>-- >" -| <body> - -#data -<!doctype html><script><!--<script></script><script></script>- -></script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>- ->" -| <body> - -#data -<!doctype html><script><!--<script></script><script></script>- - ></script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>- - >" -| <body> - -#data -<!doctype html><script><!--<script></script><script></script>-></script> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>->" -| <body> - -#data -<!doctype html><script><!--<script>--!></script>X -#errors -Line: 1 Col: 49 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script>--!></script>X" -| <body> - -#data -<!doctype html><script><!--<scr'+'ipt></script>--></script> -#errors -Line: 1 Col: 59 Unexpected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<scr'+'ipt>" -| <body> -| "-->" - -#data -<!doctype html><script><!--<script></scr'+'ipt></script>X -#errors -Line: 1 Col: 57 Unexpected end of file. Expected end tag (script). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| "<!--<script></scr'+'ipt></script>X" -| <body> - -#data -<!doctype html><style><!--<style></style>--></style> -#errors -Line: 1 Col: 52 Unexpected end tag (style). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| "<!--<style>" -| <body> -| "-->" - -#data -<!doctype html><style><!--</style>X -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| "<!--" -| <body> -| "X" - -#data -<!doctype html><style><!--...</style>...--></style> -#errors -Line: 1 Col: 51 Unexpected end tag (style). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| "<!--..." -| <body> -| "...-->" - -#data -<!doctype html><style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>" -| <body> -| "X" - -#data -<!doctype html><style><!--...<style><!--...--!></style>--></style> -#errors -Line: 1 Col: 66 Unexpected end tag (style). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| "<!--...<style><!--...--!>" -| <body> -| "-->" - -#data -<!doctype html><style><!--...</style><!-- --><style>@import ...</style> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| "<!--..." -| <!-- --> -| <style> -| "@import ..." -| <body> - -#data -<!doctype html><style>...<style><!--...</style><!-- --></style> -#errors -Line: 1 Col: 63 Unexpected end tag (style). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| "...<style><!--..." -| <!-- --> -| <body> - -#data -<!doctype html><style>...<!--[if IE]><style>...</style>X -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <style> -| "...<!--[if IE]><style>..." -| <body> -| "X" - -#data -<!doctype html><title><!--<title></title>--></title> -#errors -Line: 1 Col: 52 Unexpected end tag (title). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <title> -| "<!--<title>" -| <body> -| "-->" - -#data -<!doctype html><title>&lt;/title></title> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <title> -| "</title>" -| <body> - -#data -<!doctype html><title>foo/title><link></head><body>X -#errors -Line: 1 Col: 52 Unexpected end of file. Expected end tag (title). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <title> -| "foo/title><link></head><body>X" -| <body> - -#data -<!doctype html><noscript><!--<noscript></noscript>--></noscript> -#errors -Line: 1 Col: 64 Unexpected end tag (noscript). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <noscript> -| "<!--<noscript>" -| <body> -| "-->" - -#data -<!doctype html><noscript><!--</noscript>X<noscript>--></noscript> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <noscript> -| "<!--" -| <body> -| "X" -| <noscript> -| "-->" - -#data -<!doctype html><noscript><iframe></noscript>X -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <noscript> -| "<iframe>" -| <body> -| "X" - -#data -<!doctype html><noframes><!--<noframes></noframes>--></noframes> -#errors -Line: 1 Col: 64 Unexpected end tag (noframes). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <noframes> -| "<!--<noframes>" -| <body> -| "-->" - -#data -<!doctype html><noframes><body><script><!--...</script></body></noframes></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <noframes> -| "<body><script><!--...</script></body>" -| <body> - -#data -<!doctype html><textarea><!--<textarea></textarea>--></textarea> -#errors -Line: 1 Col: 64 Unexpected end tag (textarea). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <textarea> -| "<!--<textarea>" -| "-->" - -#data -<!doctype html><textarea>&lt;/textarea></textarea> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <textarea> -| "</textarea>" - -#data -<!doctype html><textarea>&lt;</textarea> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <textarea> -| "<" - -#data -<!doctype html><textarea>a&lt;b</textarea> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <textarea> -| "a<b" - -#data -<!doctype html><iframe><!--<iframe></iframe>--></iframe> -#errors -Line: 1 Col: 56 Unexpected end tag (iframe). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <iframe> -| "<!--<iframe>" -| "-->" - -#data -<!doctype html><iframe>...<!--X->...<!--/X->...</iframe> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <iframe> -| "...<!--X->...<!--/X->..." - -#data -<!doctype html><xmp><!--<xmp></xmp>--></xmp> -#errors -Line: 1 Col: 44 Unexpected end tag (xmp). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <xmp> -| "<!--<xmp>" -| "-->" - -#data -<!doctype html><noembed><!--<noembed></noembed>--></noembed> -#errors -Line: 1 Col: 60 Unexpected end tag (noembed). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <noembed> -| "<!--<noembed>" -| "-->" - -#data -<script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 8 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| <body> - -#data -<script>a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 9 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "a" -| <body> - -#data -<script>< -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 9 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<" -| <body> - -#data -<script></ -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 10 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</" -| <body> - -#data -<script></S -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</S" -| <body> - -#data -<script></SC -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 12 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</SC" -| <body> - -#data -<script></SCR -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 13 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</SCR" -| <body> - -#data -<script></SCRI -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</SCRI" -| <body> - -#data -<script></SCRIP -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 15 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</SCRIP" -| <body> - -#data -<script></SCRIPT -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 16 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</SCRIPT" -| <body> - -#data -<script></SCRIPT -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 17 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| <body> - -#data -<script></s -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</s" -| <body> - -#data -<script></sc -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 12 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</sc" -| <body> - -#data -<script></scr -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 13 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</scr" -| <body> - -#data -<script></scri -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</scri" -| <body> - -#data -<script></scrip -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 15 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</scrip" -| <body> - -#data -<script></script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 16 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</script" -| <body> - -#data -<script></script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 17 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| <body> - -#data -<script><! -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 10 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!" -| <body> - -#data -<script><!a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!a" -| <body> - -#data -<script><!- -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!-" -| <body> - -#data -<script><!-a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 12 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!-a" -| <body> - -#data -<script><!-- -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 12 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--" -| <body> - -#data -<script><!--a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 13 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--a" -| <body> - -#data -<script><!--< -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 13 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<" -| <body> - -#data -<script><!--<a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<a" -| <body> - -#data -<script><!--</ -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--</" -| <body> - -#data -<script><!--</script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 20 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--</script" -| <body> - -#data -<script><!--</script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 21 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--" -| <body> - -#data -<script><!--<s -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<s" -| <body> - -#data -<script><!--<script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 19 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script" -| <body> - -#data -<script><!--<script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 20 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script " -| <body> - -#data -<script><!--<script < -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 21 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script <" -| <body> - -#data -<script><!--<script <a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 22 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script <a" -| <body> - -#data -<script><!--<script </ -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 22 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </" -| <body> - -#data -<script><!--<script </s -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 23 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </s" -| <body> - -#data -<script><!--<script </script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 28 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script" -| <body> - -#data -<script><!--<script </scripta -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 29 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </scripta" -| <body> - -#data -<script><!--<script </script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 29 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script " -| <body> - -#data -<script><!--<script </script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 29 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script>" -| <body> - -#data -<script><!--<script </script/ -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 29 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script/" -| <body> - -#data -<script><!--<script </script < -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 30 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script <" -| <body> - -#data -<script><!--<script </script <a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 31 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script <a" -| <body> - -#data -<script><!--<script </script </ -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 31 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script </" -| <body> - -#data -<script><!--<script </script </script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 38 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script </script" -| <body> - -#data -<script><!--<script </script </script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 38 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script " -| <body> - -#data -<script><!--<script </script </script/ -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 38 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script </script " -| <body> - -#data -<script><!--<script </script </script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script </script " -| <body> - -#data -<script><!--<script - -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 21 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script -" -| <body> - -#data -<script><!--<script -a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 22 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script -a" -| <body> - -#data -<script><!--<script -- -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 22 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script --" -| <body> - -#data -<script><!--<script --a -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 23 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script --a" -| <body> - -#data -<script><!--<script --> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 23 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script -->" -| <body> - -#data -<script><!--<script -->< -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 24 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script --><" -| <body> - -#data -<script><!--<script --></ -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 25 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script --></" -| <body> - -#data -<script><!--<script --></script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 31 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script --></script" -| <body> - -#data -<script><!--<script --></script -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 32 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script -->" -| <body> - -#data -<script><!--<script --></script/ -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 32 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script -->" -| <body> - -#data -<script><!--<script --></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script -->" -| <body> - -#data -<script><!--<script><\/script>--></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script><\/script>-->" -| <body> - -#data -<script><!--<script></scr'+'ipt>--></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script></scr'+'ipt>-->" -| <body> - -#data -<script><!--<script></script><script></script></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>" -| <body> - -#data -<script><!--<script></script><script></script>--><!--</script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>--><!--" -| <body> - -#data -<script><!--<script></script><script></script>-- ></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>-- >" -| <body> - -#data -<script><!--<script></script><script></script>- -></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>- ->" -| <body> - -#data -<script><!--<script></script><script></script>- - ></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>- - >" -| <body> - -#data -<script><!--<script></script><script></script>-></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| "<!--<script></script><script></script>->" -| <body> - -#data -<script><!--<script>--!></script>X -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 34 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script>--!></script>X" -| <body> - -#data -<script><!--<scr'+'ipt></script>--></script> -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 44 Unexpected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<scr'+'ipt>" -| <body> -| "-->" - -#data -<script><!--<script></scr'+'ipt></script>X -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 42 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "<!--<script></scr'+'ipt></script>X" -| <body> - -#data -<style><!--<style></style>--></style> -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -Line: 1 Col: 37 Unexpected end tag (style). -#document -| <html> -| <head> -| <style> -| "<!--<style>" -| <body> -| "-->" - -#data -<style><!--</style>X -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -#document -| <html> -| <head> -| <style> -| "<!--" -| <body> -| "X" - -#data -<style><!--...</style>...--></style> -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -Line: 1 Col: 36 Unexpected end tag (style). -#document -| <html> -| <head> -| <style> -| "<!--..." -| <body> -| "...-->" - -#data -<style><!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style></style>X -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -#document -| <html> -| <head> -| <style> -| "<!--<br><html xmlns:v="urn:schemas-microsoft-com:vml"><!--[if !mso]><style>" -| <body> -| "X" - -#data -<style><!--...<style><!--...--!></style>--></style> -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -Line: 1 Col: 51 Unexpected end tag (style). -#document -| <html> -| <head> -| <style> -| "<!--...<style><!--...--!>" -| <body> -| "-->" - -#data -<style><!--...</style><!-- --><style>@import ...</style> -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -#document -| <html> -| <head> -| <style> -| "<!--..." -| <!-- --> -| <style> -| "@import ..." -| <body> - -#data -<style>...<style><!--...</style><!-- --></style> -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -Line: 1 Col: 48 Unexpected end tag (style). -#document -| <html> -| <head> -| <style> -| "...<style><!--..." -| <!-- --> -| <body> - -#data -<style>...<!--[if IE]><style>...</style>X -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -#document -| <html> -| <head> -| <style> -| "...<!--[if IE]><style>..." -| <body> -| "X" - -#data -<title><!--<title></title>--></title> -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -Line: 1 Col: 37 Unexpected end tag (title). -#document -| <html> -| <head> -| <title> -| "<!--<title>" -| <body> -| "-->" - -#data -<title>&lt;/title></title> -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -#document -| <html> -| <head> -| <title> -| "</title>" -| <body> - -#data -<title>foo/title><link></head><body>X -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -Line: 1 Col: 37 Unexpected end of file. Expected end tag (title). -#document -| <html> -| <head> -| <title> -| "foo/title><link></head><body>X" -| <body> - -#data -<noscript><!--<noscript></noscript>--></noscript> -#errors -Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE. -Line: 1 Col: 49 Unexpected end tag (noscript). -#document -| <html> -| <head> -| <noscript> -| "<!--<noscript>" -| <body> -| "-->" - -#data -<noscript><!--</noscript>X<noscript>--></noscript> -#errors -Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE. -#document -| <html> -| <head> -| <noscript> -| "<!--" -| <body> -| "X" -| <noscript> -| "-->" - -#data -<noscript><iframe></noscript>X -#errors -Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE. -#document -| <html> -| <head> -| <noscript> -| "<iframe>" -| <body> -| "X" - -#data -<noframes><!--<noframes></noframes>--></noframes> -#errors -Line: 1 Col: 10 Unexpected start tag (noframes). Expected DOCTYPE. -Line: 1 Col: 49 Unexpected end tag (noframes). -#document -| <html> -| <head> -| <noframes> -| "<!--<noframes>" -| <body> -| "-->" - -#data -<noframes><body><script><!--...</script></body></noframes></html> -#errors -Line: 1 Col: 10 Unexpected start tag (noframes). Expected DOCTYPE. -#document -| <html> -| <head> -| <noframes> -| "<body><script><!--...</script></body>" -| <body> - -#data -<textarea><!--<textarea></textarea>--></textarea> -#errors -Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE. -Line: 1 Col: 49 Unexpected end tag (textarea). -#document -| <html> -| <head> -| <body> -| <textarea> -| "<!--<textarea>" -| "-->" - -#data -<textarea>&lt;/textarea></textarea> -#errors -Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <textarea> -| "</textarea>" - -#data -<iframe><!--<iframe></iframe>--></iframe> -#errors -Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE. -Line: 1 Col: 41 Unexpected end tag (iframe). -#document -| <html> -| <head> -| <body> -| <iframe> -| "<!--<iframe>" -| "-->" - -#data -<iframe>...<!--X->...<!--/X->...</iframe> -#errors -Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <iframe> -| "...<!--X->...<!--/X->..." - -#data -<xmp><!--<xmp></xmp>--></xmp> -#errors -Line: 1 Col: 5 Unexpected start tag (xmp). Expected DOCTYPE. -Line: 1 Col: 29 Unexpected end tag (xmp). -#document -| <html> -| <head> -| <body> -| <xmp> -| "<!--<xmp>" -| "-->" - -#data -<noembed><!--<noembed></noembed>--></noembed> -#errors -Line: 1 Col: 9 Unexpected start tag (noembed). Expected DOCTYPE. -Line: 1 Col: 45 Unexpected end tag (noembed). -#document -| <html> -| <head> -| <body> -| <noembed> -| "<!--<noembed>" -| "-->" - -#data -<!doctype html><table> - -#errors -Line 2 Col 0 Unexpected end of file. Expected table content. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| " -" - -#data -<!doctype html><table><td><span><font></span><span> -#errors -Line 1 Col 26 Unexpected table cell start tag (td) in the table body phase. -Line 1 Col 45 Unexpected end tag (span). -Line 1 Col 51 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <span> -| <font> -| <font> -| <span> - -#data -<!doctype html><form><table></form><form></table></form> -#errors -35: Stray end tag “form”. -41: Start tag “form” seen in “table”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <form> -| <table> -| <form> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests17.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests17.dat deleted file mode 100644 index 7b555f88..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests17.dat +++ /dev/null @@ -1,153 +0,0 @@ -#data -<!doctype html><table><tbody><select><tr> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <table> -| <tbody> -| <tr> - -#data -<!doctype html><table><tr><select><td> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <table> -| <tbody> -| <tr> -| <td> - -#data -<!doctype html><table><tr><td><select><td> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <select> -| <td> - -#data -<!doctype html><table><tr><th><select><td> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <th> -| <select> -| <td> - -#data -<!doctype html><table><caption><select><tr> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <select> -| <tbody> -| <tr> - -#data -<!doctype html><select><tr> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!doctype html><select><td> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!doctype html><select><th> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!doctype html><select><tbody> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!doctype html><select><thead> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!doctype html><select><tfoot> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!doctype html><select><caption> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!doctype html><table><tr></table>a -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| "a" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests18.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests18.dat deleted file mode 100644 index 680e1f06..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests18.dat +++ /dev/null @@ -1,269 +0,0 @@ -#data -<!doctype html><plaintext></plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <plaintext> -| "</plaintext>" - -#data -<!doctype html><table><plaintext></plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <plaintext> -| "</plaintext>" -| <table> - -#data -<!doctype html><table><tbody><plaintext></plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <plaintext> -| "</plaintext>" -| <table> -| <tbody> - -#data -<!doctype html><table><tbody><tr><plaintext></plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <plaintext> -| "</plaintext>" -| <table> -| <tbody> -| <tr> - -#data -<!doctype html><table><tbody><tr><plaintext></plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <plaintext> -| "</plaintext>" -| <table> -| <tbody> -| <tr> - -#data -<!doctype html><table><td><plaintext></plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <plaintext> -| "</plaintext>" - -#data -<!doctype html><table><caption><plaintext></plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <plaintext> -| "</plaintext>" - -#data -<!doctype html><table><tr><style></script></style>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "abc" -| <table> -| <tbody> -| <tr> -| <style> -| "</script>" - -#data -<!doctype html><table><tr><script></style></script>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "abc" -| <table> -| <tbody> -| <tr> -| <script> -| "</style>" - -#data -<!doctype html><table><caption><style></script></style>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <style> -| "</script>" -| "abc" - -#data -<!doctype html><table><td><style></script></style>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <style> -| "</script>" -| "abc" - -#data -<!doctype html><select><script></style></script>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <script> -| "</style>" -| "abc" - -#data -<!doctype html><table><select><script></style></script>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <script> -| "</style>" -| "abc" -| <table> - -#data -<!doctype html><table><tr><select><script></style></script>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <script> -| "</style>" -| "abc" -| <table> -| <tbody> -| <tr> - -#data -<!doctype html><frameset></frameset><noframes>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <noframes> -| "abc" - -#data -<!doctype html><frameset></frameset><noframes>abc</noframes><!--abc--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <noframes> -| "abc" -| <!-- abc --> - -#data -<!doctype html><frameset></frameset></html><noframes>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <noframes> -| "abc" - -#data -<!doctype html><frameset></frameset></html><noframes>abc</noframes><!--abc--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <noframes> -| "abc" -| <!-- abc --> - -#data -<!doctype html><table><tr></tbody><tfoot> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <tfoot> - -#data -<!doctype html><table><td><svg></svg>abc<td> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <svg svg> -| "abc" -| <td> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests19.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests19.dat deleted file mode 100644 index 0d62f5a5..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests19.dat +++ /dev/null @@ -1,1237 +0,0 @@ -#data -<!doctype html><math><mn DefinitionUrl="foo"> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mn> -| definitionURL="foo" - -#data -<!doctype html><html></p><!--foo--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <!-- foo --> -| <head> -| <body> - -#data -<!doctype html><head></head></p><!--foo--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <!-- foo --> -| <body> - -#data -<!doctype html><body><p><pre> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <pre> - -#data -<!doctype html><body><p><listing> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <listing> - -#data -<!doctype html><p><plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <plaintext> - -#data -<!doctype html><p><h1> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <h1> - -#data -<!doctype html><form><isindex> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <form> - -#data -<!doctype html><isindex action="POST"> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <form> -| action="POST" -| <hr> -| <label> -| "This is a searchable index. Enter search keywords: " -| <input> -| name="isindex" -| <hr> - -#data -<!doctype html><isindex prompt="this is isindex"> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <form> -| <hr> -| <label> -| "this is isindex" -| <input> -| name="isindex" -| <hr> - -#data -<!doctype html><isindex type="hidden"> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <form> -| <hr> -| <label> -| "This is a searchable index. Enter search keywords: " -| <input> -| name="isindex" -| type="hidden" -| <hr> - -#data -<!doctype html><isindex name="foo"> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <form> -| <hr> -| <label> -| "This is a searchable index. Enter search keywords: " -| <input> -| name="isindex" -| <hr> - -#data -<!doctype html><ruby><p><rp> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <ruby> -| <p> -| <rp> - -#data -<!doctype html><ruby><div><span><rp> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <ruby> -| <div> -| <span> -| <rp> - -#data -<!doctype html><ruby><div><p><rp> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <ruby> -| <div> -| <p> -| <rp> - -#data -<!doctype html><ruby><p><rt> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <ruby> -| <p> -| <rt> - -#data -<!doctype html><ruby><div><span><rt> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <ruby> -| <div> -| <span> -| <rt> - -#data -<!doctype html><ruby><div><p><rt> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <ruby> -| <div> -| <p> -| <rt> - -#data -<!doctype html><math/><foo> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <foo> - -#data -<!doctype html><svg/><foo> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <foo> - -#data -<!doctype html><div></body><!--foo--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <div> -| <!-- foo --> - -#data -<!doctype html><h1><div><h3><span></h1>foo -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <h1> -| <div> -| <h3> -| <span> -| "foo" - -#data -<!doctype html><p></h3>foo -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| "foo" - -#data -<!doctype html><h3><li>abc</h2>foo -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <h3> -| <li> -| "abc" -| "foo" - -#data -<!doctype html><table>abc<!--foo--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "abc" -| <table> -| <!-- foo --> - -#data -<!doctype html><table> <!--foo--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| " " -| <!-- foo --> - -#data -<!doctype html><table> b <!--foo--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| " b " -| <table> -| <!-- foo --> - -#data -<!doctype html><select><option><option> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <option> -| <option> - -#data -<!doctype html><select><option></optgroup> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <option> - -#data -<!doctype html><select><option></optgroup> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <option> - -#data -<!doctype html><p><math><mi><p><h1> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <math math> -| <math mi> -| <p> -| <h1> - -#data -<!doctype html><p><math><mo><p><h1> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <math math> -| <math mo> -| <p> -| <h1> - -#data -<!doctype html><p><math><mn><p><h1> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <math math> -| <math mn> -| <p> -| <h1> - -#data -<!doctype html><p><math><ms><p><h1> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <math math> -| <math ms> -| <p> -| <h1> - -#data -<!doctype html><p><math><mtext><p><h1> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <math math> -| <math mtext> -| <p> -| <h1> - -#data -<!doctype html><frameset></noframes> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!doctype html><html c=d><body></html><html a=b> -#errors -#document -| <!DOCTYPE html> -| <html> -| a="b" -| c="d" -| <head> -| <body> - -#data -<!doctype html><html c=d><frameset></frameset></html><html a=b> -#errors -#document -| <!DOCTYPE html> -| <html> -| a="b" -| c="d" -| <head> -| <frameset> - -#data -<!doctype html><html><frameset></frameset></html><!--foo--> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <!-- foo --> - -#data -<!doctype html><html><frameset></frameset></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| " " - -#data -<!doctype html><html><frameset></frameset></html>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!doctype html><html><frameset></frameset></html><p> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!doctype html><html><frameset></frameset></html></p> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<html><frameset></frameset></html><!doctype html> -#errors -#document -| <html> -| <head> -| <frameset> - -#data -<!doctype html><body><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> - -#data -<!doctype html><p><frameset><frame> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <frame> - -#data -<!doctype html><p>a<frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| "a" - -#data -<!doctype html><p> <frameset><frame> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <frame> - -#data -<!doctype html><pre><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> - -#data -<!doctype html><listing><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <listing> - -#data -<!doctype html><li><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <li> - -#data -<!doctype html><dd><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <dd> - -#data -<!doctype html><dt><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <dt> - -#data -<!doctype html><button><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <button> - -#data -<!doctype html><applet><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <applet> - -#data -<!doctype html><marquee><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <marquee> - -#data -<!doctype html><object><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <object> - -#data -<!doctype html><table><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> - -#data -<!doctype html><area><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <area> - -#data -<!doctype html><basefont><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <basefont> -| <frameset> - -#data -<!doctype html><bgsound><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <bgsound> -| <frameset> - -#data -<!doctype html><br><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <br> - -#data -<!doctype html><embed><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <embed> - -#data -<!doctype html><img><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <img> - -#data -<!doctype html><input><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <input> - -#data -<!doctype html><keygen><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <keygen> - -#data -<!doctype html><wbr><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <wbr> - -#data -<!doctype html><hr><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <hr> - -#data -<!doctype html><textarea></textarea><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <textarea> - -#data -<!doctype html><xmp></xmp><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <xmp> - -#data -<!doctype html><iframe></iframe><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <iframe> - -#data -<!doctype html><select></select><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!doctype html><svg></svg><frameset><frame> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <frame> - -#data -<!doctype html><math></math><frameset><frame> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <frame> - -#data -<!doctype html><svg><foreignObject><div> <frameset><frame> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <frame> - -#data -<!doctype html><svg>a</svg><frameset><frame> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| "a" - -#data -<!doctype html><svg> </svg><frameset><frame> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> -| <frame> - -#data -<html>aaa<frameset></frameset> -#errors -#document -| <html> -| <head> -| <body> -| "aaa" - -#data -<html> a <frameset></frameset> -#errors -#document -| <html> -| <head> -| <body> -| "a " - -#data -<!doctype html><div><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!doctype html><div><body><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <div> - -#data -<!doctype html><p><math></p>a -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <math math> -| "a" - -#data -<!doctype html><p><math><mn><span></p>a -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <math math> -| <math mn> -| <span> -| <p> -| "a" - -#data -<!doctype html><math></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> - -#data -<!doctype html><meta charset="ascii"> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <meta> -| charset="ascii" -| <body> - -#data -<!doctype html><meta http-equiv="content-type" content="text/html;charset=ascii"> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <meta> -| content="text/html;charset=ascii" -| http-equiv="content-type" -| <body> - -#data -<!doctype html><head><!--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa--><meta charset="utf8"> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <!-- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa --> -| <meta> -| charset="utf8" -| <body> - -#data -<!doctype html><html a=b><head></head><html c=d> -#errors -#document -| <!DOCTYPE html> -| <html> -| a="b" -| c="d" -| <head> -| <body> - -#data -<!doctype html><image/> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <img> - -#data -<!doctype html>a<i>b<table>c<b>d</i>e</b>f -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "a" -| <i> -| "bc" -| <b> -| "de" -| "f" -| <table> - -#data -<!doctype html><table><i>a<b>b<div>c<a>d</i>e</b>f -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <i> -| "a" -| <b> -| "b" -| <b> -| <div> -| <b> -| <i> -| "c" -| <a> -| "d" -| <a> -| "e" -| <a> -| "f" -| <table> - -#data -<!doctype html><i>a<b>b<div>c<a>d</i>e</b>f -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <i> -| "a" -| <b> -| "b" -| <b> -| <div> -| <b> -| <i> -| "c" -| <a> -| "d" -| <a> -| "e" -| <a> -| "f" - -#data -<!doctype html><table><i>a<b>b<div>c</i> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <i> -| "a" -| <b> -| "b" -| <b> -| <div> -| <i> -| "c" -| <table> - -#data -<!doctype html><table><i>a<b>b<div>c<a>d</i>e</b>f -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <i> -| "a" -| <b> -| "b" -| <b> -| <div> -| <b> -| <i> -| "c" -| <a> -| "d" -| <a> -| "e" -| <a> -| "f" -| <table> - -#data -<!doctype html><table><i>a<div>b<tr>c<b>d</i>e -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <i> -| "a" -| <div> -| "b" -| <i> -| "c" -| <b> -| "d" -| <b> -| "e" -| <table> -| <tbody> -| <tr> - -#data -<!doctype html><table><td><table><i>a<div>b<b>c</i>d -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <i> -| "a" -| <div> -| <i> -| "b" -| <b> -| "c" -| <b> -| "d" -| <table> - -#data -<!doctype html><body><bgsound> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <bgsound> - -#data -<!doctype html><body><basefont> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <basefont> - -#data -<!doctype html><a><b></a><basefont> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <a> -| <b> -| <basefont> - -#data -<!doctype html><a><b></a><bgsound> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <a> -| <b> -| <bgsound> - -#data -<!doctype html><figcaption><article></figcaption>a -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <figcaption> -| <article> -| "a" - -#data -<!doctype html><summary><article></summary>a -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <summary> -| <article> -| "a" - -#data -<!doctype html><p><a><plaintext>b -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <a> -| <plaintext> -| <a> -| "b" - -#data -<!DOCTYPE html><div>a<a></div>b<p>c</p>d -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <div> -| "a" -| <a> -| <a> -| "b" -| <p> -| "c" -| "d" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests2.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests2.dat deleted file mode 100644 index 60d85922..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests2.dat +++ /dev/null @@ -1,763 +0,0 @@ -#data -<!DOCTYPE html>Test -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "Test" - -#data -<textarea>test</div>test -#errors -Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE. -Line: 1 Col: 24 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <textarea> -| "test</div>test" - -#data -<table><td> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 11 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> - -#data -<table><td>test</tbody></table> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected table cell start tag (td) in the table body phase. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| "test" - -#data -<frame>test -#errors -Line: 1 Col: 7 Unexpected start tag (frame). Expected DOCTYPE. -Line: 1 Col: 7 Unexpected start tag frame. Ignored. -#document -| <html> -| <head> -| <body> -| "test" - -#data -<!DOCTYPE html><frameset>test -#errors -Line: 1 Col: 29 Unepxected characters in the frameset phase. Characters ignored. -Line: 1 Col: 29 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!DOCTYPE html><frameset><!DOCTYPE html> -#errors -Line: 1 Col: 40 Unexpected DOCTYPE. Ignored. -Line: 1 Col: 40 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!DOCTYPE html><font><p><b>test</font> -#errors -Line: 1 Col: 38 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 38 End tag (font) violates step 1, paragraph 3 of the adoption agency algorithm. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <font> -| <p> -| <font> -| <b> -| "test" - -#data -<!DOCTYPE html><dt><div><dd> -#errors -Line: 1 Col: 28 Missing end tag (div, dt). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <dt> -| <div> -| <dd> - -#data -<script></x -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -Line: 1 Col: 11 Unexpected end of file. Expected end tag (script). -#document -| <html> -| <head> -| <script> -| "</x" -| <body> - -#data -<table><plaintext><td> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 18 Unexpected start tag (plaintext) in table context caused voodoo mode. -Line: 1 Col: 22 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <plaintext> -| "<td>" -| <table> - -#data -<plaintext></plaintext> -#errors -Line: 1 Col: 11 Unexpected start tag (plaintext). Expected DOCTYPE. -Line: 1 Col: 23 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <plaintext> -| "</plaintext>" - -#data -<!DOCTYPE html><table><tr>TEST -#errors -Line: 1 Col: 30 Unexpected non-space characters in table context caused voodoo mode. -Line: 1 Col: 30 Unexpected end of file. Expected table content. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "TEST" -| <table> -| <tbody> -| <tr> - -#data -<!DOCTYPE html><body t1=1><body t2=2><body t3=3 t4=4> -#errors -Line: 1 Col: 37 Unexpected start tag (body). -Line: 1 Col: 53 Unexpected start tag (body). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| t1="1" -| t2="2" -| t3="3" -| t4="4" - -#data -</b test -#errors -Line: 1 Col: 8 Unexpected end of file in attribute name. -Line: 1 Col: 8 End tag contains unexpected attributes. -Line: 1 Col: 8 Unexpected end tag (b). Expected DOCTYPE. -Line: 1 Col: 8 Unexpected end tag (b) after the (implied) root element. -#document -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html></b test<b &=&amp>X -#errors -Line: 1 Col: 32 Named entity didn't end with ';'. -Line: 1 Col: 33 End tag contains unexpected attributes. -Line: 1 Col: 33 Unexpected end tag (b) after the (implied) root element. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "X" - -#data -<!doctypehtml><scrIPt type=text/x-foobar;baz>X</SCRipt -#errors -Line: 1 Col: 9 No space after literal string 'DOCTYPE'. -Line: 1 Col: 54 Unexpected end of file in the tag name. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| type="text/x-foobar;baz" -| "X</SCRipt" -| <body> - -#data -& -#errors -Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "&" - -#data -&# -#errors -Line: 1 Col: 1 Numeric entity expected. Got end of file instead. -Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "&#" - -#data -&#X -#errors -Line: 1 Col: 3 Numeric entity expected but none found. -Line: 1 Col: 3 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "&#X" - -#data -&#x -#errors -Line: 1 Col: 3 Numeric entity expected but none found. -Line: 1 Col: 3 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "&#x" - -#data -&#45 -#errors -Line: 1 Col: 4 Numeric entity didn't end with ';'. -Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "-" - -#data -&x-test -#errors -Line: 1 Col: 1 Named entity expected. Got none. -Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "&x-test" - -#data -<!doctypehtml><p><li> -#errors -Line: 1 Col: 9 No space after literal string 'DOCTYPE'. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <li> - -#data -<!doctypehtml><p><dt> -#errors -Line: 1 Col: 9 No space after literal string 'DOCTYPE'. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <dt> - -#data -<!doctypehtml><p><dd> -#errors -Line: 1 Col: 9 No space after literal string 'DOCTYPE'. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <dd> - -#data -<!doctypehtml><p><form> -#errors -Line: 1 Col: 9 No space after literal string 'DOCTYPE'. -Line: 1 Col: 23 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <form> - -#data -<!DOCTYPE html><p></P>X -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| "X" - -#data -&AMP -#errors -Line: 1 Col: 4 Named entity didn't end with ';'. -Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "&" - -#data -&AMp; -#errors -Line: 1 Col: 1 Named entity expected. Got none. -Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "&AMp;" - -#data -<!DOCTYPE html><html><head></head><body><thisISasillyTESTelementNameToMakeSureCrazyTagNamesArePARSEDcorrectLY> -#errors -Line: 1 Col: 110 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <thisisasillytestelementnametomakesurecrazytagnamesareparsedcorrectly> - -#data -<!DOCTYPE html>X</body>X -#errors -Line: 1 Col: 24 Unexpected non-space characters in the after body phase. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "XX" - -#data -<!DOCTYPE html><!-- X -#errors -Line: 1 Col: 21 Unexpected end of file in comment. -#document -| <!DOCTYPE html> -| <!-- X --> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html><table><caption>test TEST</caption><td>test -#errors -Line: 1 Col: 54 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 58 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| "test TEST" -| <tbody> -| <tr> -| <td> -| "test" - -#data -<!DOCTYPE html><select><option><optgroup> -#errors -Line: 1 Col: 41 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <option> -| <optgroup> - -#data -<!DOCTYPE html><select><optgroup><option></optgroup><option><select><option> -#errors -Line: 1 Col: 68 Unexpected select start tag in the select phase treated as select end tag. -Line: 1 Col: 76 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <optgroup> -| <option> -| <option> -| <option> - -#data -<!DOCTYPE html><select><optgroup><option><optgroup> -#errors -Line: 1 Col: 51 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <optgroup> -| <option> -| <optgroup> - -#data -<!DOCTYPE html><datalist><option>foo</datalist>bar -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <datalist> -| <option> -| "foo" -| "bar" - -#data -<!DOCTYPE html><font><input><input></font> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <font> -| <input> -| <input> - -#data -<!DOCTYPE html><!-- XXX - XXX --> -#errors -#document -| <!DOCTYPE html> -| <!-- XXX - XXX --> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html><!-- XXX - XXX -#errors -Line: 1 Col: 29 Unexpected end of file in comment (-) -#document -| <!DOCTYPE html> -| <!-- XXX - XXX --> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html><!-- XXX - XXX - XXX --> -#errors -#document -| <!DOCTYPE html> -| <!-- XXX - XXX - XXX --> -| <html> -| <head> -| <body> - -#data -<isindex test=x name=x> -#errors -Line: 1 Col: 23 Unexpected start tag (isindex). Expected DOCTYPE. -Line: 1 Col: 23 Unexpected start tag isindex. Don't use it! -#document -| <html> -| <head> -| <body> -| <form> -| <hr> -| <label> -| "This is a searchable index. Enter search keywords: " -| <input> -| name="isindex" -| test="x" -| <hr> - -#data -test -test -#errors -Line: 2 Col: 4 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "test -test" - -#data -<!DOCTYPE html><body><title>test</body></title> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <title> -| "test</body>" - -#data -<!DOCTYPE html><body><title>X</title><meta name=z><link rel=foo><style> -x { content:"</style" } </style> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <title> -| "X" -| <meta> -| name="z" -| <link> -| rel="foo" -| <style> -| " -x { content:"</style" } " - -#data -<!DOCTYPE html><select><optgroup></optgroup></select> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <optgroup> - -#data - - -#errors -Line: 2 Col: 1 Unexpected End of file. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html> <html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html><script> -</script> <title>x</title> </head> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <script> -| " -" -| " " -| <title> -| "x" -| " " -| <body> - -#data -<!DOCTYPE html><html><body><html id=x> -#errors -Line: 1 Col: 38 html needs to be the first start tag. -#document -| <!DOCTYPE html> -| <html> -| id="x" -| <head> -| <body> - -#data -<!DOCTYPE html>X</body><html id="x"> -#errors -Line: 1 Col: 36 Unexpected start tag token (html) in the after body phase. -Line: 1 Col: 36 html needs to be the first start tag. -#document -| <!DOCTYPE html> -| <html> -| id="x" -| <head> -| <body> -| "X" - -#data -<!DOCTYPE html><head><html id=x> -#errors -Line: 1 Col: 32 html needs to be the first start tag. -#document -| <!DOCTYPE html> -| <html> -| id="x" -| <head> -| <body> - -#data -<!DOCTYPE html>X</html>X -#errors -Line: 1 Col: 24 Unexpected non-space characters in the after body phase. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "XX" - -#data -<!DOCTYPE html>X</html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "X " - -#data -<!DOCTYPE html>X</html><p>X -#errors -Line: 1 Col: 26 Unexpected start tag (p). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "X" -| <p> -| "X" - -#data -<!DOCTYPE html>X<p/x/y/z> -#errors -Line: 1 Col: 19 Expected a > after the /. -Line: 1 Col: 21 Solidus (/) incorrectly placed in tag. -Line: 1 Col: 23 Solidus (/) incorrectly placed in tag. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "X" -| <p> -| x="" -| y="" -| z="" - -#data -<!DOCTYPE html><!--x-- -#errors -Line: 1 Col: 22 Unexpected end of file in comment (--). -#document -| <!DOCTYPE html> -| <!-- x --> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE html><table><tr><td></p></table> -#errors -Line: 1 Col: 34 Unexpected end tag (p). Ignored. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <p> - -#data -<!DOCTYPE <!DOCTYPE HTML>><!--<!--x-->--> -#errors -Line: 1 Col: 20 Expected space or '>'. Got '' -Line: 1 Col: 25 Erroneous DOCTYPE. -Line: 1 Col: 35 Unexpected character in comment found. -#document -| <!DOCTYPE <!doctype> -| <html> -| <head> -| <body> -| ">" -| <!-- <!--x --> -| "-->" - -#data -<!doctype html><div><form></form><div></div></div> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <div> -| <form> -| <div> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests20.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests20.dat deleted file mode 100644 index 6bd82560..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests20.dat +++ /dev/null @@ -1,455 +0,0 @@ -#data -<!doctype html><p><button><button> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <button> - -#data -<!doctype html><p><button><address> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <address> - -#data -<!doctype html><p><button><blockquote> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <blockquote> - -#data -<!doctype html><p><button><menu> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <menu> - -#data -<!doctype html><p><button><p> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <p> - -#data -<!doctype html><p><button><ul> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <ul> - -#data -<!doctype html><p><button><h1> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <h1> - -#data -<!doctype html><p><button><h6> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <h6> - -#data -<!doctype html><p><button><listing> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <listing> - -#data -<!doctype html><p><button><pre> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <pre> - -#data -<!doctype html><p><button><form> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <form> - -#data -<!doctype html><p><button><li> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <li> - -#data -<!doctype html><p><button><dd> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <dd> - -#data -<!doctype html><p><button><dt> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <dt> - -#data -<!doctype html><p><button><plaintext> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <plaintext> - -#data -<!doctype html><p><button><table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <table> - -#data -<!doctype html><p><button><hr> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <hr> - -#data -<!doctype html><p><button><xmp> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <xmp> - -#data -<!doctype html><p><button></p> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <button> -| <p> - -#data -<!doctype html><address><button></address>a -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <address> -| <button> -| "a" - -#data -<!doctype html><address><button></address>a -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <address> -| <button> -| "a" - -#data -<p><table></p> -#errors -#document -| <html> -| <head> -| <body> -| <p> -| <p> -| <table> - -#data -<!doctype html><svg> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> - -#data -<!doctype html><p><figcaption> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <figcaption> - -#data -<!doctype html><p><summary> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <summary> - -#data -<!doctype html><form><table><form> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <form> -| <table> - -#data -<!doctype html><table><form><form> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <form> - -#data -<!doctype html><table><form></table><form> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <form> - -#data -<!doctype html><svg><foreignObject><p> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg foreignObject> -| <p> - -#data -<!doctype html><svg><title>abc -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg title> -| "abc" - -#data -<option><span><option> -#errors -#document -| <html> -| <head> -| <body> -| <option> -| <span> -| <option> - -#data -<option><option> -#errors -#document -| <html> -| <head> -| <body> -| <option> -| <option> - -#data -<math><annotation-xml><div> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| <div> - -#data -<math><annotation-xml encoding="application/svg+xml"><div> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| encoding="application/svg+xml" -| <div> - -#data -<math><annotation-xml encoding="application/xhtml+xml"><div> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| encoding="application/xhtml+xml" -| <div> - -#data -<math><annotation-xml encoding="aPPlication/xhtmL+xMl"><div> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| encoding="aPPlication/xhtmL+xMl" -| <div> - -#data -<math><annotation-xml encoding="text/html"><div> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| encoding="text/html" -| <div> - -#data -<math><annotation-xml encoding="Text/htmL"><div> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| encoding="Text/htmL" -| <div> - -#data -<math><annotation-xml encoding=" text/html "><div> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| encoding=" text/html " -| <div> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests21.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests21.dat deleted file mode 100644 index 1260ec03..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests21.dat +++ /dev/null @@ -1,221 +0,0 @@ -#data -<svg><![CDATA[foo]]> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "foo" - -#data -<math><![CDATA[foo]]> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| "foo" - -#data -<div><![CDATA[foo]]> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <!-- [CDATA[foo]] --> - -#data -<svg><![CDATA[foo -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "foo" - -#data -<svg><![CDATA[foo -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "foo" - -#data -<svg><![CDATA[ -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> - -#data -<svg><![CDATA[]]> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> - -#data -<svg><![CDATA[]] >]]> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "]] >" - -#data -<svg><![CDATA[]] >]]> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "]] >" - -#data -<svg><![CDATA[]] -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "]]" - -#data -<svg><![CDATA[] -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "]" - -#data -<svg><![CDATA[]>a -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "]>a" - -#data -<svg><foreignObject><div><![CDATA[foo]]> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| <svg foreignObject> -| <div> -| <!-- [CDATA[foo]] --> - -#data -<svg><![CDATA[<svg>]]> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "<svg>" - -#data -<svg><![CDATA[</svg>a]]> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "</svg>a" - -#data -<svg><![CDATA[<svg>a -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "<svg>a" - -#data -<svg><![CDATA[</svg>a -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "</svg>a" - -#data -<svg><![CDATA[<svg>]]><path> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "<svg>" -| <svg path> - -#data -<svg><![CDATA[<svg>]]></path> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "<svg>" - -#data -<svg><![CDATA[<svg>]]><!--path--> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "<svg>" -| <!-- path --> - -#data -<svg><![CDATA[<svg>]]>path -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "<svg>path" - -#data -<svg><![CDATA[<!--svg-->]]> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| "<!--svg-->" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests22.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests22.dat deleted file mode 100644 index aab27b2e..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests22.dat +++ /dev/null @@ -1,157 +0,0 @@ -#data -<a><b><big><em><strong><div>X</a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <b> -| <big> -| <em> -| <strong> -| <big> -| <em> -| <strong> -| <div> -| <a> -| "X" - -#data -<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8>A</a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <b> -| <b> -| <div> -| id="1" -| <a> -| <div> -| id="2" -| <a> -| <div> -| id="3" -| <a> -| <div> -| id="4" -| <a> -| <div> -| id="5" -| <a> -| <div> -| id="6" -| <a> -| <div> -| id="7" -| <a> -| <div> -| id="8" -| <a> -| "A" - -#data -<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8><div id=9>A</a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <b> -| <b> -| <div> -| id="1" -| <a> -| <div> -| id="2" -| <a> -| <div> -| id="3" -| <a> -| <div> -| id="4" -| <a> -| <div> -| id="5" -| <a> -| <div> -| id="6" -| <a> -| <div> -| id="7" -| <a> -| <div> -| id="8" -| <a> -| <div> -| id="9" -| "A" - -#data -<a><b><div id=1><div id=2><div id=3><div id=4><div id=5><div id=6><div id=7><div id=8><div id=9><div id=10>A</a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <b> -| <b> -| <div> -| id="1" -| <a> -| <div> -| id="2" -| <a> -| <div> -| id="3" -| <a> -| <div> -| id="4" -| <a> -| <div> -| id="5" -| <a> -| <div> -| id="6" -| <a> -| <div> -| id="7" -| <a> -| <div> -| id="8" -| <a> -| <div> -| id="9" -| <div> -| id="10" -| "A" - -#data -<cite><b><cite><i><cite><i><cite><i><div>X</b>TEST -#errors -Line: 1 Col: 6 Unexpected start tag (cite). Expected DOCTYPE. -Line: 1 Col: 46 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 50 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <cite> -| <b> -| <cite> -| <i> -| <cite> -| <i> -| <cite> -| <i> -| <i> -| <i> -| <div> -| <b> -| "X" -| "TEST" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests23.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests23.dat deleted file mode 100644 index 34d2a73f..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests23.dat +++ /dev/null @@ -1,155 +0,0 @@ -#data -<p><font size=4><font color=red><font size=4><font size=4><font size=4><font size=4><font size=4><font color=red><p>X -#errors -3: Start tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -116: Unclosed elements. -117: End of file seen and there were open elements. -#document -| <html> -| <head> -| <body> -| <p> -| <font> -| size="4" -| <font> -| color="red" -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| <font> -| color="red" -| <p> -| <font> -| color="red" -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| <font> -| color="red" -| "X" - -#data -<p><font size=4><font size=4><font size=4><font size=4><p>X -#errors -#document -| <html> -| <head> -| <body> -| <p> -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| <p> -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| "X" - -#data -<p><font size=4><font size=4><font size=4><font size="5"><font size=4><p>X -#errors -#document -| <html> -| <head> -| <body> -| <p> -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="5" -| <font> -| size="4" -| <p> -| <font> -| size="4" -| <font> -| size="4" -| <font> -| size="5" -| <font> -| size="4" -| "X" - -#data -<p><font size=4 id=a><font size=4 id=b><font size=4><font size=4><p>X -#errors -#document -| <html> -| <head> -| <body> -| <p> -| <font> -| id="a" -| size="4" -| <font> -| id="b" -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| <p> -| <font> -| id="a" -| size="4" -| <font> -| id="b" -| size="4" -| <font> -| size="4" -| <font> -| size="4" -| "X" - -#data -<p><b id=a><b id=a><b id=a><b><object><b id=a><b id=a>X</object><p>Y -#errors -#document -| <html> -| <head> -| <body> -| <p> -| <b> -| id="a" -| <b> -| id="a" -| <b> -| id="a" -| <b> -| <object> -| <b> -| id="a" -| <b> -| id="a" -| "X" -| <p> -| <b> -| id="a" -| <b> -| id="a" -| <b> -| id="a" -| <b> -| "Y" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests24.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests24.dat deleted file mode 100644 index f6dc7eb4..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests24.dat +++ /dev/null @@ -1,79 +0,0 @@ -#data -<!DOCTYPE html>&NotEqualTilde; -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "≂̸" - -#data -<!DOCTYPE html>&NotEqualTilde;A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "≂̸A" - -#data -<!DOCTYPE html>&ThickSpace; -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "  " - -#data -<!DOCTYPE html>&ThickSpace;A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "  A" - -#data -<!DOCTYPE html>&NotSubset; -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "⊂⃒" - -#data -<!DOCTYPE html>&NotSubset;A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "⊂⃒A" - -#data -<!DOCTYPE html>&Gopf; -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "𝔾" - -#data -<!DOCTYPE html>&Gopf;A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "𝔾A" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests25.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests25.dat deleted file mode 100644 index 00de7295..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests25.dat +++ /dev/null @@ -1,219 +0,0 @@ -#data -<!DOCTYPE html><body><foo>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <foo> -| "A" - -#data -<!DOCTYPE html><body><area>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <area> -| "A" - -#data -<!DOCTYPE html><body><base>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <base> -| "A" - -#data -<!DOCTYPE html><body><basefont>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <basefont> -| "A" - -#data -<!DOCTYPE html><body><bgsound>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <bgsound> -| "A" - -#data -<!DOCTYPE html><body><br>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <br> -| "A" - -#data -<!DOCTYPE html><body><col>A -#errors -26: Stray start tag “col”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "A" - -#data -<!DOCTYPE html><body><command>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <command> -| "A" - -#data -<!DOCTYPE html><body><embed>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <embed> -| "A" - -#data -<!DOCTYPE html><body><frame>A -#errors -26: Stray start tag “frame”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "A" - -#data -<!DOCTYPE html><body><hr>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <hr> -| "A" - -#data -<!DOCTYPE html><body><img>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <img> -| "A" - -#data -<!DOCTYPE html><body><input>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <input> -| "A" - -#data -<!DOCTYPE html><body><keygen>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <keygen> -| "A" - -#data -<!DOCTYPE html><body><link>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <link> -| "A" - -#data -<!DOCTYPE html><body><meta>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <meta> -| "A" - -#data -<!DOCTYPE html><body><param>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <param> -| "A" - -#data -<!DOCTYPE html><body><source>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <source> -| "A" - -#data -<!DOCTYPE html><body><track>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <track> -| "A" - -#data -<!DOCTYPE html><body><wbr>A -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <wbr> -| "A" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests26.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests26.dat deleted file mode 100644 index fae11ffd..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests26.dat +++ /dev/null @@ -1,313 +0,0 @@ -#data -<!DOCTYPE html><body><a href='#1'><nobr>1<nobr></a><br><a href='#2'><nobr>2<nobr></a><br><a href='#3'><nobr>3<nobr></a> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <a> -| href="#1" -| <nobr> -| "1" -| <nobr> -| <nobr> -| <br> -| <a> -| href="#2" -| <a> -| href="#2" -| <nobr> -| "2" -| <nobr> -| <nobr> -| <br> -| <a> -| href="#3" -| <a> -| href="#3" -| <nobr> -| "3" -| <nobr> - -#data -<!DOCTYPE html><body><b><nobr>1<nobr></b><i><nobr>2<nobr></i>3 -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <b> -| <nobr> -| "1" -| <nobr> -| <nobr> -| <i> -| <i> -| <nobr> -| "2" -| <nobr> -| <nobr> -| "3" - -#data -<!DOCTYPE html><body><b><nobr>1<table><nobr></b><i><nobr>2<nobr></i>3 -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <b> -| <nobr> -| "1" -| <nobr> -| <i> -| <i> -| <nobr> -| "2" -| <nobr> -| <nobr> -| "3" -| <table> - -#data -<!DOCTYPE html><body><b><nobr>1<table><tr><td><nobr></b><i><nobr>2<nobr></i>3 -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <b> -| <nobr> -| "1" -| <table> -| <tbody> -| <tr> -| <td> -| <nobr> -| <i> -| <i> -| <nobr> -| "2" -| <nobr> -| <nobr> -| "3" - -#data -<!DOCTYPE html><body><b><nobr>1<div><nobr></b><i><nobr>2<nobr></i>3 -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <b> -| <nobr> -| "1" -| <div> -| <b> -| <nobr> -| <nobr> -| <nobr> -| <i> -| <i> -| <nobr> -| "2" -| <nobr> -| <nobr> -| "3" - -#data -<!DOCTYPE html><body><b><nobr>1<nobr></b><div><i><nobr>2<nobr></i>3 -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <b> -| <nobr> -| "1" -| <nobr> -| <div> -| <nobr> -| <i> -| <i> -| <nobr> -| "2" -| <nobr> -| <nobr> -| "3" - -#data -<!DOCTYPE html><body><b><nobr>1<nobr><ins></b><i><nobr> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <b> -| <nobr> -| "1" -| <nobr> -| <ins> -| <nobr> -| <i> -| <i> -| <nobr> - -#data -<!DOCTYPE html><body><b><nobr>1<ins><nobr></b><i>2 -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <b> -| <nobr> -| "1" -| <ins> -| <nobr> -| <nobr> -| <i> -| "2" - -#data -<!DOCTYPE html><body><b>1<nobr></b><i><nobr>2</i> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <b> -| "1" -| <nobr> -| <nobr> -| <i> -| <i> -| <nobr> -| "2" - -#data -<p><code x</code></p> - -#errors -#document -| <html> -| <head> -| <body> -| <p> -| <code> -| code="" -| x<="" -| <code> -| code="" -| x<="" -| " -" - -#data -<!DOCTYPE html><svg><foreignObject><p><i></p>a -#errors -45: End tag “p” seen, but there were open elements. -41: Unclosed element “i”. -46: End of file seen and there were open elements. -35: Unclosed element “foreignObject”. -20: Unclosed element “svg”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <svg svg> -| <svg foreignObject> -| <p> -| <i> -| <i> -| "a" - -#data -<!DOCTYPE html><table><tr><td><svg><foreignObject><p><i></p>a -#errors -56: End tag “p” seen, but there were open elements. -52: Unclosed element “i”. -57: End of file seen and there were open elements. -46: Unclosed element “foreignObject”. -31: Unclosed element “svg”. -22: Unclosed element “table”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <svg svg> -| <svg foreignObject> -| <p> -| <i> -| <i> -| "a" - -#data -<!DOCTYPE html><math><mtext><p><i></p>a -#errors -38: End tag “p” seen, but there were open elements. -34: Unclosed element “i”. -39: End of file in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mtext> -| <p> -| <i> -| <i> -| "a" - -#data -<!DOCTYPE html><table><tr><td><math><mtext><p><i></p>a -#errors -53: End tag “p” seen, but there were open elements. -49: Unclosed element “i”. -54: End of file in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <math math> -| <math mtext> -| <p> -| <i> -| <i> -| "a" - -#data -<!DOCTYPE html><body><div><!/div>a -#errors -29: Bogus comment. -34: End of file seen and there were open elements. -26: Unclosed element “div”. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <div> -| <!-- /div --> -| "a" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests3.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests3.dat deleted file mode 100644 index 38dc501b..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests3.dat +++ /dev/null @@ -1,305 +0,0 @@ -#data -<head></head><style></style> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -Line: 1 Col: 20 Unexpected start tag (style) that can be in head. Moved. -#document -| <html> -| <head> -| <style> -| <body> - -#data -<head></head><script></script> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -Line: 1 Col: 21 Unexpected start tag (script) that can be in head. Moved. -#document -| <html> -| <head> -| <script> -| <body> - -#data -<head></head><!-- --><style></style><!-- --><script></script> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -Line: 1 Col: 28 Unexpected start tag (style) that can be in head. Moved. -#document -| <html> -| <head> -| <style> -| <script> -| <!-- --> -| <!-- --> -| <body> - -#data -<head></head><!-- -->x<style></style><!-- --><script></script> -#errors -Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE. -#document -| <html> -| <head> -| <!-- --> -| <body> -| "x" -| <style> -| <!-- --> -| <script> - -#data -<!DOCTYPE html><html><head></head><body><pre> -</pre></body></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> - -#data -<!DOCTYPE html><html><head></head><body><pre> -foo</pre></body></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> -| "foo" - -#data -<!DOCTYPE html><html><head></head><body><pre> - -foo</pre></body></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> -| " -foo" - -#data -<!DOCTYPE html><html><head></head><body><pre> -foo -</pre></body></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> -| "foo -" - -#data -<!DOCTYPE html><html><head></head><body><pre>x</pre><span> -</span></body></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> -| "x" -| <span> -| " -" - -#data -<!DOCTYPE html><html><head></head><body><pre>x -y</pre></body></html> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> -| "x -y" - -#data -<!DOCTYPE html><html><head></head><body><pre>x<div> -y</pre></body></html> -#errors -Line: 2 Col: 7 End tag (pre) seen too early. Expected other end tag. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> -| "x" -| <div> -| " -y" - -#data -<!DOCTYPE html><pre>&#x0a;&#x0a;A</pre> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <pre> -| " -A" - -#data -<!DOCTYPE html><HTML><META><HEAD></HEAD></HTML> -#errors -Line: 1 Col: 33 Unexpected start tag head in existing head. Ignored. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <meta> -| <body> - -#data -<!DOCTYPE html><HTML><HEAD><head></HEAD></HTML> -#errors -Line: 1 Col: 33 Unexpected start tag head in existing head. Ignored. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> - -#data -<textarea>foo<span>bar</span><i>baz -#errors -Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE. -Line: 1 Col: 35 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <textarea> -| "foo<span>bar</span><i>baz" - -#data -<title>foo<span>bar</em><i>baz -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -Line: 1 Col: 30 Unexpected end of file. Expected end tag (title). -#document -| <html> -| <head> -| <title> -| "foo<span>bar</em><i>baz" -| <body> - -#data -<!DOCTYPE html><textarea> -</textarea> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <textarea> - -#data -<!DOCTYPE html><textarea> -foo</textarea> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <textarea> -| "foo" - -#data -<!DOCTYPE html><textarea> - -foo</textarea> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <textarea> -| " -foo" - -#data -<!DOCTYPE html><html><head></head><body><ul><li><div><p><li></ul></body></html> -#errors -Line: 1 Col: 60 Missing end tag (div, li). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <ul> -| <li> -| <div> -| <p> -| <li> - -#data -<!doctype html><nobr><nobr><nobr> -#errors -Line: 1 Col: 27 Unexpected start tag (nobr) implies end tag (nobr). -Line: 1 Col: 33 Unexpected start tag (nobr) implies end tag (nobr). -Line: 1 Col: 33 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <nobr> -| <nobr> -| <nobr> - -#data -<!doctype html><nobr><nobr></nobr><nobr> -#errors -Line: 1 Col: 27 Unexpected start tag (nobr) implies end tag (nobr). -Line: 1 Col: 40 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <nobr> -| <nobr> -| <nobr> - -#data -<!doctype html><html><body><p><table></table></body></html> -#errors -Not known -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <table> - -#data -<p><table></table> -#errors -Not known -#document -| <html> -| <head> -| <body> -| <p> -| <table> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests4.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests4.dat deleted file mode 100644 index 3c506326..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests4.dat +++ /dev/null @@ -1,59 +0,0 @@ -#data -direct div content -#errors -#document-fragment -div -#document -| "direct div content" - -#data -direct textarea content -#errors -#document-fragment -textarea -#document -| "direct textarea content" - -#data -textarea content with <em>pseudo</em> <foo>markup -#errors -#document-fragment -textarea -#document -| "textarea content with <em>pseudo</em> <foo>markup" - -#data -this is &#x0043;DATA inside a <style> element -#errors -#document-fragment -style -#document -| "this is &#x0043;DATA inside a <style> element" - -#data -</plaintext> -#errors -#document-fragment -plaintext -#document -| "</plaintext>" - -#data -setting html's innerHTML -#errors -Line: 1 Col: 24 Unexpected EOF in inner html mode. -#document-fragment -html -#document -| <head> -| <body> -| "setting html's innerHTML" - -#data -<title>setting head's innerHTML</title> -#errors -#document-fragment -head -#document -| <title> -| "setting head's innerHTML" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests5.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests5.dat deleted file mode 100644 index d7b5128a..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests5.dat +++ /dev/null @@ -1,191 +0,0 @@ -#data -<style> <!-- </style>x -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -Line: 1 Col: 22 Unexpected end of file. Expected end tag (style). -#document -| <html> -| <head> -| <style> -| " <!-- " -| <body> -| "x" - -#data -<style> <!-- </style> --> </style>x -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -#document -| <html> -| <head> -| <style> -| " <!-- " -| " " -| <body> -| "--> x" - -#data -<style> <!--> </style>x -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -#document -| <html> -| <head> -| <style> -| " <!--> " -| <body> -| "x" - -#data -<style> <!---> </style>x -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -#document -| <html> -| <head> -| <style> -| " <!---> " -| <body> -| "x" - -#data -<iframe> <!---> </iframe>x -#errors -Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <iframe> -| " <!---> " -| "x" - -#data -<iframe> <!--- </iframe>->x</iframe> --> </iframe>x -#errors -Line: 1 Col: 8 Unexpected start tag (iframe). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <iframe> -| " <!--- " -| "->x --> x" - -#data -<script> <!-- </script> --> </script>x -#errors -Line: 1 Col: 8 Unexpected start tag (script). Expected DOCTYPE. -#document -| <html> -| <head> -| <script> -| " <!-- " -| " " -| <body> -| "--> x" - -#data -<title> <!-- </title> --> </title>x -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -#document -| <html> -| <head> -| <title> -| " <!-- " -| " " -| <body> -| "--> x" - -#data -<textarea> <!--- </textarea>->x</textarea> --> </textarea>x -#errors -Line: 1 Col: 10 Unexpected start tag (textarea). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <textarea> -| " <!--- " -| "->x --> x" - -#data -<style> <!</-- </style>x -#errors -Line: 1 Col: 7 Unexpected start tag (style). Expected DOCTYPE. -#document -| <html> -| <head> -| <style> -| " <!</-- " -| <body> -| "x" - -#data -<p><xmp></xmp> -#errors -XXX: Unknown -#document -| <html> -| <head> -| <body> -| <p> -| <xmp> - -#data -<xmp> <!-- > --> </xmp> -#errors -Line: 1 Col: 5 Unexpected start tag (xmp). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <xmp> -| " <!-- > --> " - -#data -<title>&amp;</title> -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -#document -| <html> -| <head> -| <title> -| "&" -| <body> - -#data -<title><!--&amp;--></title> -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -#document -| <html> -| <head> -| <title> -| "<!--&-->" -| <body> - -#data -<title><!--</title> -#errors -Line: 1 Col: 7 Unexpected start tag (title). Expected DOCTYPE. -Line: 1 Col: 19 Unexpected end of file. Expected end tag (title). -#document -| <html> -| <head> -| <title> -| "<!--" -| <body> - -#data -<noscript><!--</noscript>--></noscript> -#errors -Line: 1 Col: 10 Unexpected start tag (noscript). Expected DOCTYPE. -#document -| <html> -| <head> -| <noscript> -| "<!--" -| <body> -| "-->" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests6.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests6.dat deleted file mode 100644 index f28ece4f..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests6.dat +++ /dev/null @@ -1,663 +0,0 @@ -#data -<!doctype html></head> <head> -#errors -Line: 1 Col: 29 Unexpected start tag head. Ignored. -#document -| <!DOCTYPE html> -| <html> -| <head> -| " " -| <body> - -#data -<!doctype html><form><div></form><div> -#errors -33: End tag "form" seen but there were unclosed elements. -38: End of file seen and there were open elements. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <form> -| <div> -| <div> - -#data -<!doctype html><title>&amp;</title> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <title> -| "&" -| <body> - -#data -<!doctype html><title><!--&amp;--></title> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <title> -| "<!--&-->" -| <body> - -#data -<!doctype> -#errors -Line: 1 Col: 9 No space after literal string 'DOCTYPE'. -Line: 1 Col: 10 Unexpected > character. Expected DOCTYPE name. -Line: 1 Col: 10 Erroneous DOCTYPE. -#document -| <!DOCTYPE > -| <html> -| <head> -| <body> - -#data -<!---x -#errors -Line: 1 Col: 6 Unexpected end of file in comment. -Line: 1 Col: 6 Unexpected End of file. Expected DOCTYPE. -#document -| <!-- -x --> -| <html> -| <head> -| <body> - -#data -<body> -<div> -#errors -Line: 1 Col: 6 Unexpected start tag (body). -Line: 2 Col: 5 Expected closing tag. Unexpected end of file. -#document-fragment -div -#document -| " -" -| <div> - -#data -<frameset></frameset> -foo -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -Line: 2 Col: 3 Unexpected non-space characters in the after frameset phase. Ignored. -#document -| <html> -| <head> -| <frameset> -| " -" - -#data -<frameset></frameset> -<noframes> -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -Line: 2 Col: 10 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <frameset> -| " -" -| <noframes> - -#data -<frameset></frameset> -<div> -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -Line: 2 Col: 5 Unexpected start tag (div) in the after frameset phase. Ignored. -#document -| <html> -| <head> -| <frameset> -| " -" - -#data -<frameset></frameset> -</html> -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -#document -| <html> -| <head> -| <frameset> -| " -" - -#data -<frameset></frameset> -</div> -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -Line: 2 Col: 6 Unexpected end tag (div) in the after frameset phase. Ignored. -#document -| <html> -| <head> -| <frameset> -| " -" - -#data -<form><form> -#errors -Line: 1 Col: 6 Unexpected start tag (form). Expected DOCTYPE. -Line: 1 Col: 12 Unexpected start tag (form). -Line: 1 Col: 12 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <form> - -#data -<button><button> -#errors -Line: 1 Col: 8 Unexpected start tag (button). Expected DOCTYPE. -Line: 1 Col: 16 Unexpected start tag (button) implies end tag (button). -Line: 1 Col: 16 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <button> -| <button> - -#data -<table><tr><td></th> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 20 Unexpected end tag (th). Ignored. -Line: 1 Col: 20 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> - -#data -<table><caption><td> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 20 Unexpected end tag (td). Ignored. -Line: 1 Col: 20 Unexpected table cell start tag (td) in the table body phase. -Line: 1 Col: 20 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <table> -| <caption> -| <tbody> -| <tr> -| <td> - -#data -<table><caption><div> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 21 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <table> -| <caption> -| <div> - -#data -</caption><div> -#errors -Line: 1 Col: 10 Unexpected end tag (caption). Ignored. -Line: 1 Col: 15 Expected closing tag. Unexpected end of file. -#document-fragment -caption -#document -| <div> - -#data -<table><caption><div></caption> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 31 Unexpected end tag (caption). Missing end tag (div). -Line: 1 Col: 31 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <table> -| <caption> -| <div> - -#data -<table><caption></table> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 24 Unexpected end table tag in caption. Generates implied end caption. -#document -| <html> -| <head> -| <body> -| <table> -| <caption> - -#data -</table><div> -#errors -Line: 1 Col: 8 Unexpected end table tag in caption. Generates implied end caption. -Line: 1 Col: 8 Unexpected end tag (caption). Ignored. -Line: 1 Col: 13 Expected closing tag. Unexpected end of file. -#document-fragment -caption -#document -| <div> - -#data -<table><caption></body></col></colgroup></html></tbody></td></tfoot></th></thead></tr> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 23 Unexpected end tag (body). Ignored. -Line: 1 Col: 29 Unexpected end tag (col). Ignored. -Line: 1 Col: 40 Unexpected end tag (colgroup). Ignored. -Line: 1 Col: 47 Unexpected end tag (html). Ignored. -Line: 1 Col: 55 Unexpected end tag (tbody). Ignored. -Line: 1 Col: 60 Unexpected end tag (td). Ignored. -Line: 1 Col: 68 Unexpected end tag (tfoot). Ignored. -Line: 1 Col: 73 Unexpected end tag (th). Ignored. -Line: 1 Col: 81 Unexpected end tag (thead). Ignored. -Line: 1 Col: 86 Unexpected end tag (tr). Ignored. -Line: 1 Col: 86 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <table> -| <caption> - -#data -<table><caption><div></div> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 27 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <table> -| <caption> -| <div> - -#data -<table><tr><td></body></caption></col></colgroup></html> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 22 Unexpected end tag (body). Ignored. -Line: 1 Col: 32 Unexpected end tag (caption). Ignored. -Line: 1 Col: 38 Unexpected end tag (col). Ignored. -Line: 1 Col: 49 Unexpected end tag (colgroup). Ignored. -Line: 1 Col: 56 Unexpected end tag (html). Ignored. -Line: 1 Col: 56 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> - -#data -</table></tbody></tfoot></thead></tr><div> -#errors -Line: 1 Col: 8 Unexpected end tag (table). Ignored. -Line: 1 Col: 16 Unexpected end tag (tbody). Ignored. -Line: 1 Col: 24 Unexpected end tag (tfoot). Ignored. -Line: 1 Col: 32 Unexpected end tag (thead). Ignored. -Line: 1 Col: 37 Unexpected end tag (tr). Ignored. -Line: 1 Col: 42 Expected closing tag. Unexpected end of file. -#document-fragment -td -#document -| <div> - -#data -<table><colgroup>foo -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 20 Unexpected non-space characters in table context caused voodoo mode. -Line: 1 Col: 20 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| "foo" -| <table> -| <colgroup> - -#data -foo<col> -#errors -Line: 1 Col: 3 Unexpected end tag (colgroup). Ignored. -#document-fragment -colgroup -#document -| <col> - -#data -<table><colgroup></col> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 23 This element (col) has no end tag. -Line: 1 Col: 23 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <table> -| <colgroup> - -#data -<frameset><div> -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -Line: 1 Col: 15 Unexpected start tag token (div) in the frameset phase. Ignored. -Line: 1 Col: 15 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <frameset> - -#data -</frameset><frame> -#errors -Line: 1 Col: 11 Unexpected end tag token (frameset) in the frameset phase (innerHTML). -#document-fragment -frameset -#document -| <frame> - -#data -<frameset></div> -#errors -Line: 1 Col: 10 Unexpected start tag (frameset). Expected DOCTYPE. -Line: 1 Col: 16 Unexpected end tag token (div) in the frameset phase. Ignored. -Line: 1 Col: 16 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <frameset> - -#data -</body><div> -#errors -Line: 1 Col: 7 Unexpected end tag (body). Ignored. -Line: 1 Col: 12 Expected closing tag. Unexpected end of file. -#document-fragment -body -#document -| <div> - -#data -<table><tr><div> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 16 Unexpected start tag (div) in table context caused voodoo mode. -Line: 1 Col: 16 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <div> -| <table> -| <tbody> -| <tr> - -#data -</tr><td> -#errors -Line: 1 Col: 5 Unexpected end tag (tr). Ignored. -#document-fragment -tr -#document -| <td> - -#data -</tbody></tfoot></thead><td> -#errors -Line: 1 Col: 8 Unexpected end tag (tbody). Ignored. -Line: 1 Col: 16 Unexpected end tag (tfoot). Ignored. -Line: 1 Col: 24 Unexpected end tag (thead). Ignored. -#document-fragment -tr -#document -| <td> - -#data -<table><tr><div><td> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 16 Unexpected start tag (div) in table context caused voodoo mode. -Line: 1 Col: 20 Unexpected implied end tag (div) in the table row phase. -Line: 1 Col: 20 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| <table> -| <tbody> -| <tr> -| <td> - -#data -<caption><col><colgroup><tbody><tfoot><thead><tr> -#errors -Line: 1 Col: 9 Unexpected start tag (caption). -Line: 1 Col: 14 Unexpected start tag (col). -Line: 1 Col: 24 Unexpected start tag (colgroup). -Line: 1 Col: 31 Unexpected start tag (tbody). -Line: 1 Col: 38 Unexpected start tag (tfoot). -Line: 1 Col: 45 Unexpected start tag (thead). -Line: 1 Col: 49 Unexpected end of file. Expected table content. -#document-fragment -tbody -#document -| <tr> - -#data -<table><tbody></thead> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 22 Unexpected end tag (thead) in the table body phase. Ignored. -Line: 1 Col: 22 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> - -#data -</table><tr> -#errors -Line: 1 Col: 8 Unexpected end tag (table). Ignored. -Line: 1 Col: 12 Unexpected end of file. Expected table content. -#document-fragment -tbody -#document -| <tr> - -#data -<table><tbody></body></caption></col></colgroup></html></td></th></tr> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 21 Unexpected end tag (body) in the table body phase. Ignored. -Line: 1 Col: 31 Unexpected end tag (caption) in the table body phase. Ignored. -Line: 1 Col: 37 Unexpected end tag (col) in the table body phase. Ignored. -Line: 1 Col: 48 Unexpected end tag (colgroup) in the table body phase. Ignored. -Line: 1 Col: 55 Unexpected end tag (html) in the table body phase. Ignored. -Line: 1 Col: 60 Unexpected end tag (td) in the table body phase. Ignored. -Line: 1 Col: 65 Unexpected end tag (th) in the table body phase. Ignored. -Line: 1 Col: 70 Unexpected end tag (tr) in the table body phase. Ignored. -Line: 1 Col: 70 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> - -#data -<table><tbody></div> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 20 Unexpected end tag (div) in table context caused voodoo mode. -Line: 1 Col: 20 End tag (div) seen too early. Expected other end tag. -Line: 1 Col: 20 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> - -#data -<table><table> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected start tag (table) implies end tag (table). -Line: 1 Col: 14 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <table> -| <table> - -#data -<table></body></caption></col></colgroup></html></tbody></td></tfoot></th></thead></tr> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 14 Unexpected end tag (body). Ignored. -Line: 1 Col: 24 Unexpected end tag (caption). Ignored. -Line: 1 Col: 30 Unexpected end tag (col). Ignored. -Line: 1 Col: 41 Unexpected end tag (colgroup). Ignored. -Line: 1 Col: 48 Unexpected end tag (html). Ignored. -Line: 1 Col: 56 Unexpected end tag (tbody). Ignored. -Line: 1 Col: 61 Unexpected end tag (td). Ignored. -Line: 1 Col: 69 Unexpected end tag (tfoot). Ignored. -Line: 1 Col: 74 Unexpected end tag (th). Ignored. -Line: 1 Col: 82 Unexpected end tag (thead). Ignored. -Line: 1 Col: 87 Unexpected end tag (tr). Ignored. -Line: 1 Col: 87 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <table> - -#data -</table><tr> -#errors -Line: 1 Col: 8 Unexpected end tag (table). Ignored. -Line: 1 Col: 12 Unexpected end of file. Expected table content. -#document-fragment -table -#document -| <tbody> -| <tr> - -#data -<body></body></html> -#errors -Line: 1 Col: 20 Unexpected html end tag in inner html mode. -Line: 1 Col: 20 Unexpected EOF in inner html mode. -#document-fragment -html -#document -| <head> -| <body> - -#data -<html><frameset></frameset></html> -#errors -Line: 1 Col: 6 Unexpected start tag (html). Expected DOCTYPE. -#document -| <html> -| <head> -| <frameset> -| " " - -#data -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"><html></html> -#errors -Line: 1 Col: 50 Erroneous DOCTYPE. -Line: 1 Col: 63 Unexpected end tag (html) after the (implied) root element. -#document -| <!DOCTYPE html "-//W3C//DTD HTML 4.01//EN" ""> -| <html> -| <head> -| <body> - -#data -<param><frameset></frameset> -#errors -Line: 1 Col: 7 Unexpected start tag (param). Expected DOCTYPE. -Line: 1 Col: 17 Unexpected start tag (frameset). -#document -| <html> -| <head> -| <frameset> - -#data -<source><frameset></frameset> -#errors -Line: 1 Col: 7 Unexpected start tag (source). Expected DOCTYPE. -Line: 1 Col: 17 Unexpected start tag (frameset). -#document -| <html> -| <head> -| <frameset> - -#data -<track><frameset></frameset> -#errors -Line: 1 Col: 7 Unexpected start tag (track). Expected DOCTYPE. -Line: 1 Col: 17 Unexpected start tag (frameset). -#document -| <html> -| <head> -| <frameset> - -#data -</html><frameset></frameset> -#errors -7: End tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -17: Stray “frameset” start tag. -17: “frameset” start tag seen. -#document -| <html> -| <head> -| <frameset> - -#data -</body><frameset></frameset> -#errors -7: End tag seen without seeing a doctype first. Expected “<!DOCTYPE html>”. -17: Stray “frameset” start tag. -17: “frameset” start tag seen. -#document -| <html> -| <head> -| <frameset> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests7.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests7.dat deleted file mode 100644 index f5193c66..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests7.dat +++ /dev/null @@ -1,390 +0,0 @@ -#data -<!doctype html><body><title>X</title> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <title> -| "X" - -#data -<!doctype html><table><title>X</title></table> -#errors -Line: 1 Col: 29 Unexpected start tag (title) in table context caused voodoo mode. -Line: 1 Col: 38 Unexpected end tag (title) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <title> -| "X" -| <table> - -#data -<!doctype html><head></head><title>X</title> -#errors -Line: 1 Col: 35 Unexpected start tag (title) that can be in head. Moved. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <title> -| "X" -| <body> - -#data -<!doctype html></head><title>X</title> -#errors -Line: 1 Col: 29 Unexpected start tag (title) that can be in head. Moved. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <title> -| "X" -| <body> - -#data -<!doctype html><table><meta></table> -#errors -Line: 1 Col: 28 Unexpected start tag (meta) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <meta> -| <table> - -#data -<!doctype html><table>X<tr><td><table> <meta></table></table> -#errors -Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode. -Line: 1 Col: 45 Unexpected start tag (meta) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "X" -| <table> -| <tbody> -| <tr> -| <td> -| <meta> -| <table> -| " " - -#data -<!doctype html><html> <head> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> - -#data -<!doctype html> <head> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> - -#data -<!doctype html><table><style> <tr>x </style> </table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <style> -| " <tr>x " -| " " - -#data -<!doctype html><table><TBODY><script> <tr>x </script> </table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <script> -| " <tr>x " -| " " - -#data -<!doctype html><p><applet><p>X</p></applet> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <p> -| <applet> -| <p> -| "X" - -#data -<!doctype html><listing> -X</listing> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <listing> -| "X" - -#data -<!doctype html><select><input>X -#errors -Line: 1 Col: 30 Unexpected input start tag in the select phase. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <input> -| "X" - -#data -<!doctype html><select><select>X -#errors -Line: 1 Col: 31 Unexpected select start tag in the select phase treated as select end tag. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| "X" - -#data -<!doctype html><table><input type=hidDEN></table> -#errors -Line: 1 Col: 41 Unexpected input with type hidden in table context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <input> -| type="hidDEN" - -#data -<!doctype html><table>X<input type=hidDEN></table> -#errors -Line: 1 Col: 23 Unexpected non-space characters in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| "X" -| <table> -| <input> -| type="hidDEN" - -#data -<!doctype html><table> <input type=hidDEN></table> -#errors -Line: 1 Col: 43 Unexpected input with type hidden in table context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| " " -| <input> -| type="hidDEN" - -#data -<!doctype html><table> <input type='hidDEN'></table> -#errors -Line: 1 Col: 45 Unexpected input with type hidden in table context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| " " -| <input> -| type="hidDEN" - -#data -<!doctype html><table><input type=" hidden"><input type=hidDEN></table> -#errors -Line: 1 Col: 44 Unexpected start tag (input) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <input> -| type=" hidden" -| <table> -| <input> -| type="hidDEN" - -#data -<!doctype html><table><select>X<tr> -#errors -Line: 1 Col: 30 Unexpected start tag (select) in table context caused voodoo mode. -Line: 1 Col: 35 Unexpected table element start tag (trs) in the select in table phase. -Line: 1 Col: 35 Unexpected end of file. Expected table content. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| "X" -| <table> -| <tbody> -| <tr> - -#data -<!doctype html><select>X</select> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| "X" - -#data -<!DOCTYPE hTmL><html></html> -#errors -Line: 1 Col: 28 Unexpected end tag (html) after the (implied) root element. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> - -#data -<!DOCTYPE HTML><html></html> -#errors -Line: 1 Col: 28 Unexpected end tag (html) after the (implied) root element. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> - -#data -<body>X</body></body> -#errors -Line: 1 Col: 21 Unexpected end tag token (body) in the after body phase. -Line: 1 Col: 21 Unexpected EOF in inner html mode. -#document-fragment -html -#document -| <head> -| <body> -| "X" - -#data -<div><p>a</x> b -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 13 Unexpected end tag (x). Ignored. -Line: 1 Col: 15 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| <p> -| "a b" - -#data -<table><tr><td><code></code> </table> -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <code> -| " " - -#data -<table><b><tr><td>aaa</td></tr>bbb</table>ccc -#errors -XXX: Fix me -#document -| <html> -| <head> -| <body> -| <b> -| <b> -| "bbb" -| <table> -| <tbody> -| <tr> -| <td> -| "aaa" -| <b> -| "ccc" - -#data -A<table><tr> B</tr> B</table> -#errors -XXX: Fix me -#document -| <html> -| <head> -| <body> -| "A B B" -| <table> -| <tbody> -| <tr> - -#data -A<table><tr> B</tr> </em>C</table> -#errors -XXX: Fix me -#document -| <html> -| <head> -| <body> -| "A BC" -| <table> -| <tbody> -| <tr> -| " " - -#data -<select><keygen> -#errors -Not known -#document -| <html> -| <head> -| <body> -| <select> -| <keygen> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests8.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests8.dat deleted file mode 100644 index 90e6c919..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests8.dat +++ /dev/null @@ -1,148 +0,0 @@ -#data -<div> -<div></div> -</span>x -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 3 Col: 7 Unexpected end tag (span). Ignored. -Line: 3 Col: 8 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| " -" -| <div> -| " -x" - -#data -<div>x<div></div> -</span>x -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 2 Col: 7 Unexpected end tag (span). Ignored. -Line: 2 Col: 8 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| "x" -| <div> -| " -x" - -#data -<div>x<div></div>x</span>x -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 25 Unexpected end tag (span). Ignored. -Line: 1 Col: 26 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| "x" -| <div> -| "xx" - -#data -<div>x<div></div>y</span>z -#errors -Line: 1 Col: 5 Unexpected start tag (div). Expected DOCTYPE. -Line: 1 Col: 25 Unexpected end tag (span). Ignored. -Line: 1 Col: 26 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <div> -| "x" -| <div> -| "yz" - -#data -<table><div>x<div></div>x</span>x -#errors -Line: 1 Col: 7 Unexpected start tag (table). Expected DOCTYPE. -Line: 1 Col: 12 Unexpected start tag (div) in table context caused voodoo mode. -Line: 1 Col: 18 Unexpected start tag (div) in table context caused voodoo mode. -Line: 1 Col: 24 Unexpected end tag (div) in table context caused voodoo mode. -Line: 1 Col: 32 Unexpected end tag (span) in table context caused voodoo mode. -Line: 1 Col: 32 Unexpected end tag (span). Ignored. -Line: 1 Col: 33 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| <div> -| "x" -| <div> -| "xx" -| <table> - -#data -x<table>x -#errors -Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE. -Line: 1 Col: 9 Unexpected non-space characters in table context caused voodoo mode. -Line: 1 Col: 9 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| "xx" -| <table> - -#data -x<table><table>x -#errors -Line: 1 Col: 1 Unexpected non-space characters. Expected DOCTYPE. -Line: 1 Col: 15 Unexpected start tag (table) implies end tag (table). -Line: 1 Col: 16 Unexpected non-space characters in table context caused voodoo mode. -Line: 1 Col: 16 Unexpected end of file. Expected table content. -#document -| <html> -| <head> -| <body> -| "x" -| <table> -| "x" -| <table> - -#data -<b>a<div></div><div></b>y -#errors -Line: 1 Col: 3 Unexpected start tag (b). Expected DOCTYPE. -Line: 1 Col: 24 End tag (b) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 25 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <b> -| "a" -| <div> -| <div> -| <b> -| "y" - -#data -<a><div><p></a> -#errors -Line: 1 Col: 3 Unexpected start tag (a). Expected DOCTYPE. -Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 15 End tag (a) violates step 1, paragraph 3 of the adoption agency algorithm. -Line: 1 Col: 15 Expected closing tag. Unexpected end of file. -#document -| <html> -| <head> -| <body> -| <a> -| <div> -| <a> -| <p> -| <a> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests9.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests9.dat deleted file mode 100644 index 554e27ae..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests9.dat +++ /dev/null @@ -1,457 +0,0 @@ -#data -<!DOCTYPE html><math></math> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> - -#data -<!DOCTYPE html><body><math></math> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> - -#data -<!DOCTYPE html><math><mi> -#errors -25: End of file in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mi> - -#data -<!DOCTYPE html><math><annotation-xml><svg><u> -#errors -45: HTML start tag “u” in a foreign namespace context. -45: End of file seen and there were open elements. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math annotation-xml> -| <svg svg> -| <u> - -#data -<!DOCTYPE html><body><select><math></math></select> -#errors -Line: 1 Col: 35 Unexpected start tag token (math) in the select phase. Ignored. -Line: 1 Col: 42 Unexpected end tag (math) in the select phase. Ignored. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> - -#data -<!DOCTYPE html><body><select><option><math></math></option></select> -#errors -Line: 1 Col: 43 Unexpected start tag token (math) in the select phase. Ignored. -Line: 1 Col: 50 Unexpected end tag (math) in the select phase. Ignored. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| <option> - -#data -<!DOCTYPE html><body><table><math></math></table> -#errors -Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode. -Line: 1 Col: 41 Unexpected end tag (math) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <table> - -#data -<!DOCTYPE html><body><table><math><mi>foo</mi></math></table> -#errors -Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode. -Line: 1 Col: 46 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 53 Unexpected end tag (math) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| "foo" -| <table> - -#data -<!DOCTYPE html><body><table><math><mi>foo</mi><mi>bar</mi></math></table> -#errors -Line: 1 Col: 34 Unexpected start tag (math) in table context caused voodoo mode. -Line: 1 Col: 46 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 58 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 65 Unexpected end tag (math) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <table> - -#data -<!DOCTYPE html><body><table><tbody><math><mi>foo</mi><mi>bar</mi></math></tbody></table> -#errors -Line: 1 Col: 41 Unexpected start tag (math) in table context caused voodoo mode. -Line: 1 Col: 53 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 65 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 72 Unexpected end tag (math) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <table> -| <tbody> - -#data -<!DOCTYPE html><body><table><tbody><tr><math><mi>foo</mi><mi>bar</mi></math></tr></tbody></table> -#errors -Line: 1 Col: 45 Unexpected start tag (math) in table context caused voodoo mode. -Line: 1 Col: 57 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 69 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 76 Unexpected end tag (math) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <table> -| <tbody> -| <tr> - -#data -<!DOCTYPE html><body><table><tbody><tr><td><math><mi>foo</mi><mi>bar</mi></math></td></tr></tbody></table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" - -#data -<!DOCTYPE html><body><table><tbody><tr><td><math><mi>foo</mi><mi>bar</mi></math><p>baz</td></tr></tbody></table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <p> -| "baz" - -#data -<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi></math><p>baz</caption></table> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <p> -| "baz" - -#data -<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux -#errors -Line: 1 Col: 70 HTML start tag "p" in a foreign namespace context. -Line: 1 Col: 81 Unexpected end table tag in caption. Generates implied end caption. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <p> -| "baz" -| <p> -| "quux" - -#data -<!DOCTYPE html><body><table><caption><math><mi>foo</mi><mi>bar</mi>baz</table><p>quux -#errors -Line: 1 Col: 78 Unexpected end table tag in caption. Generates implied end caption. -Line: 1 Col: 78 Unexpected end tag (caption). Missing end tag (math). -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <caption> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| "baz" -| <p> -| "quux" - -#data -<!DOCTYPE html><body><table><colgroup><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux -#errors -Line: 1 Col: 44 Unexpected start tag (math) in table context caused voodoo mode. -Line: 1 Col: 56 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 68 Unexpected end tag (mi) in table context caused voodoo mode. -Line: 1 Col: 71 HTML start tag "p" in a foreign namespace context. -Line: 1 Col: 71 Unexpected start tag (p) in table context caused voodoo mode. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <p> -| "baz" -| <table> -| <colgroup> -| <p> -| "quux" - -#data -<!DOCTYPE html><body><table><tr><td><select><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux -#errors -Line: 1 Col: 50 Unexpected start tag token (math) in the select phase. Ignored. -Line: 1 Col: 54 Unexpected start tag token (mi) in the select phase. Ignored. -Line: 1 Col: 62 Unexpected end tag (mi) in the select phase. Ignored. -Line: 1 Col: 66 Unexpected start tag token (mi) in the select phase. Ignored. -Line: 1 Col: 74 Unexpected end tag (mi) in the select phase. Ignored. -Line: 1 Col: 77 Unexpected start tag token (p) in the select phase. Ignored. -Line: 1 Col: 88 Unexpected table element end tag (tables) in the select in table phase. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <select> -| "foobarbaz" -| <p> -| "quux" - -#data -<!DOCTYPE html><body><table><select><math><mi>foo</mi><mi>bar</mi><p>baz</table><p>quux -#errors -Line: 1 Col: 36 Unexpected start tag (select) in table context caused voodoo mode. -Line: 1 Col: 42 Unexpected start tag token (math) in the select phase. Ignored. -Line: 1 Col: 46 Unexpected start tag token (mi) in the select phase. Ignored. -Line: 1 Col: 54 Unexpected end tag (mi) in the select phase. Ignored. -Line: 1 Col: 58 Unexpected start tag token (mi) in the select phase. Ignored. -Line: 1 Col: 66 Unexpected end tag (mi) in the select phase. Ignored. -Line: 1 Col: 69 Unexpected start tag token (p) in the select phase. Ignored. -Line: 1 Col: 80 Unexpected table element end tag (tables) in the select in table phase. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <select> -| "foobarbaz" -| <table> -| <p> -| "quux" - -#data -<!DOCTYPE html><body></body></html><math><mi>foo</mi><mi>bar</mi><p>baz -#errors -Line: 1 Col: 41 Unexpected start tag (math). -Line: 1 Col: 68 HTML start tag "p" in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <p> -| "baz" - -#data -<!DOCTYPE html><body></body><math><mi>foo</mi><mi>bar</mi><p>baz -#errors -Line: 1 Col: 34 Unexpected start tag token (math) in the after body phase. -Line: 1 Col: 61 HTML start tag "p" in a foreign namespace context. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <math math> -| <math mi> -| "foo" -| <math mi> -| "bar" -| <p> -| "baz" - -#data -<!DOCTYPE html><frameset><math><mi></mi><mi></mi><p><span> -#errors -Line: 1 Col: 31 Unexpected start tag token (math) in the frameset phase. Ignored. -Line: 1 Col: 35 Unexpected start tag token (mi) in the frameset phase. Ignored. -Line: 1 Col: 40 Unexpected end tag token (mi) in the frameset phase. Ignored. -Line: 1 Col: 44 Unexpected start tag token (mi) in the frameset phase. Ignored. -Line: 1 Col: 49 Unexpected end tag token (mi) in the frameset phase. Ignored. -Line: 1 Col: 52 Unexpected start tag token (p) in the frameset phase. Ignored. -Line: 1 Col: 58 Unexpected start tag token (span) in the frameset phase. Ignored. -Line: 1 Col: 58 Expected closing tag. Unexpected end of file. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!DOCTYPE html><frameset></frameset><math><mi></mi><mi></mi><p><span> -#errors -Line: 1 Col: 42 Unexpected start tag (math) in the after frameset phase. Ignored. -Line: 1 Col: 46 Unexpected start tag (mi) in the after frameset phase. Ignored. -Line: 1 Col: 51 Unexpected end tag (mi) in the after frameset phase. Ignored. -Line: 1 Col: 55 Unexpected start tag (mi) in the after frameset phase. Ignored. -Line: 1 Col: 60 Unexpected end tag (mi) in the after frameset phase. Ignored. -Line: 1 Col: 63 Unexpected start tag (p) in the after frameset phase. Ignored. -Line: 1 Col: 69 Unexpected start tag (span) in the after frameset phase. Ignored. -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!DOCTYPE html><body xlink:href=foo><math xlink:href=foo></math> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| xlink:href="foo" -| <math math> -| xlink href="foo" - -#data -<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo></mi></math> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| xlink:href="foo" -| xml:lang="en" -| <math math> -| <math mi> -| xlink href="foo" -| xml lang="en" - -#data -<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo /></math> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| xlink:href="foo" -| xml:lang="en" -| <math math> -| <math mi> -| xlink href="foo" -| xml lang="en" - -#data -<!DOCTYPE html><body xlink:href=foo xml:lang=en><math><mi xml:lang=en xlink:href=foo />bar</math> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| xlink:href="foo" -| xml:lang="en" -| <math math> -| <math mi> -| xlink href="foo" -| xml lang="en" -| "bar" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat b/vendor/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat deleted file mode 100644 index 6c78661e..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tests_innerHTML_1.dat +++ /dev/null @@ -1,741 +0,0 @@ -#data -<body><span> -#errors -#document-fragment -body -#document -| <span> - -#data -<span><body> -#errors -#document-fragment -body -#document -| <span> - -#data -<span><body> -#errors -#document-fragment -div -#document -| <span> - -#data -<body><span> -#errors -#document-fragment -html -#document -| <head> -| <body> -| <span> - -#data -<frameset><span> -#errors -#document-fragment -body -#document -| <span> - -#data -<span><frameset> -#errors -#document-fragment -body -#document -| <span> - -#data -<span><frameset> -#errors -#document-fragment -div -#document -| <span> - -#data -<frameset><span> -#errors -#document-fragment -html -#document -| <head> -| <frameset> - -#data -<table><tr> -#errors -#document-fragment -table -#document -| <tbody> -| <tr> - -#data -</table><tr> -#errors -#document-fragment -table -#document -| <tbody> -| <tr> - -#data -<a> -#errors -#document-fragment -table -#document -| <a> - -#data -<a> -#errors -#document-fragment -table -#document -| <a> - -#data -<a><caption>a -#errors -#document-fragment -table -#document -| <a> -| <caption> -| "a" - -#data -<a><colgroup><col> -#errors -#document-fragment -table -#document -| <a> -| <colgroup> -| <col> - -#data -<a><tbody><tr> -#errors -#document-fragment -table -#document -| <a> -| <tbody> -| <tr> - -#data -<a><tfoot><tr> -#errors -#document-fragment -table -#document -| <a> -| <tfoot> -| <tr> - -#data -<a><thead><tr> -#errors -#document-fragment -table -#document -| <a> -| <thead> -| <tr> - -#data -<a><tr> -#errors -#document-fragment -table -#document -| <a> -| <tbody> -| <tr> - -#data -<a><th> -#errors -#document-fragment -table -#document -| <a> -| <tbody> -| <tr> -| <th> - -#data -<a><td> -#errors -#document-fragment -table -#document -| <a> -| <tbody> -| <tr> -| <td> - -#data -<table></table><tbody> -#errors -#document-fragment -caption -#document -| <table> - -#data -</table><span> -#errors -#document-fragment -caption -#document -| <span> - -#data -<span></table> -#errors -#document-fragment -caption -#document -| <span> - -#data -</caption><span> -#errors -#document-fragment -caption -#document -| <span> - -#data -<span></caption><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><caption><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><col><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><colgroup><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><html><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><tbody><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><td><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><tfoot><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><thead><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><th><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span><tr><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -<span></table><span> -#errors -#document-fragment -caption -#document -| <span> -| <span> - -#data -</colgroup><col> -#errors -#document-fragment -colgroup -#document -| <col> - -#data -<a><col> -#errors -#document-fragment -colgroup -#document -| <col> - -#data -<caption><a> -#errors -#document-fragment -tbody -#document -| <a> - -#data -<col><a> -#errors -#document-fragment -tbody -#document -| <a> - -#data -<colgroup><a> -#errors -#document-fragment -tbody -#document -| <a> - -#data -<tbody><a> -#errors -#document-fragment -tbody -#document -| <a> - -#data -<tfoot><a> -#errors -#document-fragment -tbody -#document -| <a> - -#data -<thead><a> -#errors -#document-fragment -tbody -#document -| <a> - -#data -</table><a> -#errors -#document-fragment -tbody -#document -| <a> - -#data -<a><tr> -#errors -#document-fragment -tbody -#document -| <a> -| <tr> - -#data -<a><td> -#errors -#document-fragment -tbody -#document -| <a> -| <tr> -| <td> - -#data -<a><td> -#errors -#document-fragment -tbody -#document -| <a> -| <tr> -| <td> - -#data -<a><td> -#errors -#document-fragment -tbody -#document -| <a> -| <tr> -| <td> - -#data -<td><table><tbody><a><tr> -#errors -#document-fragment -tbody -#document -| <tr> -| <td> -| <a> -| <table> -| <tbody> -| <tr> - -#data -</tr><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -<td><table><a><tr></tr><tr> -#errors -#document-fragment -tr -#document -| <td> -| <a> -| <table> -| <tbody> -| <tr> -| <tr> - -#data -<caption><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -<col><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -<colgroup><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -<tbody><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -<tfoot><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -<thead><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -<tr><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -</table><td> -#errors -#document-fragment -tr -#document -| <td> - -#data -<td><table></table><td> -#errors -#document-fragment -tr -#document -| <td> -| <table> -| <td> - -#data -<td><table></table><td> -#errors -#document-fragment -tr -#document -| <td> -| <table> -| <td> - -#data -<caption><a> -#errors -#document-fragment -td -#document -| <a> - -#data -<col><a> -#errors -#document-fragment -td -#document -| <a> - -#data -<colgroup><a> -#errors -#document-fragment -td -#document -| <a> - -#data -<tbody><a> -#errors -#document-fragment -td -#document -| <a> - -#data -<tfoot><a> -#errors -#document-fragment -td -#document -| <a> - -#data -<th><a> -#errors -#document-fragment -td -#document -| <a> - -#data -<thead><a> -#errors -#document-fragment -td -#document -| <a> - -#data -<tr><a> -#errors -#document-fragment -td -#document -| <a> - -#data -</table><a> -#errors -#document-fragment -td -#document -| <a> - -#data -</tbody><a> -#errors -#document-fragment -td -#document -| <a> - -#data -</td><a> -#errors -#document-fragment -td -#document -| <a> - -#data -</tfoot><a> -#errors -#document-fragment -td -#document -| <a> - -#data -</thead><a> -#errors -#document-fragment -td -#document -| <a> - -#data -</th><a> -#errors -#document-fragment -td -#document -| <a> - -#data -</tr><a> -#errors -#document-fragment -td -#document -| <a> - -#data -<table><td><td> -#errors -#document-fragment -td -#document -| <table> -| <tbody> -| <tr> -| <td> -| <td> - -#data -</select><option> -#errors -#document-fragment -select -#document -| <option> - -#data -<input><option> -#errors -#document-fragment -select -#document -| <option> - -#data -<keygen><option> -#errors -#document-fragment -select -#document -| <option> - -#data -<textarea><option> -#errors -#document-fragment -select -#document -| <option> - -#data -</html><!--abc--> -#errors -#document-fragment -html -#document -| <head> -| <body> -| <!-- abc --> - -#data -</frameset><frame> -#errors -#document-fragment -frameset -#document -| <frame> - -#data -#errors -#document-fragment -html -#document -| <head> -| <body> diff --git a/vendor/golang.org/x/net/html/testdata/webkit/tricky01.dat b/vendor/golang.org/x/net/html/testdata/webkit/tricky01.dat deleted file mode 100644 index 08419924..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/tricky01.dat +++ /dev/null @@ -1,261 +0,0 @@ -#data -<b><p>Bold </b> Not bold</p> -Also not bold. -#errors -#document -| <html> -| <head> -| <body> -| <b> -| <p> -| <b> -| "Bold " -| " Not bold" -| " -Also not bold." - -#data -<html> -<font color=red><i>Italic and Red<p>Italic and Red </font> Just italic.</p> Italic only.</i> Plain -<p>I should not be red. <font color=red>Red. <i>Italic and red.</p> -<p>Italic and red. </i> Red.</font> I should not be red.</p> -<b>Bold <i>Bold and italic</b> Only Italic </i> Plain -#errors -#document -| <html> -| <head> -| <body> -| <font> -| color="red" -| <i> -| "Italic and Red" -| <i> -| <p> -| <font> -| color="red" -| "Italic and Red " -| " Just italic." -| " Italic only." -| " Plain -" -| <p> -| "I should not be red. " -| <font> -| color="red" -| "Red. " -| <i> -| "Italic and red." -| <font> -| color="red" -| <i> -| " -" -| <p> -| <font> -| color="red" -| <i> -| "Italic and red. " -| " Red." -| " I should not be red." -| " -" -| <b> -| "Bold " -| <i> -| "Bold and italic" -| <i> -| " Only Italic " -| " Plain" - -#data -<html><body> -<p><font size="7">First paragraph.</p> -<p>Second paragraph.</p></font> -<b><p><i>Bold and Italic</b> Italic</p> -#errors -#document -| <html> -| <head> -| <body> -| " -" -| <p> -| <font> -| size="7" -| "First paragraph." -| <font> -| size="7" -| " -" -| <p> -| "Second paragraph." -| " -" -| <b> -| <p> -| <b> -| <i> -| "Bold and Italic" -| <i> -| " Italic" - -#data -<html> -<dl> -<dt><b>Boo -<dd>Goo? -</dl> -</html> -#errors -#document -| <html> -| <head> -| <body> -| <dl> -| " -" -| <dt> -| <b> -| "Boo -" -| <dd> -| <b> -| "Goo? -" -| <b> -| " -" - -#data -<html><body> -<label><a><div>Hello<div>World</div></a></label> -</body></html> -#errors -#document -| <html> -| <head> -| <body> -| " -" -| <label> -| <a> -| <div> -| <a> -| "Hello" -| <div> -| "World" -| " -" - -#data -<table><center> <font>a</center> <img> <tr><td> </td> </tr> </table> -#errors -#document -| <html> -| <head> -| <body> -| <center> -| " " -| <font> -| "a" -| <font> -| <img> -| " " -| <table> -| " " -| <tbody> -| <tr> -| <td> -| " " -| " " -| " " - -#data -<table><tr><p><a><p>You should see this text. -#errors -#document -| <html> -| <head> -| <body> -| <p> -| <a> -| <p> -| <a> -| "You should see this text." -| <table> -| <tbody> -| <tr> - -#data -<TABLE> -<TR> -<CENTER><CENTER><TD></TD></TR><TR> -<FONT> -<TABLE><tr></tr></TABLE> -</P> -<a></font><font></a> -This page contains an insanely badly-nested tag sequence. -#errors -#document -| <html> -| <head> -| <body> -| <center> -| <center> -| <font> -| " -" -| <table> -| " -" -| <tbody> -| <tr> -| " -" -| <td> -| <tr> -| " -" -| <table> -| <tbody> -| <tr> -| <font> -| " -" -| <p> -| " -" -| <a> -| <a> -| <font> -| <font> -| " -This page contains an insanely badly-nested tag sequence." - -#data -<html> -<body> -<b><nobr><div>This text is in a div inside a nobr</nobr>More text that should not be in the nobr, i.e., the -nobr should have closed the div inside it implicitly. </b><pre>A pre tag outside everything else.</pre> -</body> -</html> -#errors -#document -| <html> -| <head> -| <body> -| " -" -| <b> -| <nobr> -| <div> -| <b> -| <nobr> -| "This text is in a div inside a nobr" -| "More text that should not be in the nobr, i.e., the -nobr should have closed the div inside it implicitly. " -| <pre> -| "A pre tag outside everything else." -| " - -" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/webkit01.dat b/vendor/golang.org/x/net/html/testdata/webkit/webkit01.dat deleted file mode 100644 index 9d425e99..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/webkit01.dat +++ /dev/null @@ -1,610 +0,0 @@ -#data -Test -#errors -Line: 1 Col: 4 Unexpected non-space characters. Expected DOCTYPE. -#document -| <html> -| <head> -| <body> -| "Test" - -#data -<div></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> - -#data -<div>Test</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "Test" - -#data -<di -#errors -#document -| <html> -| <head> -| <body> - -#data -<div>Hello</div> -<script> -console.log("PASS"); -</script> -<div>Bye</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "Hello" -| " -" -| <script> -| " -console.log("PASS"); -" -| " -" -| <div> -| "Bye" - -#data -<div foo="bar">Hello</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| foo="bar" -| "Hello" - -#data -<div>Hello</div> -<script> -console.log("FOO<span>BAR</span>BAZ"); -</script> -<div>Bye</div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| "Hello" -| " -" -| <script> -| " -console.log("FOO<span>BAR</span>BAZ"); -" -| " -" -| <div> -| "Bye" - -#data -<foo bar="baz"></foo><potato quack="duck"></potato> -#errors -#document -| <html> -| <head> -| <body> -| <foo> -| bar="baz" -| <potato> -| quack="duck" - -#data -<foo bar="baz"><potato quack="duck"></potato></foo> -#errors -#document -| <html> -| <head> -| <body> -| <foo> -| bar="baz" -| <potato> -| quack="duck" - -#data -<foo></foo bar="baz"><potato></potato quack="duck"> -#errors -#document -| <html> -| <head> -| <body> -| <foo> -| <potato> - -#data -</ tttt> -#errors -#document -| <!-- tttt --> -| <html> -| <head> -| <body> - -#data -<div FOO ><img><img></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| foo="" -| <img> -| <img> - -#data -<p>Test</p<p>Test2</p> -#errors -#document -| <html> -| <head> -| <body> -| <p> -| "TestTest2" - -#data -<rdar://problem/6869687> -#errors -#document -| <html> -| <head> -| <body> -| <rdar:> -| 6869687="" -| problem="" - -#data -<A>test< /A> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| "test< /A>" - -#data -&lt; -#errors -#document -| <html> -| <head> -| <body> -| "<" - -#data -<body foo='bar'><body foo='baz' yo='mama'> -#errors -#document -| <html> -| <head> -| <body> -| foo="bar" -| yo="mama" - -#data -<body></br foo="bar"></body> -#errors -#document -| <html> -| <head> -| <body> -| <br> - -#data -<bdy><br foo="bar"></body> -#errors -#document -| <html> -| <head> -| <body> -| <bdy> -| <br> -| foo="bar" - -#data -<body></body></br foo="bar"> -#errors -#document -| <html> -| <head> -| <body> -| <br> - -#data -<bdy></body><br foo="bar"> -#errors -#document -| <html> -| <head> -| <body> -| <bdy> -| <br> -| foo="bar" - -#data -<html><body></body></html><!-- Hi there --> -#errors -#document -| <html> -| <head> -| <body> -| <!-- Hi there --> - -#data -<html><body></body></html>x<!-- Hi there --> -#errors -#document -| <html> -| <head> -| <body> -| "x" -| <!-- Hi there --> - -#data -<html><body></body></html>x<!-- Hi there --></html><!-- Again --> -#errors -#document -| <html> -| <head> -| <body> -| "x" -| <!-- Hi there --> -| <!-- Again --> - -#data -<html><body></body></html>x<!-- Hi there --></body></html><!-- Again --> -#errors -#document -| <html> -| <head> -| <body> -| "x" -| <!-- Hi there --> -| <!-- Again --> - -#data -<html><body><ruby><div><rp>xx</rp></div></ruby></body></html> -#errors -#document -| <html> -| <head> -| <body> -| <ruby> -| <div> -| <rp> -| "xx" - -#data -<html><body><ruby><div><rt>xx</rt></div></ruby></body></html> -#errors -#document -| <html> -| <head> -| <body> -| <ruby> -| <div> -| <rt> -| "xx" - -#data -<html><frameset><!--1--><noframes>A</noframes><!--2--></frameset><!--3--><noframes>B</noframes><!--4--></html><!--5--><noframes>C</noframes><!--6--> -#errors -#document -| <html> -| <head> -| <frameset> -| <!-- 1 --> -| <noframes> -| "A" -| <!-- 2 --> -| <!-- 3 --> -| <noframes> -| "B" -| <!-- 4 --> -| <noframes> -| "C" -| <!-- 5 --> -| <!-- 6 --> - -#data -<select><option>A<select><option>B<select><option>C<select><option>D<select><option>E<select><option>F<select><option>G<select> -#errors -#document -| <html> -| <head> -| <body> -| <select> -| <option> -| "A" -| <option> -| "B" -| <select> -| <option> -| "C" -| <option> -| "D" -| <select> -| <option> -| "E" -| <option> -| "F" -| <select> -| <option> -| "G" - -#data -<dd><dd><dt><dt><dd><li><li> -#errors -#document -| <html> -| <head> -| <body> -| <dd> -| <dd> -| <dt> -| <dt> -| <dd> -| <li> -| <li> - -#data -<div><b></div><div><nobr>a<nobr> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <b> -| <div> -| <b> -| <nobr> -| "a" -| <nobr> - -#data -<head></head> -<body></body> -#errors -#document -| <html> -| <head> -| " -" -| <body> - -#data -<head></head> <style></style>ddd -#errors -#document -| <html> -| <head> -| <style> -| " " -| <body> -| "ddd" - -#data -<kbd><table></kbd><col><select><tr> -#errors -#document -| <html> -| <head> -| <body> -| <kbd> -| <select> -| <table> -| <colgroup> -| <col> -| <tbody> -| <tr> - -#data -<kbd><table></kbd><col><select><tr></table><div> -#errors -#document -| <html> -| <head> -| <body> -| <kbd> -| <select> -| <table> -| <colgroup> -| <col> -| <tbody> -| <tr> -| <div> - -#data -<a><li><style></style><title></title></a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <li> -| <a> -| <style> -| <title> - -#data -<font></p><p><meta><title></title></font> -#errors -#document -| <html> -| <head> -| <body> -| <font> -| <p> -| <p> -| <font> -| <meta> -| <title> - -#data -<a><center><title></title><a> -#errors -#document -| <html> -| <head> -| <body> -| <a> -| <center> -| <a> -| <title> -| <a> - -#data -<svg><title><div> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| <svg title> -| <div> - -#data -<svg><title><rect><div> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| <svg title> -| <rect> -| <div> - -#data -<svg><title><svg><div> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| <svg title> -| <svg svg> -| <div> - -#data -<img <="" FAIL> -#errors -#document -| <html> -| <head> -| <body> -| <img> -| <="" -| fail="" - -#data -<ul><li><div id='foo'/>A</li><li>B<div>C</div></li></ul> -#errors -#document -| <html> -| <head> -| <body> -| <ul> -| <li> -| <div> -| id="foo" -| "A" -| <li> -| "B" -| <div> -| "C" - -#data -<svg><em><desc></em> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| <em> -| <desc> - -#data -<table><tr><td><svg><desc><td></desc><circle> -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| <svg svg> -| <svg desc> -| <td> -| <circle> - -#data -<svg><tfoot></mi><td> -#errors -#document -| <html> -| <head> -| <body> -| <svg svg> -| <svg tfoot> -| <svg td> - -#data -<math><mrow><mrow><mn>1</mn></mrow><mi>a</mi></mrow></math> -#errors -#document -| <html> -| <head> -| <body> -| <math math> -| <math mrow> -| <math mrow> -| <math mn> -| "1" -| <math mi> -| "a" - -#data -<!doctype html><input type="hidden"><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <frameset> - -#data -<!doctype html><input type="button"><frameset> -#errors -#document -| <!DOCTYPE html> -| <html> -| <head> -| <body> -| <input> -| type="button" diff --git a/vendor/golang.org/x/net/html/testdata/webkit/webkit02.dat b/vendor/golang.org/x/net/html/testdata/webkit/webkit02.dat deleted file mode 100644 index 905783d3..00000000 --- a/vendor/golang.org/x/net/html/testdata/webkit/webkit02.dat +++ /dev/null @@ -1,159 +0,0 @@ -#data -<foo bar=qux/> -#errors -#document -| <html> -| <head> -| <body> -| <foo> -| bar="qux/" - -#data -<p id="status"><noscript><strong>A</strong></noscript><span>B</span></p> -#errors -#document -| <html> -| <head> -| <body> -| <p> -| id="status" -| <noscript> -| "<strong>A</strong>" -| <span> -| "B" - -#data -<div><sarcasm><div></div></sarcasm></div> -#errors -#document -| <html> -| <head> -| <body> -| <div> -| <sarcasm> -| <div> - -#data -<html><body><img src="" border="0" alt="><div>A</div></body></html> -#errors -#document -| <html> -| <head> -| <body> - -#data -<table><td></tbody>A -#errors -#document -| <html> -| <head> -| <body> -| "A" -| <table> -| <tbody> -| <tr> -| <td> - -#data -<table><td></thead>A -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| "A" - -#data -<table><td></tfoot>A -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <tbody> -| <tr> -| <td> -| "A" - -#data -<table><thead><td></tbody>A -#errors -#document -| <html> -| <head> -| <body> -| <table> -| <thead> -| <tr> -| <td> -| "A" - -#data -<legend>test</legend> -#errors -#document -| <html> -| <head> -| <body> -| <legend> -| "test" - -#data -<table><input> -#errors -#document -| <html> -| <head> -| <body> -| <input> -| <table> - -#data -<b><em><dcell><postfield><postfield><postfield><postfield><missing_glyph><missing_glyph><missing_glyph><missing_glyph><hkern><aside></b></em> -#errors -#document-fragment -div -#document -| <b> -| <em> -| <dcell> -| <postfield> -| <postfield> -| <postfield> -| <postfield> -| <missing_glyph> -| <missing_glyph> -| <missing_glyph> -| <missing_glyph> -| <hkern> -| <aside> -| <em> -| <b> - -#data -<isindex action="x"> -#errors -#document-fragment -table -#document -| <form> -| action="x" -| <hr> -| <label> -| "This is a searchable index. Enter search keywords: " -| <input> -| name="isindex" -| <hr> - -#data -<option><XH<optgroup></optgroup> -#errors -#document-fragment -select -#document -| <option> diff --git a/vendor/golang.org/x/net/html/token_test.go b/vendor/golang.org/x/net/html/token_test.go deleted file mode 100644 index 20221c32..00000000 --- a/vendor/golang.org/x/net/html/token_test.go +++ /dev/null @@ -1,748 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package html - -import ( - "bytes" - "io" - "io/ioutil" - "reflect" - "runtime" - "strings" - "testing" -) - -type tokenTest struct { - // A short description of the test case. - desc string - // The HTML to parse. - html string - // The string representations of the expected tokens, joined by '$'. - golden string -} - -var tokenTests = []tokenTest{ - { - "empty", - "", - "", - }, - // A single text node. The tokenizer should not break text nodes on whitespace, - // nor should it normalize whitespace within a text node. - { - "text", - "foo bar", - "foo bar", - }, - // An entity. - { - "entity", - "one &lt; two", - "one &lt; two", - }, - // A start, self-closing and end tag. The tokenizer does not care if the start - // and end tokens don't match; that is the job of the parser. - { - "tags", - "<a>b<c/>d</e>", - "<a>$b$<c/>$d$</e>", - }, - // Angle brackets that aren't a tag. - { - "not a tag #0", - "<", - "&lt;", - }, - { - "not a tag #1", - "</", - "&lt;/", - }, - { - "not a tag #2", - "</>", - "<!---->", - }, - { - "not a tag #3", - "a</>b", - "a$<!---->$b", - }, - { - "not a tag #4", - "</ >", - "<!-- -->", - }, - { - "not a tag #5", - "</.", - "<!--.-->", - }, - { - "not a tag #6", - "</.>", - "<!--.-->", - }, - { - "not a tag #7", - "a < b", - "a &lt; b", - }, - { - "not a tag #8", - "<.>", - "&lt;.&gt;", - }, - { - "not a tag #9", - "a<<<b>>>c", - "a&lt;&lt;$<b>$&gt;&gt;c", - }, - { - "not a tag #10", - "if x<0 and y < 0 then x*y>0", - "if x&lt;0 and y &lt; 0 then x*y&gt;0", - }, - { - "not a tag #11", - "<<p>", - "&lt;$<p>", - }, - // EOF in a tag name. - { - "tag name eof #0", - "<a", - "", - }, - { - "tag name eof #1", - "<a ", - "", - }, - { - "tag name eof #2", - "a<b", - "a", - }, - { - "tag name eof #3", - "<a><b", - "<a>", - }, - { - "tag name eof #4", - `<a x`, - ``, - }, - // Some malformed tags that are missing a '>'. - { - "malformed tag #0", - `<p</p>`, - `<p< p="">`, - }, - { - "malformed tag #1", - `<p </p>`, - `<p <="" p="">`, - }, - { - "malformed tag #2", - `<p id`, - ``, - }, - { - "malformed tag #3", - `<p id=`, - ``, - }, - { - "malformed tag #4", - `<p id=>`, - `<p id="">`, - }, - { - "malformed tag #5", - `<p id=0`, - ``, - }, - { - "malformed tag #6", - `<p id=0</p>`, - `<p id="0&lt;/p">`, - }, - { - "malformed tag #7", - `<p id="0</p>`, - ``, - }, - { - "malformed tag #8", - `<p id="0"</p>`, - `<p id="0" <="" p="">`, - }, - { - "malformed tag #9", - `<p></p id`, - `<p>`, - }, - // Raw text and RCDATA. - { - "basic raw text", - "<script><a></b></script>", - "<script>$&lt;a&gt;&lt;/b&gt;$</script>", - }, - { - "unfinished script end tag", - "<SCRIPT>a</SCR", - "<script>$a&lt;/SCR", - }, - { - "broken script end tag", - "<SCRIPT>a</SCR ipt>", - "<script>$a&lt;/SCR ipt&gt;", - }, - { - "EOF in script end tag", - "<SCRIPT>a</SCRipt", - "<script>$a&lt;/SCRipt", - }, - { - "scriptx end tag", - "<SCRIPT>a</SCRiptx", - "<script>$a&lt;/SCRiptx", - }, - { - "' ' completes script end tag", - "<SCRIPT>a</SCRipt ", - "<script>$a", - }, - { - "'>' completes script end tag", - "<SCRIPT>a</SCRipt>", - "<script>$a$</script>", - }, - { - "self-closing script end tag", - "<SCRIPT>a</SCRipt/>", - "<script>$a$</script>", - }, - { - "nested script tag", - "<SCRIPT>a</SCRipt<script>", - "<script>$a&lt;/SCRipt&lt;script&gt;", - }, - { - "script end tag after unfinished", - "<SCRIPT>a</SCRipt</script>", - "<script>$a&lt;/SCRipt$</script>", - }, - { - "script/style mismatched tags", - "<script>a</style>", - "<script>$a&lt;/style&gt;", - }, - { - "style element with entity", - "<style>&apos;", - "<style>$&amp;apos;", - }, - { - "textarea with tag", - "<textarea><div></textarea>", - "<textarea>$&lt;div&gt;$</textarea>", - }, - { - "title with tag and entity", - "<title><b>K&amp;R C</b></title>", - "<title>$&lt;b&gt;K&amp;R C&lt;/b&gt;$</title>", - }, - // DOCTYPE tests. - { - "Proper DOCTYPE", - "<!DOCTYPE html>", - "<!DOCTYPE html>", - }, - { - "DOCTYPE with no space", - "<!doctypehtml>", - "<!DOCTYPE html>", - }, - { - "DOCTYPE with two spaces", - "<!doctype html>", - "<!DOCTYPE html>", - }, - { - "looks like DOCTYPE but isn't", - "<!DOCUMENT html>", - "<!--DOCUMENT html-->", - }, - { - "DOCTYPE at EOF", - "<!DOCtype", - "<!DOCTYPE >", - }, - // XML processing instructions. - { - "XML processing instruction", - "<?xml?>", - "<!--?xml?-->", - }, - // Comments. - { - "comment0", - "abc<b><!-- skipme --></b>def", - "abc$<b>$<!-- skipme -->$</b>$def", - }, - { - "comment1", - "a<!-->z", - "a$<!---->$z", - }, - { - "comment2", - "a<!--->z", - "a$<!---->$z", - }, - { - "comment3", - "a<!--x>-->z", - "a$<!--x>-->$z", - }, - { - "comment4", - "a<!--x->-->z", - "a$<!--x->-->$z", - }, - { - "comment5", - "a<!>z", - "a$<!---->$z", - }, - { - "comment6", - "a<!->z", - "a$<!----->$z", - }, - { - "comment7", - "a<!---<>z", - "a$<!---<>z-->", - }, - { - "comment8", - "a<!--z", - "a$<!--z-->", - }, - { - "comment9", - "a<!--z-", - "a$<!--z-->", - }, - { - "comment10", - "a<!--z--", - "a$<!--z-->", - }, - { - "comment11", - "a<!--z---", - "a$<!--z--->", - }, - { - "comment12", - "a<!--z----", - "a$<!--z---->", - }, - { - "comment13", - "a<!--x--!>z", - "a$<!--x-->$z", - }, - // An attribute with a backslash. - { - "backslash", - `<p id="a\"b">`, - `<p id="a\" b"="">`, - }, - // Entities, tag name and attribute key lower-casing, and whitespace - // normalization within a tag. - { - "tricky", - "<p \t\n iD=\"a&quot;B\" foo=\"bar\"><EM>te&lt;&amp;;xt</em></p>", - `<p id="a&#34;B" foo="bar">$<em>$te&lt;&amp;;xt$</em>$</p>`, - }, - // A nonexistent entity. Tokenizing and converting back to a string should - // escape the "&" to become "&amp;". - { - "noSuchEntity", - `<a b="c&noSuchEntity;d">&lt;&alsoDoesntExist;&`, - `<a b="c&amp;noSuchEntity;d">$&lt;&amp;alsoDoesntExist;&amp;`, - }, - { - "entity without semicolon", - `&notit;&notin;<a b="q=z&amp=5&notice=hello&not;=world">`, - `¬it;∉$<a b="q=z&amp;amp=5&amp;notice=hello¬=world">`, - }, - { - "entity with digits", - "&frac12;", - "½", - }, - // Attribute tests: - // http://dev.w3.org/html5/pf-summary/Overview.html#attributes - { - "Empty attribute", - `<input disabled FOO>`, - `<input disabled="" foo="">`, - }, - { - "Empty attribute, whitespace", - `<input disabled FOO >`, - `<input disabled="" foo="">`, - }, - { - "Unquoted attribute value", - `<input value=yes FOO=BAR>`, - `<input value="yes" foo="BAR">`, - }, - { - "Unquoted attribute value, spaces", - `<input value = yes FOO = BAR>`, - `<input value="yes" foo="BAR">`, - }, - { - "Unquoted attribute value, trailing space", - `<input value=yes FOO=BAR >`, - `<input value="yes" foo="BAR">`, - }, - { - "Single-quoted attribute value", - `<input value='yes' FOO='BAR'>`, - `<input value="yes" foo="BAR">`, - }, - { - "Single-quoted attribute value, trailing space", - `<input value='yes' FOO='BAR' >`, - `<input value="yes" foo="BAR">`, - }, - { - "Double-quoted attribute value", - `<input value="I'm an attribute" FOO="BAR">`, - `<input value="I&#39;m an attribute" foo="BAR">`, - }, - { - "Attribute name characters", - `<meta http-equiv="content-type">`, - `<meta http-equiv="content-type">`, - }, - { - "Mixed attributes", - `a<P V="0 1" w='2' X=3 y>z`, - `a$<p v="0 1" w="2" x="3" y="">$z`, - }, - { - "Attributes with a solitary single quote", - `<p id=can't><p id=won't>`, - `<p id="can&#39;t">$<p id="won&#39;t">`, - }, -} - -func TestTokenizer(t *testing.T) { -loop: - for _, tt := range tokenTests { - z := NewTokenizer(strings.NewReader(tt.html)) - if tt.golden != "" { - for i, s := range strings.Split(tt.golden, "$") { - if z.Next() == ErrorToken { - t.Errorf("%s token %d: want %q got error %v", tt.desc, i, s, z.Err()) - continue loop - } - actual := z.Token().String() - if s != actual { - t.Errorf("%s token %d: want %q got %q", tt.desc, i, s, actual) - continue loop - } - } - } - z.Next() - if z.Err() != io.EOF { - t.Errorf("%s: want EOF got %q", tt.desc, z.Err()) - } - } -} - -func TestMaxBuffer(t *testing.T) { - // Exceeding the maximum buffer size generates ErrBufferExceeded. - z := NewTokenizer(strings.NewReader("<" + strings.Repeat("t", 10))) - z.SetMaxBuf(5) - tt := z.Next() - if got, want := tt, ErrorToken; got != want { - t.Fatalf("token type: got: %v want: %v", got, want) - } - if got, want := z.Err(), ErrBufferExceeded; got != want { - t.Errorf("error type: got: %v want: %v", got, want) - } - if got, want := string(z.Raw()), "<tttt"; got != want { - t.Fatalf("buffered before overflow: got: %q want: %q", got, want) - } -} - -func TestMaxBufferReconstruction(t *testing.T) { - // Exceeding the maximum buffer size at any point while tokenizing permits - // reconstructing the original input. -tests: - for _, test := range tokenTests { - for maxBuf := 1; ; maxBuf++ { - r := strings.NewReader(test.html) - z := NewTokenizer(r) - z.SetMaxBuf(maxBuf) - var tokenized bytes.Buffer - for { - tt := z.Next() - tokenized.Write(z.Raw()) - if tt == ErrorToken { - if err := z.Err(); err != io.EOF && err != ErrBufferExceeded { - t.Errorf("%s: unexpected error: %v", test.desc, err) - } - break - } - } - // Anything tokenized along with untokenized input or data left in the reader. - assembled, err := ioutil.ReadAll(io.MultiReader(&tokenized, bytes.NewReader(z.Buffered()), r)) - if err != nil { - t.Errorf("%s: ReadAll: %v", test.desc, err) - continue tests - } - if got, want := string(assembled), test.html; got != want { - t.Errorf("%s: reassembled html:\n got: %q\nwant: %q", test.desc, got, want) - continue tests - } - // EOF indicates that we completed tokenization and hence found the max - // maxBuf that generates ErrBufferExceeded, so continue to the next test. - if z.Err() == io.EOF { - break - } - } // buffer sizes - } // tests -} - -func TestPassthrough(t *testing.T) { - // Accumulating the raw output for each parse event should reconstruct the - // original input. - for _, test := range tokenTests { - z := NewTokenizer(strings.NewReader(test.html)) - var parsed bytes.Buffer - for { - tt := z.Next() - parsed.Write(z.Raw()) - if tt == ErrorToken { - break - } - } - if got, want := parsed.String(), test.html; got != want { - t.Errorf("%s: parsed output:\n got: %q\nwant: %q", test.desc, got, want) - } - } -} - -func TestBufAPI(t *testing.T) { - s := "0<a>1</a>2<b>3<a>4<a>5</a>6</b>7</a>8<a/>9" - z := NewTokenizer(bytes.NewBufferString(s)) - var result bytes.Buffer - depth := 0 -loop: - for { - tt := z.Next() - switch tt { - case ErrorToken: - if z.Err() != io.EOF { - t.Error(z.Err()) - } - break loop - case TextToken: - if depth > 0 { - result.Write(z.Text()) - } - case StartTagToken, EndTagToken: - tn, _ := z.TagName() - if len(tn) == 1 && tn[0] == 'a' { - if tt == StartTagToken { - depth++ - } else { - depth-- - } - } - } - } - u := "14567" - v := string(result.Bytes()) - if u != v { - t.Errorf("TestBufAPI: want %q got %q", u, v) - } -} - -func TestConvertNewlines(t *testing.T) { - testCases := map[string]string{ - "Mac\rDOS\r\nUnix\n": "Mac\nDOS\nUnix\n", - "Unix\nMac\rDOS\r\n": "Unix\nMac\nDOS\n", - "DOS\r\nDOS\r\nDOS\r\n": "DOS\nDOS\nDOS\n", - "": "", - "\n": "\n", - "\n\r": "\n\n", - "\r": "\n", - "\r\n": "\n", - "\r\n\n": "\n\n", - "\r\n\r": "\n\n", - "\r\n\r\n": "\n\n", - "\r\r": "\n\n", - "\r\r\n": "\n\n", - "\r\r\n\n": "\n\n\n", - "\r\r\r\n": "\n\n\n", - "\r \n": "\n \n", - "xyz": "xyz", - } - for in, want := range testCases { - if got := string(convertNewlines([]byte(in))); got != want { - t.Errorf("input %q: got %q, want %q", in, got, want) - } - } -} - -func TestReaderEdgeCases(t *testing.T) { - const s = "<p>An io.Reader can return (0, nil) or (n, io.EOF).</p>" - testCases := []io.Reader{ - &zeroOneByteReader{s: s}, - &eofStringsReader{s: s}, - &stuckReader{}, - } - for i, tc := range testCases { - got := []TokenType{} - z := NewTokenizer(tc) - for { - tt := z.Next() - if tt == ErrorToken { - break - } - got = append(got, tt) - } - if err := z.Err(); err != nil && err != io.EOF { - if err != io.ErrNoProgress { - t.Errorf("i=%d: %v", i, err) - } - continue - } - want := []TokenType{ - StartTagToken, - TextToken, - EndTagToken, - } - if !reflect.DeepEqual(got, want) { - t.Errorf("i=%d: got %v, want %v", i, got, want) - continue - } - } -} - -// zeroOneByteReader is like a strings.Reader that alternates between -// returning 0 bytes and 1 byte at a time. -type zeroOneByteReader struct { - s string - n int -} - -func (r *zeroOneByteReader) Read(p []byte) (int, error) { - if len(p) == 0 { - return 0, nil - } - if len(r.s) == 0 { - return 0, io.EOF - } - r.n++ - if r.n%2 != 0 { - return 0, nil - } - p[0], r.s = r.s[0], r.s[1:] - return 1, nil -} - -// eofStringsReader is like a strings.Reader but can return an (n, err) where -// n > 0 && err != nil. -type eofStringsReader struct { - s string -} - -func (r *eofStringsReader) Read(p []byte) (int, error) { - n := copy(p, r.s) - r.s = r.s[n:] - if r.s != "" { - return n, nil - } - return n, io.EOF -} - -// stuckReader is an io.Reader that always returns no data and no error. -type stuckReader struct{} - -func (*stuckReader) Read(p []byte) (int, error) { - return 0, nil -} - -const ( - rawLevel = iota - lowLevel - highLevel -) - -func benchmarkTokenizer(b *testing.B, level int) { - buf, err := ioutil.ReadFile("testdata/go1.html") - if err != nil { - b.Fatalf("could not read testdata/go1.html: %v", err) - } - b.SetBytes(int64(len(buf))) - runtime.GC() - b.ReportAllocs() - b.ResetTimer() - for i := 0; i < b.N; i++ { - z := NewTokenizer(bytes.NewBuffer(buf)) - for { - tt := z.Next() - if tt == ErrorToken { - if err := z.Err(); err != nil && err != io.EOF { - b.Fatalf("tokenizer error: %v", err) - } - break - } - switch level { - case rawLevel: - // Calling z.Raw just returns the raw bytes of the token. It does - // not unescape &lt; to <, or lower-case tag names and attribute keys. - z.Raw() - case lowLevel: - // Caling z.Text, z.TagName and z.TagAttr returns []byte values - // whose contents may change on the next call to z.Next. - switch tt { - case TextToken, CommentToken, DoctypeToken: - z.Text() - case StartTagToken, SelfClosingTagToken: - _, more := z.TagName() - for more { - _, _, more = z.TagAttr() - } - case EndTagToken: - z.TagName() - } - case highLevel: - // Calling z.Token converts []byte values to strings whose validity - // extend beyond the next call to z.Next. - z.Token() - } - } - } -} - -func BenchmarkRawLevelTokenizer(b *testing.B) { benchmarkTokenizer(b, rawLevel) } -func BenchmarkLowLevelTokenizer(b *testing.B) { benchmarkTokenizer(b, lowLevel) } -func BenchmarkHighLevelTokenizer(b *testing.B) { benchmarkTokenizer(b, highLevel) } diff --git a/vendor/golang.org/x/net/http/httpproxy/export_test.go b/vendor/golang.org/x/net/http/httpproxy/export_test.go deleted file mode 100644 index 36b29d2d..00000000 --- a/vendor/golang.org/x/net/http/httpproxy/export_test.go +++ /dev/null @@ -1,7 +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 httpproxy - -var ExportUseProxy = (*Config).useProxy diff --git a/vendor/golang.org/x/net/http/httpproxy/go19_test.go b/vendor/golang.org/x/net/http/httpproxy/go19_test.go deleted file mode 100644 index 2117ca56..00000000 --- a/vendor/golang.org/x/net/http/httpproxy/go19_test.go +++ /dev/null @@ -1,13 +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. - -// +build go1.9 - -package httpproxy_test - -import "testing" - -func init() { - setHelper = func(t *testing.T) { t.Helper() } -} diff --git a/vendor/golang.org/x/net/http/httpproxy/proxy.go b/vendor/golang.org/x/net/http/httpproxy/proxy.go deleted file mode 100644 index cbe1d2a0..00000000 --- a/vendor/golang.org/x/net/http/httpproxy/proxy.go +++ /dev/null @@ -1,239 +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 httpproxy provides support for HTTP proxy determination -// based on environment variables, as provided by net/http's -// ProxyFromEnvironment function. -// -// The API is not subject to the Go 1 compatibility promise and may change at -// any time. -package httpproxy - -import ( - "errors" - "fmt" - "net" - "net/url" - "os" - "strings" - "unicode/utf8" - - "golang.org/x/net/idna" -) - -// Config holds configuration for HTTP proxy settings. See -// FromEnvironment for details. -type Config struct { - // HTTPProxy represents the value of the HTTP_PROXY or - // http_proxy environment variable. It will be used as the proxy - // URL for HTTP requests and HTTPS requests unless overridden by - // HTTPSProxy or NoProxy. - HTTPProxy string - - // HTTPSProxy represents the HTTPS_PROXY or https_proxy - // environment variable. It will be used as the proxy URL for - // HTTPS requests unless overridden by NoProxy. - HTTPSProxy string - - // NoProxy represents the NO_PROXY or no_proxy environment - // variable. It specifies URLs that should be excluded from - // proxying as a comma-separated list of domain names or a - // single asterisk (*) to indicate that no proxying should be - // done. A domain name matches that name and all subdomains. A - // domain name with a leading "." matches subdomains only. For - // example "foo.com" matches "foo.com" and "bar.foo.com"; - // ".y.com" matches "x.y.com" but not "y.com". - NoProxy string - - // CGI holds whether the current process is running - // as a CGI handler (FromEnvironment infers this from the - // presence of a REQUEST_METHOD environment variable). - // When this is set, ProxyForURL will return an error - // when HTTPProxy applies, because a client could be - // setting HTTP_PROXY maliciously. See https://golang.org/s/cgihttpproxy. - CGI bool -} - -// FromEnvironment returns a Config instance populated from the -// environment variables HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the -// lowercase versions thereof). HTTPS_PROXY takes precedence over -// HTTP_PROXY for https requests. -// -// The environment values may be either a complete URL or a -// "host[:port]", in which case the "http" scheme is assumed. An error -// is returned if the value is a different form. -func FromEnvironment() *Config { - return &Config{ - HTTPProxy: getEnvAny("HTTP_PROXY", "http_proxy"), - HTTPSProxy: getEnvAny("HTTPS_PROXY", "https_proxy"), - NoProxy: getEnvAny("NO_PROXY", "no_proxy"), - CGI: os.Getenv("REQUEST_METHOD") != "", - } -} - -func getEnvAny(names ...string) string { - for _, n := range names { - if val := os.Getenv(n); val != "" { - return val - } - } - return "" -} - -// ProxyFunc returns a function that determines the proxy URL to use for -// a given request URL. Changing the contents of cfg will not affect -// proxy functions created earlier. -// -// A nil URL and nil error are returned if no proxy is defined in the -// environment, or a proxy should not be used for the given request, as -// defined by NO_PROXY. -// -// As a special case, if req.URL.Host is "localhost" (with or without a -// port number), then a nil URL and nil error will be returned. -func (cfg *Config) ProxyFunc() func(reqURL *url.URL) (*url.URL, error) { - // Prevent Config changes from affecting the function calculation. - // TODO Preprocess proxy settings for more efficient evaluation. - cfg1 := *cfg - return cfg1.proxyForURL -} - -func (cfg *Config) proxyForURL(reqURL *url.URL) (*url.URL, error) { - var proxy string - if reqURL.Scheme == "https" { - proxy = cfg.HTTPSProxy - } - if proxy == "" { - proxy = cfg.HTTPProxy - if proxy != "" && cfg.CGI { - return nil, errors.New("refusing to use HTTP_PROXY value in CGI environment; see golang.org/s/cgihttpproxy") - } - } - if proxy == "" { - return nil, nil - } - if !cfg.useProxy(canonicalAddr(reqURL)) { - return nil, nil - } - proxyURL, err := url.Parse(proxy) - if err != nil || - (proxyURL.Scheme != "http" && - proxyURL.Scheme != "https" && - proxyURL.Scheme != "socks5") { - // proxy was bogus. Try prepending "http://" to it and - // see if that parses correctly. If not, we fall - // through and complain about the original one. - if proxyURL, err := url.Parse("http://" + proxy); err == nil { - return proxyURL, nil - } - } - if err != nil { - return nil, fmt.Errorf("invalid proxy address %q: %v", proxy, err) - } - return proxyURL, nil -} - -// useProxy reports whether requests to addr should use a proxy, -// according to the NO_PROXY or no_proxy environment variable. -// addr is always a canonicalAddr with a host and port. -func (cfg *Config) useProxy(addr string) bool { - if len(addr) == 0 { - return true - } - host, _, err := net.SplitHostPort(addr) - if err != nil { - return false - } - if host == "localhost" { - return false - } - if ip := net.ParseIP(host); ip != nil { - if ip.IsLoopback() { - return false - } - } - - noProxy := cfg.NoProxy - if noProxy == "*" { - return false - } - - addr = strings.ToLower(strings.TrimSpace(addr)) - if hasPort(addr) { - addr = addr[:strings.LastIndex(addr, ":")] - } - - for _, p := range strings.Split(noProxy, ",") { - p = strings.ToLower(strings.TrimSpace(p)) - if len(p) == 0 { - continue - } - if hasPort(p) { - p = p[:strings.LastIndex(p, ":")] - } - if addr == p { - return false - } - if len(p) == 0 { - // There is no host part, likely the entry is malformed; ignore. - continue - } - if p[0] == '.' && (strings.HasSuffix(addr, p) || addr == p[1:]) { - // no_proxy ".foo.com" matches "bar.foo.com" or "foo.com" - return false - } - if p[0] != '.' && strings.HasSuffix(addr, p) && addr[len(addr)-len(p)-1] == '.' { - // no_proxy "foo.com" matches "bar.foo.com" - return false - } - } - return true -} - -var portMap = map[string]string{ - "http": "80", - "https": "443", - "socks5": "1080", -} - -// canonicalAddr returns url.Host but always with a ":port" suffix -func canonicalAddr(url *url.URL) string { - addr := url.Hostname() - if v, err := idnaASCII(addr); err == nil { - addr = v - } - port := url.Port() - if port == "" { - port = portMap[url.Scheme] - } - return net.JoinHostPort(addr, port) -} - -// Given a string of the form "host", "host:port", or "[ipv6::address]:port", -// return true if the string includes a port. -func hasPort(s string) bool { return strings.LastIndex(s, ":") > strings.LastIndex(s, "]") } - -func idnaASCII(v string) (string, error) { - // TODO: Consider removing this check after verifying performance is okay. - // Right now punycode verification, length checks, context checks, and the - // permissible character tests are all omitted. It also prevents the ToASCII - // call from salvaging an invalid IDN, when possible. As a result it may be - // possible to have two IDNs that appear identical to the user where the - // ASCII-only version causes an error downstream whereas the non-ASCII - // version does not. - // Note that for correct ASCII IDNs ToASCII will only do considerably more - // work, but it will not cause an allocation. - if isASCII(v) { - return v, nil - } - return idna.Lookup.ToASCII(v) -} - -func isASCII(s string) bool { - for i := 0; i < len(s); i++ { - if s[i] >= utf8.RuneSelf { - return false - } - } - return true -} diff --git a/vendor/golang.org/x/net/http/httpproxy/proxy_test.go b/vendor/golang.org/x/net/http/httpproxy/proxy_test.go deleted file mode 100644 index e4af199c..00000000 --- a/vendor/golang.org/x/net/http/httpproxy/proxy_test.go +++ /dev/null @@ -1,301 +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 httpproxy_test - -import ( - "bytes" - "errors" - "fmt" - "net/url" - "os" - "strings" - "testing" - - "golang.org/x/net/http/httpproxy" -) - -// setHelper calls t.Helper() for Go 1.9+ (see go19_test.go) and does nothing otherwise. -var setHelper = func(t *testing.T) {} - -type proxyForURLTest struct { - cfg httpproxy.Config - req string // URL to fetch; blank means "http://example.com" - want string - wanterr error -} - -func (t proxyForURLTest) String() string { - var buf bytes.Buffer - space := func() { - if buf.Len() > 0 { - buf.WriteByte(' ') - } - } - if t.cfg.HTTPProxy != "" { - fmt.Fprintf(&buf, "http_proxy=%q", t.cfg.HTTPProxy) - } - if t.cfg.HTTPSProxy != "" { - space() - fmt.Fprintf(&buf, "https_proxy=%q", t.cfg.HTTPSProxy) - } - if t.cfg.NoProxy != "" { - space() - fmt.Fprintf(&buf, "no_proxy=%q", t.cfg.NoProxy) - } - req := "http://example.com" - if t.req != "" { - req = t.req - } - space() - fmt.Fprintf(&buf, "req=%q", req) - return strings.TrimSpace(buf.String()) -} - -var proxyForURLTests = []proxyForURLTest{{ - cfg: httpproxy.Config{ - HTTPProxy: "127.0.0.1:8080", - }, - want: "http://127.0.0.1:8080", -}, { - cfg: httpproxy.Config{ - HTTPProxy: "cache.corp.example.com:1234", - }, - want: "http://cache.corp.example.com:1234", -}, { - cfg: httpproxy.Config{ - HTTPProxy: "cache.corp.example.com", - }, - want: "http://cache.corp.example.com", -}, { - cfg: httpproxy.Config{ - HTTPProxy: "https://cache.corp.example.com", - }, - want: "https://cache.corp.example.com", -}, { - cfg: httpproxy.Config{ - HTTPProxy: "http://127.0.0.1:8080", - }, - want: "http://127.0.0.1:8080", -}, { - cfg: httpproxy.Config{ - HTTPProxy: "https://127.0.0.1:8080", - }, - want: "https://127.0.0.1:8080", -}, { - cfg: httpproxy.Config{ - HTTPProxy: "socks5://127.0.0.1", - }, - want: "socks5://127.0.0.1", -}, { - // Don't use secure for http - cfg: httpproxy.Config{ - HTTPProxy: "http.proxy.tld", - HTTPSProxy: "secure.proxy.tld", - }, - req: "http://insecure.tld/", - want: "http://http.proxy.tld", -}, { - // Use secure for https. - cfg: httpproxy.Config{ - HTTPProxy: "http.proxy.tld", - HTTPSProxy: "secure.proxy.tld", - }, - req: "https://secure.tld/", - want: "http://secure.proxy.tld", -}, { - cfg: httpproxy.Config{ - HTTPProxy: "http.proxy.tld", - HTTPSProxy: "https://secure.proxy.tld", - }, - req: "https://secure.tld/", - want: "https://secure.proxy.tld", -}, { - // Issue 16405: don't use HTTP_PROXY in a CGI environment, - // where HTTP_PROXY can be attacker-controlled. - cfg: httpproxy.Config{ - HTTPProxy: "http://10.1.2.3:8080", - CGI: true, - }, - want: "<nil>", - wanterr: errors.New("refusing to use HTTP_PROXY value in CGI environment; see golang.org/s/cgihttpproxy"), -}, { - // HTTPS proxy is still used even in CGI environment. - // (perhaps dubious but it's the historical behaviour). - cfg: httpproxy.Config{ - HTTPSProxy: "https://secure.proxy.tld", - CGI: true, - }, - req: "https://secure.tld/", - want: "https://secure.proxy.tld", -}, { - want: "<nil>", -}, { - cfg: httpproxy.Config{ - NoProxy: "example.com", - HTTPProxy: "proxy", - }, - req: "http://example.com/", - want: "<nil>", -}, { - cfg: httpproxy.Config{ - NoProxy: ".example.com", - HTTPProxy: "proxy", - }, - req: "http://example.com/", - want: "<nil>", -}, { - cfg: httpproxy.Config{ - NoProxy: "ample.com", - HTTPProxy: "proxy", - }, - req: "http://example.com/", - want: "http://proxy", -}, { - cfg: httpproxy.Config{ - NoProxy: "example.com", - HTTPProxy: "proxy", - }, - req: "http://foo.example.com/", - want: "<nil>", -}, { - cfg: httpproxy.Config{ - NoProxy: ".foo.com", - HTTPProxy: "proxy", - }, - req: "http://example.com/", - want: "http://proxy", -}} - -func testProxyForURL(t *testing.T, tt proxyForURLTest) { - setHelper(t) - reqURLStr := tt.req - if reqURLStr == "" { - reqURLStr = "http://example.com" - } - reqURL, err := url.Parse(reqURLStr) - if err != nil { - t.Errorf("invalid URL %q", reqURLStr) - return - } - cfg := tt.cfg - proxyForURL := cfg.ProxyFunc() - url, err := proxyForURL(reqURL) - if g, e := fmt.Sprintf("%v", err), fmt.Sprintf("%v", tt.wanterr); g != e { - t.Errorf("%v: got error = %q, want %q", tt, g, e) - return - } - if got := fmt.Sprintf("%s", url); got != tt.want { - t.Errorf("%v: got URL = %q, want %q", tt, url, tt.want) - } - - // Check that changing the Config doesn't change the results - // of the functuon. - cfg = httpproxy.Config{} - url, err = proxyForURL(reqURL) - if g, e := fmt.Sprintf("%v", err), fmt.Sprintf("%v", tt.wanterr); g != e { - t.Errorf("(after mutating config) %v: got error = %q, want %q", tt, g, e) - return - } - if got := fmt.Sprintf("%s", url); got != tt.want { - t.Errorf("(after mutating config) %v: got URL = %q, want %q", tt, url, tt.want) - } -} - -func TestProxyForURL(t *testing.T) { - for _, tt := range proxyForURLTests { - testProxyForURL(t, tt) - } -} - -func TestFromEnvironment(t *testing.T) { - os.Setenv("HTTP_PROXY", "httpproxy") - os.Setenv("HTTPS_PROXY", "httpsproxy") - os.Setenv("NO_PROXY", "noproxy") - os.Setenv("REQUEST_METHOD", "") - got := httpproxy.FromEnvironment() - want := httpproxy.Config{ - HTTPProxy: "httpproxy", - HTTPSProxy: "httpsproxy", - NoProxy: "noproxy", - } - if *got != want { - t.Errorf("unexpected proxy config, got %#v want %#v", got, want) - } -} - -func TestFromEnvironmentWithRequestMethod(t *testing.T) { - os.Setenv("HTTP_PROXY", "httpproxy") - os.Setenv("HTTPS_PROXY", "httpsproxy") - os.Setenv("NO_PROXY", "noproxy") - os.Setenv("REQUEST_METHOD", "PUT") - got := httpproxy.FromEnvironment() - want := httpproxy.Config{ - HTTPProxy: "httpproxy", - HTTPSProxy: "httpsproxy", - NoProxy: "noproxy", - CGI: true, - } - if *got != want { - t.Errorf("unexpected proxy config, got %#v want %#v", got, want) - } -} - -func TestFromEnvironmentLowerCase(t *testing.T) { - os.Setenv("http_proxy", "httpproxy") - os.Setenv("https_proxy", "httpsproxy") - os.Setenv("no_proxy", "noproxy") - os.Setenv("REQUEST_METHOD", "") - got := httpproxy.FromEnvironment() - want := httpproxy.Config{ - HTTPProxy: "httpproxy", - HTTPSProxy: "httpsproxy", - NoProxy: "noproxy", - } - if *got != want { - t.Errorf("unexpected proxy config, got %#v want %#v", got, want) - } -} - -var UseProxyTests = []struct { - host string - match bool -}{ - // Never proxy localhost: - {"localhost", false}, - {"127.0.0.1", false}, - {"127.0.0.2", false}, - {"[::1]", false}, - {"[::2]", true}, // not a loopback address - - {"barbaz.net", false}, // match as .barbaz.net - {"foobar.com", false}, // have a port but match - {"foofoobar.com", true}, // not match as a part of foobar.com - {"baz.com", true}, // not match as a part of barbaz.com - {"localhost.net", true}, // not match as suffix of address - {"local.localhost", true}, // not match as prefix as address - {"barbarbaz.net", true}, // not match because NO_PROXY have a '.' - {"www.foobar.com", false}, // match because NO_PROXY includes "foobar.com" -} - -func TestUseProxy(t *testing.T) { - cfg := &httpproxy.Config{ - NoProxy: "foobar.com, .barbaz.net", - } - for _, test := range UseProxyTests { - if httpproxy.ExportUseProxy(cfg, test.host+":80") != test.match { - t.Errorf("useProxy(%v) = %v, want %v", test.host, !test.match, test.match) - } - } -} - -func TestInvalidNoProxy(t *testing.T) { - cfg := &httpproxy.Config{ - NoProxy: ":1", - } - ok := httpproxy.ExportUseProxy(cfg, "example.com:80") // should not panic - if !ok { - t.Errorf("useProxy unexpected return; got false; want true") - } -} diff --git a/vendor/golang.org/x/net/http2/ciphers_test.go b/vendor/golang.org/x/net/http2/ciphers_test.go deleted file mode 100644 index 764bbc8c..00000000 --- a/vendor/golang.org/x/net/http2/ciphers_test.go +++ /dev/null @@ -1,309 +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 http2 - -import "testing" - -func TestIsBadCipherBad(t *testing.T) { - for _, c := range badCiphers { - if !isBadCipher(c) { - t.Errorf("Wrong result for isBadCipher(%d), want true", c) - } - } -} - -// verify we don't give false positives on ciphers not on blacklist -func TestIsBadCipherGood(t *testing.T) { - goodCiphers := map[uint16]string{ - cipher_TLS_DHE_RSA_WITH_AES_256_CCM: "cipher_TLS_DHE_RSA_WITH_AES_256_CCM", - cipher_TLS_ECDHE_ECDSA_WITH_AES_128_CCM: "cipher_TLS_ECDHE_ECDSA_WITH_AES_128_CCM", - cipher_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256: "cipher_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256", - } - for c, name := range goodCiphers { - if isBadCipher(c) { - t.Errorf("Wrong result for isBadCipher(%d) %s, want false", c, name) - } - } -} - -// copied from https://http2.github.io/http2-spec/#BadCipherSuites, -var badCiphers = []uint16{ - cipher_TLS_NULL_WITH_NULL_NULL, - cipher_TLS_RSA_WITH_NULL_MD5, - cipher_TLS_RSA_WITH_NULL_SHA, - cipher_TLS_RSA_EXPORT_WITH_RC4_40_MD5, - cipher_TLS_RSA_WITH_RC4_128_MD5, - cipher_TLS_RSA_WITH_RC4_128_SHA, - cipher_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5, - cipher_TLS_RSA_WITH_IDEA_CBC_SHA, - cipher_TLS_RSA_EXPORT_WITH_DES40_CBC_SHA, - cipher_TLS_RSA_WITH_DES_CBC_SHA, - cipher_TLS_RSA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA, - cipher_TLS_DH_DSS_WITH_DES_CBC_SHA, - cipher_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA, - cipher_TLS_DH_RSA_WITH_DES_CBC_SHA, - cipher_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, - cipher_TLS_DHE_DSS_WITH_DES_CBC_SHA, - cipher_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, - cipher_TLS_DHE_RSA_WITH_DES_CBC_SHA, - cipher_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_DH_anon_EXPORT_WITH_RC4_40_MD5, - cipher_TLS_DH_anon_WITH_RC4_128_MD5, - cipher_TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA, - cipher_TLS_DH_anon_WITH_DES_CBC_SHA, - cipher_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_KRB5_WITH_DES_CBC_SHA, - cipher_TLS_KRB5_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_KRB5_WITH_RC4_128_SHA, - cipher_TLS_KRB5_WITH_IDEA_CBC_SHA, - cipher_TLS_KRB5_WITH_DES_CBC_MD5, - cipher_TLS_KRB5_WITH_3DES_EDE_CBC_MD5, - cipher_TLS_KRB5_WITH_RC4_128_MD5, - cipher_TLS_KRB5_WITH_IDEA_CBC_MD5, - cipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA, - cipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA, - cipher_TLS_KRB5_EXPORT_WITH_RC4_40_SHA, - cipher_TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5, - cipher_TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5, - cipher_TLS_KRB5_EXPORT_WITH_RC4_40_MD5, - cipher_TLS_PSK_WITH_NULL_SHA, - cipher_TLS_DHE_PSK_WITH_NULL_SHA, - cipher_TLS_RSA_PSK_WITH_NULL_SHA, - cipher_TLS_RSA_WITH_AES_128_CBC_SHA, - cipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA, - cipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA, - cipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA, - cipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA, - cipher_TLS_DH_anon_WITH_AES_128_CBC_SHA, - cipher_TLS_RSA_WITH_AES_256_CBC_SHA, - cipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA, - cipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA, - cipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA, - cipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA, - cipher_TLS_DH_anon_WITH_AES_256_CBC_SHA, - cipher_TLS_RSA_WITH_NULL_SHA256, - cipher_TLS_RSA_WITH_AES_128_CBC_SHA256, - cipher_TLS_RSA_WITH_AES_256_CBC_SHA256, - cipher_TLS_DH_DSS_WITH_AES_128_CBC_SHA256, - cipher_TLS_DH_RSA_WITH_AES_128_CBC_SHA256, - cipher_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, - cipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA, - cipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA, - cipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA, - cipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, - cipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, - cipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA, - cipher_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, - cipher_TLS_DH_DSS_WITH_AES_256_CBC_SHA256, - cipher_TLS_DH_RSA_WITH_AES_256_CBC_SHA256, - cipher_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, - cipher_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, - cipher_TLS_DH_anon_WITH_AES_128_CBC_SHA256, - cipher_TLS_DH_anon_WITH_AES_256_CBC_SHA256, - cipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA, - cipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA, - cipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA, - cipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, - cipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, - cipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA, - cipher_TLS_PSK_WITH_RC4_128_SHA, - cipher_TLS_PSK_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_PSK_WITH_AES_128_CBC_SHA, - cipher_TLS_PSK_WITH_AES_256_CBC_SHA, - cipher_TLS_DHE_PSK_WITH_RC4_128_SHA, - cipher_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA, - cipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA, - cipher_TLS_RSA_PSK_WITH_RC4_128_SHA, - cipher_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA, - cipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA, - cipher_TLS_RSA_WITH_SEED_CBC_SHA, - cipher_TLS_DH_DSS_WITH_SEED_CBC_SHA, - cipher_TLS_DH_RSA_WITH_SEED_CBC_SHA, - cipher_TLS_DHE_DSS_WITH_SEED_CBC_SHA, - cipher_TLS_DHE_RSA_WITH_SEED_CBC_SHA, - cipher_TLS_DH_anon_WITH_SEED_CBC_SHA, - cipher_TLS_RSA_WITH_AES_128_GCM_SHA256, - cipher_TLS_RSA_WITH_AES_256_GCM_SHA384, - cipher_TLS_DH_RSA_WITH_AES_128_GCM_SHA256, - cipher_TLS_DH_RSA_WITH_AES_256_GCM_SHA384, - cipher_TLS_DH_DSS_WITH_AES_128_GCM_SHA256, - cipher_TLS_DH_DSS_WITH_AES_256_GCM_SHA384, - cipher_TLS_DH_anon_WITH_AES_128_GCM_SHA256, - cipher_TLS_DH_anon_WITH_AES_256_GCM_SHA384, - cipher_TLS_PSK_WITH_AES_128_GCM_SHA256, - cipher_TLS_PSK_WITH_AES_256_GCM_SHA384, - cipher_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, - cipher_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, - cipher_TLS_PSK_WITH_AES_128_CBC_SHA256, - cipher_TLS_PSK_WITH_AES_256_CBC_SHA384, - cipher_TLS_PSK_WITH_NULL_SHA256, - cipher_TLS_PSK_WITH_NULL_SHA384, - cipher_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, - cipher_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, - cipher_TLS_DHE_PSK_WITH_NULL_SHA256, - cipher_TLS_DHE_PSK_WITH_NULL_SHA384, - cipher_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, - cipher_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, - cipher_TLS_RSA_PSK_WITH_NULL_SHA256, - cipher_TLS_RSA_PSK_WITH_NULL_SHA384, - cipher_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256, - cipher_TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256, - cipher_TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256, - cipher_TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256, - cipher_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, - cipher_TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256, - cipher_TLS_EMPTY_RENEGOTIATION_INFO_SCSV, - cipher_TLS_ECDH_ECDSA_WITH_NULL_SHA, - cipher_TLS_ECDH_ECDSA_WITH_RC4_128_SHA, - cipher_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, - cipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, - cipher_TLS_ECDHE_ECDSA_WITH_NULL_SHA, - cipher_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, - cipher_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, - cipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, - cipher_TLS_ECDH_RSA_WITH_NULL_SHA, - cipher_TLS_ECDH_RSA_WITH_RC4_128_SHA, - cipher_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, - cipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, - cipher_TLS_ECDHE_RSA_WITH_NULL_SHA, - cipher_TLS_ECDHE_RSA_WITH_RC4_128_SHA, - cipher_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, - cipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, - cipher_TLS_ECDH_anon_WITH_NULL_SHA, - cipher_TLS_ECDH_anon_WITH_RC4_128_SHA, - cipher_TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_ECDH_anon_WITH_AES_128_CBC_SHA, - cipher_TLS_ECDH_anon_WITH_AES_256_CBC_SHA, - cipher_TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_SRP_SHA_WITH_AES_128_CBC_SHA, - cipher_TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA, - cipher_TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA, - cipher_TLS_SRP_SHA_WITH_AES_256_CBC_SHA, - cipher_TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA, - cipher_TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA, - cipher_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, - cipher_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, - cipher_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, - cipher_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, - cipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, - cipher_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, - cipher_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, - cipher_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, - cipher_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, - cipher_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, - cipher_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, - cipher_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, - cipher_TLS_ECDHE_PSK_WITH_RC4_128_SHA, - cipher_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, - cipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, - cipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, - cipher_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, - cipher_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, - cipher_TLS_ECDHE_PSK_WITH_NULL_SHA, - cipher_TLS_ECDHE_PSK_WITH_NULL_SHA256, - cipher_TLS_ECDHE_PSK_WITH_NULL_SHA384, - cipher_TLS_RSA_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_RSA_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_DH_anon_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_DH_anon_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_RSA_WITH_ARIA_128_GCM_SHA256, - cipher_TLS_RSA_WITH_ARIA_256_GCM_SHA384, - cipher_TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256, - cipher_TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384, - cipher_TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256, - cipher_TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384, - cipher_TLS_DH_anon_WITH_ARIA_128_GCM_SHA256, - cipher_TLS_DH_anon_WITH_ARIA_256_GCM_SHA384, - cipher_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256, - cipher_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384, - cipher_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256, - cipher_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384, - cipher_TLS_PSK_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_PSK_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_PSK_WITH_ARIA_128_GCM_SHA256, - cipher_TLS_PSK_WITH_ARIA_256_GCM_SHA384, - cipher_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256, - cipher_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384, - cipher_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256, - cipher_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384, - cipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, - cipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, - cipher_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384, - cipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384, - cipher_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256, - cipher_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384, - cipher_TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256, - cipher_TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384, - cipher_TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256, - cipher_TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384, - cipher_TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256, - cipher_TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384, - cipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, - cipher_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, - cipher_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256, - cipher_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384, - cipher_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, - cipher_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, - cipher_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, - cipher_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, - cipher_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, - cipher_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, - cipher_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, - cipher_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, - cipher_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, - cipher_TLS_RSA_WITH_AES_128_CCM, - cipher_TLS_RSA_WITH_AES_256_CCM, - cipher_TLS_RSA_WITH_AES_128_CCM_8, - cipher_TLS_RSA_WITH_AES_256_CCM_8, - cipher_TLS_PSK_WITH_AES_128_CCM, - cipher_TLS_PSK_WITH_AES_256_CCM, - cipher_TLS_PSK_WITH_AES_128_CCM_8, - cipher_TLS_PSK_WITH_AES_256_CCM_8, -} diff --git a/vendor/golang.org/x/net/http2/databuffer_test.go b/vendor/golang.org/x/net/http2/databuffer_test.go deleted file mode 100644 index 028e12e5..00000000 --- a/vendor/golang.org/x/net/http2/databuffer_test.go +++ /dev/null @@ -1,157 +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. - -// +build go1.7 - -package http2 - -import ( - "bytes" - "fmt" - "reflect" - "testing" -) - -func fmtDataChunk(chunk []byte) string { - out := "" - var last byte - var count int - for _, c := range chunk { - if c != last { - if count > 0 { - out += fmt.Sprintf(" x %d ", count) - count = 0 - } - out += string([]byte{c}) - last = c - } - count++ - } - if count > 0 { - out += fmt.Sprintf(" x %d", count) - } - return out -} - -func fmtDataChunks(chunks [][]byte) string { - var out string - for _, chunk := range chunks { - out += fmt.Sprintf("{%q}", fmtDataChunk(chunk)) - } - return out -} - -func testDataBuffer(t *testing.T, wantBytes []byte, setup func(t *testing.T) *dataBuffer) { - // Run setup, then read the remaining bytes from the dataBuffer and check - // that they match wantBytes. We use different read sizes to check corner - // cases in Read. - for _, readSize := range []int{1, 2, 1 * 1024, 32 * 1024} { - t.Run(fmt.Sprintf("ReadSize=%d", readSize), func(t *testing.T) { - b := setup(t) - buf := make([]byte, readSize) - var gotRead bytes.Buffer - for { - n, err := b.Read(buf) - gotRead.Write(buf[:n]) - if err == errReadEmpty { - break - } - if err != nil { - t.Fatalf("error after %v bytes: %v", gotRead.Len(), err) - } - } - if got, want := gotRead.Bytes(), wantBytes; !bytes.Equal(got, want) { - t.Errorf("FinalRead=%q, want %q", fmtDataChunk(got), fmtDataChunk(want)) - } - }) - } -} - -func TestDataBufferAllocation(t *testing.T) { - writes := [][]byte{ - bytes.Repeat([]byte("a"), 1*1024-1), - []byte("a"), - bytes.Repeat([]byte("b"), 4*1024-1), - []byte("b"), - bytes.Repeat([]byte("c"), 8*1024-1), - []byte("c"), - bytes.Repeat([]byte("d"), 16*1024-1), - []byte("d"), - bytes.Repeat([]byte("e"), 32*1024), - } - var wantRead bytes.Buffer - for _, p := range writes { - wantRead.Write(p) - } - - testDataBuffer(t, wantRead.Bytes(), func(t *testing.T) *dataBuffer { - b := &dataBuffer{} - for _, p := range writes { - if n, err := b.Write(p); n != len(p) || err != nil { - t.Fatalf("Write(%q x %d)=%v,%v want %v,nil", p[:1], len(p), n, err, len(p)) - } - } - want := [][]byte{ - bytes.Repeat([]byte("a"), 1*1024), - bytes.Repeat([]byte("b"), 4*1024), - bytes.Repeat([]byte("c"), 8*1024), - bytes.Repeat([]byte("d"), 16*1024), - bytes.Repeat([]byte("e"), 16*1024), - bytes.Repeat([]byte("e"), 16*1024), - } - if !reflect.DeepEqual(b.chunks, want) { - t.Errorf("dataBuffer.chunks\ngot: %s\nwant: %s", fmtDataChunks(b.chunks), fmtDataChunks(want)) - } - return b - }) -} - -func TestDataBufferAllocationWithExpected(t *testing.T) { - writes := [][]byte{ - bytes.Repeat([]byte("a"), 1*1024), // allocates 16KB - bytes.Repeat([]byte("b"), 14*1024), - bytes.Repeat([]byte("c"), 15*1024), // allocates 16KB more - bytes.Repeat([]byte("d"), 2*1024), - bytes.Repeat([]byte("e"), 1*1024), // overflows 32KB expectation, allocates just 1KB - } - var wantRead bytes.Buffer - for _, p := range writes { - wantRead.Write(p) - } - - testDataBuffer(t, wantRead.Bytes(), func(t *testing.T) *dataBuffer { - b := &dataBuffer{expected: 32 * 1024} - for _, p := range writes { - if n, err := b.Write(p); n != len(p) || err != nil { - t.Fatalf("Write(%q x %d)=%v,%v want %v,nil", p[:1], len(p), n, err, len(p)) - } - } - want := [][]byte{ - append(bytes.Repeat([]byte("a"), 1*1024), append(bytes.Repeat([]byte("b"), 14*1024), bytes.Repeat([]byte("c"), 1*1024)...)...), - append(bytes.Repeat([]byte("c"), 14*1024), bytes.Repeat([]byte("d"), 2*1024)...), - bytes.Repeat([]byte("e"), 1*1024), - } - if !reflect.DeepEqual(b.chunks, want) { - t.Errorf("dataBuffer.chunks\ngot: %s\nwant: %s", fmtDataChunks(b.chunks), fmtDataChunks(want)) - } - return b - }) -} - -func TestDataBufferWriteAfterPartialRead(t *testing.T) { - testDataBuffer(t, []byte("cdxyz"), func(t *testing.T) *dataBuffer { - b := &dataBuffer{} - if n, err := b.Write([]byte("abcd")); n != 4 || err != nil { - t.Fatalf("Write(\"abcd\")=%v,%v want 4,nil", n, err) - } - p := make([]byte, 2) - if n, err := b.Read(p); n != 2 || err != nil || !bytes.Equal(p, []byte("ab")) { - t.Fatalf("Read()=%q,%v,%v want \"ab\",2,nil", p, n, err) - } - if n, err := b.Write([]byte("xyz")); n != 3 || err != nil { - t.Fatalf("Write(\"xyz\")=%v,%v want 3,nil", n, err) - } - return b - }) -} diff --git a/vendor/golang.org/x/net/http2/errors_test.go b/vendor/golang.org/x/net/http2/errors_test.go deleted file mode 100644 index da5c58c3..00000000 --- a/vendor/golang.org/x/net/http2/errors_test.go +++ /dev/null @@ -1,24 +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 http2 - -import "testing" - -func TestErrCodeString(t *testing.T) { - tests := []struct { - err ErrCode - want string - }{ - {ErrCodeProtocol, "PROTOCOL_ERROR"}, - {0xd, "HTTP_1_1_REQUIRED"}, - {0xf, "unknown error code 0xf"}, - } - for i, tt := range tests { - got := tt.err.String() - if got != tt.want { - t.Errorf("%d. Error = %q; want %q", i, got, tt.want) - } - } -} diff --git a/vendor/golang.org/x/net/http2/flow_test.go b/vendor/golang.org/x/net/http2/flow_test.go deleted file mode 100644 index 859adf5d..00000000 --- a/vendor/golang.org/x/net/http2/flow_test.go +++ /dev/null @@ -1,53 +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 http2 - -import "testing" - -func TestFlow(t *testing.T) { - var st flow - var conn flow - st.add(3) - conn.add(2) - - if got, want := st.available(), int32(3); got != want { - t.Errorf("available = %d; want %d", got, want) - } - st.setConnFlow(&conn) - if got, want := st.available(), int32(2); got != want { - t.Errorf("after parent setup, available = %d; want %d", got, want) - } - - st.take(2) - if got, want := conn.available(), int32(0); got != want { - t.Errorf("after taking 2, conn = %d; want %d", got, want) - } - if got, want := st.available(), int32(0); got != want { - t.Errorf("after taking 2, stream = %d; want %d", got, want) - } -} - -func TestFlowAdd(t *testing.T) { - var f flow - if !f.add(1) { - t.Fatal("failed to add 1") - } - if !f.add(-1) { - t.Fatal("failed to add -1") - } - if got, want := f.available(), int32(0); got != want { - t.Fatalf("size = %d; want %d", got, want) - } - if !f.add(1<<31 - 1) { - t.Fatal("failed to add 2^31-1") - } - if got, want := f.available(), int32(1<<31-1); got != want { - t.Fatalf("size = %d; want %d", got, want) - } - if f.add(1) { - t.Fatal("adding 1 to max shouldn't be allowed") - } - -} diff --git a/vendor/golang.org/x/net/http2/frame_test.go b/vendor/golang.org/x/net/http2/frame_test.go deleted file mode 100644 index 37266bc5..00000000 --- a/vendor/golang.org/x/net/http2/frame_test.go +++ /dev/null @@ -1,1191 +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 http2 - -import ( - "bytes" - "fmt" - "io" - "reflect" - "strings" - "testing" - "unsafe" - - "golang.org/x/net/http2/hpack" -) - -func testFramer() (*Framer, *bytes.Buffer) { - buf := new(bytes.Buffer) - return NewFramer(buf, buf), buf -} - -func TestFrameSizes(t *testing.T) { - // Catch people rearranging the FrameHeader fields. - if got, want := int(unsafe.Sizeof(FrameHeader{})), 12; got != want { - t.Errorf("FrameHeader size = %d; want %d", got, want) - } -} - -func TestFrameTypeString(t *testing.T) { - tests := []struct { - ft FrameType - want string - }{ - {FrameData, "DATA"}, - {FramePing, "PING"}, - {FrameGoAway, "GOAWAY"}, - {0xf, "UNKNOWN_FRAME_TYPE_15"}, - } - - for i, tt := range tests { - got := tt.ft.String() - if got != tt.want { - t.Errorf("%d. String(FrameType %d) = %q; want %q", i, int(tt.ft), got, tt.want) - } - } -} - -func TestWriteRST(t *testing.T) { - fr, buf := testFramer() - var streamID uint32 = 1<<24 + 2<<16 + 3<<8 + 4 - var errCode uint32 = 7<<24 + 6<<16 + 5<<8 + 4 - fr.WriteRSTStream(streamID, ErrCode(errCode)) - const wantEnc = "\x00\x00\x04\x03\x00\x01\x02\x03\x04\x07\x06\x05\x04" - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } - f, err := fr.ReadFrame() - if err != nil { - t.Fatal(err) - } - want := &RSTStreamFrame{ - FrameHeader: FrameHeader{ - valid: true, - Type: 0x3, - Flags: 0x0, - Length: 0x4, - StreamID: 0x1020304, - }, - ErrCode: 0x7060504, - } - if !reflect.DeepEqual(f, want) { - t.Errorf("parsed back %#v; want %#v", f, want) - } -} - -func TestWriteData(t *testing.T) { - fr, buf := testFramer() - var streamID uint32 = 1<<24 + 2<<16 + 3<<8 + 4 - data := []byte("ABC") - fr.WriteData(streamID, true, data) - const wantEnc = "\x00\x00\x03\x00\x01\x01\x02\x03\x04ABC" - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } - f, err := fr.ReadFrame() - if err != nil { - t.Fatal(err) - } - df, ok := f.(*DataFrame) - if !ok { - t.Fatalf("got %T; want *DataFrame", f) - } - if !bytes.Equal(df.Data(), data) { - t.Errorf("got %q; want %q", df.Data(), data) - } - if f.Header().Flags&1 == 0 { - t.Errorf("didn't see END_STREAM flag") - } -} - -func TestWriteDataPadded(t *testing.T) { - tests := [...]struct { - streamID uint32 - endStream bool - data []byte - pad []byte - wantHeader FrameHeader - }{ - // Unpadded: - 0: { - streamID: 1, - endStream: true, - data: []byte("foo"), - pad: nil, - wantHeader: FrameHeader{ - Type: FrameData, - Flags: FlagDataEndStream, - Length: 3, - StreamID: 1, - }, - }, - - // Padded bit set, but no padding: - 1: { - streamID: 1, - endStream: true, - data: []byte("foo"), - pad: []byte{}, - wantHeader: FrameHeader{ - Type: FrameData, - Flags: FlagDataEndStream | FlagDataPadded, - Length: 4, - StreamID: 1, - }, - }, - - // Padded bit set, with padding: - 2: { - streamID: 1, - endStream: false, - data: []byte("foo"), - pad: []byte{0, 0, 0}, - wantHeader: FrameHeader{ - Type: FrameData, - Flags: FlagDataPadded, - Length: 7, - StreamID: 1, - }, - }, - } - for i, tt := range tests { - fr, _ := testFramer() - fr.WriteDataPadded(tt.streamID, tt.endStream, tt.data, tt.pad) - f, err := fr.ReadFrame() - if err != nil { - t.Errorf("%d. ReadFrame: %v", i, err) - continue - } - got := f.Header() - tt.wantHeader.valid = true - if got != tt.wantHeader { - t.Errorf("%d. read %+v; want %+v", i, got, tt.wantHeader) - continue - } - df := f.(*DataFrame) - if !bytes.Equal(df.Data(), tt.data) { - t.Errorf("%d. got %q; want %q", i, df.Data(), tt.data) - } - } -} - -func TestWriteHeaders(t *testing.T) { - tests := []struct { - name string - p HeadersFrameParam - wantEnc string - wantFrame *HeadersFrame - }{ - { - "basic", - HeadersFrameParam{ - StreamID: 42, - BlockFragment: []byte("abc"), - Priority: PriorityParam{}, - }, - "\x00\x00\x03\x01\x00\x00\x00\x00*abc", - &HeadersFrame{ - FrameHeader: FrameHeader{ - valid: true, - StreamID: 42, - Type: FrameHeaders, - Length: uint32(len("abc")), - }, - Priority: PriorityParam{}, - headerFragBuf: []byte("abc"), - }, - }, - { - "basic + end flags", - HeadersFrameParam{ - StreamID: 42, - BlockFragment: []byte("abc"), - EndStream: true, - EndHeaders: true, - Priority: PriorityParam{}, - }, - "\x00\x00\x03\x01\x05\x00\x00\x00*abc", - &HeadersFrame{ - FrameHeader: FrameHeader{ - valid: true, - StreamID: 42, - Type: FrameHeaders, - Flags: FlagHeadersEndStream | FlagHeadersEndHeaders, - Length: uint32(len("abc")), - }, - Priority: PriorityParam{}, - headerFragBuf: []byte("abc"), - }, - }, - { - "with padding", - HeadersFrameParam{ - StreamID: 42, - BlockFragment: []byte("abc"), - EndStream: true, - EndHeaders: true, - PadLength: 5, - Priority: PriorityParam{}, - }, - "\x00\x00\t\x01\r\x00\x00\x00*\x05abc\x00\x00\x00\x00\x00", - &HeadersFrame{ - FrameHeader: FrameHeader{ - valid: true, - StreamID: 42, - Type: FrameHeaders, - Flags: FlagHeadersEndStream | FlagHeadersEndHeaders | FlagHeadersPadded, - Length: uint32(1 + len("abc") + 5), // pad length + contents + padding - }, - Priority: PriorityParam{}, - headerFragBuf: []byte("abc"), - }, - }, - { - "with priority", - HeadersFrameParam{ - StreamID: 42, - BlockFragment: []byte("abc"), - EndStream: true, - EndHeaders: true, - PadLength: 2, - Priority: PriorityParam{ - StreamDep: 15, - Exclusive: true, - Weight: 127, - }, - }, - "\x00\x00\v\x01-\x00\x00\x00*\x02\x80\x00\x00\x0f\u007fabc\x00\x00", - &HeadersFrame{ - FrameHeader: FrameHeader{ - valid: true, - StreamID: 42, - Type: FrameHeaders, - Flags: FlagHeadersEndStream | FlagHeadersEndHeaders | FlagHeadersPadded | FlagHeadersPriority, - Length: uint32(1 + 5 + len("abc") + 2), // pad length + priority + contents + padding - }, - Priority: PriorityParam{ - StreamDep: 15, - Exclusive: true, - Weight: 127, - }, - headerFragBuf: []byte("abc"), - }, - }, - { - "with priority stream dep zero", // golang.org/issue/15444 - HeadersFrameParam{ - StreamID: 42, - BlockFragment: []byte("abc"), - EndStream: true, - EndHeaders: true, - PadLength: 2, - Priority: PriorityParam{ - StreamDep: 0, - Exclusive: true, - Weight: 127, - }, - }, - "\x00\x00\v\x01-\x00\x00\x00*\x02\x80\x00\x00\x00\u007fabc\x00\x00", - &HeadersFrame{ - FrameHeader: FrameHeader{ - valid: true, - StreamID: 42, - Type: FrameHeaders, - Flags: FlagHeadersEndStream | FlagHeadersEndHeaders | FlagHeadersPadded | FlagHeadersPriority, - Length: uint32(1 + 5 + len("abc") + 2), // pad length + priority + contents + padding - }, - Priority: PriorityParam{ - StreamDep: 0, - Exclusive: true, - Weight: 127, - }, - headerFragBuf: []byte("abc"), - }, - }, - } - for _, tt := range tests { - fr, buf := testFramer() - if err := fr.WriteHeaders(tt.p); err != nil { - t.Errorf("test %q: %v", tt.name, err) - continue - } - if buf.String() != tt.wantEnc { - t.Errorf("test %q: encoded %q; want %q", tt.name, buf.Bytes(), tt.wantEnc) - } - f, err := fr.ReadFrame() - if err != nil { - t.Errorf("test %q: failed to read the frame back: %v", tt.name, err) - continue - } - if !reflect.DeepEqual(f, tt.wantFrame) { - t.Errorf("test %q: mismatch.\n got: %#v\nwant: %#v\n", tt.name, f, tt.wantFrame) - } - } -} - -func TestWriteInvalidStreamDep(t *testing.T) { - fr, _ := testFramer() - err := fr.WriteHeaders(HeadersFrameParam{ - StreamID: 42, - Priority: PriorityParam{ - StreamDep: 1 << 31, - }, - }) - if err != errDepStreamID { - t.Errorf("header error = %v; want %q", err, errDepStreamID) - } - - err = fr.WritePriority(2, PriorityParam{StreamDep: 1 << 31}) - if err != errDepStreamID { - t.Errorf("priority error = %v; want %q", err, errDepStreamID) - } -} - -func TestWriteContinuation(t *testing.T) { - const streamID = 42 - tests := []struct { - name string - end bool - frag []byte - - wantFrame *ContinuationFrame - }{ - { - "not end", - false, - []byte("abc"), - &ContinuationFrame{ - FrameHeader: FrameHeader{ - valid: true, - StreamID: streamID, - Type: FrameContinuation, - Length: uint32(len("abc")), - }, - headerFragBuf: []byte("abc"), - }, - }, - { - "end", - true, - []byte("def"), - &ContinuationFrame{ - FrameHeader: FrameHeader{ - valid: true, - StreamID: streamID, - Type: FrameContinuation, - Flags: FlagContinuationEndHeaders, - Length: uint32(len("def")), - }, - headerFragBuf: []byte("def"), - }, - }, - } - for _, tt := range tests { - fr, _ := testFramer() - if err := fr.WriteContinuation(streamID, tt.end, tt.frag); err != nil { - t.Errorf("test %q: %v", tt.name, err) - continue - } - fr.AllowIllegalReads = true - f, err := fr.ReadFrame() - if err != nil { - t.Errorf("test %q: failed to read the frame back: %v", tt.name, err) - continue - } - if !reflect.DeepEqual(f, tt.wantFrame) { - t.Errorf("test %q: mismatch.\n got: %#v\nwant: %#v\n", tt.name, f, tt.wantFrame) - } - } -} - -func TestWritePriority(t *testing.T) { - const streamID = 42 - tests := []struct { - name string - priority PriorityParam - wantFrame *PriorityFrame - }{ - { - "not exclusive", - PriorityParam{ - StreamDep: 2, - Exclusive: false, - Weight: 127, - }, - &PriorityFrame{ - FrameHeader{ - valid: true, - StreamID: streamID, - Type: FramePriority, - Length: 5, - }, - PriorityParam{ - StreamDep: 2, - Exclusive: false, - Weight: 127, - }, - }, - }, - - { - "exclusive", - PriorityParam{ - StreamDep: 3, - Exclusive: true, - Weight: 77, - }, - &PriorityFrame{ - FrameHeader{ - valid: true, - StreamID: streamID, - Type: FramePriority, - Length: 5, - }, - PriorityParam{ - StreamDep: 3, - Exclusive: true, - Weight: 77, - }, - }, - }, - } - for _, tt := range tests { - fr, _ := testFramer() - if err := fr.WritePriority(streamID, tt.priority); err != nil { - t.Errorf("test %q: %v", tt.name, err) - continue - } - f, err := fr.ReadFrame() - if err != nil { - t.Errorf("test %q: failed to read the frame back: %v", tt.name, err) - continue - } - if !reflect.DeepEqual(f, tt.wantFrame) { - t.Errorf("test %q: mismatch.\n got: %#v\nwant: %#v\n", tt.name, f, tt.wantFrame) - } - } -} - -func TestWriteSettings(t *testing.T) { - fr, buf := testFramer() - settings := []Setting{{1, 2}, {3, 4}} - fr.WriteSettings(settings...) - const wantEnc = "\x00\x00\f\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x03\x00\x00\x00\x04" - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } - f, err := fr.ReadFrame() - if err != nil { - t.Fatal(err) - } - sf, ok := f.(*SettingsFrame) - if !ok { - t.Fatalf("Got a %T; want a SettingsFrame", f) - } - var got []Setting - sf.ForeachSetting(func(s Setting) error { - got = append(got, s) - valBack, ok := sf.Value(s.ID) - if !ok || valBack != s.Val { - t.Errorf("Value(%d) = %v, %v; want %v, true", s.ID, valBack, ok, s.Val) - } - return nil - }) - if !reflect.DeepEqual(settings, got) { - t.Errorf("Read settings %+v != written settings %+v", got, settings) - } -} - -func TestWriteSettingsAck(t *testing.T) { - fr, buf := testFramer() - fr.WriteSettingsAck() - const wantEnc = "\x00\x00\x00\x04\x01\x00\x00\x00\x00" - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } -} - -func TestWriteWindowUpdate(t *testing.T) { - fr, buf := testFramer() - const streamID = 1<<24 + 2<<16 + 3<<8 + 4 - const incr = 7<<24 + 6<<16 + 5<<8 + 4 - if err := fr.WriteWindowUpdate(streamID, incr); err != nil { - t.Fatal(err) - } - const wantEnc = "\x00\x00\x04\x08\x00\x01\x02\x03\x04\x07\x06\x05\x04" - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } - f, err := fr.ReadFrame() - if err != nil { - t.Fatal(err) - } - want := &WindowUpdateFrame{ - FrameHeader: FrameHeader{ - valid: true, - Type: 0x8, - Flags: 0x0, - Length: 0x4, - StreamID: 0x1020304, - }, - Increment: 0x7060504, - } - if !reflect.DeepEqual(f, want) { - t.Errorf("parsed back %#v; want %#v", f, want) - } -} - -func TestWritePing(t *testing.T) { testWritePing(t, false) } -func TestWritePingAck(t *testing.T) { testWritePing(t, true) } - -func testWritePing(t *testing.T, ack bool) { - fr, buf := testFramer() - if err := fr.WritePing(ack, [8]byte{1, 2, 3, 4, 5, 6, 7, 8}); err != nil { - t.Fatal(err) - } - var wantFlags Flags - if ack { - wantFlags = FlagPingAck - } - var wantEnc = "\x00\x00\x08\x06" + string(wantFlags) + "\x00\x00\x00\x00" + "\x01\x02\x03\x04\x05\x06\x07\x08" - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } - - f, err := fr.ReadFrame() - if err != nil { - t.Fatal(err) - } - want := &PingFrame{ - FrameHeader: FrameHeader{ - valid: true, - Type: 0x6, - Flags: wantFlags, - Length: 0x8, - StreamID: 0, - }, - Data: [8]byte{1, 2, 3, 4, 5, 6, 7, 8}, - } - if !reflect.DeepEqual(f, want) { - t.Errorf("parsed back %#v; want %#v", f, want) - } -} - -func TestReadFrameHeader(t *testing.T) { - tests := []struct { - in string - want FrameHeader - }{ - {in: "\x00\x00\x00" + "\x00" + "\x00" + "\x00\x00\x00\x00", want: FrameHeader{}}, - {in: "\x01\x02\x03" + "\x04" + "\x05" + "\x06\x07\x08\x09", want: FrameHeader{ - Length: 66051, Type: 4, Flags: 5, StreamID: 101124105, - }}, - // Ignore high bit: - {in: "\xff\xff\xff" + "\xff" + "\xff" + "\xff\xff\xff\xff", want: FrameHeader{ - Length: 16777215, Type: 255, Flags: 255, StreamID: 2147483647}}, - {in: "\xff\xff\xff" + "\xff" + "\xff" + "\x7f\xff\xff\xff", want: FrameHeader{ - Length: 16777215, Type: 255, Flags: 255, StreamID: 2147483647}}, - } - for i, tt := range tests { - got, err := readFrameHeader(make([]byte, 9), strings.NewReader(tt.in)) - if err != nil { - t.Errorf("%d. readFrameHeader(%q) = %v", i, tt.in, err) - continue - } - tt.want.valid = true - if got != tt.want { - t.Errorf("%d. readFrameHeader(%q) = %+v; want %+v", i, tt.in, got, tt.want) - } - } -} - -func TestReadWriteFrameHeader(t *testing.T) { - tests := []struct { - len uint32 - typ FrameType - flags Flags - streamID uint32 - }{ - {len: 0, typ: 255, flags: 1, streamID: 0}, - {len: 0, typ: 255, flags: 1, streamID: 1}, - {len: 0, typ: 255, flags: 1, streamID: 255}, - {len: 0, typ: 255, flags: 1, streamID: 256}, - {len: 0, typ: 255, flags: 1, streamID: 65535}, - {len: 0, typ: 255, flags: 1, streamID: 65536}, - - {len: 0, typ: 1, flags: 255, streamID: 1}, - {len: 255, typ: 1, flags: 255, streamID: 1}, - {len: 256, typ: 1, flags: 255, streamID: 1}, - {len: 65535, typ: 1, flags: 255, streamID: 1}, - {len: 65536, typ: 1, flags: 255, streamID: 1}, - {len: 16777215, typ: 1, flags: 255, streamID: 1}, - } - for _, tt := range tests { - fr, buf := testFramer() - fr.startWrite(tt.typ, tt.flags, tt.streamID) - fr.writeBytes(make([]byte, tt.len)) - fr.endWrite() - fh, err := ReadFrameHeader(buf) - if err != nil { - t.Errorf("ReadFrameHeader(%+v) = %v", tt, err) - continue - } - if fh.Type != tt.typ || fh.Flags != tt.flags || fh.Length != tt.len || fh.StreamID != tt.streamID { - t.Errorf("ReadFrameHeader(%+v) = %+v; mismatch", tt, fh) - } - } - -} - -func TestWriteTooLargeFrame(t *testing.T) { - fr, _ := testFramer() - fr.startWrite(0, 1, 1) - fr.writeBytes(make([]byte, 1<<24)) - err := fr.endWrite() - if err != ErrFrameTooLarge { - t.Errorf("endWrite = %v; want errFrameTooLarge", err) - } -} - -func TestWriteGoAway(t *testing.T) { - const debug = "foo" - fr, buf := testFramer() - if err := fr.WriteGoAway(0x01020304, 0x05060708, []byte(debug)); err != nil { - t.Fatal(err) - } - const wantEnc = "\x00\x00\v\a\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08" + debug - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } - f, err := fr.ReadFrame() - if err != nil { - t.Fatal(err) - } - want := &GoAwayFrame{ - FrameHeader: FrameHeader{ - valid: true, - Type: 0x7, - Flags: 0, - Length: uint32(4 + 4 + len(debug)), - StreamID: 0, - }, - LastStreamID: 0x01020304, - ErrCode: 0x05060708, - debugData: []byte(debug), - } - if !reflect.DeepEqual(f, want) { - t.Fatalf("parsed back:\n%#v\nwant:\n%#v", f, want) - } - if got := string(f.(*GoAwayFrame).DebugData()); got != debug { - t.Errorf("debug data = %q; want %q", got, debug) - } -} - -func TestWritePushPromise(t *testing.T) { - pp := PushPromiseParam{ - StreamID: 42, - PromiseID: 42, - BlockFragment: []byte("abc"), - } - fr, buf := testFramer() - if err := fr.WritePushPromise(pp); err != nil { - t.Fatal(err) - } - const wantEnc = "\x00\x00\x07\x05\x00\x00\x00\x00*\x00\x00\x00*abc" - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } - f, err := fr.ReadFrame() - if err != nil { - t.Fatal(err) - } - _, ok := f.(*PushPromiseFrame) - if !ok { - t.Fatalf("got %T; want *PushPromiseFrame", f) - } - want := &PushPromiseFrame{ - FrameHeader: FrameHeader{ - valid: true, - Type: 0x5, - Flags: 0x0, - Length: 0x7, - StreamID: 42, - }, - PromiseID: 42, - headerFragBuf: []byte("abc"), - } - if !reflect.DeepEqual(f, want) { - t.Fatalf("parsed back:\n%#v\nwant:\n%#v", f, want) - } -} - -// test checkFrameOrder and that HEADERS and CONTINUATION frames can't be intermingled. -func TestReadFrameOrder(t *testing.T) { - head := func(f *Framer, id uint32, end bool) { - f.WriteHeaders(HeadersFrameParam{ - StreamID: id, - BlockFragment: []byte("foo"), // unused, but non-empty - EndHeaders: end, - }) - } - cont := func(f *Framer, id uint32, end bool) { - f.WriteContinuation(id, end, []byte("foo")) - } - - tests := [...]struct { - name string - w func(*Framer) - atLeast int - wantErr string - }{ - 0: { - w: func(f *Framer) { - head(f, 1, true) - }, - }, - 1: { - w: func(f *Framer) { - head(f, 1, true) - head(f, 2, true) - }, - }, - 2: { - wantErr: "got HEADERS for stream 2; expected CONTINUATION following HEADERS for stream 1", - w: func(f *Framer) { - head(f, 1, false) - head(f, 2, true) - }, - }, - 3: { - wantErr: "got DATA for stream 1; expected CONTINUATION following HEADERS for stream 1", - w: func(f *Framer) { - head(f, 1, false) - }, - }, - 4: { - w: func(f *Framer) { - head(f, 1, false) - cont(f, 1, true) - head(f, 2, true) - }, - }, - 5: { - wantErr: "got CONTINUATION for stream 2; expected stream 1", - w: func(f *Framer) { - head(f, 1, false) - cont(f, 2, true) - head(f, 2, true) - }, - }, - 6: { - wantErr: "unexpected CONTINUATION for stream 1", - w: func(f *Framer) { - cont(f, 1, true) - }, - }, - 7: { - wantErr: "unexpected CONTINUATION for stream 1", - w: func(f *Framer) { - cont(f, 1, false) - }, - }, - 8: { - wantErr: "HEADERS frame with stream ID 0", - w: func(f *Framer) { - head(f, 0, true) - }, - }, - 9: { - wantErr: "CONTINUATION frame with stream ID 0", - w: func(f *Framer) { - cont(f, 0, true) - }, - }, - 10: { - wantErr: "unexpected CONTINUATION for stream 1", - atLeast: 5, - w: func(f *Framer) { - head(f, 1, false) - cont(f, 1, false) - cont(f, 1, false) - cont(f, 1, false) - cont(f, 1, true) - cont(f, 1, false) - }, - }, - } - for i, tt := range tests { - buf := new(bytes.Buffer) - f := NewFramer(buf, buf) - f.AllowIllegalWrites = true - tt.w(f) - f.WriteData(1, true, nil) // to test transition away from last step - - var err error - n := 0 - var log bytes.Buffer - for { - var got Frame - got, err = f.ReadFrame() - fmt.Fprintf(&log, " read %v, %v\n", got, err) - if err != nil { - break - } - n++ - } - if err == io.EOF { - err = nil - } - ok := tt.wantErr == "" - if ok && err != nil { - t.Errorf("%d. after %d good frames, ReadFrame = %v; want success\n%s", i, n, err, log.Bytes()) - continue - } - if !ok && err != ConnectionError(ErrCodeProtocol) { - t.Errorf("%d. after %d good frames, ReadFrame = %v; want ConnectionError(ErrCodeProtocol)\n%s", i, n, err, log.Bytes()) - continue - } - if !((f.errDetail == nil && tt.wantErr == "") || (fmt.Sprint(f.errDetail) == tt.wantErr)) { - t.Errorf("%d. framer eror = %q; want %q\n%s", i, f.errDetail, tt.wantErr, log.Bytes()) - } - if n < tt.atLeast { - t.Errorf("%d. framer only read %d frames; want at least %d\n%s", i, n, tt.atLeast, log.Bytes()) - } - } -} - -func TestMetaFrameHeader(t *testing.T) { - write := func(f *Framer, frags ...[]byte) { - for i, frag := range frags { - end := (i == len(frags)-1) - if i == 0 { - f.WriteHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: frag, - EndHeaders: end, - }) - } else { - f.WriteContinuation(1, end, frag) - } - } - } - - want := func(flags Flags, length uint32, pairs ...string) *MetaHeadersFrame { - mh := &MetaHeadersFrame{ - HeadersFrame: &HeadersFrame{ - FrameHeader: FrameHeader{ - Type: FrameHeaders, - Flags: flags, - Length: length, - StreamID: 1, - }, - }, - Fields: []hpack.HeaderField(nil), - } - for len(pairs) > 0 { - mh.Fields = append(mh.Fields, hpack.HeaderField{ - Name: pairs[0], - Value: pairs[1], - }) - pairs = pairs[2:] - } - return mh - } - truncated := func(mh *MetaHeadersFrame) *MetaHeadersFrame { - mh.Truncated = true - return mh - } - - const noFlags Flags = 0 - - oneKBString := strings.Repeat("a", 1<<10) - - tests := [...]struct { - name string - w func(*Framer) - want interface{} // *MetaHeaderFrame or error - wantErrReason string - maxHeaderListSize uint32 - }{ - 0: { - name: "single_headers", - w: func(f *Framer) { - var he hpackEncoder - all := he.encodeHeaderRaw(t, ":method", "GET", ":path", "/") - write(f, all) - }, - want: want(FlagHeadersEndHeaders, 2, ":method", "GET", ":path", "/"), - }, - 1: { - name: "with_continuation", - w: func(f *Framer) { - var he hpackEncoder - all := he.encodeHeaderRaw(t, ":method", "GET", ":path", "/", "foo", "bar") - write(f, all[:1], all[1:]) - }, - want: want(noFlags, 1, ":method", "GET", ":path", "/", "foo", "bar"), - }, - 2: { - name: "with_two_continuation", - w: func(f *Framer) { - var he hpackEncoder - all := he.encodeHeaderRaw(t, ":method", "GET", ":path", "/", "foo", "bar") - write(f, all[:2], all[2:4], all[4:]) - }, - want: want(noFlags, 2, ":method", "GET", ":path", "/", "foo", "bar"), - }, - 3: { - name: "big_string_okay", - w: func(f *Framer) { - var he hpackEncoder - all := he.encodeHeaderRaw(t, ":method", "GET", ":path", "/", "foo", oneKBString) - write(f, all[:2], all[2:]) - }, - want: want(noFlags, 2, ":method", "GET", ":path", "/", "foo", oneKBString), - }, - 4: { - name: "big_string_error", - w: func(f *Framer) { - var he hpackEncoder - all := he.encodeHeaderRaw(t, ":method", "GET", ":path", "/", "foo", oneKBString) - write(f, all[:2], all[2:]) - }, - maxHeaderListSize: (1 << 10) / 2, - want: ConnectionError(ErrCodeCompression), - }, - 5: { - name: "max_header_list_truncated", - w: func(f *Framer) { - var he hpackEncoder - var pairs = []string{":method", "GET", ":path", "/"} - for i := 0; i < 100; i++ { - pairs = append(pairs, "foo", "bar") - } - all := he.encodeHeaderRaw(t, pairs...) - write(f, all[:2], all[2:]) - }, - maxHeaderListSize: (1 << 10) / 2, - want: truncated(want(noFlags, 2, - ":method", "GET", - ":path", "/", - "foo", "bar", - "foo", "bar", - "foo", "bar", - "foo", "bar", - "foo", "bar", - "foo", "bar", - "foo", "bar", - "foo", "bar", - "foo", "bar", - "foo", "bar", - "foo", "bar", // 11 - )), - }, - 6: { - name: "pseudo_order", - w: func(f *Framer) { - write(f, encodeHeaderRaw(t, - ":method", "GET", - "foo", "bar", - ":path", "/", // bogus - )) - }, - want: streamError(1, ErrCodeProtocol), - wantErrReason: "pseudo header field after regular", - }, - 7: { - name: "pseudo_unknown", - w: func(f *Framer) { - write(f, encodeHeaderRaw(t, - ":unknown", "foo", // bogus - "foo", "bar", - )) - }, - want: streamError(1, ErrCodeProtocol), - wantErrReason: "invalid pseudo-header \":unknown\"", - }, - 8: { - name: "pseudo_mix_request_response", - w: func(f *Framer) { - write(f, encodeHeaderRaw(t, - ":method", "GET", - ":status", "100", - )) - }, - want: streamError(1, ErrCodeProtocol), - wantErrReason: "mix of request and response pseudo headers", - }, - 9: { - name: "pseudo_dup", - w: func(f *Framer) { - write(f, encodeHeaderRaw(t, - ":method", "GET", - ":method", "POST", - )) - }, - want: streamError(1, ErrCodeProtocol), - wantErrReason: "duplicate pseudo-header \":method\"", - }, - 10: { - name: "trailer_okay_no_pseudo", - w: func(f *Framer) { write(f, encodeHeaderRaw(t, "foo", "bar")) }, - want: want(FlagHeadersEndHeaders, 8, "foo", "bar"), - }, - 11: { - name: "invalid_field_name", - w: func(f *Framer) { write(f, encodeHeaderRaw(t, "CapitalBad", "x")) }, - want: streamError(1, ErrCodeProtocol), - wantErrReason: "invalid header field name \"CapitalBad\"", - }, - 12: { - name: "invalid_field_value", - w: func(f *Framer) { write(f, encodeHeaderRaw(t, "key", "bad_null\x00")) }, - want: streamError(1, ErrCodeProtocol), - wantErrReason: "invalid header field value \"bad_null\\x00\"", - }, - } - for i, tt := range tests { - buf := new(bytes.Buffer) - f := NewFramer(buf, buf) - f.ReadMetaHeaders = hpack.NewDecoder(initialHeaderTableSize, nil) - f.MaxHeaderListSize = tt.maxHeaderListSize - tt.w(f) - - name := tt.name - if name == "" { - name = fmt.Sprintf("test index %d", i) - } - - var got interface{} - var err error - got, err = f.ReadFrame() - if err != nil { - got = err - - // Ignore the StreamError.Cause field, if it matches the wantErrReason. - // The test table above predates the Cause field. - if se, ok := err.(StreamError); ok && se.Cause != nil && se.Cause.Error() == tt.wantErrReason { - se.Cause = nil - got = se - } - } - if !reflect.DeepEqual(got, tt.want) { - if mhg, ok := got.(*MetaHeadersFrame); ok { - if mhw, ok := tt.want.(*MetaHeadersFrame); ok { - hg := mhg.HeadersFrame - hw := mhw.HeadersFrame - if hg != nil && hw != nil && !reflect.DeepEqual(*hg, *hw) { - t.Errorf("%s: headers differ:\n got: %+v\nwant: %+v\n", name, *hg, *hw) - } - } - } - str := func(v interface{}) string { - if _, ok := v.(error); ok { - return fmt.Sprintf("error %v", v) - } else { - return fmt.Sprintf("value %#v", v) - } - } - t.Errorf("%s:\n got: %v\nwant: %s", name, str(got), str(tt.want)) - } - if tt.wantErrReason != "" && tt.wantErrReason != fmt.Sprint(f.errDetail) { - t.Errorf("%s: got error reason %q; want %q", name, f.errDetail, tt.wantErrReason) - } - } -} - -func TestSetReuseFrames(t *testing.T) { - fr, buf := testFramer() - fr.SetReuseFrames() - - // Check that DataFrames are reused. Note that - // SetReuseFrames only currently implements reuse of DataFrames. - firstDf := readAndVerifyDataFrame("ABC", 3, fr, buf, t) - - for i := 0; i < 10; i++ { - df := readAndVerifyDataFrame("XYZ", 3, fr, buf, t) - if df != firstDf { - t.Errorf("Expected Framer to return references to the same DataFrame. Have %v and %v", &df, &firstDf) - } - } - - for i := 0; i < 10; i++ { - df := readAndVerifyDataFrame("", 0, fr, buf, t) - if df != firstDf { - t.Errorf("Expected Framer to return references to the same DataFrame. Have %v and %v", &df, &firstDf) - } - } - - for i := 0; i < 10; i++ { - df := readAndVerifyDataFrame("HHH", 3, fr, buf, t) - if df != firstDf { - t.Errorf("Expected Framer to return references to the same DataFrame. Have %v and %v", &df, &firstDf) - } - } -} - -func TestSetReuseFramesMoreThanOnce(t *testing.T) { - fr, buf := testFramer() - fr.SetReuseFrames() - - firstDf := readAndVerifyDataFrame("ABC", 3, fr, buf, t) - fr.SetReuseFrames() - - for i := 0; i < 10; i++ { - df := readAndVerifyDataFrame("XYZ", 3, fr, buf, t) - // SetReuseFrames should be idempotent - fr.SetReuseFrames() - if df != firstDf { - t.Errorf("Expected Framer to return references to the same DataFrame. Have %v and %v", &df, &firstDf) - } - } -} - -func TestNoSetReuseFrames(t *testing.T) { - fr, buf := testFramer() - const numNewDataFrames = 10 - dfSoFar := make([]interface{}, numNewDataFrames) - - // Check that DataFrames are not reused if SetReuseFrames wasn't called. - // SetReuseFrames only currently implements reuse of DataFrames. - for i := 0; i < numNewDataFrames; i++ { - df := readAndVerifyDataFrame("XYZ", 3, fr, buf, t) - for _, item := range dfSoFar { - if df == item { - t.Errorf("Expected Framer to return new DataFrames since SetNoReuseFrames not set.") - } - } - dfSoFar[i] = df - } -} - -func readAndVerifyDataFrame(data string, length byte, fr *Framer, buf *bytes.Buffer, t *testing.T) *DataFrame { - var streamID uint32 = 1<<24 + 2<<16 + 3<<8 + 4 - fr.WriteData(streamID, true, []byte(data)) - wantEnc := "\x00\x00" + string(length) + "\x00\x01\x01\x02\x03\x04" + data - if buf.String() != wantEnc { - t.Errorf("encoded as %q; want %q", buf.Bytes(), wantEnc) - } - f, err := fr.ReadFrame() - if err != nil { - t.Fatal(err) - } - df, ok := f.(*DataFrame) - if !ok { - t.Fatalf("got %T; want *DataFrame", f) - } - if !bytes.Equal(df.Data(), []byte(data)) { - t.Errorf("got %q; want %q", df.Data(), []byte(data)) - } - if f.Header().Flags&1 == 0 { - t.Errorf("didn't see END_STREAM flag") - } - return df -} - -func encodeHeaderRaw(t *testing.T, pairs ...string) []byte { - var he hpackEncoder - return he.encodeHeaderRaw(t, pairs...) -} diff --git a/vendor/golang.org/x/net/http2/go18_test.go b/vendor/golang.org/x/net/http2/go18_test.go deleted file mode 100644 index 30e3b038..00000000 --- a/vendor/golang.org/x/net/http2/go18_test.go +++ /dev/null @@ -1,79 +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. - -// +build go1.8 - -package http2 - -import ( - "crypto/tls" - "net/http" - "testing" - "time" -) - -// Tests that http2.Server.IdleTimeout is initialized from -// http.Server.{Idle,Read}Timeout. http.Server.IdleTimeout was -// added in Go 1.8. -func TestConfigureServerIdleTimeout_Go18(t *testing.T) { - const timeout = 5 * time.Second - const notThisOne = 1 * time.Second - - // With a zero http2.Server, verify that it copies IdleTimeout: - { - s1 := &http.Server{ - IdleTimeout: timeout, - ReadTimeout: notThisOne, - } - s2 := &Server{} - if err := ConfigureServer(s1, s2); err != nil { - t.Fatal(err) - } - if s2.IdleTimeout != timeout { - t.Errorf("s2.IdleTimeout = %v; want %v", s2.IdleTimeout, timeout) - } - } - - // And that it falls back to ReadTimeout: - { - s1 := &http.Server{ - ReadTimeout: timeout, - } - s2 := &Server{} - if err := ConfigureServer(s1, s2); err != nil { - t.Fatal(err) - } - if s2.IdleTimeout != timeout { - t.Errorf("s2.IdleTimeout = %v; want %v", s2.IdleTimeout, timeout) - } - } - - // Verify that s1's IdleTimeout doesn't overwrite an existing setting: - { - s1 := &http.Server{ - IdleTimeout: notThisOne, - } - s2 := &Server{ - IdleTimeout: timeout, - } - if err := ConfigureServer(s1, s2); err != nil { - t.Fatal(err) - } - if s2.IdleTimeout != timeout { - t.Errorf("s2.IdleTimeout = %v; want %v", s2.IdleTimeout, timeout) - } - } -} - -func TestCertClone(t *testing.T) { - c := &tls.Config{ - GetClientCertificate: func(*tls.CertificateRequestInfo) (*tls.Certificate, error) { - panic("shouldn't be called") - }, - } - c2 := cloneTLSConfig(c) - if c2.GetClientCertificate == nil { - t.Error("GetClientCertificate is nil") - } -} diff --git a/vendor/golang.org/x/net/http2/go19_test.go b/vendor/golang.org/x/net/http2/go19_test.go deleted file mode 100644 index 22b00066..00000000 --- a/vendor/golang.org/x/net/http2/go19_test.go +++ /dev/null @@ -1,59 +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. - -// +build go1.9 - -package http2 - -import ( - "context" - "net/http" - "reflect" - "testing" - "time" -) - -func TestServerGracefulShutdown(t *testing.T) { - var st *serverTester - handlerDone := make(chan struct{}) - st = newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - defer close(handlerDone) - go st.ts.Config.Shutdown(context.Background()) - - ga := st.wantGoAway() - if ga.ErrCode != ErrCodeNo { - t.Errorf("GOAWAY error = %v; want ErrCodeNo", ga.ErrCode) - } - if ga.LastStreamID != 1 { - t.Errorf("GOAWAY LastStreamID = %v; want 1", ga.LastStreamID) - } - - w.Header().Set("x-foo", "bar") - }) - defer st.Close() - - st.greet() - st.bodylessReq1() - - select { - case <-handlerDone: - case <-time.After(5 * time.Second): - t.Fatalf("server did not shutdown?") - } - hf := st.wantHeaders() - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"x-foo", "bar"}, - {"content-length", "0"}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - - n, err := st.cc.Read([]byte{0}) - if n != 0 || err == nil { - t.Errorf("Read = %v, %v; want 0, non-nil", n, err) - } -} diff --git a/vendor/golang.org/x/net/http2/gotrack_test.go b/vendor/golang.org/x/net/http2/gotrack_test.go deleted file mode 100644 index 06db6123..00000000 --- a/vendor/golang.org/x/net/http2/gotrack_test.go +++ /dev/null @@ -1,33 +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 http2 - -import ( - "fmt" - "strings" - "testing" -) - -func TestGoroutineLock(t *testing.T) { - oldDebug := DebugGoroutines - DebugGoroutines = true - defer func() { DebugGoroutines = oldDebug }() - - g := newGoroutineLock() - g.check() - - sawPanic := make(chan interface{}) - go func() { - defer func() { sawPanic <- recover() }() - g.check() // should panic - }() - e := <-sawPanic - if e == nil { - t.Fatal("did not see panic from check in other goroutine") - } - if !strings.Contains(fmt.Sprint(e), "wrong goroutine") { - t.Errorf("expected on see panic about running on the wrong goroutine; got %v", e) - } -} diff --git a/vendor/golang.org/x/net/http2/h2demo/.gitignore b/vendor/golang.org/x/net/http2/h2demo/.gitignore deleted file mode 100644 index 8a1133fc..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -h2demo -h2demo.linux -client-id.dat -client-secret.dat -token.dat -ca-certificates.crt diff --git a/vendor/golang.org/x/net/http2/h2demo/Dockerfile b/vendor/golang.org/x/net/http2/h2demo/Dockerfile deleted file mode 100644 index 92386733..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/Dockerfile +++ /dev/null @@ -1,11 +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. - -FROM scratch -LABEL maintainer "golang-dev@googlegroups.com" - -COPY ca-certificates.crt /etc/ssl/certs/ -COPY h2demo / -ENTRYPOINT ["/h2demo", "-prod"] - diff --git a/vendor/golang.org/x/net/http2/h2demo/Dockerfile.0 b/vendor/golang.org/x/net/http2/h2demo/Dockerfile.0 deleted file mode 100644 index fd8435d3..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/Dockerfile.0 +++ /dev/null @@ -1,134 +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. - -FROM golang:1.9 -LABEL maintainer "golang-dev@googlegroups.com" - -ENV CGO_ENABLED=0 - -# BEGIN deps (run `make update-deps` to update) - -# Repo cloud.google.com/go at 1d0c2da (2018-01-30) -ENV REV=1d0c2da40456a9b47f5376165f275424acc15c09 -RUN go get -d cloud.google.com/go/compute/metadata `#and 6 other pkgs` &&\ - (cd /go/src/cloud.google.com/go && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo github.com/golang/protobuf at 9255415 (2018-01-25) -ENV REV=925541529c1fa6821df4e44ce2723319eb2be768 -RUN go get -d github.com/golang/protobuf/proto `#and 6 other pkgs` &&\ - (cd /go/src/github.com/golang/protobuf && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo github.com/googleapis/gax-go at 317e000 (2017-09-15) -ENV REV=317e0006254c44a0ac427cc52a0e083ff0b9622f -RUN go get -d github.com/googleapis/gax-go &&\ - (cd /go/src/github.com/googleapis/gax-go && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo go4.org at 034d17a (2017-05-25) -ENV REV=034d17a462f7b2dcd1a4a73553ec5357ff6e6c6e -RUN go get -d go4.org/syncutil/singleflight &&\ - (cd /go/src/go4.org && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo golang.org/x/build at 8aa9ee0 (2018-02-01) -ENV REV=8aa9ee0e557fd49c14113e5ba106e13a5b455460 -RUN go get -d golang.org/x/build/autocertcache &&\ - (cd /go/src/golang.org/x/build && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo golang.org/x/crypto at 1875d0a (2018-01-27) -ENV REV=1875d0a70c90e57f11972aefd42276df65e895b9 -RUN go get -d golang.org/x/crypto/acme `#and 2 other pkgs` &&\ - (cd /go/src/golang.org/x/crypto && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo golang.org/x/oauth2 at 30785a2 (2018-01-04) -ENV REV=30785a2c434e431ef7c507b54617d6a951d5f2b4 -RUN go get -d golang.org/x/oauth2 `#and 5 other pkgs` &&\ - (cd /go/src/golang.org/x/oauth2 && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo golang.org/x/text at e19ae14 (2017-12-27) -ENV REV=e19ae1496984b1c655b8044a65c0300a3c878dd3 -RUN go get -d golang.org/x/text/secure/bidirule `#and 4 other pkgs` &&\ - (cd /go/src/golang.org/x/text && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo google.golang.org/api at 7d0e2d3 (2018-01-30) -ENV REV=7d0e2d350555821bef5a5b8aecf0d12cc1def633 -RUN go get -d google.golang.org/api/gensupport `#and 9 other pkgs` &&\ - (cd /go/src/google.golang.org/api && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo google.golang.org/genproto at 4eb30f4 (2018-01-25) -ENV REV=4eb30f4778eed4c258ba66527a0d4f9ec8a36c45 -RUN go get -d google.golang.org/genproto/googleapis/api/annotations `#and 3 other pkgs` &&\ - (cd /go/src/google.golang.org/genproto && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Repo google.golang.org/grpc at 0bd008f (2018-01-25) -ENV REV=0bd008f5fadb62d228f12b18d016709e8139a7af -RUN go get -d google.golang.org/grpc `#and 23 other pkgs` &&\ - (cd /go/src/google.golang.org/grpc && (git cat-file -t $REV 2>/dev/null || git fetch -q origin $REV) && git reset --hard $REV) - -# Optimization to speed up iterative development, not necessary for correctness: -RUN go install cloud.google.com/go/compute/metadata \ - cloud.google.com/go/iam \ - cloud.google.com/go/internal \ - cloud.google.com/go/internal/optional \ - cloud.google.com/go/internal/version \ - cloud.google.com/go/storage \ - github.com/golang/protobuf/proto \ - github.com/golang/protobuf/protoc-gen-go/descriptor \ - github.com/golang/protobuf/ptypes \ - github.com/golang/protobuf/ptypes/any \ - github.com/golang/protobuf/ptypes/duration \ - github.com/golang/protobuf/ptypes/timestamp \ - github.com/googleapis/gax-go \ - go4.org/syncutil/singleflight \ - golang.org/x/build/autocertcache \ - golang.org/x/crypto/acme \ - golang.org/x/crypto/acme/autocert \ - golang.org/x/oauth2 \ - golang.org/x/oauth2/google \ - golang.org/x/oauth2/internal \ - golang.org/x/oauth2/jws \ - golang.org/x/oauth2/jwt \ - golang.org/x/text/secure/bidirule \ - golang.org/x/text/transform \ - golang.org/x/text/unicode/bidi \ - golang.org/x/text/unicode/norm \ - google.golang.org/api/gensupport \ - google.golang.org/api/googleapi \ - google.golang.org/api/googleapi/internal/uritemplates \ - google.golang.org/api/googleapi/transport \ - google.golang.org/api/internal \ - google.golang.org/api/iterator \ - google.golang.org/api/option \ - google.golang.org/api/storage/v1 \ - google.golang.org/api/transport/http \ - google.golang.org/genproto/googleapis/api/annotations \ - google.golang.org/genproto/googleapis/iam/v1 \ - google.golang.org/genproto/googleapis/rpc/status \ - google.golang.org/grpc \ - google.golang.org/grpc/balancer \ - google.golang.org/grpc/balancer/base \ - google.golang.org/grpc/balancer/roundrobin \ - google.golang.org/grpc/codes \ - google.golang.org/grpc/connectivity \ - google.golang.org/grpc/credentials \ - google.golang.org/grpc/encoding \ - google.golang.org/grpc/encoding/proto \ - google.golang.org/grpc/grpclb/grpc_lb_v1/messages \ - google.golang.org/grpc/grpclog \ - google.golang.org/grpc/internal \ - google.golang.org/grpc/keepalive \ - google.golang.org/grpc/metadata \ - google.golang.org/grpc/naming \ - google.golang.org/grpc/peer \ - google.golang.org/grpc/resolver \ - google.golang.org/grpc/resolver/dns \ - google.golang.org/grpc/resolver/passthrough \ - google.golang.org/grpc/stats \ - google.golang.org/grpc/status \ - google.golang.org/grpc/tap \ - google.golang.org/grpc/transport -# END deps - -COPY . /go/src/golang.org/x/net/ - -RUN go install -tags "h2demo netgo" -ldflags "-linkmode=external -extldflags '-static -pthread'" golang.org/x/net/http2/h2demo - diff --git a/vendor/golang.org/x/net/http2/h2demo/Makefile b/vendor/golang.org/x/net/http2/h2demo/Makefile deleted file mode 100644 index 306d1986..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/Makefile +++ /dev/null @@ -1,55 +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. - -MUTABLE_VERSION ?= latest -VERSION ?= $(shell git rev-parse --short HEAD) - -IMAGE_STAGING := gcr.io/go-dashboard-dev/h2demo -IMAGE_PROD := gcr.io/symbolic-datum-552/h2demo - -DOCKER_IMAGE_build0=build0/h2demo:latest -DOCKER_CTR_build0=h2demo-build0 - -build0: *.go Dockerfile.0 - docker build --force-rm -f Dockerfile.0 --tag=$(DOCKER_IMAGE_build0) ../.. - -h2demo: build0 - docker create --name $(DOCKER_CTR_build0) $(DOCKER_IMAGE_build0) - docker cp $(DOCKER_CTR_build0):/go/bin/$@ $@ - docker rm $(DOCKER_CTR_build0) - -ca-certificates.crt: - docker create --name $(DOCKER_CTR_build0) $(DOCKER_IMAGE_build0) - docker cp $(DOCKER_CTR_build0):/etc/ssl/certs/$@ $@ - docker rm $(DOCKER_CTR_build0) - -update-deps: - go install golang.org/x/build/cmd/gitlock - gitlock --update=Dockerfile.0 --ignore=golang.org/x/net --tags=h2demo golang.org/x/net/http2/h2demo - -docker-prod: Dockerfile h2demo ca-certificates.crt - docker build --force-rm --tag=$(IMAGE_PROD):$(VERSION) . - docker tag $(IMAGE_PROD):$(VERSION) $(IMAGE_PROD):$(MUTABLE_VERSION) -docker-staging: Dockerfile h2demo ca-certificates.crt - docker build --force-rm --tag=$(IMAGE_STAGING):$(VERSION) . - docker tag $(IMAGE_STAGING):$(VERSION) $(IMAGE_STAGING):$(MUTABLE_VERSION) - -push-prod: docker-prod - gcloud docker -- push $(IMAGE_PROD):$(MUTABLE_VERSION) - gcloud docker -- push $(IMAGE_PROD):$(VERSION) -push-staging: docker-staging - gcloud docker -- push $(IMAGE_STAGING):$(MUTABLE_VERSION) - gcloud docker -- push $(IMAGE_STAGING):$(VERSION) - -deploy-prod: push-prod - kubectl set image deployment/h2demo-deployment h2demo=$(IMAGE_PROD):$(VERSION) -deploy-staging: push-staging - kubectl set image deployment/h2demo-deployment h2demo=$(IMAGE_STAGING):$(VERSION) - -.PHONY: clean -clean: - $(RM) h2demo - $(RM) ca-certificates.crt - -FORCE: diff --git a/vendor/golang.org/x/net/http2/h2demo/README b/vendor/golang.org/x/net/http2/h2demo/README deleted file mode 100644 index 212a96f3..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/README +++ /dev/null @@ -1,16 +0,0 @@ - -Client: - -- Firefox nightly with about:config network.http.spdy.enabled.http2draft set true - -- Chrome: go to chrome://flags/#enable-spdy4, save and restart (button at bottom) - -Make CA: -$ openssl genrsa -out rootCA.key 2048 -$ openssl req -x509 -new -nodes -key rootCA.key -days 1024 -out rootCA.pem -... install that to Firefox - -Make cert: -$ openssl genrsa -out server.key 2048 -$ openssl req -new -key server.key -out server.csr -$ openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 - - diff --git a/vendor/golang.org/x/net/http2/h2demo/deployment-prod.yaml b/vendor/golang.org/x/net/http2/h2demo/deployment-prod.yaml deleted file mode 100644 index a3a20a42..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/deployment-prod.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - name: h2demo-deployment -spec: - replicas: 1 - template: - metadata: - labels: - app: h2demo - annotations: - container.seccomp.security.alpha.kubernetes.io/h2demo: docker/default - container.apparmor.security.beta.kubernetes.io/h2demo: runtime/default - spec: - containers: - - name: h2demo - image: gcr.io/symbolic-datum-552/h2demo:latest - imagePullPolicy: Always - command: ["/h2demo", "-prod"] - ports: - - containerPort: 80 - - containerPort: 443 - resources: - requests: - cpu: "1" - memory: "1Gi" - limits: - memory: "2Gi" diff --git a/vendor/golang.org/x/net/http2/h2demo/h2demo.go b/vendor/golang.org/x/net/http2/h2demo/h2demo.go deleted file mode 100644 index ce842fd6..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/h2demo.go +++ /dev/null @@ -1,543 +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. - -// +build h2demo - -package main - -import ( - "bytes" - "context" - "crypto/tls" - "flag" - "fmt" - "hash/crc32" - "image" - "image/jpeg" - "io" - "io/ioutil" - "log" - "net" - "net/http" - "path" - "regexp" - "runtime" - "strconv" - "strings" - "sync" - "time" - - "cloud.google.com/go/storage" - "go4.org/syncutil/singleflight" - "golang.org/x/build/autocertcache" - "golang.org/x/crypto/acme/autocert" - "golang.org/x/net/http2" -) - -var ( - prod = flag.Bool("prod", false, "Whether to configure itself to be the production http2.golang.org server.") - - httpsAddr = flag.String("https_addr", "localhost:4430", "TLS address to listen on ('host:port' or ':port'). Required.") - httpAddr = flag.String("http_addr", "", "Plain HTTP address to listen on ('host:port', or ':port'). Empty means no HTTP.") - - hostHTTP = flag.String("http_host", "", "Optional host or host:port to use for http:// links to this service. By default, this is implied from -http_addr.") - hostHTTPS = flag.String("https_host", "", "Optional host or host:port to use for http:// links to this service. By default, this is implied from -https_addr.") -) - -func homeOldHTTP(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, `<html> -<body> -<h1>Go + HTTP/2</h1> -<p>Welcome to <a href="https://golang.org/">the Go language</a>'s <a href="https://http2.github.io/">HTTP/2</a> demo & interop server.</p> -<p>Unfortunately, you're <b>not</b> using HTTP/2 right now. To do so:</p> -<ul> - <li>Use Firefox Nightly or go to <b>about:config</b> and enable "network.http.spdy.enabled.http2draft"</li> - <li>Use Google Chrome Canary and/or go to <b>chrome://flags/#enable-spdy4</b> to <i>Enable SPDY/4</i> (Chrome's name for HTTP/2)</li> -</ul> -<p>See code & instructions for connecting at <a href="https://github.com/golang/net/tree/master/http2">https://github.com/golang/net/tree/master/http2</a>.</p> - -</body></html>`) -} - -func home(w http.ResponseWriter, r *http.Request) { - if r.URL.Path != "/" { - http.NotFound(w, r) - return - } - io.WriteString(w, `<html> -<body> -<h1>Go + HTTP/2</h1> - -<p>Welcome to <a href="https://golang.org/">the Go language</a>'s <a -href="https://http2.github.io/">HTTP/2</a> demo & interop server.</p> - -<p>Congratulations, <b>you're using HTTP/2 right now</b>.</p> - -<p>This server exists for others in the HTTP/2 community to test their HTTP/2 client implementations and point out flaws in our server.</p> - -<p> -The code is at <a href="https://golang.org/x/net/http2">golang.org/x/net/http2</a> and -is used transparently by the Go standard library from Go 1.6 and later. -</p> - -<p>Contact info: <i>bradfitz@golang.org</i>, or <a -href="https://golang.org/s/http2bug">file a bug</a>.</p> - -<h2>Handlers for testing</h2> -<ul> - <li>GET <a href="/reqinfo">/reqinfo</a> to dump the request + headers received</li> - <li>GET <a href="/clockstream">/clockstream</a> streams the current time every second</li> - <li>GET <a href="/gophertiles">/gophertiles</a> to see a page with a bunch of images</li> - <li>GET <a href="/serverpush">/serverpush</a> to see a page with server push</li> - <li>GET <a href="/file/gopher.png">/file/gopher.png</a> for a small file (does If-Modified-Since, Content-Range, etc)</li> - <li>GET <a href="/file/go.src.tar.gz">/file/go.src.tar.gz</a> for a larger file (~10 MB)</li> - <li>GET <a href="/redirect">/redirect</a> to redirect back to / (this page)</li> - <li>GET <a href="/goroutines">/goroutines</a> to see all active goroutines in this server</li> - <li>PUT something to <a href="/crc32">/crc32</a> to get a count of number of bytes and its CRC-32</li> - <li>PUT something to <a href="/ECHO">/ECHO</a> and it will be streamed back to you capitalized</li> -</ul> - -</body></html>`) -} - -func reqInfoHandler(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "text/plain") - fmt.Fprintf(w, "Method: %s\n", r.Method) - fmt.Fprintf(w, "Protocol: %s\n", r.Proto) - fmt.Fprintf(w, "Host: %s\n", r.Host) - fmt.Fprintf(w, "RemoteAddr: %s\n", r.RemoteAddr) - fmt.Fprintf(w, "RequestURI: %q\n", r.RequestURI) - fmt.Fprintf(w, "URL: %#v\n", r.URL) - fmt.Fprintf(w, "Body.ContentLength: %d (-1 means unknown)\n", r.ContentLength) - fmt.Fprintf(w, "Close: %v (relevant for HTTP/1 only)\n", r.Close) - fmt.Fprintf(w, "TLS: %#v\n", r.TLS) - fmt.Fprintf(w, "\nHeaders:\n") - r.Header.Write(w) -} - -func crcHandler(w http.ResponseWriter, r *http.Request) { - if r.Method != "PUT" { - http.Error(w, "PUT required.", 400) - return - } - crc := crc32.NewIEEE() - n, err := io.Copy(crc, r.Body) - if err == nil { - w.Header().Set("Content-Type", "text/plain") - fmt.Fprintf(w, "bytes=%d, CRC32=%x", n, crc.Sum(nil)) - } -} - -type capitalizeReader struct { - r io.Reader -} - -func (cr capitalizeReader) Read(p []byte) (n int, err error) { - n, err = cr.r.Read(p) - for i, b := range p[:n] { - if b >= 'a' && b <= 'z' { - p[i] = b - ('a' - 'A') - } - } - return -} - -type flushWriter struct { - w io.Writer -} - -func (fw flushWriter) Write(p []byte) (n int, err error) { - n, err = fw.w.Write(p) - if f, ok := fw.w.(http.Flusher); ok { - f.Flush() - } - return -} - -func echoCapitalHandler(w http.ResponseWriter, r *http.Request) { - if r.Method != "PUT" { - http.Error(w, "PUT required.", 400) - return - } - io.Copy(flushWriter{w}, capitalizeReader{r.Body}) -} - -var ( - fsGrp singleflight.Group - fsMu sync.Mutex // guards fsCache - fsCache = map[string]http.Handler{} -) - -// fileServer returns a file-serving handler that proxies URL. -// It lazily fetches URL on the first access and caches its contents forever. -func fileServer(url string, latency time.Duration) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if latency > 0 { - time.Sleep(latency) - } - hi, err := fsGrp.Do(url, func() (interface{}, error) { - fsMu.Lock() - if h, ok := fsCache[url]; ok { - fsMu.Unlock() - return h, nil - } - fsMu.Unlock() - - res, err := http.Get(url) - if err != nil { - return nil, err - } - defer res.Body.Close() - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - return nil, err - } - - modTime := time.Now() - var h http.Handler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - http.ServeContent(w, r, path.Base(url), modTime, bytes.NewReader(slurp)) - }) - fsMu.Lock() - fsCache[url] = h - fsMu.Unlock() - return h, nil - }) - if err != nil { - http.Error(w, err.Error(), 500) - return - } - hi.(http.Handler).ServeHTTP(w, r) - }) -} - -func clockStreamHandler(w http.ResponseWriter, r *http.Request) { - clientGone := w.(http.CloseNotifier).CloseNotify() - w.Header().Set("Content-Type", "text/plain") - ticker := time.NewTicker(1 * time.Second) - defer ticker.Stop() - fmt.Fprintf(w, "# ~1KB of junk to force browsers to start rendering immediately: \n") - io.WriteString(w, strings.Repeat("# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", 13)) - - for { - fmt.Fprintf(w, "%v\n", time.Now()) - w.(http.Flusher).Flush() - select { - case <-ticker.C: - case <-clientGone: - log.Printf("Client %v disconnected from the clock", r.RemoteAddr) - return - } - } -} - -func registerHandlers() { - tiles := newGopherTilesHandler() - push := newPushHandler() - - mux2 := http.NewServeMux() - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - switch { - case r.URL.Path == "/gophertiles": - tiles.ServeHTTP(w, r) // allow HTTP/2 + HTTP/1.x - return - case strings.HasPrefix(r.URL.Path, "/serverpush"): - push.ServeHTTP(w, r) // allow HTTP/2 + HTTP/1.x - return - case r.TLS == nil: // do not allow HTTP/1.x for anything else - http.Redirect(w, r, "https://"+httpsHost()+"/", http.StatusFound) - return - } - if r.ProtoMajor == 1 { - if r.URL.Path == "/reqinfo" { - reqInfoHandler(w, r) - return - } - homeOldHTTP(w, r) - return - } - mux2.ServeHTTP(w, r) - }) - mux2.HandleFunc("/", home) - mux2.Handle("/file/gopher.png", fileServer("https://golang.org/doc/gopher/frontpage.png", 0)) - mux2.Handle("/file/go.src.tar.gz", fileServer("https://storage.googleapis.com/golang/go1.4.1.src.tar.gz", 0)) - mux2.HandleFunc("/reqinfo", reqInfoHandler) - mux2.HandleFunc("/crc32", crcHandler) - mux2.HandleFunc("/ECHO", echoCapitalHandler) - mux2.HandleFunc("/clockstream", clockStreamHandler) - mux2.Handle("/gophertiles", tiles) - mux2.HandleFunc("/redirect", func(w http.ResponseWriter, r *http.Request) { - http.Redirect(w, r, "/", http.StatusFound) - }) - stripHomedir := regexp.MustCompile(`/(Users|home)/\w+`) - mux2.HandleFunc("/goroutines", func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "text/plain; charset=utf-8") - buf := make([]byte, 2<<20) - w.Write(stripHomedir.ReplaceAll(buf[:runtime.Stack(buf, true)], nil)) - }) -} - -var pushResources = map[string]http.Handler{ - "/serverpush/static/jquery.min.js": fileServer("https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", 100*time.Millisecond), - "/serverpush/static/godocs.js": fileServer("https://golang.org/lib/godoc/godocs.js", 100*time.Millisecond), - "/serverpush/static/playground.js": fileServer("https://golang.org/lib/godoc/playground.js", 100*time.Millisecond), - "/serverpush/static/style.css": fileServer("https://golang.org/lib/godoc/style.css", 100*time.Millisecond), -} - -func newPushHandler() http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - for path, handler := range pushResources { - if r.URL.Path == path { - handler.ServeHTTP(w, r) - return - } - } - - cacheBust := time.Now().UnixNano() - if pusher, ok := w.(http.Pusher); ok { - for path := range pushResources { - url := fmt.Sprintf("%s?%d", path, cacheBust) - if err := pusher.Push(url, nil); err != nil { - log.Printf("Failed to push %v: %v", path, err) - } - } - } - time.Sleep(100 * time.Millisecond) // fake network latency + parsing time - if err := pushTmpl.Execute(w, struct { - CacheBust int64 - HTTPSHost string - HTTPHost string - }{ - CacheBust: cacheBust, - HTTPSHost: httpsHost(), - HTTPHost: httpHost(), - }); err != nil { - log.Printf("Executing server push template: %v", err) - } - }) -} - -func newGopherTilesHandler() http.Handler { - const gopherURL = "https://blog.golang.org/go-programming-language-turns-two_gophers.jpg" - res, err := http.Get(gopherURL) - if err != nil { - log.Fatal(err) - } - if res.StatusCode != 200 { - log.Fatalf("Error fetching %s: %v", gopherURL, res.Status) - } - slurp, err := ioutil.ReadAll(res.Body) - res.Body.Close() - if err != nil { - log.Fatal(err) - } - im, err := jpeg.Decode(bytes.NewReader(slurp)) - if err != nil { - if len(slurp) > 1024 { - slurp = slurp[:1024] - } - log.Fatalf("Failed to decode gopher image: %v (got %q)", err, slurp) - } - - type subImager interface { - SubImage(image.Rectangle) image.Image - } - const tileSize = 32 - xt := im.Bounds().Max.X / tileSize - yt := im.Bounds().Max.Y / tileSize - var tile [][][]byte // y -> x -> jpeg bytes - for yi := 0; yi < yt; yi++ { - var row [][]byte - for xi := 0; xi < xt; xi++ { - si := im.(subImager).SubImage(image.Rectangle{ - Min: image.Point{xi * tileSize, yi * tileSize}, - Max: image.Point{(xi + 1) * tileSize, (yi + 1) * tileSize}, - }) - buf := new(bytes.Buffer) - if err := jpeg.Encode(buf, si, &jpeg.Options{Quality: 90}); err != nil { - log.Fatal(err) - } - row = append(row, buf.Bytes()) - } - tile = append(tile, row) - } - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ms, _ := strconv.Atoi(r.FormValue("latency")) - const nanosPerMilli = 1e6 - if r.FormValue("x") != "" { - x, _ := strconv.Atoi(r.FormValue("x")) - y, _ := strconv.Atoi(r.FormValue("y")) - if ms <= 1000 { - time.Sleep(time.Duration(ms) * nanosPerMilli) - } - if x >= 0 && x < xt && y >= 0 && y < yt { - http.ServeContent(w, r, "", time.Time{}, bytes.NewReader(tile[y][x])) - return - } - } - io.WriteString(w, "<html><body onload='showtimes()'>") - fmt.Fprintf(w, "A grid of %d tiled images is below. Compare:<p>", xt*yt) - for _, ms := range []int{0, 30, 200, 1000} { - d := time.Duration(ms) * nanosPerMilli - fmt.Fprintf(w, "[<a href='https://%s/gophertiles?latency=%d'>HTTP/2, %v latency</a>] [<a href='http://%s/gophertiles?latency=%d'>HTTP/1, %v latency</a>]<br>\n", - httpsHost(), ms, d, - httpHost(), ms, d, - ) - } - io.WriteString(w, "<p>\n") - cacheBust := time.Now().UnixNano() - for y := 0; y < yt; y++ { - for x := 0; x < xt; x++ { - fmt.Fprintf(w, "<img width=%d height=%d src='/gophertiles?x=%d&y=%d&cachebust=%d&latency=%d'>", - tileSize, tileSize, x, y, cacheBust, ms) - } - io.WriteString(w, "<br/>\n") - } - io.WriteString(w, `<p><div id='loadtimes'></div></p> -<script> -function showtimes() { - var times = 'Times from connection start:<br>' - times += 'DOM loaded: ' + (window.performance.timing.domContentLoadedEventEnd - window.performance.timing.connectStart) + 'ms<br>' - times += 'DOM complete (images loaded): ' + (window.performance.timing.domComplete - window.performance.timing.connectStart) + 'ms<br>' - document.getElementById('loadtimes').innerHTML = times -} -</script> -<hr><a href='/'>&lt;&lt Back to Go HTTP/2 demo server</a></body></html>`) - }) -} - -func httpsHost() string { - if *hostHTTPS != "" { - return *hostHTTPS - } - if v := *httpsAddr; strings.HasPrefix(v, ":") { - return "localhost" + v - } else { - return v - } -} - -func httpHost() string { - if *hostHTTP != "" { - return *hostHTTP - } - if v := *httpAddr; strings.HasPrefix(v, ":") { - return "localhost" + v - } else { - return v - } -} - -func serveProdTLS(autocertManager *autocert.Manager) error { - srv := &http.Server{ - TLSConfig: &tls.Config{ - GetCertificate: autocertManager.GetCertificate, - }, - } - http2.ConfigureServer(srv, &http2.Server{ - NewWriteScheduler: func() http2.WriteScheduler { - return http2.NewPriorityWriteScheduler(nil) - }, - }) - ln, err := net.Listen("tcp", ":443") - if err != nil { - return err - } - return srv.Serve(tls.NewListener(tcpKeepAliveListener{ln.(*net.TCPListener)}, srv.TLSConfig)) -} - -type tcpKeepAliveListener struct { - *net.TCPListener -} - -func (ln tcpKeepAliveListener) Accept() (c net.Conn, err error) { - tc, err := ln.AcceptTCP() - if err != nil { - return - } - tc.SetKeepAlive(true) - tc.SetKeepAlivePeriod(3 * time.Minute) - return tc, nil -} - -func serveProd() error { - log.Printf("running in production mode") - - storageClient, err := storage.NewClient(context.Background()) - if err != nil { - log.Fatalf("storage.NewClient: %v", err) - } - autocertManager := &autocert.Manager{ - Prompt: autocert.AcceptTOS, - HostPolicy: autocert.HostWhitelist("http2.golang.org"), - Cache: autocertcache.NewGoogleCloudStorageCache(storageClient, "golang-h2demo-autocert"), - } - - errc := make(chan error, 2) - go func() { errc <- http.ListenAndServe(":80", autocertManager.HTTPHandler(http.DefaultServeMux)) }() - go func() { errc <- serveProdTLS(autocertManager) }() - return <-errc -} - -const idleTimeout = 5 * time.Minute -const activeTimeout = 10 * time.Minute - -// TODO: put this into the standard library and actually send -// PING frames and GOAWAY, etc: golang.org/issue/14204 -func idleTimeoutHook() func(net.Conn, http.ConnState) { - var mu sync.Mutex - m := map[net.Conn]*time.Timer{} - return func(c net.Conn, cs http.ConnState) { - mu.Lock() - defer mu.Unlock() - if t, ok := m[c]; ok { - delete(m, c) - t.Stop() - } - var d time.Duration - switch cs { - case http.StateNew, http.StateIdle: - d = idleTimeout - case http.StateActive: - d = activeTimeout - default: - return - } - m[c] = time.AfterFunc(d, func() { - log.Printf("closing idle conn %v after %v", c.RemoteAddr(), d) - go c.Close() - }) - } -} - -func main() { - var srv http.Server - flag.BoolVar(&http2.VerboseLogs, "verbose", false, "Verbose HTTP/2 debugging.") - flag.Parse() - srv.Addr = *httpsAddr - srv.ConnState = idleTimeoutHook() - - registerHandlers() - - if *prod { - *hostHTTP = "http2.golang.org" - *hostHTTPS = "http2.golang.org" - log.Fatal(serveProd()) - } - - url := "https://" + httpsHost() + "/" - log.Printf("Listening on " + url) - http2.ConfigureServer(&srv, &http2.Server{}) - - if *httpAddr != "" { - go func() { - log.Printf("Listening on http://" + httpHost() + "/ (for unencrypted HTTP/1)") - log.Fatal(http.ListenAndServe(*httpAddr, nil)) - }() - } - - go func() { - log.Fatal(srv.ListenAndServeTLS("server.crt", "server.key")) - }() - select {} -} diff --git a/vendor/golang.org/x/net/http2/h2demo/launch.go b/vendor/golang.org/x/net/http2/h2demo/launch.go deleted file mode 100644 index df0866a3..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/launch.go +++ /dev/null @@ -1,302 +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. - -// +build ignore - -package main - -import ( - "bufio" - "bytes" - "encoding/json" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "net/http" - "os" - "strings" - "time" - - "golang.org/x/oauth2" - "golang.org/x/oauth2/google" - compute "google.golang.org/api/compute/v1" -) - -var ( - proj = flag.String("project", "symbolic-datum-552", "name of Project") - zone = flag.String("zone", "us-central1-a", "GCE zone") - mach = flag.String("machinetype", "n1-standard-1", "Machine type") - instName = flag.String("instance_name", "http2-demo", "Name of VM instance.") - sshPub = flag.String("ssh_public_key", "", "ssh public key file to authorize. Can modify later in Google's web UI anyway.") - staticIP = flag.String("static_ip", "130.211.116.44", "Static IP to use. If empty, automatic.") - - writeObject = flag.String("write_object", "", "If non-empty, a VM isn't created and the flag value is Google Cloud Storage bucket/object to write. The contents from stdin.") - publicObject = flag.Bool("write_object_is_public", false, "Whether the object created by --write_object should be public.") -) - -func readFile(v string) string { - slurp, err := ioutil.ReadFile(v) - if err != nil { - log.Fatalf("Error reading %s: %v", v, err) - } - return strings.TrimSpace(string(slurp)) -} - -var config = &oauth2.Config{ - // The client-id and secret should be for an "Installed Application" when using - // the CLI. Later we'll use a web application with a callback. - ClientID: readFile("client-id.dat"), - ClientSecret: readFile("client-secret.dat"), - Endpoint: google.Endpoint, - Scopes: []string{ - compute.DevstorageFullControlScope, - compute.ComputeScope, - "https://www.googleapis.com/auth/sqlservice", - "https://www.googleapis.com/auth/sqlservice.admin", - }, - RedirectURL: "urn:ietf:wg:oauth:2.0:oob", -} - -const baseConfig = `#cloud-config -coreos: - units: - - name: h2demo.service - command: start - content: | - [Unit] - Description=HTTP2 Demo - - [Service] - ExecStartPre=/bin/bash -c 'mkdir -p /opt/bin && curl -s -o /opt/bin/h2demo http://storage.googleapis.com/http2-demo-server-tls/h2demo && chmod +x /opt/bin/h2demo' - ExecStart=/opt/bin/h2demo --prod - RestartSec=5s - Restart=always - Type=simple - - [Install] - WantedBy=multi-user.target -` - -func main() { - flag.Parse() - if *proj == "" { - log.Fatalf("Missing --project flag") - } - prefix := "https://www.googleapis.com/compute/v1/projects/" + *proj - machType := prefix + "/zones/" + *zone + "/machineTypes/" + *mach - - const tokenFileName = "token.dat" - tokenFile := tokenCacheFile(tokenFileName) - tokenSource := oauth2.ReuseTokenSource(nil, tokenFile) - token, err := tokenSource.Token() - if err != nil { - if *writeObject != "" { - log.Fatalf("Can't use --write_object without a valid token.dat file already cached.") - } - log.Printf("Error getting token from %s: %v", tokenFileName, err) - log.Printf("Get auth code from %v", config.AuthCodeURL("my-state")) - fmt.Print("\nEnter auth code: ") - sc := bufio.NewScanner(os.Stdin) - sc.Scan() - authCode := strings.TrimSpace(sc.Text()) - token, err = config.Exchange(oauth2.NoContext, authCode) - if err != nil { - log.Fatalf("Error exchanging auth code for a token: %v", err) - } - if err := tokenFile.WriteToken(token); err != nil { - log.Fatalf("Error writing to %s: %v", tokenFileName, err) - } - tokenSource = oauth2.ReuseTokenSource(token, nil) - } - - oauthClient := oauth2.NewClient(oauth2.NoContext, tokenSource) - - if *writeObject != "" { - writeCloudStorageObject(oauthClient) - return - } - - computeService, _ := compute.New(oauthClient) - - natIP := *staticIP - if natIP == "" { - // Try to find it by name. - aggAddrList, err := computeService.Addresses.AggregatedList(*proj).Do() - if err != nil { - log.Fatal(err) - } - // http://godoc.org/code.google.com/p/google-api-go-client/compute/v1#AddressAggregatedList - IPLoop: - for _, asl := range aggAddrList.Items { - for _, addr := range asl.Addresses { - if addr.Name == *instName+"-ip" && addr.Status == "RESERVED" { - natIP = addr.Address - break IPLoop - } - } - } - } - - cloudConfig := baseConfig - if *sshPub != "" { - key := strings.TrimSpace(readFile(*sshPub)) - cloudConfig += fmt.Sprintf("\nssh_authorized_keys:\n - %s\n", key) - } - if os.Getenv("USER") == "bradfitz" { - cloudConfig += fmt.Sprintf("\nssh_authorized_keys:\n - %s\n", "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwks9dwWKlRC+73gRbvYtVg0vdCwDSuIlyt4z6xa/YU/jTDynM4R4W10hm2tPjy8iR1k8XhDv4/qdxe6m07NjG/By1tkmGpm1mGwho4Pr5kbAAy/Qg+NLCSdAYnnE00FQEcFOC15GFVMOW2AzDGKisReohwH9eIzHPzdYQNPRWXE= bradfitz@papag.bradfitz.com") - } - const maxCloudConfig = 32 << 10 // per compute API docs - if len(cloudConfig) > maxCloudConfig { - log.Fatalf("cloud config length of %d bytes is over %d byte limit", len(cloudConfig), maxCloudConfig) - } - - instance := &compute.Instance{ - Name: *instName, - Description: "Go Builder", - MachineType: machType, - Disks: []*compute.AttachedDisk{instanceDisk(computeService)}, - Tags: &compute.Tags{ - Items: []string{"http-server", "https-server"}, - }, - Metadata: &compute.Metadata{ - Items: []*compute.MetadataItems{ - { - Key: "user-data", - Value: &cloudConfig, - }, - }, - }, - NetworkInterfaces: []*compute.NetworkInterface{ - { - AccessConfigs: []*compute.AccessConfig{ - { - Type: "ONE_TO_ONE_NAT", - Name: "External NAT", - NatIP: natIP, - }, - }, - Network: prefix + "/global/networks/default", - }, - }, - ServiceAccounts: []*compute.ServiceAccount{ - { - Email: "default", - Scopes: []string{ - compute.DevstorageFullControlScope, - compute.ComputeScope, - }, - }, - }, - } - - log.Printf("Creating instance...") - op, err := computeService.Instances.Insert(*proj, *zone, instance).Do() - if err != nil { - log.Fatalf("Failed to create instance: %v", err) - } - opName := op.Name - log.Printf("Created. Waiting on operation %v", opName) -OpLoop: - for { - time.Sleep(2 * time.Second) - op, err := computeService.ZoneOperations.Get(*proj, *zone, opName).Do() - if err != nil { - log.Fatalf("Failed to get op %s: %v", opName, err) - } - switch op.Status { - case "PENDING", "RUNNING": - log.Printf("Waiting on operation %v", opName) - continue - case "DONE": - if op.Error != nil { - for _, operr := range op.Error.Errors { - log.Printf("Error: %+v", operr) - } - log.Fatalf("Failed to start.") - } - log.Printf("Success. %+v", op) - break OpLoop - default: - log.Fatalf("Unknown status %q: %+v", op.Status, op) - } - } - - inst, err := computeService.Instances.Get(*proj, *zone, *instName).Do() - if err != nil { - log.Fatalf("Error getting instance after creation: %v", err) - } - ij, _ := json.MarshalIndent(inst, "", " ") - log.Printf("Instance: %s", ij) -} - -func instanceDisk(svc *compute.Service) *compute.AttachedDisk { - const imageURL = "https://www.googleapis.com/compute/v1/projects/coreos-cloud/global/images/coreos-stable-444-5-0-v20141016" - diskName := *instName + "-disk" - - return &compute.AttachedDisk{ - AutoDelete: true, - Boot: true, - Type: "PERSISTENT", - InitializeParams: &compute.AttachedDiskInitializeParams{ - DiskName: diskName, - SourceImage: imageURL, - DiskSizeGb: 50, - }, - } -} - -func writeCloudStorageObject(httpClient *http.Client) { - content := os.Stdin - const maxSlurp = 1 << 20 - var buf bytes.Buffer - n, err := io.CopyN(&buf, content, maxSlurp) - if err != nil && err != io.EOF { - log.Fatalf("Error reading from stdin: %v, %v", n, err) - } - contentType := http.DetectContentType(buf.Bytes()) - - req, err := http.NewRequest("PUT", "https://storage.googleapis.com/"+*writeObject, io.MultiReader(&buf, content)) - if err != nil { - log.Fatal(err) - } - req.Header.Set("x-goog-api-version", "2") - if *publicObject { - req.Header.Set("x-goog-acl", "public-read") - } - req.Header.Set("Content-Type", contentType) - res, err := httpClient.Do(req) - if err != nil { - log.Fatal(err) - } - if res.StatusCode != 200 { - res.Write(os.Stderr) - log.Fatalf("Failed.") - } - log.Printf("Success.") - os.Exit(0) -} - -type tokenCacheFile string - -func (f tokenCacheFile) Token() (*oauth2.Token, error) { - slurp, err := ioutil.ReadFile(string(f)) - if err != nil { - return nil, err - } - t := new(oauth2.Token) - if err := json.Unmarshal(slurp, t); err != nil { - return nil, err - } - return t, nil -} - -func (f tokenCacheFile) WriteToken(t *oauth2.Token) error { - jt, err := json.Marshal(t) - if err != nil { - return err - } - return ioutil.WriteFile(string(f), jt, 0600) -} diff --git a/vendor/golang.org/x/net/http2/h2demo/rootCA.key b/vendor/golang.org/x/net/http2/h2demo/rootCA.key deleted file mode 100644 index a15a6aba..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/rootCA.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAt5fAjp4fTcekWUTfzsp0kyih1OYbsGL0KX1eRbSSR8Od0+9Q -62Hyny+GFwMTb4A/KU8mssoHvcceSAAbwfbxFK/+s51TobqUnORZrOoTZjkUygby -XDSK99YBbcR1Pip8vwMTm4XKuLtCigeBBdjjAQdgUO28LENGlsMnmeYkJfODVGnV -mr5Ltb9ANA8IKyTfsnHJ4iOCS/PlPbUj2q7YnoVLposUBMlgUb/CykX3mOoLb4yJ -JQyA/iST6ZxiIEj36D4yWZ5lg7YJl+UiiBQHGCnPdGyipqV06ex0heYWcaiW8LWZ -SUQ93jQ+WVCH8hT7DQO1dmsvUmXlq/JeAlwQ/QIDAQABAoIBAFFHV7JMAqPWnMYA -nezY6J81v9+XN+7xABNWM2Q8uv4WdksbigGLTXR3/680Z2hXqJ7LMeC5XJACFT/e -/Gr0vmpgOCygnCPfjGehGKpavtfksXV3edikUlnCXsOP1C//c1bFL+sMYmFCVgTx -qYdDK8yKzXNGrKYT6q5YG7IglyRNV1rsQa8lM/5taFYiD1Ck/3tQi3YIq8Lcuser -hrxsMABcQ6mi+EIvG6Xr4mfJug0dGJMHG4RG1UGFQn6RXrQq2+q53fC8ZbVUSi0j -NQ918aKFzktwv+DouKU0ME4I9toks03gM860bAL7zCbKGmwR3hfgX/TqzVCWpG9E -LDVfvekCgYEA8fk9N53jbBRmULUGEf4qWypcLGiZnNU0OeXWpbPV9aa3H0VDytA7 -8fCN2dPAVDPqlthMDdVe983NCNwp2Yo8ZimDgowyIAKhdC25s1kejuaiH9OAPj3c -0f8KbriYX4n8zNHxFwK6Ae3pQ6EqOLJVCUsziUaZX9nyKY5aZlyX6xcCgYEAwjws -K62PjC64U5wYddNLp+kNdJ4edx+a7qBb3mEgPvSFT2RO3/xafJyG8kQB30Mfstjd -bRxyUV6N0vtX1zA7VQtRUAvfGCecpMo+VQZzcHXKzoRTnQ7eZg4Lmj5fQ9tOAKAo -QCVBoSW/DI4PZL26CAMDcAba4Pa22ooLapoRIQsCgYA6pIfkkbxLNkpxpt2YwLtt -Kr/590O7UaR9n6k8sW/aQBRDXNsILR1KDl2ifAIxpf9lnXgZJiwE7HiTfCAcW7c1 -nzwDCI0hWuHcMTS/NYsFYPnLsstyyjVZI3FY0h4DkYKV9Q9z3zJLQ2hz/nwoD3gy -b2pHC7giFcTts1VPV4Nt8wKBgHeFn4ihHJweg76vZz3Z78w7VNRWGFklUalVdDK7 -gaQ7w2y/ROn/146mo0OhJaXFIFRlrpvdzVrU3GDf2YXJYDlM5ZRkObwbZADjksev -WInzcgDy3KDg7WnPasRXbTfMU4t/AkW2p1QKbi3DnSVYuokDkbH2Beo45vxDxhKr -C69RAoGBAIyo3+OJenoZmoNzNJl2WPW5MeBUzSh8T/bgyjFTdqFHF5WiYRD/lfHj -x9Glyw2nutuT4hlOqHvKhgTYdDMsF2oQ72fe3v8Q5FU7FuKndNPEAyvKNXZaShVA -hnlhv5DjXKb0wFWnt5PCCiQLtzG0yyHaITrrEme7FikkIcTxaX/Y ------END RSA PRIVATE KEY----- diff --git a/vendor/golang.org/x/net/http2/h2demo/rootCA.pem b/vendor/golang.org/x/net/http2/h2demo/rootCA.pem deleted file mode 100644 index 3a323e77..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/rootCA.pem +++ /dev/null @@ -1,26 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEWjCCA0KgAwIBAgIJALfRlWsI8YQHMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNV -BAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEUMBIG -A1UEChMLQnJhZGZpdHppbmMxEjAQBgNVBAMTCWxvY2FsaG9zdDEdMBsGCSqGSIb3 -DQEJARYOYnJhZEBkYW5nYS5jb20wHhcNMTQwNzE1MjA0NjA1WhcNMTcwNTA0MjA0 -NjA1WjB7MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xFDASBgNVBAoTC0JyYWRmaXR6aW5jMRIwEAYDVQQDEwlsb2NhbGhv -c3QxHTAbBgkqhkiG9w0BCQEWDmJyYWRAZGFuZ2EuY29tMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEAt5fAjp4fTcekWUTfzsp0kyih1OYbsGL0KX1eRbSS -R8Od0+9Q62Hyny+GFwMTb4A/KU8mssoHvcceSAAbwfbxFK/+s51TobqUnORZrOoT -ZjkUygbyXDSK99YBbcR1Pip8vwMTm4XKuLtCigeBBdjjAQdgUO28LENGlsMnmeYk -JfODVGnVmr5Ltb9ANA8IKyTfsnHJ4iOCS/PlPbUj2q7YnoVLposUBMlgUb/CykX3 -mOoLb4yJJQyA/iST6ZxiIEj36D4yWZ5lg7YJl+UiiBQHGCnPdGyipqV06ex0heYW -caiW8LWZSUQ93jQ+WVCH8hT7DQO1dmsvUmXlq/JeAlwQ/QIDAQABo4HgMIHdMB0G -A1UdDgQWBBRcAROthS4P4U7vTfjByC569R7E6DCBrQYDVR0jBIGlMIGigBRcAROt -hS4P4U7vTfjByC569R7E6KF/pH0wezELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNB -MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRQwEgYDVQQKEwtCcmFkZml0emluYzES -MBAGA1UEAxMJbG9jYWxob3N0MR0wGwYJKoZIhvcNAQkBFg5icmFkQGRhbmdhLmNv -bYIJALfRlWsI8YQHMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAG6h -U9f9sNH0/6oBbGGy2EVU0UgITUQIrFWo9rFkrW5k/XkDjQm+3lzjT0iGR4IxE/Ao -eU6sQhua7wrWeFEn47GL98lnCsJdD7oZNhFmQ95Tb/LnDUjs5Yj9brP0NWzXfYU4 -UK2ZnINJRcJpB8iRCaCxE8DdcUF0XqIEq6pA272snoLmiXLMvNl3kYEdm+je6voD -58SNVEUsztzQyXmJEhCpwVI0A6QCjzXj+qvpmw3ZZHi8JwXei8ZZBLTSFBki8Z7n -sH9BBH38/SzUmAN4QHSPy1gjqm00OAE8NaYDkh/bzE4d7mLGGMWp/WE3KPSu82HF -kPe6XoSbiLm/kxk32T0= ------END CERTIFICATE----- diff --git a/vendor/golang.org/x/net/http2/h2demo/rootCA.srl b/vendor/golang.org/x/net/http2/h2demo/rootCA.srl deleted file mode 100644 index 6db38918..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/rootCA.srl +++ /dev/null @@ -1 +0,0 @@ -E2CE26BF3285059C diff --git a/vendor/golang.org/x/net/http2/h2demo/server.crt b/vendor/golang.org/x/net/http2/h2demo/server.crt deleted file mode 100644 index c59059bd..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/server.crt +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDPjCCAiYCCQDizia/MoUFnDANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJV -UzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xFDASBgNVBAoT -C0JyYWRmaXR6aW5jMRIwEAYDVQQDEwlsb2NhbGhvc3QxHTAbBgkqhkiG9w0BCQEW -DmJyYWRAZGFuZ2EuY29tMB4XDTE0MDcxNTIwNTAyN1oXDTE1MTEyNzIwNTAyN1ow -RzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQHEwJTRjEeMBwGA1UE -ChMVYnJhZGZpdHogaHR0cDIgc2VydmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAs1Y9CyLFrdL8VQWN1WaifDqaZFnoqjHhCMlc1TfG2zA+InDifx2l -gZD3o8FeNnAcfM2sPlk3+ZleOYw9P/CklFVDlvqmpCv9ss/BEp/dDaWvy1LmJ4c2 -dbQJfmTxn7CV1H3TsVJvKdwFmdoABb41NoBp6+NNO7OtDyhbIMiCI0pL3Nefb3HL -A7hIMo3DYbORTtJLTIH9W8YKrEWL0lwHLrYFx/UdutZnv+HjdmO6vCN4na55mjws -/vjKQUmc7xeY7Xe20xDEG2oDKVkL2eD7FfyrYMS3rO1ExP2KSqlXYG/1S9I/fz88 -F0GK7HX55b5WjZCl2J3ERVdnv/0MQv+sYQIDAQABMA0GCSqGSIb3DQEBBQUAA4IB -AQC0zL+n/YpRZOdulSu9tS8FxrstXqGWoxfe+vIUgqfMZ5+0MkjJ/vW0FqlLDl2R -rn4XaR3e7FmWkwdDVbq/UB6lPmoAaFkCgh9/5oapMaclNVNnfF3fjCJfRr+qj/iD -EmJStTIN0ZuUjAlpiACmfnpEU55PafT5Zx+i1yE4FGjw8bJpFoyD4Hnm54nGjX19 -KeCuvcYFUPnBm3lcL0FalF2AjqV02WTHYNQk7YF/oeO7NKBoEgvGvKG3x+xaOeBI -dwvdq175ZsGul30h+QjrRlXhH/twcuaT3GSdoysDl9cCYE8f1Mk8PD6gan3uBCJU -90p6/CbU71bGbfpM2PHot2fm ------END CERTIFICATE----- diff --git a/vendor/golang.org/x/net/http2/h2demo/server.key b/vendor/golang.org/x/net/http2/h2demo/server.key deleted file mode 100644 index f329c142..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/server.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAs1Y9CyLFrdL8VQWN1WaifDqaZFnoqjHhCMlc1TfG2zA+InDi -fx2lgZD3o8FeNnAcfM2sPlk3+ZleOYw9P/CklFVDlvqmpCv9ss/BEp/dDaWvy1Lm -J4c2dbQJfmTxn7CV1H3TsVJvKdwFmdoABb41NoBp6+NNO7OtDyhbIMiCI0pL3Nef -b3HLA7hIMo3DYbORTtJLTIH9W8YKrEWL0lwHLrYFx/UdutZnv+HjdmO6vCN4na55 -mjws/vjKQUmc7xeY7Xe20xDEG2oDKVkL2eD7FfyrYMS3rO1ExP2KSqlXYG/1S9I/ -fz88F0GK7HX55b5WjZCl2J3ERVdnv/0MQv+sYQIDAQABAoIBADQ2spUwbY+bcz4p -3M66ECrNQTBggP40gYl2XyHxGGOu2xhZ94f9ELf1hjRWU2DUKWco1rJcdZClV6q3 -qwmXvcM2Q/SMS8JW0ImkNVl/0/NqPxGatEnj8zY30d/L8hGFb0orzFu/XYA5gCP4 -NbN2WrXgk3ZLeqwcNxHHtSiJWGJ/fPyeDWAu/apy75u9Xf2GlzBZmV6HYD9EfK80 -LTlI60f5FO487CrJnboL7ovPJrIHn+k05xRQqwma4orpz932rTXnTjs9Lg6KtbQN -a7PrqfAntIISgr11a66Mng3IYH1lYqJsWJJwX/xHT4WLEy0EH4/0+PfYemJekz2+ -Co62drECgYEA6O9zVJZXrLSDsIi54cfxA7nEZWm5CAtkYWeAHa4EJ+IlZ7gIf9sL -W8oFcEfFGpvwVqWZ+AsQ70dsjXAv3zXaG0tmg9FtqWp7pzRSMPidifZcQwWkKeTO -gJnFmnVyed8h6GfjTEu4gxo1/S5U0V+mYSha01z5NTnN6ltKx1Or3b0CgYEAxRgm -S30nZxnyg/V7ys61AZhst1DG2tkZXEMcA7dYhabMoXPJAP/EfhlWwpWYYUs/u0gS -Wwmf5IivX5TlYScgmkvb/NYz0u4ZmOXkLTnLPtdKKFXhjXJcHjUP67jYmOxNlJLp -V4vLRnFxTpffAV+OszzRxsXX6fvruwZBANYJeXUCgYBVouLFsFgfWGYp2rpr9XP4 -KK25kvrBqF6JKOIDB1zjxNJ3pUMKrl8oqccCFoCyXa4oTM2kUX0yWxHfleUjrMq4 -yimwQKiOZmV7fVLSSjSw6e/VfBd0h3gb82ygcplZkN0IclkwTY5SNKqwn/3y07V5 -drqdhkrgdJXtmQ6O5YYECQKBgATERcDToQ1USlI4sKrB/wyv1AlG8dg/IebiVJ4e -ZAyvcQmClFzq0qS+FiQUnB/WQw9TeeYrwGs1hxBHuJh16srwhLyDrbMvQP06qh8R -48F8UXXSRec22dV9MQphaROhu2qZdv1AC0WD3tqov6L33aqmEOi+xi8JgbT/PLk5 -c/c1AoGBAI1A/02ryksW6/wc7/6SP2M2rTy4m1sD/GnrTc67EHnRcVBdKO6qH2RY -nqC8YcveC2ZghgPTDsA3VGuzuBXpwY6wTyV99q6jxQJ6/xcrD9/NUG6Uwv/xfCxl -IJLeBYEqQundSSny3VtaAUK8Ul1nxpTvVRNwtcyWTo8RHAAyNPWd ------END RSA PRIVATE KEY----- diff --git a/vendor/golang.org/x/net/http2/h2demo/service.yaml b/vendor/golang.org/x/net/http2/h2demo/service.yaml deleted file mode 100644 index 8e7671e4..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: h2demo -spec: - ports: - - port: 80 - targetPort: 80 - name: http - - port: 443 - targetPort: 443 - name: https - selector: - app: h2demo - type: LoadBalancer - loadBalancerIP: 130.211.116.44 diff --git a/vendor/golang.org/x/net/http2/h2demo/tmpl.go b/vendor/golang.org/x/net/http2/h2demo/tmpl.go deleted file mode 100644 index 504d6a78..00000000 --- a/vendor/golang.org/x/net/http2/h2demo/tmpl.go +++ /dev/null @@ -1,1991 +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. - -// +build h2demo - -package main - -import "html/template" - -var pushTmpl = template.Must(template.New("serverpush").Parse(` - -<!DOCTYPE html> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<meta name="viewport" content="width=device-width, initial-scale=1"> -<meta name="theme-color" content="#375EAB"> - - <title>HTTP/2 Server Push Demo</title> - -<link type="text/css" rel="stylesheet" href="/serverpush/static/style.css?{{.CacheBust}}"> -<script> -window.initFuncs = []; -</script> - -<script> -function showtimes() { - var times = 'DOM loaded: ' + (window.performance.timing.domContentLoadedEventEnd - window.performance.timing.navigationStart) + 'ms, ' - times += 'DOM complete (all loaded): ' + (window.performance.timing.domComplete - window.performance.timing.navigationStart) + 'ms, ' - times += 'Load event fired: ' + (window.performance.timing.loadEventStart - window.performance.timing.navigationStart) + 'ms' - document.getElementById('loadtimes').innerHTML = times -} -</script> - -</head> -<body onload="showtimes()"> - -<div style="background:#fff9a4;padding:10px"> -Note: This page exists for demonstration purposes. For the actual cmd/go docs, go to <a href="golang.org/cmd/go">golang.org/cmd/go</a>. -</div> - -<div style="padding:20px"> - - -<a href="https://{{.HTTPSHost}}/serverpush">HTTP/2 with Server Push</a> | <a href="http://{{.HTTPHost}}/serverpush">HTTP only</a> -<div id="loadtimes"></div> - -</div> - -<div id='lowframe' style="position: fixed; bottom: 0; left: 0; height: 0; width: 100%; border-top: thin solid grey; background-color: white; overflow: auto;"> -... -</div><!-- #lowframe --> - -<div id="topbar" class="wide"><div class="container"> -<div class="top-heading" id="heading-wide"><a href="/">The Go Programming Language</a></div> -<div class="top-heading" id="heading-narrow"><a href="/">Go</a></div> -<a href="#" id="menu-button"><span id="menu-button-arrow">&#9661;</span></a> -<form method="GET" action="/search"> -<div id="menu"> -<a href="/doc/">Documents</a> -<a href="/pkg/">Packages</a> -<a href="/project/">The Project</a> -<a href="/help/">Help</a> -<a href="/blog/">Blog</a> - -<a id="playgroundButton" href="http://play.golang.org/" title="Show Go Playground">Play</a> - -<input type="text" id="search" name="q" class="inactive" value="Search" placeholder="Search"> -</div> -</form> - -</div></div> - - -<div id="playground" class="play"> - <div class="input"><textarea class="code" spellcheck="false">package main - -import "fmt" - -func main() { - fmt.Println("Hello, 世界") -}</textarea></div> - <div class="output"></div> - <div class="buttons"> - <a class="run" title="Run this code [shift-enter]">Run</a> - <a class="fmt" title="Format this code">Format</a> - - <a class="share" title="Share this code">Share</a> - - </div> -</div> - - -<div id="page" class="wide"> -<div class="container"> - - - <h1>Command go</h1> - - - - -<div id="nav"></div> - - -<!-- - Copyright 2009 The Go Authors. All rights reserved. - Use of this source code is governed by a BSD-style - license that can be found in the LICENSE file. ---> -<!-- - Note: Static (i.e., not template-generated) href and id - attributes start with "pkg-" to make it impossible for - them to conflict with generated attributes (some of which - correspond to Go identifiers). ---> - - <script type='text/javascript'> - document.ANALYSIS_DATA = null; - document.CALLGRAPH = null; - </script> - - - - <p> -Go is a tool for managing Go source code. -</p> -<p> -Usage: -</p> -<pre>go command [arguments] -</pre> -<p> -The commands are: -</p> -<pre>build compile packages and dependencies -clean remove object files -doc show documentation for package or symbol -env print Go environment information -bug start a bug report -fix run go tool fix on packages -fmt run gofmt on package sources -generate generate Go files by processing source -get download and install packages and dependencies -install compile and install packages and dependencies -list list packages -run compile and run Go program -test test packages -tool run specified go tool -version print Go version -vet run go tool vet on packages -</pre> -<p> -Use &#34;go help [command]&#34; for more information about a command. -</p> -<p> -Additional help topics: -</p> -<pre>c calling between Go and C -buildmode description of build modes -filetype file types -gopath GOPATH environment variable -environment environment variables -importpath import path syntax -packages description of package lists -testflag description of testing flags -testfunc description of testing functions -</pre> -<p> -Use &#34;go help [topic]&#34; for more information about that topic. -</p> -<h3 id="hdr-Compile_packages_and_dependencies">Compile packages and dependencies</h3> -<p> -Usage: -</p> -<pre>go build [-o output] [-i] [build flags] [packages] -</pre> -<p> -Build compiles the packages named by the import paths, -along with their dependencies, but it does not install the results. -</p> -<p> -If the arguments to build are a list of .go files, build treats -them as a list of source files specifying a single package. -</p> -<p> -When compiling a single main package, build writes -the resulting executable to an output file named after -the first source file (&#39;go build ed.go rx.go&#39; writes &#39;ed&#39; or &#39;ed.exe&#39;) -or the source code directory (&#39;go build unix/sam&#39; writes &#39;sam&#39; or &#39;sam.exe&#39;). -The &#39;.exe&#39; suffix is added when writing a Windows executable. -</p> -<p> -When compiling multiple packages or a single non-main package, -build compiles the packages but discards the resulting object, -serving only as a check that the packages can be built. -</p> -<p> -When compiling packages, build ignores files that end in &#39;_test.go&#39;. -</p> -<p> -The -o flag, only allowed when compiling a single package, -forces build to write the resulting executable or object -to the named output file, instead of the default behavior described -in the last two paragraphs. -</p> -<p> -The -i flag installs the packages that are dependencies of the target. -</p> -<p> -The build flags are shared by the build, clean, get, install, list, run, -and test commands: -</p> -<pre>-a - force rebuilding of packages that are already up-to-date. --n - print the commands but do not run them. --p n - the number of programs, such as build commands or - test binaries, that can be run in parallel. - The default is the number of CPUs available. --race - enable data race detection. - Supported only on linux/amd64, freebsd/amd64, darwin/amd64 and windows/amd64. --msan - enable interoperation with memory sanitizer. - Supported only on linux/amd64, - and only with Clang/LLVM as the host C compiler. --v - print the names of packages as they are compiled. --work - print the name of the temporary work directory and - do not delete it when exiting. --x - print the commands. - --asmflags &#39;flag list&#39; - arguments to pass on each go tool asm invocation. --buildmode mode - build mode to use. See &#39;go help buildmode&#39; for more. --compiler name - name of compiler to use, as in runtime.Compiler (gccgo or gc). --gccgoflags &#39;arg list&#39; - arguments to pass on each gccgo compiler/linker invocation. --gcflags &#39;arg list&#39; - arguments to pass on each go tool compile invocation. --installsuffix suffix - a suffix to use in the name of the package installation directory, - in order to keep output separate from default builds. - If using the -race flag, the install suffix is automatically set to race - or, if set explicitly, has _race appended to it. Likewise for the -msan - flag. Using a -buildmode option that requires non-default compile flags - has a similar effect. --ldflags &#39;flag list&#39; - arguments to pass on each go tool link invocation. --linkshared - link against shared libraries previously created with - -buildmode=shared. --pkgdir dir - install and load all packages from dir instead of the usual locations. - For example, when building with a non-standard configuration, - use -pkgdir to keep generated packages in a separate location. --tags &#39;tag list&#39; - a list of build tags to consider satisfied during the build. - For more information about build tags, see the description of - build constraints in the documentation for the go/build package. --toolexec &#39;cmd args&#39; - a program to use to invoke toolchain programs like vet and asm. - For example, instead of running asm, the go command will run - &#39;cmd args /path/to/asm &lt;arguments for asm&gt;&#39;. -</pre> -<p> -The list flags accept a space-separated list of strings. To embed spaces -in an element in the list, surround it with either single or double quotes. -</p> -<p> -For more about specifying packages, see &#39;go help packages&#39;. -For more about where packages and binaries are installed, -run &#39;go help gopath&#39;. -For more about calling between Go and C/C++, run &#39;go help c&#39;. -</p> -<p> -Note: Build adheres to certain conventions such as those described -by &#39;go help gopath&#39;. Not all projects can follow these conventions, -however. Installations that have their own conventions or that use -a separate software build system may choose to use lower-level -invocations such as &#39;go tool compile&#39; and &#39;go tool link&#39; to avoid -some of the overheads and design decisions of the build tool. -</p> -<p> -See also: go install, go get, go clean. -</p> -<h3 id="hdr-Remove_object_files">Remove object files</h3> -<p> -Usage: -</p> -<pre>go clean [-i] [-r] [-n] [-x] [build flags] [packages] -</pre> -<p> -Clean removes object files from package source directories. -The go command builds most objects in a temporary directory, -so go clean is mainly concerned with object files left by other -tools or by manual invocations of go build. -</p> -<p> -Specifically, clean removes the following files from each of the -source directories corresponding to the import paths: -</p> -<pre>_obj/ old object directory, left from Makefiles -_test/ old test directory, left from Makefiles -_testmain.go old gotest file, left from Makefiles -test.out old test log, left from Makefiles -build.out old test log, left from Makefiles -*.[568ao] object files, left from Makefiles - -DIR(.exe) from go build -DIR.test(.exe) from go test -c -MAINFILE(.exe) from go build MAINFILE.go -*.so from SWIG -</pre> -<p> -In the list, DIR represents the final path element of the -directory, and MAINFILE is the base name of any Go source -file in the directory that is not included when building -the package. -</p> -<p> -The -i flag causes clean to remove the corresponding installed -archive or binary (what &#39;go install&#39; would create). -</p> -<p> -The -n flag causes clean to print the remove commands it would execute, -but not run them. -</p> -<p> -The -r flag causes clean to be applied recursively to all the -dependencies of the packages named by the import paths. -</p> -<p> -The -x flag causes clean to print remove commands as it executes them. -</p> -<p> -For more about build flags, see &#39;go help build&#39;. -</p> -<p> -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<h3 id="hdr-Show_documentation_for_package_or_symbol">Show documentation for package or symbol</h3> -<p> -Usage: -</p> -<pre>go doc [-u] [-c] [package|[package.]symbol[.method]] -</pre> -<p> -Doc prints the documentation comments associated with the item identified by its -arguments (a package, const, func, type, var, or method) followed by a one-line -summary of each of the first-level items &#34;under&#34; that item (package-level -declarations for a package, methods for a type, etc.). -</p> -<p> -Doc accepts zero, one, or two arguments. -</p> -<p> -Given no arguments, that is, when run as -</p> -<pre>go doc -</pre> -<p> -it prints the package documentation for the package in the current directory. -If the package is a command (package main), the exported symbols of the package -are elided from the presentation unless the -cmd flag is provided. -</p> -<p> -When run with one argument, the argument is treated as a Go-syntax-like -representation of the item to be documented. What the argument selects depends -on what is installed in GOROOT and GOPATH, as well as the form of the argument, -which is schematically one of these: -</p> -<pre>go doc &lt;pkg&gt; -go doc &lt;sym&gt;[.&lt;method&gt;] -go doc [&lt;pkg&gt;.]&lt;sym&gt;[.&lt;method&gt;] -go doc [&lt;pkg&gt;.][&lt;sym&gt;.]&lt;method&gt; -</pre> -<p> -The first item in this list matched by the argument is the one whose documentation -is printed. (See the examples below.) However, if the argument starts with a capital -letter it is assumed to identify a symbol or method in the current directory. -</p> -<p> -For packages, the order of scanning is determined lexically in breadth-first order. -That is, the package presented is the one that matches the search and is nearest -the root and lexically first at its level of the hierarchy. The GOROOT tree is -always scanned in its entirety before GOPATH. -</p> -<p> -If there is no package specified or matched, the package in the current -directory is selected, so &#34;go doc Foo&#34; shows the documentation for symbol Foo in -the current package. -</p> -<p> -The package path must be either a qualified path or a proper suffix of a -path. The go tool&#39;s usual package mechanism does not apply: package path -elements like . and ... are not implemented by go doc. -</p> -<p> -When run with two arguments, the first must be a full package path (not just a -suffix), and the second is a symbol or symbol and method; this is similar to the -syntax accepted by godoc: -</p> -<pre>go doc &lt;pkg&gt; &lt;sym&gt;[.&lt;method&gt;] -</pre> -<p> -In all forms, when matching symbols, lower-case letters in the argument match -either case but upper-case letters match exactly. This means that there may be -multiple matches of a lower-case argument in a package if different symbols have -different cases. If this occurs, documentation for all matches is printed. -</p> -<p> -Examples: -</p> -<pre>go doc - Show documentation for current package. -go doc Foo - Show documentation for Foo in the current package. - (Foo starts with a capital letter so it cannot match - a package path.) -go doc encoding/json - Show documentation for the encoding/json package. -go doc json - Shorthand for encoding/json. -go doc json.Number (or go doc json.number) - Show documentation and method summary for json.Number. -go doc json.Number.Int64 (or go doc json.number.int64) - Show documentation for json.Number&#39;s Int64 method. -go doc cmd/doc - Show package docs for the doc command. -go doc -cmd cmd/doc - Show package docs and exported symbols within the doc command. -go doc template.new - Show documentation for html/template&#39;s New function. - (html/template is lexically before text/template) -go doc text/template.new # One argument - Show documentation for text/template&#39;s New function. -go doc text/template new # Two arguments - Show documentation for text/template&#39;s New function. - -At least in the current tree, these invocations all print the -documentation for json.Decoder&#39;s Decode method: - -go doc json.Decoder.Decode -go doc json.decoder.decode -go doc json.decode -cd go/src/encoding/json; go doc decode -</pre> -<p> -Flags: -</p> -<pre>-c - Respect case when matching symbols. --cmd - Treat a command (package main) like a regular package. - Otherwise package main&#39;s exported symbols are hidden - when showing the package&#39;s top-level documentation. --u - Show documentation for unexported as well as exported - symbols and methods. -</pre> -<h3 id="hdr-Print_Go_environment_information">Print Go environment information</h3> -<p> -Usage: -</p> -<pre>go env [var ...] -</pre> -<p> -Env prints Go environment information. -</p> -<p> -By default env prints information as a shell script -(on Windows, a batch file). If one or more variable -names is given as arguments, env prints the value of -each named variable on its own line. -</p> -<h3 id="hdr-Start_a_bug_report">Start a bug report</h3> -<p> -Usage: -</p> -<pre>go bug -</pre> -<p> -Bug opens the default browser and starts a new bug report. -The report includes useful system information. -</p> -<h3 id="hdr-Run_go_tool_fix_on_packages">Run go tool fix on packages</h3> -<p> -Usage: -</p> -<pre>go fix [packages] -</pre> -<p> -Fix runs the Go fix command on the packages named by the import paths. -</p> -<p> -For more about fix, see &#39;go doc cmd/fix&#39;. -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<p> -To run fix with specific options, run &#39;go tool fix&#39;. -</p> -<p> -See also: go fmt, go vet. -</p> -<h3 id="hdr-Run_gofmt_on_package_sources">Run gofmt on package sources</h3> -<p> -Usage: -</p> -<pre>go fmt [-n] [-x] [packages] -</pre> -<p> -Fmt runs the command &#39;gofmt -l -w&#39; on the packages named -by the import paths. It prints the names of the files that are modified. -</p> -<p> -For more about gofmt, see &#39;go doc cmd/gofmt&#39;. -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<p> -The -n flag prints commands that would be executed. -The -x flag prints commands as they are executed. -</p> -<p> -To run gofmt with specific options, run gofmt itself. -</p> -<p> -See also: go fix, go vet. -</p> -<h3 id="hdr-Generate_Go_files_by_processing_source">Generate Go files by processing source</h3> -<p> -Usage: -</p> -<pre>go generate [-run regexp] [-n] [-v] [-x] [build flags] [file.go... | packages] -</pre> -<p> -Generate runs commands described by directives within existing -files. Those commands can run any process but the intent is to -create or update Go source files. -</p> -<p> -Go generate is never run automatically by go build, go get, go test, -and so on. It must be run explicitly. -</p> -<p> -Go generate scans the file for directives, which are lines of -the form, -</p> -<pre>//go:generate command argument... -</pre> -<p> -(note: no leading spaces and no space in &#34;//go&#34;) where command -is the generator to be run, corresponding to an executable file -that can be run locally. It must either be in the shell path -(gofmt), a fully qualified path (/usr/you/bin/mytool), or a -command alias, described below. -</p> -<p> -Note that go generate does not parse the file, so lines that look -like directives in comments or multiline strings will be treated -as directives. -</p> -<p> -The arguments to the directive are space-separated tokens or -double-quoted strings passed to the generator as individual -arguments when it is run. -</p> -<p> -Quoted strings use Go syntax and are evaluated before execution; a -quoted string appears as a single argument to the generator. -</p> -<p> -Go generate sets several variables when it runs the generator: -</p> -<pre>$GOARCH - The execution architecture (arm, amd64, etc.) -$GOOS - The execution operating system (linux, windows, etc.) -$GOFILE - The base name of the file. -$GOLINE - The line number of the directive in the source file. -$GOPACKAGE - The name of the package of the file containing the directive. -$DOLLAR - A dollar sign. -</pre> -<p> -Other than variable substitution and quoted-string evaluation, no -special processing such as &#34;globbing&#34; is performed on the command -line. -</p> -<p> -As a last step before running the command, any invocations of any -environment variables with alphanumeric names, such as $GOFILE or -$HOME, are expanded throughout the command line. The syntax for -variable expansion is $NAME on all operating systems. Due to the -order of evaluation, variables are expanded even inside quoted -strings. If the variable NAME is not set, $NAME expands to the -empty string. -</p> -<p> -A directive of the form, -</p> -<pre>//go:generate -command xxx args... -</pre> -<p> -specifies, for the remainder of this source file only, that the -string xxx represents the command identified by the arguments. This -can be used to create aliases or to handle multiword generators. -For example, -</p> -<pre>//go:generate -command foo go tool foo -</pre> -<p> -specifies that the command &#34;foo&#34; represents the generator -&#34;go tool foo&#34;. -</p> -<p> -Generate processes packages in the order given on the command line, -one at a time. If the command line lists .go files, they are treated -as a single package. Within a package, generate processes the -source files in a package in file name order, one at a time. Within -a source file, generate runs generators in the order they appear -in the file, one at a time. -</p> -<p> -If any generator returns an error exit status, &#34;go generate&#34; skips -all further processing for that package. -</p> -<p> -The generator is run in the package&#39;s source directory. -</p> -<p> -Go generate accepts one specific flag: -</p> -<pre>-run=&#34;&#34; - if non-empty, specifies a regular expression to select - directives whose full original source text (excluding - any trailing spaces and final newline) matches the - expression. -</pre> -<p> -It also accepts the standard build flags including -v, -n, and -x. -The -v flag prints the names of packages and files as they are -processed. -The -n flag prints commands that would be executed. -The -x flag prints commands as they are executed. -</p> -<p> -For more about build flags, see &#39;go help build&#39;. -</p> -<p> -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<h3 id="hdr-Download_and_install_packages_and_dependencies">Download and install packages and dependencies</h3> -<p> -Usage: -</p> -<pre>go get [-d] [-f] [-fix] [-insecure] [-t] [-u] [build flags] [packages] -</pre> -<p> -Get downloads the packages named by the import paths, along with their -dependencies. It then installs the named packages, like &#39;go install&#39;. -</p> -<p> -The -d flag instructs get to stop after downloading the packages; that is, -it instructs get not to install the packages. -</p> -<p> -The -f flag, valid only when -u is set, forces get -u not to verify that -each package has been checked out from the source control repository -implied by its import path. This can be useful if the source is a local fork -of the original. -</p> -<p> -The -fix flag instructs get to run the fix tool on the downloaded packages -before resolving dependencies or building the code. -</p> -<p> -The -insecure flag permits fetching from repositories and resolving -custom domains using insecure schemes such as HTTP. Use with caution. -</p> -<p> -The -t flag instructs get to also download the packages required to build -the tests for the specified packages. -</p> -<p> -The -u flag instructs get to use the network to update the named packages -and their dependencies. By default, get uses the network to check out -missing packages but does not use it to look for updates to existing packages. -</p> -<p> -The -v flag enables verbose progress and debug output. -</p> -<p> -Get also accepts build flags to control the installation. See &#39;go help build&#39;. -</p> -<p> -When checking out a new package, get creates the target directory -GOPATH/src/&lt;import-path&gt;. If the GOPATH contains multiple entries, -get uses the first one. For more details see: &#39;go help gopath&#39;. -</p> -<p> -When checking out or updating a package, get looks for a branch or tag -that matches the locally installed version of Go. The most important -rule is that if the local installation is running version &#34;go1&#34;, get -searches for a branch or tag named &#34;go1&#34;. If no such version exists it -retrieves the most recent version of the package. -</p> -<p> -When go get checks out or updates a Git repository, -it also updates any git submodules referenced by the repository. -</p> -<p> -Get never checks out or updates code stored in vendor directories. -</p> -<p> -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<p> -For more about how &#39;go get&#39; finds source code to -download, see &#39;go help importpath&#39;. -</p> -<p> -See also: go build, go install, go clean. -</p> -<h3 id="hdr-Compile_and_install_packages_and_dependencies">Compile and install packages and dependencies</h3> -<p> -Usage: -</p> -<pre>go install [build flags] [packages] -</pre> -<p> -Install compiles and installs the packages named by the import paths, -along with their dependencies. -</p> -<p> -For more about the build flags, see &#39;go help build&#39;. -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<p> -See also: go build, go get, go clean. -</p> -<h3 id="hdr-List_packages">List packages</h3> -<p> -Usage: -</p> -<pre>go list [-e] [-f format] [-json] [build flags] [packages] -</pre> -<p> -List lists the packages named by the import paths, one per line. -</p> -<p> -The default output shows the package import path: -</p> -<pre>bytes -encoding/json -github.com/gorilla/mux -golang.org/x/net/html -</pre> -<p> -The -f flag specifies an alternate format for the list, using the -syntax of package template. The default output is equivalent to -f -&#39;&#39;. The struct being passed to the template is: -</p> -<pre>type Package struct { - Dir string // directory containing package sources - ImportPath string // import path of package in dir - ImportComment string // path in import comment on package statement - Name string // package name - Doc string // package documentation string - Target string // install path - Shlib string // the shared library that contains this package (only set when -linkshared) - Goroot bool // is this package in the Go root? - Standard bool // is this package part of the standard Go library? - Stale bool // would &#39;go install&#39; do anything for this package? - StaleReason string // explanation for Stale==true - Root string // Go root or Go path dir containing this package - ConflictDir string // this directory shadows Dir in $GOPATH - BinaryOnly bool // binary-only package: cannot be recompiled from sources - - // Source files - GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles) - CgoFiles []string // .go sources files that import &#34;C&#34; - IgnoredGoFiles []string // .go sources ignored due to build constraints - CFiles []string // .c source files - CXXFiles []string // .cc, .cxx and .cpp source files - MFiles []string // .m source files - HFiles []string // .h, .hh, .hpp and .hxx source files - FFiles []string // .f, .F, .for and .f90 Fortran source files - SFiles []string // .s source files - SwigFiles []string // .swig files - SwigCXXFiles []string // .swigcxx files - SysoFiles []string // .syso object files to add to archive - TestGoFiles []string // _test.go files in package - XTestGoFiles []string // _test.go files outside package - - // Cgo directives - CgoCFLAGS []string // cgo: flags for C compiler - CgoCPPFLAGS []string // cgo: flags for C preprocessor - CgoCXXFLAGS []string // cgo: flags for C++ compiler - CgoFFLAGS []string // cgo: flags for Fortran compiler - CgoLDFLAGS []string // cgo: flags for linker - CgoPkgConfig []string // cgo: pkg-config names - - // Dependency information - Imports []string // import paths used by this package - Deps []string // all (recursively) imported dependencies - TestImports []string // imports from TestGoFiles - XTestImports []string // imports from XTestGoFiles - - // Error information - Incomplete bool // this package or a dependency has an error - Error *PackageError // error loading package - DepsErrors []*PackageError // errors loading dependencies -} -</pre> -<p> -Packages stored in vendor directories report an ImportPath that includes the -path to the vendor directory (for example, &#34;d/vendor/p&#34; instead of &#34;p&#34;), -so that the ImportPath uniquely identifies a given copy of a package. -The Imports, Deps, TestImports, and XTestImports lists also contain these -expanded imports paths. See golang.org/s/go15vendor for more about vendoring. -</p> -<p> -The error information, if any, is -</p> -<pre>type PackageError struct { - ImportStack []string // shortest path from package named on command line to this one - Pos string // position of error (if present, file:line:col) - Err string // the error itself -} -</pre> -<p> -The template function &#34;join&#34; calls strings.Join. -</p> -<p> -The template function &#34;context&#34; returns the build context, defined as: -</p> -<pre>type Context struct { - GOARCH string // target architecture - GOOS string // target operating system - GOROOT string // Go root - GOPATH string // Go path - CgoEnabled bool // whether cgo can be used - UseAllFiles bool // use files regardless of +build lines, file names - Compiler string // compiler to assume when computing target paths - BuildTags []string // build constraints to match in +build lines - ReleaseTags []string // releases the current release is compatible with - InstallSuffix string // suffix to use in the name of the install dir -} -</pre> -<p> -For more information about the meaning of these fields see the documentation -for the go/build package&#39;s Context type. -</p> -<p> -The -json flag causes the package data to be printed in JSON format -instead of using the template format. -</p> -<p> -The -e flag changes the handling of erroneous packages, those that -cannot be found or are malformed. By default, the list command -prints an error to standard error for each erroneous package and -omits the packages from consideration during the usual printing. -With the -e flag, the list command never prints errors to standard -error and instead processes the erroneous packages with the usual -printing. Erroneous packages will have a non-empty ImportPath and -a non-nil Error field; other information may or may not be missing -(zeroed). -</p> -<p> -For more about build flags, see &#39;go help build&#39;. -</p> -<p> -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<h3 id="hdr-Compile_and_run_Go_program">Compile and run Go program</h3> -<p> -Usage: -</p> -<pre>go run [build flags] [-exec xprog] gofiles... [arguments...] -</pre> -<p> -Run compiles and runs the main package comprising the named Go source files. -A Go source file is defined to be a file ending in a literal &#34;.go&#34; suffix. -</p> -<p> -By default, &#39;go run&#39; runs the compiled binary directly: &#39;a.out arguments...&#39;. -If the -exec flag is given, &#39;go run&#39; invokes the binary using xprog: -</p> -<pre>&#39;xprog a.out arguments...&#39;. -</pre> -<p> -If the -exec flag is not given, GOOS or GOARCH is different from the system -default, and a program named go_$GOOS_$GOARCH_exec can be found -on the current search path, &#39;go run&#39; invokes the binary using that program, -for example &#39;go_nacl_386_exec a.out arguments...&#39;. This allows execution of -cross-compiled programs when a simulator or other execution method is -available. -</p> -<p> -For more about build flags, see &#39;go help build&#39;. -</p> -<p> -See also: go build. -</p> -<h3 id="hdr-Test_packages">Test packages</h3> -<p> -Usage: -</p> -<pre>go test [build/test flags] [packages] [build/test flags &amp; test binary flags] -</pre> -<p> -&#39;Go test&#39; automates testing the packages named by the import paths. -It prints a summary of the test results in the format: -</p> -<pre>ok archive/tar 0.011s -FAIL archive/zip 0.022s -ok compress/gzip 0.033s -... -</pre> -<p> -followed by detailed output for each failed package. -</p> -<p> -&#39;Go test&#39; recompiles each package along with any files with names matching -the file pattern &#34;*_test.go&#34;. -Files whose names begin with &#34;_&#34; (including &#34;_test.go&#34;) or &#34;.&#34; are ignored. -These additional files can contain test functions, benchmark functions, and -example functions. See &#39;go help testfunc&#39; for more. -Each listed package causes the execution of a separate test binary. -</p> -<p> -Test files that declare a package with the suffix &#34;_test&#34; will be compiled as a -separate package, and then linked and run with the main test binary. -</p> -<p> -The go tool will ignore a directory named &#34;testdata&#34;, making it available -to hold ancillary data needed by the tests. -</p> -<p> -By default, go test needs no arguments. It compiles and tests the package -with source in the current directory, including tests, and runs the tests. -</p> -<p> -The package is built in a temporary directory so it does not interfere with the -non-test installation. -</p> -<p> -In addition to the build flags, the flags handled by &#39;go test&#39; itself are: -</p> -<pre>-args - Pass the remainder of the command line (everything after -args) - to the test binary, uninterpreted and unchanged. - Because this flag consumes the remainder of the command line, - the package list (if present) must appear before this flag. - --c - Compile the test binary to pkg.test but do not run it - (where pkg is the last element of the package&#39;s import path). - The file name can be changed with the -o flag. - --exec xprog - Run the test binary using xprog. The behavior is the same as - in &#39;go run&#39;. See &#39;go help run&#39; for details. - --i - Install packages that are dependencies of the test. - Do not run the test. - --o file - Compile the test binary to the named file. - The test still runs (unless -c or -i is specified). -</pre> -<p> -The test binary also accepts flags that control execution of the test; these -flags are also accessible by &#39;go test&#39;. See &#39;go help testflag&#39; for details. -</p> -<p> -For more about build flags, see &#39;go help build&#39;. -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<p> -See also: go build, go vet. -</p> -<h3 id="hdr-Run_specified_go_tool">Run specified go tool</h3> -<p> -Usage: -</p> -<pre>go tool [-n] command [args...] -</pre> -<p> -Tool runs the go tool command identified by the arguments. -With no arguments it prints the list of known tools. -</p> -<p> -The -n flag causes tool to print the command that would be -executed but not execute it. -</p> -<p> -For more about each tool command, see &#39;go tool command -h&#39;. -</p> -<h3 id="hdr-Print_Go_version">Print Go version</h3> -<p> -Usage: -</p> -<pre>go version -</pre> -<p> -Version prints the Go version, as reported by runtime.Version. -</p> -<h3 id="hdr-Run_go_tool_vet_on_packages">Run go tool vet on packages</h3> -<p> -Usage: -</p> -<pre>go vet [-n] [-x] [build flags] [packages] -</pre> -<p> -Vet runs the Go vet command on the packages named by the import paths. -</p> -<p> -For more about vet, see &#39;go doc cmd/vet&#39;. -For more about specifying packages, see &#39;go help packages&#39;. -</p> -<p> -To run the vet tool with specific options, run &#39;go tool vet&#39;. -</p> -<p> -The -n flag prints commands that would be executed. -The -x flag prints commands as they are executed. -</p> -<p> -For more about build flags, see &#39;go help build&#39;. -</p> -<p> -See also: go fmt, go fix. -</p> -<h3 id="hdr-Calling_between_Go_and_C">Calling between Go and C</h3> -<p> -There are two different ways to call between Go and C/C++ code. -</p> -<p> -The first is the cgo tool, which is part of the Go distribution. For -information on how to use it see the cgo documentation (go doc cmd/cgo). -</p> -<p> -The second is the SWIG program, which is a general tool for -interfacing between languages. For information on SWIG see -<a href="http://swig.org/">http://swig.org/</a>. When running go build, any file with a .swig -extension will be passed to SWIG. Any file with a .swigcxx extension -will be passed to SWIG with the -c++ option. -</p> -<p> -When either cgo or SWIG is used, go build will pass any .c, .m, .s, -or .S files to the C compiler, and any .cc, .cpp, .cxx files to the C++ -compiler. The CC or CXX environment variables may be set to determine -the C or C++ compiler, respectively, to use. -</p> -<h3 id="hdr-Description_of_build_modes">Description of build modes</h3> -<p> -The &#39;go build&#39; and &#39;go install&#39; commands take a -buildmode argument which -indicates which kind of object file is to be built. Currently supported values -are: -</p> -<pre>-buildmode=archive - Build the listed non-main packages into .a files. Packages named - main are ignored. - --buildmode=c-archive - Build the listed main package, plus all packages it imports, - into a C archive file. The only callable symbols will be those - functions exported using a cgo //export comment. Requires - exactly one main package to be listed. - --buildmode=c-shared - Build the listed main packages, plus all packages that they - import, into C shared libraries. The only callable symbols will - be those functions exported using a cgo //export comment. - Non-main packages are ignored. - --buildmode=default - Listed main packages are built into executables and listed - non-main packages are built into .a files (the default - behavior). - --buildmode=shared - Combine all the listed non-main packages into a single shared - library that will be used when building with the -linkshared - option. Packages named main are ignored. - --buildmode=exe - Build the listed main packages and everything they import into - executables. Packages not named main are ignored. - --buildmode=pie - Build the listed main packages and everything they import into - position independent executables (PIE). Packages not named - main are ignored. - --buildmode=plugin - Build the listed main packages, plus all packages that they - import, into a Go plugin. Packages not named main are ignored. -</pre> -<h3 id="hdr-File_types">File types</h3> -<p> -The go command examines the contents of a restricted set of files -in each directory. It identifies which files to examine based on -the extension of the file name. These extensions are: -</p> -<pre>.go - Go source files. -.c, .h - C source files. - If the package uses cgo or SWIG, these will be compiled with the - OS-native compiler (typically gcc); otherwise they will - trigger an error. -.cc, .cpp, .cxx, .hh, .hpp, .hxx - C++ source files. Only useful with cgo or SWIG, and always - compiled with the OS-native compiler. -.m - Objective-C source files. Only useful with cgo, and always - compiled with the OS-native compiler. -.s, .S - Assembler source files. - If the package uses cgo or SWIG, these will be assembled with the - OS-native assembler (typically gcc (sic)); otherwise they - will be assembled with the Go assembler. -.swig, .swigcxx - SWIG definition files. -.syso - System object files. -</pre> -<p> -Files of each of these types except .syso may contain build -constraints, but the go command stops scanning for build constraints -at the first item in the file that is not a blank line or //-style -line comment. See the go/build package documentation for -more details. -</p> -<p> -Non-test Go source files can also include a //go:binary-only-package -comment, indicating that the package sources are included -for documentation only and must not be used to build the -package binary. This enables distribution of Go packages in -their compiled form alone. See the go/build package documentation -for more details. -</p> -<h3 id="hdr-GOPATH_environment_variable">GOPATH environment variable</h3> -<p> -The Go path is used to resolve import statements. -It is implemented by and documented in the go/build package. -</p> -<p> -The GOPATH environment variable lists places to look for Go code. -On Unix, the value is a colon-separated string. -On Windows, the value is a semicolon-separated string. -On Plan 9, the value is a list. -</p> -<p> -If the environment variable is unset, GOPATH defaults -to a subdirectory named &#34;go&#34; in the user&#39;s home directory -($HOME/go on Unix, %USERPROFILE%\go on Windows), -unless that directory holds a Go distribution. -Run &#34;go env GOPATH&#34; to see the current GOPATH. -</p> -<p> -See <a href="https://golang.org/wiki/SettingGOPATH">https://golang.org/wiki/SettingGOPATH</a> to set a custom GOPATH. -</p> -<p> -Each directory listed in GOPATH must have a prescribed structure: -</p> -<p> -The src directory holds source code. The path below src -determines the import path or executable name. -</p> -<p> -The pkg directory holds installed package objects. -As in the Go tree, each target operating system and -architecture pair has its own subdirectory of pkg -(pkg/GOOS_GOARCH). -</p> -<p> -If DIR is a directory listed in the GOPATH, a package with -source in DIR/src/foo/bar can be imported as &#34;foo/bar&#34; and -has its compiled form installed to &#34;DIR/pkg/GOOS_GOARCH/foo/bar.a&#34;. -</p> -<p> -The bin directory holds compiled commands. -Each command is named for its source directory, but only -the final element, not the entire path. That is, the -command with source in DIR/src/foo/quux is installed into -DIR/bin/quux, not DIR/bin/foo/quux. The &#34;foo/&#34; prefix is stripped -so that you can add DIR/bin to your PATH to get at the -installed commands. If the GOBIN environment variable is -set, commands are installed to the directory it names instead -of DIR/bin. GOBIN must be an absolute path. -</p> -<p> -Here&#39;s an example directory layout: -</p> -<pre>GOPATH=/home/user/go - -/home/user/go/ - src/ - foo/ - bar/ (go code in package bar) - x.go - quux/ (go code in package main) - y.go - bin/ - quux (installed command) - pkg/ - linux_amd64/ - foo/ - bar.a (installed package object) -</pre> -<p> -Go searches each directory listed in GOPATH to find source code, -but new packages are always downloaded into the first directory -in the list. -</p> -<p> -See <a href="https://golang.org/doc/code.html">https://golang.org/doc/code.html</a> for an example. -</p> -<h3 id="hdr-Internal_Directories">Internal Directories</h3> -<p> -Code in or below a directory named &#34;internal&#34; is importable only -by code in the directory tree rooted at the parent of &#34;internal&#34;. -Here&#39;s an extended version of the directory layout above: -</p> -<pre>/home/user/go/ - src/ - crash/ - bang/ (go code in package bang) - b.go - foo/ (go code in package foo) - f.go - bar/ (go code in package bar) - x.go - internal/ - baz/ (go code in package baz) - z.go - quux/ (go code in package main) - y.go -</pre> -<p> -The code in z.go is imported as &#34;foo/internal/baz&#34;, but that -import statement can only appear in source files in the subtree -rooted at foo. The source files foo/f.go, foo/bar/x.go, and -foo/quux/y.go can all import &#34;foo/internal/baz&#34;, but the source file -crash/bang/b.go cannot. -</p> -<p> -See <a href="https://golang.org/s/go14internal">https://golang.org/s/go14internal</a> for details. -</p> -<h3 id="hdr-Vendor_Directories">Vendor Directories</h3> -<p> -Go 1.6 includes support for using local copies of external dependencies -to satisfy imports of those dependencies, often referred to as vendoring. -</p> -<p> -Code below a directory named &#34;vendor&#34; is importable only -by code in the directory tree rooted at the parent of &#34;vendor&#34;, -and only using an import path that omits the prefix up to and -including the vendor element. -</p> -<p> -Here&#39;s the example from the previous section, -but with the &#34;internal&#34; directory renamed to &#34;vendor&#34; -and a new foo/vendor/crash/bang directory added: -</p> -<pre>/home/user/go/ - src/ - crash/ - bang/ (go code in package bang) - b.go - foo/ (go code in package foo) - f.go - bar/ (go code in package bar) - x.go - vendor/ - crash/ - bang/ (go code in package bang) - b.go - baz/ (go code in package baz) - z.go - quux/ (go code in package main) - y.go -</pre> -<p> -The same visibility rules apply as for internal, but the code -in z.go is imported as &#34;baz&#34;, not as &#34;foo/vendor/baz&#34;. -</p> -<p> -Code in vendor directories deeper in the source tree shadows -code in higher directories. Within the subtree rooted at foo, an import -of &#34;crash/bang&#34; resolves to &#34;foo/vendor/crash/bang&#34;, not the -top-level &#34;crash/bang&#34;. -</p> -<p> -Code in vendor directories is not subject to import path -checking (see &#39;go help importpath&#39;). -</p> -<p> -When &#39;go get&#39; checks out or updates a git repository, it now also -updates submodules. -</p> -<p> -Vendor directories do not affect the placement of new repositories -being checked out for the first time by &#39;go get&#39;: those are always -placed in the main GOPATH, never in a vendor subtree. -</p> -<p> -See <a href="https://golang.org/s/go15vendor">https://golang.org/s/go15vendor</a> for details. -</p> -<h3 id="hdr-Environment_variables">Environment variables</h3> -<p> -The go command, and the tools it invokes, examine a few different -environment variables. For many of these, you can see the default -value of on your system by running &#39;go env NAME&#39;, where NAME is the -name of the variable. -</p> -<p> -General-purpose environment variables: -</p> -<pre>GCCGO - The gccgo command to run for &#39;go build -compiler=gccgo&#39;. -GOARCH - The architecture, or processor, for which to compile code. - Examples are amd64, 386, arm, ppc64. -GOBIN - The directory where &#39;go install&#39; will install a command. -GOOS - The operating system for which to compile code. - Examples are linux, darwin, windows, netbsd. -GOPATH - For more details see: &#39;go help gopath&#39;. -GORACE - Options for the race detector. - See <a href="https://golang.org/doc/articles/race_detector.html">https://golang.org/doc/articles/race_detector.html</a>. -GOROOT - The root of the go tree. -</pre> -<p> -Environment variables for use with cgo: -</p> -<pre>CC - The command to use to compile C code. -CGO_ENABLED - Whether the cgo command is supported. Either 0 or 1. -CGO_CFLAGS - Flags that cgo will pass to the compiler when compiling - C code. -CGO_CPPFLAGS - Flags that cgo will pass to the compiler when compiling - C or C++ code. -CGO_CXXFLAGS - Flags that cgo will pass to the compiler when compiling - C++ code. -CGO_FFLAGS - Flags that cgo will pass to the compiler when compiling - Fortran code. -CGO_LDFLAGS - Flags that cgo will pass to the compiler when linking. -CXX - The command to use to compile C++ code. -PKG_CONFIG - Path to pkg-config tool. -</pre> -<p> -Architecture-specific environment variables: -</p> -<pre>GOARM - For GOARCH=arm, the ARM architecture for which to compile. - Valid values are 5, 6, 7. -GO386 - For GOARCH=386, the floating point instruction set. - Valid values are 387, sse2. -</pre> -<p> -Special-purpose environment variables: -</p> -<pre>GOROOT_FINAL - The root of the installed Go tree, when it is - installed in a location other than where it is built. - File names in stack traces are rewritten from GOROOT to - GOROOT_FINAL. -GO_EXTLINK_ENABLED - Whether the linker should use external linking mode - when using -linkmode=auto with code that uses cgo. - Set to 0 to disable external linking mode, 1 to enable it. -GIT_ALLOW_PROTOCOL - Defined by Git. A colon-separated list of schemes that are allowed to be used - with git fetch/clone. If set, any scheme not explicitly mentioned will be - considered insecure by &#39;go get&#39;. -</pre> -<h3 id="hdr-Import_path_syntax">Import path syntax</h3> -<p> -An import path (see &#39;go help packages&#39;) denotes a package stored in the local -file system. In general, an import path denotes either a standard package (such -as &#34;unicode/utf8&#34;) or a package found in one of the work spaces (For more -details see: &#39;go help gopath&#39;). -</p> -<h3 id="hdr-Relative_import_paths">Relative import paths</h3> -<p> -An import path beginning with ./ or ../ is called a relative path. -The toolchain supports relative import paths as a shortcut in two ways. -</p> -<p> -First, a relative path can be used as a shorthand on the command line. -If you are working in the directory containing the code imported as -&#34;unicode&#34; and want to run the tests for &#34;unicode/utf8&#34;, you can type -&#34;go test ./utf8&#34; instead of needing to specify the full path. -Similarly, in the reverse situation, &#34;go test ..&#34; will test &#34;unicode&#34; from -the &#34;unicode/utf8&#34; directory. Relative patterns are also allowed, like -&#34;go test ./...&#34; to test all subdirectories. See &#39;go help packages&#39; for details -on the pattern syntax. -</p> -<p> -Second, if you are compiling a Go program not in a work space, -you can use a relative path in an import statement in that program -to refer to nearby code also not in a work space. -This makes it easy to experiment with small multipackage programs -outside of the usual work spaces, but such programs cannot be -installed with &#34;go install&#34; (there is no work space in which to install them), -so they are rebuilt from scratch each time they are built. -To avoid ambiguity, Go programs cannot use relative import paths -within a work space. -</p> -<h3 id="hdr-Remote_import_paths">Remote import paths</h3> -<p> -Certain import paths also -describe how to obtain the source code for the package using -a revision control system. -</p> -<p> -A few common code hosting sites have special syntax: -</p> -<pre>Bitbucket (Git, Mercurial) - - import &#34;bitbucket.org/user/project&#34; - import &#34;bitbucket.org/user/project/sub/directory&#34; - -GitHub (Git) - - import &#34;github.com/user/project&#34; - import &#34;github.com/user/project/sub/directory&#34; - -Launchpad (Bazaar) - - import &#34;launchpad.net/project&#34; - import &#34;launchpad.net/project/series&#34; - import &#34;launchpad.net/project/series/sub/directory&#34; - - import &#34;launchpad.net/~user/project/branch&#34; - import &#34;launchpad.net/~user/project/branch/sub/directory&#34; - -IBM DevOps Services (Git) - - import &#34;hub.jazz.net/git/user/project&#34; - import &#34;hub.jazz.net/git/user/project/sub/directory&#34; -</pre> -<p> -For code hosted on other servers, import paths may either be qualified -with the version control type, or the go tool can dynamically fetch -the import path over https/http and discover where the code resides -from a &lt;meta&gt; tag in the HTML. -</p> -<p> -To declare the code location, an import path of the form -</p> -<pre>repository.vcs/path -</pre> -<p> -specifies the given repository, with or without the .vcs suffix, -using the named version control system, and then the path inside -that repository. The supported version control systems are: -</p> -<pre>Bazaar .bzr -Git .git -Mercurial .hg -Subversion .svn -</pre> -<p> -For example, -</p> -<pre>import &#34;example.org/user/foo.hg&#34; -</pre> -<p> -denotes the root directory of the Mercurial repository at -example.org/user/foo or foo.hg, and -</p> -<pre>import &#34;example.org/repo.git/foo/bar&#34; -</pre> -<p> -denotes the foo/bar directory of the Git repository at -example.org/repo or repo.git. -</p> -<p> -When a version control system supports multiple protocols, -each is tried in turn when downloading. For example, a Git -download tries https://, then git+ssh://. -</p> -<p> -By default, downloads are restricted to known secure protocols -(e.g. https, ssh). To override this setting for Git downloads, the -GIT_ALLOW_PROTOCOL environment variable can be set (For more details see: -&#39;go help environment&#39;). -</p> -<p> -If the import path is not a known code hosting site and also lacks a -version control qualifier, the go tool attempts to fetch the import -over https/http and looks for a &lt;meta&gt; tag in the document&#39;s HTML -&lt;head&gt;. -</p> -<p> -The meta tag has the form: -</p> -<pre>&lt;meta name=&#34;go-import&#34; content=&#34;import-prefix vcs repo-root&#34;&gt; -</pre> -<p> -The import-prefix is the import path corresponding to the repository -root. It must be a prefix or an exact match of the package being -fetched with &#34;go get&#34;. If it&#39;s not an exact match, another http -request is made at the prefix to verify the &lt;meta&gt; tags match. -</p> -<p> -The meta tag should appear as early in the file as possible. -In particular, it should appear before any raw JavaScript or CSS, -to avoid confusing the go command&#39;s restricted parser. -</p> -<p> -The vcs is one of &#34;git&#34;, &#34;hg&#34;, &#34;svn&#34;, etc, -</p> -<p> -The repo-root is the root of the version control system -containing a scheme and not containing a .vcs qualifier. -</p> -<p> -For example, -</p> -<pre>import &#34;example.org/pkg/foo&#34; -</pre> -<p> -will result in the following requests: -</p> -<pre><a href="https://example.org/pkg/foo?go-get=1">https://example.org/pkg/foo?go-get=1</a> (preferred) -<a href="http://example.org/pkg/foo?go-get=1">http://example.org/pkg/foo?go-get=1</a> (fallback, only with -insecure) -</pre> -<p> -If that page contains the meta tag -</p> -<pre>&lt;meta name=&#34;go-import&#34; content=&#34;example.org git <a href="https://code.org/r/p/exproj">https://code.org/r/p/exproj</a>&#34;&gt; -</pre> -<p> -the go tool will verify that <a href="https://example.org/?go-get=1">https://example.org/?go-get=1</a> contains the -same meta tag and then git clone <a href="https://code.org/r/p/exproj">https://code.org/r/p/exproj</a> into -GOPATH/src/example.org. -</p> -<p> -New downloaded packages are written to the first directory listed in the GOPATH -environment variable (For more details see: &#39;go help gopath&#39;). -</p> -<p> -The go command attempts to download the version of the -package appropriate for the Go release being used. -Run &#39;go help get&#39; for more. -</p> -<h3 id="hdr-Import_path_checking">Import path checking</h3> -<p> -When the custom import path feature described above redirects to a -known code hosting site, each of the resulting packages has two possible -import paths, using the custom domain or the known hosting site. -</p> -<p> -A package statement is said to have an &#34;import comment&#34; if it is immediately -followed (before the next newline) by a comment of one of these two forms: -</p> -<pre>package math // import &#34;path&#34; -package math /* import &#34;path&#34; */ -</pre> -<p> -The go command will refuse to install a package with an import comment -unless it is being referred to by that import path. In this way, import comments -let package authors make sure the custom import path is used and not a -direct path to the underlying code hosting site. -</p> -<p> -Import path checking is disabled for code found within vendor trees. -This makes it possible to copy code into alternate locations in vendor trees -without needing to update import comments. -</p> -<p> -See <a href="https://golang.org/s/go14customimport">https://golang.org/s/go14customimport</a> for details. -</p> -<h3 id="hdr-Description_of_package_lists">Description of package lists</h3> -<p> -Many commands apply to a set of packages: -</p> -<pre>go action [packages] -</pre> -<p> -Usually, [packages] is a list of import paths. -</p> -<p> -An import path that is a rooted path or that begins with -a . or .. element is interpreted as a file system path and -denotes the package in that directory. -</p> -<p> -Otherwise, the import path P denotes the package found in -the directory DIR/src/P for some DIR listed in the GOPATH -environment variable (For more details see: &#39;go help gopath&#39;). -</p> -<p> -If no import paths are given, the action applies to the -package in the current directory. -</p> -<p> -There are four reserved names for paths that should not be used -for packages to be built with the go tool: -</p> -<p> -- &#34;main&#34; denotes the top-level package in a stand-alone executable. -</p> -<p> -- &#34;all&#34; expands to all package directories found in all the GOPATH -trees. For example, &#39;go list all&#39; lists all the packages on the local -system. -</p> -<p> -- &#34;std&#34; is like all but expands to just the packages in the standard -Go library. -</p> -<p> -- &#34;cmd&#34; expands to the Go repository&#39;s commands and their -internal libraries. -</p> -<p> -Import paths beginning with &#34;cmd/&#34; only match source code in -the Go repository. -</p> -<p> -An import path is a pattern if it includes one or more &#34;...&#34; wildcards, -each of which can match any string, including the empty string and -strings containing slashes. Such a pattern expands to all package -directories found in the GOPATH trees with names matching the -patterns. As a special case, x/... matches x as well as x&#39;s subdirectories. -For example, net/... expands to net and packages in its subdirectories. -</p> -<p> -An import path can also name a package to be downloaded from -a remote repository. Run &#39;go help importpath&#39; for details. -</p> -<p> -Every package in a program must have a unique import path. -By convention, this is arranged by starting each path with a -unique prefix that belongs to you. For example, paths used -internally at Google all begin with &#39;google&#39;, and paths -denoting remote repositories begin with the path to the code, -such as &#39;github.com/user/repo&#39;. -</p> -<p> -Packages in a program need not have unique package names, -but there are two reserved package names with special meaning. -The name main indicates a command, not a library. -Commands are built into binaries and cannot be imported. -The name documentation indicates documentation for -a non-Go program in the directory. Files in package documentation -are ignored by the go command. -</p> -<p> -As a special case, if the package list is a list of .go files from a -single directory, the command is applied to a single synthesized -package made up of exactly those files, ignoring any build constraints -in those files and ignoring any other files in the directory. -</p> -<p> -Directory and file names that begin with &#34;.&#34; or &#34;_&#34; are ignored -by the go tool, as are directories named &#34;testdata&#34;. -</p> -<h3 id="hdr-Description_of_testing_flags">Description of testing flags</h3> -<p> -The &#39;go test&#39; command takes both flags that apply to &#39;go test&#39; itself -and flags that apply to the resulting test binary. -</p> -<p> -Several of the flags control profiling and write an execution profile -suitable for &#34;go tool pprof&#34;; run &#34;go tool pprof -h&#34; for more -information. The --alloc_space, --alloc_objects, and --show_bytes -options of pprof control how the information is presented. -</p> -<p> -The following flags are recognized by the &#39;go test&#39; command and -control the execution of any test: -</p> -<pre>-bench regexp - Run (sub)benchmarks matching a regular expression. - The given regular expression is split into smaller ones by - top-level &#39;/&#39;, where each must match the corresponding part of a - benchmark&#39;s identifier. - By default, no benchmarks run. To run all benchmarks, - use &#39;-bench .&#39; or &#39;-bench=.&#39;. - --benchtime t - Run enough iterations of each benchmark to take t, specified - as a time.Duration (for example, -benchtime 1h30s). - The default is 1 second (1s). - --count n - Run each test and benchmark n times (default 1). - If -cpu is set, run n times for each GOMAXPROCS value. - Examples are always run once. - --cover - Enable coverage analysis. - --covermode set,count,atomic - Set the mode for coverage analysis for the package[s] - being tested. The default is &#34;set&#34; unless -race is enabled, - in which case it is &#34;atomic&#34;. - The values: - set: bool: does this statement run? - count: int: how many times does this statement run? - atomic: int: count, but correct in multithreaded tests; - significantly more expensive. - Sets -cover. - --coverpkg pkg1,pkg2,pkg3 - Apply coverage analysis in each test to the given list of packages. - The default is for each test to analyze only the package being tested. - Packages are specified as import paths. - Sets -cover. - --cpu 1,2,4 - Specify a list of GOMAXPROCS values for which the tests or - benchmarks should be executed. The default is the current value - of GOMAXPROCS. - --parallel n - Allow parallel execution of test functions that call t.Parallel. - The value of this flag is the maximum number of tests to run - simultaneously; by default, it is set to the value of GOMAXPROCS. - Note that -parallel only applies within a single test binary. - The &#39;go test&#39; command may run tests for different packages - in parallel as well, according to the setting of the -p flag - (see &#39;go help build&#39;). - --run regexp - Run only those tests and examples matching the regular expression. - For tests the regular expression is split into smaller ones by - top-level &#39;/&#39;, where each must match the corresponding part of a - test&#39;s identifier. - --short - Tell long-running tests to shorten their run time. - It is off by default but set during all.bash so that installing - the Go tree can run a sanity check but not spend time running - exhaustive tests. - --timeout t - If a test runs longer than t, panic. - The default is 10 minutes (10m). - --v - Verbose output: log all tests as they are run. Also print all - text from Log and Logf calls even if the test succeeds. -</pre> -<p> -The following flags are also recognized by &#39;go test&#39; and can be used to -profile the tests during execution: -</p> -<pre>-benchmem - Print memory allocation statistics for benchmarks. - --blockprofile block.out - Write a goroutine blocking profile to the specified file - when all tests are complete. - Writes test binary as -c would. - --blockprofilerate n - Control the detail provided in goroutine blocking profiles by - calling runtime.SetBlockProfileRate with n. - See &#39;go doc runtime.SetBlockProfileRate&#39;. - The profiler aims to sample, on average, one blocking event every - n nanoseconds the program spends blocked. By default, - if -test.blockprofile is set without this flag, all blocking events - are recorded, equivalent to -test.blockprofilerate=1. - --coverprofile cover.out - Write a coverage profile to the file after all tests have passed. - Sets -cover. - --cpuprofile cpu.out - Write a CPU profile to the specified file before exiting. - Writes test binary as -c would. - --memprofile mem.out - Write a memory profile to the file after all tests have passed. - Writes test binary as -c would. - --memprofilerate n - Enable more precise (and expensive) memory profiles by setting - runtime.MemProfileRate. See &#39;go doc runtime.MemProfileRate&#39;. - To profile all memory allocations, use -test.memprofilerate=1 - and pass --alloc_space flag to the pprof tool. - --mutexprofile mutex.out - Write a mutex contention profile to the specified file - when all tests are complete. - Writes test binary as -c would. - --mutexprofilefraction n - Sample 1 in n stack traces of goroutines holding a - contended mutex. - --outputdir directory - Place output files from profiling in the specified directory, - by default the directory in which &#34;go test&#34; is running. - --trace trace.out - Write an execution trace to the specified file before exiting. -</pre> -<p> -Each of these flags is also recognized with an optional &#39;test.&#39; prefix, -as in -test.v. When invoking the generated test binary (the result of -&#39;go test -c&#39;) directly, however, the prefix is mandatory. -</p> -<p> -The &#39;go test&#39; command rewrites or removes recognized flags, -as appropriate, both before and after the optional package list, -before invoking the test binary. -</p> -<p> -For instance, the command -</p> -<pre>go test -v -myflag testdata -cpuprofile=prof.out -x -</pre> -<p> -will compile the test binary and then run it as -</p> -<pre>pkg.test -test.v -myflag testdata -test.cpuprofile=prof.out -</pre> -<p> -(The -x flag is removed because it applies only to the go command&#39;s -execution, not to the test itself.) -</p> -<p> -The test flags that generate profiles (other than for coverage) also -leave the test binary in pkg.test for use when analyzing the profiles. -</p> -<p> -When &#39;go test&#39; runs a test binary, it does so from within the -corresponding package&#39;s source code directory. Depending on the test, -it may be necessary to do the same when invoking a generated test -binary directly. -</p> -<p> -The command-line package list, if present, must appear before any -flag not known to the go test command. Continuing the example above, -the package list would have to appear before -myflag, but could appear -on either side of -v. -</p> -<p> -To keep an argument for a test binary from being interpreted as a -known flag or a package name, use -args (see &#39;go help test&#39;) which -passes the remainder of the command line through to the test binary -uninterpreted and unaltered. -</p> -<p> -For instance, the command -</p> -<pre>go test -v -args -x -v -</pre> -<p> -will compile the test binary and then run it as -</p> -<pre>pkg.test -test.v -x -v -</pre> -<p> -Similarly, -</p> -<pre>go test -args math -</pre> -<p> -will compile the test binary and then run it as -</p> -<pre>pkg.test math -</pre> -<p> -In the first example, the -x and the second -v are passed through to the -test binary unchanged and with no effect on the go command itself. -In the second example, the argument math is passed through to the test -binary, instead of being interpreted as the package list. -</p> -<h3 id="hdr-Description_of_testing_functions">Description of testing functions</h3> -<p> -The &#39;go test&#39; command expects to find test, benchmark, and example functions -in the &#34;*_test.go&#34; files corresponding to the package under test. -</p> -<p> -A test function is one named TestXXX (where XXX is any alphanumeric string -not starting with a lower case letter) and should have the signature, -</p> -<pre>func TestXXX(t *testing.T) { ... } -</pre> -<p> -A benchmark function is one named BenchmarkXXX and should have the signature, -</p> -<pre>func BenchmarkXXX(b *testing.B) { ... } -</pre> -<p> -An example function is similar to a test function but, instead of using -*testing.T to report success or failure, prints output to os.Stdout. -If the last comment in the function starts with &#34;Output:&#34; then the output -is compared exactly against the comment (see examples below). If the last -comment begins with &#34;Unordered output:&#34; then the output is compared to the -comment, however the order of the lines is ignored. An example with no such -comment is compiled but not executed. An example with no text after -&#34;Output:&#34; is compiled, executed, and expected to produce no output. -</p> -<p> -Godoc displays the body of ExampleXXX to demonstrate the use -of the function, constant, or variable XXX. An example of a method M with -receiver type T or *T is named ExampleT_M. There may be multiple examples -for a given function, constant, or variable, distinguished by a trailing _xxx, -where xxx is a suffix not beginning with an upper case letter. -</p> -<p> -Here is an example of an example: -</p> -<pre>func ExamplePrintln() { - Println(&#34;The output of\nthis example.&#34;) - // Output: The output of - // this example. -} -</pre> -<p> -Here is another example where the ordering of the output is ignored: -</p> -<pre>func ExamplePerm() { - for _, value := range Perm(4) { - fmt.Println(value) - } - - // Unordered output: 4 - // 2 - // 1 - // 3 - // 0 -} -</pre> -<p> -The entire test file is presented as the example when it contains a single -example function, at least one other function, type, variable, or constant -declaration, and no test or benchmark functions. -</p> -<p> -See the documentation of the testing package for more information. -</p> - -<div id="footer"> -Build version go1.8.<br> -Except as <a href="https://developers.google.com/site-policies#restrictions">noted</a>, -the content of this page is licensed under the -Creative Commons Attribution 3.0 License, -and code is licensed under a <a href="/LICENSE">BSD license</a>.<br> -<a href="/doc/tos.html">Terms of Service</a> | -<a href="http://www.google.com/intl/en/policies/privacy/">Privacy Policy</a> -</div> - -</div><!-- .container --> -</div><!-- #page --> - -<!-- TODO(adonovan): load these from <head> using "defer" attribute? --> -<script type="text/javascript" src="/serverpush/static/jquery.min.js?{{.CacheBust}}"></script> -<script type="text/javascript" src="/serverpush/static/playground.js?{{.CacheBust}}"></script> -<script>var goVersion = "go1.8";</script> -<script type="text/javascript" src="/serverpush/static/godocs.js?{{.CacheBust}}"></script> -</body> -</html> -`)) diff --git a/vendor/golang.org/x/net/http2/h2i/README.md b/vendor/golang.org/x/net/http2/h2i/README.md deleted file mode 100644 index fb5c5efb..00000000 --- a/vendor/golang.org/x/net/http2/h2i/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# h2i - -**h2i** is an interactive HTTP/2 ("h2") console debugger. Miss the good ol' -days of telnetting to your HTTP/1.n servers? We're bringing you -back. - -Features: -- send raw HTTP/2 frames - - PING - - SETTINGS - - HEADERS - - etc -- type in HTTP/1.n and have it auto-HPACK/frame-ify it for HTTP/2 -- pretty print all received HTTP/2 frames from the peer (including HPACK decoding) -- tab completion of commands, options - -Not yet features, but soon: -- unnecessary CONTINUATION frames on short boundaries, to test peer implementations -- request bodies (DATA frames) -- send invalid frames for testing server implementations (supported by underlying Framer) - -Later: -- act like a server - -## Installation - -``` -$ go get golang.org/x/net/http2/h2i -$ h2i <host> -``` - -## Demo - -``` -$ h2i -Usage: h2i <hostname> - - -insecure - Whether to skip TLS cert validation - -nextproto string - Comma-separated list of NPN/ALPN protocol names to negotiate. (default "h2,h2-14") - -$ h2i google.com -Connecting to google.com:443 ... -Connected to 74.125.224.41:443 -Negotiated protocol "h2-14" -[FrameHeader SETTINGS len=18] - [MAX_CONCURRENT_STREAMS = 100] - [INITIAL_WINDOW_SIZE = 1048576] - [MAX_FRAME_SIZE = 16384] -[FrameHeader WINDOW_UPDATE len=4] - Window-Increment = 983041 - -h2i> PING h2iSayHI -[FrameHeader PING flags=ACK len=8] - Data = "h2iSayHI" -h2i> headers -(as HTTP/1.1)> GET / HTTP/1.1 -(as HTTP/1.1)> Host: ip.appspot.com -(as HTTP/1.1)> User-Agent: h2i/brad-n-blake -(as HTTP/1.1)> -Opening Stream-ID 1: - :authority = ip.appspot.com - :method = GET - :path = / - :scheme = https - user-agent = h2i/brad-n-blake -[FrameHeader HEADERS flags=END_HEADERS stream=1 len=77] - :status = "200" - alternate-protocol = "443:quic,p=1" - content-length = "15" - content-type = "text/html" - date = "Fri, 01 May 2015 23:06:56 GMT" - server = "Google Frontend" -[FrameHeader DATA flags=END_STREAM stream=1 len=15] - "173.164.155.78\n" -[FrameHeader PING len=8] - Data = "\x00\x00\x00\x00\x00\x00\x00\x00" -h2i> ping -[FrameHeader PING flags=ACK len=8] - Data = "h2i_ping" -h2i> ping -[FrameHeader PING flags=ACK len=8] - Data = "h2i_ping" -h2i> ping -[FrameHeader GOAWAY len=22] - Last-Stream-ID = 1; Error-Code = PROTOCOL_ERROR (1) - -ReadFrame: EOF -``` - -## Status - -Quick few hour hack. So much yet to do. Feel free to file issues for -bugs or wishlist items, but [@bmizerany](https://github.com/bmizerany/) -and I aren't yet accepting pull requests until things settle down. - diff --git a/vendor/golang.org/x/net/http2/h2i/h2i.go b/vendor/golang.org/x/net/http2/h2i/h2i.go deleted file mode 100644 index 62e57527..00000000 --- a/vendor/golang.org/x/net/http2/h2i/h2i.go +++ /dev/null @@ -1,522 +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. - -// +build !plan9,!solaris - -/* -The h2i command is an interactive HTTP/2 console. - -Usage: - $ h2i [flags] <hostname> - -Interactive commands in the console: (all parts case-insensitive) - - ping [data] - settings ack - settings FOO=n BAR=z - headers (open a new stream by typing HTTP/1.1) -*/ -package main - -import ( - "bufio" - "bytes" - "crypto/tls" - "errors" - "flag" - "fmt" - "io" - "log" - "net" - "net/http" - "os" - "regexp" - "strconv" - "strings" - - "golang.org/x/crypto/ssh/terminal" - "golang.org/x/net/http2" - "golang.org/x/net/http2/hpack" -) - -// Flags -var ( - flagNextProto = flag.String("nextproto", "h2,h2-14", "Comma-separated list of NPN/ALPN protocol names to negotiate.") - flagInsecure = flag.Bool("insecure", false, "Whether to skip TLS cert validation") - flagSettings = flag.String("settings", "empty", "comma-separated list of KEY=value settings for the initial SETTINGS frame. The magic value 'empty' sends an empty initial settings frame, and the magic value 'omit' causes no initial settings frame to be sent.") - flagDial = flag.String("dial", "", "optional ip:port to dial, to connect to a host:port but use a different SNI name (including a SNI name without DNS)") -) - -type command struct { - run func(*h2i, []string) error // required - - // complete optionally specifies tokens (case-insensitive) which are - // valid for this subcommand. - complete func() []string -} - -var commands = map[string]command{ - "ping": {run: (*h2i).cmdPing}, - "settings": { - run: (*h2i).cmdSettings, - complete: func() []string { - return []string{ - "ACK", - http2.SettingHeaderTableSize.String(), - http2.SettingEnablePush.String(), - http2.SettingMaxConcurrentStreams.String(), - http2.SettingInitialWindowSize.String(), - http2.SettingMaxFrameSize.String(), - http2.SettingMaxHeaderListSize.String(), - } - }, - }, - "quit": {run: (*h2i).cmdQuit}, - "headers": {run: (*h2i).cmdHeaders}, -} - -func usage() { - fmt.Fprintf(os.Stderr, "Usage: h2i <hostname>\n\n") - flag.PrintDefaults() -} - -// withPort adds ":443" if another port isn't already present. -func withPort(host string) string { - if _, _, err := net.SplitHostPort(host); err != nil { - return net.JoinHostPort(host, "443") - } - return host -} - -// withoutPort strips the port from addr if present. -func withoutPort(addr string) string { - if h, _, err := net.SplitHostPort(addr); err == nil { - return h - } - return addr -} - -// h2i is the app's state. -type h2i struct { - host string - tc *tls.Conn - framer *http2.Framer - term *terminal.Terminal - - // owned by the command loop: - streamID uint32 - hbuf bytes.Buffer - henc *hpack.Encoder - - // owned by the readFrames loop: - peerSetting map[http2.SettingID]uint32 - hdec *hpack.Decoder -} - -func main() { - flag.Usage = usage - flag.Parse() - if flag.NArg() != 1 { - usage() - os.Exit(2) - } - log.SetFlags(0) - - host := flag.Arg(0) - app := &h2i{ - host: host, - peerSetting: make(map[http2.SettingID]uint32), - } - app.henc = hpack.NewEncoder(&app.hbuf) - - if err := app.Main(); err != nil { - if app.term != nil { - app.logf("%v\n", err) - } else { - fmt.Fprintf(os.Stderr, "%v\n", err) - } - os.Exit(1) - } - fmt.Fprintf(os.Stdout, "\n") -} - -func (app *h2i) Main() error { - cfg := &tls.Config{ - ServerName: withoutPort(app.host), - NextProtos: strings.Split(*flagNextProto, ","), - InsecureSkipVerify: *flagInsecure, - } - - hostAndPort := *flagDial - if hostAndPort == "" { - hostAndPort = withPort(app.host) - } - log.Printf("Connecting to %s ...", hostAndPort) - tc, err := tls.Dial("tcp", hostAndPort, cfg) - if err != nil { - return fmt.Errorf("Error dialing %s: %v", hostAndPort, err) - } - log.Printf("Connected to %v", tc.RemoteAddr()) - defer tc.Close() - - if err := tc.Handshake(); err != nil { - return fmt.Errorf("TLS handshake: %v", err) - } - if !*flagInsecure { - if err := tc.VerifyHostname(app.host); err != nil { - return fmt.Errorf("VerifyHostname: %v", err) - } - } - state := tc.ConnectionState() - log.Printf("Negotiated protocol %q", state.NegotiatedProtocol) - if !state.NegotiatedProtocolIsMutual || state.NegotiatedProtocol == "" { - return fmt.Errorf("Could not negotiate protocol mutually") - } - - if _, err := io.WriteString(tc, http2.ClientPreface); err != nil { - return err - } - - app.framer = http2.NewFramer(tc, tc) - - oldState, err := terminal.MakeRaw(int(os.Stdin.Fd())) - if err != nil { - return err - } - defer terminal.Restore(0, oldState) - - var screen = struct { - io.Reader - io.Writer - }{os.Stdin, os.Stdout} - - app.term = terminal.NewTerminal(screen, "h2i> ") - lastWord := regexp.MustCompile(`.+\W(\w+)$`) - app.term.AutoCompleteCallback = func(line string, pos int, key rune) (newLine string, newPos int, ok bool) { - if key != '\t' { - return - } - if pos != len(line) { - // TODO: we're being lazy for now, only supporting tab completion at the end. - return - } - // Auto-complete for the command itself. - if !strings.Contains(line, " ") { - var name string - name, _, ok = lookupCommand(line) - if !ok { - return - } - return name, len(name), true - } - _, c, ok := lookupCommand(line[:strings.IndexByte(line, ' ')]) - if !ok || c.complete == nil { - return - } - if strings.HasSuffix(line, " ") { - app.logf("%s", strings.Join(c.complete(), " ")) - return line, pos, true - } - m := lastWord.FindStringSubmatch(line) - if m == nil { - return line, len(line), true - } - soFar := m[1] - var match []string - for _, cand := range c.complete() { - if len(soFar) > len(cand) || !strings.EqualFold(cand[:len(soFar)], soFar) { - continue - } - match = append(match, cand) - } - if len(match) == 0 { - return - } - if len(match) > 1 { - // TODO: auto-complete any common prefix - app.logf("%s", strings.Join(match, " ")) - return line, pos, true - } - newLine = line[:len(line)-len(soFar)] + match[0] - return newLine, len(newLine), true - - } - - errc := make(chan error, 2) - go func() { errc <- app.readFrames() }() - go func() { errc <- app.readConsole() }() - return <-errc -} - -func (app *h2i) logf(format string, args ...interface{}) { - fmt.Fprintf(app.term, format+"\r\n", args...) -} - -func (app *h2i) readConsole() error { - if s := *flagSettings; s != "omit" { - var args []string - if s != "empty" { - args = strings.Split(s, ",") - } - _, c, ok := lookupCommand("settings") - if !ok { - panic("settings command not found") - } - c.run(app, args) - } - - for { - line, err := app.term.ReadLine() - if err == io.EOF { - return nil - } - if err != nil { - return fmt.Errorf("terminal.ReadLine: %v", err) - } - f := strings.Fields(line) - if len(f) == 0 { - continue - } - cmd, args := f[0], f[1:] - if _, c, ok := lookupCommand(cmd); ok { - err = c.run(app, args) - } else { - app.logf("Unknown command %q", line) - } - if err == errExitApp { - return nil - } - if err != nil { - return err - } - } -} - -func lookupCommand(prefix string) (name string, c command, ok bool) { - prefix = strings.ToLower(prefix) - if c, ok = commands[prefix]; ok { - return prefix, c, ok - } - - for full, candidate := range commands { - if strings.HasPrefix(full, prefix) { - if c.run != nil { - return "", command{}, false // ambiguous - } - c = candidate - name = full - } - } - return name, c, c.run != nil -} - -var errExitApp = errors.New("internal sentinel error value to quit the console reading loop") - -func (a *h2i) cmdQuit(args []string) error { - if len(args) > 0 { - a.logf("the QUIT command takes no argument") - return nil - } - return errExitApp -} - -func (a *h2i) cmdSettings(args []string) error { - if len(args) == 1 && strings.EqualFold(args[0], "ACK") { - return a.framer.WriteSettingsAck() - } - var settings []http2.Setting - for _, arg := range args { - if strings.EqualFold(arg, "ACK") { - a.logf("Error: ACK must be only argument with the SETTINGS command") - return nil - } - eq := strings.Index(arg, "=") - if eq == -1 { - a.logf("Error: invalid argument %q (expected SETTING_NAME=nnnn)", arg) - return nil - } - sid, ok := settingByName(arg[:eq]) - if !ok { - a.logf("Error: unknown setting name %q", arg[:eq]) - return nil - } - val, err := strconv.ParseUint(arg[eq+1:], 10, 32) - if err != nil { - a.logf("Error: invalid argument %q (expected SETTING_NAME=nnnn)", arg) - return nil - } - settings = append(settings, http2.Setting{ - ID: sid, - Val: uint32(val), - }) - } - a.logf("Sending: %v", settings) - return a.framer.WriteSettings(settings...) -} - -func settingByName(name string) (http2.SettingID, bool) { - for _, sid := range [...]http2.SettingID{ - http2.SettingHeaderTableSize, - http2.SettingEnablePush, - http2.SettingMaxConcurrentStreams, - http2.SettingInitialWindowSize, - http2.SettingMaxFrameSize, - http2.SettingMaxHeaderListSize, - } { - if strings.EqualFold(sid.String(), name) { - return sid, true - } - } - return 0, false -} - -func (app *h2i) cmdPing(args []string) error { - if len(args) > 1 { - app.logf("invalid PING usage: only accepts 0 or 1 args") - return nil // nil means don't end the program - } - var data [8]byte - if len(args) == 1 { - copy(data[:], args[0]) - } else { - copy(data[:], "h2i_ping") - } - return app.framer.WritePing(false, data) -} - -func (app *h2i) cmdHeaders(args []string) error { - if len(args) > 0 { - app.logf("Error: HEADERS doesn't yet take arguments.") - // TODO: flags for restricting window size, to force CONTINUATION - // frames. - return nil - } - var h1req bytes.Buffer - app.term.SetPrompt("(as HTTP/1.1)> ") - defer app.term.SetPrompt("h2i> ") - for { - line, err := app.term.ReadLine() - if err != nil { - return err - } - h1req.WriteString(line) - h1req.WriteString("\r\n") - if line == "" { - break - } - } - req, err := http.ReadRequest(bufio.NewReader(&h1req)) - if err != nil { - app.logf("Invalid HTTP/1.1 request: %v", err) - return nil - } - if app.streamID == 0 { - app.streamID = 1 - } else { - app.streamID += 2 - } - app.logf("Opening Stream-ID %d:", app.streamID) - hbf := app.encodeHeaders(req) - if len(hbf) > 16<<10 { - app.logf("TODO: h2i doesn't yet write CONTINUATION frames. Copy it from transport.go") - return nil - } - return app.framer.WriteHeaders(http2.HeadersFrameParam{ - StreamID: app.streamID, - BlockFragment: hbf, - EndStream: req.Method == "GET" || req.Method == "HEAD", // good enough for now - EndHeaders: true, // for now - }) -} - -func (app *h2i) readFrames() error { - for { - f, err := app.framer.ReadFrame() - if err != nil { - return fmt.Errorf("ReadFrame: %v", err) - } - app.logf("%v", f) - switch f := f.(type) { - case *http2.PingFrame: - app.logf(" Data = %q", f.Data) - case *http2.SettingsFrame: - f.ForeachSetting(func(s http2.Setting) error { - app.logf(" %v", s) - app.peerSetting[s.ID] = s.Val - return nil - }) - case *http2.WindowUpdateFrame: - app.logf(" Window-Increment = %v", f.Increment) - case *http2.GoAwayFrame: - app.logf(" Last-Stream-ID = %d; Error-Code = %v (%d)", f.LastStreamID, f.ErrCode, f.ErrCode) - case *http2.DataFrame: - app.logf(" %q", f.Data()) - case *http2.HeadersFrame: - if f.HasPriority() { - app.logf(" PRIORITY = %v", f.Priority) - } - if app.hdec == nil { - // TODO: if the user uses h2i to send a SETTINGS frame advertising - // something larger, we'll need to respect SETTINGS_HEADER_TABLE_SIZE - // and stuff here instead of using the 4k default. But for now: - tableSize := uint32(4 << 10) - app.hdec = hpack.NewDecoder(tableSize, app.onNewHeaderField) - } - app.hdec.Write(f.HeaderBlockFragment()) - case *http2.PushPromiseFrame: - if app.hdec == nil { - // TODO: if the user uses h2i to send a SETTINGS frame advertising - // something larger, we'll need to respect SETTINGS_HEADER_TABLE_SIZE - // and stuff here instead of using the 4k default. But for now: - tableSize := uint32(4 << 10) - app.hdec = hpack.NewDecoder(tableSize, app.onNewHeaderField) - } - app.hdec.Write(f.HeaderBlockFragment()) - } - } -} - -// called from readLoop -func (app *h2i) onNewHeaderField(f hpack.HeaderField) { - if f.Sensitive { - app.logf(" %s = %q (SENSITIVE)", f.Name, f.Value) - } - app.logf(" %s = %q", f.Name, f.Value) -} - -func (app *h2i) encodeHeaders(req *http.Request) []byte { - app.hbuf.Reset() - - // TODO(bradfitz): figure out :authority-vs-Host stuff between http2 and Go - host := req.Host - if host == "" { - host = req.URL.Host - } - - path := req.RequestURI - if path == "" { - path = "/" - } - - app.writeHeader(":authority", host) // probably not right for all sites - app.writeHeader(":method", req.Method) - app.writeHeader(":path", path) - app.writeHeader(":scheme", "https") - - for k, vv := range req.Header { - lowKey := strings.ToLower(k) - if lowKey == "host" { - continue - } - for _, v := range vv { - app.writeHeader(lowKey, v) - } - } - return app.hbuf.Bytes() -} - -func (app *h2i) writeHeader(name, value string) { - app.henc.WriteField(hpack.HeaderField{Name: name, Value: value}) - app.logf(" %s = %s", name, value) -} diff --git a/vendor/golang.org/x/net/http2/hpack/encode_test.go b/vendor/golang.org/x/net/http2/hpack/encode_test.go deleted file mode 100644 index 05f12db9..00000000 --- a/vendor/golang.org/x/net/http2/hpack/encode_test.go +++ /dev/null @@ -1,386 +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 hpack - -import ( - "bytes" - "encoding/hex" - "fmt" - "math/rand" - "reflect" - "strings" - "testing" -) - -func TestEncoderTableSizeUpdate(t *testing.T) { - tests := []struct { - size1, size2 uint32 - wantHex string - }{ - // Should emit 2 table size updates (2048 and 4096) - {2048, 4096, "3fe10f 3fe11f 82"}, - - // Should emit 1 table size update (2048) - {16384, 2048, "3fe10f 82"}, - } - for _, tt := range tests { - var buf bytes.Buffer - e := NewEncoder(&buf) - e.SetMaxDynamicTableSize(tt.size1) - e.SetMaxDynamicTableSize(tt.size2) - if err := e.WriteField(pair(":method", "GET")); err != nil { - t.Fatal(err) - } - want := removeSpace(tt.wantHex) - if got := hex.EncodeToString(buf.Bytes()); got != want { - t.Errorf("e.SetDynamicTableSize %v, %v = %q; want %q", tt.size1, tt.size2, got, want) - } - } -} - -func TestEncoderWriteField(t *testing.T) { - var buf bytes.Buffer - e := NewEncoder(&buf) - var got []HeaderField - d := NewDecoder(4<<10, func(f HeaderField) { - got = append(got, f) - }) - - tests := []struct { - hdrs []HeaderField - }{ - {[]HeaderField{ - pair(":method", "GET"), - pair(":scheme", "http"), - pair(":path", "/"), - pair(":authority", "www.example.com"), - }}, - {[]HeaderField{ - pair(":method", "GET"), - pair(":scheme", "http"), - pair(":path", "/"), - pair(":authority", "www.example.com"), - pair("cache-control", "no-cache"), - }}, - {[]HeaderField{ - pair(":method", "GET"), - pair(":scheme", "https"), - pair(":path", "/index.html"), - pair(":authority", "www.example.com"), - pair("custom-key", "custom-value"), - }}, - } - for i, tt := range tests { - buf.Reset() - got = got[:0] - for _, hf := range tt.hdrs { - if err := e.WriteField(hf); err != nil { - t.Fatal(err) - } - } - _, err := d.Write(buf.Bytes()) - if err != nil { - t.Errorf("%d. Decoder Write = %v", i, err) - } - if !reflect.DeepEqual(got, tt.hdrs) { - t.Errorf("%d. Decoded %+v; want %+v", i, got, tt.hdrs) - } - } -} - -func TestEncoderSearchTable(t *testing.T) { - e := NewEncoder(nil) - - e.dynTab.add(pair("foo", "bar")) - e.dynTab.add(pair("blake", "miz")) - e.dynTab.add(pair(":method", "GET")) - - tests := []struct { - hf HeaderField - wantI uint64 - wantMatch bool - }{ - // Name and Value match - {pair("foo", "bar"), uint64(staticTable.len()) + 3, true}, - {pair("blake", "miz"), uint64(staticTable.len()) + 2, true}, - {pair(":method", "GET"), 2, true}, - - // Only name match because Sensitive == true. This is allowed to match - // any ":method" entry. The current implementation uses the last entry - // added in newStaticTable. - {HeaderField{":method", "GET", true}, 3, false}, - - // Only Name matches - {pair("foo", "..."), uint64(staticTable.len()) + 3, false}, - {pair("blake", "..."), uint64(staticTable.len()) + 2, false}, - // As before, this is allowed to match any ":method" entry. - {pair(":method", "..."), 3, false}, - - // None match - {pair("foo-", "bar"), 0, false}, - } - for _, tt := range tests { - if gotI, gotMatch := e.searchTable(tt.hf); gotI != tt.wantI || gotMatch != tt.wantMatch { - t.Errorf("d.search(%+v) = %v, %v; want %v, %v", tt.hf, gotI, gotMatch, tt.wantI, tt.wantMatch) - } - } -} - -func TestAppendVarInt(t *testing.T) { - tests := []struct { - n byte - i uint64 - want []byte - }{ - // Fits in a byte: - {1, 0, []byte{0}}, - {2, 2, []byte{2}}, - {3, 6, []byte{6}}, - {4, 14, []byte{14}}, - {5, 30, []byte{30}}, - {6, 62, []byte{62}}, - {7, 126, []byte{126}}, - {8, 254, []byte{254}}, - - // Multiple bytes: - {5, 1337, []byte{31, 154, 10}}, - } - for _, tt := range tests { - got := appendVarInt(nil, tt.n, tt.i) - if !bytes.Equal(got, tt.want) { - t.Errorf("appendVarInt(nil, %v, %v) = %v; want %v", tt.n, tt.i, got, tt.want) - } - } -} - -func TestAppendHpackString(t *testing.T) { - tests := []struct { - s, wantHex string - }{ - // Huffman encoded - {"www.example.com", "8c f1e3 c2e5 f23a 6ba0 ab90 f4ff"}, - - // Not Huffman encoded - {"a", "01 61"}, - - // zero length - {"", "00"}, - } - for _, tt := range tests { - want := removeSpace(tt.wantHex) - buf := appendHpackString(nil, tt.s) - if got := hex.EncodeToString(buf); want != got { - t.Errorf("appendHpackString(nil, %q) = %q; want %q", tt.s, got, want) - } - } -} - -func TestAppendIndexed(t *testing.T) { - tests := []struct { - i uint64 - wantHex string - }{ - // 1 byte - {1, "81"}, - {126, "fe"}, - - // 2 bytes - {127, "ff00"}, - {128, "ff01"}, - } - for _, tt := range tests { - want := removeSpace(tt.wantHex) - buf := appendIndexed(nil, tt.i) - if got := hex.EncodeToString(buf); want != got { - t.Errorf("appendIndex(nil, %v) = %q; want %q", tt.i, got, want) - } - } -} - -func TestAppendNewName(t *testing.T) { - tests := []struct { - f HeaderField - indexing bool - wantHex string - }{ - // Incremental indexing - {HeaderField{"custom-key", "custom-value", false}, true, "40 88 25a8 49e9 5ba9 7d7f 89 25a8 49e9 5bb8 e8b4 bf"}, - - // Without indexing - {HeaderField{"custom-key", "custom-value", false}, false, "00 88 25a8 49e9 5ba9 7d7f 89 25a8 49e9 5bb8 e8b4 bf"}, - - // Never indexed - {HeaderField{"custom-key", "custom-value", true}, true, "10 88 25a8 49e9 5ba9 7d7f 89 25a8 49e9 5bb8 e8b4 bf"}, - {HeaderField{"custom-key", "custom-value", true}, false, "10 88 25a8 49e9 5ba9 7d7f 89 25a8 49e9 5bb8 e8b4 bf"}, - } - for _, tt := range tests { - want := removeSpace(tt.wantHex) - buf := appendNewName(nil, tt.f, tt.indexing) - if got := hex.EncodeToString(buf); want != got { - t.Errorf("appendNewName(nil, %+v, %v) = %q; want %q", tt.f, tt.indexing, got, want) - } - } -} - -func TestAppendIndexedName(t *testing.T) { - tests := []struct { - f HeaderField - i uint64 - indexing bool - wantHex string - }{ - // Incremental indexing - {HeaderField{":status", "302", false}, 8, true, "48 82 6402"}, - - // Without indexing - {HeaderField{":status", "302", false}, 8, false, "08 82 6402"}, - - // Never indexed - {HeaderField{":status", "302", true}, 8, true, "18 82 6402"}, - {HeaderField{":status", "302", true}, 8, false, "18 82 6402"}, - } - for _, tt := range tests { - want := removeSpace(tt.wantHex) - buf := appendIndexedName(nil, tt.f, tt.i, tt.indexing) - if got := hex.EncodeToString(buf); want != got { - t.Errorf("appendIndexedName(nil, %+v, %v) = %q; want %q", tt.f, tt.indexing, got, want) - } - } -} - -func TestAppendTableSize(t *testing.T) { - tests := []struct { - i uint32 - wantHex string - }{ - // Fits into 1 byte - {30, "3e"}, - - // Extra byte - {31, "3f00"}, - {32, "3f01"}, - } - for _, tt := range tests { - want := removeSpace(tt.wantHex) - buf := appendTableSize(nil, tt.i) - if got := hex.EncodeToString(buf); want != got { - t.Errorf("appendTableSize(nil, %v) = %q; want %q", tt.i, got, want) - } - } -} - -func TestEncoderSetMaxDynamicTableSize(t *testing.T) { - var buf bytes.Buffer - e := NewEncoder(&buf) - tests := []struct { - v uint32 - wantUpdate bool - wantMinSize uint32 - wantMaxSize uint32 - }{ - // Set new table size to 2048 - {2048, true, 2048, 2048}, - - // Set new table size to 16384, but still limited to - // 4096 - {16384, true, 2048, 4096}, - } - for _, tt := range tests { - e.SetMaxDynamicTableSize(tt.v) - if got := e.tableSizeUpdate; tt.wantUpdate != got { - t.Errorf("e.tableSizeUpdate = %v; want %v", got, tt.wantUpdate) - } - if got := e.minSize; tt.wantMinSize != got { - t.Errorf("e.minSize = %v; want %v", got, tt.wantMinSize) - } - if got := e.dynTab.maxSize; tt.wantMaxSize != got { - t.Errorf("e.maxSize = %v; want %v", got, tt.wantMaxSize) - } - } -} - -func TestEncoderSetMaxDynamicTableSizeLimit(t *testing.T) { - e := NewEncoder(nil) - // 4095 < initialHeaderTableSize means maxSize is truncated to - // 4095. - e.SetMaxDynamicTableSizeLimit(4095) - if got, want := e.dynTab.maxSize, uint32(4095); got != want { - t.Errorf("e.dynTab.maxSize = %v; want %v", got, want) - } - if got, want := e.maxSizeLimit, uint32(4095); got != want { - t.Errorf("e.maxSizeLimit = %v; want %v", got, want) - } - if got, want := e.tableSizeUpdate, true; got != want { - t.Errorf("e.tableSizeUpdate = %v; want %v", got, want) - } - // maxSize will be truncated to maxSizeLimit - e.SetMaxDynamicTableSize(16384) - if got, want := e.dynTab.maxSize, uint32(4095); got != want { - t.Errorf("e.dynTab.maxSize = %v; want %v", got, want) - } - // 8192 > current maxSizeLimit, so maxSize does not change. - e.SetMaxDynamicTableSizeLimit(8192) - if got, want := e.dynTab.maxSize, uint32(4095); got != want { - t.Errorf("e.dynTab.maxSize = %v; want %v", got, want) - } - if got, want := e.maxSizeLimit, uint32(8192); got != want { - t.Errorf("e.maxSizeLimit = %v; want %v", got, want) - } -} - -func removeSpace(s string) string { - return strings.Replace(s, " ", "", -1) -} - -func BenchmarkEncoderSearchTable(b *testing.B) { - e := NewEncoder(nil) - - // A sample of possible header fields. - // This is not based on any actual data from HTTP/2 traces. - var possible []HeaderField - for _, f := range staticTable.ents { - if f.Value == "" { - possible = append(possible, f) - continue - } - // Generate 5 random values, except for cookie and set-cookie, - // which we know can have many values in practice. - num := 5 - if f.Name == "cookie" || f.Name == "set-cookie" { - num = 25 - } - for i := 0; i < num; i++ { - f.Value = fmt.Sprintf("%s-%d", f.Name, i) - possible = append(possible, f) - } - } - for k := 0; k < 10; k++ { - f := HeaderField{ - Name: fmt.Sprintf("x-header-%d", k), - Sensitive: rand.Int()%2 == 0, - } - for i := 0; i < 5; i++ { - f.Value = fmt.Sprintf("%s-%d", f.Name, i) - possible = append(possible, f) - } - } - - // Add a random sample to the dynamic table. This very loosely simulates - // a history of 100 requests with 20 header fields per request. - for r := 0; r < 100*20; r++ { - f := possible[rand.Int31n(int32(len(possible)))] - // Skip if this is in the staticTable verbatim. - if _, has := staticTable.search(f); !has { - e.dynTab.add(f) - } - } - - b.ResetTimer() - for n := 0; n < b.N; n++ { - for _, f := range possible { - e.searchTable(f) - } - } -} diff --git a/vendor/golang.org/x/net/http2/hpack/hpack_test.go b/vendor/golang.org/x/net/http2/hpack/hpack_test.go deleted file mode 100644 index bc7f4767..00000000 --- a/vendor/golang.org/x/net/http2/hpack/hpack_test.go +++ /dev/null @@ -1,722 +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 hpack - -import ( - "bytes" - "encoding/hex" - "fmt" - "math/rand" - "reflect" - "strings" - "testing" - "time" -) - -func (d *Decoder) mustAt(idx int) HeaderField { - if hf, ok := d.at(uint64(idx)); !ok { - panic(fmt.Sprintf("bogus index %d", idx)) - } else { - return hf - } -} - -func TestDynamicTableAt(t *testing.T) { - d := NewDecoder(4096, nil) - at := d.mustAt - if got, want := at(2), (pair(":method", "GET")); got != want { - t.Errorf("at(2) = %v; want %v", got, want) - } - d.dynTab.add(pair("foo", "bar")) - d.dynTab.add(pair("blake", "miz")) - if got, want := at(staticTable.len()+1), (pair("blake", "miz")); got != want { - t.Errorf("at(dyn 1) = %v; want %v", got, want) - } - if got, want := at(staticTable.len()+2), (pair("foo", "bar")); got != want { - t.Errorf("at(dyn 2) = %v; want %v", got, want) - } - if got, want := at(3), (pair(":method", "POST")); got != want { - t.Errorf("at(3) = %v; want %v", got, want) - } -} - -func TestDynamicTableSizeEvict(t *testing.T) { - d := NewDecoder(4096, nil) - if want := uint32(0); d.dynTab.size != want { - t.Fatalf("size = %d; want %d", d.dynTab.size, want) - } - add := d.dynTab.add - add(pair("blake", "eats pizza")) - if want := uint32(15 + 32); d.dynTab.size != want { - t.Fatalf("after pizza, size = %d; want %d", d.dynTab.size, want) - } - add(pair("foo", "bar")) - if want := uint32(15 + 32 + 6 + 32); d.dynTab.size != want { - t.Fatalf("after foo bar, size = %d; want %d", d.dynTab.size, want) - } - d.dynTab.setMaxSize(15 + 32 + 1 /* slop */) - if want := uint32(6 + 32); d.dynTab.size != want { - t.Fatalf("after setMaxSize, size = %d; want %d", d.dynTab.size, want) - } - if got, want := d.mustAt(staticTable.len()+1), (pair("foo", "bar")); got != want { - t.Errorf("at(dyn 1) = %v; want %v", got, want) - } - add(pair("long", strings.Repeat("x", 500))) - if want := uint32(0); d.dynTab.size != want { - t.Fatalf("after big one, size = %d; want %d", d.dynTab.size, want) - } -} - -func TestDecoderDecode(t *testing.T) { - tests := []struct { - name string - in []byte - want []HeaderField - wantDynTab []HeaderField // newest entry first - }{ - // C.2.1 Literal Header Field with Indexing - // http://http2.github.io/http2-spec/compression.html#rfc.section.C.2.1 - {"C.2.1", dehex("400a 6375 7374 6f6d 2d6b 6579 0d63 7573 746f 6d2d 6865 6164 6572"), - []HeaderField{pair("custom-key", "custom-header")}, - []HeaderField{pair("custom-key", "custom-header")}, - }, - - // C.2.2 Literal Header Field without Indexing - // http://http2.github.io/http2-spec/compression.html#rfc.section.C.2.2 - {"C.2.2", dehex("040c 2f73 616d 706c 652f 7061 7468"), - []HeaderField{pair(":path", "/sample/path")}, - []HeaderField{}}, - - // C.2.3 Literal Header Field never Indexed - // http://http2.github.io/http2-spec/compression.html#rfc.section.C.2.3 - {"C.2.3", dehex("1008 7061 7373 776f 7264 0673 6563 7265 74"), - []HeaderField{{"password", "secret", true}}, - []HeaderField{}}, - - // C.2.4 Indexed Header Field - // http://http2.github.io/http2-spec/compression.html#rfc.section.C.2.4 - {"C.2.4", []byte("\x82"), - []HeaderField{pair(":method", "GET")}, - []HeaderField{}}, - } - for _, tt := range tests { - d := NewDecoder(4096, nil) - hf, err := d.DecodeFull(tt.in) - if err != nil { - t.Errorf("%s: %v", tt.name, err) - continue - } - if !reflect.DeepEqual(hf, tt.want) { - t.Errorf("%s: Got %v; want %v", tt.name, hf, tt.want) - } - gotDynTab := d.dynTab.reverseCopy() - if !reflect.DeepEqual(gotDynTab, tt.wantDynTab) { - t.Errorf("%s: dynamic table after = %v; want %v", tt.name, gotDynTab, tt.wantDynTab) - } - } -} - -func (dt *dynamicTable) reverseCopy() (hf []HeaderField) { - hf = make([]HeaderField, len(dt.table.ents)) - for i := range hf { - hf[i] = dt.table.ents[len(dt.table.ents)-1-i] - } - return -} - -type encAndWant struct { - enc []byte - want []HeaderField - wantDynTab []HeaderField - wantDynSize uint32 -} - -// C.3 Request Examples without Huffman Coding -// http://http2.github.io/http2-spec/compression.html#rfc.section.C.3 -func TestDecodeC3_NoHuffman(t *testing.T) { - testDecodeSeries(t, 4096, []encAndWant{ - {dehex("8286 8441 0f77 7777 2e65 7861 6d70 6c65 2e63 6f6d"), - []HeaderField{ - pair(":method", "GET"), - pair(":scheme", "http"), - pair(":path", "/"), - pair(":authority", "www.example.com"), - }, - []HeaderField{ - pair(":authority", "www.example.com"), - }, - 57, - }, - {dehex("8286 84be 5808 6e6f 2d63 6163 6865"), - []HeaderField{ - pair(":method", "GET"), - pair(":scheme", "http"), - pair(":path", "/"), - pair(":authority", "www.example.com"), - pair("cache-control", "no-cache"), - }, - []HeaderField{ - pair("cache-control", "no-cache"), - pair(":authority", "www.example.com"), - }, - 110, - }, - {dehex("8287 85bf 400a 6375 7374 6f6d 2d6b 6579 0c63 7573 746f 6d2d 7661 6c75 65"), - []HeaderField{ - pair(":method", "GET"), - pair(":scheme", "https"), - pair(":path", "/index.html"), - pair(":authority", "www.example.com"), - pair("custom-key", "custom-value"), - }, - []HeaderField{ - pair("custom-key", "custom-value"), - pair("cache-control", "no-cache"), - pair(":authority", "www.example.com"), - }, - 164, - }, - }) -} - -// C.4 Request Examples with Huffman Coding -// http://http2.github.io/http2-spec/compression.html#rfc.section.C.4 -func TestDecodeC4_Huffman(t *testing.T) { - testDecodeSeries(t, 4096, []encAndWant{ - {dehex("8286 8441 8cf1 e3c2 e5f2 3a6b a0ab 90f4 ff"), - []HeaderField{ - pair(":method", "GET"), - pair(":scheme", "http"), - pair(":path", "/"), - pair(":authority", "www.example.com"), - }, - []HeaderField{ - pair(":authority", "www.example.com"), - }, - 57, - }, - {dehex("8286 84be 5886 a8eb 1064 9cbf"), - []HeaderField{ - pair(":method", "GET"), - pair(":scheme", "http"), - pair(":path", "/"), - pair(":authority", "www.example.com"), - pair("cache-control", "no-cache"), - }, - []HeaderField{ - pair("cache-control", "no-cache"), - pair(":authority", "www.example.com"), - }, - 110, - }, - {dehex("8287 85bf 4088 25a8 49e9 5ba9 7d7f 8925 a849 e95b b8e8 b4bf"), - []HeaderField{ - pair(":method", "GET"), - pair(":scheme", "https"), - pair(":path", "/index.html"), - pair(":authority", "www.example.com"), - pair("custom-key", "custom-value"), - }, - []HeaderField{ - pair("custom-key", "custom-value"), - pair("cache-control", "no-cache"), - pair(":authority", "www.example.com"), - }, - 164, - }, - }) -} - -// http://http2.github.io/http2-spec/compression.html#rfc.section.C.5 -// "This section shows several consecutive header lists, corresponding -// to HTTP responses, on the same connection. The HTTP/2 setting -// parameter SETTINGS_HEADER_TABLE_SIZE is set to the value of 256 -// octets, causing some evictions to occur." -func TestDecodeC5_ResponsesNoHuff(t *testing.T) { - testDecodeSeries(t, 256, []encAndWant{ - {dehex(` -4803 3330 3258 0770 7269 7661 7465 611d -4d6f 6e2c 2032 3120 4f63 7420 3230 3133 -2032 303a 3133 3a32 3120 474d 546e 1768 -7474 7073 3a2f 2f77 7777 2e65 7861 6d70 -6c65 2e63 6f6d -`), - []HeaderField{ - pair(":status", "302"), - pair("cache-control", "private"), - pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), - pair("location", "https://www.example.com"), - }, - []HeaderField{ - pair("location", "https://www.example.com"), - pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), - pair("cache-control", "private"), - pair(":status", "302"), - }, - 222, - }, - {dehex("4803 3330 37c1 c0bf"), - []HeaderField{ - pair(":status", "307"), - pair("cache-control", "private"), - pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), - pair("location", "https://www.example.com"), - }, - []HeaderField{ - pair(":status", "307"), - pair("location", "https://www.example.com"), - pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), - pair("cache-control", "private"), - }, - 222, - }, - {dehex(` -88c1 611d 4d6f 6e2c 2032 3120 4f63 7420 -3230 3133 2032 303a 3133 3a32 3220 474d -54c0 5a04 677a 6970 7738 666f 6f3d 4153 -444a 4b48 514b 425a 584f 5157 454f 5049 -5541 5851 5745 4f49 553b 206d 6178 2d61 -6765 3d33 3630 303b 2076 6572 7369 6f6e -3d31 -`), - []HeaderField{ - pair(":status", "200"), - pair("cache-control", "private"), - pair("date", "Mon, 21 Oct 2013 20:13:22 GMT"), - pair("location", "https://www.example.com"), - pair("content-encoding", "gzip"), - pair("set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1"), - }, - []HeaderField{ - pair("set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1"), - pair("content-encoding", "gzip"), - pair("date", "Mon, 21 Oct 2013 20:13:22 GMT"), - }, - 215, - }, - }) -} - -// http://http2.github.io/http2-spec/compression.html#rfc.section.C.6 -// "This section shows the same examples as the previous section, but -// using Huffman encoding for the literal values. The HTTP/2 setting -// parameter SETTINGS_HEADER_TABLE_SIZE is set to the value of 256 -// octets, causing some evictions to occur. The eviction mechanism -// uses the length of the decoded literal values, so the same -// evictions occurs as in the previous section." -func TestDecodeC6_ResponsesHuffman(t *testing.T) { - testDecodeSeries(t, 256, []encAndWant{ - {dehex(` -4882 6402 5885 aec3 771a 4b61 96d0 7abe -9410 54d4 44a8 2005 9504 0b81 66e0 82a6 -2d1b ff6e 919d 29ad 1718 63c7 8f0b 97c8 -e9ae 82ae 43d3 -`), - []HeaderField{ - pair(":status", "302"), - pair("cache-control", "private"), - pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), - pair("location", "https://www.example.com"), - }, - []HeaderField{ - pair("location", "https://www.example.com"), - pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), - pair("cache-control", "private"), - pair(":status", "302"), - }, - 222, - }, - {dehex("4883 640e ffc1 c0bf"), - []HeaderField{ - pair(":status", "307"), - pair("cache-control", "private"), - pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), - pair("location", "https://www.example.com"), - }, - []HeaderField{ - pair(":status", "307"), - pair("location", "https://www.example.com"), - pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), - pair("cache-control", "private"), - }, - 222, - }, - {dehex(` -88c1 6196 d07a be94 1054 d444 a820 0595 -040b 8166 e084 a62d 1bff c05a 839b d9ab -77ad 94e7 821d d7f2 e6c7 b335 dfdf cd5b -3960 d5af 2708 7f36 72c1 ab27 0fb5 291f -9587 3160 65c0 03ed 4ee5 b106 3d50 07 -`), - []HeaderField{ - pair(":status", "200"), - pair("cache-control", "private"), - pair("date", "Mon, 21 Oct 2013 20:13:22 GMT"), - pair("location", "https://www.example.com"), - pair("content-encoding", "gzip"), - pair("set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1"), - }, - []HeaderField{ - pair("set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1"), - pair("content-encoding", "gzip"), - pair("date", "Mon, 21 Oct 2013 20:13:22 GMT"), - }, - 215, - }, - }) -} - -func testDecodeSeries(t *testing.T, size uint32, steps []encAndWant) { - d := NewDecoder(size, nil) - for i, step := range steps { - hf, err := d.DecodeFull(step.enc) - if err != nil { - t.Fatalf("Error at step index %d: %v", i, err) - } - if !reflect.DeepEqual(hf, step.want) { - t.Fatalf("At step index %d: Got headers %v; want %v", i, hf, step.want) - } - gotDynTab := d.dynTab.reverseCopy() - if !reflect.DeepEqual(gotDynTab, step.wantDynTab) { - t.Errorf("After step index %d, dynamic table = %v; want %v", i, gotDynTab, step.wantDynTab) - } - if d.dynTab.size != step.wantDynSize { - t.Errorf("After step index %d, dynamic table size = %v; want %v", i, d.dynTab.size, step.wantDynSize) - } - } -} - -func TestHuffmanDecodeExcessPadding(t *testing.T) { - tests := [][]byte{ - {0xff}, // Padding Exceeds 7 bits - {0x1f, 0xff}, // {"a", 1 byte excess padding} - {0x1f, 0xff, 0xff}, // {"a", 2 byte excess padding} - {0x1f, 0xff, 0xff, 0xff}, // {"a", 3 byte excess padding} - {0xff, 0x9f, 0xff, 0xff, 0xff}, // {"a", 29 bit excess padding} - {'R', 0xbc, '0', 0xff, 0xff, 0xff, 0xff}, // Padding ends on partial symbol. - } - for i, in := range tests { - var buf bytes.Buffer - if _, err := HuffmanDecode(&buf, in); err != ErrInvalidHuffman { - t.Errorf("test-%d: decode(%q) = %v; want ErrInvalidHuffman", i, in, err) - } - } -} - -func TestHuffmanDecodeEOS(t *testing.T) { - in := []byte{0xff, 0xff, 0xff, 0xff, 0xfc} // {EOS, "?"} - var buf bytes.Buffer - if _, err := HuffmanDecode(&buf, in); err != ErrInvalidHuffman { - t.Errorf("error = %v; want ErrInvalidHuffman", err) - } -} - -func TestHuffmanDecodeMaxLengthOnTrailingByte(t *testing.T) { - in := []byte{0x00, 0x01} // {"0", "0", "0"} - var buf bytes.Buffer - if err := huffmanDecode(&buf, 2, in); err != ErrStringLength { - t.Errorf("error = %v; want ErrStringLength", err) - } -} - -func TestHuffmanDecodeCorruptPadding(t *testing.T) { - in := []byte{0x00} - var buf bytes.Buffer - if _, err := HuffmanDecode(&buf, in); err != ErrInvalidHuffman { - t.Errorf("error = %v; want ErrInvalidHuffman", err) - } -} - -func TestHuffmanDecode(t *testing.T) { - tests := []struct { - inHex, want string - }{ - {"f1e3 c2e5 f23a 6ba0 ab90 f4ff", "www.example.com"}, - {"a8eb 1064 9cbf", "no-cache"}, - {"25a8 49e9 5ba9 7d7f", "custom-key"}, - {"25a8 49e9 5bb8 e8b4 bf", "custom-value"}, - {"6402", "302"}, - {"aec3 771a 4b", "private"}, - {"d07a be94 1054 d444 a820 0595 040b 8166 e082 a62d 1bff", "Mon, 21 Oct 2013 20:13:21 GMT"}, - {"9d29 ad17 1863 c78f 0b97 c8e9 ae82 ae43 d3", "https://www.example.com"}, - {"9bd9 ab", "gzip"}, - {"94e7 821d d7f2 e6c7 b335 dfdf cd5b 3960 d5af 2708 7f36 72c1 ab27 0fb5 291f 9587 3160 65c0 03ed 4ee5 b106 3d50 07", - "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1"}, - } - for i, tt := range tests { - var buf bytes.Buffer - in, err := hex.DecodeString(strings.Replace(tt.inHex, " ", "", -1)) - if err != nil { - t.Errorf("%d. hex input error: %v", i, err) - continue - } - if _, err := HuffmanDecode(&buf, in); err != nil { - t.Errorf("%d. decode error: %v", i, err) - continue - } - if got := buf.String(); tt.want != got { - t.Errorf("%d. decode = %q; want %q", i, got, tt.want) - } - } -} - -func TestAppendHuffmanString(t *testing.T) { - tests := []struct { - in, want string - }{ - {"www.example.com", "f1e3 c2e5 f23a 6ba0 ab90 f4ff"}, - {"no-cache", "a8eb 1064 9cbf"}, - {"custom-key", "25a8 49e9 5ba9 7d7f"}, - {"custom-value", "25a8 49e9 5bb8 e8b4 bf"}, - {"302", "6402"}, - {"private", "aec3 771a 4b"}, - {"Mon, 21 Oct 2013 20:13:21 GMT", "d07a be94 1054 d444 a820 0595 040b 8166 e082 a62d 1bff"}, - {"https://www.example.com", "9d29 ad17 1863 c78f 0b97 c8e9 ae82 ae43 d3"}, - {"gzip", "9bd9 ab"}, - {"foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1", - "94e7 821d d7f2 e6c7 b335 dfdf cd5b 3960 d5af 2708 7f36 72c1 ab27 0fb5 291f 9587 3160 65c0 03ed 4ee5 b106 3d50 07"}, - } - for i, tt := range tests { - buf := []byte{} - want := strings.Replace(tt.want, " ", "", -1) - buf = AppendHuffmanString(buf, tt.in) - if got := hex.EncodeToString(buf); want != got { - t.Errorf("%d. encode = %q; want %q", i, got, want) - } - } -} - -func TestHuffmanMaxStrLen(t *testing.T) { - const msg = "Some string" - huff := AppendHuffmanString(nil, msg) - - testGood := func(max int) { - var out bytes.Buffer - if err := huffmanDecode(&out, max, huff); err != nil { - t.Errorf("For maxLen=%d, unexpected error: %v", max, err) - } - if out.String() != msg { - t.Errorf("For maxLen=%d, out = %q; want %q", max, out.String(), msg) - } - } - testGood(0) - testGood(len(msg)) - testGood(len(msg) + 1) - - var out bytes.Buffer - if err := huffmanDecode(&out, len(msg)-1, huff); err != ErrStringLength { - t.Errorf("err = %v; want ErrStringLength", err) - } -} - -func TestHuffmanRoundtripStress(t *testing.T) { - const Len = 50 // of uncompressed string - input := make([]byte, Len) - var output bytes.Buffer - var huff []byte - - n := 5000 - if testing.Short() { - n = 100 - } - seed := time.Now().UnixNano() - t.Logf("Seed = %v", seed) - src := rand.New(rand.NewSource(seed)) - var encSize int64 - for i := 0; i < n; i++ { - for l := range input { - input[l] = byte(src.Intn(256)) - } - huff = AppendHuffmanString(huff[:0], string(input)) - encSize += int64(len(huff)) - output.Reset() - if err := huffmanDecode(&output, 0, huff); err != nil { - t.Errorf("Failed to decode %q -> %q -> error %v", input, huff, err) - continue - } - if !bytes.Equal(output.Bytes(), input) { - t.Errorf("Roundtrip failure on %q -> %q -> %q", input, huff, output.Bytes()) - } - } - t.Logf("Compressed size of original: %0.02f%% (%v -> %v)", 100*(float64(encSize)/(Len*float64(n))), Len*n, encSize) -} - -func TestHuffmanDecodeFuzz(t *testing.T) { - const Len = 50 // of compressed - var buf, zbuf bytes.Buffer - - n := 5000 - if testing.Short() { - n = 100 - } - seed := time.Now().UnixNano() - t.Logf("Seed = %v", seed) - src := rand.New(rand.NewSource(seed)) - numFail := 0 - for i := 0; i < n; i++ { - zbuf.Reset() - if i == 0 { - // Start with at least one invalid one. - zbuf.WriteString("00\x91\xff\xff\xff\xff\xc8") - } else { - for l := 0; l < Len; l++ { - zbuf.WriteByte(byte(src.Intn(256))) - } - } - - buf.Reset() - if err := huffmanDecode(&buf, 0, zbuf.Bytes()); err != nil { - if err == ErrInvalidHuffman { - numFail++ - continue - } - t.Errorf("Failed to decode %q: %v", zbuf.Bytes(), err) - continue - } - } - t.Logf("%0.02f%% are invalid (%d / %d)", 100*float64(numFail)/float64(n), numFail, n) - if numFail < 1 { - t.Error("expected at least one invalid huffman encoding (test starts with one)") - } -} - -func TestReadVarInt(t *testing.T) { - type res struct { - i uint64 - consumed int - err error - } - tests := []struct { - n byte - p []byte - want res - }{ - // Fits in a byte: - {1, []byte{0}, res{0, 1, nil}}, - {2, []byte{2}, res{2, 1, nil}}, - {3, []byte{6}, res{6, 1, nil}}, - {4, []byte{14}, res{14, 1, nil}}, - {5, []byte{30}, res{30, 1, nil}}, - {6, []byte{62}, res{62, 1, nil}}, - {7, []byte{126}, res{126, 1, nil}}, - {8, []byte{254}, res{254, 1, nil}}, - - // Doesn't fit in a byte: - {1, []byte{1}, res{0, 0, errNeedMore}}, - {2, []byte{3}, res{0, 0, errNeedMore}}, - {3, []byte{7}, res{0, 0, errNeedMore}}, - {4, []byte{15}, res{0, 0, errNeedMore}}, - {5, []byte{31}, res{0, 0, errNeedMore}}, - {6, []byte{63}, res{0, 0, errNeedMore}}, - {7, []byte{127}, res{0, 0, errNeedMore}}, - {8, []byte{255}, res{0, 0, errNeedMore}}, - - // Ignoring top bits: - {5, []byte{255, 154, 10}, res{1337, 3, nil}}, // high dummy three bits: 111 - {5, []byte{159, 154, 10}, res{1337, 3, nil}}, // high dummy three bits: 100 - {5, []byte{191, 154, 10}, res{1337, 3, nil}}, // high dummy three bits: 101 - - // Extra byte: - {5, []byte{191, 154, 10, 2}, res{1337, 3, nil}}, // extra byte - - // Short a byte: - {5, []byte{191, 154}, res{0, 0, errNeedMore}}, - - // integer overflow: - {1, []byte{255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128}, res{0, 0, errVarintOverflow}}, - } - for _, tt := range tests { - i, remain, err := readVarInt(tt.n, tt.p) - consumed := len(tt.p) - len(remain) - got := res{i, consumed, err} - if got != tt.want { - t.Errorf("readVarInt(%d, %v ~ %x) = %+v; want %+v", tt.n, tt.p, tt.p, got, tt.want) - } - } -} - -// Fuzz crash, originally reported at https://github.com/bradfitz/http2/issues/56 -func TestHuffmanFuzzCrash(t *testing.T) { - got, err := HuffmanDecodeToString([]byte("00\x91\xff\xff\xff\xff\xc8")) - if got != "" { - t.Errorf("Got %q; want empty string", got) - } - if err != ErrInvalidHuffman { - t.Errorf("Err = %v; want ErrInvalidHuffman", err) - } -} - -func pair(name, value string) HeaderField { - return HeaderField{Name: name, Value: value} -} - -func dehex(s string) []byte { - s = strings.Replace(s, " ", "", -1) - s = strings.Replace(s, "\n", "", -1) - b, err := hex.DecodeString(s) - if err != nil { - panic(err) - } - return b -} - -func TestEmitEnabled(t *testing.T) { - var buf bytes.Buffer - enc := NewEncoder(&buf) - enc.WriteField(HeaderField{Name: "foo", Value: "bar"}) - enc.WriteField(HeaderField{Name: "foo", Value: "bar"}) - - numCallback := 0 - var dec *Decoder - dec = NewDecoder(8<<20, func(HeaderField) { - numCallback++ - dec.SetEmitEnabled(false) - }) - if !dec.EmitEnabled() { - t.Errorf("initial emit enabled = false; want true") - } - if _, err := dec.Write(buf.Bytes()); err != nil { - t.Error(err) - } - if numCallback != 1 { - t.Errorf("num callbacks = %d; want 1", numCallback) - } - if dec.EmitEnabled() { - t.Errorf("emit enabled = true; want false") - } -} - -func TestSaveBufLimit(t *testing.T) { - const maxStr = 1 << 10 - var got []HeaderField - dec := NewDecoder(initialHeaderTableSize, func(hf HeaderField) { - got = append(got, hf) - }) - dec.SetMaxStringLength(maxStr) - var frag []byte - frag = append(frag[:0], encodeTypeByte(false, false)) - frag = appendVarInt(frag, 7, 3) - frag = append(frag, "foo"...) - frag = appendVarInt(frag, 7, 3) - frag = append(frag, "bar"...) - - if _, err := dec.Write(frag); err != nil { - t.Fatal(err) - } - - want := []HeaderField{{Name: "foo", Value: "bar"}} - if !reflect.DeepEqual(got, want) { - t.Errorf("After small writes, got %v; want %v", got, want) - } - - frag = append(frag[:0], encodeTypeByte(false, false)) - frag = appendVarInt(frag, 7, maxStr*3) - frag = append(frag, make([]byte, maxStr*3)...) - - _, err := dec.Write(frag) - if err != ErrStringLength { - t.Fatalf("Write error = %v; want ErrStringLength", err) - } -} diff --git a/vendor/golang.org/x/net/http2/hpack/tables_test.go b/vendor/golang.org/x/net/http2/hpack/tables_test.go deleted file mode 100644 index d963f363..00000000 --- a/vendor/golang.org/x/net/http2/hpack/tables_test.go +++ /dev/null @@ -1,214 +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 hpack - -import ( - "bufio" - "regexp" - "strconv" - "strings" - "testing" -) - -func TestHeaderFieldTable(t *testing.T) { - table := &headerFieldTable{} - table.init() - table.addEntry(pair("key1", "value1-1")) - table.addEntry(pair("key2", "value2-1")) - table.addEntry(pair("key1", "value1-2")) - table.addEntry(pair("key3", "value3-1")) - table.addEntry(pair("key4", "value4-1")) - table.addEntry(pair("key2", "value2-2")) - - // Tests will be run twice: once before evicting anything, and - // again after evicting the three oldest entries. - tests := []struct { - f HeaderField - beforeWantStaticI uint64 - beforeWantMatch bool - afterWantStaticI uint64 - afterWantMatch bool - }{ - {HeaderField{"key1", "value1-1", false}, 1, true, 0, false}, - {HeaderField{"key1", "value1-2", false}, 3, true, 0, false}, - {HeaderField{"key1", "value1-3", false}, 3, false, 0, false}, - {HeaderField{"key2", "value2-1", false}, 2, true, 3, false}, - {HeaderField{"key2", "value2-2", false}, 6, true, 3, true}, - {HeaderField{"key2", "value2-3", false}, 6, false, 3, false}, - {HeaderField{"key4", "value4-1", false}, 5, true, 2, true}, - // Name match only, because sensitive. - {HeaderField{"key4", "value4-1", true}, 5, false, 2, false}, - // Key not found. - {HeaderField{"key5", "value5-x", false}, 0, false, 0, false}, - } - - staticToDynamic := func(i uint64) uint64 { - if i == 0 { - return 0 - } - return uint64(table.len()) - i + 1 // dynamic is the reversed table - } - - searchStatic := func(f HeaderField) (uint64, bool) { - old := staticTable - staticTable = table - defer func() { staticTable = old }() - return staticTable.search(f) - } - - searchDynamic := func(f HeaderField) (uint64, bool) { - return table.search(f) - } - - for _, test := range tests { - gotI, gotMatch := searchStatic(test.f) - if wantI, wantMatch := test.beforeWantStaticI, test.beforeWantMatch; gotI != wantI || gotMatch != wantMatch { - t.Errorf("before evictions: searchStatic(%+v)=%v,%v want %v,%v", test.f, gotI, gotMatch, wantI, wantMatch) - } - gotI, gotMatch = searchDynamic(test.f) - wantDynamicI := staticToDynamic(test.beforeWantStaticI) - if wantI, wantMatch := wantDynamicI, test.beforeWantMatch; gotI != wantI || gotMatch != wantMatch { - t.Errorf("before evictions: searchDynamic(%+v)=%v,%v want %v,%v", test.f, gotI, gotMatch, wantI, wantMatch) - } - } - - table.evictOldest(3) - - for _, test := range tests { - gotI, gotMatch := searchStatic(test.f) - if wantI, wantMatch := test.afterWantStaticI, test.afterWantMatch; gotI != wantI || gotMatch != wantMatch { - t.Errorf("after evictions: searchStatic(%+v)=%v,%v want %v,%v", test.f, gotI, gotMatch, wantI, wantMatch) - } - gotI, gotMatch = searchDynamic(test.f) - wantDynamicI := staticToDynamic(test.afterWantStaticI) - if wantI, wantMatch := wantDynamicI, test.afterWantMatch; gotI != wantI || gotMatch != wantMatch { - t.Errorf("after evictions: searchDynamic(%+v)=%v,%v want %v,%v", test.f, gotI, gotMatch, wantI, wantMatch) - } - } -} - -func TestHeaderFieldTable_LookupMapEviction(t *testing.T) { - table := &headerFieldTable{} - table.init() - table.addEntry(pair("key1", "value1-1")) - table.addEntry(pair("key2", "value2-1")) - table.addEntry(pair("key1", "value1-2")) - table.addEntry(pair("key3", "value3-1")) - table.addEntry(pair("key4", "value4-1")) - table.addEntry(pair("key2", "value2-2")) - - // evict all pairs - table.evictOldest(table.len()) - - if l := table.len(); l > 0 { - t.Errorf("table.len() = %d, want 0", l) - } - - if l := len(table.byName); l > 0 { - t.Errorf("len(table.byName) = %d, want 0", l) - } - - if l := len(table.byNameValue); l > 0 { - t.Errorf("len(table.byNameValue) = %d, want 0", l) - } -} - -func TestStaticTable(t *testing.T) { - fromSpec := ` - +-------+-----------------------------+---------------+ - | 1 | :authority | | - | 2 | :method | GET | - | 3 | :method | POST | - | 4 | :path | / | - | 5 | :path | /index.html | - | 6 | :scheme | http | - | 7 | :scheme | https | - | 8 | :status | 200 | - | 9 | :status | 204 | - | 10 | :status | 206 | - | 11 | :status | 304 | - | 12 | :status | 400 | - | 13 | :status | 404 | - | 14 | :status | 500 | - | 15 | accept-charset | | - | 16 | accept-encoding | gzip, deflate | - | 17 | accept-language | | - | 18 | accept-ranges | | - | 19 | accept | | - | 20 | access-control-allow-origin | | - | 21 | age | | - | 22 | allow | | - | 23 | authorization | | - | 24 | cache-control | | - | 25 | content-disposition | | - | 26 | content-encoding | | - | 27 | content-language | | - | 28 | content-length | | - | 29 | content-location | | - | 30 | content-range | | - | 31 | content-type | | - | 32 | cookie | | - | 33 | date | | - | 34 | etag | | - | 35 | expect | | - | 36 | expires | | - | 37 | from | | - | 38 | host | | - | 39 | if-match | | - | 40 | if-modified-since | | - | 41 | if-none-match | | - | 42 | if-range | | - | 43 | if-unmodified-since | | - | 44 | last-modified | | - | 45 | link | | - | 46 | location | | - | 47 | max-forwards | | - | 48 | proxy-authenticate | | - | 49 | proxy-authorization | | - | 50 | range | | - | 51 | referer | | - | 52 | refresh | | - | 53 | retry-after | | - | 54 | server | | - | 55 | set-cookie | | - | 56 | strict-transport-security | | - | 57 | transfer-encoding | | - | 58 | user-agent | | - | 59 | vary | | - | 60 | via | | - | 61 | www-authenticate | | - +-------+-----------------------------+---------------+ -` - bs := bufio.NewScanner(strings.NewReader(fromSpec)) - re := regexp.MustCompile(`\| (\d+)\s+\| (\S+)\s*\| (\S(.*\S)?)?\s+\|`) - for bs.Scan() { - l := bs.Text() - if !strings.Contains(l, "|") { - continue - } - m := re.FindStringSubmatch(l) - if m == nil { - continue - } - i, err := strconv.Atoi(m[1]) - if err != nil { - t.Errorf("Bogus integer on line %q", l) - continue - } - if i < 1 || i > staticTable.len() { - t.Errorf("Bogus index %d on line %q", i, l) - continue - } - if got, want := staticTable.ents[i-1].Name, m[2]; got != want { - t.Errorf("header index %d name = %q; want %q", i, got, want) - } - if got, want := staticTable.ents[i-1].Value, m[3]; got != want { - t.Errorf("header index %d value = %q; want %q", i, got, want) - } - } - if err := bs.Err(); err != nil { - t.Error(err) - } -} diff --git a/vendor/golang.org/x/net/http2/http2_test.go b/vendor/golang.org/x/net/http2/http2_test.go deleted file mode 100644 index 52487764..00000000 --- a/vendor/golang.org/x/net/http2/http2_test.go +++ /dev/null @@ -1,199 +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 http2 - -import ( - "bytes" - "errors" - "flag" - "fmt" - "net/http" - "os/exec" - "strconv" - "strings" - "testing" - - "golang.org/x/net/http2/hpack" -) - -var knownFailing = flag.Bool("known_failing", false, "Run known-failing tests.") - -func condSkipFailingTest(t *testing.T) { - if !*knownFailing { - t.Skip("Skipping known-failing test without --known_failing") - } -} - -func init() { - inTests = true - DebugGoroutines = true - flag.BoolVar(&VerboseLogs, "verboseh2", VerboseLogs, "Verbose HTTP/2 debug logging") -} - -func TestSettingString(t *testing.T) { - tests := []struct { - s Setting - want string - }{ - {Setting{SettingMaxFrameSize, 123}, "[MAX_FRAME_SIZE = 123]"}, - {Setting{1<<16 - 1, 123}, "[UNKNOWN_SETTING_65535 = 123]"}, - } - for i, tt := range tests { - got := fmt.Sprint(tt.s) - if got != tt.want { - t.Errorf("%d. for %#v, string = %q; want %q", i, tt.s, got, tt.want) - } - } -} - -type twriter struct { - t testing.TB - st *serverTester // optional -} - -func (w twriter) Write(p []byte) (n int, err error) { - if w.st != nil { - ps := string(p) - for _, phrase := range w.st.logFilter { - if strings.Contains(ps, phrase) { - return len(p), nil // no logging - } - } - } - w.t.Logf("%s", p) - return len(p), nil -} - -// like encodeHeader, but don't add implicit pseudo headers. -func encodeHeaderNoImplicit(t *testing.T, headers ...string) []byte { - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - for len(headers) > 0 { - k, v := headers[0], headers[1] - headers = headers[2:] - if err := enc.WriteField(hpack.HeaderField{Name: k, Value: v}); err != nil { - t.Fatalf("HPACK encoding error for %q/%q: %v", k, v, err) - } - } - return buf.Bytes() -} - -// Verify that curl has http2. -func requireCurl(t *testing.T) { - out, err := dockerLogs(curl(t, "--version")) - if err != nil { - t.Skipf("failed to determine curl features; skipping test") - } - if !strings.Contains(string(out), "HTTP2") { - t.Skip("curl doesn't support HTTP2; skipping test") - } -} - -func curl(t *testing.T, args ...string) (container string) { - out, err := exec.Command("docker", append([]string{"run", "-d", "--net=host", "gohttp2/curl"}, args...)...).Output() - if err != nil { - t.Skipf("Failed to run curl in docker: %v, %s", err, out) - } - return strings.TrimSpace(string(out)) -} - -// Verify that h2load exists. -func requireH2load(t *testing.T) { - out, err := dockerLogs(h2load(t, "--version")) - if err != nil { - t.Skipf("failed to probe h2load; skipping test: %s", out) - } - if !strings.Contains(string(out), "h2load nghttp2/") { - t.Skipf("h2load not present; skipping test. (Output=%q)", out) - } -} - -func h2load(t *testing.T, args ...string) (container string) { - out, err := exec.Command("docker", append([]string{"run", "-d", "--net=host", "--entrypoint=/usr/local/bin/h2load", "gohttp2/curl"}, args...)...).Output() - if err != nil { - t.Skipf("Failed to run h2load in docker: %v, %s", err, out) - } - return strings.TrimSpace(string(out)) -} - -type puppetCommand struct { - fn func(w http.ResponseWriter, r *http.Request) - done chan<- bool -} - -type handlerPuppet struct { - ch chan puppetCommand -} - -func newHandlerPuppet() *handlerPuppet { - return &handlerPuppet{ - ch: make(chan puppetCommand), - } -} - -func (p *handlerPuppet) act(w http.ResponseWriter, r *http.Request) { - for cmd := range p.ch { - cmd.fn(w, r) - cmd.done <- true - } -} - -func (p *handlerPuppet) done() { close(p.ch) } -func (p *handlerPuppet) do(fn func(http.ResponseWriter, *http.Request)) { - done := make(chan bool) - p.ch <- puppetCommand{fn, done} - <-done -} -func dockerLogs(container string) ([]byte, error) { - out, err := exec.Command("docker", "wait", container).CombinedOutput() - if err != nil { - return out, err - } - exitStatus, err := strconv.Atoi(strings.TrimSpace(string(out))) - if err != nil { - return out, errors.New("unexpected exit status from docker wait") - } - out, err = exec.Command("docker", "logs", container).CombinedOutput() - exec.Command("docker", "rm", container).Run() - if err == nil && exitStatus != 0 { - err = fmt.Errorf("exit status %d: %s", exitStatus, out) - } - return out, err -} - -func kill(container string) { - exec.Command("docker", "kill", container).Run() - exec.Command("docker", "rm", container).Run() -} - -func cleanDate(res *http.Response) { - if d := res.Header["Date"]; len(d) == 1 { - d[0] = "XXX" - } -} - -func TestSorterPoolAllocs(t *testing.T) { - ss := []string{"a", "b", "c"} - h := http.Header{ - "a": nil, - "b": nil, - "c": nil, - } - sorter := new(sorter) - - if allocs := testing.AllocsPerRun(100, func() { - sorter.SortStrings(ss) - }); allocs >= 1 { - t.Logf("SortStrings allocs = %v; want <1", allocs) - } - - if allocs := testing.AllocsPerRun(5, func() { - if len(sorter.Keys(h)) != 3 { - t.Fatal("wrong result") - } - }); allocs > 0 { - t.Logf("Keys allocs = %v; want <1", allocs) - } -} diff --git a/vendor/golang.org/x/net/http2/pipe_test.go b/vendor/golang.org/x/net/http2/pipe_test.go deleted file mode 100644 index 1bf351ff..00000000 --- a/vendor/golang.org/x/net/http2/pipe_test.go +++ /dev/null @@ -1,130 +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 http2 - -import ( - "bytes" - "errors" - "io" - "io/ioutil" - "testing" -) - -func TestPipeClose(t *testing.T) { - var p pipe - p.b = new(bytes.Buffer) - a := errors.New("a") - b := errors.New("b") - p.CloseWithError(a) - p.CloseWithError(b) - _, err := p.Read(make([]byte, 1)) - if err != a { - t.Errorf("err = %v want %v", err, a) - } -} - -func TestPipeDoneChan(t *testing.T) { - var p pipe - done := p.Done() - select { - case <-done: - t.Fatal("done too soon") - default: - } - p.CloseWithError(io.EOF) - select { - case <-done: - default: - t.Fatal("should be done") - } -} - -func TestPipeDoneChan_ErrFirst(t *testing.T) { - var p pipe - p.CloseWithError(io.EOF) - done := p.Done() - select { - case <-done: - default: - t.Fatal("should be done") - } -} - -func TestPipeDoneChan_Break(t *testing.T) { - var p pipe - done := p.Done() - select { - case <-done: - t.Fatal("done too soon") - default: - } - p.BreakWithError(io.EOF) - select { - case <-done: - default: - t.Fatal("should be done") - } -} - -func TestPipeDoneChan_Break_ErrFirst(t *testing.T) { - var p pipe - p.BreakWithError(io.EOF) - done := p.Done() - select { - case <-done: - default: - t.Fatal("should be done") - } -} - -func TestPipeCloseWithError(t *testing.T) { - p := &pipe{b: new(bytes.Buffer)} - const body = "foo" - io.WriteString(p, body) - a := errors.New("test error") - p.CloseWithError(a) - all, err := ioutil.ReadAll(p) - if string(all) != body { - t.Errorf("read bytes = %q; want %q", all, body) - } - if err != a { - t.Logf("read error = %v, %v", err, a) - } - // Read and Write should fail. - if n, err := p.Write([]byte("abc")); err != errClosedPipeWrite || n != 0 { - t.Errorf("Write(abc) after close\ngot %v, %v\nwant 0, %v", n, err, errClosedPipeWrite) - } - if n, err := p.Read(make([]byte, 1)); err == nil || n != 0 { - t.Errorf("Read() after close\ngot %v, nil\nwant 0, %v", n, errClosedPipeWrite) - } -} - -func TestPipeBreakWithError(t *testing.T) { - p := &pipe{b: new(bytes.Buffer)} - io.WriteString(p, "foo") - a := errors.New("test err") - p.BreakWithError(a) - all, err := ioutil.ReadAll(p) - if string(all) != "" { - t.Errorf("read bytes = %q; want empty string", all) - } - if err != a { - t.Logf("read error = %v, %v", err, a) - } - if p.b != nil { - t.Errorf("buffer should be nil after BreakWithError") - } - // Write should succeed silently. - if n, err := p.Write([]byte("abc")); err != nil || n != 3 { - t.Errorf("Write(abc) after break\ngot %v, %v\nwant 0, nil", n, err) - } - if p.b != nil { - t.Errorf("buffer should be nil after Write") - } - // Read should fail. - if n, err := p.Read(make([]byte, 1)); err == nil || n != 0 { - t.Errorf("Read() after close\ngot %v, nil\nwant 0, not nil", n) - } -} diff --git a/vendor/golang.org/x/net/http2/server_push_test.go b/vendor/golang.org/x/net/http2/server_push_test.go deleted file mode 100644 index 918fd30d..00000000 --- a/vendor/golang.org/x/net/http2/server_push_test.go +++ /dev/null @@ -1,521 +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. - -// +build go1.8 - -package http2 - -import ( - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - "reflect" - "strconv" - "sync" - "testing" - "time" -) - -func TestServer_Push_Success(t *testing.T) { - const ( - mainBody = "<html>index page</html>" - pushedBody = "<html>pushed page</html>" - userAgent = "testagent" - cookie = "testcookie" - ) - - var stURL string - checkPromisedReq := func(r *http.Request, wantMethod string, wantH http.Header) error { - if got, want := r.Method, wantMethod; got != want { - return fmt.Errorf("promised Req.Method=%q, want %q", got, want) - } - if got, want := r.Header, wantH; !reflect.DeepEqual(got, want) { - return fmt.Errorf("promised Req.Header=%q, want %q", got, want) - } - if got, want := "https://"+r.Host, stURL; got != want { - return fmt.Errorf("promised Req.Host=%q, want %q", got, want) - } - if r.Body == nil { - return fmt.Errorf("nil Body") - } - if buf, err := ioutil.ReadAll(r.Body); err != nil || len(buf) != 0 { - return fmt.Errorf("ReadAll(Body)=%q,%v, want '',nil", buf, err) - } - return nil - } - - errc := make(chan error, 3) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - switch r.URL.RequestURI() { - case "/": - // Push "/pushed?get" as a GET request, using an absolute URL. - opt := &http.PushOptions{ - Header: http.Header{ - "User-Agent": {userAgent}, - }, - } - if err := w.(http.Pusher).Push(stURL+"/pushed?get", opt); err != nil { - errc <- fmt.Errorf("error pushing /pushed?get: %v", err) - return - } - // Push "/pushed?head" as a HEAD request, using a path. - opt = &http.PushOptions{ - Method: "HEAD", - Header: http.Header{ - "User-Agent": {userAgent}, - "Cookie": {cookie}, - }, - } - if err := w.(http.Pusher).Push("/pushed?head", opt); err != nil { - errc <- fmt.Errorf("error pushing /pushed?head: %v", err) - return - } - w.Header().Set("Content-Type", "text/html") - w.Header().Set("Content-Length", strconv.Itoa(len(mainBody))) - w.WriteHeader(200) - io.WriteString(w, mainBody) - errc <- nil - - case "/pushed?get": - wantH := http.Header{} - wantH.Set("User-Agent", userAgent) - if err := checkPromisedReq(r, "GET", wantH); err != nil { - errc <- fmt.Errorf("/pushed?get: %v", err) - return - } - w.Header().Set("Content-Type", "text/html") - w.Header().Set("Content-Length", strconv.Itoa(len(pushedBody))) - w.WriteHeader(200) - io.WriteString(w, pushedBody) - errc <- nil - - case "/pushed?head": - wantH := http.Header{} - wantH.Set("User-Agent", userAgent) - wantH.Set("Cookie", cookie) - if err := checkPromisedReq(r, "HEAD", wantH); err != nil { - errc <- fmt.Errorf("/pushed?head: %v", err) - return - } - w.WriteHeader(204) - errc <- nil - - default: - errc <- fmt.Errorf("unknown RequestURL %q", r.URL.RequestURI()) - } - }) - stURL = st.ts.URL - - // Send one request, which should push two responses. - st.greet() - getSlash(st) - for k := 0; k < 3; k++ { - select { - case <-time.After(2 * time.Second): - t.Errorf("timeout waiting for handler %d to finish", k) - case err := <-errc: - if err != nil { - t.Fatal(err) - } - } - } - - checkPushPromise := func(f Frame, promiseID uint32, wantH [][2]string) error { - pp, ok := f.(*PushPromiseFrame) - if !ok { - return fmt.Errorf("got a %T; want *PushPromiseFrame", f) - } - if !pp.HeadersEnded() { - return fmt.Errorf("want END_HEADERS flag in PushPromiseFrame") - } - if got, want := pp.PromiseID, promiseID; got != want { - return fmt.Errorf("got PromiseID %v; want %v", got, want) - } - gotH := st.decodeHeader(pp.HeaderBlockFragment()) - if !reflect.DeepEqual(gotH, wantH) { - return fmt.Errorf("got promised headers %v; want %v", gotH, wantH) - } - return nil - } - checkHeaders := func(f Frame, wantH [][2]string) error { - hf, ok := f.(*HeadersFrame) - if !ok { - return fmt.Errorf("got a %T; want *HeadersFrame", f) - } - gotH := st.decodeHeader(hf.HeaderBlockFragment()) - if !reflect.DeepEqual(gotH, wantH) { - return fmt.Errorf("got response headers %v; want %v", gotH, wantH) - } - return nil - } - checkData := func(f Frame, wantData string) error { - df, ok := f.(*DataFrame) - if !ok { - return fmt.Errorf("got a %T; want *DataFrame", f) - } - if gotData := string(df.Data()); gotData != wantData { - return fmt.Errorf("got response data %q; want %q", gotData, wantData) - } - return nil - } - - // Stream 1 has 2 PUSH_PROMISE + HEADERS + DATA - // Stream 2 has HEADERS + DATA - // Stream 4 has HEADERS - expected := map[uint32][]func(Frame) error{ - 1: { - func(f Frame) error { - return checkPushPromise(f, 2, [][2]string{ - {":method", "GET"}, - {":scheme", "https"}, - {":authority", st.ts.Listener.Addr().String()}, - {":path", "/pushed?get"}, - {"user-agent", userAgent}, - }) - }, - func(f Frame) error { - return checkPushPromise(f, 4, [][2]string{ - {":method", "HEAD"}, - {":scheme", "https"}, - {":authority", st.ts.Listener.Addr().String()}, - {":path", "/pushed?head"}, - {"cookie", cookie}, - {"user-agent", userAgent}, - }) - }, - func(f Frame) error { - return checkHeaders(f, [][2]string{ - {":status", "200"}, - {"content-type", "text/html"}, - {"content-length", strconv.Itoa(len(mainBody))}, - }) - }, - func(f Frame) error { - return checkData(f, mainBody) - }, - }, - 2: { - func(f Frame) error { - return checkHeaders(f, [][2]string{ - {":status", "200"}, - {"content-type", "text/html"}, - {"content-length", strconv.Itoa(len(pushedBody))}, - }) - }, - func(f Frame) error { - return checkData(f, pushedBody) - }, - }, - 4: { - func(f Frame) error { - return checkHeaders(f, [][2]string{ - {":status", "204"}, - }) - }, - }, - } - - consumed := map[uint32]int{} - for k := 0; len(expected) > 0; k++ { - f, err := st.readFrame() - if err != nil { - for id, left := range expected { - t.Errorf("stream %d: missing %d frames", id, len(left)) - } - t.Fatalf("readFrame %d: %v", k, err) - } - id := f.Header().StreamID - label := fmt.Sprintf("stream %d, frame %d", id, consumed[id]) - if len(expected[id]) == 0 { - t.Fatalf("%s: unexpected frame %#+v", label, f) - } - check := expected[id][0] - expected[id] = expected[id][1:] - if len(expected[id]) == 0 { - delete(expected, id) - } - if err := check(f); err != nil { - t.Fatalf("%s: %v", label, err) - } - consumed[id]++ - } -} - -func TestServer_Push_SuccessNoRace(t *testing.T) { - // Regression test for issue #18326. Ensure the request handler can mutate - // pushed request headers without racing with the PUSH_PROMISE write. - errc := make(chan error, 2) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - switch r.URL.RequestURI() { - case "/": - opt := &http.PushOptions{ - Header: http.Header{"User-Agent": {"testagent"}}, - } - if err := w.(http.Pusher).Push("/pushed", opt); err != nil { - errc <- fmt.Errorf("error pushing: %v", err) - return - } - w.WriteHeader(200) - errc <- nil - - case "/pushed": - // Update request header, ensure there is no race. - r.Header.Set("User-Agent", "newagent") - r.Header.Set("Cookie", "cookie") - w.WriteHeader(200) - errc <- nil - - default: - errc <- fmt.Errorf("unknown RequestURL %q", r.URL.RequestURI()) - } - }) - - // Send one request, which should push one response. - st.greet() - getSlash(st) - for k := 0; k < 2; k++ { - select { - case <-time.After(2 * time.Second): - t.Errorf("timeout waiting for handler %d to finish", k) - case err := <-errc: - if err != nil { - t.Fatal(err) - } - } - } -} - -func TestServer_Push_RejectRecursivePush(t *testing.T) { - // Expect two requests, but might get three if there's a bug and the second push succeeds. - errc := make(chan error, 3) - handler := func(w http.ResponseWriter, r *http.Request) error { - baseURL := "https://" + r.Host - switch r.URL.Path { - case "/": - if err := w.(http.Pusher).Push(baseURL+"/push1", nil); err != nil { - return fmt.Errorf("first Push()=%v, want nil", err) - } - return nil - - case "/push1": - if got, want := w.(http.Pusher).Push(baseURL+"/push2", nil), ErrRecursivePush; got != want { - return fmt.Errorf("Push()=%v, want %v", got, want) - } - return nil - - default: - return fmt.Errorf("unexpected path: %q", r.URL.Path) - } - } - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - errc <- handler(w, r) - }) - defer st.Close() - st.greet() - getSlash(st) - if err := <-errc; err != nil { - t.Errorf("First request failed: %v", err) - } - if err := <-errc; err != nil { - t.Errorf("Second request failed: %v", err) - } -} - -func testServer_Push_RejectSingleRequest(t *testing.T, doPush func(http.Pusher, *http.Request) error, settings ...Setting) { - // Expect one request, but might get two if there's a bug and the push succeeds. - errc := make(chan error, 2) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - errc <- doPush(w.(http.Pusher), r) - }) - defer st.Close() - st.greet() - if err := st.fr.WriteSettings(settings...); err != nil { - st.t.Fatalf("WriteSettings: %v", err) - } - st.wantSettingsAck() - getSlash(st) - if err := <-errc; err != nil { - t.Error(err) - } - // Should not get a PUSH_PROMISE frame. - hf := st.wantHeaders() - if !hf.StreamEnded() { - t.Error("stream should end after headers") - } -} - -func TestServer_Push_RejectIfDisabled(t *testing.T) { - testServer_Push_RejectSingleRequest(t, - func(p http.Pusher, r *http.Request) error { - if got, want := p.Push("https://"+r.Host+"/pushed", nil), http.ErrNotSupported; got != want { - return fmt.Errorf("Push()=%v, want %v", got, want) - } - return nil - }, - Setting{SettingEnablePush, 0}) -} - -func TestServer_Push_RejectWhenNoConcurrentStreams(t *testing.T) { - testServer_Push_RejectSingleRequest(t, - func(p http.Pusher, r *http.Request) error { - if got, want := p.Push("https://"+r.Host+"/pushed", nil), ErrPushLimitReached; got != want { - return fmt.Errorf("Push()=%v, want %v", got, want) - } - return nil - }, - Setting{SettingMaxConcurrentStreams, 0}) -} - -func TestServer_Push_RejectWrongScheme(t *testing.T) { - testServer_Push_RejectSingleRequest(t, - func(p http.Pusher, r *http.Request) error { - if err := p.Push("http://"+r.Host+"/pushed", nil); err == nil { - return errors.New("Push() should have failed (push target URL is http)") - } - return nil - }) -} - -func TestServer_Push_RejectMissingHost(t *testing.T) { - testServer_Push_RejectSingleRequest(t, - func(p http.Pusher, r *http.Request) error { - if err := p.Push("https:pushed", nil); err == nil { - return errors.New("Push() should have failed (push target URL missing host)") - } - return nil - }) -} - -func TestServer_Push_RejectRelativePath(t *testing.T) { - testServer_Push_RejectSingleRequest(t, - func(p http.Pusher, r *http.Request) error { - if err := p.Push("../test", nil); err == nil { - return errors.New("Push() should have failed (push target is a relative path)") - } - return nil - }) -} - -func TestServer_Push_RejectForbiddenMethod(t *testing.T) { - testServer_Push_RejectSingleRequest(t, - func(p http.Pusher, r *http.Request) error { - if err := p.Push("https://"+r.Host+"/pushed", &http.PushOptions{Method: "POST"}); err == nil { - return errors.New("Push() should have failed (cannot promise a POST)") - } - return nil - }) -} - -func TestServer_Push_RejectForbiddenHeader(t *testing.T) { - testServer_Push_RejectSingleRequest(t, - func(p http.Pusher, r *http.Request) error { - header := http.Header{ - "Content-Length": {"10"}, - "Content-Encoding": {"gzip"}, - "Trailer": {"Foo"}, - "Te": {"trailers"}, - "Host": {"test.com"}, - ":authority": {"test.com"}, - } - if err := p.Push("https://"+r.Host+"/pushed", &http.PushOptions{Header: header}); err == nil { - return errors.New("Push() should have failed (forbidden headers)") - } - return nil - }) -} - -func TestServer_Push_StateTransitions(t *testing.T) { - const body = "foo" - - gotPromise := make(chan bool) - finishedPush := make(chan bool) - - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - switch r.URL.RequestURI() { - case "/": - if err := w.(http.Pusher).Push("/pushed", nil); err != nil { - t.Errorf("Push error: %v", err) - } - // Don't finish this request until the push finishes so we don't - // nondeterministically interleave output frames with the push. - <-finishedPush - case "/pushed": - <-gotPromise - } - w.Header().Set("Content-Type", "text/html") - w.Header().Set("Content-Length", strconv.Itoa(len(body))) - w.WriteHeader(200) - io.WriteString(w, body) - }) - defer st.Close() - - st.greet() - if st.stream(2) != nil { - t.Fatal("stream 2 should be empty") - } - if got, want := st.streamState(2), stateIdle; got != want { - t.Fatalf("streamState(2)=%v, want %v", got, want) - } - getSlash(st) - // After the PUSH_PROMISE is sent, the stream should be stateHalfClosedRemote. - st.wantPushPromise() - if got, want := st.streamState(2), stateHalfClosedRemote; got != want { - t.Fatalf("streamState(2)=%v, want %v", got, want) - } - // We stall the HTTP handler for "/pushed" until the above check. If we don't - // stall the handler, then the handler might write HEADERS and DATA and finish - // the stream before we check st.streamState(2) -- should that happen, we'll - // see stateClosed and fail the above check. - close(gotPromise) - st.wantHeaders() - if df := st.wantData(); !df.StreamEnded() { - t.Fatal("expected END_STREAM flag on DATA") - } - if got, want := st.streamState(2), stateClosed; got != want { - t.Fatalf("streamState(2)=%v, want %v", got, want) - } - close(finishedPush) -} - -func TestServer_Push_RejectAfterGoAway(t *testing.T) { - var readyOnce sync.Once - ready := make(chan struct{}) - errc := make(chan error, 2) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - select { - case <-ready: - case <-time.After(5 * time.Second): - errc <- fmt.Errorf("timeout waiting for GOAWAY to be processed") - } - if got, want := w.(http.Pusher).Push("https://"+r.Host+"/pushed", nil), http.ErrNotSupported; got != want { - errc <- fmt.Errorf("Push()=%v, want %v", got, want) - } - errc <- nil - }) - defer st.Close() - st.greet() - getSlash(st) - - // Send GOAWAY and wait for it to be processed. - st.fr.WriteGoAway(1, ErrCodeNo, nil) - go func() { - for { - select { - case <-ready: - return - default: - } - st.sc.serveMsgCh <- func(loopNum int) { - if !st.sc.pushEnabled { - readyOnce.Do(func() { close(ready) }) - } - } - } - }() - if err := <-errc; err != nil { - t.Error(err) - } -} diff --git a/vendor/golang.org/x/net/http2/server_test.go b/vendor/golang.org/x/net/http2/server_test.go deleted file mode 100644 index c5d8459c..00000000 --- a/vendor/golang.org/x/net/http2/server_test.go +++ /dev/null @@ -1,3725 +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 http2 - -import ( - "bytes" - "crypto/tls" - "errors" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "net" - "net/http" - "net/http/httptest" - "os" - "os/exec" - "reflect" - "runtime" - "strconv" - "strings" - "sync" - "sync/atomic" - "testing" - "time" - - "golang.org/x/net/http2/hpack" -) - -var stderrVerbose = flag.Bool("stderr_verbose", false, "Mirror verbosity to stderr, unbuffered") - -func stderrv() io.Writer { - if *stderrVerbose { - return os.Stderr - } - - return ioutil.Discard -} - -type serverTester struct { - cc net.Conn // client conn - t testing.TB - ts *httptest.Server - fr *Framer - serverLogBuf bytes.Buffer // logger for httptest.Server - logFilter []string // substrings to filter out - scMu sync.Mutex // guards sc - sc *serverConn - hpackDec *hpack.Decoder - decodedHeaders [][2]string - - // If http2debug!=2, then we capture Frame debug logs that will be written - // to t.Log after a test fails. The read and write logs use separate locks - // and buffers so we don't accidentally introduce synchronization between - // the read and write goroutines, which may hide data races. - frameReadLogMu sync.Mutex - frameReadLogBuf bytes.Buffer - frameWriteLogMu sync.Mutex - frameWriteLogBuf bytes.Buffer - - // writing headers: - headerBuf bytes.Buffer - hpackEnc *hpack.Encoder -} - -func init() { - testHookOnPanicMu = new(sync.Mutex) - goAwayTimeout = 25 * time.Millisecond -} - -func resetHooks() { - testHookOnPanicMu.Lock() - testHookOnPanic = nil - testHookOnPanicMu.Unlock() -} - -type serverTesterOpt string - -var optOnlyServer = serverTesterOpt("only_server") -var optQuiet = serverTesterOpt("quiet_logging") -var optFramerReuseFrames = serverTesterOpt("frame_reuse_frames") - -func newServerTester(t testing.TB, handler http.HandlerFunc, opts ...interface{}) *serverTester { - resetHooks() - - ts := httptest.NewUnstartedServer(handler) - - tlsConfig := &tls.Config{ - InsecureSkipVerify: true, - NextProtos: []string{NextProtoTLS}, - } - - var onlyServer, quiet, framerReuseFrames bool - h2server := new(Server) - for _, opt := range opts { - switch v := opt.(type) { - case func(*tls.Config): - v(tlsConfig) - case func(*httptest.Server): - v(ts) - case func(*Server): - v(h2server) - case serverTesterOpt: - switch v { - case optOnlyServer: - onlyServer = true - case optQuiet: - quiet = true - case optFramerReuseFrames: - framerReuseFrames = true - } - case func(net.Conn, http.ConnState): - ts.Config.ConnState = v - default: - t.Fatalf("unknown newServerTester option type %T", v) - } - } - - ConfigureServer(ts.Config, h2server) - - st := &serverTester{ - t: t, - ts: ts, - } - st.hpackEnc = hpack.NewEncoder(&st.headerBuf) - st.hpackDec = hpack.NewDecoder(initialHeaderTableSize, st.onHeaderField) - - ts.TLS = ts.Config.TLSConfig // the httptest.Server has its own copy of this TLS config - if quiet { - ts.Config.ErrorLog = log.New(ioutil.Discard, "", 0) - } else { - ts.Config.ErrorLog = log.New(io.MultiWriter(stderrv(), twriter{t: t, st: st}, &st.serverLogBuf), "", log.LstdFlags) - } - ts.StartTLS() - - if VerboseLogs { - t.Logf("Running test server at: %s", ts.URL) - } - testHookGetServerConn = func(v *serverConn) { - st.scMu.Lock() - defer st.scMu.Unlock() - st.sc = v - } - log.SetOutput(io.MultiWriter(stderrv(), twriter{t: t, st: st})) - if !onlyServer { - cc, err := tls.Dial("tcp", ts.Listener.Addr().String(), tlsConfig) - if err != nil { - t.Fatal(err) - } - st.cc = cc - st.fr = NewFramer(cc, cc) - if framerReuseFrames { - st.fr.SetReuseFrames() - } - if !logFrameReads && !logFrameWrites { - st.fr.debugReadLoggerf = func(m string, v ...interface{}) { - m = time.Now().Format("2006-01-02 15:04:05.999999999 ") + strings.TrimPrefix(m, "http2: ") + "\n" - st.frameReadLogMu.Lock() - fmt.Fprintf(&st.frameReadLogBuf, m, v...) - st.frameReadLogMu.Unlock() - } - st.fr.debugWriteLoggerf = func(m string, v ...interface{}) { - m = time.Now().Format("2006-01-02 15:04:05.999999999 ") + strings.TrimPrefix(m, "http2: ") + "\n" - st.frameWriteLogMu.Lock() - fmt.Fprintf(&st.frameWriteLogBuf, m, v...) - st.frameWriteLogMu.Unlock() - } - st.fr.logReads = true - st.fr.logWrites = true - } - } - return st -} - -func (st *serverTester) closeConn() { - st.scMu.Lock() - defer st.scMu.Unlock() - st.sc.conn.Close() -} - -func (st *serverTester) addLogFilter(phrase string) { - st.logFilter = append(st.logFilter, phrase) -} - -func (st *serverTester) stream(id uint32) *stream { - ch := make(chan *stream, 1) - st.sc.serveMsgCh <- func(int) { - ch <- st.sc.streams[id] - } - return <-ch -} - -func (st *serverTester) streamState(id uint32) streamState { - ch := make(chan streamState, 1) - st.sc.serveMsgCh <- func(int) { - state, _ := st.sc.state(id) - ch <- state - } - return <-ch -} - -// loopNum reports how many times this conn's select loop has gone around. -func (st *serverTester) loopNum() int { - lastc := make(chan int, 1) - st.sc.serveMsgCh <- func(loopNum int) { - lastc <- loopNum - } - return <-lastc -} - -// awaitIdle heuristically awaits for the server conn's select loop to be idle. -// The heuristic is that the server connection's serve loop must schedule -// 50 times in a row without any channel sends or receives occurring. -func (st *serverTester) awaitIdle() { - remain := 50 - last := st.loopNum() - for remain > 0 { - n := st.loopNum() - if n == last+1 { - remain-- - } else { - remain = 50 - } - last = n - } -} - -func (st *serverTester) Close() { - if st.t.Failed() { - st.frameReadLogMu.Lock() - if st.frameReadLogBuf.Len() > 0 { - st.t.Logf("Framer read log:\n%s", st.frameReadLogBuf.String()) - } - st.frameReadLogMu.Unlock() - - st.frameWriteLogMu.Lock() - if st.frameWriteLogBuf.Len() > 0 { - st.t.Logf("Framer write log:\n%s", st.frameWriteLogBuf.String()) - } - st.frameWriteLogMu.Unlock() - - // If we failed already (and are likely in a Fatal, - // unwindowing), force close the connection, so the - // httptest.Server doesn't wait forever for the conn - // to close. - if st.cc != nil { - st.cc.Close() - } - } - st.ts.Close() - if st.cc != nil { - st.cc.Close() - } - log.SetOutput(os.Stderr) -} - -// greet initiates the client's HTTP/2 connection into a state where -// frames may be sent. -func (st *serverTester) greet() { - st.greetAndCheckSettings(func(Setting) error { return nil }) -} - -func (st *serverTester) greetAndCheckSettings(checkSetting func(s Setting) error) { - st.writePreface() - st.writeInitialSettings() - st.wantSettings().ForeachSetting(checkSetting) - st.writeSettingsAck() - - // The initial WINDOW_UPDATE and SETTINGS ACK can come in any order. - var gotSettingsAck bool - var gotWindowUpdate bool - - for i := 0; i < 2; i++ { - f, err := st.readFrame() - if err != nil { - st.t.Fatal(err) - } - switch f := f.(type) { - case *SettingsFrame: - if !f.Header().Flags.Has(FlagSettingsAck) { - st.t.Fatal("Settings Frame didn't have ACK set") - } - gotSettingsAck = true - - case *WindowUpdateFrame: - if f.FrameHeader.StreamID != 0 { - st.t.Fatalf("WindowUpdate StreamID = %d; want 0", f.FrameHeader.StreamID) - } - incr := uint32((&Server{}).initialConnRecvWindowSize() - initialWindowSize) - if f.Increment != incr { - st.t.Fatalf("WindowUpdate increment = %d; want %d", f.Increment, incr) - } - gotWindowUpdate = true - - default: - st.t.Fatalf("Wanting a settings ACK or window update, received a %T", f) - } - } - - if !gotSettingsAck { - st.t.Fatalf("Didn't get a settings ACK") - } - if !gotWindowUpdate { - st.t.Fatalf("Didn't get a window update") - } -} - -func (st *serverTester) writePreface() { - n, err := st.cc.Write(clientPreface) - if err != nil { - st.t.Fatalf("Error writing client preface: %v", err) - } - if n != len(clientPreface) { - st.t.Fatalf("Writing client preface, wrote %d bytes; want %d", n, len(clientPreface)) - } -} - -func (st *serverTester) writeInitialSettings() { - if err := st.fr.WriteSettings(); err != nil { - st.t.Fatalf("Error writing initial SETTINGS frame from client to server: %v", err) - } -} - -func (st *serverTester) writeSettingsAck() { - if err := st.fr.WriteSettingsAck(); err != nil { - st.t.Fatalf("Error writing ACK of server's SETTINGS: %v", err) - } -} - -func (st *serverTester) writeHeaders(p HeadersFrameParam) { - if err := st.fr.WriteHeaders(p); err != nil { - st.t.Fatalf("Error writing HEADERS: %v", err) - } -} - -func (st *serverTester) writePriority(id uint32, p PriorityParam) { - if err := st.fr.WritePriority(id, p); err != nil { - st.t.Fatalf("Error writing PRIORITY: %v", err) - } -} - -func (st *serverTester) encodeHeaderField(k, v string) { - err := st.hpackEnc.WriteField(hpack.HeaderField{Name: k, Value: v}) - if err != nil { - st.t.Fatalf("HPACK encoding error for %q/%q: %v", k, v, err) - } -} - -// encodeHeaderRaw is the magic-free version of encodeHeader. -// It takes 0 or more (k, v) pairs and encodes them. -func (st *serverTester) encodeHeaderRaw(headers ...string) []byte { - if len(headers)%2 == 1 { - panic("odd number of kv args") - } - st.headerBuf.Reset() - for len(headers) > 0 { - k, v := headers[0], headers[1] - st.encodeHeaderField(k, v) - headers = headers[2:] - } - return st.headerBuf.Bytes() -} - -// encodeHeader encodes headers and returns their HPACK bytes. headers -// must contain an even number of key/value pairs. There may be -// multiple pairs for keys (e.g. "cookie"). The :method, :path, and -// :scheme headers default to GET, / and https. The :authority header -// defaults to st.ts.Listener.Addr(). -func (st *serverTester) encodeHeader(headers ...string) []byte { - if len(headers)%2 == 1 { - panic("odd number of kv args") - } - - st.headerBuf.Reset() - defaultAuthority := st.ts.Listener.Addr().String() - - if len(headers) == 0 { - // Fast path, mostly for benchmarks, so test code doesn't pollute - // profiles when we're looking to improve server allocations. - st.encodeHeaderField(":method", "GET") - st.encodeHeaderField(":scheme", "https") - st.encodeHeaderField(":authority", defaultAuthority) - st.encodeHeaderField(":path", "/") - return st.headerBuf.Bytes() - } - - if len(headers) == 2 && headers[0] == ":method" { - // Another fast path for benchmarks. - st.encodeHeaderField(":method", headers[1]) - st.encodeHeaderField(":scheme", "https") - st.encodeHeaderField(":authority", defaultAuthority) - st.encodeHeaderField(":path", "/") - return st.headerBuf.Bytes() - } - - pseudoCount := map[string]int{} - keys := []string{":method", ":scheme", ":authority", ":path"} - vals := map[string][]string{ - ":method": {"GET"}, - ":scheme": {"https"}, - ":authority": {defaultAuthority}, - ":path": {"/"}, - } - for len(headers) > 0 { - k, v := headers[0], headers[1] - headers = headers[2:] - if _, ok := vals[k]; !ok { - keys = append(keys, k) - } - if strings.HasPrefix(k, ":") { - pseudoCount[k]++ - if pseudoCount[k] == 1 { - vals[k] = []string{v} - } else { - // Allows testing of invalid headers w/ dup pseudo fields. - vals[k] = append(vals[k], v) - } - } else { - vals[k] = append(vals[k], v) - } - } - for _, k := range keys { - for _, v := range vals[k] { - st.encodeHeaderField(k, v) - } - } - return st.headerBuf.Bytes() -} - -// bodylessReq1 writes a HEADERS frames with StreamID 1 and EndStream and EndHeaders set. -func (st *serverTester) bodylessReq1(headers ...string) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(headers...), - EndStream: true, - EndHeaders: true, - }) -} - -func (st *serverTester) writeData(streamID uint32, endStream bool, data []byte) { - if err := st.fr.WriteData(streamID, endStream, data); err != nil { - st.t.Fatalf("Error writing DATA: %v", err) - } -} - -func (st *serverTester) writeDataPadded(streamID uint32, endStream bool, data, pad []byte) { - if err := st.fr.WriteDataPadded(streamID, endStream, data, pad); err != nil { - st.t.Fatalf("Error writing DATA: %v", err) - } -} - -func readFrameTimeout(fr *Framer, wait time.Duration) (Frame, error) { - ch := make(chan interface{}, 1) - go func() { - fr, err := fr.ReadFrame() - if err != nil { - ch <- err - } else { - ch <- fr - } - }() - t := time.NewTimer(wait) - select { - case v := <-ch: - t.Stop() - if fr, ok := v.(Frame); ok { - return fr, nil - } - return nil, v.(error) - case <-t.C: - return nil, errors.New("timeout waiting for frame") - } -} - -func (st *serverTester) readFrame() (Frame, error) { - return readFrameTimeout(st.fr, 2*time.Second) -} - -func (st *serverTester) wantHeaders() *HeadersFrame { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting a HEADERS frame: %v", err) - } - hf, ok := f.(*HeadersFrame) - if !ok { - st.t.Fatalf("got a %T; want *HeadersFrame", f) - } - return hf -} - -func (st *serverTester) wantContinuation() *ContinuationFrame { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting a CONTINUATION frame: %v", err) - } - cf, ok := f.(*ContinuationFrame) - if !ok { - st.t.Fatalf("got a %T; want *ContinuationFrame", f) - } - return cf -} - -func (st *serverTester) wantData() *DataFrame { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting a DATA frame: %v", err) - } - df, ok := f.(*DataFrame) - if !ok { - st.t.Fatalf("got a %T; want *DataFrame", f) - } - return df -} - -func (st *serverTester) wantSettings() *SettingsFrame { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting a SETTINGS frame: %v", err) - } - sf, ok := f.(*SettingsFrame) - if !ok { - st.t.Fatalf("got a %T; want *SettingsFrame", f) - } - return sf -} - -func (st *serverTester) wantPing() *PingFrame { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting a PING frame: %v", err) - } - pf, ok := f.(*PingFrame) - if !ok { - st.t.Fatalf("got a %T; want *PingFrame", f) - } - return pf -} - -func (st *serverTester) wantGoAway() *GoAwayFrame { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting a GOAWAY frame: %v", err) - } - gf, ok := f.(*GoAwayFrame) - if !ok { - st.t.Fatalf("got a %T; want *GoAwayFrame", f) - } - return gf -} - -func (st *serverTester) wantRSTStream(streamID uint32, errCode ErrCode) { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting an RSTStream frame: %v", err) - } - rs, ok := f.(*RSTStreamFrame) - if !ok { - st.t.Fatalf("got a %T; want *RSTStreamFrame", f) - } - if rs.FrameHeader.StreamID != streamID { - st.t.Fatalf("RSTStream StreamID = %d; want %d", rs.FrameHeader.StreamID, streamID) - } - if rs.ErrCode != errCode { - st.t.Fatalf("RSTStream ErrCode = %d (%s); want %d (%s)", rs.ErrCode, rs.ErrCode, errCode, errCode) - } -} - -func (st *serverTester) wantWindowUpdate(streamID, incr uint32) { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting a WINDOW_UPDATE frame: %v", err) - } - wu, ok := f.(*WindowUpdateFrame) - if !ok { - st.t.Fatalf("got a %T; want *WindowUpdateFrame", f) - } - if wu.FrameHeader.StreamID != streamID { - st.t.Fatalf("WindowUpdate StreamID = %d; want %d", wu.FrameHeader.StreamID, streamID) - } - if wu.Increment != incr { - st.t.Fatalf("WindowUpdate increment = %d; want %d", wu.Increment, incr) - } -} - -func (st *serverTester) wantSettingsAck() { - f, err := st.readFrame() - if err != nil { - st.t.Fatal(err) - } - sf, ok := f.(*SettingsFrame) - if !ok { - st.t.Fatalf("Wanting a settings ACK, received a %T", f) - } - if !sf.Header().Flags.Has(FlagSettingsAck) { - st.t.Fatal("Settings Frame didn't have ACK set") - } -} - -func (st *serverTester) wantPushPromise() *PushPromiseFrame { - f, err := st.readFrame() - if err != nil { - st.t.Fatal(err) - } - ppf, ok := f.(*PushPromiseFrame) - if !ok { - st.t.Fatalf("Wanted PushPromise, received %T", ppf) - } - return ppf -} - -func TestServer(t *testing.T) { - gotReq := make(chan bool, 1) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Foo", "Bar") - gotReq <- true - }) - defer st.Close() - - covers("3.5", ` - The server connection preface consists of a potentially empty - SETTINGS frame ([SETTINGS]) that MUST be the first frame the - server sends in the HTTP/2 connection. - `) - - st.greet() - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(), - EndStream: true, // no DATA frames - EndHeaders: true, - }) - - select { - case <-gotReq: - case <-time.After(2 * time.Second): - t.Error("timeout waiting for request") - } -} - -func TestServer_Request_Get(t *testing.T) { - testServerRequest(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader("foo-bar", "some-value"), - EndStream: true, // no DATA frames - EndHeaders: true, - }) - }, func(r *http.Request) { - if r.Method != "GET" { - t.Errorf("Method = %q; want GET", r.Method) - } - if r.URL.Path != "/" { - t.Errorf("URL.Path = %q; want /", r.URL.Path) - } - if r.ContentLength != 0 { - t.Errorf("ContentLength = %v; want 0", r.ContentLength) - } - if r.Close { - t.Error("Close = true; want false") - } - if !strings.Contains(r.RemoteAddr, ":") { - t.Errorf("RemoteAddr = %q; want something with a colon", r.RemoteAddr) - } - if r.Proto != "HTTP/2.0" || r.ProtoMajor != 2 || r.ProtoMinor != 0 { - t.Errorf("Proto = %q Major=%v,Minor=%v; want HTTP/2.0", r.Proto, r.ProtoMajor, r.ProtoMinor) - } - wantHeader := http.Header{ - "Foo-Bar": []string{"some-value"}, - } - if !reflect.DeepEqual(r.Header, wantHeader) { - t.Errorf("Header = %#v; want %#v", r.Header, wantHeader) - } - if n, err := r.Body.Read([]byte(" ")); err != io.EOF || n != 0 { - t.Errorf("Read = %d, %v; want 0, EOF", n, err) - } - }) -} - -func TestServer_Request_Get_PathSlashes(t *testing.T) { - testServerRequest(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":path", "/%2f/"), - EndStream: true, // no DATA frames - EndHeaders: true, - }) - }, func(r *http.Request) { - if r.RequestURI != "/%2f/" { - t.Errorf("RequestURI = %q; want /%%2f/", r.RequestURI) - } - if r.URL.Path != "///" { - t.Errorf("URL.Path = %q; want ///", r.URL.Path) - } - }) -} - -// TODO: add a test with EndStream=true on the HEADERS but setting a -// Content-Length anyway. Should we just omit it and force it to -// zero? - -func TestServer_Request_Post_NoContentLength_EndStream(t *testing.T) { - testServerRequest(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: true, - EndHeaders: true, - }) - }, func(r *http.Request) { - if r.Method != "POST" { - t.Errorf("Method = %q; want POST", r.Method) - } - if r.ContentLength != 0 { - t.Errorf("ContentLength = %v; want 0", r.ContentLength) - } - if n, err := r.Body.Read([]byte(" ")); err != io.EOF || n != 0 { - t.Errorf("Read = %d, %v; want 0, EOF", n, err) - } - }) -} - -func TestServer_Request_Post_Body_ImmediateEOF(t *testing.T) { - testBodyContents(t, -1, "", func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, // to say DATA frames are coming - EndHeaders: true, - }) - st.writeData(1, true, nil) // just kidding. empty body. - }) -} - -func TestServer_Request_Post_Body_OneData(t *testing.T) { - const content = "Some content" - testBodyContents(t, -1, content, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, // to say DATA frames are coming - EndHeaders: true, - }) - st.writeData(1, true, []byte(content)) - }) -} - -func TestServer_Request_Post_Body_TwoData(t *testing.T) { - const content = "Some content" - testBodyContents(t, -1, content, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, // to say DATA frames are coming - EndHeaders: true, - }) - st.writeData(1, false, []byte(content[:5])) - st.writeData(1, true, []byte(content[5:])) - }) -} - -func TestServer_Request_Post_Body_ContentLength_Correct(t *testing.T) { - const content = "Some content" - testBodyContents(t, int64(len(content)), content, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader( - ":method", "POST", - "content-length", strconv.Itoa(len(content)), - ), - EndStream: false, // to say DATA frames are coming - EndHeaders: true, - }) - st.writeData(1, true, []byte(content)) - }) -} - -func TestServer_Request_Post_Body_ContentLength_TooLarge(t *testing.T) { - testBodyContentsFail(t, 3, "request declared a Content-Length of 3 but only wrote 2 bytes", - func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader( - ":method", "POST", - "content-length", "3", - ), - EndStream: false, // to say DATA frames are coming - EndHeaders: true, - }) - st.writeData(1, true, []byte("12")) - }) -} - -func TestServer_Request_Post_Body_ContentLength_TooSmall(t *testing.T) { - testBodyContentsFail(t, 4, "sender tried to send more than declared Content-Length of 4 bytes", - func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader( - ":method", "POST", - "content-length", "4", - ), - EndStream: false, // to say DATA frames are coming - EndHeaders: true, - }) - st.writeData(1, true, []byte("12345")) - }) -} - -func testBodyContents(t *testing.T, wantContentLength int64, wantBody string, write func(st *serverTester)) { - testServerRequest(t, write, func(r *http.Request) { - if r.Method != "POST" { - t.Errorf("Method = %q; want POST", r.Method) - } - if r.ContentLength != wantContentLength { - t.Errorf("ContentLength = %v; want %d", r.ContentLength, wantContentLength) - } - all, err := ioutil.ReadAll(r.Body) - if err != nil { - t.Fatal(err) - } - if string(all) != wantBody { - t.Errorf("Read = %q; want %q", all, wantBody) - } - if err := r.Body.Close(); err != nil { - t.Fatalf("Close: %v", err) - } - }) -} - -func testBodyContentsFail(t *testing.T, wantContentLength int64, wantReadError string, write func(st *serverTester)) { - testServerRequest(t, write, func(r *http.Request) { - if r.Method != "POST" { - t.Errorf("Method = %q; want POST", r.Method) - } - if r.ContentLength != wantContentLength { - t.Errorf("ContentLength = %v; want %d", r.ContentLength, wantContentLength) - } - all, err := ioutil.ReadAll(r.Body) - if err == nil { - t.Fatalf("expected an error (%q) reading from the body. Successfully read %q instead.", - wantReadError, all) - } - if !strings.Contains(err.Error(), wantReadError) { - t.Fatalf("Body.Read = %v; want substring %q", err, wantReadError) - } - if err := r.Body.Close(); err != nil { - t.Fatalf("Close: %v", err) - } - }) -} - -// Using a Host header, instead of :authority -func TestServer_Request_Get_Host(t *testing.T) { - const host = "example.com" - testServerRequest(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":authority", "", "host", host), - EndStream: true, - EndHeaders: true, - }) - }, func(r *http.Request) { - if r.Host != host { - t.Errorf("Host = %q; want %q", r.Host, host) - } - }) -} - -// Using an :authority pseudo-header, instead of Host -func TestServer_Request_Get_Authority(t *testing.T) { - const host = "example.com" - testServerRequest(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":authority", host), - EndStream: true, - EndHeaders: true, - }) - }, func(r *http.Request) { - if r.Host != host { - t.Errorf("Host = %q; want %q", r.Host, host) - } - }) -} - -func TestServer_Request_WithContinuation(t *testing.T) { - wantHeader := http.Header{ - "Foo-One": []string{"value-one"}, - "Foo-Two": []string{"value-two"}, - "Foo-Three": []string{"value-three"}, - } - testServerRequest(t, func(st *serverTester) { - fullHeaders := st.encodeHeader( - "foo-one", "value-one", - "foo-two", "value-two", - "foo-three", "value-three", - ) - remain := fullHeaders - chunks := 0 - for len(remain) > 0 { - const maxChunkSize = 5 - chunk := remain - if len(chunk) > maxChunkSize { - chunk = chunk[:maxChunkSize] - } - remain = remain[len(chunk):] - - if chunks == 0 { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: chunk, - EndStream: true, // no DATA frames - EndHeaders: false, // we'll have continuation frames - }) - } else { - err := st.fr.WriteContinuation(1, len(remain) == 0, chunk) - if err != nil { - t.Fatal(err) - } - } - chunks++ - } - if chunks < 2 { - t.Fatal("too few chunks") - } - }, func(r *http.Request) { - if !reflect.DeepEqual(r.Header, wantHeader) { - t.Errorf("Header = %#v; want %#v", r.Header, wantHeader) - } - }) -} - -// Concatenated cookie headers. ("8.1.2.5 Compressing the Cookie Header Field") -func TestServer_Request_CookieConcat(t *testing.T) { - const host = "example.com" - testServerRequest(t, func(st *serverTester) { - st.bodylessReq1( - ":authority", host, - "cookie", "a=b", - "cookie", "c=d", - "cookie", "e=f", - ) - }, func(r *http.Request) { - const want = "a=b; c=d; e=f" - if got := r.Header.Get("Cookie"); got != want { - t.Errorf("Cookie = %q; want %q", got, want) - } - }) -} - -func TestServer_Request_Reject_CapitalHeader(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1("UPPER", "v") }) -} - -func TestServer_Request_Reject_HeaderFieldNameColon(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1("has:colon", "v") }) -} - -func TestServer_Request_Reject_HeaderFieldNameNULL(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1("has\x00null", "v") }) -} - -func TestServer_Request_Reject_HeaderFieldNameEmpty(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1("", "v") }) -} - -func TestServer_Request_Reject_HeaderFieldValueNewline(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1("foo", "has\nnewline") }) -} - -func TestServer_Request_Reject_HeaderFieldValueCR(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1("foo", "has\rcarriage") }) -} - -func TestServer_Request_Reject_HeaderFieldValueDEL(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1("foo", "has\x7fdel") }) -} - -func TestServer_Request_Reject_Pseudo_Missing_method(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1(":method", "") }) -} - -func TestServer_Request_Reject_Pseudo_ExactlyOne(t *testing.T) { - // 8.1.2.3 Request Pseudo-Header Fields - // "All HTTP/2 requests MUST include exactly one valid value" ... - testRejectRequest(t, func(st *serverTester) { - st.addLogFilter("duplicate pseudo-header") - st.bodylessReq1(":method", "GET", ":method", "POST") - }) -} - -func TestServer_Request_Reject_Pseudo_AfterRegular(t *testing.T) { - // 8.1.2.3 Request Pseudo-Header Fields - // "All pseudo-header fields MUST appear in the header block - // before regular header fields. Any request or response that - // contains a pseudo-header field that appears in a header - // block after a regular header field MUST be treated as - // malformed (Section 8.1.2.6)." - testRejectRequest(t, func(st *serverTester) { - st.addLogFilter("pseudo-header after regular header") - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":method", Value: "GET"}) - enc.WriteField(hpack.HeaderField{Name: "regular", Value: "foobar"}) - enc.WriteField(hpack.HeaderField{Name: ":path", Value: "/"}) - enc.WriteField(hpack.HeaderField{Name: ":scheme", Value: "https"}) - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: buf.Bytes(), - EndStream: true, - EndHeaders: true, - }) - }) -} - -func TestServer_Request_Reject_Pseudo_Missing_path(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1(":path", "") }) -} - -func TestServer_Request_Reject_Pseudo_Missing_scheme(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1(":scheme", "") }) -} - -func TestServer_Request_Reject_Pseudo_scheme_invalid(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { st.bodylessReq1(":scheme", "bogus") }) -} - -func TestServer_Request_Reject_Pseudo_Unknown(t *testing.T) { - testRejectRequest(t, func(st *serverTester) { - st.addLogFilter(`invalid pseudo-header ":unknown_thing"`) - st.bodylessReq1(":unknown_thing", "") - }) -} - -func testRejectRequest(t *testing.T, send func(*serverTester)) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - t.Error("server request made it to handler; should've been rejected") - }) - defer st.Close() - - st.greet() - send(st) - st.wantRSTStream(1, ErrCodeProtocol) -} - -func testRejectRequestWithProtocolError(t *testing.T, send func(*serverTester)) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - t.Error("server request made it to handler; should've been rejected") - }, optQuiet) - defer st.Close() - - st.greet() - send(st) - gf := st.wantGoAway() - if gf.ErrCode != ErrCodeProtocol { - t.Errorf("err code = %v; want %v", gf.ErrCode, ErrCodeProtocol) - } -} - -// Section 5.1, on idle connections: "Receiving any frame other than -// HEADERS or PRIORITY on a stream in this state MUST be treated as a -// connection error (Section 5.4.1) of type PROTOCOL_ERROR." -func TestRejectFrameOnIdle_WindowUpdate(t *testing.T) { - testRejectRequestWithProtocolError(t, func(st *serverTester) { - st.fr.WriteWindowUpdate(123, 456) - }) -} -func TestRejectFrameOnIdle_Data(t *testing.T) { - testRejectRequestWithProtocolError(t, func(st *serverTester) { - st.fr.WriteData(123, true, nil) - }) -} -func TestRejectFrameOnIdle_RSTStream(t *testing.T) { - testRejectRequestWithProtocolError(t, func(st *serverTester) { - st.fr.WriteRSTStream(123, ErrCodeCancel) - }) -} - -func TestServer_Request_Connect(t *testing.T) { - testServerRequest(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeaderRaw( - ":method", "CONNECT", - ":authority", "example.com:123", - ), - EndStream: true, - EndHeaders: true, - }) - }, func(r *http.Request) { - if g, w := r.Method, "CONNECT"; g != w { - t.Errorf("Method = %q; want %q", g, w) - } - if g, w := r.RequestURI, "example.com:123"; g != w { - t.Errorf("RequestURI = %q; want %q", g, w) - } - if g, w := r.URL.Host, "example.com:123"; g != w { - t.Errorf("URL.Host = %q; want %q", g, w) - } - }) -} - -func TestServer_Request_Connect_InvalidPath(t *testing.T) { - testServerRejectsStream(t, ErrCodeProtocol, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeaderRaw( - ":method", "CONNECT", - ":authority", "example.com:123", - ":path", "/bogus", - ), - EndStream: true, - EndHeaders: true, - }) - }) -} - -func TestServer_Request_Connect_InvalidScheme(t *testing.T) { - testServerRejectsStream(t, ErrCodeProtocol, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeaderRaw( - ":method", "CONNECT", - ":authority", "example.com:123", - ":scheme", "https", - ), - EndStream: true, - EndHeaders: true, - }) - }) -} - -func TestServer_Ping(t *testing.T) { - st := newServerTester(t, nil) - defer st.Close() - st.greet() - - // Server should ignore this one, since it has ACK set. - ackPingData := [8]byte{1, 2, 4, 8, 16, 32, 64, 128} - if err := st.fr.WritePing(true, ackPingData); err != nil { - t.Fatal(err) - } - - // But the server should reply to this one, since ACK is false. - pingData := [8]byte{1, 2, 3, 4, 5, 6, 7, 8} - if err := st.fr.WritePing(false, pingData); err != nil { - t.Fatal(err) - } - - pf := st.wantPing() - if !pf.Flags.Has(FlagPingAck) { - t.Error("response ping doesn't have ACK set") - } - if pf.Data != pingData { - t.Errorf("response ping has data %q; want %q", pf.Data, pingData) - } -} - -func TestServer_RejectsLargeFrames(t *testing.T) { - if runtime.GOOS == "windows" { - t.Skip("see golang.org/issue/13434") - } - - st := newServerTester(t, nil) - defer st.Close() - st.greet() - - // Write too large of a frame (too large by one byte) - // We ignore the return value because it's expected that the server - // will only read the first 9 bytes (the headre) and then disconnect. - st.fr.WriteRawFrame(0xff, 0, 0, make([]byte, defaultMaxReadFrameSize+1)) - - gf := st.wantGoAway() - if gf.ErrCode != ErrCodeFrameSize { - t.Errorf("GOAWAY err = %v; want %v", gf.ErrCode, ErrCodeFrameSize) - } - if st.serverLogBuf.Len() != 0 { - // Previously we spun here for a bit until the GOAWAY disconnect - // timer fired, logging while we fired. - t.Errorf("unexpected server output: %.500s\n", st.serverLogBuf.Bytes()) - } -} - -func TestServer_Handler_Sends_WindowUpdate(t *testing.T) { - puppet := newHandlerPuppet() - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - puppet.act(w, r) - }) - defer st.Close() - defer puppet.done() - - st.greet() - - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, // data coming - EndHeaders: true, - }) - st.writeData(1, false, []byte("abcdef")) - puppet.do(readBodyHandler(t, "abc")) - st.wantWindowUpdate(0, 3) - st.wantWindowUpdate(1, 3) - - puppet.do(readBodyHandler(t, "def")) - st.wantWindowUpdate(0, 3) - st.wantWindowUpdate(1, 3) - - st.writeData(1, true, []byte("ghijkl")) // END_STREAM here - puppet.do(readBodyHandler(t, "ghi")) - puppet.do(readBodyHandler(t, "jkl")) - st.wantWindowUpdate(0, 3) - st.wantWindowUpdate(0, 3) // no more stream-level, since END_STREAM -} - -// the version of the TestServer_Handler_Sends_WindowUpdate with padding. -// See golang.org/issue/16556 -func TestServer_Handler_Sends_WindowUpdate_Padding(t *testing.T) { - puppet := newHandlerPuppet() - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - puppet.act(w, r) - }) - defer st.Close() - defer puppet.done() - - st.greet() - - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, - EndHeaders: true, - }) - st.writeDataPadded(1, false, []byte("abcdef"), []byte{0, 0, 0, 0}) - - // Expect to immediately get our 5 bytes of padding back for - // both the connection and stream (4 bytes of padding + 1 byte of length) - st.wantWindowUpdate(0, 5) - st.wantWindowUpdate(1, 5) - - puppet.do(readBodyHandler(t, "abc")) - st.wantWindowUpdate(0, 3) - st.wantWindowUpdate(1, 3) - - puppet.do(readBodyHandler(t, "def")) - st.wantWindowUpdate(0, 3) - st.wantWindowUpdate(1, 3) -} - -func TestServer_Send_GoAway_After_Bogus_WindowUpdate(t *testing.T) { - st := newServerTester(t, nil) - defer st.Close() - st.greet() - if err := st.fr.WriteWindowUpdate(0, 1<<31-1); err != nil { - t.Fatal(err) - } - gf := st.wantGoAway() - if gf.ErrCode != ErrCodeFlowControl { - t.Errorf("GOAWAY err = %v; want %v", gf.ErrCode, ErrCodeFlowControl) - } - if gf.LastStreamID != 0 { - t.Errorf("GOAWAY last stream ID = %v; want %v", gf.LastStreamID, 0) - } -} - -func TestServer_Send_RstStream_After_Bogus_WindowUpdate(t *testing.T) { - inHandler := make(chan bool) - blockHandler := make(chan bool) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - inHandler <- true - <-blockHandler - }) - defer st.Close() - defer close(blockHandler) - st.greet() - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, // keep it open - EndHeaders: true, - }) - <-inHandler - // Send a bogus window update: - if err := st.fr.WriteWindowUpdate(1, 1<<31-1); err != nil { - t.Fatal(err) - } - st.wantRSTStream(1, ErrCodeFlowControl) -} - -// testServerPostUnblock sends a hanging POST with unsent data to handler, -// then runs fn once in the handler, and verifies that the error returned from -// handler is acceptable. It fails if takes over 5 seconds for handler to exit. -func testServerPostUnblock(t *testing.T, - handler func(http.ResponseWriter, *http.Request) error, - fn func(*serverTester), - checkErr func(error), - otherHeaders ...string) { - inHandler := make(chan bool) - errc := make(chan error, 1) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - inHandler <- true - errc <- handler(w, r) - }) - defer st.Close() - st.greet() - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(append([]string{":method", "POST"}, otherHeaders...)...), - EndStream: false, // keep it open - EndHeaders: true, - }) - <-inHandler - fn(st) - select { - case err := <-errc: - if checkErr != nil { - checkErr(err) - } - case <-time.After(5 * time.Second): - t.Fatal("timeout waiting for Handler to return") - } -} - -func TestServer_RSTStream_Unblocks_Read(t *testing.T) { - testServerPostUnblock(t, - func(w http.ResponseWriter, r *http.Request) (err error) { - _, err = r.Body.Read(make([]byte, 1)) - return - }, - func(st *serverTester) { - if err := st.fr.WriteRSTStream(1, ErrCodeCancel); err != nil { - t.Fatal(err) - } - }, - func(err error) { - want := StreamError{StreamID: 0x1, Code: 0x8} - if !reflect.DeepEqual(err, want) { - t.Errorf("Read error = %v; want %v", err, want) - } - }, - ) -} - -func TestServer_RSTStream_Unblocks_Header_Write(t *testing.T) { - // Run this test a bunch, because it doesn't always - // deadlock. But with a bunch, it did. - n := 50 - if testing.Short() { - n = 5 - } - for i := 0; i < n; i++ { - testServer_RSTStream_Unblocks_Header_Write(t) - } -} - -func testServer_RSTStream_Unblocks_Header_Write(t *testing.T) { - inHandler := make(chan bool, 1) - unblockHandler := make(chan bool, 1) - headerWritten := make(chan bool, 1) - wroteRST := make(chan bool, 1) - - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - inHandler <- true - <-wroteRST - w.Header().Set("foo", "bar") - w.WriteHeader(200) - w.(http.Flusher).Flush() - headerWritten <- true - <-unblockHandler - }) - defer st.Close() - - st.greet() - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, // keep it open - EndHeaders: true, - }) - <-inHandler - if err := st.fr.WriteRSTStream(1, ErrCodeCancel); err != nil { - t.Fatal(err) - } - wroteRST <- true - st.awaitIdle() - select { - case <-headerWritten: - case <-time.After(2 * time.Second): - t.Error("timeout waiting for header write") - } - unblockHandler <- true -} - -func TestServer_DeadConn_Unblocks_Read(t *testing.T) { - testServerPostUnblock(t, - func(w http.ResponseWriter, r *http.Request) (err error) { - _, err = r.Body.Read(make([]byte, 1)) - return - }, - func(st *serverTester) { st.cc.Close() }, - func(err error) { - if err == nil { - t.Error("unexpected nil error from Request.Body.Read") - } - }, - ) -} - -var blockUntilClosed = func(w http.ResponseWriter, r *http.Request) error { - <-w.(http.CloseNotifier).CloseNotify() - return nil -} - -func TestServer_CloseNotify_After_RSTStream(t *testing.T) { - testServerPostUnblock(t, blockUntilClosed, func(st *serverTester) { - if err := st.fr.WriteRSTStream(1, ErrCodeCancel); err != nil { - t.Fatal(err) - } - }, nil) -} - -func TestServer_CloseNotify_After_ConnClose(t *testing.T) { - testServerPostUnblock(t, blockUntilClosed, func(st *serverTester) { st.cc.Close() }, nil) -} - -// that CloseNotify unblocks after a stream error due to the client's -// problem that's unrelated to them explicitly canceling it (which is -// TestServer_CloseNotify_After_RSTStream above) -func TestServer_CloseNotify_After_StreamError(t *testing.T) { - testServerPostUnblock(t, blockUntilClosed, func(st *serverTester) { - // data longer than declared Content-Length => stream error - st.writeData(1, true, []byte("1234")) - }, nil, "content-length", "3") -} - -func TestServer_StateTransitions(t *testing.T) { - var st *serverTester - inHandler := make(chan bool) - writeData := make(chan bool) - leaveHandler := make(chan bool) - st = newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - inHandler <- true - if st.stream(1) == nil { - t.Errorf("nil stream 1 in handler") - } - if got, want := st.streamState(1), stateOpen; got != want { - t.Errorf("in handler, state is %v; want %v", got, want) - } - writeData <- true - if n, err := r.Body.Read(make([]byte, 1)); n != 0 || err != io.EOF { - t.Errorf("body read = %d, %v; want 0, EOF", n, err) - } - if got, want := st.streamState(1), stateHalfClosedRemote; got != want { - t.Errorf("in handler, state is %v; want %v", got, want) - } - - <-leaveHandler - }) - st.greet() - if st.stream(1) != nil { - t.Fatal("stream 1 should be empty") - } - if got := st.streamState(1); got != stateIdle { - t.Fatalf("stream 1 should be idle; got %v", got) - } - - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, // keep it open - EndHeaders: true, - }) - <-inHandler - <-writeData - st.writeData(1, true, nil) - - leaveHandler <- true - hf := st.wantHeaders() - if !hf.StreamEnded() { - t.Fatal("expected END_STREAM flag") - } - - if got, want := st.streamState(1), stateClosed; got != want { - t.Errorf("at end, state is %v; want %v", got, want) - } - if st.stream(1) != nil { - t.Fatal("at end, stream 1 should be gone") - } -} - -// test HEADERS w/o EndHeaders + another HEADERS (should get rejected) -func TestServer_Rejects_HeadersNoEnd_Then_Headers(t *testing.T) { - testServerRejectsConn(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: false, - }) - st.writeHeaders(HeadersFrameParam{ // Not a continuation. - StreamID: 3, // different stream. - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: true, - }) - }) -} - -// test HEADERS w/o EndHeaders + PING (should get rejected) -func TestServer_Rejects_HeadersNoEnd_Then_Ping(t *testing.T) { - testServerRejectsConn(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: false, - }) - if err := st.fr.WritePing(false, [8]byte{}); err != nil { - t.Fatal(err) - } - }) -} - -// test HEADERS w/ EndHeaders + a continuation HEADERS (should get rejected) -func TestServer_Rejects_HeadersEnd_Then_Continuation(t *testing.T) { - testServerRejectsConn(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: true, - }) - st.wantHeaders() - if err := st.fr.WriteContinuation(1, true, encodeHeaderNoImplicit(t, "foo", "bar")); err != nil { - t.Fatal(err) - } - }) -} - -// test HEADERS w/o EndHeaders + a continuation HEADERS on wrong stream ID -func TestServer_Rejects_HeadersNoEnd_Then_ContinuationWrongStream(t *testing.T) { - testServerRejectsConn(t, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: false, - }) - if err := st.fr.WriteContinuation(3, true, encodeHeaderNoImplicit(t, "foo", "bar")); err != nil { - t.Fatal(err) - } - }) -} - -// No HEADERS on stream 0. -func TestServer_Rejects_Headers0(t *testing.T) { - testServerRejectsConn(t, func(st *serverTester) { - st.fr.AllowIllegalWrites = true - st.writeHeaders(HeadersFrameParam{ - StreamID: 0, - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: true, - }) - }) -} - -// No CONTINUATION on stream 0. -func TestServer_Rejects_Continuation0(t *testing.T) { - testServerRejectsConn(t, func(st *serverTester) { - st.fr.AllowIllegalWrites = true - if err := st.fr.WriteContinuation(0, true, st.encodeHeader()); err != nil { - t.Fatal(err) - } - }) -} - -// No PRIORITY on stream 0. -func TestServer_Rejects_Priority0(t *testing.T) { - testServerRejectsConn(t, func(st *serverTester) { - st.fr.AllowIllegalWrites = true - st.writePriority(0, PriorityParam{StreamDep: 1}) - }) -} - -// No HEADERS frame with a self-dependence. -func TestServer_Rejects_HeadersSelfDependence(t *testing.T) { - testServerRejectsStream(t, ErrCodeProtocol, func(st *serverTester) { - st.fr.AllowIllegalWrites = true - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: true, - Priority: PriorityParam{StreamDep: 1}, - }) - }) -} - -// No PRIORTY frame with a self-dependence. -func TestServer_Rejects_PrioritySelfDependence(t *testing.T) { - testServerRejectsStream(t, ErrCodeProtocol, func(st *serverTester) { - st.fr.AllowIllegalWrites = true - st.writePriority(1, PriorityParam{StreamDep: 1}) - }) -} - -func TestServer_Rejects_PushPromise(t *testing.T) { - testServerRejectsConn(t, func(st *serverTester) { - pp := PushPromiseParam{ - StreamID: 1, - PromiseID: 3, - } - if err := st.fr.WritePushPromise(pp); err != nil { - t.Fatal(err) - } - }) -} - -// testServerRejectsConn tests that the server hangs up with a GOAWAY -// frame and a server close after the client does something -// deserving a CONNECTION_ERROR. -func testServerRejectsConn(t *testing.T, writeReq func(*serverTester)) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {}) - st.addLogFilter("connection error: PROTOCOL_ERROR") - defer st.Close() - st.greet() - writeReq(st) - - st.wantGoAway() - errc := make(chan error, 1) - go func() { - fr, err := st.fr.ReadFrame() - if err == nil { - err = fmt.Errorf("got frame of type %T", fr) - } - errc <- err - }() - select { - case err := <-errc: - if err != io.EOF { - t.Errorf("ReadFrame = %v; want io.EOF", err) - } - case <-time.After(2 * time.Second): - t.Error("timeout waiting for disconnect") - } -} - -// testServerRejectsStream tests that the server sends a RST_STREAM with the provided -// error code after a client sends a bogus request. -func testServerRejectsStream(t *testing.T, code ErrCode, writeReq func(*serverTester)) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {}) - defer st.Close() - st.greet() - writeReq(st) - st.wantRSTStream(1, code) -} - -// testServerRequest sets up an idle HTTP/2 connection and lets you -// write a single request with writeReq, and then verify that the -// *http.Request is built correctly in checkReq. -func testServerRequest(t *testing.T, writeReq func(*serverTester), checkReq func(*http.Request)) { - gotReq := make(chan bool, 1) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - if r.Body == nil { - t.Fatal("nil Body") - } - checkReq(r) - gotReq <- true - }) - defer st.Close() - - st.greet() - writeReq(st) - - select { - case <-gotReq: - case <-time.After(2 * time.Second): - t.Error("timeout waiting for request") - } -} - -func getSlash(st *serverTester) { st.bodylessReq1() } - -func TestServer_Response_NoData(t *testing.T) { - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - // Nothing. - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if !hf.StreamEnded() { - t.Fatal("want END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - }) -} - -func TestServer_Response_NoData_Header_FooBar(t *testing.T) { - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.Header().Set("Foo-Bar", "some-value") - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if !hf.StreamEnded() { - t.Fatal("want END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"foo-bar", "some-value"}, - {"content-length", "0"}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - }) -} - -func TestServer_Response_Data_Sniff_DoesntOverride(t *testing.T) { - const msg = "<html>this is HTML." - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.Header().Set("Content-Type", "foo/bar") - io.WriteString(w, msg) - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("don't want END_STREAM, expecting data") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"content-type", "foo/bar"}, - {"content-length", strconv.Itoa(len(msg))}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - df := st.wantData() - if !df.StreamEnded() { - t.Error("expected DATA to have END_STREAM flag") - } - if got := string(df.Data()); got != msg { - t.Errorf("got DATA %q; want %q", got, msg) - } - }) -} - -func TestServer_Response_TransferEncoding_chunked(t *testing.T) { - const msg = "hi" - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.Header().Set("Transfer-Encoding", "chunked") // should be stripped - io.WriteString(w, msg) - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"content-type", "text/plain; charset=utf-8"}, - {"content-length", strconv.Itoa(len(msg))}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - }) -} - -// Header accessed only after the initial write. -func TestServer_Response_Data_IgnoreHeaderAfterWrite_After(t *testing.T) { - const msg = "<html>this is HTML." - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - io.WriteString(w, msg) - w.Header().Set("foo", "should be ignored") - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"content-type", "text/html; charset=utf-8"}, - {"content-length", strconv.Itoa(len(msg))}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - }) -} - -// Header accessed before the initial write and later mutated. -func TestServer_Response_Data_IgnoreHeaderAfterWrite_Overwrite(t *testing.T) { - const msg = "<html>this is HTML." - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.Header().Set("foo", "proper value") - io.WriteString(w, msg) - w.Header().Set("foo", "should be ignored") - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"foo", "proper value"}, - {"content-type", "text/html; charset=utf-8"}, - {"content-length", strconv.Itoa(len(msg))}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - }) -} - -func TestServer_Response_Data_SniffLenType(t *testing.T) { - const msg = "<html>this is HTML." - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - io.WriteString(w, msg) - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("don't want END_STREAM, expecting data") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"content-type", "text/html; charset=utf-8"}, - {"content-length", strconv.Itoa(len(msg))}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - df := st.wantData() - if !df.StreamEnded() { - t.Error("expected DATA to have END_STREAM flag") - } - if got := string(df.Data()); got != msg { - t.Errorf("got DATA %q; want %q", got, msg) - } - }) -} - -func TestServer_Response_Header_Flush_MidWrite(t *testing.T) { - const msg = "<html>this is HTML" - const msg2 = ", and this is the next chunk" - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - io.WriteString(w, msg) - w.(http.Flusher).Flush() - io.WriteString(w, msg2) - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"content-type", "text/html; charset=utf-8"}, // sniffed - // and no content-length - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - { - df := st.wantData() - if df.StreamEnded() { - t.Error("unexpected END_STREAM flag") - } - if got := string(df.Data()); got != msg { - t.Errorf("got DATA %q; want %q", got, msg) - } - } - { - df := st.wantData() - if !df.StreamEnded() { - t.Error("wanted END_STREAM flag on last data chunk") - } - if got := string(df.Data()); got != msg2 { - t.Errorf("got DATA %q; want %q", got, msg2) - } - } - }) -} - -func TestServer_Response_LargeWrite(t *testing.T) { - const size = 1 << 20 - const maxFrameSize = 16 << 10 - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - n, err := w.Write(bytes.Repeat([]byte("a"), size)) - if err != nil { - return fmt.Errorf("Write error: %v", err) - } - if n != size { - return fmt.Errorf("wrong size %d from Write", n) - } - return nil - }, func(st *serverTester) { - if err := st.fr.WriteSettings( - Setting{SettingInitialWindowSize, 0}, - Setting{SettingMaxFrameSize, maxFrameSize}, - ); err != nil { - t.Fatal(err) - } - st.wantSettingsAck() - - getSlash(st) // make the single request - - // Give the handler quota to write: - if err := st.fr.WriteWindowUpdate(1, size); err != nil { - t.Fatal(err) - } - // Give the handler quota to write to connection-level - // window as well - if err := st.fr.WriteWindowUpdate(0, size); err != nil { - t.Fatal(err) - } - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"content-type", "text/plain; charset=utf-8"}, // sniffed - // and no content-length - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - var bytes, frames int - for { - df := st.wantData() - bytes += len(df.Data()) - frames++ - for _, b := range df.Data() { - if b != 'a' { - t.Fatal("non-'a' byte seen in DATA") - } - } - if df.StreamEnded() { - break - } - } - if bytes != size { - t.Errorf("Got %d bytes; want %d", bytes, size) - } - if want := int(size / maxFrameSize); frames < want || frames > want*2 { - t.Errorf("Got %d frames; want %d", frames, size) - } - }) -} - -// Test that the handler can't write more than the client allows -func TestServer_Response_LargeWrite_FlowControlled(t *testing.T) { - // Make these reads. Before each read, the client adds exactly enough - // flow-control to satisfy the read. Numbers chosen arbitrarily. - reads := []int{123, 1, 13, 127} - size := 0 - for _, n := range reads { - size += n - } - - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.(http.Flusher).Flush() - n, err := w.Write(bytes.Repeat([]byte("a"), size)) - if err != nil { - return fmt.Errorf("Write error: %v", err) - } - if n != size { - return fmt.Errorf("wrong size %d from Write", n) - } - return nil - }, func(st *serverTester) { - // Set the window size to something explicit for this test. - // It's also how much initial data we expect. - if err := st.fr.WriteSettings(Setting{SettingInitialWindowSize, uint32(reads[0])}); err != nil { - t.Fatal(err) - } - st.wantSettingsAck() - - getSlash(st) // make the single request - - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - - df := st.wantData() - if got := len(df.Data()); got != reads[0] { - t.Fatalf("Initial window size = %d but got DATA with %d bytes", reads[0], got) - } - - for _, quota := range reads[1:] { - if err := st.fr.WriteWindowUpdate(1, uint32(quota)); err != nil { - t.Fatal(err) - } - df := st.wantData() - if int(quota) != len(df.Data()) { - t.Fatalf("read %d bytes after giving %d quota", len(df.Data()), quota) - } - } - }) -} - -// Test that the handler blocked in a Write is unblocked if the server sends a RST_STREAM. -func TestServer_Response_RST_Unblocks_LargeWrite(t *testing.T) { - const size = 1 << 20 - const maxFrameSize = 16 << 10 - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.(http.Flusher).Flush() - errc := make(chan error, 1) - go func() { - _, err := w.Write(bytes.Repeat([]byte("a"), size)) - errc <- err - }() - select { - case err := <-errc: - if err == nil { - return errors.New("unexpected nil error from Write in handler") - } - return nil - case <-time.After(2 * time.Second): - return errors.New("timeout waiting for Write in handler") - } - }, func(st *serverTester) { - if err := st.fr.WriteSettings( - Setting{SettingInitialWindowSize, 0}, - Setting{SettingMaxFrameSize, maxFrameSize}, - ); err != nil { - t.Fatal(err) - } - st.wantSettingsAck() - - getSlash(st) // make the single request - - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - - if err := st.fr.WriteRSTStream(1, ErrCodeCancel); err != nil { - t.Fatal(err) - } - }) -} - -func TestServer_Response_Empty_Data_Not_FlowControlled(t *testing.T) { - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.(http.Flusher).Flush() - // Nothing; send empty DATA - return nil - }, func(st *serverTester) { - // Handler gets no data quota: - if err := st.fr.WriteSettings(Setting{SettingInitialWindowSize, 0}); err != nil { - t.Fatal(err) - } - st.wantSettingsAck() - - getSlash(st) // make the single request - - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - - df := st.wantData() - if got := len(df.Data()); got != 0 { - t.Fatalf("unexpected %d DATA bytes; want 0", got) - } - if !df.StreamEnded() { - t.Fatal("DATA didn't have END_STREAM") - } - }) -} - -func TestServer_Response_Automatic100Continue(t *testing.T) { - const msg = "foo" - const reply = "bar" - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - if v := r.Header.Get("Expect"); v != "" { - t.Errorf("Expect header = %q; want empty", v) - } - buf := make([]byte, len(msg)) - // This read should trigger the 100-continue being sent. - if n, err := io.ReadFull(r.Body, buf); err != nil || n != len(msg) || string(buf) != msg { - return fmt.Errorf("ReadFull = %q, %v; want %q, nil", buf[:n], err, msg) - } - _, err := io.WriteString(w, reply) - return err - }, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":method", "POST", "expect", "100-continue"), - EndStream: false, - EndHeaders: true, - }) - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "100"}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Fatalf("Got headers %v; want %v", goth, wanth) - } - - // Okay, they sent status 100, so we can send our - // gigantic and/or sensitive "foo" payload now. - st.writeData(1, true, []byte(msg)) - - st.wantWindowUpdate(0, uint32(len(msg))) - - hf = st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("expected data to follow") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - goth = st.decodeHeader(hf.HeaderBlockFragment()) - wanth = [][2]string{ - {":status", "200"}, - {"content-type", "text/plain; charset=utf-8"}, - {"content-length", strconv.Itoa(len(reply))}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } - - df := st.wantData() - if string(df.Data()) != reply { - t.Errorf("Client read %q; want %q", df.Data(), reply) - } - if !df.StreamEnded() { - t.Errorf("expect data stream end") - } - }) -} - -func TestServer_HandlerWriteErrorOnDisconnect(t *testing.T) { - errc := make(chan error, 1) - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - p := []byte("some data.\n") - for { - _, err := w.Write(p) - if err != nil { - errc <- err - return nil - } - } - }, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(), - EndStream: false, - EndHeaders: true, - }) - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("unexpected END_STREAM flag") - } - if !hf.HeadersEnded() { - t.Fatal("want END_HEADERS flag") - } - // Close the connection and wait for the handler to (hopefully) notice. - st.cc.Close() - select { - case <-errc: - case <-time.After(5 * time.Second): - t.Error("timeout") - } - }) -} - -func TestServer_Rejects_Too_Many_Streams(t *testing.T) { - const testPath = "/some/path" - - inHandler := make(chan uint32) - leaveHandler := make(chan bool) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - id := w.(*responseWriter).rws.stream.id - inHandler <- id - if id == 1+(defaultMaxStreams+1)*2 && r.URL.Path != testPath { - t.Errorf("decoded final path as %q; want %q", r.URL.Path, testPath) - } - <-leaveHandler - }) - defer st.Close() - st.greet() - nextStreamID := uint32(1) - streamID := func() uint32 { - defer func() { nextStreamID += 2 }() - return nextStreamID - } - sendReq := func(id uint32, headers ...string) { - st.writeHeaders(HeadersFrameParam{ - StreamID: id, - BlockFragment: st.encodeHeader(headers...), - EndStream: true, - EndHeaders: true, - }) - } - for i := 0; i < defaultMaxStreams; i++ { - sendReq(streamID()) - <-inHandler - } - defer func() { - for i := 0; i < defaultMaxStreams; i++ { - leaveHandler <- true - } - }() - - // And this one should cross the limit: - // (It's also sent as a CONTINUATION, to verify we still track the decoder context, - // even if we're rejecting it) - rejectID := streamID() - headerBlock := st.encodeHeader(":path", testPath) - frag1, frag2 := headerBlock[:3], headerBlock[3:] - st.writeHeaders(HeadersFrameParam{ - StreamID: rejectID, - BlockFragment: frag1, - EndStream: true, - EndHeaders: false, // CONTINUATION coming - }) - if err := st.fr.WriteContinuation(rejectID, true, frag2); err != nil { - t.Fatal(err) - } - st.wantRSTStream(rejectID, ErrCodeProtocol) - - // But let a handler finish: - leaveHandler <- true - st.wantHeaders() - - // And now another stream should be able to start: - goodID := streamID() - sendReq(goodID, ":path", testPath) - select { - case got := <-inHandler: - if got != goodID { - t.Errorf("Got stream %d; want %d", got, goodID) - } - case <-time.After(3 * time.Second): - t.Error("timeout waiting for handler") - } -} - -// So many response headers that the server needs to use CONTINUATION frames: -func TestServer_Response_ManyHeaders_With_Continuation(t *testing.T) { - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - h := w.Header() - for i := 0; i < 5000; i++ { - h.Set(fmt.Sprintf("x-header-%d", i), fmt.Sprintf("x-value-%d", i)) - } - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if hf.HeadersEnded() { - t.Fatal("got unwanted END_HEADERS flag") - } - n := 0 - for { - n++ - cf := st.wantContinuation() - if cf.HeadersEnded() { - break - } - } - if n < 5 { - t.Errorf("Only got %d CONTINUATION frames; expected 5+ (currently 6)", n) - } - }) -} - -// This previously crashed (reported by Mathieu Lonjaret as observed -// while using Camlistore) because we got a DATA frame from the client -// after the handler exited and our logic at the time was wrong, -// keeping a stream in the map in stateClosed, which tickled an -// invariant check later when we tried to remove that stream (via -// defer sc.closeAllStreamsOnConnClose) when the serverConn serve loop -// ended. -func TestServer_NoCrash_HandlerClose_Then_ClientClose(t *testing.T) { - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - // nothing - return nil - }, func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(), - EndStream: false, // DATA is coming - EndHeaders: true, - }) - hf := st.wantHeaders() - if !hf.HeadersEnded() || !hf.StreamEnded() { - t.Fatalf("want END_HEADERS+END_STREAM, got %v", hf) - } - - // Sent when the a Handler closes while a client has - // indicated it's still sending DATA: - st.wantRSTStream(1, ErrCodeNo) - - // Now the handler has ended, so it's ended its - // stream, but the client hasn't closed its side - // (stateClosedLocal). So send more data and verify - // it doesn't crash with an internal invariant panic, like - // it did before. - st.writeData(1, true, []byte("foo")) - - // Get our flow control bytes back, since the handler didn't get them. - st.wantWindowUpdate(0, uint32(len("foo"))) - - // Sent after a peer sends data anyway (admittedly the - // previous RST_STREAM might've still been in-flight), - // but they'll get the more friendly 'cancel' code - // first. - st.wantRSTStream(1, ErrCodeStreamClosed) - - // Set up a bunch of machinery to record the panic we saw - // previously. - var ( - panMu sync.Mutex - panicVal interface{} - ) - - testHookOnPanicMu.Lock() - testHookOnPanic = func(sc *serverConn, pv interface{}) bool { - panMu.Lock() - panicVal = pv - panMu.Unlock() - return true - } - testHookOnPanicMu.Unlock() - - // Now force the serve loop to end, via closing the connection. - st.cc.Close() - select { - case <-st.sc.doneServing: - // Loop has exited. - panMu.Lock() - got := panicVal - panMu.Unlock() - if got != nil { - t.Errorf("Got panic: %v", got) - } - case <-time.After(5 * time.Second): - t.Error("timeout") - } - }) -} - -func TestServer_Rejects_TLS10(t *testing.T) { testRejectTLS(t, tls.VersionTLS10) } -func TestServer_Rejects_TLS11(t *testing.T) { testRejectTLS(t, tls.VersionTLS11) } - -func testRejectTLS(t *testing.T, max uint16) { - st := newServerTester(t, nil, func(c *tls.Config) { - c.MaxVersion = max - }) - defer st.Close() - gf := st.wantGoAway() - if got, want := gf.ErrCode, ErrCodeInadequateSecurity; got != want { - t.Errorf("Got error code %v; want %v", got, want) - } -} - -func TestServer_Rejects_TLSBadCipher(t *testing.T) { - st := newServerTester(t, nil, func(c *tls.Config) { - // Only list bad ones: - c.CipherSuites = []uint16{ - tls.TLS_RSA_WITH_RC4_128_SHA, - tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA, - tls.TLS_RSA_WITH_AES_128_CBC_SHA, - tls.TLS_RSA_WITH_AES_256_CBC_SHA, - tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, - tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, - tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, - tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA, - tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, - tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, - tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, - cipher_TLS_RSA_WITH_AES_128_CBC_SHA256, - } - }) - defer st.Close() - gf := st.wantGoAway() - if got, want := gf.ErrCode, ErrCodeInadequateSecurity; got != want { - t.Errorf("Got error code %v; want %v", got, want) - } -} - -func TestServer_Advertises_Common_Cipher(t *testing.T) { - const requiredSuite = tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - st := newServerTester(t, nil, func(c *tls.Config) { - // Have the client only support the one required by the spec. - c.CipherSuites = []uint16{requiredSuite} - }, func(ts *httptest.Server) { - var srv *http.Server = ts.Config - // Have the server configured with no specific cipher suites. - // This tests that Go's defaults include the required one. - srv.TLSConfig = nil - }) - defer st.Close() - st.greet() -} - -func (st *serverTester) onHeaderField(f hpack.HeaderField) { - if f.Name == "date" { - return - } - st.decodedHeaders = append(st.decodedHeaders, [2]string{f.Name, f.Value}) -} - -func (st *serverTester) decodeHeader(headerBlock []byte) (pairs [][2]string) { - st.decodedHeaders = nil - if _, err := st.hpackDec.Write(headerBlock); err != nil { - st.t.Fatalf("hpack decoding error: %v", err) - } - if err := st.hpackDec.Close(); err != nil { - st.t.Fatalf("hpack decoding error: %v", err) - } - return st.decodedHeaders -} - -// testServerResponse sets up an idle HTTP/2 connection. The client function should -// write a single request that must be handled by the handler. This waits up to 5s -// for client to return, then up to an additional 2s for the handler to return. -func testServerResponse(t testing.TB, - handler func(http.ResponseWriter, *http.Request) error, - client func(*serverTester), -) { - errc := make(chan error, 1) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - if r.Body == nil { - t.Fatal("nil Body") - } - errc <- handler(w, r) - }) - defer st.Close() - - donec := make(chan bool) - go func() { - defer close(donec) - st.greet() - client(st) - }() - - select { - case <-donec: - case <-time.After(5 * time.Second): - t.Fatal("timeout in client") - } - - select { - case err := <-errc: - if err != nil { - t.Fatalf("Error in handler: %v", err) - } - case <-time.After(2 * time.Second): - t.Fatal("timeout in handler") - } -} - -// readBodyHandler returns an http Handler func that reads len(want) -// bytes from r.Body and fails t if the contents read were not -// the value of want. -func readBodyHandler(t *testing.T, want string) func(w http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { - buf := make([]byte, len(want)) - _, err := io.ReadFull(r.Body, buf) - if err != nil { - t.Error(err) - return - } - if string(buf) != want { - t.Errorf("read %q; want %q", buf, want) - } - } -} - -// TestServerWithCurl currently fails, hence the LenientCipherSuites test. See: -// https://github.com/tatsuhiro-t/nghttp2/issues/140 & -// http://sourceforge.net/p/curl/bugs/1472/ -func TestServerWithCurl(t *testing.T) { testServerWithCurl(t, false) } -func TestServerWithCurl_LenientCipherSuites(t *testing.T) { testServerWithCurl(t, true) } - -func testServerWithCurl(t *testing.T, permitProhibitedCipherSuites bool) { - if runtime.GOOS != "linux" { - t.Skip("skipping Docker test when not on Linux; requires --net which won't work with boot2docker anyway") - } - if testing.Short() { - t.Skip("skipping curl test in short mode") - } - requireCurl(t) - var gotConn int32 - testHookOnConn = func() { atomic.StoreInt32(&gotConn, 1) } - - const msg = "Hello from curl!\n" - ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Foo", "Bar") - w.Header().Set("Client-Proto", r.Proto) - io.WriteString(w, msg) - })) - ConfigureServer(ts.Config, &Server{ - PermitProhibitedCipherSuites: permitProhibitedCipherSuites, - }) - ts.TLS = ts.Config.TLSConfig // the httptest.Server has its own copy of this TLS config - ts.StartTLS() - defer ts.Close() - - t.Logf("Running test server for curl to hit at: %s", ts.URL) - container := curl(t, "--silent", "--http2", "--insecure", "-v", ts.URL) - defer kill(container) - resc := make(chan interface{}, 1) - go func() { - res, err := dockerLogs(container) - if err != nil { - resc <- err - } else { - resc <- res - } - }() - select { - case res := <-resc: - if err, ok := res.(error); ok { - t.Fatal(err) - } - body := string(res.([]byte)) - // Search for both "key: value" and "key:value", since curl changed their format - // Our Dockerfile contains the latest version (no space), but just in case people - // didn't rebuild, check both. - if !strings.Contains(body, "foo: Bar") && !strings.Contains(body, "foo:Bar") { - t.Errorf("didn't see foo: Bar header") - t.Logf("Got: %s", body) - } - if !strings.Contains(body, "client-proto: HTTP/2") && !strings.Contains(body, "client-proto:HTTP/2") { - t.Errorf("didn't see client-proto: HTTP/2 header") - t.Logf("Got: %s", res) - } - if !strings.Contains(string(res.([]byte)), msg) { - t.Errorf("didn't see %q content", msg) - t.Logf("Got: %s", res) - } - case <-time.After(3 * time.Second): - t.Errorf("timeout waiting for curl") - } - - if atomic.LoadInt32(&gotConn) == 0 { - t.Error("never saw an http2 connection") - } -} - -var doh2load = flag.Bool("h2load", false, "Run h2load test") - -func TestServerWithH2Load(t *testing.T) { - if !*doh2load { - t.Skip("Skipping without --h2load flag.") - } - if runtime.GOOS != "linux" { - t.Skip("skipping Docker test when not on Linux; requires --net which won't work with boot2docker anyway") - } - requireH2load(t) - - msg := strings.Repeat("Hello, h2load!\n", 5000) - ts := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, msg) - w.(http.Flusher).Flush() - io.WriteString(w, msg) - })) - ts.StartTLS() - defer ts.Close() - - cmd := exec.Command("docker", "run", "--net=host", "--entrypoint=/usr/local/bin/h2load", "gohttp2/curl", - "-n100000", "-c100", "-m100", ts.URL) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - t.Fatal(err) - } -} - -// Issue 12843 -func TestServerDoS_MaxHeaderListSize(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {}) - defer st.Close() - - // shake hands - frameSize := defaultMaxReadFrameSize - var advHeaderListSize *uint32 - st.greetAndCheckSettings(func(s Setting) error { - switch s.ID { - case SettingMaxFrameSize: - if s.Val < minMaxFrameSize { - frameSize = minMaxFrameSize - } else if s.Val > maxFrameSize { - frameSize = maxFrameSize - } else { - frameSize = int(s.Val) - } - case SettingMaxHeaderListSize: - advHeaderListSize = &s.Val - } - return nil - }) - - if advHeaderListSize == nil { - t.Errorf("server didn't advertise a max header list size") - } else if *advHeaderListSize == 0 { - t.Errorf("server advertised a max header list size of 0") - } - - st.encodeHeaderField(":method", "GET") - st.encodeHeaderField(":path", "/") - st.encodeHeaderField(":scheme", "https") - cookie := strings.Repeat("*", 4058) - st.encodeHeaderField("cookie", cookie) - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.headerBuf.Bytes(), - EndStream: true, - EndHeaders: false, - }) - - // Capture the short encoding of a duplicate ~4K cookie, now - // that we've already sent it once. - st.headerBuf.Reset() - st.encodeHeaderField("cookie", cookie) - - // Now send 1MB of it. - const size = 1 << 20 - b := bytes.Repeat(st.headerBuf.Bytes(), size/st.headerBuf.Len()) - for len(b) > 0 { - chunk := b - if len(chunk) > frameSize { - chunk = chunk[:frameSize] - } - b = b[len(chunk):] - st.fr.WriteContinuation(1, len(b) == 0, chunk) - } - - h := st.wantHeaders() - if !h.HeadersEnded() { - t.Fatalf("Got HEADERS without END_HEADERS set: %v", h) - } - headers := st.decodeHeader(h.HeaderBlockFragment()) - want := [][2]string{ - {":status", "431"}, - {"content-type", "text/html; charset=utf-8"}, - {"content-length", "63"}, - } - if !reflect.DeepEqual(headers, want) { - t.Errorf("Headers mismatch.\n got: %q\nwant: %q\n", headers, want) - } -} - -func TestCompressionErrorOnWrite(t *testing.T) { - const maxStrLen = 8 << 10 - var serverConfig *http.Server - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - // No response body. - }, func(ts *httptest.Server) { - serverConfig = ts.Config - serverConfig.MaxHeaderBytes = maxStrLen - }) - st.addLogFilter("connection error: COMPRESSION_ERROR") - defer st.Close() - st.greet() - - maxAllowed := st.sc.framer.maxHeaderStringLen() - - // Crank this up, now that we have a conn connected with the - // hpack.Decoder's max string length set has been initialized - // from the earlier low ~8K value. We want this higher so don't - // hit the max header list size. We only want to test hitting - // the max string size. - serverConfig.MaxHeaderBytes = 1 << 20 - - // First a request with a header that's exactly the max allowed size - // for the hpack compression. It's still too long for the header list - // size, so we'll get the 431 error, but that keeps the compression - // context still valid. - hbf := st.encodeHeader("foo", strings.Repeat("a", maxAllowed)) - - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: hbf, - EndStream: true, - EndHeaders: true, - }) - h := st.wantHeaders() - if !h.HeadersEnded() { - t.Fatalf("Got HEADERS without END_HEADERS set: %v", h) - } - headers := st.decodeHeader(h.HeaderBlockFragment()) - want := [][2]string{ - {":status", "431"}, - {"content-type", "text/html; charset=utf-8"}, - {"content-length", "63"}, - } - if !reflect.DeepEqual(headers, want) { - t.Errorf("Headers mismatch.\n got: %q\nwant: %q\n", headers, want) - } - df := st.wantData() - if !strings.Contains(string(df.Data()), "HTTP Error 431") { - t.Errorf("Unexpected data body: %q", df.Data()) - } - if !df.StreamEnded() { - t.Fatalf("expect data stream end") - } - - // And now send one that's just one byte too big. - hbf = st.encodeHeader("bar", strings.Repeat("b", maxAllowed+1)) - st.writeHeaders(HeadersFrameParam{ - StreamID: 3, - BlockFragment: hbf, - EndStream: true, - EndHeaders: true, - }) - ga := st.wantGoAway() - if ga.ErrCode != ErrCodeCompression { - t.Errorf("GOAWAY err = %v; want ErrCodeCompression", ga.ErrCode) - } -} - -func TestCompressionErrorOnClose(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - // No response body. - }) - st.addLogFilter("connection error: COMPRESSION_ERROR") - defer st.Close() - st.greet() - - hbf := st.encodeHeader("foo", "bar") - hbf = hbf[:len(hbf)-1] // truncate one byte from the end, so hpack.Decoder.Close fails. - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: hbf, - EndStream: true, - EndHeaders: true, - }) - ga := st.wantGoAway() - if ga.ErrCode != ErrCodeCompression { - t.Errorf("GOAWAY err = %v; want ErrCodeCompression", ga.ErrCode) - } -} - -// test that a server handler can read trailers from a client -func TestServerReadsTrailers(t *testing.T) { - const testBody = "some test body" - writeReq := func(st *serverTester) { - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader("trailer", "Foo, Bar", "trailer", "Baz"), - EndStream: false, - EndHeaders: true, - }) - st.writeData(1, false, []byte(testBody)) - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeaderRaw( - "foo", "foov", - "bar", "barv", - "baz", "bazv", - "surprise", "wasn't declared; shouldn't show up", - ), - EndStream: true, - EndHeaders: true, - }) - } - checkReq := func(r *http.Request) { - wantTrailer := http.Header{ - "Foo": nil, - "Bar": nil, - "Baz": nil, - } - if !reflect.DeepEqual(r.Trailer, wantTrailer) { - t.Errorf("initial Trailer = %v; want %v", r.Trailer, wantTrailer) - } - slurp, err := ioutil.ReadAll(r.Body) - if string(slurp) != testBody { - t.Errorf("read body %q; want %q", slurp, testBody) - } - if err != nil { - t.Fatalf("Body slurp: %v", err) - } - wantTrailerAfter := http.Header{ - "Foo": {"foov"}, - "Bar": {"barv"}, - "Baz": {"bazv"}, - } - if !reflect.DeepEqual(r.Trailer, wantTrailerAfter) { - t.Errorf("final Trailer = %v; want %v", r.Trailer, wantTrailerAfter) - } - } - testServerRequest(t, writeReq, checkReq) -} - -// test that a server handler can send trailers -func TestServerWritesTrailers_WithFlush(t *testing.T) { testServerWritesTrailers(t, true) } -func TestServerWritesTrailers_WithoutFlush(t *testing.T) { testServerWritesTrailers(t, false) } - -func testServerWritesTrailers(t *testing.T, withFlush bool) { - // See https://httpwg.github.io/specs/rfc7540.html#rfc.section.8.1.3 - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.Header().Set("Trailer", "Server-Trailer-A, Server-Trailer-B") - w.Header().Add("Trailer", "Server-Trailer-C") - w.Header().Add("Trailer", "Transfer-Encoding, Content-Length, Trailer") // filtered - - // Regular headers: - w.Header().Set("Foo", "Bar") - w.Header().Set("Content-Length", "5") // len("Hello") - - io.WriteString(w, "Hello") - if withFlush { - w.(http.Flusher).Flush() - } - w.Header().Set("Server-Trailer-A", "valuea") - w.Header().Set("Server-Trailer-C", "valuec") // skipping B - // After a flush, random keys like Server-Surprise shouldn't show up: - w.Header().Set("Server-Surpise", "surprise! this isn't predeclared!") - // But we do permit promoting keys to trailers after a - // flush if they start with the magic - // otherwise-invalid "Trailer:" prefix: - w.Header().Set("Trailer:Post-Header-Trailer", "hi1") - w.Header().Set("Trailer:post-header-trailer2", "hi2") - w.Header().Set("Trailer:Range", "invalid") - w.Header().Set("Trailer:Foo\x01Bogus", "invalid") - w.Header().Set("Transfer-Encoding", "should not be included; Forbidden by RFC 7230 4.1.2") - w.Header().Set("Content-Length", "should not be included; Forbidden by RFC 7230 4.1.2") - w.Header().Set("Trailer", "should not be included; Forbidden by RFC 7230 4.1.2") - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if hf.StreamEnded() { - t.Fatal("response HEADERS had END_STREAM") - } - if !hf.HeadersEnded() { - t.Fatal("response HEADERS didn't have END_HEADERS") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"foo", "Bar"}, - {"trailer", "Server-Trailer-A, Server-Trailer-B"}, - {"trailer", "Server-Trailer-C"}, - {"trailer", "Transfer-Encoding, Content-Length, Trailer"}, - {"content-type", "text/plain; charset=utf-8"}, - {"content-length", "5"}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Header mismatch.\n got: %v\nwant: %v", goth, wanth) - } - df := st.wantData() - if string(df.Data()) != "Hello" { - t.Fatalf("Client read %q; want Hello", df.Data()) - } - if df.StreamEnded() { - t.Fatalf("data frame had STREAM_ENDED") - } - tf := st.wantHeaders() // for the trailers - if !tf.StreamEnded() { - t.Fatalf("trailers HEADERS lacked END_STREAM") - } - if !tf.HeadersEnded() { - t.Fatalf("trailers HEADERS lacked END_HEADERS") - } - wanth = [][2]string{ - {"post-header-trailer", "hi1"}, - {"post-header-trailer2", "hi2"}, - {"server-trailer-a", "valuea"}, - {"server-trailer-c", "valuec"}, - } - goth = st.decodeHeader(tf.HeaderBlockFragment()) - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Header mismatch.\n got: %v\nwant: %v", goth, wanth) - } - }) -} - -// validate transmitted header field names & values -// golang.org/issue/14048 -func TestServerDoesntWriteInvalidHeaders(t *testing.T) { - testServerResponse(t, func(w http.ResponseWriter, r *http.Request) error { - w.Header().Add("OK1", "x") - w.Header().Add("Bad:Colon", "x") // colon (non-token byte) in key - w.Header().Add("Bad1\x00", "x") // null in key - w.Header().Add("Bad2", "x\x00y") // null in value - return nil - }, func(st *serverTester) { - getSlash(st) - hf := st.wantHeaders() - if !hf.StreamEnded() { - t.Error("response HEADERS lacked END_STREAM") - } - if !hf.HeadersEnded() { - t.Fatal("response HEADERS didn't have END_HEADERS") - } - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "200"}, - {"ok1", "x"}, - {"content-length", "0"}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Header mismatch.\n got: %v\nwant: %v", goth, wanth) - } - }) -} - -func BenchmarkServerGets(b *testing.B) { - defer disableGoroutineTracking()() - b.ReportAllocs() - - const msg = "Hello, world" - st := newServerTester(b, func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, msg) - }) - defer st.Close() - st.greet() - - // Give the server quota to reply. (plus it has the 64KB) - if err := st.fr.WriteWindowUpdate(0, uint32(b.N*len(msg))); err != nil { - b.Fatal(err) - } - - for i := 0; i < b.N; i++ { - id := 1 + uint32(i)*2 - st.writeHeaders(HeadersFrameParam{ - StreamID: id, - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: true, - }) - st.wantHeaders() - df := st.wantData() - if !df.StreamEnded() { - b.Fatalf("DATA didn't have END_STREAM; got %v", df) - } - } -} - -func BenchmarkServerPosts(b *testing.B) { - defer disableGoroutineTracking()() - b.ReportAllocs() - - const msg = "Hello, world" - st := newServerTester(b, func(w http.ResponseWriter, r *http.Request) { - // Consume the (empty) body from th peer before replying, otherwise - // the server will sometimes (depending on scheduling) send the peer a - // a RST_STREAM with the CANCEL error code. - if n, err := io.Copy(ioutil.Discard, r.Body); n != 0 || err != nil { - b.Errorf("Copy error; got %v, %v; want 0, nil", n, err) - } - io.WriteString(w, msg) - }) - defer st.Close() - st.greet() - - // Give the server quota to reply. (plus it has the 64KB) - if err := st.fr.WriteWindowUpdate(0, uint32(b.N*len(msg))); err != nil { - b.Fatal(err) - } - - for i := 0; i < b.N; i++ { - id := 1 + uint32(i)*2 - st.writeHeaders(HeadersFrameParam{ - StreamID: id, - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, - EndHeaders: true, - }) - st.writeData(id, true, nil) - st.wantHeaders() - df := st.wantData() - if !df.StreamEnded() { - b.Fatalf("DATA didn't have END_STREAM; got %v", df) - } - } -} - -// Send a stream of messages from server to client in separate data frames. -// Brings up performance issues seen in long streams. -// Created to show problem in go issue #18502 -func BenchmarkServerToClientStreamDefaultOptions(b *testing.B) { - benchmarkServerToClientStream(b) -} - -// Justification for Change-Id: Iad93420ef6c3918f54249d867098f1dadfa324d8 -// Expect to see memory/alloc reduction by opting in to Frame reuse with the Framer. -func BenchmarkServerToClientStreamReuseFrames(b *testing.B) { - benchmarkServerToClientStream(b, optFramerReuseFrames) -} - -func benchmarkServerToClientStream(b *testing.B, newServerOpts ...interface{}) { - defer disableGoroutineTracking()() - b.ReportAllocs() - const msgLen = 1 - // default window size - const windowSize = 1<<16 - 1 - - // next message to send from the server and for the client to expect - nextMsg := func(i int) []byte { - msg := make([]byte, msgLen) - msg[0] = byte(i) - if len(msg) != msgLen { - panic("invalid test setup msg length") - } - return msg - } - - st := newServerTester(b, func(w http.ResponseWriter, r *http.Request) { - // Consume the (empty) body from th peer before replying, otherwise - // the server will sometimes (depending on scheduling) send the peer a - // a RST_STREAM with the CANCEL error code. - if n, err := io.Copy(ioutil.Discard, r.Body); n != 0 || err != nil { - b.Errorf("Copy error; got %v, %v; want 0, nil", n, err) - } - for i := 0; i < b.N; i += 1 { - w.Write(nextMsg(i)) - w.(http.Flusher).Flush() - } - }, newServerOpts...) - defer st.Close() - st.greet() - - const id = uint32(1) - - st.writeHeaders(HeadersFrameParam{ - StreamID: id, - BlockFragment: st.encodeHeader(":method", "POST"), - EndStream: false, - EndHeaders: true, - }) - - st.writeData(id, true, nil) - st.wantHeaders() - - var pendingWindowUpdate = uint32(0) - - for i := 0; i < b.N; i += 1 { - expected := nextMsg(i) - df := st.wantData() - if bytes.Compare(expected, df.data) != 0 { - b.Fatalf("Bad message received; want %v; got %v", expected, df.data) - } - // try to send infrequent but large window updates so they don't overwhelm the test - pendingWindowUpdate += uint32(len(df.data)) - if pendingWindowUpdate >= windowSize/2 { - if err := st.fr.WriteWindowUpdate(0, pendingWindowUpdate); err != nil { - b.Fatal(err) - } - if err := st.fr.WriteWindowUpdate(id, pendingWindowUpdate); err != nil { - b.Fatal(err) - } - pendingWindowUpdate = 0 - } - } - df := st.wantData() - if !df.StreamEnded() { - b.Fatalf("DATA didn't have END_STREAM; got %v", df) - } -} - -// go-fuzz bug, originally reported at https://github.com/bradfitz/http2/issues/53 -// Verify we don't hang. -func TestIssue53(t *testing.T) { - const data = "PRI * HTTP/2.0\r\n\r\nSM" + - "\r\n\r\n\x00\x00\x00\x01\ainfinfin\ad" - s := &http.Server{ - ErrorLog: log.New(io.MultiWriter(stderrv(), twriter{t: t}), "", log.LstdFlags), - Handler: http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - w.Write([]byte("hello")) - }), - } - s2 := &Server{ - MaxReadFrameSize: 1 << 16, - PermitProhibitedCipherSuites: true, - } - c := &issue53Conn{[]byte(data), false, false} - s2.ServeConn(c, &ServeConnOpts{BaseConfig: s}) - if !c.closed { - t.Fatal("connection is not closed") - } -} - -type issue53Conn struct { - data []byte - closed bool - written bool -} - -func (c *issue53Conn) Read(b []byte) (n int, err error) { - if len(c.data) == 0 { - return 0, io.EOF - } - n = copy(b, c.data) - c.data = c.data[n:] - return -} - -func (c *issue53Conn) Write(b []byte) (n int, err error) { - c.written = true - return len(b), nil -} - -func (c *issue53Conn) Close() error { - c.closed = true - return nil -} - -func (c *issue53Conn) LocalAddr() net.Addr { - return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 49706} -} -func (c *issue53Conn) RemoteAddr() net.Addr { - return &net.TCPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 49706} -} -func (c *issue53Conn) SetDeadline(t time.Time) error { return nil } -func (c *issue53Conn) SetReadDeadline(t time.Time) error { return nil } -func (c *issue53Conn) SetWriteDeadline(t time.Time) error { return nil } - -// golang.org/issue/12895 -func TestConfigureServer(t *testing.T) { - tests := []struct { - name string - tlsConfig *tls.Config - wantErr string - }{ - { - name: "empty server", - }, - { - name: "just the required cipher suite", - tlsConfig: &tls.Config{ - CipherSuites: []uint16{tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, - }, - }, - { - name: "just the alternative required cipher suite", - tlsConfig: &tls.Config{ - CipherSuites: []uint16{tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256}, - }, - }, - { - name: "missing required cipher suite", - tlsConfig: &tls.Config{ - CipherSuites: []uint16{tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384}, - }, - wantErr: "is missing an HTTP/2-required AES_128_GCM_SHA256 cipher.", - }, - { - name: "required after bad", - tlsConfig: &tls.Config{ - CipherSuites: []uint16{tls.TLS_RSA_WITH_RC4_128_SHA, tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256}, - }, - wantErr: "contains an HTTP/2-approved cipher suite (0xc02f), but it comes after", - }, - { - name: "bad after required", - tlsConfig: &tls.Config{ - CipherSuites: []uint16{tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, tls.TLS_RSA_WITH_RC4_128_SHA}, - }, - }, - } - for _, tt := range tests { - srv := &http.Server{TLSConfig: tt.tlsConfig} - err := ConfigureServer(srv, nil) - if (err != nil) != (tt.wantErr != "") { - if tt.wantErr != "" { - t.Errorf("%s: success, but want error", tt.name) - } else { - t.Errorf("%s: unexpected error: %v", tt.name, err) - } - } - if err != nil && tt.wantErr != "" && !strings.Contains(err.Error(), tt.wantErr) { - t.Errorf("%s: err = %v; want substring %q", tt.name, err, tt.wantErr) - } - if err == nil && !srv.TLSConfig.PreferServerCipherSuites { - t.Errorf("%s: PreferServerCipherSuite is false; want true", tt.name) - } - } -} - -func TestServerRejectHeadWithBody(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - // No response body. - }) - defer st.Close() - st.greet() - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":method", "HEAD"), - EndStream: false, // what we're testing, a bogus HEAD request with body - EndHeaders: true, - }) - st.wantRSTStream(1, ErrCodeProtocol) -} - -func TestServerNoAutoContentLengthOnHead(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - // No response body. (or smaller than one frame) - }) - defer st.Close() - st.greet() - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, // clients send odd numbers - BlockFragment: st.encodeHeader(":method", "HEAD"), - EndStream: true, - EndHeaders: true, - }) - h := st.wantHeaders() - headers := st.decodeHeader(h.HeaderBlockFragment()) - want := [][2]string{ - {":status", "200"}, - } - if !reflect.DeepEqual(headers, want) { - t.Errorf("Headers mismatch.\n got: %q\nwant: %q\n", headers, want) - } -} - -// golang.org/issue/13495 -func TestServerNoDuplicateContentType(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - w.Header()["Content-Type"] = []string{""} - fmt.Fprintf(w, "<html><head></head><body>hi</body></html>") - }) - defer st.Close() - st.greet() - st.writeHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: st.encodeHeader(), - EndStream: true, - EndHeaders: true, - }) - h := st.wantHeaders() - headers := st.decodeHeader(h.HeaderBlockFragment()) - want := [][2]string{ - {":status", "200"}, - {"content-type", ""}, - {"content-length", "41"}, - } - if !reflect.DeepEqual(headers, want) { - t.Errorf("Headers mismatch.\n got: %q\nwant: %q\n", headers, want) - } -} - -func disableGoroutineTracking() (restore func()) { - old := DebugGoroutines - DebugGoroutines = false - return func() { DebugGoroutines = old } -} - -func BenchmarkServer_GetRequest(b *testing.B) { - defer disableGoroutineTracking()() - b.ReportAllocs() - const msg = "Hello, world." - st := newServerTester(b, func(w http.ResponseWriter, r *http.Request) { - n, err := io.Copy(ioutil.Discard, r.Body) - if err != nil || n > 0 { - b.Errorf("Read %d bytes, error %v; want 0 bytes.", n, err) - } - io.WriteString(w, msg) - }) - defer st.Close() - - st.greet() - // Give the server quota to reply. (plus it has the 64KB) - if err := st.fr.WriteWindowUpdate(0, uint32(b.N*len(msg))); err != nil { - b.Fatal(err) - } - hbf := st.encodeHeader(":method", "GET") - for i := 0; i < b.N; i++ { - streamID := uint32(1 + 2*i) - st.writeHeaders(HeadersFrameParam{ - StreamID: streamID, - BlockFragment: hbf, - EndStream: true, - EndHeaders: true, - }) - st.wantHeaders() - st.wantData() - } -} - -func BenchmarkServer_PostRequest(b *testing.B) { - defer disableGoroutineTracking()() - b.ReportAllocs() - const msg = "Hello, world." - st := newServerTester(b, func(w http.ResponseWriter, r *http.Request) { - n, err := io.Copy(ioutil.Discard, r.Body) - if err != nil || n > 0 { - b.Errorf("Read %d bytes, error %v; want 0 bytes.", n, err) - } - io.WriteString(w, msg) - }) - defer st.Close() - st.greet() - // Give the server quota to reply. (plus it has the 64KB) - if err := st.fr.WriteWindowUpdate(0, uint32(b.N*len(msg))); err != nil { - b.Fatal(err) - } - hbf := st.encodeHeader(":method", "POST") - for i := 0; i < b.N; i++ { - streamID := uint32(1 + 2*i) - st.writeHeaders(HeadersFrameParam{ - StreamID: streamID, - BlockFragment: hbf, - EndStream: false, - EndHeaders: true, - }) - st.writeData(streamID, true, nil) - st.wantHeaders() - st.wantData() - } -} - -type connStateConn struct { - net.Conn - cs tls.ConnectionState -} - -func (c connStateConn) ConnectionState() tls.ConnectionState { return c.cs } - -// golang.org/issue/12737 -- handle any net.Conn, not just -// *tls.Conn. -func TestServerHandleCustomConn(t *testing.T) { - var s Server - c1, c2 := net.Pipe() - clientDone := make(chan struct{}) - handlerDone := make(chan struct{}) - var req *http.Request - go func() { - defer close(clientDone) - defer c2.Close() - fr := NewFramer(c2, c2) - io.WriteString(c2, ClientPreface) - fr.WriteSettings() - fr.WriteSettingsAck() - f, err := fr.ReadFrame() - if err != nil { - t.Error(err) - return - } - if sf, ok := f.(*SettingsFrame); !ok || sf.IsAck() { - t.Errorf("Got %v; want non-ACK SettingsFrame", summarizeFrame(f)) - return - } - f, err = fr.ReadFrame() - if err != nil { - t.Error(err) - return - } - if sf, ok := f.(*SettingsFrame); !ok || !sf.IsAck() { - t.Errorf("Got %v; want ACK SettingsFrame", summarizeFrame(f)) - return - } - var henc hpackEncoder - fr.WriteHeaders(HeadersFrameParam{ - StreamID: 1, - BlockFragment: henc.encodeHeaderRaw(t, ":method", "GET", ":path", "/", ":scheme", "https", ":authority", "foo.com"), - EndStream: true, - EndHeaders: true, - }) - go io.Copy(ioutil.Discard, c2) - <-handlerDone - }() - const testString = "my custom ConnectionState" - fakeConnState := tls.ConnectionState{ - ServerName: testString, - Version: tls.VersionTLS12, - CipherSuite: cipher_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - } - go s.ServeConn(connStateConn{c1, fakeConnState}, &ServeConnOpts{ - BaseConfig: &http.Server{ - Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - defer close(handlerDone) - req = r - }), - }}) - select { - case <-clientDone: - case <-time.After(5 * time.Second): - t.Fatal("timeout waiting for handler") - } - if req.TLS == nil { - t.Fatalf("Request.TLS is nil. Got: %#v", req) - } - if req.TLS.ServerName != testString { - t.Fatalf("Request.TLS = %+v; want ServerName of %q", req.TLS, testString) - } -} - -// golang.org/issue/14214 -func TestServer_Rejects_ConnHeaders(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - t.Error("should not get to Handler") - }) - defer st.Close() - st.greet() - st.bodylessReq1("connection", "foo") - hf := st.wantHeaders() - goth := st.decodeHeader(hf.HeaderBlockFragment()) - wanth := [][2]string{ - {":status", "400"}, - {"content-type", "text/plain; charset=utf-8"}, - {"x-content-type-options", "nosniff"}, - {"content-length", "51"}, - } - if !reflect.DeepEqual(goth, wanth) { - t.Errorf("Got headers %v; want %v", goth, wanth) - } -} - -type hpackEncoder struct { - enc *hpack.Encoder - buf bytes.Buffer -} - -func (he *hpackEncoder) encodeHeaderRaw(t *testing.T, headers ...string) []byte { - if len(headers)%2 == 1 { - panic("odd number of kv args") - } - he.buf.Reset() - if he.enc == nil { - he.enc = hpack.NewEncoder(&he.buf) - } - for len(headers) > 0 { - k, v := headers[0], headers[1] - err := he.enc.WriteField(hpack.HeaderField{Name: k, Value: v}) - if err != nil { - t.Fatalf("HPACK encoding error for %q/%q: %v", k, v, err) - } - headers = headers[2:] - } - return he.buf.Bytes() -} - -func TestCheckValidHTTP2Request(t *testing.T) { - tests := []struct { - h http.Header - want error - }{ - { - h: http.Header{"Te": {"trailers"}}, - want: nil, - }, - { - h: http.Header{"Te": {"trailers", "bogus"}}, - want: errors.New(`request header "TE" may only be "trailers" in HTTP/2`), - }, - { - h: http.Header{"Foo": {""}}, - want: nil, - }, - { - h: http.Header{"Connection": {""}}, - want: errors.New(`request header "Connection" is not valid in HTTP/2`), - }, - { - h: http.Header{"Proxy-Connection": {""}}, - want: errors.New(`request header "Proxy-Connection" is not valid in HTTP/2`), - }, - { - h: http.Header{"Keep-Alive": {""}}, - want: errors.New(`request header "Keep-Alive" is not valid in HTTP/2`), - }, - { - h: http.Header{"Upgrade": {""}}, - want: errors.New(`request header "Upgrade" is not valid in HTTP/2`), - }, - } - for i, tt := range tests { - got := checkValidHTTP2RequestHeaders(tt.h) - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("%d. checkValidHTTP2Request = %v; want %v", i, got, tt.want) - } - } -} - -// golang.org/issue/14030 -func TestExpect100ContinueAfterHandlerWrites(t *testing.T) { - const msg = "Hello" - const msg2 = "World" - - doRead := make(chan bool, 1) - defer close(doRead) // fallback cleanup - - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, msg) - w.(http.Flusher).Flush() - - // Do a read, which might force a 100-continue status to be sent. - <-doRead - r.Body.Read(make([]byte, 10)) - - io.WriteString(w, msg2) - - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - req, _ := http.NewRequest("POST", st.ts.URL, io.LimitReader(neverEnding('A'), 2<<20)) - req.Header.Set("Expect", "100-continue") - - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() - - buf := make([]byte, len(msg)) - if _, err := io.ReadFull(res.Body, buf); err != nil { - t.Fatal(err) - } - if string(buf) != msg { - t.Fatalf("msg = %q; want %q", buf, msg) - } - - doRead <- true - - if _, err := io.ReadFull(res.Body, buf); err != nil { - t.Fatal(err) - } - if string(buf) != msg2 { - t.Fatalf("second msg = %q; want %q", buf, msg2) - } -} - -type funcReader func([]byte) (n int, err error) - -func (f funcReader) Read(p []byte) (n int, err error) { return f(p) } - -// golang.org/issue/16481 -- return flow control when streams close with unread data. -// (The Server version of the bug. See also TestUnreadFlowControlReturned_Transport) -func TestUnreadFlowControlReturned_Server(t *testing.T) { - unblock := make(chan bool, 1) - defer close(unblock) - - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - // Don't read the 16KB request body. Wait until the client's - // done sending it and then return. This should cause the Server - // to then return those 16KB of flow control to the client. - <-unblock - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - // This previously hung on the 4th iteration. - for i := 0; i < 6; i++ { - body := io.MultiReader( - io.LimitReader(neverEnding('A'), 16<<10), - funcReader(func([]byte) (n int, err error) { - unblock <- true - return 0, io.EOF - }), - ) - req, _ := http.NewRequest("POST", st.ts.URL, body) - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - res.Body.Close() - } - -} - -func TestServerIdleTimeout(t *testing.T) { - if testing.Short() { - t.Skip("skipping in short mode") - } - - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - }, func(h2s *Server) { - h2s.IdleTimeout = 500 * time.Millisecond - }) - defer st.Close() - - st.greet() - ga := st.wantGoAway() - if ga.ErrCode != ErrCodeNo { - t.Errorf("GOAWAY error = %v; want ErrCodeNo", ga.ErrCode) - } -} - -func TestServerIdleTimeout_AfterRequest(t *testing.T) { - if testing.Short() { - t.Skip("skipping in short mode") - } - const timeout = 250 * time.Millisecond - - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - time.Sleep(timeout * 2) - }, func(h2s *Server) { - h2s.IdleTimeout = timeout - }) - defer st.Close() - - st.greet() - - // Send a request which takes twice the timeout. Verifies the - // idle timeout doesn't fire while we're in a request: - st.bodylessReq1() - st.wantHeaders() - - // But the idle timeout should be rearmed after the request - // is done: - ga := st.wantGoAway() - if ga.ErrCode != ErrCodeNo { - t.Errorf("GOAWAY error = %v; want ErrCodeNo", ga.ErrCode) - } -} - -// grpc-go closes the Request.Body currently with a Read. -// Verify that it doesn't race. -// See https://github.com/grpc/grpc-go/pull/938 -func TestRequestBodyReadCloseRace(t *testing.T) { - for i := 0; i < 100; i++ { - body := &requestBody{ - pipe: &pipe{ - b: new(bytes.Buffer), - }, - } - body.pipe.CloseWithError(io.EOF) - - done := make(chan bool, 1) - buf := make([]byte, 10) - go func() { - time.Sleep(1 * time.Millisecond) - body.Close() - done <- true - }() - body.Read(buf) - <-done - } -} - -func TestIssue20704Race(t *testing.T) { - if testing.Short() && os.Getenv("GO_BUILDER_NAME") == "" { - t.Skip("skipping in short mode") - } - const ( - itemSize = 1 << 10 - itemCount = 100 - ) - - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - for i := 0; i < itemCount; i++ { - _, err := w.Write(make([]byte, itemSize)) - if err != nil { - return - } - } - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - cl := &http.Client{Transport: tr} - - for i := 0; i < 1000; i++ { - resp, err := cl.Get(st.ts.URL) - if err != nil { - t.Fatal(err) - } - // Force a RST stream to the server by closing without - // reading the body: - resp.Body.Close() - } -} diff --git a/vendor/golang.org/x/net/http2/testdata/draft-ietf-httpbis-http2.xml b/vendor/golang.org/x/net/http2/testdata/draft-ietf-httpbis-http2.xml deleted file mode 100644 index 31a84bed..00000000 --- a/vendor/golang.org/x/net/http2/testdata/draft-ietf-httpbis-http2.xml +++ /dev/null @@ -1,5021 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet type="text/xsl" href="lib/rfc2629.xslt"?> -<?rfc toc="yes" ?> -<?rfc symrefs="yes" ?> -<?rfc sortrefs="yes" ?> -<?rfc compact="yes"?> -<?rfc subcompact="no" ?> -<?rfc linkmailto="no" ?> -<?rfc editing="no" ?> -<?rfc comments="yes" ?> -<?rfc inline="yes"?> -<?rfc rfcedstyle="yes"?> -<?rfc-ext allow-markup-in-artwork="yes" ?> -<?rfc-ext include-index="no" ?> - -<rfc ipr="trust200902" - category="std" - docName="draft-ietf-httpbis-http2-latest" - x:maturity-level="proposed" - xmlns:x="http://purl.org/net/xml2rfc/ext"> - <x:feedback template="mailto:ietf-http-wg@w3.org?subject={docname},%20%22{section}%22&amp;body=&lt;{ref}&gt;:"/> - <front> - <title abbrev="HTTP/2">Hypertext Transfer Protocol version 2</title> - - <author initials="M." surname="Belshe" fullname="Mike Belshe"> - <organization>Twist</organization> - <address> - <email>mbelshe@chromium.org</email> - </address> - </author> - - <author initials="R." surname="Peon" fullname="Roberto Peon"> - <organization>Google, Inc</organization> - <address> - <email>fenix@google.com</email> - </address> - </author> - - <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor"> - <organization>Mozilla</organization> - <address> - <postal> - <street>331 E Evelyn Street</street> - <city>Mountain View</city> - <region>CA</region> - <code>94041</code> - <country>US</country> - </postal> - <email>martin.thomson@gmail.com</email> - </address> - </author> - - <date year="2014" /> - <area>Applications</area> - <workgroup>HTTPbis</workgroup> - <keyword>HTTP</keyword> - <keyword>SPDY</keyword> - <keyword>Web</keyword> - - <abstract> - <t> - This specification describes an optimized expression of the semantics of the Hypertext - Transfer Protocol (HTTP). HTTP/2 enables a more efficient use of network resources and a - reduced perception of latency by introducing header field compression and allowing multiple - concurrent messages on the same connection. It also introduces unsolicited push of - representations from servers to clients. - </t> - <t> - This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax. - HTTP's existing semantics remain unchanged. - </t> - </abstract> - - <note title="Editorial Note (To be removed by RFC Editor)"> - <t> - Discussion of this draft takes place on the HTTPBIS working group mailing list - (ietf-http-wg@w3.org), which is archived at <eref - target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>. - </t> - <t> - Working Group information can be found at <eref - target="https://tools.ietf.org/wg/httpbis/"/>; that specific to HTTP/2 are at <eref - target="https://http2.github.io/"/>. - </t> - <t> - The changes in this draft are summarized in <xref - target="change.log"/>. - </t> - </note> - - </front> - - <middle> - <section anchor="intro" title="Introduction"> - - <t> - The Hypertext Transfer Protocol (HTTP) is a wildly successful protocol. However, the - HTTP/1.1 message format (<xref target="RFC7230" x:fmt="," x:rel="#http.message"/>) has - several characteristics that have a negative overall effect on application performance - today. - </t> - <t> - In particular, HTTP/1.0 allowed only one request to be outstanding at a time on a given - TCP connection. HTTP/1.1 added request pipelining, but this only partially addressed - request concurrency and still suffers from head-of-line blocking. Therefore, HTTP/1.1 - clients that need to make many requests typically use multiple connections to a server in - order to achieve concurrency and thereby reduce latency. - </t> - <t> - Furthermore, HTTP header fields are often repetitive and verbose, causing unnecessary - network traffic, as well as causing the initial <xref target="TCP">TCP</xref> congestion - window to quickly fill. This can result in excessive latency when multiple requests are - made on a new TCP connection. - </t> - <t> - HTTP/2 addresses these issues by defining an optimized mapping of HTTP's semantics to an - underlying connection. Specifically, it allows interleaving of request and response - messages on the same connection and uses an efficient coding for HTTP header fields. It - also allows prioritization of requests, letting more important requests complete more - quickly, further improving performance. - </t> - <t> - The resulting protocol is more friendly to the network, because fewer TCP connections can - be used in comparison to HTTP/1.x. This means less competition with other flows, and - longer-lived connections, which in turn leads to better utilization of available network - capacity. - </t> - <t> - Finally, HTTP/2 also enables more efficient processing of messages through use of binary - message framing. - </t> - </section> - - <section anchor="Overview" title="HTTP/2 Protocol Overview"> - <t> - HTTP/2 provides an optimized transport for HTTP semantics. HTTP/2 supports all of the core - features of HTTP/1.1, but aims to be more efficient in several ways. - </t> - <t> - The basic protocol unit in HTTP/2 is a <xref target="FrameHeader">frame</xref>. Each frame - type serves a different purpose. For example, <x:ref>HEADERS</x:ref> and - <x:ref>DATA</x:ref> frames form the basis of <xref target="HttpSequence">HTTP requests and - responses</xref>; other frame types like <x:ref>SETTINGS</x:ref>, - <x:ref>WINDOW_UPDATE</x:ref>, and <x:ref>PUSH_PROMISE</x:ref> are used in support of other - HTTP/2 features. - </t> - <t> - Multiplexing of requests is achieved by having each HTTP request-response exchange - associated with its own <xref target="StreamsLayer">stream</xref>. Streams are largely - independent of each other, so a blocked or stalled request or response does not prevent - progress on other streams. - </t> - <t> - Flow control and prioritization ensure that it is possible to efficiently use multiplexed - streams. <xref target="FlowControl">Flow control</xref> helps to ensure that only data that - can be used by a receiver is transmitted. <xref - target="StreamPriority">Prioritization</xref> ensures that limited resources can be directed - to the most important streams first. - </t> - <t> - HTTP/2 adds a new interaction mode, whereby a server can <xref target="PushResources">push - responses to a client</xref>. Server push allows a server to speculatively send a client - data that the server anticipates the client will need, trading off some network usage - against a potential latency gain. The server does this by synthesizing a request, which it - sends as a <x:ref>PUSH_PROMISE</x:ref> frame. The server is then able to send a response to - the synthetic request on a separate stream. - </t> - <t> - Frames that contain HTTP header fields are <xref target="HeaderBlock">compressed</xref>. - HTTP requests can be highly redundant, so compression can reduce the size of requests and - responses significantly. - </t> - - <section title="Document Organization"> - <t> - The HTTP/2 specification is split into four parts: - <list style="symbols"> - <t> - <xref target="starting">Starting HTTP/2</xref> covers how an HTTP/2 connection is - initiated. - </t> - <t> - The <xref target="FramingLayer">framing</xref> and <xref - target="StreamsLayer">streams</xref> layers describe the way HTTP/2 frames are - structured and formed into multiplexed streams. - </t> - <t> - <xref target="FrameTypes">Frame</xref> and <xref target="ErrorCodes">error</xref> - definitions include details of the frame and error types used in HTTP/2. - </t> - <t> - <xref target="HTTPLayer">HTTP mappings</xref> and <xref target="HttpExtra">additional - requirements</xref> describe how HTTP semantics are expressed using frames and - streams. - </t> - </list> - </t> - <t> - While some of the frame and stream layer concepts are isolated from HTTP, this - specification does not define a completely generic framing layer. The framing and streams - layers are tailored to the needs of the HTTP protocol and server push. - </t> - </section> - - <section title="Conventions and Terminology"> - <t> - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD - NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as - described in <xref target="RFC2119">RFC 2119</xref>. - </t> - <t> - All numeric values are in network byte order. Values are unsigned unless otherwise - indicated. Literal values are provided in decimal or hexadecimal as appropriate. - Hexadecimal literals are prefixed with <spanx style="verb">0x</spanx> to distinguish them - from decimal literals. - </t> - <t> - The following terms are used: - <list style="hanging"> - <t hangText="client:"> - The endpoint initiating the HTTP/2 connection. - </t> - <t hangText="connection:"> - A transport-layer connection between two endpoints. - </t> - <t hangText="connection error:"> - An error that affects the entire HTTP/2 connection. - </t> - <t hangText="endpoint:"> - Either the client or server of the connection. - </t> - <t hangText="frame:"> - The smallest unit of communication within an HTTP/2 connection, consisting of a header - and a variable-length sequence of octets structured according to the frame type. - </t> - <t hangText="peer:"> - An endpoint. When discussing a particular endpoint, "peer" refers to the endpoint - that is remote to the primary subject of discussion. - </t> - <t hangText="receiver:"> - An endpoint that is receiving frames. - </t> - <t hangText="sender:"> - An endpoint that is transmitting frames. - </t> - <t hangText="server:"> - The endpoint which did not initiate the HTTP/2 connection. - </t> - <t hangText="stream:"> - A bi-directional flow of frames across a virtual channel within the HTTP/2 connection. - </t> - <t hangText="stream error:"> - An error on the individual HTTP/2 stream. - </t> - </list> - </t> - <t> - Finally, the terms "gateway", "intermediary", "proxy", and "tunnel" are defined - in <xref target="RFC7230" x:fmt="of" x:rel="#intermediaries"/>. - </t> - </section> - </section> - - <section anchor="starting" title="Starting HTTP/2"> - <t> - An HTTP/2 connection is an application layer protocol running on top of a TCP connection - (<xref target="TCP"/>). The client is the TCP connection initiator. - </t> - <t> - HTTP/2 uses the same "http" and "https" URI schemes used by HTTP/1.1. HTTP/2 shares the same - default port numbers: 80 for "http" URIs and 443 for "https" URIs. As a result, - implementations processing requests for target resource URIs like <spanx - style="verb">http://example.org/foo</spanx> or <spanx - style="verb">https://example.com/bar</spanx> are required to first discover whether the - upstream server (the immediate peer to which the client wishes to establish a connection) - supports HTTP/2. - </t> - - <t> - The means by which support for HTTP/2 is determined is different for "http" and "https" - URIs. Discovery for "http" URIs is described in <xref target="discover-http"/>. Discovery - for "https" URIs is described in <xref target="discover-https"/>. - </t> - - <section anchor="versioning" title="HTTP/2 Version Identification"> - <t> - The protocol defined in this document has two identifiers. - <list style="symbols"> - <x:lt> - <t> - The string "h2" identifies the protocol where HTTP/2 uses <xref - target="TLS12">TLS</xref>. This identifier is used in the <xref - target="TLS-ALPN">TLS application layer protocol negotiation extension (ALPN)</xref> - field and any place that HTTP/2 over TLS is identified. - </t> - <t> - The "h2" string is serialized into an ALPN protocol identifier as the two octet - sequence: 0x68, 0x32. - </t> - </x:lt> - <x:lt> - <t> - The string "h2c" identifies the protocol where HTTP/2 is run over cleartext TCP. - This identifier is used in the HTTP/1.1 Upgrade header field and any place that - HTTP/2 over TCP is identified. - </t> - </x:lt> - </list> - </t> - <t> - Negotiating "h2" or "h2c" implies the use of the transport, security, framing and message - semantics described in this document. - </t> - <t> - <cref>RFC Editor's Note: please remove the remainder of this section prior to the - publication of a final version of this document.</cref> - </t> - <t> - Only implementations of the final, published RFC can identify themselves as "h2" or "h2c". - Until such an RFC exists, implementations MUST NOT identify themselves using these - strings. - </t> - <t> - Examples and text throughout the rest of this document use "h2" as a matter of - editorial convenience only. Implementations of draft versions MUST NOT identify using - this string. - </t> - <t> - Implementations of draft versions of the protocol MUST add the string "-" and the - corresponding draft number to the identifier. For example, draft-ietf-httpbis-http2-11 - over TLS is identified using the string "h2-11". - </t> - <t> - Non-compatible experiments that are based on these draft versions MUST append the string - "-" and an experiment name to the identifier. For example, an experimental implementation - of packet mood-based encoding based on draft-ietf-httpbis-http2-09 might identify itself - as "h2-09-emo". Note that any label MUST conform to the "token" syntax defined in - <xref target="RFC7230" x:fmt="of" x:rel="#field.components"/>. Experimenters are - encouraged to coordinate their experiments on the ietf-http-wg@w3.org mailing list. - </t> - </section> - - <section anchor="discover-http" title="Starting HTTP/2 for &quot;http&quot; URIs"> - <t> - A client that makes a request for an "http" URI without prior knowledge about support for - HTTP/2 uses the HTTP Upgrade mechanism (<xref target="RFC7230" x:fmt="of" - x:rel="#header.upgrade"/>). The client makes an HTTP/1.1 request that includes an Upgrade - header field identifying HTTP/2 with the "h2c" token. The HTTP/1.1 request MUST include - exactly one <xref target="Http2SettingsHeader">HTTP2-Settings</xref> header field. - </t> - <figure> - <preamble>For example:</preamble> - <artwork type="message/http; msgtype=&#34;request&#34;" x:indent-with=" "><![CDATA[ -GET / HTTP/1.1 -Host: server.example.com -Connection: Upgrade, HTTP2-Settings -Upgrade: h2c -HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload> - -]]></artwork> - </figure> - <t> - Requests that contain an entity body MUST be sent in their entirety before the client can - send HTTP/2 frames. This means that a large request entity can block the use of the - connection until it is completely sent. - </t> - <t> - If concurrency of an initial request with subsequent requests is important, an OPTIONS - request can be used to perform the upgrade to HTTP/2, at the cost of an additional - round-trip. - </t> - <t> - A server that does not support HTTP/2 can respond to the request as though the Upgrade - header field were absent: - </t> - <figure> - <artwork type="message/http; msgtype=&#34;response&#34;" x:indent-with=" "> -HTTP/1.1 200 OK -Content-Length: 243 -Content-Type: text/html - -... -</artwork> - </figure> - <t> - A server MUST ignore a "h2" token in an Upgrade header field. Presence of a token with - "h2" implies HTTP/2 over TLS, which is instead negotiated as described in <xref - target="discover-https"/>. - </t> - <t> - A server that supports HTTP/2 can accept the upgrade with a 101 (Switching Protocols) - response. After the empty line that terminates the 101 response, the server can begin - sending HTTP/2 frames. These frames MUST include a response to the request that initiated - the Upgrade. - </t> - - <figure> - <preamble> - For example: - </preamble> - <artwork type="message/http; msgtype=&#34;response&#34;" x:indent-with=" "> -HTTP/1.1 101 Switching Protocols -Connection: Upgrade -Upgrade: h2c - -[ HTTP/2 connection ... -</artwork> - </figure> - <t> - The first HTTP/2 frame sent by the server is a <x:ref>SETTINGS</x:ref> frame (<xref - target="SETTINGS"/>) as the server connection preface (<xref - target="ConnectionHeader"/>). Upon receiving the 101 response, the client sends a <xref - target="ConnectionHeader">connection preface</xref>, which includes a - <x:ref>SETTINGS</x:ref> frame. - </t> - <t> - The HTTP/1.1 request that is sent prior to upgrade is assigned stream identifier 1 and is - assigned <xref target="pri-default">default priority values</xref>. Stream 1 is - implicitly half closed from the client toward the server, since the request is completed - as an HTTP/1.1 request. After commencing the HTTP/2 connection, stream 1 is used for the - response. - </t> - - <section anchor="Http2SettingsHeader" title="HTTP2-Settings Header Field"> - <t> - A request that upgrades from HTTP/1.1 to HTTP/2 MUST include exactly one <spanx - style="verb">HTTP2-Settings</spanx> header field. The <spanx - style="verb">HTTP2-Settings</spanx> header field is a connection-specific header field - that includes parameters that govern the HTTP/2 connection, provided in anticipation of - the server accepting the request to upgrade. - </t> - <figure> - <artwork type="abnf" x:indent-with=" "><![CDATA[ -HTTP2-Settings = token68 -]]></artwork> - </figure> - <t> - A server MUST NOT upgrade the connection to HTTP/2 if this header field is not present, - or if more than one is present. A server MUST NOT send this header field. - </t> - - <t> - The content of the <spanx style="verb">HTTP2-Settings</spanx> header field is the - payload of a <x:ref>SETTINGS</x:ref> frame (<xref target="SETTINGS"/>), encoded as a - base64url string (that is, the URL- and filename-safe Base64 encoding described in <xref - target="RFC4648" x:fmt="of" x:sec="5"/>, with any trailing '=' characters omitted). The - <xref target="RFC5234">ABNF</xref> production for <spanx style="verb">token68</spanx> is - defined in <xref target="RFC7235" x:fmt="of" x:rel="#challenge.and.response"/>. - </t> - <t> - Since the upgrade is only intended to apply to the immediate connection, a client - sending <spanx style="verb">HTTP2-Settings</spanx> MUST also send <spanx - style="verb">HTTP2-Settings</spanx> as a connection option in the <spanx - style="verb">Connection</spanx> header field to prevent it from being forwarded - downstream. - </t> - <t> - A server decodes and interprets these values as it would any other - <x:ref>SETTINGS</x:ref> frame. <xref target="SettingsSync">Acknowledgement of the - SETTINGS parameters</xref> is not necessary, since a 101 response serves as implicit - acknowledgment. Providing these values in the Upgrade request gives a client an - opportunity to provide parameters prior to receiving any frames from the server. - </t> - </section> - </section> - - <section anchor="discover-https" title="Starting HTTP/2 for &quot;https&quot; URIs"> - <t> - A client that makes a request to an "https" URI uses <xref target="TLS12">TLS</xref> - with the <xref target="TLS-ALPN">application layer protocol negotiation extension</xref>. - </t> - <t> - HTTP/2 over TLS uses the "h2" application token. The "h2c" token MUST NOT be sent by a - client or selected by a server. - </t> - <t> - Once TLS negotiation is complete, both the client and the server send a <xref - target="ConnectionHeader">connection preface</xref>. - </t> - </section> - - <section anchor="known-http" title="Starting HTTP/2 with Prior Knowledge"> - <t> - A client can learn that a particular server supports HTTP/2 by other means. For example, - <xref target="ALT-SVC"/> describes a mechanism for advertising this capability. - </t> - <t> - A client MAY immediately send HTTP/2 frames to a server that is known to support HTTP/2, - after the <xref target="ConnectionHeader">connection preface</xref>; a server can - identify such a connection by the presence of the connection preface. This only affects - the establishment of HTTP/2 connections over cleartext TCP; implementations that support - HTTP/2 over TLS MUST use <xref target="TLS-ALPN">protocol negotiation in TLS</xref>. - </t> - <t> - Without additional information, prior support for HTTP/2 is not a strong signal that a - given server will support HTTP/2 for future connections. For example, it is possible for - server configurations to change, for configurations to differ between instances in - clustered servers, or for network conditions to change. - </t> - </section> - - <section anchor="ConnectionHeader" title="HTTP/2 Connection Preface"> - <t> - Upon establishment of a TCP connection and determination that HTTP/2 will be used by both - peers, each endpoint MUST send a connection preface as a final confirmation and to - establish the initial SETTINGS parameters for the HTTP/2 connection. The client and - server each send a different connection preface. - </t> - <t> - The client connection preface starts with a sequence of 24 octets, which in hex notation - are: - </t> - <figure> - <artwork type="inline" x:indent-with=" "><![CDATA[ -0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a -]]></artwork> - </figure> - <t> - (the string <spanx style="verb">PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n</spanx>). This sequence - is followed by a <x:ref>SETTINGS</x:ref> frame (<xref target="SETTINGS"/>). The - <x:ref>SETTINGS</x:ref> frame MAY be empty. The client sends the client connection - preface immediately upon receipt of a 101 Switching Protocols response (indicating a - successful upgrade), or as the first application data octets of a TLS connection. If - starting an HTTP/2 connection with prior knowledge of server support for the protocol, the - client connection preface is sent upon connection establishment. - </t> - <t> - <list> - <t> - The client connection preface is selected so that a large proportion of HTTP/1.1 or - HTTP/1.0 servers and intermediaries do not attempt to process further frames. Note - that this does not address the concerns raised in <xref target="TALKING"/>. - </t> - </list> - </t> - <t> - The server connection preface consists of a potentially empty <x:ref>SETTINGS</x:ref> - frame (<xref target="SETTINGS"/>) that MUST be the first frame the server sends in the - HTTP/2 connection. - </t> - <t> - The <x:ref>SETTINGS</x:ref> frames received from a peer as part of the connection preface - MUST be acknowledged (see <xref target="SettingsSync"/>) after sending the connection - preface. - </t> - <t> - To avoid unnecessary latency, clients are permitted to send additional frames to the - server immediately after sending the client connection preface, without waiting to receive - the server connection preface. It is important to note, however, that the server - connection preface <x:ref>SETTINGS</x:ref> frame might include parameters that necessarily - alter how a client is expected to communicate with the server. Upon receiving the - <x:ref>SETTINGS</x:ref> frame, the client is expected to honor any parameters established. - In some configurations, it is possible for the server to transmit <x:ref>SETTINGS</x:ref> - before the client sends additional frames, providing an opportunity to avoid this issue. - </t> - <t> - Clients and servers MUST treat an invalid connection preface as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. A <x:ref>GOAWAY</x:ref> frame (<xref target="GOAWAY"/>) - MAY be omitted in this case, since an invalid preface indicates that the peer is not using - HTTP/2. - </t> - </section> - </section> - - <section anchor="FramingLayer" title="HTTP Frames"> - <t> - Once the HTTP/2 connection is established, endpoints can begin exchanging frames. - </t> - - <section anchor="FrameHeader" title="Frame Format"> - <t> - All frames begin with a fixed 9-octet header followed by a variable-length payload. - </t> - <figure title="Frame Layout"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length (24) | - +---------------+---------------+---------------+ - | Type (8) | Flags (8) | - +-+-+-----------+---------------+-------------------------------+ - |R| Stream Identifier (31) | - +=+=============================================================+ - | Frame Payload (0...) ... - +---------------------------------------------------------------+ -]]></artwork> - </figure> - <t> - The fields of the frame header are defined as: - <list style="hanging"> - <x:lt hangText="Length:"> - <t> - The length of the frame payload expressed as an unsigned 24-bit integer. Values - greater than 2<x:sup>14</x:sup> (16,384) MUST NOT be sent unless the receiver has - set a larger value for <x:ref>SETTINGS_MAX_FRAME_SIZE</x:ref>. - </t> - <t> - The 9 octets of the frame header are not included in this value. - </t> - </x:lt> - <x:lt hangText="Type:"> - <t> - The 8-bit type of the frame. The frame type determines the format and semantics of - the frame. Implementations MUST ignore and discard any frame that has a type that - is unknown. - </t> - </x:lt> - <x:lt hangText="Flags:"> - <t> - An 8-bit field reserved for frame-type specific boolean flags. - </t> - <t> - Flags are assigned semantics specific to the indicated frame type. Flags that have - no defined semantics for a particular frame type MUST be ignored, and MUST be left - unset (0) when sending. - </t> - </x:lt> - <x:lt hangText="R:"> - <t> - A reserved 1-bit field. The semantics of this bit are undefined and the bit MUST - remain unset (0) when sending and MUST be ignored when receiving. - </t> - </x:lt> - <x:lt hangText="Stream Identifier:"> - <t> - A 31-bit stream identifier (see <xref target="StreamIdentifiers"/>). The value 0 is - reserved for frames that are associated with the connection as a whole as opposed to - an individual stream. - </t> - </x:lt> - </list> - </t> - <t> - The structure and content of the frame payload is dependent entirely on the frame type. - </t> - </section> - - <section anchor="FrameSize" title="Frame Size"> - <t> - The size of a frame payload is limited by the maximum size that a receiver advertises in - the <x:ref>SETTINGS_MAX_FRAME_SIZE</x:ref> setting. This setting can have any value - between 2<x:sup>14</x:sup> (16,384) and 2<x:sup>24</x:sup>-1 (16,777,215) octets, - inclusive. - </t> - <t> - All implementations MUST be capable of receiving and minimally processing frames up to - 2<x:sup>14</x:sup> octets in length, plus the 9 octet <xref target="FrameHeader">frame - header</xref>. The size of the frame header is not included when describing frame sizes. - <list style="hanging"> - <t hangText="Note:"> - Certain frame types, such as <xref target="PING">PING</xref>, impose additional limits - on the amount of payload data allowed. - </t> - </list> - </t> - <t> - If a frame size exceeds any defined limit, or is too small to contain mandatory frame - data, the endpoint MUST send a <x:ref>FRAME_SIZE_ERROR</x:ref> error. A frame size error - in a frame that could alter the state of the entire connection MUST be treated as a <xref - target="ConnectionErrorHandler">connection error</xref>; this includes any frame carrying - a <xref target="HeaderBlock">header block</xref> (that is, <x:ref>HEADERS</x:ref>, - <x:ref>PUSH_PROMISE</x:ref>, and <x:ref>CONTINUATION</x:ref>), <x:ref>SETTINGS</x:ref>, - and any <x:ref>WINDOW_UPDATE</x:ref> frame with a stream identifier of 0. - </t> - <t> - Endpoints are not obligated to use all available space in a frame. Responsiveness can be - improved by using frames that are smaller than the permitted maximum size. Sending large - frames can result in delays in sending time-sensitive frames (such - <x:ref>RST_STREAM</x:ref>, <x:ref>WINDOW_UPDATE</x:ref>, or <x:ref>PRIORITY</x:ref>) - which if blocked by the transmission of a large frame, could affect performance. - </t> - </section> - - <section anchor="HeaderBlock" title="Header Compression and Decompression"> - <t> - Just as in HTTP/1, a header field in HTTP/2 is a name with one or more associated values. - They are used within HTTP request and response messages as well as server push operations - (see <xref target="PushResources" />). - </t> - <t> - Header lists are collections of zero or more header fields. When transmitted over a - connection, a header list is serialized into a header block using <xref - target="COMPRESSION">HTTP Header Compression</xref>. The serialized header block is then - divided into one or more octet sequences, called header block fragments, and transmitted - within the payload of <xref target="HEADERS">HEADERS</xref>, <xref - target="PUSH_PROMISE">PUSH_PROMISE</xref> or <xref - target="CONTINUATION">CONTINUATION</xref> frames. - </t> - <t> - The <xref target="COOKIE">Cookie header field</xref> is treated specially by the HTTP - mapping (see <xref target="CompressCookie"/>). - </t> - <t> - A receiving endpoint reassembles the header block by concatenating its fragments, then - decompresses the block to reconstruct the header list. - </t> - <t> - A complete header block consists of either: - <list style="symbols"> - <t> - a single <x:ref>HEADERS</x:ref> or <x:ref>PUSH_PROMISE</x:ref> frame, - with the END_HEADERS flag set, or - </t> - <t> - a <x:ref>HEADERS</x:ref> or <x:ref>PUSH_PROMISE</x:ref> frame with the END_HEADERS - flag cleared and one or more <x:ref>CONTINUATION</x:ref> frames, - where the last <x:ref>CONTINUATION</x:ref> frame has the END_HEADERS flag set. - </t> - </list> - </t> - <t> - Header compression is stateful. One compression context and one decompression context is - used for the entire connection. Each header block is processed as a discrete unit. - Header blocks MUST be transmitted as a contiguous sequence of frames, with no interleaved - frames of any other type or from any other stream. The last frame in a sequence of - <x:ref>HEADERS</x:ref> or <x:ref>CONTINUATION</x:ref> frames MUST have the END_HEADERS - flag set. The last frame in a sequence of <x:ref>PUSH_PROMISE</x:ref> or - <x:ref>CONTINUATION</x:ref> frames MUST have the END_HEADERS flag set. This allows a - header block to be logically equivalent to a single frame. - </t> - <t> - Header block fragments can only be sent as the payload of <x:ref>HEADERS</x:ref>, - <x:ref>PUSH_PROMISE</x:ref> or <x:ref>CONTINUATION</x:ref> frames, because these frames - carry data that can modify the compression context maintained by a receiver. An endpoint - receiving <x:ref>HEADERS</x:ref>, <x:ref>PUSH_PROMISE</x:ref> or - <x:ref>CONTINUATION</x:ref> frames MUST reassemble header blocks and perform decompression - even if the frames are to be discarded. A receiver MUST terminate the connection with a - <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>COMPRESSION_ERROR</x:ref> if it does not decompress a header block. - </t> - </section> - </section> - - <section anchor="StreamsLayer" title="Streams and Multiplexing"> - <t> - A "stream" is an independent, bi-directional sequence of frames exchanged between the client - and server within an HTTP/2 connection. Streams have several important characteristics: - <list style="symbols"> - <t> - A single HTTP/2 connection can contain multiple concurrently open streams, with either - endpoint interleaving frames from multiple streams. - </t> - <t> - Streams can be established and used unilaterally or shared by either the client or - server. - </t> - <t> - Streams can be closed by either endpoint. - </t> - <t> - The order in which frames are sent on a stream is significant. Recipients process frames - in the order they are received. In particular, the order of <x:ref>HEADERS</x:ref>, - and <x:ref>DATA</x:ref> frames is semantically significant. - </t> - <t> - Streams are identified by an integer. Stream identifiers are assigned to streams by the - endpoint initiating the stream. - </t> - </list> - </t> - - <section anchor="StreamStates" title="Stream States"> - <t> - The lifecycle of a stream is shown in <xref target="StreamStatesFigure"/>. - </t> - - <figure anchor="StreamStatesFigure" title="Stream States"> - <artwork type="drawing"> - <![CDATA[ - +--------+ - PP | | PP - ,--------| idle |--------. - / | | \ - v +--------+ v - +----------+ | +----------+ - | | | H | | - ,---| reserved | | | reserved |---. - | | (local) | v | (remote) | | - | +----------+ +--------+ +----------+ | - | | ES | | ES | | - | | H ,-------| open |-------. | H | - | | / | | \ | | - | v v +--------+ v v | - | +----------+ | +----------+ | - | | half | | | half | | - | | closed | | R | closed | | - | | (remote) | | | (local) | | - | +----------+ | +----------+ | - | | v | | - | | ES / R +--------+ ES / R | | - | `----------->| |<-----------' | - | R | closed | R | - `-------------------->| |<--------------------' - +--------+ - - H: HEADERS frame (with implied CONTINUATIONs) - PP: PUSH_PROMISE frame (with implied CONTINUATIONs) - ES: END_STREAM flag - R: RST_STREAM frame -]]> - </artwork> - </figure> - - <t> - Note that this diagram shows stream state transitions and the frames and flags that affect - those transitions only. In this regard, <x:ref>CONTINUATION</x:ref> frames do not result - in state transitions; they are effectively part of the <x:ref>HEADERS</x:ref> or - <x:ref>PUSH_PROMISE</x:ref> that they follow. For this purpose, the END_STREAM flag is - processed as a separate event to the frame that bears it; a <x:ref>HEADERS</x:ref> frame - with the END_STREAM flag set can cause two state transitions. - </t> - <t> - Both endpoints have a subjective view of the state of a stream that could be different - when frames are in transit. Endpoints do not coordinate the creation of streams; they are - created unilaterally by either endpoint. The negative consequences of a mismatch in - states are limited to the "closed" state after sending <x:ref>RST_STREAM</x:ref>, where - frames might be received for some time after closing. - </t> - <t> - Streams have the following states: - <list style="hanging"> - - <x:lt hangText="idle:"> - <t> - <vspace blankLines="0"/> - All streams start in the "idle" state. In this state, no frames have been - exchanged. - </t> - <t> - The following transitions are valid from this state: - <list style="symbols"> - <t> - Sending or receiving a <x:ref>HEADERS</x:ref> frame causes the stream to become - "open". The stream identifier is selected as described in <xref - target="StreamIdentifiers"/>. The same <x:ref>HEADERS</x:ref> frame can also - cause a stream to immediately become "half closed". - </t> - <t> - Sending a <x:ref>PUSH_PROMISE</x:ref> frame marks the associated stream for - later use. The stream state for the reserved stream transitions to "reserved - (local)". - </t> - <t> - Receiving a <x:ref>PUSH_PROMISE</x:ref> frame marks the associated stream as - reserved by the remote peer. The state of the stream becomes "reserved - (remote)". - </t> - </list> - </t> - <t> - Receiving any frames other than <x:ref>HEADERS</x:ref> or - <x:ref>PUSH_PROMISE</x:ref> on a stream in this state MUST be treated as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </x:lt> - - <x:lt hangText="reserved (local):"> - <t> - <vspace blankLines="0"/> - A stream in the "reserved (local)" state is one that has been promised by sending a - <x:ref>PUSH_PROMISE</x:ref> frame. A <x:ref>PUSH_PROMISE</x:ref> frame reserves an - idle stream by associating the stream with an open stream that was initiated by the - remote peer (see <xref target="PushResources"/>). - </t> - <t> - In this state, only the following transitions are possible: - <list style="symbols"> - <t> - The endpoint can send a <x:ref>HEADERS</x:ref> frame. This causes the stream to - open in a "half closed (remote)" state. - </t> - <t> - Either endpoint can send a <x:ref>RST_STREAM</x:ref> frame to cause the stream - to become "closed". This releases the stream reservation. - </t> - </list> - </t> - <t> - An endpoint MUST NOT send any type of frame other than <x:ref>HEADERS</x:ref> or - <x:ref>RST_STREAM</x:ref> in this state. - </t> - <t> - A <x:ref>PRIORITY</x:ref> frame MAY be received in this state. Receiving any type - of frame other than <x:ref>RST_STREAM</x:ref> or <x:ref>PRIORITY</x:ref> on a stream - in this state MUST be treated as a <xref target="ConnectionErrorHandler">connection - error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </x:lt> - - <x:lt hangText="reserved (remote):"> - <t> - <vspace blankLines="0"/> - A stream in the "reserved (remote)" state has been reserved by a remote peer. - </t> - <t> - In this state, only the following transitions are possible: - <list style="symbols"> - <t> - Receiving a <x:ref>HEADERS</x:ref> frame causes the stream to transition to - "half closed (local)". - </t> - <t> - Either endpoint can send a <x:ref>RST_STREAM</x:ref> frame to cause the stream - to become "closed". This releases the stream reservation. - </t> - </list> - </t> - <t> - An endpoint MAY send a <x:ref>PRIORITY</x:ref> frame in this state to reprioritize - the reserved stream. An endpoint MUST NOT send any type of frame other than - <x:ref>RST_STREAM</x:ref>, <x:ref>WINDOW_UPDATE</x:ref>, or <x:ref>PRIORITY</x:ref> - in this state. - </t> - <t> - Receiving any type of frame other than <x:ref>HEADERS</x:ref> or - <x:ref>RST_STREAM</x:ref> on a stream in this state MUST be treated as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </x:lt> - - <x:lt hangText="open:"> - <t> - <vspace blankLines="0"/> - A stream in the "open" state may be used by both peers to send frames of any type. - In this state, sending peers observe advertised <xref target="FlowControl">stream - level flow control limits</xref>. - </t> - <t> - From this state either endpoint can send a frame with an END_STREAM flag set, which - causes the stream to transition into one of the "half closed" states: an endpoint - sending an END_STREAM flag causes the stream state to become "half closed (local)"; - an endpoint receiving an END_STREAM flag causes the stream state to become "half - closed (remote)". - </t> - <t> - Either endpoint can send a <x:ref>RST_STREAM</x:ref> frame from this state, causing - it to transition immediately to "closed". - </t> - </x:lt> - - <x:lt hangText="half closed (local):"> - <t> - <vspace blankLines="0"/> - A stream that is in the "half closed (local)" state cannot be used for sending - frames. Only <x:ref>WINDOW_UPDATE</x:ref>, <x:ref>PRIORITY</x:ref> and - <x:ref>RST_STREAM</x:ref> frames can be sent in this state. - </t> - <t> - A stream transitions from this state to "closed" when a frame that contains an - END_STREAM flag is received, or when either peer sends a <x:ref>RST_STREAM</x:ref> - frame. - </t> - <t> - A receiver can ignore <x:ref>WINDOW_UPDATE</x:ref> frames in this state, which might - arrive for a short period after a frame bearing the END_STREAM flag is sent. - </t> - <t> - <x:ref>PRIORITY</x:ref> frames received in this state are used to reprioritize - streams that depend on the current stream. - </t> - </x:lt> - - <x:lt hangText="half closed (remote):"> - <t> - <vspace blankLines="0"/> - A stream that is "half closed (remote)" is no longer being used by the peer to send - frames. In this state, an endpoint is no longer obligated to maintain a receiver - flow control window if it performs flow control. - </t> - <t> - If an endpoint receives additional frames for a stream that is in this state, other - than <x:ref>WINDOW_UPDATE</x:ref>, <x:ref>PRIORITY</x:ref> or - <x:ref>RST_STREAM</x:ref>, it MUST respond with a <xref - target="StreamErrorHandler">stream error</xref> of type - <x:ref>STREAM_CLOSED</x:ref>. - </t> - <t> - A stream that is "half closed (remote)" can be used by the endpoint to send frames - of any type. In this state, the endpoint continues to observe advertised <xref - target="FlowControl">stream level flow control limits</xref>. - </t> - <t> - A stream can transition from this state to "closed" by sending a frame that contains - an END_STREAM flag, or when either peer sends a <x:ref>RST_STREAM</x:ref> frame. - </t> - </x:lt> - - <x:lt hangText="closed:"> - <t> - <vspace blankLines="0"/> - The "closed" state is the terminal state. - </t> - <t> - An endpoint MUST NOT send frames other than <x:ref>PRIORITY</x:ref> on a closed - stream. An endpoint that receives any frame other than <x:ref>PRIORITY</x:ref> - after receiving a <x:ref>RST_STREAM</x:ref> MUST treat that as a <xref - target="StreamErrorHandler">stream error</xref> of type - <x:ref>STREAM_CLOSED</x:ref>. Similarly, an endpoint that receives any frames after - receiving a frame with the END_STREAM flag set MUST treat that as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>STREAM_CLOSED</x:ref>, unless the frame is permitted as described below. - </t> - <t> - <x:ref>WINDOW_UPDATE</x:ref> or <x:ref>RST_STREAM</x:ref> frames can be received in - this state for a short period after a <x:ref>DATA</x:ref> or <x:ref>HEADERS</x:ref> - frame containing an END_STREAM flag is sent. Until the remote peer receives and - processes <x:ref>RST_STREAM</x:ref> or the frame bearing the END_STREAM flag, it - might send frames of these types. Endpoints MUST ignore - <x:ref>WINDOW_UPDATE</x:ref> or <x:ref>RST_STREAM</x:ref> frames received in this - state, though endpoints MAY choose to treat frames that arrive a significant time - after sending END_STREAM as a <xref target="ConnectionErrorHandler">connection - error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - <x:ref>PRIORITY</x:ref> frames can be sent on closed streams to prioritize streams - that are dependent on the closed stream. Endpoints SHOULD process - <x:ref>PRIORITY</x:ref> frame, though they can be ignored if the stream has been - removed from the dependency tree (see <xref target="priority-gc"/>). - </t> - <t> - If this state is reached as a result of sending a <x:ref>RST_STREAM</x:ref> frame, - the peer that receives the <x:ref>RST_STREAM</x:ref> might have already sent - or - enqueued for sending - frames on the stream that cannot be withdrawn. An endpoint - MUST ignore frames that it receives on closed streams after it has sent a - <x:ref>RST_STREAM</x:ref> frame. An endpoint MAY choose to limit the period over - which it ignores frames and treat frames that arrive after this time as being in - error. - </t> - <t> - Flow controlled frames (i.e., <x:ref>DATA</x:ref>) received after sending - <x:ref>RST_STREAM</x:ref> are counted toward the connection flow control window. - Even though these frames might be ignored, because they are sent before the sender - receives the <x:ref>RST_STREAM</x:ref>, the sender will consider the frames to count - against the flow control window. - </t> - <t> - An endpoint might receive a <x:ref>PUSH_PROMISE</x:ref> frame after it sends - <x:ref>RST_STREAM</x:ref>. <x:ref>PUSH_PROMISE</x:ref> causes a stream to become - "reserved" even if the associated stream has been reset. Therefore, a - <x:ref>RST_STREAM</x:ref> is needed to close an unwanted promised stream. - </t> - </x:lt> - </list> - </t> - <t> - In the absence of more specific guidance elsewhere in this document, implementations - SHOULD treat the receipt of a frame that is not expressly permitted in the description of - a state as a <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. Frame of unknown types are ignored. - </t> - <t> - An example of the state transitions for an HTTP request/response exchange can be found in - <xref target="HttpSequence"/>. An example of the state transitions for server push can be - found in <xref target="PushRequests"/> and <xref target="PushResponses"/>. - </t> - - <section anchor="StreamIdentifiers" title="Stream Identifiers"> - <t> - Streams are identified with an unsigned 31-bit integer. Streams initiated by a client - MUST use odd-numbered stream identifiers; those initiated by the server MUST use - even-numbered stream identifiers. A stream identifier of zero (0x0) is used for - connection control messages; the stream identifier zero cannot be used to establish a - new stream. - </t> - <t> - HTTP/1.1 requests that are upgraded to HTTP/2 (see <xref target="discover-http"/>) are - responded to with a stream identifier of one (0x1). After the upgrade - completes, stream 0x1 is "half closed (local)" to the client. Therefore, stream 0x1 - cannot be selected as a new stream identifier by a client that upgrades from HTTP/1.1. - </t> - <t> - The identifier of a newly established stream MUST be numerically greater than all - streams that the initiating endpoint has opened or reserved. This governs streams that - are opened using a <x:ref>HEADERS</x:ref> frame and streams that are reserved using - <x:ref>PUSH_PROMISE</x:ref>. An endpoint that receives an unexpected stream identifier - MUST respond with a <xref target="ConnectionErrorHandler">connection error</xref> of - type <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - The first use of a new stream identifier implicitly closes all streams in the "idle" - state that might have been initiated by that peer with a lower-valued stream identifier. - For example, if a client sends a <x:ref>HEADERS</x:ref> frame on stream 7 without ever - sending a frame on stream 5, then stream 5 transitions to the "closed" state when the - first frame for stream 7 is sent or received. - </t> - <t> - Stream identifiers cannot be reused. Long-lived connections can result in an endpoint - exhausting the available range of stream identifiers. A client that is unable to - establish a new stream identifier can establish a new connection for new streams. A - server that is unable to establish a new stream identifier can send a - <x:ref>GOAWAY</x:ref> frame so that the client is forced to open a new connection for - new streams. - </t> - </section> - - <section title="Stream Concurrency"> - <t> - A peer can limit the number of concurrently active streams using the - <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> parameter (see <xref - target="SettingValues"/>) within a <x:ref>SETTINGS</x:ref> frame. The maximum concurrent - streams setting is specific to each endpoint and applies only to the peer that receives - the setting. That is, clients specify the maximum number of concurrent streams the - server can initiate, and servers specify the maximum number of concurrent streams the - client can initiate. - </t> - <t> - Streams that are in the "open" state, or either of the "half closed" states count toward - the maximum number of streams that an endpoint is permitted to open. Streams in any of - these three states count toward the limit advertised in the - <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> setting. Streams in either of the - "reserved" states do not count toward the stream limit. - </t> - <t> - Endpoints MUST NOT exceed the limit set by their peer. An endpoint that receives a - <x:ref>HEADERS</x:ref> frame that causes their advertised concurrent stream limit to be - exceeded MUST treat this as a <xref target="StreamErrorHandler">stream error</xref>. An - endpoint that wishes to reduce the value of - <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> to a value that is below the current - number of open streams can either close streams that exceed the new value or allow - streams to complete. - </t> - </section> - </section> - - <section anchor="FlowControl" title="Flow Control"> - <t> - Using streams for multiplexing introduces contention over use of the TCP connection, - resulting in blocked streams. A flow control scheme ensures that streams on the same - connection do not destructively interfere with each other. Flow control is used for both - individual streams and for the connection as a whole. - </t> - <t> - HTTP/2 provides for flow control through use of the <xref - target="WINDOW_UPDATE">WINDOW_UPDATE frame</xref>. - </t> - - <section anchor="fc-principles" title="Flow Control Principles"> - <t> - HTTP/2 stream flow control aims to allow a variety of flow control algorithms to be - used without requiring protocol changes. Flow control in HTTP/2 has the following - characteristics: - <list style="numbers"> - <t> - Flow control is specific to a connection; i.e., it is "hop-by-hop", not - "end-to-end". - </t> - <t> - Flow control is based on window update frames. Receivers advertise how many octets - they are prepared to receive on a stream and for the entire connection. This is a - credit-based scheme. - </t> - <t> - Flow control is directional with overall control provided by the receiver. A - receiver MAY choose to set any window size that it desires for each stream and for - the entire connection. A sender MUST respect flow control limits imposed by a - receiver. Clients, servers and intermediaries all independently advertise their - flow control window as a receiver and abide by the flow control limits set by - their peer when sending. - </t> - <t> - The initial value for the flow control window is 65,535 octets for both new streams - and the overall connection. - </t> - <t> - The frame type determines whether flow control applies to a frame. Of the frames - specified in this document, only <x:ref>DATA</x:ref> frames are subject to flow - control; all other frame types do not consume space in the advertised flow control - window. This ensures that important control frames are not blocked by flow control. - </t> - <t> - Flow control cannot be disabled. - </t> - <t> - HTTP/2 defines only the format and semantics of the <x:ref>WINDOW_UPDATE</x:ref> - frame (<xref target="WINDOW_UPDATE"/>). This document does not stipulate how a - receiver decides when to send this frame or the value that it sends, nor does it - specify how a sender chooses to send packets. Implementations are able to select - any algorithm that suits their needs. - </t> - </list> - </t> - <t> - Implementations are also responsible for managing how requests and responses are sent - based on priority; choosing how to avoid head of line blocking for requests; and - managing the creation of new streams. Algorithm choices for these could interact with - any flow control algorithm. - </t> - </section> - - <section anchor="DisableFlowControl" title="Appropriate Use of Flow Control"> - <t> - Flow control is defined to protect endpoints that are operating under resource - constraints. For example, a proxy needs to share memory between many connections, and - also might have a slow upstream connection and a fast downstream one. Flow control - addresses cases where the receiver is unable process data on one stream, yet wants to - continue to process other streams in the same connection. - </t> - <t> - Deployments that do not require this capability can advertise a flow control window of - the maximum size, incrementing the available space when new data is received. This - effectively disables flow control for that receiver. Conversely, a sender is always - subject to the flow control window advertised by the receiver. - </t> - <t> - Deployments with constrained resources (for example, memory) can employ flow control to - limit the amount of memory a peer can consume. Note, however, that this can lead to - suboptimal use of available network resources if flow control is enabled without - knowledge of the bandwidth-delay product (see <xref target="RFC1323"/>). - </t> - <t> - Even with full awareness of the current bandwidth-delay product, implementation of flow - control can be difficult. When using flow control, the receiver MUST read from the TCP - receive buffer in a timely fashion. Failure to do so could lead to a deadlock when - critical frames, such as <x:ref>WINDOW_UPDATE</x:ref>, are not read and acted upon. - </t> - </section> - </section> - - <section anchor="StreamPriority" title="Stream priority"> - <t> - A client can assign a priority for a new stream by including prioritization information in - the <xref target="HEADERS">HEADERS frame</xref> that opens the stream. For an existing - stream, the <xref target="PRIORITY">PRIORITY frame</xref> can be used to change the - priority. - </t> - <t> - The purpose of prioritization is to allow an endpoint to express how it would prefer its - peer allocate resources when managing concurrent streams. Most importantly, priority can - be used to select streams for transmitting frames when there is limited capacity for - sending. - </t> - <t> - Streams can be prioritized by marking them as dependent on the completion of other streams - (<xref target="pri-depend"/>). Each dependency is assigned a relative weight, a number - that is used to determine the relative proportion of available resources that are assigned - to streams dependent on the same stream. - </t> - <!-- - Note that stream dependencies have not yet been validated in practice. The theory - might be fairly sound, but there are no implementations currently sending these. If it - turns out that they are not useful, or actively harmful, implementations will be requested - to avoid creating stream dependencies. - --> - <t> - Explicitly setting the priority for a stream is input to a prioritization process. It - does not guarantee any particular processing or transmission order for the stream relative - to any other stream. An endpoint cannot force a peer to process concurrent streams in a - particular order using priority. Expressing priority is therefore only ever a suggestion. - </t> - <t> - Providing prioritization information is optional, so default values are used if no - explicit indicator is provided (<xref target="pri-default"/>). - </t> - - <section title="Stream Dependencies" anchor="pri-depend"> - <t> - Each stream can be given an explicit dependency on another stream. Including a - dependency expresses a preference to allocate resources to the identified stream rather - than to the dependent stream. - </t> - <t> - A stream that is not dependent on any other stream is given a stream dependency of 0x0. - In other words, the non-existent stream 0 forms the root of the tree. - </t> - <t> - A stream that depends on another stream is a dependent stream. The stream upon which a - stream is dependent is a parent stream. A dependency on a stream that is not currently - in the tree - such as a stream in the "idle" state - results in that stream being given - a <xref target="pri-default">default priority</xref>. - </t> - <t> - When assigning a dependency on another stream, the stream is added as a new dependency - of the parent stream. Dependent streams that share the same parent are not ordered with - respect to each other. For example, if streams B and C are dependent on stream A, and - if stream D is created with a dependency on stream A, this results in a dependency order - of A followed by B, C, and D in any order. - </t> - <figure title="Example of Default Dependency Creation"> - <artwork type="inline"><![CDATA[ - A A - / \ ==> /|\ - B C B D C -]]></artwork> - </figure> - <t> - An exclusive flag allows for the insertion of a new level of dependencies. The - exclusive flag causes the stream to become the sole dependency of its parent stream, - causing other dependencies to become dependent on the exclusive stream. In the - previous example, if stream D is created with an exclusive dependency on stream A, this - results in D becoming the dependency parent of B and C. - </t> - <figure title="Example of Exclusive Dependency Creation"> - <artwork type="inline"><![CDATA[ - A - A | - / \ ==> D - B C / \ - B C -]]></artwork> - </figure> - <t> - Inside the dependency tree, a dependent stream SHOULD only be allocated resources if all - of the streams that it depends on (the chain of parent streams up to 0x0) are either - closed, or it is not possible to make progress on them. - </t> - <t> - A stream cannot depend on itself. An endpoint MUST treat this as a <xref - target="StreamErrorHandler">stream error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </section> - - <section title="Dependency Weighting"> - <t> - All dependent streams are allocated an integer weight between 1 and 256 (inclusive). - </t> - <t> - Streams with the same parent SHOULD be allocated resources proportionally based on their - weight. Thus, if stream B depends on stream A with weight 4, and C depends on stream A - with weight 12, and if no progress can be made on A, stream B ideally receives one third - of the resources allocated to stream C. - </t> - </section> - - <section anchor="reprioritize" title="Reprioritization"> - <t> - Stream priorities are changed using the <x:ref>PRIORITY</x:ref> frame. Setting a - dependency causes a stream to become dependent on the identified parent stream. - </t> - <t> - Dependent streams move with their parent stream if the parent is reprioritized. Setting - a dependency with the exclusive flag for a reprioritized stream moves all the - dependencies of the new parent stream to become dependent on the reprioritized stream. - </t> - <t> - If a stream is made dependent on one of its own dependencies, the formerly dependent - stream is first moved to be dependent on the reprioritized stream's previous parent. - The moved dependency retains its weight. - </t> - <figure title="Example of Dependency Reordering"> - <preamble> - For example, consider an original dependency tree where B and C depend on A, D and E - depend on C, and F depends on D. If A is made dependent on D, then D takes the place - of A. All other dependency relationships stay the same, except for F, which becomes - dependent on A if the reprioritization is exclusive. - </preamble> - <artwork type="inline"><![CDATA[ - ? ? ? ? - | / \ | | - A D A D D - / \ / / \ / \ | - B C ==> F B C ==> F A OR A - / \ | / \ /|\ - D E E B C B C F - | | | - F E E - (intermediate) (non-exclusive) (exclusive) -]]></artwork> - </figure> - </section> - - <section anchor="priority-gc" title="Prioritization State Management"> - <t> - When a stream is removed from the dependency tree, its dependencies can be moved to - become dependent on the parent of the closed stream. The weights of new dependencies - are recalculated by distributing the weight of the dependency of the closed stream - proportionally based on the weights of its dependencies. - </t> - <t> - Streams that are removed from the dependency tree cause some prioritization information - to be lost. Resources are shared between streams with the same parent stream, which - means that if a stream in that set closes or becomes blocked, any spare capacity - allocated to a stream is distributed to the immediate neighbors of the stream. However, - if the common dependency is removed from the tree, those streams share resources with - streams at the next highest level. - </t> - <t> - For example, assume streams A and B share a parent, and streams C and D both depend on - stream A. Prior to the removal of stream A, if streams A and D are unable to proceed, - then stream C receives all the resources dedicated to stream A. If stream A is removed - from the tree, the weight of stream A is divided between streams C and D. If stream D - is still unable to proceed, this results in stream C receiving a reduced proportion of - resources. For equal starting weights, C receives one third, rather than one half, of - available resources. - </t> - <t> - It is possible for a stream to become closed while prioritization information that - creates a dependency on that stream is in transit. If a stream identified in a - dependency has no associated priority information, then the dependent stream is instead - assigned a <xref target="pri-default">default priority</xref>. This potentially creates - suboptimal prioritization, since the stream could be given a priority that is different - to what is intended. - </t> - <t> - To avoid these problems, an endpoint SHOULD retain stream prioritization state for a - period after streams become closed. The longer state is retained, the lower the chance - that streams are assigned incorrect or default priority values. - </t> - <t> - This could create a large state burden for an endpoint, so this state MAY be limited. - An endpoint MAY apply a fixed upper limit on the number of closed streams for which - prioritization state is tracked to limit state exposure. The amount of additional state - an endpoint maintains could be dependent on load; under high load, prioritization state - can be discarded to limit resource commitments. In extreme cases, an endpoint could - even discard prioritization state for active or reserved streams. If a fixed limit is - applied, endpoints SHOULD maintain state for at least as many streams as allowed by - their setting for <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref>. - </t> - <t> - An endpoint receiving a <x:ref>PRIORITY</x:ref> frame that changes the priority of a - closed stream SHOULD alter the dependencies of the streams that depend on it, if it has - retained enough state to do so. - </t> - </section> - - <section title="Default Priorities" anchor="pri-default"> - <t> - Providing priority information is optional. Streams are assigned a non-exclusive - dependency on stream 0x0 by default. <xref target="PushResources">Pushed streams</xref> - initially depend on their associated stream. In both cases, streams are assigned a - default weight of 16. - </t> - </section> - </section> - - <section title="Error Handling"> - <t> - HTTP/2 framing permits two classes of error: - <list style="symbols"> - <t> - An error condition that renders the entire connection unusable is a connection error. - </t> - <t> - An error in an individual stream is a stream error. - </t> - </list> - </t> - <t> - A list of error codes is included in <xref target="ErrorCodes"/>. - </t> - - <section anchor="ConnectionErrorHandler" title="Connection Error Handling"> - <t> - A connection error is any error which prevents further processing of the framing layer, - or which corrupts any connection state. - </t> - <t> - An endpoint that encounters a connection error SHOULD first send a <x:ref>GOAWAY</x:ref> - frame (<xref target="GOAWAY"/>) with the stream identifier of the last stream that it - successfully received from its peer. The <x:ref>GOAWAY</x:ref> frame includes an error - code that indicates why the connection is terminating. After sending the - <x:ref>GOAWAY</x:ref> frame, the endpoint MUST close the TCP connection. - </t> - <t> - It is possible that the <x:ref>GOAWAY</x:ref> will not be reliably received by the - receiving endpoint (see <xref target="RFC7230" x:fmt="," - x:rel="#persistent.tear-down"/>). In the event of a connection error, - <x:ref>GOAWAY</x:ref> only provides a best effort attempt to communicate with the peer - about why the connection is being terminated. - </t> - <t> - An endpoint can end a connection at any time. In particular, an endpoint MAY choose to - treat a stream error as a connection error. Endpoints SHOULD send a - <x:ref>GOAWAY</x:ref> frame when ending a connection, providing that circumstances - permit it. - </t> - </section> - - <section anchor="StreamErrorHandler" title="Stream Error Handling"> - <t> - A stream error is an error related to a specific stream that does not affect processing - of other streams. - </t> - <t> - An endpoint that detects a stream error sends a <x:ref>RST_STREAM</x:ref> frame (<xref - target="RST_STREAM"/>) that contains the stream identifier of the stream where the error - occurred. The <x:ref>RST_STREAM</x:ref> frame includes an error code that indicates the - type of error. - </t> - <t> - A <x:ref>RST_STREAM</x:ref> is the last frame that an endpoint can send on a stream. - The peer that sends the <x:ref>RST_STREAM</x:ref> frame MUST be prepared to receive any - frames that were sent or enqueued for sending by the remote peer. These frames can be - ignored, except where they modify connection state (such as the state maintained for - <xref target="HeaderBlock">header compression</xref>, or flow control). - </t> - <t> - Normally, an endpoint SHOULD NOT send more than one <x:ref>RST_STREAM</x:ref> frame for - any stream. However, an endpoint MAY send additional <x:ref>RST_STREAM</x:ref> frames if - it receives frames on a closed stream after more than a round-trip time. This behavior - is permitted to deal with misbehaving implementations. - </t> - <t> - An endpoint MUST NOT send a <x:ref>RST_STREAM</x:ref> in response to an - <x:ref>RST_STREAM</x:ref> frame, to avoid looping. - </t> - </section> - - <section title="Connection Termination"> - <t> - If the TCP connection is closed or reset while streams remain in open or half closed - states, then the endpoint MUST assume that those streams were abnormally interrupted and - could be incomplete. - </t> - </section> - </section> - - <section anchor="extensibility" title="Extending HTTP/2"> - <t> - HTTP/2 permits extension of the protocol. Protocol extensions can be used to provide - additional services or alter any aspect of the protocol, within the limitations described - in this section. Extensions are effective only within the scope of a single HTTP/2 - connection. - </t> - <t> - Extensions are permitted to use new <xref target="FrameHeader">frame types</xref>, new - <xref target="SettingValues">settings</xref>, or new <xref target="ErrorCodes">error - codes</xref>. Registries are established for managing these extension points: <xref - target="iana-frames">frame types</xref>, <xref target="iana-settings">settings</xref> and - <xref target="iana-errors">error codes</xref>. - </t> - <t> - Implementations MUST ignore unknown or unsupported values in all extensible protocol - elements. Implementations MUST discard frames that have unknown or unsupported types. - This means that any of these extension points can be safely used by extensions without - prior arrangement or negotiation. However, extension frames that appear in the middle of - a <xref target="HeaderBlock">header block</xref> are not permitted; these MUST be treated - as a <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - However, extensions that could change the semantics of existing protocol components MUST - be negotiated before being used. For example, an extension that changes the layout of the - <x:ref>HEADERS</x:ref> frame cannot be used until the peer has given a positive signal - that this is acceptable. In this case, it could also be necessary to coordinate when the - revised layout comes into effect. Note that treating any frame other than - <x:ref>DATA</x:ref> frames as flow controlled is such a change in semantics, and can only - be done through negotiation. - </t> - <t> - This document doesn't mandate a specific method for negotiating the use of an extension, - but notes that a <xref target="SettingValues">setting</xref> could be used for that - purpose. If both peers set a value that indicates willingness to use the extension, then - the extension can be used. If a setting is used for extension negotiation, the initial - value MUST be defined so that the extension is initially disabled. - </t> - </section> - </section> - - <section anchor="FrameTypes" title="Frame Definitions"> - <t> - This specification defines a number of frame types, each identified by a unique 8-bit type - code. Each frame type serves a distinct purpose either in the establishment and management - of the connection as a whole, or of individual streams. - </t> - <t> - The transmission of specific frame types can alter the state of a connection. If endpoints - fail to maintain a synchronized view of the connection state, successful communication - within the connection will no longer be possible. Therefore, it is important that endpoints - have a shared comprehension of how the state is affected by the use any given frame. - </t> - - <section anchor="DATA" title="DATA"> - <t> - DATA frames (type=0x0) convey arbitrary, variable-length sequences of octets associated - with a stream. One or more DATA frames are used, for instance, to carry HTTP request or - response payloads. - </t> - <t> - DATA frames MAY also contain arbitrary padding. Padding can be added to DATA frames to - obscure the size of messages. - </t> - <figure title="DATA Frame Payload"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |Pad Length? (8)| - +---------------+-----------------------------------------------+ - | Data (*) ... - +---------------------------------------------------------------+ - | Padding (*) ... - +---------------------------------------------------------------+ -]]></artwork> - </figure> - <t> - The DATA frame contains the following fields: - <list style="hanging"> - <t hangText="Pad Length:"> - An 8-bit field containing the length of the frame padding in units of octets. This - field is optional and is only present if the PADDED flag is set. - </t> - <t hangText="Data:"> - Application data. The amount of data is the remainder of the frame payload after - subtracting the length of the other fields that are present. - </t> - <t hangText="Padding:"> - Padding octets that contain no application semantic value. Padding octets MUST be set - to zero when sending and ignored when receiving. - </t> - </list> - </t> - - <t> - The DATA frame defines the following flags: - <list style="hanging"> - <t hangText="END_STREAM (0x1):"> - Bit 1 being set indicates that this frame is the last that the endpoint will send for - the identified stream. Setting this flag causes the stream to enter one of <xref - target="StreamStates">the "half closed" states or the "closed" state</xref>. - </t> - <t hangText="PADDED (0x8):"> - Bit 4 being set indicates that the Pad Length field and any padding that it describes - is present. - </t> - </list> - </t> - <t> - DATA frames MUST be associated with a stream. If a DATA frame is received whose stream - identifier field is 0x0, the recipient MUST respond with a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - DATA frames are subject to flow control and can only be sent when a stream is in the - "open" or "half closed (remote)" states. The entire DATA frame payload is included in flow - control, including Pad Length and Padding fields if present. If a DATA frame is received - whose stream is not in "open" or "half closed (local)" state, the recipient MUST respond - with a <xref target="StreamErrorHandler">stream error</xref> of type - <x:ref>STREAM_CLOSED</x:ref>. - </t> - <t> - The total number of padding octets is determined by the value of the Pad Length field. If - the length of the padding is greater than the length of the frame payload, the recipient - MUST treat this as a <xref target="ConnectionErrorHandler">connection error</xref> of - type <x:ref>PROTOCOL_ERROR</x:ref>. - <list style="hanging"> - <t hangText="Note:"> - A frame can be increased in size by one octet by including a Pad Length field with a - value of zero. - </t> - </list> - </t> - <t> - Padding is a security feature; see <xref target="padding"/>. - </t> - </section> - - <section anchor="HEADERS" title="HEADERS"> - <t> - The HEADERS frame (type=0x1) is used to <xref target="StreamStates">open a stream</xref>, - and additionally carries a header block fragment. HEADERS frames can be sent on a stream - in the "open" or "half closed (remote)" states. - </t> - <figure title="HEADERS Frame Payload"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |Pad Length? (8)| - +-+-------------+-----------------------------------------------+ - |E| Stream Dependency? (31) | - +-+-------------+-----------------------------------------------+ - | Weight? (8) | - +-+-------------+-----------------------------------------------+ - | Header Block Fragment (*) ... - +---------------------------------------------------------------+ - | Padding (*) ... - +---------------------------------------------------------------+ -]]></artwork> - </figure> - <t> - The HEADERS frame payload has the following fields: - <list style="hanging"> - <t hangText="Pad Length:"> - An 8-bit field containing the length of the frame padding in units of octets. This - field is only present if the PADDED flag is set. - </t> - <t hangText="E:"> - A single bit flag indicates that the stream dependency is exclusive, see <xref - target="StreamPriority"/>. This field is only present if the PRIORITY flag is set. - </t> - <t hangText="Stream Dependency:"> - A 31-bit stream identifier for the stream that this stream depends on, see <xref - target="StreamPriority"/>. This field is only present if the PRIORITY flag is set. - </t> - <t hangText="Weight:"> - An 8-bit weight for the stream, see <xref target="StreamPriority"/>. Add one to the - value to obtain a weight between 1 and 256. This field is only present if the - PRIORITY flag is set. - </t> - <t hangText="Header Block Fragment:"> - A <xref target="HeaderBlock">header block fragment</xref>. - </t> - <t hangText="Padding:"> - Padding octets that contain no application semantic value. Padding octets MUST be set - to zero when sending and ignored when receiving. - </t> - </list> - </t> - - <t> - The HEADERS frame defines the following flags: - <list style="hanging"> - <x:lt hangText="END_STREAM (0x1):"> - <t> - Bit 1 being set indicates that the <xref target="HeaderBlock">header block</xref> is - the last that the endpoint will send for the identified stream. Setting this flag - causes the stream to enter one of <xref target="StreamStates">"half closed" - states</xref>. - </t> - <t> - A HEADERS frame carries the END_STREAM flag that signals the end of a stream. - However, a HEADERS frame with the END_STREAM flag set can be followed by - <x:ref>CONTINUATION</x:ref> frames on the same stream. Logically, the - <x:ref>CONTINUATION</x:ref> frames are part of the HEADERS frame. - </t> - </x:lt> - <x:lt hangText="END_HEADERS (0x4):"> - <t> - Bit 3 being set indicates that this frame contains an entire <xref - target="HeaderBlock">header block</xref> and is not followed by any - <x:ref>CONTINUATION</x:ref> frames. - </t> - <t> - A HEADERS frame without the END_HEADERS flag set MUST be followed by a - <x:ref>CONTINUATION</x:ref> frame for the same stream. A receiver MUST treat the - receipt of any other type of frame or a frame on a different stream as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </x:lt> - <x:lt hangText="PADDED (0x8):"> - <t> - Bit 4 being set indicates that the Pad Length field and any padding that it - describes is present. - </t> - </x:lt> - <x:lt hangText="PRIORITY (0x20):"> - <t> - Bit 6 being set indicates that the Exclusive Flag (E), Stream Dependency, and Weight - fields are present; see <xref target="StreamPriority"/>. - </t> - </x:lt> - </list> - </t> - - <t> - The payload of a HEADERS frame contains a <xref target="HeaderBlock">header block - fragment</xref>. A header block that does not fit within a HEADERS frame is continued in - a <xref target="CONTINUATION">CONTINUATION frame</xref>. - </t> - - <t> - HEADERS frames MUST be associated with a stream. If a HEADERS frame is received whose - stream identifier field is 0x0, the recipient MUST respond with a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - - <t> - The HEADERS frame changes the connection state as described in <xref - target="HeaderBlock"/>. - </t> - - <t> - The HEADERS frame includes optional padding. Padding fields and flags are identical to - those defined for <xref target="DATA">DATA frames</xref>. - </t> - <t> - Prioritization information in a HEADERS frame is logically equivalent to a separate - <x:ref>PRIORITY</x:ref> frame, but inclusion in HEADERS avoids the potential for churn in - stream prioritization when new streams are created. Priorization fields in HEADERS frames - subsequent to the first on a stream <xref target="reprioritize">reprioritize the - stream</xref>. - </t> - </section> - - <section anchor="PRIORITY" title="PRIORITY"> - <t> - The PRIORITY frame (type=0x2) specifies the <xref target="StreamPriority">sender-advised - priority of a stream</xref>. It can be sent at any time for an existing stream, including - closed streams. This enables reprioritization of existing streams. - </t> - <figure title="PRIORITY Frame Payload"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |E| Stream Dependency (31) | - +-+-------------+-----------------------------------------------+ - | Weight (8) | - +-+-------------+ -]]></artwork> - </figure> - <t> - The payload of a PRIORITY frame contains the following fields: - <list style="hanging"> - <t hangText="E:"> - A single bit flag indicates that the stream dependency is exclusive, see <xref - target="StreamPriority"/>. - </t> - <t hangText="Stream Dependency:"> - A 31-bit stream identifier for the stream that this stream depends on, see <xref - target="StreamPriority"/>. - </t> - <t hangText="Weight:"> - An 8-bit weight for the identified stream dependency, see <xref - target="StreamPriority"/>. Add one to the value to obtain a weight between 1 and 256. - </t> - </list> - </t> - - <t> - The PRIORITY frame does not define any flags. - </t> - - <t> - The PRIORITY frame is associated with an existing stream. If a PRIORITY frame is received - with a stream identifier of 0x0, the recipient MUST respond with a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - The PRIORITY frame can be sent on a stream in any of the "reserved (remote)", "open", - "half closed (local)", "half closed (remote)", or "closed" states, though it cannot be - sent between consecutive frames that comprise a single <xref target="HeaderBlock">header - block</xref>. Note that this frame could arrive after processing or frame sending has - completed, which would cause it to have no effect on the current stream. For a stream - that is in the "half closed (remote)" or "closed" - state, this frame can only affect - processing of the current stream and not frame transmission. - </t> - <t> - The PRIORITY frame is the only frame that can be sent for a stream in the "closed" state. - This allows for the reprioritization of a group of dependent streams by altering the - priority of a parent stream, which might be closed. However, a PRIORITY frame sent on a - closed stream risks being ignored due to the peer having discarded priority state - information for that stream. - </t> - </section> - - <section anchor="RST_STREAM" title="RST_STREAM"> - <t> - The RST_STREAM frame (type=0x3) allows for abnormal termination of a stream. When sent by - the initiator of a stream, it indicates that they wish to cancel the stream or that an - error condition has occurred. When sent by the receiver of a stream, it indicates that - either the receiver is rejecting the stream, requesting that the stream be cancelled, or - that an error condition has occurred. - </t> - <figure title="RST_STREAM Frame Payload"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Error Code (32) | - +---------------------------------------------------------------+ -]]></artwork> - </figure> - - <t> - The RST_STREAM frame contains a single unsigned, 32-bit integer identifying the <xref - target="ErrorCodes">error code</xref>. The error code indicates why the stream is being - terminated. - </t> - - <t> - The RST_STREAM frame does not define any flags. - </t> - - <t> - The RST_STREAM frame fully terminates the referenced stream and causes it to enter the - closed state. After receiving a RST_STREAM on a stream, the receiver MUST NOT send - additional frames for that stream, with the exception of <x:ref>PRIORITY</x:ref>. However, - after sending the RST_STREAM, the sending endpoint MUST be prepared to receive and process - additional frames sent on the stream that might have been sent by the peer prior to the - arrival of the RST_STREAM. - </t> - - <t> - RST_STREAM frames MUST be associated with a stream. If a RST_STREAM frame is received - with a stream identifier of 0x0, the recipient MUST treat this as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - - <t> - RST_STREAM frames MUST NOT be sent for a stream in the "idle" state. If a RST_STREAM - frame identifying an idle stream is received, the recipient MUST treat this as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - - </section> - - <section anchor="SETTINGS" title="SETTINGS"> - <t> - The SETTINGS frame (type=0x4) conveys configuration parameters that affect how endpoints - communicate, such as preferences and constraints on peer behavior. The SETTINGS frame is - also used to acknowledge the receipt of those parameters. Individually, a SETTINGS - parameter can also be referred to as a "setting". - </t> - <t> - SETTINGS parameters are not negotiated; they describe characteristics of the sending peer, - which are used by the receiving peer. Different values for the same parameter can be - advertised by each peer. For example, a client might set a high initial flow control - window, whereas a server might set a lower value to conserve resources. - </t> - - <t> - A SETTINGS frame MUST be sent by both endpoints at the start of a connection, and MAY be - sent at any other time by either endpoint over the lifetime of the connection. - Implementations MUST support all of the parameters defined by this specification. - </t> - - <t> - Each parameter in a SETTINGS frame replaces any existing value for that parameter. - Parameters are processed in the order in which they appear, and a receiver of a SETTINGS - frame does not need to maintain any state other than the current value of its - parameters. Therefore, the value of a SETTINGS parameter is the last value that is seen by - a receiver. - </t> - <t> - SETTINGS parameters are acknowledged by the receiving peer. To enable this, the SETTINGS - frame defines the following flag: - <list style="hanging"> - <t hangText="ACK (0x1):"> - Bit 1 being set indicates that this frame acknowledges receipt and application of the - peer's SETTINGS frame. When this bit is set, the payload of the SETTINGS frame MUST - be empty. Receipt of a SETTINGS frame with the ACK flag set and a length field value - other than 0 MUST be treated as a <xref target="ConnectionErrorHandler">connection - error</xref> of type <x:ref>FRAME_SIZE_ERROR</x:ref>. For more info, see <xref - target="SettingsSync">Settings Synchronization</xref>. - </t> - </list> - </t> - <t> - SETTINGS frames always apply to a connection, never a single stream. The stream - identifier for a SETTINGS frame MUST be zero (0x0). If an endpoint receives a SETTINGS - frame whose stream identifier field is anything other than 0x0, the endpoint MUST respond - with a <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - The SETTINGS frame affects connection state. A badly formed or incomplete SETTINGS frame - MUST be treated as a <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - - <section title="SETTINGS Format" anchor="SettingFormat"> - <t> - The payload of a SETTINGS frame consists of zero or more parameters, each consisting of - an unsigned 16-bit setting identifier and an unsigned 32-bit value. - </t> - - <figure title="Setting Format"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Identifier (16) | - +-------------------------------+-------------------------------+ - | Value (32) | - +---------------------------------------------------------------+ -]]></artwork> - </figure> - </section> - - <section anchor="SettingValues" title="Defined SETTINGS Parameters"> - <t> - The following parameters are defined: - <list style="hanging"> - <x:lt hangText="SETTINGS_HEADER_TABLE_SIZE (0x1):" - anchor="SETTINGS_HEADER_TABLE_SIZE"> - <t> - Allows the sender to inform the remote endpoint of the maximum size of the header - compression table used to decode header blocks, in octets. The encoder can select - any size equal to or less than this value by using signaling specific to the - header compression format inside a header block. The initial value is 4,096 - octets. - </t> - </x:lt> - <x:lt hangText="SETTINGS_ENABLE_PUSH (0x2):" - anchor="SETTINGS_ENABLE_PUSH"> - <t> - This setting can be use to disable <xref target="PushResources">server - push</xref>. An endpoint MUST NOT send a <x:ref>PUSH_PROMISE</x:ref> frame if it - receives this parameter set to a value of 0. An endpoint that has both set this - parameter to 0 and had it acknowledged MUST treat the receipt of a - <x:ref>PUSH_PROMISE</x:ref> frame as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - The initial value is 1, which indicates that server push is permitted. Any value - other than 0 or 1 MUST be treated as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </x:lt> - <x:lt hangText="SETTINGS_MAX_CONCURRENT_STREAMS (0x3):" - anchor="SETTINGS_MAX_CONCURRENT_STREAMS"> - <t> - Indicates the maximum number of concurrent streams that the sender will allow. - This limit is directional: it applies to the number of streams that the sender - permits the receiver to create. Initially there is no limit to this value. It is - recommended that this value be no smaller than 100, so as to not unnecessarily - limit parallelism. - </t> - <t> - A value of 0 for SETTINGS_MAX_CONCURRENT_STREAMS SHOULD NOT be treated as special - by endpoints. A zero value does prevent the creation of new streams, however this - can also happen for any limit that is exhausted with active streams. Servers - SHOULD only set a zero value for short durations; if a server does not wish to - accept requests, closing the connection could be preferable. - </t> - </x:lt> - <x:lt hangText="SETTINGS_INITIAL_WINDOW_SIZE (0x4):" - anchor="SETTINGS_INITIAL_WINDOW_SIZE"> - <t> - Indicates the sender's initial window size (in octets) for stream level flow - control. The initial value is 2<x:sup>16</x:sup>-1 (65,535) octets. - </t> - <t> - This setting affects the window size of all streams, including existing streams, - see <xref target="InitialWindowSize"/>. - </t> - <t> - Values above the maximum flow control window size of 2<x:sup>31</x:sup>-1 MUST - be treated as a <xref target="ConnectionErrorHandler">connection error</xref> of - type <x:ref>FLOW_CONTROL_ERROR</x:ref>. - </t> - </x:lt> - <x:lt hangText="SETTINGS_MAX_FRAME_SIZE (0x5):" - anchor="SETTINGS_MAX_FRAME_SIZE"> - <t> - Indicates the size of the largest frame payload that the sender is willing to - receive, in octets. - </t> - <t> - The initial value is 2<x:sup>14</x:sup> (16,384) octets. The value advertised by - an endpoint MUST be between this initial value and the maximum allowed frame size - (2<x:sup>24</x:sup>-1 or 16,777,215 octets), inclusive. Values outside this range - MUST be treated as a <xref target="ConnectionErrorHandler">connection error</xref> - of type <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </x:lt> - <x:lt hangText="SETTINGS_MAX_HEADER_LIST_SIZE (0x6):" - anchor="SETTINGS_MAX_HEADER_LIST_SIZE"> - <t> - This advisory setting informs a peer of the maximum size of header list that the - sender is prepared to accept, in octets. The value is based on the uncompressed - size of header fields, including the length of the name and value in octets plus - an overhead of 32 octets for each header field. - </t> - <t> - For any given request, a lower limit than what is advertised MAY be enforced. The - initial value of this setting is unlimited. - </t> - </x:lt> - </list> - </t> - <t> - An endpoint that receives a SETTINGS frame with any unknown or unsupported identifier - MUST ignore that setting. - </t> - </section> - - <section anchor="SettingsSync" title="Settings Synchronization"> - <t> - Most values in SETTINGS benefit from or require an understanding of when the peer has - received and applied the changed parameter values. In order to provide - such synchronization timepoints, the recipient of a SETTINGS frame in which the ACK flag - is not set MUST apply the updated parameters as soon as possible upon receipt. - </t> - <t> - The values in the SETTINGS frame MUST be processed in the order they appear, with no - other frame processing between values. Unsupported parameters MUST be ignored. Once - all values have been processed, the recipient MUST immediately emit a SETTINGS frame - with the ACK flag set. Upon receiving a SETTINGS frame with the ACK flag set, the sender - of the altered parameters can rely on the setting having been applied. - </t> - <t> - If the sender of a SETTINGS frame does not receive an acknowledgement within a - reasonable amount of time, it MAY issue a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>SETTINGS_TIMEOUT</x:ref>. - </t> - </section> - </section> - - <section anchor="PUSH_PROMISE" title="PUSH_PROMISE"> - <t> - The PUSH_PROMISE frame (type=0x5) is used to notify the peer endpoint in advance of - streams the sender intends to initiate. The PUSH_PROMISE frame includes the unsigned - 31-bit identifier of the stream the endpoint plans to create along with a set of headers - that provide additional context for the stream. <xref target="PushResources"/> contains a - thorough description of the use of PUSH_PROMISE frames. - </t> - - <figure title="PUSH_PROMISE Payload Format"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |Pad Length? (8)| - +-+-------------+-----------------------------------------------+ - |R| Promised Stream ID (31) | - +-+-----------------------------+-------------------------------+ - | Header Block Fragment (*) ... - +---------------------------------------------------------------+ - | Padding (*) ... - +---------------------------------------------------------------+ -]]></artwork> - </figure> - <t> - The PUSH_PROMISE frame payload has the following fields: - <list style="hanging"> - <t hangText="Pad Length:"> - An 8-bit field containing the length of the frame padding in units of octets. This - field is only present if the PADDED flag is set. - </t> - <t hangText="R:"> - A single reserved bit. - </t> - <t hangText="Promised Stream ID:"> - An unsigned 31-bit integer that identifies the stream that is reserved by the - PUSH_PROMISE. The promised stream identifier MUST be a valid choice for the next - stream sent by the sender (see <xref target="StreamIdentifiers">new stream - identifier</xref>). - </t> - <t hangText="Header Block Fragment:"> - A <xref target="HeaderBlock">header block fragment</xref> containing request header - fields. - </t> - <t hangText="Padding:"> - Padding octets. - </t> - </list> - </t> - - <t> - The PUSH_PROMISE frame defines the following flags: - <list style="hanging"> - <x:lt hangText="END_HEADERS (0x4):"> - <t> - Bit 3 being set indicates that this frame contains an entire <xref - target="HeaderBlock">header block</xref> and is not followed by any - <x:ref>CONTINUATION</x:ref> frames. - </t> - <t> - A PUSH_PROMISE frame without the END_HEADERS flag set MUST be followed by a - CONTINUATION frame for the same stream. A receiver MUST treat the receipt of any - other type of frame or a frame on a different stream as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </x:lt> - <x:lt hangText="PADDED (0x8):"> - <t> - Bit 4 being set indicates that the Pad Length field and any padding that it - describes is present. - </t> - </x:lt> - </list> - </t> - - <t> - PUSH_PROMISE frames MUST be associated with an existing, peer-initiated stream. The stream - identifier of a PUSH_PROMISE frame indicates the stream it is associated with. If the - stream identifier field specifies the value 0x0, a recipient MUST respond with a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - - <t> - Promised streams are not required to be used in the order they are promised. The - PUSH_PROMISE only reserves stream identifiers for later use. - </t> - - <t> - PUSH_PROMISE MUST NOT be sent if the <x:ref>SETTINGS_ENABLE_PUSH</x:ref> setting of the - peer endpoint is set to 0. An endpoint that has set this setting and has received - acknowledgement MUST treat the receipt of a PUSH_PROMISE frame as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - Recipients of PUSH_PROMISE frames can choose to reject promised streams by returning a - <x:ref>RST_STREAM</x:ref> referencing the promised stream identifier back to the sender of - the PUSH_PROMISE. - </t> - - <t> - A PUSH_PROMISE frame modifies the connection state in two ways. The inclusion of a <xref - target="HeaderBlock">header block</xref> potentially modifies the state maintained for - header compression. PUSH_PROMISE also reserves a stream for later use, causing the - promised stream to enter the "reserved" state. A sender MUST NOT send a PUSH_PROMISE on a - stream unless that stream is either "open" or "half closed (remote)"; the sender MUST - ensure that the promised stream is a valid choice for a <xref - target="StreamIdentifiers">new stream identifier</xref> (that is, the promised stream MUST - be in the "idle" state). - </t> - <t> - Since PUSH_PROMISE reserves a stream, ignoring a PUSH_PROMISE frame causes the stream - state to become indeterminate. A receiver MUST treat the receipt of a PUSH_PROMISE on a - stream that is neither "open" nor "half closed (local)" as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. However, an endpoint that has sent - <x:ref>RST_STREAM</x:ref> on the associated stream MUST handle PUSH_PROMISE frames that - might have been created before the <x:ref>RST_STREAM</x:ref> frame is received and - processed. - </t> - <t> - A receiver MUST treat the receipt of a PUSH_PROMISE that promises an <xref - target="StreamIdentifiers">illegal stream identifier</xref> (that is, an identifier for a - stream that is not currently in the "idle" state) as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - - <t> - The PUSH_PROMISE frame includes optional padding. Padding fields and flags are identical - to those defined for <xref target="DATA">DATA frames</xref>. - </t> - </section> - - <section anchor="PING" title="PING"> - <t> - The PING frame (type=0x6) is a mechanism for measuring a minimal round trip time from the - sender, as well as determining whether an idle connection is still functional. PING - frames can be sent from any endpoint. - </t> - <figure title="PING Payload Format"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - | Opaque Data (64) | - | | - +---------------------------------------------------------------+ -]]></artwork> - </figure> - - <t> - In addition to the frame header, PING frames MUST contain 8 octets of data in the payload. - A sender can include any value it chooses and use those bytes in any fashion. - </t> - <t> - Receivers of a PING frame that does not include an ACK flag MUST send a PING frame with - the ACK flag set in response, with an identical payload. PING responses SHOULD be given - higher priority than any other frame. - </t> - - <t> - The PING frame defines the following flags: - <list style="hanging"> - <t hangText="ACK (0x1):"> - Bit 1 being set indicates that this PING frame is a PING response. An endpoint MUST - set this flag in PING responses. An endpoint MUST NOT respond to PING frames - containing this flag. - </t> - </list> - </t> - <t> - PING frames are not associated with any individual stream. If a PING frame is received - with a stream identifier field value other than 0x0, the recipient MUST respond with a - <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - Receipt of a PING frame with a length field value other than 8 MUST be treated as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>FRAME_SIZE_ERROR</x:ref>. - </t> - - </section> - - <section anchor="GOAWAY" title="GOAWAY"> - <t> - The GOAWAY frame (type=0x7) informs the remote peer to stop creating streams on this - connection. GOAWAY can be sent by either the client or the server. Once sent, the sender - will ignore frames sent on any new streams with identifiers higher than the included last - stream identifier. Receivers of a GOAWAY frame MUST NOT open additional streams on the - connection, although a new connection can be established for new streams. - </t> - <t> - The purpose of this frame is to allow an endpoint to gracefully stop accepting new - streams, while still finishing processing of previously established streams. This enables - administrative actions, like server maintainance. - </t> - <t> - There is an inherent race condition between an endpoint starting new streams and the - remote sending a GOAWAY frame. To deal with this case, the GOAWAY contains the stream - identifier of the last peer-initiated stream which was or might be processed on the - sending endpoint in this connection. For instance, if the server sends a GOAWAY frame, - the identified stream is the highest numbered stream initiated by the client. - </t> - <t> - If the receiver of the GOAWAY has sent data on streams with a higher stream identifier - than what is indicated in the GOAWAY frame, those streams are not or will not be - processed. The receiver of the GOAWAY frame can treat the streams as though they had - never been created at all, thereby allowing those streams to be retried later on a new - connection. - </t> - <t> - Endpoints SHOULD always send a GOAWAY frame before closing a connection so that the remote - can know whether a stream has been partially processed or not. For example, if an HTTP - client sends a POST at the same time that a server closes a connection, the client cannot - know if the server started to process that POST request if the server does not send a - GOAWAY frame to indicate what streams it might have acted on. - </t> - <t> - An endpoint might choose to close a connection without sending GOAWAY for misbehaving - peers. - </t> - - <figure title="GOAWAY Payload Format"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |R| Last-Stream-ID (31) | - +-+-------------------------------------------------------------+ - | Error Code (32) | - +---------------------------------------------------------------+ - | Additional Debug Data (*) | - +---------------------------------------------------------------+ -]]></artwork> - </figure> - <t> - The GOAWAY frame does not define any flags. - </t> - <t> - The GOAWAY frame applies to the connection, not a specific stream. An endpoint MUST treat - a <x:ref>GOAWAY</x:ref> frame with a stream identifier other than 0x0 as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - The last stream identifier in the GOAWAY frame contains the highest numbered stream - identifier for which the sender of the GOAWAY frame might have taken some action on, or - might yet take action on. All streams up to and including the identified stream might - have been processed in some way. The last stream identifier can be set to 0 if no streams - were processed. - <list style="hanging"> - <t hangText="Note:"> - In this context, "processed" means that some data from the stream was passed to some - higher layer of software that might have taken some action as a result. - </t> - </list> - If a connection terminates without a GOAWAY frame, the last stream identifier is - effectively the highest possible stream identifier. - </t> - <t> - On streams with lower or equal numbered identifiers that were not closed completely prior - to the connection being closed, re-attempting requests, transactions, or any protocol - activity is not possible, with the exception of idempotent actions like HTTP GET, PUT, or - DELETE. Any protocol activity that uses higher numbered streams can be safely retried - using a new connection. - </t> - <t> - Activity on streams numbered lower or equal to the last stream identifier might still - complete successfully. The sender of a GOAWAY frame might gracefully shut down a - connection by sending a GOAWAY frame, maintaining the connection in an open state until - all in-progress streams complete. - </t> - <t> - An endpoint MAY send multiple GOAWAY frames if circumstances change. For instance, an - endpoint that sends GOAWAY with <x:ref>NO_ERROR</x:ref> during graceful shutdown could - subsequently encounter an condition that requires immediate termination of the connection. - The last stream identifier from the last GOAWAY frame received indicates which streams - could have been acted upon. Endpoints MUST NOT increase the value they send in the last - stream identifier, since the peers might already have retried unprocessed requests on - another connection. - </t> - <t> - A client that is unable to retry requests loses all requests that are in flight when the - server closes the connection. This is especially true for intermediaries that might - not be serving clients using HTTP/2. A server that is attempting to gracefully shut down - a connection SHOULD send an initial GOAWAY frame with the last stream identifier set to - 2<x:sup>31</x:sup>-1 and a <x:ref>NO_ERROR</x:ref> code. This signals to the client that - a shutdown is imminent and that no further requests can be initiated. After waiting at - least one round trip time, the server can send another GOAWAY frame with an updated last - stream identifier. This ensures that a connection can be cleanly shut down without losing - requests. - </t> - - <t> - After sending a GOAWAY frame, the sender can discard frames for streams with identifiers - higher than the identified last stream. However, any frames that alter connection state - cannot be completely ignored. For instance, <x:ref>HEADERS</x:ref>, - <x:ref>PUSH_PROMISE</x:ref> and <x:ref>CONTINUATION</x:ref> frames MUST be minimally - processed to ensure the state maintained for header compression is consistent (see <xref - target="HeaderBlock"/>); similarly DATA frames MUST be counted toward the connection flow - control window. Failure to process these frames can cause flow control or header - compression state to become unsynchronized. - </t> - - <t> - The GOAWAY frame also contains a 32-bit <xref target="ErrorCodes">error code</xref> that - contains the reason for closing the connection. - </t> - <t> - Endpoints MAY append opaque data to the payload of any GOAWAY frame. Additional debug - data is intended for diagnostic purposes only and carries no semantic value. Debug - information could contain security- or privacy-sensitive data. Logged or otherwise - persistently stored debug data MUST have adequate safeguards to prevent unauthorized - access. - </t> - </section> - - <section anchor="WINDOW_UPDATE" title="WINDOW_UPDATE"> - <t> - The WINDOW_UPDATE frame (type=0x8) is used to implement flow control; see <xref - target="FlowControl"/> for an overview. - </t> - <t> - Flow control operates at two levels: on each individual stream and on the entire - connection. - </t> - <t> - Both types of flow control are hop-by-hop; that is, only between the two endpoints. - Intermediaries do not forward WINDOW_UPDATE frames between dependent connections. - However, throttling of data transfer by any receiver can indirectly cause the propagation - of flow control information toward the original sender. - </t> - <t> - Flow control only applies to frames that are identified as being subject to flow control. - Of the frame types defined in this document, this includes only <x:ref>DATA</x:ref> frames. - Frames that are exempt from flow control MUST be accepted and processed, unless the - receiver is unable to assign resources to handling the frame. A receiver MAY respond with - a <xref target="StreamErrorHandler">stream error</xref> or <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>FLOW_CONTROL_ERROR</x:ref> if it is unable to accept a frame. - </t> - <figure title="WINDOW_UPDATE Payload Format"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |R| Window Size Increment (31) | - +-+-------------------------------------------------------------+ -]]></artwork> - </figure> - <t> - The payload of a WINDOW_UPDATE frame is one reserved bit, plus an unsigned 31-bit integer - indicating the number of octets that the sender can transmit in addition to the existing - flow control window. The legal range for the increment to the flow control window is 1 to - 2<x:sup>31</x:sup>-1 (0x7fffffff) octets. - </t> - <t> - The WINDOW_UPDATE frame does not define any flags. - </t> - <t> - The WINDOW_UPDATE frame can be specific to a stream or to the entire connection. In the - former case, the frame's stream identifier indicates the affected stream; in the latter, - the value "0" indicates that the entire connection is the subject of the frame. - </t> - <t> - A receiver MUST treat the receipt of a WINDOW_UPDATE frame with an flow control window - increment of 0 as a <xref target="StreamErrorHandler">stream error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>; errors on the connection flow control window MUST be - treated as a <xref target="ConnectionErrorHandler">connection error</xref>. - </t> - <t> - WINDOW_UPDATE can be sent by a peer that has sent a frame bearing the END_STREAM flag. - This means that a receiver could receive a WINDOW_UPDATE frame on a "half closed (remote)" - or "closed" stream. A receiver MUST NOT treat this as an error, see <xref - target="StreamStates"/>. - </t> - <t> - A receiver that receives a flow controlled frame MUST always account for its contribution - against the connection flow control window, unless the receiver treats this as a <xref - target="ConnectionErrorHandler">connection error</xref>. This is necessary even if the - frame is in error. Since the sender counts the frame toward the flow control window, if - the receiver does not, the flow control window at sender and receiver can become - different. - </t> - - <section title="The Flow Control Window"> - <t> - Flow control in HTTP/2 is implemented using a window kept by each sender on every - stream. The flow control window is a simple integer value that indicates how many octets - of data the sender is permitted to transmit; as such, its size is a measure of the - buffering capacity of the receiver. - </t> - <t> - Two flow control windows are applicable: the stream flow control window and the - connection flow control window. The sender MUST NOT send a flow controlled frame with a - length that exceeds the space available in either of the flow control windows advertised - by the receiver. Frames with zero length with the END_STREAM flag set (that is, an - empty <x:ref>DATA</x:ref> frame) MAY be sent if there is no available space in either - flow control window. - </t> - <t> - For flow control calculations, the 9 octet frame header is not counted. - </t> - <t> - After sending a flow controlled frame, the sender reduces the space available in both - windows by the length of the transmitted frame. - </t> - <t> - The receiver of a frame sends a WINDOW_UPDATE frame as it consumes data and frees up - space in flow control windows. Separate WINDOW_UPDATE frames are sent for the stream - and connection level flow control windows. - </t> - <t> - A sender that receives a WINDOW_UPDATE frame updates the corresponding window by the - amount specified in the frame. - </t> - <t> - A sender MUST NOT allow a flow control window to exceed 2<x:sup>31</x:sup>-1 octets. - If a sender receives a WINDOW_UPDATE that causes a flow control window to exceed this - maximum it MUST terminate either the stream or the connection, as appropriate. For - streams, the sender sends a <x:ref>RST_STREAM</x:ref> with the error code of - <x:ref>FLOW_CONTROL_ERROR</x:ref> code; for the connection, a <x:ref>GOAWAY</x:ref> - frame with a <x:ref>FLOW_CONTROL_ERROR</x:ref> code. - </t> - <t> - Flow controlled frames from the sender and WINDOW_UPDATE frames from the receiver are - completely asynchronous with respect to each other. This property allows a receiver to - aggressively update the window size kept by the sender to prevent streams from stalling. - </t> - </section> - - <section anchor="InitialWindowSize" title="Initial Flow Control Window Size"> - <t> - When an HTTP/2 connection is first established, new streams are created with an initial - flow control window size of 65,535 octets. The connection flow control window is 65,535 - octets. Both endpoints can adjust the initial window size for new streams by including - a value for <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref> in the <x:ref>SETTINGS</x:ref> - frame that forms part of the connection preface. The connection flow control window can - only be changed using WINDOW_UPDATE frames. - </t> - <t> - Prior to receiving a <x:ref>SETTINGS</x:ref> frame that sets a value for - <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref>, an endpoint can only use the default - initial window size when sending flow controlled frames. Similarly, the connection flow - control window is set to the default initial window size until a WINDOW_UPDATE frame is - received. - </t> - <t> - A <x:ref>SETTINGS</x:ref> frame can alter the initial flow control window size for all - current streams. When the value of <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref> changes, - a receiver MUST adjust the size of all stream flow control windows that it maintains by - the difference between the new value and the old value. - </t> - <t> - A change to <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref> can cause the available space in - a flow control window to become negative. A sender MUST track the negative flow control - window, and MUST NOT send new flow controlled frames until it receives WINDOW_UPDATE - frames that cause the flow control window to become positive. - </t> - <t> - For example, if the client sends 60KB immediately on connection establishment, and the - server sets the initial window size to be 16KB, the client will recalculate the - available flow control window to be -44KB on receipt of the <x:ref>SETTINGS</x:ref> - frame. The client retains a negative flow control window until WINDOW_UPDATE frames - restore the window to being positive, after which the client can resume sending. - </t> - <t> - A <x:ref>SETTINGS</x:ref> frame cannot alter the connection flow control window. - </t> - <t> - An endpoint MUST treat a change to <x:ref>SETTINGS_INITIAL_WINDOW_SIZE</x:ref> that - causes any flow control window to exceed the maximum size as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>FLOW_CONTROL_ERROR</x:ref>. - </t> - </section> - - <section title="Reducing the Stream Window Size"> - <t> - A receiver that wishes to use a smaller flow control window than the current size can - send a new <x:ref>SETTINGS</x:ref> frame. However, the receiver MUST be prepared to - receive data that exceeds this window size, since the sender might send data that - exceeds the lower limit prior to processing the <x:ref>SETTINGS</x:ref> frame. - </t> - <t> - After sending a SETTINGS frame that reduces the initial flow control window size, a - receiver has two options for handling streams that exceed flow control limits: - <list style="numbers"> - <t> - The receiver can immediately send <x:ref>RST_STREAM</x:ref> with - <x:ref>FLOW_CONTROL_ERROR</x:ref> error code for the affected streams. - </t> - <t> - The receiver can accept the streams and tolerate the resulting head of line - blocking, sending WINDOW_UPDATE frames as it consumes data. - </t> - </list> - </t> - </section> - </section> - - <section anchor="CONTINUATION" title="CONTINUATION"> - <t> - The CONTINUATION frame (type=0x9) is used to continue a sequence of <xref - target="HeaderBlock">header block fragments</xref>. Any number of CONTINUATION frames can - be sent on an existing stream, as long as the preceding frame is on the same stream and is - a <x:ref>HEADERS</x:ref>, <x:ref>PUSH_PROMISE</x:ref> or CONTINUATION frame without the - END_HEADERS flag set. - </t> - - <figure title="CONTINUATION Frame Payload"> - <artwork type="inline"><![CDATA[ - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Header Block Fragment (*) ... - +---------------------------------------------------------------+ -]]></artwork> - </figure> - <t> - The CONTINUATION frame payload contains a <xref target="HeaderBlock">header block - fragment</xref>. - </t> - - <t> - The CONTINUATION frame defines the following flag: - <list style="hanging"> - <x:lt hangText="END_HEADERS (0x4):"> - <t> - Bit 3 being set indicates that this frame ends a <xref target="HeaderBlock">header - block</xref>. - </t> - <t> - If the END_HEADERS bit is not set, this frame MUST be followed by another - CONTINUATION frame. A receiver MUST treat the receipt of any other type of frame or - a frame on a different stream as a <xref target="ConnectionErrorHandler">connection - error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </x:lt> - </list> - </t> - - <t> - The CONTINUATION frame changes the connection state as defined in <xref - target="HeaderBlock" />. - </t> - - <t> - CONTINUATION frames MUST be associated with a stream. If a CONTINUATION frame is received - whose stream identifier field is 0x0, the recipient MUST respond with a <xref - target="ConnectionErrorHandler">connection error</xref> of type PROTOCOL_ERROR. - </t> - - <t> - A CONTINUATION frame MUST be preceded by a <x:ref>HEADERS</x:ref>, - <x:ref>PUSH_PROMISE</x:ref> or CONTINUATION frame without the END_HEADERS flag set. A - recipient that observes violation of this rule MUST respond with a <xref - target="ConnectionErrorHandler"> connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - </section> - </section> - - <section anchor="ErrorCodes" title="Error Codes"> - <t> - Error codes are 32-bit fields that are used in <x:ref>RST_STREAM</x:ref> and - <x:ref>GOAWAY</x:ref> frames to convey the reasons for the stream or connection error. - </t> - - <t> - Error codes share a common code space. Some error codes apply only to either streams or the - entire connection and have no defined semantics in the other context. - </t> - - <t> - The following error codes are defined: - <list style="hanging"> - <t hangText="NO_ERROR (0x0):" anchor="NO_ERROR"> - The associated condition is not as a result of an error. For example, a - <x:ref>GOAWAY</x:ref> might include this code to indicate graceful shutdown of a - connection. - </t> - <t hangText="PROTOCOL_ERROR (0x1):" anchor="PROTOCOL_ERROR"> - The endpoint detected an unspecific protocol error. This error is for use when a more - specific error code is not available. - </t> - <t hangText="INTERNAL_ERROR (0x2):" anchor="INTERNAL_ERROR"> - The endpoint encountered an unexpected internal error. - </t> - <t hangText="FLOW_CONTROL_ERROR (0x3):" anchor="FLOW_CONTROL_ERROR"> - The endpoint detected that its peer violated the flow control protocol. - </t> - <t hangText="SETTINGS_TIMEOUT (0x4):" anchor="SETTINGS_TIMEOUT"> - The endpoint sent a <x:ref>SETTINGS</x:ref> frame, but did not receive a response in a - timely manner. See <xref target="SettingsSync">Settings Synchronization</xref>. - </t> - <t hangText="STREAM_CLOSED (0x5):" anchor="STREAM_CLOSED"> - The endpoint received a frame after a stream was half closed. - </t> - <t hangText="FRAME_SIZE_ERROR (0x6):" anchor="FRAME_SIZE_ERROR"> - The endpoint received a frame with an invalid size. - </t> - <t hangText="REFUSED_STREAM (0x7):" anchor="REFUSED_STREAM"> - The endpoint refuses the stream prior to performing any application processing, see - <xref target="Reliability"/> for details. - </t> - <t hangText="CANCEL (0x8):" anchor="CANCEL"> - Used by the endpoint to indicate that the stream is no longer needed. - </t> - <t hangText="COMPRESSION_ERROR (0x9):" anchor="COMPRESSION_ERROR"> - The endpoint is unable to maintain the header compression context for the connection. - </t> - <t hangText="CONNECT_ERROR (0xa):" anchor="CONNECT_ERROR"> - The connection established in response to a <xref target="CONNECT">CONNECT - request</xref> was reset or abnormally closed. - </t> - <t hangText="ENHANCE_YOUR_CALM (0xb):" anchor="ENHANCE_YOUR_CALM"> - The endpoint detected that its peer is exhibiting a behavior that might be generating - excessive load. - </t> - <t hangText="INADEQUATE_SECURITY (0xc):" anchor="INADEQUATE_SECURITY"> - The underlying transport has properties that do not meet minimum security - requirements (see <xref target="TLSUsage"/>). - </t> - </list> - </t> - <t> - Unknown or unsupported error codes MUST NOT trigger any special behavior. These MAY be - treated by an implementation as being equivalent to <x:ref>INTERNAL_ERROR</x:ref>. - </t> - </section> - - <section anchor="HTTPLayer" title="HTTP Message Exchanges"> - <t> - HTTP/2 is intended to be as compatible as possible with current uses of HTTP. This means - that, from the application perspective, the features of the protocol are largely - unchanged. To achieve this, all request and response semantics are preserved, although the - syntax of conveying those semantics has changed. - </t> - <t> - Thus, the specification and requirements of HTTP/1.1 Semantics and Content <xref - target="RFC7231"/>, Conditional Requests <xref target="RFC7232"/>, Range Requests <xref - target="RFC7233"/>, Caching <xref target="RFC7234"/> and Authentication <xref - target="RFC7235"/> are applicable to HTTP/2. Selected portions of HTTP/1.1 Message Syntax - and Routing <xref target="RFC7230"/>, such as the HTTP and HTTPS URI schemes, are also - applicable in HTTP/2, but the expression of those semantics for this protocol are defined - in the sections below. - </t> - - <section anchor="HttpSequence" title="HTTP Request/Response Exchange"> - <t> - A client sends an HTTP request on a new stream, using a previously unused <xref - target="StreamIdentifiers">stream identifier</xref>. A server sends an HTTP response on - the same stream as the request. - </t> - <t> - An HTTP message (request or response) consists of: - <list style="numbers"> - <t> - for a response only, zero or more <x:ref>HEADERS</x:ref> frames (each followed by zero - or more <x:ref>CONTINUATION</x:ref> frames) containing the message headers of - informational (1xx) HTTP responses (see <xref target="RFC7230" x:fmt="," - x:rel="#header.fields"/> and <xref target="RFC7231" x:fmt="," x:rel="#status.1xx"/>), - and - </t> - <t> - one <x:ref>HEADERS</x:ref> frame (followed by zero or more <x:ref>CONTINUATION</x:ref> - frames) containing the message headers (see <xref target="RFC7230" x:fmt="," - x:rel="#header.fields"/>), and - </t> - <t> - zero or more <x:ref>DATA</x:ref> frames containing the message payload (see <xref - target="RFC7230" x:fmt="," x:rel="#message.body"/>), and - </t> - <t> - optionally, one <x:ref>HEADERS</x:ref> frame, followed by zero or more - <x:ref>CONTINUATION</x:ref> frames containing the trailer-part, if present (see <xref - target="RFC7230" x:fmt="," x:rel="#chunked.trailer.part"/>). - </t> - </list> - The last frame in the sequence bears an END_STREAM flag, noting that a - <x:ref>HEADERS</x:ref> frame bearing the END_STREAM flag can be followed by - <x:ref>CONTINUATION</x:ref> frames that carry any remaining portions of the header block. - </t> - <t> - Other frames (from any stream) MUST NOT occur between either <x:ref>HEADERS</x:ref> frame - and any <x:ref>CONTINUATION</x:ref> frames that might follow. - </t> - - <t> - Trailing header fields are carried in a header block that also terminates the stream. - That is, a sequence starting with a <x:ref>HEADERS</x:ref> frame, followed by zero or more - <x:ref>CONTINUATION</x:ref> frames, where the <x:ref>HEADERS</x:ref> frame bears an - END_STREAM flag. Header blocks after the first that do not terminate the stream are not - part of an HTTP request or response. - </t> - <t> - A <x:ref>HEADERS</x:ref> frame (and associated <x:ref>CONTINUATION</x:ref> frames) can - only appear at the start or end of a stream. An endpoint that receives a - <x:ref>HEADERS</x:ref> frame without the END_STREAM flag set after receiving a final - (non-informational) status code MUST treat the corresponding request or response as <xref - target="malformed">malformed</xref>. - </t> - - <t> - An HTTP request/response exchange fully consumes a single stream. A request starts with - the <x:ref>HEADERS</x:ref> frame that puts the stream into an "open" state. The request - ends with a frame bearing END_STREAM, which causes the stream to become "half closed - (local)" for the client and "half closed (remote)" for the server. A response starts with - a <x:ref>HEADERS</x:ref> frame and ends with a frame bearing END_STREAM, which places the - stream in the "closed" state. - <!-- Yes, the response might be completed before the request does, but that's not a detail - we need to expand upon. It's complicated enough explaining this as it is. --> - </t> - - <section anchor="informational-responses" title="Upgrading From HTTP/2"> - <t> - HTTP/2 removes support for the 101 (Switching Protocols) informational status code - (<xref target="RFC7231" x:fmt="," x:rel="#status.101"/>). - </t> - <t> - The semantics of 101 (Switching Protocols) aren't applicable to a multiplexed protocol. - Alternative protocols are able to use the same mechanisms that HTTP/2 uses to negotiate - their use (see <xref target="starting"/>). - </t> - </section> - - <section anchor="HttpHeaders" title="HTTP Header Fields"> - <t> - HTTP header fields carry information as a series of key-value pairs. For a listing of - registered HTTP headers, see the Message Header Field Registry maintained at <eref - target="https://www.iana.org/assignments/message-headers"/>. - </t> - - <section anchor="PseudoHeaderFields" title="Pseudo-Header Fields"> - <t> - While HTTP/1.x used the message start-line (see <xref target="RFC7230" x:fmt="," - x:rel="#start.line"/>) to convey the target URI and method of the request, and the - status code for the response, HTTP/2 uses special pseudo-header fields beginning with - ':' character (ASCII 0x3a) for this purpose. - </t> - <t> - Pseudo-header fields are not HTTP header fields. Endpoints MUST NOT generate - pseudo-header fields other than those defined in this document. - </t> - <t> - Pseudo-header fields are only valid in the context in which they are defined. - Pseudo-header fields defined for requests MUST NOT appear in responses; pseudo-header - fields defined for responses MUST NOT appear in requests. Pseudo-header fields MUST - NOT appear in trailers. Endpoints MUST treat a request or response that contains - undefined or invalid pseudo-header fields as <xref - target="malformed">malformed</xref>. - </t> - <t> - Just as in HTTP/1.x, header field names are strings of ASCII characters that are - compared in a case-insensitive fashion. However, header field names MUST be converted - to lowercase prior to their encoding in HTTP/2. A request or response containing - uppercase header field names MUST be treated as <xref - target="malformed">malformed</xref>. - </t> - <t> - All pseudo-header fields MUST appear in the header block before regular header fields. - Any request or response that contains a pseudo-header field that appears in a header - block after a regular header field MUST be treated as <xref - target="malformed">malformed</xref>. - </t> - </section> - - <section title="Connection-Specific Header Fields"> - <t> - HTTP/2 does not use the <spanx style="verb">Connection</spanx> header field to - indicate connection-specific header fields; in this protocol, connection-specific - metadata is conveyed by other means. An endpoint MUST NOT generate a HTTP/2 message - containing connection-specific header fields; any message containing - connection-specific header fields MUST be treated as <xref - target="malformed">malformed</xref>. - </t> - <t> - This means that an intermediary transforming an HTTP/1.x message to HTTP/2 will need - to remove any header fields nominated by the Connection header field, along with the - Connection header field itself. Such intermediaries SHOULD also remove other - connection-specific header fields, such as Keep-Alive, Proxy-Connection, - Transfer-Encoding and Upgrade, even if they are not nominated by Connection. - </t> - <t> - One exception to this is the TE header field, which MAY be present in an HTTP/2 - request, but when it is MUST NOT contain any value other than "trailers". - </t> - <t> - <list style="hanging"> - <t hangText="Note:"> - HTTP/2 purposefully does not support upgrade to another protocol. The handshake - methods described in <xref target="starting"/> are believed sufficient to - negotiate the use of alternative protocols. - </t> - </list> - </t> - </section> - - <section anchor="HttpRequest" title="Request Pseudo-Header Fields"> - <t> - The following pseudo-header fields are defined for HTTP/2 requests: - <list style="symbols"> - <x:lt> - <t> - The <spanx style="verb">:method</spanx> pseudo-header field includes the HTTP - method (<xref target="RFC7231" x:fmt="," x:rel="#methods"/>). - </t> - </x:lt> - <x:lt> - <t> - The <spanx style="verb">:scheme</spanx> pseudo-header field includes the scheme - portion of the target URI (<xref target="RFC3986" x:fmt="," x:sec="3.1"/>). - </t> - <t> - <spanx style="verb">:scheme</spanx> is not restricted to <spanx - style="verb">http</spanx> and <spanx style="verb">https</spanx> schemed URIs. A - proxy or gateway can translate requests for non-HTTP schemes, enabling the use - of HTTP to interact with non-HTTP services. - </t> - </x:lt> - <x:lt> - <t> - The <spanx style="verb">:authority</spanx> pseudo-header field includes the - authority portion of the target URI (<xref target="RFC3986" x:fmt="," - x:sec="3.2"/>). The authority MUST NOT include the deprecated <spanx - style="verb">userinfo</spanx> subcomponent for <spanx style="verb">http</spanx> - or <spanx style="verb">https</spanx> schemed URIs. - </t> - <t> - To ensure that the HTTP/1.1 request line can be reproduced accurately, this - pseudo-header field MUST be omitted when translating from an HTTP/1.1 request - that has a request target in origin or asterisk form (see <xref - target="RFC7230" x:fmt="," x:rel="#request-target"/>). Clients that generate - HTTP/2 requests directly SHOULD use the <spanx>:authority</spanx> pseudo-header - field instead of the <spanx style="verb">Host</spanx> header field. An - intermediary that converts an HTTP/2 request to HTTP/1.1 MUST create a <spanx - style="verb">Host</spanx> header field if one is not present in a request by - copying the value of the <spanx style="verb">:authority</spanx> pseudo-header - field. - </t> - </x:lt> - <x:lt> - <t> - The <spanx style="verb">:path</spanx> pseudo-header field includes the path and - query parts of the target URI (the <spanx style="verb">path-absolute</spanx> - production from <xref target="RFC3986"/> and optionally a '?' character - followed by the <spanx style="verb">query</spanx> production, see <xref - target="RFC3986" x:fmt="," x:sec="3.3"/> and <xref target="RFC3986" x:fmt="," - x:sec="3.4"/>). A request in asterisk form includes the value '*' for the - <spanx style="verb">:path</spanx> pseudo-header field. - </t> - <t> - This pseudo-header field MUST NOT be empty for <spanx style="verb">http</spanx> - or <spanx style="verb">https</spanx> URIs; <spanx style="verb">http</spanx> or - <spanx style="verb">https</spanx> URIs that do not contain a path component - MUST include a value of '/'. The exception to this rule is an OPTIONS request - for an <spanx style="verb">http</spanx> or <spanx style="verb">https</spanx> - URI that does not include a path component; these MUST include a <spanx - style="verb">:path</spanx> pseudo-header field with a value of '*' (see <xref - target="RFC7230" x:fmt="," x:rel="#asterisk-form"/>). - </t> - </x:lt> - </list> - </t> - <t> - All HTTP/2 requests MUST include exactly one valid value for the <spanx - style="verb">:method</spanx>, <spanx style="verb">:scheme</spanx>, and <spanx - style="verb">:path</spanx> pseudo-header fields, unless it is a <xref - target="CONNECT">CONNECT request</xref>. An HTTP request that omits mandatory - pseudo-header fields is <xref target="malformed">malformed</xref>. - </t> - <t> - HTTP/2 does not define a way to carry the version identifier that is included in the - HTTP/1.1 request line. - </t> - </section> - - <section anchor="HttpResponse" title="Response Pseudo-Header Fields"> - <t> - For HTTP/2 responses, a single <spanx style="verb">:status</spanx> pseudo-header - field is defined that carries the HTTP status code field (see <xref target="RFC7231" - x:fmt="," x:rel="#status.codes"/>). This pseudo-header field MUST be included in all - responses, otherwise the response is <xref target="malformed">malformed</xref>. - </t> - <t> - HTTP/2 does not define a way to carry the version or reason phrase that is included in - an HTTP/1.1 status line. - </t> - </section> - - <section anchor="CompressCookie" title="Compressing the Cookie Header Field"> - <t> - The <xref target="COOKIE">Cookie header field</xref> can carry a significant amount of - redundant data. - </t> - <t> - The Cookie header field uses a semi-colon (";") to delimit cookie-pairs (or "crumbs"). - This header field doesn't follow the list construction rules in HTTP (see <xref - target="RFC7230" x:fmt="," x:rel="#field.order"/>), which prevents cookie-pairs from - being separated into different name-value pairs. This can significantly reduce - compression efficiency as individual cookie-pairs are updated. - </t> - <t> - To allow for better compression efficiency, the Cookie header field MAY be split into - separate header fields, each with one or more cookie-pairs. If there are multiple - Cookie header fields after decompression, these MUST be concatenated into a single - octet string using the two octet delimiter of 0x3B, 0x20 (the ASCII string "; ") - before being passed into a non-HTTP/2 context, such as an HTTP/1.1 connection, or a - generic HTTP server application. - </t> - <figure> - <preamble> - Therefore, the following two lists of Cookie header fields are semantically - equivalent. - </preamble> - <artwork type="inline"><![CDATA[ - cookie: a=b; c=d; e=f - - cookie: a=b - cookie: c=d - cookie: e=f -]]></artwork> - </figure> - </section> - - <section anchor="malformed" title="Malformed Requests and Responses"> - <t> - A malformed request or response is one that is an otherwise valid sequence of HTTP/2 - frames, but is otherwise invalid due to the presence of extraneous frames, prohibited - header fields, the absence of mandatory header fields, or the inclusion of uppercase - header field names. - </t> - <t> - A request or response that includes an entity body can include a <spanx - style="verb">content-length</spanx> header field. A request or response is also - malformed if the value of a <spanx style="verb">content-length</spanx> header field - does not equal the sum of the <x:ref>DATA</x:ref> frame payload lengths that form the - body. A response that is defined to have no payload, as described in <xref - target="RFC7230" x:fmt="," x:rel="#header.content-length"/>, can have a non-zero - <spanx style="verb">content-length</spanx> header field, even though no content is - included in <x:ref>DATA</x:ref> frames. - </t> - <t> - Intermediaries that process HTTP requests or responses (i.e., any intermediary not - acting as a tunnel) MUST NOT forward a malformed request or response. Malformed - requests or responses that are detected MUST be treated as a <xref - target="StreamErrorHandler">stream error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - For malformed requests, a server MAY send an HTTP response prior to closing or - resetting the stream. Clients MUST NOT accept a malformed response. Note that these - requirements are intended to protect against several types of common attacks against - HTTP; they are deliberately strict, because being permissive can expose - implementations to these vulnerabilities. - </t> - </section> - </section> - - <section title="Examples"> - <t> - This section shows HTTP/1.1 requests and responses, with illustrations of equivalent - HTTP/2 requests and responses. - </t> - <t> - An HTTP GET request includes request header fields and no body and is therefore - transmitted as a single <x:ref>HEADERS</x:ref> frame, followed by zero or more - <x:ref>CONTINUATION</x:ref> frames containing the serialized block of request header - fields. The <x:ref>HEADERS</x:ref> frame in the following has both the END_HEADERS and - END_STREAM flags set; no <x:ref>CONTINUATION</x:ref> frames are sent: - </t> - - <figure> - <artwork type="inline"><![CDATA[ - GET /resource HTTP/1.1 HEADERS - Host: example.org ==> + END_STREAM - Accept: image/jpeg + END_HEADERS - :method = GET - :scheme = https - :path = /resource - host = example.org - accept = image/jpeg -]]></artwork> - </figure> - - <t> - Similarly, a response that includes only response header fields is transmitted as a - <x:ref>HEADERS</x:ref> frame (again, followed by zero or more - <x:ref>CONTINUATION</x:ref> frames) containing the serialized block of response header - fields. - </t> - - <figure> - <artwork type="inline"><![CDATA[ - HTTP/1.1 304 Not Modified HEADERS - ETag: "xyzzy" ==> + END_STREAM - Expires: Thu, 23 Jan ... + END_HEADERS - :status = 304 - etag = "xyzzy" - expires = Thu, 23 Jan ... -]]></artwork> - </figure> - - <t> - An HTTP POST request that includes request header fields and payload data is transmitted - as one <x:ref>HEADERS</x:ref> frame, followed by zero or more - <x:ref>CONTINUATION</x:ref> frames containing the request header fields, followed by one - or more <x:ref>DATA</x:ref> frames, with the last <x:ref>CONTINUATION</x:ref> (or - <x:ref>HEADERS</x:ref>) frame having the END_HEADERS flag set and the final - <x:ref>DATA</x:ref> frame having the END_STREAM flag set: - </t> - - <figure> - <artwork type="inline"><![CDATA[ - POST /resource HTTP/1.1 HEADERS - Host: example.org ==> - END_STREAM - Content-Type: image/jpeg - END_HEADERS - Content-Length: 123 :method = POST - :path = /resource - {binary data} :scheme = https - - CONTINUATION - + END_HEADERS - content-type = image/jpeg - host = example.org - content-length = 123 - - DATA - + END_STREAM - {binary data} -]]></artwork> - <postamble> - Note that data contributing to any given header field could be spread between header - block fragments. The allocation of header fields to frames in this example is - illustrative only. - </postamble> - </figure> - - <t> - A response that includes header fields and payload data is transmitted as a - <x:ref>HEADERS</x:ref> frame, followed by zero or more <x:ref>CONTINUATION</x:ref> - frames, followed by one or more <x:ref>DATA</x:ref> frames, with the last - <x:ref>DATA</x:ref> frame in the sequence having the END_STREAM flag set: - </t> - - <figure> - <artwork type="inline"><![CDATA[ - HTTP/1.1 200 OK HEADERS - Content-Type: image/jpeg ==> - END_STREAM - Content-Length: 123 + END_HEADERS - :status = 200 - {binary data} content-type = image/jpeg - content-length = 123 - - DATA - + END_STREAM - {binary data} -]]></artwork> - </figure> - - <t> - Trailing header fields are sent as a header block after both the request or response - header block and all the <x:ref>DATA</x:ref> frames have been sent. The - <x:ref>HEADERS</x:ref> frame starting the trailers header block has the END_STREAM flag - set. - </t> - - <figure> - <artwork type="inline"><![CDATA[ - HTTP/1.1 200 OK HEADERS - Content-Type: image/jpeg ==> - END_STREAM - Transfer-Encoding: chunked + END_HEADERS - Trailer: Foo :status = 200 - content-length = 123 - 123 content-type = image/jpeg - {binary data} trailer = Foo - 0 - Foo: bar DATA - - END_STREAM - {binary data} - - HEADERS - + END_STREAM - + END_HEADERS - foo = bar -]]></artwork> - </figure> - - - <figure> - <preamble> - An informational response using a 1xx status code other than 101 is transmitted as a - <x:ref>HEADERS</x:ref> frame, followed by zero or more <x:ref>CONTINUATION</x:ref> - frames: - </preamble> - <artwork type="inline"><![CDATA[ - HTTP/1.1 103 BAR HEADERS - Extension-Field: bar ==> - END_STREAM - + END_HEADERS - :status = 103 - extension-field = bar -]]></artwork> - </figure> - </section> - - <section anchor="Reliability" title="Request Reliability Mechanisms in HTTP/2"> - <t> - In HTTP/1.1, an HTTP client is unable to retry a non-idempotent request when an error - occurs, because there is no means to determine the nature of the error. It is possible - that some server processing occurred prior to the error, which could result in - undesirable effects if the request were reattempted. - </t> - <t> - HTTP/2 provides two mechanisms for providing a guarantee to a client that a request has - not been processed: - <list style="symbols"> - <t> - The <x:ref>GOAWAY</x:ref> frame indicates the highest stream number that might have - been processed. Requests on streams with higher numbers are therefore guaranteed to - be safe to retry. - </t> - <t> - The <x:ref>REFUSED_STREAM</x:ref> error code can be included in a - <x:ref>RST_STREAM</x:ref> frame to indicate that the stream is being closed prior to - any processing having occurred. Any request that was sent on the reset stream can - be safely retried. - </t> - </list> - </t> - <t> - Requests that have not been processed have not failed; clients MAY automatically retry - them, even those with non-idempotent methods. - </t> - <t> - A server MUST NOT indicate that a stream has not been processed unless it can guarantee - that fact. If frames that are on a stream are passed to the application layer for any - stream, then <x:ref>REFUSED_STREAM</x:ref> MUST NOT be used for that stream, and a - <x:ref>GOAWAY</x:ref> frame MUST include a stream identifier that is greater than or - equal to the given stream identifier. - </t> - <t> - In addition to these mechanisms, the <x:ref>PING</x:ref> frame provides a way for a - client to easily test a connection. Connections that remain idle can become broken as - some middleboxes (for instance, network address translators, or load balancers) silently - discard connection bindings. The <x:ref>PING</x:ref> frame allows a client to safely - test whether a connection is still active without sending a request. - </t> - </section> - </section> - - <section anchor="PushResources" title="Server Push"> - <t> - HTTP/2 allows a server to pre-emptively send (or "push") responses (along with - corresponding "promised" requests) to a client in association with a previous - client-initiated request. This can be useful when the server knows the client will need - to have those responses available in order to fully process the response to the original - request. - </t> - - <t> - Pushing additional message exchanges in this fashion is optional, and is negotiated - between individual endpoints. The <x:ref>SETTINGS_ENABLE_PUSH</x:ref> setting can be set - to 0 to indicate that server push is disabled. - </t> - <t> - Promised requests MUST be cacheable (see <xref target="RFC7231" x:fmt="," - x:rel="#cacheable.methods"/>), MUST be safe (see <xref target="RFC7231" x:fmt="," - x:rel="#safe.methods"/>) and MUST NOT include a request body. Clients that receive a - promised request that is not cacheable, unsafe or that includes a request body MUST - reset the stream with a <xref target="StreamErrorHandler">stream error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - <t> - Pushed responses that are cacheable (see <xref target="RFC7234" x:fmt="," - x:rel="#response.cacheability"/>) can be stored by the client, if it implements a HTTP - cache. Pushed responses are considered successfully validated on the origin server (e.g., - if the "no-cache" cache response directive <xref target="RFC7234" x:fmt="," - x:rel="#cache-response-directive"/> is present) while the stream identified by the - promised stream ID is still open. - </t> - <t> - Pushed responses that are not cacheable MUST NOT be stored by any HTTP cache. They MAY - be made available to the application separately. - </t> - <t> - An intermediary can receive pushes from the server and choose not to forward them on to - the client. In other words, how to make use of the pushed information is up to that - intermediary. Equally, the intermediary might choose to make additional pushes to the - client, without any action taken by the server. - </t> - <t> - A client cannot push. Thus, servers MUST treat the receipt of a - <x:ref>PUSH_PROMISE</x:ref> frame as a <xref target="ConnectionErrorHandler">connection - error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>. Clients MUST reject any attempt to - change the <x:ref>SETTINGS_ENABLE_PUSH</x:ref> setting to a value other than 0 by treating - the message as a <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - - <section anchor="PushRequests" title="Push Requests"> - <t> - Server push is semantically equivalent to a server responding to a request; however, in - this case that request is also sent by the server, as a <x:ref>PUSH_PROMISE</x:ref> - frame. - </t> - <t> - The <x:ref>PUSH_PROMISE</x:ref> frame includes a header block that contains a complete - set of request header fields that the server attributes to the request. It is not - possible to push a response to a request that includes a request body. - </t> - - <t> - Pushed responses are always associated with an explicit request from the client. The - <x:ref>PUSH_PROMISE</x:ref> frames sent by the server are sent on that explicit - request's stream. The <x:ref>PUSH_PROMISE</x:ref> frame also includes a promised stream - identifier, chosen from the stream identifiers available to the server (see <xref - target="StreamIdentifiers"/>). - </t> - - <t> - The header fields in <x:ref>PUSH_PROMISE</x:ref> and any subsequent - <x:ref>CONTINUATION</x:ref> frames MUST be a valid and complete set of <xref - target="HttpRequest">request header fields</xref>. The server MUST include a method in - the <spanx style="verb">:method</spanx> header field that is safe and cacheable. If a - client receives a <x:ref>PUSH_PROMISE</x:ref> that does not include a complete and valid - set of header fields, or the <spanx style="verb">:method</spanx> header field identifies - a method that is not safe, it MUST respond with a <xref - target="StreamErrorHandler">stream error</xref> of type <x:ref>PROTOCOL_ERROR</x:ref>. - </t> - - <t> - The server SHOULD send <x:ref>PUSH_PROMISE</x:ref> (<xref target="PUSH_PROMISE"/>) - frames prior to sending any frames that reference the promised responses. This avoids a - race where clients issue requests prior to receiving any <x:ref>PUSH_PROMISE</x:ref> - frames. - </t> - <t> - For example, if the server receives a request for a document containing embedded links - to multiple image files, and the server chooses to push those additional images to the - client, sending push promises before the <x:ref>DATA</x:ref> frames that contain the - image links ensures that the client is able to see the promises before discovering - embedded links. Similarly, if the server pushes responses referenced by the header block - (for instance, in Link header fields), sending the push promises before sending the - header block ensures that clients do not request them. - </t> - - <t> - <x:ref>PUSH_PROMISE</x:ref> frames MUST NOT be sent by the client. - </t> - <t> - <x:ref>PUSH_PROMISE</x:ref> frames can be sent by the server in response to any - client-initiated stream, but the stream MUST be in either the "open" or "half closed - (remote)" state with respect to the server. <x:ref>PUSH_PROMISE</x:ref> frames are - interspersed with the frames that comprise a response, though they cannot be - interspersed with <x:ref>HEADERS</x:ref> and <x:ref>CONTINUATION</x:ref> frames that - comprise a single header block. - </t> - <t> - Sending a <x:ref>PUSH_PROMISE</x:ref> frame creates a new stream and puts the stream - into the “reserved (local)” state for the server and the “reserved (remote)” state for - the client. - </t> - </section> - - <section anchor="PushResponses" title="Push Responses"> - <t> - After sending the <x:ref>PUSH_PROMISE</x:ref> frame, the server can begin delivering the - pushed response as a <xref target="HttpResponse">response</xref> on a server-initiated - stream that uses the promised stream identifier. The server uses this stream to - transmit an HTTP response, using the same sequence of frames as defined in <xref - target="HttpSequence"/>. This stream becomes <xref target="StreamStates">"half closed" - to the client</xref> after the initial <x:ref>HEADERS</x:ref> frame is sent. - </t> - - <t> - Once a client receives a <x:ref>PUSH_PROMISE</x:ref> frame and chooses to accept the - pushed response, the client SHOULD NOT issue any requests for the promised response - until after the promised stream has closed. - </t> - - <t> - If the client determines, for any reason, that it does not wish to receive the pushed - response from the server, or if the server takes too long to begin sending the promised - response, the client can send an <x:ref>RST_STREAM</x:ref> frame, using either the - <x:ref>CANCEL</x:ref> or <x:ref>REFUSED_STREAM</x:ref> codes, and referencing the pushed - stream's identifier. - </t> - <t> - A client can use the <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> setting to limit the - number of responses that can be concurrently pushed by a server. Advertising a - <x:ref>SETTINGS_MAX_CONCURRENT_STREAMS</x:ref> value of zero disables server push by - preventing the server from creating the necessary streams. This does not prohibit a - server from sending <x:ref>PUSH_PROMISE</x:ref> frames; clients need to reset any - promised streams that are not wanted. - </t> - - <t> - Clients receiving a pushed response MUST validate that either the server is - authoritative (see <xref target="authority"/>), or the proxy that provided the pushed - response is configured for the corresponding request. For example, a server that offers - a certificate for only the <spanx style="verb">example.com</spanx> DNS-ID or Common Name - is not permitted to push a response for <spanx - style="verb">https://www.example.org/doc</spanx>. - </t> - <t> - The response for a <x:ref>PUSH_PROMISE</x:ref> stream begins with a - <x:ref>HEADERS</x:ref> frame, which immediately puts the stream into the “half closed - (remote)” state for the server and “half closed (local)” state for the client, and ends - with a frame bearing END_STREAM, which places the stream in the "closed" state. - <list style="hanging"> - <t hangText="Note:"> - The client never sends a frame with the END_STREAM flag for a server push. - </t> - </list> - </t> - </section> - - </section> - - <section anchor="CONNECT" title="The CONNECT Method"> - <t> - In HTTP/1.x, the pseudo-method CONNECT (<xref target="RFC7231" x:fmt="," - x:rel="#CONNECT"/>) is used to convert an HTTP connection into a tunnel to a remote host. - CONNECT is primarily used with HTTP proxies to establish a TLS session with an origin - server for the purposes of interacting with <spanx style="verb">https</spanx> resources. - </t> - <t> - In HTTP/2, the CONNECT method is used to establish a tunnel over a single HTTP/2 stream to - a remote host, for similar purposes. The HTTP header field mapping works as defined in - <xref target="HttpRequest">Request Header Fields</xref>, with a few - differences. Specifically: - <list style="symbols"> - <t> - The <spanx style="verb">:method</spanx> header field is set to <spanx - style="verb">CONNECT</spanx>. - </t> - <t> - The <spanx style="verb">:scheme</spanx> and <spanx style="verb">:path</spanx> header - fields MUST be omitted. - </t> - <t> - The <spanx style="verb">:authority</spanx> header field contains the host and port to - connect to (equivalent to the authority-form of the request-target of CONNECT - requests, see <xref target="RFC7230" x:fmt="," x:rel="#request-target"/>). - </t> - </list> - </t> - <t> - A proxy that supports CONNECT establishes a <xref target="TCP">TCP connection</xref> to - the server identified in the <spanx style="verb">:authority</spanx> header field. Once - this connection is successfully established, the proxy sends a <x:ref>HEADERS</x:ref> - frame containing a 2xx series status code to the client, as defined in <xref - target="RFC7231" x:fmt="," x:rel="#CONNECT"/>. - </t> - <t> - After the initial <x:ref>HEADERS</x:ref> frame sent by each peer, all subsequent - <x:ref>DATA</x:ref> frames correspond to data sent on the TCP connection. The payload of - any <x:ref>DATA</x:ref> frames sent by the client is transmitted by the proxy to the TCP - server; data received from the TCP server is assembled into <x:ref>DATA</x:ref> frames by - the proxy. Frame types other than <x:ref>DATA</x:ref> or stream management frames - (<x:ref>RST_STREAM</x:ref>, <x:ref>WINDOW_UPDATE</x:ref>, and <x:ref>PRIORITY</x:ref>) - MUST NOT be sent on a connected stream, and MUST be treated as a <xref - target="StreamErrorHandler">stream error</xref> if received. - </t> - <t> - The TCP connection can be closed by either peer. The END_STREAM flag on a - <x:ref>DATA</x:ref> frame is treated as being equivalent to the TCP FIN bit. A client is - expected to send a <x:ref>DATA</x:ref> frame with the END_STREAM flag set after receiving - a frame bearing the END_STREAM flag. A proxy that receives a <x:ref>DATA</x:ref> frame - with the END_STREAM flag set sends the attached data with the FIN bit set on the last TCP - segment. A proxy that receives a TCP segment with the FIN bit set sends a - <x:ref>DATA</x:ref> frame with the END_STREAM flag set. Note that the final TCP segment - or <x:ref>DATA</x:ref> frame could be empty. - </t> - <t> - A TCP connection error is signaled with <x:ref>RST_STREAM</x:ref>. A proxy treats any - error in the TCP connection, which includes receiving a TCP segment with the RST bit set, - as a <xref target="StreamErrorHandler">stream error</xref> of type - <x:ref>CONNECT_ERROR</x:ref>. Correspondingly, a proxy MUST send a TCP segment with the - RST bit set if it detects an error with the stream or the HTTP/2 connection. - </t> - </section> - </section> - - <section anchor="HttpExtra" title="Additional HTTP Requirements/Considerations"> - <t> - This section outlines attributes of the HTTP protocol that improve interoperability, reduce - exposure to known security vulnerabilities, or reduce the potential for implementation - variation. - </t> - - <section title="Connection Management"> - <t> - HTTP/2 connections are persistent. For best performance, it is expected clients will not - close connections until it is determined that no further communication with a server is - necessary (for example, when a user navigates away from a particular web page), or until - the server closes the connection. - </t> - <t> - Clients SHOULD NOT open more than one HTTP/2 connection to a given host and port pair, - where host is derived from a URI, a selected <xref target="ALT-SVC">alternative - service</xref>, or a configured proxy. - </t> - <t> - A client can create additional connections as replacements, either to replace connections - that are near to exhausting the available <xref target="StreamIdentifiers">stream - identifier space</xref>, to refresh the keying material for a TLS connection, or to - replace connections that have encountered <xref - target="ConnectionErrorHandler">errors</xref>. - </t> - <t> - A client MAY open multiple connections to the same IP address and TCP port using different - <xref target="TLS-EXT">Server Name Indication</xref> values or to provide different TLS - client certificates, but SHOULD avoid creating multiple connections with the same - configuration. - </t> - <t> - Servers are encouraged to maintain open connections for as long as possible, but are - permitted to terminate idle connections if necessary. When either endpoint chooses to - close the transport-layer TCP connection, the terminating endpoint SHOULD first send a - <x:ref>GOAWAY</x:ref> (<xref target="GOAWAY"/>) frame so that both endpoints can reliably - determine whether previously sent frames have been processed and gracefully complete or - terminate any necessary remaining tasks. - </t> - - <section anchor="reuse" title="Connection Reuse"> - <t> - Connections that are made to an origin servers, either directly or through a tunnel - created using the <xref target="CONNECT">CONNECT method</xref> MAY be reused for - requests with multiple different URI authority components. A connection can be reused - as long as the origin server is <xref target="authority">authoritative</xref>. For - <spanx style="verb">http</spanx> resources, this depends on the host having resolved to - the same IP address. - </t> - <t> - For <spanx style="verb">https</spanx> resources, connection reuse additionally depends - on having a certificate that is valid for the host in the URI. An origin server might - offer a certificate with multiple <spanx style="verb">subjectAltName</spanx> attributes, - or names with wildcards, one of which is valid for the authority in the URI. For - example, a certificate with a <spanx style="verb">subjectAltName</spanx> of <spanx - style="verb">*.example.com</spanx> might permit the use of the same connection for - requests to URIs starting with <spanx style="verb">https://a.example.com/</spanx> and - <spanx style="verb">https://b.example.com/</spanx>. - </t> - <t> - In some deployments, reusing a connection for multiple origins can result in requests - being directed to the wrong origin server. For example, TLS termination might be - performed by a middlebox that uses the TLS <xref target="TLS-EXT">Server Name Indication - (SNI)</xref> extension to select an origin server. This means that it is possible - for clients to send confidential information to servers that might not be the intended - target for the request, even though the server is otherwise authoritative. - </t> - <t> - A server that does not wish clients to reuse connections can indicate that it is not - authoritative for a request by sending a 421 (Misdirected Request) status code in response - to the request (see <xref target="MisdirectedRequest"/>). - </t> - <t> - A client that is configured to use a proxy over HTTP/2 directs requests to that proxy - through a single connection. That is, all requests sent via a proxy reuse the - connection to the proxy. - </t> - </section> - - <section anchor="MisdirectedRequest" title="The 421 (Misdirected Request) Status Code"> - <t> - The 421 (Misdirected Request) status code indicates that the request was directed at a - server that is not able to produce a response. This can be sent by a server that is not - configured to produce responses for the combination of scheme and authority that are - included in the request URI. - </t> - <t> - Clients receiving a 421 (Misdirected Request) response from a server MAY retry the - request - whether the request method is idempotent or not - over a different connection. - This is possible if a connection is reused (<xref target="reuse"/>) or if an alternative - service is selected (<xref target="ALT-SVC"/>). - </t> - <t> - This status code MUST NOT be generated by proxies. - </t> - <t> - A 421 response is cacheable by default; i.e., unless otherwise indicated by the method - definition or explicit cache controls (see <xref target="RFC7234" - x:rel="#heuristic.freshness" x:fmt="of"/>). - </t> - </section> - </section> - - <section title="Use of TLS Features" anchor="TLSUsage"> - <t> - Implementations of HTTP/2 MUST support <xref target="TLS12">TLS 1.2</xref> for HTTP/2 over - TLS. The general TLS usage guidance in <xref target="TLSBCP"/> SHOULD be followed, with - some additional restrictions that are specific to HTTP/2. - </t> - - <t> - An implementation of HTTP/2 over TLS MUST use TLS 1.2 or higher with the restrictions on - feature set and cipher suite described in this section. Due to implementation - limitations, it might not be possible to fail TLS negotiation. An endpoint MUST - immediately terminate an HTTP/2 connection that does not meet these minimum requirements - with a <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>INADEQUATE_SECURITY</x:ref>. - </t> - - <section anchor="TLSFeatures" title="TLS Features"> - <t> - The TLS implementation MUST support the <xref target="TLS-EXT">Server Name Indication - (SNI)</xref> extension to TLS. HTTP/2 clients MUST indicate the target domain name when - negotiating TLS. - </t> - <t> - The TLS implementation MUST disable compression. TLS compression can lead to the - exposure of information that would not otherwise be revealed <xref target="RFC3749"/>. - Generic compression is unnecessary since HTTP/2 provides compression features that are - more aware of context and therefore likely to be more appropriate for use for - performance, security or other reasons. - </t> - <t> - The TLS implementation MUST disable renegotiation. An endpoint MUST treat a TLS - renegotiation as a <xref target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>PROTOCOL_ERROR</x:ref>. Note that disabling renegotiation can result in - long-lived connections becoming unusable due to limits on the number of messages the - underlying cipher suite can encipher. - </t> - <t> - A client MAY use renegotiation to provide confidentiality protection for client - credentials offered in the handshake, but any renegotiation MUST occur prior to sending - the connection preface. A server SHOULD request a client certificate if it sees a - renegotiation request immediately after establishing a connection. - </t> - <t> - This effectively prevents the use of renegotiation in response to a request for a - specific protected resource. A future specification might provide a way to support this - use case. <!-- <cref> We are tracking this in a non-blocking fashion in issue #496 and - with a new draft. --> - </t> - </section> - - <section title="TLS Cipher Suites"> - <t> - The set of TLS cipher suites that are permitted in HTTP/2 is restricted. HTTP/2 MUST - only be used with cipher suites that have ephemeral key exchange, such as the <xref - target="TLS12">ephemeral Diffie-Hellman (DHE)</xref> or the <xref - target="RFC4492">elliptic curve variant (ECDHE)</xref>. Ephemeral key exchange MUST - have a minimum size of 2048 bits for DHE or security level of 128 bits for ECDHE. - Clients MUST accept DHE sizes of up to 4096 bits. HTTP MUST NOT be used with cipher - suites that use stream or block ciphers. Authenticated Encryption with Additional Data - (AEAD) modes, such as the <xref target="RFC5288">Galois Counter Model (GCM) mode for - AES</xref> are acceptable. - </t> - <t> - The effect of these restrictions is that TLS 1.2 implementations could have - non-intersecting sets of available cipher suites, since these prevent the use of the - cipher suite that TLS 1.2 makes mandatory. To avoid this problem, implementations of - HTTP/2 that use TLS 1.2 MUST support TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 <xref - target="TLS-ECDHE"/> with P256 <xref target="FIPS186"/>. - </t> - <t> - Clients MAY advertise support of cipher suites that are prohibited by the above - restrictions in order to allow for connection to servers that do not support HTTP/2. - This enables a fallback to protocols without these constraints without the additional - latency imposed by using a separate connection for fallback. - </t> - </section> - </section> - </section> - - <section anchor="security" title="Security Considerations"> - <section title="Server Authority" anchor="authority"> - <t> - HTTP/2 relies on the HTTP/1.1 definition of authority for determining whether a server is - authoritative in providing a given response, see <xref target="RFC7230" x:fmt="," - x:rel="#establishing.authority"/>. This relies on local name resolution for the "http" - URI scheme, and the authenticated server identity for the "https" scheme (see <xref - target="RFC2818" x:fmt="," x:sec="3"/>). - </t> - </section> - - <section title="Cross-Protocol Attacks"> - <t> - In a cross-protocol attack, an attacker causes a client to initiate a transaction in one - protocol toward a server that understands a different protocol. An attacker might be able - to cause the transaction to appear as valid transaction in the second protocol. In - combination with the capabilities of the web context, this can be used to interact with - poorly protected servers in private networks. - </t> - <t> - Completing a TLS handshake with an ALPN identifier for HTTP/2 can be considered sufficient - protection against cross protocol attacks. ALPN provides a positive indication that a - server is willing to proceed with HTTP/2, which prevents attacks on other TLS-based - protocols. - </t> - <t> - The encryption in TLS makes it difficult for attackers to control the data which could be - used in a cross-protocol attack on a cleartext protocol. - </t> - <t> - The cleartext version of HTTP/2 has minimal protection against cross-protocol attacks. - The <xref target="ConnectionHeader">connection preface</xref> contains a string that is - designed to confuse HTTP/1.1 servers, but no special protection is offered for other - protocols. A server that is willing to ignore parts of an HTTP/1.1 request containing an - Upgrade header field in addition to the client connection preface could be exposed to a - cross-protocol attack. - </t> - </section> - - <section title="Intermediary Encapsulation Attacks"> - <t> - HTTP/2 header field names and values are encoded as sequences of octets with a length - prefix. This enables HTTP/2 to carry any string of octets as the name or value of a - header field. An intermediary that translates HTTP/2 requests or responses into HTTP/1.1 - directly could permit the creation of corrupted HTTP/1.1 messages. An attacker might - exploit this behavior to cause the intermediary to create HTTP/1.1 messages with illegal - header fields, extra header fields, or even new messages that are entirely falsified. - </t> - <t> - Header field names or values that contain characters not permitted by HTTP/1.1, including - carriage return (ASCII 0xd) or line feed (ASCII 0xa) MUST NOT be translated verbatim by an - intermediary, as stipulated in <xref target="RFC7230" x:rel="#field.parsing" x:fmt=","/>. - </t> - <t> - Translation from HTTP/1.x to HTTP/2 does not produce the same opportunity to an attacker. - Intermediaries that perform translation to HTTP/2 MUST remove any instances of the <spanx - style="verb">obs-fold</spanx> production from header field values. - </t> - </section> - - <section title="Cacheability of Pushed Responses"> - <t> - Pushed responses do not have an explicit request from the client; the request - is provided by the server in the <x:ref>PUSH_PROMISE</x:ref> frame. - </t> - <t> - Caching responses that are pushed is possible based on the guidance provided by the origin - server in the Cache-Control header field. However, this can cause issues if a single - server hosts more than one tenant. For example, a server might offer multiple users each - a small portion of its URI space. - </t> - <t> - Where multiple tenants share space on the same server, that server MUST ensure that - tenants are not able to push representations of resources that they do not have authority - over. Failure to enforce this would allow a tenant to provide a representation that would - be served out of cache, overriding the actual representation that the authoritative tenant - provides. - </t> - <t> - Pushed responses for which an origin server is not authoritative (see - <xref target="authority"/>) are never cached or used. - </t> - </section> - - <section anchor="dos" title="Denial of Service Considerations"> - <t> - An HTTP/2 connection can demand a greater commitment of resources to operate than a - HTTP/1.1 connection. The use of header compression and flow control depend on a - commitment of resources for storing a greater amount of state. Settings for these - features ensure that memory commitments for these features are strictly bounded. - </t> - <t> - The number of <x:ref>PUSH_PROMISE</x:ref> frames is not constrained in the same fashion. - A client that accepts server push SHOULD limit the number of streams it allows to be in - the "reserved (remote)" state. Excessive number of server push streams can be treated as - a <xref target="StreamErrorHandler">stream error</xref> of type - <x:ref>ENHANCE_YOUR_CALM</x:ref>. - </t> - <t> - Processing capacity cannot be guarded as effectively as state capacity. - </t> - <t> - The <x:ref>SETTINGS</x:ref> frame can be abused to cause a peer to expend additional - processing time. This might be done by pointlessly changing SETTINGS parameters, setting - multiple undefined parameters, or changing the same setting multiple times in the same - frame. <x:ref>WINDOW_UPDATE</x:ref> or <x:ref>PRIORITY</x:ref> frames can be abused to - cause an unnecessary waste of resources. - </t> - <t> - Large numbers of small or empty frames can be abused to cause a peer to expend time - processing frame headers. Note however that some uses are entirely legitimate, such as - the sending of an empty <x:ref>DATA</x:ref> frame to end a stream. - </t> - <t> - Header compression also offers some opportunities to waste processing resources; see <xref - target="COMPRESSION" x:fmt="of" x:rel="#Security"/> for more details on potential abuses. - </t> - <t> - Limits in <x:ref>SETTINGS</x:ref> parameters cannot be reduced instantaneously, which - leaves an endpoint exposed to behavior from a peer that could exceed the new limits. In - particular, immediately after establishing a connection, limits set by a server are not - known to clients and could be exceeded without being an obvious protocol violation. - </t> - <t> - All these features - i.e., <x:ref>SETTINGS</x:ref> changes, small frames, header - compression - have legitimate uses. These features become a burden only when they are - used unnecessarily or to excess. - </t> - <t> - An endpoint that doesn't monitor this behavior exposes itself to a risk of denial of - service attack. Implementations SHOULD track the use of these features and set limits on - their use. An endpoint MAY treat activity that is suspicious as a <xref - target="ConnectionErrorHandler">connection error</xref> of type - <x:ref>ENHANCE_YOUR_CALM</x:ref>. - </t> - - <section anchor="MaxHeaderBlock" title="Limits on Header Block Size"> - <t> - A large <xref target="HeaderBlock">header block</xref> can cause an implementation to - commit a large amount of state. Header fields that are critical for routing can appear - toward the end of a header block, which prevents streaming of header fields to their - ultimate destination. For this an other reasons, such as ensuring cache correctness, - means that an endpoint might need to buffer the entire header block. Since there is no - hard limit to the size of a header block, some endpoints could be forced commit a large - amount of available memory for header fields. - </t> - <t> - An endpoint can use the <x:ref>SETTINGS_MAX_HEADER_LIST_SIZE</x:ref> to advise peers of - limits that might apply on the size of header blocks. This setting is only advisory, so - endpoints MAY choose to send header blocks that exceed this limit and risk having the - request or response being treated as malformed. This setting specific to a connection, - so any request or response could encounter a hop with a lower, unknown limit. An - intermediary can attempt to avoid this problem by passing on values presented by - different peers, but they are not obligated to do so. - </t> - <t> - A server that receives a larger header block than it is willing to handle can send an - HTTP 431 (Request Header Fields Too Large) status code <xref target="RFC6585"/>. A - client can discard responses that it cannot process. The header block MUST be processed - to ensure a consistent connection state, unless the connection is closed. - </t> - </section> - </section> - - <section title="Use of Compression"> - <t> - HTTP/2 enables greater use of compression for both header fields (<xref - target="HeaderBlock"/>) and entity bodies. Compression can allow an attacker to recover - secret data when it is compressed in the same context as data under attacker control. - </t> - <t> - There are demonstrable attacks on compression that exploit the characteristics of the web - (e.g., <xref target="BREACH"/>). The attacker induces multiple requests containing - varying plaintext, observing the length of the resulting ciphertext in each, which - reveals a shorter length when a guess about the secret is correct. - </t> - <t> - Implementations communicating on a secure channel MUST NOT compress content that includes - both confidential and attacker-controlled data unless separate compression dictionaries - are used for each source of data. Compression MUST NOT be used if the source of data - cannot be reliably determined. Generic stream compression, such as that provided by TLS - MUST NOT be used with HTTP/2 (<xref target="TLSFeatures"/>). - </t> - <t> - Further considerations regarding the compression of header fields are described in <xref - target="COMPRESSION"/>. - </t> - </section> - - <section title="Use of Padding" anchor="padding"> - <t> - Padding within HTTP/2 is not intended as a replacement for general purpose padding, such - as might be provided by <xref target="TLS12">TLS</xref>. Redundant padding could even be - counterproductive. Correct application can depend on having specific knowledge of the - data that is being padded. - </t> - <t> - To mitigate attacks that rely on compression, disabling or limiting compression might be - preferable to padding as a countermeasure. - </t> - <t> - Padding can be used to obscure the exact size of frame content, and is provided to - mitigate specific attacks within HTTP. For example, attacks where compressed content - includes both attacker-controlled plaintext and secret data (see for example, <xref - target="BREACH"/>). - </t> - <t> - Use of padding can result in less protection than might seem immediately obvious. At - best, padding only makes it more difficult for an attacker to infer length information by - increasing the number of frames an attacker has to observe. Incorrectly implemented - padding schemes can be easily defeated. In particular, randomized padding with a - predictable distribution provides very little protection; similarly, padding payloads to a - fixed size exposes information as payload sizes cross the fixed size boundary, which could - be possible if an attacker can control plaintext. - </t> - <t> - Intermediaries SHOULD retain padding for <x:ref>DATA</x:ref> frames, but MAY drop padding - for <x:ref>HEADERS</x:ref> and <x:ref>PUSH_PROMISE</x:ref> frames. A valid reason for an - intermediary to change the amount of padding of frames is to improve the protections that - padding provides. - </t> - </section> - - <section title="Privacy Considerations"> - <t> - Several characteristics of HTTP/2 provide an observer an opportunity to correlate actions - of a single client or server over time. This includes the value of settings, the manner - in which flow control windows are managed, the way priorities are allocated to streams, - timing of reactions to stimulus, and handling of any optional features. - </t> - <t> - As far as this creates observable differences in behavior, they could be used as a basis - for fingerprinting a specific client, as defined in <xref target="HTML5" x:fmt="of" - x:sec="1.8" x:rel="introduction.html#fingerprint"/>. - </t> - </section> - </section> - - <section anchor="iana" title="IANA Considerations"> - <t> - A string for identifying HTTP/2 is entered into the "Application Layer Protocol Negotiation - (ALPN) Protocol IDs" registry established in <xref target="TLS-ALPN"/>. - </t> - <t> - This document establishes a registry for frame types, settings, and error codes. These new - registries are entered into a new "Hypertext Transfer Protocol (HTTP) 2 Parameters" section. - </t> - <t> - This document registers the <spanx style="verb">HTTP2-Settings</spanx> header field for - use in HTTP; and the 421 (Misdirected Request) status code. - </t> - <t> - This document registers the <spanx style="verb">PRI</spanx> method for use in HTTP, to avoid - collisions with the <xref target="ConnectionHeader">connection preface</xref>. - </t> - - <section anchor="iana-alpn" title="Registration of HTTP/2 Identification Strings"> - <t> - This document creates two registrations for the identification of HTTP/2 in the - "Application Layer Protocol Negotiation (ALPN) Protocol IDs" registry established in <xref - target="TLS-ALPN"/>. - </t> - <t> - The "h2" string identifies HTTP/2 when used over TLS: - <list style="hanging"> - <t hangText="Protocol:">HTTP/2 over TLS</t> - <t hangText="Identification Sequence:">0x68 0x32 ("h2")</t> - <t hangText="Specification:">This document</t> - </list> - </t> - <t> - The "h2c" string identifies HTTP/2 when used over cleartext TCP: - <list style="hanging"> - <t hangText="Protocol:">HTTP/2 over TCP</t> - <t hangText="Identification Sequence:">0x68 0x32 0x63 ("h2c")</t> - <t hangText="Specification:">This document</t> - </list> - </t> - </section> - - <section anchor="iana-frames" title="Frame Type Registry"> - <t> - This document establishes a registry for HTTP/2 frame type codes. The "HTTP/2 Frame - Type" registry manages an 8-bit space. The "HTTP/2 Frame Type" registry operates under - either of the <xref target="RFC5226">"IETF Review" or "IESG Approval" policies</xref> for - values between 0x00 and 0xef, with values between 0xf0 and 0xff being reserved for - experimental use. - </t> - <t> - New entries in this registry require the following information: - <list style="hanging"> - <t hangText="Frame Type:"> - A name or label for the frame type. - </t> - <t hangText="Code:"> - The 8-bit code assigned to the frame type. - </t> - <t hangText="Specification:"> - A reference to a specification that includes a description of the frame layout, - it's semantics and flags that the frame type uses, including any parts of the frame - that are conditionally present based on the value of flags. - </t> - </list> - </t> - <t> - The entries in the following table are registered by this document. - </t> - <texttable align="left" suppress-title="true"> - <ttcol>Frame Type</ttcol> - <ttcol>Code</ttcol> - <ttcol>Section</ttcol> - <c>DATA</c><c>0x0</c><c><xref target="DATA"/></c> - <c>HEADERS</c><c>0x1</c><c><xref target="HEADERS"/></c> - <c>PRIORITY</c><c>0x2</c><c><xref target="PRIORITY"/></c> - <c>RST_STREAM</c><c>0x3</c><c><xref target="RST_STREAM"/></c> - <c>SETTINGS</c><c>0x4</c><c><xref target="SETTINGS"/></c> - <c>PUSH_PROMISE</c><c>0x5</c><c><xref target="PUSH_PROMISE"/></c> - <c>PING</c><c>0x6</c><c><xref target="PING"/></c> - <c>GOAWAY</c><c>0x7</c><c><xref target="GOAWAY"/></c> - <c>WINDOW_UPDATE</c><c>0x8</c><c><xref target="WINDOW_UPDATE"/></c> - <c>CONTINUATION</c><c>0x9</c><c><xref target="CONTINUATION"/></c> - </texttable> - </section> - - <section anchor="iana-settings" title="Settings Registry"> - <t> - This document establishes a registry for HTTP/2 settings. The "HTTP/2 Settings" registry - manages a 16-bit space. The "HTTP/2 Settings" registry operates under the <xref - target="RFC5226">"Expert Review" policy</xref> for values in the range from 0x0000 to - 0xefff, with values between and 0xf000 and 0xffff being reserved for experimental use. - </t> - <t> - New registrations are advised to provide the following information: - <list style="hanging"> - <t hangText="Name:"> - A symbolic name for the setting. Specifying a setting name is optional. - </t> - <t hangText="Code:"> - The 16-bit code assigned to the setting. - </t> - <t hangText="Initial Value:"> - An initial value for the setting. - </t> - <t hangText="Specification:"> - An optional reference to a specification that describes the use of the setting. - </t> - </list> - </t> - <t> - An initial set of setting registrations can be found in <xref target="SettingValues"/>. - </t> - <texttable align="left" suppress-title="true"> - <ttcol>Name</ttcol> - <ttcol>Code</ttcol> - <ttcol>Initial Value</ttcol> - <ttcol>Specification</ttcol> - <c>HEADER_TABLE_SIZE</c> - <c>0x1</c><c>4096</c><c><xref target="SettingValues"/></c> - <c>ENABLE_PUSH</c> - <c>0x2</c><c>1</c><c><xref target="SettingValues"/></c> - <c>MAX_CONCURRENT_STREAMS</c> - <c>0x3</c><c>(infinite)</c><c><xref target="SettingValues"/></c> - <c>INITIAL_WINDOW_SIZE</c> - <c>0x4</c><c>65535</c><c><xref target="SettingValues"/></c> - <c>MAX_FRAME_SIZE</c> - <c>0x5</c><c>16384</c><c><xref target="SettingValues"/></c> - <c>MAX_HEADER_LIST_SIZE</c> - <c>0x6</c><c>(infinite)</c><c><xref target="SettingValues"/></c> - </texttable> - - </section> - - <section anchor="iana-errors" title="Error Code Registry"> - <t> - This document establishes a registry for HTTP/2 error codes. The "HTTP/2 Error Code" - registry manages a 32-bit space. The "HTTP/2 Error Code" registry operates under the - <xref target="RFC5226">"Expert Review" policy</xref>. - </t> - <t> - Registrations for error codes are required to include a description of the error code. An - expert reviewer is advised to examine new registrations for possible duplication with - existing error codes. Use of existing registrations is to be encouraged, but not - mandated. - </t> - <t> - New registrations are advised to provide the following information: - <list style="hanging"> - <t hangText="Name:"> - A name for the error code. Specifying an error code name is optional. - </t> - <t hangText="Code:"> - The 32-bit error code value. - </t> - <t hangText="Description:"> - A brief description of the error code semantics, longer if no detailed specification - is provided. - </t> - <t hangText="Specification:"> - An optional reference for a specification that defines the error code. - </t> - </list> - </t> - <t> - The entries in the following table are registered by this document. - </t> - <texttable align="left" suppress-title="true"> - <ttcol>Name</ttcol> - <ttcol>Code</ttcol> - <ttcol>Description</ttcol> - <ttcol>Specification</ttcol> - <c>NO_ERROR</c><c>0x0</c> - <c>Graceful shutdown</c> - <c><xref target="ErrorCodes"/></c> - <c>PROTOCOL_ERROR</c><c>0x1</c> - <c>Protocol error detected</c> - <c><xref target="ErrorCodes"/></c> - <c>INTERNAL_ERROR</c><c>0x2</c> - <c>Implementation fault</c> - <c><xref target="ErrorCodes"/></c> - <c>FLOW_CONTROL_ERROR</c><c>0x3</c> - <c>Flow control limits exceeded</c> - <c><xref target="ErrorCodes"/></c> - <c>SETTINGS_TIMEOUT</c><c>0x4</c> - <c>Settings not acknowledged</c> - <c><xref target="ErrorCodes"/></c> - <c>STREAM_CLOSED</c><c>0x5</c> - <c>Frame received for closed stream</c> - <c><xref target="ErrorCodes"/></c> - <c>FRAME_SIZE_ERROR</c><c>0x6</c> - <c>Frame size incorrect</c> - <c><xref target="ErrorCodes"/></c> - <c>REFUSED_STREAM</c><c>0x7</c> - <c>Stream not processed</c> - <c><xref target="ErrorCodes"/></c> - <c>CANCEL</c><c>0x8</c> - <c>Stream cancelled</c> - <c><xref target="ErrorCodes"/></c> - <c>COMPRESSION_ERROR</c><c>0x9</c> - <c>Compression state not updated</c> - <c><xref target="ErrorCodes"/></c> - <c>CONNECT_ERROR</c><c>0xa</c> - <c>TCP connection error for CONNECT method</c> - <c><xref target="ErrorCodes"/></c> - <c>ENHANCE_YOUR_CALM</c><c>0xb</c> - <c>Processing capacity exceeded</c> - <c><xref target="ErrorCodes"/></c> - <c>INADEQUATE_SECURITY</c><c>0xc</c> - <c>Negotiated TLS parameters not acceptable</c> - <c><xref target="ErrorCodes"/></c> - </texttable> - - </section> - - <section title="HTTP2-Settings Header Field Registration"> - <t> - This section registers the <spanx style="verb">HTTP2-Settings</spanx> header field in the - <xref target="BCP90">Permanent Message Header Field Registry</xref>. - <list style="hanging"> - <t hangText="Header field name:"> - HTTP2-Settings - </t> - <t hangText="Applicable protocol:"> - http - </t> - <t hangText="Status:"> - standard - </t> - <t hangText="Author/Change controller:"> - IETF - </t> - <t hangText="Specification document(s):"> - <xref target="Http2SettingsHeader"/> of this document - </t> - <t hangText="Related information:"> - This header field is only used by an HTTP/2 client for Upgrade-based negotiation. - </t> - </list> - </t> - </section> - - <section title="PRI Method Registration"> - <t> - This section registers the <spanx style="verb">PRI</spanx> method in the HTTP Method - Registry (<xref target="RFC7231" x:fmt="," x:rel="#method.registry"/>). - <list style="hanging"> - <t hangText="Method Name:"> - PRI - </t> - <t hangText="Safe"> - No - </t> - <t hangText="Idempotent"> - No - </t> - <t hangText="Specification document(s)"> - <xref target="ConnectionHeader"/> of this document - </t> - <t hangText="Related information:"> - This method is never used by an actual client. This method will appear to be used - when an HTTP/1.1 server or intermediary attempts to parse an HTTP/2 connection - preface. - </t> - </list> - </t> - </section> - - <section title="The 421 (Misdirected Request) HTTP Status Code" - anchor="iana-MisdirectedRequest"> - <t> - This document registers the 421 (Misdirected Request) HTTP Status code in the Hypertext - Transfer Protocol (HTTP) Status Code Registry (<xref target="RFC7231" x:fmt="," - x:rel="#status.code.registry"/>). - </t> - <t> - <list style="hanging"> - <t hangText="Status Code:"> - 421 - </t> - <t hangText="Short Description:"> - Misdirected Request - </t> - <t hangText="Specification:"> - <xref target="MisdirectedRequest"/> of this document - </t> - </list> - </t> - </section> - - </section> - - <section title="Acknowledgements"> - <t> - This document includes substantial input from the following individuals: - <list style="symbols"> - <t> - Adam Langley, Wan-Teh Chang, Jim Morrison, Mark Nottingham, Alyssa Wilk, Costin - Manolache, William Chan, Vitaliy Lvin, Joe Chan, Adam Barth, Ryan Hamilton, Gavin - Peters, Kent Alstad, Kevin Lindsay, Paul Amer, Fan Yang, Jonathan Leighton (SPDY - contributors). - </t> - <t> - Gabriel Montenegro and Willy Tarreau (Upgrade mechanism). - </t> - <t> - William Chan, Salvatore Loreto, Osama Mazahir, Gabriel Montenegro, Jitu Padhye, Roberto - Peon, Rob Trace (Flow control). - </t> - <t> - Mike Bishop (Extensibility). - </t> - <t> - Mark Nottingham, Julian Reschke, James Snell, Jeff Pinner, Mike Bishop, Herve Ruellan - (Substantial editorial contributions). - </t> - <t> - Kari Hurtta, Tatsuhiro Tsujikawa, Greg Wilkins, Poul-Henning Kamp. - </t> - <t> - Alexey Melnikov was an editor of this document during 2013. - </t> - <t> - A substantial proportion of Martin's contribution was supported by Microsoft during his - employment there. - </t> - </list> - </t> - </section> - </middle> - - <back> - <references title="Normative References"> - <reference anchor="COMPRESSION"> - <front> - <title>HPACK - Header Compression for HTTP/2</title> - <author initials="H." surname="Ruellan" fullname="Herve Ruellan"/> - <author initials="R." surname="Peon" fullname="Roberto Peon"/> - <date month="July" year="2014" /> - </front> - <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-header-compression-09" /> - <x:source href="refs/draft-ietf-httpbis-header-compression-09.xml"/> - </reference> - - <reference anchor="TCP"> - <front> - <title abbrev="Transmission Control Protocol"> - Transmission Control Protocol - </title> - <author initials="J." surname="Postel" fullname="Jon Postel"> - <organization>University of Southern California (USC)/Information Sciences - Institute</organization> - </author> - <date year="1981" month="September" /> - </front> - <seriesInfo name="STD" value="7" /> - <seriesInfo name="RFC" value="793" /> - </reference> - - <reference anchor="RFC2119"> - <front> - <title> - Key words for use in RFCs to Indicate Requirement Levels - </title> - <author initials="S." surname="Bradner" fullname="Scott Bradner"> - <organization>Harvard University</organization> - <address><email>sob@harvard.edu</email></address> - </author> - <date month="March" year="1997"/> - </front> - <seriesInfo name="BCP" value="14"/> - <seriesInfo name="RFC" value="2119"/> - </reference> - - <reference anchor="RFC2818"> - <front> - <title> - HTTP Over TLS - </title> - <author initials="E." surname="Rescorla" fullname="Eric Rescorla"/> - <date month="May" year="2000"/> - </front> - <seriesInfo name="RFC" value="2818"/> - </reference> - - <reference anchor="RFC3986"> - <front> - <title abbrev="URI Generic Syntax">Uniform Resource Identifier (URI): Generic - Syntax</title> - <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee"></author> - <author initials="R." surname="Fielding" fullname="Roy T. Fielding"></author> - <author initials="L." surname="Masinter" fullname="Larry Masinter"></author> - <date year="2005" month="January" /> - </front> - <seriesInfo name="STD" value="66" /> - <seriesInfo name="RFC" value="3986" /> - </reference> - - <reference anchor="RFC4648"> - <front> - <title>The Base16, Base32, and Base64 Data Encodings</title> - <author fullname="S. Josefsson" initials="S." surname="Josefsson"/> - <date year="2006" month="October"/> - </front> - <seriesInfo value="4648" name="RFC"/> - </reference> - - <reference anchor="RFC5226"> - <front> - <title>Guidelines for Writing an IANA Considerations Section in RFCs</title> - <author initials="T." surname="Narten" fullname="T. Narten"/> - <author initials="H." surname="Alvestrand" fullname="H. Alvestrand"/> - <date year="2008" month="May" /> - </front> - <seriesInfo name="BCP" value="26" /> - <seriesInfo name="RFC" value="5226" /> - </reference> - - <reference anchor="RFC5234"> - <front> - <title>Augmented BNF for Syntax Specifications: ABNF</title> - <author initials="D." surname="Crocker" fullname="D. Crocker"/> - <author initials="P." surname="Overell" fullname="P. Overell"/> - <date year="2008" month="January" /> - </front> - <seriesInfo name="STD" value="68" /> - <seriesInfo name="RFC" value="5234" /> - </reference> - - <reference anchor="TLS12"> - <front> - <title>The Transport Layer Security (TLS) Protocol Version 1.2</title> - <author initials="T." surname="Dierks" fullname="Tim Dierks"/> - <author initials="E." surname="Rescorla" fullname="Eric Rescorla"/> - <date year="2008" month="August" /> - </front> - <seriesInfo name="RFC" value="5246" /> - </reference> - - <reference anchor="TLS-EXT"> - <front> - <title> - Transport Layer Security (TLS) Extensions: Extension Definitions - </title> - <author initials="D." surname="Eastlake" fullname="D. Eastlake"/> - <date year="2011" month="January"/> - </front> - <seriesInfo name="RFC" value="6066"/> - </reference> - - <reference anchor="TLS-ALPN"> - <front> - <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title> - <author initials="S." surname="Friedl" fullname="Stephan Friedl"></author> - <author initials="A." surname="Popov" fullname="Andrei Popov"></author> - <author initials="A." surname="Langley" fullname="Adam Langley"></author> - <author initials="E." surname="Stephan" fullname="Emile Stephan"></author> - <date month="July" year="2014" /> - </front> - <seriesInfo name="RFC" value="7301" /> - </reference> - - <reference anchor="TLS-ECDHE"> - <front> - <title> - TLS Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois - Counter Mode (GCM) - </title> - <author initials="E." surname="Rescorla" fullname="E. Rescorla"/> - <date year="2008" month="August" /> - </front> - <seriesInfo name="RFC" value="5289" /> - </reference> - - <reference anchor="FIPS186"> - <front> - <title> - Digital Signature Standard (DSS) - </title> - <author><organization>NIST</organization></author> - <date year="2013" month="July" /> - </front> - <seriesInfo name="FIPS" value="PUB 186-4" /> - </reference> - - <reference anchor="RFC7230"> - <front> - <title> - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title> - <author fullname="Roy T. Fielding" initials="R." role="editor" surname="Fielding"> - <organization abbrev="Adobe">Adobe Systems Incorporated</organization> - <address><email>fielding@gbiv.com</email></address> - </author> - <author fullname="Julian F. Reschke" initials="J. F." role="editor" surname="Reschke"> - <organization abbrev="greenbytes">greenbytes GmbH</organization> - <address><email>julian.reschke@greenbytes.de</email></address> - </author> - <date month="June" year="2014" /> - </front> - <seriesInfo name="RFC" value="7230" /> - <x:source href="refs/rfc7230.xml" - basename="https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230"/> - </reference> - <reference anchor="RFC7231"> - <front> - <title> - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title> - <author fullname="Roy T. Fielding" initials="R." role="editor" surname="Fielding"> - <organization abbrev="Adobe">Adobe Systems Incorporated</organization> - <address><email>fielding@gbiv.com</email></address> - </author> - <author fullname="Julian F. Reschke" initials="J. F." role="editor" surname="Reschke"> - <organization abbrev="greenbytes">greenbytes GmbH</organization> - <address><email>julian.reschke@greenbytes.de</email></address> - </author> - <date month="June" year="2014" /> - </front> - <seriesInfo name="RFC" value="7231" /> - <x:source href="refs/rfc7231.xml" - basename="https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7231"/> - </reference> - <reference anchor="RFC7232"> - <front> - <title>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</title> - <author fullname="Roy T. Fielding" initials="R." role="editor" surname="Fielding"> - <organization abbrev="Adobe">Adobe Systems Incorporated</organization> - <address><email>fielding@gbiv.com</email></address> - </author> - <author fullname="Julian F. Reschke" initials="J. F." role="editor" surname="Reschke"> - <organization abbrev="greenbytes">greenbytes GmbH</organization> - <address><email>julian.reschke@greenbytes.de</email></address> - </author> - <date month="June" year="2014" /> - </front> - <seriesInfo name="RFC" value="7232" /> - </reference> - <reference anchor="RFC7233"> - <front> - <title>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</title> - <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor"> - <organization abbrev="Adobe">Adobe Systems Incorporated</organization> - <address><email>fielding@gbiv.com</email></address> - </author> - <author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor"> - <organization abbrev="W3C">World Wide Web Consortium</organization> - <address><email>ylafon@w3.org</email></address> - </author> - <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor"> - <organization abbrev="greenbytes">greenbytes GmbH</organization> - <address><email>julian.reschke@greenbytes.de</email></address> - </author> - <date month="June" year="2014" /> - </front> - <seriesInfo name="RFC" value="7233" /> - </reference> - <reference anchor="RFC7234"> - <front> - <title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title> - <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor"> - <organization abbrev="Adobe">Adobe Systems Incorporated</organization> - <address><email>fielding@gbiv.com</email></address> - </author> - <author fullname="Mark Nottingham" initials="M." role="editor" surname="Nottingham"> - <organization>Akamai</organization> - <address><email>mnot@mnot.net</email></address> - </author> - <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor"> - <organization abbrev="greenbytes">greenbytes GmbH</organization> - <address><email>julian.reschke@greenbytes.de</email></address> - </author> - <date month="June" year="2014" /> - </front> - <seriesInfo name="RFC" value="7234"/> - <x:source href="refs/rfc7234.xml" - basename="https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7234"/> - </reference> - <reference anchor="RFC7235"> - <front> - <title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title> - <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor"> - <organization abbrev="Adobe">Adobe Systems Incorporated</organization> - <address><email>fielding@gbiv.com</email></address> - </author> - <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor"> - <organization abbrev="greenbytes">greenbytes GmbH</organization> - <address><email>julian.reschke@greenbytes.de</email></address> - </author> - <date month="June" year="2014" /> - </front> - <seriesInfo name="RFC" value="7235"/> - <x:source href="refs/rfc7235.xml" - basename="https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7235"/> - </reference> - - <reference anchor="COOKIE"> - <front> - <title>HTTP State Management Mechanism</title> - <author initials="A." surname="Barth" fullname="A. Barth"/> - <date year="2011" month="April" /> - </front> - <seriesInfo name="RFC" value="6265" /> - </reference> - </references> - - <references title="Informative References"> - <reference anchor="RFC1323"> - <front> - <title> - TCP Extensions for High Performance - </title> - <author initials="V." surname="Jacobson" fullname="Van Jacobson"></author> - <author initials="B." surname="Braden" fullname="Bob Braden"></author> - <author initials="D." surname="Borman" fullname="Dave Borman"></author> - <date year="1992" month="May" /> - </front> - <seriesInfo name="RFC" value="1323" /> - </reference> - - <reference anchor="RFC3749"> - <front> - <title>Transport Layer Security Protocol Compression Methods</title> - <author initials="S." surname="Hollenbeck" fullname="S. Hollenbeck"/> - <date year="2004" month="May" /> - </front> - <seriesInfo name="RFC" value="3749" /> - </reference> - - <reference anchor="RFC6585"> - <front> - <title>Additional HTTP Status Codes</title> - <author initials="M." surname="Nottingham" fullname="Mark Nottingham"/> - <author initials="R." surname="Fielding" fullname="Roy Fielding"/> - <date year="2012" month="April" /> - </front> - <seriesInfo name="RFC" value="6585" /> - </reference> - - <reference anchor="RFC4492"> - <front> - <title> - Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) - </title> - <author initials="S." surname="Blake-Wilson" fullname="S. Blake-Wilson"/> - <author initials="N." surname="Bolyard" fullname="N. Bolyard"/> - <author initials="V." surname="Gupta" fullname="V. Gupta"/> - <author initials="C." surname="Hawk" fullname="C. Hawk"/> - <author initials="B." surname="Moeller" fullname="B. Moeller"/> - <date year="2006" month="May" /> - </front> - <seriesInfo name="RFC" value="4492" /> - </reference> - - <reference anchor="RFC5288"> - <front> - <title> - AES Galois Counter Mode (GCM) Cipher Suites for TLS - </title> - <author initials="J." surname="Salowey" fullname="J. Salowey"/> - <author initials="A." surname="Choudhury" fullname="A. Choudhury"/> - <author initials="D." surname="McGrew" fullname="D. McGrew"/> - <date year="2008" month="August" /> - </front> - <seriesInfo name="RFC" value="5288" /> - </reference> - - <reference anchor='HTML5' - target='http://www.w3.org/TR/2014/CR-html5-20140731/'> - <front> - <title>HTML5</title> - <author fullname='Robin Berjon' surname='Berjon' initials='R.'/> - <author fullname='Steve Faulkner' surname='Faulkner' initials='S.'/> - <author fullname='Travis Leithead' surname='Leithead' initials='T.'/> - <author fullname='Erika Doyle Navara' surname='Doyle Navara' initials='E.'/> - <author fullname='Edward O&apos;Connor' surname='O&apos;Connor' initials='E.'/> - <author fullname='Silvia Pfeiffer' surname='Pfeiffer' initials='S.'/> - <date year='2014' month='July' day='31'/> - </front> - <seriesInfo name='W3C Candidate Recommendation' value='CR-html5-20140731'/> - <annotation> - Latest version available at - <eref target='http://www.w3.org/TR/html5/'/>. - </annotation> - </reference> - - <reference anchor="TALKING" target="http://w2spconf.com/2011/papers/websocket.pdf"> - <front> - <title> - Talking to Yourself for Fun and Profit - </title> - <author initials="L-S." surname="Huang"/> - <author initials="E." surname="Chen"/> - <author initials="A." surname="Barth"/> - <author initials="E." surname="Rescorla"/> - <author initials="C." surname="Jackson"/> - <date year="2011" /> - </front> - </reference> - - <reference anchor="BREACH" - target="http://breachattack.com/resources/BREACH%20-%20SSL,%20gone%20in%2030%20seconds.pdf"> - <front> - <title> - BREACH: Reviving the CRIME Attack - </title> - <author initials="Y." surname="Gluck"/> - <author initials="N." surname="Harris"/> - <author initials="A." surname="Prado"/> - <date year="2013" month="July" day="12"/> - </front> - </reference> - - <reference anchor="BCP90"> - <front> - <title>Registration Procedures for Message Header Fields</title> - <author initials="G." surname="Klyne" fullname="G. Klyne"> - <organization>Nine by Nine</organization> - <address><email>GK-IETF@ninebynine.org</email></address> - </author> - <author initials="M." surname="Nottingham" fullname="M. Nottingham"> - <organization>BEA Systems</organization> - <address><email>mnot@pobox.com</email></address> - </author> - <author initials="J." surname="Mogul" fullname="J. Mogul"> - <organization>HP Labs</organization> - <address><email>JeffMogul@acm.org</email></address> - </author> - <date year="2004" month="September" /> - </front> - <seriesInfo name="BCP" value="90" /> - <seriesInfo name="RFC" value="3864" /> - </reference> - - <reference anchor="TLSBCP"> - <front> - <title>Recommendations for Secure Use of TLS and DTLS</title> - <author initials="Y" surname="Sheffer" fullname="Yaron Sheffer"> - <organization /> - </author> - <author initials="R" surname="Holz" fullname="Ralph Holz"> - <organization /> - </author> - <author initials="P" surname="Saint-Andre" fullname="Peter Saint-Andre"> - <organization /> - </author> - <date month="June" day="23" year="2014" /> - </front> - <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls-bcp-01" /> - </reference> - - <reference anchor="ALT-SVC"> - <front> - <title> - HTTP Alternative Services - </title> - <author initials="M." surname="Nottingham" fullname="Mark Nottingham"> - <organization>Akamai</organization> - </author> - <author initials="P." surname="McManus" fullname="Patrick McManus"> - <organization>Mozilla</organization> - </author> - <author initials="J." surname="Reschke" fullname="Julian Reschke"> - <organization>greenbytes</organization> - </author> - <date year="2014" month="April"/> - </front> - <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-alt-svc-02"/> - <x:source href="refs/draft-ietf-httpbis-alt-svc-02.xml"/> - </reference> - </references> - - <section title="Change Log" anchor="change.log"> - <t> - This section is to be removed by RFC Editor before publication. - </t> - - <section title="Since draft-ietf-httpbis-http2-14" anchor="changes.since.draft-ietf-httpbis-http2-14"> - <t> - Renamed Not Authoritative status code to Misdirected Request. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-13" anchor="changes.since.draft-ietf-httpbis-http2-13"> - <t> - Pseudo-header fields are now required to appear strictly before regular ones. - </t> - <t> - Restored 1xx series status codes, except 101. - </t> - <t> - Changed frame length field 24-bits. Expanded frame header to 9 octets. Added a setting - to limit the damage. - </t> - <t> - Added a setting to advise peers of header set size limits. - </t> - <t> - Removed segments. - </t> - <t> - Made non-semantic-bearing <x:ref>HEADERS</x:ref> frames illegal in the HTTP mapping. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-12" anchor="changes.since.draft-ietf-httpbis-http2-12"> - <t> - Restored extensibility options. - </t> - <t> - Restricting TLS cipher suites to AEAD only. - </t> - <t> - Removing Content-Encoding requirements. - </t> - <t> - Permitting the use of <x:ref>PRIORITY</x:ref> after stream close. - </t> - <t> - Removed ALTSVC frame. - </t> - <t> - Removed BLOCKED frame. - </t> - <t> - Reducing the maximum padding size to 256 octets; removing padding from - <x:ref>CONTINUATION</x:ref> frames. - </t> - <t> - Removed per-frame GZIP compression. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-11" anchor="changes.since.draft-ietf-httpbis-http2-11"> - <t> - Added BLOCKED frame (at risk). - </t> - <t> - Simplified priority scheme. - </t> - <t> - Added <x:ref>DATA</x:ref> per-frame GZIP compression. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-10" anchor="changes.since.draft-ietf-httpbis-http2-10"> - <t> - Changed "connection header" to "connection preface" to avoid confusion. - </t> - <t> - Added dependency-based stream prioritization. - </t> - <t> - Added "h2c" identifier to distinguish between cleartext and secured HTTP/2. - </t> - <t> - Adding missing padding to <x:ref>PUSH_PROMISE</x:ref>. - </t> - <t> - Integrate ALTSVC frame and supporting text. - </t> - <t> - Dropping requirement on "deflate" Content-Encoding. - </t> - <t> - Improving security considerations around use of compression. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-09" anchor="changes.since.draft-ietf-httpbis-http2-09"> - <t> - Adding padding for data frames. - </t> - <t> - Renumbering frame types, error codes, and settings. - </t> - <t> - Adding INADEQUATE_SECURITY error code. - </t> - <t> - Updating TLS usage requirements to 1.2; forbidding TLS compression. - </t> - <t> - Removing extensibility for frames and settings. - </t> - <t> - Changing setting identifier size. - </t> - <t> - Removing the ability to disable flow control. - </t> - <t> - Changing the protocol identification token to "h2". - </t> - <t> - Changing the use of :authority to make it optional and to allow userinfo in non-HTTP - cases. - </t> - <t> - Allowing split on 0x0 for Cookie. - </t> - <t> - Reserved PRI method in HTTP/1.1 to avoid possible future collisions. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-08" anchor="changes.since.draft-ietf-httpbis-http2-08"> - <t> - Added cookie crumbling for more efficient header compression. - </t> - <t> - Added header field ordering with the value-concatenation mechanism. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-07" anchor="changes.since.draft-ietf-httpbis-http2-07"> - <t> - Marked draft for implementation. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-06" anchor="changes.since.draft-ietf-httpbis-http2-06"> - <t> - Adding definition for CONNECT method. - </t> - <t> - Constraining the use of push to safe, cacheable methods with no request body. - </t> - <t> - Changing from :host to :authority to remove any potential confusion. - </t> - <t> - Adding setting for header compression table size. - </t> - <t> - Adding settings acknowledgement. - </t> - <t> - Removing unnecessary and potentially problematic flags from CONTINUATION. - </t> - <t> - Added denial of service considerations. - </t> - </section> - <section title="Since draft-ietf-httpbis-http2-05" anchor="changes.since.draft-ietf-httpbis-http2-05"> - <t> - Marking the draft ready for implementation. - </t> - <t> - Renumbering END_PUSH_PROMISE flag. - </t> - <t> - Editorial clarifications and changes. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-04" anchor="changes.since.draft-ietf-httpbis-http2-04"> - <t> - Added CONTINUATION frame for HEADERS and PUSH_PROMISE. - </t> - <t> - PUSH_PROMISE is no longer implicitly prohibited if SETTINGS_MAX_CONCURRENT_STREAMS is - zero. - </t> - <t> - Push expanded to allow all safe methods without a request body. - </t> - <t> - Clarified the use of HTTP header fields in requests and responses. Prohibited HTTP/1.1 - hop-by-hop header fields. - </t> - <t> - Requiring that intermediaries not forward requests with missing or illegal routing - :-headers. - </t> - <t> - Clarified requirements around handling different frames after stream close, stream reset - and <x:ref>GOAWAY</x:ref>. - </t> - <t> - Added more specific prohibitions for sending of different frame types in various stream - states. - </t> - <t> - Making the last received setting value the effective value. - </t> - <t> - Clarified requirements on TLS version, extension and ciphers. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-03" anchor="changes.since.draft-ietf-httpbis-http2-03"> - <t> - Committed major restructuring atrocities. - </t> - <t> - Added reference to first header compression draft. - </t> - <t> - Added more formal description of frame lifecycle. - </t> - <t> - Moved END_STREAM (renamed from FINAL) back to <x:ref>HEADERS</x:ref>/<x:ref>DATA</x:ref>. - </t> - <t> - Removed HEADERS+PRIORITY, added optional priority to <x:ref>HEADERS</x:ref> frame. - </t> - <t> - Added <x:ref>PRIORITY</x:ref> frame. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-02" anchor="changes.since.draft-ietf-httpbis-http2-02"> - <t> - Added continuations to frames carrying header blocks. - </t> - <t> - Replaced use of "session" with "connection" to avoid confusion with other HTTP stateful - concepts, like cookies. - </t> - <t> - Removed "message". - </t> - <t> - Switched to TLS ALPN from NPN. - </t> - <t> - Editorial changes. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-01" anchor="changes.since.draft-ietf-httpbis-http2-01"> - <t> - Added IANA considerations section for frame types, error codes and settings. - </t> - <t> - Removed data frame compression. - </t> - <t> - Added <x:ref>PUSH_PROMISE</x:ref>. - </t> - <t> - Added globally applicable flags to framing. - </t> - <t> - Removed zlib-based header compression mechanism. - </t> - <t> - Updated references. - </t> - <t> - Clarified stream identifier reuse. - </t> - <t> - Removed CREDENTIALS frame and associated mechanisms. - </t> - <t> - Added advice against naive implementation of flow control. - </t> - <t> - Added session header section. - </t> - <t> - Restructured frame header. Removed distinction between data and control frames. - </t> - <t> - Altered flow control properties to include session-level limits. - </t> - <t> - Added note on cacheability of pushed resources and multiple tenant servers. - </t> - <t> - Changed protocol label form based on discussions. - </t> - </section> - - <section title="Since draft-ietf-httpbis-http2-00" anchor="changes.since.draft-ietf-httpbis-http2-00"> - <t> - Changed title throughout. - </t> - <t> - Removed section on Incompatibilities with SPDY draft#2. - </t> - <t> - Changed <x:ref>INTERNAL_ERROR</x:ref> on <x:ref>GOAWAY</x:ref> to have a value of 2 <eref - target="https://groups.google.com/forum/?fromgroups#!topic/spdy-dev/cfUef2gL3iU"/>. - </t> - <t> - Replaced abstract and introduction. - </t> - <t> - Added section on starting HTTP/2.0, including upgrade mechanism. - </t> - <t> - Removed unused references. - </t> - <t> - Added <xref target="fc-principles">flow control principles</xref> based on <eref - target="https://tools.ietf.org/html/draft-montenegro-httpbis-http2-fc-principles-01"/>. - </t> - </section> - - <section title="Since draft-mbelshe-httpbis-spdy-00" anchor="changes.since.draft-mbelshe-httpbis-spdy-00"> - <t> - Adopted as base for draft-ietf-httpbis-http2. - </t> - <t> - Updated authors/editors list. - </t> - <t> - Added status note. - </t> - </section> - </section> - - </back> -</rfc> -<!-- - vim:et:tw=100:sw=2: - --> diff --git a/vendor/golang.org/x/net/http2/transport_test.go b/vendor/golang.org/x/net/http2/transport_test.go deleted file mode 100644 index fe04bd28..00000000 --- a/vendor/golang.org/x/net/http2/transport_test.go +++ /dev/null @@ -1,3847 +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 http2 - -import ( - "bufio" - "bytes" - "crypto/tls" - "errors" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "math/rand" - "net" - "net/http" - "net/http/httptest" - "net/url" - "os" - "reflect" - "runtime" - "sort" - "strconv" - "strings" - "sync" - "sync/atomic" - "testing" - "time" - - "golang.org/x/net/http2/hpack" -) - -var ( - extNet = flag.Bool("extnet", false, "do external network tests") - transportHost = flag.String("transporthost", "http2.golang.org", "hostname to use for TestTransport") - insecure = flag.Bool("insecure", false, "insecure TLS dials") // TODO: dead code. remove? -) - -var tlsConfigInsecure = &tls.Config{InsecureSkipVerify: true} - -type testContext struct{} - -func (testContext) Done() <-chan struct{} { return make(chan struct{}) } -func (testContext) Err() error { panic("should not be called") } -func (testContext) Deadline() (deadline time.Time, ok bool) { return time.Time{}, false } -func (testContext) Value(key interface{}) interface{} { return nil } - -func TestTransportExternal(t *testing.T) { - if !*extNet { - t.Skip("skipping external network test") - } - req, _ := http.NewRequest("GET", "https://"+*transportHost+"/", nil) - rt := &Transport{TLSClientConfig: tlsConfigInsecure} - res, err := rt.RoundTrip(req) - if err != nil { - t.Fatalf("%v", err) - } - res.Write(os.Stdout) -} - -type fakeTLSConn struct { - net.Conn -} - -func (c *fakeTLSConn) ConnectionState() tls.ConnectionState { - return tls.ConnectionState{ - Version: tls.VersionTLS12, - CipherSuite: cipher_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, - } -} - -func startH2cServer(t *testing.T) net.Listener { - h2Server := &Server{} - l := newLocalListener(t) - go func() { - conn, err := l.Accept() - if err != nil { - t.Error(err) - return - } - h2Server.ServeConn(&fakeTLSConn{conn}, &ServeConnOpts{Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, "Hello, %v, http: %v", r.URL.Path, r.TLS == nil) - })}) - }() - return l -} - -func TestTransportH2c(t *testing.T) { - l := startH2cServer(t) - defer l.Close() - req, err := http.NewRequest("GET", "http://"+l.Addr().String()+"/foobar", nil) - if err != nil { - t.Fatal(err) - } - tr := &Transport{ - AllowHTTP: true, - DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) { - return net.Dial(network, addr) - }, - } - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - if res.ProtoMajor != 2 { - t.Fatal("proto not h2c") - } - body, err := ioutil.ReadAll(res.Body) - if err != nil { - t.Fatal(err) - } - if got, want := string(body), "Hello, /foobar, http: true"; got != want { - t.Fatalf("response got %v, want %v", got, want) - } -} - -func TestTransport(t *testing.T) { - const body = "sup" - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, body) - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - req, err := http.NewRequest("GET", st.ts.URL, nil) - if err != nil { - t.Fatal(err) - } - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() - - t.Logf("Got res: %+v", res) - if g, w := res.StatusCode, 200; g != w { - t.Errorf("StatusCode = %v; want %v", g, w) - } - if g, w := res.Status, "200 OK"; g != w { - t.Errorf("Status = %q; want %q", g, w) - } - wantHeader := http.Header{ - "Content-Length": []string{"3"}, - "Content-Type": []string{"text/plain; charset=utf-8"}, - "Date": []string{"XXX"}, // see cleanDate - } - cleanDate(res) - if !reflect.DeepEqual(res.Header, wantHeader) { - t.Errorf("res Header = %v; want %v", res.Header, wantHeader) - } - if res.Request != req { - t.Errorf("Response.Request = %p; want %p", res.Request, req) - } - if res.TLS == nil { - t.Error("Response.TLS = nil; want non-nil") - } - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - t.Errorf("Body read: %v", err) - } else if string(slurp) != body { - t.Errorf("Body = %q; want %q", slurp, body) - } -} - -func onSameConn(t *testing.T, modReq func(*http.Request)) bool { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, r.RemoteAddr) - }, optOnlyServer, func(c net.Conn, st http.ConnState) { - t.Logf("conn %v is now state %v", c.RemoteAddr(), st) - }) - defer st.Close() - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - get := func() string { - req, err := http.NewRequest("GET", st.ts.URL, nil) - if err != nil { - t.Fatal(err) - } - modReq(req) - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - t.Fatalf("Body read: %v", err) - } - addr := strings.TrimSpace(string(slurp)) - if addr == "" { - t.Fatalf("didn't get an addr in response") - } - return addr - } - first := get() - second := get() - return first == second -} - -func TestTransportReusesConns(t *testing.T) { - if !onSameConn(t, func(*http.Request) {}) { - t.Errorf("first and second responses were on different connections") - } -} - -func TestTransportReusesConn_RequestClose(t *testing.T) { - if onSameConn(t, func(r *http.Request) { r.Close = true }) { - t.Errorf("first and second responses were not on different connections") - } -} - -func TestTransportReusesConn_ConnClose(t *testing.T) { - if onSameConn(t, func(r *http.Request) { r.Header.Set("Connection", "close") }) { - t.Errorf("first and second responses were not on different connections") - } -} - -// Tests that the Transport only keeps one pending dial open per destination address. -// https://golang.org/issue/13397 -func TestTransportGroupsPendingDials(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, r.RemoteAddr) - }, optOnlyServer) - defer st.Close() - tr := &Transport{ - TLSClientConfig: tlsConfigInsecure, - } - defer tr.CloseIdleConnections() - var ( - mu sync.Mutex - dials = map[string]int{} - ) - var wg sync.WaitGroup - for i := 0; i < 10; i++ { - wg.Add(1) - go func() { - defer wg.Done() - req, err := http.NewRequest("GET", st.ts.URL, nil) - if err != nil { - t.Error(err) - return - } - res, err := tr.RoundTrip(req) - if err != nil { - t.Error(err) - return - } - defer res.Body.Close() - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - t.Errorf("Body read: %v", err) - } - addr := strings.TrimSpace(string(slurp)) - if addr == "" { - t.Errorf("didn't get an addr in response") - } - mu.Lock() - dials[addr]++ - mu.Unlock() - }() - } - wg.Wait() - if len(dials) != 1 { - t.Errorf("saw %d dials; want 1: %v", len(dials), dials) - } - tr.CloseIdleConnections() - if err := retry(50, 10*time.Millisecond, func() error { - cp, ok := tr.connPool().(*clientConnPool) - if !ok { - return fmt.Errorf("Conn pool is %T; want *clientConnPool", tr.connPool()) - } - cp.mu.Lock() - defer cp.mu.Unlock() - if len(cp.dialing) != 0 { - return fmt.Errorf("dialing map = %v; want empty", cp.dialing) - } - if len(cp.conns) != 0 { - return fmt.Errorf("conns = %v; want empty", cp.conns) - } - if len(cp.keys) != 0 { - return fmt.Errorf("keys = %v; want empty", cp.keys) - } - return nil - }); err != nil { - t.Errorf("State of pool after CloseIdleConnections: %v", err) - } -} - -func retry(tries int, delay time.Duration, fn func() error) error { - var err error - for i := 0; i < tries; i++ { - err = fn() - if err == nil { - return nil - } - time.Sleep(delay) - } - return err -} - -func TestTransportAbortClosesPipes(t *testing.T) { - shutdown := make(chan struct{}) - st := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - w.(http.Flusher).Flush() - <-shutdown - }, - optOnlyServer, - ) - defer st.Close() - defer close(shutdown) // we must shutdown before st.Close() to avoid hanging - - done := make(chan struct{}) - requestMade := make(chan struct{}) - go func() { - defer close(done) - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - req, err := http.NewRequest("GET", st.ts.URL, nil) - if err != nil { - t.Fatal(err) - } - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() - close(requestMade) - _, err = ioutil.ReadAll(res.Body) - if err == nil { - t.Error("expected error from res.Body.Read") - } - }() - - <-requestMade - // Now force the serve loop to end, via closing the connection. - st.closeConn() - // deadlock? that's a bug. - select { - case <-done: - case <-time.After(3 * time.Second): - t.Fatal("timeout") - } -} - -// TODO: merge this with TestTransportBody to make TestTransportRequest? This -// could be a table-driven test with extra goodies. -func TestTransportPath(t *testing.T) { - gotc := make(chan *url.URL, 1) - st := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - gotc <- r.URL - }, - optOnlyServer, - ) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - const ( - path = "/testpath" - query = "q=1" - ) - surl := st.ts.URL + path + "?" + query - req, err := http.NewRequest("POST", surl, nil) - if err != nil { - t.Fatal(err) - } - c := &http.Client{Transport: tr} - res, err := c.Do(req) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() - got := <-gotc - if got.Path != path { - t.Errorf("Read Path = %q; want %q", got.Path, path) - } - if got.RawQuery != query { - t.Errorf("Read RawQuery = %q; want %q", got.RawQuery, query) - } -} - -func randString(n int) string { - rnd := rand.New(rand.NewSource(int64(n))) - b := make([]byte, n) - for i := range b { - b[i] = byte(rnd.Intn(256)) - } - return string(b) -} - -type panicReader struct{} - -func (panicReader) Read([]byte) (int, error) { panic("unexpected Read") } -func (panicReader) Close() error { panic("unexpected Close") } - -func TestActualContentLength(t *testing.T) { - tests := []struct { - req *http.Request - want int64 - }{ - // Verify we don't read from Body: - 0: { - req: &http.Request{Body: panicReader{}}, - want: -1, - }, - // nil Body means 0, regardless of ContentLength: - 1: { - req: &http.Request{Body: nil, ContentLength: 5}, - want: 0, - }, - // ContentLength is used if set. - 2: { - req: &http.Request{Body: panicReader{}, ContentLength: 5}, - want: 5, - }, - // http.NoBody means 0, not -1. - 3: { - req: &http.Request{Body: go18httpNoBody()}, - want: 0, - }, - } - for i, tt := range tests { - got := actualContentLength(tt.req) - if got != tt.want { - t.Errorf("test[%d]: got %d; want %d", i, got, tt.want) - } - } -} - -func TestTransportBody(t *testing.T) { - bodyTests := []struct { - body string - noContentLen bool - }{ - {body: "some message"}, - {body: "some message", noContentLen: true}, - {body: strings.Repeat("a", 1<<20), noContentLen: true}, - {body: strings.Repeat("a", 1<<20)}, - {body: randString(16<<10 - 1)}, - {body: randString(16 << 10)}, - {body: randString(16<<10 + 1)}, - {body: randString(512<<10 - 1)}, - {body: randString(512 << 10)}, - {body: randString(512<<10 + 1)}, - {body: randString(1<<20 - 1)}, - {body: randString(1 << 20)}, - {body: randString(1<<20 + 2)}, - } - - type reqInfo struct { - req *http.Request - slurp []byte - err error - } - gotc := make(chan reqInfo, 1) - st := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - slurp, err := ioutil.ReadAll(r.Body) - if err != nil { - gotc <- reqInfo{err: err} - } else { - gotc <- reqInfo{req: r, slurp: slurp} - } - }, - optOnlyServer, - ) - defer st.Close() - - for i, tt := range bodyTests { - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - var body io.Reader = strings.NewReader(tt.body) - if tt.noContentLen { - body = struct{ io.Reader }{body} // just a Reader, hiding concrete type and other methods - } - req, err := http.NewRequest("POST", st.ts.URL, body) - if err != nil { - t.Fatalf("#%d: %v", i, err) - } - c := &http.Client{Transport: tr} - res, err := c.Do(req) - if err != nil { - t.Fatalf("#%d: %v", i, err) - } - defer res.Body.Close() - ri := <-gotc - if ri.err != nil { - t.Errorf("#%d: read error: %v", i, ri.err) - continue - } - if got := string(ri.slurp); got != tt.body { - t.Errorf("#%d: Read body mismatch.\n got: %q (len %d)\nwant: %q (len %d)", i, shortString(got), len(got), shortString(tt.body), len(tt.body)) - } - wantLen := int64(len(tt.body)) - if tt.noContentLen && tt.body != "" { - wantLen = -1 - } - if ri.req.ContentLength != wantLen { - t.Errorf("#%d. handler got ContentLength = %v; want %v", i, ri.req.ContentLength, wantLen) - } - } -} - -func shortString(v string) string { - const maxLen = 100 - if len(v) <= maxLen { - return v - } - return fmt.Sprintf("%v[...%d bytes omitted...]%v", v[:maxLen/2], len(v)-maxLen, v[len(v)-maxLen/2:]) -} - -func TestTransportDialTLS(t *testing.T) { - var mu sync.Mutex // guards following - var gotReq, didDial bool - - ts := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - mu.Lock() - gotReq = true - mu.Unlock() - }, - optOnlyServer, - ) - defer ts.Close() - tr := &Transport{ - DialTLS: func(netw, addr string, cfg *tls.Config) (net.Conn, error) { - mu.Lock() - didDial = true - mu.Unlock() - cfg.InsecureSkipVerify = true - c, err := tls.Dial(netw, addr, cfg) - if err != nil { - return nil, err - } - return c, c.Handshake() - }, - } - defer tr.CloseIdleConnections() - client := &http.Client{Transport: tr} - res, err := client.Get(ts.ts.URL) - if err != nil { - t.Fatal(err) - } - res.Body.Close() - mu.Lock() - if !gotReq { - t.Error("didn't get request") - } - if !didDial { - t.Error("didn't use dial hook") - } -} - -func TestConfigureTransport(t *testing.T) { - t1 := &http.Transport{} - err := ConfigureTransport(t1) - if err == errTransportVersion { - t.Skip(err) - } - if err != nil { - t.Fatal(err) - } - if got := fmt.Sprintf("%#v", t1); !strings.Contains(got, `"h2"`) { - // Laziness, to avoid buildtags. - t.Errorf("stringification of HTTP/1 transport didn't contain \"h2\": %v", got) - } - wantNextProtos := []string{"h2", "http/1.1"} - if t1.TLSClientConfig == nil { - t.Errorf("nil t1.TLSClientConfig") - } else if !reflect.DeepEqual(t1.TLSClientConfig.NextProtos, wantNextProtos) { - t.Errorf("TLSClientConfig.NextProtos = %q; want %q", t1.TLSClientConfig.NextProtos, wantNextProtos) - } - if err := ConfigureTransport(t1); err == nil { - t.Error("unexpected success on second call to ConfigureTransport") - } - - // And does it work? - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, r.Proto) - }, optOnlyServer) - defer st.Close() - - t1.TLSClientConfig.InsecureSkipVerify = true - c := &http.Client{Transport: t1} - res, err := c.Get(st.ts.URL) - if err != nil { - t.Fatal(err) - } - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - t.Fatal(err) - } - if got, want := string(slurp), "HTTP/2.0"; got != want { - t.Errorf("body = %q; want %q", got, want) - } -} - -type capitalizeReader struct { - r io.Reader -} - -func (cr capitalizeReader) Read(p []byte) (n int, err error) { - n, err = cr.r.Read(p) - for i, b := range p[:n] { - if b >= 'a' && b <= 'z' { - p[i] = b - ('a' - 'A') - } - } - return -} - -type flushWriter struct { - w io.Writer -} - -func (fw flushWriter) Write(p []byte) (n int, err error) { - n, err = fw.w.Write(p) - if f, ok := fw.w.(http.Flusher); ok { - f.Flush() - } - return -} - -type clientTester struct { - t *testing.T - tr *Transport - sc, cc net.Conn // server and client conn - fr *Framer // server's framer - client func() error - server func() error -} - -func newClientTester(t *testing.T) *clientTester { - var dialOnce struct { - sync.Mutex - dialed bool - } - ct := &clientTester{ - t: t, - } - ct.tr = &Transport{ - TLSClientConfig: tlsConfigInsecure, - DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) { - dialOnce.Lock() - defer dialOnce.Unlock() - if dialOnce.dialed { - return nil, errors.New("only one dial allowed in test mode") - } - dialOnce.dialed = true - return ct.cc, nil - }, - } - - ln := newLocalListener(t) - cc, err := net.Dial("tcp", ln.Addr().String()) - if err != nil { - t.Fatal(err) - - } - sc, err := ln.Accept() - if err != nil { - t.Fatal(err) - } - ln.Close() - ct.cc = cc - ct.sc = sc - ct.fr = NewFramer(sc, sc) - return ct -} - -func newLocalListener(t *testing.T) net.Listener { - ln, err := net.Listen("tcp4", "127.0.0.1:0") - if err == nil { - return ln - } - ln, err = net.Listen("tcp6", "[::1]:0") - if err != nil { - t.Fatal(err) - } - return ln -} - -func (ct *clientTester) greet(settings ...Setting) { - buf := make([]byte, len(ClientPreface)) - _, err := io.ReadFull(ct.sc, buf) - if err != nil { - ct.t.Fatalf("reading client preface: %v", err) - } - f, err := ct.fr.ReadFrame() - if err != nil { - ct.t.Fatalf("Reading client settings frame: %v", err) - } - if sf, ok := f.(*SettingsFrame); !ok { - ct.t.Fatalf("Wanted client settings frame; got %v", f) - _ = sf // stash it away? - } - if err := ct.fr.WriteSettings(settings...); err != nil { - ct.t.Fatal(err) - } - if err := ct.fr.WriteSettingsAck(); err != nil { - ct.t.Fatal(err) - } -} - -func (ct *clientTester) readNonSettingsFrame() (Frame, error) { - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return nil, err - } - if _, ok := f.(*SettingsFrame); ok { - continue - } - return f, nil - } -} - -func (ct *clientTester) cleanup() { - ct.tr.CloseIdleConnections() -} - -func (ct *clientTester) run() { - errc := make(chan error, 2) - ct.start("client", errc, ct.client) - ct.start("server", errc, ct.server) - defer ct.cleanup() - for i := 0; i < 2; i++ { - if err := <-errc; err != nil { - ct.t.Error(err) - return - } - } -} - -func (ct *clientTester) start(which string, errc chan<- error, fn func() error) { - go func() { - finished := false - var err error - defer func() { - if !finished { - err = fmt.Errorf("%s goroutine didn't finish.", which) - } else if err != nil { - err = fmt.Errorf("%s: %v", which, err) - } - errc <- err - }() - err = fn() - finished = true - }() -} - -func (ct *clientTester) readFrame() (Frame, error) { - return readFrameTimeout(ct.fr, 2*time.Second) -} - -func (ct *clientTester) firstHeaders() (*HeadersFrame, error) { - for { - f, err := ct.readFrame() - if err != nil { - return nil, fmt.Errorf("ReadFrame while waiting for Headers: %v", err) - } - switch f.(type) { - case *WindowUpdateFrame, *SettingsFrame: - continue - } - hf, ok := f.(*HeadersFrame) - if !ok { - return nil, fmt.Errorf("Got %T; want HeadersFrame", f) - } - return hf, nil - } -} - -type countingReader struct { - n *int64 -} - -func (r countingReader) Read(p []byte) (n int, err error) { - for i := range p { - p[i] = byte(i) - } - atomic.AddInt64(r.n, int64(len(p))) - return len(p), err -} - -func TestTransportReqBodyAfterResponse_200(t *testing.T) { testTransportReqBodyAfterResponse(t, 200) } -func TestTransportReqBodyAfterResponse_403(t *testing.T) { testTransportReqBodyAfterResponse(t, 403) } - -func testTransportReqBodyAfterResponse(t *testing.T, status int) { - const bodySize = 10 << 20 - clientDone := make(chan struct{}) - ct := newClientTester(t) - ct.client = func() error { - defer ct.cc.(*net.TCPConn).CloseWrite() - defer close(clientDone) - - var n int64 // atomic - req, err := http.NewRequest("PUT", "https://dummy.tld/", io.LimitReader(countingReader{&n}, bodySize)) - if err != nil { - return err - } - res, err := ct.tr.RoundTrip(req) - if err != nil { - return fmt.Errorf("RoundTrip: %v", err) - } - defer res.Body.Close() - if res.StatusCode != status { - return fmt.Errorf("status code = %v; want %v", res.StatusCode, status) - } - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - return fmt.Errorf("Slurp: %v", err) - } - if len(slurp) > 0 { - return fmt.Errorf("unexpected body: %q", slurp) - } - if status == 200 { - if got := atomic.LoadInt64(&n); got != bodySize { - return fmt.Errorf("For 200 response, Transport wrote %d bytes; want %d", got, bodySize) - } - } else { - if got := atomic.LoadInt64(&n); got == 0 || got >= bodySize { - return fmt.Errorf("For %d response, Transport wrote %d bytes; want (0,%d) exclusive", status, got, bodySize) - } - } - return nil - } - ct.server = func() error { - ct.greet() - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - var dataRecv int64 - var closed bool - for { - f, err := ct.fr.ReadFrame() - if err != nil { - select { - case <-clientDone: - // If the client's done, it - // will have reported any - // errors on its side. - return nil - default: - return err - } - } - //println(fmt.Sprintf("server got frame: %v", f)) - switch f := f.(type) { - case *WindowUpdateFrame, *SettingsFrame: - case *HeadersFrame: - if !f.HeadersEnded() { - return fmt.Errorf("headers should have END_HEADERS be ended: %v", f) - } - if f.StreamEnded() { - return fmt.Errorf("headers contains END_STREAM unexpectedly: %v", f) - } - case *DataFrame: - dataLen := len(f.Data()) - if dataLen > 0 { - if dataRecv == 0 { - enc.WriteField(hpack.HeaderField{Name: ":status", Value: strconv.Itoa(status)}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.StreamID, - EndHeaders: true, - EndStream: false, - BlockFragment: buf.Bytes(), - }) - } - if err := ct.fr.WriteWindowUpdate(0, uint32(dataLen)); err != nil { - return err - } - if err := ct.fr.WriteWindowUpdate(f.StreamID, uint32(dataLen)); err != nil { - return err - } - } - dataRecv += int64(dataLen) - - if !closed && ((status != 200 && dataRecv > 0) || - (status == 200 && dataRecv == bodySize)) { - closed = true - if err := ct.fr.WriteData(f.StreamID, true, nil); err != nil { - return err - } - } - default: - return fmt.Errorf("Unexpected client frame %v", f) - } - } - } - ct.run() -} - -// See golang.org/issue/13444 -func TestTransportFullDuplex(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) // redundant but for clarity - w.(http.Flusher).Flush() - io.Copy(flushWriter{w}, capitalizeReader{r.Body}) - fmt.Fprintf(w, "bye.\n") - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - c := &http.Client{Transport: tr} - - pr, pw := io.Pipe() - req, err := http.NewRequest("PUT", st.ts.URL, ioutil.NopCloser(pr)) - if err != nil { - t.Fatal(err) - } - req.ContentLength = -1 - res, err := c.Do(req) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() - if res.StatusCode != 200 { - t.Fatalf("StatusCode = %v; want %v", res.StatusCode, 200) - } - bs := bufio.NewScanner(res.Body) - want := func(v string) { - if !bs.Scan() { - t.Fatalf("wanted to read %q but Scan() = false, err = %v", v, bs.Err()) - } - } - write := func(v string) { - _, err := io.WriteString(pw, v) - if err != nil { - t.Fatalf("pipe write: %v", err) - } - } - write("foo\n") - want("FOO") - write("bar\n") - want("BAR") - pw.Close() - want("bye.") - if err := bs.Err(); err != nil { - t.Fatal(err) - } -} - -func TestTransportConnectRequest(t *testing.T) { - gotc := make(chan *http.Request, 1) - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - gotc <- r - }, optOnlyServer) - defer st.Close() - - u, err := url.Parse(st.ts.URL) - if err != nil { - t.Fatal(err) - } - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - c := &http.Client{Transport: tr} - - tests := []struct { - req *http.Request - want string - }{ - { - req: &http.Request{ - Method: "CONNECT", - Header: http.Header{}, - URL: u, - }, - want: u.Host, - }, - { - req: &http.Request{ - Method: "CONNECT", - Header: http.Header{}, - URL: u, - Host: "example.com:123", - }, - want: "example.com:123", - }, - } - - for i, tt := range tests { - res, err := c.Do(tt.req) - if err != nil { - t.Errorf("%d. RoundTrip = %v", i, err) - continue - } - res.Body.Close() - req := <-gotc - if req.Method != "CONNECT" { - t.Errorf("method = %q; want CONNECT", req.Method) - } - if req.Host != tt.want { - t.Errorf("Host = %q; want %q", req.Host, tt.want) - } - if req.URL.Host != tt.want { - t.Errorf("URL.Host = %q; want %q", req.URL.Host, tt.want) - } - } -} - -type headerType int - -const ( - noHeader headerType = iota // omitted - oneHeader - splitHeader // broken into continuation on purpose -) - -const ( - f0 = noHeader - f1 = oneHeader - f2 = splitHeader - d0 = false - d1 = true -) - -// Test all 36 combinations of response frame orders: -// (3 ways of 100-continue) * (2 ways of headers) * (2 ways of data) * (3 ways of trailers):func TestTransportResponsePattern_00f0(t *testing.T) { testTransportResponsePattern(h0, h1, false, h0) } -// Generated by http://play.golang.org/p/SScqYKJYXd -func TestTransportResPattern_c0h1d0t0(t *testing.T) { testTransportResPattern(t, f0, f1, d0, f0) } -func TestTransportResPattern_c0h1d0t1(t *testing.T) { testTransportResPattern(t, f0, f1, d0, f1) } -func TestTransportResPattern_c0h1d0t2(t *testing.T) { testTransportResPattern(t, f0, f1, d0, f2) } -func TestTransportResPattern_c0h1d1t0(t *testing.T) { testTransportResPattern(t, f0, f1, d1, f0) } -func TestTransportResPattern_c0h1d1t1(t *testing.T) { testTransportResPattern(t, f0, f1, d1, f1) } -func TestTransportResPattern_c0h1d1t2(t *testing.T) { testTransportResPattern(t, f0, f1, d1, f2) } -func TestTransportResPattern_c0h2d0t0(t *testing.T) { testTransportResPattern(t, f0, f2, d0, f0) } -func TestTransportResPattern_c0h2d0t1(t *testing.T) { testTransportResPattern(t, f0, f2, d0, f1) } -func TestTransportResPattern_c0h2d0t2(t *testing.T) { testTransportResPattern(t, f0, f2, d0, f2) } -func TestTransportResPattern_c0h2d1t0(t *testing.T) { testTransportResPattern(t, f0, f2, d1, f0) } -func TestTransportResPattern_c0h2d1t1(t *testing.T) { testTransportResPattern(t, f0, f2, d1, f1) } -func TestTransportResPattern_c0h2d1t2(t *testing.T) { testTransportResPattern(t, f0, f2, d1, f2) } -func TestTransportResPattern_c1h1d0t0(t *testing.T) { testTransportResPattern(t, f1, f1, d0, f0) } -func TestTransportResPattern_c1h1d0t1(t *testing.T) { testTransportResPattern(t, f1, f1, d0, f1) } -func TestTransportResPattern_c1h1d0t2(t *testing.T) { testTransportResPattern(t, f1, f1, d0, f2) } -func TestTransportResPattern_c1h1d1t0(t *testing.T) { testTransportResPattern(t, f1, f1, d1, f0) } -func TestTransportResPattern_c1h1d1t1(t *testing.T) { testTransportResPattern(t, f1, f1, d1, f1) } -func TestTransportResPattern_c1h1d1t2(t *testing.T) { testTransportResPattern(t, f1, f1, d1, f2) } -func TestTransportResPattern_c1h2d0t0(t *testing.T) { testTransportResPattern(t, f1, f2, d0, f0) } -func TestTransportResPattern_c1h2d0t1(t *testing.T) { testTransportResPattern(t, f1, f2, d0, f1) } -func TestTransportResPattern_c1h2d0t2(t *testing.T) { testTransportResPattern(t, f1, f2, d0, f2) } -func TestTransportResPattern_c1h2d1t0(t *testing.T) { testTransportResPattern(t, f1, f2, d1, f0) } -func TestTransportResPattern_c1h2d1t1(t *testing.T) { testTransportResPattern(t, f1, f2, d1, f1) } -func TestTransportResPattern_c1h2d1t2(t *testing.T) { testTransportResPattern(t, f1, f2, d1, f2) } -func TestTransportResPattern_c2h1d0t0(t *testing.T) { testTransportResPattern(t, f2, f1, d0, f0) } -func TestTransportResPattern_c2h1d0t1(t *testing.T) { testTransportResPattern(t, f2, f1, d0, f1) } -func TestTransportResPattern_c2h1d0t2(t *testing.T) { testTransportResPattern(t, f2, f1, d0, f2) } -func TestTransportResPattern_c2h1d1t0(t *testing.T) { testTransportResPattern(t, f2, f1, d1, f0) } -func TestTransportResPattern_c2h1d1t1(t *testing.T) { testTransportResPattern(t, f2, f1, d1, f1) } -func TestTransportResPattern_c2h1d1t2(t *testing.T) { testTransportResPattern(t, f2, f1, d1, f2) } -func TestTransportResPattern_c2h2d0t0(t *testing.T) { testTransportResPattern(t, f2, f2, d0, f0) } -func TestTransportResPattern_c2h2d0t1(t *testing.T) { testTransportResPattern(t, f2, f2, d0, f1) } -func TestTransportResPattern_c2h2d0t2(t *testing.T) { testTransportResPattern(t, f2, f2, d0, f2) } -func TestTransportResPattern_c2h2d1t0(t *testing.T) { testTransportResPattern(t, f2, f2, d1, f0) } -func TestTransportResPattern_c2h2d1t1(t *testing.T) { testTransportResPattern(t, f2, f2, d1, f1) } -func TestTransportResPattern_c2h2d1t2(t *testing.T) { testTransportResPattern(t, f2, f2, d1, f2) } - -func testTransportResPattern(t *testing.T, expect100Continue, resHeader headerType, withData bool, trailers headerType) { - const reqBody = "some request body" - const resBody = "some response body" - - if resHeader == noHeader { - // TODO: test 100-continue followed by immediate - // server stream reset, without headers in the middle? - panic("invalid combination") - } - - ct := newClientTester(t) - ct.client = func() error { - req, _ := http.NewRequest("POST", "https://dummy.tld/", strings.NewReader(reqBody)) - if expect100Continue != noHeader { - req.Header.Set("Expect", "100-continue") - } - res, err := ct.tr.RoundTrip(req) - if err != nil { - return fmt.Errorf("RoundTrip: %v", err) - } - defer res.Body.Close() - if res.StatusCode != 200 { - return fmt.Errorf("status code = %v; want 200", res.StatusCode) - } - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - return fmt.Errorf("Slurp: %v", err) - } - wantBody := resBody - if !withData { - wantBody = "" - } - if string(slurp) != wantBody { - return fmt.Errorf("body = %q; want %q", slurp, wantBody) - } - if trailers == noHeader { - if len(res.Trailer) > 0 { - t.Errorf("Trailer = %v; want none", res.Trailer) - } - } else { - want := http.Header{"Some-Trailer": {"some-value"}} - if !reflect.DeepEqual(res.Trailer, want) { - t.Errorf("Trailer = %v; want %v", res.Trailer, want) - } - } - return nil - } - ct.server = func() error { - ct.greet() - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return err - } - endStream := false - send := func(mode headerType) { - hbf := buf.Bytes() - switch mode { - case oneHeader: - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.Header().StreamID, - EndHeaders: true, - EndStream: endStream, - BlockFragment: hbf, - }) - case splitHeader: - if len(hbf) < 2 { - panic("too small") - } - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.Header().StreamID, - EndHeaders: false, - EndStream: endStream, - BlockFragment: hbf[:1], - }) - ct.fr.WriteContinuation(f.Header().StreamID, true, hbf[1:]) - default: - panic("bogus mode") - } - } - switch f := f.(type) { - case *WindowUpdateFrame, *SettingsFrame: - case *DataFrame: - if !f.StreamEnded() { - // No need to send flow control tokens. The test request body is tiny. - continue - } - // Response headers (1+ frames; 1 or 2 in this test, but never 0) - { - buf.Reset() - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: "x-foo", Value: "blah"}) - enc.WriteField(hpack.HeaderField{Name: "x-bar", Value: "more"}) - if trailers != noHeader { - enc.WriteField(hpack.HeaderField{Name: "trailer", Value: "some-trailer"}) - } - endStream = withData == false && trailers == noHeader - send(resHeader) - } - if withData { - endStream = trailers == noHeader - ct.fr.WriteData(f.StreamID, endStream, []byte(resBody)) - } - if trailers != noHeader { - endStream = true - buf.Reset() - enc.WriteField(hpack.HeaderField{Name: "some-trailer", Value: "some-value"}) - send(trailers) - } - if endStream { - return nil - } - case *HeadersFrame: - if expect100Continue != noHeader { - buf.Reset() - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "100"}) - send(expect100Continue) - } - } - } - } - ct.run() -} - -func TestTransportReceiveUndeclaredTrailer(t *testing.T) { - ct := newClientTester(t) - ct.client = func() error { - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if err != nil { - return fmt.Errorf("RoundTrip: %v", err) - } - defer res.Body.Close() - if res.StatusCode != 200 { - return fmt.Errorf("status code = %v; want 200", res.StatusCode) - } - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - return fmt.Errorf("res.Body ReadAll error = %q, %v; want %v", slurp, err, nil) - } - if len(slurp) > 0 { - return fmt.Errorf("body = %q; want nothing", slurp) - } - if _, ok := res.Trailer["Some-Trailer"]; !ok { - return fmt.Errorf("expected Some-Trailer") - } - return nil - } - ct.server = func() error { - ct.greet() - - var n int - var hf *HeadersFrame - for hf == nil && n < 10 { - f, err := ct.fr.ReadFrame() - if err != nil { - return err - } - hf, _ = f.(*HeadersFrame) - n++ - } - - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - - // send headers without Trailer header - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: false, - BlockFragment: buf.Bytes(), - }) - - // send trailers - buf.Reset() - enc.WriteField(hpack.HeaderField{Name: "some-trailer", Value: "I'm an undeclared Trailer!"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: true, - BlockFragment: buf.Bytes(), - }) - return nil - } - ct.run() -} - -func TestTransportInvalidTrailer_Pseudo1(t *testing.T) { - testTransportInvalidTrailer_Pseudo(t, oneHeader) -} -func TestTransportInvalidTrailer_Pseudo2(t *testing.T) { - testTransportInvalidTrailer_Pseudo(t, splitHeader) -} -func testTransportInvalidTrailer_Pseudo(t *testing.T, trailers headerType) { - testInvalidTrailer(t, trailers, pseudoHeaderError(":colon"), func(enc *hpack.Encoder) { - enc.WriteField(hpack.HeaderField{Name: ":colon", Value: "foo"}) - enc.WriteField(hpack.HeaderField{Name: "foo", Value: "bar"}) - }) -} - -func TestTransportInvalidTrailer_Capital1(t *testing.T) { - testTransportInvalidTrailer_Capital(t, oneHeader) -} -func TestTransportInvalidTrailer_Capital2(t *testing.T) { - testTransportInvalidTrailer_Capital(t, splitHeader) -} -func testTransportInvalidTrailer_Capital(t *testing.T, trailers headerType) { - testInvalidTrailer(t, trailers, headerFieldNameError("Capital"), func(enc *hpack.Encoder) { - enc.WriteField(hpack.HeaderField{Name: "foo", Value: "bar"}) - enc.WriteField(hpack.HeaderField{Name: "Capital", Value: "bad"}) - }) -} -func TestTransportInvalidTrailer_EmptyFieldName(t *testing.T) { - testInvalidTrailer(t, oneHeader, headerFieldNameError(""), func(enc *hpack.Encoder) { - enc.WriteField(hpack.HeaderField{Name: "", Value: "bad"}) - }) -} -func TestTransportInvalidTrailer_BinaryFieldValue(t *testing.T) { - testInvalidTrailer(t, oneHeader, headerFieldValueError("has\nnewline"), func(enc *hpack.Encoder) { - enc.WriteField(hpack.HeaderField{Name: "x", Value: "has\nnewline"}) - }) -} - -func testInvalidTrailer(t *testing.T, trailers headerType, wantErr error, writeTrailer func(*hpack.Encoder)) { - ct := newClientTester(t) - ct.client = func() error { - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if err != nil { - return fmt.Errorf("RoundTrip: %v", err) - } - defer res.Body.Close() - if res.StatusCode != 200 { - return fmt.Errorf("status code = %v; want 200", res.StatusCode) - } - slurp, err := ioutil.ReadAll(res.Body) - se, ok := err.(StreamError) - if !ok || se.Cause != wantErr { - return fmt.Errorf("res.Body ReadAll error = %q, %#v; want StreamError with cause %T, %#v", slurp, err, wantErr, wantErr) - } - if len(slurp) > 0 { - return fmt.Errorf("body = %q; want nothing", slurp) - } - return nil - } - ct.server = func() error { - ct.greet() - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return err - } - switch f := f.(type) { - case *HeadersFrame: - var endStream bool - send := func(mode headerType) { - hbf := buf.Bytes() - switch mode { - case oneHeader: - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.StreamID, - EndHeaders: true, - EndStream: endStream, - BlockFragment: hbf, - }) - case splitHeader: - if len(hbf) < 2 { - panic("too small") - } - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.StreamID, - EndHeaders: false, - EndStream: endStream, - BlockFragment: hbf[:1], - }) - ct.fr.WriteContinuation(f.StreamID, true, hbf[1:]) - default: - panic("bogus mode") - } - } - // Response headers (1+ frames; 1 or 2 in this test, but never 0) - { - buf.Reset() - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: "trailer", Value: "declared"}) - endStream = false - send(oneHeader) - } - // Trailers: - { - endStream = true - buf.Reset() - writeTrailer(enc) - send(trailers) - } - return nil - } - } - } - ct.run() -} - -// headerListSize returns the HTTP2 header list size of h. -// http://httpwg.org/specs/rfc7540.html#SETTINGS_MAX_HEADER_LIST_SIZE -// http://httpwg.org/specs/rfc7540.html#MaxHeaderBlock -func headerListSize(h http.Header) (size uint32) { - for k, vv := range h { - for _, v := range vv { - hf := hpack.HeaderField{Name: k, Value: v} - size += hf.Size() - } - } - return size -} - -// padHeaders adds data to an http.Header until headerListSize(h) == -// limit. Due to the way header list sizes are calculated, padHeaders -// cannot add fewer than len("Pad-Headers") + 32 bytes to h, and will -// call t.Fatal if asked to do so. PadHeaders first reserves enough -// space for an empty "Pad-Headers" key, then adds as many copies of -// filler as possible. Any remaining bytes necessary to push the -// header list size up to limit are added to h["Pad-Headers"]. -func padHeaders(t *testing.T, h http.Header, limit uint64, filler string) { - if limit > 0xffffffff { - t.Fatalf("padHeaders: refusing to pad to more than 2^32-1 bytes. limit = %v", limit) - } - hf := hpack.HeaderField{Name: "Pad-Headers", Value: ""} - minPadding := uint64(hf.Size()) - size := uint64(headerListSize(h)) - - minlimit := size + minPadding - if limit < minlimit { - t.Fatalf("padHeaders: limit %v < %v", limit, minlimit) - } - - // Use a fixed-width format for name so that fieldSize - // remains constant. - nameFmt := "Pad-Headers-%06d" - hf = hpack.HeaderField{Name: fmt.Sprintf(nameFmt, 1), Value: filler} - fieldSize := uint64(hf.Size()) - - // Add as many complete filler values as possible, leaving - // room for at least one empty "Pad-Headers" key. - limit = limit - minPadding - for i := 0; size+fieldSize < limit; i++ { - name := fmt.Sprintf(nameFmt, i) - h.Add(name, filler) - size += fieldSize - } - - // Add enough bytes to reach limit. - remain := limit - size - lastValue := strings.Repeat("*", int(remain)) - h.Add("Pad-Headers", lastValue) -} - -func TestPadHeaders(t *testing.T) { - check := func(h http.Header, limit uint32, fillerLen int) { - if h == nil { - h = make(http.Header) - } - filler := strings.Repeat("f", fillerLen) - padHeaders(t, h, uint64(limit), filler) - gotSize := headerListSize(h) - if gotSize != limit { - t.Errorf("Got size = %v; want %v", gotSize, limit) - } - } - // Try all possible combinations for small fillerLen and limit. - hf := hpack.HeaderField{Name: "Pad-Headers", Value: ""} - minLimit := hf.Size() - for limit := minLimit; limit <= 128; limit++ { - for fillerLen := 0; uint32(fillerLen) <= limit; fillerLen++ { - check(nil, limit, fillerLen) - } - } - - // Try a few tests with larger limits, plus cumulative - // tests. Since these tests are cumulative, tests[i+1].limit - // must be >= tests[i].limit + minLimit. See the comment on - // padHeaders for more info on why the limit arg has this - // restriction. - tests := []struct { - fillerLen int - limit uint32 - }{ - { - fillerLen: 64, - limit: 1024, - }, - { - fillerLen: 1024, - limit: 1286, - }, - { - fillerLen: 256, - limit: 2048, - }, - { - fillerLen: 1024, - limit: 10 * 1024, - }, - { - fillerLen: 1023, - limit: 11 * 1024, - }, - } - h := make(http.Header) - for _, tc := range tests { - check(nil, tc.limit, tc.fillerLen) - check(h, tc.limit, tc.fillerLen) - } -} - -func TestTransportChecksRequestHeaderListSize(t *testing.T) { - st := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - // Consume body & force client to send - // trailers before writing response. - // ioutil.ReadAll returns non-nil err for - // requests that attempt to send greater than - // maxHeaderListSize bytes of trailers, since - // those requests generate a stream reset. - ioutil.ReadAll(r.Body) - r.Body.Close() - }, - func(ts *httptest.Server) { - ts.Config.MaxHeaderBytes = 16 << 10 - }, - optOnlyServer, - optQuiet, - ) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - checkRoundTrip := func(req *http.Request, wantErr error, desc string) { - res, err := tr.RoundTrip(req) - if err != wantErr { - if res != nil { - res.Body.Close() - } - t.Errorf("%v: RoundTrip err = %v; want %v", desc, err, wantErr) - return - } - if err == nil { - if res == nil { - t.Errorf("%v: response nil; want non-nil.", desc) - return - } - defer res.Body.Close() - if res.StatusCode != http.StatusOK { - t.Errorf("%v: response status = %v; want %v", desc, res.StatusCode, http.StatusOK) - } - return - } - if res != nil { - t.Errorf("%v: RoundTrip err = %v but response non-nil", desc, err) - } - } - headerListSizeForRequest := func(req *http.Request) (size uint64) { - contentLen := actualContentLength(req) - trailers, err := commaSeparatedTrailers(req) - if err != nil { - t.Fatalf("headerListSizeForRequest: %v", err) - } - cc := &ClientConn{peerMaxHeaderListSize: 0xffffffffffffffff} - cc.henc = hpack.NewEncoder(&cc.hbuf) - cc.mu.Lock() - hdrs, err := cc.encodeHeaders(req, true, trailers, contentLen) - cc.mu.Unlock() - if err != nil { - t.Fatalf("headerListSizeForRequest: %v", err) - } - hpackDec := hpack.NewDecoder(initialHeaderTableSize, func(hf hpack.HeaderField) { - size += uint64(hf.Size()) - }) - if len(hdrs) > 0 { - if _, err := hpackDec.Write(hdrs); err != nil { - t.Fatalf("headerListSizeForRequest: %v", err) - } - } - return size - } - // Create a new Request for each test, rather than reusing the - // same Request, to avoid a race when modifying req.Headers. - // See https://github.com/golang/go/issues/21316 - newRequest := func() *http.Request { - // Body must be non-nil to enable writing trailers. - body := strings.NewReader("hello") - req, err := http.NewRequest("POST", st.ts.URL, body) - if err != nil { - t.Fatalf("newRequest: NewRequest: %v", err) - } - return req - } - - // Make an arbitrary request to ensure we get the server's - // settings frame and initialize peerMaxHeaderListSize. - req := newRequest() - checkRoundTrip(req, nil, "Initial request") - - // Get the ClientConn associated with the request and validate - // peerMaxHeaderListSize. - addr := authorityAddr(req.URL.Scheme, req.URL.Host) - cc, err := tr.connPool().GetClientConn(req, addr) - if err != nil { - t.Fatalf("GetClientConn: %v", err) - } - cc.mu.Lock() - peerSize := cc.peerMaxHeaderListSize - cc.mu.Unlock() - st.scMu.Lock() - wantSize := uint64(st.sc.maxHeaderListSize()) - st.scMu.Unlock() - if peerSize != wantSize { - t.Errorf("peerMaxHeaderListSize = %v; want %v", peerSize, wantSize) - } - - // Sanity check peerSize. (*serverConn) maxHeaderListSize adds - // 320 bytes of padding. - wantHeaderBytes := uint64(st.ts.Config.MaxHeaderBytes) + 320 - if peerSize != wantHeaderBytes { - t.Errorf("peerMaxHeaderListSize = %v; want %v.", peerSize, wantHeaderBytes) - } - - // Pad headers & trailers, but stay under peerSize. - req = newRequest() - req.Header = make(http.Header) - req.Trailer = make(http.Header) - filler := strings.Repeat("*", 1024) - padHeaders(t, req.Trailer, peerSize, filler) - // cc.encodeHeaders adds some default headers to the request, - // so we need to leave room for those. - defaultBytes := headerListSizeForRequest(req) - padHeaders(t, req.Header, peerSize-defaultBytes, filler) - checkRoundTrip(req, nil, "Headers & Trailers under limit") - - // Add enough header bytes to push us over peerSize. - req = newRequest() - req.Header = make(http.Header) - padHeaders(t, req.Header, peerSize, filler) - checkRoundTrip(req, errRequestHeaderListSize, "Headers over limit") - - // Push trailers over the limit. - req = newRequest() - req.Trailer = make(http.Header) - padHeaders(t, req.Trailer, peerSize+1, filler) - checkRoundTrip(req, errRequestHeaderListSize, "Trailers over limit") - - // Send headers with a single large value. - req = newRequest() - filler = strings.Repeat("*", int(peerSize)) - req.Header = make(http.Header) - req.Header.Set("Big", filler) - checkRoundTrip(req, errRequestHeaderListSize, "Single large header") - - // Send trailers with a single large value. - req = newRequest() - req.Trailer = make(http.Header) - req.Trailer.Set("Big", filler) - checkRoundTrip(req, errRequestHeaderListSize, "Single large trailer") -} - -func TestTransportChecksResponseHeaderListSize(t *testing.T) { - ct := newClientTester(t) - ct.client = func() error { - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if err != errResponseHeaderListSize { - if res != nil { - res.Body.Close() - } - size := int64(0) - for k, vv := range res.Header { - for _, v := range vv { - size += int64(len(k)) + int64(len(v)) + 32 - } - } - return fmt.Errorf("RoundTrip Error = %v (and %d bytes of response headers); want errResponseHeaderListSize", err, size) - } - return nil - } - ct.server = func() error { - ct.greet() - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return err - } - switch f := f.(type) { - case *HeadersFrame: - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - large := strings.Repeat("a", 1<<10) - for i := 0; i < 5042; i++ { - enc.WriteField(hpack.HeaderField{Name: large, Value: large}) - } - if size, want := buf.Len(), 6329; size != want { - // Note: this number might change if - // our hpack implementation - // changes. That's fine. This is - // just a sanity check that our - // response can fit in a single - // header block fragment frame. - return fmt.Errorf("encoding over 10MB of duplicate keypairs took %d bytes; expected %d", size, want) - } - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.StreamID, - EndHeaders: true, - EndStream: true, - BlockFragment: buf.Bytes(), - }) - return nil - } - } - } - ct.run() -} - -// Test that the Transport returns a typed error from Response.Body.Read calls -// when the server sends an error. (here we use a panic, since that should generate -// a stream error, but others like cancel should be similar) -func TestTransportBodyReadErrorType(t *testing.T) { - doPanic := make(chan bool, 1) - st := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - w.(http.Flusher).Flush() // force headers out - <-doPanic - panic("boom") - }, - optOnlyServer, - optQuiet, - ) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - c := &http.Client{Transport: tr} - - res, err := c.Get(st.ts.URL) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() - doPanic <- true - buf := make([]byte, 100) - n, err := res.Body.Read(buf) - want := StreamError{StreamID: 0x1, Code: 0x2} - if !reflect.DeepEqual(want, err) { - t.Errorf("Read = %v, %#v; want error %#v", n, err, want) - } -} - -// golang.org/issue/13924 -// This used to fail after many iterations, especially with -race: -// go test -v -run=TestTransportDoubleCloseOnWriteError -count=500 -race -func TestTransportDoubleCloseOnWriteError(t *testing.T) { - var ( - mu sync.Mutex - conn net.Conn // to close if set - ) - - st := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - mu.Lock() - defer mu.Unlock() - if conn != nil { - conn.Close() - } - }, - optOnlyServer, - ) - defer st.Close() - - tr := &Transport{ - TLSClientConfig: tlsConfigInsecure, - DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) { - tc, err := tls.Dial(network, addr, cfg) - if err != nil { - return nil, err - } - mu.Lock() - defer mu.Unlock() - conn = tc - return tc, nil - }, - } - defer tr.CloseIdleConnections() - c := &http.Client{Transport: tr} - c.Get(st.ts.URL) -} - -// Test that the http1 Transport.DisableKeepAlives option is respected -// and connections are closed as soon as idle. -// See golang.org/issue/14008 -func TestTransportDisableKeepAlives(t *testing.T) { - st := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, "hi") - }, - optOnlyServer, - ) - defer st.Close() - - connClosed := make(chan struct{}) // closed on tls.Conn.Close - tr := &Transport{ - t1: &http.Transport{ - DisableKeepAlives: true, - }, - TLSClientConfig: tlsConfigInsecure, - DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) { - tc, err := tls.Dial(network, addr, cfg) - if err != nil { - return nil, err - } - return &noteCloseConn{Conn: tc, closefn: func() { close(connClosed) }}, nil - }, - } - c := &http.Client{Transport: tr} - res, err := c.Get(st.ts.URL) - if err != nil { - t.Fatal(err) - } - if _, err := ioutil.ReadAll(res.Body); err != nil { - t.Fatal(err) - } - defer res.Body.Close() - - select { - case <-connClosed: - case <-time.After(1 * time.Second): - t.Errorf("timeout") - } - -} - -// Test concurrent requests with Transport.DisableKeepAlives. We can share connections, -// but when things are totally idle, it still needs to close. -func TestTransportDisableKeepAlives_Concurrency(t *testing.T) { - const D = 25 * time.Millisecond - st := newServerTester(t, - func(w http.ResponseWriter, r *http.Request) { - time.Sleep(D) - io.WriteString(w, "hi") - }, - optOnlyServer, - ) - defer st.Close() - - var dials int32 - var conns sync.WaitGroup - tr := &Transport{ - t1: &http.Transport{ - DisableKeepAlives: true, - }, - TLSClientConfig: tlsConfigInsecure, - DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) { - tc, err := tls.Dial(network, addr, cfg) - if err != nil { - return nil, err - } - atomic.AddInt32(&dials, 1) - conns.Add(1) - return &noteCloseConn{Conn: tc, closefn: func() { conns.Done() }}, nil - }, - } - c := &http.Client{Transport: tr} - var reqs sync.WaitGroup - const N = 20 - for i := 0; i < N; i++ { - reqs.Add(1) - if i == N-1 { - // For the final request, try to make all the - // others close. This isn't verified in the - // count, other than the Log statement, since - // it's so timing dependent. This test is - // really to make sure we don't interrupt a - // valid request. - time.Sleep(D * 2) - } - go func() { - defer reqs.Done() - res, err := c.Get(st.ts.URL) - if err != nil { - t.Error(err) - return - } - if _, err := ioutil.ReadAll(res.Body); err != nil { - t.Error(err) - return - } - res.Body.Close() - }() - } - reqs.Wait() - conns.Wait() - t.Logf("did %d dials, %d requests", atomic.LoadInt32(&dials), N) -} - -type noteCloseConn struct { - net.Conn - onceClose sync.Once - closefn func() -} - -func (c *noteCloseConn) Close() error { - c.onceClose.Do(c.closefn) - return c.Conn.Close() -} - -func isTimeout(err error) bool { - switch err := err.(type) { - case nil: - return false - case *url.Error: - return isTimeout(err.Err) - case net.Error: - return err.Timeout() - } - return false -} - -// Test that the http1 Transport.ResponseHeaderTimeout option and cancel is sent. -func TestTransportResponseHeaderTimeout_NoBody(t *testing.T) { - testTransportResponseHeaderTimeout(t, false) -} -func TestTransportResponseHeaderTimeout_Body(t *testing.T) { - testTransportResponseHeaderTimeout(t, true) -} - -func testTransportResponseHeaderTimeout(t *testing.T, body bool) { - ct := newClientTester(t) - ct.tr.t1 = &http.Transport{ - ResponseHeaderTimeout: 5 * time.Millisecond, - } - ct.client = func() error { - c := &http.Client{Transport: ct.tr} - var err error - var n int64 - const bodySize = 4 << 20 - if body { - _, err = c.Post("https://dummy.tld/", "text/foo", io.LimitReader(countingReader{&n}, bodySize)) - } else { - _, err = c.Get("https://dummy.tld/") - } - if !isTimeout(err) { - t.Errorf("client expected timeout error; got %#v", err) - } - if body && n != bodySize { - t.Errorf("only read %d bytes of body; want %d", n, bodySize) - } - return nil - } - ct.server = func() error { - ct.greet() - for { - f, err := ct.fr.ReadFrame() - if err != nil { - t.Logf("ReadFrame: %v", err) - return nil - } - switch f := f.(type) { - case *DataFrame: - dataLen := len(f.Data()) - if dataLen > 0 { - if err := ct.fr.WriteWindowUpdate(0, uint32(dataLen)); err != nil { - return err - } - if err := ct.fr.WriteWindowUpdate(f.StreamID, uint32(dataLen)); err != nil { - return err - } - } - case *RSTStreamFrame: - if f.StreamID == 1 && f.ErrCode == ErrCodeCancel { - return nil - } - } - } - } - ct.run() -} - -func TestTransportDisableCompression(t *testing.T) { - const body = "sup" - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - want := http.Header{ - "User-Agent": []string{"Go-http-client/2.0"}, - } - if !reflect.DeepEqual(r.Header, want) { - t.Errorf("request headers = %v; want %v", r.Header, want) - } - }, optOnlyServer) - defer st.Close() - - tr := &Transport{ - TLSClientConfig: tlsConfigInsecure, - t1: &http.Transport{ - DisableCompression: true, - }, - } - defer tr.CloseIdleConnections() - - req, err := http.NewRequest("GET", st.ts.URL, nil) - if err != nil { - t.Fatal(err) - } - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - defer res.Body.Close() -} - -// RFC 7540 section 8.1.2.2 -func TestTransportRejectsConnHeaders(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - var got []string - for k := range r.Header { - got = append(got, k) - } - sort.Strings(got) - w.Header().Set("Got-Header", strings.Join(got, ",")) - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - tests := []struct { - key string - value []string - want string - }{ - { - key: "Upgrade", - value: []string{"anything"}, - want: "ERROR: http2: invalid Upgrade request header: [\"anything\"]", - }, - { - key: "Connection", - value: []string{"foo"}, - want: "ERROR: http2: invalid Connection request header: [\"foo\"]", - }, - { - key: "Connection", - value: []string{"close"}, - want: "Accept-Encoding,User-Agent", - }, - { - key: "Connection", - value: []string{"close", "something-else"}, - want: "ERROR: http2: invalid Connection request header: [\"close\" \"something-else\"]", - }, - { - key: "Connection", - value: []string{"keep-alive"}, - want: "Accept-Encoding,User-Agent", - }, - { - key: "Proxy-Connection", // just deleted and ignored - value: []string{"keep-alive"}, - want: "Accept-Encoding,User-Agent", - }, - { - key: "Transfer-Encoding", - value: []string{""}, - want: "Accept-Encoding,User-Agent", - }, - { - key: "Transfer-Encoding", - value: []string{"foo"}, - want: "ERROR: http2: invalid Transfer-Encoding request header: [\"foo\"]", - }, - { - key: "Transfer-Encoding", - value: []string{"chunked"}, - want: "Accept-Encoding,User-Agent", - }, - { - key: "Transfer-Encoding", - value: []string{"chunked", "other"}, - want: "ERROR: http2: invalid Transfer-Encoding request header: [\"chunked\" \"other\"]", - }, - { - key: "Content-Length", - value: []string{"123"}, - want: "Accept-Encoding,User-Agent", - }, - { - key: "Keep-Alive", - value: []string{"doop"}, - want: "Accept-Encoding,User-Agent", - }, - } - - for _, tt := range tests { - req, _ := http.NewRequest("GET", st.ts.URL, nil) - req.Header[tt.key] = tt.value - res, err := tr.RoundTrip(req) - var got string - if err != nil { - got = fmt.Sprintf("ERROR: %v", err) - } else { - got = res.Header.Get("Got-Header") - res.Body.Close() - } - if got != tt.want { - t.Errorf("For key %q, value %q, got = %q; want %q", tt.key, tt.value, got, tt.want) - } - } -} - -// golang.org/issue/14048 -func TestTransportFailsOnInvalidHeaders(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - var got []string - for k := range r.Header { - got = append(got, k) - } - sort.Strings(got) - w.Header().Set("Got-Header", strings.Join(got, ",")) - }, optOnlyServer) - defer st.Close() - - tests := [...]struct { - h http.Header - wantErr string - }{ - 0: { - h: http.Header{"with space": {"foo"}}, - wantErr: `invalid HTTP header name "with space"`, - }, - 1: { - h: http.Header{"name": {"Брэд"}}, - wantErr: "", // okay - }, - 2: { - h: http.Header{"имя": {"Brad"}}, - wantErr: `invalid HTTP header name "имя"`, - }, - 3: { - h: http.Header{"foo": {"foo\x01bar"}}, - wantErr: `invalid HTTP header value "foo\x01bar" for header "foo"`, - }, - } - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - for i, tt := range tests { - req, _ := http.NewRequest("GET", st.ts.URL, nil) - req.Header = tt.h - res, err := tr.RoundTrip(req) - var bad bool - if tt.wantErr == "" { - if err != nil { - bad = true - t.Errorf("case %d: error = %v; want no error", i, err) - } - } else { - if !strings.Contains(fmt.Sprint(err), tt.wantErr) { - bad = true - t.Errorf("case %d: error = %v; want error %q", i, err, tt.wantErr) - } - } - if err == nil { - if bad { - t.Logf("case %d: server got headers %q", i, res.Header.Get("Got-Header")) - } - res.Body.Close() - } - } -} - -// Tests that gzipReader doesn't crash on a second Read call following -// the first Read call's gzip.NewReader returning an error. -func TestGzipReader_DoubleReadCrash(t *testing.T) { - gz := &gzipReader{ - body: ioutil.NopCloser(strings.NewReader("0123456789")), - } - var buf [1]byte - n, err1 := gz.Read(buf[:]) - if n != 0 || !strings.Contains(fmt.Sprint(err1), "invalid header") { - t.Fatalf("Read = %v, %v; want 0, invalid header", n, err1) - } - n, err2 := gz.Read(buf[:]) - if n != 0 || err2 != err1 { - t.Fatalf("second Read = %v, %v; want 0, %v", n, err2, err1) - } -} - -func TestTransportNewTLSConfig(t *testing.T) { - tests := [...]struct { - conf *tls.Config - host string - want *tls.Config - }{ - // Normal case. - 0: { - conf: nil, - host: "foo.com", - want: &tls.Config{ - ServerName: "foo.com", - NextProtos: []string{NextProtoTLS}, - }, - }, - - // User-provided name (bar.com) takes precedence: - 1: { - conf: &tls.Config{ - ServerName: "bar.com", - }, - host: "foo.com", - want: &tls.Config{ - ServerName: "bar.com", - NextProtos: []string{NextProtoTLS}, - }, - }, - - // NextProto is prepended: - 2: { - conf: &tls.Config{ - NextProtos: []string{"foo", "bar"}, - }, - host: "example.com", - want: &tls.Config{ - ServerName: "example.com", - NextProtos: []string{NextProtoTLS, "foo", "bar"}, - }, - }, - - // NextProto is not duplicated: - 3: { - conf: &tls.Config{ - NextProtos: []string{"foo", "bar", NextProtoTLS}, - }, - host: "example.com", - want: &tls.Config{ - ServerName: "example.com", - NextProtos: []string{"foo", "bar", NextProtoTLS}, - }, - }, - } - for i, tt := range tests { - // Ignore the session ticket keys part, which ends up populating - // unexported fields in the Config: - if tt.conf != nil { - tt.conf.SessionTicketsDisabled = true - } - - tr := &Transport{TLSClientConfig: tt.conf} - got := tr.newTLSConfig(tt.host) - - got.SessionTicketsDisabled = false - - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("%d. got %#v; want %#v", i, got, tt.want) - } - } -} - -// The Google GFE responds to HEAD requests with a HEADERS frame -// without END_STREAM, followed by a 0-length DATA frame with -// END_STREAM. Make sure we don't get confused by that. (We did.) -func TestTransportReadHeadResponse(t *testing.T) { - ct := newClientTester(t) - clientDone := make(chan struct{}) - ct.client = func() error { - defer close(clientDone) - req, _ := http.NewRequest("HEAD", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if err != nil { - return err - } - if res.ContentLength != 123 { - return fmt.Errorf("Content-Length = %d; want 123", res.ContentLength) - } - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - return fmt.Errorf("ReadAll: %v", err) - } - if len(slurp) > 0 { - return fmt.Errorf("Unexpected non-empty ReadAll body: %q", slurp) - } - return nil - } - ct.server = func() error { - ct.greet() - for { - f, err := ct.fr.ReadFrame() - if err != nil { - t.Logf("ReadFrame: %v", err) - return nil - } - hf, ok := f.(*HeadersFrame) - if !ok { - continue - } - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: "content-length", Value: "123"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: false, // as the GFE does - BlockFragment: buf.Bytes(), - }) - ct.fr.WriteData(hf.StreamID, true, nil) - - <-clientDone - return nil - } - } - ct.run() -} - -func TestTransportReadHeadResponseWithBody(t *testing.T) { - // This test use not valid response format. - // Discarding logger output to not spam tests output. - log.SetOutput(ioutil.Discard) - defer log.SetOutput(os.Stderr) - - response := "redirecting to /elsewhere" - ct := newClientTester(t) - clientDone := make(chan struct{}) - ct.client = func() error { - defer close(clientDone) - req, _ := http.NewRequest("HEAD", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if err != nil { - return err - } - if res.ContentLength != int64(len(response)) { - return fmt.Errorf("Content-Length = %d; want %d", res.ContentLength, len(response)) - } - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - return fmt.Errorf("ReadAll: %v", err) - } - if len(slurp) > 0 { - return fmt.Errorf("Unexpected non-empty ReadAll body: %q", slurp) - } - return nil - } - ct.server = func() error { - ct.greet() - for { - f, err := ct.fr.ReadFrame() - if err != nil { - t.Logf("ReadFrame: %v", err) - return nil - } - hf, ok := f.(*HeadersFrame) - if !ok { - continue - } - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: "content-length", Value: strconv.Itoa(len(response))}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: false, - BlockFragment: buf.Bytes(), - }) - ct.fr.WriteData(hf.StreamID, true, []byte(response)) - - <-clientDone - return nil - } - } - ct.run() -} - -type neverEnding byte - -func (b neverEnding) Read(p []byte) (int, error) { - for i := range p { - p[i] = byte(b) - } - return len(p), nil -} - -// golang.org/issue/15425: test that a handler closing the request -// body doesn't terminate the stream to the peer. (It just stops -// readability from the handler's side, and eventually the client -// runs out of flow control tokens) -func TestTransportHandlerBodyClose(t *testing.T) { - const bodySize = 10 << 20 - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - r.Body.Close() - io.Copy(w, io.LimitReader(neverEnding('A'), bodySize)) - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - g0 := runtime.NumGoroutine() - - const numReq = 10 - for i := 0; i < numReq; i++ { - req, err := http.NewRequest("POST", st.ts.URL, struct{ io.Reader }{io.LimitReader(neverEnding('A'), bodySize)}) - if err != nil { - t.Fatal(err) - } - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - n, err := io.Copy(ioutil.Discard, res.Body) - res.Body.Close() - if n != bodySize || err != nil { - t.Fatalf("req#%d: Copy = %d, %v; want %d, nil", i, n, err, bodySize) - } - } - tr.CloseIdleConnections() - - gd := runtime.NumGoroutine() - g0 - if gd > numReq/2 { - t.Errorf("appeared to leak goroutines") - } - -} - -// https://golang.org/issue/15930 -func TestTransportFlowControl(t *testing.T) { - const bufLen = 64 << 10 - var total int64 = 100 << 20 // 100MB - if testing.Short() { - total = 10 << 20 - } - - var wrote int64 // updated atomically - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - b := make([]byte, bufLen) - for wrote < total { - n, err := w.Write(b) - atomic.AddInt64(&wrote, int64(n)) - if err != nil { - t.Errorf("ResponseWriter.Write error: %v", err) - break - } - w.(http.Flusher).Flush() - } - }, optOnlyServer) - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - req, err := http.NewRequest("GET", st.ts.URL, nil) - if err != nil { - t.Fatal("NewRequest error:", err) - } - resp, err := tr.RoundTrip(req) - if err != nil { - t.Fatal("RoundTrip error:", err) - } - defer resp.Body.Close() - - var read int64 - b := make([]byte, bufLen) - for { - n, err := resp.Body.Read(b) - if err == io.EOF { - break - } - if err != nil { - t.Fatal("Read error:", err) - } - read += int64(n) - - const max = transportDefaultStreamFlow - if w := atomic.LoadInt64(&wrote); -max > read-w || read-w > max { - t.Fatalf("Too much data inflight: server wrote %v bytes but client only received %v", w, read) - } - - // Let the server get ahead of the client. - time.Sleep(1 * time.Millisecond) - } -} - -// golang.org/issue/14627 -- if the server sends a GOAWAY frame, make -// the Transport remember it and return it back to users (via -// RoundTrip or request body reads) if needed (e.g. if the server -// proceeds to close the TCP connection before the client gets its -// response) -func TestTransportUsesGoAwayDebugError_RoundTrip(t *testing.T) { - testTransportUsesGoAwayDebugError(t, false) -} - -func TestTransportUsesGoAwayDebugError_Body(t *testing.T) { - testTransportUsesGoAwayDebugError(t, true) -} - -func testTransportUsesGoAwayDebugError(t *testing.T, failMidBody bool) { - ct := newClientTester(t) - clientDone := make(chan struct{}) - - const goAwayErrCode = ErrCodeHTTP11Required // arbitrary - const goAwayDebugData = "some debug data" - - ct.client = func() error { - defer close(clientDone) - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if failMidBody { - if err != nil { - return fmt.Errorf("unexpected client RoundTrip error: %v", err) - } - _, err = io.Copy(ioutil.Discard, res.Body) - res.Body.Close() - } - want := GoAwayError{ - LastStreamID: 5, - ErrCode: goAwayErrCode, - DebugData: goAwayDebugData, - } - if !reflect.DeepEqual(err, want) { - t.Errorf("RoundTrip error = %T: %#v, want %T (%#v)", err, err, want, want) - } - return nil - } - ct.server = func() error { - ct.greet() - for { - f, err := ct.fr.ReadFrame() - if err != nil { - t.Logf("ReadFrame: %v", err) - return nil - } - hf, ok := f.(*HeadersFrame) - if !ok { - continue - } - if failMidBody { - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: "content-length", Value: "123"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: false, - BlockFragment: buf.Bytes(), - }) - } - // Write two GOAWAY frames, to test that the Transport takes - // the interesting parts of both. - ct.fr.WriteGoAway(5, ErrCodeNo, []byte(goAwayDebugData)) - ct.fr.WriteGoAway(5, goAwayErrCode, nil) - ct.sc.(*net.TCPConn).CloseWrite() - <-clientDone - return nil - } - } - ct.run() -} - -func testTransportReturnsUnusedFlowControl(t *testing.T, oneDataFrame bool) { - ct := newClientTester(t) - - clientClosed := make(chan struct{}) - serverWroteFirstByte := make(chan struct{}) - - ct.client = func() error { - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if err != nil { - return err - } - <-serverWroteFirstByte - - if n, err := res.Body.Read(make([]byte, 1)); err != nil || n != 1 { - return fmt.Errorf("body read = %v, %v; want 1, nil", n, err) - } - res.Body.Close() // leaving 4999 bytes unread - close(clientClosed) - - return nil - } - ct.server = func() error { - ct.greet() - - var hf *HeadersFrame - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return fmt.Errorf("ReadFrame while waiting for Headers: %v", err) - } - switch f.(type) { - case *WindowUpdateFrame, *SettingsFrame: - continue - } - var ok bool - hf, ok = f.(*HeadersFrame) - if !ok { - return fmt.Errorf("Got %T; want HeadersFrame", f) - } - break - } - - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: "content-length", Value: "5000"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: false, - BlockFragment: buf.Bytes(), - }) - - // Two cases: - // - Send one DATA frame with 5000 bytes. - // - Send two DATA frames with 1 and 4999 bytes each. - // - // In both cases, the client should consume one byte of data, - // refund that byte, then refund the following 4999 bytes. - // - // In the second case, the server waits for the client connection to - // close before seconding the second DATA frame. This tests the case - // where the client receives a DATA frame after it has reset the stream. - if oneDataFrame { - ct.fr.WriteData(hf.StreamID, false /* don't end stream */, make([]byte, 5000)) - close(serverWroteFirstByte) - <-clientClosed - } else { - ct.fr.WriteData(hf.StreamID, false /* don't end stream */, make([]byte, 1)) - close(serverWroteFirstByte) - <-clientClosed - ct.fr.WriteData(hf.StreamID, false /* don't end stream */, make([]byte, 4999)) - } - - waitingFor := "RSTStreamFrame" - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return fmt.Errorf("ReadFrame while waiting for %s: %v", waitingFor, err) - } - if _, ok := f.(*SettingsFrame); ok { - continue - } - switch waitingFor { - case "RSTStreamFrame": - if rf, ok := f.(*RSTStreamFrame); !ok || rf.ErrCode != ErrCodeCancel { - return fmt.Errorf("Expected a RSTStreamFrame with code cancel; got %v", summarizeFrame(f)) - } - waitingFor = "WindowUpdateFrame" - case "WindowUpdateFrame": - if wuf, ok := f.(*WindowUpdateFrame); !ok || wuf.Increment != 4999 { - return fmt.Errorf("Expected WindowUpdateFrame for 4999 bytes; got %v", summarizeFrame(f)) - } - return nil - } - } - } - ct.run() -} - -// See golang.org/issue/16481 -func TestTransportReturnsUnusedFlowControlSingleWrite(t *testing.T) { - testTransportReturnsUnusedFlowControl(t, true) -} - -// See golang.org/issue/20469 -func TestTransportReturnsUnusedFlowControlMultipleWrites(t *testing.T) { - testTransportReturnsUnusedFlowControl(t, false) -} - -// Issue 16612: adjust flow control on open streams when transport -// receives SETTINGS with INITIAL_WINDOW_SIZE from server. -func TestTransportAdjustsFlowControl(t *testing.T) { - ct := newClientTester(t) - clientDone := make(chan struct{}) - - const bodySize = 1 << 20 - - ct.client = func() error { - defer ct.cc.(*net.TCPConn).CloseWrite() - defer close(clientDone) - - req, _ := http.NewRequest("POST", "https://dummy.tld/", struct{ io.Reader }{io.LimitReader(neverEnding('A'), bodySize)}) - res, err := ct.tr.RoundTrip(req) - if err != nil { - return err - } - res.Body.Close() - return nil - } - ct.server = func() error { - _, err := io.ReadFull(ct.sc, make([]byte, len(ClientPreface))) - if err != nil { - return fmt.Errorf("reading client preface: %v", err) - } - - var gotBytes int64 - var sentSettings bool - for { - f, err := ct.fr.ReadFrame() - if err != nil { - select { - case <-clientDone: - return nil - default: - return fmt.Errorf("ReadFrame while waiting for Headers: %v", err) - } - } - switch f := f.(type) { - case *DataFrame: - gotBytes += int64(len(f.Data())) - // After we've got half the client's - // initial flow control window's worth - // of request body data, give it just - // enough flow control to finish. - if gotBytes >= initialWindowSize/2 && !sentSettings { - sentSettings = true - - ct.fr.WriteSettings(Setting{ID: SettingInitialWindowSize, Val: bodySize}) - ct.fr.WriteWindowUpdate(0, bodySize) - ct.fr.WriteSettingsAck() - } - - if f.StreamEnded() { - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.StreamID, - EndHeaders: true, - EndStream: true, - BlockFragment: buf.Bytes(), - }) - } - } - } - } - ct.run() -} - -// See golang.org/issue/16556 -func TestTransportReturnsDataPaddingFlowControl(t *testing.T) { - ct := newClientTester(t) - - unblockClient := make(chan bool, 1) - - ct.client = func() error { - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if err != nil { - return err - } - defer res.Body.Close() - <-unblockClient - return nil - } - ct.server = func() error { - ct.greet() - - var hf *HeadersFrame - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return fmt.Errorf("ReadFrame while waiting for Headers: %v", err) - } - switch f.(type) { - case *WindowUpdateFrame, *SettingsFrame: - continue - } - var ok bool - hf, ok = f.(*HeadersFrame) - if !ok { - return fmt.Errorf("Got %T; want HeadersFrame", f) - } - break - } - - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: "content-length", Value: "5000"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: false, - BlockFragment: buf.Bytes(), - }) - pad := make([]byte, 5) - ct.fr.WriteDataPadded(hf.StreamID, false, make([]byte, 5000), pad) // without ending stream - - f, err := ct.readNonSettingsFrame() - if err != nil { - return fmt.Errorf("ReadFrame while waiting for first WindowUpdateFrame: %v", err) - } - wantBack := uint32(len(pad)) + 1 // one byte for the length of the padding - if wuf, ok := f.(*WindowUpdateFrame); !ok || wuf.Increment != wantBack || wuf.StreamID != 0 { - return fmt.Errorf("Expected conn WindowUpdateFrame for %d bytes; got %v", wantBack, summarizeFrame(f)) - } - - f, err = ct.readNonSettingsFrame() - if err != nil { - return fmt.Errorf("ReadFrame while waiting for second WindowUpdateFrame: %v", err) - } - if wuf, ok := f.(*WindowUpdateFrame); !ok || wuf.Increment != wantBack || wuf.StreamID == 0 { - return fmt.Errorf("Expected stream WindowUpdateFrame for %d bytes; got %v", wantBack, summarizeFrame(f)) - } - unblockClient <- true - return nil - } - ct.run() -} - -// golang.org/issue/16572 -- RoundTrip shouldn't hang when it gets a -// StreamError as a result of the response HEADERS -func TestTransportReturnsErrorOnBadResponseHeaders(t *testing.T) { - ct := newClientTester(t) - - ct.client = func() error { - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - res, err := ct.tr.RoundTrip(req) - if err == nil { - res.Body.Close() - return errors.New("unexpected successful GET") - } - want := StreamError{1, ErrCodeProtocol, headerFieldNameError(" content-type")} - if !reflect.DeepEqual(want, err) { - t.Errorf("RoundTrip error = %#v; want %#v", err, want) - } - return nil - } - ct.server = func() error { - ct.greet() - - hf, err := ct.firstHeaders() - if err != nil { - return err - } - - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: " content-type", Value: "bogus"}) // bogus spaces - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: false, - BlockFragment: buf.Bytes(), - }) - - for { - fr, err := ct.readFrame() - if err != nil { - return fmt.Errorf("error waiting for RST_STREAM from client: %v", err) - } - if _, ok := fr.(*SettingsFrame); ok { - continue - } - if rst, ok := fr.(*RSTStreamFrame); !ok || rst.StreamID != 1 || rst.ErrCode != ErrCodeProtocol { - t.Errorf("Frame = %v; want RST_STREAM for stream 1 with ErrCodeProtocol", summarizeFrame(fr)) - } - break - } - - return nil - } - ct.run() -} - -// byteAndEOFReader returns is in an io.Reader which reads one byte -// (the underlying byte) and io.EOF at once in its Read call. -type byteAndEOFReader byte - -func (b byteAndEOFReader) Read(p []byte) (n int, err error) { - if len(p) == 0 { - panic("unexpected useless call") - } - p[0] = byte(b) - return 1, io.EOF -} - -// Issue 16788: the Transport had a regression where it started -// sending a spurious DATA frame with a duplicate END_STREAM bit after -// the request body writer goroutine had already read an EOF from the -// Request.Body and included the END_STREAM on a data-carrying DATA -// frame. -// -// Notably, to trigger this, the requests need to use a Request.Body -// which returns (non-0, io.EOF) and also needs to set the ContentLength -// explicitly. -func TestTransportBodyDoubleEndStream(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - // Nothing. - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - for i := 0; i < 2; i++ { - req, _ := http.NewRequest("POST", st.ts.URL, byteAndEOFReader('a')) - req.ContentLength = 1 - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatalf("failure on req %d: %v", i+1, err) - } - defer res.Body.Close() - } -} - -// golang.org/issue/16847, golang.org/issue/19103 -func TestTransportRequestPathPseudo(t *testing.T) { - type result struct { - path string - err string - } - tests := []struct { - req *http.Request - want result - }{ - 0: { - req: &http.Request{ - Method: "GET", - URL: &url.URL{ - Host: "foo.com", - Path: "/foo", - }, - }, - want: result{path: "/foo"}, - }, - // In Go 1.7, we accepted paths of "//foo". - // In Go 1.8, we rejected it (issue 16847). - // In Go 1.9, we accepted it again (issue 19103). - 1: { - req: &http.Request{ - Method: "GET", - URL: &url.URL{ - Host: "foo.com", - Path: "//foo", - }, - }, - want: result{path: "//foo"}, - }, - - // Opaque with //$Matching_Hostname/path - 2: { - req: &http.Request{ - Method: "GET", - URL: &url.URL{ - Scheme: "https", - Opaque: "//foo.com/path", - Host: "foo.com", - Path: "/ignored", - }, - }, - want: result{path: "/path"}, - }, - - // Opaque with some other Request.Host instead: - 3: { - req: &http.Request{ - Method: "GET", - Host: "bar.com", - URL: &url.URL{ - Scheme: "https", - Opaque: "//bar.com/path", - Host: "foo.com", - Path: "/ignored", - }, - }, - want: result{path: "/path"}, - }, - - // Opaque without the leading "//": - 4: { - req: &http.Request{ - Method: "GET", - URL: &url.URL{ - Opaque: "/path", - Host: "foo.com", - Path: "/ignored", - }, - }, - want: result{path: "/path"}, - }, - - // Opaque we can't handle: - 5: { - req: &http.Request{ - Method: "GET", - URL: &url.URL{ - Scheme: "https", - Opaque: "//unknown_host/path", - Host: "foo.com", - Path: "/ignored", - }, - }, - want: result{err: `invalid request :path "https://unknown_host/path" from URL.Opaque = "//unknown_host/path"`}, - }, - - // A CONNECT request: - 6: { - req: &http.Request{ - Method: "CONNECT", - URL: &url.URL{ - Host: "foo.com", - }, - }, - want: result{}, - }, - } - for i, tt := range tests { - cc := &ClientConn{peerMaxHeaderListSize: 0xffffffffffffffff} - cc.henc = hpack.NewEncoder(&cc.hbuf) - cc.mu.Lock() - hdrs, err := cc.encodeHeaders(tt.req, false, "", -1) - cc.mu.Unlock() - var got result - hpackDec := hpack.NewDecoder(initialHeaderTableSize, func(f hpack.HeaderField) { - if f.Name == ":path" { - got.path = f.Value - } - }) - if err != nil { - got.err = err.Error() - } else if len(hdrs) > 0 { - if _, err := hpackDec.Write(hdrs); err != nil { - t.Errorf("%d. bogus hpack: %v", i, err) - continue - } - } - if got != tt.want { - t.Errorf("%d. got %+v; want %+v", i, got, tt.want) - } - - } - -} - -// golang.org/issue/17071 -- don't sniff the first byte of the request body -// before we've determined that the ClientConn is usable. -func TestRoundTripDoesntConsumeRequestBodyEarly(t *testing.T) { - const body = "foo" - req, _ := http.NewRequest("POST", "http://foo.com/", ioutil.NopCloser(strings.NewReader(body))) - cc := &ClientConn{ - closed: true, - } - _, err := cc.RoundTrip(req) - if err != errClientConnUnusable { - t.Fatalf("RoundTrip = %v; want errClientConnUnusable", err) - } - slurp, err := ioutil.ReadAll(req.Body) - if err != nil { - t.Errorf("ReadAll = %v", err) - } - if string(slurp) != body { - t.Errorf("Body = %q; want %q", slurp, body) - } -} - -func TestClientConnPing(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) {}, optOnlyServer) - defer st.Close() - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - cc, err := tr.dialClientConn(st.ts.Listener.Addr().String(), false) - if err != nil { - t.Fatal(err) - } - if err = cc.Ping(testContext{}); err != nil { - t.Fatal(err) - } -} - -// Issue 16974: if the server sent a DATA frame after the user -// canceled the Transport's Request, the Transport previously wrote to a -// closed pipe, got an error, and ended up closing the whole TCP -// connection. -func TestTransportCancelDataResponseRace(t *testing.T) { - cancel := make(chan struct{}) - clientGotError := make(chan bool, 1) - - const msg = "Hello." - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - if strings.Contains(r.URL.Path, "/hello") { - time.Sleep(50 * time.Millisecond) - io.WriteString(w, msg) - return - } - for i := 0; i < 50; i++ { - io.WriteString(w, "Some data.") - w.(http.Flusher).Flush() - if i == 2 { - close(cancel) - <-clientGotError - } - time.Sleep(10 * time.Millisecond) - } - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - c := &http.Client{Transport: tr} - req, _ := http.NewRequest("GET", st.ts.URL, nil) - req.Cancel = cancel - res, err := c.Do(req) - if err != nil { - t.Fatal(err) - } - if _, err = io.Copy(ioutil.Discard, res.Body); err == nil { - t.Fatal("unexpected success") - } - clientGotError <- true - - res, err = c.Get(st.ts.URL + "/hello") - if err != nil { - t.Fatal(err) - } - slurp, err := ioutil.ReadAll(res.Body) - if err != nil { - t.Fatal(err) - } - if string(slurp) != msg { - t.Errorf("Got = %q; want %q", slurp, msg) - } -} - -// Issue 21316: It should be safe to reuse an http.Request after the -// request has completed. -func TestTransportNoRaceOnRequestObjectAfterRequestComplete(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(200) - io.WriteString(w, "body") - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - req, _ := http.NewRequest("GET", st.ts.URL, nil) - resp, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - if _, err = io.Copy(ioutil.Discard, resp.Body); err != nil { - t.Fatalf("error reading response body: %v", err) - } - if err := resp.Body.Close(); err != nil { - t.Fatalf("error closing response body: %v", err) - } - - // This access of req.Header should not race with code in the transport. - req.Header = http.Header{} -} - -func TestTransportRetryAfterGOAWAY(t *testing.T) { - var dialer struct { - sync.Mutex - count int - } - ct1 := make(chan *clientTester) - ct2 := make(chan *clientTester) - - ln := newLocalListener(t) - defer ln.Close() - - tr := &Transport{ - TLSClientConfig: tlsConfigInsecure, - } - tr.DialTLS = func(network, addr string, cfg *tls.Config) (net.Conn, error) { - dialer.Lock() - defer dialer.Unlock() - dialer.count++ - if dialer.count == 3 { - return nil, errors.New("unexpected number of dials") - } - cc, err := net.Dial("tcp", ln.Addr().String()) - if err != nil { - return nil, fmt.Errorf("dial error: %v", err) - } - sc, err := ln.Accept() - if err != nil { - return nil, fmt.Errorf("accept error: %v", err) - } - ct := &clientTester{ - t: t, - tr: tr, - cc: cc, - sc: sc, - fr: NewFramer(sc, sc), - } - switch dialer.count { - case 1: - ct1 <- ct - case 2: - ct2 <- ct - } - return cc, nil - } - - errs := make(chan error, 3) - done := make(chan struct{}) - defer close(done) - - // Client. - go func() { - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - res, err := tr.RoundTrip(req) - if res != nil { - res.Body.Close() - if got := res.Header.Get("Foo"); got != "bar" { - err = fmt.Errorf("foo header = %q; want bar", got) - } - } - if err != nil { - err = fmt.Errorf("RoundTrip: %v", err) - } - errs <- err - }() - - connToClose := make(chan io.Closer, 2) - - // Server for the first request. - go func() { - var ct *clientTester - select { - case ct = <-ct1: - case <-done: - return - } - - connToClose <- ct.cc - ct.greet() - hf, err := ct.firstHeaders() - if err != nil { - errs <- fmt.Errorf("server1 failed reading HEADERS: %v", err) - return - } - t.Logf("server1 got %v", hf) - if err := ct.fr.WriteGoAway(0 /*max id*/, ErrCodeNo, nil); err != nil { - errs <- fmt.Errorf("server1 failed writing GOAWAY: %v", err) - return - } - errs <- nil - }() - - // Server for the second request. - go func() { - var ct *clientTester - select { - case ct = <-ct2: - case <-done: - return - } - - connToClose <- ct.cc - ct.greet() - hf, err := ct.firstHeaders() - if err != nil { - errs <- fmt.Errorf("server2 failed reading HEADERS: %v", err) - return - } - t.Logf("server2 got %v", hf) - - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - enc.WriteField(hpack.HeaderField{Name: "foo", Value: "bar"}) - err = ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: hf.StreamID, - EndHeaders: true, - EndStream: false, - BlockFragment: buf.Bytes(), - }) - if err != nil { - errs <- fmt.Errorf("server2 failed writing response HEADERS: %v", err) - } else { - errs <- nil - } - }() - - for k := 0; k < 3; k++ { - select { - case err := <-errs: - if err != nil { - t.Error(err) - } - case <-time.After(1 * time.Second): - t.Errorf("timed out") - } - } - - for { - select { - case c := <-connToClose: - c.Close() - default: - return - } - } -} - -func TestTransportRetryAfterRefusedStream(t *testing.T) { - clientDone := make(chan struct{}) - ct := newClientTester(t) - ct.client = func() error { - defer ct.cc.(*net.TCPConn).CloseWrite() - defer close(clientDone) - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - resp, err := ct.tr.RoundTrip(req) - if err != nil { - return fmt.Errorf("RoundTrip: %v", err) - } - resp.Body.Close() - if resp.StatusCode != 204 { - return fmt.Errorf("Status = %v; want 204", resp.StatusCode) - } - return nil - } - ct.server = func() error { - ct.greet() - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - nreq := 0 - - for { - f, err := ct.fr.ReadFrame() - if err != nil { - select { - case <-clientDone: - // If the client's done, it - // will have reported any - // errors on its side. - return nil - default: - return err - } - } - switch f := f.(type) { - case *WindowUpdateFrame, *SettingsFrame: - case *HeadersFrame: - if !f.HeadersEnded() { - return fmt.Errorf("headers should have END_HEADERS be ended: %v", f) - } - nreq++ - if nreq == 1 { - ct.fr.WriteRSTStream(f.StreamID, ErrCodeRefusedStream) - } else { - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "204"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.StreamID, - EndHeaders: true, - EndStream: true, - BlockFragment: buf.Bytes(), - }) - } - default: - return fmt.Errorf("Unexpected client frame %v", f) - } - } - } - ct.run() -} - -func TestTransportRetryHasLimit(t *testing.T) { - // Skip in short mode because the total expected delay is 1s+2s+4s+8s+16s=29s. - if testing.Short() { - t.Skip("skipping long test in short mode") - } - clientDone := make(chan struct{}) - ct := newClientTester(t) - ct.client = func() error { - defer ct.cc.(*net.TCPConn).CloseWrite() - defer close(clientDone) - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - resp, err := ct.tr.RoundTrip(req) - if err == nil { - return fmt.Errorf("RoundTrip expected error, got response: %+v", resp) - } - t.Logf("expected error, got: %v", err) - return nil - } - ct.server = func() error { - ct.greet() - for { - f, err := ct.fr.ReadFrame() - if err != nil { - select { - case <-clientDone: - // If the client's done, it - // will have reported any - // errors on its side. - return nil - default: - return err - } - } - switch f := f.(type) { - case *WindowUpdateFrame, *SettingsFrame: - case *HeadersFrame: - if !f.HeadersEnded() { - return fmt.Errorf("headers should have END_HEADERS be ended: %v", f) - } - ct.fr.WriteRSTStream(f.StreamID, ErrCodeRefusedStream) - default: - return fmt.Errorf("Unexpected client frame %v", f) - } - } - } - ct.run() -} - -func TestTransportResponseDataBeforeHeaders(t *testing.T) { - // This test use not valid response format. - // Discarding logger output to not spam tests output. - log.SetOutput(ioutil.Discard) - defer log.SetOutput(os.Stderr) - - ct := newClientTester(t) - ct.client = func() error { - defer ct.cc.(*net.TCPConn).CloseWrite() - req := httptest.NewRequest("GET", "https://dummy.tld/", nil) - // First request is normal to ensure the check is per stream and not per connection. - _, err := ct.tr.RoundTrip(req) - if err != nil { - return fmt.Errorf("RoundTrip expected no error, got: %v", err) - } - // Second request returns a DATA frame with no HEADERS. - resp, err := ct.tr.RoundTrip(req) - if err == nil { - return fmt.Errorf("RoundTrip expected error, got response: %+v", resp) - } - if err, ok := err.(StreamError); !ok || err.Code != ErrCodeProtocol { - return fmt.Errorf("expected stream PROTOCOL_ERROR, got: %v", err) - } - return nil - } - ct.server = func() error { - ct.greet() - for { - f, err := ct.fr.ReadFrame() - if err == io.EOF { - return nil - } else if err != nil { - return err - } - switch f := f.(type) { - case *WindowUpdateFrame, *SettingsFrame: - case *HeadersFrame: - switch f.StreamID { - case 1: - // Send a valid response to first request. - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "200"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.StreamID, - EndHeaders: true, - EndStream: true, - BlockFragment: buf.Bytes(), - }) - case 3: - ct.fr.WriteData(f.StreamID, true, []byte("payload")) - } - default: - return fmt.Errorf("Unexpected client frame %v", f) - } - } - } - ct.run() -} -func TestTransportRequestsStallAtServerLimit(t *testing.T) { - const maxConcurrent = 2 - - greet := make(chan struct{}) // server sends initial SETTINGS frame - gotRequest := make(chan struct{}) // server received a request - clientDone := make(chan struct{}) - - // Collect errors from goroutines. - var wg sync.WaitGroup - errs := make(chan error, 100) - defer func() { - wg.Wait() - close(errs) - for err := range errs { - t.Error(err) - } - }() - - // We will send maxConcurrent+2 requests. This checker goroutine waits for the - // following stages: - // 1. The first maxConcurrent requests are received by the server. - // 2. The client will cancel the next request - // 3. The server is unblocked so it can service the first maxConcurrent requests - // 4. The client will send the final request - wg.Add(1) - unblockClient := make(chan struct{}) - clientRequestCancelled := make(chan struct{}) - unblockServer := make(chan struct{}) - go func() { - defer wg.Done() - // Stage 1. - for k := 0; k < maxConcurrent; k++ { - <-gotRequest - } - // Stage 2. - close(unblockClient) - <-clientRequestCancelled - // Stage 3: give some time for the final RoundTrip call to be scheduled and - // verify that the final request is not sent. - time.Sleep(50 * time.Millisecond) - select { - case <-gotRequest: - errs <- errors.New("last request did not stall") - close(unblockServer) - return - default: - } - close(unblockServer) - // Stage 4. - <-gotRequest - }() - - ct := newClientTester(t) - ct.client = func() error { - var wg sync.WaitGroup - defer func() { - wg.Wait() - close(clientDone) - ct.cc.(*net.TCPConn).CloseWrite() - }() - for k := 0; k < maxConcurrent+2; k++ { - wg.Add(1) - go func(k int) { - defer wg.Done() - // Don't send the second request until after receiving SETTINGS from the server - // to avoid a race where we use the default SettingMaxConcurrentStreams, which - // is much larger than maxConcurrent. We have to send the first request before - // waiting because the first request triggers the dial and greet. - if k > 0 { - <-greet - } - // Block until maxConcurrent requests are sent before sending any more. - if k >= maxConcurrent { - <-unblockClient - } - req, _ := http.NewRequest("GET", fmt.Sprintf("https://dummy.tld/%d", k), nil) - if k == maxConcurrent { - // This request will be canceled. - cancel := make(chan struct{}) - req.Cancel = cancel - close(cancel) - _, err := ct.tr.RoundTrip(req) - close(clientRequestCancelled) - if err == nil { - errs <- fmt.Errorf("RoundTrip(%d) should have failed due to cancel", k) - return - } - } else { - resp, err := ct.tr.RoundTrip(req) - if err != nil { - errs <- fmt.Errorf("RoundTrip(%d): %v", k, err) - return - } - ioutil.ReadAll(resp.Body) - resp.Body.Close() - if resp.StatusCode != 204 { - errs <- fmt.Errorf("Status = %v; want 204", resp.StatusCode) - return - } - } - }(k) - } - return nil - } - - ct.server = func() error { - var wg sync.WaitGroup - defer wg.Wait() - - ct.greet(Setting{SettingMaxConcurrentStreams, maxConcurrent}) - - // Server write loop. - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - writeResp := make(chan uint32, maxConcurrent+1) - - wg.Add(1) - go func() { - defer wg.Done() - <-unblockServer - for id := range writeResp { - buf.Reset() - enc.WriteField(hpack.HeaderField{Name: ":status", Value: "204"}) - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: id, - EndHeaders: true, - EndStream: true, - BlockFragment: buf.Bytes(), - }) - } - }() - - // Server read loop. - var nreq int - for { - f, err := ct.fr.ReadFrame() - if err != nil { - select { - case <-clientDone: - // If the client's done, it will have reported any errors on its side. - return nil - default: - return err - } - } - switch f := f.(type) { - case *WindowUpdateFrame: - case *SettingsFrame: - // Wait for the client SETTINGS ack until ending the greet. - close(greet) - case *HeadersFrame: - if !f.HeadersEnded() { - return fmt.Errorf("headers should have END_HEADERS be ended: %v", f) - } - gotRequest <- struct{}{} - nreq++ - writeResp <- f.StreamID - if nreq == maxConcurrent+1 { - close(writeResp) - } - default: - return fmt.Errorf("Unexpected client frame %v", f) - } - } - } - - ct.run() -} - -func TestAuthorityAddr(t *testing.T) { - tests := []struct { - scheme, authority string - want string - }{ - {"http", "foo.com", "foo.com:80"}, - {"https", "foo.com", "foo.com:443"}, - {"https", "foo.com:1234", "foo.com:1234"}, - {"https", "1.2.3.4:1234", "1.2.3.4:1234"}, - {"https", "1.2.3.4", "1.2.3.4:443"}, - {"https", "[::1]:1234", "[::1]:1234"}, - {"https", "[::1]", "[::1]:443"}, - } - for _, tt := range tests { - got := authorityAddr(tt.scheme, tt.authority) - if got != tt.want { - t.Errorf("authorityAddr(%q, %q) = %q; want %q", tt.scheme, tt.authority, got, tt.want) - } - } -} - -// Issue 20448: stop allocating for DATA frames' payload after -// Response.Body.Close is called. -func TestTransportAllocationsAfterResponseBodyClose(t *testing.T) { - megabyteZero := make([]byte, 1<<20) - - writeErr := make(chan error, 1) - - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - w.(http.Flusher).Flush() - var sum int64 - for i := 0; i < 100; i++ { - n, err := w.Write(megabyteZero) - sum += int64(n) - if err != nil { - writeErr <- err - return - } - } - t.Logf("wrote all %d bytes", sum) - writeErr <- nil - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - c := &http.Client{Transport: tr} - res, err := c.Get(st.ts.URL) - if err != nil { - t.Fatal(err) - } - var buf [1]byte - if _, err := res.Body.Read(buf[:]); err != nil { - t.Error(err) - } - if err := res.Body.Close(); err != nil { - t.Error(err) - } - - trb, ok := res.Body.(transportResponseBody) - if !ok { - t.Fatalf("res.Body = %T; want transportResponseBody", res.Body) - } - if trb.cs.bufPipe.b != nil { - t.Errorf("response body pipe is still open") - } - - gotErr := <-writeErr - if gotErr == nil { - t.Errorf("Handler unexpectedly managed to write its entire response without getting an error") - } else if gotErr != errStreamClosed { - t.Errorf("Handler Write err = %v; want errStreamClosed", gotErr) - } -} - -// Issue 18891: make sure Request.Body == NoBody means no DATA frame -// is ever sent, even if empty. -func TestTransportNoBodyMeansNoDATA(t *testing.T) { - ct := newClientTester(t) - - unblockClient := make(chan bool) - - ct.client = func() error { - req, _ := http.NewRequest("GET", "https://dummy.tld/", go18httpNoBody()) - ct.tr.RoundTrip(req) - <-unblockClient - return nil - } - ct.server = func() error { - defer close(unblockClient) - defer ct.cc.(*net.TCPConn).Close() - ct.greet() - - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return fmt.Errorf("ReadFrame while waiting for Headers: %v", err) - } - switch f := f.(type) { - default: - return fmt.Errorf("Got %T; want HeadersFrame", f) - case *WindowUpdateFrame, *SettingsFrame: - continue - case *HeadersFrame: - if !f.StreamEnded() { - return fmt.Errorf("got headers frame without END_STREAM") - } - return nil - } - } - } - ct.run() -} - -func benchSimpleRoundTrip(b *testing.B, nHeaders int) { - defer disableGoroutineTracking()() - b.ReportAllocs() - st := newServerTester(b, - func(w http.ResponseWriter, r *http.Request) { - }, - optOnlyServer, - optQuiet, - ) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - req, err := http.NewRequest("GET", st.ts.URL, nil) - if err != nil { - b.Fatal(err) - } - - for i := 0; i < nHeaders; i++ { - name := fmt.Sprint("A-", i) - req.Header.Set(name, "*") - } - - b.ResetTimer() - - for i := 0; i < b.N; i++ { - res, err := tr.RoundTrip(req) - if err != nil { - if res != nil { - res.Body.Close() - } - b.Fatalf("RoundTrip err = %v; want nil", err) - } - res.Body.Close() - if res.StatusCode != http.StatusOK { - b.Fatalf("Response code = %v; want %v", res.StatusCode, http.StatusOK) - } - } -} - -type infiniteReader struct{} - -func (r infiniteReader) Read(b []byte) (int, error) { - return len(b), nil -} - -// Issue 20521: it is not an error to receive a response and end stream -// from the server without the body being consumed. -func TestTransportResponseAndResetWithoutConsumingBodyRace(t *testing.T) { - st := newServerTester(t, func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusOK) - }, optOnlyServer) - defer st.Close() - - tr := &Transport{TLSClientConfig: tlsConfigInsecure} - defer tr.CloseIdleConnections() - - // The request body needs to be big enough to trigger flow control. - req, _ := http.NewRequest("PUT", st.ts.URL, infiniteReader{}) - res, err := tr.RoundTrip(req) - if err != nil { - t.Fatal(err) - } - if res.StatusCode != http.StatusOK { - t.Fatalf("Response code = %v; want %v", res.StatusCode, http.StatusOK) - } -} - -// Verify transport doesn't crash when receiving bogus response lacking a :status header. -// Issue 22880. -func TestTransportHandlesInvalidStatuslessResponse(t *testing.T) { - ct := newClientTester(t) - ct.client = func() error { - req, _ := http.NewRequest("GET", "https://dummy.tld/", nil) - _, err := ct.tr.RoundTrip(req) - const substr = "malformed response from server: missing status pseudo header" - if !strings.Contains(fmt.Sprint(err), substr) { - return fmt.Errorf("RoundTrip error = %v; want substring %q", err, substr) - } - return nil - } - ct.server = func() error { - ct.greet() - var buf bytes.Buffer - enc := hpack.NewEncoder(&buf) - - for { - f, err := ct.fr.ReadFrame() - if err != nil { - return err - } - switch f := f.(type) { - case *HeadersFrame: - enc.WriteField(hpack.HeaderField{Name: "content-type", Value: "text/html"}) // no :status header - ct.fr.WriteHeaders(HeadersFrameParam{ - StreamID: f.StreamID, - EndHeaders: true, - EndStream: false, // we'll send some DATA to try to crash the transport - BlockFragment: buf.Bytes(), - }) - ct.fr.WriteData(f.StreamID, true, []byte("payload")) - return nil - } - } - } - ct.run() -} - -func BenchmarkClientRequestHeaders(b *testing.B) { - b.Run(" 0 Headers", func(b *testing.B) { benchSimpleRoundTrip(b, 0) }) - b.Run(" 10 Headers", func(b *testing.B) { benchSimpleRoundTrip(b, 10) }) - b.Run(" 100 Headers", func(b *testing.B) { benchSimpleRoundTrip(b, 100) }) - b.Run("1000 Headers", func(b *testing.B) { benchSimpleRoundTrip(b, 1000) }) -} diff --git a/vendor/golang.org/x/net/http2/writesched_priority_test.go b/vendor/golang.org/x/net/http2/writesched_priority_test.go deleted file mode 100644 index f2b535a2..00000000 --- a/vendor/golang.org/x/net/http2/writesched_priority_test.go +++ /dev/null @@ -1,541 +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 http2 - -import ( - "bytes" - "fmt" - "sort" - "testing" -) - -func defaultPriorityWriteScheduler() *priorityWriteScheduler { - return NewPriorityWriteScheduler(nil).(*priorityWriteScheduler) -} - -func checkPriorityWellFormed(ws *priorityWriteScheduler) error { - for id, n := range ws.nodes { - if id != n.id { - return fmt.Errorf("bad ws.nodes: ws.nodes[%d] = %d", id, n.id) - } - if n.parent == nil { - if n.next != nil || n.prev != nil { - return fmt.Errorf("bad node %d: nil parent but prev/next not nil", id) - } - continue - } - found := false - for k := n.parent.kids; k != nil; k = k.next { - if k.id == id { - found = true - break - } - } - if !found { - return fmt.Errorf("bad node %d: not found in parent %d kids list", id, n.parent.id) - } - } - return nil -} - -func fmtTree(ws *priorityWriteScheduler, fmtNode func(*priorityNode) string) string { - var ids []int - for _, n := range ws.nodes { - ids = append(ids, int(n.id)) - } - sort.Ints(ids) - - var buf bytes.Buffer - for _, id := range ids { - if buf.Len() != 0 { - buf.WriteString(" ") - } - if id == 0 { - buf.WriteString(fmtNode(&ws.root)) - } else { - buf.WriteString(fmtNode(ws.nodes[uint32(id)])) - } - } - return buf.String() -} - -func fmtNodeParentSkipRoot(n *priorityNode) string { - switch { - case n.id == 0: - return "" - case n.parent == nil: - return fmt.Sprintf("%d{parent:nil}", n.id) - default: - return fmt.Sprintf("%d{parent:%d}", n.id, n.parent.id) - } -} - -func fmtNodeWeightParentSkipRoot(n *priorityNode) string { - switch { - case n.id == 0: - return "" - case n.parent == nil: - return fmt.Sprintf("%d{weight:%d,parent:nil}", n.id, n.weight) - default: - return fmt.Sprintf("%d{weight:%d,parent:%d}", n.id, n.weight, n.parent.id) - } -} - -func TestPriorityTwoStreams(t *testing.T) { - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{}) - - want := "1{weight:15,parent:0} 2{weight:15,parent:0}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After open\ngot %q\nwant %q", got, want) - } - - // Move 1's parent to 2. - ws.AdjustStream(1, PriorityParam{ - StreamDep: 2, - Weight: 32, - Exclusive: false, - }) - want = "1{weight:32,parent:2} 2{weight:15,parent:0}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After adjust\ngot %q\nwant %q", got, want) - } - - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPriorityAdjustExclusiveZero(t *testing.T) { - // 1, 2, and 3 are all children of the 0 stream. - // Exclusive reprioritization to any of the streams should bring - // the rest of the streams under the reprioritized stream. - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{}) - ws.OpenStream(3, OpenStreamOptions{}) - - want := "1{weight:15,parent:0} 2{weight:15,parent:0} 3{weight:15,parent:0}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After open\ngot %q\nwant %q", got, want) - } - - ws.AdjustStream(2, PriorityParam{ - StreamDep: 0, - Weight: 20, - Exclusive: true, - }) - want = "1{weight:15,parent:2} 2{weight:20,parent:0} 3{weight:15,parent:2}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After adjust\ngot %q\nwant %q", got, want) - } - - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPriorityAdjustOwnParent(t *testing.T) { - // Assigning a node as its own parent should have no effect. - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{}) - ws.AdjustStream(2, PriorityParam{ - StreamDep: 2, - Weight: 20, - Exclusive: true, - }) - want := "1{weight:15,parent:0} 2{weight:15,parent:0}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After adjust\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPriorityClosedStreams(t *testing.T) { - ws := NewPriorityWriteScheduler(&PriorityWriteSchedulerConfig{MaxClosedNodesInTree: 2}).(*priorityWriteScheduler) - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(3, OpenStreamOptions{PusherID: 2}) - ws.OpenStream(4, OpenStreamOptions{PusherID: 3}) - - // Close the first three streams. We lose 1, but keep 2 and 3. - ws.CloseStream(1) - ws.CloseStream(2) - ws.CloseStream(3) - - want := "2{weight:15,parent:0} 3{weight:15,parent:2} 4{weight:15,parent:3}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After close\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } - - // Adding a stream as an exclusive child of 1 gives it default - // priorities, since 1 is gone. - ws.OpenStream(5, OpenStreamOptions{}) - ws.AdjustStream(5, PriorityParam{StreamDep: 1, Weight: 15, Exclusive: true}) - - // Adding a stream as an exclusive child of 2 should work, since 2 is not gone. - ws.OpenStream(6, OpenStreamOptions{}) - ws.AdjustStream(6, PriorityParam{StreamDep: 2, Weight: 15, Exclusive: true}) - - want = "2{weight:15,parent:0} 3{weight:15,parent:6} 4{weight:15,parent:3} 5{weight:15,parent:0} 6{weight:15,parent:2}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After add streams\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPriorityClosedStreamsDisabled(t *testing.T) { - ws := NewPriorityWriteScheduler(&PriorityWriteSchedulerConfig{}).(*priorityWriteScheduler) - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(3, OpenStreamOptions{PusherID: 2}) - - // Close the first two streams. We keep only 3. - ws.CloseStream(1) - ws.CloseStream(2) - - want := "3{weight:15,parent:0}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After close\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPriorityIdleStreams(t *testing.T) { - ws := NewPriorityWriteScheduler(&PriorityWriteSchedulerConfig{MaxIdleNodesInTree: 2}).(*priorityWriteScheduler) - ws.AdjustStream(1, PriorityParam{StreamDep: 0, Weight: 15}) // idle - ws.AdjustStream(2, PriorityParam{StreamDep: 0, Weight: 15}) // idle - ws.AdjustStream(3, PriorityParam{StreamDep: 2, Weight: 20}) // idle - ws.OpenStream(4, OpenStreamOptions{}) - ws.OpenStream(5, OpenStreamOptions{}) - ws.OpenStream(6, OpenStreamOptions{}) - ws.AdjustStream(4, PriorityParam{StreamDep: 1, Weight: 15}) - ws.AdjustStream(5, PriorityParam{StreamDep: 2, Weight: 15}) - ws.AdjustStream(6, PriorityParam{StreamDep: 3, Weight: 15}) - - want := "2{weight:15,parent:0} 3{weight:20,parent:2} 4{weight:15,parent:0} 5{weight:15,parent:2} 6{weight:15,parent:3}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After open\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPriorityIdleStreamsDisabled(t *testing.T) { - ws := NewPriorityWriteScheduler(&PriorityWriteSchedulerConfig{}).(*priorityWriteScheduler) - ws.AdjustStream(1, PriorityParam{StreamDep: 0, Weight: 15}) // idle - ws.AdjustStream(2, PriorityParam{StreamDep: 0, Weight: 15}) // idle - ws.AdjustStream(3, PriorityParam{StreamDep: 2, Weight: 20}) // idle - ws.OpenStream(4, OpenStreamOptions{}) - - want := "4{weight:15,parent:0}" - if got := fmtTree(ws, fmtNodeWeightParentSkipRoot); got != want { - t.Errorf("After open\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPrioritySection531NonExclusive(t *testing.T) { - // Example from RFC 7540 Section 5.3.1. - // A,B,C,D = 1,2,3,4 - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(3, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(4, OpenStreamOptions{}) - ws.AdjustStream(4, PriorityParam{ - StreamDep: 1, - Weight: 15, - Exclusive: false, - }) - want := "1{parent:0} 2{parent:1} 3{parent:1} 4{parent:1}" - if got := fmtTree(ws, fmtNodeParentSkipRoot); got != want { - t.Errorf("After adjust\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPrioritySection531Exclusive(t *testing.T) { - // Example from RFC 7540 Section 5.3.1. - // A,B,C,D = 1,2,3,4 - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(3, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(4, OpenStreamOptions{}) - ws.AdjustStream(4, PriorityParam{ - StreamDep: 1, - Weight: 15, - Exclusive: true, - }) - want := "1{parent:0} 2{parent:4} 3{parent:4} 4{parent:1}" - if got := fmtTree(ws, fmtNodeParentSkipRoot); got != want { - t.Errorf("After adjust\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func makeSection533Tree() *priorityWriteScheduler { - // Initial tree from RFC 7540 Section 5.3.3. - // A,B,C,D,E,F = 1,2,3,4,5,6 - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(3, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(4, OpenStreamOptions{PusherID: 3}) - ws.OpenStream(5, OpenStreamOptions{PusherID: 3}) - ws.OpenStream(6, OpenStreamOptions{PusherID: 4}) - return ws -} - -func TestPrioritySection533NonExclusive(t *testing.T) { - // Example from RFC 7540 Section 5.3.3. - // A,B,C,D,E,F = 1,2,3,4,5,6 - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(3, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(4, OpenStreamOptions{PusherID: 3}) - ws.OpenStream(5, OpenStreamOptions{PusherID: 3}) - ws.OpenStream(6, OpenStreamOptions{PusherID: 4}) - ws.AdjustStream(1, PriorityParam{ - StreamDep: 4, - Weight: 15, - Exclusive: false, - }) - want := "1{parent:4} 2{parent:1} 3{parent:1} 4{parent:0} 5{parent:3} 6{parent:4}" - if got := fmtTree(ws, fmtNodeParentSkipRoot); got != want { - t.Errorf("After adjust\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func TestPrioritySection533Exclusive(t *testing.T) { - // Example from RFC 7540 Section 5.3.3. - // A,B,C,D,E,F = 1,2,3,4,5,6 - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(3, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(4, OpenStreamOptions{PusherID: 3}) - ws.OpenStream(5, OpenStreamOptions{PusherID: 3}) - ws.OpenStream(6, OpenStreamOptions{PusherID: 4}) - ws.AdjustStream(1, PriorityParam{ - StreamDep: 4, - Weight: 15, - Exclusive: true, - }) - want := "1{parent:4} 2{parent:1} 3{parent:1} 4{parent:0} 5{parent:3} 6{parent:1}" - if got := fmtTree(ws, fmtNodeParentSkipRoot); got != want { - t.Errorf("After adjust\ngot %q\nwant %q", got, want) - } - if err := checkPriorityWellFormed(ws); err != nil { - t.Error(err) - } -} - -func checkPopAll(ws WriteScheduler, order []uint32) error { - for k, id := range order { - wr, ok := ws.Pop() - if !ok { - return fmt.Errorf("Pop[%d]: got ok=false, want %d (order=%v)", k, id, order) - } - if got := wr.StreamID(); got != id { - return fmt.Errorf("Pop[%d]: got %v, want %d (order=%v)", k, got, id, order) - } - } - wr, ok := ws.Pop() - if ok { - return fmt.Errorf("Pop[%d]: got %v, want ok=false (order=%v)", len(order), wr.StreamID(), order) - } - return nil -} - -func TestPriorityPopFrom533Tree(t *testing.T) { - ws := makeSection533Tree() - - ws.Push(makeWriteHeadersRequest(3 /*C*/)) - ws.Push(makeWriteNonStreamRequest()) - ws.Push(makeWriteHeadersRequest(5 /*E*/)) - ws.Push(makeWriteHeadersRequest(1 /*A*/)) - t.Log("tree:", fmtTree(ws, fmtNodeParentSkipRoot)) - - if err := checkPopAll(ws, []uint32{0 /*NonStream*/, 1, 3, 5}); err != nil { - t.Error(err) - } -} - -func TestPriorityPopFromLinearTree(t *testing.T) { - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - ws.OpenStream(3, OpenStreamOptions{PusherID: 2}) - ws.OpenStream(4, OpenStreamOptions{PusherID: 3}) - - ws.Push(makeWriteHeadersRequest(3)) - ws.Push(makeWriteHeadersRequest(4)) - ws.Push(makeWriteHeadersRequest(1)) - ws.Push(makeWriteHeadersRequest(2)) - ws.Push(makeWriteNonStreamRequest()) - ws.Push(makeWriteNonStreamRequest()) - t.Log("tree:", fmtTree(ws, fmtNodeParentSkipRoot)) - - if err := checkPopAll(ws, []uint32{0, 0 /*NonStreams*/, 1, 2, 3, 4}); err != nil { - t.Error(err) - } -} - -func TestPriorityFlowControl(t *testing.T) { - ws := NewPriorityWriteScheduler(&PriorityWriteSchedulerConfig{ThrottleOutOfOrderWrites: false}) - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - - sc := &serverConn{maxFrameSize: 16} - st1 := &stream{id: 1, sc: sc} - st2 := &stream{id: 2, sc: sc} - - ws.Push(FrameWriteRequest{&writeData{1, make([]byte, 16), false}, st1, nil}) - ws.Push(FrameWriteRequest{&writeData{2, make([]byte, 16), false}, st2, nil}) - ws.AdjustStream(2, PriorityParam{StreamDep: 1}) - - // No flow-control bytes available. - if wr, ok := ws.Pop(); ok { - t.Fatalf("Pop(limited by flow control)=%v,true, want false", wr) - } - - // Add enough flow-control bytes to write st2 in two Pop calls. - // Should write data from st2 even though it's lower priority than st1. - for i := 1; i <= 2; i++ { - st2.flow.add(8) - wr, ok := ws.Pop() - if !ok { - t.Fatalf("Pop(%d)=false, want true", i) - } - if got, want := wr.DataSize(), 8; got != want { - t.Fatalf("Pop(%d)=%d bytes, want %d bytes", i, got, want) - } - } -} - -func TestPriorityThrottleOutOfOrderWrites(t *testing.T) { - ws := NewPriorityWriteScheduler(&PriorityWriteSchedulerConfig{ThrottleOutOfOrderWrites: true}) - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{PusherID: 1}) - - sc := &serverConn{maxFrameSize: 4096} - st1 := &stream{id: 1, sc: sc} - st2 := &stream{id: 2, sc: sc} - st1.flow.add(4096) - st2.flow.add(4096) - ws.Push(FrameWriteRequest{&writeData{2, make([]byte, 4096), false}, st2, nil}) - ws.AdjustStream(2, PriorityParam{StreamDep: 1}) - - // We have enough flow-control bytes to write st2 in a single Pop call. - // However, due to out-of-order write throttling, the first call should - // only write 1KB. - wr, ok := ws.Pop() - if !ok { - t.Fatalf("Pop(st2.first)=false, want true") - } - if got, want := wr.StreamID(), uint32(2); got != want { - t.Fatalf("Pop(st2.first)=stream %d, want stream %d", got, want) - } - if got, want := wr.DataSize(), 1024; got != want { - t.Fatalf("Pop(st2.first)=%d bytes, want %d bytes", got, want) - } - - // Now add data on st1. This should take precedence. - ws.Push(FrameWriteRequest{&writeData{1, make([]byte, 4096), false}, st1, nil}) - wr, ok = ws.Pop() - if !ok { - t.Fatalf("Pop(st1)=false, want true") - } - if got, want := wr.StreamID(), uint32(1); got != want { - t.Fatalf("Pop(st1)=stream %d, want stream %d", got, want) - } - if got, want := wr.DataSize(), 4096; got != want { - t.Fatalf("Pop(st1)=%d bytes, want %d bytes", got, want) - } - - // Should go back to writing 1KB from st2. - wr, ok = ws.Pop() - if !ok { - t.Fatalf("Pop(st2.last)=false, want true") - } - if got, want := wr.StreamID(), uint32(2); got != want { - t.Fatalf("Pop(st2.last)=stream %d, want stream %d", got, want) - } - if got, want := wr.DataSize(), 1024; got != want { - t.Fatalf("Pop(st2.last)=%d bytes, want %d bytes", got, want) - } -} - -func TestPriorityWeights(t *testing.T) { - ws := defaultPriorityWriteScheduler() - ws.OpenStream(1, OpenStreamOptions{}) - ws.OpenStream(2, OpenStreamOptions{}) - - sc := &serverConn{maxFrameSize: 8} - st1 := &stream{id: 1, sc: sc} - st2 := &stream{id: 2, sc: sc} - st1.flow.add(40) - st2.flow.add(40) - - ws.Push(FrameWriteRequest{&writeData{1, make([]byte, 40), false}, st1, nil}) - ws.Push(FrameWriteRequest{&writeData{2, make([]byte, 40), false}, st2, nil}) - ws.AdjustStream(1, PriorityParam{StreamDep: 0, Weight: 34}) - ws.AdjustStream(2, PriorityParam{StreamDep: 0, Weight: 9}) - - // st1 gets 3.5x the bandwidth of st2 (3.5 = (34+1)/(9+1)). - // The maximum frame size is 8 bytes. The write sequence should be: - // st1, total bytes so far is (st1=8, st=0) - // st2, total bytes so far is (st1=8, st=8) - // st1, total bytes so far is (st1=16, st=8) - // st1, total bytes so far is (st1=24, st=8) // 3x bandwidth - // st1, total bytes so far is (st1=32, st=8) // 4x bandwidth - // st2, total bytes so far is (st1=32, st=16) // 2x bandwidth - // st1, total bytes so far is (st1=40, st=16) - // st2, total bytes so far is (st1=40, st=24) - // st2, total bytes so far is (st1=40, st=32) - // st2, total bytes so far is (st1=40, st=40) - if err := checkPopAll(ws, []uint32{1, 2, 1, 1, 1, 2, 1, 2, 2, 2}); err != nil { - t.Error(err) - } -} - -func TestPriorityRstStreamOnNonOpenStreams(t *testing.T) { - ws := NewPriorityWriteScheduler(&PriorityWriteSchedulerConfig{ - MaxClosedNodesInTree: 0, - MaxIdleNodesInTree: 0, - }) - ws.OpenStream(1, OpenStreamOptions{}) - ws.CloseStream(1) - ws.Push(FrameWriteRequest{write: streamError(1, ErrCodeProtocol)}) - ws.Push(FrameWriteRequest{write: streamError(2, ErrCodeProtocol)}) - - if err := checkPopAll(ws, []uint32{1, 2}); err != nil { - t.Error(err) - } -} diff --git a/vendor/golang.org/x/net/http2/writesched_random_test.go b/vendor/golang.org/x/net/http2/writesched_random_test.go deleted file mode 100644 index 3bf4aa36..00000000 --- a/vendor/golang.org/x/net/http2/writesched_random_test.go +++ /dev/null @@ -1,44 +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 http2 - -import "testing" - -func TestRandomScheduler(t *testing.T) { - ws := NewRandomWriteScheduler() - ws.Push(makeWriteHeadersRequest(3)) - ws.Push(makeWriteHeadersRequest(4)) - ws.Push(makeWriteHeadersRequest(1)) - ws.Push(makeWriteHeadersRequest(2)) - ws.Push(makeWriteNonStreamRequest()) - ws.Push(makeWriteNonStreamRequest()) - - // Pop all frames. Should get the non-stream requests first, - // followed by the stream requests in any order. - var order []FrameWriteRequest - for { - wr, ok := ws.Pop() - if !ok { - break - } - order = append(order, wr) - } - t.Logf("got frames: %v", order) - if len(order) != 6 { - t.Fatalf("got %d frames, expected 6", len(order)) - } - if order[0].StreamID() != 0 || order[1].StreamID() != 0 { - t.Fatal("expected non-stream frames first", order[0], order[1]) - } - got := make(map[uint32]bool) - for _, wr := range order[2:] { - got[wr.StreamID()] = true - } - for id := uint32(1); id <= 4; id++ { - if !got[id] { - t.Errorf("frame not found for stream %d", id) - } - } -} diff --git a/vendor/golang.org/x/net/http2/writesched_test.go b/vendor/golang.org/x/net/http2/writesched_test.go deleted file mode 100644 index 0807056b..00000000 --- a/vendor/golang.org/x/net/http2/writesched_test.go +++ /dev/null @@ -1,125 +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 http2 - -import ( - "fmt" - "math" - "reflect" - "testing" -) - -func makeWriteNonStreamRequest() FrameWriteRequest { - return FrameWriteRequest{writeSettingsAck{}, nil, nil} -} - -func makeWriteHeadersRequest(streamID uint32) FrameWriteRequest { - st := &stream{id: streamID} - return FrameWriteRequest{&writeResHeaders{streamID: streamID, httpResCode: 200}, st, nil} -} - -func checkConsume(wr FrameWriteRequest, nbytes int32, want []FrameWriteRequest) error { - consumed, rest, n := wr.Consume(nbytes) - var wantConsumed, wantRest FrameWriteRequest - switch len(want) { - case 0: - case 1: - wantConsumed = want[0] - case 2: - wantConsumed = want[0] - wantRest = want[1] - } - if !reflect.DeepEqual(consumed, wantConsumed) || !reflect.DeepEqual(rest, wantRest) || n != len(want) { - return fmt.Errorf("got %v, %v, %v\nwant %v, %v, %v", consumed, rest, n, wantConsumed, wantRest, len(want)) - } - return nil -} - -func TestFrameWriteRequestNonData(t *testing.T) { - wr := makeWriteNonStreamRequest() - if got, want := wr.DataSize(), 0; got != want { - t.Errorf("DataSize: got %v, want %v", got, want) - } - - // Non-DATA frames are always consumed whole. - if err := checkConsume(wr, 0, []FrameWriteRequest{wr}); err != nil { - t.Errorf("Consume:\n%v", err) - } -} - -func TestFrameWriteRequestData(t *testing.T) { - st := &stream{ - id: 1, - sc: &serverConn{maxFrameSize: 16}, - } - const size = 32 - wr := FrameWriteRequest{&writeData{st.id, make([]byte, size), true}, st, make(chan error)} - if got, want := wr.DataSize(), size; got != want { - t.Errorf("DataSize: got %v, want %v", got, want) - } - - // No flow-control bytes available: cannot consume anything. - if err := checkConsume(wr, math.MaxInt32, []FrameWriteRequest{}); err != nil { - t.Errorf("Consume(limited by flow control):\n%v", err) - } - - // Add enough flow-control bytes to consume the entire frame, - // but we're now restricted by st.sc.maxFrameSize. - st.flow.add(size) - want := []FrameWriteRequest{ - { - write: &writeData{st.id, make([]byte, st.sc.maxFrameSize), false}, - stream: st, - done: nil, - }, - { - write: &writeData{st.id, make([]byte, size-st.sc.maxFrameSize), true}, - stream: st, - done: wr.done, - }, - } - if err := checkConsume(wr, math.MaxInt32, want); err != nil { - t.Errorf("Consume(limited by maxFrameSize):\n%v", err) - } - rest := want[1] - - // Consume 8 bytes from the remaining frame. - want = []FrameWriteRequest{ - { - write: &writeData{st.id, make([]byte, 8), false}, - stream: st, - done: nil, - }, - { - write: &writeData{st.id, make([]byte, size-st.sc.maxFrameSize-8), true}, - stream: st, - done: wr.done, - }, - } - if err := checkConsume(rest, 8, want); err != nil { - t.Errorf("Consume(8):\n%v", err) - } - rest = want[1] - - // Consume all remaining bytes. - want = []FrameWriteRequest{ - { - write: &writeData{st.id, make([]byte, size-st.sc.maxFrameSize-8), true}, - stream: st, - done: wr.done, - }, - } - if err := checkConsume(rest, math.MaxInt32, want); err != nil { - t.Errorf("Consume(remainder):\n%v", err) - } -} - -func TestFrameWriteRequest_StreamID(t *testing.T) { - const streamID = 123 - wr := FrameWriteRequest{write: streamError(streamID, ErrCodeNo)} - if got := wr.StreamID(); got != streamID { - t.Errorf("FrameWriteRequest(StreamError) = %v; want %v", got, streamID) - } -} diff --git a/vendor/golang.org/x/net/http2/z_spec_test.go b/vendor/golang.org/x/net/http2/z_spec_test.go deleted file mode 100644 index 610b2cdb..00000000 --- a/vendor/golang.org/x/net/http2/z_spec_test.go +++ /dev/null @@ -1,356 +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 http2 - -import ( - "bytes" - "encoding/xml" - "flag" - "fmt" - "io" - "os" - "reflect" - "regexp" - "sort" - "strconv" - "strings" - "sync" - "testing" -) - -var coverSpec = flag.Bool("coverspec", false, "Run spec coverage tests") - -// The global map of sentence coverage for the http2 spec. -var defaultSpecCoverage specCoverage - -var loadSpecOnce sync.Once - -func loadSpec() { - if f, err := os.Open("testdata/draft-ietf-httpbis-http2.xml"); err != nil { - panic(err) - } else { - defaultSpecCoverage = readSpecCov(f) - f.Close() - } -} - -// covers marks all sentences for section sec in defaultSpecCoverage. Sentences not -// "covered" will be included in report outputted by TestSpecCoverage. -func covers(sec, sentences string) { - loadSpecOnce.Do(loadSpec) - defaultSpecCoverage.cover(sec, sentences) -} - -type specPart struct { - section string - sentence string -} - -func (ss specPart) Less(oo specPart) bool { - atoi := func(s string) int { - n, err := strconv.Atoi(s) - if err != nil { - panic(err) - } - return n - } - a := strings.Split(ss.section, ".") - b := strings.Split(oo.section, ".") - for len(a) > 0 { - if len(b) == 0 { - return false - } - x, y := atoi(a[0]), atoi(b[0]) - if x == y { - a, b = a[1:], b[1:] - continue - } - return x < y - } - if len(b) > 0 { - return true - } - return false -} - -type bySpecSection []specPart - -func (a bySpecSection) Len() int { return len(a) } -func (a bySpecSection) Less(i, j int) bool { return a[i].Less(a[j]) } -func (a bySpecSection) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -type specCoverage struct { - coverage map[specPart]bool - d *xml.Decoder -} - -func joinSection(sec []int) string { - s := fmt.Sprintf("%d", sec[0]) - for _, n := range sec[1:] { - s = fmt.Sprintf("%s.%d", s, n) - } - return s -} - -func (sc specCoverage) readSection(sec []int) { - var ( - buf = new(bytes.Buffer) - sub = 0 - ) - for { - tk, err := sc.d.Token() - if err != nil { - if err == io.EOF { - return - } - panic(err) - } - switch v := tk.(type) { - case xml.StartElement: - if skipElement(v) { - if err := sc.d.Skip(); err != nil { - panic(err) - } - if v.Name.Local == "section" { - sub++ - } - break - } - switch v.Name.Local { - case "section": - sub++ - sc.readSection(append(sec, sub)) - case "xref": - buf.Write(sc.readXRef(v)) - } - case xml.CharData: - if len(sec) == 0 { - break - } - buf.Write(v) - case xml.EndElement: - if v.Name.Local == "section" { - sc.addSentences(joinSection(sec), buf.String()) - return - } - } - } -} - -func (sc specCoverage) readXRef(se xml.StartElement) []byte { - var b []byte - for { - tk, err := sc.d.Token() - if err != nil { - panic(err) - } - switch v := tk.(type) { - case xml.CharData: - if b != nil { - panic("unexpected CharData") - } - b = []byte(string(v)) - case xml.EndElement: - if v.Name.Local != "xref" { - panic("expected </xref>") - } - if b != nil { - return b - } - sig := attrSig(se) - switch sig { - case "target": - return []byte(fmt.Sprintf("[%s]", attrValue(se, "target"))) - case "fmt-of,rel,target", "fmt-,,rel,target": - return []byte(fmt.Sprintf("[%s, %s]", attrValue(se, "target"), attrValue(se, "rel"))) - case "fmt-of,sec,target", "fmt-,,sec,target": - return []byte(fmt.Sprintf("[section %s of %s]", attrValue(se, "sec"), attrValue(se, "target"))) - case "fmt-of,rel,sec,target": - return []byte(fmt.Sprintf("[section %s of %s, %s]", attrValue(se, "sec"), attrValue(se, "target"), attrValue(se, "rel"))) - default: - panic(fmt.Sprintf("unknown attribute signature %q in %#v", sig, fmt.Sprintf("%#v", se))) - } - default: - panic(fmt.Sprintf("unexpected tag %q", v)) - } - } -} - -var skipAnchor = map[string]bool{ - "intro": true, - "Overview": true, -} - -var skipTitle = map[string]bool{ - "Acknowledgements": true, - "Change Log": true, - "Document Organization": true, - "Conventions and Terminology": true, -} - -func skipElement(s xml.StartElement) bool { - switch s.Name.Local { - case "artwork": - return true - case "section": - for _, attr := range s.Attr { - switch attr.Name.Local { - case "anchor": - if skipAnchor[attr.Value] || strings.HasPrefix(attr.Value, "changes.since.") { - return true - } - case "title": - if skipTitle[attr.Value] { - return true - } - } - } - } - return false -} - -func readSpecCov(r io.Reader) specCoverage { - sc := specCoverage{ - coverage: map[specPart]bool{}, - d: xml.NewDecoder(r)} - sc.readSection(nil) - return sc -} - -func (sc specCoverage) addSentences(sec string, sentence string) { - for _, s := range parseSentences(sentence) { - sc.coverage[specPart{sec, s}] = false - } -} - -func (sc specCoverage) cover(sec string, sentence string) { - for _, s := range parseSentences(sentence) { - p := specPart{sec, s} - if _, ok := sc.coverage[p]; !ok { - panic(fmt.Sprintf("Not found in spec: %q, %q", sec, s)) - } - sc.coverage[specPart{sec, s}] = true - } - -} - -var whitespaceRx = regexp.MustCompile(`\s+`) - -func parseSentences(sens string) []string { - sens = strings.TrimSpace(sens) - if sens == "" { - return nil - } - ss := strings.Split(whitespaceRx.ReplaceAllString(sens, " "), ". ") - for i, s := range ss { - s = strings.TrimSpace(s) - if !strings.HasSuffix(s, ".") { - s += "." - } - ss[i] = s - } - return ss -} - -func TestSpecParseSentences(t *testing.T) { - tests := []struct { - ss string - want []string - }{ - {"Sentence 1. Sentence 2.", - []string{ - "Sentence 1.", - "Sentence 2.", - }}, - {"Sentence 1. \nSentence 2.\tSentence 3.", - []string{ - "Sentence 1.", - "Sentence 2.", - "Sentence 3.", - }}, - } - - for i, tt := range tests { - got := parseSentences(tt.ss) - if !reflect.DeepEqual(got, tt.want) { - t.Errorf("%d: got = %q, want %q", i, got, tt.want) - } - } -} - -func TestSpecCoverage(t *testing.T) { - if !*coverSpec { - t.Skip() - } - - loadSpecOnce.Do(loadSpec) - - var ( - list []specPart - cv = defaultSpecCoverage.coverage - total = len(cv) - complete = 0 - ) - - for sp, touched := range defaultSpecCoverage.coverage { - if touched { - complete++ - } else { - list = append(list, sp) - } - } - sort.Stable(bySpecSection(list)) - - if testing.Short() && len(list) > 5 { - list = list[:5] - } - - for _, p := range list { - t.Errorf("\tSECTION %s: %s", p.section, p.sentence) - } - - t.Logf("%d/%d (%d%%) sentences covered", complete, total, (complete/total)*100) -} - -func attrSig(se xml.StartElement) string { - var names []string - for _, attr := range se.Attr { - if attr.Name.Local == "fmt" { - names = append(names, "fmt-"+attr.Value) - } else { - names = append(names, attr.Name.Local) - } - } - sort.Strings(names) - return strings.Join(names, ",") -} - -func attrValue(se xml.StartElement, attr string) string { - for _, a := range se.Attr { - if a.Name.Local == attr { - return a.Value - } - } - panic("unknown attribute " + attr) -} - -func TestSpecPartLess(t *testing.T) { - tests := []struct { - sec1, sec2 string - want bool - }{ - {"6.2.1", "6.2", false}, - {"6.2", "6.2.1", true}, - {"6.10", "6.10.1", true}, - {"6.10", "6.1.1", false}, // 10, not 1 - {"6.1", "6.1", false}, // equal, so not less - } - for _, tt := range tests { - got := (specPart{tt.sec1, "foo"}).Less(specPart{tt.sec2, "foo"}) - if got != tt.want { - t.Errorf("Less(%q, %q) = %v; want %v", tt.sec1, tt.sec2, got, tt.want) - } - } -} diff --git a/vendor/golang.org/x/net/icmp/dstunreach.go b/vendor/golang.org/x/net/icmp/dstunreach.go deleted file mode 100644 index 75db991d..00000000 --- a/vendor/golang.org/x/net/icmp/dstunreach.go +++ /dev/null @@ -1,41 +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 icmp - -// A DstUnreach represents an ICMP destination unreachable message -// body. -type DstUnreach struct { - Data []byte // data, known as original datagram field - Extensions []Extension // extensions -} - -// Len implements the Len method of MessageBody interface. -func (p *DstUnreach) Len(proto int) int { - if p == nil { - return 0 - } - l, _ := multipartMessageBodyDataLen(proto, p.Data, p.Extensions) - return 4 + l -} - -// Marshal implements the Marshal method of MessageBody interface. -func (p *DstUnreach) Marshal(proto int) ([]byte, error) { - return marshalMultipartMessageBody(proto, p.Data, p.Extensions) -} - -// parseDstUnreach parses b as an ICMP destination unreachable message -// body. -func parseDstUnreach(proto int, b []byte) (MessageBody, error) { - if len(b) < 4 { - return nil, errMessageTooShort - } - p := &DstUnreach{} - var err error - p.Data, p.Extensions, err = parseMultipartMessageBody(proto, b) - if err != nil { - return nil, err - } - return p, nil -} diff --git a/vendor/golang.org/x/net/icmp/echo.go b/vendor/golang.org/x/net/icmp/echo.go deleted file mode 100644 index e6f15efd..00000000 --- a/vendor/golang.org/x/net/icmp/echo.go +++ /dev/null @@ -1,45 +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 icmp - -import "encoding/binary" - -// An Echo represents an ICMP echo request or reply message body. -type Echo struct { - ID int // identifier - Seq int // sequence number - Data []byte // data -} - -// Len implements the Len method of MessageBody interface. -func (p *Echo) Len(proto int) int { - if p == nil { - return 0 - } - return 4 + len(p.Data) -} - -// Marshal implements the Marshal method of MessageBody interface. -func (p *Echo) Marshal(proto int) ([]byte, error) { - b := make([]byte, 4+len(p.Data)) - binary.BigEndian.PutUint16(b[:2], uint16(p.ID)) - binary.BigEndian.PutUint16(b[2:4], uint16(p.Seq)) - copy(b[4:], p.Data) - return b, nil -} - -// parseEcho parses b as an ICMP echo request or reply message body. -func parseEcho(proto int, b []byte) (MessageBody, error) { - bodyLen := len(b) - if bodyLen < 4 { - return nil, errMessageTooShort - } - p := &Echo{ID: int(binary.BigEndian.Uint16(b[:2])), Seq: int(binary.BigEndian.Uint16(b[2:4]))} - if bodyLen > 4 { - p.Data = make([]byte, bodyLen-4) - copy(p.Data, b[4:]) - } - return p, nil -} diff --git a/vendor/golang.org/x/net/icmp/endpoint.go b/vendor/golang.org/x/net/icmp/endpoint.go deleted file mode 100644 index a68bfb01..00000000 --- a/vendor/golang.org/x/net/icmp/endpoint.go +++ /dev/null @@ -1,113 +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 icmp - -import ( - "net" - "runtime" - "syscall" - "time" - - "golang.org/x/net/ipv4" - "golang.org/x/net/ipv6" -) - -var _ net.PacketConn = &PacketConn{} - -// A PacketConn represents a packet network endpoint that uses either -// ICMPv4 or ICMPv6. -type PacketConn struct { - c net.PacketConn - p4 *ipv4.PacketConn - p6 *ipv6.PacketConn -} - -func (c *PacketConn) ok() bool { return c != nil && c.c != nil } - -// IPv4PacketConn returns the ipv4.PacketConn of c. -// It returns nil when c is not created as the endpoint for ICMPv4. -func (c *PacketConn) IPv4PacketConn() *ipv4.PacketConn { - if !c.ok() { - return nil - } - return c.p4 -} - -// IPv6PacketConn returns the ipv6.PacketConn of c. -// It returns nil when c is not created as the endpoint for ICMPv6. -func (c *PacketConn) IPv6PacketConn() *ipv6.PacketConn { - if !c.ok() { - return nil - } - return c.p6 -} - -// ReadFrom reads an ICMP message from the connection. -func (c *PacketConn) ReadFrom(b []byte) (int, net.Addr, error) { - if !c.ok() { - return 0, nil, syscall.EINVAL - } - // Please be informed that ipv4.NewPacketConn enables - // IP_STRIPHDR option by default on Darwin. - // See golang.org/issue/9395 for further information. - if runtime.GOOS == "darwin" && c.p4 != nil { - n, _, peer, err := c.p4.ReadFrom(b) - return n, peer, err - } - return c.c.ReadFrom(b) -} - -// WriteTo writes the ICMP message b to dst. -// Dst must be net.UDPAddr when c is a non-privileged -// datagram-oriented ICMP endpoint. Otherwise it must be net.IPAddr. -func (c *PacketConn) WriteTo(b []byte, dst net.Addr) (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - return c.c.WriteTo(b, dst) -} - -// Close closes the endpoint. -func (c *PacketConn) Close() error { - if !c.ok() { - return syscall.EINVAL - } - return c.c.Close() -} - -// LocalAddr returns the local network address. -func (c *PacketConn) LocalAddr() net.Addr { - if !c.ok() { - return nil - } - return c.c.LocalAddr() -} - -// SetDeadline sets the read and write deadlines associated with the -// endpoint. -func (c *PacketConn) SetDeadline(t time.Time) error { - if !c.ok() { - return syscall.EINVAL - } - return c.c.SetDeadline(t) -} - -// SetReadDeadline sets the read deadline associated with the -// endpoint. -func (c *PacketConn) SetReadDeadline(t time.Time) error { - if !c.ok() { - return syscall.EINVAL - } - return c.c.SetReadDeadline(t) -} - -// SetWriteDeadline sets the write deadline associated with the -// endpoint. -func (c *PacketConn) SetWriteDeadline(t time.Time) error { - if !c.ok() { - return syscall.EINVAL - } - return c.c.SetWriteDeadline(t) -} diff --git a/vendor/golang.org/x/net/icmp/example_test.go b/vendor/golang.org/x/net/icmp/example_test.go deleted file mode 100644 index 1df4cecc..00000000 --- a/vendor/golang.org/x/net/icmp/example_test.go +++ /dev/null @@ -1,63 +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 icmp_test - -import ( - "log" - "net" - "os" - "runtime" - - "golang.org/x/net/icmp" - "golang.org/x/net/ipv6" -) - -func ExamplePacketConn_nonPrivilegedPing() { - switch runtime.GOOS { - case "darwin": - case "linux": - log.Println("you may need to adjust the net.ipv4.ping_group_range kernel state") - default: - log.Println("not supported on", runtime.GOOS) - return - } - - c, err := icmp.ListenPacket("udp6", "fe80::1%en0") - if err != nil { - log.Fatal(err) - } - defer c.Close() - - wm := icmp.Message{ - Type: ipv6.ICMPTypeEchoRequest, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, Seq: 1, - Data: []byte("HELLO-R-U-THERE"), - }, - } - wb, err := wm.Marshal(nil) - if err != nil { - log.Fatal(err) - } - if _, err := c.WriteTo(wb, &net.UDPAddr{IP: net.ParseIP("ff02::1"), Zone: "en0"}); err != nil { - log.Fatal(err) - } - - rb := make([]byte, 1500) - n, peer, err := c.ReadFrom(rb) - if err != nil { - log.Fatal(err) - } - rm, err := icmp.ParseMessage(58, rb[:n]) - if err != nil { - log.Fatal(err) - } - switch rm.Type { - case ipv6.ICMPTypeEchoReply: - log.Printf("got reflection from %v", peer) - default: - log.Printf("got %+v; want echo reply", rm) - } -} diff --git a/vendor/golang.org/x/net/icmp/extension.go b/vendor/golang.org/x/net/icmp/extension.go deleted file mode 100644 index 402a7514..00000000 --- a/vendor/golang.org/x/net/icmp/extension.go +++ /dev/null @@ -1,89 +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 icmp - -import "encoding/binary" - -// An Extension represents an ICMP extension. -type Extension interface { - // Len returns the length of ICMP extension. - // Proto must be either the ICMPv4 or ICMPv6 protocol number. - Len(proto int) int - - // Marshal returns the binary encoding of ICMP extension. - // Proto must be either the ICMPv4 or ICMPv6 protocol number. - Marshal(proto int) ([]byte, error) -} - -const extensionVersion = 2 - -func validExtensionHeader(b []byte) bool { - v := int(b[0]&0xf0) >> 4 - s := binary.BigEndian.Uint16(b[2:4]) - if s != 0 { - s = checksum(b) - } - if v != extensionVersion || s != 0 { - return false - } - return true -} - -// parseExtensions parses b as a list of ICMP extensions. -// The length attribute l must be the length attribute field in -// received icmp messages. -// -// It will return a list of ICMP extensions and an adjusted length -// attribute that represents the length of the padded original -// datagram field. Otherwise, it returns an error. -func parseExtensions(b []byte, l int) ([]Extension, int, error) { - // Still a lot of non-RFC 4884 compliant implementations are - // out there. Set the length attribute l to 128 when it looks - // inappropriate for backwards compatibility. - // - // A minimal extension at least requires 8 octets; 4 octets - // for an extension header, and 4 octets for a single object - // header. - // - // See RFC 4884 for further information. - if 128 > l || l+8 > len(b) { - l = 128 - } - if l+8 > len(b) { - return nil, -1, errNoExtension - } - if !validExtensionHeader(b[l:]) { - if l == 128 { - return nil, -1, errNoExtension - } - l = 128 - if !validExtensionHeader(b[l:]) { - return nil, -1, errNoExtension - } - } - var exts []Extension - for b = b[l+4:]; len(b) >= 4; { - ol := int(binary.BigEndian.Uint16(b[:2])) - if 4 > ol || ol > len(b) { - break - } - switch b[2] { - case classMPLSLabelStack: - ext, err := parseMPLSLabelStack(b[:ol]) - if err != nil { - return nil, -1, err - } - exts = append(exts, ext) - case classInterfaceInfo: - ext, err := parseInterfaceInfo(b[:ol]) - if err != nil { - return nil, -1, err - } - exts = append(exts, ext) - } - b = b[ol:] - } - return exts, l, nil -} diff --git a/vendor/golang.org/x/net/icmp/extension_test.go b/vendor/golang.org/x/net/icmp/extension_test.go deleted file mode 100644 index 0b3f7b9e..00000000 --- a/vendor/golang.org/x/net/icmp/extension_test.go +++ /dev/null @@ -1,259 +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 icmp - -import ( - "net" - "reflect" - "testing" - - "golang.org/x/net/internal/iana" -) - -var marshalAndParseExtensionTests = []struct { - proto int - hdr []byte - obj []byte - exts []Extension -}{ - // MPLS label stack with no label - { - proto: iana.ProtocolICMP, - hdr: []byte{ - 0x20, 0x00, 0x00, 0x00, - }, - obj: []byte{ - 0x00, 0x04, 0x01, 0x01, - }, - exts: []Extension{ - &MPLSLabelStack{ - Class: classMPLSLabelStack, - Type: typeIncomingMPLSLabelStack, - }, - }, - }, - // MPLS label stack with a single label - { - proto: iana.ProtocolIPv6ICMP, - hdr: []byte{ - 0x20, 0x00, 0x00, 0x00, - }, - obj: []byte{ - 0x00, 0x08, 0x01, 0x01, - 0x03, 0xe8, 0xe9, 0xff, - }, - exts: []Extension{ - &MPLSLabelStack{ - Class: classMPLSLabelStack, - Type: typeIncomingMPLSLabelStack, - Labels: []MPLSLabel{ - { - Label: 16014, - TC: 0x4, - S: true, - TTL: 255, - }, - }, - }, - }, - }, - // MPLS label stack with multiple labels - { - proto: iana.ProtocolICMP, - hdr: []byte{ - 0x20, 0x00, 0x00, 0x00, - }, - obj: []byte{ - 0x00, 0x0c, 0x01, 0x01, - 0x03, 0xe8, 0xde, 0xfe, - 0x03, 0xe8, 0xe1, 0xff, - }, - exts: []Extension{ - &MPLSLabelStack{ - Class: classMPLSLabelStack, - Type: typeIncomingMPLSLabelStack, - Labels: []MPLSLabel{ - { - Label: 16013, - TC: 0x7, - S: false, - TTL: 254, - }, - { - Label: 16014, - TC: 0, - S: true, - TTL: 255, - }, - }, - }, - }, - }, - // Interface information with no attribute - { - proto: iana.ProtocolICMP, - hdr: []byte{ - 0x20, 0x00, 0x00, 0x00, - }, - obj: []byte{ - 0x00, 0x04, 0x02, 0x00, - }, - exts: []Extension{ - &InterfaceInfo{ - Class: classInterfaceInfo, - }, - }, - }, - // Interface information with ifIndex and name - { - proto: iana.ProtocolICMP, - hdr: []byte{ - 0x20, 0x00, 0x00, 0x00, - }, - obj: []byte{ - 0x00, 0x10, 0x02, 0x0a, - 0x00, 0x00, 0x00, 0x10, - 0x08, byte('e'), byte('n'), byte('1'), - byte('0'), byte('1'), 0x00, 0x00, - }, - exts: []Extension{ - &InterfaceInfo{ - Class: classInterfaceInfo, - Type: 0x0a, - Interface: &net.Interface{ - Index: 16, - Name: "en101", - }, - }, - }, - }, - // Interface information with ifIndex, IPAddr, name and MTU - { - proto: iana.ProtocolIPv6ICMP, - hdr: []byte{ - 0x20, 0x00, 0x00, 0x00, - }, - obj: []byte{ - 0x00, 0x28, 0x02, 0x0f, - 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x02, 0x00, 0x00, - 0xfe, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x08, byte('e'), byte('n'), byte('1'), - byte('0'), byte('1'), 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, - }, - exts: []Extension{ - &InterfaceInfo{ - Class: classInterfaceInfo, - Type: 0x0f, - Interface: &net.Interface{ - Index: 15, - Name: "en101", - MTU: 8192, - }, - Addr: &net.IPAddr{ - IP: net.ParseIP("fe80::1"), - Zone: "en101", - }, - }, - }, - }, -} - -func TestMarshalAndParseExtension(t *testing.T) { - for i, tt := range marshalAndParseExtensionTests { - for j, ext := range tt.exts { - var err error - var b []byte - switch ext := ext.(type) { - case *MPLSLabelStack: - b, err = ext.Marshal(tt.proto) - if err != nil { - t.Errorf("#%v/%v: %v", i, j, err) - continue - } - case *InterfaceInfo: - b, err = ext.Marshal(tt.proto) - if err != nil { - t.Errorf("#%v/%v: %v", i, j, err) - continue - } - } - if !reflect.DeepEqual(b, tt.obj) { - t.Errorf("#%v/%v: got %#v; want %#v", i, j, b, tt.obj) - continue - } - } - - for j, wire := range []struct { - data []byte // original datagram - inlattr int // length of padded original datagram, a hint - outlattr int // length of padded original datagram, a want - err error - }{ - {nil, 0, -1, errNoExtension}, - {make([]byte, 127), 128, -1, errNoExtension}, - - {make([]byte, 128), 127, -1, errNoExtension}, - {make([]byte, 128), 128, -1, errNoExtension}, - {make([]byte, 128), 129, -1, errNoExtension}, - - {append(make([]byte, 128), append(tt.hdr, tt.obj...)...), 127, 128, nil}, - {append(make([]byte, 128), append(tt.hdr, tt.obj...)...), 128, 128, nil}, - {append(make([]byte, 128), append(tt.hdr, tt.obj...)...), 129, 128, nil}, - - {append(make([]byte, 512), append(tt.hdr, tt.obj...)...), 511, -1, errNoExtension}, - {append(make([]byte, 512), append(tt.hdr, tt.obj...)...), 512, 512, nil}, - {append(make([]byte, 512), append(tt.hdr, tt.obj...)...), 513, -1, errNoExtension}, - } { - exts, l, err := parseExtensions(wire.data, wire.inlattr) - if err != wire.err { - t.Errorf("#%v/%v: got %v; want %v", i, j, err, wire.err) - continue - } - if wire.err != nil { - continue - } - if l != wire.outlattr { - t.Errorf("#%v/%v: got %v; want %v", i, j, l, wire.outlattr) - } - if !reflect.DeepEqual(exts, tt.exts) { - for j, ext := range exts { - switch ext := ext.(type) { - case *MPLSLabelStack: - want := tt.exts[j].(*MPLSLabelStack) - t.Errorf("#%v/%v: got %#v; want %#v", i, j, ext, want) - case *InterfaceInfo: - want := tt.exts[j].(*InterfaceInfo) - t.Errorf("#%v/%v: got %#v; want %#v", i, j, ext, want) - } - } - continue - } - } - } -} - -var parseInterfaceNameTests = []struct { - b []byte - error -}{ - {[]byte{0, 'e', 'n', '0'}, errInvalidExtension}, - {[]byte{4, 'e', 'n', '0'}, nil}, - {[]byte{7, 'e', 'n', '0', 0xff, 0xff, 0xff, 0xff}, errInvalidExtension}, - {[]byte{8, 'e', 'n', '0', 0xff, 0xff, 0xff}, errMessageTooShort}, -} - -func TestParseInterfaceName(t *testing.T) { - ifi := InterfaceInfo{Interface: &net.Interface{}} - for i, tt := range parseInterfaceNameTests { - if _, err := ifi.parseName(tt.b); err != tt.error { - t.Errorf("#%d: got %v; want %v", i, err, tt.error) - } - } -} diff --git a/vendor/golang.org/x/net/icmp/helper_posix.go b/vendor/golang.org/x/net/icmp/helper_posix.go deleted file mode 100644 index 398fd388..00000000 --- a/vendor/golang.org/x/net/icmp/helper_posix.go +++ /dev/null @@ -1,75 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package icmp - -import ( - "net" - "strconv" - "syscall" -) - -func sockaddr(family int, address string) (syscall.Sockaddr, error) { - switch family { - case syscall.AF_INET: - a, err := net.ResolveIPAddr("ip4", address) - if err != nil { - return nil, err - } - if len(a.IP) == 0 { - a.IP = net.IPv4zero - } - if a.IP = a.IP.To4(); a.IP == nil { - return nil, net.InvalidAddrError("non-ipv4 address") - } - sa := &syscall.SockaddrInet4{} - copy(sa.Addr[:], a.IP) - return sa, nil - case syscall.AF_INET6: - a, err := net.ResolveIPAddr("ip6", address) - if err != nil { - return nil, err - } - if len(a.IP) == 0 { - a.IP = net.IPv6unspecified - } - if a.IP.Equal(net.IPv4zero) { - a.IP = net.IPv6unspecified - } - if a.IP = a.IP.To16(); a.IP == nil || a.IP.To4() != nil { - return nil, net.InvalidAddrError("non-ipv6 address") - } - sa := &syscall.SockaddrInet6{ZoneId: zoneToUint32(a.Zone)} - copy(sa.Addr[:], a.IP) - return sa, nil - default: - return nil, net.InvalidAddrError("unexpected family") - } -} - -func zoneToUint32(zone string) uint32 { - if zone == "" { - return 0 - } - if ifi, err := net.InterfaceByName(zone); err == nil { - return uint32(ifi.Index) - } - n, err := strconv.Atoi(zone) - if err != nil { - return 0 - } - return uint32(n) -} - -func last(s string, b byte) int { - i := len(s) - for i--; i >= 0; i-- { - if s[i] == b { - break - } - } - return i -} diff --git a/vendor/golang.org/x/net/icmp/interface.go b/vendor/golang.org/x/net/icmp/interface.go deleted file mode 100644 index 78b5b98b..00000000 --- a/vendor/golang.org/x/net/icmp/interface.go +++ /dev/null @@ -1,236 +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 icmp - -import ( - "encoding/binary" - "net" - "strings" - - "golang.org/x/net/internal/iana" -) - -const ( - classInterfaceInfo = 2 - - afiIPv4 = 1 - afiIPv6 = 2 -) - -const ( - attrMTU = 1 << iota - attrName - attrIPAddr - attrIfIndex -) - -// An InterfaceInfo represents interface and next-hop identification. -type InterfaceInfo struct { - Class int // extension object class number - Type int // extension object sub-type - Interface *net.Interface - Addr *net.IPAddr -} - -func (ifi *InterfaceInfo) nameLen() int { - if len(ifi.Interface.Name) > 63 { - return 64 - } - l := 1 + len(ifi.Interface.Name) - return (l + 3) &^ 3 -} - -func (ifi *InterfaceInfo) attrsAndLen(proto int) (attrs, l int) { - l = 4 - if ifi.Interface != nil && ifi.Interface.Index > 0 { - attrs |= attrIfIndex - l += 4 - if len(ifi.Interface.Name) > 0 { - attrs |= attrName - l += ifi.nameLen() - } - if ifi.Interface.MTU > 0 { - attrs |= attrMTU - l += 4 - } - } - if ifi.Addr != nil { - switch proto { - case iana.ProtocolICMP: - if ifi.Addr.IP.To4() != nil { - attrs |= attrIPAddr - l += 4 + net.IPv4len - } - case iana.ProtocolIPv6ICMP: - if ifi.Addr.IP.To16() != nil && ifi.Addr.IP.To4() == nil { - attrs |= attrIPAddr - l += 4 + net.IPv6len - } - } - } - return -} - -// Len implements the Len method of Extension interface. -func (ifi *InterfaceInfo) Len(proto int) int { - _, l := ifi.attrsAndLen(proto) - return l -} - -// Marshal implements the Marshal method of Extension interface. -func (ifi *InterfaceInfo) Marshal(proto int) ([]byte, error) { - attrs, l := ifi.attrsAndLen(proto) - b := make([]byte, l) - if err := ifi.marshal(proto, b, attrs, l); err != nil { - return nil, err - } - return b, nil -} - -func (ifi *InterfaceInfo) marshal(proto int, b []byte, attrs, l int) error { - binary.BigEndian.PutUint16(b[:2], uint16(l)) - b[2], b[3] = classInterfaceInfo, byte(ifi.Type) - for b = b[4:]; len(b) > 0 && attrs != 0; { - switch { - case attrs&attrIfIndex != 0: - b = ifi.marshalIfIndex(proto, b) - attrs &^= attrIfIndex - case attrs&attrIPAddr != 0: - b = ifi.marshalIPAddr(proto, b) - attrs &^= attrIPAddr - case attrs&attrName != 0: - b = ifi.marshalName(proto, b) - attrs &^= attrName - case attrs&attrMTU != 0: - b = ifi.marshalMTU(proto, b) - attrs &^= attrMTU - } - } - return nil -} - -func (ifi *InterfaceInfo) marshalIfIndex(proto int, b []byte) []byte { - binary.BigEndian.PutUint32(b[:4], uint32(ifi.Interface.Index)) - return b[4:] -} - -func (ifi *InterfaceInfo) parseIfIndex(b []byte) ([]byte, error) { - if len(b) < 4 { - return nil, errMessageTooShort - } - ifi.Interface.Index = int(binary.BigEndian.Uint32(b[:4])) - return b[4:], nil -} - -func (ifi *InterfaceInfo) marshalIPAddr(proto int, b []byte) []byte { - switch proto { - case iana.ProtocolICMP: - binary.BigEndian.PutUint16(b[:2], uint16(afiIPv4)) - copy(b[4:4+net.IPv4len], ifi.Addr.IP.To4()) - b = b[4+net.IPv4len:] - case iana.ProtocolIPv6ICMP: - binary.BigEndian.PutUint16(b[:2], uint16(afiIPv6)) - copy(b[4:4+net.IPv6len], ifi.Addr.IP.To16()) - b = b[4+net.IPv6len:] - } - return b -} - -func (ifi *InterfaceInfo) parseIPAddr(b []byte) ([]byte, error) { - if len(b) < 4 { - return nil, errMessageTooShort - } - afi := int(binary.BigEndian.Uint16(b[:2])) - b = b[4:] - switch afi { - case afiIPv4: - if len(b) < net.IPv4len { - return nil, errMessageTooShort - } - ifi.Addr.IP = make(net.IP, net.IPv4len) - copy(ifi.Addr.IP, b[:net.IPv4len]) - b = b[net.IPv4len:] - case afiIPv6: - if len(b) < net.IPv6len { - return nil, errMessageTooShort - } - ifi.Addr.IP = make(net.IP, net.IPv6len) - copy(ifi.Addr.IP, b[:net.IPv6len]) - b = b[net.IPv6len:] - } - return b, nil -} - -func (ifi *InterfaceInfo) marshalName(proto int, b []byte) []byte { - l := byte(ifi.nameLen()) - b[0] = l - copy(b[1:], []byte(ifi.Interface.Name)) - return b[l:] -} - -func (ifi *InterfaceInfo) parseName(b []byte) ([]byte, error) { - if 4 > len(b) || len(b) < int(b[0]) { - return nil, errMessageTooShort - } - l := int(b[0]) - if l%4 != 0 || 4 > l || l > 64 { - return nil, errInvalidExtension - } - var name [63]byte - copy(name[:], b[1:l]) - ifi.Interface.Name = strings.Trim(string(name[:]), "\000") - return b[l:], nil -} - -func (ifi *InterfaceInfo) marshalMTU(proto int, b []byte) []byte { - binary.BigEndian.PutUint32(b[:4], uint32(ifi.Interface.MTU)) - return b[4:] -} - -func (ifi *InterfaceInfo) parseMTU(b []byte) ([]byte, error) { - if len(b) < 4 { - return nil, errMessageTooShort - } - ifi.Interface.MTU = int(binary.BigEndian.Uint32(b[:4])) - return b[4:], nil -} - -func parseInterfaceInfo(b []byte) (Extension, error) { - ifi := &InterfaceInfo{ - Class: int(b[2]), - Type: int(b[3]), - } - if ifi.Type&(attrIfIndex|attrName|attrMTU) != 0 { - ifi.Interface = &net.Interface{} - } - if ifi.Type&attrIPAddr != 0 { - ifi.Addr = &net.IPAddr{} - } - attrs := ifi.Type & (attrIfIndex | attrIPAddr | attrName | attrMTU) - for b = b[4:]; len(b) > 0 && attrs != 0; { - var err error - switch { - case attrs&attrIfIndex != 0: - b, err = ifi.parseIfIndex(b) - attrs &^= attrIfIndex - case attrs&attrIPAddr != 0: - b, err = ifi.parseIPAddr(b) - attrs &^= attrIPAddr - case attrs&attrName != 0: - b, err = ifi.parseName(b) - attrs &^= attrName - case attrs&attrMTU != 0: - b, err = ifi.parseMTU(b) - attrs &^= attrMTU - } - if err != nil { - return nil, err - } - } - if ifi.Interface != nil && ifi.Interface.Name != "" && ifi.Addr != nil && ifi.Addr.IP.To16() != nil && ifi.Addr.IP.To4() == nil { - ifi.Addr.Zone = ifi.Interface.Name - } - return ifi, nil -} diff --git a/vendor/golang.org/x/net/icmp/ipv4.go b/vendor/golang.org/x/net/icmp/ipv4.go deleted file mode 100644 index ffc66ed4..00000000 --- a/vendor/golang.org/x/net/icmp/ipv4.go +++ /dev/null @@ -1,61 +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 icmp - -import ( - "encoding/binary" - "net" - "runtime" - - "golang.org/x/net/internal/socket" - "golang.org/x/net/ipv4" -) - -// freebsdVersion is set in sys_freebsd.go. -// See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html. -var freebsdVersion uint32 - -// ParseIPv4Header parses b as an IPv4 header of ICMP error message -// invoking packet, which is contained in ICMP error message. -func ParseIPv4Header(b []byte) (*ipv4.Header, error) { - if len(b) < ipv4.HeaderLen { - return nil, errHeaderTooShort - } - hdrlen := int(b[0]&0x0f) << 2 - if hdrlen > len(b) { - return nil, errBufferTooShort - } - h := &ipv4.Header{ - Version: int(b[0] >> 4), - Len: hdrlen, - TOS: int(b[1]), - ID: int(binary.BigEndian.Uint16(b[4:6])), - FragOff: int(binary.BigEndian.Uint16(b[6:8])), - TTL: int(b[8]), - Protocol: int(b[9]), - Checksum: int(binary.BigEndian.Uint16(b[10:12])), - Src: net.IPv4(b[12], b[13], b[14], b[15]), - Dst: net.IPv4(b[16], b[17], b[18], b[19]), - } - switch runtime.GOOS { - case "darwin": - h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) - case "freebsd": - if freebsdVersion >= 1000000 { - h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) - } else { - h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) - } - default: - h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) - } - h.Flags = ipv4.HeaderFlags(h.FragOff&0xe000) >> 13 - h.FragOff = h.FragOff & 0x1fff - if hdrlen-ipv4.HeaderLen > 0 { - h.Options = make([]byte, hdrlen-ipv4.HeaderLen) - copy(h.Options, b[ipv4.HeaderLen:]) - } - return h, nil -} diff --git a/vendor/golang.org/x/net/icmp/ipv4_test.go b/vendor/golang.org/x/net/icmp/ipv4_test.go deleted file mode 100644 index 058953f4..00000000 --- a/vendor/golang.org/x/net/icmp/ipv4_test.go +++ /dev/null @@ -1,83 +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 icmp - -import ( - "encoding/binary" - "net" - "reflect" - "runtime" - "testing" - - "golang.org/x/net/internal/socket" - "golang.org/x/net/ipv4" -) - -type ipv4HeaderTest struct { - wireHeaderFromKernel [ipv4.HeaderLen]byte - wireHeaderFromTradBSDKernel [ipv4.HeaderLen]byte - Header *ipv4.Header -} - -var ipv4HeaderLittleEndianTest = ipv4HeaderTest{ - // TODO(mikio): Add platform dependent wire header formats when - // we support new platforms. - wireHeaderFromKernel: [ipv4.HeaderLen]byte{ - 0x45, 0x01, 0xbe, 0xef, - 0xca, 0xfe, 0x45, 0xdc, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderFromTradBSDKernel: [ipv4.HeaderLen]byte{ - 0x45, 0x01, 0xef, 0xbe, - 0xca, 0xfe, 0x45, 0xdc, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - Header: &ipv4.Header{ - Version: ipv4.Version, - Len: ipv4.HeaderLen, - TOS: 1, - TotalLen: 0xbeef, - ID: 0xcafe, - Flags: ipv4.DontFragment, - FragOff: 1500, - TTL: 255, - Protocol: 1, - Checksum: 0xdead, - Src: net.IPv4(172, 16, 254, 254), - Dst: net.IPv4(192, 168, 0, 1), - }, -} - -func TestParseIPv4Header(t *testing.T) { - tt := &ipv4HeaderLittleEndianTest - if socket.NativeEndian != binary.LittleEndian { - t.Skip("no test for non-little endian machine yet") - } - - var wh []byte - switch runtime.GOOS { - case "darwin": - wh = tt.wireHeaderFromTradBSDKernel[:] - case "freebsd": - if freebsdVersion >= 1000000 { - wh = tt.wireHeaderFromKernel[:] - } else { - wh = tt.wireHeaderFromTradBSDKernel[:] - } - default: - wh = tt.wireHeaderFromKernel[:] - } - h, err := ParseIPv4Header(wh) - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(h, tt.Header) { - t.Fatalf("got %#v; want %#v", h, tt.Header) - } -} diff --git a/vendor/golang.org/x/net/icmp/ipv6.go b/vendor/golang.org/x/net/icmp/ipv6.go deleted file mode 100644 index 2e8cfeb1..00000000 --- a/vendor/golang.org/x/net/icmp/ipv6.go +++ /dev/null @@ -1,23 +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 icmp - -import ( - "net" - - "golang.org/x/net/internal/iana" -) - -const ipv6PseudoHeaderLen = 2*net.IPv6len + 8 - -// IPv6PseudoHeader returns an IPv6 pseudo header for checksum -// calculation. -func IPv6PseudoHeader(src, dst net.IP) []byte { - b := make([]byte, ipv6PseudoHeaderLen) - copy(b, src.To16()) - copy(b[net.IPv6len:], dst.To16()) - b[len(b)-1] = byte(iana.ProtocolIPv6ICMP) - return b -} diff --git a/vendor/golang.org/x/net/icmp/listen_posix.go b/vendor/golang.org/x/net/icmp/listen_posix.go deleted file mode 100644 index 7fac4f96..00000000 --- a/vendor/golang.org/x/net/icmp/listen_posix.go +++ /dev/null @@ -1,100 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package icmp - -import ( - "net" - "os" - "runtime" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/ipv4" - "golang.org/x/net/ipv6" -) - -const sysIP_STRIPHDR = 0x17 // for now only darwin supports this option - -// ListenPacket listens for incoming ICMP packets addressed to -// address. See net.Dial for the syntax of address. -// -// For non-privileged datagram-oriented ICMP endpoints, network must -// be "udp4" or "udp6". The endpoint allows to read, write a few -// limited ICMP messages such as echo request and echo reply. -// Currently only Darwin and Linux support this. -// -// Examples: -// ListenPacket("udp4", "192.168.0.1") -// ListenPacket("udp4", "0.0.0.0") -// ListenPacket("udp6", "fe80::1%en0") -// ListenPacket("udp6", "::") -// -// For privileged raw ICMP endpoints, network must be "ip4" or "ip6" -// followed by a colon and an ICMP protocol number or name. -// -// Examples: -// ListenPacket("ip4:icmp", "192.168.0.1") -// ListenPacket("ip4:1", "0.0.0.0") -// ListenPacket("ip6:ipv6-icmp", "fe80::1%en0") -// ListenPacket("ip6:58", "::") -func ListenPacket(network, address string) (*PacketConn, error) { - var family, proto int - switch network { - case "udp4": - family, proto = syscall.AF_INET, iana.ProtocolICMP - case "udp6": - family, proto = syscall.AF_INET6, iana.ProtocolIPv6ICMP - default: - i := last(network, ':') - switch network[:i] { - case "ip4": - proto = iana.ProtocolICMP - case "ip6": - proto = iana.ProtocolIPv6ICMP - } - } - var cerr error - var c net.PacketConn - switch family { - case syscall.AF_INET, syscall.AF_INET6: - s, err := syscall.Socket(family, syscall.SOCK_DGRAM, proto) - if err != nil { - return nil, os.NewSyscallError("socket", err) - } - if runtime.GOOS == "darwin" && family == syscall.AF_INET { - if err := syscall.SetsockoptInt(s, iana.ProtocolIP, sysIP_STRIPHDR, 1); err != nil { - syscall.Close(s) - return nil, os.NewSyscallError("setsockopt", err) - } - } - sa, err := sockaddr(family, address) - if err != nil { - syscall.Close(s) - return nil, err - } - if err := syscall.Bind(s, sa); err != nil { - syscall.Close(s) - return nil, os.NewSyscallError("bind", err) - } - f := os.NewFile(uintptr(s), "datagram-oriented icmp") - c, cerr = net.FilePacketConn(f) - f.Close() - default: - c, cerr = net.ListenPacket(network, address) - } - if cerr != nil { - return nil, cerr - } - switch proto { - case iana.ProtocolICMP: - return &PacketConn{c: c, p4: ipv4.NewPacketConn(c)}, nil - case iana.ProtocolIPv6ICMP: - return &PacketConn{c: c, p6: ipv6.NewPacketConn(c)}, nil - default: - return &PacketConn{c: c}, nil - } -} diff --git a/vendor/golang.org/x/net/icmp/listen_stub.go b/vendor/golang.org/x/net/icmp/listen_stub.go deleted file mode 100644 index 668728d1..00000000 --- a/vendor/golang.org/x/net/icmp/listen_stub.go +++ /dev/null @@ -1,33 +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. - -// +build nacl plan9 - -package icmp - -// ListenPacket listens for incoming ICMP packets addressed to -// address. See net.Dial for the syntax of address. -// -// For non-privileged datagram-oriented ICMP endpoints, network must -// be "udp4" or "udp6". The endpoint allows to read, write a few -// limited ICMP messages such as echo request and echo reply. -// Currently only Darwin and Linux support this. -// -// Examples: -// ListenPacket("udp4", "192.168.0.1") -// ListenPacket("udp4", "0.0.0.0") -// ListenPacket("udp6", "fe80::1%en0") -// ListenPacket("udp6", "::") -// -// For privileged raw ICMP endpoints, network must be "ip4" or "ip6" -// followed by a colon and an ICMP protocol number or name. -// -// Examples: -// ListenPacket("ip4:icmp", "192.168.0.1") -// ListenPacket("ip4:1", "0.0.0.0") -// ListenPacket("ip6:ipv6-icmp", "fe80::1%en0") -// ListenPacket("ip6:58", "::") -func ListenPacket(network, address string) (*PacketConn, error) { - return nil, errOpNoSupport -} diff --git a/vendor/golang.org/x/net/icmp/message.go b/vendor/golang.org/x/net/icmp/message.go deleted file mode 100644 index 81140b0d..00000000 --- a/vendor/golang.org/x/net/icmp/message.go +++ /dev/null @@ -1,152 +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 icmp provides basic functions for the manipulation of -// messages used in the Internet Control Message Protocols, -// ICMPv4 and ICMPv6. -// -// ICMPv4 and ICMPv6 are defined in RFC 792 and RFC 4443. -// Multi-part message support for ICMP is defined in RFC 4884. -// ICMP extensions for MPLS are defined in RFC 4950. -// ICMP extensions for interface and next-hop identification are -// defined in RFC 5837. -package icmp // import "golang.org/x/net/icmp" - -import ( - "encoding/binary" - "errors" - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/ipv4" - "golang.org/x/net/ipv6" -) - -// BUG(mikio): This package is not implemented on NaCl and Plan 9. - -var ( - errMessageTooShort = errors.New("message too short") - errHeaderTooShort = errors.New("header too short") - errBufferTooShort = errors.New("buffer too short") - errOpNoSupport = errors.New("operation not supported") - errNoExtension = errors.New("no extension") - errInvalidExtension = errors.New("invalid extension") -) - -func checksum(b []byte) uint16 { - csumcv := len(b) - 1 // checksum coverage - s := uint32(0) - for i := 0; i < csumcv; i += 2 { - s += uint32(b[i+1])<<8 | uint32(b[i]) - } - if csumcv&1 == 0 { - s += uint32(b[csumcv]) - } - s = s>>16 + s&0xffff - s = s + s>>16 - return ^uint16(s) -} - -// A Type represents an ICMP message type. -type Type interface { - Protocol() int -} - -// A Message represents an ICMP message. -type Message struct { - Type Type // type, either ipv4.ICMPType or ipv6.ICMPType - Code int // code - Checksum int // checksum - Body MessageBody // body -} - -// Marshal returns the binary encoding of the ICMP message m. -// -// For an ICMPv4 message, the returned message always contains the -// calculated checksum field. -// -// For an ICMPv6 message, the returned message contains the calculated -// checksum field when psh is not nil, otherwise the kernel will -// compute the checksum field during the message transmission. -// When psh is not nil, it must be the pseudo header for IPv6. -func (m *Message) Marshal(psh []byte) ([]byte, error) { - var mtype int - switch typ := m.Type.(type) { - case ipv4.ICMPType: - mtype = int(typ) - case ipv6.ICMPType: - mtype = int(typ) - default: - return nil, syscall.EINVAL - } - b := []byte{byte(mtype), byte(m.Code), 0, 0} - if m.Type.Protocol() == iana.ProtocolIPv6ICMP && psh != nil { - b = append(psh, b...) - } - if m.Body != nil && m.Body.Len(m.Type.Protocol()) != 0 { - mb, err := m.Body.Marshal(m.Type.Protocol()) - if err != nil { - return nil, err - } - b = append(b, mb...) - } - if m.Type.Protocol() == iana.ProtocolIPv6ICMP { - if psh == nil { // cannot calculate checksum here - return b, nil - } - off, l := 2*net.IPv6len, len(b)-len(psh) - binary.BigEndian.PutUint32(b[off:off+4], uint32(l)) - } - s := checksum(b) - // Place checksum back in header; using ^= avoids the - // assumption the checksum bytes are zero. - b[len(psh)+2] ^= byte(s) - b[len(psh)+3] ^= byte(s >> 8) - return b[len(psh):], nil -} - -var parseFns = map[Type]func(int, []byte) (MessageBody, error){ - ipv4.ICMPTypeDestinationUnreachable: parseDstUnreach, - ipv4.ICMPTypeTimeExceeded: parseTimeExceeded, - ipv4.ICMPTypeParameterProblem: parseParamProb, - - ipv4.ICMPTypeEcho: parseEcho, - ipv4.ICMPTypeEchoReply: parseEcho, - - ipv6.ICMPTypeDestinationUnreachable: parseDstUnreach, - ipv6.ICMPTypePacketTooBig: parsePacketTooBig, - ipv6.ICMPTypeTimeExceeded: parseTimeExceeded, - ipv6.ICMPTypeParameterProblem: parseParamProb, - - ipv6.ICMPTypeEchoRequest: parseEcho, - ipv6.ICMPTypeEchoReply: parseEcho, -} - -// ParseMessage parses b as an ICMP message. -// Proto must be either the ICMPv4 or ICMPv6 protocol number. -func ParseMessage(proto int, b []byte) (*Message, error) { - if len(b) < 4 { - return nil, errMessageTooShort - } - var err error - m := &Message{Code: int(b[1]), Checksum: int(binary.BigEndian.Uint16(b[2:4]))} - switch proto { - case iana.ProtocolICMP: - m.Type = ipv4.ICMPType(b[0]) - case iana.ProtocolIPv6ICMP: - m.Type = ipv6.ICMPType(b[0]) - default: - return nil, syscall.EINVAL - } - if fn, ok := parseFns[m.Type]; !ok { - m.Body, err = parseDefaultMessageBody(proto, b[4:]) - } else { - m.Body, err = fn(proto, b[4:]) - } - if err != nil { - return nil, err - } - return m, nil -} diff --git a/vendor/golang.org/x/net/icmp/message_test.go b/vendor/golang.org/x/net/icmp/message_test.go deleted file mode 100644 index 5d2605f8..00000000 --- a/vendor/golang.org/x/net/icmp/message_test.go +++ /dev/null @@ -1,134 +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 icmp_test - -import ( - "net" - "reflect" - "testing" - - "golang.org/x/net/icmp" - "golang.org/x/net/internal/iana" - "golang.org/x/net/ipv4" - "golang.org/x/net/ipv6" -) - -var marshalAndParseMessageForIPv4Tests = []icmp.Message{ - { - Type: ipv4.ICMPTypeDestinationUnreachable, Code: 15, - Body: &icmp.DstUnreach{ - Data: []byte("ERROR-INVOKING-PACKET"), - }, - }, - { - Type: ipv4.ICMPTypeTimeExceeded, Code: 1, - Body: &icmp.TimeExceeded{ - Data: []byte("ERROR-INVOKING-PACKET"), - }, - }, - { - Type: ipv4.ICMPTypeParameterProblem, Code: 2, - Body: &icmp.ParamProb{ - Pointer: 8, - Data: []byte("ERROR-INVOKING-PACKET"), - }, - }, - { - Type: ipv4.ICMPTypeEcho, Code: 0, - Body: &icmp.Echo{ - ID: 1, Seq: 2, - Data: []byte("HELLO-R-U-THERE"), - }, - }, - { - Type: ipv4.ICMPTypePhoturis, - Body: &icmp.DefaultMessageBody{ - Data: []byte{0x80, 0x40, 0x20, 0x10}, - }, - }, -} - -func TestMarshalAndParseMessageForIPv4(t *testing.T) { - for i, tt := range marshalAndParseMessageForIPv4Tests { - b, err := tt.Marshal(nil) - if err != nil { - t.Fatal(err) - } - m, err := icmp.ParseMessage(iana.ProtocolICMP, b) - if err != nil { - t.Fatal(err) - } - if m.Type != tt.Type || m.Code != tt.Code { - t.Errorf("#%v: got %v; want %v", i, m, &tt) - } - if !reflect.DeepEqual(m.Body, tt.Body) { - t.Errorf("#%v: got %v; want %v", i, m.Body, tt.Body) - } - } -} - -var marshalAndParseMessageForIPv6Tests = []icmp.Message{ - { - Type: ipv6.ICMPTypeDestinationUnreachable, Code: 6, - Body: &icmp.DstUnreach{ - Data: []byte("ERROR-INVOKING-PACKET"), - }, - }, - { - Type: ipv6.ICMPTypePacketTooBig, Code: 0, - Body: &icmp.PacketTooBig{ - MTU: 1<<16 - 1, - Data: []byte("ERROR-INVOKING-PACKET"), - }, - }, - { - Type: ipv6.ICMPTypeTimeExceeded, Code: 1, - Body: &icmp.TimeExceeded{ - Data: []byte("ERROR-INVOKING-PACKET"), - }, - }, - { - Type: ipv6.ICMPTypeParameterProblem, Code: 2, - Body: &icmp.ParamProb{ - Pointer: 8, - Data: []byte("ERROR-INVOKING-PACKET"), - }, - }, - { - Type: ipv6.ICMPTypeEchoRequest, Code: 0, - Body: &icmp.Echo{ - ID: 1, Seq: 2, - Data: []byte("HELLO-R-U-THERE"), - }, - }, - { - Type: ipv6.ICMPTypeDuplicateAddressConfirmation, - Body: &icmp.DefaultMessageBody{ - Data: []byte{0x80, 0x40, 0x20, 0x10}, - }, - }, -} - -func TestMarshalAndParseMessageForIPv6(t *testing.T) { - pshicmp := icmp.IPv6PseudoHeader(net.ParseIP("fe80::1"), net.ParseIP("ff02::1")) - for i, tt := range marshalAndParseMessageForIPv6Tests { - for _, psh := range [][]byte{pshicmp, nil} { - b, err := tt.Marshal(psh) - if err != nil { - t.Fatal(err) - } - m, err := icmp.ParseMessage(iana.ProtocolIPv6ICMP, b) - if err != nil { - t.Fatal(err) - } - if m.Type != tt.Type || m.Code != tt.Code { - t.Errorf("#%v: got %v; want %v", i, m, &tt) - } - if !reflect.DeepEqual(m.Body, tt.Body) { - t.Errorf("#%v: got %v; want %v", i, m.Body, tt.Body) - } - } - } -} diff --git a/vendor/golang.org/x/net/icmp/messagebody.go b/vendor/golang.org/x/net/icmp/messagebody.go deleted file mode 100644 index 2463730a..00000000 --- a/vendor/golang.org/x/net/icmp/messagebody.go +++ /dev/null @@ -1,41 +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 icmp - -// A MessageBody represents an ICMP message body. -type MessageBody interface { - // Len returns the length of ICMP message body. - // Proto must be either the ICMPv4 or ICMPv6 protocol number. - Len(proto int) int - - // Marshal returns the binary encoding of ICMP message body. - // Proto must be either the ICMPv4 or ICMPv6 protocol number. - Marshal(proto int) ([]byte, error) -} - -// A DefaultMessageBody represents the default message body. -type DefaultMessageBody struct { - Data []byte // data -} - -// Len implements the Len method of MessageBody interface. -func (p *DefaultMessageBody) Len(proto int) int { - if p == nil { - return 0 - } - return len(p.Data) -} - -// Marshal implements the Marshal method of MessageBody interface. -func (p *DefaultMessageBody) Marshal(proto int) ([]byte, error) { - return p.Data, nil -} - -// parseDefaultMessageBody parses b as an ICMP message body. -func parseDefaultMessageBody(proto int, b []byte) (MessageBody, error) { - p := &DefaultMessageBody{Data: make([]byte, len(b))} - copy(p.Data, b) - return p, nil -} diff --git a/vendor/golang.org/x/net/icmp/mpls.go b/vendor/golang.org/x/net/icmp/mpls.go deleted file mode 100644 index c3149174..00000000 --- a/vendor/golang.org/x/net/icmp/mpls.go +++ /dev/null @@ -1,77 +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 icmp - -import "encoding/binary" - -// A MPLSLabel represents a MPLS label stack entry. -type MPLSLabel struct { - Label int // label value - TC int // traffic class; formerly experimental use - S bool // bottom of stack - TTL int // time to live -} - -const ( - classMPLSLabelStack = 1 - typeIncomingMPLSLabelStack = 1 -) - -// A MPLSLabelStack represents a MPLS label stack. -type MPLSLabelStack struct { - Class int // extension object class number - Type int // extension object sub-type - Labels []MPLSLabel -} - -// Len implements the Len method of Extension interface. -func (ls *MPLSLabelStack) Len(proto int) int { - return 4 + (4 * len(ls.Labels)) -} - -// Marshal implements the Marshal method of Extension interface. -func (ls *MPLSLabelStack) Marshal(proto int) ([]byte, error) { - b := make([]byte, ls.Len(proto)) - if err := ls.marshal(proto, b); err != nil { - return nil, err - } - return b, nil -} - -func (ls *MPLSLabelStack) marshal(proto int, b []byte) error { - l := ls.Len(proto) - binary.BigEndian.PutUint16(b[:2], uint16(l)) - b[2], b[3] = classMPLSLabelStack, typeIncomingMPLSLabelStack - off := 4 - for _, ll := range ls.Labels { - b[off], b[off+1], b[off+2] = byte(ll.Label>>12), byte(ll.Label>>4&0xff), byte(ll.Label<<4&0xf0) - b[off+2] |= byte(ll.TC << 1 & 0x0e) - if ll.S { - b[off+2] |= 0x1 - } - b[off+3] = byte(ll.TTL) - off += 4 - } - return nil -} - -func parseMPLSLabelStack(b []byte) (Extension, error) { - ls := &MPLSLabelStack{ - Class: int(b[2]), - Type: int(b[3]), - } - for b = b[4:]; len(b) >= 4; b = b[4:] { - ll := MPLSLabel{ - Label: int(b[0])<<12 | int(b[1])<<4 | int(b[2])>>4, - TC: int(b[2]&0x0e) >> 1, - TTL: int(b[3]), - } - if b[2]&0x1 != 0 { - ll.S = true - } - ls.Labels = append(ls.Labels, ll) - } - return ls, nil -} diff --git a/vendor/golang.org/x/net/icmp/multipart.go b/vendor/golang.org/x/net/icmp/multipart.go deleted file mode 100644 index f2713566..00000000 --- a/vendor/golang.org/x/net/icmp/multipart.go +++ /dev/null @@ -1,109 +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 icmp - -import "golang.org/x/net/internal/iana" - -// multipartMessageBodyDataLen takes b as an original datagram and -// exts as extensions, and returns a required length for message body -// and a required length for a padded original datagram in wire -// format. -func multipartMessageBodyDataLen(proto int, b []byte, exts []Extension) (bodyLen, dataLen int) { - for _, ext := range exts { - bodyLen += ext.Len(proto) - } - if bodyLen > 0 { - dataLen = multipartMessageOrigDatagramLen(proto, b) - bodyLen += 4 // length of extension header - } else { - dataLen = len(b) - } - bodyLen += dataLen - return bodyLen, dataLen -} - -// multipartMessageOrigDatagramLen takes b as an original datagram, -// and returns a required length for a padded orignal datagram in wire -// format. -func multipartMessageOrigDatagramLen(proto int, b []byte) int { - roundup := func(b []byte, align int) int { - // According to RFC 4884, the padded original datagram - // field must contain at least 128 octets. - if len(b) < 128 { - return 128 - } - r := len(b) - return (r + align - 1) & ^(align - 1) - } - switch proto { - case iana.ProtocolICMP: - return roundup(b, 4) - case iana.ProtocolIPv6ICMP: - return roundup(b, 8) - default: - return len(b) - } -} - -// marshalMultipartMessageBody takes data as an original datagram and -// exts as extesnsions, and returns a binary encoding of message body. -// It can be used for non-multipart message bodies when exts is nil. -func marshalMultipartMessageBody(proto int, data []byte, exts []Extension) ([]byte, error) { - bodyLen, dataLen := multipartMessageBodyDataLen(proto, data, exts) - b := make([]byte, 4+bodyLen) - copy(b[4:], data) - off := dataLen + 4 - if len(exts) > 0 { - b[dataLen+4] = byte(extensionVersion << 4) - off += 4 // length of object header - for _, ext := range exts { - switch ext := ext.(type) { - case *MPLSLabelStack: - if err := ext.marshal(proto, b[off:]); err != nil { - return nil, err - } - off += ext.Len(proto) - case *InterfaceInfo: - attrs, l := ext.attrsAndLen(proto) - if err := ext.marshal(proto, b[off:], attrs, l); err != nil { - return nil, err - } - off += ext.Len(proto) - } - } - s := checksum(b[dataLen+4:]) - b[dataLen+4+2] ^= byte(s) - b[dataLen+4+3] ^= byte(s >> 8) - switch proto { - case iana.ProtocolICMP: - b[1] = byte(dataLen / 4) - case iana.ProtocolIPv6ICMP: - b[0] = byte(dataLen / 8) - } - } - return b, nil -} - -// parseMultipartMessageBody parses b as either a non-multipart -// message body or a multipart message body. -func parseMultipartMessageBody(proto int, b []byte) ([]byte, []Extension, error) { - var l int - switch proto { - case iana.ProtocolICMP: - l = 4 * int(b[1]) - case iana.ProtocolIPv6ICMP: - l = 8 * int(b[0]) - } - if len(b) == 4 { - return nil, nil, nil - } - exts, l, err := parseExtensions(b[4:], l) - if err != nil { - l = len(b) - 4 - } - data := make([]byte, l) - copy(data, b[4:]) - return data, exts, nil -} diff --git a/vendor/golang.org/x/net/icmp/multipart_test.go b/vendor/golang.org/x/net/icmp/multipart_test.go deleted file mode 100644 index 966ccb8d..00000000 --- a/vendor/golang.org/x/net/icmp/multipart_test.go +++ /dev/null @@ -1,442 +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 icmp_test - -import ( - "fmt" - "net" - "reflect" - "testing" - - "golang.org/x/net/icmp" - "golang.org/x/net/internal/iana" - "golang.org/x/net/ipv4" - "golang.org/x/net/ipv6" -) - -var marshalAndParseMultipartMessageForIPv4Tests = []icmp.Message{ - { - Type: ipv4.ICMPTypeDestinationUnreachable, Code: 15, - Body: &icmp.DstUnreach{ - Data: []byte("ERROR-INVOKING-PACKET"), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{ - Class: 1, - Type: 1, - Labels: []icmp.MPLSLabel{ - { - Label: 16014, - TC: 0x4, - S: true, - TTL: 255, - }, - }, - }, - &icmp.InterfaceInfo{ - Class: 2, - Type: 0x0f, - Interface: &net.Interface{ - Index: 15, - Name: "en101", - MTU: 8192, - }, - Addr: &net.IPAddr{ - IP: net.IPv4(192, 168, 0, 1).To4(), - }, - }, - }, - }, - }, - { - Type: ipv4.ICMPTypeTimeExceeded, Code: 1, - Body: &icmp.TimeExceeded{ - Data: []byte("ERROR-INVOKING-PACKET"), - Extensions: []icmp.Extension{ - &icmp.InterfaceInfo{ - Class: 2, - Type: 0x0f, - Interface: &net.Interface{ - Index: 15, - Name: "en101", - MTU: 8192, - }, - Addr: &net.IPAddr{ - IP: net.IPv4(192, 168, 0, 1).To4(), - }, - }, - &icmp.MPLSLabelStack{ - Class: 1, - Type: 1, - Labels: []icmp.MPLSLabel{ - { - Label: 16014, - TC: 0x4, - S: true, - TTL: 255, - }, - }, - }, - }, - }, - }, - { - Type: ipv4.ICMPTypeParameterProblem, Code: 2, - Body: &icmp.ParamProb{ - Pointer: 8, - Data: []byte("ERROR-INVOKING-PACKET"), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{ - Class: 1, - Type: 1, - Labels: []icmp.MPLSLabel{ - { - Label: 16014, - TC: 0x4, - S: true, - TTL: 255, - }, - }, - }, - &icmp.InterfaceInfo{ - Class: 2, - Type: 0x0f, - Interface: &net.Interface{ - Index: 15, - Name: "en101", - MTU: 8192, - }, - Addr: &net.IPAddr{ - IP: net.IPv4(192, 168, 0, 1).To4(), - }, - }, - &icmp.InterfaceInfo{ - Class: 2, - Type: 0x2f, - Interface: &net.Interface{ - Index: 16, - Name: "en102", - MTU: 8192, - }, - Addr: &net.IPAddr{ - IP: net.IPv4(192, 168, 0, 2).To4(), - }, - }, - }, - }, - }, -} - -func TestMarshalAndParseMultipartMessageForIPv4(t *testing.T) { - for i, tt := range marshalAndParseMultipartMessageForIPv4Tests { - b, err := tt.Marshal(nil) - if err != nil { - t.Fatal(err) - } - if b[5] != 32 { - t.Errorf("#%v: got %v; want 32", i, b[5]) - } - m, err := icmp.ParseMessage(iana.ProtocolICMP, b) - if err != nil { - t.Fatal(err) - } - if m.Type != tt.Type || m.Code != tt.Code { - t.Errorf("#%v: got %v; want %v", i, m, &tt) - } - switch m.Type { - case ipv4.ICMPTypeDestinationUnreachable: - got, want := m.Body.(*icmp.DstUnreach), tt.Body.(*icmp.DstUnreach) - if !reflect.DeepEqual(got.Extensions, want.Extensions) { - t.Error(dumpExtensions(i, got.Extensions, want.Extensions)) - } - if len(got.Data) != 128 { - t.Errorf("#%v: got %v; want 128", i, len(got.Data)) - } - case ipv4.ICMPTypeTimeExceeded: - got, want := m.Body.(*icmp.TimeExceeded), tt.Body.(*icmp.TimeExceeded) - if !reflect.DeepEqual(got.Extensions, want.Extensions) { - t.Error(dumpExtensions(i, got.Extensions, want.Extensions)) - } - if len(got.Data) != 128 { - t.Errorf("#%v: got %v; want 128", i, len(got.Data)) - } - case ipv4.ICMPTypeParameterProblem: - got, want := m.Body.(*icmp.ParamProb), tt.Body.(*icmp.ParamProb) - if !reflect.DeepEqual(got.Extensions, want.Extensions) { - t.Error(dumpExtensions(i, got.Extensions, want.Extensions)) - } - if len(got.Data) != 128 { - t.Errorf("#%v: got %v; want 128", i, len(got.Data)) - } - } - } -} - -var marshalAndParseMultipartMessageForIPv6Tests = []icmp.Message{ - { - Type: ipv6.ICMPTypeDestinationUnreachable, Code: 6, - Body: &icmp.DstUnreach{ - Data: []byte("ERROR-INVOKING-PACKET"), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{ - Class: 1, - Type: 1, - Labels: []icmp.MPLSLabel{ - { - Label: 16014, - TC: 0x4, - S: true, - TTL: 255, - }, - }, - }, - &icmp.InterfaceInfo{ - Class: 2, - Type: 0x0f, - Interface: &net.Interface{ - Index: 15, - Name: "en101", - MTU: 8192, - }, - Addr: &net.IPAddr{ - IP: net.ParseIP("fe80::1"), - Zone: "en101", - }, - }, - }, - }, - }, - { - Type: ipv6.ICMPTypeTimeExceeded, Code: 1, - Body: &icmp.TimeExceeded{ - Data: []byte("ERROR-INVOKING-PACKET"), - Extensions: []icmp.Extension{ - &icmp.InterfaceInfo{ - Class: 2, - Type: 0x0f, - Interface: &net.Interface{ - Index: 15, - Name: "en101", - MTU: 8192, - }, - Addr: &net.IPAddr{ - IP: net.ParseIP("fe80::1"), - Zone: "en101", - }, - }, - &icmp.MPLSLabelStack{ - Class: 1, - Type: 1, - Labels: []icmp.MPLSLabel{ - { - Label: 16014, - TC: 0x4, - S: true, - TTL: 255, - }, - }, - }, - &icmp.InterfaceInfo{ - Class: 2, - Type: 0x2f, - Interface: &net.Interface{ - Index: 16, - Name: "en102", - MTU: 8192, - }, - Addr: &net.IPAddr{ - IP: net.ParseIP("fe80::1"), - Zone: "en102", - }, - }, - }, - }, - }, -} - -func TestMarshalAndParseMultipartMessageForIPv6(t *testing.T) { - pshicmp := icmp.IPv6PseudoHeader(net.ParseIP("fe80::1"), net.ParseIP("ff02::1")) - for i, tt := range marshalAndParseMultipartMessageForIPv6Tests { - for _, psh := range [][]byte{pshicmp, nil} { - b, err := tt.Marshal(psh) - if err != nil { - t.Fatal(err) - } - if b[4] != 16 { - t.Errorf("#%v: got %v; want 16", i, b[4]) - } - m, err := icmp.ParseMessage(iana.ProtocolIPv6ICMP, b) - if err != nil { - t.Fatal(err) - } - if m.Type != tt.Type || m.Code != tt.Code { - t.Errorf("#%v: got %v; want %v", i, m, &tt) - } - switch m.Type { - case ipv6.ICMPTypeDestinationUnreachable: - got, want := m.Body.(*icmp.DstUnreach), tt.Body.(*icmp.DstUnreach) - if !reflect.DeepEqual(got.Extensions, want.Extensions) { - t.Error(dumpExtensions(i, got.Extensions, want.Extensions)) - } - if len(got.Data) != 128 { - t.Errorf("#%v: got %v; want 128", i, len(got.Data)) - } - case ipv6.ICMPTypeTimeExceeded: - got, want := m.Body.(*icmp.TimeExceeded), tt.Body.(*icmp.TimeExceeded) - if !reflect.DeepEqual(got.Extensions, want.Extensions) { - t.Error(dumpExtensions(i, got.Extensions, want.Extensions)) - } - if len(got.Data) != 128 { - t.Errorf("#%v: got %v; want 128", i, len(got.Data)) - } - } - } - } -} - -func dumpExtensions(i int, gotExts, wantExts []icmp.Extension) string { - var s string - for j, got := range gotExts { - switch got := got.(type) { - case *icmp.MPLSLabelStack: - want := wantExts[j].(*icmp.MPLSLabelStack) - if !reflect.DeepEqual(got, want) { - s += fmt.Sprintf("#%v/%v: got %#v; want %#v\n", i, j, got, want) - } - case *icmp.InterfaceInfo: - want := wantExts[j].(*icmp.InterfaceInfo) - if !reflect.DeepEqual(got, want) { - s += fmt.Sprintf("#%v/%v: got %#v, %#v, %#v; want %#v, %#v, %#v\n", i, j, got, got.Interface, got.Addr, want, want.Interface, want.Addr) - } - } - } - return s[:len(s)-1] -} - -var multipartMessageBodyLenTests = []struct { - proto int - in icmp.MessageBody - out int -}{ - { - iana.ProtocolICMP, - &icmp.DstUnreach{ - Data: make([]byte, ipv4.HeaderLen), - }, - 4 + ipv4.HeaderLen, // unused and original datagram - }, - { - iana.ProtocolICMP, - &icmp.TimeExceeded{ - Data: make([]byte, ipv4.HeaderLen), - }, - 4 + ipv4.HeaderLen, // unused and original datagram - }, - { - iana.ProtocolICMP, - &icmp.ParamProb{ - Data: make([]byte, ipv4.HeaderLen), - }, - 4 + ipv4.HeaderLen, // [pointer, unused] and original datagram - }, - - { - iana.ProtocolICMP, - &icmp.ParamProb{ - Data: make([]byte, ipv4.HeaderLen), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{}, - }, - }, - 4 + 4 + 4 + 0 + 128, // [pointer, length, unused], extension header, object header, object payload, original datagram - }, - { - iana.ProtocolICMP, - &icmp.ParamProb{ - Data: make([]byte, 128), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{}, - }, - }, - 4 + 4 + 4 + 0 + 128, // [pointer, length, unused], extension header, object header, object payload and original datagram - }, - { - iana.ProtocolICMP, - &icmp.ParamProb{ - Data: make([]byte, 129), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{}, - }, - }, - 4 + 4 + 4 + 0 + 132, // [pointer, length, unused], extension header, object header, object payload and original datagram - }, - - { - iana.ProtocolIPv6ICMP, - &icmp.DstUnreach{ - Data: make([]byte, ipv6.HeaderLen), - }, - 4 + ipv6.HeaderLen, // unused and original datagram - }, - { - iana.ProtocolIPv6ICMP, - &icmp.PacketTooBig{ - Data: make([]byte, ipv6.HeaderLen), - }, - 4 + ipv6.HeaderLen, // mtu and original datagram - }, - { - iana.ProtocolIPv6ICMP, - &icmp.TimeExceeded{ - Data: make([]byte, ipv6.HeaderLen), - }, - 4 + ipv6.HeaderLen, // unused and original datagram - }, - { - iana.ProtocolIPv6ICMP, - &icmp.ParamProb{ - Data: make([]byte, ipv6.HeaderLen), - }, - 4 + ipv6.HeaderLen, // pointer and original datagram - }, - - { - iana.ProtocolIPv6ICMP, - &icmp.DstUnreach{ - Data: make([]byte, 127), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{}, - }, - }, - 4 + 4 + 4 + 0 + 128, // [length, unused], extension header, object header, object payload and original datagram - }, - { - iana.ProtocolIPv6ICMP, - &icmp.DstUnreach{ - Data: make([]byte, 128), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{}, - }, - }, - 4 + 4 + 4 + 0 + 128, // [length, unused], extension header, object header, object payload and original datagram - }, - { - iana.ProtocolIPv6ICMP, - &icmp.DstUnreach{ - Data: make([]byte, 129), - Extensions: []icmp.Extension{ - &icmp.MPLSLabelStack{}, - }, - }, - 4 + 4 + 4 + 0 + 136, // [length, unused], extension header, object header, object payload and original datagram - }, -} - -func TestMultipartMessageBodyLen(t *testing.T) { - for i, tt := range multipartMessageBodyLenTests { - if out := tt.in.Len(tt.proto); out != tt.out { - t.Errorf("#%d: got %d; want %d", i, out, tt.out) - } - } -} diff --git a/vendor/golang.org/x/net/icmp/packettoobig.go b/vendor/golang.org/x/net/icmp/packettoobig.go deleted file mode 100644 index a1c9df7b..00000000 --- a/vendor/golang.org/x/net/icmp/packettoobig.go +++ /dev/null @@ -1,43 +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 icmp - -import "encoding/binary" - -// A PacketTooBig represents an ICMP packet too big message body. -type PacketTooBig struct { - MTU int // maximum transmission unit of the nexthop link - Data []byte // data, known as original datagram field -} - -// Len implements the Len method of MessageBody interface. -func (p *PacketTooBig) Len(proto int) int { - if p == nil { - return 0 - } - return 4 + len(p.Data) -} - -// Marshal implements the Marshal method of MessageBody interface. -func (p *PacketTooBig) Marshal(proto int) ([]byte, error) { - b := make([]byte, 4+len(p.Data)) - binary.BigEndian.PutUint32(b[:4], uint32(p.MTU)) - copy(b[4:], p.Data) - return b, nil -} - -// parsePacketTooBig parses b as an ICMP packet too big message body. -func parsePacketTooBig(proto int, b []byte) (MessageBody, error) { - bodyLen := len(b) - if bodyLen < 4 { - return nil, errMessageTooShort - } - p := &PacketTooBig{MTU: int(binary.BigEndian.Uint32(b[:4]))} - if bodyLen > 4 { - p.Data = make([]byte, bodyLen-4) - copy(p.Data, b[4:]) - } - return p, nil -} diff --git a/vendor/golang.org/x/net/icmp/paramprob.go b/vendor/golang.org/x/net/icmp/paramprob.go deleted file mode 100644 index 0a2548da..00000000 --- a/vendor/golang.org/x/net/icmp/paramprob.go +++ /dev/null @@ -1,63 +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 icmp - -import ( - "encoding/binary" - "golang.org/x/net/internal/iana" -) - -// A ParamProb represents an ICMP parameter problem message body. -type ParamProb struct { - Pointer uintptr // offset within the data where the error was detected - Data []byte // data, known as original datagram field - Extensions []Extension // extensions -} - -// Len implements the Len method of MessageBody interface. -func (p *ParamProb) Len(proto int) int { - if p == nil { - return 0 - } - l, _ := multipartMessageBodyDataLen(proto, p.Data, p.Extensions) - return 4 + l -} - -// Marshal implements the Marshal method of MessageBody interface. -func (p *ParamProb) Marshal(proto int) ([]byte, error) { - if proto == iana.ProtocolIPv6ICMP { - b := make([]byte, p.Len(proto)) - binary.BigEndian.PutUint32(b[:4], uint32(p.Pointer)) - copy(b[4:], p.Data) - return b, nil - } - b, err := marshalMultipartMessageBody(proto, p.Data, p.Extensions) - if err != nil { - return nil, err - } - b[0] = byte(p.Pointer) - return b, nil -} - -// parseParamProb parses b as an ICMP parameter problem message body. -func parseParamProb(proto int, b []byte) (MessageBody, error) { - if len(b) < 4 { - return nil, errMessageTooShort - } - p := &ParamProb{} - if proto == iana.ProtocolIPv6ICMP { - p.Pointer = uintptr(binary.BigEndian.Uint32(b[:4])) - p.Data = make([]byte, len(b)-4) - copy(p.Data, b[4:]) - return p, nil - } - p.Pointer = uintptr(b[0]) - var err error - p.Data, p.Extensions, err = parseMultipartMessageBody(proto, b) - if err != nil { - return nil, err - } - return p, nil -} diff --git a/vendor/golang.org/x/net/icmp/ping_test.go b/vendor/golang.org/x/net/icmp/ping_test.go deleted file mode 100644 index 3171dad1..00000000 --- a/vendor/golang.org/x/net/icmp/ping_test.go +++ /dev/null @@ -1,200 +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 icmp_test - -import ( - "errors" - "fmt" - "net" - "os" - "runtime" - "sync" - "testing" - "time" - - "golang.org/x/net/icmp" - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" - "golang.org/x/net/ipv6" -) - -func googleAddr(c *icmp.PacketConn, protocol int) (net.Addr, error) { - const host = "www.google.com" - ips, err := net.LookupIP(host) - if err != nil { - return nil, err - } - netaddr := func(ip net.IP) (net.Addr, error) { - switch c.LocalAddr().(type) { - case *net.UDPAddr: - return &net.UDPAddr{IP: ip}, nil - case *net.IPAddr: - return &net.IPAddr{IP: ip}, nil - default: - return nil, errors.New("neither UDPAddr nor IPAddr") - } - } - for _, ip := range ips { - switch protocol { - case iana.ProtocolICMP: - if ip.To4() != nil { - return netaddr(ip) - } - case iana.ProtocolIPv6ICMP: - if ip.To16() != nil && ip.To4() == nil { - return netaddr(ip) - } - } - } - return nil, errors.New("no A or AAAA record") -} - -type pingTest struct { - network, address string - protocol int - mtype icmp.Type -} - -var nonPrivilegedPingTests = []pingTest{ - {"udp4", "0.0.0.0", iana.ProtocolICMP, ipv4.ICMPTypeEcho}, - - {"udp6", "::", iana.ProtocolIPv6ICMP, ipv6.ICMPTypeEchoRequest}, -} - -func TestNonPrivilegedPing(t *testing.T) { - if testing.Short() { - t.Skip("avoid external network") - } - switch runtime.GOOS { - case "darwin": - case "linux": - t.Log("you may need to adjust the net.ipv4.ping_group_range kernel state") - default: - t.Skipf("not supported on %s", runtime.GOOS) - } - - for i, tt := range nonPrivilegedPingTests { - if err := doPing(tt, i); err != nil { - t.Error(err) - } - } -} - -var privilegedPingTests = []pingTest{ - {"ip4:icmp", "0.0.0.0", iana.ProtocolICMP, ipv4.ICMPTypeEcho}, - - {"ip6:ipv6-icmp", "::", iana.ProtocolIPv6ICMP, ipv6.ICMPTypeEchoRequest}, -} - -func TestPrivilegedPing(t *testing.T) { - if testing.Short() { - t.Skip("avoid external network") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - for i, tt := range privilegedPingTests { - if err := doPing(tt, i); err != nil { - t.Error(err) - } - } -} - -func doPing(tt pingTest, seq int) error { - c, err := icmp.ListenPacket(tt.network, tt.address) - if err != nil { - return err - } - defer c.Close() - - dst, err := googleAddr(c, tt.protocol) - if err != nil { - return err - } - - if tt.network != "udp6" && tt.protocol == iana.ProtocolIPv6ICMP { - var f ipv6.ICMPFilter - f.SetAll(true) - f.Accept(ipv6.ICMPTypeDestinationUnreachable) - f.Accept(ipv6.ICMPTypePacketTooBig) - f.Accept(ipv6.ICMPTypeTimeExceeded) - f.Accept(ipv6.ICMPTypeParameterProblem) - f.Accept(ipv6.ICMPTypeEchoReply) - if err := c.IPv6PacketConn().SetICMPFilter(&f); err != nil { - return err - } - } - - wm := icmp.Message{ - Type: tt.mtype, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, Seq: 1 << uint(seq), - Data: []byte("HELLO-R-U-THERE"), - }, - } - wb, err := wm.Marshal(nil) - if err != nil { - return err - } - if n, err := c.WriteTo(wb, dst); err != nil { - return err - } else if n != len(wb) { - return fmt.Errorf("got %v; want %v", n, len(wb)) - } - - rb := make([]byte, 1500) - if err := c.SetReadDeadline(time.Now().Add(3 * time.Second)); err != nil { - return err - } - n, peer, err := c.ReadFrom(rb) - if err != nil { - return err - } - rm, err := icmp.ParseMessage(tt.protocol, rb[:n]) - if err != nil { - return err - } - switch rm.Type { - case ipv4.ICMPTypeEchoReply, ipv6.ICMPTypeEchoReply: - return nil - default: - return fmt.Errorf("got %+v from %v; want echo reply", rm, peer) - } -} - -func TestConcurrentNonPrivilegedListenPacket(t *testing.T) { - if testing.Short() { - t.Skip("avoid external network") - } - switch runtime.GOOS { - case "darwin": - case "linux": - t.Log("you may need to adjust the net.ipv4.ping_group_range kernel state") - default: - t.Skipf("not supported on %s", runtime.GOOS) - } - - network, address := "udp4", "127.0.0.1" - if !nettest.SupportsIPv4() { - network, address = "udp6", "::1" - } - const N = 1000 - var wg sync.WaitGroup - wg.Add(N) - for i := 0; i < N; i++ { - go func() { - defer wg.Done() - c, err := icmp.ListenPacket(network, address) - if err != nil { - t.Error(err) - return - } - c.Close() - }() - } - wg.Wait() -} diff --git a/vendor/golang.org/x/net/icmp/sys_freebsd.go b/vendor/golang.org/x/net/icmp/sys_freebsd.go deleted file mode 100644 index c75f3dda..00000000 --- a/vendor/golang.org/x/net/icmp/sys_freebsd.go +++ /dev/null @@ -1,11 +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 icmp - -import "syscall" - -func init() { - freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate") -} diff --git a/vendor/golang.org/x/net/icmp/timeexceeded.go b/vendor/golang.org/x/net/icmp/timeexceeded.go deleted file mode 100644 index 344e1584..00000000 --- a/vendor/golang.org/x/net/icmp/timeexceeded.go +++ /dev/null @@ -1,39 +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 icmp - -// A TimeExceeded represents an ICMP time exceeded message body. -type TimeExceeded struct { - Data []byte // data, known as original datagram field - Extensions []Extension // extensions -} - -// Len implements the Len method of MessageBody interface. -func (p *TimeExceeded) Len(proto int) int { - if p == nil { - return 0 - } - l, _ := multipartMessageBodyDataLen(proto, p.Data, p.Extensions) - return 4 + l -} - -// Marshal implements the Marshal method of MessageBody interface. -func (p *TimeExceeded) Marshal(proto int) ([]byte, error) { - return marshalMultipartMessageBody(proto, p.Data, p.Extensions) -} - -// parseTimeExceeded parses b as an ICMP time exceeded message body. -func parseTimeExceeded(proto int, b []byte) (MessageBody, error) { - if len(b) < 4 { - return nil, errMessageTooShort - } - p := &TimeExceeded{} - var err error - p.Data, p.Extensions, err = parseMultipartMessageBody(proto, b) - if err != nil { - return nil, err - } - return p, nil -} diff --git a/vendor/golang.org/x/net/idna/example_test.go b/vendor/golang.org/x/net/idna/example_test.go deleted file mode 100644 index 948f6eb2..00000000 --- a/vendor/golang.org/x/net/idna/example_test.go +++ /dev/null @@ -1,70 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// 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 idna_test - -import ( - "fmt" - - "golang.org/x/net/idna" -) - -func ExampleProfile() { - // Raw Punycode has no restrictions and does no mappings. - fmt.Println(idna.ToASCII("")) - fmt.Println(idna.ToASCII("*.faß.com")) - fmt.Println(idna.Punycode.ToASCII("*.faß.com")) - - // Rewrite IDN for lookup. This (currently) uses transitional mappings to - // find a balance between IDNA2003 and IDNA2008 compatibility. - fmt.Println(idna.Lookup.ToASCII("")) - fmt.Println(idna.Lookup.ToASCII("www.faß.com")) - - // Convert an IDN to ASCII for registration purposes. This changes the - // encoding, but reports an error if the input was illformed. - fmt.Println(idna.Registration.ToASCII("")) - fmt.Println(idna.Registration.ToASCII("www.faß.com")) - - // Output: - // <nil> - // *.xn--fa-hia.com <nil> - // *.xn--fa-hia.com <nil> - // <nil> - // www.fass.com <nil> - // idna: invalid label "" - // www.xn--fa-hia.com <nil> -} - -func ExampleNew() { - var p *idna.Profile - - // Raw Punycode has no restrictions and does no mappings. - p = idna.New() - fmt.Println(p.ToASCII("*.faß.com")) - - // Do mappings. Note that star is not allowed in a DNS lookup. - p = idna.New( - idna.MapForLookup(), - idna.Transitional(true)) // Map ß -> ss - fmt.Println(p.ToASCII("*.faß.com")) - - // Lookup for registration. Also does not allow '*'. - p = idna.New(idna.ValidateForRegistration()) - fmt.Println(p.ToUnicode("*.faß.com")) - - // Set up a profile maps for lookup, but allows wild cards. - p = idna.New( - idna.MapForLookup(), - idna.Transitional(true), // Map ß -> ss - idna.StrictDomainName(false)) // Set more permissive ASCII rules. - fmt.Println(p.ToASCII("*.faß.com")) - - // Output: - // *.xn--fa-hia.com <nil> - // *.fass.com idna: disallowed rune U+002A - // *.faß.com idna: disallowed rune U+002A - // *.fass.com <nil> -} diff --git a/vendor/golang.org/x/net/idna/idna_test.go b/vendor/golang.org/x/net/idna/idna_test.go deleted file mode 100644 index 0b067cac..00000000 --- a/vendor/golang.org/x/net/idna/idna_test.go +++ /dev/null @@ -1,108 +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 idna - -import ( - "testing" -) - -var idnaTestCases = [...]struct { - ascii, unicode string -}{ - // Labels. - {"books", "books"}, - {"xn--bcher-kva", "bücher"}, - - // Domains. - {"foo--xn--bar.org", "foo--xn--bar.org"}, - {"golang.org", "golang.org"}, - {"example.xn--p1ai", "example.рф"}, - {"xn--czrw28b.tw", "商業.tw"}, - {"www.xn--mller-kva.de", "www.müller.de"}, -} - -func TestIDNA(t *testing.T) { - for _, tc := range idnaTestCases { - if a, err := ToASCII(tc.unicode); err != nil { - t.Errorf("ToASCII(%q): %v", tc.unicode, err) - } else if a != tc.ascii { - t.Errorf("ToASCII(%q): got %q, want %q", tc.unicode, a, tc.ascii) - } - - if u, err := ToUnicode(tc.ascii); err != nil { - t.Errorf("ToUnicode(%q): %v", tc.ascii, err) - } else if u != tc.unicode { - t.Errorf("ToUnicode(%q): got %q, want %q", tc.ascii, u, tc.unicode) - } - } -} - -func TestIDNASeparators(t *testing.T) { - type subCase struct { - unicode string - wantASCII string - wantErr bool - } - - testCases := []struct { - name string - profile *Profile - subCases []subCase - }{ - { - name: "Punycode", profile: Punycode, - subCases: []subCase{ - {"example\u3002jp", "xn--examplejp-ck3h", false}, - {"東京\uFF0Ejp", "xn--jp-l92cn98g071o", false}, - {"大阪\uFF61jp", "xn--jp-ku9cz72u463f", false}, - }, - }, - { - name: "Lookup", profile: Lookup, - subCases: []subCase{ - {"example\u3002jp", "example.jp", false}, - {"東京\uFF0Ejp", "xn--1lqs71d.jp", false}, - {"大阪\uFF61jp", "xn--pssu33l.jp", false}, - }, - }, - { - name: "Display", profile: Display, - subCases: []subCase{ - {"example\u3002jp", "example.jp", false}, - {"東京\uFF0Ejp", "xn--1lqs71d.jp", false}, - {"大阪\uFF61jp", "xn--pssu33l.jp", false}, - }, - }, - { - name: "Registration", profile: Registration, - subCases: []subCase{ - {"example\u3002jp", "", true}, - {"東京\uFF0Ejp", "", true}, - {"大阪\uFF61jp", "", true}, - }, - }, - } - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - for _, c := range tc.subCases { - gotA, err := tc.profile.ToASCII(c.unicode) - if c.wantErr { - if err == nil { - t.Errorf("ToASCII(%q): got no error, but an error expected", c.unicode) - } - } else { - if err != nil { - t.Errorf("ToASCII(%q): got err=%v, but no error expected", c.unicode, err) - } else if gotA != c.wantASCII { - t.Errorf("ToASCII(%q): got %q, want %q", c.unicode, gotA, c.wantASCII) - } - } - } - }) - } -} - -// TODO(nigeltao): test errors, once we've specified when ToASCII and ToUnicode -// return errors. diff --git a/vendor/golang.org/x/net/idna/punycode_test.go b/vendor/golang.org/x/net/idna/punycode_test.go deleted file mode 100644 index bfec81de..00000000 --- a/vendor/golang.org/x/net/idna/punycode_test.go +++ /dev/null @@ -1,198 +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 idna - -import ( - "strings" - "testing" -) - -var punycodeTestCases = [...]struct { - s, encoded string -}{ - {"", ""}, - {"-", "--"}, - {"-a", "-a-"}, - {"-a-", "-a--"}, - {"a", "a-"}, - {"a-", "a--"}, - {"a-b", "a-b-"}, - {"books", "books-"}, - {"bücher", "bcher-kva"}, - {"Hello世界", "Hello-ck1hg65u"}, - {"ü", "tda"}, - {"üý", "tdac"}, - - // The test cases below come from RFC 3492 section 7.1 with Errata 3026. - { - // (A) Arabic (Egyptian). - "\u0644\u064A\u0647\u0645\u0627\u0628\u062A\u0643\u0644" + - "\u0645\u0648\u0634\u0639\u0631\u0628\u064A\u061F", - "egbpdaj6bu4bxfgehfvwxn", - }, - { - // (B) Chinese (simplified). - "\u4ED6\u4EEC\u4E3A\u4EC0\u4E48\u4E0D\u8BF4\u4E2D\u6587", - "ihqwcrb4cv8a8dqg056pqjye", - }, - { - // (C) Chinese (traditional). - "\u4ED6\u5011\u7232\u4EC0\u9EBD\u4E0D\u8AAA\u4E2D\u6587", - "ihqwctvzc91f659drss3x8bo0yb", - }, - { - // (D) Czech. - "\u0050\u0072\u006F\u010D\u0070\u0072\u006F\u0073\u0074" + - "\u011B\u006E\u0065\u006D\u006C\u0075\u0076\u00ED\u010D" + - "\u0065\u0073\u006B\u0079", - "Proprostnemluvesky-uyb24dma41a", - }, - { - // (E) Hebrew. - "\u05DC\u05DE\u05D4\u05D4\u05DD\u05E4\u05E9\u05D5\u05D8" + - "\u05DC\u05D0\u05DE\u05D3\u05D1\u05E8\u05D9\u05DD\u05E2" + - "\u05D1\u05E8\u05D9\u05EA", - "4dbcagdahymbxekheh6e0a7fei0b", - }, - { - // (F) Hindi (Devanagari). - "\u092F\u0939\u0932\u094B\u0917\u0939\u093F\u0928\u094D" + - "\u0926\u0940\u0915\u094D\u092F\u094B\u0902\u0928\u0939" + - "\u0940\u0902\u092C\u094B\u0932\u0938\u0915\u0924\u0947" + - "\u0939\u0948\u0902", - "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd", - }, - { - // (G) Japanese (kanji and hiragana). - "\u306A\u305C\u307F\u3093\u306A\u65E5\u672C\u8A9E\u3092" + - "\u8A71\u3057\u3066\u304F\u308C\u306A\u3044\u306E\u304B", - "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa", - }, - { - // (H) Korean (Hangul syllables). - "\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774" + - "\uD55C\uAD6D\uC5B4\uB97C\uC774\uD574\uD55C\uB2E4\uBA74" + - "\uC5BC\uB9C8\uB098\uC88B\uC744\uAE4C", - "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5j" + - "psd879ccm6fea98c", - }, - { - // (I) Russian (Cyrillic). - "\u043F\u043E\u0447\u0435\u043C\u0443\u0436\u0435\u043E" + - "\u043D\u0438\u043D\u0435\u0433\u043E\u0432\u043E\u0440" + - "\u044F\u0442\u043F\u043E\u0440\u0443\u0441\u0441\u043A" + - "\u0438", - "b1abfaaepdrnnbgefbadotcwatmq2g4l", - }, - { - // (J) Spanish. - "\u0050\u006F\u0072\u0071\u0075\u00E9\u006E\u006F\u0070" + - "\u0075\u0065\u0064\u0065\u006E\u0073\u0069\u006D\u0070" + - "\u006C\u0065\u006D\u0065\u006E\u0074\u0065\u0068\u0061" + - "\u0062\u006C\u0061\u0072\u0065\u006E\u0045\u0073\u0070" + - "\u0061\u00F1\u006F\u006C", - "PorqunopuedensimplementehablarenEspaol-fmd56a", - }, - { - // (K) Vietnamese. - "\u0054\u1EA1\u0069\u0073\u0061\u006F\u0068\u1ECD\u006B" + - "\u0068\u00F4\u006E\u0067\u0074\u0068\u1EC3\u0063\u0068" + - "\u1EC9\u006E\u00F3\u0069\u0074\u0069\u1EBF\u006E\u0067" + - "\u0056\u0069\u1EC7\u0074", - "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g", - }, - { - // (L) 3<nen>B<gumi><kinpachi><sensei>. - "\u0033\u5E74\u0042\u7D44\u91D1\u516B\u5148\u751F", - "3B-ww4c5e180e575a65lsy2b", - }, - { - // (M) <amuro><namie>-with-SUPER-MONKEYS. - "\u5B89\u5BA4\u5948\u7F8E\u6075\u002D\u0077\u0069\u0074" + - "\u0068\u002D\u0053\u0055\u0050\u0045\u0052\u002D\u004D" + - "\u004F\u004E\u004B\u0045\u0059\u0053", - "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n", - }, - { - // (N) Hello-Another-Way-<sorezore><no><basho>. - "\u0048\u0065\u006C\u006C\u006F\u002D\u0041\u006E\u006F" + - "\u0074\u0068\u0065\u0072\u002D\u0057\u0061\u0079\u002D" + - "\u305D\u308C\u305E\u308C\u306E\u5834\u6240", - "Hello-Another-Way--fc4qua05auwb3674vfr0b", - }, - { - // (O) <hitotsu><yane><no><shita>2. - "\u3072\u3068\u3064\u5C4B\u6839\u306E\u4E0B\u0032", - "2-u9tlzr9756bt3uc0v", - }, - { - // (P) Maji<de>Koi<suru>5<byou><mae> - "\u004D\u0061\u006A\u0069\u3067\u004B\u006F\u0069\u3059" + - "\u308B\u0035\u79D2\u524D", - "MajiKoi5-783gue6qz075azm5e", - }, - { - // (Q) <pafii>de<runba> - "\u30D1\u30D5\u30A3\u30FC\u0064\u0065\u30EB\u30F3\u30D0", - "de-jg4avhby1noc0d", - }, - { - // (R) <sono><supiido><de> - "\u305D\u306E\u30B9\u30D4\u30FC\u30C9\u3067", - "d9juau41awczczp", - }, - { - // (S) -> $1.00 <- - "\u002D\u003E\u0020\u0024\u0031\u002E\u0030\u0030\u0020" + - "\u003C\u002D", - "-> $1.00 <--", - }, -} - -func TestPunycode(t *testing.T) { - for _, tc := range punycodeTestCases { - if got, err := decode(tc.encoded); err != nil { - t.Errorf("decode(%q): %v", tc.encoded, err) - } else if got != tc.s { - t.Errorf("decode(%q): got %q, want %q", tc.encoded, got, tc.s) - } - - if got, err := encode("", tc.s); err != nil { - t.Errorf(`encode("", %q): %v`, tc.s, err) - } else if got != tc.encoded { - t.Errorf(`encode("", %q): got %q, want %q`, tc.s, got, tc.encoded) - } - } -} - -var punycodeErrorTestCases = [...]string{ - "decode -", // A sole '-' is invalid. - "decode foo\x00bar", // '\x00' is not in [0-9A-Za-z]. - "decode foo#bar", // '#' is not in [0-9A-Za-z]. - "decode foo\u00A3bar", // '\u00A3' is not in [0-9A-Za-z]. - "decode 9", // "9a" decodes to codepoint \u00A3; "9" is truncated. - "decode 99999a", // "99999a" decodes to codepoint \U0048A3C1, which is > \U0010FFFF. - "decode 9999999999a", // "9999999999a" overflows the int32 calculation. - - "encode " + strings.Repeat("x", 65536) + "\uff00", // int32 overflow. -} - -func TestPunycodeErrors(t *testing.T) { - for _, tc := range punycodeErrorTestCases { - var err error - switch { - case strings.HasPrefix(tc, "decode "): - _, err = decode(tc[7:]) - case strings.HasPrefix(tc, "encode "): - _, err = encode("", tc[7:]) - } - if err == nil { - if len(tc) > 256 { - tc = tc[:100] + "..." + tc[len(tc)-100:] - } - t.Errorf("no error for %s", tc) - } - } -} diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go deleted file mode 100644 index c9df24d9..00000000 --- a/vendor/golang.org/x/net/internal/iana/const.go +++ /dev/null @@ -1,180 +0,0 @@ -// go generate gen.go -// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA). -package iana // import "golang.org/x/net/internal/iana" - -// Differentiated Services Field Codepoints (DSCP), Updated: 2017-05-12 -const ( - DiffServCS0 = 0x0 // CS0 - DiffServCS1 = 0x20 // CS1 - DiffServCS2 = 0x40 // CS2 - DiffServCS3 = 0x60 // CS3 - DiffServCS4 = 0x80 // CS4 - DiffServCS5 = 0xa0 // CS5 - DiffServCS6 = 0xc0 // CS6 - DiffServCS7 = 0xe0 // CS7 - DiffServAF11 = 0x28 // AF11 - DiffServAF12 = 0x30 // AF12 - DiffServAF13 = 0x38 // AF13 - DiffServAF21 = 0x48 // AF21 - DiffServAF22 = 0x50 // AF22 - DiffServAF23 = 0x58 // AF23 - DiffServAF31 = 0x68 // AF31 - DiffServAF32 = 0x70 // AF32 - DiffServAF33 = 0x78 // AF33 - DiffServAF41 = 0x88 // AF41 - DiffServAF42 = 0x90 // AF42 - DiffServAF43 = 0x98 // AF43 - DiffServEF = 0xb8 // EF - DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT -) - -// IPv4 TOS Byte and IPv6 Traffic Class Octet, Updated: 2001-09-06 -const ( - NotECNTransport = 0x0 // Not-ECT (Not ECN-Capable Transport) - ECNTransport1 = 0x1 // ECT(1) (ECN-Capable Transport(1)) - ECNTransport0 = 0x2 // ECT(0) (ECN-Capable Transport(0)) - CongestionExperienced = 0x3 // CE (Congestion Experienced) -) - -// Protocol Numbers, Updated: 2016-06-22 -const ( - ProtocolIP = 0 // IPv4 encapsulation, pseudo protocol number - ProtocolHOPOPT = 0 // IPv6 Hop-by-Hop Option - ProtocolICMP = 1 // Internet Control Message - ProtocolIGMP = 2 // Internet Group Management - ProtocolGGP = 3 // Gateway-to-Gateway - ProtocolIPv4 = 4 // IPv4 encapsulation - ProtocolST = 5 // Stream - ProtocolTCP = 6 // Transmission Control - ProtocolCBT = 7 // CBT - ProtocolEGP = 8 // Exterior Gateway Protocol - ProtocolIGP = 9 // any private interior gateway (used by Cisco for their IGRP) - ProtocolBBNRCCMON = 10 // BBN RCC Monitoring - ProtocolNVPII = 11 // Network Voice Protocol - ProtocolPUP = 12 // PUP - ProtocolEMCON = 14 // EMCON - ProtocolXNET = 15 // Cross Net Debugger - ProtocolCHAOS = 16 // Chaos - ProtocolUDP = 17 // User Datagram - ProtocolMUX = 18 // Multiplexing - ProtocolDCNMEAS = 19 // DCN Measurement Subsystems - ProtocolHMP = 20 // Host Monitoring - ProtocolPRM = 21 // Packet Radio Measurement - ProtocolXNSIDP = 22 // XEROX NS IDP - ProtocolTRUNK1 = 23 // Trunk-1 - ProtocolTRUNK2 = 24 // Trunk-2 - ProtocolLEAF1 = 25 // Leaf-1 - ProtocolLEAF2 = 26 // Leaf-2 - ProtocolRDP = 27 // Reliable Data Protocol - ProtocolIRTP = 28 // Internet Reliable Transaction - ProtocolISOTP4 = 29 // ISO Transport Protocol Class 4 - ProtocolNETBLT = 30 // Bulk Data Transfer Protocol - ProtocolMFENSP = 31 // MFE Network Services Protocol - ProtocolMERITINP = 32 // MERIT Internodal Protocol - ProtocolDCCP = 33 // Datagram Congestion Control Protocol - Protocol3PC = 34 // Third Party Connect Protocol - ProtocolIDPR = 35 // Inter-Domain Policy Routing Protocol - ProtocolXTP = 36 // XTP - ProtocolDDP = 37 // Datagram Delivery Protocol - ProtocolIDPRCMTP = 38 // IDPR Control Message Transport Proto - ProtocolTPPP = 39 // TP++ Transport Protocol - ProtocolIL = 40 // IL Transport Protocol - ProtocolIPv6 = 41 // IPv6 encapsulation - ProtocolSDRP = 42 // Source Demand Routing Protocol - ProtocolIPv6Route = 43 // Routing Header for IPv6 - ProtocolIPv6Frag = 44 // Fragment Header for IPv6 - ProtocolIDRP = 45 // Inter-Domain Routing Protocol - ProtocolRSVP = 46 // Reservation Protocol - ProtocolGRE = 47 // Generic Routing Encapsulation - ProtocolDSR = 48 // Dynamic Source Routing Protocol - ProtocolBNA = 49 // BNA - ProtocolESP = 50 // Encap Security Payload - ProtocolAH = 51 // Authentication Header - ProtocolINLSP = 52 // Integrated Net Layer Security TUBA - ProtocolNARP = 54 // NBMA Address Resolution Protocol - ProtocolMOBILE = 55 // IP Mobility - ProtocolTLSP = 56 // Transport Layer Security Protocol using Kryptonet key management - ProtocolSKIP = 57 // SKIP - ProtocolIPv6ICMP = 58 // ICMP for IPv6 - ProtocolIPv6NoNxt = 59 // No Next Header for IPv6 - ProtocolIPv6Opts = 60 // Destination Options for IPv6 - ProtocolCFTP = 62 // CFTP - ProtocolSATEXPAK = 64 // SATNET and Backroom EXPAK - ProtocolKRYPTOLAN = 65 // Kryptolan - ProtocolRVD = 66 // MIT Remote Virtual Disk Protocol - ProtocolIPPC = 67 // Internet Pluribus Packet Core - ProtocolSATMON = 69 // SATNET Monitoring - ProtocolVISA = 70 // VISA Protocol - ProtocolIPCV = 71 // Internet Packet Core Utility - ProtocolCPNX = 72 // Computer Protocol Network Executive - ProtocolCPHB = 73 // Computer Protocol Heart Beat - ProtocolWSN = 74 // Wang Span Network - ProtocolPVP = 75 // Packet Video Protocol - ProtocolBRSATMON = 76 // Backroom SATNET Monitoring - ProtocolSUNND = 77 // SUN ND PROTOCOL-Temporary - ProtocolWBMON = 78 // WIDEBAND Monitoring - ProtocolWBEXPAK = 79 // WIDEBAND EXPAK - ProtocolISOIP = 80 // ISO Internet Protocol - ProtocolVMTP = 81 // VMTP - ProtocolSECUREVMTP = 82 // SECURE-VMTP - ProtocolVINES = 83 // VINES - ProtocolTTP = 84 // Transaction Transport Protocol - ProtocolIPTM = 84 // Internet Protocol Traffic Manager - ProtocolNSFNETIGP = 85 // NSFNET-IGP - ProtocolDGP = 86 // Dissimilar Gateway Protocol - ProtocolTCF = 87 // TCF - ProtocolEIGRP = 88 // EIGRP - ProtocolOSPFIGP = 89 // OSPFIGP - ProtocolSpriteRPC = 90 // Sprite RPC Protocol - ProtocolLARP = 91 // Locus Address Resolution Protocol - ProtocolMTP = 92 // Multicast Transport Protocol - ProtocolAX25 = 93 // AX.25 Frames - ProtocolIPIP = 94 // IP-within-IP Encapsulation Protocol - ProtocolSCCSP = 96 // Semaphore Communications Sec. Pro. - ProtocolETHERIP = 97 // Ethernet-within-IP Encapsulation - ProtocolENCAP = 98 // Encapsulation Header - ProtocolGMTP = 100 // GMTP - ProtocolIFMP = 101 // Ipsilon Flow Management Protocol - ProtocolPNNI = 102 // PNNI over IP - ProtocolPIM = 103 // Protocol Independent Multicast - ProtocolARIS = 104 // ARIS - ProtocolSCPS = 105 // SCPS - ProtocolQNX = 106 // QNX - ProtocolAN = 107 // Active Networks - ProtocolIPComp = 108 // IP Payload Compression Protocol - ProtocolSNP = 109 // Sitara Networks Protocol - ProtocolCompaqPeer = 110 // Compaq Peer Protocol - ProtocolIPXinIP = 111 // IPX in IP - ProtocolVRRP = 112 // Virtual Router Redundancy Protocol - ProtocolPGM = 113 // PGM Reliable Transport Protocol - ProtocolL2TP = 115 // Layer Two Tunneling Protocol - ProtocolDDX = 116 // D-II Data Exchange (DDX) - ProtocolIATP = 117 // Interactive Agent Transfer Protocol - ProtocolSTP = 118 // Schedule Transfer Protocol - ProtocolSRP = 119 // SpectraLink Radio Protocol - ProtocolUTI = 120 // UTI - ProtocolSMP = 121 // Simple Message Protocol - ProtocolPTP = 123 // Performance Transparency Protocol - ProtocolISIS = 124 // ISIS over IPv4 - ProtocolFIRE = 125 // FIRE - ProtocolCRTP = 126 // Combat Radio Transport Protocol - ProtocolCRUDP = 127 // Combat Radio User Datagram - ProtocolSSCOPMCE = 128 // SSCOPMCE - ProtocolIPLT = 129 // IPLT - ProtocolSPS = 130 // Secure Packet Shield - ProtocolPIPE = 131 // Private IP Encapsulation within IP - ProtocolSCTP = 132 // Stream Control Transmission Protocol - ProtocolFC = 133 // Fibre Channel - ProtocolRSVPE2EIGNORE = 134 // RSVP-E2E-IGNORE - ProtocolMobilityHeader = 135 // Mobility Header - ProtocolUDPLite = 136 // UDPLite - ProtocolMPLSinIP = 137 // MPLS-in-IP - ProtocolMANET = 138 // MANET Protocols - ProtocolHIP = 139 // Host Identity Protocol - ProtocolShim6 = 140 // Shim6 Protocol - ProtocolWESP = 141 // Wrapped Encapsulating Security Payload - ProtocolROHC = 142 // Robust Header Compression - ProtocolReserved = 255 // Reserved -) diff --git a/vendor/golang.org/x/net/internal/iana/gen.go b/vendor/golang.org/x/net/internal/iana/gen.go deleted file mode 100644 index 2a5c310c..00000000 --- a/vendor/golang.org/x/net/internal/iana/gen.go +++ /dev/null @@ -1,293 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -//go:generate go run gen.go - -// This program generates internet protocol constants and tables by -// reading IANA protocol registries. -package main - -import ( - "bytes" - "encoding/xml" - "fmt" - "go/format" - "io" - "io/ioutil" - "net/http" - "os" - "strconv" - "strings" -) - -var registries = []struct { - url string - parse func(io.Writer, io.Reader) error -}{ - { - "https://www.iana.org/assignments/dscp-registry/dscp-registry.xml", - parseDSCPRegistry, - }, - { - "https://www.iana.org/assignments/ipv4-tos-byte/ipv4-tos-byte.xml", - parseTOSTCByte, - }, - { - "https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml", - parseProtocolNumbers, - }, -} - -func main() { - var bb bytes.Buffer - fmt.Fprintf(&bb, "// go generate gen.go\n") - fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n") - fmt.Fprintf(&bb, "// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).\n") - fmt.Fprintf(&bb, `package iana // import "golang.org/x/net/internal/iana"`+"\n\n") - for _, r := range registries { - resp, err := http.Get(r.url) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - fmt.Fprintf(os.Stderr, "got HTTP status code %v for %v\n", resp.StatusCode, r.url) - os.Exit(1) - } - if err := r.parse(&bb, resp.Body); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - fmt.Fprintf(&bb, "\n") - } - b, err := format.Source(bb.Bytes()) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - if err := ioutil.WriteFile("const.go", b, 0644); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func parseDSCPRegistry(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var dr dscpRegistry - if err := dec.Decode(&dr); err != nil { - return err - } - drs := dr.escape() - fmt.Fprintf(w, "// %s, Updated: %s\n", dr.Title, dr.Updated) - fmt.Fprintf(w, "const (\n") - for _, dr := range drs { - fmt.Fprintf(w, "DiffServ%s = %#x", dr.Name, dr.Value) - fmt.Fprintf(w, "// %s\n", dr.OrigName) - } - fmt.Fprintf(w, ")\n") - return nil -} - -type dscpRegistry struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Note string `xml:"note"` - RegTitle string `xml:"registry>title"` - PoolRecords []struct { - Name string `xml:"name"` - Space string `xml:"space"` - } `xml:"registry>record"` - Records []struct { - Name string `xml:"name"` - Space string `xml:"space"` - } `xml:"registry>registry>record"` -} - -type canonDSCPRecord struct { - OrigName string - Name string - Value int -} - -func (drr *dscpRegistry) escape() []canonDSCPRecord { - drs := make([]canonDSCPRecord, len(drr.Records)) - sr := strings.NewReplacer( - "+", "", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, dr := range drr.Records { - s := strings.TrimSpace(dr.Name) - drs[i].OrigName = s - drs[i].Name = sr.Replace(s) - n, err := strconv.ParseUint(dr.Space, 2, 8) - if err != nil { - continue - } - drs[i].Value = int(n) << 2 - } - return drs -} - -func parseTOSTCByte(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var ttb tosTCByte - if err := dec.Decode(&ttb); err != nil { - return err - } - trs := ttb.escape() - fmt.Fprintf(w, "// %s, Updated: %s\n", ttb.Title, ttb.Updated) - fmt.Fprintf(w, "const (\n") - for _, tr := range trs { - fmt.Fprintf(w, "%s = %#x", tr.Keyword, tr.Value) - fmt.Fprintf(w, "// %s\n", tr.OrigKeyword) - } - fmt.Fprintf(w, ")\n") - return nil -} - -type tosTCByte struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Note string `xml:"note"` - RegTitle string `xml:"registry>title"` - Records []struct { - Binary string `xml:"binary"` - Keyword string `xml:"keyword"` - } `xml:"registry>record"` -} - -type canonTOSTCByteRecord struct { - OrigKeyword string - Keyword string - Value int -} - -func (ttb *tosTCByte) escape() []canonTOSTCByteRecord { - trs := make([]canonTOSTCByteRecord, len(ttb.Records)) - sr := strings.NewReplacer( - "Capable", "", - "(", "", - ")", "", - "+", "", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, tr := range ttb.Records { - s := strings.TrimSpace(tr.Keyword) - trs[i].OrigKeyword = s - ss := strings.Split(s, " ") - if len(ss) > 1 { - trs[i].Keyword = strings.Join(ss[1:], " ") - } else { - trs[i].Keyword = ss[0] - } - trs[i].Keyword = sr.Replace(trs[i].Keyword) - n, err := strconv.ParseUint(tr.Binary, 2, 8) - if err != nil { - continue - } - trs[i].Value = int(n) - } - return trs -} - -func parseProtocolNumbers(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var pn protocolNumbers - if err := dec.Decode(&pn); err != nil { - return err - } - prs := pn.escape() - prs = append([]canonProtocolRecord{{ - Name: "IP", - Descr: "IPv4 encapsulation, pseudo protocol number", - Value: 0, - }}, prs...) - fmt.Fprintf(w, "// %s, Updated: %s\n", pn.Title, pn.Updated) - fmt.Fprintf(w, "const (\n") - for _, pr := range prs { - if pr.Name == "" { - continue - } - fmt.Fprintf(w, "Protocol%s = %d", pr.Name, pr.Value) - s := pr.Descr - if s == "" { - s = pr.OrigName - } - fmt.Fprintf(w, "// %s\n", s) - } - fmt.Fprintf(w, ")\n") - return nil -} - -type protocolNumbers struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - RegTitle string `xml:"registry>title"` - Note string `xml:"registry>note"` - Records []struct { - Value string `xml:"value"` - Name string `xml:"name"` - Descr string `xml:"description"` - } `xml:"registry>record"` -} - -type canonProtocolRecord struct { - OrigName string - Name string - Descr string - Value int -} - -func (pn *protocolNumbers) escape() []canonProtocolRecord { - prs := make([]canonProtocolRecord, len(pn.Records)) - sr := strings.NewReplacer( - "-in-", "in", - "-within-", "within", - "-over-", "over", - "+", "P", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, pr := range pn.Records { - if strings.Contains(pr.Name, "Deprecated") || - strings.Contains(pr.Name, "deprecated") { - continue - } - prs[i].OrigName = pr.Name - s := strings.TrimSpace(pr.Name) - switch pr.Name { - case "ISIS over IPv4": - prs[i].Name = "ISIS" - case "manet": - prs[i].Name = "MANET" - default: - prs[i].Name = sr.Replace(s) - } - ss := strings.Split(pr.Descr, "\n") - for i := range ss { - ss[i] = strings.TrimSpace(ss[i]) - } - if len(ss) > 1 { - prs[i].Descr = strings.Join(ss, " ") - } else { - prs[i].Descr = ss[0] - } - prs[i].Value, _ = strconv.Atoi(pr.Value) - } - return prs -} diff --git a/vendor/golang.org/x/net/internal/nettest/helper_bsd.go b/vendor/golang.org/x/net/internal/nettest/helper_bsd.go deleted file mode 100644 index a6e433b5..00000000 --- a/vendor/golang.org/x/net/internal/nettest/helper_bsd.go +++ /dev/null @@ -1,53 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package nettest - -import ( - "runtime" - "strconv" - "strings" - "syscall" -) - -var darwinVersion int - -func init() { - if runtime.GOOS == "darwin" { - // See http://support.apple.com/kb/HT1633. - s, err := syscall.Sysctl("kern.osrelease") - if err != nil { - return - } - ss := strings.Split(s, ".") - if len(ss) == 0 { - return - } - darwinVersion, _ = strconv.Atoi(ss[0]) - } -} - -func supportsIPv6MulticastDeliveryOnLoopback() bool { - switch runtime.GOOS { - case "freebsd": - // See http://www.freebsd.org/cgi/query-pr.cgi?pr=180065. - // Even after the fix, it looks like the latest - // kernels don't deliver link-local scoped multicast - // packets correctly. - return false - case "darwin": - return !causesIPv6Crash() - default: - return true - } -} - -func causesIPv6Crash() bool { - // We see some kernel crash when running IPv6 with IP-level - // options on Darwin kernel version 12 or below. - // See golang.org/issues/17015. - return darwinVersion < 13 -} diff --git a/vendor/golang.org/x/net/internal/nettest/helper_nobsd.go b/vendor/golang.org/x/net/internal/nettest/helper_nobsd.go deleted file mode 100644 index bc7da5e0..00000000 --- a/vendor/golang.org/x/net/internal/nettest/helper_nobsd.go +++ /dev/null @@ -1,15 +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. - -// +build linux solaris - -package nettest - -func supportsIPv6MulticastDeliveryOnLoopback() bool { - return true -} - -func causesIPv6Crash() bool { - return false -} diff --git a/vendor/golang.org/x/net/internal/nettest/helper_posix.go b/vendor/golang.org/x/net/internal/nettest/helper_posix.go deleted file mode 100644 index 963ed996..00000000 --- a/vendor/golang.org/x/net/internal/nettest/helper_posix.go +++ /dev/null @@ -1,31 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package nettest - -import ( - "os" - "syscall" -) - -func protocolNotSupported(err error) bool { - switch err := err.(type) { - case syscall.Errno: - switch err { - case syscall.EPROTONOSUPPORT, syscall.ENOPROTOOPT: - return true - } - case *os.SyscallError: - switch err := err.Err.(type) { - case syscall.Errno: - switch err { - case syscall.EPROTONOSUPPORT, syscall.ENOPROTOOPT: - return true - } - } - } - return false -} diff --git a/vendor/golang.org/x/net/internal/nettest/helper_stub.go b/vendor/golang.org/x/net/internal/nettest/helper_stub.go deleted file mode 100644 index ea61b6f3..00000000 --- a/vendor/golang.org/x/net/internal/nettest/helper_stub.go +++ /dev/null @@ -1,32 +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. - -// +build nacl plan9 - -package nettest - -import ( - "fmt" - "runtime" -) - -func maxOpenFiles() int { - return defaultMaxOpenFiles -} - -func supportsRawIPSocket() (string, bool) { - return fmt.Sprintf("not supported on %s", runtime.GOOS), false -} - -func supportsIPv6MulticastDeliveryOnLoopback() bool { - return false -} - -func causesIPv6Crash() bool { - return false -} - -func protocolNotSupported(err error) bool { - return false -} diff --git a/vendor/golang.org/x/net/internal/nettest/helper_unix.go b/vendor/golang.org/x/net/internal/nettest/helper_unix.go deleted file mode 100644 index ed13e448..00000000 --- a/vendor/golang.org/x/net/internal/nettest/helper_unix.go +++ /dev/null @@ -1,29 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package nettest - -import ( - "fmt" - "os" - "runtime" - "syscall" -) - -func maxOpenFiles() int { - var rlim syscall.Rlimit - if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlim); err != nil { - return defaultMaxOpenFiles - } - return int(rlim.Cur) -} - -func supportsRawIPSocket() (string, bool) { - if os.Getuid() != 0 { - return fmt.Sprintf("must be root on %s", runtime.GOOS), false - } - return "", true -} diff --git a/vendor/golang.org/x/net/internal/nettest/helper_windows.go b/vendor/golang.org/x/net/internal/nettest/helper_windows.go deleted file mode 100644 index 3dcb727c..00000000 --- a/vendor/golang.org/x/net/internal/nettest/helper_windows.go +++ /dev/null @@ -1,42 +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 nettest - -import ( - "fmt" - "runtime" - "syscall" -) - -func maxOpenFiles() int { - return 4 * defaultMaxOpenFiles /* actually it's 16581375 */ -} - -func supportsRawIPSocket() (string, bool) { - // From http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548.aspx: - // Note: To use a socket of type SOCK_RAW requires administrative privileges. - // Users running Winsock applications that use raw sockets must be a member of - // the Administrators group on the local computer, otherwise raw socket calls - // will fail with an error code of WSAEACCES. On Windows Vista and later, access - // for raw sockets is enforced at socket creation. In earlier versions of Windows, - // access for raw sockets is enforced during other socket operations. - s, err := syscall.Socket(syscall.AF_INET, syscall.SOCK_RAW, 0) - if err == syscall.WSAEACCES { - return fmt.Sprintf("no access to raw socket allowed on %s", runtime.GOOS), false - } - if err != nil { - return err.Error(), false - } - syscall.Closesocket(s) - return "", true -} - -func supportsIPv6MulticastDeliveryOnLoopback() bool { - return true -} - -func causesIPv6Crash() bool { - return false -} diff --git a/vendor/golang.org/x/net/internal/nettest/interface.go b/vendor/golang.org/x/net/internal/nettest/interface.go deleted file mode 100644 index 8e6333af..00000000 --- a/vendor/golang.org/x/net/internal/nettest/interface.go +++ /dev/null @@ -1,94 +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 nettest - -import "net" - -// IsMulticastCapable reports whether ifi is an IP multicast-capable -// network interface. Network must be "ip", "ip4" or "ip6". -func IsMulticastCapable(network string, ifi *net.Interface) (net.IP, bool) { - switch network { - case "ip", "ip4", "ip6": - default: - return nil, false - } - if ifi == nil || ifi.Flags&net.FlagUp == 0 || ifi.Flags&net.FlagMulticast == 0 { - return nil, false - } - return hasRoutableIP(network, ifi) -} - -// RoutedInterface returns a network interface that can route IP -// traffic and satisfies flags. It returns nil when an appropriate -// network interface is not found. Network must be "ip", "ip4" or -// "ip6". -func RoutedInterface(network string, flags net.Flags) *net.Interface { - switch network { - case "ip", "ip4", "ip6": - default: - return nil - } - ift, err := net.Interfaces() - if err != nil { - return nil - } - for _, ifi := range ift { - if ifi.Flags&flags != flags { - continue - } - if _, ok := hasRoutableIP(network, &ifi); !ok { - continue - } - return &ifi - } - return nil -} - -func hasRoutableIP(network string, ifi *net.Interface) (net.IP, bool) { - ifat, err := ifi.Addrs() - if err != nil { - return nil, false - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip := routableIP(network, ifa.IP); ip != nil { - return ip, true - } - case *net.IPNet: - if ip := routableIP(network, ifa.IP); ip != nil { - return ip, true - } - } - } - return nil, false -} - -func routableIP(network string, ip net.IP) net.IP { - if !ip.IsLoopback() && !ip.IsLinkLocalUnicast() && !ip.IsGlobalUnicast() { - return nil - } - switch network { - case "ip4": - if ip := ip.To4(); ip != nil { - return ip - } - case "ip6": - if ip.IsLoopback() { // addressing scope of the loopback address depends on each implementation - return nil - } - if ip := ip.To16(); ip != nil && ip.To4() == nil { - return ip - } - default: - if ip := ip.To4(); ip != nil { - return ip - } - if ip := ip.To16(); ip != nil { - return ip - } - } - return nil -} diff --git a/vendor/golang.org/x/net/internal/nettest/rlimit.go b/vendor/golang.org/x/net/internal/nettest/rlimit.go deleted file mode 100644 index bb34aec0..00000000 --- a/vendor/golang.org/x/net/internal/nettest/rlimit.go +++ /dev/null @@ -1,11 +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 nettest - -const defaultMaxOpenFiles = 256 - -// MaxOpenFiles returns the maximum number of open files for the -// caller's process. -func MaxOpenFiles() int { return maxOpenFiles() } diff --git a/vendor/golang.org/x/net/internal/nettest/stack.go b/vendor/golang.org/x/net/internal/nettest/stack.go deleted file mode 100644 index 06f4e09e..00000000 --- a/vendor/golang.org/x/net/internal/nettest/stack.go +++ /dev/null @@ -1,152 +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 nettest provides utilities for network testing. -package nettest // import "golang.org/x/net/internal/nettest" - -import ( - "fmt" - "io/ioutil" - "net" - "os" - "runtime" -) - -var ( - supportsIPv4 bool - supportsIPv6 bool -) - -func init() { - if ln, err := net.Listen("tcp4", "127.0.0.1:0"); err == nil { - ln.Close() - supportsIPv4 = true - } - if ln, err := net.Listen("tcp6", "[::1]:0"); err == nil { - ln.Close() - supportsIPv6 = true - } -} - -// SupportsIPv4 reports whether the platform supports IPv4 networking -// functionality. -func SupportsIPv4() bool { return supportsIPv4 } - -// SupportsIPv6 reports whether the platform supports IPv6 networking -// functionality. -func SupportsIPv6() bool { return supportsIPv6 } - -// SupportsRawIPSocket reports whether the platform supports raw IP -// sockets. -func SupportsRawIPSocket() (string, bool) { - return supportsRawIPSocket() -} - -// SupportsIPv6MulticastDeliveryOnLoopback reports whether the -// platform supports IPv6 multicast packet delivery on software -// loopback interface. -func SupportsIPv6MulticastDeliveryOnLoopback() bool { - return supportsIPv6MulticastDeliveryOnLoopback() -} - -// ProtocolNotSupported reports whether err is a protocol not -// supported error. -func ProtocolNotSupported(err error) bool { - return protocolNotSupported(err) -} - -// TestableNetwork reports whether network is testable on the current -// platform configuration. -func TestableNetwork(network string) bool { - // This is based on logic from standard library's - // net/platform_test.go. - switch network { - case "unix", "unixgram": - switch runtime.GOOS { - case "android", "nacl", "plan9", "windows": - return false - } - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { - return false - } - case "unixpacket": - switch runtime.GOOS { - case "android", "darwin", "freebsd", "nacl", "plan9", "windows": - return false - case "netbsd": - // It passes on amd64 at least. 386 fails (Issue 22927). arm is unknown. - if runtime.GOARCH == "386" { - return false - } - } - } - return true -} - -// NewLocalListener returns a listener which listens to a loopback IP -// address or local file system path. -// Network must be "tcp", "tcp4", "tcp6", "unix" or "unixpacket". -func NewLocalListener(network string) (net.Listener, error) { - switch network { - case "tcp": - if supportsIPv4 { - if ln, err := net.Listen("tcp4", "127.0.0.1:0"); err == nil { - return ln, nil - } - } - if supportsIPv6 { - return net.Listen("tcp6", "[::1]:0") - } - case "tcp4": - if supportsIPv4 { - return net.Listen("tcp4", "127.0.0.1:0") - } - case "tcp6": - if supportsIPv6 { - return net.Listen("tcp6", "[::1]:0") - } - case "unix", "unixpacket": - return net.Listen(network, localPath()) - } - return nil, fmt.Errorf("%s is not supported", network) -} - -// NewLocalPacketListener returns a packet listener which listens to a -// loopback IP address or local file system path. -// Network must be "udp", "udp4", "udp6" or "unixgram". -func NewLocalPacketListener(network string) (net.PacketConn, error) { - switch network { - case "udp": - if supportsIPv4 { - if c, err := net.ListenPacket("udp4", "127.0.0.1:0"); err == nil { - return c, nil - } - } - if supportsIPv6 { - return net.ListenPacket("udp6", "[::1]:0") - } - case "udp4": - if supportsIPv4 { - return net.ListenPacket("udp4", "127.0.0.1:0") - } - case "udp6": - if supportsIPv6 { - return net.ListenPacket("udp6", "[::1]:0") - } - case "unixgram": - return net.ListenPacket(network, localPath()) - } - return nil, fmt.Errorf("%s is not supported", network) -} - -func localPath() string { - f, err := ioutil.TempFile("", "nettest") - if err != nil { - panic(err) - } - path := f.Name() - f.Close() - os.Remove(path) - return path -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr.go b/vendor/golang.org/x/net/internal/socket/cmsghdr.go deleted file mode 100644 index 1eb07d26..00000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr.go +++ /dev/null @@ -1,11 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package socket - -func (h *cmsghdr) len() int { return int(h.Len) } -func (h *cmsghdr) lvl() int { return int(h.Level) } -func (h *cmsghdr) typ() int { return int(h.Type) } diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go deleted file mode 100644 index d1d0c2de..00000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go +++ /dev/null @@ -1,13 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package socket - -func (h *cmsghdr) set(l, lvl, typ int) { - h.Len = uint32(l) - h.Level = int32(lvl) - h.Type = int32(typ) -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go deleted file mode 100644 index bac66811..00000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go +++ /dev/null @@ -1,14 +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. - -// +build arm mips mipsle 386 -// +build linux - -package socket - -func (h *cmsghdr) set(l, lvl, typ int) { - h.Len = uint32(l) - h.Level = int32(lvl) - h.Type = int32(typ) -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go deleted file mode 100644 index 63f0534f..00000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +++ /dev/null @@ -1,14 +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. - -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le s390x -// +build linux - -package socket - -func (h *cmsghdr) set(l, lvl, typ int) { - h.Len = uint64(l) - h.Level = int32(lvl) - h.Type = int32(typ) -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go deleted file mode 100644 index 7dedd430..00000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go +++ /dev/null @@ -1,14 +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. - -// +build amd64 -// +build solaris - -package socket - -func (h *cmsghdr) set(l, lvl, typ int) { - h.Len = uint32(l) - h.Level = int32(lvl) - h.Type = int32(typ) -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go deleted file mode 100644 index a4e71226..00000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go +++ /dev/null @@ -1,17 +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. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package socket - -type cmsghdr struct{} - -const sizeofCmsghdr = 0 - -func (h *cmsghdr) len() int { return 0 } -func (h *cmsghdr) lvl() int { return 0 } -func (h *cmsghdr) typ() int { return 0 } - -func (h *cmsghdr) set(l, lvl, typ int) {} diff --git a/vendor/golang.org/x/net/internal/socket/defs_darwin.go b/vendor/golang.org/x/net/internal/socket/defs_darwin.go deleted file mode 100644 index 14e28c0b..00000000 --- a/vendor/golang.org/x/net/internal/socket/defs_darwin.go +++ /dev/null @@ -1,44 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW -) - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go deleted file mode 100644 index 14e28c0b..00000000 --- a/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go +++ /dev/null @@ -1,44 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW -) - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_freebsd.go b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go deleted file mode 100644 index 14e28c0b..00000000 --- a/vendor/golang.org/x/net/internal/socket/defs_freebsd.go +++ /dev/null @@ -1,44 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW -) - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_linux.go b/vendor/golang.org/x/net/internal/socket/defs_linux.go deleted file mode 100644 index ce9ec2f6..00000000 --- a/vendor/golang.org/x/net/internal/socket/defs_linux.go +++ /dev/null @@ -1,49 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include <linux/in.h> -#include <linux/in6.h> - -#define _GNU_SOURCE -#include <sys/socket.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW -) - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type mmsghdr C.struct_mmsghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofMmsghdr = C.sizeof_struct_mmsghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_netbsd.go b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go deleted file mode 100644 index 3f843356..00000000 --- a/vendor/golang.org/x/net/internal/socket/defs_netbsd.go +++ /dev/null @@ -1,47 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW -) - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type mmsghdr C.struct_mmsghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofMmsghdr = C.sizeof_struct_mmsghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_openbsd.go b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go deleted file mode 100644 index 14e28c0b..00000000 --- a/vendor/golang.org/x/net/internal/socket/defs_openbsd.go +++ /dev/null @@ -1,44 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW -) - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_solaris.go b/vendor/golang.org/x/net/internal/socket/defs_solaris.go deleted file mode 100644 index 14e28c0b..00000000 --- a/vendor/golang.org/x/net/internal/socket/defs_solaris.go +++ /dev/null @@ -1,44 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW -) - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/error_unix.go b/vendor/golang.org/x/net/internal/socket/error_unix.go deleted file mode 100644 index 93dff918..00000000 --- a/vendor/golang.org/x/net/internal/socket/error_unix.go +++ /dev/null @@ -1,31 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package socket - -import "syscall" - -var ( - errEAGAIN error = syscall.EAGAIN - errEINVAL error = syscall.EINVAL - errENOENT error = syscall.ENOENT -) - -// errnoErr returns common boxed Errno values, to prevent allocations -// at runtime. -func errnoErr(errno syscall.Errno) error { - switch errno { - case 0: - return nil - case syscall.EAGAIN: - return errEAGAIN - case syscall.EINVAL: - return errEINVAL - case syscall.ENOENT: - return errENOENT - } - return errno -} diff --git a/vendor/golang.org/x/net/internal/socket/error_windows.go b/vendor/golang.org/x/net/internal/socket/error_windows.go deleted file mode 100644 index 6a6379a8..00000000 --- a/vendor/golang.org/x/net/internal/socket/error_windows.go +++ /dev/null @@ -1,26 +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 socket - -import "syscall" - -var ( - errERROR_IO_PENDING error = syscall.ERROR_IO_PENDING - errEINVAL error = syscall.EINVAL -) - -// errnoErr returns common boxed Errno values, to prevent allocations -// at runtime. -func errnoErr(errno syscall.Errno) error { - switch errno { - case 0: - return nil - case syscall.ERROR_IO_PENDING: - return errERROR_IO_PENDING - case syscall.EINVAL: - return errEINVAL - } - return errno -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go deleted file mode 100644 index 05d6082d..00000000 --- a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +++ /dev/null @@ -1,19 +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. - -// +build arm mips mipsle 386 -// +build darwin dragonfly freebsd linux netbsd openbsd - -package socket - -import "unsafe" - -func (v *iovec) set(b []byte) { - l := len(b) - if l == 0 { - return - } - v.Base = (*byte)(unsafe.Pointer(&b[0])) - v.Len = uint32(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go deleted file mode 100644 index afb34ad5..00000000 --- a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +++ /dev/null @@ -1,19 +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. - -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le s390x -// +build darwin dragonfly freebsd linux netbsd openbsd - -package socket - -import "unsafe" - -func (v *iovec) set(b []byte) { - l := len(b) - if l == 0 { - return - } - v.Base = (*byte)(unsafe.Pointer(&b[0])) - v.Len = uint64(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go deleted file mode 100644 index 8d17a40c..00000000 --- a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +++ /dev/null @@ -1,19 +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. - -// +build amd64 -// +build solaris - -package socket - -import "unsafe" - -func (v *iovec) set(b []byte) { - l := len(b) - if l == 0 { - return - } - v.Base = (*int8)(unsafe.Pointer(&b[0])) - v.Len = uint64(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_stub.go b/vendor/golang.org/x/net/internal/socket/iovec_stub.go deleted file mode 100644 index c87d2a93..00000000 --- a/vendor/golang.org/x/net/internal/socket/iovec_stub.go +++ /dev/null @@ -1,11 +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. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package socket - -type iovec struct{} - -func (v *iovec) set(b []byte) {} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go deleted file mode 100644 index 2e80a9cb..00000000 --- a/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go +++ /dev/null @@ -1,21 +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. - -// +build !linux,!netbsd - -package socket - -import "net" - -type mmsghdr struct{} - -type mmsghdrs []mmsghdr - -func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { - return nil -} - -func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { - return nil -} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go deleted file mode 100644 index 3c42ea7a..00000000 --- a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +++ /dev/null @@ -1,42 +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. - -// +build linux netbsd - -package socket - -import "net" - -type mmsghdrs []mmsghdr - -func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { - for i := range hs { - vs := make([]iovec, len(ms[i].Buffers)) - var sa []byte - if parseFn != nil { - sa = make([]byte, sizeofSockaddrInet6) - } - if marshalFn != nil { - sa = marshalFn(ms[i].Addr) - } - hs[i].Hdr.pack(vs, ms[i].Buffers, ms[i].OOB, sa) - } - return nil -} - -func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { - for i := range hs { - ms[i].N = int(hs[i].Len) - ms[i].NN = hs[i].Hdr.controllen() - ms[i].Flags = hs[i].Hdr.flags() - if parseFn != nil { - var err error - ms[i].Addr, err = parseFn(hs[i].Hdr.name(), hint) - if err != nil { - return err - } - } - } - return nil -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go deleted file mode 100644 index 5567afc8..00000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go +++ /dev/null @@ -1,39 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package socket - -import "unsafe" - -func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { - for i := range vs { - vs[i].set(bs[i]) - } - h.setIov(vs) - if len(oob) > 0 { - h.Control = (*byte)(unsafe.Pointer(&oob[0])) - h.Controllen = uint32(len(oob)) - } - if sa != nil { - h.Name = (*byte)(unsafe.Pointer(&sa[0])) - h.Namelen = uint32(len(sa)) - } -} - -func (h *msghdr) name() []byte { - if h.Name != nil && h.Namelen > 0 { - return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] - } - return nil -} - -func (h *msghdr) controllen() int { - return int(h.Controllen) -} - -func (h *msghdr) flags() int { - return int(h.Flags) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go deleted file mode 100644 index b8c87b72..00000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +++ /dev/null @@ -1,16 +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. - -// +build darwin dragonfly freebsd netbsd - -package socket - -func (h *msghdr) setIov(vs []iovec) { - l := len(vs) - if l == 0 { - return - } - h.Iov = &vs[0] - h.Iovlen = int32(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go deleted file mode 100644 index 5a38798c..00000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go +++ /dev/null @@ -1,36 +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 socket - -import "unsafe" - -func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { - for i := range vs { - vs[i].set(bs[i]) - } - h.setIov(vs) - if len(oob) > 0 { - h.setControl(oob) - } - if sa != nil { - h.Name = (*byte)(unsafe.Pointer(&sa[0])) - h.Namelen = uint32(len(sa)) - } -} - -func (h *msghdr) name() []byte { - if h.Name != nil && h.Namelen > 0 { - return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] - } - return nil -} - -func (h *msghdr) controllen() int { - return int(h.Controllen) -} - -func (h *msghdr) flags() int { - return int(h.Flags) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go deleted file mode 100644 index a7a5987c..00000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +++ /dev/null @@ -1,24 +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. - -// +build arm mips mipsle 386 -// +build linux - -package socket - -import "unsafe" - -func (h *msghdr) setIov(vs []iovec) { - l := len(vs) - if l == 0 { - return - } - h.Iov = &vs[0] - h.Iovlen = uint32(l) -} - -func (h *msghdr) setControl(b []byte) { - h.Control = (*byte)(unsafe.Pointer(&b[0])) - h.Controllen = uint32(len(b)) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go deleted file mode 100644 index 610fc4f3..00000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +++ /dev/null @@ -1,24 +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. - -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le s390x -// +build linux - -package socket - -import "unsafe" - -func (h *msghdr) setIov(vs []iovec) { - l := len(vs) - if l == 0 { - return - } - h.Iov = &vs[0] - h.Iovlen = uint64(l) -} - -func (h *msghdr) setControl(b []byte) { - h.Control = (*byte)(unsafe.Pointer(&b[0])) - h.Controllen = uint64(len(b)) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go deleted file mode 100644 index 71a69e25..00000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +++ /dev/null @@ -1,14 +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 socket - -func (h *msghdr) setIov(vs []iovec) { - l := len(vs) - if l == 0 { - return - } - h.Iov = &vs[0] - h.Iovlen = uint32(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go deleted file mode 100644 index 6465b207..00000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +++ /dev/null @@ -1,36 +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. - -// +build amd64 -// +build solaris - -package socket - -import "unsafe" - -func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { - for i := range vs { - vs[i].set(bs[i]) - } - if len(vs) > 0 { - h.Iov = &vs[0] - h.Iovlen = int32(len(vs)) - } - if len(oob) > 0 { - h.Accrights = (*int8)(unsafe.Pointer(&oob[0])) - h.Accrightslen = int32(len(oob)) - } - if sa != nil { - h.Name = (*byte)(unsafe.Pointer(&sa[0])) - h.Namelen = uint32(len(sa)) - } -} - -func (h *msghdr) controllen() int { - return int(h.Accrightslen) -} - -func (h *msghdr) flags() int { - return int(NativeEndian.Uint32(h.Pad_cgo_2[:])) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_stub.go b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go deleted file mode 100644 index 64e81733..00000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_stub.go +++ /dev/null @@ -1,14 +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. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package socket - -type msghdr struct{} - -func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {} -func (h *msghdr) name() []byte { return nil } -func (h *msghdr) controllen() int { return 0 } -func (h *msghdr) flags() int { return 0 } diff --git a/vendor/golang.org/x/net/internal/socket/rawconn.go b/vendor/golang.org/x/net/internal/socket/rawconn.go deleted file mode 100644 index d6871d55..00000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn.go +++ /dev/null @@ -1,66 +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. - -// +build go1.9 - -package socket - -import ( - "errors" - "net" - "os" - "syscall" -) - -// A Conn represents a raw connection. -type Conn struct { - network string - c syscall.RawConn -} - -// NewConn returns a new raw connection. -func NewConn(c net.Conn) (*Conn, error) { - var err error - var cc Conn - switch c := c.(type) { - case *net.TCPConn: - cc.network = "tcp" - cc.c, err = c.SyscallConn() - case *net.UDPConn: - cc.network = "udp" - cc.c, err = c.SyscallConn() - case *net.IPConn: - cc.network = "ip" - cc.c, err = c.SyscallConn() - default: - return nil, errors.New("unknown connection type") - } - if err != nil { - return nil, err - } - return &cc, nil -} - -func (o *Option) get(c *Conn, b []byte) (int, error) { - var operr error - var n int - fn := func(s uintptr) { - n, operr = getsockopt(s, o.Level, o.Name, b) - } - if err := c.c.Control(fn); err != nil { - return 0, err - } - return n, os.NewSyscallError("getsockopt", operr) -} - -func (o *Option) set(c *Conn, b []byte) error { - var operr error - fn := func(s uintptr) { - operr = setsockopt(s, o.Level, o.Name, b) - } - if err := c.c.Control(fn); err != nil { - return err - } - return os.NewSyscallError("setsockopt", operr) -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go deleted file mode 100644 index 499164a3..00000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +++ /dev/null @@ -1,74 +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. - -// +build go1.9 -// +build linux - -package socket - -import ( - "net" - "os" - "syscall" -) - -func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { - hs := make(mmsghdrs, len(ms)) - var parseFn func([]byte, string) (net.Addr, error) - if c.network != "tcp" { - parseFn = parseInetAddr - } - if err := hs.pack(ms, parseFn, nil); err != nil { - return 0, err - } - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = recvmmsg(s, hs, flags) - if operr == syscall.EAGAIN { - return false - } - return true - } - if err := c.c.Read(fn); err != nil { - return n, err - } - if operr != nil { - return n, os.NewSyscallError("recvmmsg", operr) - } - if err := hs[:n].unpack(ms[:n], parseFn, c.network); err != nil { - return n, err - } - return n, nil -} - -func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { - hs := make(mmsghdrs, len(ms)) - var marshalFn func(net.Addr) []byte - if c.network != "tcp" { - marshalFn = marshalInetAddr - } - if err := hs.pack(ms, nil, marshalFn); err != nil { - return 0, err - } - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = sendmmsg(s, hs, flags) - if operr == syscall.EAGAIN { - return false - } - return true - } - if err := c.c.Write(fn); err != nil { - return n, err - } - if operr != nil { - return n, os.NewSyscallError("sendmmsg", operr) - } - if err := hs[:n].unpack(ms[:n], nil, ""); err != nil { - return n, err - } - return n, nil -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go deleted file mode 100644 index b21d2e64..00000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go +++ /dev/null @@ -1,77 +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. - -// +build go1.9 -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package socket - -import ( - "os" - "syscall" -) - -func (c *Conn) recvMsg(m *Message, flags int) error { - var h msghdr - vs := make([]iovec, len(m.Buffers)) - var sa []byte - if c.network != "tcp" { - sa = make([]byte, sizeofSockaddrInet6) - } - h.pack(vs, m.Buffers, m.OOB, sa) - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = recvmsg(s, &h, flags) - if operr == syscall.EAGAIN { - return false - } - return true - } - if err := c.c.Read(fn); err != nil { - return err - } - if operr != nil { - return os.NewSyscallError("recvmsg", operr) - } - if c.network != "tcp" { - var err error - m.Addr, err = parseInetAddr(sa[:], c.network) - if err != nil { - return err - } - } - m.N = n - m.NN = h.controllen() - m.Flags = h.flags() - return nil -} - -func (c *Conn) sendMsg(m *Message, flags int) error { - var h msghdr - vs := make([]iovec, len(m.Buffers)) - var sa []byte - if m.Addr != nil { - sa = marshalInetAddr(m.Addr) - } - h.pack(vs, m.Buffers, m.OOB, sa) - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = sendmsg(s, &h, flags) - if operr == syscall.EAGAIN { - return false - } - return true - } - if err := c.c.Write(fn); err != nil { - return err - } - if operr != nil { - return os.NewSyscallError("sendmsg", operr) - } - m.N = n - m.NN = len(m.OOB) - return nil -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go deleted file mode 100644 index f78832aa..00000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go +++ /dev/null @@ -1,18 +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. - -// +build go1.9 -// +build !linux - -package socket - -import "errors" - -func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { - return 0, errors.New("not implemented") -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go deleted file mode 100644 index 96733cbe..00000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go +++ /dev/null @@ -1,18 +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. - -// +build go1.9 -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package socket - -import "errors" - -func (c *Conn) recvMsg(m *Message, flags int) error { - return errors.New("not implemented") -} - -func (c *Conn) sendMsg(m *Message, flags int) error { - return errors.New("not implemented") -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_stub.go b/vendor/golang.org/x/net/internal/socket/rawconn_stub.go deleted file mode 100644 index d2add1a0..00000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_stub.go +++ /dev/null @@ -1,25 +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. - -// +build !go1.9 - -package socket - -import "errors" - -func (c *Conn) recvMsg(m *Message, flags int) error { - return errors.New("not implemented") -} - -func (c *Conn) sendMsg(m *Message, flags int) error { - return errors.New("not implemented") -} - -func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { - return 0, errors.New("not implemented") -} diff --git a/vendor/golang.org/x/net/internal/socket/reflect.go b/vendor/golang.org/x/net/internal/socket/reflect.go deleted file mode 100644 index bb179f11..00000000 --- a/vendor/golang.org/x/net/internal/socket/reflect.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. - -// +build !go1.9 - -package socket - -import ( - "errors" - "net" - "os" - "reflect" - "runtime" -) - -// A Conn represents a raw connection. -type Conn struct { - c net.Conn -} - -// NewConn returns a new raw connection. -func NewConn(c net.Conn) (*Conn, error) { - return &Conn{c: c}, nil -} - -func (o *Option) get(c *Conn, b []byte) (int, error) { - s, err := socketOf(c.c) - if err != nil { - return 0, err - } - n, err := getsockopt(s, o.Level, o.Name, b) - return n, os.NewSyscallError("getsockopt", err) -} - -func (o *Option) set(c *Conn, b []byte) error { - s, err := socketOf(c.c) - if err != nil { - return err - } - return os.NewSyscallError("setsockopt", setsockopt(s, o.Level, o.Name, b)) -} - -func socketOf(c net.Conn) (uintptr, error) { - switch c.(type) { - case *net.TCPConn, *net.UDPConn, *net.IPConn: - v := reflect.ValueOf(c) - switch e := v.Elem(); e.Kind() { - case reflect.Struct: - fd := e.FieldByName("conn").FieldByName("fd") - switch e := fd.Elem(); e.Kind() { - case reflect.Struct: - sysfd := e.FieldByName("sysfd") - if runtime.GOOS == "windows" { - return uintptr(sysfd.Uint()), nil - } - return uintptr(sysfd.Int()), nil - } - } - } - return 0, errors.New("invalid type") -} diff --git a/vendor/golang.org/x/net/internal/socket/socket.go b/vendor/golang.org/x/net/internal/socket/socket.go deleted file mode 100644 index 5f9730e6..00000000 --- a/vendor/golang.org/x/net/internal/socket/socket.go +++ /dev/null @@ -1,285 +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 socket provides a portable interface for socket system -// calls. -package socket // import "golang.org/x/net/internal/socket" - -import ( - "errors" - "net" - "unsafe" -) - -// An Option represents a sticky socket option. -type Option struct { - Level int // level - Name int // name; must be equal or greater than 1 - Len int // length of value in bytes; must be equal or greater than 1 -} - -// Get reads a value for the option from the kernel. -// It returns the number of bytes written into b. -func (o *Option) Get(c *Conn, b []byte) (int, error) { - if o.Name < 1 || o.Len < 1 { - return 0, errors.New("invalid option") - } - if len(b) < o.Len { - return 0, errors.New("short buffer") - } - return o.get(c, b) -} - -// GetInt returns an integer value for the option. -// -// The Len field of Option must be either 1 or 4. -func (o *Option) GetInt(c *Conn) (int, error) { - if o.Len != 1 && o.Len != 4 { - return 0, errors.New("invalid option") - } - var b []byte - var bb [4]byte - if o.Len == 1 { - b = bb[:1] - } else { - b = bb[:4] - } - n, err := o.get(c, b) - if err != nil { - return 0, err - } - if n != o.Len { - return 0, errors.New("invalid option length") - } - if o.Len == 1 { - return int(b[0]), nil - } - return int(NativeEndian.Uint32(b[:4])), nil -} - -// Set writes the option and value to the kernel. -func (o *Option) Set(c *Conn, b []byte) error { - if o.Name < 1 || o.Len < 1 { - return errors.New("invalid option") - } - if len(b) < o.Len { - return errors.New("short buffer") - } - return o.set(c, b) -} - -// SetInt writes the option and value to the kernel. -// -// The Len field of Option must be either 1 or 4. -func (o *Option) SetInt(c *Conn, v int) error { - if o.Len != 1 && o.Len != 4 { - return errors.New("invalid option") - } - var b []byte - if o.Len == 1 { - b = []byte{byte(v)} - } else { - var bb [4]byte - NativeEndian.PutUint32(bb[:o.Len], uint32(v)) - b = bb[:4] - } - return o.set(c, b) -} - -func controlHeaderLen() int { - return roundup(sizeofCmsghdr) -} - -func controlMessageLen(dataLen int) int { - return roundup(sizeofCmsghdr) + dataLen -} - -// ControlMessageSpace returns the whole length of control message. -func ControlMessageSpace(dataLen int) int { - return roundup(sizeofCmsghdr) + roundup(dataLen) -} - -// A ControlMessage represents the head message in a stream of control -// messages. -// -// A control message comprises of a header, data and a few padding -// fields to conform to the interface to the kernel. -// -// See RFC 3542 for further information. -type ControlMessage []byte - -// Data returns the data field of the control message at the head on -// m. -func (m ControlMessage) Data(dataLen int) []byte { - l := controlHeaderLen() - if len(m) < l || len(m) < l+dataLen { - return nil - } - return m[l : l+dataLen] -} - -// Next returns the control message at the next on m. -// -// Next works only for standard control messages. -func (m ControlMessage) Next(dataLen int) ControlMessage { - l := ControlMessageSpace(dataLen) - if len(m) < l { - return nil - } - return m[l:] -} - -// MarshalHeader marshals the header fields of the control message at -// the head on m. -func (m ControlMessage) MarshalHeader(lvl, typ, dataLen int) error { - if len(m) < controlHeaderLen() { - return errors.New("short message") - } - h := (*cmsghdr)(unsafe.Pointer(&m[0])) - h.set(controlMessageLen(dataLen), lvl, typ) - return nil -} - -// ParseHeader parses and returns the header fields of the control -// message at the head on m. -func (m ControlMessage) ParseHeader() (lvl, typ, dataLen int, err error) { - l := controlHeaderLen() - if len(m) < l { - return 0, 0, 0, errors.New("short message") - } - h := (*cmsghdr)(unsafe.Pointer(&m[0])) - return h.lvl(), h.typ(), int(uint64(h.len()) - uint64(l)), nil -} - -// Marshal marshals the control message at the head on m, and returns -// the next control message. -func (m ControlMessage) Marshal(lvl, typ int, data []byte) (ControlMessage, error) { - l := len(data) - if len(m) < ControlMessageSpace(l) { - return nil, errors.New("short message") - } - h := (*cmsghdr)(unsafe.Pointer(&m[0])) - h.set(controlMessageLen(l), lvl, typ) - if l > 0 { - copy(m.Data(l), data) - } - return m.Next(l), nil -} - -// Parse parses m as a single or multiple control messages. -// -// Parse works for both standard and compatible messages. -func (m ControlMessage) Parse() ([]ControlMessage, error) { - var ms []ControlMessage - for len(m) >= controlHeaderLen() { - h := (*cmsghdr)(unsafe.Pointer(&m[0])) - l := h.len() - if l <= 0 { - return nil, errors.New("invalid header length") - } - if uint64(l) < uint64(controlHeaderLen()) { - return nil, errors.New("invalid message length") - } - if uint64(l) > uint64(len(m)) { - return nil, errors.New("short buffer") - } - // On message reception: - // - // |<- ControlMessageSpace --------------->| - // |<- controlMessageLen ---------->| | - // |<- controlHeaderLen ->| | | - // +---------------+------+---------+------+ - // | Header | PadH | Data | PadD | - // +---------------+------+---------+------+ - // - // On compatible message reception: - // - // | ... |<- controlMessageLen ----------->| - // | ... |<- controlHeaderLen ->| | - // +-----+---------------+------+----------+ - // | ... | Header | PadH | Data | - // +-----+---------------+------+----------+ - ms = append(ms, ControlMessage(m[:l])) - ll := l - controlHeaderLen() - if len(m) >= ControlMessageSpace(ll) { - m = m[ControlMessageSpace(ll):] - } else { - m = m[controlMessageLen(ll):] - } - } - return ms, nil -} - -// NewControlMessage returns a new stream of control messages. -func NewControlMessage(dataLen []int) ControlMessage { - var l int - for i := range dataLen { - l += ControlMessageSpace(dataLen[i]) - } - return make([]byte, l) -} - -// A Message represents an IO message. -type Message struct { - // When writing, the Buffers field must contain at least one - // byte to write. - // When reading, the Buffers field will always contain a byte - // to read. - Buffers [][]byte - - // OOB contains protocol-specific control or miscellaneous - // ancillary data known as out-of-band data. - OOB []byte - - // Addr specifies a destination address when writing. - // It can be nil when the underlying protocol of the raw - // connection uses connection-oriented communication. - // After a successful read, it may contain the source address - // on the received packet. - Addr net.Addr - - N int // # of bytes read or written from/to Buffers - NN int // # of bytes read or written from/to OOB - Flags int // protocol-specific information on the received message -} - -// RecvMsg wraps recvmsg system call. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -func (c *Conn) RecvMsg(m *Message, flags int) error { - return c.recvMsg(m, flags) -} - -// SendMsg wraps sendmsg system call. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -func (c *Conn) SendMsg(m *Message, flags int) error { - return c.sendMsg(m, flags) -} - -// RecvMsgs wraps recvmmsg system call. -// -// It returns the number of processed messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -// -// Only Linux supports this. -func (c *Conn) RecvMsgs(ms []Message, flags int) (int, error) { - return c.recvMsgs(ms, flags) -} - -// SendMsgs wraps sendmmsg system call. -// -// It returns the number of processed messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -// -// Only Linux supports this. -func (c *Conn) SendMsgs(ms []Message, flags int) (int, error) { - return c.sendMsgs(ms, flags) -} diff --git a/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go b/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go deleted file mode 100644 index c4edd4a8..00000000 --- a/vendor/golang.org/x/net/internal/socket/socket_go1_9_test.go +++ /dev/null @@ -1,259 +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. - -// +build go1.9 -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package socket_test - -import ( - "bytes" - "fmt" - "net" - "runtime" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/internal/socket" -) - -type mockControl struct { - Level int - Type int - Data []byte -} - -func TestControlMessage(t *testing.T) { - for _, tt := range []struct { - cs []mockControl - }{ - { - []mockControl{ - {Level: 1, Type: 1}, - }, - }, - { - []mockControl{ - {Level: 2, Type: 2, Data: []byte{0xfe}}, - }, - }, - { - []mockControl{ - {Level: 3, Type: 3, Data: []byte{0xfe, 0xff, 0xff, 0xfe}}, - }, - }, - { - []mockControl{ - {Level: 4, Type: 4, Data: []byte{0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xfe}}, - }, - }, - { - []mockControl{ - {Level: 4, Type: 4, Data: []byte{0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xfe}}, - {Level: 2, Type: 2, Data: []byte{0xfe}}, - }, - }, - } { - var w []byte - var tailPadLen int - mm := socket.NewControlMessage([]int{0}) - for i, c := range tt.cs { - m := socket.NewControlMessage([]int{len(c.Data)}) - l := len(m) - len(mm) - if i == len(tt.cs)-1 && l > len(c.Data) { - tailPadLen = l - len(c.Data) - } - w = append(w, m...) - } - - var err error - ww := make([]byte, len(w)) - copy(ww, w) - m := socket.ControlMessage(ww) - for _, c := range tt.cs { - if err = m.MarshalHeader(c.Level, c.Type, len(c.Data)); err != nil { - t.Fatalf("(%v).MarshalHeader() = %v", tt.cs, err) - } - copy(m.Data(len(c.Data)), c.Data) - m = m.Next(len(c.Data)) - } - m = socket.ControlMessage(w) - for _, c := range tt.cs { - m, err = m.Marshal(c.Level, c.Type, c.Data) - if err != nil { - t.Fatalf("(%v).Marshal() = %v", tt.cs, err) - } - } - if !bytes.Equal(ww, w) { - t.Fatalf("got %#v; want %#v", ww, w) - } - - ws := [][]byte{w} - if tailPadLen > 0 { - // Test a message with no tail padding. - nopad := w[:len(w)-tailPadLen] - ws = append(ws, [][]byte{nopad}...) - } - for _, w := range ws { - ms, err := socket.ControlMessage(w).Parse() - if err != nil { - t.Fatalf("(%v).Parse() = %v", tt.cs, err) - } - for i, m := range ms { - lvl, typ, dataLen, err := m.ParseHeader() - if err != nil { - t.Fatalf("(%v).ParseHeader() = %v", tt.cs, err) - } - if lvl != tt.cs[i].Level || typ != tt.cs[i].Type || dataLen != len(tt.cs[i].Data) { - t.Fatalf("%v: got %d, %d, %d; want %d, %d, %d", tt.cs[i], lvl, typ, dataLen, tt.cs[i].Level, tt.cs[i].Type, len(tt.cs[i].Data)) - } - } - } - } -} - -func TestUDP(t *testing.T) { - c, err := nettest.NewLocalPacketListener("udp") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - cc, err := socket.NewConn(c.(net.Conn)) - if err != nil { - t.Fatal(err) - } - - t.Run("Message", func(t *testing.T) { - data := []byte("HELLO-R-U-THERE") - wm := socket.Message{ - Buffers: bytes.SplitAfter(data, []byte("-")), - Addr: c.LocalAddr(), - } - if err := cc.SendMsg(&wm, 0); err != nil { - t.Fatal(err) - } - b := make([]byte, 32) - rm := socket.Message{ - Buffers: [][]byte{b[:1], b[1:3], b[3:7], b[7:11], b[11:]}, - } - if err := cc.RecvMsg(&rm, 0); err != nil { - t.Fatal(err) - } - if !bytes.Equal(b[:rm.N], data) { - t.Fatalf("got %#v; want %#v", b[:rm.N], data) - } - }) - switch runtime.GOOS { - case "android", "linux": - t.Run("Messages", func(t *testing.T) { - data := []byte("HELLO-R-U-THERE") - wmbs := bytes.SplitAfter(data, []byte("-")) - wms := []socket.Message{ - {Buffers: wmbs[:1], Addr: c.LocalAddr()}, - {Buffers: wmbs[1:], Addr: c.LocalAddr()}, - } - n, err := cc.SendMsgs(wms, 0) - if err != nil { - t.Fatal(err) - } - if n != len(wms) { - t.Fatalf("got %d; want %d", n, len(wms)) - } - b := make([]byte, 32) - rmbs := [][][]byte{{b[:len(wmbs[0])]}, {b[len(wmbs[0]):]}} - rms := []socket.Message{ - {Buffers: rmbs[0]}, - {Buffers: rmbs[1]}, - } - n, err = cc.RecvMsgs(rms, 0) - if err != nil { - t.Fatal(err) - } - if n != len(rms) { - t.Fatalf("got %d; want %d", n, len(rms)) - } - nn := 0 - for i := 0; i < n; i++ { - nn += rms[i].N - } - if !bytes.Equal(b[:nn], data) { - t.Fatalf("got %#v; want %#v", b[:nn], data) - } - }) - } - - // The behavior of transmission for zero byte paylaod depends - // on each platform implementation. Some may transmit only - // protocol header and options, other may transmit nothing. - // We test only that SendMsg and SendMsgs will not crash with - // empty buffers. - wm := socket.Message{ - Buffers: [][]byte{{}}, - Addr: c.LocalAddr(), - } - cc.SendMsg(&wm, 0) - wms := []socket.Message{ - {Buffers: [][]byte{{}}, Addr: c.LocalAddr()}, - } - cc.SendMsgs(wms, 0) -} - -func BenchmarkUDP(b *testing.B) { - c, err := nettest.NewLocalPacketListener("udp") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - cc, err := socket.NewConn(c.(net.Conn)) - if err != nil { - b.Fatal(err) - } - data := []byte("HELLO-R-U-THERE") - wm := socket.Message{ - Buffers: [][]byte{data}, - Addr: c.LocalAddr(), - } - rm := socket.Message{ - Buffers: [][]byte{make([]byte, 128)}, - OOB: make([]byte, 128), - } - - for M := 1; M <= 1<<9; M = M << 1 { - b.Run(fmt.Sprintf("Iter-%d", M), func(b *testing.B) { - for i := 0; i < b.N; i++ { - for j := 0; j < M; j++ { - if err := cc.SendMsg(&wm, 0); err != nil { - b.Fatal(err) - } - if err := cc.RecvMsg(&rm, 0); err != nil { - b.Fatal(err) - } - } - } - }) - switch runtime.GOOS { - case "android", "linux": - wms := make([]socket.Message, M) - for i := range wms { - wms[i].Buffers = [][]byte{data} - wms[i].Addr = c.LocalAddr() - } - rms := make([]socket.Message, M) - for i := range rms { - rms[i].Buffers = [][]byte{make([]byte, 128)} - rms[i].OOB = make([]byte, 128) - } - b.Run(fmt.Sprintf("Batch-%d", M), func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := cc.SendMsgs(wms, 0); err != nil { - b.Fatal(err) - } - if _, err := cc.RecvMsgs(rms, 0); err != nil { - b.Fatal(err) - } - } - }) - } - } -} diff --git a/vendor/golang.org/x/net/internal/socket/socket_test.go b/vendor/golang.org/x/net/internal/socket/socket_test.go deleted file mode 100644 index bf3751b5..00000000 --- a/vendor/golang.org/x/net/internal/socket/socket_test.go +++ /dev/null @@ -1,46 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package socket_test - -import ( - "net" - "runtime" - "syscall" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/internal/socket" -) - -func TestSocket(t *testing.T) { - t.Run("Option", func(t *testing.T) { - testSocketOption(t, &socket.Option{Level: syscall.SOL_SOCKET, Name: syscall.SO_RCVBUF, Len: 4}) - }) -} - -func testSocketOption(t *testing.T, so *socket.Option) { - c, err := nettest.NewLocalPacketListener("udp") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - cc, err := socket.NewConn(c.(net.Conn)) - if err != nil { - t.Fatal(err) - } - const N = 2048 - if err := so.SetInt(cc, N); err != nil { - t.Fatal(err) - } - n, err := so.GetInt(cc) - if err != nil { - t.Fatal(err) - } - if n < N { - t.Fatalf("got %d; want greater than or equal to %d", n, N) - } -} diff --git a/vendor/golang.org/x/net/internal/socket/sys.go b/vendor/golang.org/x/net/internal/socket/sys.go deleted file mode 100644 index 4f0eead1..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys.go +++ /dev/null @@ -1,33 +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 socket - -import ( - "encoding/binary" - "unsafe" -) - -var ( - // NativeEndian is the machine native endian implementation of - // ByteOrder. - NativeEndian binary.ByteOrder - - kernelAlign int -) - -func init() { - i := uint32(1) - b := (*[4]byte)(unsafe.Pointer(&i)) - if b[0] == 1 { - NativeEndian = binary.LittleEndian - } else { - NativeEndian = binary.BigEndian - } - kernelAlign = probeProtocolStack() -} - -func roundup(l int) int { - return (l + kernelAlign - 1) & ^(kernelAlign - 1) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsd.go b/vendor/golang.org/x/net/internal/socket/sys_bsd.go deleted file mode 100644 index f13e14ff..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_bsd.go +++ /dev/null @@ -1,17 +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. - -// +build darwin dragonfly freebsd openbsd - -package socket - -import "errors" - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go deleted file mode 100644 index f723fa36..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go +++ /dev/null @@ -1,14 +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. - -// +build freebsd netbsd openbsd - -package socket - -import "unsafe" - -func probeProtocolStack() int { - var p uintptr - return int(unsafe.Sizeof(p)) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_darwin.go b/vendor/golang.org/x/net/internal/socket/sys_darwin.go deleted file mode 100644 index b17d223b..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_darwin.go +++ /dev/null @@ -1,7 +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 socket - -func probeProtocolStack() int { return 4 } diff --git a/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go deleted file mode 100644 index b17d223b..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go +++ /dev/null @@ -1,7 +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 socket - -func probeProtocolStack() int { return 4 } diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux.go b/vendor/golang.org/x/net/internal/socket/sys_linux.go deleted file mode 100644 index 1559521e..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux.go +++ /dev/null @@ -1,27 +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. - -// +build linux,!s390x,!386 - -package socket - -import ( - "syscall" - "unsafe" -) - -func probeProtocolStack() int { - var p uintptr - return int(unsafe.Sizeof(p)) -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.go b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go deleted file mode 100644 index 235b2cc0..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_386.go +++ /dev/null @@ -1,55 +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 socket - -import ( - "syscall" - "unsafe" -) - -func probeProtocolStack() int { return 4 } - -const ( - sysSETSOCKOPT = 0xe - sysGETSOCKOPT = 0xf - sysSENDMSG = 0x10 - sysRECVMSG = 0x11 - sysRECVMMSG = 0x13 - sysSENDMMSG = 0x14 -) - -func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) -func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.s b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s deleted file mode 100644 index 93e7d75e..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_386.s +++ /dev/null @@ -1,11 +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. - -#include "textflag.h" - -TEXT ·socketcall(SB),NOSPLIT,$0-36 - JMP syscall·socketcall(SB) - -TEXT ·rawsocketcall(SB),NOSPLIT,$0-36 - JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go deleted file mode 100644 index 9decee2e..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0x12b - sysSENDMMSG = 0x133 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go deleted file mode 100644 index d753b436..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0x16d - sysSENDMMSG = 0x176 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go deleted file mode 100644 index b6708943..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0xf3 - sysSENDMMSG = 0x10d -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go deleted file mode 100644 index 9c0d7401..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0x10ef - sysSENDMMSG = 0x10f7 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go deleted file mode 100644 index 071a4aba..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0x14ae - sysSENDMMSG = 0x14b6 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go deleted file mode 100644 index 071a4aba..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0x14ae - sysSENDMMSG = 0x14b6 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go deleted file mode 100644 index 9c0d7401..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0x10ef - sysSENDMMSG = 0x10f7 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go deleted file mode 100644 index 21c1e3f0..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0x157 - sysSENDMMSG = 0x15d -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go deleted file mode 100644 index 21c1e3f0..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go +++ /dev/null @@ -1,10 +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 socket - -const ( - sysRECVMMSG = 0x157 - sysSENDMMSG = 0x15d -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go deleted file mode 100644 index 327979ef..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go +++ /dev/null @@ -1,55 +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 socket - -import ( - "syscall" - "unsafe" -) - -func probeProtocolStack() int { return 8 } - -const ( - sysSETSOCKOPT = 0xe - sysGETSOCKOPT = 0xf - sysSENDMSG = 0x10 - sysRECVMSG = 0x11 - sysRECVMMSG = 0x13 - sysSENDMMSG = 0x14 -) - -func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) -func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s deleted file mode 100644 index 06d75628..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s +++ /dev/null @@ -1,11 +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. - -#include "textflag.h" - -TEXT ·socketcall(SB),NOSPLIT,$0-72 - JMP syscall·socketcall(SB) - -TEXT ·rawsocketcall(SB),NOSPLIT,$0-72 - JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_netbsd.go b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go deleted file mode 100644 index 431851c1..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_netbsd.go +++ /dev/null @@ -1,25 +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 socket - -import ( - "syscall" - "unsafe" -) - -const ( - sysRECVMMSG = 0x1db - sysSENDMMSG = 0x1dc -) - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go deleted file mode 100644 index dc130c27..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_posix.go +++ /dev/null @@ -1,168 +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. - -// +build go1.9 -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package socket - -import ( - "encoding/binary" - "errors" - "net" - "runtime" - "strconv" - "sync" - "time" -) - -func marshalInetAddr(a net.Addr) []byte { - switch a := a.(type) { - case *net.TCPAddr: - return marshalSockaddr(a.IP, a.Port, a.Zone) - case *net.UDPAddr: - return marshalSockaddr(a.IP, a.Port, a.Zone) - case *net.IPAddr: - return marshalSockaddr(a.IP, 0, a.Zone) - default: - return nil - } -} - -func marshalSockaddr(ip net.IP, port int, zone string) []byte { - if ip4 := ip.To4(); ip4 != nil { - b := make([]byte, sizeofSockaddrInet) - switch runtime.GOOS { - case "android", "linux", "solaris", "windows": - NativeEndian.PutUint16(b[:2], uint16(sysAF_INET)) - default: - b[0] = sizeofSockaddrInet - b[1] = sysAF_INET - } - binary.BigEndian.PutUint16(b[2:4], uint16(port)) - copy(b[4:8], ip4) - return b - } - if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil { - b := make([]byte, sizeofSockaddrInet6) - switch runtime.GOOS { - case "android", "linux", "solaris", "windows": - NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6)) - default: - b[0] = sizeofSockaddrInet6 - b[1] = sysAF_INET6 - } - binary.BigEndian.PutUint16(b[2:4], uint16(port)) - copy(b[8:24], ip6) - if zone != "" { - NativeEndian.PutUint32(b[24:28], uint32(zoneCache.index(zone))) - } - return b - } - return nil -} - -func parseInetAddr(b []byte, network string) (net.Addr, error) { - if len(b) < 2 { - return nil, errors.New("invalid address") - } - var af int - switch runtime.GOOS { - case "android", "linux", "solaris", "windows": - af = int(NativeEndian.Uint16(b[:2])) - default: - af = int(b[1]) - } - var ip net.IP - var zone string - if af == sysAF_INET { - if len(b) < sizeofSockaddrInet { - return nil, errors.New("short address") - } - ip = make(net.IP, net.IPv4len) - copy(ip, b[4:8]) - } - if af == sysAF_INET6 { - if len(b) < sizeofSockaddrInet6 { - return nil, errors.New("short address") - } - ip = make(net.IP, net.IPv6len) - copy(ip, b[8:24]) - if id := int(NativeEndian.Uint32(b[24:28])); id > 0 { - zone = zoneCache.name(id) - } - } - switch network { - case "tcp", "tcp4", "tcp6": - return &net.TCPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil - case "udp", "udp4", "udp6": - return &net.UDPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil - default: - return &net.IPAddr{IP: ip, Zone: zone}, nil - } -} - -// An ipv6ZoneCache represents a cache holding partial network -// interface information. It is used for reducing the cost of IPv6 -// addressing scope zone resolution. -// -// Multiple names sharing the index are managed by first-come -// first-served basis for consistency. -type ipv6ZoneCache struct { - sync.RWMutex // guard the following - lastFetched time.Time // last time routing information was fetched - toIndex map[string]int // interface name to its index - toName map[int]string // interface index to its name -} - -var zoneCache = ipv6ZoneCache{ - toIndex: make(map[string]int), - toName: make(map[int]string), -} - -func (zc *ipv6ZoneCache) update(ift []net.Interface) { - zc.Lock() - defer zc.Unlock() - now := time.Now() - if zc.lastFetched.After(now.Add(-60 * time.Second)) { - return - } - zc.lastFetched = now - if len(ift) == 0 { - var err error - if ift, err = net.Interfaces(); err != nil { - return - } - } - zc.toIndex = make(map[string]int, len(ift)) - zc.toName = make(map[int]string, len(ift)) - for _, ifi := range ift { - zc.toIndex[ifi.Name] = ifi.Index - if _, ok := zc.toName[ifi.Index]; !ok { - zc.toName[ifi.Index] = ifi.Name - } - } -} - -func (zc *ipv6ZoneCache) name(zone int) string { - zoneCache.update(nil) - zoneCache.RLock() - defer zoneCache.RUnlock() - name, ok := zoneCache.toName[zone] - if !ok { - name = strconv.Itoa(zone) - } - return name -} - -func (zc *ipv6ZoneCache) index(zone string) int { - zoneCache.update(nil) - zoneCache.RLock() - defer zoneCache.RUnlock() - index, ok := zoneCache.toIndex[zone] - if !ok { - index, _ = strconv.Atoi(zone) - } - return index -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris.go b/vendor/golang.org/x/net/internal/socket/sys_solaris.go deleted file mode 100644 index cced74e6..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_solaris.go +++ /dev/null @@ -1,71 +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 socket - -import ( - "errors" - "runtime" - "syscall" - "unsafe" -) - -func probeProtocolStack() int { - switch runtime.GOARCH { - case "amd64": - return 4 - default: - var p uintptr - return int(unsafe.Sizeof(p)) - } -} - -//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" -//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" -//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" -//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" - -//go:linkname procGetsockopt libc___xnet_getsockopt -//go:linkname procSetsockopt libc_setsockopt -//go:linkname procRecvmsg libc___xnet_recvmsg -//go:linkname procSendmsg libc___xnet_sendmsg - -var ( - procGetsockopt uintptr - procSetsockopt uintptr - procRecvmsg uintptr - procSendmsg uintptr -) - -func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) -func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procRecvmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSendmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s deleted file mode 100644 index a18ac5ed..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s +++ /dev/null @@ -1,11 +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. - -#include "textflag.h" - -TEXT ·sysvicall6(SB),NOSPLIT,$0-88 - JMP syscall·sysvicall6(SB) - -TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 - JMP syscall·rawSysvicall6(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_stub.go b/vendor/golang.org/x/net/internal/socket/sys_stub.go deleted file mode 100644 index d9f06d00..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_stub.go +++ /dev/null @@ -1,64 +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. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package socket - -import ( - "errors" - "net" - "runtime" - "unsafe" -) - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -func probeProtocolStack() int { - switch runtime.GOARCH { - case "amd64p32", "mips64p32": - return 4 - default: - var p uintptr - return int(unsafe.Sizeof(p)) - } -} - -func marshalInetAddr(ip net.IP, port int, zone string) []byte { - return nil -} - -func parseInetAddr(b []byte, network string) (net.Addr, error) { - return nil, errors.New("not implemented") -} - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - return 0, errors.New("not implemented") -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - return errors.New("not implemented") -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_unix.go b/vendor/golang.org/x/net/internal/socket/sys_unix.go deleted file mode 100644 index 18eba308..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_unix.go +++ /dev/null @@ -1,33 +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. - -// +build darwin dragonfly freebsd linux,!s390x,!386 netbsd openbsd - -package socket - -import ( - "syscall" - "unsafe" -) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_windows.go b/vendor/golang.org/x/net/internal/socket/sys_windows.go deleted file mode 100644 index 54a470eb..00000000 --- a/vendor/golang.org/x/net/internal/socket/sys_windows.go +++ /dev/null @@ -1,70 +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 socket - -import ( - "errors" - "syscall" - "unsafe" -) - -func probeProtocolStack() int { - var p uintptr - return int(unsafe.Sizeof(p)) -} - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x17 - - sysSOCK_RAW = 0x3 -) - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l))) - return int(l), err -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b))) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errors.New("not implemented") -} diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go deleted file mode 100644 index 26f8feff..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go +++ /dev/null @@ -1,59 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_darwin.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1e - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go deleted file mode 100644 index e2987f7d..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go +++ /dev/null @@ -1,61 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_darwin.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1e - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go deleted file mode 100644 index 26f8feff..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go +++ /dev/null @@ -1,59 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_darwin.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1e - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go deleted file mode 100644 index e2987f7d..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go +++ /dev/null @@ -1,61 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_darwin.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1e - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go deleted file mode 100644 index c582abd5..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go +++ /dev/null @@ -1,61 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_dragonfly.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1c - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go deleted file mode 100644 index 04a24886..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go +++ /dev/null @@ -1,59 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1c - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go deleted file mode 100644 index 35c7cb9c..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go +++ /dev/null @@ -1,61 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1c - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go deleted file mode 100644 index 04a24886..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go +++ /dev/null @@ -1,59 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1c - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go deleted file mode 100644 index 43020693..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go +++ /dev/null @@ -1,63 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofMmsghdr = 0x20 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go deleted file mode 100644 index 1502f6c5..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go +++ /dev/null @@ -1,66 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - sizeofMmsghdr = 0x40 - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go deleted file mode 100644 index 43020693..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go +++ /dev/null @@ -1,63 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofMmsghdr = 0x20 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go deleted file mode 100644 index 1502f6c5..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go +++ /dev/null @@ -1,66 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - sizeofMmsghdr = 0x40 - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go deleted file mode 100644 index 43020693..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go +++ /dev/null @@ -1,63 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofMmsghdr = 0x20 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go deleted file mode 100644 index 1502f6c5..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go +++ /dev/null @@ -1,66 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - sizeofMmsghdr = 0x40 - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go deleted file mode 100644 index 1502f6c5..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go +++ /dev/null @@ -1,66 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - sizeofMmsghdr = 0x40 - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go deleted file mode 100644 index 43020693..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go +++ /dev/null @@ -1,63 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofMmsghdr = 0x20 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go deleted file mode 100644 index 1502f6c5..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go +++ /dev/null @@ -1,66 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - sizeofMmsghdr = 0x40 - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go deleted file mode 100644 index 1502f6c5..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go +++ /dev/null @@ -1,66 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - sizeofMmsghdr = 0x40 - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go deleted file mode 100644 index 1502f6c5..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go +++ /dev/null @@ -1,66 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - sizeofMmsghdr = 0x40 - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go deleted file mode 100644 index db60491f..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go +++ /dev/null @@ -1,65 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_netbsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x18 - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofMmsghdr = 0x20 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go deleted file mode 100644 index 2a1a7998..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go +++ /dev/null @@ -1,68 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_netbsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x18 - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofMmsghdr = 0x40 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go deleted file mode 100644 index 206ea2d1..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go +++ /dev/null @@ -1,59 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_netbsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x18 - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go deleted file mode 100644 index 1c836361..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go +++ /dev/null @@ -1,59 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_openbsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x18 - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go deleted file mode 100644 index a6c0bf46..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go +++ /dev/null @@ -1,61 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_openbsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x18 - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go deleted file mode 100644 index 1c836361..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go +++ /dev/null @@ -1,59 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_openbsd.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x18 - - sysSOCK_RAW = 0x3 -) - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go deleted file mode 100644 index 327c6329..00000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go +++ /dev/null @@ -1,60 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_solaris.go - -package socket - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1a - - sysSOCK_RAW = 0x4 -) - -type iovec struct { - Base *int8 - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Accrights *int8 - Accrightslen int32 - Pad_cgo_2 [4]byte -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 - X__sin6_src_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x20 -) diff --git a/vendor/golang.org/x/net/internal/timeseries/timeseries_test.go b/vendor/golang.org/x/net/internal/timeseries/timeseries_test.go deleted file mode 100644 index 66325a91..00000000 --- a/vendor/golang.org/x/net/internal/timeseries/timeseries_test.go +++ /dev/null @@ -1,170 +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 timeseries - -import ( - "math" - "testing" - "time" -) - -func isNear(x *Float, y float64, tolerance float64) bool { - return math.Abs(x.Value()-y) < tolerance -} - -func isApproximate(x *Float, y float64) bool { - return isNear(x, y, 1e-2) -} - -func checkApproximate(t *testing.T, o Observable, y float64) { - x := o.(*Float) - if !isApproximate(x, y) { - t.Errorf("Wanted %g, got %g", y, x.Value()) - } -} - -func checkNear(t *testing.T, o Observable, y, tolerance float64) { - x := o.(*Float) - if !isNear(x, y, tolerance) { - t.Errorf("Wanted %g +- %g, got %g", y, tolerance, x.Value()) - } -} - -var baseTime = time.Date(2013, 1, 1, 0, 0, 0, 0, time.UTC) - -func tu(s int64) time.Time { - return baseTime.Add(time.Duration(s) * time.Second) -} - -func tu2(s int64, ns int64) time.Time { - return baseTime.Add(time.Duration(s)*time.Second + time.Duration(ns)*time.Nanosecond) -} - -func TestBasicTimeSeries(t *testing.T) { - ts := NewTimeSeries(NewFloat) - fo := new(Float) - *fo = Float(10) - ts.AddWithTime(fo, tu(1)) - ts.AddWithTime(fo, tu(1)) - ts.AddWithTime(fo, tu(1)) - ts.AddWithTime(fo, tu(1)) - checkApproximate(t, ts.Range(tu(0), tu(1)), 40) - checkApproximate(t, ts.Total(), 40) - ts.AddWithTime(fo, tu(3)) - ts.AddWithTime(fo, tu(3)) - ts.AddWithTime(fo, tu(3)) - checkApproximate(t, ts.Range(tu(0), tu(2)), 40) - checkApproximate(t, ts.Range(tu(2), tu(4)), 30) - checkApproximate(t, ts.Total(), 70) - ts.AddWithTime(fo, tu(1)) - ts.AddWithTime(fo, tu(1)) - checkApproximate(t, ts.Range(tu(0), tu(2)), 60) - checkApproximate(t, ts.Range(tu(2), tu(4)), 30) - checkApproximate(t, ts.Total(), 90) - *fo = Float(100) - ts.AddWithTime(fo, tu(100)) - checkApproximate(t, ts.Range(tu(99), tu(100)), 100) - checkApproximate(t, ts.Range(tu(0), tu(4)), 36) - checkApproximate(t, ts.Total(), 190) - *fo = Float(10) - ts.AddWithTime(fo, tu(1)) - ts.AddWithTime(fo, tu(1)) - checkApproximate(t, ts.Range(tu(0), tu(4)), 44) - checkApproximate(t, ts.Range(tu(37), tu2(100, 100e6)), 100) - checkApproximate(t, ts.Range(tu(50), tu2(100, 100e6)), 100) - checkApproximate(t, ts.Range(tu(99), tu2(100, 100e6)), 100) - checkApproximate(t, ts.Total(), 210) - - for i, l := range ts.ComputeRange(tu(36), tu(100), 64) { - if i == 63 { - checkApproximate(t, l, 100) - } else { - checkApproximate(t, l, 0) - } - } - - checkApproximate(t, ts.Range(tu(0), tu(100)), 210) - checkApproximate(t, ts.Range(tu(10), tu(100)), 100) - - for i, l := range ts.ComputeRange(tu(0), tu(100), 100) { - if i < 10 { - checkApproximate(t, l, 11) - } else if i >= 90 { - checkApproximate(t, l, 10) - } else { - checkApproximate(t, l, 0) - } - } -} - -func TestFloat(t *testing.T) { - f := Float(1) - if g, w := f.String(), "1"; g != w { - t.Errorf("Float(1).String = %q; want %q", g, w) - } - f2 := Float(2) - var o Observable = &f2 - f.Add(o) - if g, w := f.Value(), 3.0; g != w { - t.Errorf("Float post-add = %v; want %v", g, w) - } - f.Multiply(2) - if g, w := f.Value(), 6.0; g != w { - t.Errorf("Float post-multiply = %v; want %v", g, w) - } - f.Clear() - if g, w := f.Value(), 0.0; g != w { - t.Errorf("Float post-clear = %v; want %v", g, w) - } - f.CopyFrom(&f2) - if g, w := f.Value(), 2.0; g != w { - t.Errorf("Float post-CopyFrom = %v; want %v", g, w) - } -} - -type mockClock struct { - time time.Time -} - -func (m *mockClock) Time() time.Time { return m.time } -func (m *mockClock) Set(t time.Time) { m.time = t } - -const buckets = 6 - -var testResolutions = []time.Duration{ - 10 * time.Second, // level holds one minute of observations - 100 * time.Second, // level holds ten minutes of observations - 10 * time.Minute, // level holds one hour of observations -} - -// TestTimeSeries uses a small number of buckets to force a higher -// error rate on approximations from the timeseries. -type TestTimeSeries struct { - timeSeries -} - -func TestExpectedErrorRate(t *testing.T) { - ts := new(TestTimeSeries) - fake := new(mockClock) - fake.Set(time.Now()) - ts.timeSeries.init(testResolutions, NewFloat, buckets, fake) - for i := 1; i <= 61*61; i++ { - fake.Set(fake.Time().Add(1 * time.Second)) - ob := Float(1) - ts.AddWithTime(&ob, fake.Time()) - - // The results should be accurate within one missing bucket (1/6) of the observations recorded. - checkNear(t, ts.Latest(0, buckets), min(float64(i), 60), 10) - checkNear(t, ts.Latest(1, buckets), min(float64(i), 600), 100) - checkNear(t, ts.Latest(2, buckets), min(float64(i), 3600), 600) - } -} - -func min(a, b float64) float64 { - if a < b { - return a - } - return b -} diff --git a/vendor/golang.org/x/net/ipv4/batch.go b/vendor/golang.org/x/net/ipv4/batch.go deleted file mode 100644 index b4454992..00000000 --- a/vendor/golang.org/x/net/ipv4/batch.go +++ /dev/null @@ -1,191 +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. - -// +build go1.9 - -package ipv4 - -import ( - "net" - "runtime" - "syscall" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of -// PacketConn are not implemented. - -// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of -// RawConn are not implemented. - -// A Message represents an IO message. -// -// type Message struct { -// Buffers [][]byte -// OOB []byte -// Addr net.Addr -// N int -// NN int -// Flags int -// } -// -// The Buffers fields represents a list of contiguous buffers, which -// can be used for vectored IO, for example, putting a header and a -// payload in each slice. -// When writing, the Buffers field must contain at least one byte to -// write. -// When reading, the Buffers field will always contain a byte to read. -// -// The OOB field contains protocol-specific control or miscellaneous -// ancillary data known as out-of-band data. -// It can be nil when not required. -// -// The Addr field specifies a destination address when writing. -// It can be nil when the underlying protocol of the endpoint uses -// connection-oriented communication. -// After a successful read, it may contain the source address on the -// received packet. -// -// The N field indicates the number of bytes read or written from/to -// Buffers. -// -// The NN field indicates the number of bytes read or written from/to -// OOB. -// -// The Flags field contains protocol-specific information on the -// received message. -type Message = socket.Message - -// ReadBatch reads a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -// -// On a successful read it returns the number of messages received, up -// to len(ms). -// -// On Linux, a batch read will be optimized. -// On other platforms, this method will read only a single message. -// -// Unlike the ReadFrom method, it doesn't strip the IPv4 header -// followed by option headers from the received IPv4 datagram when the -// underlying transport is net.IPConn. Each Buffers field of Message -// must be large enough to accommodate an IPv4 header and option -// headers. -func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - switch runtime.GOOS { - case "linux": - n, err := c.RecvMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.RecvMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - } -} - -// WriteBatch writes a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -// -// It returns the number of messages written on a successful write. -// -// On Linux, a batch write will be optimized. -// On other platforms, this method will write only a single message. -func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - switch runtime.GOOS { - case "linux": - n, err := c.SendMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.SendMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - } -} - -// ReadBatch reads a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -// -// On a successful read it returns the number of messages received, up -// to len(ms). -// -// On Linux, a batch read will be optimized. -// On other platforms, this method will read only a single message. -func (c *packetHandler) ReadBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - switch runtime.GOOS { - case "linux": - n, err := c.RecvMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.RecvMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - return n, err - } -} - -// WriteBatch writes a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -// -// It returns the number of messages written on a successful write. -// -// On Linux, a batch write will be optimized. -// On other platforms, this method will write only a single message. -func (c *packetHandler) WriteBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - switch runtime.GOOS { - case "linux": - n, err := c.SendMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.SendMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - return n, err - } -} diff --git a/vendor/golang.org/x/net/ipv4/bpf_test.go b/vendor/golang.org/x/net/ipv4/bpf_test.go deleted file mode 100644 index b44da905..00000000 --- a/vendor/golang.org/x/net/ipv4/bpf_test.go +++ /dev/null @@ -1,93 +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 ipv4_test - -import ( - "net" - "runtime" - "testing" - "time" - - "golang.org/x/net/bpf" - "golang.org/x/net/ipv4" -) - -func TestBPF(t *testing.T) { - if runtime.GOOS != "linux" { - t.Skipf("not supported on %s", runtime.GOOS) - } - - l, err := net.ListenPacket("udp4", "127.0.0.1:0") - if err != nil { - t.Fatal(err) - } - defer l.Close() - - p := ipv4.NewPacketConn(l) - - // This filter accepts UDP packets whose first payload byte is - // even. - prog, err := bpf.Assemble([]bpf.Instruction{ - // Load the first byte of the payload (skipping UDP header). - bpf.LoadAbsolute{Off: 8, Size: 1}, - // Select LSB of the byte. - bpf.ALUOpConstant{Op: bpf.ALUOpAnd, Val: 1}, - // Byte is even? - bpf.JumpIf{Cond: bpf.JumpEqual, Val: 0, SkipFalse: 1}, - // Accept. - bpf.RetConstant{Val: 4096}, - // Ignore. - bpf.RetConstant{Val: 0}, - }) - if err != nil { - t.Fatalf("compiling BPF: %s", err) - } - - if err = p.SetBPF(prog); err != nil { - t.Fatalf("attaching filter to Conn: %s", err) - } - - s, err := net.Dial("udp4", l.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - defer s.Close() - go func() { - for i := byte(0); i < 10; i++ { - s.Write([]byte{i}) - } - }() - - l.SetDeadline(time.Now().Add(2 * time.Second)) - seen := make([]bool, 5) - for { - var b [512]byte - n, _, err := l.ReadFrom(b[:]) - if err != nil { - t.Fatalf("reading from listener: %s", err) - } - if n != 1 { - t.Fatalf("unexpected packet length, want 1, got %d", n) - } - if b[0] >= 10 { - t.Fatalf("unexpected byte, want 0-9, got %d", b[0]) - } - if b[0]%2 != 0 { - t.Fatalf("got odd byte %d, wanted only even bytes", b[0]) - } - seen[b[0]/2] = true - - seenAll := true - for _, v := range seen { - if !v { - seenAll = false - break - } - } - if seenAll { - break - } - } -} diff --git a/vendor/golang.org/x/net/ipv4/control.go b/vendor/golang.org/x/net/ipv4/control.go deleted file mode 100644 index a2b02ca9..00000000 --- a/vendor/golang.org/x/net/ipv4/control.go +++ /dev/null @@ -1,144 +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 ipv4 - -import ( - "fmt" - "net" - "sync" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -type rawOpt struct { - sync.RWMutex - cflags ControlFlags -} - -func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } -func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } -func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } - -type ControlFlags uint - -const ( - FlagTTL ControlFlags = 1 << iota // pass the TTL on the received packet - FlagSrc // pass the source address on the received packet - FlagDst // pass the destination address on the received packet - FlagInterface // pass the interface index on the received packet -) - -// A ControlMessage represents per packet basis IP-level socket options. -type ControlMessage struct { - // Receiving socket options: SetControlMessage allows to - // receive the options from the protocol stack using ReadFrom - // method of PacketConn or RawConn. - // - // Specifying socket options: ControlMessage for WriteTo - // method of PacketConn or RawConn allows to send the options - // to the protocol stack. - // - TTL int // time-to-live, receiving only - Src net.IP // source address, specifying only - Dst net.IP // destination address, receiving only - IfIndex int // interface index, must be 1 <= value when specifying -} - -func (cm *ControlMessage) String() string { - if cm == nil { - return "<nil>" - } - return fmt.Sprintf("ttl=%d src=%v dst=%v ifindex=%d", cm.TTL, cm.Src, cm.Dst, cm.IfIndex) -} - -// Marshal returns the binary encoding of cm. -func (cm *ControlMessage) Marshal() []byte { - if cm == nil { - return nil - } - var m socket.ControlMessage - if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) { - m = socket.NewControlMessage([]int{ctlOpts[ctlPacketInfo].length}) - } - if len(m) > 0 { - ctlOpts[ctlPacketInfo].marshal(m, cm) - } - return m -} - -// Parse parses b as a control message and stores the result in cm. -func (cm *ControlMessage) Parse(b []byte) error { - ms, err := socket.ControlMessage(b).Parse() - if err != nil { - return err - } - for _, m := range ms { - lvl, typ, l, err := m.ParseHeader() - if err != nil { - return err - } - if lvl != iana.ProtocolIP { - continue - } - switch { - case typ == ctlOpts[ctlTTL].name && l >= ctlOpts[ctlTTL].length: - ctlOpts[ctlTTL].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlDst].name && l >= ctlOpts[ctlDst].length: - ctlOpts[ctlDst].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlInterface].name && l >= ctlOpts[ctlInterface].length: - ctlOpts[ctlInterface].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: - ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) - } - } - return nil -} - -// NewControlMessage returns a new control message. -// -// The returned message is large enough for options specified by cf. -func NewControlMessage(cf ControlFlags) []byte { - opt := rawOpt{cflags: cf} - var l int - if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlTTL].length) - } - if ctlOpts[ctlPacketInfo].name > 0 { - if opt.isset(FlagSrc | FlagDst | FlagInterface) { - l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) - } - } else { - if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlDst].length) - } - if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlInterface].length) - } - } - var b []byte - if l > 0 { - b = make([]byte, l) - } - return b -} - -// Ancillary data socket options -const ( - ctlTTL = iota // header field - ctlSrc // header field - ctlDst // header field - ctlInterface // inbound or outbound interface - ctlPacketInfo // inbound or outbound packet path - ctlMax -) - -// A ctlOpt represents a binding for ancillary data socket option. -type ctlOpt struct { - name int // option name, must be equal or greater than 1 - length int // option length - marshal func([]byte, *ControlMessage) []byte - parse func(*ControlMessage, []byte) -} diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go deleted file mode 100644 index 77e7ad5b..00000000 --- a/vendor/golang.org/x/net/ipv4/control_bsd.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd netbsd openbsd - -package ipv4 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func marshalDst(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len) - return m.Next(net.IPv4len) -} - -func parseDst(cm *ControlMessage, b []byte) { - if len(cm.Dst) < net.IPv4len { - cm.Dst = make(net.IP, net.IPv4len) - } - copy(cm.Dst, b[:net.IPv4len]) -} - -func marshalInterface(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink) - return m.Next(syscall.SizeofSockaddrDatalink) -} - -func parseInterface(cm *ControlMessage, b []byte) { - sadl := (*syscall.SockaddrDatalink)(unsafe.Pointer(&b[0])) - cm.IfIndex = int(sadl.Index) -} diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go deleted file mode 100644 index 425338f3..00000000 --- a/vendor/golang.org/x/net/ipv4/control_pktinfo.go +++ /dev/null @@ -1,39 +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. - -// +build darwin linux solaris - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIP, sysIP_PKTINFO, sizeofInetPktinfo) - if cm != nil { - pi := (*inetPktinfo)(unsafe.Pointer(&m.Data(sizeofInetPktinfo)[0])) - if ip := cm.Src.To4(); ip != nil { - copy(pi.Spec_dst[:], ip) - } - if cm.IfIndex > 0 { - pi.setIfindex(cm.IfIndex) - } - } - return m.Next(sizeofInetPktinfo) -} - -func parsePacketInfo(cm *ControlMessage, b []byte) { - pi := (*inetPktinfo)(unsafe.Pointer(&b[0])) - cm.IfIndex = int(pi.Ifindex) - if len(cm.Dst) < net.IPv4len { - cm.Dst = make(net.IP, net.IPv4len) - } - copy(cm.Dst, pi.Addr[:]) -} diff --git a/vendor/golang.org/x/net/ipv4/control_stub.go b/vendor/golang.org/x/net/ipv4/control_stub.go deleted file mode 100644 index 5a2f7d8d..00000000 --- a/vendor/golang.org/x/net/ipv4/control_stub.go +++ /dev/null @@ -1,13 +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. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -import "golang.org/x/net/internal/socket" - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/control_test.go b/vendor/golang.org/x/net/ipv4/control_test.go deleted file mode 100644 index f87fe124..00000000 --- a/vendor/golang.org/x/net/ipv4/control_test.go +++ /dev/null @@ -1,21 +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 ipv4_test - -import ( - "testing" - - "golang.org/x/net/ipv4" -) - -func TestControlMessageParseWithFuzz(t *testing.T) { - var cm ipv4.ControlMessage - for _, fuzz := range []string{ - "\f\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00", - "\f\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00", - } { - cm.Parse([]byte(fuzz)) - } -} diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go deleted file mode 100644 index e1ae8167..00000000 --- a/vendor/golang.org/x/net/ipv4/control_unix.go +++ /dev/null @@ -1,73 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package ipv4 - -import ( - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - opt.Lock() - defer opt.Unlock() - if so, ok := sockOpts[ssoReceiveTTL]; ok && cf&FlagTTL != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagTTL) - } else { - opt.clear(FlagTTL) - } - } - if so, ok := sockOpts[ssoPacketInfo]; ok { - if cf&(FlagSrc|FlagDst|FlagInterface) != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(cf & (FlagSrc | FlagDst | FlagInterface)) - } else { - opt.clear(cf & (FlagSrc | FlagDst | FlagInterface)) - } - } - } else { - if so, ok := sockOpts[ssoReceiveDst]; ok && cf&FlagDst != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagDst) - } else { - opt.clear(FlagDst) - } - } - if so, ok := sockOpts[ssoReceiveInterface]; ok && cf&FlagInterface != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagInterface) - } else { - opt.clear(FlagInterface) - } - } - } - return nil -} - -func marshalTTL(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIP, sysIP_RECVTTL, 1) - return m.Next(1) -} - -func parseTTL(cm *ControlMessage, b []byte) { - cm.TTL = int(*(*byte)(unsafe.Pointer(&b[:1][0]))) -} diff --git a/vendor/golang.org/x/net/ipv4/control_windows.go b/vendor/golang.org/x/net/ipv4/control_windows.go deleted file mode 100644 index ce55c664..00000000 --- a/vendor/golang.org/x/net/ipv4/control_windows.go +++ /dev/null @@ -1,16 +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 ipv4 - -import ( - "syscall" - - "golang.org/x/net/internal/socket" -) - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - // TODO(mikio): implement this - return syscall.EWINDOWS -} diff --git a/vendor/golang.org/x/net/ipv4/defs_darwin.go b/vendor/golang.org/x/net/ipv4/defs_darwin.go deleted file mode 100644 index c8f2e05b..00000000 --- a/vendor/golang.org/x/net/ipv4/defs_darwin.go +++ /dev/null @@ -1,77 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_STRIPHDR = C.IP_STRIPHDR - sysIP_RECVTTL = C.IP_RECVTTL - sysIP_BOUND_IF = C.IP_BOUND_IF - sysIP_PKTINFO = C.IP_PKTINFO - sysIP_RECVPKTINFO = C.IP_RECVPKTINFO - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF - sysIP_MULTICAST_IFINDEX = C.IP_MULTICAST_IFINDEX - sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP - sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP - sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE - sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofInetPktinfo = C.sizeof_struct_in_pktinfo - - sizeofIPMreq = C.sizeof_struct_ip_mreq - sizeofIPMreqn = C.sizeof_struct_ip_mreqn - sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet C.struct_sockaddr_in - -type inetPktinfo C.struct_in_pktinfo - -type ipMreq C.struct_ip_mreq - -type ipMreqn C.struct_ip_mreqn - -type ipMreqSource C.struct_ip_mreq_source - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_dragonfly.go b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go deleted file mode 100644 index f30544ea..00000000 --- a/vendor/golang.org/x/net/ipv4/defs_dragonfly.go +++ /dev/null @@ -1,38 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include <netinet/in.h> -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - - sizeofIPMreq = C.sizeof_struct_ip_mreq -) - -type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_freebsd.go b/vendor/golang.org/x/net/ipv4/defs_freebsd.go deleted file mode 100644 index 4dd57d86..00000000 --- a/vendor/golang.org/x/net/ipv4/defs_freebsd.go +++ /dev/null @@ -1,75 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_SENDSRCADDR = C.IP_SENDSRCADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_ONESBCAST = C.IP_ONESBCAST - sysIP_BINDANY = C.IP_BINDANY - sysIP_RECVTTL = C.IP_RECVTTL - sysIP_MINTTL = C.IP_MINTTL - sysIP_DONTFRAG = C.IP_DONTFRAG - sysIP_RECVTOS = C.IP_RECVTOS - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF - sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP - sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP - sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE - sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - - sizeofIPMreq = C.sizeof_struct_ip_mreq - sizeofIPMreqn = C.sizeof_struct_ip_mreqn - sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet C.struct_sockaddr_in - -type ipMreq C.struct_ip_mreq - -type ipMreqn C.struct_ip_mreqn - -type ipMreqSource C.struct_ip_mreq_source - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_linux.go b/vendor/golang.org/x/net/ipv4/defs_linux.go deleted file mode 100644 index beb11071..00000000 --- a/vendor/golang.org/x/net/ipv4/defs_linux.go +++ /dev/null @@ -1,122 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include <time.h> - -#include <linux/errqueue.h> -#include <linux/icmp.h> -#include <linux/in.h> -#include <linux/filter.h> -#include <sys/socket.h> -*/ -import "C" - -const ( - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_ROUTER_ALERT = C.IP_ROUTER_ALERT - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_PKTINFO = C.IP_PKTINFO - sysIP_PKTOPTIONS = C.IP_PKTOPTIONS - sysIP_MTU_DISCOVER = C.IP_MTU_DISCOVER - sysIP_RECVERR = C.IP_RECVERR - sysIP_RECVTTL = C.IP_RECVTTL - sysIP_RECVTOS = C.IP_RECVTOS - sysIP_MTU = C.IP_MTU - sysIP_FREEBIND = C.IP_FREEBIND - sysIP_TRANSPARENT = C.IP_TRANSPARENT - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_ORIGDSTADDR = C.IP_ORIGDSTADDR - sysIP_RECVORIGDSTADDR = C.IP_RECVORIGDSTADDR - sysIP_MINTTL = C.IP_MINTTL - sysIP_NODEFRAG = C.IP_NODEFRAG - sysIP_UNICAST_IF = C.IP_UNICAST_IF - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE - sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE - sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP - sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP - sysIP_MSFILTER = C.IP_MSFILTER - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - sysMCAST_MSFILTER = C.MCAST_MSFILTER - sysIP_MULTICAST_ALL = C.IP_MULTICAST_ALL - - //sysIP_PMTUDISC_DONT = C.IP_PMTUDISC_DONT - //sysIP_PMTUDISC_WANT = C.IP_PMTUDISC_WANT - //sysIP_PMTUDISC_DO = C.IP_PMTUDISC_DO - //sysIP_PMTUDISC_PROBE = C.IP_PMTUDISC_PROBE - //sysIP_PMTUDISC_INTERFACE = C.IP_PMTUDISC_INTERFACE - //sysIP_PMTUDISC_OMIT = C.IP_PMTUDISC_OMIT - - sysICMP_FILTER = C.ICMP_FILTER - - sysSO_EE_ORIGIN_NONE = C.SO_EE_ORIGIN_NONE - sysSO_EE_ORIGIN_LOCAL = C.SO_EE_ORIGIN_LOCAL - sysSO_EE_ORIGIN_ICMP = C.SO_EE_ORIGIN_ICMP - sysSO_EE_ORIGIN_ICMP6 = C.SO_EE_ORIGIN_ICMP6 - sysSO_EE_ORIGIN_TXSTATUS = C.SO_EE_ORIGIN_TXSTATUS - sysSO_EE_ORIGIN_TIMESTAMPING = C.SO_EE_ORIGIN_TIMESTAMPING - - sysSOL_SOCKET = C.SOL_SOCKET - sysSO_ATTACH_FILTER = C.SO_ATTACH_FILTER - - sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofInetPktinfo = C.sizeof_struct_in_pktinfo - sizeofSockExtendedErr = C.sizeof_struct_sock_extended_err - - sizeofIPMreq = C.sizeof_struct_ip_mreq - sizeofIPMreqn = C.sizeof_struct_ip_mreqn - sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPFilter = C.sizeof_struct_icmp_filter - - sizeofSockFprog = C.sizeof_struct_sock_fprog -) - -type kernelSockaddrStorage C.struct___kernel_sockaddr_storage - -type sockaddrInet C.struct_sockaddr_in - -type inetPktinfo C.struct_in_pktinfo - -type sockExtendedErr C.struct_sock_extended_err - -type ipMreq C.struct_ip_mreq - -type ipMreqn C.struct_ip_mreqn - -type ipMreqSource C.struct_ip_mreq_source - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req - -type icmpFilter C.struct_icmp_filter - -type sockFProg C.struct_sock_fprog - -type sockFilter C.struct_sock_filter diff --git a/vendor/golang.org/x/net/ipv4/defs_netbsd.go b/vendor/golang.org/x/net/ipv4/defs_netbsd.go deleted file mode 100644 index 8f8af1b8..00000000 --- a/vendor/golang.org/x/net/ipv4/defs_netbsd.go +++ /dev/null @@ -1,37 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include <netinet/in.h> -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - - sizeofIPMreq = C.sizeof_struct_ip_mreq -) - -type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_openbsd.go b/vendor/golang.org/x/net/ipv4/defs_openbsd.go deleted file mode 100644 index 8f8af1b8..00000000 --- a/vendor/golang.org/x/net/ipv4/defs_openbsd.go +++ /dev/null @@ -1,37 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include <netinet/in.h> -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - - sizeofIPMreq = C.sizeof_struct_ip_mreq -) - -type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_solaris.go b/vendor/golang.org/x/net/ipv4/defs_solaris.go deleted file mode 100644 index aeb33e9c..00000000 --- a/vendor/golang.org/x/net/ipv4/defs_solaris.go +++ /dev/null @@ -1,84 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_RECVSLLA = C.IP_RECVSLLA - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE - sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE - sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP - sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP - sysIP_NEXTHOP = C.IP_NEXTHOP - - sysIP_PKTINFO = C.IP_PKTINFO - sysIP_RECVPKTINFO = C.IP_RECVPKTINFO - sysIP_DONTFRAG = C.IP_DONTFRAG - - sysIP_BOUND_IF = C.IP_BOUND_IF - sysIP_UNSPEC_SRC = C.IP_UNSPEC_SRC - sysIP_BROADCAST_TTL = C.IP_BROADCAST_TTL - sysIP_DHCPINIT_IF = C.IP_DHCPINIT_IF - - sysIP_REUSEADDR = C.IP_REUSEADDR - sysIP_DONTROUTE = C.IP_DONTROUTE - sysIP_BROADCAST = C.IP_BROADCAST - - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofInetPktinfo = C.sizeof_struct_in_pktinfo - - sizeofIPMreq = C.sizeof_struct_ip_mreq - sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet C.struct_sockaddr_in - -type inetPktinfo C.struct_in_pktinfo - -type ipMreq C.struct_ip_mreq - -type ipMreqSource C.struct_ip_mreq_source - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/dgramopt.go b/vendor/golang.org/x/net/ipv4/dgramopt.go deleted file mode 100644 index 54d77d5f..00000000 --- a/vendor/golang.org/x/net/ipv4/dgramopt.go +++ /dev/null @@ -1,265 +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 ipv4 - -import ( - "net" - "syscall" - - "golang.org/x/net/bpf" -) - -// MulticastTTL returns the time-to-live field value for outgoing -// multicast packets. -func (c *dgramOpt) MulticastTTL() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastTTL] - if !ok { - return 0, errOpNoSupport - } - return so.GetInt(c.Conn) -} - -// SetMulticastTTL sets the time-to-live field value for future -// outgoing multicast packets. -func (c *dgramOpt) SetMulticastTTL(ttl int) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastTTL] - if !ok { - return errOpNoSupport - } - return so.SetInt(c.Conn, ttl) -} - -// MulticastInterface returns the default interface for multicast -// packet transmissions. -func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { - if !c.ok() { - return nil, syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastInterface] - if !ok { - return nil, errOpNoSupport - } - return so.getMulticastInterface(c.Conn) -} - -// SetMulticastInterface sets the default interface for future -// multicast packet transmissions. -func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastInterface] - if !ok { - return errOpNoSupport - } - return so.setMulticastInterface(c.Conn, ifi) -} - -// MulticastLoopback reports whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) MulticastLoopback() (bool, error) { - if !c.ok() { - return false, syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastLoopback] - if !ok { - return false, errOpNoSupport - } - on, err := so.GetInt(c.Conn) - if err != nil { - return false, err - } - return on == 1, nil -} - -// SetMulticastLoopback sets whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) SetMulticastLoopback(on bool) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastLoopback] - if !ok { - return errOpNoSupport - } - return so.SetInt(c.Conn, boolint(on)) -} - -// JoinGroup joins the group address group on the interface ifi. -// By default all sources that can cast data to group are accepted. -// It's possible to mute and unmute data transmission from a specific -// source by using ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup. -// JoinGroup uses the system assigned multicast interface when ifi is -// nil, although this is not recommended because the assignment -// depends on platforms and sometimes it might require routing -// configuration. -func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoJoinGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - return so.setGroup(c.Conn, ifi, grp) -} - -// LeaveGroup leaves the group address group on the interface ifi -// regardless of whether the group is any-source group or -// source-specific group. -func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoLeaveGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - return so.setGroup(c.Conn, ifi, grp) -} - -// JoinSourceSpecificGroup joins the source-specific group comprising -// group and source on the interface ifi. -// JoinSourceSpecificGroup uses the system assigned multicast -// interface when ifi is nil, although this is not recommended because -// the assignment depends on platforms and sometimes it might require -// routing configuration. -func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoJoinSourceGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// LeaveSourceSpecificGroup leaves the source-specific group on the -// interface ifi. -func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoLeaveSourceGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// ExcludeSourceSpecificGroup excludes the source-specific group from -// the already joined any-source groups by JoinGroup on the interface -// ifi. -func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoBlockSourceGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// IncludeSourceSpecificGroup includes the excluded source-specific -// group by ExcludeSourceSpecificGroup again on the interface ifi. -func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoUnblockSourceGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// ICMPFilter returns an ICMP filter. -// Currently only Linux supports this. -func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { - if !c.ok() { - return nil, syscall.EINVAL - } - so, ok := sockOpts[ssoICMPFilter] - if !ok { - return nil, errOpNoSupport - } - return so.getICMPFilter(c.Conn) -} - -// SetICMPFilter deploys the ICMP filter. -// Currently only Linux supports this. -func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoICMPFilter] - if !ok { - return errOpNoSupport - } - return so.setICMPFilter(c.Conn, f) -} - -// SetBPF attaches a BPF program to the connection. -// -// Only supported on Linux. -func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoAttachFilter] - if !ok { - return errOpNoSupport - } - return so.setBPF(c.Conn, filter) -} diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go deleted file mode 100644 index b43935a5..00000000 --- a/vendor/golang.org/x/net/ipv4/doc.go +++ /dev/null @@ -1,244 +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 ipv4 implements IP-level socket options for the Internet -// Protocol version 4. -// -// The package provides IP-level socket options that allow -// manipulation of IPv4 facilities. -// -// The IPv4 protocol and basic host requirements for IPv4 are defined -// in RFC 791 and RFC 1122. -// Host extensions for multicasting and socket interface extensions -// for multicast source filters are defined in RFC 1112 and RFC 3678. -// IGMPv1, IGMPv2 and IGMPv3 are defined in RFC 1112, RFC 2236 and RFC -// 3376. -// Source-specific multicast is defined in RFC 4607. -// -// -// Unicasting -// -// The options for unicasting are available for net.TCPConn, -// net.UDPConn and net.IPConn which are created as network connections -// that use the IPv4 transport. When a single TCP connection carrying -// a data flow of multiple packets needs to indicate the flow is -// important, Conn is used to set the type-of-service field on the -// IPv4 header for each packet. -// -// ln, err := net.Listen("tcp4", "0.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer ln.Close() -// for { -// c, err := ln.Accept() -// if err != nil { -// // error handling -// } -// go func(c net.Conn) { -// defer c.Close() -// -// The outgoing packets will be labeled DiffServ assured forwarding -// class 1 low drop precedence, known as AF11 packets. -// -// if err := ipv4.NewConn(c).SetTOS(0x28); err != nil { -// // error handling -// } -// if _, err := c.Write(data); err != nil { -// // error handling -// } -// }(c) -// } -// -// -// Multicasting -// -// The options for multicasting are available for net.UDPConn and -// net.IPconn which are created as network connections that use the -// IPv4 transport. A few network facilities must be prepared before -// you begin multicasting, at a minimum joining network interfaces and -// multicast groups. -// -// en0, err := net.InterfaceByName("en0") -// if err != nil { -// // error handling -// } -// en1, err := net.InterfaceByIndex(911) -// if err != nil { -// // error handling -// } -// group := net.IPv4(224, 0, 0, 250) -// -// First, an application listens to an appropriate address with an -// appropriate service port. -// -// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer c.Close() -// -// Second, the application joins multicast groups, starts listening to -// the groups on the specified network interfaces. Note that the -// service port for transport layer protocol does not matter with this -// operation as joining groups affects only network and link layer -// protocols, such as IPv4 and Ethernet. -// -// p := ipv4.NewPacketConn(c) -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { -// // error handling -// } -// -// The application might set per packet control message transmissions -// between the protocol stack within the kernel. When the application -// needs a destination address on an incoming packet, -// SetControlMessage of PacketConn is used to enable control message -// transmissions. -// -// if err := p.SetControlMessage(ipv4.FlagDst, true); err != nil { -// // error handling -// } -// -// The application could identify whether the received packets are -// of interest by using the control message that contains the -// destination address of the received packet. -// -// b := make([]byte, 1500) -// for { -// n, cm, src, err := p.ReadFrom(b) -// if err != nil { -// // error handling -// } -// if cm.Dst.IsMulticast() { -// if cm.Dst.Equal(group) { -// // joined group, do something -// } else { -// // unknown group, discard -// continue -// } -// } -// -// The application can also send both unicast and multicast packets. -// -// p.SetTOS(0x0) -// p.SetTTL(16) -// if _, err := p.WriteTo(data, nil, src); err != nil { -// // error handling -// } -// dst := &net.UDPAddr{IP: group, Port: 1024} -// for _, ifi := range []*net.Interface{en0, en1} { -// if err := p.SetMulticastInterface(ifi); err != nil { -// // error handling -// } -// p.SetMulticastTTL(2) -// if _, err := p.WriteTo(data, nil, dst); err != nil { -// // error handling -// } -// } -// } -// -// -// More multicasting -// -// An application that uses PacketConn or RawConn may join multiple -// multicast groups. For example, a UDP listener with port 1024 might -// join two different groups across over two different network -// interfaces by using: -// -// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer c.Close() -// p := ipv4.NewPacketConn(c) -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { -// // error handling -// } -// -// It is possible for multiple UDP listeners that listen on the same -// UDP port to join the same multicast group. The net package will -// provide a socket that listens to a wildcard address with reusable -// UDP port when an appropriate multicast address prefix is passed to -// the net.ListenPacket or net.ListenUDP. -// -// c1, err := net.ListenPacket("udp4", "224.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer c1.Close() -// c2, err := net.ListenPacket("udp4", "224.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer c2.Close() -// p1 := ipv4.NewPacketConn(c1) -// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { -// // error handling -// } -// p2 := ipv4.NewPacketConn(c2) -// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { -// // error handling -// } -// -// Also it is possible for the application to leave or rejoin a -// multicast group on the network interface. -// -// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 250)}); err != nil { -// // error handling -// } -// -// -// Source-specific multicasting -// -// An application that uses PacketConn or RawConn on IGMPv3 supported -// platform is able to join source-specific multicast groups. -// The application may use JoinSourceSpecificGroup and -// LeaveSourceSpecificGroup for the operation known as "include" mode, -// -// ssmgroup := net.UDPAddr{IP: net.IPv4(232, 7, 8, 9)} -// ssmsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 1)}) -// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { -// // error handling -// } -// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { -// // error handling -// } -// -// or JoinGroup, ExcludeSourceSpecificGroup, -// IncludeSourceSpecificGroup and LeaveGroup for the operation known -// as "exclude" mode. -// -// exclsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 254)} -// if err := p.JoinGroup(en0, &ssmgroup); err != nil { -// // error handling -// } -// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { -// // error handling -// } -// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { -// // error handling -// } -// -// Note that it depends on each platform implementation what happens -// when an application which runs on IGMPv3 unsupported platform uses -// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. -// In general the platform tries to fall back to conversations using -// IGMPv1 or IGMPv2 and starts to listen to multicast traffic. -// In the fallback case, ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup may return an error. -package ipv4 // import "golang.org/x/net/ipv4" - -// BUG(mikio): This package is not implemented on NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go deleted file mode 100644 index 2ab87736..00000000 --- a/vendor/golang.org/x/net/ipv4/endpoint.go +++ /dev/null @@ -1,187 +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 ipv4 - -import ( - "net" - "syscall" - "time" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the JoinSourceSpecificGroup, -// LeaveSourceSpecificGroup, ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup methods of PacketConn and RawConn are -// not implemented. - -// A Conn represents a network endpoint that uses the IPv4 transport. -// It is used to control basic IP-level socket options such as TOS and -// TTL. -type Conn struct { - genericOpt -} - -type genericOpt struct { - *socket.Conn -} - -func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } - -// NewConn returns a new Conn. -func NewConn(c net.Conn) *Conn { - cc, _ := socket.NewConn(c) - return &Conn{ - genericOpt: genericOpt{Conn: cc}, - } -} - -// A PacketConn represents a packet network endpoint that uses the -// IPv4 transport. It is used to control several IP-level socket -// options including multicasting. It also provides datagram based -// network I/O methods specific to the IPv4 and higher layer protocols -// such as UDP. -type PacketConn struct { - genericOpt - dgramOpt - payloadHandler -} - -type dgramOpt struct { - *socket.Conn -} - -func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } - -// SetControlMessage sets the per packet IP-level socket options. -func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) -} - -// SetDeadline sets the read and write deadlines associated with the -// endpoint. -func (c *PacketConn) SetDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return c.payloadHandler.PacketConn.SetDeadline(t) -} - -// SetReadDeadline sets the read deadline associated with the -// endpoint. -func (c *PacketConn) SetReadDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return c.payloadHandler.PacketConn.SetReadDeadline(t) -} - -// SetWriteDeadline sets the write deadline associated with the -// endpoint. -func (c *PacketConn) SetWriteDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return c.payloadHandler.PacketConn.SetWriteDeadline(t) -} - -// Close closes the endpoint. -func (c *PacketConn) Close() error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return c.payloadHandler.PacketConn.Close() -} - -// NewPacketConn returns a new PacketConn using c as its underlying -// transport. -func NewPacketConn(c net.PacketConn) *PacketConn { - cc, _ := socket.NewConn(c.(net.Conn)) - p := &PacketConn{ - genericOpt: genericOpt{Conn: cc}, - dgramOpt: dgramOpt{Conn: cc}, - payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, - } - return p -} - -// A RawConn represents a packet network endpoint that uses the IPv4 -// transport. It is used to control several IP-level socket options -// including IPv4 header manipulation. It also provides datagram -// based network I/O methods specific to the IPv4 and higher layer -// protocols that handle IPv4 datagram directly such as OSPF, GRE. -type RawConn struct { - genericOpt - dgramOpt - packetHandler -} - -// SetControlMessage sets the per packet IP-level socket options. -func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error { - if !c.packetHandler.ok() { - return syscall.EINVAL - } - return setControlMessage(c.dgramOpt.Conn, &c.packetHandler.rawOpt, cf, on) -} - -// SetDeadline sets the read and write deadlines associated with the -// endpoint. -func (c *RawConn) SetDeadline(t time.Time) error { - if !c.packetHandler.ok() { - return syscall.EINVAL - } - return c.packetHandler.IPConn.SetDeadline(t) -} - -// SetReadDeadline sets the read deadline associated with the -// endpoint. -func (c *RawConn) SetReadDeadline(t time.Time) error { - if !c.packetHandler.ok() { - return syscall.EINVAL - } - return c.packetHandler.IPConn.SetReadDeadline(t) -} - -// SetWriteDeadline sets the write deadline associated with the -// endpoint. -func (c *RawConn) SetWriteDeadline(t time.Time) error { - if !c.packetHandler.ok() { - return syscall.EINVAL - } - return c.packetHandler.IPConn.SetWriteDeadline(t) -} - -// Close closes the endpoint. -func (c *RawConn) Close() error { - if !c.packetHandler.ok() { - return syscall.EINVAL - } - return c.packetHandler.IPConn.Close() -} - -// NewRawConn returns a new RawConn using c as its underlying -// transport. -func NewRawConn(c net.PacketConn) (*RawConn, error) { - cc, err := socket.NewConn(c.(net.Conn)) - if err != nil { - return nil, err - } - r := &RawConn{ - genericOpt: genericOpt{Conn: cc}, - dgramOpt: dgramOpt{Conn: cc}, - packetHandler: packetHandler{IPConn: c.(*net.IPConn), Conn: cc}, - } - so, ok := sockOpts[ssoHeaderPrepend] - if !ok { - return nil, errOpNoSupport - } - if err := so.SetInt(r.dgramOpt.Conn, boolint(true)); err != nil { - return nil, err - } - return r, nil -} diff --git a/vendor/golang.org/x/net/ipv4/example_test.go b/vendor/golang.org/x/net/ipv4/example_test.go deleted file mode 100644 index ddc7577e..00000000 --- a/vendor/golang.org/x/net/ipv4/example_test.go +++ /dev/null @@ -1,224 +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 ipv4_test - -import ( - "fmt" - "log" - "net" - "os" - "runtime" - "time" - - "golang.org/x/net/icmp" - "golang.org/x/net/ipv4" -) - -func ExampleConn_markingTCP() { - ln, err := net.Listen("tcp", "0.0.0.0:1024") - if err != nil { - log.Fatal(err) - } - defer ln.Close() - - for { - c, err := ln.Accept() - if err != nil { - log.Fatal(err) - } - go func(c net.Conn) { - defer c.Close() - if c.RemoteAddr().(*net.TCPAddr).IP.To4() != nil { - p := ipv4.NewConn(c) - if err := p.SetTOS(0x28); err != nil { // DSCP AF11 - log.Fatal(err) - } - if err := p.SetTTL(128); err != nil { - log.Fatal(err) - } - } - if _, err := c.Write([]byte("HELLO-R-U-THERE-ACK")); err != nil { - log.Fatal(err) - } - }(c) - } -} - -func ExamplePacketConn_servingOneShotMulticastDNS() { - c, err := net.ListenPacket("udp4", "0.0.0.0:5353") // mDNS over UDP - if err != nil { - log.Fatal(err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - - en0, err := net.InterfaceByName("en0") - if err != nil { - log.Fatal(err) - } - mDNSLinkLocal := net.UDPAddr{IP: net.IPv4(224, 0, 0, 251)} - if err := p.JoinGroup(en0, &mDNSLinkLocal); err != nil { - log.Fatal(err) - } - defer p.LeaveGroup(en0, &mDNSLinkLocal) - if err := p.SetControlMessage(ipv4.FlagDst, true); err != nil { - log.Fatal(err) - } - - b := make([]byte, 1500) - for { - _, cm, peer, err := p.ReadFrom(b) - if err != nil { - log.Fatal(err) - } - if !cm.Dst.IsMulticast() || !cm.Dst.Equal(mDNSLinkLocal.IP) { - continue - } - answers := []byte("FAKE-MDNS-ANSWERS") // fake mDNS answers, you need to implement this - if _, err := p.WriteTo(answers, nil, peer); err != nil { - log.Fatal(err) - } - } -} - -func ExamplePacketConn_tracingIPPacketRoute() { - // Tracing an IP packet route to www.google.com. - - const host = "www.google.com" - ips, err := net.LookupIP(host) - if err != nil { - log.Fatal(err) - } - var dst net.IPAddr - for _, ip := range ips { - if ip.To4() != nil { - dst.IP = ip - fmt.Printf("using %v for tracing an IP packet route to %s\n", dst.IP, host) - break - } - } - if dst.IP == nil { - log.Fatal("no A record found") - } - - c, err := net.ListenPacket("ip4:1", "0.0.0.0") // ICMP for IPv4 - if err != nil { - log.Fatal(err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - - if err := p.SetControlMessage(ipv4.FlagTTL|ipv4.FlagSrc|ipv4.FlagDst|ipv4.FlagInterface, true); err != nil { - log.Fatal(err) - } - wm := icmp.Message{ - Type: ipv4.ICMPTypeEcho, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, - Data: []byte("HELLO-R-U-THERE"), - }, - } - - rb := make([]byte, 1500) - for i := 1; i <= 64; i++ { // up to 64 hops - wm.Body.(*icmp.Echo).Seq = i - wb, err := wm.Marshal(nil) - if err != nil { - log.Fatal(err) - } - if err := p.SetTTL(i); err != nil { - log.Fatal(err) - } - - // In the real world usually there are several - // multiple traffic-engineered paths for each hop. - // You may need to probe a few times to each hop. - begin := time.Now() - if _, err := p.WriteTo(wb, nil, &dst); err != nil { - log.Fatal(err) - } - if err := p.SetReadDeadline(time.Now().Add(3 * time.Second)); err != nil { - log.Fatal(err) - } - n, cm, peer, err := p.ReadFrom(rb) - if err != nil { - if err, ok := err.(net.Error); ok && err.Timeout() { - fmt.Printf("%v\t*\n", i) - continue - } - log.Fatal(err) - } - rm, err := icmp.ParseMessage(1, rb[:n]) - if err != nil { - log.Fatal(err) - } - rtt := time.Since(begin) - - // In the real world you need to determine whether the - // received message is yours using ControlMessage.Src, - // ControlMessage.Dst, icmp.Echo.ID and icmp.Echo.Seq. - switch rm.Type { - case ipv4.ICMPTypeTimeExceeded: - names, _ := net.LookupAddr(peer.String()) - fmt.Printf("%d\t%v %+v %v\n\t%+v\n", i, peer, names, rtt, cm) - case ipv4.ICMPTypeEchoReply: - names, _ := net.LookupAddr(peer.String()) - fmt.Printf("%d\t%v %+v %v\n\t%+v\n", i, peer, names, rtt, cm) - return - default: - log.Printf("unknown ICMP message: %+v\n", rm) - } - } -} - -func ExampleRawConn_advertisingOSPFHello() { - c, err := net.ListenPacket("ip4:89", "0.0.0.0") // OSPF for IPv4 - if err != nil { - log.Fatal(err) - } - defer c.Close() - r, err := ipv4.NewRawConn(c) - if err != nil { - log.Fatal(err) - } - - en0, err := net.InterfaceByName("en0") - if err != nil { - log.Fatal(err) - } - allSPFRouters := net.IPAddr{IP: net.IPv4(224, 0, 0, 5)} - if err := r.JoinGroup(en0, &allSPFRouters); err != nil { - log.Fatal(err) - } - defer r.LeaveGroup(en0, &allSPFRouters) - - hello := make([]byte, 24) // fake hello data, you need to implement this - ospf := make([]byte, 24) // fake ospf header, you need to implement this - ospf[0] = 2 // version 2 - ospf[1] = 1 // hello packet - ospf = append(ospf, hello...) - iph := &ipv4.Header{ - Version: ipv4.Version, - Len: ipv4.HeaderLen, - TOS: 0xc0, // DSCP CS6 - TotalLen: ipv4.HeaderLen + len(ospf), - TTL: 1, - Protocol: 89, - Dst: allSPFRouters.IP.To4(), - } - - var cm *ipv4.ControlMessage - switch runtime.GOOS { - case "darwin", "linux": - cm = &ipv4.ControlMessage{IfIndex: en0.Index} - default: - if err := r.SetMulticastInterface(en0); err != nil { - log.Fatal(err) - } - } - if err := r.WriteTo(iph, ospf, cm); err != nil { - log.Fatal(err) - } -} diff --git a/vendor/golang.org/x/net/ipv4/gen.go b/vendor/golang.org/x/net/ipv4/gen.go deleted file mode 100644 index 9d490fac..00000000 --- a/vendor/golang.org/x/net/ipv4/gen.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -//go:generate go run gen.go - -// This program generates system adaptation constants and types, -// internet protocol constants and tables by reading template files -// and IANA protocol registries. -package main - -import ( - "bytes" - "encoding/xml" - "fmt" - "go/format" - "io" - "io/ioutil" - "net/http" - "os" - "os/exec" - "runtime" - "strconv" - "strings" -) - -func main() { - if err := genzsys(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - if err := geniana(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func genzsys() error { - defs := "defs_" + runtime.GOOS + ".go" - f, err := os.Open(defs) - if err != nil { - if os.IsNotExist(err) { - return nil - } - return err - } - f.Close() - cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) - b, err := cmd.Output() - if err != nil { - return err - } - b, err = format.Source(b) - if err != nil { - return err - } - zsys := "zsys_" + runtime.GOOS + ".go" - switch runtime.GOOS { - case "freebsd", "linux": - zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" - } - if err := ioutil.WriteFile(zsys, b, 0644); err != nil { - return err - } - return nil -} - -var registries = []struct { - url string - parse func(io.Writer, io.Reader) error -}{ - { - "https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml", - parseICMPv4Parameters, - }, -} - -func geniana() error { - var bb bytes.Buffer - fmt.Fprintf(&bb, "// go generate gen.go\n") - fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n") - fmt.Fprintf(&bb, "package ipv4\n\n") - for _, r := range registries { - resp, err := http.Get(r.url) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) - } - if err := r.parse(&bb, resp.Body); err != nil { - return err - } - fmt.Fprintf(&bb, "\n") - } - b, err := format.Source(bb.Bytes()) - if err != nil { - return err - } - if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { - return err - } - return nil -} - -func parseICMPv4Parameters(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var icp icmpv4Parameters - if err := dec.Decode(&icp); err != nil { - return err - } - prs := icp.escape() - fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) - fmt.Fprintf(w, "const (\n") - for _, pr := range prs { - if pr.Descr == "" { - continue - } - fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Descr, pr.Value) - fmt.Fprintf(w, "// %s\n", pr.OrigDescr) - } - fmt.Fprintf(w, ")\n\n") - fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) - fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") - for _, pr := range prs { - if pr.Descr == "" { - continue - } - fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigDescr)) - } - fmt.Fprintf(w, "}\n") - return nil -} - -type icmpv4Parameters struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Registries []struct { - Title string `xml:"title"` - Records []struct { - Value string `xml:"value"` - Descr string `xml:"description"` - } `xml:"record"` - } `xml:"registry"` -} - -type canonICMPv4ParamRecord struct { - OrigDescr string - Descr string - Value int -} - -func (icp *icmpv4Parameters) escape() []canonICMPv4ParamRecord { - id := -1 - for i, r := range icp.Registries { - if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { - id = i - break - } - } - if id < 0 { - return nil - } - prs := make([]canonICMPv4ParamRecord, len(icp.Registries[id].Records)) - sr := strings.NewReplacer( - "Messages", "", - "Message", "", - "ICMP", "", - "+", "P", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, pr := range icp.Registries[id].Records { - if strings.Contains(pr.Descr, "Reserved") || - strings.Contains(pr.Descr, "Unassigned") || - strings.Contains(pr.Descr, "Deprecated") || - strings.Contains(pr.Descr, "Experiment") || - strings.Contains(pr.Descr, "experiment") { - continue - } - ss := strings.Split(pr.Descr, "\n") - if len(ss) > 1 { - prs[i].Descr = strings.Join(ss, " ") - } else { - prs[i].Descr = ss[0] - } - s := strings.TrimSpace(prs[i].Descr) - prs[i].OrigDescr = s - prs[i].Descr = sr.Replace(s) - prs[i].Value, _ = strconv.Atoi(pr.Value) - } - return prs -} diff --git a/vendor/golang.org/x/net/ipv4/genericopt.go b/vendor/golang.org/x/net/ipv4/genericopt.go deleted file mode 100644 index 119bf841..00000000 --- a/vendor/golang.org/x/net/ipv4/genericopt.go +++ /dev/null @@ -1,57 +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 ipv4 - -import "syscall" - -// TOS returns the type-of-service field value for outgoing packets. -func (c *genericOpt) TOS() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - so, ok := sockOpts[ssoTOS] - if !ok { - return 0, errOpNoSupport - } - return so.GetInt(c.Conn) -} - -// SetTOS sets the type-of-service field value for future outgoing -// packets. -func (c *genericOpt) SetTOS(tos int) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoTOS] - if !ok { - return errOpNoSupport - } - return so.SetInt(c.Conn, tos) -} - -// TTL returns the time-to-live field value for outgoing packets. -func (c *genericOpt) TTL() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - so, ok := sockOpts[ssoTTL] - if !ok { - return 0, errOpNoSupport - } - return so.GetInt(c.Conn) -} - -// SetTTL sets the time-to-live field value for future outgoing -// packets. -func (c *genericOpt) SetTTL(ttl int) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoTTL] - if !ok { - return errOpNoSupport - } - return so.SetInt(c.Conn, ttl) -} diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go deleted file mode 100644 index 8bb0f0f4..00000000 --- a/vendor/golang.org/x/net/ipv4/header.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. - -package ipv4 - -import ( - "encoding/binary" - "fmt" - "net" - "runtime" - "syscall" - - "golang.org/x/net/internal/socket" -) - -const ( - Version = 4 // protocol version - HeaderLen = 20 // header length without extension headers - maxHeaderLen = 60 // sensible default, revisit if later RFCs define new usage of version and header length fields -) - -type HeaderFlags int - -const ( - MoreFragments HeaderFlags = 1 << iota // more fragments flag - DontFragment // don't fragment flag -) - -// A Header represents an IPv4 header. -type Header struct { - Version int // protocol version - Len int // header length - TOS int // type-of-service - TotalLen int // packet total length - ID int // identification - Flags HeaderFlags // flags - FragOff int // fragment offset - TTL int // time-to-live - Protocol int // next protocol - Checksum int // checksum - Src net.IP // source address - Dst net.IP // destination address - Options []byte // options, extension headers -} - -func (h *Header) String() string { - if h == nil { - return "<nil>" - } - return fmt.Sprintf("ver=%d hdrlen=%d tos=%#x totallen=%d id=%#x flags=%#x fragoff=%#x ttl=%d proto=%d cksum=%#x src=%v dst=%v", h.Version, h.Len, h.TOS, h.TotalLen, h.ID, h.Flags, h.FragOff, h.TTL, h.Protocol, h.Checksum, h.Src, h.Dst) -} - -// Marshal returns the binary encoding of h. -func (h *Header) Marshal() ([]byte, error) { - if h == nil { - return nil, syscall.EINVAL - } - if h.Len < HeaderLen { - return nil, errHeaderTooShort - } - hdrlen := HeaderLen + len(h.Options) - b := make([]byte, hdrlen) - b[0] = byte(Version<<4 | (hdrlen >> 2 & 0x0f)) - b[1] = byte(h.TOS) - flagsAndFragOff := (h.FragOff & 0x1fff) | int(h.Flags<<13) - switch runtime.GOOS { - case "darwin", "dragonfly", "netbsd": - socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) - case "freebsd": - if freebsdVersion < 1100000 { - socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) - } else { - binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) - } - default: - binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) - } - binary.BigEndian.PutUint16(b[4:6], uint16(h.ID)) - b[8] = byte(h.TTL) - b[9] = byte(h.Protocol) - binary.BigEndian.PutUint16(b[10:12], uint16(h.Checksum)) - if ip := h.Src.To4(); ip != nil { - copy(b[12:16], ip[:net.IPv4len]) - } - if ip := h.Dst.To4(); ip != nil { - copy(b[16:20], ip[:net.IPv4len]) - } else { - return nil, errMissingAddress - } - if len(h.Options) > 0 { - copy(b[HeaderLen:], h.Options) - } - return b, nil -} - -// Parse parses b as an IPv4 header and sotres the result in h. -func (h *Header) Parse(b []byte) error { - if h == nil || len(b) < HeaderLen { - return errHeaderTooShort - } - hdrlen := int(b[0]&0x0f) << 2 - if hdrlen > len(b) { - return errBufferTooShort - } - h.Version = int(b[0] >> 4) - h.Len = hdrlen - h.TOS = int(b[1]) - h.ID = int(binary.BigEndian.Uint16(b[4:6])) - h.TTL = int(b[8]) - h.Protocol = int(b[9]) - h.Checksum = int(binary.BigEndian.Uint16(b[10:12])) - h.Src = net.IPv4(b[12], b[13], b[14], b[15]) - h.Dst = net.IPv4(b[16], b[17], b[18], b[19]) - switch runtime.GOOS { - case "darwin", "dragonfly", "netbsd": - h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + hdrlen - h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) - case "freebsd": - if freebsdVersion < 1100000 { - h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) - if freebsdVersion < 1000000 { - h.TotalLen += hdrlen - } - h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) - } else { - h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) - h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) - } - default: - h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) - h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) - } - h.Flags = HeaderFlags(h.FragOff&0xe000) >> 13 - h.FragOff = h.FragOff & 0x1fff - optlen := hdrlen - HeaderLen - if optlen > 0 && len(b) >= hdrlen { - if cap(h.Options) < optlen { - h.Options = make([]byte, optlen) - } else { - h.Options = h.Options[:optlen] - } - copy(h.Options, b[HeaderLen:hdrlen]) - } - return nil -} - -// ParseHeader parses b as an IPv4 header. -func ParseHeader(b []byte) (*Header, error) { - h := new(Header) - if err := h.Parse(b); err != nil { - return nil, err - } - return h, nil -} diff --git a/vendor/golang.org/x/net/ipv4/header_test.go b/vendor/golang.org/x/net/ipv4/header_test.go deleted file mode 100644 index a246aeea..00000000 --- a/vendor/golang.org/x/net/ipv4/header_test.go +++ /dev/null @@ -1,228 +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 ipv4 - -import ( - "bytes" - "encoding/binary" - "net" - "reflect" - "runtime" - "strings" - "testing" - - "golang.org/x/net/internal/socket" -) - -type headerTest struct { - wireHeaderFromKernel []byte - wireHeaderToKernel []byte - wireHeaderFromTradBSDKernel []byte - wireHeaderToTradBSDKernel []byte - wireHeaderFromFreeBSD10Kernel []byte - wireHeaderToFreeBSD10Kernel []byte - *Header -} - -var headerLittleEndianTests = []headerTest{ - // TODO(mikio): Add platform dependent wire header formats when - // we support new platforms. - { - wireHeaderFromKernel: []byte{ - 0x45, 0x01, 0xbe, 0xef, - 0xca, 0xfe, 0x45, 0xdc, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderToKernel: []byte{ - 0x45, 0x01, 0xbe, 0xef, - 0xca, 0xfe, 0x45, 0xdc, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderFromTradBSDKernel: []byte{ - 0x45, 0x01, 0xdb, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderToTradBSDKernel: []byte{ - 0x45, 0x01, 0xef, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderFromFreeBSD10Kernel: []byte{ - 0x45, 0x01, 0xef, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - wireHeaderToFreeBSD10Kernel: []byte{ - 0x45, 0x01, 0xef, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - }, - Header: &Header{ - Version: Version, - Len: HeaderLen, - TOS: 1, - TotalLen: 0xbeef, - ID: 0xcafe, - Flags: DontFragment, - FragOff: 1500, - TTL: 255, - Protocol: 1, - Checksum: 0xdead, - Src: net.IPv4(172, 16, 254, 254), - Dst: net.IPv4(192, 168, 0, 1), - }, - }, - - // with option headers - { - wireHeaderFromKernel: []byte{ - 0x46, 0x01, 0xbe, 0xf3, - 0xca, 0xfe, 0x45, 0xdc, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - 0xff, 0xfe, 0xfe, 0xff, - }, - wireHeaderToKernel: []byte{ - 0x46, 0x01, 0xbe, 0xf3, - 0xca, 0xfe, 0x45, 0xdc, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - 0xff, 0xfe, 0xfe, 0xff, - }, - wireHeaderFromTradBSDKernel: []byte{ - 0x46, 0x01, 0xdb, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - 0xff, 0xfe, 0xfe, 0xff, - }, - wireHeaderToTradBSDKernel: []byte{ - 0x46, 0x01, 0xf3, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - 0xff, 0xfe, 0xfe, 0xff, - }, - wireHeaderFromFreeBSD10Kernel: []byte{ - 0x46, 0x01, 0xf3, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - 0xff, 0xfe, 0xfe, 0xff, - }, - wireHeaderToFreeBSD10Kernel: []byte{ - 0x46, 0x01, 0xf3, 0xbe, - 0xca, 0xfe, 0xdc, 0x45, - 0xff, 0x01, 0xde, 0xad, - 172, 16, 254, 254, - 192, 168, 0, 1, - 0xff, 0xfe, 0xfe, 0xff, - }, - Header: &Header{ - Version: Version, - Len: HeaderLen + 4, - TOS: 1, - TotalLen: 0xbef3, - ID: 0xcafe, - Flags: DontFragment, - FragOff: 1500, - TTL: 255, - Protocol: 1, - Checksum: 0xdead, - Src: net.IPv4(172, 16, 254, 254), - Dst: net.IPv4(192, 168, 0, 1), - Options: []byte{0xff, 0xfe, 0xfe, 0xff}, - }, - }, -} - -func TestMarshalHeader(t *testing.T) { - if socket.NativeEndian != binary.LittleEndian { - t.Skip("no test for non-little endian machine yet") - } - - for _, tt := range headerLittleEndianTests { - b, err := tt.Header.Marshal() - if err != nil { - t.Fatal(err) - } - var wh []byte - switch runtime.GOOS { - case "darwin", "dragonfly", "netbsd": - wh = tt.wireHeaderToTradBSDKernel - case "freebsd": - switch { - case freebsdVersion < 1000000: - wh = tt.wireHeaderToTradBSDKernel - case 1000000 <= freebsdVersion && freebsdVersion < 1100000: - wh = tt.wireHeaderToFreeBSD10Kernel - default: - wh = tt.wireHeaderToKernel - } - default: - wh = tt.wireHeaderToKernel - } - if !bytes.Equal(b, wh) { - t.Fatalf("got %#v; want %#v", b, wh) - } - } -} - -func TestParseHeader(t *testing.T) { - if socket.NativeEndian != binary.LittleEndian { - t.Skip("no test for big endian machine yet") - } - - for _, tt := range headerLittleEndianTests { - var wh []byte - switch runtime.GOOS { - case "darwin", "dragonfly", "netbsd": - wh = tt.wireHeaderFromTradBSDKernel - case "freebsd": - switch { - case freebsdVersion < 1000000: - wh = tt.wireHeaderFromTradBSDKernel - case 1000000 <= freebsdVersion && freebsdVersion < 1100000: - wh = tt.wireHeaderFromFreeBSD10Kernel - default: - wh = tt.wireHeaderFromKernel - } - default: - wh = tt.wireHeaderFromKernel - } - h, err := ParseHeader(wh) - if err != nil { - t.Fatal(err) - } - if err := h.Parse(wh); err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(h, tt.Header) { - t.Fatalf("got %#v; want %#v", h, tt.Header) - } - s := h.String() - if strings.Contains(s, ",") { - t.Fatalf("should be space-separated values: %s", s) - } - } -} diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go deleted file mode 100644 index a5052e32..00000000 --- a/vendor/golang.org/x/net/ipv4/helper.go +++ /dev/null @@ -1,63 +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 ipv4 - -import ( - "errors" - "net" -) - -var ( - errMissingAddress = errors.New("missing address") - errMissingHeader = errors.New("missing header") - errHeaderTooShort = errors.New("header too short") - errBufferTooShort = errors.New("buffer too short") - errInvalidConnType = errors.New("invalid conn type") - errOpNoSupport = errors.New("operation not supported") - errNoSuchInterface = errors.New("no such interface") - errNoSuchMulticastInterface = errors.New("no such multicast interface") - - // See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html. - freebsdVersion uint32 -) - -func boolint(b bool) int { - if b { - return 1 - } - return 0 -} - -func netAddrToIP4(a net.Addr) net.IP { - switch v := a.(type) { - case *net.UDPAddr: - if ip := v.IP.To4(); ip != nil { - return ip - } - case *net.IPAddr: - if ip := v.IP.To4(); ip != nil { - return ip - } - } - return nil -} - -func opAddr(a net.Addr) net.Addr { - switch a.(type) { - case *net.TCPAddr: - if a == nil { - return nil - } - case *net.UDPAddr: - if a == nil { - return nil - } - case *net.IPAddr: - if a == nil { - return nil - } - } - return a -} diff --git a/vendor/golang.org/x/net/ipv4/iana.go b/vendor/golang.org/x/net/ipv4/iana.go deleted file mode 100644 index be10c948..00000000 --- a/vendor/golang.org/x/net/ipv4/iana.go +++ /dev/null @@ -1,34 +0,0 @@ -// go generate gen.go -// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -package ipv4 - -// Internet Control Message Protocol (ICMP) Parameters, Updated: 2013-04-19 -const ( - ICMPTypeEchoReply ICMPType = 0 // Echo Reply - ICMPTypeDestinationUnreachable ICMPType = 3 // Destination Unreachable - ICMPTypeRedirect ICMPType = 5 // Redirect - ICMPTypeEcho ICMPType = 8 // Echo - ICMPTypeRouterAdvertisement ICMPType = 9 // Router Advertisement - ICMPTypeRouterSolicitation ICMPType = 10 // Router Solicitation - ICMPTypeTimeExceeded ICMPType = 11 // Time Exceeded - ICMPTypeParameterProblem ICMPType = 12 // Parameter Problem - ICMPTypeTimestamp ICMPType = 13 // Timestamp - ICMPTypeTimestampReply ICMPType = 14 // Timestamp Reply - ICMPTypePhoturis ICMPType = 40 // Photuris -) - -// Internet Control Message Protocol (ICMP) Parameters, Updated: 2013-04-19 -var icmpTypes = map[ICMPType]string{ - 0: "echo reply", - 3: "destination unreachable", - 5: "redirect", - 8: "echo", - 9: "router advertisement", - 10: "router solicitation", - 11: "time exceeded", - 12: "parameter problem", - 13: "timestamp", - 14: "timestamp reply", - 40: "photuris", -} diff --git a/vendor/golang.org/x/net/ipv4/icmp.go b/vendor/golang.org/x/net/ipv4/icmp.go deleted file mode 100644 index 9902bb3d..00000000 --- a/vendor/golang.org/x/net/ipv4/icmp.go +++ /dev/null @@ -1,57 +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 ipv4 - -import "golang.org/x/net/internal/iana" - -// An ICMPType represents a type of ICMP message. -type ICMPType int - -func (typ ICMPType) String() string { - s, ok := icmpTypes[typ] - if !ok { - return "<nil>" - } - return s -} - -// Protocol returns the ICMPv4 protocol number. -func (typ ICMPType) Protocol() int { - return iana.ProtocolICMP -} - -// An ICMPFilter represents an ICMP message filter for incoming -// packets. The filter belongs to a packet delivery path on a host and -// it cannot interact with forwarding packets or tunnel-outer packets. -// -// Note: RFC 8200 defines a reasonable role model and it works not -// only for IPv6 but IPv4. A node means a device that implements IP. -// A router means a node that forwards IP packets not explicitly -// addressed to itself, and a host means a node that is not a router. -type ICMPFilter struct { - icmpFilter -} - -// Accept accepts incoming ICMP packets including the type field value -// typ. -func (f *ICMPFilter) Accept(typ ICMPType) { - f.accept(typ) -} - -// Block blocks incoming ICMP packets including the type field value -// typ. -func (f *ICMPFilter) Block(typ ICMPType) { - f.block(typ) -} - -// SetAll sets the filter action to the filter. -func (f *ICMPFilter) SetAll(block bool) { - f.setAll(block) -} - -// WillBlock reports whether the ICMP type will be blocked. -func (f *ICMPFilter) WillBlock(typ ICMPType) bool { - return f.willBlock(typ) -} diff --git a/vendor/golang.org/x/net/ipv4/icmp_linux.go b/vendor/golang.org/x/net/ipv4/icmp_linux.go deleted file mode 100644 index 6e1c5c80..00000000 --- a/vendor/golang.org/x/net/ipv4/icmp_linux.go +++ /dev/null @@ -1,25 +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 ipv4 - -func (f *icmpFilter) accept(typ ICMPType) { - f.Data &^= 1 << (uint32(typ) & 31) -} - -func (f *icmpFilter) block(typ ICMPType) { - f.Data |= 1 << (uint32(typ) & 31) -} - -func (f *icmpFilter) setAll(block bool) { - if block { - f.Data = 1<<32 - 1 - } else { - f.Data = 0 - } -} - -func (f *icmpFilter) willBlock(typ ICMPType) bool { - return f.Data&(1<<(uint32(typ)&31)) != 0 -} diff --git a/vendor/golang.org/x/net/ipv4/icmp_stub.go b/vendor/golang.org/x/net/ipv4/icmp_stub.go deleted file mode 100644 index 21bb29ab..00000000 --- a/vendor/golang.org/x/net/ipv4/icmp_stub.go +++ /dev/null @@ -1,25 +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. - -// +build !linux - -package ipv4 - -const sizeofICMPFilter = 0x0 - -type icmpFilter struct { -} - -func (f *icmpFilter) accept(typ ICMPType) { -} - -func (f *icmpFilter) block(typ ICMPType) { -} - -func (f *icmpFilter) setAll(block bool) { -} - -func (f *icmpFilter) willBlock(typ ICMPType) bool { - return false -} diff --git a/vendor/golang.org/x/net/ipv4/icmp_test.go b/vendor/golang.org/x/net/ipv4/icmp_test.go deleted file mode 100644 index 3324b54d..00000000 --- a/vendor/golang.org/x/net/ipv4/icmp_test.go +++ /dev/null @@ -1,95 +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 ipv4_test - -import ( - "net" - "reflect" - "runtime" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -var icmpStringTests = []struct { - in ipv4.ICMPType - out string -}{ - {ipv4.ICMPTypeDestinationUnreachable, "destination unreachable"}, - - {256, "<nil>"}, -} - -func TestICMPString(t *testing.T) { - for _, tt := range icmpStringTests { - s := tt.in.String() - if s != tt.out { - t.Errorf("got %s; want %s", s, tt.out) - } - } -} - -func TestICMPFilter(t *testing.T) { - switch runtime.GOOS { - case "linux": - default: - t.Skipf("not supported on %s", runtime.GOOS) - } - - var f ipv4.ICMPFilter - for _, toggle := range []bool{false, true} { - f.SetAll(toggle) - for _, typ := range []ipv4.ICMPType{ - ipv4.ICMPTypeDestinationUnreachable, - ipv4.ICMPTypeEchoReply, - ipv4.ICMPTypeTimeExceeded, - ipv4.ICMPTypeParameterProblem, - } { - f.Accept(typ) - if f.WillBlock(typ) { - t.Errorf("ipv4.ICMPFilter.Set(%v, false) failed", typ) - } - f.Block(typ) - if !f.WillBlock(typ) { - t.Errorf("ipv4.ICMPFilter.Set(%v, true) failed", typ) - } - } - } -} - -func TestSetICMPFilter(t *testing.T) { - switch runtime.GOOS { - case "linux": - default: - t.Skipf("not supported on %s", runtime.GOOS) - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - c, err := net.ListenPacket("ip4:icmp", "127.0.0.1") - if err != nil { - t.Fatal(err) - } - defer c.Close() - - p := ipv4.NewPacketConn(c) - - var f ipv4.ICMPFilter - f.SetAll(true) - f.Accept(ipv4.ICMPTypeEcho) - f.Accept(ipv4.ICMPTypeEchoReply) - if err := p.SetICMPFilter(&f); err != nil { - t.Fatal(err) - } - kf, err := p.ICMPFilter() - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(kf, &f) { - t.Fatalf("got %#v; want %#v", kf, f) - } -} diff --git a/vendor/golang.org/x/net/ipv4/multicast_test.go b/vendor/golang.org/x/net/ipv4/multicast_test.go deleted file mode 100644 index bcf49736..00000000 --- a/vendor/golang.org/x/net/ipv4/multicast_test.go +++ /dev/null @@ -1,334 +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 ipv4_test - -import ( - "bytes" - "net" - "os" - "runtime" - "testing" - "time" - - "golang.org/x/net/icmp" - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -var packetConnReadWriteMulticastUDPTests = []struct { - addr string - grp, src *net.UDPAddr -}{ - {"224.0.0.0:0", &net.UDPAddr{IP: net.IPv4(224, 0, 0, 254)}, nil}, // see RFC 4727 - - {"232.0.1.0:0", &net.UDPAddr{IP: net.IPv4(232, 0, 1, 254)}, &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1)}}, // see RFC 5771 -} - -func TestPacketConnReadWriteMulticastUDP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "solaris", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagMulticast|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - for _, tt := range packetConnReadWriteMulticastUDPTests { - c, err := net.ListenPacket("udp4", tt.addr) - if err != nil { - t.Fatal(err) - } - defer c.Close() - - grp := *tt.grp - grp.Port = c.LocalAddr().(*net.UDPAddr).Port - p := ipv4.NewPacketConn(c) - defer p.Close() - if tt.src == nil { - if err := p.JoinGroup(ifi, &grp); err != nil { - t.Fatal(err) - } - defer p.LeaveGroup(ifi, &grp) - } else { - if err := p.JoinSourceSpecificGroup(ifi, &grp, tt.src); err != nil { - switch runtime.GOOS { - case "freebsd", "linux": - default: // platforms that don't support IGMPv2/3 fail here - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - defer p.LeaveSourceSpecificGroup(ifi, &grp, tt.src) - } - if err := p.SetMulticastInterface(ifi); err != nil { - t.Fatal(err) - } - if _, err := p.MulticastInterface(); err != nil { - t.Fatal(err) - } - if err := p.SetMulticastLoopback(true); err != nil { - t.Fatal(err) - } - if _, err := p.MulticastLoopback(); err != nil { - t.Fatal(err) - } - cf := ipv4.FlagTTL | ipv4.FlagDst | ipv4.FlagInterface - wb := []byte("HELLO-R-U-THERE") - - for i, toggle := range []bool{true, false, true} { - if err := p.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - if err := p.SetDeadline(time.Now().Add(200 * time.Millisecond)); err != nil { - t.Fatal(err) - } - p.SetMulticastTTL(i + 1) - if n, err := p.WriteTo(wb, nil, &grp); err != nil { - t.Fatal(err) - } else if n != len(wb) { - t.Fatalf("got %v; want %v", n, len(wb)) - } - rb := make([]byte, 128) - if n, _, _, err := p.ReadFrom(rb); err != nil { - t.Fatal(err) - } else if !bytes.Equal(rb[:n], wb) { - t.Fatalf("got %v; want %v", rb[:n], wb) - } - } - } -} - -var packetConnReadWriteMulticastICMPTests = []struct { - grp, src *net.IPAddr -}{ - {&net.IPAddr{IP: net.IPv4(224, 0, 0, 254)}, nil}, // see RFC 4727 - - {&net.IPAddr{IP: net.IPv4(232, 0, 1, 254)}, &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)}}, // see RFC 5771 -} - -func TestPacketConnReadWriteMulticastICMP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "solaris", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagMulticast|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - for _, tt := range packetConnReadWriteMulticastICMPTests { - c, err := net.ListenPacket("ip4:icmp", "0.0.0.0") - if err != nil { - t.Fatal(err) - } - defer c.Close() - - p := ipv4.NewPacketConn(c) - defer p.Close() - if tt.src == nil { - if err := p.JoinGroup(ifi, tt.grp); err != nil { - t.Fatal(err) - } - defer p.LeaveGroup(ifi, tt.grp) - } else { - if err := p.JoinSourceSpecificGroup(ifi, tt.grp, tt.src); err != nil { - switch runtime.GOOS { - case "freebsd", "linux": - default: // platforms that don't support IGMPv2/3 fail here - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - defer p.LeaveSourceSpecificGroup(ifi, tt.grp, tt.src) - } - if err := p.SetMulticastInterface(ifi); err != nil { - t.Fatal(err) - } - if _, err := p.MulticastInterface(); err != nil { - t.Fatal(err) - } - if err := p.SetMulticastLoopback(true); err != nil { - t.Fatal(err) - } - if _, err := p.MulticastLoopback(); err != nil { - t.Fatal(err) - } - cf := ipv4.FlagDst | ipv4.FlagInterface - if runtime.GOOS != "solaris" { - // Solaris never allows to modify ICMP properties. - cf |= ipv4.FlagTTL - } - - for i, toggle := range []bool{true, false, true} { - wb, err := (&icmp.Message{ - Type: ipv4.ICMPTypeEcho, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, Seq: i + 1, - Data: []byte("HELLO-R-U-THERE"), - }, - }).Marshal(nil) - if err != nil { - t.Fatal(err) - } - if err := p.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - if err := p.SetDeadline(time.Now().Add(200 * time.Millisecond)); err != nil { - t.Fatal(err) - } - p.SetMulticastTTL(i + 1) - if n, err := p.WriteTo(wb, nil, tt.grp); err != nil { - t.Fatal(err) - } else if n != len(wb) { - t.Fatalf("got %v; want %v", n, len(wb)) - } - rb := make([]byte, 128) - if n, _, _, err := p.ReadFrom(rb); err != nil { - t.Fatal(err) - } else { - m, err := icmp.ParseMessage(iana.ProtocolICMP, rb[:n]) - if err != nil { - t.Fatal(err) - } - switch { - case m.Type == ipv4.ICMPTypeEchoReply && m.Code == 0: // net.inet.icmp.bmcastecho=1 - case m.Type == ipv4.ICMPTypeEcho && m.Code == 0: // net.inet.icmp.bmcastecho=0 - default: - t.Fatalf("got type=%v, code=%v; want type=%v, code=%v", m.Type, m.Code, ipv4.ICMPTypeEchoReply, 0) - } - } - } - } -} - -var rawConnReadWriteMulticastICMPTests = []struct { - grp, src *net.IPAddr -}{ - {&net.IPAddr{IP: net.IPv4(224, 0, 0, 254)}, nil}, // see RFC 4727 - - {&net.IPAddr{IP: net.IPv4(232, 0, 1, 254)}, &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)}}, // see RFC 5771 -} - -func TestRawConnReadWriteMulticastICMP(t *testing.T) { - if testing.Short() { - t.Skip("to avoid external network") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagMulticast|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - for _, tt := range rawConnReadWriteMulticastICMPTests { - c, err := net.ListenPacket("ip4:icmp", "0.0.0.0") - if err != nil { - t.Fatal(err) - } - defer c.Close() - - r, err := ipv4.NewRawConn(c) - if err != nil { - t.Fatal(err) - } - defer r.Close() - if tt.src == nil { - if err := r.JoinGroup(ifi, tt.grp); err != nil { - t.Fatal(err) - } - defer r.LeaveGroup(ifi, tt.grp) - } else { - if err := r.JoinSourceSpecificGroup(ifi, tt.grp, tt.src); err != nil { - switch runtime.GOOS { - case "freebsd", "linux": - default: // platforms that don't support IGMPv2/3 fail here - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - defer r.LeaveSourceSpecificGroup(ifi, tt.grp, tt.src) - } - if err := r.SetMulticastInterface(ifi); err != nil { - t.Fatal(err) - } - if _, err := r.MulticastInterface(); err != nil { - t.Fatal(err) - } - if err := r.SetMulticastLoopback(true); err != nil { - t.Fatal(err) - } - if _, err := r.MulticastLoopback(); err != nil { - t.Fatal(err) - } - cf := ipv4.FlagTTL | ipv4.FlagDst | ipv4.FlagInterface - - for i, toggle := range []bool{true, false, true} { - wb, err := (&icmp.Message{ - Type: ipv4.ICMPTypeEcho, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, Seq: i + 1, - Data: []byte("HELLO-R-U-THERE"), - }, - }).Marshal(nil) - if err != nil { - t.Fatal(err) - } - wh := &ipv4.Header{ - Version: ipv4.Version, - Len: ipv4.HeaderLen, - TOS: i + 1, - TotalLen: ipv4.HeaderLen + len(wb), - Protocol: 1, - Dst: tt.grp.IP, - } - if err := r.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - if err := r.SetDeadline(time.Now().Add(200 * time.Millisecond)); err != nil { - t.Fatal(err) - } - r.SetMulticastTTL(i + 1) - if err := r.WriteTo(wh, wb, nil); err != nil { - t.Fatal(err) - } - rb := make([]byte, ipv4.HeaderLen+128) - if rh, b, _, err := r.ReadFrom(rb); err != nil { - t.Fatal(err) - } else { - m, err := icmp.ParseMessage(iana.ProtocolICMP, b) - if err != nil { - t.Fatal(err) - } - switch { - case (rh.Dst.IsLoopback() || rh.Dst.IsLinkLocalUnicast() || rh.Dst.IsGlobalUnicast()) && m.Type == ipv4.ICMPTypeEchoReply && m.Code == 0: // net.inet.icmp.bmcastecho=1 - case rh.Dst.IsMulticast() && m.Type == ipv4.ICMPTypeEcho && m.Code == 0: // net.inet.icmp.bmcastecho=0 - default: - t.Fatalf("got type=%v, code=%v; want type=%v, code=%v", m.Type, m.Code, ipv4.ICMPTypeEchoReply, 0) - } - } - } - } -} diff --git a/vendor/golang.org/x/net/ipv4/multicastlistener_test.go b/vendor/golang.org/x/net/ipv4/multicastlistener_test.go deleted file mode 100644 index e43fbbe0..00000000 --- a/vendor/golang.org/x/net/ipv4/multicastlistener_test.go +++ /dev/null @@ -1,265 +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 ipv4_test - -import ( - "net" - "runtime" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -var udpMultipleGroupListenerTests = []net.Addr{ - &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}, // see RFC 4727 - &net.UDPAddr{IP: net.IPv4(224, 0, 0, 250)}, - &net.UDPAddr{IP: net.IPv4(224, 0, 0, 254)}, -} - -func TestUDPSinglePacketConnWithMultipleGroupListeners(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if testing.Short() { - t.Skip("to avoid external network") - } - - for _, gaddr := range udpMultipleGroupListenerTests { - c, err := net.ListenPacket("udp4", "0.0.0.0:0") // wildcard address with no reusable port - if err != nil { - t.Fatal(err) - } - defer c.Close() - - p := ipv4.NewPacketConn(c) - var mift []*net.Interface - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - for i, ifi := range ift { - if _, ok := nettest.IsMulticastCapable("ip4", &ifi); !ok { - continue - } - if err := p.JoinGroup(&ifi, gaddr); err != nil { - t.Fatal(err) - } - mift = append(mift, &ift[i]) - } - for _, ifi := range mift { - if err := p.LeaveGroup(ifi, gaddr); err != nil { - t.Fatal(err) - } - } - } -} - -func TestUDPMultiplePacketConnWithMultipleGroupListeners(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if testing.Short() { - t.Skip("to avoid external network") - } - - for _, gaddr := range udpMultipleGroupListenerTests { - c1, err := net.ListenPacket("udp4", "224.0.0.0:0") // wildcard address with reusable port - if err != nil { - t.Fatal(err) - } - defer c1.Close() - _, port, err := net.SplitHostPort(c1.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - c2, err := net.ListenPacket("udp4", net.JoinHostPort("224.0.0.0", port)) // wildcard address with reusable port - if err != nil { - t.Fatal(err) - } - defer c2.Close() - - var ps [2]*ipv4.PacketConn - ps[0] = ipv4.NewPacketConn(c1) - ps[1] = ipv4.NewPacketConn(c2) - var mift []*net.Interface - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - for i, ifi := range ift { - if _, ok := nettest.IsMulticastCapable("ip4", &ifi); !ok { - continue - } - for _, p := range ps { - if err := p.JoinGroup(&ifi, gaddr); err != nil { - t.Fatal(err) - } - } - mift = append(mift, &ift[i]) - } - for _, ifi := range mift { - for _, p := range ps { - if err := p.LeaveGroup(ifi, gaddr); err != nil { - t.Fatal(err) - } - } - } - } -} - -func TestUDPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if testing.Short() { - t.Skip("to avoid external network") - } - - gaddr := net.IPAddr{IP: net.IPv4(224, 0, 0, 254)} // see RFC 4727 - type ml struct { - c *ipv4.PacketConn - ifi *net.Interface - } - var mlt []*ml - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - port := "0" - for i, ifi := range ift { - ip, ok := nettest.IsMulticastCapable("ip4", &ifi) - if !ok { - continue - } - c, err := net.ListenPacket("udp4", net.JoinHostPort(ip.String(), port)) // unicast address with non-reusable port - if err != nil { - // The listen may fail when the serivce is - // already in use, but it's fine because the - // purpose of this is not to test the - // bookkeeping of IP control block inside the - // kernel. - t.Log(err) - continue - } - defer c.Close() - if port == "0" { - _, port, err = net.SplitHostPort(c.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - } - p := ipv4.NewPacketConn(c) - if err := p.JoinGroup(&ifi, &gaddr); err != nil { - t.Fatal(err) - } - mlt = append(mlt, &ml{p, &ift[i]}) - } - for _, m := range mlt { - if err := m.c.LeaveGroup(m.ifi, &gaddr); err != nil { - t.Fatal(err) - } - } -} - -func TestIPSingleRawConnWithSingleGroupListener(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if testing.Short() { - t.Skip("to avoid external network") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - c, err := net.ListenPacket("ip4:icmp", "0.0.0.0") // wildcard address - if err != nil { - t.Fatal(err) - } - defer c.Close() - - r, err := ipv4.NewRawConn(c) - if err != nil { - t.Fatal(err) - } - gaddr := net.IPAddr{IP: net.IPv4(224, 0, 0, 254)} // see RFC 4727 - var mift []*net.Interface - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - for i, ifi := range ift { - if _, ok := nettest.IsMulticastCapable("ip4", &ifi); !ok { - continue - } - if err := r.JoinGroup(&ifi, &gaddr); err != nil { - t.Fatal(err) - } - mift = append(mift, &ift[i]) - } - for _, ifi := range mift { - if err := r.LeaveGroup(ifi, &gaddr); err != nil { - t.Fatal(err) - } - } -} - -func TestIPPerInterfaceSingleRawConnWithSingleGroupListener(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if testing.Short() { - t.Skip("to avoid external network") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - gaddr := net.IPAddr{IP: net.IPv4(224, 0, 0, 254)} // see RFC 4727 - type ml struct { - c *ipv4.RawConn - ifi *net.Interface - } - var mlt []*ml - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - for i, ifi := range ift { - ip, ok := nettest.IsMulticastCapable("ip4", &ifi) - if !ok { - continue - } - c, err := net.ListenPacket("ip4:253", ip.String()) // unicast address - if err != nil { - t.Fatal(err) - } - defer c.Close() - r, err := ipv4.NewRawConn(c) - if err != nil { - t.Fatal(err) - } - if err := r.JoinGroup(&ifi, &gaddr); err != nil { - t.Fatal(err) - } - mlt = append(mlt, &ml{r, &ift[i]}) - } - for _, m := range mlt { - if err := m.c.LeaveGroup(m.ifi, &gaddr); err != nil { - t.Fatal(err) - } - } -} diff --git a/vendor/golang.org/x/net/ipv4/multicastsockopt_test.go b/vendor/golang.org/x/net/ipv4/multicastsockopt_test.go deleted file mode 100644 index f7efac24..00000000 --- a/vendor/golang.org/x/net/ipv4/multicastsockopt_test.go +++ /dev/null @@ -1,195 +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 ipv4_test - -import ( - "net" - "runtime" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -var packetConnMulticastSocketOptionTests = []struct { - net, proto, addr string - grp, src net.Addr -}{ - {"udp4", "", "224.0.0.0:0", &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}, nil}, // see RFC 4727 - {"ip4", ":icmp", "0.0.0.0", &net.IPAddr{IP: net.IPv4(224, 0, 0, 250)}, nil}, // see RFC 4727 - - {"udp4", "", "232.0.0.0:0", &net.UDPAddr{IP: net.IPv4(232, 0, 1, 249)}, &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1)}}, // see RFC 5771 - {"ip4", ":icmp", "0.0.0.0", &net.IPAddr{IP: net.IPv4(232, 0, 1, 250)}, &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1)}}, // see RFC 5771 -} - -func TestPacketConnMulticastSocketOptions(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9": - t.Skipf("not supported on %s", runtime.GOOS) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagMulticast|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - m, ok := nettest.SupportsRawIPSocket() - for _, tt := range packetConnMulticastSocketOptionTests { - if tt.net == "ip4" && !ok { - t.Log(m) - continue - } - c, err := net.ListenPacket(tt.net+tt.proto, tt.addr) - if err != nil { - t.Fatal(err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - defer p.Close() - - if tt.src == nil { - testMulticastSocketOptions(t, p, ifi, tt.grp) - } else { - testSourceSpecificMulticastSocketOptions(t, p, ifi, tt.grp, tt.src) - } - } -} - -var rawConnMulticastSocketOptionTests = []struct { - grp, src net.Addr -}{ - {&net.IPAddr{IP: net.IPv4(224, 0, 0, 250)}, nil}, // see RFC 4727 - - {&net.IPAddr{IP: net.IPv4(232, 0, 1, 250)}, &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)}}, // see RFC 5771 -} - -func TestRawConnMulticastSocketOptions(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9": - t.Skipf("not supported on %s", runtime.GOOS) - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagMulticast|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - for _, tt := range rawConnMulticastSocketOptionTests { - c, err := net.ListenPacket("ip4:icmp", "0.0.0.0") - if err != nil { - t.Fatal(err) - } - defer c.Close() - r, err := ipv4.NewRawConn(c) - if err != nil { - t.Fatal(err) - } - defer r.Close() - - if tt.src == nil { - testMulticastSocketOptions(t, r, ifi, tt.grp) - } else { - testSourceSpecificMulticastSocketOptions(t, r, ifi, tt.grp, tt.src) - } - } -} - -type testIPv4MulticastConn interface { - MulticastTTL() (int, error) - SetMulticastTTL(ttl int) error - MulticastLoopback() (bool, error) - SetMulticastLoopback(bool) error - JoinGroup(*net.Interface, net.Addr) error - LeaveGroup(*net.Interface, net.Addr) error - JoinSourceSpecificGroup(*net.Interface, net.Addr, net.Addr) error - LeaveSourceSpecificGroup(*net.Interface, net.Addr, net.Addr) error - ExcludeSourceSpecificGroup(*net.Interface, net.Addr, net.Addr) error - IncludeSourceSpecificGroup(*net.Interface, net.Addr, net.Addr) error -} - -func testMulticastSocketOptions(t *testing.T, c testIPv4MulticastConn, ifi *net.Interface, grp net.Addr) { - const ttl = 255 - if err := c.SetMulticastTTL(ttl); err != nil { - t.Error(err) - return - } - if v, err := c.MulticastTTL(); err != nil { - t.Error(err) - return - } else if v != ttl { - t.Errorf("got %v; want %v", v, ttl) - return - } - - for _, toggle := range []bool{true, false} { - if err := c.SetMulticastLoopback(toggle); err != nil { - t.Error(err) - return - } - if v, err := c.MulticastLoopback(); err != nil { - t.Error(err) - return - } else if v != toggle { - t.Errorf("got %v; want %v", v, toggle) - return - } - } - - if err := c.JoinGroup(ifi, grp); err != nil { - t.Error(err) - return - } - if err := c.LeaveGroup(ifi, grp); err != nil { - t.Error(err) - return - } -} - -func testSourceSpecificMulticastSocketOptions(t *testing.T, c testIPv4MulticastConn, ifi *net.Interface, grp, src net.Addr) { - // MCAST_JOIN_GROUP -> MCAST_BLOCK_SOURCE -> MCAST_UNBLOCK_SOURCE -> MCAST_LEAVE_GROUP - if err := c.JoinGroup(ifi, grp); err != nil { - t.Error(err) - return - } - if err := c.ExcludeSourceSpecificGroup(ifi, grp, src); err != nil { - switch runtime.GOOS { - case "freebsd", "linux": - default: // platforms that don't support IGMPv2/3 fail here - t.Logf("not supported on %s", runtime.GOOS) - return - } - t.Error(err) - return - } - if err := c.IncludeSourceSpecificGroup(ifi, grp, src); err != nil { - t.Error(err) - return - } - if err := c.LeaveGroup(ifi, grp); err != nil { - t.Error(err) - return - } - - // MCAST_JOIN_SOURCE_GROUP -> MCAST_LEAVE_SOURCE_GROUP - if err := c.JoinSourceSpecificGroup(ifi, grp, src); err != nil { - t.Error(err) - return - } - if err := c.LeaveSourceSpecificGroup(ifi, grp, src); err != nil { - t.Error(err) - return - } - - // MCAST_JOIN_SOURCE_GROUP -> MCAST_LEAVE_GROUP - if err := c.JoinSourceSpecificGroup(ifi, grp, src); err != nil { - t.Error(err) - return - } - if err := c.LeaveGroup(ifi, grp); err != nil { - t.Error(err) - return - } -} diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go deleted file mode 100644 index f00f5b05..00000000 --- a/vendor/golang.org/x/net/ipv4/packet.go +++ /dev/null @@ -1,69 +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 ipv4 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ReadFrom and WriteTo methods of RawConn -// are not implemented. - -// A packetHandler represents the IPv4 datagram handler. -type packetHandler struct { - *net.IPConn - *socket.Conn - rawOpt -} - -func (c *packetHandler) ok() bool { return c != nil && c.IPConn != nil && c.Conn != nil } - -// ReadFrom reads an IPv4 datagram from the endpoint c, copying the -// datagram into b. It returns the received datagram as the IPv4 -// header h, the payload p and the control message cm. -func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { - if !c.ok() { - return nil, nil, nil, syscall.EINVAL - } - return c.readFrom(b) -} - -func slicePacket(b []byte) (h, p []byte, err error) { - if len(b) < HeaderLen { - return nil, nil, errHeaderTooShort - } - hdrlen := int(b[0]&0x0f) << 2 - return b[:hdrlen], b[hdrlen:], nil -} - -// WriteTo writes an IPv4 datagram through the endpoint c, copying the -// datagram from the IPv4 header h and the payload p. The control -// message cm allows the datagram path and the outgoing interface to be -// specified. Currently only Darwin and Linux support this. The cm -// may be nil if control of the outgoing datagram is not required. -// -// The IPv4 header h must contain appropriate fields that include: -// -// Version = <must be specified> -// Len = <must be specified> -// TOS = <must be specified> -// TotalLen = <must be specified> -// ID = platform sets an appropriate value if ID is zero -// FragOff = <must be specified> -// TTL = <must be specified> -// Protocol = <must be specified> -// Checksum = platform sets an appropriate value if Checksum is zero -// Src = platform sets an appropriate value if Src is nil -// Dst = <must be specified> -// Options = optional -func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error { - if !c.ok() { - return syscall.EINVAL - } - return c.writeTo(h, p, cm) -} diff --git a/vendor/golang.org/x/net/ipv4/packet_go1_8.go b/vendor/golang.org/x/net/ipv4/packet_go1_8.go deleted file mode 100644 index b47d1868..00000000 --- a/vendor/golang.org/x/net/ipv4/packet_go1_8.go +++ /dev/null @@ -1,56 +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. - -// +build !go1.9 - -package ipv4 - -import "net" - -func (c *packetHandler) readFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { - c.rawOpt.RLock() - oob := NewControlMessage(c.rawOpt.cflags) - c.rawOpt.RUnlock() - n, nn, _, src, err := c.ReadMsgIP(b, oob) - if err != nil { - return nil, nil, nil, err - } - var hs []byte - if hs, p, err = slicePacket(b[:n]); err != nil { - return nil, nil, nil, err - } - if h, err = ParseHeader(hs); err != nil { - return nil, nil, nil, err - } - if nn > 0 { - cm = new(ControlMessage) - if err := cm.Parse(oob[:nn]); err != nil { - return nil, nil, nil, err - } - } - if src != nil && cm != nil { - cm.Src = src.IP - } - return -} - -func (c *packetHandler) writeTo(h *Header, p []byte, cm *ControlMessage) error { - oob := cm.Marshal() - wh, err := h.Marshal() - if err != nil { - return err - } - dst := new(net.IPAddr) - if cm != nil { - if ip := cm.Dst.To4(); ip != nil { - dst.IP = ip - } - } - if dst.IP == nil { - dst.IP = h.Dst - } - wh = append(wh, p...) - _, _, err = c.WriteMsgIP(wh, oob, dst) - return err -} diff --git a/vendor/golang.org/x/net/ipv4/packet_go1_9.go b/vendor/golang.org/x/net/ipv4/packet_go1_9.go deleted file mode 100644 index 082c36d7..00000000 --- a/vendor/golang.org/x/net/ipv4/packet_go1_9.go +++ /dev/null @@ -1,67 +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. - -// +build go1.9 - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (c *packetHandler) readFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { - c.rawOpt.RLock() - m := socket.Message{ - Buffers: [][]byte{b}, - OOB: NewControlMessage(c.rawOpt.cflags), - } - c.rawOpt.RUnlock() - if err := c.RecvMsg(&m, 0); err != nil { - return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - var hs []byte - if hs, p, err = slicePacket(b[:m.N]); err != nil { - return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - if h, err = ParseHeader(hs); err != nil { - return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - if m.NN > 0 { - cm = new(ControlMessage) - if err := cm.Parse(m.OOB[:m.NN]); err != nil { - return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - } - if src, ok := m.Addr.(*net.IPAddr); ok && cm != nil { - cm.Src = src.IP - } - return -} - -func (c *packetHandler) writeTo(h *Header, p []byte, cm *ControlMessage) error { - m := socket.Message{ - OOB: cm.Marshal(), - } - wh, err := h.Marshal() - if err != nil { - return err - } - m.Buffers = [][]byte{wh, p} - dst := new(net.IPAddr) - if cm != nil { - if ip := cm.Dst.To4(); ip != nil { - dst.IP = ip - } - } - if dst.IP == nil { - dst.IP = h.Dst - } - m.Addr = dst - if err := c.SendMsg(&m, 0); err != nil { - return &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Addr: opAddr(dst), Err: err} - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv4/payload.go b/vendor/golang.org/x/net/ipv4/payload.go deleted file mode 100644 index f95f811a..00000000 --- a/vendor/golang.org/x/net/ipv4/payload.go +++ /dev/null @@ -1,23 +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 ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo -// methods of PacketConn is not implemented. - -// A payloadHandler represents the IPv4 datagram payload handler. -type payloadHandler struct { - net.PacketConn - *socket.Conn - rawOpt -} - -func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go deleted file mode 100644 index 3f06d760..00000000 --- a/vendor/golang.org/x/net/ipv4/payload_cmsg.go +++ /dev/null @@ -1,36 +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. - -// +build !nacl,!plan9,!windows - -package ipv4 - -import ( - "net" - "syscall" -) - -// ReadFrom reads a payload of the received IPv4 datagram, from the -// endpoint c, copying the payload into b. It returns the number of -// bytes copied into b, the control message cm and the source address -// src of the received datagram. -func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - if !c.ok() { - return 0, nil, nil, syscall.EINVAL - } - return c.readFrom(b) -} - -// WriteTo writes a payload of the IPv4 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the datagram path and the outgoing interface to be specified. -// Currently only Darwin and Linux support this. The cm may be nil if -// control of the outgoing datagram is not required. -func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - if !c.ok() { - return 0, syscall.EINVAL - } - return c.writeTo(b, cm, dst) -} diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go deleted file mode 100644 index d26ccd90..00000000 --- a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_8.go +++ /dev/null @@ -1,59 +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. - -// +build !go1.9 -// +build !nacl,!plan9,!windows - -package ipv4 - -import "net" - -func (c *payloadHandler) readFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - c.rawOpt.RLock() - oob := NewControlMessage(c.rawOpt.cflags) - c.rawOpt.RUnlock() - var nn int - switch c := c.PacketConn.(type) { - case *net.UDPConn: - if n, nn, _, src, err = c.ReadMsgUDP(b, oob); err != nil { - return 0, nil, nil, err - } - case *net.IPConn: - nb := make([]byte, maxHeaderLen+len(b)) - if n, nn, _, src, err = c.ReadMsgIP(nb, oob); err != nil { - return 0, nil, nil, err - } - hdrlen := int(nb[0]&0x0f) << 2 - copy(b, nb[hdrlen:]) - n -= hdrlen - default: - return 0, nil, nil, &net.OpError{Op: "read", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType} - } - if nn > 0 { - cm = new(ControlMessage) - if err = cm.Parse(oob[:nn]); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - } - if cm != nil { - cm.Src = netAddrToIP4(src) - } - return -} - -func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - oob := cm.Marshal() - if dst == nil { - return 0, &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errMissingAddress} - } - switch c := c.PacketConn.(type) { - case *net.UDPConn: - n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr)) - case *net.IPConn: - n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr)) - default: - return 0, &net.OpError{Op: "write", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Addr: opAddr(dst), Err: errInvalidConnType} - } - return -} diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go b/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go deleted file mode 100644 index 2f193118..00000000 --- a/vendor/golang.org/x/net/ipv4/payload_cmsg_go1_9.go +++ /dev/null @@ -1,67 +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. - -// +build go1.9 -// +build !nacl,!plan9,!windows - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (c *payloadHandler) readFrom(b []byte) (int, *ControlMessage, net.Addr, error) { - c.rawOpt.RLock() - m := socket.Message{ - OOB: NewControlMessage(c.rawOpt.cflags), - } - c.rawOpt.RUnlock() - switch c.PacketConn.(type) { - case *net.UDPConn: - m.Buffers = [][]byte{b} - if err := c.RecvMsg(&m, 0); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - case *net.IPConn: - h := make([]byte, HeaderLen) - m.Buffers = [][]byte{h, b} - if err := c.RecvMsg(&m, 0); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - hdrlen := int(h[0]&0x0f) << 2 - if hdrlen > len(h) { - d := hdrlen - len(h) - copy(b, b[d:]) - m.N -= d - } else { - m.N -= hdrlen - } - default: - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} - } - var cm *ControlMessage - if m.NN > 0 { - cm = new(ControlMessage) - if err := cm.Parse(m.OOB[:m.NN]); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - cm.Src = netAddrToIP4(m.Addr) - } - return m.N, cm, m.Addr, nil -} - -func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (int, error) { - m := socket.Message{ - Buffers: [][]byte{b}, - OOB: cm.Marshal(), - Addr: dst, - } - err := c.SendMsg(&m, 0) - if err != nil { - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} - } - return m.N, err -} diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go deleted file mode 100644 index 3926de70..00000000 --- a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +++ /dev/null @@ -1,42 +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. - -// +build nacl plan9 windows - -package ipv4 - -import ( - "net" - "syscall" -) - -// ReadFrom reads a payload of the received IPv4 datagram, from the -// endpoint c, copying the payload into b. It returns the number of -// bytes copied into b, the control message cm and the source address -// src of the received datagram. -func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - if !c.ok() { - return 0, nil, nil, syscall.EINVAL - } - if n, src, err = c.PacketConn.ReadFrom(b); err != nil { - return 0, nil, nil, err - } - return -} - -// WriteTo writes a payload of the IPv4 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the datagram path and the outgoing interface to be specified. -// Currently only Darwin and Linux support this. The cm may be nil if -// control of the outgoing datagram is not required. -func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - if !c.ok() { - return 0, syscall.EINVAL - } - if dst == nil { - return 0, errMissingAddress - } - return c.PacketConn.WriteTo(b, dst) -} diff --git a/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go b/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go deleted file mode 100644 index 1cd926e7..00000000 --- a/vendor/golang.org/x/net/ipv4/readwrite_go1_8_test.go +++ /dev/null @@ -1,248 +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. - -// +build !go1.9 - -package ipv4_test - -import ( - "bytes" - "fmt" - "net" - "runtime" - "strings" - "sync" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -func BenchmarkPacketConnReadWriteUnicast(b *testing.B) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - b.Skipf("not supported on %s", runtime.GOOS) - } - - payload := []byte("HELLO-R-U-THERE") - iph, err := (&ipv4.Header{ - Version: ipv4.Version, - Len: ipv4.HeaderLen, - TotalLen: ipv4.HeaderLen + len(payload), - TTL: 1, - Protocol: iana.ProtocolReserved, - Src: net.IPv4(192, 0, 2, 1), - Dst: net.IPv4(192, 0, 2, 254), - }).Marshal() - if err != nil { - b.Fatal(err) - } - greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00} - datagram := append(greh, append(iph, payload...)...) - bb := make([]byte, 128) - cm := ipv4.ControlMessage{ - Src: net.IPv4(127, 0, 0, 1), - } - if ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback); ifi != nil { - cm.IfIndex = ifi.Index - } - - b.Run("UDP", func(b *testing.B) { - c, err := nettest.NewLocalPacketListener("udp4") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - dst := c.LocalAddr() - cf := ipv4.FlagTTL | ipv4.FlagInterface - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - b.Run("Net", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(payload, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("ToFrom", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(payload, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - }) - b.Run("IP", func(b *testing.B) { - switch runtime.GOOS { - case "netbsd": - b.Skip("need to configure gre on netbsd") - case "openbsd": - b.Skip("net.inet.gre.allow=0 by default on openbsd") - } - - c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - dst := c.LocalAddr() - cf := ipv4.FlagTTL | ipv4.FlagInterface - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - b.Run("Net", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(datagram, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("ToFrom", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(datagram, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - }) -} - -func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - - payload := []byte("HELLO-R-U-THERE") - iph, err := (&ipv4.Header{ - Version: ipv4.Version, - Len: ipv4.HeaderLen, - TotalLen: ipv4.HeaderLen + len(payload), - TTL: 1, - Protocol: iana.ProtocolReserved, - Src: net.IPv4(192, 0, 2, 1), - Dst: net.IPv4(192, 0, 2, 254), - }).Marshal() - if err != nil { - t.Fatal(err) - } - greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00} - datagram := append(greh, append(iph, payload...)...) - - t.Run("UDP", func(t *testing.T) { - c, err := nettest.NewLocalPacketListener("udp4") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - t.Run("ToFrom", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr()) - }) - }) - t.Run("IP", func(t *testing.T) { - switch runtime.GOOS { - case "netbsd": - t.Skip("need to configure gre on netbsd") - case "openbsd": - t.Skip("net.inet.gre.allow=0 by default on openbsd") - } - - c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - t.Run("ToFrom", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr()) - }) - }) -} - -func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv4.PacketConn, data []byte, dst net.Addr) { - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface - - if err := p.SetControlMessage(cf, true); err != nil { // probe before test - if nettest.ProtocolNotSupported(err) { - t.Skipf("not supported on %s", runtime.GOOS) - } - t.Fatal(err) - } - - var wg sync.WaitGroup - reader := func() { - defer wg.Done() - b := make([]byte, 128) - n, cm, _, err := p.ReadFrom(b) - if err != nil { - t.Error(err) - return - } - if !bytes.Equal(b[:n], data) { - t.Errorf("got %#v; want %#v", b[:n], data) - return - } - s := cm.String() - if strings.Contains(s, ",") { - t.Errorf("should be space-separated values: %s", s) - return - } - } - writer := func(toggle bool) { - defer wg.Done() - cm := ipv4.ControlMessage{ - Src: net.IPv4(127, 0, 0, 1), - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if err := p.SetControlMessage(cf, toggle); err != nil { - t.Error(err) - return - } - n, err := p.WriteTo(data, &cm, dst) - if err != nil { - t.Error(err) - return - } - if n != len(data) { - t.Errorf("got %d; want %d", n, len(data)) - return - } - } - - const N = 10 - wg.Add(N) - for i := 0; i < N; i++ { - go reader() - } - wg.Add(2 * N) - for i := 0; i < 2*N; i++ { - go writer(i%2 != 0) - - } - wg.Add(N) - for i := 0; i < N; i++ { - go reader() - } - wg.Wait() -} diff --git a/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go b/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go deleted file mode 100644 index 365de022..00000000 --- a/vendor/golang.org/x/net/ipv4/readwrite_go1_9_test.go +++ /dev/null @@ -1,388 +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. - -// +build go1.9 - -package ipv4_test - -import ( - "bytes" - "fmt" - "net" - "runtime" - "strings" - "sync" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -func BenchmarkPacketConnReadWriteUnicast(b *testing.B) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - b.Skipf("not supported on %s", runtime.GOOS) - } - - payload := []byte("HELLO-R-U-THERE") - iph, err := (&ipv4.Header{ - Version: ipv4.Version, - Len: ipv4.HeaderLen, - TotalLen: ipv4.HeaderLen + len(payload), - TTL: 1, - Protocol: iana.ProtocolReserved, - Src: net.IPv4(192, 0, 2, 1), - Dst: net.IPv4(192, 0, 2, 254), - }).Marshal() - if err != nil { - b.Fatal(err) - } - greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00} - datagram := append(greh, append(iph, payload...)...) - bb := make([]byte, 128) - cm := ipv4.ControlMessage{ - Src: net.IPv4(127, 0, 0, 1), - } - if ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback); ifi != nil { - cm.IfIndex = ifi.Index - } - - b.Run("UDP", func(b *testing.B) { - c, err := nettest.NewLocalPacketListener("udp4") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - dst := c.LocalAddr() - cf := ipv4.FlagTTL | ipv4.FlagInterface - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - wms := []ipv4.Message{ - { - Buffers: [][]byte{payload}, - Addr: dst, - OOB: cm.Marshal(), - }, - } - rms := []ipv4.Message{ - { - Buffers: [][]byte{bb}, - OOB: ipv4.NewControlMessage(cf), - }, - } - b.Run("Net", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(payload, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("ToFrom", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(payload, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("Batch", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteBatch(wms, 0); err != nil { - b.Fatal(err) - } - if _, err := p.ReadBatch(rms, 0); err != nil { - b.Fatal(err) - } - } - }) - }) - b.Run("IP", func(b *testing.B) { - switch runtime.GOOS { - case "netbsd": - b.Skip("need to configure gre on netbsd") - case "openbsd": - b.Skip("net.inet.gre.allow=0 by default on openbsd") - } - - c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - dst := c.LocalAddr() - cf := ipv4.FlagTTL | ipv4.FlagInterface - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - wms := []ipv4.Message{ - { - Buffers: [][]byte{datagram}, - Addr: dst, - OOB: cm.Marshal(), - }, - } - rms := []ipv4.Message{ - { - Buffers: [][]byte{bb}, - OOB: ipv4.NewControlMessage(cf), - }, - } - b.Run("Net", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(datagram, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("ToFrom", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(datagram, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("Batch", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteBatch(wms, 0); err != nil { - b.Fatal(err) - } - if _, err := p.ReadBatch(rms, 0); err != nil { - b.Fatal(err) - } - } - }) - }) -} - -func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - - payload := []byte("HELLO-R-U-THERE") - iph, err := (&ipv4.Header{ - Version: ipv4.Version, - Len: ipv4.HeaderLen, - TotalLen: ipv4.HeaderLen + len(payload), - TTL: 1, - Protocol: iana.ProtocolReserved, - Src: net.IPv4(192, 0, 2, 1), - Dst: net.IPv4(192, 0, 2, 254), - }).Marshal() - if err != nil { - t.Fatal(err) - } - greh := []byte{0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00} - datagram := append(greh, append(iph, payload...)...) - - t.Run("UDP", func(t *testing.T) { - c, err := nettest.NewLocalPacketListener("udp4") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - t.Run("ToFrom", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), false) - }) - t.Run("Batch", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), true) - }) - }) - t.Run("IP", func(t *testing.T) { - switch runtime.GOOS { - case "netbsd": - t.Skip("need to configure gre on netbsd") - case "openbsd": - t.Skip("net.inet.gre.allow=0 by default on openbsd") - } - - c, err := net.ListenPacket(fmt.Sprintf("ip4:%d", iana.ProtocolGRE), "127.0.0.1") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - t.Run("ToFrom", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), false) - }) - t.Run("Batch", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), true) - }) - }) -} - -func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv4.PacketConn, data []byte, dst net.Addr, batch bool) { - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface - - if err := p.SetControlMessage(cf, true); err != nil { // probe before test - if nettest.ProtocolNotSupported(err) { - t.Skipf("not supported on %s", runtime.GOOS) - } - t.Fatal(err) - } - - var wg sync.WaitGroup - reader := func() { - defer wg.Done() - b := make([]byte, 128) - n, cm, _, err := p.ReadFrom(b) - if err != nil { - t.Error(err) - return - } - if !bytes.Equal(b[:n], data) { - t.Errorf("got %#v; want %#v", b[:n], data) - return - } - s := cm.String() - if strings.Contains(s, ",") { - t.Errorf("should be space-separated values: %s", s) - return - } - } - batchReader := func() { - defer wg.Done() - ms := []ipv4.Message{ - { - Buffers: [][]byte{make([]byte, 128)}, - OOB: ipv4.NewControlMessage(cf), - }, - } - n, err := p.ReadBatch(ms, 0) - if err != nil { - t.Error(err) - return - } - if n != len(ms) { - t.Errorf("got %d; want %d", n, len(ms)) - return - } - var cm ipv4.ControlMessage - if err := cm.Parse(ms[0].OOB[:ms[0].NN]); err != nil { - t.Error(err) - return - } - var b []byte - if _, ok := dst.(*net.IPAddr); ok { - var h ipv4.Header - if err := h.Parse(ms[0].Buffers[0][:ms[0].N]); err != nil { - t.Error(err) - return - } - b = ms[0].Buffers[0][h.Len:ms[0].N] - } else { - b = ms[0].Buffers[0][:ms[0].N] - } - if !bytes.Equal(b, data) { - t.Errorf("got %#v; want %#v", b, data) - return - } - s := cm.String() - if strings.Contains(s, ",") { - t.Errorf("should be space-separated values: %s", s) - return - } - } - writer := func(toggle bool) { - defer wg.Done() - cm := ipv4.ControlMessage{ - Src: net.IPv4(127, 0, 0, 1), - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if err := p.SetControlMessage(cf, toggle); err != nil { - t.Error(err) - return - } - n, err := p.WriteTo(data, &cm, dst) - if err != nil { - t.Error(err) - return - } - if n != len(data) { - t.Errorf("got %d; want %d", n, len(data)) - return - } - } - batchWriter := func(toggle bool) { - defer wg.Done() - cm := ipv4.ControlMessage{ - Src: net.IPv4(127, 0, 0, 1), - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if err := p.SetControlMessage(cf, toggle); err != nil { - t.Error(err) - return - } - ms := []ipv4.Message{ - { - Buffers: [][]byte{data}, - OOB: cm.Marshal(), - Addr: dst, - }, - } - n, err := p.WriteBatch(ms, 0) - if err != nil { - t.Error(err) - return - } - if n != len(ms) { - t.Errorf("got %d; want %d", n, len(ms)) - return - } - if ms[0].N != len(data) { - t.Errorf("got %d; want %d", ms[0].N, len(data)) - return - } - } - - const N = 10 - wg.Add(N) - for i := 0; i < N; i++ { - if batch { - go batchReader() - } else { - go reader() - } - } - wg.Add(2 * N) - for i := 0; i < 2*N; i++ { - if batch { - go batchWriter(i%2 != 0) - } else { - go writer(i%2 != 0) - } - - } - wg.Add(N) - for i := 0; i < N; i++ { - if batch { - go batchReader() - } else { - go reader() - } - } - wg.Wait() -} diff --git a/vendor/golang.org/x/net/ipv4/readwrite_test.go b/vendor/golang.org/x/net/ipv4/readwrite_test.go deleted file mode 100644 index 3896a8ae..00000000 --- a/vendor/golang.org/x/net/ipv4/readwrite_test.go +++ /dev/null @@ -1,140 +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 ipv4_test - -import ( - "bytes" - "net" - "runtime" - "strings" - "sync" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -func BenchmarkReadWriteUnicast(b *testing.B) { - c, err := nettest.NewLocalPacketListener("udp4") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - - dst := c.LocalAddr() - wb, rb := []byte("HELLO-R-U-THERE"), make([]byte, 128) - - b.Run("NetUDP", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(wb, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(rb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("IPv4UDP", func(b *testing.B) { - p := ipv4.NewPacketConn(c) - cf := ipv4.FlagTTL | ipv4.FlagInterface - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - cm := ipv4.ControlMessage{TTL: 1} - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - if ifi != nil { - cm.IfIndex = ifi.Index - } - - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(wb, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(rb); err != nil { - b.Fatal(err) - } - } - }) -} - -func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - - c, err := nettest.NewLocalPacketListener("udp4") - if err != nil { - t.Fatal(err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - defer p.Close() - - dst := c.LocalAddr() - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - cf := ipv4.FlagTTL | ipv4.FlagSrc | ipv4.FlagDst | ipv4.FlagInterface - wb := []byte("HELLO-R-U-THERE") - - if err := p.SetControlMessage(cf, true); err != nil { // probe before test - if nettest.ProtocolNotSupported(err) { - t.Skipf("not supported on %s", runtime.GOOS) - } - t.Fatal(err) - } - - var wg sync.WaitGroup - reader := func() { - defer wg.Done() - rb := make([]byte, 128) - if n, cm, _, err := p.ReadFrom(rb); err != nil { - t.Error(err) - return - } else if !bytes.Equal(rb[:n], wb) { - t.Errorf("got %v; want %v", rb[:n], wb) - return - } else { - s := cm.String() - if strings.Contains(s, ",") { - t.Errorf("should be space-separated values: %s", s) - } - } - } - writer := func(toggle bool) { - defer wg.Done() - cm := ipv4.ControlMessage{ - Src: net.IPv4(127, 0, 0, 1), - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if err := p.SetControlMessage(cf, toggle); err != nil { - t.Error(err) - return - } - if n, err := p.WriteTo(wb, &cm, dst); err != nil { - t.Error(err) - return - } else if n != len(wb) { - t.Errorf("got %d; want %d", n, len(wb)) - return - } - } - - const N = 10 - wg.Add(N) - for i := 0; i < N; i++ { - go reader() - } - wg.Add(2 * N) - for i := 0; i < 2*N; i++ { - go writer(i%2 != 0) - } - wg.Add(N) - for i := 0; i < N; i++ { - go reader() - } - wg.Wait() -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt.go b/vendor/golang.org/x/net/ipv4/sockopt.go deleted file mode 100644 index 22e90c03..00000000 --- a/vendor/golang.org/x/net/ipv4/sockopt.go +++ /dev/null @@ -1,44 +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 ipv4 - -import "golang.org/x/net/internal/socket" - -// Sticky socket options -const ( - ssoTOS = iota // header field for unicast packet - ssoTTL // header field for unicast packet - ssoMulticastTTL // header field for multicast packet - ssoMulticastInterface // outbound interface for multicast packet - ssoMulticastLoopback // loopback for multicast packet - ssoReceiveTTL // header field on received packet - ssoReceiveDst // header field on received packet - ssoReceiveInterface // inbound interface on received packet - ssoPacketInfo // incbound or outbound packet path - ssoHeaderPrepend // ipv4 header prepend - ssoStripHeader // strip ipv4 header - ssoICMPFilter // icmp filter - ssoJoinGroup // any-source multicast - ssoLeaveGroup // any-source multicast - ssoJoinSourceGroup // source-specific multicast - ssoLeaveSourceGroup // source-specific multicast - ssoBlockSourceGroup // any-source or source-specific multicast - ssoUnblockSourceGroup // any-source or source-specific multicast - ssoAttachFilter // attach BPF for filtering inbound traffic -) - -// Sticky socket option value types -const ( - ssoTypeIPMreq = iota + 1 - ssoTypeIPMreqn - ssoTypeGroupReq - ssoTypeGroupSourceReq -) - -// A sockOpt represents a binding for sticky socket option. -type sockOpt struct { - socket.Option - typ int // hint for option value type; optional -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_posix.go deleted file mode 100644 index e96955bc..00000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_posix.go +++ /dev/null @@ -1,71 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { - switch so.typ { - case ssoTypeIPMreqn: - return so.getIPMreqn(c) - default: - return so.getMulticastIf(c) - } -} - -func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { - switch so.typ { - case ssoTypeIPMreqn: - return so.setIPMreqn(c, ifi, nil) - default: - return so.setMulticastIf(c, ifi) - } -} - -func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { - b := make([]byte, so.Len) - n, err := so.Get(c, b) - if err != nil { - return nil, err - } - if n != sizeofICMPFilter { - return nil, errOpNoSupport - } - return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil -} - -func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { - b := (*[sizeofICMPFilter]byte)(unsafe.Pointer(f))[:sizeofICMPFilter] - return so.Set(c, b) -} - -func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - switch so.typ { - case ssoTypeIPMreq: - return so.setIPMreq(c, ifi, grp) - case ssoTypeIPMreqn: - return so.setIPMreqn(c, ifi, grp) - case ssoTypeGroupReq: - return so.setGroupReq(c, ifi, grp) - default: - return errOpNoSupport - } -} - -func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return so.setGroupSourceReq(c, ifi, grp, src) -} - -func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { - return so.setAttachFilter(c, f) -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_stub.go deleted file mode 100644 index 23249b78..00000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_stub.go +++ /dev/null @@ -1,42 +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. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -import ( - "net" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { - return nil, errOpNoSupport -} - -func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { - return errOpNoSupport -} - -func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { - return nil, errOpNoSupport -} - -func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { - return errOpNoSupport -} - -func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} - -func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return errOpNoSupport -} - -func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq.go b/vendor/golang.org/x/net/ipv4/sys_asmreq.go deleted file mode 100644 index 0388cba0..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_asmreq.go +++ /dev/null @@ -1,119 +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. - -// +build darwin dragonfly freebsd netbsd openbsd solaris windows - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}} - if err := setIPMreqInterface(&mreq, ifi); err != nil { - return err - } - b := (*[sizeofIPMreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPMreq] - return so.Set(c, b) -} - -func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { - var b [4]byte - if _, err := so.Get(c, b[:]); err != nil { - return nil, err - } - ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3])) - if err != nil { - return nil, err - } - return ifi, nil -} - -func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { - ip, err := netInterfaceToIP4(ifi) - if err != nil { - return err - } - var b [4]byte - copy(b[:], ip) - return so.Set(c, b[:]) -} - -func setIPMreqInterface(mreq *ipMreq, ifi *net.Interface) error { - if ifi == nil { - return nil - } - ifat, err := ifi.Addrs() - if err != nil { - return err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip := ifa.IP.To4(); ip != nil { - copy(mreq.Interface[:], ip) - return nil - } - case *net.IPNet: - if ip := ifa.IP.To4(); ip != nil { - copy(mreq.Interface[:], ip) - return nil - } - } - } - return errNoSuchInterface -} - -func netIP4ToInterface(ip net.IP) (*net.Interface, error) { - ift, err := net.Interfaces() - if err != nil { - return nil, err - } - for _, ifi := range ift { - ifat, err := ifi.Addrs() - if err != nil { - return nil, err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip.Equal(ifa.IP) { - return &ifi, nil - } - case *net.IPNet: - if ip.Equal(ifa.IP) { - return &ifi, nil - } - } - } - } - return nil, errNoSuchInterface -} - -func netInterfaceToIP4(ifi *net.Interface) (net.IP, error) { - if ifi == nil { - return net.IPv4zero.To4(), nil - } - ifat, err := ifi.Addrs() - if err != nil { - return nil, err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip := ifa.IP.To4(); ip != nil { - return ip, nil - } - case *net.IPNet: - if ip := ifa.IP.To4(); ip != nil { - return ip, nil - } - } - } - return nil, errNoSuchInterface -} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go deleted file mode 100644 index f3919208..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go +++ /dev/null @@ -1,25 +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. - -// +build !darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} - -func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { - return nil, errOpNoSupport -} - -func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go deleted file mode 100644 index 1f24f69f..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go +++ /dev/null @@ -1,42 +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. - -// +build darwin freebsd linux - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { - b := make([]byte, so.Len) - if _, err := so.Get(c, b); err != nil { - return nil, err - } - mreqn := (*ipMreqn)(unsafe.Pointer(&b[0])) - if mreqn.Ifindex == 0 { - return nil, nil - } - ifi, err := net.InterfaceByIndex(int(mreqn.Ifindex)) - if err != nil { - return nil, err - } - return ifi, nil -} - -func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - var mreqn ipMreqn - if ifi != nil { - mreqn.Ifindex = int32(ifi.Index) - } - if grp != nil { - mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]} - } - b := (*[sizeofIPMreqn]byte)(unsafe.Pointer(&mreqn))[:sizeofIPMreqn] - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go deleted file mode 100644 index 0711d3d7..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go +++ /dev/null @@ -1,21 +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. - -// +build !darwin,!freebsd,!linux - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { - return nil, errOpNoSupport -} - -func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf.go b/vendor/golang.org/x/net/ipv4/sys_bpf.go deleted file mode 100644 index 9f30b730..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_bpf.go +++ /dev/null @@ -1,23 +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. - -// +build linux - -package ipv4 - -import ( - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { - prog := sockFProg{ - Len: uint16(len(f)), - Filter: (*sockFilter)(unsafe.Pointer(&f[0])), - } - b := (*[sizeofSockFprog]byte)(unsafe.Pointer(&prog))[:sizeofSockFprog] - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go deleted file mode 100644 index 9a213209..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go +++ /dev/null @@ -1,16 +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. - -// +build !linux - -package ipv4 - -import ( - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go deleted file mode 100644 index 58256dd9..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_bsd.go +++ /dev/null @@ -1,37 +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. - -// +build netbsd openbsd - -package ipv4 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - } -) diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go deleted file mode 100644 index e8fb1916..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_darwin.go +++ /dev/null @@ -1,93 +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 ipv4 - -import ( - "net" - "strconv" - "strings" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoStripHeader: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_STRIPHDR, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - } -) - -func init() { - // Seems like kern.osreldate is veiled on latest OS X. We use - // kern.osrelease instead. - s, err := syscall.Sysctl("kern.osrelease") - if err != nil { - return - } - ss := strings.Split(s, ".") - if len(ss) == 0 { - return - } - // The IP_PKTINFO and protocol-independent multicast API were - // introduced in OS X 10.7 (Darwin 11). But it looks like - // those features require OS X 10.8 (Darwin 12) or above. - // See http://support.apple.com/kb/HT1633. - if mjver, err := strconv.Atoi(ss[0]); err != nil || mjver < 12 { - return - } - ctlOpts[ctlPacketInfo].name = sysIP_PKTINFO - ctlOpts[ctlPacketInfo].length = sizeofInetPktinfo - ctlOpts[ctlPacketInfo].marshal = marshalPacketInfo - ctlOpts[ctlPacketInfo].parse = parsePacketInfo - sockOpts[ssoPacketInfo] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}} - sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn} - sockOpts[ssoJoinGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq} - sockOpts[ssoLeaveGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq} - sockOpts[ssoJoinSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} - sockOpts[ssoLeaveSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} - sockOpts[ssoBlockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} - sockOpts[ssoUnblockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} -} - -func (pi *inetPktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) - sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go deleted file mode 100644 index 859764f3..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go +++ /dev/null @@ -1,35 +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 ipv4 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - } -) diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go deleted file mode 100644 index b8003245..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_freebsd.go +++ /dev/null @@ -1,76 +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 ipv4 - -import ( - "net" - "runtime" - "strings" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func init() { - freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate") - if freebsdVersion >= 1000000 { - sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn} - } - if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { - archs, _ := syscall.Sysctl("kern.supported_archs") - for _, s := range strings.Fields(archs) { - if s == "amd64" { - freebsd32o64 = true - break - } - } - } -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) - sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go deleted file mode 100644 index 60defe13..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_linux.go +++ /dev/null @@ -1,59 +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 ipv4 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_TTL, 1, marshalTTL, parseTTL}, - ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_PKTINFO, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysICMP_FILTER, Len: sizeofICMPFilter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoAttachFilter: {Option: socket.Option{Level: sysSOL_SOCKET, Name: sysSO_ATTACH_FILTER, Len: sizeofSockFprog}}, - } -) - -func (pi *inetPktinfo) setIfindex(i int) { - pi.Ifindex = int32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) - sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris.go b/vendor/golang.org/x/net/ipv4/sys_solaris.go deleted file mode 100644 index 832fef1e..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_solaris.go +++ /dev/null @@ -1,57 +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 ipv4 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 4, marshalTTL, parseTTL}, - ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, - } - - sockOpts = map[int]sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func (pi *inetPktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) - sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go deleted file mode 100644 index ae5704e7..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_ssmreq.go +++ /dev/null @@ -1,54 +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. - -// +build darwin freebsd linux solaris - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -var freebsd32o64 bool - -func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - var gr groupReq - if ifi != nil { - gr.Interface = uint32(ifi.Index) - } - gr.setGroup(grp) - var b []byte - if freebsd32o64 { - var d [sizeofGroupReq + 4]byte - s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - b = d[:] - } else { - b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] - } - return so.Set(c, b) -} - -func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - var gsr groupSourceReq - if ifi != nil { - gsr.Interface = uint32(ifi.Index) - } - gsr.setSourceGroup(grp, src) - var b []byte - if freebsd32o64 { - var d [sizeofGroupSourceReq + 4]byte - s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - b = d[:] - } else { - b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] - } - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go deleted file mode 100644 index e6b7623d..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go +++ /dev/null @@ -1,21 +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. - -// +build !darwin,!freebsd,!linux,!solaris - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} - -func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv4/sys_stub.go b/vendor/golang.org/x/net/ipv4/sys_stub.go deleted file mode 100644 index 4f076473..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_stub.go +++ /dev/null @@ -1,13 +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. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -var ( - ctlOpts = [ctlMax]ctlOpt{} - - sockOpts = map[int]*sockOpt{} -) diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go deleted file mode 100644 index b0913d53..00000000 --- a/vendor/golang.org/x/net/ipv4/sys_windows.go +++ /dev/null @@ -1,67 +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 ipv4 - -import ( - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -const ( - // See ws2tcpip.h. - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_DONTFRAGMENT = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0xf - sysIP_DROP_SOURCE_MEMBERSHIP = 0x10 - sysIP_PKTINFO = 0x13 - - sizeofInetPktinfo = 0x8 - sizeofIPMreq = 0x8 - sizeofIPMreqSource = 0xc -) - -type inetPktinfo struct { - Addr [4]byte - Ifindex int32 -} - -type ipMreq struct { - Multiaddr [4]byte - Interface [4]byte -} - -type ipMreqSource struct { - Multiaddr [4]byte - Sourceaddr [4]byte - Interface [4]byte -} - -// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx -var ( - ctlOpts = [ctlMax]ctlOpt{} - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - } -) - -func (pi *inetPktinfo) setIfindex(i int) { - pi.Ifindex = int32(i) -} diff --git a/vendor/golang.org/x/net/ipv4/unicast_test.go b/vendor/golang.org/x/net/ipv4/unicast_test.go deleted file mode 100644 index 02c089f0..00000000 --- a/vendor/golang.org/x/net/ipv4/unicast_test.go +++ /dev/null @@ -1,247 +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 ipv4_test - -import ( - "bytes" - "net" - "os" - "runtime" - "testing" - "time" - - "golang.org/x/net/icmp" - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -func TestPacketConnReadWriteUnicastUDP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - c, err := nettest.NewLocalPacketListener("udp4") - if err != nil { - t.Fatal(err) - } - defer c.Close() - p := ipv4.NewPacketConn(c) - defer p.Close() - - dst := c.LocalAddr() - cf := ipv4.FlagTTL | ipv4.FlagDst | ipv4.FlagInterface - wb := []byte("HELLO-R-U-THERE") - - for i, toggle := range []bool{true, false, true} { - if err := p.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - p.SetTTL(i + 1) - if err := p.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if n, err := p.WriteTo(wb, nil, dst); err != nil { - t.Fatal(err) - } else if n != len(wb) { - t.Fatalf("got %v; want %v", n, len(wb)) - } - rb := make([]byte, 128) - if err := p.SetReadDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if n, _, _, err := p.ReadFrom(rb); err != nil { - t.Fatal(err) - } else if !bytes.Equal(rb[:n], wb) { - t.Fatalf("got %v; want %v", rb[:n], wb) - } - } -} - -func TestPacketConnReadWriteUnicastICMP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - c, err := net.ListenPacket("ip4:icmp", "0.0.0.0") - if err != nil { - t.Fatal(err) - } - defer c.Close() - - dst, err := net.ResolveIPAddr("ip4", "127.0.0.1") - if err != nil { - t.Fatal(err) - } - p := ipv4.NewPacketConn(c) - defer p.Close() - cf := ipv4.FlagDst | ipv4.FlagInterface - if runtime.GOOS != "solaris" { - // Solaris never allows to modify ICMP properties. - cf |= ipv4.FlagTTL - } - - for i, toggle := range []bool{true, false, true} { - wb, err := (&icmp.Message{ - Type: ipv4.ICMPTypeEcho, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, Seq: i + 1, - Data: []byte("HELLO-R-U-THERE"), - }, - }).Marshal(nil) - if err != nil { - t.Fatal(err) - } - if err := p.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - p.SetTTL(i + 1) - if err := p.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if n, err := p.WriteTo(wb, nil, dst); err != nil { - t.Fatal(err) - } else if n != len(wb) { - t.Fatalf("got %v; want %v", n, len(wb)) - } - rb := make([]byte, 128) - loop: - if err := p.SetReadDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if n, _, _, err := p.ReadFrom(rb); err != nil { - switch runtime.GOOS { - case "darwin": // older darwin kernels have some limitation on receiving icmp packet through raw socket - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } else { - m, err := icmp.ParseMessage(iana.ProtocolICMP, rb[:n]) - if err != nil { - t.Fatal(err) - } - if runtime.GOOS == "linux" && m.Type == ipv4.ICMPTypeEcho { - // On Linux we must handle own sent packets. - goto loop - } - if m.Type != ipv4.ICMPTypeEchoReply || m.Code != 0 { - t.Fatalf("got type=%v, code=%v; want type=%v, code=%v", m.Type, m.Code, ipv4.ICMPTypeEchoReply, 0) - } - } - } -} - -func TestRawConnReadWriteUnicastICMP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - c, err := net.ListenPacket("ip4:icmp", "0.0.0.0") - if err != nil { - t.Fatal(err) - } - defer c.Close() - - dst, err := net.ResolveIPAddr("ip4", "127.0.0.1") - if err != nil { - t.Fatal(err) - } - r, err := ipv4.NewRawConn(c) - if err != nil { - t.Fatal(err) - } - defer r.Close() - cf := ipv4.FlagTTL | ipv4.FlagDst | ipv4.FlagInterface - - for i, toggle := range []bool{true, false, true} { - wb, err := (&icmp.Message{ - Type: ipv4.ICMPTypeEcho, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, Seq: i + 1, - Data: []byte("HELLO-R-U-THERE"), - }, - }).Marshal(nil) - if err != nil { - t.Fatal(err) - } - wh := &ipv4.Header{ - Version: ipv4.Version, - Len: ipv4.HeaderLen, - TOS: i + 1, - TotalLen: ipv4.HeaderLen + len(wb), - TTL: i + 1, - Protocol: 1, - Dst: dst.IP, - } - if err := r.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - if err := r.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if err := r.WriteTo(wh, wb, nil); err != nil { - t.Fatal(err) - } - rb := make([]byte, ipv4.HeaderLen+128) - loop: - if err := r.SetReadDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if _, b, _, err := r.ReadFrom(rb); err != nil { - switch runtime.GOOS { - case "darwin": // older darwin kernels have some limitation on receiving icmp packet through raw socket - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } else { - m, err := icmp.ParseMessage(iana.ProtocolICMP, b) - if err != nil { - t.Fatal(err) - } - if runtime.GOOS == "linux" && m.Type == ipv4.ICMPTypeEcho { - // On Linux we must handle own sent packets. - goto loop - } - if m.Type != ipv4.ICMPTypeEchoReply || m.Code != 0 { - t.Fatalf("got type=%v, code=%v; want type=%v, code=%v", m.Type, m.Code, ipv4.ICMPTypeEchoReply, 0) - } - } - } -} diff --git a/vendor/golang.org/x/net/ipv4/unicastsockopt_test.go b/vendor/golang.org/x/net/ipv4/unicastsockopt_test.go deleted file mode 100644 index db5213b9..00000000 --- a/vendor/golang.org/x/net/ipv4/unicastsockopt_test.go +++ /dev/null @@ -1,148 +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 ipv4_test - -import ( - "net" - "runtime" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv4" -) - -func TestConnUnicastSocketOptions(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - ln, err := net.Listen("tcp4", "127.0.0.1:0") - if err != nil { - t.Fatal(err) - } - defer ln.Close() - - errc := make(chan error, 1) - go func() { - c, err := ln.Accept() - if err != nil { - errc <- err - return - } - errc <- c.Close() - }() - - c, err := net.Dial("tcp4", ln.Addr().String()) - if err != nil { - t.Fatal(err) - } - defer c.Close() - - testUnicastSocketOptions(t, ipv4.NewConn(c)) - - if err := <-errc; err != nil { - t.Errorf("server: %v", err) - } -} - -var packetConnUnicastSocketOptionTests = []struct { - net, proto, addr string -}{ - {"udp4", "", "127.0.0.1:0"}, - {"ip4", ":icmp", "127.0.0.1"}, -} - -func TestPacketConnUnicastSocketOptions(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - m, ok := nettest.SupportsRawIPSocket() - for _, tt := range packetConnUnicastSocketOptionTests { - if tt.net == "ip4" && !ok { - t.Log(m) - continue - } - c, err := net.ListenPacket(tt.net+tt.proto, tt.addr) - if err != nil { - t.Fatal(err) - } - defer c.Close() - - testUnicastSocketOptions(t, ipv4.NewPacketConn(c)) - } -} - -func TestRawConnUnicastSocketOptions(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - ifi := nettest.RoutedInterface("ip4", net.FlagUp|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - c, err := net.ListenPacket("ip4:icmp", "127.0.0.1") - if err != nil { - t.Fatal(err) - } - defer c.Close() - - r, err := ipv4.NewRawConn(c) - if err != nil { - t.Fatal(err) - } - - testUnicastSocketOptions(t, r) -} - -type testIPv4UnicastConn interface { - TOS() (int, error) - SetTOS(int) error - TTL() (int, error) - SetTTL(int) error -} - -func testUnicastSocketOptions(t *testing.T, c testIPv4UnicastConn) { - tos := iana.DiffServCS0 | iana.NotECNTransport - switch runtime.GOOS { - case "windows": - // IP_TOS option is supported on Windows 8 and beyond. - t.Skipf("not supported on %s", runtime.GOOS) - } - - if err := c.SetTOS(tos); err != nil { - t.Fatal(err) - } - if v, err := c.TOS(); err != nil { - t.Fatal(err) - } else if v != tos { - t.Fatalf("got %v; want %v", v, tos) - } - const ttl = 255 - if err := c.SetTTL(ttl); err != nil { - t.Fatal(err) - } - if v, err := c.TTL(); err != nil { - t.Fatal(err) - } else if v != ttl { - t.Fatalf("got %v; want %v", v, ttl) - } -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_darwin.go b/vendor/golang.org/x/net/ipv4/zsys_darwin.go deleted file mode 100644 index c07cc883..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_darwin.go +++ /dev/null @@ -1,99 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_darwin.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_STRIPHDR = 0x17 - sysIP_RECVTTL = 0x18 - sysIP_BOUND_IF = 0x19 - sysIP_PKTINFO = 0x1a - sysIP_RECVPKTINFO = 0x1a - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_MULTICAST_IFINDEX = 0x42 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type inetPktinfo struct { - Ifindex uint32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [128]byte -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [128]byte - Pad_cgo_1 [128]byte -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go deleted file mode 100644 index c4365e9e..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go +++ /dev/null @@ -1,31 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_dragonfly.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_RECVTTL = 0x41 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - - sizeofIPMreq = 0x8 -) - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go deleted file mode 100644 index 8c4aec94..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go +++ /dev/null @@ -1,93 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_SENDSRCADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_ONESBCAST = 0x17 - sysIP_BINDANY = 0x18 - sysIP_RECVTTL = 0x41 - sysIP_MINTTL = 0x42 - sysIP_DONTFRAG = 0x43 - sysIP_RECVTOS = 0x44 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group sockaddrStorage - Source sockaddrStorage -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go deleted file mode 100644 index 4b10b7c5..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go +++ /dev/null @@ -1,95 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_SENDSRCADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_ONESBCAST = 0x17 - sysIP_BINDANY = 0x18 - sysIP_RECVTTL = 0x41 - sysIP_MINTTL = 0x42 - sysIP_DONTFRAG = 0x43 - sysIP_RECVTOS = 0x44 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage - Source sockaddrStorage -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go deleted file mode 100644 index 4b10b7c5..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go +++ /dev/null @@ -1,95 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_SENDSRCADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_ONESBCAST = 0x17 - sysIP_BINDANY = 0x18 - sysIP_RECVTTL = 0x41 - sysIP_MINTTL = 0x42 - sysIP_DONTFRAG = 0x43 - sysIP_RECVTOS = 0x44 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage - Source sockaddrStorage -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go deleted file mode 100644 index c0260f0c..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +++ /dev/null @@ -1,148 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go deleted file mode 100644 index 9c967eaa..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +++ /dev/null @@ -1,150 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go deleted file mode 100644 index c0260f0c..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +++ /dev/null @@ -1,148 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go deleted file mode 100644 index 9c967eaa..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +++ /dev/null @@ -1,150 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go deleted file mode 100644 index c0260f0c..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +++ /dev/null @@ -1,148 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go deleted file mode 100644 index 9c967eaa..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +++ /dev/null @@ -1,150 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go deleted file mode 100644 index 9c967eaa..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +++ /dev/null @@ -1,150 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go deleted file mode 100644 index c0260f0c..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +++ /dev/null @@ -1,148 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go deleted file mode 100644 index f65bd9a7..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +++ /dev/null @@ -1,148 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]uint8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go deleted file mode 100644 index 9c967eaa..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +++ /dev/null @@ -1,150 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go deleted file mode 100644 index 9c967eaa..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +++ /dev/null @@ -1,150 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go deleted file mode 100644 index 9c967eaa..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +++ /dev/null @@ -1,150 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go deleted file mode 100644 index fd3624d9..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go +++ /dev/null @@ -1,30 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_netbsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_RECVTTL = 0x17 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - - sizeofIPMreq = 0x8 -) - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go deleted file mode 100644 index 12f36be7..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go +++ /dev/null @@ -1,30 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_openbsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x1e - sysIP_RECVTTL = 0x1f - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - - sizeofIPMreq = 0x8 -) - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_solaris.go b/vendor/golang.org/x/net/ipv4/zsys_solaris.go deleted file mode 100644 index 0a3875cc..00000000 --- a/vendor/golang.org/x/net/ipv4/zsys_solaris.go +++ /dev/null @@ -1,100 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_solaris.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x9 - sysIP_RECVSLLA = 0xa - sysIP_RECVTTL = 0xb - - sysIP_MULTICAST_IF = 0x10 - sysIP_MULTICAST_TTL = 0x11 - sysIP_MULTICAST_LOOP = 0x12 - sysIP_ADD_MEMBERSHIP = 0x13 - sysIP_DROP_MEMBERSHIP = 0x14 - sysIP_BLOCK_SOURCE = 0x15 - sysIP_UNBLOCK_SOURCE = 0x16 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x17 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x18 - sysIP_NEXTHOP = 0x19 - - sysIP_PKTINFO = 0x1a - sysIP_RECVPKTINFO = 0x1a - sysIP_DONTFRAG = 0x1b - - sysIP_BOUND_IF = 0x41 - sysIP_UNSPEC_SRC = 0x42 - sysIP_BROADCAST_TTL = 0x43 - sysIP_DHCPINIT_IF = 0x45 - - sysIP_REUSEADDR = 0x104 - sysIP_DONTROUTE = 0x105 - sysIP_BROADCAST = 0x106 - - sysMCAST_JOIN_GROUP = 0x29 - sysMCAST_LEAVE_GROUP = 0x2a - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_JOIN_SOURCE_GROUP = 0x2d - sysMCAST_LEAVE_SOURCE_GROUP = 0x2e - - sizeofSockaddrStorage = 0x100 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - - sizeofIPMreq = 0x8 - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x104 - sizeofGroupSourceReq = 0x204 -) - -type sockaddrStorage struct { - Family uint16 - X_ss_pad1 [6]int8 - X_ss_align float64 - X_ss_pad2 [240]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type inetPktinfo struct { - Ifindex uint32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [256]byte -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [256]byte - Pad_cgo_1 [256]byte -} diff --git a/vendor/golang.org/x/net/ipv6/batch.go b/vendor/golang.org/x/net/ipv6/batch.go deleted file mode 100644 index 4f5fe683..00000000 --- a/vendor/golang.org/x/net/ipv6/batch.go +++ /dev/null @@ -1,119 +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. - -// +build go1.9 - -package ipv6 - -import ( - "net" - "runtime" - "syscall" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of -// PacketConn are not implemented. - -// A Message represents an IO message. -// -// type Message struct { -// Buffers [][]byte -// OOB []byte -// Addr net.Addr -// N int -// NN int -// Flags int -// } -// -// The Buffers fields represents a list of contiguous buffers, which -// can be used for vectored IO, for example, putting a header and a -// payload in each slice. -// When writing, the Buffers field must contain at least one byte to -// write. -// When reading, the Buffers field will always contain a byte to read. -// -// The OOB field contains protocol-specific control or miscellaneous -// ancillary data known as out-of-band data. -// It can be nil when not required. -// -// The Addr field specifies a destination address when writing. -// It can be nil when the underlying protocol of the endpoint uses -// connection-oriented communication. -// After a successful read, it may contain the source address on the -// received packet. -// -// The N field indicates the number of bytes read or written from/to -// Buffers. -// -// The NN field indicates the number of bytes read or written from/to -// OOB. -// -// The Flags field contains protocol-specific information on the -// received message. -type Message = socket.Message - -// ReadBatch reads a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -// -// On a successful read it returns the number of messages received, up -// to len(ms). -// -// On Linux, a batch read will be optimized. -// On other platforms, this method will read only a single message. -func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - switch runtime.GOOS { - case "linux": - n, err := c.RecvMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.RecvMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - } -} - -// WriteBatch writes a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -// -// It returns the number of messages written on a successful write. -// -// On Linux, a batch write will be optimized. -// On other platforms, this method will write only a single message. -func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - switch runtime.GOOS { - case "linux": - n, err := c.SendMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.SendMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - } -} diff --git a/vendor/golang.org/x/net/ipv6/bpf_test.go b/vendor/golang.org/x/net/ipv6/bpf_test.go deleted file mode 100644 index 8253e1f4..00000000 --- a/vendor/golang.org/x/net/ipv6/bpf_test.go +++ /dev/null @@ -1,96 +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 ipv6_test - -import ( - "net" - "runtime" - "testing" - "time" - - "golang.org/x/net/bpf" - "golang.org/x/net/ipv6" -) - -func TestBPF(t *testing.T) { - if runtime.GOOS != "linux" { - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - l, err := net.ListenPacket("udp6", "[::1]:0") - if err != nil { - t.Fatal(err) - } - defer l.Close() - - p := ipv6.NewPacketConn(l) - - // This filter accepts UDP packets whose first payload byte is - // even. - prog, err := bpf.Assemble([]bpf.Instruction{ - // Load the first byte of the payload (skipping UDP header). - bpf.LoadAbsolute{Off: 8, Size: 1}, - // Select LSB of the byte. - bpf.ALUOpConstant{Op: bpf.ALUOpAnd, Val: 1}, - // Byte is even? - bpf.JumpIf{Cond: bpf.JumpEqual, Val: 0, SkipFalse: 1}, - // Accept. - bpf.RetConstant{Val: 4096}, - // Ignore. - bpf.RetConstant{Val: 0}, - }) - if err != nil { - t.Fatalf("compiling BPF: %s", err) - } - - if err = p.SetBPF(prog); err != nil { - t.Fatalf("attaching filter to Conn: %s", err) - } - - s, err := net.Dial("udp6", l.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - defer s.Close() - go func() { - for i := byte(0); i < 10; i++ { - s.Write([]byte{i}) - } - }() - - l.SetDeadline(time.Now().Add(2 * time.Second)) - seen := make([]bool, 5) - for { - var b [512]byte - n, _, err := l.ReadFrom(b[:]) - if err != nil { - t.Fatalf("reading from listener: %s", err) - } - if n != 1 { - t.Fatalf("unexpected packet length, want 1, got %d", n) - } - if b[0] >= 10 { - t.Fatalf("unexpected byte, want 0-9, got %d", b[0]) - } - if b[0]%2 != 0 { - t.Fatalf("got odd byte %d, wanted only even bytes", b[0]) - } - seen[b[0]/2] = true - - seenAll := true - for _, v := range seen { - if !v { - seenAll = false - break - } - } - if seenAll { - break - } - } -} diff --git a/vendor/golang.org/x/net/ipv6/control.go b/vendor/golang.org/x/net/ipv6/control.go deleted file mode 100644 index 2da64441..00000000 --- a/vendor/golang.org/x/net/ipv6/control.go +++ /dev/null @@ -1,187 +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 ipv6 - -import ( - "fmt" - "net" - "sync" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -// Note that RFC 3542 obsoletes RFC 2292 but OS X Snow Leopard and the -// former still support RFC 2292 only. Please be aware that almost -// all protocol implementations prohibit using a combination of RFC -// 2292 and RFC 3542 for some practical reasons. - -type rawOpt struct { - sync.RWMutex - cflags ControlFlags -} - -func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } -func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } -func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } - -// A ControlFlags represents per packet basis IP-level socket option -// control flags. -type ControlFlags uint - -const ( - FlagTrafficClass ControlFlags = 1 << iota // pass the traffic class on the received packet - FlagHopLimit // pass the hop limit on the received packet - FlagSrc // pass the source address on the received packet - FlagDst // pass the destination address on the received packet - FlagInterface // pass the interface index on the received packet - FlagPathMTU // pass the path MTU on the received packet path -) - -const flagPacketInfo = FlagDst | FlagInterface - -// A ControlMessage represents per packet basis IP-level socket -// options. -type ControlMessage struct { - // Receiving socket options: SetControlMessage allows to - // receive the options from the protocol stack using ReadFrom - // method of PacketConn. - // - // Specifying socket options: ControlMessage for WriteTo - // method of PacketConn allows to send the options to the - // protocol stack. - // - TrafficClass int // traffic class, must be 1 <= value <= 255 when specifying - HopLimit int // hop limit, must be 1 <= value <= 255 when specifying - Src net.IP // source address, specifying only - Dst net.IP // destination address, receiving only - IfIndex int // interface index, must be 1 <= value when specifying - NextHop net.IP // next hop address, specifying only - MTU int // path MTU, receiving only -} - -func (cm *ControlMessage) String() string { - if cm == nil { - return "<nil>" - } - return fmt.Sprintf("tclass=%#x hoplim=%d src=%v dst=%v ifindex=%d nexthop=%v mtu=%d", cm.TrafficClass, cm.HopLimit, cm.Src, cm.Dst, cm.IfIndex, cm.NextHop, cm.MTU) -} - -// Marshal returns the binary encoding of cm. -func (cm *ControlMessage) Marshal() []byte { - if cm == nil { - return nil - } - var l int - tclass := false - if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 { - tclass = true - l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) - } - hoplimit := false - if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 { - hoplimit = true - l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) - } - pktinfo := false - if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) { - pktinfo = true - l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) - } - nexthop := false - if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil { - nexthop = true - l += socket.ControlMessageSpace(ctlOpts[ctlNextHop].length) - } - var b []byte - if l > 0 { - b = make([]byte, l) - bb := b - if tclass { - bb = ctlOpts[ctlTrafficClass].marshal(bb, cm) - } - if hoplimit { - bb = ctlOpts[ctlHopLimit].marshal(bb, cm) - } - if pktinfo { - bb = ctlOpts[ctlPacketInfo].marshal(bb, cm) - } - if nexthop { - bb = ctlOpts[ctlNextHop].marshal(bb, cm) - } - } - return b -} - -// Parse parses b as a control message and stores the result in cm. -func (cm *ControlMessage) Parse(b []byte) error { - ms, err := socket.ControlMessage(b).Parse() - if err != nil { - return err - } - for _, m := range ms { - lvl, typ, l, err := m.ParseHeader() - if err != nil { - return err - } - if lvl != iana.ProtocolIPv6 { - continue - } - switch { - case typ == ctlOpts[ctlTrafficClass].name && l >= ctlOpts[ctlTrafficClass].length: - ctlOpts[ctlTrafficClass].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlHopLimit].name && l >= ctlOpts[ctlHopLimit].length: - ctlOpts[ctlHopLimit].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: - ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlPathMTU].name && l >= ctlOpts[ctlPathMTU].length: - ctlOpts[ctlPathMTU].parse(cm, m.Data(l)) - } - } - return nil -} - -// NewControlMessage returns a new control message. -// -// The returned message is large enough for options specified by cf. -func NewControlMessage(cf ControlFlags) []byte { - opt := rawOpt{cflags: cf} - var l int - if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) - } - if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) - } - if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) - } - if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlPathMTU].length) - } - var b []byte - if l > 0 { - b = make([]byte, l) - } - return b -} - -// Ancillary data socket options -const ( - ctlTrafficClass = iota // header field - ctlHopLimit // header field - ctlPacketInfo // inbound or outbound packet path - ctlNextHop // nexthop - ctlPathMTU // path mtu - ctlMax -) - -// A ctlOpt represents a binding for ancillary data socket option. -type ctlOpt struct { - name int // option name, must be equal or greater than 1 - length int // option length - marshal func([]byte, *ControlMessage) []byte - parse func(*ControlMessage, []byte) -} diff --git a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go deleted file mode 100644 index 9fd9eb15..00000000 --- a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.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. - -// +build darwin - -package ipv6 - -import ( - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func marshal2292HopLimit(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, 4) - if cm != nil { - socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) - } - return m.Next(4) -} - -func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292PKTINFO, sizeofInet6Pktinfo) - if cm != nil { - pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) - if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { - copy(pi.Addr[:], ip) - } - if cm.IfIndex > 0 { - pi.setIfindex(cm.IfIndex) - } - } - return m.Next(sizeofInet6Pktinfo) -} - -func marshal2292NextHop(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292NEXTHOP, sizeofSockaddrInet6) - if cm != nil { - sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) - sa.setSockaddr(cm.NextHop, cm.IfIndex) - } - return m.Next(sizeofSockaddrInet6) -} diff --git a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go deleted file mode 100644 index eec529c2..00000000 --- a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package ipv6 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func marshalTrafficClass(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_TCLASS, 4) - if cm != nil { - socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.TrafficClass)) - } - return m.Next(4) -} - -func parseTrafficClass(cm *ControlMessage, b []byte) { - cm.TrafficClass = int(socket.NativeEndian.Uint32(b[:4])) -} - -func marshalHopLimit(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_HOPLIMIT, 4) - if cm != nil { - socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) - } - return m.Next(4) -} - -func parseHopLimit(cm *ControlMessage, b []byte) { - cm.HopLimit = int(socket.NativeEndian.Uint32(b[:4])) -} - -func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PKTINFO, sizeofInet6Pktinfo) - if cm != nil { - pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) - if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { - copy(pi.Addr[:], ip) - } - if cm.IfIndex > 0 { - pi.setIfindex(cm.IfIndex) - } - } - return m.Next(sizeofInet6Pktinfo) -} - -func parsePacketInfo(cm *ControlMessage, b []byte) { - pi := (*inet6Pktinfo)(unsafe.Pointer(&b[0])) - if len(cm.Dst) < net.IPv6len { - cm.Dst = make(net.IP, net.IPv6len) - } - copy(cm.Dst, pi.Addr[:]) - cm.IfIndex = int(pi.Ifindex) -} - -func marshalNextHop(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_NEXTHOP, sizeofSockaddrInet6) - if cm != nil { - sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) - sa.setSockaddr(cm.NextHop, cm.IfIndex) - } - return m.Next(sizeofSockaddrInet6) -} - -func parseNextHop(cm *ControlMessage, b []byte) { -} - -func marshalPathMTU(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PATHMTU, sizeofIPv6Mtuinfo) - return m.Next(sizeofIPv6Mtuinfo) -} - -func parsePathMTU(cm *ControlMessage, b []byte) { - mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) - if len(cm.Dst) < net.IPv6len { - cm.Dst = make(net.IP, net.IPv6len) - } - copy(cm.Dst, mi.Addr.Addr[:]) - cm.IfIndex = int(mi.Addr.Scope_id) - cm.MTU = int(mi.Mtu) -} diff --git a/vendor/golang.org/x/net/ipv6/control_stub.go b/vendor/golang.org/x/net/ipv6/control_stub.go deleted file mode 100644 index a045f28f..00000000 --- a/vendor/golang.org/x/net/ipv6/control_stub.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -import "golang.org/x/net/internal/socket" - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/control_test.go b/vendor/golang.org/x/net/ipv6/control_test.go deleted file mode 100644 index c186ca99..00000000 --- a/vendor/golang.org/x/net/ipv6/control_test.go +++ /dev/null @@ -1,21 +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 ipv6_test - -import ( - "testing" - - "golang.org/x/net/ipv6" -) - -func TestControlMessageParseWithFuzz(t *testing.T) { - var cm ipv6.ControlMessage - for _, fuzz := range []string{ - "\f\x00\x00\x00)\x00\x00\x00.\x00\x00\x00", - "\f\x00\x00\x00)\x00\x00\x00,\x00\x00\x00", - } { - cm.Parse([]byte(fuzz)) - } -} diff --git a/vendor/golang.org/x/net/ipv6/control_unix.go b/vendor/golang.org/x/net/ipv6/control_unix.go deleted file mode 100644 index 66515060..00000000 --- a/vendor/golang.org/x/net/ipv6/control_unix.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package ipv6 - -import "golang.org/x/net/internal/socket" - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - opt.Lock() - defer opt.Unlock() - if so, ok := sockOpts[ssoReceiveTrafficClass]; ok && cf&FlagTrafficClass != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagTrafficClass) - } else { - opt.clear(FlagTrafficClass) - } - } - if so, ok := sockOpts[ssoReceiveHopLimit]; ok && cf&FlagHopLimit != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagHopLimit) - } else { - opt.clear(FlagHopLimit) - } - } - if so, ok := sockOpts[ssoReceivePacketInfo]; ok && cf&flagPacketInfo != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(cf & flagPacketInfo) - } else { - opt.clear(cf & flagPacketInfo) - } - } - if so, ok := sockOpts[ssoReceivePathMTU]; ok && cf&FlagPathMTU != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagPathMTU) - } else { - opt.clear(FlagPathMTU) - } - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv6/control_windows.go b/vendor/golang.org/x/net/ipv6/control_windows.go deleted file mode 100644 index ef2563b3..00000000 --- a/vendor/golang.org/x/net/ipv6/control_windows.go +++ /dev/null @@ -1,16 +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 ipv6 - -import ( - "syscall" - - "golang.org/x/net/internal/socket" -) - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - // TODO(mikio): implement this - return syscall.EWINDOWS -} diff --git a/vendor/golang.org/x/net/ipv6/defs_darwin.go b/vendor/golang.org/x/net/ipv6/defs_darwin.go deleted file mode 100644 index 55ddc116..00000000 --- a/vendor/golang.org/x/net/ipv6/defs_darwin.go +++ /dev/null @@ -1,112 +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. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#define __APPLE_USE_RFC_3542 -#include <netinet/in.h> -#include <netinet/icmp6.h> -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - sysIPV6_2292PKTINFO = C.IPV6_2292PKTINFO - sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT - sysIPV6_2292NEXTHOP = C.IPV6_2292NEXTHOP - sysIPV6_2292HOPOPTS = C.IPV6_2292HOPOPTS - sysIPV6_2292DSTOPTS = C.IPV6_2292DSTOPTS - sysIPV6_2292RTHDR = C.IPV6_2292RTHDR - - sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - sysIPV6_TCLASS = C.IPV6_TCLASS - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL - - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR - - sysIPV6_MSFILTER = C.IPV6_MSFILTER - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - - sysIPV6_BOUND_IF = C.IPV6_BOUND_IF - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv6/defs_dragonfly.go b/vendor/golang.org/x/net/ipv6/defs_dragonfly.go deleted file mode 100644 index a4c383a5..00000000 --- a/vendor/golang.org/x/net/ipv6/defs_dragonfly.go +++ /dev/null @@ -1,84 +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. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include <sys/param.h> -#include <sys/socket.h> - -#include <netinet/in.h> -#include <netinet/icmp6.h> -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_freebsd.go b/vendor/golang.org/x/net/ipv6/defs_freebsd.go deleted file mode 100644 index 53e62538..00000000 --- a/vendor/golang.org/x/net/ipv6/defs_freebsd.go +++ /dev/null @@ -1,105 +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. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include <sys/param.h> -#include <sys/socket.h> - -#include <netinet/in.h> -#include <netinet/icmp6.h> -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR - - sysIPV6_BINDANY = C.IPV6_BINDANY - - sysIPV6_MSFILTER = C.IPV6_MSFILTER - - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_linux.go b/vendor/golang.org/x/net/ipv6/defs_linux.go deleted file mode 100644 index 3308cb2c..00000000 --- a/vendor/golang.org/x/net/ipv6/defs_linux.go +++ /dev/null @@ -1,147 +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. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include <linux/in.h> -#include <linux/in6.h> -#include <linux/ipv6.h> -#include <linux/icmpv6.h> -#include <linux/filter.h> -#include <sys/socket.h> -*/ -import "C" - -const ( - sysIPV6_ADDRFORM = C.IPV6_ADDRFORM - sysIPV6_2292PKTINFO = C.IPV6_2292PKTINFO - sysIPV6_2292HOPOPTS = C.IPV6_2292HOPOPTS - sysIPV6_2292DSTOPTS = C.IPV6_2292DSTOPTS - sysIPV6_2292RTHDR = C.IPV6_2292RTHDR - sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_FLOWINFO = C.IPV6_FLOWINFO - - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_ADD_MEMBERSHIP = C.IPV6_ADD_MEMBERSHIP - sysIPV6_DROP_MEMBERSHIP = C.IPV6_DROP_MEMBERSHIP - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - sysMCAST_MSFILTER = C.MCAST_MSFILTER - sysIPV6_ROUTER_ALERT = C.IPV6_ROUTER_ALERT - sysIPV6_MTU_DISCOVER = C.IPV6_MTU_DISCOVER - sysIPV6_MTU = C.IPV6_MTU - sysIPV6_RECVERR = C.IPV6_RECVERR - sysIPV6_V6ONLY = C.IPV6_V6ONLY - sysIPV6_JOIN_ANYCAST = C.IPV6_JOIN_ANYCAST - sysIPV6_LEAVE_ANYCAST = C.IPV6_LEAVE_ANYCAST - - //sysIPV6_PMTUDISC_DONT = C.IPV6_PMTUDISC_DONT - //sysIPV6_PMTUDISC_WANT = C.IPV6_PMTUDISC_WANT - //sysIPV6_PMTUDISC_DO = C.IPV6_PMTUDISC_DO - //sysIPV6_PMTUDISC_PROBE = C.IPV6_PMTUDISC_PROBE - //sysIPV6_PMTUDISC_INTERFACE = C.IPV6_PMTUDISC_INTERFACE - //sysIPV6_PMTUDISC_OMIT = C.IPV6_PMTUDISC_OMIT - - sysIPV6_FLOWLABEL_MGR = C.IPV6_FLOWLABEL_MGR - sysIPV6_FLOWINFO_SEND = C.IPV6_FLOWINFO_SEND - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - sysIPV6_XFRM_POLICY = C.IPV6_XFRM_POLICY - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RTHDR = C.IPV6_RTHDR - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - sysIPV6_PATHMTU = C.IPV6_PATHMTU - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - sysIPV6_TCLASS = C.IPV6_TCLASS - - sysIPV6_ADDR_PREFERENCES = C.IPV6_ADDR_PREFERENCES - - sysIPV6_PREFER_SRC_TMP = C.IPV6_PREFER_SRC_TMP - sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = C.IPV6_PREFER_SRC_PUBTMP_DEFAULT - sysIPV6_PREFER_SRC_COA = C.IPV6_PREFER_SRC_COA - sysIPV6_PREFER_SRC_HOME = C.IPV6_PREFER_SRC_HOME - sysIPV6_PREFER_SRC_CGA = C.IPV6_PREFER_SRC_CGA - sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA - - sysIPV6_MINHOPCOUNT = C.IPV6_MINHOPCOUNT - - sysIPV6_ORIGDSTADDR = C.IPV6_ORIGDSTADDR - sysIPV6_RECVORIGDSTADDR = C.IPV6_RECVORIGDSTADDR - sysIPV6_TRANSPARENT = C.IPV6_TRANSPARENT - sysIPV6_UNICAST_IF = C.IPV6_UNICAST_IF - - sysICMPV6_FILTER = C.ICMPV6_FILTER - - sysICMPV6_FILTER_BLOCK = C.ICMPV6_FILTER_BLOCK - sysICMPV6_FILTER_PASS = C.ICMPV6_FILTER_PASS - sysICMPV6_FILTER_BLOCKOTHERS = C.ICMPV6_FILTER_BLOCKOTHERS - sysICMPV6_FILTER_PASSONLY = C.ICMPV6_FILTER_PASSONLY - - sysSOL_SOCKET = C.SOL_SOCKET - sysSO_ATTACH_FILTER = C.SO_ATTACH_FILTER - - sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - sizeofIPv6FlowlabelReq = C.sizeof_struct_in6_flowlabel_req - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter - - sizeofSockFprog = C.sizeof_struct_sock_fprog -) - -type kernelSockaddrStorage C.struct___kernel_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6FlowlabelReq C.struct_in6_flowlabel_req - -type ipv6Mreq C.struct_ipv6_mreq - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req - -type icmpv6Filter C.struct_icmp6_filter - -type sockFProg C.struct_sock_fprog - -type sockFilter C.struct_sock_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_netbsd.go b/vendor/golang.org/x/net/ipv6/defs_netbsd.go deleted file mode 100644 index be9ceb9c..00000000 --- a/vendor/golang.org/x/net/ipv6/defs_netbsd.go +++ /dev/null @@ -1,80 +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. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include <sys/param.h> -#include <sys/socket.h> - -#include <netinet/in.h> -#include <netinet/icmp6.h> -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_openbsd.go b/vendor/golang.org/x/net/ipv6/defs_openbsd.go deleted file mode 100644 index 177ddf87..00000000 --- a/vendor/golang.org/x/net/ipv6/defs_openbsd.go +++ /dev/null @@ -1,89 +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. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include <sys/param.h> -#include <sys/socket.h> - -#include <netinet/in.h> -#include <netinet/icmp6.h> -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_AUTH_LEVEL = C.IPV6_AUTH_LEVEL - sysIPV6_ESP_TRANS_LEVEL = C.IPV6_ESP_TRANS_LEVEL - sysIPV6_ESP_NETWORK_LEVEL = C.IPV6_ESP_NETWORK_LEVEL - sysIPSEC6_OUTSA = C.IPSEC6_OUTSA - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL - sysIPV6_IPCOMP_LEVEL = C.IPV6_IPCOMP_LEVEL - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - sysIPV6_PIPEX = C.IPV6_PIPEX - - sysIPV6_RTABLE = C.IPV6_RTABLE - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_solaris.go b/vendor/golang.org/x/net/ipv6/defs_solaris.go deleted file mode 100644 index 0f8ce2b4..00000000 --- a/vendor/golang.org/x/net/ipv6/defs_solaris.go +++ /dev/null @@ -1,114 +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. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include <sys/socket.h> - -#include <netinet/in.h> -#include <netinet/icmp6.h> -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - - sysIPV6_RTHDR = C.IPV6_RTHDR - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - - sysIPV6_RECVRTHDRDSTOPTS = C.IPV6_RECVRTHDRDSTOPTS - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - sysIPV6_SEC_OPT = C.IPV6_SEC_OPT - sysIPV6_SRC_PREFERENCES = C.IPV6_SRC_PREFERENCES - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - sysIPV6_PATHMTU = C.IPV6_PATHMTU - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - - sysIPV6_PREFER_SRC_HOME = C.IPV6_PREFER_SRC_HOME - sysIPV6_PREFER_SRC_COA = C.IPV6_PREFER_SRC_COA - sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC - sysIPV6_PREFER_SRC_TMP = C.IPV6_PREFER_SRC_TMP - sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA - sysIPV6_PREFER_SRC_CGA = C.IPV6_PREFER_SRC_CGA - - sysIPV6_PREFER_SRC_MIPMASK = C.IPV6_PREFER_SRC_MIPMASK - sysIPV6_PREFER_SRC_MIPDEFAULT = C.IPV6_PREFER_SRC_MIPDEFAULT - sysIPV6_PREFER_SRC_TMPMASK = C.IPV6_PREFER_SRC_TMPMASK - sysIPV6_PREFER_SRC_TMPDEFAULT = C.IPV6_PREFER_SRC_TMPDEFAULT - sysIPV6_PREFER_SRC_CGAMASK = C.IPV6_PREFER_SRC_CGAMASK - sysIPV6_PREFER_SRC_CGADEFAULT = C.IPV6_PREFER_SRC_CGADEFAULT - - sysIPV6_PREFER_SRC_MASK = C.IPV6_PREFER_SRC_MASK - - sysIPV6_PREFER_SRC_DEFAULT = C.IPV6_PREFER_SRC_DEFAULT - - sysIPV6_BOUND_IF = C.IPV6_BOUND_IF - sysIPV6_UNSPEC_SRC = C.IPV6_UNSPEC_SRC - - sysICMP6_FILTER = C.ICMP6_FILTER - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/dgramopt.go b/vendor/golang.org/x/net/ipv6/dgramopt.go deleted file mode 100644 index 703dafe8..00000000 --- a/vendor/golang.org/x/net/ipv6/dgramopt.go +++ /dev/null @@ -1,302 +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 ipv6 - -import ( - "net" - "syscall" - - "golang.org/x/net/bpf" -) - -// MulticastHopLimit returns the hop limit field value for outgoing -// multicast packets. -func (c *dgramOpt) MulticastHopLimit() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastHopLimit] - if !ok { - return 0, errOpNoSupport - } - return so.GetInt(c.Conn) -} - -// SetMulticastHopLimit sets the hop limit field value for future -// outgoing multicast packets. -func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastHopLimit] - if !ok { - return errOpNoSupport - } - return so.SetInt(c.Conn, hoplim) -} - -// MulticastInterface returns the default interface for multicast -// packet transmissions. -func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { - if !c.ok() { - return nil, syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastInterface] - if !ok { - return nil, errOpNoSupport - } - return so.getMulticastInterface(c.Conn) -} - -// SetMulticastInterface sets the default interface for future -// multicast packet transmissions. -func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastInterface] - if !ok { - return errOpNoSupport - } - return so.setMulticastInterface(c.Conn, ifi) -} - -// MulticastLoopback reports whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) MulticastLoopback() (bool, error) { - if !c.ok() { - return false, syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastLoopback] - if !ok { - return false, errOpNoSupport - } - on, err := so.GetInt(c.Conn) - if err != nil { - return false, err - } - return on == 1, nil -} - -// SetMulticastLoopback sets whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) SetMulticastLoopback(on bool) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoMulticastLoopback] - if !ok { - return errOpNoSupport - } - return so.SetInt(c.Conn, boolint(on)) -} - -// JoinGroup joins the group address group on the interface ifi. -// By default all sources that can cast data to group are accepted. -// It's possible to mute and unmute data transmission from a specific -// source by using ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup. -// JoinGroup uses the system assigned multicast interface when ifi is -// nil, although this is not recommended because the assignment -// depends on platforms and sometimes it might require routing -// configuration. -func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoJoinGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - return so.setGroup(c.Conn, ifi, grp) -} - -// LeaveGroup leaves the group address group on the interface ifi -// regardless of whether the group is any-source group or -// source-specific group. -func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoLeaveGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - return so.setGroup(c.Conn, ifi, grp) -} - -// JoinSourceSpecificGroup joins the source-specific group comprising -// group and source on the interface ifi. -// JoinSourceSpecificGroup uses the system assigned multicast -// interface when ifi is nil, although this is not recommended because -// the assignment depends on platforms and sometimes it might require -// routing configuration. -func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoJoinSourceGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// LeaveSourceSpecificGroup leaves the source-specific group on the -// interface ifi. -func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoLeaveSourceGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// ExcludeSourceSpecificGroup excludes the source-specific group from -// the already joined any-source groups by JoinGroup on the interface -// ifi. -func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoBlockSourceGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// IncludeSourceSpecificGroup includes the excluded source-specific -// group by ExcludeSourceSpecificGroup again on the interface ifi. -func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoUnblockSourceGroup] - if !ok { - return errOpNoSupport - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// Checksum reports whether the kernel will compute, store or verify a -// checksum for both incoming and outgoing packets. If on is true, it -// returns an offset in bytes into the data of where the checksum -// field is located. -func (c *dgramOpt) Checksum() (on bool, offset int, err error) { - if !c.ok() { - return false, 0, syscall.EINVAL - } - so, ok := sockOpts[ssoChecksum] - if !ok { - return false, 0, errOpNoSupport - } - offset, err = so.GetInt(c.Conn) - if err != nil { - return false, 0, err - } - if offset < 0 { - return false, 0, nil - } - return true, offset, nil -} - -// SetChecksum enables the kernel checksum processing. If on is ture, -// the offset should be an offset in bytes into the data of where the -// checksum field is located. -func (c *dgramOpt) SetChecksum(on bool, offset int) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoChecksum] - if !ok { - return errOpNoSupport - } - if !on { - offset = -1 - } - return so.SetInt(c.Conn, offset) -} - -// ICMPFilter returns an ICMP filter. -func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { - if !c.ok() { - return nil, syscall.EINVAL - } - so, ok := sockOpts[ssoICMPFilter] - if !ok { - return nil, errOpNoSupport - } - return so.getICMPFilter(c.Conn) -} - -// SetICMPFilter deploys the ICMP filter. -func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoICMPFilter] - if !ok { - return errOpNoSupport - } - return so.setICMPFilter(c.Conn, f) -} - -// SetBPF attaches a BPF program to the connection. -// -// Only supported on Linux. -func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoAttachFilter] - if !ok { - return errOpNoSupport - } - return so.setBPF(c.Conn, filter) -} diff --git a/vendor/golang.org/x/net/ipv6/doc.go b/vendor/golang.org/x/net/ipv6/doc.go deleted file mode 100644 index 664a97de..00000000 --- a/vendor/golang.org/x/net/ipv6/doc.go +++ /dev/null @@ -1,243 +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 ipv6 implements IP-level socket options for the Internet -// Protocol version 6. -// -// The package provides IP-level socket options that allow -// manipulation of IPv6 facilities. -// -// The IPv6 protocol is defined in RFC 8200. -// Socket interface extensions are defined in RFC 3493, RFC 3542 and -// RFC 3678. -// MLDv1 and MLDv2 are defined in RFC 2710 and RFC 3810. -// Source-specific multicast is defined in RFC 4607. -// -// On Darwin, this package requires OS X Mavericks version 10.9 or -// above, or equivalent. -// -// -// Unicasting -// -// The options for unicasting are available for net.TCPConn, -// net.UDPConn and net.IPConn which are created as network connections -// that use the IPv6 transport. When a single TCP connection carrying -// a data flow of multiple packets needs to indicate the flow is -// important, Conn is used to set the traffic class field on the IPv6 -// header for each packet. -// -// ln, err := net.Listen("tcp6", "[::]:1024") -// if err != nil { -// // error handling -// } -// defer ln.Close() -// for { -// c, err := ln.Accept() -// if err != nil { -// // error handling -// } -// go func(c net.Conn) { -// defer c.Close() -// -// The outgoing packets will be labeled DiffServ assured forwarding -// class 1 low drop precedence, known as AF11 packets. -// -// if err := ipv6.NewConn(c).SetTrafficClass(0x28); err != nil { -// // error handling -// } -// if _, err := c.Write(data); err != nil { -// // error handling -// } -// }(c) -// } -// -// -// Multicasting -// -// The options for multicasting are available for net.UDPConn and -// net.IPconn which are created as network connections that use the -// IPv6 transport. A few network facilities must be prepared before -// you begin multicasting, at a minimum joining network interfaces and -// multicast groups. -// -// en0, err := net.InterfaceByName("en0") -// if err != nil { -// // error handling -// } -// en1, err := net.InterfaceByIndex(911) -// if err != nil { -// // error handling -// } -// group := net.ParseIP("ff02::114") -// -// First, an application listens to an appropriate address with an -// appropriate service port. -// -// c, err := net.ListenPacket("udp6", "[::]:1024") -// if err != nil { -// // error handling -// } -// defer c.Close() -// -// Second, the application joins multicast groups, starts listening to -// the groups on the specified network interfaces. Note that the -// service port for transport layer protocol does not matter with this -// operation as joining groups affects only network and link layer -// protocols, such as IPv6 and Ethernet. -// -// p := ipv6.NewPacketConn(c) -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { -// // error handling -// } -// -// The application might set per packet control message transmissions -// between the protocol stack within the kernel. When the application -// needs a destination address on an incoming packet, -// SetControlMessage of PacketConn is used to enable control message -// transmissions. -// -// if err := p.SetControlMessage(ipv6.FlagDst, true); err != nil { -// // error handling -// } -// -// The application could identify whether the received packets are -// of interest by using the control message that contains the -// destination address of the received packet. -// -// b := make([]byte, 1500) -// for { -// n, rcm, src, err := p.ReadFrom(b) -// if err != nil { -// // error handling -// } -// if rcm.Dst.IsMulticast() { -// if rcm.Dst.Equal(group) { -// // joined group, do something -// } else { -// // unknown group, discard -// continue -// } -// } -// -// The application can also send both unicast and multicast packets. -// -// p.SetTrafficClass(0x0) -// p.SetHopLimit(16) -// if _, err := p.WriteTo(data[:n], nil, src); err != nil { -// // error handling -// } -// dst := &net.UDPAddr{IP: group, Port: 1024} -// wcm := ipv6.ControlMessage{TrafficClass: 0xe0, HopLimit: 1} -// for _, ifi := range []*net.Interface{en0, en1} { -// wcm.IfIndex = ifi.Index -// if _, err := p.WriteTo(data[:n], &wcm, dst); err != nil { -// // error handling -// } -// } -// } -// -// -// More multicasting -// -// An application that uses PacketConn may join multiple multicast -// groups. For example, a UDP listener with port 1024 might join two -// different groups across over two different network interfaces by -// using: -// -// c, err := net.ListenPacket("udp6", "[::]:1024") -// if err != nil { -// // error handling -// } -// defer c.Close() -// p := ipv6.NewPacketConn(c) -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::1:114")}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil { -// // error handling -// } -// -// It is possible for multiple UDP listeners that listen on the same -// UDP port to join the same multicast group. The net package will -// provide a socket that listens to a wildcard address with reusable -// UDP port when an appropriate multicast address prefix is passed to -// the net.ListenPacket or net.ListenUDP. -// -// c1, err := net.ListenPacket("udp6", "[ff02::]:1024") -// if err != nil { -// // error handling -// } -// defer c1.Close() -// c2, err := net.ListenPacket("udp6", "[ff02::]:1024") -// if err != nil { -// // error handling -// } -// defer c2.Close() -// p1 := ipv6.NewPacketConn(c1) -// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { -// // error handling -// } -// p2 := ipv6.NewPacketConn(c2) -// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { -// // error handling -// } -// -// Also it is possible for the application to leave or rejoin a -// multicast group on the network interface. -// -// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff01::114")}); err != nil { -// // error handling -// } -// -// -// Source-specific multicasting -// -// An application that uses PacketConn on MLDv2 supported platform is -// able to join source-specific multicast groups. -// The application may use JoinSourceSpecificGroup and -// LeaveSourceSpecificGroup for the operation known as "include" mode, -// -// ssmgroup := net.UDPAddr{IP: net.ParseIP("ff32::8000:9")} -// ssmsource := net.UDPAddr{IP: net.ParseIP("fe80::cafe")} -// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { -// // error handling -// } -// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { -// // error handling -// } -// -// or JoinGroup, ExcludeSourceSpecificGroup, -// IncludeSourceSpecificGroup and LeaveGroup for the operation known -// as "exclude" mode. -// -// exclsource := net.UDPAddr{IP: net.ParseIP("fe80::dead")} -// if err := p.JoinGroup(en0, &ssmgroup); err != nil { -// // error handling -// } -// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { -// // error handling -// } -// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { -// // error handling -// } -// -// Note that it depends on each platform implementation what happens -// when an application which runs on MLDv2 unsupported platform uses -// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. -// In general the platform tries to fall back to conversations using -// MLDv1 and starts to listen to multicast traffic. -// In the fallback case, ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup may return an error. -package ipv6 // import "golang.org/x/net/ipv6" - -// BUG(mikio): This package is not implemented on NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv6/endpoint.go b/vendor/golang.org/x/net/ipv6/endpoint.go deleted file mode 100644 index 0624c174..00000000 --- a/vendor/golang.org/x/net/ipv6/endpoint.go +++ /dev/null @@ -1,128 +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 ipv6 - -import ( - "net" - "syscall" - "time" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the JoinSourceSpecificGroup, -// LeaveSourceSpecificGroup, ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup methods of PacketConn are not -// implemented. - -// A Conn represents a network endpoint that uses IPv6 transport. -// It allows to set basic IP-level socket options such as traffic -// class and hop limit. -type Conn struct { - genericOpt -} - -type genericOpt struct { - *socket.Conn -} - -func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } - -// PathMTU returns a path MTU value for the destination associated -// with the endpoint. -func (c *Conn) PathMTU() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - so, ok := sockOpts[ssoPathMTU] - if !ok { - return 0, errOpNoSupport - } - _, mtu, err := so.getMTUInfo(c.Conn) - if err != nil { - return 0, err - } - return mtu, nil -} - -// NewConn returns a new Conn. -func NewConn(c net.Conn) *Conn { - cc, _ := socket.NewConn(c) - return &Conn{ - genericOpt: genericOpt{Conn: cc}, - } -} - -// A PacketConn represents a packet network endpoint that uses IPv6 -// transport. It is used to control several IP-level socket options -// including IPv6 header manipulation. It also provides datagram -// based network I/O methods specific to the IPv6 and higher layer -// protocols such as OSPF, GRE, and UDP. -type PacketConn struct { - genericOpt - dgramOpt - payloadHandler -} - -type dgramOpt struct { - *socket.Conn -} - -func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } - -// SetControlMessage allows to receive the per packet basis IP-level -// socket options. -func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) -} - -// SetDeadline sets the read and write deadlines associated with the -// endpoint. -func (c *PacketConn) SetDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return c.payloadHandler.SetDeadline(t) -} - -// SetReadDeadline sets the read deadline associated with the -// endpoint. -func (c *PacketConn) SetReadDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return c.payloadHandler.SetReadDeadline(t) -} - -// SetWriteDeadline sets the write deadline associated with the -// endpoint. -func (c *PacketConn) SetWriteDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return c.payloadHandler.SetWriteDeadline(t) -} - -// Close closes the endpoint. -func (c *PacketConn) Close() error { - if !c.payloadHandler.ok() { - return syscall.EINVAL - } - return c.payloadHandler.Close() -} - -// NewPacketConn returns a new PacketConn using c as its underlying -// transport. -func NewPacketConn(c net.PacketConn) *PacketConn { - cc, _ := socket.NewConn(c.(net.Conn)) - return &PacketConn{ - genericOpt: genericOpt{Conn: cc}, - dgramOpt: dgramOpt{Conn: cc}, - payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, - } -} diff --git a/vendor/golang.org/x/net/ipv6/example_test.go b/vendor/golang.org/x/net/ipv6/example_test.go deleted file mode 100644 index e761aa2a..00000000 --- a/vendor/golang.org/x/net/ipv6/example_test.go +++ /dev/null @@ -1,216 +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 ipv6_test - -import ( - "fmt" - "log" - "net" - "os" - "time" - - "golang.org/x/net/icmp" - "golang.org/x/net/ipv6" -) - -func ExampleConn_markingTCP() { - ln, err := net.Listen("tcp", "[::]:1024") - if err != nil { - log.Fatal(err) - } - defer ln.Close() - - for { - c, err := ln.Accept() - if err != nil { - log.Fatal(err) - } - go func(c net.Conn) { - defer c.Close() - if c.RemoteAddr().(*net.TCPAddr).IP.To16() != nil && c.RemoteAddr().(*net.TCPAddr).IP.To4() == nil { - p := ipv6.NewConn(c) - if err := p.SetTrafficClass(0x28); err != nil { // DSCP AF11 - log.Fatal(err) - } - if err := p.SetHopLimit(128); err != nil { - log.Fatal(err) - } - } - if _, err := c.Write([]byte("HELLO-R-U-THERE-ACK")); err != nil { - log.Fatal(err) - } - }(c) - } -} - -func ExamplePacketConn_servingOneShotMulticastDNS() { - c, err := net.ListenPacket("udp6", "[::]:5353") // mDNS over UDP - if err != nil { - log.Fatal(err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - - en0, err := net.InterfaceByName("en0") - if err != nil { - log.Fatal(err) - } - mDNSLinkLocal := net.UDPAddr{IP: net.ParseIP("ff02::fb")} - if err := p.JoinGroup(en0, &mDNSLinkLocal); err != nil { - log.Fatal(err) - } - defer p.LeaveGroup(en0, &mDNSLinkLocal) - if err := p.SetControlMessage(ipv6.FlagDst|ipv6.FlagInterface, true); err != nil { - log.Fatal(err) - } - - var wcm ipv6.ControlMessage - b := make([]byte, 1500) - for { - _, rcm, peer, err := p.ReadFrom(b) - if err != nil { - log.Fatal(err) - } - if !rcm.Dst.IsMulticast() || !rcm.Dst.Equal(mDNSLinkLocal.IP) { - continue - } - wcm.IfIndex = rcm.IfIndex - answers := []byte("FAKE-MDNS-ANSWERS") // fake mDNS answers, you need to implement this - if _, err := p.WriteTo(answers, &wcm, peer); err != nil { - log.Fatal(err) - } - } -} - -func ExamplePacketConn_tracingIPPacketRoute() { - // Tracing an IP packet route to www.google.com. - - const host = "www.google.com" - ips, err := net.LookupIP(host) - if err != nil { - log.Fatal(err) - } - var dst net.IPAddr - for _, ip := range ips { - if ip.To16() != nil && ip.To4() == nil { - dst.IP = ip - fmt.Printf("using %v for tracing an IP packet route to %s\n", dst.IP, host) - break - } - } - if dst.IP == nil { - log.Fatal("no AAAA record found") - } - - c, err := net.ListenPacket("ip6:58", "::") // ICMP for IPv6 - if err != nil { - log.Fatal(err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - - if err := p.SetControlMessage(ipv6.FlagHopLimit|ipv6.FlagSrc|ipv6.FlagDst|ipv6.FlagInterface, true); err != nil { - log.Fatal(err) - } - wm := icmp.Message{ - Type: ipv6.ICMPTypeEchoRequest, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, - Data: []byte("HELLO-R-U-THERE"), - }, - } - var f ipv6.ICMPFilter - f.SetAll(true) - f.Accept(ipv6.ICMPTypeTimeExceeded) - f.Accept(ipv6.ICMPTypeEchoReply) - if err := p.SetICMPFilter(&f); err != nil { - log.Fatal(err) - } - - var wcm ipv6.ControlMessage - rb := make([]byte, 1500) - for i := 1; i <= 64; i++ { // up to 64 hops - wm.Body.(*icmp.Echo).Seq = i - wb, err := wm.Marshal(nil) - if err != nil { - log.Fatal(err) - } - - // In the real world usually there are several - // multiple traffic-engineered paths for each hop. - // You may need to probe a few times to each hop. - begin := time.Now() - wcm.HopLimit = i - if _, err := p.WriteTo(wb, &wcm, &dst); err != nil { - log.Fatal(err) - } - if err := p.SetReadDeadline(time.Now().Add(3 * time.Second)); err != nil { - log.Fatal(err) - } - n, rcm, peer, err := p.ReadFrom(rb) - if err != nil { - if err, ok := err.(net.Error); ok && err.Timeout() { - fmt.Printf("%v\t*\n", i) - continue - } - log.Fatal(err) - } - rm, err := icmp.ParseMessage(58, rb[:n]) - if err != nil { - log.Fatal(err) - } - rtt := time.Since(begin) - - // In the real world you need to determine whether the - // received message is yours using ControlMessage.Src, - // ControlMesage.Dst, icmp.Echo.ID and icmp.Echo.Seq. - switch rm.Type { - case ipv6.ICMPTypeTimeExceeded: - names, _ := net.LookupAddr(peer.String()) - fmt.Printf("%d\t%v %+v %v\n\t%+v\n", i, peer, names, rtt, rcm) - case ipv6.ICMPTypeEchoReply: - names, _ := net.LookupAddr(peer.String()) - fmt.Printf("%d\t%v %+v %v\n\t%+v\n", i, peer, names, rtt, rcm) - return - } - } -} - -func ExamplePacketConn_advertisingOSPFHello() { - c, err := net.ListenPacket("ip6:89", "::") // OSPF for IPv6 - if err != nil { - log.Fatal(err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - - en0, err := net.InterfaceByName("en0") - if err != nil { - log.Fatal(err) - } - allSPFRouters := net.IPAddr{IP: net.ParseIP("ff02::5")} - if err := p.JoinGroup(en0, &allSPFRouters); err != nil { - log.Fatal(err) - } - defer p.LeaveGroup(en0, &allSPFRouters) - - hello := make([]byte, 24) // fake hello data, you need to implement this - ospf := make([]byte, 16) // fake ospf header, you need to implement this - ospf[0] = 3 // version 3 - ospf[1] = 1 // hello packet - ospf = append(ospf, hello...) - if err := p.SetChecksum(true, 12); err != nil { - log.Fatal(err) - } - - cm := ipv6.ControlMessage{ - TrafficClass: 0xc0, // DSCP CS6 - HopLimit: 1, - IfIndex: en0.Index, - } - if _, err := p.WriteTo(ospf, &cm, &allSPFRouters); err != nil { - log.Fatal(err) - } -} diff --git a/vendor/golang.org/x/net/ipv6/gen.go b/vendor/golang.org/x/net/ipv6/gen.go deleted file mode 100644 index 47b7e9f0..00000000 --- a/vendor/golang.org/x/net/ipv6/gen.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -//go:generate go run gen.go - -// This program generates system adaptation constants and types, -// internet protocol constants and tables by reading template files -// and IANA protocol registries. -package main - -import ( - "bytes" - "encoding/xml" - "fmt" - "go/format" - "io" - "io/ioutil" - "net/http" - "os" - "os/exec" - "runtime" - "strconv" - "strings" -) - -func main() { - if err := genzsys(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - if err := geniana(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func genzsys() error { - defs := "defs_" + runtime.GOOS + ".go" - f, err := os.Open(defs) - if err != nil { - if os.IsNotExist(err) { - return nil - } - return err - } - f.Close() - cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) - b, err := cmd.Output() - if err != nil { - return err - } - b, err = format.Source(b) - if err != nil { - return err - } - zsys := "zsys_" + runtime.GOOS + ".go" - switch runtime.GOOS { - case "freebsd", "linux": - zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" - } - if err := ioutil.WriteFile(zsys, b, 0644); err != nil { - return err - } - return nil -} - -var registries = []struct { - url string - parse func(io.Writer, io.Reader) error -}{ - { - "https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xml", - parseICMPv6Parameters, - }, -} - -func geniana() error { - var bb bytes.Buffer - fmt.Fprintf(&bb, "// go generate gen.go\n") - fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n") - fmt.Fprintf(&bb, "package ipv6\n\n") - for _, r := range registries { - resp, err := http.Get(r.url) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) - } - if err := r.parse(&bb, resp.Body); err != nil { - return err - } - fmt.Fprintf(&bb, "\n") - } - b, err := format.Source(bb.Bytes()) - if err != nil { - return err - } - if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { - return err - } - return nil -} - -func parseICMPv6Parameters(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var icp icmpv6Parameters - if err := dec.Decode(&icp); err != nil { - return err - } - prs := icp.escape() - fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) - fmt.Fprintf(w, "const (\n") - for _, pr := range prs { - if pr.Name == "" { - continue - } - fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Name, pr.Value) - fmt.Fprintf(w, "// %s\n", pr.OrigName) - } - fmt.Fprintf(w, ")\n\n") - fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) - fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") - for _, pr := range prs { - if pr.Name == "" { - continue - } - fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigName)) - } - fmt.Fprintf(w, "}\n") - return nil -} - -type icmpv6Parameters struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Registries []struct { - Title string `xml:"title"` - Records []struct { - Value string `xml:"value"` - Name string `xml:"name"` - } `xml:"record"` - } `xml:"registry"` -} - -type canonICMPv6ParamRecord struct { - OrigName string - Name string - Value int -} - -func (icp *icmpv6Parameters) escape() []canonICMPv6ParamRecord { - id := -1 - for i, r := range icp.Registries { - if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { - id = i - break - } - } - if id < 0 { - return nil - } - prs := make([]canonICMPv6ParamRecord, len(icp.Registries[id].Records)) - sr := strings.NewReplacer( - "Messages", "", - "Message", "", - "ICMP", "", - "+", "P", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, pr := range icp.Registries[id].Records { - if strings.Contains(pr.Name, "Reserved") || - strings.Contains(pr.Name, "Unassigned") || - strings.Contains(pr.Name, "Deprecated") || - strings.Contains(pr.Name, "Experiment") || - strings.Contains(pr.Name, "experiment") { - continue - } - ss := strings.Split(pr.Name, "\n") - if len(ss) > 1 { - prs[i].Name = strings.Join(ss, " ") - } else { - prs[i].Name = ss[0] - } - s := strings.TrimSpace(prs[i].Name) - prs[i].OrigName = s - prs[i].Name = sr.Replace(s) - prs[i].Value, _ = strconv.Atoi(pr.Value) - } - return prs -} diff --git a/vendor/golang.org/x/net/ipv6/genericopt.go b/vendor/golang.org/x/net/ipv6/genericopt.go deleted file mode 100644 index e9dbc2e1..00000000 --- a/vendor/golang.org/x/net/ipv6/genericopt.go +++ /dev/null @@ -1,58 +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 ipv6 - -import "syscall" - -// TrafficClass returns the traffic class field value for outgoing -// packets. -func (c *genericOpt) TrafficClass() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - so, ok := sockOpts[ssoTrafficClass] - if !ok { - return 0, errOpNoSupport - } - return so.GetInt(c.Conn) -} - -// SetTrafficClass sets the traffic class field value for future -// outgoing packets. -func (c *genericOpt) SetTrafficClass(tclass int) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoTrafficClass] - if !ok { - return errOpNoSupport - } - return so.SetInt(c.Conn, tclass) -} - -// HopLimit returns the hop limit field value for outgoing packets. -func (c *genericOpt) HopLimit() (int, error) { - if !c.ok() { - return 0, syscall.EINVAL - } - so, ok := sockOpts[ssoHopLimit] - if !ok { - return 0, errOpNoSupport - } - return so.GetInt(c.Conn) -} - -// SetHopLimit sets the hop limit field value for future outgoing -// packets. -func (c *genericOpt) SetHopLimit(hoplim int) error { - if !c.ok() { - return syscall.EINVAL - } - so, ok := sockOpts[ssoHopLimit] - if !ok { - return errOpNoSupport - } - return so.SetInt(c.Conn, hoplim) -} diff --git a/vendor/golang.org/x/net/ipv6/header.go b/vendor/golang.org/x/net/ipv6/header.go deleted file mode 100644 index e05cb08b..00000000 --- a/vendor/golang.org/x/net/ipv6/header.go +++ /dev/null @@ -1,55 +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 ipv6 - -import ( - "encoding/binary" - "fmt" - "net" -) - -const ( - Version = 6 // protocol version - HeaderLen = 40 // header length -) - -// A Header represents an IPv6 base header. -type Header struct { - Version int // protocol version - TrafficClass int // traffic class - FlowLabel int // flow label - PayloadLen int // payload length - NextHeader int // next header - HopLimit int // hop limit - Src net.IP // source address - Dst net.IP // destination address -} - -func (h *Header) String() string { - if h == nil { - return "<nil>" - } - return fmt.Sprintf("ver=%d tclass=%#x flowlbl=%#x payloadlen=%d nxthdr=%d hoplim=%d src=%v dst=%v", h.Version, h.TrafficClass, h.FlowLabel, h.PayloadLen, h.NextHeader, h.HopLimit, h.Src, h.Dst) -} - -// ParseHeader parses b as an IPv6 base header. -func ParseHeader(b []byte) (*Header, error) { - if len(b) < HeaderLen { - return nil, errHeaderTooShort - } - h := &Header{ - Version: int(b[0]) >> 4, - TrafficClass: int(b[0]&0x0f)<<4 | int(b[1])>>4, - FlowLabel: int(b[1]&0x0f)<<16 | int(b[2])<<8 | int(b[3]), - PayloadLen: int(binary.BigEndian.Uint16(b[4:6])), - NextHeader: int(b[6]), - HopLimit: int(b[7]), - } - h.Src = make(net.IP, net.IPv6len) - copy(h.Src, b[8:24]) - h.Dst = make(net.IP, net.IPv6len) - copy(h.Dst, b[24:40]) - return h, nil -} diff --git a/vendor/golang.org/x/net/ipv6/header_test.go b/vendor/golang.org/x/net/ipv6/header_test.go deleted file mode 100644 index ca11dc23..00000000 --- a/vendor/golang.org/x/net/ipv6/header_test.go +++ /dev/null @@ -1,55 +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 ipv6_test - -import ( - "net" - "reflect" - "strings" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/ipv6" -) - -var ( - wireHeaderFromKernel = [ipv6.HeaderLen]byte{ - 0x69, 0x8b, 0xee, 0xf1, - 0xca, 0xfe, 0x2c, 0x01, - 0x20, 0x01, 0x0d, 0xb8, - 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x20, 0x01, 0x0d, 0xb8, - 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - } - - testHeader = &ipv6.Header{ - Version: ipv6.Version, - TrafficClass: iana.DiffServAF43, - FlowLabel: 0xbeef1, - PayloadLen: 0xcafe, - NextHeader: iana.ProtocolIPv6Frag, - HopLimit: 1, - Src: net.ParseIP("2001:db8:1::1"), - Dst: net.ParseIP("2001:db8:2::1"), - } -) - -func TestParseHeader(t *testing.T) { - h, err := ipv6.ParseHeader(wireHeaderFromKernel[:]) - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(h, testHeader) { - t.Fatalf("got %#v; want %#v", h, testHeader) - } - s := h.String() - if strings.Contains(s, ",") { - t.Fatalf("should be space-separated values: %s", s) - } -} diff --git a/vendor/golang.org/x/net/ipv6/helper.go b/vendor/golang.org/x/net/ipv6/helper.go deleted file mode 100644 index 25974013..00000000 --- a/vendor/golang.org/x/net/ipv6/helper.go +++ /dev/null @@ -1,57 +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 ipv6 - -import ( - "errors" - "net" -) - -var ( - errMissingAddress = errors.New("missing address") - errHeaderTooShort = errors.New("header too short") - errInvalidConnType = errors.New("invalid conn type") - errOpNoSupport = errors.New("operation not supported") - errNoSuchInterface = errors.New("no such interface") -) - -func boolint(b bool) int { - if b { - return 1 - } - return 0 -} - -func netAddrToIP16(a net.Addr) net.IP { - switch v := a.(type) { - case *net.UDPAddr: - if ip := v.IP.To16(); ip != nil && ip.To4() == nil { - return ip - } - case *net.IPAddr: - if ip := v.IP.To16(); ip != nil && ip.To4() == nil { - return ip - } - } - return nil -} - -func opAddr(a net.Addr) net.Addr { - switch a.(type) { - case *net.TCPAddr: - if a == nil { - return nil - } - case *net.UDPAddr: - if a == nil { - return nil - } - case *net.IPAddr: - if a == nil { - return nil - } - } - return a -} diff --git a/vendor/golang.org/x/net/ipv6/iana.go b/vendor/golang.org/x/net/ipv6/iana.go deleted file mode 100644 index 3c6214fb..00000000 --- a/vendor/golang.org/x/net/ipv6/iana.go +++ /dev/null @@ -1,82 +0,0 @@ -// go generate gen.go -// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -package ipv6 - -// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2015-07-07 -const ( - ICMPTypeDestinationUnreachable ICMPType = 1 // Destination Unreachable - ICMPTypePacketTooBig ICMPType = 2 // Packet Too Big - ICMPTypeTimeExceeded ICMPType = 3 // Time Exceeded - ICMPTypeParameterProblem ICMPType = 4 // Parameter Problem - ICMPTypeEchoRequest ICMPType = 128 // Echo Request - ICMPTypeEchoReply ICMPType = 129 // Echo Reply - ICMPTypeMulticastListenerQuery ICMPType = 130 // Multicast Listener Query - ICMPTypeMulticastListenerReport ICMPType = 131 // Multicast Listener Report - ICMPTypeMulticastListenerDone ICMPType = 132 // Multicast Listener Done - ICMPTypeRouterSolicitation ICMPType = 133 // Router Solicitation - ICMPTypeRouterAdvertisement ICMPType = 134 // Router Advertisement - ICMPTypeNeighborSolicitation ICMPType = 135 // Neighbor Solicitation - ICMPTypeNeighborAdvertisement ICMPType = 136 // Neighbor Advertisement - ICMPTypeRedirect ICMPType = 137 // Redirect Message - ICMPTypeRouterRenumbering ICMPType = 138 // Router Renumbering - ICMPTypeNodeInformationQuery ICMPType = 139 // ICMP Node Information Query - ICMPTypeNodeInformationResponse ICMPType = 140 // ICMP Node Information Response - ICMPTypeInverseNeighborDiscoverySolicitation ICMPType = 141 // Inverse Neighbor Discovery Solicitation Message - ICMPTypeInverseNeighborDiscoveryAdvertisement ICMPType = 142 // Inverse Neighbor Discovery Advertisement Message - ICMPTypeVersion2MulticastListenerReport ICMPType = 143 // Version 2 Multicast Listener Report - ICMPTypeHomeAgentAddressDiscoveryRequest ICMPType = 144 // Home Agent Address Discovery Request Message - ICMPTypeHomeAgentAddressDiscoveryReply ICMPType = 145 // Home Agent Address Discovery Reply Message - ICMPTypeMobilePrefixSolicitation ICMPType = 146 // Mobile Prefix Solicitation - ICMPTypeMobilePrefixAdvertisement ICMPType = 147 // Mobile Prefix Advertisement - ICMPTypeCertificationPathSolicitation ICMPType = 148 // Certification Path Solicitation Message - ICMPTypeCertificationPathAdvertisement ICMPType = 149 // Certification Path Advertisement Message - ICMPTypeMulticastRouterAdvertisement ICMPType = 151 // Multicast Router Advertisement - ICMPTypeMulticastRouterSolicitation ICMPType = 152 // Multicast Router Solicitation - ICMPTypeMulticastRouterTermination ICMPType = 153 // Multicast Router Termination - ICMPTypeFMIPv6 ICMPType = 154 // FMIPv6 Messages - ICMPTypeRPLControl ICMPType = 155 // RPL Control Message - ICMPTypeILNPv6LocatorUpdate ICMPType = 156 // ILNPv6 Locator Update Message - ICMPTypeDuplicateAddressRequest ICMPType = 157 // Duplicate Address Request - ICMPTypeDuplicateAddressConfirmation ICMPType = 158 // Duplicate Address Confirmation - ICMPTypeMPLControl ICMPType = 159 // MPL Control Message -) - -// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2015-07-07 -var icmpTypes = map[ICMPType]string{ - 1: "destination unreachable", - 2: "packet too big", - 3: "time exceeded", - 4: "parameter problem", - 128: "echo request", - 129: "echo reply", - 130: "multicast listener query", - 131: "multicast listener report", - 132: "multicast listener done", - 133: "router solicitation", - 134: "router advertisement", - 135: "neighbor solicitation", - 136: "neighbor advertisement", - 137: "redirect message", - 138: "router renumbering", - 139: "icmp node information query", - 140: "icmp node information response", - 141: "inverse neighbor discovery solicitation message", - 142: "inverse neighbor discovery advertisement message", - 143: "version 2 multicast listener report", - 144: "home agent address discovery request message", - 145: "home agent address discovery reply message", - 146: "mobile prefix solicitation", - 147: "mobile prefix advertisement", - 148: "certification path solicitation message", - 149: "certification path advertisement message", - 151: "multicast router advertisement", - 152: "multicast router solicitation", - 153: "multicast router termination", - 154: "fmipv6 messages", - 155: "rpl control message", - 156: "ilnpv6 locator update message", - 157: "duplicate address request", - 158: "duplicate address confirmation", - 159: "mpl control message", -} diff --git a/vendor/golang.org/x/net/ipv6/icmp.go b/vendor/golang.org/x/net/ipv6/icmp.go deleted file mode 100644 index b7f48e27..00000000 --- a/vendor/golang.org/x/net/ipv6/icmp.go +++ /dev/null @@ -1,60 +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 ipv6 - -import "golang.org/x/net/internal/iana" - -// BUG(mikio): On Windows, methods related to ICMPFilter are not -// implemented. - -// An ICMPType represents a type of ICMP message. -type ICMPType int - -func (typ ICMPType) String() string { - s, ok := icmpTypes[typ] - if !ok { - return "<nil>" - } - return s -} - -// Protocol returns the ICMPv6 protocol number. -func (typ ICMPType) Protocol() int { - return iana.ProtocolIPv6ICMP -} - -// An ICMPFilter represents an ICMP message filter for incoming -// packets. The filter belongs to a packet delivery path on a host and -// it cannot interact with forwarding packets or tunnel-outer packets. -// -// Note: RFC 8200 defines a reasonable role model. A node means a -// device that implements IP. A router means a node that forwards IP -// packets not explicitly addressed to itself, and a host means a node -// that is not a router. -type ICMPFilter struct { - icmpv6Filter -} - -// Accept accepts incoming ICMP packets including the type field value -// typ. -func (f *ICMPFilter) Accept(typ ICMPType) { - f.accept(typ) -} - -// Block blocks incoming ICMP packets including the type field value -// typ. -func (f *ICMPFilter) Block(typ ICMPType) { - f.block(typ) -} - -// SetAll sets the filter action to the filter. -func (f *ICMPFilter) SetAll(block bool) { - f.setAll(block) -} - -// WillBlock reports whether the ICMP type will be blocked. -func (f *ICMPFilter) WillBlock(typ ICMPType) bool { - return f.willBlock(typ) -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_bsd.go b/vendor/golang.org/x/net/ipv6/icmp_bsd.go deleted file mode 100644 index e1a791de..00000000 --- a/vendor/golang.org/x/net/ipv6/icmp_bsd.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd netbsd openbsd - -package ipv6 - -func (f *icmpv6Filter) accept(typ ICMPType) { - f.Filt[typ>>5] |= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) block(typ ICMPType) { - f.Filt[typ>>5] &^= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) setAll(block bool) { - for i := range f.Filt { - if block { - f.Filt[i] = 0 - } else { - f.Filt[i] = 1<<32 - 1 - } - } -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - return f.Filt[typ>>5]&(1<<(uint32(typ)&31)) == 0 -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_linux.go b/vendor/golang.org/x/net/ipv6/icmp_linux.go deleted file mode 100644 index 647f6b44..00000000 --- a/vendor/golang.org/x/net/ipv6/icmp_linux.go +++ /dev/null @@ -1,27 +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 ipv6 - -func (f *icmpv6Filter) accept(typ ICMPType) { - f.Data[typ>>5] &^= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) block(typ ICMPType) { - f.Data[typ>>5] |= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) setAll(block bool) { - for i := range f.Data { - if block { - f.Data[i] = 1<<32 - 1 - } else { - f.Data[i] = 0 - } - } -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - return f.Data[typ>>5]&(1<<(uint32(typ)&31)) != 0 -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_solaris.go b/vendor/golang.org/x/net/ipv6/icmp_solaris.go deleted file mode 100644 index 7c23bb1c..00000000 --- a/vendor/golang.org/x/net/ipv6/icmp_solaris.go +++ /dev/null @@ -1,27 +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 ipv6 - -func (f *icmpv6Filter) accept(typ ICMPType) { - f.X__icmp6_filt[typ>>5] |= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) block(typ ICMPType) { - f.X__icmp6_filt[typ>>5] &^= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) setAll(block bool) { - for i := range f.X__icmp6_filt { - if block { - f.X__icmp6_filt[i] = 0 - } else { - f.X__icmp6_filt[i] = 1<<32 - 1 - } - } -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - return f.X__icmp6_filt[typ>>5]&(1<<(uint32(typ)&31)) == 0 -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_stub.go b/vendor/golang.org/x/net/ipv6/icmp_stub.go deleted file mode 100644 index c4b9be6d..00000000 --- a/vendor/golang.org/x/net/ipv6/icmp_stub.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -type icmpv6Filter struct { -} - -func (f *icmpv6Filter) accept(typ ICMPType) { -} - -func (f *icmpv6Filter) block(typ ICMPType) { -} - -func (f *icmpv6Filter) setAll(block bool) { -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - return false -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_test.go b/vendor/golang.org/x/net/ipv6/icmp_test.go deleted file mode 100644 index d8e9675d..00000000 --- a/vendor/golang.org/x/net/ipv6/icmp_test.go +++ /dev/null @@ -1,96 +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 ipv6_test - -import ( - "net" - "reflect" - "runtime" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -var icmpStringTests = []struct { - in ipv6.ICMPType - out string -}{ - {ipv6.ICMPTypeDestinationUnreachable, "destination unreachable"}, - - {256, "<nil>"}, -} - -func TestICMPString(t *testing.T) { - for _, tt := range icmpStringTests { - s := tt.in.String() - if s != tt.out { - t.Errorf("got %s; want %s", s, tt.out) - } - } -} - -func TestICMPFilter(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - - var f ipv6.ICMPFilter - for _, toggle := range []bool{false, true} { - f.SetAll(toggle) - for _, typ := range []ipv6.ICMPType{ - ipv6.ICMPTypeDestinationUnreachable, - ipv6.ICMPTypeEchoReply, - ipv6.ICMPTypeNeighborSolicitation, - ipv6.ICMPTypeDuplicateAddressConfirmation, - } { - f.Accept(typ) - if f.WillBlock(typ) { - t.Errorf("ipv6.ICMPFilter.Set(%v, false) failed", typ) - } - f.Block(typ) - if !f.WillBlock(typ) { - t.Errorf("ipv6.ICMPFilter.Set(%v, true) failed", typ) - } - } - } -} - -func TestSetICMPFilter(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - c, err := net.ListenPacket("ip6:ipv6-icmp", "::1") - if err != nil { - t.Fatal(err) - } - defer c.Close() - - p := ipv6.NewPacketConn(c) - - var f ipv6.ICMPFilter - f.SetAll(true) - f.Accept(ipv6.ICMPTypeEchoRequest) - f.Accept(ipv6.ICMPTypeEchoReply) - if err := p.SetICMPFilter(&f); err != nil { - t.Fatal(err) - } - kf, err := p.ICMPFilter() - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(kf, &f) { - t.Fatalf("got %#v; want %#v", kf, f) - } -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_windows.go b/vendor/golang.org/x/net/ipv6/icmp_windows.go deleted file mode 100644 index 443cd073..00000000 --- a/vendor/golang.org/x/net/ipv6/icmp_windows.go +++ /dev/null @@ -1,22 +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 ipv6 - -func (f *icmpv6Filter) accept(typ ICMPType) { - // TODO(mikio): implement this -} - -func (f *icmpv6Filter) block(typ ICMPType) { - // TODO(mikio): implement this -} - -func (f *icmpv6Filter) setAll(block bool) { - // TODO(mikio): implement this -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - // TODO(mikio): implement this - return false -} diff --git a/vendor/golang.org/x/net/ipv6/mocktransponder_test.go b/vendor/golang.org/x/net/ipv6/mocktransponder_test.go deleted file mode 100644 index 6efe56c6..00000000 --- a/vendor/golang.org/x/net/ipv6/mocktransponder_test.go +++ /dev/null @@ -1,32 +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 ipv6_test - -import ( - "net" - "testing" -) - -func connector(t *testing.T, network, addr string, done chan<- bool) { - defer func() { done <- true }() - - c, err := net.Dial(network, addr) - if err != nil { - t.Error(err) - return - } - c.Close() -} - -func acceptor(t *testing.T, ln net.Listener, done chan<- bool) { - defer func() { done <- true }() - - c, err := ln.Accept() - if err != nil { - t.Error(err) - return - } - c.Close() -} diff --git a/vendor/golang.org/x/net/ipv6/multicast_test.go b/vendor/golang.org/x/net/ipv6/multicast_test.go deleted file mode 100644 index 69a21cd3..00000000 --- a/vendor/golang.org/x/net/ipv6/multicast_test.go +++ /dev/null @@ -1,264 +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 ipv6_test - -import ( - "bytes" - "net" - "os" - "runtime" - "testing" - "time" - - "golang.org/x/net/icmp" - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -var packetConnReadWriteMulticastUDPTests = []struct { - addr string - grp, src *net.UDPAddr -}{ - {"[ff02::]:0", &net.UDPAddr{IP: net.ParseIP("ff02::114")}, nil}, // see RFC 4727 - - {"[ff30::8000:0]:0", &net.UDPAddr{IP: net.ParseIP("ff30::8000:1")}, &net.UDPAddr{IP: net.IPv6loopback}}, // see RFC 5771 -} - -func TestPacketConnReadWriteMulticastUDP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - if !nettest.SupportsIPv6MulticastDeliveryOnLoopback() { - t.Skipf("multicast delivery doesn't work correctly on %s", runtime.GOOS) - } - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagMulticast|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - for _, tt := range packetConnReadWriteMulticastUDPTests { - c, err := net.ListenPacket("udp6", tt.addr) - if err != nil { - t.Fatal(err) - } - defer c.Close() - - grp := *tt.grp - grp.Port = c.LocalAddr().(*net.UDPAddr).Port - p := ipv6.NewPacketConn(c) - defer p.Close() - if tt.src == nil { - if err := p.JoinGroup(ifi, &grp); err != nil { - t.Fatal(err) - } - defer p.LeaveGroup(ifi, &grp) - } else { - if err := p.JoinSourceSpecificGroup(ifi, &grp, tt.src); err != nil { - switch runtime.GOOS { - case "freebsd", "linux": - default: // platforms that don't support MLDv2 fail here - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - defer p.LeaveSourceSpecificGroup(ifi, &grp, tt.src) - } - if err := p.SetMulticastInterface(ifi); err != nil { - t.Fatal(err) - } - if _, err := p.MulticastInterface(); err != nil { - t.Fatal(err) - } - if err := p.SetMulticastLoopback(true); err != nil { - t.Fatal(err) - } - if _, err := p.MulticastLoopback(); err != nil { - t.Fatal(err) - } - - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - Src: net.IPv6loopback, - IfIndex: ifi.Index, - } - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - wb := []byte("HELLO-R-U-THERE") - - for i, toggle := range []bool{true, false, true} { - if err := p.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - if err := p.SetDeadline(time.Now().Add(200 * time.Millisecond)); err != nil { - t.Fatal(err) - } - cm.HopLimit = i + 1 - if n, err := p.WriteTo(wb, &cm, &grp); err != nil { - t.Fatal(err) - } else if n != len(wb) { - t.Fatal(err) - } - rb := make([]byte, 128) - if n, _, _, err := p.ReadFrom(rb); err != nil { - t.Fatal(err) - } else if !bytes.Equal(rb[:n], wb) { - t.Fatalf("got %v; want %v", rb[:n], wb) - } - } - } -} - -var packetConnReadWriteMulticastICMPTests = []struct { - grp, src *net.IPAddr -}{ - {&net.IPAddr{IP: net.ParseIP("ff02::114")}, nil}, // see RFC 4727 - - {&net.IPAddr{IP: net.ParseIP("ff30::8000:1")}, &net.IPAddr{IP: net.IPv6loopback}}, // see RFC 5771 -} - -func TestPacketConnReadWriteMulticastICMP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - if !nettest.SupportsIPv6MulticastDeliveryOnLoopback() { - t.Skipf("multicast delivery doesn't work correctly on %s", runtime.GOOS) - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagMulticast|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - for _, tt := range packetConnReadWriteMulticastICMPTests { - c, err := net.ListenPacket("ip6:ipv6-icmp", "::") - if err != nil { - t.Fatal(err) - } - defer c.Close() - - pshicmp := icmp.IPv6PseudoHeader(c.LocalAddr().(*net.IPAddr).IP, tt.grp.IP) - p := ipv6.NewPacketConn(c) - defer p.Close() - if tt.src == nil { - if err := p.JoinGroup(ifi, tt.grp); err != nil { - t.Fatal(err) - } - defer p.LeaveGroup(ifi, tt.grp) - } else { - if err := p.JoinSourceSpecificGroup(ifi, tt.grp, tt.src); err != nil { - switch runtime.GOOS { - case "freebsd", "linux": - default: // platforms that don't support MLDv2 fail here - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - defer p.LeaveSourceSpecificGroup(ifi, tt.grp, tt.src) - } - if err := p.SetMulticastInterface(ifi); err != nil { - t.Fatal(err) - } - if _, err := p.MulticastInterface(); err != nil { - t.Fatal(err) - } - if err := p.SetMulticastLoopback(true); err != nil { - t.Fatal(err) - } - if _, err := p.MulticastLoopback(); err != nil { - t.Fatal(err) - } - - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - Src: net.IPv6loopback, - IfIndex: ifi.Index, - } - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - - var f ipv6.ICMPFilter - f.SetAll(true) - f.Accept(ipv6.ICMPTypeEchoReply) - if err := p.SetICMPFilter(&f); err != nil { - t.Fatal(err) - } - - var psh []byte - for i, toggle := range []bool{true, false, true} { - if toggle { - psh = nil - if err := p.SetChecksum(true, 2); err != nil { - // Solaris never allows to - // modify ICMP properties. - if runtime.GOOS != "solaris" { - t.Fatal(err) - } - } - } else { - psh = pshicmp - // Some platforms never allow to - // disable the kernel checksum - // processing. - p.SetChecksum(false, -1) - } - wb, err := (&icmp.Message{ - Type: ipv6.ICMPTypeEchoRequest, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, Seq: i + 1, - Data: []byte("HELLO-R-U-THERE"), - }, - }).Marshal(psh) - if err != nil { - t.Fatal(err) - } - if err := p.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - if err := p.SetDeadline(time.Now().Add(200 * time.Millisecond)); err != nil { - t.Fatal(err) - } - cm.HopLimit = i + 1 - if n, err := p.WriteTo(wb, &cm, tt.grp); err != nil { - t.Fatal(err) - } else if n != len(wb) { - t.Fatalf("got %v; want %v", n, len(wb)) - } - rb := make([]byte, 128) - if n, _, _, err := p.ReadFrom(rb); err != nil { - switch runtime.GOOS { - case "darwin": // older darwin kernels have some limitation on receiving icmp packet through raw socket - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } else { - if m, err := icmp.ParseMessage(iana.ProtocolIPv6ICMP, rb[:n]); err != nil { - t.Fatal(err) - } else if m.Type != ipv6.ICMPTypeEchoReply || m.Code != 0 { - t.Fatalf("got type=%v, code=%v; want type=%v, code=%v", m.Type, m.Code, ipv6.ICMPTypeEchoReply, 0) - } - } - } - } -} diff --git a/vendor/golang.org/x/net/ipv6/multicastlistener_test.go b/vendor/golang.org/x/net/ipv6/multicastlistener_test.go deleted file mode 100644 index b27713e2..00000000 --- a/vendor/golang.org/x/net/ipv6/multicastlistener_test.go +++ /dev/null @@ -1,261 +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 ipv6_test - -import ( - "net" - "runtime" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -var udpMultipleGroupListenerTests = []net.Addr{ - &net.UDPAddr{IP: net.ParseIP("ff02::114")}, // see RFC 4727 - &net.UDPAddr{IP: net.ParseIP("ff02::1:114")}, - &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}, -} - -func TestUDPSinglePacketConnWithMultipleGroupListeners(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - for _, gaddr := range udpMultipleGroupListenerTests { - c, err := net.ListenPacket("udp6", "[::]:0") // wildcard address with non-reusable port - if err != nil { - t.Fatal(err) - } - defer c.Close() - - p := ipv6.NewPacketConn(c) - var mift []*net.Interface - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - for i, ifi := range ift { - if _, ok := nettest.IsMulticastCapable("ip6", &ifi); !ok { - continue - } - if err := p.JoinGroup(&ifi, gaddr); err != nil { - t.Fatal(err) - } - mift = append(mift, &ift[i]) - } - for _, ifi := range mift { - if err := p.LeaveGroup(ifi, gaddr); err != nil { - t.Fatal(err) - } - } - } -} - -func TestUDPMultiplePacketConnWithMultipleGroupListeners(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - for _, gaddr := range udpMultipleGroupListenerTests { - c1, err := net.ListenPacket("udp6", "[ff02::]:0") // wildcard address with reusable port - if err != nil { - t.Fatal(err) - } - defer c1.Close() - _, port, err := net.SplitHostPort(c1.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - c2, err := net.ListenPacket("udp6", net.JoinHostPort("ff02::", port)) // wildcard address with reusable port - if err != nil { - t.Fatal(err) - } - defer c2.Close() - - var ps [2]*ipv6.PacketConn - ps[0] = ipv6.NewPacketConn(c1) - ps[1] = ipv6.NewPacketConn(c2) - var mift []*net.Interface - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - for i, ifi := range ift { - if _, ok := nettest.IsMulticastCapable("ip6", &ifi); !ok { - continue - } - for _, p := range ps { - if err := p.JoinGroup(&ifi, gaddr); err != nil { - t.Fatal(err) - } - } - mift = append(mift, &ift[i]) - } - for _, ifi := range mift { - for _, p := range ps { - if err := p.LeaveGroup(ifi, gaddr); err != nil { - t.Fatal(err) - } - } - } - } -} - -func TestUDPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - gaddr := net.IPAddr{IP: net.ParseIP("ff02::114")} // see RFC 4727 - type ml struct { - c *ipv6.PacketConn - ifi *net.Interface - } - var mlt []*ml - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - port := "0" - for i, ifi := range ift { - ip, ok := nettest.IsMulticastCapable("ip6", &ifi) - if !ok { - continue - } - c, err := net.ListenPacket("udp6", net.JoinHostPort(ip.String()+"%"+ifi.Name, port)) // unicast address with non-reusable port - if err != nil { - // The listen may fail when the serivce is - // already in use, but it's fine because the - // purpose of this is not to test the - // bookkeeping of IP control block inside the - // kernel. - t.Log(err) - continue - } - defer c.Close() - if port == "0" { - _, port, err = net.SplitHostPort(c.LocalAddr().String()) - if err != nil { - t.Fatal(err) - } - } - p := ipv6.NewPacketConn(c) - if err := p.JoinGroup(&ifi, &gaddr); err != nil { - t.Fatal(err) - } - mlt = append(mlt, &ml{p, &ift[i]}) - } - for _, m := range mlt { - if err := m.c.LeaveGroup(m.ifi, &gaddr); err != nil { - t.Fatal(err) - } - } -} - -func TestIPSinglePacketConnWithSingleGroupListener(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - c, err := net.ListenPacket("ip6:ipv6-icmp", "::") // wildcard address - if err != nil { - t.Fatal(err) - } - defer c.Close() - - p := ipv6.NewPacketConn(c) - gaddr := net.IPAddr{IP: net.ParseIP("ff02::114")} // see RFC 4727 - var mift []*net.Interface - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - for i, ifi := range ift { - if _, ok := nettest.IsMulticastCapable("ip6", &ifi); !ok { - continue - } - if err := p.JoinGroup(&ifi, &gaddr); err != nil { - t.Fatal(err) - } - mift = append(mift, &ift[i]) - } - for _, ifi := range mift { - if err := p.LeaveGroup(ifi, &gaddr); err != nil { - t.Fatal(err) - } - } -} - -func TestIPPerInterfaceSinglePacketConnWithSingleGroupListener(t *testing.T) { - switch runtime.GOOS { - case "darwin", "dragonfly", "openbsd": // platforms that return fe80::1%lo0: bind: can't assign requested address - t.Skipf("not supported on %s", runtime.GOOS) - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - gaddr := net.IPAddr{IP: net.ParseIP("ff02::114")} // see RFC 4727 - type ml struct { - c *ipv6.PacketConn - ifi *net.Interface - } - var mlt []*ml - - ift, err := net.Interfaces() - if err != nil { - t.Fatal(err) - } - for i, ifi := range ift { - ip, ok := nettest.IsMulticastCapable("ip6", &ifi) - if !ok { - continue - } - c, err := net.ListenPacket("ip6:ipv6-icmp", ip.String()+"%"+ifi.Name) // unicast address - if err != nil { - t.Fatal(err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - if err := p.JoinGroup(&ifi, &gaddr); err != nil { - t.Fatal(err) - } - mlt = append(mlt, &ml{p, &ift[i]}) - } - for _, m := range mlt { - if err := m.c.LeaveGroup(m.ifi, &gaddr); err != nil { - t.Fatal(err) - } - } -} diff --git a/vendor/golang.org/x/net/ipv6/multicastsockopt_test.go b/vendor/golang.org/x/net/ipv6/multicastsockopt_test.go deleted file mode 100644 index 9e6b902d..00000000 --- a/vendor/golang.org/x/net/ipv6/multicastsockopt_test.go +++ /dev/null @@ -1,157 +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 ipv6_test - -import ( - "net" - "runtime" - "testing" - - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -var packetConnMulticastSocketOptionTests = []struct { - net, proto, addr string - grp, src net.Addr -}{ - {"udp6", "", "[ff02::]:0", &net.UDPAddr{IP: net.ParseIP("ff02::114")}, nil}, // see RFC 4727 - {"ip6", ":ipv6-icmp", "::", &net.IPAddr{IP: net.ParseIP("ff02::115")}, nil}, // see RFC 4727 - - {"udp6", "", "[ff30::8000:0]:0", &net.UDPAddr{IP: net.ParseIP("ff30::8000:1")}, &net.UDPAddr{IP: net.IPv6loopback}}, // see RFC 5771 - {"ip6", ":ipv6-icmp", "::", &net.IPAddr{IP: net.ParseIP("ff30::8000:2")}, &net.IPAddr{IP: net.IPv6loopback}}, // see RFC 5771 -} - -func TestPacketConnMulticastSocketOptions(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagMulticast|net.FlagLoopback) - if ifi == nil { - t.Skipf("not available on %s", runtime.GOOS) - } - - m, ok := nettest.SupportsRawIPSocket() - for _, tt := range packetConnMulticastSocketOptionTests { - if tt.net == "ip6" && !ok { - t.Log(m) - continue - } - c, err := net.ListenPacket(tt.net+tt.proto, tt.addr) - if err != nil { - t.Fatal(err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - defer p.Close() - - if tt.src == nil { - testMulticastSocketOptions(t, p, ifi, tt.grp) - } else { - testSourceSpecificMulticastSocketOptions(t, p, ifi, tt.grp, tt.src) - } - } -} - -type testIPv6MulticastConn interface { - MulticastHopLimit() (int, error) - SetMulticastHopLimit(ttl int) error - MulticastLoopback() (bool, error) - SetMulticastLoopback(bool) error - JoinGroup(*net.Interface, net.Addr) error - LeaveGroup(*net.Interface, net.Addr) error - JoinSourceSpecificGroup(*net.Interface, net.Addr, net.Addr) error - LeaveSourceSpecificGroup(*net.Interface, net.Addr, net.Addr) error - ExcludeSourceSpecificGroup(*net.Interface, net.Addr, net.Addr) error - IncludeSourceSpecificGroup(*net.Interface, net.Addr, net.Addr) error -} - -func testMulticastSocketOptions(t *testing.T, c testIPv6MulticastConn, ifi *net.Interface, grp net.Addr) { - const hoplim = 255 - if err := c.SetMulticastHopLimit(hoplim); err != nil { - t.Error(err) - return - } - if v, err := c.MulticastHopLimit(); err != nil { - t.Error(err) - return - } else if v != hoplim { - t.Errorf("got %v; want %v", v, hoplim) - return - } - - for _, toggle := range []bool{true, false} { - if err := c.SetMulticastLoopback(toggle); err != nil { - t.Error(err) - return - } - if v, err := c.MulticastLoopback(); err != nil { - t.Error(err) - return - } else if v != toggle { - t.Errorf("got %v; want %v", v, toggle) - return - } - } - - if err := c.JoinGroup(ifi, grp); err != nil { - t.Error(err) - return - } - if err := c.LeaveGroup(ifi, grp); err != nil { - t.Error(err) - return - } -} - -func testSourceSpecificMulticastSocketOptions(t *testing.T, c testIPv6MulticastConn, ifi *net.Interface, grp, src net.Addr) { - // MCAST_JOIN_GROUP -> MCAST_BLOCK_SOURCE -> MCAST_UNBLOCK_SOURCE -> MCAST_LEAVE_GROUP - if err := c.JoinGroup(ifi, grp); err != nil { - t.Error(err) - return - } - if err := c.ExcludeSourceSpecificGroup(ifi, grp, src); err != nil { - switch runtime.GOOS { - case "freebsd", "linux": - default: // platforms that don't support MLDv2 fail here - t.Logf("not supported on %s", runtime.GOOS) - return - } - t.Error(err) - return - } - if err := c.IncludeSourceSpecificGroup(ifi, grp, src); err != nil { - t.Error(err) - return - } - if err := c.LeaveGroup(ifi, grp); err != nil { - t.Error(err) - return - } - - // MCAST_JOIN_SOURCE_GROUP -> MCAST_LEAVE_SOURCE_GROUP - if err := c.JoinSourceSpecificGroup(ifi, grp, src); err != nil { - t.Error(err) - return - } - if err := c.LeaveSourceSpecificGroup(ifi, grp, src); err != nil { - t.Error(err) - return - } - - // MCAST_JOIN_SOURCE_GROUP -> MCAST_LEAVE_GROUP - if err := c.JoinSourceSpecificGroup(ifi, grp, src); err != nil { - t.Error(err) - return - } - if err := c.LeaveGroup(ifi, grp); err != nil { - t.Error(err) - return - } -} diff --git a/vendor/golang.org/x/net/ipv6/payload.go b/vendor/golang.org/x/net/ipv6/payload.go deleted file mode 100644 index a8197f16..00000000 --- a/vendor/golang.org/x/net/ipv6/payload.go +++ /dev/null @@ -1,23 +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 ipv6 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo -// methods of PacketConn is not implemented. - -// A payloadHandler represents the IPv6 datagram payload handler. -type payloadHandler struct { - net.PacketConn - *socket.Conn - rawOpt -} - -func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg.go b/vendor/golang.org/x/net/ipv6/payload_cmsg.go deleted file mode 100644 index 4ee4b062..00000000 --- a/vendor/golang.org/x/net/ipv6/payload_cmsg.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !nacl,!plan9,!windows - -package ipv6 - -import ( - "net" - "syscall" -) - -// ReadFrom reads a payload of the received IPv6 datagram, from the -// endpoint c, copying the payload into b. It returns the number of -// bytes copied into b, the control message cm and the source address -// src of the received datagram. -func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - if !c.ok() { - return 0, nil, nil, syscall.EINVAL - } - return c.readFrom(b) -} - -// WriteTo writes a payload of the IPv6 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the IPv6 header fields and the datagram path to be specified. The -// cm may be nil if control of the outgoing datagram is not required. -func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - if !c.ok() { - return 0, syscall.EINVAL - } - return c.writeTo(b, cm, dst) -} diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go deleted file mode 100644 index fdc6c399..00000000 --- a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_8.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.9 -// +build !nacl,!plan9,!windows - -package ipv6 - -import "net" - -func (c *payloadHandler) readFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - c.rawOpt.RLock() - oob := NewControlMessage(c.rawOpt.cflags) - c.rawOpt.RUnlock() - var nn int - switch c := c.PacketConn.(type) { - case *net.UDPConn: - if n, nn, _, src, err = c.ReadMsgUDP(b, oob); err != nil { - return 0, nil, nil, err - } - case *net.IPConn: - if n, nn, _, src, err = c.ReadMsgIP(b, oob); err != nil { - return 0, nil, nil, err - } - default: - return 0, nil, nil, &net.OpError{Op: "read", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Err: errInvalidConnType} - } - if nn > 0 { - cm = new(ControlMessage) - if err = cm.Parse(oob[:nn]); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - } - if cm != nil { - cm.Src = netAddrToIP16(src) - } - return -} - -func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - oob := cm.Marshal() - if dst == nil { - return 0, &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errMissingAddress} - } - switch c := c.PacketConn.(type) { - case *net.UDPConn: - n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr)) - case *net.IPConn: - n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr)) - default: - return 0, &net.OpError{Op: "write", Net: c.LocalAddr().Network(), Source: c.LocalAddr(), Addr: opAddr(dst), Err: errInvalidConnType} - } - return -} diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go b/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go deleted file mode 100644 index 8f6d02e2..00000000 --- a/vendor/golang.org/x/net/ipv6/payload_cmsg_go1_9.go +++ /dev/null @@ -1,57 +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. - -// +build go1.9 -// +build !nacl,!plan9,!windows - -package ipv6 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (c *payloadHandler) readFrom(b []byte) (int, *ControlMessage, net.Addr, error) { - c.rawOpt.RLock() - m := socket.Message{ - Buffers: [][]byte{b}, - OOB: NewControlMessage(c.rawOpt.cflags), - } - c.rawOpt.RUnlock() - switch c.PacketConn.(type) { - case *net.UDPConn: - if err := c.RecvMsg(&m, 0); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - case *net.IPConn: - if err := c.RecvMsg(&m, 0); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - default: - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} - } - var cm *ControlMessage - if m.NN > 0 { - cm = new(ControlMessage) - if err := cm.Parse(m.OOB[:m.NN]); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - cm.Src = netAddrToIP16(m.Addr) - } - return m.N, cm, m.Addr, nil -} - -func (c *payloadHandler) writeTo(b []byte, cm *ControlMessage, dst net.Addr) (int, error) { - m := socket.Message{ - Buffers: [][]byte{b}, - OOB: cm.Marshal(), - Addr: dst, - } - err := c.SendMsg(&m, 0) - if err != nil { - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} - } - return m.N, err -} diff --git a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go deleted file mode 100644 index 99a43542..00000000 --- a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build nacl plan9 windows - -package ipv6 - -import ( - "net" - "syscall" -) - -// ReadFrom reads a payload of the received IPv6 datagram, from the -// endpoint c, copying the payload into b. It returns the number of -// bytes copied into b, the control message cm and the source address -// src of the received datagram. -func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - if !c.ok() { - return 0, nil, nil, syscall.EINVAL - } - if n, src, err = c.PacketConn.ReadFrom(b); err != nil { - return 0, nil, nil, err - } - return -} - -// WriteTo writes a payload of the IPv6 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the IPv6 header fields and the datagram path to be specified. The -// cm may be nil if control of the outgoing datagram is not required. -func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - if !c.ok() { - return 0, syscall.EINVAL - } - if dst == nil { - return 0, errMissingAddress - } - return c.PacketConn.WriteTo(b, dst) -} diff --git a/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go b/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go deleted file mode 100644 index c11d92ae..00000000 --- a/vendor/golang.org/x/net/ipv6/readwrite_go1_8_test.go +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.9 - -package ipv6_test - -import ( - "bytes" - "fmt" - "net" - "runtime" - "strings" - "sync" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -func BenchmarkPacketConnReadWriteUnicast(b *testing.B) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - b.Skipf("not supported on %s", runtime.GOOS) - } - - payload := []byte("HELLO-R-U-THERE") - iph := []byte{ - 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01, - 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - } - greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00} - datagram := append(greh, append(iph, payload...)...) - bb := make([]byte, 128) - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - HopLimit: 1, - Src: net.IPv6loopback, - } - if ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback); ifi != nil { - cm.IfIndex = ifi.Index - } - - b.Run("UDP", func(b *testing.B) { - c, err := nettest.NewLocalPacketListener("udp6") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - dst := c.LocalAddr() - cf := ipv6.FlagHopLimit | ipv6.FlagInterface - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - b.Run("Net", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(payload, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("ToFrom", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(payload, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - }) - b.Run("IP", func(b *testing.B) { - switch runtime.GOOS { - case "netbsd": - b.Skip("need to configure gre on netbsd") - case "openbsd": - b.Skip("net.inet.gre.allow=0 by default on openbsd") - } - - c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - dst := c.LocalAddr() - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - b.Run("Net", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(datagram, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("ToFrom", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(datagram, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - }) -} - -func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - - payload := []byte("HELLO-R-U-THERE") - iph := []byte{ - 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01, - 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - } - greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00} - datagram := append(greh, append(iph, payload...)...) - - t.Run("UDP", func(t *testing.T) { - c, err := nettest.NewLocalPacketListener("udp6") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - t.Run("ToFrom", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr()) - }) - }) - t.Run("IP", func(t *testing.T) { - switch runtime.GOOS { - case "netbsd": - t.Skip("need to configure gre on netbsd") - case "openbsd": - t.Skip("net.inet.gre.allow=0 by default on openbsd") - } - - c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - t.Run("ToFrom", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr()) - }) - }) -} - -func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv6.PacketConn, data []byte, dst net.Addr) { - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - - if err := p.SetControlMessage(cf, true); err != nil { // probe before test - if nettest.ProtocolNotSupported(err) { - t.Skipf("not supported on %s", runtime.GOOS) - } - t.Fatal(err) - } - - var wg sync.WaitGroup - reader := func() { - defer wg.Done() - b := make([]byte, 128) - n, cm, _, err := p.ReadFrom(b) - if err != nil { - t.Error(err) - return - } - if !bytes.Equal(b[:n], data) { - t.Errorf("got %#v; want %#v", b[:n], data) - return - } - s := cm.String() - if strings.Contains(s, ",") { - t.Errorf("should be space-separated values: %s", s) - return - } - } - writer := func(toggle bool) { - defer wg.Done() - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - HopLimit: 1, - Src: net.IPv6loopback, - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if err := p.SetControlMessage(cf, toggle); err != nil { - t.Error(err) - return - } - n, err := p.WriteTo(data, &cm, dst) - if err != nil { - t.Error(err) - return - } - if n != len(data) { - t.Errorf("got %d; want %d", n, len(data)) - return - } - } - - const N = 10 - wg.Add(N) - for i := 0; i < N; i++ { - go reader() - } - wg.Add(2 * N) - for i := 0; i < 2*N; i++ { - go writer(i%2 != 0) - - } - wg.Add(N) - for i := 0; i < N; i++ { - go reader() - } - wg.Wait() -} diff --git a/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go b/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go deleted file mode 100644 index e2fd7337..00000000 --- a/vendor/golang.org/x/net/ipv6/readwrite_go1_9_test.go +++ /dev/null @@ -1,373 +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. - -// +build go1.9 - -package ipv6_test - -import ( - "bytes" - "fmt" - "net" - "runtime" - "strings" - "sync" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -func BenchmarkPacketConnReadWriteUnicast(b *testing.B) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - b.Skipf("not supported on %s", runtime.GOOS) - } - - payload := []byte("HELLO-R-U-THERE") - iph := []byte{ - 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01, - 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - } - greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00} - datagram := append(greh, append(iph, payload...)...) - bb := make([]byte, 128) - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - HopLimit: 1, - Src: net.IPv6loopback, - } - if ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback); ifi != nil { - cm.IfIndex = ifi.Index - } - - b.Run("UDP", func(b *testing.B) { - c, err := nettest.NewLocalPacketListener("udp6") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - dst := c.LocalAddr() - cf := ipv6.FlagHopLimit | ipv6.FlagInterface - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - wms := []ipv6.Message{ - { - Buffers: [][]byte{payload}, - Addr: dst, - OOB: cm.Marshal(), - }, - } - rms := []ipv6.Message{ - { - Buffers: [][]byte{bb}, - OOB: ipv6.NewControlMessage(cf), - }, - } - b.Run("Net", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(payload, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("ToFrom", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(payload, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("Batch", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteBatch(wms, 0); err != nil { - b.Fatal(err) - } - if _, err := p.ReadBatch(rms, 0); err != nil { - b.Fatal(err) - } - } - }) - }) - b.Run("IP", func(b *testing.B) { - switch runtime.GOOS { - case "netbsd": - b.Skip("need to configure gre on netbsd") - case "openbsd": - b.Skip("net.inet.gre.allow=0 by default on openbsd") - } - - c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - dst := c.LocalAddr() - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - wms := []ipv6.Message{ - { - Buffers: [][]byte{datagram}, - Addr: dst, - OOB: cm.Marshal(), - }, - } - rms := []ipv6.Message{ - { - Buffers: [][]byte{bb}, - OOB: ipv6.NewControlMessage(cf), - }, - } - b.Run("Net", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(datagram, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("ToFrom", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(datagram, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(bb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("Batch", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := p.WriteBatch(wms, 0); err != nil { - b.Fatal(err) - } - if _, err := p.ReadBatch(rms, 0); err != nil { - b.Fatal(err) - } - } - }) - }) -} - -func TestPacketConnConcurrentReadWriteUnicast(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - - payload := []byte("HELLO-R-U-THERE") - iph := []byte{ - 0x69, 0x8b, 0xee, 0xf1, 0xca, 0xfe, 0xff, 0x01, - 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x20, 0x01, 0x0d, 0xb8, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - } - greh := []byte{0x00, 0x00, 0x86, 0xdd, 0x00, 0x00, 0x00, 0x00} - datagram := append(greh, append(iph, payload...)...) - - t.Run("UDP", func(t *testing.T) { - c, err := nettest.NewLocalPacketListener("udp6") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - t.Run("ToFrom", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), false) - }) - t.Run("Batch", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, payload, c.LocalAddr(), true) - }) - }) - t.Run("IP", func(t *testing.T) { - switch runtime.GOOS { - case "netbsd": - t.Skip("need to configure gre on netbsd") - case "openbsd": - t.Skip("net.inet.gre.allow=0 by default on openbsd") - } - - c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolGRE), "::1") - if err != nil { - t.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - t.Run("ToFrom", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), false) - }) - t.Run("Batch", func(t *testing.T) { - testPacketConnConcurrentReadWriteUnicast(t, p, datagram, c.LocalAddr(), true) - }) - }) -} - -func testPacketConnConcurrentReadWriteUnicast(t *testing.T, p *ipv6.PacketConn, data []byte, dst net.Addr, batch bool) { - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - - if err := p.SetControlMessage(cf, true); err != nil { // probe before test - if nettest.ProtocolNotSupported(err) { - t.Skipf("not supported on %s", runtime.GOOS) - } - t.Fatal(err) - } - - var wg sync.WaitGroup - reader := func() { - defer wg.Done() - b := make([]byte, 128) - n, cm, _, err := p.ReadFrom(b) - if err != nil { - t.Error(err) - return - } - if !bytes.Equal(b[:n], data) { - t.Errorf("got %#v; want %#v", b[:n], data) - return - } - s := cm.String() - if strings.Contains(s, ",") { - t.Errorf("should be space-separated values: %s", s) - return - } - } - batchReader := func() { - defer wg.Done() - ms := []ipv6.Message{ - { - Buffers: [][]byte{make([]byte, 128)}, - OOB: ipv6.NewControlMessage(cf), - }, - } - n, err := p.ReadBatch(ms, 0) - if err != nil { - t.Error(err) - return - } - if n != len(ms) { - t.Errorf("got %d; want %d", n, len(ms)) - return - } - var cm ipv6.ControlMessage - if err := cm.Parse(ms[0].OOB[:ms[0].NN]); err != nil { - t.Error(err) - return - } - b := ms[0].Buffers[0][:ms[0].N] - if !bytes.Equal(b, data) { - t.Errorf("got %#v; want %#v", b, data) - return - } - s := cm.String() - if strings.Contains(s, ",") { - t.Errorf("should be space-separated values: %s", s) - return - } - } - writer := func(toggle bool) { - defer wg.Done() - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - HopLimit: 1, - Src: net.IPv6loopback, - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if err := p.SetControlMessage(cf, toggle); err != nil { - t.Error(err) - return - } - n, err := p.WriteTo(data, &cm, dst) - if err != nil { - t.Error(err) - return - } - if n != len(data) { - t.Errorf("got %d; want %d", n, len(data)) - return - } - } - batchWriter := func(toggle bool) { - defer wg.Done() - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - HopLimit: 1, - Src: net.IPv6loopback, - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if err := p.SetControlMessage(cf, toggle); err != nil { - t.Error(err) - return - } - ms := []ipv6.Message{ - { - Buffers: [][]byte{data}, - OOB: cm.Marshal(), - Addr: dst, - }, - } - n, err := p.WriteBatch(ms, 0) - if err != nil { - t.Error(err) - return - } - if n != len(ms) { - t.Errorf("got %d; want %d", n, len(ms)) - return - } - if ms[0].N != len(data) { - t.Errorf("got %d; want %d", ms[0].N, len(data)) - return - } - } - - const N = 10 - wg.Add(N) - for i := 0; i < N; i++ { - if batch { - go batchReader() - } else { - go reader() - } - } - wg.Add(2 * N) - for i := 0; i < 2*N; i++ { - if batch { - go batchWriter(i%2 != 0) - } else { - go writer(i%2 != 0) - } - } - wg.Add(N) - for i := 0; i < N; i++ { - if batch { - go batchReader() - } else { - go reader() - } - } - wg.Wait() -} diff --git a/vendor/golang.org/x/net/ipv6/readwrite_test.go b/vendor/golang.org/x/net/ipv6/readwrite_test.go deleted file mode 100644 index 206b915c..00000000 --- a/vendor/golang.org/x/net/ipv6/readwrite_test.go +++ /dev/null @@ -1,148 +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 ipv6_test - -import ( - "bytes" - "net" - "runtime" - "strings" - "sync" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -func BenchmarkReadWriteUnicast(b *testing.B) { - c, err := nettest.NewLocalPacketListener("udp6") - if err != nil { - b.Skipf("not supported on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err) - } - defer c.Close() - - dst := c.LocalAddr() - wb, rb := []byte("HELLO-R-U-THERE"), make([]byte, 128) - - b.Run("NetUDP", func(b *testing.B) { - for i := 0; i < b.N; i++ { - if _, err := c.WriteTo(wb, dst); err != nil { - b.Fatal(err) - } - if _, _, err := c.ReadFrom(rb); err != nil { - b.Fatal(err) - } - } - }) - b.Run("IPv6UDP", func(b *testing.B) { - p := ipv6.NewPacketConn(c) - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - if err := p.SetControlMessage(cf, true); err != nil { - b.Fatal(err) - } - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - HopLimit: 1, - } - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) - if ifi != nil { - cm.IfIndex = ifi.Index - } - - for i := 0; i < b.N; i++ { - if _, err := p.WriteTo(wb, &cm, dst); err != nil { - b.Fatal(err) - } - if _, _, _, err := p.ReadFrom(rb); err != nil { - b.Fatal(err) - } - } - }) -} - -func TestPacketConnConcurrentReadWriteUnicastUDP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - c, err := nettest.NewLocalPacketListener("udp6") - if err != nil { - t.Fatal(err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - defer p.Close() - - dst := c.LocalAddr() - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - wb := []byte("HELLO-R-U-THERE") - - if err := p.SetControlMessage(cf, true); err != nil { // probe before test - if nettest.ProtocolNotSupported(err) { - t.Skipf("not supported on %s", runtime.GOOS) - } - t.Fatal(err) - } - - var wg sync.WaitGroup - reader := func() { - defer wg.Done() - rb := make([]byte, 128) - if n, cm, _, err := p.ReadFrom(rb); err != nil { - t.Error(err) - return - } else if !bytes.Equal(rb[:n], wb) { - t.Errorf("got %v; want %v", rb[:n], wb) - return - } else { - s := cm.String() - if strings.Contains(s, ",") { - t.Errorf("should be space-separated values: %s", s) - } - } - } - writer := func(toggle bool) { - defer wg.Done() - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - Src: net.IPv6loopback, - } - if ifi != nil { - cm.IfIndex = ifi.Index - } - if err := p.SetControlMessage(cf, toggle); err != nil { - t.Error(err) - return - } - if n, err := p.WriteTo(wb, &cm, dst); err != nil { - t.Error(err) - return - } else if n != len(wb) { - t.Errorf("got %d; want %d", n, len(wb)) - return - } - } - - const N = 10 - wg.Add(N) - for i := 0; i < N; i++ { - go reader() - } - wg.Add(2 * N) - for i := 0; i < 2*N; i++ { - go writer(i%2 != 0) - } - wg.Add(N) - for i := 0; i < N; i++ { - go reader() - } - wg.Wait() -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt.go b/vendor/golang.org/x/net/ipv6/sockopt.go deleted file mode 100644 index cc3907df..00000000 --- a/vendor/golang.org/x/net/ipv6/sockopt.go +++ /dev/null @@ -1,43 +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 ipv6 - -import "golang.org/x/net/internal/socket" - -// Sticky socket options -const ( - ssoTrafficClass = iota // header field for unicast packet, RFC 3542 - ssoHopLimit // header field for unicast packet, RFC 3493 - ssoMulticastInterface // outbound interface for multicast packet, RFC 3493 - ssoMulticastHopLimit // header field for multicast packet, RFC 3493 - ssoMulticastLoopback // loopback for multicast packet, RFC 3493 - ssoReceiveTrafficClass // header field on received packet, RFC 3542 - ssoReceiveHopLimit // header field on received packet, RFC 2292 or 3542 - ssoReceivePacketInfo // incbound or outbound packet path, RFC 2292 or 3542 - ssoReceivePathMTU // path mtu, RFC 3542 - ssoPathMTU // path mtu, RFC 3542 - ssoChecksum // packet checksum, RFC 2292 or 3542 - ssoICMPFilter // icmp filter, RFC 2292 or 3542 - ssoJoinGroup // any-source multicast, RFC 3493 - ssoLeaveGroup // any-source multicast, RFC 3493 - ssoJoinSourceGroup // source-specific multicast - ssoLeaveSourceGroup // source-specific multicast - ssoBlockSourceGroup // any-source or source-specific multicast - ssoUnblockSourceGroup // any-source or source-specific multicast - ssoAttachFilter // attach BPF for filtering inbound traffic -) - -// Sticky socket option value types -const ( - ssoTypeIPMreq = iota + 1 - ssoTypeGroupReq - ssoTypeGroupSourceReq -) - -// A sockOpt represents a binding for sticky socket option. -type sockOpt struct { - socket.Option - typ int // hint for option value type; optional -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_posix.go b/vendor/golang.org/x/net/ipv6/sockopt_posix.go deleted file mode 100644 index 0eac86eb..00000000 --- a/vendor/golang.org/x/net/ipv6/sockopt_posix.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv6 - -import ( - "net" - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { - n, err := so.GetInt(c) - if err != nil { - return nil, err - } - return net.InterfaceByIndex(n) -} - -func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { - var n int - if ifi != nil { - n = ifi.Index - } - return so.SetInt(c, n) -} - -func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { - b := make([]byte, so.Len) - n, err := so.Get(c, b) - if err != nil { - return nil, err - } - if n != sizeofICMPv6Filter { - return nil, errOpNoSupport - } - return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil -} - -func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { - b := (*[sizeofICMPv6Filter]byte)(unsafe.Pointer(f))[:sizeofICMPv6Filter] - return so.Set(c, b) -} - -func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { - b := make([]byte, so.Len) - n, err := so.Get(c, b) - if err != nil { - return nil, 0, err - } - if n != sizeofIPv6Mtuinfo { - return nil, 0, errOpNoSupport - } - mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) - if mi.Addr.Scope_id == 0 { - return nil, int(mi.Mtu), nil - } - ifi, err := net.InterfaceByIndex(int(mi.Addr.Scope_id)) - if err != nil { - return nil, 0, err - } - return ifi, int(mi.Mtu), nil -} - -func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - switch so.typ { - case ssoTypeIPMreq: - return so.setIPMreq(c, ifi, grp) - case ssoTypeGroupReq: - return so.setGroupReq(c, ifi, grp) - default: - return errOpNoSupport - } -} - -func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return so.setGroupSourceReq(c, ifi, grp, src) -} - -func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { - return so.setAttachFilter(c, f) -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_stub.go deleted file mode 100644 index 1f4a273e..00000000 --- a/vendor/golang.org/x/net/ipv6/sockopt_stub.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -import ( - "net" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { - return nil, errOpNoSupport -} - -func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { - return errOpNoSupport -} - -func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { - return nil, errOpNoSupport -} - -func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { - return errOpNoSupport -} - -func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { - return nil, 0, errOpNoSupport -} - -func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} - -func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return errOpNoSupport -} - -func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_test.go b/vendor/golang.org/x/net/ipv6/sockopt_test.go deleted file mode 100644 index 774338db..00000000 --- a/vendor/golang.org/x/net/ipv6/sockopt_test.go +++ /dev/null @@ -1,133 +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 ipv6_test - -import ( - "fmt" - "net" - "runtime" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -var supportsIPv6 bool = nettest.SupportsIPv6() - -func TestConnInitiatorPathMTU(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - ln, err := net.Listen("tcp6", "[::1]:0") - if err != nil { - t.Fatal(err) - } - defer ln.Close() - - done := make(chan bool) - go acceptor(t, ln, done) - - c, err := net.Dial("tcp6", ln.Addr().String()) - if err != nil { - t.Fatal(err) - } - defer c.Close() - - if pmtu, err := ipv6.NewConn(c).PathMTU(); err != nil { - switch runtime.GOOS { - case "darwin": // older darwin kernels don't support IPV6_PATHMTU option - t.Logf("not supported on %s", runtime.GOOS) - default: - t.Fatal(err) - } - } else { - t.Logf("path mtu for %v: %v", c.RemoteAddr(), pmtu) - } - - <-done -} - -func TestConnResponderPathMTU(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - ln, err := net.Listen("tcp6", "[::1]:0") - if err != nil { - t.Fatal(err) - } - defer ln.Close() - - done := make(chan bool) - go connector(t, "tcp6", ln.Addr().String(), done) - - c, err := ln.Accept() - if err != nil { - t.Fatal(err) - } - defer c.Close() - - if pmtu, err := ipv6.NewConn(c).PathMTU(); err != nil { - switch runtime.GOOS { - case "darwin": // older darwin kernels don't support IPV6_PATHMTU option - t.Logf("not supported on %s", runtime.GOOS) - default: - t.Fatal(err) - } - } else { - t.Logf("path mtu for %v: %v", c.RemoteAddr(), pmtu) - } - - <-done -} - -func TestPacketConnChecksum(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - c, err := net.ListenPacket(fmt.Sprintf("ip6:%d", iana.ProtocolOSPFIGP), "::") // OSPF for IPv6 - if err != nil { - t.Fatal(err) - } - defer c.Close() - - p := ipv6.NewPacketConn(c) - offset := 12 // see RFC 5340 - - for _, toggle := range []bool{false, true} { - if err := p.SetChecksum(toggle, offset); err != nil { - if toggle { - t.Fatalf("ipv6.PacketConn.SetChecksum(%v, %v) failed: %v", toggle, offset, err) - } else { - // Some platforms never allow to disable the kernel - // checksum processing. - t.Logf("ipv6.PacketConn.SetChecksum(%v, %v) failed: %v", toggle, offset, err) - } - } - if on, offset, err := p.Checksum(); err != nil { - t.Fatal(err) - } else { - t.Logf("kernel checksum processing enabled=%v, offset=%v", on, offset) - } - } -} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq.go b/vendor/golang.org/x/net/ipv6/sys_asmreq.go deleted file mode 100644 index b0510c0b..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_asmreq.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv6 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - var mreq ipv6Mreq - copy(mreq.Multiaddr[:], grp) - if ifi != nil { - mreq.setIfindex(ifi.Index) - } - b := (*[sizeofIPv6Mreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPv6Mreq] - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go deleted file mode 100644 index eece9618..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf.go b/vendor/golang.org/x/net/ipv6/sys_bpf.go deleted file mode 100644 index b2dbcb2f..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_bpf.go +++ /dev/null @@ -1,23 +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. - -// +build linux - -package ipv6 - -import ( - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { - prog := sockFProg{ - Len: uint16(len(f)), - Filter: (*sockFilter)(unsafe.Pointer(&f[0])), - } - b := (*[sizeofSockFprog]byte)(unsafe.Pointer(&prog))[:sizeofSockFprog] - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go deleted file mode 100644 index 676bea55..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go +++ /dev/null @@ -1,16 +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. - -// +build !linux - -package ipv6 - -import ( - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/sys_bsd.go b/vendor/golang.org/x/net/ipv6/sys_bsd.go deleted file mode 100644 index e416eaa1..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_bsd.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build dragonfly netbsd openbsd - -package ipv6 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]*sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_darwin.go b/vendor/golang.org/x/net/ipv6/sys_darwin.go deleted file mode 100644 index e3d04439..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_darwin.go +++ /dev/null @@ -1,106 +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 ipv6 - -import ( - "net" - "strconv" - "strings" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlHopLimit: {sysIPV6_2292HOPLIMIT, 4, marshal2292HopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_2292PKTINFO, sizeofInet6Pktinfo, marshal2292PacketInfo, parsePacketInfo}, - } - - sockOpts = map[int]*sockOpt{ - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_2292HOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_2292PKTINFO, Len: 4}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - } -) - -func init() { - // Seems like kern.osreldate is veiled on latest OS X. We use - // kern.osrelease instead. - s, err := syscall.Sysctl("kern.osrelease") - if err != nil { - return - } - ss := strings.Split(s, ".") - if len(ss) == 0 { - return - } - // The IP_PKTINFO and protocol-independent multicast API were - // introduced in OS X 10.7 (Darwin 11). But it looks like - // those features require OS X 10.8 (Darwin 12) or above. - // See http://support.apple.com/kb/HT1633. - if mjver, err := strconv.Atoi(ss[0]); err != nil || mjver < 12 { - return - } - ctlOpts[ctlTrafficClass] = ctlOpt{sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass} - ctlOpts[ctlHopLimit] = ctlOpt{sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit} - ctlOpts[ctlPacketInfo] = ctlOpt{sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo} - ctlOpts[ctlNextHop] = ctlOpt{sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop} - ctlOpts[ctlPathMTU] = ctlOpt{sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU} - sockOpts[ssoTrafficClass] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}} - sockOpts[ssoReceiveTrafficClass] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}} - sockOpts[ssoReceiveHopLimit] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}} - sockOpts[ssoReceivePacketInfo] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}} - sockOpts[ssoReceivePathMTU] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}} - sockOpts[ssoPathMTU] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}} - sockOpts[ssoJoinGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq} - sockOpts[ssoLeaveGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq} - sockOpts[ssoJoinSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} - sockOpts[ssoLeaveSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} - sockOpts[ssoBlockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} - sockOpts[ssoUnblockSourceGroup] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq} -} - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_freebsd.go b/vendor/golang.org/x/net/ipv6/sys_freebsd.go deleted file mode 100644 index e9349dc2..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_freebsd.go +++ /dev/null @@ -1,92 +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 ipv6 - -import ( - "net" - "runtime" - "strings" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func init() { - if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { - archs, _ := syscall.Sysctl("kern.supported_archs") - for _, s := range strings.Fields(archs) { - if s == "amd64" { - freebsd32o64 = true - break - } - } - } -} - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(&gr.Group)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(&gsr.Group)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(&gsr.Source)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_linux.go b/vendor/golang.org/x/net/ipv6/sys_linux.go deleted file mode 100644 index bc218103..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_linux.go +++ /dev/null @@ -1,74 +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 ipv6 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]*sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMPV6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoAttachFilter: {Option: socket.Option{Level: sysSOL_SOCKET, Name: sysSO_ATTACH_FILTER, Len: sizeofSockFprog}}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = int32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Ifindex = int32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(&gr.Group)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(&gsr.Group)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(&gsr.Source)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_solaris.go b/vendor/golang.org/x/net/ipv6/sys_solaris.go deleted file mode 100644 index d348b5f6..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_solaris.go +++ /dev/null @@ -1,74 +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 ipv6 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]*sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go deleted file mode 100644 index add8ccc0..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_ssmreq.go +++ /dev/null @@ -1,54 +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. - -// +build darwin freebsd linux solaris - -package ipv6 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -var freebsd32o64 bool - -func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - var gr groupReq - if ifi != nil { - gr.Interface = uint32(ifi.Index) - } - gr.setGroup(grp) - var b []byte - if freebsd32o64 { - var d [sizeofGroupReq + 4]byte - s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - b = d[:] - } else { - b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] - } - return so.Set(c, b) -} - -func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - var gsr groupSourceReq - if ifi != nil { - gsr.Interface = uint32(ifi.Index) - } - gsr.setSourceGroup(grp, src) - var b []byte - if freebsd32o64 { - var d [sizeofGroupSourceReq + 4]byte - s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - b = d[:] - } else { - b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] - } - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go deleted file mode 100644 index 581ee490..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go +++ /dev/null @@ -1,21 +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. - -// +build !darwin,!freebsd,!linux,!solaris - -package ipv6 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errOpNoSupport -} - -func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return errOpNoSupport -} diff --git a/vendor/golang.org/x/net/ipv6/sys_stub.go b/vendor/golang.org/x/net/ipv6/sys_stub.go deleted file mode 100644 index b845388e..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_stub.go +++ /dev/null @@ -1,13 +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. - -// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -var ( - ctlOpts = [ctlMax]ctlOpt{} - - sockOpts = map[int]*sockOpt{} -) diff --git a/vendor/golang.org/x/net/ipv6/sys_windows.go b/vendor/golang.org/x/net/ipv6/sys_windows.go deleted file mode 100644 index fc36b018..00000000 --- a/vendor/golang.org/x/net/ipv6/sys_windows.go +++ /dev/null @@ -1,75 +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 ipv6 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -const ( - // See ws2tcpip.h. - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PKTINFO = 0x13 - - sizeofSockaddrInet6 = 0x1c - - sizeofIPv6Mreq = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofICMPv6Filter = 0 -) - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type icmpv6Filter struct { - // TODO(mikio): implement this -} - -var ( - ctlOpts = [ctlMax]ctlOpt{} - - sockOpts = map[int]*sockOpt{ - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} diff --git a/vendor/golang.org/x/net/ipv6/unicast_test.go b/vendor/golang.org/x/net/ipv6/unicast_test.go deleted file mode 100644 index a0b7d955..00000000 --- a/vendor/golang.org/x/net/ipv6/unicast_test.go +++ /dev/null @@ -1,184 +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 ipv6_test - -import ( - "bytes" - "net" - "os" - "runtime" - "testing" - "time" - - "golang.org/x/net/icmp" - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -func TestPacketConnReadWriteUnicastUDP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - c, err := nettest.NewLocalPacketListener("udp6") - if err != nil { - t.Fatal(err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - defer p.Close() - - dst := c.LocalAddr() - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - Src: net.IPv6loopback, - } - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) - if ifi != nil { - cm.IfIndex = ifi.Index - } - wb := []byte("HELLO-R-U-THERE") - - for i, toggle := range []bool{true, false, true} { - if err := p.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - cm.HopLimit = i + 1 - if err := p.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if n, err := p.WriteTo(wb, &cm, dst); err != nil { - t.Fatal(err) - } else if n != len(wb) { - t.Fatalf("got %v; want %v", n, len(wb)) - } - rb := make([]byte, 128) - if err := p.SetReadDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if n, _, _, err := p.ReadFrom(rb); err != nil { - t.Fatal(err) - } else if !bytes.Equal(rb[:n], wb) { - t.Fatalf("got %v; want %v", rb[:n], wb) - } - } -} - -func TestPacketConnReadWriteUnicastICMP(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - if m, ok := nettest.SupportsRawIPSocket(); !ok { - t.Skip(m) - } - - c, err := net.ListenPacket("ip6:ipv6-icmp", "::1") - if err != nil { - t.Fatal(err) - } - defer c.Close() - p := ipv6.NewPacketConn(c) - defer p.Close() - - dst, err := net.ResolveIPAddr("ip6", "::1") - if err != nil { - t.Fatal(err) - } - - pshicmp := icmp.IPv6PseudoHeader(c.LocalAddr().(*net.IPAddr).IP, dst.IP) - cm := ipv6.ControlMessage{ - TrafficClass: iana.DiffServAF11 | iana.CongestionExperienced, - Src: net.IPv6loopback, - } - cf := ipv6.FlagTrafficClass | ipv6.FlagHopLimit | ipv6.FlagSrc | ipv6.FlagDst | ipv6.FlagInterface | ipv6.FlagPathMTU - ifi := nettest.RoutedInterface("ip6", net.FlagUp|net.FlagLoopback) - if ifi != nil { - cm.IfIndex = ifi.Index - } - - var f ipv6.ICMPFilter - f.SetAll(true) - f.Accept(ipv6.ICMPTypeEchoReply) - if err := p.SetICMPFilter(&f); err != nil { - t.Fatal(err) - } - - var psh []byte - for i, toggle := range []bool{true, false, true} { - if toggle { - psh = nil - if err := p.SetChecksum(true, 2); err != nil { - // Solaris never allows to modify - // ICMP properties. - if runtime.GOOS != "solaris" { - t.Fatal(err) - } - } - } else { - psh = pshicmp - // Some platforms never allow to disable the - // kernel checksum processing. - p.SetChecksum(false, -1) - } - wb, err := (&icmp.Message{ - Type: ipv6.ICMPTypeEchoRequest, Code: 0, - Body: &icmp.Echo{ - ID: os.Getpid() & 0xffff, Seq: i + 1, - Data: []byte("HELLO-R-U-THERE"), - }, - }).Marshal(psh) - if err != nil { - t.Fatal(err) - } - if err := p.SetControlMessage(cf, toggle); err != nil { - if nettest.ProtocolNotSupported(err) { - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } - cm.HopLimit = i + 1 - if err := p.SetWriteDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if n, err := p.WriteTo(wb, &cm, dst); err != nil { - t.Fatal(err) - } else if n != len(wb) { - t.Fatalf("got %v; want %v", n, len(wb)) - } - rb := make([]byte, 128) - if err := p.SetReadDeadline(time.Now().Add(100 * time.Millisecond)); err != nil { - t.Fatal(err) - } - if n, _, _, err := p.ReadFrom(rb); err != nil { - switch runtime.GOOS { - case "darwin": // older darwin kernels have some limitation on receiving icmp packet through raw socket - t.Logf("not supported on %s", runtime.GOOS) - continue - } - t.Fatal(err) - } else { - if m, err := icmp.ParseMessage(iana.ProtocolIPv6ICMP, rb[:n]); err != nil { - t.Fatal(err) - } else if m.Type != ipv6.ICMPTypeEchoReply || m.Code != 0 { - t.Fatalf("got type=%v, code=%v; want type=%v, code=%v", m.Type, m.Code, ipv6.ICMPTypeEchoReply, 0) - } - } - } -} diff --git a/vendor/golang.org/x/net/ipv6/unicastsockopt_test.go b/vendor/golang.org/x/net/ipv6/unicastsockopt_test.go deleted file mode 100644 index e175dccf..00000000 --- a/vendor/golang.org/x/net/ipv6/unicastsockopt_test.go +++ /dev/null @@ -1,120 +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 ipv6_test - -import ( - "net" - "runtime" - "testing" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/nettest" - "golang.org/x/net/ipv6" -) - -func TestConnUnicastSocketOptions(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - ln, err := net.Listen("tcp6", "[::1]:0") - if err != nil { - t.Fatal(err) - } - defer ln.Close() - - errc := make(chan error, 1) - go func() { - c, err := ln.Accept() - if err != nil { - errc <- err - return - } - errc <- c.Close() - }() - - c, err := net.Dial("tcp6", ln.Addr().String()) - if err != nil { - t.Fatal(err) - } - defer c.Close() - - testUnicastSocketOptions(t, ipv6.NewConn(c)) - - if err := <-errc; err != nil { - t.Errorf("server: %v", err) - } -} - -var packetConnUnicastSocketOptionTests = []struct { - net, proto, addr string -}{ - {"udp6", "", "[::1]:0"}, - {"ip6", ":ipv6-icmp", "::1"}, -} - -func TestPacketConnUnicastSocketOptions(t *testing.T) { - switch runtime.GOOS { - case "nacl", "plan9", "windows": - t.Skipf("not supported on %s", runtime.GOOS) - } - if !supportsIPv6 { - t.Skip("ipv6 is not supported") - } - - m, ok := nettest.SupportsRawIPSocket() - for _, tt := range packetConnUnicastSocketOptionTests { - if tt.net == "ip6" && !ok { - t.Log(m) - continue - } - c, err := net.ListenPacket(tt.net+tt.proto, tt.addr) - if err != nil { - t.Fatal(err) - } - defer c.Close() - - testUnicastSocketOptions(t, ipv6.NewPacketConn(c)) - } -} - -type testIPv6UnicastConn interface { - TrafficClass() (int, error) - SetTrafficClass(int) error - HopLimit() (int, error) - SetHopLimit(int) error -} - -func testUnicastSocketOptions(t *testing.T, c testIPv6UnicastConn) { - tclass := iana.DiffServCS0 | iana.NotECNTransport - if err := c.SetTrafficClass(tclass); err != nil { - switch runtime.GOOS { - case "darwin": // older darwin kernels don't support IPV6_TCLASS option - t.Logf("not supported on %s", runtime.GOOS) - goto next - } - t.Fatal(err) - } - if v, err := c.TrafficClass(); err != nil { - t.Fatal(err) - } else if v != tclass { - t.Fatalf("got %v; want %v", v, tclass) - } - -next: - hoplim := 255 - if err := c.SetHopLimit(hoplim); err != nil { - t.Fatal(err) - } - if v, err := c.HopLimit(); err != nil { - t.Fatal(err) - } else if v != hoplim { - t.Fatalf("got %v; want %v", v, hoplim) - } -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_darwin.go b/vendor/golang.org/x/net/ipv6/zsys_darwin.go deleted file mode 100644 index 6aab1dfa..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_darwin.go +++ /dev/null @@ -1,131 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_darwin.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - sysIPV6_2292PKTINFO = 0x13 - sysIPV6_2292HOPLIMIT = 0x14 - sysIPV6_2292NEXTHOP = 0x15 - sysIPV6_2292HOPOPTS = 0x16 - sysIPV6_2292DSTOPTS = 0x17 - sysIPV6_2292RTHDR = 0x18 - - sysIPV6_2292PKTOPTIONS = 0x19 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RECVTCLASS = 0x23 - sysIPV6_TCLASS = 0x24 - - sysIPV6_RTHDRDSTOPTS = 0x39 - - sysIPV6_RECVPKTINFO = 0x3d - - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_MSFILTER = 0x4a - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_BOUND_IF = 0x7d - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [128]byte -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [128]byte - Pad_cgo_1 [128]byte -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go deleted file mode 100644 index d2de804d..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go +++ /dev/null @@ -1,88 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_dragonfly.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go deleted file mode 100644 index 919e572d..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go +++ /dev/null @@ -1,122 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_BINDANY = 0x40 - - sysIPV6_MSFILTER = 0x4a - - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group sockaddrStorage - Source sockaddrStorage -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go deleted file mode 100644 index cb8141f9..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go +++ /dev/null @@ -1,124 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_BINDANY = 0x40 - - sysIPV6_MSFILTER = 0x4a - - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage - Source sockaddrStorage -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go deleted file mode 100644 index cb8141f9..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go +++ /dev/null @@ -1,124 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_BINDANY = 0x40 - - sysIPV6_MSFILTER = 0x4a - - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage - Source sockaddrStorage -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go deleted file mode 100644 index 73aa8c6d..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +++ /dev/null @@ -1,170 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go deleted file mode 100644 index b64f0157..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +++ /dev/null @@ -1,172 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go deleted file mode 100644 index 73aa8c6d..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +++ /dev/null @@ -1,170 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go deleted file mode 100644 index b64f0157..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +++ /dev/null @@ -1,172 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go deleted file mode 100644 index 73aa8c6d..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +++ /dev/null @@ -1,170 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go deleted file mode 100644 index b64f0157..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +++ /dev/null @@ -1,172 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go deleted file mode 100644 index b64f0157..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +++ /dev/null @@ -1,172 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go deleted file mode 100644 index 73aa8c6d..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +++ /dev/null @@ -1,170 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go deleted file mode 100644 index c9bf6a87..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +++ /dev/null @@ -1,170 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x8 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [2]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go deleted file mode 100644 index b64f0157..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +++ /dev/null @@ -1,172 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go deleted file mode 100644 index b64f0157..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +++ /dev/null @@ -1,172 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go deleted file mode 100644 index b64f0157..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +++ /dev/null @@ -1,172 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sysSOL_SOCKET = 0x1 - sysSO_ATTACH_FILTER = 0x1a - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 - - sizeofSockFprog = 0x10 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} - -type sockFProg struct { - Len uint16 - Pad_cgo_0 [6]byte - Filter *sockFilter -} - -type sockFilter struct { - Code uint16 - Jt uint8 - Jf uint8 - K uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_netbsd.go b/vendor/golang.org/x/net/ipv6/zsys_netbsd.go deleted file mode 100644 index bcada13b..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_netbsd.go +++ /dev/null @@ -1,84 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_netbsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_openbsd.go b/vendor/golang.org/x/net/ipv6/zsys_openbsd.go deleted file mode 100644 index 86cf3c63..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_openbsd.go +++ /dev/null @@ -1,93 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_openbsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_AUTH_LEVEL = 0x35 - sysIPV6_ESP_TRANS_LEVEL = 0x36 - sysIPV6_ESP_NETWORK_LEVEL = 0x37 - sysIPSEC6_OUTSA = 0x38 - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - sysIPV6_IPCOMP_LEVEL = 0x3c - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - sysIPV6_PIPEX = 0x3f - - sysIPV6_RTABLE = 0x1021 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_solaris.go b/vendor/golang.org/x/net/ipv6/zsys_solaris.go deleted file mode 100644 index cf1837dd..00000000 --- a/vendor/golang.org/x/net/ipv6/zsys_solaris.go +++ /dev/null @@ -1,131 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_solaris.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x5 - sysIPV6_MULTICAST_IF = 0x6 - sysIPV6_MULTICAST_HOPS = 0x7 - sysIPV6_MULTICAST_LOOP = 0x8 - sysIPV6_JOIN_GROUP = 0x9 - sysIPV6_LEAVE_GROUP = 0xa - - sysIPV6_PKTINFO = 0xb - - sysIPV6_HOPLIMIT = 0xc - sysIPV6_NEXTHOP = 0xd - sysIPV6_HOPOPTS = 0xe - sysIPV6_DSTOPTS = 0xf - - sysIPV6_RTHDR = 0x10 - sysIPV6_RTHDRDSTOPTS = 0x11 - - sysIPV6_RECVPKTINFO = 0x12 - sysIPV6_RECVHOPLIMIT = 0x13 - sysIPV6_RECVHOPOPTS = 0x14 - - sysIPV6_RECVRTHDR = 0x16 - - sysIPV6_RECVRTHDRDSTOPTS = 0x17 - - sysIPV6_CHECKSUM = 0x18 - sysIPV6_RECVTCLASS = 0x19 - sysIPV6_USE_MIN_MTU = 0x20 - sysIPV6_DONTFRAG = 0x21 - sysIPV6_SEC_OPT = 0x22 - sysIPV6_SRC_PREFERENCES = 0x23 - sysIPV6_RECVPATHMTU = 0x24 - sysIPV6_PATHMTU = 0x25 - sysIPV6_TCLASS = 0x26 - sysIPV6_V6ONLY = 0x27 - - sysIPV6_RECVDSTOPTS = 0x28 - - sysMCAST_JOIN_GROUP = 0x29 - sysMCAST_LEAVE_GROUP = 0x2a - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_JOIN_SOURCE_GROUP = 0x2d - sysMCAST_LEAVE_SOURCE_GROUP = 0x2e - - sysIPV6_PREFER_SRC_HOME = 0x1 - sysIPV6_PREFER_SRC_COA = 0x2 - sysIPV6_PREFER_SRC_PUBLIC = 0x4 - sysIPV6_PREFER_SRC_TMP = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x10 - sysIPV6_PREFER_SRC_CGA = 0x20 - - sysIPV6_PREFER_SRC_MIPMASK = 0x3 - sysIPV6_PREFER_SRC_MIPDEFAULT = 0x1 - sysIPV6_PREFER_SRC_TMPMASK = 0xc - sysIPV6_PREFER_SRC_TMPDEFAULT = 0x4 - sysIPV6_PREFER_SRC_CGAMASK = 0x30 - sysIPV6_PREFER_SRC_CGADEFAULT = 0x10 - - sysIPV6_PREFER_SRC_MASK = 0x3f - - sysIPV6_PREFER_SRC_DEFAULT = 0x15 - - sysIPV6_BOUND_IF = 0x41 - sysIPV6_UNSPEC_SRC = 0x42 - - sysICMP6_FILTER = 0x1 - - sizeofSockaddrStorage = 0x100 - sizeofSockaddrInet6 = 0x20 - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x24 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x104 - sizeofGroupSourceReq = 0x204 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Family uint16 - X_ss_pad1 [6]int8 - X_ss_align float64 - X_ss_pad2 [240]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 - X__sin6_src_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [256]byte -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [256]byte - Pad_cgo_1 [256]byte -} - -type icmpv6Filter struct { - X__icmp6_filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/lex/httplex/httplex_test.go b/vendor/golang.org/x/net/lex/httplex/httplex_test.go deleted file mode 100644 index f47adc93..00000000 --- a/vendor/golang.org/x/net/lex/httplex/httplex_test.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package httplex - -import ( - "testing" -) - -func isChar(c rune) bool { return c <= 127 } - -func isCtl(c rune) bool { return c <= 31 || c == 127 } - -func isSeparator(c rune) bool { - switch c { - case '(', ')', '<', '>', '@', ',', ';', ':', '\\', '"', '/', '[', ']', '?', '=', '{', '}', ' ', '\t': - return true - } - return false -} - -func TestIsToken(t *testing.T) { - for i := 0; i <= 130; i++ { - r := rune(i) - expected := isChar(r) && !isCtl(r) && !isSeparator(r) - if IsTokenRune(r) != expected { - t.Errorf("isToken(0x%x) = %v", r, !expected) - } - } -} - -func TestHeaderValuesContainsToken(t *testing.T) { - tests := []struct { - vals []string - token string - want bool - }{ - { - vals: []string{"foo"}, - token: "foo", - want: true, - }, - { - vals: []string{"bar", "foo"}, - token: "foo", - want: true, - }, - { - vals: []string{"foo"}, - token: "FOO", - want: true, - }, - { - vals: []string{"foo"}, - token: "bar", - want: false, - }, - { - vals: []string{" foo "}, - token: "FOO", - want: true, - }, - { - vals: []string{"foo,bar"}, - token: "FOO", - want: true, - }, - { - vals: []string{"bar,foo,bar"}, - token: "FOO", - want: true, - }, - { - vals: []string{"bar , foo"}, - token: "FOO", - want: true, - }, - { - vals: []string{"foo ,bar "}, - token: "FOO", - want: true, - }, - { - vals: []string{"bar, foo ,bar"}, - token: "FOO", - want: true, - }, - { - vals: []string{"bar , foo"}, - token: "FOO", - want: true, - }, - } - for _, tt := range tests { - got := HeaderValuesContainsToken(tt.vals, tt.token) - if got != tt.want { - t.Errorf("headerValuesContainsToken(%q, %q) = %v; want %v", tt.vals, tt.token, got, tt.want) - } - } -} - -func TestPunycodeHostPort(t *testing.T) { - tests := []struct { - in, want string - }{ - {"www.google.com", "www.google.com"}, - {"гофер.рф", "xn--c1ae0ajs.xn--p1ai"}, - {"bücher.de", "xn--bcher-kva.de"}, - {"bücher.de:8080", "xn--bcher-kva.de:8080"}, - {"[1::6]:8080", "[1::6]:8080"}, - } - for _, tt := range tests { - got, err := PunycodeHostPort(tt.in) - if tt.want != got || err != nil { - t.Errorf("PunycodeHostPort(%q) = %q, %v, want %q, nil", tt.in, got, err, tt.want) - } - } -} diff --git a/vendor/golang.org/x/net/lif/address.go b/vendor/golang.org/x/net/lif/address.go deleted file mode 100644 index afb957fd..00000000 --- a/vendor/golang.org/x/net/lif/address.go +++ /dev/null @@ -1,105 +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. - -// +build solaris - -package lif - -import ( - "errors" - "unsafe" -) - -// An Addr represents an address associated with packet routing. -type Addr interface { - // Family returns an address family. - Family() int -} - -// An Inet4Addr represents an internet address for IPv4. -type Inet4Addr struct { - IP [4]byte // IP address - PrefixLen int // address prefix length -} - -// Family implements the Family method of Addr interface. -func (a *Inet4Addr) Family() int { return sysAF_INET } - -// An Inet6Addr represents an internet address for IPv6. -type Inet6Addr struct { - IP [16]byte // IP address - PrefixLen int // address prefix length - ZoneID int // zone identifier -} - -// Family implements the Family method of Addr interface. -func (a *Inet6Addr) Family() int { return sysAF_INET6 } - -// Addrs returns a list of interface addresses. -// -// The provided af must be an address family and name must be a data -// link name. The zero value of af or name means a wildcard. -func Addrs(af int, name string) ([]Addr, error) { - eps, err := newEndpoints(af) - if len(eps) == 0 { - return nil, err - } - defer func() { - for _, ep := range eps { - ep.close() - } - }() - lls, err := links(eps, name) - if len(lls) == 0 { - return nil, err - } - var as []Addr - for _, ll := range lls { - var lifr lifreq - for i := 0; i < len(ll.Name); i++ { - lifr.Name[i] = int8(ll.Name[i]) - } - for _, ep := range eps { - ioc := int64(sysSIOCGLIFADDR) - err := ioctl(ep.s, uintptr(ioc), unsafe.Pointer(&lifr)) - if err != nil { - continue - } - sa := (*sockaddrStorage)(unsafe.Pointer(&lifr.Lifru[0])) - l := int(nativeEndian.Uint32(lifr.Lifru1[:4])) - if l == 0 { - continue - } - switch sa.Family { - case sysAF_INET: - a := &Inet4Addr{PrefixLen: l} - copy(a.IP[:], lifr.Lifru[4:8]) - as = append(as, a) - case sysAF_INET6: - a := &Inet6Addr{PrefixLen: l, ZoneID: int(nativeEndian.Uint32(lifr.Lifru[24:28]))} - copy(a.IP[:], lifr.Lifru[8:24]) - as = append(as, a) - } - } - } - return as, nil -} - -func parseLinkAddr(b []byte) ([]byte, error) { - nlen, alen, slen := int(b[1]), int(b[2]), int(b[3]) - l := 4 + nlen + alen + slen - if len(b) < l { - return nil, errors.New("invalid address") - } - b = b[4:] - var addr []byte - if nlen > 0 { - b = b[nlen:] - } - if alen > 0 { - addr = make([]byte, alen) - copy(addr, b[:alen]) - } - return addr, nil -} diff --git a/vendor/golang.org/x/net/lif/address_test.go b/vendor/golang.org/x/net/lif/address_test.go deleted file mode 100644 index a25f10b6..00000000 --- a/vendor/golang.org/x/net/lif/address_test.go +++ /dev/null @@ -1,123 +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. - -// +build solaris - -package lif - -import ( - "fmt" - "testing" -) - -type addrFamily int - -func (af addrFamily) String() string { - switch af { - case sysAF_UNSPEC: - return "unspec" - case sysAF_INET: - return "inet4" - case sysAF_INET6: - return "inet6" - default: - return fmt.Sprintf("%d", af) - } -} - -const hexDigit = "0123456789abcdef" - -type llAddr []byte - -func (a llAddr) String() string { - if len(a) == 0 { - return "" - } - buf := make([]byte, 0, len(a)*3-1) - for i, b := range a { - if i > 0 { - buf = append(buf, ':') - } - buf = append(buf, hexDigit[b>>4]) - buf = append(buf, hexDigit[b&0xF]) - } - return string(buf) -} - -type ipAddr []byte - -func (a ipAddr) String() string { - if len(a) == 0 { - return "<nil>" - } - if len(a) == 4 { - return fmt.Sprintf("%d.%d.%d.%d", a[0], a[1], a[2], a[3]) - } - if len(a) == 16 { - return fmt.Sprintf("%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]) - } - s := make([]byte, len(a)*2) - for i, tn := range a { - s[i*2], s[i*2+1] = hexDigit[tn>>4], hexDigit[tn&0xf] - } - return string(s) -} - -func (a *Inet4Addr) String() string { - return fmt.Sprintf("(%s %s %d)", addrFamily(a.Family()), ipAddr(a.IP[:]), a.PrefixLen) -} - -func (a *Inet6Addr) String() string { - return fmt.Sprintf("(%s %s %d %d)", addrFamily(a.Family()), ipAddr(a.IP[:]), a.PrefixLen, a.ZoneID) -} - -type addrPack struct { - af int - as []Addr -} - -func addrPacks() ([]addrPack, error) { - var lastErr error - var aps []addrPack - for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - as, err := Addrs(af, "") - if err != nil { - lastErr = err - continue - } - aps = append(aps, addrPack{af: af, as: as}) - } - return aps, lastErr -} - -func TestAddrs(t *testing.T) { - aps, err := addrPacks() - if len(aps) == 0 && err != nil { - t.Fatal(err) - } - lps, err := linkPacks() - if len(lps) == 0 && err != nil { - t.Fatal(err) - } - for _, lp := range lps { - n := 0 - for _, ll := range lp.lls { - as, err := Addrs(lp.af, ll.Name) - if err != nil { - t.Fatal(lp.af, ll.Name, err) - } - t.Logf("af=%s name=%s %v", addrFamily(lp.af), ll.Name, as) - n += len(as) - } - for _, ap := range aps { - if ap.af != lp.af { - continue - } - if n != len(ap.as) { - t.Errorf("af=%s got %d; want %d", addrFamily(lp.af), n, len(ap.as)) - continue - } - } - } -} diff --git a/vendor/golang.org/x/net/lif/binary.go b/vendor/golang.org/x/net/lif/binary.go deleted file mode 100644 index 738a94f4..00000000 --- a/vendor/golang.org/x/net/lif/binary.go +++ /dev/null @@ -1,115 +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. - -// +build solaris - -package lif - -// This file contains duplicates of encoding/binary package. -// -// This package is supposed to be used by the net package of standard -// library. Therefore the package set used in the package must be the -// same as net package. - -var ( - littleEndian binaryLittleEndian - bigEndian binaryBigEndian -) - -type binaryByteOrder interface { - Uint16([]byte) uint16 - Uint32([]byte) uint32 - Uint64([]byte) uint64 - PutUint16([]byte, uint16) - PutUint32([]byte, uint32) - PutUint64([]byte, uint64) -} - -type binaryLittleEndian struct{} - -func (binaryLittleEndian) Uint16(b []byte) uint16 { - _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 - return uint16(b[0]) | uint16(b[1])<<8 -} - -func (binaryLittleEndian) PutUint16(b []byte, v uint16) { - _ = b[1] // early bounds check to guarantee safety of writes below - b[0] = byte(v) - b[1] = byte(v >> 8) -} - -func (binaryLittleEndian) Uint32(b []byte) uint32 { - _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 - return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 -} - -func (binaryLittleEndian) PutUint32(b []byte, v uint32) { - _ = b[3] // early bounds check to guarantee safety of writes below - b[0] = byte(v) - b[1] = byte(v >> 8) - b[2] = byte(v >> 16) - b[3] = byte(v >> 24) -} - -func (binaryLittleEndian) Uint64(b []byte) uint64 { - _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 - return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | - uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 -} - -func (binaryLittleEndian) PutUint64(b []byte, v uint64) { - _ = b[7] // early bounds check to guarantee safety of writes below - b[0] = byte(v) - b[1] = byte(v >> 8) - b[2] = byte(v >> 16) - b[3] = byte(v >> 24) - b[4] = byte(v >> 32) - b[5] = byte(v >> 40) - b[6] = byte(v >> 48) - b[7] = byte(v >> 56) -} - -type binaryBigEndian struct{} - -func (binaryBigEndian) Uint16(b []byte) uint16 { - _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 - return uint16(b[1]) | uint16(b[0])<<8 -} - -func (binaryBigEndian) PutUint16(b []byte, v uint16) { - _ = b[1] // early bounds check to guarantee safety of writes below - b[0] = byte(v >> 8) - b[1] = byte(v) -} - -func (binaryBigEndian) Uint32(b []byte) uint32 { - _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 - return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 -} - -func (binaryBigEndian) PutUint32(b []byte, v uint32) { - _ = b[3] // early bounds check to guarantee safety of writes below - b[0] = byte(v >> 24) - b[1] = byte(v >> 16) - b[2] = byte(v >> 8) - b[3] = byte(v) -} - -func (binaryBigEndian) Uint64(b []byte) uint64 { - _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 - return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | - uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 -} - -func (binaryBigEndian) PutUint64(b []byte, v uint64) { - _ = b[7] // early bounds check to guarantee safety of writes below - b[0] = byte(v >> 56) - b[1] = byte(v >> 48) - b[2] = byte(v >> 40) - b[3] = byte(v >> 32) - b[4] = byte(v >> 24) - b[5] = byte(v >> 16) - b[6] = byte(v >> 8) - b[7] = byte(v) -} diff --git a/vendor/golang.org/x/net/lif/defs_solaris.go b/vendor/golang.org/x/net/lif/defs_solaris.go deleted file mode 100644 index 02c19981..00000000 --- a/vendor/golang.org/x/net/lif/defs_solaris.go +++ /dev/null @@ -1,90 +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. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package lif - -/* -#include <sys/socket.h> -#include <sys/sockio.h> - -#include <net/if.h> -#include <net/if_types.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_INET6 = C.AF_INET6 - - sysSOCK_DGRAM = C.SOCK_DGRAM -) - -type sockaddrStorage C.struct_sockaddr_storage - -const ( - sysLIFC_NOXMIT = C.LIFC_NOXMIT - sysLIFC_EXTERNAL_SOURCE = C.LIFC_EXTERNAL_SOURCE - sysLIFC_TEMPORARY = C.LIFC_TEMPORARY - sysLIFC_ALLZONES = C.LIFC_ALLZONES - sysLIFC_UNDER_IPMP = C.LIFC_UNDER_IPMP - sysLIFC_ENABLED = C.LIFC_ENABLED - - sysSIOCGLIFADDR = C.SIOCGLIFADDR - sysSIOCGLIFDSTADDR = C.SIOCGLIFDSTADDR - sysSIOCGLIFFLAGS = C.SIOCGLIFFLAGS - sysSIOCGLIFMTU = C.SIOCGLIFMTU - sysSIOCGLIFNETMASK = C.SIOCGLIFNETMASK - sysSIOCGLIFMETRIC = C.SIOCGLIFMETRIC - sysSIOCGLIFNUM = C.SIOCGLIFNUM - sysSIOCGLIFINDEX = C.SIOCGLIFINDEX - sysSIOCGLIFSUBNET = C.SIOCGLIFSUBNET - sysSIOCGLIFLNKINFO = C.SIOCGLIFLNKINFO - sysSIOCGLIFCONF = C.SIOCGLIFCONF - sysSIOCGLIFHWADDR = C.SIOCGLIFHWADDR -) - -const ( - sysIFF_UP = C.IFF_UP - sysIFF_BROADCAST = C.IFF_BROADCAST - sysIFF_DEBUG = C.IFF_DEBUG - sysIFF_LOOPBACK = C.IFF_LOOPBACK - sysIFF_POINTOPOINT = C.IFF_POINTOPOINT - sysIFF_NOTRAILERS = C.IFF_NOTRAILERS - sysIFF_RUNNING = C.IFF_RUNNING - sysIFF_NOARP = C.IFF_NOARP - sysIFF_PROMISC = C.IFF_PROMISC - sysIFF_ALLMULTI = C.IFF_ALLMULTI - sysIFF_INTELLIGENT = C.IFF_INTELLIGENT - sysIFF_MULTICAST = C.IFF_MULTICAST - sysIFF_MULTI_BCAST = C.IFF_MULTI_BCAST - sysIFF_UNNUMBERED = C.IFF_UNNUMBERED - sysIFF_PRIVATE = C.IFF_PRIVATE -) - -const ( - sizeofLifnum = C.sizeof_struct_lifnum - sizeofLifreq = C.sizeof_struct_lifreq - sizeofLifconf = C.sizeof_struct_lifconf - sizeofLifIfinfoReq = C.sizeof_struct_lif_ifinfo_req -) - -type lifnum C.struct_lifnum - -type lifreq C.struct_lifreq - -type lifconf C.struct_lifconf - -type lifIfinfoReq C.struct_lif_ifinfo_req - -const ( - sysIFT_IPV4 = C.IFT_IPV4 - sysIFT_IPV6 = C.IFT_IPV6 - sysIFT_6TO4 = C.IFT_6TO4 -) diff --git a/vendor/golang.org/x/net/lif/lif.go b/vendor/golang.org/x/net/lif/lif.go deleted file mode 100644 index 6e81f81f..00000000 --- a/vendor/golang.org/x/net/lif/lif.go +++ /dev/null @@ -1,43 +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. - -// +build solaris - -// Package lif provides basic functions for the manipulation of -// logical network interfaces and interface addresses on Solaris. -// -// The package supports Solaris 11 or above. -package lif - -import "syscall" - -type endpoint struct { - af int - s uintptr -} - -func (ep *endpoint) close() error { - return syscall.Close(int(ep.s)) -} - -func newEndpoints(af int) ([]endpoint, error) { - var lastErr error - var eps []endpoint - afs := []int{sysAF_INET, sysAF_INET6} - if af != sysAF_UNSPEC { - afs = []int{af} - } - for _, af := range afs { - s, err := syscall.Socket(af, sysSOCK_DGRAM, 0) - if err != nil { - lastErr = err - continue - } - eps = append(eps, endpoint{af: af, s: uintptr(s)}) - } - if len(eps) == 0 { - return nil, lastErr - } - return eps, nil -} diff --git a/vendor/golang.org/x/net/lif/link.go b/vendor/golang.org/x/net/lif/link.go deleted file mode 100644 index 913a53e1..00000000 --- a/vendor/golang.org/x/net/lif/link.go +++ /dev/null @@ -1,126 +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. - -// +build solaris - -package lif - -import "unsafe" - -// A Link represents logical data link information. -// -// It also represents base information for logical network interface. -// On Solaris, each logical network interface represents network layer -// adjacency information and the interface has a only single network -// address or address pair for tunneling. It's usual that multiple -// logical network interfaces share the same logical data link. -type Link struct { - Name string // name, equivalent to IP interface name - Index int // index, equivalent to IP interface index - Type int // type - Flags int // flags - MTU int // maximum transmission unit, basically link MTU but may differ between IP address families - Addr []byte // address -} - -func (ll *Link) fetch(s uintptr) { - var lifr lifreq - for i := 0; i < len(ll.Name); i++ { - lifr.Name[i] = int8(ll.Name[i]) - } - ioc := int64(sysSIOCGLIFINDEX) - if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil { - ll.Index = int(nativeEndian.Uint32(lifr.Lifru[:4])) - } - ioc = int64(sysSIOCGLIFFLAGS) - if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil { - ll.Flags = int(nativeEndian.Uint64(lifr.Lifru[:8])) - } - ioc = int64(sysSIOCGLIFMTU) - if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil { - ll.MTU = int(nativeEndian.Uint32(lifr.Lifru[:4])) - } - switch ll.Type { - case sysIFT_IPV4, sysIFT_IPV6, sysIFT_6TO4: - default: - ioc = int64(sysSIOCGLIFHWADDR) - if err := ioctl(s, uintptr(ioc), unsafe.Pointer(&lifr)); err == nil { - ll.Addr, _ = parseLinkAddr(lifr.Lifru[4:]) - } - } -} - -// Links returns a list of logical data links. -// -// The provided af must be an address family and name must be a data -// link name. The zero value of af or name means a wildcard. -func Links(af int, name string) ([]Link, error) { - eps, err := newEndpoints(af) - if len(eps) == 0 { - return nil, err - } - defer func() { - for _, ep := range eps { - ep.close() - } - }() - return links(eps, name) -} - -func links(eps []endpoint, name string) ([]Link, error) { - var lls []Link - lifn := lifnum{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_ALLZONES | sysLIFC_UNDER_IPMP} - lifc := lifconf{Flags: sysLIFC_NOXMIT | sysLIFC_TEMPORARY | sysLIFC_ALLZONES | sysLIFC_UNDER_IPMP} - for _, ep := range eps { - lifn.Family = uint16(ep.af) - ioc := int64(sysSIOCGLIFNUM) - if err := ioctl(ep.s, uintptr(ioc), unsafe.Pointer(&lifn)); err != nil { - continue - } - if lifn.Count == 0 { - continue - } - b := make([]byte, lifn.Count*sizeofLifreq) - lifc.Family = uint16(ep.af) - lifc.Len = lifn.Count * sizeofLifreq - if len(lifc.Lifcu) == 8 { - nativeEndian.PutUint64(lifc.Lifcu[:], uint64(uintptr(unsafe.Pointer(&b[0])))) - } else { - nativeEndian.PutUint32(lifc.Lifcu[:], uint32(uintptr(unsafe.Pointer(&b[0])))) - } - ioc = int64(sysSIOCGLIFCONF) - if err := ioctl(ep.s, uintptr(ioc), unsafe.Pointer(&lifc)); err != nil { - continue - } - nb := make([]byte, 32) // see LIFNAMSIZ in net/if.h - for i := 0; i < int(lifn.Count); i++ { - lifr := (*lifreq)(unsafe.Pointer(&b[i*sizeofLifreq])) - for i := 0; i < 32; i++ { - if lifr.Name[i] == 0 { - nb = nb[:i] - break - } - nb[i] = byte(lifr.Name[i]) - } - llname := string(nb) - nb = nb[:32] - if isDupLink(lls, llname) || name != "" && name != llname { - continue - } - ll := Link{Name: llname, Type: int(lifr.Type)} - ll.fetch(ep.s) - lls = append(lls, ll) - } - } - return lls, nil -} - -func isDupLink(lls []Link, name string) bool { - for _, ll := range lls { - if ll.Name == name { - return true - } - } - return false -} diff --git a/vendor/golang.org/x/net/lif/link_test.go b/vendor/golang.org/x/net/lif/link_test.go deleted file mode 100644 index 0cb9b95c..00000000 --- a/vendor/golang.org/x/net/lif/link_test.go +++ /dev/null @@ -1,63 +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. - -// +build solaris - -package lif - -import ( - "fmt" - "testing" -) - -func (ll *Link) String() string { - return fmt.Sprintf("name=%s index=%d type=%d flags=%#x mtu=%d addr=%v", ll.Name, ll.Index, ll.Type, ll.Flags, ll.MTU, llAddr(ll.Addr)) -} - -type linkPack struct { - af int - lls []Link -} - -func linkPacks() ([]linkPack, error) { - var lastErr error - var lps []linkPack - for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - lls, err := Links(af, "") - if err != nil { - lastErr = err - continue - } - lps = append(lps, linkPack{af: af, lls: lls}) - } - return lps, lastErr -} - -func TestLinks(t *testing.T) { - lps, err := linkPacks() - if len(lps) == 0 && err != nil { - t.Fatal(err) - } - for _, lp := range lps { - n := 0 - for _, sll := range lp.lls { - lls, err := Links(lp.af, sll.Name) - if err != nil { - t.Fatal(lp.af, sll.Name, err) - } - for _, ll := range lls { - if ll.Name != sll.Name || ll.Index != sll.Index { - t.Errorf("af=%s got %v; want %v", addrFamily(lp.af), &ll, &sll) - continue - } - t.Logf("af=%s name=%s %v", addrFamily(lp.af), sll.Name, &ll) - n++ - } - } - if n != len(lp.lls) { - t.Errorf("af=%s got %d; want %d", addrFamily(lp.af), n, len(lp.lls)) - continue - } - } -} diff --git a/vendor/golang.org/x/net/lif/sys.go b/vendor/golang.org/x/net/lif/sys.go deleted file mode 100644 index c896041b..00000000 --- a/vendor/golang.org/x/net/lif/sys.go +++ /dev/null @@ -1,21 +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. - -// +build solaris - -package lif - -import "unsafe" - -var nativeEndian binaryByteOrder - -func init() { - i := uint32(1) - b := (*[4]byte)(unsafe.Pointer(&i)) - if b[0] == 1 { - nativeEndian = littleEndian - } else { - nativeEndian = bigEndian - } -} diff --git a/vendor/golang.org/x/net/lif/sys_solaris_amd64.s b/vendor/golang.org/x/net/lif/sys_solaris_amd64.s deleted file mode 100644 index 39d76af7..00000000 --- a/vendor/golang.org/x/net/lif/sys_solaris_amd64.s +++ /dev/null @@ -1,8 +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. - -#include "textflag.h" - -TEXT ·sysvicall6(SB),NOSPLIT,$0-88 - JMP syscall·sysvicall6(SB) diff --git a/vendor/golang.org/x/net/lif/syscall.go b/vendor/golang.org/x/net/lif/syscall.go deleted file mode 100644 index aadab2e1..00000000 --- a/vendor/golang.org/x/net/lif/syscall.go +++ /dev/null @@ -1,28 +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. - -// +build solaris - -package lif - -import ( - "syscall" - "unsafe" -) - -//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" - -//go:linkname procIoctl libc_ioctl - -var procIoctl uintptr - -func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) - -func ioctl(s, ioc uintptr, arg unsafe.Pointer) error { - _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procIoctl)), 3, s, ioc, uintptr(arg), 0, 0, 0) - if errno != 0 { - return error(errno) - } - return nil -} diff --git a/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go b/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go deleted file mode 100644 index b5e999be..00000000 --- a/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go +++ /dev/null @@ -1,103 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_solaris.go - -package lif - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0x1a - - sysSOCK_DGRAM = 0x1 -) - -type sockaddrStorage struct { - Family uint16 - X_ss_pad1 [6]int8 - X_ss_align float64 - X_ss_pad2 [240]int8 -} - -const ( - sysLIFC_NOXMIT = 0x1 - sysLIFC_EXTERNAL_SOURCE = 0x2 - sysLIFC_TEMPORARY = 0x4 - sysLIFC_ALLZONES = 0x8 - sysLIFC_UNDER_IPMP = 0x10 - sysLIFC_ENABLED = 0x20 - - sysSIOCGLIFADDR = -0x3f87968f - sysSIOCGLIFDSTADDR = -0x3f87968d - sysSIOCGLIFFLAGS = -0x3f87968b - sysSIOCGLIFMTU = -0x3f879686 - sysSIOCGLIFNETMASK = -0x3f879683 - sysSIOCGLIFMETRIC = -0x3f879681 - sysSIOCGLIFNUM = -0x3ff3967e - sysSIOCGLIFINDEX = -0x3f87967b - sysSIOCGLIFSUBNET = -0x3f879676 - sysSIOCGLIFLNKINFO = -0x3f879674 - sysSIOCGLIFCONF = -0x3fef965b - sysSIOCGLIFHWADDR = -0x3f879640 -) - -const ( - sysIFF_UP = 0x1 - sysIFF_BROADCAST = 0x2 - sysIFF_DEBUG = 0x4 - sysIFF_LOOPBACK = 0x8 - sysIFF_POINTOPOINT = 0x10 - sysIFF_NOTRAILERS = 0x20 - sysIFF_RUNNING = 0x40 - sysIFF_NOARP = 0x80 - sysIFF_PROMISC = 0x100 - sysIFF_ALLMULTI = 0x200 - sysIFF_INTELLIGENT = 0x400 - sysIFF_MULTICAST = 0x800 - sysIFF_MULTI_BCAST = 0x1000 - sysIFF_UNNUMBERED = 0x2000 - sysIFF_PRIVATE = 0x8000 -) - -const ( - sizeofLifnum = 0xc - sizeofLifreq = 0x178 - sizeofLifconf = 0x18 - sizeofLifIfinfoReq = 0x10 -) - -type lifnum struct { - Family uint16 - Pad_cgo_0 [2]byte - Flags int32 - Count int32 -} - -type lifreq struct { - Name [32]int8 - Lifru1 [4]byte - Type uint32 - Lifru [336]byte -} - -type lifconf struct { - Family uint16 - Pad_cgo_0 [2]byte - Flags int32 - Len int32 - Pad_cgo_1 [4]byte - Lifcu [8]byte -} - -type lifIfinfoReq struct { - Maxhops uint8 - Pad_cgo_0 [3]byte - Reachtime uint32 - Reachretrans uint32 - Maxmtu uint32 -} - -const ( - sysIFT_IPV4 = 0xc8 - sysIFT_IPV6 = 0xc9 - sysIFT_6TO4 = 0xca -) diff --git a/vendor/golang.org/x/net/nettest/conntest.go b/vendor/golang.org/x/net/nettest/conntest.go deleted file mode 100644 index 5bd3a8c6..00000000 --- a/vendor/golang.org/x/net/nettest/conntest.go +++ /dev/null @@ -1,456 +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 nettest provides utilities for network testing. -package nettest - -import ( - "bytes" - "encoding/binary" - "io" - "io/ioutil" - "math/rand" - "net" - "runtime" - "sync" - "testing" - "time" -) - -var ( - aLongTimeAgo = time.Unix(233431200, 0) - neverTimeout = time.Time{} -) - -// MakePipe creates a connection between two endpoints and returns the pair -// as c1 and c2, such that anything written to c1 is read by c2 and vice-versa. -// The stop function closes all resources, including c1, c2, and the underlying -// net.Listener (if there is one), and should not be nil. -type MakePipe func() (c1, c2 net.Conn, stop func(), err error) - -// TestConn tests that a net.Conn implementation properly satisfies the interface. -// The tests should not produce any false positives, but may experience -// false negatives. Thus, some issues may only be detected when the test is -// run multiple times. For maximal effectiveness, run the tests under the -// race detector. -func TestConn(t *testing.T, mp MakePipe) { - testConn(t, mp) -} - -type connTester func(t *testing.T, c1, c2 net.Conn) - -func timeoutWrapper(t *testing.T, mp MakePipe, f connTester) { - c1, c2, stop, err := mp() - if err != nil { - t.Fatalf("unable to make pipe: %v", err) - } - var once sync.Once - defer once.Do(func() { stop() }) - timer := time.AfterFunc(time.Minute, func() { - once.Do(func() { - t.Error("test timed out; terminating pipe") - stop() - }) - }) - defer timer.Stop() - f(t, c1, c2) -} - -// testBasicIO tests that the data sent on c1 is properly received on c2. -func testBasicIO(t *testing.T, c1, c2 net.Conn) { - want := make([]byte, 1<<20) - rand.New(rand.NewSource(0)).Read(want) - - dataCh := make(chan []byte) - go func() { - rd := bytes.NewReader(want) - if err := chunkedCopy(c1, rd); err != nil { - t.Errorf("unexpected c1.Write error: %v", err) - } - if err := c1.Close(); err != nil { - t.Errorf("unexpected c1.Close error: %v", err) - } - }() - - go func() { - wr := new(bytes.Buffer) - if err := chunkedCopy(wr, c2); err != nil { - t.Errorf("unexpected c2.Read error: %v", err) - } - if err := c2.Close(); err != nil { - t.Errorf("unexpected c2.Close error: %v", err) - } - dataCh <- wr.Bytes() - }() - - if got := <-dataCh; !bytes.Equal(got, want) { - t.Errorf("transmitted data differs") - } -} - -// testPingPong tests that the two endpoints can synchronously send data to -// each other in a typical request-response pattern. -func testPingPong(t *testing.T, c1, c2 net.Conn) { - var wg sync.WaitGroup - defer wg.Wait() - - pingPonger := func(c net.Conn) { - defer wg.Done() - buf := make([]byte, 8) - var prev uint64 - for { - if _, err := io.ReadFull(c, buf); err != nil { - if err == io.EOF { - break - } - t.Errorf("unexpected Read error: %v", err) - } - - v := binary.LittleEndian.Uint64(buf) - binary.LittleEndian.PutUint64(buf, v+1) - if prev != 0 && prev+2 != v { - t.Errorf("mismatching value: got %d, want %d", v, prev+2) - } - prev = v - if v == 1000 { - break - } - - if _, err := c.Write(buf); err != nil { - t.Errorf("unexpected Write error: %v", err) - break - } - } - if err := c.Close(); err != nil { - t.Errorf("unexpected Close error: %v", err) - } - } - - wg.Add(2) - go pingPonger(c1) - go pingPonger(c2) - - // Start off the chain reaction. - if _, err := c1.Write(make([]byte, 8)); err != nil { - t.Errorf("unexpected c1.Write error: %v", err) - } -} - -// testRacyRead tests that it is safe to mutate the input Read buffer -// immediately after cancelation has occurred. -func testRacyRead(t *testing.T, c1, c2 net.Conn) { - go chunkedCopy(c2, rand.New(rand.NewSource(0))) - - var wg sync.WaitGroup - defer wg.Wait() - - c1.SetReadDeadline(time.Now().Add(time.Millisecond)) - for i := 0; i < 10; i++ { - wg.Add(1) - go func() { - defer wg.Done() - - b1 := make([]byte, 1024) - b2 := make([]byte, 1024) - for j := 0; j < 100; j++ { - _, err := c1.Read(b1) - copy(b1, b2) // Mutate b1 to trigger potential race - if err != nil { - checkForTimeoutError(t, err) - c1.SetReadDeadline(time.Now().Add(time.Millisecond)) - } - } - }() - } -} - -// testRacyWrite tests that it is safe to mutate the input Write buffer -// immediately after cancelation has occurred. -func testRacyWrite(t *testing.T, c1, c2 net.Conn) { - go chunkedCopy(ioutil.Discard, c2) - - var wg sync.WaitGroup - defer wg.Wait() - - c1.SetWriteDeadline(time.Now().Add(time.Millisecond)) - for i := 0; i < 10; i++ { - wg.Add(1) - go func() { - defer wg.Done() - - b1 := make([]byte, 1024) - b2 := make([]byte, 1024) - for j := 0; j < 100; j++ { - _, err := c1.Write(b1) - copy(b1, b2) // Mutate b1 to trigger potential race - if err != nil { - checkForTimeoutError(t, err) - c1.SetWriteDeadline(time.Now().Add(time.Millisecond)) - } - } - }() - } -} - -// testReadTimeout tests that Read timeouts do not affect Write. -func testReadTimeout(t *testing.T, c1, c2 net.Conn) { - go chunkedCopy(ioutil.Discard, c2) - - c1.SetReadDeadline(aLongTimeAgo) - _, err := c1.Read(make([]byte, 1024)) - checkForTimeoutError(t, err) - if _, err := c1.Write(make([]byte, 1024)); err != nil { - t.Errorf("unexpected Write error: %v", err) - } -} - -// testWriteTimeout tests that Write timeouts do not affect Read. -func testWriteTimeout(t *testing.T, c1, c2 net.Conn) { - go chunkedCopy(c2, rand.New(rand.NewSource(0))) - - c1.SetWriteDeadline(aLongTimeAgo) - _, err := c1.Write(make([]byte, 1024)) - checkForTimeoutError(t, err) - if _, err := c1.Read(make([]byte, 1024)); err != nil { - t.Errorf("unexpected Read error: %v", err) - } -} - -// testPastTimeout tests that a deadline set in the past immediately times out -// Read and Write requests. -func testPastTimeout(t *testing.T, c1, c2 net.Conn) { - go chunkedCopy(c2, c2) - - testRoundtrip(t, c1) - - c1.SetDeadline(aLongTimeAgo) - n, err := c1.Write(make([]byte, 1024)) - if n != 0 { - t.Errorf("unexpected Write count: got %d, want 0", n) - } - checkForTimeoutError(t, err) - n, err = c1.Read(make([]byte, 1024)) - if n != 0 { - t.Errorf("unexpected Read count: got %d, want 0", n) - } - checkForTimeoutError(t, err) - - testRoundtrip(t, c1) -} - -// testPresentTimeout tests that a deadline set while there are pending -// Read and Write operations immediately times out those operations. -func testPresentTimeout(t *testing.T, c1, c2 net.Conn) { - var wg sync.WaitGroup - defer wg.Wait() - wg.Add(3) - - deadlineSet := make(chan bool, 1) - go func() { - defer wg.Done() - time.Sleep(100 * time.Millisecond) - deadlineSet <- true - c1.SetReadDeadline(aLongTimeAgo) - c1.SetWriteDeadline(aLongTimeAgo) - }() - go func() { - defer wg.Done() - n, err := c1.Read(make([]byte, 1024)) - if n != 0 { - t.Errorf("unexpected Read count: got %d, want 0", n) - } - checkForTimeoutError(t, err) - if len(deadlineSet) == 0 { - t.Error("Read timed out before deadline is set") - } - }() - go func() { - defer wg.Done() - var err error - for err == nil { - _, err = c1.Write(make([]byte, 1024)) - } - checkForTimeoutError(t, err) - if len(deadlineSet) == 0 { - t.Error("Write timed out before deadline is set") - } - }() -} - -// testFutureTimeout tests that a future deadline will eventually time out -// Read and Write operations. -func testFutureTimeout(t *testing.T, c1, c2 net.Conn) { - var wg sync.WaitGroup - wg.Add(2) - - c1.SetDeadline(time.Now().Add(100 * time.Millisecond)) - go func() { - defer wg.Done() - _, err := c1.Read(make([]byte, 1024)) - checkForTimeoutError(t, err) - }() - go func() { - defer wg.Done() - var err error - for err == nil { - _, err = c1.Write(make([]byte, 1024)) - } - checkForTimeoutError(t, err) - }() - wg.Wait() - - go chunkedCopy(c2, c2) - resyncConn(t, c1) - testRoundtrip(t, c1) -} - -// testCloseTimeout tests that calling Close immediately times out pending -// Read and Write operations. -func testCloseTimeout(t *testing.T, c1, c2 net.Conn) { - go chunkedCopy(c2, c2) - - var wg sync.WaitGroup - defer wg.Wait() - wg.Add(3) - - // Test for cancelation upon connection closure. - c1.SetDeadline(neverTimeout) - go func() { - defer wg.Done() - time.Sleep(100 * time.Millisecond) - c1.Close() - }() - go func() { - defer wg.Done() - var err error - buf := make([]byte, 1024) - for err == nil { - _, err = c1.Read(buf) - } - }() - go func() { - defer wg.Done() - var err error - buf := make([]byte, 1024) - for err == nil { - _, err = c1.Write(buf) - } - }() -} - -// testConcurrentMethods tests that the methods of net.Conn can safely -// be called concurrently. -func testConcurrentMethods(t *testing.T, c1, c2 net.Conn) { - if runtime.GOOS == "plan9" { - t.Skip("skipping on plan9; see https://golang.org/issue/20489") - } - go chunkedCopy(c2, c2) - - // The results of the calls may be nonsensical, but this should - // not trigger a race detector warning. - var wg sync.WaitGroup - for i := 0; i < 100; i++ { - wg.Add(7) - go func() { - defer wg.Done() - c1.Read(make([]byte, 1024)) - }() - go func() { - defer wg.Done() - c1.Write(make([]byte, 1024)) - }() - go func() { - defer wg.Done() - c1.SetDeadline(time.Now().Add(10 * time.Millisecond)) - }() - go func() { - defer wg.Done() - c1.SetReadDeadline(aLongTimeAgo) - }() - go func() { - defer wg.Done() - c1.SetWriteDeadline(aLongTimeAgo) - }() - go func() { - defer wg.Done() - c1.LocalAddr() - }() - go func() { - defer wg.Done() - c1.RemoteAddr() - }() - } - wg.Wait() // At worst, the deadline is set 10ms into the future - - resyncConn(t, c1) - testRoundtrip(t, c1) -} - -// checkForTimeoutError checks that the error satisfies the Error interface -// and that Timeout returns true. -func checkForTimeoutError(t *testing.T, err error) { - if nerr, ok := err.(net.Error); ok { - if !nerr.Timeout() { - t.Errorf("err.Timeout() = false, want true") - } - } else { - t.Errorf("got %T, want net.Error", err) - } -} - -// testRoundtrip writes something into c and reads it back. -// It assumes that everything written into c is echoed back to itself. -func testRoundtrip(t *testing.T, c net.Conn) { - if err := c.SetDeadline(neverTimeout); err != nil { - t.Errorf("roundtrip SetDeadline error: %v", err) - } - - const s = "Hello, world!" - buf := []byte(s) - if _, err := c.Write(buf); err != nil { - t.Errorf("roundtrip Write error: %v", err) - } - if _, err := io.ReadFull(c, buf); err != nil { - t.Errorf("roundtrip Read error: %v", err) - } - if string(buf) != s { - t.Errorf("roundtrip data mismatch: got %q, want %q", buf, s) - } -} - -// resyncConn resynchronizes the connection into a sane state. -// It assumes that everything written into c is echoed back to itself. -// It assumes that 0xff is not currently on the wire or in the read buffer. -func resyncConn(t *testing.T, c net.Conn) { - c.SetDeadline(neverTimeout) - errCh := make(chan error) - go func() { - _, err := c.Write([]byte{0xff}) - errCh <- err - }() - buf := make([]byte, 1024) - for { - n, err := c.Read(buf) - if n > 0 && bytes.IndexByte(buf[:n], 0xff) == n-1 { - break - } - if err != nil { - t.Errorf("unexpected Read error: %v", err) - break - } - } - if err := <-errCh; err != nil { - t.Errorf("unexpected Write error: %v", err) - } -} - -// chunkedCopy copies from r to w in fixed-width chunks to avoid -// causing a Write that exceeds the maximum packet size for packet-based -// connections like "unixpacket". -// We assume that the maximum packet size is at least 1024. -func chunkedCopy(w io.Writer, r io.Reader) error { - b := make([]byte, 1024) - _, err := io.CopyBuffer(struct{ io.Writer }{w}, struct{ io.Reader }{r}, b) - return err -} diff --git a/vendor/golang.org/x/net/nettest/conntest_go16.go b/vendor/golang.org/x/net/nettest/conntest_go16.go deleted file mode 100644 index 4cbf48e3..00000000 --- a/vendor/golang.org/x/net/nettest/conntest_go16.go +++ /dev/null @@ -1,24 +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. - -// +build !go1.7 - -package nettest - -import "testing" - -func testConn(t *testing.T, mp MakePipe) { - // Avoid using subtests on Go 1.6 and below. - timeoutWrapper(t, mp, testBasicIO) - timeoutWrapper(t, mp, testPingPong) - timeoutWrapper(t, mp, testRacyRead) - timeoutWrapper(t, mp, testRacyWrite) - timeoutWrapper(t, mp, testReadTimeout) - timeoutWrapper(t, mp, testWriteTimeout) - timeoutWrapper(t, mp, testPastTimeout) - timeoutWrapper(t, mp, testPresentTimeout) - timeoutWrapper(t, mp, testFutureTimeout) - timeoutWrapper(t, mp, testCloseTimeout) - timeoutWrapper(t, mp, testConcurrentMethods) -} diff --git a/vendor/golang.org/x/net/nettest/conntest_go17.go b/vendor/golang.org/x/net/nettest/conntest_go17.go deleted file mode 100644 index fa039f03..00000000 --- a/vendor/golang.org/x/net/nettest/conntest_go17.go +++ /dev/null @@ -1,24 +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. - -// +build go1.7 - -package nettest - -import "testing" - -func testConn(t *testing.T, mp MakePipe) { - // Use subtests on Go 1.7 and above since it is better organized. - t.Run("BasicIO", func(t *testing.T) { timeoutWrapper(t, mp, testBasicIO) }) - t.Run("PingPong", func(t *testing.T) { timeoutWrapper(t, mp, testPingPong) }) - t.Run("RacyRead", func(t *testing.T) { timeoutWrapper(t, mp, testRacyRead) }) - t.Run("RacyWrite", func(t *testing.T) { timeoutWrapper(t, mp, testRacyWrite) }) - t.Run("ReadTimeout", func(t *testing.T) { timeoutWrapper(t, mp, testReadTimeout) }) - t.Run("WriteTimeout", func(t *testing.T) { timeoutWrapper(t, mp, testWriteTimeout) }) - t.Run("PastTimeout", func(t *testing.T) { timeoutWrapper(t, mp, testPastTimeout) }) - t.Run("PresentTimeout", func(t *testing.T) { timeoutWrapper(t, mp, testPresentTimeout) }) - t.Run("FutureTimeout", func(t *testing.T) { timeoutWrapper(t, mp, testFutureTimeout) }) - t.Run("CloseTimeout", func(t *testing.T) { timeoutWrapper(t, mp, testCloseTimeout) }) - t.Run("ConcurrentMethods", func(t *testing.T) { timeoutWrapper(t, mp, testConcurrentMethods) }) -} diff --git a/vendor/golang.org/x/net/nettest/conntest_test.go b/vendor/golang.org/x/net/nettest/conntest_test.go deleted file mode 100644 index 9f9453fb..00000000 --- a/vendor/golang.org/x/net/nettest/conntest_test.go +++ /dev/null @@ -1,76 +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. - -// +build go1.8 - -package nettest - -import ( - "net" - "os" - "runtime" - "testing" - - "golang.org/x/net/internal/nettest" -) - -func TestTestConn(t *testing.T) { - tests := []struct{ name, network string }{ - {"TCP", "tcp"}, - {"UnixPipe", "unix"}, - {"UnixPacketPipe", "unixpacket"}, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - if !nettest.TestableNetwork(tt.network) { - t.Skipf("not supported on %s", runtime.GOOS) - } - - mp := func() (c1, c2 net.Conn, stop func(), err error) { - ln, err := nettest.NewLocalListener(tt.network) - if err != nil { - return nil, nil, nil, err - } - - // Start a connection between two endpoints. - var err1, err2 error - done := make(chan bool) - go func() { - c2, err2 = ln.Accept() - close(done) - }() - c1, err1 = net.Dial(ln.Addr().Network(), ln.Addr().String()) - <-done - - stop = func() { - if err1 == nil { - c1.Close() - } - if err2 == nil { - c2.Close() - } - ln.Close() - switch tt.network { - case "unix", "unixpacket": - os.Remove(ln.Addr().String()) - } - } - - switch { - case err1 != nil: - stop() - return nil, nil, nil, err1 - case err2 != nil: - stop() - return nil, nil, nil, err2 - default: - return c1, c2, stop, nil - } - } - - TestConn(t, mp) - }) - } -} diff --git a/vendor/golang.org/x/net/netutil/listen.go b/vendor/golang.org/x/net/netutil/listen.go deleted file mode 100644 index 56f43bf6..00000000 --- a/vendor/golang.org/x/net/netutil/listen.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 netutil provides network utility functions, complementing the more -// common ones in the net package. -package netutil // import "golang.org/x/net/netutil" - -import ( - "net" - "sync" -) - -// LimitListener returns a Listener that accepts at most n simultaneous -// connections from the provided Listener. -func LimitListener(l net.Listener, n int) net.Listener { - return &limitListener{l, make(chan struct{}, n)} -} - -type limitListener struct { - net.Listener - sem chan struct{} -} - -func (l *limitListener) acquire() { l.sem <- struct{}{} } -func (l *limitListener) release() { <-l.sem } - -func (l *limitListener) Accept() (net.Conn, error) { - l.acquire() - c, err := l.Listener.Accept() - if err != nil { - l.release() - return nil, err - } - return &limitListenerConn{Conn: c, release: l.release}, nil -} - -type limitListenerConn struct { - net.Conn - releaseOnce sync.Once - release func() -} - -func (l *limitListenerConn) Close() error { - err := l.Conn.Close() - l.releaseOnce.Do(l.release) - return err -} diff --git a/vendor/golang.org/x/net/netutil/listen_test.go b/vendor/golang.org/x/net/netutil/listen_test.go deleted file mode 100644 index 5e07d7be..00000000 --- a/vendor/golang.org/x/net/netutil/listen_test.go +++ /dev/null @@ -1,101 +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 netutil - -import ( - "errors" - "fmt" - "io" - "io/ioutil" - "net" - "net/http" - "sync" - "sync/atomic" - "testing" - "time" - - "golang.org/x/net/internal/nettest" -) - -func TestLimitListener(t *testing.T) { - const max = 5 - attempts := (nettest.MaxOpenFiles() - max) / 2 - if attempts > 256 { // maximum length of accept queue is 128 by default - attempts = 256 - } - - l, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - t.Fatal(err) - } - defer l.Close() - l = LimitListener(l, max) - - var open int32 - go http.Serve(l, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if n := atomic.AddInt32(&open, 1); n > max { - t.Errorf("%d open connections, want <= %d", n, max) - } - defer atomic.AddInt32(&open, -1) - time.Sleep(10 * time.Millisecond) - fmt.Fprint(w, "some body") - })) - - var wg sync.WaitGroup - var failed int32 - for i := 0; i < attempts; i++ { - wg.Add(1) - go func() { - defer wg.Done() - c := http.Client{Timeout: 3 * time.Second} - r, err := c.Get("http://" + l.Addr().String()) - if err != nil { - t.Log(err) - atomic.AddInt32(&failed, 1) - return - } - defer r.Body.Close() - io.Copy(ioutil.Discard, r.Body) - }() - } - wg.Wait() - - // We expect some Gets to fail as the kernel's accept queue is filled, - // but most should succeed. - if int(failed) >= attempts/2 { - t.Errorf("%d requests failed within %d attempts", failed, attempts) - } -} - -type errorListener struct { - net.Listener -} - -func (errorListener) Accept() (net.Conn, error) { - return nil, errFake -} - -var errFake = errors.New("fake error from errorListener") - -// This used to hang. -func TestLimitListenerError(t *testing.T) { - donec := make(chan bool, 1) - go func() { - const n = 2 - ll := LimitListener(errorListener{}, n) - for i := 0; i < n+1; i++ { - _, err := ll.Accept() - if err != errFake { - t.Fatalf("Accept error = %v; want errFake", err) - } - } - donec <- true - }() - select { - case <-donec: - case <-time.After(5 * time.Second): - t.Fatal("timeout. deadlock?") - } -} diff --git a/vendor/golang.org/x/net/proxy/direct.go b/vendor/golang.org/x/net/proxy/direct.go deleted file mode 100644 index 4c5ad88b..00000000 --- a/vendor/golang.org/x/net/proxy/direct.go +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proxy - -import ( - "net" -) - -type direct struct{} - -// Direct is a direct proxy: one that makes network connections directly. -var Direct = direct{} - -func (direct) Dial(network, addr string) (net.Conn, error) { - return net.Dial(network, addr) -} diff --git a/vendor/golang.org/x/net/proxy/per_host.go b/vendor/golang.org/x/net/proxy/per_host.go deleted file mode 100644 index 0689bb6a..00000000 --- a/vendor/golang.org/x/net/proxy/per_host.go +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proxy - -import ( - "net" - "strings" -) - -// A PerHost directs connections to a default Dialer unless the host name -// requested matches one of a number of exceptions. -type PerHost struct { - def, bypass Dialer - - bypassNetworks []*net.IPNet - bypassIPs []net.IP - bypassZones []string - bypassHosts []string -} - -// NewPerHost returns a PerHost Dialer that directs connections to either -// defaultDialer or bypass, depending on whether the connection matches one of -// the configured rules. -func NewPerHost(defaultDialer, bypass Dialer) *PerHost { - return &PerHost{ - def: defaultDialer, - bypass: bypass, - } -} - -// Dial connects to the address addr on the given network through either -// defaultDialer or bypass. -func (p *PerHost) Dial(network, addr string) (c net.Conn, err error) { - host, _, err := net.SplitHostPort(addr) - if err != nil { - return nil, err - } - - return p.dialerForRequest(host).Dial(network, addr) -} - -func (p *PerHost) dialerForRequest(host string) Dialer { - if ip := net.ParseIP(host); ip != nil { - for _, net := range p.bypassNetworks { - if net.Contains(ip) { - return p.bypass - } - } - for _, bypassIP := range p.bypassIPs { - if bypassIP.Equal(ip) { - return p.bypass - } - } - return p.def - } - - for _, zone := range p.bypassZones { - if strings.HasSuffix(host, zone) { - return p.bypass - } - if host == zone[1:] { - // For a zone ".example.com", we match "example.com" - // too. - return p.bypass - } - } - for _, bypassHost := range p.bypassHosts { - if bypassHost == host { - return p.bypass - } - } - return p.def -} - -// AddFromString parses a string that contains comma-separated values -// specifying hosts that should use the bypass proxy. Each value is either an -// IP address, a CIDR range, a zone (*.example.com) or a host name -// (localhost). A best effort is made to parse the string and errors are -// ignored. -func (p *PerHost) AddFromString(s string) { - hosts := strings.Split(s, ",") - for _, host := range hosts { - host = strings.TrimSpace(host) - if len(host) == 0 { - continue - } - if strings.Contains(host, "/") { - // We assume that it's a CIDR address like 127.0.0.0/8 - if _, net, err := net.ParseCIDR(host); err == nil { - p.AddNetwork(net) - } - continue - } - if ip := net.ParseIP(host); ip != nil { - p.AddIP(ip) - continue - } - if strings.HasPrefix(host, "*.") { - p.AddZone(host[1:]) - continue - } - p.AddHost(host) - } -} - -// AddIP specifies an IP address that will use the bypass proxy. Note that -// this will only take effect if a literal IP address is dialed. A connection -// to a named host will never match an IP. -func (p *PerHost) AddIP(ip net.IP) { - p.bypassIPs = append(p.bypassIPs, ip) -} - -// AddNetwork specifies an IP range that will use the bypass proxy. Note that -// this will only take effect if a literal IP address is dialed. A connection -// to a named host will never match. -func (p *PerHost) AddNetwork(net *net.IPNet) { - p.bypassNetworks = append(p.bypassNetworks, net) -} - -// AddZone specifies a DNS suffix that will use the bypass proxy. A zone of -// "example.com" matches "example.com" and all of its subdomains. -func (p *PerHost) AddZone(zone string) { - if strings.HasSuffix(zone, ".") { - zone = zone[:len(zone)-1] - } - if !strings.HasPrefix(zone, ".") { - zone = "." + zone - } - p.bypassZones = append(p.bypassZones, zone) -} - -// AddHost specifies a host name that will use the bypass proxy. -func (p *PerHost) AddHost(host string) { - if strings.HasSuffix(host, ".") { - host = host[:len(host)-1] - } - p.bypassHosts = append(p.bypassHosts, host) -} diff --git a/vendor/golang.org/x/net/proxy/per_host_test.go b/vendor/golang.org/x/net/proxy/per_host_test.go deleted file mode 100644 index a7d80957..00000000 --- a/vendor/golang.org/x/net/proxy/per_host_test.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proxy - -import ( - "errors" - "net" - "reflect" - "testing" -) - -type recordingProxy struct { - addrs []string -} - -func (r *recordingProxy) Dial(network, addr string) (net.Conn, error) { - r.addrs = append(r.addrs, addr) - return nil, errors.New("recordingProxy") -} - -func TestPerHost(t *testing.T) { - var def, bypass recordingProxy - perHost := NewPerHost(&def, &bypass) - perHost.AddFromString("localhost,*.zone,127.0.0.1,10.0.0.1/8,1000::/16") - - expectedDef := []string{ - "example.com:123", - "1.2.3.4:123", - "[1001::]:123", - } - expectedBypass := []string{ - "localhost:123", - "zone:123", - "foo.zone:123", - "127.0.0.1:123", - "10.1.2.3:123", - "[1000::]:123", - } - - for _, addr := range expectedDef { - perHost.Dial("tcp", addr) - } - for _, addr := range expectedBypass { - perHost.Dial("tcp", addr) - } - - if !reflect.DeepEqual(expectedDef, def.addrs) { - t.Errorf("Hosts which went to the default proxy didn't match. Got %v, want %v", def.addrs, expectedDef) - } - if !reflect.DeepEqual(expectedBypass, bypass.addrs) { - t.Errorf("Hosts which went to the bypass proxy didn't match. Got %v, want %v", bypass.addrs, expectedBypass) - } -} diff --git a/vendor/golang.org/x/net/proxy/proxy.go b/vendor/golang.org/x/net/proxy/proxy.go deleted file mode 100644 index 553ead7c..00000000 --- a/vendor/golang.org/x/net/proxy/proxy.go +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package proxy provides support for a variety of protocols to proxy network -// data. -package proxy // import "golang.org/x/net/proxy" - -import ( - "errors" - "net" - "net/url" - "os" - "sync" -) - -// A Dialer is a means to establish a connection. -type Dialer interface { - // Dial connects to the given address via the proxy. - Dial(network, addr string) (c net.Conn, err error) -} - -// Auth contains authentication parameters that specific Dialers may require. -type Auth struct { - User, Password string -} - -// FromEnvironment returns the dialer specified by the proxy related variables in -// the environment. -func FromEnvironment() Dialer { - allProxy := allProxyEnv.Get() - if len(allProxy) == 0 { - return Direct - } - - proxyURL, err := url.Parse(allProxy) - if err != nil { - return Direct - } - proxy, err := FromURL(proxyURL, Direct) - if err != nil { - return Direct - } - - noProxy := noProxyEnv.Get() - if len(noProxy) == 0 { - return proxy - } - - perHost := NewPerHost(proxy, Direct) - perHost.AddFromString(noProxy) - return perHost -} - -// proxySchemes is a map from URL schemes to a function that creates a Dialer -// from a URL with such a scheme. -var proxySchemes map[string]func(*url.URL, Dialer) (Dialer, error) - -// RegisterDialerType takes a URL scheme and a function to generate Dialers from -// a URL with that scheme and a forwarding Dialer. Registered schemes are used -// by FromURL. -func RegisterDialerType(scheme string, f func(*url.URL, Dialer) (Dialer, error)) { - if proxySchemes == nil { - proxySchemes = make(map[string]func(*url.URL, Dialer) (Dialer, error)) - } - proxySchemes[scheme] = f -} - -// FromURL returns a Dialer given a URL specification and an underlying -// Dialer for it to make network requests. -func FromURL(u *url.URL, forward Dialer) (Dialer, error) { - var auth *Auth - if u.User != nil { - auth = new(Auth) - auth.User = u.User.Username() - if p, ok := u.User.Password(); ok { - auth.Password = p - } - } - - switch u.Scheme { - case "socks5": - return SOCKS5("tcp", u.Host, auth, forward) - } - - // If the scheme doesn't match any of the built-in schemes, see if it - // was registered by another package. - if proxySchemes != nil { - if f, ok := proxySchemes[u.Scheme]; ok { - return f(u, forward) - } - } - - return nil, errors.New("proxy: unknown scheme: " + u.Scheme) -} - -var ( - allProxyEnv = &envOnce{ - names: []string{"ALL_PROXY", "all_proxy"}, - } - noProxyEnv = &envOnce{ - names: []string{"NO_PROXY", "no_proxy"}, - } -) - -// envOnce looks up an environment variable (optionally by multiple -// names) once. It mitigates expensive lookups on some platforms -// (e.g. Windows). -// (Borrowed from net/http/transport.go) -type envOnce struct { - names []string - once sync.Once - val string -} - -func (e *envOnce) Get() string { - e.once.Do(e.init) - return e.val -} - -func (e *envOnce) init() { - for _, n := range e.names { - e.val = os.Getenv(n) - if e.val != "" { - return - } - } -} - -// reset is used by tests -func (e *envOnce) reset() { - e.once = sync.Once{} - e.val = "" -} diff --git a/vendor/golang.org/x/net/proxy/proxy_test.go b/vendor/golang.org/x/net/proxy/proxy_test.go deleted file mode 100644 index 0f31e211..00000000 --- a/vendor/golang.org/x/net/proxy/proxy_test.go +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proxy - -import ( - "bytes" - "fmt" - "io" - "net" - "net/url" - "os" - "strconv" - "strings" - "sync" - "testing" -) - -type proxyFromEnvTest struct { - allProxyEnv string - noProxyEnv string - wantTypeOf Dialer -} - -func (t proxyFromEnvTest) String() string { - var buf bytes.Buffer - space := func() { - if buf.Len() > 0 { - buf.WriteByte(' ') - } - } - if t.allProxyEnv != "" { - fmt.Fprintf(&buf, "all_proxy=%q", t.allProxyEnv) - } - if t.noProxyEnv != "" { - space() - fmt.Fprintf(&buf, "no_proxy=%q", t.noProxyEnv) - } - return strings.TrimSpace(buf.String()) -} - -func TestFromEnvironment(t *testing.T) { - ResetProxyEnv() - - type dummyDialer struct { - direct - } - - RegisterDialerType("irc", func(_ *url.URL, _ Dialer) (Dialer, error) { - return dummyDialer{}, nil - }) - - proxyFromEnvTests := []proxyFromEnvTest{ - {allProxyEnv: "127.0.0.1:8080", noProxyEnv: "localhost, 127.0.0.1", wantTypeOf: direct{}}, - {allProxyEnv: "ftp://example.com:8000", noProxyEnv: "localhost, 127.0.0.1", wantTypeOf: direct{}}, - {allProxyEnv: "socks5://example.com:8080", noProxyEnv: "localhost, 127.0.0.1", wantTypeOf: &PerHost{}}, - {allProxyEnv: "irc://example.com:8000", wantTypeOf: dummyDialer{}}, - {noProxyEnv: "localhost, 127.0.0.1", wantTypeOf: direct{}}, - {wantTypeOf: direct{}}, - } - - for _, tt := range proxyFromEnvTests { - os.Setenv("ALL_PROXY", tt.allProxyEnv) - os.Setenv("NO_PROXY", tt.noProxyEnv) - ResetCachedEnvironment() - - d := FromEnvironment() - if got, want := fmt.Sprintf("%T", d), fmt.Sprintf("%T", tt.wantTypeOf); got != want { - t.Errorf("%v: got type = %T, want %T", tt, d, tt.wantTypeOf) - } - } -} - -func TestFromURL(t *testing.T) { - endSystem, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - t.Fatalf("net.Listen failed: %v", err) - } - defer endSystem.Close() - gateway, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - t.Fatalf("net.Listen failed: %v", err) - } - defer gateway.Close() - - var wg sync.WaitGroup - wg.Add(1) - go socks5Gateway(t, gateway, endSystem, socks5Domain, &wg) - - url, err := url.Parse("socks5://user:password@" + gateway.Addr().String()) - if err != nil { - t.Fatalf("url.Parse failed: %v", err) - } - proxy, err := FromURL(url, Direct) - if err != nil { - t.Fatalf("FromURL failed: %v", err) - } - _, port, err := net.SplitHostPort(endSystem.Addr().String()) - if err != nil { - t.Fatalf("net.SplitHostPort failed: %v", err) - } - if c, err := proxy.Dial("tcp", "localhost:"+port); err != nil { - t.Fatalf("FromURL.Dial failed: %v", err) - } else { - c.Close() - } - - wg.Wait() -} - -func TestSOCKS5(t *testing.T) { - endSystem, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - t.Fatalf("net.Listen failed: %v", err) - } - defer endSystem.Close() - gateway, err := net.Listen("tcp", "127.0.0.1:0") - if err != nil { - t.Fatalf("net.Listen failed: %v", err) - } - defer gateway.Close() - - var wg sync.WaitGroup - wg.Add(1) - go socks5Gateway(t, gateway, endSystem, socks5IP4, &wg) - - proxy, err := SOCKS5("tcp", gateway.Addr().String(), nil, Direct) - if err != nil { - t.Fatalf("SOCKS5 failed: %v", err) - } - if c, err := proxy.Dial("tcp", endSystem.Addr().String()); err != nil { - t.Fatalf("SOCKS5.Dial failed: %v", err) - } else { - c.Close() - } - - wg.Wait() -} - -func socks5Gateway(t *testing.T, gateway, endSystem net.Listener, typ byte, wg *sync.WaitGroup) { - defer wg.Done() - - c, err := gateway.Accept() - if err != nil { - t.Errorf("net.Listener.Accept failed: %v", err) - return - } - defer c.Close() - - b := make([]byte, 32) - var n int - if typ == socks5Domain { - n = 4 - } else { - n = 3 - } - if _, err := io.ReadFull(c, b[:n]); err != nil { - t.Errorf("io.ReadFull failed: %v", err) - return - } - if _, err := c.Write([]byte{socks5Version, socks5AuthNone}); err != nil { - t.Errorf("net.Conn.Write failed: %v", err) - return - } - if typ == socks5Domain { - n = 16 - } else { - n = 10 - } - if _, err := io.ReadFull(c, b[:n]); err != nil { - t.Errorf("io.ReadFull failed: %v", err) - return - } - if b[0] != socks5Version || b[1] != socks5Connect || b[2] != 0x00 || b[3] != typ { - t.Errorf("got an unexpected packet: %#02x %#02x %#02x %#02x", b[0], b[1], b[2], b[3]) - return - } - if typ == socks5Domain { - copy(b[:5], []byte{socks5Version, 0x00, 0x00, socks5Domain, 9}) - b = append(b, []byte("localhost")...) - } else { - copy(b[:4], []byte{socks5Version, 0x00, 0x00, socks5IP4}) - } - host, port, err := net.SplitHostPort(endSystem.Addr().String()) - if err != nil { - t.Errorf("net.SplitHostPort failed: %v", err) - return - } - b = append(b, []byte(net.ParseIP(host).To4())...) - p, err := strconv.Atoi(port) - if err != nil { - t.Errorf("strconv.Atoi failed: %v", err) - return - } - b = append(b, []byte{byte(p >> 8), byte(p)}...) - if _, err := c.Write(b); err != nil { - t.Errorf("net.Conn.Write failed: %v", err) - return - } -} - -func ResetProxyEnv() { - for _, env := range []*envOnce{allProxyEnv, noProxyEnv} { - for _, v := range env.names { - os.Setenv(v, "") - } - } - ResetCachedEnvironment() -} - -func ResetCachedEnvironment() { - allProxyEnv.reset() - noProxyEnv.reset() -} diff --git a/vendor/golang.org/x/net/proxy/socks5.go b/vendor/golang.org/x/net/proxy/socks5.go deleted file mode 100644 index 3fed38ef..00000000 --- a/vendor/golang.org/x/net/proxy/socks5.go +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package proxy - -import ( - "errors" - "io" - "net" - "strconv" -) - -// SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given address -// with an optional username and password. See RFC 1928 and RFC 1929. -func SOCKS5(network, addr string, auth *Auth, forward Dialer) (Dialer, error) { - s := &socks5{ - network: network, - addr: addr, - forward: forward, - } - if auth != nil { - s.user = auth.User - s.password = auth.Password - } - - return s, nil -} - -type socks5 struct { - user, password string - network, addr string - forward Dialer -} - -const socks5Version = 5 - -const ( - socks5AuthNone = 0 - socks5AuthPassword = 2 -) - -const socks5Connect = 1 - -const ( - socks5IP4 = 1 - socks5Domain = 3 - socks5IP6 = 4 -) - -var socks5Errors = []string{ - "", - "general failure", - "connection forbidden", - "network unreachable", - "host unreachable", - "connection refused", - "TTL expired", - "command not supported", - "address type not supported", -} - -// Dial connects to the address addr on the given network via the SOCKS5 proxy. -func (s *socks5) Dial(network, addr string) (net.Conn, error) { - switch network { - case "tcp", "tcp6", "tcp4": - default: - return nil, errors.New("proxy: no support for SOCKS5 proxy connections of type " + network) - } - - conn, err := s.forward.Dial(s.network, s.addr) - if err != nil { - return nil, err - } - if err := s.connect(conn, addr); err != nil { - conn.Close() - return nil, err - } - return conn, nil -} - -// connect takes an existing connection to a socks5 proxy server, -// and commands the server to extend that connection to target, -// which must be a canonical address with a host and port. -func (s *socks5) connect(conn net.Conn, target string) error { - host, portStr, err := net.SplitHostPort(target) - if err != nil { - return err - } - - port, err := strconv.Atoi(portStr) - if err != nil { - return errors.New("proxy: failed to parse port number: " + portStr) - } - if port < 1 || port > 0xffff { - return errors.New("proxy: port number out of range: " + portStr) - } - - // the size here is just an estimate - buf := make([]byte, 0, 6+len(host)) - - buf = append(buf, socks5Version) - if len(s.user) > 0 && len(s.user) < 256 && len(s.password) < 256 { - buf = append(buf, 2 /* num auth methods */, socks5AuthNone, socks5AuthPassword) - } else { - buf = append(buf, 1 /* num auth methods */, socks5AuthNone) - } - - if _, err := conn.Write(buf); err != nil { - return errors.New("proxy: failed to write greeting to SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - - if _, err := io.ReadFull(conn, buf[:2]); err != nil { - return errors.New("proxy: failed to read greeting from SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - if buf[0] != 5 { - return errors.New("proxy: SOCKS5 proxy at " + s.addr + " has unexpected version " + strconv.Itoa(int(buf[0]))) - } - if buf[1] == 0xff { - return errors.New("proxy: SOCKS5 proxy at " + s.addr + " requires authentication") - } - - // See RFC 1929 - if buf[1] == socks5AuthPassword { - buf = buf[:0] - buf = append(buf, 1 /* password protocol version */) - buf = append(buf, uint8(len(s.user))) - buf = append(buf, s.user...) - buf = append(buf, uint8(len(s.password))) - buf = append(buf, s.password...) - - if _, err := conn.Write(buf); err != nil { - return errors.New("proxy: failed to write authentication request to SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - - if _, err := io.ReadFull(conn, buf[:2]); err != nil { - return errors.New("proxy: failed to read authentication reply from SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - - if buf[1] != 0 { - return errors.New("proxy: SOCKS5 proxy at " + s.addr + " rejected username/password") - } - } - - buf = buf[:0] - buf = append(buf, socks5Version, socks5Connect, 0 /* reserved */) - - if ip := net.ParseIP(host); ip != nil { - if ip4 := ip.To4(); ip4 != nil { - buf = append(buf, socks5IP4) - ip = ip4 - } else { - buf = append(buf, socks5IP6) - } - buf = append(buf, ip...) - } else { - if len(host) > 255 { - return errors.New("proxy: destination host name too long: " + host) - } - buf = append(buf, socks5Domain) - buf = append(buf, byte(len(host))) - buf = append(buf, host...) - } - buf = append(buf, byte(port>>8), byte(port)) - - if _, err := conn.Write(buf); err != nil { - return errors.New("proxy: failed to write connect request to SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - - if _, err := io.ReadFull(conn, buf[:4]); err != nil { - return errors.New("proxy: failed to read connect reply from SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - - failure := "unknown error" - if int(buf[1]) < len(socks5Errors) { - failure = socks5Errors[buf[1]] - } - - if len(failure) > 0 { - return errors.New("proxy: SOCKS5 proxy at " + s.addr + " failed to connect: " + failure) - } - - bytesToDiscard := 0 - switch buf[3] { - case socks5IP4: - bytesToDiscard = net.IPv4len - case socks5IP6: - bytesToDiscard = net.IPv6len - case socks5Domain: - _, err := io.ReadFull(conn, buf[:1]) - if err != nil { - return errors.New("proxy: failed to read domain length from SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - bytesToDiscard = int(buf[0]) - default: - return errors.New("proxy: got unknown address type " + strconv.Itoa(int(buf[3])) + " from SOCKS5 proxy at " + s.addr) - } - - if cap(buf) < bytesToDiscard { - buf = make([]byte, bytesToDiscard) - } else { - buf = buf[:bytesToDiscard] - } - if _, err := io.ReadFull(conn, buf); err != nil { - return errors.New("proxy: failed to read address from SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - - // Also need to discard the port number - if _, err := io.ReadFull(conn, buf[:2]); err != nil { - return errors.New("proxy: failed to read port from SOCKS5 proxy at " + s.addr + ": " + err.Error()) - } - - return nil -} diff --git a/vendor/golang.org/x/net/publicsuffix/gen.go b/vendor/golang.org/x/net/publicsuffix/gen.go deleted file mode 100644 index f85a3c32..00000000 --- a/vendor/golang.org/x/net/publicsuffix/gen.go +++ /dev/null @@ -1,713 +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. - -// +build ignore - -package main - -// This program generates table.go and table_test.go based on the authoritative -// public suffix list at https://publicsuffix.org/list/effective_tld_names.dat -// -// The version is derived from -// https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat -// and a human-readable form is at -// https://github.com/publicsuffix/list/commits/master/public_suffix_list.dat -// -// To fetch a particular git revision, such as 5c70ccd250, pass -// -url "https://raw.githubusercontent.com/publicsuffix/list/5c70ccd250/public_suffix_list.dat" -// and -version "an explicit version string". - -import ( - "bufio" - "bytes" - "flag" - "fmt" - "go/format" - "io" - "io/ioutil" - "net/http" - "os" - "regexp" - "sort" - "strings" - - "golang.org/x/net/idna" -) - -const ( - // These sum of these four values must be no greater than 32. - nodesBitsChildren = 10 - nodesBitsICANN = 1 - nodesBitsTextOffset = 15 - nodesBitsTextLength = 6 - - // These sum of these four values must be no greater than 32. - childrenBitsWildcard = 1 - childrenBitsNodeType = 2 - childrenBitsHi = 14 - childrenBitsLo = 14 -) - -var ( - maxChildren int - maxTextOffset int - maxTextLength int - maxHi uint32 - maxLo uint32 -) - -func max(a, b int) int { - if a < b { - return b - } - return a -} - -func u32max(a, b uint32) uint32 { - if a < b { - return b - } - return a -} - -const ( - nodeTypeNormal = 0 - nodeTypeException = 1 - nodeTypeParentOnly = 2 - numNodeType = 3 -) - -func nodeTypeStr(n int) string { - switch n { - case nodeTypeNormal: - return "+" - case nodeTypeException: - return "!" - case nodeTypeParentOnly: - return "o" - } - panic("unreachable") -} - -const ( - defaultURL = "https://publicsuffix.org/list/effective_tld_names.dat" - gitCommitURL = "https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat" -) - -var ( - labelEncoding = map[string]uint32{} - labelsList = []string{} - labelsMap = map[string]bool{} - rules = []string{} - - // validSuffixRE is used to check that the entries in the public suffix - // list are in canonical form (after Punycode encoding). Specifically, - // capital letters are not allowed. - validSuffixRE = regexp.MustCompile(`^[a-z0-9_\!\*\-\.]+$`) - - shaRE = regexp.MustCompile(`"sha":"([^"]+)"`) - dateRE = regexp.MustCompile(`"committer":{[^{]+"date":"([^"]+)"`) - - comments = flag.Bool("comments", false, "generate table.go comments, for debugging") - subset = flag.Bool("subset", false, "generate only a subset of the full table, for debugging") - url = flag.String("url", defaultURL, "URL of the publicsuffix.org list. If empty, stdin is read instead") - v = flag.Bool("v", false, "verbose output (to stderr)") - version = flag.String("version", "", "the effective_tld_names.dat version") -) - -func main() { - if err := main1(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func main1() error { - flag.Parse() - if nodesBitsTextLength+nodesBitsTextOffset+nodesBitsICANN+nodesBitsChildren > 32 { - return fmt.Errorf("not enough bits to encode the nodes table") - } - if childrenBitsLo+childrenBitsHi+childrenBitsNodeType+childrenBitsWildcard > 32 { - return fmt.Errorf("not enough bits to encode the children table") - } - if *version == "" { - if *url != defaultURL { - return fmt.Errorf("-version was not specified, and the -url is not the default one") - } - sha, date, err := gitCommit() - if err != nil { - return err - } - *version = fmt.Sprintf("publicsuffix.org's public_suffix_list.dat, git revision %s (%s)", sha, date) - } - var r io.Reader = os.Stdin - if *url != "" { - res, err := http.Get(*url) - if err != nil { - return err - } - if res.StatusCode != http.StatusOK { - return fmt.Errorf("bad GET status for %s: %d", *url, res.Status) - } - r = res.Body - defer res.Body.Close() - } - - var root node - icann := false - br := bufio.NewReader(r) - for { - s, err := br.ReadString('\n') - if err != nil { - if err == io.EOF { - break - } - return err - } - s = strings.TrimSpace(s) - if strings.Contains(s, "BEGIN ICANN DOMAINS") { - icann = true - continue - } - if strings.Contains(s, "END ICANN DOMAINS") { - icann = false - continue - } - if s == "" || strings.HasPrefix(s, "//") { - continue - } - s, err = idna.ToASCII(s) - if err != nil { - return err - } - if !validSuffixRE.MatchString(s) { - return fmt.Errorf("bad publicsuffix.org list data: %q", s) - } - - if *subset { - switch { - case s == "ac.jp" || strings.HasSuffix(s, ".ac.jp"): - case s == "ak.us" || strings.HasSuffix(s, ".ak.us"): - case s == "ao" || strings.HasSuffix(s, ".ao"): - case s == "ar" || strings.HasSuffix(s, ".ar"): - case s == "arpa" || strings.HasSuffix(s, ".arpa"): - case s == "cy" || strings.HasSuffix(s, ".cy"): - case s == "dyndns.org" || strings.HasSuffix(s, ".dyndns.org"): - case s == "jp": - case s == "kobe.jp" || strings.HasSuffix(s, ".kobe.jp"): - case s == "kyoto.jp" || strings.HasSuffix(s, ".kyoto.jp"): - case s == "om" || strings.HasSuffix(s, ".om"): - case s == "uk" || strings.HasSuffix(s, ".uk"): - case s == "uk.com" || strings.HasSuffix(s, ".uk.com"): - case s == "tw" || strings.HasSuffix(s, ".tw"): - case s == "zw" || strings.HasSuffix(s, ".zw"): - case s == "xn--p1ai" || strings.HasSuffix(s, ".xn--p1ai"): - // xn--p1ai is Russian-Cyrillic "рф". - default: - continue - } - } - - rules = append(rules, s) - - nt, wildcard := nodeTypeNormal, false - switch { - case strings.HasPrefix(s, "*."): - s, nt = s[2:], nodeTypeParentOnly - wildcard = true - case strings.HasPrefix(s, "!"): - s, nt = s[1:], nodeTypeException - } - labels := strings.Split(s, ".") - for n, i := &root, len(labels)-1; i >= 0; i-- { - label := labels[i] - n = n.child(label) - if i == 0 { - if nt != nodeTypeParentOnly && n.nodeType == nodeTypeParentOnly { - n.nodeType = nt - } - n.icann = n.icann && icann - n.wildcard = n.wildcard || wildcard - } - labelsMap[label] = true - } - } - labelsList = make([]string, 0, len(labelsMap)) - for label := range labelsMap { - labelsList = append(labelsList, label) - } - sort.Strings(labelsList) - - if err := generate(printReal, &root, "table.go"); err != nil { - return err - } - if err := generate(printTest, &root, "table_test.go"); err != nil { - return err - } - return nil -} - -func generate(p func(io.Writer, *node) error, root *node, filename string) error { - buf := new(bytes.Buffer) - if err := p(buf, root); err != nil { - return err - } - b, err := format.Source(buf.Bytes()) - if err != nil { - return err - } - return ioutil.WriteFile(filename, b, 0644) -} - -func gitCommit() (sha, date string, retErr error) { - res, err := http.Get(gitCommitURL) - if err != nil { - return "", "", err - } - if res.StatusCode != http.StatusOK { - return "", "", fmt.Errorf("bad GET status for %s: %d", gitCommitURL, res.Status) - } - defer res.Body.Close() - b, err := ioutil.ReadAll(res.Body) - if err != nil { - return "", "", err - } - if m := shaRE.FindSubmatch(b); m != nil { - sha = string(m[1]) - } - if m := dateRE.FindSubmatch(b); m != nil { - date = string(m[1]) - } - if sha == "" || date == "" { - retErr = fmt.Errorf("could not find commit SHA and date in %s", gitCommitURL) - } - return sha, date, retErr -} - -func printTest(w io.Writer, n *node) error { - fmt.Fprintf(w, "// generated by go run gen.go; DO NOT EDIT\n\n") - fmt.Fprintf(w, "package publicsuffix\n\nvar rules = [...]string{\n") - for _, rule := range rules { - fmt.Fprintf(w, "%q,\n", rule) - } - fmt.Fprintf(w, "}\n\nvar nodeLabels = [...]string{\n") - if err := n.walk(w, printNodeLabel); err != nil { - return err - } - fmt.Fprintf(w, "}\n") - return nil -} - -func printReal(w io.Writer, n *node) error { - const header = `// generated by go run gen.go; DO NOT EDIT - -package publicsuffix - -const version = %q - -const ( - nodesBitsChildren = %d - nodesBitsICANN = %d - nodesBitsTextOffset = %d - nodesBitsTextLength = %d - - childrenBitsWildcard = %d - childrenBitsNodeType = %d - childrenBitsHi = %d - childrenBitsLo = %d -) - -const ( - nodeTypeNormal = %d - nodeTypeException = %d - nodeTypeParentOnly = %d -) - -// numTLD is the number of top level domains. -const numTLD = %d - -` - fmt.Fprintf(w, header, *version, - nodesBitsChildren, nodesBitsICANN, nodesBitsTextOffset, nodesBitsTextLength, - childrenBitsWildcard, childrenBitsNodeType, childrenBitsHi, childrenBitsLo, - nodeTypeNormal, nodeTypeException, nodeTypeParentOnly, len(n.children)) - - text := combineText(labelsList) - if text == "" { - return fmt.Errorf("internal error: makeText returned no text") - } - for _, label := range labelsList { - offset, length := strings.Index(text, label), len(label) - if offset < 0 { - return fmt.Errorf("internal error: could not find %q in text %q", label, text) - } - maxTextOffset, maxTextLength = max(maxTextOffset, offset), max(maxTextLength, length) - if offset >= 1<<nodesBitsTextOffset { - return fmt.Errorf("text offset %d is too large, or nodeBitsTextOffset is too small", offset) - } - if length >= 1<<nodesBitsTextLength { - return fmt.Errorf("text length %d is too large, or nodeBitsTextLength is too small", length) - } - labelEncoding[label] = uint32(offset)<<nodesBitsTextLength | uint32(length) - } - fmt.Fprintf(w, "// Text is the combined text of all labels.\nconst text = ") - for len(text) > 0 { - n, plus := len(text), "" - if n > 64 { - n, plus = 64, " +" - } - fmt.Fprintf(w, "%q%s\n", text[:n], plus) - text = text[n:] - } - - if err := n.walk(w, assignIndexes); err != nil { - return err - } - - fmt.Fprintf(w, ` - -// nodes is the list of nodes. Each node is represented as a uint32, which -// encodes the node's children, wildcard bit and node type (as an index into -// the children array), ICANN bit and text. -// -// If the table was generated with the -comments flag, there is a //-comment -// after each node's data. In it is the nodes-array indexes of the children, -// formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The -// nodeType is printed as + for normal, ! for exception, and o for parent-only -// nodes that have children but don't match a domain label in their own right. -// An I denotes an ICANN domain. -// -// The layout within the uint32, from MSB to LSB, is: -// [%2d bits] unused -// [%2d bits] children index -// [%2d bits] ICANN bit -// [%2d bits] text index -// [%2d bits] text length -var nodes = [...]uint32{ -`, - 32-nodesBitsChildren-nodesBitsICANN-nodesBitsTextOffset-nodesBitsTextLength, - nodesBitsChildren, nodesBitsICANN, nodesBitsTextOffset, nodesBitsTextLength) - if err := n.walk(w, printNode); err != nil { - return err - } - fmt.Fprintf(w, `} - -// children is the list of nodes' children, the parent's wildcard bit and the -// parent's node type. If a node has no children then their children index -// will be in the range [0, 6), depending on the wildcard bit and node type. -// -// The layout within the uint32, from MSB to LSB, is: -// [%2d bits] unused -// [%2d bits] wildcard bit -// [%2d bits] node type -// [%2d bits] high nodes index (exclusive) of children -// [%2d bits] low nodes index (inclusive) of children -var children=[...]uint32{ -`, - 32-childrenBitsWildcard-childrenBitsNodeType-childrenBitsHi-childrenBitsLo, - childrenBitsWildcard, childrenBitsNodeType, childrenBitsHi, childrenBitsLo) - for i, c := range childrenEncoding { - s := "---------------" - lo := c & (1<<childrenBitsLo - 1) - hi := (c >> childrenBitsLo) & (1<<childrenBitsHi - 1) - if lo != hi { - s = fmt.Sprintf("n0x%04x-n0x%04x", lo, hi) - } - nodeType := int(c>>(childrenBitsLo+childrenBitsHi)) & (1<<childrenBitsNodeType - 1) - wildcard := c>>(childrenBitsLo+childrenBitsHi+childrenBitsNodeType) != 0 - if *comments { - fmt.Fprintf(w, "0x%08x, // c0x%04x (%s)%s %s\n", - c, i, s, wildcardStr(wildcard), nodeTypeStr(nodeType)) - } else { - fmt.Fprintf(w, "0x%x,\n", c) - } - } - fmt.Fprintf(w, "}\n\n") - fmt.Fprintf(w, "// max children %d (capacity %d)\n", maxChildren, 1<<nodesBitsChildren-1) - fmt.Fprintf(w, "// max text offset %d (capacity %d)\n", maxTextOffset, 1<<nodesBitsTextOffset-1) - fmt.Fprintf(w, "// max text length %d (capacity %d)\n", maxTextLength, 1<<nodesBitsTextLength-1) - fmt.Fprintf(w, "// max hi %d (capacity %d)\n", maxHi, 1<<childrenBitsHi-1) - fmt.Fprintf(w, "// max lo %d (capacity %d)\n", maxLo, 1<<childrenBitsLo-1) - return nil -} - -type node struct { - label string - nodeType int - icann bool - wildcard bool - // nodesIndex and childrenIndex are the index of this node in the nodes - // and the index of its children offset/length in the children arrays. - nodesIndex, childrenIndex int - // firstChild is the index of this node's first child, or zero if this - // node has no children. - firstChild int - // children are the node's children, in strictly increasing node label order. - children []*node -} - -func (n *node) walk(w io.Writer, f func(w1 io.Writer, n1 *node) error) error { - if err := f(w, n); err != nil { - return err - } - for _, c := range n.children { - if err := c.walk(w, f); err != nil { - return err - } - } - return nil -} - -// child returns the child of n with the given label. The child is created if -// it did not exist beforehand. -func (n *node) child(label string) *node { - for _, c := range n.children { - if c.label == label { - return c - } - } - c := &node{ - label: label, - nodeType: nodeTypeParentOnly, - icann: true, - } - n.children = append(n.children, c) - sort.Sort(byLabel(n.children)) - return c -} - -type byLabel []*node - -func (b byLabel) Len() int { return len(b) } -func (b byLabel) Swap(i, j int) { b[i], b[j] = b[j], b[i] } -func (b byLabel) Less(i, j int) bool { return b[i].label < b[j].label } - -var nextNodesIndex int - -// childrenEncoding are the encoded entries in the generated children array. -// All these pre-defined entries have no children. -var childrenEncoding = []uint32{ - 0 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeNormal. - 1 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeException. - 2 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeParentOnly. - 4 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeNormal. - 5 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeException. - 6 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeParentOnly. -} - -var firstCallToAssignIndexes = true - -func assignIndexes(w io.Writer, n *node) error { - if len(n.children) != 0 { - // Assign nodesIndex. - n.firstChild = nextNodesIndex - for _, c := range n.children { - c.nodesIndex = nextNodesIndex - nextNodesIndex++ - } - - // The root node's children is implicit. - if firstCallToAssignIndexes { - firstCallToAssignIndexes = false - return nil - } - - // Assign childrenIndex. - maxChildren = max(maxChildren, len(childrenEncoding)) - if len(childrenEncoding) >= 1<<nodesBitsChildren { - return fmt.Errorf("children table size %d is too large, or nodeBitsChildren is too small", len(childrenEncoding)) - } - n.childrenIndex = len(childrenEncoding) - lo := uint32(n.firstChild) - hi := lo + uint32(len(n.children)) - maxLo, maxHi = u32max(maxLo, lo), u32max(maxHi, hi) - if lo >= 1<<childrenBitsLo { - return fmt.Errorf("children lo %d is too large, or childrenBitsLo is too small", lo) - } - if hi >= 1<<childrenBitsHi { - return fmt.Errorf("children hi %d is too large, or childrenBitsHi is too small", hi) - } - enc := hi<<childrenBitsLo | lo - enc |= uint32(n.nodeType) << (childrenBitsLo + childrenBitsHi) - if n.wildcard { - enc |= 1 << (childrenBitsLo + childrenBitsHi + childrenBitsNodeType) - } - childrenEncoding = append(childrenEncoding, enc) - } else { - n.childrenIndex = n.nodeType - if n.wildcard { - n.childrenIndex += numNodeType - } - } - return nil -} - -func printNode(w io.Writer, n *node) error { - for _, c := range n.children { - s := "---------------" - if len(c.children) != 0 { - s = fmt.Sprintf("n0x%04x-n0x%04x", c.firstChild, c.firstChild+len(c.children)) - } - encoding := labelEncoding[c.label] - if c.icann { - encoding |= 1 << (nodesBitsTextLength + nodesBitsTextOffset) - } - encoding |= uint32(c.childrenIndex) << (nodesBitsTextLength + nodesBitsTextOffset + nodesBitsICANN) - if *comments { - fmt.Fprintf(w, "0x%08x, // n0x%04x c0x%04x (%s)%s %s %s %s\n", - encoding, c.nodesIndex, c.childrenIndex, s, wildcardStr(c.wildcard), - nodeTypeStr(c.nodeType), icannStr(c.icann), c.label, - ) - } else { - fmt.Fprintf(w, "0x%x,\n", encoding) - } - } - return nil -} - -func printNodeLabel(w io.Writer, n *node) error { - for _, c := range n.children { - fmt.Fprintf(w, "%q,\n", c.label) - } - return nil -} - -func icannStr(icann bool) string { - if icann { - return "I" - } - return " " -} - -func wildcardStr(wildcard bool) string { - if wildcard { - return "*" - } - return " " -} - -// combineText combines all the strings in labelsList to form one giant string. -// Overlapping strings will be merged: "arpa" and "parliament" could yield -// "arparliament". -func combineText(labelsList []string) string { - beforeLength := 0 - for _, s := range labelsList { - beforeLength += len(s) - } - - text := crush(removeSubstrings(labelsList)) - if *v { - fmt.Fprintf(os.Stderr, "crushed %d bytes to become %d bytes\n", beforeLength, len(text)) - } - return text -} - -type byLength []string - -func (s byLength) Len() int { return len(s) } -func (s byLength) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s byLength) Less(i, j int) bool { return len(s[i]) < len(s[j]) } - -// removeSubstrings returns a copy of its input with any strings removed -// that are substrings of other provided strings. -func removeSubstrings(input []string) []string { - // Make a copy of input. - ss := append(make([]string, 0, len(input)), input...) - sort.Sort(byLength(ss)) - - for i, shortString := range ss { - // For each string, only consider strings higher than it in sort order, i.e. - // of equal length or greater. - for _, longString := range ss[i+1:] { - if strings.Contains(longString, shortString) { - ss[i] = "" - break - } - } - } - - // Remove the empty strings. - sort.Strings(ss) - for len(ss) > 0 && ss[0] == "" { - ss = ss[1:] - } - return ss -} - -// crush combines a list of strings, taking advantage of overlaps. It returns a -// single string that contains each input string as a substring. -func crush(ss []string) string { - maxLabelLen := 0 - for _, s := range ss { - if maxLabelLen < len(s) { - maxLabelLen = len(s) - } - } - - for prefixLen := maxLabelLen; prefixLen > 0; prefixLen-- { - prefixes := makePrefixMap(ss, prefixLen) - for i, s := range ss { - if len(s) <= prefixLen { - continue - } - mergeLabel(ss, i, prefixLen, prefixes) - } - } - - return strings.Join(ss, "") -} - -// mergeLabel merges the label at ss[i] with the first available matching label -// in prefixMap, where the last "prefixLen" characters in ss[i] match the first -// "prefixLen" characters in the matching label. -// It will merge ss[i] repeatedly until no more matches are available. -// All matching labels merged into ss[i] are replaced by "". -func mergeLabel(ss []string, i, prefixLen int, prefixes prefixMap) { - s := ss[i] - suffix := s[len(s)-prefixLen:] - for _, j := range prefixes[suffix] { - // Empty strings mean "already used." Also avoid merging with self. - if ss[j] == "" || i == j { - continue - } - if *v { - fmt.Fprintf(os.Stderr, "%d-length overlap at (%4d,%4d): %q and %q share %q\n", - prefixLen, i, j, ss[i], ss[j], suffix) - } - ss[i] += ss[j][prefixLen:] - ss[j] = "" - // ss[i] has a new suffix, so merge again if possible. - // Note: we only have to merge again at the same prefix length. Shorter - // prefix lengths will be handled in the next iteration of crush's for loop. - // Can there be matches for longer prefix lengths, introduced by the merge? - // I believe that any such matches would by necessity have been eliminated - // during substring removal or merged at a higher prefix length. For - // instance, in crush("abc", "cde", "bcdef"), combining "abc" and "cde" - // would yield "abcde", which could be merged with "bcdef." However, in - // practice "cde" would already have been elimintated by removeSubstrings. - mergeLabel(ss, i, prefixLen, prefixes) - return - } -} - -// prefixMap maps from a prefix to a list of strings containing that prefix. The -// list of strings is represented as indexes into a slice of strings stored -// elsewhere. -type prefixMap map[string][]int - -// makePrefixMap constructs a prefixMap from a slice of strings. -func makePrefixMap(ss []string, prefixLen int) prefixMap { - prefixes := make(prefixMap) - for i, s := range ss { - // We use < rather than <= because if a label matches on a prefix equal to - // its full length, that's actually a substring match handled by - // removeSubstrings. - if prefixLen < len(s) { - prefix := s[:prefixLen] - prefixes[prefix] = append(prefixes[prefix], i) - } - } - - return prefixes -} diff --git a/vendor/golang.org/x/net/publicsuffix/list.go b/vendor/golang.org/x/net/publicsuffix/list.go deleted file mode 100644 index 8bbf3bcd..00000000 --- a/vendor/golang.org/x/net/publicsuffix/list.go +++ /dev/null @@ -1,135 +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. - -//go:generate go run gen.go - -// Package publicsuffix provides a public suffix list based on data from -// http://publicsuffix.org/. A public suffix is one under which Internet users -// can directly register names. -package publicsuffix // import "golang.org/x/net/publicsuffix" - -// TODO: specify case sensitivity and leading/trailing dot behavior for -// func PublicSuffix and func EffectiveTLDPlusOne. - -import ( - "fmt" - "net/http/cookiejar" - "strings" -) - -// List implements the cookiejar.PublicSuffixList interface by calling the -// PublicSuffix function. -var List cookiejar.PublicSuffixList = list{} - -type list struct{} - -func (list) PublicSuffix(domain string) string { - ps, _ := PublicSuffix(domain) - return ps -} - -func (list) String() string { - return version -} - -// PublicSuffix returns the public suffix of the domain using a copy of the -// publicsuffix.org database compiled into the library. -// -// icann is whether the public suffix is managed by the Internet Corporation -// for Assigned Names and Numbers. If not, the public suffix is privately -// managed. For example, foo.org and foo.co.uk are ICANN domains, -// foo.dyndns.org and foo.blogspot.co.uk are private domains. -// -// Use cases for distinguishing ICANN domains like foo.com from private -// domains like foo.appspot.com can be found at -// https://wiki.mozilla.org/Public_Suffix_List/Use_Cases -func PublicSuffix(domain string) (publicSuffix string, icann bool) { - lo, hi := uint32(0), uint32(numTLD) - s, suffix, wildcard := domain, len(domain), false -loop: - for { - dot := strings.LastIndex(s, ".") - if wildcard { - suffix = 1 + dot - } - if lo == hi { - break - } - f := find(s[1+dot:], lo, hi) - if f == notFound { - break - } - - u := nodes[f] >> (nodesBitsTextOffset + nodesBitsTextLength) - icann = u&(1<<nodesBitsICANN-1) != 0 - u >>= nodesBitsICANN - u = children[u&(1<<nodesBitsChildren-1)] - lo = u & (1<<childrenBitsLo - 1) - u >>= childrenBitsLo - hi = u & (1<<childrenBitsHi - 1) - u >>= childrenBitsHi - switch u & (1<<childrenBitsNodeType - 1) { - case nodeTypeNormal: - suffix = 1 + dot - case nodeTypeException: - suffix = 1 + len(s) - break loop - } - u >>= childrenBitsNodeType - wildcard = u&(1<<childrenBitsWildcard-1) != 0 - - if dot == -1 { - break - } - s = s[:dot] - } - if suffix == len(domain) { - // If no rules match, the prevailing rule is "*". - return domain[1+strings.LastIndex(domain, "."):], icann - } - return domain[suffix:], icann -} - -const notFound uint32 = 1<<32 - 1 - -// find returns the index of the node in the range [lo, hi) whose label equals -// label, or notFound if there is no such node. The range is assumed to be in -// strictly increasing node label order. -func find(label string, lo, hi uint32) uint32 { - for lo < hi { - mid := lo + (hi-lo)/2 - s := nodeLabel(mid) - if s < label { - lo = mid + 1 - } else if s == label { - return mid - } else { - hi = mid - } - } - return notFound -} - -// nodeLabel returns the label for the i'th node. -func nodeLabel(i uint32) string { - x := nodes[i] - length := x & (1<<nodesBitsTextLength - 1) - x >>= nodesBitsTextLength - offset := x & (1<<nodesBitsTextOffset - 1) - return text[offset : offset+length] -} - -// EffectiveTLDPlusOne returns the effective top level domain plus one more -// label. For example, the eTLD+1 for "foo.bar.golang.org" is "golang.org". -func EffectiveTLDPlusOne(domain string) (string, error) { - suffix, _ := PublicSuffix(domain) - if len(domain) <= len(suffix) { - return "", fmt.Errorf("publicsuffix: cannot derive eTLD+1 for domain %q", domain) - } - i := len(domain) - len(suffix) - 1 - if domain[i] != '.' { - return "", fmt.Errorf("publicsuffix: invalid public suffix %q for domain %q", suffix, domain) - } - return domain[1+strings.LastIndex(domain[:i], "."):], nil -} diff --git a/vendor/golang.org/x/net/publicsuffix/list_test.go b/vendor/golang.org/x/net/publicsuffix/list_test.go deleted file mode 100644 index 42d79cc4..00000000 --- a/vendor/golang.org/x/net/publicsuffix/list_test.go +++ /dev/null @@ -1,416 +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 publicsuffix - -import ( - "sort" - "strings" - "testing" -) - -func TestNodeLabel(t *testing.T) { - for i, want := range nodeLabels { - got := nodeLabel(uint32(i)) - if got != want { - t.Errorf("%d: got %q, want %q", i, got, want) - } - } -} - -func TestFind(t *testing.T) { - testCases := []string{ - "", - "a", - "a0", - "aaaa", - "ao", - "ap", - "ar", - "aro", - "arp", - "arpa", - "arpaa", - "arpb", - "az", - "b", - "b0", - "ba", - "z", - "zu", - "zv", - "zw", - "zx", - "zy", - "zz", - "zzzz", - } - for _, tc := range testCases { - got := find(tc, 0, numTLD) - want := notFound - for i := uint32(0); i < numTLD; i++ { - if tc == nodeLabel(i) { - want = i - break - } - } - if got != want { - t.Errorf("%q: got %d, want %d", tc, got, want) - } - } -} - -func TestICANN(t *testing.T) { - testCases := map[string]bool{ - "foo.org": true, - "foo.co.uk": true, - "foo.dyndns.org": false, - "foo.go.dyndns.org": false, - "foo.blogspot.co.uk": false, - "foo.intranet": false, - } - for domain, want := range testCases { - _, got := PublicSuffix(domain) - if got != want { - t.Errorf("%q: got %v, want %v", domain, got, want) - } - } -} - -var publicSuffixTestCases = []struct { - domain, want string -}{ - // Empty string. - {"", ""}, - - // The .ao rules are: - // ao - // ed.ao - // gv.ao - // og.ao - // co.ao - // pb.ao - // it.ao - {"ao", "ao"}, - {"www.ao", "ao"}, - {"pb.ao", "pb.ao"}, - {"www.pb.ao", "pb.ao"}, - {"www.xxx.yyy.zzz.pb.ao", "pb.ao"}, - - // The .ar rules are: - // ar - // com.ar - // edu.ar - // gob.ar - // gov.ar - // int.ar - // mil.ar - // net.ar - // org.ar - // tur.ar - // blogspot.com.ar - {"ar", "ar"}, - {"www.ar", "ar"}, - {"nic.ar", "ar"}, - {"www.nic.ar", "ar"}, - {"com.ar", "com.ar"}, - {"www.com.ar", "com.ar"}, - {"blogspot.com.ar", "blogspot.com.ar"}, - {"www.blogspot.com.ar", "blogspot.com.ar"}, - {"www.xxx.yyy.zzz.blogspot.com.ar", "blogspot.com.ar"}, - {"logspot.com.ar", "com.ar"}, - {"zlogspot.com.ar", "com.ar"}, - {"zblogspot.com.ar", "com.ar"}, - - // The .arpa rules are: - // arpa - // e164.arpa - // in-addr.arpa - // ip6.arpa - // iris.arpa - // uri.arpa - // urn.arpa - {"arpa", "arpa"}, - {"www.arpa", "arpa"}, - {"urn.arpa", "urn.arpa"}, - {"www.urn.arpa", "urn.arpa"}, - {"www.xxx.yyy.zzz.urn.arpa", "urn.arpa"}, - - // The relevant {kobe,kyoto}.jp rules are: - // jp - // *.kobe.jp - // !city.kobe.jp - // kyoto.jp - // ide.kyoto.jp - {"jp", "jp"}, - {"kobe.jp", "jp"}, - {"c.kobe.jp", "c.kobe.jp"}, - {"b.c.kobe.jp", "c.kobe.jp"}, - {"a.b.c.kobe.jp", "c.kobe.jp"}, - {"city.kobe.jp", "kobe.jp"}, - {"www.city.kobe.jp", "kobe.jp"}, - {"kyoto.jp", "kyoto.jp"}, - {"test.kyoto.jp", "kyoto.jp"}, - {"ide.kyoto.jp", "ide.kyoto.jp"}, - {"b.ide.kyoto.jp", "ide.kyoto.jp"}, - {"a.b.ide.kyoto.jp", "ide.kyoto.jp"}, - - // The .tw rules are: - // tw - // edu.tw - // gov.tw - // mil.tw - // com.tw - // net.tw - // org.tw - // idv.tw - // game.tw - // ebiz.tw - // club.tw - // 網路.tw (xn--zf0ao64a.tw) - // 組織.tw (xn--uc0atv.tw) - // 商業.tw (xn--czrw28b.tw) - // blogspot.tw - {"tw", "tw"}, - {"aaa.tw", "tw"}, - {"www.aaa.tw", "tw"}, - {"xn--czrw28b.aaa.tw", "tw"}, - {"edu.tw", "edu.tw"}, - {"www.edu.tw", "edu.tw"}, - {"xn--czrw28b.edu.tw", "edu.tw"}, - {"xn--czrw28b.tw", "xn--czrw28b.tw"}, - {"www.xn--czrw28b.tw", "xn--czrw28b.tw"}, - {"xn--uc0atv.xn--czrw28b.tw", "xn--czrw28b.tw"}, - {"xn--kpry57d.tw", "tw"}, - - // The .uk rules are: - // uk - // ac.uk - // co.uk - // gov.uk - // ltd.uk - // me.uk - // net.uk - // nhs.uk - // org.uk - // plc.uk - // police.uk - // *.sch.uk - // blogspot.co.uk - {"uk", "uk"}, - {"aaa.uk", "uk"}, - {"www.aaa.uk", "uk"}, - {"mod.uk", "uk"}, - {"www.mod.uk", "uk"}, - {"sch.uk", "uk"}, - {"mod.sch.uk", "mod.sch.uk"}, - {"www.sch.uk", "www.sch.uk"}, - {"blogspot.co.uk", "blogspot.co.uk"}, - {"blogspot.nic.uk", "uk"}, - {"blogspot.sch.uk", "blogspot.sch.uk"}, - - // The .рф rules are - // рф (xn--p1ai) - {"xn--p1ai", "xn--p1ai"}, - {"aaa.xn--p1ai", "xn--p1ai"}, - {"www.xxx.yyy.xn--p1ai", "xn--p1ai"}, - - // The .bd rules are: - // *.bd - {"bd", "bd"}, - {"www.bd", "www.bd"}, - {"zzz.bd", "zzz.bd"}, - {"www.zzz.bd", "zzz.bd"}, - {"www.xxx.yyy.zzz.bd", "zzz.bd"}, - - // There are no .nosuchtld rules. - {"nosuchtld", "nosuchtld"}, - {"foo.nosuchtld", "nosuchtld"}, - {"bar.foo.nosuchtld", "nosuchtld"}, -} - -func BenchmarkPublicSuffix(b *testing.B) { - for i := 0; i < b.N; i++ { - for _, tc := range publicSuffixTestCases { - List.PublicSuffix(tc.domain) - } - } -} - -func TestPublicSuffix(t *testing.T) { - for _, tc := range publicSuffixTestCases { - got := List.PublicSuffix(tc.domain) - if got != tc.want { - t.Errorf("%q: got %q, want %q", tc.domain, got, tc.want) - } - } -} - -func TestSlowPublicSuffix(t *testing.T) { - for _, tc := range publicSuffixTestCases { - got := slowPublicSuffix(tc.domain) - if got != tc.want { - t.Errorf("%q: got %q, want %q", tc.domain, got, tc.want) - } - } -} - -// slowPublicSuffix implements the canonical (but O(number of rules)) public -// suffix algorithm described at http://publicsuffix.org/list/. -// -// 1. Match domain against all rules and take note of the matching ones. -// 2. If no rules match, the prevailing rule is "*". -// 3. If more than one rule matches, the prevailing rule is the one which is an exception rule. -// 4. If there is no matching exception rule, the prevailing rule is the one with the most labels. -// 5. If the prevailing rule is a exception rule, modify it by removing the leftmost label. -// 6. The public suffix is the set of labels from the domain which directly match the labels of the prevailing rule (joined by dots). -// 7. The registered or registrable domain is the public suffix plus one additional label. -// -// This function returns the public suffix, not the registrable domain, and so -// it stops after step 6. -func slowPublicSuffix(domain string) string { - match := func(rulePart, domainPart string) bool { - switch rulePart[0] { - case '*': - return true - case '!': - return rulePart[1:] == domainPart - } - return rulePart == domainPart - } - - domainParts := strings.Split(domain, ".") - var matchingRules [][]string - -loop: - for _, rule := range rules { - ruleParts := strings.Split(rule, ".") - if len(domainParts) < len(ruleParts) { - continue - } - for i := range ruleParts { - rulePart := ruleParts[len(ruleParts)-1-i] - domainPart := domainParts[len(domainParts)-1-i] - if !match(rulePart, domainPart) { - continue loop - } - } - matchingRules = append(matchingRules, ruleParts) - } - if len(matchingRules) == 0 { - matchingRules = append(matchingRules, []string{"*"}) - } else { - sort.Sort(byPriority(matchingRules)) - } - prevailing := matchingRules[0] - if prevailing[0][0] == '!' { - prevailing = prevailing[1:] - } - if prevailing[0][0] == '*' { - replaced := domainParts[len(domainParts)-len(prevailing)] - prevailing = append([]string{replaced}, prevailing[1:]...) - } - return strings.Join(prevailing, ".") -} - -type byPriority [][]string - -func (b byPriority) Len() int { return len(b) } -func (b byPriority) Swap(i, j int) { b[i], b[j] = b[j], b[i] } -func (b byPriority) Less(i, j int) bool { - if b[i][0][0] == '!' { - return true - } - if b[j][0][0] == '!' { - return false - } - return len(b[i]) > len(b[j]) -} - -// eTLDPlusOneTestCases come from -// https://github.com/publicsuffix/list/blob/master/tests/test_psl.txt -var eTLDPlusOneTestCases = []struct { - domain, want string -}{ - // Empty input. - {"", ""}, - // Unlisted TLD. - {"example", ""}, - {"example.example", "example.example"}, - {"b.example.example", "example.example"}, - {"a.b.example.example", "example.example"}, - // TLD with only 1 rule. - {"biz", ""}, - {"domain.biz", "domain.biz"}, - {"b.domain.biz", "domain.biz"}, - {"a.b.domain.biz", "domain.biz"}, - // TLD with some 2-level rules. - {"com", ""}, - {"example.com", "example.com"}, - {"b.example.com", "example.com"}, - {"a.b.example.com", "example.com"}, - {"uk.com", ""}, - {"example.uk.com", "example.uk.com"}, - {"b.example.uk.com", "example.uk.com"}, - {"a.b.example.uk.com", "example.uk.com"}, - {"test.ac", "test.ac"}, - // TLD with only 1 (wildcard) rule. - {"mm", ""}, - {"c.mm", ""}, - {"b.c.mm", "b.c.mm"}, - {"a.b.c.mm", "b.c.mm"}, - // More complex TLD. - {"jp", ""}, - {"test.jp", "test.jp"}, - {"www.test.jp", "test.jp"}, - {"ac.jp", ""}, - {"test.ac.jp", "test.ac.jp"}, - {"www.test.ac.jp", "test.ac.jp"}, - {"kyoto.jp", ""}, - {"test.kyoto.jp", "test.kyoto.jp"}, - {"ide.kyoto.jp", ""}, - {"b.ide.kyoto.jp", "b.ide.kyoto.jp"}, - {"a.b.ide.kyoto.jp", "b.ide.kyoto.jp"}, - {"c.kobe.jp", ""}, - {"b.c.kobe.jp", "b.c.kobe.jp"}, - {"a.b.c.kobe.jp", "b.c.kobe.jp"}, - {"city.kobe.jp", "city.kobe.jp"}, - {"www.city.kobe.jp", "city.kobe.jp"}, - // TLD with a wildcard rule and exceptions. - {"ck", ""}, - {"test.ck", ""}, - {"b.test.ck", "b.test.ck"}, - {"a.b.test.ck", "b.test.ck"}, - {"www.ck", "www.ck"}, - {"www.www.ck", "www.ck"}, - // US K12. - {"us", ""}, - {"test.us", "test.us"}, - {"www.test.us", "test.us"}, - {"ak.us", ""}, - {"test.ak.us", "test.ak.us"}, - {"www.test.ak.us", "test.ak.us"}, - {"k12.ak.us", ""}, - {"test.k12.ak.us", "test.k12.ak.us"}, - {"www.test.k12.ak.us", "test.k12.ak.us"}, - // Punycoded IDN labels - {"xn--85x722f.com.cn", "xn--85x722f.com.cn"}, - {"xn--85x722f.xn--55qx5d.cn", "xn--85x722f.xn--55qx5d.cn"}, - {"www.xn--85x722f.xn--55qx5d.cn", "xn--85x722f.xn--55qx5d.cn"}, - {"shishi.xn--55qx5d.cn", "shishi.xn--55qx5d.cn"}, - {"xn--55qx5d.cn", ""}, - {"xn--85x722f.xn--fiqs8s", "xn--85x722f.xn--fiqs8s"}, - {"www.xn--85x722f.xn--fiqs8s", "xn--85x722f.xn--fiqs8s"}, - {"shishi.xn--fiqs8s", "shishi.xn--fiqs8s"}, - {"xn--fiqs8s", ""}, -} - -func TestEffectiveTLDPlusOne(t *testing.T) { - for _, tc := range eTLDPlusOneTestCases { - got, _ := EffectiveTLDPlusOne(tc.domain) - if got != tc.want { - t.Errorf("%q: got %q, want %q", tc.domain, got, tc.want) - } - } -} diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go deleted file mode 100644 index a870b36c..00000000 --- a/vendor/golang.org/x/net/publicsuffix/table.go +++ /dev/null @@ -1,9534 +0,0 @@ -// generated by go run gen.go; DO NOT EDIT - -package publicsuffix - -const version = "publicsuffix.org's public_suffix_list.dat, git revision 0f3b07d9aab6d6c9fe74990af98316468d40f488 (2018-01-25T09:22:16Z)" - -const ( - nodesBitsChildren = 10 - nodesBitsICANN = 1 - nodesBitsTextOffset = 15 - nodesBitsTextLength = 6 - - childrenBitsWildcard = 1 - childrenBitsNodeType = 2 - childrenBitsHi = 14 - childrenBitsLo = 14 -) - -const ( - nodeTypeNormal = 0 - nodeTypeException = 1 - nodeTypeParentOnly = 2 -) - -// numTLD is the number of top level domains. -const numTLD = 1551 - -// Text is the combined text of all labels. -const text = "0emmafann-arboretumbriamallamaceiobihirosakikamijimatsuzaki234li" + - "ma-cityeatselinogradult3l3p0rtargets-itargivestbytomaritimekeepi" + - "ng120009guacuiababia-goracleaningroks-theatreeastcoastaldefencea" + - "tonsbergjemnes3-ap-northeast-1337bilbaogashimadachicagoboats3-we" + - "bsite-us-east-1billustrationikonanporovnopocznoppdalindesnes3-we" + - "bsite-us-west-1biobirdartcenterprisesakimobetsuitainairforcechir" + - "ealminamiechizeninohekinannestadiybirkenesoddtangenovaranzanpach" + - "igasakievennodesaarlandnpanasonicateringebuilderschmidtre-gaulda" + - "livornobirthplacebitballooningladefinimakanegasakinkobayashikaoi" + - "rminamifuranobjarkoybjerkreimbananarepublicasadelamonedatingjesd" + - "alimitediscountysvardolls3-eu-west-3utilitiesquare7bjugninomiyak" + - "onojorpelandrangedalombardiamonds3-website-us-west-2blancomedica" + - "ltanissettaipeiheijinuyamashinatsukigatakasagotpantheonsitebloom" + - "bergbauernuorochesterbloxcms5ybluedancebmoattachmentsakyotanabel" + - "lunord-aurdalvdalcesalangenirasakinvestmentsalondonetskarmoybmsa" + - "ltdalombardynamisches-dnsaludray-dnsupdaternopilawawebspacebmwed" + - "dinglassassinationalheritagebnpparibaselburgleezebnrwedeployboml" + - "oansalvadordalibabalsanagochihayaakasakawaharaholtalenvironmenta" + - "lconservationishiazainzais-a-candidatebondrayddnsfreebox-osascol" + - "i-picenordre-landraydnsalzburgliwicebonnishigobookinglobalashovh" + - "achinohedmarkarpaczeladzparaglidingloboavistaprintelligencebooml" + - "adbrokesamegawabootsamnangerboschaefflerdalwaysdatabaseballangen" + - "oamishirasatochigiessensiositelekommunikationishiharabostikaruiz" + - "awabostonakijinsekikogentinglogowegroweibolognagasukebotanicalga" + - "rdenishiizunazukis-a-catererbotanicgardenishikatakayamatsushigeb" + - "otanybouncemerckmsdnipropetrovskjervoyagebounty-fullensakerrypro" + - "pertiesampagespeedmobilizeroboutiquebecatholicaxiascolipicenodum" + - "inamiiselectjomemorialomzaporizhzheguris-a-celticsfanishikatsura" + - "git-repostfoldnavybozentsujiiebplacedekagaminord-odalondrinaples" + - "amsclubindalorenskogloppenzaolbia-tempio-olbiatempioolbialystokk" + - "embuchikumagayagawakuyabukihokumakogenglandrivelandrobaknoluokta" + - "chikawakkanaibetsubamericanfamilydscloudcontrolappspotagerbrandy" + - "winevalleybrasiliabrindisibenikebristoloseyouripirangapartmentsa" + - "msungmbhartiffanybritishcolumbialowiezachpomorskienishikawazukam" + - "itsuebroadcastlefrakkestadrudunsandvikcoromantovalle-d-aostathel" + - "lebroadwaybroke-itjxjavald-aostaplesanfranciscofreakunemurorange" + - "iseiyoichippubetsubetsugarugbyengerdalaskanittedallasalleasingle" + - "surancertmgretagajobojis-a-chefarmsteadupontariodejaneirodoybrok" + - "erbronnoysundurbanamexnetlifyis-a-conservativefsnillfjordurhambu" + - "rgminakamichiharabrothermesaverdeatnurembergmodellingmxn--0trq7p" + - "7nnishimerabrowsersafetymarketsangobrumunddalotenkawabrunelastic" + - "beanstalkarumaifarsundyndns-at-workinggrouparisor-fronishinomiya" + - "shironobrusselsanjotkmaxxn--11b4c3dyndns-blogdnsannanishinoomote" + - "gobruxellesannohelplfinancialottebryanskleppgafanquannefrankfurt" + - "ksatxn--12c1fe0bradescorporationishinoshimatsuurabrynewjerseybus" + - "kerudinewportlligatmparliamentoyosatoyonakagyokutoyokawabuzenish" + - "iokoppegardyndns-freeboxoslodingenishitosashimizunaminamibosognd" + - "alottokorozawabuzzweirbwfashionishiwakis-a-cpadualstackspace-to-" + - "rentalstomakomaibarabzhitomirumalatvuopmicrolightingrimstadyndns" + - "-homednsanokasaokaminokawanishiaizubangecommunitysnesardegnaroyc" + - "omobaracomparemarkerryhotelsardiniacompute-1computerhistoryofsci" + - "ence-fictioncomsecuritytacticsarlutskashiwazakiyosemitecondoshic" + - "hinohealth-carereformitakeharaconferenceconstructionconsuladohar" + - "uovatrani-andria-barletta-trani-andriaconsultanthropologyconsult" + - "ingvolluxembourgruecontactraniandriabarlettatraniandriacontagema" + - "tsubaracontemporaryarteducationalchikugojomedio-campidano-medioc" + - "ampidanomediocontractorskenconventureshinodearthdfcbankasukabedz" + - "in-the-bandaioiraseeklogest-mon-blogueurovisionionjukudoyamainte" + - "nancebetsuikidsmynasushiobarackmazerbaijan-mayenebakkeshibechamb" + - "agriculturennebudapest-a-la-masionthewifiat-band-campaniacooking" + - "channelsdvrdnsdojoetsuwanouchikujogaszczytnordlandyndns-weberlin" + - "colncoolkuszkolahppiacenzagancooperativano-frankivskodjeffersonc" + - "openhagencyclopedichernivtsiciliacorsicagliaribeiraokinawashiros" + - "atochiokinoshimaizuruhrcorvettemasekasumigaurawa-mazowszextraspa" + - "cekitagatajirissagamiharacosenzakopanerairguardiannakadomarinebr" + - "askaunjargalsaceocosidnsfor-better-thanawatchesarpsborguitarsaru" + - "futsunomiyawakasaikaitakoelncostumedizinhistorischesasayamacouch" + - "potatofriesasebofagecounciluxurycouponsaskatchewancoursesassaris" + - "-a-doctoraycq-acranbrookuwanalyticsaudacreditcardyndns-wikiracre" + - "ditunioncremonashgabadaddjaguarqhachiojiyahoooshikamaishimodatec" + - "rewhoswhokksundyndns-workisboringujoinvillewismillercricketrzync" + - "rimeast-kazakhstanangercrotonexus-3crownprovidercrsvparsauherady" + - "ndns1cruisesavannahgacryptonomichigangwoncuisinellair-traffic-co" + - "ntrolleyculturalcentertainmentranoycuneocupcakecuritibaghdadynns" + - "aves-the-whalessandria-trani-barletta-andriatranibarlettaandriac" + - "xn--12cfi8ixb8luzerncyberlevagangaviikanonjis-a-financialadvisor" + - "-aurdalvivanovodkamisatokashikiwakunigamiharufcfancymrussiacyona" + - "barulsandoycyoutheworkpccwiiheyakagefgushikamifuranorth-kazakhst" + - "anfhvalerfidonnakanotoddenfieldynvpnchernovtsykkylvenetogakushim" + - "otoganewyorkshirecipesaro-urbino-pesarourbinopesaromasvuotnakaiw" + - "amizawassamukawataricohdatsunanjoburgriwataraidyndns-iparmattele" + - "fonicapitalonewspaperfigueresinstagingxn--1ctwolominamatakkokami" + - "noyamaxunusualpersonfilateliafilegearfilminamimakis-a-geekaszuby" + - "finalfinancefineartscholarshipschoolfinlandyroyrvikingulenfinnoy" + - "firebaseappartis-a-greenfirenzefirestonefirmdaleirvikatowicefish" + - "ingolffanschulefitjarfitnessettlementransurlfjalerflesbergflickr" + - "agerotikakamigaharaflightschwarzgwangjuniperflirflogintohmalvika" + - "tsushikabeeldengeluidfloraflorencefloridavvesiidazaifudaigokasel" + - "jordfloripaderbornfloristanohatakahamamurogawaflorogerschweizflo" + - "wersciencecentersciencehistoryflynnhosting-clusterflynnhubarclay" + - "s3-sa-east-1fndfor-ourfor-someeresistancefor-theaterforexrothach" + - "irogatakamoriokalmykiaforgotdnscientistockholmestrandforli-cesen" + - "a-forlicesenaforlikescandynamic-dnscjohnsonforsaleitungsenforsan" + - "dasuoloftrapaniizafortalfortmissoulancashireggio-calabriafortwor" + - "thadanorthwesternmutualforuminamiminowafosnescotlandfotaruis-a-g" + - "urufoxfordebianfozorafredrikstadtvscrapper-sitefreeddnsgeekgalax" + - "yfreemasonryfreesitevadsochildrensgardenfreetlscrappingfreiburgf" + - "reightravelchannelfreseniuscountryestateofdelawarezzoologyfribou" + - "rgfriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriuli-venezia-g" + - "iuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriulive-gi" + - "uliafriulivegiuliafriulivenezia-giuliafriuliveneziagiuliafriuliv" + - "giuliafrlfroganscrysechirurgiens-dentistes-en-francefrognfroland" + - "from-akrehamnfrom-alfrom-arfrom-azfrom-canonoichinomiyakefrom-co" + - "dynaliasdaburfrom-ctravelersinsurancefrom-dchiryukyuragifuchungb" + - "ukharafrom-dedyn-ip24from-flanderservegame-serversicherungfrom-g" + - "ausdalfrom-higashiagatsumagoianiafrom-iafrom-idfrom-ilfrom-inche" + - "onfrom-kservehalflifestylefrom-kyowariasahikawafrom-lancasterfro" + - "m-mangonohejis-a-hard-workerfrom-mdfrom-meethnologyfrom-mifunefr" + - "om-mnfrom-modalenfrom-mservehttpartnerservehumourfrom-mtnfrom-nc" + - "hitachinakagawatchandclockashibatakashimarumorimachidafrom-ndfro" + - "m-nefrom-nh-servebbserveirchitosetogitsuliguriafrom-njaworznotog" + - "awafrom-nminamiogunicomcastresindeviceserveminecraftrdfrom-nv-in" + - "foodnetworkshoppingfrom-nyfrom-ohtawaramotoineppuboliviajessheim" + - "periafrom-oketohnoshooguyfrom-orfrom-padovaksdalfrom-pratohobby-" + - "sitexashorokanaiefrom-rivnefrom-schoenbrunnfrom-sdfrom-tnfrom-tx" + - "n--1lqs03nfrom-utazuerichardlillehammerfeste-ipartservemp3from-v" + - "al-daostavalleyfrom-vtrentino-a-adigefrom-wafrom-wielunnerfrom-w" + - "valled-aostatoilfrom-wyfrosinonefrostalowa-wolawafroyahikobeardu" + - "baiduckdnservep2partyfstavernfujiiderafujikawaguchikonefujiminok" + - "amoenairtelecitychyattorneyagawakeisenbahnfujinomiyadafujiokayam" + - "angyshlakasamatsudontexistmein-vigorgefujisatoshonairtrafficplex" + - "us-1fujisawafujishiroishidakabiratoridefensells-for-lesservepics" + - "ervequakefujitsurugashimaringatlantakaharufujixeroxn--1lqs71dfuj" + - "iyoshidafukayabeatservesarcasmatartanddesignfukuchiyamadafukudom" + - "inichocolatelevisionissedalouvreisenisshingugefukuis-a-hunterfuk" + - "umitsubishigakirovogradoyfukuokazakiryuohadselfipasadenaritakura" + - "shikis-a-knightpointtokamachintaifun-dnsaliasiafukuroishikarikat" + - "urindalfukusakisarazurewebsiteshikagamiishibukawafukuyamagatakah" + - "ashimamakishiwadafunabashiriuchinadafunagatakahatakaishimogosenf" + - "unahashikamiamakusatsumasendaisennangoodyearfundaciofuoiskujukur" + - "iyamaniwakuratextileksvikatsuyamarylandfuosskoczowildlifedorainf" + - "racloudcontrolledogawarabikomaezakirunore-og-uvdalfurnitureggio-" + - "emilia-romagnakatombetsumitakagiizefurubirafurudonostiaarpassage" + - "nservicesettsurgeonshalloffameloyalistjordalshalsenfurukawais-a-" + - "landscaperfusodegaurafussaikisofukushimannorfolkebiblelveruminam" + - "isanrikubetsupportrentino-aadigefutabayamaguchinomigawafutboldly" + - "goingnowhere-for-morenakatsugawafuttsurugiminamitanefuturecmseva" + - "stopolefuturehostingfuturemailingfvgfylkesbiblackfridayfyresdalh" + - "angoutsystemscloudfunctionsevenassisicilyhannanmokuizumodenakaya" + - "mapassenger-associationhannosegawahanyuzenhapmirhareidsbergenhar" + - "stadharvestcelebrationhasamarburghasaminami-alpssells-itrentino-" + - "altoadigehashbanghasudahasura-appatriahasvikazohatogayaitakanabe" + - "autysfjordhatoyamazakitakamiizumisanofidelityhatsukaichikaiseis-" + - "a-linux-useranishiaritabashijonawatehattfjelldalhayashimamotobun" + - "gotakadapliernewmexicoalhazuminobusellsyourhomegoodsewilliamhill" + - "hbodoes-itvedestrandhelsinkitakatakanezawahembygdsforbundhemnesh" + - "aris-a-llamarriottrentino-s-tirollagrigentomologyeonggiehtavuoat" + - "nagaivuotnagaokakyotambabydgoszczecinemaceratabusebastopologyeon" + - "gnamegawakayamadridhemsedalhepforgeherokussldheroyhgtvalledaosta" + - "vangerhigashichichibunkyonanaoshimageandsoundandvisionhigashihir" + - "oshimanehigashiizumozakitakyushuaiahigashikagawahigashikagurasoe" + - "dahigashikawakitaaikitamihamadahigashikurumeguromskoghigashimats" + - "ushimarcheapaviancargodaddyn-vpnplus-2higashimatsuyamakitaakitad" + - "aitoigawahigashimurayamamotorcyclesharpfizerhigashinarusembokuki" + - "tamotosumy-routerhigashinehigashiomihachimanaustdalhigashiosakas" + - "ayamanakakogawahigashishirakawamatakaokaluganskydivinghigashisum" + - "iyoshikawaminamiaikitanakagusukumodernhigashitsunoshiroomurahiga" + - "shiurausukitashiobarahigashiyamatokoriyamanashifteditchyouripgfo" + - "ggiahigashiyodogawahigashiyoshinogaris-a-musicianhiraizumisatoka" + - "izukamakurazakitaurayasudahirakatashinagawahiranais-a-nascarfanh" + - "irarahiratsukagawahirayaizuwakamatsubushikusakadogawahistorichou" + - "seshawaiijimaritimoduminamiyamashirokawanabelembetsukubankazunow" + - "tvallee-aosteroyhitachiomiyagildeskaliszhitachiotagoperauniteroi" + - "zumizakisosakitagawahitraeumtgeradellogliastradinghjartdalhjelme" + - "landholeckobierzyceholidayhomeipharmacienshellaspeziahomelinkddi" + - "elddanuorrikuzentakataiwanairlinedre-eikerhomelinuxn--1qqw23ahom" + - "eofficehomesecuritymacaparecidahomesecuritypchofunatoriginsurecr" + - "eationiyodogawahomesenseminehomeunixn--2m4a15ehondahoneywellbein" + - "gzonehongotembaixadahonjyoitakarazukameokameyamatotakadahorninda" + - "lhorseoullensvanguardhortendofinternet-dnshimojis-a-nurservebeer" + - "hospitalhoteleshimokawahotmailhoyangerhoylandetroitskypehumaniti" + - "eshimokitayamahurdalhurumajis-a-painteractivegarsheis-a-patsfanh" + - "yllestadhyogoris-a-personaltrainerhyugawarahyundaiwafunejewelryj" + - "ewishartgalleryjfkharkovanylvenicejgorajlcube-serverrankoshigaya" + - "kumoldelmenhorstalbanshinichinanjlljmphilatelyjnjcphiladelphiaar" + - "eadmyblogsitejoyentrentino-sued-tiroljoyokaichibalatinoipifonymi" + - "nanojpmorganjpnjprshinjournalismailillesandefjordjurkoshunantank" + - "hmelnitskiyamarylhurstjohnkosugekotohiradomainshinjukumanokotour" + - "akouhokutamakis-a-techietis-a-photographerokuappharmacyshimonita" + - "yanagithubusercontentrentino-stirolkounosupplieshinkamigotoyohas" + - "himotottoris-a-therapistoiakouyamashikekouzushimashikis-an-accou" + - "ntantshimonosekikawakozagawakozakis-an-actorkozowinbarrel-of-kno" + - "wledgeologyonagoyaustrheimatunduhrennesoyolasitebizenakasatsunai" + - "rportland-4-salernoboribetsucks3-eu-central-1kpnkppspdnshinshino" + - "tsurgerykrasnodarkredstonekristiansandcatshinshirokristiansundkr" + - "odsheradkrokstadelvaldaostarnbergkrymincommbankhmelnytskyivaokum" + - "atorinokumejimasoykumenantokonamegatakatoris-an-actresshimosuwal" + - "kis-a-playerkunisakis-an-anarchistoricalsocietykunitachiarailway" + - "kunitomigusukumamotoyamashikokuchuokunneppugliakunstsammlungkuns" + - "tunddesignkuokgrouphoenixn--30rr7ykurehabmerkurgankurobelaudible" + - "borkangerkurogiminamiashigarakuroisoftwarendalenugkuromatsunais-" + - "an-artisteinkjerusalembroiderykurotakikawasakis-an-engineeringku" + - "shirogawakustanais-an-entertainerkusupplykutchanelkutnokuzumakis" + - "-bykvafjordkvalsundkvamfamberkeleykvanangenkvinesdalkvinnheradkv" + - "iteseidskogkvitsoykwpspiegelkzmitoyoakemiuramiyazumiyotamanomjon" + - "dalenmlbfanmonstermontrealestatefarmequipmentrentinoa-adigemonza" + - "-brianzaporizhzhiamonza-e-della-brianzapposhintomikasaharamonzab" + - "rianzaptokyotangotsukitahatakamatsukawamonzaebrianzaramonzaedell" + - "abrianzamoonscalemoparachutingmordoviamoriyamatsumotofukemoriyos" + - "himinamiawajikis-into-animeiwamarshallstatebankfhappoumormonmout" + - "hagakhanamigawamoroyamatsunomortgagemoscowindmillmoseushistorymo" + - "sjoenmoskeneshinyoshitomiokamogawamosshiojirishirifujiedamosvikn" + - "x-serveronamsskoganeis-a-rockstarachowicemoteginowaniihamatamaka" + - "wajimansionshioyanaizumoviemovimientolgamovistargardmtpchoyodoba" + - "shichikashukujitawaramtranbymuenstermuginozawaonsenmuikamisunaga" + - "wamukodairamulhouserveblogspotrentinoaadigemunakatanemuncienciam" + - "uosattemuphonefosshirahamatonbetsurnadalmurmanskolobrzegersundmu" + - "rotorcraftrentinoalto-adigemusashimurayamatsusakahoginankokubunj" + - "is-into-carshimotsukemusashinoharamuseetrentinoaltoadigemuseumve" + - "renigingmusicarbonia-iglesias-carboniaiglesiascarboniamutsuzawam" + - "y-vigorlicemy-wanggouvicenzamyactivedirectorymyasustor-elvdalmyc" + - "dn77-securecifedexhibitionmyddnskingmydissentrentinos-tirolmydro" + - "boehringerikemydshirakofuefukihaborokunohealthcareershiranukanag" + - "awamyeffectrentinostirolmyfirewallonieruchomoscienceandindustryn" + - "myfritzmyftpaccesshiraois-into-cartoonshimotsumamyhome-serversai" + - "lleshiraokananiimihoboleslawiechristiansburgrondarmykolaivaporcl" + - "oudmymailermymediapchristmasakinderoymyokohamamatsudamypephotogr" + - "aphysiomypetshiratakahagitlabormyphotoshibalestrandabergamoareke" + - "ymachinewhampshirebungoonombresciamypsxn--32vp30hagebostadmysecu" + - "ritycamerakermyshopblockshishikuis-into-gamessinazawamytis-a-boo" + - "kkeeperugiamytuleapiagetmyipictetrentinosud-tirolmyvnchromedicin" + - "akamagayachtsantabarbaramywireitrentinosudtirolpinkomaganepionee" + - "rpippulawypiszpittsburghofauskedsmokorsetagayasells-for-unzenpiw" + - "atepixolinopizzapkomakiyosunndalplanetariuminnesotaketakatsukis-" + - "certifieducatorahimeshimamateramobilyplantationplantshitaramapla" + - "tformshangrilanshizukuishimofusaitamatsukuris-lostre-toteneis-a-" + - "republicancerresearchaeologicaliforniaplaystationplazaplchungnam" + - "dalseidfjordyndns-mailucaniaplumbingoplurinacionalpmnpodzonepohl" + - "poivronpokerpokrovskomatsushimasfjordenpoliticarrierpolitiendapo" + - "lkowicepoltavalle-aostarostwodzislawindowshizuokanazawapomorzesz" + - "owinnershoujis-not-certifiedunetbankhakassiapordenonepornporsang" + - "erporsanguidell-ogliastraderporsgrunnanyokoshibahikariwanumatake" + - "tomisatoshimapoznanpraxis-a-bruinsfanprdpreservationpresidioprgm" + - "rprimeldalprincipeprivatizehealthinsuranceprochowiceproductionsh" + - "owaprofesionalprogressivegaskvolloabathsbchurchaseljeepsongdalen" + - "viknaharimalopolskanlandyndns-office-on-the-webcampinashikiminoh" + - "kurapromombetsurfbsbxn--12co0c3b4evalleaostaticsavonarusawaprope" + - "rtyprotectionprotonetrentinosued-tirolprudentialpruszkowioshowti" + - "memergencyahabahcavuotnagarahkkeravjuegoshikikonaikawachinaganoh" + - "aramcoachampionshiphoptobishimagentositecnologiaprzeworskogptplu" + - "sgardenpupictureshisognepvhaibarakitahiroshimaoris-a-lawyerpvtre" + - "ntinosuedtirolpwciprianiigataishinomakindlegnicafederationpzqldq" + - "ponqslgbtrentoyonezawaquicksyteshriramlidlugolekafjordquipelemen" + - "tsienarutomobellevuelosangelesjabbottrevisohughesigdalqvcirclego" + - "doesntexisteingeekashiharasrtroandinosaurepaircraftrogstadsrvare" + - "servecounterstrikestoragestordalstoregontrailroadstorfjordstorjd" + - "evcloudfrontdoorstpetersburgstreamsterdamnserverbaniastudiostudy" + - "ndns-at-homedepotenzamamidsundstuff-4-salestufftoread-booksnesir" + - "dalstuttgartromsakakinokiasusakis-savedsusonosuzakaniepcesuzukan" + - "makiwiensuzukis-slickharkivalleeaosteigensvalbardunloppacificirc" + - "ustomersveiosvelvikomvuxn--2scrj9choshibuyachiyodavvenjargaulard" + - "alowiczest-le-patronsvizzerasvn-reposjcbnlswedenswidnicartoonart" + - "decologiaswiebodzindianapolis-a-bloggerswiftcoverswinoujsciencea" + - "ndhistoryswisshikis-uberleetrentino-sud-tirolsynology-dslingtush" + - "uissier-justicetuvalle-daostatic-accessnoasaitotaltuxfamilytwmai" + - "lvenneslaskerrylogisticsokaneyamazoevestfoldvestnesokndalvestre-" + - "slidrepbodynathomebuiltrusteevestre-totennishiawakuravestvagoyve" + - "velstadvibo-valentiavibovalentiavideovillasnesoddenmarkhangelskj" + - "akdnepropetrovskiervaapsteiermarkongsvingervinnicasacamdvrcampin" + - "agrandebugattipschlesischesolarssonvinnytsiavipsinaappiemontevir" + - "giniavirtualvirtueeldomeindianmarketingvirtuelvisakegawaviterbok" + - "nowsitallvivoldavixn--3bst00misakis-foundationvlaanderenvladikav" + - "kazimierz-dolnyvladimirvlogoipilotshisuifuelblagdenesnaaseraling" + - "enkainanaejrietisalatinabenonichryslervolkswagentsolognevologdan" + - "skoninjambylvolvolkenkundenvolyngdalvossevangenvotevotingvotoyon" + - "owiwatsukiyonoticiaskimitsubatamibudejjuedischesapeakebayernrtrv" + - "arggatromsojamisonwloclawekonsulatrobeepilepsydneywmflabsolundbe" + - "ckommuneworldworse-thandawowitdkonskowolayangrouphilipsynology-d" + - "iskstationwpdevcloudwritesthisblogsytewroclawithgoogleapisa-hock" + - "eynutsiracusakatakinouewtcmisasaguris-gonewtfbx-ostrowwlkpmgunma" + - "nxn--1ck2e1barclaycards3-fips-us-gov-west-1wuozuwwwithyoutubenev" + - "entoeidsvollwzmiuwajimaxn--42c2d9axn--45br5cylxn--45brj9citadeli" + - "veryxn--45q11citichernigovernmentoyotaris-a-cubicle-slavellinota" + - "irestaurantoyotomiyazakis-a-democratoyotsukaidoxn--4gbriminingxn" + - "--4it168dxn--4it797kooris-a-soxfanxn--4pvxs4allxn--54b7fta0ccivi" + - "laviationxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49civilisationx" + - "n--5rtq34kopervikhersonxn--5su34j936bgsgxn--5tzm5gxn--6btw5axn--" + - "6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264civilizationxn--80adxh" + - "ksolutionsilkomforbargainstitutelemarkarateu-1xn--80ao21axn--80a" + - "qecdr1axn--80asehdbarsyonlinewhollandiscoveryonaguniversityoriik" + - "aratsuginamikatagamilitaryoshiokaracoldwarmiastageu-2xn--80aswgx" + - "n--80audnedalnxn--8ltr62koryokamikawanehonbetsurutaharaxn--8pvr4" + - "uxn--8y0a063axn--90a3academiamicaaarborteaches-yogasawaracingxn-" + - "-90aeroportalaheadjudaicable-modemocraciaxn--90aishobarakawagoex" + - "n--90azhytomyrxn--9dbhblg6dietcimdbashkiriauthordalandeportenrig" + - "htathomeftpalmaseratibigawastronomy-gatewayokosukanzakiyosatokig" + - "awagrocerybnikahokutobamagazineat-url-o-g-i-natuurwetenschappena" + - "umburgjerdrumeteorappalermomahachijolstereportarumizusawaetnagah" + - "amaroygardendoftheinternetflixilovecollegefantasyleaguernseybolt" + - "arnobrzegyptianaturhistorisches3-ap-northeast-2ixboxenapponazure" + - "-mobile12hpaleobirabogadocscbgdyniabruzzoologicalvinklein-addram" + - "menuernberggfarmerseine164xn--9dbq2axn--9et52uxn--9krt00axn--and" + - "y-iraxn--aroport-byandexn--3ds443gxn--asky-iraxn--aurskog-hland-" + - "jnbasilicataniautomotiveconomiasakuchinotsuchiurakawalmartataran" + - "toyakokonoehimejibmdgcahcesuolocalhostrodawaraumalborkdalaziocea" + - "nographics3-eu-west-1xn--avery-yuasakuhokkaidoomdnsiskinkyotobet" + - "sumidatlanticivilwarmanagementoyouraxn--b-5gaxn--b4w605ferdxn--b" + - "ck1b9a5dre4claimsantacruzsantafedjejuifminamiizukamishihoronobea" + - "uxartsandcraftsantamariakexn--bdddj-mrabdxn--bearalvhki-y4axn--b" + - "erlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn--bidr-5nachika" + - "tsuuraxn--bievt-0qa2xn--bjarky-fyaotsurreyxn--bjddar-ptamayufuet" + - "tertdasnetzxn--blt-elabourxn--bmlo-graingerxn--bod-2natalxn--brn" + - "ny-wuacademy-firewall-gatewayxn--brnnysund-m8accident-investigat" + - "ion-aptibleaseating-organicbcn-north-1xn--brum-voagatrysiljanxn-" + - "-btsfjord-9zaxn--c1avgxn--c2br7gxn--c3s14misawaxn--cck2b3basketb" + - "allyngenhktatsunoddautoscanadaejeonbukarasjohkamikoaniikappueblo" + - "ckbustermezgoraugustowadaegubambleclerc66xn--cg4bkis-very-badajo" + - "zxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-sslattumisconfusedxn--comuni" + - "caes-v6a2oxn--correios-e-telecomunicaes-ghc29axn--czr694batodayu" + - "kindustriaveroykeniwaizumiotsukumiyamazonawsadodgemologicallilly" + - "ombolzanord-frontiereviewskrakowebhostingjerstadotsuruokakegawau" + - "kraanghkepnogifts3-ap-southeast-2xn--czrs0tulanxesslupskommunalf" + - "orbundxn--czru2dxn--czrw28batsfjordishakotanhlfanhs3-us-gov-west" + - "-1xn--d1acj3bauhausposts-and-telecommunicationsncfdisrechtranaka" + - "muratajimidoriopretogoldpoint2thisamitsukeu-3xn--d1alfaromeoxn--" + - "d1atuneslzxn--d5qv7z876clanbibaidarmeniaxn--davvenjrga-y4axn--dj" + - "rs72d6uyxn--djty4kosaigawaxn--dnna-grajewolterskluwerxn--drbak-w" + - "uaxn--dyry-iraxn--e1a4cldmailuccapetownnews-stagingrongaxn--eckv" + - "dtc9dxn--efvn9somaxn--efvy88hair-surveillancexn--ehqz56nxn--elqq" + - "16hakatanortonxn--estv75gxn--eveni-0qa01gaxn--f6qx53axn--fct429k" + - "osakaerodromegallupinbarreauctionflfanfshostrowiecaseihichisobet" + - "suldalimoliserniaustraliaisondriobranconagawalesundemoneyokozebi" + - "nordreisa-geekaragandamusementashkentatamotors3-ap-southeast-1pa" + - "sswordd-dnshome-webservercellikes-piedmonticellocus-4xn--fhbeiar" + - "nxn--finny-yuaxn--fiq228c5hsomnarviikamitondabayashiogamagorizia" + - "xn--fiq64bbcasertairavennagatorockartuzyukuhashimoichinosekigaha" + - "ravocatanzarowebredirectmetacentrumetlifeinsurancempresashibetsu" + - "kuiitatebayashiibajddarchitecturealtydalipayomitanoceanographiqu" + - "emrevistanbulminamidaitomandalimanowarudaurskog-holandroverhalla" + - "-speziajudygarlanddnss3-ap-south-1kappchizippodhaleangaviikadena" + - "amesjevuemielno-ip6xn--fiqs8sooxn--fiqz9sopotritonxn--fjord-lrax" + - "n--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn--frde" + - "-grandrapidsor-odalxn--frna-woaraisaijosoyrorosor-varangerxn--fr" + - "ya-hraxn--fzc2c9e2clickashiwaraxn--fzys8d69uvgmailxn--g2xx48clin" + - "ichernihivguccieszynissandnessjoenissayokkaichiropracticheltenha" + - "m-radio-opencraftrainingripescaravantaaxn--gckr3f0fbxosaxoxn--ge" + - "crj9cliniquenoharaxn--ggaviika-8ya47hakodatexn--gildeskl-g0axn--" + - "givuotna-8yasakaiminatoyookannamilanotteroyxn--gjvik-wuaxn--gk3a" + - "t1exn--gls-elacaixaxn--gmq050is-very-evillagexn--gmqw5axn--h-2fa" + - "ilxn--h1aeghakonexn--h2breg3evenesorfoldxn--h2brj9c8clintonoshoe" + - "santoandreamhostersanukis-a-designerimarnardalucernexn--h3cuzk1d" + - "igitalxn--hbmer-xqaxn--hcesuolo-7ya35bbtattoolsztynsettlers3-us-" + - "west-1xn--hery-iraxn--hgebostad-g3axn--hmmrfeasta-s4accident-pre" + - "vention-webhopenairbusantiquest-a-la-maisondre-landroidvagsoyeri" + - "cssonyoursidealerimo-i-ranadexeterxn--hnefoss-q1axn--hobl-iraxn-" + - "-holtlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-" + - "54axn--i1b6b1a6a2exn--imr513nxn--indery-fyasugivingxn--io0a7is-v" + - "ery-goodhandsonxn--j1aefedorapeopleikangerxn--j1amhakubahccavuot" + - "nagareyamakeupowiathletajimabaridagawalbrzycharternidxn--j6w193g" + - "xn--jlq61u9w7bbvacationswatch-and-clockerhcloudns3-us-west-2xn--" + - "jlster-byasuokanraxn--jrpeland-54axn--jvr189mishimasudaxn--k7yn9" + - "5exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-w" + - "oaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--3e0b707exn--koluok" + - "ta-7ya57hakuis-a-liberalxn--kprw13dxn--kpry57dxn--kpu716fedorapr" + - "ojectransportexn--kput3is-very-nicexn--krager-gyatomitamamuraxn-" + - "-kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49j" + - "dfastlylbarcelonagasakikuchikuseikarugamvikarasjokarasuyamarugam" + - "e-hostrolekamiminers3-external-1xn--ksnes-uuaxn--kvfjord-nxaxn--" + - "kvitsy-fyatsukanumazuryxn--kvnangen-k0axn--l-1fairwindsorocabals" + - "fjordxn--l1accentureklamborghinikis-very-sweetpepperxn--laheadju" + - "-7yatsushiroxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagavi" + - "ika-52bentleyurihonjournalistgoryusuharavoues3-eu-west-2xn--lesu" + - "nd-huaxn--lgbbat1ad8jelenia-goraxn--lgrd-poacctunkongsbergxn--lh" + - "ppi-xqaxn--linds-pramericanarturystykanoyaltakasakiyokawaraxn--l" + - "ns-qlapyatigorskoseis-a-studentalxn--loabt-0qaxn--lrdal-sraxn--l" + - "renskog-54axn--lt-liaclothingdustkagoshimalselvendrellukowhaling" + - "rossetouchijiwadegreexn--lten-granexn--lury-iraxn--m3ch0j3axn--m" + - "ely-iraxn--merker-kuaxn--mgb2ddesorreisahayakawakamiichikawamisa" + - "toursimple-urlxn--mgb9awbfeiraquarellebesbyglandynulvikasuyanaga" + - "waxn--mgba3a3ejtuscanyxn--mgba3a4f16axn--mgba3a4franamizuholding" + - "smilevangerxn--mgba7c0bbn0axn--mgbaakc7dvfermochizukirkenesbscho" + - "koladenxn--mgbaam7a8hakusandiegooglecodespotrentino-alto-adigexn" + - "--mgbab2bdxn--mgbai9a5eva00beppublishproxyzjampagefrontappalmspr" + - "ingsakerxn--mgbai9azgqp6jeonnamerikawauexn--mgbayh7gpalacexn--mg" + - "bb9fbpobanazawaxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mg" + - "berp4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--" + - "mgbpl2fhskoleirfjordxn--mgbqly7c0a67fbcngroundhandlingroznyxn--m" + - "gbqly7cvafranziskanerdpolicexn--mgbt3dhdxn--mgbtf8flatangerxn--m" + - "gbtx2beskidyn-o-saurlandes3-website-ap-northeast-1xn--mgbx4cd0ab" + - "bvieeexn--mix082ferraraxn--mix891ferrarittoguraxn--mjndalen-64ax" + - "n--mk0axindigenaklodzkochikushinonsenergyxn--mk1bu44cnsaobernard" + - "ownloadyndns-picsaogoncartierxn--mkru45is-with-thebandovre-eiker" + - "xn--mlatvuopmi-s4axn--mli-tlaquilanciaxn--mlselv-iuaxn--moreke-j" + - "uaxn--mori-qsakuragawaxn--mosjen-eyawaraxn--mot-tlarvikosherbroo" + - "kegawaxn--mre-og-romsdal-qqbestbuyshouses3-website-ap-southeast-" + - "1xn--msy-ula0haldenxn--mtta-vrjjat-k7afamilycompanycntoystre-sli" + - "drettozawaxn--muost-0qaxn--mxtq1missilezajsklabudhabikinokawabar" + - "thaebaruminamiuonumassa-carrara-massacarraramassabusinessebykleg" + - "allocalhistoryggeelvinckaufenxn--ngbc5azdxn--ngbe9e0axn--ngbrxn-" + - "-3hcrj9cistrondheimmobilienxn--nit225koshimizumakizunokunimimata" + - "kasugais-a-teacherkassymantechnologyxn--nmesjevuemie-tcbaltimore" + - "-og-romsdalpha-myqnapcloudaccesscambridgestoneuesortlandxn--nnx3" + - "88axn--nodessakuraisleofmanchesterxn--nqv7fs00emaxn--nry-yla5gxn" + - "--ntso0iqx3axn--ntsq17gxn--nttery-byaeserveexchangexn--nvuotna-h" + - "waxn--nyqy26axn--o1achattanooganordkappimientakazakis-leetnedalx" + - "n--o3cw4halsaintlouis-a-anarchistoireggiocalabriaxn--o3cyx2axn--" + - "od0algxn--od0aq3betainaboxfusejnynysagaeroclubmedecincinnationwi" + - "dealstahaugesunderseaportsinfolldalabamagasakishimabaraogakibich" + - "uomutashinaindustriesteambulanceu-4xn--ogbpf8flekkefjordxn--oppe" + - "grd-ixaxn--ostery-fyawatahamaxn--osyro-wuaxn--p1acferreroticampo" + - "bassociatestinguovdageaidnuslivinghistoryxn--p1aissmarterthanyou" + - "xn--pbt977coguchikuzenxn--pgbs0dhlxn--porsgu-sta26fetsundynv6xn-" + - "-pssu33lxn--pssy2uxn--q9jyb4collectionxn--qcka1pmckinseyxn--qqqt" + - "11misugitokuyamatsumaebashikshacknetrentino-suedtirolxn--qxamune" + - "ustarhubsoruminternationalfirearmshintokushimaxn--rady-iraxn--rd" + - "al-poaxn--rde-ulavagiskexn--rdy-0nabariwchonanbuildingroks-thisa" + - "yamanobeokakudamatsuexn--rennesy-v1axn--rhkkervju-01aflakstadaok" + - "agakicks-assedicolognextdirectozsdeloittemp-dnsaotomelhusdecorat" + - "iveartsapodlasiellaktyubinskiptveterinairealtorlandyndns-remotew" + - "dyndns-serverdaluroyxn--rholt-mragowoodsideltaitogliattiresouthc" + - "arolinarvikomonoxn--rhqv96gxn--rht27zxn--rht3dxn--rht61exn--risa" + - "-5nativeamericanantiquesouthwestfalenxn--risr-iraxn--rland-uuaxn" + - "--rlingen-mxaxn--rmskog-byaxn--rny31hammarfeastafricapebretonami" + - "crosoftbankautokeinowruzhgorodeoxn--rovu88bhzcasinorddalindaskoy" + - "abearalvahkijobserverisignieznogataijinfinitintuitaxihuanikkoebe" + - "nhavnikolaevents3-website-ap-southeast-2xn--rros-granvindafjordx" + - "n--rskog-uuaxn--rst-0naturalhistorymuseumcenterxn--rsta-francais" + - "eharaxn--rvc1e0am3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithruhere" + - "dumbrellajollamericanexpressexyxn--s9brj9colonialwilliamsburgrpa" + - "rocherkasyno-dsapporoxn--sandnessjen-ogbizxn--sandy-yuaxn--seral" + - "-lraxn--ses554gxn--sgne-gratangenxn--skierv-utazassnasabaerobati" + - "cketsowaxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxax" + - "n--slat-5naturalsciencesnaturellespjelkavikomorotsukamiokamikita" + - "yamatsuris-a-socialistcgrouphdxn--slt-elabcgxn--smla-hraxn--smna" + - "-gratis-a-bulls-fanxn--snase-nraxn--sndre-land-0cbremangerxn--sn" + - "es-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1" + - "axn--sr-varanger-ggbieigersundivtasvuodnakaniikawatanaguraxauste" + - "vollavangenaval-d-aosta-valleyokotebinagisoccertificationavigati" + - "onavoibestadds3-ca-central-1xn--srfold-byaxn--srreisa-q1axn--sru" + - "m-grazxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbielawal" + - "terxn--stre-toten-zcbspreadbettingxn--t60b56axn--tckweatherchann" + - "elxn--tiq49xqyjetztrentino-sudtirolxn--tjme-hraxn--tn0agrinet-fr" + - "eakspydebergxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trgstad-r" + - "1axn--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0atvaroyxn--uc0ay4" + - "axn--uist22hamurakamigoris-a-libertarianxn--uisz3gxn--unjrga-rta" + - "obaomoriguchiharagusartsrlxn--unup4yxn--uuwu58axn--vads-jraxn--v" + - "ard-jraxn--vegrshei-c0axn--vermgensberater-ctbiellaakesvuemielec" + - "ceverbankareliancevje-og-hornnes3-website-eu-west-1xn--vermgensb" + - "eratung-pwbieszczadygeyachimataikikugawarszawashingtondclkariyam" + - "elbournexn--vestvgy-ixa6oxn--vg-yiabkhaziaxn--vgan-qoaxn--vgsy-q" + - "oa0jevnakershuscultureggioemiliaromagnamsosnowiechoseiroumuenche" + - "nxn--vgu402coloradoplateaudioxn--vhquvbarrell-of-knowledgeometre" + - "-experts-comptables3-us-east-2xn--vler-qoaxn--vre-eiker-k8axn--v" + - "rggt-xqadxn--vry-yla5gxn--vuq861bievatmallorcadaques3-website-sa" + - "-east-1xn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1columb" + - "usheyxn--wgbl6axn--xhq521bifukagawashtenawdev-myqnapcloudapplebt" + - "imnetzlgjovikarlsoyusuisserveftpanamatta-varjjatjeldsundivttasvu" + - "otnakanojohanamakinoharaxn--xkc2al3hye2axn--xkc2dl3a5ee0hangglid" + - "ingxn--y9a3aquariumitourismolangevagrarchaeologyeongbukmpspbaref" + - "ootballfinanzgorzeleccoffeedbackplaneapplinziiyamanouchikuhokury" + - "ugasakitchenayorovigovtateshinanomachimkentateyamaustinnavuotnar" + - "ashinobninsk12xn--yer-znaturbruksgymnxn--yfro4i67oxn--ygarden-p1" + - "axn--ygbi2ammxn--3oq18vl8pn36axn--ystre-slidre-ujbihorologyuucon" + - "nectjmaxxxfinityuzawaxn--zbx025dxn--zf0ao64axn--zf0avxn--3pxu8ko" + - "nyvelolxn--zfr164bikedagestangeorgeorgiaxperiaxz" - -// nodes is the list of nodes. Each node is represented as a uint32, which -// encodes the node's children, wildcard bit and node type (as an index into -// the children array), ICANN bit and text. -// -// If the table was generated with the -comments flag, there is a //-comment -// after each node's data. In it is the nodes-array indexes of the children, -// formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The -// nodeType is printed as + for normal, ! for exception, and o for parent-only -// nodes that have children but don't match a domain label in their own right. -// An I denotes an ICANN domain. -// -// The layout within the uint32, from MSB to LSB, is: -// [ 0 bits] unused -// [10 bits] children index -// [ 1 bits] ICANN bit -// [15 bits] text index -// [ 6 bits] text length -var nodes = [...]uint32{ - 0x31a803, - 0x284d84, - 0x382f06, - 0x2f37c3, - 0x2f37c6, - 0x37af86, - 0x3a7a03, - 0x31b604, - 0x322487, - 0x382b48, - 0x1a00742, - 0x32e147, - 0x3672c9, - 0x2b4eca, - 0x2b4ecb, - 0x232183, - 0x2ab9c6, - 0x238485, - 0x1e01482, - 0x203b44, - 0x260543, - 0x201485, - 0x2215842, - 0x332603, - 0x271b0c4, - 0x31fe05, - 0x2a00102, - 0x38194e, - 0x256483, - 0x39cbc6, - 0x2e03d02, - 0x2c8047, - 0x23e146, - 0x3205c42, - 0x257dc3, - 0x257dc4, - 0x357406, - 0x205d08, - 0x277146, - 0x302004, - 0x3600602, - 0x33acc9, - 0x211307, - 0x347986, - 0x3c1109, - 0x2c78c8, - 0x331004, - 0x241286, - 0x230106, - 0x3a00582, - 0x3a234f, - 0x21f4ce, - 0x226484, - 0x2c1545, - 0x31a705, - 0x2f6809, - 0x244689, - 0x357c07, - 0x22bbc6, - 0x206dc3, - 0x3e03942, - 0x21d6c3, - 0x220d4a, - 0x21fbc3, - 0x3bde45, - 0x2f2542, - 0x370749, - 0x4200282, - 0x216c84, - 0x2ef006, - 0x2bb6c5, - 0x2d7c04, - 0x4a14344, - 0x205583, - 0x2374c4, - 0x4e02b82, - 0x267184, - 0x527eac4, - 0x39004a, - 0x5600cc2, - 0x35c447, - 0x2774c8, - 0x6207ec2, - 0x340687, - 0x2bde44, - 0x2bde47, - 0x3b9605, - 0x339407, - 0x31ca86, - 0x325384, - 0x3314c5, - 0x298307, - 0x720fc02, - 0x335a43, - 0x21ab82, - 0x3aae43, - 0x7612442, - 0x27f485, - 0x7a023c2, - 0x293584, - 0x276005, - 0x2263c7, - 0x20974e, - 0x2391c4, - 0x238cc4, - 0x20b583, - 0x364209, - 0x30e2cb, - 0x259e48, - 0x3c0ec8, - 0x316488, - 0x215cc8, - 0x330e4a, - 0x339307, - 0x309d86, - 0x7e6e442, - 0x345243, - 0x355943, - 0x35d344, - 0x3a7a43, - 0x32f6c3, - 0x172a782, - 0x8203102, - 0x27b385, - 0x28df86, - 0x2a9f04, - 0x369187, - 0x23ce86, - 0x3806c4, - 0x3806c7, - 0x205a83, - 0x86c31c2, - 0x8b14902, - 0x8e21182, - 0x221186, - 0x9200882, - 0x286c45, - 0x32bcc3, - 0x3c6444, - 0x2e3804, - 0x2e3805, - 0x2053c3, - 0x96b6c03, - 0x9a09342, - 0x289b05, - 0x289b0b, - 0x20bd06, - 0x331f4b, - 0x22aa44, - 0x20cec9, - 0x20d784, - 0x9e0d9c2, - 0x20ef03, - 0x20fec3, - 0x1610702, - 0x2fb9c3, - 0x21070a, - 0xa200302, - 0x203dc5, - 0x2d400a, - 0x243384, - 0x210f03, - 0x212984, - 0x213b83, - 0x213b84, - 0x213b87, - 0x2153c5, - 0x215705, - 0x216d46, - 0x2170c6, - 0x217d43, - 0x21a708, - 0x212d43, - 0xa6004c2, - 0x22c3c8, - 0x3878cb, - 0x223088, - 0x225f06, - 0x227447, - 0x22a1c8, - 0xb604002, - 0xbaf21c2, - 0x23b388, - 0x3031c7, - 0x207a45, - 0x207a48, - 0x383c48, - 0x2fa9c3, - 0x22f384, - 0x35d382, - 0xbe2f582, - 0xc201bc2, - 0xca30502, - 0x230503, - 0xce03cc2, - 0x31b5c3, - 0x2f1b84, - 0x20bf83, - 0x335e04, - 0x322b8b, - 0x237c03, - 0x2db106, - 0x237c04, - 0x2e21ce, - 0x2669c5, - 0x33d7c8, - 0x251107, - 0x25110a, - 0x2342c3, - 0x34f747, - 0x30e485, - 0x2342c4, - 0x2d4b86, - 0x2d4b87, - 0x2d0204, - 0x37d587, - 0x209a84, - 0x340c44, - 0x340c46, - 0x25d944, - 0x39db46, - 0x207803, - 0x207808, - 0x21a988, - 0x238c83, - 0x2fb983, - 0x3a8c04, - 0x3ae4c3, - 0xd24d5c2, - 0xd6d2fc2, - 0x2083c3, - 0x205646, - 0x241383, - 0x354bc4, - 0xda4b182, - 0x24cb83, - 0x339c03, - 0x218882, - 0xde03c02, - 0x2c0b06, - 0x23c007, - 0x2eab45, - 0x38a504, - 0x2981c5, - 0x27e687, - 0x2d84c9, - 0x2dcd46, - 0x307788, - 0x2eaa46, - 0xe2010c2, - 0x2f1408, - 0x2f3e06, - 0x223a85, - 0x30fe07, - 0x310344, - 0x310345, - 0x2010c4, - 0x2010c8, - 0xe619382, - 0xea02642, - 0x3292c6, - 0x202648, - 0x34d485, - 0x34df06, - 0x350108, - 0x36d548, - 0xee1f8c5, - 0xf21d0c4, - 0x38ca87, - 0xf60d642, - 0xfaefa02, - 0x10e02c42, - 0x2ef105, - 0x373905, - 0x3c1546, - 0x3208c7, - 0x3973c7, - 0x1160be03, - 0x26f507, - 0x2b99c8, - 0x231a09, - 0x381b07, - 0x2321c7, - 0x232b08, - 0x233306, - 0x233dc6, - 0x234a0c, - 0x235e4a, - 0x2364c7, - 0x23834b, - 0x23be47, - 0x23be4e, - 0x1a23d104, - 0x23d744, - 0x23e847, - 0x2616c7, - 0x243806, - 0x243807, - 0x243c87, - 0x1a630a42, - 0x2449c6, - 0x2449ca, - 0x244f4b, - 0x246d07, - 0x2478c5, - 0x247c03, - 0x248146, - 0x248147, - 0x322643, - 0x1aa022c2, - 0x248a4a, - 0x1af68802, - 0x1b24d602, - 0x1b64afc2, - 0x1ba3e242, - 0x24cc85, - 0x24d2c4, - 0x1c204ac2, - 0x267205, - 0x245543, - 0x20d885, - 0x215bc4, - 0x20f984, - 0x209d86, - 0x2505c6, - 0x289d03, - 0x3b6d84, - 0x3ac2c3, - 0x1ca02e02, - 0x3582c4, - 0x3582c6, - 0x38d005, - 0x36e3c6, - 0x30ff08, - 0x227b84, - 0x397848, - 0x399a45, - 0x311708, - 0x36c6c6, - 0x265847, - 0x27b984, - 0x27b986, - 0x26f803, - 0x3917c3, - 0x20b648, - 0x31c684, - 0x354fc7, - 0x2d2906, - 0x2d2909, - 0x20a1c8, - 0x317908, - 0x338884, - 0x2067c3, - 0x23dd42, - 0x1da4c3c2, - 0x1de14202, - 0x207583, - 0x1e20a502, - 0x3225c4, - 0x2440c6, - 0x335b45, - 0x283403, - 0x234ec4, - 0x2b1a07, - 0x336bc3, - 0x37cfc8, - 0x21ea85, - 0x25f7c3, - 0x275f85, - 0x2760c4, - 0x2f9c06, - 0x222704, - 0x225986, - 0x226306, - 0x357d84, - 0x23c203, - 0x1e614582, - 0x238ac5, - 0x2011c3, - 0x1ea05ec2, - 0x2319c3, - 0x21c8c5, - 0x237583, - 0x237589, - 0x1ee01f02, - 0x1f608ac2, - 0x289645, - 0x219286, - 0x37c8c6, - 0x2bfcc8, - 0x2bfccb, - 0x20568b, - 0x21c145, - 0x2ead45, - 0x2c3909, - 0x1603142, - 0x357f48, - 0x23e504, - 0x1fe01b02, - 0x20aac3, - 0x20661886, - 0x224fc8, - 0x20a003c2, - 0x307348, - 0x20e0a6c2, - 0x23994a, - 0x212c8d03, - 0x39f286, - 0x3b5048, - 0x389ac8, - 0x3ba046, - 0x377d47, - 0x3a2547, - 0x23fe0a, - 0x243404, - 0x352f84, - 0x366b89, - 0x21ba1d45, - 0x21f6c6, - 0x200143, - 0x255184, - 0x21e25784, - 0x323307, - 0x22f607, - 0x364044, - 0x2d3345, - 0x3c1608, - 0x37b847, - 0x38fc87, - 0x22208882, - 0x23b9c4, - 0x28e948, - 0x24e244, - 0x252944, - 0x253005, - 0x253147, - 0x22b509, - 0x254004, - 0x2547c9, - 0x254a08, - 0x254f04, - 0x254f07, - 0x226553c3, - 0x255547, - 0x1626d02, - 0x16ad402, - 0x255e86, - 0x2564c7, - 0x256b04, - 0x258487, - 0x258f47, - 0x259783, - 0x329982, - 0x205dc2, - 0x270003, - 0x270004, - 0x27000b, - 0x3c0fc8, - 0x25f184, - 0x25ad05, - 0x25cac7, - 0x25e5c5, - 0x30590a, - 0x25f0c3, - 0x22a12c42, - 0x212c44, - 0x261489, - 0x265183, - 0x265247, - 0x2f61c9, - 0x336308, - 0x25d1c3, - 0x27a247, - 0x27aa89, - 0x26be83, - 0x281b04, - 0x283c89, - 0x287dc6, - 0x2266c3, - 0x2039c2, - 0x241243, - 0x2ad207, - 0x383fc5, - 0x340346, - 0x268984, - 0x2dba05, - 0x220d03, - 0x217f86, - 0x20d0c2, - 0x3a3984, - 0x22e2ab02, - 0x22ab03, - 0x23201802, - 0x252843, - 0x217544, - 0x217547, - 0x3c6746, - 0x255e42, - 0x23629942, - 0x384384, - 0x23a30b82, - 0x23e01a42, - 0x337304, - 0x337305, - 0x201a45, - 0x35ab46, - 0x24208742, - 0x208745, - 0x2100c5, - 0x210ac3, - 0x213d06, - 0x214885, - 0x221102, - 0x34db45, - 0x221104, - 0x227ac3, - 0x227d03, - 0x2460ad82, - 0x298507, - 0x33a504, - 0x33a509, - 0x255084, - 0x281903, - 0x35b109, - 0x281908, - 0x24b0cc04, - 0x30cc06, - 0x2a2c83, - 0x20cb03, - 0x30e843, - 0x24eefe82, - 0x375502, - 0x25201402, - 0x32d8c8, - 0x327088, - 0x3a8046, - 0x2544c5, - 0x34f5c5, - 0x31e0c7, - 0x229985, - 0x25cd82, - 0x25694cc2, - 0x1602202, - 0x240a88, - 0x34e285, - 0x27ca84, - 0x2e7205, - 0x241d87, - 0x25efc4, - 0x248942, - 0x25a2dac2, - 0x33e704, - 0x226ec7, - 0x289fc7, - 0x3393c4, - 0x291003, - 0x238bc4, - 0x238bc8, - 0x234106, - 0x2d4a0a, - 0x22b3c4, - 0x291508, - 0x288204, - 0x227546, - 0x294c84, - 0x2ef406, - 0x33a7c9, - 0x26d007, - 0x34e1c3, - 0x25eebfc2, - 0x331203, - 0x207c82, - 0x2625c982, - 0x30cf06, - 0x371e48, - 0x2a44c7, - 0x2f7209, - 0x290ac9, - 0x2a61c5, - 0x2a73c9, - 0x2a7b85, - 0x2a7cc9, - 0x2a9045, - 0x2aa008, - 0x266598c4, - 0x26a598c7, - 0x232583, - 0x2aa207, - 0x232586, - 0x2aa5c7, - 0x2a0f45, - 0x2ca8c3, - 0x26e35c02, - 0x2ea984, - 0x27230bc2, - 0x276552c2, - 0x2f3ac6, - 0x277445, - 0x2acac7, - 0x326403, - 0x32f644, - 0x2130c3, - 0x23b0c3, - 0x27a07d02, - 0x28206202, - 0x37b084, - 0x329943, - 0x24b905, - 0x28603882, - 0x28e00c42, - 0x2e0586, - 0x31c7c4, - 0x385444, - 0x38544a, - 0x29601342, - 0x38e2ca, - 0x39e948, - 0x29a6ff84, - 0x201fc3, - 0x208c43, - 0x3165c9, - 0x267709, - 0x2a6e06, - 0x29e14bc3, - 0x214bc5, - 0x39434d, - 0x39eb06, - 0x20e84b, - 0x2a200802, - 0x220b88, - 0x2ca1a802, - 0x2ce00942, - 0x2c9a85, - 0x2d205842, - 0x21b147, - 0x2b0747, - 0x214a43, - 0x348148, - 0x2d601102, - 0x29f384, - 0x291203, - 0x325545, - 0x395983, - 0x245646, - 0x223504, - 0x2fb943, - 0x2aec03, - 0x2da03202, - 0x2eacc4, - 0x3af385, - 0x2ace07, - 0x277e03, - 0x2ad9c3, - 0x2ae803, - 0x16ae8c2, - 0x2ae8c3, - 0x2aeb83, - 0x2de0b0c2, - 0x39e304, - 0x2507c6, - 0x22a443, - 0x2af343, - 0x2e2b0102, - 0x2b0108, - 0x2b03c4, - 0x2ee8c6, - 0x256947, - 0x3845c6, - 0x2a4f04, - 0x3be01ec2, - 0x23244b, - 0x2ff28e, - 0x219e0f, - 0x2c7b83, - 0x3c65fe82, - 0x1647302, - 0x3ca00a82, - 0x25b4c3, - 0x205983, - 0x2d8746, - 0x2f1946, - 0x3c2147, - 0x2f9084, - 0x3ce193c2, - 0x3d21edc2, - 0x2425c5, - 0x2e44c7, - 0x37fd86, - 0x3d64d542, - 0x30de04, - 0x2b7b43, - 0x3da09602, - 0x3df63443, - 0x2b8444, - 0x2bd289, - 0x16c2482, - 0x3e20dd82, - 0x327e05, - 0x3e6c2702, - 0x3ea00682, - 0x352307, - 0x214fc9, - 0x36754b, - 0x3a2305, - 0x26ad09, - 0x37e806, - 0x20bd47, - 0x3ee074c4, - 0x348c89, - 0x337b07, - 0x224c87, - 0x230803, - 0x2afc46, - 0x30a7c7, - 0x20fbc3, - 0x2f0d46, - 0x3f6038c2, - 0x3fa0e402, - 0x3bec83, - 0x32f245, - 0x332807, - 0x222386, - 0x383f45, - 0x2f3f04, - 0x278f45, - 0x2f2144, - 0x3fe00f82, - 0x341587, - 0x2f2984, - 0x26a444, - 0x34694d, - 0x26a449, - 0x230b08, - 0x25c404, - 0x335ec5, - 0x20a047, - 0x341144, - 0x23cf47, - 0x204cc5, - 0x402a4e44, - 0x30bcc5, - 0x263e44, - 0x390706, - 0x3206c5, - 0x406291c2, - 0x210fc4, - 0x210fc5, - 0x35d8c6, - 0x343b85, - 0x25d144, - 0x3c6103, - 0x20eb46, - 0x22b705, - 0x22f045, - 0x3207c4, - 0x22b443, - 0x22b44c, - 0x40aacf02, - 0x40e0a5c2, - 0x41201542, - 0x20f003, - 0x20f004, - 0x41604482, - 0x30ae88, - 0x340405, - 0x236184, - 0x243686, - 0x41a0e302, - 0x41e1de42, - 0x422000c2, - 0x2b2cc5, - 0x294346, - 0x229304, - 0x357946, - 0x35c206, - 0x222a83, - 0x4272850a, - 0x26b085, - 0x28b003, - 0x228606, - 0x304789, - 0x228607, - 0x292288, - 0x2c7789, - 0x31d348, - 0x250e46, - 0x209703, - 0x42a6f582, - 0x392c08, - 0x42e54ac2, - 0x43201e42, - 0x20be83, - 0x2d8345, - 0x26ba04, - 0x3b6fc9, - 0x2ee004, - 0x21b388, - 0x20dc03, - 0x323004, - 0x2a5fc3, - 0x2192c8, - 0x346887, - 0x43a25242, - 0x290ec2, - 0x31a685, - 0x39cf89, - 0x21f743, - 0x27bfc4, - 0x394304, - 0x20a0c3, - 0x27d04a, - 0x43f7c0c2, - 0x44210f82, - 0x2c3143, - 0x37ea83, - 0x1600082, - 0x200083, - 0x44603282, - 0x44a05a02, - 0x44e1a484, - 0x322046, - 0x2e07c6, - 0x245e44, - 0x277043, - 0x345c03, - 0x2ec1c3, - 0x2452c6, - 0x341d05, - 0x2c32c7, - 0x2c6445, - 0x2c7d86, - 0x2c8708, - 0x2c8906, - 0x24efc4, - 0x29960b, - 0x2cb583, - 0x2cb585, - 0x2cba08, - 0x21a202, - 0x352602, - 0x4524cd02, - 0x4560d682, - 0x219403, - 0x45a6cd82, - 0x26cd83, - 0x2cbd04, - 0x2cc543, - 0x462168c2, - 0x466d0e06, - 0x25e446, - 0x46ad0f42, - 0x46e0ff02, - 0x47227d42, - 0x4763a3c2, - 0x47a1b5c2, - 0x47e047c2, - 0x20dec3, - 0x358645, - 0x2b6306, - 0x48226444, - 0x38ce0a, - 0x3a0546, - 0x21c384, - 0x277943, - 0x48e02f02, - 0x2032c2, - 0x26fb43, - 0x4920ec83, - 0x2e6747, - 0x3205c7, - 0x4aa70107, - 0x393f87, - 0x22cd03, - 0x3176ca, - 0x251304, - 0x397504, - 0x39750a, - 0x247705, - 0x4ae1f682, - 0x258443, - 0x4b202002, - 0x228803, - 0x3311c3, - 0x4ba02742, - 0x26f484, - 0x220704, - 0x2046c5, - 0x3080c5, - 0x34e4c6, - 0x34e846, - 0x4be53982, - 0x4c201382, - 0x2f8545, - 0x25e152, - 0x33f206, - 0x25e8c3, - 0x39d486, - 0x2a1f45, - 0x1604842, - 0x54610c82, - 0x35e3c3, - 0x210c83, - 0x27e483, - 0x54a0c502, - 0x381c43, - 0x54e06e02, - 0x200843, - 0x39e348, - 0x285603, - 0x2a6046, - 0x23ecc7, - 0x30b986, - 0x30b98b, - 0x21c2c7, - 0x2ea784, - 0x55601c82, - 0x340285, - 0x55a09cc3, - 0x292c83, - 0x239b45, - 0x3175c3, - 0x55f175c6, - 0x3580ca, - 0x245ac3, - 0x23e004, - 0x202586, - 0x223e86, - 0x56241d03, - 0x32f507, - 0x2a6d07, - 0x29ae85, - 0x311986, - 0x22b743, - 0x58e13f43, - 0x59206f02, - 0x21a244, - 0x207609, - 0x240887, - 0x229a85, - 0x247d04, - 0x26c7c8, - 0x273b85, - 0x59676405, - 0x284e49, - 0x347a43, - 0x24d584, - 0x59a0b182, - 0x219603, - 0x59e94742, - 0x299986, - 0x162bac2, - 0x5a2a47c2, - 0x2b2bc8, - 0x3a76c3, - 0x30bc07, - 0x2ce245, - 0x2b2785, - 0x2d8e4b, - 0x2d9846, - 0x2d9046, - 0x2dc486, - 0x279f04, - 0x2dc6c6, - 0x5a6f0248, - 0x237cc3, - 0x201f83, - 0x201f84, - 0x2ddbc4, - 0x2dde87, - 0x2df2c5, - 0x5aadf402, - 0x5ae08302, - 0x208305, - 0x2bb184, - 0x2e298b, - 0x2e3708, - 0x298804, - 0x230982, - 0x5b64e882, - 0x24e883, - 0x2e3f04, - 0x2e41c5, - 0x2e4d07, - 0x2e6d44, - 0x21c184, - 0x5ba057c2, - 0x36b449, - 0x2e84c5, - 0x3a25c5, - 0x2e9045, - 0x5be19543, - 0x2e9d04, - 0x2e9d0b, - 0x2ea0c4, - 0x2ea38b, - 0x2ec105, - 0x219f4a, - 0x2ecec8, - 0x2ed0ca, - 0x2ed983, - 0x2ed98a, - 0x5c21fc42, - 0x5c648602, - 0x209943, - 0x5caf1382, - 0x2f1383, - 0x5cf6c182, - 0x5d32c442, - 0x2f1fc4, - 0x21a846, - 0x357685, - 0x2f3d83, - 0x31adc6, - 0x34f085, - 0x250ac4, - 0x5d600382, - 0x2aefc4, - 0x2c358a, - 0x398a07, - 0x3477c6, - 0x24f3c7, - 0x244a03, - 0x2b8488, - 0x3a1f8b, - 0x2bd905, - 0x27c785, - 0x27c786, - 0x2dd704, - 0x3b5288, - 0x21d343, - 0x230004, - 0x230007, - 0x2f4a06, - 0x31fa06, - 0x2e200a, - 0x254844, - 0x31104a, - 0x5db364c6, - 0x3364c7, - 0x25ad87, - 0x273544, - 0x273549, - 0x250485, - 0x31cf4b, - 0x2e1283, - 0x225b43, - 0x5de20b43, - 0x2344c4, - 0x5e200982, - 0x3a3006, - 0x5e6ca645, - 0x39d6c5, - 0x258c46, - 0x29cd44, - 0x5ea07bc2, - 0x247c44, - 0x5ee16f02, - 0x224645, - 0x23f4c4, - 0x228d83, - 0x5f610cc2, - 0x210cc3, - 0x267b86, - 0x5fa00a02, - 0x2073c8, - 0x228484, - 0x228486, - 0x37f306, - 0x25cb84, - 0x20eac5, - 0x21cfc8, - 0x220f87, - 0x2227c7, - 0x2227cf, - 0x28e846, - 0x309bc3, - 0x398184, - 0x233744, - 0x2101c3, - 0x227684, - 0x34fd84, - 0x5fe030c2, - 0x289a43, - 0x372e83, - 0x60207c02, - 0x25c503, - 0x322683, - 0x21578a, - 0x207c07, - 0x2534cc, - 0x253786, - 0x255246, - 0x256647, - 0x60632f47, - 0x25c889, - 0x22c504, - 0x25eb04, - 0x60a09f82, - 0x60e01282, - 0x2e23c6, - 0x32f304, - 0x2d3146, - 0x2333c8, - 0x239444, - 0x21b186, - 0x37c885, - 0x285048, - 0x205883, - 0x28a685, - 0x290cc3, - 0x3a26c3, - 0x3a26c4, - 0x212c03, - 0x6125fd82, - 0x61603a42, - 0x2e1149, - 0x299885, - 0x2a1084, - 0x2a4a45, - 0x212384, - 0x393607, - 0x353f05, - 0x2702c4, - 0x2702c8, - 0x2e61c6, - 0x2e9f84, - 0x2ede88, - 0x2f27c7, - 0x61a04042, - 0x316244, - 0x210284, - 0x224e87, - 0x61e04044, - 0x2c9002, - 0x6220ed42, - 0x221b83, - 0x2d37c4, - 0x29bb43, - 0x2aacc5, - 0x6262e642, - 0x2fddc5, - 0x23a382, - 0x390c85, - 0x372005, - 0x62a04e02, - 0x339b84, - 0x62e06a42, - 0x3aba46, - 0x3a7346, - 0x39d0c8, - 0x2be888, - 0x2f3a44, - 0x303685, - 0x316049, - 0x2eadc4, - 0x358084, - 0x2b6983, - 0x6320fd85, - 0x2c2547, - 0x21fc84, - 0x3ae54d, - 0x2f4682, - 0x3b35c3, - 0x2f4683, - 0x63601b42, - 0x396e45, - 0x223747, - 0x2b9604, - 0x394047, - 0x2c7989, - 0x2c36c9, - 0x275247, - 0x202bc3, - 0x3a7508, - 0x25b949, - 0x2f5487, - 0x2f5805, - 0x2f6706, - 0x2f6d46, - 0x2f6ec5, - 0x26a545, - 0x63a00d42, - 0x2b7685, - 0x2b3a08, - 0x2c08c6, - 0x63e872c7, - 0x2ec344, - 0x2b8047, - 0x2f9206, - 0x6420a402, - 0x35d5c6, - 0x2fc9ca, - 0x2fd245, - 0x646da942, - 0x64a4eb02, - 0x30ab06, - 0x386548, - 0x64e8a187, - 0x6523c902, - 0x215c43, - 0x20c246, - 0x229144, - 0x3b2f86, - 0x201746, - 0x34290a, - 0x325e45, - 0x3559c6, - 0x39ec43, - 0x39ec44, - 0x202c02, - 0x31c743, - 0x6560f042, - 0x30b743, - 0x38e544, - 0x2b2484, - 0x38668a, - 0x214c43, - 0x277208, - 0x250f0a, - 0x23f747, - 0x300986, - 0x260484, - 0x21c242, - 0x2a3702, - 0x65a02982, - 0x238b83, - 0x25ab47, - 0x202987, - 0x284d04, - 0x3a4f87, - 0x2e4e06, - 0x221287, - 0x303304, - 0x399d85, - 0x292705, - 0x65e1b2c2, - 0x3c50c6, - 0x223443, - 0x22a4c2, - 0x22a4c6, - 0x66222342, - 0x6660e982, - 0x3bb945, - 0x66a27882, - 0x66e01c42, - 0x334e85, - 0x2c51c5, - 0x355a85, - 0x289043, - 0x244185, - 0x2d9907, - 0x2feb45, - 0x370005, - 0x33d8c4, - 0x310806, - 0x381d44, - 0x67202a82, - 0x67ee7585, - 0x2a3ac7, - 0x34f408, - 0x261146, - 0x26114d, - 0x2674c9, - 0x2674d2, - 0x300585, - 0x309f43, - 0x6820c202, - 0x30ee44, - 0x39eb83, - 0x33b0c5, - 0x2fdf05, - 0x68630882, - 0x25f803, - 0x68a51b02, - 0x692d6142, - 0x69602242, - 0x2a1d45, - 0x394183, - 0x3c4f08, - 0x69a0ad42, - 0x69e0c842, - 0x26f446, - 0x317c4a, - 0x20e043, - 0x25d0c3, - 0x337d03, - 0x6aa04182, - 0x78e0c542, - 0x79600d82, - 0x206d02, - 0x35d3c9, - 0x2c18c4, - 0x2a9348, - 0x79af3dc2, - 0x79e01ac2, - 0x2ea5c5, - 0x238788, - 0x39e488, - 0x268b8c, - 0x23f683, - 0x7a263802, - 0x7a611d82, - 0x270d46, - 0x301805, - 0x2787c3, - 0x253c06, - 0x301946, - 0x29bc83, - 0x303b03, - 0x303f46, - 0x304b84, - 0x239a46, - 0x214a05, - 0x214a0a, - 0x24c1c4, - 0x305244, - 0x305b8a, - 0x7aa04982, - 0x24c345, - 0x30798a, - 0x308305, - 0x308bc4, - 0x308cc6, - 0x308e44, - 0x2198c6, - 0x7ae308c2, - 0x2f3446, - 0x341ac5, - 0x325cc7, - 0x3adf46, - 0x256844, - 0x2d2387, - 0x328446, - 0x241a05, - 0x241a07, - 0x3aed07, - 0x3aed0e, - 0x2ebb06, - 0x23ce05, - 0x203f87, - 0x20ff43, - 0x20ff47, - 0x217945, - 0x22f484, - 0x22f5c2, - 0x246087, - 0x2f9104, - 0x244dc4, - 0x290d4b, - 0x220003, - 0x2e58c7, - 0x220004, - 0x2e6047, - 0x2903c3, - 0x33ca0d, - 0x3998c8, - 0x2297c4, - 0x2701c5, - 0x30b205, - 0x30b643, - 0x7b228382, - 0x30d5c3, - 0x30da83, - 0x321c04, - 0x27ab85, - 0x3c5247, - 0x39ecc6, - 0x37c1c3, - 0x22a60b, - 0x30e04b, - 0x2a5c8b, - 0x2fa5cb, - 0x2bd60a, - 0x30548b, - 0x3245cb, - 0x360a8c, - 0x384f4b, - 0x3c4351, - 0x3c5d4a, - 0x30f5cb, - 0x30f88c, - 0x30fb8b, - 0x31010a, - 0x311bca, - 0x312bce, - 0x31324b, - 0x31350a, - 0x3145d1, - 0x314a0a, - 0x314f0b, - 0x31544e, - 0x315d8c, - 0x316b8b, - 0x316e4e, - 0x3171cc, - 0x318d4a, - 0x31a04c, - 0x7b71a34a, - 0x31af48, - 0x31ba49, - 0x32368a, - 0x32390a, - 0x323b8b, - 0x328b4e, - 0x328ed1, - 0x330349, - 0x33058a, - 0x330bcb, - 0x332a4a, - 0x333296, - 0x334b8b, - 0x33784a, - 0x33818a, - 0x33908b, - 0x33ab49, - 0x33d389, - 0x33de0d, - 0x33e48b, - 0x33f38b, - 0x33fd4b, - 0x343d49, - 0x34438e, - 0x34500a, - 0x34a4ca, - 0x34a7ca, - 0x34afcb, - 0x34b80b, - 0x34bacd, - 0x34d18d, - 0x34d7d0, - 0x34dc8b, - 0x34f9cc, - 0x34fe8b, - 0x351e0b, - 0x35344e, - 0x353a0b, - 0x353a0d, - 0x35964b, - 0x35a0cf, - 0x35a48b, - 0x35acca, - 0x35b3c9, - 0x35ba89, - 0x35cd4b, - 0x35d00e, - 0x35e88b, - 0x35f64f, - 0x36160b, - 0x3618cb, - 0x361b8b, - 0x36238a, - 0x367149, - 0x36a18f, - 0x36f54c, - 0x37038c, - 0x37108e, - 0x37158f, - 0x37194e, - 0x3722d0, - 0x3726cf, - 0x3731ce, - 0x373f8c, - 0x374292, - 0x375211, - 0x375a0e, - 0x375e8e, - 0x3763ce, - 0x37674f, - 0x376b0e, - 0x376e93, - 0x377351, - 0x37778c, - 0x377a8e, - 0x377f0c, - 0x378513, - 0x378ed0, - 0x37970c, - 0x379a0c, - 0x379ecb, - 0x37ac8e, - 0x37b18b, - 0x37b5cb, - 0x37ca4c, - 0x3825ca, - 0x38474c, - 0x384a4c, - 0x384d49, - 0x387e0b, - 0x3880c8, - 0x388889, - 0x38888f, - 0x38a08b, - 0x7bb8afca, - 0x38e8cc, - 0x38fa89, - 0x390a48, - 0x39100b, - 0x39158b, - 0x39220a, - 0x39248b, - 0x39298c, - 0x393d48, - 0x39a40b, - 0x39d80b, - 0x3a114e, - 0x3a27cb, - 0x3a410b, - 0x3ae88b, - 0x3aeb49, - 0x3af08d, - 0x3b368a, - 0x3b45d7, - 0x3b5cd8, - 0x3b9749, - 0x3bb58b, - 0x3bc1d4, - 0x3bc6cb, - 0x3bcc4a, - 0x3bd14a, - 0x3bd3cb, - 0x3bf610, - 0x3bfa11, - 0x3c00ca, - 0x3c394d, - 0x3c404d, - 0x3c61cb, - 0x3c6a06, - 0x3c51c3, - 0x7bf74a03, - 0x2dd1c6, - 0x245a05, - 0x252087, - 0x324486, - 0x1601182, - 0x2cbe89, - 0x31abc4, - 0x2d8988, - 0x220a83, - 0x30ed87, - 0x201c02, - 0x2acb03, - 0x7c200dc2, - 0x2c4946, - 0x2c5c84, - 0x21a604, - 0x349a43, - 0x349a45, - 0x7cac2742, - 0x7cea8044, - 0x273487, - 0x7d22f442, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x20ae43, - 0x200742, - 0xcd588, - 0x202c42, - 0x30e843, - 0x21f743, - 0x20ec83, - 0xae43, - 0x241d03, - 0x207c03, - 0x32eb56, - 0x356d13, - 0x3a4e09, - 0x38c988, - 0x340109, - 0x307b06, - 0x33e750, - 0x248c93, - 0x2f4ac8, - 0x2a5687, - 0x2b6f87, - 0x278c8a, - 0x38e5c9, - 0x342549, - 0x28b30b, - 0x31ca86, - 0x20850a, - 0x225f06, - 0x31a7c3, - 0x298445, - 0x207808, - 0x3abb0d, - 0x2ef1cc, - 0x35cac7, - 0x312f0d, - 0x21d0c4, - 0x23478a, - 0x23598a, - 0x235e4a, - 0x21fa07, - 0x243507, - 0x245fc4, - 0x27b986, - 0x3264c4, - 0x2e01c8, - 0x2ee049, - 0x2bfcc6, - 0x2bfcc8, - 0x24944d, - 0x2c3909, - 0x389ac8, - 0x3a2547, - 0x2f1c0a, - 0x2564c6, - 0x260fc7, - 0x306a04, - 0x214707, - 0x3105ca, - 0x378a0e, - 0x229985, - 0x3bfe0b, - 0x300389, - 0x267709, - 0x2b0587, - 0x3694ca, - 0x224dc7, - 0x2ff3c9, - 0x31e5c8, - 0x239e8b, - 0x2d8345, - 0x2309ca, - 0x227b09, - 0x3abe0a, - 0x2c64cb, - 0x21460b, - 0x28b095, - 0x306745, - 0x3a25c5, - 0x2e9d0a, - 0x2a6f0a, - 0x300107, - 0x2388c3, - 0x2e2348, - 0x2cf00a, - 0x228486, - 0x25b789, - 0x285048, - 0x2e9f84, - 0x29bb49, - 0x2be888, - 0x36c607, - 0x2e7586, - 0x2a3ac7, - 0x2ac6c7, - 0x2450c5, - 0x2297cc, - 0x2701c5, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x202c42, - 0x20be03, - 0x20ec83, - 0x20ae43, - 0x241d03, - 0x20be03, - 0x20ec83, - 0xae43, - 0x285603, - 0x241d03, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0xae43, - 0x241d03, - 0xcd588, - 0x202c42, - 0x209d42, - 0x236082, - 0x201102, - 0x2013c2, - 0x2db482, - 0x460be03, - 0x237583, - 0x203d43, - 0x30e843, - 0x214bc3, - 0x21f743, - 0x2d1206, - 0x20ec83, - 0x241d03, - 0x238843, - 0xcd588, - 0x323584, - 0x322dc7, - 0x34a403, - 0x2402c4, - 0x21b903, - 0x283cc3, - 0x30e843, - 0x15da87, - 0x1221c4, - 0x121b83, - 0xf45, - 0x200742, - 0xb6c03, - 0x5a02c42, - 0x1488d09, - 0x891cd, - 0x8950d, - 0x236082, - 0x6ff84, - 0xf89, - 0x200342, - 0x5f8d588, - 0xe9484, - 0xcd588, - 0x1426502, - 0x1508546, - 0x233603, - 0x2b8283, - 0x660be03, - 0x234784, - 0x6a37583, - 0x6f0e843, - 0x207d02, - 0x26ff84, - 0x20ec83, - 0x2fbbc3, - 0x2056c2, - 0x241d03, - 0x21c4c2, - 0x2f1f03, - 0x200a02, - 0x29d2c3, - 0x26f883, - 0x20fc42, - 0xcd588, - 0x233603, - 0x2fbbc3, - 0x2056c2, - 0x2f1f03, - 0x200a02, - 0x29d2c3, - 0x26f883, - 0x20fc42, - 0x2f1f03, - 0x200a02, - 0x29d2c3, - 0x26f883, - 0x20fc42, - 0x20be03, - 0x2b6c03, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff84, - 0x214bc3, - 0x21f743, - 0x226444, - 0x20ec83, - 0x241d03, - 0x204bc2, - 0x219543, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x2b6c03, - 0x202c42, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff84, - 0x20ec83, - 0x241d03, - 0x2f5805, - 0x230882, - 0x200742, - 0xcd588, - 0x1455908, - 0x1367ca, - 0x30e843, - 0x200001, - 0x202081, - 0x200ec1, - 0x200f01, - 0x200f41, - 0x20d701, - 0x312181, - 0x203801, - 0x24b241, - 0x2021c1, - 0x200101, - 0x200301, - 0x117485, - 0xcd588, - 0x200781, - 0x2014c1, - 0x200041, - 0x200141, - 0x201401, - 0x200901, - 0x200541, - 0x200c01, - 0x200a81, - 0x200641, - 0x200081, - 0x2001c1, - 0x200341, - 0x201681, - 0x20ab41, - 0x2002c1, - 0x200a01, - 0x200401, - 0x200441, - 0x201ac1, - 0x203f81, - 0x20d601, - 0x201181, - 0x200dc1, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x202c42, - 0x20be03, - 0x237583, - 0x200342, - 0x241d03, - 0x15da87, - 0x1f847, - 0x29546, - 0x4160a, - 0x88348, - 0x5a588, - 0x5aa47, - 0x86, - 0xd61c5, - 0x14a345, - 0x7dac6, - 0x157206, - 0x28b304, - 0x340547, - 0xcd588, - 0x2d2484, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x31a548, - 0x31e084, - 0x2374c4, - 0x22aa44, - 0x270c47, - 0x2cde07, - 0x20be03, - 0x23d74b, - 0x31b7ca, - 0x31cd47, - 0x2fc048, - 0x3255c8, - 0x237583, - 0x346c47, - 0x203d43, - 0x37c208, - 0x335049, - 0x26ff84, - 0x214bc3, - 0x2dce48, - 0x21f743, - 0x2cb6ca, - 0x2d1206, - 0x3a0547, - 0x20ec83, - 0x2da606, - 0x309308, - 0x241d03, - 0x28d806, - 0x2e394d, - 0x2e49c8, - 0x2ea0cb, - 0x331e86, - 0x348087, - 0x20f605, - 0x2ef98a, - 0x22bfc5, - 0x36210a, - 0x230882, - 0x203f83, - 0x244dc4, - 0x2021c6, - 0x3a7a03, - 0x2af043, - 0x24be43, - 0x23b003, - 0x349183, - 0x200582, - 0x2d7285, - 0x2a6589, - 0x245743, - 0x205583, - 0x202fc3, - 0x200301, - 0x2a1a85, - 0x39da83, - 0x2053c3, - 0x22aa44, - 0x326443, - 0x214948, - 0x2ec443, - 0x302e8d, - 0x2ebbc8, - 0x21ab46, - 0x31c783, - 0x378983, - 0x381cc3, - 0xaa0be03, - 0x236dc8, - 0x23d744, - 0x246d03, - 0x2022c6, - 0x249bc8, - 0x202e03, - 0x2ef9c3, - 0x2319c3, - 0x237583, - 0x21d8c3, - 0x21e903, - 0x21a303, - 0x31c703, - 0x2b25c3, - 0x225783, - 0x370645, - 0x256c04, - 0x258107, - 0x329982, - 0x25a303, - 0x25d486, - 0x25ed03, - 0x25f3c3, - 0x276543, - 0x202043, - 0x323283, - 0x269687, - 0xaf0e843, - 0x2363c3, - 0x2096c3, - 0x204d03, - 0x26ff83, - 0x2f3783, - 0x374ac5, - 0x363fc3, - 0x246889, - 0x20b0c3, - 0x2fe203, - 0xb2527c3, - 0x286d03, - 0x21cd08, - 0x2a64c6, - 0x200706, - 0x29aa46, - 0x27a5c7, - 0x200c83, - 0x20be83, - 0x21f743, - 0x288446, - 0x21a202, - 0x29ea43, - 0x32dd05, - 0x20ec83, - 0x2a2e47, - 0x160ae43, - 0x24e483, - 0x21fa83, - 0x225e03, - 0x241d03, - 0x212e46, - 0x31d286, - 0x36aa43, - 0x22ba83, - 0x219543, - 0x253743, - 0x303b83, - 0x2f0603, - 0x2f20c3, - 0x34f085, - 0x24f3c3, - 0x2d3246, - 0x23eb08, - 0x225b43, - 0x341789, - 0x33a308, - 0x2110c8, - 0x21a185, - 0x32a38a, - 0x35400a, - 0x37cd8b, - 0x37d408, - 0x2fb903, - 0x2f2103, - 0x33b1c3, - 0x366d88, - 0x2f4e83, - 0x39ec44, - 0x261983, - 0x202983, - 0x22d483, - 0x26fcc3, - 0x238843, - 0x230882, - 0x22d0c3, - 0x23f683, - 0x305403, - 0x3065c4, - 0x244dc4, - 0x3be143, - 0xcd588, - 0x200742, - 0x200602, - 0x200582, - 0x203402, - 0x2023c2, - 0x200782, - 0x238c02, - 0x201b02, - 0x202542, - 0x2000c2, - 0x225242, - 0x20d682, - 0x26cd82, - 0x206f02, - 0x2db482, - 0x20b182, - 0x201f82, - 0x2057c2, - 0x2f5f42, - 0x208102, - 0x200982, - 0x219e82, - 0x207bc2, - 0x207c02, - 0x201282, - 0x20fd82, - 0x201c42, - 0x742, - 0x602, - 0x582, - 0x3402, - 0x23c2, - 0x782, - 0x38c02, - 0x1b02, - 0x2542, - 0xc2, - 0x25242, - 0xd682, - 0x6cd82, - 0x6f02, - 0xdb482, - 0xb182, - 0x1f82, - 0x57c2, - 0xf5f42, - 0x8102, - 0x982, - 0x19e82, - 0x7bc2, - 0x7c02, - 0x1282, - 0xfd82, - 0x1c42, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x3f82, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x202c42, - 0x241d03, - 0xc60be03, - 0x30e843, - 0x21f743, - 0xaff03, - 0x223b82, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0xaff03, - 0x241d03, - 0xdc2, - 0x142f49, - 0x202382, - 0x15bda05, - 0x2eaa02, - 0xcd588, - 0x2c42, - 0x23bfc2, - 0x200482, - 0x244482, - 0x21f682, - 0x253982, - 0x14a345, - 0x203082, - 0x2056c2, - 0x20c502, - 0x203042, - 0x20b182, - 0x392a82, - 0x20ed42, - 0x24eb42, - 0x15da87, - 0x120a8d, - 0xd6249, - 0x6898b, - 0xd97c8, - 0x60b89, - 0xfeec6, - 0x30e843, - 0xcd588, - 0x1221c4, - 0x121b83, - 0xf45, - 0xcd588, - 0x5b646, - 0xf89, - 0xab07, - 0x200742, - 0x28b304, - 0x202c42, - 0x20be03, - 0x209d42, - 0x237583, - 0x202542, - 0x2d2484, - 0x214bc3, - 0x254ac2, - 0x20ec83, - 0x200342, - 0x241d03, - 0x3a25c6, - 0x32414f, - 0x70ec03, - 0xcd588, - 0x202c42, - 0x203d43, - 0x30e843, - 0x21f743, - 0xae43, - 0x14ef74b, - 0x141650a, - 0x14eca47, - 0x78d4b, - 0xd7e45, - 0x15da87, - 0x202c42, - 0x20be03, - 0x30e843, - 0x20ec83, - 0x200742, - 0x211a42, - 0x209342, - 0xfe0be03, - 0x2442c2, - 0x237583, - 0x226d02, - 0x22ab02, - 0x30e843, - 0x25cd82, - 0x251942, - 0x2a8002, - 0x211742, - 0x28d302, - 0x2029c2, - 0x200902, - 0x2ebfc2, - 0x278142, - 0x25c982, - 0x2ad9c2, - 0x2fcdc2, - 0x223482, - 0x23d082, - 0x21f743, - 0x205a02, - 0x20ec83, - 0x211e82, - 0x2c9fc2, - 0x241d03, - 0x2457c2, - 0x207c02, - 0x209f82, - 0x203a42, - 0x204e02, - 0x2da942, - 0x21b2c2, - 0x251b02, - 0x2234c2, - 0x31350a, - 0x35acca, - 0x38bf0a, - 0x3c6b82, - 0x20f2c2, - 0x374a82, - 0x103358c9, - 0x1072f70a, - 0x14328c7, - 0x10a03fc2, - 0x1410983, - 0x3342, - 0x12f70a, - 0x253404, - 0x1120be03, - 0x237583, - 0x254a04, - 0x30e843, - 0x26ff84, - 0x214bc3, - 0x21f743, - 0x20ec83, - 0x1aec5, - 0x20ae43, - 0x241d03, - 0x24f3c3, - 0x203f83, - 0xcd588, - 0x1400004, - 0x149845, - 0x142f49, - 0xa8ca, - 0x119fc2, - 0x19cbc6, - 0x187251, - 0x11b358c9, - 0x1498c8, - 0x1c1948, - 0x1fbc7, - 0x282, - 0x11748b, - 0x18c40a, - 0x844a, - 0x2aa47, - 0xcd588, - 0x10c788, - 0xd547, - 0x18419a4b, - 0x1c787, - 0x4c2, - 0x5e87, - 0x23a8a, - 0x1f8cf, - 0x8308f, - 0xefa02, - 0x2c42, - 0x173908, - 0xf698a, - 0x12b48, - 0x5fcc8, - 0xd3708, - 0x2e02, - 0x1bda8f, - 0x9dc8b, - 0x7e948, - 0x3c2c7, - 0x127c0a, - 0xf400b, - 0x78449, - 0x127b07, - 0x12a48, - 0x1541cc, - 0x3a347, - 0x17a28a, - 0x67008, - 0xf6f8e, - 0x2954e, - 0x2a88b, - 0x2e28b, - 0x30e8b, - 0x50b89, - 0xe32cb, - 0xeb5cd, - 0x17d18b, - 0x198c8d, - 0x19900d, - 0x3cc4a, - 0x44c0b, - 0x4638b, - 0x49ec5, - 0x18828e50, - 0x15770f, - 0x3b4cf, - 0xfb1cd, - 0x39610, - 0xa6c2, - 0x18e071c8, - 0x1f6c8, - 0x192ec405, - 0x5400b, - 0x12e350, - 0x59c88, - 0x12c4a, - 0x2e449, - 0x66007, - 0x66347, - 0x66507, - 0x66887, - 0x67347, - 0x67947, - 0x68187, - 0x68547, - 0x68e87, - 0x69187, - 0x69847, - 0x69a07, - 0x69bc7, - 0x69d87, - 0x6a087, - 0x6a687, - 0x6af47, - 0x6b707, - 0x6bcc7, - 0x6bf87, - 0x6c147, - 0x6c447, - 0x6cc47, - 0x6ce47, - 0x6dd87, - 0x6df47, - 0x6e107, - 0x6ebc7, - 0x6f0c7, - 0x6fd87, - 0x70687, - 0x71147, - 0x71647, - 0x71807, - 0x71c07, - 0x72447, - 0x726c7, - 0x72ac7, - 0x72c87, - 0x72e47, - 0x73287, - 0x73e87, - 0x743c7, - 0x74947, - 0x74b07, - 0x74e87, - 0x75407, - 0xd0c2, - 0x5fdca, - 0xdc547, - 0x84785, - 0xb3111, - 0x10ac6, - 0x10cc0a, - 0x17378a, - 0x5b646, - 0xcb0b, - 0x1402, - 0x34111, - 0xb29c9, - 0x948c9, - 0xebfc2, - 0x71e8a, - 0xa5a89, - 0xa61cf, - 0xa67ce, - 0xa7708, - 0x552c2, - 0x549, - 0x18b4ce, - 0xfc6cc, - 0xdbe0f, - 0x1a814e, - 0x1840c, - 0x25589, - 0x26751, - 0x2f988, - 0x1109d2, - 0x1115cd, - 0x1545cd, - 0x43f8b, - 0x4bad5, - 0x52c49, - 0x5438a, - 0x5ee89, - 0x6b310, - 0x7cc8b, - 0x85ecf, - 0xf0c0b, - 0x16130c, - 0x1b2610, - 0x9208a, - 0x9e90d, - 0x9fc4e, - 0xa9bca, - 0xab6cc, - 0xac394, - 0xb2651, - 0xbb04b, - 0xe1ecf, - 0xca50d, - 0x1a720e, - 0x16c4cc, - 0x18618c, - 0xb234b, - 0xb428e, - 0xb4d50, - 0xb584b, - 0xbaa8d, - 0xbb4cf, - 0xbef4c, - 0xbfb4e, - 0xc0411, - 0xdff4c, - 0x10d8c7, - 0xc738d, - 0xd000c, - 0xd65d0, - 0xdb80d, - 0x18acc7, - 0xe6310, - 0xf9348, - 0xfd44b, - 0x17d9cf, - 0x142188, - 0x10ce0d, - 0x190c10, - 0xf5f89, - 0x196af346, - 0xb0303, - 0xb5b05, - 0x9602, - 0x143709, - 0x5c40a, - 0x106606, - 0x2098a, - 0x1991f309, - 0x264c3, - 0xd2711, - 0xd2b49, - 0xd3ec7, - 0x1873cb, - 0xdae90, - 0xdb34c, - 0xdc2c8, - 0xdcc45, - 0x11e748, - 0x1afe8a, - 0x26587, - 0x140947, - 0x1382, - 0x12f04a, - 0x3b809, - 0x71505, - 0xa2cca, - 0x8a0cf, - 0x4794b, - 0x174b8c, - 0x1a252, - 0x9df05, - 0xdf0c8, - 0x13a60a, - 0x19ee8f05, - 0x17478c, - 0x12c443, - 0x192a82, - 0xf258a, - 0x14f2d8c, - 0x3a6c8, - 0x198e48, - 0x15da07, - 0x16f02, - 0xa02, - 0x49fd0, - 0x653c7, - 0x1282, - 0x333cf, - 0x7dac6, - 0x79a8e, - 0xdeb8b, - 0x6e308, - 0xa9dc9, - 0xf5012, - 0x18998d, - 0x1be608, - 0x68849, - 0x6a20d, - 0x6c5c9, - 0x6c98b, - 0x6e4c8, - 0x73c88, - 0x76248, - 0x79dc9, - 0x79fca, - 0x7b48c, - 0x17010a, - 0x103bc7, - 0x2fdcd, - 0xf7a8b, - 0x11a9cc, - 0x1979c8, - 0x4d3c9, - 0x13d8d0, - 0xc842, - 0x521cd, - 0x4182, - 0xc542, - 0x103b0a, - 0x10cb0a, - 0x10ec8b, - 0x4654c, - 0x10c28a, - 0x10c50e, - 0x121ccd, - 0xb6a08, - 0xdc2, - 0x11e0340e, - 0x1272184e, - 0x12f4960a, - 0x13742c0e, - 0x13f374ce, - 0x147ac40c, - 0x14328c7, - 0x14328c9, - 0x1410983, - 0x14eb784c, - 0x15727309, - 0x15f69bc9, - 0x1660a6c9, - 0x3342, - 0x3351, - 0x121791, - 0x14954d, - 0x142b51, - 0x137411, - 0x1ac34f, - 0xb778f, - 0x12724c, - 0x169b0c, - 0xa60c, - 0x1654cd, - 0x10e595, - 0x5a00c, - 0x1ba48c, - 0x138c90, - 0x155e8c, - 0x15dc0c, - 0x17a659, - 0x180a19, - 0x19f3d9, - 0x1b57d4, - 0x1bbcd4, - 0x3ed4, - 0x4ed4, - 0xb814, - 0x16e5a0c9, - 0x17404189, - 0x17fba549, - 0x1222fb89, - 0x3342, - 0x12a2fb89, - 0x3342, - 0x3eca, - 0x3342, - 0x1322fb89, - 0x3342, - 0x3eca, - 0x3342, - 0x13a2fb89, - 0x3342, - 0x1422fb89, - 0x3342, - 0x14a2fb89, - 0x3342, - 0x3eca, - 0x3342, - 0x1522fb89, - 0x3342, - 0x3eca, - 0x3342, - 0x15a2fb89, - 0x3342, - 0x1622fb89, - 0x3342, - 0x3eca, - 0x3342, - 0x16a2fb89, - 0x3342, - 0x3eca, - 0x3342, - 0x1722fb89, - 0x3342, - 0x17a2fb89, - 0x3342, - 0x1822fb89, - 0x3342, - 0x3eca, - 0x3342, - 0x187245, - 0x18c404, - 0x340e, - 0x12184e, - 0x14960a, - 0x142c0e, - 0x1374ce, - 0x1ac40c, - 0xb784c, - 0x127309, - 0x169bc9, - 0xa6c9, - 0x5a0c9, - 0x4189, - 0x1ba549, - 0x10e78d, - 0x5189, - 0xbac9, - 0x116a84, - 0x118c44, - 0x13aa44, - 0x18e7c4, - 0x79004, - 0x98884, - 0x477c4, - 0x143c44, - 0x1fbc4, - 0x157cd03, - 0xa6c2, - 0x121cc3, - 0x2e02, - 0x200742, - 0x202c42, - 0x209d42, - 0x208882, - 0x202542, - 0x200342, - 0x200a02, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff83, - 0x20ec83, - 0x241d03, - 0xcd588, - 0x20be03, - 0x237583, - 0x20ec83, - 0x241d03, - 0x1a9c3, - 0x30e843, - 0x6ff84, - 0x200742, - 0x2b6c03, - 0x1be0be03, - 0x2394c7, - 0x30e843, - 0x20f003, - 0x226444, - 0x20ec83, - 0x241d03, - 0x22d50a, - 0x3a25c5, - 0x219543, - 0x20e982, - 0xcd588, - 0xcd588, - 0x2c42, - 0x129242, - 0x1c74660b, - 0x5fc5, - 0x1f8c5, - 0xf9fc6, - 0x1221c4, - 0x121b83, - 0xf45, - 0x117485, - 0xcd588, - 0x1c787, - 0xbe03, - 0x1ce41447, - 0x143146, - 0x1d149445, - 0x143207, - 0xf84a, - 0xf708, - 0x13407, - 0x68348, - 0x98647, - 0xf28f, - 0x47f87, - 0x4e786, - 0x12e350, - 0x12cf0f, - 0x1c009, - 0x106684, - 0x1d5432ce, - 0xa978c, - 0xf420a, - 0x785c7, - 0xd9f8a, - 0x11e909, - 0xada0c, - 0x1bdf0a, - 0x5cc0a, - 0xf89, - 0x106606, - 0x7868a, - 0x11d84a, - 0x9a209, - 0xd1fc8, - 0xd22c6, - 0xd6c0d, - 0xb7cc5, - 0xab07, - 0xfb709, - 0x1a3207, - 0x10bd94, - 0xfdb4b, - 0x7e78a, - 0xa358d, - 0xf283, - 0xf283, - 0x29546, - 0xf283, - 0xb6c03, - 0xcd588, - 0x2c42, - 0x54a04, - 0x5da83, - 0xf5805, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x205583, - 0x20be03, - 0x237583, - 0x203d43, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x294a83, - 0x203f83, - 0x205583, - 0x28b304, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x235cc3, - 0x20be03, - 0x237583, - 0x208883, - 0x203d43, - 0x30e843, - 0x26ff84, - 0x3c32c3, - 0x20be83, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x219543, - 0x20c283, - 0x1f20be03, - 0x237583, - 0x24e683, - 0x30e843, - 0x211343, - 0x20be83, - 0x241d03, - 0x2057c3, - 0x317f04, - 0xcd588, - 0x1fa0be03, - 0x237583, - 0x2a77c3, - 0x30e843, - 0x21f743, - 0x226444, - 0x20ec83, - 0x241d03, - 0x232f43, - 0xcd588, - 0x2020be03, - 0x237583, - 0x203d43, - 0x20ae43, - 0x241d03, - 0xcd588, - 0x14328c7, - 0x2b6c03, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff84, - 0x226444, - 0x20ec83, - 0x241d03, - 0x142f49, - 0x117485, - 0x15da87, - 0x10bfcb, - 0xd2f44, - 0xb7cc5, - 0x1455908, - 0xa7e0d, - 0x21676405, - 0x8f204, - 0x10ec3, - 0xf5e85, - 0x31cc45, - 0xcd588, - 0xf282, - 0x3a283, - 0xefec6, - 0x31b0c8, - 0x397247, - 0x28b304, - 0x346046, - 0x3699c6, - 0xcd588, - 0x312ec3, - 0x23aec9, - 0x265555, - 0x6555f, - 0x20be03, - 0x3ba052, - 0x10db06, - 0x14fc85, - 0x12c4a, - 0x2e449, - 0x3b9e0f, - 0x2d2484, - 0x225285, - 0x2fdfd0, - 0x38cb87, - 0x20ae43, - 0x310f08, - 0x157146, - 0x2a47ca, - 0x22d244, - 0x2e8943, - 0x3a25c6, - 0x20e982, - 0x3987cb, - 0xae43, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x2f0ec3, - 0x202c42, - 0xee203, - 0x20ec83, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x20f003, - 0x227b03, - 0x241d03, - 0x202c42, - 0x20be03, - 0x237583, - 0x20ec83, - 0xae43, - 0x241d03, - 0x200742, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x1f8c5, - 0x28b304, - 0x20be03, - 0x237583, - 0x21a484, - 0x20ec83, - 0x241d03, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0xaff03, - 0x241d03, - 0x20be03, - 0x237583, - 0x203d43, - 0x204d03, - 0x21f743, - 0x20ec83, - 0xae43, - 0x241d03, - 0x202c42, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x357d43, - 0x3cf83, - 0xf003, - 0x20ec83, - 0x241d03, - 0x31350a, - 0x333049, - 0x3524cb, - 0x352b4a, - 0x35acca, - 0x3686cb, - 0x37bfca, - 0x3825ca, - 0x38bf0a, - 0x38c18b, - 0x3afbc9, - 0x3b1a0a, - 0x3b1d8b, - 0x3bc98b, - 0x3c5b0a, - 0x20be03, - 0x237583, - 0x203d43, - 0x21f743, - 0x20ec83, - 0xae43, - 0x241d03, - 0x18754b, - 0x60308, - 0x14f209, - 0xcd588, - 0x20be03, - 0x266004, - 0x206302, - 0x226444, - 0x201485, - 0x205583, - 0x28b304, - 0x20be03, - 0x23d744, - 0x237583, - 0x254a04, - 0x2d2484, - 0x26ff84, - 0x20be83, - 0x20ec83, - 0x241d03, - 0x252385, - 0x235cc3, - 0x219543, - 0x2b5d83, - 0x2702c4, - 0x2020c4, - 0x3c0885, - 0xcd588, - 0x320f04, - 0x39db46, - 0x2010c4, - 0x202c42, - 0x38fd87, - 0x256087, - 0x252944, - 0x25e5c5, - 0x2dba05, - 0x232585, - 0x26ff84, - 0x27a688, - 0x23c806, - 0x3c5f88, - 0x278185, - 0x2d8345, - 0x251304, - 0x241d03, - 0x2e9484, - 0x367486, - 0x3a26c3, - 0x2702c4, - 0x362205, - 0x26e984, - 0x23fd84, - 0x20e982, - 0x397746, - 0x3a4b06, - 0x301805, - 0x200742, - 0x2b6c03, - 0x27e02c42, - 0x207344, - 0x202542, - 0x21f743, - 0x23a3c2, - 0x20ec83, - 0x200342, - 0x207c03, - 0x203f83, - 0xcd588, - 0xcd588, - 0x30e843, - 0x200742, - 0x28a02c42, - 0x30e843, - 0x2574c3, - 0x3c32c3, - 0x2168c4, - 0x20ec83, - 0x241d03, - 0xcd588, - 0x200742, - 0x29202c42, - 0x20be03, - 0x20ec83, - 0xae43, - 0x241d03, - 0x982, - 0x20c202, - 0x230882, - 0x20f003, - 0x2e2d83, - 0x200742, - 0x117485, - 0xcd588, - 0x15da87, - 0x202c42, - 0x237583, - 0x254a04, - 0x206c03, - 0x30e843, - 0x204d03, - 0x21f743, - 0x20ec83, - 0x207783, - 0x241d03, - 0x2388c3, - 0xb5cd3, - 0x1b9994, - 0x15da87, - 0x102dc6, - 0x5c60b, - 0x29546, - 0x5a3c7, - 0x2809, - 0x195d4a, - 0x8820d, - 0x12078c, - 0x104fca, - 0x14a345, - 0xf888, - 0x7dac6, - 0x6ff06, - 0x157206, - 0x20a6c2, - 0x1c170c, - 0x18c5c7, - 0x282d1, - 0x20be03, - 0x682c5, - 0x8808, - 0x22644, - 0x2a507646, - 0xb3106, - 0xd95c6, - 0x8d5ca, - 0x19dac3, - 0x2aa48c44, - 0x27c5, - 0x15cc83, - 0x2ae38a07, - 0x1aec5, - 0xcbcc, - 0xed348, - 0x6f6cb, - 0x2b25168c, - 0x140d6c3, - 0xb8888, - 0x9db09, - 0x3ff48, - 0x14208c6, - 0x2b76d609, - 0xd7e4a, - 0x10d08, - 0xf9fc8, - 0x1fbc4, - 0x118b45, - 0x6f807, - 0x2ba6f803, - 0x2bf39c86, - 0x2c2e9d04, - 0x2c790207, - 0xf9fc4, - 0xf9fc4, - 0xf9fc4, - 0xf9fc4, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x200742, - 0x202c42, - 0x30e843, - 0x207d02, - 0x20ec83, - 0x241d03, - 0x207c03, - 0x37158f, - 0x37194e, - 0xcd588, - 0x20be03, - 0x49a07, - 0x237583, - 0x30e843, - 0x214bc3, - 0x20ec83, - 0x241d03, - 0x220443, - 0x322887, - 0x203d02, - 0x292889, - 0x200602, - 0x24a2cb, - 0x2cf44a, - 0x28d009, - 0x200182, - 0x3418c6, - 0x235295, - 0x24a415, - 0x236793, - 0x24a993, - 0x203942, - 0x222dc5, - 0x3ab48c, - 0x27410b, - 0x2a2205, - 0x203402, - 0x2f2542, - 0x37e706, - 0x200282, - 0x261bc6, - 0x212ecd, - 0x21ac4c, - 0x228ec4, - 0x200cc2, - 0x2149c2, - 0x310d88, - 0x2023c2, - 0x211446, - 0x35c704, - 0x235455, - 0x236913, - 0x2108c3, - 0x32508a, - 0x20df47, - 0x30eec9, - 0x2d9d07, - 0x314902, - 0x200882, - 0x3b4b46, - 0x2099c2, - 0xcd588, - 0x210702, - 0x200302, - 0x217a07, - 0x336087, - 0x21c485, - 0x2004c2, - 0x2da6c7, - 0x220488, - 0x204002, - 0x2f21c2, - 0x230502, - 0x203cc2, - 0x23e988, - 0x20bf83, - 0x25dc48, - 0x20bf8d, - 0x237c03, - 0x23bc48, - 0x237c0f, - 0x237fce, - 0x38feca, - 0x2d1311, - 0x2d1790, - 0x38360d, - 0x38394c, - 0x3452c7, - 0x325207, - 0x346109, - 0x228fc2, - 0x200782, - 0x25becc, - 0x25c1cb, - 0x203c02, - 0x2b2506, - 0x2010c2, - 0x202642, - 0x2efa02, - 0x202c42, - 0x231fc4, - 0x240647, - 0x230a42, - 0x245207, - 0x2475c7, - 0x21bc02, - 0x21b282, - 0x2498c5, - 0x204ac2, - 0x2e72ce, - 0x2a384d, - 0x237583, - 0x28400e, - 0x3b868d, - 0x348003, - 0x202ec2, - 0x2817c4, - 0x238c42, - 0x202e82, - 0x372a45, - 0x37b407, - 0x24d902, - 0x208882, - 0x254607, - 0x257688, - 0x329982, - 0x29df86, - 0x25bd4c, - 0x25c08b, - 0x212c42, - 0x26208f, - 0x262450, - 0x26284f, - 0x262c15, - 0x263154, - 0x26364e, - 0x2639ce, - 0x263d4f, - 0x26410e, - 0x264494, - 0x264993, - 0x264e4d, - 0x2755c9, - 0x289843, - 0x201802, - 0x215f45, - 0x206c06, - 0x202542, - 0x344e47, - 0x30e843, - 0x201402, - 0x36dfc8, - 0x2d1551, - 0x2d1990, - 0x200c42, - 0x270f87, - 0x205842, - 0x341287, - 0x209602, - 0x348f89, - 0x37e6c7, - 0x2a4b48, - 0x307486, - 0x2e2c83, - 0x326e05, - 0x20e402, - 0x202682, - 0x3b4f45, - 0x3c1485, - 0x200f82, - 0x214d03, - 0x26ea07, - 0x208007, - 0x2085c2, - 0x22e684, - 0x20b4c3, - 0x20b4c9, - 0x20f108, - 0x201542, - 0x204482, - 0x2e3547, - 0x33d705, - 0x293988, - 0x222a87, - 0x201cc3, - 0x298106, - 0x38348d, - 0x38380c, - 0x2e0646, - 0x200482, - 0x26f582, - 0x201e42, - 0x237a8f, - 0x237e8e, - 0x2dba87, - 0x200b82, - 0x3517c5, - 0x3517c6, - 0x203282, - 0x205a02, - 0x28ad86, - 0x292ac3, - 0x3411c6, - 0x2c3ec5, - 0x2c3ecd, - 0x2c4495, - 0x2c4e8c, - 0x2c59cd, - 0x2c5d92, - 0x20d682, - 0x26cd82, - 0x2047c2, - 0x21ce86, - 0x2fc586, - 0x201382, - 0x206c86, - 0x20c502, - 0x20d245, - 0x2013c2, - 0x2a3949, - 0x21d70c, - 0x21da4b, - 0x200342, - 0x258508, - 0x20cb42, - 0x206f02, - 0x271946, - 0x22fb05, - 0x31f507, - 0x250d85, - 0x2982c5, - 0x249a82, - 0x204c02, - 0x20b182, - 0x2dc107, - 0x24f4cd, - 0x24f84c, - 0x34f687, - 0x22bac2, - 0x201f82, - 0x23d488, - 0x343888, - 0x303d48, - 0x30cdc4, - 0x2b4507, - 0x2e3c83, - 0x24e882, - 0x204882, - 0x2e6b09, - 0x2f7387, - 0x2057c2, - 0x271d45, - 0x248602, - 0x209942, - 0x2bca43, - 0x2bca46, - 0x2f0602, - 0x2f1e82, - 0x201442, - 0x3b33c6, - 0x3454c7, - 0x205e42, - 0x200382, - 0x25da8f, - 0x283e4d, - 0x38b8ce, - 0x3b850c, - 0x2017c2, - 0x200502, - 0x3072c5, - 0x311d86, - 0x209002, - 0x208102, - 0x200982, - 0x222a04, - 0x2dcdc4, - 0x3c23c6, - 0x200a02, - 0x2b7307, - 0x231d03, - 0x231d08, - 0x2326c8, - 0x243e07, - 0x2ecbc6, - 0x204042, - 0x23e683, - 0x23e687, - 0x28a8c6, - 0x2f3045, - 0x30d148, - 0x206a42, - 0x341687, - 0x20fd82, - 0x2f4682, - 0x20c142, - 0x2f1149, - 0x20a402, - 0x201742, - 0x24adc3, - 0x325ec7, - 0x2040c2, - 0x21d88c, - 0x21db8b, - 0x2e06c6, - 0x35cbc5, - 0x227882, - 0x201c42, - 0x2ba046, - 0x22e983, - 0x331547, - 0x20cb82, - 0x202a82, - 0x235115, - 0x24a5d5, - 0x236653, - 0x24ab13, - 0x25d207, - 0x274548, - 0x274550, - 0x28744f, - 0x373ad3, - 0x28cdd2, - 0x292450, - 0x2b350f, - 0x2fd6d2, - 0x3af491, - 0x2af493, - 0x3938d2, - 0x2c3b0f, - 0x2cd74e, - 0x2cf252, - 0x2d09d1, - 0x2d3b0f, - 0x2d528e, - 0x2dc811, - 0x2dd7d0, - 0x2ed512, - 0x2f0f51, - 0x2f2206, - 0x2f3907, - 0x38e407, - 0x200d02, - 0x27efc5, - 0x3713c7, - 0x230882, - 0x20f6c2, - 0x22d0c5, - 0x200443, - 0x200446, - 0x24f68d, - 0x24f9cc, - 0x206d02, - 0x3ab30b, - 0x273fca, - 0x22358a, - 0x2b9489, - 0x2e530b, - 0x222bcd, - 0x2fe44c, - 0x2ec88a, - 0x27500c, - 0x294d4b, - 0x2a204c, - 0x2f968b, - 0x2b9e83, - 0x2f4f06, - 0x3b9942, - 0x2f3dc2, - 0x20e343, - 0x201ac2, - 0x207203, - 0x24ec86, - 0x262dc7, - 0x2ad706, - 0x2f6b48, - 0x343588, - 0x2ca146, - 0x211d82, - 0x3011cd, - 0x30150c, - 0x2d2547, - 0x304e07, - 0x23c242, - 0x219742, - 0x23e602, - 0x257a42, - 0x202c42, - 0x20ec83, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x226444, - 0x20ec83, - 0x241d03, - 0x207c03, - 0x200742, - 0x201482, - 0x2e68ecc5, - 0x2ea8e4c5, - 0x2efb3086, - 0xcd588, - 0x2f2afb05, - 0x202c42, - 0x209d42, - 0x2f726285, - 0x2fa7cb85, - 0x2fe7d647, - 0x302867c9, - 0x30667d84, - 0x202542, - 0x201402, - 0x30b0dec5, - 0x30e95f49, - 0x31327988, - 0x316ac205, - 0x31af0707, - 0x31e21cc8, - 0x322def85, - 0x3266d246, - 0x32b6d849, - 0x32ed4ec8, - 0x332bf988, - 0x3369658a, - 0x33a75e04, - 0x33f7c545, - 0x342bc308, - 0x34727e05, - 0x217f42, - 0x34a061c3, - 0x34ea2606, - 0x35311408, - 0x356eee46, - 0x35b643c8, - 0x35eb6306, - 0x363c2f44, - 0x2032c2, - 0x366f1587, - 0x36aa8644, - 0x36e77e87, - 0x3723ecc7, - 0x200342, - 0x3769ae85, - 0x37a403c4, - 0x37ee1787, - 0x383a3387, - 0x38681606, - 0x38a7d205, - 0x38e96047, - 0x392e5a48, - 0x396162c7, - 0x39b94949, - 0x39ec51c5, - 0x3a2b4107, - 0x3a68e306, - 0x3aa941c8, - 0x227d8d, - 0x251989, - 0x272fcb, - 0x27ac8b, - 0x2a78cb, - 0x2da98b, - 0x311f8b, - 0x31224b, - 0x312889, - 0x31378b, - 0x313a4b, - 0x313fcb, - 0x314c8a, - 0x3151ca, - 0x3157cc, - 0x31938b, - 0x319dca, - 0x33080a, - 0x33b28e, - 0x33be8e, - 0x33c20a, - 0x33e14a, - 0x33eb4b, - 0x33ee0b, - 0x33fa8b, - 0x35edcb, - 0x35f3ca, - 0x36008b, - 0x36034a, - 0x3605ca, - 0x36084a, - 0x37d74b, - 0x3856cb, - 0x388f8e, - 0x38930b, - 0x391f4b, - 0x392e0b, - 0x39a6ca, - 0x39a949, - 0x39ab8a, - 0x39c6ca, - 0x3b06cb, - 0x3b204b, - 0x3b2a0a, - 0x3b390b, - 0x3b904b, - 0x3c554b, - 0x3ae7fd48, - 0x3b287989, - 0x3b69d989, - 0x3bad8988, - 0x34c805, - 0x200583, - 0x22a3c4, - 0x217c05, - 0x267ac6, - 0x26cfc5, - 0x286284, - 0x344d48, - 0x30b505, - 0x290604, - 0x2064c7, - 0x29cf0a, - 0x266b4a, - 0x2dbb87, - 0x20c4c7, - 0x2fd2c7, - 0x282187, - 0x2f8c45, - 0x3b6e46, - 0x386007, - 0x244e44, - 0x2df546, - 0x2df446, - 0x204745, - 0x3389c4, - 0x2975c6, - 0x29bfc7, - 0x22df06, - 0x27c8c7, - 0x250803, - 0x3912c6, - 0x234f05, - 0x27d747, - 0x26a84a, - 0x26e7c4, - 0x21bd88, - 0x2b8a49, - 0x2e0d07, - 0x319c46, - 0x258788, - 0x2ef589, - 0x30f084, - 0x33a484, - 0x29ef05, - 0x2ba648, - 0x2c2807, - 0x2b3e49, - 0x22dc08, - 0x2f2306, - 0x310806, - 0x297f88, - 0x362bc6, - 0x28e4c5, - 0x2816c6, - 0x278988, - 0x237986, - 0x25af0b, - 0x2c7c06, - 0x299b0d, - 0x369405, - 0x2a8506, - 0x21f085, - 0x331b49, - 0x3a6cc7, - 0x318308, - 0x2a1e46, - 0x298d89, - 0x33ffc6, - 0x26a7c5, - 0x24c486, - 0x288b86, - 0x2c6e49, - 0x31e2c6, - 0x29cc07, - 0x245e85, - 0x203983, - 0x25b085, - 0x299dc7, - 0x3ab746, - 0x369309, - 0x3b3086, - 0x26b146, - 0x213fc9, - 0x2810c9, - 0x29fac7, - 0x200908, - 0x2b2f49, - 0x27ec48, - 0x330a46, - 0x2d1d85, - 0x240c8a, - 0x26b1c6, - 0x239346, - 0x2cac05, - 0x2d4888, - 0x22b287, - 0x233f0a, - 0x254f86, - 0x251dc5, - 0x3324c6, - 0x224507, - 0x319b07, - 0x2835c5, - 0x26a985, - 0x395a06, - 0x3b8c06, - 0x2fa846, - 0x2bc7c4, - 0x280449, - 0x288806, - 0x2c814a, - 0x227248, - 0x36fd08, - 0x266b4a, - 0x212505, - 0x29bf05, - 0x2dd048, - 0x2c9688, - 0x233907, - 0x2ba946, - 0x32bf88, - 0x309507, - 0x27f348, - 0x2b5706, - 0x281e48, - 0x295586, - 0x278307, - 0x33a206, - 0x2975c6, - 0x22ecca, - 0x232046, - 0x2d1d89, - 0x2ee586, - 0x35c00a, - 0x3c2f49, - 0x27dd86, - 0x2b8304, - 0x21600d, - 0x287c07, - 0x239c06, - 0x2bf845, - 0x340045, - 0x37f306, - 0x2e15c9, - 0x2d4407, - 0x279406, - 0x306886, - 0x286309, - 0x2a3204, - 0x242544, - 0x3c2a88, - 0x24f046, - 0x271348, - 0x2e8008, - 0x29f447, - 0x3b6589, - 0x2faa47, - 0x2af9ca, - 0x2e79cf, - 0x31194a, - 0x3070c5, - 0x278bc5, - 0x218b05, - 0x35c647, - 0x2240c3, - 0x200b08, - 0x21e646, - 0x21e749, - 0x2d8646, - 0x2c8547, - 0x298b49, - 0x318208, - 0x2cacc7, - 0x30eb43, - 0x34c885, - 0x224045, - 0x2bc60b, - 0x327ec4, - 0x2d6884, - 0x276bc6, - 0x30f407, - 0x38f4ca, - 0x206247, - 0x20c347, - 0x27cb85, - 0x3c6485, - 0x282609, - 0x2975c6, - 0x2060cd, - 0x31e505, - 0x2b18c3, - 0x20b003, - 0x3a4d45, - 0x351305, - 0x258788, - 0x27a347, - 0x2422c6, - 0x29d606, - 0x22de05, - 0x237847, - 0x3c1d47, - 0x23c6c7, - 0x37c5ca, - 0x391388, - 0x2bc7c4, - 0x257bc7, - 0x27bb07, - 0x33f086, - 0x2692c7, - 0x2a1808, - 0x395f08, - 0x329b06, - 0x20c708, - 0x2cfbc4, - 0x386006, - 0x370d86, - 0x36bd46, - 0x277806, - 0x29b244, - 0x282246, - 0x2be246, - 0x297986, - 0x2060c6, - 0x20aec6, - 0x2a1646, - 0x2421c8, - 0x385a88, - 0x2cdac8, - 0x26d1c8, - 0x2dcfc6, - 0x212305, - 0x39e746, - 0x2ac285, - 0x396f87, - 0x22dcc5, - 0x213c03, - 0x38e045, - 0x33dd04, - 0x20b005, - 0x247643, - 0x33c4c7, - 0x30d708, - 0x27c986, - 0x2c930d, - 0x278b86, - 0x296f45, - 0x222083, - 0x2bbcc9, - 0x2a3386, - 0x291706, - 0x271e04, - 0x3118c7, - 0x23a1c6, - 0x2d46c5, - 0x21af83, - 0x3be4c4, - 0x27bcc6, - 0x3b6f44, - 0x370e88, - 0x3459c9, - 0x2317c9, - 0x29ed0a, - 0x2a05cd, - 0x2118c7, - 0x2391c6, - 0x20f984, - 0x2867c9, - 0x284ac8, - 0x287806, - 0x241906, - 0x2692c7, - 0x2d9346, - 0x22a046, - 0x347086, - 0x23ed4a, - 0x221cc8, - 0x22f885, - 0x2a2fc9, - 0x27f84a, - 0x2ff648, - 0x29b6c8, - 0x291688, - 0x29d24c, - 0x3124c5, - 0x29d888, - 0x385d86, - 0x24c9c6, - 0x35eb07, - 0x206145, - 0x281845, - 0x231689, - 0x2139c7, - 0x21e705, - 0x22aec7, - 0x20b003, - 0x2c2d45, - 0x2151c8, - 0x280d47, - 0x29b589, - 0x2e9f85, - 0x33e384, - 0x2a0288, - 0x2f16c7, - 0x2cae88, - 0x3aac88, - 0x2e1dc5, - 0x21e546, - 0x29d706, - 0x3a7009, - 0x2cb3c7, - 0x2ac8c6, - 0x206e87, - 0x239fc3, - 0x267d84, - 0x2cfcc5, - 0x2f3f84, - 0x246804, - 0x27ffc7, - 0x340d87, - 0x26dc84, - 0x29b3d0, - 0x31d507, - 0x3c6485, - 0x2561cc, - 0x224a04, - 0x2c4c88, - 0x278209, - 0x375886, - 0x240088, - 0x21ca84, - 0x276ec8, - 0x234506, - 0x22eb48, - 0x29a086, - 0x28854b, - 0x38ddc5, - 0x2cfb48, - 0x2173c4, - 0x345e0a, - 0x29b589, - 0x33a106, - 0x218bc8, - 0x25ed85, - 0x31dec4, - 0x2c4b86, - 0x23c588, - 0x27fd48, - 0x32c806, - 0x3c2344, - 0x240c06, - 0x2faac7, - 0x277d87, - 0x2692cf, - 0x205847, - 0x27de47, - 0x351685, - 0x35e345, - 0x29f789, - 0x382e46, - 0x27d885, - 0x2813c7, - 0x3934c8, - 0x2c7645, - 0x33a206, - 0x227088, - 0x2eee4a, - 0x3bf088, - 0x28ab07, - 0x2e7e06, - 0x2a2f86, - 0x202583, - 0x20de03, - 0x27fa09, - 0x2b2dc9, - 0x2c4a86, - 0x2e9f85, - 0x36bac8, - 0x218bc8, - 0x362d48, - 0x34710b, - 0x2c9547, - 0x309149, - 0x269548, - 0x350284, - 0x318648, - 0x28c889, - 0x2acbc5, - 0x35c547, - 0x267e05, - 0x27fc48, - 0x28eb4b, - 0x295d90, - 0x2a8145, - 0x21730c, - 0x242485, - 0x27cc03, - 0x2b1d06, - 0x2bd884, - 0x2404c6, - 0x29bfc7, - 0x227104, - 0x248688, - 0x2009cd, - 0x2dfc05, - 0x211904, - 0x28f244, - 0x28f249, - 0x2ae548, - 0x31bc47, - 0x234588, - 0x280508, - 0x279705, - 0x21f2c7, - 0x279687, - 0x23ac87, - 0x26a989, - 0x346dc9, - 0x272146, - 0x383b46, - 0x269506, - 0x33b6c5, - 0x3aa4c4, - 0x3bd646, - 0x3c4c46, - 0x279748, - 0x2241cb, - 0x26e687, - 0x20f984, - 0x23a106, - 0x2a1b47, - 0x335405, - 0x3583c5, - 0x223884, - 0x346d46, - 0x3bd6c8, - 0x2867c9, - 0x2091c6, - 0x2848c8, - 0x2d4786, - 0x350908, - 0x2ce58c, - 0x2795c6, - 0x296c0d, - 0x29708b, - 0x29ccc5, - 0x3c1e87, - 0x31e3c6, - 0x3199c8, - 0x2721c9, - 0x329dc8, - 0x3c6485, - 0x208947, - 0x27ed48, - 0x24ff89, - 0x2a5586, - 0x24da8a, - 0x319748, - 0x329c0b, - 0x2ccd8c, - 0x276fc8, - 0x27b286, - 0x21dfc8, - 0x2eeac7, - 0x205989, - 0x2f084d, - 0x2974c6, - 0x31dd48, - 0x385949, - 0x2bc8c8, - 0x281f48, - 0x2bec8c, - 0x2bff87, - 0x2c0a47, - 0x26a7c5, - 0x2b4807, - 0x393388, - 0x2c4c06, - 0x20904c, - 0x2ec1c8, - 0x2c8c48, - 0x250286, - 0x223dc7, - 0x272344, - 0x26d1c8, - 0x2b6d0c, - 0x28430c, - 0x307145, - 0x2047c7, - 0x3c22c6, - 0x223d46, - 0x331d08, - 0x367784, - 0x22df0b, - 0x2b744b, - 0x2e7e06, - 0x200847, - 0x322385, - 0x271285, - 0x22e046, - 0x25ed45, - 0x327e85, - 0x2c6c87, - 0x270a09, - 0x3b8dc4, - 0x25f405, - 0x2de045, - 0x2add08, - 0x2da405, - 0x287109, - 0x2c9ac7, - 0x2c9acb, - 0x24fbc6, - 0x241f09, - 0x338908, - 0x291f85, - 0x23ad88, - 0x346e08, - 0x2570c7, - 0x208e47, - 0x280049, - 0x22ea87, - 0x2aa389, - 0x2b7dcc, - 0x394848, - 0x2d4d09, - 0x2d6447, - 0x2805c9, - 0x340ec7, - 0x2cce88, - 0x3b6745, - 0x385f86, - 0x2bf888, - 0x30d3c8, - 0x27f709, - 0x327ec7, - 0x256d85, - 0x2301c9, - 0x201c46, - 0x28e304, - 0x326006, - 0x311288, - 0x328747, - 0x2243c8, - 0x20c7c9, - 0x325b87, - 0x29d0c6, - 0x3c1f44, - 0x38e0c9, - 0x21f148, - 0x250147, - 0x2adf86, - 0x224106, - 0x2392c4, - 0x26d846, - 0x20af83, - 0x38d949, - 0x38dd86, - 0x20ca45, - 0x29d606, - 0x2c7205, - 0x27f1c8, - 0x2ee987, - 0x2eb146, - 0x3262c6, - 0x36fd08, - 0x29f907, - 0x297505, - 0x29b1c8, - 0x3b2448, - 0x319748, - 0x242345, - 0x386006, - 0x231589, - 0x3a6e84, - 0x2c708b, - 0x229d4b, - 0x22f789, - 0x20b003, - 0x25cf45, - 0x22abc6, - 0x242cc8, - 0x34e904, - 0x27c986, - 0x37c709, - 0x2f0405, - 0x2c6bc6, - 0x2f16c6, - 0x20c984, - 0x2a86ca, - 0x20c988, - 0x30d3c6, - 0x2934c5, - 0x331287, - 0x351547, - 0x21e544, - 0x229f87, - 0x22dc84, - 0x22dc86, - 0x200b43, - 0x26a985, - 0x37dc85, - 0x364648, - 0x257d85, - 0x279309, - 0x26d007, - 0x26d00b, - 0x2a240c, - 0x2a2a0a, - 0x2f0707, - 0x205c83, - 0x2ebcc8, - 0x242505, - 0x2c76c5, - 0x34c944, - 0x2ccd86, - 0x278206, - 0x26d887, - 0x23f8cb, - 0x29b244, - 0x2d7404, - 0x2c2784, - 0x2c6986, - 0x227104, - 0x2ba748, - 0x34c745, - 0x258a45, - 0x362c87, - 0x3c1f89, - 0x351305, - 0x37f30a, - 0x245d89, - 0x2d698a, - 0x23ee89, - 0x3a5104, - 0x306945, - 0x2d9448, - 0x2e184b, - 0x29ef05, - 0x2f3206, - 0x247684, - 0x279846, - 0x325a09, - 0x2a1c47, - 0x3b3248, - 0x2a0946, - 0x2faa47, - 0x27fd48, - 0x37f886, - 0x334f84, - 0x371c87, - 0x361205, - 0x373507, - 0x21c984, - 0x31e346, - 0x2e5bc8, - 0x297248, - 0x2e44c7, - 0x24e388, - 0x295645, - 0x20ae44, - 0x266a48, - 0x24e484, - 0x208e45, - 0x2f8e44, - 0x309607, - 0x2888c7, - 0x280708, - 0x2cb006, - 0x257d05, - 0x279108, - 0x3bf288, - 0x29ec49, - 0x22a046, - 0x233f88, - 0x345c8a, - 0x335488, - 0x2def85, - 0x225446, - 0x245c48, - 0x208a0a, - 0x229207, - 0x285dc5, - 0x28e508, - 0x2cc2c4, - 0x2d4906, - 0x2c0dc8, - 0x20aec6, - 0x31fc48, - 0x25b247, - 0x2063c6, - 0x2b8304, - 0x2a6b87, - 0x2b0d44, - 0x3259c7, - 0x2a524d, - 0x22f805, - 0x2e13cb, - 0x284586, - 0x258608, - 0x248644, - 0x2ee246, - 0x27bcc6, - 0x21e307, - 0x2968cd, - 0x24b947, - 0x2b1808, - 0x286985, - 0x364e48, - 0x2c2786, - 0x2956c8, - 0x354486, - 0x336b47, - 0x2c5689, - 0x353e07, - 0x287ac8, - 0x2733c5, - 0x21c508, - 0x223c85, - 0x2f7505, - 0x23f105, - 0x24c4c3, - 0x277884, - 0x28e705, - 0x36d849, - 0x36b906, - 0x2a1908, - 0x208c05, - 0x2b46c7, - 0x29f14a, - 0x2c6b09, - 0x288a8a, - 0x2cdb48, - 0x22ad0c, - 0x28144d, - 0x34a703, - 0x31fb48, - 0x3be485, - 0x2eec06, - 0x318086, - 0x2deac5, - 0x206f89, - 0x3ab885, - 0x279108, - 0x25e046, - 0x3532c6, - 0x2a0149, - 0x3a0f87, - 0x28ee06, - 0x29f0c8, - 0x36bc48, - 0x2d8b87, - 0x2be3ce, - 0x2c29c5, - 0x24fe85, - 0x20adc8, - 0x3269c7, - 0x208f82, - 0x2be804, - 0x2403ca, - 0x250208, - 0x346f46, - 0x298c88, - 0x29d706, - 0x31da88, - 0x2ac8c8, - 0x2f74c4, - 0x2b4a85, - 0x6010c4, - 0x6010c4, - 0x6010c4, - 0x200a43, - 0x223f86, - 0x2795c6, - 0x29c98c, - 0x201343, - 0x21c986, - 0x200b04, - 0x2a3308, - 0x37c545, - 0x2404c6, - 0x2bc408, - 0x2cef86, - 0x2eb0c6, - 0x339f08, - 0x2cfd47, - 0x22e849, - 0x2a714a, - 0x211644, - 0x22dcc5, - 0x2b3e05, - 0x2c5406, - 0x211906, - 0x29c706, - 0x2f8686, - 0x22e984, - 0x22e98b, - 0x22d744, - 0x242085, - 0x2ab5c5, - 0x29f506, - 0x369808, - 0x281307, - 0x38dd04, - 0x2076c3, - 0x2cbdc5, - 0x22dac7, - 0x28120b, - 0x364547, - 0x2bc308, - 0x2b4bc7, - 0x26be06, - 0x251c48, - 0x26f24b, - 0x217b46, - 0x216b09, - 0x26f3c5, - 0x30eb43, - 0x2c6bc6, - 0x25b148, - 0x20c843, - 0x22dbc3, - 0x27fd46, - 0x29d706, - 0x36808a, - 0x27b2c5, - 0x27bb0b, - 0x29d54b, - 0x247b03, - 0x220043, - 0x2af944, - 0x2a88c7, - 0x25b1c4, - 0x240084, - 0x385c04, - 0x335788, - 0x293408, - 0x20dd89, - 0x2c5248, - 0x23f387, - 0x2060c6, - 0x2a154f, - 0x2c2b06, - 0x2cd084, - 0x29324a, - 0x22d9c7, - 0x2b0e46, - 0x28e349, - 0x20dd05, - 0x364785, - 0x20de46, - 0x21c643, - 0x2cc309, - 0x221e46, - 0x20c589, - 0x38f4c6, - 0x26a985, - 0x307545, - 0x205843, - 0x2a8a08, - 0x31be07, - 0x21e644, - 0x2a3188, - 0x24c744, - 0x39a286, - 0x2b1d06, - 0x2445c6, - 0x2cfa09, - 0x2c7645, - 0x2975c6, - 0x21afc9, - 0x393086, - 0x2a1646, - 0x395846, - 0x203a45, - 0x2f8e46, - 0x336b44, - 0x3b6745, - 0x2bf884, - 0x2b2206, - 0x31e4c4, - 0x200d03, - 0x284b85, - 0x238888, - 0x2509c7, - 0x34e989, - 0x285cc8, - 0x297d51, - 0x2f174a, - 0x2e7d47, - 0x396246, - 0x200b04, - 0x2bf988, - 0x26d9c8, - 0x297f0a, - 0x286ecd, - 0x24c486, - 0x33a006, - 0x2a6c46, - 0x283447, - 0x2b18c5, - 0x341987, - 0x2009c5, - 0x2c9c04, - 0x2a7586, - 0x26d6c7, - 0x2cc00d, - 0x245b87, - 0x344c48, - 0x279409, - 0x225346, - 0x2a5505, - 0x2fa084, - 0x311386, - 0x21e446, - 0x250386, - 0x299508, - 0x21d683, - 0x208d83, - 0x341f45, - 0x257e46, - 0x2ac885, - 0x2a0b48, - 0x29c18a, - 0x39e284, - 0x2a3308, - 0x291688, - 0x29f347, - 0x208cc9, - 0x2bc008, - 0x286847, - 0x385e86, - 0x20aeca, - 0x311408, - 0x3a6b09, - 0x2ae608, - 0x228089, - 0x396107, - 0x2fea85, - 0x347306, - 0x2c4a88, - 0x27a888, - 0x28de08, - 0x38ab08, - 0x242085, - 0x203bc4, - 0x236ec8, - 0x209784, - 0x23ec84, - 0x26a985, - 0x290647, - 0x3c1d49, - 0x21e107, - 0x214045, - 0x276dc6, - 0x35bc86, - 0x211a84, - 0x2a0486, - 0x257b44, - 0x2a11c6, - 0x3c1b06, - 0x2181c6, - 0x3c6485, - 0x2a0a07, - 0x205c83, - 0x216e89, - 0x36fb08, - 0x2866c4, - 0x2866cd, - 0x297348, - 0x2ddc88, - 0x3a6a86, - 0x2c5789, - 0x2c6b09, - 0x325705, - 0x29c28a, - 0x252a0a, - 0x25e6cc, - 0x25e846, - 0x277c06, - 0x2c2c86, - 0x372b09, - 0x2eee46, - 0x29f946, - 0x3ab946, - 0x26d1c8, - 0x24e386, - 0x2cca0b, - 0x2907c5, - 0x258a45, - 0x277e85, - 0x3c2806, - 0x20ae83, - 0x244546, - 0x245b07, - 0x2bf845, - 0x3108c5, - 0x340045, - 0x2f83c6, - 0x3257c4, - 0x327886, - 0x2bad89, - 0x3c268c, - 0x2c9948, - 0x23c504, - 0x2f8b46, - 0x284686, - 0x25b148, - 0x218bc8, - 0x3c2589, - 0x331287, - 0x24ed89, - 0x37ba46, - 0x230604, - 0x20d804, - 0x280344, - 0x27fd48, - 0x3c1b8a, - 0x351286, - 0x35e207, - 0x36e207, - 0x242005, - 0x2b3dc4, - 0x28c846, - 0x2b1906, - 0x23a283, - 0x36f947, - 0x3aab88, - 0x32584a, - 0x22ca48, - 0x3643c8, - 0x31e505, - 0x29cdc5, - 0x26e785, - 0x2423c6, - 0x243286, - 0x340cc5, - 0x38db89, - 0x2b3bcc, - 0x26e847, - 0x297f88, - 0x2dee05, - 0x6010c4, - 0x24d184, - 0x280e84, - 0x21b846, - 0x29e4ce, - 0x364807, - 0x283645, - 0x3a6e0c, - 0x2f8f47, - 0x26d647, - 0x2f4449, - 0x21be49, - 0x285dc5, - 0x36fb08, - 0x231589, - 0x319605, - 0x2bf788, - 0x221fc6, - 0x266cc6, - 0x3c2f44, - 0x28b688, - 0x225503, - 0x3875c4, - 0x2cbe45, - 0x388307, - 0x228785, - 0x345b49, - 0x2ab04d, - 0x2b0486, - 0x207704, - 0x2ba8c8, - 0x27084a, - 0x228b87, - 0x31ce85, - 0x23b3c3, - 0x29d70e, - 0x2a8b0c, - 0x2ff747, - 0x29e687, - 0x217b83, - 0x2eee85, - 0x280e85, - 0x299048, - 0x2963c9, - 0x23c406, - 0x25b1c4, - 0x2e7c86, - 0x23390b, - 0x38320c, - 0x33a8c7, - 0x2cccc5, - 0x3b2348, - 0x2d8945, - 0x293247, - 0x2f1587, - 0x245945, - 0x20ae83, - 0x335ac4, - 0x22a385, - 0x3b8cc5, - 0x3b8cc6, - 0x2b5308, - 0x26d6c7, - 0x318386, - 0x205c06, - 0x23f046, - 0x27e509, - 0x21f3c7, - 0x250646, - 0x383386, - 0x275d06, - 0x2a8605, - 0x3c53c6, - 0x3746c5, - 0x2da488, - 0x28ff4b, - 0x28c586, - 0x36e244, - 0x2e0409, - 0x26d004, - 0x221f48, - 0x326107, - 0x281e44, - 0x2bb308, - 0x2c0844, - 0x2a8644, - 0x286605, - 0x2dfc46, - 0x3356c7, - 0x27f283, - 0x29d185, - 0x32ce84, - 0x24fec6, - 0x325788, - 0x2b6c05, - 0x28fc09, - 0x2303c5, - 0x21c988, - 0x2312c7, - 0x38de88, - 0x2ba487, - 0x27df09, - 0x2820c6, - 0x305706, - 0x2b3084, - 0x2d7345, - 0x300a4c, - 0x277e87, - 0x278a87, - 0x36e0c8, - 0x2b0486, - 0x271484, - 0x30a244, - 0x27fec9, - 0x2c2d86, - 0x282687, - 0x277784, - 0x24d786, - 0x317bc5, - 0x2cab47, - 0x2cc986, - 0x24d949, - 0x383047, - 0x2692c7, - 0x29ffc6, - 0x24d6c5, - 0x27d1c8, - 0x221cc8, - 0x348546, - 0x2b6c45, - 0x349e86, - 0x206543, - 0x298ec9, - 0x29c48e, - 0x2ba1c8, - 0x24c848, - 0x34834b, - 0x28fe46, - 0x211584, - 0x281044, - 0x29c58a, - 0x217207, - 0x250705, - 0x216b09, - 0x2be305, - 0x23ecc7, - 0x24e304, - 0x2a9a47, - 0x2e7f08, - 0x2e0dc6, - 0x24c589, - 0x2bc10a, - 0x217186, - 0x296e86, - 0x2ab545, - 0x3898c5, - 0x347ac7, - 0x24cf08, - 0x317b08, - 0x2f74c6, - 0x3075c5, - 0x21168e, - 0x2bc7c4, - 0x298fc5, - 0x276749, - 0x382c48, - 0x28aa46, - 0x29accc, - 0x29bd90, - 0x29e10f, - 0x29f688, - 0x2f0707, - 0x3c6485, - 0x28e705, - 0x335549, - 0x28e709, - 0x240d06, - 0x29ef87, - 0x2d7245, - 0x34d589, - 0x33f106, - 0x2eec8d, - 0x280209, - 0x240084, - 0x2b9f48, - 0x236f89, - 0x351446, - 0x2ebec5, - 0x305706, - 0x3b3109, - 0x277608, - 0x212305, - 0x28b684, - 0x29ae8b, - 0x351305, - 0x242d46, - 0x281786, - 0x285206, - 0x28f64b, - 0x28fd09, - 0x205b45, - 0x396e87, - 0x2f16c6, - 0x240206, - 0x280c08, - 0x2dfd49, - 0x344a0c, - 0x22d8c8, - 0x308ec6, - 0x32c803, - 0x32a506, - 0x27ddc5, - 0x27be48, - 0x306fc6, - 0x2cad88, - 0x2062c5, - 0x27a585, - 0x365288, - 0x31dc07, - 0x317fc7, - 0x26d887, - 0x240088, - 0x2c5508, - 0x2b1206, - 0x2b2047, - 0x267c47, - 0x28f34a, - 0x256c83, - 0x3c2806, - 0x23c645, - 0x2403c4, - 0x279409, - 0x27de84, - 0x250a44, - 0x29a104, - 0x29e68b, - 0x31bd47, - 0x2118c5, - 0x295348, - 0x276dc6, - 0x276dc8, - 0x27b206, - 0x28b5c5, - 0x28b885, - 0x28d446, - 0x28dbc8, - 0x28e288, - 0x2795c6, - 0x29518f, - 0x298990, - 0x369405, - 0x205c83, - 0x2306c5, - 0x309088, - 0x28e609, - 0x319748, - 0x24c408, - 0x238d88, - 0x31be07, - 0x276a89, - 0x2caf88, - 0x28dac4, - 0x299f88, - 0x2addc9, - 0x2b38c7, - 0x299f04, - 0x21e1c8, - 0x2a07ca, - 0x2aff86, - 0x24c486, - 0x229f09, - 0x29bfc7, - 0x2c83c8, - 0x345608, - 0x294048, - 0x25d345, - 0x38a705, - 0x258a45, - 0x280e45, - 0x37ffc7, - 0x20ae85, - 0x2bf845, - 0x206d86, - 0x319687, - 0x2e1787, - 0x2a0ac6, - 0x2ce085, - 0x242d46, - 0x24c685, - 0x2d70c8, - 0x2ff5c4, - 0x393106, - 0x334e84, - 0x31dec8, - 0x22f10a, - 0x27a34c, - 0x23fac5, - 0x283506, - 0x344bc6, - 0x341e06, - 0x308f44, - 0x317e85, - 0x27b047, - 0x29c049, - 0x2c6f47, - 0x6010c4, - 0x6010c4, - 0x31bbc5, - 0x2cb984, - 0x29a68a, - 0x276c46, - 0x251e84, - 0x204745, - 0x36c3c5, - 0x2b1804, - 0x2813c7, - 0x230347, - 0x2c6988, - 0x31fec8, - 0x212309, - 0x26eec8, - 0x29a84b, - 0x2b7fc4, - 0x37b985, - 0x27d905, - 0x26d809, - 0x2dfd49, - 0x2e0308, - 0x22d748, - 0x29f504, - 0x2846c5, - 0x200583, - 0x2c53c5, - 0x297646, - 0x29620c, - 0x21f046, - 0x2ebdc6, - 0x28acc5, - 0x2f8448, - 0x35ec46, - 0x3963c6, - 0x24c486, - 0x22c7cc, - 0x250544, - 0x23f18a, - 0x28ac08, - 0x296047, - 0x32cd86, - 0x23c4c7, - 0x2e7885, - 0x2adf86, - 0x35aa46, - 0x366207, - 0x250a84, - 0x309705, - 0x276744, - 0x2c9c87, - 0x276988, - 0x277a8a, - 0x27ebc7, - 0x2a8207, - 0x2f0687, - 0x2d8a89, - 0x29620a, - 0x22e943, - 0x250985, - 0x218203, - 0x385c49, - 0x336dc8, - 0x351687, - 0x319849, - 0x221dc6, - 0x3b6808, - 0x33c445, - 0x3bf38a, - 0x200c89, - 0x3299c9, - 0x35eb07, - 0x26dac9, - 0x2180c8, - 0x3663c6, - 0x2836c8, - 0x203a47, - 0x22ea87, - 0x245d87, - 0x2e5a48, - 0x2f89c6, - 0x2a0585, - 0x27b047, - 0x296988, - 0x334e04, - 0x2c8004, - 0x28ed07, - 0x2acc47, - 0x23140a, - 0x366346, - 0x364c4a, - 0x2be747, - 0x2bc587, - 0x3097c4, - 0x2aa444, - 0x2caa46, - 0x23a444, - 0x23a44c, - 0x39ee05, - 0x218a09, - 0x337284, - 0x2b18c5, - 0x2707c8, - 0x239dc5, - 0x37f306, - 0x2311c4, - 0x2d02ca, - 0x2cb2c6, - 0x29180a, - 0x2162c7, - 0x224505, - 0x21c645, - 0x24204a, - 0x28dd45, - 0x29ed06, - 0x209784, - 0x2afac6, - 0x347b85, - 0x307086, - 0x2e44cc, - 0x218d4a, - 0x252b04, - 0x2060c6, - 0x29bfc7, - 0x2cc904, - 0x26d1c8, - 0x2f3106, - 0x211509, - 0x2db609, - 0x394949, - 0x2c7246, - 0x203b46, - 0x283807, - 0x38dac8, - 0x203949, - 0x31bd47, - 0x2954c6, - 0x2faac7, - 0x2a6b05, - 0x2bc7c4, - 0x2833c7, - 0x267e05, - 0x286545, - 0x31f747, - 0x245808, - 0x3b22c6, - 0x2977cd, - 0x29924f, - 0x29d54d, - 0x214084, - 0x238986, - 0x2d0688, - 0x3ab905, - 0x28f508, - 0x256f8a, - 0x240084, - 0x233b46, - 0x2cd107, - 0x2ca387, - 0x2cfe09, - 0x283685, - 0x2b1804, - 0x2b49ca, - 0x2bbbc9, - 0x26dbc7, - 0x297a86, - 0x351446, - 0x284606, - 0x371d46, - 0x2cf6cf, - 0x2d0549, - 0x24e386, - 0x354846, - 0x31ac09, - 0x2b2147, - 0x20be43, - 0x22c946, - 0x20de03, - 0x2de988, - 0x2fa907, - 0x29f889, - 0x2b1b88, - 0x318108, - 0x328006, - 0x21ef89, - 0x399b05, - 0x2b2204, - 0x2e8187, - 0x372b85, - 0x214084, - 0x211988, - 0x2174c4, - 0x2b1e87, - 0x30d686, - 0x395ac5, - 0x2ae608, - 0x35130b, - 0x2b4107, - 0x2422c6, - 0x2c2b84, - 0x2b6286, - 0x26a985, - 0x267e05, - 0x27cf49, - 0x280fc9, - 0x22eac4, - 0x22eb05, - 0x206105, - 0x3bf206, - 0x36fc08, - 0x2bdc86, - 0x3aa9cb, - 0x37570a, - 0x2ba585, - 0x28b906, - 0x39df85, - 0x345405, - 0x29b847, - 0x3c2a88, - 0x24ed84, - 0x39ce86, - 0x28e306, - 0x218287, - 0x30eb04, - 0x27bcc6, - 0x35c745, - 0x35c749, - 0x203d44, - 0x2b3f49, - 0x2795c6, - 0x2c0048, - 0x206105, - 0x36e305, - 0x307086, - 0x344909, - 0x21be49, - 0x2ebe46, - 0x382d48, - 0x2ab188, - 0x39df44, - 0x2b5504, - 0x2b5508, - 0x239d08, - 0x24ee89, - 0x2975c6, - 0x24c486, - 0x32be4d, - 0x27c986, - 0x2ce449, - 0x39e845, - 0x20de46, - 0x2941c8, - 0x3277c5, - 0x267c84, - 0x26a985, - 0x280908, - 0x29a449, - 0x276804, - 0x31e346, - 0x251f0a, - 0x2ff648, - 0x231589, - 0x25890a, - 0x3197c6, - 0x299408, - 0x293005, - 0x28ae88, - 0x2e7905, - 0x221c89, - 0x376189, - 0x23c442, - 0x26f3c5, - 0x2ebf86, - 0x279507, - 0x38c8c5, - 0x30d2c6, - 0x304c08, - 0x2b0486, - 0x2d9309, - 0x278b86, - 0x280a88, - 0x2a9605, - 0x382106, - 0x336c48, - 0x27fd48, - 0x396008, - 0x2f2388, - 0x3c53c4, - 0x21e583, - 0x2d9544, - 0x27edc6, - 0x2a6b44, - 0x24c787, - 0x3962c9, - 0x3c0485, - 0x345606, - 0x22c946, - 0x2b514b, - 0x2b0d86, - 0x293b06, - 0x393208, - 0x310806, - 0x224303, - 0x3c4e83, - 0x2bc7c4, - 0x233e85, - 0x2d45c7, - 0x276988, - 0x27698f, - 0x27af4b, - 0x36fa08, - 0x31e3c6, - 0x36fd0e, - 0x242483, - 0x2d4544, - 0x2b0d05, - 0x2b1686, - 0x28c94b, - 0x290706, - 0x227109, - 0x395ac5, - 0x2eccc8, - 0x20e688, - 0x21bd0c, - 0x29e6c6, - 0x2c5406, - 0x2e9f85, - 0x287888, - 0x27a345, - 0x350288, - 0x29b04a, - 0x29d989, - 0x6010c4, - 0x200742, - 0x3c202c42, - 0x202542, - 0x26ff84, - 0x201e42, - 0x21a484, - 0x2032c2, - 0x200342, - 0x207c02, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x2b6c03, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff84, - 0x20ec83, - 0x241d03, - 0x210143, - 0x28b304, - 0x20be03, - 0x23d744, - 0x237583, - 0x2d2484, - 0x30e843, - 0x38cb87, - 0x21f743, - 0x20ae43, - 0x310f08, - 0x241d03, - 0x2a47cb, - 0x2e8943, - 0x3a25c6, - 0x20e982, - 0x3987cb, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x241d03, - 0x2098c3, - 0x204543, - 0x200742, - 0xcd588, - 0x3574c5, - 0x267e88, - 0x2e2e08, - 0x202c42, - 0x3325c5, - 0x331707, - 0x201b02, - 0x248887, - 0x202542, - 0x256807, - 0x3c0b89, - 0x292bc8, - 0x293ec9, - 0x247342, - 0x269ec7, - 0x329844, - 0x3317c7, - 0x375607, - 0x25fe82, - 0x21f743, - 0x20d682, - 0x2032c2, - 0x200342, - 0x20b182, - 0x200382, - 0x207c02, - 0x2a9105, - 0x24d0c5, - 0x2c42, - 0x37583, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0xaff03, - 0x241d03, - 0x10c43, - 0x781, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff84, - 0x214bc3, - 0x20ec83, - 0xaff03, - 0x241d03, - 0x21a003, - 0x3f0eca46, - 0x6f803, - 0x7f685, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x202c42, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x9482, - 0xcd588, - 0xae43, - 0xaff03, - 0x4cec4, - 0xd8d45, - 0x200742, - 0x3a4c04, - 0x20be03, - 0x237583, - 0x30e843, - 0x3a2f03, - 0x232585, - 0x214bc3, - 0x20f003, - 0x20ec83, - 0x228803, - 0x241d03, - 0x207c03, - 0x2605c3, - 0x203f83, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x202c42, - 0x241d03, - 0xcd588, - 0x30e843, - 0xaff03, - 0xcd588, - 0xaff03, - 0x2b8283, - 0x20be03, - 0x234784, - 0x237583, - 0x30e843, - 0x207d02, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x207d02, - 0x20be83, - 0x20ec83, - 0x241d03, - 0x2e2d83, - 0x207c03, - 0x200742, - 0x202c42, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x3a25c5, - 0x9a2c6, - 0x28b304, - 0x20e982, - 0xcd588, - 0x200742, - 0x20288, - 0x132983, - 0x202c42, - 0x43490186, - 0x12b44, - 0x10bfcb, - 0x41546, - 0x1f847, - 0x237583, - 0x52748, - 0x30e843, - 0xef4c5, - 0xe84, - 0x222003, - 0x56c47, - 0xd4344, - 0x20ec83, - 0xafd44, - 0xaff03, - 0x241d03, - 0x2e9484, - 0xfdb48, - 0x157206, - 0x10d08, - 0x135fc5, - 0x126749, - 0x202c42, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ae43, - 0x241d03, - 0x2e8943, - 0x20e982, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff83, - 0x226444, - 0x20ec83, - 0xae43, - 0x241d03, - 0x20be03, - 0x237583, - 0x2d2484, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x3a25c6, - 0x237583, - 0x30e843, - 0x181c43, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x1f847, - 0xcd588, - 0x30e843, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x45e0be03, - 0x237583, - 0x20ec83, - 0x241d03, - 0xcd588, - 0x200742, - 0x202c42, - 0x20be03, - 0x30e843, - 0x20ec83, - 0x200342, - 0x241d03, - 0x32e147, - 0x23b00b, - 0x205d03, - 0x2409c8, - 0x38d847, - 0x224906, - 0x2c1605, - 0x38e5c9, - 0x21f4c8, - 0x36b4c9, - 0x39b210, - 0x36b4cb, - 0x2f6809, - 0x207503, - 0x22bcc9, - 0x235b46, - 0x235b4c, - 0x357588, - 0x3c02c8, - 0x200289, - 0x2e244e, - 0x3c094b, - 0x34754c, - 0x205583, - 0x27b80c, - 0x205589, - 0x2fbf47, - 0x2374cc, - 0x2ad14a, - 0x253404, - 0x32a08d, - 0x27b6c8, - 0x21014d, - 0x28a7c6, - 0x28b30b, - 0x31d689, - 0x27a747, - 0x3c2c46, - 0x341409, - 0x32538a, - 0x313048, - 0x2e8544, - 0x332e87, - 0x249d47, - 0x277984, - 0x2d9a44, - 0x386dc9, - 0x364209, - 0x215cc8, - 0x2108c5, - 0x2ea8c5, - 0x20d106, - 0x329f49, - 0x25720d, - 0x2f3308, - 0x20d007, - 0x2c1688, - 0x23ce86, - 0x37ce44, - 0x286c45, - 0x203846, - 0x2043c4, - 0x205487, - 0x2081ca, - 0x213904, - 0x2170c6, - 0x217d49, - 0x217d4f, - 0x21870d, - 0x218fc6, - 0x21fe90, - 0x220286, - 0x220807, - 0x221447, - 0x22144f, - 0x222149, - 0x228d46, - 0x22a1c7, - 0x22a1c8, - 0x22b089, - 0x395b88, - 0x2de4c7, - 0x22cf43, - 0x3bcfc6, - 0x3bbb08, - 0x2e270a, - 0x387809, - 0x212743, - 0x331606, - 0x39ccca, - 0x2e4b47, - 0x2fbd8a, - 0x209a8e, - 0x222286, - 0x26f5c7, - 0x21bac6, - 0x205646, - 0x38a50b, - 0x34edca, - 0x309b0d, - 0x203c07, - 0x260648, - 0x260649, - 0x26064f, - 0x34eb0c, - 0x27c0c9, - 0x2d778e, - 0x38cc8a, - 0x293886, - 0x2f9f06, - 0x313ccc, - 0x315a8c, - 0x328308, - 0x353d07, - 0x26d545, - 0x290504, - 0x202c4e, - 0x266f84, - 0x3188c7, - 0x39270a, - 0x3a2a54, - 0x3b92cf, - 0x221608, - 0x3bce88, - 0x33984d, - 0x33984e, - 0x231a09, - 0x232b08, - 0x232b0f, - 0x2371cc, - 0x2371cf, - 0x2386c7, - 0x23dfca, - 0x22c54b, - 0x23f5c8, - 0x242707, - 0x2616cd, - 0x20a286, - 0x32a246, - 0x2443c9, - 0x2a6f88, - 0x249208, - 0x24920e, - 0x23b107, - 0x24b505, - 0x24cc85, - 0x204c44, - 0x224bc6, - 0x215bc8, - 0x322ec3, - 0x397e4e, - 0x261a88, - 0x2ae14b, - 0x301c07, - 0x2f7305, - 0x27b986, - 0x2aab07, - 0x2f4848, - 0x317909, - 0x20a505, - 0x284bc8, - 0x226e06, - 0x39caca, - 0x202b49, - 0x237589, - 0x23758b, - 0x3211c8, - 0x277849, - 0x210986, - 0x36db0a, - 0x2bf50a, - 0x23e1cc, - 0x21e907, - 0x2929ca, - 0x211d0b, - 0x211d19, - 0x30a988, - 0x3a2645, - 0x261886, - 0x26ba89, - 0x358706, - 0x2d340a, - 0x21f6c6, - 0x225784, - 0x2c380d, - 0x323307, - 0x225789, - 0x24e685, - 0x251548, - 0x252509, - 0x252944, - 0x253307, - 0x253308, - 0x253907, - 0x268688, - 0x257887, - 0x205dc5, - 0x25d60c, - 0x25de49, - 0x30590a, - 0x3a0e09, - 0x22bdc9, - 0x37924c, - 0x26004b, - 0x260dc8, - 0x261e88, - 0x265244, - 0x281b08, - 0x283c89, - 0x2ad207, - 0x217f86, - 0x31d907, - 0x3843c9, - 0x335c0b, - 0x2b6107, - 0x3c6847, - 0x216407, - 0x2100c4, - 0x2100c5, - 0x278845, - 0x34c04b, - 0x3ad084, - 0x320d08, - 0x28550a, - 0x226ec7, - 0x35b207, - 0x28c112, - 0x2a10c6, - 0x234106, - 0x2b658e, - 0x2a4a86, - 0x291508, - 0x291a8f, - 0x210508, - 0x38b748, - 0x2bb78a, - 0x2bb791, - 0x2a0d4e, - 0x242a0a, - 0x242a0c, - 0x232d07, - 0x232d10, - 0x3c4cc8, - 0x2a0f45, - 0x2aae0a, - 0x20440c, - 0x29580d, - 0x2fc446, - 0x2fc447, - 0x2fc44c, - 0x30460c, - 0x214bcc, - 0x2ab88b, - 0x3706c4, - 0x211dc4, - 0x388489, - 0x30a2c7, - 0x23dd89, - 0x2bf349, - 0x2ace07, - 0x2acfc6, - 0x2acfc9, - 0x2ad3c3, - 0x2b058a, - 0x31b487, - 0x3491cb, - 0x30998a, - 0x3298c4, - 0x316946, - 0x27ee49, - 0x23a2c4, - 0x39eeca, - 0x2425c5, - 0x2bcbc5, - 0x2bcbcd, - 0x2bcf0e, - 0x2d9685, - 0x32d506, - 0x3a21c7, - 0x25d88a, - 0x37a506, - 0x2e1304, - 0x303707, - 0x246a4b, - 0x23cf47, - 0x3c1a04, - 0x390706, - 0x39070d, - 0x38408c, - 0x20eb46, - 0x2f350a, - 0x27c686, - 0x285788, - 0x354b47, - 0x23618a, - 0x24b386, - 0x203b03, - 0x294346, - 0x3bb988, - 0x38860a, - 0x2cb107, - 0x2cb108, - 0x30df84, - 0x28c687, - 0x201cc8, - 0x2a12c8, - 0x2827c8, - 0x2b130a, - 0x2d8345, - 0x20be87, - 0x242853, - 0x25a706, - 0x21b388, - 0x227609, - 0x248748, - 0x32808b, - 0x318488, - 0x246b84, - 0x365386, - 0x311e06, - 0x2dfa89, - 0x382807, - 0x25d708, - 0x29c806, - 0x31f644, - 0x341d05, - 0x2c7e48, - 0x34398a, - 0x2c3488, - 0x2c8906, - 0x29960a, - 0x3b8e48, - 0x2cc708, - 0x2cd2c8, - 0x2cdd46, - 0x2d0886, - 0x3a08cc, - 0x2d0e10, - 0x29ea45, - 0x210308, - 0x394490, - 0x210310, - 0x39b08e, - 0x3a054e, - 0x3a0554, - 0x3a624f, - 0x3a6606, - 0x321391, - 0x31eb13, - 0x31ef88, - 0x3ab285, - 0x240f08, - 0x387b05, - 0x2da18c, - 0x22cd09, - 0x290349, - 0x22d187, - 0x251309, - 0x24f147, - 0x2f8cc6, - 0x286a47, - 0x2034c5, - 0x210c83, - 0x323089, - 0x2278c9, - 0x381c43, - 0x38c7c4, - 0x326f0d, - 0x347c8f, - 0x31f685, - 0x3175c6, - 0x225a47, - 0x357307, - 0x2f5886, - 0x2f588b, - 0x2a2bc5, - 0x25f106, - 0x2f9d87, - 0x258249, - 0x375d06, - 0x322285, - 0x374e4b, - 0x3be7c6, - 0x229a85, - 0x27dc08, - 0x2b2bc8, - 0x2aec8c, - 0x2aec90, - 0x2ae949, - 0x2bd487, - 0x2d8e4b, - 0x306746, - 0x2de38a, - 0x2df80b, - 0x2e094a, - 0x2e0bc6, - 0x2e2c45, - 0x31b1c6, - 0x2b7048, - 0x22d24a, - 0x3394dc, - 0x2e8a0c, - 0x2e8d08, - 0x3a25c5, - 0x361f87, - 0x209946, - 0x270bc5, - 0x21a846, - 0x2f5a48, - 0x2bbe47, - 0x2e2348, - 0x25a7ca, - 0x225b4c, - 0x20d309, - 0x345787, - 0x222a04, - 0x24cd46, - 0x38b2ca, - 0x2bf445, - 0x2110cc, - 0x213588, - 0x373608, - 0x2238cc, - 0x2dd30c, - 0x329409, - 0x329647, - 0x24398c, - 0x22c044, - 0x2482ca, - 0x3033cc, - 0x27280b, - 0x372f0b, - 0x253786, - 0x258d87, - 0x232f47, - 0x232f4f, - 0x2fce11, - 0x2d5b52, - 0x2590cd, - 0x2590ce, - 0x25940e, - 0x3a6408, - 0x3a6412, - 0x25eb08, - 0x38d487, - 0x2556ca, - 0x355cc8, - 0x2a4a45, - 0x37fe0a, - 0x220607, - 0x316244, - 0x221b83, - 0x378205, - 0x2bba07, - 0x307c47, - 0x295a0e, - 0x399e8d, - 0x39b5c9, - 0x20fd85, - 0x3b00c3, - 0x20ab06, - 0x25f705, - 0x2ae388, - 0x2b9609, - 0x2618c5, - 0x2618cf, - 0x2e2a87, - 0x38e505, - 0x3025ca, - 0x2b1506, - 0x25b949, - 0x2f640c, - 0x2f80c9, - 0x3be506, - 0x28530c, - 0x32c906, - 0x2fb508, - 0x2fba86, - 0x30ab06, - 0x2b0f04, - 0x30d603, - 0x38668a, - 0x216711, - 0x27c28a, - 0x272085, - 0x282347, - 0x25ab47, - 0x201dc4, - 0x201dcb, - 0x293d48, - 0x2ba046, - 0x36e145, - 0x33d8c4, - 0x362109, - 0x202a84, - 0x249047, - 0x300585, - 0x300587, - 0x2b67c5, - 0x3482c3, - 0x38d348, - 0x317c4a, - 0x27f283, - 0x35750a, - 0x3b3486, - 0x26164f, - 0x3b8349, - 0x397dd0, - 0x2effc8, - 0x2c8d49, - 0x296707, - 0x39068f, - 0x319c04, - 0x2d2504, - 0x220106, - 0x34f846, - 0x2d6e8a, - 0x253c06, - 0x352987, - 0x303f48, - 0x304147, - 0x3049c7, - 0x305b8a, - 0x3083cb, - 0x341ac5, - 0x2d5788, - 0x256703, - 0x3b6b0c, - 0x35d60f, - 0x26d34d, - 0x25e287, - 0x39b709, - 0x36de47, - 0x282c48, - 0x3a2c4c, - 0x2c8a48, - 0x2701c8, - 0x31c38e, - 0x333d94, - 0x3342a4, - 0x35308a, - 0x36becb, - 0x24f204, - 0x24f209, - 0x233bc8, - 0x24d305, - 0x3229ca, - 0x261cc7, - 0x31b0c4, - 0x2b6c03, - 0x20be03, - 0x23d744, - 0x237583, - 0x30e843, - 0x26ff84, - 0x214bc3, - 0x21f743, - 0x2d0e06, - 0x226444, - 0x20ec83, - 0x241d03, - 0x219543, - 0x200742, - 0x2b6c03, - 0x202c42, - 0x20be03, - 0x23d744, - 0x237583, - 0x30e843, - 0x214bc3, - 0x2d0e06, - 0x20ec83, - 0x241d03, - 0xcd588, - 0x20be03, - 0x237583, - 0x203d43, - 0x20ec83, - 0xaff03, - 0x241d03, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x226444, - 0x20ec83, - 0x241d03, - 0x200742, - 0x24be43, - 0x202c42, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x203cc2, - 0x24d5c2, - 0x202c42, - 0x20be03, - 0x20b2c2, - 0x201342, - 0x26ff84, - 0x21a484, - 0x227d42, - 0x226444, - 0x200342, - 0x241d03, - 0x219543, - 0x253786, - 0x230882, - 0x204182, - 0x228382, - 0x48610503, - 0x48a32d03, - 0x5b586, - 0x5b586, - 0x28b304, - 0x20ae43, - 0x15a4a, - 0x3ba4c, - 0x121ecc, - 0x7f48d, - 0x117485, - 0x2aa47, - 0x14ec6, - 0x19148, - 0x1c787, - 0x23288, - 0x1807ca, - 0x102c07, - 0x496d2fc5, - 0x133789, - 0x3c00b, - 0x18754b, - 0x1bdd08, - 0xf608a, - 0x8a34e, - 0x144854b, - 0x12b44, - 0x5f246, - 0x8808, - 0x7e948, - 0x3c2c7, - 0x910c7, - 0x78449, - 0x3a347, - 0x67008, - 0x100249, - 0x170bc4, - 0x191e05, - 0x12f34e, - 0xa964d, - 0x1f6c8, - 0x49b64046, - 0x4a564048, - 0x739c8, - 0x12e350, - 0x5978c, - 0x666c7, - 0x66e47, - 0x6abc7, - 0x704c7, - 0xd0c2, - 0x1807, - 0x14ef8c, - 0x11d107, - 0xa4686, - 0xa5a89, - 0xa7708, - 0x552c2, - 0x1342, - 0x3900b, - 0xafdc7, - 0x25589, - 0x52c49, - 0x142188, - 0xb0102, - 0x1970c9, - 0xc9f8a, - 0xc6209, - 0xd3909, - 0xd50c8, - 0xd6007, - 0xd82c9, - 0xda885, - 0xdae90, - 0x138ac6, - 0x14a345, - 0xeb78d, - 0x2bac6, - 0xe3d47, - 0xe9498, - 0x3a6c8, - 0x14640a, - 0x16f02, - 0x5f88d, - 0x1282, - 0x7dac6, - 0x8cc08, - 0x6e308, - 0xcd449, - 0x1be608, - 0x6f98e, - 0xab07, - 0xfe68d, - 0xf26c5, - 0x1588, - 0x1a1e08, - 0xfeec6, - 0xc842, - 0x157206, - 0xdc2, - 0x2c1, - 0x60a07, - 0x8b003, - 0x49ee9d04, - 0x4a294a43, - 0x101, - 0x13d06, - 0x101, - 0x301, - 0x13d06, - 0x8b003, - 0x140e3c5, - 0x253404, - 0x20be03, - 0x254a04, - 0x26ff84, - 0x20ec83, - 0x2274c5, - 0x21a003, - 0x24f3c3, - 0x2f5805, - 0x203f83, - 0x4b60be03, - 0x237583, - 0x30e843, - 0x200541, - 0x21f743, - 0x21a484, - 0x226444, - 0x20ec83, - 0x241d03, - 0x207c03, - 0xcd588, - 0x200742, - 0x2b6c03, - 0x202c42, - 0x20be03, - 0x237583, - 0x203d43, - 0x201342, - 0x26ff84, - 0x214bc3, - 0x21f743, - 0x20ec83, - 0x20ae43, - 0x241d03, - 0x203f83, - 0xcd588, - 0x35d382, - 0x1851c7, - 0x2c42, - 0x141c85, - 0x598cf, - 0x1455908, - 0x10430e, - 0x4c607402, - 0x31a848, - 0x307206, - 0x2c1146, - 0x306b87, - 0x4ca11a42, - 0x4cfb81c8, - 0x21ed8a, - 0x266148, - 0x200602, - 0x31b2c9, - 0x341b07, - 0x217f06, - 0x38d089, - 0x20bfc4, - 0x20e2c6, - 0x2f2904, - 0x270984, - 0x25cf89, - 0x3030c6, - 0x24d185, - 0x2faf45, - 0x2322c7, - 0x2be9c7, - 0x354984, - 0x306dc6, - 0x2ff205, - 0x309485, - 0x39dec5, - 0x2ea687, - 0x301a45, - 0x319149, - 0x336f85, - 0x2f4984, - 0x37a447, - 0x348a0e, - 0x3aaec9, - 0x2b6449, - 0x335246, - 0x2454c8, - 0x2ee34b, - 0x35bd8c, - 0x33b746, - 0x347407, - 0x2afbc5, - 0x2d9a4a, - 0x215dc9, - 0x366f09, - 0x332706, - 0x2f9b45, - 0x383105, - 0x338689, - 0x39e04b, - 0x275e86, - 0x343ec6, - 0x203104, - 0x28bdc6, - 0x24b588, - 0x3bb806, - 0x21d186, - 0x206888, - 0x209347, - 0x209509, - 0x20acc5, - 0xcd588, - 0x291044, - 0x304f44, - 0x210f05, - 0x3a8c49, - 0x226087, - 0x22608b, - 0x2288ca, - 0x22cc45, - 0x4d207a42, - 0x309847, - 0x4d62cf48, - 0x370a47, - 0x383e85, - 0x32654a, - 0x2c42, - 0x2fac0b, - 0x2579ca, - 0x2277c6, - 0x210d83, - 0x2a4f8d, - 0x3aa74c, - 0x3bedcd, - 0x24e2c5, - 0x37dd45, - 0x322f07, - 0x20b2c9, - 0x21ec86, - 0x253a85, - 0x2ced88, - 0x28bcc3, - 0x2e3108, - 0x28bcc8, - 0x2c2107, - 0x30f108, - 0x3aa549, - 0x286d47, - 0x23ab87, - 0x224788, - 0x38ae04, - 0x38ae07, - 0x28a6c8, - 0x353706, - 0x3b544f, - 0x2293c7, - 0x2de646, - 0x329785, - 0x228503, - 0x391c87, - 0x378183, - 0x253e86, - 0x2553c6, - 0x255b06, - 0x28fa05, - 0x268683, - 0x396d48, - 0x379c89, - 0x38eb4b, - 0x255c88, - 0x257545, - 0x258b85, - 0x4db29982, - 0x286b09, - 0x38d707, - 0x25f185, - 0x25ce87, - 0x25e9c6, - 0x371c05, - 0x25f54b, - 0x260dc4, - 0x265d05, - 0x265e47, - 0x275806, - 0x275c45, - 0x281d07, - 0x2829c7, - 0x2e1704, - 0x28990a, - 0x289dc8, - 0x293089, - 0x241245, - 0x364946, - 0x24b74a, - 0x2fae46, - 0x268fc7, - 0x292d4d, - 0x2a2709, - 0x3954c5, - 0x2031c7, - 0x31f148, - 0x336a08, - 0x209ec7, - 0x3be1c6, - 0x21d4c7, - 0x255083, - 0x303044, - 0x36e785, - 0x39fc47, - 0x3a4609, - 0x230cc8, - 0x33dc85, - 0x2363c4, - 0x253d45, - 0x39038d, - 0x211742, - 0x2bd986, - 0x27da06, - 0x2dac0a, - 0x381346, - 0x38b205, - 0x31ffc5, - 0x31ffc7, - 0x39c90c, - 0x27384a, - 0x28ba86, - 0x2c4d85, - 0x28bc06, - 0x28bf47, - 0x28d986, - 0x28f90c, - 0x38d1c9, - 0x4de14187, - 0x291e45, - 0x291e46, - 0x2944c8, - 0x247e85, - 0x2a3505, - 0x2a3c88, - 0x2a3e8a, - 0x4e278142, - 0x4e607c82, - 0x2d7485, - 0x2a6b43, - 0x2461c8, - 0x211b83, - 0x2a4104, - 0x25ba8b, - 0x211b88, - 0x2ce288, - 0x4eb1cb49, - 0x2a8e09, - 0x2a9546, - 0x2aa788, - 0x2aa989, - 0x2ab386, - 0x2ab505, - 0x24e0c6, - 0x2abfc9, - 0x3ac147, - 0x381fc6, - 0x2d8787, - 0x21eb07, - 0x34e204, - 0x4ee3a9c9, - 0x270e08, - 0x3b80c8, - 0x31f887, - 0x2c2f46, - 0x20b0c9, - 0x2f2bc7, - 0x33194a, - 0x364a88, - 0x3be307, - 0x20ed86, - 0x39d28a, - 0x372cc8, - 0x382ac5, - 0x22b9c5, - 0x30b047, - 0x36ac49, - 0x30280b, - 0x314248, - 0x337009, - 0x255f87, - 0x2b868c, - 0x2b8c8c, - 0x2b8f8a, - 0x2b920c, - 0x2c10c8, - 0x2c12c8, - 0x2c14c4, - 0x2c1889, - 0x2c1ac9, - 0x2c1d0a, - 0x2c1f89, - 0x2c22c7, - 0x3b4c4c, - 0x23d386, - 0x3c0708, - 0x2faf06, - 0x37fc46, - 0x3953c7, - 0x3ab0c8, - 0x349c4b, - 0x370907, - 0x35b849, - 0x3782c9, - 0x254b87, - 0x2f2b44, - 0x282487, - 0x2eaf46, - 0x215946, - 0x2f36c5, - 0x3720c8, - 0x290244, - 0x290246, - 0x27370b, - 0x2b0889, - 0x39ddc6, - 0x204cc9, - 0x2ea806, - 0x22e688, - 0x20b4c3, - 0x2f9cc5, - 0x21d2c9, - 0x228b05, - 0x30ae84, - 0x274d06, - 0x3993c5, - 0x259b06, - 0x308747, - 0x331086, - 0x23078b, - 0x36da07, - 0x256e46, - 0x348606, - 0x232386, - 0x354949, - 0x2e474a, - 0x2ba345, - 0x3be8cd, - 0x2a3f86, - 0x2e9106, - 0x397cc6, - 0x285705, - 0x2db187, - 0x2f75c7, - 0x207cce, - 0x21f743, - 0x2c2f09, - 0x358489, - 0x2d9e47, - 0x26c287, - 0x2a1445, - 0x2ae085, - 0x4f386f0f, - 0x2c8f87, - 0x2c9148, - 0x2c9884, - 0x2c9e46, - 0x4f64cd02, - 0x2cdfc6, - 0x2d0e06, - 0x349f8e, - 0x2e2f4a, - 0x3b8946, - 0x2ca24a, - 0x2065c9, - 0x231e85, - 0x344788, - 0x39a146, - 0x29aac8, - 0x3c2dc8, - 0x2a57cb, - 0x306c85, - 0x301ac8, - 0x2069cc, - 0x383d47, - 0x255606, - 0x27c4c8, - 0x224a88, - 0x4fa53982, - 0x20e08b, - 0x3361c9, - 0x21cb09, - 0x39dc47, - 0x38a7c8, - 0x4fe3ca88, - 0x21318b, - 0x342009, - 0x28394d, - 0x24e488, - 0x3518c8, - 0x502056c2, - 0x331404, - 0x50623b82, - 0x2f7e06, - 0x50a0a542, - 0x24fc8a, - 0x204b86, - 0x22e0c8, - 0x2be048, - 0x326cc6, - 0x398b46, - 0x2efd46, - 0x2ae305, - 0x240684, - 0x50e2e604, - 0x34c986, - 0x2a2247, - 0x5121c1c7, - 0x2e1bcb, - 0x348dc9, - 0x37dd8a, - 0x357ec4, - 0x320108, - 0x381d8d, - 0x2e6e49, - 0x2e7088, - 0x2e7709, - 0x2e9484, - 0x22c404, - 0x27d505, - 0x2ee68b, - 0x211b06, - 0x34c7c5, - 0x222449, - 0x306e88, - 0x29fb44, - 0x2d9bc9, - 0x326b05, - 0x2bea08, - 0x23b247, - 0x2b6848, - 0x27f046, - 0x207907, - 0x2d4109, - 0x374fc9, - 0x229b05, - 0x240305, - 0x51607482, - 0x2f4744, - 0x225dc5, - 0x292786, - 0x2f8305, - 0x297b87, - 0x34ca85, - 0x275844, - 0x335306, - 0x253b07, - 0x234fc6, - 0x384305, - 0x20e4c8, - 0x307405, - 0x20ef87, - 0x2154c9, - 0x2b09ca, - 0x34e587, - 0x34e58c, - 0x24d146, - 0x241b89, - 0x244885, - 0x247dc8, - 0x201283, - 0x210945, - 0x2eac05, - 0x257f47, - 0x51a12c02, - 0x398347, - 0x2f3c06, - 0x32fdc6, - 0x2f7f46, - 0x2249c6, - 0x2eb408, - 0x241045, - 0x2de707, - 0x2de70d, - 0x221b83, - 0x221b85, - 0x302387, - 0x398688, - 0x301f45, - 0x219788, - 0x23dc86, - 0x333947, - 0x3c0645, - 0x306d06, - 0x3a4c85, - 0x226bca, - 0x2fe986, - 0x22eec7, - 0x2f04c5, - 0x2ffc87, - 0x303684, - 0x30ae06, - 0x3446c5, - 0x357a0b, - 0x2eadc9, - 0x24bf4a, - 0x229b88, - 0x34c2c8, - 0x34cb8c, - 0x353847, - 0x36f808, - 0x387c08, - 0x394205, - 0x3a684a, - 0x3b00c9, - 0x51e01b42, - 0x3c6646, - 0x222e44, - 0x222e49, - 0x294f49, - 0x276587, - 0x2f9887, - 0x2bf1c9, - 0x285908, - 0x28590f, - 0x21dec6, - 0x2d2c8b, - 0x2f5645, - 0x2f5647, - 0x2f5c49, - 0x25bbc6, - 0x2d9b47, - 0x2d5ec5, - 0x234dc4, - 0x341006, - 0x226244, - 0x2df647, - 0x2ce808, - 0x522f9a48, - 0x2fa1c5, - 0x2fa307, - 0x24eb09, - 0x20de44, - 0x2473c8, - 0x52716788, - 0x201dc4, - 0x235fc8, - 0x3c2d04, - 0x3bebc9, - 0x21b2c5, - 0x52a0e982, - 0x21df05, - 0x2cb8c5, - 0x203008, - 0x238507, - 0x52e02a82, - 0x339e45, - 0x2cc586, - 0x249746, - 0x2f4708, - 0x2f4c88, - 0x2f82c6, - 0x30a146, - 0x385289, - 0x32fd06, - 0x29124b, - 0x3478c5, - 0x355c06, - 0x28e088, - 0x231bc6, - 0x20a386, - 0x219c4a, - 0x2a91ca, - 0x370c85, - 0x241107, - 0x30d0c6, - 0x53206d02, - 0x3024c7, - 0x260505, - 0x24b6c4, - 0x24b6c5, - 0x357dc6, - 0x271a47, - 0x220105, - 0x295004, - 0x2ad5c8, - 0x20a445, - 0x309fc7, - 0x3b1c45, - 0x226b05, - 0x268904, - 0x2abac9, - 0x2ff048, - 0x399286, - 0x2adc46, - 0x201ac6, - 0x536ff908, - 0x2ffb07, - 0x2ffe4d, - 0x30074c, - 0x300d49, - 0x300f89, - 0x53b65c82, - 0x3b7e83, - 0x2228c3, - 0x2eb005, - 0x39fd4a, - 0x32fbc6, - 0x3052c5, - 0x308904, - 0x30890b, - 0x323e4c, - 0x32488c, - 0x324b95, - 0x32754d, - 0x32a68f, - 0x32aa52, - 0x32aecf, - 0x32b292, - 0x32b713, - 0x32bbcd, - 0x32c18d, - 0x32c50e, - 0x32ca8e, - 0x32d2cc, - 0x32d68c, - 0x32dacb, - 0x32de4e, - 0x32e752, - 0x32f98c, - 0x32ff50, - 0x33ba12, - 0x33c68c, - 0x33cd4d, - 0x33d08c, - 0x33f651, - 0x34404d, - 0x34ac8d, - 0x34b28a, - 0x34b50c, - 0x34be0c, - 0x34c4cc, - 0x34ce8c, - 0x350493, - 0x350b10, - 0x350f10, - 0x351acd, - 0x3520cc, - 0x352dc9, - 0x35518d, - 0x3554d3, - 0x356491, - 0x3568d3, - 0x35888f, - 0x358c4c, - 0x358f4f, - 0x35930d, - 0x35990f, - 0x359cd0, - 0x35a74e, - 0x35df0e, - 0x35e490, - 0x35f08d, - 0x35fa0e, - 0x35fd8c, - 0x360d93, - 0x3628ce, - 0x362f50, - 0x363351, - 0x36378f, - 0x363b53, - 0x36580d, - 0x365b4f, - 0x365f0e, - 0x3665d0, - 0x3669c9, - 0x367d10, - 0x36830f, - 0x36898f, - 0x368d52, - 0x369e0e, - 0x36a80d, - 0x36ae8d, - 0x36b1cd, - 0x36c84d, - 0x36cb8d, - 0x36ced0, - 0x36d2cb, - 0x36e54c, - 0x36e8cc, - 0x36eecc, - 0x36f1ce, - 0x37bbd0, - 0x37e012, - 0x37e48b, - 0x37e98e, - 0x37ed0e, - 0x37f58e, - 0x37fa0b, - 0x53f80196, - 0x38104d, - 0x3814d4, - 0x38228d, - 0x386915, - 0x388c4d, - 0x3895cf, - 0x389ccf, - 0x38ee0f, - 0x38f1ce, - 0x38f74d, - 0x391891, - 0x394b8c, - 0x394e8c, - 0x39518b, - 0x39560c, - 0x39654f, - 0x396912, - 0x39950d, - 0x39ae0c, - 0x39b94c, - 0x39bc4d, - 0x39bf8f, - 0x39c34e, - 0x39fa0c, - 0x39ffcd, - 0x3a030b, - 0x3a0bcc, - 0x3a14cd, - 0x3a180e, - 0x3a1b89, - 0x3a3553, - 0x3a3a8d, - 0x3a3dcd, - 0x3a43cc, - 0x3a484e, - 0x3a520f, - 0x3a55cc, - 0x3a58cd, - 0x3a5c0f, - 0x3a5fcc, - 0x3a778c, - 0x3a7b0c, - 0x3a7e0c, - 0x3a84cd, - 0x3a8812, - 0x3a8e8c, - 0x3a918c, - 0x3a9491, - 0x3a98cf, - 0x3a9c8f, - 0x3aa053, - 0x3ac70e, - 0x3aca8f, - 0x3ace4c, - 0x543ad18e, - 0x3ad50f, - 0x3ad8d6, - 0x3ae0d2, - 0x3af8cc, - 0x3b030f, - 0x3b098d, - 0x3b0ccf, - 0x3b108c, - 0x3b138d, - 0x3b16cd, - 0x3b2c8e, - 0x3b3bcc, - 0x3b3ecc, - 0x3b41d0, - 0x3b7211, - 0x3b764b, - 0x3b7a8c, - 0x3b7d8e, - 0x3baa91, - 0x3baece, - 0x3bb24d, - 0x3c338b, - 0x3c3c8f, - 0x3c4794, - 0x25cd82, - 0x25cd82, - 0x2032c3, - 0x25cd82, - 0x2032c3, - 0x25cd82, - 0x2009c2, - 0x24e105, - 0x3ba78c, - 0x25cd82, - 0x25cd82, - 0x2009c2, - 0x25cd82, - 0x294b45, - 0x2b09c5, - 0x25cd82, - 0x25cd82, - 0x200302, - 0x294b45, - 0x328909, - 0x35618c, - 0x25cd82, - 0x25cd82, - 0x25cd82, - 0x25cd82, - 0x24e105, - 0x25cd82, - 0x25cd82, - 0x25cd82, - 0x25cd82, - 0x200302, - 0x328909, - 0x25cd82, - 0x25cd82, - 0x25cd82, - 0x2b09c5, - 0x25cd82, - 0x2b09c5, - 0x35618c, - 0x3ba78c, - 0x2b6c03, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff84, - 0x20ec83, - 0x241d03, - 0x1233c8, - 0x6fac4, - 0xae43, - 0x193708, - 0x200742, - 0x55202c42, - 0x246d03, - 0x252d84, - 0x206c03, - 0x3c24c4, - 0x234106, - 0x2137c3, - 0x2f9084, - 0x2f0b05, - 0x21f743, - 0x20ec83, - 0xaff03, - 0x241d03, - 0x22d50a, - 0x253786, - 0x37f08c, - 0xcd588, - 0x202c42, - 0x20be03, - 0x237583, - 0x30e843, - 0x20be83, - 0x2d0e06, - 0x20ec83, - 0x241d03, - 0x219543, - 0xa4d48, - 0x117485, - 0x187689, - 0x15842, - 0x56793ec5, - 0x2aa47, - 0xaf148, - 0xd9ce, - 0x87e92, - 0x11b5cb, - 0x102d06, - 0x56ad2fc5, - 0x56ed2fcc, - 0x25147, - 0x15da87, - 0x1208ca, - 0x42ed0, - 0x149445, - 0x10bfcb, - 0x7e948, - 0x3c2c7, - 0xf400b, - 0x78449, - 0x127b07, - 0x3a347, - 0x760c7, - 0x3c206, - 0x67008, - 0x57429546, - 0xa964d, - 0x120290, - 0x5780a6c2, - 0x1f6c8, - 0x82dd0, - 0x15b5cc, - 0x57f61e0d, - 0x5fbc8, - 0x6b8c7, - 0x164f49, - 0x5b646, - 0x946c8, - 0xebfc2, - 0x71e8a, - 0x31047, - 0x11d107, - 0xa5a89, - 0xa7708, - 0xef4c5, - 0xe85ce, - 0x1260e, - 0x1b98f, - 0x25589, - 0x52c49, - 0x7e10b, - 0x8ef4f, - 0xabccc, - 0x1125cb, - 0x105848, - 0xe1ac7, - 0xf87c8, - 0x132c8b, - 0x15274c, - 0x15af0c, - 0x1625cc, - 0x16784d, - 0x142188, - 0xfcdc2, - 0x1970c9, - 0x133acb, - 0xc3146, - 0x12e28b, - 0xd560a, - 0xd61c5, - 0xdae90, - 0xdd606, - 0x140806, - 0x14a345, - 0x18a988, - 0xe3d47, - 0xe4007, - 0x1fcc7, - 0xf7c4a, - 0xaefca, - 0x7dac6, - 0x9088d, - 0x6e308, - 0x1be608, - 0x68849, - 0xb7cc5, - 0xf778c, - 0x167a4b, - 0x16ab84, - 0xfec89, - 0xfeec6, - 0x4cb06, - 0x4182, - 0x157206, - 0x14634b, - 0x10ac87, - 0xdc2, - 0xc5105, - 0x16704, - 0x781, - 0x7bc3, - 0x572a6d06, - 0x94a43, - 0x2542, - 0x31044, - 0x602, - 0x8b304, - 0xcc2, - 0x7ec2, - 0x3102, - 0x114902, - 0x3cc2, - 0xd2fc2, - 0x3c02, - 0xefa02, - 0x3e242, - 0x4ac2, - 0x2e02, - 0x4c3c2, - 0x37583, - 0x1f02, - 0x1b02, - 0x8882, - 0x12c42, - 0x1402, - 0x35c02, - 0x552c2, - 0x6202, - 0x3882, - 0x1342, - 0x14bc3, - 0x5842, - 0x1102, - 0xb0102, - 0x9602, - 0x1542, - 0x4482, - 0xe302, - 0x6f582, - 0x1e42, - 0x17c0c2, - 0x6cd82, - 0x3a3c2, - 0xec83, - 0x2002, - 0x53982, - 0x1382, - 0x6e02, - 0x29a85, - 0x8302, - 0x48602, - 0x44303, - 0x982, - 0x16f02, - 0x1282, - 0x4042, - 0xed42, - 0x2a82, - 0xc842, - 0x4182, - 0x1f8c5, - 0x582009c2, - 0x587696c3, - 0x1fbc3, - 0x58a009c2, - 0x1fbc3, - 0x179487, - 0x215383, - 0x200742, - 0x20be03, - 0x237583, - 0x203d43, - 0x201fc3, - 0x20be83, - 0x20ec83, - 0x20ae43, - 0x241d03, - 0x294a83, - 0x10ec3, - 0xcd588, - 0x20be03, - 0x237583, - 0x203d43, - 0x21f743, - 0x20ec83, - 0x20ae43, - 0xaff03, - 0x241d03, - 0x20be03, - 0x237583, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x200541, - 0x21f743, - 0x20ec83, - 0x228803, - 0x241d03, - 0x3744, - 0x2b6c03, - 0x20be03, - 0x237583, - 0x21f6c3, - 0x203d43, - 0x257e43, - 0x26b143, - 0x2a2c83, - 0x280e83, - 0x30e843, - 0x26ff84, - 0x20ec83, - 0x241d03, - 0x203f83, - 0x31e084, - 0x250b03, - 0x5583, - 0x22d443, - 0x332388, - 0x325384, - 0x2023ca, - 0x238f06, - 0x10a904, - 0x37a147, - 0x22174a, - 0x21dd89, - 0x3ade07, - 0x3b628a, - 0x2b6c03, - 0x2d750b, - 0x293609, - 0x201bc5, - 0x34e347, - 0x2c42, - 0x20be03, - 0x214447, - 0x2fb145, - 0x2f2a09, - 0x237583, - 0x306a86, - 0x2c0c03, - 0xeae83, - 0x107f06, - 0x122746, - 0x13747, - 0x2176c6, - 0x227045, - 0x39e607, - 0x2d2107, - 0x5b30e843, - 0x33c8c7, - 0x371fc3, - 0x20fb85, - 0x26ff84, - 0x26ed48, - 0x36a50c, - 0x2ad885, - 0x2a2886, - 0x214307, - 0x345847, - 0x252e47, - 0x254d08, - 0x30600f, - 0x3371c5, - 0x246e07, - 0x37c407, - 0x2a424a, - 0x2cebc9, - 0x308045, - 0x30b7ca, - 0x136686, - 0x2c0c85, - 0x36c104, - 0x2bdf86, - 0x2f1a47, - 0x382947, - 0x348748, - 0x21b545, - 0x2fb046, - 0x21d105, - 0x36dd45, - 0x289684, - 0x326bc7, - 0x2eb24a, - 0x23fc48, - 0x366446, - 0xbe83, - 0x2d8345, - 0x318a86, - 0x3b4e86, - 0x34a246, - 0x21f743, - 0x399787, - 0x37c385, - 0x20ec83, - 0x2d58cd, - 0x20ae43, - 0x348848, - 0x38c844, - 0x275b05, - 0x2a4146, - 0x23d186, - 0x355b07, - 0x204a07, - 0x289085, - 0x241d03, - 0x3268c7, - 0x3650c9, - 0x340a49, - 0x30dc0a, - 0x249a82, - 0x20fb44, - 0x2de284, - 0x349b07, - 0x398208, - 0x2e4f89, - 0x221a49, - 0x2e5dc7, - 0x35c346, - 0xe8346, - 0x2e9484, - 0x2e9a8a, - 0x2edc08, - 0x2efc09, - 0x2de106, - 0x2b1985, - 0x23fb08, - 0x2c358a, - 0x2b5d83, - 0x31e206, - 0x2e5ec7, - 0x2311c5, - 0x38c705, - 0x3a26c3, - 0x2702c4, - 0x22b985, - 0x282ac7, - 0x2ff185, - 0x337c86, - 0x14aa05, - 0x2a3203, - 0x3b8a09, - 0x2758cc, - 0x2ca74c, - 0x2cbb08, - 0x2baec7, - 0x2fbc08, - 0x2fc24a, - 0x2fcc4b, - 0x293748, - 0x23c908, - 0x23d286, - 0x201985, - 0x320fca, - 0x369705, - 0x20e982, - 0x3c0507, - 0x261146, - 0x367405, - 0x36b749, - 0x277385, - 0x36d785, - 0x35c909, - 0x3189c6, - 0x3b6988, - 0x20fc43, - 0x217806, - 0x274c46, - 0x30a485, - 0x30a489, - 0x2e56c9, - 0x251b47, - 0x10c984, - 0x30c987, - 0x221949, - 0x23d605, - 0x40788, - 0x346245, - 0x332285, - 0x3c1309, - 0x203402, - 0x250904, - 0x203c82, - 0x205842, - 0x3c0d85, - 0x30a688, - 0x2b7c05, - 0x2c2483, - 0x2c2485, - 0x2ce1c3, - 0x20ff02, - 0x208f84, - 0x2c7d03, - 0x206f02, - 0x340484, - 0x2def43, - 0x204882, - 0x21fc43, - 0x28cb84, - 0x2f01c3, - 0x256784, - 0x200a02, - 0x219443, - 0x21d403, - 0x206a42, - 0x2f4682, - 0x2e5509, - 0x20ad42, - 0x2889c4, - 0x200442, - 0x23f984, - 0x35c304, - 0x287304, - 0x204182, - 0x23c542, - 0x3295c3, - 0x23b943, - 0x24d644, - 0x2b5c04, - 0x2eddc4, - 0x30b6c4, - 0x309043, - 0x335a83, - 0x336604, - 0x30eac4, - 0x30f306, - 0x2145c2, - 0x202c42, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x200742, - 0x2b6c03, - 0x20be03, - 0x237583, - 0x201b03, - 0x30e843, - 0x26ff84, - 0x2e57c4, - 0x226444, - 0x20ec83, - 0x241d03, - 0x219543, - 0x2ea0c4, - 0x31a803, - 0x2a6503, - 0x36aac4, - 0x346046, - 0x20b583, - 0x15da87, - 0x22fac3, - 0x21e903, - 0x2b0c43, - 0x20fbc3, - 0x20be83, - 0x339d45, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x210e03, - 0x2333c3, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x214bc3, - 0x20ec83, - 0x238184, - 0xaff03, - 0x241d03, - 0x209944, - 0x2bdd85, - 0x15da87, - 0x202c42, - 0x209d42, - 0x202542, - 0x2032c2, - 0xae43, - 0x200342, - 0x20be03, - 0x23d744, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x226444, - 0x20ec83, - 0xae43, - 0x241d03, - 0x207c03, - 0x28b304, - 0xcd588, - 0x20be03, - 0x20ae43, - 0x10ec3, - 0x13b5c4, - 0x253404, - 0xcd588, - 0x20be03, - 0x254a04, - 0x26ff84, - 0x20ae43, - 0x2056c2, - 0x241d03, - 0x24f3c3, - 0x702c4, - 0x2f5805, - 0x20e982, - 0x30ec03, - 0xf89, - 0xd3686, - 0xfcc8, - 0x200742, - 0xcd588, - 0x202c42, - 0x237583, - 0x30e843, - 0x201342, - 0xae43, - 0x241d03, - 0x200742, - 0x1b6447, - 0x11c889, - 0x5483, - 0xcd588, - 0x1226c3, - 0x5f33d587, - 0xbe03, - 0x1c6548, - 0x237583, - 0x30e843, - 0x178d46, - 0x214bc3, - 0x5b388, - 0xc0248, - 0x40e06, - 0x21f743, - 0xc6788, - 0x97c03, - 0xdbd45, - 0x37787, - 0xec83, - 0x6c83, - 0x41d03, - 0x4bc2, - 0x16c18a, - 0x1c0e43, - 0x30c5c4, - 0x105e0b, - 0x1063c8, - 0x8d302, - 0x200742, - 0x202c42, - 0x20be03, - 0x237583, - 0x2d2484, - 0x30e843, - 0x214bc3, - 0x21f743, - 0x20ec83, - 0x20be03, - 0x237583, - 0x30e843, - 0x20be83, - 0x20ec83, - 0x241d03, - 0x209943, - 0x207c03, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x10ec3, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff84, - 0x20be83, - 0x20ec83, - 0x241d03, - 0x230882, - 0x200101, - 0x200742, - 0x200301, - 0x32a782, - 0xcd588, - 0x21fe85, - 0x200781, - 0xbe03, - 0x2014c1, - 0x200041, - 0x200141, - 0x24e082, - 0x378184, - 0x24e083, - 0x201401, - 0x200901, - 0x200541, - 0x200a81, - 0x316307, - 0x337dcf, - 0x2fa486, - 0x200641, - 0x33b606, - 0x200081, - 0x2001c1, - 0x3c35ce, - 0x200341, - 0x241d03, - 0x201681, - 0x254285, - 0x204bc2, - 0x3a25c5, - 0x2002c1, - 0x200a01, - 0x200401, - 0x20e982, - 0x200441, - 0x203f81, - 0x20d601, - 0x201181, - 0x200dc1, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x21a003, - 0x20be03, - 0x30e843, - 0x8d248, - 0x21f743, - 0x20ec83, - 0x5e8c3, - 0x241d03, - 0x14e0f48, - 0x10d08, - 0xcd588, - 0xae43, - 0x24704, - 0x4cec4, - 0x14e0f4a, - 0xcd588, - 0xaff03, - 0x20be03, - 0x237583, - 0x30e843, - 0x20ec83, - 0x241d03, - 0x205583, - 0xcd588, - 0x20be03, - 0x237583, - 0x2d2484, - 0x241d03, - 0x252385, - 0x317c44, - 0x20be03, - 0x20ec83, - 0x241d03, - 0x2fc8a, - 0xfd504, - 0x112a46, - 0x202c42, - 0x20be03, - 0x234d09, - 0x237583, - 0x2a82c9, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x2e9288, - 0x397b87, - 0x2f5805, - 0x1b7888, - 0x1b6447, - 0x19848a, - 0x101d0b, - 0x13b847, - 0x45388, - 0x3a80a, - 0x13dc8, - 0x11c889, - 0x2b847, - 0x67fc7, - 0x1c28c8, - 0x1c6548, - 0x470cf, - 0x26505, - 0x1c6847, - 0x178d46, - 0x4c207, - 0x108186, - 0x5b388, - 0x9b986, - 0x1187c7, - 0x142349, - 0x1b5207, - 0xe68c9, - 0xb8209, - 0xbdb06, - 0xc0248, - 0xbeb45, - 0x77fca, - 0xc6788, - 0x97c03, - 0xcea08, - 0x37787, - 0x1ac045, - 0x4dc90, - 0x6c83, - 0xaff03, - 0x1c3147, - 0x1d5c5, - 0xe4308, - 0x605c5, - 0x1c0e43, - 0x142748, - 0x132146, - 0x199bc9, - 0xaab87, - 0x124b, - 0x137a84, - 0xfe3c4, - 0x105e0b, - 0x1063c8, - 0x107e07, - 0x117485, - 0x20be03, - 0x237583, - 0x203d43, - 0x241d03, - 0x244a03, - 0x30e843, - 0xaff03, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x7e24b, - 0x200742, - 0x202c42, - 0x241d03, - 0xcd588, - 0x200742, - 0x202c42, - 0x202542, - 0x201342, - 0x200b82, - 0x20ec83, - 0x200342, - 0x200742, - 0x2b6c03, - 0x202c42, - 0x20be03, - 0x237583, - 0x202542, - 0x30e843, - 0x214bc3, - 0x21f743, - 0x226444, - 0x20ec83, - 0x207783, - 0x241d03, - 0x30c5c4, - 0x203f83, - 0x30e843, - 0x202c42, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x20ae43, - 0x241d03, - 0x3afd87, - 0x20be03, - 0x279947, - 0x2e6686, - 0x216543, - 0x208883, - 0x30e843, - 0x204d03, - 0x26ff84, - 0x38b344, - 0x2b9906, - 0x20c743, - 0x20ec83, - 0x241d03, - 0x252385, - 0x309e84, - 0x320dc3, - 0x20d203, - 0x3c0507, - 0x23b1c5, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x98747, - 0x2149c2, - 0x26e443, - 0x20df43, - 0x2b6c03, - 0x6760be03, - 0x20b2c2, - 0x237583, - 0x206c03, - 0x30e843, - 0x26ff84, - 0x3c32c3, - 0x3371c3, - 0x21f743, - 0x226444, - 0x67a02f02, - 0x20ec83, - 0x241d03, - 0x235cc3, - 0x214c43, - 0x230882, - 0x203f83, - 0xcd588, - 0x30e843, - 0x10ec3, - 0x31b0c4, - 0x2b6c03, - 0x202c42, - 0x20be03, - 0x23d744, - 0x237583, - 0x30e843, - 0x26ff84, - 0x214bc3, - 0x39e304, - 0x21a484, - 0x2d0e06, - 0x226444, - 0x20ec83, - 0x241d03, - 0x219543, - 0x261146, - 0x4170b, - 0x29546, - 0xeb94a, - 0x10b34a, - 0xcd588, - 0x21d0c4, - 0x68e0be03, - 0x2b6bc4, - 0x237583, - 0x268984, - 0x30e843, - 0x357d43, - 0x21f743, - 0x20ec83, - 0xaff03, - 0x241d03, - 0x55a43, - 0x33840b, - 0x3b1a0a, - 0x3c580c, - 0xd80c8, - 0x200742, - 0x202c42, - 0x202542, - 0x232585, - 0x26ff84, - 0x201e42, - 0x21f743, - 0x21a484, - 0x2032c2, - 0x200342, - 0x207c02, - 0x230882, - 0xb6c03, - 0x4d5c2, - 0x386389, - 0x3a3088, - 0x310449, - 0x34e049, - 0x23e48a, - 0x24e90a, - 0x219382, - 0x2efa02, - 0x2c42, - 0x20be03, - 0x230a42, - 0x246fc6, - 0x368802, - 0x207582, - 0x30208e, - 0x21948e, - 0x27bf47, - 0x20ec07, - 0x2e89c2, - 0x237583, - 0x30e843, - 0x209182, - 0x201342, - 0x6ff83, - 0x23d94f, - 0x247302, - 0x2f9507, - 0x2ad447, - 0x314407, - 0x2b0fcc, - 0x2b9b8c, - 0x207144, - 0x27d34a, - 0x2193c2, - 0x209602, - 0x2b9844, - 0x2028c2, - 0x2c10c2, - 0x2b9dc4, - 0x217f42, - 0x201542, - 0xf003, - 0x29ba07, - 0x233805, - 0x20e302, - 0x24c184, - 0x37c0c2, - 0x2d7c88, - 0x20ec83, - 0x39f108, - 0x206a82, - 0x207305, - 0x388206, - 0x241d03, - 0x208302, - 0x2e51c7, - 0x4bc2, - 0x272585, - 0x204905, - 0x212182, - 0x2030c2, - 0x293c0a, - 0x288f0a, - 0x23a382, - 0x29a184, - 0x2040c2, - 0x20fa08, - 0x200d82, - 0x39d588, - 0x302ac7, - 0x3038c9, - 0x204982, - 0x3086c5, - 0x36ba05, - 0x21b60b, - 0x2c418c, - 0x230548, - 0x31c188, - 0x2145c2, - 0x355bc2, - 0x200742, - 0xcd588, - 0x202c42, - 0x20be03, - 0x202542, - 0x2032c2, - 0xae43, - 0x200342, - 0x241d03, - 0x207c02, - 0x200742, - 0x6a202c42, - 0x6a70e843, - 0x20f003, - 0x201e42, - 0x20ec83, - 0x338c03, - 0x241d03, - 0x2e2d83, - 0x379586, - 0x1607c03, - 0xcd588, - 0x6e247, - 0x14a345, - 0xa7e0d, - 0xa5f4a, - 0x85047, - 0x6ae00a42, - 0x6b200602, - 0x6b600282, - 0x6ba02b82, - 0x6be12442, - 0x6c203cc2, - 0x15da87, - 0x6c602c42, - 0x6ca1b282, - 0x6ce1f9c2, - 0x6d202e02, - 0x219483, - 0x22644, - 0x282dc3, - 0x6d615902, - 0x6da039c2, - 0x55087, - 0x6de02202, - 0x6e200902, - 0x6e600542, - 0x6ea07d02, - 0x6ee03882, - 0x6f201342, - 0xc0f85, - 0x24c4c3, - 0x23a2c4, - 0x6f6028c2, - 0x6fa0dd82, - 0x6fe00682, - 0xb714b, - 0x702000c2, - 0x70a54ac2, - 0x70e01e42, - 0x71200b82, - 0x71603282, - 0x71a05a02, - 0x71e0d682, - 0x7226cd82, - 0x72602f02, - 0x72a04d42, - 0x72e032c2, - 0x7323e0c2, - 0x7362a402, - 0x73a11e82, - 0xafd44, - 0x339b43, - 0x73e0e882, - 0x742190c2, - 0x74606482, - 0x74a02882, - 0x74e00342, - 0x75206f02, - 0x7e3c7, - 0x756057c2, - 0x75a00502, - 0x75e07c02, - 0x76209f82, - 0xf778c, - 0x76627882, - 0x76a2c0c2, - 0x76e0a902, - 0x77206d02, - 0x77611d82, - 0x77a3e602, - 0x77e0fc42, - 0x78213802, - 0x78674fc2, - 0x78a4f1c2, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x11343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x707c32c3, - 0x211343, - 0x339dc4, - 0x3a2f86, - 0x2f0ec3, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x200189, - 0x24d5c2, - 0x391283, - 0x2b8503, - 0x202f85, - 0x206c03, - 0x3c32c3, - 0x211343, - 0x29ea43, - 0x233d43, - 0x3bd849, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x24d5c2, - 0x24d5c2, - 0x3c32c3, - 0x211343, - 0x7920be03, - 0x237583, - 0x332683, - 0x21f743, - 0x20ec83, - 0xae43, - 0x241d03, - 0xcd588, - 0x202c42, - 0x20be03, - 0x20ec83, - 0x241d03, - 0x20be03, - 0x237583, - 0x30e843, - 0x21f743, - 0x20ec83, - 0xae43, - 0x241d03, - 0x253404, - 0x202c42, - 0x20be03, - 0x322183, - 0x237583, - 0x254a04, - 0x203d43, - 0x30e843, - 0x26ff84, - 0x214bc3, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x24f3c3, - 0x2f5805, - 0x233d43, - 0x203f83, - 0xae43, - 0x202c42, - 0x20be03, - 0x3c32c3, - 0x20ec83, - 0x241d03, - 0x200742, - 0x2b6c03, - 0xcd588, - 0x20be03, - 0x237583, - 0x30e843, - 0x234106, - 0x26ff84, - 0x214bc3, - 0x226444, - 0x20ec83, - 0x241d03, - 0x219543, - 0x20be03, - 0x237583, - 0x20ec83, - 0x241d03, - 0x144be47, - 0x20be03, - 0x29546, - 0x237583, - 0x30e843, - 0xd91c6, - 0x20ec83, - 0x241d03, - 0x318fc8, - 0x31bfc9, - 0x330349, - 0x33af08, - 0x38a348, - 0x38a349, - 0x22c10d, - 0x24b00f, - 0x2ec510, - 0x354d0d, - 0x36ebcc, - 0x38bc4b, - 0xaf148, - 0xc7bc5, - 0x200742, - 0x23b005, - 0x20bfc3, - 0x7c602c42, - 0x237583, - 0x30e843, - 0x2d7ac7, - 0x20fbc3, - 0x21f743, - 0x20ec83, - 0x228803, - 0x20c0c3, - 0x20ae43, - 0x241d03, - 0x253786, - 0x20e982, - 0x203f83, - 0xcd588, - 0x200742, - 0x2b6c03, - 0x202c42, - 0x20be03, - 0x237583, - 0x30e843, - 0x26ff84, - 0x21f743, - 0x20ec83, - 0x241d03, - 0x207c03, - 0xf84, - 0x154ab06, - 0x200742, - 0x202c42, - 0x30e843, - 0x21f743, - 0x241d03, -} - -// children is the list of nodes' children, the parent's wildcard bit and the -// parent's node type. If a node has no children then their children index -// will be in the range [0, 6), depending on the wildcard bit and node type. -// -// The layout within the uint32, from MSB to LSB, is: -// [ 1 bits] unused -// [ 1 bits] wildcard bit -// [ 2 bits] node type -// [14 bits] high nodes index (exclusive) of children -// [14 bits] low nodes index (inclusive) of children -var children = [...]uint32{ - 0x0, - 0x10000000, - 0x20000000, - 0x40000000, - 0x50000000, - 0x60000000, - 0x185460f, - 0x1858615, - 0x187c616, - 0x19d861f, - 0x19ec676, - 0x1a0067b, - 0x1a14680, - 0x1a34685, - 0x1a3868d, - 0x1a5068e, - 0x1a78694, - 0x1a7c69e, - 0x1a9469f, - 0x1a986a5, - 0x1a9c6a6, - 0x1ad86a7, - 0x1adc6b6, - 0x21ae46b7, - 0x1b2c6b9, - 0x1b306cb, - 0x1b506cc, - 0x1b646d4, - 0x1b686d9, - 0x1b986da, - 0x1bb46e6, - 0x1bdc6ed, - 0x1bec6f7, - 0x1bf06fb, - 0x1c886fc, - 0x1c9c722, - 0x1cb0727, - 0x1ce072c, - 0x1cf0738, - 0x1d0473c, - 0x1da8741, - 0x1fa076a, - 0x1fa47e8, - 0x20107e9, - 0x207c804, - 0x209481f, - 0x20a8825, - 0x20b082a, - 0x20c482c, - 0x20c8831, - 0x20e4832, - 0x2134839, - 0x215084d, - 0x2154854, - 0x2158855, - 0x2174856, - 0x21b085d, - 0x621b486c, - 0x21cc86d, - 0x21e0873, - 0x21e4878, - 0x21f4879, - 0x22a487d, - 0x22a88a9, - 0x222b88aa, - 0x222bc8ae, - 0x222c08af, - 0x22f88b0, - 0x22fc8be, - 0x278c8bf, - 0x228349e3, - 0x22838a0d, - 0x2283ca0e, - 0x22848a0f, - 0x2284ca12, - 0x22858a13, - 0x2285ca16, - 0x22860a17, - 0x22864a18, - 0x22868a19, - 0x2286ca1a, - 0x22878a1b, - 0x2287ca1e, - 0x22888a1f, - 0x2288ca22, - 0x22890a23, - 0x22894a24, - 0x228a0a25, - 0x228a4a28, - 0x228b0a29, - 0x228b4a2c, - 0x228b8a2d, - 0x228bca2e, - 0x28c0a2f, - 0x228c4a30, - 0x228d0a31, - 0x228d4a34, - 0x28dca35, - 0x291ca37, - 0x2293ca47, - 0x22940a4f, - 0x22944a50, - 0x2948a51, - 0x2294ca52, - 0x2950a53, - 0x296ca54, - 0x2984a5b, - 0x2988a61, - 0x2998a62, - 0x29a4a66, - 0x29d8a69, - 0x29dca76, - 0x29f0a77, - 0x229f8a7c, - 0x2ab8a7e, - 0x22abcaae, - 0x2ac4aaf, - 0x2ac8ab1, - 0x2ae0ab2, - 0x2af4ab8, - 0x2b1cabd, - 0x2b3cac7, - 0x2b6cacf, - 0x2b94adb, - 0x2b98ae5, - 0x2bbcae6, - 0x2bc0aef, - 0x2bd4af0, - 0x2bd8af5, - 0x2bdcaf6, - 0x2bfcaf7, - 0x2c1caff, - 0x2c20b07, - 0x22c24b08, - 0x2c28b09, - 0x2c2cb0a, - 0x2c3cb0b, - 0x2c40b0f, - 0x2cb8b10, - 0x2cbcb2e, - 0x2cd8b2f, - 0x2ce8b36, - 0x2cfcb3a, - 0x2d14b3f, - 0x2d2cb45, - 0x2d44b4b, - 0x2d48b51, - 0x2d60b52, - 0x2d7cb58, - 0x2d9cb5f, - 0x2db4b67, - 0x2e14b6d, - 0x2e30b85, - 0x2e38b8c, - 0x2e3cb8e, - 0x2e50b8f, - 0x2e94b94, - 0x2f14ba5, - 0x2f40bc5, - 0x2f44bd0, - 0x2f4cbd1, - 0x2f6cbd3, - 0x2f70bdb, - 0x2f94bdc, - 0x2f9cbe5, - 0x2fd8be7, - 0x301cbf6, - 0x3020c07, - 0x3094c08, - 0x3098c25, - 0x2309cc26, - 0x230a0c27, - 0x230a4c28, - 0x230b4c29, - 0x230b8c2d, - 0x230bcc2e, - 0x230c0c2f, - 0x230c4c30, - 0x30dcc31, - 0x3100c37, - 0x3120c40, - 0x36e4c48, - 0x36f0db9, - 0x3710dbc, - 0x38ccdc4, - 0x399ce33, - 0x3a0ce67, - 0x3a64e83, - 0x3b4ce99, - 0x3ba4ed3, - 0x3be0ee9, - 0x3cdcef8, - 0x3da8f37, - 0x3e40f6a, - 0x3ed0f90, - 0x3f34fb4, - 0x416cfcd, - 0x422505b, - 0x42f1089, - 0x433d0bc, - 0x43c50cf, - 0x44010f1, - 0x4451100, - 0x44c9114, - 0x644cd132, - 0x644d1133, - 0x644d5134, - 0x4551135, - 0x45ad154, - 0x462916b, - 0x46a118a, - 0x47211a8, - 0x478d1c8, - 0x48b91e3, - 0x491122e, - 0x64915244, - 0x49ad245, - 0x4a3526b, - 0x4a8128d, - 0x4ae92a0, - 0x4b912ba, - 0x4c592e4, - 0x4cc1316, - 0x4dd5330, - 0x64dd9375, - 0x64ddd376, - 0x4e39377, - 0x4e9538e, - 0x4f253a5, - 0x4fa13c9, - 0x4fe53e8, - 0x50c93f9, - 0x50fd432, - 0x515d43f, - 0x51d1457, - 0x5259474, - 0x5299496, - 0x53094a6, - 0x6530d4c2, - 0x53314c3, - 0x53354cc, - 0x534d4cd, - 0x53694d3, - 0x53ad4da, - 0x53bd4eb, - 0x53d54ef, - 0x544d4f5, - 0x5455513, - 0x5469515, - 0x548551a, - 0x54b1521, - 0x54b552c, - 0x54bd52d, - 0x54d152f, - 0x54ed534, - 0x54f953b, - 0x550153e, - 0x553d540, - 0x555154f, - 0x5559554, - 0x5565556, - 0x556d559, - 0x559155b, - 0x55b5564, - 0x55cd56d, - 0x55d1573, - 0x55d9574, - 0x55dd576, - 0x5645577, - 0x5649591, - 0x566d592, - 0x569159b, - 0x56ad5a4, - 0x56bd5ab, - 0x56d15af, - 0x56d55b4, - 0x56dd5b5, - 0x56f15b7, - 0x57015bc, - 0x57055c0, - 0x57215c1, - 0x5fb15c8, - 0x5fe97ec, - 0x60157fa, - 0x6031805, - 0x605180c, - 0x6071814, - 0x60b581c, - 0x60bd82d, - 0x260c182f, - 0x260c5830, - 0x60cd831, - 0x6245833, - 0x26249891, - 0x26259892, - 0x26261896, - 0x2626d898, - 0x627189b, - 0x627589c, - 0x629d89d, - 0x62c58a7, - 0x62c98b1, - 0x63018b2, - 0x63218c0, - 0x6e798c8, - 0x6e7db9e, - 0x6e81b9f, - 0x26e85ba0, - 0x6e89ba1, - 0x26e8dba2, - 0x6e91ba3, - 0x26e9dba4, - 0x6ea1ba7, - 0x6ea5ba8, - 0x26ea9ba9, - 0x6eadbaa, - 0x26eb5bab, - 0x6eb9bad, - 0x6ebdbae, - 0x26ecdbaf, - 0x6ed1bb3, - 0x6ed5bb4, - 0x6ed9bb5, - 0x6eddbb6, - 0x26ee1bb7, - 0x6ee5bb8, - 0x6ee9bb9, - 0x6eedbba, - 0x6ef1bbb, - 0x26ef9bbc, - 0x6efdbbe, - 0x6f01bbf, - 0x6f05bc0, - 0x26f09bc1, - 0x6f0dbc2, - 0x26f15bc3, - 0x26f19bc5, - 0x6f35bc6, - 0x6f45bcd, - 0x6f89bd1, - 0x6f8dbe2, - 0x6fb1be3, - 0x6fb5bec, - 0x6fb9bed, - 0x7145bee, - 0x27149c51, - 0x27151c52, - 0x27155c54, - 0x27159c55, - 0x7161c56, - 0x723dc58, - 0x27249c8f, - 0x2724dc92, - 0x27251c93, - 0x27255c94, - 0x7259c95, - 0x7285c96, - 0x7289ca1, - 0x72adca2, - 0x72b9cab, - 0x72d9cae, - 0x72ddcb6, - 0x7315cb7, - 0x75adcc5, - 0x7669d6b, - 0x767dd9a, - 0x76b1d9f, - 0x76e1dac, - 0x76fddb8, - 0x7725dbf, - 0x7745dc9, - 0x7761dd1, - 0x7789dd8, - 0x7799de2, - 0x779dde6, - 0x77a1de7, - 0x77d5de8, - 0x77e1df5, - 0x7801df8, - 0x7879e00, - 0x2787de1e, - 0x78a1e1f, - 0x78c1e28, - 0x78d5e30, - 0x78e9e35, - 0x78ede3a, - 0x790de3b, - 0x79b1e43, - 0x79cde6c, - 0x79f1e73, - 0x79f9e7c, - 0x7a05e7e, - 0x7a0de81, - 0x7a21e83, - 0x7a41e88, - 0x7a4de90, - 0x7a59e93, - 0x7a89e96, - 0x7b5dea2, - 0x7b61ed7, - 0x7b75ed8, - 0x7b7dedd, - 0x7b95edf, - 0x7b99ee5, - 0x7ba5ee6, - 0x7ba9ee9, - 0x7bc5eea, - 0x7c01ef1, - 0x7c05f00, - 0x7c25f01, - 0x7c75f09, - 0x7c91f1d, - 0x7ce5f24, - 0x7ce9f39, - 0x7cedf3a, - 0x7cf1f3b, - 0x7d35f3c, - 0x7d45f4d, - 0x7d85f51, - 0x7d89f61, - 0x7db9f62, - 0x7f01f6e, - 0x7f29fc0, - 0x7f55fca, - 0x7f65fd5, - 0x7f6dfd9, - 0x807dfdb, - 0x808a01f, - 0x8096022, - 0x80a2025, - 0x80ae028, - 0x80ba02b, - 0x80c602e, - 0x80d2031, - 0x80de034, - 0x80ea037, - 0x80f603a, - 0x810203d, - 0x810e040, - 0x811a043, - 0x8122046, - 0x812e048, - 0x813a04b, - 0x814604e, - 0x8152051, - 0x815e054, - 0x816a057, - 0x817605a, - 0x818205d, - 0x818e060, - 0x819a063, - 0x81a6066, - 0x81d2069, - 0x81de074, - 0x81ea077, - 0x81f607a, - 0x820207d, - 0x820e080, - 0x8216083, - 0x8222085, - 0x822e088, - 0x823a08b, - 0x824608e, - 0x8252091, - 0x825e094, - 0x826a097, - 0x827609a, - 0x828209d, - 0x828e0a0, - 0x829a0a3, - 0x82a60a6, - 0x82b20a9, - 0x82ba0ac, - 0x82c60ae, - 0x82d20b1, - 0x82de0b4, - 0x82ea0b7, - 0x82f60ba, - 0x83020bd, - 0x830e0c0, - 0x831a0c3, - 0x831e0c6, - 0x832a0c7, - 0x83460ca, - 0x834a0d1, - 0x835a0d2, - 0x83760d6, - 0x83ba0dd, - 0x83be0ee, - 0x83d20ef, - 0x84060f4, - 0x8416101, - 0x8436105, - 0x844e10d, - 0x8466113, - 0x846e119, - 0x284b211b, - 0x84b612c, - 0x84e212d, - 0x84ea138, - 0x84fe13a, -} - -// max children 500 (capacity 1023) -// max text offset 29102 (capacity 32767) -// max text length 36 (capacity 63) -// max hi 8511 (capacity 16383) -// max lo 8506 (capacity 16383) diff --git a/vendor/golang.org/x/net/publicsuffix/table_test.go b/vendor/golang.org/x/net/publicsuffix/table_test.go deleted file mode 100644 index 228010ca..00000000 --- a/vendor/golang.org/x/net/publicsuffix/table_test.go +++ /dev/null @@ -1,16959 +0,0 @@ -// generated by go run gen.go; DO NOT EDIT - -package publicsuffix - -var rules = [...]string{ - "ac", - "com.ac", - "edu.ac", - "gov.ac", - "net.ac", - "mil.ac", - "org.ac", - "ad", - "nom.ad", - "ae", - "co.ae", - "net.ae", - "org.ae", - "sch.ae", - "ac.ae", - "gov.ae", - "mil.ae", - "aero", - "accident-investigation.aero", - "accident-prevention.aero", - "aerobatic.aero", - "aeroclub.aero", - "aerodrome.aero", - "agents.aero", - "aircraft.aero", - "airline.aero", - "airport.aero", - "air-surveillance.aero", - "airtraffic.aero", - "air-traffic-control.aero", - "ambulance.aero", - "amusement.aero", - "association.aero", - "author.aero", - "ballooning.aero", - "broker.aero", - "caa.aero", - "cargo.aero", - "catering.aero", - "certification.aero", - "championship.aero", - "charter.aero", - "civilaviation.aero", - "club.aero", - "conference.aero", - "consultant.aero", - "consulting.aero", - "control.aero", - "council.aero", - "crew.aero", - "design.aero", - "dgca.aero", - "educator.aero", - "emergency.aero", - "engine.aero", - "engineer.aero", - "entertainment.aero", - "equipment.aero", - "exchange.aero", - "express.aero", - "federation.aero", - "flight.aero", - "freight.aero", - "fuel.aero", - "gliding.aero", - "government.aero", - "groundhandling.aero", - "group.aero", - "hanggliding.aero", - "homebuilt.aero", - "insurance.aero", - "journal.aero", - "journalist.aero", - "leasing.aero", - "logistics.aero", - "magazine.aero", - "maintenance.aero", - "media.aero", - "microlight.aero", - "modelling.aero", - "navigation.aero", - "parachuting.aero", - "paragliding.aero", - "passenger-association.aero", - "pilot.aero", - "press.aero", - "production.aero", - "recreation.aero", - "repbody.aero", - "res.aero", - "research.aero", - "rotorcraft.aero", - "safety.aero", - "scientist.aero", - "services.aero", - "show.aero", - "skydiving.aero", - "software.aero", - "student.aero", - "trader.aero", - "trading.aero", - "trainer.aero", - "union.aero", - "workinggroup.aero", - "works.aero", - "af", - "gov.af", - "com.af", - "org.af", - "net.af", - "edu.af", - "ag", - "com.ag", - "org.ag", - "net.ag", - "co.ag", - "nom.ag", - "ai", - "off.ai", - "com.ai", - "net.ai", - "org.ai", - "al", - "com.al", - "edu.al", - "gov.al", - "mil.al", - "net.al", - "org.al", - "am", - "ao", - "ed.ao", - "gv.ao", - "og.ao", - "co.ao", - "pb.ao", - "it.ao", - "aq", - "ar", - "com.ar", - "edu.ar", - "gob.ar", - "gov.ar", - "int.ar", - "mil.ar", - "musica.ar", - "net.ar", - "org.ar", - "tur.ar", - "arpa", - "e164.arpa", - "in-addr.arpa", - "ip6.arpa", - "iris.arpa", - "uri.arpa", - "urn.arpa", - "as", - "gov.as", - "asia", - "at", - "ac.at", - "co.at", - "gv.at", - "or.at", - "au", - "com.au", - "net.au", - "org.au", - "edu.au", - "gov.au", - "asn.au", - "id.au", - "info.au", - "conf.au", - "oz.au", - "act.au", - "nsw.au", - "nt.au", - "qld.au", - "sa.au", - "tas.au", - "vic.au", - "wa.au", - "act.edu.au", - "nsw.edu.au", - "nt.edu.au", - "qld.edu.au", - "sa.edu.au", - "tas.edu.au", - "vic.edu.au", - "wa.edu.au", - "qld.gov.au", - "sa.gov.au", - "tas.gov.au", - "vic.gov.au", - "wa.gov.au", - "aw", - "com.aw", - "ax", - "az", - "com.az", - "net.az", - "int.az", - "gov.az", - "org.az", - "edu.az", - "info.az", - "pp.az", - "mil.az", - "name.az", - "pro.az", - "biz.az", - "ba", - "com.ba", - "edu.ba", - "gov.ba", - "mil.ba", - "net.ba", - "org.ba", - "bb", - "biz.bb", - "co.bb", - "com.bb", - "edu.bb", - "gov.bb", - "info.bb", - "net.bb", - "org.bb", - "store.bb", - "tv.bb", - "*.bd", - "be", - "ac.be", - "bf", - "gov.bf", - "bg", - "a.bg", - "b.bg", - "c.bg", - "d.bg", - "e.bg", - "f.bg", - "g.bg", - "h.bg", - "i.bg", - "j.bg", - "k.bg", - "l.bg", - "m.bg", - "n.bg", - "o.bg", - "p.bg", - "q.bg", - "r.bg", - "s.bg", - "t.bg", - "u.bg", - "v.bg", - "w.bg", - "x.bg", - "y.bg", - "z.bg", - "0.bg", - "1.bg", - "2.bg", - "3.bg", - "4.bg", - "5.bg", - "6.bg", - "7.bg", - "8.bg", - "9.bg", - "bh", - "com.bh", - "edu.bh", - "net.bh", - "org.bh", - "gov.bh", - "bi", - "co.bi", - "com.bi", - "edu.bi", - "or.bi", - "org.bi", - "biz", - "bj", - "asso.bj", - "barreau.bj", - "gouv.bj", - "bm", - "com.bm", - "edu.bm", - "gov.bm", - "net.bm", - "org.bm", - "*.bn", - "bo", - "com.bo", - "edu.bo", - "gob.bo", - "int.bo", - "org.bo", - "net.bo", - "mil.bo", - "tv.bo", - "web.bo", - "academia.bo", - "agro.bo", - "arte.bo", - "blog.bo", - "bolivia.bo", - "ciencia.bo", - "cooperativa.bo", - "democracia.bo", - "deporte.bo", - "ecologia.bo", - "economia.bo", - "empresa.bo", - "indigena.bo", - "industria.bo", - "info.bo", - "medicina.bo", - "movimiento.bo", - "musica.bo", - "natural.bo", - "nombre.bo", - "noticias.bo", - "patria.bo", - "politica.bo", - "profesional.bo", - "plurinacional.bo", - "pueblo.bo", - "revista.bo", - "salud.bo", - "tecnologia.bo", - "tksat.bo", - "transporte.bo", - "wiki.bo", - "br", - "9guacu.br", - "abc.br", - "adm.br", - "adv.br", - "agr.br", - "aju.br", - "am.br", - "anani.br", - "aparecida.br", - "arq.br", - "art.br", - "ato.br", - "b.br", - "belem.br", - "bhz.br", - "bio.br", - "blog.br", - "bmd.br", - "boavista.br", - "bsb.br", - "campinagrande.br", - "campinas.br", - "caxias.br", - "cim.br", - "cng.br", - "cnt.br", - "com.br", - "contagem.br", - "coop.br", - "cri.br", - "cuiaba.br", - "curitiba.br", - "def.br", - "ecn.br", - "eco.br", - "edu.br", - "emp.br", - "eng.br", - "esp.br", - "etc.br", - "eti.br", - "far.br", - "feira.br", - "flog.br", - "floripa.br", - "fm.br", - "fnd.br", - "fortal.br", - "fot.br", - "foz.br", - "fst.br", - "g12.br", - "ggf.br", - "goiania.br", - "gov.br", - "ac.gov.br", - "al.gov.br", - "am.gov.br", - "ap.gov.br", - "ba.gov.br", - "ce.gov.br", - "df.gov.br", - "es.gov.br", - "go.gov.br", - "ma.gov.br", - "mg.gov.br", - "ms.gov.br", - "mt.gov.br", - "pa.gov.br", - "pb.gov.br", - "pe.gov.br", - "pi.gov.br", - "pr.gov.br", - "rj.gov.br", - "rn.gov.br", - "ro.gov.br", - "rr.gov.br", - "rs.gov.br", - "sc.gov.br", - "se.gov.br", - "sp.gov.br", - "to.gov.br", - "gru.br", - "imb.br", - "ind.br", - "inf.br", - "jab.br", - "jampa.br", - "jdf.br", - "joinville.br", - "jor.br", - "jus.br", - "leg.br", - "lel.br", - "londrina.br", - "macapa.br", - "maceio.br", - "manaus.br", - "maringa.br", - "mat.br", - "med.br", - "mil.br", - "morena.br", - "mp.br", - "mus.br", - "natal.br", - "net.br", - "niteroi.br", - "*.nom.br", - "not.br", - "ntr.br", - "odo.br", - "org.br", - "osasco.br", - "palmas.br", - "poa.br", - "ppg.br", - "pro.br", - "psc.br", - "psi.br", - "pvh.br", - "qsl.br", - "radio.br", - "rec.br", - "recife.br", - "ribeirao.br", - "rio.br", - "riobranco.br", - "riopreto.br", - "salvador.br", - "sampa.br", - "santamaria.br", - "santoandre.br", - "saobernardo.br", - "saogonca.br", - "sjc.br", - "slg.br", - "slz.br", - "sorocaba.br", - "srv.br", - "taxi.br", - "teo.br", - "the.br", - "tmp.br", - "trd.br", - "tur.br", - "tv.br", - "udi.br", - "vet.br", - "vix.br", - "vlog.br", - "wiki.br", - "zlg.br", - "bs", - "com.bs", - "net.bs", - "org.bs", - "edu.bs", - "gov.bs", - "bt", - "com.bt", - "edu.bt", - "gov.bt", - "net.bt", - "org.bt", - "bv", - "bw", - "co.bw", - "org.bw", - "by", - "gov.by", - "mil.by", - "com.by", - "of.by", - "bz", - "com.bz", - "net.bz", - "org.bz", - "edu.bz", - "gov.bz", - "ca", - "ab.ca", - "bc.ca", - "mb.ca", - "nb.ca", - "nf.ca", - "nl.ca", - "ns.ca", - "nt.ca", - "nu.ca", - "on.ca", - "pe.ca", - "qc.ca", - "sk.ca", - "yk.ca", - "gc.ca", - "cat", - "cc", - "cd", - "gov.cd", - "cf", - "cg", - "ch", - "ci", - "org.ci", - "or.ci", - "com.ci", - "co.ci", - "edu.ci", - "ed.ci", - "ac.ci", - "net.ci", - "go.ci", - "asso.ci", - "xn--aroport-bya.ci", - "int.ci", - "presse.ci", - "md.ci", - "gouv.ci", - "*.ck", - "!www.ck", - "cl", - "gov.cl", - "gob.cl", - "co.cl", - "mil.cl", - "cm", - "co.cm", - "com.cm", - "gov.cm", - "net.cm", - "cn", - "ac.cn", - "com.cn", - "edu.cn", - "gov.cn", - "net.cn", - "org.cn", - "mil.cn", - "xn--55qx5d.cn", - "xn--io0a7i.cn", - "xn--od0alg.cn", - "ah.cn", - "bj.cn", - "cq.cn", - "fj.cn", - "gd.cn", - "gs.cn", - "gz.cn", - "gx.cn", - "ha.cn", - "hb.cn", - "he.cn", - "hi.cn", - "hl.cn", - "hn.cn", - "jl.cn", - "js.cn", - "jx.cn", - "ln.cn", - "nm.cn", - "nx.cn", - "qh.cn", - "sc.cn", - "sd.cn", - "sh.cn", - "sn.cn", - "sx.cn", - "tj.cn", - "xj.cn", - "xz.cn", - "yn.cn", - "zj.cn", - "hk.cn", - "mo.cn", - "tw.cn", - "co", - "arts.co", - "com.co", - "edu.co", - "firm.co", - "gov.co", - "info.co", - "int.co", - "mil.co", - "net.co", - "nom.co", - "org.co", - "rec.co", - "web.co", - "com", - "coop", - "cr", - "ac.cr", - "co.cr", - "ed.cr", - "fi.cr", - "go.cr", - "or.cr", - "sa.cr", - "cu", - "com.cu", - "edu.cu", - "org.cu", - "net.cu", - "gov.cu", - "inf.cu", - "cv", - "cw", - "com.cw", - "edu.cw", - "net.cw", - "org.cw", - "cx", - "gov.cx", - "cy", - "ac.cy", - "biz.cy", - "com.cy", - "ekloges.cy", - "gov.cy", - "ltd.cy", - "name.cy", - "net.cy", - "org.cy", - "parliament.cy", - "press.cy", - "pro.cy", - "tm.cy", - "cz", - "de", - "dj", - "dk", - "dm", - "com.dm", - "net.dm", - "org.dm", - "edu.dm", - "gov.dm", - "do", - "art.do", - "com.do", - "edu.do", - "gob.do", - "gov.do", - "mil.do", - "net.do", - "org.do", - "sld.do", - "web.do", - "dz", - "com.dz", - "org.dz", - "net.dz", - "gov.dz", - "edu.dz", - "asso.dz", - "pol.dz", - "art.dz", - "ec", - "com.ec", - "info.ec", - "net.ec", - "fin.ec", - "k12.ec", - "med.ec", - "pro.ec", - "org.ec", - "edu.ec", - "gov.ec", - "gob.ec", - "mil.ec", - "edu", - "ee", - "edu.ee", - "gov.ee", - "riik.ee", - "lib.ee", - "med.ee", - "com.ee", - "pri.ee", - "aip.ee", - "org.ee", - "fie.ee", - "eg", - "com.eg", - "edu.eg", - "eun.eg", - "gov.eg", - "mil.eg", - "name.eg", - "net.eg", - "org.eg", - "sci.eg", - "*.er", - "es", - "com.es", - "nom.es", - "org.es", - "gob.es", - "edu.es", - "et", - "com.et", - "gov.et", - "org.et", - "edu.et", - "biz.et", - "name.et", - "info.et", - "net.et", - "eu", - "fi", - "aland.fi", - "*.fj", - "*.fk", - "fm", - "fo", - "fr", - "com.fr", - "asso.fr", - "nom.fr", - "prd.fr", - "presse.fr", - "tm.fr", - "aeroport.fr", - "assedic.fr", - "avocat.fr", - "avoues.fr", - "cci.fr", - "chambagri.fr", - "chirurgiens-dentistes.fr", - "experts-comptables.fr", - "geometre-expert.fr", - "gouv.fr", - "greta.fr", - "huissier-justice.fr", - "medecin.fr", - "notaires.fr", - "pharmacien.fr", - "port.fr", - "veterinaire.fr", - "ga", - "gb", - "gd", - "ge", - "com.ge", - "edu.ge", - "gov.ge", - "org.ge", - "mil.ge", - "net.ge", - "pvt.ge", - "gf", - "gg", - "co.gg", - "net.gg", - "org.gg", - "gh", - "com.gh", - "edu.gh", - "gov.gh", - "org.gh", - "mil.gh", - "gi", - "com.gi", - "ltd.gi", - "gov.gi", - "mod.gi", - "edu.gi", - "org.gi", - "gl", - "co.gl", - "com.gl", - "edu.gl", - "net.gl", - "org.gl", - "gm", - "gn", - "ac.gn", - "com.gn", - "edu.gn", - "gov.gn", - "org.gn", - "net.gn", - "gov", - "gp", - "com.gp", - "net.gp", - "mobi.gp", - "edu.gp", - "org.gp", - "asso.gp", - "gq", - "gr", - "com.gr", - "edu.gr", - "net.gr", - "org.gr", - "gov.gr", - "gs", - "gt", - "com.gt", - "edu.gt", - "gob.gt", - "ind.gt", - "mil.gt", - "net.gt", - "org.gt", - "*.gu", - "gw", - "gy", - "co.gy", - "com.gy", - "edu.gy", - "gov.gy", - "net.gy", - "org.gy", - "hk", - "com.hk", - "edu.hk", - "gov.hk", - "idv.hk", - "net.hk", - "org.hk", - "xn--55qx5d.hk", - "xn--wcvs22d.hk", - "xn--lcvr32d.hk", - "xn--mxtq1m.hk", - "xn--gmqw5a.hk", - "xn--ciqpn.hk", - "xn--gmq050i.hk", - "xn--zf0avx.hk", - "xn--io0a7i.hk", - "xn--mk0axi.hk", - "xn--od0alg.hk", - "xn--od0aq3b.hk", - "xn--tn0ag.hk", - "xn--uc0atv.hk", - "xn--uc0ay4a.hk", - "hm", - "hn", - "com.hn", - "edu.hn", - "org.hn", - "net.hn", - "mil.hn", - "gob.hn", - "hr", - "iz.hr", - "from.hr", - "name.hr", - "com.hr", - "ht", - "com.ht", - "shop.ht", - "firm.ht", - "info.ht", - "adult.ht", - "net.ht", - "pro.ht", - "org.ht", - "med.ht", - "art.ht", - "coop.ht", - "pol.ht", - "asso.ht", - "edu.ht", - "rel.ht", - "gouv.ht", - "perso.ht", - "hu", - "co.hu", - "info.hu", - "org.hu", - "priv.hu", - "sport.hu", - "tm.hu", - "2000.hu", - "agrar.hu", - "bolt.hu", - "casino.hu", - "city.hu", - "erotica.hu", - "erotika.hu", - "film.hu", - "forum.hu", - "games.hu", - "hotel.hu", - "ingatlan.hu", - "jogasz.hu", - "konyvelo.hu", - "lakas.hu", - "media.hu", - "news.hu", - "reklam.hu", - "sex.hu", - "shop.hu", - "suli.hu", - "szex.hu", - "tozsde.hu", - "utazas.hu", - "video.hu", - "id", - "ac.id", - "biz.id", - "co.id", - "desa.id", - "go.id", - "mil.id", - "my.id", - "net.id", - "or.id", - "sch.id", - "web.id", - "ie", - "gov.ie", - "il", - "ac.il", - "co.il", - "gov.il", - "idf.il", - "k12.il", - "muni.il", - "net.il", - "org.il", - "im", - "ac.im", - "co.im", - "com.im", - "ltd.co.im", - "net.im", - "org.im", - "plc.co.im", - "tt.im", - "tv.im", - "in", - "co.in", - "firm.in", - "net.in", - "org.in", - "gen.in", - "ind.in", - "nic.in", - "ac.in", - "edu.in", - "res.in", - "gov.in", - "mil.in", - "info", - "int", - "eu.int", - "io", - "com.io", - "iq", - "gov.iq", - "edu.iq", - "mil.iq", - "com.iq", - "org.iq", - "net.iq", - "ir", - "ac.ir", - "co.ir", - "gov.ir", - "id.ir", - "net.ir", - "org.ir", - "sch.ir", - "xn--mgba3a4f16a.ir", - "xn--mgba3a4fra.ir", - "is", - "net.is", - "com.is", - "edu.is", - "gov.is", - "org.is", - "int.is", - "it", - "gov.it", - "edu.it", - "abr.it", - "abruzzo.it", - "aosta-valley.it", - "aostavalley.it", - "bas.it", - "basilicata.it", - "cal.it", - "calabria.it", - "cam.it", - "campania.it", - "emilia-romagna.it", - "emiliaromagna.it", - "emr.it", - "friuli-v-giulia.it", - "friuli-ve-giulia.it", - "friuli-vegiulia.it", - "friuli-venezia-giulia.it", - "friuli-veneziagiulia.it", - "friuli-vgiulia.it", - "friuliv-giulia.it", - "friulive-giulia.it", - "friulivegiulia.it", - "friulivenezia-giulia.it", - "friuliveneziagiulia.it", - "friulivgiulia.it", - "fvg.it", - "laz.it", - "lazio.it", - "lig.it", - "liguria.it", - "lom.it", - "lombardia.it", - "lombardy.it", - "lucania.it", - "mar.it", - "marche.it", - "mol.it", - "molise.it", - "piedmont.it", - "piemonte.it", - "pmn.it", - "pug.it", - "puglia.it", - "sar.it", - "sardegna.it", - "sardinia.it", - "sic.it", - "sicilia.it", - "sicily.it", - "taa.it", - "tos.it", - "toscana.it", - "trentino-a-adige.it", - "trentino-aadige.it", - "trentino-alto-adige.it", - "trentino-altoadige.it", - "trentino-s-tirol.it", - "trentino-stirol.it", - "trentino-sud-tirol.it", - "trentino-sudtirol.it", - "trentino-sued-tirol.it", - "trentino-suedtirol.it", - "trentinoa-adige.it", - "trentinoaadige.it", - "trentinoalto-adige.it", - "trentinoaltoadige.it", - "trentinos-tirol.it", - "trentinostirol.it", - "trentinosud-tirol.it", - "trentinosudtirol.it", - "trentinosued-tirol.it", - "trentinosuedtirol.it", - "tuscany.it", - "umb.it", - "umbria.it", - "val-d-aosta.it", - "val-daosta.it", - "vald-aosta.it", - "valdaosta.it", - "valle-aosta.it", - "valle-d-aosta.it", - "valle-daosta.it", - "valleaosta.it", - "valled-aosta.it", - "valledaosta.it", - "vallee-aoste.it", - "valleeaoste.it", - "vao.it", - "vda.it", - "ven.it", - "veneto.it", - "ag.it", - "agrigento.it", - "al.it", - "alessandria.it", - "alto-adige.it", - "altoadige.it", - "an.it", - "ancona.it", - "andria-barletta-trani.it", - "andria-trani-barletta.it", - "andriabarlettatrani.it", - "andriatranibarletta.it", - "ao.it", - "aosta.it", - "aoste.it", - "ap.it", - "aq.it", - "aquila.it", - "ar.it", - "arezzo.it", - "ascoli-piceno.it", - "ascolipiceno.it", - "asti.it", - "at.it", - "av.it", - "avellino.it", - "ba.it", - "balsan.it", - "bari.it", - "barletta-trani-andria.it", - "barlettatraniandria.it", - "belluno.it", - "benevento.it", - "bergamo.it", - "bg.it", - "bi.it", - "biella.it", - "bl.it", - "bn.it", - "bo.it", - "bologna.it", - "bolzano.it", - "bozen.it", - "br.it", - "brescia.it", - "brindisi.it", - "bs.it", - "bt.it", - "bz.it", - "ca.it", - "cagliari.it", - "caltanissetta.it", - "campidano-medio.it", - "campidanomedio.it", - "campobasso.it", - "carbonia-iglesias.it", - "carboniaiglesias.it", - "carrara-massa.it", - "carraramassa.it", - "caserta.it", - "catania.it", - "catanzaro.it", - "cb.it", - "ce.it", - "cesena-forli.it", - "cesenaforli.it", - "ch.it", - "chieti.it", - "ci.it", - "cl.it", - "cn.it", - "co.it", - "como.it", - "cosenza.it", - "cr.it", - "cremona.it", - "crotone.it", - "cs.it", - "ct.it", - "cuneo.it", - "cz.it", - "dell-ogliastra.it", - "dellogliastra.it", - "en.it", - "enna.it", - "fc.it", - "fe.it", - "fermo.it", - "ferrara.it", - "fg.it", - "fi.it", - "firenze.it", - "florence.it", - "fm.it", - "foggia.it", - "forli-cesena.it", - "forlicesena.it", - "fr.it", - "frosinone.it", - "ge.it", - "genoa.it", - "genova.it", - "go.it", - "gorizia.it", - "gr.it", - "grosseto.it", - "iglesias-carbonia.it", - "iglesiascarbonia.it", - "im.it", - "imperia.it", - "is.it", - "isernia.it", - "kr.it", - "la-spezia.it", - "laquila.it", - "laspezia.it", - "latina.it", - "lc.it", - "le.it", - "lecce.it", - "lecco.it", - "li.it", - "livorno.it", - "lo.it", - "lodi.it", - "lt.it", - "lu.it", - "lucca.it", - "macerata.it", - "mantova.it", - "massa-carrara.it", - "massacarrara.it", - "matera.it", - "mb.it", - "mc.it", - "me.it", - "medio-campidano.it", - "mediocampidano.it", - "messina.it", - "mi.it", - "milan.it", - "milano.it", - "mn.it", - "mo.it", - "modena.it", - "monza-brianza.it", - "monza-e-della-brianza.it", - "monza.it", - "monzabrianza.it", - "monzaebrianza.it", - "monzaedellabrianza.it", - "ms.it", - "mt.it", - "na.it", - "naples.it", - "napoli.it", - "no.it", - "novara.it", - "nu.it", - "nuoro.it", - "og.it", - "ogliastra.it", - "olbia-tempio.it", - "olbiatempio.it", - "or.it", - "oristano.it", - "ot.it", - "pa.it", - "padova.it", - "padua.it", - "palermo.it", - "parma.it", - "pavia.it", - "pc.it", - "pd.it", - "pe.it", - "perugia.it", - "pesaro-urbino.it", - "pesarourbino.it", - "pescara.it", - "pg.it", - "pi.it", - "piacenza.it", - "pisa.it", - "pistoia.it", - "pn.it", - "po.it", - "pordenone.it", - "potenza.it", - "pr.it", - "prato.it", - "pt.it", - "pu.it", - "pv.it", - "pz.it", - "ra.it", - "ragusa.it", - "ravenna.it", - "rc.it", - "re.it", - "reggio-calabria.it", - "reggio-emilia.it", - "reggiocalabria.it", - "reggioemilia.it", - "rg.it", - "ri.it", - "rieti.it", - "rimini.it", - "rm.it", - "rn.it", - "ro.it", - "roma.it", - "rome.it", - "rovigo.it", - "sa.it", - "salerno.it", - "sassari.it", - "savona.it", - "si.it", - "siena.it", - "siracusa.it", - "so.it", - "sondrio.it", - "sp.it", - "sr.it", - "ss.it", - "suedtirol.it", - "sv.it", - "ta.it", - "taranto.it", - "te.it", - "tempio-olbia.it", - "tempioolbia.it", - "teramo.it", - "terni.it", - "tn.it", - "to.it", - "torino.it", - "tp.it", - "tr.it", - "trani-andria-barletta.it", - "trani-barletta-andria.it", - "traniandriabarletta.it", - "tranibarlettaandria.it", - "trapani.it", - "trentino.it", - "trento.it", - "treviso.it", - "trieste.it", - "ts.it", - "turin.it", - "tv.it", - "ud.it", - "udine.it", - "urbino-pesaro.it", - "urbinopesaro.it", - "va.it", - "varese.it", - "vb.it", - "vc.it", - "ve.it", - "venezia.it", - "venice.it", - "verbania.it", - "vercelli.it", - "verona.it", - "vi.it", - "vibo-valentia.it", - "vibovalentia.it", - "vicenza.it", - "viterbo.it", - "vr.it", - "vs.it", - "vt.it", - "vv.it", - "je", - "co.je", - "net.je", - "org.je", - "*.jm", - "jo", - "com.jo", - "org.jo", - "net.jo", - "edu.jo", - "sch.jo", - "gov.jo", - "mil.jo", - "name.jo", - "jobs", - "jp", - "ac.jp", - "ad.jp", - "co.jp", - "ed.jp", - "go.jp", - "gr.jp", - "lg.jp", - "ne.jp", - "or.jp", - "aichi.jp", - "akita.jp", - "aomori.jp", - "chiba.jp", - "ehime.jp", - "fukui.jp", - "fukuoka.jp", - "fukushima.jp", - "gifu.jp", - "gunma.jp", - "hiroshima.jp", - "hokkaido.jp", - "hyogo.jp", - "ibaraki.jp", - "ishikawa.jp", - "iwate.jp", - "kagawa.jp", - "kagoshima.jp", - "kanagawa.jp", - "kochi.jp", - "kumamoto.jp", - "kyoto.jp", - "mie.jp", - "miyagi.jp", - "miyazaki.jp", - "nagano.jp", - "nagasaki.jp", - "nara.jp", - "niigata.jp", - "oita.jp", - "okayama.jp", - "okinawa.jp", - "osaka.jp", - "saga.jp", - "saitama.jp", - "shiga.jp", - "shimane.jp", - "shizuoka.jp", - "tochigi.jp", - "tokushima.jp", - "tokyo.jp", - "tottori.jp", - "toyama.jp", - "wakayama.jp", - "yamagata.jp", - "yamaguchi.jp", - "yamanashi.jp", - "xn--4pvxs.jp", - "xn--vgu402c.jp", - "xn--c3s14m.jp", - "xn--f6qx53a.jp", - "xn--8pvr4u.jp", - "xn--uist22h.jp", - "xn--djrs72d6uy.jp", - "xn--mkru45i.jp", - "xn--0trq7p7nn.jp", - "xn--8ltr62k.jp", - "xn--2m4a15e.jp", - "xn--efvn9s.jp", - "xn--32vp30h.jp", - "xn--4it797k.jp", - "xn--1lqs71d.jp", - "xn--5rtp49c.jp", - "xn--5js045d.jp", - "xn--ehqz56n.jp", - "xn--1lqs03n.jp", - "xn--qqqt11m.jp", - "xn--kbrq7o.jp", - "xn--pssu33l.jp", - "xn--ntsq17g.jp", - "xn--uisz3g.jp", - "xn--6btw5a.jp", - "xn--1ctwo.jp", - "xn--6orx2r.jp", - "xn--rht61e.jp", - "xn--rht27z.jp", - "xn--djty4k.jp", - "xn--nit225k.jp", - "xn--rht3d.jp", - "xn--klty5x.jp", - "xn--kltx9a.jp", - "xn--kltp7d.jp", - "xn--uuwu58a.jp", - "xn--zbx025d.jp", - "xn--ntso0iqx3a.jp", - "xn--elqq16h.jp", - "xn--4it168d.jp", - "xn--klt787d.jp", - "xn--rny31h.jp", - "xn--7t0a264c.jp", - "xn--5rtq34k.jp", - "xn--k7yn95e.jp", - "xn--tor131o.jp", - "xn--d5qv7z876c.jp", - "*.kawasaki.jp", - "*.kitakyushu.jp", - "*.kobe.jp", - "*.nagoya.jp", - "*.sapporo.jp", - "*.sendai.jp", - "*.yokohama.jp", - "!city.kawasaki.jp", - "!city.kitakyushu.jp", - "!city.kobe.jp", - "!city.nagoya.jp", - "!city.sapporo.jp", - "!city.sendai.jp", - "!city.yokohama.jp", - "aisai.aichi.jp", - "ama.aichi.jp", - "anjo.aichi.jp", - "asuke.aichi.jp", - "chiryu.aichi.jp", - "chita.aichi.jp", - "fuso.aichi.jp", - "gamagori.aichi.jp", - "handa.aichi.jp", - "hazu.aichi.jp", - "hekinan.aichi.jp", - "higashiura.aichi.jp", - "ichinomiya.aichi.jp", - "inazawa.aichi.jp", - "inuyama.aichi.jp", - "isshiki.aichi.jp", - "iwakura.aichi.jp", - "kanie.aichi.jp", - "kariya.aichi.jp", - "kasugai.aichi.jp", - "kira.aichi.jp", - "kiyosu.aichi.jp", - "komaki.aichi.jp", - "konan.aichi.jp", - "kota.aichi.jp", - "mihama.aichi.jp", - "miyoshi.aichi.jp", - "nishio.aichi.jp", - "nisshin.aichi.jp", - "obu.aichi.jp", - "oguchi.aichi.jp", - "oharu.aichi.jp", - "okazaki.aichi.jp", - "owariasahi.aichi.jp", - "seto.aichi.jp", - "shikatsu.aichi.jp", - "shinshiro.aichi.jp", - "shitara.aichi.jp", - "tahara.aichi.jp", - "takahama.aichi.jp", - "tobishima.aichi.jp", - "toei.aichi.jp", - "togo.aichi.jp", - "tokai.aichi.jp", - "tokoname.aichi.jp", - "toyoake.aichi.jp", - "toyohashi.aichi.jp", - "toyokawa.aichi.jp", - "toyone.aichi.jp", - "toyota.aichi.jp", - "tsushima.aichi.jp", - "yatomi.aichi.jp", - "akita.akita.jp", - "daisen.akita.jp", - "fujisato.akita.jp", - "gojome.akita.jp", - "hachirogata.akita.jp", - "happou.akita.jp", - "higashinaruse.akita.jp", - "honjo.akita.jp", - "honjyo.akita.jp", - "ikawa.akita.jp", - "kamikoani.akita.jp", - "kamioka.akita.jp", - "katagami.akita.jp", - "kazuno.akita.jp", - "kitaakita.akita.jp", - "kosaka.akita.jp", - "kyowa.akita.jp", - "misato.akita.jp", - "mitane.akita.jp", - "moriyoshi.akita.jp", - "nikaho.akita.jp", - "noshiro.akita.jp", - "odate.akita.jp", - "oga.akita.jp", - "ogata.akita.jp", - "semboku.akita.jp", - "yokote.akita.jp", - "yurihonjo.akita.jp", - "aomori.aomori.jp", - "gonohe.aomori.jp", - "hachinohe.aomori.jp", - "hashikami.aomori.jp", - "hiranai.aomori.jp", - "hirosaki.aomori.jp", - "itayanagi.aomori.jp", - "kuroishi.aomori.jp", - "misawa.aomori.jp", - "mutsu.aomori.jp", - "nakadomari.aomori.jp", - "noheji.aomori.jp", - "oirase.aomori.jp", - "owani.aomori.jp", - "rokunohe.aomori.jp", - "sannohe.aomori.jp", - "shichinohe.aomori.jp", - "shingo.aomori.jp", - "takko.aomori.jp", - "towada.aomori.jp", - "tsugaru.aomori.jp", - "tsuruta.aomori.jp", - "abiko.chiba.jp", - "asahi.chiba.jp", - "chonan.chiba.jp", - "chosei.chiba.jp", - "choshi.chiba.jp", - "chuo.chiba.jp", - "funabashi.chiba.jp", - "futtsu.chiba.jp", - "hanamigawa.chiba.jp", - "ichihara.chiba.jp", - "ichikawa.chiba.jp", - "ichinomiya.chiba.jp", - "inzai.chiba.jp", - "isumi.chiba.jp", - "kamagaya.chiba.jp", - "kamogawa.chiba.jp", - "kashiwa.chiba.jp", - "katori.chiba.jp", - "katsuura.chiba.jp", - "kimitsu.chiba.jp", - "kisarazu.chiba.jp", - "kozaki.chiba.jp", - "kujukuri.chiba.jp", - "kyonan.chiba.jp", - "matsudo.chiba.jp", - "midori.chiba.jp", - "mihama.chiba.jp", - "minamiboso.chiba.jp", - "mobara.chiba.jp", - "mutsuzawa.chiba.jp", - "nagara.chiba.jp", - "nagareyama.chiba.jp", - "narashino.chiba.jp", - "narita.chiba.jp", - "noda.chiba.jp", - "oamishirasato.chiba.jp", - "omigawa.chiba.jp", - "onjuku.chiba.jp", - "otaki.chiba.jp", - "sakae.chiba.jp", - "sakura.chiba.jp", - "shimofusa.chiba.jp", - "shirako.chiba.jp", - "shiroi.chiba.jp", - "shisui.chiba.jp", - "sodegaura.chiba.jp", - "sosa.chiba.jp", - "tako.chiba.jp", - "tateyama.chiba.jp", - "togane.chiba.jp", - "tohnosho.chiba.jp", - "tomisato.chiba.jp", - "urayasu.chiba.jp", - "yachimata.chiba.jp", - "yachiyo.chiba.jp", - "yokaichiba.chiba.jp", - "yokoshibahikari.chiba.jp", - "yotsukaido.chiba.jp", - "ainan.ehime.jp", - "honai.ehime.jp", - "ikata.ehime.jp", - "imabari.ehime.jp", - "iyo.ehime.jp", - "kamijima.ehime.jp", - "kihoku.ehime.jp", - "kumakogen.ehime.jp", - "masaki.ehime.jp", - "matsuno.ehime.jp", - "matsuyama.ehime.jp", - "namikata.ehime.jp", - "niihama.ehime.jp", - "ozu.ehime.jp", - "saijo.ehime.jp", - "seiyo.ehime.jp", - "shikokuchuo.ehime.jp", - "tobe.ehime.jp", - "toon.ehime.jp", - "uchiko.ehime.jp", - "uwajima.ehime.jp", - "yawatahama.ehime.jp", - "echizen.fukui.jp", - "eiheiji.fukui.jp", - "fukui.fukui.jp", - "ikeda.fukui.jp", - "katsuyama.fukui.jp", - "mihama.fukui.jp", - "minamiechizen.fukui.jp", - "obama.fukui.jp", - "ohi.fukui.jp", - "ono.fukui.jp", - "sabae.fukui.jp", - "sakai.fukui.jp", - "takahama.fukui.jp", - "tsuruga.fukui.jp", - "wakasa.fukui.jp", - "ashiya.fukuoka.jp", - "buzen.fukuoka.jp", - "chikugo.fukuoka.jp", - "chikuho.fukuoka.jp", - "chikujo.fukuoka.jp", - "chikushino.fukuoka.jp", - "chikuzen.fukuoka.jp", - "chuo.fukuoka.jp", - "dazaifu.fukuoka.jp", - "fukuchi.fukuoka.jp", - "hakata.fukuoka.jp", - "higashi.fukuoka.jp", - "hirokawa.fukuoka.jp", - "hisayama.fukuoka.jp", - "iizuka.fukuoka.jp", - "inatsuki.fukuoka.jp", - "kaho.fukuoka.jp", - "kasuga.fukuoka.jp", - "kasuya.fukuoka.jp", - "kawara.fukuoka.jp", - "keisen.fukuoka.jp", - "koga.fukuoka.jp", - "kurate.fukuoka.jp", - "kurogi.fukuoka.jp", - "kurume.fukuoka.jp", - "minami.fukuoka.jp", - "miyako.fukuoka.jp", - "miyama.fukuoka.jp", - "miyawaka.fukuoka.jp", - "mizumaki.fukuoka.jp", - "munakata.fukuoka.jp", - "nakagawa.fukuoka.jp", - "nakama.fukuoka.jp", - "nishi.fukuoka.jp", - "nogata.fukuoka.jp", - "ogori.fukuoka.jp", - "okagaki.fukuoka.jp", - "okawa.fukuoka.jp", - "oki.fukuoka.jp", - "omuta.fukuoka.jp", - "onga.fukuoka.jp", - "onojo.fukuoka.jp", - "oto.fukuoka.jp", - "saigawa.fukuoka.jp", - "sasaguri.fukuoka.jp", - "shingu.fukuoka.jp", - "shinyoshitomi.fukuoka.jp", - "shonai.fukuoka.jp", - "soeda.fukuoka.jp", - "sue.fukuoka.jp", - "tachiarai.fukuoka.jp", - "tagawa.fukuoka.jp", - "takata.fukuoka.jp", - "toho.fukuoka.jp", - "toyotsu.fukuoka.jp", - "tsuiki.fukuoka.jp", - "ukiha.fukuoka.jp", - "umi.fukuoka.jp", - "usui.fukuoka.jp", - "yamada.fukuoka.jp", - "yame.fukuoka.jp", - "yanagawa.fukuoka.jp", - "yukuhashi.fukuoka.jp", - "aizubange.fukushima.jp", - "aizumisato.fukushima.jp", - "aizuwakamatsu.fukushima.jp", - "asakawa.fukushima.jp", - "bandai.fukushima.jp", - "date.fukushima.jp", - "fukushima.fukushima.jp", - "furudono.fukushima.jp", - "futaba.fukushima.jp", - "hanawa.fukushima.jp", - "higashi.fukushima.jp", - "hirata.fukushima.jp", - "hirono.fukushima.jp", - "iitate.fukushima.jp", - "inawashiro.fukushima.jp", - "ishikawa.fukushima.jp", - "iwaki.fukushima.jp", - "izumizaki.fukushima.jp", - "kagamiishi.fukushima.jp", - "kaneyama.fukushima.jp", - "kawamata.fukushima.jp", - "kitakata.fukushima.jp", - "kitashiobara.fukushima.jp", - "koori.fukushima.jp", - "koriyama.fukushima.jp", - "kunimi.fukushima.jp", - "miharu.fukushima.jp", - "mishima.fukushima.jp", - "namie.fukushima.jp", - "nango.fukushima.jp", - "nishiaizu.fukushima.jp", - "nishigo.fukushima.jp", - "okuma.fukushima.jp", - "omotego.fukushima.jp", - "ono.fukushima.jp", - "otama.fukushima.jp", - "samegawa.fukushima.jp", - "shimogo.fukushima.jp", - "shirakawa.fukushima.jp", - "showa.fukushima.jp", - "soma.fukushima.jp", - "sukagawa.fukushima.jp", - "taishin.fukushima.jp", - "tamakawa.fukushima.jp", - "tanagura.fukushima.jp", - "tenei.fukushima.jp", - "yabuki.fukushima.jp", - "yamato.fukushima.jp", - "yamatsuri.fukushima.jp", - "yanaizu.fukushima.jp", - "yugawa.fukushima.jp", - "anpachi.gifu.jp", - "ena.gifu.jp", - "gifu.gifu.jp", - "ginan.gifu.jp", - "godo.gifu.jp", - "gujo.gifu.jp", - "hashima.gifu.jp", - "hichiso.gifu.jp", - "hida.gifu.jp", - "higashishirakawa.gifu.jp", - "ibigawa.gifu.jp", - "ikeda.gifu.jp", - "kakamigahara.gifu.jp", - "kani.gifu.jp", - "kasahara.gifu.jp", - "kasamatsu.gifu.jp", - "kawaue.gifu.jp", - "kitagata.gifu.jp", - "mino.gifu.jp", - "minokamo.gifu.jp", - "mitake.gifu.jp", - "mizunami.gifu.jp", - "motosu.gifu.jp", - "nakatsugawa.gifu.jp", - "ogaki.gifu.jp", - "sakahogi.gifu.jp", - "seki.gifu.jp", - "sekigahara.gifu.jp", - "shirakawa.gifu.jp", - "tajimi.gifu.jp", - "takayama.gifu.jp", - "tarui.gifu.jp", - "toki.gifu.jp", - "tomika.gifu.jp", - "wanouchi.gifu.jp", - "yamagata.gifu.jp", - "yaotsu.gifu.jp", - "yoro.gifu.jp", - "annaka.gunma.jp", - "chiyoda.gunma.jp", - "fujioka.gunma.jp", - "higashiagatsuma.gunma.jp", - "isesaki.gunma.jp", - "itakura.gunma.jp", - "kanna.gunma.jp", - "kanra.gunma.jp", - "katashina.gunma.jp", - "kawaba.gunma.jp", - "kiryu.gunma.jp", - "kusatsu.gunma.jp", - "maebashi.gunma.jp", - "meiwa.gunma.jp", - "midori.gunma.jp", - "minakami.gunma.jp", - "naganohara.gunma.jp", - "nakanojo.gunma.jp", - "nanmoku.gunma.jp", - "numata.gunma.jp", - "oizumi.gunma.jp", - "ora.gunma.jp", - "ota.gunma.jp", - "shibukawa.gunma.jp", - "shimonita.gunma.jp", - "shinto.gunma.jp", - "showa.gunma.jp", - "takasaki.gunma.jp", - "takayama.gunma.jp", - "tamamura.gunma.jp", - "tatebayashi.gunma.jp", - "tomioka.gunma.jp", - "tsukiyono.gunma.jp", - "tsumagoi.gunma.jp", - "ueno.gunma.jp", - "yoshioka.gunma.jp", - "asaminami.hiroshima.jp", - "daiwa.hiroshima.jp", - "etajima.hiroshima.jp", - "fuchu.hiroshima.jp", - "fukuyama.hiroshima.jp", - "hatsukaichi.hiroshima.jp", - "higashihiroshima.hiroshima.jp", - "hongo.hiroshima.jp", - "jinsekikogen.hiroshima.jp", - "kaita.hiroshima.jp", - "kui.hiroshima.jp", - "kumano.hiroshima.jp", - "kure.hiroshima.jp", - "mihara.hiroshima.jp", - "miyoshi.hiroshima.jp", - "naka.hiroshima.jp", - "onomichi.hiroshima.jp", - "osakikamijima.hiroshima.jp", - "otake.hiroshima.jp", - "saka.hiroshima.jp", - "sera.hiroshima.jp", - "seranishi.hiroshima.jp", - "shinichi.hiroshima.jp", - "shobara.hiroshima.jp", - "takehara.hiroshima.jp", - "abashiri.hokkaido.jp", - "abira.hokkaido.jp", - "aibetsu.hokkaido.jp", - "akabira.hokkaido.jp", - "akkeshi.hokkaido.jp", - "asahikawa.hokkaido.jp", - "ashibetsu.hokkaido.jp", - "ashoro.hokkaido.jp", - "assabu.hokkaido.jp", - "atsuma.hokkaido.jp", - "bibai.hokkaido.jp", - "biei.hokkaido.jp", - "bifuka.hokkaido.jp", - "bihoro.hokkaido.jp", - "biratori.hokkaido.jp", - "chippubetsu.hokkaido.jp", - "chitose.hokkaido.jp", - "date.hokkaido.jp", - "ebetsu.hokkaido.jp", - "embetsu.hokkaido.jp", - "eniwa.hokkaido.jp", - "erimo.hokkaido.jp", - "esan.hokkaido.jp", - "esashi.hokkaido.jp", - "fukagawa.hokkaido.jp", - "fukushima.hokkaido.jp", - "furano.hokkaido.jp", - "furubira.hokkaido.jp", - "haboro.hokkaido.jp", - "hakodate.hokkaido.jp", - "hamatonbetsu.hokkaido.jp", - "hidaka.hokkaido.jp", - "higashikagura.hokkaido.jp", - "higashikawa.hokkaido.jp", - "hiroo.hokkaido.jp", - "hokuryu.hokkaido.jp", - "hokuto.hokkaido.jp", - "honbetsu.hokkaido.jp", - "horokanai.hokkaido.jp", - "horonobe.hokkaido.jp", - "ikeda.hokkaido.jp", - "imakane.hokkaido.jp", - "ishikari.hokkaido.jp", - "iwamizawa.hokkaido.jp", - "iwanai.hokkaido.jp", - "kamifurano.hokkaido.jp", - "kamikawa.hokkaido.jp", - "kamishihoro.hokkaido.jp", - "kamisunagawa.hokkaido.jp", - "kamoenai.hokkaido.jp", - "kayabe.hokkaido.jp", - "kembuchi.hokkaido.jp", - "kikonai.hokkaido.jp", - "kimobetsu.hokkaido.jp", - "kitahiroshima.hokkaido.jp", - "kitami.hokkaido.jp", - "kiyosato.hokkaido.jp", - "koshimizu.hokkaido.jp", - "kunneppu.hokkaido.jp", - "kuriyama.hokkaido.jp", - "kuromatsunai.hokkaido.jp", - "kushiro.hokkaido.jp", - "kutchan.hokkaido.jp", - "kyowa.hokkaido.jp", - "mashike.hokkaido.jp", - "matsumae.hokkaido.jp", - "mikasa.hokkaido.jp", - "minamifurano.hokkaido.jp", - "mombetsu.hokkaido.jp", - "moseushi.hokkaido.jp", - "mukawa.hokkaido.jp", - "muroran.hokkaido.jp", - "naie.hokkaido.jp", - "nakagawa.hokkaido.jp", - "nakasatsunai.hokkaido.jp", - "nakatombetsu.hokkaido.jp", - "nanae.hokkaido.jp", - "nanporo.hokkaido.jp", - "nayoro.hokkaido.jp", - "nemuro.hokkaido.jp", - "niikappu.hokkaido.jp", - "niki.hokkaido.jp", - "nishiokoppe.hokkaido.jp", - "noboribetsu.hokkaido.jp", - "numata.hokkaido.jp", - "obihiro.hokkaido.jp", - "obira.hokkaido.jp", - "oketo.hokkaido.jp", - "okoppe.hokkaido.jp", - "otaru.hokkaido.jp", - "otobe.hokkaido.jp", - "otofuke.hokkaido.jp", - "otoineppu.hokkaido.jp", - "oumu.hokkaido.jp", - "ozora.hokkaido.jp", - "pippu.hokkaido.jp", - "rankoshi.hokkaido.jp", - "rebun.hokkaido.jp", - "rikubetsu.hokkaido.jp", - "rishiri.hokkaido.jp", - "rishirifuji.hokkaido.jp", - "saroma.hokkaido.jp", - "sarufutsu.hokkaido.jp", - "shakotan.hokkaido.jp", - "shari.hokkaido.jp", - "shibecha.hokkaido.jp", - "shibetsu.hokkaido.jp", - "shikabe.hokkaido.jp", - "shikaoi.hokkaido.jp", - "shimamaki.hokkaido.jp", - "shimizu.hokkaido.jp", - "shimokawa.hokkaido.jp", - "shinshinotsu.hokkaido.jp", - "shintoku.hokkaido.jp", - "shiranuka.hokkaido.jp", - "shiraoi.hokkaido.jp", - "shiriuchi.hokkaido.jp", - "sobetsu.hokkaido.jp", - "sunagawa.hokkaido.jp", - "taiki.hokkaido.jp", - "takasu.hokkaido.jp", - "takikawa.hokkaido.jp", - "takinoue.hokkaido.jp", - "teshikaga.hokkaido.jp", - "tobetsu.hokkaido.jp", - "tohma.hokkaido.jp", - "tomakomai.hokkaido.jp", - "tomari.hokkaido.jp", - "toya.hokkaido.jp", - "toyako.hokkaido.jp", - "toyotomi.hokkaido.jp", - "toyoura.hokkaido.jp", - "tsubetsu.hokkaido.jp", - "tsukigata.hokkaido.jp", - "urakawa.hokkaido.jp", - "urausu.hokkaido.jp", - "uryu.hokkaido.jp", - "utashinai.hokkaido.jp", - "wakkanai.hokkaido.jp", - "wassamu.hokkaido.jp", - "yakumo.hokkaido.jp", - "yoichi.hokkaido.jp", - "aioi.hyogo.jp", - "akashi.hyogo.jp", - "ako.hyogo.jp", - "amagasaki.hyogo.jp", - "aogaki.hyogo.jp", - "asago.hyogo.jp", - "ashiya.hyogo.jp", - "awaji.hyogo.jp", - "fukusaki.hyogo.jp", - "goshiki.hyogo.jp", - "harima.hyogo.jp", - "himeji.hyogo.jp", - "ichikawa.hyogo.jp", - "inagawa.hyogo.jp", - "itami.hyogo.jp", - "kakogawa.hyogo.jp", - "kamigori.hyogo.jp", - "kamikawa.hyogo.jp", - "kasai.hyogo.jp", - "kasuga.hyogo.jp", - "kawanishi.hyogo.jp", - "miki.hyogo.jp", - "minamiawaji.hyogo.jp", - "nishinomiya.hyogo.jp", - "nishiwaki.hyogo.jp", - "ono.hyogo.jp", - "sanda.hyogo.jp", - "sannan.hyogo.jp", - "sasayama.hyogo.jp", - "sayo.hyogo.jp", - "shingu.hyogo.jp", - "shinonsen.hyogo.jp", - "shiso.hyogo.jp", - "sumoto.hyogo.jp", - "taishi.hyogo.jp", - "taka.hyogo.jp", - "takarazuka.hyogo.jp", - "takasago.hyogo.jp", - "takino.hyogo.jp", - "tamba.hyogo.jp", - "tatsuno.hyogo.jp", - "toyooka.hyogo.jp", - "yabu.hyogo.jp", - "yashiro.hyogo.jp", - "yoka.hyogo.jp", - "yokawa.hyogo.jp", - "ami.ibaraki.jp", - "asahi.ibaraki.jp", - "bando.ibaraki.jp", - "chikusei.ibaraki.jp", - "daigo.ibaraki.jp", - "fujishiro.ibaraki.jp", - "hitachi.ibaraki.jp", - "hitachinaka.ibaraki.jp", - "hitachiomiya.ibaraki.jp", - "hitachiota.ibaraki.jp", - "ibaraki.ibaraki.jp", - "ina.ibaraki.jp", - "inashiki.ibaraki.jp", - "itako.ibaraki.jp", - "iwama.ibaraki.jp", - "joso.ibaraki.jp", - "kamisu.ibaraki.jp", - "kasama.ibaraki.jp", - "kashima.ibaraki.jp", - "kasumigaura.ibaraki.jp", - "koga.ibaraki.jp", - "miho.ibaraki.jp", - "mito.ibaraki.jp", - "moriya.ibaraki.jp", - "naka.ibaraki.jp", - "namegata.ibaraki.jp", - "oarai.ibaraki.jp", - "ogawa.ibaraki.jp", - "omitama.ibaraki.jp", - "ryugasaki.ibaraki.jp", - "sakai.ibaraki.jp", - "sakuragawa.ibaraki.jp", - "shimodate.ibaraki.jp", - "shimotsuma.ibaraki.jp", - "shirosato.ibaraki.jp", - "sowa.ibaraki.jp", - "suifu.ibaraki.jp", - "takahagi.ibaraki.jp", - "tamatsukuri.ibaraki.jp", - "tokai.ibaraki.jp", - "tomobe.ibaraki.jp", - "tone.ibaraki.jp", - "toride.ibaraki.jp", - "tsuchiura.ibaraki.jp", - "tsukuba.ibaraki.jp", - "uchihara.ibaraki.jp", - "ushiku.ibaraki.jp", - "yachiyo.ibaraki.jp", - "yamagata.ibaraki.jp", - "yawara.ibaraki.jp", - "yuki.ibaraki.jp", - "anamizu.ishikawa.jp", - "hakui.ishikawa.jp", - "hakusan.ishikawa.jp", - "kaga.ishikawa.jp", - "kahoku.ishikawa.jp", - "kanazawa.ishikawa.jp", - "kawakita.ishikawa.jp", - "komatsu.ishikawa.jp", - "nakanoto.ishikawa.jp", - "nanao.ishikawa.jp", - "nomi.ishikawa.jp", - "nonoichi.ishikawa.jp", - "noto.ishikawa.jp", - "shika.ishikawa.jp", - "suzu.ishikawa.jp", - "tsubata.ishikawa.jp", - "tsurugi.ishikawa.jp", - "uchinada.ishikawa.jp", - "wajima.ishikawa.jp", - "fudai.iwate.jp", - "fujisawa.iwate.jp", - "hanamaki.iwate.jp", - "hiraizumi.iwate.jp", - "hirono.iwate.jp", - "ichinohe.iwate.jp", - "ichinoseki.iwate.jp", - "iwaizumi.iwate.jp", - "iwate.iwate.jp", - "joboji.iwate.jp", - "kamaishi.iwate.jp", - "kanegasaki.iwate.jp", - "karumai.iwate.jp", - "kawai.iwate.jp", - "kitakami.iwate.jp", - "kuji.iwate.jp", - "kunohe.iwate.jp", - "kuzumaki.iwate.jp", - "miyako.iwate.jp", - "mizusawa.iwate.jp", - "morioka.iwate.jp", - "ninohe.iwate.jp", - "noda.iwate.jp", - "ofunato.iwate.jp", - "oshu.iwate.jp", - "otsuchi.iwate.jp", - "rikuzentakata.iwate.jp", - "shiwa.iwate.jp", - "shizukuishi.iwate.jp", - "sumita.iwate.jp", - "tanohata.iwate.jp", - "tono.iwate.jp", - "yahaba.iwate.jp", - "yamada.iwate.jp", - "ayagawa.kagawa.jp", - "higashikagawa.kagawa.jp", - "kanonji.kagawa.jp", - "kotohira.kagawa.jp", - "manno.kagawa.jp", - "marugame.kagawa.jp", - "mitoyo.kagawa.jp", - "naoshima.kagawa.jp", - "sanuki.kagawa.jp", - "tadotsu.kagawa.jp", - "takamatsu.kagawa.jp", - "tonosho.kagawa.jp", - "uchinomi.kagawa.jp", - "utazu.kagawa.jp", - "zentsuji.kagawa.jp", - "akune.kagoshima.jp", - "amami.kagoshima.jp", - "hioki.kagoshima.jp", - "isa.kagoshima.jp", - "isen.kagoshima.jp", - "izumi.kagoshima.jp", - "kagoshima.kagoshima.jp", - "kanoya.kagoshima.jp", - "kawanabe.kagoshima.jp", - "kinko.kagoshima.jp", - "kouyama.kagoshima.jp", - "makurazaki.kagoshima.jp", - "matsumoto.kagoshima.jp", - "minamitane.kagoshima.jp", - "nakatane.kagoshima.jp", - "nishinoomote.kagoshima.jp", - "satsumasendai.kagoshima.jp", - "soo.kagoshima.jp", - "tarumizu.kagoshima.jp", - "yusui.kagoshima.jp", - "aikawa.kanagawa.jp", - "atsugi.kanagawa.jp", - "ayase.kanagawa.jp", - "chigasaki.kanagawa.jp", - "ebina.kanagawa.jp", - "fujisawa.kanagawa.jp", - "hadano.kanagawa.jp", - "hakone.kanagawa.jp", - "hiratsuka.kanagawa.jp", - "isehara.kanagawa.jp", - "kaisei.kanagawa.jp", - "kamakura.kanagawa.jp", - "kiyokawa.kanagawa.jp", - "matsuda.kanagawa.jp", - "minamiashigara.kanagawa.jp", - "miura.kanagawa.jp", - "nakai.kanagawa.jp", - "ninomiya.kanagawa.jp", - "odawara.kanagawa.jp", - "oi.kanagawa.jp", - "oiso.kanagawa.jp", - "sagamihara.kanagawa.jp", - "samukawa.kanagawa.jp", - "tsukui.kanagawa.jp", - "yamakita.kanagawa.jp", - "yamato.kanagawa.jp", - "yokosuka.kanagawa.jp", - "yugawara.kanagawa.jp", - "zama.kanagawa.jp", - "zushi.kanagawa.jp", - "aki.kochi.jp", - "geisei.kochi.jp", - "hidaka.kochi.jp", - "higashitsuno.kochi.jp", - "ino.kochi.jp", - "kagami.kochi.jp", - "kami.kochi.jp", - "kitagawa.kochi.jp", - "kochi.kochi.jp", - "mihara.kochi.jp", - "motoyama.kochi.jp", - "muroto.kochi.jp", - "nahari.kochi.jp", - "nakamura.kochi.jp", - "nankoku.kochi.jp", - "nishitosa.kochi.jp", - "niyodogawa.kochi.jp", - "ochi.kochi.jp", - "okawa.kochi.jp", - "otoyo.kochi.jp", - "otsuki.kochi.jp", - "sakawa.kochi.jp", - "sukumo.kochi.jp", - "susaki.kochi.jp", - "tosa.kochi.jp", - "tosashimizu.kochi.jp", - "toyo.kochi.jp", - "tsuno.kochi.jp", - "umaji.kochi.jp", - "yasuda.kochi.jp", - "yusuhara.kochi.jp", - "amakusa.kumamoto.jp", - "arao.kumamoto.jp", - "aso.kumamoto.jp", - "choyo.kumamoto.jp", - "gyokuto.kumamoto.jp", - "kamiamakusa.kumamoto.jp", - "kikuchi.kumamoto.jp", - "kumamoto.kumamoto.jp", - "mashiki.kumamoto.jp", - "mifune.kumamoto.jp", - "minamata.kumamoto.jp", - "minamioguni.kumamoto.jp", - "nagasu.kumamoto.jp", - "nishihara.kumamoto.jp", - "oguni.kumamoto.jp", - "ozu.kumamoto.jp", - "sumoto.kumamoto.jp", - "takamori.kumamoto.jp", - "uki.kumamoto.jp", - "uto.kumamoto.jp", - "yamaga.kumamoto.jp", - "yamato.kumamoto.jp", - "yatsushiro.kumamoto.jp", - "ayabe.kyoto.jp", - "fukuchiyama.kyoto.jp", - "higashiyama.kyoto.jp", - "ide.kyoto.jp", - "ine.kyoto.jp", - "joyo.kyoto.jp", - "kameoka.kyoto.jp", - "kamo.kyoto.jp", - "kita.kyoto.jp", - "kizu.kyoto.jp", - "kumiyama.kyoto.jp", - "kyotamba.kyoto.jp", - "kyotanabe.kyoto.jp", - "kyotango.kyoto.jp", - "maizuru.kyoto.jp", - "minami.kyoto.jp", - "minamiyamashiro.kyoto.jp", - "miyazu.kyoto.jp", - "muko.kyoto.jp", - "nagaokakyo.kyoto.jp", - "nakagyo.kyoto.jp", - "nantan.kyoto.jp", - "oyamazaki.kyoto.jp", - "sakyo.kyoto.jp", - "seika.kyoto.jp", - "tanabe.kyoto.jp", - "uji.kyoto.jp", - "ujitawara.kyoto.jp", - "wazuka.kyoto.jp", - "yamashina.kyoto.jp", - "yawata.kyoto.jp", - "asahi.mie.jp", - "inabe.mie.jp", - "ise.mie.jp", - "kameyama.mie.jp", - "kawagoe.mie.jp", - "kiho.mie.jp", - "kisosaki.mie.jp", - "kiwa.mie.jp", - "komono.mie.jp", - "kumano.mie.jp", - "kuwana.mie.jp", - "matsusaka.mie.jp", - "meiwa.mie.jp", - "mihama.mie.jp", - "minamiise.mie.jp", - "misugi.mie.jp", - "miyama.mie.jp", - "nabari.mie.jp", - "shima.mie.jp", - "suzuka.mie.jp", - "tado.mie.jp", - "taiki.mie.jp", - "taki.mie.jp", - "tamaki.mie.jp", - "toba.mie.jp", - "tsu.mie.jp", - "udono.mie.jp", - "ureshino.mie.jp", - "watarai.mie.jp", - "yokkaichi.mie.jp", - "furukawa.miyagi.jp", - "higashimatsushima.miyagi.jp", - "ishinomaki.miyagi.jp", - "iwanuma.miyagi.jp", - "kakuda.miyagi.jp", - "kami.miyagi.jp", - "kawasaki.miyagi.jp", - "marumori.miyagi.jp", - "matsushima.miyagi.jp", - "minamisanriku.miyagi.jp", - "misato.miyagi.jp", - "murata.miyagi.jp", - "natori.miyagi.jp", - "ogawara.miyagi.jp", - "ohira.miyagi.jp", - "onagawa.miyagi.jp", - "osaki.miyagi.jp", - "rifu.miyagi.jp", - "semine.miyagi.jp", - "shibata.miyagi.jp", - "shichikashuku.miyagi.jp", - "shikama.miyagi.jp", - "shiogama.miyagi.jp", - "shiroishi.miyagi.jp", - "tagajo.miyagi.jp", - "taiwa.miyagi.jp", - "tome.miyagi.jp", - "tomiya.miyagi.jp", - "wakuya.miyagi.jp", - "watari.miyagi.jp", - "yamamoto.miyagi.jp", - "zao.miyagi.jp", - "aya.miyazaki.jp", - "ebino.miyazaki.jp", - "gokase.miyazaki.jp", - "hyuga.miyazaki.jp", - "kadogawa.miyazaki.jp", - "kawaminami.miyazaki.jp", - "kijo.miyazaki.jp", - "kitagawa.miyazaki.jp", - "kitakata.miyazaki.jp", - "kitaura.miyazaki.jp", - "kobayashi.miyazaki.jp", - "kunitomi.miyazaki.jp", - "kushima.miyazaki.jp", - "mimata.miyazaki.jp", - "miyakonojo.miyazaki.jp", - "miyazaki.miyazaki.jp", - "morotsuka.miyazaki.jp", - "nichinan.miyazaki.jp", - "nishimera.miyazaki.jp", - "nobeoka.miyazaki.jp", - "saito.miyazaki.jp", - "shiiba.miyazaki.jp", - "shintomi.miyazaki.jp", - "takaharu.miyazaki.jp", - "takanabe.miyazaki.jp", - "takazaki.miyazaki.jp", - "tsuno.miyazaki.jp", - "achi.nagano.jp", - "agematsu.nagano.jp", - "anan.nagano.jp", - "aoki.nagano.jp", - "asahi.nagano.jp", - "azumino.nagano.jp", - "chikuhoku.nagano.jp", - "chikuma.nagano.jp", - "chino.nagano.jp", - "fujimi.nagano.jp", - "hakuba.nagano.jp", - "hara.nagano.jp", - "hiraya.nagano.jp", - "iida.nagano.jp", - "iijima.nagano.jp", - "iiyama.nagano.jp", - "iizuna.nagano.jp", - "ikeda.nagano.jp", - "ikusaka.nagano.jp", - "ina.nagano.jp", - "karuizawa.nagano.jp", - "kawakami.nagano.jp", - "kiso.nagano.jp", - "kisofukushima.nagano.jp", - "kitaaiki.nagano.jp", - "komagane.nagano.jp", - "komoro.nagano.jp", - "matsukawa.nagano.jp", - "matsumoto.nagano.jp", - "miasa.nagano.jp", - "minamiaiki.nagano.jp", - "minamimaki.nagano.jp", - "minamiminowa.nagano.jp", - "minowa.nagano.jp", - "miyada.nagano.jp", - "miyota.nagano.jp", - "mochizuki.nagano.jp", - "nagano.nagano.jp", - "nagawa.nagano.jp", - "nagiso.nagano.jp", - "nakagawa.nagano.jp", - "nakano.nagano.jp", - "nozawaonsen.nagano.jp", - "obuse.nagano.jp", - "ogawa.nagano.jp", - "okaya.nagano.jp", - "omachi.nagano.jp", - "omi.nagano.jp", - "ookuwa.nagano.jp", - "ooshika.nagano.jp", - "otaki.nagano.jp", - "otari.nagano.jp", - "sakae.nagano.jp", - "sakaki.nagano.jp", - "saku.nagano.jp", - "sakuho.nagano.jp", - "shimosuwa.nagano.jp", - "shinanomachi.nagano.jp", - "shiojiri.nagano.jp", - "suwa.nagano.jp", - "suzaka.nagano.jp", - "takagi.nagano.jp", - "takamori.nagano.jp", - "takayama.nagano.jp", - "tateshina.nagano.jp", - "tatsuno.nagano.jp", - "togakushi.nagano.jp", - "togura.nagano.jp", - "tomi.nagano.jp", - "ueda.nagano.jp", - "wada.nagano.jp", - "yamagata.nagano.jp", - "yamanouchi.nagano.jp", - "yasaka.nagano.jp", - "yasuoka.nagano.jp", - "chijiwa.nagasaki.jp", - "futsu.nagasaki.jp", - "goto.nagasaki.jp", - "hasami.nagasaki.jp", - "hirado.nagasaki.jp", - "iki.nagasaki.jp", - "isahaya.nagasaki.jp", - "kawatana.nagasaki.jp", - "kuchinotsu.nagasaki.jp", - "matsuura.nagasaki.jp", - "nagasaki.nagasaki.jp", - "obama.nagasaki.jp", - "omura.nagasaki.jp", - "oseto.nagasaki.jp", - "saikai.nagasaki.jp", - "sasebo.nagasaki.jp", - "seihi.nagasaki.jp", - "shimabara.nagasaki.jp", - "shinkamigoto.nagasaki.jp", - "togitsu.nagasaki.jp", - "tsushima.nagasaki.jp", - "unzen.nagasaki.jp", - "ando.nara.jp", - "gose.nara.jp", - "heguri.nara.jp", - "higashiyoshino.nara.jp", - "ikaruga.nara.jp", - "ikoma.nara.jp", - "kamikitayama.nara.jp", - "kanmaki.nara.jp", - "kashiba.nara.jp", - "kashihara.nara.jp", - "katsuragi.nara.jp", - "kawai.nara.jp", - "kawakami.nara.jp", - "kawanishi.nara.jp", - "koryo.nara.jp", - "kurotaki.nara.jp", - "mitsue.nara.jp", - "miyake.nara.jp", - "nara.nara.jp", - "nosegawa.nara.jp", - "oji.nara.jp", - "ouda.nara.jp", - "oyodo.nara.jp", - "sakurai.nara.jp", - "sango.nara.jp", - "shimoichi.nara.jp", - "shimokitayama.nara.jp", - "shinjo.nara.jp", - "soni.nara.jp", - "takatori.nara.jp", - "tawaramoto.nara.jp", - "tenkawa.nara.jp", - "tenri.nara.jp", - "uda.nara.jp", - "yamatokoriyama.nara.jp", - "yamatotakada.nara.jp", - "yamazoe.nara.jp", - "yoshino.nara.jp", - "aga.niigata.jp", - "agano.niigata.jp", - "gosen.niigata.jp", - "itoigawa.niigata.jp", - "izumozaki.niigata.jp", - "joetsu.niigata.jp", - "kamo.niigata.jp", - "kariwa.niigata.jp", - "kashiwazaki.niigata.jp", - "minamiuonuma.niigata.jp", - "mitsuke.niigata.jp", - "muika.niigata.jp", - "murakami.niigata.jp", - "myoko.niigata.jp", - "nagaoka.niigata.jp", - "niigata.niigata.jp", - "ojiya.niigata.jp", - "omi.niigata.jp", - "sado.niigata.jp", - "sanjo.niigata.jp", - "seiro.niigata.jp", - "seirou.niigata.jp", - "sekikawa.niigata.jp", - "shibata.niigata.jp", - "tagami.niigata.jp", - "tainai.niigata.jp", - "tochio.niigata.jp", - "tokamachi.niigata.jp", - "tsubame.niigata.jp", - "tsunan.niigata.jp", - "uonuma.niigata.jp", - "yahiko.niigata.jp", - "yoita.niigata.jp", - "yuzawa.niigata.jp", - "beppu.oita.jp", - "bungoono.oita.jp", - "bungotakada.oita.jp", - "hasama.oita.jp", - "hiji.oita.jp", - "himeshima.oita.jp", - "hita.oita.jp", - "kamitsue.oita.jp", - "kokonoe.oita.jp", - "kuju.oita.jp", - "kunisaki.oita.jp", - "kusu.oita.jp", - "oita.oita.jp", - "saiki.oita.jp", - "taketa.oita.jp", - "tsukumi.oita.jp", - "usa.oita.jp", - "usuki.oita.jp", - "yufu.oita.jp", - "akaiwa.okayama.jp", - "asakuchi.okayama.jp", - "bizen.okayama.jp", - "hayashima.okayama.jp", - "ibara.okayama.jp", - "kagamino.okayama.jp", - "kasaoka.okayama.jp", - "kibichuo.okayama.jp", - "kumenan.okayama.jp", - "kurashiki.okayama.jp", - "maniwa.okayama.jp", - "misaki.okayama.jp", - "nagi.okayama.jp", - "niimi.okayama.jp", - "nishiawakura.okayama.jp", - "okayama.okayama.jp", - "satosho.okayama.jp", - "setouchi.okayama.jp", - "shinjo.okayama.jp", - "shoo.okayama.jp", - "soja.okayama.jp", - "takahashi.okayama.jp", - "tamano.okayama.jp", - "tsuyama.okayama.jp", - "wake.okayama.jp", - "yakage.okayama.jp", - "aguni.okinawa.jp", - "ginowan.okinawa.jp", - "ginoza.okinawa.jp", - "gushikami.okinawa.jp", - "haebaru.okinawa.jp", - "higashi.okinawa.jp", - "hirara.okinawa.jp", - "iheya.okinawa.jp", - "ishigaki.okinawa.jp", - "ishikawa.okinawa.jp", - "itoman.okinawa.jp", - "izena.okinawa.jp", - "kadena.okinawa.jp", - "kin.okinawa.jp", - "kitadaito.okinawa.jp", - "kitanakagusuku.okinawa.jp", - "kumejima.okinawa.jp", - "kunigami.okinawa.jp", - "minamidaito.okinawa.jp", - "motobu.okinawa.jp", - "nago.okinawa.jp", - "naha.okinawa.jp", - "nakagusuku.okinawa.jp", - "nakijin.okinawa.jp", - "nanjo.okinawa.jp", - "nishihara.okinawa.jp", - "ogimi.okinawa.jp", - "okinawa.okinawa.jp", - "onna.okinawa.jp", - "shimoji.okinawa.jp", - "taketomi.okinawa.jp", - "tarama.okinawa.jp", - "tokashiki.okinawa.jp", - "tomigusuku.okinawa.jp", - "tonaki.okinawa.jp", - "urasoe.okinawa.jp", - "uruma.okinawa.jp", - "yaese.okinawa.jp", - "yomitan.okinawa.jp", - "yonabaru.okinawa.jp", - "yonaguni.okinawa.jp", - "zamami.okinawa.jp", - "abeno.osaka.jp", - "chihayaakasaka.osaka.jp", - "chuo.osaka.jp", - "daito.osaka.jp", - "fujiidera.osaka.jp", - "habikino.osaka.jp", - "hannan.osaka.jp", - "higashiosaka.osaka.jp", - "higashisumiyoshi.osaka.jp", - "higashiyodogawa.osaka.jp", - "hirakata.osaka.jp", - "ibaraki.osaka.jp", - "ikeda.osaka.jp", - "izumi.osaka.jp", - "izumiotsu.osaka.jp", - "izumisano.osaka.jp", - "kadoma.osaka.jp", - "kaizuka.osaka.jp", - "kanan.osaka.jp", - "kashiwara.osaka.jp", - "katano.osaka.jp", - "kawachinagano.osaka.jp", - "kishiwada.osaka.jp", - "kita.osaka.jp", - "kumatori.osaka.jp", - "matsubara.osaka.jp", - "minato.osaka.jp", - "minoh.osaka.jp", - "misaki.osaka.jp", - "moriguchi.osaka.jp", - "neyagawa.osaka.jp", - "nishi.osaka.jp", - "nose.osaka.jp", - "osakasayama.osaka.jp", - "sakai.osaka.jp", - "sayama.osaka.jp", - "sennan.osaka.jp", - "settsu.osaka.jp", - "shijonawate.osaka.jp", - "shimamoto.osaka.jp", - "suita.osaka.jp", - "tadaoka.osaka.jp", - "taishi.osaka.jp", - "tajiri.osaka.jp", - "takaishi.osaka.jp", - "takatsuki.osaka.jp", - "tondabayashi.osaka.jp", - "toyonaka.osaka.jp", - "toyono.osaka.jp", - "yao.osaka.jp", - "ariake.saga.jp", - "arita.saga.jp", - "fukudomi.saga.jp", - "genkai.saga.jp", - "hamatama.saga.jp", - "hizen.saga.jp", - "imari.saga.jp", - "kamimine.saga.jp", - "kanzaki.saga.jp", - "karatsu.saga.jp", - "kashima.saga.jp", - "kitagata.saga.jp", - "kitahata.saga.jp", - "kiyama.saga.jp", - "kouhoku.saga.jp", - "kyuragi.saga.jp", - "nishiarita.saga.jp", - "ogi.saga.jp", - "omachi.saga.jp", - "ouchi.saga.jp", - "saga.saga.jp", - "shiroishi.saga.jp", - "taku.saga.jp", - "tara.saga.jp", - "tosu.saga.jp", - "yoshinogari.saga.jp", - "arakawa.saitama.jp", - "asaka.saitama.jp", - "chichibu.saitama.jp", - "fujimi.saitama.jp", - "fujimino.saitama.jp", - "fukaya.saitama.jp", - "hanno.saitama.jp", - "hanyu.saitama.jp", - "hasuda.saitama.jp", - "hatogaya.saitama.jp", - "hatoyama.saitama.jp", - "hidaka.saitama.jp", - "higashichichibu.saitama.jp", - "higashimatsuyama.saitama.jp", - "honjo.saitama.jp", - "ina.saitama.jp", - "iruma.saitama.jp", - "iwatsuki.saitama.jp", - "kamiizumi.saitama.jp", - "kamikawa.saitama.jp", - "kamisato.saitama.jp", - "kasukabe.saitama.jp", - "kawagoe.saitama.jp", - "kawaguchi.saitama.jp", - "kawajima.saitama.jp", - "kazo.saitama.jp", - "kitamoto.saitama.jp", - "koshigaya.saitama.jp", - "kounosu.saitama.jp", - "kuki.saitama.jp", - "kumagaya.saitama.jp", - "matsubushi.saitama.jp", - "minano.saitama.jp", - "misato.saitama.jp", - "miyashiro.saitama.jp", - "miyoshi.saitama.jp", - "moroyama.saitama.jp", - "nagatoro.saitama.jp", - "namegawa.saitama.jp", - "niiza.saitama.jp", - "ogano.saitama.jp", - "ogawa.saitama.jp", - "ogose.saitama.jp", - "okegawa.saitama.jp", - "omiya.saitama.jp", - "otaki.saitama.jp", - "ranzan.saitama.jp", - "ryokami.saitama.jp", - "saitama.saitama.jp", - "sakado.saitama.jp", - "satte.saitama.jp", - "sayama.saitama.jp", - "shiki.saitama.jp", - "shiraoka.saitama.jp", - "soka.saitama.jp", - "sugito.saitama.jp", - "toda.saitama.jp", - "tokigawa.saitama.jp", - "tokorozawa.saitama.jp", - "tsurugashima.saitama.jp", - "urawa.saitama.jp", - "warabi.saitama.jp", - "yashio.saitama.jp", - "yokoze.saitama.jp", - "yono.saitama.jp", - "yorii.saitama.jp", - "yoshida.saitama.jp", - "yoshikawa.saitama.jp", - "yoshimi.saitama.jp", - "aisho.shiga.jp", - "gamo.shiga.jp", - "higashiomi.shiga.jp", - "hikone.shiga.jp", - "koka.shiga.jp", - "konan.shiga.jp", - "kosei.shiga.jp", - "koto.shiga.jp", - "kusatsu.shiga.jp", - "maibara.shiga.jp", - "moriyama.shiga.jp", - "nagahama.shiga.jp", - "nishiazai.shiga.jp", - "notogawa.shiga.jp", - "omihachiman.shiga.jp", - "otsu.shiga.jp", - "ritto.shiga.jp", - "ryuoh.shiga.jp", - "takashima.shiga.jp", - "takatsuki.shiga.jp", - "torahime.shiga.jp", - "toyosato.shiga.jp", - "yasu.shiga.jp", - "akagi.shimane.jp", - "ama.shimane.jp", - "gotsu.shimane.jp", - "hamada.shimane.jp", - "higashiizumo.shimane.jp", - "hikawa.shimane.jp", - "hikimi.shimane.jp", - "izumo.shimane.jp", - "kakinoki.shimane.jp", - "masuda.shimane.jp", - "matsue.shimane.jp", - "misato.shimane.jp", - "nishinoshima.shimane.jp", - "ohda.shimane.jp", - "okinoshima.shimane.jp", - "okuizumo.shimane.jp", - "shimane.shimane.jp", - "tamayu.shimane.jp", - "tsuwano.shimane.jp", - "unnan.shimane.jp", - "yakumo.shimane.jp", - "yasugi.shimane.jp", - "yatsuka.shimane.jp", - "arai.shizuoka.jp", - "atami.shizuoka.jp", - "fuji.shizuoka.jp", - "fujieda.shizuoka.jp", - "fujikawa.shizuoka.jp", - "fujinomiya.shizuoka.jp", - "fukuroi.shizuoka.jp", - "gotemba.shizuoka.jp", - "haibara.shizuoka.jp", - "hamamatsu.shizuoka.jp", - "higashiizu.shizuoka.jp", - "ito.shizuoka.jp", - "iwata.shizuoka.jp", - "izu.shizuoka.jp", - "izunokuni.shizuoka.jp", - "kakegawa.shizuoka.jp", - "kannami.shizuoka.jp", - "kawanehon.shizuoka.jp", - "kawazu.shizuoka.jp", - "kikugawa.shizuoka.jp", - "kosai.shizuoka.jp", - "makinohara.shizuoka.jp", - "matsuzaki.shizuoka.jp", - "minamiizu.shizuoka.jp", - "mishima.shizuoka.jp", - "morimachi.shizuoka.jp", - "nishiizu.shizuoka.jp", - "numazu.shizuoka.jp", - "omaezaki.shizuoka.jp", - "shimada.shizuoka.jp", - "shimizu.shizuoka.jp", - "shimoda.shizuoka.jp", - "shizuoka.shizuoka.jp", - "susono.shizuoka.jp", - "yaizu.shizuoka.jp", - "yoshida.shizuoka.jp", - "ashikaga.tochigi.jp", - "bato.tochigi.jp", - "haga.tochigi.jp", - "ichikai.tochigi.jp", - "iwafune.tochigi.jp", - "kaminokawa.tochigi.jp", - "kanuma.tochigi.jp", - "karasuyama.tochigi.jp", - "kuroiso.tochigi.jp", - "mashiko.tochigi.jp", - "mibu.tochigi.jp", - "moka.tochigi.jp", - "motegi.tochigi.jp", - "nasu.tochigi.jp", - "nasushiobara.tochigi.jp", - "nikko.tochigi.jp", - "nishikata.tochigi.jp", - "nogi.tochigi.jp", - "ohira.tochigi.jp", - "ohtawara.tochigi.jp", - "oyama.tochigi.jp", - "sakura.tochigi.jp", - "sano.tochigi.jp", - "shimotsuke.tochigi.jp", - "shioya.tochigi.jp", - "takanezawa.tochigi.jp", - "tochigi.tochigi.jp", - "tsuga.tochigi.jp", - "ujiie.tochigi.jp", - "utsunomiya.tochigi.jp", - "yaita.tochigi.jp", - "aizumi.tokushima.jp", - "anan.tokushima.jp", - "ichiba.tokushima.jp", - "itano.tokushima.jp", - "kainan.tokushima.jp", - "komatsushima.tokushima.jp", - "matsushige.tokushima.jp", - "mima.tokushima.jp", - "minami.tokushima.jp", - "miyoshi.tokushima.jp", - "mugi.tokushima.jp", - "nakagawa.tokushima.jp", - "naruto.tokushima.jp", - "sanagochi.tokushima.jp", - "shishikui.tokushima.jp", - "tokushima.tokushima.jp", - "wajiki.tokushima.jp", - "adachi.tokyo.jp", - "akiruno.tokyo.jp", - "akishima.tokyo.jp", - "aogashima.tokyo.jp", - "arakawa.tokyo.jp", - "bunkyo.tokyo.jp", - "chiyoda.tokyo.jp", - "chofu.tokyo.jp", - "chuo.tokyo.jp", - "edogawa.tokyo.jp", - "fuchu.tokyo.jp", - "fussa.tokyo.jp", - "hachijo.tokyo.jp", - "hachioji.tokyo.jp", - "hamura.tokyo.jp", - "higashikurume.tokyo.jp", - "higashimurayama.tokyo.jp", - "higashiyamato.tokyo.jp", - "hino.tokyo.jp", - "hinode.tokyo.jp", - "hinohara.tokyo.jp", - "inagi.tokyo.jp", - "itabashi.tokyo.jp", - "katsushika.tokyo.jp", - "kita.tokyo.jp", - "kiyose.tokyo.jp", - "kodaira.tokyo.jp", - "koganei.tokyo.jp", - "kokubunji.tokyo.jp", - "komae.tokyo.jp", - "koto.tokyo.jp", - "kouzushima.tokyo.jp", - "kunitachi.tokyo.jp", - "machida.tokyo.jp", - "meguro.tokyo.jp", - "minato.tokyo.jp", - "mitaka.tokyo.jp", - "mizuho.tokyo.jp", - "musashimurayama.tokyo.jp", - "musashino.tokyo.jp", - "nakano.tokyo.jp", - "nerima.tokyo.jp", - "ogasawara.tokyo.jp", - "okutama.tokyo.jp", - "ome.tokyo.jp", - "oshima.tokyo.jp", - "ota.tokyo.jp", - "setagaya.tokyo.jp", - "shibuya.tokyo.jp", - "shinagawa.tokyo.jp", - "shinjuku.tokyo.jp", - "suginami.tokyo.jp", - "sumida.tokyo.jp", - "tachikawa.tokyo.jp", - "taito.tokyo.jp", - "tama.tokyo.jp", - "toshima.tokyo.jp", - "chizu.tottori.jp", - "hino.tottori.jp", - "kawahara.tottori.jp", - "koge.tottori.jp", - "kotoura.tottori.jp", - "misasa.tottori.jp", - "nanbu.tottori.jp", - "nichinan.tottori.jp", - "sakaiminato.tottori.jp", - "tottori.tottori.jp", - "wakasa.tottori.jp", - "yazu.tottori.jp", - "yonago.tottori.jp", - "asahi.toyama.jp", - "fuchu.toyama.jp", - "fukumitsu.toyama.jp", - "funahashi.toyama.jp", - "himi.toyama.jp", - "imizu.toyama.jp", - "inami.toyama.jp", - "johana.toyama.jp", - "kamiichi.toyama.jp", - "kurobe.toyama.jp", - "nakaniikawa.toyama.jp", - "namerikawa.toyama.jp", - "nanto.toyama.jp", - "nyuzen.toyama.jp", - "oyabe.toyama.jp", - "taira.toyama.jp", - "takaoka.toyama.jp", - "tateyama.toyama.jp", - "toga.toyama.jp", - "tonami.toyama.jp", - "toyama.toyama.jp", - "unazuki.toyama.jp", - "uozu.toyama.jp", - "yamada.toyama.jp", - "arida.wakayama.jp", - "aridagawa.wakayama.jp", - "gobo.wakayama.jp", - "hashimoto.wakayama.jp", - "hidaka.wakayama.jp", - "hirogawa.wakayama.jp", - "inami.wakayama.jp", - "iwade.wakayama.jp", - "kainan.wakayama.jp", - "kamitonda.wakayama.jp", - "katsuragi.wakayama.jp", - "kimino.wakayama.jp", - "kinokawa.wakayama.jp", - "kitayama.wakayama.jp", - "koya.wakayama.jp", - "koza.wakayama.jp", - "kozagawa.wakayama.jp", - "kudoyama.wakayama.jp", - "kushimoto.wakayama.jp", - "mihama.wakayama.jp", - "misato.wakayama.jp", - "nachikatsuura.wakayama.jp", - "shingu.wakayama.jp", - "shirahama.wakayama.jp", - "taiji.wakayama.jp", - "tanabe.wakayama.jp", - "wakayama.wakayama.jp", - "yuasa.wakayama.jp", - "yura.wakayama.jp", - "asahi.yamagata.jp", - "funagata.yamagata.jp", - "higashine.yamagata.jp", - "iide.yamagata.jp", - "kahoku.yamagata.jp", - "kaminoyama.yamagata.jp", - "kaneyama.yamagata.jp", - "kawanishi.yamagata.jp", - "mamurogawa.yamagata.jp", - "mikawa.yamagata.jp", - "murayama.yamagata.jp", - "nagai.yamagata.jp", - "nakayama.yamagata.jp", - "nanyo.yamagata.jp", - "nishikawa.yamagata.jp", - "obanazawa.yamagata.jp", - "oe.yamagata.jp", - "oguni.yamagata.jp", - "ohkura.yamagata.jp", - "oishida.yamagata.jp", - "sagae.yamagata.jp", - "sakata.yamagata.jp", - "sakegawa.yamagata.jp", - "shinjo.yamagata.jp", - "shirataka.yamagata.jp", - "shonai.yamagata.jp", - "takahata.yamagata.jp", - "tendo.yamagata.jp", - "tozawa.yamagata.jp", - "tsuruoka.yamagata.jp", - "yamagata.yamagata.jp", - "yamanobe.yamagata.jp", - "yonezawa.yamagata.jp", - "yuza.yamagata.jp", - "abu.yamaguchi.jp", - "hagi.yamaguchi.jp", - "hikari.yamaguchi.jp", - "hofu.yamaguchi.jp", - "iwakuni.yamaguchi.jp", - "kudamatsu.yamaguchi.jp", - "mitou.yamaguchi.jp", - "nagato.yamaguchi.jp", - "oshima.yamaguchi.jp", - "shimonoseki.yamaguchi.jp", - "shunan.yamaguchi.jp", - "tabuse.yamaguchi.jp", - "tokuyama.yamaguchi.jp", - "toyota.yamaguchi.jp", - "ube.yamaguchi.jp", - "yuu.yamaguchi.jp", - "chuo.yamanashi.jp", - "doshi.yamanashi.jp", - "fuefuki.yamanashi.jp", - "fujikawa.yamanashi.jp", - "fujikawaguchiko.yamanashi.jp", - "fujiyoshida.yamanashi.jp", - "hayakawa.yamanashi.jp", - "hokuto.yamanashi.jp", - "ichikawamisato.yamanashi.jp", - "kai.yamanashi.jp", - "kofu.yamanashi.jp", - "koshu.yamanashi.jp", - "kosuge.yamanashi.jp", - "minami-alps.yamanashi.jp", - "minobu.yamanashi.jp", - "nakamichi.yamanashi.jp", - "nanbu.yamanashi.jp", - "narusawa.yamanashi.jp", - "nirasaki.yamanashi.jp", - "nishikatsura.yamanashi.jp", - "oshino.yamanashi.jp", - "otsuki.yamanashi.jp", - "showa.yamanashi.jp", - "tabayama.yamanashi.jp", - "tsuru.yamanashi.jp", - "uenohara.yamanashi.jp", - "yamanakako.yamanashi.jp", - "yamanashi.yamanashi.jp", - "ke", - "ac.ke", - "co.ke", - "go.ke", - "info.ke", - "me.ke", - "mobi.ke", - "ne.ke", - "or.ke", - "sc.ke", - "kg", - "org.kg", - "net.kg", - "com.kg", - "edu.kg", - "gov.kg", - "mil.kg", - "*.kh", - "ki", - "edu.ki", - "biz.ki", - "net.ki", - "org.ki", - "gov.ki", - "info.ki", - "com.ki", - "km", - "org.km", - "nom.km", - "gov.km", - "prd.km", - "tm.km", - "edu.km", - "mil.km", - "ass.km", - "com.km", - "coop.km", - "asso.km", - "presse.km", - "medecin.km", - "notaires.km", - "pharmaciens.km", - "veterinaire.km", - "gouv.km", - "kn", - "net.kn", - "org.kn", - "edu.kn", - "gov.kn", - "kp", - "com.kp", - "edu.kp", - "gov.kp", - "org.kp", - "rep.kp", - "tra.kp", - "kr", - "ac.kr", - "co.kr", - "es.kr", - "go.kr", - "hs.kr", - "kg.kr", - "mil.kr", - "ms.kr", - "ne.kr", - "or.kr", - "pe.kr", - "re.kr", - "sc.kr", - "busan.kr", - "chungbuk.kr", - "chungnam.kr", - "daegu.kr", - "daejeon.kr", - "gangwon.kr", - "gwangju.kr", - "gyeongbuk.kr", - "gyeonggi.kr", - "gyeongnam.kr", - "incheon.kr", - "jeju.kr", - "jeonbuk.kr", - "jeonnam.kr", - "seoul.kr", - "ulsan.kr", - "*.kw", - "ky", - "edu.ky", - "gov.ky", - "com.ky", - "org.ky", - "net.ky", - "kz", - "org.kz", - "edu.kz", - "net.kz", - "gov.kz", - "mil.kz", - "com.kz", - "la", - "int.la", - "net.la", - "info.la", - "edu.la", - "gov.la", - "per.la", - "com.la", - "org.la", - "lb", - "com.lb", - "edu.lb", - "gov.lb", - "net.lb", - "org.lb", - "lc", - "com.lc", - "net.lc", - "co.lc", - "org.lc", - "edu.lc", - "gov.lc", - "li", - "lk", - "gov.lk", - "sch.lk", - "net.lk", - "int.lk", - "com.lk", - "org.lk", - "edu.lk", - "ngo.lk", - "soc.lk", - "web.lk", - "ltd.lk", - "assn.lk", - "grp.lk", - "hotel.lk", - "ac.lk", - "lr", - "com.lr", - "edu.lr", - "gov.lr", - "org.lr", - "net.lr", - "ls", - "co.ls", - "org.ls", - "lt", - "gov.lt", - "lu", - "lv", - "com.lv", - "edu.lv", - "gov.lv", - "org.lv", - "mil.lv", - "id.lv", - "net.lv", - "asn.lv", - "conf.lv", - "ly", - "com.ly", - "net.ly", - "gov.ly", - "plc.ly", - "edu.ly", - "sch.ly", - "med.ly", - "org.ly", - "id.ly", - "ma", - "co.ma", - "net.ma", - "gov.ma", - "org.ma", - "ac.ma", - "press.ma", - "mc", - "tm.mc", - "asso.mc", - "md", - "me", - "co.me", - "net.me", - "org.me", - "edu.me", - "ac.me", - "gov.me", - "its.me", - "priv.me", - "mg", - "org.mg", - "nom.mg", - "gov.mg", - "prd.mg", - "tm.mg", - "edu.mg", - "mil.mg", - "com.mg", - "co.mg", - "mh", - "mil", - "mk", - "com.mk", - "org.mk", - "net.mk", - "edu.mk", - "gov.mk", - "inf.mk", - "name.mk", - "ml", - "com.ml", - "edu.ml", - "gouv.ml", - "gov.ml", - "net.ml", - "org.ml", - "presse.ml", - "*.mm", - "mn", - "gov.mn", - "edu.mn", - "org.mn", - "mo", - "com.mo", - "net.mo", - "org.mo", - "edu.mo", - "gov.mo", - "mobi", - "mp", - "mq", - "mr", - "gov.mr", - "ms", - "com.ms", - "edu.ms", - "gov.ms", - "net.ms", - "org.ms", - "mt", - "com.mt", - "edu.mt", - "net.mt", - "org.mt", - "mu", - "com.mu", - "net.mu", - "org.mu", - "gov.mu", - "ac.mu", - "co.mu", - "or.mu", - "museum", - "academy.museum", - "agriculture.museum", - "air.museum", - "airguard.museum", - "alabama.museum", - "alaska.museum", - "amber.museum", - "ambulance.museum", - "american.museum", - "americana.museum", - "americanantiques.museum", - "americanart.museum", - "amsterdam.museum", - "and.museum", - "annefrank.museum", - "anthro.museum", - "anthropology.museum", - "antiques.museum", - "aquarium.museum", - "arboretum.museum", - "archaeological.museum", - "archaeology.museum", - "architecture.museum", - "art.museum", - "artanddesign.museum", - "artcenter.museum", - "artdeco.museum", - "arteducation.museum", - "artgallery.museum", - "arts.museum", - "artsandcrafts.museum", - "asmatart.museum", - "assassination.museum", - "assisi.museum", - "association.museum", - "astronomy.museum", - "atlanta.museum", - "austin.museum", - "australia.museum", - "automotive.museum", - "aviation.museum", - "axis.museum", - "badajoz.museum", - "baghdad.museum", - "bahn.museum", - "bale.museum", - "baltimore.museum", - "barcelona.museum", - "baseball.museum", - "basel.museum", - "baths.museum", - "bauern.museum", - "beauxarts.museum", - "beeldengeluid.museum", - "bellevue.museum", - "bergbau.museum", - "berkeley.museum", - "berlin.museum", - "bern.museum", - "bible.museum", - "bilbao.museum", - "bill.museum", - "birdart.museum", - "birthplace.museum", - "bonn.museum", - "boston.museum", - "botanical.museum", - "botanicalgarden.museum", - "botanicgarden.museum", - "botany.museum", - "brandywinevalley.museum", - "brasil.museum", - "bristol.museum", - "british.museum", - "britishcolumbia.museum", - "broadcast.museum", - "brunel.museum", - "brussel.museum", - "brussels.museum", - "bruxelles.museum", - "building.museum", - "burghof.museum", - "bus.museum", - "bushey.museum", - "cadaques.museum", - "california.museum", - "cambridge.museum", - "can.museum", - "canada.museum", - "capebreton.museum", - "carrier.museum", - "cartoonart.museum", - "casadelamoneda.museum", - "castle.museum", - "castres.museum", - "celtic.museum", - "center.museum", - "chattanooga.museum", - "cheltenham.museum", - "chesapeakebay.museum", - "chicago.museum", - "children.museum", - "childrens.museum", - "childrensgarden.museum", - "chiropractic.museum", - "chocolate.museum", - "christiansburg.museum", - "cincinnati.museum", - "cinema.museum", - "circus.museum", - "civilisation.museum", - "civilization.museum", - "civilwar.museum", - "clinton.museum", - "clock.museum", - "coal.museum", - "coastaldefence.museum", - "cody.museum", - "coldwar.museum", - "collection.museum", - "colonialwilliamsburg.museum", - "coloradoplateau.museum", - "columbia.museum", - "columbus.museum", - "communication.museum", - "communications.museum", - "community.museum", - "computer.museum", - "computerhistory.museum", - "xn--comunicaes-v6a2o.museum", - "contemporary.museum", - "contemporaryart.museum", - "convent.museum", - "copenhagen.museum", - "corporation.museum", - "xn--correios-e-telecomunicaes-ghc29a.museum", - "corvette.museum", - "costume.museum", - "countryestate.museum", - "county.museum", - "crafts.museum", - "cranbrook.museum", - "creation.museum", - "cultural.museum", - "culturalcenter.museum", - "culture.museum", - "cyber.museum", - "cymru.museum", - "dali.museum", - "dallas.museum", - "database.museum", - "ddr.museum", - "decorativearts.museum", - "delaware.museum", - "delmenhorst.museum", - "denmark.museum", - "depot.museum", - "design.museum", - "detroit.museum", - "dinosaur.museum", - "discovery.museum", - "dolls.museum", - "donostia.museum", - "durham.museum", - "eastafrica.museum", - "eastcoast.museum", - "education.museum", - "educational.museum", - "egyptian.museum", - "eisenbahn.museum", - "elburg.museum", - "elvendrell.museum", - "embroidery.museum", - "encyclopedic.museum", - "england.museum", - "entomology.museum", - "environment.museum", - "environmentalconservation.museum", - "epilepsy.museum", - "essex.museum", - "estate.museum", - "ethnology.museum", - "exeter.museum", - "exhibition.museum", - "family.museum", - "farm.museum", - "farmequipment.museum", - "farmers.museum", - "farmstead.museum", - "field.museum", - "figueres.museum", - "filatelia.museum", - "film.museum", - "fineart.museum", - "finearts.museum", - "finland.museum", - "flanders.museum", - "florida.museum", - "force.museum", - "fortmissoula.museum", - "fortworth.museum", - "foundation.museum", - "francaise.museum", - "frankfurt.museum", - "franziskaner.museum", - "freemasonry.museum", - "freiburg.museum", - "fribourg.museum", - "frog.museum", - "fundacio.museum", - "furniture.museum", - "gallery.museum", - "garden.museum", - "gateway.museum", - "geelvinck.museum", - "gemological.museum", - "geology.museum", - "georgia.museum", - "giessen.museum", - "glas.museum", - "glass.museum", - "gorge.museum", - "grandrapids.museum", - "graz.museum", - "guernsey.museum", - "halloffame.museum", - "hamburg.museum", - "handson.museum", - "harvestcelebration.museum", - "hawaii.museum", - "health.museum", - "heimatunduhren.museum", - "hellas.museum", - "helsinki.museum", - "hembygdsforbund.museum", - "heritage.museum", - "histoire.museum", - "historical.museum", - "historicalsociety.museum", - "historichouses.museum", - "historisch.museum", - "historisches.museum", - "history.museum", - "historyofscience.museum", - "horology.museum", - "house.museum", - "humanities.museum", - "illustration.museum", - "imageandsound.museum", - "indian.museum", - "indiana.museum", - "indianapolis.museum", - "indianmarket.museum", - "intelligence.museum", - "interactive.museum", - "iraq.museum", - "iron.museum", - "isleofman.museum", - "jamison.museum", - "jefferson.museum", - "jerusalem.museum", - "jewelry.museum", - "jewish.museum", - "jewishart.museum", - "jfk.museum", - "journalism.museum", - "judaica.museum", - "judygarland.museum", - "juedisches.museum", - "juif.museum", - "karate.museum", - "karikatur.museum", - "kids.museum", - "koebenhavn.museum", - "koeln.museum", - "kunst.museum", - "kunstsammlung.museum", - "kunstunddesign.museum", - "labor.museum", - "labour.museum", - "lajolla.museum", - "lancashire.museum", - "landes.museum", - "lans.museum", - "xn--lns-qla.museum", - "larsson.museum", - "lewismiller.museum", - "lincoln.museum", - "linz.museum", - "living.museum", - "livinghistory.museum", - "localhistory.museum", - "london.museum", - "losangeles.museum", - "louvre.museum", - "loyalist.museum", - "lucerne.museum", - "luxembourg.museum", - "luzern.museum", - "mad.museum", - "madrid.museum", - "mallorca.museum", - "manchester.museum", - "mansion.museum", - "mansions.museum", - "manx.museum", - "marburg.museum", - "maritime.museum", - "maritimo.museum", - "maryland.museum", - "marylhurst.museum", - "media.museum", - "medical.museum", - "medizinhistorisches.museum", - "meeres.museum", - "memorial.museum", - "mesaverde.museum", - "michigan.museum", - "midatlantic.museum", - "military.museum", - "mill.museum", - "miners.museum", - "mining.museum", - "minnesota.museum", - "missile.museum", - "missoula.museum", - "modern.museum", - "moma.museum", - "money.museum", - "monmouth.museum", - "monticello.museum", - "montreal.museum", - "moscow.museum", - "motorcycle.museum", - "muenchen.museum", - "muenster.museum", - "mulhouse.museum", - "muncie.museum", - "museet.museum", - "museumcenter.museum", - "museumvereniging.museum", - "music.museum", - "national.museum", - "nationalfirearms.museum", - "nationalheritage.museum", - "nativeamerican.museum", - "naturalhistory.museum", - "naturalhistorymuseum.museum", - "naturalsciences.museum", - "nature.museum", - "naturhistorisches.museum", - "natuurwetenschappen.museum", - "naumburg.museum", - "naval.museum", - "nebraska.museum", - "neues.museum", - "newhampshire.museum", - "newjersey.museum", - "newmexico.museum", - "newport.museum", - "newspaper.museum", - "newyork.museum", - "niepce.museum", - "norfolk.museum", - "north.museum", - "nrw.museum", - "nuernberg.museum", - "nuremberg.museum", - "nyc.museum", - "nyny.museum", - "oceanographic.museum", - "oceanographique.museum", - "omaha.museum", - "online.museum", - "ontario.museum", - "openair.museum", - "oregon.museum", - "oregontrail.museum", - "otago.museum", - "oxford.museum", - "pacific.museum", - "paderborn.museum", - "palace.museum", - "paleo.museum", - "palmsprings.museum", - "panama.museum", - "paris.museum", - "pasadena.museum", - "pharmacy.museum", - "philadelphia.museum", - "philadelphiaarea.museum", - "philately.museum", - "phoenix.museum", - "photography.museum", - "pilots.museum", - "pittsburgh.museum", - "planetarium.museum", - "plantation.museum", - "plants.museum", - "plaza.museum", - "portal.museum", - "portland.museum", - "portlligat.museum", - "posts-and-telecommunications.museum", - "preservation.museum", - "presidio.museum", - "press.museum", - "project.museum", - "public.museum", - "pubol.museum", - "quebec.museum", - "railroad.museum", - "railway.museum", - "research.museum", - "resistance.museum", - "riodejaneiro.museum", - "rochester.museum", - "rockart.museum", - "roma.museum", - "russia.museum", - "saintlouis.museum", - "salem.museum", - "salvadordali.museum", - "salzburg.museum", - "sandiego.museum", - "sanfrancisco.museum", - "santabarbara.museum", - "santacruz.museum", - "santafe.museum", - "saskatchewan.museum", - "satx.museum", - "savannahga.museum", - "schlesisches.museum", - "schoenbrunn.museum", - "schokoladen.museum", - "school.museum", - "schweiz.museum", - "science.museum", - "scienceandhistory.museum", - "scienceandindustry.museum", - "sciencecenter.museum", - "sciencecenters.museum", - "science-fiction.museum", - "sciencehistory.museum", - "sciences.museum", - "sciencesnaturelles.museum", - "scotland.museum", - "seaport.museum", - "settlement.museum", - "settlers.museum", - "shell.museum", - "sherbrooke.museum", - "sibenik.museum", - "silk.museum", - "ski.museum", - "skole.museum", - "society.museum", - "sologne.museum", - "soundandvision.museum", - "southcarolina.museum", - "southwest.museum", - "space.museum", - "spy.museum", - "square.museum", - "stadt.museum", - "stalbans.museum", - "starnberg.museum", - "state.museum", - "stateofdelaware.museum", - "station.museum", - "steam.museum", - "steiermark.museum", - "stjohn.museum", - "stockholm.museum", - "stpetersburg.museum", - "stuttgart.museum", - "suisse.museum", - "surgeonshall.museum", - "surrey.museum", - "svizzera.museum", - "sweden.museum", - "sydney.museum", - "tank.museum", - "tcm.museum", - "technology.museum", - "telekommunikation.museum", - "television.museum", - "texas.museum", - "textile.museum", - "theater.museum", - "time.museum", - "timekeeping.museum", - "topology.museum", - "torino.museum", - "touch.museum", - "town.museum", - "transport.museum", - "tree.museum", - "trolley.museum", - "trust.museum", - "trustee.museum", - "uhren.museum", - "ulm.museum", - "undersea.museum", - "university.museum", - "usa.museum", - "usantiques.museum", - "usarts.museum", - "uscountryestate.museum", - "usculture.museum", - "usdecorativearts.museum", - "usgarden.museum", - "ushistory.museum", - "ushuaia.museum", - "uslivinghistory.museum", - "utah.museum", - "uvic.museum", - "valley.museum", - "vantaa.museum", - "versailles.museum", - "viking.museum", - "village.museum", - "virginia.museum", - "virtual.museum", - "virtuel.museum", - "vlaanderen.museum", - "volkenkunde.museum", - "wales.museum", - "wallonie.museum", - "war.museum", - "washingtondc.museum", - "watchandclock.museum", - "watch-and-clock.museum", - "western.museum", - "westfalen.museum", - "whaling.museum", - "wildlife.museum", - "williamsburg.museum", - "windmill.museum", - "workshop.museum", - "york.museum", - "yorkshire.museum", - "yosemite.museum", - "youth.museum", - "zoological.museum", - "zoology.museum", - "xn--9dbhblg6di.museum", - "xn--h1aegh.museum", - "mv", - "aero.mv", - "biz.mv", - "com.mv", - "coop.mv", - "edu.mv", - "gov.mv", - "info.mv", - "int.mv", - "mil.mv", - "museum.mv", - "name.mv", - "net.mv", - "org.mv", - "pro.mv", - "mw", - "ac.mw", - "biz.mw", - "co.mw", - "com.mw", - "coop.mw", - "edu.mw", - "gov.mw", - "int.mw", - "museum.mw", - "net.mw", - "org.mw", - "mx", - "com.mx", - "org.mx", - "gob.mx", - "edu.mx", - "net.mx", - "my", - "com.my", - "net.my", - "org.my", - "gov.my", - "edu.my", - "mil.my", - "name.my", - "mz", - "ac.mz", - "adv.mz", - "co.mz", - "edu.mz", - "gov.mz", - "mil.mz", - "net.mz", - "org.mz", - "na", - "info.na", - "pro.na", - "name.na", - "school.na", - "or.na", - "dr.na", - "us.na", - "mx.na", - "ca.na", - "in.na", - "cc.na", - "tv.na", - "ws.na", - "mobi.na", - "co.na", - "com.na", - "org.na", - "name", - "nc", - "asso.nc", - "nom.nc", - "ne", - "net", - "nf", - "com.nf", - "net.nf", - "per.nf", - "rec.nf", - "web.nf", - "arts.nf", - "firm.nf", - "info.nf", - "other.nf", - "store.nf", - "ng", - "com.ng", - "edu.ng", - "gov.ng", - "i.ng", - "mil.ng", - "mobi.ng", - "name.ng", - "net.ng", - "org.ng", - "sch.ng", - "ni", - "ac.ni", - "biz.ni", - "co.ni", - "com.ni", - "edu.ni", - "gob.ni", - "in.ni", - "info.ni", - "int.ni", - "mil.ni", - "net.ni", - "nom.ni", - "org.ni", - "web.ni", - "nl", - "bv.nl", - "no", - "fhs.no", - "vgs.no", - "fylkesbibl.no", - "folkebibl.no", - "museum.no", - "idrett.no", - "priv.no", - "mil.no", - "stat.no", - "dep.no", - "kommune.no", - "herad.no", - "aa.no", - "ah.no", - "bu.no", - "fm.no", - "hl.no", - "hm.no", - "jan-mayen.no", - "mr.no", - "nl.no", - "nt.no", - "of.no", - "ol.no", - "oslo.no", - "rl.no", - "sf.no", - "st.no", - "svalbard.no", - "tm.no", - "tr.no", - "va.no", - "vf.no", - "gs.aa.no", - "gs.ah.no", - "gs.bu.no", - "gs.fm.no", - "gs.hl.no", - "gs.hm.no", - "gs.jan-mayen.no", - "gs.mr.no", - "gs.nl.no", - "gs.nt.no", - "gs.of.no", - "gs.ol.no", - "gs.oslo.no", - "gs.rl.no", - "gs.sf.no", - "gs.st.no", - "gs.svalbard.no", - "gs.tm.no", - "gs.tr.no", - "gs.va.no", - "gs.vf.no", - "akrehamn.no", - "xn--krehamn-dxa.no", - "algard.no", - "xn--lgrd-poac.no", - "arna.no", - "brumunddal.no", - "bryne.no", - "bronnoysund.no", - "xn--brnnysund-m8ac.no", - "drobak.no", - "xn--drbak-wua.no", - "egersund.no", - "fetsund.no", - "floro.no", - "xn--flor-jra.no", - "fredrikstad.no", - "hokksund.no", - "honefoss.no", - "xn--hnefoss-q1a.no", - "jessheim.no", - "jorpeland.no", - "xn--jrpeland-54a.no", - "kirkenes.no", - "kopervik.no", - "krokstadelva.no", - "langevag.no", - "xn--langevg-jxa.no", - "leirvik.no", - "mjondalen.no", - "xn--mjndalen-64a.no", - "mo-i-rana.no", - "mosjoen.no", - "xn--mosjen-eya.no", - "nesoddtangen.no", - "orkanger.no", - "osoyro.no", - "xn--osyro-wua.no", - "raholt.no", - "xn--rholt-mra.no", - "sandnessjoen.no", - "xn--sandnessjen-ogb.no", - "skedsmokorset.no", - "slattum.no", - "spjelkavik.no", - "stathelle.no", - "stavern.no", - "stjordalshalsen.no", - "xn--stjrdalshalsen-sqb.no", - "tananger.no", - "tranby.no", - "vossevangen.no", - "afjord.no", - "xn--fjord-lra.no", - "agdenes.no", - "al.no", - "xn--l-1fa.no", - "alesund.no", - "xn--lesund-hua.no", - "alstahaug.no", - "alta.no", - "xn--lt-liac.no", - "alaheadju.no", - "xn--laheadju-7ya.no", - "alvdal.no", - "amli.no", - "xn--mli-tla.no", - "amot.no", - "xn--mot-tla.no", - "andebu.no", - "andoy.no", - "xn--andy-ira.no", - "andasuolo.no", - "ardal.no", - "xn--rdal-poa.no", - "aremark.no", - "arendal.no", - "xn--s-1fa.no", - "aseral.no", - "xn--seral-lra.no", - "asker.no", - "askim.no", - "askvoll.no", - "askoy.no", - "xn--asky-ira.no", - "asnes.no", - "xn--snes-poa.no", - "audnedaln.no", - "aukra.no", - "aure.no", - "aurland.no", - "aurskog-holand.no", - "xn--aurskog-hland-jnb.no", - "austevoll.no", - "austrheim.no", - "averoy.no", - "xn--avery-yua.no", - "balestrand.no", - "ballangen.no", - "balat.no", - "xn--blt-elab.no", - "balsfjord.no", - "bahccavuotna.no", - "xn--bhccavuotna-k7a.no", - "bamble.no", - "bardu.no", - "beardu.no", - "beiarn.no", - "bajddar.no", - "xn--bjddar-pta.no", - "baidar.no", - "xn--bidr-5nac.no", - "berg.no", - "bergen.no", - "berlevag.no", - "xn--berlevg-jxa.no", - "bearalvahki.no", - "xn--bearalvhki-y4a.no", - "bindal.no", - "birkenes.no", - "bjarkoy.no", - "xn--bjarky-fya.no", - "bjerkreim.no", - "bjugn.no", - "bodo.no", - "xn--bod-2na.no", - "badaddja.no", - "xn--bdddj-mrabd.no", - "budejju.no", - "bokn.no", - "bremanger.no", - "bronnoy.no", - "xn--brnny-wuac.no", - "bygland.no", - "bykle.no", - "barum.no", - "xn--brum-voa.no", - "bo.telemark.no", - "xn--b-5ga.telemark.no", - "bo.nordland.no", - "xn--b-5ga.nordland.no", - "bievat.no", - "xn--bievt-0qa.no", - "bomlo.no", - "xn--bmlo-gra.no", - "batsfjord.no", - "xn--btsfjord-9za.no", - "bahcavuotna.no", - "xn--bhcavuotna-s4a.no", - "dovre.no", - "drammen.no", - "drangedal.no", - "dyroy.no", - "xn--dyry-ira.no", - "donna.no", - "xn--dnna-gra.no", - "eid.no", - "eidfjord.no", - "eidsberg.no", - "eidskog.no", - "eidsvoll.no", - "eigersund.no", - "elverum.no", - "enebakk.no", - "engerdal.no", - "etne.no", - "etnedal.no", - "evenes.no", - "evenassi.no", - "xn--eveni-0qa01ga.no", - "evje-og-hornnes.no", - "farsund.no", - "fauske.no", - "fuossko.no", - "fuoisku.no", - "fedje.no", - "fet.no", - "finnoy.no", - "xn--finny-yua.no", - "fitjar.no", - "fjaler.no", - "fjell.no", - "flakstad.no", - "flatanger.no", - "flekkefjord.no", - "flesberg.no", - "flora.no", - "fla.no", - "xn--fl-zia.no", - "folldal.no", - "forsand.no", - "fosnes.no", - "frei.no", - "frogn.no", - "froland.no", - "frosta.no", - "frana.no", - "xn--frna-woa.no", - "froya.no", - "xn--frya-hra.no", - "fusa.no", - "fyresdal.no", - "forde.no", - "xn--frde-gra.no", - "gamvik.no", - "gangaviika.no", - "xn--ggaviika-8ya47h.no", - "gaular.no", - "gausdal.no", - "gildeskal.no", - "xn--gildeskl-g0a.no", - "giske.no", - "gjemnes.no", - "gjerdrum.no", - "gjerstad.no", - "gjesdal.no", - "gjovik.no", - "xn--gjvik-wua.no", - "gloppen.no", - "gol.no", - "gran.no", - "grane.no", - "granvin.no", - "gratangen.no", - "grimstad.no", - "grong.no", - "kraanghke.no", - "xn--kranghke-b0a.no", - "grue.no", - "gulen.no", - "hadsel.no", - "halden.no", - "halsa.no", - "hamar.no", - "hamaroy.no", - "habmer.no", - "xn--hbmer-xqa.no", - "hapmir.no", - "xn--hpmir-xqa.no", - "hammerfest.no", - "hammarfeasta.no", - "xn--hmmrfeasta-s4ac.no", - "haram.no", - "hareid.no", - "harstad.no", - "hasvik.no", - "aknoluokta.no", - "xn--koluokta-7ya57h.no", - "hattfjelldal.no", - "aarborte.no", - "haugesund.no", - "hemne.no", - "hemnes.no", - "hemsedal.no", - "heroy.more-og-romsdal.no", - "xn--hery-ira.xn--mre-og-romsdal-qqb.no", - "heroy.nordland.no", - "xn--hery-ira.nordland.no", - "hitra.no", - "hjartdal.no", - "hjelmeland.no", - "hobol.no", - "xn--hobl-ira.no", - "hof.no", - "hol.no", - "hole.no", - "holmestrand.no", - "holtalen.no", - "xn--holtlen-hxa.no", - "hornindal.no", - "horten.no", - "hurdal.no", - "hurum.no", - "hvaler.no", - "hyllestad.no", - "hagebostad.no", - "xn--hgebostad-g3a.no", - "hoyanger.no", - "xn--hyanger-q1a.no", - "hoylandet.no", - "xn--hylandet-54a.no", - "ha.no", - "xn--h-2fa.no", - "ibestad.no", - "inderoy.no", - "xn--indery-fya.no", - "iveland.no", - "jevnaker.no", - "jondal.no", - "jolster.no", - "xn--jlster-bya.no", - "karasjok.no", - "karasjohka.no", - "xn--krjohka-hwab49j.no", - "karlsoy.no", - "galsa.no", - "xn--gls-elac.no", - "karmoy.no", - "xn--karmy-yua.no", - "kautokeino.no", - "guovdageaidnu.no", - "klepp.no", - "klabu.no", - "xn--klbu-woa.no", - "kongsberg.no", - "kongsvinger.no", - "kragero.no", - "xn--krager-gya.no", - "kristiansand.no", - "kristiansund.no", - "krodsherad.no", - "xn--krdsherad-m8a.no", - "kvalsund.no", - "rahkkeravju.no", - "xn--rhkkervju-01af.no", - "kvam.no", - "kvinesdal.no", - "kvinnherad.no", - "kviteseid.no", - "kvitsoy.no", - "xn--kvitsy-fya.no", - "kvafjord.no", - "xn--kvfjord-nxa.no", - "giehtavuoatna.no", - "kvanangen.no", - "xn--kvnangen-k0a.no", - "navuotna.no", - "xn--nvuotna-hwa.no", - "kafjord.no", - "xn--kfjord-iua.no", - "gaivuotna.no", - "xn--givuotna-8ya.no", - "larvik.no", - "lavangen.no", - "lavagis.no", - "loabat.no", - "xn--loabt-0qa.no", - "lebesby.no", - "davvesiida.no", - "leikanger.no", - "leirfjord.no", - "leka.no", - "leksvik.no", - "lenvik.no", - "leangaviika.no", - "xn--leagaviika-52b.no", - "lesja.no", - "levanger.no", - "lier.no", - "lierne.no", - "lillehammer.no", - "lillesand.no", - "lindesnes.no", - "lindas.no", - "xn--linds-pra.no", - "lom.no", - "loppa.no", - "lahppi.no", - "xn--lhppi-xqa.no", - "lund.no", - "lunner.no", - "luroy.no", - "xn--lury-ira.no", - "luster.no", - "lyngdal.no", - "lyngen.no", - "ivgu.no", - "lardal.no", - "lerdal.no", - "xn--lrdal-sra.no", - "lodingen.no", - "xn--ldingen-q1a.no", - "lorenskog.no", - "xn--lrenskog-54a.no", - "loten.no", - "xn--lten-gra.no", - "malvik.no", - "masoy.no", - "xn--msy-ula0h.no", - "muosat.no", - "xn--muost-0qa.no", - "mandal.no", - "marker.no", - "marnardal.no", - "masfjorden.no", - "meland.no", - "meldal.no", - "melhus.no", - "meloy.no", - "xn--mely-ira.no", - "meraker.no", - "xn--merker-kua.no", - "moareke.no", - "xn--moreke-jua.no", - "midsund.no", - "midtre-gauldal.no", - "modalen.no", - "modum.no", - "molde.no", - "moskenes.no", - "moss.no", - "mosvik.no", - "malselv.no", - "xn--mlselv-iua.no", - "malatvuopmi.no", - "xn--mlatvuopmi-s4a.no", - "namdalseid.no", - "aejrie.no", - "namsos.no", - "namsskogan.no", - "naamesjevuemie.no", - "xn--nmesjevuemie-tcba.no", - "laakesvuemie.no", - "nannestad.no", - "narvik.no", - "narviika.no", - "naustdal.no", - "nedre-eiker.no", - "nes.akershus.no", - "nes.buskerud.no", - "nesna.no", - "nesodden.no", - "nesseby.no", - "unjarga.no", - "xn--unjrga-rta.no", - "nesset.no", - "nissedal.no", - "nittedal.no", - "nord-aurdal.no", - "nord-fron.no", - "nord-odal.no", - "norddal.no", - "nordkapp.no", - "davvenjarga.no", - "xn--davvenjrga-y4a.no", - "nordre-land.no", - "nordreisa.no", - "raisa.no", - "xn--risa-5na.no", - "nore-og-uvdal.no", - "notodden.no", - "naroy.no", - "xn--nry-yla5g.no", - "notteroy.no", - "xn--nttery-byae.no", - "odda.no", - "oksnes.no", - "xn--ksnes-uua.no", - "oppdal.no", - "oppegard.no", - "xn--oppegrd-ixa.no", - "orkdal.no", - "orland.no", - "xn--rland-uua.no", - "orskog.no", - "xn--rskog-uua.no", - "orsta.no", - "xn--rsta-fra.no", - "os.hedmark.no", - "os.hordaland.no", - "osen.no", - "osteroy.no", - "xn--ostery-fya.no", - "ostre-toten.no", - "xn--stre-toten-zcb.no", - "overhalla.no", - "ovre-eiker.no", - "xn--vre-eiker-k8a.no", - "oyer.no", - "xn--yer-zna.no", - "oygarden.no", - "xn--ygarden-p1a.no", - "oystre-slidre.no", - "xn--ystre-slidre-ujb.no", - "porsanger.no", - "porsangu.no", - "xn--porsgu-sta26f.no", - "porsgrunn.no", - "radoy.no", - "xn--rady-ira.no", - "rakkestad.no", - "rana.no", - "ruovat.no", - "randaberg.no", - "rauma.no", - "rendalen.no", - "rennebu.no", - "rennesoy.no", - "xn--rennesy-v1a.no", - "rindal.no", - "ringebu.no", - "ringerike.no", - "ringsaker.no", - "rissa.no", - "risor.no", - "xn--risr-ira.no", - "roan.no", - "rollag.no", - "rygge.no", - "ralingen.no", - "xn--rlingen-mxa.no", - "rodoy.no", - "xn--rdy-0nab.no", - "romskog.no", - "xn--rmskog-bya.no", - "roros.no", - "xn--rros-gra.no", - "rost.no", - "xn--rst-0na.no", - "royken.no", - "xn--ryken-vua.no", - "royrvik.no", - "xn--ryrvik-bya.no", - "rade.no", - "xn--rde-ula.no", - "salangen.no", - "siellak.no", - "saltdal.no", - "salat.no", - "xn--slt-elab.no", - "xn--slat-5na.no", - "samnanger.no", - "sande.more-og-romsdal.no", - "sande.xn--mre-og-romsdal-qqb.no", - "sande.vestfold.no", - "sandefjord.no", - "sandnes.no", - "sandoy.no", - "xn--sandy-yua.no", - "sarpsborg.no", - "sauda.no", - "sauherad.no", - "sel.no", - "selbu.no", - "selje.no", - "seljord.no", - "sigdal.no", - "siljan.no", - "sirdal.no", - "skaun.no", - "skedsmo.no", - "ski.no", - "skien.no", - "skiptvet.no", - "skjervoy.no", - "xn--skjervy-v1a.no", - "skierva.no", - "xn--skierv-uta.no", - "skjak.no", - "xn--skjk-soa.no", - "skodje.no", - "skanland.no", - "xn--sknland-fxa.no", - "skanit.no", - "xn--sknit-yqa.no", - "smola.no", - "xn--smla-hra.no", - "snillfjord.no", - "snasa.no", - "xn--snsa-roa.no", - "snoasa.no", - "snaase.no", - "xn--snase-nra.no", - "sogndal.no", - "sokndal.no", - "sola.no", - "solund.no", - "songdalen.no", - "sortland.no", - "spydeberg.no", - "stange.no", - "stavanger.no", - "steigen.no", - "steinkjer.no", - "stjordal.no", - "xn--stjrdal-s1a.no", - "stokke.no", - "stor-elvdal.no", - "stord.no", - "stordal.no", - "storfjord.no", - "omasvuotna.no", - "strand.no", - "stranda.no", - "stryn.no", - "sula.no", - "suldal.no", - "sund.no", - "sunndal.no", - "surnadal.no", - "sveio.no", - "svelvik.no", - "sykkylven.no", - "sogne.no", - "xn--sgne-gra.no", - "somna.no", - "xn--smna-gra.no", - "sondre-land.no", - "xn--sndre-land-0cb.no", - "sor-aurdal.no", - "xn--sr-aurdal-l8a.no", - "sor-fron.no", - "xn--sr-fron-q1a.no", - "sor-odal.no", - "xn--sr-odal-q1a.no", - "sor-varanger.no", - "xn--sr-varanger-ggb.no", - "matta-varjjat.no", - "xn--mtta-vrjjat-k7af.no", - "sorfold.no", - "xn--srfold-bya.no", - "sorreisa.no", - "xn--srreisa-q1a.no", - "sorum.no", - "xn--srum-gra.no", - "tana.no", - "deatnu.no", - "time.no", - "tingvoll.no", - "tinn.no", - "tjeldsund.no", - "dielddanuorri.no", - "tjome.no", - "xn--tjme-hra.no", - "tokke.no", - "tolga.no", - "torsken.no", - "tranoy.no", - "xn--trany-yua.no", - "tromso.no", - "xn--troms-zua.no", - "tromsa.no", - "romsa.no", - "trondheim.no", - "troandin.no", - "trysil.no", - "trana.no", - "xn--trna-woa.no", - "trogstad.no", - "xn--trgstad-r1a.no", - "tvedestrand.no", - "tydal.no", - "tynset.no", - "tysfjord.no", - "divtasvuodna.no", - "divttasvuotna.no", - "tysnes.no", - "tysvar.no", - "xn--tysvr-vra.no", - "tonsberg.no", - "xn--tnsberg-q1a.no", - "ullensaker.no", - "ullensvang.no", - "ulvik.no", - "utsira.no", - "vadso.no", - "xn--vads-jra.no", - "cahcesuolo.no", - "xn--hcesuolo-7ya35b.no", - "vaksdal.no", - "valle.no", - "vang.no", - "vanylven.no", - "vardo.no", - "xn--vard-jra.no", - "varggat.no", - "xn--vrggt-xqad.no", - "vefsn.no", - "vaapste.no", - "vega.no", - "vegarshei.no", - "xn--vegrshei-c0a.no", - "vennesla.no", - "verdal.no", - "verran.no", - "vestby.no", - "vestnes.no", - "vestre-slidre.no", - "vestre-toten.no", - "vestvagoy.no", - "xn--vestvgy-ixa6o.no", - "vevelstad.no", - "vik.no", - "vikna.no", - "vindafjord.no", - "volda.no", - "voss.no", - "varoy.no", - "xn--vry-yla5g.no", - "vagan.no", - "xn--vgan-qoa.no", - "voagat.no", - "vagsoy.no", - "xn--vgsy-qoa0j.no", - "vaga.no", - "xn--vg-yiab.no", - "valer.ostfold.no", - "xn--vler-qoa.xn--stfold-9xa.no", - "valer.hedmark.no", - "xn--vler-qoa.hedmark.no", - "*.np", - "nr", - "biz.nr", - "info.nr", - "gov.nr", - "edu.nr", - "org.nr", - "net.nr", - "com.nr", - "nu", - "nz", - "ac.nz", - "co.nz", - "cri.nz", - "geek.nz", - "gen.nz", - "govt.nz", - "health.nz", - "iwi.nz", - "kiwi.nz", - "maori.nz", - "mil.nz", - "xn--mori-qsa.nz", - "net.nz", - "org.nz", - "parliament.nz", - "school.nz", - "om", - "co.om", - "com.om", - "edu.om", - "gov.om", - "med.om", - "museum.om", - "net.om", - "org.om", - "pro.om", - "onion", - "org", - "pa", - "ac.pa", - "gob.pa", - "com.pa", - "org.pa", - "sld.pa", - "edu.pa", - "net.pa", - "ing.pa", - "abo.pa", - "med.pa", - "nom.pa", - "pe", - "edu.pe", - "gob.pe", - "nom.pe", - "mil.pe", - "org.pe", - "com.pe", - "net.pe", - "pf", - "com.pf", - "org.pf", - "edu.pf", - "*.pg", - "ph", - "com.ph", - "net.ph", - "org.ph", - "gov.ph", - "edu.ph", - "ngo.ph", - "mil.ph", - "i.ph", - "pk", - "com.pk", - "net.pk", - "edu.pk", - "org.pk", - "fam.pk", - "biz.pk", - "web.pk", - "gov.pk", - "gob.pk", - "gok.pk", - "gon.pk", - "gop.pk", - "gos.pk", - "info.pk", - "pl", - "com.pl", - "net.pl", - "org.pl", - "aid.pl", - "agro.pl", - "atm.pl", - "auto.pl", - "biz.pl", - "edu.pl", - "gmina.pl", - "gsm.pl", - "info.pl", - "mail.pl", - "miasta.pl", - "media.pl", - "mil.pl", - "nieruchomosci.pl", - "nom.pl", - "pc.pl", - "powiat.pl", - "priv.pl", - "realestate.pl", - "rel.pl", - "sex.pl", - "shop.pl", - "sklep.pl", - "sos.pl", - "szkola.pl", - "targi.pl", - "tm.pl", - "tourism.pl", - "travel.pl", - "turystyka.pl", - "gov.pl", - "ap.gov.pl", - "ic.gov.pl", - "is.gov.pl", - "us.gov.pl", - "kmpsp.gov.pl", - "kppsp.gov.pl", - "kwpsp.gov.pl", - "psp.gov.pl", - "wskr.gov.pl", - "kwp.gov.pl", - "mw.gov.pl", - "ug.gov.pl", - "um.gov.pl", - "umig.gov.pl", - "ugim.gov.pl", - "upow.gov.pl", - "uw.gov.pl", - "starostwo.gov.pl", - "pa.gov.pl", - "po.gov.pl", - "psse.gov.pl", - "pup.gov.pl", - "rzgw.gov.pl", - "sa.gov.pl", - "so.gov.pl", - "sr.gov.pl", - "wsa.gov.pl", - "sko.gov.pl", - "uzs.gov.pl", - "wiih.gov.pl", - "winb.gov.pl", - "pinb.gov.pl", - "wios.gov.pl", - "witd.gov.pl", - "wzmiuw.gov.pl", - "piw.gov.pl", - "wiw.gov.pl", - "griw.gov.pl", - "wif.gov.pl", - "oum.gov.pl", - "sdn.gov.pl", - "zp.gov.pl", - "uppo.gov.pl", - "mup.gov.pl", - "wuoz.gov.pl", - "konsulat.gov.pl", - "oirm.gov.pl", - "augustow.pl", - "babia-gora.pl", - "bedzin.pl", - "beskidy.pl", - "bialowieza.pl", - "bialystok.pl", - "bielawa.pl", - "bieszczady.pl", - "boleslawiec.pl", - "bydgoszcz.pl", - "bytom.pl", - "cieszyn.pl", - "czeladz.pl", - "czest.pl", - "dlugoleka.pl", - "elblag.pl", - "elk.pl", - "glogow.pl", - "gniezno.pl", - "gorlice.pl", - "grajewo.pl", - "ilawa.pl", - "jaworzno.pl", - "jelenia-gora.pl", - "jgora.pl", - "kalisz.pl", - "kazimierz-dolny.pl", - "karpacz.pl", - "kartuzy.pl", - "kaszuby.pl", - "katowice.pl", - "kepno.pl", - "ketrzyn.pl", - "klodzko.pl", - "kobierzyce.pl", - "kolobrzeg.pl", - "konin.pl", - "konskowola.pl", - "kutno.pl", - "lapy.pl", - "lebork.pl", - "legnica.pl", - "lezajsk.pl", - "limanowa.pl", - "lomza.pl", - "lowicz.pl", - "lubin.pl", - "lukow.pl", - "malbork.pl", - "malopolska.pl", - "mazowsze.pl", - "mazury.pl", - "mielec.pl", - "mielno.pl", - "mragowo.pl", - "naklo.pl", - "nowaruda.pl", - "nysa.pl", - "olawa.pl", - "olecko.pl", - "olkusz.pl", - "olsztyn.pl", - "opoczno.pl", - "opole.pl", - "ostroda.pl", - "ostroleka.pl", - "ostrowiec.pl", - "ostrowwlkp.pl", - "pila.pl", - "pisz.pl", - "podhale.pl", - "podlasie.pl", - "polkowice.pl", - "pomorze.pl", - "pomorskie.pl", - "prochowice.pl", - "pruszkow.pl", - "przeworsk.pl", - "pulawy.pl", - "radom.pl", - "rawa-maz.pl", - "rybnik.pl", - "rzeszow.pl", - "sanok.pl", - "sejny.pl", - "slask.pl", - "slupsk.pl", - "sosnowiec.pl", - "stalowa-wola.pl", - "skoczow.pl", - "starachowice.pl", - "stargard.pl", - "suwalki.pl", - "swidnica.pl", - "swiebodzin.pl", - "swinoujscie.pl", - "szczecin.pl", - "szczytno.pl", - "tarnobrzeg.pl", - "tgory.pl", - "turek.pl", - "tychy.pl", - "ustka.pl", - "walbrzych.pl", - "warmia.pl", - "warszawa.pl", - "waw.pl", - "wegrow.pl", - "wielun.pl", - "wlocl.pl", - "wloclawek.pl", - "wodzislaw.pl", - "wolomin.pl", - "wroclaw.pl", - "zachpomor.pl", - "zagan.pl", - "zarow.pl", - "zgora.pl", - "zgorzelec.pl", - "pm", - "pn", - "gov.pn", - "co.pn", - "org.pn", - "edu.pn", - "net.pn", - "post", - "pr", - "com.pr", - "net.pr", - "org.pr", - "gov.pr", - "edu.pr", - "isla.pr", - "pro.pr", - "biz.pr", - "info.pr", - "name.pr", - "est.pr", - "prof.pr", - "ac.pr", - "pro", - "aaa.pro", - "aca.pro", - "acct.pro", - "avocat.pro", - "bar.pro", - "cpa.pro", - "eng.pro", - "jur.pro", - "law.pro", - "med.pro", - "recht.pro", - "ps", - "edu.ps", - "gov.ps", - "sec.ps", - "plo.ps", - "com.ps", - "org.ps", - "net.ps", - "pt", - "net.pt", - "gov.pt", - "org.pt", - "edu.pt", - "int.pt", - "publ.pt", - "com.pt", - "nome.pt", - "pw", - "co.pw", - "ne.pw", - "or.pw", - "ed.pw", - "go.pw", - "belau.pw", - "py", - "com.py", - "coop.py", - "edu.py", - "gov.py", - "mil.py", - "net.py", - "org.py", - "qa", - "com.qa", - "edu.qa", - "gov.qa", - "mil.qa", - "name.qa", - "net.qa", - "org.qa", - "sch.qa", - "re", - "asso.re", - "com.re", - "nom.re", - "ro", - "arts.ro", - "com.ro", - "firm.ro", - "info.ro", - "nom.ro", - "nt.ro", - "org.ro", - "rec.ro", - "store.ro", - "tm.ro", - "www.ro", - "rs", - "ac.rs", - "co.rs", - "edu.rs", - "gov.rs", - "in.rs", - "org.rs", - "ru", - "ac.ru", - "edu.ru", - "gov.ru", - "int.ru", - "mil.ru", - "test.ru", - "rw", - "gov.rw", - "net.rw", - "edu.rw", - "ac.rw", - "com.rw", - "co.rw", - "int.rw", - "mil.rw", - "gouv.rw", - "sa", - "com.sa", - "net.sa", - "org.sa", - "gov.sa", - "med.sa", - "pub.sa", - "edu.sa", - "sch.sa", - "sb", - "com.sb", - "edu.sb", - "gov.sb", - "net.sb", - "org.sb", - "sc", - "com.sc", - "gov.sc", - "net.sc", - "org.sc", - "edu.sc", - "sd", - "com.sd", - "net.sd", - "org.sd", - "edu.sd", - "med.sd", - "tv.sd", - "gov.sd", - "info.sd", - "se", - "a.se", - "ac.se", - "b.se", - "bd.se", - "brand.se", - "c.se", - "d.se", - "e.se", - "f.se", - "fh.se", - "fhsk.se", - "fhv.se", - "g.se", - "h.se", - "i.se", - "k.se", - "komforb.se", - "kommunalforbund.se", - "komvux.se", - "l.se", - "lanbib.se", - "m.se", - "n.se", - "naturbruksgymn.se", - "o.se", - "org.se", - "p.se", - "parti.se", - "pp.se", - "press.se", - "r.se", - "s.se", - "t.se", - "tm.se", - "u.se", - "w.se", - "x.se", - "y.se", - "z.se", - "sg", - "com.sg", - "net.sg", - "org.sg", - "gov.sg", - "edu.sg", - "per.sg", - "sh", - "com.sh", - "net.sh", - "gov.sh", - "org.sh", - "mil.sh", - "si", - "sj", - "sk", - "sl", - "com.sl", - "net.sl", - "edu.sl", - "gov.sl", - "org.sl", - "sm", - "sn", - "art.sn", - "com.sn", - "edu.sn", - "gouv.sn", - "org.sn", - "perso.sn", - "univ.sn", - "so", - "com.so", - "net.so", - "org.so", - "sr", - "st", - "co.st", - "com.st", - "consulado.st", - "edu.st", - "embaixada.st", - "gov.st", - "mil.st", - "net.st", - "org.st", - "principe.st", - "saotome.st", - "store.st", - "su", - "sv", - "com.sv", - "edu.sv", - "gob.sv", - "org.sv", - "red.sv", - "sx", - "gov.sx", - "sy", - "edu.sy", - "gov.sy", - "net.sy", - "mil.sy", - "com.sy", - "org.sy", - "sz", - "co.sz", - "ac.sz", - "org.sz", - "tc", - "td", - "tel", - "tf", - "tg", - "th", - "ac.th", - "co.th", - "go.th", - "in.th", - "mi.th", - "net.th", - "or.th", - "tj", - "ac.tj", - "biz.tj", - "co.tj", - "com.tj", - "edu.tj", - "go.tj", - "gov.tj", - "int.tj", - "mil.tj", - "name.tj", - "net.tj", - "nic.tj", - "org.tj", - "test.tj", - "web.tj", - "tk", - "tl", - "gov.tl", - "tm", - "com.tm", - "co.tm", - "org.tm", - "net.tm", - "nom.tm", - "gov.tm", - "mil.tm", - "edu.tm", - "tn", - "com.tn", - "ens.tn", - "fin.tn", - "gov.tn", - "ind.tn", - "intl.tn", - "nat.tn", - "net.tn", - "org.tn", - "info.tn", - "perso.tn", - "tourism.tn", - "edunet.tn", - "rnrt.tn", - "rns.tn", - "rnu.tn", - "mincom.tn", - "agrinet.tn", - "defense.tn", - "turen.tn", - "to", - "com.to", - "gov.to", - "net.to", - "org.to", - "edu.to", - "mil.to", - "tr", - "com.tr", - "info.tr", - "biz.tr", - "net.tr", - "org.tr", - "web.tr", - "gen.tr", - "tv.tr", - "av.tr", - "dr.tr", - "bbs.tr", - "name.tr", - "tel.tr", - "gov.tr", - "bel.tr", - "pol.tr", - "mil.tr", - "k12.tr", - "edu.tr", - "kep.tr", - "nc.tr", - "gov.nc.tr", - "travel", - "tt", - "co.tt", - "com.tt", - "org.tt", - "net.tt", - "biz.tt", - "info.tt", - "pro.tt", - "int.tt", - "coop.tt", - "jobs.tt", - "mobi.tt", - "travel.tt", - "museum.tt", - "aero.tt", - "name.tt", - "gov.tt", - "edu.tt", - "tv", - "tw", - "edu.tw", - "gov.tw", - "mil.tw", - "com.tw", - "net.tw", - "org.tw", - "idv.tw", - "game.tw", - "ebiz.tw", - "club.tw", - "xn--zf0ao64a.tw", - "xn--uc0atv.tw", - "xn--czrw28b.tw", - "tz", - "ac.tz", - "co.tz", - "go.tz", - "hotel.tz", - "info.tz", - "me.tz", - "mil.tz", - "mobi.tz", - "ne.tz", - "or.tz", - "sc.tz", - "tv.tz", - "ua", - "com.ua", - "edu.ua", - "gov.ua", - "in.ua", - "net.ua", - "org.ua", - "cherkassy.ua", - "cherkasy.ua", - "chernigov.ua", - "chernihiv.ua", - "chernivtsi.ua", - "chernovtsy.ua", - "ck.ua", - "cn.ua", - "cr.ua", - "crimea.ua", - "cv.ua", - "dn.ua", - "dnepropetrovsk.ua", - "dnipropetrovsk.ua", - "dominic.ua", - "donetsk.ua", - "dp.ua", - "if.ua", - "ivano-frankivsk.ua", - "kh.ua", - "kharkiv.ua", - "kharkov.ua", - "kherson.ua", - "khmelnitskiy.ua", - "khmelnytskyi.ua", - "kiev.ua", - "kirovograd.ua", - "km.ua", - "kr.ua", - "krym.ua", - "ks.ua", - "kv.ua", - "kyiv.ua", - "lg.ua", - "lt.ua", - "lugansk.ua", - "lutsk.ua", - "lv.ua", - "lviv.ua", - "mk.ua", - "mykolaiv.ua", - "nikolaev.ua", - "od.ua", - "odesa.ua", - "odessa.ua", - "pl.ua", - "poltava.ua", - "rivne.ua", - "rovno.ua", - "rv.ua", - "sb.ua", - "sebastopol.ua", - "sevastopol.ua", - "sm.ua", - "sumy.ua", - "te.ua", - "ternopil.ua", - "uz.ua", - "uzhgorod.ua", - "vinnica.ua", - "vinnytsia.ua", - "vn.ua", - "volyn.ua", - "yalta.ua", - "zaporizhzhe.ua", - "zaporizhzhia.ua", - "zhitomir.ua", - "zhytomyr.ua", - "zp.ua", - "zt.ua", - "ug", - "co.ug", - "or.ug", - "ac.ug", - "sc.ug", - "go.ug", - "ne.ug", - "com.ug", - "org.ug", - "uk", - "ac.uk", - "co.uk", - "gov.uk", - "ltd.uk", - "me.uk", - "net.uk", - "nhs.uk", - "org.uk", - "plc.uk", - "police.uk", - "*.sch.uk", - "us", - "dni.us", - "fed.us", - "isa.us", - "kids.us", - "nsn.us", - "ak.us", - "al.us", - "ar.us", - "as.us", - "az.us", - "ca.us", - "co.us", - "ct.us", - "dc.us", - "de.us", - "fl.us", - "ga.us", - "gu.us", - "hi.us", - "ia.us", - "id.us", - "il.us", - "in.us", - "ks.us", - "ky.us", - "la.us", - "ma.us", - "md.us", - "me.us", - "mi.us", - "mn.us", - "mo.us", - "ms.us", - "mt.us", - "nc.us", - "nd.us", - "ne.us", - "nh.us", - "nj.us", - "nm.us", - "nv.us", - "ny.us", - "oh.us", - "ok.us", - "or.us", - "pa.us", - "pr.us", - "ri.us", - "sc.us", - "sd.us", - "tn.us", - "tx.us", - "ut.us", - "vi.us", - "vt.us", - "va.us", - "wa.us", - "wi.us", - "wv.us", - "wy.us", - "k12.ak.us", - "k12.al.us", - "k12.ar.us", - "k12.as.us", - "k12.az.us", - "k12.ca.us", - "k12.co.us", - "k12.ct.us", - "k12.dc.us", - "k12.de.us", - "k12.fl.us", - "k12.ga.us", - "k12.gu.us", - "k12.ia.us", - "k12.id.us", - "k12.il.us", - "k12.in.us", - "k12.ks.us", - "k12.ky.us", - "k12.la.us", - "k12.ma.us", - "k12.md.us", - "k12.me.us", - "k12.mi.us", - "k12.mn.us", - "k12.mo.us", - "k12.ms.us", - "k12.mt.us", - "k12.nc.us", - "k12.ne.us", - "k12.nh.us", - "k12.nj.us", - "k12.nm.us", - "k12.nv.us", - "k12.ny.us", - "k12.oh.us", - "k12.ok.us", - "k12.or.us", - "k12.pa.us", - "k12.pr.us", - "k12.ri.us", - "k12.sc.us", - "k12.tn.us", - "k12.tx.us", - "k12.ut.us", - "k12.vi.us", - "k12.vt.us", - "k12.va.us", - "k12.wa.us", - "k12.wi.us", - "k12.wy.us", - "cc.ak.us", - "cc.al.us", - "cc.ar.us", - "cc.as.us", - "cc.az.us", - "cc.ca.us", - "cc.co.us", - "cc.ct.us", - "cc.dc.us", - "cc.de.us", - "cc.fl.us", - "cc.ga.us", - "cc.gu.us", - "cc.hi.us", - "cc.ia.us", - "cc.id.us", - "cc.il.us", - "cc.in.us", - "cc.ks.us", - "cc.ky.us", - "cc.la.us", - "cc.ma.us", - "cc.md.us", - "cc.me.us", - "cc.mi.us", - "cc.mn.us", - "cc.mo.us", - "cc.ms.us", - "cc.mt.us", - "cc.nc.us", - "cc.nd.us", - "cc.ne.us", - "cc.nh.us", - "cc.nj.us", - "cc.nm.us", - "cc.nv.us", - "cc.ny.us", - "cc.oh.us", - "cc.ok.us", - "cc.or.us", - "cc.pa.us", - "cc.pr.us", - "cc.ri.us", - "cc.sc.us", - "cc.sd.us", - "cc.tn.us", - "cc.tx.us", - "cc.ut.us", - "cc.vi.us", - "cc.vt.us", - "cc.va.us", - "cc.wa.us", - "cc.wi.us", - "cc.wv.us", - "cc.wy.us", - "lib.ak.us", - "lib.al.us", - "lib.ar.us", - "lib.as.us", - "lib.az.us", - "lib.ca.us", - "lib.co.us", - "lib.ct.us", - "lib.dc.us", - "lib.fl.us", - "lib.ga.us", - "lib.gu.us", - "lib.hi.us", - "lib.ia.us", - "lib.id.us", - "lib.il.us", - "lib.in.us", - "lib.ks.us", - "lib.ky.us", - "lib.la.us", - "lib.ma.us", - "lib.md.us", - "lib.me.us", - "lib.mi.us", - "lib.mn.us", - "lib.mo.us", - "lib.ms.us", - "lib.mt.us", - "lib.nc.us", - "lib.nd.us", - "lib.ne.us", - "lib.nh.us", - "lib.nj.us", - "lib.nm.us", - "lib.nv.us", - "lib.ny.us", - "lib.oh.us", - "lib.ok.us", - "lib.or.us", - "lib.pa.us", - "lib.pr.us", - "lib.ri.us", - "lib.sc.us", - "lib.sd.us", - "lib.tn.us", - "lib.tx.us", - "lib.ut.us", - "lib.vi.us", - "lib.vt.us", - "lib.va.us", - "lib.wa.us", - "lib.wi.us", - "lib.wy.us", - "pvt.k12.ma.us", - "chtr.k12.ma.us", - "paroch.k12.ma.us", - "ann-arbor.mi.us", - "cog.mi.us", - "dst.mi.us", - "eaton.mi.us", - "gen.mi.us", - "mus.mi.us", - "tec.mi.us", - "washtenaw.mi.us", - "uy", - "com.uy", - "edu.uy", - "gub.uy", - "mil.uy", - "net.uy", - "org.uy", - "uz", - "co.uz", - "com.uz", - "net.uz", - "org.uz", - "va", - "vc", - "com.vc", - "net.vc", - "org.vc", - "gov.vc", - "mil.vc", - "edu.vc", - "ve", - "arts.ve", - "co.ve", - "com.ve", - "e12.ve", - "edu.ve", - "firm.ve", - "gob.ve", - "gov.ve", - "info.ve", - "int.ve", - "mil.ve", - "net.ve", - "org.ve", - "rec.ve", - "store.ve", - "tec.ve", - "web.ve", - "vg", - "vi", - "co.vi", - "com.vi", - "k12.vi", - "net.vi", - "org.vi", - "vn", - "com.vn", - "net.vn", - "org.vn", - "edu.vn", - "gov.vn", - "int.vn", - "ac.vn", - "biz.vn", - "info.vn", - "name.vn", - "pro.vn", - "health.vn", - "vu", - "com.vu", - "edu.vu", - "net.vu", - "org.vu", - "wf", - "ws", - "com.ws", - "net.ws", - "org.ws", - "gov.ws", - "edu.ws", - "yt", - "xn--mgbaam7a8h", - "xn--y9a3aq", - "xn--54b7fta0cc", - "xn--90ae", - "xn--90ais", - "xn--fiqs8s", - "xn--fiqz9s", - "xn--lgbbat1ad8j", - "xn--wgbh1c", - "xn--e1a4c", - "xn--node", - "xn--qxam", - "xn--j6w193g", - "xn--2scrj9c", - "xn--3hcrj9c", - "xn--45br5cyl", - "xn--h2breg3eve", - "xn--h2brj9c8c", - "xn--mgbgu82a", - "xn--rvc1e0am3e", - "xn--h2brj9c", - "xn--mgbbh1a71e", - "xn--fpcrj9c3d", - "xn--gecrj9c", - "xn--s9brj9c", - "xn--45brj9c", - "xn--xkc2dl3a5ee0h", - "xn--mgba3a4f16a", - "xn--mgba3a4fra", - "xn--mgbtx2b", - "xn--mgbayh7gpa", - "xn--3e0b707e", - "xn--80ao21a", - "xn--fzc2c9e2c", - "xn--xkc2al3hye2a", - "xn--mgbc0a9azcg", - "xn--d1alf", - "xn--l1acc", - "xn--mix891f", - "xn--mix082f", - "xn--mgbx4cd0ab", - "xn--mgb9awbf", - "xn--mgbai9azgqp6j", - "xn--mgbai9a5eva00b", - "xn--ygbi2ammx", - "xn--90a3ac", - "xn--o1ac.xn--90a3ac", - "xn--c1avg.xn--90a3ac", - "xn--90azh.xn--90a3ac", - "xn--d1at.xn--90a3ac", - "xn--o1ach.xn--90a3ac", - "xn--80au.xn--90a3ac", - "xn--p1ai", - "xn--wgbl6a", - "xn--mgberp4a5d4ar", - "xn--mgberp4a5d4a87g", - "xn--mgbqly7c0a67fbc", - "xn--mgbqly7cvafr", - "xn--mgbpl2fh", - "xn--yfro4i67o", - "xn--clchc0ea0b2g2a9gcd", - "xn--ogbpf8fl", - "xn--mgbtf8fl", - "xn--o3cw4h", - "xn--12c1fe0br.xn--o3cw4h", - "xn--12co0c3b4eva.xn--o3cw4h", - "xn--h3cuzk1di.xn--o3cw4h", - "xn--o3cyx2a.xn--o3cw4h", - "xn--m3ch0j3a.xn--o3cw4h", - "xn--12cfi8ixb8l.xn--o3cw4h", - "xn--pgbs0dh", - "xn--kpry57d", - "xn--kprw13d", - "xn--nnx388a", - "xn--j1amh", - "xn--mgb2ddes", - "xxx", - "*.ye", - "ac.za", - "agric.za", - "alt.za", - "co.za", - "edu.za", - "gov.za", - "grondar.za", - "law.za", - "mil.za", - "net.za", - "ngo.za", - "nis.za", - "nom.za", - "org.za", - "school.za", - "tm.za", - "web.za", - "zm", - "ac.zm", - "biz.zm", - "co.zm", - "com.zm", - "edu.zm", - "gov.zm", - "info.zm", - "mil.zm", - "net.zm", - "org.zm", - "sch.zm", - "zw", - "ac.zw", - "co.zw", - "gov.zw", - "mil.zw", - "org.zw", - "aaa", - "aarp", - "abarth", - "abb", - "abbott", - "abbvie", - "abc", - "able", - "abogado", - "abudhabi", - "academy", - "accenture", - "accountant", - "accountants", - "aco", - "active", - "actor", - "adac", - "ads", - "adult", - "aeg", - "aetna", - "afamilycompany", - "afl", - "africa", - "agakhan", - "agency", - "aig", - "aigo", - "airbus", - "airforce", - "airtel", - "akdn", - "alfaromeo", - "alibaba", - "alipay", - "allfinanz", - "allstate", - "ally", - "alsace", - "alstom", - "americanexpress", - "americanfamily", - "amex", - "amfam", - "amica", - "amsterdam", - "analytics", - "android", - "anquan", - "anz", - "aol", - "apartments", - "app", - "apple", - "aquarelle", - "arab", - "aramco", - "archi", - "army", - "art", - "arte", - "asda", - "associates", - "athleta", - "attorney", - "auction", - "audi", - "audible", - "audio", - "auspost", - "author", - "auto", - "autos", - "avianca", - "aws", - "axa", - "azure", - "baby", - "baidu", - "banamex", - "bananarepublic", - "band", - "bank", - "bar", - "barcelona", - "barclaycard", - "barclays", - "barefoot", - "bargains", - "baseball", - "basketball", - "bauhaus", - "bayern", - "bbc", - "bbt", - "bbva", - "bcg", - "bcn", - "beats", - "beauty", - "beer", - "bentley", - "berlin", - "best", - "bestbuy", - "bet", - "bharti", - "bible", - "bid", - "bike", - "bing", - "bingo", - "bio", - "black", - "blackfriday", - "blanco", - "blockbuster", - "blog", - "bloomberg", - "blue", - "bms", - "bmw", - "bnl", - "bnpparibas", - "boats", - "boehringer", - "bofa", - "bom", - "bond", - "boo", - "book", - "booking", - "boots", - "bosch", - "bostik", - "boston", - "bot", - "boutique", - "box", - "bradesco", - "bridgestone", - "broadway", - "broker", - "brother", - "brussels", - "budapest", - "bugatti", - "build", - "builders", - "business", - "buy", - "buzz", - "bzh", - "cab", - "cafe", - "cal", - "call", - "calvinklein", - "cam", - "camera", - "camp", - "cancerresearch", - "canon", - "capetown", - "capital", - "capitalone", - "car", - "caravan", - "cards", - "care", - "career", - "careers", - "cars", - "cartier", - "casa", - "case", - "caseih", - "cash", - "casino", - "catering", - "catholic", - "cba", - "cbn", - "cbre", - "cbs", - "ceb", - "center", - "ceo", - "cern", - "cfa", - "cfd", - "chanel", - "channel", - "chase", - "chat", - "cheap", - "chintai", - "christmas", - "chrome", - "chrysler", - "church", - "cipriani", - "circle", - "cisco", - "citadel", - "citi", - "citic", - "city", - "cityeats", - "claims", - "cleaning", - "click", - "clinic", - "clinique", - "clothing", - "cloud", - "club", - "clubmed", - "coach", - "codes", - "coffee", - "college", - "cologne", - "comcast", - "commbank", - "community", - "company", - "compare", - "computer", - "comsec", - "condos", - "construction", - "consulting", - "contact", - "contractors", - "cooking", - "cookingchannel", - "cool", - "corsica", - "country", - "coupon", - "coupons", - "courses", - "credit", - "creditcard", - "creditunion", - "cricket", - "crown", - "crs", - "cruise", - "cruises", - "csc", - "cuisinella", - "cymru", - "cyou", - "dabur", - "dad", - "dance", - "data", - "date", - "dating", - "datsun", - "day", - "dclk", - "dds", - "deal", - "dealer", - "deals", - "degree", - "delivery", - "dell", - "deloitte", - "delta", - "democrat", - "dental", - "dentist", - "desi", - "design", - "dev", - "dhl", - "diamonds", - "diet", - "digital", - "direct", - "directory", - "discount", - "discover", - "dish", - "diy", - "dnp", - "docs", - "doctor", - "dodge", - "dog", - "doha", - "domains", - "dot", - "download", - "drive", - "dtv", - "dubai", - "duck", - "dunlop", - "duns", - "dupont", - "durban", - "dvag", - "dvr", - "earth", - "eat", - "eco", - "edeka", - "education", - "email", - "emerck", - "energy", - "engineer", - "engineering", - "enterprises", - "epost", - "epson", - "equipment", - "ericsson", - "erni", - "esq", - "estate", - "esurance", - "etisalat", - "eurovision", - "eus", - "events", - "everbank", - "exchange", - "expert", - "exposed", - "express", - "extraspace", - "fage", - "fail", - "fairwinds", - "faith", - "family", - "fan", - "fans", - "farm", - "farmers", - "fashion", - "fast", - "fedex", - "feedback", - "ferrari", - "ferrero", - "fiat", - "fidelity", - "fido", - "film", - "final", - "finance", - "financial", - "fire", - "firestone", - "firmdale", - "fish", - "fishing", - "fit", - "fitness", - "flickr", - "flights", - "flir", - "florist", - "flowers", - "fly", - "foo", - "food", - "foodnetwork", - "football", - "ford", - "forex", - "forsale", - "forum", - "foundation", - "fox", - "free", - "fresenius", - "frl", - "frogans", - "frontdoor", - "frontier", - "ftr", - "fujitsu", - "fujixerox", - "fun", - "fund", - "furniture", - "futbol", - "fyi", - "gal", - "gallery", - "gallo", - "gallup", - "game", - "games", - "gap", - "garden", - "gbiz", - "gdn", - "gea", - "gent", - "genting", - "george", - "ggee", - "gift", - "gifts", - "gives", - "giving", - "glade", - "glass", - "gle", - "global", - "globo", - "gmail", - "gmbh", - "gmo", - "gmx", - "godaddy", - "gold", - "goldpoint", - "golf", - "goo", - "goodhands", - "goodyear", - "goog", - "google", - "gop", - "got", - "grainger", - "graphics", - "gratis", - "green", - "gripe", - "grocery", - "group", - "guardian", - "gucci", - "guge", - "guide", - "guitars", - "guru", - "hair", - "hamburg", - "hangout", - "haus", - "hbo", - "hdfc", - "hdfcbank", - "health", - "healthcare", - "help", - "helsinki", - "here", - "hermes", - "hgtv", - "hiphop", - "hisamitsu", - "hitachi", - "hiv", - "hkt", - "hockey", - "holdings", - "holiday", - "homedepot", - "homegoods", - "homes", - "homesense", - "honda", - "honeywell", - "horse", - "hospital", - "host", - "hosting", - "hot", - "hoteles", - "hotels", - "hotmail", - "house", - "how", - "hsbc", - "hughes", - "hyatt", - "hyundai", - "ibm", - "icbc", - "ice", - "icu", - "ieee", - "ifm", - "ikano", - "imamat", - "imdb", - "immo", - "immobilien", - "industries", - "infiniti", - "ing", - "ink", - "institute", - "insurance", - "insure", - "intel", - "international", - "intuit", - "investments", - "ipiranga", - "irish", - "iselect", - "ismaili", - "ist", - "istanbul", - "itau", - "itv", - "iveco", - "iwc", - "jaguar", - "java", - "jcb", - "jcp", - "jeep", - "jetzt", - "jewelry", - "jio", - "jlc", - "jll", - "jmp", - "jnj", - "joburg", - "jot", - "joy", - "jpmorgan", - "jprs", - "juegos", - "juniper", - "kaufen", - "kddi", - "kerryhotels", - "kerrylogistics", - "kerryproperties", - "kfh", - "kia", - "kim", - "kinder", - "kindle", - "kitchen", - "kiwi", - "koeln", - "komatsu", - "kosher", - "kpmg", - "kpn", - "krd", - "kred", - "kuokgroup", - "kyoto", - "lacaixa", - "ladbrokes", - "lamborghini", - "lamer", - "lancaster", - "lancia", - "lancome", - "land", - "landrover", - "lanxess", - "lasalle", - "lat", - "latino", - "latrobe", - "law", - "lawyer", - "lds", - "lease", - "leclerc", - "lefrak", - "legal", - "lego", - "lexus", - "lgbt", - "liaison", - "lidl", - "life", - "lifeinsurance", - "lifestyle", - "lighting", - "like", - "lilly", - "limited", - "limo", - "lincoln", - "linde", - "link", - "lipsy", - "live", - "living", - "lixil", - "loan", - "loans", - "locker", - "locus", - "loft", - "lol", - "london", - "lotte", - "lotto", - "love", - "lpl", - "lplfinancial", - "ltd", - "ltda", - "lundbeck", - "lupin", - "luxe", - "luxury", - "macys", - "madrid", - "maif", - "maison", - "makeup", - "man", - "management", - "mango", - "map", - "market", - "marketing", - "markets", - "marriott", - "marshalls", - "maserati", - "mattel", - "mba", - "mckinsey", - "med", - "media", - "meet", - "melbourne", - "meme", - "memorial", - "men", - "menu", - "meo", - "merckmsd", - "metlife", - "miami", - "microsoft", - "mini", - "mint", - "mit", - "mitsubishi", - "mlb", - "mls", - "mma", - "mobile", - "mobily", - "moda", - "moe", - "moi", - "mom", - "monash", - "money", - "monster", - "mopar", - "mormon", - "mortgage", - "moscow", - "moto", - "motorcycles", - "mov", - "movie", - "movistar", - "msd", - "mtn", - "mtpc", - "mtr", - "mutual", - "nab", - "nadex", - "nagoya", - "nationwide", - "natura", - "navy", - "nba", - "nec", - "netbank", - "netflix", - "network", - "neustar", - "new", - "newholland", - "news", - "next", - "nextdirect", - "nexus", - "nfl", - "ngo", - "nhk", - "nico", - "nike", - "nikon", - "ninja", - "nissan", - "nissay", - "nokia", - "northwesternmutual", - "norton", - "now", - "nowruz", - "nowtv", - "nra", - "nrw", - "ntt", - "nyc", - "obi", - "observer", - "off", - "office", - "okinawa", - "olayan", - "olayangroup", - "oldnavy", - "ollo", - "omega", - "one", - "ong", - "onl", - "online", - "onyourside", - "ooo", - "open", - "oracle", - "orange", - "organic", - "origins", - "osaka", - "otsuka", - "ott", - "ovh", - "page", - "panasonic", - "panerai", - "paris", - "pars", - "partners", - "parts", - "party", - "passagens", - "pay", - "pccw", - "pet", - "pfizer", - "pharmacy", - "phd", - "philips", - "phone", - "photo", - "photography", - "photos", - "physio", - "piaget", - "pics", - "pictet", - "pictures", - "pid", - "pin", - "ping", - "pink", - "pioneer", - "pizza", - "place", - "play", - "playstation", - "plumbing", - "plus", - "pnc", - "pohl", - "poker", - "politie", - "porn", - "pramerica", - "praxi", - "press", - "prime", - "prod", - "productions", - "prof", - "progressive", - "promo", - "properties", - "property", - "protection", - "pru", - "prudential", - "pub", - "pwc", - "qpon", - "quebec", - "quest", - "qvc", - "racing", - "radio", - "raid", - "read", - "realestate", - "realtor", - "realty", - "recipes", - "red", - "redstone", - "redumbrella", - "rehab", - "reise", - "reisen", - "reit", - "reliance", - "ren", - "rent", - "rentals", - "repair", - "report", - "republican", - "rest", - "restaurant", - "review", - "reviews", - "rexroth", - "rich", - "richardli", - "ricoh", - "rightathome", - "ril", - "rio", - "rip", - "rmit", - "rocher", - "rocks", - "rodeo", - "rogers", - "room", - "rsvp", - "rugby", - "ruhr", - "run", - "rwe", - "ryukyu", - "saarland", - "safe", - "safety", - "sakura", - "sale", - "salon", - "samsclub", - "samsung", - "sandvik", - "sandvikcoromant", - "sanofi", - "sap", - "sapo", - "sarl", - "sas", - "save", - "saxo", - "sbi", - "sbs", - "sca", - "scb", - "schaeffler", - "schmidt", - "scholarships", - "school", - "schule", - "schwarz", - "science", - "scjohnson", - "scor", - "scot", - "search", - "seat", - "secure", - "security", - "seek", - "select", - "sener", - "services", - "ses", - "seven", - "sew", - "sex", - "sexy", - "sfr", - "shangrila", - "sharp", - "shaw", - "shell", - "shia", - "shiksha", - "shoes", - "shop", - "shopping", - "shouji", - "show", - "showtime", - "shriram", - "silk", - "sina", - "singles", - "site", - "ski", - "skin", - "sky", - "skype", - "sling", - "smart", - "smile", - "sncf", - "soccer", - "social", - "softbank", - "software", - "sohu", - "solar", - "solutions", - "song", - "sony", - "soy", - "space", - "spiegel", - "spot", - "spreadbetting", - "srl", - "srt", - "stada", - "staples", - "star", - "starhub", - "statebank", - "statefarm", - "statoil", - "stc", - "stcgroup", - "stockholm", - "storage", - "store", - "stream", - "studio", - "study", - "style", - "sucks", - "supplies", - "supply", - "support", - "surf", - "surgery", - "suzuki", - "swatch", - "swiftcover", - "swiss", - "sydney", - "symantec", - "systems", - "tab", - "taipei", - "talk", - "taobao", - "target", - "tatamotors", - "tatar", - "tattoo", - "tax", - "taxi", - "tci", - "tdk", - "team", - "tech", - "technology", - "telecity", - "telefonica", - "temasek", - "tennis", - "teva", - "thd", - "theater", - "theatre", - "tiaa", - "tickets", - "tienda", - "tiffany", - "tips", - "tires", - "tirol", - "tjmaxx", - "tjx", - "tkmaxx", - "tmall", - "today", - "tokyo", - "tools", - "top", - "toray", - "toshiba", - "total", - "tours", - "town", - "toyota", - "toys", - "trade", - "trading", - "training", - "travelchannel", - "travelers", - "travelersinsurance", - "trust", - "trv", - "tube", - "tui", - "tunes", - "tushu", - "tvs", - "ubank", - "ubs", - "uconnect", - "unicom", - "university", - "uno", - "uol", - "ups", - "vacations", - "vana", - "vanguard", - "vegas", - "ventures", - "verisign", - "versicherung", - "vet", - "viajes", - "video", - "vig", - "viking", - "villas", - "vin", - "vip", - "virgin", - "visa", - "vision", - "vista", - "vistaprint", - "viva", - "vivo", - "vlaanderen", - "vodka", - "volkswagen", - "volvo", - "vote", - "voting", - "voto", - "voyage", - "vuelos", - "wales", - "walmart", - "walter", - "wang", - "wanggou", - "warman", - "watch", - "watches", - "weather", - "weatherchannel", - "webcam", - "weber", - "website", - "wed", - "wedding", - "weibo", - "weir", - "whoswho", - "wien", - "wiki", - "williamhill", - "win", - "windows", - "wine", - "winners", - "wme", - "wolterskluwer", - "woodside", - "work", - "works", - "world", - "wow", - "wtc", - "wtf", - "xbox", - "xerox", - "xfinity", - "xihuan", - "xin", - "xn--11b4c3d", - "xn--1ck2e1b", - "xn--1qqw23a", - "xn--30rr7y", - "xn--3bst00m", - "xn--3ds443g", - "xn--3oq18vl8pn36a", - "xn--3pxu8k", - "xn--42c2d9a", - "xn--45q11c", - "xn--4gbrim", - "xn--55qw42g", - "xn--55qx5d", - "xn--5su34j936bgsg", - "xn--5tzm5g", - "xn--6frz82g", - "xn--6qq986b3xl", - "xn--80adxhks", - "xn--80aqecdr1a", - "xn--80asehdb", - "xn--80aswg", - "xn--8y0a063a", - "xn--9dbq2a", - "xn--9et52u", - "xn--9krt00a", - "xn--b4w605ferd", - "xn--bck1b9a5dre4c", - "xn--c1avg", - "xn--c2br7g", - "xn--cck2b3b", - "xn--cg4bki", - "xn--czr694b", - "xn--czrs0t", - "xn--czru2d", - "xn--d1acj3b", - "xn--eckvdtc9d", - "xn--efvy88h", - "xn--estv75g", - "xn--fct429k", - "xn--fhbei", - "xn--fiq228c5hs", - "xn--fiq64b", - "xn--fjq720a", - "xn--flw351e", - "xn--fzys8d69uvgm", - "xn--g2xx48c", - "xn--gckr3f0f", - "xn--gk3at1e", - "xn--hxt814e", - "xn--i1b6b1a6a2e", - "xn--imr513n", - "xn--io0a7i", - "xn--j1aef", - "xn--jlq61u9w7b", - "xn--jvr189m", - "xn--kcrx77d1x4a", - "xn--kpu716f", - "xn--kput3i", - "xn--mgba3a3ejt", - "xn--mgba7c0bbn0a", - "xn--mgbaakc7dvf", - "xn--mgbab2bd", - "xn--mgbb9fbpob", - "xn--mgbca7dzdo", - "xn--mgbi4ecexp", - "xn--mgbt3dhd", - "xn--mk1bu44c", - "xn--mxtq1m", - "xn--ngbc5azd", - "xn--ngbe9e0a", - "xn--ngbrx", - "xn--nqv7f", - "xn--nqv7fs00ema", - "xn--nyqy26a", - "xn--p1acf", - "xn--pbt977c", - "xn--pssy2u", - "xn--q9jyb4c", - "xn--qcka1pmc", - "xn--rhqv96g", - "xn--rovu88b", - "xn--ses554g", - "xn--t60b56a", - "xn--tckwe", - "xn--tiq49xqyj", - "xn--unup4y", - "xn--vermgensberater-ctb", - "xn--vermgensberatung-pwb", - "xn--vhquv", - "xn--vuq861b", - "xn--w4r85el8fhu5dnra", - "xn--w4rs40l", - "xn--xhq521b", - "xn--zfr164b", - "xperia", - "xyz", - "yachts", - "yahoo", - "yamaxun", - "yandex", - "yodobashi", - "yoga", - "yokohama", - "you", - "youtube", - "yun", - "zappos", - "zara", - "zero", - "zip", - "zippo", - "zone", - "zuerich", - "cc.ua", - "inf.ua", - "ltd.ua", - "1password.ca", - "1password.com", - "1password.eu", - "beep.pl", - "*.compute.estate", - "*.alces.network", - "alwaysdata.net", - "cloudfront.net", - "*.compute.amazonaws.com", - "*.compute-1.amazonaws.com", - "*.compute.amazonaws.com.cn", - "us-east-1.amazonaws.com", - "cn-north-1.eb.amazonaws.com.cn", - "elasticbeanstalk.com", - "ap-northeast-1.elasticbeanstalk.com", - "ap-northeast-2.elasticbeanstalk.com", - "ap-south-1.elasticbeanstalk.com", - "ap-southeast-1.elasticbeanstalk.com", - "ap-southeast-2.elasticbeanstalk.com", - "ca-central-1.elasticbeanstalk.com", - "eu-central-1.elasticbeanstalk.com", - "eu-west-1.elasticbeanstalk.com", - "eu-west-2.elasticbeanstalk.com", - "eu-west-3.elasticbeanstalk.com", - "sa-east-1.elasticbeanstalk.com", - "us-east-1.elasticbeanstalk.com", - "us-east-2.elasticbeanstalk.com", - "us-gov-west-1.elasticbeanstalk.com", - "us-west-1.elasticbeanstalk.com", - "us-west-2.elasticbeanstalk.com", - "*.elb.amazonaws.com", - "*.elb.amazonaws.com.cn", - "s3.amazonaws.com", - "s3-ap-northeast-1.amazonaws.com", - "s3-ap-northeast-2.amazonaws.com", - "s3-ap-south-1.amazonaws.com", - "s3-ap-southeast-1.amazonaws.com", - "s3-ap-southeast-2.amazonaws.com", - "s3-ca-central-1.amazonaws.com", - "s3-eu-central-1.amazonaws.com", - "s3-eu-west-1.amazonaws.com", - "s3-eu-west-2.amazonaws.com", - "s3-eu-west-3.amazonaws.com", - "s3-external-1.amazonaws.com", - "s3-fips-us-gov-west-1.amazonaws.com", - "s3-sa-east-1.amazonaws.com", - "s3-us-gov-west-1.amazonaws.com", - "s3-us-east-2.amazonaws.com", - "s3-us-west-1.amazonaws.com", - "s3-us-west-2.amazonaws.com", - "s3.ap-northeast-2.amazonaws.com", - "s3.ap-south-1.amazonaws.com", - "s3.cn-north-1.amazonaws.com.cn", - "s3.ca-central-1.amazonaws.com", - "s3.eu-central-1.amazonaws.com", - "s3.eu-west-2.amazonaws.com", - "s3.eu-west-3.amazonaws.com", - "s3.us-east-2.amazonaws.com", - "s3.dualstack.ap-northeast-1.amazonaws.com", - "s3.dualstack.ap-northeast-2.amazonaws.com", - "s3.dualstack.ap-south-1.amazonaws.com", - "s3.dualstack.ap-southeast-1.amazonaws.com", - "s3.dualstack.ap-southeast-2.amazonaws.com", - "s3.dualstack.ca-central-1.amazonaws.com", - "s3.dualstack.eu-central-1.amazonaws.com", - "s3.dualstack.eu-west-1.amazonaws.com", - "s3.dualstack.eu-west-2.amazonaws.com", - "s3.dualstack.eu-west-3.amazonaws.com", - "s3.dualstack.sa-east-1.amazonaws.com", - "s3.dualstack.us-east-1.amazonaws.com", - "s3.dualstack.us-east-2.amazonaws.com", - "s3-website-us-east-1.amazonaws.com", - "s3-website-us-west-1.amazonaws.com", - "s3-website-us-west-2.amazonaws.com", - "s3-website-ap-northeast-1.amazonaws.com", - "s3-website-ap-southeast-1.amazonaws.com", - "s3-website-ap-southeast-2.amazonaws.com", - "s3-website-eu-west-1.amazonaws.com", - "s3-website-sa-east-1.amazonaws.com", - "s3-website.ap-northeast-2.amazonaws.com", - "s3-website.ap-south-1.amazonaws.com", - "s3-website.ca-central-1.amazonaws.com", - "s3-website.eu-central-1.amazonaws.com", - "s3-website.eu-west-2.amazonaws.com", - "s3-website.eu-west-3.amazonaws.com", - "s3-website.us-east-2.amazonaws.com", - "t3l3p0rt.net", - "tele.amune.org", - "on-aptible.com", - "user.party.eus", - "pimienta.org", - "poivron.org", - "potager.org", - "sweetpepper.org", - "myasustor.com", - "myfritz.net", - "*.awdev.ca", - "*.advisor.ws", - "backplaneapp.io", - "betainabox.com", - "bnr.la", - "boomla.net", - "boxfuse.io", - "square7.ch", - "bplaced.com", - "bplaced.de", - "square7.de", - "bplaced.net", - "square7.net", - "browsersafetymark.io", - "mycd.eu", - "ae.org", - "ar.com", - "br.com", - "cn.com", - "com.de", - "com.se", - "de.com", - "eu.com", - "gb.com", - "gb.net", - "hu.com", - "hu.net", - "jp.net", - "jpn.com", - "kr.com", - "mex.com", - "no.com", - "qc.com", - "ru.com", - "sa.com", - "se.com", - "se.net", - "uk.com", - "uk.net", - "us.com", - "uy.com", - "za.bz", - "za.com", - "africa.com", - "gr.com", - "in.net", - "us.org", - "co.com", - "c.la", - "certmgr.org", - "xenapponazure.com", - "virtueeldomein.nl", - "c66.me", - "jdevcloud.com", - "wpdevcloud.com", - "cloudaccess.host", - "freesite.host", - "cloudaccess.net", - "cloudcontrolled.com", - "cloudcontrolapp.com", - "co.ca", - "co.cz", - "c.cdn77.org", - "cdn77-ssl.net", - "r.cdn77.net", - "rsc.cdn77.org", - "ssl.origin.cdn77-secure.org", - "cloudns.asia", - "cloudns.biz", - "cloudns.club", - "cloudns.cc", - "cloudns.eu", - "cloudns.in", - "cloudns.info", - "cloudns.org", - "cloudns.pro", - "cloudns.pw", - "cloudns.us", - "co.nl", - "co.no", - "webhosting.be", - "hosting-cluster.nl", - "dyn.cosidns.de", - "dynamisches-dns.de", - "dnsupdater.de", - "internet-dns.de", - "l-o-g-i-n.de", - "dynamic-dns.info", - "feste-ip.net", - "knx-server.net", - "static-access.net", - "realm.cz", - "*.cryptonomic.net", - "cupcake.is", - "cyon.link", - "cyon.site", - "daplie.me", - "localhost.daplie.me", - "biz.dk", - "co.dk", - "firm.dk", - "reg.dk", - "store.dk", - "debian.net", - "dedyn.io", - "dnshome.de", - "drayddns.com", - "dreamhosters.com", - "mydrobo.com", - "drud.io", - "drud.us", - "duckdns.org", - "dy.fi", - "tunk.org", - "dyndns-at-home.com", - "dyndns-at-work.com", - "dyndns-blog.com", - "dyndns-free.com", - "dyndns-home.com", - "dyndns-ip.com", - "dyndns-mail.com", - "dyndns-office.com", - "dyndns-pics.com", - "dyndns-remote.com", - "dyndns-server.com", - "dyndns-web.com", - "dyndns-wiki.com", - "dyndns-work.com", - "dyndns.biz", - "dyndns.info", - "dyndns.org", - "dyndns.tv", - "at-band-camp.net", - "ath.cx", - "barrel-of-knowledge.info", - "barrell-of-knowledge.info", - "better-than.tv", - "blogdns.com", - "blogdns.net", - "blogdns.org", - "blogsite.org", - "boldlygoingnowhere.org", - "broke-it.net", - "buyshouses.net", - "cechire.com", - "dnsalias.com", - "dnsalias.net", - "dnsalias.org", - "dnsdojo.com", - "dnsdojo.net", - "dnsdojo.org", - "does-it.net", - "doesntexist.com", - "doesntexist.org", - "dontexist.com", - "dontexist.net", - "dontexist.org", - "doomdns.com", - "doomdns.org", - "dvrdns.org", - "dyn-o-saur.com", - "dynalias.com", - "dynalias.net", - "dynalias.org", - "dynathome.net", - "dyndns.ws", - "endofinternet.net", - "endofinternet.org", - "endoftheinternet.org", - "est-a-la-maison.com", - "est-a-la-masion.com", - "est-le-patron.com", - "est-mon-blogueur.com", - "for-better.biz", - "for-more.biz", - "for-our.info", - "for-some.biz", - "for-the.biz", - "forgot.her.name", - "forgot.his.name", - "from-ak.com", - "from-al.com", - "from-ar.com", - "from-az.net", - "from-ca.com", - "from-co.net", - "from-ct.com", - "from-dc.com", - "from-de.com", - "from-fl.com", - "from-ga.com", - "from-hi.com", - "from-ia.com", - "from-id.com", - "from-il.com", - "from-in.com", - "from-ks.com", - "from-ky.com", - "from-la.net", - "from-ma.com", - "from-md.com", - "from-me.org", - "from-mi.com", - "from-mn.com", - "from-mo.com", - "from-ms.com", - "from-mt.com", - "from-nc.com", - "from-nd.com", - "from-ne.com", - "from-nh.com", - "from-nj.com", - "from-nm.com", - "from-nv.com", - "from-ny.net", - "from-oh.com", - "from-ok.com", - "from-or.com", - "from-pa.com", - "from-pr.com", - "from-ri.com", - "from-sc.com", - "from-sd.com", - "from-tn.com", - "from-tx.com", - "from-ut.com", - "from-va.com", - "from-vt.com", - "from-wa.com", - "from-wi.com", - "from-wv.com", - "from-wy.com", - "ftpaccess.cc", - "fuettertdasnetz.de", - "game-host.org", - "game-server.cc", - "getmyip.com", - "gets-it.net", - "go.dyndns.org", - "gotdns.com", - "gotdns.org", - "groks-the.info", - "groks-this.info", - "ham-radio-op.net", - "here-for-more.info", - "hobby-site.com", - "hobby-site.org", - "home.dyndns.org", - "homedns.org", - "homeftp.net", - "homeftp.org", - "homeip.net", - "homelinux.com", - "homelinux.net", - "homelinux.org", - "homeunix.com", - "homeunix.net", - "homeunix.org", - "iamallama.com", - "in-the-band.net", - "is-a-anarchist.com", - "is-a-blogger.com", - "is-a-bookkeeper.com", - "is-a-bruinsfan.org", - "is-a-bulls-fan.com", - "is-a-candidate.org", - "is-a-caterer.com", - "is-a-celticsfan.org", - "is-a-chef.com", - "is-a-chef.net", - "is-a-chef.org", - "is-a-conservative.com", - "is-a-cpa.com", - "is-a-cubicle-slave.com", - "is-a-democrat.com", - "is-a-designer.com", - "is-a-doctor.com", - "is-a-financialadvisor.com", - "is-a-geek.com", - "is-a-geek.net", - "is-a-geek.org", - "is-a-green.com", - "is-a-guru.com", - "is-a-hard-worker.com", - "is-a-hunter.com", - "is-a-knight.org", - "is-a-landscaper.com", - "is-a-lawyer.com", - "is-a-liberal.com", - "is-a-libertarian.com", - "is-a-linux-user.org", - "is-a-llama.com", - "is-a-musician.com", - "is-a-nascarfan.com", - "is-a-nurse.com", - "is-a-painter.com", - "is-a-patsfan.org", - "is-a-personaltrainer.com", - "is-a-photographer.com", - "is-a-player.com", - "is-a-republican.com", - "is-a-rockstar.com", - "is-a-socialist.com", - "is-a-soxfan.org", - "is-a-student.com", - "is-a-teacher.com", - "is-a-techie.com", - "is-a-therapist.com", - "is-an-accountant.com", - "is-an-actor.com", - "is-an-actress.com", - "is-an-anarchist.com", - "is-an-artist.com", - "is-an-engineer.com", - "is-an-entertainer.com", - "is-by.us", - "is-certified.com", - "is-found.org", - "is-gone.com", - "is-into-anime.com", - "is-into-cars.com", - "is-into-cartoons.com", - "is-into-games.com", - "is-leet.com", - "is-lost.org", - "is-not-certified.com", - "is-saved.org", - "is-slick.com", - "is-uberleet.com", - "is-very-bad.org", - "is-very-evil.org", - "is-very-good.org", - "is-very-nice.org", - "is-very-sweet.org", - "is-with-theband.com", - "isa-geek.com", - "isa-geek.net", - "isa-geek.org", - "isa-hockeynut.com", - "issmarterthanyou.com", - "isteingeek.de", - "istmein.de", - "kicks-ass.net", - "kicks-ass.org", - "knowsitall.info", - "land-4-sale.us", - "lebtimnetz.de", - "leitungsen.de", - "likes-pie.com", - "likescandy.com", - "merseine.nu", - "mine.nu", - "misconfused.org", - "mypets.ws", - "myphotos.cc", - "neat-url.com", - "office-on-the.net", - "on-the-web.tv", - "podzone.net", - "podzone.org", - "readmyblog.org", - "saves-the-whales.com", - "scrapper-site.net", - "scrapping.cc", - "selfip.biz", - "selfip.com", - "selfip.info", - "selfip.net", - "selfip.org", - "sells-for-less.com", - "sells-for-u.com", - "sells-it.net", - "sellsyourhome.org", - "servebbs.com", - "servebbs.net", - "servebbs.org", - "serveftp.net", - "serveftp.org", - "servegame.org", - "shacknet.nu", - "simple-url.com", - "space-to-rent.com", - "stuff-4-sale.org", - "stuff-4-sale.us", - "teaches-yoga.com", - "thruhere.net", - "traeumtgerade.de", - "webhop.biz", - "webhop.info", - "webhop.net", - "webhop.org", - "worse-than.tv", - "writesthisblog.com", - "ddnss.de", - "dyn.ddnss.de", - "dyndns.ddnss.de", - "dyndns1.de", - "dyn-ip24.de", - "home-webserver.de", - "dyn.home-webserver.de", - "myhome-server.de", - "ddnss.org", - "definima.net", - "definima.io", - "ddnsfree.com", - "ddnsgeek.com", - "giize.com", - "gleeze.com", - "kozow.com", - "loseyourip.com", - "ooguy.com", - "theworkpc.com", - "casacam.net", - "dynu.net", - "accesscam.org", - "camdvr.org", - "freeddns.org", - "mywire.org", - "webredirect.org", - "myddns.rocks", - "blogsite.xyz", - "dynv6.net", - "e4.cz", - "mytuleap.com", - "enonic.io", - "customer.enonic.io", - "eu.org", - "al.eu.org", - "asso.eu.org", - "at.eu.org", - "au.eu.org", - "be.eu.org", - "bg.eu.org", - "ca.eu.org", - "cd.eu.org", - "ch.eu.org", - "cn.eu.org", - "cy.eu.org", - "cz.eu.org", - "de.eu.org", - "dk.eu.org", - "edu.eu.org", - "ee.eu.org", - "es.eu.org", - "fi.eu.org", - "fr.eu.org", - "gr.eu.org", - "hr.eu.org", - "hu.eu.org", - "ie.eu.org", - "il.eu.org", - "in.eu.org", - "int.eu.org", - "is.eu.org", - "it.eu.org", - "jp.eu.org", - "kr.eu.org", - "lt.eu.org", - "lu.eu.org", - "lv.eu.org", - "mc.eu.org", - "me.eu.org", - "mk.eu.org", - "mt.eu.org", - "my.eu.org", - "net.eu.org", - "ng.eu.org", - "nl.eu.org", - "no.eu.org", - "nz.eu.org", - "paris.eu.org", - "pl.eu.org", - "pt.eu.org", - "q-a.eu.org", - "ro.eu.org", - "ru.eu.org", - "se.eu.org", - "si.eu.org", - "sk.eu.org", - "tr.eu.org", - "uk.eu.org", - "us.eu.org", - "eu-1.evennode.com", - "eu-2.evennode.com", - "eu-3.evennode.com", - "eu-4.evennode.com", - "us-1.evennode.com", - "us-2.evennode.com", - "us-3.evennode.com", - "us-4.evennode.com", - "twmail.cc", - "twmail.net", - "twmail.org", - "mymailer.com.tw", - "url.tw", - "apps.fbsbx.com", - "ru.net", - "adygeya.ru", - "bashkiria.ru", - "bir.ru", - "cbg.ru", - "com.ru", - "dagestan.ru", - "grozny.ru", - "kalmykia.ru", - "kustanai.ru", - "marine.ru", - "mordovia.ru", - "msk.ru", - "mytis.ru", - "nalchik.ru", - "nov.ru", - "pyatigorsk.ru", - "spb.ru", - "vladikavkaz.ru", - "vladimir.ru", - "abkhazia.su", - "adygeya.su", - "aktyubinsk.su", - "arkhangelsk.su", - "armenia.su", - "ashgabad.su", - "azerbaijan.su", - "balashov.su", - "bashkiria.su", - "bryansk.su", - "bukhara.su", - "chimkent.su", - "dagestan.su", - "east-kazakhstan.su", - "exnet.su", - "georgia.su", - "grozny.su", - "ivanovo.su", - "jambyl.su", - "kalmykia.su", - "kaluga.su", - "karacol.su", - "karaganda.su", - "karelia.su", - "khakassia.su", - "krasnodar.su", - "kurgan.su", - "kustanai.su", - "lenug.su", - "mangyshlak.su", - "mordovia.su", - "msk.su", - "murmansk.su", - "nalchik.su", - "navoi.su", - "north-kazakhstan.su", - "nov.su", - "obninsk.su", - "penza.su", - "pokrovsk.su", - "sochi.su", - "spb.su", - "tashkent.su", - "termez.su", - "togliatti.su", - "troitsk.su", - "tselinograd.su", - "tula.su", - "tuva.su", - "vladikavkaz.su", - "vladimir.su", - "vologda.su", - "channelsdvr.net", - "fastlylb.net", - "map.fastlylb.net", - "freetls.fastly.net", - "map.fastly.net", - "a.prod.fastly.net", - "global.prod.fastly.net", - "a.ssl.fastly.net", - "b.ssl.fastly.net", - "global.ssl.fastly.net", - "fhapp.xyz", - "fedorainfracloud.org", - "fedorapeople.org", - "cloud.fedoraproject.org", - "app.os.fedoraproject.org", - "app.os.stg.fedoraproject.org", - "filegear.me", - "firebaseapp.com", - "flynnhub.com", - "flynnhosting.net", - "freebox-os.com", - "freeboxos.com", - "fbx-os.fr", - "fbxos.fr", - "freebox-os.fr", - "freeboxos.fr", - "*.futurecms.at", - "futurehosting.at", - "futuremailing.at", - "*.ex.ortsinfo.at", - "*.kunden.ortsinfo.at", - "*.statics.cloud", - "service.gov.uk", - "github.io", - "githubusercontent.com", - "gitlab.io", - "homeoffice.gov.uk", - "ro.im", - "shop.ro", - "goip.de", - "*.0emm.com", - "appspot.com", - "blogspot.ae", - "blogspot.al", - "blogspot.am", - "blogspot.ba", - "blogspot.be", - "blogspot.bg", - "blogspot.bj", - "blogspot.ca", - "blogspot.cf", - "blogspot.ch", - "blogspot.cl", - "blogspot.co.at", - "blogspot.co.id", - "blogspot.co.il", - "blogspot.co.ke", - "blogspot.co.nz", - "blogspot.co.uk", - "blogspot.co.za", - "blogspot.com", - "blogspot.com.ar", - "blogspot.com.au", - "blogspot.com.br", - "blogspot.com.by", - "blogspot.com.co", - "blogspot.com.cy", - "blogspot.com.ee", - "blogspot.com.eg", - "blogspot.com.es", - "blogspot.com.mt", - "blogspot.com.ng", - "blogspot.com.tr", - "blogspot.com.uy", - "blogspot.cv", - "blogspot.cz", - "blogspot.de", - "blogspot.dk", - "blogspot.fi", - "blogspot.fr", - "blogspot.gr", - "blogspot.hk", - "blogspot.hr", - "blogspot.hu", - "blogspot.ie", - "blogspot.in", - "blogspot.is", - "blogspot.it", - "blogspot.jp", - "blogspot.kr", - "blogspot.li", - "blogspot.lt", - "blogspot.lu", - "blogspot.md", - "blogspot.mk", - "blogspot.mr", - "blogspot.mx", - "blogspot.my", - "blogspot.nl", - "blogspot.no", - "blogspot.pe", - "blogspot.pt", - "blogspot.qa", - "blogspot.re", - "blogspot.ro", - "blogspot.rs", - "blogspot.ru", - "blogspot.se", - "blogspot.sg", - "blogspot.si", - "blogspot.sk", - "blogspot.sn", - "blogspot.td", - "blogspot.tw", - "blogspot.ug", - "blogspot.vn", - "cloudfunctions.net", - "cloud.goog", - "codespot.com", - "googleapis.com", - "googlecode.com", - "pagespeedmobilizer.com", - "publishproxy.com", - "withgoogle.com", - "withyoutube.com", - "hashbang.sh", - "hasura-app.io", - "hepforge.org", - "herokuapp.com", - "herokussl.com", - "moonscale.net", - "iki.fi", - "biz.at", - "info.at", - "info.cx", - "ac.leg.br", - "al.leg.br", - "am.leg.br", - "ap.leg.br", - "ba.leg.br", - "ce.leg.br", - "df.leg.br", - "es.leg.br", - "go.leg.br", - "ma.leg.br", - "mg.leg.br", - "ms.leg.br", - "mt.leg.br", - "pa.leg.br", - "pb.leg.br", - "pe.leg.br", - "pi.leg.br", - "pr.leg.br", - "rj.leg.br", - "rn.leg.br", - "ro.leg.br", - "rr.leg.br", - "rs.leg.br", - "sc.leg.br", - "se.leg.br", - "sp.leg.br", - "to.leg.br", - "pixolino.com", - "ipifony.net", - "*.triton.zone", - "*.cns.joyent.com", - "js.org", - "keymachine.de", - "knightpoint.systems", - "co.krd", - "edu.krd", - "git-repos.de", - "lcube-server.de", - "svn-repos.de", - "we.bs", - "barsy.bg", - "barsyonline.com", - "barsy.de", - "barsy.eu", - "barsy.in", - "barsy.net", - "barsy.online", - "barsy.support", - "*.magentosite.cloud", - "hb.cldmail.ru", - "cloud.metacentrum.cz", - "custom.metacentrum.cz", - "meteorapp.com", - "eu.meteorapp.com", - "co.pl", - "azurewebsites.net", - "azure-mobile.net", - "cloudapp.net", - "bmoattachments.org", - "net.ru", - "org.ru", - "pp.ru", - "bitballoon.com", - "netlify.com", - "4u.com", - "ngrok.io", - "nh-serv.co.uk", - "nfshost.com", - "nsupdate.info", - "nerdpol.ovh", - "blogsyte.com", - "brasilia.me", - "cable-modem.org", - "ciscofreak.com", - "collegefan.org", - "couchpotatofries.org", - "damnserver.com", - "ddns.me", - "ditchyourip.com", - "dnsfor.me", - "dnsiskinky.com", - "dvrcam.info", - "dynns.com", - "eating-organic.net", - "fantasyleague.cc", - "geekgalaxy.com", - "golffan.us", - "health-carereform.com", - "homesecuritymac.com", - "homesecuritypc.com", - "hopto.me", - "ilovecollege.info", - "loginto.me", - "mlbfan.org", - "mmafan.biz", - "myactivedirectory.com", - "mydissent.net", - "myeffect.net", - "mymediapc.net", - "mypsx.net", - "mysecuritycamera.com", - "mysecuritycamera.net", - "mysecuritycamera.org", - "net-freaks.com", - "nflfan.org", - "nhlfan.net", - "no-ip.ca", - "no-ip.co.uk", - "no-ip.net", - "noip.us", - "onthewifi.com", - "pgafan.net", - "point2this.com", - "pointto.us", - "privatizehealthinsurance.net", - "quicksytes.com", - "read-books.org", - "securitytactics.com", - "serveexchange.com", - "servehumour.com", - "servep2p.com", - "servesarcasm.com", - "stufftoread.com", - "ufcfan.org", - "unusualperson.com", - "workisboring.com", - "3utilities.com", - "bounceme.net", - "ddns.net", - "ddnsking.com", - "gotdns.ch", - "hopto.org", - "myftp.biz", - "myftp.org", - "myvnc.com", - "no-ip.biz", - "no-ip.info", - "no-ip.org", - "noip.me", - "redirectme.net", - "servebeer.com", - "serveblog.net", - "servecounterstrike.com", - "serveftp.com", - "servegame.com", - "servehalflife.com", - "servehttp.com", - "serveirc.com", - "serveminecraft.net", - "servemp3.com", - "servepics.com", - "servequake.com", - "sytes.net", - "webhop.me", - "zapto.org", - "stage.nodeart.io", - "nodum.co", - "nodum.io", - "nyc.mn", - "nom.ae", - "nom.ai", - "nom.al", - "nym.by", - "nym.bz", - "nom.cl", - "nom.gd", - "nom.gl", - "nym.gr", - "nom.gt", - "nom.hn", - "nom.im", - "nym.kz", - "nym.la", - "nom.li", - "nym.li", - "nym.lt", - "nym.lu", - "nym.me", - "nom.mk", - "nym.mx", - "nom.nu", - "nym.nz", - "nym.pe", - "nym.pt", - "nom.pw", - "nom.qa", - "nom.rs", - "nom.si", - "nym.sk", - "nym.su", - "nym.sx", - "nym.tw", - "nom.ug", - "nom.uy", - "nom.vc", - "nom.vg", - "cya.gg", - "nid.io", - "opencraft.hosting", - "operaunite.com", - "outsystemscloud.com", - "ownprovider.com", - "oy.lc", - "pgfog.com", - "pagefrontapp.com", - "art.pl", - "gliwice.pl", - "krakow.pl", - "poznan.pl", - "wroc.pl", - "zakopane.pl", - "pantheonsite.io", - "gotpantheon.com", - "mypep.link", - "on-web.fr", - "*.platform.sh", - "*.platformsh.site", - "xen.prgmr.com", - "priv.at", - "protonet.io", - "chirurgiens-dentistes-en-france.fr", - "byen.site", - "qa2.com", - "dev-myqnapcloud.com", - "alpha-myqnapcloud.com", - "myqnapcloud.com", - "*.quipelements.com", - "vapor.cloud", - "vaporcloud.io", - "rackmaze.com", - "rackmaze.net", - "rhcloud.com", - "resindevice.io", - "devices.resinstaging.io", - "hzc.io", - "wellbeingzone.eu", - "ptplus.fit", - "wellbeingzone.co.uk", - "sandcats.io", - "logoip.de", - "logoip.com", - "scrysec.com", - "firewall-gateway.com", - "firewall-gateway.de", - "my-gateway.de", - "my-router.de", - "spdns.de", - "spdns.eu", - "firewall-gateway.net", - "my-firewall.org", - "myfirewall.org", - "spdns.org", - "*.s5y.io", - "*.sensiosite.cloud", - "biz.ua", - "co.ua", - "pp.ua", - "shiftedit.io", - "myshopblocks.com", - "1kapp.com", - "appchizi.com", - "applinzi.com", - "sinaapp.com", - "vipsinaapp.com", - "bounty-full.com", - "alpha.bounty-full.com", - "beta.bounty-full.com", - "static.land", - "dev.static.land", - "sites.static.land", - "apps.lair.io", - "*.stolos.io", - "spacekit.io", - "stackspace.space", - "storj.farm", - "temp-dns.com", - "diskstation.me", - "dscloud.biz", - "dscloud.me", - "dscloud.mobi", - "dsmynas.com", - "dsmynas.net", - "dsmynas.org", - "familyds.com", - "familyds.net", - "familyds.org", - "i234.me", - "myds.me", - "synology.me", - "vpnplus.to", - "taifun-dns.de", - "gda.pl", - "gdansk.pl", - "gdynia.pl", - "med.pl", - "sopot.pl", - "cust.dev.thingdust.io", - "cust.disrec.thingdust.io", - "cust.prod.thingdust.io", - "cust.testing.thingdust.io", - "bloxcms.com", - "townnews-staging.com", - "12hp.at", - "2ix.at", - "4lima.at", - "lima-city.at", - "12hp.ch", - "2ix.ch", - "4lima.ch", - "lima-city.ch", - "trafficplex.cloud", - "de.cool", - "12hp.de", - "2ix.de", - "4lima.de", - "lima-city.de", - "1337.pictures", - "clan.rip", - "lima-city.rocks", - "webspace.rocks", - "lima.zone", - "*.transurl.be", - "*.transurl.eu", - "*.transurl.nl", - "tuxfamily.org", - "dd-dns.de", - "diskstation.eu", - "diskstation.org", - "dray-dns.de", - "draydns.de", - "dyn-vpn.de", - "dynvpn.de", - "mein-vigor.de", - "my-vigor.de", - "my-wan.de", - "syno-ds.de", - "synology-diskstation.de", - "synology-ds.de", - "uber.space", - "hk.com", - "hk.org", - "ltd.hk", - "inc.hk", - "lib.de.us", - "router.management", - "v-info.info", - "wedeploy.io", - "wedeploy.me", - "wedeploy.sh", - "remotewd.com", - "wmflabs.org", - "cistron.nl", - "demon.nl", - "xs4all.space", - "yolasite.com", - "ybo.faith", - "yombo.me", - "homelink.one", - "ybo.party", - "ybo.review", - "ybo.science", - "ybo.trade", - "za.net", - "za.org", - "now.sh", -} - -var nodeLabels = [...]string{ - "aaa", - "aarp", - "abarth", - "abb", - "abbott", - "abbvie", - "abc", - "able", - "abogado", - "abudhabi", - "ac", - "academy", - "accenture", - "accountant", - "accountants", - "aco", - "active", - "actor", - "ad", - "adac", - "ads", - "adult", - "ae", - "aeg", - "aero", - "aetna", - "af", - "afamilycompany", - "afl", - "africa", - "ag", - "agakhan", - "agency", - "ai", - "aig", - "aigo", - "airbus", - "airforce", - "airtel", - "akdn", - "al", - "alfaromeo", - "alibaba", - "alipay", - "allfinanz", - "allstate", - "ally", - "alsace", - "alstom", - "am", - "americanexpress", - "americanfamily", - "amex", - "amfam", - "amica", - "amsterdam", - "analytics", - "android", - "anquan", - "anz", - "ao", - "aol", - "apartments", - "app", - "apple", - "aq", - "aquarelle", - "ar", - "arab", - "aramco", - "archi", - "army", - "arpa", - "art", - "arte", - "as", - "asda", - "asia", - "associates", - "at", - "athleta", - "attorney", - "au", - "auction", - "audi", - "audible", - "audio", - "auspost", - "author", - "auto", - "autos", - "avianca", - "aw", - "aws", - "ax", - "axa", - "az", - "azure", - "ba", - "baby", - "baidu", - "banamex", - "bananarepublic", - "band", - "bank", - "bar", - "barcelona", - "barclaycard", - "barclays", - "barefoot", - "bargains", - "baseball", - "basketball", - "bauhaus", - "bayern", - "bb", - "bbc", - "bbt", - "bbva", - "bcg", - "bcn", - "bd", - "be", - "beats", - "beauty", - "beer", - "bentley", - "berlin", - "best", - "bestbuy", - "bet", - "bf", - "bg", - "bh", - "bharti", - "bi", - "bible", - "bid", - "bike", - "bing", - "bingo", - "bio", - "biz", - "bj", - "black", - "blackfriday", - "blanco", - "blockbuster", - "blog", - "bloomberg", - "blue", - "bm", - "bms", - "bmw", - "bn", - "bnl", - "bnpparibas", - "bo", - "boats", - "boehringer", - "bofa", - "bom", - "bond", - "boo", - "book", - "booking", - "boots", - "bosch", - "bostik", - "boston", - "bot", - "boutique", - "box", - "br", - "bradesco", - "bridgestone", - "broadway", - "broker", - "brother", - "brussels", - "bs", - "bt", - "budapest", - "bugatti", - "build", - "builders", - "business", - "buy", - "buzz", - "bv", - "bw", - "by", - "bz", - "bzh", - "ca", - "cab", - "cafe", - "cal", - "call", - "calvinklein", - "cam", - "camera", - "camp", - "cancerresearch", - "canon", - "capetown", - "capital", - "capitalone", - "car", - "caravan", - "cards", - "care", - "career", - "careers", - "cars", - "cartier", - "casa", - "case", - "caseih", - "cash", - "casino", - "cat", - "catering", - "catholic", - "cba", - "cbn", - "cbre", - "cbs", - "cc", - "cd", - "ceb", - "center", - "ceo", - "cern", - "cf", - "cfa", - "cfd", - "cg", - "ch", - "chanel", - "channel", - "chase", - "chat", - "cheap", - "chintai", - "christmas", - "chrome", - "chrysler", - "church", - "ci", - "cipriani", - "circle", - "cisco", - "citadel", - "citi", - "citic", - "city", - "cityeats", - "ck", - "cl", - "claims", - "cleaning", - "click", - "clinic", - "clinique", - "clothing", - "cloud", - "club", - "clubmed", - "cm", - "cn", - "co", - "coach", - "codes", - "coffee", - "college", - "cologne", - "com", - "comcast", - "commbank", - "community", - "company", - "compare", - "computer", - "comsec", - "condos", - "construction", - "consulting", - "contact", - "contractors", - "cooking", - "cookingchannel", - "cool", - "coop", - "corsica", - "country", - "coupon", - "coupons", - "courses", - "cr", - "credit", - "creditcard", - "creditunion", - "cricket", - "crown", - "crs", - "cruise", - "cruises", - "csc", - "cu", - "cuisinella", - "cv", - "cw", - "cx", - "cy", - "cymru", - "cyou", - "cz", - "dabur", - "dad", - "dance", - "data", - "date", - "dating", - "datsun", - "day", - "dclk", - "dds", - "de", - "deal", - "dealer", - "deals", - "degree", - "delivery", - "dell", - "deloitte", - "delta", - "democrat", - "dental", - "dentist", - "desi", - "design", - "dev", - "dhl", - "diamonds", - "diet", - "digital", - "direct", - "directory", - "discount", - "discover", - "dish", - "diy", - "dj", - "dk", - "dm", - "dnp", - "do", - "docs", - "doctor", - "dodge", - "dog", - "doha", - "domains", - "dot", - "download", - "drive", - "dtv", - "dubai", - "duck", - "dunlop", - "duns", - "dupont", - "durban", - "dvag", - "dvr", - "dz", - "earth", - "eat", - "ec", - "eco", - "edeka", - "edu", - "education", - "ee", - "eg", - "email", - "emerck", - "energy", - "engineer", - "engineering", - "enterprises", - "epost", - "epson", - "equipment", - "er", - "ericsson", - "erni", - "es", - "esq", - "estate", - "esurance", - "et", - "etisalat", - "eu", - "eurovision", - "eus", - "events", - "everbank", - "exchange", - "expert", - "exposed", - "express", - "extraspace", - "fage", - "fail", - "fairwinds", - "faith", - "family", - "fan", - "fans", - "farm", - "farmers", - "fashion", - "fast", - "fedex", - "feedback", - "ferrari", - "ferrero", - "fi", - "fiat", - "fidelity", - "fido", - "film", - "final", - "finance", - "financial", - "fire", - "firestone", - "firmdale", - "fish", - "fishing", - "fit", - "fitness", - "fj", - "fk", - "flickr", - "flights", - "flir", - "florist", - "flowers", - "fly", - "fm", - "fo", - "foo", - "food", - "foodnetwork", - "football", - "ford", - "forex", - "forsale", - "forum", - "foundation", - "fox", - "fr", - "free", - "fresenius", - "frl", - "frogans", - "frontdoor", - "frontier", - "ftr", - "fujitsu", - "fujixerox", - "fun", - "fund", - "furniture", - "futbol", - "fyi", - "ga", - "gal", - "gallery", - "gallo", - "gallup", - "game", - "games", - "gap", - "garden", - "gb", - "gbiz", - "gd", - "gdn", - "ge", - "gea", - "gent", - "genting", - "george", - "gf", - "gg", - "ggee", - "gh", - "gi", - "gift", - "gifts", - "gives", - "giving", - "gl", - "glade", - "glass", - "gle", - "global", - "globo", - "gm", - "gmail", - "gmbh", - "gmo", - "gmx", - "gn", - "godaddy", - "gold", - "goldpoint", - "golf", - "goo", - "goodhands", - "goodyear", - "goog", - "google", - "gop", - "got", - "gov", - "gp", - "gq", - "gr", - "grainger", - "graphics", - "gratis", - "green", - "gripe", - "grocery", - "group", - "gs", - "gt", - "gu", - "guardian", - "gucci", - "guge", - "guide", - "guitars", - "guru", - "gw", - "gy", - "hair", - "hamburg", - "hangout", - "haus", - "hbo", - "hdfc", - "hdfcbank", - "health", - "healthcare", - "help", - "helsinki", - "here", - "hermes", - "hgtv", - "hiphop", - "hisamitsu", - "hitachi", - "hiv", - "hk", - "hkt", - "hm", - "hn", - "hockey", - "holdings", - "holiday", - "homedepot", - "homegoods", - "homes", - "homesense", - "honda", - "honeywell", - "horse", - "hospital", - "host", - "hosting", - "hot", - "hoteles", - "hotels", - "hotmail", - "house", - "how", - "hr", - "hsbc", - "ht", - "hu", - "hughes", - "hyatt", - "hyundai", - "ibm", - "icbc", - "ice", - "icu", - "id", - "ie", - "ieee", - "ifm", - "ikano", - "il", - "im", - "imamat", - "imdb", - "immo", - "immobilien", - "in", - "industries", - "infiniti", - "info", - "ing", - "ink", - "institute", - "insurance", - "insure", - "int", - "intel", - "international", - "intuit", - "investments", - "io", - "ipiranga", - "iq", - "ir", - "irish", - "is", - "iselect", - "ismaili", - "ist", - "istanbul", - "it", - "itau", - "itv", - "iveco", - "iwc", - "jaguar", - "java", - "jcb", - "jcp", - "je", - "jeep", - "jetzt", - "jewelry", - "jio", - "jlc", - "jll", - "jm", - "jmp", - "jnj", - "jo", - "jobs", - "joburg", - "jot", - "joy", - "jp", - "jpmorgan", - "jprs", - "juegos", - "juniper", - "kaufen", - "kddi", - "ke", - "kerryhotels", - "kerrylogistics", - "kerryproperties", - "kfh", - "kg", - "kh", - "ki", - "kia", - "kim", - "kinder", - "kindle", - "kitchen", - "kiwi", - "km", - "kn", - "koeln", - "komatsu", - "kosher", - "kp", - "kpmg", - "kpn", - "kr", - "krd", - "kred", - "kuokgroup", - "kw", - "ky", - "kyoto", - "kz", - "la", - "lacaixa", - "ladbrokes", - "lamborghini", - "lamer", - "lancaster", - "lancia", - "lancome", - "land", - "landrover", - "lanxess", - "lasalle", - "lat", - "latino", - "latrobe", - "law", - "lawyer", - "lb", - "lc", - "lds", - "lease", - "leclerc", - "lefrak", - "legal", - "lego", - "lexus", - "lgbt", - "li", - "liaison", - "lidl", - "life", - "lifeinsurance", - "lifestyle", - "lighting", - "like", - "lilly", - "limited", - "limo", - "lincoln", - "linde", - "link", - "lipsy", - "live", - "living", - "lixil", - "lk", - "loan", - "loans", - "locker", - "locus", - "loft", - "lol", - "london", - "lotte", - "lotto", - "love", - "lpl", - "lplfinancial", - "lr", - "ls", - "lt", - "ltd", - "ltda", - "lu", - "lundbeck", - "lupin", - "luxe", - "luxury", - "lv", - "ly", - "ma", - "macys", - "madrid", - "maif", - "maison", - "makeup", - "man", - "management", - "mango", - "map", - "market", - "marketing", - "markets", - "marriott", - "marshalls", - "maserati", - "mattel", - "mba", - "mc", - "mckinsey", - "md", - "me", - "med", - "media", - "meet", - "melbourne", - "meme", - "memorial", - "men", - "menu", - "meo", - "merckmsd", - "metlife", - "mg", - "mh", - "miami", - "microsoft", - "mil", - "mini", - "mint", - "mit", - "mitsubishi", - "mk", - "ml", - "mlb", - "mls", - "mm", - "mma", - "mn", - "mo", - "mobi", - "mobile", - "mobily", - "moda", - "moe", - "moi", - "mom", - "monash", - "money", - "monster", - "mopar", - "mormon", - "mortgage", - "moscow", - "moto", - "motorcycles", - "mov", - "movie", - "movistar", - "mp", - "mq", - "mr", - "ms", - "msd", - "mt", - "mtn", - "mtpc", - "mtr", - "mu", - "museum", - "mutual", - "mv", - "mw", - "mx", - "my", - "mz", - "na", - "nab", - "nadex", - "nagoya", - "name", - "nationwide", - "natura", - "navy", - "nba", - "nc", - "ne", - "nec", - "net", - "netbank", - "netflix", - "network", - "neustar", - "new", - "newholland", - "news", - "next", - "nextdirect", - "nexus", - "nf", - "nfl", - "ng", - "ngo", - "nhk", - "ni", - "nico", - "nike", - "nikon", - "ninja", - "nissan", - "nissay", - "nl", - "no", - "nokia", - "northwesternmutual", - "norton", - "now", - "nowruz", - "nowtv", - "np", - "nr", - "nra", - "nrw", - "ntt", - "nu", - "nyc", - "nz", - "obi", - "observer", - "off", - "office", - "okinawa", - "olayan", - "olayangroup", - "oldnavy", - "ollo", - "om", - "omega", - "one", - "ong", - "onion", - "onl", - "online", - "onyourside", - "ooo", - "open", - "oracle", - "orange", - "org", - "organic", - "origins", - "osaka", - "otsuka", - "ott", - "ovh", - "pa", - "page", - "panasonic", - "panerai", - "paris", - "pars", - "partners", - "parts", - "party", - "passagens", - "pay", - "pccw", - "pe", - "pet", - "pf", - "pfizer", - "pg", - "ph", - "pharmacy", - "phd", - "philips", - "phone", - "photo", - "photography", - "photos", - "physio", - "piaget", - "pics", - "pictet", - "pictures", - "pid", - "pin", - "ping", - "pink", - "pioneer", - "pizza", - "pk", - "pl", - "place", - "play", - "playstation", - "plumbing", - "plus", - "pm", - "pn", - "pnc", - "pohl", - "poker", - "politie", - "porn", - "post", - "pr", - "pramerica", - "praxi", - "press", - "prime", - "pro", - "prod", - "productions", - "prof", - "progressive", - "promo", - "properties", - "property", - "protection", - "pru", - "prudential", - "ps", - "pt", - "pub", - "pw", - "pwc", - "py", - "qa", - "qpon", - "quebec", - "quest", - "qvc", - "racing", - "radio", - "raid", - "re", - "read", - "realestate", - "realtor", - "realty", - "recipes", - "red", - "redstone", - "redumbrella", - "rehab", - "reise", - "reisen", - "reit", - "reliance", - "ren", - "rent", - "rentals", - "repair", - "report", - "republican", - "rest", - "restaurant", - "review", - "reviews", - "rexroth", - "rich", - "richardli", - "ricoh", - "rightathome", - "ril", - "rio", - "rip", - "rmit", - "ro", - "rocher", - "rocks", - "rodeo", - "rogers", - "room", - "rs", - "rsvp", - "ru", - "rugby", - "ruhr", - "run", - "rw", - "rwe", - "ryukyu", - "sa", - "saarland", - "safe", - "safety", - "sakura", - "sale", - "salon", - "samsclub", - "samsung", - "sandvik", - "sandvikcoromant", - "sanofi", - "sap", - "sapo", - "sarl", - "sas", - "save", - "saxo", - "sb", - "sbi", - "sbs", - "sc", - "sca", - "scb", - "schaeffler", - "schmidt", - "scholarships", - "school", - "schule", - "schwarz", - "science", - "scjohnson", - "scor", - "scot", - "sd", - "se", - "search", - "seat", - "secure", - "security", - "seek", - "select", - "sener", - "services", - "ses", - "seven", - "sew", - "sex", - "sexy", - "sfr", - "sg", - "sh", - "shangrila", - "sharp", - "shaw", - "shell", - "shia", - "shiksha", - "shoes", - "shop", - "shopping", - "shouji", - "show", - "showtime", - "shriram", - "si", - "silk", - "sina", - "singles", - "site", - "sj", - "sk", - "ski", - "skin", - "sky", - "skype", - "sl", - "sling", - "sm", - "smart", - "smile", - "sn", - "sncf", - "so", - "soccer", - "social", - "softbank", - "software", - "sohu", - "solar", - "solutions", - "song", - "sony", - "soy", - "space", - "spiegel", - "spot", - "spreadbetting", - "sr", - "srl", - "srt", - "st", - "stada", - "staples", - "star", - "starhub", - "statebank", - "statefarm", - "statoil", - "stc", - "stcgroup", - "stockholm", - "storage", - "store", - "stream", - "studio", - "study", - "style", - "su", - "sucks", - "supplies", - "supply", - "support", - "surf", - "surgery", - "suzuki", - "sv", - "swatch", - "swiftcover", - "swiss", - "sx", - "sy", - "sydney", - "symantec", - "systems", - "sz", - "tab", - "taipei", - "talk", - "taobao", - "target", - "tatamotors", - "tatar", - "tattoo", - "tax", - "taxi", - "tc", - "tci", - "td", - "tdk", - "team", - "tech", - "technology", - "tel", - "telecity", - "telefonica", - "temasek", - "tennis", - "teva", - "tf", - "tg", - "th", - "thd", - "theater", - "theatre", - "tiaa", - "tickets", - "tienda", - "tiffany", - "tips", - "tires", - "tirol", - "tj", - "tjmaxx", - "tjx", - "tk", - "tkmaxx", - "tl", - "tm", - "tmall", - "tn", - "to", - "today", - "tokyo", - "tools", - "top", - "toray", - "toshiba", - "total", - "tours", - "town", - "toyota", - "toys", - "tr", - "trade", - "trading", - "training", - "travel", - "travelchannel", - "travelers", - "travelersinsurance", - "trust", - "trv", - "tt", - "tube", - "tui", - "tunes", - "tushu", - "tv", - "tvs", - "tw", - "tz", - "ua", - "ubank", - "ubs", - "uconnect", - "ug", - "uk", - "unicom", - "university", - "uno", - "uol", - "ups", - "us", - "uy", - "uz", - "va", - "vacations", - "vana", - "vanguard", - "vc", - "ve", - "vegas", - "ventures", - "verisign", - "versicherung", - "vet", - "vg", - "vi", - "viajes", - "video", - "vig", - "viking", - "villas", - "vin", - "vip", - "virgin", - "visa", - "vision", - "vista", - "vistaprint", - "viva", - "vivo", - "vlaanderen", - "vn", - "vodka", - "volkswagen", - "volvo", - "vote", - "voting", - "voto", - "voyage", - "vu", - "vuelos", - "wales", - "walmart", - "walter", - "wang", - "wanggou", - "warman", - "watch", - "watches", - "weather", - "weatherchannel", - "webcam", - "weber", - "website", - "wed", - "wedding", - "weibo", - "weir", - "wf", - "whoswho", - "wien", - "wiki", - "williamhill", - "win", - "windows", - "wine", - "winners", - "wme", - "wolterskluwer", - "woodside", - "work", - "works", - "world", - "wow", - "ws", - "wtc", - "wtf", - "xbox", - "xerox", - "xfinity", - "xihuan", - "xin", - "xn--11b4c3d", - "xn--1ck2e1b", - "xn--1qqw23a", - "xn--2scrj9c", - "xn--30rr7y", - "xn--3bst00m", - "xn--3ds443g", - "xn--3e0b707e", - "xn--3hcrj9c", - "xn--3oq18vl8pn36a", - "xn--3pxu8k", - "xn--42c2d9a", - "xn--45br5cyl", - "xn--45brj9c", - "xn--45q11c", - "xn--4gbrim", - "xn--54b7fta0cc", - "xn--55qw42g", - "xn--55qx5d", - "xn--5su34j936bgsg", - "xn--5tzm5g", - "xn--6frz82g", - "xn--6qq986b3xl", - "xn--80adxhks", - "xn--80ao21a", - "xn--80aqecdr1a", - "xn--80asehdb", - "xn--80aswg", - "xn--8y0a063a", - "xn--90a3ac", - "xn--90ae", - "xn--90ais", - "xn--9dbq2a", - "xn--9et52u", - "xn--9krt00a", - "xn--b4w605ferd", - "xn--bck1b9a5dre4c", - "xn--c1avg", - "xn--c2br7g", - "xn--cck2b3b", - "xn--cg4bki", - "xn--clchc0ea0b2g2a9gcd", - "xn--czr694b", - "xn--czrs0t", - "xn--czru2d", - "xn--d1acj3b", - "xn--d1alf", - "xn--e1a4c", - "xn--eckvdtc9d", - "xn--efvy88h", - "xn--estv75g", - "xn--fct429k", - "xn--fhbei", - "xn--fiq228c5hs", - "xn--fiq64b", - "xn--fiqs8s", - "xn--fiqz9s", - "xn--fjq720a", - "xn--flw351e", - "xn--fpcrj9c3d", - "xn--fzc2c9e2c", - "xn--fzys8d69uvgm", - "xn--g2xx48c", - "xn--gckr3f0f", - "xn--gecrj9c", - "xn--gk3at1e", - "xn--h2breg3eve", - "xn--h2brj9c", - "xn--h2brj9c8c", - "xn--hxt814e", - "xn--i1b6b1a6a2e", - "xn--imr513n", - "xn--io0a7i", - "xn--j1aef", - "xn--j1amh", - "xn--j6w193g", - "xn--jlq61u9w7b", - "xn--jvr189m", - "xn--kcrx77d1x4a", - "xn--kprw13d", - "xn--kpry57d", - "xn--kpu716f", - "xn--kput3i", - "xn--l1acc", - "xn--lgbbat1ad8j", - "xn--mgb2ddes", - "xn--mgb9awbf", - "xn--mgba3a3ejt", - "xn--mgba3a4f16a", - "xn--mgba3a4fra", - "xn--mgba7c0bbn0a", - "xn--mgbaakc7dvf", - "xn--mgbaam7a8h", - "xn--mgbab2bd", - "xn--mgbai9a5eva00b", - "xn--mgbai9azgqp6j", - "xn--mgbayh7gpa", - "xn--mgbb9fbpob", - "xn--mgbbh1a71e", - "xn--mgbc0a9azcg", - "xn--mgbca7dzdo", - "xn--mgberp4a5d4a87g", - "xn--mgberp4a5d4ar", - "xn--mgbgu82a", - "xn--mgbi4ecexp", - "xn--mgbpl2fh", - "xn--mgbqly7c0a67fbc", - "xn--mgbqly7cvafr", - "xn--mgbt3dhd", - "xn--mgbtf8fl", - "xn--mgbtx2b", - "xn--mgbx4cd0ab", - "xn--mix082f", - "xn--mix891f", - "xn--mk1bu44c", - "xn--mxtq1m", - "xn--ngbc5azd", - "xn--ngbe9e0a", - "xn--ngbrx", - "xn--nnx388a", - "xn--node", - "xn--nqv7f", - "xn--nqv7fs00ema", - "xn--nyqy26a", - "xn--o3cw4h", - "xn--ogbpf8fl", - "xn--p1acf", - "xn--p1ai", - "xn--pbt977c", - "xn--pgbs0dh", - "xn--pssy2u", - "xn--q9jyb4c", - "xn--qcka1pmc", - "xn--qxam", - "xn--rhqv96g", - "xn--rovu88b", - "xn--rvc1e0am3e", - "xn--s9brj9c", - "xn--ses554g", - "xn--t60b56a", - "xn--tckwe", - "xn--tiq49xqyj", - "xn--unup4y", - "xn--vermgensberater-ctb", - "xn--vermgensberatung-pwb", - "xn--vhquv", - "xn--vuq861b", - "xn--w4r85el8fhu5dnra", - "xn--w4rs40l", - "xn--wgbh1c", - "xn--wgbl6a", - "xn--xhq521b", - "xn--xkc2al3hye2a", - "xn--xkc2dl3a5ee0h", - "xn--y9a3aq", - "xn--yfro4i67o", - "xn--ygbi2ammx", - "xn--zfr164b", - "xperia", - "xxx", - "xyz", - "yachts", - "yahoo", - "yamaxun", - "yandex", - "ye", - "yodobashi", - "yoga", - "yokohama", - "you", - "youtube", - "yt", - "yun", - "za", - "zappos", - "zara", - "zero", - "zip", - "zippo", - "zm", - "zone", - "zuerich", - "zw", - "com", - "edu", - "gov", - "mil", - "net", - "org", - "nom", - "ac", - "blogspot", - "co", - "gov", - "mil", - "net", - "nom", - "org", - "sch", - "accident-investigation", - "accident-prevention", - "aerobatic", - "aeroclub", - "aerodrome", - "agents", - "air-surveillance", - "air-traffic-control", - "aircraft", - "airline", - "airport", - "airtraffic", - "ambulance", - "amusement", - "association", - "author", - "ballooning", - "broker", - "caa", - "cargo", - "catering", - "certification", - "championship", - "charter", - "civilaviation", - "club", - "conference", - "consultant", - "consulting", - "control", - "council", - "crew", - "design", - "dgca", - "educator", - "emergency", - "engine", - "engineer", - "entertainment", - "equipment", - "exchange", - "express", - "federation", - "flight", - "freight", - "fuel", - "gliding", - "government", - "groundhandling", - "group", - "hanggliding", - "homebuilt", - "insurance", - "journal", - "journalist", - "leasing", - "logistics", - "magazine", - "maintenance", - "media", - "microlight", - "modelling", - "navigation", - "parachuting", - "paragliding", - "passenger-association", - "pilot", - "press", - "production", - "recreation", - "repbody", - "res", - "research", - "rotorcraft", - "safety", - "scientist", - "services", - "show", - "skydiving", - "software", - "student", - "trader", - "trading", - "trainer", - "union", - "workinggroup", - "works", - "com", - "edu", - "gov", - "net", - "org", - "co", - "com", - "net", - "nom", - "org", - "com", - "net", - "nom", - "off", - "org", - "blogspot", - "com", - "edu", - "gov", - "mil", - "net", - "nom", - "org", - "blogspot", - "co", - "ed", - "gv", - "it", - "og", - "pb", - "com", - "edu", - "gob", - "gov", - "int", - "mil", - "musica", - "net", - "org", - "tur", - "blogspot", - "e164", - "in-addr", - "ip6", - "iris", - "uri", - "urn", - "gov", - "cloudns", - "12hp", - "2ix", - "4lima", - "ac", - "biz", - "co", - "futurecms", - "futurehosting", - "futuremailing", - "gv", - "info", - "lima-city", - "or", - "ortsinfo", - "priv", - "blogspot", - "ex", - "kunden", - "act", - "asn", - "com", - "conf", - "edu", - "gov", - "id", - "info", - "net", - "nsw", - "nt", - "org", - "oz", - "qld", - "sa", - "tas", - "vic", - "wa", - "blogspot", - "act", - "nsw", - "nt", - "qld", - "sa", - "tas", - "vic", - "wa", - "qld", - "sa", - "tas", - "vic", - "wa", - "com", - "biz", - "com", - "edu", - "gov", - "info", - "int", - "mil", - "name", - "net", - "org", - "pp", - "pro", - "blogspot", - "com", - "edu", - "gov", - "mil", - "net", - "org", - "biz", - "co", - "com", - "edu", - "gov", - "info", - "net", - "org", - "store", - "tv", - "ac", - "blogspot", - "transurl", - "webhosting", - "gov", - "0", - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "a", - "b", - "barsy", - "blogspot", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "com", - "edu", - "gov", - "net", - "org", - "co", - "com", - "edu", - "or", - "org", - "cloudns", - "dscloud", - "dyndns", - "for-better", - "for-more", - "for-some", - "for-the", - "mmafan", - "myftp", - "no-ip", - "selfip", - "webhop", - "asso", - "barreau", - "blogspot", - "gouv", - "com", - "edu", - "gov", - "net", - "org", - "academia", - "agro", - "arte", - "blog", - "bolivia", - "ciencia", - "com", - "cooperativa", - "democracia", - "deporte", - "ecologia", - "economia", - "edu", - "empresa", - "gob", - "indigena", - "industria", - "info", - "int", - "medicina", - "mil", - "movimiento", - "musica", - "natural", - "net", - "nombre", - "noticias", - "org", - "patria", - "plurinacional", - "politica", - "profesional", - "pueblo", - "revista", - "salud", - "tecnologia", - "tksat", - "transporte", - "tv", - "web", - "wiki", - "9guacu", - "abc", - "adm", - "adv", - "agr", - "aju", - "am", - "anani", - "aparecida", - "arq", - "art", - "ato", - "b", - "belem", - "bhz", - "bio", - "blog", - "bmd", - "boavista", - "bsb", - "campinagrande", - "campinas", - "caxias", - "cim", - "cng", - "cnt", - "com", - "contagem", - "coop", - "cri", - "cuiaba", - "curitiba", - "def", - "ecn", - "eco", - "edu", - "emp", - "eng", - "esp", - "etc", - "eti", - "far", - "feira", - "flog", - "floripa", - "fm", - "fnd", - "fortal", - "fot", - "foz", - "fst", - "g12", - "ggf", - "goiania", - "gov", - "gru", - "imb", - "ind", - "inf", - "jab", - "jampa", - "jdf", - "joinville", - "jor", - "jus", - "leg", - "lel", - "londrina", - "macapa", - "maceio", - "manaus", - "maringa", - "mat", - "med", - "mil", - "morena", - "mp", - "mus", - "natal", - "net", - "niteroi", - "nom", - "not", - "ntr", - "odo", - "org", - "osasco", - "palmas", - "poa", - "ppg", - "pro", - "psc", - "psi", - "pvh", - "qsl", - "radio", - "rec", - "recife", - "ribeirao", - "rio", - "riobranco", - "riopreto", - "salvador", - "sampa", - "santamaria", - "santoandre", - "saobernardo", - "saogonca", - "sjc", - "slg", - "slz", - "sorocaba", - "srv", - "taxi", - "teo", - "the", - "tmp", - "trd", - "tur", - "tv", - "udi", - "vet", - "vix", - "vlog", - "wiki", - "zlg", - "blogspot", - "ac", - "al", - "am", - "ap", - "ba", - "ce", - "df", - "es", - "go", - "ma", - "mg", - "ms", - "mt", - "pa", - "pb", - "pe", - "pi", - "pr", - "rj", - "rn", - "ro", - "rr", - "rs", - "sc", - "se", - "sp", - "to", - "ac", - "al", - "am", - "ap", - "ba", - "ce", - "df", - "es", - "go", - "ma", - "mg", - "ms", - "mt", - "pa", - "pb", - "pe", - "pi", - "pr", - "rj", - "rn", - "ro", - "rr", - "rs", - "sc", - "se", - "sp", - "to", - "com", - "edu", - "gov", - "net", - "org", - "we", - "com", - "edu", - "gov", - "net", - "org", - "co", - "org", - "com", - "gov", - "mil", - "nym", - "of", - "blogspot", - "com", - "edu", - "gov", - "net", - "nym", - "org", - "za", - "1password", - "ab", - "awdev", - "bc", - "blogspot", - "co", - "gc", - "mb", - "nb", - "nf", - "nl", - "no-ip", - "ns", - "nt", - "nu", - "on", - "pe", - "qc", - "sk", - "yk", - "cloudns", - "fantasyleague", - "ftpaccess", - "game-server", - "myphotos", - "scrapping", - "twmail", - "gov", - "blogspot", - "12hp", - "2ix", - "4lima", - "blogspot", - "gotdns", - "lima-city", - "square7", - "ac", - "asso", - "co", - "com", - "ed", - "edu", - "go", - "gouv", - "int", - "md", - "net", - "or", - "org", - "presse", - "xn--aroport-bya", - "www", - "blogspot", - "co", - "gob", - "gov", - "mil", - "nom", - "magentosite", - "sensiosite", - "statics", - "trafficplex", - "vapor", - "cloudns", - "co", - "com", - "gov", - "net", - "ac", - "ah", - "bj", - "com", - "cq", - "edu", - "fj", - "gd", - "gov", - "gs", - "gx", - "gz", - "ha", - "hb", - "he", - "hi", - "hk", - "hl", - "hn", - "jl", - "js", - "jx", - "ln", - "mil", - "mo", - "net", - "nm", - "nx", - "org", - "qh", - "sc", - "sd", - "sh", - "sn", - "sx", - "tj", - "tw", - "xj", - "xn--55qx5d", - "xn--io0a7i", - "xn--od0alg", - "xz", - "yn", - "zj", - "amazonaws", - "cn-north-1", - "compute", - "eb", - "elb", - "s3", - "cn-north-1", - "arts", - "com", - "edu", - "firm", - "gov", - "info", - "int", - "mil", - "net", - "nodum", - "nom", - "org", - "rec", - "web", - "blogspot", - "0emm", - "1kapp", - "1password", - "3utilities", - "4u", - "africa", - "alpha-myqnapcloud", - "amazonaws", - "appchizi", - "applinzi", - "appspot", - "ar", - "barsyonline", - "betainabox", - "bitballoon", - "blogdns", - "blogspot", - "blogsyte", - "bloxcms", - "bounty-full", - "bplaced", - "br", - "cechire", - "ciscofreak", - "cloudcontrolapp", - "cloudcontrolled", - "cn", - "co", - "codespot", - "damnserver", - "ddnsfree", - "ddnsgeek", - "ddnsking", - "de", - "dev-myqnapcloud", - "ditchyourip", - "dnsalias", - "dnsdojo", - "dnsiskinky", - "doesntexist", - "dontexist", - "doomdns", - "drayddns", - "dreamhosters", - "dsmynas", - "dyn-o-saur", - "dynalias", - "dyndns-at-home", - "dyndns-at-work", - "dyndns-blog", - "dyndns-free", - "dyndns-home", - "dyndns-ip", - "dyndns-mail", - "dyndns-office", - "dyndns-pics", - "dyndns-remote", - "dyndns-server", - "dyndns-web", - "dyndns-wiki", - "dyndns-work", - "dynns", - "elasticbeanstalk", - "est-a-la-maison", - "est-a-la-masion", - "est-le-patron", - "est-mon-blogueur", - "eu", - "evennode", - "familyds", - "fbsbx", - "firebaseapp", - "firewall-gateway", - "flynnhub", - "freebox-os", - "freeboxos", - "from-ak", - "from-al", - "from-ar", - "from-ca", - "from-ct", - "from-dc", - "from-de", - "from-fl", - "from-ga", - "from-hi", - "from-ia", - "from-id", - "from-il", - "from-in", - "from-ks", - "from-ky", - "from-ma", - "from-md", - "from-mi", - "from-mn", - "from-mo", - "from-ms", - "from-mt", - "from-nc", - "from-nd", - "from-ne", - "from-nh", - "from-nj", - "from-nm", - "from-nv", - "from-oh", - "from-ok", - "from-or", - "from-pa", - "from-pr", - "from-ri", - "from-sc", - "from-sd", - "from-tn", - "from-tx", - "from-ut", - "from-va", - "from-vt", - "from-wa", - "from-wi", - "from-wv", - "from-wy", - "gb", - "geekgalaxy", - "getmyip", - "giize", - "githubusercontent", - "gleeze", - "googleapis", - "googlecode", - "gotdns", - "gotpantheon", - "gr", - "health-carereform", - "herokuapp", - "herokussl", - "hk", - "hobby-site", - "homelinux", - "homesecuritymac", - "homesecuritypc", - "homeunix", - "hu", - "iamallama", - "is-a-anarchist", - "is-a-blogger", - "is-a-bookkeeper", - "is-a-bulls-fan", - "is-a-caterer", - "is-a-chef", - "is-a-conservative", - "is-a-cpa", - "is-a-cubicle-slave", - "is-a-democrat", - "is-a-designer", - "is-a-doctor", - "is-a-financialadvisor", - "is-a-geek", - "is-a-green", - "is-a-guru", - "is-a-hard-worker", - "is-a-hunter", - "is-a-landscaper", - "is-a-lawyer", - "is-a-liberal", - "is-a-libertarian", - "is-a-llama", - "is-a-musician", - "is-a-nascarfan", - "is-a-nurse", - "is-a-painter", - "is-a-personaltrainer", - "is-a-photographer", - "is-a-player", - "is-a-republican", - "is-a-rockstar", - "is-a-socialist", - "is-a-student", - "is-a-teacher", - "is-a-techie", - "is-a-therapist", - "is-an-accountant", - "is-an-actor", - "is-an-actress", - "is-an-anarchist", - "is-an-artist", - "is-an-engineer", - "is-an-entertainer", - "is-certified", - "is-gone", - "is-into-anime", - "is-into-cars", - "is-into-cartoons", - "is-into-games", - "is-leet", - "is-not-certified", - "is-slick", - "is-uberleet", - "is-with-theband", - "isa-geek", - "isa-hockeynut", - "issmarterthanyou", - "jdevcloud", - "joyent", - "jpn", - "kozow", - "kr", - "likes-pie", - "likescandy", - "logoip", - "loseyourip", - "meteorapp", - "mex", - "myactivedirectory", - "myasustor", - "mydrobo", - "myqnapcloud", - "mysecuritycamera", - "myshopblocks", - "mytuleap", - "myvnc", - "neat-url", - "net-freaks", - "netlify", - "nfshost", - "no", - "on-aptible", - "onthewifi", - "ooguy", - "operaunite", - "outsystemscloud", - "ownprovider", - "pagefrontapp", - "pagespeedmobilizer", - "pgfog", - "pixolino", - "point2this", - "prgmr", - "publishproxy", - "qa2", - "qc", - "quicksytes", - "quipelements", - "rackmaze", - "remotewd", - "rhcloud", - "ru", - "sa", - "saves-the-whales", - "scrysec", - "se", - "securitytactics", - "selfip", - "sells-for-less", - "sells-for-u", - "servebbs", - "servebeer", - "servecounterstrike", - "serveexchange", - "serveftp", - "servegame", - "servehalflife", - "servehttp", - "servehumour", - "serveirc", - "servemp3", - "servep2p", - "servepics", - "servequake", - "servesarcasm", - "simple-url", - "sinaapp", - "space-to-rent", - "stufftoread", - "teaches-yoga", - "temp-dns", - "theworkpc", - "townnews-staging", - "uk", - "unusualperson", - "us", - "uy", - "vipsinaapp", - "withgoogle", - "withyoutube", - "workisboring", - "wpdevcloud", - "writesthisblog", - "xenapponazure", - "yolasite", - "za", - "ap-northeast-1", - "ap-northeast-2", - "ap-south-1", - "ap-southeast-1", - "ap-southeast-2", - "ca-central-1", - "compute", - "compute-1", - "elb", - "eu-central-1", - "eu-west-1", - "eu-west-2", - "eu-west-3", - "s3", - "s3-ap-northeast-1", - "s3-ap-northeast-2", - "s3-ap-south-1", - "s3-ap-southeast-1", - "s3-ap-southeast-2", - "s3-ca-central-1", - "s3-eu-central-1", - "s3-eu-west-1", - "s3-eu-west-2", - "s3-eu-west-3", - "s3-external-1", - "s3-fips-us-gov-west-1", - "s3-sa-east-1", - "s3-us-east-2", - "s3-us-gov-west-1", - "s3-us-west-1", - "s3-us-west-2", - "s3-website-ap-northeast-1", - "s3-website-ap-southeast-1", - "s3-website-ap-southeast-2", - "s3-website-eu-west-1", - "s3-website-sa-east-1", - "s3-website-us-east-1", - "s3-website-us-west-1", - "s3-website-us-west-2", - "sa-east-1", - "us-east-1", - "us-east-2", - "dualstack", - "s3", - "dualstack", - "s3", - "s3-website", - "s3", - "dualstack", - "s3", - "s3-website", - "s3", - "dualstack", - "s3", - "dualstack", - "s3", - "dualstack", - "s3", - "s3-website", - "s3", - "dualstack", - "s3", - "s3-website", - "s3", - "dualstack", - "s3", - "dualstack", - "s3", - "s3-website", - "s3", - "dualstack", - "s3", - "s3-website", - "s3", - "dualstack", - "s3", - "dualstack", - "s3", - "dualstack", - "s3", - "s3-website", - "s3", - "alpha", - "beta", - "ap-northeast-1", - "ap-northeast-2", - "ap-south-1", - "ap-southeast-1", - "ap-southeast-2", - "ca-central-1", - "eu-central-1", - "eu-west-1", - "eu-west-2", - "eu-west-3", - "sa-east-1", - "us-east-1", - "us-east-2", - "us-gov-west-1", - "us-west-1", - "us-west-2", - "eu-1", - "eu-2", - "eu-3", - "eu-4", - "us-1", - "us-2", - "us-3", - "us-4", - "apps", - "cns", - "eu", - "xen", - "de", - "ac", - "co", - "ed", - "fi", - "go", - "or", - "sa", - "com", - "edu", - "gov", - "inf", - "net", - "org", - "blogspot", - "com", - "edu", - "net", - "org", - "ath", - "gov", - "info", - "ac", - "biz", - "com", - "ekloges", - "gov", - "ltd", - "name", - "net", - "org", - "parliament", - "press", - "pro", - "tm", - "blogspot", - "blogspot", - "co", - "e4", - "metacentrum", - "realm", - "cloud", - "custom", - "12hp", - "2ix", - "4lima", - "barsy", - "blogspot", - "bplaced", - "com", - "cosidns", - "dd-dns", - "ddnss", - "dnshome", - "dnsupdater", - "dray-dns", - "draydns", - "dyn-ip24", - "dyn-vpn", - "dynamisches-dns", - "dyndns1", - "dynvpn", - "firewall-gateway", - "fuettertdasnetz", - "git-repos", - "goip", - "home-webserver", - "internet-dns", - "isteingeek", - "istmein", - "keymachine", - "l-o-g-i-n", - "lcube-server", - "lebtimnetz", - "leitungsen", - "lima-city", - "logoip", - "mein-vigor", - "my-gateway", - "my-router", - "my-vigor", - "my-wan", - "myhome-server", - "spdns", - "square7", - "svn-repos", - "syno-ds", - "synology-diskstation", - "synology-ds", - "taifun-dns", - "traeumtgerade", - "dyn", - "dyn", - "dyndns", - "dyn", - "biz", - "blogspot", - "co", - "firm", - "reg", - "store", - "com", - "edu", - "gov", - "net", - "org", - "art", - "com", - "edu", - "gob", - "gov", - "mil", - "net", - "org", - "sld", - "web", - "art", - "asso", - "com", - "edu", - "gov", - "net", - "org", - "pol", - "com", - "edu", - "fin", - "gob", - "gov", - "info", - "k12", - "med", - "mil", - "net", - "org", - "pro", - "aip", - "com", - "edu", - "fie", - "gov", - "lib", - "med", - "org", - "pri", - "riik", - "blogspot", - "com", - "edu", - "eun", - "gov", - "mil", - "name", - "net", - "org", - "sci", - "blogspot", - "com", - "edu", - "gob", - "nom", - "org", - "blogspot", - "compute", - "biz", - "com", - "edu", - "gov", - "info", - "name", - "net", - "org", - "1password", - "barsy", - "cloudns", - "diskstation", - "mycd", - "spdns", - "transurl", - "wellbeingzone", - "party", - "user", - "ybo", - "storj", - "aland", - "blogspot", - "dy", - "iki", - "ptplus", - "aeroport", - "assedic", - "asso", - "avocat", - "avoues", - "blogspot", - "cci", - "chambagri", - "chirurgiens-dentistes", - "chirurgiens-dentistes-en-france", - "com", - "experts-comptables", - "fbx-os", - "fbxos", - "freebox-os", - "freeboxos", - "geometre-expert", - "gouv", - "greta", - "huissier-justice", - "medecin", - "nom", - "notaires", - "on-web", - "pharmacien", - "port", - "prd", - "presse", - "tm", - "veterinaire", - "nom", - "com", - "edu", - "gov", - "mil", - "net", - "org", - "pvt", - "co", - "cya", - "net", - "org", - "com", - "edu", - "gov", - "mil", - "org", - "com", - "edu", - "gov", - "ltd", - "mod", - "org", - "co", - "com", - "edu", - "net", - "nom", - "org", - "ac", - "com", - "edu", - "gov", - "net", - "org", - "cloud", - "asso", - "com", - "edu", - "mobi", - "net", - "org", - "blogspot", - "com", - "edu", - "gov", - "net", - "nym", - "org", - "com", - "edu", - "gob", - "ind", - "mil", - "net", - "nom", - "org", - "co", - "com", - "edu", - "gov", - "net", - "org", - "blogspot", - "com", - "edu", - "gov", - "idv", - "inc", - "ltd", - "net", - "org", - "xn--55qx5d", - "xn--ciqpn", - "xn--gmq050i", - "xn--gmqw5a", - "xn--io0a7i", - "xn--lcvr32d", - "xn--mk0axi", - "xn--mxtq1m", - "xn--od0alg", - "xn--od0aq3b", - "xn--tn0ag", - "xn--uc0atv", - "xn--uc0ay4a", - "xn--wcvs22d", - "xn--zf0avx", - "com", - "edu", - "gob", - "mil", - "net", - "nom", - "org", - "cloudaccess", - "freesite", - "opencraft", - "blogspot", - "com", - "from", - "iz", - "name", - "adult", - "art", - "asso", - "com", - "coop", - "edu", - "firm", - "gouv", - "info", - "med", - "net", - "org", - "perso", - "pol", - "pro", - "rel", - "shop", - "2000", - "agrar", - "blogspot", - "bolt", - "casino", - "city", - "co", - "erotica", - "erotika", - "film", - "forum", - "games", - "hotel", - "info", - "ingatlan", - "jogasz", - "konyvelo", - "lakas", - "media", - "news", - "org", - "priv", - "reklam", - "sex", - "shop", - "sport", - "suli", - "szex", - "tm", - "tozsde", - "utazas", - "video", - "ac", - "biz", - "co", - "desa", - "go", - "mil", - "my", - "net", - "or", - "sch", - "web", - "blogspot", - "blogspot", - "gov", - "ac", - "co", - "gov", - "idf", - "k12", - "muni", - "net", - "org", - "blogspot", - "ac", - "co", - "com", - "net", - "nom", - "org", - "ro", - "tt", - "tv", - "ltd", - "plc", - "ac", - "barsy", - "blogspot", - "cloudns", - "co", - "edu", - "firm", - "gen", - "gov", - "ind", - "mil", - "net", - "nic", - "org", - "res", - "barrel-of-knowledge", - "barrell-of-knowledge", - "cloudns", - "dvrcam", - "dynamic-dns", - "dyndns", - "for-our", - "groks-the", - "groks-this", - "here-for-more", - "ilovecollege", - "knowsitall", - "no-ip", - "nsupdate", - "selfip", - "v-info", - "webhop", - "eu", - "backplaneapp", - "boxfuse", - "browsersafetymark", - "com", - "dedyn", - "definima", - "drud", - "enonic", - "github", - "gitlab", - "hasura-app", - "hzc", - "lair", - "ngrok", - "nid", - "nodeart", - "nodum", - "pantheonsite", - "protonet", - "resindevice", - "resinstaging", - "s5y", - "sandcats", - "shiftedit", - "spacekit", - "stolos", - "thingdust", - "vaporcloud", - "wedeploy", - "customer", - "apps", - "stage", - "devices", - "dev", - "disrec", - "prod", - "testing", - "cust", - "cust", - "cust", - "cust", - "com", - "edu", - "gov", - "mil", - "net", - "org", - "ac", - "co", - "gov", - "id", - "net", - "org", - "sch", - "xn--mgba3a4f16a", - "xn--mgba3a4fra", - "blogspot", - "com", - "cupcake", - "edu", - "gov", - "int", - "net", - "org", - "abr", - "abruzzo", - "ag", - "agrigento", - "al", - "alessandria", - "alto-adige", - "altoadige", - "an", - "ancona", - "andria-barletta-trani", - "andria-trani-barletta", - "andriabarlettatrani", - "andriatranibarletta", - "ao", - "aosta", - "aosta-valley", - "aostavalley", - "aoste", - "ap", - "aq", - "aquila", - "ar", - "arezzo", - "ascoli-piceno", - "ascolipiceno", - "asti", - "at", - "av", - "avellino", - "ba", - "balsan", - "bari", - "barletta-trani-andria", - "barlettatraniandria", - "bas", - "basilicata", - "belluno", - "benevento", - "bergamo", - "bg", - "bi", - "biella", - "bl", - "blogspot", - "bn", - "bo", - "bologna", - "bolzano", - "bozen", - "br", - "brescia", - "brindisi", - "bs", - "bt", - "bz", - "ca", - "cagliari", - "cal", - "calabria", - "caltanissetta", - "cam", - "campania", - "campidano-medio", - "campidanomedio", - "campobasso", - "carbonia-iglesias", - "carboniaiglesias", - "carrara-massa", - "carraramassa", - "caserta", - "catania", - "catanzaro", - "cb", - "ce", - "cesena-forli", - "cesenaforli", - "ch", - "chieti", - "ci", - "cl", - "cn", - "co", - "como", - "cosenza", - "cr", - "cremona", - "crotone", - "cs", - "ct", - "cuneo", - "cz", - "dell-ogliastra", - "dellogliastra", - "edu", - "emilia-romagna", - "emiliaromagna", - "emr", - "en", - "enna", - "fc", - "fe", - "fermo", - "ferrara", - "fg", - "fi", - "firenze", - "florence", - "fm", - "foggia", - "forli-cesena", - "forlicesena", - "fr", - "friuli-v-giulia", - "friuli-ve-giulia", - "friuli-vegiulia", - "friuli-venezia-giulia", - "friuli-veneziagiulia", - "friuli-vgiulia", - "friuliv-giulia", - "friulive-giulia", - "friulivegiulia", - "friulivenezia-giulia", - "friuliveneziagiulia", - "friulivgiulia", - "frosinone", - "fvg", - "ge", - "genoa", - "genova", - "go", - "gorizia", - "gov", - "gr", - "grosseto", - "iglesias-carbonia", - "iglesiascarbonia", - "im", - "imperia", - "is", - "isernia", - "kr", - "la-spezia", - "laquila", - "laspezia", - "latina", - "laz", - "lazio", - "lc", - "le", - "lecce", - "lecco", - "li", - "lig", - "liguria", - "livorno", - "lo", - "lodi", - "lom", - "lombardia", - "lombardy", - "lt", - "lu", - "lucania", - "lucca", - "macerata", - "mantova", - "mar", - "marche", - "massa-carrara", - "massacarrara", - "matera", - "mb", - "mc", - "me", - "medio-campidano", - "mediocampidano", - "messina", - "mi", - "milan", - "milano", - "mn", - "mo", - "modena", - "mol", - "molise", - "monza", - "monza-brianza", - "monza-e-della-brianza", - "monzabrianza", - "monzaebrianza", - "monzaedellabrianza", - "ms", - "mt", - "na", - "naples", - "napoli", - "no", - "novara", - "nu", - "nuoro", - "og", - "ogliastra", - "olbia-tempio", - "olbiatempio", - "or", - "oristano", - "ot", - "pa", - "padova", - "padua", - "palermo", - "parma", - "pavia", - "pc", - "pd", - "pe", - "perugia", - "pesaro-urbino", - "pesarourbino", - "pescara", - "pg", - "pi", - "piacenza", - "piedmont", - "piemonte", - "pisa", - "pistoia", - "pmn", - "pn", - "po", - "pordenone", - "potenza", - "pr", - "prato", - "pt", - "pu", - "pug", - "puglia", - "pv", - "pz", - "ra", - "ragusa", - "ravenna", - "rc", - "re", - "reggio-calabria", - "reggio-emilia", - "reggiocalabria", - "reggioemilia", - "rg", - "ri", - "rieti", - "rimini", - "rm", - "rn", - "ro", - "roma", - "rome", - "rovigo", - "sa", - "salerno", - "sar", - "sardegna", - "sardinia", - "sassari", - "savona", - "si", - "sic", - "sicilia", - "sicily", - "siena", - "siracusa", - "so", - "sondrio", - "sp", - "sr", - "ss", - "suedtirol", - "sv", - "ta", - "taa", - "taranto", - "te", - "tempio-olbia", - "tempioolbia", - "teramo", - "terni", - "tn", - "to", - "torino", - "tos", - "toscana", - "tp", - "tr", - "trani-andria-barletta", - "trani-barletta-andria", - "traniandriabarletta", - "tranibarlettaandria", - "trapani", - "trentino", - "trentino-a-adige", - "trentino-aadige", - "trentino-alto-adige", - "trentino-altoadige", - "trentino-s-tirol", - "trentino-stirol", - "trentino-sud-tirol", - "trentino-sudtirol", - "trentino-sued-tirol", - "trentino-suedtirol", - "trentinoa-adige", - "trentinoaadige", - "trentinoalto-adige", - "trentinoaltoadige", - "trentinos-tirol", - "trentinostirol", - "trentinosud-tirol", - "trentinosudtirol", - "trentinosued-tirol", - "trentinosuedtirol", - "trento", - "treviso", - "trieste", - "ts", - "turin", - "tuscany", - "tv", - "ud", - "udine", - "umb", - "umbria", - "urbino-pesaro", - "urbinopesaro", - "va", - "val-d-aosta", - "val-daosta", - "vald-aosta", - "valdaosta", - "valle-aosta", - "valle-d-aosta", - "valle-daosta", - "valleaosta", - "valled-aosta", - "valledaosta", - "vallee-aoste", - "valleeaoste", - "vao", - "varese", - "vb", - "vc", - "vda", - "ve", - "ven", - "veneto", - "venezia", - "venice", - "verbania", - "vercelli", - "verona", - "vi", - "vibo-valentia", - "vibovalentia", - "vicenza", - "viterbo", - "vr", - "vs", - "vt", - "vv", - "co", - "net", - "org", - "com", - "edu", - "gov", - "mil", - "name", - "net", - "org", - "sch", - "ac", - "ad", - "aichi", - "akita", - "aomori", - "blogspot", - "chiba", - "co", - "ed", - "ehime", - "fukui", - "fukuoka", - "fukushima", - "gifu", - "go", - "gr", - "gunma", - "hiroshima", - "hokkaido", - "hyogo", - "ibaraki", - "ishikawa", - "iwate", - "kagawa", - "kagoshima", - "kanagawa", - "kawasaki", - "kitakyushu", - "kobe", - "kochi", - "kumamoto", - "kyoto", - "lg", - "mie", - "miyagi", - "miyazaki", - "nagano", - "nagasaki", - "nagoya", - "nara", - "ne", - "niigata", - "oita", - "okayama", - "okinawa", - "or", - "osaka", - "saga", - "saitama", - "sapporo", - "sendai", - "shiga", - "shimane", - "shizuoka", - "tochigi", - "tokushima", - "tokyo", - "tottori", - "toyama", - "wakayama", - "xn--0trq7p7nn", - "xn--1ctwo", - "xn--1lqs03n", - "xn--1lqs71d", - "xn--2m4a15e", - "xn--32vp30h", - "xn--4it168d", - "xn--4it797k", - "xn--4pvxs", - "xn--5js045d", - "xn--5rtp49c", - "xn--5rtq34k", - "xn--6btw5a", - "xn--6orx2r", - "xn--7t0a264c", - "xn--8ltr62k", - "xn--8pvr4u", - "xn--c3s14m", - "xn--d5qv7z876c", - "xn--djrs72d6uy", - "xn--djty4k", - "xn--efvn9s", - "xn--ehqz56n", - "xn--elqq16h", - "xn--f6qx53a", - "xn--k7yn95e", - "xn--kbrq7o", - "xn--klt787d", - "xn--kltp7d", - "xn--kltx9a", - "xn--klty5x", - "xn--mkru45i", - "xn--nit225k", - "xn--ntso0iqx3a", - "xn--ntsq17g", - "xn--pssu33l", - "xn--qqqt11m", - "xn--rht27z", - "xn--rht3d", - "xn--rht61e", - "xn--rny31h", - "xn--tor131o", - "xn--uist22h", - "xn--uisz3g", - "xn--uuwu58a", - "xn--vgu402c", - "xn--zbx025d", - "yamagata", - "yamaguchi", - "yamanashi", - "yokohama", - "aisai", - "ama", - "anjo", - "asuke", - "chiryu", - "chita", - "fuso", - "gamagori", - "handa", - "hazu", - "hekinan", - "higashiura", - "ichinomiya", - "inazawa", - "inuyama", - "isshiki", - "iwakura", - "kanie", - "kariya", - "kasugai", - "kira", - "kiyosu", - "komaki", - "konan", - "kota", - "mihama", - "miyoshi", - "nishio", - "nisshin", - "obu", - "oguchi", - "oharu", - "okazaki", - "owariasahi", - "seto", - "shikatsu", - "shinshiro", - "shitara", - "tahara", - "takahama", - "tobishima", - "toei", - "togo", - "tokai", - "tokoname", - "toyoake", - "toyohashi", - "toyokawa", - "toyone", - "toyota", - "tsushima", - "yatomi", - "akita", - "daisen", - "fujisato", - "gojome", - "hachirogata", - "happou", - "higashinaruse", - "honjo", - "honjyo", - "ikawa", - "kamikoani", - "kamioka", - "katagami", - "kazuno", - "kitaakita", - "kosaka", - "kyowa", - "misato", - "mitane", - "moriyoshi", - "nikaho", - "noshiro", - "odate", - "oga", - "ogata", - "semboku", - "yokote", - "yurihonjo", - "aomori", - "gonohe", - "hachinohe", - "hashikami", - "hiranai", - "hirosaki", - "itayanagi", - "kuroishi", - "misawa", - "mutsu", - "nakadomari", - "noheji", - "oirase", - "owani", - "rokunohe", - "sannohe", - "shichinohe", - "shingo", - "takko", - "towada", - "tsugaru", - "tsuruta", - "abiko", - "asahi", - "chonan", - "chosei", - "choshi", - "chuo", - "funabashi", - "futtsu", - "hanamigawa", - "ichihara", - "ichikawa", - "ichinomiya", - "inzai", - "isumi", - "kamagaya", - "kamogawa", - "kashiwa", - "katori", - "katsuura", - "kimitsu", - "kisarazu", - "kozaki", - "kujukuri", - "kyonan", - "matsudo", - "midori", - "mihama", - "minamiboso", - "mobara", - "mutsuzawa", - "nagara", - "nagareyama", - "narashino", - "narita", - "noda", - "oamishirasato", - "omigawa", - "onjuku", - "otaki", - "sakae", - "sakura", - "shimofusa", - "shirako", - "shiroi", - "shisui", - "sodegaura", - "sosa", - "tako", - "tateyama", - "togane", - "tohnosho", - "tomisato", - "urayasu", - "yachimata", - "yachiyo", - "yokaichiba", - "yokoshibahikari", - "yotsukaido", - "ainan", - "honai", - "ikata", - "imabari", - "iyo", - "kamijima", - "kihoku", - "kumakogen", - "masaki", - "matsuno", - "matsuyama", - "namikata", - "niihama", - "ozu", - "saijo", - "seiyo", - "shikokuchuo", - "tobe", - "toon", - "uchiko", - "uwajima", - "yawatahama", - "echizen", - "eiheiji", - "fukui", - "ikeda", - "katsuyama", - "mihama", - "minamiechizen", - "obama", - "ohi", - "ono", - "sabae", - "sakai", - "takahama", - "tsuruga", - "wakasa", - "ashiya", - "buzen", - "chikugo", - "chikuho", - "chikujo", - "chikushino", - "chikuzen", - "chuo", - "dazaifu", - "fukuchi", - "hakata", - "higashi", - "hirokawa", - "hisayama", - "iizuka", - "inatsuki", - "kaho", - "kasuga", - "kasuya", - "kawara", - "keisen", - "koga", - "kurate", - "kurogi", - "kurume", - "minami", - "miyako", - "miyama", - "miyawaka", - "mizumaki", - "munakata", - "nakagawa", - "nakama", - "nishi", - "nogata", - "ogori", - "okagaki", - "okawa", - "oki", - "omuta", - "onga", - "onojo", - "oto", - "saigawa", - "sasaguri", - "shingu", - "shinyoshitomi", - "shonai", - "soeda", - "sue", - "tachiarai", - "tagawa", - "takata", - "toho", - "toyotsu", - "tsuiki", - "ukiha", - "umi", - "usui", - "yamada", - "yame", - "yanagawa", - "yukuhashi", - "aizubange", - "aizumisato", - "aizuwakamatsu", - "asakawa", - "bandai", - "date", - "fukushima", - "furudono", - "futaba", - "hanawa", - "higashi", - "hirata", - "hirono", - "iitate", - "inawashiro", - "ishikawa", - "iwaki", - "izumizaki", - "kagamiishi", - "kaneyama", - "kawamata", - "kitakata", - "kitashiobara", - "koori", - "koriyama", - "kunimi", - "miharu", - "mishima", - "namie", - "nango", - "nishiaizu", - "nishigo", - "okuma", - "omotego", - "ono", - "otama", - "samegawa", - "shimogo", - "shirakawa", - "showa", - "soma", - "sukagawa", - "taishin", - "tamakawa", - "tanagura", - "tenei", - "yabuki", - "yamato", - "yamatsuri", - "yanaizu", - "yugawa", - "anpachi", - "ena", - "gifu", - "ginan", - "godo", - "gujo", - "hashima", - "hichiso", - "hida", - "higashishirakawa", - "ibigawa", - "ikeda", - "kakamigahara", - "kani", - "kasahara", - "kasamatsu", - "kawaue", - "kitagata", - "mino", - "minokamo", - "mitake", - "mizunami", - "motosu", - "nakatsugawa", - "ogaki", - "sakahogi", - "seki", - "sekigahara", - "shirakawa", - "tajimi", - "takayama", - "tarui", - "toki", - "tomika", - "wanouchi", - "yamagata", - "yaotsu", - "yoro", - "annaka", - "chiyoda", - "fujioka", - "higashiagatsuma", - "isesaki", - "itakura", - "kanna", - "kanra", - "katashina", - "kawaba", - "kiryu", - "kusatsu", - "maebashi", - "meiwa", - "midori", - "minakami", - "naganohara", - "nakanojo", - "nanmoku", - "numata", - "oizumi", - "ora", - "ota", - "shibukawa", - "shimonita", - "shinto", - "showa", - "takasaki", - "takayama", - "tamamura", - "tatebayashi", - "tomioka", - "tsukiyono", - "tsumagoi", - "ueno", - "yoshioka", - "asaminami", - "daiwa", - "etajima", - "fuchu", - "fukuyama", - "hatsukaichi", - "higashihiroshima", - "hongo", - "jinsekikogen", - "kaita", - "kui", - "kumano", - "kure", - "mihara", - "miyoshi", - "naka", - "onomichi", - "osakikamijima", - "otake", - "saka", - "sera", - "seranishi", - "shinichi", - "shobara", - "takehara", - "abashiri", - "abira", - "aibetsu", - "akabira", - "akkeshi", - "asahikawa", - "ashibetsu", - "ashoro", - "assabu", - "atsuma", - "bibai", - "biei", - "bifuka", - "bihoro", - "biratori", - "chippubetsu", - "chitose", - "date", - "ebetsu", - "embetsu", - "eniwa", - "erimo", - "esan", - "esashi", - "fukagawa", - "fukushima", - "furano", - "furubira", - "haboro", - "hakodate", - "hamatonbetsu", - "hidaka", - "higashikagura", - "higashikawa", - "hiroo", - "hokuryu", - "hokuto", - "honbetsu", - "horokanai", - "horonobe", - "ikeda", - "imakane", - "ishikari", - "iwamizawa", - "iwanai", - "kamifurano", - "kamikawa", - "kamishihoro", - "kamisunagawa", - "kamoenai", - "kayabe", - "kembuchi", - "kikonai", - "kimobetsu", - "kitahiroshima", - "kitami", - "kiyosato", - "koshimizu", - "kunneppu", - "kuriyama", - "kuromatsunai", - "kushiro", - "kutchan", - "kyowa", - "mashike", - "matsumae", - "mikasa", - "minamifurano", - "mombetsu", - "moseushi", - "mukawa", - "muroran", - "naie", - "nakagawa", - "nakasatsunai", - "nakatombetsu", - "nanae", - "nanporo", - "nayoro", - "nemuro", - "niikappu", - "niki", - "nishiokoppe", - "noboribetsu", - "numata", - "obihiro", - "obira", - "oketo", - "okoppe", - "otaru", - "otobe", - "otofuke", - "otoineppu", - "oumu", - "ozora", - "pippu", - "rankoshi", - "rebun", - "rikubetsu", - "rishiri", - "rishirifuji", - "saroma", - "sarufutsu", - "shakotan", - "shari", - "shibecha", - "shibetsu", - "shikabe", - "shikaoi", - "shimamaki", - "shimizu", - "shimokawa", - "shinshinotsu", - "shintoku", - "shiranuka", - "shiraoi", - "shiriuchi", - "sobetsu", - "sunagawa", - "taiki", - "takasu", - "takikawa", - "takinoue", - "teshikaga", - "tobetsu", - "tohma", - "tomakomai", - "tomari", - "toya", - "toyako", - "toyotomi", - "toyoura", - "tsubetsu", - "tsukigata", - "urakawa", - "urausu", - "uryu", - "utashinai", - "wakkanai", - "wassamu", - "yakumo", - "yoichi", - "aioi", - "akashi", - "ako", - "amagasaki", - "aogaki", - "asago", - "ashiya", - "awaji", - "fukusaki", - "goshiki", - "harima", - "himeji", - "ichikawa", - "inagawa", - "itami", - "kakogawa", - "kamigori", - "kamikawa", - "kasai", - "kasuga", - "kawanishi", - "miki", - "minamiawaji", - "nishinomiya", - "nishiwaki", - "ono", - "sanda", - "sannan", - "sasayama", - "sayo", - "shingu", - "shinonsen", - "shiso", - "sumoto", - "taishi", - "taka", - "takarazuka", - "takasago", - "takino", - "tamba", - "tatsuno", - "toyooka", - "yabu", - "yashiro", - "yoka", - "yokawa", - "ami", - "asahi", - "bando", - "chikusei", - "daigo", - "fujishiro", - "hitachi", - "hitachinaka", - "hitachiomiya", - "hitachiota", - "ibaraki", - "ina", - "inashiki", - "itako", - "iwama", - "joso", - "kamisu", - "kasama", - "kashima", - "kasumigaura", - "koga", - "miho", - "mito", - "moriya", - "naka", - "namegata", - "oarai", - "ogawa", - "omitama", - "ryugasaki", - "sakai", - "sakuragawa", - "shimodate", - "shimotsuma", - "shirosato", - "sowa", - "suifu", - "takahagi", - "tamatsukuri", - "tokai", - "tomobe", - "tone", - "toride", - "tsuchiura", - "tsukuba", - "uchihara", - "ushiku", - "yachiyo", - "yamagata", - "yawara", - "yuki", - "anamizu", - "hakui", - "hakusan", - "kaga", - "kahoku", - "kanazawa", - "kawakita", - "komatsu", - "nakanoto", - "nanao", - "nomi", - "nonoichi", - "noto", - "shika", - "suzu", - "tsubata", - "tsurugi", - "uchinada", - "wajima", - "fudai", - "fujisawa", - "hanamaki", - "hiraizumi", - "hirono", - "ichinohe", - "ichinoseki", - "iwaizumi", - "iwate", - "joboji", - "kamaishi", - "kanegasaki", - "karumai", - "kawai", - "kitakami", - "kuji", - "kunohe", - "kuzumaki", - "miyako", - "mizusawa", - "morioka", - "ninohe", - "noda", - "ofunato", - "oshu", - "otsuchi", - "rikuzentakata", - "shiwa", - "shizukuishi", - "sumita", - "tanohata", - "tono", - "yahaba", - "yamada", - "ayagawa", - "higashikagawa", - "kanonji", - "kotohira", - "manno", - "marugame", - "mitoyo", - "naoshima", - "sanuki", - "tadotsu", - "takamatsu", - "tonosho", - "uchinomi", - "utazu", - "zentsuji", - "akune", - "amami", - "hioki", - "isa", - "isen", - "izumi", - "kagoshima", - "kanoya", - "kawanabe", - "kinko", - "kouyama", - "makurazaki", - "matsumoto", - "minamitane", - "nakatane", - "nishinoomote", - "satsumasendai", - "soo", - "tarumizu", - "yusui", - "aikawa", - "atsugi", - "ayase", - "chigasaki", - "ebina", - "fujisawa", - "hadano", - "hakone", - "hiratsuka", - "isehara", - "kaisei", - "kamakura", - "kiyokawa", - "matsuda", - "minamiashigara", - "miura", - "nakai", - "ninomiya", - "odawara", - "oi", - "oiso", - "sagamihara", - "samukawa", - "tsukui", - "yamakita", - "yamato", - "yokosuka", - "yugawara", - "zama", - "zushi", - "city", - "city", - "city", - "aki", - "geisei", - "hidaka", - "higashitsuno", - "ino", - "kagami", - "kami", - "kitagawa", - "kochi", - "mihara", - "motoyama", - "muroto", - "nahari", - "nakamura", - "nankoku", - "nishitosa", - "niyodogawa", - "ochi", - "okawa", - "otoyo", - "otsuki", - "sakawa", - "sukumo", - "susaki", - "tosa", - "tosashimizu", - "toyo", - "tsuno", - "umaji", - "yasuda", - "yusuhara", - "amakusa", - "arao", - "aso", - "choyo", - "gyokuto", - "kamiamakusa", - "kikuchi", - "kumamoto", - "mashiki", - "mifune", - "minamata", - "minamioguni", - "nagasu", - "nishihara", - "oguni", - "ozu", - "sumoto", - "takamori", - "uki", - "uto", - "yamaga", - "yamato", - "yatsushiro", - "ayabe", - "fukuchiyama", - "higashiyama", - "ide", - "ine", - "joyo", - "kameoka", - "kamo", - "kita", - "kizu", - "kumiyama", - "kyotamba", - "kyotanabe", - "kyotango", - "maizuru", - "minami", - "minamiyamashiro", - "miyazu", - "muko", - "nagaokakyo", - "nakagyo", - "nantan", - "oyamazaki", - "sakyo", - "seika", - "tanabe", - "uji", - "ujitawara", - "wazuka", - "yamashina", - "yawata", - "asahi", - "inabe", - "ise", - "kameyama", - "kawagoe", - "kiho", - "kisosaki", - "kiwa", - "komono", - "kumano", - "kuwana", - "matsusaka", - "meiwa", - "mihama", - "minamiise", - "misugi", - "miyama", - "nabari", - "shima", - "suzuka", - "tado", - "taiki", - "taki", - "tamaki", - "toba", - "tsu", - "udono", - "ureshino", - "watarai", - "yokkaichi", - "furukawa", - "higashimatsushima", - "ishinomaki", - "iwanuma", - "kakuda", - "kami", - "kawasaki", - "marumori", - "matsushima", - "minamisanriku", - "misato", - "murata", - "natori", - "ogawara", - "ohira", - "onagawa", - "osaki", - "rifu", - "semine", - "shibata", - "shichikashuku", - "shikama", - "shiogama", - "shiroishi", - "tagajo", - "taiwa", - "tome", - "tomiya", - "wakuya", - "watari", - "yamamoto", - "zao", - "aya", - "ebino", - "gokase", - "hyuga", - "kadogawa", - "kawaminami", - "kijo", - "kitagawa", - "kitakata", - "kitaura", - "kobayashi", - "kunitomi", - "kushima", - "mimata", - "miyakonojo", - "miyazaki", - "morotsuka", - "nichinan", - "nishimera", - "nobeoka", - "saito", - "shiiba", - "shintomi", - "takaharu", - "takanabe", - "takazaki", - "tsuno", - "achi", - "agematsu", - "anan", - "aoki", - "asahi", - "azumino", - "chikuhoku", - "chikuma", - "chino", - "fujimi", - "hakuba", - "hara", - "hiraya", - "iida", - "iijima", - "iiyama", - "iizuna", - "ikeda", - "ikusaka", - "ina", - "karuizawa", - "kawakami", - "kiso", - "kisofukushima", - "kitaaiki", - "komagane", - "komoro", - "matsukawa", - "matsumoto", - "miasa", - "minamiaiki", - "minamimaki", - "minamiminowa", - "minowa", - "miyada", - "miyota", - "mochizuki", - "nagano", - "nagawa", - "nagiso", - "nakagawa", - "nakano", - "nozawaonsen", - "obuse", - "ogawa", - "okaya", - "omachi", - "omi", - "ookuwa", - "ooshika", - "otaki", - "otari", - "sakae", - "sakaki", - "saku", - "sakuho", - "shimosuwa", - "shinanomachi", - "shiojiri", - "suwa", - "suzaka", - "takagi", - "takamori", - "takayama", - "tateshina", - "tatsuno", - "togakushi", - "togura", - "tomi", - "ueda", - "wada", - "yamagata", - "yamanouchi", - "yasaka", - "yasuoka", - "chijiwa", - "futsu", - "goto", - "hasami", - "hirado", - "iki", - "isahaya", - "kawatana", - "kuchinotsu", - "matsuura", - "nagasaki", - "obama", - "omura", - "oseto", - "saikai", - "sasebo", - "seihi", - "shimabara", - "shinkamigoto", - "togitsu", - "tsushima", - "unzen", - "city", - "ando", - "gose", - "heguri", - "higashiyoshino", - "ikaruga", - "ikoma", - "kamikitayama", - "kanmaki", - "kashiba", - "kashihara", - "katsuragi", - "kawai", - "kawakami", - "kawanishi", - "koryo", - "kurotaki", - "mitsue", - "miyake", - "nara", - "nosegawa", - "oji", - "ouda", - "oyodo", - "sakurai", - "sango", - "shimoichi", - "shimokitayama", - "shinjo", - "soni", - "takatori", - "tawaramoto", - "tenkawa", - "tenri", - "uda", - "yamatokoriyama", - "yamatotakada", - "yamazoe", - "yoshino", - "aga", - "agano", - "gosen", - "itoigawa", - "izumozaki", - "joetsu", - "kamo", - "kariwa", - "kashiwazaki", - "minamiuonuma", - "mitsuke", - "muika", - "murakami", - "myoko", - "nagaoka", - "niigata", - "ojiya", - "omi", - "sado", - "sanjo", - "seiro", - "seirou", - "sekikawa", - "shibata", - "tagami", - "tainai", - "tochio", - "tokamachi", - "tsubame", - "tsunan", - "uonuma", - "yahiko", - "yoita", - "yuzawa", - "beppu", - "bungoono", - "bungotakada", - "hasama", - "hiji", - "himeshima", - "hita", - "kamitsue", - "kokonoe", - "kuju", - "kunisaki", - "kusu", - "oita", - "saiki", - "taketa", - "tsukumi", - "usa", - "usuki", - "yufu", - "akaiwa", - "asakuchi", - "bizen", - "hayashima", - "ibara", - "kagamino", - "kasaoka", - "kibichuo", - "kumenan", - "kurashiki", - "maniwa", - "misaki", - "nagi", - "niimi", - "nishiawakura", - "okayama", - "satosho", - "setouchi", - "shinjo", - "shoo", - "soja", - "takahashi", - "tamano", - "tsuyama", - "wake", - "yakage", - "aguni", - "ginowan", - "ginoza", - "gushikami", - "haebaru", - "higashi", - "hirara", - "iheya", - "ishigaki", - "ishikawa", - "itoman", - "izena", - "kadena", - "kin", - "kitadaito", - "kitanakagusuku", - "kumejima", - "kunigami", - "minamidaito", - "motobu", - "nago", - "naha", - "nakagusuku", - "nakijin", - "nanjo", - "nishihara", - "ogimi", - "okinawa", - "onna", - "shimoji", - "taketomi", - "tarama", - "tokashiki", - "tomigusuku", - "tonaki", - "urasoe", - "uruma", - "yaese", - "yomitan", - "yonabaru", - "yonaguni", - "zamami", - "abeno", - "chihayaakasaka", - "chuo", - "daito", - "fujiidera", - "habikino", - "hannan", - "higashiosaka", - "higashisumiyoshi", - "higashiyodogawa", - "hirakata", - "ibaraki", - "ikeda", - "izumi", - "izumiotsu", - "izumisano", - "kadoma", - "kaizuka", - "kanan", - "kashiwara", - "katano", - "kawachinagano", - "kishiwada", - "kita", - "kumatori", - "matsubara", - "minato", - "minoh", - "misaki", - "moriguchi", - "neyagawa", - "nishi", - "nose", - "osakasayama", - "sakai", - "sayama", - "sennan", - "settsu", - "shijonawate", - "shimamoto", - "suita", - "tadaoka", - "taishi", - "tajiri", - "takaishi", - "takatsuki", - "tondabayashi", - "toyonaka", - "toyono", - "yao", - "ariake", - "arita", - "fukudomi", - "genkai", - "hamatama", - "hizen", - "imari", - "kamimine", - "kanzaki", - "karatsu", - "kashima", - "kitagata", - "kitahata", - "kiyama", - "kouhoku", - "kyuragi", - "nishiarita", - "ogi", - "omachi", - "ouchi", - "saga", - "shiroishi", - "taku", - "tara", - "tosu", - "yoshinogari", - "arakawa", - "asaka", - "chichibu", - "fujimi", - "fujimino", - "fukaya", - "hanno", - "hanyu", - "hasuda", - "hatogaya", - "hatoyama", - "hidaka", - "higashichichibu", - "higashimatsuyama", - "honjo", - "ina", - "iruma", - "iwatsuki", - "kamiizumi", - "kamikawa", - "kamisato", - "kasukabe", - "kawagoe", - "kawaguchi", - "kawajima", - "kazo", - "kitamoto", - "koshigaya", - "kounosu", - "kuki", - "kumagaya", - "matsubushi", - "minano", - "misato", - "miyashiro", - "miyoshi", - "moroyama", - "nagatoro", - "namegawa", - "niiza", - "ogano", - "ogawa", - "ogose", - "okegawa", - "omiya", - "otaki", - "ranzan", - "ryokami", - "saitama", - "sakado", - "satte", - "sayama", - "shiki", - "shiraoka", - "soka", - "sugito", - "toda", - "tokigawa", - "tokorozawa", - "tsurugashima", - "urawa", - "warabi", - "yashio", - "yokoze", - "yono", - "yorii", - "yoshida", - "yoshikawa", - "yoshimi", - "city", - "city", - "aisho", - "gamo", - "higashiomi", - "hikone", - "koka", - "konan", - "kosei", - "koto", - "kusatsu", - "maibara", - "moriyama", - "nagahama", - "nishiazai", - "notogawa", - "omihachiman", - "otsu", - "ritto", - "ryuoh", - "takashima", - "takatsuki", - "torahime", - "toyosato", - "yasu", - "akagi", - "ama", - "gotsu", - "hamada", - "higashiizumo", - "hikawa", - "hikimi", - "izumo", - "kakinoki", - "masuda", - "matsue", - "misato", - "nishinoshima", - "ohda", - "okinoshima", - "okuizumo", - "shimane", - "tamayu", - "tsuwano", - "unnan", - "yakumo", - "yasugi", - "yatsuka", - "arai", - "atami", - "fuji", - "fujieda", - "fujikawa", - "fujinomiya", - "fukuroi", - "gotemba", - "haibara", - "hamamatsu", - "higashiizu", - "ito", - "iwata", - "izu", - "izunokuni", - "kakegawa", - "kannami", - "kawanehon", - "kawazu", - "kikugawa", - "kosai", - "makinohara", - "matsuzaki", - "minamiizu", - "mishima", - "morimachi", - "nishiizu", - "numazu", - "omaezaki", - "shimada", - "shimizu", - "shimoda", - "shizuoka", - "susono", - "yaizu", - "yoshida", - "ashikaga", - "bato", - "haga", - "ichikai", - "iwafune", - "kaminokawa", - "kanuma", - "karasuyama", - "kuroiso", - "mashiko", - "mibu", - "moka", - "motegi", - "nasu", - "nasushiobara", - "nikko", - "nishikata", - "nogi", - "ohira", - "ohtawara", - "oyama", - "sakura", - "sano", - "shimotsuke", - "shioya", - "takanezawa", - "tochigi", - "tsuga", - "ujiie", - "utsunomiya", - "yaita", - "aizumi", - "anan", - "ichiba", - "itano", - "kainan", - "komatsushima", - "matsushige", - "mima", - "minami", - "miyoshi", - "mugi", - "nakagawa", - "naruto", - "sanagochi", - "shishikui", - "tokushima", - "wajiki", - "adachi", - "akiruno", - "akishima", - "aogashima", - "arakawa", - "bunkyo", - "chiyoda", - "chofu", - "chuo", - "edogawa", - "fuchu", - "fussa", - "hachijo", - "hachioji", - "hamura", - "higashikurume", - "higashimurayama", - "higashiyamato", - "hino", - "hinode", - "hinohara", - "inagi", - "itabashi", - "katsushika", - "kita", - "kiyose", - "kodaira", - "koganei", - "kokubunji", - "komae", - "koto", - "kouzushima", - "kunitachi", - "machida", - "meguro", - "minato", - "mitaka", - "mizuho", - "musashimurayama", - "musashino", - "nakano", - "nerima", - "ogasawara", - "okutama", - "ome", - "oshima", - "ota", - "setagaya", - "shibuya", - "shinagawa", - "shinjuku", - "suginami", - "sumida", - "tachikawa", - "taito", - "tama", - "toshima", - "chizu", - "hino", - "kawahara", - "koge", - "kotoura", - "misasa", - "nanbu", - "nichinan", - "sakaiminato", - "tottori", - "wakasa", - "yazu", - "yonago", - "asahi", - "fuchu", - "fukumitsu", - "funahashi", - "himi", - "imizu", - "inami", - "johana", - "kamiichi", - "kurobe", - "nakaniikawa", - "namerikawa", - "nanto", - "nyuzen", - "oyabe", - "taira", - "takaoka", - "tateyama", - "toga", - "tonami", - "toyama", - "unazuki", - "uozu", - "yamada", - "arida", - "aridagawa", - "gobo", - "hashimoto", - "hidaka", - "hirogawa", - "inami", - "iwade", - "kainan", - "kamitonda", - "katsuragi", - "kimino", - "kinokawa", - "kitayama", - "koya", - "koza", - "kozagawa", - "kudoyama", - "kushimoto", - "mihama", - "misato", - "nachikatsuura", - "shingu", - "shirahama", - "taiji", - "tanabe", - "wakayama", - "yuasa", - "yura", - "asahi", - "funagata", - "higashine", - "iide", - "kahoku", - "kaminoyama", - "kaneyama", - "kawanishi", - "mamurogawa", - "mikawa", - "murayama", - "nagai", - "nakayama", - "nanyo", - "nishikawa", - "obanazawa", - "oe", - "oguni", - "ohkura", - "oishida", - "sagae", - "sakata", - "sakegawa", - "shinjo", - "shirataka", - "shonai", - "takahata", - "tendo", - "tozawa", - "tsuruoka", - "yamagata", - "yamanobe", - "yonezawa", - "yuza", - "abu", - "hagi", - "hikari", - "hofu", - "iwakuni", - "kudamatsu", - "mitou", - "nagato", - "oshima", - "shimonoseki", - "shunan", - "tabuse", - "tokuyama", - "toyota", - "ube", - "yuu", - "chuo", - "doshi", - "fuefuki", - "fujikawa", - "fujikawaguchiko", - "fujiyoshida", - "hayakawa", - "hokuto", - "ichikawamisato", - "kai", - "kofu", - "koshu", - "kosuge", - "minami-alps", - "minobu", - "nakamichi", - "nanbu", - "narusawa", - "nirasaki", - "nishikatsura", - "oshino", - "otsuki", - "showa", - "tabayama", - "tsuru", - "uenohara", - "yamanakako", - "yamanashi", - "city", - "ac", - "co", - "go", - "info", - "me", - "mobi", - "ne", - "or", - "sc", - "blogspot", - "com", - "edu", - "gov", - "mil", - "net", - "org", - "biz", - "com", - "edu", - "gov", - "info", - "net", - "org", - "ass", - "asso", - "com", - "coop", - "edu", - "gouv", - "gov", - "medecin", - "mil", - "nom", - "notaires", - "org", - "pharmaciens", - "prd", - "presse", - "tm", - "veterinaire", - "edu", - "gov", - "net", - "org", - "com", - "edu", - "gov", - "org", - "rep", - "tra", - "ac", - "blogspot", - "busan", - "chungbuk", - "chungnam", - "co", - "daegu", - "daejeon", - "es", - "gangwon", - "go", - "gwangju", - "gyeongbuk", - "gyeonggi", - "gyeongnam", - "hs", - "incheon", - "jeju", - "jeonbuk", - "jeonnam", - "kg", - "mil", - "ms", - "ne", - "or", - "pe", - "re", - "sc", - "seoul", - "ulsan", - "co", - "edu", - "com", - "edu", - "gov", - "net", - "org", - "com", - "edu", - "gov", - "mil", - "net", - "nym", - "org", - "bnr", - "c", - "com", - "edu", - "gov", - "info", - "int", - "net", - "nym", - "org", - "per", - "static", - "dev", - "sites", - "com", - "edu", - "gov", - "net", - "org", - "co", - "com", - "edu", - "gov", - "net", - "org", - "oy", - "blogspot", - "nom", - "nym", - "cyon", - "mypep", - "ac", - "assn", - "com", - "edu", - "gov", - "grp", - "hotel", - "int", - "ltd", - "net", - "ngo", - "org", - "sch", - "soc", - "web", - "com", - "edu", - "gov", - "net", - "org", - "co", - "org", - "blogspot", - "gov", - "nym", - "blogspot", - "nym", - "asn", - "com", - "conf", - "edu", - "gov", - "id", - "mil", - "net", - "org", - "com", - "edu", - "gov", - "id", - "med", - "net", - "org", - "plc", - "sch", - "ac", - "co", - "gov", - "net", - "org", - "press", - "router", - "asso", - "tm", - "blogspot", - "ac", - "brasilia", - "c66", - "co", - "daplie", - "ddns", - "diskstation", - "dnsfor", - "dscloud", - "edu", - "filegear", - "gov", - "hopto", - "i234", - "its", - "loginto", - "myds", - "net", - "noip", - "nym", - "org", - "priv", - "synology", - "webhop", - "wedeploy", - "yombo", - "localhost", - "co", - "com", - "edu", - "gov", - "mil", - "nom", - "org", - "prd", - "tm", - "blogspot", - "com", - "edu", - "gov", - "inf", - "name", - "net", - "nom", - "org", - "com", - "edu", - "gouv", - "gov", - "net", - "org", - "presse", - "edu", - "gov", - "nyc", - "org", - "com", - "edu", - "gov", - "net", - "org", - "dscloud", - "blogspot", - "gov", - "com", - "edu", - "gov", - "net", - "org", - "com", - "edu", - "net", - "org", - "blogspot", - "ac", - "co", - "com", - "gov", - "net", - "or", - "org", - "academy", - "agriculture", - "air", - "airguard", - "alabama", - "alaska", - "amber", - "ambulance", - "american", - "americana", - "americanantiques", - "americanart", - "amsterdam", - "and", - "annefrank", - "anthro", - "anthropology", - "antiques", - "aquarium", - "arboretum", - "archaeological", - "archaeology", - "architecture", - "art", - "artanddesign", - "artcenter", - "artdeco", - "arteducation", - "artgallery", - "arts", - "artsandcrafts", - "asmatart", - "assassination", - "assisi", - "association", - "astronomy", - "atlanta", - "austin", - "australia", - "automotive", - "aviation", - "axis", - "badajoz", - "baghdad", - "bahn", - "bale", - "baltimore", - "barcelona", - "baseball", - "basel", - "baths", - "bauern", - "beauxarts", - "beeldengeluid", - "bellevue", - "bergbau", - "berkeley", - "berlin", - "bern", - "bible", - "bilbao", - "bill", - "birdart", - "birthplace", - "bonn", - "boston", - "botanical", - "botanicalgarden", - "botanicgarden", - "botany", - "brandywinevalley", - "brasil", - "bristol", - "british", - "britishcolumbia", - "broadcast", - "brunel", - "brussel", - "brussels", - "bruxelles", - "building", - "burghof", - "bus", - "bushey", - "cadaques", - "california", - "cambridge", - "can", - "canada", - "capebreton", - "carrier", - "cartoonart", - "casadelamoneda", - "castle", - "castres", - "celtic", - "center", - "chattanooga", - "cheltenham", - "chesapeakebay", - "chicago", - "children", - "childrens", - "childrensgarden", - "chiropractic", - "chocolate", - "christiansburg", - "cincinnati", - "cinema", - "circus", - "civilisation", - "civilization", - "civilwar", - "clinton", - "clock", - "coal", - "coastaldefence", - "cody", - "coldwar", - "collection", - "colonialwilliamsburg", - "coloradoplateau", - "columbia", - "columbus", - "communication", - "communications", - "community", - "computer", - "computerhistory", - "contemporary", - "contemporaryart", - "convent", - "copenhagen", - "corporation", - "corvette", - "costume", - "countryestate", - "county", - "crafts", - "cranbrook", - "creation", - "cultural", - "culturalcenter", - "culture", - "cyber", - "cymru", - "dali", - "dallas", - "database", - "ddr", - "decorativearts", - "delaware", - "delmenhorst", - "denmark", - "depot", - "design", - "detroit", - "dinosaur", - "discovery", - "dolls", - "donostia", - "durham", - "eastafrica", - "eastcoast", - "education", - "educational", - "egyptian", - "eisenbahn", - "elburg", - "elvendrell", - "embroidery", - "encyclopedic", - "england", - "entomology", - "environment", - "environmentalconservation", - "epilepsy", - "essex", - "estate", - "ethnology", - "exeter", - "exhibition", - "family", - "farm", - "farmequipment", - "farmers", - "farmstead", - "field", - "figueres", - "filatelia", - "film", - "fineart", - "finearts", - "finland", - "flanders", - "florida", - "force", - "fortmissoula", - "fortworth", - "foundation", - "francaise", - "frankfurt", - "franziskaner", - "freemasonry", - "freiburg", - "fribourg", - "frog", - "fundacio", - "furniture", - "gallery", - "garden", - "gateway", - "geelvinck", - "gemological", - "geology", - "georgia", - "giessen", - "glas", - "glass", - "gorge", - "grandrapids", - "graz", - "guernsey", - "halloffame", - "hamburg", - "handson", - "harvestcelebration", - "hawaii", - "health", - "heimatunduhren", - "hellas", - "helsinki", - "hembygdsforbund", - "heritage", - "histoire", - "historical", - "historicalsociety", - "historichouses", - "historisch", - "historisches", - "history", - "historyofscience", - "horology", - "house", - "humanities", - "illustration", - "imageandsound", - "indian", - "indiana", - "indianapolis", - "indianmarket", - "intelligence", - "interactive", - "iraq", - "iron", - "isleofman", - "jamison", - "jefferson", - "jerusalem", - "jewelry", - "jewish", - "jewishart", - "jfk", - "journalism", - "judaica", - "judygarland", - "juedisches", - "juif", - "karate", - "karikatur", - "kids", - "koebenhavn", - "koeln", - "kunst", - "kunstsammlung", - "kunstunddesign", - "labor", - "labour", - "lajolla", - "lancashire", - "landes", - "lans", - "larsson", - "lewismiller", - "lincoln", - "linz", - "living", - "livinghistory", - "localhistory", - "london", - "losangeles", - "louvre", - "loyalist", - "lucerne", - "luxembourg", - "luzern", - "mad", - "madrid", - "mallorca", - "manchester", - "mansion", - "mansions", - "manx", - "marburg", - "maritime", - "maritimo", - "maryland", - "marylhurst", - "media", - "medical", - "medizinhistorisches", - "meeres", - "memorial", - "mesaverde", - "michigan", - "midatlantic", - "military", - "mill", - "miners", - "mining", - "minnesota", - "missile", - "missoula", - "modern", - "moma", - "money", - "monmouth", - "monticello", - "montreal", - "moscow", - "motorcycle", - "muenchen", - "muenster", - "mulhouse", - "muncie", - "museet", - "museumcenter", - "museumvereniging", - "music", - "national", - "nationalfirearms", - "nationalheritage", - "nativeamerican", - "naturalhistory", - "naturalhistorymuseum", - "naturalsciences", - "nature", - "naturhistorisches", - "natuurwetenschappen", - "naumburg", - "naval", - "nebraska", - "neues", - "newhampshire", - "newjersey", - "newmexico", - "newport", - "newspaper", - "newyork", - "niepce", - "norfolk", - "north", - "nrw", - "nuernberg", - "nuremberg", - "nyc", - "nyny", - "oceanographic", - "oceanographique", - "omaha", - "online", - "ontario", - "openair", - "oregon", - "oregontrail", - "otago", - "oxford", - "pacific", - "paderborn", - "palace", - "paleo", - "palmsprings", - "panama", - "paris", - "pasadena", - "pharmacy", - "philadelphia", - "philadelphiaarea", - "philately", - "phoenix", - "photography", - "pilots", - "pittsburgh", - "planetarium", - "plantation", - "plants", - "plaza", - "portal", - "portland", - "portlligat", - "posts-and-telecommunications", - "preservation", - "presidio", - "press", - "project", - "public", - "pubol", - "quebec", - "railroad", - "railway", - "research", - "resistance", - "riodejaneiro", - "rochester", - "rockart", - "roma", - "russia", - "saintlouis", - "salem", - "salvadordali", - "salzburg", - "sandiego", - "sanfrancisco", - "santabarbara", - "santacruz", - "santafe", - "saskatchewan", - "satx", - "savannahga", - "schlesisches", - "schoenbrunn", - "schokoladen", - "school", - "schweiz", - "science", - "science-fiction", - "scienceandhistory", - "scienceandindustry", - "sciencecenter", - "sciencecenters", - "sciencehistory", - "sciences", - "sciencesnaturelles", - "scotland", - "seaport", - "settlement", - "settlers", - "shell", - "sherbrooke", - "sibenik", - "silk", - "ski", - "skole", - "society", - "sologne", - "soundandvision", - "southcarolina", - "southwest", - "space", - "spy", - "square", - "stadt", - "stalbans", - "starnberg", - "state", - "stateofdelaware", - "station", - "steam", - "steiermark", - "stjohn", - "stockholm", - "stpetersburg", - "stuttgart", - "suisse", - "surgeonshall", - "surrey", - "svizzera", - "sweden", - "sydney", - "tank", - "tcm", - "technology", - "telekommunikation", - "television", - "texas", - "textile", - "theater", - "time", - "timekeeping", - "topology", - "torino", - "touch", - "town", - "transport", - "tree", - "trolley", - "trust", - "trustee", - "uhren", - "ulm", - "undersea", - "university", - "usa", - "usantiques", - "usarts", - "uscountryestate", - "usculture", - "usdecorativearts", - "usgarden", - "ushistory", - "ushuaia", - "uslivinghistory", - "utah", - "uvic", - "valley", - "vantaa", - "versailles", - "viking", - "village", - "virginia", - "virtual", - "virtuel", - "vlaanderen", - "volkenkunde", - "wales", - "wallonie", - "war", - "washingtondc", - "watch-and-clock", - "watchandclock", - "western", - "westfalen", - "whaling", - "wildlife", - "williamsburg", - "windmill", - "workshop", - "xn--9dbhblg6di", - "xn--comunicaes-v6a2o", - "xn--correios-e-telecomunicaes-ghc29a", - "xn--h1aegh", - "xn--lns-qla", - "york", - "yorkshire", - "yosemite", - "youth", - "zoological", - "zoology", - "aero", - "biz", - "com", - "coop", - "edu", - "gov", - "info", - "int", - "mil", - "museum", - "name", - "net", - "org", - "pro", - "ac", - "biz", - "co", - "com", - "coop", - "edu", - "gov", - "int", - "museum", - "net", - "org", - "blogspot", - "com", - "edu", - "gob", - "net", - "nym", - "org", - "blogspot", - "com", - "edu", - "gov", - "mil", - "name", - "net", - "org", - "ac", - "adv", - "co", - "edu", - "gov", - "mil", - "net", - "org", - "ca", - "cc", - "co", - "com", - "dr", - "in", - "info", - "mobi", - "mx", - "name", - "or", - "org", - "pro", - "school", - "tv", - "us", - "ws", - "her", - "his", - "forgot", - "forgot", - "asso", - "nom", - "alwaysdata", - "at-band-camp", - "azure-mobile", - "azurewebsites", - "barsy", - "blogdns", - "boomla", - "bounceme", - "bplaced", - "broke-it", - "buyshouses", - "casacam", - "cdn77", - "cdn77-ssl", - "channelsdvr", - "cloudaccess", - "cloudapp", - "cloudfront", - "cloudfunctions", - "cryptonomic", - "ddns", - "debian", - "definima", - "dnsalias", - "dnsdojo", - "does-it", - "dontexist", - "dsmynas", - "dynalias", - "dynathome", - "dynu", - "dynv6", - "eating-organic", - "endofinternet", - "familyds", - "fastly", - "fastlylb", - "feste-ip", - "firewall-gateway", - "flynnhosting", - "from-az", - "from-co", - "from-la", - "from-ny", - "gb", - "gets-it", - "ham-radio-op", - "homeftp", - "homeip", - "homelinux", - "homeunix", - "hu", - "in", - "in-the-band", - "ipifony", - "is-a-chef", - "is-a-geek", - "isa-geek", - "jp", - "kicks-ass", - "knx-server", - "moonscale", - "mydissent", - "myeffect", - "myfritz", - "mymediapc", - "mypsx", - "mysecuritycamera", - "nhlfan", - "no-ip", - "office-on-the", - "pgafan", - "podzone", - "privatizehealthinsurance", - "rackmaze", - "redirectme", - "ru", - "scrapper-site", - "se", - "selfip", - "sells-it", - "servebbs", - "serveblog", - "serveftp", - "serveminecraft", - "square7", - "static-access", - "sytes", - "t3l3p0rt", - "thruhere", - "twmail", - "uk", - "webhop", - "za", - "r", - "freetls", - "map", - "prod", - "ssl", - "a", - "global", - "a", - "b", - "global", - "map", - "alces", - "arts", - "com", - "firm", - "info", - "net", - "other", - "per", - "rec", - "store", - "web", - "com", - "edu", - "gov", - "i", - "mil", - "mobi", - "name", - "net", - "org", - "sch", - "blogspot", - "ac", - "biz", - "co", - "com", - "edu", - "gob", - "in", - "info", - "int", - "mil", - "net", - "nom", - "org", - "web", - "blogspot", - "bv", - "cistron", - "co", - "demon", - "hosting-cluster", - "transurl", - "virtueeldomein", - "aa", - "aarborte", - "aejrie", - "afjord", - "agdenes", - "ah", - "akershus", - "aknoluokta", - "akrehamn", - "al", - "alaheadju", - "alesund", - "algard", - "alstahaug", - "alta", - "alvdal", - "amli", - "amot", - "andasuolo", - "andebu", - "andoy", - "ardal", - "aremark", - "arendal", - "arna", - "aseral", - "asker", - "askim", - "askoy", - "askvoll", - "asnes", - "audnedaln", - "aukra", - "aure", - "aurland", - "aurskog-holand", - "austevoll", - "austrheim", - "averoy", - "badaddja", - "bahcavuotna", - "bahccavuotna", - "baidar", - "bajddar", - "balat", - "balestrand", - "ballangen", - "balsfjord", - "bamble", - "bardu", - "barum", - "batsfjord", - "bearalvahki", - "beardu", - "beiarn", - "berg", - "bergen", - "berlevag", - "bievat", - "bindal", - "birkenes", - "bjarkoy", - "bjerkreim", - "bjugn", - "blogspot", - "bodo", - "bokn", - "bomlo", - "bremanger", - "bronnoy", - "bronnoysund", - "brumunddal", - "bryne", - "bu", - "budejju", - "buskerud", - "bygland", - "bykle", - "cahcesuolo", - "co", - "davvenjarga", - "davvesiida", - "deatnu", - "dep", - "dielddanuorri", - "divtasvuodna", - "divttasvuotna", - "donna", - "dovre", - "drammen", - "drangedal", - "drobak", - "dyroy", - "egersund", - "eid", - "eidfjord", - "eidsberg", - "eidskog", - "eidsvoll", - "eigersund", - "elverum", - "enebakk", - "engerdal", - "etne", - "etnedal", - "evenassi", - "evenes", - "evje-og-hornnes", - "farsund", - "fauske", - "fedje", - "fet", - "fetsund", - "fhs", - "finnoy", - "fitjar", - "fjaler", - "fjell", - "fla", - "flakstad", - "flatanger", - "flekkefjord", - "flesberg", - "flora", - "floro", - "fm", - "folkebibl", - "folldal", - "forde", - "forsand", - "fosnes", - "frana", - "fredrikstad", - "frei", - "frogn", - "froland", - "frosta", - "froya", - "fuoisku", - "fuossko", - "fusa", - "fylkesbibl", - "fyresdal", - "gaivuotna", - "galsa", - "gamvik", - "gangaviika", - "gaular", - "gausdal", - "giehtavuoatna", - "gildeskal", - "giske", - "gjemnes", - "gjerdrum", - "gjerstad", - "gjesdal", - "gjovik", - "gloppen", - "gol", - "gran", - "grane", - "granvin", - "gratangen", - "grimstad", - "grong", - "grue", - "gulen", - "guovdageaidnu", - "ha", - "habmer", - "hadsel", - "hagebostad", - "halden", - "halsa", - "hamar", - "hamaroy", - "hammarfeasta", - "hammerfest", - "hapmir", - "haram", - "hareid", - "harstad", - "hasvik", - "hattfjelldal", - "haugesund", - "hedmark", - "hemne", - "hemnes", - "hemsedal", - "herad", - "hitra", - "hjartdal", - "hjelmeland", - "hl", - "hm", - "hobol", - "hof", - "hokksund", - "hol", - "hole", - "holmestrand", - "holtalen", - "honefoss", - "hordaland", - "hornindal", - "horten", - "hoyanger", - "hoylandet", - "hurdal", - "hurum", - "hvaler", - "hyllestad", - "ibestad", - "idrett", - "inderoy", - "iveland", - "ivgu", - "jan-mayen", - "jessheim", - "jevnaker", - "jolster", - "jondal", - "jorpeland", - "kafjord", - "karasjohka", - "karasjok", - "karlsoy", - "karmoy", - "kautokeino", - "kirkenes", - "klabu", - "klepp", - "kommune", - "kongsberg", - "kongsvinger", - "kopervik", - "kraanghke", - "kragero", - "kristiansand", - "kristiansund", - "krodsherad", - "krokstadelva", - "kvafjord", - "kvalsund", - "kvam", - "kvanangen", - "kvinesdal", - "kvinnherad", - "kviteseid", - "kvitsoy", - "laakesvuemie", - "lahppi", - "langevag", - "lardal", - "larvik", - "lavagis", - "lavangen", - "leangaviika", - "lebesby", - "leikanger", - "leirfjord", - "leirvik", - "leka", - "leksvik", - "lenvik", - "lerdal", - "lesja", - "levanger", - "lier", - "lierne", - "lillehammer", - "lillesand", - "lindas", - "lindesnes", - "loabat", - "lodingen", - "lom", - "loppa", - "lorenskog", - "loten", - "lund", - "lunner", - "luroy", - "luster", - "lyngdal", - "lyngen", - "malatvuopmi", - "malselv", - "malvik", - "mandal", - "marker", - "marnardal", - "masfjorden", - "masoy", - "matta-varjjat", - "meland", - "meldal", - "melhus", - "meloy", - "meraker", - "midsund", - "midtre-gauldal", - "mil", - "mjondalen", - "mo-i-rana", - "moareke", - "modalen", - "modum", - "molde", - "more-og-romsdal", - "mosjoen", - "moskenes", - "moss", - "mosvik", - "mr", - "muosat", - "museum", - "naamesjevuemie", - "namdalseid", - "namsos", - "namsskogan", - "nannestad", - "naroy", - "narviika", - "narvik", - "naustdal", - "navuotna", - "nedre-eiker", - "nesna", - "nesodden", - "nesoddtangen", - "nesseby", - "nesset", - "nissedal", - "nittedal", - "nl", - "nord-aurdal", - "nord-fron", - "nord-odal", - "norddal", - "nordkapp", - "nordland", - "nordre-land", - "nordreisa", - "nore-og-uvdal", - "notodden", - "notteroy", - "nt", - "odda", - "of", - "oksnes", - "ol", - "omasvuotna", - "oppdal", - "oppegard", - "orkanger", - "orkdal", - "orland", - "orskog", - "orsta", - "osen", - "oslo", - "osoyro", - "osteroy", - "ostfold", - "ostre-toten", - "overhalla", - "ovre-eiker", - "oyer", - "oygarden", - "oystre-slidre", - "porsanger", - "porsangu", - "porsgrunn", - "priv", - "rade", - "radoy", - "rahkkeravju", - "raholt", - "raisa", - "rakkestad", - "ralingen", - "rana", - "randaberg", - "rauma", - "rendalen", - "rennebu", - "rennesoy", - "rindal", - "ringebu", - "ringerike", - "ringsaker", - "risor", - "rissa", - "rl", - "roan", - "rodoy", - "rollag", - "romsa", - "romskog", - "roros", - "rost", - "royken", - "royrvik", - "ruovat", - "rygge", - "salangen", - "salat", - "saltdal", - "samnanger", - "sandefjord", - "sandnes", - "sandnessjoen", - "sandoy", - "sarpsborg", - "sauda", - "sauherad", - "sel", - "selbu", - "selje", - "seljord", - "sf", - "siellak", - "sigdal", - "siljan", - "sirdal", - "skanit", - "skanland", - "skaun", - "skedsmo", - "skedsmokorset", - "ski", - "skien", - "skierva", - "skiptvet", - "skjak", - "skjervoy", - "skodje", - "slattum", - "smola", - "snaase", - "snasa", - "snillfjord", - "snoasa", - "sogndal", - "sogne", - "sokndal", - "sola", - "solund", - "somna", - "sondre-land", - "songdalen", - "sor-aurdal", - "sor-fron", - "sor-odal", - "sor-varanger", - "sorfold", - "sorreisa", - "sortland", - "sorum", - "spjelkavik", - "spydeberg", - "st", - "stange", - "stat", - "stathelle", - "stavanger", - "stavern", - "steigen", - "steinkjer", - "stjordal", - "stjordalshalsen", - "stokke", - "stor-elvdal", - "stord", - "stordal", - "storfjord", - "strand", - "stranda", - "stryn", - "sula", - "suldal", - "sund", - "sunndal", - "surnadal", - "svalbard", - "sveio", - "svelvik", - "sykkylven", - "tana", - "tananger", - "telemark", - "time", - "tingvoll", - "tinn", - "tjeldsund", - "tjome", - "tm", - "tokke", - "tolga", - "tonsberg", - "torsken", - "tr", - "trana", - "tranby", - "tranoy", - "troandin", - "trogstad", - "tromsa", - "tromso", - "trondheim", - "trysil", - "tvedestrand", - "tydal", - "tynset", - "tysfjord", - "tysnes", - "tysvar", - "ullensaker", - "ullensvang", - "ulvik", - "unjarga", - "utsira", - "va", - "vaapste", - "vadso", - "vaga", - "vagan", - "vagsoy", - "vaksdal", - "valle", - "vang", - "vanylven", - "vardo", - "varggat", - "varoy", - "vefsn", - "vega", - "vegarshei", - "vennesla", - "verdal", - "verran", - "vestby", - "vestfold", - "vestnes", - "vestre-slidre", - "vestre-toten", - "vestvagoy", - "vevelstad", - "vf", - "vgs", - "vik", - "vikna", - "vindafjord", - "voagat", - "volda", - "voss", - "vossevangen", - "xn--andy-ira", - "xn--asky-ira", - "xn--aurskog-hland-jnb", - "xn--avery-yua", - "xn--bdddj-mrabd", - "xn--bearalvhki-y4a", - "xn--berlevg-jxa", - "xn--bhcavuotna-s4a", - "xn--bhccavuotna-k7a", - "xn--bidr-5nac", - "xn--bievt-0qa", - "xn--bjarky-fya", - "xn--bjddar-pta", - "xn--blt-elab", - "xn--bmlo-gra", - "xn--bod-2na", - "xn--brnny-wuac", - "xn--brnnysund-m8ac", - "xn--brum-voa", - "xn--btsfjord-9za", - "xn--davvenjrga-y4a", - "xn--dnna-gra", - "xn--drbak-wua", - "xn--dyry-ira", - "xn--eveni-0qa01ga", - "xn--finny-yua", - "xn--fjord-lra", - "xn--fl-zia", - "xn--flor-jra", - "xn--frde-gra", - "xn--frna-woa", - "xn--frya-hra", - "xn--ggaviika-8ya47h", - "xn--gildeskl-g0a", - "xn--givuotna-8ya", - "xn--gjvik-wua", - "xn--gls-elac", - "xn--h-2fa", - "xn--hbmer-xqa", - "xn--hcesuolo-7ya35b", - "xn--hgebostad-g3a", - "xn--hmmrfeasta-s4ac", - "xn--hnefoss-q1a", - "xn--hobl-ira", - "xn--holtlen-hxa", - "xn--hpmir-xqa", - "xn--hyanger-q1a", - "xn--hylandet-54a", - "xn--indery-fya", - "xn--jlster-bya", - "xn--jrpeland-54a", - "xn--karmy-yua", - "xn--kfjord-iua", - "xn--klbu-woa", - "xn--koluokta-7ya57h", - "xn--krager-gya", - "xn--kranghke-b0a", - "xn--krdsherad-m8a", - "xn--krehamn-dxa", - "xn--krjohka-hwab49j", - "xn--ksnes-uua", - "xn--kvfjord-nxa", - "xn--kvitsy-fya", - "xn--kvnangen-k0a", - "xn--l-1fa", - "xn--laheadju-7ya", - "xn--langevg-jxa", - "xn--ldingen-q1a", - "xn--leagaviika-52b", - "xn--lesund-hua", - "xn--lgrd-poac", - "xn--lhppi-xqa", - "xn--linds-pra", - "xn--loabt-0qa", - "xn--lrdal-sra", - "xn--lrenskog-54a", - "xn--lt-liac", - "xn--lten-gra", - "xn--lury-ira", - "xn--mely-ira", - "xn--merker-kua", - "xn--mjndalen-64a", - "xn--mlatvuopmi-s4a", - "xn--mli-tla", - "xn--mlselv-iua", - "xn--moreke-jua", - "xn--mosjen-eya", - "xn--mot-tla", - "xn--mre-og-romsdal-qqb", - "xn--msy-ula0h", - "xn--mtta-vrjjat-k7af", - "xn--muost-0qa", - "xn--nmesjevuemie-tcba", - "xn--nry-yla5g", - "xn--nttery-byae", - "xn--nvuotna-hwa", - "xn--oppegrd-ixa", - "xn--ostery-fya", - "xn--osyro-wua", - "xn--porsgu-sta26f", - "xn--rady-ira", - "xn--rdal-poa", - "xn--rde-ula", - "xn--rdy-0nab", - "xn--rennesy-v1a", - "xn--rhkkervju-01af", - "xn--rholt-mra", - "xn--risa-5na", - "xn--risr-ira", - "xn--rland-uua", - "xn--rlingen-mxa", - "xn--rmskog-bya", - "xn--rros-gra", - "xn--rskog-uua", - "xn--rst-0na", - "xn--rsta-fra", - "xn--ryken-vua", - "xn--ryrvik-bya", - "xn--s-1fa", - "xn--sandnessjen-ogb", - "xn--sandy-yua", - "xn--seral-lra", - "xn--sgne-gra", - "xn--skierv-uta", - "xn--skjervy-v1a", - "xn--skjk-soa", - "xn--sknit-yqa", - "xn--sknland-fxa", - "xn--slat-5na", - "xn--slt-elab", - "xn--smla-hra", - "xn--smna-gra", - "xn--snase-nra", - "xn--sndre-land-0cb", - "xn--snes-poa", - "xn--snsa-roa", - "xn--sr-aurdal-l8a", - "xn--sr-fron-q1a", - "xn--sr-odal-q1a", - "xn--sr-varanger-ggb", - "xn--srfold-bya", - "xn--srreisa-q1a", - "xn--srum-gra", - "xn--stfold-9xa", - "xn--stjrdal-s1a", - "xn--stjrdalshalsen-sqb", - "xn--stre-toten-zcb", - "xn--tjme-hra", - "xn--tnsberg-q1a", - "xn--trany-yua", - "xn--trgstad-r1a", - "xn--trna-woa", - "xn--troms-zua", - "xn--tysvr-vra", - "xn--unjrga-rta", - "xn--vads-jra", - "xn--vard-jra", - "xn--vegrshei-c0a", - "xn--vestvgy-ixa6o", - "xn--vg-yiab", - "xn--vgan-qoa", - "xn--vgsy-qoa0j", - "xn--vre-eiker-k8a", - "xn--vrggt-xqad", - "xn--vry-yla5g", - "xn--yer-zna", - "xn--ygarden-p1a", - "xn--ystre-slidre-ujb", - "gs", - "gs", - "nes", - "gs", - "nes", - "gs", - "os", - "valer", - "xn--vler-qoa", - "gs", - "gs", - "os", - "gs", - "heroy", - "sande", - "gs", - "gs", - "bo", - "heroy", - "xn--b-5ga", - "xn--hery-ira", - "gs", - "gs", - "gs", - "gs", - "valer", - "gs", - "gs", - "gs", - "gs", - "bo", - "xn--b-5ga", - "gs", - "gs", - "gs", - "sande", - "gs", - "sande", - "xn--hery-ira", - "xn--vler-qoa", - "biz", - "com", - "edu", - "gov", - "info", - "net", - "org", - "merseine", - "mine", - "nom", - "shacknet", - "ac", - "co", - "cri", - "geek", - "gen", - "govt", - "health", - "iwi", - "kiwi", - "maori", - "mil", - "net", - "nym", - "org", - "parliament", - "school", - "xn--mori-qsa", - "blogspot", - "co", - "com", - "edu", - "gov", - "med", - "museum", - "net", - "org", - "pro", - "homelink", - "barsy", - "accesscam", - "ae", - "amune", - "blogdns", - "blogsite", - "bmoattachments", - "boldlygoingnowhere", - "cable-modem", - "camdvr", - "cdn77", - "cdn77-secure", - "certmgr", - "cloudns", - "collegefan", - "couchpotatofries", - "ddnss", - "diskstation", - "dnsalias", - "dnsdojo", - "doesntexist", - "dontexist", - "doomdns", - "dsmynas", - "duckdns", - "dvrdns", - "dynalias", - "dyndns", - "endofinternet", - "endoftheinternet", - "eu", - "familyds", - "fedorainfracloud", - "fedorapeople", - "fedoraproject", - "freeddns", - "from-me", - "game-host", - "gotdns", - "hepforge", - "hk", - "hobby-site", - "homedns", - "homeftp", - "homelinux", - "homeunix", - "hopto", - "is-a-bruinsfan", - "is-a-candidate", - "is-a-celticsfan", - "is-a-chef", - "is-a-geek", - "is-a-knight", - "is-a-linux-user", - "is-a-patsfan", - "is-a-soxfan", - "is-found", - "is-lost", - "is-saved", - "is-very-bad", - "is-very-evil", - "is-very-good", - "is-very-nice", - "is-very-sweet", - "isa-geek", - "js", - "kicks-ass", - "misconfused", - "mlbfan", - "my-firewall", - "myfirewall", - "myftp", - "mysecuritycamera", - "mywire", - "nflfan", - "no-ip", - "pimienta", - "podzone", - "poivron", - "potager", - "read-books", - "readmyblog", - "selfip", - "sellsyourhome", - "servebbs", - "serveftp", - "servegame", - "spdns", - "stuff-4-sale", - "sweetpepper", - "tunk", - "tuxfamily", - "twmail", - "ufcfan", - "us", - "webhop", - "webredirect", - "wmflabs", - "za", - "zapto", - "tele", - "c", - "rsc", - "origin", - "ssl", - "go", - "home", - "al", - "asso", - "at", - "au", - "be", - "bg", - "ca", - "cd", - "ch", - "cn", - "cy", - "cz", - "de", - "dk", - "edu", - "ee", - "es", - "fi", - "fr", - "gr", - "hr", - "hu", - "ie", - "il", - "in", - "int", - "is", - "it", - "jp", - "kr", - "lt", - "lu", - "lv", - "mc", - "me", - "mk", - "mt", - "my", - "net", - "ng", - "nl", - "no", - "nz", - "paris", - "pl", - "pt", - "q-a", - "ro", - "ru", - "se", - "si", - "sk", - "tr", - "uk", - "us", - "cloud", - "os", - "stg", - "app", - "os", - "app", - "nerdpol", - "abo", - "ac", - "com", - "edu", - "gob", - "ing", - "med", - "net", - "nom", - "org", - "sld", - "ybo", - "blogspot", - "com", - "edu", - "gob", - "mil", - "net", - "nom", - "nym", - "org", - "com", - "edu", - "org", - "com", - "edu", - "gov", - "i", - "mil", - "net", - "ngo", - "org", - "1337", - "biz", - "com", - "edu", - "fam", - "gob", - "gok", - "gon", - "gop", - "gos", - "gov", - "info", - "net", - "org", - "web", - "agro", - "aid", - "art", - "atm", - "augustow", - "auto", - "babia-gora", - "bedzin", - "beep", - "beskidy", - "bialowieza", - "bialystok", - "bielawa", - "bieszczady", - "biz", - "boleslawiec", - "bydgoszcz", - "bytom", - "cieszyn", - "co", - "com", - "czeladz", - "czest", - "dlugoleka", - "edu", - "elblag", - "elk", - "gda", - "gdansk", - "gdynia", - "gliwice", - "glogow", - "gmina", - "gniezno", - "gorlice", - "gov", - "grajewo", - "gsm", - "ilawa", - "info", - "jaworzno", - "jelenia-gora", - "jgora", - "kalisz", - "karpacz", - "kartuzy", - "kaszuby", - "katowice", - "kazimierz-dolny", - "kepno", - "ketrzyn", - "klodzko", - "kobierzyce", - "kolobrzeg", - "konin", - "konskowola", - "krakow", - "kutno", - "lapy", - "lebork", - "legnica", - "lezajsk", - "limanowa", - "lomza", - "lowicz", - "lubin", - "lukow", - "mail", - "malbork", - "malopolska", - "mazowsze", - "mazury", - "med", - "media", - "miasta", - "mielec", - "mielno", - "mil", - "mragowo", - "naklo", - "net", - "nieruchomosci", - "nom", - "nowaruda", - "nysa", - "olawa", - "olecko", - "olkusz", - "olsztyn", - "opoczno", - "opole", - "org", - "ostroda", - "ostroleka", - "ostrowiec", - "ostrowwlkp", - "pc", - "pila", - "pisz", - "podhale", - "podlasie", - "polkowice", - "pomorskie", - "pomorze", - "powiat", - "poznan", - "priv", - "prochowice", - "pruszkow", - "przeworsk", - "pulawy", - "radom", - "rawa-maz", - "realestate", - "rel", - "rybnik", - "rzeszow", - "sanok", - "sejny", - "sex", - "shop", - "sklep", - "skoczow", - "slask", - "slupsk", - "sopot", - "sos", - "sosnowiec", - "stalowa-wola", - "starachowice", - "stargard", - "suwalki", - "swidnica", - "swiebodzin", - "swinoujscie", - "szczecin", - "szczytno", - "szkola", - "targi", - "tarnobrzeg", - "tgory", - "tm", - "tourism", - "travel", - "turek", - "turystyka", - "tychy", - "ustka", - "walbrzych", - "warmia", - "warszawa", - "waw", - "wegrow", - "wielun", - "wlocl", - "wloclawek", - "wodzislaw", - "wolomin", - "wroc", - "wroclaw", - "zachpomor", - "zagan", - "zakopane", - "zarow", - "zgora", - "zgorzelec", - "ap", - "griw", - "ic", - "is", - "kmpsp", - "konsulat", - "kppsp", - "kwp", - "kwpsp", - "mup", - "mw", - "oirm", - "oum", - "pa", - "pinb", - "piw", - "po", - "psp", - "psse", - "pup", - "rzgw", - "sa", - "sdn", - "sko", - "so", - "sr", - "starostwo", - "ug", - "ugim", - "um", - "umig", - "upow", - "uppo", - "us", - "uw", - "uzs", - "wif", - "wiih", - "winb", - "wios", - "witd", - "wiw", - "wsa", - "wskr", - "wuoz", - "wzmiuw", - "zp", - "co", - "edu", - "gov", - "net", - "org", - "ac", - "biz", - "com", - "edu", - "est", - "gov", - "info", - "isla", - "name", - "net", - "org", - "pro", - "prof", - "aaa", - "aca", - "acct", - "avocat", - "bar", - "cloudns", - "cpa", - "eng", - "jur", - "law", - "med", - "recht", - "com", - "edu", - "gov", - "net", - "org", - "plo", - "sec", - "blogspot", - "com", - "edu", - "gov", - "int", - "net", - "nome", - "nym", - "org", - "publ", - "belau", - "cloudns", - "co", - "ed", - "go", - "ne", - "nom", - "or", - "com", - "coop", - "edu", - "gov", - "mil", - "net", - "org", - "blogspot", - "com", - "edu", - "gov", - "mil", - "name", - "net", - "nom", - "org", - "sch", - "asso", - "blogspot", - "com", - "nom", - "ybo", - "clan", - "arts", - "blogspot", - "com", - "firm", - "info", - "nom", - "nt", - "org", - "rec", - "shop", - "store", - "tm", - "www", - "lima-city", - "myddns", - "webspace", - "ac", - "blogspot", - "co", - "edu", - "gov", - "in", - "nom", - "org", - "ac", - "adygeya", - "bashkiria", - "bir", - "blogspot", - "cbg", - "cldmail", - "com", - "dagestan", - "edu", - "gov", - "grozny", - "int", - "kalmykia", - "kustanai", - "marine", - "mil", - "mordovia", - "msk", - "mytis", - "nalchik", - "net", - "nov", - "org", - "pp", - "pyatigorsk", - "spb", - "test", - "vladikavkaz", - "vladimir", - "hb", - "ac", - "co", - "com", - "edu", - "gouv", - "gov", - "int", - "mil", - "net", - "com", - "edu", - "gov", - "med", - "net", - "org", - "pub", - "sch", - "com", - "edu", - "gov", - "net", - "org", - "com", - "edu", - "gov", - "net", - "org", - "ybo", - "com", - "edu", - "gov", - "info", - "med", - "net", - "org", - "tv", - "a", - "ac", - "b", - "bd", - "blogspot", - "brand", - "c", - "com", - "d", - "e", - "f", - "fh", - "fhsk", - "fhv", - "g", - "h", - "i", - "k", - "komforb", - "kommunalforbund", - "komvux", - "l", - "lanbib", - "m", - "n", - "naturbruksgymn", - "o", - "org", - "p", - "parti", - "pp", - "press", - "r", - "s", - "t", - "tm", - "u", - "w", - "x", - "y", - "z", - "blogspot", - "com", - "edu", - "gov", - "net", - "org", - "per", - "com", - "gov", - "hashbang", - "mil", - "net", - "now", - "org", - "platform", - "wedeploy", - "blogspot", - "nom", - "byen", - "cyon", - "platformsh", - "blogspot", - "nym", - "com", - "edu", - "gov", - "net", - "org", - "art", - "blogspot", - "com", - "edu", - "gouv", - "org", - "perso", - "univ", - "com", - "net", - "org", - "stackspace", - "uber", - "xs4all", - "co", - "com", - "consulado", - "edu", - "embaixada", - "gov", - "mil", - "net", - "org", - "principe", - "saotome", - "store", - "abkhazia", - "adygeya", - "aktyubinsk", - "arkhangelsk", - "armenia", - "ashgabad", - "azerbaijan", - "balashov", - "bashkiria", - "bryansk", - "bukhara", - "chimkent", - "dagestan", - "east-kazakhstan", - "exnet", - "georgia", - "grozny", - "ivanovo", - "jambyl", - "kalmykia", - "kaluga", - "karacol", - "karaganda", - "karelia", - "khakassia", - "krasnodar", - "kurgan", - "kustanai", - "lenug", - "mangyshlak", - "mordovia", - "msk", - "murmansk", - "nalchik", - "navoi", - "north-kazakhstan", - "nov", - "nym", - "obninsk", - "penza", - "pokrovsk", - "sochi", - "spb", - "tashkent", - "termez", - "togliatti", - "troitsk", - "tselinograd", - "tula", - "tuva", - "vladikavkaz", - "vladimir", - "vologda", - "barsy", - "com", - "edu", - "gob", - "org", - "red", - "gov", - "nym", - "com", - "edu", - "gov", - "mil", - "net", - "org", - "knightpoint", - "ac", - "co", - "org", - "blogspot", - "ac", - "co", - "go", - "in", - "mi", - "net", - "or", - "ac", - "biz", - "co", - "com", - "edu", - "go", - "gov", - "int", - "mil", - "name", - "net", - "nic", - "org", - "test", - "web", - "gov", - "co", - "com", - "edu", - "gov", - "mil", - "net", - "nom", - "org", - "agrinet", - "com", - "defense", - "edunet", - "ens", - "fin", - "gov", - "ind", - "info", - "intl", - "mincom", - "nat", - "net", - "org", - "perso", - "rnrt", - "rns", - "rnu", - "tourism", - "turen", - "com", - "edu", - "gov", - "mil", - "net", - "org", - "vpnplus", - "av", - "bbs", - "bel", - "biz", - "com", - "dr", - "edu", - "gen", - "gov", - "info", - "k12", - "kep", - "mil", - "name", - "nc", - "net", - "org", - "pol", - "tel", - "tv", - "web", - "blogspot", - "gov", - "ybo", - "aero", - "biz", - "co", - "com", - "coop", - "edu", - "gov", - "info", - "int", - "jobs", - "mobi", - "museum", - "name", - "net", - "org", - "pro", - "travel", - "better-than", - "dyndns", - "on-the-web", - "worse-than", - "blogspot", - "club", - "com", - "ebiz", - "edu", - "game", - "gov", - "idv", - "mil", - "net", - "nym", - "org", - "url", - "xn--czrw28b", - "xn--uc0atv", - "xn--zf0ao64a", - "mymailer", - "ac", - "co", - "go", - "hotel", - "info", - "me", - "mil", - "mobi", - "ne", - "or", - "sc", - "tv", - "biz", - "cc", - "cherkassy", - "cherkasy", - "chernigov", - "chernihiv", - "chernivtsi", - "chernovtsy", - "ck", - "cn", - "co", - "com", - "cr", - "crimea", - "cv", - "dn", - "dnepropetrovsk", - "dnipropetrovsk", - "dominic", - "donetsk", - "dp", - "edu", - "gov", - "if", - "in", - "inf", - "ivano-frankivsk", - "kh", - "kharkiv", - "kharkov", - "kherson", - "khmelnitskiy", - "khmelnytskyi", - "kiev", - "kirovograd", - "km", - "kr", - "krym", - "ks", - "kv", - "kyiv", - "lg", - "lt", - "ltd", - "lugansk", - "lutsk", - "lv", - "lviv", - "mk", - "mykolaiv", - "net", - "nikolaev", - "od", - "odesa", - "odessa", - "org", - "pl", - "poltava", - "pp", - "rivne", - "rovno", - "rv", - "sb", - "sebastopol", - "sevastopol", - "sm", - "sumy", - "te", - "ternopil", - "uz", - "uzhgorod", - "vinnica", - "vinnytsia", - "vn", - "volyn", - "yalta", - "zaporizhzhe", - "zaporizhzhia", - "zhitomir", - "zhytomyr", - "zp", - "zt", - "ac", - "blogspot", - "co", - "com", - "go", - "ne", - "nom", - "or", - "org", - "sc", - "ac", - "co", - "gov", - "ltd", - "me", - "net", - "nhs", - "org", - "plc", - "police", - "sch", - "blogspot", - "nh-serv", - "no-ip", - "wellbeingzone", - "homeoffice", - "service", - "ak", - "al", - "ar", - "as", - "az", - "ca", - "cloudns", - "co", - "ct", - "dc", - "de", - "dni", - "drud", - "fed", - "fl", - "ga", - "golffan", - "gu", - "hi", - "ia", - "id", - "il", - "in", - "is-by", - "isa", - "kids", - "ks", - "ky", - "la", - "land-4-sale", - "ma", - "md", - "me", - "mi", - "mn", - "mo", - "ms", - "mt", - "nc", - "nd", - "ne", - "nh", - "nj", - "nm", - "noip", - "nsn", - "nv", - "ny", - "oh", - "ok", - "or", - "pa", - "pointto", - "pr", - "ri", - "sc", - "sd", - "stuff-4-sale", - "tn", - "tx", - "ut", - "va", - "vi", - "vt", - "wa", - "wi", - "wv", - "wy", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "chtr", - "paroch", - "pvt", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "ann-arbor", - "cc", - "cog", - "dst", - "eaton", - "gen", - "k12", - "lib", - "mus", - "tec", - "washtenaw", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "k12", - "lib", - "cc", - "cc", - "k12", - "lib", - "com", - "edu", - "gub", - "mil", - "net", - "nom", - "org", - "blogspot", - "co", - "com", - "net", - "org", - "com", - "edu", - "gov", - "mil", - "net", - "nom", - "org", - "arts", - "co", - "com", - "e12", - "edu", - "firm", - "gob", - "gov", - "info", - "int", - "mil", - "net", - "org", - "rec", - "store", - "tec", - "web", - "nom", - "co", - "com", - "k12", - "net", - "org", - "ac", - "biz", - "blogspot", - "com", - "edu", - "gov", - "health", - "info", - "int", - "name", - "net", - "org", - "pro", - "com", - "edu", - "net", - "org", - "advisor", - "com", - "dyndns", - "edu", - "gov", - "mypets", - "net", - "org", - "xn--80au", - "xn--90azh", - "xn--c1avg", - "xn--d1at", - "xn--o1ac", - "xn--o1ach", - "xn--12c1fe0br", - "xn--12cfi8ixb8l", - "xn--12co0c3b4eva", - "xn--h3cuzk1di", - "xn--m3ch0j3a", - "xn--o3cyx2a", - "blogsite", - "fhapp", - "ac", - "agric", - "alt", - "co", - "edu", - "gov", - "grondar", - "law", - "mil", - "net", - "ngo", - "nis", - "nom", - "org", - "school", - "tm", - "web", - "blogspot", - "ac", - "biz", - "co", - "com", - "edu", - "gov", - "info", - "mil", - "net", - "org", - "sch", - "lima", - "triton", - "ac", - "co", - "gov", - "mil", - "org", -} diff --git a/vendor/golang.org/x/net/route/address.go b/vendor/golang.org/x/net/route/address.go deleted file mode 100644 index e6bfa39e..00000000 --- a/vendor/golang.org/x/net/route/address.go +++ /dev/null @@ -1,425 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -import "runtime" - -// An Addr represents an address associated with packet routing. -type Addr interface { - // Family returns an address family. - Family() int -} - -// A LinkAddr represents a link-layer address. -type LinkAddr struct { - Index int // interface index when attached - Name string // interface name when attached - Addr []byte // link-layer address when attached -} - -// Family implements the Family method of Addr interface. -func (a *LinkAddr) Family() int { return sysAF_LINK } - -func (a *LinkAddr) lenAndSpace() (int, int) { - l := 8 + len(a.Name) + len(a.Addr) - return l, roundup(l) -} - -func (a *LinkAddr) marshal(b []byte) (int, error) { - l, ll := a.lenAndSpace() - if len(b) < ll { - return 0, errShortBuffer - } - nlen, alen := len(a.Name), len(a.Addr) - if nlen > 255 || alen > 255 { - return 0, errInvalidAddr - } - b[0] = byte(l) - b[1] = sysAF_LINK - if a.Index > 0 { - nativeEndian.PutUint16(b[2:4], uint16(a.Index)) - } - data := b[8:] - if nlen > 0 { - b[5] = byte(nlen) - copy(data[:nlen], a.Addr) - data = data[nlen:] - } - if alen > 0 { - b[6] = byte(alen) - copy(data[:alen], a.Name) - data = data[alen:] - } - return ll, nil -} - -func parseLinkAddr(b []byte) (Addr, error) { - if len(b) < 8 { - return nil, errInvalidAddr - } - _, a, err := parseKernelLinkAddr(sysAF_LINK, b[4:]) - if err != nil { - return nil, err - } - a.(*LinkAddr).Index = int(nativeEndian.Uint16(b[2:4])) - return a, nil -} - -// parseKernelLinkAddr parses b as a link-layer address in -// conventional BSD kernel form. -func parseKernelLinkAddr(_ int, b []byte) (int, Addr, error) { - // The encoding looks like the following: - // +----------------------------+ - // | Type (1 octet) | - // +----------------------------+ - // | Name length (1 octet) | - // +----------------------------+ - // | Address length (1 octet) | - // +----------------------------+ - // | Selector length (1 octet) | - // +----------------------------+ - // | Data (variable) | - // +----------------------------+ - // - // On some platforms, all-bit-one of length field means "don't - // care". - nlen, alen, slen := int(b[1]), int(b[2]), int(b[3]) - if nlen == 0xff { - nlen = 0 - } - if alen == 0xff { - alen = 0 - } - if slen == 0xff { - slen = 0 - } - l := 4 + nlen + alen + slen - if len(b) < l { - return 0, nil, errInvalidAddr - } - data := b[4:] - var name string - var addr []byte - if nlen > 0 { - name = string(data[:nlen]) - data = data[nlen:] - } - if alen > 0 { - addr = data[:alen] - data = data[alen:] - } - return l, &LinkAddr{Name: name, Addr: addr}, nil -} - -// An Inet4Addr represents an internet address for IPv4. -type Inet4Addr struct { - IP [4]byte // IP address -} - -// Family implements the Family method of Addr interface. -func (a *Inet4Addr) Family() int { return sysAF_INET } - -func (a *Inet4Addr) lenAndSpace() (int, int) { - return sizeofSockaddrInet, roundup(sizeofSockaddrInet) -} - -func (a *Inet4Addr) marshal(b []byte) (int, error) { - l, ll := a.lenAndSpace() - if len(b) < ll { - return 0, errShortBuffer - } - b[0] = byte(l) - b[1] = sysAF_INET - copy(b[4:8], a.IP[:]) - return ll, nil -} - -// An Inet6Addr represents an internet address for IPv6. -type Inet6Addr struct { - IP [16]byte // IP address - ZoneID int // zone identifier -} - -// Family implements the Family method of Addr interface. -func (a *Inet6Addr) Family() int { return sysAF_INET6 } - -func (a *Inet6Addr) lenAndSpace() (int, int) { - return sizeofSockaddrInet6, roundup(sizeofSockaddrInet6) -} - -func (a *Inet6Addr) marshal(b []byte) (int, error) { - l, ll := a.lenAndSpace() - if len(b) < ll { - return 0, errShortBuffer - } - b[0] = byte(l) - b[1] = sysAF_INET6 - copy(b[8:24], a.IP[:]) - if a.ZoneID > 0 { - nativeEndian.PutUint32(b[24:28], uint32(a.ZoneID)) - } - return ll, nil -} - -// parseInetAddr parses b as an internet address for IPv4 or IPv6. -func parseInetAddr(af int, b []byte) (Addr, error) { - switch af { - case sysAF_INET: - if len(b) < sizeofSockaddrInet { - return nil, errInvalidAddr - } - a := &Inet4Addr{} - copy(a.IP[:], b[4:8]) - return a, nil - case sysAF_INET6: - if len(b) < sizeofSockaddrInet6 { - return nil, errInvalidAddr - } - a := &Inet6Addr{ZoneID: int(nativeEndian.Uint32(b[24:28]))} - copy(a.IP[:], b[8:24]) - if a.IP[0] == 0xfe && a.IP[1]&0xc0 == 0x80 || a.IP[0] == 0xff && (a.IP[1]&0x0f == 0x01 || a.IP[1]&0x0f == 0x02) { - // KAME based IPv6 protocol stack usually - // embeds the interface index in the - // interface-local or link-local address as - // the kernel-internal form. - id := int(bigEndian.Uint16(a.IP[2:4])) - if id != 0 { - a.ZoneID = id - a.IP[2], a.IP[3] = 0, 0 - } - } - return a, nil - default: - return nil, errInvalidAddr - } -} - -// parseKernelInetAddr parses b as an internet address in conventional -// BSD kernel form. -func parseKernelInetAddr(af int, b []byte) (int, Addr, error) { - // The encoding looks similar to the NLRI encoding. - // +----------------------------+ - // | Length (1 octet) | - // +----------------------------+ - // | Address prefix (variable) | - // +----------------------------+ - // - // The differences between the kernel form and the NLRI - // encoding are: - // - // - The length field of the kernel form indicates the prefix - // length in bytes, not in bits - // - // - In the kernel form, zero value of the length field - // doesn't mean 0.0.0.0/0 or ::/0 - // - // - The kernel form appends leading bytes to the prefix field - // to make the <length, prefix> tuple to be conformed with - // the routing message boundary - l := int(b[0]) - if runtime.GOOS == "darwin" { - // On Darwn, an address in the kernel form is also - // used as a message filler. - if l == 0 || len(b) > roundup(l) { - l = roundup(l) - } - } else { - l = roundup(l) - } - if len(b) < l { - return 0, nil, errInvalidAddr - } - // Don't reorder case expressions. - // The case expressions for IPv6 must come first. - const ( - off4 = 4 // offset of in_addr - off6 = 8 // offset of in6_addr - ) - switch { - case b[0] == sizeofSockaddrInet6: - a := &Inet6Addr{} - copy(a.IP[:], b[off6:off6+16]) - return int(b[0]), a, nil - case af == sysAF_INET6: - a := &Inet6Addr{} - if l-1 < off6 { - copy(a.IP[:], b[1:l]) - } else { - copy(a.IP[:], b[l-off6:l]) - } - return int(b[0]), a, nil - case b[0] == sizeofSockaddrInet: - a := &Inet4Addr{} - copy(a.IP[:], b[off4:off4+4]) - return int(b[0]), a, nil - default: // an old fashion, AF_UNSPEC or unknown means AF_INET - a := &Inet4Addr{} - if l-1 < off4 { - copy(a.IP[:], b[1:l]) - } else { - copy(a.IP[:], b[l-off4:l]) - } - return int(b[0]), a, nil - } -} - -// A DefaultAddr represents an address of various operating -// system-specific features. -type DefaultAddr struct { - af int - Raw []byte // raw format of address -} - -// Family implements the Family method of Addr interface. -func (a *DefaultAddr) Family() int { return a.af } - -func (a *DefaultAddr) lenAndSpace() (int, int) { - l := len(a.Raw) - return l, roundup(l) -} - -func (a *DefaultAddr) marshal(b []byte) (int, error) { - l, ll := a.lenAndSpace() - if len(b) < ll { - return 0, errShortBuffer - } - if l > 255 { - return 0, errInvalidAddr - } - b[1] = byte(l) - copy(b[:l], a.Raw) - return ll, nil -} - -func parseDefaultAddr(b []byte) (Addr, error) { - if len(b) < 2 || len(b) < int(b[0]) { - return nil, errInvalidAddr - } - a := &DefaultAddr{af: int(b[1]), Raw: b[:b[0]]} - return a, nil -} - -func addrsSpace(as []Addr) int { - var l int - for _, a := range as { - switch a := a.(type) { - case *LinkAddr: - _, ll := a.lenAndSpace() - l += ll - case *Inet4Addr: - _, ll := a.lenAndSpace() - l += ll - case *Inet6Addr: - _, ll := a.lenAndSpace() - l += ll - case *DefaultAddr: - _, ll := a.lenAndSpace() - l += ll - } - } - return l -} - -// marshalAddrs marshals as and returns a bitmap indicating which -// address is stored in b. -func marshalAddrs(b []byte, as []Addr) (uint, error) { - var attrs uint - for i, a := range as { - switch a := a.(type) { - case *LinkAddr: - l, err := a.marshal(b) - if err != nil { - return 0, err - } - b = b[l:] - attrs |= 1 << uint(i) - case *Inet4Addr: - l, err := a.marshal(b) - if err != nil { - return 0, err - } - b = b[l:] - attrs |= 1 << uint(i) - case *Inet6Addr: - l, err := a.marshal(b) - if err != nil { - return 0, err - } - b = b[l:] - attrs |= 1 << uint(i) - case *DefaultAddr: - l, err := a.marshal(b) - if err != nil { - return 0, err - } - b = b[l:] - attrs |= 1 << uint(i) - } - } - return attrs, nil -} - -func parseAddrs(attrs uint, fn func(int, []byte) (int, Addr, error), b []byte) ([]Addr, error) { - var as [sysRTAX_MAX]Addr - af := int(sysAF_UNSPEC) - for i := uint(0); i < sysRTAX_MAX && len(b) >= roundup(0); i++ { - if attrs&(1<<i) == 0 { - continue - } - if i <= sysRTAX_BRD { - switch b[1] { - case sysAF_LINK: - a, err := parseLinkAddr(b) - if err != nil { - return nil, err - } - as[i] = a - l := roundup(int(b[0])) - if len(b) < l { - return nil, errMessageTooShort - } - b = b[l:] - case sysAF_INET, sysAF_INET6: - af = int(b[1]) - a, err := parseInetAddr(af, b) - if err != nil { - return nil, err - } - as[i] = a - l := roundup(int(b[0])) - if len(b) < l { - return nil, errMessageTooShort - } - b = b[l:] - default: - l, a, err := fn(af, b) - if err != nil { - return nil, err - } - as[i] = a - ll := roundup(l) - if len(b) < ll { - b = b[l:] - } else { - b = b[ll:] - } - } - } else { - a, err := parseDefaultAddr(b) - if err != nil { - return nil, err - } - as[i] = a - l := roundup(int(b[0])) - if len(b) < l { - return nil, errMessageTooShort - } - b = b[l:] - } - } - return as[:], nil -} diff --git a/vendor/golang.org/x/net/route/address_darwin_test.go b/vendor/golang.org/x/net/route/address_darwin_test.go deleted file mode 100644 index b86bd3df..00000000 --- a/vendor/golang.org/x/net/route/address_darwin_test.go +++ /dev/null @@ -1,63 +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 route - -import ( - "reflect" - "testing" -) - -type parseAddrsOnDarwinTest struct { - attrs uint - fn func(int, []byte) (int, Addr, error) - b []byte - as []Addr -} - -var parseAddrsOnDarwinLittleEndianTests = []parseAddrsOnDarwinTest{ - { - sysRTA_DST | sysRTA_GATEWAY | sysRTA_NETMASK, - parseKernelInetAddr, - []byte{ - 0x10, 0x2, 0x0, 0x0, 0xc0, 0xa8, 0x56, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - - 0x14, 0x12, 0x4, 0x0, 0x6, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - - 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - }, - []Addr{ - &Inet4Addr{IP: [4]byte{192, 168, 86, 0}}, - &LinkAddr{Index: 4}, - &Inet4Addr{IP: [4]byte{255, 255, 255, 255}}, - nil, - nil, - nil, - nil, - nil, - }, - }, -} - -func TestParseAddrsOnDarwin(t *testing.T) { - tests := parseAddrsOnDarwinLittleEndianTests - if nativeEndian != littleEndian { - t.Skip("no test for non-little endian machine yet") - } - - for i, tt := range tests { - as, err := parseAddrs(tt.attrs, tt.fn, tt.b) - if err != nil { - t.Error(i, err) - continue - } - if !reflect.DeepEqual(as, tt.as) { - t.Errorf("#%d: got %+v; want %+v", i, as, tt.as) - continue - } - } -} diff --git a/vendor/golang.org/x/net/route/address_test.go b/vendor/golang.org/x/net/route/address_test.go deleted file mode 100644 index 2005ef7c..00000000 --- a/vendor/golang.org/x/net/route/address_test.go +++ /dev/null @@ -1,103 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -import ( - "reflect" - "testing" -) - -type parseAddrsTest struct { - attrs uint - fn func(int, []byte) (int, Addr, error) - b []byte - as []Addr -} - -var parseAddrsLittleEndianTests = []parseAddrsTest{ - { - sysRTA_DST | sysRTA_GATEWAY | sysRTA_NETMASK | sysRTA_BRD, - parseKernelInetAddr, - []byte{ - 0x38, 0x12, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - - 0x38, 0x12, 0x2, 0x0, 0x6, 0x3, 0x6, 0x0, - 0x65, 0x6d, 0x31, 0x0, 0xc, 0x29, 0x66, 0x2c, - 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - - 0x10, 0x2, 0x0, 0x0, 0xac, 0x10, 0xdc, 0xb4, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - - 0x10, 0x2, 0x0, 0x0, 0xac, 0x10, 0xdc, 0xff, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - }, - []Addr{ - &LinkAddr{Index: 0}, - &LinkAddr{Index: 2, Name: "em1", Addr: []byte{0x00, 0x0c, 0x29, 0x66, 0x2c, 0xdc}}, - &Inet4Addr{IP: [4]byte{172, 16, 220, 180}}, - nil, - nil, - nil, - nil, - &Inet4Addr{IP: [4]byte{172, 16, 220, 255}}, - }, - }, - { - sysRTA_NETMASK | sysRTA_IFP | sysRTA_IFA, - parseKernelInetAddr, - []byte{ - 0x7, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, - - 0x18, 0x12, 0xa, 0x0, 0x87, 0x8, 0x0, 0x0, - 0x76, 0x6c, 0x61, 0x6e, 0x35, 0x36, 0x38, 0x32, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - - 0x10, 0x2, 0x0, 0x0, 0xa9, 0xfe, 0x0, 0x1, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - }, - []Addr{ - nil, - nil, - &Inet4Addr{IP: [4]byte{255, 255, 255, 0}}, - nil, - &LinkAddr{Index: 10, Name: "vlan5682"}, - &Inet4Addr{IP: [4]byte{169, 254, 0, 1}}, - nil, - nil, - }, - }, -} - -func TestParseAddrs(t *testing.T) { - tests := parseAddrsLittleEndianTests - if nativeEndian != littleEndian { - t.Skip("no test for non-little endian machine yet") - } - - for i, tt := range tests { - as, err := parseAddrs(tt.attrs, tt.fn, tt.b) - if err != nil { - t.Error(i, err) - continue - } - as = as[:8] // the list varies between operating systems - if !reflect.DeepEqual(as, tt.as) { - t.Errorf("#%d: got %+v; want %+v", i, as, tt.as) - continue - } - } -} diff --git a/vendor/golang.org/x/net/route/binary.go b/vendor/golang.org/x/net/route/binary.go deleted file mode 100644 index 6910520e..00000000 --- a/vendor/golang.org/x/net/route/binary.go +++ /dev/null @@ -1,90 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -// This file contains duplicates of encoding/binary package. -// -// This package is supposed to be used by the net package of standard -// library. Therefore the package set used in the package must be the -// same as net package. - -var ( - littleEndian binaryLittleEndian - bigEndian binaryBigEndian -) - -type binaryByteOrder interface { - Uint16([]byte) uint16 - Uint32([]byte) uint32 - PutUint16([]byte, uint16) - PutUint32([]byte, uint32) - Uint64([]byte) uint64 -} - -type binaryLittleEndian struct{} - -func (binaryLittleEndian) Uint16(b []byte) uint16 { - _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 - return uint16(b[0]) | uint16(b[1])<<8 -} - -func (binaryLittleEndian) PutUint16(b []byte, v uint16) { - _ = b[1] // early bounds check to guarantee safety of writes below - b[0] = byte(v) - b[1] = byte(v >> 8) -} - -func (binaryLittleEndian) Uint32(b []byte) uint32 { - _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 - return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 -} - -func (binaryLittleEndian) PutUint32(b []byte, v uint32) { - _ = b[3] // early bounds check to guarantee safety of writes below - b[0] = byte(v) - b[1] = byte(v >> 8) - b[2] = byte(v >> 16) - b[3] = byte(v >> 24) -} - -func (binaryLittleEndian) Uint64(b []byte) uint64 { - _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 - return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | - uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 -} - -type binaryBigEndian struct{} - -func (binaryBigEndian) Uint16(b []byte) uint16 { - _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 - return uint16(b[1]) | uint16(b[0])<<8 -} - -func (binaryBigEndian) PutUint16(b []byte, v uint16) { - _ = b[1] // early bounds check to guarantee safety of writes below - b[0] = byte(v >> 8) - b[1] = byte(v) -} - -func (binaryBigEndian) Uint32(b []byte) uint32 { - _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 - return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 -} - -func (binaryBigEndian) PutUint32(b []byte, v uint32) { - _ = b[3] // early bounds check to guarantee safety of writes below - b[0] = byte(v >> 24) - b[1] = byte(v >> 16) - b[2] = byte(v >> 8) - b[3] = byte(v) -} - -func (binaryBigEndian) Uint64(b []byte) uint64 { - _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 - return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | - uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 -} diff --git a/vendor/golang.org/x/net/route/defs_darwin.go b/vendor/golang.org/x/net/route/defs_darwin.go deleted file mode 100644 index e7716442..00000000 --- a/vendor/golang.org/x/net/route/defs_darwin.go +++ /dev/null @@ -1,114 +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. - -// +build ignore - -package route - -/* -#include <sys/socket.h> -#include <sys/sysctl.h> - -#include <net/if.h> -#include <net/if_dl.h> -#include <net/route.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_ROUTE = C.AF_ROUTE - sysAF_LINK = C.AF_LINK - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW - - sysNET_RT_DUMP = C.NET_RT_DUMP - sysNET_RT_FLAGS = C.NET_RT_FLAGS - sysNET_RT_IFLIST = C.NET_RT_IFLIST - sysNET_RT_STAT = C.NET_RT_STAT - sysNET_RT_TRASH = C.NET_RT_TRASH - sysNET_RT_IFLIST2 = C.NET_RT_IFLIST2 - sysNET_RT_DUMP2 = C.NET_RT_DUMP2 - sysNET_RT_MAXID = C.NET_RT_MAXID -) - -const ( - sysCTL_MAXNAME = C.CTL_MAXNAME - - sysCTL_UNSPEC = C.CTL_UNSPEC - sysCTL_KERN = C.CTL_KERN - sysCTL_VM = C.CTL_VM - sysCTL_VFS = C.CTL_VFS - sysCTL_NET = C.CTL_NET - sysCTL_DEBUG = C.CTL_DEBUG - sysCTL_HW = C.CTL_HW - sysCTL_MACHDEP = C.CTL_MACHDEP - sysCTL_USER = C.CTL_USER - sysCTL_MAXID = C.CTL_MAXID -) - -const ( - sysRTM_VERSION = C.RTM_VERSION - - sysRTM_ADD = C.RTM_ADD - sysRTM_DELETE = C.RTM_DELETE - sysRTM_CHANGE = C.RTM_CHANGE - sysRTM_GET = C.RTM_GET - sysRTM_LOSING = C.RTM_LOSING - sysRTM_REDIRECT = C.RTM_REDIRECT - sysRTM_MISS = C.RTM_MISS - sysRTM_LOCK = C.RTM_LOCK - sysRTM_OLDADD = C.RTM_OLDADD - sysRTM_OLDDEL = C.RTM_OLDDEL - sysRTM_RESOLVE = C.RTM_RESOLVE - sysRTM_NEWADDR = C.RTM_NEWADDR - sysRTM_DELADDR = C.RTM_DELADDR - sysRTM_IFINFO = C.RTM_IFINFO - sysRTM_NEWMADDR = C.RTM_NEWMADDR - sysRTM_DELMADDR = C.RTM_DELMADDR - sysRTM_IFINFO2 = C.RTM_IFINFO2 - sysRTM_NEWMADDR2 = C.RTM_NEWMADDR2 - sysRTM_GET2 = C.RTM_GET2 - - sysRTA_DST = C.RTA_DST - sysRTA_GATEWAY = C.RTA_GATEWAY - sysRTA_NETMASK = C.RTA_NETMASK - sysRTA_GENMASK = C.RTA_GENMASK - sysRTA_IFP = C.RTA_IFP - sysRTA_IFA = C.RTA_IFA - sysRTA_AUTHOR = C.RTA_AUTHOR - sysRTA_BRD = C.RTA_BRD - - sysRTAX_DST = C.RTAX_DST - sysRTAX_GATEWAY = C.RTAX_GATEWAY - sysRTAX_NETMASK = C.RTAX_NETMASK - sysRTAX_GENMASK = C.RTAX_GENMASK - sysRTAX_IFP = C.RTAX_IFP - sysRTAX_IFA = C.RTAX_IFA - sysRTAX_AUTHOR = C.RTAX_AUTHOR - sysRTAX_BRD = C.RTAX_BRD - sysRTAX_MAX = C.RTAX_MAX -) - -const ( - sizeofIfMsghdrDarwin15 = C.sizeof_struct_if_msghdr - sizeofIfaMsghdrDarwin15 = C.sizeof_struct_ifa_msghdr - sizeofIfmaMsghdrDarwin15 = C.sizeof_struct_ifma_msghdr - sizeofIfMsghdr2Darwin15 = C.sizeof_struct_if_msghdr2 - sizeofIfmaMsghdr2Darwin15 = C.sizeof_struct_ifma_msghdr2 - sizeofIfDataDarwin15 = C.sizeof_struct_if_data - sizeofIfData64Darwin15 = C.sizeof_struct_if_data64 - - sizeofRtMsghdrDarwin15 = C.sizeof_struct_rt_msghdr - sizeofRtMsghdr2Darwin15 = C.sizeof_struct_rt_msghdr2 - sizeofRtMetricsDarwin15 = C.sizeof_struct_rt_metrics - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/route/defs_dragonfly.go b/vendor/golang.org/x/net/route/defs_dragonfly.go deleted file mode 100644 index dd31de26..00000000 --- a/vendor/golang.org/x/net/route/defs_dragonfly.go +++ /dev/null @@ -1,113 +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. - -// +build ignore - -package route - -/* -#include <sys/socket.h> -#include <sys/sysctl.h> - -#include <net/if.h> -#include <net/if_dl.h> -#include <net/route.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_ROUTE = C.AF_ROUTE - sysAF_LINK = C.AF_LINK - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW - - sysNET_RT_DUMP = C.NET_RT_DUMP - sysNET_RT_FLAGS = C.NET_RT_FLAGS - sysNET_RT_IFLIST = C.NET_RT_IFLIST - sysNET_RT_MAXID = C.NET_RT_MAXID -) - -const ( - sysCTL_MAXNAME = C.CTL_MAXNAME - - sysCTL_UNSPEC = C.CTL_UNSPEC - sysCTL_KERN = C.CTL_KERN - sysCTL_VM = C.CTL_VM - sysCTL_VFS = C.CTL_VFS - sysCTL_NET = C.CTL_NET - sysCTL_DEBUG = C.CTL_DEBUG - sysCTL_HW = C.CTL_HW - sysCTL_MACHDEP = C.CTL_MACHDEP - sysCTL_USER = C.CTL_USER - sysCTL_P1003_1B = C.CTL_P1003_1B - sysCTL_LWKT = C.CTL_LWKT - sysCTL_MAXID = C.CTL_MAXID -) - -const ( - sysRTM_VERSION = C.RTM_VERSION - - sysRTM_ADD = C.RTM_ADD - sysRTM_DELETE = C.RTM_DELETE - sysRTM_CHANGE = C.RTM_CHANGE - sysRTM_GET = C.RTM_GET - sysRTM_LOSING = C.RTM_LOSING - sysRTM_REDIRECT = C.RTM_REDIRECT - sysRTM_MISS = C.RTM_MISS - sysRTM_LOCK = C.RTM_LOCK - sysRTM_OLDADD = C.RTM_OLDADD - sysRTM_OLDDEL = C.RTM_OLDDEL - sysRTM_RESOLVE = C.RTM_RESOLVE - sysRTM_NEWADDR = C.RTM_NEWADDR - sysRTM_DELADDR = C.RTM_DELADDR - sysRTM_IFINFO = C.RTM_IFINFO - sysRTM_NEWMADDR = C.RTM_NEWMADDR - sysRTM_DELMADDR = C.RTM_DELMADDR - sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE - sysRTM_IEEE80211 = C.RTM_IEEE80211 - - sysRTA_DST = C.RTA_DST - sysRTA_GATEWAY = C.RTA_GATEWAY - sysRTA_NETMASK = C.RTA_NETMASK - sysRTA_GENMASK = C.RTA_GENMASK - sysRTA_IFP = C.RTA_IFP - sysRTA_IFA = C.RTA_IFA - sysRTA_AUTHOR = C.RTA_AUTHOR - sysRTA_BRD = C.RTA_BRD - sysRTA_MPLS1 = C.RTA_MPLS1 - sysRTA_MPLS2 = C.RTA_MPLS2 - sysRTA_MPLS3 = C.RTA_MPLS3 - - sysRTAX_DST = C.RTAX_DST - sysRTAX_GATEWAY = C.RTAX_GATEWAY - sysRTAX_NETMASK = C.RTAX_NETMASK - sysRTAX_GENMASK = C.RTAX_GENMASK - sysRTAX_IFP = C.RTAX_IFP - sysRTAX_IFA = C.RTAX_IFA - sysRTAX_AUTHOR = C.RTAX_AUTHOR - sysRTAX_BRD = C.RTAX_BRD - sysRTAX_MPLS1 = C.RTAX_MPLS1 - sysRTAX_MPLS2 = C.RTAX_MPLS2 - sysRTAX_MPLS3 = C.RTAX_MPLS3 - sysRTAX_MAX = C.RTAX_MAX -) - -const ( - sizeofIfMsghdrDragonFlyBSD4 = C.sizeof_struct_if_msghdr - sizeofIfaMsghdrDragonFlyBSD4 = C.sizeof_struct_ifa_msghdr - sizeofIfmaMsghdrDragonFlyBSD4 = C.sizeof_struct_ifma_msghdr - sizeofIfAnnouncemsghdrDragonFlyBSD4 = C.sizeof_struct_if_announcemsghdr - - sizeofRtMsghdrDragonFlyBSD4 = C.sizeof_struct_rt_msghdr - sizeofRtMetricsDragonFlyBSD4 = C.sizeof_struct_rt_metrics - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/route/defs_freebsd.go b/vendor/golang.org/x/net/route/defs_freebsd.go deleted file mode 100644 index d95594d8..00000000 --- a/vendor/golang.org/x/net/route/defs_freebsd.go +++ /dev/null @@ -1,337 +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. - -// +build ignore - -package route - -/* -#include <sys/socket.h> -#include <sys/sysctl.h> - -#include <net/if.h> -#include <net/if_dl.h> -#include <net/route.h> - -#include <netinet/in.h> - -struct if_data_freebsd7 { - u_char ifi_type; - u_char ifi_physical; - u_char ifi_addrlen; - u_char ifi_hdrlen; - u_char ifi_link_state; - u_char ifi_spare_char1; - u_char ifi_spare_char2; - u_char ifi_datalen; - u_long ifi_mtu; - u_long ifi_metric; - u_long ifi_baudrate; - u_long ifi_ipackets; - u_long ifi_ierrors; - u_long ifi_opackets; - u_long ifi_oerrors; - u_long ifi_collisions; - u_long ifi_ibytes; - u_long ifi_obytes; - u_long ifi_imcasts; - u_long ifi_omcasts; - u_long ifi_iqdrops; - u_long ifi_noproto; - u_long ifi_hwassist; - time_t __ifi_epoch; - struct timeval __ifi_lastchange; -}; - -struct if_data_freebsd8 { - u_char ifi_type; - u_char ifi_physical; - u_char ifi_addrlen; - u_char ifi_hdrlen; - u_char ifi_link_state; - u_char ifi_spare_char1; - u_char ifi_spare_char2; - u_char ifi_datalen; - u_long ifi_mtu; - u_long ifi_metric; - u_long ifi_baudrate; - u_long ifi_ipackets; - u_long ifi_ierrors; - u_long ifi_opackets; - u_long ifi_oerrors; - u_long ifi_collisions; - u_long ifi_ibytes; - u_long ifi_obytes; - u_long ifi_imcasts; - u_long ifi_omcasts; - u_long ifi_iqdrops; - u_long ifi_noproto; - u_long ifi_hwassist; - time_t __ifi_epoch; - struct timeval __ifi_lastchange; -}; - -struct if_data_freebsd9 { - u_char ifi_type; - u_char ifi_physical; - u_char ifi_addrlen; - u_char ifi_hdrlen; - u_char ifi_link_state; - u_char ifi_spare_char1; - u_char ifi_spare_char2; - u_char ifi_datalen; - u_long ifi_mtu; - u_long ifi_metric; - u_long ifi_baudrate; - u_long ifi_ipackets; - u_long ifi_ierrors; - u_long ifi_opackets; - u_long ifi_oerrors; - u_long ifi_collisions; - u_long ifi_ibytes; - u_long ifi_obytes; - u_long ifi_imcasts; - u_long ifi_omcasts; - u_long ifi_iqdrops; - u_long ifi_noproto; - u_long ifi_hwassist; - time_t __ifi_epoch; - struct timeval __ifi_lastchange; -}; - -struct if_data_freebsd10 { - u_char ifi_type; - u_char ifi_physical; - u_char ifi_addrlen; - u_char ifi_hdrlen; - u_char ifi_link_state; - u_char ifi_vhid; - u_char ifi_baudrate_pf; - u_char ifi_datalen; - u_long ifi_mtu; - u_long ifi_metric; - u_long ifi_baudrate; - u_long ifi_ipackets; - u_long ifi_ierrors; - u_long ifi_opackets; - u_long ifi_oerrors; - u_long ifi_collisions; - u_long ifi_ibytes; - u_long ifi_obytes; - u_long ifi_imcasts; - u_long ifi_omcasts; - u_long ifi_iqdrops; - u_long ifi_noproto; - uint64_t ifi_hwassist; - time_t __ifi_epoch; - struct timeval __ifi_lastchange; -}; - -struct if_data_freebsd11 { - uint8_t ifi_type; - uint8_t ifi_physical; - uint8_t ifi_addrlen; - uint8_t ifi_hdrlen; - uint8_t ifi_link_state; - uint8_t ifi_vhid; - uint16_t ifi_datalen; - uint32_t ifi_mtu; - uint32_t ifi_metric; - uint64_t ifi_baudrate; - uint64_t ifi_ipackets; - uint64_t ifi_ierrors; - uint64_t ifi_opackets; - uint64_t ifi_oerrors; - uint64_t ifi_collisions; - uint64_t ifi_ibytes; - uint64_t ifi_obytes; - uint64_t ifi_imcasts; - uint64_t ifi_omcasts; - uint64_t ifi_iqdrops; - uint64_t ifi_oqdrops; - uint64_t ifi_noproto; - uint64_t ifi_hwassist; - union { - time_t tt; - uint64_t ph; - } __ifi_epoch; - union { - struct timeval tv; - struct { - uint64_t ph1; - uint64_t ph2; - } ph; - } __ifi_lastchange; -}; - -struct if_msghdr_freebsd7 { - u_short ifm_msglen; - u_char ifm_version; - u_char ifm_type; - int ifm_addrs; - int ifm_flags; - u_short ifm_index; - struct if_data_freebsd7 ifm_data; -}; - -struct if_msghdr_freebsd8 { - u_short ifm_msglen; - u_char ifm_version; - u_char ifm_type; - int ifm_addrs; - int ifm_flags; - u_short ifm_index; - struct if_data_freebsd8 ifm_data; -}; - -struct if_msghdr_freebsd9 { - u_short ifm_msglen; - u_char ifm_version; - u_char ifm_type; - int ifm_addrs; - int ifm_flags; - u_short ifm_index; - struct if_data_freebsd9 ifm_data; -}; - -struct if_msghdr_freebsd10 { - u_short ifm_msglen; - u_char ifm_version; - u_char ifm_type; - int ifm_addrs; - int ifm_flags; - u_short ifm_index; - struct if_data_freebsd10 ifm_data; -}; - -struct if_msghdr_freebsd11 { - u_short ifm_msglen; - u_char ifm_version; - u_char ifm_type; - int ifm_addrs; - int ifm_flags; - u_short ifm_index; - struct if_data_freebsd11 ifm_data; -}; -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_ROUTE = C.AF_ROUTE - sysAF_LINK = C.AF_LINK - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW - - sysNET_RT_DUMP = C.NET_RT_DUMP - sysNET_RT_FLAGS = C.NET_RT_FLAGS - sysNET_RT_IFLIST = C.NET_RT_IFLIST - sysNET_RT_IFMALIST = C.NET_RT_IFMALIST - sysNET_RT_IFLISTL = C.NET_RT_IFLISTL -) - -const ( - sysCTL_MAXNAME = C.CTL_MAXNAME - - sysCTL_UNSPEC = C.CTL_UNSPEC - sysCTL_KERN = C.CTL_KERN - sysCTL_VM = C.CTL_VM - sysCTL_VFS = C.CTL_VFS - sysCTL_NET = C.CTL_NET - sysCTL_DEBUG = C.CTL_DEBUG - sysCTL_HW = C.CTL_HW - sysCTL_MACHDEP = C.CTL_MACHDEP - sysCTL_USER = C.CTL_USER - sysCTL_P1003_1B = C.CTL_P1003_1B -) - -const ( - sysRTM_VERSION = C.RTM_VERSION - - sysRTM_ADD = C.RTM_ADD - sysRTM_DELETE = C.RTM_DELETE - sysRTM_CHANGE = C.RTM_CHANGE - sysRTM_GET = C.RTM_GET - sysRTM_LOSING = C.RTM_LOSING - sysRTM_REDIRECT = C.RTM_REDIRECT - sysRTM_MISS = C.RTM_MISS - sysRTM_LOCK = C.RTM_LOCK - sysRTM_RESOLVE = C.RTM_RESOLVE - sysRTM_NEWADDR = C.RTM_NEWADDR - sysRTM_DELADDR = C.RTM_DELADDR - sysRTM_IFINFO = C.RTM_IFINFO - sysRTM_NEWMADDR = C.RTM_NEWMADDR - sysRTM_DELMADDR = C.RTM_DELMADDR - sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE - sysRTM_IEEE80211 = C.RTM_IEEE80211 - - sysRTA_DST = C.RTA_DST - sysRTA_GATEWAY = C.RTA_GATEWAY - sysRTA_NETMASK = C.RTA_NETMASK - sysRTA_GENMASK = C.RTA_GENMASK - sysRTA_IFP = C.RTA_IFP - sysRTA_IFA = C.RTA_IFA - sysRTA_AUTHOR = C.RTA_AUTHOR - sysRTA_BRD = C.RTA_BRD - - sysRTAX_DST = C.RTAX_DST - sysRTAX_GATEWAY = C.RTAX_GATEWAY - sysRTAX_NETMASK = C.RTAX_NETMASK - sysRTAX_GENMASK = C.RTAX_GENMASK - sysRTAX_IFP = C.RTAX_IFP - sysRTAX_IFA = C.RTAX_IFA - sysRTAX_AUTHOR = C.RTAX_AUTHOR - sysRTAX_BRD = C.RTAX_BRD - sysRTAX_MAX = C.RTAX_MAX -) - -const ( - sizeofIfMsghdrlFreeBSD10 = C.sizeof_struct_if_msghdrl - sizeofIfaMsghdrFreeBSD10 = C.sizeof_struct_ifa_msghdr - sizeofIfaMsghdrlFreeBSD10 = C.sizeof_struct_ifa_msghdrl - sizeofIfmaMsghdrFreeBSD10 = C.sizeof_struct_ifma_msghdr - sizeofIfAnnouncemsghdrFreeBSD10 = C.sizeof_struct_if_announcemsghdr - - sizeofRtMsghdrFreeBSD10 = C.sizeof_struct_rt_msghdr - sizeofRtMetricsFreeBSD10 = C.sizeof_struct_rt_metrics - - sizeofIfMsghdrFreeBSD7 = C.sizeof_struct_if_msghdr_freebsd7 - sizeofIfMsghdrFreeBSD8 = C.sizeof_struct_if_msghdr_freebsd8 - sizeofIfMsghdrFreeBSD9 = C.sizeof_struct_if_msghdr_freebsd9 - sizeofIfMsghdrFreeBSD10 = C.sizeof_struct_if_msghdr_freebsd10 - sizeofIfMsghdrFreeBSD11 = C.sizeof_struct_if_msghdr_freebsd11 - - sizeofIfDataFreeBSD7 = C.sizeof_struct_if_data_freebsd7 - sizeofIfDataFreeBSD8 = C.sizeof_struct_if_data_freebsd8 - sizeofIfDataFreeBSD9 = C.sizeof_struct_if_data_freebsd9 - sizeofIfDataFreeBSD10 = C.sizeof_struct_if_data_freebsd10 - sizeofIfDataFreeBSD11 = C.sizeof_struct_if_data_freebsd11 - - sizeofIfMsghdrlFreeBSD10Emu = C.sizeof_struct_if_msghdrl - sizeofIfaMsghdrFreeBSD10Emu = C.sizeof_struct_ifa_msghdr - sizeofIfaMsghdrlFreeBSD10Emu = C.sizeof_struct_ifa_msghdrl - sizeofIfmaMsghdrFreeBSD10Emu = C.sizeof_struct_ifma_msghdr - sizeofIfAnnouncemsghdrFreeBSD10Emu = C.sizeof_struct_if_announcemsghdr - - sizeofRtMsghdrFreeBSD10Emu = C.sizeof_struct_rt_msghdr - sizeofRtMetricsFreeBSD10Emu = C.sizeof_struct_rt_metrics - - sizeofIfMsghdrFreeBSD7Emu = C.sizeof_struct_if_msghdr_freebsd7 - sizeofIfMsghdrFreeBSD8Emu = C.sizeof_struct_if_msghdr_freebsd8 - sizeofIfMsghdrFreeBSD9Emu = C.sizeof_struct_if_msghdr_freebsd9 - sizeofIfMsghdrFreeBSD10Emu = C.sizeof_struct_if_msghdr_freebsd10 - sizeofIfMsghdrFreeBSD11Emu = C.sizeof_struct_if_msghdr_freebsd11 - - sizeofIfDataFreeBSD7Emu = C.sizeof_struct_if_data_freebsd7 - sizeofIfDataFreeBSD8Emu = C.sizeof_struct_if_data_freebsd8 - sizeofIfDataFreeBSD9Emu = C.sizeof_struct_if_data_freebsd9 - sizeofIfDataFreeBSD10Emu = C.sizeof_struct_if_data_freebsd10 - sizeofIfDataFreeBSD11Emu = C.sizeof_struct_if_data_freebsd11 - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/route/defs_netbsd.go b/vendor/golang.org/x/net/route/defs_netbsd.go deleted file mode 100644 index b0abd549..00000000 --- a/vendor/golang.org/x/net/route/defs_netbsd.go +++ /dev/null @@ -1,112 +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. - -// +build ignore - -package route - -/* -#include <sys/socket.h> -#include <sys/sysctl.h> - -#include <net/if.h> -#include <net/if_dl.h> -#include <net/route.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_ROUTE = C.AF_ROUTE - sysAF_LINK = C.AF_LINK - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW - - sysNET_RT_DUMP = C.NET_RT_DUMP - sysNET_RT_FLAGS = C.NET_RT_FLAGS - sysNET_RT_IFLIST = C.NET_RT_IFLIST - sysNET_RT_MAXID = C.NET_RT_MAXID -) - -const ( - sysCTL_MAXNAME = C.CTL_MAXNAME - - sysCTL_UNSPEC = C.CTL_UNSPEC - sysCTL_KERN = C.CTL_KERN - sysCTL_VM = C.CTL_VM - sysCTL_VFS = C.CTL_VFS - sysCTL_NET = C.CTL_NET - sysCTL_DEBUG = C.CTL_DEBUG - sysCTL_HW = C.CTL_HW - sysCTL_MACHDEP = C.CTL_MACHDEP - sysCTL_USER = C.CTL_USER - sysCTL_DDB = C.CTL_DDB - sysCTL_PROC = C.CTL_PROC - sysCTL_VENDOR = C.CTL_VENDOR - sysCTL_EMUL = C.CTL_EMUL - sysCTL_SECURITY = C.CTL_SECURITY - sysCTL_MAXID = C.CTL_MAXID -) - -const ( - sysRTM_VERSION = C.RTM_VERSION - - sysRTM_ADD = C.RTM_ADD - sysRTM_DELETE = C.RTM_DELETE - sysRTM_CHANGE = C.RTM_CHANGE - sysRTM_GET = C.RTM_GET - sysRTM_LOSING = C.RTM_LOSING - sysRTM_REDIRECT = C.RTM_REDIRECT - sysRTM_MISS = C.RTM_MISS - sysRTM_LOCK = C.RTM_LOCK - sysRTM_OLDADD = C.RTM_OLDADD - sysRTM_OLDDEL = C.RTM_OLDDEL - sysRTM_RESOLVE = C.RTM_RESOLVE - sysRTM_NEWADDR = C.RTM_NEWADDR - sysRTM_DELADDR = C.RTM_DELADDR - sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE - sysRTM_IEEE80211 = C.RTM_IEEE80211 - sysRTM_SETGATE = C.RTM_SETGATE - sysRTM_LLINFO_UPD = C.RTM_LLINFO_UPD - sysRTM_IFINFO = C.RTM_IFINFO - sysRTM_CHGADDR = C.RTM_CHGADDR - - sysRTA_DST = C.RTA_DST - sysRTA_GATEWAY = C.RTA_GATEWAY - sysRTA_NETMASK = C.RTA_NETMASK - sysRTA_GENMASK = C.RTA_GENMASK - sysRTA_IFP = C.RTA_IFP - sysRTA_IFA = C.RTA_IFA - sysRTA_AUTHOR = C.RTA_AUTHOR - sysRTA_BRD = C.RTA_BRD - sysRTA_TAG = C.RTA_TAG - - sysRTAX_DST = C.RTAX_DST - sysRTAX_GATEWAY = C.RTAX_GATEWAY - sysRTAX_NETMASK = C.RTAX_NETMASK - sysRTAX_GENMASK = C.RTAX_GENMASK - sysRTAX_IFP = C.RTAX_IFP - sysRTAX_IFA = C.RTAX_IFA - sysRTAX_AUTHOR = C.RTAX_AUTHOR - sysRTAX_BRD = C.RTAX_BRD - sysRTAX_TAG = C.RTAX_TAG - sysRTAX_MAX = C.RTAX_MAX -) - -const ( - sizeofIfMsghdrNetBSD7 = C.sizeof_struct_if_msghdr - sizeofIfaMsghdrNetBSD7 = C.sizeof_struct_ifa_msghdr - sizeofIfAnnouncemsghdrNetBSD7 = C.sizeof_struct_if_announcemsghdr - - sizeofRtMsghdrNetBSD7 = C.sizeof_struct_rt_msghdr - sizeofRtMetricsNetBSD7 = C.sizeof_struct_rt_metrics - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/route/defs_openbsd.go b/vendor/golang.org/x/net/route/defs_openbsd.go deleted file mode 100644 index 173bb5d5..00000000 --- a/vendor/golang.org/x/net/route/defs_openbsd.go +++ /dev/null @@ -1,116 +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. - -// +build ignore - -package route - -/* -#include <sys/socket.h> -#include <sys/sysctl.h> - -#include <net/if.h> -#include <net/if_dl.h> -#include <net/route.h> - -#include <netinet/in.h> -*/ -import "C" - -const ( - sysAF_UNSPEC = C.AF_UNSPEC - sysAF_INET = C.AF_INET - sysAF_ROUTE = C.AF_ROUTE - sysAF_LINK = C.AF_LINK - sysAF_INET6 = C.AF_INET6 - - sysSOCK_RAW = C.SOCK_RAW - - sysNET_RT_DUMP = C.NET_RT_DUMP - sysNET_RT_FLAGS = C.NET_RT_FLAGS - sysNET_RT_IFLIST = C.NET_RT_IFLIST - sysNET_RT_STATS = C.NET_RT_STATS - sysNET_RT_TABLE = C.NET_RT_TABLE - sysNET_RT_IFNAMES = C.NET_RT_IFNAMES - sysNET_RT_MAXID = C.NET_RT_MAXID -) - -const ( - sysCTL_MAXNAME = C.CTL_MAXNAME - - sysCTL_UNSPEC = C.CTL_UNSPEC - sysCTL_KERN = C.CTL_KERN - sysCTL_VM = C.CTL_VM - sysCTL_FS = C.CTL_FS - sysCTL_NET = C.CTL_NET - sysCTL_DEBUG = C.CTL_DEBUG - sysCTL_HW = C.CTL_HW - sysCTL_MACHDEP = C.CTL_MACHDEP - sysCTL_DDB = C.CTL_DDB - sysCTL_VFS = C.CTL_VFS - sysCTL_MAXID = C.CTL_MAXID -) - -const ( - sysRTM_VERSION = C.RTM_VERSION - - sysRTM_ADD = C.RTM_ADD - sysRTM_DELETE = C.RTM_DELETE - sysRTM_CHANGE = C.RTM_CHANGE - sysRTM_GET = C.RTM_GET - sysRTM_LOSING = C.RTM_LOSING - sysRTM_REDIRECT = C.RTM_REDIRECT - sysRTM_MISS = C.RTM_MISS - sysRTM_LOCK = C.RTM_LOCK - sysRTM_RESOLVE = C.RTM_RESOLVE - sysRTM_NEWADDR = C.RTM_NEWADDR - sysRTM_DELADDR = C.RTM_DELADDR - sysRTM_IFINFO = C.RTM_IFINFO - sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE - sysRTM_DESYNC = C.RTM_DESYNC - sysRTM_INVALIDATE = C.RTM_INVALIDATE - sysRTM_BFD = C.RTM_BFD - sysRTM_PROPOSAL = C.RTM_PROPOSAL - - sysRTA_DST = C.RTA_DST - sysRTA_GATEWAY = C.RTA_GATEWAY - sysRTA_NETMASK = C.RTA_NETMASK - sysRTA_GENMASK = C.RTA_GENMASK - sysRTA_IFP = C.RTA_IFP - sysRTA_IFA = C.RTA_IFA - sysRTA_AUTHOR = C.RTA_AUTHOR - sysRTA_BRD = C.RTA_BRD - sysRTA_SRC = C.RTA_SRC - sysRTA_SRCMASK = C.RTA_SRCMASK - sysRTA_LABEL = C.RTA_LABEL - sysRTA_BFD = C.RTA_BFD - sysRTA_DNS = C.RTA_DNS - sysRTA_STATIC = C.RTA_STATIC - sysRTA_SEARCH = C.RTA_SEARCH - - sysRTAX_DST = C.RTAX_DST - sysRTAX_GATEWAY = C.RTAX_GATEWAY - sysRTAX_NETMASK = C.RTAX_NETMASK - sysRTAX_GENMASK = C.RTAX_GENMASK - sysRTAX_IFP = C.RTAX_IFP - sysRTAX_IFA = C.RTAX_IFA - sysRTAX_AUTHOR = C.RTAX_AUTHOR - sysRTAX_BRD = C.RTAX_BRD - sysRTAX_SRC = C.RTAX_SRC - sysRTAX_SRCMASK = C.RTAX_SRCMASK - sysRTAX_LABEL = C.RTAX_LABEL - sysRTAX_BFD = C.RTAX_BFD - sysRTAX_DNS = C.RTAX_DNS - sysRTAX_STATIC = C.RTAX_STATIC - sysRTAX_SEARCH = C.RTAX_SEARCH - sysRTAX_MAX = C.RTAX_MAX -) - -const ( - sizeofRtMsghdr = C.sizeof_struct_rt_msghdr - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/route/interface.go b/vendor/golang.org/x/net/route/interface.go deleted file mode 100644 index 854906d9..00000000 --- a/vendor/golang.org/x/net/route/interface.go +++ /dev/null @@ -1,64 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -// An InterfaceMessage represents an interface message. -type InterfaceMessage struct { - Version int // message version - Type int // message type - Flags int // interface flags - Index int // interface index - Name string // interface name - Addrs []Addr // addresses - - extOff int // offset of header extension - raw []byte // raw message -} - -// An InterfaceAddrMessage represents an interface address message. -type InterfaceAddrMessage struct { - Version int // message version - Type int // message type - Flags int // interface flags - Index int // interface index - Addrs []Addr // addresses - - raw []byte // raw message -} - -// Sys implements the Sys method of Message interface. -func (m *InterfaceAddrMessage) Sys() []Sys { return nil } - -// An InterfaceMulticastAddrMessage represents an interface multicast -// address message. -type InterfaceMulticastAddrMessage struct { - Version int // message version - Type int // messsage type - Flags int // interface flags - Index int // interface index - Addrs []Addr // addresses - - raw []byte // raw message -} - -// Sys implements the Sys method of Message interface. -func (m *InterfaceMulticastAddrMessage) Sys() []Sys { return nil } - -// An InterfaceAnnounceMessage represents an interface announcement -// message. -type InterfaceAnnounceMessage struct { - Version int // message version - Type int // message type - Index int // interface index - Name string // interface name - What int // what type of announcement - - raw []byte // raw message -} - -// Sys implements the Sys method of Message interface. -func (m *InterfaceAnnounceMessage) Sys() []Sys { return nil } diff --git a/vendor/golang.org/x/net/route/interface_announce.go b/vendor/golang.org/x/net/route/interface_announce.go deleted file mode 100644 index 520d657b..00000000 --- a/vendor/golang.org/x/net/route/interface_announce.go +++ /dev/null @@ -1,32 +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. - -// +build dragonfly freebsd netbsd - -package route - -func (w *wireFormat) parseInterfaceAnnounceMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < w.bodyOff { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - m := &InterfaceAnnounceMessage{ - Version: int(b[2]), - Type: int(b[3]), - Index: int(nativeEndian.Uint16(b[4:6])), - What: int(nativeEndian.Uint16(b[22:24])), - raw: b[:l], - } - for i := 0; i < 16; i++ { - if b[6+i] != 0 { - continue - } - m.Name = string(b[6 : 6+i]) - break - } - return m, nil -} diff --git a/vendor/golang.org/x/net/route/interface_classic.go b/vendor/golang.org/x/net/route/interface_classic.go deleted file mode 100644 index ac4e7a68..00000000 --- a/vendor/golang.org/x/net/route/interface_classic.go +++ /dev/null @@ -1,66 +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. - -// +build darwin dragonfly netbsd - -package route - -import "runtime" - -func (w *wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < w.bodyOff { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - attrs := uint(nativeEndian.Uint32(b[4:8])) - if attrs&sysRTA_IFP == 0 { - return nil, nil - } - m := &InterfaceMessage{ - Version: int(b[2]), - Type: int(b[3]), - Addrs: make([]Addr, sysRTAX_MAX), - Flags: int(nativeEndian.Uint32(b[8:12])), - Index: int(nativeEndian.Uint16(b[12:14])), - extOff: w.extOff, - raw: b[:l], - } - a, err := parseLinkAddr(b[w.bodyOff:]) - if err != nil { - return nil, err - } - m.Addrs[sysRTAX_IFP] = a - m.Name = a.(*LinkAddr).Name - return m, nil -} - -func (w *wireFormat) parseInterfaceAddrMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < w.bodyOff { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - m := &InterfaceAddrMessage{ - Version: int(b[2]), - Type: int(b[3]), - Flags: int(nativeEndian.Uint32(b[8:12])), - raw: b[:l], - } - if runtime.GOOS == "netbsd" { - m.Index = int(nativeEndian.Uint16(b[16:18])) - } else { - m.Index = int(nativeEndian.Uint16(b[12:14])) - } - var err error - m.Addrs, err = parseAddrs(uint(nativeEndian.Uint32(b[4:8])), parseKernelInetAddr, b[w.bodyOff:]) - if err != nil { - return nil, err - } - return m, nil -} diff --git a/vendor/golang.org/x/net/route/interface_freebsd.go b/vendor/golang.org/x/net/route/interface_freebsd.go deleted file mode 100644 index 9f6f50c0..00000000 --- a/vendor/golang.org/x/net/route/interface_freebsd.go +++ /dev/null @@ -1,78 +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 route - -func (w *wireFormat) parseInterfaceMessage(typ RIBType, b []byte) (Message, error) { - var extOff, bodyOff int - if typ == sysNET_RT_IFLISTL { - if len(b) < 20 { - return nil, errMessageTooShort - } - extOff = int(nativeEndian.Uint16(b[18:20])) - bodyOff = int(nativeEndian.Uint16(b[16:18])) - } else { - extOff = w.extOff - bodyOff = w.bodyOff - } - if len(b) < extOff || len(b) < bodyOff { - return nil, errInvalidMessage - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - attrs := uint(nativeEndian.Uint32(b[4:8])) - if attrs&sysRTA_IFP == 0 { - return nil, nil - } - m := &InterfaceMessage{ - Version: int(b[2]), - Type: int(b[3]), - Flags: int(nativeEndian.Uint32(b[8:12])), - Index: int(nativeEndian.Uint16(b[12:14])), - Addrs: make([]Addr, sysRTAX_MAX), - extOff: extOff, - raw: b[:l], - } - a, err := parseLinkAddr(b[bodyOff:]) - if err != nil { - return nil, err - } - m.Addrs[sysRTAX_IFP] = a - m.Name = a.(*LinkAddr).Name - return m, nil -} - -func (w *wireFormat) parseInterfaceAddrMessage(typ RIBType, b []byte) (Message, error) { - var bodyOff int - if typ == sysNET_RT_IFLISTL { - if len(b) < 24 { - return nil, errMessageTooShort - } - bodyOff = int(nativeEndian.Uint16(b[16:18])) - } else { - bodyOff = w.bodyOff - } - if len(b) < bodyOff { - return nil, errInvalidMessage - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - m := &InterfaceAddrMessage{ - Version: int(b[2]), - Type: int(b[3]), - Flags: int(nativeEndian.Uint32(b[8:12])), - Index: int(nativeEndian.Uint16(b[12:14])), - raw: b[:l], - } - var err error - m.Addrs, err = parseAddrs(uint(nativeEndian.Uint32(b[4:8])), parseKernelInetAddr, b[bodyOff:]) - if err != nil { - return nil, err - } - return m, nil -} diff --git a/vendor/golang.org/x/net/route/interface_multicast.go b/vendor/golang.org/x/net/route/interface_multicast.go deleted file mode 100644 index 1e99a9cc..00000000 --- a/vendor/golang.org/x/net/route/interface_multicast.go +++ /dev/null @@ -1,30 +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. - -// +build darwin dragonfly freebsd - -package route - -func (w *wireFormat) parseInterfaceMulticastAddrMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < w.bodyOff { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - m := &InterfaceMulticastAddrMessage{ - Version: int(b[2]), - Type: int(b[3]), - Flags: int(nativeEndian.Uint32(b[8:12])), - Index: int(nativeEndian.Uint16(b[12:14])), - raw: b[:l], - } - var err error - m.Addrs, err = parseAddrs(uint(nativeEndian.Uint32(b[4:8])), parseKernelInetAddr, b[w.bodyOff:]) - if err != nil { - return nil, err - } - return m, nil -} diff --git a/vendor/golang.org/x/net/route/interface_openbsd.go b/vendor/golang.org/x/net/route/interface_openbsd.go deleted file mode 100644 index e4a143c1..00000000 --- a/vendor/golang.org/x/net/route/interface_openbsd.go +++ /dev/null @@ -1,90 +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 route - -func (*wireFormat) parseInterfaceMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < 32 { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - attrs := uint(nativeEndian.Uint32(b[12:16])) - if attrs&sysRTA_IFP == 0 { - return nil, nil - } - m := &InterfaceMessage{ - Version: int(b[2]), - Type: int(b[3]), - Flags: int(nativeEndian.Uint32(b[16:20])), - Index: int(nativeEndian.Uint16(b[6:8])), - Addrs: make([]Addr, sysRTAX_MAX), - raw: b[:l], - } - ll := int(nativeEndian.Uint16(b[4:6])) - if len(b) < ll { - return nil, errInvalidMessage - } - a, err := parseLinkAddr(b[ll:]) - if err != nil { - return nil, err - } - m.Addrs[sysRTAX_IFP] = a - m.Name = a.(*LinkAddr).Name - return m, nil -} - -func (*wireFormat) parseInterfaceAddrMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < 24 { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - bodyOff := int(nativeEndian.Uint16(b[4:6])) - if len(b) < bodyOff { - return nil, errInvalidMessage - } - m := &InterfaceAddrMessage{ - Version: int(b[2]), - Type: int(b[3]), - Flags: int(nativeEndian.Uint32(b[12:16])), - Index: int(nativeEndian.Uint16(b[6:8])), - raw: b[:l], - } - var err error - m.Addrs, err = parseAddrs(uint(nativeEndian.Uint32(b[12:16])), parseKernelInetAddr, b[bodyOff:]) - if err != nil { - return nil, err - } - return m, nil -} - -func (*wireFormat) parseInterfaceAnnounceMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < 26 { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - m := &InterfaceAnnounceMessage{ - Version: int(b[2]), - Type: int(b[3]), - Index: int(nativeEndian.Uint16(b[6:8])), - What: int(nativeEndian.Uint16(b[8:10])), - raw: b[:l], - } - for i := 0; i < 16; i++ { - if b[10+i] != 0 { - continue - } - m.Name = string(b[10 : 10+i]) - break - } - return m, nil -} diff --git a/vendor/golang.org/x/net/route/message.go b/vendor/golang.org/x/net/route/message.go deleted file mode 100644 index 0fa7e09f..00000000 --- a/vendor/golang.org/x/net/route/message.go +++ /dev/null @@ -1,72 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -// A Message represents a routing message. -type Message interface { - // Sys returns operating system-specific information. - Sys() []Sys -} - -// A Sys reprensents operating system-specific information. -type Sys interface { - // SysType returns a type of operating system-specific - // information. - SysType() SysType -} - -// A SysType represents a type of operating system-specific -// information. -type SysType int - -const ( - SysMetrics SysType = iota - SysStats -) - -// ParseRIB parses b as a routing information base and returns a list -// of routing messages. -func ParseRIB(typ RIBType, b []byte) ([]Message, error) { - if !typ.parseable() { - return nil, errUnsupportedMessage - } - var msgs []Message - nmsgs, nskips := 0, 0 - for len(b) > 4 { - nmsgs++ - l := int(nativeEndian.Uint16(b[:2])) - if l == 0 { - return nil, errInvalidMessage - } - if len(b) < l { - return nil, errMessageTooShort - } - if b[2] != sysRTM_VERSION { - b = b[l:] - continue - } - if w, ok := wireFormats[int(b[3])]; !ok { - nskips++ - } else { - m, err := w.parse(typ, b) - if err != nil { - return nil, err - } - if m == nil { - nskips++ - } else { - msgs = append(msgs, m) - } - } - b = b[l:] - } - // We failed to parse any of the messages - version mismatch? - if nmsgs != len(msgs)+nskips { - return nil, errMessageMismatch - } - return msgs, nil -} diff --git a/vendor/golang.org/x/net/route/message_darwin_test.go b/vendor/golang.org/x/net/route/message_darwin_test.go deleted file mode 100644 index 316aa750..00000000 --- a/vendor/golang.org/x/net/route/message_darwin_test.go +++ /dev/null @@ -1,34 +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 route - -import "testing" - -func TestFetchAndParseRIBOnDarwin(t *testing.T) { - for _, typ := range []RIBType{sysNET_RT_FLAGS, sysNET_RT_DUMP2, sysNET_RT_IFLIST2} { - var lastErr error - var ms []Message - for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - rs, err := fetchAndParseRIB(af, typ) - if err != nil { - lastErr = err - continue - } - ms = append(ms, rs...) - } - if len(ms) == 0 && lastErr != nil { - t.Error(typ, lastErr) - continue - } - ss, err := msgs(ms).validate() - if err != nil { - t.Error(typ, err) - continue - } - for _, s := range ss { - t.Log(s) - } - } -} diff --git a/vendor/golang.org/x/net/route/message_freebsd_test.go b/vendor/golang.org/x/net/route/message_freebsd_test.go deleted file mode 100644 index db4b5675..00000000 --- a/vendor/golang.org/x/net/route/message_freebsd_test.go +++ /dev/null @@ -1,92 +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 route - -import ( - "testing" - "unsafe" -) - -func TestFetchAndParseRIBOnFreeBSD(t *testing.T) { - for _, typ := range []RIBType{sysNET_RT_IFMALIST} { - var lastErr error - var ms []Message - for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - rs, err := fetchAndParseRIB(af, typ) - if err != nil { - lastErr = err - continue - } - ms = append(ms, rs...) - } - if len(ms) == 0 && lastErr != nil { - t.Error(typ, lastErr) - continue - } - ss, err := msgs(ms).validate() - if err != nil { - t.Error(typ, err) - continue - } - for _, s := range ss { - t.Log(s) - } - } -} - -func TestFetchAndParseRIBOnFreeBSD10AndAbove(t *testing.T) { - if _, err := FetchRIB(sysAF_UNSPEC, sysNET_RT_IFLISTL, 0); err != nil { - t.Skip("NET_RT_IFLISTL not supported") - } - var p uintptr - if kernelAlign != int(unsafe.Sizeof(p)) { - t.Skip("NET_RT_IFLIST vs. NET_RT_IFLISTL doesn't work for 386 emulation on amd64") - } - - var tests = [2]struct { - typ RIBType - b []byte - msgs []Message - ss []string - }{ - {typ: sysNET_RT_IFLIST}, - {typ: sysNET_RT_IFLISTL}, - } - for i := range tests { - var lastErr error - for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - rs, err := fetchAndParseRIB(af, tests[i].typ) - if err != nil { - lastErr = err - continue - } - tests[i].msgs = append(tests[i].msgs, rs...) - } - if len(tests[i].msgs) == 0 && lastErr != nil { - t.Error(tests[i].typ, lastErr) - continue - } - tests[i].ss, lastErr = msgs(tests[i].msgs).validate() - if lastErr != nil { - t.Error(tests[i].typ, lastErr) - continue - } - for _, s := range tests[i].ss { - t.Log(s) - } - } - for i := len(tests) - 1; i > 0; i-- { - if len(tests[i].ss) != len(tests[i-1].ss) { - t.Errorf("got %v; want %v", tests[i].ss, tests[i-1].ss) - continue - } - for j, s1 := range tests[i].ss { - s0 := tests[i-1].ss[j] - if s1 != s0 { - t.Errorf("got %s; want %s", s1, s0) - } - } - } -} diff --git a/vendor/golang.org/x/net/route/message_test.go b/vendor/golang.org/x/net/route/message_test.go deleted file mode 100644 index e848dabf..00000000 --- a/vendor/golang.org/x/net/route/message_test.go +++ /dev/null @@ -1,239 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -import ( - "os" - "syscall" - "testing" - "time" -) - -func TestFetchAndParseRIB(t *testing.T) { - for _, typ := range []RIBType{sysNET_RT_DUMP, sysNET_RT_IFLIST} { - var lastErr error - var ms []Message - for _, af := range []int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} { - rs, err := fetchAndParseRIB(af, typ) - if err != nil { - lastErr = err - continue - } - ms = append(ms, rs...) - } - if len(ms) == 0 && lastErr != nil { - t.Error(typ, lastErr) - continue - } - ss, err := msgs(ms).validate() - if err != nil { - t.Error(typ, err) - continue - } - for _, s := range ss { - t.Log(typ, s) - } - } -} - -var ( - rtmonSock int - rtmonErr error -) - -func init() { - // We need to keep rtmonSock alive to avoid treading on - // recycled socket descriptors. - rtmonSock, rtmonErr = syscall.Socket(sysAF_ROUTE, sysSOCK_RAW, sysAF_UNSPEC) -} - -// TestMonitorAndParseRIB leaks a worker goroutine and a socket -// descriptor but that's intentional. -func TestMonitorAndParseRIB(t *testing.T) { - if testing.Short() || os.Getuid() != 0 { - t.Skip("must be root") - } - - if rtmonErr != nil { - t.Fatal(rtmonErr) - } - - // We suppose that using an IPv4 link-local address and the - // dot1Q ID for Token Ring and FDDI doesn't harm anyone. - pv := &propVirtual{addr: "169.254.0.1", mask: "255.255.255.0"} - if err := pv.configure(1002); err != nil { - t.Skip(err) - } - if err := pv.setup(); err != nil { - t.Skip(err) - } - pv.teardown() - - go func() { - b := make([]byte, os.Getpagesize()) - for { - // There's no easy way to unblock this read - // call because the routing message exchange - // over routing socket is a connectionless - // message-oriented protocol, no control plane - // for signaling connectivity, and we cannot - // use the net package of standard library due - // to the lack of support for routing socket - // and circular dependency. - n, err := syscall.Read(rtmonSock, b) - if err != nil { - return - } - ms, err := ParseRIB(0, b[:n]) - if err != nil { - t.Error(err) - return - } - ss, err := msgs(ms).validate() - if err != nil { - t.Error(err) - return - } - for _, s := range ss { - t.Log(s) - } - } - }() - - for _, vid := range []int{1002, 1003, 1004, 1005} { - pv := &propVirtual{addr: "169.254.0.1", mask: "255.255.255.0"} - if err := pv.configure(vid); err != nil { - t.Fatal(err) - } - if err := pv.setup(); err != nil { - t.Fatal(err) - } - time.Sleep(200 * time.Millisecond) - if err := pv.teardown(); err != nil { - t.Fatal(err) - } - time.Sleep(200 * time.Millisecond) - } -} - -func TestParseRIBWithFuzz(t *testing.T) { - for _, fuzz := range []string{ - "0\x00\x05\x050000000000000000" + - "00000000000000000000" + - "00000000000000000000" + - "00000000000000000000" + - "0000000000000\x02000000" + - "00000000", - "\x02\x00\x05\f0000000000000000" + - "0\x0200000000000000", - "\x02\x00\x05\x100000000000000\x1200" + - "0\x00\xff\x00", - "\x02\x00\x05\f0000000000000000" + - "0\x12000\x00\x02\x0000", - "\x00\x00\x00\x01\x00", - "00000", - } { - for typ := RIBType(0); typ < 256; typ++ { - ParseRIB(typ, []byte(fuzz)) - } - } -} - -func TestRouteMessage(t *testing.T) { - s, err := syscall.Socket(sysAF_ROUTE, sysSOCK_RAW, sysAF_UNSPEC) - if err != nil { - t.Fatal(err) - } - defer syscall.Close(s) - - var ms []RouteMessage - for _, af := range []int{sysAF_INET, sysAF_INET6} { - if _, err := fetchAndParseRIB(af, sysNET_RT_DUMP); err != nil { - t.Log(err) - continue - } - switch af { - case sysAF_INET: - ms = append(ms, []RouteMessage{ - { - Type: sysRTM_GET, - Addrs: []Addr{ - &Inet4Addr{IP: [4]byte{127, 0, 0, 1}}, - nil, - nil, - nil, - &LinkAddr{}, - &Inet4Addr{}, - nil, - &Inet4Addr{}, - }, - }, - { - Type: sysRTM_GET, - Addrs: []Addr{ - &Inet4Addr{IP: [4]byte{127, 0, 0, 1}}, - }, - }, - }...) - case sysAF_INET6: - ms = append(ms, []RouteMessage{ - { - Type: sysRTM_GET, - Addrs: []Addr{ - &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}}, - nil, - nil, - nil, - &LinkAddr{}, - &Inet6Addr{}, - nil, - &Inet6Addr{}, - }, - }, - { - Type: sysRTM_GET, - Addrs: []Addr{ - &Inet6Addr{IP: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}}, - }, - }, - }...) - } - } - for i, m := range ms { - m.ID = uintptr(os.Getpid()) - m.Seq = i + 1 - wb, err := m.Marshal() - if err != nil { - t.Fatalf("%v: %v", m, err) - } - if _, err := syscall.Write(s, wb); err != nil { - t.Fatalf("%v: %v", m, err) - } - rb := make([]byte, os.Getpagesize()) - n, err := syscall.Read(s, rb) - if err != nil { - t.Fatalf("%v: %v", m, err) - } - rms, err := ParseRIB(0, rb[:n]) - if err != nil { - t.Fatalf("%v: %v", m, err) - } - for _, rm := range rms { - err := rm.(*RouteMessage).Err - if err != nil { - t.Errorf("%v: %v", m, err) - } - } - ss, err := msgs(rms).validate() - if err != nil { - t.Fatalf("%v: %v", m, err) - } - for _, s := range ss { - t.Log(s) - } - } -} diff --git a/vendor/golang.org/x/net/route/route.go b/vendor/golang.org/x/net/route/route.go deleted file mode 100644 index 081da0d5..00000000 --- a/vendor/golang.org/x/net/route/route.go +++ /dev/null @@ -1,123 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -// Package route provides basic functions for the manipulation of -// packet routing facilities on BSD variants. -// -// The package supports any version of Darwin, any version of -// DragonFly BSD, FreeBSD 7 through 11, NetBSD 6 and above, and -// OpenBSD 5.6 and above. -package route - -import ( - "errors" - "os" - "syscall" -) - -var ( - errUnsupportedMessage = errors.New("unsupported message") - errMessageMismatch = errors.New("message mismatch") - errMessageTooShort = errors.New("message too short") - errInvalidMessage = errors.New("invalid message") - errInvalidAddr = errors.New("invalid address") - errShortBuffer = errors.New("short buffer") -) - -// A RouteMessage represents a message conveying an address prefix, a -// nexthop address and an output interface. -// -// Unlike other messages, this message can be used to query adjacency -// information for the given address prefix, to add a new route, and -// to delete or modify the existing route from the routing information -// base inside the kernel by writing and reading route messages on a -// routing socket. -// -// For the manipulation of routing information, the route message must -// contain appropriate fields that include: -// -// Version = <must be specified> -// Type = <must be specified> -// Flags = <must be specified> -// Index = <must be specified if necessary> -// ID = <must be specified> -// Seq = <must be specified> -// Addrs = <must be specified> -// -// The Type field specifies a type of manipulation, the Flags field -// specifies a class of target information and the Addrs field -// specifies target information like the following: -// -// route.RouteMessage{ -// Version: RTM_VERSION, -// Type: RTM_GET, -// Flags: RTF_UP | RTF_HOST, -// ID: uintptr(os.Getpid()), -// Seq: 1, -// Addrs: []route.Addrs{ -// RTAX_DST: &route.Inet4Addr{ ... }, -// RTAX_IFP: &route.LinkAddr{ ... }, -// RTAX_BRD: &route.Inet4Addr{ ... }, -// }, -// } -// -// The values for the above fields depend on the implementation of -// each operating system. -// -// The Err field on a response message contains an error value on the -// requested operation. If non-nil, the requested operation is failed. -type RouteMessage struct { - Version int // message version - Type int // message type - Flags int // route flags - Index int // interface index when atatched - ID uintptr // sender's identifier; usually process ID - Seq int // sequence number - Err error // error on requested operation - Addrs []Addr // addresses - - extOff int // offset of header extension - raw []byte // raw message -} - -// Marshal returns the binary encoding of m. -func (m *RouteMessage) Marshal() ([]byte, error) { - return m.marshal() -} - -// A RIBType reprensents a type of routing information base. -type RIBType int - -const ( - RIBTypeRoute RIBType = syscall.NET_RT_DUMP - RIBTypeInterface RIBType = syscall.NET_RT_IFLIST -) - -// FetchRIB fetches a routing information base from the operating -// system. -// -// The provided af must be an address family. -// -// The provided arg must be a RIBType-specific argument. -// When RIBType is related to routes, arg might be a set of route -// flags. When RIBType is related to network interfaces, arg might be -// an interface index or a set of interface flags. In most cases, zero -// means a wildcard. -func FetchRIB(af int, typ RIBType, arg int) ([]byte, error) { - mib := [6]int32{sysCTL_NET, sysAF_ROUTE, 0, int32(af), int32(typ), int32(arg)} - n := uintptr(0) - if err := sysctl(mib[:], nil, &n, nil, 0); err != nil { - return nil, os.NewSyscallError("sysctl", err) - } - if n == 0 { - return nil, nil - } - b := make([]byte, n) - if err := sysctl(mib[:], &b[0], &n, nil, 0); err != nil { - return nil, os.NewSyscallError("sysctl", err) - } - return b[:n], nil -} diff --git a/vendor/golang.org/x/net/route/route_classic.go b/vendor/golang.org/x/net/route/route_classic.go deleted file mode 100644 index 02fa6883..00000000 --- a/vendor/golang.org/x/net/route/route_classic.go +++ /dev/null @@ -1,75 +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. - -// +build darwin dragonfly freebsd netbsd - -package route - -import ( - "runtime" - "syscall" -) - -func (m *RouteMessage) marshal() ([]byte, error) { - w, ok := wireFormats[m.Type] - if !ok { - return nil, errUnsupportedMessage - } - l := w.bodyOff + addrsSpace(m.Addrs) - if runtime.GOOS == "darwin" { - // Fix stray pointer writes on macOS. - // See golang.org/issue/22456. - l += 1024 - } - b := make([]byte, l) - nativeEndian.PutUint16(b[:2], uint16(l)) - if m.Version == 0 { - b[2] = sysRTM_VERSION - } else { - b[2] = byte(m.Version) - } - b[3] = byte(m.Type) - nativeEndian.PutUint32(b[8:12], uint32(m.Flags)) - nativeEndian.PutUint16(b[4:6], uint16(m.Index)) - nativeEndian.PutUint32(b[16:20], uint32(m.ID)) - nativeEndian.PutUint32(b[20:24], uint32(m.Seq)) - attrs, err := marshalAddrs(b[w.bodyOff:], m.Addrs) - if err != nil { - return nil, err - } - if attrs > 0 { - nativeEndian.PutUint32(b[12:16], uint32(attrs)) - } - return b, nil -} - -func (w *wireFormat) parseRouteMessage(typ RIBType, b []byte) (Message, error) { - if len(b) < w.bodyOff { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - m := &RouteMessage{ - Version: int(b[2]), - Type: int(b[3]), - Flags: int(nativeEndian.Uint32(b[8:12])), - Index: int(nativeEndian.Uint16(b[4:6])), - ID: uintptr(nativeEndian.Uint32(b[16:20])), - Seq: int(nativeEndian.Uint32(b[20:24])), - extOff: w.extOff, - raw: b[:l], - } - errno := syscall.Errno(nativeEndian.Uint32(b[28:32])) - if errno != 0 { - m.Err = errno - } - var err error - m.Addrs, err = parseAddrs(uint(nativeEndian.Uint32(b[12:16])), parseKernelInetAddr, b[w.bodyOff:]) - if err != nil { - return nil, err - } - return m, nil -} diff --git a/vendor/golang.org/x/net/route/route_openbsd.go b/vendor/golang.org/x/net/route/route_openbsd.go deleted file mode 100644 index daf2e90c..00000000 --- a/vendor/golang.org/x/net/route/route_openbsd.go +++ /dev/null @@ -1,65 +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 route - -import "syscall" - -func (m *RouteMessage) marshal() ([]byte, error) { - l := sizeofRtMsghdr + addrsSpace(m.Addrs) - b := make([]byte, l) - nativeEndian.PutUint16(b[:2], uint16(l)) - if m.Version == 0 { - b[2] = sysRTM_VERSION - } else { - b[2] = byte(m.Version) - } - b[3] = byte(m.Type) - nativeEndian.PutUint16(b[4:6], uint16(sizeofRtMsghdr)) - nativeEndian.PutUint32(b[16:20], uint32(m.Flags)) - nativeEndian.PutUint16(b[6:8], uint16(m.Index)) - nativeEndian.PutUint32(b[24:28], uint32(m.ID)) - nativeEndian.PutUint32(b[28:32], uint32(m.Seq)) - attrs, err := marshalAddrs(b[sizeofRtMsghdr:], m.Addrs) - if err != nil { - return nil, err - } - if attrs > 0 { - nativeEndian.PutUint32(b[12:16], uint32(attrs)) - } - return b, nil -} - -func (*wireFormat) parseRouteMessage(_ RIBType, b []byte) (Message, error) { - if len(b) < sizeofRtMsghdr { - return nil, errMessageTooShort - } - l := int(nativeEndian.Uint16(b[:2])) - if len(b) < l { - return nil, errInvalidMessage - } - m := &RouteMessage{ - Version: int(b[2]), - Type: int(b[3]), - Flags: int(nativeEndian.Uint32(b[16:20])), - Index: int(nativeEndian.Uint16(b[6:8])), - ID: uintptr(nativeEndian.Uint32(b[24:28])), - Seq: int(nativeEndian.Uint32(b[28:32])), - raw: b[:l], - } - ll := int(nativeEndian.Uint16(b[4:6])) - if len(b) < ll { - return nil, errInvalidMessage - } - errno := syscall.Errno(nativeEndian.Uint32(b[32:36])) - if errno != 0 { - m.Err = errno - } - as, err := parseAddrs(uint(nativeEndian.Uint32(b[12:16])), parseKernelInetAddr, b[ll:]) - if err != nil { - return nil, err - } - m.Addrs = as - return m, nil -} diff --git a/vendor/golang.org/x/net/route/route_test.go b/vendor/golang.org/x/net/route/route_test.go deleted file mode 100644 index 61bd1745..00000000 --- a/vendor/golang.org/x/net/route/route_test.go +++ /dev/null @@ -1,390 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -import ( - "fmt" - "os/exec" - "runtime" - "time" -) - -func (m *RouteMessage) String() string { - return fmt.Sprintf("%s", addrAttrs(nativeEndian.Uint32(m.raw[12:16]))) -} - -func (m *InterfaceMessage) String() string { - var attrs addrAttrs - if runtime.GOOS == "openbsd" { - attrs = addrAttrs(nativeEndian.Uint32(m.raw[12:16])) - } else { - attrs = addrAttrs(nativeEndian.Uint32(m.raw[4:8])) - } - return fmt.Sprintf("%s", attrs) -} - -func (m *InterfaceAddrMessage) String() string { - var attrs addrAttrs - if runtime.GOOS == "openbsd" { - attrs = addrAttrs(nativeEndian.Uint32(m.raw[12:16])) - } else { - attrs = addrAttrs(nativeEndian.Uint32(m.raw[4:8])) - } - return fmt.Sprintf("%s", attrs) -} - -func (m *InterfaceMulticastAddrMessage) String() string { - return fmt.Sprintf("%s", addrAttrs(nativeEndian.Uint32(m.raw[4:8]))) -} - -func (m *InterfaceAnnounceMessage) String() string { - what := "<nil>" - switch m.What { - case 0: - what = "arrival" - case 1: - what = "departure" - } - return fmt.Sprintf("(%d %s %s)", m.Index, m.Name, what) -} - -func (m *InterfaceMetrics) String() string { - return fmt.Sprintf("(type=%d mtu=%d)", m.Type, m.MTU) -} - -func (m *RouteMetrics) String() string { - return fmt.Sprintf("(pmtu=%d)", m.PathMTU) -} - -type addrAttrs uint - -var addrAttrNames = [...]string{ - "dst", - "gateway", - "netmask", - "genmask", - "ifp", - "ifa", - "author", - "brd", - "df:mpls1-n:tag-o:src", // mpls1 for dragonfly, tag for netbsd, src for openbsd - "df:mpls2-o:srcmask", // mpls2 for dragonfly, srcmask for openbsd - "df:mpls3-o:label", // mpls3 for dragonfly, label for openbsd - "o:bfd", // bfd for openbsd - "o:dns", // dns for openbsd - "o:static", // static for openbsd - "o:search", // search for openbsd -} - -func (attrs addrAttrs) String() string { - var s string - for i, name := range addrAttrNames { - if attrs&(1<<uint(i)) != 0 { - if s != "" { - s += "|" - } - s += name - } - } - if s == "" { - return "<nil>" - } - return s -} - -type msgs []Message - -func (ms msgs) validate() ([]string, error) { - var ss []string - for _, m := range ms { - switch m := m.(type) { - case *RouteMessage: - if err := addrs(m.Addrs).match(addrAttrs(nativeEndian.Uint32(m.raw[12:16]))); err != nil { - return nil, err - } - sys := m.Sys() - if sys == nil { - return nil, fmt.Errorf("no sys for %s", m.String()) - } - ss = append(ss, m.String()+" "+syss(sys).String()+" "+addrs(m.Addrs).String()) - case *InterfaceMessage: - var attrs addrAttrs - if runtime.GOOS == "openbsd" { - attrs = addrAttrs(nativeEndian.Uint32(m.raw[12:16])) - } else { - attrs = addrAttrs(nativeEndian.Uint32(m.raw[4:8])) - } - if err := addrs(m.Addrs).match(attrs); err != nil { - return nil, err - } - sys := m.Sys() - if sys == nil { - return nil, fmt.Errorf("no sys for %s", m.String()) - } - ss = append(ss, m.String()+" "+syss(sys).String()+" "+addrs(m.Addrs).String()) - case *InterfaceAddrMessage: - var attrs addrAttrs - if runtime.GOOS == "openbsd" { - attrs = addrAttrs(nativeEndian.Uint32(m.raw[12:16])) - } else { - attrs = addrAttrs(nativeEndian.Uint32(m.raw[4:8])) - } - if err := addrs(m.Addrs).match(attrs); err != nil { - return nil, err - } - ss = append(ss, m.String()+" "+addrs(m.Addrs).String()) - case *InterfaceMulticastAddrMessage: - if err := addrs(m.Addrs).match(addrAttrs(nativeEndian.Uint32(m.raw[4:8]))); err != nil { - return nil, err - } - ss = append(ss, m.String()+" "+addrs(m.Addrs).String()) - case *InterfaceAnnounceMessage: - ss = append(ss, m.String()) - default: - ss = append(ss, fmt.Sprintf("%+v", m)) - } - } - return ss, nil -} - -type syss []Sys - -func (sys syss) String() string { - var s string - for _, sy := range sys { - switch sy := sy.(type) { - case *InterfaceMetrics: - if len(s) > 0 { - s += " " - } - s += sy.String() - case *RouteMetrics: - if len(s) > 0 { - s += " " - } - s += sy.String() - } - } - return s -} - -type addrFamily int - -func (af addrFamily) String() string { - switch af { - case sysAF_UNSPEC: - return "unspec" - case sysAF_LINK: - return "link" - case sysAF_INET: - return "inet4" - case sysAF_INET6: - return "inet6" - default: - return fmt.Sprintf("%d", af) - } -} - -const hexDigit = "0123456789abcdef" - -type llAddr []byte - -func (a llAddr) String() string { - if len(a) == 0 { - return "" - } - buf := make([]byte, 0, len(a)*3-1) - for i, b := range a { - if i > 0 { - buf = append(buf, ':') - } - buf = append(buf, hexDigit[b>>4]) - buf = append(buf, hexDigit[b&0xF]) - } - return string(buf) -} - -type ipAddr []byte - -func (a ipAddr) String() string { - if len(a) == 0 { - return "<nil>" - } - if len(a) == 4 { - return fmt.Sprintf("%d.%d.%d.%d", a[0], a[1], a[2], a[3]) - } - if len(a) == 16 { - return fmt.Sprintf("%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]) - } - s := make([]byte, len(a)*2) - for i, tn := range a { - s[i*2], s[i*2+1] = hexDigit[tn>>4], hexDigit[tn&0xf] - } - return string(s) -} - -func (a *LinkAddr) String() string { - name := a.Name - if name == "" { - name = "<nil>" - } - lla := llAddr(a.Addr).String() - if lla == "" { - lla = "<nil>" - } - return fmt.Sprintf("(%v %d %s %s)", addrFamily(a.Family()), a.Index, name, lla) -} - -func (a *Inet4Addr) String() string { - return fmt.Sprintf("(%v %v)", addrFamily(a.Family()), ipAddr(a.IP[:])) -} - -func (a *Inet6Addr) String() string { - return fmt.Sprintf("(%v %v %d)", addrFamily(a.Family()), ipAddr(a.IP[:]), a.ZoneID) -} - -func (a *DefaultAddr) String() string { - return fmt.Sprintf("(%v %s)", addrFamily(a.Family()), ipAddr(a.Raw[2:]).String()) -} - -type addrs []Addr - -func (as addrs) String() string { - var s string - for _, a := range as { - if a == nil { - continue - } - if len(s) > 0 { - s += " " - } - switch a := a.(type) { - case *LinkAddr: - s += a.String() - case *Inet4Addr: - s += a.String() - case *Inet6Addr: - s += a.String() - case *DefaultAddr: - s += a.String() - } - } - if s == "" { - return "<nil>" - } - return s -} - -func (as addrs) match(attrs addrAttrs) error { - var ts addrAttrs - af := sysAF_UNSPEC - for i := range as { - if as[i] != nil { - ts |= 1 << uint(i) - } - switch as[i].(type) { - case *Inet4Addr: - if af == sysAF_UNSPEC { - af = sysAF_INET - } - if af != sysAF_INET { - return fmt.Errorf("got %v; want %v", addrs(as), addrFamily(af)) - } - case *Inet6Addr: - if af == sysAF_UNSPEC { - af = sysAF_INET6 - } - if af != sysAF_INET6 { - return fmt.Errorf("got %v; want %v", addrs(as), addrFamily(af)) - } - } - } - if ts != attrs && ts > attrs { - return fmt.Errorf("%v not included in %v", ts, attrs) - } - return nil -} - -func fetchAndParseRIB(af int, typ RIBType) ([]Message, error) { - var err error - var b []byte - for i := 0; i < 3; i++ { - if b, err = FetchRIB(af, typ, 0); err != nil { - time.Sleep(10 * time.Millisecond) - continue - } - break - } - if err != nil { - return nil, fmt.Errorf("%v %d %v", addrFamily(af), typ, err) - } - ms, err := ParseRIB(typ, b) - if err != nil { - return nil, fmt.Errorf("%v %d %v", addrFamily(af), typ, err) - } - return ms, nil -} - -// propVirtual is a proprietary virtual network interface. -type propVirtual struct { - name string - addr, mask string - setupCmds []*exec.Cmd - teardownCmds []*exec.Cmd -} - -func (pv *propVirtual) setup() error { - for _, cmd := range pv.setupCmds { - if err := cmd.Run(); err != nil { - pv.teardown() - return err - } - } - return nil -} - -func (pv *propVirtual) teardown() error { - for _, cmd := range pv.teardownCmds { - if err := cmd.Run(); err != nil { - return err - } - } - return nil -} - -func (pv *propVirtual) configure(suffix int) error { - if runtime.GOOS == "openbsd" { - pv.name = fmt.Sprintf("vether%d", suffix) - } else { - pv.name = fmt.Sprintf("vlan%d", suffix) - } - xname, err := exec.LookPath("ifconfig") - if err != nil { - return err - } - pv.setupCmds = append(pv.setupCmds, &exec.Cmd{ - Path: xname, - Args: []string{"ifconfig", pv.name, "create"}, - }) - if runtime.GOOS == "netbsd" { - // NetBSD requires an underlying dot1Q-capable network - // interface. - pv.setupCmds = append(pv.setupCmds, &exec.Cmd{ - Path: xname, - Args: []string{"ifconfig", pv.name, "vlan", fmt.Sprintf("%d", suffix&0xfff), "vlanif", "wm0"}, - }) - } - pv.setupCmds = append(pv.setupCmds, &exec.Cmd{ - Path: xname, - Args: []string{"ifconfig", pv.name, "inet", pv.addr, "netmask", pv.mask}, - }) - pv.teardownCmds = append(pv.teardownCmds, &exec.Cmd{ - Path: xname, - Args: []string{"ifconfig", pv.name, "destroy"}, - }) - return nil -} diff --git a/vendor/golang.org/x/net/route/sys.go b/vendor/golang.org/x/net/route/sys.go deleted file mode 100644 index 3d0ee9b1..00000000 --- a/vendor/golang.org/x/net/route/sys.go +++ /dev/null @@ -1,39 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -import "unsafe" - -var ( - nativeEndian binaryByteOrder - kernelAlign int - wireFormats map[int]*wireFormat -) - -func init() { - i := uint32(1) - b := (*[4]byte)(unsafe.Pointer(&i)) - if b[0] == 1 { - nativeEndian = littleEndian - } else { - nativeEndian = bigEndian - } - kernelAlign, wireFormats = probeRoutingStack() -} - -func roundup(l int) int { - if l == 0 { - return kernelAlign - } - return (l + kernelAlign - 1) & ^(kernelAlign - 1) -} - -type wireFormat struct { - extOff int // offset of header extension - bodyOff int // offset of message body - parse func(RIBType, []byte) (Message, error) -} diff --git a/vendor/golang.org/x/net/route/sys_darwin.go b/vendor/golang.org/x/net/route/sys_darwin.go deleted file mode 100644 index d2daf5c0..00000000 --- a/vendor/golang.org/x/net/route/sys_darwin.go +++ /dev/null @@ -1,87 +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 route - -func (typ RIBType) parseable() bool { - switch typ { - case sysNET_RT_STAT, sysNET_RT_TRASH: - return false - default: - return true - } -} - -// RouteMetrics represents route metrics. -type RouteMetrics struct { - PathMTU int // path maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (rmx *RouteMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *RouteMessage) Sys() []Sys { - return []Sys{ - &RouteMetrics{ - PathMTU: int(nativeEndian.Uint32(m.raw[m.extOff+4 : m.extOff+8])), - }, - } -} - -// InterfaceMetrics represents interface metrics. -type InterfaceMetrics struct { - Type int // interface type - MTU int // maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (imx *InterfaceMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *InterfaceMessage) Sys() []Sys { - return []Sys{ - &InterfaceMetrics{ - Type: int(m.raw[m.extOff]), - MTU: int(nativeEndian.Uint32(m.raw[m.extOff+8 : m.extOff+12])), - }, - } -} - -func probeRoutingStack() (int, map[int]*wireFormat) { - rtm := &wireFormat{extOff: 36, bodyOff: sizeofRtMsghdrDarwin15} - rtm.parse = rtm.parseRouteMessage - rtm2 := &wireFormat{extOff: 36, bodyOff: sizeofRtMsghdr2Darwin15} - rtm2.parse = rtm2.parseRouteMessage - ifm := &wireFormat{extOff: 16, bodyOff: sizeofIfMsghdrDarwin15} - ifm.parse = ifm.parseInterfaceMessage - ifm2 := &wireFormat{extOff: 32, bodyOff: sizeofIfMsghdr2Darwin15} - ifm2.parse = ifm2.parseInterfaceMessage - ifam := &wireFormat{extOff: sizeofIfaMsghdrDarwin15, bodyOff: sizeofIfaMsghdrDarwin15} - ifam.parse = ifam.parseInterfaceAddrMessage - ifmam := &wireFormat{extOff: sizeofIfmaMsghdrDarwin15, bodyOff: sizeofIfmaMsghdrDarwin15} - ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage - ifmam2 := &wireFormat{extOff: sizeofIfmaMsghdr2Darwin15, bodyOff: sizeofIfmaMsghdr2Darwin15} - ifmam2.parse = ifmam2.parseInterfaceMulticastAddrMessage - // Darwin kernels require 32-bit aligned access to routing facilities. - return 4, map[int]*wireFormat{ - sysRTM_ADD: rtm, - sysRTM_DELETE: rtm, - sysRTM_CHANGE: rtm, - sysRTM_GET: rtm, - sysRTM_LOSING: rtm, - sysRTM_REDIRECT: rtm, - sysRTM_MISS: rtm, - sysRTM_LOCK: rtm, - sysRTM_RESOLVE: rtm, - sysRTM_NEWADDR: ifam, - sysRTM_DELADDR: ifam, - sysRTM_IFINFO: ifm, - sysRTM_NEWMADDR: ifmam, - sysRTM_DELMADDR: ifmam, - sysRTM_IFINFO2: ifm2, - sysRTM_NEWMADDR2: ifmam2, - sysRTM_GET2: rtm2, - } -} diff --git a/vendor/golang.org/x/net/route/sys_dragonfly.go b/vendor/golang.org/x/net/route/sys_dragonfly.go deleted file mode 100644 index 0c14bc2b..00000000 --- a/vendor/golang.org/x/net/route/sys_dragonfly.go +++ /dev/null @@ -1,76 +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 route - -import "unsafe" - -func (typ RIBType) parseable() bool { return true } - -// RouteMetrics represents route metrics. -type RouteMetrics struct { - PathMTU int // path maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (rmx *RouteMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *RouteMessage) Sys() []Sys { - return []Sys{ - &RouteMetrics{ - PathMTU: int(nativeEndian.Uint64(m.raw[m.extOff+8 : m.extOff+16])), - }, - } -} - -// InterfaceMetrics represents interface metrics. -type InterfaceMetrics struct { - Type int // interface type - MTU int // maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (imx *InterfaceMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *InterfaceMessage) Sys() []Sys { - return []Sys{ - &InterfaceMetrics{ - Type: int(m.raw[m.extOff]), - MTU: int(nativeEndian.Uint32(m.raw[m.extOff+8 : m.extOff+12])), - }, - } -} - -func probeRoutingStack() (int, map[int]*wireFormat) { - var p uintptr - rtm := &wireFormat{extOff: 40, bodyOff: sizeofRtMsghdrDragonFlyBSD4} - rtm.parse = rtm.parseRouteMessage - ifm := &wireFormat{extOff: 16, bodyOff: sizeofIfMsghdrDragonFlyBSD4} - ifm.parse = ifm.parseInterfaceMessage - ifam := &wireFormat{extOff: sizeofIfaMsghdrDragonFlyBSD4, bodyOff: sizeofIfaMsghdrDragonFlyBSD4} - ifam.parse = ifam.parseInterfaceAddrMessage - ifmam := &wireFormat{extOff: sizeofIfmaMsghdrDragonFlyBSD4, bodyOff: sizeofIfmaMsghdrDragonFlyBSD4} - ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage - ifanm := &wireFormat{extOff: sizeofIfAnnouncemsghdrDragonFlyBSD4, bodyOff: sizeofIfAnnouncemsghdrDragonFlyBSD4} - ifanm.parse = ifanm.parseInterfaceAnnounceMessage - return int(unsafe.Sizeof(p)), map[int]*wireFormat{ - sysRTM_ADD: rtm, - sysRTM_DELETE: rtm, - sysRTM_CHANGE: rtm, - sysRTM_GET: rtm, - sysRTM_LOSING: rtm, - sysRTM_REDIRECT: rtm, - sysRTM_MISS: rtm, - sysRTM_LOCK: rtm, - sysRTM_RESOLVE: rtm, - sysRTM_NEWADDR: ifam, - sysRTM_DELADDR: ifam, - sysRTM_IFINFO: ifm, - sysRTM_NEWMADDR: ifmam, - sysRTM_DELMADDR: ifmam, - sysRTM_IFANNOUNCE: ifanm, - } -} diff --git a/vendor/golang.org/x/net/route/sys_freebsd.go b/vendor/golang.org/x/net/route/sys_freebsd.go deleted file mode 100644 index 89ba1c4e..00000000 --- a/vendor/golang.org/x/net/route/sys_freebsd.go +++ /dev/null @@ -1,155 +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 route - -import ( - "syscall" - "unsafe" -) - -func (typ RIBType) parseable() bool { return true } - -// RouteMetrics represents route metrics. -type RouteMetrics struct { - PathMTU int // path maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (rmx *RouteMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *RouteMessage) Sys() []Sys { - if kernelAlign == 8 { - return []Sys{ - &RouteMetrics{ - PathMTU: int(nativeEndian.Uint64(m.raw[m.extOff+8 : m.extOff+16])), - }, - } - } - return []Sys{ - &RouteMetrics{ - PathMTU: int(nativeEndian.Uint32(m.raw[m.extOff+4 : m.extOff+8])), - }, - } -} - -// InterfaceMetrics represents interface metrics. -type InterfaceMetrics struct { - Type int // interface type - MTU int // maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (imx *InterfaceMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *InterfaceMessage) Sys() []Sys { - return []Sys{ - &InterfaceMetrics{ - Type: int(m.raw[m.extOff]), - MTU: int(nativeEndian.Uint32(m.raw[m.extOff+8 : m.extOff+12])), - }, - } -} - -func probeRoutingStack() (int, map[int]*wireFormat) { - var p uintptr - wordSize := int(unsafe.Sizeof(p)) - align := int(unsafe.Sizeof(p)) - // In the case of kern.supported_archs="amd64 i386", we need - // to know the underlying kernel's architecture because the - // alignment for routing facilities are set at the build time - // of the kernel. - conf, _ := syscall.Sysctl("kern.conftxt") - for i, j := 0, 0; j < len(conf); j++ { - if conf[j] != '\n' { - continue - } - s := conf[i:j] - i = j + 1 - if len(s) > len("machine") && s[:len("machine")] == "machine" { - s = s[len("machine"):] - for k := 0; k < len(s); k++ { - if s[k] == ' ' || s[k] == '\t' { - s = s[1:] - } - break - } - if s == "amd64" { - align = 8 - } - break - } - } - var rtm, ifm, ifam, ifmam, ifanm *wireFormat - if align != wordSize { // 386 emulation on amd64 - rtm = &wireFormat{extOff: sizeofRtMsghdrFreeBSD10Emu - sizeofRtMetricsFreeBSD10Emu, bodyOff: sizeofRtMsghdrFreeBSD10Emu} - ifm = &wireFormat{extOff: 16} - ifam = &wireFormat{extOff: sizeofIfaMsghdrFreeBSD10Emu, bodyOff: sizeofIfaMsghdrFreeBSD10Emu} - ifmam = &wireFormat{extOff: sizeofIfmaMsghdrFreeBSD10Emu, bodyOff: sizeofIfmaMsghdrFreeBSD10Emu} - ifanm = &wireFormat{extOff: sizeofIfAnnouncemsghdrFreeBSD10Emu, bodyOff: sizeofIfAnnouncemsghdrFreeBSD10Emu} - } else { - rtm = &wireFormat{extOff: sizeofRtMsghdrFreeBSD10 - sizeofRtMetricsFreeBSD10, bodyOff: sizeofRtMsghdrFreeBSD10} - ifm = &wireFormat{extOff: 16} - ifam = &wireFormat{extOff: sizeofIfaMsghdrFreeBSD10, bodyOff: sizeofIfaMsghdrFreeBSD10} - ifmam = &wireFormat{extOff: sizeofIfmaMsghdrFreeBSD10, bodyOff: sizeofIfmaMsghdrFreeBSD10} - ifanm = &wireFormat{extOff: sizeofIfAnnouncemsghdrFreeBSD10, bodyOff: sizeofIfAnnouncemsghdrFreeBSD10} - } - rel, _ := syscall.SysctlUint32("kern.osreldate") - switch { - case rel < 800000: - if align != wordSize { // 386 emulation on amd64 - ifm.bodyOff = sizeofIfMsghdrFreeBSD7Emu - } else { - ifm.bodyOff = sizeofIfMsghdrFreeBSD7 - } - case 800000 <= rel && rel < 900000: - if align != wordSize { // 386 emulation on amd64 - ifm.bodyOff = sizeofIfMsghdrFreeBSD8Emu - } else { - ifm.bodyOff = sizeofIfMsghdrFreeBSD8 - } - case 900000 <= rel && rel < 1000000: - if align != wordSize { // 386 emulation on amd64 - ifm.bodyOff = sizeofIfMsghdrFreeBSD9Emu - } else { - ifm.bodyOff = sizeofIfMsghdrFreeBSD9 - } - case 1000000 <= rel && rel < 1100000: - if align != wordSize { // 386 emulation on amd64 - ifm.bodyOff = sizeofIfMsghdrFreeBSD10Emu - } else { - ifm.bodyOff = sizeofIfMsghdrFreeBSD10 - } - default: - if align != wordSize { // 386 emulation on amd64 - ifm.bodyOff = sizeofIfMsghdrFreeBSD11Emu - } else { - ifm.bodyOff = sizeofIfMsghdrFreeBSD11 - } - } - rtm.parse = rtm.parseRouteMessage - ifm.parse = ifm.parseInterfaceMessage - ifam.parse = ifam.parseInterfaceAddrMessage - ifmam.parse = ifmam.parseInterfaceMulticastAddrMessage - ifanm.parse = ifanm.parseInterfaceAnnounceMessage - return align, map[int]*wireFormat{ - sysRTM_ADD: rtm, - sysRTM_DELETE: rtm, - sysRTM_CHANGE: rtm, - sysRTM_GET: rtm, - sysRTM_LOSING: rtm, - sysRTM_REDIRECT: rtm, - sysRTM_MISS: rtm, - sysRTM_LOCK: rtm, - sysRTM_RESOLVE: rtm, - sysRTM_NEWADDR: ifam, - sysRTM_DELADDR: ifam, - sysRTM_IFINFO: ifm, - sysRTM_NEWMADDR: ifmam, - sysRTM_DELMADDR: ifmam, - sysRTM_IFANNOUNCE: ifanm, - } -} diff --git a/vendor/golang.org/x/net/route/sys_netbsd.go b/vendor/golang.org/x/net/route/sys_netbsd.go deleted file mode 100644 index 02f71d54..00000000 --- a/vendor/golang.org/x/net/route/sys_netbsd.go +++ /dev/null @@ -1,71 +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 route - -func (typ RIBType) parseable() bool { return true } - -// RouteMetrics represents route metrics. -type RouteMetrics struct { - PathMTU int // path maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (rmx *RouteMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *RouteMessage) Sys() []Sys { - return []Sys{ - &RouteMetrics{ - PathMTU: int(nativeEndian.Uint64(m.raw[m.extOff+8 : m.extOff+16])), - }, - } -} - -// RouteMetrics represents route metrics. -type InterfaceMetrics struct { - Type int // interface type - MTU int // maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (imx *InterfaceMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *InterfaceMessage) Sys() []Sys { - return []Sys{ - &InterfaceMetrics{ - Type: int(m.raw[m.extOff]), - MTU: int(nativeEndian.Uint32(m.raw[m.extOff+8 : m.extOff+12])), - }, - } -} - -func probeRoutingStack() (int, map[int]*wireFormat) { - rtm := &wireFormat{extOff: 40, bodyOff: sizeofRtMsghdrNetBSD7} - rtm.parse = rtm.parseRouteMessage - ifm := &wireFormat{extOff: 16, bodyOff: sizeofIfMsghdrNetBSD7} - ifm.parse = ifm.parseInterfaceMessage - ifam := &wireFormat{extOff: sizeofIfaMsghdrNetBSD7, bodyOff: sizeofIfaMsghdrNetBSD7} - ifam.parse = ifam.parseInterfaceAddrMessage - ifanm := &wireFormat{extOff: sizeofIfAnnouncemsghdrNetBSD7, bodyOff: sizeofIfAnnouncemsghdrNetBSD7} - ifanm.parse = ifanm.parseInterfaceAnnounceMessage - // NetBSD 6 and above kernels require 64-bit aligned access to - // routing facilities. - return 8, map[int]*wireFormat{ - sysRTM_ADD: rtm, - sysRTM_DELETE: rtm, - sysRTM_CHANGE: rtm, - sysRTM_GET: rtm, - sysRTM_LOSING: rtm, - sysRTM_REDIRECT: rtm, - sysRTM_MISS: rtm, - sysRTM_LOCK: rtm, - sysRTM_RESOLVE: rtm, - sysRTM_NEWADDR: ifam, - sysRTM_DELADDR: ifam, - sysRTM_IFANNOUNCE: ifanm, - sysRTM_IFINFO: ifm, - } -} diff --git a/vendor/golang.org/x/net/route/sys_openbsd.go b/vendor/golang.org/x/net/route/sys_openbsd.go deleted file mode 100644 index c5674e83..00000000 --- a/vendor/golang.org/x/net/route/sys_openbsd.go +++ /dev/null @@ -1,80 +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 route - -import "unsafe" - -func (typ RIBType) parseable() bool { - switch typ { - case sysNET_RT_STATS, sysNET_RT_TABLE: - return false - default: - return true - } -} - -// RouteMetrics represents route metrics. -type RouteMetrics struct { - PathMTU int // path maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (rmx *RouteMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *RouteMessage) Sys() []Sys { - return []Sys{ - &RouteMetrics{ - PathMTU: int(nativeEndian.Uint32(m.raw[60:64])), - }, - } -} - -// InterfaceMetrics represents interface metrics. -type InterfaceMetrics struct { - Type int // interface type - MTU int // maximum transmission unit -} - -// SysType implements the SysType method of Sys interface. -func (imx *InterfaceMetrics) SysType() SysType { return SysMetrics } - -// Sys implements the Sys method of Message interface. -func (m *InterfaceMessage) Sys() []Sys { - return []Sys{ - &InterfaceMetrics{ - Type: int(m.raw[24]), - MTU: int(nativeEndian.Uint32(m.raw[28:32])), - }, - } -} - -func probeRoutingStack() (int, map[int]*wireFormat) { - var p uintptr - rtm := &wireFormat{extOff: -1, bodyOff: -1} - rtm.parse = rtm.parseRouteMessage - ifm := &wireFormat{extOff: -1, bodyOff: -1} - ifm.parse = ifm.parseInterfaceMessage - ifam := &wireFormat{extOff: -1, bodyOff: -1} - ifam.parse = ifam.parseInterfaceAddrMessage - ifanm := &wireFormat{extOff: -1, bodyOff: -1} - ifanm.parse = ifanm.parseInterfaceAnnounceMessage - return int(unsafe.Sizeof(p)), map[int]*wireFormat{ - sysRTM_ADD: rtm, - sysRTM_DELETE: rtm, - sysRTM_CHANGE: rtm, - sysRTM_GET: rtm, - sysRTM_LOSING: rtm, - sysRTM_REDIRECT: rtm, - sysRTM_MISS: rtm, - sysRTM_LOCK: rtm, - sysRTM_RESOLVE: rtm, - sysRTM_NEWADDR: ifam, - sysRTM_DELADDR: ifam, - sysRTM_IFINFO: ifm, - sysRTM_IFANNOUNCE: ifanm, - sysRTM_DESYNC: rtm, - } -} diff --git a/vendor/golang.org/x/net/route/syscall.go b/vendor/golang.org/x/net/route/syscall.go deleted file mode 100644 index c211188b..00000000 --- a/vendor/golang.org/x/net/route/syscall.go +++ /dev/null @@ -1,28 +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. - -// +build darwin dragonfly freebsd netbsd openbsd - -package route - -import ( - "syscall" - "unsafe" -) - -var zero uintptr - -func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { - var p unsafe.Pointer - if len(mib) > 0 { - p = unsafe.Pointer(&mib[0]) - } else { - p = unsafe.Pointer(&zero) - } - _, _, errno := syscall.Syscall6(syscall.SYS___SYSCTL, uintptr(p), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if errno != 0 { - return error(errno) - } - return nil -} diff --git a/vendor/golang.org/x/net/route/zsys_darwin.go b/vendor/golang.org/x/net/route/zsys_darwin.go deleted file mode 100644 index 4e2e1ab0..00000000 --- a/vendor/golang.org/x/net/route/zsys_darwin.go +++ /dev/null @@ -1,99 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_darwin.go - -package route - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_ROUTE = 0x11 - sysAF_LINK = 0x12 - sysAF_INET6 = 0x1e - - sysSOCK_RAW = 0x3 - - sysNET_RT_DUMP = 0x1 - sysNET_RT_FLAGS = 0x2 - sysNET_RT_IFLIST = 0x3 - sysNET_RT_STAT = 0x4 - sysNET_RT_TRASH = 0x5 - sysNET_RT_IFLIST2 = 0x6 - sysNET_RT_DUMP2 = 0x7 - sysNET_RT_MAXID = 0xa -) - -const ( - sysCTL_MAXNAME = 0xc - - sysCTL_UNSPEC = 0x0 - sysCTL_KERN = 0x1 - sysCTL_VM = 0x2 - sysCTL_VFS = 0x3 - sysCTL_NET = 0x4 - sysCTL_DEBUG = 0x5 - sysCTL_HW = 0x6 - sysCTL_MACHDEP = 0x7 - sysCTL_USER = 0x8 - sysCTL_MAXID = 0x9 -) - -const ( - sysRTM_VERSION = 0x5 - - sysRTM_ADD = 0x1 - sysRTM_DELETE = 0x2 - sysRTM_CHANGE = 0x3 - sysRTM_GET = 0x4 - sysRTM_LOSING = 0x5 - sysRTM_REDIRECT = 0x6 - sysRTM_MISS = 0x7 - sysRTM_LOCK = 0x8 - sysRTM_OLDADD = 0x9 - sysRTM_OLDDEL = 0xa - sysRTM_RESOLVE = 0xb - sysRTM_NEWADDR = 0xc - sysRTM_DELADDR = 0xd - sysRTM_IFINFO = 0xe - sysRTM_NEWMADDR = 0xf - sysRTM_DELMADDR = 0x10 - sysRTM_IFINFO2 = 0x12 - sysRTM_NEWMADDR2 = 0x13 - sysRTM_GET2 = 0x14 - - sysRTA_DST = 0x1 - sysRTA_GATEWAY = 0x2 - sysRTA_NETMASK = 0x4 - sysRTA_GENMASK = 0x8 - sysRTA_IFP = 0x10 - sysRTA_IFA = 0x20 - sysRTA_AUTHOR = 0x40 - sysRTA_BRD = 0x80 - - sysRTAX_DST = 0x0 - sysRTAX_GATEWAY = 0x1 - sysRTAX_NETMASK = 0x2 - sysRTAX_GENMASK = 0x3 - sysRTAX_IFP = 0x4 - sysRTAX_IFA = 0x5 - sysRTAX_AUTHOR = 0x6 - sysRTAX_BRD = 0x7 - sysRTAX_MAX = 0x8 -) - -const ( - sizeofIfMsghdrDarwin15 = 0x70 - sizeofIfaMsghdrDarwin15 = 0x14 - sizeofIfmaMsghdrDarwin15 = 0x10 - sizeofIfMsghdr2Darwin15 = 0xa0 - sizeofIfmaMsghdr2Darwin15 = 0x14 - sizeofIfDataDarwin15 = 0x60 - sizeofIfData64Darwin15 = 0x80 - - sizeofRtMsghdrDarwin15 = 0x5c - sizeofRtMsghdr2Darwin15 = 0x5c - sizeofRtMetricsDarwin15 = 0x38 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/route/zsys_dragonfly.go b/vendor/golang.org/x/net/route/zsys_dragonfly.go deleted file mode 100644 index 719c88d1..00000000 --- a/vendor/golang.org/x/net/route/zsys_dragonfly.go +++ /dev/null @@ -1,98 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_dragonfly.go - -package route - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_ROUTE = 0x11 - sysAF_LINK = 0x12 - sysAF_INET6 = 0x1c - - sysSOCK_RAW = 0x3 - - sysNET_RT_DUMP = 0x1 - sysNET_RT_FLAGS = 0x2 - sysNET_RT_IFLIST = 0x3 - sysNET_RT_MAXID = 0x4 -) - -const ( - sysCTL_MAXNAME = 0xc - - sysCTL_UNSPEC = 0x0 - sysCTL_KERN = 0x1 - sysCTL_VM = 0x2 - sysCTL_VFS = 0x3 - sysCTL_NET = 0x4 - sysCTL_DEBUG = 0x5 - sysCTL_HW = 0x6 - sysCTL_MACHDEP = 0x7 - sysCTL_USER = 0x8 - sysCTL_P1003_1B = 0x9 - sysCTL_LWKT = 0xa - sysCTL_MAXID = 0xb -) - -const ( - sysRTM_VERSION = 0x6 - - sysRTM_ADD = 0x1 - sysRTM_DELETE = 0x2 - sysRTM_CHANGE = 0x3 - sysRTM_GET = 0x4 - sysRTM_LOSING = 0x5 - sysRTM_REDIRECT = 0x6 - sysRTM_MISS = 0x7 - sysRTM_LOCK = 0x8 - sysRTM_OLDADD = 0x9 - sysRTM_OLDDEL = 0xa - sysRTM_RESOLVE = 0xb - sysRTM_NEWADDR = 0xc - sysRTM_DELADDR = 0xd - sysRTM_IFINFO = 0xe - sysRTM_NEWMADDR = 0xf - sysRTM_DELMADDR = 0x10 - sysRTM_IFANNOUNCE = 0x11 - sysRTM_IEEE80211 = 0x12 - - sysRTA_DST = 0x1 - sysRTA_GATEWAY = 0x2 - sysRTA_NETMASK = 0x4 - sysRTA_GENMASK = 0x8 - sysRTA_IFP = 0x10 - sysRTA_IFA = 0x20 - sysRTA_AUTHOR = 0x40 - sysRTA_BRD = 0x80 - sysRTA_MPLS1 = 0x100 - sysRTA_MPLS2 = 0x200 - sysRTA_MPLS3 = 0x400 - - sysRTAX_DST = 0x0 - sysRTAX_GATEWAY = 0x1 - sysRTAX_NETMASK = 0x2 - sysRTAX_GENMASK = 0x3 - sysRTAX_IFP = 0x4 - sysRTAX_IFA = 0x5 - sysRTAX_AUTHOR = 0x6 - sysRTAX_BRD = 0x7 - sysRTAX_MPLS1 = 0x8 - sysRTAX_MPLS2 = 0x9 - sysRTAX_MPLS3 = 0xa - sysRTAX_MAX = 0xb -) - -const ( - sizeofIfMsghdrDragonFlyBSD4 = 0xb0 - sizeofIfaMsghdrDragonFlyBSD4 = 0x14 - sizeofIfmaMsghdrDragonFlyBSD4 = 0x10 - sizeofIfAnnouncemsghdrDragonFlyBSD4 = 0x18 - - sizeofRtMsghdrDragonFlyBSD4 = 0x98 - sizeofRtMetricsDragonFlyBSD4 = 0x70 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/route/zsys_freebsd_386.go b/vendor/golang.org/x/net/route/zsys_freebsd_386.go deleted file mode 100644 index b03bc01f..00000000 --- a/vendor/golang.org/x/net/route/zsys_freebsd_386.go +++ /dev/null @@ -1,126 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package route - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_ROUTE = 0x11 - sysAF_LINK = 0x12 - sysAF_INET6 = 0x1c - - sysSOCK_RAW = 0x3 - - sysNET_RT_DUMP = 0x1 - sysNET_RT_FLAGS = 0x2 - sysNET_RT_IFLIST = 0x3 - sysNET_RT_IFMALIST = 0x4 - sysNET_RT_IFLISTL = 0x5 -) - -const ( - sysCTL_MAXNAME = 0x18 - - sysCTL_UNSPEC = 0x0 - sysCTL_KERN = 0x1 - sysCTL_VM = 0x2 - sysCTL_VFS = 0x3 - sysCTL_NET = 0x4 - sysCTL_DEBUG = 0x5 - sysCTL_HW = 0x6 - sysCTL_MACHDEP = 0x7 - sysCTL_USER = 0x8 - sysCTL_P1003_1B = 0x9 -) - -const ( - sysRTM_VERSION = 0x5 - - sysRTM_ADD = 0x1 - sysRTM_DELETE = 0x2 - sysRTM_CHANGE = 0x3 - sysRTM_GET = 0x4 - sysRTM_LOSING = 0x5 - sysRTM_REDIRECT = 0x6 - sysRTM_MISS = 0x7 - sysRTM_LOCK = 0x8 - sysRTM_RESOLVE = 0xb - sysRTM_NEWADDR = 0xc - sysRTM_DELADDR = 0xd - sysRTM_IFINFO = 0xe - sysRTM_NEWMADDR = 0xf - sysRTM_DELMADDR = 0x10 - sysRTM_IFANNOUNCE = 0x11 - sysRTM_IEEE80211 = 0x12 - - sysRTA_DST = 0x1 - sysRTA_GATEWAY = 0x2 - sysRTA_NETMASK = 0x4 - sysRTA_GENMASK = 0x8 - sysRTA_IFP = 0x10 - sysRTA_IFA = 0x20 - sysRTA_AUTHOR = 0x40 - sysRTA_BRD = 0x80 - - sysRTAX_DST = 0x0 - sysRTAX_GATEWAY = 0x1 - sysRTAX_NETMASK = 0x2 - sysRTAX_GENMASK = 0x3 - sysRTAX_IFP = 0x4 - sysRTAX_IFA = 0x5 - sysRTAX_AUTHOR = 0x6 - sysRTAX_BRD = 0x7 - sysRTAX_MAX = 0x8 -) - -const ( - sizeofIfMsghdrlFreeBSD10 = 0x68 - sizeofIfaMsghdrFreeBSD10 = 0x14 - sizeofIfaMsghdrlFreeBSD10 = 0x6c - sizeofIfmaMsghdrFreeBSD10 = 0x10 - sizeofIfAnnouncemsghdrFreeBSD10 = 0x18 - - sizeofRtMsghdrFreeBSD10 = 0x5c - sizeofRtMetricsFreeBSD10 = 0x38 - - sizeofIfMsghdrFreeBSD7 = 0x60 - sizeofIfMsghdrFreeBSD8 = 0x60 - sizeofIfMsghdrFreeBSD9 = 0x60 - sizeofIfMsghdrFreeBSD10 = 0x64 - sizeofIfMsghdrFreeBSD11 = 0xa8 - - sizeofIfDataFreeBSD7 = 0x50 - sizeofIfDataFreeBSD8 = 0x50 - sizeofIfDataFreeBSD9 = 0x50 - sizeofIfDataFreeBSD10 = 0x54 - sizeofIfDataFreeBSD11 = 0x98 - - // MODIFIED BY HAND FOR 386 EMULATION ON AMD64 - // 386 EMULATION USES THE UNDERLYING RAW DATA LAYOUT - - sizeofIfMsghdrlFreeBSD10Emu = 0xb0 - sizeofIfaMsghdrFreeBSD10Emu = 0x14 - sizeofIfaMsghdrlFreeBSD10Emu = 0xb0 - sizeofIfmaMsghdrFreeBSD10Emu = 0x10 - sizeofIfAnnouncemsghdrFreeBSD10Emu = 0x18 - - sizeofRtMsghdrFreeBSD10Emu = 0x98 - sizeofRtMetricsFreeBSD10Emu = 0x70 - - sizeofIfMsghdrFreeBSD7Emu = 0xa8 - sizeofIfMsghdrFreeBSD8Emu = 0xa8 - sizeofIfMsghdrFreeBSD9Emu = 0xa8 - sizeofIfMsghdrFreeBSD10Emu = 0xa8 - sizeofIfMsghdrFreeBSD11Emu = 0xa8 - - sizeofIfDataFreeBSD7Emu = 0x98 - sizeofIfDataFreeBSD8Emu = 0x98 - sizeofIfDataFreeBSD9Emu = 0x98 - sizeofIfDataFreeBSD10Emu = 0x98 - sizeofIfDataFreeBSD11Emu = 0x98 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go deleted file mode 100644 index 0b675b3d..00000000 --- a/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go +++ /dev/null @@ -1,123 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package route - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_ROUTE = 0x11 - sysAF_LINK = 0x12 - sysAF_INET6 = 0x1c - - sysSOCK_RAW = 0x3 - - sysNET_RT_DUMP = 0x1 - sysNET_RT_FLAGS = 0x2 - sysNET_RT_IFLIST = 0x3 - sysNET_RT_IFMALIST = 0x4 - sysNET_RT_IFLISTL = 0x5 -) - -const ( - sysCTL_MAXNAME = 0x18 - - sysCTL_UNSPEC = 0x0 - sysCTL_KERN = 0x1 - sysCTL_VM = 0x2 - sysCTL_VFS = 0x3 - sysCTL_NET = 0x4 - sysCTL_DEBUG = 0x5 - sysCTL_HW = 0x6 - sysCTL_MACHDEP = 0x7 - sysCTL_USER = 0x8 - sysCTL_P1003_1B = 0x9 -) - -const ( - sysRTM_VERSION = 0x5 - - sysRTM_ADD = 0x1 - sysRTM_DELETE = 0x2 - sysRTM_CHANGE = 0x3 - sysRTM_GET = 0x4 - sysRTM_LOSING = 0x5 - sysRTM_REDIRECT = 0x6 - sysRTM_MISS = 0x7 - sysRTM_LOCK = 0x8 - sysRTM_RESOLVE = 0xb - sysRTM_NEWADDR = 0xc - sysRTM_DELADDR = 0xd - sysRTM_IFINFO = 0xe - sysRTM_NEWMADDR = 0xf - sysRTM_DELMADDR = 0x10 - sysRTM_IFANNOUNCE = 0x11 - sysRTM_IEEE80211 = 0x12 - - sysRTA_DST = 0x1 - sysRTA_GATEWAY = 0x2 - sysRTA_NETMASK = 0x4 - sysRTA_GENMASK = 0x8 - sysRTA_IFP = 0x10 - sysRTA_IFA = 0x20 - sysRTA_AUTHOR = 0x40 - sysRTA_BRD = 0x80 - - sysRTAX_DST = 0x0 - sysRTAX_GATEWAY = 0x1 - sysRTAX_NETMASK = 0x2 - sysRTAX_GENMASK = 0x3 - sysRTAX_IFP = 0x4 - sysRTAX_IFA = 0x5 - sysRTAX_AUTHOR = 0x6 - sysRTAX_BRD = 0x7 - sysRTAX_MAX = 0x8 -) - -const ( - sizeofIfMsghdrlFreeBSD10 = 0xb0 - sizeofIfaMsghdrFreeBSD10 = 0x14 - sizeofIfaMsghdrlFreeBSD10 = 0xb0 - sizeofIfmaMsghdrFreeBSD10 = 0x10 - sizeofIfAnnouncemsghdrFreeBSD10 = 0x18 - - sizeofRtMsghdrFreeBSD10 = 0x98 - sizeofRtMetricsFreeBSD10 = 0x70 - - sizeofIfMsghdrFreeBSD7 = 0xa8 - sizeofIfMsghdrFreeBSD8 = 0xa8 - sizeofIfMsghdrFreeBSD9 = 0xa8 - sizeofIfMsghdrFreeBSD10 = 0xa8 - sizeofIfMsghdrFreeBSD11 = 0xa8 - - sizeofIfDataFreeBSD7 = 0x98 - sizeofIfDataFreeBSD8 = 0x98 - sizeofIfDataFreeBSD9 = 0x98 - sizeofIfDataFreeBSD10 = 0x98 - sizeofIfDataFreeBSD11 = 0x98 - - sizeofIfMsghdrlFreeBSD10Emu = 0xb0 - sizeofIfaMsghdrFreeBSD10Emu = 0x14 - sizeofIfaMsghdrlFreeBSD10Emu = 0xb0 - sizeofIfmaMsghdrFreeBSD10Emu = 0x10 - sizeofIfAnnouncemsghdrFreeBSD10Emu = 0x18 - - sizeofRtMsghdrFreeBSD10Emu = 0x98 - sizeofRtMetricsFreeBSD10Emu = 0x70 - - sizeofIfMsghdrFreeBSD7Emu = 0xa8 - sizeofIfMsghdrFreeBSD8Emu = 0xa8 - sizeofIfMsghdrFreeBSD9Emu = 0xa8 - sizeofIfMsghdrFreeBSD10Emu = 0xa8 - sizeofIfMsghdrFreeBSD11Emu = 0xa8 - - sizeofIfDataFreeBSD7Emu = 0x98 - sizeofIfDataFreeBSD8Emu = 0x98 - sizeofIfDataFreeBSD9Emu = 0x98 - sizeofIfDataFreeBSD10Emu = 0x98 - sizeofIfDataFreeBSD11Emu = 0x98 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/route/zsys_freebsd_arm.go b/vendor/golang.org/x/net/route/zsys_freebsd_arm.go deleted file mode 100644 index 58f8ea16..00000000 --- a/vendor/golang.org/x/net/route/zsys_freebsd_arm.go +++ /dev/null @@ -1,123 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_freebsd.go - -package route - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_ROUTE = 0x11 - sysAF_LINK = 0x12 - sysAF_INET6 = 0x1c - - sysSOCK_RAW = 0x3 - - sysNET_RT_DUMP = 0x1 - sysNET_RT_FLAGS = 0x2 - sysNET_RT_IFLIST = 0x3 - sysNET_RT_IFMALIST = 0x4 - sysNET_RT_IFLISTL = 0x5 -) - -const ( - sysCTL_MAXNAME = 0x18 - - sysCTL_UNSPEC = 0x0 - sysCTL_KERN = 0x1 - sysCTL_VM = 0x2 - sysCTL_VFS = 0x3 - sysCTL_NET = 0x4 - sysCTL_DEBUG = 0x5 - sysCTL_HW = 0x6 - sysCTL_MACHDEP = 0x7 - sysCTL_USER = 0x8 - sysCTL_P1003_1B = 0x9 -) - -const ( - sysRTM_VERSION = 0x5 - - sysRTM_ADD = 0x1 - sysRTM_DELETE = 0x2 - sysRTM_CHANGE = 0x3 - sysRTM_GET = 0x4 - sysRTM_LOSING = 0x5 - sysRTM_REDIRECT = 0x6 - sysRTM_MISS = 0x7 - sysRTM_LOCK = 0x8 - sysRTM_RESOLVE = 0xb - sysRTM_NEWADDR = 0xc - sysRTM_DELADDR = 0xd - sysRTM_IFINFO = 0xe - sysRTM_NEWMADDR = 0xf - sysRTM_DELMADDR = 0x10 - sysRTM_IFANNOUNCE = 0x11 - sysRTM_IEEE80211 = 0x12 - - sysRTA_DST = 0x1 - sysRTA_GATEWAY = 0x2 - sysRTA_NETMASK = 0x4 - sysRTA_GENMASK = 0x8 - sysRTA_IFP = 0x10 - sysRTA_IFA = 0x20 - sysRTA_AUTHOR = 0x40 - sysRTA_BRD = 0x80 - - sysRTAX_DST = 0x0 - sysRTAX_GATEWAY = 0x1 - sysRTAX_NETMASK = 0x2 - sysRTAX_GENMASK = 0x3 - sysRTAX_IFP = 0x4 - sysRTAX_IFA = 0x5 - sysRTAX_AUTHOR = 0x6 - sysRTAX_BRD = 0x7 - sysRTAX_MAX = 0x8 -) - -const ( - sizeofIfMsghdrlFreeBSD10 = 0x68 - sizeofIfaMsghdrFreeBSD10 = 0x14 - sizeofIfaMsghdrlFreeBSD10 = 0x6c - sizeofIfmaMsghdrFreeBSD10 = 0x10 - sizeofIfAnnouncemsghdrFreeBSD10 = 0x18 - - sizeofRtMsghdrFreeBSD10 = 0x5c - sizeofRtMetricsFreeBSD10 = 0x38 - - sizeofIfMsghdrFreeBSD7 = 0x70 - sizeofIfMsghdrFreeBSD8 = 0x70 - sizeofIfMsghdrFreeBSD9 = 0x70 - sizeofIfMsghdrFreeBSD10 = 0x70 - sizeofIfMsghdrFreeBSD11 = 0xa8 - - sizeofIfDataFreeBSD7 = 0x60 - sizeofIfDataFreeBSD8 = 0x60 - sizeofIfDataFreeBSD9 = 0x60 - sizeofIfDataFreeBSD10 = 0x60 - sizeofIfDataFreeBSD11 = 0x98 - - sizeofIfMsghdrlFreeBSD10Emu = 0x68 - sizeofIfaMsghdrFreeBSD10Emu = 0x14 - sizeofIfaMsghdrlFreeBSD10Emu = 0x6c - sizeofIfmaMsghdrFreeBSD10Emu = 0x10 - sizeofIfAnnouncemsghdrFreeBSD10Emu = 0x18 - - sizeofRtMsghdrFreeBSD10Emu = 0x5c - sizeofRtMetricsFreeBSD10Emu = 0x38 - - sizeofIfMsghdrFreeBSD7Emu = 0x70 - sizeofIfMsghdrFreeBSD8Emu = 0x70 - sizeofIfMsghdrFreeBSD9Emu = 0x70 - sizeofIfMsghdrFreeBSD10Emu = 0x70 - sizeofIfMsghdrFreeBSD11Emu = 0xa8 - - sizeofIfDataFreeBSD7Emu = 0x60 - sizeofIfDataFreeBSD8Emu = 0x60 - sizeofIfDataFreeBSD9Emu = 0x60 - sizeofIfDataFreeBSD10Emu = 0x60 - sizeofIfDataFreeBSD11Emu = 0x98 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/route/zsys_netbsd.go b/vendor/golang.org/x/net/route/zsys_netbsd.go deleted file mode 100644 index e0df45e8..00000000 --- a/vendor/golang.org/x/net/route/zsys_netbsd.go +++ /dev/null @@ -1,97 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_netbsd.go - -package route - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_ROUTE = 0x22 - sysAF_LINK = 0x12 - sysAF_INET6 = 0x18 - - sysSOCK_RAW = 0x3 - - sysNET_RT_DUMP = 0x1 - sysNET_RT_FLAGS = 0x2 - sysNET_RT_IFLIST = 0x5 - sysNET_RT_MAXID = 0x6 -) - -const ( - sysCTL_MAXNAME = 0xc - - sysCTL_UNSPEC = 0x0 - sysCTL_KERN = 0x1 - sysCTL_VM = 0x2 - sysCTL_VFS = 0x3 - sysCTL_NET = 0x4 - sysCTL_DEBUG = 0x5 - sysCTL_HW = 0x6 - sysCTL_MACHDEP = 0x7 - sysCTL_USER = 0x8 - sysCTL_DDB = 0x9 - sysCTL_PROC = 0xa - sysCTL_VENDOR = 0xb - sysCTL_EMUL = 0xc - sysCTL_SECURITY = 0xd - sysCTL_MAXID = 0xe -) - -const ( - sysRTM_VERSION = 0x4 - - sysRTM_ADD = 0x1 - sysRTM_DELETE = 0x2 - sysRTM_CHANGE = 0x3 - sysRTM_GET = 0x4 - sysRTM_LOSING = 0x5 - sysRTM_REDIRECT = 0x6 - sysRTM_MISS = 0x7 - sysRTM_LOCK = 0x8 - sysRTM_OLDADD = 0x9 - sysRTM_OLDDEL = 0xa - sysRTM_RESOLVE = 0xb - sysRTM_NEWADDR = 0xc - sysRTM_DELADDR = 0xd - sysRTM_IFANNOUNCE = 0x10 - sysRTM_IEEE80211 = 0x11 - sysRTM_SETGATE = 0x12 - sysRTM_LLINFO_UPD = 0x13 - sysRTM_IFINFO = 0x14 - sysRTM_CHGADDR = 0x15 - - sysRTA_DST = 0x1 - sysRTA_GATEWAY = 0x2 - sysRTA_NETMASK = 0x4 - sysRTA_GENMASK = 0x8 - sysRTA_IFP = 0x10 - sysRTA_IFA = 0x20 - sysRTA_AUTHOR = 0x40 - sysRTA_BRD = 0x80 - sysRTA_TAG = 0x100 - - sysRTAX_DST = 0x0 - sysRTAX_GATEWAY = 0x1 - sysRTAX_NETMASK = 0x2 - sysRTAX_GENMASK = 0x3 - sysRTAX_IFP = 0x4 - sysRTAX_IFA = 0x5 - sysRTAX_AUTHOR = 0x6 - sysRTAX_BRD = 0x7 - sysRTAX_TAG = 0x8 - sysRTAX_MAX = 0x9 -) - -const ( - sizeofIfMsghdrNetBSD7 = 0x98 - sizeofIfaMsghdrNetBSD7 = 0x18 - sizeofIfAnnouncemsghdrNetBSD7 = 0x18 - - sizeofRtMsghdrNetBSD7 = 0x78 - sizeofRtMetricsNetBSD7 = 0x50 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/route/zsys_openbsd.go b/vendor/golang.org/x/net/route/zsys_openbsd.go deleted file mode 100644 index db8c8efb..00000000 --- a/vendor/golang.org/x/net/route/zsys_openbsd.go +++ /dev/null @@ -1,101 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs defs_openbsd.go - -package route - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_ROUTE = 0x11 - sysAF_LINK = 0x12 - sysAF_INET6 = 0x18 - - sysSOCK_RAW = 0x3 - - sysNET_RT_DUMP = 0x1 - sysNET_RT_FLAGS = 0x2 - sysNET_RT_IFLIST = 0x3 - sysNET_RT_STATS = 0x4 - sysNET_RT_TABLE = 0x5 - sysNET_RT_IFNAMES = 0x6 - sysNET_RT_MAXID = 0x7 -) - -const ( - sysCTL_MAXNAME = 0xc - - sysCTL_UNSPEC = 0x0 - sysCTL_KERN = 0x1 - sysCTL_VM = 0x2 - sysCTL_FS = 0x3 - sysCTL_NET = 0x4 - sysCTL_DEBUG = 0x5 - sysCTL_HW = 0x6 - sysCTL_MACHDEP = 0x7 - sysCTL_DDB = 0x9 - sysCTL_VFS = 0xa - sysCTL_MAXID = 0xb -) - -const ( - sysRTM_VERSION = 0x5 - - sysRTM_ADD = 0x1 - sysRTM_DELETE = 0x2 - sysRTM_CHANGE = 0x3 - sysRTM_GET = 0x4 - sysRTM_LOSING = 0x5 - sysRTM_REDIRECT = 0x6 - sysRTM_MISS = 0x7 - sysRTM_LOCK = 0x8 - sysRTM_RESOLVE = 0xb - sysRTM_NEWADDR = 0xc - sysRTM_DELADDR = 0xd - sysRTM_IFINFO = 0xe - sysRTM_IFANNOUNCE = 0xf - sysRTM_DESYNC = 0x10 - sysRTM_INVALIDATE = 0x11 - sysRTM_BFD = 0x12 - sysRTM_PROPOSAL = 0x13 - - sysRTA_DST = 0x1 - sysRTA_GATEWAY = 0x2 - sysRTA_NETMASK = 0x4 - sysRTA_GENMASK = 0x8 - sysRTA_IFP = 0x10 - sysRTA_IFA = 0x20 - sysRTA_AUTHOR = 0x40 - sysRTA_BRD = 0x80 - sysRTA_SRC = 0x100 - sysRTA_SRCMASK = 0x200 - sysRTA_LABEL = 0x400 - sysRTA_BFD = 0x800 - sysRTA_DNS = 0x1000 - sysRTA_STATIC = 0x2000 - sysRTA_SEARCH = 0x4000 - - sysRTAX_DST = 0x0 - sysRTAX_GATEWAY = 0x1 - sysRTAX_NETMASK = 0x2 - sysRTAX_GENMASK = 0x3 - sysRTAX_IFP = 0x4 - sysRTAX_IFA = 0x5 - sysRTAX_AUTHOR = 0x6 - sysRTAX_BRD = 0x7 - sysRTAX_SRC = 0x8 - sysRTAX_SRCMASK = 0x9 - sysRTAX_LABEL = 0xa - sysRTAX_BFD = 0xb - sysRTAX_DNS = 0xc - sysRTAX_STATIC = 0xd - sysRTAX_SEARCH = 0xe - sysRTAX_MAX = 0xf -) - -const ( - sizeofRtMsghdr = 0x60 - - sizeofSockaddrStorage = 0x100 - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/trace/histogram_test.go b/vendor/golang.org/x/net/trace/histogram_test.go deleted file mode 100644 index d384b933..00000000 --- a/vendor/golang.org/x/net/trace/histogram_test.go +++ /dev/null @@ -1,325 +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 trace - -import ( - "math" - "testing" -) - -type sumTest struct { - value int64 - sum int64 - sumOfSquares float64 - total int64 -} - -var sumTests = []sumTest{ - {100, 100, 10000, 1}, - {50, 150, 12500, 2}, - {50, 200, 15000, 3}, - {50, 250, 17500, 4}, -} - -type bucketingTest struct { - in int64 - log int - bucket int -} - -var bucketingTests = []bucketingTest{ - {0, 0, 0}, - {1, 1, 0}, - {2, 2, 1}, - {3, 2, 1}, - {4, 3, 2}, - {1000, 10, 9}, - {1023, 10, 9}, - {1024, 11, 10}, - {1000000, 20, 19}, -} - -type multiplyTest struct { - in int64 - ratio float64 - expectedSum int64 - expectedTotal int64 - expectedSumOfSquares float64 -} - -var multiplyTests = []multiplyTest{ - {15, 2.5, 37, 2, 562.5}, - {128, 4.6, 758, 13, 77953.9}, -} - -type percentileTest struct { - fraction float64 - expected int64 -} - -var percentileTests = []percentileTest{ - {0.25, 48}, - {0.5, 96}, - {0.6, 109}, - {0.75, 128}, - {0.90, 205}, - {0.95, 230}, - {0.99, 256}, -} - -func TestSum(t *testing.T) { - var h histogram - - for _, test := range sumTests { - h.addMeasurement(test.value) - sum := h.sum - if sum != test.sum { - t.Errorf("h.Sum = %v WANT: %v", sum, test.sum) - } - - sumOfSquares := h.sumOfSquares - if sumOfSquares != test.sumOfSquares { - t.Errorf("h.SumOfSquares = %v WANT: %v", sumOfSquares, test.sumOfSquares) - } - - total := h.total() - if total != test.total { - t.Errorf("h.Total = %v WANT: %v", total, test.total) - } - } -} - -func TestMultiply(t *testing.T) { - var h histogram - for i, test := range multiplyTests { - h.addMeasurement(test.in) - h.Multiply(test.ratio) - if h.sum != test.expectedSum { - t.Errorf("#%v: h.sum = %v WANT: %v", i, h.sum, test.expectedSum) - } - if h.total() != test.expectedTotal { - t.Errorf("#%v: h.total = %v WANT: %v", i, h.total(), test.expectedTotal) - } - if h.sumOfSquares != test.expectedSumOfSquares { - t.Errorf("#%v: h.SumOfSquares = %v WANT: %v", i, test.expectedSumOfSquares, h.sumOfSquares) - } - } -} - -func TestBucketingFunctions(t *testing.T) { - for _, test := range bucketingTests { - log := log2(test.in) - if log != test.log { - t.Errorf("log2 = %v WANT: %v", log, test.log) - } - - bucket := getBucket(test.in) - if bucket != test.bucket { - t.Errorf("getBucket = %v WANT: %v", bucket, test.bucket) - } - } -} - -func TestAverage(t *testing.T) { - a := new(histogram) - average := a.average() - if average != 0 { - t.Errorf("Average of empty histogram was %v WANT: 0", average) - } - - a.addMeasurement(1) - a.addMeasurement(1) - a.addMeasurement(3) - const expected = float64(5) / float64(3) - average = a.average() - - if !isApproximate(average, expected) { - t.Errorf("Average = %g WANT: %v", average, expected) - } -} - -func TestStandardDeviation(t *testing.T) { - a := new(histogram) - add(a, 10, 1<<4) - add(a, 10, 1<<5) - add(a, 10, 1<<6) - stdDev := a.standardDeviation() - const expected = 19.95 - - if !isApproximate(stdDev, expected) { - t.Errorf("StandardDeviation = %v WANT: %v", stdDev, expected) - } - - // No values - a = new(histogram) - stdDev = a.standardDeviation() - - if !isApproximate(stdDev, 0) { - t.Errorf("StandardDeviation = %v WANT: 0", stdDev) - } - - add(a, 1, 1<<4) - if !isApproximate(stdDev, 0) { - t.Errorf("StandardDeviation = %v WANT: 0", stdDev) - } - - add(a, 10, 1<<4) - if !isApproximate(stdDev, 0) { - t.Errorf("StandardDeviation = %v WANT: 0", stdDev) - } -} - -func TestPercentileBoundary(t *testing.T) { - a := new(histogram) - add(a, 5, 1<<4) - add(a, 10, 1<<6) - add(a, 5, 1<<7) - - for _, test := range percentileTests { - percentile := a.percentileBoundary(test.fraction) - if percentile != test.expected { - t.Errorf("h.PercentileBoundary (fraction=%v) = %v WANT: %v", test.fraction, percentile, test.expected) - } - } -} - -func TestCopyFrom(t *testing.T) { - a := histogram{5, 25, []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38}, 4, -1} - b := histogram{6, 36, []int64{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39}, 5, -1} - - a.CopyFrom(&b) - - if a.String() != b.String() { - t.Errorf("a.String = %s WANT: %s", a.String(), b.String()) - } -} - -func TestClear(t *testing.T) { - a := histogram{5, 25, []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38}, 4, -1} - - a.Clear() - - expected := "0, 0.000000, 0, 0, []" - if a.String() != expected { - t.Errorf("a.String = %s WANT %s", a.String(), expected) - } -} - -func TestNew(t *testing.T) { - a := histogram{5, 25, []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38}, 4, -1} - b := a.New() - - expected := "0, 0.000000, 0, 0, []" - if b.(*histogram).String() != expected { - t.Errorf("b.(*histogram).String = %s WANT: %s", b.(*histogram).String(), expected) - } -} - -func TestAdd(t *testing.T) { - // The tests here depend on the associativity of addMeasurement and Add. - // Add empty observation - a := histogram{5, 25, []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38}, 4, -1} - b := a.New() - - expected := a.String() - a.Add(b) - if a.String() != expected { - t.Errorf("a.String = %s WANT: %s", a.String(), expected) - } - - // Add same bucketed value, no new buckets - c := new(histogram) - d := new(histogram) - e := new(histogram) - c.addMeasurement(12) - d.addMeasurement(11) - e.addMeasurement(12) - e.addMeasurement(11) - c.Add(d) - if c.String() != e.String() { - t.Errorf("c.String = %s WANT: %s", c.String(), e.String()) - } - - // Add bucketed values - f := new(histogram) - g := new(histogram) - h := new(histogram) - f.addMeasurement(4) - f.addMeasurement(12) - f.addMeasurement(100) - g.addMeasurement(18) - g.addMeasurement(36) - g.addMeasurement(255) - h.addMeasurement(4) - h.addMeasurement(12) - h.addMeasurement(100) - h.addMeasurement(18) - h.addMeasurement(36) - h.addMeasurement(255) - f.Add(g) - if f.String() != h.String() { - t.Errorf("f.String = %q WANT: %q", f.String(), h.String()) - } - - // add buckets to no buckets - i := new(histogram) - j := new(histogram) - k := new(histogram) - j.addMeasurement(18) - j.addMeasurement(36) - j.addMeasurement(255) - k.addMeasurement(18) - k.addMeasurement(36) - k.addMeasurement(255) - i.Add(j) - if i.String() != k.String() { - t.Errorf("i.String = %q WANT: %q", i.String(), k.String()) - } - - // add buckets to single value (no overlap) - l := new(histogram) - m := new(histogram) - n := new(histogram) - l.addMeasurement(0) - m.addMeasurement(18) - m.addMeasurement(36) - m.addMeasurement(255) - n.addMeasurement(0) - n.addMeasurement(18) - n.addMeasurement(36) - n.addMeasurement(255) - l.Add(m) - if l.String() != n.String() { - t.Errorf("l.String = %q WANT: %q", l.String(), n.String()) - } - - // mixed order - o := new(histogram) - p := new(histogram) - o.addMeasurement(0) - o.addMeasurement(2) - o.addMeasurement(0) - p.addMeasurement(0) - p.addMeasurement(0) - p.addMeasurement(2) - if o.String() != p.String() { - t.Errorf("o.String = %q WANT: %q", o.String(), p.String()) - } -} - -func add(h *histogram, times int, val int64) { - for i := 0; i < times; i++ { - h.addMeasurement(val) - } -} - -func isApproximate(x, y float64) bool { - return math.Abs(x-y) < 1e-2 -} diff --git a/vendor/golang.org/x/net/trace/trace_test.go b/vendor/golang.org/x/net/trace/trace_test.go deleted file mode 100644 index bfd9dfe9..00000000 --- a/vendor/golang.org/x/net/trace/trace_test.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 trace - -import ( - "net/http" - "reflect" - "testing" -) - -type s struct{} - -func (s) String() string { return "lazy string" } - -// TestReset checks whether all the fields are zeroed after reset. -func TestReset(t *testing.T) { - tr := New("foo", "bar") - tr.LazyLog(s{}, false) - tr.LazyPrintf("%d", 1) - tr.SetRecycler(func(_ interface{}) {}) - tr.SetTraceInfo(3, 4) - tr.SetMaxEvents(100) - tr.SetError() - tr.Finish() - - tr.(*trace).reset() - - if !reflect.DeepEqual(tr, new(trace)) { - t.Errorf("reset didn't clear all fields: %+v", tr) - } -} - -// TestResetLog checks whether all the fields are zeroed after reset. -func TestResetLog(t *testing.T) { - el := NewEventLog("foo", "bar") - el.Printf("message") - el.Errorf("error") - el.Finish() - - el.(*eventLog).reset() - - if !reflect.DeepEqual(el, new(eventLog)) { - t.Errorf("reset didn't clear all fields: %+v", el) - } -} - -func TestAuthRequest(t *testing.T) { - testCases := []struct { - host string - want bool - }{ - {host: "192.168.23.1", want: false}, - {host: "192.168.23.1:8080", want: false}, - {host: "malformed remote addr", want: false}, - {host: "localhost", want: true}, - {host: "localhost:8080", want: true}, - {host: "127.0.0.1", want: true}, - {host: "127.0.0.1:8080", want: true}, - {host: "::1", want: true}, - {host: "[::1]:8080", want: true}, - } - for _, tt := range testCases { - req := &http.Request{RemoteAddr: tt.host} - any, sensitive := AuthRequest(req) - if any != tt.want || sensitive != tt.want { - t.Errorf("AuthRequest(%q) = %t, %t; want %t, %t", tt.host, any, sensitive, tt.want, tt.want) - } - } -} - -// TestParseTemplate checks that all templates used by this package are valid -// as they are parsed on first usage -func TestParseTemplate(t *testing.T) { - if tmpl := distTmpl(); tmpl == nil { - t.Error("invalid template returned from distTmpl()") - } - if tmpl := pageTmpl(); tmpl == nil { - t.Error("invalid template returned from pageTmpl()") - } - if tmpl := eventsTmpl(); tmpl == nil { - t.Error("invalid template returned from eventsTmpl()") - } -} - -func benchmarkTrace(b *testing.B, maxEvents, numEvents int) { - numSpans := (b.N + numEvents + 1) / numEvents - - for i := 0; i < numSpans; i++ { - tr := New("test", "test") - tr.SetMaxEvents(maxEvents) - for j := 0; j < numEvents; j++ { - tr.LazyPrintf("%d", j) - } - tr.Finish() - } -} - -func BenchmarkTrace_Default_2(b *testing.B) { - benchmarkTrace(b, 0, 2) -} - -func BenchmarkTrace_Default_10(b *testing.B) { - benchmarkTrace(b, 0, 10) -} - -func BenchmarkTrace_Default_100(b *testing.B) { - benchmarkTrace(b, 0, 100) -} - -func BenchmarkTrace_Default_1000(b *testing.B) { - benchmarkTrace(b, 0, 1000) -} - -func BenchmarkTrace_Default_10000(b *testing.B) { - benchmarkTrace(b, 0, 10000) -} - -func BenchmarkTrace_10_2(b *testing.B) { - benchmarkTrace(b, 10, 2) -} - -func BenchmarkTrace_10_10(b *testing.B) { - benchmarkTrace(b, 10, 10) -} - -func BenchmarkTrace_10_100(b *testing.B) { - benchmarkTrace(b, 10, 100) -} - -func BenchmarkTrace_10_1000(b *testing.B) { - benchmarkTrace(b, 10, 1000) -} - -func BenchmarkTrace_10_10000(b *testing.B) { - benchmarkTrace(b, 10, 10000) -} - -func BenchmarkTrace_100_2(b *testing.B) { - benchmarkTrace(b, 100, 2) -} - -func BenchmarkTrace_100_10(b *testing.B) { - benchmarkTrace(b, 100, 10) -} - -func BenchmarkTrace_100_100(b *testing.B) { - benchmarkTrace(b, 100, 100) -} - -func BenchmarkTrace_100_1000(b *testing.B) { - benchmarkTrace(b, 100, 1000) -} - -func BenchmarkTrace_100_10000(b *testing.B) { - benchmarkTrace(b, 100, 10000) -} - -func BenchmarkTrace_1000_2(b *testing.B) { - benchmarkTrace(b, 1000, 2) -} - -func BenchmarkTrace_1000_10(b *testing.B) { - benchmarkTrace(b, 1000, 10) -} - -func BenchmarkTrace_1000_100(b *testing.B) { - benchmarkTrace(b, 1000, 100) -} - -func BenchmarkTrace_1000_1000(b *testing.B) { - benchmarkTrace(b, 1000, 1000) -} - -func BenchmarkTrace_1000_10000(b *testing.B) { - benchmarkTrace(b, 1000, 10000) -} diff --git a/vendor/golang.org/x/net/webdav/file.go b/vendor/golang.org/x/net/webdav/file.go deleted file mode 100644 index 748118dd..00000000 --- a/vendor/golang.org/x/net/webdav/file.go +++ /dev/null @@ -1,796 +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 webdav - -import ( - "encoding/xml" - "io" - "net/http" - "os" - "path" - "path/filepath" - "strings" - "sync" - "time" - - "golang.org/x/net/context" -) - -// slashClean is equivalent to but slightly more efficient than -// path.Clean("/" + name). -func slashClean(name string) string { - if name == "" || name[0] != '/' { - name = "/" + name - } - return path.Clean(name) -} - -// A FileSystem implements access to a collection of named files. The elements -// in a file path are separated by slash ('/', U+002F) characters, regardless -// of host operating system convention. -// -// Each method has the same semantics as the os package's function of the same -// name. -// -// Note that the os.Rename documentation says that "OS-specific restrictions -// might apply". In particular, whether or not renaming a file or directory -// overwriting another existing file or directory is an error is OS-dependent. -type FileSystem interface { - Mkdir(ctx context.Context, name string, perm os.FileMode) error - OpenFile(ctx context.Context, name string, flag int, perm os.FileMode) (File, error) - RemoveAll(ctx context.Context, name string) error - Rename(ctx context.Context, oldName, newName string) error - Stat(ctx context.Context, name string) (os.FileInfo, error) -} - -// A File is returned by a FileSystem's OpenFile method and can be served by a -// Handler. -// -// A File may optionally implement the DeadPropsHolder interface, if it can -// load and save dead properties. -type File interface { - http.File - io.Writer -} - -// A Dir implements FileSystem using the native file system restricted to a -// specific directory tree. -// -// While the FileSystem.OpenFile method takes '/'-separated paths, a Dir's -// string value is a filename on the native file system, not a URL, so it is -// separated by filepath.Separator, which isn't necessarily '/'. -// -// An empty Dir is treated as ".". -type Dir string - -func (d Dir) resolve(name string) string { - // This implementation is based on Dir.Open's code in the standard net/http package. - if filepath.Separator != '/' && strings.IndexRune(name, filepath.Separator) >= 0 || - strings.Contains(name, "\x00") { - return "" - } - dir := string(d) - if dir == "" { - dir = "." - } - return filepath.Join(dir, filepath.FromSlash(slashClean(name))) -} - -func (d Dir) Mkdir(ctx context.Context, name string, perm os.FileMode) error { - if name = d.resolve(name); name == "" { - return os.ErrNotExist - } - return os.Mkdir(name, perm) -} - -func (d Dir) OpenFile(ctx context.Context, name string, flag int, perm os.FileMode) (File, error) { - if name = d.resolve(name); name == "" { - return nil, os.ErrNotExist - } - f, err := os.OpenFile(name, flag, perm) - if err != nil { - return nil, err - } - return f, nil -} - -func (d Dir) RemoveAll(ctx context.Context, name string) error { - if name = d.resolve(name); name == "" { - return os.ErrNotExist - } - if name == filepath.Clean(string(d)) { - // Prohibit removing the virtual root directory. - return os.ErrInvalid - } - return os.RemoveAll(name) -} - -func (d Dir) Rename(ctx context.Context, oldName, newName string) error { - if oldName = d.resolve(oldName); oldName == "" { - return os.ErrNotExist - } - if newName = d.resolve(newName); newName == "" { - return os.ErrNotExist - } - if root := filepath.Clean(string(d)); root == oldName || root == newName { - // Prohibit renaming from or to the virtual root directory. - return os.ErrInvalid - } - return os.Rename(oldName, newName) -} - -func (d Dir) Stat(ctx context.Context, name string) (os.FileInfo, error) { - if name = d.resolve(name); name == "" { - return nil, os.ErrNotExist - } - return os.Stat(name) -} - -// NewMemFS returns a new in-memory FileSystem implementation. -func NewMemFS() FileSystem { - return &memFS{ - root: memFSNode{ - children: make(map[string]*memFSNode), - mode: 0660 | os.ModeDir, - modTime: time.Now(), - }, - } -} - -// A memFS implements FileSystem, storing all metadata and actual file data -// in-memory. No limits on filesystem size are used, so it is not recommended -// this be used where the clients are untrusted. -// -// Concurrent access is permitted. The tree structure is protected by a mutex, -// and each node's contents and metadata are protected by a per-node mutex. -// -// TODO: Enforce file permissions. -type memFS struct { - mu sync.Mutex - root memFSNode -} - -// TODO: clean up and rationalize the walk/find code. - -// walk walks the directory tree for the fullname, calling f at each step. If f -// returns an error, the walk will be aborted and return that same error. -// -// dir is the directory at that step, frag is the name fragment, and final is -// whether it is the final step. For example, walking "/foo/bar/x" will result -// in 3 calls to f: -// - "/", "foo", false -// - "/foo/", "bar", false -// - "/foo/bar/", "x", true -// The frag argument will be empty only if dir is the root node and the walk -// ends at that root node. -func (fs *memFS) walk(op, fullname string, f func(dir *memFSNode, frag string, final bool) error) error { - original := fullname - fullname = slashClean(fullname) - - // Strip any leading "/"s to make fullname a relative path, as the walk - // starts at fs.root. - if fullname[0] == '/' { - fullname = fullname[1:] - } - dir := &fs.root - - for { - frag, remaining := fullname, "" - i := strings.IndexRune(fullname, '/') - final := i < 0 - if !final { - frag, remaining = fullname[:i], fullname[i+1:] - } - if frag == "" && dir != &fs.root { - panic("webdav: empty path fragment for a clean path") - } - if err := f(dir, frag, final); err != nil { - return &os.PathError{ - Op: op, - Path: original, - Err: err, - } - } - if final { - break - } - child := dir.children[frag] - if child == nil { - return &os.PathError{ - Op: op, - Path: original, - Err: os.ErrNotExist, - } - } - if !child.mode.IsDir() { - return &os.PathError{ - Op: op, - Path: original, - Err: os.ErrInvalid, - } - } - dir, fullname = child, remaining - } - return nil -} - -// find returns the parent of the named node and the relative name fragment -// from the parent to the child. For example, if finding "/foo/bar/baz" then -// parent will be the node for "/foo/bar" and frag will be "baz". -// -// If the fullname names the root node, then parent, frag and err will be zero. -// -// find returns an error if the parent does not already exist or the parent -// isn't a directory, but it will not return an error per se if the child does -// not already exist. The error returned is either nil or an *os.PathError -// whose Op is op. -func (fs *memFS) find(op, fullname string) (parent *memFSNode, frag string, err error) { - err = fs.walk(op, fullname, func(parent0 *memFSNode, frag0 string, final bool) error { - if !final { - return nil - } - if frag0 != "" { - parent, frag = parent0, frag0 - } - return nil - }) - return parent, frag, err -} - -func (fs *memFS) Mkdir(ctx context.Context, name string, perm os.FileMode) error { - fs.mu.Lock() - defer fs.mu.Unlock() - - dir, frag, err := fs.find("mkdir", name) - if err != nil { - return err - } - if dir == nil { - // We can't create the root. - return os.ErrInvalid - } - if _, ok := dir.children[frag]; ok { - return os.ErrExist - } - dir.children[frag] = &memFSNode{ - children: make(map[string]*memFSNode), - mode: perm.Perm() | os.ModeDir, - modTime: time.Now(), - } - return nil -} - -func (fs *memFS) OpenFile(ctx context.Context, name string, flag int, perm os.FileMode) (File, error) { - fs.mu.Lock() - defer fs.mu.Unlock() - - dir, frag, err := fs.find("open", name) - if err != nil { - return nil, err - } - var n *memFSNode - if dir == nil { - // We're opening the root. - if flag&(os.O_WRONLY|os.O_RDWR) != 0 { - return nil, os.ErrPermission - } - n, frag = &fs.root, "/" - - } else { - n = dir.children[frag] - if flag&(os.O_SYNC|os.O_APPEND) != 0 { - // memFile doesn't support these flags yet. - return nil, os.ErrInvalid - } - if flag&os.O_CREATE != 0 { - if flag&os.O_EXCL != 0 && n != nil { - return nil, os.ErrExist - } - if n == nil { - n = &memFSNode{ - mode: perm.Perm(), - } - dir.children[frag] = n - } - } - if n == nil { - return nil, os.ErrNotExist - } - if flag&(os.O_WRONLY|os.O_RDWR) != 0 && flag&os.O_TRUNC != 0 { - n.mu.Lock() - n.data = nil - n.mu.Unlock() - } - } - - children := make([]os.FileInfo, 0, len(n.children)) - for cName, c := range n.children { - children = append(children, c.stat(cName)) - } - return &memFile{ - n: n, - nameSnapshot: frag, - childrenSnapshot: children, - }, nil -} - -func (fs *memFS) RemoveAll(ctx context.Context, name string) error { - fs.mu.Lock() - defer fs.mu.Unlock() - - dir, frag, err := fs.find("remove", name) - if err != nil { - return err - } - if dir == nil { - // We can't remove the root. - return os.ErrInvalid - } - delete(dir.children, frag) - return nil -} - -func (fs *memFS) Rename(ctx context.Context, oldName, newName string) error { - fs.mu.Lock() - defer fs.mu.Unlock() - - oldName = slashClean(oldName) - newName = slashClean(newName) - if oldName == newName { - return nil - } - if strings.HasPrefix(newName, oldName+"/") { - // We can't rename oldName to be a sub-directory of itself. - return os.ErrInvalid - } - - oDir, oFrag, err := fs.find("rename", oldName) - if err != nil { - return err - } - if oDir == nil { - // We can't rename from the root. - return os.ErrInvalid - } - - nDir, nFrag, err := fs.find("rename", newName) - if err != nil { - return err - } - if nDir == nil { - // We can't rename to the root. - return os.ErrInvalid - } - - oNode, ok := oDir.children[oFrag] - if !ok { - return os.ErrNotExist - } - if oNode.children != nil { - if nNode, ok := nDir.children[nFrag]; ok { - if nNode.children == nil { - return errNotADirectory - } - if len(nNode.children) != 0 { - return errDirectoryNotEmpty - } - } - } - delete(oDir.children, oFrag) - nDir.children[nFrag] = oNode - return nil -} - -func (fs *memFS) Stat(ctx context.Context, name string) (os.FileInfo, error) { - fs.mu.Lock() - defer fs.mu.Unlock() - - dir, frag, err := fs.find("stat", name) - if err != nil { - return nil, err - } - if dir == nil { - // We're stat'ting the root. - return fs.root.stat("/"), nil - } - if n, ok := dir.children[frag]; ok { - return n.stat(path.Base(name)), nil - } - return nil, os.ErrNotExist -} - -// A memFSNode represents a single entry in the in-memory filesystem and also -// implements os.FileInfo. -type memFSNode struct { - // children is protected by memFS.mu. - children map[string]*memFSNode - - mu sync.Mutex - data []byte - mode os.FileMode - modTime time.Time - deadProps map[xml.Name]Property -} - -func (n *memFSNode) stat(name string) *memFileInfo { - n.mu.Lock() - defer n.mu.Unlock() - return &memFileInfo{ - name: name, - size: int64(len(n.data)), - mode: n.mode, - modTime: n.modTime, - } -} - -func (n *memFSNode) DeadProps() (map[xml.Name]Property, error) { - n.mu.Lock() - defer n.mu.Unlock() - if len(n.deadProps) == 0 { - return nil, nil - } - ret := make(map[xml.Name]Property, len(n.deadProps)) - for k, v := range n.deadProps { - ret[k] = v - } - return ret, nil -} - -func (n *memFSNode) Patch(patches []Proppatch) ([]Propstat, error) { - n.mu.Lock() - defer n.mu.Unlock() - pstat := Propstat{Status: http.StatusOK} - for _, patch := range patches { - for _, p := range patch.Props { - pstat.Props = append(pstat.Props, Property{XMLName: p.XMLName}) - if patch.Remove { - delete(n.deadProps, p.XMLName) - continue - } - if n.deadProps == nil { - n.deadProps = map[xml.Name]Property{} - } - n.deadProps[p.XMLName] = p - } - } - return []Propstat{pstat}, nil -} - -type memFileInfo struct { - name string - size int64 - mode os.FileMode - modTime time.Time -} - -func (f *memFileInfo) Name() string { return f.name } -func (f *memFileInfo) Size() int64 { return f.size } -func (f *memFileInfo) Mode() os.FileMode { return f.mode } -func (f *memFileInfo) ModTime() time.Time { return f.modTime } -func (f *memFileInfo) IsDir() bool { return f.mode.IsDir() } -func (f *memFileInfo) Sys() interface{} { return nil } - -// A memFile is a File implementation for a memFSNode. It is a per-file (not -// per-node) read/write position, and a snapshot of the memFS' tree structure -// (a node's name and children) for that node. -type memFile struct { - n *memFSNode - nameSnapshot string - childrenSnapshot []os.FileInfo - // pos is protected by n.mu. - pos int -} - -// A *memFile implements the optional DeadPropsHolder interface. -var _ DeadPropsHolder = (*memFile)(nil) - -func (f *memFile) DeadProps() (map[xml.Name]Property, error) { return f.n.DeadProps() } -func (f *memFile) Patch(patches []Proppatch) ([]Propstat, error) { return f.n.Patch(patches) } - -func (f *memFile) Close() error { - return nil -} - -func (f *memFile) Read(p []byte) (int, error) { - f.n.mu.Lock() - defer f.n.mu.Unlock() - if f.n.mode.IsDir() { - return 0, os.ErrInvalid - } - if f.pos >= len(f.n.data) { - return 0, io.EOF - } - n := copy(p, f.n.data[f.pos:]) - f.pos += n - return n, nil -} - -func (f *memFile) Readdir(count int) ([]os.FileInfo, error) { - f.n.mu.Lock() - defer f.n.mu.Unlock() - if !f.n.mode.IsDir() { - return nil, os.ErrInvalid - } - old := f.pos - if old >= len(f.childrenSnapshot) { - // The os.File Readdir docs say that at the end of a directory, - // the error is io.EOF if count > 0 and nil if count <= 0. - if count > 0 { - return nil, io.EOF - } - return nil, nil - } - if count > 0 { - f.pos += count - if f.pos > len(f.childrenSnapshot) { - f.pos = len(f.childrenSnapshot) - } - } else { - f.pos = len(f.childrenSnapshot) - old = 0 - } - return f.childrenSnapshot[old:f.pos], nil -} - -func (f *memFile) Seek(offset int64, whence int) (int64, error) { - f.n.mu.Lock() - defer f.n.mu.Unlock() - npos := f.pos - // TODO: How to handle offsets greater than the size of system int? - switch whence { - case os.SEEK_SET: - npos = int(offset) - case os.SEEK_CUR: - npos += int(offset) - case os.SEEK_END: - npos = len(f.n.data) + int(offset) - default: - npos = -1 - } - if npos < 0 { - return 0, os.ErrInvalid - } - f.pos = npos - return int64(f.pos), nil -} - -func (f *memFile) Stat() (os.FileInfo, error) { - return f.n.stat(f.nameSnapshot), nil -} - -func (f *memFile) Write(p []byte) (int, error) { - lenp := len(p) - f.n.mu.Lock() - defer f.n.mu.Unlock() - - if f.n.mode.IsDir() { - return 0, os.ErrInvalid - } - if f.pos < len(f.n.data) { - n := copy(f.n.data[f.pos:], p) - f.pos += n - p = p[n:] - } else if f.pos > len(f.n.data) { - // Write permits the creation of holes, if we've seek'ed past the - // existing end of file. - if f.pos <= cap(f.n.data) { - oldLen := len(f.n.data) - f.n.data = f.n.data[:f.pos] - hole := f.n.data[oldLen:] - for i := range hole { - hole[i] = 0 - } - } else { - d := make([]byte, f.pos, f.pos+len(p)) - copy(d, f.n.data) - f.n.data = d - } - } - - if len(p) > 0 { - // We should only get here if f.pos == len(f.n.data). - f.n.data = append(f.n.data, p...) - f.pos = len(f.n.data) - } - f.n.modTime = time.Now() - return lenp, nil -} - -// moveFiles moves files and/or directories from src to dst. -// -// See section 9.9.4 for when various HTTP status codes apply. -func moveFiles(ctx context.Context, fs FileSystem, src, dst string, overwrite bool) (status int, err error) { - created := false - if _, err := fs.Stat(ctx, dst); err != nil { - if !os.IsNotExist(err) { - return http.StatusForbidden, err - } - created = true - } else if overwrite { - // Section 9.9.3 says that "If a resource exists at the destination - // and the Overwrite header is "T", then prior to performing the move, - // the server must perform a DELETE with "Depth: infinity" on the - // destination resource. - if err := fs.RemoveAll(ctx, dst); err != nil { - return http.StatusForbidden, err - } - } else { - return http.StatusPreconditionFailed, os.ErrExist - } - if err := fs.Rename(ctx, src, dst); err != nil { - return http.StatusForbidden, err - } - if created { - return http.StatusCreated, nil - } - return http.StatusNoContent, nil -} - -func copyProps(dst, src File) error { - d, ok := dst.(DeadPropsHolder) - if !ok { - return nil - } - s, ok := src.(DeadPropsHolder) - if !ok { - return nil - } - m, err := s.DeadProps() - if err != nil { - return err - } - props := make([]Property, 0, len(m)) - for _, prop := range m { - props = append(props, prop) - } - _, err = d.Patch([]Proppatch{{Props: props}}) - return err -} - -// copyFiles copies files and/or directories from src to dst. -// -// See section 9.8.5 for when various HTTP status codes apply. -func copyFiles(ctx context.Context, fs FileSystem, src, dst string, overwrite bool, depth int, recursion int) (status int, err error) { - if recursion == 1000 { - return http.StatusInternalServerError, errRecursionTooDeep - } - recursion++ - - // TODO: section 9.8.3 says that "Note that an infinite-depth COPY of /A/ - // into /A/B/ could lead to infinite recursion if not handled correctly." - - srcFile, err := fs.OpenFile(ctx, src, os.O_RDONLY, 0) - if err != nil { - if os.IsNotExist(err) { - return http.StatusNotFound, err - } - return http.StatusInternalServerError, err - } - defer srcFile.Close() - srcStat, err := srcFile.Stat() - if err != nil { - if os.IsNotExist(err) { - return http.StatusNotFound, err - } - return http.StatusInternalServerError, err - } - srcPerm := srcStat.Mode() & os.ModePerm - - created := false - if _, err := fs.Stat(ctx, dst); err != nil { - if os.IsNotExist(err) { - created = true - } else { - return http.StatusForbidden, err - } - } else { - if !overwrite { - return http.StatusPreconditionFailed, os.ErrExist - } - if err := fs.RemoveAll(ctx, dst); err != nil && !os.IsNotExist(err) { - return http.StatusForbidden, err - } - } - - if srcStat.IsDir() { - if err := fs.Mkdir(ctx, dst, srcPerm); err != nil { - return http.StatusForbidden, err - } - if depth == infiniteDepth { - children, err := srcFile.Readdir(-1) - if err != nil { - return http.StatusForbidden, err - } - for _, c := range children { - name := c.Name() - s := path.Join(src, name) - d := path.Join(dst, name) - cStatus, cErr := copyFiles(ctx, fs, s, d, overwrite, depth, recursion) - if cErr != nil { - // TODO: MultiStatus. - return cStatus, cErr - } - } - } - - } else { - dstFile, err := fs.OpenFile(ctx, dst, os.O_RDWR|os.O_CREATE|os.O_TRUNC, srcPerm) - if err != nil { - if os.IsNotExist(err) { - return http.StatusConflict, err - } - return http.StatusForbidden, err - - } - _, copyErr := io.Copy(dstFile, srcFile) - propsErr := copyProps(dstFile, srcFile) - closeErr := dstFile.Close() - if copyErr != nil { - return http.StatusInternalServerError, copyErr - } - if propsErr != nil { - return http.StatusInternalServerError, propsErr - } - if closeErr != nil { - return http.StatusInternalServerError, closeErr - } - } - - if created { - return http.StatusCreated, nil - } - return http.StatusNoContent, nil -} - -// walkFS traverses filesystem fs starting at name up to depth levels. -// -// Allowed values for depth are 0, 1 or infiniteDepth. For each visited node, -// walkFS calls walkFn. If a visited file system node is a directory and -// walkFn returns filepath.SkipDir, walkFS will skip traversal of this node. -func walkFS(ctx context.Context, fs FileSystem, depth int, name string, info os.FileInfo, walkFn filepath.WalkFunc) error { - // This implementation is based on Walk's code in the standard path/filepath package. - err := walkFn(name, info, nil) - if err != nil { - if info.IsDir() && err == filepath.SkipDir { - return nil - } - return err - } - if !info.IsDir() || depth == 0 { - return nil - } - if depth == 1 { - depth = 0 - } - - // Read directory names. - f, err := fs.OpenFile(ctx, name, os.O_RDONLY, 0) - if err != nil { - return walkFn(name, info, err) - } - fileInfos, err := f.Readdir(0) - f.Close() - if err != nil { - return walkFn(name, info, err) - } - - for _, fileInfo := range fileInfos { - filename := path.Join(name, fileInfo.Name()) - fileInfo, err := fs.Stat(ctx, filename) - if err != nil { - if err := walkFn(filename, fileInfo, err); err != nil && err != filepath.SkipDir { - return err - } - } else { - err = walkFS(ctx, fs, depth, filename, fileInfo, walkFn) - if err != nil { - if !fileInfo.IsDir() || err != filepath.SkipDir { - return err - } - } - } - } - return nil -} diff --git a/vendor/golang.org/x/net/webdav/file_go1.6.go b/vendor/golang.org/x/net/webdav/file_go1.6.go deleted file mode 100644 index fa387700..00000000 --- a/vendor/golang.org/x/net/webdav/file_go1.6.go +++ /dev/null @@ -1,17 +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. - -// +build !go1.7 - -package webdav - -import ( - "net/http" - - "golang.org/x/net/context" -) - -func getContext(r *http.Request) context.Context { - return context.Background() -} diff --git a/vendor/golang.org/x/net/webdav/file_go1.7.go b/vendor/golang.org/x/net/webdav/file_go1.7.go deleted file mode 100644 index d1c3de83..00000000 --- a/vendor/golang.org/x/net/webdav/file_go1.7.go +++ /dev/null @@ -1,16 +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. - -// +build go1.7 - -package webdav - -import ( - "context" - "net/http" -) - -func getContext(r *http.Request) context.Context { - return r.Context() -} diff --git a/vendor/golang.org/x/net/webdav/file_test.go b/vendor/golang.org/x/net/webdav/file_test.go deleted file mode 100644 index bfd96e19..00000000 --- a/vendor/golang.org/x/net/webdav/file_test.go +++ /dev/null @@ -1,1184 +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 webdav - -import ( - "encoding/xml" - "fmt" - "io" - "io/ioutil" - "os" - "path" - "path/filepath" - "reflect" - "runtime" - "sort" - "strconv" - "strings" - "testing" - - "golang.org/x/net/context" -) - -func TestSlashClean(t *testing.T) { - testCases := []string{ - "", - ".", - "/", - "/./", - "//", - "//.", - "//a", - "/a", - "/a/b/c", - "/a//b/./../c/d/", - "a", - "a/b/c", - } - for _, tc := range testCases { - got := slashClean(tc) - want := path.Clean("/" + tc) - if got != want { - t.Errorf("tc=%q: got %q, want %q", tc, got, want) - } - } -} - -func TestDirResolve(t *testing.T) { - testCases := []struct { - dir, name, want string - }{ - {"/", "", "/"}, - {"/", "/", "/"}, - {"/", ".", "/"}, - {"/", "./a", "/a"}, - {"/", "..", "/"}, - {"/", "..", "/"}, - {"/", "../", "/"}, - {"/", "../.", "/"}, - {"/", "../a", "/a"}, - {"/", "../..", "/"}, - {"/", "../bar/a", "/bar/a"}, - {"/", "../baz/a", "/baz/a"}, - {"/", "...", "/..."}, - {"/", ".../a", "/.../a"}, - {"/", ".../..", "/"}, - {"/", "a", "/a"}, - {"/", "a/./b", "/a/b"}, - {"/", "a/../../b", "/b"}, - {"/", "a/../b", "/b"}, - {"/", "a/b", "/a/b"}, - {"/", "a/b/c/../../d", "/a/d"}, - {"/", "a/b/c/../../../d", "/d"}, - {"/", "a/b/c/../../../../d", "/d"}, - {"/", "a/b/c/d", "/a/b/c/d"}, - - {"/foo/bar", "", "/foo/bar"}, - {"/foo/bar", "/", "/foo/bar"}, - {"/foo/bar", ".", "/foo/bar"}, - {"/foo/bar", "./a", "/foo/bar/a"}, - {"/foo/bar", "..", "/foo/bar"}, - {"/foo/bar", "../", "/foo/bar"}, - {"/foo/bar", "../.", "/foo/bar"}, - {"/foo/bar", "../a", "/foo/bar/a"}, - {"/foo/bar", "../..", "/foo/bar"}, - {"/foo/bar", "../bar/a", "/foo/bar/bar/a"}, - {"/foo/bar", "../baz/a", "/foo/bar/baz/a"}, - {"/foo/bar", "...", "/foo/bar/..."}, - {"/foo/bar", ".../a", "/foo/bar/.../a"}, - {"/foo/bar", ".../..", "/foo/bar"}, - {"/foo/bar", "a", "/foo/bar/a"}, - {"/foo/bar", "a/./b", "/foo/bar/a/b"}, - {"/foo/bar", "a/../../b", "/foo/bar/b"}, - {"/foo/bar", "a/../b", "/foo/bar/b"}, - {"/foo/bar", "a/b", "/foo/bar/a/b"}, - {"/foo/bar", "a/b/c/../../d", "/foo/bar/a/d"}, - {"/foo/bar", "a/b/c/../../../d", "/foo/bar/d"}, - {"/foo/bar", "a/b/c/../../../../d", "/foo/bar/d"}, - {"/foo/bar", "a/b/c/d", "/foo/bar/a/b/c/d"}, - - {"/foo/bar/", "", "/foo/bar"}, - {"/foo/bar/", "/", "/foo/bar"}, - {"/foo/bar/", ".", "/foo/bar"}, - {"/foo/bar/", "./a", "/foo/bar/a"}, - {"/foo/bar/", "..", "/foo/bar"}, - - {"/foo//bar///", "", "/foo/bar"}, - {"/foo//bar///", "/", "/foo/bar"}, - {"/foo//bar///", ".", "/foo/bar"}, - {"/foo//bar///", "./a", "/foo/bar/a"}, - {"/foo//bar///", "..", "/foo/bar"}, - - {"/x/y/z", "ab/c\x00d/ef", ""}, - - {".", "", "."}, - {".", "/", "."}, - {".", ".", "."}, - {".", "./a", "a"}, - {".", "..", "."}, - {".", "..", "."}, - {".", "../", "."}, - {".", "../.", "."}, - {".", "../a", "a"}, - {".", "../..", "."}, - {".", "../bar/a", "bar/a"}, - {".", "../baz/a", "baz/a"}, - {".", "...", "..."}, - {".", ".../a", ".../a"}, - {".", ".../..", "."}, - {".", "a", "a"}, - {".", "a/./b", "a/b"}, - {".", "a/../../b", "b"}, - {".", "a/../b", "b"}, - {".", "a/b", "a/b"}, - {".", "a/b/c/../../d", "a/d"}, - {".", "a/b/c/../../../d", "d"}, - {".", "a/b/c/../../../../d", "d"}, - {".", "a/b/c/d", "a/b/c/d"}, - - {"", "", "."}, - {"", "/", "."}, - {"", ".", "."}, - {"", "./a", "a"}, - {"", "..", "."}, - } - - for _, tc := range testCases { - d := Dir(filepath.FromSlash(tc.dir)) - if got := filepath.ToSlash(d.resolve(tc.name)); got != tc.want { - t.Errorf("dir=%q, name=%q: got %q, want %q", tc.dir, tc.name, got, tc.want) - } - } -} - -func TestWalk(t *testing.T) { - type walkStep struct { - name, frag string - final bool - } - - testCases := []struct { - dir string - want []walkStep - }{ - {"", []walkStep{ - {"", "", true}, - }}, - {"/", []walkStep{ - {"", "", true}, - }}, - {"/a", []walkStep{ - {"", "a", true}, - }}, - {"/a/", []walkStep{ - {"", "a", true}, - }}, - {"/a/b", []walkStep{ - {"", "a", false}, - {"a", "b", true}, - }}, - {"/a/b/", []walkStep{ - {"", "a", false}, - {"a", "b", true}, - }}, - {"/a/b/c", []walkStep{ - {"", "a", false}, - {"a", "b", false}, - {"b", "c", true}, - }}, - // The following test case is the one mentioned explicitly - // in the method description. - {"/foo/bar/x", []walkStep{ - {"", "foo", false}, - {"foo", "bar", false}, - {"bar", "x", true}, - }}, - } - - ctx := context.Background() - - for _, tc := range testCases { - fs := NewMemFS().(*memFS) - - parts := strings.Split(tc.dir, "/") - for p := 2; p < len(parts); p++ { - d := strings.Join(parts[:p], "/") - if err := fs.Mkdir(ctx, d, 0666); err != nil { - t.Errorf("tc.dir=%q: mkdir: %q: %v", tc.dir, d, err) - } - } - - i, prevFrag := 0, "" - err := fs.walk("test", tc.dir, func(dir *memFSNode, frag string, final bool) error { - got := walkStep{ - name: prevFrag, - frag: frag, - final: final, - } - want := tc.want[i] - - if got != want { - return fmt.Errorf("got %+v, want %+v", got, want) - } - i, prevFrag = i+1, frag - return nil - }) - if err != nil { - t.Errorf("tc.dir=%q: %v", tc.dir, err) - } - } -} - -// find appends to ss the names of the named file and its children. It is -// analogous to the Unix find command. -// -// The returned strings are not guaranteed to be in any particular order. -func find(ctx context.Context, ss []string, fs FileSystem, name string) ([]string, error) { - stat, err := fs.Stat(ctx, name) - if err != nil { - return nil, err - } - ss = append(ss, name) - if stat.IsDir() { - f, err := fs.OpenFile(ctx, name, os.O_RDONLY, 0) - if err != nil { - return nil, err - } - defer f.Close() - children, err := f.Readdir(-1) - if err != nil { - return nil, err - } - for _, c := range children { - ss, err = find(ctx, ss, fs, path.Join(name, c.Name())) - if err != nil { - return nil, err - } - } - } - return ss, nil -} - -func testFS(t *testing.T, fs FileSystem) { - errStr := func(err error) string { - switch { - case os.IsExist(err): - return "errExist" - case os.IsNotExist(err): - return "errNotExist" - case err != nil: - return "err" - } - return "ok" - } - - // The non-"find" non-"stat" test cases should change the file system state. The - // indentation of the "find"s and "stat"s helps distinguish such test cases. - testCases := []string{ - " stat / want dir", - " stat /a want errNotExist", - " stat /d want errNotExist", - " stat /d/e want errNotExist", - "create /a A want ok", - " stat /a want 1", - "create /d/e EEE want errNotExist", - "mk-dir /a want errExist", - "mk-dir /d/m want errNotExist", - "mk-dir /d want ok", - " stat /d want dir", - "create /d/e EEE want ok", - " stat /d/e want 3", - " find / /a /d /d/e", - "create /d/f FFFF want ok", - "create /d/g GGGGGGG want ok", - "mk-dir /d/m want ok", - "mk-dir /d/m want errExist", - "create /d/m/p PPPPP want ok", - " stat /d/e want 3", - " stat /d/f want 4", - " stat /d/g want 7", - " stat /d/h want errNotExist", - " stat /d/m want dir", - " stat /d/m/p want 5", - " find / /a /d /d/e /d/f /d/g /d/m /d/m/p", - "rm-all /d want ok", - " stat /a want 1", - " stat /d want errNotExist", - " stat /d/e want errNotExist", - " stat /d/f want errNotExist", - " stat /d/g want errNotExist", - " stat /d/m want errNotExist", - " stat /d/m/p want errNotExist", - " find / /a", - "mk-dir /d/m want errNotExist", - "mk-dir /d want ok", - "create /d/f FFFF want ok", - "rm-all /d/f want ok", - "mk-dir /d/m want ok", - "rm-all /z want ok", - "rm-all / want err", - "create /b BB want ok", - " stat / want dir", - " stat /a want 1", - " stat /b want 2", - " stat /c want errNotExist", - " stat /d want dir", - " stat /d/m want dir", - " find / /a /b /d /d/m", - "move__ o=F /b /c want ok", - " stat /b want errNotExist", - " stat /c want 2", - " stat /d/m want dir", - " stat /d/n want errNotExist", - " find / /a /c /d /d/m", - "move__ o=F /d/m /d/n want ok", - "create /d/n/q QQQQ want ok", - " stat /d/m want errNotExist", - " stat /d/n want dir", - " stat /d/n/q want 4", - "move__ o=F /d /d/n/z want err", - "move__ o=T /c /d/n/q want ok", - " stat /c want errNotExist", - " stat /d/n/q want 2", - " find / /a /d /d/n /d/n/q", - "create /d/n/r RRRRR want ok", - "mk-dir /u want ok", - "mk-dir /u/v want ok", - "move__ o=F /d/n /u want errExist", - "create /t TTTTTT want ok", - "move__ o=F /d/n /t want errExist", - "rm-all /t want ok", - "move__ o=F /d/n /t want ok", - " stat /d want dir", - " stat /d/n want errNotExist", - " stat /d/n/r want errNotExist", - " stat /t want dir", - " stat /t/q want 2", - " stat /t/r want 5", - " find / /a /d /t /t/q /t/r /u /u/v", - "move__ o=F /t / want errExist", - "move__ o=T /t /u/v want ok", - " stat /u/v/r want 5", - "move__ o=F / /z want err", - " find / /a /d /u /u/v /u/v/q /u/v/r", - " stat /a want 1", - " stat /b want errNotExist", - " stat /c want errNotExist", - " stat /u/v/r want 5", - "copy__ o=F d=0 /a /b want ok", - "copy__ o=T d=0 /a /c want ok", - " stat /a want 1", - " stat /b want 1", - " stat /c want 1", - " stat /u/v/r want 5", - "copy__ o=F d=0 /u/v/r /b want errExist", - " stat /b want 1", - "copy__ o=T d=0 /u/v/r /b want ok", - " stat /a want 1", - " stat /b want 5", - " stat /u/v/r want 5", - "rm-all /a want ok", - "rm-all /b want ok", - "mk-dir /u/v/w want ok", - "create /u/v/w/s SSSSSSSS want ok", - " stat /d want dir", - " stat /d/x want errNotExist", - " stat /d/y want errNotExist", - " stat /u/v/r want 5", - " stat /u/v/w/s want 8", - " find / /c /d /u /u/v /u/v/q /u/v/r /u/v/w /u/v/w/s", - "copy__ o=T d=0 /u/v /d/x want ok", - "copy__ o=T d=∞ /u/v /d/y want ok", - "rm-all /u want ok", - " stat /d/x want dir", - " stat /d/x/q want errNotExist", - " stat /d/x/r want errNotExist", - " stat /d/x/w want errNotExist", - " stat /d/x/w/s want errNotExist", - " stat /d/y want dir", - " stat /d/y/q want 2", - " stat /d/y/r want 5", - " stat /d/y/w want dir", - " stat /d/y/w/s want 8", - " stat /u want errNotExist", - " find / /c /d /d/x /d/y /d/y/q /d/y/r /d/y/w /d/y/w/s", - "copy__ o=F d=∞ /d/y /d/x want errExist", - } - - ctx := context.Background() - - for i, tc := range testCases { - tc = strings.TrimSpace(tc) - j := strings.IndexByte(tc, ' ') - if j < 0 { - t.Fatalf("test case #%d %q: invalid command", i, tc) - } - op, arg := tc[:j], tc[j+1:] - - switch op { - default: - t.Fatalf("test case #%d %q: invalid operation %q", i, tc, op) - - case "create": - parts := strings.Split(arg, " ") - if len(parts) != 4 || parts[2] != "want" { - t.Fatalf("test case #%d %q: invalid write", i, tc) - } - f, opErr := fs.OpenFile(ctx, parts[0], os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - if got := errStr(opErr); got != parts[3] { - t.Fatalf("test case #%d %q: OpenFile: got %q (%v), want %q", i, tc, got, opErr, parts[3]) - } - if f != nil { - if _, err := f.Write([]byte(parts[1])); err != nil { - t.Fatalf("test case #%d %q: Write: %v", i, tc, err) - } - if err := f.Close(); err != nil { - t.Fatalf("test case #%d %q: Close: %v", i, tc, err) - } - } - - case "find": - got, err := find(ctx, nil, fs, "/") - if err != nil { - t.Fatalf("test case #%d %q: find: %v", i, tc, err) - } - sort.Strings(got) - want := strings.Split(arg, " ") - if !reflect.DeepEqual(got, want) { - t.Fatalf("test case #%d %q:\ngot %s\nwant %s", i, tc, got, want) - } - - case "copy__", "mk-dir", "move__", "rm-all", "stat": - nParts := 3 - switch op { - case "copy__": - nParts = 6 - case "move__": - nParts = 5 - } - parts := strings.Split(arg, " ") - if len(parts) != nParts { - t.Fatalf("test case #%d %q: invalid %s", i, tc, op) - } - - got, opErr := "", error(nil) - switch op { - case "copy__": - depth := 0 - if parts[1] == "d=∞" { - depth = infiniteDepth - } - _, opErr = copyFiles(ctx, fs, parts[2], parts[3], parts[0] == "o=T", depth, 0) - case "mk-dir": - opErr = fs.Mkdir(ctx, parts[0], 0777) - case "move__": - _, opErr = moveFiles(ctx, fs, parts[1], parts[2], parts[0] == "o=T") - case "rm-all": - opErr = fs.RemoveAll(ctx, parts[0]) - case "stat": - var stat os.FileInfo - fileName := parts[0] - if stat, opErr = fs.Stat(ctx, fileName); opErr == nil { - if stat.IsDir() { - got = "dir" - } else { - got = strconv.Itoa(int(stat.Size())) - } - - if fileName == "/" { - // For a Dir FileSystem, the virtual file system root maps to a - // real file system name like "/tmp/webdav-test012345", which does - // not end with "/". We skip such cases. - } else if statName := stat.Name(); path.Base(fileName) != statName { - t.Fatalf("test case #%d %q: file name %q inconsistent with stat name %q", - i, tc, fileName, statName) - } - } - } - if got == "" { - got = errStr(opErr) - } - - if parts[len(parts)-2] != "want" { - t.Fatalf("test case #%d %q: invalid %s", i, tc, op) - } - if want := parts[len(parts)-1]; got != want { - t.Fatalf("test case #%d %q: got %q (%v), want %q", i, tc, got, opErr, want) - } - } - } -} - -func TestDir(t *testing.T) { - switch runtime.GOOS { - case "nacl": - t.Skip("see golang.org/issue/12004") - case "plan9": - t.Skip("see golang.org/issue/11453") - } - - td, err := ioutil.TempDir("", "webdav-test") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(td) - testFS(t, Dir(td)) -} - -func TestMemFS(t *testing.T) { - testFS(t, NewMemFS()) -} - -func TestMemFSRoot(t *testing.T) { - ctx := context.Background() - fs := NewMemFS() - for i := 0; i < 5; i++ { - stat, err := fs.Stat(ctx, "/") - if err != nil { - t.Fatalf("i=%d: Stat: %v", i, err) - } - if !stat.IsDir() { - t.Fatalf("i=%d: Stat.IsDir is false, want true", i) - } - - f, err := fs.OpenFile(ctx, "/", os.O_RDONLY, 0) - if err != nil { - t.Fatalf("i=%d: OpenFile: %v", i, err) - } - defer f.Close() - children, err := f.Readdir(-1) - if err != nil { - t.Fatalf("i=%d: Readdir: %v", i, err) - } - if len(children) != i { - t.Fatalf("i=%d: got %d children, want %d", i, len(children), i) - } - - if _, err := f.Write(make([]byte, 1)); err == nil { - t.Fatalf("i=%d: Write: got nil error, want non-nil", i) - } - - if err := fs.Mkdir(ctx, fmt.Sprintf("/dir%d", i), 0777); err != nil { - t.Fatalf("i=%d: Mkdir: %v", i, err) - } - } -} - -func TestMemFileReaddir(t *testing.T) { - ctx := context.Background() - fs := NewMemFS() - if err := fs.Mkdir(ctx, "/foo", 0777); err != nil { - t.Fatalf("Mkdir: %v", err) - } - readdir := func(count int) ([]os.FileInfo, error) { - f, err := fs.OpenFile(ctx, "/foo", os.O_RDONLY, 0) - if err != nil { - t.Fatalf("OpenFile: %v", err) - } - defer f.Close() - return f.Readdir(count) - } - if got, err := readdir(-1); len(got) != 0 || err != nil { - t.Fatalf("readdir(-1): got %d fileInfos with err=%v, want 0, <nil>", len(got), err) - } - if got, err := readdir(+1); len(got) != 0 || err != io.EOF { - t.Fatalf("readdir(+1): got %d fileInfos with err=%v, want 0, EOF", len(got), err) - } -} - -func TestMemFile(t *testing.T) { - testCases := []string{ - "wantData ", - "wantSize 0", - "write abc", - "wantData abc", - "write de", - "wantData abcde", - "wantSize 5", - "write 5*x", - "write 4*y+2*z", - "write 3*st", - "wantData abcdexxxxxyyyyzzststst", - "wantSize 22", - "seek set 4 want 4", - "write EFG", - "wantData abcdEFGxxxyyyyzzststst", - "wantSize 22", - "seek set 2 want 2", - "read cdEF", - "read Gx", - "seek cur 0 want 8", - "seek cur 2 want 10", - "seek cur -1 want 9", - "write J", - "wantData abcdEFGxxJyyyyzzststst", - "wantSize 22", - "seek cur -4 want 6", - "write ghijk", - "wantData abcdEFghijkyyyzzststst", - "wantSize 22", - "read yyyz", - "seek cur 0 want 15", - "write ", - "seek cur 0 want 15", - "read ", - "seek cur 0 want 15", - "seek end -3 want 19", - "write ZZ", - "wantData abcdEFghijkyyyzzstsZZt", - "wantSize 22", - "write 4*A", - "wantData abcdEFghijkyyyzzstsZZAAAA", - "wantSize 25", - "seek end 0 want 25", - "seek end -5 want 20", - "read Z+4*A", - "write 5*B", - "wantData abcdEFghijkyyyzzstsZZAAAABBBBB", - "wantSize 30", - "seek end 10 want 40", - "write C", - "wantData abcdEFghijkyyyzzstsZZAAAABBBBB..........C", - "wantSize 41", - "write D", - "wantData abcdEFghijkyyyzzstsZZAAAABBBBB..........CD", - "wantSize 42", - "seek set 43 want 43", - "write E", - "wantData abcdEFghijkyyyzzstsZZAAAABBBBB..........CD.E", - "wantSize 44", - "seek set 0 want 0", - "write 5*123456789_", - "wantData 123456789_123456789_123456789_123456789_123456789_", - "wantSize 50", - "seek cur 0 want 50", - "seek cur -99 want err", - } - - ctx := context.Background() - - const filename = "/foo" - fs := NewMemFS() - f, err := fs.OpenFile(ctx, filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - if err != nil { - t.Fatalf("OpenFile: %v", err) - } - defer f.Close() - - for i, tc := range testCases { - j := strings.IndexByte(tc, ' ') - if j < 0 { - t.Fatalf("test case #%d %q: invalid command", i, tc) - } - op, arg := tc[:j], tc[j+1:] - - // Expand an arg like "3*a+2*b" to "aaabb". - parts := strings.Split(arg, "+") - for j, part := range parts { - if k := strings.IndexByte(part, '*'); k >= 0 { - repeatCount, repeatStr := part[:k], part[k+1:] - n, err := strconv.Atoi(repeatCount) - if err != nil { - t.Fatalf("test case #%d %q: invalid repeat count %q", i, tc, repeatCount) - } - parts[j] = strings.Repeat(repeatStr, n) - } - } - arg = strings.Join(parts, "") - - switch op { - default: - t.Fatalf("test case #%d %q: invalid operation %q", i, tc, op) - - case "read": - buf := make([]byte, len(arg)) - if _, err := io.ReadFull(f, buf); err != nil { - t.Fatalf("test case #%d %q: ReadFull: %v", i, tc, err) - } - if got := string(buf); got != arg { - t.Fatalf("test case #%d %q:\ngot %q\nwant %q", i, tc, got, arg) - } - - case "seek": - parts := strings.Split(arg, " ") - if len(parts) != 4 { - t.Fatalf("test case #%d %q: invalid seek", i, tc) - } - - whence := 0 - switch parts[0] { - default: - t.Fatalf("test case #%d %q: invalid seek whence", i, tc) - case "set": - whence = os.SEEK_SET - case "cur": - whence = os.SEEK_CUR - case "end": - whence = os.SEEK_END - } - offset, err := strconv.Atoi(parts[1]) - if err != nil { - t.Fatalf("test case #%d %q: invalid offset %q", i, tc, parts[1]) - } - - if parts[2] != "want" { - t.Fatalf("test case #%d %q: invalid seek", i, tc) - } - if parts[3] == "err" { - _, err := f.Seek(int64(offset), whence) - if err == nil { - t.Fatalf("test case #%d %q: Seek returned nil error, want non-nil", i, tc) - } - } else { - got, err := f.Seek(int64(offset), whence) - if err != nil { - t.Fatalf("test case #%d %q: Seek: %v", i, tc, err) - } - want, err := strconv.Atoi(parts[3]) - if err != nil { - t.Fatalf("test case #%d %q: invalid want %q", i, tc, parts[3]) - } - if got != int64(want) { - t.Fatalf("test case #%d %q: got %d, want %d", i, tc, got, want) - } - } - - case "write": - n, err := f.Write([]byte(arg)) - if err != nil { - t.Fatalf("test case #%d %q: write: %v", i, tc, err) - } - if n != len(arg) { - t.Fatalf("test case #%d %q: write returned %d bytes, want %d", i, tc, n, len(arg)) - } - - case "wantData": - g, err := fs.OpenFile(ctx, filename, os.O_RDONLY, 0666) - if err != nil { - t.Fatalf("test case #%d %q: OpenFile: %v", i, tc, err) - } - gotBytes, err := ioutil.ReadAll(g) - if err != nil { - t.Fatalf("test case #%d %q: ReadAll: %v", i, tc, err) - } - for i, c := range gotBytes { - if c == '\x00' { - gotBytes[i] = '.' - } - } - got := string(gotBytes) - if got != arg { - t.Fatalf("test case #%d %q:\ngot %q\nwant %q", i, tc, got, arg) - } - if err := g.Close(); err != nil { - t.Fatalf("test case #%d %q: Close: %v", i, tc, err) - } - - case "wantSize": - n, err := strconv.Atoi(arg) - if err != nil { - t.Fatalf("test case #%d %q: invalid size %q", i, tc, arg) - } - fi, err := fs.Stat(ctx, filename) - if err != nil { - t.Fatalf("test case #%d %q: Stat: %v", i, tc, err) - } - if got, want := fi.Size(), int64(n); got != want { - t.Fatalf("test case #%d %q: got %d, want %d", i, tc, got, want) - } - } - } -} - -// TestMemFileWriteAllocs tests that writing N consecutive 1KiB chunks to a -// memFile doesn't allocate a new buffer for each of those N times. Otherwise, -// calling io.Copy(aMemFile, src) is likely to have quadratic complexity. -func TestMemFileWriteAllocs(t *testing.T) { - if runtime.Compiler == "gccgo" { - t.Skip("gccgo allocates here") - } - ctx := context.Background() - fs := NewMemFS() - f, err := fs.OpenFile(ctx, "/xxx", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - if err != nil { - t.Fatalf("OpenFile: %v", err) - } - defer f.Close() - - xxx := make([]byte, 1024) - for i := range xxx { - xxx[i] = 'x' - } - - a := testing.AllocsPerRun(100, func() { - f.Write(xxx) - }) - // AllocsPerRun returns an integral value, so we compare the rounded-down - // number to zero. - if a > 0 { - t.Fatalf("%v allocs per run, want 0", a) - } -} - -func BenchmarkMemFileWrite(b *testing.B) { - ctx := context.Background() - fs := NewMemFS() - xxx := make([]byte, 1024) - for i := range xxx { - xxx[i] = 'x' - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - f, err := fs.OpenFile(ctx, "/xxx", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - if err != nil { - b.Fatalf("OpenFile: %v", err) - } - for j := 0; j < 100; j++ { - f.Write(xxx) - } - if err := f.Close(); err != nil { - b.Fatalf("Close: %v", err) - } - if err := fs.RemoveAll(ctx, "/xxx"); err != nil { - b.Fatalf("RemoveAll: %v", err) - } - } -} - -func TestCopyMoveProps(t *testing.T) { - ctx := context.Background() - fs := NewMemFS() - create := func(name string) error { - f, err := fs.OpenFile(ctx, name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - if err != nil { - return err - } - _, wErr := f.Write([]byte("contents")) - cErr := f.Close() - if wErr != nil { - return wErr - } - return cErr - } - patch := func(name string, patches ...Proppatch) error { - f, err := fs.OpenFile(ctx, name, os.O_RDWR, 0666) - if err != nil { - return err - } - _, pErr := f.(DeadPropsHolder).Patch(patches) - cErr := f.Close() - if pErr != nil { - return pErr - } - return cErr - } - props := func(name string) (map[xml.Name]Property, error) { - f, err := fs.OpenFile(ctx, name, os.O_RDWR, 0666) - if err != nil { - return nil, err - } - m, pErr := f.(DeadPropsHolder).DeadProps() - cErr := f.Close() - if pErr != nil { - return nil, pErr - } - if cErr != nil { - return nil, cErr - } - return m, nil - } - - p0 := Property{ - XMLName: xml.Name{Space: "x:", Local: "boat"}, - InnerXML: []byte("pea-green"), - } - p1 := Property{ - XMLName: xml.Name{Space: "x:", Local: "ring"}, - InnerXML: []byte("1 shilling"), - } - p2 := Property{ - XMLName: xml.Name{Space: "x:", Local: "spoon"}, - InnerXML: []byte("runcible"), - } - p3 := Property{ - XMLName: xml.Name{Space: "x:", Local: "moon"}, - InnerXML: []byte("light"), - } - - if err := create("/src"); err != nil { - t.Fatalf("create /src: %v", err) - } - if err := patch("/src", Proppatch{Props: []Property{p0, p1}}); err != nil { - t.Fatalf("patch /src +p0 +p1: %v", err) - } - if _, err := copyFiles(ctx, fs, "/src", "/tmp", true, infiniteDepth, 0); err != nil { - t.Fatalf("copyFiles /src /tmp: %v", err) - } - if _, err := moveFiles(ctx, fs, "/tmp", "/dst", true); err != nil { - t.Fatalf("moveFiles /tmp /dst: %v", err) - } - if err := patch("/src", Proppatch{Props: []Property{p0}, Remove: true}); err != nil { - t.Fatalf("patch /src -p0: %v", err) - } - if err := patch("/src", Proppatch{Props: []Property{p2}}); err != nil { - t.Fatalf("patch /src +p2: %v", err) - } - if err := patch("/dst", Proppatch{Props: []Property{p1}, Remove: true}); err != nil { - t.Fatalf("patch /dst -p1: %v", err) - } - if err := patch("/dst", Proppatch{Props: []Property{p3}}); err != nil { - t.Fatalf("patch /dst +p3: %v", err) - } - - gotSrc, err := props("/src") - if err != nil { - t.Fatalf("props /src: %v", err) - } - wantSrc := map[xml.Name]Property{ - p1.XMLName: p1, - p2.XMLName: p2, - } - if !reflect.DeepEqual(gotSrc, wantSrc) { - t.Fatalf("props /src:\ngot %v\nwant %v", gotSrc, wantSrc) - } - - gotDst, err := props("/dst") - if err != nil { - t.Fatalf("props /dst: %v", err) - } - wantDst := map[xml.Name]Property{ - p0.XMLName: p0, - p3.XMLName: p3, - } - if !reflect.DeepEqual(gotDst, wantDst) { - t.Fatalf("props /dst:\ngot %v\nwant %v", gotDst, wantDst) - } -} - -func TestWalkFS(t *testing.T) { - testCases := []struct { - desc string - buildfs []string - startAt string - depth int - walkFn filepath.WalkFunc - want []string - }{{ - "just root", - []string{}, - "/", - infiniteDepth, - nil, - []string{ - "/", - }, - }, { - "infinite walk from root", - []string{ - "mkdir /a", - "mkdir /a/b", - "touch /a/b/c", - "mkdir /a/d", - "mkdir /e", - "touch /f", - }, - "/", - infiniteDepth, - nil, - []string{ - "/", - "/a", - "/a/b", - "/a/b/c", - "/a/d", - "/e", - "/f", - }, - }, { - "infinite walk from subdir", - []string{ - "mkdir /a", - "mkdir /a/b", - "touch /a/b/c", - "mkdir /a/d", - "mkdir /e", - "touch /f", - }, - "/a", - infiniteDepth, - nil, - []string{ - "/a", - "/a/b", - "/a/b/c", - "/a/d", - }, - }, { - "depth 1 walk from root", - []string{ - "mkdir /a", - "mkdir /a/b", - "touch /a/b/c", - "mkdir /a/d", - "mkdir /e", - "touch /f", - }, - "/", - 1, - nil, - []string{ - "/", - "/a", - "/e", - "/f", - }, - }, { - "depth 1 walk from subdir", - []string{ - "mkdir /a", - "mkdir /a/b", - "touch /a/b/c", - "mkdir /a/b/g", - "mkdir /a/b/g/h", - "touch /a/b/g/i", - "touch /a/b/g/h/j", - }, - "/a/b", - 1, - nil, - []string{ - "/a/b", - "/a/b/c", - "/a/b/g", - }, - }, { - "depth 0 walk from subdir", - []string{ - "mkdir /a", - "mkdir /a/b", - "touch /a/b/c", - "mkdir /a/b/g", - "mkdir /a/b/g/h", - "touch /a/b/g/i", - "touch /a/b/g/h/j", - }, - "/a/b", - 0, - nil, - []string{ - "/a/b", - }, - }, { - "infinite walk from file", - []string{ - "mkdir /a", - "touch /a/b", - "touch /a/c", - }, - "/a/b", - 0, - nil, - []string{ - "/a/b", - }, - }, { - "infinite walk with skipped subdir", - []string{ - "mkdir /a", - "mkdir /a/b", - "touch /a/b/c", - "mkdir /a/b/g", - "mkdir /a/b/g/h", - "touch /a/b/g/i", - "touch /a/b/g/h/j", - "touch /a/b/z", - }, - "/", - infiniteDepth, - func(path string, info os.FileInfo, err error) error { - if path == "/a/b/g" { - return filepath.SkipDir - } - return nil - }, - []string{ - "/", - "/a", - "/a/b", - "/a/b/c", - "/a/b/z", - }, - }} - ctx := context.Background() - for _, tc := range testCases { - fs, err := buildTestFS(tc.buildfs) - if err != nil { - t.Fatalf("%s: cannot create test filesystem: %v", tc.desc, err) - } - var got []string - traceFn := func(path string, info os.FileInfo, err error) error { - if tc.walkFn != nil { - err = tc.walkFn(path, info, err) - if err != nil { - return err - } - } - got = append(got, path) - return nil - } - fi, err := fs.Stat(ctx, tc.startAt) - if err != nil { - t.Fatalf("%s: cannot stat: %v", tc.desc, err) - } - err = walkFS(ctx, fs, tc.depth, tc.startAt, fi, traceFn) - if err != nil { - t.Errorf("%s:\ngot error %v, want nil", tc.desc, err) - continue - } - sort.Strings(got) - sort.Strings(tc.want) - if !reflect.DeepEqual(got, tc.want) { - t.Errorf("%s:\ngot %q\nwant %q", tc.desc, got, tc.want) - continue - } - } -} - -func buildTestFS(buildfs []string) (FileSystem, error) { - // TODO: Could this be merged with the build logic in TestFS? - - ctx := context.Background() - fs := NewMemFS() - for _, b := range buildfs { - op := strings.Split(b, " ") - switch op[0] { - case "mkdir": - err := fs.Mkdir(ctx, op[1], os.ModeDir|0777) - if err != nil { - return nil, err - } - case "touch": - f, err := fs.OpenFile(ctx, op[1], os.O_RDWR|os.O_CREATE, 0666) - if err != nil { - return nil, err - } - f.Close() - case "write": - f, err := fs.OpenFile(ctx, op[1], os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - if err != nil { - return nil, err - } - _, err = f.Write([]byte(op[2])) - f.Close() - if err != nil { - return nil, err - } - default: - return nil, fmt.Errorf("unknown file operation %q", op[0]) - } - } - return fs, nil -} diff --git a/vendor/golang.org/x/net/webdav/if.go b/vendor/golang.org/x/net/webdav/if.go deleted file mode 100644 index 416e81cd..00000000 --- a/vendor/golang.org/x/net/webdav/if.go +++ /dev/null @@ -1,173 +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 webdav - -// The If header is covered by Section 10.4. -// http://www.webdav.org/specs/rfc4918.html#HEADER_If - -import ( - "strings" -) - -// ifHeader is a disjunction (OR) of ifLists. -type ifHeader struct { - lists []ifList -} - -// ifList is a conjunction (AND) of Conditions, and an optional resource tag. -type ifList struct { - resourceTag string - conditions []Condition -} - -// parseIfHeader parses the "If: foo bar" HTTP header. The httpHeader string -// should omit the "If:" prefix and have any "\r\n"s collapsed to a " ", as is -// returned by req.Header.Get("If") for a http.Request req. -func parseIfHeader(httpHeader string) (h ifHeader, ok bool) { - s := strings.TrimSpace(httpHeader) - switch tokenType, _, _ := lex(s); tokenType { - case '(': - return parseNoTagLists(s) - case angleTokenType: - return parseTaggedLists(s) - default: - return ifHeader{}, false - } -} - -func parseNoTagLists(s string) (h ifHeader, ok bool) { - for { - l, remaining, ok := parseList(s) - if !ok { - return ifHeader{}, false - } - h.lists = append(h.lists, l) - if remaining == "" { - return h, true - } - s = remaining - } -} - -func parseTaggedLists(s string) (h ifHeader, ok bool) { - resourceTag, n := "", 0 - for first := true; ; first = false { - tokenType, tokenStr, remaining := lex(s) - switch tokenType { - case angleTokenType: - if !first && n == 0 { - return ifHeader{}, false - } - resourceTag, n = tokenStr, 0 - s = remaining - case '(': - n++ - l, remaining, ok := parseList(s) - if !ok { - return ifHeader{}, false - } - l.resourceTag = resourceTag - h.lists = append(h.lists, l) - if remaining == "" { - return h, true - } - s = remaining - default: - return ifHeader{}, false - } - } -} - -func parseList(s string) (l ifList, remaining string, ok bool) { - tokenType, _, s := lex(s) - if tokenType != '(' { - return ifList{}, "", false - } - for { - tokenType, _, remaining = lex(s) - if tokenType == ')' { - if len(l.conditions) == 0 { - return ifList{}, "", false - } - return l, remaining, true - } - c, remaining, ok := parseCondition(s) - if !ok { - return ifList{}, "", false - } - l.conditions = append(l.conditions, c) - s = remaining - } -} - -func parseCondition(s string) (c Condition, remaining string, ok bool) { - tokenType, tokenStr, s := lex(s) - if tokenType == notTokenType { - c.Not = true - tokenType, tokenStr, s = lex(s) - } - switch tokenType { - case strTokenType, angleTokenType: - c.Token = tokenStr - case squareTokenType: - c.ETag = tokenStr - default: - return Condition{}, "", false - } - return c, s, true -} - -// Single-rune tokens like '(' or ')' have a token type equal to their rune. -// All other tokens have a negative token type. -const ( - errTokenType = rune(-1) - eofTokenType = rune(-2) - strTokenType = rune(-3) - notTokenType = rune(-4) - angleTokenType = rune(-5) - squareTokenType = rune(-6) -) - -func lex(s string) (tokenType rune, tokenStr string, remaining string) { - // The net/textproto Reader that parses the HTTP header will collapse - // Linear White Space that spans multiple "\r\n" lines to a single " ", - // so we don't need to look for '\r' or '\n'. - for len(s) > 0 && (s[0] == '\t' || s[0] == ' ') { - s = s[1:] - } - if len(s) == 0 { - return eofTokenType, "", "" - } - i := 0 -loop: - for ; i < len(s); i++ { - switch s[i] { - case '\t', ' ', '(', ')', '<', '>', '[', ']': - break loop - } - } - - if i != 0 { - tokenStr, remaining = s[:i], s[i:] - if tokenStr == "Not" { - return notTokenType, "", remaining - } - return strTokenType, tokenStr, remaining - } - - j := 0 - switch s[0] { - case '<': - j, tokenType = strings.IndexByte(s, '>'), angleTokenType - case '[': - j, tokenType = strings.IndexByte(s, ']'), squareTokenType - default: - return rune(s[0]), "", s[1:] - } - if j < 0 { - return errTokenType, "", "" - } - return tokenType, s[1:j], s[j+1:] -} diff --git a/vendor/golang.org/x/net/webdav/if_test.go b/vendor/golang.org/x/net/webdav/if_test.go deleted file mode 100644 index aad61a40..00000000 --- a/vendor/golang.org/x/net/webdav/if_test.go +++ /dev/null @@ -1,322 +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 webdav - -import ( - "reflect" - "strings" - "testing" -) - -func TestParseIfHeader(t *testing.T) { - // The "section x.y.z" test cases come from section x.y.z of the spec at - // http://www.webdav.org/specs/rfc4918.html - testCases := []struct { - desc string - input string - want ifHeader - }{{ - "bad: empty", - ``, - ifHeader{}, - }, { - "bad: no parens", - `foobar`, - ifHeader{}, - }, { - "bad: empty list #1", - `()`, - ifHeader{}, - }, { - "bad: empty list #2", - `(a) (b c) () (d)`, - ifHeader{}, - }, { - "bad: no list after resource #1", - `<foo>`, - ifHeader{}, - }, { - "bad: no list after resource #2", - `<foo> <bar> (a)`, - ifHeader{}, - }, { - "bad: no list after resource #3", - `<foo> (a) (b) <bar>`, - ifHeader{}, - }, { - "bad: no-tag-list followed by tagged-list", - `(a) (b) <foo> (c)`, - ifHeader{}, - }, { - "bad: unfinished list", - `(a`, - ifHeader{}, - }, { - "bad: unfinished ETag", - `([b`, - ifHeader{}, - }, { - "bad: unfinished Notted list", - `(Not a`, - ifHeader{}, - }, { - "bad: double Not", - `(Not Not a)`, - ifHeader{}, - }, { - "good: one list with a Token", - `(a)`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Token: `a`, - }}, - }}, - }, - }, { - "good: one list with an ETag", - `([a])`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - ETag: `a`, - }}, - }}, - }, - }, { - "good: one list with three Nots", - `(Not a Not b Not [d])`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Not: true, - Token: `a`, - }, { - Not: true, - Token: `b`, - }, { - Not: true, - ETag: `d`, - }}, - }}, - }, - }, { - "good: two lists", - `(a) (b)`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Token: `a`, - }}, - }, { - conditions: []Condition{{ - Token: `b`, - }}, - }}, - }, - }, { - "good: two Notted lists", - `(Not a) (Not b)`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Not: true, - Token: `a`, - }}, - }, { - conditions: []Condition{{ - Not: true, - Token: `b`, - }}, - }}, - }, - }, { - "section 7.5.1", - `<http://www.example.com/users/f/fielding/index.html> - (<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>)`, - ifHeader{ - lists: []ifList{{ - resourceTag: `http://www.example.com/users/f/fielding/index.html`, - conditions: []Condition{{ - Token: `urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6`, - }}, - }}, - }, - }, { - "section 7.5.2 #1", - `(<urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf>)`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Token: `urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf`, - }}, - }}, - }, - }, { - "section 7.5.2 #2", - `<http://example.com/locked/> - (<urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf>)`, - ifHeader{ - lists: []ifList{{ - resourceTag: `http://example.com/locked/`, - conditions: []Condition{{ - Token: `urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf`, - }}, - }}, - }, - }, { - "section 7.5.2 #3", - `<http://example.com/locked/member> - (<urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf>)`, - ifHeader{ - lists: []ifList{{ - resourceTag: `http://example.com/locked/member`, - conditions: []Condition{{ - Token: `urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf`, - }}, - }}, - }, - }, { - "section 9.9.6", - `(<urn:uuid:fe184f2e-6eec-41d0-c765-01adc56e6bb4>) - (<urn:uuid:e454f3f3-acdc-452a-56c7-00a5c91e4b77>)`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Token: `urn:uuid:fe184f2e-6eec-41d0-c765-01adc56e6bb4`, - }}, - }, { - conditions: []Condition{{ - Token: `urn:uuid:e454f3f3-acdc-452a-56c7-00a5c91e4b77`, - }}, - }}, - }, - }, { - "section 9.10.8", - `(<urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>)`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Token: `urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4`, - }}, - }}, - }, - }, { - "section 10.4.6", - `(<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2> - ["I am an ETag"]) - (["I am another ETag"])`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Token: `urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2`, - }, { - ETag: `"I am an ETag"`, - }}, - }, { - conditions: []Condition{{ - ETag: `"I am another ETag"`, - }}, - }}, - }, - }, { - "section 10.4.7", - `(Not <urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2> - <urn:uuid:58f202ac-22cf-11d1-b12d-002035b29092>)`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Not: true, - Token: `urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2`, - }, { - Token: `urn:uuid:58f202ac-22cf-11d1-b12d-002035b29092`, - }}, - }}, - }, - }, { - "section 10.4.8", - `(<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2>) - (Not <DAV:no-lock>)`, - ifHeader{ - lists: []ifList{{ - conditions: []Condition{{ - Token: `urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2`, - }}, - }, { - conditions: []Condition{{ - Not: true, - Token: `DAV:no-lock`, - }}, - }}, - }, - }, { - "section 10.4.9", - `</resource1> - (<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2> - [W/"A weak ETag"]) (["strong ETag"])`, - ifHeader{ - lists: []ifList{{ - resourceTag: `/resource1`, - conditions: []Condition{{ - Token: `urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2`, - }, { - ETag: `W/"A weak ETag"`, - }}, - }, { - resourceTag: `/resource1`, - conditions: []Condition{{ - ETag: `"strong ETag"`, - }}, - }}, - }, - }, { - "section 10.4.10", - `<http://www.example.com/specs/> - (<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2>)`, - ifHeader{ - lists: []ifList{{ - resourceTag: `http://www.example.com/specs/`, - conditions: []Condition{{ - Token: `urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2`, - }}, - }}, - }, - }, { - "section 10.4.11 #1", - `</specs/rfc2518.doc> (["4217"])`, - ifHeader{ - lists: []ifList{{ - resourceTag: `/specs/rfc2518.doc`, - conditions: []Condition{{ - ETag: `"4217"`, - }}, - }}, - }, - }, { - "section 10.4.11 #2", - `</specs/rfc2518.doc> (Not ["4217"])`, - ifHeader{ - lists: []ifList{{ - resourceTag: `/specs/rfc2518.doc`, - conditions: []Condition{{ - Not: true, - ETag: `"4217"`, - }}, - }}, - }, - }} - - for _, tc := range testCases { - got, ok := parseIfHeader(strings.Replace(tc.input, "\n", "", -1)) - if gotEmpty := reflect.DeepEqual(got, ifHeader{}); gotEmpty == ok { - t.Errorf("%s: should be different: empty header == %t, ok == %t", tc.desc, gotEmpty, ok) - continue - } - if !reflect.DeepEqual(got, tc.want) { - t.Errorf("%s:\ngot %v\nwant %v", tc.desc, got, tc.want) - continue - } - } -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/README b/vendor/golang.org/x/net/webdav/internal/xml/README deleted file mode 100644 index 89656f48..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/README +++ /dev/null @@ -1,11 +0,0 @@ -This is a fork of the encoding/xml package at ca1d6c4, the last commit before -https://go.googlesource.com/go/+/c0d6d33 "encoding/xml: restore Go 1.4 name -space behavior" made late in the lead-up to the Go 1.5 release. - -The list of encoding/xml changes is at -https://go.googlesource.com/go/+log/master/src/encoding/xml - -This fork is temporary, and I (nigeltao) expect to revert it after Go 1.6 is -released. - -See http://golang.org/issue/11841 diff --git a/vendor/golang.org/x/net/webdav/internal/xml/atom_test.go b/vendor/golang.org/x/net/webdav/internal/xml/atom_test.go deleted file mode 100644 index a7128431..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/atom_test.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import "time" - -var atomValue = &Feed{ - XMLName: Name{"http://www.w3.org/2005/Atom", "feed"}, - Title: "Example Feed", - Link: []Link{{Href: "http://example.org/"}}, - Updated: ParseTime("2003-12-13T18:30:02Z"), - Author: Person{Name: "John Doe"}, - Id: "urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6", - - Entry: []Entry{ - { - Title: "Atom-Powered Robots Run Amok", - Link: []Link{{Href: "http://example.org/2003/12/13/atom03"}}, - Id: "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a", - Updated: ParseTime("2003-12-13T18:30:02Z"), - Summary: NewText("Some text."), - }, - }, -} - -var atomXml = `` + - `<feed xmlns="http://www.w3.org/2005/Atom" updated="2003-12-13T18:30:02Z">` + - `<title>Example Feed</title>` + - `<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>` + - `<link href="http://example.org/"></link>` + - `<author><name>John Doe</name><uri></uri><email></email></author>` + - `<entry>` + - `<title>Atom-Powered Robots Run Amok</title>` + - `<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>` + - `<link href="http://example.org/2003/12/13/atom03"></link>` + - `<updated>2003-12-13T18:30:02Z</updated>` + - `<author><name></name><uri></uri><email></email></author>` + - `<summary>Some text.</summary>` + - `</entry>` + - `</feed>` - -func ParseTime(str string) time.Time { - t, err := time.Parse(time.RFC3339, str) - if err != nil { - panic(err) - } - return t -} - -func NewText(text string) Text { - return Text{ - Body: text, - } -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/example_test.go b/vendor/golang.org/x/net/webdav/internal/xml/example_test.go deleted file mode 100644 index 21b48dea..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/example_test.go +++ /dev/null @@ -1,151 +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 xml_test - -import ( - "encoding/xml" - "fmt" - "os" -) - -func ExampleMarshalIndent() { - type Address struct { - City, State string - } - type Person struct { - XMLName xml.Name `xml:"person"` - Id int `xml:"id,attr"` - FirstName string `xml:"name>first"` - LastName string `xml:"name>last"` - Age int `xml:"age"` - Height float32 `xml:"height,omitempty"` - Married bool - Address - Comment string `xml:",comment"` - } - - v := &Person{Id: 13, FirstName: "John", LastName: "Doe", Age: 42} - v.Comment = " Need more details. " - v.Address = Address{"Hanga Roa", "Easter Island"} - - output, err := xml.MarshalIndent(v, " ", " ") - if err != nil { - fmt.Printf("error: %v\n", err) - } - - os.Stdout.Write(output) - // Output: - // <person id="13"> - // <name> - // <first>John</first> - // <last>Doe</last> - // </name> - // <age>42</age> - // <Married>false</Married> - // <City>Hanga Roa</City> - // <State>Easter Island</State> - // <!-- Need more details. --> - // </person> -} - -func ExampleEncoder() { - type Address struct { - City, State string - } - type Person struct { - XMLName xml.Name `xml:"person"` - Id int `xml:"id,attr"` - FirstName string `xml:"name>first"` - LastName string `xml:"name>last"` - Age int `xml:"age"` - Height float32 `xml:"height,omitempty"` - Married bool - Address - Comment string `xml:",comment"` - } - - v := &Person{Id: 13, FirstName: "John", LastName: "Doe", Age: 42} - v.Comment = " Need more details. " - v.Address = Address{"Hanga Roa", "Easter Island"} - - enc := xml.NewEncoder(os.Stdout) - enc.Indent(" ", " ") - if err := enc.Encode(v); err != nil { - fmt.Printf("error: %v\n", err) - } - - // Output: - // <person id="13"> - // <name> - // <first>John</first> - // <last>Doe</last> - // </name> - // <age>42</age> - // <Married>false</Married> - // <City>Hanga Roa</City> - // <State>Easter Island</State> - // <!-- Need more details. --> - // </person> -} - -// This example demonstrates unmarshaling an XML excerpt into a value with -// some preset fields. Note that the Phone field isn't modified and that -// the XML <Company> element is ignored. Also, the Groups field is assigned -// considering the element path provided in its tag. -func ExampleUnmarshal() { - type Email struct { - Where string `xml:"where,attr"` - Addr string - } - type Address struct { - City, State string - } - type Result struct { - XMLName xml.Name `xml:"Person"` - Name string `xml:"FullName"` - Phone string - Email []Email - Groups []string `xml:"Group>Value"` - Address - } - v := Result{Name: "none", Phone: "none"} - - data := ` - <Person> - <FullName>Grace R. Emlin</FullName> - <Company>Example Inc.</Company> - <Email where="home"> - <Addr>gre@example.com</Addr> - </Email> - <Email where='work'> - <Addr>gre@work.com</Addr> - </Email> - <Group> - <Value>Friends</Value> - <Value>Squash</Value> - </Group> - <City>Hanga Roa</City> - <State>Easter Island</State> - </Person> - ` - err := xml.Unmarshal([]byte(data), &v) - if err != nil { - fmt.Printf("error: %v", err) - return - } - fmt.Printf("XMLName: %#v\n", v.XMLName) - fmt.Printf("Name: %q\n", v.Name) - fmt.Printf("Phone: %q\n", v.Phone) - fmt.Printf("Email: %v\n", v.Email) - fmt.Printf("Groups: %v\n", v.Groups) - fmt.Printf("Address: %v\n", v.Address) - // Output: - // XMLName: xml.Name{Space:"", Local:"Person"} - // Name: "Grace R. Emlin" - // Phone: "none" - // Email: [{home gre@example.com} {work gre@work.com}] - // Groups: [Friends Squash] - // Address: {Hanga Roa Easter Island} -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/marshal.go b/vendor/golang.org/x/net/webdav/internal/xml/marshal.go deleted file mode 100644 index cb82ec21..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/marshal.go +++ /dev/null @@ -1,1223 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "bufio" - "bytes" - "encoding" - "fmt" - "io" - "reflect" - "strconv" - "strings" -) - -const ( - // A generic XML header suitable for use with the output of Marshal. - // This is not automatically added to any output of this package, - // it is provided as a convenience. - Header = `<?xml version="1.0" encoding="UTF-8"?>` + "\n" -) - -// Marshal returns the XML encoding of v. -// -// Marshal handles an array or slice by marshalling each of the elements. -// Marshal handles a pointer by marshalling the value it points at or, if the -// pointer is nil, by writing nothing. Marshal handles an interface value by -// marshalling the value it contains or, if the interface value is nil, by -// writing nothing. Marshal handles all other data by writing one or more XML -// elements containing the data. -// -// The name for the XML elements is taken from, in order of preference: -// - the tag on the XMLName field, if the data is a struct -// - the value of the XMLName field of type xml.Name -// - the tag of the struct field used to obtain the data -// - the name of the struct field used to obtain the data -// - the name of the marshalled type -// -// The XML element for a struct contains marshalled elements for each of the -// exported fields of the struct, with these exceptions: -// - the XMLName field, described above, is omitted. -// - a field with tag "-" is omitted. -// - a field with tag "name,attr" becomes an attribute with -// the given name in the XML element. -// - a field with tag ",attr" becomes an attribute with the -// field name in the XML element. -// - a field with tag ",chardata" is written as character data, -// not as an XML element. -// - a field with tag ",innerxml" is written verbatim, not subject -// to the usual marshalling procedure. -// - a field with tag ",comment" is written as an XML comment, not -// subject to the usual marshalling procedure. It must not contain -// the "--" string within it. -// - a field with a tag including the "omitempty" option is omitted -// if the field value is empty. The empty values are false, 0, any -// nil pointer or interface value, and any array, slice, map, or -// string of length zero. -// - an anonymous struct field is handled as if the fields of its -// value were part of the outer struct. -// -// If a field uses a tag "a>b>c", then the element c will be nested inside -// parent elements a and b. Fields that appear next to each other that name -// the same parent will be enclosed in one XML element. -// -// See MarshalIndent for an example. -// -// Marshal will return an error if asked to marshal a channel, function, or map. -func Marshal(v interface{}) ([]byte, error) { - var b bytes.Buffer - if err := NewEncoder(&b).Encode(v); err != nil { - return nil, err - } - return b.Bytes(), nil -} - -// Marshaler is the interface implemented by objects that can marshal -// themselves into valid XML elements. -// -// MarshalXML encodes the receiver as zero or more XML elements. -// By convention, arrays or slices are typically encoded as a sequence -// of elements, one per entry. -// Using start as the element tag is not required, but doing so -// will enable Unmarshal to match the XML elements to the correct -// struct field. -// One common implementation strategy is to construct a separate -// value with a layout corresponding to the desired XML and then -// to encode it using e.EncodeElement. -// Another common strategy is to use repeated calls to e.EncodeToken -// to generate the XML output one token at a time. -// The sequence of encoded tokens must make up zero or more valid -// XML elements. -type Marshaler interface { - MarshalXML(e *Encoder, start StartElement) error -} - -// MarshalerAttr is the interface implemented by objects that can marshal -// themselves into valid XML attributes. -// -// MarshalXMLAttr returns an XML attribute with the encoded value of the receiver. -// Using name as the attribute name is not required, but doing so -// will enable Unmarshal to match the attribute to the correct -// struct field. -// If MarshalXMLAttr returns the zero attribute Attr{}, no attribute -// will be generated in the output. -// MarshalXMLAttr is used only for struct fields with the -// "attr" option in the field tag. -type MarshalerAttr interface { - MarshalXMLAttr(name Name) (Attr, error) -} - -// MarshalIndent works like Marshal, but each XML element begins on a new -// indented line that starts with prefix and is followed by one or more -// copies of indent according to the nesting depth. -func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { - var b bytes.Buffer - enc := NewEncoder(&b) - enc.Indent(prefix, indent) - if err := enc.Encode(v); err != nil { - return nil, err - } - return b.Bytes(), nil -} - -// An Encoder writes XML data to an output stream. -type Encoder struct { - p printer -} - -// NewEncoder returns a new encoder that writes to w. -func NewEncoder(w io.Writer) *Encoder { - e := &Encoder{printer{Writer: bufio.NewWriter(w)}} - e.p.encoder = e - return e -} - -// Indent sets the encoder to generate XML in which each element -// begins on a new indented line that starts with prefix and is followed by -// one or more copies of indent according to the nesting depth. -func (enc *Encoder) Indent(prefix, indent string) { - enc.p.prefix = prefix - enc.p.indent = indent -} - -// Encode writes the XML encoding of v to the stream. -// -// See the documentation for Marshal for details about the conversion -// of Go values to XML. -// -// Encode calls Flush before returning. -func (enc *Encoder) Encode(v interface{}) error { - err := enc.p.marshalValue(reflect.ValueOf(v), nil, nil) - if err != nil { - return err - } - return enc.p.Flush() -} - -// EncodeElement writes the XML encoding of v to the stream, -// using start as the outermost tag in the encoding. -// -// See the documentation for Marshal for details about the conversion -// of Go values to XML. -// -// EncodeElement calls Flush before returning. -func (enc *Encoder) EncodeElement(v interface{}, start StartElement) error { - err := enc.p.marshalValue(reflect.ValueOf(v), nil, &start) - if err != nil { - return err - } - return enc.p.Flush() -} - -var ( - begComment = []byte("<!--") - endComment = []byte("-->") - endProcInst = []byte("?>") - endDirective = []byte(">") -) - -// EncodeToken writes the given XML token to the stream. -// It returns an error if StartElement and EndElement tokens are not -// properly matched. -// -// EncodeToken does not call Flush, because usually it is part of a -// larger operation such as Encode or EncodeElement (or a custom -// Marshaler's MarshalXML invoked during those), and those will call -// Flush when finished. Callers that create an Encoder and then invoke -// EncodeToken directly, without using Encode or EncodeElement, need to -// call Flush when finished to ensure that the XML is written to the -// underlying writer. -// -// EncodeToken allows writing a ProcInst with Target set to "xml" only -// as the first token in the stream. -// -// When encoding a StartElement holding an XML namespace prefix -// declaration for a prefix that is not already declared, contained -// elements (including the StartElement itself) will use the declared -// prefix when encoding names with matching namespace URIs. -func (enc *Encoder) EncodeToken(t Token) error { - - p := &enc.p - switch t := t.(type) { - case StartElement: - if err := p.writeStart(&t); err != nil { - return err - } - case EndElement: - if err := p.writeEnd(t.Name); err != nil { - return err - } - case CharData: - escapeText(p, t, false) - case Comment: - if bytes.Contains(t, endComment) { - return fmt.Errorf("xml: EncodeToken of Comment containing --> marker") - } - p.WriteString("<!--") - p.Write(t) - p.WriteString("-->") - return p.cachedWriteError() - case ProcInst: - // First token to be encoded which is also a ProcInst with target of xml - // is the xml declaration. The only ProcInst where target of xml is allowed. - if t.Target == "xml" && p.Buffered() != 0 { - return fmt.Errorf("xml: EncodeToken of ProcInst xml target only valid for xml declaration, first token encoded") - } - if !isNameString(t.Target) { - return fmt.Errorf("xml: EncodeToken of ProcInst with invalid Target") - } - if bytes.Contains(t.Inst, endProcInst) { - return fmt.Errorf("xml: EncodeToken of ProcInst containing ?> marker") - } - p.WriteString("<?") - p.WriteString(t.Target) - if len(t.Inst) > 0 { - p.WriteByte(' ') - p.Write(t.Inst) - } - p.WriteString("?>") - case Directive: - if !isValidDirective(t) { - return fmt.Errorf("xml: EncodeToken of Directive containing wrong < or > markers") - } - p.WriteString("<!") - p.Write(t) - p.WriteString(">") - default: - return fmt.Errorf("xml: EncodeToken of invalid token type") - - } - return p.cachedWriteError() -} - -// isValidDirective reports whether dir is a valid directive text, -// meaning angle brackets are matched, ignoring comments and strings. -func isValidDirective(dir Directive) bool { - var ( - depth int - inquote uint8 - incomment bool - ) - for i, c := range dir { - switch { - case incomment: - if c == '>' { - if n := 1 + i - len(endComment); n >= 0 && bytes.Equal(dir[n:i+1], endComment) { - incomment = false - } - } - // Just ignore anything in comment - case inquote != 0: - if c == inquote { - inquote = 0 - } - // Just ignore anything within quotes - case c == '\'' || c == '"': - inquote = c - case c == '<': - if i+len(begComment) < len(dir) && bytes.Equal(dir[i:i+len(begComment)], begComment) { - incomment = true - } else { - depth++ - } - case c == '>': - if depth == 0 { - return false - } - depth-- - } - } - return depth == 0 && inquote == 0 && !incomment -} - -// Flush flushes any buffered XML to the underlying writer. -// See the EncodeToken documentation for details about when it is necessary. -func (enc *Encoder) Flush() error { - return enc.p.Flush() -} - -type printer struct { - *bufio.Writer - encoder *Encoder - seq int - indent string - prefix string - depth int - indentedIn bool - putNewline bool - defaultNS string - attrNS map[string]string // map prefix -> name space - attrPrefix map[string]string // map name space -> prefix - prefixes []printerPrefix - tags []Name -} - -// printerPrefix holds a namespace undo record. -// When an element is popped, the prefix record -// is set back to the recorded URL. The empty -// prefix records the URL for the default name space. -// -// The start of an element is recorded with an element -// that has mark=true. -type printerPrefix struct { - prefix string - url string - mark bool -} - -func (p *printer) prefixForNS(url string, isAttr bool) string { - // The "http://www.w3.org/XML/1998/namespace" name space is predefined as "xml" - // and must be referred to that way. - // (The "http://www.w3.org/2000/xmlns/" name space is also predefined as "xmlns", - // but users should not be trying to use that one directly - that's our job.) - if url == xmlURL { - return "xml" - } - if !isAttr && url == p.defaultNS { - // We can use the default name space. - return "" - } - return p.attrPrefix[url] -} - -// defineNS pushes any namespace definition found in the given attribute. -// If ignoreNonEmptyDefault is true, an xmlns="nonempty" -// attribute will be ignored. -func (p *printer) defineNS(attr Attr, ignoreNonEmptyDefault bool) error { - var prefix string - if attr.Name.Local == "xmlns" { - if attr.Name.Space != "" && attr.Name.Space != "xml" && attr.Name.Space != xmlURL { - return fmt.Errorf("xml: cannot redefine xmlns attribute prefix") - } - } else if attr.Name.Space == "xmlns" && attr.Name.Local != "" { - prefix = attr.Name.Local - if attr.Value == "" { - // Technically, an empty XML namespace is allowed for an attribute. - // From http://www.w3.org/TR/xml-names11/#scoping-defaulting: - // - // The attribute value in a namespace declaration for a prefix may be - // empty. This has the effect, within the scope of the declaration, of removing - // any association of the prefix with a namespace name. - // - // However our namespace prefixes here are used only as hints. There's - // no need to respect the removal of a namespace prefix, so we ignore it. - return nil - } - } else { - // Ignore: it's not a namespace definition - return nil - } - if prefix == "" { - if attr.Value == p.defaultNS { - // No need for redefinition. - return nil - } - if attr.Value != "" && ignoreNonEmptyDefault { - // We have an xmlns="..." value but - // it can't define a name space in this context, - // probably because the element has an empty - // name space. In this case, we just ignore - // the name space declaration. - return nil - } - } else if _, ok := p.attrPrefix[attr.Value]; ok { - // There's already a prefix for the given name space, - // so use that. This prevents us from - // having two prefixes for the same name space - // so attrNS and attrPrefix can remain bijective. - return nil - } - p.pushPrefix(prefix, attr.Value) - return nil -} - -// createNSPrefix creates a name space prefix attribute -// to use for the given name space, defining a new prefix -// if necessary. -// If isAttr is true, the prefix is to be created for an attribute -// prefix, which means that the default name space cannot -// be used. -func (p *printer) createNSPrefix(url string, isAttr bool) { - if _, ok := p.attrPrefix[url]; ok { - // We already have a prefix for the given URL. - return - } - switch { - case !isAttr && url == p.defaultNS: - // We can use the default name space. - return - case url == "": - // The only way we can encode names in the empty - // name space is by using the default name space, - // so we must use that. - if p.defaultNS != "" { - // The default namespace is non-empty, so we - // need to set it to empty. - p.pushPrefix("", "") - } - return - case url == xmlURL: - return - } - // TODO If the URL is an existing prefix, we could - // use it as is. That would enable the - // marshaling of elements that had been unmarshaled - // and with a name space prefix that was not found. - // although technically it would be incorrect. - - // Pick a name. We try to use the final element of the path - // but fall back to _. - prefix := strings.TrimRight(url, "/") - if i := strings.LastIndex(prefix, "/"); i >= 0 { - prefix = prefix[i+1:] - } - if prefix == "" || !isName([]byte(prefix)) || strings.Contains(prefix, ":") { - prefix = "_" - } - if strings.HasPrefix(prefix, "xml") { - // xmlanything is reserved. - prefix = "_" + prefix - } - if p.attrNS[prefix] != "" { - // Name is taken. Find a better one. - for p.seq++; ; p.seq++ { - if id := prefix + "_" + strconv.Itoa(p.seq); p.attrNS[id] == "" { - prefix = id - break - } - } - } - - p.pushPrefix(prefix, url) -} - -// writeNamespaces writes xmlns attributes for all the -// namespace prefixes that have been defined in -// the current element. -func (p *printer) writeNamespaces() { - for i := len(p.prefixes) - 1; i >= 0; i-- { - prefix := p.prefixes[i] - if prefix.mark { - return - } - p.WriteString(" ") - if prefix.prefix == "" { - // Default name space. - p.WriteString(`xmlns="`) - } else { - p.WriteString("xmlns:") - p.WriteString(prefix.prefix) - p.WriteString(`="`) - } - EscapeText(p, []byte(p.nsForPrefix(prefix.prefix))) - p.WriteString(`"`) - } -} - -// pushPrefix pushes a new prefix on the prefix stack -// without checking to see if it is already defined. -func (p *printer) pushPrefix(prefix, url string) { - p.prefixes = append(p.prefixes, printerPrefix{ - prefix: prefix, - url: p.nsForPrefix(prefix), - }) - p.setAttrPrefix(prefix, url) -} - -// nsForPrefix returns the name space for the given -// prefix. Note that this is not valid for the -// empty attribute prefix, which always has an empty -// name space. -func (p *printer) nsForPrefix(prefix string) string { - if prefix == "" { - return p.defaultNS - } - return p.attrNS[prefix] -} - -// markPrefix marks the start of an element on the prefix -// stack. -func (p *printer) markPrefix() { - p.prefixes = append(p.prefixes, printerPrefix{ - mark: true, - }) -} - -// popPrefix pops all defined prefixes for the current -// element. -func (p *printer) popPrefix() { - for len(p.prefixes) > 0 { - prefix := p.prefixes[len(p.prefixes)-1] - p.prefixes = p.prefixes[:len(p.prefixes)-1] - if prefix.mark { - break - } - p.setAttrPrefix(prefix.prefix, prefix.url) - } -} - -// setAttrPrefix sets an attribute name space prefix. -// If url is empty, the attribute is removed. -// If prefix is empty, the default name space is set. -func (p *printer) setAttrPrefix(prefix, url string) { - if prefix == "" { - p.defaultNS = url - return - } - if url == "" { - delete(p.attrPrefix, p.attrNS[prefix]) - delete(p.attrNS, prefix) - return - } - if p.attrPrefix == nil { - // Need to define a new name space. - p.attrPrefix = make(map[string]string) - p.attrNS = make(map[string]string) - } - // Remove any old prefix value. This is OK because we maintain a - // strict one-to-one mapping between prefix and URL (see - // defineNS) - delete(p.attrPrefix, p.attrNS[prefix]) - p.attrPrefix[url] = prefix - p.attrNS[prefix] = url -} - -var ( - marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem() - marshalerAttrType = reflect.TypeOf((*MarshalerAttr)(nil)).Elem() - textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() -) - -// marshalValue writes one or more XML elements representing val. -// If val was obtained from a struct field, finfo must have its details. -func (p *printer) marshalValue(val reflect.Value, finfo *fieldInfo, startTemplate *StartElement) error { - if startTemplate != nil && startTemplate.Name.Local == "" { - return fmt.Errorf("xml: EncodeElement of StartElement with missing name") - } - - if !val.IsValid() { - return nil - } - if finfo != nil && finfo.flags&fOmitEmpty != 0 && isEmptyValue(val) { - return nil - } - - // Drill into interfaces and pointers. - // This can turn into an infinite loop given a cyclic chain, - // but it matches the Go 1 behavior. - for val.Kind() == reflect.Interface || val.Kind() == reflect.Ptr { - if val.IsNil() { - return nil - } - val = val.Elem() - } - - kind := val.Kind() - typ := val.Type() - - // Check for marshaler. - if val.CanInterface() && typ.Implements(marshalerType) { - return p.marshalInterface(val.Interface().(Marshaler), p.defaultStart(typ, finfo, startTemplate)) - } - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(marshalerType) { - return p.marshalInterface(pv.Interface().(Marshaler), p.defaultStart(pv.Type(), finfo, startTemplate)) - } - } - - // Check for text marshaler. - if val.CanInterface() && typ.Implements(textMarshalerType) { - return p.marshalTextInterface(val.Interface().(encoding.TextMarshaler), p.defaultStart(typ, finfo, startTemplate)) - } - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { - return p.marshalTextInterface(pv.Interface().(encoding.TextMarshaler), p.defaultStart(pv.Type(), finfo, startTemplate)) - } - } - - // Slices and arrays iterate over the elements. They do not have an enclosing tag. - if (kind == reflect.Slice || kind == reflect.Array) && typ.Elem().Kind() != reflect.Uint8 { - for i, n := 0, val.Len(); i < n; i++ { - if err := p.marshalValue(val.Index(i), finfo, startTemplate); err != nil { - return err - } - } - return nil - } - - tinfo, err := getTypeInfo(typ) - if err != nil { - return err - } - - // Create start element. - // Precedence for the XML element name is: - // 0. startTemplate - // 1. XMLName field in underlying struct; - // 2. field name/tag in the struct field; and - // 3. type name - var start StartElement - - // explicitNS records whether the element's name space has been - // explicitly set (for example an XMLName field). - explicitNS := false - - if startTemplate != nil { - start.Name = startTemplate.Name - explicitNS = true - start.Attr = append(start.Attr, startTemplate.Attr...) - } else if tinfo.xmlname != nil { - xmlname := tinfo.xmlname - if xmlname.name != "" { - start.Name.Space, start.Name.Local = xmlname.xmlns, xmlname.name - } else if v, ok := xmlname.value(val).Interface().(Name); ok && v.Local != "" { - start.Name = v - } - explicitNS = true - } - if start.Name.Local == "" && finfo != nil { - start.Name.Local = finfo.name - if finfo.xmlns != "" { - start.Name.Space = finfo.xmlns - explicitNS = true - } - } - if start.Name.Local == "" { - name := typ.Name() - if name == "" { - return &UnsupportedTypeError{typ} - } - start.Name.Local = name - } - - // defaultNS records the default name space as set by a xmlns="..." - // attribute. We don't set p.defaultNS because we want to let - // the attribute writing code (in p.defineNS) be solely responsible - // for maintaining that. - defaultNS := p.defaultNS - - // Attributes - for i := range tinfo.fields { - finfo := &tinfo.fields[i] - if finfo.flags&fAttr == 0 { - continue - } - attr, err := p.fieldAttr(finfo, val) - if err != nil { - return err - } - if attr.Name.Local == "" { - continue - } - start.Attr = append(start.Attr, attr) - if attr.Name.Space == "" && attr.Name.Local == "xmlns" { - defaultNS = attr.Value - } - } - if !explicitNS { - // Historic behavior: elements use the default name space - // they are contained in by default. - start.Name.Space = defaultNS - } - // Historic behaviour: an element that's in a namespace sets - // the default namespace for all elements contained within it. - start.setDefaultNamespace() - - if err := p.writeStart(&start); err != nil { - return err - } - - if val.Kind() == reflect.Struct { - err = p.marshalStruct(tinfo, val) - } else { - s, b, err1 := p.marshalSimple(typ, val) - if err1 != nil { - err = err1 - } else if b != nil { - EscapeText(p, b) - } else { - p.EscapeString(s) - } - } - if err != nil { - return err - } - - if err := p.writeEnd(start.Name); err != nil { - return err - } - - return p.cachedWriteError() -} - -// fieldAttr returns the attribute of the given field. -// If the returned attribute has an empty Name.Local, -// it should not be used. -// The given value holds the value containing the field. -func (p *printer) fieldAttr(finfo *fieldInfo, val reflect.Value) (Attr, error) { - fv := finfo.value(val) - name := Name{Space: finfo.xmlns, Local: finfo.name} - if finfo.flags&fOmitEmpty != 0 && isEmptyValue(fv) { - return Attr{}, nil - } - if fv.Kind() == reflect.Interface && fv.IsNil() { - return Attr{}, nil - } - if fv.CanInterface() && fv.Type().Implements(marshalerAttrType) { - attr, err := fv.Interface().(MarshalerAttr).MarshalXMLAttr(name) - return attr, err - } - if fv.CanAddr() { - pv := fv.Addr() - if pv.CanInterface() && pv.Type().Implements(marshalerAttrType) { - attr, err := pv.Interface().(MarshalerAttr).MarshalXMLAttr(name) - return attr, err - } - } - if fv.CanInterface() && fv.Type().Implements(textMarshalerType) { - text, err := fv.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return Attr{}, err - } - return Attr{name, string(text)}, nil - } - if fv.CanAddr() { - pv := fv.Addr() - if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { - text, err := pv.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return Attr{}, err - } - return Attr{name, string(text)}, nil - } - } - // Dereference or skip nil pointer, interface values. - switch fv.Kind() { - case reflect.Ptr, reflect.Interface: - if fv.IsNil() { - return Attr{}, nil - } - fv = fv.Elem() - } - s, b, err := p.marshalSimple(fv.Type(), fv) - if err != nil { - return Attr{}, err - } - if b != nil { - s = string(b) - } - return Attr{name, s}, nil -} - -// defaultStart returns the default start element to use, -// given the reflect type, field info, and start template. -func (p *printer) defaultStart(typ reflect.Type, finfo *fieldInfo, startTemplate *StartElement) StartElement { - var start StartElement - // Precedence for the XML element name is as above, - // except that we do not look inside structs for the first field. - if startTemplate != nil { - start.Name = startTemplate.Name - start.Attr = append(start.Attr, startTemplate.Attr...) - } else if finfo != nil && finfo.name != "" { - start.Name.Local = finfo.name - start.Name.Space = finfo.xmlns - } else if typ.Name() != "" { - start.Name.Local = typ.Name() - } else { - // Must be a pointer to a named type, - // since it has the Marshaler methods. - start.Name.Local = typ.Elem().Name() - } - // Historic behaviour: elements use the name space of - // the element they are contained in by default. - if start.Name.Space == "" { - start.Name.Space = p.defaultNS - } - start.setDefaultNamespace() - return start -} - -// marshalInterface marshals a Marshaler interface value. -func (p *printer) marshalInterface(val Marshaler, start StartElement) error { - // Push a marker onto the tag stack so that MarshalXML - // cannot close the XML tags that it did not open. - p.tags = append(p.tags, Name{}) - n := len(p.tags) - - err := val.MarshalXML(p.encoder, start) - if err != nil { - return err - } - - // Make sure MarshalXML closed all its tags. p.tags[n-1] is the mark. - if len(p.tags) > n { - return fmt.Errorf("xml: %s.MarshalXML wrote invalid XML: <%s> not closed", receiverType(val), p.tags[len(p.tags)-1].Local) - } - p.tags = p.tags[:n-1] - return nil -} - -// marshalTextInterface marshals a TextMarshaler interface value. -func (p *printer) marshalTextInterface(val encoding.TextMarshaler, start StartElement) error { - if err := p.writeStart(&start); err != nil { - return err - } - text, err := val.MarshalText() - if err != nil { - return err - } - EscapeText(p, text) - return p.writeEnd(start.Name) -} - -// writeStart writes the given start element. -func (p *printer) writeStart(start *StartElement) error { - if start.Name.Local == "" { - return fmt.Errorf("xml: start tag with no name") - } - - p.tags = append(p.tags, start.Name) - p.markPrefix() - // Define any name spaces explicitly declared in the attributes. - // We do this as a separate pass so that explicitly declared prefixes - // will take precedence over implicitly declared prefixes - // regardless of the order of the attributes. - ignoreNonEmptyDefault := start.Name.Space == "" - for _, attr := range start.Attr { - if err := p.defineNS(attr, ignoreNonEmptyDefault); err != nil { - return err - } - } - // Define any new name spaces implied by the attributes. - for _, attr := range start.Attr { - name := attr.Name - // From http://www.w3.org/TR/xml-names11/#defaulting - // "Default namespace declarations do not apply directly - // to attribute names; the interpretation of unprefixed - // attributes is determined by the element on which they - // appear." - // This means we don't need to create a new namespace - // when an attribute name space is empty. - if name.Space != "" && !name.isNamespace() { - p.createNSPrefix(name.Space, true) - } - } - p.createNSPrefix(start.Name.Space, false) - - p.writeIndent(1) - p.WriteByte('<') - p.writeName(start.Name, false) - p.writeNamespaces() - for _, attr := range start.Attr { - name := attr.Name - if name.Local == "" || name.isNamespace() { - // Namespaces have already been written by writeNamespaces above. - continue - } - p.WriteByte(' ') - p.writeName(name, true) - p.WriteString(`="`) - p.EscapeString(attr.Value) - p.WriteByte('"') - } - p.WriteByte('>') - return nil -} - -// writeName writes the given name. It assumes -// that p.createNSPrefix(name) has already been called. -func (p *printer) writeName(name Name, isAttr bool) { - if prefix := p.prefixForNS(name.Space, isAttr); prefix != "" { - p.WriteString(prefix) - p.WriteByte(':') - } - p.WriteString(name.Local) -} - -func (p *printer) writeEnd(name Name) error { - if name.Local == "" { - return fmt.Errorf("xml: end tag with no name") - } - if len(p.tags) == 0 || p.tags[len(p.tags)-1].Local == "" { - return fmt.Errorf("xml: end tag </%s> without start tag", name.Local) - } - if top := p.tags[len(p.tags)-1]; top != name { - if top.Local != name.Local { - return fmt.Errorf("xml: end tag </%s> does not match start tag <%s>", name.Local, top.Local) - } - return fmt.Errorf("xml: end tag </%s> in namespace %s does not match start tag <%s> in namespace %s", name.Local, name.Space, top.Local, top.Space) - } - p.tags = p.tags[:len(p.tags)-1] - - p.writeIndent(-1) - p.WriteByte('<') - p.WriteByte('/') - p.writeName(name, false) - p.WriteByte('>') - p.popPrefix() - return nil -} - -func (p *printer) marshalSimple(typ reflect.Type, val reflect.Value) (string, []byte, error) { - switch val.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return strconv.FormatInt(val.Int(), 10), nil, nil - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return strconv.FormatUint(val.Uint(), 10), nil, nil - case reflect.Float32, reflect.Float64: - return strconv.FormatFloat(val.Float(), 'g', -1, val.Type().Bits()), nil, nil - case reflect.String: - return val.String(), nil, nil - case reflect.Bool: - return strconv.FormatBool(val.Bool()), nil, nil - case reflect.Array: - if typ.Elem().Kind() != reflect.Uint8 { - break - } - // [...]byte - var bytes []byte - if val.CanAddr() { - bytes = val.Slice(0, val.Len()).Bytes() - } else { - bytes = make([]byte, val.Len()) - reflect.Copy(reflect.ValueOf(bytes), val) - } - return "", bytes, nil - case reflect.Slice: - if typ.Elem().Kind() != reflect.Uint8 { - break - } - // []byte - return "", val.Bytes(), nil - } - return "", nil, &UnsupportedTypeError{typ} -} - -var ddBytes = []byte("--") - -func (p *printer) marshalStruct(tinfo *typeInfo, val reflect.Value) error { - s := parentStack{p: p} - for i := range tinfo.fields { - finfo := &tinfo.fields[i] - if finfo.flags&fAttr != 0 { - continue - } - vf := finfo.value(val) - - // Dereference or skip nil pointer, interface values. - switch vf.Kind() { - case reflect.Ptr, reflect.Interface: - if !vf.IsNil() { - vf = vf.Elem() - } - } - - switch finfo.flags & fMode { - case fCharData: - if err := s.setParents(&noField, reflect.Value{}); err != nil { - return err - } - if vf.CanInterface() && vf.Type().Implements(textMarshalerType) { - data, err := vf.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return err - } - Escape(p, data) - continue - } - if vf.CanAddr() { - pv := vf.Addr() - if pv.CanInterface() && pv.Type().Implements(textMarshalerType) { - data, err := pv.Interface().(encoding.TextMarshaler).MarshalText() - if err != nil { - return err - } - Escape(p, data) - continue - } - } - var scratch [64]byte - switch vf.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - Escape(p, strconv.AppendInt(scratch[:0], vf.Int(), 10)) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - Escape(p, strconv.AppendUint(scratch[:0], vf.Uint(), 10)) - case reflect.Float32, reflect.Float64: - Escape(p, strconv.AppendFloat(scratch[:0], vf.Float(), 'g', -1, vf.Type().Bits())) - case reflect.Bool: - Escape(p, strconv.AppendBool(scratch[:0], vf.Bool())) - case reflect.String: - if err := EscapeText(p, []byte(vf.String())); err != nil { - return err - } - case reflect.Slice: - if elem, ok := vf.Interface().([]byte); ok { - if err := EscapeText(p, elem); err != nil { - return err - } - } - } - continue - - case fComment: - if err := s.setParents(&noField, reflect.Value{}); err != nil { - return err - } - k := vf.Kind() - if !(k == reflect.String || k == reflect.Slice && vf.Type().Elem().Kind() == reflect.Uint8) { - return fmt.Errorf("xml: bad type for comment field of %s", val.Type()) - } - if vf.Len() == 0 { - continue - } - p.writeIndent(0) - p.WriteString("<!--") - dashDash := false - dashLast := false - switch k { - case reflect.String: - s := vf.String() - dashDash = strings.Index(s, "--") >= 0 - dashLast = s[len(s)-1] == '-' - if !dashDash { - p.WriteString(s) - } - case reflect.Slice: - b := vf.Bytes() - dashDash = bytes.Index(b, ddBytes) >= 0 - dashLast = b[len(b)-1] == '-' - if !dashDash { - p.Write(b) - } - default: - panic("can't happen") - } - if dashDash { - return fmt.Errorf(`xml: comments must not contain "--"`) - } - if dashLast { - // "--->" is invalid grammar. Make it "- -->" - p.WriteByte(' ') - } - p.WriteString("-->") - continue - - case fInnerXml: - iface := vf.Interface() - switch raw := iface.(type) { - case []byte: - p.Write(raw) - continue - case string: - p.WriteString(raw) - continue - } - - case fElement, fElement | fAny: - if err := s.setParents(finfo, vf); err != nil { - return err - } - } - if err := p.marshalValue(vf, finfo, nil); err != nil { - return err - } - } - if err := s.setParents(&noField, reflect.Value{}); err != nil { - return err - } - return p.cachedWriteError() -} - -var noField fieldInfo - -// return the bufio Writer's cached write error -func (p *printer) cachedWriteError() error { - _, err := p.Write(nil) - return err -} - -func (p *printer) writeIndent(depthDelta int) { - if len(p.prefix) == 0 && len(p.indent) == 0 { - return - } - if depthDelta < 0 { - p.depth-- - if p.indentedIn { - p.indentedIn = false - return - } - p.indentedIn = false - } - if p.putNewline { - p.WriteByte('\n') - } else { - p.putNewline = true - } - if len(p.prefix) > 0 { - p.WriteString(p.prefix) - } - if len(p.indent) > 0 { - for i := 0; i < p.depth; i++ { - p.WriteString(p.indent) - } - } - if depthDelta > 0 { - p.depth++ - p.indentedIn = true - } -} - -type parentStack struct { - p *printer - xmlns string - parents []string -} - -// setParents sets the stack of current parents to those found in finfo. -// It only writes the start elements if vf holds a non-nil value. -// If finfo is &noField, it pops all elements. -func (s *parentStack) setParents(finfo *fieldInfo, vf reflect.Value) error { - xmlns := s.p.defaultNS - if finfo.xmlns != "" { - xmlns = finfo.xmlns - } - commonParents := 0 - if xmlns == s.xmlns { - for ; commonParents < len(finfo.parents) && commonParents < len(s.parents); commonParents++ { - if finfo.parents[commonParents] != s.parents[commonParents] { - break - } - } - } - // Pop off any parents that aren't in common with the previous field. - for i := len(s.parents) - 1; i >= commonParents; i-- { - if err := s.p.writeEnd(Name{ - Space: s.xmlns, - Local: s.parents[i], - }); err != nil { - return err - } - } - s.parents = finfo.parents - s.xmlns = xmlns - if commonParents >= len(s.parents) { - // No new elements to push. - return nil - } - if (vf.Kind() == reflect.Ptr || vf.Kind() == reflect.Interface) && vf.IsNil() { - // The element is nil, so no need for the start elements. - s.parents = s.parents[:commonParents] - return nil - } - // Push any new parents required. - for _, name := range s.parents[commonParents:] { - start := &StartElement{ - Name: Name{ - Space: s.xmlns, - Local: name, - }, - } - // Set the default name space for parent elements - // to match what we do with other elements. - if s.xmlns != s.p.defaultNS { - start.setDefaultNamespace() - } - if err := s.p.writeStart(start); err != nil { - return err - } - } - return nil -} - -// A MarshalXMLError is returned when Marshal encounters a type -// that cannot be converted into XML. -type UnsupportedTypeError struct { - Type reflect.Type -} - -func (e *UnsupportedTypeError) Error() string { - return "xml: unsupported type: " + e.Type.String() -} - -func isEmptyValue(v reflect.Value) bool { - switch v.Kind() { - case reflect.Array, reflect.Map, reflect.Slice, reflect.String: - return v.Len() == 0 - case reflect.Bool: - return !v.Bool() - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Interface, reflect.Ptr: - return v.IsNil() - } - return false -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/marshal_test.go b/vendor/golang.org/x/net/webdav/internal/xml/marshal_test.go deleted file mode 100644 index 226cfd01..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/marshal_test.go +++ /dev/null @@ -1,1939 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "bytes" - "errors" - "fmt" - "io" - "reflect" - "strconv" - "strings" - "sync" - "testing" - "time" -) - -type DriveType int - -const ( - HyperDrive DriveType = iota - ImprobabilityDrive -) - -type Passenger struct { - Name []string `xml:"name"` - Weight float32 `xml:"weight"` -} - -type Ship struct { - XMLName struct{} `xml:"spaceship"` - - Name string `xml:"name,attr"` - Pilot string `xml:"pilot,attr"` - Drive DriveType `xml:"drive"` - Age uint `xml:"age"` - Passenger []*Passenger `xml:"passenger"` - secret string -} - -type NamedType string - -type Port struct { - XMLName struct{} `xml:"port"` - Type string `xml:"type,attr,omitempty"` - Comment string `xml:",comment"` - Number string `xml:",chardata"` -} - -type Domain struct { - XMLName struct{} `xml:"domain"` - Country string `xml:",attr,omitempty"` - Name []byte `xml:",chardata"` - Comment []byte `xml:",comment"` -} - -type Book struct { - XMLName struct{} `xml:"book"` - Title string `xml:",chardata"` -} - -type Event struct { - XMLName struct{} `xml:"event"` - Year int `xml:",chardata"` -} - -type Movie struct { - XMLName struct{} `xml:"movie"` - Length uint `xml:",chardata"` -} - -type Pi struct { - XMLName struct{} `xml:"pi"` - Approximation float32 `xml:",chardata"` -} - -type Universe struct { - XMLName struct{} `xml:"universe"` - Visible float64 `xml:",chardata"` -} - -type Particle struct { - XMLName struct{} `xml:"particle"` - HasMass bool `xml:",chardata"` -} - -type Departure struct { - XMLName struct{} `xml:"departure"` - When time.Time `xml:",chardata"` -} - -type SecretAgent struct { - XMLName struct{} `xml:"agent"` - Handle string `xml:"handle,attr"` - Identity string - Obfuscate string `xml:",innerxml"` -} - -type NestedItems struct { - XMLName struct{} `xml:"result"` - Items []string `xml:">item"` - Item1 []string `xml:"Items>item1"` -} - -type NestedOrder struct { - XMLName struct{} `xml:"result"` - Field1 string `xml:"parent>c"` - Field2 string `xml:"parent>b"` - Field3 string `xml:"parent>a"` -} - -type MixedNested struct { - XMLName struct{} `xml:"result"` - A string `xml:"parent1>a"` - B string `xml:"b"` - C string `xml:"parent1>parent2>c"` - D string `xml:"parent1>d"` -} - -type NilTest struct { - A interface{} `xml:"parent1>parent2>a"` - B interface{} `xml:"parent1>b"` - C interface{} `xml:"parent1>parent2>c"` -} - -type Service struct { - XMLName struct{} `xml:"service"` - Domain *Domain `xml:"host>domain"` - Port *Port `xml:"host>port"` - Extra1 interface{} - Extra2 interface{} `xml:"host>extra2"` -} - -var nilStruct *Ship - -type EmbedA struct { - EmbedC - EmbedB EmbedB - FieldA string -} - -type EmbedB struct { - FieldB string - *EmbedC -} - -type EmbedC struct { - FieldA1 string `xml:"FieldA>A1"` - FieldA2 string `xml:"FieldA>A2"` - FieldB string - FieldC string -} - -type NameCasing struct { - XMLName struct{} `xml:"casing"` - Xy string - XY string - XyA string `xml:"Xy,attr"` - XYA string `xml:"XY,attr"` -} - -type NamePrecedence struct { - XMLName Name `xml:"Parent"` - FromTag XMLNameWithoutTag `xml:"InTag"` - FromNameVal XMLNameWithoutTag - FromNameTag XMLNameWithTag - InFieldName string -} - -type XMLNameWithTag struct { - XMLName Name `xml:"InXMLNameTag"` - Value string `xml:",chardata"` -} - -type XMLNameWithNSTag struct { - XMLName Name `xml:"ns InXMLNameWithNSTag"` - Value string `xml:",chardata"` -} - -type XMLNameWithoutTag struct { - XMLName Name - Value string `xml:",chardata"` -} - -type NameInField struct { - Foo Name `xml:"ns foo"` -} - -type AttrTest struct { - Int int `xml:",attr"` - Named int `xml:"int,attr"` - Float float64 `xml:",attr"` - Uint8 uint8 `xml:",attr"` - Bool bool `xml:",attr"` - Str string `xml:",attr"` - Bytes []byte `xml:",attr"` -} - -type OmitAttrTest struct { - Int int `xml:",attr,omitempty"` - Named int `xml:"int,attr,omitempty"` - Float float64 `xml:",attr,omitempty"` - Uint8 uint8 `xml:",attr,omitempty"` - Bool bool `xml:",attr,omitempty"` - Str string `xml:",attr,omitempty"` - Bytes []byte `xml:",attr,omitempty"` -} - -type OmitFieldTest struct { - Int int `xml:",omitempty"` - Named int `xml:"int,omitempty"` - Float float64 `xml:",omitempty"` - Uint8 uint8 `xml:",omitempty"` - Bool bool `xml:",omitempty"` - Str string `xml:",omitempty"` - Bytes []byte `xml:",omitempty"` - Ptr *PresenceTest `xml:",omitempty"` -} - -type AnyTest struct { - XMLName struct{} `xml:"a"` - Nested string `xml:"nested>value"` - AnyField AnyHolder `xml:",any"` -} - -type AnyOmitTest struct { - XMLName struct{} `xml:"a"` - Nested string `xml:"nested>value"` - AnyField *AnyHolder `xml:",any,omitempty"` -} - -type AnySliceTest struct { - XMLName struct{} `xml:"a"` - Nested string `xml:"nested>value"` - AnyField []AnyHolder `xml:",any"` -} - -type AnyHolder struct { - XMLName Name - XML string `xml:",innerxml"` -} - -type RecurseA struct { - A string - B *RecurseB -} - -type RecurseB struct { - A *RecurseA - B string -} - -type PresenceTest struct { - Exists *struct{} -} - -type IgnoreTest struct { - PublicSecret string `xml:"-"` -} - -type MyBytes []byte - -type Data struct { - Bytes []byte - Attr []byte `xml:",attr"` - Custom MyBytes -} - -type Plain struct { - V interface{} -} - -type MyInt int - -type EmbedInt struct { - MyInt -} - -type Strings struct { - X []string `xml:"A>B,omitempty"` -} - -type PointerFieldsTest struct { - XMLName Name `xml:"dummy"` - Name *string `xml:"name,attr"` - Age *uint `xml:"age,attr"` - Empty *string `xml:"empty,attr"` - Contents *string `xml:",chardata"` -} - -type ChardataEmptyTest struct { - XMLName Name `xml:"test"` - Contents *string `xml:",chardata"` -} - -type MyMarshalerTest struct { -} - -var _ Marshaler = (*MyMarshalerTest)(nil) - -func (m *MyMarshalerTest) MarshalXML(e *Encoder, start StartElement) error { - e.EncodeToken(start) - e.EncodeToken(CharData([]byte("hello world"))) - e.EncodeToken(EndElement{start.Name}) - return nil -} - -type MyMarshalerAttrTest struct{} - -var _ MarshalerAttr = (*MyMarshalerAttrTest)(nil) - -func (m *MyMarshalerAttrTest) MarshalXMLAttr(name Name) (Attr, error) { - return Attr{name, "hello world"}, nil -} - -type MyMarshalerValueAttrTest struct{} - -var _ MarshalerAttr = MyMarshalerValueAttrTest{} - -func (m MyMarshalerValueAttrTest) MarshalXMLAttr(name Name) (Attr, error) { - return Attr{name, "hello world"}, nil -} - -type MarshalerStruct struct { - Foo MyMarshalerAttrTest `xml:",attr"` -} - -type MarshalerValueStruct struct { - Foo MyMarshalerValueAttrTest `xml:",attr"` -} - -type InnerStruct struct { - XMLName Name `xml:"testns outer"` -} - -type OuterStruct struct { - InnerStruct - IntAttr int `xml:"int,attr"` -} - -type OuterNamedStruct struct { - InnerStruct - XMLName Name `xml:"outerns test"` - IntAttr int `xml:"int,attr"` -} - -type OuterNamedOrderedStruct struct { - XMLName Name `xml:"outerns test"` - InnerStruct - IntAttr int `xml:"int,attr"` -} - -type OuterOuterStruct struct { - OuterStruct -} - -type NestedAndChardata struct { - AB []string `xml:"A>B"` - Chardata string `xml:",chardata"` -} - -type NestedAndComment struct { - AB []string `xml:"A>B"` - Comment string `xml:",comment"` -} - -type XMLNSFieldStruct struct { - Ns string `xml:"xmlns,attr"` - Body string -} - -type NamedXMLNSFieldStruct struct { - XMLName struct{} `xml:"testns test"` - Ns string `xml:"xmlns,attr"` - Body string -} - -type XMLNSFieldStructWithOmitEmpty struct { - Ns string `xml:"xmlns,attr,omitempty"` - Body string -} - -type NamedXMLNSFieldStructWithEmptyNamespace struct { - XMLName struct{} `xml:"test"` - Ns string `xml:"xmlns,attr"` - Body string -} - -type RecursiveXMLNSFieldStruct struct { - Ns string `xml:"xmlns,attr"` - Body *RecursiveXMLNSFieldStruct `xml:",omitempty"` - Text string `xml:",omitempty"` -} - -func ifaceptr(x interface{}) interface{} { - return &x -} - -var ( - nameAttr = "Sarah" - ageAttr = uint(12) - contentsAttr = "lorem ipsum" -) - -// Unless explicitly stated as such (or *Plain), all of the -// tests below are two-way tests. When introducing new tests, -// please try to make them two-way as well to ensure that -// marshalling and unmarshalling are as symmetrical as feasible. -var marshalTests = []struct { - Value interface{} - ExpectXML string - MarshalOnly bool - UnmarshalOnly bool -}{ - // Test nil marshals to nothing - {Value: nil, ExpectXML: ``, MarshalOnly: true}, - {Value: nilStruct, ExpectXML: ``, MarshalOnly: true}, - - // Test value types - {Value: &Plain{true}, ExpectXML: `<Plain><V>true</V></Plain>`}, - {Value: &Plain{false}, ExpectXML: `<Plain><V>false</V></Plain>`}, - {Value: &Plain{int(42)}, ExpectXML: `<Plain><V>42</V></Plain>`}, - {Value: &Plain{int8(42)}, ExpectXML: `<Plain><V>42</V></Plain>`}, - {Value: &Plain{int16(42)}, ExpectXML: `<Plain><V>42</V></Plain>`}, - {Value: &Plain{int32(42)}, ExpectXML: `<Plain><V>42</V></Plain>`}, - {Value: &Plain{uint(42)}, ExpectXML: `<Plain><V>42</V></Plain>`}, - {Value: &Plain{uint8(42)}, ExpectXML: `<Plain><V>42</V></Plain>`}, - {Value: &Plain{uint16(42)}, ExpectXML: `<Plain><V>42</V></Plain>`}, - {Value: &Plain{uint32(42)}, ExpectXML: `<Plain><V>42</V></Plain>`}, - {Value: &Plain{float32(1.25)}, ExpectXML: `<Plain><V>1.25</V></Plain>`}, - {Value: &Plain{float64(1.25)}, ExpectXML: `<Plain><V>1.25</V></Plain>`}, - {Value: &Plain{uintptr(0xFFDD)}, ExpectXML: `<Plain><V>65501</V></Plain>`}, - {Value: &Plain{"gopher"}, ExpectXML: `<Plain><V>gopher</V></Plain>`}, - {Value: &Plain{[]byte("gopher")}, ExpectXML: `<Plain><V>gopher</V></Plain>`}, - {Value: &Plain{"</>"}, ExpectXML: `<Plain><V>&lt;/&gt;</V></Plain>`}, - {Value: &Plain{[]byte("</>")}, ExpectXML: `<Plain><V>&lt;/&gt;</V></Plain>`}, - {Value: &Plain{[3]byte{'<', '/', '>'}}, ExpectXML: `<Plain><V>&lt;/&gt;</V></Plain>`}, - {Value: &Plain{NamedType("potato")}, ExpectXML: `<Plain><V>potato</V></Plain>`}, - {Value: &Plain{[]int{1, 2, 3}}, ExpectXML: `<Plain><V>1</V><V>2</V><V>3</V></Plain>`}, - {Value: &Plain{[3]int{1, 2, 3}}, ExpectXML: `<Plain><V>1</V><V>2</V><V>3</V></Plain>`}, - {Value: ifaceptr(true), MarshalOnly: true, ExpectXML: `<bool>true</bool>`}, - - // Test time. - { - Value: &Plain{time.Unix(1e9, 123456789).UTC()}, - ExpectXML: `<Plain><V>2001-09-09T01:46:40.123456789Z</V></Plain>`, - }, - - // A pointer to struct{} may be used to test for an element's presence. - { - Value: &PresenceTest{new(struct{})}, - ExpectXML: `<PresenceTest><Exists></Exists></PresenceTest>`, - }, - { - Value: &PresenceTest{}, - ExpectXML: `<PresenceTest></PresenceTest>`, - }, - - // A pointer to struct{} may be used to test for an element's presence. - { - Value: &PresenceTest{new(struct{})}, - ExpectXML: `<PresenceTest><Exists></Exists></PresenceTest>`, - }, - { - Value: &PresenceTest{}, - ExpectXML: `<PresenceTest></PresenceTest>`, - }, - - // A []byte field is only nil if the element was not found. - { - Value: &Data{}, - ExpectXML: `<Data></Data>`, - UnmarshalOnly: true, - }, - { - Value: &Data{Bytes: []byte{}, Custom: MyBytes{}, Attr: []byte{}}, - ExpectXML: `<Data Attr=""><Bytes></Bytes><Custom></Custom></Data>`, - UnmarshalOnly: true, - }, - - // Check that []byte works, including named []byte types. - { - Value: &Data{Bytes: []byte("ab"), Custom: MyBytes("cd"), Attr: []byte{'v'}}, - ExpectXML: `<Data Attr="v"><Bytes>ab</Bytes><Custom>cd</Custom></Data>`, - }, - - // Test innerxml - { - Value: &SecretAgent{ - Handle: "007", - Identity: "James Bond", - Obfuscate: "<redacted/>", - }, - ExpectXML: `<agent handle="007"><Identity>James Bond</Identity><redacted/></agent>`, - MarshalOnly: true, - }, - { - Value: &SecretAgent{ - Handle: "007", - Identity: "James Bond", - Obfuscate: "<Identity>James Bond</Identity><redacted/>", - }, - ExpectXML: `<agent handle="007"><Identity>James Bond</Identity><redacted/></agent>`, - UnmarshalOnly: true, - }, - - // Test structs - {Value: &Port{Type: "ssl", Number: "443"}, ExpectXML: `<port type="ssl">443</port>`}, - {Value: &Port{Number: "443"}, ExpectXML: `<port>443</port>`}, - {Value: &Port{Type: "<unix>"}, ExpectXML: `<port type="&lt;unix&gt;"></port>`}, - {Value: &Port{Number: "443", Comment: "https"}, ExpectXML: `<port><!--https-->443</port>`}, - {Value: &Port{Number: "443", Comment: "add space-"}, ExpectXML: `<port><!--add space- -->443</port>`, MarshalOnly: true}, - {Value: &Domain{Name: []byte("google.com&friends")}, ExpectXML: `<domain>google.com&amp;friends</domain>`}, - {Value: &Domain{Name: []byte("google.com"), Comment: []byte(" &friends ")}, ExpectXML: `<domain>google.com<!-- &friends --></domain>`}, - {Value: &Book{Title: "Pride & Prejudice"}, ExpectXML: `<book>Pride &amp; Prejudice</book>`}, - {Value: &Event{Year: -3114}, ExpectXML: `<event>-3114</event>`}, - {Value: &Movie{Length: 13440}, ExpectXML: `<movie>13440</movie>`}, - {Value: &Pi{Approximation: 3.14159265}, ExpectXML: `<pi>3.1415927</pi>`}, - {Value: &Universe{Visible: 9.3e13}, ExpectXML: `<universe>9.3e+13</universe>`}, - {Value: &Particle{HasMass: true}, ExpectXML: `<particle>true</particle>`}, - {Value: &Departure{When: ParseTime("2013-01-09T00:15:00-09:00")}, ExpectXML: `<departure>2013-01-09T00:15:00-09:00</departure>`}, - {Value: atomValue, ExpectXML: atomXml}, - { - Value: &Ship{ - Name: "Heart of Gold", - Pilot: "Computer", - Age: 1, - Drive: ImprobabilityDrive, - Passenger: []*Passenger{ - { - Name: []string{"Zaphod", "Beeblebrox"}, - Weight: 7.25, - }, - { - Name: []string{"Trisha", "McMillen"}, - Weight: 5.5, - }, - { - Name: []string{"Ford", "Prefect"}, - Weight: 7, - }, - { - Name: []string{"Arthur", "Dent"}, - Weight: 6.75, - }, - }, - }, - ExpectXML: `<spaceship name="Heart of Gold" pilot="Computer">` + - `<drive>` + strconv.Itoa(int(ImprobabilityDrive)) + `</drive>` + - `<age>1</age>` + - `<passenger>` + - `<name>Zaphod</name>` + - `<name>Beeblebrox</name>` + - `<weight>7.25</weight>` + - `</passenger>` + - `<passenger>` + - `<name>Trisha</name>` + - `<name>McMillen</name>` + - `<weight>5.5</weight>` + - `</passenger>` + - `<passenger>` + - `<name>Ford</name>` + - `<name>Prefect</name>` + - `<weight>7</weight>` + - `</passenger>` + - `<passenger>` + - `<name>Arthur</name>` + - `<name>Dent</name>` + - `<weight>6.75</weight>` + - `</passenger>` + - `</spaceship>`, - }, - - // Test a>b - { - Value: &NestedItems{Items: nil, Item1: nil}, - ExpectXML: `<result>` + - `<Items>` + - `</Items>` + - `</result>`, - }, - { - Value: &NestedItems{Items: []string{}, Item1: []string{}}, - ExpectXML: `<result>` + - `<Items>` + - `</Items>` + - `</result>`, - MarshalOnly: true, - }, - { - Value: &NestedItems{Items: nil, Item1: []string{"A"}}, - ExpectXML: `<result>` + - `<Items>` + - `<item1>A</item1>` + - `</Items>` + - `</result>`, - }, - { - Value: &NestedItems{Items: []string{"A", "B"}, Item1: nil}, - ExpectXML: `<result>` + - `<Items>` + - `<item>A</item>` + - `<item>B</item>` + - `</Items>` + - `</result>`, - }, - { - Value: &NestedItems{Items: []string{"A", "B"}, Item1: []string{"C"}}, - ExpectXML: `<result>` + - `<Items>` + - `<item>A</item>` + - `<item>B</item>` + - `<item1>C</item1>` + - `</Items>` + - `</result>`, - }, - { - Value: &NestedOrder{Field1: "C", Field2: "B", Field3: "A"}, - ExpectXML: `<result>` + - `<parent>` + - `<c>C</c>` + - `<b>B</b>` + - `<a>A</a>` + - `</parent>` + - `</result>`, - }, - { - Value: &NilTest{A: "A", B: nil, C: "C"}, - ExpectXML: `<NilTest>` + - `<parent1>` + - `<parent2><a>A</a></parent2>` + - `<parent2><c>C</c></parent2>` + - `</parent1>` + - `</NilTest>`, - MarshalOnly: true, // Uses interface{} - }, - { - Value: &MixedNested{A: "A", B: "B", C: "C", D: "D"}, - ExpectXML: `<result>` + - `<parent1><a>A</a></parent1>` + - `<b>B</b>` + - `<parent1>` + - `<parent2><c>C</c></parent2>` + - `<d>D</d>` + - `</parent1>` + - `</result>`, - }, - { - Value: &Service{Port: &Port{Number: "80"}}, - ExpectXML: `<service><host><port>80</port></host></service>`, - }, - { - Value: &Service{}, - ExpectXML: `<service></service>`, - }, - { - Value: &Service{Port: &Port{Number: "80"}, Extra1: "A", Extra2: "B"}, - ExpectXML: `<service>` + - `<host><port>80</port></host>` + - `<Extra1>A</Extra1>` + - `<host><extra2>B</extra2></host>` + - `</service>`, - MarshalOnly: true, - }, - { - Value: &Service{Port: &Port{Number: "80"}, Extra2: "example"}, - ExpectXML: `<service>` + - `<host><port>80</port></host>` + - `<host><extra2>example</extra2></host>` + - `</service>`, - MarshalOnly: true, - }, - { - Value: &struct { - XMLName struct{} `xml:"space top"` - A string `xml:"x>a"` - B string `xml:"x>b"` - C string `xml:"space x>c"` - C1 string `xml:"space1 x>c"` - D1 string `xml:"space1 x>d"` - E1 string `xml:"x>e"` - }{ - A: "a", - B: "b", - C: "c", - C1: "c1", - D1: "d1", - E1: "e1", - }, - ExpectXML: `<top xmlns="space">` + - `<x><a>a</a><b>b</b><c>c</c></x>` + - `<x xmlns="space1">` + - `<c>c1</c>` + - `<d>d1</d>` + - `</x>` + - `<x>` + - `<e>e1</e>` + - `</x>` + - `</top>`, - }, - { - Value: &struct { - XMLName Name - A string `xml:"x>a"` - B string `xml:"x>b"` - C string `xml:"space x>c"` - C1 string `xml:"space1 x>c"` - D1 string `xml:"space1 x>d"` - }{ - XMLName: Name{ - Space: "space0", - Local: "top", - }, - A: "a", - B: "b", - C: "c", - C1: "c1", - D1: "d1", - }, - ExpectXML: `<top xmlns="space0">` + - `<x><a>a</a><b>b</b></x>` + - `<x xmlns="space"><c>c</c></x>` + - `<x xmlns="space1">` + - `<c>c1</c>` + - `<d>d1</d>` + - `</x>` + - `</top>`, - }, - { - Value: &struct { - XMLName struct{} `xml:"top"` - B string `xml:"space x>b"` - B1 string `xml:"space1 x>b"` - }{ - B: "b", - B1: "b1", - }, - ExpectXML: `<top>` + - `<x xmlns="space"><b>b</b></x>` + - `<x xmlns="space1"><b>b1</b></x>` + - `</top>`, - }, - - // Test struct embedding - { - Value: &EmbedA{ - EmbedC: EmbedC{ - FieldA1: "", // Shadowed by A.A - FieldA2: "", // Shadowed by A.A - FieldB: "A.C.B", - FieldC: "A.C.C", - }, - EmbedB: EmbedB{ - FieldB: "A.B.B", - EmbedC: &EmbedC{ - FieldA1: "A.B.C.A1", - FieldA2: "A.B.C.A2", - FieldB: "", // Shadowed by A.B.B - FieldC: "A.B.C.C", - }, - }, - FieldA: "A.A", - }, - ExpectXML: `<EmbedA>` + - `<FieldB>A.C.B</FieldB>` + - `<FieldC>A.C.C</FieldC>` + - `<EmbedB>` + - `<FieldB>A.B.B</FieldB>` + - `<FieldA>` + - `<A1>A.B.C.A1</A1>` + - `<A2>A.B.C.A2</A2>` + - `</FieldA>` + - `<FieldC>A.B.C.C</FieldC>` + - `</EmbedB>` + - `<FieldA>A.A</FieldA>` + - `</EmbedA>`, - }, - - // Test that name casing matters - { - Value: &NameCasing{Xy: "mixed", XY: "upper", XyA: "mixedA", XYA: "upperA"}, - ExpectXML: `<casing Xy="mixedA" XY="upperA"><Xy>mixed</Xy><XY>upper</XY></casing>`, - }, - - // Test the order in which the XML element name is chosen - { - Value: &NamePrecedence{ - FromTag: XMLNameWithoutTag{Value: "A"}, - FromNameVal: XMLNameWithoutTag{XMLName: Name{Local: "InXMLName"}, Value: "B"}, - FromNameTag: XMLNameWithTag{Value: "C"}, - InFieldName: "D", - }, - ExpectXML: `<Parent>` + - `<InTag>A</InTag>` + - `<InXMLName>B</InXMLName>` + - `<InXMLNameTag>C</InXMLNameTag>` + - `<InFieldName>D</InFieldName>` + - `</Parent>`, - MarshalOnly: true, - }, - { - Value: &NamePrecedence{ - XMLName: Name{Local: "Parent"}, - FromTag: XMLNameWithoutTag{XMLName: Name{Local: "InTag"}, Value: "A"}, - FromNameVal: XMLNameWithoutTag{XMLName: Name{Local: "FromNameVal"}, Value: "B"}, - FromNameTag: XMLNameWithTag{XMLName: Name{Local: "InXMLNameTag"}, Value: "C"}, - InFieldName: "D", - }, - ExpectXML: `<Parent>` + - `<InTag>A</InTag>` + - `<FromNameVal>B</FromNameVal>` + - `<InXMLNameTag>C</InXMLNameTag>` + - `<InFieldName>D</InFieldName>` + - `</Parent>`, - UnmarshalOnly: true, - }, - - // xml.Name works in a plain field as well. - { - Value: &NameInField{Name{Space: "ns", Local: "foo"}}, - ExpectXML: `<NameInField><foo xmlns="ns"></foo></NameInField>`, - }, - { - Value: &NameInField{Name{Space: "ns", Local: "foo"}}, - ExpectXML: `<NameInField><foo xmlns="ns"><ignore></ignore></foo></NameInField>`, - UnmarshalOnly: true, - }, - - // Marshaling zero xml.Name uses the tag or field name. - { - Value: &NameInField{}, - ExpectXML: `<NameInField><foo xmlns="ns"></foo></NameInField>`, - MarshalOnly: true, - }, - - // Test attributes - { - Value: &AttrTest{ - Int: 8, - Named: 9, - Float: 23.5, - Uint8: 255, - Bool: true, - Str: "str", - Bytes: []byte("byt"), - }, - ExpectXML: `<AttrTest Int="8" int="9" Float="23.5" Uint8="255"` + - ` Bool="true" Str="str" Bytes="byt"></AttrTest>`, - }, - { - Value: &AttrTest{Bytes: []byte{}}, - ExpectXML: `<AttrTest Int="0" int="0" Float="0" Uint8="0"` + - ` Bool="false" Str="" Bytes=""></AttrTest>`, - }, - { - Value: &OmitAttrTest{ - Int: 8, - Named: 9, - Float: 23.5, - Uint8: 255, - Bool: true, - Str: "str", - Bytes: []byte("byt"), - }, - ExpectXML: `<OmitAttrTest Int="8" int="9" Float="23.5" Uint8="255"` + - ` Bool="true" Str="str" Bytes="byt"></OmitAttrTest>`, - }, - { - Value: &OmitAttrTest{}, - ExpectXML: `<OmitAttrTest></OmitAttrTest>`, - }, - - // pointer fields - { - Value: &PointerFieldsTest{Name: &nameAttr, Age: &ageAttr, Contents: &contentsAttr}, - ExpectXML: `<dummy name="Sarah" age="12">lorem ipsum</dummy>`, - MarshalOnly: true, - }, - - // empty chardata pointer field - { - Value: &ChardataEmptyTest{}, - ExpectXML: `<test></test>`, - MarshalOnly: true, - }, - - // omitempty on fields - { - Value: &OmitFieldTest{ - Int: 8, - Named: 9, - Float: 23.5, - Uint8: 255, - Bool: true, - Str: "str", - Bytes: []byte("byt"), - Ptr: &PresenceTest{}, - }, - ExpectXML: `<OmitFieldTest>` + - `<Int>8</Int>` + - `<int>9</int>` + - `<Float>23.5</Float>` + - `<Uint8>255</Uint8>` + - `<Bool>true</Bool>` + - `<Str>str</Str>` + - `<Bytes>byt</Bytes>` + - `<Ptr></Ptr>` + - `</OmitFieldTest>`, - }, - { - Value: &OmitFieldTest{}, - ExpectXML: `<OmitFieldTest></OmitFieldTest>`, - }, - - // Test ",any" - { - ExpectXML: `<a><nested><value>known</value></nested><other><sub>unknown</sub></other></a>`, - Value: &AnyTest{ - Nested: "known", - AnyField: AnyHolder{ - XMLName: Name{Local: "other"}, - XML: "<sub>unknown</sub>", - }, - }, - }, - { - Value: &AnyTest{Nested: "known", - AnyField: AnyHolder{ - XML: "<unknown/>", - XMLName: Name{Local: "AnyField"}, - }, - }, - ExpectXML: `<a><nested><value>known</value></nested><AnyField><unknown/></AnyField></a>`, - }, - { - ExpectXML: `<a><nested><value>b</value></nested></a>`, - Value: &AnyOmitTest{ - Nested: "b", - }, - }, - { - ExpectXML: `<a><nested><value>b</value></nested><c><d>e</d></c><g xmlns="f"><h>i</h></g></a>`, - Value: &AnySliceTest{ - Nested: "b", - AnyField: []AnyHolder{ - { - XMLName: Name{Local: "c"}, - XML: "<d>e</d>", - }, - { - XMLName: Name{Space: "f", Local: "g"}, - XML: "<h>i</h>", - }, - }, - }, - }, - { - ExpectXML: `<a><nested><value>b</value></nested></a>`, - Value: &AnySliceTest{ - Nested: "b", - }, - }, - - // Test recursive types. - { - Value: &RecurseA{ - A: "a1", - B: &RecurseB{ - A: &RecurseA{"a2", nil}, - B: "b1", - }, - }, - ExpectXML: `<RecurseA><A>a1</A><B><A><A>a2</A></A><B>b1</B></B></RecurseA>`, - }, - - // Test ignoring fields via "-" tag - { - ExpectXML: `<IgnoreTest></IgnoreTest>`, - Value: &IgnoreTest{}, - }, - { - ExpectXML: `<IgnoreTest></IgnoreTest>`, - Value: &IgnoreTest{PublicSecret: "can't tell"}, - MarshalOnly: true, - }, - { - ExpectXML: `<IgnoreTest><PublicSecret>ignore me</PublicSecret></IgnoreTest>`, - Value: &IgnoreTest{}, - UnmarshalOnly: true, - }, - - // Test escaping. - { - ExpectXML: `<a><nested><value>dquote: &#34;; squote: &#39;; ampersand: &amp;; less: &lt;; greater: &gt;;</value></nested><empty></empty></a>`, - Value: &AnyTest{ - Nested: `dquote: "; squote: '; ampersand: &; less: <; greater: >;`, - AnyField: AnyHolder{XMLName: Name{Local: "empty"}}, - }, - }, - { - ExpectXML: `<a><nested><value>newline: &#xA;; cr: &#xD;; tab: &#x9;;</value></nested><AnyField></AnyField></a>`, - Value: &AnyTest{ - Nested: "newline: \n; cr: \r; tab: \t;", - AnyField: AnyHolder{XMLName: Name{Local: "AnyField"}}, - }, - }, - { - ExpectXML: "<a><nested><value>1\r2\r\n3\n\r4\n5</value></nested></a>", - Value: &AnyTest{ - Nested: "1\n2\n3\n\n4\n5", - }, - UnmarshalOnly: true, - }, - { - ExpectXML: `<EmbedInt><MyInt>42</MyInt></EmbedInt>`, - Value: &EmbedInt{ - MyInt: 42, - }, - }, - // Test omitempty with parent chain; see golang.org/issue/4168. - { - ExpectXML: `<Strings><A></A></Strings>`, - Value: &Strings{}, - }, - // Custom marshalers. - { - ExpectXML: `<MyMarshalerTest>hello world</MyMarshalerTest>`, - Value: &MyMarshalerTest{}, - }, - { - ExpectXML: `<MarshalerStruct Foo="hello world"></MarshalerStruct>`, - Value: &MarshalerStruct{}, - }, - { - ExpectXML: `<MarshalerValueStruct Foo="hello world"></MarshalerValueStruct>`, - Value: &MarshalerValueStruct{}, - }, - { - ExpectXML: `<outer xmlns="testns" int="10"></outer>`, - Value: &OuterStruct{IntAttr: 10}, - }, - { - ExpectXML: `<test xmlns="outerns" int="10"></test>`, - Value: &OuterNamedStruct{XMLName: Name{Space: "outerns", Local: "test"}, IntAttr: 10}, - }, - { - ExpectXML: `<test xmlns="outerns" int="10"></test>`, - Value: &OuterNamedOrderedStruct{XMLName: Name{Space: "outerns", Local: "test"}, IntAttr: 10}, - }, - { - ExpectXML: `<outer xmlns="testns" int="10"></outer>`, - Value: &OuterOuterStruct{OuterStruct{IntAttr: 10}}, - }, - { - ExpectXML: `<NestedAndChardata><A><B></B><B></B></A>test</NestedAndChardata>`, - Value: &NestedAndChardata{AB: make([]string, 2), Chardata: "test"}, - }, - { - ExpectXML: `<NestedAndComment><A><B></B><B></B></A><!--test--></NestedAndComment>`, - Value: &NestedAndComment{AB: make([]string, 2), Comment: "test"}, - }, - { - ExpectXML: `<XMLNSFieldStruct xmlns="http://example.com/ns"><Body>hello world</Body></XMLNSFieldStruct>`, - Value: &XMLNSFieldStruct{Ns: "http://example.com/ns", Body: "hello world"}, - }, - { - ExpectXML: `<testns:test xmlns:testns="testns" xmlns="http://example.com/ns"><Body>hello world</Body></testns:test>`, - Value: &NamedXMLNSFieldStruct{Ns: "http://example.com/ns", Body: "hello world"}, - }, - { - ExpectXML: `<testns:test xmlns:testns="testns"><Body>hello world</Body></testns:test>`, - Value: &NamedXMLNSFieldStruct{Ns: "", Body: "hello world"}, - }, - { - ExpectXML: `<XMLNSFieldStructWithOmitEmpty><Body>hello world</Body></XMLNSFieldStructWithOmitEmpty>`, - Value: &XMLNSFieldStructWithOmitEmpty{Body: "hello world"}, - }, - { - // The xmlns attribute must be ignored because the <test> - // element is in the empty namespace, so it's not possible - // to set the default namespace to something non-empty. - ExpectXML: `<test><Body>hello world</Body></test>`, - Value: &NamedXMLNSFieldStructWithEmptyNamespace{Ns: "foo", Body: "hello world"}, - MarshalOnly: true, - }, - { - ExpectXML: `<RecursiveXMLNSFieldStruct xmlns="foo"><Body xmlns=""><Text>hello world</Text></Body></RecursiveXMLNSFieldStruct>`, - Value: &RecursiveXMLNSFieldStruct{ - Ns: "foo", - Body: &RecursiveXMLNSFieldStruct{ - Text: "hello world", - }, - }, - }, -} - -func TestMarshal(t *testing.T) { - for idx, test := range marshalTests { - if test.UnmarshalOnly { - continue - } - data, err := Marshal(test.Value) - if err != nil { - t.Errorf("#%d: marshal(%#v): %s", idx, test.Value, err) - continue - } - if got, want := string(data), test.ExpectXML; got != want { - if strings.Contains(want, "\n") { - t.Errorf("#%d: marshal(%#v):\nHAVE:\n%s\nWANT:\n%s", idx, test.Value, got, want) - } else { - t.Errorf("#%d: marshal(%#v):\nhave %#q\nwant %#q", idx, test.Value, got, want) - } - } - } -} - -type AttrParent struct { - X string `xml:"X>Y,attr"` -} - -type BadAttr struct { - Name []string `xml:"name,attr"` -} - -var marshalErrorTests = []struct { - Value interface{} - Err string - Kind reflect.Kind -}{ - { - Value: make(chan bool), - Err: "xml: unsupported type: chan bool", - Kind: reflect.Chan, - }, - { - Value: map[string]string{ - "question": "What do you get when you multiply six by nine?", - "answer": "42", - }, - Err: "xml: unsupported type: map[string]string", - Kind: reflect.Map, - }, - { - Value: map[*Ship]bool{nil: false}, - Err: "xml: unsupported type: map[*xml.Ship]bool", - Kind: reflect.Map, - }, - { - Value: &Domain{Comment: []byte("f--bar")}, - Err: `xml: comments must not contain "--"`, - }, - // Reject parent chain with attr, never worked; see golang.org/issue/5033. - { - Value: &AttrParent{}, - Err: `xml: X>Y chain not valid with attr flag`, - }, - { - Value: BadAttr{[]string{"X", "Y"}}, - Err: `xml: unsupported type: []string`, - }, -} - -var marshalIndentTests = []struct { - Value interface{} - Prefix string - Indent string - ExpectXML string -}{ - { - Value: &SecretAgent{ - Handle: "007", - Identity: "James Bond", - Obfuscate: "<redacted/>", - }, - Prefix: "", - Indent: "\t", - ExpectXML: fmt.Sprintf("<agent handle=\"007\">\n\t<Identity>James Bond</Identity><redacted/>\n</agent>"), - }, -} - -func TestMarshalErrors(t *testing.T) { - for idx, test := range marshalErrorTests { - data, err := Marshal(test.Value) - if err == nil { - t.Errorf("#%d: marshal(%#v) = [success] %q, want error %v", idx, test.Value, data, test.Err) - continue - } - if err.Error() != test.Err { - t.Errorf("#%d: marshal(%#v) = [error] %v, want %v", idx, test.Value, err, test.Err) - } - if test.Kind != reflect.Invalid { - if kind := err.(*UnsupportedTypeError).Type.Kind(); kind != test.Kind { - t.Errorf("#%d: marshal(%#v) = [error kind] %s, want %s", idx, test.Value, kind, test.Kind) - } - } - } -} - -// Do invertibility testing on the various structures that we test -func TestUnmarshal(t *testing.T) { - for i, test := range marshalTests { - if test.MarshalOnly { - continue - } - if _, ok := test.Value.(*Plain); ok { - continue - } - vt := reflect.TypeOf(test.Value) - dest := reflect.New(vt.Elem()).Interface() - err := Unmarshal([]byte(test.ExpectXML), dest) - - switch fix := dest.(type) { - case *Feed: - fix.Author.InnerXML = "" - for i := range fix.Entry { - fix.Entry[i].Author.InnerXML = "" - } - } - - if err != nil { - t.Errorf("#%d: unexpected error: %#v", i, err) - } else if got, want := dest, test.Value; !reflect.DeepEqual(got, want) { - t.Errorf("#%d: unmarshal(%q):\nhave %#v\nwant %#v", i, test.ExpectXML, got, want) - } - } -} - -func TestMarshalIndent(t *testing.T) { - for i, test := range marshalIndentTests { - data, err := MarshalIndent(test.Value, test.Prefix, test.Indent) - if err != nil { - t.Errorf("#%d: Error: %s", i, err) - continue - } - if got, want := string(data), test.ExpectXML; got != want { - t.Errorf("#%d: MarshalIndent:\nGot:%s\nWant:\n%s", i, got, want) - } - } -} - -type limitedBytesWriter struct { - w io.Writer - remain int // until writes fail -} - -func (lw *limitedBytesWriter) Write(p []byte) (n int, err error) { - if lw.remain <= 0 { - println("error") - return 0, errors.New("write limit hit") - } - if len(p) > lw.remain { - p = p[:lw.remain] - n, _ = lw.w.Write(p) - lw.remain = 0 - return n, errors.New("write limit hit") - } - n, err = lw.w.Write(p) - lw.remain -= n - return n, err -} - -func TestMarshalWriteErrors(t *testing.T) { - var buf bytes.Buffer - const writeCap = 1024 - w := &limitedBytesWriter{&buf, writeCap} - enc := NewEncoder(w) - var err error - var i int - const n = 4000 - for i = 1; i <= n; i++ { - err = enc.Encode(&Passenger{ - Name: []string{"Alice", "Bob"}, - Weight: 5, - }) - if err != nil { - break - } - } - if err == nil { - t.Error("expected an error") - } - if i == n { - t.Errorf("expected to fail before the end") - } - if buf.Len() != writeCap { - t.Errorf("buf.Len() = %d; want %d", buf.Len(), writeCap) - } -} - -func TestMarshalWriteIOErrors(t *testing.T) { - enc := NewEncoder(errWriter{}) - - expectErr := "unwritable" - err := enc.Encode(&Passenger{}) - if err == nil || err.Error() != expectErr { - t.Errorf("EscapeTest = [error] %v, want %v", err, expectErr) - } -} - -func TestMarshalFlush(t *testing.T) { - var buf bytes.Buffer - enc := NewEncoder(&buf) - if err := enc.EncodeToken(CharData("hello world")); err != nil { - t.Fatalf("enc.EncodeToken: %v", err) - } - if buf.Len() > 0 { - t.Fatalf("enc.EncodeToken caused actual write: %q", buf.Bytes()) - } - if err := enc.Flush(); err != nil { - t.Fatalf("enc.Flush: %v", err) - } - if buf.String() != "hello world" { - t.Fatalf("after enc.Flush, buf.String() = %q, want %q", buf.String(), "hello world") - } -} - -var encodeElementTests = []struct { - desc string - value interface{} - start StartElement - expectXML string -}{{ - desc: "simple string", - value: "hello", - start: StartElement{ - Name: Name{Local: "a"}, - }, - expectXML: `<a>hello</a>`, -}, { - desc: "string with added attributes", - value: "hello", - start: StartElement{ - Name: Name{Local: "a"}, - Attr: []Attr{{ - Name: Name{Local: "x"}, - Value: "y", - }, { - Name: Name{Local: "foo"}, - Value: "bar", - }}, - }, - expectXML: `<a x="y" foo="bar">hello</a>`, -}, { - desc: "start element with default name space", - value: struct { - Foo XMLNameWithNSTag - }{ - Foo: XMLNameWithNSTag{ - Value: "hello", - }, - }, - start: StartElement{ - Name: Name{Space: "ns", Local: "a"}, - Attr: []Attr{{ - Name: Name{Local: "xmlns"}, - // "ns" is the name space defined in XMLNameWithNSTag - Value: "ns", - }}, - }, - expectXML: `<a xmlns="ns"><InXMLNameWithNSTag>hello</InXMLNameWithNSTag></a>`, -}, { - desc: "start element in name space with different default name space", - value: struct { - Foo XMLNameWithNSTag - }{ - Foo: XMLNameWithNSTag{ - Value: "hello", - }, - }, - start: StartElement{ - Name: Name{Space: "ns2", Local: "a"}, - Attr: []Attr{{ - Name: Name{Local: "xmlns"}, - // "ns" is the name space defined in XMLNameWithNSTag - Value: "ns", - }}, - }, - expectXML: `<ns2:a xmlns:ns2="ns2" xmlns="ns"><InXMLNameWithNSTag>hello</InXMLNameWithNSTag></ns2:a>`, -}, { - desc: "XMLMarshaler with start element with default name space", - value: &MyMarshalerTest{}, - start: StartElement{ - Name: Name{Space: "ns2", Local: "a"}, - Attr: []Attr{{ - Name: Name{Local: "xmlns"}, - // "ns" is the name space defined in XMLNameWithNSTag - Value: "ns", - }}, - }, - expectXML: `<ns2:a xmlns:ns2="ns2" xmlns="ns">hello world</ns2:a>`, -}} - -func TestEncodeElement(t *testing.T) { - for idx, test := range encodeElementTests { - var buf bytes.Buffer - enc := NewEncoder(&buf) - err := enc.EncodeElement(test.value, test.start) - if err != nil { - t.Fatalf("enc.EncodeElement: %v", err) - } - err = enc.Flush() - if err != nil { - t.Fatalf("enc.Flush: %v", err) - } - if got, want := buf.String(), test.expectXML; got != want { - t.Errorf("#%d(%s): EncodeElement(%#v, %#v):\nhave %#q\nwant %#q", idx, test.desc, test.value, test.start, got, want) - } - } -} - -func BenchmarkMarshal(b *testing.B) { - b.ReportAllocs() - for i := 0; i < b.N; i++ { - Marshal(atomValue) - } -} - -func BenchmarkUnmarshal(b *testing.B) { - b.ReportAllocs() - xml := []byte(atomXml) - for i := 0; i < b.N; i++ { - Unmarshal(xml, &Feed{}) - } -} - -// golang.org/issue/6556 -func TestStructPointerMarshal(t *testing.T) { - type A struct { - XMLName string `xml:"a"` - B []interface{} - } - type C struct { - XMLName Name - Value string `xml:"value"` - } - - a := new(A) - a.B = append(a.B, &C{ - XMLName: Name{Local: "c"}, - Value: "x", - }) - - b, err := Marshal(a) - if err != nil { - t.Fatal(err) - } - if x := string(b); x != "<a><c><value>x</value></c></a>" { - t.Fatal(x) - } - var v A - err = Unmarshal(b, &v) - if err != nil { - t.Fatal(err) - } -} - -var encodeTokenTests = []struct { - desc string - toks []Token - want string - err string -}{{ - desc: "start element with name space", - toks: []Token{ - StartElement{Name{"space", "local"}, nil}, - }, - want: `<space:local xmlns:space="space">`, -}, { - desc: "start element with no name", - toks: []Token{ - StartElement{Name{"space", ""}, nil}, - }, - err: "xml: start tag with no name", -}, { - desc: "end element with no name", - toks: []Token{ - EndElement{Name{"space", ""}}, - }, - err: "xml: end tag with no name", -}, { - desc: "char data", - toks: []Token{ - CharData("foo"), - }, - want: `foo`, -}, { - desc: "char data with escaped chars", - toks: []Token{ - CharData(" \t\n"), - }, - want: " &#x9;\n", -}, { - desc: "comment", - toks: []Token{ - Comment("foo"), - }, - want: `<!--foo-->`, -}, { - desc: "comment with invalid content", - toks: []Token{ - Comment("foo-->"), - }, - err: "xml: EncodeToken of Comment containing --> marker", -}, { - desc: "proc instruction", - toks: []Token{ - ProcInst{"Target", []byte("Instruction")}, - }, - want: `<?Target Instruction?>`, -}, { - desc: "proc instruction with empty target", - toks: []Token{ - ProcInst{"", []byte("Instruction")}, - }, - err: "xml: EncodeToken of ProcInst with invalid Target", -}, { - desc: "proc instruction with bad content", - toks: []Token{ - ProcInst{"", []byte("Instruction?>")}, - }, - err: "xml: EncodeToken of ProcInst with invalid Target", -}, { - desc: "directive", - toks: []Token{ - Directive("foo"), - }, - want: `<!foo>`, -}, { - desc: "more complex directive", - toks: []Token{ - Directive("DOCTYPE doc [ <!ELEMENT doc '>'> <!-- com>ment --> ]"), - }, - want: `<!DOCTYPE doc [ <!ELEMENT doc '>'> <!-- com>ment --> ]>`, -}, { - desc: "directive instruction with bad name", - toks: []Token{ - Directive("foo>"), - }, - err: "xml: EncodeToken of Directive containing wrong < or > markers", -}, { - desc: "end tag without start tag", - toks: []Token{ - EndElement{Name{"foo", "bar"}}, - }, - err: "xml: end tag </bar> without start tag", -}, { - desc: "mismatching end tag local name", - toks: []Token{ - StartElement{Name{"", "foo"}, nil}, - EndElement{Name{"", "bar"}}, - }, - err: "xml: end tag </bar> does not match start tag <foo>", - want: `<foo>`, -}, { - desc: "mismatching end tag namespace", - toks: []Token{ - StartElement{Name{"space", "foo"}, nil}, - EndElement{Name{"another", "foo"}}, - }, - err: "xml: end tag </foo> in namespace another does not match start tag <foo> in namespace space", - want: `<space:foo xmlns:space="space">`, -}, { - desc: "start element with explicit namespace", - toks: []Token{ - StartElement{Name{"space", "local"}, []Attr{ - {Name{"xmlns", "x"}, "space"}, - {Name{"space", "foo"}, "value"}, - }}, - }, - want: `<x:local xmlns:x="space" x:foo="value">`, -}, { - desc: "start element with explicit namespace and colliding prefix", - toks: []Token{ - StartElement{Name{"space", "local"}, []Attr{ - {Name{"xmlns", "x"}, "space"}, - {Name{"space", "foo"}, "value"}, - {Name{"x", "bar"}, "other"}, - }}, - }, - want: `<x:local xmlns:x_1="x" xmlns:x="space" x:foo="value" x_1:bar="other">`, -}, { - desc: "start element using previously defined namespace", - toks: []Token{ - StartElement{Name{"", "local"}, []Attr{ - {Name{"xmlns", "x"}, "space"}, - }}, - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"space", "x"}, "y"}, - }}, - }, - want: `<local xmlns:x="space"><x:foo x:x="y">`, -}, { - desc: "nested name space with same prefix", - toks: []Token{ - StartElement{Name{"", "foo"}, []Attr{ - {Name{"xmlns", "x"}, "space1"}, - }}, - StartElement{Name{"", "foo"}, []Attr{ - {Name{"xmlns", "x"}, "space2"}, - }}, - StartElement{Name{"", "foo"}, []Attr{ - {Name{"space1", "a"}, "space1 value"}, - {Name{"space2", "b"}, "space2 value"}, - }}, - EndElement{Name{"", "foo"}}, - EndElement{Name{"", "foo"}}, - StartElement{Name{"", "foo"}, []Attr{ - {Name{"space1", "a"}, "space1 value"}, - {Name{"space2", "b"}, "space2 value"}, - }}, - }, - want: `<foo xmlns:x="space1"><foo xmlns:x="space2"><foo xmlns:space1="space1" space1:a="space1 value" x:b="space2 value"></foo></foo><foo xmlns:space2="space2" x:a="space1 value" space2:b="space2 value">`, -}, { - desc: "start element defining several prefixes for the same name space", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"xmlns", "a"}, "space"}, - {Name{"xmlns", "b"}, "space"}, - {Name{"space", "x"}, "value"}, - }}, - }, - want: `<a:foo xmlns:a="space" a:x="value">`, -}, { - desc: "nested element redefines name space", - toks: []Token{ - StartElement{Name{"", "foo"}, []Attr{ - {Name{"xmlns", "x"}, "space"}, - }}, - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"xmlns", "y"}, "space"}, - {Name{"space", "a"}, "value"}, - }}, - }, - want: `<foo xmlns:x="space"><x:foo x:a="value">`, -}, { - desc: "nested element creates alias for default name space", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"", "xmlns"}, "space"}, - }}, - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"xmlns", "y"}, "space"}, - {Name{"space", "a"}, "value"}, - }}, - }, - want: `<foo xmlns="space"><foo xmlns:y="space" y:a="value">`, -}, { - desc: "nested element defines default name space with existing prefix", - toks: []Token{ - StartElement{Name{"", "foo"}, []Attr{ - {Name{"xmlns", "x"}, "space"}, - }}, - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"", "xmlns"}, "space"}, - {Name{"space", "a"}, "value"}, - }}, - }, - want: `<foo xmlns:x="space"><foo xmlns="space" x:a="value">`, -}, { - desc: "nested element uses empty attribute name space when default ns defined", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"", "xmlns"}, "space"}, - }}, - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"", "attr"}, "value"}, - }}, - }, - want: `<foo xmlns="space"><foo attr="value">`, -}, { - desc: "redefine xmlns", - toks: []Token{ - StartElement{Name{"", "foo"}, []Attr{ - {Name{"foo", "xmlns"}, "space"}, - }}, - }, - err: `xml: cannot redefine xmlns attribute prefix`, -}, { - desc: "xmlns with explicit name space #1", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"xml", "xmlns"}, "space"}, - }}, - }, - want: `<foo xmlns="space">`, -}, { - desc: "xmlns with explicit name space #2", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{xmlURL, "xmlns"}, "space"}, - }}, - }, - want: `<foo xmlns="space">`, -}, { - desc: "empty name space declaration is ignored", - toks: []Token{ - StartElement{Name{"", "foo"}, []Attr{ - {Name{"xmlns", "foo"}, ""}, - }}, - }, - want: `<foo>`, -}, { - desc: "attribute with no name is ignored", - toks: []Token{ - StartElement{Name{"", "foo"}, []Attr{ - {Name{"", ""}, "value"}, - }}, - }, - want: `<foo>`, -}, { - desc: "namespace URL with non-valid name", - toks: []Token{ - StartElement{Name{"/34", "foo"}, []Attr{ - {Name{"/34", "x"}, "value"}, - }}, - }, - want: `<_:foo xmlns:_="/34" _:x="value">`, -}, { - desc: "nested element resets default namespace to empty", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"", "xmlns"}, "space"}, - }}, - StartElement{Name{"", "foo"}, []Attr{ - {Name{"", "xmlns"}, ""}, - {Name{"", "x"}, "value"}, - {Name{"space", "x"}, "value"}, - }}, - }, - want: `<foo xmlns="space"><foo xmlns:space="space" xmlns="" x="value" space:x="value">`, -}, { - desc: "nested element requires empty default name space", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"", "xmlns"}, "space"}, - }}, - StartElement{Name{"", "foo"}, nil}, - }, - want: `<foo xmlns="space"><foo xmlns="">`, -}, { - desc: "attribute uses name space from xmlns", - toks: []Token{ - StartElement{Name{"some/space", "foo"}, []Attr{ - {Name{"", "attr"}, "value"}, - {Name{"some/space", "other"}, "other value"}, - }}, - }, - want: `<space:foo xmlns:space="some/space" attr="value" space:other="other value">`, -}, { - desc: "default name space should not be used by attributes", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"", "xmlns"}, "space"}, - {Name{"xmlns", "bar"}, "space"}, - {Name{"space", "baz"}, "foo"}, - }}, - StartElement{Name{"space", "baz"}, nil}, - EndElement{Name{"space", "baz"}}, - EndElement{Name{"space", "foo"}}, - }, - want: `<foo xmlns:bar="space" xmlns="space" bar:baz="foo"><baz></baz></foo>`, -}, { - desc: "default name space not used by attributes, not explicitly defined", - toks: []Token{ - StartElement{Name{"space", "foo"}, []Attr{ - {Name{"", "xmlns"}, "space"}, - {Name{"space", "baz"}, "foo"}, - }}, - StartElement{Name{"space", "baz"}, nil}, - EndElement{Name{"space", "baz"}}, - EndElement{Name{"space", "foo"}}, - }, - want: `<foo xmlns:space="space" xmlns="space" space:baz="foo"><baz></baz></foo>`, -}, { - desc: "impossible xmlns declaration", - toks: []Token{ - StartElement{Name{"", "foo"}, []Attr{ - {Name{"", "xmlns"}, "space"}, - }}, - StartElement{Name{"space", "bar"}, []Attr{ - {Name{"space", "attr"}, "value"}, - }}, - }, - want: `<foo><space:bar xmlns:space="space" space:attr="value">`, -}} - -func TestEncodeToken(t *testing.T) { -loop: - for i, tt := range encodeTokenTests { - var buf bytes.Buffer - enc := NewEncoder(&buf) - var err error - for j, tok := range tt.toks { - err = enc.EncodeToken(tok) - if err != nil && j < len(tt.toks)-1 { - t.Errorf("#%d %s token #%d: %v", i, tt.desc, j, err) - continue loop - } - } - errorf := func(f string, a ...interface{}) { - t.Errorf("#%d %s token #%d:%s", i, tt.desc, len(tt.toks)-1, fmt.Sprintf(f, a...)) - } - switch { - case tt.err != "" && err == nil: - errorf(" expected error; got none") - continue - case tt.err == "" && err != nil: - errorf(" got error: %v", err) - continue - case tt.err != "" && err != nil && tt.err != err.Error(): - errorf(" error mismatch; got %v, want %v", err, tt.err) - continue - } - if err := enc.Flush(); err != nil { - errorf(" %v", err) - continue - } - if got := buf.String(); got != tt.want { - errorf("\ngot %v\nwant %v", got, tt.want) - continue - } - } -} - -func TestProcInstEncodeToken(t *testing.T) { - var buf bytes.Buffer - enc := NewEncoder(&buf) - - if err := enc.EncodeToken(ProcInst{"xml", []byte("Instruction")}); err != nil { - t.Fatalf("enc.EncodeToken: expected to be able to encode xml target ProcInst as first token, %s", err) - } - - if err := enc.EncodeToken(ProcInst{"Target", []byte("Instruction")}); err != nil { - t.Fatalf("enc.EncodeToken: expected to be able to add non-xml target ProcInst") - } - - if err := enc.EncodeToken(ProcInst{"xml", []byte("Instruction")}); err == nil { - t.Fatalf("enc.EncodeToken: expected to not be allowed to encode xml target ProcInst when not first token") - } -} - -func TestDecodeEncode(t *testing.T) { - var in, out bytes.Buffer - in.WriteString(`<?xml version="1.0" encoding="UTF-8"?> -<?Target Instruction?> -<root> -</root> -`) - dec := NewDecoder(&in) - enc := NewEncoder(&out) - for tok, err := dec.Token(); err == nil; tok, err = dec.Token() { - err = enc.EncodeToken(tok) - if err != nil { - t.Fatalf("enc.EncodeToken: Unable to encode token (%#v), %v", tok, err) - } - } -} - -// Issue 9796. Used to fail with GORACE="halt_on_error=1" -race. -func TestRace9796(t *testing.T) { - type A struct{} - type B struct { - C []A `xml:"X>Y"` - } - var wg sync.WaitGroup - for i := 0; i < 2; i++ { - wg.Add(1) - go func() { - Marshal(B{[]A{{}}}) - wg.Done() - }() - } - wg.Wait() -} - -func TestIsValidDirective(t *testing.T) { - testOK := []string{ - "<>", - "< < > >", - "<!DOCTYPE '<' '>' '>' <!--nothing-->>", - "<!DOCTYPE doc [ <!ELEMENT doc ANY> <!ELEMENT doc ANY> ]>", - "<!DOCTYPE doc [ <!ELEMENT doc \"ANY> '<' <!E\" LEMENT '>' doc ANY> ]>", - "<!DOCTYPE doc <!-- just>>>> a < comment --> [ <!ITEM anything> ] >", - } - testKO := []string{ - "<", - ">", - "<!--", - "-->", - "< > > < < >", - "<!dummy <!-- > -->", - "<!DOCTYPE doc '>", - "<!DOCTYPE doc '>'", - "<!DOCTYPE doc <!--comment>", - } - for _, s := range testOK { - if !isValidDirective(Directive(s)) { - t.Errorf("Directive %q is expected to be valid", s) - } - } - for _, s := range testKO { - if isValidDirective(Directive(s)) { - t.Errorf("Directive %q is expected to be invalid", s) - } - } -} - -// Issue 11719. EncodeToken used to silently eat tokens with an invalid type. -func TestSimpleUseOfEncodeToken(t *testing.T) { - var buf bytes.Buffer - enc := NewEncoder(&buf) - if err := enc.EncodeToken(&StartElement{Name: Name{"", "object1"}}); err == nil { - t.Errorf("enc.EncodeToken: pointer type should be rejected") - } - if err := enc.EncodeToken(&EndElement{Name: Name{"", "object1"}}); err == nil { - t.Errorf("enc.EncodeToken: pointer type should be rejected") - } - if err := enc.EncodeToken(StartElement{Name: Name{"", "object2"}}); err != nil { - t.Errorf("enc.EncodeToken: StartElement %s", err) - } - if err := enc.EncodeToken(EndElement{Name: Name{"", "object2"}}); err != nil { - t.Errorf("enc.EncodeToken: EndElement %s", err) - } - if err := enc.EncodeToken(Universe{}); err == nil { - t.Errorf("enc.EncodeToken: invalid type not caught") - } - if err := enc.Flush(); err != nil { - t.Errorf("enc.Flush: %s", err) - } - if buf.Len() == 0 { - t.Errorf("enc.EncodeToken: empty buffer") - } - want := "<object2></object2>" - if buf.String() != want { - t.Errorf("enc.EncodeToken: expected %q; got %q", want, buf.String()) - } -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/read.go b/vendor/golang.org/x/net/webdav/internal/xml/read.go deleted file mode 100644 index 4089056a..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/read.go +++ /dev/null @@ -1,692 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "bytes" - "encoding" - "errors" - "fmt" - "reflect" - "strconv" - "strings" -) - -// BUG(rsc): Mapping between XML elements and data structures is inherently flawed: -// an XML element is an order-dependent collection of anonymous -// values, while a data structure is an order-independent collection -// of named values. -// See package json for a textual representation more suitable -// to data structures. - -// Unmarshal parses the XML-encoded data and stores the result in -// the value pointed to by v, which must be an arbitrary struct, -// slice, or string. Well-formed data that does not fit into v is -// discarded. -// -// Because Unmarshal uses the reflect package, it can only assign -// to exported (upper case) fields. Unmarshal uses a case-sensitive -// comparison to match XML element names to tag values and struct -// field names. -// -// Unmarshal maps an XML element to a struct using the following rules. -// In the rules, the tag of a field refers to the value associated with the -// key 'xml' in the struct field's tag (see the example above). -// -// * If the struct has a field of type []byte or string with tag -// ",innerxml", Unmarshal accumulates the raw XML nested inside the -// element in that field. The rest of the rules still apply. -// -// * If the struct has a field named XMLName of type xml.Name, -// Unmarshal records the element name in that field. -// -// * If the XMLName field has an associated tag of the form -// "name" or "namespace-URL name", the XML element must have -// the given name (and, optionally, name space) or else Unmarshal -// returns an error. -// -// * If the XML element has an attribute whose name matches a -// struct field name with an associated tag containing ",attr" or -// the explicit name in a struct field tag of the form "name,attr", -// Unmarshal records the attribute value in that field. -// -// * If the XML element contains character data, that data is -// accumulated in the first struct field that has tag ",chardata". -// The struct field may have type []byte or string. -// If there is no such field, the character data is discarded. -// -// * If the XML element contains comments, they are accumulated in -// the first struct field that has tag ",comment". The struct -// field may have type []byte or string. If there is no such -// field, the comments are discarded. -// -// * If the XML element contains a sub-element whose name matches -// the prefix of a tag formatted as "a" or "a>b>c", unmarshal -// will descend into the XML structure looking for elements with the -// given names, and will map the innermost elements to that struct -// field. A tag starting with ">" is equivalent to one starting -// with the field name followed by ">". -// -// * If the XML element contains a sub-element whose name matches -// a struct field's XMLName tag and the struct field has no -// explicit name tag as per the previous rule, unmarshal maps -// the sub-element to that struct field. -// -// * If the XML element contains a sub-element whose name matches a -// field without any mode flags (",attr", ",chardata", etc), Unmarshal -// maps the sub-element to that struct field. -// -// * If the XML element contains a sub-element that hasn't matched any -// of the above rules and the struct has a field with tag ",any", -// unmarshal maps the sub-element to that struct field. -// -// * An anonymous struct field is handled as if the fields of its -// value were part of the outer struct. -// -// * A struct field with tag "-" is never unmarshalled into. -// -// Unmarshal maps an XML element to a string or []byte by saving the -// concatenation of that element's character data in the string or -// []byte. The saved []byte is never nil. -// -// Unmarshal maps an attribute value to a string or []byte by saving -// the value in the string or slice. -// -// Unmarshal maps an XML element to a slice by extending the length of -// the slice and mapping the element to the newly created value. -// -// Unmarshal maps an XML element or attribute value to a bool by -// setting it to the boolean value represented by the string. -// -// Unmarshal maps an XML element or attribute value to an integer or -// floating-point field by setting the field to the result of -// interpreting the string value in decimal. There is no check for -// overflow. -// -// Unmarshal maps an XML element to an xml.Name by recording the -// element name. -// -// Unmarshal maps an XML element to a pointer by setting the pointer -// to a freshly allocated value and then mapping the element to that value. -// -func Unmarshal(data []byte, v interface{}) error { - return NewDecoder(bytes.NewReader(data)).Decode(v) -} - -// Decode works like xml.Unmarshal, except it reads the decoder -// stream to find the start element. -func (d *Decoder) Decode(v interface{}) error { - return d.DecodeElement(v, nil) -} - -// DecodeElement works like xml.Unmarshal except that it takes -// a pointer to the start XML element to decode into v. -// It is useful when a client reads some raw XML tokens itself -// but also wants to defer to Unmarshal for some elements. -func (d *Decoder) DecodeElement(v interface{}, start *StartElement) error { - val := reflect.ValueOf(v) - if val.Kind() != reflect.Ptr { - return errors.New("non-pointer passed to Unmarshal") - } - return d.unmarshal(val.Elem(), start) -} - -// An UnmarshalError represents an error in the unmarshalling process. -type UnmarshalError string - -func (e UnmarshalError) Error() string { return string(e) } - -// Unmarshaler is the interface implemented by objects that can unmarshal -// an XML element description of themselves. -// -// UnmarshalXML decodes a single XML element -// beginning with the given start element. -// If it returns an error, the outer call to Unmarshal stops and -// returns that error. -// UnmarshalXML must consume exactly one XML element. -// One common implementation strategy is to unmarshal into -// a separate value with a layout matching the expected XML -// using d.DecodeElement, and then to copy the data from -// that value into the receiver. -// Another common strategy is to use d.Token to process the -// XML object one token at a time. -// UnmarshalXML may not use d.RawToken. -type Unmarshaler interface { - UnmarshalXML(d *Decoder, start StartElement) error -} - -// UnmarshalerAttr is the interface implemented by objects that can unmarshal -// an XML attribute description of themselves. -// -// UnmarshalXMLAttr decodes a single XML attribute. -// If it returns an error, the outer call to Unmarshal stops and -// returns that error. -// UnmarshalXMLAttr is used only for struct fields with the -// "attr" option in the field tag. -type UnmarshalerAttr interface { - UnmarshalXMLAttr(attr Attr) error -} - -// receiverType returns the receiver type to use in an expression like "%s.MethodName". -func receiverType(val interface{}) string { - t := reflect.TypeOf(val) - if t.Name() != "" { - return t.String() - } - return "(" + t.String() + ")" -} - -// unmarshalInterface unmarshals a single XML element into val. -// start is the opening tag of the element. -func (p *Decoder) unmarshalInterface(val Unmarshaler, start *StartElement) error { - // Record that decoder must stop at end tag corresponding to start. - p.pushEOF() - - p.unmarshalDepth++ - err := val.UnmarshalXML(p, *start) - p.unmarshalDepth-- - if err != nil { - p.popEOF() - return err - } - - if !p.popEOF() { - return fmt.Errorf("xml: %s.UnmarshalXML did not consume entire <%s> element", receiverType(val), start.Name.Local) - } - - return nil -} - -// unmarshalTextInterface unmarshals a single XML element into val. -// The chardata contained in the element (but not its children) -// is passed to the text unmarshaler. -func (p *Decoder) unmarshalTextInterface(val encoding.TextUnmarshaler, start *StartElement) error { - var buf []byte - depth := 1 - for depth > 0 { - t, err := p.Token() - if err != nil { - return err - } - switch t := t.(type) { - case CharData: - if depth == 1 { - buf = append(buf, t...) - } - case StartElement: - depth++ - case EndElement: - depth-- - } - } - return val.UnmarshalText(buf) -} - -// unmarshalAttr unmarshals a single XML attribute into val. -func (p *Decoder) unmarshalAttr(val reflect.Value, attr Attr) error { - if val.Kind() == reflect.Ptr { - if val.IsNil() { - val.Set(reflect.New(val.Type().Elem())) - } - val = val.Elem() - } - - if val.CanInterface() && val.Type().Implements(unmarshalerAttrType) { - // This is an unmarshaler with a non-pointer receiver, - // so it's likely to be incorrect, but we do what we're told. - return val.Interface().(UnmarshalerAttr).UnmarshalXMLAttr(attr) - } - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(unmarshalerAttrType) { - return pv.Interface().(UnmarshalerAttr).UnmarshalXMLAttr(attr) - } - } - - // Not an UnmarshalerAttr; try encoding.TextUnmarshaler. - if val.CanInterface() && val.Type().Implements(textUnmarshalerType) { - // This is an unmarshaler with a non-pointer receiver, - // so it's likely to be incorrect, but we do what we're told. - return val.Interface().(encoding.TextUnmarshaler).UnmarshalText([]byte(attr.Value)) - } - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { - return pv.Interface().(encoding.TextUnmarshaler).UnmarshalText([]byte(attr.Value)) - } - } - - copyValue(val, []byte(attr.Value)) - return nil -} - -var ( - unmarshalerType = reflect.TypeOf((*Unmarshaler)(nil)).Elem() - unmarshalerAttrType = reflect.TypeOf((*UnmarshalerAttr)(nil)).Elem() - textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() -) - -// Unmarshal a single XML element into val. -func (p *Decoder) unmarshal(val reflect.Value, start *StartElement) error { - // Find start element if we need it. - if start == nil { - for { - tok, err := p.Token() - if err != nil { - return err - } - if t, ok := tok.(StartElement); ok { - start = &t - break - } - } - } - - // Load value from interface, but only if the result will be - // usefully addressable. - if val.Kind() == reflect.Interface && !val.IsNil() { - e := val.Elem() - if e.Kind() == reflect.Ptr && !e.IsNil() { - val = e - } - } - - if val.Kind() == reflect.Ptr { - if val.IsNil() { - val.Set(reflect.New(val.Type().Elem())) - } - val = val.Elem() - } - - if val.CanInterface() && val.Type().Implements(unmarshalerType) { - // This is an unmarshaler with a non-pointer receiver, - // so it's likely to be incorrect, but we do what we're told. - return p.unmarshalInterface(val.Interface().(Unmarshaler), start) - } - - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(unmarshalerType) { - return p.unmarshalInterface(pv.Interface().(Unmarshaler), start) - } - } - - if val.CanInterface() && val.Type().Implements(textUnmarshalerType) { - return p.unmarshalTextInterface(val.Interface().(encoding.TextUnmarshaler), start) - } - - if val.CanAddr() { - pv := val.Addr() - if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { - return p.unmarshalTextInterface(pv.Interface().(encoding.TextUnmarshaler), start) - } - } - - var ( - data []byte - saveData reflect.Value - comment []byte - saveComment reflect.Value - saveXML reflect.Value - saveXMLIndex int - saveXMLData []byte - saveAny reflect.Value - sv reflect.Value - tinfo *typeInfo - err error - ) - - switch v := val; v.Kind() { - default: - return errors.New("unknown type " + v.Type().String()) - - case reflect.Interface: - // TODO: For now, simply ignore the field. In the near - // future we may choose to unmarshal the start - // element on it, if not nil. - return p.Skip() - - case reflect.Slice: - typ := v.Type() - if typ.Elem().Kind() == reflect.Uint8 { - // []byte - saveData = v - break - } - - // Slice of element values. - // Grow slice. - n := v.Len() - if n >= v.Cap() { - ncap := 2 * n - if ncap < 4 { - ncap = 4 - } - new := reflect.MakeSlice(typ, n, ncap) - reflect.Copy(new, v) - v.Set(new) - } - v.SetLen(n + 1) - - // Recur to read element into slice. - if err := p.unmarshal(v.Index(n), start); err != nil { - v.SetLen(n) - return err - } - return nil - - case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, reflect.String: - saveData = v - - case reflect.Struct: - typ := v.Type() - if typ == nameType { - v.Set(reflect.ValueOf(start.Name)) - break - } - - sv = v - tinfo, err = getTypeInfo(typ) - if err != nil { - return err - } - - // Validate and assign element name. - if tinfo.xmlname != nil { - finfo := tinfo.xmlname - if finfo.name != "" && finfo.name != start.Name.Local { - return UnmarshalError("expected element type <" + finfo.name + "> but have <" + start.Name.Local + ">") - } - if finfo.xmlns != "" && finfo.xmlns != start.Name.Space { - e := "expected element <" + finfo.name + "> in name space " + finfo.xmlns + " but have " - if start.Name.Space == "" { - e += "no name space" - } else { - e += start.Name.Space - } - return UnmarshalError(e) - } - fv := finfo.value(sv) - if _, ok := fv.Interface().(Name); ok { - fv.Set(reflect.ValueOf(start.Name)) - } - } - - // Assign attributes. - // Also, determine whether we need to save character data or comments. - for i := range tinfo.fields { - finfo := &tinfo.fields[i] - switch finfo.flags & fMode { - case fAttr: - strv := finfo.value(sv) - // Look for attribute. - for _, a := range start.Attr { - if a.Name.Local == finfo.name && (finfo.xmlns == "" || finfo.xmlns == a.Name.Space) { - if err := p.unmarshalAttr(strv, a); err != nil { - return err - } - break - } - } - - case fCharData: - if !saveData.IsValid() { - saveData = finfo.value(sv) - } - - case fComment: - if !saveComment.IsValid() { - saveComment = finfo.value(sv) - } - - case fAny, fAny | fElement: - if !saveAny.IsValid() { - saveAny = finfo.value(sv) - } - - case fInnerXml: - if !saveXML.IsValid() { - saveXML = finfo.value(sv) - if p.saved == nil { - saveXMLIndex = 0 - p.saved = new(bytes.Buffer) - } else { - saveXMLIndex = p.savedOffset() - } - } - } - } - } - - // Find end element. - // Process sub-elements along the way. -Loop: - for { - var savedOffset int - if saveXML.IsValid() { - savedOffset = p.savedOffset() - } - tok, err := p.Token() - if err != nil { - return err - } - switch t := tok.(type) { - case StartElement: - consumed := false - if sv.IsValid() { - consumed, err = p.unmarshalPath(tinfo, sv, nil, &t) - if err != nil { - return err - } - if !consumed && saveAny.IsValid() { - consumed = true - if err := p.unmarshal(saveAny, &t); err != nil { - return err - } - } - } - if !consumed { - if err := p.Skip(); err != nil { - return err - } - } - - case EndElement: - if saveXML.IsValid() { - saveXMLData = p.saved.Bytes()[saveXMLIndex:savedOffset] - if saveXMLIndex == 0 { - p.saved = nil - } - } - break Loop - - case CharData: - if saveData.IsValid() { - data = append(data, t...) - } - - case Comment: - if saveComment.IsValid() { - comment = append(comment, t...) - } - } - } - - if saveData.IsValid() && saveData.CanInterface() && saveData.Type().Implements(textUnmarshalerType) { - if err := saveData.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil { - return err - } - saveData = reflect.Value{} - } - - if saveData.IsValid() && saveData.CanAddr() { - pv := saveData.Addr() - if pv.CanInterface() && pv.Type().Implements(textUnmarshalerType) { - if err := pv.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil { - return err - } - saveData = reflect.Value{} - } - } - - if err := copyValue(saveData, data); err != nil { - return err - } - - switch t := saveComment; t.Kind() { - case reflect.String: - t.SetString(string(comment)) - case reflect.Slice: - t.Set(reflect.ValueOf(comment)) - } - - switch t := saveXML; t.Kind() { - case reflect.String: - t.SetString(string(saveXMLData)) - case reflect.Slice: - t.Set(reflect.ValueOf(saveXMLData)) - } - - return nil -} - -func copyValue(dst reflect.Value, src []byte) (err error) { - dst0 := dst - - if dst.Kind() == reflect.Ptr { - if dst.IsNil() { - dst.Set(reflect.New(dst.Type().Elem())) - } - dst = dst.Elem() - } - - // Save accumulated data. - switch dst.Kind() { - case reflect.Invalid: - // Probably a comment. - default: - return errors.New("cannot unmarshal into " + dst0.Type().String()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - itmp, err := strconv.ParseInt(string(src), 10, dst.Type().Bits()) - if err != nil { - return err - } - dst.SetInt(itmp) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - utmp, err := strconv.ParseUint(string(src), 10, dst.Type().Bits()) - if err != nil { - return err - } - dst.SetUint(utmp) - case reflect.Float32, reflect.Float64: - ftmp, err := strconv.ParseFloat(string(src), dst.Type().Bits()) - if err != nil { - return err - } - dst.SetFloat(ftmp) - case reflect.Bool: - value, err := strconv.ParseBool(strings.TrimSpace(string(src))) - if err != nil { - return err - } - dst.SetBool(value) - case reflect.String: - dst.SetString(string(src)) - case reflect.Slice: - if len(src) == 0 { - // non-nil to flag presence - src = []byte{} - } - dst.SetBytes(src) - } - return nil -} - -// unmarshalPath walks down an XML structure looking for wanted -// paths, and calls unmarshal on them. -// The consumed result tells whether XML elements have been consumed -// from the Decoder until start's matching end element, or if it's -// still untouched because start is uninteresting for sv's fields. -func (p *Decoder) unmarshalPath(tinfo *typeInfo, sv reflect.Value, parents []string, start *StartElement) (consumed bool, err error) { - recurse := false -Loop: - for i := range tinfo.fields { - finfo := &tinfo.fields[i] - if finfo.flags&fElement == 0 || len(finfo.parents) < len(parents) || finfo.xmlns != "" && finfo.xmlns != start.Name.Space { - continue - } - for j := range parents { - if parents[j] != finfo.parents[j] { - continue Loop - } - } - if len(finfo.parents) == len(parents) && finfo.name == start.Name.Local { - // It's a perfect match, unmarshal the field. - return true, p.unmarshal(finfo.value(sv), start) - } - if len(finfo.parents) > len(parents) && finfo.parents[len(parents)] == start.Name.Local { - // It's a prefix for the field. Break and recurse - // since it's not ok for one field path to be itself - // the prefix for another field path. - recurse = true - - // We can reuse the same slice as long as we - // don't try to append to it. - parents = finfo.parents[:len(parents)+1] - break - } - } - if !recurse { - // We have no business with this element. - return false, nil - } - // The element is not a perfect match for any field, but one - // or more fields have the path to this element as a parent - // prefix. Recurse and attempt to match these. - for { - var tok Token - tok, err = p.Token() - if err != nil { - return true, err - } - switch t := tok.(type) { - case StartElement: - consumed2, err := p.unmarshalPath(tinfo, sv, parents, &t) - if err != nil { - return true, err - } - if !consumed2 { - if err := p.Skip(); err != nil { - return true, err - } - } - case EndElement: - return true, nil - } - } -} - -// Skip reads tokens until it has consumed the end element -// matching the most recent start element already consumed. -// It recurs if it encounters a start element, so it can be used to -// skip nested structures. -// It returns nil if it finds an end element matching the start -// element; otherwise it returns an error describing the problem. -func (d *Decoder) Skip() error { - for { - tok, err := d.Token() - if err != nil { - return err - } - switch tok.(type) { - case StartElement: - if err := d.Skip(); err != nil { - return err - } - case EndElement: - return nil - } - } -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/read_test.go b/vendor/golang.org/x/net/webdav/internal/xml/read_test.go deleted file mode 100644 index 02f1e10c..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/read_test.go +++ /dev/null @@ -1,744 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "bytes" - "fmt" - "io" - "reflect" - "strings" - "testing" - "time" -) - -// Stripped down Atom feed data structures. - -func TestUnmarshalFeed(t *testing.T) { - var f Feed - if err := Unmarshal([]byte(atomFeedString), &f); err != nil { - t.Fatalf("Unmarshal: %s", err) - } - if !reflect.DeepEqual(f, atomFeed) { - t.Fatalf("have %#v\nwant %#v", f, atomFeed) - } -} - -// hget http://codereview.appspot.com/rss/mine/rsc -const atomFeedString = ` -<?xml version="1.0" encoding="utf-8"?> -<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us" updated="2009-10-04T01:35:58+00:00"><title>Code Review - My issues</title><link href="http://codereview.appspot.com/" rel="alternate"></link><link href="http://codereview.appspot.com/rss/mine/rsc" rel="self"></link><id>http://codereview.appspot.com/</id><author><name>rietveld&lt;&gt;</name></author><entry><title>rietveld: an attempt at pubsubhubbub -</title><link href="http://codereview.appspot.com/126085" rel="alternate"></link><updated>2009-10-04T01:35:58+00:00</updated><author><name>email-address-removed</name></author><id>urn:md5:134d9179c41f806be79b3a5f7877d19a</id><summary type="html"> - An attempt at adding pubsubhubbub support to Rietveld. -http://code.google.com/p/pubsubhubbub -http://code.google.com/p/rietveld/issues/detail?id=155 - -The server side of the protocol is trivial: - 1. add a &amp;lt;link rel=&amp;quot;hub&amp;quot; href=&amp;quot;hub-server&amp;quot;&amp;gt; tag to all - feeds that will be pubsubhubbubbed. - 2. every time one of those feeds changes, tell the hub - with a simple POST request. - -I have tested this by adding debug prints to a local hub -server and checking that the server got the right publish -requests. - -I can&amp;#39;t quite get the server to work, but I think the bug -is not in my code. I think that the server expects to be -able to grab the feed and see the feed&amp;#39;s actual URL in -the link rel=&amp;quot;self&amp;quot;, but the default value for that drops -the :port from the URL, and I cannot for the life of me -figure out how to get the Atom generator deep inside -django not to do that, or even where it is doing that, -or even what code is running to generate the Atom feed. -(I thought I knew but I added some assert False statements -and it kept running!) - -Ignoring that particular problem, I would appreciate -feedback on the right way to get the two values at -the top of feeds.py marked NOTE(rsc). - - -</summary></entry><entry><title>rietveld: correct tab handling -</title><link href="http://codereview.appspot.com/124106" rel="alternate"></link><updated>2009-10-03T23:02:17+00:00</updated><author><name>email-address-removed</name></author><id>urn:md5:0a2a4f19bb815101f0ba2904aed7c35a</id><summary type="html"> - This fixes the buggy tab rendering that can be seen at -http://codereview.appspot.com/116075/diff/1/2 - -The fundamental problem was that the tab code was -not being told what column the text began in, so it -didn&amp;#39;t know where to put the tab stops. Another problem -was that some of the code assumed that string byte -offsets were the same as column offsets, which is only -true if there are no tabs. - -In the process of fixing this, I cleaned up the arguments -to Fold and ExpandTabs and renamed them Break and -_ExpandTabs so that I could be sure that I found all the -call sites. I also wanted to verify that ExpandTabs was -not being used from outside intra_region_diff.py. - - -</summary></entry></feed> ` - -type Feed struct { - XMLName Name `xml:"http://www.w3.org/2005/Atom feed"` - Title string `xml:"title"` - Id string `xml:"id"` - Link []Link `xml:"link"` - Updated time.Time `xml:"updated,attr"` - Author Person `xml:"author"` - Entry []Entry `xml:"entry"` -} - -type Entry struct { - Title string `xml:"title"` - Id string `xml:"id"` - Link []Link `xml:"link"` - Updated time.Time `xml:"updated"` - Author Person `xml:"author"` - Summary Text `xml:"summary"` -} - -type Link struct { - Rel string `xml:"rel,attr,omitempty"` - Href string `xml:"href,attr"` -} - -type Person struct { - Name string `xml:"name"` - URI string `xml:"uri"` - Email string `xml:"email"` - InnerXML string `xml:",innerxml"` -} - -type Text struct { - Type string `xml:"type,attr,omitempty"` - Body string `xml:",chardata"` -} - -var atomFeed = Feed{ - XMLName: Name{"http://www.w3.org/2005/Atom", "feed"}, - Title: "Code Review - My issues", - Link: []Link{ - {Rel: "alternate", Href: "http://codereview.appspot.com/"}, - {Rel: "self", Href: "http://codereview.appspot.com/rss/mine/rsc"}, - }, - Id: "http://codereview.appspot.com/", - Updated: ParseTime("2009-10-04T01:35:58+00:00"), - Author: Person{ - Name: "rietveld<>", - InnerXML: "<name>rietveld&lt;&gt;</name>", - }, - Entry: []Entry{ - { - Title: "rietveld: an attempt at pubsubhubbub\n", - Link: []Link{ - {Rel: "alternate", Href: "http://codereview.appspot.com/126085"}, - }, - Updated: ParseTime("2009-10-04T01:35:58+00:00"), - Author: Person{ - Name: "email-address-removed", - InnerXML: "<name>email-address-removed</name>", - }, - Id: "urn:md5:134d9179c41f806be79b3a5f7877d19a", - Summary: Text{ - Type: "html", - Body: ` - An attempt at adding pubsubhubbub support to Rietveld. -http://code.google.com/p/pubsubhubbub -http://code.google.com/p/rietveld/issues/detail?id=155 - -The server side of the protocol is trivial: - 1. add a &lt;link rel=&quot;hub&quot; href=&quot;hub-server&quot;&gt; tag to all - feeds that will be pubsubhubbubbed. - 2. every time one of those feeds changes, tell the hub - with a simple POST request. - -I have tested this by adding debug prints to a local hub -server and checking that the server got the right publish -requests. - -I can&#39;t quite get the server to work, but I think the bug -is not in my code. I think that the server expects to be -able to grab the feed and see the feed&#39;s actual URL in -the link rel=&quot;self&quot;, but the default value for that drops -the :port from the URL, and I cannot for the life of me -figure out how to get the Atom generator deep inside -django not to do that, or even where it is doing that, -or even what code is running to generate the Atom feed. -(I thought I knew but I added some assert False statements -and it kept running!) - -Ignoring that particular problem, I would appreciate -feedback on the right way to get the two values at -the top of feeds.py marked NOTE(rsc). - - -`, - }, - }, - { - Title: "rietveld: correct tab handling\n", - Link: []Link{ - {Rel: "alternate", Href: "http://codereview.appspot.com/124106"}, - }, - Updated: ParseTime("2009-10-03T23:02:17+00:00"), - Author: Person{ - Name: "email-address-removed", - InnerXML: "<name>email-address-removed</name>", - }, - Id: "urn:md5:0a2a4f19bb815101f0ba2904aed7c35a", - Summary: Text{ - Type: "html", - Body: ` - This fixes the buggy tab rendering that can be seen at -http://codereview.appspot.com/116075/diff/1/2 - -The fundamental problem was that the tab code was -not being told what column the text began in, so it -didn&#39;t know where to put the tab stops. Another problem -was that some of the code assumed that string byte -offsets were the same as column offsets, which is only -true if there are no tabs. - -In the process of fixing this, I cleaned up the arguments -to Fold and ExpandTabs and renamed them Break and -_ExpandTabs so that I could be sure that I found all the -call sites. I also wanted to verify that ExpandTabs was -not being used from outside intra_region_diff.py. - - -`, - }, - }, - }, -} - -const pathTestString = ` -<Result> - <Before>1</Before> - <Items> - <Item1> - <Value>A</Value> - </Item1> - <Item2> - <Value>B</Value> - </Item2> - <Item1> - <Value>C</Value> - <Value>D</Value> - </Item1> - <_> - <Value>E</Value> - </_> - </Items> - <After>2</After> -</Result> -` - -type PathTestItem struct { - Value string -} - -type PathTestA struct { - Items []PathTestItem `xml:">Item1"` - Before, After string -} - -type PathTestB struct { - Other []PathTestItem `xml:"Items>Item1"` - Before, After string -} - -type PathTestC struct { - Values1 []string `xml:"Items>Item1>Value"` - Values2 []string `xml:"Items>Item2>Value"` - Before, After string -} - -type PathTestSet struct { - Item1 []PathTestItem -} - -type PathTestD struct { - Other PathTestSet `xml:"Items"` - Before, After string -} - -type PathTestE struct { - Underline string `xml:"Items>_>Value"` - Before, After string -} - -var pathTests = []interface{}{ - &PathTestA{Items: []PathTestItem{{"A"}, {"D"}}, Before: "1", After: "2"}, - &PathTestB{Other: []PathTestItem{{"A"}, {"D"}}, Before: "1", After: "2"}, - &PathTestC{Values1: []string{"A", "C", "D"}, Values2: []string{"B"}, Before: "1", After: "2"}, - &PathTestD{Other: PathTestSet{Item1: []PathTestItem{{"A"}, {"D"}}}, Before: "1", After: "2"}, - &PathTestE{Underline: "E", Before: "1", After: "2"}, -} - -func TestUnmarshalPaths(t *testing.T) { - for _, pt := range pathTests { - v := reflect.New(reflect.TypeOf(pt).Elem()).Interface() - if err := Unmarshal([]byte(pathTestString), v); err != nil { - t.Fatalf("Unmarshal: %s", err) - } - if !reflect.DeepEqual(v, pt) { - t.Fatalf("have %#v\nwant %#v", v, pt) - } - } -} - -type BadPathTestA struct { - First string `xml:"items>item1"` - Other string `xml:"items>item2"` - Second string `xml:"items"` -} - -type BadPathTestB struct { - Other string `xml:"items>item2>value"` - First string `xml:"items>item1"` - Second string `xml:"items>item1>value"` -} - -type BadPathTestC struct { - First string - Second string `xml:"First"` -} - -type BadPathTestD struct { - BadPathEmbeddedA - BadPathEmbeddedB -} - -type BadPathEmbeddedA struct { - First string -} - -type BadPathEmbeddedB struct { - Second string `xml:"First"` -} - -var badPathTests = []struct { - v, e interface{} -}{ - {&BadPathTestA{}, &TagPathError{reflect.TypeOf(BadPathTestA{}), "First", "items>item1", "Second", "items"}}, - {&BadPathTestB{}, &TagPathError{reflect.TypeOf(BadPathTestB{}), "First", "items>item1", "Second", "items>item1>value"}}, - {&BadPathTestC{}, &TagPathError{reflect.TypeOf(BadPathTestC{}), "First", "", "Second", "First"}}, - {&BadPathTestD{}, &TagPathError{reflect.TypeOf(BadPathTestD{}), "First", "", "Second", "First"}}, -} - -func TestUnmarshalBadPaths(t *testing.T) { - for _, tt := range badPathTests { - err := Unmarshal([]byte(pathTestString), tt.v) - if !reflect.DeepEqual(err, tt.e) { - t.Fatalf("Unmarshal with %#v didn't fail properly:\nhave %#v,\nwant %#v", tt.v, err, tt.e) - } - } -} - -const OK = "OK" -const withoutNameTypeData = ` -<?xml version="1.0" charset="utf-8"?> -<Test3 Attr="OK" />` - -type TestThree struct { - XMLName Name `xml:"Test3"` - Attr string `xml:",attr"` -} - -func TestUnmarshalWithoutNameType(t *testing.T) { - var x TestThree - if err := Unmarshal([]byte(withoutNameTypeData), &x); err != nil { - t.Fatalf("Unmarshal: %s", err) - } - if x.Attr != OK { - t.Fatalf("have %v\nwant %v", x.Attr, OK) - } -} - -func TestUnmarshalAttr(t *testing.T) { - type ParamVal struct { - Int int `xml:"int,attr"` - } - - type ParamPtr struct { - Int *int `xml:"int,attr"` - } - - type ParamStringPtr struct { - Int *string `xml:"int,attr"` - } - - x := []byte(`<Param int="1" />`) - - p1 := &ParamPtr{} - if err := Unmarshal(x, p1); err != nil { - t.Fatalf("Unmarshal: %s", err) - } - if p1.Int == nil { - t.Fatalf("Unmarshal failed in to *int field") - } else if *p1.Int != 1 { - t.Fatalf("Unmarshal with %s failed:\nhave %#v,\n want %#v", x, p1.Int, 1) - } - - p2 := &ParamVal{} - if err := Unmarshal(x, p2); err != nil { - t.Fatalf("Unmarshal: %s", err) - } - if p2.Int != 1 { - t.Fatalf("Unmarshal with %s failed:\nhave %#v,\n want %#v", x, p2.Int, 1) - } - - p3 := &ParamStringPtr{} - if err := Unmarshal(x, p3); err != nil { - t.Fatalf("Unmarshal: %s", err) - } - if p3.Int == nil { - t.Fatalf("Unmarshal failed in to *string field") - } else if *p3.Int != "1" { - t.Fatalf("Unmarshal with %s failed:\nhave %#v,\n want %#v", x, p3.Int, 1) - } -} - -type Tables struct { - HTable string `xml:"http://www.w3.org/TR/html4/ table"` - FTable string `xml:"http://www.w3schools.com/furniture table"` -} - -var tables = []struct { - xml string - tab Tables - ns string -}{ - { - xml: `<Tables>` + - `<table xmlns="http://www.w3.org/TR/html4/">hello</table>` + - `<table xmlns="http://www.w3schools.com/furniture">world</table>` + - `</Tables>`, - tab: Tables{"hello", "world"}, - }, - { - xml: `<Tables>` + - `<table xmlns="http://www.w3schools.com/furniture">world</table>` + - `<table xmlns="http://www.w3.org/TR/html4/">hello</table>` + - `</Tables>`, - tab: Tables{"hello", "world"}, - }, - { - xml: `<Tables xmlns:f="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/">` + - `<f:table>world</f:table>` + - `<h:table>hello</h:table>` + - `</Tables>`, - tab: Tables{"hello", "world"}, - }, - { - xml: `<Tables>` + - `<table>bogus</table>` + - `</Tables>`, - tab: Tables{}, - }, - { - xml: `<Tables>` + - `<table>only</table>` + - `</Tables>`, - tab: Tables{HTable: "only"}, - ns: "http://www.w3.org/TR/html4/", - }, - { - xml: `<Tables>` + - `<table>only</table>` + - `</Tables>`, - tab: Tables{FTable: "only"}, - ns: "http://www.w3schools.com/furniture", - }, - { - xml: `<Tables>` + - `<table>only</table>` + - `</Tables>`, - tab: Tables{}, - ns: "something else entirely", - }, -} - -func TestUnmarshalNS(t *testing.T) { - for i, tt := range tables { - var dst Tables - var err error - if tt.ns != "" { - d := NewDecoder(strings.NewReader(tt.xml)) - d.DefaultSpace = tt.ns - err = d.Decode(&dst) - } else { - err = Unmarshal([]byte(tt.xml), &dst) - } - if err != nil { - t.Errorf("#%d: Unmarshal: %v", i, err) - continue - } - want := tt.tab - if dst != want { - t.Errorf("#%d: dst=%+v, want %+v", i, dst, want) - } - } -} - -func TestRoundTrip(t *testing.T) { - // From issue 7535 - const s = `<ex:element xmlns:ex="http://example.com/schema"></ex:element>` - in := bytes.NewBufferString(s) - for i := 0; i < 10; i++ { - out := &bytes.Buffer{} - d := NewDecoder(in) - e := NewEncoder(out) - - for { - t, err := d.Token() - if err == io.EOF { - break - } - if err != nil { - fmt.Println("failed:", err) - return - } - e.EncodeToken(t) - } - e.Flush() - in = out - } - if got := in.String(); got != s { - t.Errorf("have: %q\nwant: %q\n", got, s) - } -} - -func TestMarshalNS(t *testing.T) { - dst := Tables{"hello", "world"} - data, err := Marshal(&dst) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - want := `<Tables><table xmlns="http://www.w3.org/TR/html4/">hello</table><table xmlns="http://www.w3schools.com/furniture">world</table></Tables>` - str := string(data) - if str != want { - t.Errorf("have: %q\nwant: %q\n", str, want) - } -} - -type TableAttrs struct { - TAttr TAttr -} - -type TAttr struct { - HTable string `xml:"http://www.w3.org/TR/html4/ table,attr"` - FTable string `xml:"http://www.w3schools.com/furniture table,attr"` - Lang string `xml:"http://www.w3.org/XML/1998/namespace lang,attr,omitempty"` - Other1 string `xml:"http://golang.org/xml/ other,attr,omitempty"` - Other2 string `xml:"http://golang.org/xmlfoo/ other,attr,omitempty"` - Other3 string `xml:"http://golang.org/json/ other,attr,omitempty"` - Other4 string `xml:"http://golang.org/2/json/ other,attr,omitempty"` -} - -var tableAttrs = []struct { - xml string - tab TableAttrs - ns string -}{ - { - xml: `<TableAttrs xmlns:f="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/"><TAttr ` + - `h:table="hello" f:table="world" ` + - `/></TableAttrs>`, - tab: TableAttrs{TAttr{HTable: "hello", FTable: "world"}}, - }, - { - xml: `<TableAttrs><TAttr xmlns:f="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/" ` + - `h:table="hello" f:table="world" ` + - `/></TableAttrs>`, - tab: TableAttrs{TAttr{HTable: "hello", FTable: "world"}}, - }, - { - xml: `<TableAttrs><TAttr ` + - `h:table="hello" f:table="world" xmlns:f="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/" ` + - `/></TableAttrs>`, - tab: TableAttrs{TAttr{HTable: "hello", FTable: "world"}}, - }, - { - // Default space does not apply to attribute names. - xml: `<TableAttrs xmlns="http://www.w3schools.com/furniture" xmlns:h="http://www.w3.org/TR/html4/"><TAttr ` + - `h:table="hello" table="world" ` + - `/></TableAttrs>`, - tab: TableAttrs{TAttr{HTable: "hello", FTable: ""}}, - }, - { - // Default space does not apply to attribute names. - xml: `<TableAttrs xmlns:f="http://www.w3schools.com/furniture"><TAttr xmlns="http://www.w3.org/TR/html4/" ` + - `table="hello" f:table="world" ` + - `/></TableAttrs>`, - tab: TableAttrs{TAttr{HTable: "", FTable: "world"}}, - }, - { - xml: `<TableAttrs><TAttr ` + - `table="bogus" ` + - `/></TableAttrs>`, - tab: TableAttrs{}, - }, - { - // Default space does not apply to attribute names. - xml: `<TableAttrs xmlns:h="http://www.w3.org/TR/html4/"><TAttr ` + - `h:table="hello" table="world" ` + - `/></TableAttrs>`, - tab: TableAttrs{TAttr{HTable: "hello", FTable: ""}}, - ns: "http://www.w3schools.com/furniture", - }, - { - // Default space does not apply to attribute names. - xml: `<TableAttrs xmlns:f="http://www.w3schools.com/furniture"><TAttr ` + - `table="hello" f:table="world" ` + - `/></TableAttrs>`, - tab: TableAttrs{TAttr{HTable: "", FTable: "world"}}, - ns: "http://www.w3.org/TR/html4/", - }, - { - xml: `<TableAttrs><TAttr ` + - `table="bogus" ` + - `/></TableAttrs>`, - tab: TableAttrs{}, - ns: "something else entirely", - }, -} - -func TestUnmarshalNSAttr(t *testing.T) { - for i, tt := range tableAttrs { - var dst TableAttrs - var err error - if tt.ns != "" { - d := NewDecoder(strings.NewReader(tt.xml)) - d.DefaultSpace = tt.ns - err = d.Decode(&dst) - } else { - err = Unmarshal([]byte(tt.xml), &dst) - } - if err != nil { - t.Errorf("#%d: Unmarshal: %v", i, err) - continue - } - want := tt.tab - if dst != want { - t.Errorf("#%d: dst=%+v, want %+v", i, dst, want) - } - } -} - -func TestMarshalNSAttr(t *testing.T) { - src := TableAttrs{TAttr{"hello", "world", "en_US", "other1", "other2", "other3", "other4"}} - data, err := Marshal(&src) - if err != nil { - t.Fatalf("Marshal: %v", err) - } - want := `<TableAttrs><TAttr xmlns:json_1="http://golang.org/2/json/" xmlns:json="http://golang.org/json/" xmlns:_xmlfoo="http://golang.org/xmlfoo/" xmlns:_xml="http://golang.org/xml/" xmlns:furniture="http://www.w3schools.com/furniture" xmlns:html4="http://www.w3.org/TR/html4/" html4:table="hello" furniture:table="world" xml:lang="en_US" _xml:other="other1" _xmlfoo:other="other2" json:other="other3" json_1:other="other4"></TAttr></TableAttrs>` - str := string(data) - if str != want { - t.Errorf("Marshal:\nhave: %#q\nwant: %#q\n", str, want) - } - - var dst TableAttrs - if err := Unmarshal(data, &dst); err != nil { - t.Errorf("Unmarshal: %v", err) - } - - if dst != src { - t.Errorf("Unmarshal = %q, want %q", dst, src) - } -} - -type MyCharData struct { - body string -} - -func (m *MyCharData) UnmarshalXML(d *Decoder, start StartElement) error { - for { - t, err := d.Token() - if err == io.EOF { // found end of element - break - } - if err != nil { - return err - } - if char, ok := t.(CharData); ok { - m.body += string(char) - } - } - return nil -} - -var _ Unmarshaler = (*MyCharData)(nil) - -func (m *MyCharData) UnmarshalXMLAttr(attr Attr) error { - panic("must not call") -} - -type MyAttr struct { - attr string -} - -func (m *MyAttr) UnmarshalXMLAttr(attr Attr) error { - m.attr = attr.Value - return nil -} - -var _ UnmarshalerAttr = (*MyAttr)(nil) - -type MyStruct struct { - Data *MyCharData - Attr *MyAttr `xml:",attr"` - - Data2 MyCharData - Attr2 MyAttr `xml:",attr"` -} - -func TestUnmarshaler(t *testing.T) { - xml := `<?xml version="1.0" encoding="utf-8"?> - <MyStruct Attr="attr1" Attr2="attr2"> - <Data>hello <!-- comment -->world</Data> - <Data2>howdy <!-- comment -->world</Data2> - </MyStruct> - ` - - var m MyStruct - if err := Unmarshal([]byte(xml), &m); err != nil { - t.Fatal(err) - } - - if m.Data == nil || m.Attr == nil || m.Data.body != "hello world" || m.Attr.attr != "attr1" || m.Data2.body != "howdy world" || m.Attr2.attr != "attr2" { - t.Errorf("m=%#+v\n", m) - } -} - -type Pea struct { - Cotelydon string -} - -type Pod struct { - Pea interface{} `xml:"Pea"` -} - -// https://golang.org/issue/6836 -func TestUnmarshalIntoInterface(t *testing.T) { - pod := new(Pod) - pod.Pea = new(Pea) - xml := `<Pod><Pea><Cotelydon>Green stuff</Cotelydon></Pea></Pod>` - err := Unmarshal([]byte(xml), pod) - if err != nil { - t.Fatalf("failed to unmarshal %q: %v", xml, err) - } - pea, ok := pod.Pea.(*Pea) - if !ok { - t.Fatalf("unmarshalled into wrong type: have %T want *Pea", pod.Pea) - } - have, want := pea.Cotelydon, "Green stuff" - if have != want { - t.Errorf("failed to unmarshal into interface, have %q want %q", have, want) - } -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/typeinfo.go b/vendor/golang.org/x/net/webdav/internal/xml/typeinfo.go deleted file mode 100644 index fdde288b..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/typeinfo.go +++ /dev/null @@ -1,371 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "fmt" - "reflect" - "strings" - "sync" -) - -// typeInfo holds details for the xml representation of a type. -type typeInfo struct { - xmlname *fieldInfo - fields []fieldInfo -} - -// fieldInfo holds details for the xml representation of a single field. -type fieldInfo struct { - idx []int - name string - xmlns string - flags fieldFlags - parents []string -} - -type fieldFlags int - -const ( - fElement fieldFlags = 1 << iota - fAttr - fCharData - fInnerXml - fComment - fAny - - fOmitEmpty - - fMode = fElement | fAttr | fCharData | fInnerXml | fComment | fAny -) - -var tinfoMap = make(map[reflect.Type]*typeInfo) -var tinfoLock sync.RWMutex - -var nameType = reflect.TypeOf(Name{}) - -// getTypeInfo returns the typeInfo structure with details necessary -// for marshalling and unmarshalling typ. -func getTypeInfo(typ reflect.Type) (*typeInfo, error) { - tinfoLock.RLock() - tinfo, ok := tinfoMap[typ] - tinfoLock.RUnlock() - if ok { - return tinfo, nil - } - tinfo = &typeInfo{} - if typ.Kind() == reflect.Struct && typ != nameType { - n := typ.NumField() - for i := 0; i < n; i++ { - f := typ.Field(i) - if f.PkgPath != "" || f.Tag.Get("xml") == "-" { - continue // Private field - } - - // For embedded structs, embed its fields. - if f.Anonymous { - t := f.Type - if t.Kind() == reflect.Ptr { - t = t.Elem() - } - if t.Kind() == reflect.Struct { - inner, err := getTypeInfo(t) - if err != nil { - return nil, err - } - if tinfo.xmlname == nil { - tinfo.xmlname = inner.xmlname - } - for _, finfo := range inner.fields { - finfo.idx = append([]int{i}, finfo.idx...) - if err := addFieldInfo(typ, tinfo, &finfo); err != nil { - return nil, err - } - } - continue - } - } - - finfo, err := structFieldInfo(typ, &f) - if err != nil { - return nil, err - } - - if f.Name == "XMLName" { - tinfo.xmlname = finfo - continue - } - - // Add the field if it doesn't conflict with other fields. - if err := addFieldInfo(typ, tinfo, finfo); err != nil { - return nil, err - } - } - } - tinfoLock.Lock() - tinfoMap[typ] = tinfo - tinfoLock.Unlock() - return tinfo, nil -} - -// structFieldInfo builds and returns a fieldInfo for f. -func structFieldInfo(typ reflect.Type, f *reflect.StructField) (*fieldInfo, error) { - finfo := &fieldInfo{idx: f.Index} - - // Split the tag from the xml namespace if necessary. - tag := f.Tag.Get("xml") - if i := strings.Index(tag, " "); i >= 0 { - finfo.xmlns, tag = tag[:i], tag[i+1:] - } - - // Parse flags. - tokens := strings.Split(tag, ",") - if len(tokens) == 1 { - finfo.flags = fElement - } else { - tag = tokens[0] - for _, flag := range tokens[1:] { - switch flag { - case "attr": - finfo.flags |= fAttr - case "chardata": - finfo.flags |= fCharData - case "innerxml": - finfo.flags |= fInnerXml - case "comment": - finfo.flags |= fComment - case "any": - finfo.flags |= fAny - case "omitempty": - finfo.flags |= fOmitEmpty - } - } - - // Validate the flags used. - valid := true - switch mode := finfo.flags & fMode; mode { - case 0: - finfo.flags |= fElement - case fAttr, fCharData, fInnerXml, fComment, fAny: - if f.Name == "XMLName" || tag != "" && mode != fAttr { - valid = false - } - default: - // This will also catch multiple modes in a single field. - valid = false - } - if finfo.flags&fMode == fAny { - finfo.flags |= fElement - } - if finfo.flags&fOmitEmpty != 0 && finfo.flags&(fElement|fAttr) == 0 { - valid = false - } - if !valid { - return nil, fmt.Errorf("xml: invalid tag in field %s of type %s: %q", - f.Name, typ, f.Tag.Get("xml")) - } - } - - // Use of xmlns without a name is not allowed. - if finfo.xmlns != "" && tag == "" { - return nil, fmt.Errorf("xml: namespace without name in field %s of type %s: %q", - f.Name, typ, f.Tag.Get("xml")) - } - - if f.Name == "XMLName" { - // The XMLName field records the XML element name. Don't - // process it as usual because its name should default to - // empty rather than to the field name. - finfo.name = tag - return finfo, nil - } - - if tag == "" { - // If the name part of the tag is completely empty, get - // default from XMLName of underlying struct if feasible, - // or field name otherwise. - if xmlname := lookupXMLName(f.Type); xmlname != nil { - finfo.xmlns, finfo.name = xmlname.xmlns, xmlname.name - } else { - finfo.name = f.Name - } - return finfo, nil - } - - if finfo.xmlns == "" && finfo.flags&fAttr == 0 { - // If it's an element no namespace specified, get the default - // from the XMLName of enclosing struct if possible. - if xmlname := lookupXMLName(typ); xmlname != nil { - finfo.xmlns = xmlname.xmlns - } - } - - // Prepare field name and parents. - parents := strings.Split(tag, ">") - if parents[0] == "" { - parents[0] = f.Name - } - if parents[len(parents)-1] == "" { - return nil, fmt.Errorf("xml: trailing '>' in field %s of type %s", f.Name, typ) - } - finfo.name = parents[len(parents)-1] - if len(parents) > 1 { - if (finfo.flags & fElement) == 0 { - return nil, fmt.Errorf("xml: %s chain not valid with %s flag", tag, strings.Join(tokens[1:], ",")) - } - finfo.parents = parents[:len(parents)-1] - } - - // If the field type has an XMLName field, the names must match - // so that the behavior of both marshalling and unmarshalling - // is straightforward and unambiguous. - if finfo.flags&fElement != 0 { - ftyp := f.Type - xmlname := lookupXMLName(ftyp) - if xmlname != nil && xmlname.name != finfo.name { - return nil, fmt.Errorf("xml: name %q in tag of %s.%s conflicts with name %q in %s.XMLName", - finfo.name, typ, f.Name, xmlname.name, ftyp) - } - } - return finfo, nil -} - -// lookupXMLName returns the fieldInfo for typ's XMLName field -// in case it exists and has a valid xml field tag, otherwise -// it returns nil. -func lookupXMLName(typ reflect.Type) (xmlname *fieldInfo) { - for typ.Kind() == reflect.Ptr { - typ = typ.Elem() - } - if typ.Kind() != reflect.Struct { - return nil - } - for i, n := 0, typ.NumField(); i < n; i++ { - f := typ.Field(i) - if f.Name != "XMLName" { - continue - } - finfo, err := structFieldInfo(typ, &f) - if finfo.name != "" && err == nil { - return finfo - } - // Also consider errors as a non-existent field tag - // and let getTypeInfo itself report the error. - break - } - return nil -} - -func min(a, b int) int { - if a <= b { - return a - } - return b -} - -// addFieldInfo adds finfo to tinfo.fields if there are no -// conflicts, or if conflicts arise from previous fields that were -// obtained from deeper embedded structures than finfo. In the latter -// case, the conflicting entries are dropped. -// A conflict occurs when the path (parent + name) to a field is -// itself a prefix of another path, or when two paths match exactly. -// It is okay for field paths to share a common, shorter prefix. -func addFieldInfo(typ reflect.Type, tinfo *typeInfo, newf *fieldInfo) error { - var conflicts []int -Loop: - // First, figure all conflicts. Most working code will have none. - for i := range tinfo.fields { - oldf := &tinfo.fields[i] - if oldf.flags&fMode != newf.flags&fMode { - continue - } - if oldf.xmlns != "" && newf.xmlns != "" && oldf.xmlns != newf.xmlns { - continue - } - minl := min(len(newf.parents), len(oldf.parents)) - for p := 0; p < minl; p++ { - if oldf.parents[p] != newf.parents[p] { - continue Loop - } - } - if len(oldf.parents) > len(newf.parents) { - if oldf.parents[len(newf.parents)] == newf.name { - conflicts = append(conflicts, i) - } - } else if len(oldf.parents) < len(newf.parents) { - if newf.parents[len(oldf.parents)] == oldf.name { - conflicts = append(conflicts, i) - } - } else { - if newf.name == oldf.name { - conflicts = append(conflicts, i) - } - } - } - // Without conflicts, add the new field and return. - if conflicts == nil { - tinfo.fields = append(tinfo.fields, *newf) - return nil - } - - // If any conflict is shallower, ignore the new field. - // This matches the Go field resolution on embedding. - for _, i := range conflicts { - if len(tinfo.fields[i].idx) < len(newf.idx) { - return nil - } - } - - // Otherwise, if any of them is at the same depth level, it's an error. - for _, i := range conflicts { - oldf := &tinfo.fields[i] - if len(oldf.idx) == len(newf.idx) { - f1 := typ.FieldByIndex(oldf.idx) - f2 := typ.FieldByIndex(newf.idx) - return &TagPathError{typ, f1.Name, f1.Tag.Get("xml"), f2.Name, f2.Tag.Get("xml")} - } - } - - // Otherwise, the new field is shallower, and thus takes precedence, - // so drop the conflicting fields from tinfo and append the new one. - for c := len(conflicts) - 1; c >= 0; c-- { - i := conflicts[c] - copy(tinfo.fields[i:], tinfo.fields[i+1:]) - tinfo.fields = tinfo.fields[:len(tinfo.fields)-1] - } - tinfo.fields = append(tinfo.fields, *newf) - return nil -} - -// A TagPathError represents an error in the unmarshalling process -// caused by the use of field tags with conflicting paths. -type TagPathError struct { - Struct reflect.Type - Field1, Tag1 string - Field2, Tag2 string -} - -func (e *TagPathError) Error() string { - return fmt.Sprintf("%s field %q with tag %q conflicts with field %q with tag %q", e.Struct, e.Field1, e.Tag1, e.Field2, e.Tag2) -} - -// value returns v's field value corresponding to finfo. -// It's equivalent to v.FieldByIndex(finfo.idx), but initializes -// and dereferences pointers as necessary. -func (finfo *fieldInfo) value(v reflect.Value) reflect.Value { - for i, x := range finfo.idx { - if i > 0 { - t := v.Type() - if t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Struct { - if v.IsNil() { - v.Set(reflect.New(v.Type().Elem())) - } - v = v.Elem() - } - } - v = v.Field(x) - } - return v -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/xml.go b/vendor/golang.org/x/net/webdav/internal/xml/xml.go deleted file mode 100644 index 5b79cbec..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/xml.go +++ /dev/null @@ -1,1998 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package xml implements a simple XML 1.0 parser that -// understands XML name spaces. -package xml - -// References: -// Annotated XML spec: http://www.xml.com/axml/testaxml.htm -// XML name spaces: http://www.w3.org/TR/REC-xml-names/ - -// TODO(rsc): -// Test error handling. - -import ( - "bufio" - "bytes" - "errors" - "fmt" - "io" - "strconv" - "strings" - "unicode" - "unicode/utf8" -) - -// A SyntaxError represents a syntax error in the XML input stream. -type SyntaxError struct { - Msg string - Line int -} - -func (e *SyntaxError) Error() string { - return "XML syntax error on line " + strconv.Itoa(e.Line) + ": " + e.Msg -} - -// A Name represents an XML name (Local) annotated with a name space -// identifier (Space). In tokens returned by Decoder.Token, the Space -// identifier is given as a canonical URL, not the short prefix used in -// the document being parsed. -// -// As a special case, XML namespace declarations will use the literal -// string "xmlns" for the Space field instead of the fully resolved URL. -// See Encoder.EncodeToken for more information on namespace encoding -// behaviour. -type Name struct { - Space, Local string -} - -// isNamespace reports whether the name is a namespace-defining name. -func (name Name) isNamespace() bool { - return name.Local == "xmlns" || name.Space == "xmlns" -} - -// An Attr represents an attribute in an XML element (Name=Value). -type Attr struct { - Name Name - Value string -} - -// A Token is an interface holding one of the token types: -// StartElement, EndElement, CharData, Comment, ProcInst, or Directive. -type Token interface{} - -// A StartElement represents an XML start element. -type StartElement struct { - Name Name - Attr []Attr -} - -func (e StartElement) Copy() StartElement { - attrs := make([]Attr, len(e.Attr)) - copy(attrs, e.Attr) - e.Attr = attrs - return e -} - -// End returns the corresponding XML end element. -func (e StartElement) End() EndElement { - return EndElement{e.Name} -} - -// setDefaultNamespace sets the namespace of the element -// as the default for all elements contained within it. -func (e *StartElement) setDefaultNamespace() { - if e.Name.Space == "" { - // If there's no namespace on the element, don't - // set the default. Strictly speaking this might be wrong, as - // we can't tell if the element had no namespace set - // or was just using the default namespace. - return - } - // Don't add a default name space if there's already one set. - for _, attr := range e.Attr { - if attr.Name.Space == "" && attr.Name.Local == "xmlns" { - return - } - } - e.Attr = append(e.Attr, Attr{ - Name: Name{ - Local: "xmlns", - }, - Value: e.Name.Space, - }) -} - -// An EndElement represents an XML end element. -type EndElement struct { - Name Name -} - -// A CharData represents XML character data (raw text), -// in which XML escape sequences have been replaced by -// the characters they represent. -type CharData []byte - -func makeCopy(b []byte) []byte { - b1 := make([]byte, len(b)) - copy(b1, b) - return b1 -} - -func (c CharData) Copy() CharData { return CharData(makeCopy(c)) } - -// A Comment represents an XML comment of the form <!--comment-->. -// The bytes do not include the <!-- and --> comment markers. -type Comment []byte - -func (c Comment) Copy() Comment { return Comment(makeCopy(c)) } - -// A ProcInst represents an XML processing instruction of the form <?target inst?> -type ProcInst struct { - Target string - Inst []byte -} - -func (p ProcInst) Copy() ProcInst { - p.Inst = makeCopy(p.Inst) - return p -} - -// A Directive represents an XML directive of the form <!text>. -// The bytes do not include the <! and > markers. -type Directive []byte - -func (d Directive) Copy() Directive { return Directive(makeCopy(d)) } - -// CopyToken returns a copy of a Token. -func CopyToken(t Token) Token { - switch v := t.(type) { - case CharData: - return v.Copy() - case Comment: - return v.Copy() - case Directive: - return v.Copy() - case ProcInst: - return v.Copy() - case StartElement: - return v.Copy() - } - return t -} - -// A Decoder represents an XML parser reading a particular input stream. -// The parser assumes that its input is encoded in UTF-8. -type Decoder struct { - // Strict defaults to true, enforcing the requirements - // of the XML specification. - // If set to false, the parser allows input containing common - // mistakes: - // * If an element is missing an end tag, the parser invents - // end tags as necessary to keep the return values from Token - // properly balanced. - // * In attribute values and character data, unknown or malformed - // character entities (sequences beginning with &) are left alone. - // - // Setting: - // - // d.Strict = false; - // d.AutoClose = HTMLAutoClose; - // d.Entity = HTMLEntity - // - // creates a parser that can handle typical HTML. - // - // Strict mode does not enforce the requirements of the XML name spaces TR. - // In particular it does not reject name space tags using undefined prefixes. - // Such tags are recorded with the unknown prefix as the name space URL. - Strict bool - - // When Strict == false, AutoClose indicates a set of elements to - // consider closed immediately after they are opened, regardless - // of whether an end element is present. - AutoClose []string - - // Entity can be used to map non-standard entity names to string replacements. - // The parser behaves as if these standard mappings are present in the map, - // regardless of the actual map content: - // - // "lt": "<", - // "gt": ">", - // "amp": "&", - // "apos": "'", - // "quot": `"`, - Entity map[string]string - - // CharsetReader, if non-nil, defines a function to generate - // charset-conversion readers, converting from the provided - // non-UTF-8 charset into UTF-8. If CharsetReader is nil or - // returns an error, parsing stops with an error. One of the - // the CharsetReader's result values must be non-nil. - CharsetReader func(charset string, input io.Reader) (io.Reader, error) - - // DefaultSpace sets the default name space used for unadorned tags, - // as if the entire XML stream were wrapped in an element containing - // the attribute xmlns="DefaultSpace". - DefaultSpace string - - r io.ByteReader - buf bytes.Buffer - saved *bytes.Buffer - stk *stack - free *stack - needClose bool - toClose Name - nextToken Token - nextByte int - ns map[string]string - err error - line int - offset int64 - unmarshalDepth int -} - -// NewDecoder creates a new XML parser reading from r. -// If r does not implement io.ByteReader, NewDecoder will -// do its own buffering. -func NewDecoder(r io.Reader) *Decoder { - d := &Decoder{ - ns: make(map[string]string), - nextByte: -1, - line: 1, - Strict: true, - } - d.switchToReader(r) - return d -} - -// Token returns the next XML token in the input stream. -// At the end of the input stream, Token returns nil, io.EOF. -// -// Slices of bytes in the returned token data refer to the -// parser's internal buffer and remain valid only until the next -// call to Token. To acquire a copy of the bytes, call CopyToken -// or the token's Copy method. -// -// Token expands self-closing elements such as <br/> -// into separate start and end elements returned by successive calls. -// -// Token guarantees that the StartElement and EndElement -// tokens it returns are properly nested and matched: -// if Token encounters an unexpected end element, -// it will return an error. -// -// Token implements XML name spaces as described by -// http://www.w3.org/TR/REC-xml-names/. Each of the -// Name structures contained in the Token has the Space -// set to the URL identifying its name space when known. -// If Token encounters an unrecognized name space prefix, -// it uses the prefix as the Space rather than report an error. -func (d *Decoder) Token() (t Token, err error) { - if d.stk != nil && d.stk.kind == stkEOF { - err = io.EOF - return - } - if d.nextToken != nil { - t = d.nextToken - d.nextToken = nil - } else if t, err = d.rawToken(); err != nil { - return - } - - if !d.Strict { - if t1, ok := d.autoClose(t); ok { - d.nextToken = t - t = t1 - } - } - switch t1 := t.(type) { - case StartElement: - // In XML name spaces, the translations listed in the - // attributes apply to the element name and - // to the other attribute names, so process - // the translations first. - for _, a := range t1.Attr { - if a.Name.Space == "xmlns" { - v, ok := d.ns[a.Name.Local] - d.pushNs(a.Name.Local, v, ok) - d.ns[a.Name.Local] = a.Value - } - if a.Name.Space == "" && a.Name.Local == "xmlns" { - // Default space for untagged names - v, ok := d.ns[""] - d.pushNs("", v, ok) - d.ns[""] = a.Value - } - } - - d.translate(&t1.Name, true) - for i := range t1.Attr { - d.translate(&t1.Attr[i].Name, false) - } - d.pushElement(t1.Name) - t = t1 - - case EndElement: - d.translate(&t1.Name, true) - if !d.popElement(&t1) { - return nil, d.err - } - t = t1 - } - return -} - -const xmlURL = "http://www.w3.org/XML/1998/namespace" - -// Apply name space translation to name n. -// The default name space (for Space=="") -// applies only to element names, not to attribute names. -func (d *Decoder) translate(n *Name, isElementName bool) { - switch { - case n.Space == "xmlns": - return - case n.Space == "" && !isElementName: - return - case n.Space == "xml": - n.Space = xmlURL - case n.Space == "" && n.Local == "xmlns": - return - } - if v, ok := d.ns[n.Space]; ok { - n.Space = v - } else if n.Space == "" { - n.Space = d.DefaultSpace - } -} - -func (d *Decoder) switchToReader(r io.Reader) { - // Get efficient byte at a time reader. - // Assume that if reader has its own - // ReadByte, it's efficient enough. - // Otherwise, use bufio. - if rb, ok := r.(io.ByteReader); ok { - d.r = rb - } else { - d.r = bufio.NewReader(r) - } -} - -// Parsing state - stack holds old name space translations -// and the current set of open elements. The translations to pop when -// ending a given tag are *below* it on the stack, which is -// more work but forced on us by XML. -type stack struct { - next *stack - kind int - name Name - ok bool -} - -const ( - stkStart = iota - stkNs - stkEOF -) - -func (d *Decoder) push(kind int) *stack { - s := d.free - if s != nil { - d.free = s.next - } else { - s = new(stack) - } - s.next = d.stk - s.kind = kind - d.stk = s - return s -} - -func (d *Decoder) pop() *stack { - s := d.stk - if s != nil { - d.stk = s.next - s.next = d.free - d.free = s - } - return s -} - -// Record that after the current element is finished -// (that element is already pushed on the stack) -// Token should return EOF until popEOF is called. -func (d *Decoder) pushEOF() { - // Walk down stack to find Start. - // It might not be the top, because there might be stkNs - // entries above it. - start := d.stk - for start.kind != stkStart { - start = start.next - } - // The stkNs entries below a start are associated with that - // element too; skip over them. - for start.next != nil && start.next.kind == stkNs { - start = start.next - } - s := d.free - if s != nil { - d.free = s.next - } else { - s = new(stack) - } - s.kind = stkEOF - s.next = start.next - start.next = s -} - -// Undo a pushEOF. -// The element must have been finished, so the EOF should be at the top of the stack. -func (d *Decoder) popEOF() bool { - if d.stk == nil || d.stk.kind != stkEOF { - return false - } - d.pop() - return true -} - -// Record that we are starting an element with the given name. -func (d *Decoder) pushElement(name Name) { - s := d.push(stkStart) - s.name = name -} - -// Record that we are changing the value of ns[local]. -// The old value is url, ok. -func (d *Decoder) pushNs(local string, url string, ok bool) { - s := d.push(stkNs) - s.name.Local = local - s.name.Space = url - s.ok = ok -} - -// Creates a SyntaxError with the current line number. -func (d *Decoder) syntaxError(msg string) error { - return &SyntaxError{Msg: msg, Line: d.line} -} - -// Record that we are ending an element with the given name. -// The name must match the record at the top of the stack, -// which must be a pushElement record. -// After popping the element, apply any undo records from -// the stack to restore the name translations that existed -// before we saw this element. -func (d *Decoder) popElement(t *EndElement) bool { - s := d.pop() - name := t.Name - switch { - case s == nil || s.kind != stkStart: - d.err = d.syntaxError("unexpected end element </" + name.Local + ">") - return false - case s.name.Local != name.Local: - if !d.Strict { - d.needClose = true - d.toClose = t.Name - t.Name = s.name - return true - } - d.err = d.syntaxError("element <" + s.name.Local + "> closed by </" + name.Local + ">") - return false - case s.name.Space != name.Space: - d.err = d.syntaxError("element <" + s.name.Local + "> in space " + s.name.Space + - "closed by </" + name.Local + "> in space " + name.Space) - return false - } - - // Pop stack until a Start or EOF is on the top, undoing the - // translations that were associated with the element we just closed. - for d.stk != nil && d.stk.kind != stkStart && d.stk.kind != stkEOF { - s := d.pop() - if s.ok { - d.ns[s.name.Local] = s.name.Space - } else { - delete(d.ns, s.name.Local) - } - } - - return true -} - -// If the top element on the stack is autoclosing and -// t is not the end tag, invent the end tag. -func (d *Decoder) autoClose(t Token) (Token, bool) { - if d.stk == nil || d.stk.kind != stkStart { - return nil, false - } - name := strings.ToLower(d.stk.name.Local) - for _, s := range d.AutoClose { - if strings.ToLower(s) == name { - // This one should be auto closed if t doesn't close it. - et, ok := t.(EndElement) - if !ok || et.Name.Local != name { - return EndElement{d.stk.name}, true - } - break - } - } - return nil, false -} - -var errRawToken = errors.New("xml: cannot use RawToken from UnmarshalXML method") - -// RawToken is like Token but does not verify that -// start and end elements match and does not translate -// name space prefixes to their corresponding URLs. -func (d *Decoder) RawToken() (Token, error) { - if d.unmarshalDepth > 0 { - return nil, errRawToken - } - return d.rawToken() -} - -func (d *Decoder) rawToken() (Token, error) { - if d.err != nil { - return nil, d.err - } - if d.needClose { - // The last element we read was self-closing and - // we returned just the StartElement half. - // Return the EndElement half now. - d.needClose = false - return EndElement{d.toClose}, nil - } - - b, ok := d.getc() - if !ok { - return nil, d.err - } - - if b != '<' { - // Text section. - d.ungetc(b) - data := d.text(-1, false) - if data == nil { - return nil, d.err - } - return CharData(data), nil - } - - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - switch b { - case '/': - // </: End element - var name Name - if name, ok = d.nsname(); !ok { - if d.err == nil { - d.err = d.syntaxError("expected element name after </") - } - return nil, d.err - } - d.space() - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if b != '>' { - d.err = d.syntaxError("invalid characters between </" + name.Local + " and >") - return nil, d.err - } - return EndElement{name}, nil - - case '?': - // <?: Processing instruction. - var target string - if target, ok = d.name(); !ok { - if d.err == nil { - d.err = d.syntaxError("expected target name after <?") - } - return nil, d.err - } - d.space() - d.buf.Reset() - var b0 byte - for { - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - d.buf.WriteByte(b) - if b0 == '?' && b == '>' { - break - } - b0 = b - } - data := d.buf.Bytes() - data = data[0 : len(data)-2] // chop ?> - - if target == "xml" { - content := string(data) - ver := procInst("version", content) - if ver != "" && ver != "1.0" { - d.err = fmt.Errorf("xml: unsupported version %q; only version 1.0 is supported", ver) - return nil, d.err - } - enc := procInst("encoding", content) - if enc != "" && enc != "utf-8" && enc != "UTF-8" { - if d.CharsetReader == nil { - d.err = fmt.Errorf("xml: encoding %q declared but Decoder.CharsetReader is nil", enc) - return nil, d.err - } - newr, err := d.CharsetReader(enc, d.r.(io.Reader)) - if err != nil { - d.err = fmt.Errorf("xml: opening charset %q: %v", enc, err) - return nil, d.err - } - if newr == nil { - panic("CharsetReader returned a nil Reader for charset " + enc) - } - d.switchToReader(newr) - } - } - return ProcInst{target, data}, nil - - case '!': - // <!: Maybe comment, maybe CDATA. - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - switch b { - case '-': // <!- - // Probably <!-- for a comment. - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if b != '-' { - d.err = d.syntaxError("invalid sequence <!- not part of <!--") - return nil, d.err - } - // Look for terminator. - d.buf.Reset() - var b0, b1 byte - for { - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - d.buf.WriteByte(b) - if b0 == '-' && b1 == '-' && b == '>' { - break - } - b0, b1 = b1, b - } - data := d.buf.Bytes() - data = data[0 : len(data)-3] // chop --> - return Comment(data), nil - - case '[': // <![ - // Probably <![CDATA[. - for i := 0; i < 6; i++ { - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if b != "CDATA["[i] { - d.err = d.syntaxError("invalid <![ sequence") - return nil, d.err - } - } - // Have <![CDATA[. Read text until ]]>. - data := d.text(-1, true) - if data == nil { - return nil, d.err - } - return CharData(data), nil - } - - // Probably a directive: <!DOCTYPE ...>, <!ENTITY ...>, etc. - // We don't care, but accumulate for caller. Quoted angle - // brackets do not count for nesting. - d.buf.Reset() - d.buf.WriteByte(b) - inquote := uint8(0) - depth := 0 - for { - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if inquote == 0 && b == '>' && depth == 0 { - break - } - HandleB: - d.buf.WriteByte(b) - switch { - case b == inquote: - inquote = 0 - - case inquote != 0: - // in quotes, no special action - - case b == '\'' || b == '"': - inquote = b - - case b == '>' && inquote == 0: - depth-- - - case b == '<' && inquote == 0: - // Look for <!-- to begin comment. - s := "!--" - for i := 0; i < len(s); i++ { - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if b != s[i] { - for j := 0; j < i; j++ { - d.buf.WriteByte(s[j]) - } - depth++ - goto HandleB - } - } - - // Remove < that was written above. - d.buf.Truncate(d.buf.Len() - 1) - - // Look for terminator. - var b0, b1 byte - for { - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if b0 == '-' && b1 == '-' && b == '>' { - break - } - b0, b1 = b1, b - } - } - } - return Directive(d.buf.Bytes()), nil - } - - // Must be an open element like <a href="foo"> - d.ungetc(b) - - var ( - name Name - empty bool - attr []Attr - ) - if name, ok = d.nsname(); !ok { - if d.err == nil { - d.err = d.syntaxError("expected element name after <") - } - return nil, d.err - } - - attr = []Attr{} - for { - d.space() - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if b == '/' { - empty = true - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if b != '>' { - d.err = d.syntaxError("expected /> in element") - return nil, d.err - } - break - } - if b == '>' { - break - } - d.ungetc(b) - - n := len(attr) - if n >= cap(attr) { - nCap := 2 * cap(attr) - if nCap == 0 { - nCap = 4 - } - nattr := make([]Attr, n, nCap) - copy(nattr, attr) - attr = nattr - } - attr = attr[0 : n+1] - a := &attr[n] - if a.Name, ok = d.nsname(); !ok { - if d.err == nil { - d.err = d.syntaxError("expected attribute name in element") - } - return nil, d.err - } - d.space() - if b, ok = d.mustgetc(); !ok { - return nil, d.err - } - if b != '=' { - if d.Strict { - d.err = d.syntaxError("attribute name without = in element") - return nil, d.err - } else { - d.ungetc(b) - a.Value = a.Name.Local - } - } else { - d.space() - data := d.attrval() - if data == nil { - return nil, d.err - } - a.Value = string(data) - } - } - if empty { - d.needClose = true - d.toClose = name - } - return StartElement{name, attr}, nil -} - -func (d *Decoder) attrval() []byte { - b, ok := d.mustgetc() - if !ok { - return nil - } - // Handle quoted attribute values - if b == '"' || b == '\'' { - return d.text(int(b), false) - } - // Handle unquoted attribute values for strict parsers - if d.Strict { - d.err = d.syntaxError("unquoted or missing attribute value in element") - return nil - } - // Handle unquoted attribute values for unstrict parsers - d.ungetc(b) - d.buf.Reset() - for { - b, ok = d.mustgetc() - if !ok { - return nil - } - // http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.2 - if 'a' <= b && b <= 'z' || 'A' <= b && b <= 'Z' || - '0' <= b && b <= '9' || b == '_' || b == ':' || b == '-' { - d.buf.WriteByte(b) - } else { - d.ungetc(b) - break - } - } - return d.buf.Bytes() -} - -// Skip spaces if any -func (d *Decoder) space() { - for { - b, ok := d.getc() - if !ok { - return - } - switch b { - case ' ', '\r', '\n', '\t': - default: - d.ungetc(b) - return - } - } -} - -// Read a single byte. -// If there is no byte to read, return ok==false -// and leave the error in d.err. -// Maintain line number. -func (d *Decoder) getc() (b byte, ok bool) { - if d.err != nil { - return 0, false - } - if d.nextByte >= 0 { - b = byte(d.nextByte) - d.nextByte = -1 - } else { - b, d.err = d.r.ReadByte() - if d.err != nil { - return 0, false - } - if d.saved != nil { - d.saved.WriteByte(b) - } - } - if b == '\n' { - d.line++ - } - d.offset++ - return b, true -} - -// InputOffset returns the input stream byte offset of the current decoder position. -// The offset gives the location of the end of the most recently returned token -// and the beginning of the next token. -func (d *Decoder) InputOffset() int64 { - return d.offset -} - -// Return saved offset. -// If we did ungetc (nextByte >= 0), have to back up one. -func (d *Decoder) savedOffset() int { - n := d.saved.Len() - if d.nextByte >= 0 { - n-- - } - return n -} - -// Must read a single byte. -// If there is no byte to read, -// set d.err to SyntaxError("unexpected EOF") -// and return ok==false -func (d *Decoder) mustgetc() (b byte, ok bool) { - if b, ok = d.getc(); !ok { - if d.err == io.EOF { - d.err = d.syntaxError("unexpected EOF") - } - } - return -} - -// Unread a single byte. -func (d *Decoder) ungetc(b byte) { - if b == '\n' { - d.line-- - } - d.nextByte = int(b) - d.offset-- -} - -var entity = map[string]int{ - "lt": '<', - "gt": '>', - "amp": '&', - "apos": '\'', - "quot": '"', -} - -// Read plain text section (XML calls it character data). -// If quote >= 0, we are in a quoted string and need to find the matching quote. -// If cdata == true, we are in a <![CDATA[ section and need to find ]]>. -// On failure return nil and leave the error in d.err. -func (d *Decoder) text(quote int, cdata bool) []byte { - var b0, b1 byte - var trunc int - d.buf.Reset() -Input: - for { - b, ok := d.getc() - if !ok { - if cdata { - if d.err == io.EOF { - d.err = d.syntaxError("unexpected EOF in CDATA section") - } - return nil - } - break Input - } - - // <![CDATA[ section ends with ]]>. - // It is an error for ]]> to appear in ordinary text. - if b0 == ']' && b1 == ']' && b == '>' { - if cdata { - trunc = 2 - break Input - } - d.err = d.syntaxError("unescaped ]]> not in CDATA section") - return nil - } - - // Stop reading text if we see a <. - if b == '<' && !cdata { - if quote >= 0 { - d.err = d.syntaxError("unescaped < inside quoted string") - return nil - } - d.ungetc('<') - break Input - } - if quote >= 0 && b == byte(quote) { - break Input - } - if b == '&' && !cdata { - // Read escaped character expression up to semicolon. - // XML in all its glory allows a document to define and use - // its own character names with <!ENTITY ...> directives. - // Parsers are required to recognize lt, gt, amp, apos, and quot - // even if they have not been declared. - before := d.buf.Len() - d.buf.WriteByte('&') - var ok bool - var text string - var haveText bool - if b, ok = d.mustgetc(); !ok { - return nil - } - if b == '#' { - d.buf.WriteByte(b) - if b, ok = d.mustgetc(); !ok { - return nil - } - base := 10 - if b == 'x' { - base = 16 - d.buf.WriteByte(b) - if b, ok = d.mustgetc(); !ok { - return nil - } - } - start := d.buf.Len() - for '0' <= b && b <= '9' || - base == 16 && 'a' <= b && b <= 'f' || - base == 16 && 'A' <= b && b <= 'F' { - d.buf.WriteByte(b) - if b, ok = d.mustgetc(); !ok { - return nil - } - } - if b != ';' { - d.ungetc(b) - } else { - s := string(d.buf.Bytes()[start:]) - d.buf.WriteByte(';') - n, err := strconv.ParseUint(s, base, 64) - if err == nil && n <= unicode.MaxRune { - text = string(n) - haveText = true - } - } - } else { - d.ungetc(b) - if !d.readName() { - if d.err != nil { - return nil - } - ok = false - } - if b, ok = d.mustgetc(); !ok { - return nil - } - if b != ';' { - d.ungetc(b) - } else { - name := d.buf.Bytes()[before+1:] - d.buf.WriteByte(';') - if isName(name) { - s := string(name) - if r, ok := entity[s]; ok { - text = string(r) - haveText = true - } else if d.Entity != nil { - text, haveText = d.Entity[s] - } - } - } - } - - if haveText { - d.buf.Truncate(before) - d.buf.Write([]byte(text)) - b0, b1 = 0, 0 - continue Input - } - if !d.Strict { - b0, b1 = 0, 0 - continue Input - } - ent := string(d.buf.Bytes()[before:]) - if ent[len(ent)-1] != ';' { - ent += " (no semicolon)" - } - d.err = d.syntaxError("invalid character entity " + ent) - return nil - } - - // We must rewrite unescaped \r and \r\n into \n. - if b == '\r' { - d.buf.WriteByte('\n') - } else if b1 == '\r' && b == '\n' { - // Skip \r\n--we already wrote \n. - } else { - d.buf.WriteByte(b) - } - - b0, b1 = b1, b - } - data := d.buf.Bytes() - data = data[0 : len(data)-trunc] - - // Inspect each rune for being a disallowed character. - buf := data - for len(buf) > 0 { - r, size := utf8.DecodeRune(buf) - if r == utf8.RuneError && size == 1 { - d.err = d.syntaxError("invalid UTF-8") - return nil - } - buf = buf[size:] - if !isInCharacterRange(r) { - d.err = d.syntaxError(fmt.Sprintf("illegal character code %U", r)) - return nil - } - } - - return data -} - -// Decide whether the given rune is in the XML Character Range, per -// the Char production of http://www.xml.com/axml/testaxml.htm, -// Section 2.2 Characters. -func isInCharacterRange(r rune) (inrange bool) { - return r == 0x09 || - r == 0x0A || - r == 0x0D || - r >= 0x20 && r <= 0xDF77 || - r >= 0xE000 && r <= 0xFFFD || - r >= 0x10000 && r <= 0x10FFFF -} - -// Get name space name: name with a : stuck in the middle. -// The part before the : is the name space identifier. -func (d *Decoder) nsname() (name Name, ok bool) { - s, ok := d.name() - if !ok { - return - } - i := strings.Index(s, ":") - if i < 0 { - name.Local = s - } else { - name.Space = s[0:i] - name.Local = s[i+1:] - } - return name, true -} - -// Get name: /first(first|second)*/ -// Do not set d.err if the name is missing (unless unexpected EOF is received): -// let the caller provide better context. -func (d *Decoder) name() (s string, ok bool) { - d.buf.Reset() - if !d.readName() { - return "", false - } - - // Now we check the characters. - b := d.buf.Bytes() - if !isName(b) { - d.err = d.syntaxError("invalid XML name: " + string(b)) - return "", false - } - return string(b), true -} - -// Read a name and append its bytes to d.buf. -// The name is delimited by any single-byte character not valid in names. -// All multi-byte characters are accepted; the caller must check their validity. -func (d *Decoder) readName() (ok bool) { - var b byte - if b, ok = d.mustgetc(); !ok { - return - } - if b < utf8.RuneSelf && !isNameByte(b) { - d.ungetc(b) - return false - } - d.buf.WriteByte(b) - - for { - if b, ok = d.mustgetc(); !ok { - return - } - if b < utf8.RuneSelf && !isNameByte(b) { - d.ungetc(b) - break - } - d.buf.WriteByte(b) - } - return true -} - -func isNameByte(c byte) bool { - return 'A' <= c && c <= 'Z' || - 'a' <= c && c <= 'z' || - '0' <= c && c <= '9' || - c == '_' || c == ':' || c == '.' || c == '-' -} - -func isName(s []byte) bool { - if len(s) == 0 { - return false - } - c, n := utf8.DecodeRune(s) - if c == utf8.RuneError && n == 1 { - return false - } - if !unicode.Is(first, c) { - return false - } - for n < len(s) { - s = s[n:] - c, n = utf8.DecodeRune(s) - if c == utf8.RuneError && n == 1 { - return false - } - if !unicode.Is(first, c) && !unicode.Is(second, c) { - return false - } - } - return true -} - -func isNameString(s string) bool { - if len(s) == 0 { - return false - } - c, n := utf8.DecodeRuneInString(s) - if c == utf8.RuneError && n == 1 { - return false - } - if !unicode.Is(first, c) { - return false - } - for n < len(s) { - s = s[n:] - c, n = utf8.DecodeRuneInString(s) - if c == utf8.RuneError && n == 1 { - return false - } - if !unicode.Is(first, c) && !unicode.Is(second, c) { - return false - } - } - return true -} - -// These tables were generated by cut and paste from Appendix B of -// the XML spec at http://www.xml.com/axml/testaxml.htm -// and then reformatting. First corresponds to (Letter | '_' | ':') -// and second corresponds to NameChar. - -var first = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x003A, 0x003A, 1}, - {0x0041, 0x005A, 1}, - {0x005F, 0x005F, 1}, - {0x0061, 0x007A, 1}, - {0x00C0, 0x00D6, 1}, - {0x00D8, 0x00F6, 1}, - {0x00F8, 0x00FF, 1}, - {0x0100, 0x0131, 1}, - {0x0134, 0x013E, 1}, - {0x0141, 0x0148, 1}, - {0x014A, 0x017E, 1}, - {0x0180, 0x01C3, 1}, - {0x01CD, 0x01F0, 1}, - {0x01F4, 0x01F5, 1}, - {0x01FA, 0x0217, 1}, - {0x0250, 0x02A8, 1}, - {0x02BB, 0x02C1, 1}, - {0x0386, 0x0386, 1}, - {0x0388, 0x038A, 1}, - {0x038C, 0x038C, 1}, - {0x038E, 0x03A1, 1}, - {0x03A3, 0x03CE, 1}, - {0x03D0, 0x03D6, 1}, - {0x03DA, 0x03E0, 2}, - {0x03E2, 0x03F3, 1}, - {0x0401, 0x040C, 1}, - {0x040E, 0x044F, 1}, - {0x0451, 0x045C, 1}, - {0x045E, 0x0481, 1}, - {0x0490, 0x04C4, 1}, - {0x04C7, 0x04C8, 1}, - {0x04CB, 0x04CC, 1}, - {0x04D0, 0x04EB, 1}, - {0x04EE, 0x04F5, 1}, - {0x04F8, 0x04F9, 1}, - {0x0531, 0x0556, 1}, - {0x0559, 0x0559, 1}, - {0x0561, 0x0586, 1}, - {0x05D0, 0x05EA, 1}, - {0x05F0, 0x05F2, 1}, - {0x0621, 0x063A, 1}, - {0x0641, 0x064A, 1}, - {0x0671, 0x06B7, 1}, - {0x06BA, 0x06BE, 1}, - {0x06C0, 0x06CE, 1}, - {0x06D0, 0x06D3, 1}, - {0x06D5, 0x06D5, 1}, - {0x06E5, 0x06E6, 1}, - {0x0905, 0x0939, 1}, - {0x093D, 0x093D, 1}, - {0x0958, 0x0961, 1}, - {0x0985, 0x098C, 1}, - {0x098F, 0x0990, 1}, - {0x0993, 0x09A8, 1}, - {0x09AA, 0x09B0, 1}, - {0x09B2, 0x09B2, 1}, - {0x09B6, 0x09B9, 1}, - {0x09DC, 0x09DD, 1}, - {0x09DF, 0x09E1, 1}, - {0x09F0, 0x09F1, 1}, - {0x0A05, 0x0A0A, 1}, - {0x0A0F, 0x0A10, 1}, - {0x0A13, 0x0A28, 1}, - {0x0A2A, 0x0A30, 1}, - {0x0A32, 0x0A33, 1}, - {0x0A35, 0x0A36, 1}, - {0x0A38, 0x0A39, 1}, - {0x0A59, 0x0A5C, 1}, - {0x0A5E, 0x0A5E, 1}, - {0x0A72, 0x0A74, 1}, - {0x0A85, 0x0A8B, 1}, - {0x0A8D, 0x0A8D, 1}, - {0x0A8F, 0x0A91, 1}, - {0x0A93, 0x0AA8, 1}, - {0x0AAA, 0x0AB0, 1}, - {0x0AB2, 0x0AB3, 1}, - {0x0AB5, 0x0AB9, 1}, - {0x0ABD, 0x0AE0, 0x23}, - {0x0B05, 0x0B0C, 1}, - {0x0B0F, 0x0B10, 1}, - {0x0B13, 0x0B28, 1}, - {0x0B2A, 0x0B30, 1}, - {0x0B32, 0x0B33, 1}, - {0x0B36, 0x0B39, 1}, - {0x0B3D, 0x0B3D, 1}, - {0x0B5C, 0x0B5D, 1}, - {0x0B5F, 0x0B61, 1}, - {0x0B85, 0x0B8A, 1}, - {0x0B8E, 0x0B90, 1}, - {0x0B92, 0x0B95, 1}, - {0x0B99, 0x0B9A, 1}, - {0x0B9C, 0x0B9C, 1}, - {0x0B9E, 0x0B9F, 1}, - {0x0BA3, 0x0BA4, 1}, - {0x0BA8, 0x0BAA, 1}, - {0x0BAE, 0x0BB5, 1}, - {0x0BB7, 0x0BB9, 1}, - {0x0C05, 0x0C0C, 1}, - {0x0C0E, 0x0C10, 1}, - {0x0C12, 0x0C28, 1}, - {0x0C2A, 0x0C33, 1}, - {0x0C35, 0x0C39, 1}, - {0x0C60, 0x0C61, 1}, - {0x0C85, 0x0C8C, 1}, - {0x0C8E, 0x0C90, 1}, - {0x0C92, 0x0CA8, 1}, - {0x0CAA, 0x0CB3, 1}, - {0x0CB5, 0x0CB9, 1}, - {0x0CDE, 0x0CDE, 1}, - {0x0CE0, 0x0CE1, 1}, - {0x0D05, 0x0D0C, 1}, - {0x0D0E, 0x0D10, 1}, - {0x0D12, 0x0D28, 1}, - {0x0D2A, 0x0D39, 1}, - {0x0D60, 0x0D61, 1}, - {0x0E01, 0x0E2E, 1}, - {0x0E30, 0x0E30, 1}, - {0x0E32, 0x0E33, 1}, - {0x0E40, 0x0E45, 1}, - {0x0E81, 0x0E82, 1}, - {0x0E84, 0x0E84, 1}, - {0x0E87, 0x0E88, 1}, - {0x0E8A, 0x0E8D, 3}, - {0x0E94, 0x0E97, 1}, - {0x0E99, 0x0E9F, 1}, - {0x0EA1, 0x0EA3, 1}, - {0x0EA5, 0x0EA7, 2}, - {0x0EAA, 0x0EAB, 1}, - {0x0EAD, 0x0EAE, 1}, - {0x0EB0, 0x0EB0, 1}, - {0x0EB2, 0x0EB3, 1}, - {0x0EBD, 0x0EBD, 1}, - {0x0EC0, 0x0EC4, 1}, - {0x0F40, 0x0F47, 1}, - {0x0F49, 0x0F69, 1}, - {0x10A0, 0x10C5, 1}, - {0x10D0, 0x10F6, 1}, - {0x1100, 0x1100, 1}, - {0x1102, 0x1103, 1}, - {0x1105, 0x1107, 1}, - {0x1109, 0x1109, 1}, - {0x110B, 0x110C, 1}, - {0x110E, 0x1112, 1}, - {0x113C, 0x1140, 2}, - {0x114C, 0x1150, 2}, - {0x1154, 0x1155, 1}, - {0x1159, 0x1159, 1}, - {0x115F, 0x1161, 1}, - {0x1163, 0x1169, 2}, - {0x116D, 0x116E, 1}, - {0x1172, 0x1173, 1}, - {0x1175, 0x119E, 0x119E - 0x1175}, - {0x11A8, 0x11AB, 0x11AB - 0x11A8}, - {0x11AE, 0x11AF, 1}, - {0x11B7, 0x11B8, 1}, - {0x11BA, 0x11BA, 1}, - {0x11BC, 0x11C2, 1}, - {0x11EB, 0x11F0, 0x11F0 - 0x11EB}, - {0x11F9, 0x11F9, 1}, - {0x1E00, 0x1E9B, 1}, - {0x1EA0, 0x1EF9, 1}, - {0x1F00, 0x1F15, 1}, - {0x1F18, 0x1F1D, 1}, - {0x1F20, 0x1F45, 1}, - {0x1F48, 0x1F4D, 1}, - {0x1F50, 0x1F57, 1}, - {0x1F59, 0x1F5B, 0x1F5B - 0x1F59}, - {0x1F5D, 0x1F5D, 1}, - {0x1F5F, 0x1F7D, 1}, - {0x1F80, 0x1FB4, 1}, - {0x1FB6, 0x1FBC, 1}, - {0x1FBE, 0x1FBE, 1}, - {0x1FC2, 0x1FC4, 1}, - {0x1FC6, 0x1FCC, 1}, - {0x1FD0, 0x1FD3, 1}, - {0x1FD6, 0x1FDB, 1}, - {0x1FE0, 0x1FEC, 1}, - {0x1FF2, 0x1FF4, 1}, - {0x1FF6, 0x1FFC, 1}, - {0x2126, 0x2126, 1}, - {0x212A, 0x212B, 1}, - {0x212E, 0x212E, 1}, - {0x2180, 0x2182, 1}, - {0x3007, 0x3007, 1}, - {0x3021, 0x3029, 1}, - {0x3041, 0x3094, 1}, - {0x30A1, 0x30FA, 1}, - {0x3105, 0x312C, 1}, - {0x4E00, 0x9FA5, 1}, - {0xAC00, 0xD7A3, 1}, - }, -} - -var second = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x002D, 0x002E, 1}, - {0x0030, 0x0039, 1}, - {0x00B7, 0x00B7, 1}, - {0x02D0, 0x02D1, 1}, - {0x0300, 0x0345, 1}, - {0x0360, 0x0361, 1}, - {0x0387, 0x0387, 1}, - {0x0483, 0x0486, 1}, - {0x0591, 0x05A1, 1}, - {0x05A3, 0x05B9, 1}, - {0x05BB, 0x05BD, 1}, - {0x05BF, 0x05BF, 1}, - {0x05C1, 0x05C2, 1}, - {0x05C4, 0x0640, 0x0640 - 0x05C4}, - {0x064B, 0x0652, 1}, - {0x0660, 0x0669, 1}, - {0x0670, 0x0670, 1}, - {0x06D6, 0x06DC, 1}, - {0x06DD, 0x06DF, 1}, - {0x06E0, 0x06E4, 1}, - {0x06E7, 0x06E8, 1}, - {0x06EA, 0x06ED, 1}, - {0x06F0, 0x06F9, 1}, - {0x0901, 0x0903, 1}, - {0x093C, 0x093C, 1}, - {0x093E, 0x094C, 1}, - {0x094D, 0x094D, 1}, - {0x0951, 0x0954, 1}, - {0x0962, 0x0963, 1}, - {0x0966, 0x096F, 1}, - {0x0981, 0x0983, 1}, - {0x09BC, 0x09BC, 1}, - {0x09BE, 0x09BF, 1}, - {0x09C0, 0x09C4, 1}, - {0x09C7, 0x09C8, 1}, - {0x09CB, 0x09CD, 1}, - {0x09D7, 0x09D7, 1}, - {0x09E2, 0x09E3, 1}, - {0x09E6, 0x09EF, 1}, - {0x0A02, 0x0A3C, 0x3A}, - {0x0A3E, 0x0A3F, 1}, - {0x0A40, 0x0A42, 1}, - {0x0A47, 0x0A48, 1}, - {0x0A4B, 0x0A4D, 1}, - {0x0A66, 0x0A6F, 1}, - {0x0A70, 0x0A71, 1}, - {0x0A81, 0x0A83, 1}, - {0x0ABC, 0x0ABC, 1}, - {0x0ABE, 0x0AC5, 1}, - {0x0AC7, 0x0AC9, 1}, - {0x0ACB, 0x0ACD, 1}, - {0x0AE6, 0x0AEF, 1}, - {0x0B01, 0x0B03, 1}, - {0x0B3C, 0x0B3C, 1}, - {0x0B3E, 0x0B43, 1}, - {0x0B47, 0x0B48, 1}, - {0x0B4B, 0x0B4D, 1}, - {0x0B56, 0x0B57, 1}, - {0x0B66, 0x0B6F, 1}, - {0x0B82, 0x0B83, 1}, - {0x0BBE, 0x0BC2, 1}, - {0x0BC6, 0x0BC8, 1}, - {0x0BCA, 0x0BCD, 1}, - {0x0BD7, 0x0BD7, 1}, - {0x0BE7, 0x0BEF, 1}, - {0x0C01, 0x0C03, 1}, - {0x0C3E, 0x0C44, 1}, - {0x0C46, 0x0C48, 1}, - {0x0C4A, 0x0C4D, 1}, - {0x0C55, 0x0C56, 1}, - {0x0C66, 0x0C6F, 1}, - {0x0C82, 0x0C83, 1}, - {0x0CBE, 0x0CC4, 1}, - {0x0CC6, 0x0CC8, 1}, - {0x0CCA, 0x0CCD, 1}, - {0x0CD5, 0x0CD6, 1}, - {0x0CE6, 0x0CEF, 1}, - {0x0D02, 0x0D03, 1}, - {0x0D3E, 0x0D43, 1}, - {0x0D46, 0x0D48, 1}, - {0x0D4A, 0x0D4D, 1}, - {0x0D57, 0x0D57, 1}, - {0x0D66, 0x0D6F, 1}, - {0x0E31, 0x0E31, 1}, - {0x0E34, 0x0E3A, 1}, - {0x0E46, 0x0E46, 1}, - {0x0E47, 0x0E4E, 1}, - {0x0E50, 0x0E59, 1}, - {0x0EB1, 0x0EB1, 1}, - {0x0EB4, 0x0EB9, 1}, - {0x0EBB, 0x0EBC, 1}, - {0x0EC6, 0x0EC6, 1}, - {0x0EC8, 0x0ECD, 1}, - {0x0ED0, 0x0ED9, 1}, - {0x0F18, 0x0F19, 1}, - {0x0F20, 0x0F29, 1}, - {0x0F35, 0x0F39, 2}, - {0x0F3E, 0x0F3F, 1}, - {0x0F71, 0x0F84, 1}, - {0x0F86, 0x0F8B, 1}, - {0x0F90, 0x0F95, 1}, - {0x0F97, 0x0F97, 1}, - {0x0F99, 0x0FAD, 1}, - {0x0FB1, 0x0FB7, 1}, - {0x0FB9, 0x0FB9, 1}, - {0x20D0, 0x20DC, 1}, - {0x20E1, 0x3005, 0x3005 - 0x20E1}, - {0x302A, 0x302F, 1}, - {0x3031, 0x3035, 1}, - {0x3099, 0x309A, 1}, - {0x309D, 0x309E, 1}, - {0x30FC, 0x30FE, 1}, - }, -} - -// HTMLEntity is an entity map containing translations for the -// standard HTML entity characters. -var HTMLEntity = htmlEntity - -var htmlEntity = map[string]string{ - /* - hget http://www.w3.org/TR/html4/sgml/entities.html | - ssam ' - ,y /\&gt;/ x/\&lt;(.|\n)+/ s/\n/ /g - ,x v/^\&lt;!ENTITY/d - ,s/\&lt;!ENTITY ([^ ]+) .*U\+([0-9A-F][0-9A-F][0-9A-F][0-9A-F]) .+/ "\1": "\\u\2",/g - ' - */ - "nbsp": "\u00A0", - "iexcl": "\u00A1", - "cent": "\u00A2", - "pound": "\u00A3", - "curren": "\u00A4", - "yen": "\u00A5", - "brvbar": "\u00A6", - "sect": "\u00A7", - "uml": "\u00A8", - "copy": "\u00A9", - "ordf": "\u00AA", - "laquo": "\u00AB", - "not": "\u00AC", - "shy": "\u00AD", - "reg": "\u00AE", - "macr": "\u00AF", - "deg": "\u00B0", - "plusmn": "\u00B1", - "sup2": "\u00B2", - "sup3": "\u00B3", - "acute": "\u00B4", - "micro": "\u00B5", - "para": "\u00B6", - "middot": "\u00B7", - "cedil": "\u00B8", - "sup1": "\u00B9", - "ordm": "\u00BA", - "raquo": "\u00BB", - "frac14": "\u00BC", - "frac12": "\u00BD", - "frac34": "\u00BE", - "iquest": "\u00BF", - "Agrave": "\u00C0", - "Aacute": "\u00C1", - "Acirc": "\u00C2", - "Atilde": "\u00C3", - "Auml": "\u00C4", - "Aring": "\u00C5", - "AElig": "\u00C6", - "Ccedil": "\u00C7", - "Egrave": "\u00C8", - "Eacute": "\u00C9", - "Ecirc": "\u00CA", - "Euml": "\u00CB", - "Igrave": "\u00CC", - "Iacute": "\u00CD", - "Icirc": "\u00CE", - "Iuml": "\u00CF", - "ETH": "\u00D0", - "Ntilde": "\u00D1", - "Ograve": "\u00D2", - "Oacute": "\u00D3", - "Ocirc": "\u00D4", - "Otilde": "\u00D5", - "Ouml": "\u00D6", - "times": "\u00D7", - "Oslash": "\u00D8", - "Ugrave": "\u00D9", - "Uacute": "\u00DA", - "Ucirc": "\u00DB", - "Uuml": "\u00DC", - "Yacute": "\u00DD", - "THORN": "\u00DE", - "szlig": "\u00DF", - "agrave": "\u00E0", - "aacute": "\u00E1", - "acirc": "\u00E2", - "atilde": "\u00E3", - "auml": "\u00E4", - "aring": "\u00E5", - "aelig": "\u00E6", - "ccedil": "\u00E7", - "egrave": "\u00E8", - "eacute": "\u00E9", - "ecirc": "\u00EA", - "euml": "\u00EB", - "igrave": "\u00EC", - "iacute": "\u00ED", - "icirc": "\u00EE", - "iuml": "\u00EF", - "eth": "\u00F0", - "ntilde": "\u00F1", - "ograve": "\u00F2", - "oacute": "\u00F3", - "ocirc": "\u00F4", - "otilde": "\u00F5", - "ouml": "\u00F6", - "divide": "\u00F7", - "oslash": "\u00F8", - "ugrave": "\u00F9", - "uacute": "\u00FA", - "ucirc": "\u00FB", - "uuml": "\u00FC", - "yacute": "\u00FD", - "thorn": "\u00FE", - "yuml": "\u00FF", - "fnof": "\u0192", - "Alpha": "\u0391", - "Beta": "\u0392", - "Gamma": "\u0393", - "Delta": "\u0394", - "Epsilon": "\u0395", - "Zeta": "\u0396", - "Eta": "\u0397", - "Theta": "\u0398", - "Iota": "\u0399", - "Kappa": "\u039A", - "Lambda": "\u039B", - "Mu": "\u039C", - "Nu": "\u039D", - "Xi": "\u039E", - "Omicron": "\u039F", - "Pi": "\u03A0", - "Rho": "\u03A1", - "Sigma": "\u03A3", - "Tau": "\u03A4", - "Upsilon": "\u03A5", - "Phi": "\u03A6", - "Chi": "\u03A7", - "Psi": "\u03A8", - "Omega": "\u03A9", - "alpha": "\u03B1", - "beta": "\u03B2", - "gamma": "\u03B3", - "delta": "\u03B4", - "epsilon": "\u03B5", - "zeta": "\u03B6", - "eta": "\u03B7", - "theta": "\u03B8", - "iota": "\u03B9", - "kappa": "\u03BA", - "lambda": "\u03BB", - "mu": "\u03BC", - "nu": "\u03BD", - "xi": "\u03BE", - "omicron": "\u03BF", - "pi": "\u03C0", - "rho": "\u03C1", - "sigmaf": "\u03C2", - "sigma": "\u03C3", - "tau": "\u03C4", - "upsilon": "\u03C5", - "phi": "\u03C6", - "chi": "\u03C7", - "psi": "\u03C8", - "omega": "\u03C9", - "thetasym": "\u03D1", - "upsih": "\u03D2", - "piv": "\u03D6", - "bull": "\u2022", - "hellip": "\u2026", - "prime": "\u2032", - "Prime": "\u2033", - "oline": "\u203E", - "frasl": "\u2044", - "weierp": "\u2118", - "image": "\u2111", - "real": "\u211C", - "trade": "\u2122", - "alefsym": "\u2135", - "larr": "\u2190", - "uarr": "\u2191", - "rarr": "\u2192", - "darr": "\u2193", - "harr": "\u2194", - "crarr": "\u21B5", - "lArr": "\u21D0", - "uArr": "\u21D1", - "rArr": "\u21D2", - "dArr": "\u21D3", - "hArr": "\u21D4", - "forall": "\u2200", - "part": "\u2202", - "exist": "\u2203", - "empty": "\u2205", - "nabla": "\u2207", - "isin": "\u2208", - "notin": "\u2209", - "ni": "\u220B", - "prod": "\u220F", - "sum": "\u2211", - "minus": "\u2212", - "lowast": "\u2217", - "radic": "\u221A", - "prop": "\u221D", - "infin": "\u221E", - "ang": "\u2220", - "and": "\u2227", - "or": "\u2228", - "cap": "\u2229", - "cup": "\u222A", - "int": "\u222B", - "there4": "\u2234", - "sim": "\u223C", - "cong": "\u2245", - "asymp": "\u2248", - "ne": "\u2260", - "equiv": "\u2261", - "le": "\u2264", - "ge": "\u2265", - "sub": "\u2282", - "sup": "\u2283", - "nsub": "\u2284", - "sube": "\u2286", - "supe": "\u2287", - "oplus": "\u2295", - "otimes": "\u2297", - "perp": "\u22A5", - "sdot": "\u22C5", - "lceil": "\u2308", - "rceil": "\u2309", - "lfloor": "\u230A", - "rfloor": "\u230B", - "lang": "\u2329", - "rang": "\u232A", - "loz": "\u25CA", - "spades": "\u2660", - "clubs": "\u2663", - "hearts": "\u2665", - "diams": "\u2666", - "quot": "\u0022", - "amp": "\u0026", - "lt": "\u003C", - "gt": "\u003E", - "OElig": "\u0152", - "oelig": "\u0153", - "Scaron": "\u0160", - "scaron": "\u0161", - "Yuml": "\u0178", - "circ": "\u02C6", - "tilde": "\u02DC", - "ensp": "\u2002", - "emsp": "\u2003", - "thinsp": "\u2009", - "zwnj": "\u200C", - "zwj": "\u200D", - "lrm": "\u200E", - "rlm": "\u200F", - "ndash": "\u2013", - "mdash": "\u2014", - "lsquo": "\u2018", - "rsquo": "\u2019", - "sbquo": "\u201A", - "ldquo": "\u201C", - "rdquo": "\u201D", - "bdquo": "\u201E", - "dagger": "\u2020", - "Dagger": "\u2021", - "permil": "\u2030", - "lsaquo": "\u2039", - "rsaquo": "\u203A", - "euro": "\u20AC", -} - -// HTMLAutoClose is the set of HTML elements that -// should be considered to close automatically. -var HTMLAutoClose = htmlAutoClose - -var htmlAutoClose = []string{ - /* - hget http://www.w3.org/TR/html4/loose.dtd | - 9 sed -n 's/<!ELEMENT ([^ ]*) +- O EMPTY.+/ "\1",/p' | tr A-Z a-z - */ - "basefont", - "br", - "area", - "link", - "img", - "param", - "hr", - "input", - "col", - "frame", - "isindex", - "base", - "meta", -} - -var ( - esc_quot = []byte("&#34;") // shorter than "&quot;" - esc_apos = []byte("&#39;") // shorter than "&apos;" - esc_amp = []byte("&amp;") - esc_lt = []byte("&lt;") - esc_gt = []byte("&gt;") - esc_tab = []byte("&#x9;") - esc_nl = []byte("&#xA;") - esc_cr = []byte("&#xD;") - esc_fffd = []byte("\uFFFD") // Unicode replacement character -) - -// EscapeText writes to w the properly escaped XML equivalent -// of the plain text data s. -func EscapeText(w io.Writer, s []byte) error { - return escapeText(w, s, true) -} - -// escapeText writes to w the properly escaped XML equivalent -// of the plain text data s. If escapeNewline is true, newline -// characters will be escaped. -func escapeText(w io.Writer, s []byte, escapeNewline bool) error { - var esc []byte - last := 0 - for i := 0; i < len(s); { - r, width := utf8.DecodeRune(s[i:]) - i += width - switch r { - case '"': - esc = esc_quot - case '\'': - esc = esc_apos - case '&': - esc = esc_amp - case '<': - esc = esc_lt - case '>': - esc = esc_gt - case '\t': - esc = esc_tab - case '\n': - if !escapeNewline { - continue - } - esc = esc_nl - case '\r': - esc = esc_cr - default: - if !isInCharacterRange(r) || (r == 0xFFFD && width == 1) { - esc = esc_fffd - break - } - continue - } - if _, err := w.Write(s[last : i-width]); err != nil { - return err - } - if _, err := w.Write(esc); err != nil { - return err - } - last = i - } - if _, err := w.Write(s[last:]); err != nil { - return err - } - return nil -} - -// EscapeString writes to p the properly escaped XML equivalent -// of the plain text data s. -func (p *printer) EscapeString(s string) { - var esc []byte - last := 0 - for i := 0; i < len(s); { - r, width := utf8.DecodeRuneInString(s[i:]) - i += width - switch r { - case '"': - esc = esc_quot - case '\'': - esc = esc_apos - case '&': - esc = esc_amp - case '<': - esc = esc_lt - case '>': - esc = esc_gt - case '\t': - esc = esc_tab - case '\n': - esc = esc_nl - case '\r': - esc = esc_cr - default: - if !isInCharacterRange(r) || (r == 0xFFFD && width == 1) { - esc = esc_fffd - break - } - continue - } - p.WriteString(s[last : i-width]) - p.Write(esc) - last = i - } - p.WriteString(s[last:]) -} - -// Escape is like EscapeText but omits the error return value. -// It is provided for backwards compatibility with Go 1.0. -// Code targeting Go 1.1 or later should use EscapeText. -func Escape(w io.Writer, s []byte) { - EscapeText(w, s) -} - -// procInst parses the `param="..."` or `param='...'` -// value out of the provided string, returning "" if not found. -func procInst(param, s string) string { - // TODO: this parsing is somewhat lame and not exact. - // It works for all actual cases, though. - param = param + "=" - idx := strings.Index(s, param) - if idx == -1 { - return "" - } - v := s[idx+len(param):] - if v == "" { - return "" - } - if v[0] != '\'' && v[0] != '"' { - return "" - } - idx = strings.IndexRune(v[1:], rune(v[0])) - if idx == -1 { - return "" - } - return v[1 : idx+1] -} diff --git a/vendor/golang.org/x/net/webdav/internal/xml/xml_test.go b/vendor/golang.org/x/net/webdav/internal/xml/xml_test.go deleted file mode 100644 index af4cf8ea..00000000 --- a/vendor/golang.org/x/net/webdav/internal/xml/xml_test.go +++ /dev/null @@ -1,752 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xml - -import ( - "bytes" - "fmt" - "io" - "reflect" - "strings" - "testing" - "unicode/utf8" -) - -const testInput = ` -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<body xmlns:foo="ns1" xmlns="ns2" xmlns:tag="ns3" ` + - "\r\n\t" + ` > - <hello lang="en">World &lt;&gt;&apos;&quot; &#x767d;&#40300;翔</hello> - <query>&何; &is-it;</query> - <goodbye /> - <outer foo:attr="value" xmlns:tag="ns4"> - <inner/> - </outer> - <tag:name> - <![CDATA[Some text here.]]> - </tag:name> -</body><!-- missing final newline -->` - -var testEntity = map[string]string{"何": "What", "is-it": "is it?"} - -var rawTokens = []Token{ - CharData("\n"), - ProcInst{"xml", []byte(`version="1.0" encoding="UTF-8"`)}, - CharData("\n"), - Directive(`DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"`), - CharData("\n"), - StartElement{Name{"", "body"}, []Attr{{Name{"xmlns", "foo"}, "ns1"}, {Name{"", "xmlns"}, "ns2"}, {Name{"xmlns", "tag"}, "ns3"}}}, - CharData("\n "), - StartElement{Name{"", "hello"}, []Attr{{Name{"", "lang"}, "en"}}}, - CharData("World <>'\" 白鵬翔"), - EndElement{Name{"", "hello"}}, - CharData("\n "), - StartElement{Name{"", "query"}, []Attr{}}, - CharData("What is it?"), - EndElement{Name{"", "query"}}, - CharData("\n "), - StartElement{Name{"", "goodbye"}, []Attr{}}, - EndElement{Name{"", "goodbye"}}, - CharData("\n "), - StartElement{Name{"", "outer"}, []Attr{{Name{"foo", "attr"}, "value"}, {Name{"xmlns", "tag"}, "ns4"}}}, - CharData("\n "), - StartElement{Name{"", "inner"}, []Attr{}}, - EndElement{Name{"", "inner"}}, - CharData("\n "), - EndElement{Name{"", "outer"}}, - CharData("\n "), - StartElement{Name{"tag", "name"}, []Attr{}}, - CharData("\n "), - CharData("Some text here."), - CharData("\n "), - EndElement{Name{"tag", "name"}}, - CharData("\n"), - EndElement{Name{"", "body"}}, - Comment(" missing final newline "), -} - -var cookedTokens = []Token{ - CharData("\n"), - ProcInst{"xml", []byte(`version="1.0" encoding="UTF-8"`)}, - CharData("\n"), - Directive(`DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"`), - CharData("\n"), - StartElement{Name{"ns2", "body"}, []Attr{{Name{"xmlns", "foo"}, "ns1"}, {Name{"", "xmlns"}, "ns2"}, {Name{"xmlns", "tag"}, "ns3"}}}, - CharData("\n "), - StartElement{Name{"ns2", "hello"}, []Attr{{Name{"", "lang"}, "en"}}}, - CharData("World <>'\" 白鵬翔"), - EndElement{Name{"ns2", "hello"}}, - CharData("\n "), - StartElement{Name{"ns2", "query"}, []Attr{}}, - CharData("What is it?"), - EndElement{Name{"ns2", "query"}}, - CharData("\n "), - StartElement{Name{"ns2", "goodbye"}, []Attr{}}, - EndElement{Name{"ns2", "goodbye"}}, - CharData("\n "), - StartElement{Name{"ns2", "outer"}, []Attr{{Name{"ns1", "attr"}, "value"}, {Name{"xmlns", "tag"}, "ns4"}}}, - CharData("\n "), - StartElement{Name{"ns2", "inner"}, []Attr{}}, - EndElement{Name{"ns2", "inner"}}, - CharData("\n "), - EndElement{Name{"ns2", "outer"}}, - CharData("\n "), - StartElement{Name{"ns3", "name"}, []Attr{}}, - CharData("\n "), - CharData("Some text here."), - CharData("\n "), - EndElement{Name{"ns3", "name"}}, - CharData("\n"), - EndElement{Name{"ns2", "body"}}, - Comment(" missing final newline "), -} - -const testInputAltEncoding = ` -<?xml version="1.0" encoding="x-testing-uppercase"?> -<TAG>VALUE</TAG>` - -var rawTokensAltEncoding = []Token{ - CharData("\n"), - ProcInst{"xml", []byte(`version="1.0" encoding="x-testing-uppercase"`)}, - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("value"), - EndElement{Name{"", "tag"}}, -} - -var xmlInput = []string{ - // unexpected EOF cases - "<", - "<t", - "<t ", - "<t/", - "<!", - "<!-", - "<!--", - "<!--c-", - "<!--c--", - "<!d", - "<t></", - "<t></t", - "<?", - "<?p", - "<t a", - "<t a=", - "<t a='", - "<t a=''", - "<t/><![", - "<t/><![C", - "<t/><![CDATA[d", - "<t/><![CDATA[d]", - "<t/><![CDATA[d]]", - - // other Syntax errors - "<>", - "<t/a", - "<0 />", - "<?0 >", - // "<!0 >", // let the Token() caller handle - "</0>", - "<t 0=''>", - "<t a='&'>", - "<t a='<'>", - "<t>&nbspc;</t>", - "<t a>", - "<t a=>", - "<t a=v>", - // "<![CDATA[d]]>", // let the Token() caller handle - "<t></e>", - "<t></>", - "<t></t!", - "<t>cdata]]></t>", -} - -func TestRawToken(t *testing.T) { - d := NewDecoder(strings.NewReader(testInput)) - d.Entity = testEntity - testRawToken(t, d, testInput, rawTokens) -} - -const nonStrictInput = ` -<tag>non&entity</tag> -<tag>&unknown;entity</tag> -<tag>&#123</tag> -<tag>&#zzz;</tag> -<tag>&なまえ3;</tag> -<tag>&lt-gt;</tag> -<tag>&;</tag> -<tag>&0a;</tag> -` - -var nonStringEntity = map[string]string{"": "oops!", "0a": "oops!"} - -var nonStrictTokens = []Token{ - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("non&entity"), - EndElement{Name{"", "tag"}}, - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("&unknown;entity"), - EndElement{Name{"", "tag"}}, - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("&#123"), - EndElement{Name{"", "tag"}}, - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("&#zzz;"), - EndElement{Name{"", "tag"}}, - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("&なまえ3;"), - EndElement{Name{"", "tag"}}, - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("&lt-gt;"), - EndElement{Name{"", "tag"}}, - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("&;"), - EndElement{Name{"", "tag"}}, - CharData("\n"), - StartElement{Name{"", "tag"}, []Attr{}}, - CharData("&0a;"), - EndElement{Name{"", "tag"}}, - CharData("\n"), -} - -func TestNonStrictRawToken(t *testing.T) { - d := NewDecoder(strings.NewReader(nonStrictInput)) - d.Strict = false - testRawToken(t, d, nonStrictInput, nonStrictTokens) -} - -type downCaser struct { - t *testing.T - r io.ByteReader -} - -func (d *downCaser) ReadByte() (c byte, err error) { - c, err = d.r.ReadByte() - if c >= 'A' && c <= 'Z' { - c += 'a' - 'A' - } - return -} - -func (d *downCaser) Read(p []byte) (int, error) { - d.t.Fatalf("unexpected Read call on downCaser reader") - panic("unreachable") -} - -func TestRawTokenAltEncoding(t *testing.T) { - d := NewDecoder(strings.NewReader(testInputAltEncoding)) - d.CharsetReader = func(charset string, input io.Reader) (io.Reader, error) { - if charset != "x-testing-uppercase" { - t.Fatalf("unexpected charset %q", charset) - } - return &downCaser{t, input.(io.ByteReader)}, nil - } - testRawToken(t, d, testInputAltEncoding, rawTokensAltEncoding) -} - -func TestRawTokenAltEncodingNoConverter(t *testing.T) { - d := NewDecoder(strings.NewReader(testInputAltEncoding)) - token, err := d.RawToken() - if token == nil { - t.Fatalf("expected a token on first RawToken call") - } - if err != nil { - t.Fatal(err) - } - token, err = d.RawToken() - if token != nil { - t.Errorf("expected a nil token; got %#v", token) - } - if err == nil { - t.Fatalf("expected an error on second RawToken call") - } - const encoding = "x-testing-uppercase" - if !strings.Contains(err.Error(), encoding) { - t.Errorf("expected error to contain %q; got error: %v", - encoding, err) - } -} - -func testRawToken(t *testing.T, d *Decoder, raw string, rawTokens []Token) { - lastEnd := int64(0) - for i, want := range rawTokens { - start := d.InputOffset() - have, err := d.RawToken() - end := d.InputOffset() - if err != nil { - t.Fatalf("token %d: unexpected error: %s", i, err) - } - if !reflect.DeepEqual(have, want) { - var shave, swant string - if _, ok := have.(CharData); ok { - shave = fmt.Sprintf("CharData(%q)", have) - } else { - shave = fmt.Sprintf("%#v", have) - } - if _, ok := want.(CharData); ok { - swant = fmt.Sprintf("CharData(%q)", want) - } else { - swant = fmt.Sprintf("%#v", want) - } - t.Errorf("token %d = %s, want %s", i, shave, swant) - } - - // Check that InputOffset returned actual token. - switch { - case start < lastEnd: - t.Errorf("token %d: position [%d,%d) for %T is before previous token", i, start, end, have) - case start >= end: - // Special case: EndElement can be synthesized. - if start == end && end == lastEnd { - break - } - t.Errorf("token %d: position [%d,%d) for %T is empty", i, start, end, have) - case end > int64(len(raw)): - t.Errorf("token %d: position [%d,%d) for %T extends beyond input", i, start, end, have) - default: - text := raw[start:end] - if strings.ContainsAny(text, "<>") && (!strings.HasPrefix(text, "<") || !strings.HasSuffix(text, ">")) { - t.Errorf("token %d: misaligned raw token %#q for %T", i, text, have) - } - } - lastEnd = end - } -} - -// Ensure that directives (specifically !DOCTYPE) include the complete -// text of any nested directives, noting that < and > do not change -// nesting depth if they are in single or double quotes. - -var nestedDirectivesInput = ` -<!DOCTYPE [<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">]> -<!DOCTYPE [<!ENTITY xlt ">">]> -<!DOCTYPE [<!ENTITY xlt "<">]> -<!DOCTYPE [<!ENTITY xlt '>'>]> -<!DOCTYPE [<!ENTITY xlt '<'>]> -<!DOCTYPE [<!ENTITY xlt '">'>]> -<!DOCTYPE [<!ENTITY xlt "'<">]> -` - -var nestedDirectivesTokens = []Token{ - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">]`), - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY xlt ">">]`), - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY xlt "<">]`), - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY xlt '>'>]`), - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY xlt '<'>]`), - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY xlt '">'>]`), - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY xlt "'<">]`), - CharData("\n"), -} - -func TestNestedDirectives(t *testing.T) { - d := NewDecoder(strings.NewReader(nestedDirectivesInput)) - - for i, want := range nestedDirectivesTokens { - have, err := d.Token() - if err != nil { - t.Fatalf("token %d: unexpected error: %s", i, err) - } - if !reflect.DeepEqual(have, want) { - t.Errorf("token %d = %#v want %#v", i, have, want) - } - } -} - -func TestToken(t *testing.T) { - d := NewDecoder(strings.NewReader(testInput)) - d.Entity = testEntity - - for i, want := range cookedTokens { - have, err := d.Token() - if err != nil { - t.Fatalf("token %d: unexpected error: %s", i, err) - } - if !reflect.DeepEqual(have, want) { - t.Errorf("token %d = %#v want %#v", i, have, want) - } - } -} - -func TestSyntax(t *testing.T) { - for i := range xmlInput { - d := NewDecoder(strings.NewReader(xmlInput[i])) - var err error - for _, err = d.Token(); err == nil; _, err = d.Token() { - } - if _, ok := err.(*SyntaxError); !ok { - t.Fatalf(`xmlInput "%s": expected SyntaxError not received`, xmlInput[i]) - } - } -} - -type allScalars struct { - True1 bool - True2 bool - False1 bool - False2 bool - Int int - Int8 int8 - Int16 int16 - Int32 int32 - Int64 int64 - Uint int - Uint8 uint8 - Uint16 uint16 - Uint32 uint32 - Uint64 uint64 - Uintptr uintptr - Float32 float32 - Float64 float64 - String string - PtrString *string -} - -var all = allScalars{ - True1: true, - True2: true, - False1: false, - False2: false, - Int: 1, - Int8: -2, - Int16: 3, - Int32: -4, - Int64: 5, - Uint: 6, - Uint8: 7, - Uint16: 8, - Uint32: 9, - Uint64: 10, - Uintptr: 11, - Float32: 13.0, - Float64: 14.0, - String: "15", - PtrString: &sixteen, -} - -var sixteen = "16" - -const testScalarsInput = `<allscalars> - <True1>true</True1> - <True2>1</True2> - <False1>false</False1> - <False2>0</False2> - <Int>1</Int> - <Int8>-2</Int8> - <Int16>3</Int16> - <Int32>-4</Int32> - <Int64>5</Int64> - <Uint>6</Uint> - <Uint8>7</Uint8> - <Uint16>8</Uint16> - <Uint32>9</Uint32> - <Uint64>10</Uint64> - <Uintptr>11</Uintptr> - <Float>12.0</Float> - <Float32>13.0</Float32> - <Float64>14.0</Float64> - <String>15</String> - <PtrString>16</PtrString> -</allscalars>` - -func TestAllScalars(t *testing.T) { - var a allScalars - err := Unmarshal([]byte(testScalarsInput), &a) - - if err != nil { - t.Fatal(err) - } - if !reflect.DeepEqual(a, all) { - t.Errorf("have %+v want %+v", a, all) - } -} - -type item struct { - Field_a string -} - -func TestIssue569(t *testing.T) { - data := `<item><Field_a>abcd</Field_a></item>` - var i item - err := Unmarshal([]byte(data), &i) - - if err != nil || i.Field_a != "abcd" { - t.Fatal("Expecting abcd") - } -} - -func TestUnquotedAttrs(t *testing.T) { - data := "<tag attr=azAZ09:-_\t>" - d := NewDecoder(strings.NewReader(data)) - d.Strict = false - token, err := d.Token() - if _, ok := err.(*SyntaxError); ok { - t.Errorf("Unexpected error: %v", err) - } - if token.(StartElement).Name.Local != "tag" { - t.Errorf("Unexpected tag name: %v", token.(StartElement).Name.Local) - } - attr := token.(StartElement).Attr[0] - if attr.Value != "azAZ09:-_" { - t.Errorf("Unexpected attribute value: %v", attr.Value) - } - if attr.Name.Local != "attr" { - t.Errorf("Unexpected attribute name: %v", attr.Name.Local) - } -} - -func TestValuelessAttrs(t *testing.T) { - tests := [][3]string{ - {"<p nowrap>", "p", "nowrap"}, - {"<p nowrap >", "p", "nowrap"}, - {"<input checked/>", "input", "checked"}, - {"<input checked />", "input", "checked"}, - } - for _, test := range tests { - d := NewDecoder(strings.NewReader(test[0])) - d.Strict = false - token, err := d.Token() - if _, ok := err.(*SyntaxError); ok { - t.Errorf("Unexpected error: %v", err) - } - if token.(StartElement).Name.Local != test[1] { - t.Errorf("Unexpected tag name: %v", token.(StartElement).Name.Local) - } - attr := token.(StartElement).Attr[0] - if attr.Value != test[2] { - t.Errorf("Unexpected attribute value: %v", attr.Value) - } - if attr.Name.Local != test[2] { - t.Errorf("Unexpected attribute name: %v", attr.Name.Local) - } - } -} - -func TestCopyTokenCharData(t *testing.T) { - data := []byte("same data") - var tok1 Token = CharData(data) - tok2 := CopyToken(tok1) - if !reflect.DeepEqual(tok1, tok2) { - t.Error("CopyToken(CharData) != CharData") - } - data[1] = 'o' - if reflect.DeepEqual(tok1, tok2) { - t.Error("CopyToken(CharData) uses same buffer.") - } -} - -func TestCopyTokenStartElement(t *testing.T) { - elt := StartElement{Name{"", "hello"}, []Attr{{Name{"", "lang"}, "en"}}} - var tok1 Token = elt - tok2 := CopyToken(tok1) - if tok1.(StartElement).Attr[0].Value != "en" { - t.Error("CopyToken overwrote Attr[0]") - } - if !reflect.DeepEqual(tok1, tok2) { - t.Error("CopyToken(StartElement) != StartElement") - } - tok1.(StartElement).Attr[0] = Attr{Name{"", "lang"}, "de"} - if reflect.DeepEqual(tok1, tok2) { - t.Error("CopyToken(CharData) uses same buffer.") - } -} - -func TestSyntaxErrorLineNum(t *testing.T) { - testInput := "<P>Foo<P>\n\n<P>Bar</>\n" - d := NewDecoder(strings.NewReader(testInput)) - var err error - for _, err = d.Token(); err == nil; _, err = d.Token() { - } - synerr, ok := err.(*SyntaxError) - if !ok { - t.Error("Expected SyntaxError.") - } - if synerr.Line != 3 { - t.Error("SyntaxError didn't have correct line number.") - } -} - -func TestTrailingRawToken(t *testing.T) { - input := `<FOO></FOO> ` - d := NewDecoder(strings.NewReader(input)) - var err error - for _, err = d.RawToken(); err == nil; _, err = d.RawToken() { - } - if err != io.EOF { - t.Fatalf("d.RawToken() = _, %v, want _, io.EOF", err) - } -} - -func TestTrailingToken(t *testing.T) { - input := `<FOO></FOO> ` - d := NewDecoder(strings.NewReader(input)) - var err error - for _, err = d.Token(); err == nil; _, err = d.Token() { - } - if err != io.EOF { - t.Fatalf("d.Token() = _, %v, want _, io.EOF", err) - } -} - -func TestEntityInsideCDATA(t *testing.T) { - input := `<test><![CDATA[ &val=foo ]]></test>` - d := NewDecoder(strings.NewReader(input)) - var err error - for _, err = d.Token(); err == nil; _, err = d.Token() { - } - if err != io.EOF { - t.Fatalf("d.Token() = _, %v, want _, io.EOF", err) - } -} - -var characterTests = []struct { - in string - err string -}{ - {"\x12<doc/>", "illegal character code U+0012"}, - {"<?xml version=\"1.0\"?>\x0b<doc/>", "illegal character code U+000B"}, - {"\xef\xbf\xbe<doc/>", "illegal character code U+FFFE"}, - {"<?xml version=\"1.0\"?><doc>\r\n<hiya/>\x07<toots/></doc>", "illegal character code U+0007"}, - {"<?xml version=\"1.0\"?><doc \x12='value'>what's up</doc>", "expected attribute name in element"}, - {"<doc>&abc\x01;</doc>", "invalid character entity &abc (no semicolon)"}, - {"<doc>&\x01;</doc>", "invalid character entity & (no semicolon)"}, - {"<doc>&\xef\xbf\xbe;</doc>", "invalid character entity &\uFFFE;"}, - {"<doc>&hello;</doc>", "invalid character entity &hello;"}, -} - -func TestDisallowedCharacters(t *testing.T) { - - for i, tt := range characterTests { - d := NewDecoder(strings.NewReader(tt.in)) - var err error - - for err == nil { - _, err = d.Token() - } - synerr, ok := err.(*SyntaxError) - if !ok { - t.Fatalf("input %d d.Token() = _, %v, want _, *SyntaxError", i, err) - } - if synerr.Msg != tt.err { - t.Fatalf("input %d synerr.Msg wrong: want %q, got %q", i, tt.err, synerr.Msg) - } - } -} - -type procInstEncodingTest struct { - expect, got string -} - -var procInstTests = []struct { - input string - expect [2]string -}{ - {`version="1.0" encoding="utf-8"`, [2]string{"1.0", "utf-8"}}, - {`version="1.0" encoding='utf-8'`, [2]string{"1.0", "utf-8"}}, - {`version="1.0" encoding='utf-8' `, [2]string{"1.0", "utf-8"}}, - {`version="1.0" encoding=utf-8`, [2]string{"1.0", ""}}, - {`encoding="FOO" `, [2]string{"", "FOO"}}, -} - -func TestProcInstEncoding(t *testing.T) { - for _, test := range procInstTests { - if got := procInst("version", test.input); got != test.expect[0] { - t.Errorf("procInst(version, %q) = %q; want %q", test.input, got, test.expect[0]) - } - if got := procInst("encoding", test.input); got != test.expect[1] { - t.Errorf("procInst(encoding, %q) = %q; want %q", test.input, got, test.expect[1]) - } - } -} - -// Ensure that directives with comments include the complete -// text of any nested directives. - -var directivesWithCommentsInput = ` -<!DOCTYPE [<!-- a comment --><!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">]> -<!DOCTYPE [<!ENTITY go "Golang"><!-- a comment-->]> -<!DOCTYPE <!-> <!> <!----> <!-->--> <!--->--> [<!ENTITY go "Golang"><!-- a comment-->]> -` - -var directivesWithCommentsTokens = []Token{ - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">]`), - CharData("\n"), - Directive(`DOCTYPE [<!ENTITY go "Golang">]`), - CharData("\n"), - Directive(`DOCTYPE <!-> <!> [<!ENTITY go "Golang">]`), - CharData("\n"), -} - -func TestDirectivesWithComments(t *testing.T) { - d := NewDecoder(strings.NewReader(directivesWithCommentsInput)) - - for i, want := range directivesWithCommentsTokens { - have, err := d.Token() - if err != nil { - t.Fatalf("token %d: unexpected error: %s", i, err) - } - if !reflect.DeepEqual(have, want) { - t.Errorf("token %d = %#v want %#v", i, have, want) - } - } -} - -// Writer whose Write method always returns an error. -type errWriter struct{} - -func (errWriter) Write(p []byte) (n int, err error) { return 0, fmt.Errorf("unwritable") } - -func TestEscapeTextIOErrors(t *testing.T) { - expectErr := "unwritable" - err := EscapeText(errWriter{}, []byte{'A'}) - - if err == nil || err.Error() != expectErr { - t.Errorf("have %v, want %v", err, expectErr) - } -} - -func TestEscapeTextInvalidChar(t *testing.T) { - input := []byte("A \x00 terminated string.") - expected := "A \uFFFD terminated string." - - buff := new(bytes.Buffer) - if err := EscapeText(buff, input); err != nil { - t.Fatalf("have %v, want nil", err) - } - text := buff.String() - - if text != expected { - t.Errorf("have %v, want %v", text, expected) - } -} - -func TestIssue5880(t *testing.T) { - type T []byte - data, err := Marshal(T{192, 168, 0, 1}) - if err != nil { - t.Errorf("Marshal error: %v", err) - } - if !utf8.Valid(data) { - t.Errorf("Marshal generated invalid UTF-8: %x", data) - } -} diff --git a/vendor/golang.org/x/net/webdav/litmus_test_server.go b/vendor/golang.org/x/net/webdav/litmus_test_server.go deleted file mode 100644 index 514db5dd..00000000 --- a/vendor/golang.org/x/net/webdav/litmus_test_server.go +++ /dev/null @@ -1,94 +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. - -// +build ignore - -/* -This program is a server for the WebDAV 'litmus' compliance test at -http://www.webdav.org/neon/litmus/ -To run the test: - -go run litmus_test_server.go - -and separately, from the downloaded litmus-xxx directory: - -make URL=http://localhost:9999/ check -*/ -package main - -import ( - "flag" - "fmt" - "log" - "net/http" - "net/url" - - "golang.org/x/net/webdav" -) - -var port = flag.Int("port", 9999, "server port") - -func main() { - flag.Parse() - log.SetFlags(0) - h := &webdav.Handler{ - FileSystem: webdav.NewMemFS(), - LockSystem: webdav.NewMemLS(), - Logger: func(r *http.Request, err error) { - litmus := r.Header.Get("X-Litmus") - if len(litmus) > 19 { - litmus = litmus[:16] + "..." - } - - switch r.Method { - case "COPY", "MOVE": - dst := "" - if u, err := url.Parse(r.Header.Get("Destination")); err == nil { - dst = u.Path - } - o := r.Header.Get("Overwrite") - log.Printf("%-20s%-10s%-30s%-30so=%-2s%v", litmus, r.Method, r.URL.Path, dst, o, err) - default: - log.Printf("%-20s%-10s%-30s%v", litmus, r.Method, r.URL.Path, err) - } - }, - } - - // The next line would normally be: - // http.Handle("/", h) - // but we wrap that HTTP handler h to cater for a special case. - // - // The propfind_invalid2 litmus test case expects an empty namespace prefix - // declaration to be an error. The FAQ in the webdav litmus test says: - // - // "What does the "propfind_invalid2" test check for?... - // - // If a request was sent with an XML body which included an empty namespace - // prefix declaration (xmlns:ns1=""), then the server must reject that with - // a "400 Bad Request" response, as it is invalid according to the XML - // Namespace specification." - // - // On the other hand, the Go standard library's encoding/xml package - // accepts an empty xmlns namespace, as per the discussion at - // https://github.com/golang/go/issues/8068 - // - // Empty namespaces seem disallowed in the second (2006) edition of the XML - // standard, but allowed in a later edition. The grammar differs between - // http://www.w3.org/TR/2006/REC-xml-names-20060816/#ns-decl and - // http://www.w3.org/TR/REC-xml-names/#dt-prefix - // - // Thus, we assume that the propfind_invalid2 test is obsolete, and - // hard-code the 400 Bad Request response that the test expects. - http.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Header.Get("X-Litmus") == "props: 3 (propfind_invalid2)" { - http.Error(w, "400 Bad Request", http.StatusBadRequest) - return - } - h.ServeHTTP(w, r) - })) - - addr := fmt.Sprintf(":%d", *port) - log.Printf("Serving %v", addr) - log.Fatal(http.ListenAndServe(addr, nil)) -} diff --git a/vendor/golang.org/x/net/webdav/lock.go b/vendor/golang.org/x/net/webdav/lock.go deleted file mode 100644 index 344ac5ce..00000000 --- a/vendor/golang.org/x/net/webdav/lock.go +++ /dev/null @@ -1,445 +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 webdav - -import ( - "container/heap" - "errors" - "strconv" - "strings" - "sync" - "time" -) - -var ( - // ErrConfirmationFailed is returned by a LockSystem's Confirm method. - ErrConfirmationFailed = errors.New("webdav: confirmation failed") - // ErrForbidden is returned by a LockSystem's Unlock method. - ErrForbidden = errors.New("webdav: forbidden") - // ErrLocked is returned by a LockSystem's Create, Refresh and Unlock methods. - ErrLocked = errors.New("webdav: locked") - // ErrNoSuchLock is returned by a LockSystem's Refresh and Unlock methods. - ErrNoSuchLock = errors.New("webdav: no such lock") -) - -// Condition can match a WebDAV resource, based on a token or ETag. -// Exactly one of Token and ETag should be non-empty. -type Condition struct { - Not bool - Token string - ETag string -} - -// LockSystem manages access to a collection of named resources. The elements -// in a lock name are separated by slash ('/', U+002F) characters, regardless -// of host operating system convention. -type LockSystem interface { - // Confirm confirms that the caller can claim all of the locks specified by - // the given conditions, and that holding the union of all of those locks - // gives exclusive access to all of the named resources. Up to two resources - // can be named. Empty names are ignored. - // - // Exactly one of release and err will be non-nil. If release is non-nil, - // all of the requested locks are held until release is called. Calling - // release does not unlock the lock, in the WebDAV UNLOCK sense, but once - // Confirm has confirmed that a lock claim is valid, that lock cannot be - // Confirmed again until it has been released. - // - // If Confirm returns ErrConfirmationFailed then the Handler will continue - // to try any other set of locks presented (a WebDAV HTTP request can - // present more than one set of locks). If it returns any other non-nil - // error, the Handler will write a "500 Internal Server Error" HTTP status. - Confirm(now time.Time, name0, name1 string, conditions ...Condition) (release func(), err error) - - // Create creates a lock with the given depth, duration, owner and root - // (name). The depth will either be negative (meaning infinite) or zero. - // - // If Create returns ErrLocked then the Handler will write a "423 Locked" - // HTTP status. If it returns any other non-nil error, the Handler will - // write a "500 Internal Server Error" HTTP status. - // - // See http://www.webdav.org/specs/rfc4918.html#rfc.section.9.10.6 for - // when to use each error. - // - // The token returned identifies the created lock. It should be an absolute - // URI as defined by RFC 3986, Section 4.3. In particular, it should not - // contain whitespace. - Create(now time.Time, details LockDetails) (token string, err error) - - // Refresh refreshes the lock with the given token. - // - // If Refresh returns ErrLocked then the Handler will write a "423 Locked" - // HTTP Status. If Refresh returns ErrNoSuchLock then the Handler will write - // a "412 Precondition Failed" HTTP Status. If it returns any other non-nil - // error, the Handler will write a "500 Internal Server Error" HTTP status. - // - // See http://www.webdav.org/specs/rfc4918.html#rfc.section.9.10.6 for - // when to use each error. - Refresh(now time.Time, token string, duration time.Duration) (LockDetails, error) - - // Unlock unlocks the lock with the given token. - // - // If Unlock returns ErrForbidden then the Handler will write a "403 - // Forbidden" HTTP Status. If Unlock returns ErrLocked then the Handler - // will write a "423 Locked" HTTP status. If Unlock returns ErrNoSuchLock - // then the Handler will write a "409 Conflict" HTTP Status. If it returns - // any other non-nil error, the Handler will write a "500 Internal Server - // Error" HTTP status. - // - // See http://www.webdav.org/specs/rfc4918.html#rfc.section.9.11.1 for - // when to use each error. - Unlock(now time.Time, token string) error -} - -// LockDetails are a lock's metadata. -type LockDetails struct { - // Root is the root resource name being locked. For a zero-depth lock, the - // root is the only resource being locked. - Root string - // Duration is the lock timeout. A negative duration means infinite. - Duration time.Duration - // OwnerXML is the verbatim <owner> XML given in a LOCK HTTP request. - // - // TODO: does the "verbatim" nature play well with XML namespaces? - // Does the OwnerXML field need to have more structure? See - // https://codereview.appspot.com/175140043/#msg2 - OwnerXML string - // ZeroDepth is whether the lock has zero depth. If it does not have zero - // depth, it has infinite depth. - ZeroDepth bool -} - -// NewMemLS returns a new in-memory LockSystem. -func NewMemLS() LockSystem { - return &memLS{ - byName: make(map[string]*memLSNode), - byToken: make(map[string]*memLSNode), - gen: uint64(time.Now().Unix()), - } -} - -type memLS struct { - mu sync.Mutex - byName map[string]*memLSNode - byToken map[string]*memLSNode - gen uint64 - // byExpiry only contains those nodes whose LockDetails have a finite - // Duration and are yet to expire. - byExpiry byExpiry -} - -func (m *memLS) nextToken() string { - m.gen++ - return strconv.FormatUint(m.gen, 10) -} - -func (m *memLS) collectExpiredNodes(now time.Time) { - for len(m.byExpiry) > 0 { - if now.Before(m.byExpiry[0].expiry) { - break - } - m.remove(m.byExpiry[0]) - } -} - -func (m *memLS) Confirm(now time.Time, name0, name1 string, conditions ...Condition) (func(), error) { - m.mu.Lock() - defer m.mu.Unlock() - m.collectExpiredNodes(now) - - var n0, n1 *memLSNode - if name0 != "" { - if n0 = m.lookup(slashClean(name0), conditions...); n0 == nil { - return nil, ErrConfirmationFailed - } - } - if name1 != "" { - if n1 = m.lookup(slashClean(name1), conditions...); n1 == nil { - return nil, ErrConfirmationFailed - } - } - - // Don't hold the same node twice. - if n1 == n0 { - n1 = nil - } - - if n0 != nil { - m.hold(n0) - } - if n1 != nil { - m.hold(n1) - } - return func() { - m.mu.Lock() - defer m.mu.Unlock() - if n1 != nil { - m.unhold(n1) - } - if n0 != nil { - m.unhold(n0) - } - }, nil -} - -// lookup returns the node n that locks the named resource, provided that n -// matches at least one of the given conditions and that lock isn't held by -// another party. Otherwise, it returns nil. -// -// n may be a parent of the named resource, if n is an infinite depth lock. -func (m *memLS) lookup(name string, conditions ...Condition) (n *memLSNode) { - // TODO: support Condition.Not and Condition.ETag. - for _, c := range conditions { - n = m.byToken[c.Token] - if n == nil || n.held { - continue - } - if name == n.details.Root { - return n - } - if n.details.ZeroDepth { - continue - } - if n.details.Root == "/" || strings.HasPrefix(name, n.details.Root+"/") { - return n - } - } - return nil -} - -func (m *memLS) hold(n *memLSNode) { - if n.held { - panic("webdav: memLS inconsistent held state") - } - n.held = true - if n.details.Duration >= 0 && n.byExpiryIndex >= 0 { - heap.Remove(&m.byExpiry, n.byExpiryIndex) - } -} - -func (m *memLS) unhold(n *memLSNode) { - if !n.held { - panic("webdav: memLS inconsistent held state") - } - n.held = false - if n.details.Duration >= 0 { - heap.Push(&m.byExpiry, n) - } -} - -func (m *memLS) Create(now time.Time, details LockDetails) (string, error) { - m.mu.Lock() - defer m.mu.Unlock() - m.collectExpiredNodes(now) - details.Root = slashClean(details.Root) - - if !m.canCreate(details.Root, details.ZeroDepth) { - return "", ErrLocked - } - n := m.create(details.Root) - n.token = m.nextToken() - m.byToken[n.token] = n - n.details = details - if n.details.Duration >= 0 { - n.expiry = now.Add(n.details.Duration) - heap.Push(&m.byExpiry, n) - } - return n.token, nil -} - -func (m *memLS) Refresh(now time.Time, token string, duration time.Duration) (LockDetails, error) { - m.mu.Lock() - defer m.mu.Unlock() - m.collectExpiredNodes(now) - - n := m.byToken[token] - if n == nil { - return LockDetails{}, ErrNoSuchLock - } - if n.held { - return LockDetails{}, ErrLocked - } - if n.byExpiryIndex >= 0 { - heap.Remove(&m.byExpiry, n.byExpiryIndex) - } - n.details.Duration = duration - if n.details.Duration >= 0 { - n.expiry = now.Add(n.details.Duration) - heap.Push(&m.byExpiry, n) - } - return n.details, nil -} - -func (m *memLS) Unlock(now time.Time, token string) error { - m.mu.Lock() - defer m.mu.Unlock() - m.collectExpiredNodes(now) - - n := m.byToken[token] - if n == nil { - return ErrNoSuchLock - } - if n.held { - return ErrLocked - } - m.remove(n) - return nil -} - -func (m *memLS) canCreate(name string, zeroDepth bool) bool { - return walkToRoot(name, func(name0 string, first bool) bool { - n := m.byName[name0] - if n == nil { - return true - } - if first { - if n.token != "" { - // The target node is already locked. - return false - } - if !zeroDepth { - // The requested lock depth is infinite, and the fact that n exists - // (n != nil) means that a descendent of the target node is locked. - return false - } - } else if n.token != "" && !n.details.ZeroDepth { - // An ancestor of the target node is locked with infinite depth. - return false - } - return true - }) -} - -func (m *memLS) create(name string) (ret *memLSNode) { - walkToRoot(name, func(name0 string, first bool) bool { - n := m.byName[name0] - if n == nil { - n = &memLSNode{ - details: LockDetails{ - Root: name0, - }, - byExpiryIndex: -1, - } - m.byName[name0] = n - } - n.refCount++ - if first { - ret = n - } - return true - }) - return ret -} - -func (m *memLS) remove(n *memLSNode) { - delete(m.byToken, n.token) - n.token = "" - walkToRoot(n.details.Root, func(name0 string, first bool) bool { - x := m.byName[name0] - x.refCount-- - if x.refCount == 0 { - delete(m.byName, name0) - } - return true - }) - if n.byExpiryIndex >= 0 { - heap.Remove(&m.byExpiry, n.byExpiryIndex) - } -} - -func walkToRoot(name string, f func(name0 string, first bool) bool) bool { - for first := true; ; first = false { - if !f(name, first) { - return false - } - if name == "/" { - break - } - name = name[:strings.LastIndex(name, "/")] - if name == "" { - name = "/" - } - } - return true -} - -type memLSNode struct { - // details are the lock metadata. Even if this node's name is not explicitly locked, - // details.Root will still equal the node's name. - details LockDetails - // token is the unique identifier for this node's lock. An empty token means that - // this node is not explicitly locked. - token string - // refCount is the number of self-or-descendent nodes that are explicitly locked. - refCount int - // expiry is when this node's lock expires. - expiry time.Time - // byExpiryIndex is the index of this node in memLS.byExpiry. It is -1 - // if this node does not expire, or has expired. - byExpiryIndex int - // held is whether this node's lock is actively held by a Confirm call. - held bool -} - -type byExpiry []*memLSNode - -func (b *byExpiry) Len() int { - return len(*b) -} - -func (b *byExpiry) Less(i, j int) bool { - return (*b)[i].expiry.Before((*b)[j].expiry) -} - -func (b *byExpiry) Swap(i, j int) { - (*b)[i], (*b)[j] = (*b)[j], (*b)[i] - (*b)[i].byExpiryIndex = i - (*b)[j].byExpiryIndex = j -} - -func (b *byExpiry) Push(x interface{}) { - n := x.(*memLSNode) - n.byExpiryIndex = len(*b) - *b = append(*b, n) -} - -func (b *byExpiry) Pop() interface{} { - i := len(*b) - 1 - n := (*b)[i] - (*b)[i] = nil - n.byExpiryIndex = -1 - *b = (*b)[:i] - return n -} - -const infiniteTimeout = -1 - -// parseTimeout parses the Timeout HTTP header, as per section 10.7. If s is -// empty, an infiniteTimeout is returned. -func parseTimeout(s string) (time.Duration, error) { - if s == "" { - return infiniteTimeout, nil - } - if i := strings.IndexByte(s, ','); i >= 0 { - s = s[:i] - } - s = strings.TrimSpace(s) - if s == "Infinite" { - return infiniteTimeout, nil - } - const pre = "Second-" - if !strings.HasPrefix(s, pre) { - return 0, errInvalidTimeout - } - s = s[len(pre):] - if s == "" || s[0] < '0' || '9' < s[0] { - return 0, errInvalidTimeout - } - n, err := strconv.ParseInt(s, 10, 64) - if err != nil || 1<<32-1 < n { - return 0, errInvalidTimeout - } - return time.Duration(n) * time.Second, nil -} diff --git a/vendor/golang.org/x/net/webdav/lock_test.go b/vendor/golang.org/x/net/webdav/lock_test.go deleted file mode 100644 index 5cf14cda..00000000 --- a/vendor/golang.org/x/net/webdav/lock_test.go +++ /dev/null @@ -1,731 +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 webdav - -import ( - "fmt" - "math/rand" - "path" - "reflect" - "sort" - "strconv" - "strings" - "testing" - "time" -) - -func TestWalkToRoot(t *testing.T) { - testCases := []struct { - name string - want []string - }{{ - "/a/b/c/d", - []string{ - "/a/b/c/d", - "/a/b/c", - "/a/b", - "/a", - "/", - }, - }, { - "/a", - []string{ - "/a", - "/", - }, - }, { - "/", - []string{ - "/", - }, - }} - - for _, tc := range testCases { - var got []string - if !walkToRoot(tc.name, func(name0 string, first bool) bool { - if first != (len(got) == 0) { - t.Errorf("name=%q: first=%t but len(got)==%d", tc.name, first, len(got)) - return false - } - got = append(got, name0) - return true - }) { - continue - } - if !reflect.DeepEqual(got, tc.want) { - t.Errorf("name=%q:\ngot %q\nwant %q", tc.name, got, tc.want) - } - } -} - -var lockTestDurations = []time.Duration{ - infiniteTimeout, // infiniteTimeout means to never expire. - 0, // A zero duration means to expire immediately. - 100 * time.Hour, // A very large duration will not expire in these tests. -} - -// lockTestNames are the names of a set of mutually compatible locks. For each -// name fragment: -// - _ means no explicit lock. -// - i means an infinite-depth lock, -// - z means a zero-depth lock, -var lockTestNames = []string{ - "/_/_/_/_/z", - "/_/_/i", - "/_/z", - "/_/z/i", - "/_/z/z", - "/_/z/_/i", - "/_/z/_/z", - "/i", - "/z", - "/z/_/i", - "/z/_/z", -} - -func lockTestZeroDepth(name string) bool { - switch name[len(name)-1] { - case 'i': - return false - case 'z': - return true - } - panic(fmt.Sprintf("lock name %q did not end with 'i' or 'z'", name)) -} - -func TestMemLSCanCreate(t *testing.T) { - now := time.Unix(0, 0) - m := NewMemLS().(*memLS) - - for _, name := range lockTestNames { - _, err := m.Create(now, LockDetails{ - Root: name, - Duration: infiniteTimeout, - ZeroDepth: lockTestZeroDepth(name), - }) - if err != nil { - t.Fatalf("creating lock for %q: %v", name, err) - } - } - - wantCanCreate := func(name string, zeroDepth bool) bool { - for _, n := range lockTestNames { - switch { - case n == name: - // An existing lock has the same name as the proposed lock. - return false - case strings.HasPrefix(n, name): - // An existing lock would be a child of the proposed lock, - // which conflicts if the proposed lock has infinite depth. - if !zeroDepth { - return false - } - case strings.HasPrefix(name, n): - // An existing lock would be an ancestor of the proposed lock, - // which conflicts if the ancestor has infinite depth. - if n[len(n)-1] == 'i' { - return false - } - } - } - return true - } - - var check func(int, string) - check = func(recursion int, name string) { - for _, zeroDepth := range []bool{false, true} { - got := m.canCreate(name, zeroDepth) - want := wantCanCreate(name, zeroDepth) - if got != want { - t.Errorf("canCreate name=%q zeroDepth=%t: got %t, want %t", name, zeroDepth, got, want) - } - } - if recursion == 6 { - return - } - if name != "/" { - name += "/" - } - for _, c := range "_iz" { - check(recursion+1, name+string(c)) - } - } - check(0, "/") -} - -func TestMemLSLookup(t *testing.T) { - now := time.Unix(0, 0) - m := NewMemLS().(*memLS) - - badToken := m.nextToken() - t.Logf("badToken=%q", badToken) - - for _, name := range lockTestNames { - token, err := m.Create(now, LockDetails{ - Root: name, - Duration: infiniteTimeout, - ZeroDepth: lockTestZeroDepth(name), - }) - if err != nil { - t.Fatalf("creating lock for %q: %v", name, err) - } - t.Logf("%-15q -> node=%p token=%q", name, m.byName[name], token) - } - - baseNames := append([]string{"/a", "/b/c"}, lockTestNames...) - for _, baseName := range baseNames { - for _, suffix := range []string{"", "/0", "/1/2/3"} { - name := baseName + suffix - - goodToken := "" - base := m.byName[baseName] - if base != nil && (suffix == "" || !lockTestZeroDepth(baseName)) { - goodToken = base.token - } - - for _, token := range []string{badToken, goodToken} { - if token == "" { - continue - } - - got := m.lookup(name, Condition{Token: token}) - want := base - if token == badToken { - want = nil - } - if got != want { - t.Errorf("name=%-20qtoken=%q (bad=%t): got %p, want %p", - name, token, token == badToken, got, want) - } - } - } - } -} - -func TestMemLSConfirm(t *testing.T) { - now := time.Unix(0, 0) - m := NewMemLS().(*memLS) - alice, err := m.Create(now, LockDetails{ - Root: "/alice", - Duration: infiniteTimeout, - ZeroDepth: false, - }) - tweedle, err := m.Create(now, LockDetails{ - Root: "/tweedle", - Duration: infiniteTimeout, - ZeroDepth: false, - }) - if err != nil { - t.Fatalf("Create: %v", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Create: inconsistent state: %v", err) - } - - // Test a mismatch between name and condition. - _, err = m.Confirm(now, "/tweedle/dee", "", Condition{Token: alice}) - if err != ErrConfirmationFailed { - t.Fatalf("Confirm (mismatch): got %v, want ErrConfirmationFailed", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Confirm (mismatch): inconsistent state: %v", err) - } - - // Test two names (that fall under the same lock) in the one Confirm call. - release, err := m.Confirm(now, "/tweedle/dee", "/tweedle/dum", Condition{Token: tweedle}) - if err != nil { - t.Fatalf("Confirm (twins): %v", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Confirm (twins): inconsistent state: %v", err) - } - release() - if err := m.consistent(); err != nil { - t.Fatalf("release (twins): inconsistent state: %v", err) - } - - // Test the same two names in overlapping Confirm / release calls. - releaseDee, err := m.Confirm(now, "/tweedle/dee", "", Condition{Token: tweedle}) - if err != nil { - t.Fatalf("Confirm (sequence #0): %v", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Confirm (sequence #0): inconsistent state: %v", err) - } - - _, err = m.Confirm(now, "/tweedle/dum", "", Condition{Token: tweedle}) - if err != ErrConfirmationFailed { - t.Fatalf("Confirm (sequence #1): got %v, want ErrConfirmationFailed", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Confirm (sequence #1): inconsistent state: %v", err) - } - - releaseDee() - if err := m.consistent(); err != nil { - t.Fatalf("release (sequence #2): inconsistent state: %v", err) - } - - releaseDum, err := m.Confirm(now, "/tweedle/dum", "", Condition{Token: tweedle}) - if err != nil { - t.Fatalf("Confirm (sequence #3): %v", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Confirm (sequence #3): inconsistent state: %v", err) - } - - // Test that you can't unlock a held lock. - err = m.Unlock(now, tweedle) - if err != ErrLocked { - t.Fatalf("Unlock (sequence #4): got %v, want ErrLocked", err) - } - - releaseDum() - if err := m.consistent(); err != nil { - t.Fatalf("release (sequence #5): inconsistent state: %v", err) - } - - err = m.Unlock(now, tweedle) - if err != nil { - t.Fatalf("Unlock (sequence #6): %v", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Unlock (sequence #6): inconsistent state: %v", err) - } -} - -func TestMemLSNonCanonicalRoot(t *testing.T) { - now := time.Unix(0, 0) - m := NewMemLS().(*memLS) - token, err := m.Create(now, LockDetails{ - Root: "/foo/./bar//", - Duration: 1 * time.Second, - }) - if err != nil { - t.Fatalf("Create: %v", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Create: inconsistent state: %v", err) - } - if err := m.Unlock(now, token); err != nil { - t.Fatalf("Unlock: %v", err) - } - if err := m.consistent(); err != nil { - t.Fatalf("Unlock: inconsistent state: %v", err) - } -} - -func TestMemLSExpiry(t *testing.T) { - m := NewMemLS().(*memLS) - testCases := []string{ - "setNow 0", - "create /a.5", - "want /a.5", - "create /c.6", - "want /a.5 /c.6", - "create /a/b.7", - "want /a.5 /a/b.7 /c.6", - "setNow 4", - "want /a.5 /a/b.7 /c.6", - "setNow 5", - "want /a/b.7 /c.6", - "setNow 6", - "want /a/b.7", - "setNow 7", - "want ", - "setNow 8", - "want ", - "create /a.12", - "create /b.13", - "create /c.15", - "create /a/d.16", - "want /a.12 /a/d.16 /b.13 /c.15", - "refresh /a.14", - "want /a.14 /a/d.16 /b.13 /c.15", - "setNow 12", - "want /a.14 /a/d.16 /b.13 /c.15", - "setNow 13", - "want /a.14 /a/d.16 /c.15", - "setNow 14", - "want /a/d.16 /c.15", - "refresh /a/d.20", - "refresh /c.20", - "want /a/d.20 /c.20", - "setNow 20", - "want ", - } - - tokens := map[string]string{} - zTime := time.Unix(0, 0) - now := zTime - for i, tc := range testCases { - j := strings.IndexByte(tc, ' ') - if j < 0 { - t.Fatalf("test case #%d %q: invalid command", i, tc) - } - op, arg := tc[:j], tc[j+1:] - switch op { - default: - t.Fatalf("test case #%d %q: invalid operation %q", i, tc, op) - - case "create", "refresh": - parts := strings.Split(arg, ".") - if len(parts) != 2 { - t.Fatalf("test case #%d %q: invalid create", i, tc) - } - root := parts[0] - d, err := strconv.Atoi(parts[1]) - if err != nil { - t.Fatalf("test case #%d %q: invalid duration", i, tc) - } - dur := time.Unix(0, 0).Add(time.Duration(d) * time.Second).Sub(now) - - switch op { - case "create": - token, err := m.Create(now, LockDetails{ - Root: root, - Duration: dur, - ZeroDepth: true, - }) - if err != nil { - t.Fatalf("test case #%d %q: Create: %v", i, tc, err) - } - tokens[root] = token - - case "refresh": - token := tokens[root] - if token == "" { - t.Fatalf("test case #%d %q: no token for %q", i, tc, root) - } - got, err := m.Refresh(now, token, dur) - if err != nil { - t.Fatalf("test case #%d %q: Refresh: %v", i, tc, err) - } - want := LockDetails{ - Root: root, - Duration: dur, - ZeroDepth: true, - } - if got != want { - t.Fatalf("test case #%d %q:\ngot %v\nwant %v", i, tc, got, want) - } - } - - case "setNow": - d, err := strconv.Atoi(arg) - if err != nil { - t.Fatalf("test case #%d %q: invalid duration", i, tc) - } - now = time.Unix(0, 0).Add(time.Duration(d) * time.Second) - - case "want": - m.mu.Lock() - m.collectExpiredNodes(now) - got := make([]string, 0, len(m.byToken)) - for _, n := range m.byToken { - got = append(got, fmt.Sprintf("%s.%d", - n.details.Root, n.expiry.Sub(zTime)/time.Second)) - } - m.mu.Unlock() - sort.Strings(got) - want := []string{} - if arg != "" { - want = strings.Split(arg, " ") - } - if !reflect.DeepEqual(got, want) { - t.Fatalf("test case #%d %q:\ngot %q\nwant %q", i, tc, got, want) - } - } - - if err := m.consistent(); err != nil { - t.Fatalf("test case #%d %q: inconsistent state: %v", i, tc, err) - } - } -} - -func TestMemLS(t *testing.T) { - now := time.Unix(0, 0) - m := NewMemLS().(*memLS) - rng := rand.New(rand.NewSource(0)) - tokens := map[string]string{} - nConfirm, nCreate, nRefresh, nUnlock := 0, 0, 0, 0 - const N = 2000 - - for i := 0; i < N; i++ { - name := lockTestNames[rng.Intn(len(lockTestNames))] - duration := lockTestDurations[rng.Intn(len(lockTestDurations))] - confirmed, unlocked := false, false - - // If the name was already locked, we randomly confirm/release, refresh - // or unlock it. Otherwise, we create a lock. - token := tokens[name] - if token != "" { - switch rng.Intn(3) { - case 0: - confirmed = true - nConfirm++ - release, err := m.Confirm(now, name, "", Condition{Token: token}) - if err != nil { - t.Fatalf("iteration #%d: Confirm %q: %v", i, name, err) - } - if err := m.consistent(); err != nil { - t.Fatalf("iteration #%d: inconsistent state: %v", i, err) - } - release() - - case 1: - nRefresh++ - if _, err := m.Refresh(now, token, duration); err != nil { - t.Fatalf("iteration #%d: Refresh %q: %v", i, name, err) - } - - case 2: - unlocked = true - nUnlock++ - if err := m.Unlock(now, token); err != nil { - t.Fatalf("iteration #%d: Unlock %q: %v", i, name, err) - } - } - - } else { - nCreate++ - var err error - token, err = m.Create(now, LockDetails{ - Root: name, - Duration: duration, - ZeroDepth: lockTestZeroDepth(name), - }) - if err != nil { - t.Fatalf("iteration #%d: Create %q: %v", i, name, err) - } - } - - if !confirmed { - if duration == 0 || unlocked { - // A zero-duration lock should expire immediately and is - // effectively equivalent to being unlocked. - tokens[name] = "" - } else { - tokens[name] = token - } - } - - if err := m.consistent(); err != nil { - t.Fatalf("iteration #%d: inconsistent state: %v", i, err) - } - } - - if nConfirm < N/10 { - t.Fatalf("too few Confirm calls: got %d, want >= %d", nConfirm, N/10) - } - if nCreate < N/10 { - t.Fatalf("too few Create calls: got %d, want >= %d", nCreate, N/10) - } - if nRefresh < N/10 { - t.Fatalf("too few Refresh calls: got %d, want >= %d", nRefresh, N/10) - } - if nUnlock < N/10 { - t.Fatalf("too few Unlock calls: got %d, want >= %d", nUnlock, N/10) - } -} - -func (m *memLS) consistent() error { - m.mu.Lock() - defer m.mu.Unlock() - - // If m.byName is non-empty, then it must contain an entry for the root "/", - // and its refCount should equal the number of locked nodes. - if len(m.byName) > 0 { - n := m.byName["/"] - if n == nil { - return fmt.Errorf(`non-empty m.byName does not contain the root "/"`) - } - if n.refCount != len(m.byToken) { - return fmt.Errorf("root node refCount=%d, differs from len(m.byToken)=%d", n.refCount, len(m.byToken)) - } - } - - for name, n := range m.byName { - // The map keys should be consistent with the node's copy of the key. - if n.details.Root != name { - return fmt.Errorf("node name %q != byName map key %q", n.details.Root, name) - } - - // A name must be clean, and start with a "/". - if len(name) == 0 || name[0] != '/' { - return fmt.Errorf(`node name %q does not start with "/"`, name) - } - if name != path.Clean(name) { - return fmt.Errorf(`node name %q is not clean`, name) - } - - // A node's refCount should be positive. - if n.refCount <= 0 { - return fmt.Errorf("non-positive refCount for node at name %q", name) - } - - // A node's refCount should be the number of self-or-descendents that - // are locked (i.e. have a non-empty token). - var list []string - for name0, n0 := range m.byName { - // All of lockTestNames' name fragments are one byte long: '_', 'i' or 'z', - // so strings.HasPrefix is equivalent to self-or-descendent name match. - // We don't have to worry about "/foo/bar" being a false positive match - // for "/foo/b". - if strings.HasPrefix(name0, name) && n0.token != "" { - list = append(list, name0) - } - } - if n.refCount != len(list) { - sort.Strings(list) - return fmt.Errorf("node at name %q has refCount %d but locked self-or-descendents are %q (len=%d)", - name, n.refCount, list, len(list)) - } - - // A node n is in m.byToken if it has a non-empty token. - if n.token != "" { - if _, ok := m.byToken[n.token]; !ok { - return fmt.Errorf("node at name %q has token %q but not in m.byToken", name, n.token) - } - } - - // A node n is in m.byExpiry if it has a non-negative byExpiryIndex. - if n.byExpiryIndex >= 0 { - if n.byExpiryIndex >= len(m.byExpiry) { - return fmt.Errorf("node at name %q has byExpiryIndex %d but m.byExpiry has length %d", name, n.byExpiryIndex, len(m.byExpiry)) - } - if n != m.byExpiry[n.byExpiryIndex] { - return fmt.Errorf("node at name %q has byExpiryIndex %d but that indexes a different node", name, n.byExpiryIndex) - } - } - } - - for token, n := range m.byToken { - // The map keys should be consistent with the node's copy of the key. - if n.token != token { - return fmt.Errorf("node token %q != byToken map key %q", n.token, token) - } - - // Every node in m.byToken is in m.byName. - if _, ok := m.byName[n.details.Root]; !ok { - return fmt.Errorf("node at name %q in m.byToken but not in m.byName", n.details.Root) - } - } - - for i, n := range m.byExpiry { - // The slice indices should be consistent with the node's copy of the index. - if n.byExpiryIndex != i { - return fmt.Errorf("node byExpiryIndex %d != byExpiry slice index %d", n.byExpiryIndex, i) - } - - // Every node in m.byExpiry is in m.byName. - if _, ok := m.byName[n.details.Root]; !ok { - return fmt.Errorf("node at name %q in m.byExpiry but not in m.byName", n.details.Root) - } - - // No node in m.byExpiry should be held. - if n.held { - return fmt.Errorf("node at name %q in m.byExpiry is held", n.details.Root) - } - } - return nil -} - -func TestParseTimeout(t *testing.T) { - testCases := []struct { - s string - want time.Duration - wantErr error - }{{ - "", - infiniteTimeout, - nil, - }, { - "Infinite", - infiniteTimeout, - nil, - }, { - "Infinitesimal", - 0, - errInvalidTimeout, - }, { - "infinite", - 0, - errInvalidTimeout, - }, { - "Second-0", - 0 * time.Second, - nil, - }, { - "Second-123", - 123 * time.Second, - nil, - }, { - " Second-456 ", - 456 * time.Second, - nil, - }, { - "Second-4100000000", - 4100000000 * time.Second, - nil, - }, { - "junk", - 0, - errInvalidTimeout, - }, { - "Second-", - 0, - errInvalidTimeout, - }, { - "Second--1", - 0, - errInvalidTimeout, - }, { - "Second--123", - 0, - errInvalidTimeout, - }, { - "Second-+123", - 0, - errInvalidTimeout, - }, { - "Second-0x123", - 0, - errInvalidTimeout, - }, { - "second-123", - 0, - errInvalidTimeout, - }, { - "Second-4294967295", - 4294967295 * time.Second, - nil, - }, { - // Section 10.7 says that "The timeout value for TimeType "Second" - // must not be greater than 2^32-1." - "Second-4294967296", - 0, - errInvalidTimeout, - }, { - // This test case comes from section 9.10.9 of the spec. It says, - // - // "In this request, the client has specified that it desires an - // infinite-length lock, if available, otherwise a timeout of 4.1 - // billion seconds, if available." - // - // The Go WebDAV package always supports infinite length locks, - // and ignores the fallback after the comma. - "Infinite, Second-4100000000", - infiniteTimeout, - nil, - }} - - for _, tc := range testCases { - got, gotErr := parseTimeout(tc.s) - if got != tc.want || gotErr != tc.wantErr { - t.Errorf("parsing %q:\ngot %v, %v\nwant %v, %v", tc.s, got, gotErr, tc.want, tc.wantErr) - } - } -} diff --git a/vendor/golang.org/x/net/webdav/prop.go b/vendor/golang.org/x/net/webdav/prop.go deleted file mode 100644 index e36a3b31..00000000 --- a/vendor/golang.org/x/net/webdav/prop.go +++ /dev/null @@ -1,418 +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 webdav - -import ( - "bytes" - "encoding/xml" - "fmt" - "io" - "mime" - "net/http" - "os" - "path/filepath" - "strconv" - - "golang.org/x/net/context" -) - -// Proppatch describes a property update instruction as defined in RFC 4918. -// See http://www.webdav.org/specs/rfc4918.html#METHOD_PROPPATCH -type Proppatch struct { - // Remove specifies whether this patch removes properties. If it does not - // remove them, it sets them. - Remove bool - // Props contains the properties to be set or removed. - Props []Property -} - -// Propstat describes a XML propstat element as defined in RFC 4918. -// See http://www.webdav.org/specs/rfc4918.html#ELEMENT_propstat -type Propstat struct { - // Props contains the properties for which Status applies. - Props []Property - - // Status defines the HTTP status code of the properties in Prop. - // Allowed values include, but are not limited to the WebDAV status - // code extensions for HTTP/1.1. - // http://www.webdav.org/specs/rfc4918.html#status.code.extensions.to.http11 - Status int - - // XMLError contains the XML representation of the optional error element. - // XML content within this field must not rely on any predefined - // namespace declarations or prefixes. If empty, the XML error element - // is omitted. - XMLError string - - // ResponseDescription contains the contents of the optional - // responsedescription field. If empty, the XML element is omitted. - ResponseDescription string -} - -// makePropstats returns a slice containing those of x and y whose Props slice -// is non-empty. If both are empty, it returns a slice containing an otherwise -// zero Propstat whose HTTP status code is 200 OK. -func makePropstats(x, y Propstat) []Propstat { - pstats := make([]Propstat, 0, 2) - if len(x.Props) != 0 { - pstats = append(pstats, x) - } - if len(y.Props) != 0 { - pstats = append(pstats, y) - } - if len(pstats) == 0 { - pstats = append(pstats, Propstat{ - Status: http.StatusOK, - }) - } - return pstats -} - -// DeadPropsHolder holds the dead properties of a resource. -// -// Dead properties are those properties that are explicitly defined. In -// comparison, live properties, such as DAV:getcontentlength, are implicitly -// defined by the underlying resource, and cannot be explicitly overridden or -// removed. See the Terminology section of -// http://www.webdav.org/specs/rfc4918.html#rfc.section.3 -// -// There is a whitelist of the names of live properties. This package handles -// all live properties, and will only pass non-whitelisted names to the Patch -// method of DeadPropsHolder implementations. -type DeadPropsHolder interface { - // DeadProps returns a copy of the dead properties held. - DeadProps() (map[xml.Name]Property, error) - - // Patch patches the dead properties held. - // - // Patching is atomic; either all or no patches succeed. It returns (nil, - // non-nil) if an internal server error occurred, otherwise the Propstats - // collectively contain one Property for each proposed patch Property. If - // all patches succeed, Patch returns a slice of length one and a Propstat - // element with a 200 OK HTTP status code. If none succeed, for reasons - // other than an internal server error, no Propstat has status 200 OK. - // - // For more details on when various HTTP status codes apply, see - // http://www.webdav.org/specs/rfc4918.html#PROPPATCH-status - Patch([]Proppatch) ([]Propstat, error) -} - -// liveProps contains all supported, protected DAV: properties. -var liveProps = map[xml.Name]struct { - // findFn implements the propfind function of this property. If nil, - // it indicates a hidden property. - findFn func(context.Context, FileSystem, LockSystem, string, os.FileInfo) (string, error) - // dir is true if the property applies to directories. - dir bool -}{ - {Space: "DAV:", Local: "resourcetype"}: { - findFn: findResourceType, - dir: true, - }, - {Space: "DAV:", Local: "displayname"}: { - findFn: findDisplayName, - dir: true, - }, - {Space: "DAV:", Local: "getcontentlength"}: { - findFn: findContentLength, - dir: false, - }, - {Space: "DAV:", Local: "getlastmodified"}: { - findFn: findLastModified, - // http://webdav.org/specs/rfc4918.html#PROPERTY_getlastmodified - // suggests that getlastmodified should only apply to GETable - // resources, and this package does not support GET on directories. - // - // Nonetheless, some WebDAV clients expect child directories to be - // sortable by getlastmodified date, so this value is true, not false. - // See golang.org/issue/15334. - dir: true, - }, - {Space: "DAV:", Local: "creationdate"}: { - findFn: nil, - dir: false, - }, - {Space: "DAV:", Local: "getcontentlanguage"}: { - findFn: nil, - dir: false, - }, - {Space: "DAV:", Local: "getcontenttype"}: { - findFn: findContentType, - dir: false, - }, - {Space: "DAV:", Local: "getetag"}: { - findFn: findETag, - // findETag implements ETag as the concatenated hex values of a file's - // modification time and size. This is not a reliable synchronization - // mechanism for directories, so we do not advertise getetag for DAV - // collections. - dir: false, - }, - - // TODO: The lockdiscovery property requires LockSystem to list the - // active locks on a resource. - {Space: "DAV:", Local: "lockdiscovery"}: {}, - {Space: "DAV:", Local: "supportedlock"}: { - findFn: findSupportedLock, - dir: true, - }, -} - -// TODO(nigeltao) merge props and allprop? - -// Props returns the status of the properties named pnames for resource name. -// -// Each Propstat has a unique status and each property name will only be part -// of one Propstat element. -func props(ctx context.Context, fs FileSystem, ls LockSystem, name string, pnames []xml.Name) ([]Propstat, error) { - f, err := fs.OpenFile(ctx, name, os.O_RDONLY, 0) - if err != nil { - return nil, err - } - defer f.Close() - fi, err := f.Stat() - if err != nil { - return nil, err - } - isDir := fi.IsDir() - - var deadProps map[xml.Name]Property - if dph, ok := f.(DeadPropsHolder); ok { - deadProps, err = dph.DeadProps() - if err != nil { - return nil, err - } - } - - pstatOK := Propstat{Status: http.StatusOK} - pstatNotFound := Propstat{Status: http.StatusNotFound} - for _, pn := range pnames { - // If this file has dead properties, check if they contain pn. - if dp, ok := deadProps[pn]; ok { - pstatOK.Props = append(pstatOK.Props, dp) - continue - } - // Otherwise, it must either be a live property or we don't know it. - if prop := liveProps[pn]; prop.findFn != nil && (prop.dir || !isDir) { - innerXML, err := prop.findFn(ctx, fs, ls, name, fi) - if err != nil { - return nil, err - } - pstatOK.Props = append(pstatOK.Props, Property{ - XMLName: pn, - InnerXML: []byte(innerXML), - }) - } else { - pstatNotFound.Props = append(pstatNotFound.Props, Property{ - XMLName: pn, - }) - } - } - return makePropstats(pstatOK, pstatNotFound), nil -} - -// Propnames returns the property names defined for resource name. -func propnames(ctx context.Context, fs FileSystem, ls LockSystem, name string) ([]xml.Name, error) { - f, err := fs.OpenFile(ctx, name, os.O_RDONLY, 0) - if err != nil { - return nil, err - } - defer f.Close() - fi, err := f.Stat() - if err != nil { - return nil, err - } - isDir := fi.IsDir() - - var deadProps map[xml.Name]Property - if dph, ok := f.(DeadPropsHolder); ok { - deadProps, err = dph.DeadProps() - if err != nil { - return nil, err - } - } - - pnames := make([]xml.Name, 0, len(liveProps)+len(deadProps)) - for pn, prop := range liveProps { - if prop.findFn != nil && (prop.dir || !isDir) { - pnames = append(pnames, pn) - } - } - for pn := range deadProps { - pnames = append(pnames, pn) - } - return pnames, nil -} - -// Allprop returns the properties defined for resource name and the properties -// named in include. -// -// Note that RFC 4918 defines 'allprop' to return the DAV: properties defined -// within the RFC plus dead properties. Other live properties should only be -// returned if they are named in 'include'. -// -// See http://www.webdav.org/specs/rfc4918.html#METHOD_PROPFIND -func allprop(ctx context.Context, fs FileSystem, ls LockSystem, name string, include []xml.Name) ([]Propstat, error) { - pnames, err := propnames(ctx, fs, ls, name) - if err != nil { - return nil, err - } - // Add names from include if they are not already covered in pnames. - nameset := make(map[xml.Name]bool) - for _, pn := range pnames { - nameset[pn] = true - } - for _, pn := range include { - if !nameset[pn] { - pnames = append(pnames, pn) - } - } - return props(ctx, fs, ls, name, pnames) -} - -// Patch patches the properties of resource name. The return values are -// constrained in the same manner as DeadPropsHolder.Patch. -func patch(ctx context.Context, fs FileSystem, ls LockSystem, name string, patches []Proppatch) ([]Propstat, error) { - conflict := false -loop: - for _, patch := range patches { - for _, p := range patch.Props { - if _, ok := liveProps[p.XMLName]; ok { - conflict = true - break loop - } - } - } - if conflict { - pstatForbidden := Propstat{ - Status: http.StatusForbidden, - XMLError: `<D:cannot-modify-protected-property xmlns:D="DAV:"/>`, - } - pstatFailedDep := Propstat{ - Status: StatusFailedDependency, - } - for _, patch := range patches { - for _, p := range patch.Props { - if _, ok := liveProps[p.XMLName]; ok { - pstatForbidden.Props = append(pstatForbidden.Props, Property{XMLName: p.XMLName}) - } else { - pstatFailedDep.Props = append(pstatFailedDep.Props, Property{XMLName: p.XMLName}) - } - } - } - return makePropstats(pstatForbidden, pstatFailedDep), nil - } - - f, err := fs.OpenFile(ctx, name, os.O_RDWR, 0) - if err != nil { - return nil, err - } - defer f.Close() - if dph, ok := f.(DeadPropsHolder); ok { - ret, err := dph.Patch(patches) - if err != nil { - return nil, err - } - // http://www.webdav.org/specs/rfc4918.html#ELEMENT_propstat says that - // "The contents of the prop XML element must only list the names of - // properties to which the result in the status element applies." - for _, pstat := range ret { - for i, p := range pstat.Props { - pstat.Props[i] = Property{XMLName: p.XMLName} - } - } - return ret, nil - } - // The file doesn't implement the optional DeadPropsHolder interface, so - // all patches are forbidden. - pstat := Propstat{Status: http.StatusForbidden} - for _, patch := range patches { - for _, p := range patch.Props { - pstat.Props = append(pstat.Props, Property{XMLName: p.XMLName}) - } - } - return []Propstat{pstat}, nil -} - -func escapeXML(s string) string { - for i := 0; i < len(s); i++ { - // As an optimization, if s contains only ASCII letters, digits or a - // few special characters, the escaped value is s itself and we don't - // need to allocate a buffer and convert between string and []byte. - switch c := s[i]; { - case c == ' ' || c == '_' || - ('+' <= c && c <= '9') || // Digits as well as + , - . and / - ('A' <= c && c <= 'Z') || - ('a' <= c && c <= 'z'): - continue - } - // Otherwise, go through the full escaping process. - var buf bytes.Buffer - xml.EscapeText(&buf, []byte(s)) - return buf.String() - } - return s -} - -func findResourceType(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) { - if fi.IsDir() { - return `<D:collection xmlns:D="DAV:"/>`, nil - } - return "", nil -} - -func findDisplayName(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) { - if slashClean(name) == "/" { - // Hide the real name of a possibly prefixed root directory. - return "", nil - } - return escapeXML(fi.Name()), nil -} - -func findContentLength(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) { - return strconv.FormatInt(fi.Size(), 10), nil -} - -func findLastModified(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) { - return fi.ModTime().Format(http.TimeFormat), nil -} - -func findContentType(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) { - f, err := fs.OpenFile(ctx, name, os.O_RDONLY, 0) - if err != nil { - return "", err - } - defer f.Close() - // This implementation is based on serveContent's code in the standard net/http package. - ctype := mime.TypeByExtension(filepath.Ext(name)) - if ctype != "" { - return ctype, nil - } - // Read a chunk to decide between utf-8 text and binary. - var buf [512]byte - n, err := io.ReadFull(f, buf[:]) - if err != nil && err != io.EOF && err != io.ErrUnexpectedEOF { - return "", err - } - ctype = http.DetectContentType(buf[:n]) - // Rewind file. - _, err = f.Seek(0, os.SEEK_SET) - return ctype, err -} - -func findETag(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) { - // The Apache http 2.4 web server by default concatenates the - // modification time and size of a file. We replicate the heuristic - // with nanosecond granularity. - return fmt.Sprintf(`"%x%x"`, fi.ModTime().UnixNano(), fi.Size()), nil -} - -func findSupportedLock(ctx context.Context, fs FileSystem, ls LockSystem, name string, fi os.FileInfo) (string, error) { - return `` + - `<D:lockentry xmlns:D="DAV:">` + - `<D:lockscope><D:exclusive/></D:lockscope>` + - `<D:locktype><D:write/></D:locktype>` + - `</D:lockentry>`, nil -} diff --git a/vendor/golang.org/x/net/webdav/prop_test.go b/vendor/golang.org/x/net/webdav/prop_test.go deleted file mode 100644 index 57d0e826..00000000 --- a/vendor/golang.org/x/net/webdav/prop_test.go +++ /dev/null @@ -1,613 +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 webdav - -import ( - "encoding/xml" - "fmt" - "net/http" - "os" - "reflect" - "sort" - "testing" - - "golang.org/x/net/context" -) - -func TestMemPS(t *testing.T) { - ctx := context.Background() - // calcProps calculates the getlastmodified and getetag DAV: property - // values in pstats for resource name in file-system fs. - calcProps := func(name string, fs FileSystem, ls LockSystem, pstats []Propstat) error { - fi, err := fs.Stat(ctx, name) - if err != nil { - return err - } - for _, pst := range pstats { - for i, p := range pst.Props { - switch p.XMLName { - case xml.Name{Space: "DAV:", Local: "getlastmodified"}: - p.InnerXML = []byte(fi.ModTime().Format(http.TimeFormat)) - pst.Props[i] = p - case xml.Name{Space: "DAV:", Local: "getetag"}: - if fi.IsDir() { - continue - } - etag, err := findETag(ctx, fs, ls, name, fi) - if err != nil { - return err - } - p.InnerXML = []byte(etag) - pst.Props[i] = p - } - } - } - return nil - } - - const ( - lockEntry = `` + - `<D:lockentry xmlns:D="DAV:">` + - `<D:lockscope><D:exclusive/></D:lockscope>` + - `<D:locktype><D:write/></D:locktype>` + - `</D:lockentry>` - statForbiddenError = `<D:cannot-modify-protected-property xmlns:D="DAV:"/>` - ) - - type propOp struct { - op string - name string - pnames []xml.Name - patches []Proppatch - wantPnames []xml.Name - wantPropstats []Propstat - } - - testCases := []struct { - desc string - noDeadProps bool - buildfs []string - propOp []propOp - }{{ - desc: "propname", - buildfs: []string{"mkdir /dir", "touch /file"}, - propOp: []propOp{{ - op: "propname", - name: "/dir", - wantPnames: []xml.Name{ - {Space: "DAV:", Local: "resourcetype"}, - {Space: "DAV:", Local: "displayname"}, - {Space: "DAV:", Local: "supportedlock"}, - {Space: "DAV:", Local: "getlastmodified"}, - }, - }, { - op: "propname", - name: "/file", - wantPnames: []xml.Name{ - {Space: "DAV:", Local: "resourcetype"}, - {Space: "DAV:", Local: "displayname"}, - {Space: "DAV:", Local: "getcontentlength"}, - {Space: "DAV:", Local: "getlastmodified"}, - {Space: "DAV:", Local: "getcontenttype"}, - {Space: "DAV:", Local: "getetag"}, - {Space: "DAV:", Local: "supportedlock"}, - }, - }}, - }, { - desc: "allprop dir and file", - buildfs: []string{"mkdir /dir", "write /file foobarbaz"}, - propOp: []propOp{{ - op: "allprop", - name: "/dir", - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "resourcetype"}, - InnerXML: []byte(`<D:collection xmlns:D="DAV:"/>`), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "displayname"}, - InnerXML: []byte("dir"), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getlastmodified"}, - InnerXML: nil, // Calculated during test. - }, { - XMLName: xml.Name{Space: "DAV:", Local: "supportedlock"}, - InnerXML: []byte(lockEntry), - }}, - }}, - }, { - op: "allprop", - name: "/file", - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "resourcetype"}, - InnerXML: []byte(""), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "displayname"}, - InnerXML: []byte("file"), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getcontentlength"}, - InnerXML: []byte("9"), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getlastmodified"}, - InnerXML: nil, // Calculated during test. - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getcontenttype"}, - InnerXML: []byte("text/plain; charset=utf-8"), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getetag"}, - InnerXML: nil, // Calculated during test. - }, { - XMLName: xml.Name{Space: "DAV:", Local: "supportedlock"}, - InnerXML: []byte(lockEntry), - }}, - }}, - }, { - op: "allprop", - name: "/file", - pnames: []xml.Name{ - {"DAV:", "resourcetype"}, - {"foo", "bar"}, - }, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "resourcetype"}, - InnerXML: []byte(""), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "displayname"}, - InnerXML: []byte("file"), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getcontentlength"}, - InnerXML: []byte("9"), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getlastmodified"}, - InnerXML: nil, // Calculated during test. - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getcontenttype"}, - InnerXML: []byte("text/plain; charset=utf-8"), - }, { - XMLName: xml.Name{Space: "DAV:", Local: "getetag"}, - InnerXML: nil, // Calculated during test. - }, { - XMLName: xml.Name{Space: "DAV:", Local: "supportedlock"}, - InnerXML: []byte(lockEntry), - }}}, { - Status: http.StatusNotFound, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}}, - }, - }}, - }, { - desc: "propfind DAV:resourcetype", - buildfs: []string{"mkdir /dir", "touch /file"}, - propOp: []propOp{{ - op: "propfind", - name: "/dir", - pnames: []xml.Name{{"DAV:", "resourcetype"}}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "resourcetype"}, - InnerXML: []byte(`<D:collection xmlns:D="DAV:"/>`), - }}, - }}, - }, { - op: "propfind", - name: "/file", - pnames: []xml.Name{{"DAV:", "resourcetype"}}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "resourcetype"}, - InnerXML: []byte(""), - }}, - }}, - }}, - }, { - desc: "propfind unsupported DAV properties", - buildfs: []string{"mkdir /dir"}, - propOp: []propOp{{ - op: "propfind", - name: "/dir", - pnames: []xml.Name{{"DAV:", "getcontentlanguage"}}, - wantPropstats: []Propstat{{ - Status: http.StatusNotFound, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "getcontentlanguage"}, - }}, - }}, - }, { - op: "propfind", - name: "/dir", - pnames: []xml.Name{{"DAV:", "creationdate"}}, - wantPropstats: []Propstat{{ - Status: http.StatusNotFound, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "creationdate"}, - }}, - }}, - }}, - }, { - desc: "propfind getetag for files but not for directories", - buildfs: []string{"mkdir /dir", "touch /file"}, - propOp: []propOp{{ - op: "propfind", - name: "/dir", - pnames: []xml.Name{{"DAV:", "getetag"}}, - wantPropstats: []Propstat{{ - Status: http.StatusNotFound, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "getetag"}, - }}, - }}, - }, { - op: "propfind", - name: "/file", - pnames: []xml.Name{{"DAV:", "getetag"}}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "getetag"}, - InnerXML: nil, // Calculated during test. - }}, - }}, - }}, - }, { - desc: "proppatch property on no-dead-properties file system", - buildfs: []string{"mkdir /dir"}, - noDeadProps: true, - propOp: []propOp{{ - op: "proppatch", - name: "/dir", - patches: []Proppatch{{ - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - wantPropstats: []Propstat{{ - Status: http.StatusForbidden, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - }, { - op: "proppatch", - name: "/dir", - patches: []Proppatch{{ - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "getetag"}, - }}, - }}, - wantPropstats: []Propstat{{ - Status: http.StatusForbidden, - XMLError: statForbiddenError, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "getetag"}, - }}, - }}, - }}, - }, { - desc: "proppatch dead property", - buildfs: []string{"mkdir /dir"}, - propOp: []propOp{{ - op: "proppatch", - name: "/dir", - patches: []Proppatch{{ - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - InnerXML: []byte("baz"), - }}, - }}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - }, { - op: "propfind", - name: "/dir", - pnames: []xml.Name{{Space: "foo", Local: "bar"}}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - InnerXML: []byte("baz"), - }}, - }}, - }}, - }, { - desc: "proppatch dead property with failed dependency", - buildfs: []string{"mkdir /dir"}, - propOp: []propOp{{ - op: "proppatch", - name: "/dir", - patches: []Proppatch{{ - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - InnerXML: []byte("baz"), - }}, - }, { - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "displayname"}, - InnerXML: []byte("xxx"), - }}, - }}, - wantPropstats: []Propstat{{ - Status: http.StatusForbidden, - XMLError: statForbiddenError, - Props: []Property{{ - XMLName: xml.Name{Space: "DAV:", Local: "displayname"}, - }}, - }, { - Status: StatusFailedDependency, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - }, { - op: "propfind", - name: "/dir", - pnames: []xml.Name{{Space: "foo", Local: "bar"}}, - wantPropstats: []Propstat{{ - Status: http.StatusNotFound, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - }}, - }, { - desc: "proppatch remove dead property", - buildfs: []string{"mkdir /dir"}, - propOp: []propOp{{ - op: "proppatch", - name: "/dir", - patches: []Proppatch{{ - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - InnerXML: []byte("baz"), - }, { - XMLName: xml.Name{Space: "spam", Local: "ham"}, - InnerXML: []byte("eggs"), - }}, - }}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }, { - XMLName: xml.Name{Space: "spam", Local: "ham"}, - }}, - }}, - }, { - op: "propfind", - name: "/dir", - pnames: []xml.Name{ - {Space: "foo", Local: "bar"}, - {Space: "spam", Local: "ham"}, - }, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - InnerXML: []byte("baz"), - }, { - XMLName: xml.Name{Space: "spam", Local: "ham"}, - InnerXML: []byte("eggs"), - }}, - }}, - }, { - op: "proppatch", - name: "/dir", - patches: []Proppatch{{ - Remove: true, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - }, { - op: "propfind", - name: "/dir", - pnames: []xml.Name{ - {Space: "foo", Local: "bar"}, - {Space: "spam", Local: "ham"}, - }, - wantPropstats: []Propstat{{ - Status: http.StatusNotFound, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }, { - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "spam", Local: "ham"}, - InnerXML: []byte("eggs"), - }}, - }}, - }}, - }, { - desc: "propname with dead property", - buildfs: []string{"touch /file"}, - propOp: []propOp{{ - op: "proppatch", - name: "/file", - patches: []Proppatch{{ - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - InnerXML: []byte("baz"), - }}, - }}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - }, { - op: "propname", - name: "/file", - wantPnames: []xml.Name{ - {Space: "DAV:", Local: "resourcetype"}, - {Space: "DAV:", Local: "displayname"}, - {Space: "DAV:", Local: "getcontentlength"}, - {Space: "DAV:", Local: "getlastmodified"}, - {Space: "DAV:", Local: "getcontenttype"}, - {Space: "DAV:", Local: "getetag"}, - {Space: "DAV:", Local: "supportedlock"}, - {Space: "foo", Local: "bar"}, - }, - }}, - }, { - desc: "proppatch remove unknown dead property", - buildfs: []string{"mkdir /dir"}, - propOp: []propOp{{ - op: "proppatch", - name: "/dir", - patches: []Proppatch{{ - Remove: true, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - wantPropstats: []Propstat{{ - Status: http.StatusOK, - Props: []Property{{ - XMLName: xml.Name{Space: "foo", Local: "bar"}, - }}, - }}, - }}, - }, { - desc: "bad: propfind unknown property", - buildfs: []string{"mkdir /dir"}, - propOp: []propOp{{ - op: "propfind", - name: "/dir", - pnames: []xml.Name{{"foo:", "bar"}}, - wantPropstats: []Propstat{{ - Status: http.StatusNotFound, - Props: []Property{{ - XMLName: xml.Name{Space: "foo:", Local: "bar"}, - }}, - }}, - }}, - }} - - for _, tc := range testCases { - fs, err := buildTestFS(tc.buildfs) - if err != nil { - t.Fatalf("%s: cannot create test filesystem: %v", tc.desc, err) - } - if tc.noDeadProps { - fs = noDeadPropsFS{fs} - } - ls := NewMemLS() - for _, op := range tc.propOp { - desc := fmt.Sprintf("%s: %s %s", tc.desc, op.op, op.name) - if err = calcProps(op.name, fs, ls, op.wantPropstats); err != nil { - t.Fatalf("%s: calcProps: %v", desc, err) - } - - // Call property system. - var propstats []Propstat - switch op.op { - case "propname": - pnames, err := propnames(ctx, fs, ls, op.name) - if err != nil { - t.Errorf("%s: got error %v, want nil", desc, err) - continue - } - sort.Sort(byXMLName(pnames)) - sort.Sort(byXMLName(op.wantPnames)) - if !reflect.DeepEqual(pnames, op.wantPnames) { - t.Errorf("%s: pnames\ngot %q\nwant %q", desc, pnames, op.wantPnames) - } - continue - case "allprop": - propstats, err = allprop(ctx, fs, ls, op.name, op.pnames) - case "propfind": - propstats, err = props(ctx, fs, ls, op.name, op.pnames) - case "proppatch": - propstats, err = patch(ctx, fs, ls, op.name, op.patches) - default: - t.Fatalf("%s: %s not implemented", desc, op.op) - } - if err != nil { - t.Errorf("%s: got error %v, want nil", desc, err) - continue - } - // Compare return values from allprop, propfind or proppatch. - for _, pst := range propstats { - sort.Sort(byPropname(pst.Props)) - } - for _, pst := range op.wantPropstats { - sort.Sort(byPropname(pst.Props)) - } - sort.Sort(byStatus(propstats)) - sort.Sort(byStatus(op.wantPropstats)) - if !reflect.DeepEqual(propstats, op.wantPropstats) { - t.Errorf("%s: propstat\ngot %q\nwant %q", desc, propstats, op.wantPropstats) - } - } - } -} - -func cmpXMLName(a, b xml.Name) bool { - if a.Space != b.Space { - return a.Space < b.Space - } - return a.Local < b.Local -} - -type byXMLName []xml.Name - -func (b byXMLName) Len() int { return len(b) } -func (b byXMLName) Swap(i, j int) { b[i], b[j] = b[j], b[i] } -func (b byXMLName) Less(i, j int) bool { return cmpXMLName(b[i], b[j]) } - -type byPropname []Property - -func (b byPropname) Len() int { return len(b) } -func (b byPropname) Swap(i, j int) { b[i], b[j] = b[j], b[i] } -func (b byPropname) Less(i, j int) bool { return cmpXMLName(b[i].XMLName, b[j].XMLName) } - -type byStatus []Propstat - -func (b byStatus) Len() int { return len(b) } -func (b byStatus) Swap(i, j int) { b[i], b[j] = b[j], b[i] } -func (b byStatus) Less(i, j int) bool { return b[i].Status < b[j].Status } - -type noDeadPropsFS struct { - FileSystem -} - -func (fs noDeadPropsFS) OpenFile(ctx context.Context, name string, flag int, perm os.FileMode) (File, error) { - f, err := fs.FileSystem.OpenFile(ctx, name, flag, perm) - if err != nil { - return nil, err - } - return noDeadPropsFile{f}, nil -} - -// noDeadPropsFile wraps a File but strips any optional DeadPropsHolder methods -// provided by the underlying File implementation. -type noDeadPropsFile struct { - f File -} - -func (f noDeadPropsFile) Close() error { return f.f.Close() } -func (f noDeadPropsFile) Read(p []byte) (int, error) { return f.f.Read(p) } -func (f noDeadPropsFile) Readdir(count int) ([]os.FileInfo, error) { return f.f.Readdir(count) } -func (f noDeadPropsFile) Seek(off int64, whence int) (int64, error) { return f.f.Seek(off, whence) } -func (f noDeadPropsFile) Stat() (os.FileInfo, error) { return f.f.Stat() } -func (f noDeadPropsFile) Write(p []byte) (int, error) { return f.f.Write(p) } diff --git a/vendor/golang.org/x/net/webdav/webdav.go b/vendor/golang.org/x/net/webdav/webdav.go deleted file mode 100644 index 7b56687f..00000000 --- a/vendor/golang.org/x/net/webdav/webdav.go +++ /dev/null @@ -1,702 +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 webdav provides a WebDAV server implementation. -package webdav // import "golang.org/x/net/webdav" - -import ( - "errors" - "fmt" - "io" - "net/http" - "net/url" - "os" - "path" - "strings" - "time" -) - -type Handler struct { - // Prefix is the URL path prefix to strip from WebDAV resource paths. - Prefix string - // FileSystem is the virtual file system. - FileSystem FileSystem - // LockSystem is the lock management system. - LockSystem LockSystem - // Logger is an optional error logger. If non-nil, it will be called - // for all HTTP requests. - Logger func(*http.Request, error) -} - -func (h *Handler) stripPrefix(p string) (string, int, error) { - if h.Prefix == "" { - return p, http.StatusOK, nil - } - if r := strings.TrimPrefix(p, h.Prefix); len(r) < len(p) { - return r, http.StatusOK, nil - } - return p, http.StatusNotFound, errPrefixMismatch -} - -func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - status, err := http.StatusBadRequest, errUnsupportedMethod - if h.FileSystem == nil { - status, err = http.StatusInternalServerError, errNoFileSystem - } else if h.LockSystem == nil { - status, err = http.StatusInternalServerError, errNoLockSystem - } else { - switch r.Method { - case "OPTIONS": - status, err = h.handleOptions(w, r) - case "GET", "HEAD", "POST": - status, err = h.handleGetHeadPost(w, r) - case "DELETE": - status, err = h.handleDelete(w, r) - case "PUT": - status, err = h.handlePut(w, r) - case "MKCOL": - status, err = h.handleMkcol(w, r) - case "COPY", "MOVE": - status, err = h.handleCopyMove(w, r) - case "LOCK": - status, err = h.handleLock(w, r) - case "UNLOCK": - status, err = h.handleUnlock(w, r) - case "PROPFIND": - status, err = h.handlePropfind(w, r) - case "PROPPATCH": - status, err = h.handleProppatch(w, r) - } - } - - if status != 0 { - w.WriteHeader(status) - if status != http.StatusNoContent { - w.Write([]byte(StatusText(status))) - } - } - if h.Logger != nil { - h.Logger(r, err) - } -} - -func (h *Handler) lock(now time.Time, root string) (token string, status int, err error) { - token, err = h.LockSystem.Create(now, LockDetails{ - Root: root, - Duration: infiniteTimeout, - ZeroDepth: true, - }) - if err != nil { - if err == ErrLocked { - return "", StatusLocked, err - } - return "", http.StatusInternalServerError, err - } - return token, 0, nil -} - -func (h *Handler) confirmLocks(r *http.Request, src, dst string) (release func(), status int, err error) { - hdr := r.Header.Get("If") - if hdr == "" { - // An empty If header means that the client hasn't previously created locks. - // Even if this client doesn't care about locks, we still need to check that - // the resources aren't locked by another client, so we create temporary - // locks that would conflict with another client's locks. These temporary - // locks are unlocked at the end of the HTTP request. - now, srcToken, dstToken := time.Now(), "", "" - if src != "" { - srcToken, status, err = h.lock(now, src) - if err != nil { - return nil, status, err - } - } - if dst != "" { - dstToken, status, err = h.lock(now, dst) - if err != nil { - if srcToken != "" { - h.LockSystem.Unlock(now, srcToken) - } - return nil, status, err - } - } - - return func() { - if dstToken != "" { - h.LockSystem.Unlock(now, dstToken) - } - if srcToken != "" { - h.LockSystem.Unlock(now, srcToken) - } - }, 0, nil - } - - ih, ok := parseIfHeader(hdr) - if !ok { - return nil, http.StatusBadRequest, errInvalidIfHeader - } - // ih is a disjunction (OR) of ifLists, so any ifList will do. - for _, l := range ih.lists { - lsrc := l.resourceTag - if lsrc == "" { - lsrc = src - } else { - u, err := url.Parse(lsrc) - if err != nil { - continue - } - if u.Host != r.Host { - continue - } - lsrc, status, err = h.stripPrefix(u.Path) - if err != nil { - return nil, status, err - } - } - release, err = h.LockSystem.Confirm(time.Now(), lsrc, dst, l.conditions...) - if err == ErrConfirmationFailed { - continue - } - if err != nil { - return nil, http.StatusInternalServerError, err - } - return release, 0, nil - } - // Section 10.4.1 says that "If this header is evaluated and all state lists - // fail, then the request must fail with a 412 (Precondition Failed) status." - // We follow the spec even though the cond_put_corrupt_token test case from - // the litmus test warns on seeing a 412 instead of a 423 (Locked). - return nil, http.StatusPreconditionFailed, ErrLocked -} - -func (h *Handler) handleOptions(w http.ResponseWriter, r *http.Request) (status int, err error) { - reqPath, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - ctx := getContext(r) - allow := "OPTIONS, LOCK, PUT, MKCOL" - if fi, err := h.FileSystem.Stat(ctx, reqPath); err == nil { - if fi.IsDir() { - allow = "OPTIONS, LOCK, DELETE, PROPPATCH, COPY, MOVE, UNLOCK, PROPFIND" - } else { - allow = "OPTIONS, LOCK, GET, HEAD, POST, DELETE, PROPPATCH, COPY, MOVE, UNLOCK, PROPFIND, PUT" - } - } - w.Header().Set("Allow", allow) - // http://www.webdav.org/specs/rfc4918.html#dav.compliance.classes - w.Header().Set("DAV", "1, 2") - // http://msdn.microsoft.com/en-au/library/cc250217.aspx - w.Header().Set("MS-Author-Via", "DAV") - return 0, nil -} - -func (h *Handler) handleGetHeadPost(w http.ResponseWriter, r *http.Request) (status int, err error) { - reqPath, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - // TODO: check locks for read-only access?? - ctx := getContext(r) - f, err := h.FileSystem.OpenFile(ctx, reqPath, os.O_RDONLY, 0) - if err != nil { - return http.StatusNotFound, err - } - defer f.Close() - fi, err := f.Stat() - if err != nil { - return http.StatusNotFound, err - } - if fi.IsDir() { - return http.StatusMethodNotAllowed, nil - } - etag, err := findETag(ctx, h.FileSystem, h.LockSystem, reqPath, fi) - if err != nil { - return http.StatusInternalServerError, err - } - w.Header().Set("ETag", etag) - // Let ServeContent determine the Content-Type header. - http.ServeContent(w, r, reqPath, fi.ModTime(), f) - return 0, nil -} - -func (h *Handler) handleDelete(w http.ResponseWriter, r *http.Request) (status int, err error) { - reqPath, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - release, status, err := h.confirmLocks(r, reqPath, "") - if err != nil { - return status, err - } - defer release() - - ctx := getContext(r) - - // TODO: return MultiStatus where appropriate. - - // "godoc os RemoveAll" says that "If the path does not exist, RemoveAll - // returns nil (no error)." WebDAV semantics are that it should return a - // "404 Not Found". We therefore have to Stat before we RemoveAll. - if _, err := h.FileSystem.Stat(ctx, reqPath); err != nil { - if os.IsNotExist(err) { - return http.StatusNotFound, err - } - return http.StatusMethodNotAllowed, err - } - if err := h.FileSystem.RemoveAll(ctx, reqPath); err != nil { - return http.StatusMethodNotAllowed, err - } - return http.StatusNoContent, nil -} - -func (h *Handler) handlePut(w http.ResponseWriter, r *http.Request) (status int, err error) { - reqPath, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - release, status, err := h.confirmLocks(r, reqPath, "") - if err != nil { - return status, err - } - defer release() - // TODO(rost): Support the If-Match, If-None-Match headers? See bradfitz' - // comments in http.checkEtag. - ctx := getContext(r) - - f, err := h.FileSystem.OpenFile(ctx, reqPath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - if err != nil { - return http.StatusNotFound, err - } - _, copyErr := io.Copy(f, r.Body) - fi, statErr := f.Stat() - closeErr := f.Close() - // TODO(rost): Returning 405 Method Not Allowed might not be appropriate. - if copyErr != nil { - return http.StatusMethodNotAllowed, copyErr - } - if statErr != nil { - return http.StatusMethodNotAllowed, statErr - } - if closeErr != nil { - return http.StatusMethodNotAllowed, closeErr - } - etag, err := findETag(ctx, h.FileSystem, h.LockSystem, reqPath, fi) - if err != nil { - return http.StatusInternalServerError, err - } - w.Header().Set("ETag", etag) - return http.StatusCreated, nil -} - -func (h *Handler) handleMkcol(w http.ResponseWriter, r *http.Request) (status int, err error) { - reqPath, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - release, status, err := h.confirmLocks(r, reqPath, "") - if err != nil { - return status, err - } - defer release() - - ctx := getContext(r) - - if r.ContentLength > 0 { - return http.StatusUnsupportedMediaType, nil - } - if err := h.FileSystem.Mkdir(ctx, reqPath, 0777); err != nil { - if os.IsNotExist(err) { - return http.StatusConflict, err - } - return http.StatusMethodNotAllowed, err - } - return http.StatusCreated, nil -} - -func (h *Handler) handleCopyMove(w http.ResponseWriter, r *http.Request) (status int, err error) { - hdr := r.Header.Get("Destination") - if hdr == "" { - return http.StatusBadRequest, errInvalidDestination - } - u, err := url.Parse(hdr) - if err != nil { - return http.StatusBadRequest, errInvalidDestination - } - if u.Host != r.Host { - return http.StatusBadGateway, errInvalidDestination - } - - src, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - - dst, status, err := h.stripPrefix(u.Path) - if err != nil { - return status, err - } - - if dst == "" { - return http.StatusBadGateway, errInvalidDestination - } - if dst == src { - return http.StatusForbidden, errDestinationEqualsSource - } - - ctx := getContext(r) - - if r.Method == "COPY" { - // Section 7.5.1 says that a COPY only needs to lock the destination, - // not both destination and source. Strictly speaking, this is racy, - // even though a COPY doesn't modify the source, if a concurrent - // operation modifies the source. However, the litmus test explicitly - // checks that COPYing a locked-by-another source is OK. - release, status, err := h.confirmLocks(r, "", dst) - if err != nil { - return status, err - } - defer release() - - // Section 9.8.3 says that "The COPY method on a collection without a Depth - // header must act as if a Depth header with value "infinity" was included". - depth := infiniteDepth - if hdr := r.Header.Get("Depth"); hdr != "" { - depth = parseDepth(hdr) - if depth != 0 && depth != infiniteDepth { - // Section 9.8.3 says that "A client may submit a Depth header on a - // COPY on a collection with a value of "0" or "infinity"." - return http.StatusBadRequest, errInvalidDepth - } - } - return copyFiles(ctx, h.FileSystem, src, dst, r.Header.Get("Overwrite") != "F", depth, 0) - } - - release, status, err := h.confirmLocks(r, src, dst) - if err != nil { - return status, err - } - defer release() - - // Section 9.9.2 says that "The MOVE method on a collection must act as if - // a "Depth: infinity" header was used on it. A client must not submit a - // Depth header on a MOVE on a collection with any value but "infinity"." - if hdr := r.Header.Get("Depth"); hdr != "" { - if parseDepth(hdr) != infiniteDepth { - return http.StatusBadRequest, errInvalidDepth - } - } - return moveFiles(ctx, h.FileSystem, src, dst, r.Header.Get("Overwrite") == "T") -} - -func (h *Handler) handleLock(w http.ResponseWriter, r *http.Request) (retStatus int, retErr error) { - duration, err := parseTimeout(r.Header.Get("Timeout")) - if err != nil { - return http.StatusBadRequest, err - } - li, status, err := readLockInfo(r.Body) - if err != nil { - return status, err - } - - ctx := getContext(r) - token, ld, now, created := "", LockDetails{}, time.Now(), false - if li == (lockInfo{}) { - // An empty lockInfo means to refresh the lock. - ih, ok := parseIfHeader(r.Header.Get("If")) - if !ok { - return http.StatusBadRequest, errInvalidIfHeader - } - if len(ih.lists) == 1 && len(ih.lists[0].conditions) == 1 { - token = ih.lists[0].conditions[0].Token - } - if token == "" { - return http.StatusBadRequest, errInvalidLockToken - } - ld, err = h.LockSystem.Refresh(now, token, duration) - if err != nil { - if err == ErrNoSuchLock { - return http.StatusPreconditionFailed, err - } - return http.StatusInternalServerError, err - } - - } else { - // Section 9.10.3 says that "If no Depth header is submitted on a LOCK request, - // then the request MUST act as if a "Depth:infinity" had been submitted." - depth := infiniteDepth - if hdr := r.Header.Get("Depth"); hdr != "" { - depth = parseDepth(hdr) - if depth != 0 && depth != infiniteDepth { - // Section 9.10.3 says that "Values other than 0 or infinity must not be - // used with the Depth header on a LOCK method". - return http.StatusBadRequest, errInvalidDepth - } - } - reqPath, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - ld = LockDetails{ - Root: reqPath, - Duration: duration, - OwnerXML: li.Owner.InnerXML, - ZeroDepth: depth == 0, - } - token, err = h.LockSystem.Create(now, ld) - if err != nil { - if err == ErrLocked { - return StatusLocked, err - } - return http.StatusInternalServerError, err - } - defer func() { - if retErr != nil { - h.LockSystem.Unlock(now, token) - } - }() - - // Create the resource if it didn't previously exist. - if _, err := h.FileSystem.Stat(ctx, reqPath); err != nil { - f, err := h.FileSystem.OpenFile(ctx, reqPath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) - if err != nil { - // TODO: detect missing intermediate dirs and return http.StatusConflict? - return http.StatusInternalServerError, err - } - f.Close() - created = true - } - - // http://www.webdav.org/specs/rfc4918.html#HEADER_Lock-Token says that the - // Lock-Token value is a Coded-URL. We add angle brackets. - w.Header().Set("Lock-Token", "<"+token+">") - } - - w.Header().Set("Content-Type", "application/xml; charset=utf-8") - if created { - // This is "w.WriteHeader(http.StatusCreated)" and not "return - // http.StatusCreated, nil" because we write our own (XML) response to w - // and Handler.ServeHTTP would otherwise write "Created". - w.WriteHeader(http.StatusCreated) - } - writeLockInfo(w, token, ld) - return 0, nil -} - -func (h *Handler) handleUnlock(w http.ResponseWriter, r *http.Request) (status int, err error) { - // http://www.webdav.org/specs/rfc4918.html#HEADER_Lock-Token says that the - // Lock-Token value is a Coded-URL. We strip its angle brackets. - t := r.Header.Get("Lock-Token") - if len(t) < 2 || t[0] != '<' || t[len(t)-1] != '>' { - return http.StatusBadRequest, errInvalidLockToken - } - t = t[1 : len(t)-1] - - switch err = h.LockSystem.Unlock(time.Now(), t); err { - case nil: - return http.StatusNoContent, err - case ErrForbidden: - return http.StatusForbidden, err - case ErrLocked: - return StatusLocked, err - case ErrNoSuchLock: - return http.StatusConflict, err - default: - return http.StatusInternalServerError, err - } -} - -func (h *Handler) handlePropfind(w http.ResponseWriter, r *http.Request) (status int, err error) { - reqPath, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - ctx := getContext(r) - fi, err := h.FileSystem.Stat(ctx, reqPath) - if err != nil { - if os.IsNotExist(err) { - return http.StatusNotFound, err - } - return http.StatusMethodNotAllowed, err - } - depth := infiniteDepth - if hdr := r.Header.Get("Depth"); hdr != "" { - depth = parseDepth(hdr) - if depth == invalidDepth { - return http.StatusBadRequest, errInvalidDepth - } - } - pf, status, err := readPropfind(r.Body) - if err != nil { - return status, err - } - - mw := multistatusWriter{w: w} - - walkFn := func(reqPath string, info os.FileInfo, err error) error { - if err != nil { - return err - } - var pstats []Propstat - if pf.Propname != nil { - pnames, err := propnames(ctx, h.FileSystem, h.LockSystem, reqPath) - if err != nil { - return err - } - pstat := Propstat{Status: http.StatusOK} - for _, xmlname := range pnames { - pstat.Props = append(pstat.Props, Property{XMLName: xmlname}) - } - pstats = append(pstats, pstat) - } else if pf.Allprop != nil { - pstats, err = allprop(ctx, h.FileSystem, h.LockSystem, reqPath, pf.Prop) - } else { - pstats, err = props(ctx, h.FileSystem, h.LockSystem, reqPath, pf.Prop) - } - if err != nil { - return err - } - return mw.write(makePropstatResponse(path.Join(h.Prefix, reqPath), pstats)) - } - - walkErr := walkFS(ctx, h.FileSystem, depth, reqPath, fi, walkFn) - closeErr := mw.close() - if walkErr != nil { - return http.StatusInternalServerError, walkErr - } - if closeErr != nil { - return http.StatusInternalServerError, closeErr - } - return 0, nil -} - -func (h *Handler) handleProppatch(w http.ResponseWriter, r *http.Request) (status int, err error) { - reqPath, status, err := h.stripPrefix(r.URL.Path) - if err != nil { - return status, err - } - release, status, err := h.confirmLocks(r, reqPath, "") - if err != nil { - return status, err - } - defer release() - - ctx := getContext(r) - - if _, err := h.FileSystem.Stat(ctx, reqPath); err != nil { - if os.IsNotExist(err) { - return http.StatusNotFound, err - } - return http.StatusMethodNotAllowed, err - } - patches, status, err := readProppatch(r.Body) - if err != nil { - return status, err - } - pstats, err := patch(ctx, h.FileSystem, h.LockSystem, reqPath, patches) - if err != nil { - return http.StatusInternalServerError, err - } - mw := multistatusWriter{w: w} - writeErr := mw.write(makePropstatResponse(r.URL.Path, pstats)) - closeErr := mw.close() - if writeErr != nil { - return http.StatusInternalServerError, writeErr - } - if closeErr != nil { - return http.StatusInternalServerError, closeErr - } - return 0, nil -} - -func makePropstatResponse(href string, pstats []Propstat) *response { - resp := response{ - Href: []string{(&url.URL{Path: href}).EscapedPath()}, - Propstat: make([]propstat, 0, len(pstats)), - } - for _, p := range pstats { - var xmlErr *xmlError - if p.XMLError != "" { - xmlErr = &xmlError{InnerXML: []byte(p.XMLError)} - } - resp.Propstat = append(resp.Propstat, propstat{ - Status: fmt.Sprintf("HTTP/1.1 %d %s", p.Status, StatusText(p.Status)), - Prop: p.Props, - ResponseDescription: p.ResponseDescription, - Error: xmlErr, - }) - } - return &resp -} - -const ( - infiniteDepth = -1 - invalidDepth = -2 -) - -// parseDepth maps the strings "0", "1" and "infinity" to 0, 1 and -// infiniteDepth. Parsing any other string returns invalidDepth. -// -// Different WebDAV methods have further constraints on valid depths: -// - PROPFIND has no further restrictions, as per section 9.1. -// - COPY accepts only "0" or "infinity", as per section 9.8.3. -// - MOVE accepts only "infinity", as per section 9.9.2. -// - LOCK accepts only "0" or "infinity", as per section 9.10.3. -// These constraints are enforced by the handleXxx methods. -func parseDepth(s string) int { - switch s { - case "0": - return 0 - case "1": - return 1 - case "infinity": - return infiniteDepth - } - return invalidDepth -} - -// http://www.webdav.org/specs/rfc4918.html#status.code.extensions.to.http11 -const ( - StatusMulti = 207 - StatusUnprocessableEntity = 422 - StatusLocked = 423 - StatusFailedDependency = 424 - StatusInsufficientStorage = 507 -) - -func StatusText(code int) string { - switch code { - case StatusMulti: - return "Multi-Status" - case StatusUnprocessableEntity: - return "Unprocessable Entity" - case StatusLocked: - return "Locked" - case StatusFailedDependency: - return "Failed Dependency" - case StatusInsufficientStorage: - return "Insufficient Storage" - } - return http.StatusText(code) -} - -var ( - errDestinationEqualsSource = errors.New("webdav: destination equals source") - errDirectoryNotEmpty = errors.New("webdav: directory not empty") - errInvalidDepth = errors.New("webdav: invalid depth") - errInvalidDestination = errors.New("webdav: invalid destination") - errInvalidIfHeader = errors.New("webdav: invalid If header") - errInvalidLockInfo = errors.New("webdav: invalid lock info") - errInvalidLockToken = errors.New("webdav: invalid lock token") - errInvalidPropfind = errors.New("webdav: invalid propfind") - errInvalidProppatch = errors.New("webdav: invalid proppatch") - errInvalidResponse = errors.New("webdav: invalid response") - errInvalidTimeout = errors.New("webdav: invalid timeout") - errNoFileSystem = errors.New("webdav: no file system") - errNoLockSystem = errors.New("webdav: no lock system") - errNotADirectory = errors.New("webdav: not a directory") - errPrefixMismatch = errors.New("webdav: prefix mismatch") - errRecursionTooDeep = errors.New("webdav: recursion too deep") - errUnsupportedLockInfo = errors.New("webdav: unsupported lock info") - errUnsupportedMethod = errors.New("webdav: unsupported method") -) diff --git a/vendor/golang.org/x/net/webdav/webdav_test.go b/vendor/golang.org/x/net/webdav/webdav_test.go deleted file mode 100644 index 25e0d542..00000000 --- a/vendor/golang.org/x/net/webdav/webdav_test.go +++ /dev/null @@ -1,344 +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 webdav - -import ( - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/http/httptest" - "net/url" - "os" - "reflect" - "regexp" - "sort" - "strings" - "testing" - - "golang.org/x/net/context" -) - -// TODO: add tests to check XML responses with the expected prefix path -func TestPrefix(t *testing.T) { - const dst, blah = "Destination", "blah blah blah" - - // createLockBody comes from the example in Section 9.10.7. - const createLockBody = `<?xml version="1.0" encoding="utf-8" ?> - <D:lockinfo xmlns:D='DAV:'> - <D:lockscope><D:exclusive/></D:lockscope> - <D:locktype><D:write/></D:locktype> - <D:owner> - <D:href>http://example.org/~ejw/contact.html</D:href> - </D:owner> - </D:lockinfo> - ` - - do := func(method, urlStr string, body string, wantStatusCode int, headers ...string) (http.Header, error) { - var bodyReader io.Reader - if body != "" { - bodyReader = strings.NewReader(body) - } - req, err := http.NewRequest(method, urlStr, bodyReader) - if err != nil { - return nil, err - } - for len(headers) >= 2 { - req.Header.Add(headers[0], headers[1]) - headers = headers[2:] - } - res, err := http.DefaultTransport.RoundTrip(req) - if err != nil { - return nil, err - } - defer res.Body.Close() - if res.StatusCode != wantStatusCode { - return nil, fmt.Errorf("got status code %d, want %d", res.StatusCode, wantStatusCode) - } - return res.Header, nil - } - - prefixes := []string{ - "/", - "/a/", - "/a/b/", - "/a/b/c/", - } - ctx := context.Background() - for _, prefix := range prefixes { - fs := NewMemFS() - h := &Handler{ - FileSystem: fs, - LockSystem: NewMemLS(), - } - mux := http.NewServeMux() - if prefix != "/" { - h.Prefix = prefix - } - mux.Handle(prefix, h) - srv := httptest.NewServer(mux) - defer srv.Close() - - // The script is: - // MKCOL /a - // MKCOL /a/b - // PUT /a/b/c - // COPY /a/b/c /a/b/d - // MKCOL /a/b/e - // MOVE /a/b/d /a/b/e/f - // LOCK /a/b/e/g - // PUT /a/b/e/g - // which should yield the (possibly stripped) filenames /a/b/c, - // /a/b/e/f and /a/b/e/g, plus their parent directories. - - wantA := map[string]int{ - "/": http.StatusCreated, - "/a/": http.StatusMovedPermanently, - "/a/b/": http.StatusNotFound, - "/a/b/c/": http.StatusNotFound, - }[prefix] - if _, err := do("MKCOL", srv.URL+"/a", "", wantA); err != nil { - t.Errorf("prefix=%-9q MKCOL /a: %v", prefix, err) - continue - } - - wantB := map[string]int{ - "/": http.StatusCreated, - "/a/": http.StatusCreated, - "/a/b/": http.StatusMovedPermanently, - "/a/b/c/": http.StatusNotFound, - }[prefix] - if _, err := do("MKCOL", srv.URL+"/a/b", "", wantB); err != nil { - t.Errorf("prefix=%-9q MKCOL /a/b: %v", prefix, err) - continue - } - - wantC := map[string]int{ - "/": http.StatusCreated, - "/a/": http.StatusCreated, - "/a/b/": http.StatusCreated, - "/a/b/c/": http.StatusMovedPermanently, - }[prefix] - if _, err := do("PUT", srv.URL+"/a/b/c", blah, wantC); err != nil { - t.Errorf("prefix=%-9q PUT /a/b/c: %v", prefix, err) - continue - } - - wantD := map[string]int{ - "/": http.StatusCreated, - "/a/": http.StatusCreated, - "/a/b/": http.StatusCreated, - "/a/b/c/": http.StatusMovedPermanently, - }[prefix] - if _, err := do("COPY", srv.URL+"/a/b/c", "", wantD, dst, srv.URL+"/a/b/d"); err != nil { - t.Errorf("prefix=%-9q COPY /a/b/c /a/b/d: %v", prefix, err) - continue - } - - wantE := map[string]int{ - "/": http.StatusCreated, - "/a/": http.StatusCreated, - "/a/b/": http.StatusCreated, - "/a/b/c/": http.StatusNotFound, - }[prefix] - if _, err := do("MKCOL", srv.URL+"/a/b/e", "", wantE); err != nil { - t.Errorf("prefix=%-9q MKCOL /a/b/e: %v", prefix, err) - continue - } - - wantF := map[string]int{ - "/": http.StatusCreated, - "/a/": http.StatusCreated, - "/a/b/": http.StatusCreated, - "/a/b/c/": http.StatusNotFound, - }[prefix] - if _, err := do("MOVE", srv.URL+"/a/b/d", "", wantF, dst, srv.URL+"/a/b/e/f"); err != nil { - t.Errorf("prefix=%-9q MOVE /a/b/d /a/b/e/f: %v", prefix, err) - continue - } - - var lockToken string - wantG := map[string]int{ - "/": http.StatusCreated, - "/a/": http.StatusCreated, - "/a/b/": http.StatusCreated, - "/a/b/c/": http.StatusNotFound, - }[prefix] - if h, err := do("LOCK", srv.URL+"/a/b/e/g", createLockBody, wantG); err != nil { - t.Errorf("prefix=%-9q LOCK /a/b/e/g: %v", prefix, err) - continue - } else { - lockToken = h.Get("Lock-Token") - } - - ifHeader := fmt.Sprintf("<%s/a/b/e/g> (%s)", srv.URL, lockToken) - wantH := map[string]int{ - "/": http.StatusCreated, - "/a/": http.StatusCreated, - "/a/b/": http.StatusCreated, - "/a/b/c/": http.StatusNotFound, - }[prefix] - if _, err := do("PUT", srv.URL+"/a/b/e/g", blah, wantH, "If", ifHeader); err != nil { - t.Errorf("prefix=%-9q PUT /a/b/e/g: %v", prefix, err) - continue - } - - got, err := find(ctx, nil, fs, "/") - if err != nil { - t.Errorf("prefix=%-9q find: %v", prefix, err) - continue - } - sort.Strings(got) - want := map[string][]string{ - "/": {"/", "/a", "/a/b", "/a/b/c", "/a/b/e", "/a/b/e/f", "/a/b/e/g"}, - "/a/": {"/", "/b", "/b/c", "/b/e", "/b/e/f", "/b/e/g"}, - "/a/b/": {"/", "/c", "/e", "/e/f", "/e/g"}, - "/a/b/c/": {"/"}, - }[prefix] - if !reflect.DeepEqual(got, want) { - t.Errorf("prefix=%-9q find:\ngot %v\nwant %v", prefix, got, want) - continue - } - } -} - -func TestEscapeXML(t *testing.T) { - // These test cases aren't exhaustive, and there is more than one way to - // escape e.g. a quot (as "&#34;" or "&quot;") or an apos. We presume that - // the encoding/xml package tests xml.EscapeText more thoroughly. This test - // here is just a sanity check for this package's escapeXML function, and - // its attempt to provide a fast path (and avoid a bytes.Buffer allocation) - // when escaping filenames is obviously a no-op. - testCases := map[string]string{ - "": "", - " ": " ", - "&": "&amp;", - "*": "*", - "+": "+", - ",": ",", - "-": "-", - ".": ".", - "/": "/", - "0": "0", - "9": "9", - ":": ":", - "<": "&lt;", - ">": "&gt;", - "A": "A", - "_": "_", - "a": "a", - "~": "~", - "\u0201": "\u0201", - "&amp;": "&amp;amp;", - "foo&<b/ar>baz": "foo&amp;&lt;b/ar&gt;baz", - } - - for in, want := range testCases { - if got := escapeXML(in); got != want { - t.Errorf("in=%q: got %q, want %q", in, got, want) - } - } -} - -func TestFilenameEscape(t *testing.T) { - hrefRe := regexp.MustCompile(`<D:href>([^<]*)</D:href>`) - displayNameRe := regexp.MustCompile(`<D:displayname>([^<]*)</D:displayname>`) - do := func(method, urlStr string) (string, string, error) { - req, err := http.NewRequest(method, urlStr, nil) - if err != nil { - return "", "", err - } - res, err := http.DefaultClient.Do(req) - if err != nil { - return "", "", err - } - defer res.Body.Close() - - b, err := ioutil.ReadAll(res.Body) - if err != nil { - return "", "", err - } - hrefMatch := hrefRe.FindStringSubmatch(string(b)) - if len(hrefMatch) != 2 { - return "", "", errors.New("D:href not found") - } - displayNameMatch := displayNameRe.FindStringSubmatch(string(b)) - if len(displayNameMatch) != 2 { - return "", "", errors.New("D:displayname not found") - } - - return hrefMatch[1], displayNameMatch[1], nil - } - - testCases := []struct { - name, wantHref, wantDisplayName string - }{{ - name: `/foo%bar`, - wantHref: `/foo%25bar`, - wantDisplayName: `foo%bar`, - }, { - name: `/こんにちわ世界`, - wantHref: `/%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%82%8F%E4%B8%96%E7%95%8C`, - wantDisplayName: `こんにちわ世界`, - }, { - name: `/Program Files/`, - wantHref: `/Program%20Files`, - wantDisplayName: `Program Files`, - }, { - name: `/go+lang`, - wantHref: `/go+lang`, - wantDisplayName: `go+lang`, - }, { - name: `/go&lang`, - wantHref: `/go&amp;lang`, - wantDisplayName: `go&amp;lang`, - }, { - name: `/go<lang`, - wantHref: `/go%3Clang`, - wantDisplayName: `go&lt;lang`, - }} - ctx := context.Background() - fs := NewMemFS() - for _, tc := range testCases { - if strings.HasSuffix(tc.name, "/") { - if err := fs.Mkdir(ctx, tc.name, 0755); err != nil { - t.Fatalf("name=%q: Mkdir: %v", tc.name, err) - } - } else { - f, err := fs.OpenFile(ctx, tc.name, os.O_CREATE, 0644) - if err != nil { - t.Fatalf("name=%q: OpenFile: %v", tc.name, err) - } - f.Close() - } - } - - srv := httptest.NewServer(&Handler{ - FileSystem: fs, - LockSystem: NewMemLS(), - }) - defer srv.Close() - - u, err := url.Parse(srv.URL) - if err != nil { - t.Fatal(err) - } - - for _, tc := range testCases { - u.Path = tc.name - gotHref, gotDisplayName, err := do("PROPFIND", u.String()) - if err != nil { - t.Errorf("name=%q: PROPFIND: %v", tc.name, err) - continue - } - if gotHref != tc.wantHref { - t.Errorf("name=%q: got href %q, want %q", tc.name, gotHref, tc.wantHref) - } - if gotDisplayName != tc.wantDisplayName { - t.Errorf("name=%q: got dispayname %q, want %q", tc.name, gotDisplayName, tc.wantDisplayName) - } - } -} diff --git a/vendor/golang.org/x/net/webdav/xml.go b/vendor/golang.org/x/net/webdav/xml.go deleted file mode 100644 index 790dc816..00000000 --- a/vendor/golang.org/x/net/webdav/xml.go +++ /dev/null @@ -1,519 +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 webdav - -// The XML encoding is covered by Section 14. -// http://www.webdav.org/specs/rfc4918.html#xml.element.definitions - -import ( - "bytes" - "encoding/xml" - "fmt" - "io" - "net/http" - "time" - - // As of https://go-review.googlesource.com/#/c/12772/ which was submitted - // in July 2015, this package uses an internal fork of the standard - // library's encoding/xml package, due to changes in the way namespaces - // were encoded. Such changes were introduced in the Go 1.5 cycle, but were - // rolled back in response to https://github.com/golang/go/issues/11841 - // - // However, this package's exported API, specifically the Property and - // DeadPropsHolder types, need to refer to the standard library's version - // of the xml.Name type, as code that imports this package cannot refer to - // the internal version. - // - // This file therefore imports both the internal and external versions, as - // ixml and xml, and converts between them. - // - // In the long term, this package should use the standard library's version - // only, and the internal fork deleted, once - // https://github.com/golang/go/issues/13400 is resolved. - ixml "golang.org/x/net/webdav/internal/xml" -) - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_lockinfo -type lockInfo struct { - XMLName ixml.Name `xml:"lockinfo"` - Exclusive *struct{} `xml:"lockscope>exclusive"` - Shared *struct{} `xml:"lockscope>shared"` - Write *struct{} `xml:"locktype>write"` - Owner owner `xml:"owner"` -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_owner -type owner struct { - InnerXML string `xml:",innerxml"` -} - -func readLockInfo(r io.Reader) (li lockInfo, status int, err error) { - c := &countingReader{r: r} - if err = ixml.NewDecoder(c).Decode(&li); err != nil { - if err == io.EOF { - if c.n == 0 { - // An empty body means to refresh the lock. - // http://www.webdav.org/specs/rfc4918.html#refreshing-locks - return lockInfo{}, 0, nil - } - err = errInvalidLockInfo - } - return lockInfo{}, http.StatusBadRequest, err - } - // We only support exclusive (non-shared) write locks. In practice, these are - // the only types of locks that seem to matter. - if li.Exclusive == nil || li.Shared != nil || li.Write == nil { - return lockInfo{}, http.StatusNotImplemented, errUnsupportedLockInfo - } - return li, 0, nil -} - -type countingReader struct { - n int - r io.Reader -} - -func (c *countingReader) Read(p []byte) (int, error) { - n, err := c.r.Read(p) - c.n += n - return n, err -} - -func writeLockInfo(w io.Writer, token string, ld LockDetails) (int, error) { - depth := "infinity" - if ld.ZeroDepth { - depth = "0" - } - timeout := ld.Duration / time.Second - return fmt.Fprintf(w, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+ - "<D:prop xmlns:D=\"DAV:\"><D:lockdiscovery><D:activelock>\n"+ - " <D:locktype><D:write/></D:locktype>\n"+ - " <D:lockscope><D:exclusive/></D:lockscope>\n"+ - " <D:depth>%s</D:depth>\n"+ - " <D:owner>%s</D:owner>\n"+ - " <D:timeout>Second-%d</D:timeout>\n"+ - " <D:locktoken><D:href>%s</D:href></D:locktoken>\n"+ - " <D:lockroot><D:href>%s</D:href></D:lockroot>\n"+ - "</D:activelock></D:lockdiscovery></D:prop>", - depth, ld.OwnerXML, timeout, escape(token), escape(ld.Root), - ) -} - -func escape(s string) string { - for i := 0; i < len(s); i++ { - switch s[i] { - case '"', '&', '\'', '<', '>': - b := bytes.NewBuffer(nil) - ixml.EscapeText(b, []byte(s)) - return b.String() - } - } - return s -} - -// Next returns the next token, if any, in the XML stream of d. -// RFC 4918 requires to ignore comments, processing instructions -// and directives. -// http://www.webdav.org/specs/rfc4918.html#property_values -// http://www.webdav.org/specs/rfc4918.html#xml-extensibility -func next(d *ixml.Decoder) (ixml.Token, error) { - for { - t, err := d.Token() - if err != nil { - return t, err - } - switch t.(type) { - case ixml.Comment, ixml.Directive, ixml.ProcInst: - continue - default: - return t, nil - } - } -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_prop (for propfind) -type propfindProps []xml.Name - -// UnmarshalXML appends the property names enclosed within start to pn. -// -// It returns an error if start does not contain any properties or if -// properties contain values. Character data between properties is ignored. -func (pn *propfindProps) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement) error { - for { - t, err := next(d) - if err != nil { - return err - } - switch t.(type) { - case ixml.EndElement: - if len(*pn) == 0 { - return fmt.Errorf("%s must not be empty", start.Name.Local) - } - return nil - case ixml.StartElement: - name := t.(ixml.StartElement).Name - t, err = next(d) - if err != nil { - return err - } - if _, ok := t.(ixml.EndElement); !ok { - return fmt.Errorf("unexpected token %T", t) - } - *pn = append(*pn, xml.Name(name)) - } - } -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_propfind -type propfind struct { - XMLName ixml.Name `xml:"DAV: propfind"` - Allprop *struct{} `xml:"DAV: allprop"` - Propname *struct{} `xml:"DAV: propname"` - Prop propfindProps `xml:"DAV: prop"` - Include propfindProps `xml:"DAV: include"` -} - -func readPropfind(r io.Reader) (pf propfind, status int, err error) { - c := countingReader{r: r} - if err = ixml.NewDecoder(&c).Decode(&pf); err != nil { - if err == io.EOF { - if c.n == 0 { - // An empty body means to propfind allprop. - // http://www.webdav.org/specs/rfc4918.html#METHOD_PROPFIND - return propfind{Allprop: new(struct{})}, 0, nil - } - err = errInvalidPropfind - } - return propfind{}, http.StatusBadRequest, err - } - - if pf.Allprop == nil && pf.Include != nil { - return propfind{}, http.StatusBadRequest, errInvalidPropfind - } - if pf.Allprop != nil && (pf.Prop != nil || pf.Propname != nil) { - return propfind{}, http.StatusBadRequest, errInvalidPropfind - } - if pf.Prop != nil && pf.Propname != nil { - return propfind{}, http.StatusBadRequest, errInvalidPropfind - } - if pf.Propname == nil && pf.Allprop == nil && pf.Prop == nil { - return propfind{}, http.StatusBadRequest, errInvalidPropfind - } - return pf, 0, nil -} - -// Property represents a single DAV resource property as defined in RFC 4918. -// See http://www.webdav.org/specs/rfc4918.html#data.model.for.resource.properties -type Property struct { - // XMLName is the fully qualified name that identifies this property. - XMLName xml.Name - - // Lang is an optional xml:lang attribute. - Lang string `xml:"xml:lang,attr,omitempty"` - - // InnerXML contains the XML representation of the property value. - // See http://www.webdav.org/specs/rfc4918.html#property_values - // - // Property values of complex type or mixed-content must have fully - // expanded XML namespaces or be self-contained with according - // XML namespace declarations. They must not rely on any XML - // namespace declarations within the scope of the XML document, - // even including the DAV: namespace. - InnerXML []byte `xml:",innerxml"` -} - -// ixmlProperty is the same as the Property type except it holds an ixml.Name -// instead of an xml.Name. -type ixmlProperty struct { - XMLName ixml.Name - Lang string `xml:"xml:lang,attr,omitempty"` - InnerXML []byte `xml:",innerxml"` -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_error -// See multistatusWriter for the "D:" namespace prefix. -type xmlError struct { - XMLName ixml.Name `xml:"D:error"` - InnerXML []byte `xml:",innerxml"` -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_propstat -// See multistatusWriter for the "D:" namespace prefix. -type propstat struct { - Prop []Property `xml:"D:prop>_ignored_"` - Status string `xml:"D:status"` - Error *xmlError `xml:"D:error"` - ResponseDescription string `xml:"D:responsedescription,omitempty"` -} - -// ixmlPropstat is the same as the propstat type except it holds an ixml.Name -// instead of an xml.Name. -type ixmlPropstat struct { - Prop []ixmlProperty `xml:"D:prop>_ignored_"` - Status string `xml:"D:status"` - Error *xmlError `xml:"D:error"` - ResponseDescription string `xml:"D:responsedescription,omitempty"` -} - -// MarshalXML prepends the "D:" namespace prefix on properties in the DAV: namespace -// before encoding. See multistatusWriter. -func (ps propstat) MarshalXML(e *ixml.Encoder, start ixml.StartElement) error { - // Convert from a propstat to an ixmlPropstat. - ixmlPs := ixmlPropstat{ - Prop: make([]ixmlProperty, len(ps.Prop)), - Status: ps.Status, - Error: ps.Error, - ResponseDescription: ps.ResponseDescription, - } - for k, prop := range ps.Prop { - ixmlPs.Prop[k] = ixmlProperty{ - XMLName: ixml.Name(prop.XMLName), - Lang: prop.Lang, - InnerXML: prop.InnerXML, - } - } - - for k, prop := range ixmlPs.Prop { - if prop.XMLName.Space == "DAV:" { - prop.XMLName = ixml.Name{Space: "", Local: "D:" + prop.XMLName.Local} - ixmlPs.Prop[k] = prop - } - } - // Distinct type to avoid infinite recursion of MarshalXML. - type newpropstat ixmlPropstat - return e.EncodeElement(newpropstat(ixmlPs), start) -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_response -// See multistatusWriter for the "D:" namespace prefix. -type response struct { - XMLName ixml.Name `xml:"D:response"` - Href []string `xml:"D:href"` - Propstat []propstat `xml:"D:propstat"` - Status string `xml:"D:status,omitempty"` - Error *xmlError `xml:"D:error"` - ResponseDescription string `xml:"D:responsedescription,omitempty"` -} - -// MultistatusWriter marshals one or more Responses into a XML -// multistatus response. -// See http://www.webdav.org/specs/rfc4918.html#ELEMENT_multistatus -// TODO(rsto, mpl): As a workaround, the "D:" namespace prefix, defined as -// "DAV:" on this element, is prepended on the nested response, as well as on all -// its nested elements. All property names in the DAV: namespace are prefixed as -// well. This is because some versions of Mini-Redirector (on windows 7) ignore -// elements with a default namespace (no prefixed namespace). A less intrusive fix -// should be possible after golang.org/cl/11074. See https://golang.org/issue/11177 -type multistatusWriter struct { - // ResponseDescription contains the optional responsedescription - // of the multistatus XML element. Only the latest content before - // close will be emitted. Empty response descriptions are not - // written. - responseDescription string - - w http.ResponseWriter - enc *ixml.Encoder -} - -// Write validates and emits a DAV response as part of a multistatus response -// element. -// -// It sets the HTTP status code of its underlying http.ResponseWriter to 207 -// (Multi-Status) and populates the Content-Type header. If r is the -// first, valid response to be written, Write prepends the XML representation -// of r with a multistatus tag. Callers must call close after the last response -// has been written. -func (w *multistatusWriter) write(r *response) error { - switch len(r.Href) { - case 0: - return errInvalidResponse - case 1: - if len(r.Propstat) > 0 != (r.Status == "") { - return errInvalidResponse - } - default: - if len(r.Propstat) > 0 || r.Status == "" { - return errInvalidResponse - } - } - err := w.writeHeader() - if err != nil { - return err - } - return w.enc.Encode(r) -} - -// writeHeader writes a XML multistatus start element on w's underlying -// http.ResponseWriter and returns the result of the write operation. -// After the first write attempt, writeHeader becomes a no-op. -func (w *multistatusWriter) writeHeader() error { - if w.enc != nil { - return nil - } - w.w.Header().Add("Content-Type", "text/xml; charset=utf-8") - w.w.WriteHeader(StatusMulti) - _, err := fmt.Fprintf(w.w, `<?xml version="1.0" encoding="UTF-8"?>`) - if err != nil { - return err - } - w.enc = ixml.NewEncoder(w.w) - return w.enc.EncodeToken(ixml.StartElement{ - Name: ixml.Name{ - Space: "DAV:", - Local: "multistatus", - }, - Attr: []ixml.Attr{{ - Name: ixml.Name{Space: "xmlns", Local: "D"}, - Value: "DAV:", - }}, - }) -} - -// Close completes the marshalling of the multistatus response. It returns -// an error if the multistatus response could not be completed. If both the -// return value and field enc of w are nil, then no multistatus response has -// been written. -func (w *multistatusWriter) close() error { - if w.enc == nil { - return nil - } - var end []ixml.Token - if w.responseDescription != "" { - name := ixml.Name{Space: "DAV:", Local: "responsedescription"} - end = append(end, - ixml.StartElement{Name: name}, - ixml.CharData(w.responseDescription), - ixml.EndElement{Name: name}, - ) - } - end = append(end, ixml.EndElement{ - Name: ixml.Name{Space: "DAV:", Local: "multistatus"}, - }) - for _, t := range end { - err := w.enc.EncodeToken(t) - if err != nil { - return err - } - } - return w.enc.Flush() -} - -var xmlLangName = ixml.Name{Space: "http://www.w3.org/XML/1998/namespace", Local: "lang"} - -func xmlLang(s ixml.StartElement, d string) string { - for _, attr := range s.Attr { - if attr.Name == xmlLangName { - return attr.Value - } - } - return d -} - -type xmlValue []byte - -func (v *xmlValue) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement) error { - // The XML value of a property can be arbitrary, mixed-content XML. - // To make sure that the unmarshalled value contains all required - // namespaces, we encode all the property value XML tokens into a - // buffer. This forces the encoder to redeclare any used namespaces. - var b bytes.Buffer - e := ixml.NewEncoder(&b) - for { - t, err := next(d) - if err != nil { - return err - } - if e, ok := t.(ixml.EndElement); ok && e.Name == start.Name { - break - } - if err = e.EncodeToken(t); err != nil { - return err - } - } - err := e.Flush() - if err != nil { - return err - } - *v = b.Bytes() - return nil -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_prop (for proppatch) -type proppatchProps []Property - -// UnmarshalXML appends the property names and values enclosed within start -// to ps. -// -// An xml:lang attribute that is defined either on the DAV:prop or property -// name XML element is propagated to the property's Lang field. -// -// UnmarshalXML returns an error if start does not contain any properties or if -// property values contain syntactically incorrect XML. -func (ps *proppatchProps) UnmarshalXML(d *ixml.Decoder, start ixml.StartElement) error { - lang := xmlLang(start, "") - for { - t, err := next(d) - if err != nil { - return err - } - switch elem := t.(type) { - case ixml.EndElement: - if len(*ps) == 0 { - return fmt.Errorf("%s must not be empty", start.Name.Local) - } - return nil - case ixml.StartElement: - p := Property{ - XMLName: xml.Name(t.(ixml.StartElement).Name), - Lang: xmlLang(t.(ixml.StartElement), lang), - } - err = d.DecodeElement(((*xmlValue)(&p.InnerXML)), &elem) - if err != nil { - return err - } - *ps = append(*ps, p) - } - } -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_set -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_remove -type setRemove struct { - XMLName ixml.Name - Lang string `xml:"xml:lang,attr,omitempty"` - Prop proppatchProps `xml:"DAV: prop"` -} - -// http://www.webdav.org/specs/rfc4918.html#ELEMENT_propertyupdate -type propertyupdate struct { - XMLName ixml.Name `xml:"DAV: propertyupdate"` - Lang string `xml:"xml:lang,attr,omitempty"` - SetRemove []setRemove `xml:",any"` -} - -func readProppatch(r io.Reader) (patches []Proppatch, status int, err error) { - var pu propertyupdate - if err = ixml.NewDecoder(r).Decode(&pu); err != nil { - return nil, http.StatusBadRequest, err - } - for _, op := range pu.SetRemove { - remove := false - switch op.XMLName { - case ixml.Name{Space: "DAV:", Local: "set"}: - // No-op. - case ixml.Name{Space: "DAV:", Local: "remove"}: - for _, p := range op.Prop { - if len(p.InnerXML) > 0 { - return nil, http.StatusBadRequest, errInvalidProppatch - } - } - remove = true - default: - return nil, http.StatusBadRequest, errInvalidProppatch - } - patches = append(patches, Proppatch{Remove: remove, Props: op.Prop}) - } - return patches, 0, nil -} diff --git a/vendor/golang.org/x/net/webdav/xml_test.go b/vendor/golang.org/x/net/webdav/xml_test.go deleted file mode 100644 index a3d9e1ed..00000000 --- a/vendor/golang.org/x/net/webdav/xml_test.go +++ /dev/null @@ -1,906 +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 webdav - -import ( - "bytes" - "encoding/xml" - "fmt" - "io" - "net/http" - "net/http/httptest" - "reflect" - "sort" - "strings" - "testing" - - ixml "golang.org/x/net/webdav/internal/xml" -) - -func TestReadLockInfo(t *testing.T) { - // The "section x.y.z" test cases come from section x.y.z of the spec at - // http://www.webdav.org/specs/rfc4918.html - testCases := []struct { - desc string - input string - wantLI lockInfo - wantStatus int - }{{ - "bad: junk", - "xxx", - lockInfo{}, - http.StatusBadRequest, - }, { - "bad: invalid owner XML", - "" + - "<D:lockinfo xmlns:D='DAV:'>\n" + - " <D:lockscope><D:exclusive/></D:lockscope>\n" + - " <D:locktype><D:write/></D:locktype>\n" + - " <D:owner>\n" + - " <D:href> no end tag \n" + - " </D:owner>\n" + - "</D:lockinfo>", - lockInfo{}, - http.StatusBadRequest, - }, { - "bad: invalid UTF-8", - "" + - "<D:lockinfo xmlns:D='DAV:'>\n" + - " <D:lockscope><D:exclusive/></D:lockscope>\n" + - " <D:locktype><D:write/></D:locktype>\n" + - " <D:owner>\n" + - " <D:href> \xff </D:href>\n" + - " </D:owner>\n" + - "</D:lockinfo>", - lockInfo{}, - http.StatusBadRequest, - }, { - "bad: unfinished XML #1", - "" + - "<D:lockinfo xmlns:D='DAV:'>\n" + - " <D:lockscope><D:exclusive/></D:lockscope>\n" + - " <D:locktype><D:write/></D:locktype>\n", - lockInfo{}, - http.StatusBadRequest, - }, { - "bad: unfinished XML #2", - "" + - "<D:lockinfo xmlns:D='DAV:'>\n" + - " <D:lockscope><D:exclusive/></D:lockscope>\n" + - " <D:locktype><D:write/></D:locktype>\n" + - " <D:owner>\n", - lockInfo{}, - http.StatusBadRequest, - }, { - "good: empty", - "", - lockInfo{}, - 0, - }, { - "good: plain-text owner", - "" + - "<D:lockinfo xmlns:D='DAV:'>\n" + - " <D:lockscope><D:exclusive/></D:lockscope>\n" + - " <D:locktype><D:write/></D:locktype>\n" + - " <D:owner>gopher</D:owner>\n" + - "</D:lockinfo>", - lockInfo{ - XMLName: ixml.Name{Space: "DAV:", Local: "lockinfo"}, - Exclusive: new(struct{}), - Write: new(struct{}), - Owner: owner{ - InnerXML: "gopher", - }, - }, - 0, - }, { - "section 9.10.7", - "" + - "<D:lockinfo xmlns:D='DAV:'>\n" + - " <D:lockscope><D:exclusive/></D:lockscope>\n" + - " <D:locktype><D:write/></D:locktype>\n" + - " <D:owner>\n" + - " <D:href>http://example.org/~ejw/contact.html</D:href>\n" + - " </D:owner>\n" + - "</D:lockinfo>", - lockInfo{ - XMLName: ixml.Name{Space: "DAV:", Local: "lockinfo"}, - Exclusive: new(struct{}), - Write: new(struct{}), - Owner: owner{ - InnerXML: "\n <D:href>http://example.org/~ejw/contact.html</D:href>\n ", - }, - }, - 0, - }} - - for _, tc := range testCases { - li, status, err := readLockInfo(strings.NewReader(tc.input)) - if tc.wantStatus != 0 { - if err == nil { - t.Errorf("%s: got nil error, want non-nil", tc.desc) - continue - } - } else if err != nil { - t.Errorf("%s: %v", tc.desc, err) - continue - } - if !reflect.DeepEqual(li, tc.wantLI) || status != tc.wantStatus { - t.Errorf("%s:\ngot lockInfo=%v, status=%v\nwant lockInfo=%v, status=%v", - tc.desc, li, status, tc.wantLI, tc.wantStatus) - continue - } - } -} - -func TestReadPropfind(t *testing.T) { - testCases := []struct { - desc string - input string - wantPF propfind - wantStatus int - }{{ - desc: "propfind: propname", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:propname/>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Propname: new(struct{}), - }, - }, { - desc: "propfind: empty body means allprop", - input: "", - wantPF: propfind{ - Allprop: new(struct{}), - }, - }, { - desc: "propfind: allprop", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:allprop/>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Allprop: new(struct{}), - }, - }, { - desc: "propfind: allprop followed by include", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:allprop/>\n" + - " <A:include><A:displayname/></A:include>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Allprop: new(struct{}), - Include: propfindProps{xml.Name{Space: "DAV:", Local: "displayname"}}, - }, - }, { - desc: "propfind: include followed by allprop", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:include><A:displayname/></A:include>\n" + - " <A:allprop/>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Allprop: new(struct{}), - Include: propfindProps{xml.Name{Space: "DAV:", Local: "displayname"}}, - }, - }, { - desc: "propfind: propfind", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop><A:displayname/></A:prop>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Prop: propfindProps{xml.Name{Space: "DAV:", Local: "displayname"}}, - }, - }, { - desc: "propfind: prop with ignored comments", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop>\n" + - " <!-- ignore -->\n" + - " <A:displayname><!-- ignore --></A:displayname>\n" + - " </A:prop>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Prop: propfindProps{xml.Name{Space: "DAV:", Local: "displayname"}}, - }, - }, { - desc: "propfind: propfind with ignored whitespace", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop> <A:displayname/></A:prop>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Prop: propfindProps{xml.Name{Space: "DAV:", Local: "displayname"}}, - }, - }, { - desc: "propfind: propfind with ignored mixed-content", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop>foo<A:displayname/>bar</A:prop>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Prop: propfindProps{xml.Name{Space: "DAV:", Local: "displayname"}}, - }, - }, { - desc: "propfind: propname with ignored element (section A.4)", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:propname/>\n" + - " <E:leave-out xmlns:E='E:'>*boss*</E:leave-out>\n" + - "</A:propfind>", - wantPF: propfind{ - XMLName: ixml.Name{Space: "DAV:", Local: "propfind"}, - Propname: new(struct{}), - }, - }, { - desc: "propfind: bad: junk", - input: "xxx", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: propname and allprop (section A.3)", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:propname/>" + - " <A:allprop/>" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: propname and prop", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop><A:displayname/></A:prop>\n" + - " <A:propname/>\n" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: allprop and prop", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:allprop/>\n" + - " <A:prop><A:foo/><A:/prop>\n" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: empty propfind with ignored element (section A.4)", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <E:expired-props/>\n" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: empty prop", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop/>\n" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: prop with just chardata", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop>foo</A:prop>\n" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }, { - desc: "bad: interrupted prop", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop><A:foo></A:prop>\n", - wantStatus: http.StatusBadRequest, - }, { - desc: "bad: malformed end element prop", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop><A:foo/></A:bar></A:prop>\n", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: property with chardata value", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop><A:foo>bar</A:foo></A:prop>\n" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: property with whitespace value", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:prop><A:foo> </A:foo></A:prop>\n" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }, { - desc: "propfind: bad: include without allprop", - input: "" + - "<A:propfind xmlns:A='DAV:'>\n" + - " <A:include><A:foo/></A:include>\n" + - "</A:propfind>", - wantStatus: http.StatusBadRequest, - }} - - for _, tc := range testCases { - pf, status, err := readPropfind(strings.NewReader(tc.input)) - if tc.wantStatus != 0 { - if err == nil { - t.Errorf("%s: got nil error, want non-nil", tc.desc) - continue - } - } else if err != nil { - t.Errorf("%s: %v", tc.desc, err) - continue - } - if !reflect.DeepEqual(pf, tc.wantPF) || status != tc.wantStatus { - t.Errorf("%s:\ngot propfind=%v, status=%v\nwant propfind=%v, status=%v", - tc.desc, pf, status, tc.wantPF, tc.wantStatus) - continue - } - } -} - -func TestMultistatusWriter(t *testing.T) { - ///The "section x.y.z" test cases come from section x.y.z of the spec at - // http://www.webdav.org/specs/rfc4918.html - testCases := []struct { - desc string - responses []response - respdesc string - writeHeader bool - wantXML string - wantCode int - wantErr error - }{{ - desc: "section 9.2.2 (failed dependency)", - responses: []response{{ - Href: []string{"http://example.com/foo"}, - Propstat: []propstat{{ - Prop: []Property{{ - XMLName: xml.Name{ - Space: "http://ns.example.com/", - Local: "Authors", - }, - }}, - Status: "HTTP/1.1 424 Failed Dependency", - }, { - Prop: []Property{{ - XMLName: xml.Name{ - Space: "http://ns.example.com/", - Local: "Copyright-Owner", - }, - }}, - Status: "HTTP/1.1 409 Conflict", - }}, - ResponseDescription: "Copyright Owner cannot be deleted or altered.", - }}, - wantXML: `` + - `<?xml version="1.0" encoding="UTF-8"?>` + - `<multistatus xmlns="DAV:">` + - ` <response>` + - ` <href>http://example.com/foo</href>` + - ` <propstat>` + - ` <prop>` + - ` <Authors xmlns="http://ns.example.com/"></Authors>` + - ` </prop>` + - ` <status>HTTP/1.1 424 Failed Dependency</status>` + - ` </propstat>` + - ` <propstat xmlns="DAV:">` + - ` <prop>` + - ` <Copyright-Owner xmlns="http://ns.example.com/"></Copyright-Owner>` + - ` </prop>` + - ` <status>HTTP/1.1 409 Conflict</status>` + - ` </propstat>` + - ` <responsedescription>Copyright Owner cannot be deleted or altered.</responsedescription>` + - `</response>` + - `</multistatus>`, - wantCode: StatusMulti, - }, { - desc: "section 9.6.2 (lock-token-submitted)", - responses: []response{{ - Href: []string{"http://example.com/foo"}, - Status: "HTTP/1.1 423 Locked", - Error: &xmlError{ - InnerXML: []byte(`<lock-token-submitted xmlns="DAV:"/>`), - }, - }}, - wantXML: `` + - `<?xml version="1.0" encoding="UTF-8"?>` + - `<multistatus xmlns="DAV:">` + - ` <response>` + - ` <href>http://example.com/foo</href>` + - ` <status>HTTP/1.1 423 Locked</status>` + - ` <error><lock-token-submitted xmlns="DAV:"/></error>` + - ` </response>` + - `</multistatus>`, - wantCode: StatusMulti, - }, { - desc: "section 9.1.3", - responses: []response{{ - Href: []string{"http://example.com/foo"}, - Propstat: []propstat{{ - Prop: []Property{{ - XMLName: xml.Name{Space: "http://ns.example.com/boxschema/", Local: "bigbox"}, - InnerXML: []byte(`` + - `<BoxType xmlns="http://ns.example.com/boxschema/">` + - `Box type A` + - `</BoxType>`), - }, { - XMLName: xml.Name{Space: "http://ns.example.com/boxschema/", Local: "author"}, - InnerXML: []byte(`` + - `<Name xmlns="http://ns.example.com/boxschema/">` + - `J.J. Johnson` + - `</Name>`), - }}, - Status: "HTTP/1.1 200 OK", - }, { - Prop: []Property{{ - XMLName: xml.Name{Space: "http://ns.example.com/boxschema/", Local: "DingALing"}, - }, { - XMLName: xml.Name{Space: "http://ns.example.com/boxschema/", Local: "Random"}, - }}, - Status: "HTTP/1.1 403 Forbidden", - ResponseDescription: "The user does not have access to the DingALing property.", - }}, - }}, - respdesc: "There has been an access violation error.", - wantXML: `` + - `<?xml version="1.0" encoding="UTF-8"?>` + - `<multistatus xmlns="DAV:" xmlns:B="http://ns.example.com/boxschema/">` + - ` <response>` + - ` <href>http://example.com/foo</href>` + - ` <propstat>` + - ` <prop>` + - ` <B:bigbox><B:BoxType>Box type A</B:BoxType></B:bigbox>` + - ` <B:author><B:Name>J.J. Johnson</B:Name></B:author>` + - ` </prop>` + - ` <status>HTTP/1.1 200 OK</status>` + - ` </propstat>` + - ` <propstat>` + - ` <prop>` + - ` <B:DingALing/>` + - ` <B:Random/>` + - ` </prop>` + - ` <status>HTTP/1.1 403 Forbidden</status>` + - ` <responsedescription>The user does not have access to the DingALing property.</responsedescription>` + - ` </propstat>` + - ` </response>` + - ` <responsedescription>There has been an access violation error.</responsedescription>` + - `</multistatus>`, - wantCode: StatusMulti, - }, { - desc: "no response written", - // default of http.responseWriter - wantCode: http.StatusOK, - }, { - desc: "no response written (with description)", - respdesc: "too bad", - // default of http.responseWriter - wantCode: http.StatusOK, - }, { - desc: "empty multistatus with header", - writeHeader: true, - wantXML: `<multistatus xmlns="DAV:"></multistatus>`, - wantCode: StatusMulti, - }, { - desc: "bad: no href", - responses: []response{{ - Propstat: []propstat{{ - Prop: []Property{{ - XMLName: xml.Name{ - Space: "http://example.com/", - Local: "foo", - }, - }}, - Status: "HTTP/1.1 200 OK", - }}, - }}, - wantErr: errInvalidResponse, - // default of http.responseWriter - wantCode: http.StatusOK, - }, { - desc: "bad: multiple hrefs and no status", - responses: []response{{ - Href: []string{"http://example.com/foo", "http://example.com/bar"}, - }}, - wantErr: errInvalidResponse, - // default of http.responseWriter - wantCode: http.StatusOK, - }, { - desc: "bad: one href and no propstat", - responses: []response{{ - Href: []string{"http://example.com/foo"}, - }}, - wantErr: errInvalidResponse, - // default of http.responseWriter - wantCode: http.StatusOK, - }, { - desc: "bad: status with one href and propstat", - responses: []response{{ - Href: []string{"http://example.com/foo"}, - Propstat: []propstat{{ - Prop: []Property{{ - XMLName: xml.Name{ - Space: "http://example.com/", - Local: "foo", - }, - }}, - Status: "HTTP/1.1 200 OK", - }}, - Status: "HTTP/1.1 200 OK", - }}, - wantErr: errInvalidResponse, - // default of http.responseWriter - wantCode: http.StatusOK, - }, { - desc: "bad: multiple hrefs and propstat", - responses: []response{{ - Href: []string{ - "http://example.com/foo", - "http://example.com/bar", - }, - Propstat: []propstat{{ - Prop: []Property{{ - XMLName: xml.Name{ - Space: "http://example.com/", - Local: "foo", - }, - }}, - Status: "HTTP/1.1 200 OK", - }}, - }}, - wantErr: errInvalidResponse, - // default of http.responseWriter - wantCode: http.StatusOK, - }} - - n := xmlNormalizer{omitWhitespace: true} -loop: - for _, tc := range testCases { - rec := httptest.NewRecorder() - w := multistatusWriter{w: rec, responseDescription: tc.respdesc} - if tc.writeHeader { - if err := w.writeHeader(); err != nil { - t.Errorf("%s: got writeHeader error %v, want nil", tc.desc, err) - continue - } - } - for _, r := range tc.responses { - if err := w.write(&r); err != nil { - if err != tc.wantErr { - t.Errorf("%s: got write error %v, want %v", - tc.desc, err, tc.wantErr) - } - continue loop - } - } - if err := w.close(); err != tc.wantErr { - t.Errorf("%s: got close error %v, want %v", - tc.desc, err, tc.wantErr) - continue - } - if rec.Code != tc.wantCode { - t.Errorf("%s: got HTTP status code %d, want %d\n", - tc.desc, rec.Code, tc.wantCode) - continue - } - gotXML := rec.Body.String() - eq, err := n.equalXML(strings.NewReader(gotXML), strings.NewReader(tc.wantXML)) - if err != nil { - t.Errorf("%s: equalXML: %v", tc.desc, err) - continue - } - if !eq { - t.Errorf("%s: XML body\ngot %s\nwant %s", tc.desc, gotXML, tc.wantXML) - } - } -} - -func TestReadProppatch(t *testing.T) { - ppStr := func(pps []Proppatch) string { - var outer []string - for _, pp := range pps { - var inner []string - for _, p := range pp.Props { - inner = append(inner, fmt.Sprintf("{XMLName: %q, Lang: %q, InnerXML: %q}", - p.XMLName, p.Lang, p.InnerXML)) - } - outer = append(outer, fmt.Sprintf("{Remove: %t, Props: [%s]}", - pp.Remove, strings.Join(inner, ", "))) - } - return "[" + strings.Join(outer, ", ") + "]" - } - - testCases := []struct { - desc string - input string - wantPP []Proppatch - wantStatus int - }{{ - desc: "proppatch: section 9.2 (with simple property value)", - input: `` + - `<?xml version="1.0" encoding="utf-8" ?>` + - `<D:propertyupdate xmlns:D="DAV:"` + - ` xmlns:Z="http://ns.example.com/z/">` + - ` <D:set>` + - ` <D:prop><Z:Authors>somevalue</Z:Authors></D:prop>` + - ` </D:set>` + - ` <D:remove>` + - ` <D:prop><Z:Copyright-Owner/></D:prop>` + - ` </D:remove>` + - `</D:propertyupdate>`, - wantPP: []Proppatch{{ - Props: []Property{{ - xml.Name{Space: "http://ns.example.com/z/", Local: "Authors"}, - "", - []byte(`somevalue`), - }}, - }, { - Remove: true, - Props: []Property{{ - xml.Name{Space: "http://ns.example.com/z/", Local: "Copyright-Owner"}, - "", - nil, - }}, - }}, - }, { - desc: "proppatch: lang attribute on prop", - input: `` + - `<?xml version="1.0" encoding="utf-8" ?>` + - `<D:propertyupdate xmlns:D="DAV:">` + - ` <D:set>` + - ` <D:prop xml:lang="en">` + - ` <foo xmlns="http://example.com/ns"/>` + - ` </D:prop>` + - ` </D:set>` + - `</D:propertyupdate>`, - wantPP: []Proppatch{{ - Props: []Property{{ - xml.Name{Space: "http://example.com/ns", Local: "foo"}, - "en", - nil, - }}, - }}, - }, { - desc: "bad: remove with value", - input: `` + - `<?xml version="1.0" encoding="utf-8" ?>` + - `<D:propertyupdate xmlns:D="DAV:"` + - ` xmlns:Z="http://ns.example.com/z/">` + - ` <D:remove>` + - ` <D:prop>` + - ` <Z:Authors>` + - ` <Z:Author>Jim Whitehead</Z:Author>` + - ` </Z:Authors>` + - ` </D:prop>` + - ` </D:remove>` + - `</D:propertyupdate>`, - wantStatus: http.StatusBadRequest, - }, { - desc: "bad: empty propertyupdate", - input: `` + - `<?xml version="1.0" encoding="utf-8" ?>` + - `<D:propertyupdate xmlns:D="DAV:"` + - `</D:propertyupdate>`, - wantStatus: http.StatusBadRequest, - }, { - desc: "bad: empty prop", - input: `` + - `<?xml version="1.0" encoding="utf-8" ?>` + - `<D:propertyupdate xmlns:D="DAV:"` + - ` xmlns:Z="http://ns.example.com/z/">` + - ` <D:remove>` + - ` <D:prop/>` + - ` </D:remove>` + - `</D:propertyupdate>`, - wantStatus: http.StatusBadRequest, - }} - - for _, tc := range testCases { - pp, status, err := readProppatch(strings.NewReader(tc.input)) - if tc.wantStatus != 0 { - if err == nil { - t.Errorf("%s: got nil error, want non-nil", tc.desc) - continue - } - } else if err != nil { - t.Errorf("%s: %v", tc.desc, err) - continue - } - if status != tc.wantStatus { - t.Errorf("%s: got status %d, want %d", tc.desc, status, tc.wantStatus) - continue - } - if !reflect.DeepEqual(pp, tc.wantPP) || status != tc.wantStatus { - t.Errorf("%s: proppatch\ngot %v\nwant %v", tc.desc, ppStr(pp), ppStr(tc.wantPP)) - } - } -} - -func TestUnmarshalXMLValue(t *testing.T) { - testCases := []struct { - desc string - input string - wantVal string - }{{ - desc: "simple char data", - input: "<root>foo</root>", - wantVal: "foo", - }, { - desc: "empty element", - input: "<root><foo/></root>", - wantVal: "<foo/>", - }, { - desc: "preserve namespace", - input: `<root><foo xmlns="bar"/></root>`, - wantVal: `<foo xmlns="bar"/>`, - }, { - desc: "preserve root element namespace", - input: `<root xmlns:bar="bar"><bar:foo/></root>`, - wantVal: `<foo xmlns="bar"/>`, - }, { - desc: "preserve whitespace", - input: "<root> \t </root>", - wantVal: " \t ", - }, { - desc: "preserve mixed content", - input: `<root xmlns="bar"> <foo>a<bam xmlns="baz"/> </foo> </root>`, - wantVal: ` <foo xmlns="bar">a<bam xmlns="baz"/> </foo> `, - }, { - desc: "section 9.2", - input: `` + - `<Z:Authors xmlns:Z="http://ns.example.com/z/">` + - ` <Z:Author>Jim Whitehead</Z:Author>` + - ` <Z:Author>Roy Fielding</Z:Author>` + - `</Z:Authors>`, - wantVal: `` + - ` <Author xmlns="http://ns.example.com/z/">Jim Whitehead</Author>` + - ` <Author xmlns="http://ns.example.com/z/">Roy Fielding</Author>`, - }, { - desc: "section 4.3.1 (mixed content)", - input: `` + - `<x:author ` + - ` xmlns:x='http://example.com/ns' ` + - ` xmlns:D="DAV:">` + - ` <x:name>Jane Doe</x:name>` + - ` <!-- Jane's contact info -->` + - ` <x:uri type='email'` + - ` added='2005-11-26'>mailto:jane.doe@example.com</x:uri>` + - ` <x:uri type='web'` + - ` added='2005-11-27'>http://www.example.com</x:uri>` + - ` <x:notes xmlns:h='http://www.w3.org/1999/xhtml'>` + - ` Jane has been working way <h:em>too</h:em> long on the` + - ` long-awaited revision of <![CDATA[<RFC2518>]]>.` + - ` </x:notes>` + - `</x:author>`, - wantVal: `` + - ` <name xmlns="http://example.com/ns">Jane Doe</name>` + - ` ` + - ` <uri type='email'` + - ` xmlns="http://example.com/ns" ` + - ` added='2005-11-26'>mailto:jane.doe@example.com</uri>` + - ` <uri added='2005-11-27'` + - ` type='web'` + - ` xmlns="http://example.com/ns">http://www.example.com</uri>` + - ` <notes xmlns="http://example.com/ns" ` + - ` xmlns:h="http://www.w3.org/1999/xhtml">` + - ` Jane has been working way <h:em>too</h:em> long on the` + - ` long-awaited revision of &lt;RFC2518&gt;.` + - ` </notes>`, - }} - - var n xmlNormalizer - for _, tc := range testCases { - d := ixml.NewDecoder(strings.NewReader(tc.input)) - var v xmlValue - if err := d.Decode(&v); err != nil { - t.Errorf("%s: got error %v, want nil", tc.desc, err) - continue - } - eq, err := n.equalXML(bytes.NewReader(v), strings.NewReader(tc.wantVal)) - if err != nil { - t.Errorf("%s: equalXML: %v", tc.desc, err) - continue - } - if !eq { - t.Errorf("%s:\ngot %s\nwant %s", tc.desc, string(v), tc.wantVal) - } - } -} - -// xmlNormalizer normalizes XML. -type xmlNormalizer struct { - // omitWhitespace instructs to ignore whitespace between element tags. - omitWhitespace bool - // omitComments instructs to ignore XML comments. - omitComments bool -} - -// normalize writes the normalized XML content of r to w. It applies the -// following rules -// -// * Rename namespace prefixes according to an internal heuristic. -// * Remove unnecessary namespace declarations. -// * Sort attributes in XML start elements in lexical order of their -// fully qualified name. -// * Remove XML directives and processing instructions. -// * Remove CDATA between XML tags that only contains whitespace, if -// instructed to do so. -// * Remove comments, if instructed to do so. -// -func (n *xmlNormalizer) normalize(w io.Writer, r io.Reader) error { - d := ixml.NewDecoder(r) - e := ixml.NewEncoder(w) - for { - t, err := d.Token() - if err != nil { - if t == nil && err == io.EOF { - break - } - return err - } - switch val := t.(type) { - case ixml.Directive, ixml.ProcInst: - continue - case ixml.Comment: - if n.omitComments { - continue - } - case ixml.CharData: - if n.omitWhitespace && len(bytes.TrimSpace(val)) == 0 { - continue - } - case ixml.StartElement: - start, _ := ixml.CopyToken(val).(ixml.StartElement) - attr := start.Attr[:0] - for _, a := range start.Attr { - if a.Name.Space == "xmlns" || a.Name.Local == "xmlns" { - continue - } - attr = append(attr, a) - } - sort.Sort(byName(attr)) - start.Attr = attr - t = start - } - err = e.EncodeToken(t) - if err != nil { - return err - } - } - return e.Flush() -} - -// equalXML tests for equality of the normalized XML contents of a and b. -func (n *xmlNormalizer) equalXML(a, b io.Reader) (bool, error) { - var buf bytes.Buffer - if err := n.normalize(&buf, a); err != nil { - return false, err - } - normA := buf.String() - buf.Reset() - if err := n.normalize(&buf, b); err != nil { - return false, err - } - normB := buf.String() - return normA == normB, nil -} - -type byName []ixml.Attr - -func (a byName) Len() int { return len(a) } -func (a byName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a byName) Less(i, j int) bool { - if a[i].Name.Space != a[j].Name.Space { - return a[i].Name.Space < a[j].Name.Space - } - return a[i].Name.Local < a[j].Name.Local -} diff --git a/vendor/golang.org/x/net/websocket/client.go b/vendor/golang.org/x/net/websocket/client.go deleted file mode 100644 index 69a4ac7e..00000000 --- a/vendor/golang.org/x/net/websocket/client.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "bufio" - "io" - "net" - "net/http" - "net/url" -) - -// DialError is an error that occurs while dialling a websocket server. -type DialError struct { - *Config - Err error -} - -func (e *DialError) Error() string { - return "websocket.Dial " + e.Config.Location.String() + ": " + e.Err.Error() -} - -// NewConfig creates a new WebSocket config for client connection. -func NewConfig(server, origin string) (config *Config, err error) { - config = new(Config) - config.Version = ProtocolVersionHybi13 - config.Location, err = url.ParseRequestURI(server) - if err != nil { - return - } - config.Origin, err = url.ParseRequestURI(origin) - if err != nil { - return - } - config.Header = http.Header(make(map[string][]string)) - return -} - -// NewClient creates a new WebSocket client connection over rwc. -func NewClient(config *Config, rwc io.ReadWriteCloser) (ws *Conn, err error) { - br := bufio.NewReader(rwc) - bw := bufio.NewWriter(rwc) - err = hybiClientHandshake(config, br, bw) - if err != nil { - return - } - buf := bufio.NewReadWriter(br, bw) - ws = newHybiClientConn(config, buf, rwc) - return -} - -// Dial opens a new client connection to a WebSocket. -func Dial(url_, protocol, origin string) (ws *Conn, err error) { - config, err := NewConfig(url_, origin) - if err != nil { - return nil, err - } - if protocol != "" { - config.Protocol = []string{protocol} - } - return DialConfig(config) -} - -var portMap = map[string]string{ - "ws": "80", - "wss": "443", -} - -func parseAuthority(location *url.URL) string { - if _, ok := portMap[location.Scheme]; ok { - if _, _, err := net.SplitHostPort(location.Host); err != nil { - return net.JoinHostPort(location.Host, portMap[location.Scheme]) - } - } - return location.Host -} - -// DialConfig opens a new client connection to a WebSocket with a config. -func DialConfig(config *Config) (ws *Conn, err error) { - var client net.Conn - if config.Location == nil { - return nil, &DialError{config, ErrBadWebSocketLocation} - } - if config.Origin == nil { - return nil, &DialError{config, ErrBadWebSocketOrigin} - } - dialer := config.Dialer - if dialer == nil { - dialer = &net.Dialer{} - } - client, err = dialWithDialer(dialer, config) - if err != nil { - goto Error - } - ws, err = NewClient(config, client) - if err != nil { - client.Close() - goto Error - } - return - -Error: - return nil, &DialError{config, err} -} diff --git a/vendor/golang.org/x/net/websocket/dial.go b/vendor/golang.org/x/net/websocket/dial.go deleted file mode 100644 index 2dab943a..00000000 --- a/vendor/golang.org/x/net/websocket/dial.go +++ /dev/null @@ -1,24 +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 websocket - -import ( - "crypto/tls" - "net" -) - -func dialWithDialer(dialer *net.Dialer, config *Config) (conn net.Conn, err error) { - switch config.Location.Scheme { - case "ws": - conn, err = dialer.Dial("tcp", parseAuthority(config.Location)) - - case "wss": - conn, err = tls.DialWithDialer(dialer, "tcp", parseAuthority(config.Location), config.TlsConfig) - - default: - err = ErrBadScheme - } - return -} diff --git a/vendor/golang.org/x/net/websocket/dial_test.go b/vendor/golang.org/x/net/websocket/dial_test.go deleted file mode 100644 index aa03e30d..00000000 --- a/vendor/golang.org/x/net/websocket/dial_test.go +++ /dev/null @@ -1,43 +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 websocket - -import ( - "crypto/tls" - "fmt" - "log" - "net" - "net/http/httptest" - "testing" - "time" -) - -// This test depend on Go 1.3+ because in earlier versions the Dialer won't be -// used in TLS connections and a timeout won't be triggered. -func TestDialConfigTLSWithDialer(t *testing.T) { - tlsServer := httptest.NewTLSServer(nil) - tlsServerAddr := tlsServer.Listener.Addr().String() - log.Print("Test TLS WebSocket server listening on ", tlsServerAddr) - defer tlsServer.Close() - config, _ := NewConfig(fmt.Sprintf("wss://%s/echo", tlsServerAddr), "http://localhost") - config.Dialer = &net.Dialer{ - Deadline: time.Now().Add(-time.Minute), - } - config.TlsConfig = &tls.Config{ - InsecureSkipVerify: true, - } - _, err := DialConfig(config) - dialerr, ok := err.(*DialError) - if !ok { - t.Fatalf("DialError expected, got %#v", err) - } - neterr, ok := dialerr.Err.(*net.OpError) - if !ok { - t.Fatalf("net.OpError error expected, got %#v", dialerr.Err) - } - if !neterr.Timeout() { - t.Fatalf("expected timeout error, got %#v", neterr) - } -} diff --git a/vendor/golang.org/x/net/websocket/exampledial_test.go b/vendor/golang.org/x/net/websocket/exampledial_test.go deleted file mode 100644 index 72bb9d48..00000000 --- a/vendor/golang.org/x/net/websocket/exampledial_test.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket_test - -import ( - "fmt" - "log" - - "golang.org/x/net/websocket" -) - -// This example demonstrates a trivial client. -func ExampleDial() { - origin := "http://localhost/" - url := "ws://localhost:12345/ws" - ws, err := websocket.Dial(url, "", origin) - if err != nil { - log.Fatal(err) - } - if _, err := ws.Write([]byte("hello, world!\n")); err != nil { - log.Fatal(err) - } - var msg = make([]byte, 512) - var n int - if n, err = ws.Read(msg); err != nil { - log.Fatal(err) - } - fmt.Printf("Received: %s.\n", msg[:n]) -} diff --git a/vendor/golang.org/x/net/websocket/examplehandler_test.go b/vendor/golang.org/x/net/websocket/examplehandler_test.go deleted file mode 100644 index f22a98fc..00000000 --- a/vendor/golang.org/x/net/websocket/examplehandler_test.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket_test - -import ( - "io" - "net/http" - - "golang.org/x/net/websocket" -) - -// Echo the data received on the WebSocket. -func EchoServer(ws *websocket.Conn) { - io.Copy(ws, ws) -} - -// This example demonstrates a trivial echo server. -func ExampleHandler() { - http.Handle("/echo", websocket.Handler(EchoServer)) - err := http.ListenAndServe(":12345", nil) - if err != nil { - panic("ListenAndServe: " + err.Error()) - } -} diff --git a/vendor/golang.org/x/net/websocket/hybi.go b/vendor/golang.org/x/net/websocket/hybi.go deleted file mode 100644 index 8cffdd16..00000000 --- a/vendor/golang.org/x/net/websocket/hybi.go +++ /dev/null @@ -1,583 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -// This file implements a protocol of hybi draft. -// http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17 - -import ( - "bufio" - "bytes" - "crypto/rand" - "crypto/sha1" - "encoding/base64" - "encoding/binary" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "strings" -) - -const ( - websocketGUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" - - closeStatusNormal = 1000 - closeStatusGoingAway = 1001 - closeStatusProtocolError = 1002 - closeStatusUnsupportedData = 1003 - closeStatusFrameTooLarge = 1004 - closeStatusNoStatusRcvd = 1005 - closeStatusAbnormalClosure = 1006 - closeStatusBadMessageData = 1007 - closeStatusPolicyViolation = 1008 - closeStatusTooBigData = 1009 - closeStatusExtensionMismatch = 1010 - - maxControlFramePayloadLength = 125 -) - -var ( - ErrBadMaskingKey = &ProtocolError{"bad masking key"} - ErrBadPongMessage = &ProtocolError{"bad pong message"} - ErrBadClosingStatus = &ProtocolError{"bad closing status"} - ErrUnsupportedExtensions = &ProtocolError{"unsupported extensions"} - ErrNotImplemented = &ProtocolError{"not implemented"} - - handshakeHeader = map[string]bool{ - "Host": true, - "Upgrade": true, - "Connection": true, - "Sec-Websocket-Key": true, - "Sec-Websocket-Origin": true, - "Sec-Websocket-Version": true, - "Sec-Websocket-Protocol": true, - "Sec-Websocket-Accept": true, - } -) - -// A hybiFrameHeader is a frame header as defined in hybi draft. -type hybiFrameHeader struct { - Fin bool - Rsv [3]bool - OpCode byte - Length int64 - MaskingKey []byte - - data *bytes.Buffer -} - -// A hybiFrameReader is a reader for hybi frame. -type hybiFrameReader struct { - reader io.Reader - - header hybiFrameHeader - pos int64 - length int -} - -func (frame *hybiFrameReader) Read(msg []byte) (n int, err error) { - n, err = frame.reader.Read(msg) - if frame.header.MaskingKey != nil { - for i := 0; i < n; i++ { - msg[i] = msg[i] ^ frame.header.MaskingKey[frame.pos%4] - frame.pos++ - } - } - return n, err -} - -func (frame *hybiFrameReader) PayloadType() byte { return frame.header.OpCode } - -func (frame *hybiFrameReader) HeaderReader() io.Reader { - if frame.header.data == nil { - return nil - } - if frame.header.data.Len() == 0 { - return nil - } - return frame.header.data -} - -func (frame *hybiFrameReader) TrailerReader() io.Reader { return nil } - -func (frame *hybiFrameReader) Len() (n int) { return frame.length } - -// A hybiFrameReaderFactory creates new frame reader based on its frame type. -type hybiFrameReaderFactory struct { - *bufio.Reader -} - -// NewFrameReader reads a frame header from the connection, and creates new reader for the frame. -// See Section 5.2 Base Framing protocol for detail. -// http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17#section-5.2 -func (buf hybiFrameReaderFactory) NewFrameReader() (frame frameReader, err error) { - hybiFrame := new(hybiFrameReader) - frame = hybiFrame - var header []byte - var b byte - // First byte. FIN/RSV1/RSV2/RSV3/OpCode(4bits) - b, err = buf.ReadByte() - if err != nil { - return - } - header = append(header, b) - hybiFrame.header.Fin = ((header[0] >> 7) & 1) != 0 - for i := 0; i < 3; i++ { - j := uint(6 - i) - hybiFrame.header.Rsv[i] = ((header[0] >> j) & 1) != 0 - } - hybiFrame.header.OpCode = header[0] & 0x0f - - // Second byte. Mask/Payload len(7bits) - b, err = buf.ReadByte() - if err != nil { - return - } - header = append(header, b) - mask := (b & 0x80) != 0 - b &= 0x7f - lengthFields := 0 - switch { - case b <= 125: // Payload length 7bits. - hybiFrame.header.Length = int64(b) - case b == 126: // Payload length 7+16bits - lengthFields = 2 - case b == 127: // Payload length 7+64bits - lengthFields = 8 - } - for i := 0; i < lengthFields; i++ { - b, err = buf.ReadByte() - if err != nil { - return - } - if lengthFields == 8 && i == 0 { // MSB must be zero when 7+64 bits - b &= 0x7f - } - header = append(header, b) - hybiFrame.header.Length = hybiFrame.header.Length*256 + int64(b) - } - if mask { - // Masking key. 4 bytes. - for i := 0; i < 4; i++ { - b, err = buf.ReadByte() - if err != nil { - return - } - header = append(header, b) - hybiFrame.header.MaskingKey = append(hybiFrame.header.MaskingKey, b) - } - } - hybiFrame.reader = io.LimitReader(buf.Reader, hybiFrame.header.Length) - hybiFrame.header.data = bytes.NewBuffer(header) - hybiFrame.length = len(header) + int(hybiFrame.header.Length) - return -} - -// A HybiFrameWriter is a writer for hybi frame. -type hybiFrameWriter struct { - writer *bufio.Writer - - header *hybiFrameHeader -} - -func (frame *hybiFrameWriter) Write(msg []byte) (n int, err error) { - var header []byte - var b byte - if frame.header.Fin { - b |= 0x80 - } - for i := 0; i < 3; i++ { - if frame.header.Rsv[i] { - j := uint(6 - i) - b |= 1 << j - } - } - b |= frame.header.OpCode - header = append(header, b) - if frame.header.MaskingKey != nil { - b = 0x80 - } else { - b = 0 - } - lengthFields := 0 - length := len(msg) - switch { - case length <= 125: - b |= byte(length) - case length < 65536: - b |= 126 - lengthFields = 2 - default: - b |= 127 - lengthFields = 8 - } - header = append(header, b) - for i := 0; i < lengthFields; i++ { - j := uint((lengthFields - i - 1) * 8) - b = byte((length >> j) & 0xff) - header = append(header, b) - } - if frame.header.MaskingKey != nil { - if len(frame.header.MaskingKey) != 4 { - return 0, ErrBadMaskingKey - } - header = append(header, frame.header.MaskingKey...) - frame.writer.Write(header) - data := make([]byte, length) - for i := range data { - data[i] = msg[i] ^ frame.header.MaskingKey[i%4] - } - frame.writer.Write(data) - err = frame.writer.Flush() - return length, err - } - frame.writer.Write(header) - frame.writer.Write(msg) - err = frame.writer.Flush() - return length, err -} - -func (frame *hybiFrameWriter) Close() error { return nil } - -type hybiFrameWriterFactory struct { - *bufio.Writer - needMaskingKey bool -} - -func (buf hybiFrameWriterFactory) NewFrameWriter(payloadType byte) (frame frameWriter, err error) { - frameHeader := &hybiFrameHeader{Fin: true, OpCode: payloadType} - if buf.needMaskingKey { - frameHeader.MaskingKey, err = generateMaskingKey() - if err != nil { - return nil, err - } - } - return &hybiFrameWriter{writer: buf.Writer, header: frameHeader}, nil -} - -type hybiFrameHandler struct { - conn *Conn - payloadType byte -} - -func (handler *hybiFrameHandler) HandleFrame(frame frameReader) (frameReader, error) { - if handler.conn.IsServerConn() { - // The client MUST mask all frames sent to the server. - if frame.(*hybiFrameReader).header.MaskingKey == nil { - handler.WriteClose(closeStatusProtocolError) - return nil, io.EOF - } - } else { - // The server MUST NOT mask all frames. - if frame.(*hybiFrameReader).header.MaskingKey != nil { - handler.WriteClose(closeStatusProtocolError) - return nil, io.EOF - } - } - if header := frame.HeaderReader(); header != nil { - io.Copy(ioutil.Discard, header) - } - switch frame.PayloadType() { - case ContinuationFrame: - frame.(*hybiFrameReader).header.OpCode = handler.payloadType - case TextFrame, BinaryFrame: - handler.payloadType = frame.PayloadType() - case CloseFrame: - return nil, io.EOF - case PingFrame, PongFrame: - b := make([]byte, maxControlFramePayloadLength) - n, err := io.ReadFull(frame, b) - if err != nil && err != io.EOF && err != io.ErrUnexpectedEOF { - return nil, err - } - io.Copy(ioutil.Discard, frame) - if frame.PayloadType() == PingFrame { - if _, err := handler.WritePong(b[:n]); err != nil { - return nil, err - } - } - return nil, nil - } - return frame, nil -} - -func (handler *hybiFrameHandler) WriteClose(status int) (err error) { - handler.conn.wio.Lock() - defer handler.conn.wio.Unlock() - w, err := handler.conn.frameWriterFactory.NewFrameWriter(CloseFrame) - if err != nil { - return err - } - msg := make([]byte, 2) - binary.BigEndian.PutUint16(msg, uint16(status)) - _, err = w.Write(msg) - w.Close() - return err -} - -func (handler *hybiFrameHandler) WritePong(msg []byte) (n int, err error) { - handler.conn.wio.Lock() - defer handler.conn.wio.Unlock() - w, err := handler.conn.frameWriterFactory.NewFrameWriter(PongFrame) - if err != nil { - return 0, err - } - n, err = w.Write(msg) - w.Close() - return n, err -} - -// newHybiConn creates a new WebSocket connection speaking hybi draft protocol. -func newHybiConn(config *Config, buf *bufio.ReadWriter, rwc io.ReadWriteCloser, request *http.Request) *Conn { - if buf == nil { - br := bufio.NewReader(rwc) - bw := bufio.NewWriter(rwc) - buf = bufio.NewReadWriter(br, bw) - } - ws := &Conn{config: config, request: request, buf: buf, rwc: rwc, - frameReaderFactory: hybiFrameReaderFactory{buf.Reader}, - frameWriterFactory: hybiFrameWriterFactory{ - buf.Writer, request == nil}, - PayloadType: TextFrame, - defaultCloseStatus: closeStatusNormal} - ws.frameHandler = &hybiFrameHandler{conn: ws} - return ws -} - -// generateMaskingKey generates a masking key for a frame. -func generateMaskingKey() (maskingKey []byte, err error) { - maskingKey = make([]byte, 4) - if _, err = io.ReadFull(rand.Reader, maskingKey); err != nil { - return - } - return -} - -// generateNonce generates a nonce consisting of a randomly selected 16-byte -// value that has been base64-encoded. -func generateNonce() (nonce []byte) { - key := make([]byte, 16) - if _, err := io.ReadFull(rand.Reader, key); err != nil { - panic(err) - } - nonce = make([]byte, 24) - base64.StdEncoding.Encode(nonce, key) - return -} - -// removeZone removes IPv6 zone identifer from host. -// E.g., "[fe80::1%en0]:8080" to "[fe80::1]:8080" -func removeZone(host string) string { - if !strings.HasPrefix(host, "[") { - return host - } - i := strings.LastIndex(host, "]") - if i < 0 { - return host - } - j := strings.LastIndex(host[:i], "%") - if j < 0 { - return host - } - return host[:j] + host[i:] -} - -// getNonceAccept computes the base64-encoded SHA-1 of the concatenation of -// the nonce ("Sec-WebSocket-Key" value) with the websocket GUID string. -func getNonceAccept(nonce []byte) (expected []byte, err error) { - h := sha1.New() - if _, err = h.Write(nonce); err != nil { - return - } - if _, err = h.Write([]byte(websocketGUID)); err != nil { - return - } - expected = make([]byte, 28) - base64.StdEncoding.Encode(expected, h.Sum(nil)) - return -} - -// Client handshake described in draft-ietf-hybi-thewebsocket-protocol-17 -func hybiClientHandshake(config *Config, br *bufio.Reader, bw *bufio.Writer) (err error) { - bw.WriteString("GET " + config.Location.RequestURI() + " HTTP/1.1\r\n") - - // According to RFC 6874, an HTTP client, proxy, or other - // intermediary must remove any IPv6 zone identifier attached - // to an outgoing URI. - bw.WriteString("Host: " + removeZone(config.Location.Host) + "\r\n") - bw.WriteString("Upgrade: websocket\r\n") - bw.WriteString("Connection: Upgrade\r\n") - nonce := generateNonce() - if config.handshakeData != nil { - nonce = []byte(config.handshakeData["key"]) - } - bw.WriteString("Sec-WebSocket-Key: " + string(nonce) + "\r\n") - bw.WriteString("Origin: " + strings.ToLower(config.Origin.String()) + "\r\n") - - if config.Version != ProtocolVersionHybi13 { - return ErrBadProtocolVersion - } - - bw.WriteString("Sec-WebSocket-Version: " + fmt.Sprintf("%d", config.Version) + "\r\n") - if len(config.Protocol) > 0 { - bw.WriteString("Sec-WebSocket-Protocol: " + strings.Join(config.Protocol, ", ") + "\r\n") - } - // TODO(ukai): send Sec-WebSocket-Extensions. - err = config.Header.WriteSubset(bw, handshakeHeader) - if err != nil { - return err - } - - bw.WriteString("\r\n") - if err = bw.Flush(); err != nil { - return err - } - - resp, err := http.ReadResponse(br, &http.Request{Method: "GET"}) - if err != nil { - return err - } - if resp.StatusCode != 101 { - return ErrBadStatus - } - if strings.ToLower(resp.Header.Get("Upgrade")) != "websocket" || - strings.ToLower(resp.Header.Get("Connection")) != "upgrade" { - return ErrBadUpgrade - } - expectedAccept, err := getNonceAccept(nonce) - if err != nil { - return err - } - if resp.Header.Get("Sec-WebSocket-Accept") != string(expectedAccept) { - return ErrChallengeResponse - } - if resp.Header.Get("Sec-WebSocket-Extensions") != "" { - return ErrUnsupportedExtensions - } - offeredProtocol := resp.Header.Get("Sec-WebSocket-Protocol") - if offeredProtocol != "" { - protocolMatched := false - for i := 0; i < len(config.Protocol); i++ { - if config.Protocol[i] == offeredProtocol { - protocolMatched = true - break - } - } - if !protocolMatched { - return ErrBadWebSocketProtocol - } - config.Protocol = []string{offeredProtocol} - } - - return nil -} - -// newHybiClientConn creates a client WebSocket connection after handshake. -func newHybiClientConn(config *Config, buf *bufio.ReadWriter, rwc io.ReadWriteCloser) *Conn { - return newHybiConn(config, buf, rwc, nil) -} - -// A HybiServerHandshaker performs a server handshake using hybi draft protocol. -type hybiServerHandshaker struct { - *Config - accept []byte -} - -func (c *hybiServerHandshaker) ReadHandshake(buf *bufio.Reader, req *http.Request) (code int, err error) { - c.Version = ProtocolVersionHybi13 - if req.Method != "GET" { - return http.StatusMethodNotAllowed, ErrBadRequestMethod - } - // HTTP version can be safely ignored. - - if strings.ToLower(req.Header.Get("Upgrade")) != "websocket" || - !strings.Contains(strings.ToLower(req.Header.Get("Connection")), "upgrade") { - return http.StatusBadRequest, ErrNotWebSocket - } - - key := req.Header.Get("Sec-Websocket-Key") - if key == "" { - return http.StatusBadRequest, ErrChallengeResponse - } - version := req.Header.Get("Sec-Websocket-Version") - switch version { - case "13": - c.Version = ProtocolVersionHybi13 - default: - return http.StatusBadRequest, ErrBadWebSocketVersion - } - var scheme string - if req.TLS != nil { - scheme = "wss" - } else { - scheme = "ws" - } - c.Location, err = url.ParseRequestURI(scheme + "://" + req.Host + req.URL.RequestURI()) - if err != nil { - return http.StatusBadRequest, err - } - protocol := strings.TrimSpace(req.Header.Get("Sec-Websocket-Protocol")) - if protocol != "" { - protocols := strings.Split(protocol, ",") - for i := 0; i < len(protocols); i++ { - c.Protocol = append(c.Protocol, strings.TrimSpace(protocols[i])) - } - } - c.accept, err = getNonceAccept([]byte(key)) - if err != nil { - return http.StatusInternalServerError, err - } - return http.StatusSwitchingProtocols, nil -} - -// Origin parses the Origin header in req. -// If the Origin header is not set, it returns nil and nil. -func Origin(config *Config, req *http.Request) (*url.URL, error) { - var origin string - switch config.Version { - case ProtocolVersionHybi13: - origin = req.Header.Get("Origin") - } - if origin == "" { - return nil, nil - } - return url.ParseRequestURI(origin) -} - -func (c *hybiServerHandshaker) AcceptHandshake(buf *bufio.Writer) (err error) { - if len(c.Protocol) > 0 { - if len(c.Protocol) != 1 { - // You need choose a Protocol in Handshake func in Server. - return ErrBadWebSocketProtocol - } - } - buf.WriteString("HTTP/1.1 101 Switching Protocols\r\n") - buf.WriteString("Upgrade: websocket\r\n") - buf.WriteString("Connection: Upgrade\r\n") - buf.WriteString("Sec-WebSocket-Accept: " + string(c.accept) + "\r\n") - if len(c.Protocol) > 0 { - buf.WriteString("Sec-WebSocket-Protocol: " + c.Protocol[0] + "\r\n") - } - // TODO(ukai): send Sec-WebSocket-Extensions. - if c.Header != nil { - err := c.Header.WriteSubset(buf, handshakeHeader) - if err != nil { - return err - } - } - buf.WriteString("\r\n") - return buf.Flush() -} - -func (c *hybiServerHandshaker) NewServerConn(buf *bufio.ReadWriter, rwc io.ReadWriteCloser, request *http.Request) *Conn { - return newHybiServerConn(c.Config, buf, rwc, request) -} - -// newHybiServerConn returns a new WebSocket connection speaking hybi draft protocol. -func newHybiServerConn(config *Config, buf *bufio.ReadWriter, rwc io.ReadWriteCloser, request *http.Request) *Conn { - return newHybiConn(config, buf, rwc, request) -} diff --git a/vendor/golang.org/x/net/websocket/hybi_test.go b/vendor/golang.org/x/net/websocket/hybi_test.go deleted file mode 100644 index 9504aa2d..00000000 --- a/vendor/golang.org/x/net/websocket/hybi_test.go +++ /dev/null @@ -1,608 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "bufio" - "bytes" - "fmt" - "io" - "net/http" - "net/url" - "strings" - "testing" -) - -// Test the getNonceAccept function with values in -// http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17 -func TestSecWebSocketAccept(t *testing.T) { - nonce := []byte("dGhlIHNhbXBsZSBub25jZQ==") - expected := []byte("s3pPLMBiTxaQ9kYGzzhZRbK+xOo=") - accept, err := getNonceAccept(nonce) - if err != nil { - t.Errorf("getNonceAccept: returned error %v", err) - return - } - if !bytes.Equal(expected, accept) { - t.Errorf("getNonceAccept: expected %q got %q", expected, accept) - } -} - -func TestHybiClientHandshake(t *testing.T) { - type test struct { - url, host string - } - tests := []test{ - {"ws://server.example.com/chat", "server.example.com"}, - {"ws://127.0.0.1/chat", "127.0.0.1"}, - } - if _, err := url.ParseRequestURI("http://[fe80::1%25lo0]"); err == nil { - tests = append(tests, test{"ws://[fe80::1%25lo0]/chat", "[fe80::1]"}) - } - - for _, tt := range tests { - var b bytes.Buffer - bw := bufio.NewWriter(&b) - br := bufio.NewReader(strings.NewReader(`HTTP/1.1 101 Switching Protocols -Upgrade: websocket -Connection: Upgrade -Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= -Sec-WebSocket-Protocol: chat - -`)) - var err error - var config Config - config.Location, err = url.ParseRequestURI(tt.url) - if err != nil { - t.Fatal("location url", err) - } - config.Origin, err = url.ParseRequestURI("http://example.com") - if err != nil { - t.Fatal("origin url", err) - } - config.Protocol = append(config.Protocol, "chat") - config.Protocol = append(config.Protocol, "superchat") - config.Version = ProtocolVersionHybi13 - config.handshakeData = map[string]string{ - "key": "dGhlIHNhbXBsZSBub25jZQ==", - } - if err := hybiClientHandshake(&config, br, bw); err != nil { - t.Fatal("handshake", err) - } - req, err := http.ReadRequest(bufio.NewReader(&b)) - if err != nil { - t.Fatal("read request", err) - } - if req.Method != "GET" { - t.Errorf("request method expected GET, but got %s", req.Method) - } - if req.URL.Path != "/chat" { - t.Errorf("request path expected /chat, but got %s", req.URL.Path) - } - if req.Proto != "HTTP/1.1" { - t.Errorf("request proto expected HTTP/1.1, but got %s", req.Proto) - } - if req.Host != tt.host { - t.Errorf("request host expected %s, but got %s", tt.host, req.Host) - } - var expectedHeader = map[string]string{ - "Connection": "Upgrade", - "Upgrade": "websocket", - "Sec-Websocket-Key": config.handshakeData["key"], - "Origin": config.Origin.String(), - "Sec-Websocket-Protocol": "chat, superchat", - "Sec-Websocket-Version": fmt.Sprintf("%d", ProtocolVersionHybi13), - } - for k, v := range expectedHeader { - if req.Header.Get(k) != v { - t.Errorf("%s expected %s, but got %v", k, v, req.Header.Get(k)) - } - } - } -} - -func TestHybiClientHandshakeWithHeader(t *testing.T) { - b := bytes.NewBuffer([]byte{}) - bw := bufio.NewWriter(b) - br := bufio.NewReader(strings.NewReader(`HTTP/1.1 101 Switching Protocols -Upgrade: websocket -Connection: Upgrade -Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= -Sec-WebSocket-Protocol: chat - -`)) - var err error - config := new(Config) - config.Location, err = url.ParseRequestURI("ws://server.example.com/chat") - if err != nil { - t.Fatal("location url", err) - } - config.Origin, err = url.ParseRequestURI("http://example.com") - if err != nil { - t.Fatal("origin url", err) - } - config.Protocol = append(config.Protocol, "chat") - config.Protocol = append(config.Protocol, "superchat") - config.Version = ProtocolVersionHybi13 - config.Header = http.Header(make(map[string][]string)) - config.Header.Add("User-Agent", "test") - - config.handshakeData = map[string]string{ - "key": "dGhlIHNhbXBsZSBub25jZQ==", - } - err = hybiClientHandshake(config, br, bw) - if err != nil { - t.Errorf("handshake failed: %v", err) - } - req, err := http.ReadRequest(bufio.NewReader(b)) - if err != nil { - t.Fatalf("read request: %v", err) - } - if req.Method != "GET" { - t.Errorf("request method expected GET, but got %q", req.Method) - } - if req.URL.Path != "/chat" { - t.Errorf("request path expected /chat, but got %q", req.URL.Path) - } - if req.Proto != "HTTP/1.1" { - t.Errorf("request proto expected HTTP/1.1, but got %q", req.Proto) - } - if req.Host != "server.example.com" { - t.Errorf("request Host expected server.example.com, but got %v", req.Host) - } - var expectedHeader = map[string]string{ - "Connection": "Upgrade", - "Upgrade": "websocket", - "Sec-Websocket-Key": config.handshakeData["key"], - "Origin": config.Origin.String(), - "Sec-Websocket-Protocol": "chat, superchat", - "Sec-Websocket-Version": fmt.Sprintf("%d", ProtocolVersionHybi13), - "User-Agent": "test", - } - for k, v := range expectedHeader { - if req.Header.Get(k) != v { - t.Errorf(fmt.Sprintf("%s expected %q but got %q", k, v, req.Header.Get(k))) - } - } -} - -func TestHybiServerHandshake(t *testing.T) { - config := new(Config) - handshaker := &hybiServerHandshaker{Config: config} - br := bufio.NewReader(strings.NewReader(`GET /chat HTTP/1.1 -Host: server.example.com -Upgrade: websocket -Connection: Upgrade -Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== -Origin: http://example.com -Sec-WebSocket-Protocol: chat, superchat -Sec-WebSocket-Version: 13 - -`)) - req, err := http.ReadRequest(br) - if err != nil { - t.Fatal("request", err) - } - code, err := handshaker.ReadHandshake(br, req) - if err != nil { - t.Errorf("handshake failed: %v", err) - } - if code != http.StatusSwitchingProtocols { - t.Errorf("status expected %q but got %q", http.StatusSwitchingProtocols, code) - } - expectedProtocols := []string{"chat", "superchat"} - if fmt.Sprintf("%v", config.Protocol) != fmt.Sprintf("%v", expectedProtocols) { - t.Errorf("protocol expected %q but got %q", expectedProtocols, config.Protocol) - } - b := bytes.NewBuffer([]byte{}) - bw := bufio.NewWriter(b) - - config.Protocol = config.Protocol[:1] - - err = handshaker.AcceptHandshake(bw) - if err != nil { - t.Errorf("handshake response failed: %v", err) - } - expectedResponse := strings.Join([]string{ - "HTTP/1.1 101 Switching Protocols", - "Upgrade: websocket", - "Connection: Upgrade", - "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=", - "Sec-WebSocket-Protocol: chat", - "", ""}, "\r\n") - - if b.String() != expectedResponse { - t.Errorf("handshake expected %q but got %q", expectedResponse, b.String()) - } -} - -func TestHybiServerHandshakeNoSubProtocol(t *testing.T) { - config := new(Config) - handshaker := &hybiServerHandshaker{Config: config} - br := bufio.NewReader(strings.NewReader(`GET /chat HTTP/1.1 -Host: server.example.com -Upgrade: websocket -Connection: Upgrade -Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== -Origin: http://example.com -Sec-WebSocket-Version: 13 - -`)) - req, err := http.ReadRequest(br) - if err != nil { - t.Fatal("request", err) - } - code, err := handshaker.ReadHandshake(br, req) - if err != nil { - t.Errorf("handshake failed: %v", err) - } - if code != http.StatusSwitchingProtocols { - t.Errorf("status expected %q but got %q", http.StatusSwitchingProtocols, code) - } - if len(config.Protocol) != 0 { - t.Errorf("len(config.Protocol) expected 0, but got %q", len(config.Protocol)) - } - b := bytes.NewBuffer([]byte{}) - bw := bufio.NewWriter(b) - - err = handshaker.AcceptHandshake(bw) - if err != nil { - t.Errorf("handshake response failed: %v", err) - } - expectedResponse := strings.Join([]string{ - "HTTP/1.1 101 Switching Protocols", - "Upgrade: websocket", - "Connection: Upgrade", - "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=", - "", ""}, "\r\n") - - if b.String() != expectedResponse { - t.Errorf("handshake expected %q but got %q", expectedResponse, b.String()) - } -} - -func TestHybiServerHandshakeHybiBadVersion(t *testing.T) { - config := new(Config) - handshaker := &hybiServerHandshaker{Config: config} - br := bufio.NewReader(strings.NewReader(`GET /chat HTTP/1.1 -Host: server.example.com -Upgrade: websocket -Connection: Upgrade -Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== -Sec-WebSocket-Origin: http://example.com -Sec-WebSocket-Protocol: chat, superchat -Sec-WebSocket-Version: 9 - -`)) - req, err := http.ReadRequest(br) - if err != nil { - t.Fatal("request", err) - } - code, err := handshaker.ReadHandshake(br, req) - if err != ErrBadWebSocketVersion { - t.Errorf("handshake expected err %q but got %q", ErrBadWebSocketVersion, err) - } - if code != http.StatusBadRequest { - t.Errorf("status expected %q but got %q", http.StatusBadRequest, code) - } -} - -func testHybiFrame(t *testing.T, testHeader, testPayload, testMaskedPayload []byte, frameHeader *hybiFrameHeader) { - b := bytes.NewBuffer([]byte{}) - frameWriterFactory := &hybiFrameWriterFactory{bufio.NewWriter(b), false} - w, _ := frameWriterFactory.NewFrameWriter(TextFrame) - w.(*hybiFrameWriter).header = frameHeader - _, err := w.Write(testPayload) - w.Close() - if err != nil { - t.Errorf("Write error %q", err) - } - var expectedFrame []byte - expectedFrame = append(expectedFrame, testHeader...) - expectedFrame = append(expectedFrame, testMaskedPayload...) - if !bytes.Equal(expectedFrame, b.Bytes()) { - t.Errorf("frame expected %q got %q", expectedFrame, b.Bytes()) - } - frameReaderFactory := &hybiFrameReaderFactory{bufio.NewReader(b)} - r, err := frameReaderFactory.NewFrameReader() - if err != nil { - t.Errorf("Read error %q", err) - } - if header := r.HeaderReader(); header == nil { - t.Errorf("no header") - } else { - actualHeader := make([]byte, r.Len()) - n, err := header.Read(actualHeader) - if err != nil { - t.Errorf("Read header error %q", err) - } else { - if n < len(testHeader) { - t.Errorf("header too short %q got %q", testHeader, actualHeader[:n]) - } - if !bytes.Equal(testHeader, actualHeader[:n]) { - t.Errorf("header expected %q got %q", testHeader, actualHeader[:n]) - } - } - } - if trailer := r.TrailerReader(); trailer != nil { - t.Errorf("unexpected trailer %q", trailer) - } - frame := r.(*hybiFrameReader) - if frameHeader.Fin != frame.header.Fin || - frameHeader.OpCode != frame.header.OpCode || - len(testPayload) != int(frame.header.Length) { - t.Errorf("mismatch %v (%d) vs %v", frameHeader, len(testPayload), frame) - } - payload := make([]byte, len(testPayload)) - _, err = r.Read(payload) - if err != nil && err != io.EOF { - t.Errorf("read %v", err) - } - if !bytes.Equal(testPayload, payload) { - t.Errorf("payload %q vs %q", testPayload, payload) - } -} - -func TestHybiShortTextFrame(t *testing.T) { - frameHeader := &hybiFrameHeader{Fin: true, OpCode: TextFrame} - payload := []byte("hello") - testHybiFrame(t, []byte{0x81, 0x05}, payload, payload, frameHeader) - - payload = make([]byte, 125) - testHybiFrame(t, []byte{0x81, 125}, payload, payload, frameHeader) -} - -func TestHybiShortMaskedTextFrame(t *testing.T) { - frameHeader := &hybiFrameHeader{Fin: true, OpCode: TextFrame, - MaskingKey: []byte{0xcc, 0x55, 0x80, 0x20}} - payload := []byte("hello") - maskedPayload := []byte{0xa4, 0x30, 0xec, 0x4c, 0xa3} - header := []byte{0x81, 0x85} - header = append(header, frameHeader.MaskingKey...) - testHybiFrame(t, header, payload, maskedPayload, frameHeader) -} - -func TestHybiShortBinaryFrame(t *testing.T) { - frameHeader := &hybiFrameHeader{Fin: true, OpCode: BinaryFrame} - payload := []byte("hello") - testHybiFrame(t, []byte{0x82, 0x05}, payload, payload, frameHeader) - - payload = make([]byte, 125) - testHybiFrame(t, []byte{0x82, 125}, payload, payload, frameHeader) -} - -func TestHybiControlFrame(t *testing.T) { - payload := []byte("hello") - - frameHeader := &hybiFrameHeader{Fin: true, OpCode: PingFrame} - testHybiFrame(t, []byte{0x89, 0x05}, payload, payload, frameHeader) - - frameHeader = &hybiFrameHeader{Fin: true, OpCode: PingFrame} - testHybiFrame(t, []byte{0x89, 0x00}, nil, nil, frameHeader) - - frameHeader = &hybiFrameHeader{Fin: true, OpCode: PongFrame} - testHybiFrame(t, []byte{0x8A, 0x05}, payload, payload, frameHeader) - - frameHeader = &hybiFrameHeader{Fin: true, OpCode: PongFrame} - testHybiFrame(t, []byte{0x8A, 0x00}, nil, nil, frameHeader) - - frameHeader = &hybiFrameHeader{Fin: true, OpCode: CloseFrame} - payload = []byte{0x03, 0xe8} // 1000 - testHybiFrame(t, []byte{0x88, 0x02}, payload, payload, frameHeader) -} - -func TestHybiLongFrame(t *testing.T) { - frameHeader := &hybiFrameHeader{Fin: true, OpCode: TextFrame} - payload := make([]byte, 126) - testHybiFrame(t, []byte{0x81, 126, 0x00, 126}, payload, payload, frameHeader) - - payload = make([]byte, 65535) - testHybiFrame(t, []byte{0x81, 126, 0xff, 0xff}, payload, payload, frameHeader) - - payload = make([]byte, 65536) - testHybiFrame(t, []byte{0x81, 127, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}, payload, payload, frameHeader) -} - -func TestHybiClientRead(t *testing.T) { - wireData := []byte{0x81, 0x05, 'h', 'e', 'l', 'l', 'o', - 0x89, 0x05, 'h', 'e', 'l', 'l', 'o', // ping - 0x81, 0x05, 'w', 'o', 'r', 'l', 'd'} - br := bufio.NewReader(bytes.NewBuffer(wireData)) - bw := bufio.NewWriter(bytes.NewBuffer([]byte{})) - conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, nil) - - msg := make([]byte, 512) - n, err := conn.Read(msg) - if err != nil { - t.Errorf("read 1st frame, error %q", err) - } - if n != 5 { - t.Errorf("read 1st frame, expect 5, got %d", n) - } - if !bytes.Equal(wireData[2:7], msg[:n]) { - t.Errorf("read 1st frame %v, got %v", wireData[2:7], msg[:n]) - } - n, err = conn.Read(msg) - if err != nil { - t.Errorf("read 2nd frame, error %q", err) - } - if n != 5 { - t.Errorf("read 2nd frame, expect 5, got %d", n) - } - if !bytes.Equal(wireData[16:21], msg[:n]) { - t.Errorf("read 2nd frame %v, got %v", wireData[16:21], msg[:n]) - } - n, err = conn.Read(msg) - if err == nil { - t.Errorf("read not EOF") - } - if n != 0 { - t.Errorf("expect read 0, got %d", n) - } -} - -func TestHybiShortRead(t *testing.T) { - wireData := []byte{0x81, 0x05, 'h', 'e', 'l', 'l', 'o', - 0x89, 0x05, 'h', 'e', 'l', 'l', 'o', // ping - 0x81, 0x05, 'w', 'o', 'r', 'l', 'd'} - br := bufio.NewReader(bytes.NewBuffer(wireData)) - bw := bufio.NewWriter(bytes.NewBuffer([]byte{})) - conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, nil) - - step := 0 - pos := 0 - expectedPos := []int{2, 5, 16, 19} - expectedLen := []int{3, 2, 3, 2} - for { - msg := make([]byte, 3) - n, err := conn.Read(msg) - if step >= len(expectedPos) { - if err == nil { - t.Errorf("read not EOF") - } - if n != 0 { - t.Errorf("expect read 0, got %d", n) - } - return - } - pos = expectedPos[step] - endPos := pos + expectedLen[step] - if err != nil { - t.Errorf("read from %d, got error %q", pos, err) - return - } - if n != endPos-pos { - t.Errorf("read from %d, expect %d, got %d", pos, endPos-pos, n) - } - if !bytes.Equal(wireData[pos:endPos], msg[:n]) { - t.Errorf("read from %d, frame %v, got %v", pos, wireData[pos:endPos], msg[:n]) - } - step++ - } -} - -func TestHybiServerRead(t *testing.T) { - wireData := []byte{0x81, 0x85, 0xcc, 0x55, 0x80, 0x20, - 0xa4, 0x30, 0xec, 0x4c, 0xa3, // hello - 0x89, 0x85, 0xcc, 0x55, 0x80, 0x20, - 0xa4, 0x30, 0xec, 0x4c, 0xa3, // ping: hello - 0x81, 0x85, 0xed, 0x83, 0xb4, 0x24, - 0x9a, 0xec, 0xc6, 0x48, 0x89, // world - } - br := bufio.NewReader(bytes.NewBuffer(wireData)) - bw := bufio.NewWriter(bytes.NewBuffer([]byte{})) - conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, new(http.Request)) - - expected := [][]byte{[]byte("hello"), []byte("world")} - - msg := make([]byte, 512) - n, err := conn.Read(msg) - if err != nil { - t.Errorf("read 1st frame, error %q", err) - } - if n != 5 { - t.Errorf("read 1st frame, expect 5, got %d", n) - } - if !bytes.Equal(expected[0], msg[:n]) { - t.Errorf("read 1st frame %q, got %q", expected[0], msg[:n]) - } - - n, err = conn.Read(msg) - if err != nil { - t.Errorf("read 2nd frame, error %q", err) - } - if n != 5 { - t.Errorf("read 2nd frame, expect 5, got %d", n) - } - if !bytes.Equal(expected[1], msg[:n]) { - t.Errorf("read 2nd frame %q, got %q", expected[1], msg[:n]) - } - - n, err = conn.Read(msg) - if err == nil { - t.Errorf("read not EOF") - } - if n != 0 { - t.Errorf("expect read 0, got %d", n) - } -} - -func TestHybiServerReadWithoutMasking(t *testing.T) { - wireData := []byte{0x81, 0x05, 'h', 'e', 'l', 'l', 'o'} - br := bufio.NewReader(bytes.NewBuffer(wireData)) - bw := bufio.NewWriter(bytes.NewBuffer([]byte{})) - conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, new(http.Request)) - // server MUST close the connection upon receiving a non-masked frame. - msg := make([]byte, 512) - _, err := conn.Read(msg) - if err != io.EOF { - t.Errorf("read 1st frame, expect %q, but got %q", io.EOF, err) - } -} - -func TestHybiClientReadWithMasking(t *testing.T) { - wireData := []byte{0x81, 0x85, 0xcc, 0x55, 0x80, 0x20, - 0xa4, 0x30, 0xec, 0x4c, 0xa3, // hello - } - br := bufio.NewReader(bytes.NewBuffer(wireData)) - bw := bufio.NewWriter(bytes.NewBuffer([]byte{})) - conn := newHybiConn(newConfig(t, "/"), bufio.NewReadWriter(br, bw), nil, nil) - - // client MUST close the connection upon receiving a masked frame. - msg := make([]byte, 512) - _, err := conn.Read(msg) - if err != io.EOF { - t.Errorf("read 1st frame, expect %q, but got %q", io.EOF, err) - } -} - -// Test the hybiServerHandshaker supports firefox implementation and -// checks Connection request header include (but it's not necessary -// equal to) "upgrade" -func TestHybiServerFirefoxHandshake(t *testing.T) { - config := new(Config) - handshaker := &hybiServerHandshaker{Config: config} - br := bufio.NewReader(strings.NewReader(`GET /chat HTTP/1.1 -Host: server.example.com -Upgrade: websocket -Connection: keep-alive, upgrade -Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== -Origin: http://example.com -Sec-WebSocket-Protocol: chat, superchat -Sec-WebSocket-Version: 13 - -`)) - req, err := http.ReadRequest(br) - if err != nil { - t.Fatal("request", err) - } - code, err := handshaker.ReadHandshake(br, req) - if err != nil { - t.Errorf("handshake failed: %v", err) - } - if code != http.StatusSwitchingProtocols { - t.Errorf("status expected %q but got %q", http.StatusSwitchingProtocols, code) - } - b := bytes.NewBuffer([]byte{}) - bw := bufio.NewWriter(b) - - config.Protocol = []string{"chat"} - - err = handshaker.AcceptHandshake(bw) - if err != nil { - t.Errorf("handshake response failed: %v", err) - } - expectedResponse := strings.Join([]string{ - "HTTP/1.1 101 Switching Protocols", - "Upgrade: websocket", - "Connection: Upgrade", - "Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=", - "Sec-WebSocket-Protocol: chat", - "", ""}, "\r\n") - - if b.String() != expectedResponse { - t.Errorf("handshake expected %q but got %q", expectedResponse, b.String()) - } -} diff --git a/vendor/golang.org/x/net/websocket/server.go b/vendor/golang.org/x/net/websocket/server.go deleted file mode 100644 index 0895dea1..00000000 --- a/vendor/golang.org/x/net/websocket/server.go +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "bufio" - "fmt" - "io" - "net/http" -) - -func newServerConn(rwc io.ReadWriteCloser, buf *bufio.ReadWriter, req *http.Request, config *Config, handshake func(*Config, *http.Request) error) (conn *Conn, err error) { - var hs serverHandshaker = &hybiServerHandshaker{Config: config} - code, err := hs.ReadHandshake(buf.Reader, req) - if err == ErrBadWebSocketVersion { - fmt.Fprintf(buf, "HTTP/1.1 %03d %s\r\n", code, http.StatusText(code)) - fmt.Fprintf(buf, "Sec-WebSocket-Version: %s\r\n", SupportedProtocolVersion) - buf.WriteString("\r\n") - buf.WriteString(err.Error()) - buf.Flush() - return - } - if err != nil { - fmt.Fprintf(buf, "HTTP/1.1 %03d %s\r\n", code, http.StatusText(code)) - buf.WriteString("\r\n") - buf.WriteString(err.Error()) - buf.Flush() - return - } - if handshake != nil { - err = handshake(config, req) - if err != nil { - code = http.StatusForbidden - fmt.Fprintf(buf, "HTTP/1.1 %03d %s\r\n", code, http.StatusText(code)) - buf.WriteString("\r\n") - buf.Flush() - return - } - } - err = hs.AcceptHandshake(buf.Writer) - if err != nil { - code = http.StatusBadRequest - fmt.Fprintf(buf, "HTTP/1.1 %03d %s\r\n", code, http.StatusText(code)) - buf.WriteString("\r\n") - buf.Flush() - return - } - conn = hs.NewServerConn(buf, rwc, req) - return -} - -// Server represents a server of a WebSocket. -type Server struct { - // Config is a WebSocket configuration for new WebSocket connection. - Config - - // Handshake is an optional function in WebSocket handshake. - // For example, you can check, or don't check Origin header. - // Another example, you can select config.Protocol. - Handshake func(*Config, *http.Request) error - - // Handler handles a WebSocket connection. - Handler -} - -// ServeHTTP implements the http.Handler interface for a WebSocket -func (s Server) ServeHTTP(w http.ResponseWriter, req *http.Request) { - s.serveWebSocket(w, req) -} - -func (s Server) serveWebSocket(w http.ResponseWriter, req *http.Request) { - rwc, buf, err := w.(http.Hijacker).Hijack() - if err != nil { - panic("Hijack failed: " + err.Error()) - } - // The server should abort the WebSocket connection if it finds - // the client did not send a handshake that matches with protocol - // specification. - defer rwc.Close() - conn, err := newServerConn(rwc, buf, req, &s.Config, s.Handshake) - if err != nil { - return - } - if conn == nil { - panic("unexpected nil conn") - } - s.Handler(conn) -} - -// Handler is a simple interface to a WebSocket browser client. -// It checks if Origin header is valid URL by default. -// You might want to verify websocket.Conn.Config().Origin in the func. -// If you use Server instead of Handler, you could call websocket.Origin and -// check the origin in your Handshake func. So, if you want to accept -// non-browser clients, which do not send an Origin header, set a -// Server.Handshake that does not check the origin. -type Handler func(*Conn) - -func checkOrigin(config *Config, req *http.Request) (err error) { - config.Origin, err = Origin(config, req) - if err == nil && config.Origin == nil { - return fmt.Errorf("null origin") - } - return err -} - -// ServeHTTP implements the http.Handler interface for a WebSocket -func (h Handler) ServeHTTP(w http.ResponseWriter, req *http.Request) { - s := Server{Handler: h, Handshake: checkOrigin} - s.serveWebSocket(w, req) -} diff --git a/vendor/golang.org/x/net/websocket/websocket.go b/vendor/golang.org/x/net/websocket/websocket.go deleted file mode 100644 index e242c89a..00000000 --- a/vendor/golang.org/x/net/websocket/websocket.go +++ /dev/null @@ -1,448 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package websocket implements a client and server for the WebSocket protocol -// as specified in RFC 6455. -// -// This package currently lacks some features found in an alternative -// and more actively maintained WebSocket package: -// -// https://godoc.org/github.com/gorilla/websocket -// -package websocket // import "golang.org/x/net/websocket" - -import ( - "bufio" - "crypto/tls" - "encoding/json" - "errors" - "io" - "io/ioutil" - "net" - "net/http" - "net/url" - "sync" - "time" -) - -const ( - ProtocolVersionHybi13 = 13 - ProtocolVersionHybi = ProtocolVersionHybi13 - SupportedProtocolVersion = "13" - - ContinuationFrame = 0 - TextFrame = 1 - BinaryFrame = 2 - CloseFrame = 8 - PingFrame = 9 - PongFrame = 10 - UnknownFrame = 255 - - DefaultMaxPayloadBytes = 32 << 20 // 32MB -) - -// ProtocolError represents WebSocket protocol errors. -type ProtocolError struct { - ErrorString string -} - -func (err *ProtocolError) Error() string { return err.ErrorString } - -var ( - ErrBadProtocolVersion = &ProtocolError{"bad protocol version"} - ErrBadScheme = &ProtocolError{"bad scheme"} - ErrBadStatus = &ProtocolError{"bad status"} - ErrBadUpgrade = &ProtocolError{"missing or bad upgrade"} - ErrBadWebSocketOrigin = &ProtocolError{"missing or bad WebSocket-Origin"} - ErrBadWebSocketLocation = &ProtocolError{"missing or bad WebSocket-Location"} - ErrBadWebSocketProtocol = &ProtocolError{"missing or bad WebSocket-Protocol"} - ErrBadWebSocketVersion = &ProtocolError{"missing or bad WebSocket Version"} - ErrChallengeResponse = &ProtocolError{"mismatch challenge/response"} - ErrBadFrame = &ProtocolError{"bad frame"} - ErrBadFrameBoundary = &ProtocolError{"not on frame boundary"} - ErrNotWebSocket = &ProtocolError{"not websocket protocol"} - ErrBadRequestMethod = &ProtocolError{"bad method"} - ErrNotSupported = &ProtocolError{"not supported"} -) - -// ErrFrameTooLarge is returned by Codec's Receive method if payload size -// exceeds limit set by Conn.MaxPayloadBytes -var ErrFrameTooLarge = errors.New("websocket: frame payload size exceeds limit") - -// Addr is an implementation of net.Addr for WebSocket. -type Addr struct { - *url.URL -} - -// Network returns the network type for a WebSocket, "websocket". -func (addr *Addr) Network() string { return "websocket" } - -// Config is a WebSocket configuration -type Config struct { - // A WebSocket server address. - Location *url.URL - - // A Websocket client origin. - Origin *url.URL - - // WebSocket subprotocols. - Protocol []string - - // WebSocket protocol version. - Version int - - // TLS config for secure WebSocket (wss). - TlsConfig *tls.Config - - // Additional header fields to be sent in WebSocket opening handshake. - Header http.Header - - // Dialer used when opening websocket connections. - Dialer *net.Dialer - - handshakeData map[string]string -} - -// serverHandshaker is an interface to handle WebSocket server side handshake. -type serverHandshaker interface { - // ReadHandshake reads handshake request message from client. - // Returns http response code and error if any. - ReadHandshake(buf *bufio.Reader, req *http.Request) (code int, err error) - - // AcceptHandshake accepts the client handshake request and sends - // handshake response back to client. - AcceptHandshake(buf *bufio.Writer) (err error) - - // NewServerConn creates a new WebSocket connection. - NewServerConn(buf *bufio.ReadWriter, rwc io.ReadWriteCloser, request *http.Request) (conn *Conn) -} - -// frameReader is an interface to read a WebSocket frame. -type frameReader interface { - // Reader is to read payload of the frame. - io.Reader - - // PayloadType returns payload type. - PayloadType() byte - - // HeaderReader returns a reader to read header of the frame. - HeaderReader() io.Reader - - // TrailerReader returns a reader to read trailer of the frame. - // If it returns nil, there is no trailer in the frame. - TrailerReader() io.Reader - - // Len returns total length of the frame, including header and trailer. - Len() int -} - -// frameReaderFactory is an interface to creates new frame reader. -type frameReaderFactory interface { - NewFrameReader() (r frameReader, err error) -} - -// frameWriter is an interface to write a WebSocket frame. -type frameWriter interface { - // Writer is to write payload of the frame. - io.WriteCloser -} - -// frameWriterFactory is an interface to create new frame writer. -type frameWriterFactory interface { - NewFrameWriter(payloadType byte) (w frameWriter, err error) -} - -type frameHandler interface { - HandleFrame(frame frameReader) (r frameReader, err error) - WriteClose(status int) (err error) -} - -// Conn represents a WebSocket connection. -// -// Multiple goroutines may invoke methods on a Conn simultaneously. -type Conn struct { - config *Config - request *http.Request - - buf *bufio.ReadWriter - rwc io.ReadWriteCloser - - rio sync.Mutex - frameReaderFactory - frameReader - - wio sync.Mutex - frameWriterFactory - - frameHandler - PayloadType byte - defaultCloseStatus int - - // MaxPayloadBytes limits the size of frame payload received over Conn - // by Codec's Receive method. If zero, DefaultMaxPayloadBytes is used. - MaxPayloadBytes int -} - -// Read implements the io.Reader interface: -// it reads data of a frame from the WebSocket connection. -// if msg is not large enough for the frame data, it fills the msg and next Read -// will read the rest of the frame data. -// it reads Text frame or Binary frame. -func (ws *Conn) Read(msg []byte) (n int, err error) { - ws.rio.Lock() - defer ws.rio.Unlock() -again: - if ws.frameReader == nil { - frame, err := ws.frameReaderFactory.NewFrameReader() - if err != nil { - return 0, err - } - ws.frameReader, err = ws.frameHandler.HandleFrame(frame) - if err != nil { - return 0, err - } - if ws.frameReader == nil { - goto again - } - } - n, err = ws.frameReader.Read(msg) - if err == io.EOF { - if trailer := ws.frameReader.TrailerReader(); trailer != nil { - io.Copy(ioutil.Discard, trailer) - } - ws.frameReader = nil - goto again - } - return n, err -} - -// Write implements the io.Writer interface: -// it writes data as a frame to the WebSocket connection. -func (ws *Conn) Write(msg []byte) (n int, err error) { - ws.wio.Lock() - defer ws.wio.Unlock() - w, err := ws.frameWriterFactory.NewFrameWriter(ws.PayloadType) - if err != nil { - return 0, err - } - n, err = w.Write(msg) - w.Close() - return n, err -} - -// Close implements the io.Closer interface. -func (ws *Conn) Close() error { - err := ws.frameHandler.WriteClose(ws.defaultCloseStatus) - err1 := ws.rwc.Close() - if err != nil { - return err - } - return err1 -} - -func (ws *Conn) IsClientConn() bool { return ws.request == nil } -func (ws *Conn) IsServerConn() bool { return ws.request != nil } - -// LocalAddr returns the WebSocket Origin for the connection for client, or -// the WebSocket location for server. -func (ws *Conn) LocalAddr() net.Addr { - if ws.IsClientConn() { - return &Addr{ws.config.Origin} - } - return &Addr{ws.config.Location} -} - -// RemoteAddr returns the WebSocket location for the connection for client, or -// the Websocket Origin for server. -func (ws *Conn) RemoteAddr() net.Addr { - if ws.IsClientConn() { - return &Addr{ws.config.Location} - } - return &Addr{ws.config.Origin} -} - -var errSetDeadline = errors.New("websocket: cannot set deadline: not using a net.Conn") - -// SetDeadline sets the connection's network read & write deadlines. -func (ws *Conn) SetDeadline(t time.Time) error { - if conn, ok := ws.rwc.(net.Conn); ok { - return conn.SetDeadline(t) - } - return errSetDeadline -} - -// SetReadDeadline sets the connection's network read deadline. -func (ws *Conn) SetReadDeadline(t time.Time) error { - if conn, ok := ws.rwc.(net.Conn); ok { - return conn.SetReadDeadline(t) - } - return errSetDeadline -} - -// SetWriteDeadline sets the connection's network write deadline. -func (ws *Conn) SetWriteDeadline(t time.Time) error { - if conn, ok := ws.rwc.(net.Conn); ok { - return conn.SetWriteDeadline(t) - } - return errSetDeadline -} - -// Config returns the WebSocket config. -func (ws *Conn) Config() *Config { return ws.config } - -// Request returns the http request upgraded to the WebSocket. -// It is nil for client side. -func (ws *Conn) Request() *http.Request { return ws.request } - -// Codec represents a symmetric pair of functions that implement a codec. -type Codec struct { - Marshal func(v interface{}) (data []byte, payloadType byte, err error) - Unmarshal func(data []byte, payloadType byte, v interface{}) (err error) -} - -// Send sends v marshaled by cd.Marshal as single frame to ws. -func (cd Codec) Send(ws *Conn, v interface{}) (err error) { - data, payloadType, err := cd.Marshal(v) - if err != nil { - return err - } - ws.wio.Lock() - defer ws.wio.Unlock() - w, err := ws.frameWriterFactory.NewFrameWriter(payloadType) - if err != nil { - return err - } - _, err = w.Write(data) - w.Close() - return err -} - -// Receive receives single frame from ws, unmarshaled by cd.Unmarshal and stores -// in v. The whole frame payload is read to an in-memory buffer; max size of -// payload is defined by ws.MaxPayloadBytes. If frame payload size exceeds -// limit, ErrFrameTooLarge is returned; in this case frame is not read off wire -// completely. The next call to Receive would read and discard leftover data of -// previous oversized frame before processing next frame. -func (cd Codec) Receive(ws *Conn, v interface{}) (err error) { - ws.rio.Lock() - defer ws.rio.Unlock() - if ws.frameReader != nil { - _, err = io.Copy(ioutil.Discard, ws.frameReader) - if err != nil { - return err - } - ws.frameReader = nil - } -again: - frame, err := ws.frameReaderFactory.NewFrameReader() - if err != nil { - return err - } - frame, err = ws.frameHandler.HandleFrame(frame) - if err != nil { - return err - } - if frame == nil { - goto again - } - maxPayloadBytes := ws.MaxPayloadBytes - if maxPayloadBytes == 0 { - maxPayloadBytes = DefaultMaxPayloadBytes - } - if hf, ok := frame.(*hybiFrameReader); ok && hf.header.Length > int64(maxPayloadBytes) { - // payload size exceeds limit, no need to call Unmarshal - // - // set frameReader to current oversized frame so that - // the next call to this function can drain leftover - // data before processing the next frame - ws.frameReader = frame - return ErrFrameTooLarge - } - payloadType := frame.PayloadType() - data, err := ioutil.ReadAll(frame) - if err != nil { - return err - } - return cd.Unmarshal(data, payloadType, v) -} - -func marshal(v interface{}) (msg []byte, payloadType byte, err error) { - switch data := v.(type) { - case string: - return []byte(data), TextFrame, nil - case []byte: - return data, BinaryFrame, nil - } - return nil, UnknownFrame, ErrNotSupported -} - -func unmarshal(msg []byte, payloadType byte, v interface{}) (err error) { - switch data := v.(type) { - case *string: - *data = string(msg) - return nil - case *[]byte: - *data = msg - return nil - } - return ErrNotSupported -} - -/* -Message is a codec to send/receive text/binary data in a frame on WebSocket connection. -To send/receive text frame, use string type. -To send/receive binary frame, use []byte type. - -Trivial usage: - - import "websocket" - - // receive text frame - var message string - websocket.Message.Receive(ws, &message) - - // send text frame - message = "hello" - websocket.Message.Send(ws, message) - - // receive binary frame - var data []byte - websocket.Message.Receive(ws, &data) - - // send binary frame - data = []byte{0, 1, 2} - websocket.Message.Send(ws, data) - -*/ -var Message = Codec{marshal, unmarshal} - -func jsonMarshal(v interface{}) (msg []byte, payloadType byte, err error) { - msg, err = json.Marshal(v) - return msg, TextFrame, err -} - -func jsonUnmarshal(msg []byte, payloadType byte, v interface{}) (err error) { - return json.Unmarshal(msg, v) -} - -/* -JSON is a codec to send/receive JSON data in a frame from a WebSocket connection. - -Trivial usage: - - import "websocket" - - type T struct { - Msg string - Count int - } - - // receive JSON type T - var data T - websocket.JSON.Receive(ws, &data) - - // send JSON type T - websocket.JSON.Send(ws, data) -*/ -var JSON = Codec{jsonMarshal, jsonUnmarshal} diff --git a/vendor/golang.org/x/net/websocket/websocket_test.go b/vendor/golang.org/x/net/websocket/websocket_test.go deleted file mode 100644 index 2054ce85..00000000 --- a/vendor/golang.org/x/net/websocket/websocket_test.go +++ /dev/null @@ -1,665 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package websocket - -import ( - "bytes" - "crypto/rand" - "fmt" - "io" - "log" - "net" - "net/http" - "net/http/httptest" - "net/url" - "reflect" - "runtime" - "strings" - "sync" - "testing" - "time" -) - -var serverAddr string -var once sync.Once - -func echoServer(ws *Conn) { - defer ws.Close() - io.Copy(ws, ws) -} - -type Count struct { - S string - N int -} - -func countServer(ws *Conn) { - defer ws.Close() - for { - var count Count - err := JSON.Receive(ws, &count) - if err != nil { - return - } - count.N++ - count.S = strings.Repeat(count.S, count.N) - err = JSON.Send(ws, count) - if err != nil { - return - } - } -} - -type testCtrlAndDataHandler struct { - hybiFrameHandler -} - -func (h *testCtrlAndDataHandler) WritePing(b []byte) (int, error) { - h.hybiFrameHandler.conn.wio.Lock() - defer h.hybiFrameHandler.conn.wio.Unlock() - w, err := h.hybiFrameHandler.conn.frameWriterFactory.NewFrameWriter(PingFrame) - if err != nil { - return 0, err - } - n, err := w.Write(b) - w.Close() - return n, err -} - -func ctrlAndDataServer(ws *Conn) { - defer ws.Close() - h := &testCtrlAndDataHandler{hybiFrameHandler: hybiFrameHandler{conn: ws}} - ws.frameHandler = h - - go func() { - for i := 0; ; i++ { - var b []byte - if i%2 != 0 { // with or without payload - b = []byte(fmt.Sprintf("#%d-CONTROL-FRAME-FROM-SERVER", i)) - } - if _, err := h.WritePing(b); err != nil { - break - } - if _, err := h.WritePong(b); err != nil { // unsolicited pong - break - } - time.Sleep(10 * time.Millisecond) - } - }() - - b := make([]byte, 128) - for { - n, err := ws.Read(b) - if err != nil { - break - } - if _, err := ws.Write(b[:n]); err != nil { - break - } - } -} - -func subProtocolHandshake(config *Config, req *http.Request) error { - for _, proto := range config.Protocol { - if proto == "chat" { - config.Protocol = []string{proto} - return nil - } - } - return ErrBadWebSocketProtocol -} - -func subProtoServer(ws *Conn) { - for _, proto := range ws.Config().Protocol { - io.WriteString(ws, proto) - } -} - -func startServer() { - http.Handle("/echo", Handler(echoServer)) - http.Handle("/count", Handler(countServer)) - http.Handle("/ctrldata", Handler(ctrlAndDataServer)) - subproto := Server{ - Handshake: subProtocolHandshake, - Handler: Handler(subProtoServer), - } - http.Handle("/subproto", subproto) - server := httptest.NewServer(nil) - serverAddr = server.Listener.Addr().String() - log.Print("Test WebSocket server listening on ", serverAddr) -} - -func newConfig(t *testing.T, path string) *Config { - config, _ := NewConfig(fmt.Sprintf("ws://%s%s", serverAddr, path), "http://localhost") - return config -} - -func TestEcho(t *testing.T) { - once.Do(startServer) - - // websocket.Dial() - client, err := net.Dial("tcp", serverAddr) - if err != nil { - t.Fatal("dialing", err) - } - conn, err := NewClient(newConfig(t, "/echo"), client) - if err != nil { - t.Errorf("WebSocket handshake error: %v", err) - return - } - - msg := []byte("hello, world\n") - if _, err := conn.Write(msg); err != nil { - t.Errorf("Write: %v", err) - } - var actual_msg = make([]byte, 512) - n, err := conn.Read(actual_msg) - if err != nil { - t.Errorf("Read: %v", err) - } - actual_msg = actual_msg[0:n] - if !bytes.Equal(msg, actual_msg) { - t.Errorf("Echo: expected %q got %q", msg, actual_msg) - } - conn.Close() -} - -func TestAddr(t *testing.T) { - once.Do(startServer) - - // websocket.Dial() - client, err := net.Dial("tcp", serverAddr) - if err != nil { - t.Fatal("dialing", err) - } - conn, err := NewClient(newConfig(t, "/echo"), client) - if err != nil { - t.Errorf("WebSocket handshake error: %v", err) - return - } - - ra := conn.RemoteAddr().String() - if !strings.HasPrefix(ra, "ws://") || !strings.HasSuffix(ra, "/echo") { - t.Errorf("Bad remote addr: %v", ra) - } - la := conn.LocalAddr().String() - if !strings.HasPrefix(la, "http://") { - t.Errorf("Bad local addr: %v", la) - } - conn.Close() -} - -func TestCount(t *testing.T) { - once.Do(startServer) - - // websocket.Dial() - client, err := net.Dial("tcp", serverAddr) - if err != nil { - t.Fatal("dialing", err) - } - conn, err := NewClient(newConfig(t, "/count"), client) - if err != nil { - t.Errorf("WebSocket handshake error: %v", err) - return - } - - var count Count - count.S = "hello" - if err := JSON.Send(conn, count); err != nil { - t.Errorf("Write: %v", err) - } - if err := JSON.Receive(conn, &count); err != nil { - t.Errorf("Read: %v", err) - } - if count.N != 1 { - t.Errorf("count: expected %d got %d", 1, count.N) - } - if count.S != "hello" { - t.Errorf("count: expected %q got %q", "hello", count.S) - } - if err := JSON.Send(conn, count); err != nil { - t.Errorf("Write: %v", err) - } - if err := JSON.Receive(conn, &count); err != nil { - t.Errorf("Read: %v", err) - } - if count.N != 2 { - t.Errorf("count: expected %d got %d", 2, count.N) - } - if count.S != "hellohello" { - t.Errorf("count: expected %q got %q", "hellohello", count.S) - } - conn.Close() -} - -func TestWithQuery(t *testing.T) { - once.Do(startServer) - - client, err := net.Dial("tcp", serverAddr) - if err != nil { - t.Fatal("dialing", err) - } - - config := newConfig(t, "/echo") - config.Location, err = url.ParseRequestURI(fmt.Sprintf("ws://%s/echo?q=v", serverAddr)) - if err != nil { - t.Fatal("location url", err) - } - - ws, err := NewClient(config, client) - if err != nil { - t.Errorf("WebSocket handshake: %v", err) - return - } - ws.Close() -} - -func testWithProtocol(t *testing.T, subproto []string) (string, error) { - once.Do(startServer) - - client, err := net.Dial("tcp", serverAddr) - if err != nil { - t.Fatal("dialing", err) - } - - config := newConfig(t, "/subproto") - config.Protocol = subproto - - ws, err := NewClient(config, client) - if err != nil { - return "", err - } - msg := make([]byte, 16) - n, err := ws.Read(msg) - if err != nil { - return "", err - } - ws.Close() - return string(msg[:n]), nil -} - -func TestWithProtocol(t *testing.T) { - proto, err := testWithProtocol(t, []string{"chat"}) - if err != nil { - t.Errorf("SubProto: unexpected error: %v", err) - } - if proto != "chat" { - t.Errorf("SubProto: expected %q, got %q", "chat", proto) - } -} - -func TestWithTwoProtocol(t *testing.T) { - proto, err := testWithProtocol(t, []string{"test", "chat"}) - if err != nil { - t.Errorf("SubProto: unexpected error: %v", err) - } - if proto != "chat" { - t.Errorf("SubProto: expected %q, got %q", "chat", proto) - } -} - -func TestWithBadProtocol(t *testing.T) { - _, err := testWithProtocol(t, []string{"test"}) - if err != ErrBadStatus { - t.Errorf("SubProto: expected %v, got %v", ErrBadStatus, err) - } -} - -func TestHTTP(t *testing.T) { - once.Do(startServer) - - // If the client did not send a handshake that matches the protocol - // specification, the server MUST return an HTTP response with an - // appropriate error code (such as 400 Bad Request) - resp, err := http.Get(fmt.Sprintf("http://%s/echo", serverAddr)) - if err != nil { - t.Errorf("Get: error %#v", err) - return - } - if resp == nil { - t.Error("Get: resp is null") - return - } - if resp.StatusCode != http.StatusBadRequest { - t.Errorf("Get: expected %q got %q", http.StatusBadRequest, resp.StatusCode) - } -} - -func TestTrailingSpaces(t *testing.T) { - // http://code.google.com/p/go/issues/detail?id=955 - // The last runs of this create keys with trailing spaces that should not be - // generated by the client. - once.Do(startServer) - config := newConfig(t, "/echo") - for i := 0; i < 30; i++ { - // body - ws, err := DialConfig(config) - if err != nil { - t.Errorf("Dial #%d failed: %v", i, err) - break - } - ws.Close() - } -} - -func TestDialConfigBadVersion(t *testing.T) { - once.Do(startServer) - config := newConfig(t, "/echo") - config.Version = 1234 - - _, err := DialConfig(config) - - if dialerr, ok := err.(*DialError); ok { - if dialerr.Err != ErrBadProtocolVersion { - t.Errorf("dial expected err %q but got %q", ErrBadProtocolVersion, dialerr.Err) - } - } -} - -func TestDialConfigWithDialer(t *testing.T) { - once.Do(startServer) - config := newConfig(t, "/echo") - config.Dialer = &net.Dialer{ - Deadline: time.Now().Add(-time.Minute), - } - _, err := DialConfig(config) - dialerr, ok := err.(*DialError) - if !ok { - t.Fatalf("DialError expected, got %#v", err) - } - neterr, ok := dialerr.Err.(*net.OpError) - if !ok { - t.Fatalf("net.OpError error expected, got %#v", dialerr.Err) - } - if !neterr.Timeout() { - t.Fatalf("expected timeout error, got %#v", neterr) - } -} - -func TestSmallBuffer(t *testing.T) { - // http://code.google.com/p/go/issues/detail?id=1145 - // Read should be able to handle reading a fragment of a frame. - once.Do(startServer) - - // websocket.Dial() - client, err := net.Dial("tcp", serverAddr) - if err != nil { - t.Fatal("dialing", err) - } - conn, err := NewClient(newConfig(t, "/echo"), client) - if err != nil { - t.Errorf("WebSocket handshake error: %v", err) - return - } - - msg := []byte("hello, world\n") - if _, err := conn.Write(msg); err != nil { - t.Errorf("Write: %v", err) - } - var small_msg = make([]byte, 8) - n, err := conn.Read(small_msg) - if err != nil { - t.Errorf("Read: %v", err) - } - if !bytes.Equal(msg[:len(small_msg)], small_msg) { - t.Errorf("Echo: expected %q got %q", msg[:len(small_msg)], small_msg) - } - var second_msg = make([]byte, len(msg)) - n, err = conn.Read(second_msg) - if err != nil { - t.Errorf("Read: %v", err) - } - second_msg = second_msg[0:n] - if !bytes.Equal(msg[len(small_msg):], second_msg) { - t.Errorf("Echo: expected %q got %q", msg[len(small_msg):], second_msg) - } - conn.Close() -} - -var parseAuthorityTests = []struct { - in *url.URL - out string -}{ - { - &url.URL{ - Scheme: "ws", - Host: "www.google.com", - }, - "www.google.com:80", - }, - { - &url.URL{ - Scheme: "wss", - Host: "www.google.com", - }, - "www.google.com:443", - }, - { - &url.URL{ - Scheme: "ws", - Host: "www.google.com:80", - }, - "www.google.com:80", - }, - { - &url.URL{ - Scheme: "wss", - Host: "www.google.com:443", - }, - "www.google.com:443", - }, - // some invalid ones for parseAuthority. parseAuthority doesn't - // concern itself with the scheme unless it actually knows about it - { - &url.URL{ - Scheme: "http", - Host: "www.google.com", - }, - "www.google.com", - }, - { - &url.URL{ - Scheme: "http", - Host: "www.google.com:80", - }, - "www.google.com:80", - }, - { - &url.URL{ - Scheme: "asdf", - Host: "127.0.0.1", - }, - "127.0.0.1", - }, - { - &url.URL{ - Scheme: "asdf", - Host: "www.google.com", - }, - "www.google.com", - }, -} - -func TestParseAuthority(t *testing.T) { - for _, tt := range parseAuthorityTests { - out := parseAuthority(tt.in) - if out != tt.out { - t.Errorf("got %v; want %v", out, tt.out) - } - } -} - -type closerConn struct { - net.Conn - closed int // count of the number of times Close was called -} - -func (c *closerConn) Close() error { - c.closed++ - return c.Conn.Close() -} - -func TestClose(t *testing.T) { - if runtime.GOOS == "plan9" { - t.Skip("see golang.org/issue/11454") - } - - once.Do(startServer) - - conn, err := net.Dial("tcp", serverAddr) - if err != nil { - t.Fatal("dialing", err) - } - - cc := closerConn{Conn: conn} - - client, err := NewClient(newConfig(t, "/echo"), &cc) - if err != nil { - t.Fatalf("WebSocket handshake: %v", err) - } - - // set the deadline to ten minutes ago, which will have expired by the time - // client.Close sends the close status frame. - conn.SetDeadline(time.Now().Add(-10 * time.Minute)) - - if err := client.Close(); err == nil { - t.Errorf("ws.Close(): expected error, got %v", err) - } - if cc.closed < 1 { - t.Fatalf("ws.Close(): expected underlying ws.rwc.Close to be called > 0 times, got: %v", cc.closed) - } -} - -var originTests = []struct { - req *http.Request - origin *url.URL -}{ - { - req: &http.Request{ - Header: http.Header{ - "Origin": []string{"http://www.example.com"}, - }, - }, - origin: &url.URL{ - Scheme: "http", - Host: "www.example.com", - }, - }, - { - req: &http.Request{}, - }, -} - -func TestOrigin(t *testing.T) { - conf := newConfig(t, "/echo") - conf.Version = ProtocolVersionHybi13 - for i, tt := range originTests { - origin, err := Origin(conf, tt.req) - if err != nil { - t.Error(err) - continue - } - if !reflect.DeepEqual(origin, tt.origin) { - t.Errorf("#%d: got origin %v; want %v", i, origin, tt.origin) - continue - } - } -} - -func TestCtrlAndData(t *testing.T) { - once.Do(startServer) - - c, err := net.Dial("tcp", serverAddr) - if err != nil { - t.Fatal(err) - } - ws, err := NewClient(newConfig(t, "/ctrldata"), c) - if err != nil { - t.Fatal(err) - } - defer ws.Close() - - h := &testCtrlAndDataHandler{hybiFrameHandler: hybiFrameHandler{conn: ws}} - ws.frameHandler = h - - b := make([]byte, 128) - for i := 0; i < 2; i++ { - data := []byte(fmt.Sprintf("#%d-DATA-FRAME-FROM-CLIENT", i)) - if _, err := ws.Write(data); err != nil { - t.Fatalf("#%d: %v", i, err) - } - var ctrl []byte - if i%2 != 0 { // with or without payload - ctrl = []byte(fmt.Sprintf("#%d-CONTROL-FRAME-FROM-CLIENT", i)) - } - if _, err := h.WritePing(ctrl); err != nil { - t.Fatalf("#%d: %v", i, err) - } - n, err := ws.Read(b) - if err != nil { - t.Fatalf("#%d: %v", i, err) - } - if !bytes.Equal(b[:n], data) { - t.Fatalf("#%d: got %v; want %v", i, b[:n], data) - } - } -} - -func TestCodec_ReceiveLimited(t *testing.T) { - const limit = 2048 - var payloads [][]byte - for _, size := range []int{ - 1024, - 2048, - 4096, // receive of this message would be interrupted due to limit - 2048, // this one is to make sure next receive recovers discarding leftovers - } { - b := make([]byte, size) - rand.Read(b) - payloads = append(payloads, b) - } - handlerDone := make(chan struct{}) - limitedHandler := func(ws *Conn) { - defer close(handlerDone) - ws.MaxPayloadBytes = limit - defer ws.Close() - for i, p := range payloads { - t.Logf("payload #%d (size %d, exceeds limit: %v)", i, len(p), len(p) > limit) - var recv []byte - err := Message.Receive(ws, &recv) - switch err { - case nil: - case ErrFrameTooLarge: - if len(p) <= limit { - t.Fatalf("unexpected frame size limit: expected %d bytes of payload having limit at %d", len(p), limit) - } - continue - default: - t.Fatalf("unexpected error: %v (want either nil or ErrFrameTooLarge)", err) - } - if len(recv) > limit { - t.Fatalf("received %d bytes of payload having limit at %d", len(recv), limit) - } - if !bytes.Equal(p, recv) { - t.Fatalf("received payload differs:\ngot:\t%v\nwant:\t%v", recv, p) - } - } - } - server := httptest.NewServer(Handler(limitedHandler)) - defer server.CloseClientConnections() - defer server.Close() - addr := server.Listener.Addr().String() - ws, err := Dial("ws://"+addr+"/", "", "http://localhost/") - if err != nil { - t.Fatal(err) - } - defer ws.Close() - for i, p := range payloads { - if err := Message.Send(ws, p); err != nil { - t.Fatalf("payload #%d (size %d): %v", i, len(p), err) - } - } - <-handlerDone -} diff --git a/vendor/golang.org/x/net/xsrftoken/xsrf.go b/vendor/golang.org/x/net/xsrftoken/xsrf.go deleted file mode 100644 index bc861e1f..00000000 --- a/vendor/golang.org/x/net/xsrftoken/xsrf.go +++ /dev/null @@ -1,94 +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 xsrftoken provides methods for generating and validating secure XSRF tokens. -package xsrftoken // import "golang.org/x/net/xsrftoken" - -import ( - "crypto/hmac" - "crypto/sha1" - "crypto/subtle" - "encoding/base64" - "fmt" - "strconv" - "strings" - "time" -) - -// Timeout is the duration for which XSRF tokens are valid. -// It is exported so clients may set cookie timeouts that match generated tokens. -const Timeout = 24 * time.Hour - -// clean sanitizes a string for inclusion in a token by replacing all ":"s. -func clean(s string) string { - return strings.Replace(s, ":", "_", -1) -} - -// Generate returns a URL-safe secure XSRF token that expires in 24 hours. -// -// key is a secret key for your application; it must be non-empty. -// userID is an optional unique identifier for the user. -// actionID is an optional action the user is taking (e.g. POSTing to a particular path). -func Generate(key, userID, actionID string) string { - return generateTokenAtTime(key, userID, actionID, time.Now()) -} - -// generateTokenAtTime is like Generate, but returns a token that expires 24 hours from now. -func generateTokenAtTime(key, userID, actionID string, now time.Time) string { - if len(key) == 0 { - panic("zero length xsrf secret key") - } - // Round time up and convert to milliseconds. - milliTime := (now.UnixNano() + 1e6 - 1) / 1e6 - - h := hmac.New(sha1.New, []byte(key)) - fmt.Fprintf(h, "%s:%s:%d", clean(userID), clean(actionID), milliTime) - - // Get the padded base64 string then removing the padding. - tok := string(h.Sum(nil)) - tok = base64.URLEncoding.EncodeToString([]byte(tok)) - tok = strings.TrimRight(tok, "=") - - return fmt.Sprintf("%s:%d", tok, milliTime) -} - -// Valid reports whether a token is a valid, unexpired token returned by Generate. -func Valid(token, key, userID, actionID string) bool { - return validTokenAtTime(token, key, userID, actionID, time.Now()) -} - -// validTokenAtTime reports whether a token is valid at the given time. -func validTokenAtTime(token, key, userID, actionID string, now time.Time) bool { - if len(key) == 0 { - panic("zero length xsrf secret key") - } - // Extract the issue time of the token. - sep := strings.LastIndex(token, ":") - if sep < 0 { - return false - } - millis, err := strconv.ParseInt(token[sep+1:], 10, 64) - if err != nil { - return false - } - issueTime := time.Unix(0, millis*1e6) - - // Check that the token is not expired. - if now.Sub(issueTime) >= Timeout { - return false - } - - // Check that the token is not from the future. - // Allow 1 minute grace period in case the token is being verified on a - // machine whose clock is behind the machine that issued the token. - if issueTime.After(now.Add(1 * time.Minute)) { - return false - } - - expected := generateTokenAtTime(key, userID, actionID, issueTime) - - // Check that the token matches the expected value. - // Use constant time comparison to avoid timing attacks. - return subtle.ConstantTimeCompare([]byte(token), []byte(expected)) == 1 -} diff --git a/vendor/golang.org/x/net/xsrftoken/xsrf_test.go b/vendor/golang.org/x/net/xsrftoken/xsrf_test.go deleted file mode 100644 index 6c8e7d9b..00000000 --- a/vendor/golang.org/x/net/xsrftoken/xsrf_test.go +++ /dev/null @@ -1,83 +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 xsrftoken - -import ( - "encoding/base64" - "testing" - "time" -) - -const ( - key = "quay" - userID = "12345678" - actionID = "POST /form" -) - -var ( - now = time.Now() - oneMinuteFromNow = now.Add(1 * time.Minute) -) - -func TestValidToken(t *testing.T) { - tok := generateTokenAtTime(key, userID, actionID, now) - if !validTokenAtTime(tok, key, userID, actionID, oneMinuteFromNow) { - t.Error("One second later: Expected token to be valid") - } - if !validTokenAtTime(tok, key, userID, actionID, now.Add(Timeout-1*time.Nanosecond)) { - t.Error("Just before timeout: Expected token to be valid") - } - if !validTokenAtTime(tok, key, userID, actionID, now.Add(-1*time.Minute+1*time.Millisecond)) { - t.Error("One minute in the past: Expected token to be valid") - } -} - -// TestSeparatorReplacement tests that separators are being correctly substituted -func TestSeparatorReplacement(t *testing.T) { - tok := generateTokenAtTime("foo:bar", "baz", "wah", now) - tok2 := generateTokenAtTime("foo", "bar:baz", "wah", now) - if tok == tok2 { - t.Errorf("Expected generated tokens to be different") - } -} - -func TestInvalidToken(t *testing.T) { - invalidTokenTests := []struct { - name, key, userID, actionID string - t time.Time - }{ - {"Bad key", "foobar", userID, actionID, oneMinuteFromNow}, - {"Bad userID", key, "foobar", actionID, oneMinuteFromNow}, - {"Bad actionID", key, userID, "foobar", oneMinuteFromNow}, - {"Expired", key, userID, actionID, now.Add(Timeout + 1*time.Millisecond)}, - {"More than 1 minute from the future", key, userID, actionID, now.Add(-1*time.Nanosecond - 1*time.Minute)}, - } - - tok := generateTokenAtTime(key, userID, actionID, now) - for _, itt := range invalidTokenTests { - if validTokenAtTime(tok, itt.key, itt.userID, itt.actionID, itt.t) { - t.Errorf("%v: Expected token to be invalid", itt.name) - } - } -} - -// TestValidateBadData primarily tests that no unexpected panics are triggered -// during parsing -func TestValidateBadData(t *testing.T) { - badDataTests := []struct { - name, tok string - }{ - {"Invalid Base64", "ASDab24(@)$*=="}, - {"No delimiter", base64.URLEncoding.EncodeToString([]byte("foobar12345678"))}, - {"Invalid time", base64.URLEncoding.EncodeToString([]byte("foobar:foobar"))}, - {"Wrong length", "1234" + generateTokenAtTime(key, userID, actionID, now)}, - } - - for _, bdt := range badDataTests { - if validTokenAtTime(bdt.tok, key, userID, actionID, oneMinuteFromNow) { - t.Errorf("%v: Expected token to be invalid", bdt.name) - } - } -} diff --git a/vendor/golang.org/x/sys/.gitattributes b/vendor/golang.org/x/sys/.gitattributes deleted file mode 100644 index d2f212e5..00000000 --- a/vendor/golang.org/x/sys/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -# Treat all files in this repo as binary, with no git magic updating -# line endings. Windows users contributing to Go will need to use a -# modern version of git and editors capable of LF line endings. -# -# We'll prevent accidental CRLF line endings from entering the repo -# via the git-review gofmt checks. -# -# See golang.org/issue/9281 - -* -text diff --git a/vendor/golang.org/x/sys/.gitignore b/vendor/golang.org/x/sys/.gitignore deleted file mode 100644 index 8339fd61..00000000 --- a/vendor/golang.org/x/sys/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Add no patterns to .hgignore except for files generated by the build. -last-change diff --git a/vendor/golang.org/x/sys/CONTRIBUTING.md b/vendor/golang.org/x/sys/CONTRIBUTING.md deleted file mode 100644 index 88dff59b..00000000 --- a/vendor/golang.org/x/sys/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# Contributing to Go - -Go is an open source project. - -It is the work of hundreds of contributors. We appreciate your help! - - -## Filing issues - -When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions: - -1. What version of Go are you using (`go version`)? -2. What operating system and processor architecture are you using? -3. What did you do? -4. What did you expect to see? -5. What did you see instead? - -General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. -The gophers there will answer or ask you to file an issue if you've tripped over a bug. - -## Contributing code - -Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) -before sending patches. - -**We do not accept GitHub pull requests** -(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review). - -Unless otherwise noted, the Go source files are distributed under -the BSD-style license found in the LICENSE file. - diff --git a/vendor/golang.org/x/sys/README.md b/vendor/golang.org/x/sys/README.md deleted file mode 100644 index ef6c9e59..00000000 --- a/vendor/golang.org/x/sys/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# sys - -This repository holds supplemental Go packages for low-level interactions with -the operating system. - -## Download/Install - -The easiest way to install is to run `go get -u golang.org/x/sys`. You can -also manually git clone the repository to `$GOPATH/src/golang.org/x/sys`. - -## Report Issues / Send Patches - -This repository uses Gerrit for code changes. To learn how to submit changes to -this repository, see https://golang.org/doc/contribute.html. - -The main issue tracker for the sys repository is located at -https://github.com/golang/go/issues. Prefix your issue with "x/sys:" in the -subject line, so it is easy to find. diff --git a/vendor/golang.org/x/sys/codereview.cfg b/vendor/golang.org/x/sys/codereview.cfg deleted file mode 100644 index 3f8b14b6..00000000 --- a/vendor/golang.org/x/sys/codereview.cfg +++ /dev/null @@ -1 +0,0 @@ -issuerepo: golang/go diff --git a/vendor/golang.org/x/sys/plan9/asm.s b/vendor/golang.org/x/sys/plan9/asm.s deleted file mode 100644 index 06449ebf..00000000 --- a/vendor/golang.org/x/sys/plan9/asm.s +++ /dev/null @@ -1,8 +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. - -#include "textflag.h" - -TEXT ·use(SB),NOSPLIT,$0 - RET diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_386.s b/vendor/golang.org/x/sys/plan9/asm_plan9_386.s deleted file mode 100644 index bc5cab1f..00000000 --- a/vendor/golang.org/x/sys/plan9/asm_plan9_386.s +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "textflag.h" - -// -// System call support for 386, Plan 9 -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-32 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-44 - JMP syscall·Syscall6(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - JMP syscall·RawSyscall6(SB) - -TEXT ·seek(SB),NOSPLIT,$0-36 - JMP syscall·seek(SB) - -TEXT ·exit(SB),NOSPLIT,$4-4 - JMP syscall·exit(SB) diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s b/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s deleted file mode 100644 index d3448e67..00000000 --- a/vendor/golang.org/x/sys/plan9/asm_plan9_amd64.s +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "textflag.h" - -// -// System call support for amd64, Plan 9 -// - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-64 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-88 - JMP syscall·Syscall6(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-56 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 - JMP syscall·RawSyscall6(SB) - -TEXT ·seek(SB),NOSPLIT,$0-56 - JMP syscall·seek(SB) - -TEXT ·exit(SB),NOSPLIT,$8-8 - JMP syscall·exit(SB) diff --git a/vendor/golang.org/x/sys/plan9/asm_plan9_arm.s b/vendor/golang.org/x/sys/plan9/asm_plan9_arm.s deleted file mode 100644 index afb7c0a9..00000000 --- a/vendor/golang.org/x/sys/plan9/asm_plan9_arm.s +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "textflag.h" - -// System call support for plan9 on arm - -// Just jump to package syscall's implementation for all these functions. -// The runtime may know about them. - -TEXT ·Syscall(SB),NOSPLIT,$0-32 - JMP syscall·Syscall(SB) - -TEXT ·Syscall6(SB),NOSPLIT,$0-44 - JMP syscall·Syscall6(SB) - -TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - JMP syscall·RawSyscall(SB) - -TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - JMP syscall·RawSyscall6(SB) - -TEXT ·seek(SB),NOSPLIT,$0-36 - JMP syscall·exit(SB) diff --git a/vendor/golang.org/x/sys/plan9/const_plan9.go b/vendor/golang.org/x/sys/plan9/const_plan9.go deleted file mode 100644 index b4e85a3a..00000000 --- a/vendor/golang.org/x/sys/plan9/const_plan9.go +++ /dev/null @@ -1,70 +0,0 @@ -package plan9 - -// Plan 9 Constants - -// Open modes -const ( - O_RDONLY = 0 - O_WRONLY = 1 - O_RDWR = 2 - O_TRUNC = 16 - O_CLOEXEC = 32 - O_EXCL = 0x1000 -) - -// Rfork flags -const ( - RFNAMEG = 1 << 0 - RFENVG = 1 << 1 - RFFDG = 1 << 2 - RFNOTEG = 1 << 3 - RFPROC = 1 << 4 - RFMEM = 1 << 5 - RFNOWAIT = 1 << 6 - RFCNAMEG = 1 << 10 - RFCENVG = 1 << 11 - RFCFDG = 1 << 12 - RFREND = 1 << 13 - RFNOMNT = 1 << 14 -) - -// Qid.Type bits -const ( - QTDIR = 0x80 - QTAPPEND = 0x40 - QTEXCL = 0x20 - QTMOUNT = 0x10 - QTAUTH = 0x08 - QTTMP = 0x04 - QTFILE = 0x00 -) - -// Dir.Mode bits -const ( - DMDIR = 0x80000000 - DMAPPEND = 0x40000000 - DMEXCL = 0x20000000 - DMMOUNT = 0x10000000 - DMAUTH = 0x08000000 - DMTMP = 0x04000000 - DMREAD = 0x4 - DMWRITE = 0x2 - DMEXEC = 0x1 -) - -const ( - STATMAX = 65535 - ERRMAX = 128 - STATFIXLEN = 49 -) - -// Mount and bind flags -const ( - MREPL = 0x0000 - MBEFORE = 0x0001 - MAFTER = 0x0002 - MORDER = 0x0003 - MCREATE = 0x0004 - MCACHE = 0x0010 - MMASK = 0x0017 -) diff --git a/vendor/golang.org/x/sys/plan9/dir_plan9.go b/vendor/golang.org/x/sys/plan9/dir_plan9.go deleted file mode 100644 index 0955e0c5..00000000 --- a/vendor/golang.org/x/sys/plan9/dir_plan9.go +++ /dev/null @@ -1,212 +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. - -// Plan 9 directory marshalling. See intro(5). - -package plan9 - -import "errors" - -var ( - ErrShortStat = errors.New("stat buffer too short") - ErrBadStat = errors.New("malformed stat buffer") - ErrBadName = errors.New("bad character in file name") -) - -// A Qid represents a 9P server's unique identification for a file. -type Qid struct { - Path uint64 // the file server's unique identification for the file - Vers uint32 // version number for given Path - Type uint8 // the type of the file (plan9.QTDIR for example) -} - -// A Dir contains the metadata for a file. -type Dir struct { - // system-modified data - Type uint16 // server type - Dev uint32 // server subtype - - // file data - Qid Qid // unique id from server - Mode uint32 // permissions - Atime uint32 // last read time - Mtime uint32 // last write time - Length int64 // file length - Name string // last element of path - Uid string // owner name - Gid string // group name - Muid string // last modifier name -} - -var nullDir = Dir{ - Type: ^uint16(0), - Dev: ^uint32(0), - Qid: Qid{ - Path: ^uint64(0), - Vers: ^uint32(0), - Type: ^uint8(0), - }, - Mode: ^uint32(0), - Atime: ^uint32(0), - Mtime: ^uint32(0), - Length: ^int64(0), -} - -// Null assigns special "don't touch" values to members of d to -// avoid modifying them during plan9.Wstat. -func (d *Dir) Null() { *d = nullDir } - -// Marshal encodes a 9P stat message corresponding to d into b -// -// If there isn't enough space in b for a stat message, ErrShortStat is returned. -func (d *Dir) Marshal(b []byte) (n int, err error) { - n = STATFIXLEN + len(d.Name) + len(d.Uid) + len(d.Gid) + len(d.Muid) - if n > len(b) { - return n, ErrShortStat - } - - for _, c := range d.Name { - if c == '/' { - return n, ErrBadName - } - } - - b = pbit16(b, uint16(n)-2) - b = pbit16(b, d.Type) - b = pbit32(b, d.Dev) - b = pbit8(b, d.Qid.Type) - b = pbit32(b, d.Qid.Vers) - b = pbit64(b, d.Qid.Path) - b = pbit32(b, d.Mode) - b = pbit32(b, d.Atime) - b = pbit32(b, d.Mtime) - b = pbit64(b, uint64(d.Length)) - b = pstring(b, d.Name) - b = pstring(b, d.Uid) - b = pstring(b, d.Gid) - b = pstring(b, d.Muid) - - return n, nil -} - -// UnmarshalDir decodes a single 9P stat message from b and returns the resulting Dir. -// -// If b is too small to hold a valid stat message, ErrShortStat is returned. -// -// If the stat message itself is invalid, ErrBadStat is returned. -func UnmarshalDir(b []byte) (*Dir, error) { - if len(b) < STATFIXLEN { - return nil, ErrShortStat - } - size, buf := gbit16(b) - if len(b) != int(size)+2 { - return nil, ErrBadStat - } - b = buf - - var d Dir - d.Type, b = gbit16(b) - d.Dev, b = gbit32(b) - d.Qid.Type, b = gbit8(b) - d.Qid.Vers, b = gbit32(b) - d.Qid.Path, b = gbit64(b) - d.Mode, b = gbit32(b) - d.Atime, b = gbit32(b) - d.Mtime, b = gbit32(b) - - n, b := gbit64(b) - d.Length = int64(n) - - var ok bool - if d.Name, b, ok = gstring(b); !ok { - return nil, ErrBadStat - } - if d.Uid, b, ok = gstring(b); !ok { - return nil, ErrBadStat - } - if d.Gid, b, ok = gstring(b); !ok { - return nil, ErrBadStat - } - if d.Muid, b, ok = gstring(b); !ok { - return nil, ErrBadStat - } - - return &d, nil -} - -// pbit8 copies the 8-bit number v to b and returns the remaining slice of b. -func pbit8(b []byte, v uint8) []byte { - b[0] = byte(v) - return b[1:] -} - -// pbit16 copies the 16-bit number v to b in little-endian order and returns the remaining slice of b. -func pbit16(b []byte, v uint16) []byte { - b[0] = byte(v) - b[1] = byte(v >> 8) - return b[2:] -} - -// pbit32 copies the 32-bit number v to b in little-endian order and returns the remaining slice of b. -func pbit32(b []byte, v uint32) []byte { - b[0] = byte(v) - b[1] = byte(v >> 8) - b[2] = byte(v >> 16) - b[3] = byte(v >> 24) - return b[4:] -} - -// pbit64 copies the 64-bit number v to b in little-endian order and returns the remaining slice of b. -func pbit64(b []byte, v uint64) []byte { - b[0] = byte(v) - b[1] = byte(v >> 8) - b[2] = byte(v >> 16) - b[3] = byte(v >> 24) - b[4] = byte(v >> 32) - b[5] = byte(v >> 40) - b[6] = byte(v >> 48) - b[7] = byte(v >> 56) - return b[8:] -} - -// pstring copies the string s to b, prepending it with a 16-bit length in little-endian order, and -// returning the remaining slice of b.. -func pstring(b []byte, s string) []byte { - b = pbit16(b, uint16(len(s))) - n := copy(b, s) - return b[n:] -} - -// gbit8 reads an 8-bit number from b and returns it with the remaining slice of b. -func gbit8(b []byte) (uint8, []byte) { - return uint8(b[0]), b[1:] -} - -// gbit16 reads a 16-bit number in little-endian order from b and returns it with the remaining slice of b. -func gbit16(b []byte) (uint16, []byte) { - return uint16(b[0]) | uint16(b[1])<<8, b[2:] -} - -// gbit32 reads a 32-bit number in little-endian order from b and returns it with the remaining slice of b. -func gbit32(b []byte) (uint32, []byte) { - return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24, b[4:] -} - -// gbit64 reads a 64-bit number in little-endian order from b and returns it with the remaining slice of b. -func gbit64(b []byte) (uint64, []byte) { - lo := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 - hi := uint32(b[4]) | uint32(b[5])<<8 | uint32(b[6])<<16 | uint32(b[7])<<24 - return uint64(lo) | uint64(hi)<<32, b[8:] -} - -// gstring reads a string from b, prefixed with a 16-bit length in little-endian order. -// It returns the string with the remaining slice of b and a boolean. If the length is -// greater than the number of bytes in b, the boolean will be false. -func gstring(b []byte) (string, []byte, bool) { - n, b := gbit16(b) - if int(n) > len(b) { - return "", b, false - } - return string(b[:n]), b[n:], true -} diff --git a/vendor/golang.org/x/sys/plan9/env_plan9.go b/vendor/golang.org/x/sys/plan9/env_plan9.go deleted file mode 100644 index 8f191800..00000000 --- a/vendor/golang.org/x/sys/plan9/env_plan9.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Plan 9 environment variables. - -package plan9 - -import ( - "syscall" -) - -func Getenv(key string) (value string, found bool) { - return syscall.Getenv(key) -} - -func Setenv(key, value string) error { - return syscall.Setenv(key, value) -} - -func Clearenv() { - syscall.Clearenv() -} - -func Environ() []string { - return syscall.Environ() -} - -func Unsetenv(key string) error { - return syscall.Unsetenv(key) -} diff --git a/vendor/golang.org/x/sys/plan9/errors_plan9.go b/vendor/golang.org/x/sys/plan9/errors_plan9.go deleted file mode 100644 index 65fe74d3..00000000 --- a/vendor/golang.org/x/sys/plan9/errors_plan9.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package plan9 - -import "syscall" - -// Constants -const ( - // Invented values to support what package os expects. - O_CREAT = 0x02000 - O_APPEND = 0x00400 - O_NOCTTY = 0x00000 - O_NONBLOCK = 0x00000 - O_SYNC = 0x00000 - O_ASYNC = 0x00000 - - S_IFMT = 0x1f000 - S_IFIFO = 0x1000 - S_IFCHR = 0x2000 - S_IFDIR = 0x4000 - S_IFBLK = 0x6000 - S_IFREG = 0x8000 - S_IFLNK = 0xa000 - S_IFSOCK = 0xc000 -) - -// Errors -var ( - EINVAL = syscall.NewError("bad arg in system call") - ENOTDIR = syscall.NewError("not a directory") - EISDIR = syscall.NewError("file is a directory") - ENOENT = syscall.NewError("file does not exist") - EEXIST = syscall.NewError("file already exists") - EMFILE = syscall.NewError("no free file descriptors") - EIO = syscall.NewError("i/o error") - ENAMETOOLONG = syscall.NewError("file name too long") - EINTR = syscall.NewError("interrupted") - EPERM = syscall.NewError("permission denied") - EBUSY = syscall.NewError("no free devices") - ETIMEDOUT = syscall.NewError("connection timed out") - EPLAN9 = syscall.NewError("not supported by plan 9") - - // The following errors do not correspond to any - // Plan 9 system messages. Invented to support - // what package os and others expect. - EACCES = syscall.NewError("access permission denied") - EAFNOSUPPORT = syscall.NewError("address family not supported by protocol") -) diff --git a/vendor/golang.org/x/sys/plan9/mkall.sh b/vendor/golang.org/x/sys/plan9/mkall.sh deleted file mode 100755 index 9f73c606..00000000 --- a/vendor/golang.org/x/sys/plan9/mkall.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2009 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -# The plan9 package provides access to the raw system call -# interface of the underlying operating system. Porting Go to -# a new architecture/operating system combination requires -# some manual effort, though there are tools that automate -# much of the process. The auto-generated files have names -# beginning with z. -# -# This script runs or (given -n) prints suggested commands to generate z files -# for the current system. Running those commands is not automatic. -# This script is documentation more than anything else. -# -# * asm_${GOOS}_${GOARCH}.s -# -# This hand-written assembly file implements system call dispatch. -# There are three entry points: -# -# func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr); -# func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr); -# func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr); -# -# The first and second are the standard ones; they differ only in -# how many arguments can be passed to the kernel. -# The third is for low-level use by the ForkExec wrapper; -# unlike the first two, it does not call into the scheduler to -# let it know that a system call is running. -# -# * syscall_${GOOS}.go -# -# This hand-written Go file implements system calls that need -# special handling and lists "//sys" comments giving prototypes -# for ones that can be auto-generated. Mksyscall reads those -# comments to generate the stubs. -# -# * syscall_${GOOS}_${GOARCH}.go -# -# Same as syscall_${GOOS}.go except that it contains code specific -# to ${GOOS} on one particular architecture. -# -# * types_${GOOS}.c -# -# This hand-written C file includes standard C headers and then -# creates typedef or enum names beginning with a dollar sign -# (use of $ in variable names is a gcc extension). The hardest -# part about preparing this file is figuring out which headers to -# include and which symbols need to be #defined to get the -# actual data structures that pass through to the kernel system calls. -# Some C libraries present alternate versions for binary compatibility -# and translate them on the way in and out of system calls, but -# there is almost always a #define that can get the real ones. -# See types_darwin.c and types_linux.c for examples. -# -# * zerror_${GOOS}_${GOARCH}.go -# -# This machine-generated file defines the system's error numbers, -# error strings, and signal numbers. The generator is "mkerrors.sh". -# Usually no arguments are needed, but mkerrors.sh will pass its -# arguments on to godefs. -# -# * zsyscall_${GOOS}_${GOARCH}.go -# -# Generated by mksyscall.pl; see syscall_${GOOS}.go above. -# -# * zsysnum_${GOOS}_${GOARCH}.go -# -# Generated by mksysnum_${GOOS}. -# -# * ztypes_${GOOS}_${GOARCH}.go -# -# Generated by godefs; see types_${GOOS}.c above. - -GOOSARCH="${GOOS}_${GOARCH}" - -# defaults -mksyscall="./mksyscall.pl" -mkerrors="./mkerrors.sh" -zerrors="zerrors_$GOOSARCH.go" -mksysctl="" -zsysctl="zsysctl_$GOOSARCH.go" -mksysnum= -mktypes= -run="sh" - -case "$1" in --syscalls) - for i in zsyscall*go - do - sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i - rm _$i - done - exit 0 - ;; --n) - run="cat" - shift -esac - -case "$#" in -0) - ;; -*) - echo 'usage: mkall.sh [-n]' 1>&2 - exit 2 -esac - -case "$GOOSARCH" in -_* | *_ | _) - echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 - exit 1 - ;; -plan9_386) - mkerrors= - mksyscall="./mksyscall.pl -l32 -plan9" - mksysnum="./mksysnum_plan9.sh /n/sources/plan9/sys/src/libc/9syscall/sys.h" - mktypes="XXX" - ;; -*) - echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 - exit 1 - ;; -esac - -( - if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi - case "$GOOS" in - plan9) - syscall_goos="syscall_$GOOS.go" - if [ -n "$mksyscall" ]; then echo "$mksyscall $syscall_goos syscall_$GOOSARCH.go |gofmt >zsyscall_$GOOSARCH.go"; fi - ;; - esac - if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi - if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi - if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go |gofmt >ztypes_$GOOSARCH.go"; fi -) | $run diff --git a/vendor/golang.org/x/sys/plan9/mkerrors.sh b/vendor/golang.org/x/sys/plan9/mkerrors.sh deleted file mode 100755 index 052c86d9..00000000 --- a/vendor/golang.org/x/sys/plan9/mkerrors.sh +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2009 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -# Generate Go code listing errors and other #defined constant -# values (ENAMETOOLONG etc.), by asking the preprocessor -# about the definitions. - -unset LANG -export LC_ALL=C -export LC_CTYPE=C - -CC=${CC:-gcc} - -uname=$(uname) - -includes=' -#include <sys/types.h> -#include <sys/file.h> -#include <fcntl.h> -#include <dirent.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <netinet/ip.h> -#include <netinet/ip6.h> -#include <netinet/tcp.h> -#include <errno.h> -#include <sys/signal.h> -#include <signal.h> -#include <sys/resource.h> -' - -ccflags="$@" - -# Write go tool cgo -godefs input. -( - echo package plan9 - echo - echo '/*' - indirect="includes_$(uname)" - echo "${!indirect} $includes" - echo '*/' - echo 'import "C"' - echo - echo 'const (' - - # The gcc command line prints all the #defines - # it encounters while processing the input - echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags | - awk ' - $1 != "#define" || $2 ~ /\(/ || $3 == "" {next} - - $2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next} # 386 registers - $2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next} - $2 ~ /^(SCM_SRCRT)$/ {next} - $2 ~ /^(MAP_FAILED)$/ {next} - - $2 !~ /^ETH_/ && - $2 !~ /^EPROC_/ && - $2 !~ /^EQUIV_/ && - $2 !~ /^EXPR_/ && - $2 ~ /^E[A-Z0-9_]+$/ || - $2 ~ /^B[0-9_]+$/ || - $2 ~ /^V[A-Z0-9]+$/ || - $2 ~ /^CS[A-Z0-9]/ || - $2 ~ /^I(SIG|CANON|CRNL|EXTEN|MAXBEL|STRIP|UTF8)$/ || - $2 ~ /^IGN/ || - $2 ~ /^IX(ON|ANY|OFF)$/ || - $2 ~ /^IN(LCR|PCK)$/ || - $2 ~ /(^FLU?SH)|(FLU?SH$)/ || - $2 ~ /^C(LOCAL|READ)$/ || - $2 == "BRKINT" || - $2 == "HUPCL" || - $2 == "PENDIN" || - $2 == "TOSTOP" || - $2 ~ /^PAR/ || - $2 ~ /^SIG[^_]/ || - $2 ~ /^O[CNPFP][A-Z]+[^_][A-Z]+$/ || - $2 ~ /^IN_/ || - $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || - $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || - $2 == "ICMPV6_FILTER" || - $2 == "SOMAXCONN" || - $2 == "NAME_MAX" || - $2 == "IFNAMSIZ" || - $2 ~ /^CTL_(MAXNAME|NET|QUERY)$/ || - $2 ~ /^SYSCTL_VERS/ || - $2 ~ /^(MS|MNT)_/ || - $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || - $2 ~ /^(O|F|FD|NAME|S|PTRACE|PT)_/ || - $2 ~ /^LINUX_REBOOT_CMD_/ || - $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || - $2 !~ "NLA_TYPE_MASK" && - $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P)_/ || - $2 ~ /^SIOC/ || - $2 ~ /^TIOC/ || - $2 !~ "RTF_BITS" && - $2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ || - $2 ~ /^BIOC/ || - $2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ || - $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|NOFILE|STACK)|RLIM_INFINITY/ || - $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || - $2 ~ /^CLONE_[A-Z_]+/ || - $2 !~ /^(BPF_TIMEVAL)$/ && - $2 ~ /^(BPF|DLT)_/ || - $2 !~ "WMESGLEN" && - $2 ~ /^W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", $2, $2)} - $2 ~ /^__WCOREFLAG$/ {next} - $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} - - {next} - ' | sort - - echo ')' -) >_const.go - -# Pull out the error names for later. -errors=$( - echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags | - awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' | - sort -) - -# Pull out the signal names for later. -signals=$( - echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | - awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | - egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' | - sort -) - -# Again, writing regexps to a file. -echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags | - awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' | - sort >_error.grep -echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | - awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | - egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' | - sort >_signal.grep - -echo '// mkerrors.sh' "$@" -echo '// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT' -echo -go tool cgo -godefs -- "$@" _const.go >_error.out -cat _error.out | grep -vf _error.grep | grep -vf _signal.grep -echo -echo '// Errors' -echo 'const (' -cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= Errno(\1)/' -echo ')' - -echo -echo '// Signals' -echo 'const (' -cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= Signal(\1)/' -echo ')' - -# Run C program to print error and syscall strings. -( - echo -E " -#include <stdio.h> -#include <stdlib.h> -#include <errno.h> -#include <ctype.h> -#include <string.h> -#include <signal.h> - -#define nelem(x) (sizeof(x)/sizeof((x)[0])) - -enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below - -int errors[] = { -" - for i in $errors - do - echo -E ' '$i, - done - - echo -E " -}; - -int signals[] = { -" - for i in $signals - do - echo -E ' '$i, - done - - # Use -E because on some systems bash builtin interprets \n itself. - echo -E ' -}; - -static int -intcmp(const void *a, const void *b) -{ - return *(int*)a - *(int*)b; -} - -int -main(void) -{ - int i, j, e; - char buf[1024], *p; - - printf("\n\n// Error table\n"); - printf("var errors = [...]string {\n"); - qsort(errors, nelem(errors), sizeof errors[0], intcmp); - for(i=0; i<nelem(errors); i++) { - e = errors[i]; - if(i > 0 && errors[i-1] == e) - continue; - strcpy(buf, strerror(e)); - // lowercase first letter: Bad -> bad, but STREAM -> STREAM. - if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) - buf[0] += a - A; - printf("\t%d: \"%s\",\n", e, buf); - } - printf("}\n\n"); - - printf("\n\n// Signal table\n"); - printf("var signals = [...]string {\n"); - qsort(signals, nelem(signals), sizeof signals[0], intcmp); - for(i=0; i<nelem(signals); i++) { - e = signals[i]; - if(i > 0 && signals[i-1] == e) - continue; - strcpy(buf, strsignal(e)); - // lowercase first letter: Bad -> bad, but STREAM -> STREAM. - if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) - buf[0] += a - A; - // cut trailing : number. - p = strrchr(buf, ":"[0]); - if(p) - *p = '\0'; - printf("\t%d: \"%s\",\n", e, buf); - } - printf("}\n\n"); - - return 0; -} - -' -) >_errors.c - -$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out diff --git a/vendor/golang.org/x/sys/plan9/mksyscall.pl b/vendor/golang.org/x/sys/plan9/mksyscall.pl deleted file mode 100755 index ce8e1e4f..00000000 --- a/vendor/golang.org/x/sys/plan9/mksyscall.pl +++ /dev/null @@ -1,319 +0,0 @@ -#!/usr/bin/env perl -# Copyright 2009 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -# This program reads a file containing function prototypes -# (like syscall_plan9.go) and generates system call bodies. -# The prototypes are marked by lines beginning with "//sys" -# and read like func declarations if //sys is replaced by func, but: -# * The parameter lists must give a name for each argument. -# This includes return parameters. -# * The parameter lists must give a type for each argument: -# the (x, y, z int) shorthand is not allowed. -# * If the return parameter is an error number, it must be named errno. - -# A line beginning with //sysnb is like //sys, except that the -# goroutine will not be suspended during the execution of the system -# call. This must only be used for system calls which can never -# block, as otherwise the system call could cause all goroutines to -# hang. - -use strict; - -my $cmdline = "mksyscall.pl " . join(' ', @ARGV); -my $errors = 0; -my $_32bit = ""; -my $plan9 = 0; -my $openbsd = 0; -my $netbsd = 0; -my $dragonfly = 0; -my $nacl = 0; -my $arm = 0; # 64-bit value should use (even, odd)-pair - -if($ARGV[0] eq "-b32") { - $_32bit = "big-endian"; - shift; -} elsif($ARGV[0] eq "-l32") { - $_32bit = "little-endian"; - shift; -} -if($ARGV[0] eq "-plan9") { - $plan9 = 1; - shift; -} -if($ARGV[0] eq "-openbsd") { - $openbsd = 1; - shift; -} -if($ARGV[0] eq "-netbsd") { - $netbsd = 1; - shift; -} -if($ARGV[0] eq "-dragonfly") { - $dragonfly = 1; - shift; -} -if($ARGV[0] eq "-nacl") { - $nacl = 1; - shift; -} -if($ARGV[0] eq "-arm") { - $arm = 1; - shift; -} - -if($ARGV[0] =~ /^-/) { - print STDERR "usage: mksyscall.pl [-b32 | -l32] [file ...]\n"; - exit 1; -} - -sub parseparamlist($) { - my ($list) = @_; - $list =~ s/^\s*//; - $list =~ s/\s*$//; - if($list eq "") { - return (); - } - return split(/\s*,\s*/, $list); -} - -sub parseparam($) { - my ($p) = @_; - if($p !~ /^(\S*) (\S*)$/) { - print STDERR "$ARGV:$.: malformed parameter: $p\n"; - $errors = 1; - return ("xx", "int"); - } - return ($1, $2); -} - -my $text = ""; -while(<>) { - chomp; - s/\s+/ /g; - s/^\s+//; - s/\s+$//; - my $nonblock = /^\/\/sysnb /; - next if !/^\/\/sys / && !$nonblock; - - # Line must be of the form - # func Open(path string, mode int, perm int) (fd int, errno error) - # Split into name, in params, out params. - if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$/) { - print STDERR "$ARGV:$.: malformed //sys declaration\n"; - $errors = 1; - next; - } - my ($func, $in, $out, $sysname) = ($2, $3, $4, $5); - - # Split argument lists on comma. - my @in = parseparamlist($in); - my @out = parseparamlist($out); - - # Try in vain to keep people from editing this file. - # The theory is that they jump into the middle of the file - # without reading the header. - $text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"; - - # Go function header. - my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : ""; - $text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl; - - # Check if err return available - my $errvar = ""; - foreach my $p (@out) { - my ($name, $type) = parseparam($p); - if($type eq "error") { - $errvar = $name; - last; - } - } - - # Prepare arguments to Syscall. - my @args = (); - my @uses = (); - my $n = 0; - foreach my $p (@in) { - my ($name, $type) = parseparam($p); - if($type =~ /^\*/) { - push @args, "uintptr(unsafe.Pointer($name))"; - } elsif($type eq "string" && $errvar ne "") { - $text .= "\tvar _p$n *byte\n"; - $text .= "\t_p$n, $errvar = BytePtrFromString($name)\n"; - $text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n"; - push @args, "uintptr(unsafe.Pointer(_p$n))"; - push @uses, "use(unsafe.Pointer(_p$n))"; - $n++; - } elsif($type eq "string") { - print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n"; - $text .= "\tvar _p$n *byte\n"; - $text .= "\t_p$n, _ = BytePtrFromString($name)\n"; - push @args, "uintptr(unsafe.Pointer(_p$n))"; - push @uses, "use(unsafe.Pointer(_p$n))"; - $n++; - } elsif($type =~ /^\[\](.*)/) { - # Convert slice into pointer, length. - # Have to be careful not to take address of &a[0] if len == 0: - # pass dummy pointer in that case. - # Used to pass nil, but some OSes or simulators reject write(fd, nil, 0). - $text .= "\tvar _p$n unsafe.Pointer\n"; - $text .= "\tif len($name) > 0 {\n\t\t_p$n = unsafe.Pointer(\&${name}[0])\n\t}"; - $text .= " else {\n\t\t_p$n = unsafe.Pointer(&_zero)\n\t}"; - $text .= "\n"; - push @args, "uintptr(_p$n)", "uintptr(len($name))"; - $n++; - } elsif($type eq "int64" && ($openbsd || $netbsd)) { - push @args, "0"; - if($_32bit eq "big-endian") { - push @args, "uintptr($name>>32)", "uintptr($name)"; - } elsif($_32bit eq "little-endian") { - push @args, "uintptr($name)", "uintptr($name>>32)"; - } else { - push @args, "uintptr($name)"; - } - } elsif($type eq "int64" && $dragonfly) { - if ($func !~ /^extp(read|write)/i) { - push @args, "0"; - } - if($_32bit eq "big-endian") { - push @args, "uintptr($name>>32)", "uintptr($name)"; - } elsif($_32bit eq "little-endian") { - push @args, "uintptr($name)", "uintptr($name>>32)"; - } else { - push @args, "uintptr($name)"; - } - } elsif($type eq "int64" && $_32bit ne "") { - if(@args % 2 && $arm) { - # arm abi specifies 64-bit argument uses - # (even, odd) pair - push @args, "0" - } - if($_32bit eq "big-endian") { - push @args, "uintptr($name>>32)", "uintptr($name)"; - } else { - push @args, "uintptr($name)", "uintptr($name>>32)"; - } - } else { - push @args, "uintptr($name)"; - } - } - - # Determine which form to use; pad args with zeros. - my $asm = "Syscall"; - if ($nonblock) { - $asm = "RawSyscall"; - } - if(@args <= 3) { - while(@args < 3) { - push @args, "0"; - } - } elsif(@args <= 6) { - $asm .= "6"; - while(@args < 6) { - push @args, "0"; - } - } elsif(@args <= 9) { - $asm .= "9"; - while(@args < 9) { - push @args, "0"; - } - } else { - print STDERR "$ARGV:$.: too many arguments to system call\n"; - } - - # System call number. - if($sysname eq "") { - $sysname = "SYS_$func"; - $sysname =~ s/([a-z])([A-Z])/${1}_$2/g; # turn FooBar into Foo_Bar - $sysname =~ y/a-z/A-Z/; - if($nacl) { - $sysname =~ y/A-Z/a-z/; - } - } - - # Actual call. - my $args = join(', ', @args); - my $call = "$asm($sysname, $args)"; - - # Assign return values. - my $body = ""; - my @ret = ("_", "_", "_"); - my $do_errno = 0; - for(my $i=0; $i<@out; $i++) { - my $p = $out[$i]; - my ($name, $type) = parseparam($p); - my $reg = ""; - if($name eq "err" && !$plan9) { - $reg = "e1"; - $ret[2] = $reg; - $do_errno = 1; - } elsif($name eq "err" && $plan9) { - $ret[0] = "r0"; - $ret[2] = "e1"; - next; - } else { - $reg = sprintf("r%d", $i); - $ret[$i] = $reg; - } - if($type eq "bool") { - $reg = "$reg != 0"; - } - if($type eq "int64" && $_32bit ne "") { - # 64-bit number in r1:r0 or r0:r1. - if($i+2 > @out) { - print STDERR "$ARGV:$.: not enough registers for int64 return\n"; - } - if($_32bit eq "big-endian") { - $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1); - } else { - $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i); - } - $ret[$i] = sprintf("r%d", $i); - $ret[$i+1] = sprintf("r%d", $i+1); - } - if($reg ne "e1" || $plan9) { - $body .= "\t$name = $type($reg)\n"; - } - } - if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") { - $text .= "\t$call\n"; - } else { - $text .= "\t$ret[0], $ret[1], $ret[2] := $call\n"; - } - foreach my $use (@uses) { - $text .= "\t$use\n"; - } - $text .= $body; - - if ($plan9 && $ret[2] eq "e1") { - $text .= "\tif int32(r0) == -1 {\n"; - $text .= "\t\terr = e1\n"; - $text .= "\t}\n"; - } elsif ($do_errno) { - $text .= "\tif e1 != 0 {\n"; - $text .= "\t\terr = e1\n"; - $text .= "\t}\n"; - } - $text .= "\treturn\n"; - $text .= "}\n\n"; -} - -chomp $text; -chomp $text; - -if($errors) { - exit 1; -} - -print <<EOF; -// $cmdline -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -package plan9 - -import "unsafe" - -$text -EOF -exit 0; diff --git a/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh b/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh deleted file mode 100755 index 3c3ab058..00000000 --- a/vendor/golang.org/x/sys/plan9/mksysnum_plan9.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# Copyright 2009 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -COMMAND="mksysnum_plan9.sh $@" - -cat <<EOF -// $COMMAND -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT - -package plan9 - -const( -EOF - -SP='[ ]' # space or tab -sed "s/^#define${SP}\\([A-Z0-9_][A-Z0-9_]*\\)${SP}${SP}*\\([0-9][0-9]*\\)/SYS_\\1=\\2/g" \ - < $1 | grep -v SYS__ - -cat <<EOF -) -EOF diff --git a/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go deleted file mode 100644 index 87ae9d2a..00000000 --- a/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go +++ /dev/null @@ -1,21 +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. - -// +build go1.5 - -package plan9 - -import "syscall" - -func fixwd() { - syscall.Fixwd() -} - -func Getwd() (wd string, err error) { - return syscall.Getwd() -} - -func Chdir(path string) error { - return syscall.Chdir(path) -} diff --git a/vendor/golang.org/x/sys/plan9/pwd_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_plan9.go deleted file mode 100644 index c07c798b..00000000 --- a/vendor/golang.org/x/sys/plan9/pwd_plan9.go +++ /dev/null @@ -1,23 +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. - -// +build !go1.5 - -package plan9 - -func fixwd() { -} - -func Getwd() (wd string, err error) { - fd, err := open(".", O_RDONLY) - if err != nil { - return "", err - } - defer Close(fd) - return Fd2path(fd) -} - -func Chdir(path string) error { - return chdir(path) -} diff --git a/vendor/golang.org/x/sys/plan9/race.go b/vendor/golang.org/x/sys/plan9/race.go deleted file mode 100644 index 42edd93e..00000000 --- a/vendor/golang.org/x/sys/plan9/race.go +++ /dev/null @@ -1,30 +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. - -// +build plan9,race - -package plan9 - -import ( - "runtime" - "unsafe" -) - -const raceenabled = true - -func raceAcquire(addr unsafe.Pointer) { - runtime.RaceAcquire(addr) -} - -func raceReleaseMerge(addr unsafe.Pointer) { - runtime.RaceReleaseMerge(addr) -} - -func raceReadRange(addr unsafe.Pointer, len int) { - runtime.RaceReadRange(addr, len) -} - -func raceWriteRange(addr unsafe.Pointer, len int) { - runtime.RaceWriteRange(addr, len) -} diff --git a/vendor/golang.org/x/sys/plan9/race0.go b/vendor/golang.org/x/sys/plan9/race0.go deleted file mode 100644 index c89cf8fc..00000000 --- a/vendor/golang.org/x/sys/plan9/race0.go +++ /dev/null @@ -1,25 +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. - -// +build plan9,!race - -package plan9 - -import ( - "unsafe" -) - -const raceenabled = false - -func raceAcquire(addr unsafe.Pointer) { -} - -func raceReleaseMerge(addr unsafe.Pointer) { -} - -func raceReadRange(addr unsafe.Pointer, len int) { -} - -func raceWriteRange(addr unsafe.Pointer, len int) { -} diff --git a/vendor/golang.org/x/sys/plan9/str.go b/vendor/golang.org/x/sys/plan9/str.go deleted file mode 100644 index 4f7f9ad7..00000000 --- a/vendor/golang.org/x/sys/plan9/str.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build plan9 - -package plan9 - -func itoa(val int) string { // do it here rather than with fmt to avoid dependency - if val < 0 { - return "-" + itoa(-val) - } - var buf [32]byte // big enough for int64 - i := len(buf) - 1 - for val >= 10 { - buf[i] = byte(val%10 + '0') - i-- - val /= 10 - } - buf[i] = byte(val + '0') - return string(buf[i:]) -} diff --git a/vendor/golang.org/x/sys/plan9/syscall.go b/vendor/golang.org/x/sys/plan9/syscall.go deleted file mode 100644 index 5046cfe7..00000000 --- a/vendor/golang.org/x/sys/plan9/syscall.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build plan9 - -// Package plan9 contains an interface to the low-level operating system -// primitives. OS details vary depending on the underlying system, and -// by default, godoc will display the OS-specific documentation for the current -// system. If you want godoc to display documentation for another -// system, set $GOOS and $GOARCH to the desired system. For example, if -// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS -// to freebsd and $GOARCH to arm. -// The primary use of this package is inside other packages that provide a more -// portable interface to the system, such as "os", "time" and "net". Use -// those packages rather than this one if you can. -// For details of the functions and data types in this package consult -// the manuals for the appropriate operating system. -// These calls return err == nil to indicate success; otherwise -// err represents an operating system error describing the failure and -// holds a value of type syscall.ErrorString. -package plan9 // import "golang.org/x/sys/plan9" - -import "unsafe" - -// ByteSliceFromString returns a NUL-terminated slice of bytes -// containing the text of s. If s contains a NUL byte at any -// location, it returns (nil, EINVAL). -func ByteSliceFromString(s string) ([]byte, error) { - for i := 0; i < len(s); i++ { - if s[i] == 0 { - return nil, EINVAL - } - } - a := make([]byte, len(s)+1) - copy(a, s) - return a, nil -} - -// BytePtrFromString returns a pointer to a NUL-terminated array of -// bytes containing the text of s. If s contains a NUL byte at any -// location, it returns (nil, EINVAL). -func BytePtrFromString(s string) (*byte, error) { - a, err := ByteSliceFromString(s) - if err != nil { - return nil, err - } - return &a[0], nil -} - -// Single-word zero for use when we need a valid pointer to 0 bytes. -// See mksyscall.pl. -var _zero uintptr - -func (ts *Timespec) Unix() (sec int64, nsec int64) { - return int64(ts.Sec), int64(ts.Nsec) -} - -func (tv *Timeval) Unix() (sec int64, nsec int64) { - return int64(tv.Sec), int64(tv.Usec) * 1000 -} - -func (ts *Timespec) Nano() int64 { - return int64(ts.Sec)*1e9 + int64(ts.Nsec) -} - -func (tv *Timeval) Nano() int64 { - return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 -} - -// use is a no-op, but the compiler cannot see that it is. -// Calling use(p) ensures that p is kept live until that point. -//go:noescape -func use(p unsafe.Pointer) diff --git a/vendor/golang.org/x/sys/plan9/syscall_plan9.go b/vendor/golang.org/x/sys/plan9/syscall_plan9.go deleted file mode 100644 index d39d07de..00000000 --- a/vendor/golang.org/x/sys/plan9/syscall_plan9.go +++ /dev/null @@ -1,349 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Plan 9 system calls. -// This file is compiled as ordinary Go code, -// but it is also input to mksyscall, -// which parses the //sys lines and generates system call stubs. -// Note that sometimes we use a lowercase //sys name and -// wrap it in our own nicer implementation. - -package plan9 - -import ( - "syscall" - "unsafe" -) - -// A Note is a string describing a process note. -// It implements the os.Signal interface. -type Note string - -func (n Note) Signal() {} - -func (n Note) String() string { - return string(n) -} - -var ( - Stdin = 0 - Stdout = 1 - Stderr = 2 -) - -// For testing: clients can set this flag to force -// creation of IPv6 sockets to return EAFNOSUPPORT. -var SocketDisableIPv6 bool - -func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.ErrorString) -func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.ErrorString) -func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) -func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) - -func atoi(b []byte) (n uint) { - n = 0 - for i := 0; i < len(b); i++ { - n = n*10 + uint(b[i]-'0') - } - return -} - -func cstring(s []byte) string { - for i := range s { - if s[i] == 0 { - return string(s[0:i]) - } - } - return string(s) -} - -func errstr() string { - var buf [ERRMAX]byte - - RawSyscall(SYS_ERRSTR, uintptr(unsafe.Pointer(&buf[0])), uintptr(len(buf)), 0) - - buf[len(buf)-1] = 0 - return cstring(buf[:]) -} - -// Implemented in assembly to import from runtime. -func exit(code int) - -func Exit(code int) { exit(code) } - -func readnum(path string) (uint, error) { - var b [12]byte - - fd, e := Open(path, O_RDONLY) - if e != nil { - return 0, e - } - defer Close(fd) - - n, e := Pread(fd, b[:], 0) - - if e != nil { - return 0, e - } - - m := 0 - for ; m < n && b[m] == ' '; m++ { - } - - return atoi(b[m : n-1]), nil -} - -func Getpid() (pid int) { - n, _ := readnum("#c/pid") - return int(n) -} - -func Getppid() (ppid int) { - n, _ := readnum("#c/ppid") - return int(n) -} - -func Read(fd int, p []byte) (n int, err error) { - return Pread(fd, p, -1) -} - -func Write(fd int, p []byte) (n int, err error) { - return Pwrite(fd, p, -1) -} - -var ioSync int64 - -//sys fd2path(fd int, buf []byte) (err error) -func Fd2path(fd int) (path string, err error) { - var buf [512]byte - - e := fd2path(fd, buf[:]) - if e != nil { - return "", e - } - return cstring(buf[:]), nil -} - -//sys pipe(p *[2]int32) (err error) -func Pipe(p []int) (err error) { - if len(p) != 2 { - return syscall.ErrorString("bad arg in system call") - } - var pp [2]int32 - err = pipe(&pp) - p[0] = int(pp[0]) - p[1] = int(pp[1]) - return -} - -// Underlying system call writes to newoffset via pointer. -// Implemented in assembly to avoid allocation. -func seek(placeholder uintptr, fd int, offset int64, whence int) (newoffset int64, err string) - -func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - newoffset, e := seek(0, fd, offset, whence) - - if newoffset == -1 { - err = syscall.ErrorString(e) - } - return -} - -func Mkdir(path string, mode uint32) (err error) { - fd, err := Create(path, O_RDONLY, DMDIR|mode) - - if fd != -1 { - Close(fd) - } - - return -} - -type Waitmsg struct { - Pid int - Time [3]uint32 - Msg string -} - -func (w Waitmsg) Exited() bool { return true } -func (w Waitmsg) Signaled() bool { return false } - -func (w Waitmsg) ExitStatus() int { - if len(w.Msg) == 0 { - // a normal exit returns no message - return 0 - } - return 1 -} - -//sys await(s []byte) (n int, err error) -func Await(w *Waitmsg) (err error) { - var buf [512]byte - var f [5][]byte - - n, err := await(buf[:]) - - if err != nil || w == nil { - return - } - - nf := 0 - p := 0 - for i := 0; i < n && nf < len(f)-1; i++ { - if buf[i] == ' ' { - f[nf] = buf[p:i] - p = i + 1 - nf++ - } - } - f[nf] = buf[p:] - nf++ - - if nf != len(f) { - return syscall.ErrorString("invalid wait message") - } - w.Pid = int(atoi(f[0])) - w.Time[0] = uint32(atoi(f[1])) - w.Time[1] = uint32(atoi(f[2])) - w.Time[2] = uint32(atoi(f[3])) - w.Msg = cstring(f[4]) - if w.Msg == "''" { - // await() returns '' for no error - w.Msg = "" - } - return -} - -func Unmount(name, old string) (err error) { - fixwd() - oldp, err := BytePtrFromString(old) - if err != nil { - return err - } - oldptr := uintptr(unsafe.Pointer(oldp)) - - var r0 uintptr - var e syscall.ErrorString - - // bind(2) man page: If name is zero, everything bound or mounted upon old is unbound or unmounted. - if name == "" { - r0, _, e = Syscall(SYS_UNMOUNT, _zero, oldptr, 0) - } else { - namep, err := BytePtrFromString(name) - if err != nil { - return err - } - r0, _, e = Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(namep)), oldptr, 0) - } - - if int32(r0) == -1 { - err = e - } - return -} - -func Fchdir(fd int) (err error) { - path, err := Fd2path(fd) - - if err != nil { - return - } - - return Chdir(path) -} - -type Timespec struct { - Sec int32 - Nsec int32 -} - -type Timeval struct { - Sec int32 - Usec int32 -} - -func NsecToTimeval(nsec int64) (tv Timeval) { - nsec += 999 // round up to microsecond - tv.Usec = int32(nsec % 1e9 / 1e3) - tv.Sec = int32(nsec / 1e9) - return -} - -func nsec() int64 { - var scratch int64 - - r0, _, _ := Syscall(SYS_NSEC, uintptr(unsafe.Pointer(&scratch)), 0, 0) - // TODO(aram): remove hack after I fix _nsec in the pc64 kernel. - if r0 == 0 { - return scratch - } - return int64(r0) -} - -func Gettimeofday(tv *Timeval) error { - nsec := nsec() - *tv = NsecToTimeval(nsec) - return nil -} - -func Getpagesize() int { return 0x1000 } - -func Getegid() (egid int) { return -1 } -func Geteuid() (euid int) { return -1 } -func Getgid() (gid int) { return -1 } -func Getuid() (uid int) { return -1 } - -func Getgroups() (gids []int, err error) { - return make([]int, 0), nil -} - -//sys open(path string, mode int) (fd int, err error) -func Open(path string, mode int) (fd int, err error) { - fixwd() - return open(path, mode) -} - -//sys create(path string, mode int, perm uint32) (fd int, err error) -func Create(path string, mode int, perm uint32) (fd int, err error) { - fixwd() - return create(path, mode, perm) -} - -//sys remove(path string) (err error) -func Remove(path string) error { - fixwd() - return remove(path) -} - -//sys stat(path string, edir []byte) (n int, err error) -func Stat(path string, edir []byte) (n int, err error) { - fixwd() - return stat(path, edir) -} - -//sys bind(name string, old string, flag int) (err error) -func Bind(name string, old string, flag int) (err error) { - fixwd() - return bind(name, old, flag) -} - -//sys mount(fd int, afd int, old string, flag int, aname string) (err error) -func Mount(fd int, afd int, old string, flag int, aname string) (err error) { - fixwd() - return mount(fd, afd, old, flag, aname) -} - -//sys wstat(path string, edir []byte) (err error) -func Wstat(path string, edir []byte) (err error) { - fixwd() - return wstat(path, edir) -} - -//sys chdir(path string) (err error) -//sys Dup(oldfd int, newfd int) (fd int, err error) -//sys Pread(fd int, p []byte, offset int64) (n int, err error) -//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) -//sys Close(fd int) (err error) -//sys Fstat(fd int, edir []byte) (n int, err error) -//sys Fwstat(fd int, edir []byte) (err error) diff --git a/vendor/golang.org/x/sys/plan9/syscall_test.go b/vendor/golang.org/x/sys/plan9/syscall_test.go deleted file mode 100644 index 8f829bad..00000000 --- a/vendor/golang.org/x/sys/plan9/syscall_test.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build plan9 - -package plan9_test - -import ( - "testing" - - "golang.org/x/sys/plan9" -) - -func testSetGetenv(t *testing.T, key, value string) { - err := plan9.Setenv(key, value) - if err != nil { - t.Fatalf("Setenv failed to set %q: %v", value, err) - } - newvalue, found := plan9.Getenv(key) - if !found { - t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value) - } - if newvalue != value { - t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value) - } -} - -func TestEnv(t *testing.T) { - testSetGetenv(t, "TESTENV", "AVALUE") - // make sure TESTENV gets set to "", not deleted - testSetGetenv(t, "TESTENV", "") -} diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go deleted file mode 100644 index b35598ad..00000000 --- a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_386.go +++ /dev/null @@ -1,292 +0,0 @@ -// mksyscall.pl -l32 -plan9 syscall_plan9.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -package plan9 - -import "unsafe" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fd2path(fd int, buf []byte) (err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf))) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func pipe(p *[2]int32) (err error) { - r0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func await(s []byte) (n int, err error) { - var _p0 unsafe.Pointer - if len(s) > 0 { - _p0 = unsafe.Pointer(&s[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func open(path string, mode int) (fd int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func create(path string, mode int, perm uint32) (fd int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func remove(path string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func stat(path string, edir []byte) (n int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(edir) > 0 { - _p1 = unsafe.Pointer(&edir[0]) - } else { - _p1 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir))) - use(unsafe.Pointer(_p0)) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func bind(name string, old string, flag int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(name) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(old) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mount(fd int, afd int, old string, flag int, aname string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(old) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(aname) - if err != nil { - return - } - r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func wstat(path string, edir []byte) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(edir) > 0 { - _p1 = unsafe.Pointer(&edir[0]) - } else { - _p1 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir))) - use(unsafe.Pointer(_p0)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func chdir(path string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Dup(oldfd int, newfd int) (fd int, err error) { - r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Pread(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Pwrite(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Close(fd int) (err error) { - r0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Fstat(fd int, edir []byte) (n int, err error) { - var _p0 unsafe.Pointer - if len(edir) > 0 { - _p0 = unsafe.Pointer(&edir[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir))) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Fwstat(fd int, edir []byte) (err error) { - var _p0 unsafe.Pointer - if len(edir) > 0 { - _p0 = unsafe.Pointer(&edir[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir))) - if int32(r0) == -1 { - err = e1 - } - return -} diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go deleted file mode 100644 index b35598ad..00000000 --- a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_amd64.go +++ /dev/null @@ -1,292 +0,0 @@ -// mksyscall.pl -l32 -plan9 syscall_plan9.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -package plan9 - -import "unsafe" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fd2path(fd int, buf []byte) (err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf))) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func pipe(p *[2]int32) (err error) { - r0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func await(s []byte) (n int, err error) { - var _p0 unsafe.Pointer - if len(s) > 0 { - _p0 = unsafe.Pointer(&s[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func open(path string, mode int) (fd int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - use(unsafe.Pointer(_p0)) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func create(path string, mode int, perm uint32) (fd int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - use(unsafe.Pointer(_p0)) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func remove(path string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func stat(path string, edir []byte) (n int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(edir) > 0 { - _p1 = unsafe.Pointer(&edir[0]) - } else { - _p1 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir))) - use(unsafe.Pointer(_p0)) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func bind(name string, old string, flag int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(name) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(old) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mount(fd int, afd int, old string, flag int, aname string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(old) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(aname) - if err != nil { - return - } - r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func wstat(path string, edir []byte) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(edir) > 0 { - _p1 = unsafe.Pointer(&edir[0]) - } else { - _p1 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir))) - use(unsafe.Pointer(_p0)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func chdir(path string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - use(unsafe.Pointer(_p0)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Dup(oldfd int, newfd int) (fd int, err error) { - r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Pread(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Pwrite(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Close(fd int) (err error) { - r0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Fstat(fd int, edir []byte) (n int, err error) { - var _p0 unsafe.Pointer - if len(edir) > 0 { - _p0 = unsafe.Pointer(&edir[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir))) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Fwstat(fd int, edir []byte) (err error) { - var _p0 unsafe.Pointer - if len(edir) > 0 { - _p0 = unsafe.Pointer(&edir[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir))) - if int32(r0) == -1 { - err = e1 - } - return -} diff --git a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_arm.go b/vendor/golang.org/x/sys/plan9/zsyscall_plan9_arm.go deleted file mode 100644 index 8dd87239..00000000 --- a/vendor/golang.org/x/sys/plan9/zsyscall_plan9_arm.go +++ /dev/null @@ -1,284 +0,0 @@ -// mksyscall.pl -l32 -plan9 -tags plan9,arm syscall_plan9.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -// +build plan9,arm - -package plan9 - -import "unsafe" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fd2path(fd int, buf []byte) (err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf))) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func pipe(p *[2]int32) (err error) { - r0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func await(s []byte) (n int, err error) { - var _p0 unsafe.Pointer - if len(s) > 0 { - _p0 = unsafe.Pointer(&s[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func open(path string, mode int) (fd int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func create(path string, mode int, perm uint32) (fd int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func remove(path string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func stat(path string, edir []byte) (n int, err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(edir) > 0 { - _p1 = unsafe.Pointer(&edir[0]) - } else { - _p1 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir))) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func bind(name string, old string, flag int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(name) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(old) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mount(fd int, afd int, old string, flag int, aname string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(old) - if err != nil { - return - } - var _p1 *byte - _p1, err = BytePtrFromString(aname) - if err != nil { - return - } - r0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func wstat(path string, edir []byte) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(edir) > 0 { - _p1 = unsafe.Pointer(&edir[0]) - } else { - _p1 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir))) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func chdir(path string) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - r0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Dup(oldfd int, newfd int) (fd int, err error) { - r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0) - fd = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Pread(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Pwrite(fd int, p []byte, offset int64) (n int, err error) { - var _p0 unsafe.Pointer - if len(p) > 0 { - _p0 = unsafe.Pointer(&p[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Close(fd int) (err error) { - r0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Fstat(fd int, edir []byte) (n int, err error) { - var _p0 unsafe.Pointer - if len(edir) > 0 { - _p0 = unsafe.Pointer(&edir[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir))) - n = int(r0) - if int32(r0) == -1 { - err = e1 - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Fwstat(fd int, edir []byte) (err error) { - var _p0 unsafe.Pointer - if len(edir) > 0 { - _p0 = unsafe.Pointer(&edir[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir))) - if int32(r0) == -1 { - err = e1 - } - return -} diff --git a/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go b/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go deleted file mode 100644 index 22e8abd4..00000000 --- a/vendor/golang.org/x/sys/plan9/zsysnum_plan9.go +++ /dev/null @@ -1,49 +0,0 @@ -// mksysnum_plan9.sh /opt/plan9/sys/src/libc/9syscall/sys.h -// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT - -package plan9 - -const ( - SYS_SYSR1 = 0 - SYS_BIND = 2 - SYS_CHDIR = 3 - SYS_CLOSE = 4 - SYS_DUP = 5 - SYS_ALARM = 6 - SYS_EXEC = 7 - SYS_EXITS = 8 - SYS_FAUTH = 10 - SYS_SEGBRK = 12 - SYS_OPEN = 14 - SYS_OSEEK = 16 - SYS_SLEEP = 17 - SYS_RFORK = 19 - SYS_PIPE = 21 - SYS_CREATE = 22 - SYS_FD2PATH = 23 - SYS_BRK_ = 24 - SYS_REMOVE = 25 - SYS_NOTIFY = 28 - SYS_NOTED = 29 - SYS_SEGATTACH = 30 - SYS_SEGDETACH = 31 - SYS_SEGFREE = 32 - SYS_SEGFLUSH = 33 - SYS_RENDEZVOUS = 34 - SYS_UNMOUNT = 35 - SYS_SEMACQUIRE = 37 - SYS_SEMRELEASE = 38 - SYS_SEEK = 39 - SYS_FVERSION = 40 - SYS_ERRSTR = 41 - SYS_STAT = 42 - SYS_FSTAT = 43 - SYS_WSTAT = 44 - SYS_FWSTAT = 45 - SYS_MOUNT = 46 - SYS_AWAIT = 47 - SYS_PREAD = 50 - SYS_PWRITE = 51 - SYS_TSEMACQUIRE = 52 - SYS_NSEC = 53 -) diff --git a/vendor/golang.org/x/sys/unix/creds_test.go b/vendor/golang.org/x/sys/unix/creds_test.go deleted file mode 100644 index 6b292b19..00000000 --- a/vendor/golang.org/x/sys/unix/creds_test.go +++ /dev/null @@ -1,152 +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. - -// +build linux - -package unix_test - -import ( - "bytes" - "go/build" - "net" - "os" - "syscall" - "testing" - - "golang.org/x/sys/unix" -) - -// TestSCMCredentials tests the sending and receiving of credentials -// (PID, UID, GID) in an ancillary message between two UNIX -// sockets. The SO_PASSCRED socket option is enabled on the sending -// socket for this to work. -func TestSCMCredentials(t *testing.T) { - socketTypeTests := []struct { - socketType int - dataLen int - }{ - { - unix.SOCK_STREAM, - 1, - }, { - unix.SOCK_DGRAM, - 0, - }, - } - - for _, tt := range socketTypeTests { - if tt.socketType == unix.SOCK_DGRAM && !atLeast1p10() { - t.Log("skipping DGRAM test on pre-1.10") - continue - } - - fds, err := unix.Socketpair(unix.AF_LOCAL, tt.socketType, 0) - if err != nil { - t.Fatalf("Socketpair: %v", err) - } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) - - err = unix.SetsockoptInt(fds[0], unix.SOL_SOCKET, unix.SO_PASSCRED, 1) - if err != nil { - t.Fatalf("SetsockoptInt: %v", err) - } - - srvFile := os.NewFile(uintptr(fds[0]), "server") - defer srvFile.Close() - srv, err := net.FileConn(srvFile) - if err != nil { - t.Errorf("FileConn: %v", err) - return - } - defer srv.Close() - - cliFile := os.NewFile(uintptr(fds[1]), "client") - defer cliFile.Close() - cli, err := net.FileConn(cliFile) - if err != nil { - t.Errorf("FileConn: %v", err) - return - } - defer cli.Close() - - var ucred unix.Ucred - if os.Getuid() != 0 { - ucred.Pid = int32(os.Getpid()) - ucred.Uid = 0 - ucred.Gid = 0 - oob := unix.UnixCredentials(&ucred) - _, _, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) - if op, ok := err.(*net.OpError); ok { - err = op.Err - } - if sys, ok := err.(*os.SyscallError); ok { - err = sys.Err - } - if err != syscall.EPERM { - t.Fatalf("WriteMsgUnix failed with %v, want EPERM", err) - } - } - - ucred.Pid = int32(os.Getpid()) - ucred.Uid = uint32(os.Getuid()) - ucred.Gid = uint32(os.Getgid()) - oob := unix.UnixCredentials(&ucred) - - // On SOCK_STREAM, this is internally going to send a dummy byte - n, oobn, err := cli.(*net.UnixConn).WriteMsgUnix(nil, oob, nil) - if err != nil { - t.Fatalf("WriteMsgUnix: %v", err) - } - if n != 0 { - t.Fatalf("WriteMsgUnix n = %d, want 0", n) - } - if oobn != len(oob) { - t.Fatalf("WriteMsgUnix oobn = %d, want %d", oobn, len(oob)) - } - - oob2 := make([]byte, 10*len(oob)) - n, oobn2, flags, _, err := srv.(*net.UnixConn).ReadMsgUnix(nil, oob2) - if err != nil { - t.Fatalf("ReadMsgUnix: %v", err) - } - if flags != 0 { - t.Fatalf("ReadMsgUnix flags = 0x%x, want 0", flags) - } - if n != tt.dataLen { - t.Fatalf("ReadMsgUnix n = %d, want %d", n, tt.dataLen) - } - if oobn2 != oobn { - // without SO_PASSCRED set on the socket, ReadMsgUnix will - // return zero oob bytes - t.Fatalf("ReadMsgUnix oobn = %d, want %d", oobn2, oobn) - } - oob2 = oob2[:oobn2] - if !bytes.Equal(oob, oob2) { - t.Fatal("ReadMsgUnix oob bytes don't match") - } - - scm, err := unix.ParseSocketControlMessage(oob2) - if err != nil { - t.Fatalf("ParseSocketControlMessage: %v", err) - } - newUcred, err := unix.ParseUnixCredentials(&scm[0]) - if err != nil { - t.Fatalf("ParseUnixCredentials: %v", err) - } - if *newUcred != ucred { - t.Fatalf("ParseUnixCredentials = %+v, want %+v", newUcred, ucred) - } - } -} - -// atLeast1p10 reports whether we are running on Go 1.10 or later. -func atLeast1p10() bool { - for _, ver := range build.Default.ReleaseTags { - if ver == "go1.10" { - return true - } - } - return false -} diff --git a/vendor/golang.org/x/sys/unix/dev_darwin_test.go b/vendor/golang.org/x/sys/unix/dev_darwin_test.go deleted file mode 100644 index bf1adf3a..00000000 --- a/vendor/golang.org/x/sys/unix/dev_darwin_test.go +++ /dev/null @@ -1,51 +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. - -// +build go1.7 - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func TestDevices(t *testing.T) { - testCases := []struct { - path string - major uint32 - minor uint32 - }{ - // Most of the device major/minor numbers on Darwin are - // dynamically generated by devfs. These are some well-known - // static numbers. - {"/dev/ttyp0", 4, 0}, - {"/dev/ttys0", 4, 48}, - {"/dev/ptyp0", 5, 0}, - {"/dev/ptyr0", 5, 32}, - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { - var stat unix.Stat_t - err := unix.Stat(tc.path, &stat) - if err != nil { - t.Errorf("failed to stat device: %v", err) - return - } - - dev := uint64(stat.Rdev) - if unix.Major(dev) != tc.major { - t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) - } - if unix.Minor(dev) != tc.minor { - t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) - } - if unix.Mkdev(tc.major, tc.minor) != dev { - t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) - } - }) - } -} diff --git a/vendor/golang.org/x/sys/unix/dev_dragonfly_test.go b/vendor/golang.org/x/sys/unix/dev_dragonfly_test.go deleted file mode 100644 index 9add3766..00000000 --- a/vendor/golang.org/x/sys/unix/dev_dragonfly_test.go +++ /dev/null @@ -1,50 +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. - -// +build go1.7 - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func TestDevices(t *testing.T) { - testCases := []struct { - path string - major uint32 - minor uint32 - }{ - // Minor is a cookie instead of an index on DragonFlyBSD - {"/dev/null", 10, 0x00000002}, - {"/dev/random", 10, 0x00000003}, - {"/dev/urandom", 10, 0x00000004}, - {"/dev/zero", 10, 0x0000000c}, - {"/dev/bpf", 15, 0xffff00ff}, - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { - var stat unix.Stat_t - err := unix.Stat(tc.path, &stat) - if err != nil { - t.Errorf("failed to stat device: %v", err) - return - } - - dev := uint64(stat.Rdev) - if unix.Major(dev) != tc.major { - t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) - } - if unix.Minor(dev) != tc.minor { - t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) - } - if unix.Mkdev(tc.major, tc.minor) != dev { - t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) - } - }) - } -} diff --git a/vendor/golang.org/x/sys/unix/dev_linux_test.go b/vendor/golang.org/x/sys/unix/dev_linux_test.go deleted file mode 100644 index 2fd3eadd..00000000 --- a/vendor/golang.org/x/sys/unix/dev_linux_test.go +++ /dev/null @@ -1,53 +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. - -// +build go1.7 - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func TestDevices(t *testing.T) { - testCases := []struct { - path string - major uint32 - minor uint32 - }{ - // well known major/minor numbers according to - // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/devices.txt - {"/dev/null", 1, 3}, - {"/dev/zero", 1, 5}, - {"/dev/random", 1, 8}, - {"/dev/full", 1, 7}, - {"/dev/urandom", 1, 9}, - {"/dev/tty", 5, 0}, - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { - var stat unix.Stat_t - err := unix.Stat(tc.path, &stat) - if err != nil { - t.Errorf("failed to stat device: %v", err) - return - } - - dev := uint64(stat.Rdev) - if unix.Major(dev) != tc.major { - t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) - } - if unix.Minor(dev) != tc.minor { - t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) - } - if unix.Mkdev(tc.major, tc.minor) != dev { - t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) - } - }) - - } -} diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd_test.go b/vendor/golang.org/x/sys/unix/dev_netbsd_test.go deleted file mode 100644 index 441058a1..00000000 --- a/vendor/golang.org/x/sys/unix/dev_netbsd_test.go +++ /dev/null @@ -1,50 +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. - -// +build go1.7 - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func TestDevices(t *testing.T) { - testCases := []struct { - path string - major uint32 - minor uint32 - }{ - // well known major/minor numbers according to /dev/MAKEDEV on - // NetBSD 8.0 - {"/dev/null", 2, 2}, - {"/dev/zero", 2, 12}, - {"/dev/random", 46, 0}, - {"/dev/urandom", 46, 1}, - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { - var stat unix.Stat_t - err := unix.Stat(tc.path, &stat) - if err != nil { - t.Errorf("failed to stat device: %v", err) - return - } - - dev := uint64(stat.Rdev) - if unix.Major(dev) != tc.major { - t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) - } - if unix.Minor(dev) != tc.minor { - t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) - } - if unix.Mkdev(tc.major, tc.minor) != dev { - t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) - } - }) - } -} diff --git a/vendor/golang.org/x/sys/unix/dev_openbsd_test.go b/vendor/golang.org/x/sys/unix/dev_openbsd_test.go deleted file mode 100644 index e6cb64ff..00000000 --- a/vendor/golang.org/x/sys/unix/dev_openbsd_test.go +++ /dev/null @@ -1,54 +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. - -// +build go1.7 - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func TestDevices(t *testing.T) { - testCases := []struct { - path string - major uint32 - minor uint32 - }{ - // well known major/minor numbers according to /dev/MAKEDEV on - // OpenBSD 6.0 - {"/dev/null", 2, 2}, - {"/dev/zero", 2, 12}, - {"/dev/ttyp0", 5, 0}, - {"/dev/ttyp1", 5, 1}, - {"/dev/random", 45, 0}, - {"/dev/srandom", 45, 1}, - {"/dev/urandom", 45, 2}, - {"/dev/arandom", 45, 3}, - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { - var stat unix.Stat_t - err := unix.Stat(tc.path, &stat) - if err != nil { - t.Errorf("failed to stat device: %v", err) - return - } - - dev := uint64(stat.Rdev) - if unix.Major(dev) != tc.major { - t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) - } - if unix.Minor(dev) != tc.minor { - t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) - } - if unix.Mkdev(tc.major, tc.minor) != dev { - t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) - } - }) - } -} diff --git a/vendor/golang.org/x/sys/unix/dev_solaris_test.go b/vendor/golang.org/x/sys/unix/dev_solaris_test.go deleted file mode 100644 index 656508c9..00000000 --- a/vendor/golang.org/x/sys/unix/dev_solaris_test.go +++ /dev/null @@ -1,51 +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. - -// +build go1.7 - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func TestDevices(t *testing.T) { - testCases := []struct { - path string - major uint32 - minor uint32 - }{ - // Well-known major/minor numbers on OpenSolaris according to - // /etc/name_to_major - {"/dev/zero", 134, 12}, - {"/dev/null", 134, 2}, - {"/dev/ptyp0", 172, 0}, - {"/dev/ttyp0", 175, 0}, - {"/dev/ttyp1", 175, 1}, - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { - var stat unix.Stat_t - err := unix.Stat(tc.path, &stat) - if err != nil { - t.Errorf("failed to stat device: %v", err) - return - } - - dev := uint64(stat.Rdev) - if unix.Major(dev) != tc.major { - t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) - } - if unix.Minor(dev) != tc.minor { - t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) - } - if unix.Mkdev(tc.major, tc.minor) != dev { - t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) - } - }) - } -} diff --git a/vendor/golang.org/x/sys/unix/export_test.go b/vendor/golang.org/x/sys/unix/export_test.go deleted file mode 100644 index e8024690..00000000 --- a/vendor/golang.org/x/sys/unix/export_test.go +++ /dev/null @@ -1,9 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix - -var Itoa = itoa diff --git a/vendor/golang.org/x/sys/unix/linux/Dockerfile b/vendor/golang.org/x/sys/unix/linux/Dockerfile deleted file mode 100644 index c3b29ea3..00000000 --- a/vendor/golang.org/x/sys/unix/linux/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -FROM ubuntu:17.10 - -# Dependencies to get the git sources and go binaries -RUN apt-get update && apt-get install -y \ - curl \ - git \ - && rm -rf /var/lib/apt/lists/* - -# Get the git sources. If not cached, this takes O(5 minutes). -WORKDIR /git -RUN git config --global advice.detachedHead false -# Linux Kernel: Released 28 Jan 2018 -RUN git clone --branch v4.15 --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux -# GNU C library: Released 01 Feb 2018 (we should try to get a secure way to clone this) -RUN git clone --branch glibc-2.27 --depth 1 git://sourceware.org/git/glibc.git - -# Get Go 1.10 -ENV GOLANG_VERSION 1.10 -ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz -ENV GOLANG_DOWNLOAD_SHA256 b5a64335f1490277b585832d1f6c7f8c6c11206cba5cd3f771dcb87b98ad1a33 - -RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \ - && echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - \ - && tar -C /usr/local -xzf golang.tar.gz \ - && rm golang.tar.gz - -ENV PATH /usr/local/go/bin:$PATH - -# Linux and Glibc build dependencies -RUN apt-get update && apt-get install -y \ - bison gawk make python \ - gcc gcc-multilib \ - gettext texinfo \ - && rm -rf /var/lib/apt/lists/* -# Emulator and cross compilers -RUN apt-get update && apt-get install -y \ - qemu \ - gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi \ - gcc-mips-linux-gnu gcc-mips64-linux-gnuabi64 \ - gcc-mips64el-linux-gnuabi64 gcc-mipsel-linux-gnu \ - gcc-powerpc64-linux-gnu gcc-powerpc64le-linux-gnu \ - gcc-s390x-linux-gnu gcc-sparc64-linux-gnu \ - && rm -rf /var/lib/apt/lists/* - -# Let the scripts know they are in the docker environment -ENV GOLANG_SYS_BUILD docker -WORKDIR /build -ENTRYPOINT ["go", "run", "linux/mkall.go", "/git/linux", "/git/glibc"] diff --git a/vendor/golang.org/x/sys/unix/linux/mkall.go b/vendor/golang.org/x/sys/unix/linux/mkall.go deleted file mode 100644 index 89b2fe886..00000000 --- a/vendor/golang.org/x/sys/unix/linux/mkall.go +++ /dev/null @@ -1,482 +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. - -// linux/mkall.go - Generates all Linux zsysnum, zsyscall, zerror, and ztype -// files for all 11 linux architectures supported by the go compiler. See -// README.md for more information about the build system. - -// To run it you must have a git checkout of the Linux kernel and glibc. Once -// the appropriate sources are ready, the program is run as: -// go run linux/mkall.go <linux_dir> <glibc_dir> - -// +build ignore - -package main - -import ( - "bufio" - "bytes" - "fmt" - "io" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "runtime" - "strings" - "unicode" -) - -// These will be paths to the appropriate source directories. -var LinuxDir string -var GlibcDir string - -const TempDir = "/tmp" -const IncludeDir = TempDir + "/include" // To hold our C headers -const BuildDir = TempDir + "/build" // To hold intermediate build files - -const GOOS = "linux" // Only for Linux targets -const BuildArch = "amd64" // Must be built on this architecture -const MinKernel = "2.6.23" // https://golang.org/doc/install#requirements - -type target struct { - GoArch string // Architecture name according to Go - LinuxArch string // Architecture name according to the Linux Kernel - GNUArch string // Architecture name according to GNU tools (https://wiki.debian.org/Multiarch/Tuples) - BigEndian bool // Default Little Endian - SignedChar bool // Is -fsigned-char needed (default no) - Bits int -} - -// List of the 11 Linux targets supported by the go compiler. sparc64 is not -// currently supported, though a port is in progress. -var targets = []target{ - { - GoArch: "386", - LinuxArch: "x86", - GNUArch: "i686-linux-gnu", // Note "i686" not "i386" - Bits: 32, - }, - { - GoArch: "amd64", - LinuxArch: "x86", - GNUArch: "x86_64-linux-gnu", - Bits: 64, - }, - { - GoArch: "arm64", - LinuxArch: "arm64", - GNUArch: "aarch64-linux-gnu", - SignedChar: true, - Bits: 64, - }, - { - GoArch: "arm", - LinuxArch: "arm", - GNUArch: "arm-linux-gnueabi", - Bits: 32, - }, - { - GoArch: "mips", - LinuxArch: "mips", - GNUArch: "mips-linux-gnu", - BigEndian: true, - Bits: 32, - }, - { - GoArch: "mipsle", - LinuxArch: "mips", - GNUArch: "mipsel-linux-gnu", - Bits: 32, - }, - { - GoArch: "mips64", - LinuxArch: "mips", - GNUArch: "mips64-linux-gnuabi64", - BigEndian: true, - Bits: 64, - }, - { - GoArch: "mips64le", - LinuxArch: "mips", - GNUArch: "mips64el-linux-gnuabi64", - Bits: 64, - }, - { - GoArch: "ppc64", - LinuxArch: "powerpc", - GNUArch: "powerpc64-linux-gnu", - BigEndian: true, - Bits: 64, - }, - { - GoArch: "ppc64le", - LinuxArch: "powerpc", - GNUArch: "powerpc64le-linux-gnu", - Bits: 64, - }, - { - GoArch: "s390x", - LinuxArch: "s390", - GNUArch: "s390x-linux-gnu", - BigEndian: true, - SignedChar: true, - Bits: 64, - }, - // { - // GoArch: "sparc64", - // LinuxArch: "sparc", - // GNUArch: "sparc64-linux-gnu", - // BigEndian: true, - // Bits: 64, - // }, -} - -// ptracePairs is a list of pairs of targets that can, in some cases, -// run each other's binaries. -var ptracePairs = []struct{ a1, a2 string }{ - {"386", "amd64"}, - {"arm", "arm64"}, - {"mips", "mips64"}, - {"mipsle", "mips64le"}, -} - -func main() { - if runtime.GOOS != GOOS || runtime.GOARCH != BuildArch { - fmt.Printf("Build system has GOOS_GOARCH = %s_%s, need %s_%s\n", - runtime.GOOS, runtime.GOARCH, GOOS, BuildArch) - return - } - - // Check that we are using the new build system if we should - if os.Getenv("GOLANG_SYS_BUILD") != "docker" { - fmt.Println("In the new build system, mkall.go should not be called directly.") - fmt.Println("See README.md") - return - } - - // Parse the command line options - if len(os.Args) != 3 { - fmt.Println("USAGE: go run linux/mkall.go <linux_dir> <glibc_dir>") - return - } - LinuxDir = os.Args[1] - GlibcDir = os.Args[2] - - for _, t := range targets { - fmt.Printf("----- GENERATING: %s -----\n", t.GoArch) - if err := t.generateFiles(); err != nil { - fmt.Printf("%v\n***** FAILURE: %s *****\n\n", err, t.GoArch) - } else { - fmt.Printf("----- SUCCESS: %s -----\n\n", t.GoArch) - } - } - - fmt.Printf("----- GENERATING ptrace pairs -----\n") - ok := true - for _, p := range ptracePairs { - if err := generatePtracePair(p.a1, p.a2); err != nil { - fmt.Printf("%v\n***** FAILURE: %s/%s *****\n\n", err, p.a1, p.a2) - ok = false - } - } - if ok { - fmt.Printf("----- SUCCESS ptrace pairs -----\n\n") - } -} - -// Makes an exec.Cmd with Stderr attached to os.Stderr -func makeCommand(name string, args ...string) *exec.Cmd { - cmd := exec.Command(name, args...) - cmd.Stderr = os.Stderr - return cmd -} - -// Runs the command, pipes output to a formatter, pipes that to an output file. -func (t *target) commandFormatOutput(formatter string, outputFile string, - name string, args ...string) (err error) { - mainCmd := makeCommand(name, args...) - - fmtCmd := makeCommand(formatter) - if formatter == "mkpost" { - fmtCmd = makeCommand("go", "run", "mkpost.go") - // Set GOARCH_TARGET so mkpost knows what GOARCH is.. - fmtCmd.Env = append(os.Environ(), "GOARCH_TARGET="+t.GoArch) - // Set GOARCH to host arch for mkpost, so it can run natively. - for i, s := range fmtCmd.Env { - if strings.HasPrefix(s, "GOARCH=") { - fmtCmd.Env[i] = "GOARCH=" + BuildArch - } - } - } - - // mainCmd | fmtCmd > outputFile - if fmtCmd.Stdin, err = mainCmd.StdoutPipe(); err != nil { - return - } - if fmtCmd.Stdout, err = os.Create(outputFile); err != nil { - return - } - - // Make sure the formatter eventually closes - if err = fmtCmd.Start(); err != nil { - return - } - defer func() { - fmtErr := fmtCmd.Wait() - if err == nil { - err = fmtErr - } - }() - - return mainCmd.Run() -} - -// Generates all the files for a Linux target -func (t *target) generateFiles() error { - // Setup environment variables - os.Setenv("GOOS", GOOS) - os.Setenv("GOARCH", t.GoArch) - - // Get appropriate compiler and emulator (unless on x86) - if t.LinuxArch != "x86" { - // Check/Setup cross compiler - compiler := t.GNUArch + "-gcc" - if _, err := exec.LookPath(compiler); err != nil { - return err - } - os.Setenv("CC", compiler) - - // Check/Setup emulator (usually first component of GNUArch) - qemuArchName := t.GNUArch[:strings.Index(t.GNUArch, "-")] - if t.LinuxArch == "powerpc" { - qemuArchName = t.GoArch - } - os.Setenv("GORUN", "qemu-"+qemuArchName) - } else { - os.Setenv("CC", "gcc") - } - - // Make the include directory and fill it with headers - if err := os.MkdirAll(IncludeDir, os.ModePerm); err != nil { - return err - } - defer os.RemoveAll(IncludeDir) - if err := t.makeHeaders(); err != nil { - return fmt.Errorf("could not make header files: %v", err) - } - fmt.Println("header files generated") - - // Make each of the four files - if err := t.makeZSysnumFile(); err != nil { - return fmt.Errorf("could not make zsysnum file: %v", err) - } - fmt.Println("zsysnum file generated") - - if err := t.makeZSyscallFile(); err != nil { - return fmt.Errorf("could not make zsyscall file: %v", err) - } - fmt.Println("zsyscall file generated") - - if err := t.makeZTypesFile(); err != nil { - return fmt.Errorf("could not make ztypes file: %v", err) - } - fmt.Println("ztypes file generated") - - if err := t.makeZErrorsFile(); err != nil { - return fmt.Errorf("could not make zerrors file: %v", err) - } - fmt.Println("zerrors file generated") - - return nil -} - -// Create the Linux and glibc headers in the include directory. -func (t *target) makeHeaders() error { - // Make the Linux headers we need for this architecture - linuxMake := makeCommand("make", "headers_install", "ARCH="+t.LinuxArch, "INSTALL_HDR_PATH="+TempDir) - linuxMake.Dir = LinuxDir - if err := linuxMake.Run(); err != nil { - return err - } - - // A Temporary build directory for glibc - if err := os.MkdirAll(BuildDir, os.ModePerm); err != nil { - return err - } - defer os.RemoveAll(BuildDir) - - // Make the glibc headers we need for this architecture - confScript := filepath.Join(GlibcDir, "configure") - glibcConf := makeCommand(confScript, "--prefix="+TempDir, "--host="+t.GNUArch, "--enable-kernel="+MinKernel) - glibcConf.Dir = BuildDir - if err := glibcConf.Run(); err != nil { - return err - } - glibcMake := makeCommand("make", "install-headers") - glibcMake.Dir = BuildDir - if err := glibcMake.Run(); err != nil { - return err - } - // We only need an empty stubs file - stubsFile := filepath.Join(IncludeDir, "gnu/stubs.h") - if file, err := os.Create(stubsFile); err != nil { - return err - } else { - file.Close() - } - - return nil -} - -// makes the zsysnum_linux_$GOARCH.go file -func (t *target) makeZSysnumFile() error { - zsysnumFile := fmt.Sprintf("zsysnum_linux_%s.go", t.GoArch) - unistdFile := filepath.Join(IncludeDir, "asm/unistd.h") - - args := append(t.cFlags(), unistdFile) - return t.commandFormatOutput("gofmt", zsysnumFile, "linux/mksysnum.pl", args...) -} - -// makes the zsyscall_linux_$GOARCH.go file -func (t *target) makeZSyscallFile() error { - zsyscallFile := fmt.Sprintf("zsyscall_linux_%s.go", t.GoArch) - // Find the correct architecture syscall file (might end with x.go) - archSyscallFile := fmt.Sprintf("syscall_linux_%s.go", t.GoArch) - if _, err := os.Stat(archSyscallFile); os.IsNotExist(err) { - shortArch := strings.TrimSuffix(t.GoArch, "le") - archSyscallFile = fmt.Sprintf("syscall_linux_%sx.go", shortArch) - } - - args := append(t.mksyscallFlags(), "-tags", "linux,"+t.GoArch, - "syscall_linux.go", archSyscallFile) - return t.commandFormatOutput("gofmt", zsyscallFile, "./mksyscall.pl", args...) -} - -// makes the zerrors_linux_$GOARCH.go file -func (t *target) makeZErrorsFile() error { - zerrorsFile := fmt.Sprintf("zerrors_linux_%s.go", t.GoArch) - - return t.commandFormatOutput("gofmt", zerrorsFile, "./mkerrors.sh", t.cFlags()...) -} - -// makes the ztypes_linux_$GOARCH.go file -func (t *target) makeZTypesFile() error { - ztypesFile := fmt.Sprintf("ztypes_linux_%s.go", t.GoArch) - - args := []string{"tool", "cgo", "-godefs", "--"} - args = append(args, t.cFlags()...) - args = append(args, "linux/types.go") - return t.commandFormatOutput("mkpost", ztypesFile, "go", args...) -} - -// Flags that should be given to gcc and cgo for this target -func (t *target) cFlags() []string { - // Compile statically to avoid cross-architecture dynamic linking. - flags := []string{"-Wall", "-Werror", "-static", "-I" + IncludeDir} - - // Architecture-specific flags - if t.SignedChar { - flags = append(flags, "-fsigned-char") - } - if t.LinuxArch == "x86" { - flags = append(flags, fmt.Sprintf("-m%d", t.Bits)) - } - - return flags -} - -// Flags that should be given to mksyscall for this target -func (t *target) mksyscallFlags() (flags []string) { - if t.Bits == 32 { - if t.BigEndian { - flags = append(flags, "-b32") - } else { - flags = append(flags, "-l32") - } - } - - // This flag menas a 64-bit value should use (even, odd)-pair. - if t.GoArch == "arm" || (t.LinuxArch == "mips" && t.Bits == 32) { - flags = append(flags, "-arm") - } - return -} - -// generatePtracePair takes a pair of GOARCH values that can run each -// other's binaries, such as 386 and amd64. It extracts the PtraceRegs -// type for each one. It writes a new file defining the types -// PtraceRegsArch1 and PtraceRegsArch2 and the corresponding functions -// Ptrace{Get,Set}Regs{arch1,arch2}. This permits debugging the other -// binary on a native system. -func generatePtracePair(arch1, arch2 string) error { - def1, err := ptraceDef(arch1) - if err != nil { - return err - } - def2, err := ptraceDef(arch2) - if err != nil { - return err - } - f, err := os.Create(fmt.Sprintf("zptrace%s_linux.go", arch1)) - if err != nil { - return err - } - buf := bufio.NewWriter(f) - fmt.Fprintf(buf, "// Code generated by linux/mkall.go generatePtracePair(%s, %s). DO NOT EDIT.\n", arch1, arch2) - fmt.Fprintf(buf, "\n") - fmt.Fprintf(buf, "// +build linux\n") - fmt.Fprintf(buf, "// +build %s %s\n", arch1, arch2) - fmt.Fprintf(buf, "\n") - fmt.Fprintf(buf, "package unix\n") - fmt.Fprintf(buf, "\n") - fmt.Fprintf(buf, "%s\n", `import "unsafe"`) - fmt.Fprintf(buf, "\n") - writeOnePtrace(buf, arch1, def1) - fmt.Fprintf(buf, "\n") - writeOnePtrace(buf, arch2, def2) - if err := buf.Flush(); err != nil { - return err - } - if err := f.Close(); err != nil { - return err - } - return nil -} - -// ptraceDef returns the definition of PtraceRegs for arch. -func ptraceDef(arch string) (string, error) { - filename := fmt.Sprintf("ztypes_linux_%s.go", arch) - data, err := ioutil.ReadFile(filename) - if err != nil { - return "", fmt.Errorf("reading %s: %v", filename, err) - } - start := bytes.Index(data, []byte("type PtraceRegs struct")) - if start < 0 { - return "", fmt.Errorf("%s: no definition of PtraceRegs", filename) - } - data = data[start:] - end := bytes.Index(data, []byte("\n}\n")) - if end < 0 { - return "", fmt.Errorf("%s: can't find end of PtraceRegs definition", filename) - } - return string(data[:end+2]), nil -} - -// writeOnePtrace writes out the ptrace definitions for arch. -func writeOnePtrace(w io.Writer, arch, def string) { - uarch := string(unicode.ToUpper(rune(arch[0]))) + arch[1:] - fmt.Fprintf(w, "// PtraceRegs%s is the registers used by %s binaries.\n", uarch, arch) - fmt.Fprintf(w, "%s\n", strings.Replace(def, "PtraceRegs", "PtraceRegs"+uarch, 1)) - fmt.Fprintf(w, "\n") - fmt.Fprintf(w, "// PtraceGetRegs%s fetches the registers used by %s binaries.\n", uarch, arch) - fmt.Fprintf(w, "func PtraceGetRegs%s(pid int, regsout *PtraceRegs%s) error {\n", uarch, uarch) - fmt.Fprintf(w, "\treturn ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))\n") - fmt.Fprintf(w, "}\n") - fmt.Fprintf(w, "\n") - fmt.Fprintf(w, "// PtraceSetRegs%s sets the registers used by %s binaries.\n", uarch, arch) - fmt.Fprintf(w, "func PtraceSetRegs%s(pid int, regs *PtraceRegs%s) error {\n", uarch, uarch) - fmt.Fprintf(w, "\treturn ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))\n") - fmt.Fprintf(w, "}\n") -} diff --git a/vendor/golang.org/x/sys/unix/linux/mksysnum.pl b/vendor/golang.org/x/sys/unix/linux/mksysnum.pl deleted file mode 100755 index 63fd800b..00000000 --- a/vendor/golang.org/x/sys/unix/linux/mksysnum.pl +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env perl -# Copyright 2009 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -use strict; - -if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { - print STDERR "GOARCH or GOOS not defined in environment\n"; - exit 1; -} - -# Check that we are using the new build system if we should -if($ENV{'GOLANG_SYS_BUILD'} ne "docker") { - print STDERR "In the new build system, mksysnum should not be called directly.\n"; - print STDERR "See README.md\n"; - exit 1; -} - -my $command = "$0 ". join(' ', @ARGV); - -print <<EOF; -// $command -// Code generated by the command above; see README.md. DO NOT EDIT. - -// +build $ENV{'GOARCH'},$ENV{'GOOS'} - -package unix - -const( -EOF - -my $offset = 0; - -sub fmt { - my ($name, $num) = @_; - if($num > 999){ - # ignore deprecated syscalls that are no longer implemented - # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h?id=refs/heads/master#n716 - return; - } - $name =~ y/a-z/A-Z/; - $num = $num + $offset; - print " SYS_$name = $num;\n"; -} - -my $prev; -open(CC, "$ENV{'CC'} -E -dD @ARGV |") || die "can't run $ENV{'CC'}"; -while(<CC>){ - if(/^#define __NR_Linux\s+([0-9]+)/){ - # mips/mips64: extract offset - $offset = $1; - } - elsif(/^#define __NR(\w*)_SYSCALL_BASE\s+([0-9]+)/){ - # arm: extract offset - $offset = $1; - } - elsif(/^#define __NR_syscalls\s+/) { - # ignore redefinitions of __NR_syscalls - } - elsif(/^#define __NR_(\w*)Linux_syscalls\s+/) { - # mips/mips64: ignore definitions about the number of syscalls - } - elsif(/^#define __NR_(\w+)\s+([0-9]+)/){ - $prev = $2; - fmt($1, $2); - } - elsif(/^#define __NR3264_(\w+)\s+([0-9]+)/){ - $prev = $2; - fmt($1, $2); - } - elsif(/^#define __NR_(\w+)\s+\(\w+\+\s*([0-9]+)\)/){ - fmt($1, $prev+$2) - } - elsif(/^#define __NR_(\w+)\s+\(__NR_Linux \+ ([0-9]+)/){ - fmt($1, $2); - } - elsif(/^#define __NR_(\w+)\s+\(__NR_SYSCALL_BASE \+ ([0-9]+)/){ - fmt($1, $2); - } -} - -print <<EOF; -) -EOF diff --git a/vendor/golang.org/x/sys/unix/linux/types.go b/vendor/golang.org/x/sys/unix/linux/types.go deleted file mode 100644 index 186a98f1..00000000 --- a/vendor/golang.org/x/sys/unix/linux/types.go +++ /dev/null @@ -1,696 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -/* -Input to cgo -godefs. See README.md -*/ - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package unix - -/* -#define _LARGEFILE_SOURCE -#define _LARGEFILE64_SOURCE -#define _FILE_OFFSET_BITS 64 -#define _GNU_SOURCE - -#include <dirent.h> -#include <netinet/in.h> -#include <netinet/tcp.h> -#include <netpacket/packet.h> -#include <poll.h> -#include <sched.h> -#include <signal.h> -#include <stdio.h> -#include <sys/epoll.h> -#include <sys/inotify.h> -#include <sys/ioctl.h> -#include <sys/mman.h> -#include <sys/mount.h> -#include <sys/param.h> -#include <sys/ptrace.h> -#include <sys/resource.h> -#include <sys/select.h> -#include <sys/signal.h> -#include <sys/statfs.h> -#include <sys/sysinfo.h> -#include <sys/time.h> -#include <sys/times.h> -#include <sys/timex.h> -#include <sys/un.h> -#include <sys/user.h> -#include <sys/utsname.h> -#include <sys/wait.h> -#include <linux/filter.h> -#include <linux/icmpv6.h> -#include <linux/keyctl.h> -#include <linux/netlink.h> -#include <linux/perf_event.h> -#include <linux/rtnetlink.h> -#include <linux/stat.h> -#include <asm/termbits.h> -#include <asm/ptrace.h> -#include <time.h> -#include <unistd.h> -#include <ustat.h> -#include <utime.h> -#include <linux/can.h> -#include <linux/if_alg.h> -#include <linux/fs.h> -#include <linux/vm_sockets.h> -#include <linux/random.h> -#include <linux/taskstats.h> -#include <linux/cgroupstats.h> -#include <linux/genetlink.h> - -// On mips64, the glibc stat and kernel stat do not agree -#if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64) - -// Use the stat defined by the kernel with a few modifications. These are: -// * The time fields (like st_atime and st_atimensec) use the timespec -// struct (like st_atim) for consitancy with the glibc fields. -// * The padding fields get different names to not break compatibility. -// * st_blocks is signed, again for compatibility. -struct stat { - unsigned int st_dev; - unsigned int st_pad1[3]; // Reserved for st_dev expansion - - unsigned long st_ino; - - mode_t st_mode; - __u32 st_nlink; - - uid_t st_uid; - gid_t st_gid; - - unsigned int st_rdev; - unsigned int st_pad2[3]; // Reserved for st_rdev expansion - - off_t st_size; - - // These are declared as speperate fields in the kernel. Here we use - // the timespec struct for consistancy with the other stat structs. - struct timespec st_atim; - struct timespec st_mtim; - struct timespec st_ctim; - - unsigned int st_blksize; - unsigned int st_pad4; - - long st_blocks; -}; - -// These are needed because we do not include fcntl.h or sys/types.h -#include <linux/fcntl.h> -#include <linux/fadvise.h> - -#else - -// Use the stat defined by glibc -#include <fcntl.h> -#include <sys/types.h> - -#endif - -// These are defined in linux/fcntl.h, but including it globally causes -// conflicts with fcntl.h -#ifndef AT_STATX_SYNC_TYPE -# define AT_STATX_SYNC_TYPE 0x6000 // Type of synchronisation required from statx() -#endif -#ifndef AT_STATX_SYNC_AS_STAT -# define AT_STATX_SYNC_AS_STAT 0x0000 // - Do whatever stat() does -#endif -#ifndef AT_STATX_FORCE_SYNC -# define AT_STATX_FORCE_SYNC 0x2000 // - Force the attributes to be sync'd with the server -#endif -#ifndef AT_STATX_DONT_SYNC -# define AT_STATX_DONT_SYNC 0x4000 // - Don't sync attributes with the server -#endif - -#ifdef TCSETS2 -// On systems that have "struct termios2" use this as type Termios. -typedef struct termios2 termios_t; -#else -typedef struct termios termios_t; -#endif - -enum { - sizeofPtr = sizeof(void*), -}; - -union sockaddr_all { - struct sockaddr s1; // this one gets used for fields - struct sockaddr_in s2; // these pad it out - struct sockaddr_in6 s3; - struct sockaddr_un s4; - struct sockaddr_ll s5; - struct sockaddr_nl s6; -}; - -struct sockaddr_any { - struct sockaddr addr; - char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; -}; - -// copied from /usr/include/bluetooth/hci.h -struct sockaddr_hci { - sa_family_t hci_family; - unsigned short hci_dev; - unsigned short hci_channel; -}; - -// copied from /usr/include/bluetooth/bluetooth.h -#define BDADDR_BREDR 0x00 -#define BDADDR_LE_PUBLIC 0x01 -#define BDADDR_LE_RANDOM 0x02 - -// copied from /usr/include/bluetooth/l2cap.h -struct sockaddr_l2 { - sa_family_t l2_family; - unsigned short l2_psm; - uint8_t l2_bdaddr[6]; - unsigned short l2_cid; - uint8_t l2_bdaddr_type; -}; - -// copied from /usr/include/linux/un.h -struct my_sockaddr_un { - sa_family_t sun_family; -#if defined(__ARM_EABI__) || defined(__powerpc64__) - // on ARM char is by default unsigned - signed char sun_path[108]; -#else - char sun_path[108]; -#endif -}; - -#ifdef __ARM_EABI__ -typedef struct user_regs PtraceRegs; -#elif defined(__aarch64__) -typedef struct user_pt_regs PtraceRegs; -#elif defined(__mips__) || defined(__powerpc64__) -typedef struct pt_regs PtraceRegs; -#elif defined(__s390x__) -typedef struct _user_regs_struct PtraceRegs; -#elif defined(__sparc__) -#include <asm/ptrace.h> -typedef struct pt_regs PtraceRegs; -#else -typedef struct user_regs_struct PtraceRegs; -#endif - -#if defined(__s390x__) -typedef struct _user_psw_struct ptracePsw; -typedef struct _user_fpregs_struct ptraceFpregs; -typedef struct _user_per_struct ptracePer; -#else -typedef struct {} ptracePsw; -typedef struct {} ptraceFpregs; -typedef struct {} ptracePer; -#endif - -// The real epoll_event is a union, and godefs doesn't handle it well. -struct my_epoll_event { - uint32_t events; -#if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32) - // padding is not specified in linux/eventpoll.h but added to conform to the - // alignment requirements of EABI - int32_t padFd; -#elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__) - int32_t _padFd; -#endif - int32_t fd; - int32_t pad; -}; - -*/ -import "C" - -// Machine characteristics; for internal use. - -const ( - sizeofPtr = C.sizeofPtr - sizeofShort = C.sizeof_short - sizeofInt = C.sizeof_int - sizeofLong = C.sizeof_long - sizeofLongLong = C.sizeof_longlong - PathMax = C.PATH_MAX -) - -// Basic types - -type ( - _C_short C.short - _C_int C.int - _C_long C.long - _C_long_long C.longlong -) - -// Time - -type Timespec C.struct_timespec - -type Timeval C.struct_timeval - -type Timex C.struct_timex - -type Time_t C.time_t - -type Tms C.struct_tms - -type Utimbuf C.struct_utimbuf - -// Processes - -type Rusage C.struct_rusage - -type Rlimit C.struct_rlimit - -type _Gid_t C.gid_t - -// Files - -type Stat_t C.struct_stat - -type Statfs_t C.struct_statfs - -type StatxTimestamp C.struct_statx_timestamp - -type Statx_t C.struct_statx - -type Dirent C.struct_dirent - -type Fsid C.fsid_t - -type Flock_t C.struct_flock - -// Filesystem Encryption - -type FscryptPolicy C.struct_fscrypt_policy - -type FscryptKey C.struct_fscrypt_key - -// Structure for Keyctl - -type KeyctlDHParams C.struct_keyctl_dh_params - -// Advice to Fadvise - -const ( - FADV_NORMAL = C.POSIX_FADV_NORMAL - FADV_RANDOM = C.POSIX_FADV_RANDOM - FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL - FADV_WILLNEED = C.POSIX_FADV_WILLNEED - FADV_DONTNEED = C.POSIX_FADV_DONTNEED - FADV_NOREUSE = C.POSIX_FADV_NOREUSE -) - -// Sockets - -type RawSockaddrInet4 C.struct_sockaddr_in - -type RawSockaddrInet6 C.struct_sockaddr_in6 - -type RawSockaddrUnix C.struct_my_sockaddr_un - -type RawSockaddrLinklayer C.struct_sockaddr_ll - -type RawSockaddrNetlink C.struct_sockaddr_nl - -type RawSockaddrHCI C.struct_sockaddr_hci - -type RawSockaddrL2 C.struct_sockaddr_l2 - -type RawSockaddrCAN C.struct_sockaddr_can - -type RawSockaddrALG C.struct_sockaddr_alg - -type RawSockaddrVM C.struct_sockaddr_vm - -type RawSockaddr C.struct_sockaddr - -type RawSockaddrAny C.struct_sockaddr_any - -type _Socklen C.socklen_t - -type Linger C.struct_linger - -type Iovec C.struct_iovec - -type IPMreq C.struct_ip_mreq - -type IPMreqn C.struct_ip_mreqn - -type IPv6Mreq C.struct_ipv6_mreq - -type PacketMreq C.struct_packet_mreq - -type Msghdr C.struct_msghdr - -type Cmsghdr C.struct_cmsghdr - -type Inet4Pktinfo C.struct_in_pktinfo - -type Inet6Pktinfo C.struct_in6_pktinfo - -type IPv6MTUInfo C.struct_ip6_mtuinfo - -type ICMPv6Filter C.struct_icmp6_filter - -type Ucred C.struct_ucred - -type TCPInfo C.struct_tcp_info - -const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll - SizeofSockaddrNetlink = C.sizeof_struct_sockaddr_nl - SizeofSockaddrHCI = C.sizeof_struct_sockaddr_hci - SizeofSockaddrL2 = C.sizeof_struct_sockaddr_l2 - SizeofSockaddrCAN = C.sizeof_struct_sockaddr_can - SizeofSockaddrALG = C.sizeof_struct_sockaddr_alg - SizeofSockaddrVM = C.sizeof_struct_sockaddr_vm - SizeofLinger = C.sizeof_struct_linger - SizeofIovec = C.sizeof_struct_iovec - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPMreqn = C.sizeof_struct_ip_mreqn - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofPacketMreq = C.sizeof_struct_packet_mreq - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo - SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter - SizeofUcred = C.sizeof_struct_ucred - SizeofTCPInfo = C.sizeof_struct_tcp_info -) - -// Netlink routing and interface messages - -const ( - IFA_UNSPEC = C.IFA_UNSPEC - IFA_ADDRESS = C.IFA_ADDRESS - IFA_LOCAL = C.IFA_LOCAL - IFA_LABEL = C.IFA_LABEL - IFA_BROADCAST = C.IFA_BROADCAST - IFA_ANYCAST = C.IFA_ANYCAST - IFA_CACHEINFO = C.IFA_CACHEINFO - IFA_MULTICAST = C.IFA_MULTICAST - IFLA_UNSPEC = C.IFLA_UNSPEC - IFLA_ADDRESS = C.IFLA_ADDRESS - IFLA_BROADCAST = C.IFLA_BROADCAST - IFLA_IFNAME = C.IFLA_IFNAME - IFLA_MTU = C.IFLA_MTU - IFLA_LINK = C.IFLA_LINK - IFLA_QDISC = C.IFLA_QDISC - IFLA_STATS = C.IFLA_STATS - IFLA_COST = C.IFLA_COST - IFLA_PRIORITY = C.IFLA_PRIORITY - IFLA_MASTER = C.IFLA_MASTER - IFLA_WIRELESS = C.IFLA_WIRELESS - IFLA_PROTINFO = C.IFLA_PROTINFO - IFLA_TXQLEN = C.IFLA_TXQLEN - IFLA_MAP = C.IFLA_MAP - IFLA_WEIGHT = C.IFLA_WEIGHT - IFLA_OPERSTATE = C.IFLA_OPERSTATE - IFLA_LINKMODE = C.IFLA_LINKMODE - IFLA_LINKINFO = C.IFLA_LINKINFO - IFLA_NET_NS_PID = C.IFLA_NET_NS_PID - IFLA_IFALIAS = C.IFLA_IFALIAS - IFLA_NUM_VF = C.IFLA_NUM_VF - IFLA_VFINFO_LIST = C.IFLA_VFINFO_LIST - IFLA_STATS64 = C.IFLA_STATS64 - IFLA_VF_PORTS = C.IFLA_VF_PORTS - IFLA_PORT_SELF = C.IFLA_PORT_SELF - IFLA_AF_SPEC = C.IFLA_AF_SPEC - IFLA_GROUP = C.IFLA_GROUP - IFLA_NET_NS_FD = C.IFLA_NET_NS_FD - IFLA_EXT_MASK = C.IFLA_EXT_MASK - IFLA_PROMISCUITY = C.IFLA_PROMISCUITY - IFLA_NUM_TX_QUEUES = C.IFLA_NUM_TX_QUEUES - IFLA_NUM_RX_QUEUES = C.IFLA_NUM_RX_QUEUES - IFLA_CARRIER = C.IFLA_CARRIER - IFLA_PHYS_PORT_ID = C.IFLA_PHYS_PORT_ID - IFLA_CARRIER_CHANGES = C.IFLA_CARRIER_CHANGES - IFLA_PHYS_SWITCH_ID = C.IFLA_PHYS_SWITCH_ID - IFLA_LINK_NETNSID = C.IFLA_LINK_NETNSID - IFLA_PHYS_PORT_NAME = C.IFLA_PHYS_PORT_NAME - IFLA_PROTO_DOWN = C.IFLA_PROTO_DOWN - IFLA_GSO_MAX_SEGS = C.IFLA_GSO_MAX_SEGS - IFLA_GSO_MAX_SIZE = C.IFLA_GSO_MAX_SIZE - IFLA_PAD = C.IFLA_PAD - IFLA_XDP = C.IFLA_XDP - IFLA_EVENT = C.IFLA_EVENT - IFLA_NEW_NETNSID = C.IFLA_NEW_NETNSID - IFLA_IF_NETNSID = C.IFLA_IF_NETNSID - IFLA_MAX = C.IFLA_MAX - RT_SCOPE_UNIVERSE = C.RT_SCOPE_UNIVERSE - RT_SCOPE_SITE = C.RT_SCOPE_SITE - RT_SCOPE_LINK = C.RT_SCOPE_LINK - RT_SCOPE_HOST = C.RT_SCOPE_HOST - RT_SCOPE_NOWHERE = C.RT_SCOPE_NOWHERE - RT_TABLE_UNSPEC = C.RT_TABLE_UNSPEC - RT_TABLE_COMPAT = C.RT_TABLE_COMPAT - RT_TABLE_DEFAULT = C.RT_TABLE_DEFAULT - RT_TABLE_MAIN = C.RT_TABLE_MAIN - RT_TABLE_LOCAL = C.RT_TABLE_LOCAL - RT_TABLE_MAX = C.RT_TABLE_MAX - RTA_UNSPEC = C.RTA_UNSPEC - RTA_DST = C.RTA_DST - RTA_SRC = C.RTA_SRC - RTA_IIF = C.RTA_IIF - RTA_OIF = C.RTA_OIF - RTA_GATEWAY = C.RTA_GATEWAY - RTA_PRIORITY = C.RTA_PRIORITY - RTA_PREFSRC = C.RTA_PREFSRC - RTA_METRICS = C.RTA_METRICS - RTA_MULTIPATH = C.RTA_MULTIPATH - RTA_FLOW = C.RTA_FLOW - RTA_CACHEINFO = C.RTA_CACHEINFO - RTA_TABLE = C.RTA_TABLE - RTN_UNSPEC = C.RTN_UNSPEC - RTN_UNICAST = C.RTN_UNICAST - RTN_LOCAL = C.RTN_LOCAL - RTN_BROADCAST = C.RTN_BROADCAST - RTN_ANYCAST = C.RTN_ANYCAST - RTN_MULTICAST = C.RTN_MULTICAST - RTN_BLACKHOLE = C.RTN_BLACKHOLE - RTN_UNREACHABLE = C.RTN_UNREACHABLE - RTN_PROHIBIT = C.RTN_PROHIBIT - RTN_THROW = C.RTN_THROW - RTN_NAT = C.RTN_NAT - RTN_XRESOLVE = C.RTN_XRESOLVE - RTNLGRP_NONE = C.RTNLGRP_NONE - RTNLGRP_LINK = C.RTNLGRP_LINK - RTNLGRP_NOTIFY = C.RTNLGRP_NOTIFY - RTNLGRP_NEIGH = C.RTNLGRP_NEIGH - RTNLGRP_TC = C.RTNLGRP_TC - RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR - RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE - RTNLGRP_IPV4_ROUTE = C.RTNLGRP_IPV4_ROUTE - RTNLGRP_IPV4_RULE = C.RTNLGRP_IPV4_RULE - RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR - RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE - RTNLGRP_IPV6_ROUTE = C.RTNLGRP_IPV6_ROUTE - RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO - RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX - RTNLGRP_IPV6_RULE = C.RTNLGRP_IPV6_RULE - RTNLGRP_ND_USEROPT = C.RTNLGRP_ND_USEROPT - SizeofNlMsghdr = C.sizeof_struct_nlmsghdr - SizeofNlMsgerr = C.sizeof_struct_nlmsgerr - SizeofRtGenmsg = C.sizeof_struct_rtgenmsg - SizeofNlAttr = C.sizeof_struct_nlattr - SizeofRtAttr = C.sizeof_struct_rtattr - SizeofIfInfomsg = C.sizeof_struct_ifinfomsg - SizeofIfAddrmsg = C.sizeof_struct_ifaddrmsg - SizeofRtMsg = C.sizeof_struct_rtmsg - SizeofRtNexthop = C.sizeof_struct_rtnexthop -) - -type NlMsghdr C.struct_nlmsghdr - -type NlMsgerr C.struct_nlmsgerr - -type RtGenmsg C.struct_rtgenmsg - -type NlAttr C.struct_nlattr - -type RtAttr C.struct_rtattr - -type IfInfomsg C.struct_ifinfomsg - -type IfAddrmsg C.struct_ifaddrmsg - -type RtMsg C.struct_rtmsg - -type RtNexthop C.struct_rtnexthop - -// Linux socket filter - -const ( - SizeofSockFilter = C.sizeof_struct_sock_filter - SizeofSockFprog = C.sizeof_struct_sock_fprog -) - -type SockFilter C.struct_sock_filter - -type SockFprog C.struct_sock_fprog - -// Inotify - -type InotifyEvent C.struct_inotify_event - -const SizeofInotifyEvent = C.sizeof_struct_inotify_event - -// Ptrace - -// Register structures -type PtraceRegs C.PtraceRegs - -// Structures contained in PtraceRegs on s390x (exported by mkpost.go) -type PtracePsw C.ptracePsw - -type PtraceFpregs C.ptraceFpregs - -type PtracePer C.ptracePer - -// Misc - -type FdSet C.fd_set - -type Sysinfo_t C.struct_sysinfo - -type Utsname C.struct_utsname - -type Ustat_t C.struct_ustat - -type EpollEvent C.struct_my_epoll_event - -const ( - AT_EMPTY_PATH = C.AT_EMPTY_PATH - AT_FDCWD = C.AT_FDCWD - AT_NO_AUTOMOUNT = C.AT_NO_AUTOMOUNT - AT_REMOVEDIR = C.AT_REMOVEDIR - - AT_STATX_SYNC_AS_STAT = C.AT_STATX_SYNC_AS_STAT - AT_STATX_FORCE_SYNC = C.AT_STATX_FORCE_SYNC - AT_STATX_DONT_SYNC = C.AT_STATX_DONT_SYNC - - AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW - AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW -) - -type PollFd C.struct_pollfd - -const ( - POLLIN = C.POLLIN - POLLPRI = C.POLLPRI - POLLOUT = C.POLLOUT - POLLRDHUP = C.POLLRDHUP - POLLERR = C.POLLERR - POLLHUP = C.POLLHUP - POLLNVAL = C.POLLNVAL -) - -type Sigset_t C.sigset_t - -const RNDGETENTCNT = C.RNDGETENTCNT - -const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP - -// Terminal handling - -type Termios C.termios_t - -type Winsize C.struct_winsize - -// Taskstats and cgroup stats. - -type Taskstats C.struct_taskstats - -const ( - TASKSTATS_CMD_UNSPEC = C.TASKSTATS_CMD_UNSPEC - TASKSTATS_CMD_GET = C.TASKSTATS_CMD_GET - TASKSTATS_CMD_NEW = C.TASKSTATS_CMD_NEW - TASKSTATS_TYPE_UNSPEC = C.TASKSTATS_TYPE_UNSPEC - TASKSTATS_TYPE_PID = C.TASKSTATS_TYPE_PID - TASKSTATS_TYPE_TGID = C.TASKSTATS_TYPE_TGID - TASKSTATS_TYPE_STATS = C.TASKSTATS_TYPE_STATS - TASKSTATS_TYPE_AGGR_PID = C.TASKSTATS_TYPE_AGGR_PID - TASKSTATS_TYPE_AGGR_TGID = C.TASKSTATS_TYPE_AGGR_TGID - TASKSTATS_TYPE_NULL = C.TASKSTATS_TYPE_NULL - TASKSTATS_CMD_ATTR_UNSPEC = C.TASKSTATS_CMD_ATTR_UNSPEC - TASKSTATS_CMD_ATTR_PID = C.TASKSTATS_CMD_ATTR_PID - TASKSTATS_CMD_ATTR_TGID = C.TASKSTATS_CMD_ATTR_TGID - TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_REGISTER_CPUMASK - TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK -) - -type CGroupStats C.struct_cgroupstats - -const ( - CGROUPSTATS_CMD_UNSPEC = C.__TASKSTATS_CMD_MAX - CGROUPSTATS_CMD_GET = C.CGROUPSTATS_CMD_GET - CGROUPSTATS_CMD_NEW = C.CGROUPSTATS_CMD_NEW - CGROUPSTATS_TYPE_UNSPEC = C.CGROUPSTATS_TYPE_UNSPEC - CGROUPSTATS_TYPE_CGROUP_STATS = C.CGROUPSTATS_TYPE_CGROUP_STATS - CGROUPSTATS_CMD_ATTR_UNSPEC = C.CGROUPSTATS_CMD_ATTR_UNSPEC - CGROUPSTATS_CMD_ATTR_FD = C.CGROUPSTATS_CMD_ATTR_FD -) - -// Generic netlink - -type Genlmsghdr C.struct_genlmsghdr - -const ( - CTRL_CMD_UNSPEC = C.CTRL_CMD_UNSPEC - CTRL_CMD_NEWFAMILY = C.CTRL_CMD_NEWFAMILY - CTRL_CMD_DELFAMILY = C.CTRL_CMD_DELFAMILY - CTRL_CMD_GETFAMILY = C.CTRL_CMD_GETFAMILY - CTRL_CMD_NEWOPS = C.CTRL_CMD_NEWOPS - CTRL_CMD_DELOPS = C.CTRL_CMD_DELOPS - CTRL_CMD_GETOPS = C.CTRL_CMD_GETOPS - CTRL_CMD_NEWMCAST_GRP = C.CTRL_CMD_NEWMCAST_GRP - CTRL_CMD_DELMCAST_GRP = C.CTRL_CMD_DELMCAST_GRP - CTRL_CMD_GETMCAST_GRP = C.CTRL_CMD_GETMCAST_GRP - CTRL_ATTR_UNSPEC = C.CTRL_ATTR_UNSPEC - CTRL_ATTR_FAMILY_ID = C.CTRL_ATTR_FAMILY_ID - CTRL_ATTR_FAMILY_NAME = C.CTRL_ATTR_FAMILY_NAME - CTRL_ATTR_VERSION = C.CTRL_ATTR_VERSION - CTRL_ATTR_HDRSIZE = C.CTRL_ATTR_HDRSIZE - CTRL_ATTR_MAXATTR = C.CTRL_ATTR_MAXATTR - CTRL_ATTR_OPS = C.CTRL_ATTR_OPS - CTRL_ATTR_MCAST_GROUPS = C.CTRL_ATTR_MCAST_GROUPS - CTRL_ATTR_OP_UNSPEC = C.CTRL_ATTR_OP_UNSPEC - CTRL_ATTR_OP_ID = C.CTRL_ATTR_OP_ID - CTRL_ATTR_OP_FLAGS = C.CTRL_ATTR_OP_FLAGS - CTRL_ATTR_MCAST_GRP_UNSPEC = C.CTRL_ATTR_MCAST_GRP_UNSPEC - CTRL_ATTR_MCAST_GRP_NAME = C.CTRL_ATTR_MCAST_GRP_NAME - CTRL_ATTR_MCAST_GRP_ID = C.CTRL_ATTR_MCAST_GRP_ID -) - -// CPU affinity - -type cpuMask C.__cpu_mask - -const ( - _CPU_SETSIZE = C.__CPU_SETSIZE - _NCPUBITS = C.__NCPUBITS -) - -// Bluetooth - -const ( - BDADDR_BREDR = C.BDADDR_BREDR - BDADDR_LE_PUBLIC = C.BDADDR_LE_PUBLIC - BDADDR_LE_RANDOM = C.BDADDR_LE_RANDOM -) diff --git a/vendor/golang.org/x/sys/unix/mmap_unix_test.go b/vendor/golang.org/x/sys/unix/mmap_unix_test.go deleted file mode 100644 index 3258ca32..00000000 --- a/vendor/golang.org/x/sys/unix/mmap_unix_test.go +++ /dev/null @@ -1,35 +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. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "testing" - - "golang.org/x/sys/unix" -) - -func TestMmap(t *testing.T) { - b, err := unix.Mmap(-1, 0, unix.Getpagesize(), unix.PROT_NONE, unix.MAP_ANON|unix.MAP_PRIVATE) - if err != nil { - t.Fatalf("Mmap: %v", err) - } - if err := unix.Mprotect(b, unix.PROT_READ|unix.PROT_WRITE); err != nil { - t.Fatalf("Mprotect: %v", err) - } - - b[0] = 42 - - if err := unix.Msync(b, unix.MS_SYNC); err != nil { - t.Fatalf("Msync: %v", err) - } - if err := unix.Madvise(b, unix.MADV_DONTNEED); err != nil { - t.Fatalf("Madvise: %v", err) - } - if err := unix.Munmap(b); err != nil { - t.Fatalf("Munmap: %v", err) - } -} diff --git a/vendor/golang.org/x/sys/unix/openbsd_test.go b/vendor/golang.org/x/sys/unix/openbsd_test.go deleted file mode 100644 index 734d7658..00000000 --- a/vendor/golang.org/x/sys/unix/openbsd_test.go +++ /dev/null @@ -1,113 +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. - -// +build openbsd - -// This, on the face of it, bizarre testing mechanism is necessary because -// the only reliable way to gauge whether or not a pledge(2) call has succeeded -// is that the program has been killed as a result of breaking its pledge. - -package unix_test - -import ( - "flag" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "testing" - - "golang.org/x/sys/unix" -) - -type testProc struct { - fn func() // should always exit instead of returning - cleanup func() error // for instance, delete coredumps from testing pledge - success bool // whether zero-exit means success or failure -} - -var ( - testProcs = map[string]testProc{} - procName = "" -) - -const ( - optName = "sys-unix-internal-procname" -) - -func init() { - flag.StringVar(&procName, optName, "", "internal use only") -} - -// testCmd generates a proper command that, when executed, runs the test -// corresponding to the given key. -func testCmd(procName string) (*exec.Cmd, error) { - exe, err := filepath.Abs(os.Args[0]) - if err != nil { - return nil, err - } - cmd := exec.Command(exe, "-"+optName+"="+procName) - cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr - return cmd, nil -} - -// ExitsCorrectly is a comprehensive, one-line-of-use wrapper for testing -// a testProc with a key. -func ExitsCorrectly(procName string, t *testing.T) { - s := testProcs[procName] - c, err := testCmd(procName) - defer func() { - if s.cleanup() != nil { - t.Fatalf("Failed to run cleanup for %s", procName) - } - }() - if err != nil { - t.Fatalf("Failed to construct command for %s", procName) - } - if (c.Run() == nil) != s.success { - result := "succeed" - if !s.success { - result = "fail" - } - t.Fatalf("Process did not %s when it was supposed to", result) - } -} - -func TestMain(m *testing.M) { - flag.Parse() - if procName != "" { - testProcs[procName].fn() - } - os.Exit(m.Run()) -} - -// For example, add a test for pledge. -func init() { - testProcs["pledge"] = testProc{ - func() { - fmt.Println(unix.Pledge("", nil)) - os.Exit(0) - }, - func() error { - files, err := ioutil.ReadDir(".") - if err != nil { - return err - } - for _, file := range files { - if filepath.Ext(file.Name()) == ".core" { - if err := os.Remove(file.Name()); err != nil { - return err - } - } - } - return nil - }, - false, - } -} - -func TestPledge(t *testing.T) { - ExitsCorrectly("pledge", t) -} diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd_test.go b/vendor/golang.org/x/sys/unix/syscall_bsd_test.go deleted file mode 100644 index 6c4e2aca..00000000 --- a/vendor/golang.org/x/sys/unix/syscall_bsd_test.go +++ /dev/null @@ -1,93 +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. - -// +build darwin dragonfly freebsd openbsd - -package unix_test - -import ( - "os/exec" - "runtime" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -const MNT_WAIT = 1 -const MNT_NOWAIT = 2 - -func TestGetfsstat(t *testing.T) { - const flags = MNT_NOWAIT // see golang.org/issue/16937 - n, err := unix.Getfsstat(nil, flags) - if err != nil { - t.Fatal(err) - } - - data := make([]unix.Statfs_t, n) - n2, err := unix.Getfsstat(data, flags) - if err != nil { - t.Fatal(err) - } - if n != n2 { - t.Errorf("Getfsstat(nil) = %d, but subsequent Getfsstat(slice) = %d", n, n2) - } - for i, stat := range data { - if stat == (unix.Statfs_t{}) { - t.Errorf("index %v is an empty Statfs_t struct", i) - } - } - if t.Failed() { - for i, stat := range data[:n2] { - t.Logf("data[%v] = %+v", i, stat) - } - mount, err := exec.Command("mount").CombinedOutput() - if err != nil { - t.Logf("mount: %v\n%s", err, mount) - } else { - t.Logf("mount: %s", mount) - } - } -} - -func TestSelect(t *testing.T) { - err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) - if err != nil { - t.Fatalf("Select: %v", err) - } - - dur := 250 * time.Millisecond - tv := unix.NsecToTimeval(int64(dur)) - start := time.Now() - err = unix.Select(0, nil, nil, nil, &tv) - took := time.Since(start) - if err != nil { - t.Fatalf("Select: %v", err) - } - - // On some BSDs the actual timeout might also be slightly less than the requested. - // Add an acceptable margin to avoid flaky tests. - if took < dur*2/3 { - t.Errorf("Select: timeout should have been at least %v, got %v", dur, took) - } -} - -func TestSysctlRaw(t *testing.T) { - if runtime.GOOS == "openbsd" { - t.Skip("kern.proc.pid does not exist on OpenBSD") - } - - _, err := unix.SysctlRaw("kern.proc.pid", unix.Getpid()) - if err != nil { - t.Fatal(err) - } -} - -func TestSysctlUint32(t *testing.T) { - maxproc, err := unix.SysctlUint32("kern.maxproc") - if err != nil { - t.Fatal(err) - } - t.Logf("kern.maxproc: %v", maxproc) -} diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go deleted file mode 100644 index 654439e0..00000000 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_test.go +++ /dev/null @@ -1,297 +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. - -// +build freebsd - -package unix_test - -import ( - "flag" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path" - "path/filepath" - "runtime" - "testing" - - "golang.org/x/sys/unix" -) - -func TestSysctlUint64(t *testing.T) { - _, err := unix.SysctlUint64("vm.swap_total") - if err != nil { - t.Fatal(err) - } -} - -// FIXME: Infrastructure for launching tests in subprocesses stolen from openbsd_test.go - refactor? -// testCmd generates a proper command that, when executed, runs the test -// corresponding to the given key. - -type testProc struct { - fn func() // should always exit instead of returning - arg func(t *testing.T) string // generate argument for test - cleanup func(arg string) error // for instance, delete coredumps from testing pledge - success bool // whether zero-exit means success or failure -} - -var ( - testProcs = map[string]testProc{} - procName = "" - procArg = "" -) - -const ( - optName = "sys-unix-internal-procname" - optArg = "sys-unix-internal-arg" -) - -func init() { - flag.StringVar(&procName, optName, "", "internal use only") - flag.StringVar(&procArg, optArg, "", "internal use only") - -} - -func testCmd(procName string, procArg string) (*exec.Cmd, error) { - exe, err := filepath.Abs(os.Args[0]) - if err != nil { - return nil, err - } - cmd := exec.Command(exe, "-"+optName+"="+procName, "-"+optArg+"="+procArg) - cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr - return cmd, nil -} - -// ExitsCorrectly is a comprehensive, one-line-of-use wrapper for testing -// a testProc with a key. -func ExitsCorrectly(t *testing.T, procName string) { - s := testProcs[procName] - arg := "-" - if s.arg != nil { - arg = s.arg(t) - } - c, err := testCmd(procName, arg) - defer func(arg string) { - if err := s.cleanup(arg); err != nil { - t.Fatalf("Failed to run cleanup for %s %s %#v", procName, err, err) - } - }(arg) - if err != nil { - t.Fatalf("Failed to construct command for %s", procName) - } - if (c.Run() == nil) != s.success { - result := "succeed" - if !s.success { - result = "fail" - } - t.Fatalf("Process did not %s when it was supposed to", result) - } -} - -func TestMain(m *testing.M) { - flag.Parse() - if procName != "" { - t := testProcs[procName] - t.fn() - os.Stderr.WriteString("test function did not exit\n") - if t.success { - os.Exit(1) - } else { - os.Exit(0) - } - } - os.Exit(m.Run()) -} - -// end of infrastructure - -const testfile = "gocapmodetest" -const testfile2 = testfile + "2" - -func CapEnterTest() { - _, err := os.OpenFile(path.Join(procArg, testfile), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err != nil { - panic(fmt.Sprintf("OpenFile: %s", err)) - } - - err = unix.CapEnter() - if err != nil { - panic(fmt.Sprintf("CapEnter: %s", err)) - } - - _, err = os.OpenFile(path.Join(procArg, testfile2), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err == nil { - panic("OpenFile works!") - } - if err.(*os.PathError).Err != unix.ECAPMODE { - panic(fmt.Sprintf("OpenFile failed wrong: %s %#v", err, err)) - } - os.Exit(0) -} - -func makeTempDir(t *testing.T) string { - d, err := ioutil.TempDir("", "go_openat_test") - if err != nil { - t.Fatalf("TempDir failed: %s", err) - } - return d -} - -func removeTempDir(arg string) error { - err := os.RemoveAll(arg) - if err != nil && err.(*os.PathError).Err == unix.ENOENT { - return nil - } - return err -} - -func init() { - testProcs["cap_enter"] = testProc{ - CapEnterTest, - makeTempDir, - removeTempDir, - true, - } -} - -func TestCapEnter(t *testing.T) { - if runtime.GOARCH != "amd64" { - t.Skipf("skipping test on %s", runtime.GOARCH) - } - ExitsCorrectly(t, "cap_enter") -} - -func OpenatTest() { - f, err := os.Open(procArg) - if err != nil { - panic(err) - } - - err = unix.CapEnter() - if err != nil { - panic(fmt.Sprintf("CapEnter: %s", err)) - } - - fxx, err := unix.Openat(int(f.Fd()), "xx", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err != nil { - panic(err) - } - unix.Close(fxx) - - // The right to open BASE/xx is not ambient - _, err = os.OpenFile(procArg+"/xx", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err == nil { - panic("OpenFile succeeded") - } - if err.(*os.PathError).Err != unix.ECAPMODE { - panic(fmt.Sprintf("OpenFile failed wrong: %s %#v", err, err)) - } - - // Can't make a new directory either - err = os.Mkdir(procArg+"2", 0777) - if err == nil { - panic("MKdir succeeded") - } - if err.(*os.PathError).Err != unix.ECAPMODE { - panic(fmt.Sprintf("Mkdir failed wrong: %s %#v", err, err)) - } - - // Remove all caps except read and lookup. - r, err := unix.CapRightsInit([]uint64{unix.CAP_READ, unix.CAP_LOOKUP}) - if err != nil { - panic(fmt.Sprintf("CapRightsInit failed: %s %#v", err, err)) - } - err = unix.CapRightsLimit(f.Fd(), r) - if err != nil { - panic(fmt.Sprintf("CapRightsLimit failed: %s %#v", err, err)) - } - - // Check we can get the rights back again - r, err = unix.CapRightsGet(f.Fd()) - if err != nil { - panic(fmt.Sprintf("CapRightsGet failed: %s %#v", err, err)) - } - b, err := unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_LOOKUP}) - if err != nil { - panic(fmt.Sprintf("CapRightsIsSet failed: %s %#v", err, err)) - } - if !b { - panic(fmt.Sprintf("Unexpected rights")) - } - b, err = unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_LOOKUP, unix.CAP_WRITE}) - if err != nil { - panic(fmt.Sprintf("CapRightsIsSet failed: %s %#v", err, err)) - } - if b { - panic(fmt.Sprintf("Unexpected rights (2)")) - } - - // Can no longer create a file - _, err = unix.Openat(int(f.Fd()), "xx2", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err == nil { - panic("Openat succeeded") - } - if err != unix.ENOTCAPABLE { - panic(fmt.Sprintf("OpenFileAt failed wrong: %s %#v", err, err)) - } - - // But can read an existing one - _, err = unix.Openat(int(f.Fd()), "xx", os.O_RDONLY, 0666) - if err != nil { - panic(fmt.Sprintf("Openat failed: %s %#v", err, err)) - } - - os.Exit(0) -} - -func init() { - testProcs["openat"] = testProc{ - OpenatTest, - makeTempDir, - removeTempDir, - true, - } -} - -func TestOpenat(t *testing.T) { - if runtime.GOARCH != "amd64" { - t.Skipf("skipping test on %s", runtime.GOARCH) - } - ExitsCorrectly(t, "openat") -} - -func TestCapRightsSetAndClear(t *testing.T) { - r, err := unix.CapRightsInit([]uint64{unix.CAP_READ, unix.CAP_WRITE, unix.CAP_PDWAIT}) - if err != nil { - t.Fatalf("CapRightsInit failed: %s", err) - } - - err = unix.CapRightsSet(r, []uint64{unix.CAP_EVENT, unix.CAP_LISTEN}) - if err != nil { - t.Fatalf("CapRightsSet failed: %s", err) - } - - b, err := unix.CapRightsIsSet(r, []uint64{unix.CAP_READ, unix.CAP_WRITE, unix.CAP_PDWAIT, unix.CAP_EVENT, unix.CAP_LISTEN}) - if err != nil { - t.Fatalf("CapRightsIsSet failed: %s", err) - } - if !b { - t.Fatalf("Wrong rights set") - } - - err = unix.CapRightsClear(r, []uint64{unix.CAP_READ, unix.CAP_PDWAIT}) - if err != nil { - t.Fatalf("CapRightsClear failed: %s", err) - } - - b, err = unix.CapRightsIsSet(r, []uint64{unix.CAP_WRITE, unix.CAP_EVENT, unix.CAP_LISTEN}) - if err != nil { - t.Fatalf("CapRightsIsSet failed: %s", err) - } - if !b { - t.Fatalf("Wrong rights set") - } -} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index 9a8e6e41..c464783d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -23,8 +23,11 @@ package unix //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - ts := Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} - return Pselect(nfd, r, w, e, &ts, nil) + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) } //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index 46aa4ff9..15a69cbd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -26,8 +26,11 @@ package unix //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - ts := Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} - return Pselect(nfd, r, w, e, &ts, nil) + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) } //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_test.go b/vendor/golang.org/x/sys/unix/syscall_linux_test.go deleted file mode 100644 index 78d28792..00000000 --- a/vendor/golang.org/x/sys/unix/syscall_linux_test.go +++ /dev/null @@ -1,439 +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. - -// +build linux - -package unix_test - -import ( - "io/ioutil" - "os" - "runtime" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -func TestFchmodat(t *testing.T) { - defer chtmpdir(t)() - - touch(t, "file1") - err := os.Symlink("file1", "symlink1") - if err != nil { - t.Fatal(err) - } - - err = unix.Fchmodat(unix.AT_FDCWD, "symlink1", 0444, 0) - if err != nil { - t.Fatalf("Fchmodat: unexpected error: %v", err) - } - - fi, err := os.Stat("file1") - if err != nil { - t.Fatal(err) - } - - if fi.Mode() != 0444 { - t.Errorf("Fchmodat: failed to change mode: expected %v, got %v", 0444, fi.Mode()) - } - - err = unix.Fchmodat(unix.AT_FDCWD, "symlink1", 0444, unix.AT_SYMLINK_NOFOLLOW) - if err != unix.EOPNOTSUPP { - t.Fatalf("Fchmodat: unexpected error: %v, expected EOPNOTSUPP", err) - } -} - -func TestIoctlGetInt(t *testing.T) { - f, err := os.Open("/dev/random") - if err != nil { - t.Fatalf("failed to open device: %v", err) - } - defer f.Close() - - v, err := unix.IoctlGetInt(int(f.Fd()), unix.RNDGETENTCNT) - if err != nil { - t.Fatalf("failed to perform ioctl: %v", err) - } - - t.Logf("%d bits of entropy available", v) -} - -func TestPpoll(t *testing.T) { - f, cleanup := mktmpfifo(t) - defer cleanup() - - const timeout = 100 * time.Millisecond - - ok := make(chan bool, 1) - go func() { - select { - case <-time.After(10 * timeout): - t.Errorf("Ppoll: failed to timeout after %d", 10*timeout) - case <-ok: - } - }() - - fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}} - timeoutTs := unix.NsecToTimespec(int64(timeout)) - n, err := unix.Ppoll(fds, &timeoutTs, nil) - ok <- true - if err != nil { - t.Errorf("Ppoll: unexpected error: %v", err) - return - } - if n != 0 { - t.Errorf("Ppoll: wrong number of events: got %v, expected %v", n, 0) - return - } -} - -func TestTime(t *testing.T) { - var ut unix.Time_t - ut2, err := unix.Time(&ut) - if err != nil { - t.Fatalf("Time: %v", err) - } - if ut != ut2 { - t.Errorf("Time: return value %v should be equal to argument %v", ut2, ut) - } - - var now time.Time - - for i := 0; i < 10; i++ { - ut, err = unix.Time(nil) - if err != nil { - t.Fatalf("Time: %v", err) - } - - now = time.Now() - - if int64(ut) == now.Unix() { - return - } - } - - t.Errorf("Time: return value %v should be nearly equal to time.Now().Unix() %v", ut, now.Unix()) -} - -func TestUtime(t *testing.T) { - defer chtmpdir(t)() - - touch(t, "file1") - - buf := &unix.Utimbuf{ - Modtime: 12345, - } - - err := unix.Utime("file1", buf) - if err != nil { - t.Fatalf("Utime: %v", err) - } - - fi, err := os.Stat("file1") - if err != nil { - t.Fatal(err) - } - - if fi.ModTime().Unix() != 12345 { - t.Errorf("Utime: failed to change modtime: expected %v, got %v", 12345, fi.ModTime().Unix()) - } -} - -func TestUtimesNanoAt(t *testing.T) { - defer chtmpdir(t)() - - symlink := "symlink1" - os.Remove(symlink) - err := os.Symlink("nonexisting", symlink) - if err != nil { - t.Fatal(err) - } - - ts := []unix.Timespec{ - {Sec: 1111, Nsec: 2222}, - {Sec: 3333, Nsec: 4444}, - } - err = unix.UtimesNanoAt(unix.AT_FDCWD, symlink, ts, unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - t.Fatalf("UtimesNanoAt: %v", err) - } - - var st unix.Stat_t - err = unix.Lstat(symlink, &st) - if err != nil { - t.Fatalf("Lstat: %v", err) - } - if st.Atim != ts[0] { - t.Errorf("UtimesNanoAt: wrong atime: %v", st.Atim) - } - if st.Mtim != ts[1] { - t.Errorf("UtimesNanoAt: wrong mtime: %v", st.Mtim) - } -} - -func TestGetrlimit(t *testing.T) { - var rlim unix.Rlimit - err := unix.Getrlimit(unix.RLIMIT_AS, &rlim) - if err != nil { - t.Fatalf("Getrlimit: %v", err) - } -} - -func TestSelect(t *testing.T) { - _, err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) - if err != nil { - t.Fatalf("Select: %v", err) - } - - dur := 150 * time.Millisecond - tv := unix.NsecToTimeval(int64(dur)) - start := time.Now() - _, err = unix.Select(0, nil, nil, nil, &tv) - took := time.Since(start) - if err != nil { - t.Fatalf("Select: %v", err) - } - - if took < dur { - t.Errorf("Select: timeout should have been at least %v, got %v", dur, took) - } -} - -func TestPselect(t *testing.T) { - _, err := unix.Pselect(0, nil, nil, nil, &unix.Timespec{Sec: 0, Nsec: 0}, nil) - if err != nil { - t.Fatalf("Pselect: %v", err) - } - - dur := 2500 * time.Microsecond - ts := unix.NsecToTimespec(int64(dur)) - start := time.Now() - _, err = unix.Pselect(0, nil, nil, nil, &ts, nil) - took := time.Since(start) - if err != nil { - t.Fatalf("Pselect: %v", err) - } - - if took < dur { - t.Errorf("Pselect: timeout should have been at least %v, got %v", dur, took) - } -} - -func TestFstatat(t *testing.T) { - defer chtmpdir(t)() - - touch(t, "file1") - - var st1 unix.Stat_t - err := unix.Stat("file1", &st1) - if err != nil { - t.Fatalf("Stat: %v", err) - } - - var st2 unix.Stat_t - err = unix.Fstatat(unix.AT_FDCWD, "file1", &st2, 0) - if err != nil { - t.Fatalf("Fstatat: %v", err) - } - - if st1 != st2 { - t.Errorf("Fstatat: returned stat does not match Stat") - } - - err = os.Symlink("file1", "symlink1") - if err != nil { - t.Fatal(err) - } - - err = unix.Lstat("symlink1", &st1) - if err != nil { - t.Fatalf("Lstat: %v", err) - } - - err = unix.Fstatat(unix.AT_FDCWD, "symlink1", &st2, unix.AT_SYMLINK_NOFOLLOW) - if err != nil { - t.Fatalf("Fstatat: %v", err) - } - - if st1 != st2 { - t.Errorf("Fstatat: returned stat does not match Lstat") - } -} - -func TestSchedSetaffinity(t *testing.T) { - runtime.LockOSThread() - defer runtime.UnlockOSThread() - - var oldMask unix.CPUSet - err := unix.SchedGetaffinity(0, &oldMask) - if err != nil { - t.Fatalf("SchedGetaffinity: %v", err) - } - - var newMask unix.CPUSet - newMask.Zero() - if newMask.Count() != 0 { - t.Errorf("CpuZero: didn't zero CPU set: %v", newMask) - } - cpu := 1 - newMask.Set(cpu) - if newMask.Count() != 1 || !newMask.IsSet(cpu) { - t.Errorf("CpuSet: didn't set CPU %d in set: %v", cpu, newMask) - } - cpu = 5 - newMask.Set(cpu) - if newMask.Count() != 2 || !newMask.IsSet(cpu) { - t.Errorf("CpuSet: didn't set CPU %d in set: %v", cpu, newMask) - } - newMask.Clear(cpu) - if newMask.Count() != 1 || newMask.IsSet(cpu) { - t.Errorf("CpuClr: didn't clear CPU %d in set: %v", cpu, newMask) - } - - err = unix.SchedSetaffinity(0, &newMask) - if err != nil { - t.Fatalf("SchedSetaffinity: %v", err) - } - - var gotMask unix.CPUSet - err = unix.SchedGetaffinity(0, &gotMask) - if err != nil { - t.Fatalf("SchedGetaffinity: %v", err) - } - - if gotMask != newMask { - t.Errorf("SchedSetaffinity: returned affinity mask does not match set affinity mask") - } - - // Restore old mask so it doesn't affect successive tests - err = unix.SchedSetaffinity(0, &oldMask) - if err != nil { - t.Fatalf("SchedSetaffinity: %v", err) - } -} - -func TestStatx(t *testing.T) { - var stx unix.Statx_t - err := unix.Statx(unix.AT_FDCWD, ".", 0, 0, &stx) - if err == unix.ENOSYS { - t.Skip("statx syscall is not available, skipping test") - } else if err != nil { - t.Fatalf("Statx: %v", err) - } - - defer chtmpdir(t)() - touch(t, "file1") - - var st unix.Stat_t - err = unix.Stat("file1", &st) - if err != nil { - t.Fatalf("Stat: %v", err) - } - - flags := unix.AT_STATX_SYNC_AS_STAT - err = unix.Statx(unix.AT_FDCWD, "file1", flags, unix.STATX_ALL, &stx) - if err != nil { - t.Fatalf("Statx: %v", err) - } - - if uint32(stx.Mode) != st.Mode { - t.Errorf("Statx: returned stat mode does not match Stat") - } - - atime := unix.StatxTimestamp{Sec: int64(st.Atim.Sec), Nsec: uint32(st.Atim.Nsec)} - ctime := unix.StatxTimestamp{Sec: int64(st.Ctim.Sec), Nsec: uint32(st.Ctim.Nsec)} - mtime := unix.StatxTimestamp{Sec: int64(st.Mtim.Sec), Nsec: uint32(st.Mtim.Nsec)} - - if stx.Atime != atime { - t.Errorf("Statx: returned stat atime does not match Stat") - } - if stx.Ctime != ctime { - t.Errorf("Statx: returned stat ctime does not match Stat") - } - if stx.Mtime != mtime { - t.Errorf("Statx: returned stat mtime does not match Stat") - } - - err = os.Symlink("file1", "symlink1") - if err != nil { - t.Fatal(err) - } - - err = unix.Lstat("symlink1", &st) - if err != nil { - t.Fatalf("Lstat: %v", err) - } - - err = unix.Statx(unix.AT_FDCWD, "symlink1", flags, unix.STATX_BASIC_STATS, &stx) - if err != nil { - t.Fatalf("Statx: %v", err) - } - - // follow symlink, expect a regulat file - if stx.Mode&unix.S_IFREG == 0 { - t.Errorf("Statx: didn't follow symlink") - } - - err = unix.Statx(unix.AT_FDCWD, "symlink1", flags|unix.AT_SYMLINK_NOFOLLOW, unix.STATX_ALL, &stx) - if err != nil { - t.Fatalf("Statx: %v", err) - } - - // follow symlink, expect a symlink - if stx.Mode&unix.S_IFLNK == 0 { - t.Errorf("Statx: unexpectedly followed symlink") - } - if uint32(stx.Mode) != st.Mode { - t.Errorf("Statx: returned stat mode does not match Lstat") - } - - atime = unix.StatxTimestamp{Sec: int64(st.Atim.Sec), Nsec: uint32(st.Atim.Nsec)} - ctime = unix.StatxTimestamp{Sec: int64(st.Ctim.Sec), Nsec: uint32(st.Ctim.Nsec)} - mtime = unix.StatxTimestamp{Sec: int64(st.Mtim.Sec), Nsec: uint32(st.Mtim.Nsec)} - - if stx.Atime != atime { - t.Errorf("Statx: returned stat atime does not match Lstat") - } - if stx.Ctime != ctime { - t.Errorf("Statx: returned stat ctime does not match Lstat") - } - if stx.Mtime != mtime { - t.Errorf("Statx: returned stat mtime does not match Lstat") - } -} - -// utilities taken from os/os_test.go - -func touch(t *testing.T, name string) { - f, err := os.Create(name) - if err != nil { - t.Fatal(err) - } - if err := f.Close(); err != nil { - t.Fatal(err) - } -} - -// chtmpdir changes the working directory to a new temporary directory and -// provides a cleanup function. Used when PWD is read-only. -func chtmpdir(t *testing.T) func() { - oldwd, err := os.Getwd() - if err != nil { - t.Fatalf("chtmpdir: %v", err) - } - d, err := ioutil.TempDir("", "test") - if err != nil { - t.Fatalf("chtmpdir: %v", err) - } - if err := os.Chdir(d); err != nil { - t.Fatalf("chtmpdir: %v", err) - } - return func() { - if err := os.Chdir(oldwd); err != nil { - t.Fatalf("chtmpdir: %v", err) - } - os.RemoveAll(d) - } -} diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_test.go b/vendor/golang.org/x/sys/unix/syscall_solaris_test.go deleted file mode 100644 index 57dba882..00000000 --- a/vendor/golang.org/x/sys/unix/syscall_solaris_test.go +++ /dev/null @@ -1,55 +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. - -// +build solaris - -package unix_test - -import ( - "os/exec" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -func TestSelect(t *testing.T) { - err := unix.Select(0, nil, nil, nil, &unix.Timeval{Sec: 0, Usec: 0}) - if err != nil { - t.Fatalf("Select: %v", err) - } - - dur := 150 * time.Millisecond - tv := unix.NsecToTimeval(int64(dur)) - start := time.Now() - err = unix.Select(0, nil, nil, nil, &tv) - took := time.Since(start) - if err != nil { - t.Fatalf("Select: %v", err) - } - - if took < dur { - t.Errorf("Select: timeout should have been at least %v, got %v", dur, took) - } -} - -func TestStatvfs(t *testing.T) { - if err := unix.Statvfs("", nil); err == nil { - t.Fatal(`Statvfs("") expected failure`) - } - - statvfs := unix.Statvfs_t{} - if err := unix.Statvfs("/", &statvfs); err != nil { - t.Errorf(`Statvfs("/") failed: %v`, err) - } - - if t.Failed() { - mount, err := exec.Command("mount").CombinedOutput() - if err != nil { - t.Logf("mount: %v\n%s", err, mount) - } else { - t.Logf("mount: %s", mount) - } - } -} diff --git a/vendor/golang.org/x/sys/unix/syscall_test.go b/vendor/golang.org/x/sys/unix/syscall_test.go deleted file mode 100644 index a8eef7cf..00000000 --- a/vendor/golang.org/x/sys/unix/syscall_test.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "fmt" - "testing" - - "golang.org/x/sys/unix" -) - -func testSetGetenv(t *testing.T, key, value string) { - err := unix.Setenv(key, value) - if err != nil { - t.Fatalf("Setenv failed to set %q: %v", value, err) - } - newvalue, found := unix.Getenv(key) - if !found { - t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value) - } - if newvalue != value { - t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value) - } -} - -func TestEnv(t *testing.T) { - testSetGetenv(t, "TESTENV", "AVALUE") - // make sure TESTENV gets set to "", not deleted - testSetGetenv(t, "TESTENV", "") -} - -func TestItoa(t *testing.T) { - // Make most negative integer: 0x8000... - i := 1 - for i<<1 != 0 { - i <<= 1 - } - if i >= 0 { - t.Fatal("bad math") - } - s := unix.Itoa(i) - f := fmt.Sprint(i) - if s != f { - t.Fatalf("itoa(%d) = %s, want %s", i, s, f) - } -} - -func TestUname(t *testing.T) { - var utsname unix.Utsname - err := unix.Uname(&utsname) - if err != nil { - t.Fatalf("Uname: %v", err) - } - - t.Logf("OS: %s/%s %s", utsname.Sysname[:], utsname.Machine[:], utsname.Release[:]) -} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_test.go b/vendor/golang.org/x/sys/unix/syscall_unix_test.go deleted file mode 100644 index 496e4713..00000000 --- a/vendor/golang.org/x/sys/unix/syscall_unix_test.go +++ /dev/null @@ -1,446 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "flag" - "fmt" - "io/ioutil" - "net" - "os" - "os/exec" - "path/filepath" - "runtime" - "testing" - "time" - - "golang.org/x/sys/unix" -) - -// Tests that below functions, structures and constants are consistent -// on all Unix-like systems. -func _() { - // program scheduling priority functions and constants - var ( - _ func(int, int, int) error = unix.Setpriority - _ func(int, int) (int, error) = unix.Getpriority - ) - const ( - _ int = unix.PRIO_USER - _ int = unix.PRIO_PROCESS - _ int = unix.PRIO_PGRP - ) - - // termios constants - const ( - _ int = unix.TCIFLUSH - _ int = unix.TCIOFLUSH - _ int = unix.TCOFLUSH - ) - - // fcntl file locking structure and constants - var ( - _ = unix.Flock_t{ - Type: int16(0), - Whence: int16(0), - Start: int64(0), - Len: int64(0), - Pid: int32(0), - } - ) - const ( - _ = unix.F_GETLK - _ = unix.F_SETLK - _ = unix.F_SETLKW - ) -} - -// TestFcntlFlock tests whether the file locking structure matches -// the calling convention of each kernel. -func TestFcntlFlock(t *testing.T) { - name := filepath.Join(os.TempDir(), "TestFcntlFlock") - fd, err := unix.Open(name, unix.O_CREAT|unix.O_RDWR|unix.O_CLOEXEC, 0) - if err != nil { - t.Fatalf("Open failed: %v", err) - } - defer unix.Unlink(name) - defer unix.Close(fd) - flock := unix.Flock_t{ - Type: unix.F_RDLCK, - Start: 0, Len: 0, Whence: 1, - } - if err := unix.FcntlFlock(uintptr(fd), unix.F_GETLK, &flock); err != nil { - t.Fatalf("FcntlFlock failed: %v", err) - } -} - -// TestPassFD tests passing a file descriptor over a Unix socket. -// -// This test involved both a parent and child process. The parent -// process is invoked as a normal test, with "go test", which then -// runs the child process by running the current test binary with args -// "-test.run=^TestPassFD$" and an environment variable used to signal -// that the test should become the child process instead. -func TestPassFD(t *testing.T) { - if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { - passFDChild() - return - } - - tempDir, err := ioutil.TempDir("", "TestPassFD") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tempDir) - - fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM, 0) - if err != nil { - t.Fatalf("Socketpair: %v", err) - } - defer unix.Close(fds[0]) - defer unix.Close(fds[1]) - writeFile := os.NewFile(uintptr(fds[0]), "child-writes") - readFile := os.NewFile(uintptr(fds[1]), "parent-reads") - defer writeFile.Close() - defer readFile.Close() - - cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir) - cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"} - if lp := os.Getenv("LD_LIBRARY_PATH"); lp != "" { - cmd.Env = append(cmd.Env, "LD_LIBRARY_PATH="+lp) - } - cmd.ExtraFiles = []*os.File{writeFile} - - out, err := cmd.CombinedOutput() - if len(out) > 0 || err != nil { - t.Fatalf("child process: %q, %v", out, err) - } - - c, err := net.FileConn(readFile) - if err != nil { - t.Fatalf("FileConn: %v", err) - } - defer c.Close() - - uc, ok := c.(*net.UnixConn) - if !ok { - t.Fatalf("unexpected FileConn type; expected UnixConn, got %T", c) - } - - buf := make([]byte, 32) // expect 1 byte - oob := make([]byte, 32) // expect 24 bytes - closeUnix := time.AfterFunc(5*time.Second, func() { - t.Logf("timeout reading from unix socket") - uc.Close() - }) - _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob) - if err != nil { - t.Fatalf("ReadMsgUnix: %v", err) - } - closeUnix.Stop() - - scms, err := unix.ParseSocketControlMessage(oob[:oobn]) - if err != nil { - t.Fatalf("ParseSocketControlMessage: %v", err) - } - if len(scms) != 1 { - t.Fatalf("expected 1 SocketControlMessage; got scms = %#v", scms) - } - scm := scms[0] - gotFds, err := unix.ParseUnixRights(&scm) - if err != nil { - t.Fatalf("unix.ParseUnixRights: %v", err) - } - if len(gotFds) != 1 { - t.Fatalf("wanted 1 fd; got %#v", gotFds) - } - - f := os.NewFile(uintptr(gotFds[0]), "fd-from-child") - defer f.Close() - - got, err := ioutil.ReadAll(f) - want := "Hello from child process!\n" - if string(got) != want { - t.Errorf("child process ReadAll: %q, %v; want %q", got, err, want) - } -} - -// passFDChild is the child process used by TestPassFD. -func passFDChild() { - defer os.Exit(0) - - // Look for our fd. It should be fd 3, but we work around an fd leak - // bug here (http://golang.org/issue/2603) to let it be elsewhere. - var uc *net.UnixConn - for fd := uintptr(3); fd <= 10; fd++ { - f := os.NewFile(fd, "unix-conn") - var ok bool - netc, _ := net.FileConn(f) - uc, ok = netc.(*net.UnixConn) - if ok { - break - } - } - if uc == nil { - fmt.Println("failed to find unix fd") - return - } - - // Make a file f to send to our parent process on uc. - // We make it in tempDir, which our parent will clean up. - flag.Parse() - tempDir := flag.Arg(0) - f, err := ioutil.TempFile(tempDir, "") - if err != nil { - fmt.Printf("TempFile: %v", err) - return - } - - f.Write([]byte("Hello from child process!\n")) - f.Seek(0, 0) - - rights := unix.UnixRights(int(f.Fd())) - dummyByte := []byte("x") - n, oobn, err := uc.WriteMsgUnix(dummyByte, rights, nil) - if err != nil { - fmt.Printf("WriteMsgUnix: %v", err) - return - } - if n != 1 || oobn != len(rights) { - fmt.Printf("WriteMsgUnix = %d, %d; want 1, %d", n, oobn, len(rights)) - return - } -} - -// TestUnixRightsRoundtrip tests that UnixRights, ParseSocketControlMessage, -// and ParseUnixRights are able to successfully round-trip lists of file descriptors. -func TestUnixRightsRoundtrip(t *testing.T) { - testCases := [...][][]int{ - {{42}}, - {{1, 2}}, - {{3, 4, 5}}, - {{}}, - {{1, 2}, {3, 4, 5}, {}, {7}}, - } - for _, testCase := range testCases { - b := []byte{} - var n int - for _, fds := range testCase { - // Last assignment to n wins - n = len(b) + unix.CmsgLen(4*len(fds)) - b = append(b, unix.UnixRights(fds...)...) - } - // Truncate b - b = b[:n] - - scms, err := unix.ParseSocketControlMessage(b) - if err != nil { - t.Fatalf("ParseSocketControlMessage: %v", err) - } - if len(scms) != len(testCase) { - t.Fatalf("expected %v SocketControlMessage; got scms = %#v", len(testCase), scms) - } - for i, scm := range scms { - gotFds, err := unix.ParseUnixRights(&scm) - if err != nil { - t.Fatalf("ParseUnixRights: %v", err) - } - wantFds := testCase[i] - if len(gotFds) != len(wantFds) { - t.Fatalf("expected %v fds, got %#v", len(wantFds), gotFds) - } - for j, fd := range gotFds { - if fd != wantFds[j] { - t.Fatalf("expected fd %v, got %v", wantFds[j], fd) - } - } - } - } -} - -func TestRlimit(t *testing.T) { - var rlimit, zero unix.Rlimit - err := unix.Getrlimit(unix.RLIMIT_NOFILE, &rlimit) - if err != nil { - t.Fatalf("Getrlimit: save failed: %v", err) - } - if zero == rlimit { - t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit) - } - set := rlimit - set.Cur = set.Max - 1 - err = unix.Setrlimit(unix.RLIMIT_NOFILE, &set) - if err != nil { - t.Fatalf("Setrlimit: set failed: %#v %v", set, err) - } - var get unix.Rlimit - err = unix.Getrlimit(unix.RLIMIT_NOFILE, &get) - if err != nil { - t.Fatalf("Getrlimit: get failed: %v", err) - } - set = rlimit - set.Cur = set.Max - 1 - if set != get { - // Seems like Darwin requires some privilege to - // increase the soft limit of rlimit sandbox, though - // Setrlimit never reports an error. - switch runtime.GOOS { - case "darwin": - default: - t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get) - } - } - err = unix.Setrlimit(unix.RLIMIT_NOFILE, &rlimit) - if err != nil { - t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err) - } -} - -func TestSeekFailure(t *testing.T) { - _, err := unix.Seek(-1, 0, 0) - if err == nil { - t.Fatalf("Seek(-1, 0, 0) did not fail") - } - str := err.Error() // used to crash on Linux - t.Logf("Seek: %v", str) - if str == "" { - t.Fatalf("Seek(-1, 0, 0) return error with empty message") - } -} - -func TestDup(t *testing.T) { - file, err := ioutil.TempFile("", "TestDup") - if err != nil { - t.Fatalf("Tempfile failed: %v", err) - } - defer os.Remove(file.Name()) - defer file.Close() - f := int(file.Fd()) - - newFd, err := unix.Dup(f) - if err != nil { - t.Fatalf("Dup: %v", err) - } - - err = unix.Dup2(newFd, newFd+1) - if err != nil { - t.Fatalf("Dup2: %v", err) - } - - b1 := []byte("Test123") - b2 := make([]byte, 7) - _, err = unix.Write(newFd+1, b1) - if err != nil { - t.Fatalf("Write to dup2 fd failed: %v", err) - } - _, err = unix.Seek(f, 0, 0) - if err != nil { - t.Fatalf("Seek failed: %v", err) - } - _, err = unix.Read(f, b2) - if err != nil { - t.Fatalf("Read back failed: %v", err) - } - if string(b1) != string(b2) { - t.Errorf("Dup: stdout write not in file, expected %v, got %v", string(b1), string(b2)) - } -} - -func TestPoll(t *testing.T) { - f, cleanup := mktmpfifo(t) - defer cleanup() - - const timeout = 100 - - ok := make(chan bool, 1) - go func() { - select { - case <-time.After(10 * timeout * time.Millisecond): - t.Errorf("Poll: failed to timeout after %d milliseconds", 10*timeout) - case <-ok: - } - }() - - fds := []unix.PollFd{{Fd: int32(f.Fd()), Events: unix.POLLIN}} - n, err := unix.Poll(fds, timeout) - ok <- true - if err != nil { - t.Errorf("Poll: unexpected error: %v", err) - return - } - if n != 0 { - t.Errorf("Poll: wrong number of events: got %v, expected %v", n, 0) - return - } -} - -func TestGetwd(t *testing.T) { - fd, err := os.Open(".") - if err != nil { - t.Fatalf("Open .: %s", err) - } - defer fd.Close() - // These are chosen carefully not to be symlinks on a Mac - // (unlike, say, /var, /etc) - dirs := []string{"/", "/usr/bin"} - if runtime.GOOS == "darwin" { - switch runtime.GOARCH { - case "arm", "arm64": - d1, err := ioutil.TempDir("", "d1") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - d2, err := ioutil.TempDir("", "d2") - if err != nil { - t.Fatalf("TempDir: %v", err) - } - dirs = []string{d1, d2} - } - } - oldwd := os.Getenv("PWD") - for _, d := range dirs { - err = os.Chdir(d) - if err != nil { - t.Fatalf("Chdir: %v", err) - } - pwd, err := unix.Getwd() - if err != nil { - t.Fatalf("Getwd in %s: %s", d, err) - } - os.Setenv("PWD", oldwd) - err = fd.Chdir() - if err != nil { - // We changed the current directory and cannot go back. - // Don't let the tests continue; they'll scribble - // all over some other directory. - fmt.Fprintf(os.Stderr, "fchdir back to dot failed: %s\n", err) - os.Exit(1) - } - if pwd != d { - t.Fatalf("Getwd returned %q want %q", pwd, d) - } - } -} - -// mktmpfifo creates a temporary FIFO and provides a cleanup function. -func mktmpfifo(t *testing.T) (*os.File, func()) { - err := unix.Mkfifo("fifo", 0666) - if err != nil { - t.Fatalf("mktmpfifo: failed to create FIFO: %v", err) - } - - f, err := os.OpenFile("fifo", os.O_RDWR, 0666) - if err != nil { - os.Remove("fifo") - t.Fatalf("mktmpfifo: failed to open FIFO: %v", err) - } - - return f, func() { - f.Close() - os.Remove("fifo") - } -} diff --git a/vendor/golang.org/x/sys/unix/timestruct_test.go b/vendor/golang.org/x/sys/unix/timestruct_test.go deleted file mode 100644 index 4215f46d..00000000 --- a/vendor/golang.org/x/sys/unix/timestruct_test.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2017 The Go Authors. All right reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix_test - -import ( - "testing" - "time" - "unsafe" - - "golang.org/x/sys/unix" -) - -func TestTimeToTimespec(t *testing.T) { - timeTests := []struct { - time time.Time - valid bool - }{ - {time.Unix(0, 0), true}, - {time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC), true}, - {time.Date(2262, time.December, 31, 23, 0, 0, 0, time.UTC), false}, - {time.Unix(0x7FFFFFFF, 0), true}, - {time.Unix(0x80000000, 0), false}, - {time.Unix(0x7FFFFFFF, 1000000000), false}, - {time.Unix(0x7FFFFFFF, 999999999), true}, - {time.Unix(-0x80000000, 0), true}, - {time.Unix(-0x80000001, 0), false}, - {time.Date(2038, time.January, 19, 3, 14, 7, 0, time.UTC), true}, - {time.Date(2038, time.January, 19, 3, 14, 8, 0, time.UTC), false}, - {time.Date(1901, time.December, 13, 20, 45, 52, 0, time.UTC), true}, - {time.Date(1901, time.December, 13, 20, 45, 51, 0, time.UTC), false}, - } - - // Currently all targets have either int32 or int64 for Timespec.Sec. - // If there were a new target with unsigned or floating point type for - // it, this test must be adjusted. - have64BitTime := (unsafe.Sizeof(unix.Timespec{}.Sec) == 8) - for _, tt := range timeTests { - ts, err := unix.TimeToTimespec(tt.time) - tt.valid = tt.valid || have64BitTime - if tt.valid && err != nil { - t.Errorf("TimeToTimespec(%v): %v", tt.time, err) - } - if err == nil { - tstime := time.Unix(int64(ts.Sec), int64(ts.Nsec)) - if !tstime.Equal(tt.time) { - t.Errorf("TimeToTimespec(%v) is the time %v", tt.time, tstime) - } - } - } -} diff --git a/vendor/golang.org/x/sys/windows/registry/export_test.go b/vendor/golang.org/x/sys/windows/registry/export_test.go deleted file mode 100644 index 8badf6fd..00000000 --- a/vendor/golang.org/x/sys/windows/registry/export_test.go +++ /dev/null @@ -1,11 +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. - -// +build windows - -package registry - -func (k Key) SetValue(name string, valtype uint32, data []byte) error { - return k.setValue(name, valtype, data) -} diff --git a/vendor/golang.org/x/sys/windows/registry/key.go b/vendor/golang.org/x/sys/windows/registry/key.go deleted file mode 100644 index c2564834..00000000 --- a/vendor/golang.org/x/sys/windows/registry/key.go +++ /dev/null @@ -1,198 +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. - -// +build windows - -// Package registry provides access to the Windows registry. -// -// Here is a simple example, opening a registry key and reading a string value from it. -// -// k, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows NT\CurrentVersion`, registry.QUERY_VALUE) -// if err != nil { -// log.Fatal(err) -// } -// defer k.Close() -// -// s, _, err := k.GetStringValue("SystemRoot") -// if err != nil { -// log.Fatal(err) -// } -// fmt.Printf("Windows system root is %q\n", s) -// -package registry - -import ( - "io" - "syscall" - "time" -) - -const ( - // Registry key security and access rights. - // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms724878.aspx - // for details. - ALL_ACCESS = 0xf003f - CREATE_LINK = 0x00020 - CREATE_SUB_KEY = 0x00004 - ENUMERATE_SUB_KEYS = 0x00008 - EXECUTE = 0x20019 - NOTIFY = 0x00010 - QUERY_VALUE = 0x00001 - READ = 0x20019 - SET_VALUE = 0x00002 - WOW64_32KEY = 0x00200 - WOW64_64KEY = 0x00100 - WRITE = 0x20006 -) - -// Key is a handle to an open Windows registry key. -// Keys can be obtained by calling OpenKey; there are -// also some predefined root keys such as CURRENT_USER. -// Keys can be used directly in the Windows API. -type Key syscall.Handle - -const ( - // Windows defines some predefined root keys that are always open. - // An application can use these keys as entry points to the registry. - // Normally these keys are used in OpenKey to open new keys, - // but they can also be used anywhere a Key is required. - CLASSES_ROOT = Key(syscall.HKEY_CLASSES_ROOT) - CURRENT_USER = Key(syscall.HKEY_CURRENT_USER) - LOCAL_MACHINE = Key(syscall.HKEY_LOCAL_MACHINE) - USERS = Key(syscall.HKEY_USERS) - CURRENT_CONFIG = Key(syscall.HKEY_CURRENT_CONFIG) - PERFORMANCE_DATA = Key(syscall.HKEY_PERFORMANCE_DATA) -) - -// Close closes open key k. -func (k Key) Close() error { - return syscall.RegCloseKey(syscall.Handle(k)) -} - -// OpenKey opens a new key with path name relative to key k. -// It accepts any open key, including CURRENT_USER and others, -// and returns the new key and an error. -// The access parameter specifies desired access rights to the -// key to be opened. -func OpenKey(k Key, path string, access uint32) (Key, error) { - p, err := syscall.UTF16PtrFromString(path) - if err != nil { - return 0, err - } - var subkey syscall.Handle - err = syscall.RegOpenKeyEx(syscall.Handle(k), p, 0, access, &subkey) - if err != nil { - return 0, err - } - return Key(subkey), nil -} - -// OpenRemoteKey opens a predefined registry key on another -// computer pcname. The key to be opened is specified by k, but -// can only be one of LOCAL_MACHINE, PERFORMANCE_DATA or USERS. -// If pcname is "", OpenRemoteKey returns local computer key. -func OpenRemoteKey(pcname string, k Key) (Key, error) { - var err error - var p *uint16 - if pcname != "" { - p, err = syscall.UTF16PtrFromString(`\\` + pcname) - if err != nil { - return 0, err - } - } - var remoteKey syscall.Handle - err = regConnectRegistry(p, syscall.Handle(k), &remoteKey) - if err != nil { - return 0, err - } - return Key(remoteKey), nil -} - -// ReadSubKeyNames returns the names of subkeys of key k. -// The parameter n controls the number of returned names, -// analogous to the way os.File.Readdirnames works. -func (k Key) ReadSubKeyNames(n int) ([]string, error) { - names := make([]string, 0) - // Registry key size limit is 255 bytes and described there: - // https://msdn.microsoft.com/library/windows/desktop/ms724872.aspx - buf := make([]uint16, 256) //plus extra room for terminating zero byte -loopItems: - for i := uint32(0); ; i++ { - if n > 0 { - if len(names) == n { - return names, nil - } - } - l := uint32(len(buf)) - for { - err := syscall.RegEnumKeyEx(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil) - if err == nil { - break - } - if err == syscall.ERROR_MORE_DATA { - // Double buffer size and try again. - l = uint32(2 * len(buf)) - buf = make([]uint16, l) - continue - } - if err == _ERROR_NO_MORE_ITEMS { - break loopItems - } - return names, err - } - names = append(names, syscall.UTF16ToString(buf[:l])) - } - if n > len(names) { - return names, io.EOF - } - return names, nil -} - -// CreateKey creates a key named path under open key k. -// CreateKey returns the new key and a boolean flag that reports -// whether the key already existed. -// The access parameter specifies the access rights for the key -// to be created. -func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) { - var h syscall.Handle - var d uint32 - err = regCreateKeyEx(syscall.Handle(k), syscall.StringToUTF16Ptr(path), - 0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d) - if err != nil { - return 0, false, err - } - return Key(h), d == _REG_OPENED_EXISTING_KEY, nil -} - -// DeleteKey deletes the subkey path of key k and its values. -func DeleteKey(k Key, path string) error { - return regDeleteKey(syscall.Handle(k), syscall.StringToUTF16Ptr(path)) -} - -// A KeyInfo describes the statistics of a key. It is returned by Stat. -type KeyInfo struct { - SubKeyCount uint32 - MaxSubKeyLen uint32 // size of the key's subkey with the longest name, in Unicode characters, not including the terminating zero byte - ValueCount uint32 - MaxValueNameLen uint32 // size of the key's longest value name, in Unicode characters, not including the terminating zero byte - MaxValueLen uint32 // longest data component among the key's values, in bytes - lastWriteTime syscall.Filetime -} - -// ModTime returns the key's last write time. -func (ki *KeyInfo) ModTime() time.Time { - return time.Unix(0, ki.lastWriteTime.Nanoseconds()) -} - -// Stat retrieves information about the open key k. -func (k Key) Stat() (*KeyInfo, error) { - var ki KeyInfo - err := syscall.RegQueryInfoKey(syscall.Handle(k), nil, nil, nil, - &ki.SubKeyCount, &ki.MaxSubKeyLen, nil, &ki.ValueCount, - &ki.MaxValueNameLen, &ki.MaxValueLen, nil, &ki.lastWriteTime) - if err != nil { - return nil, err - } - return &ki, nil -} diff --git a/vendor/golang.org/x/sys/windows/registry/mksyscall.go b/vendor/golang.org/x/sys/windows/registry/mksyscall.go deleted file mode 100644 index 0ac95ffe..00000000 --- a/vendor/golang.org/x/sys/windows/registry/mksyscall.go +++ /dev/null @@ -1,7 +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 registry - -//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go syscall.go diff --git a/vendor/golang.org/x/sys/windows/registry/registry_test.go b/vendor/golang.org/x/sys/windows/registry/registry_test.go deleted file mode 100644 index 2f4dd69e..00000000 --- a/vendor/golang.org/x/sys/windows/registry/registry_test.go +++ /dev/null @@ -1,756 +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. - -// +build windows - -package registry_test - -import ( - "bytes" - "crypto/rand" - "os" - "syscall" - "testing" - "time" - "unsafe" - - "golang.org/x/sys/windows/registry" -) - -func randKeyName(prefix string) string { - const numbers = "0123456789" - buf := make([]byte, 10) - rand.Read(buf) - for i, b := range buf { - buf[i] = numbers[b%byte(len(numbers))] - } - return prefix + string(buf) -} - -func TestReadSubKeyNames(t *testing.T) { - k, err := registry.OpenKey(registry.CLASSES_ROOT, "TypeLib", registry.ENUMERATE_SUB_KEYS) - if err != nil { - t.Fatal(err) - } - defer k.Close() - - names, err := k.ReadSubKeyNames(-1) - if err != nil { - t.Fatal(err) - } - var foundStdOle bool - for _, name := range names { - // Every PC has "stdole 2.0 OLE Automation" library installed. - if name == "{00020430-0000-0000-C000-000000000046}" { - foundStdOle = true - } - } - if !foundStdOle { - t.Fatal("could not find stdole 2.0 OLE Automation") - } -} - -func TestCreateOpenDeleteKey(t *testing.T) { - k, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE) - if err != nil { - t.Fatal(err) - } - defer k.Close() - - testKName := randKeyName("TestCreateOpenDeleteKey_") - - testK, exist, err := registry.CreateKey(k, testKName, registry.CREATE_SUB_KEY) - if err != nil { - t.Fatal(err) - } - defer testK.Close() - - if exist { - t.Fatalf("key %q already exists", testKName) - } - - testKAgain, exist, err := registry.CreateKey(k, testKName, registry.CREATE_SUB_KEY) - if err != nil { - t.Fatal(err) - } - defer testKAgain.Close() - - if !exist { - t.Fatalf("key %q should already exist", testKName) - } - - testKOpened, err := registry.OpenKey(k, testKName, registry.ENUMERATE_SUB_KEYS) - if err != nil { - t.Fatal(err) - } - defer testKOpened.Close() - - err = registry.DeleteKey(k, testKName) - if err != nil { - t.Fatal(err) - } - - testKOpenedAgain, err := registry.OpenKey(k, testKName, registry.ENUMERATE_SUB_KEYS) - if err == nil { - defer testKOpenedAgain.Close() - t.Fatalf("key %q should already been deleted", testKName) - } - if err != registry.ErrNotExist { - t.Fatalf(`unexpected error ("not exist" expected): %v`, err) - } -} - -func equalStringSlice(a, b []string) bool { - if len(a) != len(b) { - return false - } - if a == nil { - return true - } - for i := range a { - if a[i] != b[i] { - return false - } - } - return true -} - -type ValueTest struct { - Type uint32 - Name string - Value interface{} - WillFail bool -} - -var ValueTests = []ValueTest{ - {Type: registry.SZ, Name: "String1", Value: ""}, - {Type: registry.SZ, Name: "String2", Value: "\000", WillFail: true}, - {Type: registry.SZ, Name: "String3", Value: "Hello World"}, - {Type: registry.SZ, Name: "String4", Value: "Hello World\000", WillFail: true}, - {Type: registry.EXPAND_SZ, Name: "ExpString1", Value: ""}, - {Type: registry.EXPAND_SZ, Name: "ExpString2", Value: "\000", WillFail: true}, - {Type: registry.EXPAND_SZ, Name: "ExpString3", Value: "Hello World"}, - {Type: registry.EXPAND_SZ, Name: "ExpString4", Value: "Hello\000World", WillFail: true}, - {Type: registry.EXPAND_SZ, Name: "ExpString5", Value: "%PATH%"}, - {Type: registry.EXPAND_SZ, Name: "ExpString6", Value: "%NO_SUCH_VARIABLE%"}, - {Type: registry.EXPAND_SZ, Name: "ExpString7", Value: "%PATH%;."}, - {Type: registry.BINARY, Name: "Binary1", Value: []byte{}}, - {Type: registry.BINARY, Name: "Binary2", Value: []byte{1, 2, 3}}, - {Type: registry.BINARY, Name: "Binary3", Value: []byte{3, 2, 1, 0, 1, 2, 3}}, - {Type: registry.DWORD, Name: "Dword1", Value: uint64(0)}, - {Type: registry.DWORD, Name: "Dword2", Value: uint64(1)}, - {Type: registry.DWORD, Name: "Dword3", Value: uint64(0xff)}, - {Type: registry.DWORD, Name: "Dword4", Value: uint64(0xffff)}, - {Type: registry.QWORD, Name: "Qword1", Value: uint64(0)}, - {Type: registry.QWORD, Name: "Qword2", Value: uint64(1)}, - {Type: registry.QWORD, Name: "Qword3", Value: uint64(0xff)}, - {Type: registry.QWORD, Name: "Qword4", Value: uint64(0xffff)}, - {Type: registry.QWORD, Name: "Qword5", Value: uint64(0xffffff)}, - {Type: registry.QWORD, Name: "Qword6", Value: uint64(0xffffffff)}, - {Type: registry.MULTI_SZ, Name: "MultiString1", Value: []string{"a", "b", "c"}}, - {Type: registry.MULTI_SZ, Name: "MultiString2", Value: []string{"abc", "", "cba"}}, - {Type: registry.MULTI_SZ, Name: "MultiString3", Value: []string{""}}, - {Type: registry.MULTI_SZ, Name: "MultiString4", Value: []string{"abcdef"}}, - {Type: registry.MULTI_SZ, Name: "MultiString5", Value: []string{"\000"}, WillFail: true}, - {Type: registry.MULTI_SZ, Name: "MultiString6", Value: []string{"a\000b"}, WillFail: true}, - {Type: registry.MULTI_SZ, Name: "MultiString7", Value: []string{"ab", "\000", "cd"}, WillFail: true}, - {Type: registry.MULTI_SZ, Name: "MultiString8", Value: []string{"\000", "cd"}, WillFail: true}, - {Type: registry.MULTI_SZ, Name: "MultiString9", Value: []string{"ab", "\000"}, WillFail: true}, -} - -func setValues(t *testing.T, k registry.Key) { - for _, test := range ValueTests { - var err error - switch test.Type { - case registry.SZ: - err = k.SetStringValue(test.Name, test.Value.(string)) - case registry.EXPAND_SZ: - err = k.SetExpandStringValue(test.Name, test.Value.(string)) - case registry.MULTI_SZ: - err = k.SetStringsValue(test.Name, test.Value.([]string)) - case registry.BINARY: - err = k.SetBinaryValue(test.Name, test.Value.([]byte)) - case registry.DWORD: - err = k.SetDWordValue(test.Name, uint32(test.Value.(uint64))) - case registry.QWORD: - err = k.SetQWordValue(test.Name, test.Value.(uint64)) - default: - t.Fatalf("unsupported type %d for %s value", test.Type, test.Name) - } - if test.WillFail { - if err == nil { - t.Fatalf("setting %s value %q should fail, but succeeded", test.Name, test.Value) - } - } else { - if err != nil { - t.Fatal(err) - } - } - } -} - -func enumerateValues(t *testing.T, k registry.Key) { - names, err := k.ReadValueNames(-1) - if err != nil { - t.Error(err) - return - } - haveNames := make(map[string]bool) - for _, n := range names { - haveNames[n] = false - } - for _, test := range ValueTests { - wantFound := !test.WillFail - _, haveFound := haveNames[test.Name] - if wantFound && !haveFound { - t.Errorf("value %s is not found while enumerating", test.Name) - } - if haveFound && !wantFound { - t.Errorf("value %s is found while enumerating, but expected to fail", test.Name) - } - if haveFound { - delete(haveNames, test.Name) - } - } - for n, v := range haveNames { - t.Errorf("value %s (%v) is found while enumerating, but has not been cretaed", n, v) - } -} - -func testErrNotExist(t *testing.T, name string, err error) { - if err == nil { - t.Errorf("%s value should not exist", name) - return - } - if err != registry.ErrNotExist { - t.Errorf("reading %s value should return 'not exist' error, but got: %s", name, err) - return - } -} - -func testErrUnexpectedType(t *testing.T, test ValueTest, gottype uint32, err error) { - if err == nil { - t.Errorf("GetXValue(%q) should not succeed", test.Name) - return - } - if err != registry.ErrUnexpectedType { - t.Errorf("reading %s value should return 'unexpected key value type' error, but got: %s", test.Name, err) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } -} - -func testGetStringValue(t *testing.T, k registry.Key, test ValueTest) { - got, gottype, err := k.GetStringValue(test.Name) - if err != nil { - t.Errorf("GetStringValue(%s) failed: %v", test.Name, err) - return - } - if got != test.Value { - t.Errorf("want %s value %q, got %q", test.Name, test.Value, got) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } - if gottype == registry.EXPAND_SZ { - _, err = registry.ExpandString(got) - if err != nil { - t.Errorf("ExpandString(%s) failed: %v", got, err) - return - } - } -} - -func testGetIntegerValue(t *testing.T, k registry.Key, test ValueTest) { - got, gottype, err := k.GetIntegerValue(test.Name) - if err != nil { - t.Errorf("GetIntegerValue(%s) failed: %v", test.Name, err) - return - } - if got != test.Value.(uint64) { - t.Errorf("want %s value %v, got %v", test.Name, test.Value, got) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } -} - -func testGetBinaryValue(t *testing.T, k registry.Key, test ValueTest) { - got, gottype, err := k.GetBinaryValue(test.Name) - if err != nil { - t.Errorf("GetBinaryValue(%s) failed: %v", test.Name, err) - return - } - if !bytes.Equal(got, test.Value.([]byte)) { - t.Errorf("want %s value %v, got %v", test.Name, test.Value, got) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } -} - -func testGetStringsValue(t *testing.T, k registry.Key, test ValueTest) { - got, gottype, err := k.GetStringsValue(test.Name) - if err != nil { - t.Errorf("GetStringsValue(%s) failed: %v", test.Name, err) - return - } - if !equalStringSlice(got, test.Value.([]string)) { - t.Errorf("want %s value %#v, got %#v", test.Name, test.Value, got) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } -} - -func testGetValue(t *testing.T, k registry.Key, test ValueTest, size int) { - if size <= 0 { - return - } - // read data with no buffer - gotsize, gottype, err := k.GetValue(test.Name, nil) - if err != nil { - t.Errorf("GetValue(%s, [%d]byte) failed: %v", test.Name, size, err) - return - } - if gotsize != size { - t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } - // read data with short buffer - gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size-1)) - if err == nil { - t.Errorf("GetValue(%s, [%d]byte) should fail, but succeeded", test.Name, size-1) - return - } - if err != registry.ErrShortBuffer { - t.Errorf("reading %s value should return 'short buffer' error, but got: %s", test.Name, err) - return - } - if gotsize != size { - t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } - // read full data - gotsize, gottype, err = k.GetValue(test.Name, make([]byte, size)) - if err != nil { - t.Errorf("GetValue(%s, [%d]byte) failed: %v", test.Name, size, err) - return - } - if gotsize != size { - t.Errorf("want %s value size of %d, got %v", test.Name, size, gotsize) - return - } - if gottype != test.Type { - t.Errorf("want %s value type %v, got %v", test.Name, test.Type, gottype) - return - } - // check GetValue returns ErrNotExist as required - _, _, err = k.GetValue(test.Name+"_not_there", make([]byte, size)) - if err == nil { - t.Errorf("GetValue(%q) should not succeed", test.Name) - return - } - if err != registry.ErrNotExist { - t.Errorf("GetValue(%q) should return 'not exist' error, but got: %s", test.Name, err) - return - } -} - -func testValues(t *testing.T, k registry.Key) { - for _, test := range ValueTests { - switch test.Type { - case registry.SZ, registry.EXPAND_SZ: - if test.WillFail { - _, _, err := k.GetStringValue(test.Name) - testErrNotExist(t, test.Name, err) - } else { - testGetStringValue(t, k, test) - _, gottype, err := k.GetIntegerValue(test.Name) - testErrUnexpectedType(t, test, gottype, err) - // Size of utf16 string in bytes is not perfect, - // but correct for current test values. - // Size also includes terminating 0. - testGetValue(t, k, test, (len(test.Value.(string))+1)*2) - } - _, _, err := k.GetStringValue(test.Name + "_string_not_created") - testErrNotExist(t, test.Name+"_string_not_created", err) - case registry.DWORD, registry.QWORD: - testGetIntegerValue(t, k, test) - _, gottype, err := k.GetBinaryValue(test.Name) - testErrUnexpectedType(t, test, gottype, err) - _, _, err = k.GetIntegerValue(test.Name + "_int_not_created") - testErrNotExist(t, test.Name+"_int_not_created", err) - size := 8 - if test.Type == registry.DWORD { - size = 4 - } - testGetValue(t, k, test, size) - case registry.BINARY: - testGetBinaryValue(t, k, test) - _, gottype, err := k.GetStringsValue(test.Name) - testErrUnexpectedType(t, test, gottype, err) - _, _, err = k.GetBinaryValue(test.Name + "_byte_not_created") - testErrNotExist(t, test.Name+"_byte_not_created", err) - testGetValue(t, k, test, len(test.Value.([]byte))) - case registry.MULTI_SZ: - if test.WillFail { - _, _, err := k.GetStringsValue(test.Name) - testErrNotExist(t, test.Name, err) - } else { - testGetStringsValue(t, k, test) - _, gottype, err := k.GetStringValue(test.Name) - testErrUnexpectedType(t, test, gottype, err) - size := 0 - for _, s := range test.Value.([]string) { - size += len(s) + 1 // nil terminated - } - size += 1 // extra nil at the end - size *= 2 // count bytes, not uint16 - testGetValue(t, k, test, size) - } - _, _, err := k.GetStringsValue(test.Name + "_strings_not_created") - testErrNotExist(t, test.Name+"_strings_not_created", err) - default: - t.Errorf("unsupported type %d for %s value", test.Type, test.Name) - continue - } - } -} - -func testStat(t *testing.T, k registry.Key) { - subk, _, err := registry.CreateKey(k, "subkey", registry.CREATE_SUB_KEY) - if err != nil { - t.Error(err) - return - } - defer subk.Close() - - defer registry.DeleteKey(k, "subkey") - - ki, err := k.Stat() - if err != nil { - t.Error(err) - return - } - if ki.SubKeyCount != 1 { - t.Error("key must have 1 subkey") - } - if ki.MaxSubKeyLen != 6 { - t.Error("key max subkey name length must be 6") - } - if ki.ValueCount != 24 { - t.Errorf("key must have 24 values, but is %d", ki.ValueCount) - } - if ki.MaxValueNameLen != 12 { - t.Errorf("key max value name length must be 10, but is %d", ki.MaxValueNameLen) - } - if ki.MaxValueLen != 38 { - t.Errorf("key max value length must be 38, but is %d", ki.MaxValueLen) - } - if mt, ct := ki.ModTime(), time.Now(); ct.Sub(mt) > 100*time.Millisecond { - t.Errorf("key mod time is not close to current time: mtime=%v current=%v delta=%v", mt, ct, ct.Sub(mt)) - } -} - -func deleteValues(t *testing.T, k registry.Key) { - for _, test := range ValueTests { - if test.WillFail { - continue - } - err := k.DeleteValue(test.Name) - if err != nil { - t.Error(err) - continue - } - } - names, err := k.ReadValueNames(-1) - if err != nil { - t.Error(err) - return - } - if len(names) != 0 { - t.Errorf("some values remain after deletion: %v", names) - } -} - -func TestValues(t *testing.T) { - softwareK, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE) - if err != nil { - t.Fatal(err) - } - defer softwareK.Close() - - testKName := randKeyName("TestValues_") - - k, exist, err := registry.CreateKey(softwareK, testKName, registry.CREATE_SUB_KEY|registry.QUERY_VALUE|registry.SET_VALUE) - if err != nil { - t.Fatal(err) - } - defer k.Close() - - if exist { - t.Fatalf("key %q already exists", testKName) - } - - defer registry.DeleteKey(softwareK, testKName) - - setValues(t, k) - - enumerateValues(t, k) - - testValues(t, k) - - testStat(t, k) - - deleteValues(t, k) -} - -func walkKey(t *testing.T, k registry.Key, kname string) { - names, err := k.ReadValueNames(-1) - if err != nil { - t.Fatalf("reading value names of %s failed: %v", kname, err) - } - for _, name := range names { - _, valtype, err := k.GetValue(name, nil) - if err != nil { - t.Fatalf("reading value type of %s of %s failed: %v", name, kname, err) - } - switch valtype { - case registry.NONE: - case registry.SZ: - _, _, err := k.GetStringValue(name) - if err != nil { - t.Error(err) - } - case registry.EXPAND_SZ: - s, _, err := k.GetStringValue(name) - if err != nil { - t.Error(err) - } - _, err = registry.ExpandString(s) - if err != nil { - t.Error(err) - } - case registry.DWORD, registry.QWORD: - _, _, err := k.GetIntegerValue(name) - if err != nil { - t.Error(err) - } - case registry.BINARY: - _, _, err := k.GetBinaryValue(name) - if err != nil { - t.Error(err) - } - case registry.MULTI_SZ: - _, _, err := k.GetStringsValue(name) - if err != nil { - t.Error(err) - } - case registry.FULL_RESOURCE_DESCRIPTOR, registry.RESOURCE_LIST, registry.RESOURCE_REQUIREMENTS_LIST: - // TODO: not implemented - default: - t.Fatalf("value type %d of %s of %s failed: %v", valtype, name, kname, err) - } - } - - names, err = k.ReadSubKeyNames(-1) - if err != nil { - t.Fatalf("reading sub-keys of %s failed: %v", kname, err) - } - for _, name := range names { - func() { - subk, err := registry.OpenKey(k, name, registry.ENUMERATE_SUB_KEYS|registry.QUERY_VALUE) - if err != nil { - if err == syscall.ERROR_ACCESS_DENIED { - // ignore error, if we are not allowed to access this key - return - } - t.Fatalf("opening sub-keys %s of %s failed: %v", name, kname, err) - } - defer subk.Close() - - walkKey(t, subk, kname+`\`+name) - }() - } -} - -func TestWalkFullRegistry(t *testing.T) { - if testing.Short() { - t.Skip("skipping long running test in short mode") - } - walkKey(t, registry.CLASSES_ROOT, "CLASSES_ROOT") - walkKey(t, registry.CURRENT_USER, "CURRENT_USER") - walkKey(t, registry.LOCAL_MACHINE, "LOCAL_MACHINE") - walkKey(t, registry.USERS, "USERS") - walkKey(t, registry.CURRENT_CONFIG, "CURRENT_CONFIG") -} - -func TestExpandString(t *testing.T) { - got, err := registry.ExpandString("%PATH%") - if err != nil { - t.Fatal(err) - } - want := os.Getenv("PATH") - if got != want { - t.Errorf("want %q string expanded, got %q", want, got) - } -} - -func TestInvalidValues(t *testing.T) { - softwareK, err := registry.OpenKey(registry.CURRENT_USER, "Software", registry.QUERY_VALUE) - if err != nil { - t.Fatal(err) - } - defer softwareK.Close() - - testKName := randKeyName("TestInvalidValues_") - - k, exist, err := registry.CreateKey(softwareK, testKName, registry.CREATE_SUB_KEY|registry.QUERY_VALUE|registry.SET_VALUE) - if err != nil { - t.Fatal(err) - } - defer k.Close() - - if exist { - t.Fatalf("key %q already exists", testKName) - } - - defer registry.DeleteKey(softwareK, testKName) - - var tests = []struct { - Type uint32 - Name string - Data []byte - }{ - {registry.DWORD, "Dword1", nil}, - {registry.DWORD, "Dword2", []byte{1, 2, 3}}, - {registry.QWORD, "Qword1", nil}, - {registry.QWORD, "Qword2", []byte{1, 2, 3}}, - {registry.QWORD, "Qword3", []byte{1, 2, 3, 4, 5, 6, 7}}, - {registry.MULTI_SZ, "MultiString1", nil}, - {registry.MULTI_SZ, "MultiString2", []byte{0}}, - {registry.MULTI_SZ, "MultiString3", []byte{'a', 'b', 0}}, - {registry.MULTI_SZ, "MultiString4", []byte{'a', 0, 0, 'b', 0}}, - {registry.MULTI_SZ, "MultiString5", []byte{'a', 0, 0}}, - } - - for _, test := range tests { - err := k.SetValue(test.Name, test.Type, test.Data) - if err != nil { - t.Fatalf("SetValue for %q failed: %v", test.Name, err) - } - } - - for _, test := range tests { - switch test.Type { - case registry.DWORD, registry.QWORD: - value, valType, err := k.GetIntegerValue(test.Name) - if err == nil { - t.Errorf("GetIntegerValue(%q) succeeded. Returns type=%d value=%v", test.Name, valType, value) - } - case registry.MULTI_SZ: - value, valType, err := k.GetStringsValue(test.Name) - if err == nil { - if len(value) != 0 { - t.Errorf("GetStringsValue(%q) succeeded. Returns type=%d value=%v", test.Name, valType, value) - } - } - default: - t.Errorf("unsupported type %d for %s value", test.Type, test.Name) - } - } -} - -func TestGetMUIStringValue(t *testing.T) { - if err := registry.LoadRegLoadMUIString(); err != nil { - t.Skip("regLoadMUIString not supported; skipping") - } - if err := procGetDynamicTimeZoneInformation.Find(); err != nil { - t.Skipf("%s not supported; skipping", procGetDynamicTimeZoneInformation.Name) - } - var dtzi DynamicTimezoneinformation - if _, err := GetDynamicTimeZoneInformation(&dtzi); err != nil { - t.Fatal(err) - } - tzKeyName := syscall.UTF16ToString(dtzi.TimeZoneKeyName[:]) - timezoneK, err := registry.OpenKey(registry.LOCAL_MACHINE, - `SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\`+tzKeyName, registry.READ) - if err != nil { - t.Fatal(err) - } - defer timezoneK.Close() - - type testType struct { - name string - want string - } - var tests = []testType{ - {"MUI_Std", syscall.UTF16ToString(dtzi.StandardName[:])}, - } - if dtzi.DynamicDaylightTimeDisabled == 0 { - tests = append(tests, testType{"MUI_Dlt", syscall.UTF16ToString(dtzi.DaylightName[:])}) - } - - for _, test := range tests { - got, err := timezoneK.GetMUIStringValue(test.name) - if err != nil { - t.Error("GetMUIStringValue:", err) - } - - if got != test.want { - t.Errorf("GetMUIStringValue: %s: Got %q, want %q", test.name, got, test.want) - } - } -} - -type DynamicTimezoneinformation struct { - Bias int32 - StandardName [32]uint16 - StandardDate syscall.Systemtime - StandardBias int32 - DaylightName [32]uint16 - DaylightDate syscall.Systemtime - DaylightBias int32 - TimeZoneKeyName [128]uint16 - DynamicDaylightTimeDisabled uint8 -} - -var ( - kernel32DLL = syscall.NewLazyDLL("kernel32") - - procGetDynamicTimeZoneInformation = kernel32DLL.NewProc("GetDynamicTimeZoneInformation") -) - -func GetDynamicTimeZoneInformation(dtzi *DynamicTimezoneinformation) (rc uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetDynamicTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(dtzi)), 0, 0) - rc = uint32(r0) - if rc == 0xffffffff { - if e1 != 0 { - err = error(e1) - } else { - err = syscall.EINVAL - } - } - return -} diff --git a/vendor/golang.org/x/sys/windows/registry/syscall.go b/vendor/golang.org/x/sys/windows/registry/syscall.go deleted file mode 100644 index e66643cb..00000000 --- a/vendor/golang.org/x/sys/windows/registry/syscall.go +++ /dev/null @@ -1,32 +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. - -// +build windows - -package registry - -import "syscall" - -const ( - _REG_OPTION_NON_VOLATILE = 0 - - _REG_CREATED_NEW_KEY = 1 - _REG_OPENED_EXISTING_KEY = 2 - - _ERROR_NO_MORE_ITEMS syscall.Errno = 259 -) - -func LoadRegLoadMUIString() error { - return procRegLoadMUIStringW.Find() -} - -//sys regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW -//sys regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW -//sys regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW -//sys regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegEnumValueW -//sys regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) = advapi32.RegDeleteValueW -//sys regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) = advapi32.RegLoadMUIStringW -//sys regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) = advapi32.RegConnectRegistryW - -//sys expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW diff --git a/vendor/golang.org/x/sys/windows/registry/value.go b/vendor/golang.org/x/sys/windows/registry/value.go deleted file mode 100644 index 71d4e15b..00000000 --- a/vendor/golang.org/x/sys/windows/registry/value.go +++ /dev/null @@ -1,384 +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. - -// +build windows - -package registry - -import ( - "errors" - "io" - "syscall" - "unicode/utf16" - "unsafe" -) - -const ( - // Registry value types. - NONE = 0 - SZ = 1 - EXPAND_SZ = 2 - BINARY = 3 - DWORD = 4 - DWORD_BIG_ENDIAN = 5 - LINK = 6 - MULTI_SZ = 7 - RESOURCE_LIST = 8 - FULL_RESOURCE_DESCRIPTOR = 9 - RESOURCE_REQUIREMENTS_LIST = 10 - QWORD = 11 -) - -var ( - // ErrShortBuffer is returned when the buffer was too short for the operation. - ErrShortBuffer = syscall.ERROR_MORE_DATA - - // ErrNotExist is returned when a registry key or value does not exist. - ErrNotExist = syscall.ERROR_FILE_NOT_FOUND - - // ErrUnexpectedType is returned by Get*Value when the value's type was unexpected. - ErrUnexpectedType = errors.New("unexpected key value type") -) - -// GetValue retrieves the type and data for the specified value associated -// with an open key k. It fills up buffer buf and returns the retrieved -// byte count n. If buf is too small to fit the stored value it returns -// ErrShortBuffer error along with the required buffer size n. -// If no buffer is provided, it returns true and actual buffer size n. -// If no buffer is provided, GetValue returns the value's type only. -// If the value does not exist, the error returned is ErrNotExist. -// -// GetValue is a low level function. If value's type is known, use the appropriate -// Get*Value function instead. -func (k Key) GetValue(name string, buf []byte) (n int, valtype uint32, err error) { - pname, err := syscall.UTF16PtrFromString(name) - if err != nil { - return 0, 0, err - } - var pbuf *byte - if len(buf) > 0 { - pbuf = (*byte)(unsafe.Pointer(&buf[0])) - } - l := uint32(len(buf)) - err = syscall.RegQueryValueEx(syscall.Handle(k), pname, nil, &valtype, pbuf, &l) - if err != nil { - return int(l), valtype, err - } - return int(l), valtype, nil -} - -func (k Key) getValue(name string, buf []byte) (date []byte, valtype uint32, err error) { - p, err := syscall.UTF16PtrFromString(name) - if err != nil { - return nil, 0, err - } - var t uint32 - n := uint32(len(buf)) - for { - err = syscall.RegQueryValueEx(syscall.Handle(k), p, nil, &t, (*byte)(unsafe.Pointer(&buf[0])), &n) - if err == nil { - return buf[:n], t, nil - } - if err != syscall.ERROR_MORE_DATA { - return nil, 0, err - } - if n <= uint32(len(buf)) { - return nil, 0, err - } - buf = make([]byte, n) - } -} - -// GetStringValue retrieves the string value for the specified -// value name associated with an open key k. It also returns the value's type. -// If value does not exist, GetStringValue returns ErrNotExist. -// If value is not SZ or EXPAND_SZ, it will return the correct value -// type and ErrUnexpectedType. -func (k Key) GetStringValue(name string) (val string, valtype uint32, err error) { - data, typ, err2 := k.getValue(name, make([]byte, 64)) - if err2 != nil { - return "", typ, err2 - } - switch typ { - case SZ, EXPAND_SZ: - default: - return "", typ, ErrUnexpectedType - } - if len(data) == 0 { - return "", typ, nil - } - u := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[:] - return syscall.UTF16ToString(u), typ, nil -} - -// GetMUIStringValue retrieves the localized string value for -// the specified value name associated with an open key k. -// If the value name doesn't exist or the localized string value -// can't be resolved, GetMUIStringValue returns ErrNotExist. -// GetMUIStringValue panics if the system doesn't support -// regLoadMUIString; use LoadRegLoadMUIString to check if -// regLoadMUIString is supported before calling this function. -func (k Key) GetMUIStringValue(name string) (string, error) { - pname, err := syscall.UTF16PtrFromString(name) - if err != nil { - return "", err - } - - buf := make([]uint16, 1024) - var buflen uint32 - var pdir *uint16 - - err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir) - if err == syscall.ERROR_FILE_NOT_FOUND { // Try fallback path - - // Try to resolve the string value using the system directory as - // a DLL search path; this assumes the string value is of the form - // @[path]\dllname,-strID but with no path given, e.g. @tzres.dll,-320. - - // This approach works with tzres.dll but may have to be revised - // in the future to allow callers to provide custom search paths. - - var s string - s, err = ExpandString("%SystemRoot%\\system32\\") - if err != nil { - return "", err - } - pdir, err = syscall.UTF16PtrFromString(s) - if err != nil { - return "", err - } - - err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir) - } - - for err == syscall.ERROR_MORE_DATA { // Grow buffer if needed - if buflen <= uint32(len(buf)) { - break // Buffer not growing, assume race; break - } - buf = make([]uint16, buflen) - err = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir) - } - - if err != nil { - return "", err - } - - return syscall.UTF16ToString(buf), nil -} - -// ExpandString expands environment-variable strings and replaces -// them with the values defined for the current user. -// Use ExpandString to expand EXPAND_SZ strings. -func ExpandString(value string) (string, error) { - if value == "" { - return "", nil - } - p, err := syscall.UTF16PtrFromString(value) - if err != nil { - return "", err - } - r := make([]uint16, 100) - for { - n, err := expandEnvironmentStrings(p, &r[0], uint32(len(r))) - if err != nil { - return "", err - } - if n <= uint32(len(r)) { - u := (*[1 << 29]uint16)(unsafe.Pointer(&r[0]))[:] - return syscall.UTF16ToString(u), nil - } - r = make([]uint16, n) - } -} - -// GetStringsValue retrieves the []string value for the specified -// value name associated with an open key k. It also returns the value's type. -// If value does not exist, GetStringsValue returns ErrNotExist. -// If value is not MULTI_SZ, it will return the correct value -// type and ErrUnexpectedType. -func (k Key) GetStringsValue(name string) (val []string, valtype uint32, err error) { - data, typ, err2 := k.getValue(name, make([]byte, 64)) - if err2 != nil { - return nil, typ, err2 - } - if typ != MULTI_SZ { - return nil, typ, ErrUnexpectedType - } - if len(data) == 0 { - return nil, typ, nil - } - p := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[:len(data)/2] - if len(p) == 0 { - return nil, typ, nil - } - if p[len(p)-1] == 0 { - p = p[:len(p)-1] // remove terminating null - } - val = make([]string, 0, 5) - from := 0 - for i, c := range p { - if c == 0 { - val = append(val, string(utf16.Decode(p[from:i]))) - from = i + 1 - } - } - return val, typ, nil -} - -// GetIntegerValue retrieves the integer value for the specified -// value name associated with an open key k. It also returns the value's type. -// If value does not exist, GetIntegerValue returns ErrNotExist. -// If value is not DWORD or QWORD, it will return the correct value -// type and ErrUnexpectedType. -func (k Key) GetIntegerValue(name string) (val uint64, valtype uint32, err error) { - data, typ, err2 := k.getValue(name, make([]byte, 8)) - if err2 != nil { - return 0, typ, err2 - } - switch typ { - case DWORD: - if len(data) != 4 { - return 0, typ, errors.New("DWORD value is not 4 bytes long") - } - return uint64(*(*uint32)(unsafe.Pointer(&data[0]))), DWORD, nil - case QWORD: - if len(data) != 8 { - return 0, typ, errors.New("QWORD value is not 8 bytes long") - } - return uint64(*(*uint64)(unsafe.Pointer(&data[0]))), QWORD, nil - default: - return 0, typ, ErrUnexpectedType - } -} - -// GetBinaryValue retrieves the binary value for the specified -// value name associated with an open key k. It also returns the value's type. -// If value does not exist, GetBinaryValue returns ErrNotExist. -// If value is not BINARY, it will return the correct value -// type and ErrUnexpectedType. -func (k Key) GetBinaryValue(name string) (val []byte, valtype uint32, err error) { - data, typ, err2 := k.getValue(name, make([]byte, 64)) - if err2 != nil { - return nil, typ, err2 - } - if typ != BINARY { - return nil, typ, ErrUnexpectedType - } - return data, typ, nil -} - -func (k Key) setValue(name string, valtype uint32, data []byte) error { - p, err := syscall.UTF16PtrFromString(name) - if err != nil { - return err - } - if len(data) == 0 { - return regSetValueEx(syscall.Handle(k), p, 0, valtype, nil, 0) - } - return regSetValueEx(syscall.Handle(k), p, 0, valtype, &data[0], uint32(len(data))) -} - -// SetDWordValue sets the data and type of a name value -// under key k to value and DWORD. -func (k Key) SetDWordValue(name string, value uint32) error { - return k.setValue(name, DWORD, (*[4]byte)(unsafe.Pointer(&value))[:]) -} - -// SetQWordValue sets the data and type of a name value -// under key k to value and QWORD. -func (k Key) SetQWordValue(name string, value uint64) error { - return k.setValue(name, QWORD, (*[8]byte)(unsafe.Pointer(&value))[:]) -} - -func (k Key) setStringValue(name string, valtype uint32, value string) error { - v, err := syscall.UTF16FromString(value) - if err != nil { - return err - } - buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[:len(v)*2] - return k.setValue(name, valtype, buf) -} - -// SetStringValue sets the data and type of a name value -// under key k to value and SZ. The value must not contain a zero byte. -func (k Key) SetStringValue(name, value string) error { - return k.setStringValue(name, SZ, value) -} - -// SetExpandStringValue sets the data and type of a name value -// under key k to value and EXPAND_SZ. The value must not contain a zero byte. -func (k Key) SetExpandStringValue(name, value string) error { - return k.setStringValue(name, EXPAND_SZ, value) -} - -// SetStringsValue sets the data and type of a name value -// under key k to value and MULTI_SZ. The value strings -// must not contain a zero byte. -func (k Key) SetStringsValue(name string, value []string) error { - ss := "" - for _, s := range value { - for i := 0; i < len(s); i++ { - if s[i] == 0 { - return errors.New("string cannot have 0 inside") - } - } - ss += s + "\x00" - } - v := utf16.Encode([]rune(ss + "\x00")) - buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[:len(v)*2] - return k.setValue(name, MULTI_SZ, buf) -} - -// SetBinaryValue sets the data and type of a name value -// under key k to value and BINARY. -func (k Key) SetBinaryValue(name string, value []byte) error { - return k.setValue(name, BINARY, value) -} - -// DeleteValue removes a named value from the key k. -func (k Key) DeleteValue(name string) error { - return regDeleteValue(syscall.Handle(k), syscall.StringToUTF16Ptr(name)) -} - -// ReadValueNames returns the value names of key k. -// The parameter n controls the number of returned names, -// analogous to the way os.File.Readdirnames works. -func (k Key) ReadValueNames(n int) ([]string, error) { - ki, err := k.Stat() - if err != nil { - return nil, err - } - names := make([]string, 0, ki.ValueCount) - buf := make([]uint16, ki.MaxValueNameLen+1) // extra room for terminating null character -loopItems: - for i := uint32(0); ; i++ { - if n > 0 { - if len(names) == n { - return names, nil - } - } - l := uint32(len(buf)) - for { - err := regEnumValue(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil) - if err == nil { - break - } - if err == syscall.ERROR_MORE_DATA { - // Double buffer size and try again. - l = uint32(2 * len(buf)) - buf = make([]uint16, l) - continue - } - if err == _ERROR_NO_MORE_ITEMS { - break loopItems - } - return names, err - } - names = append(names, syscall.UTF16ToString(buf[:l])) - } - if n > len(names) { - return names, io.EOF - } - return names, nil -} diff --git a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go deleted file mode 100644 index ceebdd77..00000000 --- a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go +++ /dev/null @@ -1,120 +0,0 @@ -// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT - -package registry - -import ( - "syscall" - "unsafe" - - "golang.org/x/sys/windows" -) - -var _ unsafe.Pointer - -// Do the interface allocations only once for common -// Errno values. -const ( - errnoERROR_IO_PENDING = 997 -) - -var ( - errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) -) - -// errnoErr returns common boxed Errno values, to prevent -// allocations at runtime. -func errnoErr(e syscall.Errno) error { - switch e { - case 0: - return nil - case errnoERROR_IO_PENDING: - return errERROR_IO_PENDING - } - // TODO: add more here, after collecting data on the common - // error values see on Windows. (perhaps when running - // all.bat?) - return e -} - -var ( - modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") - modkernel32 = windows.NewLazySystemDLL("kernel32.dll") - - procRegCreateKeyExW = modadvapi32.NewProc("RegCreateKeyExW") - procRegDeleteKeyW = modadvapi32.NewProc("RegDeleteKeyW") - procRegSetValueExW = modadvapi32.NewProc("RegSetValueExW") - procRegEnumValueW = modadvapi32.NewProc("RegEnumValueW") - procRegDeleteValueW = modadvapi32.NewProc("RegDeleteValueW") - procRegLoadMUIStringW = modadvapi32.NewProc("RegLoadMUIStringW") - procRegConnectRegistryW = modadvapi32.NewProc("RegConnectRegistryW") - procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW") -) - -func regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) { - r0, _, _ := syscall.Syscall9(procRegCreateKeyExW.Addr(), 9, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition))) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) { - r0, _, _ := syscall.Syscall(procRegDeleteKeyW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(subkey)), 0) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) { - r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize)) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { - r0, _, _ := syscall.Syscall9(procRegEnumValueW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)), 0) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) { - r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) { - r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) { - r0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result))) - if r0 != 0 { - regerrno = syscall.Errno(r0) - } - return -} - -func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) - n = uint32(r0) - if n == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} diff --git a/vendor/golang.org/x/sys/windows/svc/debug/log.go b/vendor/golang.org/x/sys/windows/svc/debug/log.go deleted file mode 100644 index e51ab42a..00000000 --- a/vendor/golang.org/x/sys/windows/svc/debug/log.go +++ /dev/null @@ -1,56 +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. - -// +build windows - -package debug - -import ( - "os" - "strconv" -) - -// Log interface allows different log implementations to be used. -type Log interface { - Close() error - Info(eid uint32, msg string) error - Warning(eid uint32, msg string) error - Error(eid uint32, msg string) error -} - -// ConsoleLog provides access to the console. -type ConsoleLog struct { - Name string -} - -// New creates new ConsoleLog. -func New(source string) *ConsoleLog { - return &ConsoleLog{Name: source} -} - -// Close closes console log l. -func (l *ConsoleLog) Close() error { - return nil -} - -func (l *ConsoleLog) report(kind string, eid uint32, msg string) error { - s := l.Name + "." + kind + "(" + strconv.Itoa(int(eid)) + "): " + msg + "\n" - _, err := os.Stdout.Write([]byte(s)) - return err -} - -// Info writes an information event msg with event id eid to the console l. -func (l *ConsoleLog) Info(eid uint32, msg string) error { - return l.report("info", eid, msg) -} - -// Warning writes an warning event msg with event id eid to the console l. -func (l *ConsoleLog) Warning(eid uint32, msg string) error { - return l.report("warn", eid, msg) -} - -// Error writes an error event msg with event id eid to the console l. -func (l *ConsoleLog) Error(eid uint32, msg string) error { - return l.report("error", eid, msg) -} diff --git a/vendor/golang.org/x/sys/windows/svc/debug/service.go b/vendor/golang.org/x/sys/windows/svc/debug/service.go deleted file mode 100644 index 123df989..00000000 --- a/vendor/golang.org/x/sys/windows/svc/debug/service.go +++ /dev/null @@ -1,45 +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. - -// +build windows - -// Package debug provides facilities to execute svc.Handler on console. -// -package debug - -import ( - "os" - "os/signal" - "syscall" - - "golang.org/x/sys/windows/svc" -) - -// Run executes service name by calling appropriate handler function. -// The process is running on console, unlike real service. Use Ctrl+C to -// send "Stop" command to your service. -func Run(name string, handler svc.Handler) error { - cmds := make(chan svc.ChangeRequest) - changes := make(chan svc.Status) - - sig := make(chan os.Signal) - signal.Notify(sig) - - go func() { - status := svc.Status{State: svc.Stopped} - for { - select { - case <-sig: - cmds <- svc.ChangeRequest{svc.Stop, 0, 0, status} - case status = <-changes: - } - } - }() - - _, errno := handler.Execute([]string{name}, cmds, changes) - if errno != 0 { - return syscall.Errno(errno) - } - return nil -} diff --git a/vendor/golang.org/x/sys/windows/svc/event.go b/vendor/golang.org/x/sys/windows/svc/event.go deleted file mode 100644 index 0508e228..00000000 --- a/vendor/golang.org/x/sys/windows/svc/event.go +++ /dev/null @@ -1,48 +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. - -// +build windows - -package svc - -import ( - "errors" - - "golang.org/x/sys/windows" -) - -// event represents auto-reset, initially non-signaled Windows event. -// It is used to communicate between go and asm parts of this package. -type event struct { - h windows.Handle -} - -func newEvent() (*event, error) { - h, err := windows.CreateEvent(nil, 0, 0, nil) - if err != nil { - return nil, err - } - return &event{h: h}, nil -} - -func (e *event) Close() error { - return windows.CloseHandle(e.h) -} - -func (e *event) Set() error { - return windows.SetEvent(e.h) -} - -func (e *event) Wait() error { - s, err := windows.WaitForSingleObject(e.h, windows.INFINITE) - switch s { - case windows.WAIT_OBJECT_0: - break - case windows.WAIT_FAILED: - return err - default: - return errors.New("unexpected result from WaitForSingleObject") - } - return nil -} diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/install.go b/vendor/golang.org/x/sys/windows/svc/eventlog/install.go deleted file mode 100644 index c76a3760..00000000 --- a/vendor/golang.org/x/sys/windows/svc/eventlog/install.go +++ /dev/null @@ -1,80 +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. - -// +build windows - -package eventlog - -import ( - "errors" - - "golang.org/x/sys/windows" - "golang.org/x/sys/windows/registry" -) - -const ( - // Log levels. - Info = windows.EVENTLOG_INFORMATION_TYPE - Warning = windows.EVENTLOG_WARNING_TYPE - Error = windows.EVENTLOG_ERROR_TYPE -) - -const addKeyName = `SYSTEM\CurrentControlSet\Services\EventLog\Application` - -// Install modifies PC registry to allow logging with an event source src. -// It adds all required keys and values to the event log registry key. -// Install uses msgFile as the event message file. If useExpandKey is true, -// the event message file is installed as REG_EXPAND_SZ value, -// otherwise as REG_SZ. Use bitwise of log.Error, log.Warning and -// log.Info to specify events supported by the new event source. -func Install(src, msgFile string, useExpandKey bool, eventsSupported uint32) error { - appkey, err := registry.OpenKey(registry.LOCAL_MACHINE, addKeyName, registry.CREATE_SUB_KEY) - if err != nil { - return err - } - defer appkey.Close() - - sk, alreadyExist, err := registry.CreateKey(appkey, src, registry.SET_VALUE) - if err != nil { - return err - } - defer sk.Close() - if alreadyExist { - return errors.New(addKeyName + `\` + src + " registry key already exists") - } - - err = sk.SetDWordValue("CustomSource", 1) - if err != nil { - return err - } - if useExpandKey { - err = sk.SetExpandStringValue("EventMessageFile", msgFile) - } else { - err = sk.SetStringValue("EventMessageFile", msgFile) - } - if err != nil { - return err - } - err = sk.SetDWordValue("TypesSupported", eventsSupported) - if err != nil { - return err - } - return nil -} - -// InstallAsEventCreate is the same as Install, but uses -// %SystemRoot%\System32\EventCreate.exe as the event message file. -func InstallAsEventCreate(src string, eventsSupported uint32) error { - return Install(src, "%SystemRoot%\\System32\\EventCreate.exe", true, eventsSupported) -} - -// Remove deletes all registry elements installed by the correspondent Install. -func Remove(src string) error { - appkey, err := registry.OpenKey(registry.LOCAL_MACHINE, addKeyName, registry.SET_VALUE) - if err != nil { - return err - } - defer appkey.Close() - return registry.DeleteKey(appkey, src) -} diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/log.go b/vendor/golang.org/x/sys/windows/svc/eventlog/log.go deleted file mode 100644 index 46e5153d..00000000 --- a/vendor/golang.org/x/sys/windows/svc/eventlog/log.go +++ /dev/null @@ -1,70 +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. - -// +build windows - -// Package eventlog implements access to Windows event log. -// -package eventlog - -import ( - "errors" - "syscall" - - "golang.org/x/sys/windows" -) - -// Log provides access to the system log. -type Log struct { - Handle windows.Handle -} - -// Open retrieves a handle to the specified event log. -func Open(source string) (*Log, error) { - return OpenRemote("", source) -} - -// OpenRemote does the same as Open, but on different computer host. -func OpenRemote(host, source string) (*Log, error) { - if source == "" { - return nil, errors.New("Specify event log source") - } - var s *uint16 - if host != "" { - s = syscall.StringToUTF16Ptr(host) - } - h, err := windows.RegisterEventSource(s, syscall.StringToUTF16Ptr(source)) - if err != nil { - return nil, err - } - return &Log{Handle: h}, nil -} - -// Close closes event log l. -func (l *Log) Close() error { - return windows.DeregisterEventSource(l.Handle) -} - -func (l *Log) report(etype uint16, eid uint32, msg string) error { - ss := []*uint16{syscall.StringToUTF16Ptr(msg)} - return windows.ReportEvent(l.Handle, etype, 0, eid, 0, 1, 0, &ss[0], nil) -} - -// Info writes an information event msg with event id eid to the end of event log l. -// When EventCreate.exe is used, eid must be between 1 and 1000. -func (l *Log) Info(eid uint32, msg string) error { - return l.report(windows.EVENTLOG_INFORMATION_TYPE, eid, msg) -} - -// Warning writes an warning event msg with event id eid to the end of event log l. -// When EventCreate.exe is used, eid must be between 1 and 1000. -func (l *Log) Warning(eid uint32, msg string) error { - return l.report(windows.EVENTLOG_WARNING_TYPE, eid, msg) -} - -// Error writes an error event msg with event id eid to the end of event log l. -// When EventCreate.exe is used, eid must be between 1 and 1000. -func (l *Log) Error(eid uint32, msg string) error { - return l.report(windows.EVENTLOG_ERROR_TYPE, eid, msg) -} diff --git a/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go b/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go deleted file mode 100644 index 6fbbd4a8..00000000 --- a/vendor/golang.org/x/sys/windows/svc/eventlog/log_test.go +++ /dev/null @@ -1,51 +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. - -// +build windows - -package eventlog_test - -import ( - "testing" - - "golang.org/x/sys/windows/svc/eventlog" -) - -func TestLog(t *testing.T) { - if testing.Short() { - t.Skip("skipping test in short mode - it modifies system logs") - } - - const name = "mylog" - const supports = eventlog.Error | eventlog.Warning | eventlog.Info - err := eventlog.InstallAsEventCreate(name, supports) - if err != nil { - t.Fatalf("Install failed: %s", err) - } - defer func() { - err = eventlog.Remove(name) - if err != nil { - t.Fatalf("Remove failed: %s", err) - } - }() - - l, err := eventlog.Open(name) - if err != nil { - t.Fatalf("Open failed: %s", err) - } - defer l.Close() - - err = l.Info(1, "info") - if err != nil { - t.Fatalf("Info failed: %s", err) - } - err = l.Warning(2, "warning") - if err != nil { - t.Fatalf("Warning failed: %s", err) - } - err = l.Error(3, "error") - if err != nil { - t.Fatalf("Error failed: %s", err) - } -} diff --git a/vendor/golang.org/x/sys/windows/svc/example/beep.go b/vendor/golang.org/x/sys/windows/svc/example/beep.go deleted file mode 100644 index dcf23408..00000000 --- a/vendor/golang.org/x/sys/windows/svc/example/beep.go +++ /dev/null @@ -1,22 +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. - -// +build windows - -package main - -import ( - "syscall" -) - -// BUG(brainman): MessageBeep Windows api is broken on Windows 7, -// so this example does not beep when runs as service on Windows 7. - -var ( - beepFunc = syscall.MustLoadDLL("user32.dll").MustFindProc("MessageBeep") -) - -func beep() { - beepFunc.Call(0xffffffff) -} diff --git a/vendor/golang.org/x/sys/windows/svc/example/install.go b/vendor/golang.org/x/sys/windows/svc/example/install.go deleted file mode 100644 index 39cb00d2..00000000 --- a/vendor/golang.org/x/sys/windows/svc/example/install.go +++ /dev/null @@ -1,92 +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. - -// +build windows - -package main - -import ( - "fmt" - "os" - "path/filepath" - - "golang.org/x/sys/windows/svc/eventlog" - "golang.org/x/sys/windows/svc/mgr" -) - -func exePath() (string, error) { - prog := os.Args[0] - p, err := filepath.Abs(prog) - if err != nil { - return "", err - } - fi, err := os.Stat(p) - if err == nil { - if !fi.Mode().IsDir() { - return p, nil - } - err = fmt.Errorf("%s is directory", p) - } - if filepath.Ext(p) == "" { - p += ".exe" - fi, err := os.Stat(p) - if err == nil { - if !fi.Mode().IsDir() { - return p, nil - } - err = fmt.Errorf("%s is directory", p) - } - } - return "", err -} - -func installService(name, desc string) error { - exepath, err := exePath() - if err != nil { - return err - } - m, err := mgr.Connect() - if err != nil { - return err - } - defer m.Disconnect() - s, err := m.OpenService(name) - if err == nil { - s.Close() - return fmt.Errorf("service %s already exists", name) - } - s, err = m.CreateService(name, exepath, mgr.Config{DisplayName: desc}, "is", "auto-started") - if err != nil { - return err - } - defer s.Close() - err = eventlog.InstallAsEventCreate(name, eventlog.Error|eventlog.Warning|eventlog.Info) - if err != nil { - s.Delete() - return fmt.Errorf("SetupEventLogSource() failed: %s", err) - } - return nil -} - -func removeService(name string) error { - m, err := mgr.Connect() - if err != nil { - return err - } - defer m.Disconnect() - s, err := m.OpenService(name) - if err != nil { - return fmt.Errorf("service %s is not installed", name) - } - defer s.Close() - err = s.Delete() - if err != nil { - return err - } - err = eventlog.Remove(name) - if err != nil { - return fmt.Errorf("RemoveEventLogSource() failed: %s", err) - } - return nil -} diff --git a/vendor/golang.org/x/sys/windows/svc/example/main.go b/vendor/golang.org/x/sys/windows/svc/example/main.go deleted file mode 100644 index dc96c081..00000000 --- a/vendor/golang.org/x/sys/windows/svc/example/main.go +++ /dev/null @@ -1,76 +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. - -// +build windows - -// Example service program that beeps. -// -// The program demonstrates how to create Windows service and -// install / remove it on a computer. It also shows how to -// stop / start / pause / continue any service, and how to -// write to event log. It also shows how to use debug -// facilities available in debug package. -// -package main - -import ( - "fmt" - "log" - "os" - "strings" - - "golang.org/x/sys/windows/svc" -) - -func usage(errmsg string) { - fmt.Fprintf(os.Stderr, - "%s\n\n"+ - "usage: %s <command>\n"+ - " where <command> is one of\n"+ - " install, remove, debug, start, stop, pause or continue.\n", - errmsg, os.Args[0]) - os.Exit(2) -} - -func main() { - const svcName = "myservice" - - isIntSess, err := svc.IsAnInteractiveSession() - if err != nil { - log.Fatalf("failed to determine if we are running in an interactive session: %v", err) - } - if !isIntSess { - runService(svcName, false) - return - } - - if len(os.Args) < 2 { - usage("no command specified") - } - - cmd := strings.ToLower(os.Args[1]) - switch cmd { - case "debug": - runService(svcName, true) - return - case "install": - err = installService(svcName, "my service") - case "remove": - err = removeService(svcName) - case "start": - err = startService(svcName) - case "stop": - err = controlService(svcName, svc.Stop, svc.Stopped) - case "pause": - err = controlService(svcName, svc.Pause, svc.Paused) - case "continue": - err = controlService(svcName, svc.Continue, svc.Running) - default: - usage(fmt.Sprintf("invalid command %s", cmd)) - } - if err != nil { - log.Fatalf("failed to %s %s: %v", cmd, svcName, err) - } - return -} diff --git a/vendor/golang.org/x/sys/windows/svc/example/manage.go b/vendor/golang.org/x/sys/windows/svc/example/manage.go deleted file mode 100644 index 782dbd96..00000000 --- a/vendor/golang.org/x/sys/windows/svc/example/manage.go +++ /dev/null @@ -1,62 +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. - -// +build windows - -package main - -import ( - "fmt" - "time" - - "golang.org/x/sys/windows/svc" - "golang.org/x/sys/windows/svc/mgr" -) - -func startService(name string) error { - m, err := mgr.Connect() - if err != nil { - return err - } - defer m.Disconnect() - s, err := m.OpenService(name) - if err != nil { - return fmt.Errorf("could not access service: %v", err) - } - defer s.Close() - err = s.Start("is", "manual-started") - if err != nil { - return fmt.Errorf("could not start service: %v", err) - } - return nil -} - -func controlService(name string, c svc.Cmd, to svc.State) error { - m, err := mgr.Connect() - if err != nil { - return err - } - defer m.Disconnect() - s, err := m.OpenService(name) - if err != nil { - return fmt.Errorf("could not access service: %v", err) - } - defer s.Close() - status, err := s.Control(c) - if err != nil { - return fmt.Errorf("could not send control=%d: %v", c, err) - } - timeout := time.Now().Add(10 * time.Second) - for status.State != to { - if timeout.Before(time.Now()) { - return fmt.Errorf("timeout waiting for service to go to state=%d", to) - } - time.Sleep(300 * time.Millisecond) - status, err = s.Query() - if err != nil { - return fmt.Errorf("could not retrieve service status: %v", err) - } - } - return nil -} diff --git a/vendor/golang.org/x/sys/windows/svc/example/service.go b/vendor/golang.org/x/sys/windows/svc/example/service.go deleted file mode 100644 index 237e8098..00000000 --- a/vendor/golang.org/x/sys/windows/svc/example/service.go +++ /dev/null @@ -1,82 +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. - -// +build windows - -package main - -import ( - "fmt" - "time" - - "golang.org/x/sys/windows/svc" - "golang.org/x/sys/windows/svc/debug" - "golang.org/x/sys/windows/svc/eventlog" -) - -var elog debug.Log - -type myservice struct{} - -func (m *myservice) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (ssec bool, errno uint32) { - const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown | svc.AcceptPauseAndContinue - changes <- svc.Status{State: svc.StartPending} - fasttick := time.Tick(500 * time.Millisecond) - slowtick := time.Tick(2 * time.Second) - tick := fasttick - changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted} -loop: - for { - select { - case <-tick: - beep() - elog.Info(1, "beep") - case c := <-r: - switch c.Cmd { - case svc.Interrogate: - changes <- c.CurrentStatus - // Testing deadlock from https://code.google.com/p/winsvc/issues/detail?id=4 - time.Sleep(100 * time.Millisecond) - changes <- c.CurrentStatus - case svc.Stop, svc.Shutdown: - break loop - case svc.Pause: - changes <- svc.Status{State: svc.Paused, Accepts: cmdsAccepted} - tick = slowtick - case svc.Continue: - changes <- svc.Status{State: svc.Running, Accepts: cmdsAccepted} - tick = fasttick - default: - elog.Error(1, fmt.Sprintf("unexpected control request #%d", c)) - } - } - } - changes <- svc.Status{State: svc.StopPending} - return -} - -func runService(name string, isDebug bool) { - var err error - if isDebug { - elog = debug.New(name) - } else { - elog, err = eventlog.Open(name) - if err != nil { - return - } - } - defer elog.Close() - - elog.Info(1, fmt.Sprintf("starting %s service", name)) - run := svc.Run - if isDebug { - run = debug.Run - } - err = run(name, &myservice{}) - if err != nil { - elog.Error(1, fmt.Sprintf("%s service failed: %v", name, err)) - return - } - elog.Info(1, fmt.Sprintf("%s service stopped", name)) -} diff --git a/vendor/golang.org/x/sys/windows/svc/go12.c b/vendor/golang.org/x/sys/windows/svc/go12.c deleted file mode 100644 index 6f1be1fa..00000000 --- a/vendor/golang.org/x/sys/windows/svc/go12.c +++ /dev/null @@ -1,24 +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. - -// +build windows -// +build !go1.3 - -// copied from pkg/runtime -typedef unsigned int uint32; -typedef unsigned long long int uint64; -#ifdef _64BIT -typedef uint64 uintptr; -#else -typedef uint32 uintptr; -#endif - -// from sys_386.s or sys_amd64.s -void ·servicemain(void); - -void -·getServiceMain(uintptr *r) -{ - *r = (uintptr)·servicemain; -} diff --git a/vendor/golang.org/x/sys/windows/svc/go12.go b/vendor/golang.org/x/sys/windows/svc/go12.go deleted file mode 100644 index cd8b913c..00000000 --- a/vendor/golang.org/x/sys/windows/svc/go12.go +++ /dev/null @@ -1,11 +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. - -// +build windows -// +build !go1.3 - -package svc - -// from go12.c -func getServiceMain(r *uintptr) diff --git a/vendor/golang.org/x/sys/windows/svc/go13.go b/vendor/golang.org/x/sys/windows/svc/go13.go deleted file mode 100644 index 9d7f3cec..00000000 --- a/vendor/golang.org/x/sys/windows/svc/go13.go +++ /dev/null @@ -1,31 +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. - -// +build windows -// +build go1.3 - -package svc - -import "unsafe" - -const ptrSize = 4 << (^uintptr(0) >> 63) // unsafe.Sizeof(uintptr(0)) but an ideal const - -// Should be a built-in for unsafe.Pointer? -func add(p unsafe.Pointer, x uintptr) unsafe.Pointer { - return unsafe.Pointer(uintptr(p) + x) -} - -// funcPC returns the entry PC of the function f. -// It assumes that f is a func value. Otherwise the behavior is undefined. -func funcPC(f interface{}) uintptr { - return **(**uintptr)(add(unsafe.Pointer(&f), ptrSize)) -} - -// from sys_386.s and sys_amd64.s -func servicectlhandler(ctl uint32) uintptr -func servicemain(argc uint32, argv **uint16) - -func getServiceMain(r *uintptr) { - *r = funcPC(servicemain) -} diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/config.go b/vendor/golang.org/x/sys/windows/svc/mgr/config.go deleted file mode 100644 index 0a6edba4..00000000 --- a/vendor/golang.org/x/sys/windows/svc/mgr/config.go +++ /dev/null @@ -1,139 +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. - -// +build windows - -package mgr - -import ( - "syscall" - "unicode/utf16" - "unsafe" - - "golang.org/x/sys/windows" -) - -const ( - // Service start types. - StartManual = windows.SERVICE_DEMAND_START // the service must be started manually - StartAutomatic = windows.SERVICE_AUTO_START // the service will start by itself whenever the computer reboots - StartDisabled = windows.SERVICE_DISABLED // the service cannot be started - - // The severity of the error, and action taken, - // if this service fails to start. - ErrorCritical = windows.SERVICE_ERROR_CRITICAL - ErrorIgnore = windows.SERVICE_ERROR_IGNORE - ErrorNormal = windows.SERVICE_ERROR_NORMAL - ErrorSevere = windows.SERVICE_ERROR_SEVERE -) - -// TODO(brainman): Password is not returned by windows.QueryServiceConfig, not sure how to get it. - -type Config struct { - ServiceType uint32 - StartType uint32 - ErrorControl uint32 - BinaryPathName string // fully qualified path to the service binary file, can also include arguments for an auto-start service - LoadOrderGroup string - TagId uint32 - Dependencies []string - ServiceStartName string // name of the account under which the service should run - DisplayName string - Password string - Description string -} - -func toString(p *uint16) string { - if p == nil { - return "" - } - return syscall.UTF16ToString((*[4096]uint16)(unsafe.Pointer(p))[:]) -} - -func toStringSlice(ps *uint16) []string { - if ps == nil { - return nil - } - r := make([]string, 0) - for from, i, p := 0, 0, (*[1 << 24]uint16)(unsafe.Pointer(ps)); true; i++ { - if p[i] == 0 { - // empty string marks the end - if i <= from { - break - } - r = append(r, string(utf16.Decode(p[from:i]))) - from = i + 1 - } - } - return r -} - -// Config retrieves service s configuration paramteres. -func (s *Service) Config() (Config, error) { - var p *windows.QUERY_SERVICE_CONFIG - n := uint32(1024) - for { - b := make([]byte, n) - p = (*windows.QUERY_SERVICE_CONFIG)(unsafe.Pointer(&b[0])) - err := windows.QueryServiceConfig(s.Handle, p, n, &n) - if err == nil { - break - } - if err.(syscall.Errno) != syscall.ERROR_INSUFFICIENT_BUFFER { - return Config{}, err - } - if n <= uint32(len(b)) { - return Config{}, err - } - } - - var p2 *windows.SERVICE_DESCRIPTION - n = uint32(1024) - for { - b := make([]byte, n) - p2 = (*windows.SERVICE_DESCRIPTION)(unsafe.Pointer(&b[0])) - err := windows.QueryServiceConfig2(s.Handle, - windows.SERVICE_CONFIG_DESCRIPTION, &b[0], n, &n) - if err == nil { - break - } - if err.(syscall.Errno) != syscall.ERROR_INSUFFICIENT_BUFFER { - return Config{}, err - } - if n <= uint32(len(b)) { - return Config{}, err - } - } - - return Config{ - ServiceType: p.ServiceType, - StartType: p.StartType, - ErrorControl: p.ErrorControl, - BinaryPathName: toString(p.BinaryPathName), - LoadOrderGroup: toString(p.LoadOrderGroup), - TagId: p.TagId, - Dependencies: toStringSlice(p.Dependencies), - ServiceStartName: toString(p.ServiceStartName), - DisplayName: toString(p.DisplayName), - Description: toString(p2.Description), - }, nil -} - -func updateDescription(handle windows.Handle, desc string) error { - d := windows.SERVICE_DESCRIPTION{toPtr(desc)} - return windows.ChangeServiceConfig2(handle, - windows.SERVICE_CONFIG_DESCRIPTION, (*byte)(unsafe.Pointer(&d))) -} - -// UpdateConfig updates service s configuration parameters. -func (s *Service) UpdateConfig(c Config) error { - err := windows.ChangeServiceConfig(s.Handle, c.ServiceType, c.StartType, - c.ErrorControl, toPtr(c.BinaryPathName), toPtr(c.LoadOrderGroup), - nil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName), - toPtr(c.Password), toPtr(c.DisplayName)) - if err != nil { - return err - } - return updateDescription(s.Handle, c.Description) -} diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go deleted file mode 100644 index 76965b56..00000000 --- a/vendor/golang.org/x/sys/windows/svc/mgr/mgr.go +++ /dev/null @@ -1,162 +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. - -// +build windows - -// Package mgr can be used to manage Windows service programs. -// It can be used to install and remove them. It can also start, -// stop and pause them. The package can query / change current -// service state and config parameters. -// -package mgr - -import ( - "syscall" - "unicode/utf16" - "unsafe" - - "golang.org/x/sys/windows" -) - -// Mgr is used to manage Windows service. -type Mgr struct { - Handle windows.Handle -} - -// Connect establishes a connection to the service control manager. -func Connect() (*Mgr, error) { - return ConnectRemote("") -} - -// ConnectRemote establishes a connection to the -// service control manager on computer named host. -func ConnectRemote(host string) (*Mgr, error) { - var s *uint16 - if host != "" { - s = syscall.StringToUTF16Ptr(host) - } - h, err := windows.OpenSCManager(s, nil, windows.SC_MANAGER_ALL_ACCESS) - if err != nil { - return nil, err - } - return &Mgr{Handle: h}, nil -} - -// Disconnect closes connection to the service control manager m. -func (m *Mgr) Disconnect() error { - return windows.CloseServiceHandle(m.Handle) -} - -func toPtr(s string) *uint16 { - if len(s) == 0 { - return nil - } - return syscall.StringToUTF16Ptr(s) -} - -// toStringBlock terminates strings in ss with 0, and then -// concatenates them together. It also adds extra 0 at the end. -func toStringBlock(ss []string) *uint16 { - if len(ss) == 0 { - return nil - } - t := "" - for _, s := range ss { - if s != "" { - t += s + "\x00" - } - } - if t == "" { - return nil - } - t += "\x00" - return &utf16.Encode([]rune(t))[0] -} - -// CreateService installs new service name on the system. -// The service will be executed by running exepath binary. -// Use config c to specify service parameters. -// Any args will be passed as command-line arguments when -// the service is started; these arguments are distinct from -// the arguments passed to Service.Start or via the "Start -// parameters" field in the service's Properties dialog box. -func (m *Mgr) CreateService(name, exepath string, c Config, args ...string) (*Service, error) { - if c.StartType == 0 { - c.StartType = StartManual - } - if c.ErrorControl == 0 { - c.ErrorControl = ErrorNormal - } - if c.ServiceType == 0 { - c.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS - } - s := syscall.EscapeArg(exepath) - for _, v := range args { - s += " " + syscall.EscapeArg(v) - } - h, err := windows.CreateService(m.Handle, toPtr(name), toPtr(c.DisplayName), - windows.SERVICE_ALL_ACCESS, c.ServiceType, - c.StartType, c.ErrorControl, toPtr(s), toPtr(c.LoadOrderGroup), - nil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName), toPtr(c.Password)) - if err != nil { - return nil, err - } - if c.Description != "" { - err = updateDescription(h, c.Description) - if err != nil { - return nil, err - } - } - return &Service{Name: name, Handle: h}, nil -} - -// OpenService retrieves access to service name, so it can -// be interrogated and controlled. -func (m *Mgr) OpenService(name string) (*Service, error) { - h, err := windows.OpenService(m.Handle, syscall.StringToUTF16Ptr(name), windows.SERVICE_ALL_ACCESS) - if err != nil { - return nil, err - } - return &Service{Name: name, Handle: h}, nil -} - -// ListServices enumerates services in the specified -// service control manager database m. -// If the caller does not have the SERVICE_QUERY_STATUS -// access right to a service, the service is silently -// omitted from the list of services returned. -func (m *Mgr) ListServices() ([]string, error) { - var err error - var bytesNeeded, servicesReturned uint32 - var buf []byte - for { - var p *byte - if len(buf) > 0 { - p = &buf[0] - } - err = windows.EnumServicesStatusEx(m.Handle, windows.SC_ENUM_PROCESS_INFO, - windows.SERVICE_WIN32, windows.SERVICE_STATE_ALL, - p, uint32(len(buf)), &bytesNeeded, &servicesReturned, nil, nil) - if err == nil { - break - } - if err != syscall.ERROR_MORE_DATA { - return nil, err - } - if bytesNeeded <= uint32(len(buf)) { - return nil, err - } - buf = make([]byte, bytesNeeded) - } - if servicesReturned == 0 { - return nil, nil - } - services := (*[1 << 20]windows.ENUM_SERVICE_STATUS_PROCESS)(unsafe.Pointer(&buf[0]))[:servicesReturned] - var names []string - for _, s := range services { - name := syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(s.ServiceName))[:]) - names = append(names, name) - } - return names, nil -} diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go b/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go deleted file mode 100644 index 1569a221..00000000 --- a/vendor/golang.org/x/sys/windows/svc/mgr/mgr_test.go +++ /dev/null @@ -1,169 +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. - -// +build windows - -package mgr_test - -import ( - "os" - "path/filepath" - "sort" - "strings" - "syscall" - "testing" - "time" - - "golang.org/x/sys/windows/svc/mgr" -) - -func TestOpenLanManServer(t *testing.T) { - m, err := mgr.Connect() - if err != nil { - if errno, ok := err.(syscall.Errno); ok && errno == syscall.ERROR_ACCESS_DENIED { - t.Skip("Skipping test: we don't have rights to manage services.") - } - t.Fatalf("SCM connection failed: %s", err) - } - defer m.Disconnect() - - s, err := m.OpenService("LanmanServer") - if err != nil { - t.Fatalf("OpenService(lanmanserver) failed: %s", err) - } - defer s.Close() - - _, err = s.Config() - if err != nil { - t.Fatalf("Config failed: %s", err) - } -} - -func install(t *testing.T, m *mgr.Mgr, name, exepath string, c mgr.Config) { - // Sometimes it takes a while for the service to get - // removed after previous test run. - for i := 0; ; i++ { - s, err := m.OpenService(name) - if err != nil { - break - } - s.Close() - - if i > 10 { - t.Fatalf("service %s already exists", name) - } - time.Sleep(300 * time.Millisecond) - } - - s, err := m.CreateService(name, exepath, c) - if err != nil { - t.Fatalf("CreateService(%s) failed: %v", name, err) - } - defer s.Close() -} - -func depString(d []string) string { - if len(d) == 0 { - return "" - } - for i := range d { - d[i] = strings.ToLower(d[i]) - } - ss := sort.StringSlice(d) - ss.Sort() - return strings.Join([]string(ss), " ") -} - -func testConfig(t *testing.T, s *mgr.Service, should mgr.Config) mgr.Config { - is, err := s.Config() - if err != nil { - t.Fatalf("Config failed: %s", err) - } - if should.DisplayName != is.DisplayName { - t.Fatalf("config mismatch: DisplayName is %q, but should have %q", is.DisplayName, should.DisplayName) - } - if should.StartType != is.StartType { - t.Fatalf("config mismatch: StartType is %v, but should have %v", is.StartType, should.StartType) - } - if should.Description != is.Description { - t.Fatalf("config mismatch: Description is %q, but should have %q", is.Description, should.Description) - } - if depString(should.Dependencies) != depString(is.Dependencies) { - t.Fatalf("config mismatch: Dependencies is %v, but should have %v", is.Dependencies, should.Dependencies) - } - return is -} - -func remove(t *testing.T, s *mgr.Service) { - err := s.Delete() - if err != nil { - t.Fatalf("Delete failed: %s", err) - } -} - -func TestMyService(t *testing.T) { - if testing.Short() { - t.Skip("skipping test in short mode - it modifies system services") - } - - const name = "myservice" - - m, err := mgr.Connect() - if err != nil { - if errno, ok := err.(syscall.Errno); ok && errno == syscall.ERROR_ACCESS_DENIED { - t.Skip("Skipping test: we don't have rights to manage services.") - } - t.Fatalf("SCM connection failed: %s", err) - } - defer m.Disconnect() - - c := mgr.Config{ - StartType: mgr.StartDisabled, - DisplayName: "my service", - Description: "my service is just a test", - Dependencies: []string{"LanmanServer", "W32Time"}, - } - - exename := os.Args[0] - exepath, err := filepath.Abs(exename) - if err != nil { - t.Fatalf("filepath.Abs(%s) failed: %s", exename, err) - } - - install(t, m, name, exepath, c) - - s, err := m.OpenService(name) - if err != nil { - t.Fatalf("service %s is not installed", name) - } - defer s.Close() - - c.BinaryPathName = exepath - c = testConfig(t, s, c) - - c.StartType = mgr.StartManual - err = s.UpdateConfig(c) - if err != nil { - t.Fatalf("UpdateConfig failed: %v", err) - } - - testConfig(t, s, c) - - svcnames, err := m.ListServices() - if err != nil { - t.Fatalf("ListServices failed: %v", err) - } - var myserviceIsInstalled bool - for _, sn := range svcnames { - if sn == name { - myserviceIsInstalled = true - break - } - } - if !myserviceIsInstalled { - t.Errorf("ListServices failed to find %q service", name) - } - - remove(t, s) -} diff --git a/vendor/golang.org/x/sys/windows/svc/mgr/service.go b/vendor/golang.org/x/sys/windows/svc/mgr/service.go deleted file mode 100644 index fdc46af5..00000000 --- a/vendor/golang.org/x/sys/windows/svc/mgr/service.go +++ /dev/null @@ -1,72 +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. - -// +build windows - -package mgr - -import ( - "syscall" - - "golang.org/x/sys/windows" - "golang.org/x/sys/windows/svc" -) - -// TODO(brainman): Use EnumDependentServices to enumerate dependent services. - -// Service is used to access Windows service. -type Service struct { - Name string - Handle windows.Handle -} - -// Delete marks service s for deletion from the service control manager database. -func (s *Service) Delete() error { - return windows.DeleteService(s.Handle) -} - -// Close relinquish access to the service s. -func (s *Service) Close() error { - return windows.CloseServiceHandle(s.Handle) -} - -// Start starts service s. -// args will be passed to svc.Handler.Execute. -func (s *Service) Start(args ...string) error { - var p **uint16 - if len(args) > 0 { - vs := make([]*uint16, len(args)) - for i := range vs { - vs[i] = syscall.StringToUTF16Ptr(args[i]) - } - p = &vs[0] - } - return windows.StartService(s.Handle, uint32(len(args)), p) -} - -// Control sends state change request c to the servce s. -func (s *Service) Control(c svc.Cmd) (svc.Status, error) { - var t windows.SERVICE_STATUS - err := windows.ControlService(s.Handle, uint32(c), &t) - if err != nil { - return svc.Status{}, err - } - return svc.Status{ - State: svc.State(t.CurrentState), - Accepts: svc.Accepted(t.ControlsAccepted), - }, nil -} - -// Query returns current status of service s. -func (s *Service) Query() (svc.Status, error) { - var t windows.SERVICE_STATUS - err := windows.QueryServiceStatus(s.Handle, &t) - if err != nil { - return svc.Status{}, err - } - return svc.Status{ - State: svc.State(t.CurrentState), - Accepts: svc.Accepted(t.ControlsAccepted), - }, nil -} diff --git a/vendor/golang.org/x/sys/windows/svc/security.go b/vendor/golang.org/x/sys/windows/svc/security.go deleted file mode 100644 index 6fbc9236..00000000 --- a/vendor/golang.org/x/sys/windows/svc/security.go +++ /dev/null @@ -1,62 +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. - -// +build windows - -package svc - -import ( - "unsafe" - - "golang.org/x/sys/windows" -) - -func allocSid(subAuth0 uint32) (*windows.SID, error) { - var sid *windows.SID - err := windows.AllocateAndInitializeSid(&windows.SECURITY_NT_AUTHORITY, - 1, subAuth0, 0, 0, 0, 0, 0, 0, 0, &sid) - if err != nil { - return nil, err - } - return sid, nil -} - -// IsAnInteractiveSession determines if calling process is running interactively. -// It queries the process token for membership in the Interactive group. -// http://stackoverflow.com/questions/2668851/how-do-i-detect-that-my-application-is-running-as-service-or-in-an-interactive-s -func IsAnInteractiveSession() (bool, error) { - interSid, err := allocSid(windows.SECURITY_INTERACTIVE_RID) - if err != nil { - return false, err - } - defer windows.FreeSid(interSid) - - serviceSid, err := allocSid(windows.SECURITY_SERVICE_RID) - if err != nil { - return false, err - } - defer windows.FreeSid(serviceSid) - - t, err := windows.OpenCurrentProcessToken() - if err != nil { - return false, err - } - defer t.Close() - - gs, err := t.GetTokenGroups() - if err != nil { - return false, err - } - p := unsafe.Pointer(&gs.Groups[0]) - groups := (*[2 << 20]windows.SIDAndAttributes)(p)[:gs.GroupCount] - for _, g := range groups { - if windows.EqualSid(g.Sid, interSid) { - return true, nil - } - if windows.EqualSid(g.Sid, serviceSid) { - return false, nil - } - } - return false, nil -} diff --git a/vendor/golang.org/x/sys/windows/svc/service.go b/vendor/golang.org/x/sys/windows/svc/service.go deleted file mode 100644 index 903cba3f..00000000 --- a/vendor/golang.org/x/sys/windows/svc/service.go +++ /dev/null @@ -1,363 +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. - -// +build windows - -// Package svc provides everything required to build Windows service. -// -package svc - -import ( - "errors" - "runtime" - "syscall" - "unsafe" - - "golang.org/x/sys/windows" -) - -// State describes service execution state (Stopped, Running and so on). -type State uint32 - -const ( - Stopped = State(windows.SERVICE_STOPPED) - StartPending = State(windows.SERVICE_START_PENDING) - StopPending = State(windows.SERVICE_STOP_PENDING) - Running = State(windows.SERVICE_RUNNING) - ContinuePending = State(windows.SERVICE_CONTINUE_PENDING) - PausePending = State(windows.SERVICE_PAUSE_PENDING) - Paused = State(windows.SERVICE_PAUSED) -) - -// Cmd represents service state change request. It is sent to a service -// by the service manager, and should be actioned upon by the service. -type Cmd uint32 - -const ( - Stop = Cmd(windows.SERVICE_CONTROL_STOP) - Pause = Cmd(windows.SERVICE_CONTROL_PAUSE) - Continue = Cmd(windows.SERVICE_CONTROL_CONTINUE) - Interrogate = Cmd(windows.SERVICE_CONTROL_INTERROGATE) - Shutdown = Cmd(windows.SERVICE_CONTROL_SHUTDOWN) - ParamChange = Cmd(windows.SERVICE_CONTROL_PARAMCHANGE) - NetBindAdd = Cmd(windows.SERVICE_CONTROL_NETBINDADD) - NetBindRemove = Cmd(windows.SERVICE_CONTROL_NETBINDREMOVE) - NetBindEnable = Cmd(windows.SERVICE_CONTROL_NETBINDENABLE) - NetBindDisable = Cmd(windows.SERVICE_CONTROL_NETBINDDISABLE) - DeviceEvent = Cmd(windows.SERVICE_CONTROL_DEVICEEVENT) - HardwareProfileChange = Cmd(windows.SERVICE_CONTROL_HARDWAREPROFILECHANGE) - PowerEvent = Cmd(windows.SERVICE_CONTROL_POWEREVENT) - SessionChange = Cmd(windows.SERVICE_CONTROL_SESSIONCHANGE) -) - -// Accepted is used to describe commands accepted by the service. -// Note that Interrogate is always accepted. -type Accepted uint32 - -const ( - AcceptStop = Accepted(windows.SERVICE_ACCEPT_STOP) - AcceptShutdown = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN) - AcceptPauseAndContinue = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE) - AcceptParamChange = Accepted(windows.SERVICE_ACCEPT_PARAMCHANGE) - AcceptNetBindChange = Accepted(windows.SERVICE_ACCEPT_NETBINDCHANGE) - AcceptHardwareProfileChange = Accepted(windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE) - AcceptPowerEvent = Accepted(windows.SERVICE_ACCEPT_POWEREVENT) - AcceptSessionChange = Accepted(windows.SERVICE_ACCEPT_SESSIONCHANGE) -) - -// Status combines State and Accepted commands to fully describe running service. -type Status struct { - State State - Accepts Accepted - CheckPoint uint32 // used to report progress during a lengthy operation - WaitHint uint32 // estimated time required for a pending operation, in milliseconds -} - -// ChangeRequest is sent to the service Handler to request service status change. -type ChangeRequest struct { - Cmd Cmd - EventType uint32 - EventData uintptr - CurrentStatus Status -} - -// Handler is the interface that must be implemented to build Windows service. -type Handler interface { - - // Execute will be called by the package code at the start of - // the service, and the service will exit once Execute completes. - // Inside Execute you must read service change requests from r and - // act accordingly. You must keep service control manager up to date - // about state of your service by writing into s as required. - // args contains service name followed by argument strings passed - // to the service. - // You can provide service exit code in exitCode return parameter, - // with 0 being "no error". You can also indicate if exit code, - // if any, is service specific or not by using svcSpecificEC - // parameter. - Execute(args []string, r <-chan ChangeRequest, s chan<- Status) (svcSpecificEC bool, exitCode uint32) -} - -var ( - // These are used by asm code. - goWaitsH uintptr - cWaitsH uintptr - ssHandle uintptr - sName *uint16 - sArgc uintptr - sArgv **uint16 - ctlHandlerExProc uintptr - cSetEvent uintptr - cWaitForSingleObject uintptr - cRegisterServiceCtrlHandlerExW uintptr -) - -func init() { - k := syscall.MustLoadDLL("kernel32.dll") - cSetEvent = k.MustFindProc("SetEvent").Addr() - cWaitForSingleObject = k.MustFindProc("WaitForSingleObject").Addr() - a := syscall.MustLoadDLL("advapi32.dll") - cRegisterServiceCtrlHandlerExW = a.MustFindProc("RegisterServiceCtrlHandlerExW").Addr() -} - -// The HandlerEx prototype also has a context pointer but since we don't use -// it at start-up time we don't have to pass it over either. -type ctlEvent struct { - cmd Cmd - eventType uint32 - eventData uintptr - errno uint32 -} - -// service provides access to windows service api. -type service struct { - name string - h windows.Handle - cWaits *event - goWaits *event - c chan ctlEvent - handler Handler -} - -func newService(name string, handler Handler) (*service, error) { - var s service - var err error - s.name = name - s.c = make(chan ctlEvent) - s.handler = handler - s.cWaits, err = newEvent() - if err != nil { - return nil, err - } - s.goWaits, err = newEvent() - if err != nil { - s.cWaits.Close() - return nil, err - } - return &s, nil -} - -func (s *service) close() error { - s.cWaits.Close() - s.goWaits.Close() - return nil -} - -type exitCode struct { - isSvcSpecific bool - errno uint32 -} - -func (s *service) updateStatus(status *Status, ec *exitCode) error { - if s.h == 0 { - return errors.New("updateStatus with no service status handle") - } - var t windows.SERVICE_STATUS - t.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS - t.CurrentState = uint32(status.State) - if status.Accepts&AcceptStop != 0 { - t.ControlsAccepted |= windows.SERVICE_ACCEPT_STOP - } - if status.Accepts&AcceptShutdown != 0 { - t.ControlsAccepted |= windows.SERVICE_ACCEPT_SHUTDOWN - } - if status.Accepts&AcceptPauseAndContinue != 0 { - t.ControlsAccepted |= windows.SERVICE_ACCEPT_PAUSE_CONTINUE - } - if status.Accepts&AcceptParamChange != 0 { - t.ControlsAccepted |= windows.SERVICE_ACCEPT_PARAMCHANGE - } - if status.Accepts&AcceptNetBindChange != 0 { - t.ControlsAccepted |= windows.SERVICE_ACCEPT_NETBINDCHANGE - } - if status.Accepts&AcceptHardwareProfileChange != 0 { - t.ControlsAccepted |= windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE - } - if status.Accepts&AcceptPowerEvent != 0 { - t.ControlsAccepted |= windows.SERVICE_ACCEPT_POWEREVENT - } - if status.Accepts&AcceptSessionChange != 0 { - t.ControlsAccepted |= windows.SERVICE_ACCEPT_SESSIONCHANGE - } - if ec.errno == 0 { - t.Win32ExitCode = windows.NO_ERROR - t.ServiceSpecificExitCode = windows.NO_ERROR - } else if ec.isSvcSpecific { - t.Win32ExitCode = uint32(windows.ERROR_SERVICE_SPECIFIC_ERROR) - t.ServiceSpecificExitCode = ec.errno - } else { - t.Win32ExitCode = ec.errno - t.ServiceSpecificExitCode = windows.NO_ERROR - } - t.CheckPoint = status.CheckPoint - t.WaitHint = status.WaitHint - return windows.SetServiceStatus(s.h, &t) -} - -const ( - sysErrSetServiceStatusFailed = uint32(syscall.APPLICATION_ERROR) + iota - sysErrNewThreadInCallback -) - -func (s *service) run() { - s.goWaits.Wait() - s.h = windows.Handle(ssHandle) - argv := (*[100]*int16)(unsafe.Pointer(sArgv))[:sArgc] - args := make([]string, len(argv)) - for i, a := range argv { - args[i] = syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(a))[:]) - } - - cmdsToHandler := make(chan ChangeRequest) - changesFromHandler := make(chan Status) - exitFromHandler := make(chan exitCode) - - go func() { - ss, errno := s.handler.Execute(args, cmdsToHandler, changesFromHandler) - exitFromHandler <- exitCode{ss, errno} - }() - - status := Status{State: Stopped} - ec := exitCode{isSvcSpecific: true, errno: 0} - var outch chan ChangeRequest - inch := s.c - var cmd Cmd - var evtype uint32 - var evdata uintptr -loop: - for { - select { - case r := <-inch: - if r.errno != 0 { - ec.errno = r.errno - break loop - } - inch = nil - outch = cmdsToHandler - cmd = r.cmd - evtype = r.eventType - evdata = r.eventData - case outch <- ChangeRequest{cmd, evtype, evdata, status}: - inch = s.c - outch = nil - case c := <-changesFromHandler: - err := s.updateStatus(&c, &ec) - if err != nil { - // best suitable error number - ec.errno = sysErrSetServiceStatusFailed - if err2, ok := err.(syscall.Errno); ok { - ec.errno = uint32(err2) - } - break loop - } - status = c - case ec = <-exitFromHandler: - break loop - } - } - - s.updateStatus(&Status{State: Stopped}, &ec) - s.cWaits.Set() -} - -func newCallback(fn interface{}) (cb uintptr, err error) { - defer func() { - r := recover() - if r == nil { - return - } - cb = 0 - switch v := r.(type) { - case string: - err = errors.New(v) - case error: - err = v - default: - err = errors.New("unexpected panic in syscall.NewCallback") - } - }() - return syscall.NewCallback(fn), nil -} - -// BUG(brainman): There is no mechanism to run multiple services -// inside one single executable. Perhaps, it can be overcome by -// using RegisterServiceCtrlHandlerEx Windows api. - -// Run executes service name by calling appropriate handler function. -func Run(name string, handler Handler) error { - runtime.LockOSThread() - - tid := windows.GetCurrentThreadId() - - s, err := newService(name, handler) - if err != nil { - return err - } - - ctlHandler := func(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr { - e := ctlEvent{cmd: Cmd(ctl), eventType: evtype, eventData: evdata} - // We assume that this callback function is running on - // the same thread as Run. Nowhere in MS documentation - // I could find statement to guarantee that. So putting - // check here to verify, otherwise things will go bad - // quickly, if ignored. - i := windows.GetCurrentThreadId() - if i != tid { - e.errno = sysErrNewThreadInCallback - } - s.c <- e - // Always return NO_ERROR (0) for now. - return 0 - } - - var svcmain uintptr - getServiceMain(&svcmain) - t := []windows.SERVICE_TABLE_ENTRY{ - {syscall.StringToUTF16Ptr(s.name), svcmain}, - {nil, 0}, - } - - goWaitsH = uintptr(s.goWaits.h) - cWaitsH = uintptr(s.cWaits.h) - sName = t[0].ServiceName - ctlHandlerExProc, err = newCallback(ctlHandler) - if err != nil { - return err - } - - go s.run() - - err = windows.StartServiceCtrlDispatcher(&t[0]) - if err != nil { - return err - } - return nil -} - -// StatusHandle returns service status handle. It is safe to call this function -// from inside the Handler.Execute because then it is guaranteed to be set. -// This code will have to change once multiple services are possible per process. -func StatusHandle() windows.Handle { - return windows.Handle(ssHandle) -} diff --git a/vendor/golang.org/x/sys/windows/svc/svc_test.go b/vendor/golang.org/x/sys/windows/svc/svc_test.go deleted file mode 100644 index da7ec666..00000000 --- a/vendor/golang.org/x/sys/windows/svc/svc_test.go +++ /dev/null @@ -1,118 +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. - -// +build windows - -package svc_test - -import ( - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "testing" - "time" - - "golang.org/x/sys/windows/svc" - "golang.org/x/sys/windows/svc/mgr" -) - -func getState(t *testing.T, s *mgr.Service) svc.State { - status, err := s.Query() - if err != nil { - t.Fatalf("Query(%s) failed: %s", s.Name, err) - } - return status.State -} - -func testState(t *testing.T, s *mgr.Service, want svc.State) { - have := getState(t, s) - if have != want { - t.Fatalf("%s state is=%d want=%d", s.Name, have, want) - } -} - -func waitState(t *testing.T, s *mgr.Service, want svc.State) { - for i := 0; ; i++ { - have := getState(t, s) - if have == want { - return - } - if i > 10 { - t.Fatalf("%s state is=%d, waiting timeout", s.Name, have) - } - time.Sleep(300 * time.Millisecond) - } -} - -func TestExample(t *testing.T) { - if testing.Short() { - t.Skip("skipping test in short mode - it modifies system services") - } - - const name = "myservice" - - m, err := mgr.Connect() - if err != nil { - t.Fatalf("SCM connection failed: %s", err) - } - defer m.Disconnect() - - dir, err := ioutil.TempDir("", "svc") - if err != nil { - t.Fatalf("failed to create temp directory: %v", err) - } - defer os.RemoveAll(dir) - - exepath := filepath.Join(dir, "a.exe") - o, err := exec.Command("go", "build", "-o", exepath, "golang.org/x/sys/windows/svc/example").CombinedOutput() - if err != nil { - t.Fatalf("failed to build service program: %v\n%v", err, string(o)) - } - - s, err := m.OpenService(name) - if err == nil { - err = s.Delete() - if err != nil { - s.Close() - t.Fatalf("Delete failed: %s", err) - } - s.Close() - } - s, err = m.CreateService(name, exepath, mgr.Config{DisplayName: "my service"}, "is", "auto-started") - if err != nil { - t.Fatalf("CreateService(%s) failed: %v", name, err) - } - defer s.Close() - - testState(t, s, svc.Stopped) - err = s.Start("is", "manual-started") - if err != nil { - t.Fatalf("Start(%s) failed: %s", s.Name, err) - } - waitState(t, s, svc.Running) - time.Sleep(1 * time.Second) - - // testing deadlock from issues 4. - _, err = s.Control(svc.Interrogate) - if err != nil { - t.Fatalf("Control(%s) failed: %s", s.Name, err) - } - _, err = s.Control(svc.Interrogate) - if err != nil { - t.Fatalf("Control(%s) failed: %s", s.Name, err) - } - time.Sleep(1 * time.Second) - - _, err = s.Control(svc.Stop) - if err != nil { - t.Fatalf("Control(%s) failed: %s", s.Name, err) - } - waitState(t, s, svc.Stopped) - - err = s.Delete() - if err != nil { - t.Fatalf("Delete failed: %s", err) - } -} diff --git a/vendor/golang.org/x/sys/windows/svc/sys_386.s b/vendor/golang.org/x/sys/windows/svc/sys_386.s deleted file mode 100644 index 2c82a9d9..00000000 --- a/vendor/golang.org/x/sys/windows/svc/sys_386.s +++ /dev/null @@ -1,68 +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. - -// +build windows - -// func servicemain(argc uint32, argv **uint16) -TEXT ·servicemain(SB),7,$0 - MOVL argc+0(FP), AX - MOVL AX, ·sArgc(SB) - MOVL argv+4(FP), AX - MOVL AX, ·sArgv(SB) - - PUSHL BP - PUSHL BX - PUSHL SI - PUSHL DI - - SUBL $12, SP - - MOVL ·sName(SB), AX - MOVL AX, (SP) - MOVL $·servicectlhandler(SB), AX - MOVL AX, 4(SP) - MOVL $0, 8(SP) - MOVL ·cRegisterServiceCtrlHandlerExW(SB), AX - MOVL SP, BP - CALL AX - MOVL BP, SP - CMPL AX, $0 - JE exit - MOVL AX, ·ssHandle(SB) - - MOVL ·goWaitsH(SB), AX - MOVL AX, (SP) - MOVL ·cSetEvent(SB), AX - MOVL SP, BP - CALL AX - MOVL BP, SP - - MOVL ·cWaitsH(SB), AX - MOVL AX, (SP) - MOVL $-1, AX - MOVL AX, 4(SP) - MOVL ·cWaitForSingleObject(SB), AX - MOVL SP, BP - CALL AX - MOVL BP, SP - -exit: - ADDL $12, SP - - POPL DI - POPL SI - POPL BX - POPL BP - - MOVL 0(SP), CX - ADDL $12, SP - JMP CX - -// I do not know why, but this seems to be the only way to call -// ctlHandlerProc on Windows 7. - -// func servicectlhandler(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr { -TEXT ·servicectlhandler(SB),7,$0 - MOVL ·ctlHandlerExProc(SB), CX - JMP CX diff --git a/vendor/golang.org/x/sys/windows/svc/sys_amd64.s b/vendor/golang.org/x/sys/windows/svc/sys_amd64.s deleted file mode 100644 index 06b42590..00000000 --- a/vendor/golang.org/x/sys/windows/svc/sys_amd64.s +++ /dev/null @@ -1,42 +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. - -// +build windows - -// func servicemain(argc uint32, argv **uint16) -TEXT ·servicemain(SB),7,$0 - MOVL CX, ·sArgc(SB) - MOVL DX, ·sArgv(SB) - - SUBQ $32, SP // stack for the first 4 syscall params - - MOVQ ·sName(SB), CX - MOVQ $·servicectlhandler(SB), DX - // BUG(pastarmovj): Figure out a way to pass in context in R8. - MOVQ ·cRegisterServiceCtrlHandlerExW(SB), AX - CALL AX - CMPQ AX, $0 - JE exit - MOVQ AX, ·ssHandle(SB) - - MOVQ ·goWaitsH(SB), CX - MOVQ ·cSetEvent(SB), AX - CALL AX - - MOVQ ·cWaitsH(SB), CX - MOVQ $4294967295, DX - MOVQ ·cWaitForSingleObject(SB), AX - CALL AX - -exit: - ADDQ $32, SP - RET - -// I do not know why, but this seems to be the only way to call -// ctlHandlerProc on Windows 7. - -// func ·servicectlhandler(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr { -TEXT ·servicectlhandler(SB),7,$0 - MOVQ ·ctlHandlerExProc(SB), AX - JMP AX diff --git a/vendor/golang.org/x/sys/windows/syscall_test.go b/vendor/golang.org/x/sys/windows/syscall_test.go deleted file mode 100644 index d7009e44..00000000 --- a/vendor/golang.org/x/sys/windows/syscall_test.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows - -package windows_test - -import ( - "syscall" - "testing" - - "golang.org/x/sys/windows" -) - -func testSetGetenv(t *testing.T, key, value string) { - err := windows.Setenv(key, value) - if err != nil { - t.Fatalf("Setenv failed to set %q: %v", value, err) - } - newvalue, found := windows.Getenv(key) - if !found { - t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value) - } - if newvalue != value { - t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value) - } -} - -func TestEnv(t *testing.T) { - testSetGetenv(t, "TESTENV", "AVALUE") - // make sure TESTENV gets set to "", not deleted - testSetGetenv(t, "TESTENV", "") -} - -func TestGetProcAddressByOrdinal(t *testing.T) { - // Attempt calling shlwapi.dll:IsOS, resolving it by ordinal, as - // suggested in - // https://msdn.microsoft.com/en-us/library/windows/desktop/bb773795.aspx - h, err := windows.LoadLibrary("shlwapi.dll") - if err != nil { - t.Fatalf("Failed to load shlwapi.dll: %s", err) - } - procIsOS, err := windows.GetProcAddressByOrdinal(h, 437) - if err != nil { - t.Fatalf("Could not find shlwapi.dll:IsOS by ordinal: %s", err) - } - const OS_NT = 1 - r, _, _ := syscall.Syscall(procIsOS, 1, OS_NT, 0, 0) - if r == 0 { - t.Error("shlwapi.dll:IsOS(OS_NT) returned 0, expected non-zero value") - } -} diff --git a/vendor/golang.org/x/sys/windows/syscall_windows_test.go b/vendor/golang.org/x/sys/windows/syscall_windows_test.go deleted file mode 100644 index 9c7133cc..00000000 --- a/vendor/golang.org/x/sys/windows/syscall_windows_test.go +++ /dev/null @@ -1,107 +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 windows_test - -import ( - "io/ioutil" - "os" - "path/filepath" - "syscall" - "testing" - "unsafe" - - "golang.org/x/sys/windows" -) - -func TestWin32finddata(t *testing.T) { - dir, err := ioutil.TempDir("", "go-build") - if err != nil { - t.Fatalf("failed to create temp directory: %v", err) - } - defer os.RemoveAll(dir) - - path := filepath.Join(dir, "long_name.and_extension") - f, err := os.Create(path) - if err != nil { - t.Fatalf("failed to create %v: %v", path, err) - } - f.Close() - - type X struct { - fd windows.Win32finddata - got byte - pad [10]byte // to protect ourselves - - } - var want byte = 2 // it is unlikely to have this character in the filename - x := X{got: want} - - pathp, _ := windows.UTF16PtrFromString(path) - h, err := windows.FindFirstFile(pathp, &(x.fd)) - if err != nil { - t.Fatalf("FindFirstFile failed: %v", err) - } - err = windows.FindClose(h) - if err != nil { - t.Fatalf("FindClose failed: %v", err) - } - - if x.got != want { - t.Fatalf("memory corruption: want=%d got=%d", want, x.got) - } -} - -func TestFormatMessage(t *testing.T) { - dll := windows.MustLoadDLL("pdh.dll") - - pdhOpenQuery := func(datasrc *uint16, userdata uint32, query *windows.Handle) (errno uintptr) { - r0, _, _ := syscall.Syscall(dll.MustFindProc("PdhOpenQueryW").Addr(), 3, uintptr(unsafe.Pointer(datasrc)), uintptr(userdata), uintptr(unsafe.Pointer(query))) - return r0 - } - - pdhCloseQuery := func(query windows.Handle) (errno uintptr) { - r0, _, _ := syscall.Syscall(dll.MustFindProc("PdhCloseQuery").Addr(), 1, uintptr(query), 0, 0) - return r0 - } - - var q windows.Handle - name, err := windows.UTF16PtrFromString("no_such_source") - if err != nil { - t.Fatal(err) - } - errno := pdhOpenQuery(name, 0, &q) - if errno == 0 { - pdhCloseQuery(q) - t.Fatal("PdhOpenQuery succeeded, but expected to fail.") - } - - const flags uint32 = syscall.FORMAT_MESSAGE_FROM_HMODULE | syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY | syscall.FORMAT_MESSAGE_IGNORE_INSERTS - buf := make([]uint16, 300) - _, err = windows.FormatMessage(flags, uintptr(dll.Handle), uint32(errno), 0, buf, nil) - if err != nil { - t.Fatalf("FormatMessage for handle=%x and errno=%x failed: %v", dll.Handle, errno, err) - } -} - -func abort(funcname string, err error) { - panic(funcname + " failed: " + err.Error()) -} - -func ExampleLoadLibrary() { - h, err := windows.LoadLibrary("kernel32.dll") - if err != nil { - abort("LoadLibrary", err) - } - defer windows.FreeLibrary(h) - proc, err := windows.GetProcAddress(h, "GetVersion") - if err != nil { - abort("GetProcAddress", err) - } - r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0) - major := byte(r) - minor := uint8(r >> 8) - build := uint16(r >> 16) - print("windows version ", major, ".", minor, " (Build ", build, ")\n") -} diff --git a/vendor/golang.org/x/text/.gitattributes b/vendor/golang.org/x/text/.gitattributes deleted file mode 100644 index d2f212e5..00000000 --- a/vendor/golang.org/x/text/.gitattributes +++ /dev/null @@ -1,10 +0,0 @@ -# Treat all files in this repo as binary, with no git magic updating -# line endings. Windows users contributing to Go will need to use a -# modern version of git and editors capable of LF line endings. -# -# We'll prevent accidental CRLF line endings from entering the repo -# via the git-review gofmt checks. -# -# See golang.org/issue/9281 - -* -text diff --git a/vendor/golang.org/x/text/.gitignore b/vendor/golang.org/x/text/.gitignore deleted file mode 100644 index b2de568b..00000000 --- a/vendor/golang.org/x/text/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# Add no patterns to .gitignore except for files generated by the build. -last-change -/DATA -# This file is rather large and the tests really only need to be run -# after generation. -/unicode/norm/data_test.go \ No newline at end of file diff --git a/vendor/golang.org/x/text/CONTRIBUTING.md b/vendor/golang.org/x/text/CONTRIBUTING.md deleted file mode 100644 index 88dff59b..00000000 --- a/vendor/golang.org/x/text/CONTRIBUTING.md +++ /dev/null @@ -1,31 +0,0 @@ -# Contributing to Go - -Go is an open source project. - -It is the work of hundreds of contributors. We appreciate your help! - - -## Filing issues - -When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions: - -1. What version of Go are you using (`go version`)? -2. What operating system and processor architecture are you using? -3. What did you do? -4. What did you expect to see? -5. What did you see instead? - -General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker. -The gophers there will answer or ask you to file an issue if you've tripped over a bug. - -## Contributing code - -Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html) -before sending patches. - -**We do not accept GitHub pull requests** -(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review). - -Unless otherwise noted, the Go source files are distributed under -the BSD-style license found in the LICENSE file. - diff --git a/vendor/golang.org/x/text/README.md b/vendor/golang.org/x/text/README.md deleted file mode 100644 index b3f365ee..00000000 --- a/vendor/golang.org/x/text/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# Go Text - -This repository holds supplementary Go libraries for text processing, many involving Unicode. - -## Semantic Versioning -This repo uses Semantic versioning (http://semver.org/), so -1. MAJOR version when you make incompatible API changes, -1. MINOR version when you add functionality in a backwards-compatible manner, - and -1. PATCH version when you make backwards-compatible bug fixes. - -Until version 1.0.0 of x/text is reached, the minor version is considered a -major version. So going from 0.1.0 to 0.2.0 is considered to be a major version -bump. - -A major new CLDR version is mapped to a minor version increase in x/text. -Any other new CLDR version is mapped to a patch version increase in x/text. - -It is important that the Unicode version used in `x/text` matches the one used -by your Go compiler. The `x/text` repository supports multiple versions of -Unicode and will match the version of Unicode to that of the Go compiler. At the -moment this is supported for Go compilers from version 1.7. - -## Download/Install - -The easiest way to install is to run `go get -u golang.org/x/text`. You can -also manually git clone the repository to `$GOPATH/src/golang.org/x/text`. - -## Contribute -To submit changes to this repository, see http://golang.org/doc/contribute.html. - -To generate the tables in this repository (except for the encoding tables), -run go generate from this directory. By default tables are generated for the -Unicode version in core and the CLDR version defined in -golang.org/x/text/unicode/cldr. - -Running go generate will as a side effect create a DATA subdirectory in this -directory, which holds all files that are used as a source for generating the -tables. This directory will also serve as a cache. - -## Testing -Run - - go test ./... - -from this directory to run all tests. Add the "-tags icu" flag to also run -ICU conformance tests (if available). This requires that you have the correct -ICU version installed on your system. - -TODO: -- updating unversioned source files. - -## Generating Tables - -To generate the tables in this repository (except for the encoding -tables), run `go generate` from this directory. By default tables are -generated for the Unicode version in core and the CLDR version defined in -golang.org/x/text/unicode/cldr. - -Running go generate will as a side effect create a DATA subdirectory in this -directory which holds all files that are used as a source for generating the -tables. This directory will also serve as a cache. - -## Versions -To update a Unicode version run - - UNICODE_VERSION=x.x.x go generate - -where `x.x.x` must correspond to a directory in http://www.unicode.org/Public/. -If this version is newer than the version in core it will also update the -relevant packages there. The idna package in x/net will always be updated. - -To update a CLDR version run - - CLDR_VERSION=version go generate - -where `version` must correspond to a directory in -http://www.unicode.org/Public/cldr/. - -Note that the code gets adapted over time to changes in the data and that -backwards compatibility is not maintained. -So updating to a different version may not work. - -The files in DATA/{iana|icu|w3|whatwg} are currently not versioned. - -## Report Issues / Send Patches - -This repository uses Gerrit for code changes. To learn how to submit changes to -this repository, see https://golang.org/doc/contribute.html. - -The main issue tracker for the image repository is located at -https://github.com/golang/go/issues. Prefix your issue with "x/image:" in the -subject line, so it is easy to find. diff --git a/vendor/golang.org/x/text/cases/cases.go b/vendor/golang.org/x/text/cases/cases.go deleted file mode 100644 index 736c0c31..00000000 --- a/vendor/golang.org/x/text/cases/cases.go +++ /dev/null @@ -1,162 +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. - -//go:generate go run gen.go gen_trieval.go - -// Package cases provides general and language-specific case mappers. -package cases // import "golang.org/x/text/cases" - -import ( - "golang.org/x/text/language" - "golang.org/x/text/transform" -) - -// References: -// - Unicode Reference Manual Chapter 3.13, 4.2, and 5.18. -// - http://www.unicode.org/reports/tr29/ -// - http://www.unicode.org/Public/6.3.0/ucd/CaseFolding.txt -// - http://www.unicode.org/Public/6.3.0/ucd/SpecialCasing.txt -// - http://www.unicode.org/Public/6.3.0/ucd/DerivedCoreProperties.txt -// - http://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakProperty.txt -// - http://www.unicode.org/Public/6.3.0/ucd/auxiliary/WordBreakTest.txt -// - http://userguide.icu-project.org/transforms/casemappings - -// TODO: -// - Case folding -// - Wide and Narrow? -// - Segmenter option for title casing. -// - ASCII fast paths -// - Encode Soft-Dotted property within trie somehow. - -// A Caser transforms given input to a certain case. It implements -// transform.Transformer. -// -// A Caser may be stateful and should therefore not be shared between -// goroutines. -type Caser struct { - t transform.SpanningTransformer -} - -// Bytes returns a new byte slice with the result of converting b to the case -// form implemented by c. -func (c Caser) Bytes(b []byte) []byte { - b, _, _ = transform.Bytes(c.t, b) - return b -} - -// String returns a string with the result of transforming s to the case form -// implemented by c. -func (c Caser) String(s string) string { - s, _, _ = transform.String(c.t, s) - return s -} - -// Reset resets the Caser to be reused for new input after a previous call to -// Transform. -func (c Caser) Reset() { c.t.Reset() } - -// Transform implements the transform.Transformer interface and transforms the -// given input to the case form implemented by c. -func (c Caser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - return c.t.Transform(dst, src, atEOF) -} - -// Span implements the transform.SpanningTransformer interface. -func (c Caser) Span(src []byte, atEOF bool) (n int, err error) { - return c.t.Span(src, atEOF) -} - -// Upper returns a Caser for language-specific uppercasing. -func Upper(t language.Tag, opts ...Option) Caser { - return Caser{makeUpper(t, getOpts(opts...))} -} - -// Lower returns a Caser for language-specific lowercasing. -func Lower(t language.Tag, opts ...Option) Caser { - return Caser{makeLower(t, getOpts(opts...))} -} - -// Title returns a Caser for language-specific title casing. It uses an -// approximation of the default Unicode Word Break algorithm. -func Title(t language.Tag, opts ...Option) Caser { - return Caser{makeTitle(t, getOpts(opts...))} -} - -// Fold returns a Caser that implements Unicode case folding. The returned Caser -// is stateless and safe to use concurrently by multiple goroutines. -// -// Case folding does not normalize the input and may not preserve a normal form. -// Use the collate or search package for more convenient and linguistically -// sound comparisons. Use golang.org/x/text/secure/precis for string comparisons -// where security aspects are a concern. -func Fold(opts ...Option) Caser { - return Caser{makeFold(getOpts(opts...))} -} - -// An Option is used to modify the behavior of a Caser. -type Option func(o options) options - -// TODO: consider these options to take a boolean as well, like FinalSigma. -// The advantage of using this approach is that other providers of a lower-case -// algorithm could set different defaults by prefixing a user-provided slice -// of options with their own. This is handy, for instance, for the precis -// package which would override the default to not handle the Greek final sigma. - -var ( - // NoLower disables the lowercasing of non-leading letters for a title - // caser. - NoLower Option = noLower - - // Compact omits mappings in case folding for characters that would grow the - // input. (Unimplemented.) - Compact Option = compact -) - -// TODO: option to preserve a normal form, if applicable? - -type options struct { - noLower bool - simple bool - - // TODO: segmenter, max ignorable, alternative versions, etc. - - ignoreFinalSigma bool -} - -func getOpts(o ...Option) (res options) { - for _, f := range o { - res = f(res) - } - return -} - -func noLower(o options) options { - o.noLower = true - return o -} - -func compact(o options) options { - o.simple = true - return o -} - -// HandleFinalSigma specifies whether the special handling of Greek final sigma -// should be enabled. Unicode prescribes handling the Greek final sigma for all -// locales, but standards like IDNA and PRECIS override this default. -func HandleFinalSigma(enable bool) Option { - if enable { - return handleFinalSigma - } - return ignoreFinalSigma -} - -func ignoreFinalSigma(o options) options { - o.ignoreFinalSigma = true - return o -} - -func handleFinalSigma(o options) options { - o.ignoreFinalSigma = false - return o -} diff --git a/vendor/golang.org/x/text/cases/context.go b/vendor/golang.org/x/text/cases/context.go deleted file mode 100644 index e9aa9e19..00000000 --- a/vendor/golang.org/x/text/cases/context.go +++ /dev/null @@ -1,376 +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 cases - -import "golang.org/x/text/transform" - -// A context is used for iterating over source bytes, fetching case info and -// writing to a destination buffer. -// -// Casing operations may need more than one rune of context to decide how a rune -// should be cased. Casing implementations should call checkpoint on context -// whenever it is known to be safe to return the runes processed so far. -// -// It is recommended for implementations to not allow for more than 30 case -// ignorables as lookahead (analogous to the limit in norm) and to use state if -// unbounded lookahead is needed for cased runes. -type context struct { - dst, src []byte - atEOF bool - - pDst int // pDst points past the last written rune in dst. - pSrc int // pSrc points to the start of the currently scanned rune. - - // checkpoints safe to return in Transform, where nDst <= pDst and nSrc <= pSrc. - nDst, nSrc int - err error - - sz int // size of current rune - info info // case information of currently scanned rune - - // State preserved across calls to Transform. - isMidWord bool // false if next cased letter needs to be title-cased. -} - -func (c *context) Reset() { - c.isMidWord = false -} - -// ret returns the return values for the Transform method. It checks whether -// there were insufficient bytes in src to complete and introduces an error -// accordingly, if necessary. -func (c *context) ret() (nDst, nSrc int, err error) { - if c.err != nil || c.nSrc == len(c.src) { - return c.nDst, c.nSrc, c.err - } - // This point is only reached by mappers if there was no short destination - // buffer. This means that the source buffer was exhausted and that c.sz was - // set to 0 by next. - if c.atEOF && c.pSrc == len(c.src) { - return c.pDst, c.pSrc, nil - } - return c.nDst, c.nSrc, transform.ErrShortSrc -} - -// retSpan returns the return values for the Span method. It checks whether -// there were insufficient bytes in src to complete and introduces an error -// accordingly, if necessary. -func (c *context) retSpan() (n int, err error) { - _, nSrc, err := c.ret() - return nSrc, err -} - -// checkpoint sets the return value buffer points for Transform to the current -// positions. -func (c *context) checkpoint() { - if c.err == nil { - c.nDst, c.nSrc = c.pDst, c.pSrc+c.sz - } -} - -// unreadRune causes the last rune read by next to be reread on the next -// invocation of next. Only one unreadRune may be called after a call to next. -func (c *context) unreadRune() { - c.sz = 0 -} - -func (c *context) next() bool { - c.pSrc += c.sz - if c.pSrc == len(c.src) || c.err != nil { - c.info, c.sz = 0, 0 - return false - } - v, sz := trie.lookup(c.src[c.pSrc:]) - c.info, c.sz = info(v), sz - if c.sz == 0 { - if c.atEOF { - // A zero size means we have an incomplete rune. If we are atEOF, - // this means it is an illegal rune, which we will consume one - // byte at a time. - c.sz = 1 - } else { - c.err = transform.ErrShortSrc - return false - } - } - return true -} - -// writeBytes adds bytes to dst. -func (c *context) writeBytes(b []byte) bool { - if len(c.dst)-c.pDst < len(b) { - c.err = transform.ErrShortDst - return false - } - // This loop is faster than using copy. - for _, ch := range b { - c.dst[c.pDst] = ch - c.pDst++ - } - return true -} - -// writeString writes the given string to dst. -func (c *context) writeString(s string) bool { - if len(c.dst)-c.pDst < len(s) { - c.err = transform.ErrShortDst - return false - } - // This loop is faster than using copy. - for i := 0; i < len(s); i++ { - c.dst[c.pDst] = s[i] - c.pDst++ - } - return true -} - -// copy writes the current rune to dst. -func (c *context) copy() bool { - return c.writeBytes(c.src[c.pSrc : c.pSrc+c.sz]) -} - -// copyXOR copies the current rune to dst and modifies it by applying the XOR -// pattern of the case info. It is the responsibility of the caller to ensure -// that this is a rune with a XOR pattern defined. -func (c *context) copyXOR() bool { - if !c.copy() { - return false - } - if c.info&xorIndexBit == 0 { - // Fast path for 6-bit XOR pattern, which covers most cases. - c.dst[c.pDst-1] ^= byte(c.info >> xorShift) - } else { - // Interpret XOR bits as an index. - // TODO: test performance for unrolling this loop. Verify that we have - // at least two bytes and at most three. - idx := c.info >> xorShift - for p := c.pDst - 1; ; p-- { - c.dst[p] ^= xorData[idx] - idx-- - if xorData[idx] == 0 { - break - } - } - } - return true -} - -// hasPrefix returns true if src[pSrc:] starts with the given string. -func (c *context) hasPrefix(s string) bool { - b := c.src[c.pSrc:] - if len(b) < len(s) { - return false - } - for i, c := range b[:len(s)] { - if c != s[i] { - return false - } - } - return true -} - -// caseType returns an info with only the case bits, normalized to either -// cLower, cUpper, cTitle or cUncased. -func (c *context) caseType() info { - cm := c.info & 0x7 - if cm < 4 { - return cm - } - if cm >= cXORCase { - // xor the last bit of the rune with the case type bits. - b := c.src[c.pSrc+c.sz-1] - return info(b&1) ^ cm&0x3 - } - if cm == cIgnorableCased { - return cLower - } - return cUncased -} - -// lower writes the lowercase version of the current rune to dst. -func lower(c *context) bool { - ct := c.caseType() - if c.info&hasMappingMask == 0 || ct == cLower { - return c.copy() - } - if c.info&exceptionBit == 0 { - return c.copyXOR() - } - e := exceptions[c.info>>exceptionShift:] - offset := 2 + e[0]&lengthMask // size of header + fold string - if nLower := (e[1] >> lengthBits) & lengthMask; nLower != noChange { - return c.writeString(e[offset : offset+nLower]) - } - return c.copy() -} - -func isLower(c *context) bool { - ct := c.caseType() - if c.info&hasMappingMask == 0 || ct == cLower { - return true - } - if c.info&exceptionBit == 0 { - c.err = transform.ErrEndOfSpan - return false - } - e := exceptions[c.info>>exceptionShift:] - if nLower := (e[1] >> lengthBits) & lengthMask; nLower != noChange { - c.err = transform.ErrEndOfSpan - return false - } - return true -} - -// upper writes the uppercase version of the current rune to dst. -func upper(c *context) bool { - ct := c.caseType() - if c.info&hasMappingMask == 0 || ct == cUpper { - return c.copy() - } - if c.info&exceptionBit == 0 { - return c.copyXOR() - } - e := exceptions[c.info>>exceptionShift:] - offset := 2 + e[0]&lengthMask // size of header + fold string - // Get length of first special case mapping. - n := (e[1] >> lengthBits) & lengthMask - if ct == cTitle { - // The first special case mapping is for lower. Set n to the second. - if n == noChange { - n = 0 - } - n, e = e[1]&lengthMask, e[n:] - } - if n != noChange { - return c.writeString(e[offset : offset+n]) - } - return c.copy() -} - -// isUpper writes the isUppercase version of the current rune to dst. -func isUpper(c *context) bool { - ct := c.caseType() - if c.info&hasMappingMask == 0 || ct == cUpper { - return true - } - if c.info&exceptionBit == 0 { - c.err = transform.ErrEndOfSpan - return false - } - e := exceptions[c.info>>exceptionShift:] - // Get length of first special case mapping. - n := (e[1] >> lengthBits) & lengthMask - if ct == cTitle { - n = e[1] & lengthMask - } - if n != noChange { - c.err = transform.ErrEndOfSpan - return false - } - return true -} - -// title writes the title case version of the current rune to dst. -func title(c *context) bool { - ct := c.caseType() - if c.info&hasMappingMask == 0 || ct == cTitle { - return c.copy() - } - if c.info&exceptionBit == 0 { - if ct == cLower { - return c.copyXOR() - } - return c.copy() - } - // Get the exception data. - e := exceptions[c.info>>exceptionShift:] - offset := 2 + e[0]&lengthMask // size of header + fold string - - nFirst := (e[1] >> lengthBits) & lengthMask - if nTitle := e[1] & lengthMask; nTitle != noChange { - if nFirst != noChange { - e = e[nFirst:] - } - return c.writeString(e[offset : offset+nTitle]) - } - if ct == cLower && nFirst != noChange { - // Use the uppercase version instead. - return c.writeString(e[offset : offset+nFirst]) - } - // Already in correct case. - return c.copy() -} - -// isTitle reports whether the current rune is in title case. -func isTitle(c *context) bool { - ct := c.caseType() - if c.info&hasMappingMask == 0 || ct == cTitle { - return true - } - if c.info&exceptionBit == 0 { - if ct == cLower { - c.err = transform.ErrEndOfSpan - return false - } - return true - } - // Get the exception data. - e := exceptions[c.info>>exceptionShift:] - if nTitle := e[1] & lengthMask; nTitle != noChange { - c.err = transform.ErrEndOfSpan - return false - } - nFirst := (e[1] >> lengthBits) & lengthMask - if ct == cLower && nFirst != noChange { - c.err = transform.ErrEndOfSpan - return false - } - return true -} - -// foldFull writes the foldFull version of the current rune to dst. -func foldFull(c *context) bool { - if c.info&hasMappingMask == 0 { - return c.copy() - } - ct := c.caseType() - if c.info&exceptionBit == 0 { - if ct != cLower || c.info&inverseFoldBit != 0 { - return c.copyXOR() - } - return c.copy() - } - e := exceptions[c.info>>exceptionShift:] - n := e[0] & lengthMask - if n == 0 { - if ct == cLower { - return c.copy() - } - n = (e[1] >> lengthBits) & lengthMask - } - return c.writeString(e[2 : 2+n]) -} - -// isFoldFull reports whether the current run is mapped to foldFull -func isFoldFull(c *context) bool { - if c.info&hasMappingMask == 0 { - return true - } - ct := c.caseType() - if c.info&exceptionBit == 0 { - if ct != cLower || c.info&inverseFoldBit != 0 { - c.err = transform.ErrEndOfSpan - return false - } - return true - } - e := exceptions[c.info>>exceptionShift:] - n := e[0] & lengthMask - if n == 0 && ct == cLower { - return true - } - c.err = transform.ErrEndOfSpan - return false -} diff --git a/vendor/golang.org/x/text/cases/context_test.go b/vendor/golang.org/x/text/cases/context_test.go deleted file mode 100644 index f5908780..00000000 --- a/vendor/golang.org/x/text/cases/context_test.go +++ /dev/null @@ -1,438 +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 cases - -import ( - "strings" - "testing" - "unicode" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" - "golang.org/x/text/transform" - "golang.org/x/text/unicode/norm" - "golang.org/x/text/unicode/rangetable" -) - -// The following definitions are taken directly from Chapter 3 of The Unicode -// Standard. - -func propCased(r rune) bool { - return propLower(r) || propUpper(r) || unicode.IsTitle(r) -} - -func propLower(r rune) bool { - return unicode.IsLower(r) || unicode.Is(unicode.Other_Lowercase, r) -} - -func propUpper(r rune) bool { - return unicode.IsUpper(r) || unicode.Is(unicode.Other_Uppercase, r) -} - -func propIgnore(r rune) bool { - if unicode.In(r, unicode.Mn, unicode.Me, unicode.Cf, unicode.Lm, unicode.Sk) { - return true - } - return caseIgnorable[r] -} - -func hasBreakProp(r rune) bool { - // binary search over ranges - lo := 0 - hi := len(breakProp) - for lo < hi { - m := lo + (hi-lo)/2 - bp := &breakProp[m] - if bp.lo <= r && r <= bp.hi { - return true - } - if r < bp.lo { - hi = m - } else { - lo = m + 1 - } - } - return false -} - -func contextFromRune(r rune) *context { - c := context{dst: make([]byte, 128), src: []byte(string(r)), atEOF: true} - c.next() - return &c -} - -func TestCaseProperties(t *testing.T) { - if unicode.Version != UnicodeVersion { - // Properties of existing code points may change by Unicode version, so - // we need to skip. - t.Skipf("Skipping as core Unicode version %s different than %s", unicode.Version, UnicodeVersion) - } - assigned := rangetable.Assigned(UnicodeVersion) - coreVersion := rangetable.Assigned(unicode.Version) - for r := rune(0); r <= lastRuneForTesting; r++ { - if !unicode.In(r, assigned) || !unicode.In(r, coreVersion) { - continue - } - c := contextFromRune(r) - if got, want := c.info.isCaseIgnorable(), propIgnore(r); got != want { - t.Errorf("caseIgnorable(%U): got %v; want %v (%x)", r, got, want, c.info) - } - // New letters may change case types, but existing case pairings should - // not change. See Case Pair Stability in - // http://unicode.org/policies/stability_policy.html. - if rf := unicode.SimpleFold(r); rf != r && unicode.In(rf, assigned) { - if got, want := c.info.isCased(), propCased(r); got != want { - t.Errorf("cased(%U): got %v; want %v (%x)", r, got, want, c.info) - } - if got, want := c.caseType() == cUpper, propUpper(r); got != want { - t.Errorf("upper(%U): got %v; want %v (%x)", r, got, want, c.info) - } - if got, want := c.caseType() == cLower, propLower(r); got != want { - t.Errorf("lower(%U): got %v; want %v (%x)", r, got, want, c.info) - } - } - if got, want := c.info.isBreak(), hasBreakProp(r); got != want { - t.Errorf("isBreak(%U): got %v; want %v (%x)", r, got, want, c.info) - } - } - // TODO: get title case from unicode file. -} - -func TestMapping(t *testing.T) { - assigned := rangetable.Assigned(UnicodeVersion) - coreVersion := rangetable.Assigned(unicode.Version) - if coreVersion == nil { - coreVersion = assigned - } - apply := func(r rune, f func(c *context) bool) string { - c := contextFromRune(r) - f(c) - return string(c.dst[:c.pDst]) - } - - for r, tt := range special { - if got, want := apply(r, lower), tt.toLower; got != want { - t.Errorf("lowerSpecial:(%U): got %+q; want %+q", r, got, want) - } - if got, want := apply(r, title), tt.toTitle; got != want { - t.Errorf("titleSpecial:(%U): got %+q; want %+q", r, got, want) - } - if got, want := apply(r, upper), tt.toUpper; got != want { - t.Errorf("upperSpecial:(%U): got %+q; want %+q", r, got, want) - } - } - - for r := rune(0); r <= lastRuneForTesting; r++ { - if !unicode.In(r, assigned) || !unicode.In(r, coreVersion) { - continue - } - if rf := unicode.SimpleFold(r); rf == r || !unicode.In(rf, assigned) { - continue - } - if _, ok := special[r]; ok { - continue - } - want := string(unicode.ToLower(r)) - if got := apply(r, lower); got != want { - t.Errorf("lower:%q (%U): got %q %U; want %q %U", r, r, got, []rune(got), want, []rune(want)) - } - - want = string(unicode.ToUpper(r)) - if got := apply(r, upper); got != want { - t.Errorf("upper:%q (%U): got %q %U; want %q %U", r, r, got, []rune(got), want, []rune(want)) - } - - want = string(unicode.ToTitle(r)) - if got := apply(r, title); got != want { - t.Errorf("title:%q (%U): got %q %U; want %q %U", r, r, got, []rune(got), want, []rune(want)) - } - } -} - -func runeFoldData(r rune) (x struct{ simple, full, special string }) { - x = foldMap[r] - if x.simple == "" { - x.simple = string(unicode.ToLower(r)) - } - if x.full == "" { - x.full = string(unicode.ToLower(r)) - } - if x.special == "" { - x.special = x.full - } - return -} - -func TestFoldData(t *testing.T) { - assigned := rangetable.Assigned(UnicodeVersion) - coreVersion := rangetable.Assigned(unicode.Version) - if coreVersion == nil { - coreVersion = assigned - } - apply := func(r rune, f func(c *context) bool) (string, info) { - c := contextFromRune(r) - f(c) - return string(c.dst[:c.pDst]), c.info.cccType() - } - for r := rune(0); r <= lastRuneForTesting; r++ { - if !unicode.In(r, assigned) || !unicode.In(r, coreVersion) { - continue - } - x := runeFoldData(r) - if got, info := apply(r, foldFull); got != x.full { - t.Errorf("full:%q (%U): got %q %U; want %q %U (ccc=%x)", r, r, got, []rune(got), x.full, []rune(x.full), info) - } - // TODO: special and simple. - } -} - -func TestCCC(t *testing.T) { - assigned := rangetable.Assigned(UnicodeVersion) - normVersion := rangetable.Assigned(norm.Version) - for r := rune(0); r <= lastRuneForTesting; r++ { - if !unicode.In(r, assigned) || !unicode.In(r, normVersion) { - continue - } - c := contextFromRune(r) - - p := norm.NFC.PropertiesString(string(r)) - want := cccOther - switch p.CCC() { - case 0: - want = cccZero - case above: - want = cccAbove - } - if got := c.info.cccType(); got != want { - t.Errorf("%U: got %x; want %x", r, got, want) - } - } -} - -func TestWordBreaks(t *testing.T) { - for _, tt := range breakTest { - testtext.Run(t, tt, func(t *testing.T) { - parts := strings.Split(tt, "|") - want := "" - for _, s := range parts { - found := false - // This algorithm implements title casing given word breaks - // as defined in the Unicode standard 3.13 R3. - for _, r := range s { - title := unicode.ToTitle(r) - lower := unicode.ToLower(r) - if !found && title != lower { - found = true - want += string(title) - } else { - want += string(lower) - } - } - } - src := strings.Join(parts, "") - got := Title(language.Und).String(src) - if got != want { - t.Errorf("got %q; want %q", got, want) - } - }) - } -} - -func TestContext(t *testing.T) { - tests := []struct { - desc string - dstSize int - atEOF bool - src string - out string - nSrc int - err error - ops string - prefixArg string - prefixWant bool - }{{ - desc: "next: past end, atEOF, no checkpoint", - dstSize: 10, - atEOF: true, - src: "12", - out: "", - nSrc: 2, - ops: "next;next;next", - // Test that calling prefix with a non-empty argument when the buffer - // is depleted returns false. - prefixArg: "x", - prefixWant: false, - }, { - desc: "next: not at end, atEOF, no checkpoint", - dstSize: 10, - atEOF: false, - src: "12", - out: "", - nSrc: 0, - err: transform.ErrShortSrc, - ops: "next;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "next: past end, !atEOF, no checkpoint", - dstSize: 10, - atEOF: false, - src: "12", - out: "", - nSrc: 0, - err: transform.ErrShortSrc, - ops: "next;next;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "next: past end, !atEOF, checkpoint", - dstSize: 10, - atEOF: false, - src: "12", - out: "", - nSrc: 2, - ops: "next;next;checkpoint;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "copy: exact count, atEOF, no checkpoint", - dstSize: 2, - atEOF: true, - src: "12", - out: "12", - nSrc: 2, - ops: "next;copy;next;copy;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "copy: past end, !atEOF, no checkpoint", - dstSize: 2, - atEOF: false, - src: "12", - out: "", - nSrc: 0, - err: transform.ErrShortSrc, - ops: "next;copy;next;copy;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "copy: past end, !atEOF, checkpoint", - dstSize: 2, - atEOF: false, - src: "12", - out: "12", - nSrc: 2, - ops: "next;copy;next;copy;checkpoint;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "copy: short dst", - dstSize: 1, - atEOF: false, - src: "12", - out: "", - nSrc: 0, - err: transform.ErrShortDst, - ops: "next;copy;next;copy;checkpoint;next", - prefixArg: "12", - prefixWant: false, - }, { - desc: "copy: short dst, checkpointed", - dstSize: 1, - atEOF: false, - src: "12", - out: "1", - nSrc: 1, - err: transform.ErrShortDst, - ops: "next;copy;checkpoint;next;copy;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "writeString: simple", - dstSize: 3, - atEOF: true, - src: "1", - out: "1ab", - nSrc: 1, - ops: "next;copy;writeab;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "writeString: short dst", - dstSize: 2, - atEOF: true, - src: "12", - out: "", - nSrc: 0, - err: transform.ErrShortDst, - ops: "next;copy;writeab;next", - prefixArg: "2", - prefixWant: true, - }, { - desc: "writeString: simple", - dstSize: 3, - atEOF: true, - src: "12", - out: "1ab", - nSrc: 2, - ops: "next;copy;next;writeab;next", - prefixArg: "", - prefixWant: true, - }, { - desc: "writeString: short dst", - dstSize: 2, - atEOF: true, - src: "12", - out: "", - nSrc: 0, - err: transform.ErrShortDst, - ops: "next;copy;next;writeab;next", - prefixArg: "1", - prefixWant: false, - }, { - desc: "prefix", - dstSize: 2, - atEOF: true, - src: "12", - out: "", - nSrc: 0, - // Context will assign an ErrShortSrc if the input wasn't exhausted. - err: transform.ErrShortSrc, - prefixArg: "12", - prefixWant: true, - }} - for _, tt := range tests { - c := context{dst: make([]byte, tt.dstSize), src: []byte(tt.src), atEOF: tt.atEOF} - - for _, op := range strings.Split(tt.ops, ";") { - switch op { - case "next": - c.next() - case "checkpoint": - c.checkpoint() - case "writeab": - c.writeString("ab") - case "copy": - c.copy() - case "": - default: - t.Fatalf("unknown op %q", op) - } - } - if got := c.hasPrefix(tt.prefixArg); got != tt.prefixWant { - t.Errorf("%s:\nprefix was %v; want %v", tt.desc, got, tt.prefixWant) - } - nDst, nSrc, err := c.ret() - if err != tt.err { - t.Errorf("%s:\nerror was %v; want %v", tt.desc, err, tt.err) - } - if out := string(c.dst[:nDst]); out != tt.out { - t.Errorf("%s:\nout was %q; want %q", tt.desc, out, tt.out) - } - if nSrc != tt.nSrc { - t.Errorf("%s:\nnSrc was %d; want %d", tt.desc, nSrc, tt.nSrc) - } - } -} diff --git a/vendor/golang.org/x/text/cases/example_test.go b/vendor/golang.org/x/text/cases/example_test.go deleted file mode 100644 index 56e6e33e..00000000 --- a/vendor/golang.org/x/text/cases/example_test.go +++ /dev/null @@ -1,53 +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 cases_test - -import ( - "fmt" - - "golang.org/x/text/cases" - "golang.org/x/text/language" -) - -func Example() { - src := []string{ - "hello world!", - "i with dot", - "'n ijsberg", - "here comes O'Brian", - } - for _, c := range []cases.Caser{ - cases.Lower(language.Und), - cases.Upper(language.Turkish), - cases.Title(language.Dutch), - cases.Title(language.Und, cases.NoLower), - } { - fmt.Println() - for _, s := range src { - fmt.Println(c.String(s)) - } - } - - // Output: - // hello world! - // i with dot - // 'n ijsberg - // here comes o'brian - // - // HELLO WORLD! - // İ WİTH DOT - // 'N İJSBERG - // HERE COMES O'BRİAN - // - // Hello World! - // I With Dot - // 'n IJsberg - // Here Comes O'brian - // - // Hello World! - // I With Dot - // 'N Ijsberg - // Here Comes O'Brian -} diff --git a/vendor/golang.org/x/text/cases/fold.go b/vendor/golang.org/x/text/cases/fold.go deleted file mode 100644 index 85cc434f..00000000 --- a/vendor/golang.org/x/text/cases/fold.go +++ /dev/null @@ -1,34 +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 cases - -import "golang.org/x/text/transform" - -type caseFolder struct{ transform.NopResetter } - -// caseFolder implements the Transformer interface for doing case folding. -func (t *caseFolder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - c := context{dst: dst, src: src, atEOF: atEOF} - for c.next() { - foldFull(&c) - c.checkpoint() - } - return c.ret() -} - -func (t *caseFolder) Span(src []byte, atEOF bool) (n int, err error) { - c := context{src: src, atEOF: atEOF} - for c.next() && isFoldFull(&c) { - c.checkpoint() - } - return c.retSpan() -} - -func makeFold(o options) transform.SpanningTransformer { - // TODO: Special case folding, through option Language, Special/Turkic, or - // both. - // TODO: Implement Compact options. - return &caseFolder{} -} diff --git a/vendor/golang.org/x/text/cases/fold_test.go b/vendor/golang.org/x/text/cases/fold_test.go deleted file mode 100644 index ca939c7c..00000000 --- a/vendor/golang.org/x/text/cases/fold_test.go +++ /dev/null @@ -1,51 +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 cases - -import ( - "testing" - - "golang.org/x/text/internal/testtext" -) - -var foldTestCases = []string{ - "βß\u13f8", // "βssᏰ" - "ab\u13fc\uab7aꭰ", // abᏴᎪᎠ - "affifflast", // affifflast - "Iİiı\u0345", // ii̇iıι - "µµΜΜςσΣΣ", // μμμμσσσσ -} - -func TestFold(t *testing.T) { - for _, tc := range foldTestCases { - testEntry := func(name string, c Caser, m func(r rune) string) { - want := "" - for _, r := range tc { - want += m(r) - } - if got := c.String(tc); got != want { - t.Errorf("%s(%s) = %+q; want %+q", name, tc, got, want) - } - dst := make([]byte, 256) // big enough to hold any result - src := []byte(tc) - v := testtext.AllocsPerRun(20, func() { - c.Transform(dst, src, true) - }) - if v > 0 { - t.Errorf("%s(%s): number of allocs was %f; want 0", name, tc, v) - } - } - testEntry("FullFold", Fold(), func(r rune) string { - return runeFoldData(r).full - }) - // TODO: - // testEntry("SimpleFold", Fold(Compact), func(r rune) string { - // return runeFoldData(r).simple - // }) - // testEntry("SpecialFold", Fold(Turkic), func(r rune) string { - // return runeFoldData(r).special - // }) - } -} diff --git a/vendor/golang.org/x/text/cases/gen.go b/vendor/golang.org/x/text/cases/gen.go deleted file mode 100644 index 1cfe1c02..00000000 --- a/vendor/golang.org/x/text/cases/gen.go +++ /dev/null @@ -1,839 +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. - -// +build ignore - -// This program generates the trie for casing operations. The Unicode casing -// algorithm requires the lookup of various properties and mappings for each -// rune. The table generated by this generator combines several of the most -// frequently used of these into a single trie so that they can be accessed -// with a single lookup. -package main - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "log" - "reflect" - "strconv" - "strings" - "unicode" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/triegen" - "golang.org/x/text/internal/ucd" - "golang.org/x/text/unicode/norm" -) - -func main() { - gen.Init() - genTables() - genTablesTest() - gen.Repackage("gen_trieval.go", "trieval.go", "cases") -} - -// runeInfo contains all information for a rune that we care about for casing -// operations. -type runeInfo struct { - Rune rune - - entry info // trie value for this rune. - - CaseMode info - - // Simple case mappings. - Simple [1 + maxCaseMode][]rune - - // Special casing - HasSpecial bool - Conditional bool - Special [1 + maxCaseMode][]rune - - // Folding - FoldSimple rune - FoldSpecial rune - FoldFull []rune - - // TODO: FC_NFKC, or equivalent data. - - // Properties - SoftDotted bool - CaseIgnorable bool - Cased bool - DecomposeGreek bool - BreakType string - BreakCat breakCategory - - // We care mostly about 0, Above, and IotaSubscript. - CCC byte -} - -type breakCategory int - -const ( - breakBreak breakCategory = iota - breakLetter - breakMid -) - -// mapping returns the case mapping for the given case type. -func (r *runeInfo) mapping(c info) string { - if r.HasSpecial { - return string(r.Special[c]) - } - if len(r.Simple[c]) != 0 { - return string(r.Simple[c]) - } - return string(r.Rune) -} - -func parse(file string, f func(p *ucd.Parser)) { - ucd.Parse(gen.OpenUCDFile(file), f) -} - -func parseUCD() []runeInfo { - chars := make([]runeInfo, unicode.MaxRune) - - get := func(r rune) *runeInfo { - c := &chars[r] - c.Rune = r - return c - } - - parse("UnicodeData.txt", func(p *ucd.Parser) { - ri := get(p.Rune(0)) - ri.CCC = byte(p.Int(ucd.CanonicalCombiningClass)) - ri.Simple[cLower] = p.Runes(ucd.SimpleLowercaseMapping) - ri.Simple[cUpper] = p.Runes(ucd.SimpleUppercaseMapping) - ri.Simple[cTitle] = p.Runes(ucd.SimpleTitlecaseMapping) - if p.String(ucd.GeneralCategory) == "Lt" { - ri.CaseMode = cTitle - } - }) - - // <code>; <property> - parse("PropList.txt", func(p *ucd.Parser) { - if p.String(1) == "Soft_Dotted" { - chars[p.Rune(0)].SoftDotted = true - } - }) - - // <code>; <word break type> - parse("DerivedCoreProperties.txt", func(p *ucd.Parser) { - ri := get(p.Rune(0)) - switch p.String(1) { - case "Case_Ignorable": - ri.CaseIgnorable = true - case "Cased": - ri.Cased = true - case "Lowercase": - ri.CaseMode = cLower - case "Uppercase": - ri.CaseMode = cUpper - } - }) - - // <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? - parse("SpecialCasing.txt", func(p *ucd.Parser) { - // We drop all conditional special casing and deal with them manually in - // the language-specific case mappers. Rune 0x03A3 is the only one with - // a conditional formatting that is not language-specific. However, - // dealing with this letter is tricky, especially in a streaming - // context, so we deal with it in the Caser for Greek specifically. - ri := get(p.Rune(0)) - if p.String(4) == "" { - ri.HasSpecial = true - ri.Special[cLower] = p.Runes(1) - ri.Special[cTitle] = p.Runes(2) - ri.Special[cUpper] = p.Runes(3) - } else { - ri.Conditional = true - } - }) - - // TODO: Use text breaking according to UAX #29. - // <code>; <word break type> - parse("auxiliary/WordBreakProperty.txt", func(p *ucd.Parser) { - ri := get(p.Rune(0)) - ri.BreakType = p.String(1) - - // We collapse the word breaking properties onto the categories we need. - switch p.String(1) { // TODO: officially we need to canonicalize. - case "MidLetter", "MidNumLet", "Single_Quote": - ri.BreakCat = breakMid - if !ri.CaseIgnorable { - // finalSigma relies on the fact that all breakMid runes are - // also a Case_Ignorable. Revisit this code when this changes. - log.Fatalf("Rune %U, which has a break category mid, is not a case ignorable", ri) - } - case "ALetter", "Hebrew_Letter", "Numeric", "Extend", "ExtendNumLet", "Format", "ZWJ": - ri.BreakCat = breakLetter - } - }) - - // <code>; <type>; <mapping> - parse("CaseFolding.txt", func(p *ucd.Parser) { - ri := get(p.Rune(0)) - switch p.String(1) { - case "C": - ri.FoldSimple = p.Rune(2) - ri.FoldFull = p.Runes(2) - case "S": - ri.FoldSimple = p.Rune(2) - case "T": - ri.FoldSpecial = p.Rune(2) - case "F": - ri.FoldFull = p.Runes(2) - default: - log.Fatalf("%U: unknown type: %s", p.Rune(0), p.String(1)) - } - }) - - return chars -} - -func genTables() { - chars := parseUCD() - verifyProperties(chars) - - t := triegen.NewTrie("case") - for i := range chars { - c := &chars[i] - makeEntry(c) - t.Insert(rune(i), uint64(c.entry)) - } - - w := gen.NewCodeWriter() - defer w.WriteVersionedGoFile("tables.go", "cases") - - gen.WriteUnicodeVersion(w) - - // TODO: write CLDR version after adding a mechanism to detect that the - // tables on which the manually created locale-sensitive casing code is - // based hasn't changed. - - w.WriteVar("xorData", string(xorData)) - w.WriteVar("exceptions", string(exceptionData)) - - sz, err := t.Gen(w, triegen.Compact(&sparseCompacter{})) - if err != nil { - log.Fatal(err) - } - w.Size += sz -} - -func makeEntry(ri *runeInfo) { - if ri.CaseIgnorable { - if ri.Cased { - ri.entry = cIgnorableCased - } else { - ri.entry = cIgnorableUncased - } - } else { - ri.entry = ri.CaseMode - } - - // TODO: handle soft-dotted. - - ccc := cccOther - switch ri.CCC { - case 0: // Not_Reordered - ccc = cccZero - case above: // Above - ccc = cccAbove - } - switch ri.BreakCat { - case breakBreak: - ccc = cccBreak - case breakMid: - ri.entry |= isMidBit - } - - ri.entry |= ccc - - if ri.CaseMode == cUncased { - return - } - - // Need to do something special. - if ri.CaseMode == cTitle || ri.HasSpecial || ri.mapping(cTitle) != ri.mapping(cUpper) { - makeException(ri) - return - } - if f := string(ri.FoldFull); len(f) > 0 && f != ri.mapping(cUpper) && f != ri.mapping(cLower) { - makeException(ri) - return - } - - // Rune is either lowercase or uppercase. - - orig := string(ri.Rune) - mapped := "" - if ri.CaseMode == cUpper { - mapped = ri.mapping(cLower) - } else { - mapped = ri.mapping(cUpper) - } - - if len(orig) != len(mapped) { - makeException(ri) - return - } - - if string(ri.FoldFull) == ri.mapping(cUpper) { - ri.entry |= inverseFoldBit - } - - n := len(orig) - - // Create per-byte XOR mask. - var b []byte - for i := 0; i < n; i++ { - b = append(b, orig[i]^mapped[i]) - } - - // Remove leading 0 bytes, but keep at least one byte. - for ; len(b) > 1 && b[0] == 0; b = b[1:] { - } - - if len(b) == 1 && b[0]&0xc0 == 0 { - ri.entry |= info(b[0]) << xorShift - return - } - - key := string(b) - x, ok := xorCache[key] - if !ok { - xorData = append(xorData, 0) // for detecting start of sequence - xorData = append(xorData, b...) - - x = len(xorData) - 1 - xorCache[key] = x - } - ri.entry |= info(x<<xorShift) | xorIndexBit -} - -var xorCache = map[string]int{} - -// xorData contains byte-wise XOR data for the least significant bytes of a -// UTF-8 encoded rune. An index points to the last byte. The sequence starts -// with a zero terminator. -var xorData = []byte{} - -// See the comments in gen_trieval.go re "the exceptions slice". -var exceptionData = []byte{0} - -// makeException encodes case mappings that cannot be expressed in a simple -// XOR diff. -func makeException(ri *runeInfo) { - ccc := ri.entry & cccMask - // Set exception bit and retain case type. - ri.entry &= 0x0007 - ri.entry |= exceptionBit - - if len(exceptionData) >= 1<<numExceptionBits { - log.Fatalf("%U:exceptionData too large %x > %d bits", ri.Rune, len(exceptionData), numExceptionBits) - } - - // Set the offset in the exceptionData array. - ri.entry |= info(len(exceptionData) << exceptionShift) - - orig := string(ri.Rune) - tc := ri.mapping(cTitle) - uc := ri.mapping(cUpper) - lc := ri.mapping(cLower) - ff := string(ri.FoldFull) - - // addString sets the length of a string and adds it to the expansions array. - addString := func(s string, b *byte) { - if len(s) == 0 { - // Zero-length mappings exist, but only for conditional casing, - // which we are representing outside of this table. - log.Fatalf("%U: has zero-length mapping.", ri.Rune) - } - *b <<= 3 - if s != orig { - n := len(s) - if n > 7 { - log.Fatalf("%U: mapping larger than 7 (%d)", ri.Rune, n) - } - *b |= byte(n) - exceptionData = append(exceptionData, s...) - } - } - - // byte 0: - exceptionData = append(exceptionData, byte(ccc)|byte(len(ff))) - - // byte 1: - p := len(exceptionData) - exceptionData = append(exceptionData, 0) - - if len(ff) > 7 { // May be zero-length. - log.Fatalf("%U: fold string larger than 7 (%d)", ri.Rune, len(ff)) - } - exceptionData = append(exceptionData, ff...) - ct := ri.CaseMode - if ct != cLower { - addString(lc, &exceptionData[p]) - } - if ct != cUpper { - addString(uc, &exceptionData[p]) - } - if ct != cTitle { - // If title is the same as upper, we set it to the original string so - // that it will be marked as not present. This implies title case is - // the same as upper case. - if tc == uc { - tc = orig - } - addString(tc, &exceptionData[p]) - } -} - -// sparseCompacter is a trie value block Compacter. There are many cases where -// successive runes alternate between lower- and upper-case. This Compacter -// exploits this by adding a special case type where the case value is obtained -// from or-ing it with the least-significant bit of the rune, creating large -// ranges of equal case values that compress well. -type sparseCompacter struct { - sparseBlocks [][]uint16 - sparseOffsets []uint16 - sparseCount int -} - -// makeSparse returns the number of elements that compact block would contain -// as well as the modified values. -func makeSparse(vals []uint64) ([]uint16, int) { - // Copy the values. - values := make([]uint16, len(vals)) - for i, v := range vals { - values[i] = uint16(v) - } - - alt := func(i int, v uint16) uint16 { - if cm := info(v & fullCasedMask); cm == cUpper || cm == cLower { - // Convert cLower or cUpper to cXORCase value, which has the form 11x. - xor := v - xor &^= 1 - xor |= uint16(i&1) ^ (v & 1) - xor |= 0x4 - return xor - } - return v - } - - var count int - var previous uint16 - for i, v := range values { - if v != 0 { - // Try if the unmodified value is equal to the previous. - if v == previous { - continue - } - - // Try if the xor-ed value is equal to the previous value. - a := alt(i, v) - if a == previous { - values[i] = a - continue - } - - // This is a new value. - count++ - - // Use the xor-ed value if it will be identical to the next value. - if p := i + 1; p < len(values) && alt(p, values[p]) == a { - values[i] = a - v = a - } - } - previous = v - } - return values, count -} - -func (s *sparseCompacter) Size(v []uint64) (int, bool) { - _, n := makeSparse(v) - - // We limit using this method to having 16 entries. - if n > 16 { - return 0, false - } - - return 2 + int(reflect.TypeOf(valueRange{}).Size())*n, true -} - -func (s *sparseCompacter) Store(v []uint64) uint32 { - h := uint32(len(s.sparseOffsets)) - values, sz := makeSparse(v) - s.sparseBlocks = append(s.sparseBlocks, values) - s.sparseOffsets = append(s.sparseOffsets, uint16(s.sparseCount)) - s.sparseCount += sz - return h -} - -func (s *sparseCompacter) Handler() string { - // The sparse global variable and its lookup method is defined in gen_trieval.go. - return "sparse.lookup" -} - -func (s *sparseCompacter) Print(w io.Writer) (retErr error) { - p := func(format string, args ...interface{}) { - _, err := fmt.Fprintf(w, format, args...) - if retErr == nil && err != nil { - retErr = err - } - } - - ls := len(s.sparseBlocks) - if ls == len(s.sparseOffsets) { - s.sparseOffsets = append(s.sparseOffsets, uint16(s.sparseCount)) - } - p("// sparseOffsets: %d entries, %d bytes\n", ls+1, (ls+1)*2) - p("var sparseOffsets = %#v\n\n", s.sparseOffsets) - - ns := s.sparseCount - p("// sparseValues: %d entries, %d bytes\n", ns, ns*4) - p("var sparseValues = [%d]valueRange {", ns) - for i, values := range s.sparseBlocks { - p("\n// Block %#x, offset %#x", i, s.sparseOffsets[i]) - var v uint16 - for i, nv := range values { - if nv != v { - if v != 0 { - p(",hi:%#02x},", 0x80+i-1) - } - if nv != 0 { - p("\n{value:%#04x,lo:%#02x", nv, 0x80+i) - } - } - v = nv - } - if v != 0 { - p(",hi:%#02x},", 0x80+len(values)-1) - } - } - p("\n}\n\n") - return -} - -// verifyProperties that properties of the runes that are relied upon in the -// implementation. Each property is marked with an identifier that is referred -// to in the places where it is used. -func verifyProperties(chars []runeInfo) { - for i, c := range chars { - r := rune(i) - - // Rune properties. - - // A.1: modifier never changes on lowercase. [ltLower] - if c.CCC > 0 && unicode.ToLower(r) != r { - log.Fatalf("%U: non-starter changes when lowercased", r) - } - - // A.2: properties of decompositions starting with I or J. [ltLower] - d := norm.NFD.PropertiesString(string(r)).Decomposition() - if len(d) > 0 { - if d[0] == 'I' || d[0] == 'J' { - // A.2.1: we expect at least an ASCII character and a modifier. - if len(d) < 3 { - log.Fatalf("%U: length of decomposition was %d; want >= 3", r, len(d)) - } - - // All subsequent runes are modifiers and all have the same CCC. - runes := []rune(string(d[1:])) - ccc := chars[runes[0]].CCC - - for _, mr := range runes[1:] { - mc := chars[mr] - - // A.2.2: all modifiers have a CCC of Above or less. - if ccc == 0 || ccc > above { - log.Fatalf("%U: CCC of successive rune (%U) was %d; want (0,230]", r, mr, ccc) - } - - // A.2.3: a sequence of modifiers all have the same CCC. - if mc.CCC != ccc { - log.Fatalf("%U: CCC of follow-up modifier (%U) was %d; want %d", r, mr, mc.CCC, ccc) - } - - // A.2.4: for each trailing r, r in [0x300, 0x311] <=> CCC == Above. - if (ccc == above) != (0x300 <= mr && mr <= 0x311) { - log.Fatalf("%U: modifier %U in [U+0300, U+0311] != ccc(%U) == 230", r, mr, mr) - } - - if i += len(string(mr)); i >= len(d) { - break - } - } - } - } - - // A.3: no U+0307 in decomposition of Soft-Dotted rune. [ltUpper] - if unicode.Is(unicode.Soft_Dotted, r) && strings.Contains(string(d), "\u0307") { - log.Fatalf("%U: decomposition of soft-dotted rune may not contain U+0307", r) - } - - // A.4: only rune U+0345 may be of CCC Iota_Subscript. [elUpper] - if c.CCC == iotaSubscript && r != 0x0345 { - log.Fatalf("%U: only rune U+0345 may have CCC Iota_Subscript", r) - } - - // A.5: soft-dotted runes do not have exceptions. - if c.SoftDotted && c.entry&exceptionBit != 0 { - log.Fatalf("%U: soft-dotted has exception", r) - } - - // A.6: Greek decomposition. [elUpper] - if unicode.Is(unicode.Greek, r) { - if b := norm.NFD.PropertiesString(string(r)).Decomposition(); b != nil { - runes := []rune(string(b)) - // A.6.1: If a Greek rune decomposes and the first rune of the - // decomposition is greater than U+00FF, the rune is always - // great and not a modifier. - if f := runes[0]; unicode.IsMark(f) || f > 0xFF && !unicode.Is(unicode.Greek, f) { - log.Fatalf("%U: expected first rune of Greek decomposition to be letter, found %U", r, f) - } - // A.6.2: Any follow-up rune in a Greek decomposition is a - // modifier of which the first should be gobbled in - // decomposition. - for _, m := range runes[1:] { - switch m { - case 0x0313, 0x0314, 0x0301, 0x0300, 0x0306, 0x0342, 0x0308, 0x0304, 0x345: - default: - log.Fatalf("%U: modifier %U is outside of expected Greek modifier set", r, m) - } - } - } - } - - // Breaking properties. - - // B.1: all runes with CCC > 0 are of break type Extend. - if c.CCC > 0 && c.BreakType != "Extend" { - log.Fatalf("%U: CCC == %d, but got break type %s; want Extend", r, c.CCC, c.BreakType) - } - - // B.2: all cased runes with c.CCC == 0 are of break type ALetter. - if c.CCC == 0 && c.Cased && c.BreakType != "ALetter" { - log.Fatalf("%U: cased, but got break type %s; want ALetter", r, c.BreakType) - } - - // B.3: letter category. - if c.CCC == 0 && c.BreakCat != breakBreak && !c.CaseIgnorable { - if c.BreakCat != breakLetter { - log.Fatalf("%U: check for letter break type gave %d; want %d", r, c.BreakCat, breakLetter) - } - } - } -} - -func genTablesTest() { - w := &bytes.Buffer{} - - fmt.Fprintln(w, "var (") - printProperties(w, "DerivedCoreProperties.txt", "Case_Ignorable", verifyIgnore) - - // We discard the output as we know we have perfect functions. We run them - // just to verify the properties are correct. - n := printProperties(ioutil.Discard, "DerivedCoreProperties.txt", "Cased", verifyCased) - n += printProperties(ioutil.Discard, "DerivedCoreProperties.txt", "Lowercase", verifyLower) - n += printProperties(ioutil.Discard, "DerivedCoreProperties.txt", "Uppercase", verifyUpper) - if n > 0 { - log.Fatalf("One of the discarded properties does not have a perfect filter.") - } - - // <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? - fmt.Fprintln(w, "\tspecial = map[rune]struct{ toLower, toTitle, toUpper string }{") - parse("SpecialCasing.txt", func(p *ucd.Parser) { - // Skip conditional entries. - if p.String(4) != "" { - return - } - r := p.Rune(0) - fmt.Fprintf(w, "\t\t0x%04x: {%q, %q, %q},\n", - r, string(p.Runes(1)), string(p.Runes(2)), string(p.Runes(3))) - }) - fmt.Fprint(w, "\t}\n\n") - - // <code>; <type>; <runes> - table := map[rune]struct{ simple, full, special string }{} - parse("CaseFolding.txt", func(p *ucd.Parser) { - r := p.Rune(0) - t := p.String(1) - v := string(p.Runes(2)) - if t != "T" && v == string(unicode.ToLower(r)) { - return - } - x := table[r] - switch t { - case "C": - x.full = v - x.simple = v - case "S": - x.simple = v - case "F": - x.full = v - case "T": - x.special = v - } - table[r] = x - }) - fmt.Fprintln(w, "\tfoldMap = map[rune]struct{ simple, full, special string }{") - for r := rune(0); r < 0x10FFFF; r++ { - x, ok := table[r] - if !ok { - continue - } - fmt.Fprintf(w, "\t\t0x%04x: {%q, %q, %q},\n", r, x.simple, x.full, x.special) - } - fmt.Fprint(w, "\t}\n\n") - - // Break property - notBreak := map[rune]bool{} - parse("auxiliary/WordBreakProperty.txt", func(p *ucd.Parser) { - switch p.String(1) { - case "Extend", "Format", "MidLetter", "MidNumLet", "Single_Quote", - "ALetter", "Hebrew_Letter", "Numeric", "ExtendNumLet", "ZWJ": - notBreak[p.Rune(0)] = true - } - }) - - fmt.Fprintln(w, "\tbreakProp = []struct{ lo, hi rune }{") - inBreak := false - for r := rune(0); r <= lastRuneForTesting; r++ { - if isBreak := !notBreak[r]; isBreak != inBreak { - if isBreak { - fmt.Fprintf(w, "\t\t{0x%x, ", r) - } else { - fmt.Fprintf(w, "0x%x},\n", r-1) - } - inBreak = isBreak - } - } - if inBreak { - fmt.Fprintf(w, "0x%x},\n", lastRuneForTesting) - } - fmt.Fprint(w, "\t}\n\n") - - // Word break test - // Filter out all samples that do not contain cased characters. - cased := map[rune]bool{} - parse("DerivedCoreProperties.txt", func(p *ucd.Parser) { - if p.String(1) == "Cased" { - cased[p.Rune(0)] = true - } - }) - - fmt.Fprintln(w, "\tbreakTest = []string{") - parse("auxiliary/WordBreakTest.txt", func(p *ucd.Parser) { - c := strings.Split(p.String(0), " ") - - const sep = '|' - numCased := 0 - test := "" - for ; len(c) >= 2; c = c[2:] { - if c[0] == "÷" && test != "" { - test += string(sep) - } - i, err := strconv.ParseUint(c[1], 16, 32) - r := rune(i) - if err != nil { - log.Fatalf("Invalid rune %q.", c[1]) - } - if r == sep { - log.Fatalf("Separator %q not allowed in test data. Pick another one.", sep) - } - if cased[r] { - numCased++ - } - test += string(r) - } - if numCased > 1 { - fmt.Fprintf(w, "\t\t%q,\n", test) - } - }) - fmt.Fprintln(w, "\t}") - - fmt.Fprintln(w, ")") - - gen.WriteVersionedGoFile("tables_test.go", "cases", w.Bytes()) -} - -// These functions are just used for verification that their definition have not -// changed in the Unicode Standard. - -func verifyCased(r rune) bool { - return verifyLower(r) || verifyUpper(r) || unicode.IsTitle(r) -} - -func verifyLower(r rune) bool { - return unicode.IsLower(r) || unicode.Is(unicode.Other_Lowercase, r) -} - -func verifyUpper(r rune) bool { - return unicode.IsUpper(r) || unicode.Is(unicode.Other_Uppercase, r) -} - -// verifyIgnore is an approximation of the Case_Ignorable property using the -// core unicode package. It is used to reduce the size of the test data. -func verifyIgnore(r rune) bool { - props := []*unicode.RangeTable{ - unicode.Mn, - unicode.Me, - unicode.Cf, - unicode.Lm, - unicode.Sk, - } - for _, p := range props { - if unicode.Is(p, r) { - return true - } - } - return false -} - -// printProperties prints tables of rune properties from the given UCD file. -// A filter func f can be given to exclude certain values. A rune r will have -// the indicated property if it is in the generated table or if f(r). -func printProperties(w io.Writer, file, property string, f func(r rune) bool) int { - verify := map[rune]bool{} - n := 0 - varNameParts := strings.Split(property, "_") - varNameParts[0] = strings.ToLower(varNameParts[0]) - fmt.Fprintf(w, "\t%s = map[rune]bool{\n", strings.Join(varNameParts, "")) - parse(file, func(p *ucd.Parser) { - if p.String(1) == property { - r := p.Rune(0) - verify[r] = true - if !f(r) { - n++ - fmt.Fprintf(w, "\t\t0x%.4x: true,\n", r) - } - } - }) - fmt.Fprint(w, "\t}\n\n") - - // Verify that f is correct, that is, it represents a subset of the property. - for r := rune(0); r <= lastRuneForTesting; r++ { - if !verify[r] && f(r) { - log.Fatalf("Incorrect filter func for property %q.", property) - } - } - return n -} - -// The newCaseTrie, sparseValues and sparseOffsets definitions below are -// placeholders referred to by gen_trieval.go. The real definitions are -// generated by this program and written to tables.go. - -func newCaseTrie(int) int { return 0 } - -var ( - sparseValues [0]valueRange - sparseOffsets [0]uint16 -) diff --git a/vendor/golang.org/x/text/cases/gen_trieval.go b/vendor/golang.org/x/text/cases/gen_trieval.go deleted file mode 100644 index 376d22c8..00000000 --- a/vendor/golang.org/x/text/cases/gen_trieval.go +++ /dev/null @@ -1,219 +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. - -// +build ignore - -package main - -// This file contains definitions for interpreting the trie value of the case -// trie generated by "go run gen*.go". It is shared by both the generator -// program and the resultant package. Sharing is achieved by the generator -// copying gen_trieval.go to trieval.go and changing what's above this comment. - -// info holds case information for a single rune. It is the value returned -// by a trie lookup. Most mapping information can be stored in a single 16-bit -// value. If not, for example when a rune is mapped to multiple runes, the value -// stores some basic case data and an index into an array with additional data. -// -// The per-rune values have the following format: -// -// if (exception) { -// 15..5 unsigned exception index -// 4 unused -// } else { -// 15..8 XOR pattern or index to XOR pattern for case mapping -// Only 13..8 are used for XOR patterns. -// 7 inverseFold (fold to upper, not to lower) -// 6 index: interpret the XOR pattern as an index -// or isMid if case mode is cIgnorableUncased. -// 5..4 CCC: zero (normal or break), above or other -// } -// 3 exception: interpret this value as an exception index -// (TODO: is this bit necessary? Probably implied from case mode.) -// 2..0 case mode -// -// For the non-exceptional cases, a rune must be either uncased, lowercase or -// uppercase. If the rune is cased, the XOR pattern maps either a lowercase -// rune to uppercase or an uppercase rune to lowercase (applied to the 10 -// least-significant bits of the rune). -// -// See the definitions below for a more detailed description of the various -// bits. -type info uint16 - -const ( - casedMask = 0x0003 - fullCasedMask = 0x0007 - ignorableMask = 0x0006 - ignorableValue = 0x0004 - - inverseFoldBit = 1 << 7 - isMidBit = 1 << 6 - - exceptionBit = 1 << 3 - exceptionShift = 5 - numExceptionBits = 11 - - xorIndexBit = 1 << 6 - xorShift = 8 - - // There is no mapping if all xor bits and the exception bit are zero. - hasMappingMask = 0xff80 | exceptionBit -) - -// The case mode bits encodes the case type of a rune. This includes uncased, -// title, upper and lower case and case ignorable. (For a definition of these -// terms see Chapter 3 of The Unicode Standard Core Specification.) In some rare -// cases, a rune can be both cased and case-ignorable. This is encoded by -// cIgnorableCased. A rune of this type is always lower case. Some runes are -// cased while not having a mapping. -// -// A common pattern for scripts in the Unicode standard is for upper and lower -// case runes to alternate for increasing rune values (e.g. the accented Latin -// ranges starting from U+0100 and U+1E00 among others and some Cyrillic -// characters). We use this property by defining a cXORCase mode, where the case -// mode (always upper or lower case) is derived from the rune value. As the XOR -// pattern for case mappings is often identical for successive runes, using -// cXORCase can result in large series of identical trie values. This, in turn, -// allows us to better compress the trie blocks. -const ( - cUncased info = iota // 000 - cTitle // 001 - cLower // 010 - cUpper // 011 - cIgnorableUncased // 100 - cIgnorableCased // 101 // lower case if mappings exist - cXORCase // 11x // case is cLower | ((rune&1) ^ x) - - maxCaseMode = cUpper -) - -func (c info) isCased() bool { - return c&casedMask != 0 -} - -func (c info) isCaseIgnorable() bool { - return c&ignorableMask == ignorableValue -} - -func (c info) isNotCasedAndNotCaseIgnorable() bool { - return c&fullCasedMask == 0 -} - -func (c info) isCaseIgnorableAndNotCased() bool { - return c&fullCasedMask == cIgnorableUncased -} - -func (c info) isMid() bool { - return c&(fullCasedMask|isMidBit) == isMidBit|cIgnorableUncased -} - -// The case mapping implementation will need to know about various Canonical -// Combining Class (CCC) values. We encode two of these in the trie value: -// cccZero (0) and cccAbove (230). If the value is cccOther, it means that -// CCC(r) > 0, but not 230. A value of cccBreak means that CCC(r) == 0 and that -// the rune also has the break category Break (see below). -const ( - cccBreak info = iota << 4 - cccZero - cccAbove - cccOther - - cccMask = cccBreak | cccZero | cccAbove | cccOther -) - -const ( - starter = 0 - above = 230 - iotaSubscript = 240 -) - -// The exceptions slice holds data that does not fit in a normal info entry. -// The entry is pointed to by the exception index in an entry. It has the -// following format: -// -// Header -// byte 0: -// 7..6 unused -// 5..4 CCC type (same bits as entry) -// 3 unused -// 2..0 length of fold -// -// byte 1: -// 7..6 unused -// 5..3 length of 1st mapping of case type -// 2..0 length of 2nd mapping of case type -// -// case 1st 2nd -// lower -> upper, title -// upper -> lower, title -// title -> lower, upper -// -// Lengths with the value 0x7 indicate no value and implies no change. -// A length of 0 indicates a mapping to zero-length string. -// -// Body bytes: -// case folding bytes -// lowercase mapping bytes -// uppercase mapping bytes -// titlecase mapping bytes -// closure mapping bytes (for NFKC_Casefold). (TODO) -// -// Fallbacks: -// missing fold -> lower -// missing title -> upper -// all missing -> original rune -// -// exceptions starts with a dummy byte to enforce that there is no zero index -// value. -const ( - lengthMask = 0x07 - lengthBits = 3 - noChange = 0 -) - -// References to generated trie. - -var trie = newCaseTrie(0) - -var sparse = sparseBlocks{ - values: sparseValues[:], - offsets: sparseOffsets[:], -} - -// Sparse block lookup code. - -// valueRange is an entry in a sparse block. -type valueRange struct { - value uint16 - lo, hi byte -} - -type sparseBlocks struct { - values []valueRange - offsets []uint16 -} - -// lookup returns the value from values block n for byte b using binary search. -func (s *sparseBlocks) lookup(n uint32, b byte) uint16 { - lo := s.offsets[n] - hi := s.offsets[n+1] - for lo < hi { - m := lo + (hi-lo)/2 - r := s.values[m] - if r.lo <= b && b <= r.hi { - return r.value - } - if b < r.lo { - hi = m - } else { - lo = m + 1 - } - } - return 0 -} - -// lastRuneForTesting is the last rune used for testing. Everything after this -// is boring. -const lastRuneForTesting = rune(0x1FFFF) diff --git a/vendor/golang.org/x/text/cases/icu.go b/vendor/golang.org/x/text/cases/icu.go deleted file mode 100644 index 46530d1e..00000000 --- a/vendor/golang.org/x/text/cases/icu.go +++ /dev/null @@ -1,61 +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. - -// +build icu - -package cases - -// Ideally these functions would be defined in a test file, but go test doesn't -// allow CGO in tests. The build tag should ensure either way that these -// functions will not end up in the package. - -// TODO: Ensure that the correct ICU version is set. - -/* -#cgo LDFLAGS: -licui18n.57 -licuuc.57 -#include <stdlib.h> -#include <unicode/ustring.h> -#include <unicode/utypes.h> -#include <unicode/localpointer.h> -#include <unicode/ucasemap.h> -*/ -import "C" - -import "unsafe" - -func doICU(tag, caser, input string) string { - err := C.UErrorCode(0) - loc := C.CString(tag) - cm := C.ucasemap_open(loc, C.uint32_t(0), &err) - - buf := make([]byte, len(input)*4) - dst := (*C.char)(unsafe.Pointer(&buf[0])) - src := C.CString(input) - - cn := C.int32_t(0) - - switch caser { - case "fold": - cn = C.ucasemap_utf8FoldCase(cm, - dst, C.int32_t(len(buf)), - src, C.int32_t(len(input)), - &err) - case "lower": - cn = C.ucasemap_utf8ToLower(cm, - dst, C.int32_t(len(buf)), - src, C.int32_t(len(input)), - &err) - case "upper": - cn = C.ucasemap_utf8ToUpper(cm, - dst, C.int32_t(len(buf)), - src, C.int32_t(len(input)), - &err) - case "title": - cn = C.ucasemap_utf8ToTitle(cm, - dst, C.int32_t(len(buf)), - src, C.int32_t(len(input)), - &err) - } - return string(buf[:cn]) -} diff --git a/vendor/golang.org/x/text/cases/icu_test.go b/vendor/golang.org/x/text/cases/icu_test.go deleted file mode 100644 index 3d07e258..00000000 --- a/vendor/golang.org/x/text/cases/icu_test.go +++ /dev/null @@ -1,210 +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. - -// +build icu - -package cases - -import ( - "path" - "strings" - "testing" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" - "golang.org/x/text/unicode/norm" -) - -func TestICUConformance(t *testing.T) { - // Build test set. - input := []string{ - "a.a a_a", - "a\u05d0a", - "\u05d0'a", - "a\u03084a", - "a\u0308a", - "a3\u30a3a", - "a\u303aa", - "a_\u303a_a", - "1_a..a", - "1_a.a", - "a..a.", - "a--a-", - "a-a-", - "a\u200ba", - "a\u200b\u200ba", - "a\u00ad\u00ada", // Format - "a\u00ada", - "a''a", // SingleQuote - "a'a", - "a::a", // MidLetter - "a:a", - "a..a", // MidNumLet - "a.a", - "a;;a", // MidNum - "a;a", - "a__a", // ExtendNumlet - "a_a", - "ΟΣ''a", - } - add := func(x interface{}) { - switch v := x.(type) { - case string: - input = append(input, v) - case []string: - for _, s := range v { - input = append(input, s) - } - } - } - for _, tc := range testCases { - add(tc.src) - add(tc.lower) - add(tc.upper) - add(tc.title) - } - for _, tc := range bufferTests { - add(tc.src) - } - for _, tc := range breakTest { - add(strings.Replace(tc, "|", "", -1)) - } - for _, tc := range foldTestCases { - add(tc) - } - - // Compare ICU to Go. - for _, c := range []string{"lower", "upper", "title", "fold"} { - for _, tag := range []string{ - "und", "af", "az", "el", "lt", "nl", "tr", - } { - for _, s := range input { - if exclude(c, tag, s) { - continue - } - testtext.Run(t, path.Join(c, tag, s), func(t *testing.T) { - want := doICU(tag, c, s) - got := doGo(tag, c, s) - if norm.NFC.String(got) != norm.NFC.String(want) { - t.Errorf("\n in %[3]q (%+[3]q)\n got %[1]q (%+[1]q)\n want %[2]q (%+[2]q)", got, want, s) - } - }) - } - } - } -} - -// exclude indicates if a string should be excluded from testing. -func exclude(cm, tag, s string) bool { - list := []struct{ cm, tags, pattern string }{ - // TODO: Go does not handle certain esoteric breaks correctly. This will be - // fixed once we have a real word break iterator. Alternatively, it - // seems like we're not too far off from making it work, so we could - // fix these last steps. But first verify that using a separate word - // breaker does not hurt performance. - {"title", "af nl", "a''a"}, - {"", "", "א'a"}, - - // All the exclusions below seem to be issues with the ICU - // implementation (at version 57) and thus are not marked as TODO. - - // ICU does not handle leading apostrophe for Dutch and - // Afrikaans correctly. See http://unicode.org/cldr/trac/ticket/7078. - {"title", "af nl", "'n"}, - {"title", "af nl", "'N"}, - - // Go terminates the final sigma check after a fixed number of - // ignorables have been found. This ensures that the algorithm can make - // progress in a streaming scenario. - {"lower title", "", "\u039f\u03a3...............................a"}, - // This also applies to upper in Greek. - // NOTE: we could fix the following two cases by adding state to elUpper - // and aztrLower. However, considering a modifier to not belong to the - // preceding letter after the maximum modifiers count is reached is - // consistent with the behavior of unicode/norm. - {"upper", "el", "\u03bf" + strings.Repeat("\u0321", 29) + "\u0313"}, - {"lower", "az tr lt", "I" + strings.Repeat("\u0321", 30) + "\u0307\u0300"}, - {"upper", "lt", "i" + strings.Repeat("\u0321", 30) + "\u0307\u0300"}, - {"lower", "lt", "I" + strings.Repeat("\u0321", 30) + "\u0300"}, - - // ICU title case seems to erroneously removes \u0307 from an upper case - // I unconditionally, instead of only when lowercasing. The ICU - // transform algorithm transforms these cases consistently with our - // implementation. - {"title", "az tr", "\u0307"}, - - // The spec says to remove \u0307 after Soft-Dotted characters. ICU - // transforms conform but ucasemap_utf8ToUpper does not. - {"upper title", "lt", "i\u0307"}, - {"upper title", "lt", "i" + strings.Repeat("\u0321", 29) + "\u0307\u0300"}, - - // Both Unicode and CLDR prescribe an extra explicit dot above after a - // Soft_Dotted character if there are other modifiers. - // ucasemap_utf8ToUpper does not do this; ICU transforms do. - // The issue with ucasemap_utf8ToUpper seems to be that it does not - // consider the modifiers that are part of composition in the evaluation - // of More_Above. For instance, according to the More_Above rule for lt, - // a dotted capital I (U+0130) becomes i\u0307\u0307 (an small i with - // two additional dots). This seems odd, but is correct. ICU is - // definitely not correct as it produces different results for different - // normal forms. For instance, for an İ: - // \u0130 (NFC) -> i\u0307 (incorrect) - // I\u0307 (NFD) -> i\u0307\u0307 (correct) - // We could argue that we should not add a \u0307 if there already is - // one, but this may be hard to get correct and is not conform the - // standard. - {"lower title", "lt", "\u0130"}, - {"lower title", "lt", "\u00cf"}, - - // We are conform ICU ucasemap_utf8ToUpper if we remove support for - // elUpper. However, this is clearly not conform the spec. Moreover, the - // ICU transforms _do_ implement this transform and produces results - // consistent with our implementation. Note that we still prefer to use - // ucasemap_utf8ToUpper instead of transforms as the latter have - // inconsistencies in the word breaking algorithm. - {"upper", "el", "\u0386"}, // GREEK CAPITAL LETTER ALPHA WITH TONOS - {"upper", "el", "\u0389"}, // GREEK CAPITAL LETTER ETA WITH TONOS - {"upper", "el", "\u038A"}, // GREEK CAPITAL LETTER IOTA WITH TONOS - - {"upper", "el", "\u0391"}, // GREEK CAPITAL LETTER ALPHA - {"upper", "el", "\u0397"}, // GREEK CAPITAL LETTER ETA - {"upper", "el", "\u0399"}, // GREEK CAPITAL LETTER IOTA - - {"upper", "el", "\u03AC"}, // GREEK SMALL LETTER ALPHA WITH TONOS - {"upper", "el", "\u03AE"}, // GREEK SMALL LETTER ALPHA WITH ETA - {"upper", "el", "\u03AF"}, // GREEK SMALL LETTER ALPHA WITH IOTA - - {"upper", "el", "\u03B1"}, // GREEK SMALL LETTER ALPHA - {"upper", "el", "\u03B7"}, // GREEK SMALL LETTER ETA - {"upper", "el", "\u03B9"}, // GREEK SMALL LETTER IOTA - } - for _, x := range list { - if x.cm != "" && strings.Index(x.cm, cm) == -1 { - continue - } - if x.tags != "" && strings.Index(x.tags, tag) == -1 { - continue - } - if strings.Index(s, x.pattern) != -1 { - return true - } - } - return false -} - -func doGo(tag, caser, input string) string { - var c Caser - t := language.MustParse(tag) - switch caser { - case "lower": - c = Lower(t) - case "upper": - c = Upper(t) - case "title": - c = Title(t) - case "fold": - c = Fold() - } - return c.String(input) -} diff --git a/vendor/golang.org/x/text/cases/info.go b/vendor/golang.org/x/text/cases/info.go deleted file mode 100644 index 3b51f03d..00000000 --- a/vendor/golang.org/x/text/cases/info.go +++ /dev/null @@ -1,82 +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 cases - -func (c info) cccVal() info { - if c&exceptionBit != 0 { - return info(exceptions[c>>exceptionShift]) & cccMask - } - return c & cccMask -} - -func (c info) cccType() info { - ccc := c.cccVal() - if ccc <= cccZero { - return cccZero - } - return ccc -} - -// TODO: Implement full Unicode breaking algorithm: -// 1) Implement breaking in separate package. -// 2) Use the breaker here. -// 3) Compare table size and performance of using the more generic breaker. -// -// Note that we can extend the current algorithm to be much more accurate. This -// only makes sense, though, if the performance and/or space penalty of using -// the generic breaker is big. Extra data will only be needed for non-cased -// runes, which means there are sufficient bits left in the caseType. -// ICU prohibits breaking in such cases as well. - -// For the purpose of title casing we use an approximation of the Unicode Word -// Breaking algorithm defined in Annex #29: -// http://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table. -// -// For our approximation, we group the Word Break types into the following -// categories, with associated rules: -// -// 1) Letter: -// ALetter, Hebrew_Letter, Numeric, ExtendNumLet, Extend, Format_FE, ZWJ. -// Rule: Never break between consecutive runes of this category. -// -// 2) Mid: -// MidLetter, MidNumLet, Single_Quote. -// (Cf. case-ignorable: MidLetter, MidNumLet, Single_Quote or cat is Mn, -// Me, Cf, Lm or Sk). -// Rule: Don't break between Letter and Mid, but break between two Mids. -// -// 3) Break: -// Any other category: NewLine, MidNum, CR, LF, Double_Quote, Katakana, and -// Other. -// These categories should always result in a break between two cased letters. -// Rule: Always break. -// -// Note 1: the Katakana and MidNum categories can, in esoteric cases, result in -// preventing a break between two cased letters. For now we will ignore this -// (e.g. [ALetter] [ExtendNumLet] [Katakana] [ExtendNumLet] [ALetter] and -// [ALetter] [Numeric] [MidNum] [Numeric] [ALetter].) -// -// Note 2: the rule for Mid is very approximate, but works in most cases. To -// improve, we could store the categories in the trie value and use a FA to -// manage breaks. See TODO comment above. -// -// Note 3: according to the spec, it is possible for the Extend category to -// introduce breaks between other categories grouped in Letter. However, this -// is undesirable for our purposes. ICU prevents breaks in such cases as well. - -// isBreak returns whether this rune should introduce a break. -func (c info) isBreak() bool { - return c.cccVal() == cccBreak -} - -// isLetter returns whether the rune is of break type ALetter, Hebrew_Letter, -// Numeric, ExtendNumLet, or Extend. -func (c info) isLetter() bool { - ccc := c.cccVal() - if ccc == cccZero { - return !c.isCaseIgnorable() - } - return ccc != cccBreak -} diff --git a/vendor/golang.org/x/text/cases/map.go b/vendor/golang.org/x/text/cases/map.go deleted file mode 100644 index 4baebaaa..00000000 --- a/vendor/golang.org/x/text/cases/map.go +++ /dev/null @@ -1,816 +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 cases - -// This file contains the definitions of case mappings for all supported -// languages. The rules for the language-specific tailorings were taken and -// modified from the CLDR transform definitions in common/transforms. - -import ( - "strings" - "unicode" - "unicode/utf8" - - "golang.org/x/text/internal" - "golang.org/x/text/language" - "golang.org/x/text/transform" - "golang.org/x/text/unicode/norm" -) - -// A mapFunc takes a context set to the current rune and writes the mapped -// version to the same context. It may advance the context to the next rune. It -// returns whether a checkpoint is possible: whether the pDst bytes written to -// dst so far won't need changing as we see more source bytes. -type mapFunc func(*context) bool - -// A spanFunc takes a context set to the current rune and returns whether this -// rune would be altered when written to the output. It may advance the context -// to the next rune. It returns whether a checkpoint is possible. -type spanFunc func(*context) bool - -// maxIgnorable defines the maximum number of ignorables to consider for -// lookahead operations. -const maxIgnorable = 30 - -// supported lists the language tags for which we have tailorings. -const supported = "und af az el lt nl tr" - -func init() { - tags := []language.Tag{} - for _, s := range strings.Split(supported, " ") { - tags = append(tags, language.MustParse(s)) - } - matcher = internal.NewInheritanceMatcher(tags) - Supported = language.NewCoverage(tags) -} - -var ( - matcher *internal.InheritanceMatcher - - Supported language.Coverage - - // We keep the following lists separate, instead of having a single per- - // language struct, to give the compiler a chance to remove unused code. - - // Some uppercase mappers are stateless, so we can precompute the - // Transformers and save a bit on runtime allocations. - upperFunc = []struct { - upper mapFunc - span spanFunc - }{ - {nil, nil}, // und - {nil, nil}, // af - {aztrUpper(upper), isUpper}, // az - {elUpper, noSpan}, // el - {ltUpper(upper), noSpan}, // lt - {nil, nil}, // nl - {aztrUpper(upper), isUpper}, // tr - } - - undUpper transform.SpanningTransformer = &undUpperCaser{} - undLower transform.SpanningTransformer = &undLowerCaser{} - undLowerIgnoreSigma transform.SpanningTransformer = &undLowerIgnoreSigmaCaser{} - - lowerFunc = []mapFunc{ - nil, // und - nil, // af - aztrLower, // az - nil, // el - ltLower, // lt - nil, // nl - aztrLower, // tr - } - - titleInfos = []struct { - title mapFunc - lower mapFunc - titleSpan spanFunc - rewrite func(*context) - }{ - {title, lower, isTitle, nil}, // und - {title, lower, isTitle, afnlRewrite}, // af - {aztrUpper(title), aztrLower, isTitle, nil}, // az - {title, lower, isTitle, nil}, // el - {ltUpper(title), ltLower, noSpan, nil}, // lt - {nlTitle, lower, nlTitleSpan, afnlRewrite}, // nl - {aztrUpper(title), aztrLower, isTitle, nil}, // tr - } -) - -func makeUpper(t language.Tag, o options) transform.SpanningTransformer { - _, i, _ := matcher.Match(t) - f := upperFunc[i].upper - if f == nil { - return undUpper - } - return &simpleCaser{f: f, span: upperFunc[i].span} -} - -func makeLower(t language.Tag, o options) transform.SpanningTransformer { - _, i, _ := matcher.Match(t) - f := lowerFunc[i] - if f == nil { - if o.ignoreFinalSigma { - return undLowerIgnoreSigma - } - return undLower - } - if o.ignoreFinalSigma { - return &simpleCaser{f: f, span: isLower} - } - return &lowerCaser{ - first: f, - midWord: finalSigma(f), - } -} - -func makeTitle(t language.Tag, o options) transform.SpanningTransformer { - _, i, _ := matcher.Match(t) - x := &titleInfos[i] - lower := x.lower - if o.noLower { - lower = (*context).copy - } else if !o.ignoreFinalSigma { - lower = finalSigma(lower) - } - return &titleCaser{ - title: x.title, - lower: lower, - titleSpan: x.titleSpan, - rewrite: x.rewrite, - } -} - -func noSpan(c *context) bool { - c.err = transform.ErrEndOfSpan - return false -} - -// TODO: consider a similar special case for the fast majority lower case. This -// is a bit more involved so will require some more precise benchmarking to -// justify it. - -type undUpperCaser struct{ transform.NopResetter } - -// undUpperCaser implements the Transformer interface for doing an upper case -// mapping for the root locale (und). It eliminates the need for an allocation -// as it prevents escaping by not using function pointers. -func (t undUpperCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - c := context{dst: dst, src: src, atEOF: atEOF} - for c.next() { - upper(&c) - c.checkpoint() - } - return c.ret() -} - -func (t undUpperCaser) Span(src []byte, atEOF bool) (n int, err error) { - c := context{src: src, atEOF: atEOF} - for c.next() && isUpper(&c) { - c.checkpoint() - } - return c.retSpan() -} - -// undLowerIgnoreSigmaCaser implements the Transformer interface for doing -// a lower case mapping for the root locale (und) ignoring final sigma -// handling. This casing algorithm is used in some performance-critical packages -// like secure/precis and x/net/http/idna, which warrants its special-casing. -type undLowerIgnoreSigmaCaser struct{ transform.NopResetter } - -func (t undLowerIgnoreSigmaCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - c := context{dst: dst, src: src, atEOF: atEOF} - for c.next() && lower(&c) { - c.checkpoint() - } - return c.ret() - -} - -// Span implements a generic lower-casing. This is possible as isLower works -// for all lowercasing variants. All lowercase variants only vary in how they -// transform a non-lowercase letter. They will never change an already lowercase -// letter. In addition, there is no state. -func (t undLowerIgnoreSigmaCaser) Span(src []byte, atEOF bool) (n int, err error) { - c := context{src: src, atEOF: atEOF} - for c.next() && isLower(&c) { - c.checkpoint() - } - return c.retSpan() -} - -type simpleCaser struct { - context - f mapFunc - span spanFunc -} - -// simpleCaser implements the Transformer interface for doing a case operation -// on a rune-by-rune basis. -func (t *simpleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - c := context{dst: dst, src: src, atEOF: atEOF} - for c.next() && t.f(&c) { - c.checkpoint() - } - return c.ret() -} - -func (t *simpleCaser) Span(src []byte, atEOF bool) (n int, err error) { - c := context{src: src, atEOF: atEOF} - for c.next() && t.span(&c) { - c.checkpoint() - } - return c.retSpan() -} - -// undLowerCaser implements the Transformer interface for doing a lower case -// mapping for the root locale (und) ignoring final sigma handling. This casing -// algorithm is used in some performance-critical packages like secure/precis -// and x/net/http/idna, which warrants its special-casing. -type undLowerCaser struct{ transform.NopResetter } - -func (t undLowerCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - c := context{dst: dst, src: src, atEOF: atEOF} - - for isInterWord := true; c.next(); { - if isInterWord { - if c.info.isCased() { - if !lower(&c) { - break - } - isInterWord = false - } else if !c.copy() { - break - } - } else { - if c.info.isNotCasedAndNotCaseIgnorable() { - if !c.copy() { - break - } - isInterWord = true - } else if !c.hasPrefix("Σ") { - if !lower(&c) { - break - } - } else if !finalSigmaBody(&c) { - break - } - } - c.checkpoint() - } - return c.ret() -} - -func (t undLowerCaser) Span(src []byte, atEOF bool) (n int, err error) { - c := context{src: src, atEOF: atEOF} - for c.next() && isLower(&c) { - c.checkpoint() - } - return c.retSpan() -} - -// lowerCaser implements the Transformer interface. The default Unicode lower -// casing requires different treatment for the first and subsequent characters -// of a word, most notably to handle the Greek final Sigma. -type lowerCaser struct { - undLowerIgnoreSigmaCaser - - context - - first, midWord mapFunc -} - -func (t *lowerCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - t.context = context{dst: dst, src: src, atEOF: atEOF} - c := &t.context - - for isInterWord := true; c.next(); { - if isInterWord { - if c.info.isCased() { - if !t.first(c) { - break - } - isInterWord = false - } else if !c.copy() { - break - } - } else { - if c.info.isNotCasedAndNotCaseIgnorable() { - if !c.copy() { - break - } - isInterWord = true - } else if !t.midWord(c) { - break - } - } - c.checkpoint() - } - return c.ret() -} - -// titleCaser implements the Transformer interface. Title casing algorithms -// distinguish between the first letter of a word and subsequent letters of the -// same word. It uses state to avoid requiring a potentially infinite lookahead. -type titleCaser struct { - context - - // rune mappings used by the actual casing algorithms. - title mapFunc - lower mapFunc - titleSpan spanFunc - - rewrite func(*context) -} - -// Transform implements the standard Unicode title case algorithm as defined in -// Chapter 3 of The Unicode Standard: -// toTitlecase(X): Find the word boundaries in X according to Unicode Standard -// Annex #29, "Unicode Text Segmentation." For each word boundary, find the -// first cased character F following the word boundary. If F exists, map F to -// Titlecase_Mapping(F); then map all characters C between F and the following -// word boundary to Lowercase_Mapping(C). -func (t *titleCaser) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - t.context = context{dst: dst, src: src, atEOF: atEOF, isMidWord: t.isMidWord} - c := &t.context - - if !c.next() { - return c.ret() - } - - for { - p := c.info - if t.rewrite != nil { - t.rewrite(c) - } - - wasMid := p.isMid() - // Break out of this loop on failure to ensure we do not modify the - // state incorrectly. - if p.isCased() { - if !c.isMidWord { - if !t.title(c) { - break - } - c.isMidWord = true - } else if !t.lower(c) { - break - } - } else if !c.copy() { - break - } else if p.isBreak() { - c.isMidWord = false - } - - // As we save the state of the transformer, it is safe to call - // checkpoint after any successful write. - if !(c.isMidWord && wasMid) { - c.checkpoint() - } - - if !c.next() { - break - } - if wasMid && c.info.isMid() { - c.isMidWord = false - } - } - return c.ret() -} - -func (t *titleCaser) Span(src []byte, atEOF bool) (n int, err error) { - t.context = context{src: src, atEOF: atEOF, isMidWord: t.isMidWord} - c := &t.context - - if !c.next() { - return c.retSpan() - } - - for { - p := c.info - if t.rewrite != nil { - t.rewrite(c) - } - - wasMid := p.isMid() - // Break out of this loop on failure to ensure we do not modify the - // state incorrectly. - if p.isCased() { - if !c.isMidWord { - if !t.titleSpan(c) { - break - } - c.isMidWord = true - } else if !isLower(c) { - break - } - } else if p.isBreak() { - c.isMidWord = false - } - // As we save the state of the transformer, it is safe to call - // checkpoint after any successful write. - if !(c.isMidWord && wasMid) { - c.checkpoint() - } - - if !c.next() { - break - } - if wasMid && c.info.isMid() { - c.isMidWord = false - } - } - return c.retSpan() -} - -// finalSigma adds Greek final Sigma handing to another casing function. It -// determines whether a lowercased sigma should be σ or ς, by looking ahead for -// case-ignorables and a cased letters. -func finalSigma(f mapFunc) mapFunc { - return func(c *context) bool { - if !c.hasPrefix("Σ") { - return f(c) - } - return finalSigmaBody(c) - } -} - -func finalSigmaBody(c *context) bool { - // Current rune must be ∑. - - // ::NFD(); - // # 03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA - // Σ } [:case-ignorable:]* [:cased:] → σ; - // [:cased:] [:case-ignorable:]* { Σ → ς; - // ::Any-Lower; - // ::NFC(); - - p := c.pDst - c.writeString("ς") - - // TODO: we should do this here, but right now this will never have an - // effect as this is called when the prefix is Sigma, whereas Dutch and - // Afrikaans only test for an apostrophe. - // - // if t.rewrite != nil { - // t.rewrite(c) - // } - - // We need to do one more iteration after maxIgnorable, as a cased - // letter is not an ignorable and may modify the result. - wasMid := false - for i := 0; i < maxIgnorable+1; i++ { - if !c.next() { - return false - } - if !c.info.isCaseIgnorable() { - // All Midword runes are also case ignorable, so we are - // guaranteed to have a letter or word break here. As we are - // unreading the run, there is no need to unset c.isMidWord; - // the title caser will handle this. - if c.info.isCased() { - // p+1 is guaranteed to be in bounds: if writing ς was - // successful, p+1 will contain the second byte of ς. If not, - // this function will have returned after c.next returned false. - c.dst[p+1]++ // ς → σ - } - c.unreadRune() - return true - } - // A case ignorable may also introduce a word break, so we may need - // to continue searching even after detecting a break. - isMid := c.info.isMid() - if (wasMid && isMid) || c.info.isBreak() { - c.isMidWord = false - } - wasMid = isMid - c.copy() - } - return true -} - -// finalSigmaSpan would be the same as isLower. - -// elUpper implements Greek upper casing, which entails removing a predefined -// set of non-blocked modifiers. Note that these accents should not be removed -// for title casing! -// Example: "Οδός" -> "ΟΔΟΣ". -func elUpper(c *context) bool { - // From CLDR: - // [:Greek:] [^[:ccc=Not_Reordered:][:ccc=Above:]]*? { [\u0313\u0314\u0301\u0300\u0306\u0342\u0308\u0304] → ; - // [:Greek:] [^[:ccc=Not_Reordered:][:ccc=Iota_Subscript:]]*? { \u0345 → ; - - r, _ := utf8.DecodeRune(c.src[c.pSrc:]) - oldPDst := c.pDst - if !upper(c) { - return false - } - if !unicode.Is(unicode.Greek, r) { - return true - } - i := 0 - // Take the properties of the uppercased rune that is already written to the - // destination. This saves us the trouble of having to uppercase the - // decomposed rune again. - if b := norm.NFD.Properties(c.dst[oldPDst:]).Decomposition(); b != nil { - // Restore the destination position and process the decomposed rune. - r, sz := utf8.DecodeRune(b) - if r <= 0xFF { // See A.6.1 - return true - } - c.pDst = oldPDst - // Insert the first rune and ignore the modifiers. See A.6.2. - c.writeBytes(b[:sz]) - i = len(b[sz:]) / 2 // Greek modifiers are always of length 2. - } - - for ; i < maxIgnorable && c.next(); i++ { - switch r, _ := utf8.DecodeRune(c.src[c.pSrc:]); r { - // Above and Iota Subscript - case 0x0300, // U+0300 COMBINING GRAVE ACCENT - 0x0301, // U+0301 COMBINING ACUTE ACCENT - 0x0304, // U+0304 COMBINING MACRON - 0x0306, // U+0306 COMBINING BREVE - 0x0308, // U+0308 COMBINING DIAERESIS - 0x0313, // U+0313 COMBINING COMMA ABOVE - 0x0314, // U+0314 COMBINING REVERSED COMMA ABOVE - 0x0342, // U+0342 COMBINING GREEK PERISPOMENI - 0x0345: // U+0345 COMBINING GREEK YPOGEGRAMMENI - // No-op. Gobble the modifier. - - default: - switch v, _ := trie.lookup(c.src[c.pSrc:]); info(v).cccType() { - case cccZero: - c.unreadRune() - return true - - // We don't need to test for IotaSubscript as the only rune that - // qualifies (U+0345) was already excluded in the switch statement - // above. See A.4. - - case cccAbove: - return c.copy() - default: - // Some other modifier. We're still allowed to gobble Greek - // modifiers after this. - c.copy() - } - } - } - return i == maxIgnorable -} - -// TODO: implement elUpperSpan (low-priority: complex and infrequent). - -func ltLower(c *context) bool { - // From CLDR: - // # Introduce an explicit dot above when lowercasing capital I's and J's - // # whenever there are more accents above. - // # (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek) - // # 0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I - // # 004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J - // # 012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK - // # 00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE - // # 00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE - // # 0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE - // ::NFD(); - // I } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → i \u0307; - // J } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → j \u0307; - // I \u0328 (Į) } [^[:ccc=Not_Reordered:][:ccc=Above:]]* [:ccc=Above:] → i \u0328 \u0307; - // I \u0300 (Ì) → i \u0307 \u0300; - // I \u0301 (Í) → i \u0307 \u0301; - // I \u0303 (Ĩ) → i \u0307 \u0303; - // ::Any-Lower(); - // ::NFC(); - - i := 0 - if r := c.src[c.pSrc]; r < utf8.RuneSelf { - lower(c) - if r != 'I' && r != 'J' { - return true - } - } else { - p := norm.NFD.Properties(c.src[c.pSrc:]) - if d := p.Decomposition(); len(d) >= 3 && (d[0] == 'I' || d[0] == 'J') { - // UTF-8 optimization: the decomposition will only have an above - // modifier if the last rune of the decomposition is in [U+300-U+311]. - // In all other cases, a decomposition starting with I is always - // an I followed by modifiers that are not cased themselves. See A.2. - if d[1] == 0xCC && d[2] <= 0x91 { // A.2.4. - if !c.writeBytes(d[:1]) { - return false - } - c.dst[c.pDst-1] += 'a' - 'A' // lower - - // Assumption: modifier never changes on lowercase. See A.1. - // Assumption: all modifiers added have CCC = Above. See A.2.3. - return c.writeString("\u0307") && c.writeBytes(d[1:]) - } - // In all other cases the additional modifiers will have a CCC - // that is less than 230 (Above). We will insert the U+0307, if - // needed, after these modifiers so that a string in FCD form - // will remain so. See A.2.2. - lower(c) - i = 1 - } else { - return lower(c) - } - } - - for ; i < maxIgnorable && c.next(); i++ { - switch c.info.cccType() { - case cccZero: - c.unreadRune() - return true - case cccAbove: - return c.writeString("\u0307") && c.copy() // See A.1. - default: - c.copy() // See A.1. - } - } - return i == maxIgnorable -} - -// ltLowerSpan would be the same as isLower. - -func ltUpper(f mapFunc) mapFunc { - return func(c *context) bool { - // Unicode: - // 0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE - // - // From CLDR: - // # Remove \u0307 following soft-dotteds (i, j, and the like), with possible - // # intervening non-230 marks. - // ::NFD(); - // [:Soft_Dotted:] [^[:ccc=Not_Reordered:][:ccc=Above:]]* { \u0307 → ; - // ::Any-Upper(); - // ::NFC(); - - // TODO: See A.5. A soft-dotted rune never has an exception. This would - // allow us to overload the exception bit and encode this property in - // info. Need to measure performance impact of this. - r, _ := utf8.DecodeRune(c.src[c.pSrc:]) - oldPDst := c.pDst - if !f(c) { - return false - } - if !unicode.Is(unicode.Soft_Dotted, r) { - return true - } - - // We don't need to do an NFD normalization, as a soft-dotted rune never - // contains U+0307. See A.3. - - i := 0 - for ; i < maxIgnorable && c.next(); i++ { - switch c.info.cccType() { - case cccZero: - c.unreadRune() - return true - case cccAbove: - if c.hasPrefix("\u0307") { - // We don't do a full NFC, but rather combine runes for - // some of the common cases. (Returning NFC or - // preserving normal form is neither a requirement nor - // a possibility anyway). - if !c.next() { - return false - } - if c.dst[oldPDst] == 'I' && c.pDst == oldPDst+1 && c.src[c.pSrc] == 0xcc { - s := "" - switch c.src[c.pSrc+1] { - case 0x80: // U+0300 COMBINING GRAVE ACCENT - s = "\u00cc" // U+00CC LATIN CAPITAL LETTER I WITH GRAVE - case 0x81: // U+0301 COMBINING ACUTE ACCENT - s = "\u00cd" // U+00CD LATIN CAPITAL LETTER I WITH ACUTE - case 0x83: // U+0303 COMBINING TILDE - s = "\u0128" // U+0128 LATIN CAPITAL LETTER I WITH TILDE - case 0x88: // U+0308 COMBINING DIAERESIS - s = "\u00cf" // U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS - default: - } - if s != "" { - c.pDst = oldPDst - return c.writeString(s) - } - } - } - return c.copy() - default: - c.copy() - } - } - return i == maxIgnorable - } -} - -// TODO: implement ltUpperSpan (low priority: complex and infrequent). - -func aztrUpper(f mapFunc) mapFunc { - return func(c *context) bool { - // i→İ; - if c.src[c.pSrc] == 'i' { - return c.writeString("İ") - } - return f(c) - } -} - -func aztrLower(c *context) (done bool) { - // From CLDR: - // # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri - // # 0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE - // İ→i; - // # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i. - // # This matches the behavior of the canonically equivalent I-dot_above - // # 0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE - // # When lowercasing, unless an I is before a dot_above, it turns into a dotless i. - // # 0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I - // I([^[:ccc=Not_Reordered:][:ccc=Above:]]*)\u0307 → i$1 ; - // I→ı ; - // ::Any-Lower(); - if c.hasPrefix("\u0130") { // İ - return c.writeString("i") - } - if c.src[c.pSrc] != 'I' { - return lower(c) - } - - // We ignore the lower-case I for now, but insert it later when we know - // which form we need. - start := c.pSrc + c.sz - - i := 0 -Loop: - // We check for up to n ignorables before \u0307. As \u0307 is an - // ignorable as well, n is maxIgnorable-1. - for ; i < maxIgnorable && c.next(); i++ { - switch c.info.cccType() { - case cccAbove: - if c.hasPrefix("\u0307") { - return c.writeString("i") && c.writeBytes(c.src[start:c.pSrc]) // ignore U+0307 - } - done = true - break Loop - case cccZero: - c.unreadRune() - done = true - break Loop - default: - // We'll write this rune after we know which starter to use. - } - } - if i == maxIgnorable { - done = true - } - return c.writeString("ı") && c.writeBytes(c.src[start:c.pSrc+c.sz]) && done -} - -// aztrLowerSpan would be the same as isLower. - -func nlTitle(c *context) bool { - // From CLDR: - // # Special titlecasing for Dutch initial "ij". - // ::Any-Title(); - // # Fix up Ij at the beginning of a "word" (per Any-Title, notUAX #29) - // [:^WB=ALetter:] [:WB=Extend:]* [[:WB=MidLetter:][:WB=MidNumLet:]]? { Ij } → IJ ; - if c.src[c.pSrc] != 'I' && c.src[c.pSrc] != 'i' { - return title(c) - } - - if !c.writeString("I") || !c.next() { - return false - } - if c.src[c.pSrc] == 'j' || c.src[c.pSrc] == 'J' { - return c.writeString("J") - } - c.unreadRune() - return true -} - -func nlTitleSpan(c *context) bool { - // From CLDR: - // # Special titlecasing for Dutch initial "ij". - // ::Any-Title(); - // # Fix up Ij at the beginning of a "word" (per Any-Title, notUAX #29) - // [:^WB=ALetter:] [:WB=Extend:]* [[:WB=MidLetter:][:WB=MidNumLet:]]? { Ij } → IJ ; - if c.src[c.pSrc] != 'I' { - return isTitle(c) - } - if !c.next() || c.src[c.pSrc] == 'j' { - return false - } - if c.src[c.pSrc] != 'J' { - c.unreadRune() - } - return true -} - -// Not part of CLDR, but see http://unicode.org/cldr/trac/ticket/7078. -func afnlRewrite(c *context) { - if c.hasPrefix("'") || c.hasPrefix("’") { - c.isMidWord = true - } -} diff --git a/vendor/golang.org/x/text/cases/map_test.go b/vendor/golang.org/x/text/cases/map_test.go deleted file mode 100644 index 8ac39118..00000000 --- a/vendor/golang.org/x/text/cases/map_test.go +++ /dev/null @@ -1,950 +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 cases - -import ( - "bytes" - "fmt" - "path" - "strings" - "testing" - "unicode/utf8" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" - "golang.org/x/text/transform" - "golang.org/x/text/unicode/norm" -) - -type testCase struct { - lang string - src interface{} // string, []string, or nil to skip test - title interface{} // string, []string, or nil to skip test - lower interface{} // string, []string, or nil to skip test - upper interface{} // string, []string, or nil to skip test - opts options -} - -var testCases = []testCase{ - 0: { - lang: "und", - src: "abc aBc ABC abC İsıI ΕΣΆΣ", - title: "Abc Abc Abc Abc İsıi Εσάσ", - lower: "abc abc abc abc i\u0307sıi εσάσ", - upper: "ABC ABC ABC ABC İSII ΕΣΆΣ", - opts: getOpts(HandleFinalSigma(false)), - }, - - 1: { - lang: "und", - src: "abc aBc ABC abC İsıI ΕΣΆΣ Σ _Σ -Σ", - title: "Abc Abc Abc Abc İsıi Εσάς Σ _Σ -Σ", - lower: "abc abc abc abc i\u0307sıi εσάς σ _σ -σ", - upper: "ABC ABC ABC ABC İSII ΕΣΆΣ Σ _Σ -Σ", - opts: getOpts(HandleFinalSigma(true)), - }, - - 2: { // Title cased runes. - lang: supported, - src: "DžA", - title: "Dža", - lower: "dža", - upper: "DŽA", - }, - - 3: { - // Title breaking. - lang: supported, - src: []string{ - "FOO CASE TEST", - "DON'T DO THiS", - "χωΡΊΣ χωΡΊΣ^a χωΡΊΣ:a χωΡΊΣ:^a χωΡΊΣ^ όμΩΣ Σ", - "with-hyphens", - "49ers 49ers", - `"capitalize a^a -hyphen 0X _u a_u:a`, - "MidNumLet a.b\u2018c\u2019d\u2024e\ufe52f\uff07f\uff0eg", - "MidNum a,b;c\u037ed\u0589e\u060cf\u2044g\ufe50h", - "\u0345 x\u3031x x\u05d0x \u05d0x a'.a a.a a4,a", - }, - title: []string{ - "Foo Case Test", - "Don't Do This", - "Χωρίς Χωρίσ^A Χωρίσ:a Χωρίσ:^A Χωρίς^ Όμως Σ", - "With-Hyphens", - // Note that 49Ers is correct according to the spec. - // TODO: provide some option to the user to treat different - // characters as cased. - "49Ers 49Ers", - `"Capitalize A^A -Hyphen 0X _U A_u:a`, - "Midnumlet A.b\u2018c\u2019d\u2024e\ufe52f\uff07f\uff0eg", - "Midnum A,B;C\u037eD\u0589E\u060cF\u2044G\ufe50H", - "\u0399 X\u3031X X\u05d0x \u05d0X A'.A A.a A4,A", - }, - }, - - // TODO: These are known deviations from the options{} Unicode Word Breaking - // Algorithm. - // { - // "und", - // "x_\u3031_x a4,4a", - // "X_\u3031_x A4,4a", // Currently is "X_\U3031_X A4,4A". - // "x_\u3031_x a4,4a", - // "X_\u3031_X A4,4A", - // options{}, - // }, - - 4: { - // Tests title options - lang: "und", - src: "abc aBc ABC abC İsıI o'Brien", - title: "Abc ABc ABC AbC İsıI O'Brien", - opts: getOpts(NoLower), - }, - - 5: { - lang: "el", - src: "aBc ΟΔΌΣ Οδός Σο ΣΟ Σ oΣ ΟΣ σ ἕξ \u03ac", - title: "Abc Οδός Οδός Σο Σο Σ Oς Ος Σ Ἕξ \u0386", - lower: "abc οδός οδός σο σο σ oς ος σ ἕξ \u03ac", - upper: "ABC ΟΔΟΣ ΟΔΟΣ ΣΟ ΣΟ Σ OΣ ΟΣ Σ ΕΞ \u0391", // Uppercase removes accents - }, - - 6: { - lang: "tr az", - src: "Isiİ İsıI I\u0307sIiİ İsıI\u0307 I\u0300\u0307", - title: "Isii İsıı I\u0307sıii İsıi I\u0300\u0307", - lower: "ısii isıı isıii isıi \u0131\u0300\u0307", - upper: "ISİİ İSII I\u0307SIİİ İSII\u0307 I\u0300\u0307", - }, - - 7: { - lang: "lt", - src: "I Ï J J̈ Į Į̈ Ì Í Ĩ xi̇̈ xj̇̈ xį̇̈ xi̇̀ xi̇́ xi̇̃ XI XÏ XJ XJ̈ XĮ XĮ̈ XI̟̤", - title: "I Ï J J̈ Į Į̈ Ì Í Ĩ Xi̇̈ Xj̇̈ Xį̇̈ Xi̇̀ Xi̇́ Xi̇̃ Xi Xi̇̈ Xj Xj̇̈ Xį Xį̇̈ Xi̟̤", - lower: "i i̇̈ j j̇̈ į į̇̈ i̇̀ i̇́ i̇̃ xi̇̈ xj̇̈ xį̇̈ xi̇̀ xi̇́ xi̇̃ xi xi̇̈ xj xj̇̈ xį xį̇̈ xi̟̤", - upper: "I Ï J J̈ Į Į̈ Ì Í Ĩ XÏ XJ̈ XĮ̈ XÌ XÍ XĨ XI XÏ XJ XJ̈ XĮ XĮ̈ XI̟̤", - }, - - 8: { - lang: "lt", - src: "\u012e\u0300 \u00cc i\u0307\u0300 i\u0307\u0301 i\u0307\u0303 i\u0307\u0308 i\u0300\u0307", - title: "\u012e\u0300 \u00cc \u00cc \u00cd \u0128 \u00cf I\u0300\u0307", - lower: "\u012f\u0307\u0300 i\u0307\u0300 i\u0307\u0300 i\u0307\u0301 i\u0307\u0303 i\u0307\u0308 i\u0300\u0307", - upper: "\u012e\u0300 \u00cc \u00cc \u00cd \u0128 \u00cf I\u0300\u0307", - }, - - 9: { - lang: "nl", - src: "ijs IJs Ij Ijs İJ İJs aa aA 'ns 'S", - title: "IJs IJs IJ IJs İj İjs Aa Aa 'ns 's", - }, - - // Note: this specification is not currently part of CLDR. The same holds - // for the leading apostrophe handling for Dutch. - // See http://unicode.org/cldr/trac/ticket/7078. - 10: { - lang: "af", - src: "wag 'n bietjie", - title: "Wag 'n Bietjie", - lower: "wag 'n bietjie", - upper: "WAG 'N BIETJIE", - }, -} - -func TestCaseMappings(t *testing.T) { - for i, tt := range testCases { - src, ok := tt.src.([]string) - if !ok { - src = strings.Split(tt.src.(string), " ") - } - - for _, lang := range strings.Split(tt.lang, " ") { - tag := language.MustParse(lang) - testEntry := func(name string, mk func(language.Tag, options) transform.SpanningTransformer, gold interface{}) { - c := Caser{mk(tag, tt.opts)} - if gold != nil { - wants, ok := gold.([]string) - if !ok { - wants = strings.Split(gold.(string), " ") - } - for j, want := range wants { - if got := c.String(src[j]); got != want { - t.Errorf("%d:%s:\n%s.String(%+q):\ngot %+q;\nwant %+q", i, lang, name, src[j], got, want) - } - } - } - dst := make([]byte, 256) // big enough to hold any result - src := []byte(strings.Join(src, " ")) - v := testtext.AllocsPerRun(20, func() { - c.Transform(dst, src, true) - }) - if v > 1.1 { - t.Errorf("%d:%s:\n%s: number of allocs was %f; want 0", i, lang, name, v) - } - } - testEntry("Upper", makeUpper, tt.upper) - testEntry("Lower", makeLower, tt.lower) - testEntry("Title", makeTitle, tt.title) - } - } -} - -// TestAlloc tests that some mapping methods should not cause any allocation. -func TestAlloc(t *testing.T) { - dst := make([]byte, 256) // big enough to hold any result - src := []byte(txtNonASCII) - - for i, f := range []func() Caser{ - func() Caser { return Upper(language.Und) }, - func() Caser { return Lower(language.Und) }, - func() Caser { return Lower(language.Und, HandleFinalSigma(false)) }, - // TODO: use a shared copy for these casers as well, in order of - // importance, starting with the most important: - // func() Caser { return Title(language.Und) }, - // func() Caser { return Title(language.Und, HandleFinalSigma(false)) }, - } { - testtext.Run(t, "", func(t *testing.T) { - var c Caser - v := testtext.AllocsPerRun(10, func() { - c = f() - }) - if v > 0 { - // TODO: Right now only Upper has 1 allocation. Special-case Lower - // and Title as well to have less allocations for the root locale. - t.Errorf("%d:init: number of allocs was %f; want 0", i, v) - } - v = testtext.AllocsPerRun(2, func() { - c.Transform(dst, src, true) - }) - if v > 0 { - t.Errorf("%d:transform: number of allocs was %f; want 0", i, v) - } - }) - } -} - -func testHandover(t *testing.T, c Caser, src string) { - want := c.String(src) - // Find the common prefix. - pSrc := 0 - for ; pSrc < len(src) && pSrc < len(want) && want[pSrc] == src[pSrc]; pSrc++ { - } - - // Test handover for each substring of the prefix. - for i := 0; i < pSrc; i++ { - testtext.Run(t, fmt.Sprint("interleave/", i), func(t *testing.T) { - dst := make([]byte, 4*len(src)) - c.Reset() - nSpan, _ := c.Span([]byte(src[:i]), false) - copy(dst, src[:nSpan]) - nTransform, _, _ := c.Transform(dst[nSpan:], []byte(src[nSpan:]), true) - got := string(dst[:nSpan+nTransform]) - if got != want { - t.Errorf("full string: got %q; want %q", got, want) - } - }) - } -} - -func TestHandover(t *testing.T) { - testCases := []struct { - desc string - t Caser - first, second string - }{{ - "title/nosigma/single midword", - Title(language.Und, HandleFinalSigma(false)), - "A.", "a", - }, { - "title/nosigma/single midword", - Title(language.Und, HandleFinalSigma(false)), - "A", ".a", - }, { - "title/nosigma/double midword", - Title(language.Und, HandleFinalSigma(false)), - "A..", "a", - }, { - "title/nosigma/double midword", - Title(language.Und, HandleFinalSigma(false)), - "A.", ".a", - }, { - "title/nosigma/double midword", - Title(language.Und, HandleFinalSigma(false)), - "A", "..a", - }, { - "title/sigma/single midword", - Title(language.Und), - "ΟΣ.", "a", - }, { - "title/sigma/single midword", - Title(language.Und), - "ΟΣ", ".a", - }, { - "title/sigma/double midword", - Title(language.Und), - "ΟΣ..", "a", - }, { - "title/sigma/double midword", - Title(language.Und), - "ΟΣ.", ".a", - }, { - "title/sigma/double midword", - Title(language.Und), - "ΟΣ", "..a", - }, { - "title/af/leading apostrophe", - Title(language.Afrikaans), - "'", "n bietje", - }} - for _, tc := range testCases { - testtext.Run(t, tc.desc, func(t *testing.T) { - src := tc.first + tc.second - want := tc.t.String(src) - tc.t.Reset() - n, _ := tc.t.Span([]byte(tc.first), false) - - dst := make([]byte, len(want)) - copy(dst, tc.first[:n]) - - nDst, _, _ := tc.t.Transform(dst[n:], []byte(src[n:]), true) - got := string(dst[:n+nDst]) - if got != want { - t.Errorf("got %q; want %q", got, want) - } - }) - } -} - -// minBufSize is the size of the buffer by which the casing operation in -// this package are guaranteed to make progress. -const minBufSize = norm.MaxSegmentSize - -type bufferTest struct { - desc, src, want string - firstErr error - dstSize, srcSize int - t transform.SpanningTransformer -} - -var bufferTests []bufferTest - -func init() { - bufferTests = []bufferTest{{ - desc: "und/upper/short dst", - src: "abcdefg", - want: "ABCDEFG", - firstErr: transform.ErrShortDst, - dstSize: 3, - srcSize: minBufSize, - t: Upper(language.Und), - }, { - desc: "und/upper/short src", - src: "123é56", - want: "123É56", - firstErr: transform.ErrShortSrc, - dstSize: 4, - srcSize: 4, - t: Upper(language.Und), - }, { - desc: "und/upper/no error on short", - src: "12", - want: "12", - firstErr: nil, - dstSize: 1, - srcSize: 1, - t: Upper(language.Und), - }, { - desc: "und/lower/short dst", - src: "ABCDEFG", - want: "abcdefg", - firstErr: transform.ErrShortDst, - dstSize: 3, - srcSize: minBufSize, - t: Lower(language.Und), - }, { - desc: "und/lower/short src", - src: "123É56", - want: "123é56", - firstErr: transform.ErrShortSrc, - dstSize: 4, - srcSize: 4, - t: Lower(language.Und), - }, { - desc: "und/lower/no error on short", - src: "12", - want: "12", - firstErr: nil, - dstSize: 1, - srcSize: 1, - t: Lower(language.Und), - }, { - desc: "und/lower/simple (no final sigma)", - src: "ΟΣ ΟΣΣ", - want: "οσ οσσ", - dstSize: minBufSize, - srcSize: minBufSize, - t: Lower(language.Und, HandleFinalSigma(false)), - }, { - desc: "und/title/simple (no final sigma)", - src: "ΟΣ ΟΣΣ", - want: "Οσ Οσσ", - dstSize: minBufSize, - srcSize: minBufSize, - t: Title(language.Und, HandleFinalSigma(false)), - }, { - desc: "und/title/final sigma: no error", - src: "ΟΣ", - want: "Ος", - dstSize: minBufSize, - srcSize: minBufSize, - t: Title(language.Und), - }, { - desc: "und/title/final sigma: short source", - src: "ΟΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ", - want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσς", - firstErr: transform.ErrShortSrc, - dstSize: minBufSize, - srcSize: 10, - t: Title(language.Und), - }, { - desc: "und/title/final sigma: short destination 1", - src: "ΟΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ", - want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσς", - firstErr: transform.ErrShortDst, - dstSize: 10, - srcSize: minBufSize, - t: Title(language.Und), - }, { - desc: "und/title/final sigma: short destination 2", - src: "ΟΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ", - want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσς", - firstErr: transform.ErrShortDst, - dstSize: 9, - srcSize: minBufSize, - t: Title(language.Und), - }, { - desc: "und/title/final sigma: short destination 3", - src: "ΟΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ", - want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσς", - firstErr: transform.ErrShortDst, - dstSize: 8, - srcSize: minBufSize, - t: Title(language.Und), - }, { - desc: "und/title/clipped UTF-8 rune", - src: "σσσσσσσσσσσ", - want: "Σσσσσσσσσσσ", - firstErr: transform.ErrShortSrc, - dstSize: minBufSize, - srcSize: 5, - t: Title(language.Und), - }, { - desc: "und/title/clipped UTF-8 rune atEOF", - src: "σσσ" + string([]byte{0xCF}), - want: "Σσσ" + string([]byte{0xCF}), - dstSize: minBufSize, - srcSize: minBufSize, - t: Title(language.Und), - }, { - // Note: the choice to change the final sigma at the end in case of - // too many case ignorables is arbitrary. The main reason for this - // choice is that it results in simpler code. - desc: "und/title/final sigma: max ignorables", - src: "ΟΣ" + strings.Repeat(".", maxIgnorable) + "a", - want: "Οσ" + strings.Repeat(".", maxIgnorable) + "A", - dstSize: minBufSize, - srcSize: minBufSize, - t: Title(language.Und), - }, { - // Note: the choice to change the final sigma at the end in case of - // too many case ignorables is arbitrary. The main reason for this - // choice is that it results in simpler code. - desc: "und/title/long string", - src: "AA" + strings.Repeat(".", maxIgnorable+1) + "a", - want: "Aa" + strings.Repeat(".", maxIgnorable+1) + "A", - dstSize: minBufSize, - srcSize: len("AA" + strings.Repeat(".", maxIgnorable+1)), - t: Title(language.Und), - }, { - // Note: the choice to change the final sigma at the end in case of - // too many case ignorables is arbitrary. The main reason for this - // choice is that it results in simpler code. - desc: "und/title/final sigma: too many ignorables", - src: "ΟΣ" + strings.Repeat(".", maxIgnorable+1) + "a", - want: "Ος" + strings.Repeat(".", maxIgnorable+1) + "A", - dstSize: minBufSize, - srcSize: len("ΟΣ" + strings.Repeat(".", maxIgnorable+1)), - t: Title(language.Und), - }, { - desc: "und/title/final sigma: apostrophe", - src: "ΟΣ''a", - want: "Οσ''A", - dstSize: minBufSize, - srcSize: minBufSize, - t: Title(language.Und), - }, { - desc: "el/upper/max ignorables", - src: "ο" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0313", - want: "Ο" + strings.Repeat("\u0321", maxIgnorable-1), - dstSize: minBufSize, - srcSize: minBufSize, - t: Upper(language.Greek), - }, { - desc: "el/upper/too many ignorables", - src: "ο" + strings.Repeat("\u0321", maxIgnorable) + "\u0313", - want: "Ο" + strings.Repeat("\u0321", maxIgnorable) + "\u0313", - dstSize: minBufSize, - srcSize: len("ο" + strings.Repeat("\u0321", maxIgnorable)), - t: Upper(language.Greek), - }, { - desc: "el/upper/short dst", - src: "123ο", - want: "123Ο", - firstErr: transform.ErrShortDst, - dstSize: 3, - srcSize: minBufSize, - t: Upper(language.Greek), - }, { - desc: "lt/lower/max ignorables", - src: "I" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0300", - want: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", - dstSize: minBufSize, - srcSize: minBufSize, - t: Lower(language.Lithuanian), - }, { - desc: "lt/lower/too many ignorables", - src: "I" + strings.Repeat("\u0321", maxIgnorable) + "\u0300", - want: "i" + strings.Repeat("\u0321", maxIgnorable) + "\u0300", - dstSize: minBufSize, - srcSize: len("I" + strings.Repeat("\u0321", maxIgnorable)), - t: Lower(language.Lithuanian), - }, { - desc: "lt/lower/decomposition with short dst buffer 1", - src: "aaaaa\u00cc", // U+00CC LATIN CAPITAL LETTER I GRAVE - firstErr: transform.ErrShortDst, - want: "aaaaai\u0307\u0300", - dstSize: 5, - srcSize: minBufSize, - t: Lower(language.Lithuanian), - }, { - desc: "lt/lower/decomposition with short dst buffer 2", - src: "aaaa\u00cc", // U+00CC LATIN CAPITAL LETTER I GRAVE - firstErr: transform.ErrShortDst, - want: "aaaai\u0307\u0300", - dstSize: 5, - srcSize: minBufSize, - t: Lower(language.Lithuanian), - }, { - desc: "lt/upper/max ignorables", - src: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", - want: "I" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0300", - dstSize: minBufSize, - srcSize: minBufSize, - t: Upper(language.Lithuanian), - }, { - desc: "lt/upper/too many ignorables", - src: "i" + strings.Repeat("\u0321", maxIgnorable) + "\u0307\u0300", - want: "I" + strings.Repeat("\u0321", maxIgnorable) + "\u0307\u0300", - dstSize: minBufSize, - srcSize: len("i" + strings.Repeat("\u0321", maxIgnorable)), - t: Upper(language.Lithuanian), - }, { - desc: "lt/upper/short dst", - src: "12i\u0307\u0300", - want: "12\u00cc", - firstErr: transform.ErrShortDst, - dstSize: 3, - srcSize: minBufSize, - t: Upper(language.Lithuanian), - }, { - desc: "aztr/lower/max ignorables", - src: "I" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", - want: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0300", - dstSize: minBufSize, - srcSize: minBufSize, - t: Lower(language.Turkish), - }, { - desc: "aztr/lower/too many ignorables", - src: "I" + strings.Repeat("\u0321", maxIgnorable) + "\u0307\u0300", - want: "\u0131" + strings.Repeat("\u0321", maxIgnorable) + "\u0307\u0300", - dstSize: minBufSize, - srcSize: len("I" + strings.Repeat("\u0321", maxIgnorable)), - t: Lower(language.Turkish), - }, { - desc: "nl/title/pre-IJ cutoff", - src: " ij", - want: " IJ", - firstErr: transform.ErrShortDst, - dstSize: 2, - srcSize: minBufSize, - t: Title(language.Dutch), - }, { - desc: "nl/title/mid-IJ cutoff", - src: " ij", - want: " IJ", - firstErr: transform.ErrShortDst, - dstSize: 3, - srcSize: minBufSize, - t: Title(language.Dutch), - }, { - desc: "af/title/apostrophe", - src: "'n bietje", - want: "'n Bietje", - firstErr: transform.ErrShortDst, - dstSize: 3, - srcSize: minBufSize, - t: Title(language.Afrikaans), - }} -} - -func TestShortBuffersAndOverflow(t *testing.T) { - for i, tt := range bufferTests { - testtext.Run(t, tt.desc, func(t *testing.T) { - buf := make([]byte, tt.dstSize) - got := []byte{} - var nSrc, nDst int - var err error - for p := 0; p < len(tt.src); p += nSrc { - q := p + tt.srcSize - if q > len(tt.src) { - q = len(tt.src) - } - nDst, nSrc, err = tt.t.Transform(buf, []byte(tt.src[p:q]), q == len(tt.src)) - got = append(got, buf[:nDst]...) - - if p == 0 && err != tt.firstErr { - t.Errorf("%d:%s:\n error was %v; want %v", i, tt.desc, err, tt.firstErr) - break - } - } - if string(got) != tt.want { - t.Errorf("%d:%s:\ngot %+q;\nwant %+q", i, tt.desc, got, tt.want) - } - testHandover(t, Caser{tt.t}, tt.src) - }) - } -} - -func TestSpan(t *testing.T) { - for _, tt := range []struct { - desc string - src string - want string - atEOF bool - err error - t Caser - }{{ - desc: "und/upper/basic", - src: "abcdefg", - want: "", - atEOF: true, - err: transform.ErrEndOfSpan, - t: Upper(language.Und), - }, { - desc: "und/upper/short src", - src: "123É"[:4], - want: "123", - atEOF: false, - err: transform.ErrShortSrc, - t: Upper(language.Und), - }, { - desc: "und/upper/no error on short", - src: "12", - want: "12", - atEOF: false, - t: Upper(language.Und), - }, { - desc: "und/lower/basic", - src: "ABCDEFG", - want: "", - atEOF: true, - err: transform.ErrEndOfSpan, - t: Lower(language.Und), - }, { - desc: "und/lower/short src num", - src: "123é"[:4], - want: "123", - atEOF: false, - err: transform.ErrShortSrc, - t: Lower(language.Und), - }, { - desc: "und/lower/short src greek", - src: "αβγé"[:7], - want: "αβγ", - atEOF: false, - err: transform.ErrShortSrc, - t: Lower(language.Und), - }, { - desc: "und/lower/no error on short", - src: "12", - want: "12", - atEOF: false, - t: Lower(language.Und), - }, { - desc: "und/lower/simple (no final sigma)", - src: "ος οσσ", - want: "οσ οσσ", - atEOF: true, - t: Lower(language.Und, HandleFinalSigma(false)), - }, { - desc: "und/title/simple (no final sigma)", - src: "Οσ Οσσ", - want: "Οσ Οσσ", - atEOF: true, - t: Title(language.Und, HandleFinalSigma(false)), - }, { - desc: "und/lower/final sigma: no error", - src: "οΣ", // Oς - want: "ο", // Oς - err: transform.ErrEndOfSpan, - t: Lower(language.Und), - }, { - desc: "und/title/final sigma: no error", - src: "ΟΣ", // Oς - want: "Ο", // Oς - err: transform.ErrEndOfSpan, - t: Title(language.Und), - }, { - desc: "und/title/final sigma: no short source!", - src: "ΟσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσΣ", - want: "Οσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσσ", - err: transform.ErrEndOfSpan, - t: Title(language.Und), - }, { - desc: "und/title/clipped UTF-8 rune", - src: "Σσ" + string([]byte{0xCF}), - want: "Σσ", - atEOF: false, - err: transform.ErrShortSrc, - t: Title(language.Und), - }, { - desc: "und/title/clipped UTF-8 rune atEOF", - src: "Σσσ" + string([]byte{0xCF}), - want: "Σσσ" + string([]byte{0xCF}), - atEOF: true, - t: Title(language.Und), - }, { - // Note: the choice to change the final sigma at the end in case of - // too many case ignorables is arbitrary. The main reason for this - // choice is that it results in simpler code. - desc: "und/title/long string", - src: "A" + strings.Repeat("a", maxIgnorable+5), - want: "A" + strings.Repeat("a", maxIgnorable+5), - t: Title(language.Und), - }, { - // Note: the choice to change the final sigma at the end in case of - // too many case ignorables is arbitrary. The main reason for this - // choice is that it results in simpler code. - desc: "und/title/cyrillic", - src: "При", - want: "При", - atEOF: true, - t: Title(language.Und, HandleFinalSigma(false)), - }, { - // Note: the choice to change the final sigma at the end in case of - // too many case ignorables is arbitrary. The main reason for this - // choice is that it results in simpler code. - desc: "und/title/final sigma: max ignorables", - src: "Οσ" + strings.Repeat(".", maxIgnorable) + "A", - want: "Οσ" + strings.Repeat(".", maxIgnorable) + "A", - t: Title(language.Und), - }, { - desc: "el/upper/max ignorables - not implemented", - src: "Ο" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0313", - want: "", - err: transform.ErrEndOfSpan, - t: Upper(language.Greek), - }, { - desc: "el/upper/too many ignorables - not implemented", - src: "Ο" + strings.Repeat("\u0321", maxIgnorable) + "\u0313", - want: "", - err: transform.ErrEndOfSpan, - t: Upper(language.Greek), - }, { - desc: "el/upper/short dst", - src: "123ο", - want: "", - err: transform.ErrEndOfSpan, - t: Upper(language.Greek), - }, { - desc: "lt/lower/max ignorables", - src: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", - want: "i" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0307\u0300", - t: Lower(language.Lithuanian), - }, { - desc: "lt/lower/isLower", - src: "I" + strings.Repeat("\u0321", maxIgnorable) + "\u0300", - want: "", - err: transform.ErrEndOfSpan, - t: Lower(language.Lithuanian), - }, { - desc: "lt/lower/not identical", - src: "aaaaa\u00cc", // U+00CC LATIN CAPITAL LETTER I GRAVE - err: transform.ErrEndOfSpan, - want: "aaaaa", - t: Lower(language.Lithuanian), - }, { - desc: "lt/lower/identical", - src: "aaaai\u0307\u0300", // U+00CC LATIN CAPITAL LETTER I GRAVE - want: "aaaai\u0307\u0300", - t: Lower(language.Lithuanian), - }, { - desc: "lt/upper/not implemented", - src: "I" + strings.Repeat("\u0321", maxIgnorable-1) + "\u0300", - want: "", - err: transform.ErrEndOfSpan, - t: Upper(language.Lithuanian), - }, { - desc: "lt/upper/not implemented, ascii", - src: "AB", - want: "", - err: transform.ErrEndOfSpan, - t: Upper(language.Lithuanian), - }, { - desc: "nl/title/pre-IJ cutoff", - src: " IJ", - want: " IJ", - t: Title(language.Dutch), - }, { - desc: "nl/title/mid-IJ cutoff", - src: " Ia", - want: " Ia", - t: Title(language.Dutch), - }, { - desc: "af/title/apostrophe", - src: "'n Bietje", - want: "'n Bietje", - t: Title(language.Afrikaans), - }, { - desc: "af/title/apostrophe-incorrect", - src: "'N Bietje", - // The Single_Quote (a MidWord), needs to be retained as unspanned so - // that a successive call to Transform can detect that N should not be - // capitalized. - want: "", - err: transform.ErrEndOfSpan, - t: Title(language.Afrikaans), - }} { - testtext.Run(t, tt.desc, func(t *testing.T) { - for p := 0; p < len(tt.want); p += utf8.RuneLen([]rune(tt.src[p:])[0]) { - tt.t.Reset() - n, err := tt.t.Span([]byte(tt.src[:p]), false) - if err != nil && err != transform.ErrShortSrc { - t.Errorf("early failure:Span(%+q): %v (%d < %d)", tt.src[:p], err, n, len(tt.want)) - break - } - } - tt.t.Reset() - n, err := tt.t.Span([]byte(tt.src), tt.atEOF) - if n != len(tt.want) || err != tt.err { - t.Errorf("Span(%+q, %v): got %d, %v; want %d, %v", tt.src, tt.atEOF, n, err, len(tt.want), tt.err) - } - testHandover(t, tt.t, tt.src) - }) - } -} - -var txtASCII = strings.Repeat("The quick brown fox jumps over the lazy dog. ", 50) - -// Taken from http://creativecommons.org/licenses/by-sa/3.0/vn/ -const txt_vn = `Với các điều kiện sau: Ghi nhận công của tác giả. Nếu bạn sử -dụng, chuyển đổi, hoặc xây dựng dự án từ nội dung được chia sẻ này, bạn phải áp -dụng giấy phép này hoặc một giấy phép khác có các điều khoản tương tự như giấy -phép này cho dự án của bạn. Hiểu rằng: Miễn — Bất kỳ các điều kiện nào trên đây -cũng có thể được miễn bỏ nếu bạn được sự cho phép của người sở hữu bản quyền. -Phạm vi công chúng — Khi tác phẩm hoặc bất kỳ chương nào của tác phẩm đã trong -vùng dành cho công chúng theo quy định của pháp luật thì tình trạng của nó không -bị ảnh hưởng bởi giấy phép trong bất kỳ trường hợp nào.` - -// http://creativecommons.org/licenses/by-sa/2.5/cn/ -const txt_cn = `您可以自由: 复制、发行、展览、表演、放映、 -广播或通过信息网络传播本作品 创作演绎作品 -对本作品进行商业性使用 惟须遵守下列条件: -署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。 -相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作, -您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。` - -// Taken from http://creativecommons.org/licenses/by-sa/1.0/deed.ru -const txt_ru = `При обязательном соблюдении следующих условий: Attribution — Вы -должны атрибутировать произведение (указывать автора и источник) в порядке, -предусмотренном автором или лицензиаром (но только так, чтобы никоим образом не -подразумевалось, что они поддерживают вас или использование вами данного -произведения). Υπό τις ακόλουθες προϋποθέσεις:` - -// Taken from http://creativecommons.org/licenses/by-sa/3.0/gr/ -const txt_gr = `Αναφορά Δημιουργού — Θα πρέπει να κάνετε την αναφορά στο έργο με -τον τρόπο που έχει οριστεί από το δημιουργό ή το χορηγούντο την άδεια (χωρίς -όμως να εννοείται με οποιονδήποτε τρόπο ότι εγκρίνουν εσάς ή τη χρήση του έργου -από εσάς). Παρόμοια Διανομή — Εάν αλλοιώσετε, τροποποιήσετε ή δημιουργήσετε -περαιτέρω βασισμένοι στο έργο θα μπορείτε να διανέμετε το έργο που θα προκύψει -μόνο με την ίδια ή παρόμοια άδεια.` - -const txtNonASCII = txt_vn + txt_cn + txt_ru + txt_gr - -// TODO: Improve ASCII performance. - -func BenchmarkCasers(b *testing.B) { - for _, s := range []struct{ name, text string }{ - {"ascii", txtASCII}, - {"nonASCII", txtNonASCII}, - {"short", "При"}, - } { - src := []byte(s.text) - // Measure case mappings in bytes package for comparison. - for _, f := range []struct { - name string - fn func(b []byte) []byte - }{ - {"lower", bytes.ToLower}, - {"title", bytes.ToTitle}, - {"upper", bytes.ToUpper}, - } { - testtext.Bench(b, path.Join(s.name, "bytes", f.name), func(b *testing.B) { - b.SetBytes(int64(len(src))) - for i := 0; i < b.N; i++ { - f.fn(src) - } - }) - } - for _, t := range []struct { - name string - caser transform.SpanningTransformer - }{ - {"fold/default", Fold()}, - {"upper/default", Upper(language.Und)}, - {"lower/sigma", Lower(language.Und)}, - {"lower/simple", Lower(language.Und, HandleFinalSigma(false))}, - {"title/sigma", Title(language.Und)}, - {"title/simple", Title(language.Und, HandleFinalSigma(false))}, - } { - c := Caser{t.caser} - dst := make([]byte, len(src)) - testtext.Bench(b, path.Join(s.name, t.name, "transform"), func(b *testing.B) { - b.SetBytes(int64(len(src))) - for i := 0; i < b.N; i++ { - c.Reset() - c.Transform(dst, src, true) - } - }) - // No need to check span for simple cases, as they will be the same - // as sigma. - if strings.HasSuffix(t.name, "/simple") { - continue - } - spanSrc := c.Bytes(src) - testtext.Bench(b, path.Join(s.name, t.name, "span"), func(b *testing.B) { - c.Reset() - if n, _ := c.Span(spanSrc, true); n < len(spanSrc) { - b.Fatalf("spanner is not recognizing text %q as done (at %d)", spanSrc, n) - } - b.SetBytes(int64(len(spanSrc))) - for i := 0; i < b.N; i++ { - c.Reset() - c.Span(spanSrc, true) - } - }) - } - } -} diff --git a/vendor/golang.org/x/text/cases/tables10.0.0.go b/vendor/golang.org/x/text/cases/tables10.0.0.go deleted file mode 100644 index 9800782a..00000000 --- a/vendor/golang.org/x/text/cases/tables10.0.0.go +++ /dev/null @@ -1,2253 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build go1.10 - -package cases - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "10.0.0" - -var xorData string = "" + // Size: 185 bytes - "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + - "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + - "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + - "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + - "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + - "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + - "\x0b!\x10\x00\x0b!0\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a\x00\x02:" + - "\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&\x00\x01*" + - "\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00\x01\x22" - -var exceptions string = "" + // Size: 1852 bytes - "\x00\x12\x10μΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x08I\x13\x18ʼnʼN\x11\x08sS" + - "\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj\x12\x12" + - "njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x18ǰJ̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10\x12DZDz" + - "\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x18Ȿ\x10\x18Ɀ\x10\x18Ɐ\x10\x18Ɑ\x10\x18Ɒ\x10" + - "\x18Ɜ\x10\x18Ɡ\x10\x18Ɥ\x10\x18Ɦ\x10\x18Ɪ\x10\x18Ɫ\x10\x18Ɬ\x10\x18Ɱ\x10" + - "\x18Ɽ\x10\x18Ʇ\x10\x18Ʝ\x10\x18Ʞ2\x10ιΙ\x160ΐΪ́\x160ΰΫ́\x12\x10σΣ" + - "\x12\x10βΒ\x12\x10θΘ\x12\x10φΦ\x12\x10πΠ\x12\x10κΚ\x12\x10ρΡ\x12\x10εΕ" + - "\x14$եւԵՒԵւ\x12\x10вВ\x12\x10дД\x12\x10оО\x12\x10сС\x12\x10тТ\x12\x10тТ" + - "\x12\x10ъЪ\x12\x10ѣѢ\x13\x18ꙋꙊ\x13\x18ẖH̱\x13\x18ẗT̈\x13\x18ẘW̊\x13" + - "\x18ẙY̊\x13\x18aʾAʾ\x13\x18ṡṠ\x12\x10ssß\x14 ὐΥ̓\x160ὒΥ̓̀\x160ὔΥ̓́" + - "\x160ὖΥ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ" + - "\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ" + - "\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ" + - "\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨ" + - "Ι\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15" + - "\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ" + - "\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ" + - "\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰι" + - "ᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ\x14 ᾶΑ͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x10ι" + - "Ι\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14 ῆΗ͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ" + - "\x160ῒΪ̀\x160ΐΪ́\x14 ῖΙ͂\x160ῗΪ͂\x160ῢΫ̀\x160ΰΫ́\x14 ῤΡ" + - "̓\x14 ῦΥ͂\x160ῧΫ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ\x14 ῶΩ͂\x166ῶιΩ" + - "͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12\x10ɫɫ\x12\x10ɽɽ" + - "\x10\x10Ⱥ\x10\x10Ⱦ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ\x12" + - "\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ\x12" + - "\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFFFf\x12\x12fiFIFi\x12\x12flFLFl\x13" + - "\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12stSTSt\x12\x12stSTSt\x14$մնՄՆՄն" + - "\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄխ" - -// 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 *caseTrie) lookup(s []byte) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return caseValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = caseIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = caseIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = caseIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *caseTrie) lookupUnsafe(s []byte) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return caseValues[c0] - } - i := caseIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = caseIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = caseIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *caseTrie) lookupString(s string) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return caseValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = caseIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = caseIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = caseIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *caseTrie) lookupStringUnsafe(s string) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return caseValues[c0] - } - i := caseIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = caseIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = caseIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// caseTrie. Total size: 11892 bytes (11.61 KiB). Checksum: abd4a0bc39341b30. -type caseTrie struct{} - -func newCaseTrie(i int) *caseTrie { - return &caseTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { - switch { - case n < 18: - return uint16(caseValues[n<<6+uint32(b)]) - default: - n -= 18 - return uint16(sparse.lookup(n, b)) - } -} - -// caseValues: 20 blocks, 1280 entries, 2560 bytes -// The third block is the zero block. -var caseValues = [1280]uint16{ - // Block 0x0, offset 0x0 - 0x27: 0x0054, - 0x2e: 0x0054, - 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, - 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, - // Block 0x1, offset 0x40 - 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, - 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, - 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, - 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, - 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, - 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, - 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, - 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, - 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, - 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, - 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, - 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, - 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, - 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, - 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, - 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, - 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, - 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, - 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, - 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, - // Block 0x4, offset 0x100 - 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x04cb, 0x105: 0x05c9, - 0x106: 0x06ca, 0x107: 0x078b, 0x108: 0x0889, 0x109: 0x098a, 0x10a: 0x0a4b, 0x10b: 0x0b49, - 0x10c: 0x0c4a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, - 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, - 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, - 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, - 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, - 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, - 0x130: 0x0d0a, 0x131: 0x0e0b, 0x132: 0x0f09, 0x133: 0x100a, 0x134: 0x0113, 0x135: 0x0112, - 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, - 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, - // Block 0x5, offset 0x140 - 0x140: 0x136a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, - 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, - 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x140a, 0x151: 0x14aa, - 0x152: 0x154a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, - 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x15ea, 0x15d: 0x0012, - 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x168a, 0x162: 0x0012, 0x163: 0x2052, - 0x164: 0x0012, 0x165: 0x172a, 0x166: 0x17ca, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, - 0x16a: 0x186a, 0x16b: 0x190a, 0x16c: 0x19aa, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, - 0x170: 0x0012, 0x171: 0x1a4a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, - 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, - 0x17c: 0x0012, 0x17d: 0x1aea, 0x17e: 0x0012, 0x17f: 0x0012, - // Block 0x6, offset 0x180 - 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, - 0x186: 0x0012, 0x187: 0x1b8a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, - 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, - 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, - 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x1c2a, - 0x19e: 0x1cca, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, - 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, - 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, - 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, - 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, - 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x1d6d, - 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, - 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, - 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, - 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, - 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, - 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, - 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, - 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, - 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, - 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, - // Block 0x8, offset 0x200 - 0x204: 0x0004, 0x205: 0x0004, - 0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, - 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x1e2a, 0x211: 0x2013, - 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, - 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, - 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, - 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, - 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, - 0x230: 0x1fea, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, - 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, - 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, - // Block 0x9, offset 0x240 - 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x21aa, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, - 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, - 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x226a, 0x251: 0x232a, - 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x23ea, 0x256: 0x24aa, 0x257: 0x1812, - 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, - 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, - 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, - 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, - 0x270: 0x256a, 0x271: 0x262a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x26ea, - 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, - 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, - // Block 0xa, offset 0x280 - 0x280: 0x0812, 0x281: 0x0812, 0x282: 0x0812, 0x283: 0x0812, 0x284: 0x0812, 0x285: 0x0812, - 0x288: 0x0813, 0x289: 0x0813, 0x28a: 0x0813, 0x28b: 0x0813, - 0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x372a, 0x291: 0x0812, - 0x292: 0x386a, 0x293: 0x0812, 0x294: 0x3a2a, 0x295: 0x0812, 0x296: 0x3bea, 0x297: 0x0812, - 0x299: 0x0813, 0x29b: 0x0813, 0x29d: 0x0813, - 0x29f: 0x0813, 0x2a0: 0x0812, 0x2a1: 0x0812, 0x2a2: 0x0812, 0x2a3: 0x0812, - 0x2a4: 0x0812, 0x2a5: 0x0812, 0x2a6: 0x0812, 0x2a7: 0x0812, 0x2a8: 0x0813, 0x2a9: 0x0813, - 0x2aa: 0x0813, 0x2ab: 0x0813, 0x2ac: 0x0813, 0x2ad: 0x0813, 0x2ae: 0x0813, 0x2af: 0x0813, - 0x2b0: 0x8b52, 0x2b1: 0x8b52, 0x2b2: 0x8e52, 0x2b3: 0x8e52, 0x2b4: 0x9152, 0x2b5: 0x9152, - 0x2b6: 0x9452, 0x2b7: 0x9452, 0x2b8: 0x9752, 0x2b9: 0x9752, 0x2ba: 0x9a52, 0x2bb: 0x9a52, - 0x2bc: 0x4d52, 0x2bd: 0x4d52, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x3daa, 0x2c1: 0x3f8a, 0x2c2: 0x416a, 0x2c3: 0x434a, 0x2c4: 0x452a, 0x2c5: 0x470a, - 0x2c6: 0x48ea, 0x2c7: 0x4aca, 0x2c8: 0x4ca9, 0x2c9: 0x4e89, 0x2ca: 0x5069, 0x2cb: 0x5249, - 0x2cc: 0x5429, 0x2cd: 0x5609, 0x2ce: 0x57e9, 0x2cf: 0x59c9, 0x2d0: 0x5baa, 0x2d1: 0x5d8a, - 0x2d2: 0x5f6a, 0x2d3: 0x614a, 0x2d4: 0x632a, 0x2d5: 0x650a, 0x2d6: 0x66ea, 0x2d7: 0x68ca, - 0x2d8: 0x6aa9, 0x2d9: 0x6c89, 0x2da: 0x6e69, 0x2db: 0x7049, 0x2dc: 0x7229, 0x2dd: 0x7409, - 0x2de: 0x75e9, 0x2df: 0x77c9, 0x2e0: 0x79aa, 0x2e1: 0x7b8a, 0x2e2: 0x7d6a, 0x2e3: 0x7f4a, - 0x2e4: 0x812a, 0x2e5: 0x830a, 0x2e6: 0x84ea, 0x2e7: 0x86ca, 0x2e8: 0x88a9, 0x2e9: 0x8a89, - 0x2ea: 0x8c69, 0x2eb: 0x8e49, 0x2ec: 0x9029, 0x2ed: 0x9209, 0x2ee: 0x93e9, 0x2ef: 0x95c9, - 0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x97aa, 0x2f3: 0x99ca, 0x2f4: 0x9b6a, - 0x2f6: 0x9d2a, 0x2f7: 0x9e6a, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53, - 0x2fc: 0xa0e9, 0x2fd: 0x0004, 0x2fe: 0xa28a, 0x2ff: 0x0004, - // Block 0xc, offset 0x300 - 0x300: 0x0004, 0x301: 0x0004, 0x302: 0xa34a, 0x303: 0xa56a, 0x304: 0xa70a, - 0x306: 0xa8ca, 0x307: 0xaa0a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153, - 0x30c: 0xac89, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812, - 0x312: 0xae2a, 0x313: 0xafea, 0x316: 0xb1aa, 0x317: 0xb2ea, - 0x318: 0x0813, 0x319: 0x0813, 0x31a: 0x9453, 0x31b: 0x9453, 0x31d: 0x0004, - 0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0xb4aa, 0x323: 0xb66a, - 0x324: 0xb82a, 0x325: 0x0912, 0x326: 0xb96a, 0x327: 0xbaaa, 0x328: 0x0813, 0x329: 0x0813, - 0x32a: 0x9a53, 0x32b: 0x9a53, 0x32c: 0x0913, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004, - 0x332: 0xbc6a, 0x333: 0xbe8a, 0x334: 0xc02a, - 0x336: 0xc1ea, 0x337: 0xc32a, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53, - 0x33c: 0xc5a9, 0x33d: 0x0004, 0x33e: 0x0004, - // Block 0xd, offset 0x340 - 0x342: 0x0013, - 0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013, - 0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013, - 0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013, - 0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013, - 0x364: 0x0013, 0x366: 0xc74b, 0x368: 0x0013, - 0x36a: 0xc80b, 0x36b: 0xc88b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012, - 0x370: 0x0013, 0x371: 0x0013, 0x372: 0x9d53, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010, - 0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012, - 0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013, - // Block 0xe, offset 0x380 - 0x380: 0x1a13, 0x381: 0x1a13, 0x382: 0x1e13, 0x383: 0x1e13, 0x384: 0x1a13, 0x385: 0x1a13, - 0x386: 0x2613, 0x387: 0x2613, 0x388: 0x2a13, 0x389: 0x2a13, 0x38a: 0x2e13, 0x38b: 0x2e13, - 0x38c: 0x2a13, 0x38d: 0x2a13, 0x38e: 0x2613, 0x38f: 0x2613, 0x390: 0xa052, 0x391: 0xa052, - 0x392: 0xa352, 0x393: 0xa352, 0x394: 0xa652, 0x395: 0xa652, 0x396: 0xa352, 0x397: 0xa352, - 0x398: 0xa052, 0x399: 0xa052, 0x39a: 0x1a12, 0x39b: 0x1a12, 0x39c: 0x1e12, 0x39d: 0x1e12, - 0x39e: 0x1a12, 0x39f: 0x1a12, 0x3a0: 0x2612, 0x3a1: 0x2612, 0x3a2: 0x2a12, 0x3a3: 0x2a12, - 0x3a4: 0x2e12, 0x3a5: 0x2e12, 0x3a6: 0x2a12, 0x3a7: 0x2a12, 0x3a8: 0x2612, 0x3a9: 0x2612, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x6552, 0x3c1: 0x6552, 0x3c2: 0x6552, 0x3c3: 0x6552, 0x3c4: 0x6552, 0x3c5: 0x6552, - 0x3c6: 0x6552, 0x3c7: 0x6552, 0x3c8: 0x6552, 0x3c9: 0x6552, 0x3ca: 0x6552, 0x3cb: 0x6552, - 0x3cc: 0x6552, 0x3cd: 0x6552, 0x3ce: 0x6552, 0x3cf: 0x6552, 0x3d0: 0xa952, 0x3d1: 0xa952, - 0x3d2: 0xa952, 0x3d3: 0xa952, 0x3d4: 0xa952, 0x3d5: 0xa952, 0x3d6: 0xa952, 0x3d7: 0xa952, - 0x3d8: 0xa952, 0x3d9: 0xa952, 0x3da: 0xa952, 0x3db: 0xa952, 0x3dc: 0xa952, 0x3dd: 0xa952, - 0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0xc94b, 0x3e3: 0x8853, - 0x3e4: 0xca0b, 0x3e5: 0xcaca, 0x3e6: 0xcb4a, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313, - 0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0xcbcb, 0x3ee: 0xcc8b, 0x3ef: 0xcd4b, - 0x3f0: 0xce0b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313, - 0x3f6: 0x0312, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012, - 0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0xcecb, 0x3ff: 0xcf8b, - // Block 0x10, offset 0x400 - 0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112, - 0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0014, 0x40a: 0x0014, 0x40b: 0x0713, - 0x40c: 0x0712, 0x40d: 0xd04b, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112, - 0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112, - 0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112, - 0x41e: 0x0113, 0x41f: 0x0112, 0x420: 0x0113, 0x421: 0x0112, 0x422: 0x0113, 0x423: 0x0112, - 0x424: 0x0113, 0x425: 0x0112, 0x426: 0x0113, 0x427: 0x0112, 0x428: 0x0113, 0x429: 0x0112, - 0x42a: 0xd10b, 0x42b: 0xd1cb, 0x42c: 0xd28b, 0x42d: 0xd34b, 0x42e: 0xd40b, - 0x430: 0xd4cb, 0x431: 0xd58b, 0x432: 0xd64b, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112, - 0x436: 0x0113, 0x437: 0x0112, - // Block 0x11, offset 0x440 - 0x440: 0xd70a, 0x441: 0xd80a, 0x442: 0xd90a, 0x443: 0xda0a, 0x444: 0xdb6a, 0x445: 0xdcca, - 0x446: 0xddca, - 0x453: 0xdeca, 0x454: 0xe08a, 0x455: 0xe24a, 0x456: 0xe40a, 0x457: 0xe5ca, - 0x45d: 0x0010, - 0x45e: 0x0034, 0x45f: 0x0010, 0x460: 0x0010, 0x461: 0x0010, 0x462: 0x0010, 0x463: 0x0010, - 0x464: 0x0010, 0x465: 0x0010, 0x466: 0x0010, 0x467: 0x0010, 0x468: 0x0010, - 0x46a: 0x0010, 0x46b: 0x0010, 0x46c: 0x0010, 0x46d: 0x0010, 0x46e: 0x0010, 0x46f: 0x0010, - 0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x473: 0x0010, 0x474: 0x0010, 0x475: 0x0010, - 0x476: 0x0010, 0x478: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010, - 0x47c: 0x0010, 0x47e: 0x0010, - // Block 0x12, offset 0x480 - 0x480: 0x2213, 0x481: 0x2213, 0x482: 0x2613, 0x483: 0x2613, 0x484: 0x2213, 0x485: 0x2213, - 0x486: 0x2e13, 0x487: 0x2e13, 0x488: 0x2213, 0x489: 0x2213, 0x48a: 0x2613, 0x48b: 0x2613, - 0x48c: 0x2213, 0x48d: 0x2213, 0x48e: 0x3e13, 0x48f: 0x3e13, 0x490: 0x2213, 0x491: 0x2213, - 0x492: 0x2613, 0x493: 0x2613, 0x494: 0x2213, 0x495: 0x2213, 0x496: 0x2e13, 0x497: 0x2e13, - 0x498: 0x2213, 0x499: 0x2213, 0x49a: 0x2613, 0x49b: 0x2613, 0x49c: 0x2213, 0x49d: 0x2213, - 0x49e: 0xb553, 0x49f: 0xb553, 0x4a0: 0xb853, 0x4a1: 0xb853, 0x4a2: 0x2212, 0x4a3: 0x2212, - 0x4a4: 0x2612, 0x4a5: 0x2612, 0x4a6: 0x2212, 0x4a7: 0x2212, 0x4a8: 0x2e12, 0x4a9: 0x2e12, - 0x4aa: 0x2212, 0x4ab: 0x2212, 0x4ac: 0x2612, 0x4ad: 0x2612, 0x4ae: 0x2212, 0x4af: 0x2212, - 0x4b0: 0x3e12, 0x4b1: 0x3e12, 0x4b2: 0x2212, 0x4b3: 0x2212, 0x4b4: 0x2612, 0x4b5: 0x2612, - 0x4b6: 0x2212, 0x4b7: 0x2212, 0x4b8: 0x2e12, 0x4b9: 0x2e12, 0x4ba: 0x2212, 0x4bb: 0x2212, - 0x4bc: 0x2612, 0x4bd: 0x2612, 0x4be: 0x2212, 0x4bf: 0x2212, - // Block 0x13, offset 0x4c0 - 0x4c2: 0x0010, - 0x4c7: 0x0010, 0x4c9: 0x0010, 0x4cb: 0x0010, - 0x4cd: 0x0010, 0x4ce: 0x0010, 0x4cf: 0x0010, 0x4d1: 0x0010, - 0x4d2: 0x0010, 0x4d4: 0x0010, 0x4d7: 0x0010, - 0x4d9: 0x0010, 0x4db: 0x0010, 0x4dd: 0x0010, - 0x4df: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, - 0x4e4: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, 0x4e9: 0x0010, - 0x4ea: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010, - 0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010, - 0x4f6: 0x0010, 0x4f7: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010, - 0x4fc: 0x0010, 0x4fe: 0x0010, -} - -// caseIndex: 25 blocks, 1600 entries, 3200 bytes -// Block 0 is the zero block. -var caseIndex = [1600]uint16{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x12, 0xc3: 0x13, 0xc4: 0x14, 0xc5: 0x15, 0xc6: 0x01, 0xc7: 0x02, - 0xc8: 0x16, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x17, 0xcc: 0x18, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, - 0xd0: 0x19, 0xd1: 0x1a, 0xd2: 0x1b, 0xd3: 0x1c, 0xd4: 0x1d, 0xd5: 0x1e, 0xd6: 0x1f, 0xd7: 0x20, - 0xd8: 0x21, 0xd9: 0x22, 0xda: 0x23, 0xdb: 0x24, 0xdc: 0x25, 0xdd: 0x26, 0xde: 0x27, 0xdf: 0x28, - 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, - 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, - 0xf0: 0x14, 0xf3: 0x16, - // Block 0x4, offset 0x100 - 0x120: 0x29, 0x121: 0x2a, 0x122: 0x2b, 0x123: 0x2c, 0x124: 0x2d, 0x125: 0x2e, 0x126: 0x2f, 0x127: 0x30, - 0x128: 0x31, 0x129: 0x32, 0x12a: 0x33, 0x12b: 0x34, 0x12c: 0x35, 0x12d: 0x36, 0x12e: 0x37, 0x12f: 0x38, - 0x130: 0x39, 0x131: 0x3a, 0x132: 0x3b, 0x133: 0x3c, 0x134: 0x3d, 0x135: 0x3e, 0x136: 0x3f, 0x137: 0x40, - 0x138: 0x41, 0x139: 0x42, 0x13a: 0x43, 0x13b: 0x44, 0x13c: 0x45, 0x13d: 0x46, 0x13e: 0x47, 0x13f: 0x48, - // Block 0x5, offset 0x140 - 0x140: 0x49, 0x141: 0x4a, 0x142: 0x4b, 0x143: 0x4c, 0x144: 0x23, 0x145: 0x23, 0x146: 0x23, 0x147: 0x23, - 0x148: 0x23, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53, - 0x150: 0x54, 0x151: 0x23, 0x152: 0x23, 0x153: 0x23, 0x154: 0x23, 0x155: 0x23, 0x156: 0x23, 0x157: 0x23, - 0x158: 0x23, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b, - 0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62, - 0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69, - 0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71, - 0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x08, 0x17e: 0x09, 0x17f: 0x0a, - // Block 0x6, offset 0x180 - 0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0b, 0x185: 0x79, 0x186: 0x7a, - 0x192: 0x7b, 0x193: 0x0c, - 0x1b0: 0x7c, 0x1b1: 0x0d, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81, - 0x1b8: 0x82, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x23, 0x1c6: 0x87, - // Block 0x8, offset 0x200 - 0x200: 0x88, 0x201: 0x23, 0x202: 0x23, 0x203: 0x23, 0x204: 0x23, 0x205: 0x23, 0x206: 0x23, 0x207: 0x23, - 0x208: 0x23, 0x209: 0x23, 0x20a: 0x23, 0x20b: 0x23, 0x20c: 0x23, 0x20d: 0x23, 0x20e: 0x23, 0x20f: 0x23, - 0x210: 0x23, 0x211: 0x23, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x23, 0x215: 0x23, 0x216: 0x23, 0x217: 0x23, - 0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x0e, 0x21f: 0x91, - 0x220: 0x92, 0x221: 0x93, 0x222: 0x23, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98, - 0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0, - 0x230: 0x23, 0x231: 0x23, 0x232: 0x23, 0x233: 0x23, 0x234: 0x23, 0x235: 0x23, 0x236: 0x23, 0x237: 0x23, - 0x238: 0x23, 0x239: 0x23, 0x23a: 0x23, 0x23b: 0x23, 0x23c: 0x23, 0x23d: 0x23, 0x23e: 0x23, 0x23f: 0x23, - // Block 0x9, offset 0x240 - 0x240: 0x23, 0x241: 0x23, 0x242: 0x23, 0x243: 0x23, 0x244: 0x23, 0x245: 0x23, 0x246: 0x23, 0x247: 0x23, - 0x248: 0x23, 0x249: 0x23, 0x24a: 0x23, 0x24b: 0x23, 0x24c: 0x23, 0x24d: 0x23, 0x24e: 0x23, 0x24f: 0x23, - 0x250: 0x23, 0x251: 0x23, 0x252: 0x23, 0x253: 0x23, 0x254: 0x23, 0x255: 0x23, 0x256: 0x23, 0x257: 0x23, - 0x258: 0x23, 0x259: 0x23, 0x25a: 0x23, 0x25b: 0x23, 0x25c: 0x23, 0x25d: 0x23, 0x25e: 0x23, 0x25f: 0x23, - 0x260: 0x23, 0x261: 0x23, 0x262: 0x23, 0x263: 0x23, 0x264: 0x23, 0x265: 0x23, 0x266: 0x23, 0x267: 0x23, - 0x268: 0x23, 0x269: 0x23, 0x26a: 0x23, 0x26b: 0x23, 0x26c: 0x23, 0x26d: 0x23, 0x26e: 0x23, 0x26f: 0x23, - 0x270: 0x23, 0x271: 0x23, 0x272: 0x23, 0x273: 0x23, 0x274: 0x23, 0x275: 0x23, 0x276: 0x23, 0x277: 0x23, - 0x278: 0x23, 0x279: 0x23, 0x27a: 0x23, 0x27b: 0x23, 0x27c: 0x23, 0x27d: 0x23, 0x27e: 0x23, 0x27f: 0x23, - // Block 0xa, offset 0x280 - 0x280: 0x23, 0x281: 0x23, 0x282: 0x23, 0x283: 0x23, 0x284: 0x23, 0x285: 0x23, 0x286: 0x23, 0x287: 0x23, - 0x288: 0x23, 0x289: 0x23, 0x28a: 0x23, 0x28b: 0x23, 0x28c: 0x23, 0x28d: 0x23, 0x28e: 0x23, 0x28f: 0x23, - 0x290: 0x23, 0x291: 0x23, 0x292: 0x23, 0x293: 0x23, 0x294: 0x23, 0x295: 0x23, 0x296: 0x23, 0x297: 0x23, - 0x298: 0x23, 0x299: 0x23, 0x29a: 0x23, 0x29b: 0x23, 0x29c: 0x23, 0x29d: 0x23, 0x29e: 0xa1, 0x29f: 0xa2, - // Block 0xb, offset 0x2c0 - 0x2ec: 0x0f, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5, - 0x2f0: 0x23, 0x2f1: 0x23, 0x2f2: 0x23, 0x2f3: 0x23, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9, - 0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x23, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0, - // Block 0xc, offset 0x300 - 0x300: 0xb1, 0x301: 0xb2, 0x302: 0x23, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5, - 0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb, - 0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1, - 0x318: 0x23, 0x319: 0x23, 0x31a: 0x23, 0x31b: 0x23, 0x31c: 0xc2, 0x31d: 0xc3, - 0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9, - 0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf, - 0x330: 0x23, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, - // Block 0xd, offset 0x340 - 0x340: 0xd3, 0x341: 0xd4, 0x342: 0xd5, 0x343: 0xd6, 0x344: 0xd7, 0x345: 0xd8, 0x346: 0xd9, 0x347: 0xda, - 0x348: 0xdb, 0x34a: 0xdc, 0x34b: 0xdd, 0x34c: 0xde, 0x34d: 0xdf, - 0x350: 0xe0, 0x351: 0xe1, 0x352: 0xe2, 0x353: 0xe3, 0x356: 0xe4, 0x357: 0xe5, - 0x358: 0xe6, 0x359: 0xe7, 0x35a: 0xe8, 0x35b: 0xe9, 0x35c: 0xea, - 0x362: 0xeb, 0x363: 0xec, - 0x368: 0xed, 0x369: 0xee, 0x36a: 0xef, 0x36b: 0xf0, - 0x370: 0xf1, 0x371: 0xf2, 0x372: 0xf3, 0x374: 0xf4, 0x375: 0xf5, - // Block 0xe, offset 0x380 - 0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23, - 0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf6, - 0x390: 0x23, 0x391: 0xf7, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf8, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23, - 0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23, - 0x3d0: 0xf7, - // Block 0x10, offset 0x400 - 0x410: 0x23, 0x411: 0x23, 0x412: 0x23, 0x413: 0x23, 0x414: 0x23, 0x415: 0x23, 0x416: 0x23, 0x417: 0x23, - 0x418: 0x23, 0x419: 0xf9, - // Block 0x11, offset 0x440 - 0x460: 0x23, 0x461: 0x23, 0x462: 0x23, 0x463: 0x23, 0x464: 0x23, 0x465: 0x23, 0x466: 0x23, 0x467: 0x23, - 0x468: 0xf0, 0x469: 0xfa, 0x46b: 0xfb, 0x46c: 0xfc, 0x46d: 0xfd, 0x46e: 0xfe, - 0x47c: 0x23, 0x47d: 0xff, 0x47e: 0x100, 0x47f: 0x101, - // Block 0x12, offset 0x480 - 0x4b0: 0x23, 0x4b1: 0x102, 0x4b2: 0x103, - // Block 0x13, offset 0x4c0 - 0x4c5: 0x104, 0x4c6: 0x105, - 0x4c9: 0x106, - 0x4d0: 0x107, 0x4d1: 0x108, 0x4d2: 0x109, 0x4d3: 0x10a, 0x4d4: 0x10b, 0x4d5: 0x10c, 0x4d6: 0x10d, 0x4d7: 0x10e, - 0x4d8: 0x10f, 0x4d9: 0x110, 0x4da: 0x111, 0x4db: 0x112, 0x4dc: 0x113, 0x4dd: 0x114, 0x4de: 0x115, 0x4df: 0x116, - 0x4e8: 0x117, 0x4e9: 0x118, 0x4ea: 0x119, - // Block 0x14, offset 0x500 - 0x500: 0x11a, - 0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x11b, 0x524: 0x10, 0x525: 0x11c, - 0x538: 0x11d, 0x539: 0x11, 0x53a: 0x11e, - // Block 0x15, offset 0x540 - 0x544: 0x11f, 0x545: 0x120, 0x546: 0x121, - 0x54f: 0x122, - // Block 0x16, offset 0x580 - 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, - 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x123, 0x5c1: 0x124, 0x5c4: 0x124, 0x5c5: 0x124, 0x5c6: 0x124, 0x5c7: 0x125, - // Block 0x18, offset 0x600 - 0x620: 0x15, -} - -// sparseOffsets: 277 entries, 554 bytes -var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x35, 0x38, 0x3c, 0x3f, 0x43, 0x4d, 0x4f, 0x54, 0x64, 0x6b, 0x70, 0x7e, 0x7f, 0x8d, 0x9c, 0xa6, 0xa9, 0xaf, 0xb7, 0xba, 0xbc, 0xca, 0xd0, 0xde, 0xe9, 0xf5, 0x100, 0x10c, 0x116, 0x122, 0x12d, 0x139, 0x145, 0x14d, 0x155, 0x15f, 0x16a, 0x176, 0x17d, 0x188, 0x18d, 0x195, 0x198, 0x19d, 0x1a1, 0x1a5, 0x1ac, 0x1b5, 0x1bd, 0x1be, 0x1c7, 0x1ce, 0x1d6, 0x1dc, 0x1e2, 0x1e7, 0x1eb, 0x1ee, 0x1f0, 0x1f3, 0x1f8, 0x1f9, 0x1fb, 0x1fd, 0x1ff, 0x206, 0x20b, 0x20f, 0x218, 0x21b, 0x21e, 0x224, 0x225, 0x230, 0x231, 0x232, 0x237, 0x244, 0x24c, 0x254, 0x25d, 0x266, 0x26f, 0x274, 0x277, 0x280, 0x28d, 0x28f, 0x296, 0x298, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x326, 0x32d, 0x331, 0x33a, 0x33b, 0x343, 0x347, 0x34c, 0x354, 0x35a, 0x360, 0x36a, 0x36f, 0x378, 0x37e, 0x385, 0x389, 0x391, 0x393, 0x395, 0x398, 0x39a, 0x39c, 0x39d, 0x39e, 0x3a0, 0x3a2, 0x3a8, 0x3ad, 0x3af, 0x3b5, 0x3b8, 0x3ba, 0x3c0, 0x3c5, 0x3c7, 0x3c8, 0x3c9, 0x3ca, 0x3cc, 0x3ce, 0x3d0, 0x3d3, 0x3d5, 0x3d8, 0x3e0, 0x3e3, 0x3e7, 0x3ef, 0x3f1, 0x3f2, 0x3f3, 0x3f5, 0x3fb, 0x3fd, 0x3fe, 0x400, 0x402, 0x404, 0x411, 0x412, 0x413, 0x417, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x421, 0x425, 0x42b, 0x42d, 0x434, 0x437, 0x43b, 0x441, 0x44a, 0x450, 0x456, 0x460, 0x46a, 0x46c, 0x473, 0x479, 0x47f, 0x485, 0x488, 0x48e, 0x491, 0x499, 0x49a, 0x4a1, 0x4a2, 0x4a5, 0x4af, 0x4b5, 0x4bb, 0x4bc, 0x4c2, 0x4c5, 0x4cd, 0x4d4, 0x4db, 0x4dc, 0x4dd, 0x4de, 0x4df, 0x4e1, 0x4e3, 0x4e5, 0x4e9, 0x4ea, 0x4ec, 0x4ed, 0x4ee, 0x4f0, 0x4f5, 0x4fa, 0x4fe, 0x4ff, 0x502, 0x506, 0x511, 0x515, 0x51d, 0x522, 0x526, 0x529, 0x52d, 0x530, 0x533, 0x538, 0x53c, 0x540, 0x544, 0x548, 0x54a, 0x54c, 0x54f, 0x554, 0x556, 0x55b, 0x564, 0x569, 0x56a, 0x56d, 0x56e, 0x56f, 0x571, 0x572, 0x573} - -// sparseValues: 1395 entries, 5580 bytes -var sparseValues = [1395]valueRange{ - // Block 0x0, offset 0x0 - {value: 0x0004, lo: 0xa8, hi: 0xa8}, - {value: 0x0012, lo: 0xaa, hi: 0xaa}, - {value: 0x0014, lo: 0xad, hi: 0xad}, - {value: 0x0004, lo: 0xaf, hi: 0xaf}, - {value: 0x0004, lo: 0xb4, hi: 0xb4}, - {value: 0x002a, lo: 0xb5, hi: 0xb5}, - {value: 0x0054, lo: 0xb7, hi: 0xb7}, - {value: 0x0004, lo: 0xb8, hi: 0xb8}, - {value: 0x0012, lo: 0xba, hi: 0xba}, - // Block 0x1, offset 0x9 - {value: 0x2013, lo: 0x80, hi: 0x96}, - {value: 0x2013, lo: 0x98, hi: 0x9e}, - {value: 0x00ea, lo: 0x9f, hi: 0x9f}, - {value: 0x2012, lo: 0xa0, hi: 0xb6}, - {value: 0x2012, lo: 0xb8, hi: 0xbe}, - {value: 0x0252, lo: 0xbf, hi: 0xbf}, - // Block 0x2, offset 0xf - {value: 0x0117, lo: 0x80, hi: 0xaf}, - {value: 0x01eb, lo: 0xb0, hi: 0xb0}, - {value: 0x02ea, lo: 0xb1, hi: 0xb1}, - {value: 0x0117, lo: 0xb2, hi: 0xb7}, - {value: 0x0012, lo: 0xb8, hi: 0xb8}, - {value: 0x0316, lo: 0xb9, hi: 0xba}, - {value: 0x0716, lo: 0xbb, hi: 0xbc}, - {value: 0x0316, lo: 0xbd, hi: 0xbe}, - {value: 0x0553, lo: 0xbf, hi: 0xbf}, - // Block 0x3, offset 0x18 - {value: 0x0552, lo: 0x80, hi: 0x80}, - {value: 0x0316, lo: 0x81, hi: 0x82}, - {value: 0x0716, lo: 0x83, hi: 0x84}, - {value: 0x0316, lo: 0x85, hi: 0x86}, - {value: 0x0f16, lo: 0x87, hi: 0x88}, - {value: 0x034a, lo: 0x89, hi: 0x89}, - {value: 0x0117, lo: 0x8a, hi: 0xb7}, - {value: 0x0253, lo: 0xb8, hi: 0xb8}, - {value: 0x0316, lo: 0xb9, hi: 0xba}, - {value: 0x0716, lo: 0xbb, hi: 0xbc}, - {value: 0x0316, lo: 0xbd, hi: 0xbe}, - {value: 0x044a, lo: 0xbf, hi: 0xbf}, - // Block 0x4, offset 0x24 - {value: 0x0117, lo: 0x80, hi: 0x9f}, - {value: 0x2f53, lo: 0xa0, hi: 0xa0}, - {value: 0x0012, lo: 0xa1, hi: 0xa1}, - {value: 0x0117, lo: 0xa2, hi: 0xb3}, - {value: 0x0012, lo: 0xb4, hi: 0xb9}, - {value: 0x10cb, lo: 0xba, hi: 0xba}, - {value: 0x0716, lo: 0xbb, hi: 0xbc}, - {value: 0x2953, lo: 0xbd, hi: 0xbd}, - {value: 0x11cb, lo: 0xbe, hi: 0xbe}, - {value: 0x12ca, lo: 0xbf, hi: 0xbf}, - // Block 0x5, offset 0x2e - {value: 0x0015, lo: 0x80, hi: 0x81}, - {value: 0x0014, lo: 0x82, hi: 0x97}, - {value: 0x0004, lo: 0x98, hi: 0x9d}, - {value: 0x0014, lo: 0x9e, hi: 0x9f}, - {value: 0x0015, lo: 0xa0, hi: 0xa4}, - {value: 0x0004, lo: 0xa5, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xbf}, - // Block 0x6, offset 0x35 - {value: 0x0024, lo: 0x80, hi: 0x94}, - {value: 0x0034, lo: 0x95, hi: 0xbc}, - {value: 0x0024, lo: 0xbd, hi: 0xbf}, - // Block 0x7, offset 0x38 - {value: 0x6553, lo: 0x80, hi: 0x8f}, - {value: 0x2013, lo: 0x90, hi: 0x9f}, - {value: 0x5f53, lo: 0xa0, hi: 0xaf}, - {value: 0x2012, lo: 0xb0, hi: 0xbf}, - // Block 0x8, offset 0x3c - {value: 0x5f52, lo: 0x80, hi: 0x8f}, - {value: 0x6552, lo: 0x90, hi: 0x9f}, - {value: 0x0117, lo: 0xa0, hi: 0xbf}, - // Block 0x9, offset 0x3f - {value: 0x0117, lo: 0x80, hi: 0x81}, - {value: 0x0024, lo: 0x83, hi: 0x87}, - {value: 0x0014, lo: 0x88, hi: 0x89}, - {value: 0x0117, lo: 0x8a, hi: 0xbf}, - // Block 0xa, offset 0x43 - {value: 0x0f13, lo: 0x80, hi: 0x80}, - {value: 0x0316, lo: 0x81, hi: 0x82}, - {value: 0x0716, lo: 0x83, hi: 0x84}, - {value: 0x0316, lo: 0x85, hi: 0x86}, - {value: 0x0f16, lo: 0x87, hi: 0x88}, - {value: 0x0316, lo: 0x89, hi: 0x8a}, - {value: 0x0716, lo: 0x8b, hi: 0x8c}, - {value: 0x0316, lo: 0x8d, hi: 0x8e}, - {value: 0x0f12, lo: 0x8f, hi: 0x8f}, - {value: 0x0117, lo: 0x90, hi: 0xbf}, - // Block 0xb, offset 0x4d - {value: 0x0117, lo: 0x80, hi: 0xaf}, - {value: 0x6553, lo: 0xb1, hi: 0xbf}, - // Block 0xc, offset 0x4f - {value: 0x3013, lo: 0x80, hi: 0x8f}, - {value: 0x6853, lo: 0x90, hi: 0x96}, - {value: 0x0014, lo: 0x99, hi: 0x99}, - {value: 0x6552, lo: 0xa1, hi: 0xaf}, - {value: 0x3012, lo: 0xb0, hi: 0xbf}, - // Block 0xd, offset 0x54 - {value: 0x6852, lo: 0x80, hi: 0x86}, - {value: 0x27aa, lo: 0x87, hi: 0x87}, - {value: 0x0034, lo: 0x91, hi: 0x91}, - {value: 0x0024, lo: 0x92, hi: 0x95}, - {value: 0x0034, lo: 0x96, hi: 0x96}, - {value: 0x0024, lo: 0x97, hi: 0x99}, - {value: 0x0034, lo: 0x9a, hi: 0x9b}, - {value: 0x0024, lo: 0x9c, hi: 0xa1}, - {value: 0x0034, lo: 0xa2, hi: 0xa7}, - {value: 0x0024, lo: 0xa8, hi: 0xa9}, - {value: 0x0034, lo: 0xaa, hi: 0xaa}, - {value: 0x0024, lo: 0xab, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xae}, - {value: 0x0024, lo: 0xaf, hi: 0xaf}, - {value: 0x0034, lo: 0xb0, hi: 0xbd}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xe, offset 0x64 - {value: 0x0034, lo: 0x81, hi: 0x82}, - {value: 0x0024, lo: 0x84, hi: 0x84}, - {value: 0x0034, lo: 0x85, hi: 0x85}, - {value: 0x0034, lo: 0x87, hi: 0x87}, - {value: 0x0010, lo: 0x90, hi: 0xaa}, - {value: 0x0010, lo: 0xb0, hi: 0xb3}, - {value: 0x0054, lo: 0xb4, hi: 0xb4}, - // Block 0xf, offset 0x6b - {value: 0x0014, lo: 0x80, hi: 0x85}, - {value: 0x0024, lo: 0x90, hi: 0x97}, - {value: 0x0034, lo: 0x98, hi: 0x9a}, - {value: 0x0014, lo: 0x9c, hi: 0x9c}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x10, offset 0x70 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x8a}, - {value: 0x0034, lo: 0x8b, hi: 0x92}, - {value: 0x0024, lo: 0x93, hi: 0x94}, - {value: 0x0034, lo: 0x95, hi: 0x96}, - {value: 0x0024, lo: 0x97, hi: 0x9b}, - {value: 0x0034, lo: 0x9c, hi: 0x9c}, - {value: 0x0024, lo: 0x9d, hi: 0x9e}, - {value: 0x0034, lo: 0x9f, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - {value: 0x0010, lo: 0xab, hi: 0xab}, - {value: 0x0010, lo: 0xae, hi: 0xaf}, - {value: 0x0034, lo: 0xb0, hi: 0xb0}, - {value: 0x0010, lo: 0xb1, hi: 0xbf}, - // Block 0x11, offset 0x7e - {value: 0x0010, lo: 0x80, hi: 0xbf}, - // Block 0x12, offset 0x7f - {value: 0x0010, lo: 0x80, hi: 0x93}, - {value: 0x0010, lo: 0x95, hi: 0x95}, - {value: 0x0024, lo: 0x96, hi: 0x9c}, - {value: 0x0014, lo: 0x9d, hi: 0x9d}, - {value: 0x0024, lo: 0x9f, hi: 0xa2}, - {value: 0x0034, lo: 0xa3, hi: 0xa3}, - {value: 0x0024, lo: 0xa4, hi: 0xa4}, - {value: 0x0014, lo: 0xa5, hi: 0xa6}, - {value: 0x0024, lo: 0xa7, hi: 0xa8}, - {value: 0x0034, lo: 0xaa, hi: 0xaa}, - {value: 0x0024, lo: 0xab, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xbc}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x13, offset 0x8d - {value: 0x0014, lo: 0x8f, hi: 0x8f}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0034, lo: 0x91, hi: 0x91}, - {value: 0x0010, lo: 0x92, hi: 0xaf}, - {value: 0x0024, lo: 0xb0, hi: 0xb0}, - {value: 0x0034, lo: 0xb1, hi: 0xb1}, - {value: 0x0024, lo: 0xb2, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0024, lo: 0xb5, hi: 0xb6}, - {value: 0x0034, lo: 0xb7, hi: 0xb9}, - {value: 0x0024, lo: 0xba, hi: 0xba}, - {value: 0x0034, lo: 0xbb, hi: 0xbc}, - {value: 0x0024, lo: 0xbd, hi: 0xbd}, - {value: 0x0034, lo: 0xbe, hi: 0xbe}, - {value: 0x0024, lo: 0xbf, hi: 0xbf}, - // Block 0x14, offset 0x9c - {value: 0x0024, lo: 0x80, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x82}, - {value: 0x0024, lo: 0x83, hi: 0x83}, - {value: 0x0034, lo: 0x84, hi: 0x84}, - {value: 0x0024, lo: 0x85, hi: 0x85}, - {value: 0x0034, lo: 0x86, hi: 0x86}, - {value: 0x0024, lo: 0x87, hi: 0x87}, - {value: 0x0034, lo: 0x88, hi: 0x88}, - {value: 0x0024, lo: 0x89, hi: 0x8a}, - {value: 0x0010, lo: 0x8d, hi: 0xbf}, - // Block 0x15, offset 0xa6 - {value: 0x0010, lo: 0x80, hi: 0xa5}, - {value: 0x0014, lo: 0xa6, hi: 0xb0}, - {value: 0x0010, lo: 0xb1, hi: 0xb1}, - // Block 0x16, offset 0xa9 - {value: 0x0010, lo: 0x80, hi: 0xaa}, - {value: 0x0024, lo: 0xab, hi: 0xb1}, - {value: 0x0034, lo: 0xb2, hi: 0xb2}, - {value: 0x0024, lo: 0xb3, hi: 0xb3}, - {value: 0x0014, lo: 0xb4, hi: 0xb5}, - {value: 0x0014, lo: 0xba, hi: 0xba}, - // Block 0x17, offset 0xaf - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0024, lo: 0x96, hi: 0x99}, - {value: 0x0014, lo: 0x9a, hi: 0x9a}, - {value: 0x0024, lo: 0x9b, hi: 0xa3}, - {value: 0x0014, lo: 0xa4, hi: 0xa4}, - {value: 0x0024, lo: 0xa5, hi: 0xa7}, - {value: 0x0014, lo: 0xa8, hi: 0xa8}, - {value: 0x0024, lo: 0xa9, hi: 0xad}, - // Block 0x18, offset 0xb7 - {value: 0x0010, lo: 0x80, hi: 0x98}, - {value: 0x0034, lo: 0x99, hi: 0x9b}, - {value: 0x0010, lo: 0xa0, hi: 0xaa}, - // Block 0x19, offset 0xba - {value: 0x0010, lo: 0xa0, hi: 0xb4}, - {value: 0x0010, lo: 0xb6, hi: 0xbd}, - // Block 0x1a, offset 0xbc - {value: 0x0024, lo: 0x94, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa2}, - {value: 0x0034, lo: 0xa3, hi: 0xa3}, - {value: 0x0024, lo: 0xa4, hi: 0xa5}, - {value: 0x0034, lo: 0xa6, hi: 0xa6}, - {value: 0x0024, lo: 0xa7, hi: 0xa8}, - {value: 0x0034, lo: 0xa9, hi: 0xa9}, - {value: 0x0024, lo: 0xaa, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xb2}, - {value: 0x0024, lo: 0xb3, hi: 0xb5}, - {value: 0x0034, lo: 0xb6, hi: 0xb6}, - {value: 0x0024, lo: 0xb7, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xba}, - {value: 0x0024, lo: 0xbb, hi: 0xbf}, - // Block 0x1b, offset 0xca - {value: 0x0014, lo: 0x80, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0xb9}, - {value: 0x0014, lo: 0xba, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x1c, offset 0xd0 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x88}, - {value: 0x0010, lo: 0x89, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0024, lo: 0x91, hi: 0x91}, - {value: 0x0034, lo: 0x92, hi: 0x92}, - {value: 0x0024, lo: 0x93, hi: 0x94}, - {value: 0x0014, lo: 0x95, hi: 0x97}, - {value: 0x0010, lo: 0x98, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0014, lo: 0xb1, hi: 0xb1}, - {value: 0x0010, lo: 0xb2, hi: 0xbf}, - // Block 0x1d, offset 0xde - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8f, hi: 0x90}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb2}, - {value: 0x0010, lo: 0xb6, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x1e, offset 0xe9 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x84}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x8e, hi: 0x8e}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0010, lo: 0x9c, hi: 0x9d}, - {value: 0x0010, lo: 0x9f, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xb1}, - {value: 0x0010, lo: 0xbc, hi: 0xbc}, - // Block 0x1f, offset 0xf5 - {value: 0x0014, lo: 0x81, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8a}, - {value: 0x0010, lo: 0x8f, hi: 0x90}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb6}, - {value: 0x0010, lo: 0xb8, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x20, offset 0x100 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x82}, - {value: 0x0014, lo: 0x87, hi: 0x88}, - {value: 0x0014, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0014, lo: 0x91, hi: 0x91}, - {value: 0x0010, lo: 0x99, hi: 0x9c}, - {value: 0x0010, lo: 0x9e, hi: 0x9e}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0014, lo: 0xb0, hi: 0xb1}, - {value: 0x0010, lo: 0xb2, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb5}, - // Block 0x21, offset 0x10c - {value: 0x0014, lo: 0x81, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8d}, - {value: 0x0010, lo: 0x8f, hi: 0x91}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x22, offset 0x116 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x85}, - {value: 0x0014, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x89, hi: 0x89}, - {value: 0x0010, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0010, lo: 0xa0, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xb9, hi: 0xb9}, - {value: 0x0014, lo: 0xba, hi: 0xbf}, - // Block 0x23, offset 0x122 - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8f, hi: 0x90}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbe}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x24, offset 0x12d - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x84}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0014, lo: 0x96, hi: 0x96}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0010, lo: 0x9c, hi: 0x9d}, - {value: 0x0010, lo: 0x9f, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xb1, hi: 0xb1}, - // Block 0x25, offset 0x139 - {value: 0x0014, lo: 0x82, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8a}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0x95}, - {value: 0x0010, lo: 0x99, hi: 0x9a}, - {value: 0x0010, lo: 0x9c, hi: 0x9c}, - {value: 0x0010, lo: 0x9e, hi: 0x9f}, - {value: 0x0010, lo: 0xa3, hi: 0xa4}, - {value: 0x0010, lo: 0xa8, hi: 0xaa}, - {value: 0x0010, lo: 0xae, hi: 0xb9}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x26, offset 0x145 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x82}, - {value: 0x0010, lo: 0x86, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - // Block 0x27, offset 0x14d - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb9}, - {value: 0x0010, lo: 0xbd, hi: 0xbd}, - {value: 0x0014, lo: 0xbe, hi: 0xbf}, - // Block 0x28, offset 0x155 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x84}, - {value: 0x0014, lo: 0x86, hi: 0x88}, - {value: 0x0014, lo: 0x8a, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0034, lo: 0x95, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0x9a}, - {value: 0x0010, lo: 0xa0, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - // Block 0x29, offset 0x15f - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbe}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x2a, offset 0x16a - {value: 0x0010, lo: 0x80, hi: 0x84}, - {value: 0x0014, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x95, hi: 0x96}, - {value: 0x0010, lo: 0x9e, hi: 0x9e}, - {value: 0x0010, lo: 0xa0, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xb1, hi: 0xb2}, - // Block 0x2b, offset 0x176 - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0xba}, - {value: 0x0034, lo: 0xbb, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x2c, offset 0x17d - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x84}, - {value: 0x0010, lo: 0x86, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x8e, hi: 0x8e}, - {value: 0x0010, lo: 0x94, hi: 0x97}, - {value: 0x0010, lo: 0x9f, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xba, hi: 0xbf}, - // Block 0x2d, offset 0x188 - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x96}, - {value: 0x0010, lo: 0x9a, hi: 0xb1}, - {value: 0x0010, lo: 0xb3, hi: 0xbb}, - {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x2e, offset 0x18d - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0034, lo: 0x8a, hi: 0x8a}, - {value: 0x0010, lo: 0x8f, hi: 0x91}, - {value: 0x0014, lo: 0x92, hi: 0x94}, - {value: 0x0014, lo: 0x96, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0x9f}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - // Block 0x2f, offset 0x195 - {value: 0x0014, lo: 0xb1, hi: 0xb1}, - {value: 0x0014, lo: 0xb4, hi: 0xb7}, - {value: 0x0034, lo: 0xb8, hi: 0xba}, - // Block 0x30, offset 0x198 - {value: 0x0004, lo: 0x86, hi: 0x86}, - {value: 0x0014, lo: 0x87, hi: 0x87}, - {value: 0x0034, lo: 0x88, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8e}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x31, offset 0x19d - {value: 0x0014, lo: 0xb1, hi: 0xb1}, - {value: 0x0014, lo: 0xb4, hi: 0xb7}, - {value: 0x0034, lo: 0xb8, hi: 0xb9}, - {value: 0x0014, lo: 0xbb, hi: 0xbc}, - // Block 0x32, offset 0x1a1 - {value: 0x0004, lo: 0x86, hi: 0x86}, - {value: 0x0034, lo: 0x88, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x33, offset 0x1a5 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0034, lo: 0x98, hi: 0x99}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - {value: 0x0034, lo: 0xb5, hi: 0xb5}, - {value: 0x0034, lo: 0xb7, hi: 0xb7}, - {value: 0x0034, lo: 0xb9, hi: 0xb9}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x34, offset 0x1ac - {value: 0x0010, lo: 0x80, hi: 0x87}, - {value: 0x0010, lo: 0x89, hi: 0xac}, - {value: 0x0034, lo: 0xb1, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xba, hi: 0xbd}, - {value: 0x0014, lo: 0xbe, hi: 0xbe}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x35, offset 0x1b5 - {value: 0x0034, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0024, lo: 0x82, hi: 0x83}, - {value: 0x0034, lo: 0x84, hi: 0x84}, - {value: 0x0024, lo: 0x86, hi: 0x87}, - {value: 0x0010, lo: 0x88, hi: 0x8c}, - {value: 0x0014, lo: 0x8d, hi: 0x97}, - {value: 0x0014, lo: 0x99, hi: 0xbc}, - // Block 0x36, offset 0x1bd - {value: 0x0034, lo: 0x86, hi: 0x86}, - // Block 0x37, offset 0x1be - {value: 0x0010, lo: 0xab, hi: 0xac}, - {value: 0x0014, lo: 0xad, hi: 0xb0}, - {value: 0x0010, lo: 0xb1, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb6}, - {value: 0x0034, lo: 0xb7, hi: 0xb7}, - {value: 0x0010, lo: 0xb8, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbc}, - {value: 0x0014, lo: 0xbd, hi: 0xbe}, - // Block 0x38, offset 0x1c7 - {value: 0x0010, lo: 0x80, hi: 0x89}, - {value: 0x0010, lo: 0x96, hi: 0x97}, - {value: 0x0014, lo: 0x98, hi: 0x99}, - {value: 0x0014, lo: 0x9e, hi: 0xa0}, - {value: 0x0010, lo: 0xa2, hi: 0xa4}, - {value: 0x0010, lo: 0xa7, hi: 0xad}, - {value: 0x0014, lo: 0xb1, hi: 0xb4}, - // Block 0x39, offset 0x1ce - {value: 0x0014, lo: 0x82, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x84}, - {value: 0x0014, lo: 0x85, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x8f, hi: 0x9c}, - {value: 0x0014, lo: 0x9d, hi: 0x9d}, - {value: 0x6c53, lo: 0xa0, hi: 0xbf}, - // Block 0x3a, offset 0x1d6 - {value: 0x7053, lo: 0x80, hi: 0x85}, - {value: 0x7053, lo: 0x87, hi: 0x87}, - {value: 0x7053, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0xba}, - {value: 0x0014, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x3b, offset 0x1dc - {value: 0x0010, lo: 0x80, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0x98}, - {value: 0x0010, lo: 0x9a, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x3c, offset 0x1e2 - {value: 0x0010, lo: 0x80, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb5}, - {value: 0x0010, lo: 0xb8, hi: 0xbe}, - // Block 0x3d, offset 0x1e7 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x82, hi: 0x85}, - {value: 0x0010, lo: 0x88, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0xbf}, - // Block 0x3e, offset 0x1eb - {value: 0x0010, lo: 0x80, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0x95}, - {value: 0x0010, lo: 0x98, hi: 0xbf}, - // Block 0x3f, offset 0x1ee - {value: 0x0010, lo: 0x80, hi: 0x9a}, - {value: 0x0024, lo: 0x9d, hi: 0x9f}, - // Block 0x40, offset 0x1f0 - {value: 0x0010, lo: 0x80, hi: 0x8f}, - {value: 0x7453, lo: 0xa0, hi: 0xaf}, - {value: 0x7853, lo: 0xb0, hi: 0xbf}, - // Block 0x41, offset 0x1f3 - {value: 0x7c53, lo: 0x80, hi: 0x8f}, - {value: 0x8053, lo: 0x90, hi: 0x9f}, - {value: 0x7c53, lo: 0xa0, hi: 0xaf}, - {value: 0x0813, lo: 0xb0, hi: 0xb5}, - {value: 0x0892, lo: 0xb8, hi: 0xbd}, - // Block 0x42, offset 0x1f8 - {value: 0x0010, lo: 0x81, hi: 0xbf}, - // Block 0x43, offset 0x1f9 - {value: 0x0010, lo: 0x80, hi: 0xac}, - {value: 0x0010, lo: 0xaf, hi: 0xbf}, - // Block 0x44, offset 0x1fb - {value: 0x0010, lo: 0x81, hi: 0x9a}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x45, offset 0x1fd - {value: 0x0010, lo: 0x80, hi: 0xaa}, - {value: 0x0010, lo: 0xae, hi: 0xb8}, - // Block 0x46, offset 0x1ff - {value: 0x0010, lo: 0x80, hi: 0x8c}, - {value: 0x0010, lo: 0x8e, hi: 0x91}, - {value: 0x0014, lo: 0x92, hi: 0x93}, - {value: 0x0034, lo: 0x94, hi: 0x94}, - {value: 0x0010, lo: 0xa0, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - // Block 0x47, offset 0x206 - {value: 0x0010, lo: 0x80, hi: 0x91}, - {value: 0x0014, lo: 0x92, hi: 0x93}, - {value: 0x0010, lo: 0xa0, hi: 0xac}, - {value: 0x0010, lo: 0xae, hi: 0xb0}, - {value: 0x0014, lo: 0xb2, hi: 0xb3}, - // Block 0x48, offset 0x20b - {value: 0x0014, lo: 0xb4, hi: 0xb5}, - {value: 0x0010, lo: 0xb6, hi: 0xb6}, - {value: 0x0014, lo: 0xb7, hi: 0xbd}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x49, offset 0x20f - {value: 0x0010, lo: 0x80, hi: 0x85}, - {value: 0x0014, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0014, lo: 0x89, hi: 0x91}, - {value: 0x0034, lo: 0x92, hi: 0x92}, - {value: 0x0014, lo: 0x93, hi: 0x93}, - {value: 0x0004, lo: 0x97, hi: 0x97}, - {value: 0x0024, lo: 0x9d, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - // Block 0x4a, offset 0x218 - {value: 0x0014, lo: 0x8b, hi: 0x8e}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x4b, offset 0x21b - {value: 0x0010, lo: 0x80, hi: 0x82}, - {value: 0x0014, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x84, hi: 0xb7}, - // Block 0x4c, offset 0x21e - {value: 0x0010, lo: 0x80, hi: 0x84}, - {value: 0x0014, lo: 0x85, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0xa8}, - {value: 0x0034, lo: 0xa9, hi: 0xa9}, - {value: 0x0010, lo: 0xaa, hi: 0xaa}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x4d, offset 0x224 - {value: 0x0010, lo: 0x80, hi: 0xb5}, - // Block 0x4e, offset 0x225 - {value: 0x0010, lo: 0x80, hi: 0x9e}, - {value: 0x0014, lo: 0xa0, hi: 0xa2}, - {value: 0x0010, lo: 0xa3, hi: 0xa6}, - {value: 0x0014, lo: 0xa7, hi: 0xa8}, - {value: 0x0010, lo: 0xa9, hi: 0xab}, - {value: 0x0010, lo: 0xb0, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb2}, - {value: 0x0010, lo: 0xb3, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xb9}, - {value: 0x0024, lo: 0xba, hi: 0xba}, - {value: 0x0034, lo: 0xbb, hi: 0xbb}, - // Block 0x4f, offset 0x230 - {value: 0x0010, lo: 0x86, hi: 0x8f}, - // Block 0x50, offset 0x231 - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x51, offset 0x232 - {value: 0x0010, lo: 0x80, hi: 0x96}, - {value: 0x0024, lo: 0x97, hi: 0x97}, - {value: 0x0034, lo: 0x98, hi: 0x98}, - {value: 0x0010, lo: 0x99, hi: 0x9a}, - {value: 0x0014, lo: 0x9b, hi: 0x9b}, - // Block 0x52, offset 0x237 - {value: 0x0010, lo: 0x95, hi: 0x95}, - {value: 0x0014, lo: 0x96, hi: 0x96}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0014, lo: 0x98, hi: 0x9e}, - {value: 0x0034, lo: 0xa0, hi: 0xa0}, - {value: 0x0010, lo: 0xa1, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa2}, - {value: 0x0010, lo: 0xa3, hi: 0xa4}, - {value: 0x0014, lo: 0xa5, hi: 0xac}, - {value: 0x0010, lo: 0xad, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb4}, - {value: 0x0024, lo: 0xb5, hi: 0xbc}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0x53, offset 0x244 - {value: 0x0010, lo: 0x80, hi: 0x89}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0004, lo: 0xa7, hi: 0xa7}, - {value: 0x0024, lo: 0xb0, hi: 0xb4}, - {value: 0x0034, lo: 0xb5, hi: 0xba}, - {value: 0x0024, lo: 0xbb, hi: 0xbc}, - {value: 0x0034, lo: 0xbd, hi: 0xbd}, - {value: 0x0014, lo: 0xbe, hi: 0xbe}, - // Block 0x54, offset 0x24c - {value: 0x0014, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x84, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0010, lo: 0xb5, hi: 0xb5}, - {value: 0x0014, lo: 0xb6, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - {value: 0x0014, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x55, offset 0x254 - {value: 0x0010, lo: 0x80, hi: 0x81}, - {value: 0x0014, lo: 0x82, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x83}, - {value: 0x0030, lo: 0x84, hi: 0x84}, - {value: 0x0010, lo: 0x85, hi: 0x8b}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0024, lo: 0xab, hi: 0xab}, - {value: 0x0034, lo: 0xac, hi: 0xac}, - {value: 0x0024, lo: 0xad, hi: 0xb3}, - // Block 0x56, offset 0x25d - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa5}, - {value: 0x0010, lo: 0xa6, hi: 0xa7}, - {value: 0x0014, lo: 0xa8, hi: 0xa9}, - {value: 0x0030, lo: 0xaa, hi: 0xaa}, - {value: 0x0034, lo: 0xab, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xbf}, - // Block 0x57, offset 0x266 - {value: 0x0010, lo: 0x80, hi: 0xa5}, - {value: 0x0034, lo: 0xa6, hi: 0xa6}, - {value: 0x0010, lo: 0xa7, hi: 0xa7}, - {value: 0x0014, lo: 0xa8, hi: 0xa9}, - {value: 0x0010, lo: 0xaa, hi: 0xac}, - {value: 0x0014, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xae}, - {value: 0x0014, lo: 0xaf, hi: 0xb1}, - {value: 0x0030, lo: 0xb2, hi: 0xb3}, - // Block 0x58, offset 0x26f - {value: 0x0010, lo: 0x80, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xb3}, - {value: 0x0010, lo: 0xb4, hi: 0xb5}, - {value: 0x0014, lo: 0xb6, hi: 0xb6}, - {value: 0x0034, lo: 0xb7, hi: 0xb7}, - // Block 0x59, offset 0x274 - {value: 0x0010, lo: 0x80, hi: 0x89}, - {value: 0x0010, lo: 0x8d, hi: 0xb7}, - {value: 0x0014, lo: 0xb8, hi: 0xbd}, - // Block 0x5a, offset 0x277 - {value: 0x296a, lo: 0x80, hi: 0x80}, - {value: 0x2a2a, lo: 0x81, hi: 0x81}, - {value: 0x2aea, lo: 0x82, hi: 0x82}, - {value: 0x2baa, lo: 0x83, hi: 0x83}, - {value: 0x2c6a, lo: 0x84, hi: 0x84}, - {value: 0x2d2a, lo: 0x85, hi: 0x85}, - {value: 0x2dea, lo: 0x86, hi: 0x86}, - {value: 0x2eaa, lo: 0x87, hi: 0x87}, - {value: 0x2f6a, lo: 0x88, hi: 0x88}, - // Block 0x5b, offset 0x280 - {value: 0x0024, lo: 0x90, hi: 0x92}, - {value: 0x0034, lo: 0x94, hi: 0x99}, - {value: 0x0024, lo: 0x9a, hi: 0x9b}, - {value: 0x0034, lo: 0x9c, hi: 0x9f}, - {value: 0x0024, lo: 0xa0, hi: 0xa0}, - {value: 0x0010, lo: 0xa1, hi: 0xa1}, - {value: 0x0034, lo: 0xa2, hi: 0xa8}, - {value: 0x0010, lo: 0xa9, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xb3}, - {value: 0x0024, lo: 0xb4, hi: 0xb4}, - {value: 0x0010, lo: 0xb5, hi: 0xb7}, - {value: 0x0024, lo: 0xb8, hi: 0xb9}, - // Block 0x5c, offset 0x28d - {value: 0x0012, lo: 0x80, hi: 0xab}, - {value: 0x0015, lo: 0xac, hi: 0xbf}, - // Block 0x5d, offset 0x28f - {value: 0x0015, lo: 0x80, hi: 0xaa}, - {value: 0x0012, lo: 0xab, hi: 0xb7}, - {value: 0x0015, lo: 0xb8, hi: 0xb8}, - {value: 0x8452, lo: 0xb9, hi: 0xb9}, - {value: 0x0012, lo: 0xba, hi: 0xbc}, - {value: 0x8852, lo: 0xbd, hi: 0xbd}, - {value: 0x0012, lo: 0xbe, hi: 0xbf}, - // Block 0x5e, offset 0x296 - {value: 0x0012, lo: 0x80, hi: 0x9a}, - {value: 0x0015, lo: 0x9b, hi: 0xbf}, - // Block 0x5f, offset 0x298 - {value: 0x0024, lo: 0x80, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x82}, - {value: 0x0024, lo: 0x83, hi: 0x89}, - {value: 0x0034, lo: 0x8a, hi: 0x8a}, - {value: 0x0024, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x90}, - {value: 0x0024, lo: 0x91, hi: 0xb5}, - {value: 0x0034, lo: 0xb6, hi: 0xb9}, - {value: 0x0024, lo: 0xbb, hi: 0xbb}, - {value: 0x0034, lo: 0xbc, hi: 0xbd}, - {value: 0x0024, lo: 0xbe, hi: 0xbe}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0x60, offset 0x2a4 - {value: 0x0117, lo: 0x80, hi: 0xbf}, - // Block 0x61, offset 0x2a5 - {value: 0x0117, lo: 0x80, hi: 0x95}, - {value: 0x306a, lo: 0x96, hi: 0x96}, - {value: 0x316a, lo: 0x97, hi: 0x97}, - {value: 0x326a, lo: 0x98, hi: 0x98}, - {value: 0x336a, lo: 0x99, hi: 0x99}, - {value: 0x346a, lo: 0x9a, hi: 0x9a}, - {value: 0x356a, lo: 0x9b, hi: 0x9b}, - {value: 0x0012, lo: 0x9c, hi: 0x9d}, - {value: 0x366b, lo: 0x9e, hi: 0x9e}, - {value: 0x0012, lo: 0x9f, hi: 0x9f}, - {value: 0x0117, lo: 0xa0, hi: 0xbf}, - // Block 0x62, offset 0x2b0 - {value: 0x0812, lo: 0x80, hi: 0x87}, - {value: 0x0813, lo: 0x88, hi: 0x8f}, - {value: 0x0812, lo: 0x90, hi: 0x95}, - {value: 0x0813, lo: 0x98, hi: 0x9d}, - {value: 0x0812, lo: 0xa0, hi: 0xa7}, - {value: 0x0813, lo: 0xa8, hi: 0xaf}, - {value: 0x0812, lo: 0xb0, hi: 0xb7}, - {value: 0x0813, lo: 0xb8, hi: 0xbf}, - // Block 0x63, offset 0x2b8 - {value: 0x0004, lo: 0x8b, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8f}, - {value: 0x0054, lo: 0x98, hi: 0x99}, - {value: 0x0054, lo: 0xa4, hi: 0xa4}, - {value: 0x0054, lo: 0xa7, hi: 0xa7}, - {value: 0x0014, lo: 0xaa, hi: 0xae}, - {value: 0x0010, lo: 0xaf, hi: 0xaf}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x64, offset 0x2c0 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x94, hi: 0x94}, - {value: 0x0014, lo: 0xa0, hi: 0xa4}, - {value: 0x0014, lo: 0xa6, hi: 0xaf}, - {value: 0x0015, lo: 0xb1, hi: 0xb1}, - {value: 0x0015, lo: 0xbf, hi: 0xbf}, - // Block 0x65, offset 0x2c6 - {value: 0x0015, lo: 0x90, hi: 0x9c}, - // Block 0x66, offset 0x2c7 - {value: 0x0024, lo: 0x90, hi: 0x91}, - {value: 0x0034, lo: 0x92, hi: 0x93}, - {value: 0x0024, lo: 0x94, hi: 0x97}, - {value: 0x0034, lo: 0x98, hi: 0x9a}, - {value: 0x0024, lo: 0x9b, hi: 0x9c}, - {value: 0x0014, lo: 0x9d, hi: 0xa0}, - {value: 0x0024, lo: 0xa1, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa4}, - {value: 0x0034, lo: 0xa5, hi: 0xa6}, - {value: 0x0024, lo: 0xa7, hi: 0xa7}, - {value: 0x0034, lo: 0xa8, hi: 0xa8}, - {value: 0x0024, lo: 0xa9, hi: 0xa9}, - {value: 0x0034, lo: 0xaa, hi: 0xaf}, - {value: 0x0024, lo: 0xb0, hi: 0xb0}, - // Block 0x67, offset 0x2d5 - {value: 0x0016, lo: 0x85, hi: 0x86}, - {value: 0x0012, lo: 0x87, hi: 0x89}, - {value: 0x9d52, lo: 0x8e, hi: 0x8e}, - {value: 0x1013, lo: 0xa0, hi: 0xaf}, - {value: 0x1012, lo: 0xb0, hi: 0xbf}, - // Block 0x68, offset 0x2da - {value: 0x0010, lo: 0x80, hi: 0x82}, - {value: 0x0716, lo: 0x83, hi: 0x84}, - {value: 0x0010, lo: 0x85, hi: 0x88}, - // Block 0x69, offset 0x2dd - {value: 0xa053, lo: 0xb6, hi: 0xb7}, - {value: 0xa353, lo: 0xb8, hi: 0xb9}, - {value: 0xa653, lo: 0xba, hi: 0xbb}, - {value: 0xa353, lo: 0xbc, hi: 0xbd}, - {value: 0xa053, lo: 0xbe, hi: 0xbf}, - // Block 0x6a, offset 0x2e2 - {value: 0x3013, lo: 0x80, hi: 0x8f}, - {value: 0x6553, lo: 0x90, hi: 0x9f}, - {value: 0xa953, lo: 0xa0, hi: 0xae}, - {value: 0x3012, lo: 0xb0, hi: 0xbf}, - // Block 0x6b, offset 0x2e6 - {value: 0x0117, lo: 0x80, hi: 0xa3}, - {value: 0x0012, lo: 0xa4, hi: 0xa4}, - {value: 0x0716, lo: 0xab, hi: 0xac}, - {value: 0x0316, lo: 0xad, hi: 0xae}, - {value: 0x0024, lo: 0xaf, hi: 0xb1}, - {value: 0x0117, lo: 0xb2, hi: 0xb3}, - // Block 0x6c, offset 0x2ec - {value: 0x6c52, lo: 0x80, hi: 0x9f}, - {value: 0x7052, lo: 0xa0, hi: 0xa5}, - {value: 0x7052, lo: 0xa7, hi: 0xa7}, - {value: 0x7052, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x6d, offset 0x2f1 - {value: 0x0010, lo: 0x80, hi: 0xa7}, - {value: 0x0014, lo: 0xaf, hi: 0xaf}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0x6e, offset 0x2f4 - {value: 0x0010, lo: 0x80, hi: 0x96}, - {value: 0x0010, lo: 0xa0, hi: 0xa6}, - {value: 0x0010, lo: 0xa8, hi: 0xae}, - {value: 0x0010, lo: 0xb0, hi: 0xb6}, - {value: 0x0010, lo: 0xb8, hi: 0xbe}, - // Block 0x6f, offset 0x2f9 - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0010, lo: 0x88, hi: 0x8e}, - {value: 0x0010, lo: 0x90, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0x9e}, - {value: 0x0024, lo: 0xa0, hi: 0xbf}, - // Block 0x70, offset 0x2fe - {value: 0x0014, lo: 0xaf, hi: 0xaf}, - // Block 0x71, offset 0x2ff - {value: 0x0014, lo: 0x85, hi: 0x85}, - {value: 0x0034, lo: 0xaa, hi: 0xad}, - {value: 0x0030, lo: 0xae, hi: 0xaf}, - {value: 0x0004, lo: 0xb1, hi: 0xb5}, - {value: 0x0014, lo: 0xbb, hi: 0xbb}, - {value: 0x0010, lo: 0xbc, hi: 0xbc}, - // Block 0x72, offset 0x305 - {value: 0x0034, lo: 0x99, hi: 0x9a}, - {value: 0x0004, lo: 0x9b, hi: 0x9e}, - // Block 0x73, offset 0x307 - {value: 0x0004, lo: 0xbc, hi: 0xbe}, - // Block 0x74, offset 0x308 - {value: 0x0010, lo: 0x85, hi: 0xae}, - {value: 0x0010, lo: 0xb1, hi: 0xbf}, - // Block 0x75, offset 0x30a - {value: 0x0010, lo: 0x80, hi: 0x8e}, - {value: 0x0010, lo: 0xa0, hi: 0xba}, - // Block 0x76, offset 0x30c - {value: 0x0010, lo: 0x80, hi: 0x94}, - {value: 0x0014, lo: 0x95, hi: 0x95}, - {value: 0x0010, lo: 0x96, hi: 0xbf}, - // Block 0x77, offset 0x30f - {value: 0x0010, lo: 0x80, hi: 0x8c}, - // Block 0x78, offset 0x310 - {value: 0x0010, lo: 0x90, hi: 0xb7}, - {value: 0x0014, lo: 0xb8, hi: 0xbd}, - // Block 0x79, offset 0x312 - {value: 0x0010, lo: 0x80, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8c}, - {value: 0x0010, lo: 0x90, hi: 0xab}, - // Block 0x7a, offset 0x315 - {value: 0x0117, lo: 0x80, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xae}, - {value: 0x0024, lo: 0xaf, hi: 0xaf}, - {value: 0x0014, lo: 0xb0, hi: 0xb2}, - {value: 0x0024, lo: 0xb4, hi: 0xbd}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x7b, offset 0x31b - {value: 0x0117, lo: 0x80, hi: 0x9b}, - {value: 0x0015, lo: 0x9c, hi: 0x9d}, - {value: 0x0024, lo: 0x9e, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x7c, offset 0x31f - {value: 0x0010, lo: 0x80, hi: 0xaf}, - {value: 0x0024, lo: 0xb0, hi: 0xb1}, - // Block 0x7d, offset 0x321 - {value: 0x0004, lo: 0x80, hi: 0x96}, - {value: 0x0014, lo: 0x97, hi: 0xa1}, - {value: 0x0117, lo: 0xa2, hi: 0xaf}, - {value: 0x0012, lo: 0xb0, hi: 0xb1}, - {value: 0x0117, lo: 0xb2, hi: 0xbf}, - // Block 0x7e, offset 0x326 - {value: 0x0117, lo: 0x80, hi: 0xaf}, - {value: 0x0015, lo: 0xb0, hi: 0xb0}, - {value: 0x0012, lo: 0xb1, hi: 0xb8}, - {value: 0x0316, lo: 0xb9, hi: 0xba}, - {value: 0x0716, lo: 0xbb, hi: 0xbc}, - {value: 0x8453, lo: 0xbd, hi: 0xbd}, - {value: 0x0117, lo: 0xbe, hi: 0xbf}, - // Block 0x7f, offset 0x32d - {value: 0x0010, lo: 0xb7, hi: 0xb7}, - {value: 0x0015, lo: 0xb8, hi: 0xb9}, - {value: 0x0012, lo: 0xba, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbf}, - // Block 0x80, offset 0x331 - {value: 0x0010, lo: 0x80, hi: 0x81}, - {value: 0x0014, lo: 0x82, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x85}, - {value: 0x0034, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x8a}, - {value: 0x0014, lo: 0x8b, hi: 0x8b}, - {value: 0x0010, lo: 0x8c, hi: 0xa4}, - {value: 0x0014, lo: 0xa5, hi: 0xa6}, - {value: 0x0010, lo: 0xa7, hi: 0xa7}, - // Block 0x81, offset 0x33a - {value: 0x0010, lo: 0x80, hi: 0xb3}, - // Block 0x82, offset 0x33b - {value: 0x0010, lo: 0x80, hi: 0x83}, - {value: 0x0034, lo: 0x84, hi: 0x84}, - {value: 0x0014, lo: 0x85, hi: 0x85}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0024, lo: 0xa0, hi: 0xb1}, - {value: 0x0010, lo: 0xb2, hi: 0xb7}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x83, offset 0x343 - {value: 0x0010, lo: 0x80, hi: 0xa5}, - {value: 0x0014, lo: 0xa6, hi: 0xaa}, - {value: 0x0034, lo: 0xab, hi: 0xad}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x84, offset 0x347 - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0014, lo: 0x87, hi: 0x91}, - {value: 0x0010, lo: 0x92, hi: 0x92}, - {value: 0x0030, lo: 0x93, hi: 0x93}, - {value: 0x0010, lo: 0xa0, hi: 0xbc}, - // Block 0x85, offset 0x34c - {value: 0x0014, lo: 0x80, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0xb2}, - {value: 0x0034, lo: 0xb3, hi: 0xb3}, - {value: 0x0010, lo: 0xb4, hi: 0xb5}, - {value: 0x0014, lo: 0xb6, hi: 0xb9}, - {value: 0x0010, lo: 0xba, hi: 0xbb}, - {value: 0x0014, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x86, offset 0x354 - {value: 0x0030, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x8f, hi: 0x8f}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0014, lo: 0xa5, hi: 0xa5}, - {value: 0x0004, lo: 0xa6, hi: 0xa6}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0x87, offset 0x35a - {value: 0x0010, lo: 0x80, hi: 0xa8}, - {value: 0x0014, lo: 0xa9, hi: 0xae}, - {value: 0x0010, lo: 0xaf, hi: 0xb0}, - {value: 0x0014, lo: 0xb1, hi: 0xb2}, - {value: 0x0010, lo: 0xb3, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb6}, - // Block 0x88, offset 0x360 - {value: 0x0010, lo: 0x80, hi: 0x82}, - {value: 0x0014, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x84, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8c}, - {value: 0x0010, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0004, lo: 0xb0, hi: 0xb0}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - {value: 0x0014, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x89, offset 0x36a - {value: 0x0024, lo: 0xb0, hi: 0xb0}, - {value: 0x0024, lo: 0xb2, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0024, lo: 0xb7, hi: 0xb8}, - {value: 0x0024, lo: 0xbe, hi: 0xbf}, - // Block 0x8a, offset 0x36f - {value: 0x0024, lo: 0x81, hi: 0x81}, - {value: 0x0004, lo: 0x9d, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xaf}, - {value: 0x0010, lo: 0xb2, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb4}, - {value: 0x0010, lo: 0xb5, hi: 0xb5}, - {value: 0x0034, lo: 0xb6, hi: 0xb6}, - // Block 0x8b, offset 0x378 - {value: 0x0010, lo: 0x81, hi: 0x86}, - {value: 0x0010, lo: 0x89, hi: 0x8e}, - {value: 0x0010, lo: 0x91, hi: 0x96}, - {value: 0x0010, lo: 0xa0, hi: 0xa6}, - {value: 0x0010, lo: 0xa8, hi: 0xae}, - {value: 0x0012, lo: 0xb0, hi: 0xbf}, - // Block 0x8c, offset 0x37e - {value: 0x0012, lo: 0x80, hi: 0x92}, - {value: 0xac52, lo: 0x93, hi: 0x93}, - {value: 0x0012, lo: 0x94, hi: 0x9a}, - {value: 0x0014, lo: 0x9b, hi: 0x9b}, - {value: 0x0015, lo: 0x9c, hi: 0x9f}, - {value: 0x0012, lo: 0xa0, hi: 0xa5}, - {value: 0x74d2, lo: 0xb0, hi: 0xbf}, - // Block 0x8d, offset 0x385 - {value: 0x78d2, lo: 0x80, hi: 0x8f}, - {value: 0x7cd2, lo: 0x90, hi: 0x9f}, - {value: 0x80d2, lo: 0xa0, hi: 0xaf}, - {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, - // Block 0x8e, offset 0x389 - {value: 0x0010, lo: 0x80, hi: 0xa4}, - {value: 0x0014, lo: 0xa5, hi: 0xa5}, - {value: 0x0010, lo: 0xa6, hi: 0xa7}, - {value: 0x0014, lo: 0xa8, hi: 0xa8}, - {value: 0x0010, lo: 0xa9, hi: 0xaa}, - {value: 0x0010, lo: 0xac, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0x8f, offset 0x391 - {value: 0x0010, lo: 0x80, hi: 0xa3}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x90, offset 0x393 - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0010, lo: 0x8b, hi: 0xbb}, - // Block 0x91, offset 0x395 - {value: 0x0010, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x83, hi: 0x84}, - {value: 0x0010, lo: 0x86, hi: 0xbf}, - // Block 0x92, offset 0x398 - {value: 0x0010, lo: 0x80, hi: 0xb1}, - {value: 0x0004, lo: 0xb2, hi: 0xbf}, - // Block 0x93, offset 0x39a - {value: 0x0004, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x93, hi: 0xbf}, - // Block 0x94, offset 0x39c - {value: 0x0010, lo: 0x80, hi: 0xbd}, - // Block 0x95, offset 0x39d - {value: 0x0010, lo: 0x90, hi: 0xbf}, - // Block 0x96, offset 0x39e - {value: 0x0010, lo: 0x80, hi: 0x8f}, - {value: 0x0010, lo: 0x92, hi: 0xbf}, - // Block 0x97, offset 0x3a0 - {value: 0x0010, lo: 0x80, hi: 0x87}, - {value: 0x0010, lo: 0xb0, hi: 0xbb}, - // Block 0x98, offset 0x3a2 - {value: 0x0014, lo: 0x80, hi: 0x8f}, - {value: 0x0054, lo: 0x93, hi: 0x93}, - {value: 0x0024, lo: 0xa0, hi: 0xa6}, - {value: 0x0034, lo: 0xa7, hi: 0xad}, - {value: 0x0024, lo: 0xae, hi: 0xaf}, - {value: 0x0010, lo: 0xb3, hi: 0xb4}, - // Block 0x99, offset 0x3a8 - {value: 0x0010, lo: 0x8d, hi: 0x8f}, - {value: 0x0054, lo: 0x92, hi: 0x92}, - {value: 0x0054, lo: 0x95, hi: 0x95}, - {value: 0x0010, lo: 0xb0, hi: 0xb4}, - {value: 0x0010, lo: 0xb6, hi: 0xbf}, - // Block 0x9a, offset 0x3ad - {value: 0x0010, lo: 0x80, hi: 0xbc}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x9b, offset 0x3af - {value: 0x0054, lo: 0x87, hi: 0x87}, - {value: 0x0054, lo: 0x8e, hi: 0x8e}, - {value: 0x0054, lo: 0x9a, hi: 0x9a}, - {value: 0x5f53, lo: 0xa1, hi: 0xba}, - {value: 0x0004, lo: 0xbe, hi: 0xbe}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x9c, offset 0x3b5 - {value: 0x0004, lo: 0x80, hi: 0x80}, - {value: 0x5f52, lo: 0x81, hi: 0x9a}, - {value: 0x0004, lo: 0xb0, hi: 0xb0}, - // Block 0x9d, offset 0x3b8 - {value: 0x0014, lo: 0x9e, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xbe}, - // Block 0x9e, offset 0x3ba - {value: 0x0010, lo: 0x82, hi: 0x87}, - {value: 0x0010, lo: 0x8a, hi: 0x8f}, - {value: 0x0010, lo: 0x92, hi: 0x97}, - {value: 0x0010, lo: 0x9a, hi: 0x9c}, - {value: 0x0004, lo: 0xa3, hi: 0xa3}, - {value: 0x0014, lo: 0xb9, hi: 0xbb}, - // Block 0x9f, offset 0x3c0 - {value: 0x0010, lo: 0x80, hi: 0x8b}, - {value: 0x0010, lo: 0x8d, hi: 0xa6}, - {value: 0x0010, lo: 0xa8, hi: 0xba}, - {value: 0x0010, lo: 0xbc, hi: 0xbd}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xa0, offset 0x3c5 - {value: 0x0010, lo: 0x80, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x9d}, - // Block 0xa1, offset 0x3c7 - {value: 0x0010, lo: 0x80, hi: 0xba}, - // Block 0xa2, offset 0x3c8 - {value: 0x0010, lo: 0x80, hi: 0xb4}, - // Block 0xa3, offset 0x3c9 - {value: 0x0034, lo: 0xbd, hi: 0xbd}, - // Block 0xa4, offset 0x3ca - {value: 0x0010, lo: 0x80, hi: 0x9c}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0xa5, offset 0x3cc - {value: 0x0010, lo: 0x80, hi: 0x90}, - {value: 0x0034, lo: 0xa0, hi: 0xa0}, - // Block 0xa6, offset 0x3ce - {value: 0x0010, lo: 0x80, hi: 0x9f}, - {value: 0x0010, lo: 0xad, hi: 0xbf}, - // Block 0xa7, offset 0x3d0 - {value: 0x0010, lo: 0x80, hi: 0x8a}, - {value: 0x0010, lo: 0x90, hi: 0xb5}, - {value: 0x0024, lo: 0xb6, hi: 0xba}, - // Block 0xa8, offset 0x3d3 - {value: 0x0010, lo: 0x80, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0xa9, offset 0x3d5 - {value: 0x0010, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x88, hi: 0x8f}, - {value: 0x0010, lo: 0x91, hi: 0x95}, - // Block 0xaa, offset 0x3d8 - {value: 0x2813, lo: 0x80, hi: 0x87}, - {value: 0x3813, lo: 0x88, hi: 0x8f}, - {value: 0x2813, lo: 0x90, hi: 0x97}, - {value: 0xaf53, lo: 0x98, hi: 0x9f}, - {value: 0xb253, lo: 0xa0, hi: 0xa7}, - {value: 0x2812, lo: 0xa8, hi: 0xaf}, - {value: 0x3812, lo: 0xb0, hi: 0xb7}, - {value: 0x2812, lo: 0xb8, hi: 0xbf}, - // Block 0xab, offset 0x3e0 - {value: 0xaf52, lo: 0x80, hi: 0x87}, - {value: 0xb252, lo: 0x88, hi: 0x8f}, - {value: 0x0010, lo: 0x90, hi: 0xbf}, - // Block 0xac, offset 0x3e3 - {value: 0x0010, lo: 0x80, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - {value: 0xb253, lo: 0xb0, hi: 0xb7}, - {value: 0xaf53, lo: 0xb8, hi: 0xbf}, - // Block 0xad, offset 0x3e7 - {value: 0x2813, lo: 0x80, hi: 0x87}, - {value: 0x3813, lo: 0x88, hi: 0x8f}, - {value: 0x2813, lo: 0x90, hi: 0x93}, - {value: 0xb252, lo: 0x98, hi: 0x9f}, - {value: 0xaf52, lo: 0xa0, hi: 0xa7}, - {value: 0x2812, lo: 0xa8, hi: 0xaf}, - {value: 0x3812, lo: 0xb0, hi: 0xb7}, - {value: 0x2812, lo: 0xb8, hi: 0xbb}, - // Block 0xae, offset 0x3ef - {value: 0x0010, lo: 0x80, hi: 0xa7}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xaf, offset 0x3f1 - {value: 0x0010, lo: 0x80, hi: 0xa3}, - // Block 0xb0, offset 0x3f2 - {value: 0x0010, lo: 0x80, hi: 0xb6}, - // Block 0xb1, offset 0x3f3 - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0010, lo: 0xa0, hi: 0xa7}, - // Block 0xb2, offset 0x3f5 - {value: 0x0010, lo: 0x80, hi: 0x85}, - {value: 0x0010, lo: 0x88, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0xb5}, - {value: 0x0010, lo: 0xb7, hi: 0xb8}, - {value: 0x0010, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xb3, offset 0x3fb - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0010, lo: 0xa0, hi: 0xb6}, - // Block 0xb4, offset 0x3fd - {value: 0x0010, lo: 0x80, hi: 0x9e}, - // Block 0xb5, offset 0x3fe - {value: 0x0010, lo: 0xa0, hi: 0xb2}, - {value: 0x0010, lo: 0xb4, hi: 0xb5}, - // Block 0xb6, offset 0x400 - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0010, lo: 0xa0, hi: 0xb9}, - // Block 0xb7, offset 0x402 - {value: 0x0010, lo: 0x80, hi: 0xb7}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0xb8, offset 0x404 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x83}, - {value: 0x0014, lo: 0x85, hi: 0x86}, - {value: 0x0014, lo: 0x8c, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0014, lo: 0x8e, hi: 0x8e}, - {value: 0x0024, lo: 0x8f, hi: 0x8f}, - {value: 0x0010, lo: 0x90, hi: 0x93}, - {value: 0x0010, lo: 0x95, hi: 0x97}, - {value: 0x0010, lo: 0x99, hi: 0xb3}, - {value: 0x0024, lo: 0xb8, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xba}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xb9, offset 0x411 - {value: 0x0010, lo: 0xa0, hi: 0xbc}, - // Block 0xba, offset 0x412 - {value: 0x0010, lo: 0x80, hi: 0x9c}, - // Block 0xbb, offset 0x413 - {value: 0x0010, lo: 0x80, hi: 0x87}, - {value: 0x0010, lo: 0x89, hi: 0xa4}, - {value: 0x0024, lo: 0xa5, hi: 0xa5}, - {value: 0x0034, lo: 0xa6, hi: 0xa6}, - // Block 0xbc, offset 0x417 - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0010, lo: 0xa0, hi: 0xb2}, - // Block 0xbd, offset 0x419 - {value: 0x0010, lo: 0x80, hi: 0x91}, - // Block 0xbe, offset 0x41a - {value: 0x0010, lo: 0x80, hi: 0x88}, - // Block 0xbf, offset 0x41b - {value: 0x5653, lo: 0x80, hi: 0xb2}, - // Block 0xc0, offset 0x41c - {value: 0x5652, lo: 0x80, hi: 0xb2}, - // Block 0xc1, offset 0x41d - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0xb7}, - {value: 0x0014, lo: 0xb8, hi: 0xbf}, - // Block 0xc2, offset 0x421 - {value: 0x0014, lo: 0x80, hi: 0x85}, - {value: 0x0034, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xc3, offset 0x425 - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb6}, - {value: 0x0010, lo: 0xb7, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xba}, - {value: 0x0014, lo: 0xbd, hi: 0xbd}, - // Block 0xc4, offset 0x42b - {value: 0x0010, lo: 0x90, hi: 0xa8}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xc5, offset 0x42d - {value: 0x0024, lo: 0x80, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0xa6}, - {value: 0x0014, lo: 0xa7, hi: 0xab}, - {value: 0x0010, lo: 0xac, hi: 0xac}, - {value: 0x0014, lo: 0xad, hi: 0xb2}, - {value: 0x0034, lo: 0xb3, hi: 0xb4}, - {value: 0x0010, lo: 0xb6, hi: 0xbf}, - // Block 0xc6, offset 0x434 - {value: 0x0010, lo: 0x90, hi: 0xb2}, - {value: 0x0034, lo: 0xb3, hi: 0xb3}, - {value: 0x0010, lo: 0xb6, hi: 0xb6}, - // Block 0xc7, offset 0x437 - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0xb5}, - {value: 0x0014, lo: 0xb6, hi: 0xbe}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xc8, offset 0x43b - {value: 0x0030, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x84}, - {value: 0x0034, lo: 0x8a, hi: 0x8a}, - {value: 0x0014, lo: 0x8b, hi: 0x8c}, - {value: 0x0010, lo: 0x90, hi: 0x9a}, - {value: 0x0010, lo: 0x9c, hi: 0x9c}, - // Block 0xc9, offset 0x441 - {value: 0x0010, lo: 0x80, hi: 0x91}, - {value: 0x0010, lo: 0x93, hi: 0xae}, - {value: 0x0014, lo: 0xaf, hi: 0xb1}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0014, lo: 0xb4, hi: 0xb4}, - {value: 0x0030, lo: 0xb5, hi: 0xb5}, - {value: 0x0034, lo: 0xb6, hi: 0xb6}, - {value: 0x0014, lo: 0xb7, hi: 0xb7}, - {value: 0x0014, lo: 0xbe, hi: 0xbe}, - // Block 0xca, offset 0x44a - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0010, lo: 0x88, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8d}, - {value: 0x0010, lo: 0x8f, hi: 0x9d}, - {value: 0x0010, lo: 0x9f, hi: 0xa8}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xcb, offset 0x450 - {value: 0x0010, lo: 0x80, hi: 0x9e}, - {value: 0x0014, lo: 0x9f, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xa2}, - {value: 0x0014, lo: 0xa3, hi: 0xa8}, - {value: 0x0034, lo: 0xa9, hi: 0xaa}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xcc, offset 0x456 - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8f, hi: 0x90}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0xcd, offset 0x460 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x84}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x8b, hi: 0x8c}, - {value: 0x0030, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0010, lo: 0x9d, hi: 0xa3}, - {value: 0x0024, lo: 0xa6, hi: 0xac}, - {value: 0x0024, lo: 0xb0, hi: 0xb4}, - // Block 0xce, offset 0x46a - {value: 0x0010, lo: 0x80, hi: 0xb7}, - {value: 0x0014, lo: 0xb8, hi: 0xbf}, - // Block 0xcf, offset 0x46c - {value: 0x0010, lo: 0x80, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x82}, - {value: 0x0014, lo: 0x83, hi: 0x84}, - {value: 0x0010, lo: 0x85, hi: 0x85}, - {value: 0x0034, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x8a}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd0, offset 0x473 - {value: 0x0010, lo: 0x80, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb8}, - {value: 0x0010, lo: 0xb9, hi: 0xb9}, - {value: 0x0014, lo: 0xba, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbe}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0xd1, offset 0x479 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x84, hi: 0x85}, - {value: 0x0010, lo: 0x87, hi: 0x87}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd2, offset 0x47f - {value: 0x0010, lo: 0x80, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb5}, - {value: 0x0010, lo: 0xb8, hi: 0xbb}, - {value: 0x0014, lo: 0xbc, hi: 0xbd}, - {value: 0x0010, lo: 0xbe, hi: 0xbe}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xd3, offset 0x485 - {value: 0x0034, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x98, hi: 0x9b}, - {value: 0x0014, lo: 0x9c, hi: 0x9d}, - // Block 0xd4, offset 0x488 - {value: 0x0010, lo: 0x80, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbc}, - {value: 0x0014, lo: 0xbd, hi: 0xbd}, - {value: 0x0010, lo: 0xbe, hi: 0xbe}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xd5, offset 0x48e - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x84, hi: 0x84}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd6, offset 0x491 - {value: 0x0010, lo: 0x80, hi: 0xaa}, - {value: 0x0014, lo: 0xab, hi: 0xab}, - {value: 0x0010, lo: 0xac, hi: 0xac}, - {value: 0x0014, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xaf}, - {value: 0x0014, lo: 0xb0, hi: 0xb5}, - {value: 0x0030, lo: 0xb6, hi: 0xb6}, - {value: 0x0034, lo: 0xb7, hi: 0xb7}, - // Block 0xd7, offset 0x499 - {value: 0x0010, lo: 0x80, hi: 0x89}, - // Block 0xd8, offset 0x49a - {value: 0x0014, lo: 0x9d, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa5}, - {value: 0x0010, lo: 0xa6, hi: 0xa6}, - {value: 0x0014, lo: 0xa7, hi: 0xaa}, - {value: 0x0034, lo: 0xab, hi: 0xab}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xd9, offset 0x4a1 - {value: 0x5f53, lo: 0xa0, hi: 0xbf}, - // Block 0xda, offset 0x4a2 - {value: 0x5f52, lo: 0x80, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xdb, offset 0x4a5 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0014, lo: 0x89, hi: 0x8a}, - {value: 0x0010, lo: 0x8b, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb8}, - {value: 0x0010, lo: 0xb9, hi: 0xba}, - {value: 0x0014, lo: 0xbb, hi: 0xbe}, - // Block 0xdc, offset 0x4af - {value: 0x0034, lo: 0x87, hi: 0x87}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0014, lo: 0x91, hi: 0x96}, - {value: 0x0010, lo: 0x97, hi: 0x98}, - {value: 0x0014, lo: 0x99, hi: 0x9b}, - {value: 0x0010, lo: 0x9c, hi: 0xbf}, - // Block 0xdd, offset 0x4b5 - {value: 0x0010, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x86, hi: 0x89}, - {value: 0x0014, lo: 0x8a, hi: 0x96}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0014, lo: 0x98, hi: 0x98}, - {value: 0x0034, lo: 0x99, hi: 0x99}, - // Block 0xde, offset 0x4bb - {value: 0x0010, lo: 0x80, hi: 0xb8}, - // Block 0xdf, offset 0x4bc - {value: 0x0010, lo: 0x80, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0xaf}, - {value: 0x0014, lo: 0xb0, hi: 0xb6}, - {value: 0x0014, lo: 0xb8, hi: 0xbd}, - {value: 0x0010, lo: 0xbe, hi: 0xbe}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xe0, offset 0x4c2 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0010, lo: 0xb2, hi: 0xbf}, - // Block 0xe1, offset 0x4c5 - {value: 0x0010, lo: 0x80, hi: 0x8f}, - {value: 0x0014, lo: 0x92, hi: 0xa7}, - {value: 0x0010, lo: 0xa9, hi: 0xa9}, - {value: 0x0014, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb1, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb4, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb6}, - // Block 0xe2, offset 0x4cd - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0010, lo: 0x88, hi: 0x89}, - {value: 0x0010, lo: 0x8b, hi: 0xb0}, - {value: 0x0014, lo: 0xb1, hi: 0xb6}, - {value: 0x0014, lo: 0xba, hi: 0xba}, - {value: 0x0014, lo: 0xbc, hi: 0xbd}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0xe3, offset 0x4d4 - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x82}, - {value: 0x0014, lo: 0x83, hi: 0x83}, - {value: 0x0034, lo: 0x84, hi: 0x85}, - {value: 0x0010, lo: 0x86, hi: 0x86}, - {value: 0x0014, lo: 0x87, hi: 0x87}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xe4, offset 0x4db - {value: 0x0010, lo: 0x80, hi: 0x99}, - // Block 0xe5, offset 0x4dc - {value: 0x0010, lo: 0x80, hi: 0xae}, - // Block 0xe6, offset 0x4dd - {value: 0x0010, lo: 0x80, hi: 0x83}, - // Block 0xe7, offset 0x4de - {value: 0x0010, lo: 0x80, hi: 0x86}, - // Block 0xe8, offset 0x4df - {value: 0x0010, lo: 0x80, hi: 0x9e}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - // Block 0xe9, offset 0x4e1 - {value: 0x0010, lo: 0x90, hi: 0xad}, - {value: 0x0034, lo: 0xb0, hi: 0xb4}, - // Block 0xea, offset 0x4e3 - {value: 0x0010, lo: 0x80, hi: 0xaf}, - {value: 0x0024, lo: 0xb0, hi: 0xb6}, - // Block 0xeb, offset 0x4e5 - {value: 0x0014, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0010, lo: 0xa3, hi: 0xb7}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0xec, offset 0x4e9 - {value: 0x0010, lo: 0x80, hi: 0x8f}, - // Block 0xed, offset 0x4ea - {value: 0x0010, lo: 0x80, hi: 0x84}, - {value: 0x0010, lo: 0x90, hi: 0xbe}, - // Block 0xee, offset 0x4ec - {value: 0x0014, lo: 0x8f, hi: 0x9f}, - // Block 0xef, offset 0x4ed - {value: 0x0014, lo: 0xa0, hi: 0xa1}, - // Block 0xf0, offset 0x4ee - {value: 0x0010, lo: 0x80, hi: 0xaa}, - {value: 0x0010, lo: 0xb0, hi: 0xbc}, - // Block 0xf1, offset 0x4f0 - {value: 0x0010, lo: 0x80, hi: 0x88}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0014, lo: 0x9d, hi: 0x9d}, - {value: 0x0034, lo: 0x9e, hi: 0x9e}, - {value: 0x0014, lo: 0xa0, hi: 0xa3}, - // Block 0xf2, offset 0x4f5 - {value: 0x0030, lo: 0xa5, hi: 0xa6}, - {value: 0x0034, lo: 0xa7, hi: 0xa9}, - {value: 0x0030, lo: 0xad, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xba}, - {value: 0x0034, lo: 0xbb, hi: 0xbf}, - // Block 0xf3, offset 0x4fa - {value: 0x0034, lo: 0x80, hi: 0x82}, - {value: 0x0024, lo: 0x85, hi: 0x89}, - {value: 0x0034, lo: 0x8a, hi: 0x8b}, - {value: 0x0024, lo: 0xaa, hi: 0xad}, - // Block 0xf4, offset 0x4fe - {value: 0x0024, lo: 0x82, hi: 0x84}, - // Block 0xf5, offset 0x4ff - {value: 0x0013, lo: 0x80, hi: 0x99}, - {value: 0x0012, lo: 0x9a, hi: 0xb3}, - {value: 0x0013, lo: 0xb4, hi: 0xbf}, - // Block 0xf6, offset 0x502 - {value: 0x0013, lo: 0x80, hi: 0x8d}, - {value: 0x0012, lo: 0x8e, hi: 0x94}, - {value: 0x0012, lo: 0x96, hi: 0xa7}, - {value: 0x0013, lo: 0xa8, hi: 0xbf}, - // Block 0xf7, offset 0x506 - {value: 0x0013, lo: 0x80, hi: 0x81}, - {value: 0x0012, lo: 0x82, hi: 0x9b}, - {value: 0x0013, lo: 0x9c, hi: 0x9c}, - {value: 0x0013, lo: 0x9e, hi: 0x9f}, - {value: 0x0013, lo: 0xa2, hi: 0xa2}, - {value: 0x0013, lo: 0xa5, hi: 0xa6}, - {value: 0x0013, lo: 0xa9, hi: 0xac}, - {value: 0x0013, lo: 0xae, hi: 0xb5}, - {value: 0x0012, lo: 0xb6, hi: 0xb9}, - {value: 0x0012, lo: 0xbb, hi: 0xbb}, - {value: 0x0012, lo: 0xbd, hi: 0xbf}, - // Block 0xf8, offset 0x511 - {value: 0x0012, lo: 0x80, hi: 0x83}, - {value: 0x0012, lo: 0x85, hi: 0x8f}, - {value: 0x0013, lo: 0x90, hi: 0xa9}, - {value: 0x0012, lo: 0xaa, hi: 0xbf}, - // Block 0xf9, offset 0x515 - {value: 0x0012, lo: 0x80, hi: 0x83}, - {value: 0x0013, lo: 0x84, hi: 0x85}, - {value: 0x0013, lo: 0x87, hi: 0x8a}, - {value: 0x0013, lo: 0x8d, hi: 0x94}, - {value: 0x0013, lo: 0x96, hi: 0x9c}, - {value: 0x0012, lo: 0x9e, hi: 0xb7}, - {value: 0x0013, lo: 0xb8, hi: 0xb9}, - {value: 0x0013, lo: 0xbb, hi: 0xbe}, - // Block 0xfa, offset 0x51d - {value: 0x0013, lo: 0x80, hi: 0x84}, - {value: 0x0013, lo: 0x86, hi: 0x86}, - {value: 0x0013, lo: 0x8a, hi: 0x90}, - {value: 0x0012, lo: 0x92, hi: 0xab}, - {value: 0x0013, lo: 0xac, hi: 0xbf}, - // Block 0xfb, offset 0x522 - {value: 0x0013, lo: 0x80, hi: 0x85}, - {value: 0x0012, lo: 0x86, hi: 0x9f}, - {value: 0x0013, lo: 0xa0, hi: 0xb9}, - {value: 0x0012, lo: 0xba, hi: 0xbf}, - // Block 0xfc, offset 0x526 - {value: 0x0012, lo: 0x80, hi: 0x93}, - {value: 0x0013, lo: 0x94, hi: 0xad}, - {value: 0x0012, lo: 0xae, hi: 0xbf}, - // Block 0xfd, offset 0x529 - {value: 0x0012, lo: 0x80, hi: 0x87}, - {value: 0x0013, lo: 0x88, hi: 0xa1}, - {value: 0x0012, lo: 0xa2, hi: 0xbb}, - {value: 0x0013, lo: 0xbc, hi: 0xbf}, - // Block 0xfe, offset 0x52d - {value: 0x0013, lo: 0x80, hi: 0x95}, - {value: 0x0012, lo: 0x96, hi: 0xaf}, - {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0xff, offset 0x530 - {value: 0x0013, lo: 0x80, hi: 0x89}, - {value: 0x0012, lo: 0x8a, hi: 0xa5}, - {value: 0x0013, lo: 0xa8, hi: 0xbf}, - // Block 0x100, offset 0x533 - {value: 0x0013, lo: 0x80, hi: 0x80}, - {value: 0x0012, lo: 0x82, hi: 0x9a}, - {value: 0x0012, lo: 0x9c, hi: 0xa1}, - {value: 0x0013, lo: 0xa2, hi: 0xba}, - {value: 0x0012, lo: 0xbc, hi: 0xbf}, - // Block 0x101, offset 0x538 - {value: 0x0012, lo: 0x80, hi: 0x94}, - {value: 0x0012, lo: 0x96, hi: 0x9b}, - {value: 0x0013, lo: 0x9c, hi: 0xb4}, - {value: 0x0012, lo: 0xb6, hi: 0xbf}, - // Block 0x102, offset 0x53c - {value: 0x0012, lo: 0x80, hi: 0x8e}, - {value: 0x0012, lo: 0x90, hi: 0x95}, - {value: 0x0013, lo: 0x96, hi: 0xae}, - {value: 0x0012, lo: 0xb0, hi: 0xbf}, - // Block 0x103, offset 0x540 - {value: 0x0012, lo: 0x80, hi: 0x88}, - {value: 0x0012, lo: 0x8a, hi: 0x8f}, - {value: 0x0013, lo: 0x90, hi: 0xa8}, - {value: 0x0012, lo: 0xaa, hi: 0xbf}, - // Block 0x104, offset 0x544 - {value: 0x0012, lo: 0x80, hi: 0x82}, - {value: 0x0012, lo: 0x84, hi: 0x89}, - {value: 0x0017, lo: 0x8a, hi: 0x8b}, - {value: 0x0010, lo: 0x8e, hi: 0xbf}, - // Block 0x105, offset 0x548 - {value: 0x0014, lo: 0x80, hi: 0xb6}, - {value: 0x0014, lo: 0xbb, hi: 0xbf}, - // Block 0x106, offset 0x54a - {value: 0x0014, lo: 0x80, hi: 0xac}, - {value: 0x0014, lo: 0xb5, hi: 0xb5}, - // Block 0x107, offset 0x54c - {value: 0x0014, lo: 0x84, hi: 0x84}, - {value: 0x0014, lo: 0x9b, hi: 0x9f}, - {value: 0x0014, lo: 0xa1, hi: 0xaf}, - // Block 0x108, offset 0x54f - {value: 0x0024, lo: 0x80, hi: 0x86}, - {value: 0x0024, lo: 0x88, hi: 0x98}, - {value: 0x0024, lo: 0x9b, hi: 0xa1}, - {value: 0x0024, lo: 0xa3, hi: 0xa4}, - {value: 0x0024, lo: 0xa6, hi: 0xaa}, - // Block 0x109, offset 0x554 - {value: 0x0010, lo: 0x80, hi: 0x84}, - {value: 0x0034, lo: 0x90, hi: 0x96}, - // Block 0x10a, offset 0x556 - {value: 0xb552, lo: 0x80, hi: 0x81}, - {value: 0xb852, lo: 0x82, hi: 0x83}, - {value: 0x0024, lo: 0x84, hi: 0x89}, - {value: 0x0034, lo: 0x8a, hi: 0x8a}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x10b, offset 0x55b - {value: 0x0010, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x9f}, - {value: 0x0010, lo: 0xa1, hi: 0xa2}, - {value: 0x0010, lo: 0xa4, hi: 0xa4}, - {value: 0x0010, lo: 0xa7, hi: 0xa7}, - {value: 0x0010, lo: 0xa9, hi: 0xb2}, - {value: 0x0010, lo: 0xb4, hi: 0xb7}, - {value: 0x0010, lo: 0xb9, hi: 0xb9}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - // Block 0x10c, offset 0x564 - {value: 0x0010, lo: 0x80, hi: 0x89}, - {value: 0x0010, lo: 0x8b, hi: 0x9b}, - {value: 0x0010, lo: 0xa1, hi: 0xa3}, - {value: 0x0010, lo: 0xa5, hi: 0xa9}, - {value: 0x0010, lo: 0xab, hi: 0xbb}, - // Block 0x10d, offset 0x569 - {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0x10e, offset 0x56a - {value: 0x0013, lo: 0x80, hi: 0x89}, - {value: 0x0013, lo: 0x90, hi: 0xa9}, - {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0x10f, offset 0x56d - {value: 0x0013, lo: 0x80, hi: 0x89}, - // Block 0x110, offset 0x56e - {value: 0x0004, lo: 0xbb, hi: 0xbf}, - // Block 0x111, offset 0x56f - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0014, lo: 0xa0, hi: 0xbf}, - // Block 0x112, offset 0x571 - {value: 0x0014, lo: 0x80, hi: 0xbf}, - // Block 0x113, offset 0x572 - {value: 0x0014, lo: 0x80, hi: 0xaf}, -} - -// Total table size 13961 bytes (13KiB); checksum: 4CC48DA3 diff --git a/vendor/golang.org/x/text/cases/tables10.0.0_test.go b/vendor/golang.org/x/text/cases/tables10.0.0_test.go deleted file mode 100644 index c73c9795..00000000 --- a/vendor/golang.org/x/text/cases/tables10.0.0_test.go +++ /dev/null @@ -1,1160 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build go1.10 - -package cases - -var ( - caseIgnorable = map[rune]bool{ - 0x0027: true, - 0x002e: true, - 0x003a: true, - 0x00b7: true, - 0x0387: true, - 0x05f4: true, - 0x2018: true, - 0x2019: true, - 0x2024: true, - 0x2027: true, - 0xfe13: true, - 0xfe52: true, - 0xfe55: true, - 0xff07: true, - 0xff0e: true, - 0xff1a: true, - } - - special = map[rune]struct{ toLower, toTitle, toUpper string }{ - 0x00df: {"ß", "Ss", "SS"}, - 0x0130: {"i̇", "İ", "İ"}, - 0xfb00: {"ff", "Ff", "FF"}, - 0xfb01: {"fi", "Fi", "FI"}, - 0xfb02: {"fl", "Fl", "FL"}, - 0xfb03: {"ffi", "Ffi", "FFI"}, - 0xfb04: {"ffl", "Ffl", "FFL"}, - 0xfb05: {"ſt", "St", "ST"}, - 0xfb06: {"st", "St", "ST"}, - 0x0587: {"և", "Եւ", "ԵՒ"}, - 0xfb13: {"ﬓ", "Մն", "ՄՆ"}, - 0xfb14: {"ﬔ", "Մե", "ՄԵ"}, - 0xfb15: {"ﬕ", "Մի", "ՄԻ"}, - 0xfb16: {"ﬖ", "Վն", "ՎՆ"}, - 0xfb17: {"ﬗ", "Մխ", "ՄԽ"}, - 0x0149: {"ʼn", "ʼN", "ʼN"}, - 0x0390: {"ΐ", "Ϊ́", "Ϊ́"}, - 0x03b0: {"ΰ", "Ϋ́", "Ϋ́"}, - 0x01f0: {"ǰ", "J̌", "J̌"}, - 0x1e96: {"ẖ", "H̱", "H̱"}, - 0x1e97: {"ẗ", "T̈", "T̈"}, - 0x1e98: {"ẘ", "W̊", "W̊"}, - 0x1e99: {"ẙ", "Y̊", "Y̊"}, - 0x1e9a: {"ẚ", "Aʾ", "Aʾ"}, - 0x1f50: {"ὐ", "Υ̓", "Υ̓"}, - 0x1f52: {"ὒ", "Υ̓̀", "Υ̓̀"}, - 0x1f54: {"ὔ", "Υ̓́", "Υ̓́"}, - 0x1f56: {"ὖ", "Υ̓͂", "Υ̓͂"}, - 0x1fb6: {"ᾶ", "Α͂", "Α͂"}, - 0x1fc6: {"ῆ", "Η͂", "Η͂"}, - 0x1fd2: {"ῒ", "Ϊ̀", "Ϊ̀"}, - 0x1fd3: {"ΐ", "Ϊ́", "Ϊ́"}, - 0x1fd6: {"ῖ", "Ι͂", "Ι͂"}, - 0x1fd7: {"ῗ", "Ϊ͂", "Ϊ͂"}, - 0x1fe2: {"ῢ", "Ϋ̀", "Ϋ̀"}, - 0x1fe3: {"ΰ", "Ϋ́", "Ϋ́"}, - 0x1fe4: {"ῤ", "Ρ̓", "Ρ̓"}, - 0x1fe6: {"ῦ", "Υ͂", "Υ͂"}, - 0x1fe7: {"ῧ", "Ϋ͂", "Ϋ͂"}, - 0x1ff6: {"ῶ", "Ω͂", "Ω͂"}, - 0x1f80: {"ᾀ", "ᾈ", "ἈΙ"}, - 0x1f81: {"ᾁ", "ᾉ", "ἉΙ"}, - 0x1f82: {"ᾂ", "ᾊ", "ἊΙ"}, - 0x1f83: {"ᾃ", "ᾋ", "ἋΙ"}, - 0x1f84: {"ᾄ", "ᾌ", "ἌΙ"}, - 0x1f85: {"ᾅ", "ᾍ", "ἍΙ"}, - 0x1f86: {"ᾆ", "ᾎ", "ἎΙ"}, - 0x1f87: {"ᾇ", "ᾏ", "ἏΙ"}, - 0x1f88: {"ᾀ", "ᾈ", "ἈΙ"}, - 0x1f89: {"ᾁ", "ᾉ", "ἉΙ"}, - 0x1f8a: {"ᾂ", "ᾊ", "ἊΙ"}, - 0x1f8b: {"ᾃ", "ᾋ", "ἋΙ"}, - 0x1f8c: {"ᾄ", "ᾌ", "ἌΙ"}, - 0x1f8d: {"ᾅ", "ᾍ", "ἍΙ"}, - 0x1f8e: {"ᾆ", "ᾎ", "ἎΙ"}, - 0x1f8f: {"ᾇ", "ᾏ", "ἏΙ"}, - 0x1f90: {"ᾐ", "ᾘ", "ἨΙ"}, - 0x1f91: {"ᾑ", "ᾙ", "ἩΙ"}, - 0x1f92: {"ᾒ", "ᾚ", "ἪΙ"}, - 0x1f93: {"ᾓ", "ᾛ", "ἫΙ"}, - 0x1f94: {"ᾔ", "ᾜ", "ἬΙ"}, - 0x1f95: {"ᾕ", "ᾝ", "ἭΙ"}, - 0x1f96: {"ᾖ", "ᾞ", "ἮΙ"}, - 0x1f97: {"ᾗ", "ᾟ", "ἯΙ"}, - 0x1f98: {"ᾐ", "ᾘ", "ἨΙ"}, - 0x1f99: {"ᾑ", "ᾙ", "ἩΙ"}, - 0x1f9a: {"ᾒ", "ᾚ", "ἪΙ"}, - 0x1f9b: {"ᾓ", "ᾛ", "ἫΙ"}, - 0x1f9c: {"ᾔ", "ᾜ", "ἬΙ"}, - 0x1f9d: {"ᾕ", "ᾝ", "ἭΙ"}, - 0x1f9e: {"ᾖ", "ᾞ", "ἮΙ"}, - 0x1f9f: {"ᾗ", "ᾟ", "ἯΙ"}, - 0x1fa0: {"ᾠ", "ᾨ", "ὨΙ"}, - 0x1fa1: {"ᾡ", "ᾩ", "ὩΙ"}, - 0x1fa2: {"ᾢ", "ᾪ", "ὪΙ"}, - 0x1fa3: {"ᾣ", "ᾫ", "ὫΙ"}, - 0x1fa4: {"ᾤ", "ᾬ", "ὬΙ"}, - 0x1fa5: {"ᾥ", "ᾭ", "ὭΙ"}, - 0x1fa6: {"ᾦ", "ᾮ", "ὮΙ"}, - 0x1fa7: {"ᾧ", "ᾯ", "ὯΙ"}, - 0x1fa8: {"ᾠ", "ᾨ", "ὨΙ"}, - 0x1fa9: {"ᾡ", "ᾩ", "ὩΙ"}, - 0x1faa: {"ᾢ", "ᾪ", "ὪΙ"}, - 0x1fab: {"ᾣ", "ᾫ", "ὫΙ"}, - 0x1fac: {"ᾤ", "ᾬ", "ὬΙ"}, - 0x1fad: {"ᾥ", "ᾭ", "ὭΙ"}, - 0x1fae: {"ᾦ", "ᾮ", "ὮΙ"}, - 0x1faf: {"ᾧ", "ᾯ", "ὯΙ"}, - 0x1fb3: {"ᾳ", "ᾼ", "ΑΙ"}, - 0x1fbc: {"ᾳ", "ᾼ", "ΑΙ"}, - 0x1fc3: {"ῃ", "ῌ", "ΗΙ"}, - 0x1fcc: {"ῃ", "ῌ", "ΗΙ"}, - 0x1ff3: {"ῳ", "ῼ", "ΩΙ"}, - 0x1ffc: {"ῳ", "ῼ", "ΩΙ"}, - 0x1fb2: {"ᾲ", "Ὰͅ", "ᾺΙ"}, - 0x1fb4: {"ᾴ", "Άͅ", "ΆΙ"}, - 0x1fc2: {"ῂ", "Ὴͅ", "ῊΙ"}, - 0x1fc4: {"ῄ", "Ήͅ", "ΉΙ"}, - 0x1ff2: {"ῲ", "Ὼͅ", "ῺΙ"}, - 0x1ff4: {"ῴ", "Ώͅ", "ΏΙ"}, - 0x1fb7: {"ᾷ", "ᾼ͂", "Α͂Ι"}, - 0x1fc7: {"ῇ", "ῌ͂", "Η͂Ι"}, - 0x1ff7: {"ῷ", "ῼ͂", "Ω͂Ι"}, - } - - foldMap = map[rune]struct{ simple, full, special string }{ - 0x0049: {"", "", "ı"}, - 0x00b5: {"μ", "μ", ""}, - 0x00df: {"", "ss", ""}, - 0x0130: {"", "i̇", "i"}, - 0x0149: {"", "ʼn", ""}, - 0x017f: {"s", "s", ""}, - 0x01f0: {"", "ǰ", ""}, - 0x0345: {"ι", "ι", ""}, - 0x0390: {"", "ΐ", ""}, - 0x03b0: {"", "ΰ", ""}, - 0x03c2: {"σ", "σ", ""}, - 0x03d0: {"β", "β", ""}, - 0x03d1: {"θ", "θ", ""}, - 0x03d5: {"φ", "φ", ""}, - 0x03d6: {"π", "π", ""}, - 0x03f0: {"κ", "κ", ""}, - 0x03f1: {"ρ", "ρ", ""}, - 0x03f5: {"ε", "ε", ""}, - 0x0587: {"", "եւ", ""}, - 0x13f8: {"Ᏸ", "Ᏸ", ""}, - 0x13f9: {"Ᏹ", "Ᏹ", ""}, - 0x13fa: {"Ᏺ", "Ᏺ", ""}, - 0x13fb: {"Ᏻ", "Ᏻ", ""}, - 0x13fc: {"Ᏼ", "Ᏼ", ""}, - 0x13fd: {"Ᏽ", "Ᏽ", ""}, - 0x1c80: {"в", "в", ""}, - 0x1c81: {"д", "д", ""}, - 0x1c82: {"о", "о", ""}, - 0x1c83: {"с", "с", ""}, - 0x1c84: {"т", "т", ""}, - 0x1c85: {"т", "т", ""}, - 0x1c86: {"ъ", "ъ", ""}, - 0x1c87: {"ѣ", "ѣ", ""}, - 0x1c88: {"ꙋ", "ꙋ", ""}, - 0x1e96: {"", "ẖ", ""}, - 0x1e97: {"", "ẗ", ""}, - 0x1e98: {"", "ẘ", ""}, - 0x1e99: {"", "ẙ", ""}, - 0x1e9a: {"", "aʾ", ""}, - 0x1e9b: {"ṡ", "ṡ", ""}, - 0x1e9e: {"", "ss", ""}, - 0x1f50: {"", "ὐ", ""}, - 0x1f52: {"", "ὒ", ""}, - 0x1f54: {"", "ὔ", ""}, - 0x1f56: {"", "ὖ", ""}, - 0x1f80: {"", "ἀι", ""}, - 0x1f81: {"", "ἁι", ""}, - 0x1f82: {"", "ἂι", ""}, - 0x1f83: {"", "ἃι", ""}, - 0x1f84: {"", "ἄι", ""}, - 0x1f85: {"", "ἅι", ""}, - 0x1f86: {"", "ἆι", ""}, - 0x1f87: {"", "ἇι", ""}, - 0x1f88: {"", "ἀι", ""}, - 0x1f89: {"", "ἁι", ""}, - 0x1f8a: {"", "ἂι", ""}, - 0x1f8b: {"", "ἃι", ""}, - 0x1f8c: {"", "ἄι", ""}, - 0x1f8d: {"", "ἅι", ""}, - 0x1f8e: {"", "ἆι", ""}, - 0x1f8f: {"", "ἇι", ""}, - 0x1f90: {"", "ἠι", ""}, - 0x1f91: {"", "ἡι", ""}, - 0x1f92: {"", "ἢι", ""}, - 0x1f93: {"", "ἣι", ""}, - 0x1f94: {"", "ἤι", ""}, - 0x1f95: {"", "ἥι", ""}, - 0x1f96: {"", "ἦι", ""}, - 0x1f97: {"", "ἧι", ""}, - 0x1f98: {"", "ἠι", ""}, - 0x1f99: {"", "ἡι", ""}, - 0x1f9a: {"", "ἢι", ""}, - 0x1f9b: {"", "ἣι", ""}, - 0x1f9c: {"", "ἤι", ""}, - 0x1f9d: {"", "ἥι", ""}, - 0x1f9e: {"", "ἦι", ""}, - 0x1f9f: {"", "ἧι", ""}, - 0x1fa0: {"", "ὠι", ""}, - 0x1fa1: {"", "ὡι", ""}, - 0x1fa2: {"", "ὢι", ""}, - 0x1fa3: {"", "ὣι", ""}, - 0x1fa4: {"", "ὤι", ""}, - 0x1fa5: {"", "ὥι", ""}, - 0x1fa6: {"", "ὦι", ""}, - 0x1fa7: {"", "ὧι", ""}, - 0x1fa8: {"", "ὠι", ""}, - 0x1fa9: {"", "ὡι", ""}, - 0x1faa: {"", "ὢι", ""}, - 0x1fab: {"", "ὣι", ""}, - 0x1fac: {"", "ὤι", ""}, - 0x1fad: {"", "ὥι", ""}, - 0x1fae: {"", "ὦι", ""}, - 0x1faf: {"", "ὧι", ""}, - 0x1fb2: {"", "ὰι", ""}, - 0x1fb3: {"", "αι", ""}, - 0x1fb4: {"", "άι", ""}, - 0x1fb6: {"", "ᾶ", ""}, - 0x1fb7: {"", "ᾶι", ""}, - 0x1fbc: {"", "αι", ""}, - 0x1fbe: {"ι", "ι", ""}, - 0x1fc2: {"", "ὴι", ""}, - 0x1fc3: {"", "ηι", ""}, - 0x1fc4: {"", "ήι", ""}, - 0x1fc6: {"", "ῆ", ""}, - 0x1fc7: {"", "ῆι", ""}, - 0x1fcc: {"", "ηι", ""}, - 0x1fd2: {"", "ῒ", ""}, - 0x1fd3: {"", "ΐ", ""}, - 0x1fd6: {"", "ῖ", ""}, - 0x1fd7: {"", "ῗ", ""}, - 0x1fe2: {"", "ῢ", ""}, - 0x1fe3: {"", "ΰ", ""}, - 0x1fe4: {"", "ῤ", ""}, - 0x1fe6: {"", "ῦ", ""}, - 0x1fe7: {"", "ῧ", ""}, - 0x1ff2: {"", "ὼι", ""}, - 0x1ff3: {"", "ωι", ""}, - 0x1ff4: {"", "ώι", ""}, - 0x1ff6: {"", "ῶ", ""}, - 0x1ff7: {"", "ῶι", ""}, - 0x1ffc: {"", "ωι", ""}, - 0xab70: {"Ꭰ", "Ꭰ", ""}, - 0xab71: {"Ꭱ", "Ꭱ", ""}, - 0xab72: {"Ꭲ", "Ꭲ", ""}, - 0xab73: {"Ꭳ", "Ꭳ", ""}, - 0xab74: {"Ꭴ", "Ꭴ", ""}, - 0xab75: {"Ꭵ", "Ꭵ", ""}, - 0xab76: {"Ꭶ", "Ꭶ", ""}, - 0xab77: {"Ꭷ", "Ꭷ", ""}, - 0xab78: {"Ꭸ", "Ꭸ", ""}, - 0xab79: {"Ꭹ", "Ꭹ", ""}, - 0xab7a: {"Ꭺ", "Ꭺ", ""}, - 0xab7b: {"Ꭻ", "Ꭻ", ""}, - 0xab7c: {"Ꭼ", "Ꭼ", ""}, - 0xab7d: {"Ꭽ", "Ꭽ", ""}, - 0xab7e: {"Ꭾ", "Ꭾ", ""}, - 0xab7f: {"Ꭿ", "Ꭿ", ""}, - 0xab80: {"Ꮀ", "Ꮀ", ""}, - 0xab81: {"Ꮁ", "Ꮁ", ""}, - 0xab82: {"Ꮂ", "Ꮂ", ""}, - 0xab83: {"Ꮃ", "Ꮃ", ""}, - 0xab84: {"Ꮄ", "Ꮄ", ""}, - 0xab85: {"Ꮅ", "Ꮅ", ""}, - 0xab86: {"Ꮆ", "Ꮆ", ""}, - 0xab87: {"Ꮇ", "Ꮇ", ""}, - 0xab88: {"Ꮈ", "Ꮈ", ""}, - 0xab89: {"Ꮉ", "Ꮉ", ""}, - 0xab8a: {"Ꮊ", "Ꮊ", ""}, - 0xab8b: {"Ꮋ", "Ꮋ", ""}, - 0xab8c: {"Ꮌ", "Ꮌ", ""}, - 0xab8d: {"Ꮍ", "Ꮍ", ""}, - 0xab8e: {"Ꮎ", "Ꮎ", ""}, - 0xab8f: {"Ꮏ", "Ꮏ", ""}, - 0xab90: {"Ꮐ", "Ꮐ", ""}, - 0xab91: {"Ꮑ", "Ꮑ", ""}, - 0xab92: {"Ꮒ", "Ꮒ", ""}, - 0xab93: {"Ꮓ", "Ꮓ", ""}, - 0xab94: {"Ꮔ", "Ꮔ", ""}, - 0xab95: {"Ꮕ", "Ꮕ", ""}, - 0xab96: {"Ꮖ", "Ꮖ", ""}, - 0xab97: {"Ꮗ", "Ꮗ", ""}, - 0xab98: {"Ꮘ", "Ꮘ", ""}, - 0xab99: {"Ꮙ", "Ꮙ", ""}, - 0xab9a: {"Ꮚ", "Ꮚ", ""}, - 0xab9b: {"Ꮛ", "Ꮛ", ""}, - 0xab9c: {"Ꮜ", "Ꮜ", ""}, - 0xab9d: {"Ꮝ", "Ꮝ", ""}, - 0xab9e: {"Ꮞ", "Ꮞ", ""}, - 0xab9f: {"Ꮟ", "Ꮟ", ""}, - 0xaba0: {"Ꮠ", "Ꮠ", ""}, - 0xaba1: {"Ꮡ", "Ꮡ", ""}, - 0xaba2: {"Ꮢ", "Ꮢ", ""}, - 0xaba3: {"Ꮣ", "Ꮣ", ""}, - 0xaba4: {"Ꮤ", "Ꮤ", ""}, - 0xaba5: {"Ꮥ", "Ꮥ", ""}, - 0xaba6: {"Ꮦ", "Ꮦ", ""}, - 0xaba7: {"Ꮧ", "Ꮧ", ""}, - 0xaba8: {"Ꮨ", "Ꮨ", ""}, - 0xaba9: {"Ꮩ", "Ꮩ", ""}, - 0xabaa: {"Ꮪ", "Ꮪ", ""}, - 0xabab: {"Ꮫ", "Ꮫ", ""}, - 0xabac: {"Ꮬ", "Ꮬ", ""}, - 0xabad: {"Ꮭ", "Ꮭ", ""}, - 0xabae: {"Ꮮ", "Ꮮ", ""}, - 0xabaf: {"Ꮯ", "Ꮯ", ""}, - 0xabb0: {"Ꮰ", "Ꮰ", ""}, - 0xabb1: {"Ꮱ", "Ꮱ", ""}, - 0xabb2: {"Ꮲ", "Ꮲ", ""}, - 0xabb3: {"Ꮳ", "Ꮳ", ""}, - 0xabb4: {"Ꮴ", "Ꮴ", ""}, - 0xabb5: {"Ꮵ", "Ꮵ", ""}, - 0xabb6: {"Ꮶ", "Ꮶ", ""}, - 0xabb7: {"Ꮷ", "Ꮷ", ""}, - 0xabb8: {"Ꮸ", "Ꮸ", ""}, - 0xabb9: {"Ꮹ", "Ꮹ", ""}, - 0xabba: {"Ꮺ", "Ꮺ", ""}, - 0xabbb: {"Ꮻ", "Ꮻ", ""}, - 0xabbc: {"Ꮼ", "Ꮼ", ""}, - 0xabbd: {"Ꮽ", "Ꮽ", ""}, - 0xabbe: {"Ꮾ", "Ꮾ", ""}, - 0xabbf: {"Ꮿ", "Ꮿ", ""}, - 0xfb00: {"", "ff", ""}, - 0xfb01: {"", "fi", ""}, - 0xfb02: {"", "fl", ""}, - 0xfb03: {"", "ffi", ""}, - 0xfb04: {"", "ffl", ""}, - 0xfb05: {"", "st", ""}, - 0xfb06: {"", "st", ""}, - 0xfb13: {"", "մն", ""}, - 0xfb14: {"", "մե", ""}, - 0xfb15: {"", "մի", ""}, - 0xfb16: {"", "վն", ""}, - 0xfb17: {"", "մխ", ""}, - } - - breakProp = []struct{ lo, hi rune }{ - {0x0, 0x26}, - {0x28, 0x2d}, - {0x2f, 0x2f}, - {0x3b, 0x40}, - {0x5b, 0x5e}, - {0x60, 0x60}, - {0x7b, 0xa9}, - {0xab, 0xac}, - {0xae, 0xb4}, - {0xb6, 0xb6}, - {0xb8, 0xb9}, - {0xbb, 0xbf}, - {0xd7, 0xd7}, - {0xf7, 0xf7}, - {0x2d8, 0x2dd}, - {0x2e5, 0x2eb}, - {0x375, 0x375}, - {0x378, 0x379}, - {0x37e, 0x37e}, - {0x380, 0x385}, - {0x38b, 0x38b}, - {0x38d, 0x38d}, - {0x3a2, 0x3a2}, - {0x3f6, 0x3f6}, - {0x482, 0x482}, - {0x530, 0x530}, - {0x557, 0x558}, - {0x55a, 0x560}, - {0x588, 0x590}, - {0x5be, 0x5be}, - {0x5c0, 0x5c0}, - {0x5c3, 0x5c3}, - {0x5c6, 0x5c6}, - {0x5c8, 0x5cf}, - {0x5eb, 0x5ef}, - {0x5f5, 0x5ff}, - {0x606, 0x60f}, - {0x61b, 0x61b}, - {0x61d, 0x61f}, - {0x66a, 0x66a}, - {0x66c, 0x66d}, - {0x6d4, 0x6d4}, - {0x6de, 0x6de}, - {0x6e9, 0x6e9}, - {0x6fd, 0x6fe}, - {0x700, 0x70e}, - {0x74b, 0x74c}, - {0x7b2, 0x7bf}, - {0x7f6, 0x7f9}, - {0x7fb, 0x7ff}, - {0x82e, 0x83f}, - {0x85c, 0x85f}, - {0x86b, 0x89f}, - {0x8b5, 0x8b5}, - {0x8be, 0x8d3}, - {0x964, 0x965}, - {0x970, 0x970}, - {0x984, 0x984}, - {0x98d, 0x98e}, - {0x991, 0x992}, - {0x9a9, 0x9a9}, - {0x9b1, 0x9b1}, - {0x9b3, 0x9b5}, - {0x9ba, 0x9bb}, - {0x9c5, 0x9c6}, - {0x9c9, 0x9ca}, - {0x9cf, 0x9d6}, - {0x9d8, 0x9db}, - {0x9de, 0x9de}, - {0x9e4, 0x9e5}, - {0x9f2, 0x9fb}, - {0x9fd, 0xa00}, - {0xa04, 0xa04}, - {0xa0b, 0xa0e}, - {0xa11, 0xa12}, - {0xa29, 0xa29}, - {0xa31, 0xa31}, - {0xa34, 0xa34}, - {0xa37, 0xa37}, - {0xa3a, 0xa3b}, - {0xa3d, 0xa3d}, - {0xa43, 0xa46}, - {0xa49, 0xa4a}, - {0xa4e, 0xa50}, - {0xa52, 0xa58}, - {0xa5d, 0xa5d}, - {0xa5f, 0xa65}, - {0xa76, 0xa80}, - {0xa84, 0xa84}, - {0xa8e, 0xa8e}, - {0xa92, 0xa92}, - {0xaa9, 0xaa9}, - {0xab1, 0xab1}, - {0xab4, 0xab4}, - {0xaba, 0xabb}, - {0xac6, 0xac6}, - {0xaca, 0xaca}, - {0xace, 0xacf}, - {0xad1, 0xadf}, - {0xae4, 0xae5}, - {0xaf0, 0xaf8}, - {0xb00, 0xb00}, - {0xb04, 0xb04}, - {0xb0d, 0xb0e}, - {0xb11, 0xb12}, - {0xb29, 0xb29}, - {0xb31, 0xb31}, - {0xb34, 0xb34}, - {0xb3a, 0xb3b}, - {0xb45, 0xb46}, - {0xb49, 0xb4a}, - {0xb4e, 0xb55}, - {0xb58, 0xb5b}, - {0xb5e, 0xb5e}, - {0xb64, 0xb65}, - {0xb70, 0xb70}, - {0xb72, 0xb81}, - {0xb84, 0xb84}, - {0xb8b, 0xb8d}, - {0xb91, 0xb91}, - {0xb96, 0xb98}, - {0xb9b, 0xb9b}, - {0xb9d, 0xb9d}, - {0xba0, 0xba2}, - {0xba5, 0xba7}, - {0xbab, 0xbad}, - {0xbba, 0xbbd}, - {0xbc3, 0xbc5}, - {0xbc9, 0xbc9}, - {0xbce, 0xbcf}, - {0xbd1, 0xbd6}, - {0xbd8, 0xbe5}, - {0xbf0, 0xbff}, - {0xc04, 0xc04}, - {0xc0d, 0xc0d}, - {0xc11, 0xc11}, - {0xc29, 0xc29}, - {0xc3a, 0xc3c}, - {0xc45, 0xc45}, - {0xc49, 0xc49}, - {0xc4e, 0xc54}, - {0xc57, 0xc57}, - {0xc5b, 0xc5f}, - {0xc64, 0xc65}, - {0xc70, 0xc7f}, - {0xc84, 0xc84}, - {0xc8d, 0xc8d}, - {0xc91, 0xc91}, - {0xca9, 0xca9}, - {0xcb4, 0xcb4}, - {0xcba, 0xcbb}, - {0xcc5, 0xcc5}, - {0xcc9, 0xcc9}, - {0xcce, 0xcd4}, - {0xcd7, 0xcdd}, - {0xcdf, 0xcdf}, - {0xce4, 0xce5}, - {0xcf0, 0xcf0}, - {0xcf3, 0xcff}, - {0xd04, 0xd04}, - {0xd0d, 0xd0d}, - {0xd11, 0xd11}, - {0xd45, 0xd45}, - {0xd49, 0xd49}, - {0xd4f, 0xd53}, - {0xd58, 0xd5e}, - {0xd64, 0xd65}, - {0xd70, 0xd79}, - {0xd80, 0xd81}, - {0xd84, 0xd84}, - {0xd97, 0xd99}, - {0xdb2, 0xdb2}, - {0xdbc, 0xdbc}, - {0xdbe, 0xdbf}, - {0xdc7, 0xdc9}, - {0xdcb, 0xdce}, - {0xdd5, 0xdd5}, - {0xdd7, 0xdd7}, - {0xde0, 0xde5}, - {0xdf0, 0xdf1}, - {0xdf4, 0xe30}, - {0xe32, 0xe33}, - {0xe3b, 0xe46}, - {0xe4f, 0xe4f}, - {0xe5a, 0xeb0}, - {0xeb2, 0xeb3}, - {0xeba, 0xeba}, - {0xebd, 0xec7}, - {0xece, 0xecf}, - {0xeda, 0xeff}, - {0xf01, 0xf17}, - {0xf1a, 0xf1f}, - {0xf2a, 0xf34}, - {0xf36, 0xf36}, - {0xf38, 0xf38}, - {0xf3a, 0xf3d}, - {0xf48, 0xf48}, - {0xf6d, 0xf70}, - {0xf85, 0xf85}, - {0xf98, 0xf98}, - {0xfbd, 0xfc5}, - {0xfc7, 0x102a}, - {0x103f, 0x103f}, - {0x104a, 0x1055}, - {0x105a, 0x105d}, - {0x1061, 0x1061}, - {0x1065, 0x1066}, - {0x106e, 0x1070}, - {0x1075, 0x1081}, - {0x108e, 0x108e}, - {0x109e, 0x109f}, - {0x10c6, 0x10c6}, - {0x10c8, 0x10cc}, - {0x10ce, 0x10cf}, - {0x10fb, 0x10fb}, - {0x1249, 0x1249}, - {0x124e, 0x124f}, - {0x1257, 0x1257}, - {0x1259, 0x1259}, - {0x125e, 0x125f}, - {0x1289, 0x1289}, - {0x128e, 0x128f}, - {0x12b1, 0x12b1}, - {0x12b6, 0x12b7}, - {0x12bf, 0x12bf}, - {0x12c1, 0x12c1}, - {0x12c6, 0x12c7}, - {0x12d7, 0x12d7}, - {0x1311, 0x1311}, - {0x1316, 0x1317}, - {0x135b, 0x135c}, - {0x1360, 0x137f}, - {0x1390, 0x139f}, - {0x13f6, 0x13f7}, - {0x13fe, 0x1400}, - {0x166d, 0x166e}, - {0x1680, 0x1680}, - {0x169b, 0x169f}, - {0x16eb, 0x16ed}, - {0x16f9, 0x16ff}, - {0x170d, 0x170d}, - {0x1715, 0x171f}, - {0x1735, 0x173f}, - {0x1754, 0x175f}, - {0x176d, 0x176d}, - {0x1771, 0x1771}, - {0x1774, 0x17b3}, - {0x17d4, 0x17dc}, - {0x17de, 0x17df}, - {0x17ea, 0x180a}, - {0x180f, 0x180f}, - {0x181a, 0x181f}, - {0x1878, 0x187f}, - {0x18ab, 0x18af}, - {0x18f6, 0x18ff}, - {0x191f, 0x191f}, - {0x192c, 0x192f}, - {0x193c, 0x1945}, - {0x1950, 0x19cf}, - {0x19da, 0x19ff}, - {0x1a1c, 0x1a54}, - {0x1a5f, 0x1a5f}, - {0x1a7d, 0x1a7e}, - {0x1a8a, 0x1a8f}, - {0x1a9a, 0x1aaf}, - {0x1abf, 0x1aff}, - {0x1b4c, 0x1b4f}, - {0x1b5a, 0x1b6a}, - {0x1b74, 0x1b7f}, - {0x1bf4, 0x1bff}, - {0x1c38, 0x1c3f}, - {0x1c4a, 0x1c4c}, - {0x1c7e, 0x1c7f}, - {0x1c89, 0x1ccf}, - {0x1cd3, 0x1cd3}, - {0x1cfa, 0x1cff}, - {0x1dfa, 0x1dfa}, - {0x1f16, 0x1f17}, - {0x1f1e, 0x1f1f}, - {0x1f46, 0x1f47}, - {0x1f4e, 0x1f4f}, - {0x1f58, 0x1f58}, - {0x1f5a, 0x1f5a}, - {0x1f5c, 0x1f5c}, - {0x1f5e, 0x1f5e}, - {0x1f7e, 0x1f7f}, - {0x1fb5, 0x1fb5}, - {0x1fbd, 0x1fbd}, - {0x1fbf, 0x1fc1}, - {0x1fc5, 0x1fc5}, - {0x1fcd, 0x1fcf}, - {0x1fd4, 0x1fd5}, - {0x1fdc, 0x1fdf}, - {0x1fed, 0x1ff1}, - {0x1ff5, 0x1ff5}, - {0x1ffd, 0x200b}, - {0x2010, 0x2017}, - {0x201a, 0x2023}, - {0x2025, 0x2026}, - {0x2028, 0x2029}, - {0x2030, 0x203e}, - {0x2041, 0x2053}, - {0x2055, 0x205f}, - {0x2065, 0x2065}, - {0x2070, 0x2070}, - {0x2072, 0x207e}, - {0x2080, 0x208f}, - {0x209d, 0x20cf}, - {0x20f1, 0x2101}, - {0x2103, 0x2106}, - {0x2108, 0x2109}, - {0x2114, 0x2114}, - {0x2116, 0x2118}, - {0x211e, 0x2123}, - {0x2125, 0x2125}, - {0x2127, 0x2127}, - {0x2129, 0x2129}, - {0x212e, 0x212e}, - {0x213a, 0x213b}, - {0x2140, 0x2144}, - {0x214a, 0x214d}, - {0x214f, 0x215f}, - {0x2189, 0x24b5}, - {0x24ea, 0x2bff}, - {0x2c2f, 0x2c2f}, - {0x2c5f, 0x2c5f}, - {0x2ce5, 0x2cea}, - {0x2cf4, 0x2cff}, - {0x2d26, 0x2d26}, - {0x2d28, 0x2d2c}, - {0x2d2e, 0x2d2f}, - {0x2d68, 0x2d6e}, - {0x2d70, 0x2d7e}, - {0x2d97, 0x2d9f}, - {0x2da7, 0x2da7}, - {0x2daf, 0x2daf}, - {0x2db7, 0x2db7}, - {0x2dbf, 0x2dbf}, - {0x2dc7, 0x2dc7}, - {0x2dcf, 0x2dcf}, - {0x2dd7, 0x2dd7}, - {0x2ddf, 0x2ddf}, - {0x2e00, 0x2e2e}, - {0x2e30, 0x3004}, - {0x3006, 0x3029}, - {0x3030, 0x303a}, - {0x303d, 0x3098}, - {0x309b, 0x3104}, - {0x312f, 0x3130}, - {0x318f, 0x319f}, - {0x31bb, 0x9fff}, - {0xa48d, 0xa4cf}, - {0xa4fe, 0xa4ff}, - {0xa60d, 0xa60f}, - {0xa62c, 0xa63f}, - {0xa673, 0xa673}, - {0xa67e, 0xa67e}, - {0xa6f2, 0xa716}, - {0xa7af, 0xa7af}, - {0xa7b8, 0xa7f6}, - {0xa828, 0xa83f}, - {0xa874, 0xa87f}, - {0xa8c6, 0xa8cf}, - {0xa8da, 0xa8df}, - {0xa8f8, 0xa8fa}, - {0xa8fc, 0xa8fc}, - {0xa8fe, 0xa8ff}, - {0xa92e, 0xa92f}, - {0xa954, 0xa95f}, - {0xa97d, 0xa97f}, - {0xa9c1, 0xa9ce}, - {0xa9da, 0xa9e4}, - {0xa9e6, 0xa9ef}, - {0xa9fa, 0xa9ff}, - {0xaa37, 0xaa3f}, - {0xaa4e, 0xaa4f}, - {0xaa5a, 0xaa7a}, - {0xaa7e, 0xaaaf}, - {0xaab1, 0xaab1}, - {0xaab5, 0xaab6}, - {0xaab9, 0xaabd}, - {0xaac0, 0xaac0}, - {0xaac2, 0xaadf}, - {0xaaf0, 0xaaf1}, - {0xaaf7, 0xab00}, - {0xab07, 0xab08}, - {0xab0f, 0xab10}, - {0xab17, 0xab1f}, - {0xab27, 0xab27}, - {0xab2f, 0xab2f}, - {0xab66, 0xab6f}, - {0xabeb, 0xabeb}, - {0xabee, 0xabef}, - {0xabfa, 0xabff}, - {0xd7a4, 0xd7af}, - {0xd7c7, 0xd7ca}, - {0xd7fc, 0xfaff}, - {0xfb07, 0xfb12}, - {0xfb18, 0xfb1c}, - {0xfb29, 0xfb29}, - {0xfb37, 0xfb37}, - {0xfb3d, 0xfb3d}, - {0xfb3f, 0xfb3f}, - {0xfb42, 0xfb42}, - {0xfb45, 0xfb45}, - {0xfbb2, 0xfbd2}, - {0xfd3e, 0xfd4f}, - {0xfd90, 0xfd91}, - {0xfdc8, 0xfdef}, - {0xfdfc, 0xfdff}, - {0xfe10, 0xfe12}, - {0xfe14, 0xfe1f}, - {0xfe30, 0xfe32}, - {0xfe35, 0xfe4c}, - {0xfe50, 0xfe51}, - {0xfe53, 0xfe54}, - {0xfe56, 0xfe6f}, - {0xfe75, 0xfe75}, - {0xfefd, 0xfefe}, - {0xff00, 0xff06}, - {0xff08, 0xff0d}, - {0xff0f, 0xff19}, - {0xff1b, 0xff20}, - {0xff3b, 0xff3e}, - {0xff40, 0xff40}, - {0xff5b, 0xff9d}, - {0xffbf, 0xffc1}, - {0xffc8, 0xffc9}, - {0xffd0, 0xffd1}, - {0xffd8, 0xffd9}, - {0xffdd, 0xfff8}, - {0xfffc, 0xffff}, - {0x1000c, 0x1000c}, - {0x10027, 0x10027}, - {0x1003b, 0x1003b}, - {0x1003e, 0x1003e}, - {0x1004e, 0x1004f}, - {0x1005e, 0x1007f}, - {0x100fb, 0x1013f}, - {0x10175, 0x101fc}, - {0x101fe, 0x1027f}, - {0x1029d, 0x1029f}, - {0x102d1, 0x102df}, - {0x102e1, 0x102ff}, - {0x10320, 0x1032c}, - {0x1034b, 0x1034f}, - {0x1037b, 0x1037f}, - {0x1039e, 0x1039f}, - {0x103c4, 0x103c7}, - {0x103d0, 0x103d0}, - {0x103d6, 0x103ff}, - {0x1049e, 0x1049f}, - {0x104aa, 0x104af}, - {0x104d4, 0x104d7}, - {0x104fc, 0x104ff}, - {0x10528, 0x1052f}, - {0x10564, 0x105ff}, - {0x10737, 0x1073f}, - {0x10756, 0x1075f}, - {0x10768, 0x107ff}, - {0x10806, 0x10807}, - {0x10809, 0x10809}, - {0x10836, 0x10836}, - {0x10839, 0x1083b}, - {0x1083d, 0x1083e}, - {0x10856, 0x1085f}, - {0x10877, 0x1087f}, - {0x1089f, 0x108df}, - {0x108f3, 0x108f3}, - {0x108f6, 0x108ff}, - {0x10916, 0x1091f}, - {0x1093a, 0x1097f}, - {0x109b8, 0x109bd}, - {0x109c0, 0x109ff}, - {0x10a04, 0x10a04}, - {0x10a07, 0x10a0b}, - {0x10a14, 0x10a14}, - {0x10a18, 0x10a18}, - {0x10a34, 0x10a37}, - {0x10a3b, 0x10a3e}, - {0x10a40, 0x10a5f}, - {0x10a7d, 0x10a7f}, - {0x10a9d, 0x10abf}, - {0x10ac8, 0x10ac8}, - {0x10ae7, 0x10aff}, - {0x10b36, 0x10b3f}, - {0x10b56, 0x10b5f}, - {0x10b73, 0x10b7f}, - {0x10b92, 0x10bff}, - {0x10c49, 0x10c7f}, - {0x10cb3, 0x10cbf}, - {0x10cf3, 0x10fff}, - {0x11047, 0x11065}, - {0x11070, 0x1107e}, - {0x110bb, 0x110bc}, - {0x110be, 0x110cf}, - {0x110e9, 0x110ef}, - {0x110fa, 0x110ff}, - {0x11135, 0x11135}, - {0x11140, 0x1114f}, - {0x11174, 0x11175}, - {0x11177, 0x1117f}, - {0x111c5, 0x111c9}, - {0x111cd, 0x111cf}, - {0x111db, 0x111db}, - {0x111dd, 0x111ff}, - {0x11212, 0x11212}, - {0x11238, 0x1123d}, - {0x1123f, 0x1127f}, - {0x11287, 0x11287}, - {0x11289, 0x11289}, - {0x1128e, 0x1128e}, - {0x1129e, 0x1129e}, - {0x112a9, 0x112af}, - {0x112eb, 0x112ef}, - {0x112fa, 0x112ff}, - {0x11304, 0x11304}, - {0x1130d, 0x1130e}, - {0x11311, 0x11312}, - {0x11329, 0x11329}, - {0x11331, 0x11331}, - {0x11334, 0x11334}, - {0x1133a, 0x1133b}, - {0x11345, 0x11346}, - {0x11349, 0x1134a}, - {0x1134e, 0x1134f}, - {0x11351, 0x11356}, - {0x11358, 0x1135c}, - {0x11364, 0x11365}, - {0x1136d, 0x1136f}, - {0x11375, 0x113ff}, - {0x1144b, 0x1144f}, - {0x1145a, 0x1147f}, - {0x114c6, 0x114c6}, - {0x114c8, 0x114cf}, - {0x114da, 0x1157f}, - {0x115b6, 0x115b7}, - {0x115c1, 0x115d7}, - {0x115de, 0x115ff}, - {0x11641, 0x11643}, - {0x11645, 0x1164f}, - {0x1165a, 0x1167f}, - {0x116b8, 0x116bf}, - {0x116ca, 0x1171c}, - {0x1172c, 0x1172f}, - {0x1173a, 0x1189f}, - {0x118ea, 0x118fe}, - {0x11900, 0x119ff}, - {0x11a3f, 0x11a46}, - {0x11a48, 0x11a4f}, - {0x11a84, 0x11a85}, - {0x11a9a, 0x11abf}, - {0x11af9, 0x11bff}, - {0x11c09, 0x11c09}, - {0x11c37, 0x11c37}, - {0x11c41, 0x11c4f}, - {0x11c5a, 0x11c71}, - {0x11c90, 0x11c91}, - {0x11ca8, 0x11ca8}, - {0x11cb7, 0x11cff}, - {0x11d07, 0x11d07}, - {0x11d0a, 0x11d0a}, - {0x11d37, 0x11d39}, - {0x11d3b, 0x11d3b}, - {0x11d3e, 0x11d3e}, - {0x11d48, 0x11d4f}, - {0x11d5a, 0x11fff}, - {0x1239a, 0x123ff}, - {0x1246f, 0x1247f}, - {0x12544, 0x12fff}, - {0x1342f, 0x143ff}, - {0x14647, 0x167ff}, - {0x16a39, 0x16a3f}, - {0x16a5f, 0x16a5f}, - {0x16a6a, 0x16acf}, - {0x16aee, 0x16aef}, - {0x16af5, 0x16aff}, - {0x16b37, 0x16b3f}, - {0x16b44, 0x16b4f}, - {0x16b5a, 0x16b62}, - {0x16b78, 0x16b7c}, - {0x16b90, 0x16eff}, - {0x16f45, 0x16f4f}, - {0x16f7f, 0x16f8e}, - {0x16fa0, 0x16fdf}, - {0x16fe2, 0x1bbff}, - {0x1bc6b, 0x1bc6f}, - {0x1bc7d, 0x1bc7f}, - {0x1bc89, 0x1bc8f}, - {0x1bc9a, 0x1bc9c}, - {0x1bc9f, 0x1bc9f}, - {0x1bca4, 0x1d164}, - {0x1d16a, 0x1d16c}, - {0x1d183, 0x1d184}, - {0x1d18c, 0x1d1a9}, - {0x1d1ae, 0x1d241}, - {0x1d245, 0x1d3ff}, - {0x1d455, 0x1d455}, - {0x1d49d, 0x1d49d}, - {0x1d4a0, 0x1d4a1}, - {0x1d4a3, 0x1d4a4}, - {0x1d4a7, 0x1d4a8}, - {0x1d4ad, 0x1d4ad}, - {0x1d4ba, 0x1d4ba}, - {0x1d4bc, 0x1d4bc}, - {0x1d4c4, 0x1d4c4}, - {0x1d506, 0x1d506}, - {0x1d50b, 0x1d50c}, - {0x1d515, 0x1d515}, - {0x1d51d, 0x1d51d}, - {0x1d53a, 0x1d53a}, - {0x1d53f, 0x1d53f}, - {0x1d545, 0x1d545}, - {0x1d547, 0x1d549}, - {0x1d551, 0x1d551}, - {0x1d6a6, 0x1d6a7}, - {0x1d6c1, 0x1d6c1}, - {0x1d6db, 0x1d6db}, - {0x1d6fb, 0x1d6fb}, - {0x1d715, 0x1d715}, - {0x1d735, 0x1d735}, - {0x1d74f, 0x1d74f}, - {0x1d76f, 0x1d76f}, - {0x1d789, 0x1d789}, - {0x1d7a9, 0x1d7a9}, - {0x1d7c3, 0x1d7c3}, - {0x1d7cc, 0x1d7cd}, - {0x1d800, 0x1d9ff}, - {0x1da37, 0x1da3a}, - {0x1da6d, 0x1da74}, - {0x1da76, 0x1da83}, - {0x1da85, 0x1da9a}, - {0x1daa0, 0x1daa0}, - {0x1dab0, 0x1dfff}, - {0x1e007, 0x1e007}, - {0x1e019, 0x1e01a}, - {0x1e022, 0x1e022}, - {0x1e025, 0x1e025}, - {0x1e02b, 0x1e7ff}, - {0x1e8c5, 0x1e8cf}, - {0x1e8d7, 0x1e8ff}, - {0x1e94b, 0x1e94f}, - {0x1e95a, 0x1edff}, - {0x1ee04, 0x1ee04}, - {0x1ee20, 0x1ee20}, - {0x1ee23, 0x1ee23}, - {0x1ee25, 0x1ee26}, - {0x1ee28, 0x1ee28}, - {0x1ee33, 0x1ee33}, - {0x1ee38, 0x1ee38}, - {0x1ee3a, 0x1ee3a}, - {0x1ee3c, 0x1ee41}, - {0x1ee43, 0x1ee46}, - {0x1ee48, 0x1ee48}, - {0x1ee4a, 0x1ee4a}, - {0x1ee4c, 0x1ee4c}, - {0x1ee50, 0x1ee50}, - {0x1ee53, 0x1ee53}, - {0x1ee55, 0x1ee56}, - {0x1ee58, 0x1ee58}, - {0x1ee5a, 0x1ee5a}, - {0x1ee5c, 0x1ee5c}, - {0x1ee5e, 0x1ee5e}, - {0x1ee60, 0x1ee60}, - {0x1ee63, 0x1ee63}, - {0x1ee65, 0x1ee66}, - {0x1ee6b, 0x1ee6b}, - {0x1ee73, 0x1ee73}, - {0x1ee78, 0x1ee78}, - {0x1ee7d, 0x1ee7d}, - {0x1ee7f, 0x1ee7f}, - {0x1ee8a, 0x1ee8a}, - {0x1ee9c, 0x1eea0}, - {0x1eea4, 0x1eea4}, - {0x1eeaa, 0x1eeaa}, - {0x1eebc, 0x1f12f}, - {0x1f14a, 0x1f14f}, - {0x1f16a, 0x1f16f}, - {0x1f18a, 0x1ffff}, - } - - breakTest = []string{ - "AA", - "ÄA", - "Aa\u2060", - "Äa\u2060", - "Aa|:", - "Äa|:", - "Aa|'", - "Äa|'", - "Aa|'\u2060", - "Äa|'\u2060", - "Aa|,", - "Äa|,", - "a\u2060A", - "a\u2060̈A", - "a\u2060a\u2060", - "a\u2060̈a\u2060", - "a\u2060a|:", - "a\u2060̈a|:", - "a\u2060a|'", - "a\u2060̈a|'", - "a\u2060a|'\u2060", - "a\u2060̈a|'\u2060", - "a\u2060a|,", - "a\u2060̈a|,", - "a:A", - "a:̈A", - "a:a\u2060", - "a:̈a\u2060", - "a:a|:", - "a:̈a|:", - "a:a|'", - "a:̈a|'", - "a:a|'\u2060", - "a:̈a|'\u2060", - "a:a|,", - "a:̈a|,", - "a'A", - "a'̈A", - "a'a\u2060", - "a'̈a\u2060", - "a'a|:", - "a'̈a|:", - "a'a|'", - "a'̈a|'", - "a'a|'\u2060", - "a'̈a|'\u2060", - "a'a|,", - "a'̈a|,", - "a'\u2060A", - "a'\u2060̈A", - "a'\u2060a\u2060", - "a'\u2060̈a\u2060", - "a'\u2060a|:", - "a'\u2060̈a|:", - "a'\u2060a|'", - "a'\u2060̈a|'", - "a'\u2060a|'\u2060", - "a'\u2060̈a|'\u2060", - "a'\u2060a|,", - "a'\u2060̈a|,", - "a|,|A", - "a|,̈|A", - "a|,|a\u2060", - "a|,̈|a\u2060", - "a|,|a|:", - "a|,̈|a|:", - "a|,|a|'", - "a|,̈|a|'", - "a|,|a|'\u2060", - "a|,̈|a|'\u2060", - "a|,|a|,", - "a|,̈|a|,", - "AAA", - "A:A", - "A|:|:|A", - "A00A", - "A__A", - "a|🇦🇧|🇨|b", - "a|🇦🇧\u200d|🇨|b", - "a|🇦\u200d🇧|🇨|b", - "a|🇦🇧|🇨🇩|b", - "ä\u200d̈b", - "1_a|:|:|a", - "1_a|:|.|a", - "1_a|:|,|a", - "1_a|.|:|a", - "1_a|.|.|a", - "1_a|.|,|a", - "1_a|,|:|a", - "1_a|,|.|a", - "1_a|,|,|a", - "a_a|:|:|1", - "a|:|:|a", - "a_1|:|:|a", - "a_a|:|:|a", - "a_a|:|.|1", - "a|:|.|a", - "a_1|:|.|a", - "a_a|:|.|a", - "a_a|:|,|1", - "a|:|,|a", - "a_1|:|,|a", - "a_a|:|,|a", - "a_a|.|:|1", - "a|.|:|a", - "a_1|.|:|a", - "a_a|.|:|a", - "a_a|.|.|1", - "a|.|.|a", - "a_1|.|.|a", - "a_a|.|.|a", - "a_a|.|,|1", - "a|.|,|a", - "a_1|.|,|a", - "a_a|.|,|a", - "a_a|,|:|1", - "a|,|:|a", - "a_1|,|:|a", - "a_a|,|:|a", - "a_a|,|.|1", - "a|,|.|a", - "a_1|,|.|a", - "a_a|,|.|a", - "a_a|,|,|1", - "a|,|,|a", - "a_1|,|,|a", - "a_a|,|,|a", - } -) diff --git a/vendor/golang.org/x/text/cases/tables9.0.0.go b/vendor/golang.org/x/text/cases/tables9.0.0.go deleted file mode 100644 index b8d87c60..00000000 --- a/vendor/golang.org/x/text/cases/tables9.0.0.go +++ /dev/null @@ -1,2213 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build !go1.10 - -package cases - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" - -var xorData string = "" + // Size: 185 bytes - "\x00\x06\x07\x00\x01?\x00\x0f\x03\x00\x0f\x12\x00\x0f\x1f\x00\x0f\x1d" + - "\x00\x01\x13\x00\x0f\x16\x00\x0f\x0b\x00\x0f3\x00\x0f7\x00\x01#\x00\x0f?" + - "\x00\x0e'\x00\x0f/\x00\x0e>\x00\x0f*\x00\x0c&\x00\x0c*\x00\x0c;\x00\x0c9" + - "\x00\x0c%\x00\x01\x08\x00\x03\x0d\x00\x03\x09\x00\x02\x06\x00\x02\x02" + - "\x00\x02\x0c\x00\x01\x00\x00\x01\x03\x00\x01\x01\x00\x01 \x00\x01\x0c" + - "\x00\x01\x10\x00\x03\x10\x00\x036 \x00\x037 \x00\x0b#\x10\x00\x0b 0\x00" + - "\x0b!\x10\x00\x0b!0\x00\x0b(\x04\x00\x03\x04\x1e\x00\x03\x0a\x00\x02:" + - "\x00\x02>\x00\x02,\x00\x02\x00\x00\x02\x10\x00\x01<\x00\x01&\x00\x01*" + - "\x00\x01.\x00\x010\x003 \x00\x01\x18\x00\x01(\x00\x01\x1e\x00\x01\x22" - -var exceptions string = "" + // Size: 1852 bytes - "\x00\x12\x10μΜ\x12\x12ssSSSs\x13\x18i̇i̇\x10\x08I\x13\x18ʼnʼN\x11\x08sS" + - "\x12\x12dždžDž\x12\x12dždžDŽ\x10\x12DŽDž\x12\x12ljljLj\x12\x12ljljLJ\x10\x12LJLj\x12\x12" + - "njnjNj\x12\x12njnjNJ\x10\x12NJNj\x13\x18ǰJ̌\x12\x12dzdzDz\x12\x12dzdzDZ\x10\x12DZDz" + - "\x13\x18ⱥⱥ\x13\x18ⱦⱦ\x10\x18Ȿ\x10\x18Ɀ\x10\x18Ɐ\x10\x18Ɑ\x10\x18Ɒ\x10" + - "\x18Ɜ\x10\x18Ɡ\x10\x18Ɥ\x10\x18Ɦ\x10\x18Ɪ\x10\x18Ɫ\x10\x18Ɬ\x10\x18Ɱ\x10" + - "\x18Ɽ\x10\x18Ʇ\x10\x18Ʝ\x10\x18Ʞ2\x10ιΙ\x160ΐΪ́\x160ΰΫ́\x12\x10σΣ" + - "\x12\x10βΒ\x12\x10θΘ\x12\x10φΦ\x12\x10πΠ\x12\x10κΚ\x12\x10ρΡ\x12\x10εΕ" + - "\x14$եւԵՒԵւ\x12\x10вВ\x12\x10дД\x12\x10оО\x12\x10сС\x12\x10тТ\x12\x10тТ" + - "\x12\x10ъЪ\x12\x10ѣѢ\x13\x18ꙋꙊ\x13\x18ẖH̱\x13\x18ẗT̈\x13\x18ẘW̊\x13" + - "\x18ẙY̊\x13\x18aʾAʾ\x13\x18ṡṠ\x12\x10ssß\x14 ὐΥ̓\x160ὒΥ̓̀\x160ὔΥ̓́" + - "\x160ὖΥ̓͂\x15+ἀιἈΙᾈ\x15+ἁιἉΙᾉ\x15+ἂιἊΙᾊ\x15+ἃιἋΙᾋ\x15+ἄιἌΙᾌ\x15+ἅιἍΙᾍ" + - "\x15+ἆιἎΙᾎ\x15+ἇιἏΙᾏ\x15\x1dἀιᾀἈΙ\x15\x1dἁιᾁἉΙ\x15\x1dἂιᾂἊΙ\x15\x1dἃιᾃἋΙ" + - "\x15\x1dἄιᾄἌΙ\x15\x1dἅιᾅἍΙ\x15\x1dἆιᾆἎΙ\x15\x1dἇιᾇἏΙ\x15+ἠιἨΙᾘ\x15+ἡιἩΙᾙ" + - "\x15+ἢιἪΙᾚ\x15+ἣιἫΙᾛ\x15+ἤιἬΙᾜ\x15+ἥιἭΙᾝ\x15+ἦιἮΙᾞ\x15+ἧιἯΙᾟ\x15\x1dἠιᾐἨ" + - "Ι\x15\x1dἡιᾑἩΙ\x15\x1dἢιᾒἪΙ\x15\x1dἣιᾓἫΙ\x15\x1dἤιᾔἬΙ\x15\x1dἥιᾕἭΙ\x15" + - "\x1dἦιᾖἮΙ\x15\x1dἧιᾗἯΙ\x15+ὠιὨΙᾨ\x15+ὡιὩΙᾩ\x15+ὢιὪΙᾪ\x15+ὣιὫΙᾫ\x15+ὤιὬΙᾬ" + - "\x15+ὥιὭΙᾭ\x15+ὦιὮΙᾮ\x15+ὧιὯΙᾯ\x15\x1dὠιᾠὨΙ\x15\x1dὡιᾡὩΙ\x15\x1dὢιᾢὪΙ" + - "\x15\x1dὣιᾣὫΙ\x15\x1dὤιᾤὬΙ\x15\x1dὥιᾥὭΙ\x15\x1dὦιᾦὮΙ\x15\x1dὧιᾧὯΙ\x15-ὰι" + - "ᾺΙᾺͅ\x14#αιΑΙᾼ\x14$άιΆΙΆͅ\x14 ᾶΑ͂\x166ᾶιΑ͂Ιᾼ͂\x14\x1cαιᾳΑΙ\x12\x10ι" + - "Ι\x15-ὴιῊΙῊͅ\x14#ηιΗΙῌ\x14$ήιΉΙΉͅ\x14 ῆΗ͂\x166ῆιΗ͂Ιῌ͂\x14\x1cηιῃΗΙ" + - "\x160ῒΪ̀\x160ΐΪ́\x14 ῖΙ͂\x160ῗΪ͂\x160ῢΫ̀\x160ΰΫ́\x14 ῤΡ" + - "̓\x14 ῦΥ͂\x160ῧΫ͂\x15-ὼιῺΙῺͅ\x14#ωιΩΙῼ\x14$ώιΏΙΏͅ\x14 ῶΩ͂\x166ῶιΩ" + - "͂Ιῼ͂\x14\x1cωιῳΩΙ\x12\x10ωω\x11\x08kk\x12\x10åå\x12\x10ɫɫ\x12\x10ɽɽ" + - "\x10\x10Ⱥ\x10\x10Ⱦ\x12\x10ɑɑ\x12\x10ɱɱ\x12\x10ɐɐ\x12\x10ɒɒ\x12\x10ȿȿ\x12" + - "\x10ɀɀ\x12\x10ɥɥ\x12\x10ɦɦ\x12\x10ɜɜ\x12\x10ɡɡ\x12\x10ɬɬ\x12\x10ɪɪ\x12" + - "\x10ʞʞ\x12\x10ʇʇ\x12\x10ʝʝ\x12\x12ffFFFf\x12\x12fiFIFi\x12\x12flFLFl\x13" + - "\x1bffiFFIFfi\x13\x1bfflFFLFfl\x12\x12stSTSt\x12\x12stSTSt\x14$մնՄՆՄն" + - "\x14$մեՄԵՄե\x14$միՄԻՄի\x14$վնՎՆՎն\x14$մխՄԽՄխ" - -// 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 *caseTrie) lookup(s []byte) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return caseValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = caseIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = caseIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = caseIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *caseTrie) lookupUnsafe(s []byte) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return caseValues[c0] - } - i := caseIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = caseIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = caseIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *caseTrie) lookupString(s string) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return caseValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = caseIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := caseIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = caseIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = caseIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *caseTrie) lookupStringUnsafe(s string) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return caseValues[c0] - } - i := caseIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = caseIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = caseIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// caseTrie. Total size: 11742 bytes (11.47 KiB). Checksum: 147a11466b427436. -type caseTrie struct{} - -func newCaseTrie(i int) *caseTrie { - return &caseTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *caseTrie) lookupValue(n uint32, b byte) uint16 { - switch { - case n < 18: - return uint16(caseValues[n<<6+uint32(b)]) - default: - n -= 18 - return uint16(sparse.lookup(n, b)) - } -} - -// caseValues: 20 blocks, 1280 entries, 2560 bytes -// The third block is the zero block. -var caseValues = [1280]uint16{ - // Block 0x0, offset 0x0 - 0x27: 0x0054, - 0x2e: 0x0054, - 0x30: 0x0010, 0x31: 0x0010, 0x32: 0x0010, 0x33: 0x0010, 0x34: 0x0010, 0x35: 0x0010, - 0x36: 0x0010, 0x37: 0x0010, 0x38: 0x0010, 0x39: 0x0010, 0x3a: 0x0054, - // Block 0x1, offset 0x40 - 0x41: 0x2013, 0x42: 0x2013, 0x43: 0x2013, 0x44: 0x2013, 0x45: 0x2013, - 0x46: 0x2013, 0x47: 0x2013, 0x48: 0x2013, 0x49: 0x2013, 0x4a: 0x2013, 0x4b: 0x2013, - 0x4c: 0x2013, 0x4d: 0x2013, 0x4e: 0x2013, 0x4f: 0x2013, 0x50: 0x2013, 0x51: 0x2013, - 0x52: 0x2013, 0x53: 0x2013, 0x54: 0x2013, 0x55: 0x2013, 0x56: 0x2013, 0x57: 0x2013, - 0x58: 0x2013, 0x59: 0x2013, 0x5a: 0x2013, - 0x5e: 0x0004, 0x5f: 0x0010, 0x60: 0x0004, 0x61: 0x2012, 0x62: 0x2012, 0x63: 0x2012, - 0x64: 0x2012, 0x65: 0x2012, 0x66: 0x2012, 0x67: 0x2012, 0x68: 0x2012, 0x69: 0x2012, - 0x6a: 0x2012, 0x6b: 0x2012, 0x6c: 0x2012, 0x6d: 0x2012, 0x6e: 0x2012, 0x6f: 0x2012, - 0x70: 0x2012, 0x71: 0x2012, 0x72: 0x2012, 0x73: 0x2012, 0x74: 0x2012, 0x75: 0x2012, - 0x76: 0x2012, 0x77: 0x2012, 0x78: 0x2012, 0x79: 0x2012, 0x7a: 0x2012, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc0: 0x0852, 0xc1: 0x0b53, 0xc2: 0x0113, 0xc3: 0x0112, 0xc4: 0x0113, 0xc5: 0x0112, - 0xc6: 0x0b53, 0xc7: 0x0f13, 0xc8: 0x0f12, 0xc9: 0x0e53, 0xca: 0x1153, 0xcb: 0x0713, - 0xcc: 0x0712, 0xcd: 0x0012, 0xce: 0x1453, 0xcf: 0x1753, 0xd0: 0x1a53, 0xd1: 0x0313, - 0xd2: 0x0312, 0xd3: 0x1d53, 0xd4: 0x2053, 0xd5: 0x2352, 0xd6: 0x2653, 0xd7: 0x2653, - 0xd8: 0x0113, 0xd9: 0x0112, 0xda: 0x2952, 0xdb: 0x0012, 0xdc: 0x1d53, 0xdd: 0x2c53, - 0xde: 0x2f52, 0xdf: 0x3253, 0xe0: 0x0113, 0xe1: 0x0112, 0xe2: 0x0113, 0xe3: 0x0112, - 0xe4: 0x0113, 0xe5: 0x0112, 0xe6: 0x3553, 0xe7: 0x0f13, 0xe8: 0x0f12, 0xe9: 0x3853, - 0xea: 0x0012, 0xeb: 0x0012, 0xec: 0x0113, 0xed: 0x0112, 0xee: 0x3553, 0xef: 0x1f13, - 0xf0: 0x1f12, 0xf1: 0x3b53, 0xf2: 0x3e53, 0xf3: 0x0713, 0xf4: 0x0712, 0xf5: 0x0313, - 0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010, - 0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452, - // Block 0x4, offset 0x100 - 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x04cb, 0x105: 0x05c9, - 0x106: 0x06ca, 0x107: 0x078b, 0x108: 0x0889, 0x109: 0x098a, 0x10a: 0x0a4b, 0x10b: 0x0b49, - 0x10c: 0x0c4a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313, - 0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13, - 0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452, - 0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112, - 0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112, - 0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112, - 0x130: 0x0d0a, 0x131: 0x0e0b, 0x132: 0x0f09, 0x133: 0x100a, 0x134: 0x0113, 0x135: 0x0112, - 0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112, - 0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112, - // Block 0x5, offset 0x140 - 0x140: 0x136a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53, - 0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112, - 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x140a, 0x151: 0x14aa, - 0x152: 0x154a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152, - 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x15ea, 0x15d: 0x0012, - 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x168a, 0x162: 0x0012, 0x163: 0x2052, - 0x164: 0x0012, 0x165: 0x172a, 0x166: 0x17ca, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652, - 0x16a: 0x186a, 0x16b: 0x190a, 0x16c: 0x19aa, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52, - 0x170: 0x0012, 0x171: 0x1a4a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252, - 0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012, - 0x17c: 0x0012, 0x17d: 0x1aea, 0x17e: 0x0012, 0x17f: 0x0012, - // Block 0x6, offset 0x180 - 0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012, - 0x186: 0x0012, 0x187: 0x1b8a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52, - 0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012, - 0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012, - 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x1c2a, - 0x19e: 0x1cca, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012, - 0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012, - 0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012, - 0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015, - 0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014, - 0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x1d6d, - 0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024, - 0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024, - 0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024, - 0x1d8: 0x0034, 0x1d9: 0x0034, 0x1da: 0x0034, 0x1db: 0x0024, 0x1dc: 0x0034, 0x1dd: 0x0034, - 0x1de: 0x0034, 0x1df: 0x0034, 0x1e0: 0x0034, 0x1e1: 0x0034, 0x1e2: 0x0034, 0x1e3: 0x0024, - 0x1e4: 0x0024, 0x1e5: 0x0024, 0x1e6: 0x0024, 0x1e7: 0x0024, 0x1e8: 0x0024, 0x1e9: 0x0024, - 0x1ea: 0x0024, 0x1eb: 0x0024, 0x1ec: 0x0024, 0x1ed: 0x0024, 0x1ee: 0x0024, 0x1ef: 0x0024, - 0x1f0: 0x0113, 0x1f1: 0x0112, 0x1f2: 0x0113, 0x1f3: 0x0112, 0x1f4: 0x0014, 0x1f5: 0x0004, - 0x1f6: 0x0113, 0x1f7: 0x0112, 0x1fa: 0x0015, 0x1fb: 0x4d52, - 0x1fc: 0x5052, 0x1fd: 0x5052, 0x1ff: 0x5353, - // Block 0x8, offset 0x200 - 0x204: 0x0004, 0x205: 0x0004, - 0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513, - 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x1e2a, 0x211: 0x2013, - 0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013, - 0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013, - 0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53, - 0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53, - 0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512, - 0x230: 0x1fea, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012, - 0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012, - 0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012, - // Block 0x9, offset 0x240 - 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x21aa, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52, - 0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52, - 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x226a, 0x251: 0x232a, - 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x23ea, 0x256: 0x24aa, 0x257: 0x1812, - 0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112, - 0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112, - 0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112, - 0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112, - 0x270: 0x256a, 0x271: 0x262a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x26ea, - 0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112, - 0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053, - // Block 0xa, offset 0x280 - 0x280: 0x0812, 0x281: 0x0812, 0x282: 0x0812, 0x283: 0x0812, 0x284: 0x0812, 0x285: 0x0812, - 0x288: 0x0813, 0x289: 0x0813, 0x28a: 0x0813, 0x28b: 0x0813, - 0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x372a, 0x291: 0x0812, - 0x292: 0x386a, 0x293: 0x0812, 0x294: 0x3a2a, 0x295: 0x0812, 0x296: 0x3bea, 0x297: 0x0812, - 0x299: 0x0813, 0x29b: 0x0813, 0x29d: 0x0813, - 0x29f: 0x0813, 0x2a0: 0x0812, 0x2a1: 0x0812, 0x2a2: 0x0812, 0x2a3: 0x0812, - 0x2a4: 0x0812, 0x2a5: 0x0812, 0x2a6: 0x0812, 0x2a7: 0x0812, 0x2a8: 0x0813, 0x2a9: 0x0813, - 0x2aa: 0x0813, 0x2ab: 0x0813, 0x2ac: 0x0813, 0x2ad: 0x0813, 0x2ae: 0x0813, 0x2af: 0x0813, - 0x2b0: 0x8b52, 0x2b1: 0x8b52, 0x2b2: 0x8e52, 0x2b3: 0x8e52, 0x2b4: 0x9152, 0x2b5: 0x9152, - 0x2b6: 0x9452, 0x2b7: 0x9452, 0x2b8: 0x9752, 0x2b9: 0x9752, 0x2ba: 0x9a52, 0x2bb: 0x9a52, - 0x2bc: 0x4d52, 0x2bd: 0x4d52, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x3daa, 0x2c1: 0x3f8a, 0x2c2: 0x416a, 0x2c3: 0x434a, 0x2c4: 0x452a, 0x2c5: 0x470a, - 0x2c6: 0x48ea, 0x2c7: 0x4aca, 0x2c8: 0x4ca9, 0x2c9: 0x4e89, 0x2ca: 0x5069, 0x2cb: 0x5249, - 0x2cc: 0x5429, 0x2cd: 0x5609, 0x2ce: 0x57e9, 0x2cf: 0x59c9, 0x2d0: 0x5baa, 0x2d1: 0x5d8a, - 0x2d2: 0x5f6a, 0x2d3: 0x614a, 0x2d4: 0x632a, 0x2d5: 0x650a, 0x2d6: 0x66ea, 0x2d7: 0x68ca, - 0x2d8: 0x6aa9, 0x2d9: 0x6c89, 0x2da: 0x6e69, 0x2db: 0x7049, 0x2dc: 0x7229, 0x2dd: 0x7409, - 0x2de: 0x75e9, 0x2df: 0x77c9, 0x2e0: 0x79aa, 0x2e1: 0x7b8a, 0x2e2: 0x7d6a, 0x2e3: 0x7f4a, - 0x2e4: 0x812a, 0x2e5: 0x830a, 0x2e6: 0x84ea, 0x2e7: 0x86ca, 0x2e8: 0x88a9, 0x2e9: 0x8a89, - 0x2ea: 0x8c69, 0x2eb: 0x8e49, 0x2ec: 0x9029, 0x2ed: 0x9209, 0x2ee: 0x93e9, 0x2ef: 0x95c9, - 0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x97aa, 0x2f3: 0x99ca, 0x2f4: 0x9b6a, - 0x2f6: 0x9d2a, 0x2f7: 0x9e6a, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53, - 0x2fc: 0xa0e9, 0x2fd: 0x0004, 0x2fe: 0xa28a, 0x2ff: 0x0004, - // Block 0xc, offset 0x300 - 0x300: 0x0004, 0x301: 0x0004, 0x302: 0xa34a, 0x303: 0xa56a, 0x304: 0xa70a, - 0x306: 0xa8ca, 0x307: 0xaa0a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153, - 0x30c: 0xac89, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812, - 0x312: 0xae2a, 0x313: 0xafea, 0x316: 0xb1aa, 0x317: 0xb2ea, - 0x318: 0x0813, 0x319: 0x0813, 0x31a: 0x9453, 0x31b: 0x9453, 0x31d: 0x0004, - 0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0xb4aa, 0x323: 0xb66a, - 0x324: 0xb82a, 0x325: 0x0912, 0x326: 0xb96a, 0x327: 0xbaaa, 0x328: 0x0813, 0x329: 0x0813, - 0x32a: 0x9a53, 0x32b: 0x9a53, 0x32c: 0x0913, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004, - 0x332: 0xbc6a, 0x333: 0xbe8a, 0x334: 0xc02a, - 0x336: 0xc1ea, 0x337: 0xc32a, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53, - 0x33c: 0xc5a9, 0x33d: 0x0004, 0x33e: 0x0004, - // Block 0xd, offset 0x340 - 0x342: 0x0013, - 0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013, - 0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013, - 0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013, - 0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013, - 0x364: 0x0013, 0x366: 0xc74b, 0x368: 0x0013, - 0x36a: 0xc80b, 0x36b: 0xc88b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012, - 0x370: 0x0013, 0x371: 0x0013, 0x372: 0x9d53, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010, - 0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012, - 0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013, - // Block 0xe, offset 0x380 - 0x380: 0x1a13, 0x381: 0x1a13, 0x382: 0x1e13, 0x383: 0x1e13, 0x384: 0x1a13, 0x385: 0x1a13, - 0x386: 0x2613, 0x387: 0x2613, 0x388: 0x2a13, 0x389: 0x2a13, 0x38a: 0x2e13, 0x38b: 0x2e13, - 0x38c: 0x2a13, 0x38d: 0x2a13, 0x38e: 0x2613, 0x38f: 0x2613, 0x390: 0xa052, 0x391: 0xa052, - 0x392: 0xa352, 0x393: 0xa352, 0x394: 0xa652, 0x395: 0xa652, 0x396: 0xa352, 0x397: 0xa352, - 0x398: 0xa052, 0x399: 0xa052, 0x39a: 0x1a12, 0x39b: 0x1a12, 0x39c: 0x1e12, 0x39d: 0x1e12, - 0x39e: 0x1a12, 0x39f: 0x1a12, 0x3a0: 0x2612, 0x3a1: 0x2612, 0x3a2: 0x2a12, 0x3a3: 0x2a12, - 0x3a4: 0x2e12, 0x3a5: 0x2e12, 0x3a6: 0x2a12, 0x3a7: 0x2a12, 0x3a8: 0x2612, 0x3a9: 0x2612, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x6552, 0x3c1: 0x6552, 0x3c2: 0x6552, 0x3c3: 0x6552, 0x3c4: 0x6552, 0x3c5: 0x6552, - 0x3c6: 0x6552, 0x3c7: 0x6552, 0x3c8: 0x6552, 0x3c9: 0x6552, 0x3ca: 0x6552, 0x3cb: 0x6552, - 0x3cc: 0x6552, 0x3cd: 0x6552, 0x3ce: 0x6552, 0x3cf: 0x6552, 0x3d0: 0xa952, 0x3d1: 0xa952, - 0x3d2: 0xa952, 0x3d3: 0xa952, 0x3d4: 0xa952, 0x3d5: 0xa952, 0x3d6: 0xa952, 0x3d7: 0xa952, - 0x3d8: 0xa952, 0x3d9: 0xa952, 0x3da: 0xa952, 0x3db: 0xa952, 0x3dc: 0xa952, 0x3dd: 0xa952, - 0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0xc94b, 0x3e3: 0x8853, - 0x3e4: 0xca0b, 0x3e5: 0xcaca, 0x3e6: 0xcb4a, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313, - 0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0xcbcb, 0x3ee: 0xcc8b, 0x3ef: 0xcd4b, - 0x3f0: 0xce0b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313, - 0x3f6: 0x0312, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012, - 0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0xcecb, 0x3ff: 0xcf8b, - // Block 0x10, offset 0x400 - 0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112, - 0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0004, 0x40a: 0x0004, 0x40b: 0x0713, - 0x40c: 0x0712, 0x40d: 0xd04b, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112, - 0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112, - 0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112, - 0x41e: 0x0113, 0x41f: 0x0112, 0x420: 0x0113, 0x421: 0x0112, 0x422: 0x0113, 0x423: 0x0112, - 0x424: 0x0113, 0x425: 0x0112, 0x426: 0x0113, 0x427: 0x0112, 0x428: 0x0113, 0x429: 0x0112, - 0x42a: 0xd10b, 0x42b: 0xd1cb, 0x42c: 0xd28b, 0x42d: 0xd34b, 0x42e: 0xd40b, - 0x430: 0xd4cb, 0x431: 0xd58b, 0x432: 0xd64b, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112, - 0x436: 0x0113, 0x437: 0x0112, - // Block 0x11, offset 0x440 - 0x440: 0xd70a, 0x441: 0xd80a, 0x442: 0xd90a, 0x443: 0xda0a, 0x444: 0xdb6a, 0x445: 0xdcca, - 0x446: 0xddca, - 0x453: 0xdeca, 0x454: 0xe08a, 0x455: 0xe24a, 0x456: 0xe40a, 0x457: 0xe5ca, - 0x45d: 0x0010, - 0x45e: 0x0034, 0x45f: 0x0010, 0x460: 0x0010, 0x461: 0x0010, 0x462: 0x0010, 0x463: 0x0010, - 0x464: 0x0010, 0x465: 0x0010, 0x466: 0x0010, 0x467: 0x0010, 0x468: 0x0010, - 0x46a: 0x0010, 0x46b: 0x0010, 0x46c: 0x0010, 0x46d: 0x0010, 0x46e: 0x0010, 0x46f: 0x0010, - 0x470: 0x0010, 0x471: 0x0010, 0x472: 0x0010, 0x473: 0x0010, 0x474: 0x0010, 0x475: 0x0010, - 0x476: 0x0010, 0x478: 0x0010, 0x479: 0x0010, 0x47a: 0x0010, 0x47b: 0x0010, - 0x47c: 0x0010, 0x47e: 0x0010, - // Block 0x12, offset 0x480 - 0x480: 0x2213, 0x481: 0x2213, 0x482: 0x2613, 0x483: 0x2613, 0x484: 0x2213, 0x485: 0x2213, - 0x486: 0x2e13, 0x487: 0x2e13, 0x488: 0x2213, 0x489: 0x2213, 0x48a: 0x2613, 0x48b: 0x2613, - 0x48c: 0x2213, 0x48d: 0x2213, 0x48e: 0x3e13, 0x48f: 0x3e13, 0x490: 0x2213, 0x491: 0x2213, - 0x492: 0x2613, 0x493: 0x2613, 0x494: 0x2213, 0x495: 0x2213, 0x496: 0x2e13, 0x497: 0x2e13, - 0x498: 0x2213, 0x499: 0x2213, 0x49a: 0x2613, 0x49b: 0x2613, 0x49c: 0x2213, 0x49d: 0x2213, - 0x49e: 0xb553, 0x49f: 0xb553, 0x4a0: 0xb853, 0x4a1: 0xb853, 0x4a2: 0x2212, 0x4a3: 0x2212, - 0x4a4: 0x2612, 0x4a5: 0x2612, 0x4a6: 0x2212, 0x4a7: 0x2212, 0x4a8: 0x2e12, 0x4a9: 0x2e12, - 0x4aa: 0x2212, 0x4ab: 0x2212, 0x4ac: 0x2612, 0x4ad: 0x2612, 0x4ae: 0x2212, 0x4af: 0x2212, - 0x4b0: 0x3e12, 0x4b1: 0x3e12, 0x4b2: 0x2212, 0x4b3: 0x2212, 0x4b4: 0x2612, 0x4b5: 0x2612, - 0x4b6: 0x2212, 0x4b7: 0x2212, 0x4b8: 0x2e12, 0x4b9: 0x2e12, 0x4ba: 0x2212, 0x4bb: 0x2212, - 0x4bc: 0x2612, 0x4bd: 0x2612, 0x4be: 0x2212, 0x4bf: 0x2212, - // Block 0x13, offset 0x4c0 - 0x4c2: 0x0010, - 0x4c7: 0x0010, 0x4c9: 0x0010, 0x4cb: 0x0010, - 0x4cd: 0x0010, 0x4ce: 0x0010, 0x4cf: 0x0010, 0x4d1: 0x0010, - 0x4d2: 0x0010, 0x4d4: 0x0010, 0x4d7: 0x0010, - 0x4d9: 0x0010, 0x4db: 0x0010, 0x4dd: 0x0010, - 0x4df: 0x0010, 0x4e1: 0x0010, 0x4e2: 0x0010, - 0x4e4: 0x0010, 0x4e7: 0x0010, 0x4e8: 0x0010, 0x4e9: 0x0010, - 0x4ea: 0x0010, 0x4ec: 0x0010, 0x4ed: 0x0010, 0x4ee: 0x0010, 0x4ef: 0x0010, - 0x4f0: 0x0010, 0x4f1: 0x0010, 0x4f2: 0x0010, 0x4f4: 0x0010, 0x4f5: 0x0010, - 0x4f6: 0x0010, 0x4f7: 0x0010, 0x4f9: 0x0010, 0x4fa: 0x0010, 0x4fb: 0x0010, - 0x4fc: 0x0010, 0x4fe: 0x0010, -} - -// caseIndex: 25 blocks, 1600 entries, 3200 bytes -// Block 0 is the zero block. -var caseIndex = [1600]uint16{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x12, 0xc3: 0x13, 0xc4: 0x14, 0xc5: 0x15, 0xc6: 0x01, 0xc7: 0x02, - 0xc8: 0x16, 0xc9: 0x03, 0xca: 0x04, 0xcb: 0x17, 0xcc: 0x18, 0xcd: 0x05, 0xce: 0x06, 0xcf: 0x07, - 0xd0: 0x19, 0xd1: 0x1a, 0xd2: 0x1b, 0xd3: 0x1c, 0xd4: 0x1d, 0xd5: 0x1e, 0xd6: 0x1f, 0xd7: 0x20, - 0xd8: 0x21, 0xd9: 0x22, 0xda: 0x23, 0xdb: 0x24, 0xdc: 0x25, 0xdd: 0x26, 0xde: 0x27, 0xdf: 0x28, - 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, - 0xea: 0x06, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x08, 0xef: 0x09, - 0xf0: 0x14, 0xf3: 0x16, - // Block 0x4, offset 0x100 - 0x120: 0x29, 0x121: 0x2a, 0x122: 0x2b, 0x123: 0x2c, 0x124: 0x2d, 0x125: 0x2e, 0x126: 0x2f, 0x127: 0x30, - 0x128: 0x31, 0x129: 0x32, 0x12a: 0x33, 0x12b: 0x34, 0x12c: 0x35, 0x12d: 0x36, 0x12e: 0x37, 0x12f: 0x38, - 0x130: 0x39, 0x131: 0x3a, 0x132: 0x3b, 0x133: 0x3c, 0x134: 0x3d, 0x135: 0x3e, 0x136: 0x3f, 0x137: 0x40, - 0x138: 0x41, 0x139: 0x42, 0x13a: 0x43, 0x13b: 0x44, 0x13c: 0x45, 0x13d: 0x46, 0x13e: 0x47, 0x13f: 0x48, - // Block 0x5, offset 0x140 - 0x140: 0x49, 0x141: 0x4a, 0x142: 0x4b, 0x143: 0x4c, 0x144: 0x23, 0x145: 0x23, 0x146: 0x23, 0x147: 0x23, - 0x148: 0x23, 0x149: 0x4d, 0x14a: 0x4e, 0x14b: 0x4f, 0x14c: 0x50, 0x14d: 0x51, 0x14e: 0x52, 0x14f: 0x53, - 0x150: 0x54, 0x151: 0x23, 0x152: 0x23, 0x153: 0x23, 0x154: 0x23, 0x155: 0x23, 0x156: 0x23, 0x157: 0x23, - 0x158: 0x23, 0x159: 0x55, 0x15a: 0x56, 0x15b: 0x57, 0x15c: 0x58, 0x15d: 0x59, 0x15e: 0x5a, 0x15f: 0x5b, - 0x160: 0x5c, 0x161: 0x5d, 0x162: 0x5e, 0x163: 0x5f, 0x164: 0x60, 0x165: 0x61, 0x167: 0x62, - 0x168: 0x63, 0x169: 0x64, 0x16a: 0x65, 0x16c: 0x66, 0x16d: 0x67, 0x16e: 0x68, 0x16f: 0x69, - 0x170: 0x6a, 0x171: 0x6b, 0x172: 0x6c, 0x173: 0x6d, 0x174: 0x6e, 0x175: 0x6f, 0x176: 0x70, 0x177: 0x71, - 0x178: 0x72, 0x179: 0x72, 0x17a: 0x73, 0x17b: 0x72, 0x17c: 0x74, 0x17d: 0x08, 0x17e: 0x09, 0x17f: 0x0a, - // Block 0x6, offset 0x180 - 0x180: 0x75, 0x181: 0x76, 0x182: 0x77, 0x183: 0x78, 0x184: 0x0b, 0x185: 0x79, 0x186: 0x7a, - 0x192: 0x7b, 0x193: 0x0c, - 0x1b0: 0x7c, 0x1b1: 0x0d, 0x1b2: 0x72, 0x1b3: 0x7d, 0x1b4: 0x7e, 0x1b5: 0x7f, 0x1b6: 0x80, 0x1b7: 0x81, - 0x1b8: 0x82, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x83, 0x1c2: 0x84, 0x1c3: 0x85, 0x1c4: 0x86, 0x1c5: 0x23, 0x1c6: 0x87, - // Block 0x8, offset 0x200 - 0x200: 0x88, 0x201: 0x23, 0x202: 0x23, 0x203: 0x23, 0x204: 0x23, 0x205: 0x23, 0x206: 0x23, 0x207: 0x23, - 0x208: 0x23, 0x209: 0x23, 0x20a: 0x23, 0x20b: 0x23, 0x20c: 0x23, 0x20d: 0x23, 0x20e: 0x23, 0x20f: 0x23, - 0x210: 0x23, 0x211: 0x23, 0x212: 0x89, 0x213: 0x8a, 0x214: 0x23, 0x215: 0x23, 0x216: 0x23, 0x217: 0x23, - 0x218: 0x8b, 0x219: 0x8c, 0x21a: 0x8d, 0x21b: 0x8e, 0x21c: 0x8f, 0x21d: 0x90, 0x21e: 0x0e, 0x21f: 0x91, - 0x220: 0x92, 0x221: 0x93, 0x222: 0x23, 0x223: 0x94, 0x224: 0x95, 0x225: 0x96, 0x226: 0x97, 0x227: 0x98, - 0x228: 0x99, 0x229: 0x9a, 0x22a: 0x9b, 0x22b: 0x9c, 0x22c: 0x9d, 0x22d: 0x9e, 0x22e: 0x9f, 0x22f: 0xa0, - 0x230: 0x23, 0x231: 0x23, 0x232: 0x23, 0x233: 0x23, 0x234: 0x23, 0x235: 0x23, 0x236: 0x23, 0x237: 0x23, - 0x238: 0x23, 0x239: 0x23, 0x23a: 0x23, 0x23b: 0x23, 0x23c: 0x23, 0x23d: 0x23, 0x23e: 0x23, 0x23f: 0x23, - // Block 0x9, offset 0x240 - 0x240: 0x23, 0x241: 0x23, 0x242: 0x23, 0x243: 0x23, 0x244: 0x23, 0x245: 0x23, 0x246: 0x23, 0x247: 0x23, - 0x248: 0x23, 0x249: 0x23, 0x24a: 0x23, 0x24b: 0x23, 0x24c: 0x23, 0x24d: 0x23, 0x24e: 0x23, 0x24f: 0x23, - 0x250: 0x23, 0x251: 0x23, 0x252: 0x23, 0x253: 0x23, 0x254: 0x23, 0x255: 0x23, 0x256: 0x23, 0x257: 0x23, - 0x258: 0x23, 0x259: 0x23, 0x25a: 0x23, 0x25b: 0x23, 0x25c: 0x23, 0x25d: 0x23, 0x25e: 0x23, 0x25f: 0x23, - 0x260: 0x23, 0x261: 0x23, 0x262: 0x23, 0x263: 0x23, 0x264: 0x23, 0x265: 0x23, 0x266: 0x23, 0x267: 0x23, - 0x268: 0x23, 0x269: 0x23, 0x26a: 0x23, 0x26b: 0x23, 0x26c: 0x23, 0x26d: 0x23, 0x26e: 0x23, 0x26f: 0x23, - 0x270: 0x23, 0x271: 0x23, 0x272: 0x23, 0x273: 0x23, 0x274: 0x23, 0x275: 0x23, 0x276: 0x23, 0x277: 0x23, - 0x278: 0x23, 0x279: 0x23, 0x27a: 0x23, 0x27b: 0x23, 0x27c: 0x23, 0x27d: 0x23, 0x27e: 0x23, 0x27f: 0x23, - // Block 0xa, offset 0x280 - 0x280: 0x23, 0x281: 0x23, 0x282: 0x23, 0x283: 0x23, 0x284: 0x23, 0x285: 0x23, 0x286: 0x23, 0x287: 0x23, - 0x288: 0x23, 0x289: 0x23, 0x28a: 0x23, 0x28b: 0x23, 0x28c: 0x23, 0x28d: 0x23, 0x28e: 0x23, 0x28f: 0x23, - 0x290: 0x23, 0x291: 0x23, 0x292: 0x23, 0x293: 0x23, 0x294: 0x23, 0x295: 0x23, 0x296: 0x23, 0x297: 0x23, - 0x298: 0x23, 0x299: 0x23, 0x29a: 0x23, 0x29b: 0x23, 0x29c: 0x23, 0x29d: 0x23, 0x29e: 0xa1, 0x29f: 0xa2, - // Block 0xb, offset 0x2c0 - 0x2ec: 0x0f, 0x2ed: 0xa3, 0x2ee: 0xa4, 0x2ef: 0xa5, - 0x2f0: 0x23, 0x2f1: 0x23, 0x2f2: 0x23, 0x2f3: 0x23, 0x2f4: 0xa6, 0x2f5: 0xa7, 0x2f6: 0xa8, 0x2f7: 0xa9, - 0x2f8: 0xaa, 0x2f9: 0xab, 0x2fa: 0x23, 0x2fb: 0xac, 0x2fc: 0xad, 0x2fd: 0xae, 0x2fe: 0xaf, 0x2ff: 0xb0, - // Block 0xc, offset 0x300 - 0x300: 0xb1, 0x301: 0xb2, 0x302: 0x23, 0x303: 0xb3, 0x305: 0xb4, 0x307: 0xb5, - 0x30a: 0xb6, 0x30b: 0xb7, 0x30c: 0xb8, 0x30d: 0xb9, 0x30e: 0xba, 0x30f: 0xbb, - 0x310: 0xbc, 0x311: 0xbd, 0x312: 0xbe, 0x313: 0xbf, 0x314: 0xc0, 0x315: 0xc1, - 0x318: 0x23, 0x319: 0x23, 0x31a: 0x23, 0x31b: 0x23, 0x31c: 0xc2, 0x31d: 0xc3, - 0x320: 0xc4, 0x321: 0xc5, 0x322: 0xc6, 0x323: 0xc7, 0x324: 0xc8, 0x326: 0xc9, - 0x328: 0xca, 0x329: 0xcb, 0x32a: 0xcc, 0x32b: 0xcd, 0x32c: 0x5f, 0x32d: 0xce, 0x32e: 0xcf, - 0x330: 0x23, 0x331: 0xd0, 0x332: 0xd1, 0x333: 0xd2, - // Block 0xd, offset 0x340 - 0x340: 0xd3, 0x341: 0xd4, 0x342: 0xd5, 0x343: 0xd6, 0x344: 0xd7, 0x345: 0xd8, 0x346: 0xd9, 0x347: 0xda, - 0x348: 0xdb, 0x34a: 0xdc, 0x34b: 0xdd, 0x34c: 0xde, 0x34d: 0xdf, - 0x350: 0xe0, 0x351: 0xe1, 0x352: 0xe2, 0x353: 0xe3, 0x356: 0xe4, 0x357: 0xe5, - 0x358: 0xe6, 0x359: 0xe7, 0x35a: 0xe8, 0x35b: 0xe9, 0x35c: 0xea, - 0x362: 0xeb, 0x363: 0xec, - 0x36b: 0xed, - 0x370: 0xee, 0x371: 0xef, 0x372: 0xf0, - // Block 0xe, offset 0x380 - 0x380: 0x23, 0x381: 0x23, 0x382: 0x23, 0x383: 0x23, 0x384: 0x23, 0x385: 0x23, 0x386: 0x23, 0x387: 0x23, - 0x388: 0x23, 0x389: 0x23, 0x38a: 0x23, 0x38b: 0x23, 0x38c: 0x23, 0x38d: 0x23, 0x38e: 0xf1, - 0x390: 0x23, 0x391: 0xf2, 0x392: 0x23, 0x393: 0x23, 0x394: 0x23, 0x395: 0xf3, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x23, 0x3c1: 0x23, 0x3c2: 0x23, 0x3c3: 0x23, 0x3c4: 0x23, 0x3c5: 0x23, 0x3c6: 0x23, 0x3c7: 0x23, - 0x3c8: 0x23, 0x3c9: 0x23, 0x3ca: 0x23, 0x3cb: 0x23, 0x3cc: 0x23, 0x3cd: 0x23, 0x3ce: 0x23, 0x3cf: 0x23, - 0x3d0: 0xf2, - // Block 0x10, offset 0x400 - 0x410: 0x23, 0x411: 0x23, 0x412: 0x23, 0x413: 0x23, 0x414: 0x23, 0x415: 0x23, 0x416: 0x23, 0x417: 0x23, - 0x418: 0x23, 0x419: 0xf4, - // Block 0x11, offset 0x440 - 0x460: 0x23, 0x461: 0x23, 0x462: 0x23, 0x463: 0x23, 0x464: 0x23, 0x465: 0x23, 0x466: 0x23, 0x467: 0x23, - 0x468: 0xed, 0x469: 0xf5, 0x46b: 0xf6, 0x46c: 0xf7, 0x46d: 0xf8, 0x46e: 0xf9, - 0x47c: 0x23, 0x47d: 0xfa, 0x47e: 0xfb, 0x47f: 0xfc, - // Block 0x12, offset 0x480 - 0x4b0: 0x23, 0x4b1: 0xfd, 0x4b2: 0xfe, - // Block 0x13, offset 0x4c0 - 0x4c5: 0xff, 0x4c6: 0x100, - 0x4c9: 0x101, - 0x4d0: 0x102, 0x4d1: 0x103, 0x4d2: 0x104, 0x4d3: 0x105, 0x4d4: 0x106, 0x4d5: 0x107, 0x4d6: 0x108, 0x4d7: 0x109, - 0x4d8: 0x10a, 0x4d9: 0x10b, 0x4da: 0x10c, 0x4db: 0x10d, 0x4dc: 0x10e, 0x4dd: 0x10f, 0x4de: 0x110, 0x4df: 0x111, - 0x4e8: 0x112, 0x4e9: 0x113, 0x4ea: 0x114, - // Block 0x14, offset 0x500 - 0x500: 0x115, - 0x520: 0x23, 0x521: 0x23, 0x522: 0x23, 0x523: 0x116, 0x524: 0x10, 0x525: 0x117, - 0x538: 0x118, 0x539: 0x11, 0x53a: 0x119, - // Block 0x15, offset 0x540 - 0x544: 0x11a, 0x545: 0x11b, 0x546: 0x11c, - 0x54f: 0x11d, - // Block 0x16, offset 0x580 - 0x590: 0x0a, 0x591: 0x0b, 0x592: 0x0c, 0x593: 0x0d, 0x594: 0x0e, 0x596: 0x0f, - 0x59b: 0x10, 0x59d: 0x11, 0x59e: 0x12, 0x59f: 0x13, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x11e, 0x5c1: 0x11f, 0x5c4: 0x11f, 0x5c5: 0x11f, 0x5c6: 0x11f, 0x5c7: 0x120, - // Block 0x18, offset 0x600 - 0x620: 0x15, -} - -// sparseOffsets: 272 entries, 544 bytes -var sparseOffsets = []uint16{0x0, 0x9, 0xf, 0x18, 0x24, 0x2e, 0x3a, 0x3d, 0x41, 0x44, 0x48, 0x52, 0x54, 0x59, 0x69, 0x70, 0x75, 0x83, 0x84, 0x92, 0xa1, 0xab, 0xae, 0xb4, 0xbc, 0xbe, 0xc0, 0xce, 0xd4, 0xe2, 0xed, 0xf8, 0x103, 0x10f, 0x119, 0x124, 0x12f, 0x13b, 0x147, 0x14f, 0x157, 0x161, 0x16c, 0x178, 0x17e, 0x189, 0x18e, 0x196, 0x199, 0x19e, 0x1a2, 0x1a6, 0x1ad, 0x1b6, 0x1be, 0x1bf, 0x1c8, 0x1cf, 0x1d7, 0x1dd, 0x1e3, 0x1e8, 0x1ec, 0x1ef, 0x1f1, 0x1f4, 0x1f9, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x207, 0x20c, 0x210, 0x219, 0x21c, 0x21f, 0x225, 0x226, 0x231, 0x232, 0x233, 0x238, 0x245, 0x24d, 0x255, 0x25e, 0x267, 0x270, 0x275, 0x278, 0x281, 0x28e, 0x290, 0x297, 0x299, 0x2a4, 0x2a5, 0x2b0, 0x2b8, 0x2c0, 0x2c6, 0x2c7, 0x2d5, 0x2da, 0x2dd, 0x2e2, 0x2e6, 0x2ec, 0x2f1, 0x2f4, 0x2f9, 0x2fe, 0x2ff, 0x305, 0x307, 0x308, 0x30a, 0x30c, 0x30f, 0x310, 0x312, 0x315, 0x31b, 0x31f, 0x321, 0x327, 0x32e, 0x332, 0x33b, 0x33c, 0x344, 0x348, 0x34d, 0x355, 0x35b, 0x361, 0x36b, 0x370, 0x379, 0x37f, 0x386, 0x38a, 0x392, 0x394, 0x396, 0x399, 0x39b, 0x39d, 0x39e, 0x39f, 0x3a1, 0x3a3, 0x3a9, 0x3ae, 0x3b0, 0x3b6, 0x3b9, 0x3bb, 0x3c1, 0x3c6, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3cd, 0x3cf, 0x3d1, 0x3d4, 0x3d6, 0x3d9, 0x3e1, 0x3e4, 0x3e8, 0x3f0, 0x3f2, 0x3f3, 0x3f4, 0x3f6, 0x3fc, 0x3fe, 0x3ff, 0x401, 0x403, 0x405, 0x412, 0x413, 0x414, 0x418, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x422, 0x426, 0x42c, 0x42e, 0x435, 0x438, 0x43c, 0x442, 0x44b, 0x451, 0x457, 0x461, 0x46b, 0x46d, 0x474, 0x47a, 0x480, 0x486, 0x489, 0x48f, 0x492, 0x49a, 0x49b, 0x4a2, 0x4a3, 0x4a6, 0x4a7, 0x4ad, 0x4b0, 0x4b8, 0x4b9, 0x4ba, 0x4bb, 0x4bc, 0x4be, 0x4c0, 0x4c2, 0x4c6, 0x4c7, 0x4c9, 0x4ca, 0x4cb, 0x4cd, 0x4d2, 0x4d7, 0x4db, 0x4dc, 0x4df, 0x4e3, 0x4ee, 0x4f2, 0x4fa, 0x4ff, 0x503, 0x506, 0x50a, 0x50d, 0x510, 0x515, 0x519, 0x51d, 0x521, 0x525, 0x527, 0x529, 0x52c, 0x531, 0x533, 0x538, 0x541, 0x546, 0x547, 0x54a, 0x54b, 0x54c, 0x54e, 0x54f, 0x550} - -// sparseValues: 1360 entries, 5440 bytes -var sparseValues = [1360]valueRange{ - // Block 0x0, offset 0x0 - {value: 0x0004, lo: 0xa8, hi: 0xa8}, - {value: 0x0012, lo: 0xaa, hi: 0xaa}, - {value: 0x0014, lo: 0xad, hi: 0xad}, - {value: 0x0004, lo: 0xaf, hi: 0xaf}, - {value: 0x0004, lo: 0xb4, hi: 0xb4}, - {value: 0x002a, lo: 0xb5, hi: 0xb5}, - {value: 0x0054, lo: 0xb7, hi: 0xb7}, - {value: 0x0004, lo: 0xb8, hi: 0xb8}, - {value: 0x0012, lo: 0xba, hi: 0xba}, - // Block 0x1, offset 0x9 - {value: 0x2013, lo: 0x80, hi: 0x96}, - {value: 0x2013, lo: 0x98, hi: 0x9e}, - {value: 0x00ea, lo: 0x9f, hi: 0x9f}, - {value: 0x2012, lo: 0xa0, hi: 0xb6}, - {value: 0x2012, lo: 0xb8, hi: 0xbe}, - {value: 0x0252, lo: 0xbf, hi: 0xbf}, - // Block 0x2, offset 0xf - {value: 0x0117, lo: 0x80, hi: 0xaf}, - {value: 0x01eb, lo: 0xb0, hi: 0xb0}, - {value: 0x02ea, lo: 0xb1, hi: 0xb1}, - {value: 0x0117, lo: 0xb2, hi: 0xb7}, - {value: 0x0012, lo: 0xb8, hi: 0xb8}, - {value: 0x0316, lo: 0xb9, hi: 0xba}, - {value: 0x0716, lo: 0xbb, hi: 0xbc}, - {value: 0x0316, lo: 0xbd, hi: 0xbe}, - {value: 0x0553, lo: 0xbf, hi: 0xbf}, - // Block 0x3, offset 0x18 - {value: 0x0552, lo: 0x80, hi: 0x80}, - {value: 0x0316, lo: 0x81, hi: 0x82}, - {value: 0x0716, lo: 0x83, hi: 0x84}, - {value: 0x0316, lo: 0x85, hi: 0x86}, - {value: 0x0f16, lo: 0x87, hi: 0x88}, - {value: 0x034a, lo: 0x89, hi: 0x89}, - {value: 0x0117, lo: 0x8a, hi: 0xb7}, - {value: 0x0253, lo: 0xb8, hi: 0xb8}, - {value: 0x0316, lo: 0xb9, hi: 0xba}, - {value: 0x0716, lo: 0xbb, hi: 0xbc}, - {value: 0x0316, lo: 0xbd, hi: 0xbe}, - {value: 0x044a, lo: 0xbf, hi: 0xbf}, - // Block 0x4, offset 0x24 - {value: 0x0117, lo: 0x80, hi: 0x9f}, - {value: 0x2f53, lo: 0xa0, hi: 0xa0}, - {value: 0x0012, lo: 0xa1, hi: 0xa1}, - {value: 0x0117, lo: 0xa2, hi: 0xb3}, - {value: 0x0012, lo: 0xb4, hi: 0xb9}, - {value: 0x10cb, lo: 0xba, hi: 0xba}, - {value: 0x0716, lo: 0xbb, hi: 0xbc}, - {value: 0x2953, lo: 0xbd, hi: 0xbd}, - {value: 0x11cb, lo: 0xbe, hi: 0xbe}, - {value: 0x12ca, lo: 0xbf, hi: 0xbf}, - // Block 0x5, offset 0x2e - {value: 0x0015, lo: 0x80, hi: 0x81}, - {value: 0x0004, lo: 0x82, hi: 0x85}, - {value: 0x0014, lo: 0x86, hi: 0x91}, - {value: 0x0004, lo: 0x92, hi: 0x96}, - {value: 0x0054, lo: 0x97, hi: 0x97}, - {value: 0x0004, lo: 0x98, hi: 0x9f}, - {value: 0x0015, lo: 0xa0, hi: 0xa4}, - {value: 0x0004, lo: 0xa5, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xac}, - {value: 0x0004, lo: 0xad, hi: 0xad}, - {value: 0x0014, lo: 0xae, hi: 0xae}, - {value: 0x0004, lo: 0xaf, hi: 0xbf}, - // Block 0x6, offset 0x3a - {value: 0x0024, lo: 0x80, hi: 0x94}, - {value: 0x0034, lo: 0x95, hi: 0xbc}, - {value: 0x0024, lo: 0xbd, hi: 0xbf}, - // Block 0x7, offset 0x3d - {value: 0x6553, lo: 0x80, hi: 0x8f}, - {value: 0x2013, lo: 0x90, hi: 0x9f}, - {value: 0x5f53, lo: 0xa0, hi: 0xaf}, - {value: 0x2012, lo: 0xb0, hi: 0xbf}, - // Block 0x8, offset 0x41 - {value: 0x5f52, lo: 0x80, hi: 0x8f}, - {value: 0x6552, lo: 0x90, hi: 0x9f}, - {value: 0x0117, lo: 0xa0, hi: 0xbf}, - // Block 0x9, offset 0x44 - {value: 0x0117, lo: 0x80, hi: 0x81}, - {value: 0x0024, lo: 0x83, hi: 0x87}, - {value: 0x0014, lo: 0x88, hi: 0x89}, - {value: 0x0117, lo: 0x8a, hi: 0xbf}, - // Block 0xa, offset 0x48 - {value: 0x0f13, lo: 0x80, hi: 0x80}, - {value: 0x0316, lo: 0x81, hi: 0x82}, - {value: 0x0716, lo: 0x83, hi: 0x84}, - {value: 0x0316, lo: 0x85, hi: 0x86}, - {value: 0x0f16, lo: 0x87, hi: 0x88}, - {value: 0x0316, lo: 0x89, hi: 0x8a}, - {value: 0x0716, lo: 0x8b, hi: 0x8c}, - {value: 0x0316, lo: 0x8d, hi: 0x8e}, - {value: 0x0f12, lo: 0x8f, hi: 0x8f}, - {value: 0x0117, lo: 0x90, hi: 0xbf}, - // Block 0xb, offset 0x52 - {value: 0x0117, lo: 0x80, hi: 0xaf}, - {value: 0x6553, lo: 0xb1, hi: 0xbf}, - // Block 0xc, offset 0x54 - {value: 0x3013, lo: 0x80, hi: 0x8f}, - {value: 0x6853, lo: 0x90, hi: 0x96}, - {value: 0x0014, lo: 0x99, hi: 0x99}, - {value: 0x6552, lo: 0xa1, hi: 0xaf}, - {value: 0x3012, lo: 0xb0, hi: 0xbf}, - // Block 0xd, offset 0x59 - {value: 0x6852, lo: 0x80, hi: 0x86}, - {value: 0x27aa, lo: 0x87, hi: 0x87}, - {value: 0x0034, lo: 0x91, hi: 0x91}, - {value: 0x0024, lo: 0x92, hi: 0x95}, - {value: 0x0034, lo: 0x96, hi: 0x96}, - {value: 0x0024, lo: 0x97, hi: 0x99}, - {value: 0x0034, lo: 0x9a, hi: 0x9b}, - {value: 0x0024, lo: 0x9c, hi: 0xa1}, - {value: 0x0034, lo: 0xa2, hi: 0xa7}, - {value: 0x0024, lo: 0xa8, hi: 0xa9}, - {value: 0x0034, lo: 0xaa, hi: 0xaa}, - {value: 0x0024, lo: 0xab, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xae}, - {value: 0x0024, lo: 0xaf, hi: 0xaf}, - {value: 0x0034, lo: 0xb0, hi: 0xbd}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xe, offset 0x69 - {value: 0x0034, lo: 0x81, hi: 0x82}, - {value: 0x0024, lo: 0x84, hi: 0x84}, - {value: 0x0034, lo: 0x85, hi: 0x85}, - {value: 0x0034, lo: 0x87, hi: 0x87}, - {value: 0x0010, lo: 0x90, hi: 0xaa}, - {value: 0x0010, lo: 0xb0, hi: 0xb3}, - {value: 0x0054, lo: 0xb4, hi: 0xb4}, - // Block 0xf, offset 0x70 - {value: 0x0014, lo: 0x80, hi: 0x85}, - {value: 0x0024, lo: 0x90, hi: 0x97}, - {value: 0x0034, lo: 0x98, hi: 0x9a}, - {value: 0x0014, lo: 0x9c, hi: 0x9c}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x10, offset 0x75 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x8a}, - {value: 0x0034, lo: 0x8b, hi: 0x92}, - {value: 0x0024, lo: 0x93, hi: 0x94}, - {value: 0x0034, lo: 0x95, hi: 0x96}, - {value: 0x0024, lo: 0x97, hi: 0x9b}, - {value: 0x0034, lo: 0x9c, hi: 0x9c}, - {value: 0x0024, lo: 0x9d, hi: 0x9e}, - {value: 0x0034, lo: 0x9f, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - {value: 0x0010, lo: 0xab, hi: 0xab}, - {value: 0x0010, lo: 0xae, hi: 0xaf}, - {value: 0x0034, lo: 0xb0, hi: 0xb0}, - {value: 0x0010, lo: 0xb1, hi: 0xbf}, - // Block 0x11, offset 0x83 - {value: 0x0010, lo: 0x80, hi: 0xbf}, - // Block 0x12, offset 0x84 - {value: 0x0010, lo: 0x80, hi: 0x93}, - {value: 0x0010, lo: 0x95, hi: 0x95}, - {value: 0x0024, lo: 0x96, hi: 0x9c}, - {value: 0x0014, lo: 0x9d, hi: 0x9d}, - {value: 0x0024, lo: 0x9f, hi: 0xa2}, - {value: 0x0034, lo: 0xa3, hi: 0xa3}, - {value: 0x0024, lo: 0xa4, hi: 0xa4}, - {value: 0x0014, lo: 0xa5, hi: 0xa6}, - {value: 0x0024, lo: 0xa7, hi: 0xa8}, - {value: 0x0034, lo: 0xaa, hi: 0xaa}, - {value: 0x0024, lo: 0xab, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xbc}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x13, offset 0x92 - {value: 0x0014, lo: 0x8f, hi: 0x8f}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0034, lo: 0x91, hi: 0x91}, - {value: 0x0010, lo: 0x92, hi: 0xaf}, - {value: 0x0024, lo: 0xb0, hi: 0xb0}, - {value: 0x0034, lo: 0xb1, hi: 0xb1}, - {value: 0x0024, lo: 0xb2, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0024, lo: 0xb5, hi: 0xb6}, - {value: 0x0034, lo: 0xb7, hi: 0xb9}, - {value: 0x0024, lo: 0xba, hi: 0xba}, - {value: 0x0034, lo: 0xbb, hi: 0xbc}, - {value: 0x0024, lo: 0xbd, hi: 0xbd}, - {value: 0x0034, lo: 0xbe, hi: 0xbe}, - {value: 0x0024, lo: 0xbf, hi: 0xbf}, - // Block 0x14, offset 0xa1 - {value: 0x0024, lo: 0x80, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x82}, - {value: 0x0024, lo: 0x83, hi: 0x83}, - {value: 0x0034, lo: 0x84, hi: 0x84}, - {value: 0x0024, lo: 0x85, hi: 0x85}, - {value: 0x0034, lo: 0x86, hi: 0x86}, - {value: 0x0024, lo: 0x87, hi: 0x87}, - {value: 0x0034, lo: 0x88, hi: 0x88}, - {value: 0x0024, lo: 0x89, hi: 0x8a}, - {value: 0x0010, lo: 0x8d, hi: 0xbf}, - // Block 0x15, offset 0xab - {value: 0x0010, lo: 0x80, hi: 0xa5}, - {value: 0x0014, lo: 0xa6, hi: 0xb0}, - {value: 0x0010, lo: 0xb1, hi: 0xb1}, - // Block 0x16, offset 0xae - {value: 0x0010, lo: 0x80, hi: 0xaa}, - {value: 0x0024, lo: 0xab, hi: 0xb1}, - {value: 0x0034, lo: 0xb2, hi: 0xb2}, - {value: 0x0024, lo: 0xb3, hi: 0xb3}, - {value: 0x0014, lo: 0xb4, hi: 0xb5}, - {value: 0x0014, lo: 0xba, hi: 0xba}, - // Block 0x17, offset 0xb4 - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0024, lo: 0x96, hi: 0x99}, - {value: 0x0014, lo: 0x9a, hi: 0x9a}, - {value: 0x0024, lo: 0x9b, hi: 0xa3}, - {value: 0x0014, lo: 0xa4, hi: 0xa4}, - {value: 0x0024, lo: 0xa5, hi: 0xa7}, - {value: 0x0014, lo: 0xa8, hi: 0xa8}, - {value: 0x0024, lo: 0xa9, hi: 0xad}, - // Block 0x18, offset 0xbc - {value: 0x0010, lo: 0x80, hi: 0x98}, - {value: 0x0034, lo: 0x99, hi: 0x9b}, - // Block 0x19, offset 0xbe - {value: 0x0010, lo: 0xa0, hi: 0xb4}, - {value: 0x0010, lo: 0xb6, hi: 0xbd}, - // Block 0x1a, offset 0xc0 - {value: 0x0024, lo: 0x94, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa2}, - {value: 0x0034, lo: 0xa3, hi: 0xa3}, - {value: 0x0024, lo: 0xa4, hi: 0xa5}, - {value: 0x0034, lo: 0xa6, hi: 0xa6}, - {value: 0x0024, lo: 0xa7, hi: 0xa8}, - {value: 0x0034, lo: 0xa9, hi: 0xa9}, - {value: 0x0024, lo: 0xaa, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xb2}, - {value: 0x0024, lo: 0xb3, hi: 0xb5}, - {value: 0x0034, lo: 0xb6, hi: 0xb6}, - {value: 0x0024, lo: 0xb7, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xba}, - {value: 0x0024, lo: 0xbb, hi: 0xbf}, - // Block 0x1b, offset 0xce - {value: 0x0014, lo: 0x80, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0xb9}, - {value: 0x0014, lo: 0xba, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x1c, offset 0xd4 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x88}, - {value: 0x0010, lo: 0x89, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0024, lo: 0x91, hi: 0x91}, - {value: 0x0034, lo: 0x92, hi: 0x92}, - {value: 0x0024, lo: 0x93, hi: 0x94}, - {value: 0x0014, lo: 0x95, hi: 0x97}, - {value: 0x0010, lo: 0x98, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0014, lo: 0xb1, hi: 0xb1}, - {value: 0x0010, lo: 0xb2, hi: 0xbf}, - // Block 0x1d, offset 0xe2 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8f, hi: 0x90}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb2}, - {value: 0x0010, lo: 0xb6, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x1e, offset 0xed - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x84}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x8e, hi: 0x8e}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0010, lo: 0x9c, hi: 0x9d}, - {value: 0x0010, lo: 0x9f, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xb1}, - // Block 0x1f, offset 0xf8 - {value: 0x0014, lo: 0x81, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8a}, - {value: 0x0010, lo: 0x8f, hi: 0x90}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb6}, - {value: 0x0010, lo: 0xb8, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x20, offset 0x103 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x82}, - {value: 0x0014, lo: 0x87, hi: 0x88}, - {value: 0x0014, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0014, lo: 0x91, hi: 0x91}, - {value: 0x0010, lo: 0x99, hi: 0x9c}, - {value: 0x0010, lo: 0x9e, hi: 0x9e}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0014, lo: 0xb0, hi: 0xb1}, - {value: 0x0010, lo: 0xb2, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb5}, - // Block 0x21, offset 0x10f - {value: 0x0014, lo: 0x81, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8d}, - {value: 0x0010, lo: 0x8f, hi: 0x91}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x22, offset 0x119 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x85}, - {value: 0x0014, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x89, hi: 0x89}, - {value: 0x0010, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0010, lo: 0xa0, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xb9, hi: 0xb9}, - // Block 0x23, offset 0x124 - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8f, hi: 0x90}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbe}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x24, offset 0x12f - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x84}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0014, lo: 0x96, hi: 0x96}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0010, lo: 0x9c, hi: 0x9d}, - {value: 0x0010, lo: 0x9f, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xb1, hi: 0xb1}, - // Block 0x25, offset 0x13b - {value: 0x0014, lo: 0x82, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8a}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0x95}, - {value: 0x0010, lo: 0x99, hi: 0x9a}, - {value: 0x0010, lo: 0x9c, hi: 0x9c}, - {value: 0x0010, lo: 0x9e, hi: 0x9f}, - {value: 0x0010, lo: 0xa3, hi: 0xa4}, - {value: 0x0010, lo: 0xa8, hi: 0xaa}, - {value: 0x0010, lo: 0xae, hi: 0xb9}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x26, offset 0x147 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x82}, - {value: 0x0010, lo: 0x86, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - // Block 0x27, offset 0x14f - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb9}, - {value: 0x0010, lo: 0xbd, hi: 0xbd}, - {value: 0x0014, lo: 0xbe, hi: 0xbf}, - // Block 0x28, offset 0x157 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x84}, - {value: 0x0014, lo: 0x86, hi: 0x88}, - {value: 0x0014, lo: 0x8a, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0034, lo: 0x95, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0x9a}, - {value: 0x0010, lo: 0xa0, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - // Block 0x29, offset 0x161 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbe}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x2a, offset 0x16c - {value: 0x0010, lo: 0x80, hi: 0x84}, - {value: 0x0014, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x95, hi: 0x96}, - {value: 0x0010, lo: 0x9e, hi: 0x9e}, - {value: 0x0010, lo: 0xa0, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xb1, hi: 0xb2}, - // Block 0x2b, offset 0x178 - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8e, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0xba}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x2c, offset 0x17e - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x84}, - {value: 0x0010, lo: 0x86, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x8e, hi: 0x8e}, - {value: 0x0010, lo: 0x94, hi: 0x97}, - {value: 0x0010, lo: 0x9f, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa3}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xba, hi: 0xbf}, - // Block 0x2d, offset 0x189 - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x96}, - {value: 0x0010, lo: 0x9a, hi: 0xb1}, - {value: 0x0010, lo: 0xb3, hi: 0xbb}, - {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x2e, offset 0x18e - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0034, lo: 0x8a, hi: 0x8a}, - {value: 0x0010, lo: 0x8f, hi: 0x91}, - {value: 0x0014, lo: 0x92, hi: 0x94}, - {value: 0x0014, lo: 0x96, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0x9f}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - // Block 0x2f, offset 0x196 - {value: 0x0014, lo: 0xb1, hi: 0xb1}, - {value: 0x0014, lo: 0xb4, hi: 0xb7}, - {value: 0x0034, lo: 0xb8, hi: 0xba}, - // Block 0x30, offset 0x199 - {value: 0x0004, lo: 0x86, hi: 0x86}, - {value: 0x0014, lo: 0x87, hi: 0x87}, - {value: 0x0034, lo: 0x88, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8e}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x31, offset 0x19e - {value: 0x0014, lo: 0xb1, hi: 0xb1}, - {value: 0x0014, lo: 0xb4, hi: 0xb7}, - {value: 0x0034, lo: 0xb8, hi: 0xb9}, - {value: 0x0014, lo: 0xbb, hi: 0xbc}, - // Block 0x32, offset 0x1a2 - {value: 0x0004, lo: 0x86, hi: 0x86}, - {value: 0x0034, lo: 0x88, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x33, offset 0x1a6 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0034, lo: 0x98, hi: 0x99}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - {value: 0x0034, lo: 0xb5, hi: 0xb5}, - {value: 0x0034, lo: 0xb7, hi: 0xb7}, - {value: 0x0034, lo: 0xb9, hi: 0xb9}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x34, offset 0x1ad - {value: 0x0010, lo: 0x80, hi: 0x87}, - {value: 0x0010, lo: 0x89, hi: 0xac}, - {value: 0x0034, lo: 0xb1, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xba, hi: 0xbd}, - {value: 0x0014, lo: 0xbe, hi: 0xbe}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x35, offset 0x1b6 - {value: 0x0034, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0024, lo: 0x82, hi: 0x83}, - {value: 0x0034, lo: 0x84, hi: 0x84}, - {value: 0x0024, lo: 0x86, hi: 0x87}, - {value: 0x0010, lo: 0x88, hi: 0x8c}, - {value: 0x0014, lo: 0x8d, hi: 0x97}, - {value: 0x0014, lo: 0x99, hi: 0xbc}, - // Block 0x36, offset 0x1be - {value: 0x0034, lo: 0x86, hi: 0x86}, - // Block 0x37, offset 0x1bf - {value: 0x0010, lo: 0xab, hi: 0xac}, - {value: 0x0014, lo: 0xad, hi: 0xb0}, - {value: 0x0010, lo: 0xb1, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb6}, - {value: 0x0034, lo: 0xb7, hi: 0xb7}, - {value: 0x0010, lo: 0xb8, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbc}, - {value: 0x0014, lo: 0xbd, hi: 0xbe}, - // Block 0x38, offset 0x1c8 - {value: 0x0010, lo: 0x80, hi: 0x89}, - {value: 0x0010, lo: 0x96, hi: 0x97}, - {value: 0x0014, lo: 0x98, hi: 0x99}, - {value: 0x0014, lo: 0x9e, hi: 0xa0}, - {value: 0x0010, lo: 0xa2, hi: 0xa4}, - {value: 0x0010, lo: 0xa7, hi: 0xad}, - {value: 0x0014, lo: 0xb1, hi: 0xb4}, - // Block 0x39, offset 0x1cf - {value: 0x0014, lo: 0x82, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x84}, - {value: 0x0014, lo: 0x85, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x8f, hi: 0x9c}, - {value: 0x0014, lo: 0x9d, hi: 0x9d}, - {value: 0x6c53, lo: 0xa0, hi: 0xbf}, - // Block 0x3a, offset 0x1d7 - {value: 0x7053, lo: 0x80, hi: 0x85}, - {value: 0x7053, lo: 0x87, hi: 0x87}, - {value: 0x7053, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0xba}, - {value: 0x0014, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x3b, offset 0x1dd - {value: 0x0010, lo: 0x80, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0x98}, - {value: 0x0010, lo: 0x9a, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x3c, offset 0x1e3 - {value: 0x0010, lo: 0x80, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb5}, - {value: 0x0010, lo: 0xb8, hi: 0xbe}, - // Block 0x3d, offset 0x1e8 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x82, hi: 0x85}, - {value: 0x0010, lo: 0x88, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0xbf}, - // Block 0x3e, offset 0x1ec - {value: 0x0010, lo: 0x80, hi: 0x90}, - {value: 0x0010, lo: 0x92, hi: 0x95}, - {value: 0x0010, lo: 0x98, hi: 0xbf}, - // Block 0x3f, offset 0x1ef - {value: 0x0010, lo: 0x80, hi: 0x9a}, - {value: 0x0024, lo: 0x9d, hi: 0x9f}, - // Block 0x40, offset 0x1f1 - {value: 0x0010, lo: 0x80, hi: 0x8f}, - {value: 0x7453, lo: 0xa0, hi: 0xaf}, - {value: 0x7853, lo: 0xb0, hi: 0xbf}, - // Block 0x41, offset 0x1f4 - {value: 0x7c53, lo: 0x80, hi: 0x8f}, - {value: 0x8053, lo: 0x90, hi: 0x9f}, - {value: 0x7c53, lo: 0xa0, hi: 0xaf}, - {value: 0x0813, lo: 0xb0, hi: 0xb5}, - {value: 0x0892, lo: 0xb8, hi: 0xbd}, - // Block 0x42, offset 0x1f9 - {value: 0x0010, lo: 0x81, hi: 0xbf}, - // Block 0x43, offset 0x1fa - {value: 0x0010, lo: 0x80, hi: 0xac}, - {value: 0x0010, lo: 0xaf, hi: 0xbf}, - // Block 0x44, offset 0x1fc - {value: 0x0010, lo: 0x81, hi: 0x9a}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x45, offset 0x1fe - {value: 0x0010, lo: 0x80, hi: 0xaa}, - {value: 0x0010, lo: 0xae, hi: 0xb8}, - // Block 0x46, offset 0x200 - {value: 0x0010, lo: 0x80, hi: 0x8c}, - {value: 0x0010, lo: 0x8e, hi: 0x91}, - {value: 0x0014, lo: 0x92, hi: 0x93}, - {value: 0x0034, lo: 0x94, hi: 0x94}, - {value: 0x0010, lo: 0xa0, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - // Block 0x47, offset 0x207 - {value: 0x0010, lo: 0x80, hi: 0x91}, - {value: 0x0014, lo: 0x92, hi: 0x93}, - {value: 0x0010, lo: 0xa0, hi: 0xac}, - {value: 0x0010, lo: 0xae, hi: 0xb0}, - {value: 0x0014, lo: 0xb2, hi: 0xb3}, - // Block 0x48, offset 0x20c - {value: 0x0014, lo: 0xb4, hi: 0xb5}, - {value: 0x0010, lo: 0xb6, hi: 0xb6}, - {value: 0x0014, lo: 0xb7, hi: 0xbd}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0x49, offset 0x210 - {value: 0x0010, lo: 0x80, hi: 0x85}, - {value: 0x0014, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0014, lo: 0x89, hi: 0x91}, - {value: 0x0034, lo: 0x92, hi: 0x92}, - {value: 0x0014, lo: 0x93, hi: 0x93}, - {value: 0x0004, lo: 0x97, hi: 0x97}, - {value: 0x0024, lo: 0x9d, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - // Block 0x4a, offset 0x219 - {value: 0x0014, lo: 0x8b, hi: 0x8e}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x4b, offset 0x21c - {value: 0x0010, lo: 0x80, hi: 0x82}, - {value: 0x0014, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x84, hi: 0xb7}, - // Block 0x4c, offset 0x21f - {value: 0x0010, lo: 0x80, hi: 0x84}, - {value: 0x0014, lo: 0x85, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0xa8}, - {value: 0x0034, lo: 0xa9, hi: 0xa9}, - {value: 0x0010, lo: 0xaa, hi: 0xaa}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x4d, offset 0x225 - {value: 0x0010, lo: 0x80, hi: 0xb5}, - // Block 0x4e, offset 0x226 - {value: 0x0010, lo: 0x80, hi: 0x9e}, - {value: 0x0014, lo: 0xa0, hi: 0xa2}, - {value: 0x0010, lo: 0xa3, hi: 0xa6}, - {value: 0x0014, lo: 0xa7, hi: 0xa8}, - {value: 0x0010, lo: 0xa9, hi: 0xab}, - {value: 0x0010, lo: 0xb0, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb2}, - {value: 0x0010, lo: 0xb3, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xb9}, - {value: 0x0024, lo: 0xba, hi: 0xba}, - {value: 0x0034, lo: 0xbb, hi: 0xbb}, - // Block 0x4f, offset 0x231 - {value: 0x0010, lo: 0x86, hi: 0x8f}, - // Block 0x50, offset 0x232 - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x51, offset 0x233 - {value: 0x0010, lo: 0x80, hi: 0x96}, - {value: 0x0024, lo: 0x97, hi: 0x97}, - {value: 0x0034, lo: 0x98, hi: 0x98}, - {value: 0x0010, lo: 0x99, hi: 0x9a}, - {value: 0x0014, lo: 0x9b, hi: 0x9b}, - // Block 0x52, offset 0x238 - {value: 0x0010, lo: 0x95, hi: 0x95}, - {value: 0x0014, lo: 0x96, hi: 0x96}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0014, lo: 0x98, hi: 0x9e}, - {value: 0x0034, lo: 0xa0, hi: 0xa0}, - {value: 0x0010, lo: 0xa1, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa2}, - {value: 0x0010, lo: 0xa3, hi: 0xa4}, - {value: 0x0014, lo: 0xa5, hi: 0xac}, - {value: 0x0010, lo: 0xad, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb4}, - {value: 0x0024, lo: 0xb5, hi: 0xbc}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0x53, offset 0x245 - {value: 0x0010, lo: 0x80, hi: 0x89}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0004, lo: 0xa7, hi: 0xa7}, - {value: 0x0024, lo: 0xb0, hi: 0xb4}, - {value: 0x0034, lo: 0xb5, hi: 0xba}, - {value: 0x0024, lo: 0xbb, hi: 0xbc}, - {value: 0x0034, lo: 0xbd, hi: 0xbd}, - {value: 0x0014, lo: 0xbe, hi: 0xbe}, - // Block 0x54, offset 0x24d - {value: 0x0014, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x84, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0010, lo: 0xb5, hi: 0xb5}, - {value: 0x0014, lo: 0xb6, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - {value: 0x0014, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x55, offset 0x255 - {value: 0x0010, lo: 0x80, hi: 0x81}, - {value: 0x0014, lo: 0x82, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x83}, - {value: 0x0030, lo: 0x84, hi: 0x84}, - {value: 0x0010, lo: 0x85, hi: 0x8b}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0024, lo: 0xab, hi: 0xab}, - {value: 0x0034, lo: 0xac, hi: 0xac}, - {value: 0x0024, lo: 0xad, hi: 0xb3}, - // Block 0x56, offset 0x25e - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa5}, - {value: 0x0010, lo: 0xa6, hi: 0xa7}, - {value: 0x0014, lo: 0xa8, hi: 0xa9}, - {value: 0x0030, lo: 0xaa, hi: 0xaa}, - {value: 0x0034, lo: 0xab, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xbf}, - // Block 0x57, offset 0x267 - {value: 0x0010, lo: 0x80, hi: 0xa5}, - {value: 0x0034, lo: 0xa6, hi: 0xa6}, - {value: 0x0010, lo: 0xa7, hi: 0xa7}, - {value: 0x0014, lo: 0xa8, hi: 0xa9}, - {value: 0x0010, lo: 0xaa, hi: 0xac}, - {value: 0x0014, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xae}, - {value: 0x0014, lo: 0xaf, hi: 0xb1}, - {value: 0x0030, lo: 0xb2, hi: 0xb3}, - // Block 0x58, offset 0x270 - {value: 0x0010, lo: 0x80, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xb3}, - {value: 0x0010, lo: 0xb4, hi: 0xb5}, - {value: 0x0014, lo: 0xb6, hi: 0xb6}, - {value: 0x0034, lo: 0xb7, hi: 0xb7}, - // Block 0x59, offset 0x275 - {value: 0x0010, lo: 0x80, hi: 0x89}, - {value: 0x0010, lo: 0x8d, hi: 0xb7}, - {value: 0x0014, lo: 0xb8, hi: 0xbd}, - // Block 0x5a, offset 0x278 - {value: 0x296a, lo: 0x80, hi: 0x80}, - {value: 0x2a2a, lo: 0x81, hi: 0x81}, - {value: 0x2aea, lo: 0x82, hi: 0x82}, - {value: 0x2baa, lo: 0x83, hi: 0x83}, - {value: 0x2c6a, lo: 0x84, hi: 0x84}, - {value: 0x2d2a, lo: 0x85, hi: 0x85}, - {value: 0x2dea, lo: 0x86, hi: 0x86}, - {value: 0x2eaa, lo: 0x87, hi: 0x87}, - {value: 0x2f6a, lo: 0x88, hi: 0x88}, - // Block 0x5b, offset 0x281 - {value: 0x0024, lo: 0x90, hi: 0x92}, - {value: 0x0034, lo: 0x94, hi: 0x99}, - {value: 0x0024, lo: 0x9a, hi: 0x9b}, - {value: 0x0034, lo: 0x9c, hi: 0x9f}, - {value: 0x0024, lo: 0xa0, hi: 0xa0}, - {value: 0x0010, lo: 0xa1, hi: 0xa1}, - {value: 0x0034, lo: 0xa2, hi: 0xa8}, - {value: 0x0010, lo: 0xa9, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xb3}, - {value: 0x0024, lo: 0xb4, hi: 0xb4}, - {value: 0x0010, lo: 0xb5, hi: 0xb6}, - {value: 0x0024, lo: 0xb8, hi: 0xb9}, - // Block 0x5c, offset 0x28e - {value: 0x0012, lo: 0x80, hi: 0xab}, - {value: 0x0015, lo: 0xac, hi: 0xbf}, - // Block 0x5d, offset 0x290 - {value: 0x0015, lo: 0x80, hi: 0xaa}, - {value: 0x0012, lo: 0xab, hi: 0xb7}, - {value: 0x0015, lo: 0xb8, hi: 0xb8}, - {value: 0x8452, lo: 0xb9, hi: 0xb9}, - {value: 0x0012, lo: 0xba, hi: 0xbc}, - {value: 0x8852, lo: 0xbd, hi: 0xbd}, - {value: 0x0012, lo: 0xbe, hi: 0xbf}, - // Block 0x5e, offset 0x297 - {value: 0x0012, lo: 0x80, hi: 0x9a}, - {value: 0x0015, lo: 0x9b, hi: 0xbf}, - // Block 0x5f, offset 0x299 - {value: 0x0024, lo: 0x80, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x82}, - {value: 0x0024, lo: 0x83, hi: 0x89}, - {value: 0x0034, lo: 0x8a, hi: 0x8a}, - {value: 0x0024, lo: 0x8b, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x90}, - {value: 0x0024, lo: 0x91, hi: 0xb5}, - {value: 0x0024, lo: 0xbb, hi: 0xbb}, - {value: 0x0034, lo: 0xbc, hi: 0xbd}, - {value: 0x0024, lo: 0xbe, hi: 0xbe}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0x60, offset 0x2a4 - {value: 0x0117, lo: 0x80, hi: 0xbf}, - // Block 0x61, offset 0x2a5 - {value: 0x0117, lo: 0x80, hi: 0x95}, - {value: 0x306a, lo: 0x96, hi: 0x96}, - {value: 0x316a, lo: 0x97, hi: 0x97}, - {value: 0x326a, lo: 0x98, hi: 0x98}, - {value: 0x336a, lo: 0x99, hi: 0x99}, - {value: 0x346a, lo: 0x9a, hi: 0x9a}, - {value: 0x356a, lo: 0x9b, hi: 0x9b}, - {value: 0x0012, lo: 0x9c, hi: 0x9d}, - {value: 0x366b, lo: 0x9e, hi: 0x9e}, - {value: 0x0012, lo: 0x9f, hi: 0x9f}, - {value: 0x0117, lo: 0xa0, hi: 0xbf}, - // Block 0x62, offset 0x2b0 - {value: 0x0812, lo: 0x80, hi: 0x87}, - {value: 0x0813, lo: 0x88, hi: 0x8f}, - {value: 0x0812, lo: 0x90, hi: 0x95}, - {value: 0x0813, lo: 0x98, hi: 0x9d}, - {value: 0x0812, lo: 0xa0, hi: 0xa7}, - {value: 0x0813, lo: 0xa8, hi: 0xaf}, - {value: 0x0812, lo: 0xb0, hi: 0xb7}, - {value: 0x0813, lo: 0xb8, hi: 0xbf}, - // Block 0x63, offset 0x2b8 - {value: 0x0004, lo: 0x8b, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8f}, - {value: 0x0054, lo: 0x98, hi: 0x99}, - {value: 0x0054, lo: 0xa4, hi: 0xa4}, - {value: 0x0054, lo: 0xa7, hi: 0xa7}, - {value: 0x0014, lo: 0xaa, hi: 0xae}, - {value: 0x0010, lo: 0xaf, hi: 0xaf}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x64, offset 0x2c0 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x94, hi: 0x94}, - {value: 0x0014, lo: 0xa0, hi: 0xa4}, - {value: 0x0014, lo: 0xa6, hi: 0xaf}, - {value: 0x0015, lo: 0xb1, hi: 0xb1}, - {value: 0x0015, lo: 0xbf, hi: 0xbf}, - // Block 0x65, offset 0x2c6 - {value: 0x0015, lo: 0x90, hi: 0x9c}, - // Block 0x66, offset 0x2c7 - {value: 0x0024, lo: 0x90, hi: 0x91}, - {value: 0x0034, lo: 0x92, hi: 0x93}, - {value: 0x0024, lo: 0x94, hi: 0x97}, - {value: 0x0034, lo: 0x98, hi: 0x9a}, - {value: 0x0024, lo: 0x9b, hi: 0x9c}, - {value: 0x0014, lo: 0x9d, hi: 0xa0}, - {value: 0x0024, lo: 0xa1, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa4}, - {value: 0x0034, lo: 0xa5, hi: 0xa6}, - {value: 0x0024, lo: 0xa7, hi: 0xa7}, - {value: 0x0034, lo: 0xa8, hi: 0xa8}, - {value: 0x0024, lo: 0xa9, hi: 0xa9}, - {value: 0x0034, lo: 0xaa, hi: 0xaf}, - {value: 0x0024, lo: 0xb0, hi: 0xb0}, - // Block 0x67, offset 0x2d5 - {value: 0x0016, lo: 0x85, hi: 0x86}, - {value: 0x0012, lo: 0x87, hi: 0x89}, - {value: 0x9d52, lo: 0x8e, hi: 0x8e}, - {value: 0x1013, lo: 0xa0, hi: 0xaf}, - {value: 0x1012, lo: 0xb0, hi: 0xbf}, - // Block 0x68, offset 0x2da - {value: 0x0010, lo: 0x80, hi: 0x82}, - {value: 0x0716, lo: 0x83, hi: 0x84}, - {value: 0x0010, lo: 0x85, hi: 0x88}, - // Block 0x69, offset 0x2dd - {value: 0xa053, lo: 0xb6, hi: 0xb7}, - {value: 0xa353, lo: 0xb8, hi: 0xb9}, - {value: 0xa653, lo: 0xba, hi: 0xbb}, - {value: 0xa353, lo: 0xbc, hi: 0xbd}, - {value: 0xa053, lo: 0xbe, hi: 0xbf}, - // Block 0x6a, offset 0x2e2 - {value: 0x3013, lo: 0x80, hi: 0x8f}, - {value: 0x6553, lo: 0x90, hi: 0x9f}, - {value: 0xa953, lo: 0xa0, hi: 0xae}, - {value: 0x3012, lo: 0xb0, hi: 0xbf}, - // Block 0x6b, offset 0x2e6 - {value: 0x0117, lo: 0x80, hi: 0xa3}, - {value: 0x0012, lo: 0xa4, hi: 0xa4}, - {value: 0x0716, lo: 0xab, hi: 0xac}, - {value: 0x0316, lo: 0xad, hi: 0xae}, - {value: 0x0024, lo: 0xaf, hi: 0xb1}, - {value: 0x0117, lo: 0xb2, hi: 0xb3}, - // Block 0x6c, offset 0x2ec - {value: 0x6c52, lo: 0x80, hi: 0x9f}, - {value: 0x7052, lo: 0xa0, hi: 0xa5}, - {value: 0x7052, lo: 0xa7, hi: 0xa7}, - {value: 0x7052, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x6d, offset 0x2f1 - {value: 0x0010, lo: 0x80, hi: 0xa7}, - {value: 0x0014, lo: 0xaf, hi: 0xaf}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0x6e, offset 0x2f4 - {value: 0x0010, lo: 0x80, hi: 0x96}, - {value: 0x0010, lo: 0xa0, hi: 0xa6}, - {value: 0x0010, lo: 0xa8, hi: 0xae}, - {value: 0x0010, lo: 0xb0, hi: 0xb6}, - {value: 0x0010, lo: 0xb8, hi: 0xbe}, - // Block 0x6f, offset 0x2f9 - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0010, lo: 0x88, hi: 0x8e}, - {value: 0x0010, lo: 0x90, hi: 0x96}, - {value: 0x0010, lo: 0x98, hi: 0x9e}, - {value: 0x0024, lo: 0xa0, hi: 0xbf}, - // Block 0x70, offset 0x2fe - {value: 0x0014, lo: 0xaf, hi: 0xaf}, - // Block 0x71, offset 0x2ff - {value: 0x0014, lo: 0x85, hi: 0x85}, - {value: 0x0034, lo: 0xaa, hi: 0xad}, - {value: 0x0030, lo: 0xae, hi: 0xaf}, - {value: 0x0004, lo: 0xb1, hi: 0xb5}, - {value: 0x0014, lo: 0xbb, hi: 0xbb}, - {value: 0x0010, lo: 0xbc, hi: 0xbc}, - // Block 0x72, offset 0x305 - {value: 0x0034, lo: 0x99, hi: 0x9a}, - {value: 0x0004, lo: 0x9b, hi: 0x9e}, - // Block 0x73, offset 0x307 - {value: 0x0004, lo: 0xbc, hi: 0xbe}, - // Block 0x74, offset 0x308 - {value: 0x0010, lo: 0x85, hi: 0xad}, - {value: 0x0010, lo: 0xb1, hi: 0xbf}, - // Block 0x75, offset 0x30a - {value: 0x0010, lo: 0x80, hi: 0x8e}, - {value: 0x0010, lo: 0xa0, hi: 0xba}, - // Block 0x76, offset 0x30c - {value: 0x0010, lo: 0x80, hi: 0x94}, - {value: 0x0014, lo: 0x95, hi: 0x95}, - {value: 0x0010, lo: 0x96, hi: 0xbf}, - // Block 0x77, offset 0x30f - {value: 0x0010, lo: 0x80, hi: 0x8c}, - // Block 0x78, offset 0x310 - {value: 0x0010, lo: 0x90, hi: 0xb7}, - {value: 0x0014, lo: 0xb8, hi: 0xbd}, - // Block 0x79, offset 0x312 - {value: 0x0010, lo: 0x80, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8c}, - {value: 0x0010, lo: 0x90, hi: 0xab}, - // Block 0x7a, offset 0x315 - {value: 0x0117, lo: 0x80, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xae}, - {value: 0x0024, lo: 0xaf, hi: 0xaf}, - {value: 0x0014, lo: 0xb0, hi: 0xb2}, - {value: 0x0024, lo: 0xb4, hi: 0xbd}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x7b, offset 0x31b - {value: 0x0117, lo: 0x80, hi: 0x9b}, - {value: 0x0015, lo: 0x9c, hi: 0x9d}, - {value: 0x0024, lo: 0x9e, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0x7c, offset 0x31f - {value: 0x0010, lo: 0x80, hi: 0xaf}, - {value: 0x0024, lo: 0xb0, hi: 0xb1}, - // Block 0x7d, offset 0x321 - {value: 0x0004, lo: 0x80, hi: 0x96}, - {value: 0x0014, lo: 0x97, hi: 0x9f}, - {value: 0x0004, lo: 0xa0, hi: 0xa1}, - {value: 0x0117, lo: 0xa2, hi: 0xaf}, - {value: 0x0012, lo: 0xb0, hi: 0xb1}, - {value: 0x0117, lo: 0xb2, hi: 0xbf}, - // Block 0x7e, offset 0x327 - {value: 0x0117, lo: 0x80, hi: 0xaf}, - {value: 0x0015, lo: 0xb0, hi: 0xb0}, - {value: 0x0012, lo: 0xb1, hi: 0xb8}, - {value: 0x0316, lo: 0xb9, hi: 0xba}, - {value: 0x0716, lo: 0xbb, hi: 0xbc}, - {value: 0x8453, lo: 0xbd, hi: 0xbd}, - {value: 0x0117, lo: 0xbe, hi: 0xbf}, - // Block 0x7f, offset 0x32e - {value: 0x0010, lo: 0xb7, hi: 0xb7}, - {value: 0x0015, lo: 0xb8, hi: 0xb9}, - {value: 0x0012, lo: 0xba, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbf}, - // Block 0x80, offset 0x332 - {value: 0x0010, lo: 0x80, hi: 0x81}, - {value: 0x0014, lo: 0x82, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0x85}, - {value: 0x0034, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x8a}, - {value: 0x0014, lo: 0x8b, hi: 0x8b}, - {value: 0x0010, lo: 0x8c, hi: 0xa4}, - {value: 0x0014, lo: 0xa5, hi: 0xa6}, - {value: 0x0010, lo: 0xa7, hi: 0xa7}, - // Block 0x81, offset 0x33b - {value: 0x0010, lo: 0x80, hi: 0xb3}, - // Block 0x82, offset 0x33c - {value: 0x0010, lo: 0x80, hi: 0x83}, - {value: 0x0034, lo: 0x84, hi: 0x84}, - {value: 0x0014, lo: 0x85, hi: 0x85}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0024, lo: 0xa0, hi: 0xb1}, - {value: 0x0010, lo: 0xb2, hi: 0xb7}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x83, offset 0x344 - {value: 0x0010, lo: 0x80, hi: 0xa5}, - {value: 0x0014, lo: 0xa6, hi: 0xaa}, - {value: 0x0034, lo: 0xab, hi: 0xad}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x84, offset 0x348 - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0014, lo: 0x87, hi: 0x91}, - {value: 0x0010, lo: 0x92, hi: 0x92}, - {value: 0x0030, lo: 0x93, hi: 0x93}, - {value: 0x0010, lo: 0xa0, hi: 0xbc}, - // Block 0x85, offset 0x34d - {value: 0x0014, lo: 0x80, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0xb2}, - {value: 0x0034, lo: 0xb3, hi: 0xb3}, - {value: 0x0010, lo: 0xb4, hi: 0xb5}, - {value: 0x0014, lo: 0xb6, hi: 0xb9}, - {value: 0x0010, lo: 0xba, hi: 0xbb}, - {value: 0x0014, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0x86, offset 0x355 - {value: 0x0030, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x8f, hi: 0x8f}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0014, lo: 0xa5, hi: 0xa5}, - {value: 0x0004, lo: 0xa6, hi: 0xa6}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0x87, offset 0x35b - {value: 0x0010, lo: 0x80, hi: 0xa8}, - {value: 0x0014, lo: 0xa9, hi: 0xae}, - {value: 0x0010, lo: 0xaf, hi: 0xb0}, - {value: 0x0014, lo: 0xb1, hi: 0xb2}, - {value: 0x0010, lo: 0xb3, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb6}, - // Block 0x88, offset 0x361 - {value: 0x0010, lo: 0x80, hi: 0x82}, - {value: 0x0014, lo: 0x83, hi: 0x83}, - {value: 0x0010, lo: 0x84, hi: 0x8b}, - {value: 0x0014, lo: 0x8c, hi: 0x8c}, - {value: 0x0010, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0004, lo: 0xb0, hi: 0xb0}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - {value: 0x0014, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbd}, - // Block 0x89, offset 0x36b - {value: 0x0024, lo: 0xb0, hi: 0xb0}, - {value: 0x0024, lo: 0xb2, hi: 0xb3}, - {value: 0x0034, lo: 0xb4, hi: 0xb4}, - {value: 0x0024, lo: 0xb7, hi: 0xb8}, - {value: 0x0024, lo: 0xbe, hi: 0xbf}, - // Block 0x8a, offset 0x370 - {value: 0x0024, lo: 0x81, hi: 0x81}, - {value: 0x0004, lo: 0x9d, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xab}, - {value: 0x0014, lo: 0xac, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xaf}, - {value: 0x0010, lo: 0xb2, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb4}, - {value: 0x0010, lo: 0xb5, hi: 0xb5}, - {value: 0x0034, lo: 0xb6, hi: 0xb6}, - // Block 0x8b, offset 0x379 - {value: 0x0010, lo: 0x81, hi: 0x86}, - {value: 0x0010, lo: 0x89, hi: 0x8e}, - {value: 0x0010, lo: 0x91, hi: 0x96}, - {value: 0x0010, lo: 0xa0, hi: 0xa6}, - {value: 0x0010, lo: 0xa8, hi: 0xae}, - {value: 0x0012, lo: 0xb0, hi: 0xbf}, - // Block 0x8c, offset 0x37f - {value: 0x0012, lo: 0x80, hi: 0x92}, - {value: 0xac52, lo: 0x93, hi: 0x93}, - {value: 0x0012, lo: 0x94, hi: 0x9a}, - {value: 0x0004, lo: 0x9b, hi: 0x9b}, - {value: 0x0015, lo: 0x9c, hi: 0x9f}, - {value: 0x0012, lo: 0xa0, hi: 0xa5}, - {value: 0x74d2, lo: 0xb0, hi: 0xbf}, - // Block 0x8d, offset 0x386 - {value: 0x78d2, lo: 0x80, hi: 0x8f}, - {value: 0x7cd2, lo: 0x90, hi: 0x9f}, - {value: 0x80d2, lo: 0xa0, hi: 0xaf}, - {value: 0x7cd2, lo: 0xb0, hi: 0xbf}, - // Block 0x8e, offset 0x38a - {value: 0x0010, lo: 0x80, hi: 0xa4}, - {value: 0x0014, lo: 0xa5, hi: 0xa5}, - {value: 0x0010, lo: 0xa6, hi: 0xa7}, - {value: 0x0014, lo: 0xa8, hi: 0xa8}, - {value: 0x0010, lo: 0xa9, hi: 0xaa}, - {value: 0x0010, lo: 0xac, hi: 0xac}, - {value: 0x0034, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0x8f, offset 0x392 - {value: 0x0010, lo: 0x80, hi: 0xa3}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0x90, offset 0x394 - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0010, lo: 0x8b, hi: 0xbb}, - // Block 0x91, offset 0x396 - {value: 0x0010, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x83, hi: 0x84}, - {value: 0x0010, lo: 0x86, hi: 0xbf}, - // Block 0x92, offset 0x399 - {value: 0x0010, lo: 0x80, hi: 0xb1}, - {value: 0x0004, lo: 0xb2, hi: 0xbf}, - // Block 0x93, offset 0x39b - {value: 0x0004, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x93, hi: 0xbf}, - // Block 0x94, offset 0x39d - {value: 0x0010, lo: 0x80, hi: 0xbd}, - // Block 0x95, offset 0x39e - {value: 0x0010, lo: 0x90, hi: 0xbf}, - // Block 0x96, offset 0x39f - {value: 0x0010, lo: 0x80, hi: 0x8f}, - {value: 0x0010, lo: 0x92, hi: 0xbf}, - // Block 0x97, offset 0x3a1 - {value: 0x0010, lo: 0x80, hi: 0x87}, - {value: 0x0010, lo: 0xb0, hi: 0xbb}, - // Block 0x98, offset 0x3a3 - {value: 0x0014, lo: 0x80, hi: 0x8f}, - {value: 0x0054, lo: 0x93, hi: 0x93}, - {value: 0x0024, lo: 0xa0, hi: 0xa6}, - {value: 0x0034, lo: 0xa7, hi: 0xad}, - {value: 0x0024, lo: 0xae, hi: 0xaf}, - {value: 0x0010, lo: 0xb3, hi: 0xb4}, - // Block 0x99, offset 0x3a9 - {value: 0x0010, lo: 0x8d, hi: 0x8f}, - {value: 0x0054, lo: 0x92, hi: 0x92}, - {value: 0x0054, lo: 0x95, hi: 0x95}, - {value: 0x0010, lo: 0xb0, hi: 0xb4}, - {value: 0x0010, lo: 0xb6, hi: 0xbf}, - // Block 0x9a, offset 0x3ae - {value: 0x0010, lo: 0x80, hi: 0xbc}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0x9b, offset 0x3b0 - {value: 0x0054, lo: 0x87, hi: 0x87}, - {value: 0x0054, lo: 0x8e, hi: 0x8e}, - {value: 0x0054, lo: 0x9a, hi: 0x9a}, - {value: 0x5f53, lo: 0xa1, hi: 0xba}, - {value: 0x0004, lo: 0xbe, hi: 0xbe}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0x9c, offset 0x3b6 - {value: 0x0004, lo: 0x80, hi: 0x80}, - {value: 0x5f52, lo: 0x81, hi: 0x9a}, - {value: 0x0004, lo: 0xb0, hi: 0xb0}, - // Block 0x9d, offset 0x3b9 - {value: 0x0014, lo: 0x9e, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xbe}, - // Block 0x9e, offset 0x3bb - {value: 0x0010, lo: 0x82, hi: 0x87}, - {value: 0x0010, lo: 0x8a, hi: 0x8f}, - {value: 0x0010, lo: 0x92, hi: 0x97}, - {value: 0x0010, lo: 0x9a, hi: 0x9c}, - {value: 0x0004, lo: 0xa3, hi: 0xa3}, - {value: 0x0014, lo: 0xb9, hi: 0xbb}, - // Block 0x9f, offset 0x3c1 - {value: 0x0010, lo: 0x80, hi: 0x8b}, - {value: 0x0010, lo: 0x8d, hi: 0xa6}, - {value: 0x0010, lo: 0xa8, hi: 0xba}, - {value: 0x0010, lo: 0xbc, hi: 0xbd}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xa0, offset 0x3c6 - {value: 0x0010, lo: 0x80, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x9d}, - // Block 0xa1, offset 0x3c8 - {value: 0x0010, lo: 0x80, hi: 0xba}, - // Block 0xa2, offset 0x3c9 - {value: 0x0010, lo: 0x80, hi: 0xb4}, - // Block 0xa3, offset 0x3ca - {value: 0x0034, lo: 0xbd, hi: 0xbd}, - // Block 0xa4, offset 0x3cb - {value: 0x0010, lo: 0x80, hi: 0x9c}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0xa5, offset 0x3cd - {value: 0x0010, lo: 0x80, hi: 0x90}, - {value: 0x0034, lo: 0xa0, hi: 0xa0}, - // Block 0xa6, offset 0x3cf - {value: 0x0010, lo: 0x80, hi: 0x9f}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xa7, offset 0x3d1 - {value: 0x0010, lo: 0x80, hi: 0x8a}, - {value: 0x0010, lo: 0x90, hi: 0xb5}, - {value: 0x0024, lo: 0xb6, hi: 0xba}, - // Block 0xa8, offset 0x3d4 - {value: 0x0010, lo: 0x80, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xbf}, - // Block 0xa9, offset 0x3d6 - {value: 0x0010, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x88, hi: 0x8f}, - {value: 0x0010, lo: 0x91, hi: 0x95}, - // Block 0xaa, offset 0x3d9 - {value: 0x2813, lo: 0x80, hi: 0x87}, - {value: 0x3813, lo: 0x88, hi: 0x8f}, - {value: 0x2813, lo: 0x90, hi: 0x97}, - {value: 0xaf53, lo: 0x98, hi: 0x9f}, - {value: 0xb253, lo: 0xa0, hi: 0xa7}, - {value: 0x2812, lo: 0xa8, hi: 0xaf}, - {value: 0x3812, lo: 0xb0, hi: 0xb7}, - {value: 0x2812, lo: 0xb8, hi: 0xbf}, - // Block 0xab, offset 0x3e1 - {value: 0xaf52, lo: 0x80, hi: 0x87}, - {value: 0xb252, lo: 0x88, hi: 0x8f}, - {value: 0x0010, lo: 0x90, hi: 0xbf}, - // Block 0xac, offset 0x3e4 - {value: 0x0010, lo: 0x80, hi: 0x9d}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - {value: 0xb253, lo: 0xb0, hi: 0xb7}, - {value: 0xaf53, lo: 0xb8, hi: 0xbf}, - // Block 0xad, offset 0x3e8 - {value: 0x2813, lo: 0x80, hi: 0x87}, - {value: 0x3813, lo: 0x88, hi: 0x8f}, - {value: 0x2813, lo: 0x90, hi: 0x93}, - {value: 0xb252, lo: 0x98, hi: 0x9f}, - {value: 0xaf52, lo: 0xa0, hi: 0xa7}, - {value: 0x2812, lo: 0xa8, hi: 0xaf}, - {value: 0x3812, lo: 0xb0, hi: 0xb7}, - {value: 0x2812, lo: 0xb8, hi: 0xbb}, - // Block 0xae, offset 0x3f0 - {value: 0x0010, lo: 0x80, hi: 0xa7}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xaf, offset 0x3f2 - {value: 0x0010, lo: 0x80, hi: 0xa3}, - // Block 0xb0, offset 0x3f3 - {value: 0x0010, lo: 0x80, hi: 0xb6}, - // Block 0xb1, offset 0x3f4 - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0010, lo: 0xa0, hi: 0xa7}, - // Block 0xb2, offset 0x3f6 - {value: 0x0010, lo: 0x80, hi: 0x85}, - {value: 0x0010, lo: 0x88, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0xb5}, - {value: 0x0010, lo: 0xb7, hi: 0xb8}, - {value: 0x0010, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xb3, offset 0x3fc - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0010, lo: 0xa0, hi: 0xb6}, - // Block 0xb4, offset 0x3fe - {value: 0x0010, lo: 0x80, hi: 0x9e}, - // Block 0xb5, offset 0x3ff - {value: 0x0010, lo: 0xa0, hi: 0xb2}, - {value: 0x0010, lo: 0xb4, hi: 0xb5}, - // Block 0xb6, offset 0x401 - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0010, lo: 0xa0, hi: 0xb9}, - // Block 0xb7, offset 0x403 - {value: 0x0010, lo: 0x80, hi: 0xb7}, - {value: 0x0010, lo: 0xbe, hi: 0xbf}, - // Block 0xb8, offset 0x405 - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x83}, - {value: 0x0014, lo: 0x85, hi: 0x86}, - {value: 0x0014, lo: 0x8c, hi: 0x8c}, - {value: 0x0034, lo: 0x8d, hi: 0x8d}, - {value: 0x0014, lo: 0x8e, hi: 0x8e}, - {value: 0x0024, lo: 0x8f, hi: 0x8f}, - {value: 0x0010, lo: 0x90, hi: 0x93}, - {value: 0x0010, lo: 0x95, hi: 0x97}, - {value: 0x0010, lo: 0x99, hi: 0xb3}, - {value: 0x0024, lo: 0xb8, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xba}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xb9, offset 0x412 - {value: 0x0010, lo: 0xa0, hi: 0xbc}, - // Block 0xba, offset 0x413 - {value: 0x0010, lo: 0x80, hi: 0x9c}, - // Block 0xbb, offset 0x414 - {value: 0x0010, lo: 0x80, hi: 0x87}, - {value: 0x0010, lo: 0x89, hi: 0xa4}, - {value: 0x0024, lo: 0xa5, hi: 0xa5}, - {value: 0x0034, lo: 0xa6, hi: 0xa6}, - // Block 0xbc, offset 0x418 - {value: 0x0010, lo: 0x80, hi: 0x95}, - {value: 0x0010, lo: 0xa0, hi: 0xb2}, - // Block 0xbd, offset 0x41a - {value: 0x0010, lo: 0x80, hi: 0x91}, - // Block 0xbe, offset 0x41b - {value: 0x0010, lo: 0x80, hi: 0x88}, - // Block 0xbf, offset 0x41c - {value: 0x5653, lo: 0x80, hi: 0xb2}, - // Block 0xc0, offset 0x41d - {value: 0x5652, lo: 0x80, hi: 0xb2}, - // Block 0xc1, offset 0x41e - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0xb7}, - {value: 0x0014, lo: 0xb8, hi: 0xbf}, - // Block 0xc2, offset 0x422 - {value: 0x0014, lo: 0x80, hi: 0x85}, - {value: 0x0034, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0xa6, hi: 0xaf}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xc3, offset 0x426 - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb6}, - {value: 0x0010, lo: 0xb7, hi: 0xb8}, - {value: 0x0034, lo: 0xb9, hi: 0xba}, - {value: 0x0014, lo: 0xbd, hi: 0xbd}, - // Block 0xc4, offset 0x42c - {value: 0x0010, lo: 0x90, hi: 0xa8}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xc5, offset 0x42e - {value: 0x0024, lo: 0x80, hi: 0x82}, - {value: 0x0010, lo: 0x83, hi: 0xa6}, - {value: 0x0014, lo: 0xa7, hi: 0xab}, - {value: 0x0010, lo: 0xac, hi: 0xac}, - {value: 0x0014, lo: 0xad, hi: 0xb2}, - {value: 0x0034, lo: 0xb3, hi: 0xb4}, - {value: 0x0010, lo: 0xb6, hi: 0xbf}, - // Block 0xc6, offset 0x435 - {value: 0x0010, lo: 0x90, hi: 0xb2}, - {value: 0x0034, lo: 0xb3, hi: 0xb3}, - {value: 0x0010, lo: 0xb6, hi: 0xb6}, - // Block 0xc7, offset 0x438 - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0xb5}, - {value: 0x0014, lo: 0xb6, hi: 0xbe}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xc8, offset 0x43c - {value: 0x0030, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x84}, - {value: 0x0034, lo: 0x8a, hi: 0x8a}, - {value: 0x0014, lo: 0x8b, hi: 0x8c}, - {value: 0x0010, lo: 0x90, hi: 0x9a}, - {value: 0x0010, lo: 0x9c, hi: 0x9c}, - // Block 0xc9, offset 0x442 - {value: 0x0010, lo: 0x80, hi: 0x91}, - {value: 0x0010, lo: 0x93, hi: 0xae}, - {value: 0x0014, lo: 0xaf, hi: 0xb1}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0014, lo: 0xb4, hi: 0xb4}, - {value: 0x0030, lo: 0xb5, hi: 0xb5}, - {value: 0x0034, lo: 0xb6, hi: 0xb6}, - {value: 0x0014, lo: 0xb7, hi: 0xb7}, - {value: 0x0014, lo: 0xbe, hi: 0xbe}, - // Block 0xca, offset 0x44b - {value: 0x0010, lo: 0x80, hi: 0x86}, - {value: 0x0010, lo: 0x88, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0x8d}, - {value: 0x0010, lo: 0x8f, hi: 0x9d}, - {value: 0x0010, lo: 0x9f, hi: 0xa8}, - {value: 0x0010, lo: 0xb0, hi: 0xbf}, - // Block 0xcb, offset 0x451 - {value: 0x0010, lo: 0x80, hi: 0x9e}, - {value: 0x0014, lo: 0x9f, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xa2}, - {value: 0x0014, lo: 0xa3, hi: 0xa8}, - {value: 0x0034, lo: 0xa9, hi: 0xaa}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xcc, offset 0x457 - {value: 0x0014, lo: 0x80, hi: 0x81}, - {value: 0x0010, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x8c}, - {value: 0x0010, lo: 0x8f, hi: 0x90}, - {value: 0x0010, lo: 0x93, hi: 0xa8}, - {value: 0x0010, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb5, hi: 0xb9}, - {value: 0x0034, lo: 0xbc, hi: 0xbc}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0xcd, offset 0x461 - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x84}, - {value: 0x0010, lo: 0x87, hi: 0x88}, - {value: 0x0010, lo: 0x8b, hi: 0x8c}, - {value: 0x0030, lo: 0x8d, hi: 0x8d}, - {value: 0x0010, lo: 0x90, hi: 0x90}, - {value: 0x0010, lo: 0x97, hi: 0x97}, - {value: 0x0010, lo: 0x9d, hi: 0xa3}, - {value: 0x0024, lo: 0xa6, hi: 0xac}, - {value: 0x0024, lo: 0xb0, hi: 0xb4}, - // Block 0xce, offset 0x46b - {value: 0x0010, lo: 0x80, hi: 0xb7}, - {value: 0x0014, lo: 0xb8, hi: 0xbf}, - // Block 0xcf, offset 0x46d - {value: 0x0010, lo: 0x80, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x82}, - {value: 0x0014, lo: 0x83, hi: 0x84}, - {value: 0x0010, lo: 0x85, hi: 0x85}, - {value: 0x0034, lo: 0x86, hi: 0x86}, - {value: 0x0010, lo: 0x87, hi: 0x8a}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd0, offset 0x474 - {value: 0x0010, lo: 0x80, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xb8}, - {value: 0x0010, lo: 0xb9, hi: 0xb9}, - {value: 0x0014, lo: 0xba, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbe}, - {value: 0x0014, lo: 0xbf, hi: 0xbf}, - // Block 0xd1, offset 0x47a - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x81, hi: 0x81}, - {value: 0x0034, lo: 0x82, hi: 0x83}, - {value: 0x0010, lo: 0x84, hi: 0x85}, - {value: 0x0010, lo: 0x87, hi: 0x87}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd2, offset 0x480 - {value: 0x0010, lo: 0x80, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb5}, - {value: 0x0010, lo: 0xb8, hi: 0xbb}, - {value: 0x0014, lo: 0xbc, hi: 0xbd}, - {value: 0x0010, lo: 0xbe, hi: 0xbe}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xd3, offset 0x486 - {value: 0x0034, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x98, hi: 0x9b}, - {value: 0x0014, lo: 0x9c, hi: 0x9d}, - // Block 0xd4, offset 0x489 - {value: 0x0010, lo: 0x80, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xba}, - {value: 0x0010, lo: 0xbb, hi: 0xbc}, - {value: 0x0014, lo: 0xbd, hi: 0xbd}, - {value: 0x0010, lo: 0xbe, hi: 0xbe}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xd5, offset 0x48f - {value: 0x0014, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x84, hi: 0x84}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0xd6, offset 0x492 - {value: 0x0010, lo: 0x80, hi: 0xaa}, - {value: 0x0014, lo: 0xab, hi: 0xab}, - {value: 0x0010, lo: 0xac, hi: 0xac}, - {value: 0x0014, lo: 0xad, hi: 0xad}, - {value: 0x0010, lo: 0xae, hi: 0xaf}, - {value: 0x0014, lo: 0xb0, hi: 0xb5}, - {value: 0x0030, lo: 0xb6, hi: 0xb6}, - {value: 0x0034, lo: 0xb7, hi: 0xb7}, - // Block 0xd7, offset 0x49a - {value: 0x0010, lo: 0x80, hi: 0x89}, - // Block 0xd8, offset 0x49b - {value: 0x0014, lo: 0x9d, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xa1}, - {value: 0x0014, lo: 0xa2, hi: 0xa5}, - {value: 0x0010, lo: 0xa6, hi: 0xa6}, - {value: 0x0014, lo: 0xa7, hi: 0xaa}, - {value: 0x0034, lo: 0xab, hi: 0xab}, - {value: 0x0010, lo: 0xb0, hi: 0xb9}, - // Block 0xd9, offset 0x4a2 - {value: 0x5f53, lo: 0xa0, hi: 0xbf}, - // Block 0xda, offset 0x4a3 - {value: 0x5f52, lo: 0x80, hi: 0x9f}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - {value: 0x0010, lo: 0xbf, hi: 0xbf}, - // Block 0xdb, offset 0x4a6 - {value: 0x0010, lo: 0x80, hi: 0xb8}, - // Block 0xdc, offset 0x4a7 - {value: 0x0010, lo: 0x80, hi: 0x88}, - {value: 0x0010, lo: 0x8a, hi: 0xaf}, - {value: 0x0014, lo: 0xb0, hi: 0xb6}, - {value: 0x0014, lo: 0xb8, hi: 0xbd}, - {value: 0x0010, lo: 0xbe, hi: 0xbe}, - {value: 0x0034, lo: 0xbf, hi: 0xbf}, - // Block 0xdd, offset 0x4ad - {value: 0x0010, lo: 0x80, hi: 0x80}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0010, lo: 0xb2, hi: 0xbf}, - // Block 0xde, offset 0x4b0 - {value: 0x0010, lo: 0x80, hi: 0x8f}, - {value: 0x0014, lo: 0x92, hi: 0xa7}, - {value: 0x0010, lo: 0xa9, hi: 0xa9}, - {value: 0x0014, lo: 0xaa, hi: 0xb0}, - {value: 0x0010, lo: 0xb1, hi: 0xb1}, - {value: 0x0014, lo: 0xb2, hi: 0xb3}, - {value: 0x0010, lo: 0xb4, hi: 0xb4}, - {value: 0x0014, lo: 0xb5, hi: 0xb6}, - // Block 0xdf, offset 0x4b8 - {value: 0x0010, lo: 0x80, hi: 0x99}, - // Block 0xe0, offset 0x4b9 - {value: 0x0010, lo: 0x80, hi: 0xae}, - // Block 0xe1, offset 0x4ba - {value: 0x0010, lo: 0x80, hi: 0x83}, - // Block 0xe2, offset 0x4bb - {value: 0x0010, lo: 0x80, hi: 0x86}, - // Block 0xe3, offset 0x4bc - {value: 0x0010, lo: 0x80, hi: 0x9e}, - {value: 0x0010, lo: 0xa0, hi: 0xa9}, - // Block 0xe4, offset 0x4be - {value: 0x0010, lo: 0x90, hi: 0xad}, - {value: 0x0034, lo: 0xb0, hi: 0xb4}, - // Block 0xe5, offset 0x4c0 - {value: 0x0010, lo: 0x80, hi: 0xaf}, - {value: 0x0024, lo: 0xb0, hi: 0xb6}, - // Block 0xe6, offset 0x4c2 - {value: 0x0014, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0010, lo: 0xa3, hi: 0xb7}, - {value: 0x0010, lo: 0xbd, hi: 0xbf}, - // Block 0xe7, offset 0x4c6 - {value: 0x0010, lo: 0x80, hi: 0x8f}, - // Block 0xe8, offset 0x4c7 - {value: 0x0010, lo: 0x80, hi: 0x84}, - {value: 0x0010, lo: 0x90, hi: 0xbe}, - // Block 0xe9, offset 0x4c9 - {value: 0x0014, lo: 0x8f, hi: 0x9f}, - // Block 0xea, offset 0x4ca - {value: 0x0014, lo: 0xa0, hi: 0xa0}, - // Block 0xeb, offset 0x4cb - {value: 0x0010, lo: 0x80, hi: 0xaa}, - {value: 0x0010, lo: 0xb0, hi: 0xbc}, - // Block 0xec, offset 0x4cd - {value: 0x0010, lo: 0x80, hi: 0x88}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - {value: 0x0014, lo: 0x9d, hi: 0x9d}, - {value: 0x0034, lo: 0x9e, hi: 0x9e}, - {value: 0x0014, lo: 0xa0, hi: 0xa3}, - // Block 0xed, offset 0x4d2 - {value: 0x0030, lo: 0xa5, hi: 0xa6}, - {value: 0x0034, lo: 0xa7, hi: 0xa9}, - {value: 0x0030, lo: 0xad, hi: 0xb2}, - {value: 0x0014, lo: 0xb3, hi: 0xba}, - {value: 0x0034, lo: 0xbb, hi: 0xbf}, - // Block 0xee, offset 0x4d7 - {value: 0x0034, lo: 0x80, hi: 0x82}, - {value: 0x0024, lo: 0x85, hi: 0x89}, - {value: 0x0034, lo: 0x8a, hi: 0x8b}, - {value: 0x0024, lo: 0xaa, hi: 0xad}, - // Block 0xef, offset 0x4db - {value: 0x0024, lo: 0x82, hi: 0x84}, - // Block 0xf0, offset 0x4dc - {value: 0x0013, lo: 0x80, hi: 0x99}, - {value: 0x0012, lo: 0x9a, hi: 0xb3}, - {value: 0x0013, lo: 0xb4, hi: 0xbf}, - // Block 0xf1, offset 0x4df - {value: 0x0013, lo: 0x80, hi: 0x8d}, - {value: 0x0012, lo: 0x8e, hi: 0x94}, - {value: 0x0012, lo: 0x96, hi: 0xa7}, - {value: 0x0013, lo: 0xa8, hi: 0xbf}, - // Block 0xf2, offset 0x4e3 - {value: 0x0013, lo: 0x80, hi: 0x81}, - {value: 0x0012, lo: 0x82, hi: 0x9b}, - {value: 0x0013, lo: 0x9c, hi: 0x9c}, - {value: 0x0013, lo: 0x9e, hi: 0x9f}, - {value: 0x0013, lo: 0xa2, hi: 0xa2}, - {value: 0x0013, lo: 0xa5, hi: 0xa6}, - {value: 0x0013, lo: 0xa9, hi: 0xac}, - {value: 0x0013, lo: 0xae, hi: 0xb5}, - {value: 0x0012, lo: 0xb6, hi: 0xb9}, - {value: 0x0012, lo: 0xbb, hi: 0xbb}, - {value: 0x0012, lo: 0xbd, hi: 0xbf}, - // Block 0xf3, offset 0x4ee - {value: 0x0012, lo: 0x80, hi: 0x83}, - {value: 0x0012, lo: 0x85, hi: 0x8f}, - {value: 0x0013, lo: 0x90, hi: 0xa9}, - {value: 0x0012, lo: 0xaa, hi: 0xbf}, - // Block 0xf4, offset 0x4f2 - {value: 0x0012, lo: 0x80, hi: 0x83}, - {value: 0x0013, lo: 0x84, hi: 0x85}, - {value: 0x0013, lo: 0x87, hi: 0x8a}, - {value: 0x0013, lo: 0x8d, hi: 0x94}, - {value: 0x0013, lo: 0x96, hi: 0x9c}, - {value: 0x0012, lo: 0x9e, hi: 0xb7}, - {value: 0x0013, lo: 0xb8, hi: 0xb9}, - {value: 0x0013, lo: 0xbb, hi: 0xbe}, - // Block 0xf5, offset 0x4fa - {value: 0x0013, lo: 0x80, hi: 0x84}, - {value: 0x0013, lo: 0x86, hi: 0x86}, - {value: 0x0013, lo: 0x8a, hi: 0x90}, - {value: 0x0012, lo: 0x92, hi: 0xab}, - {value: 0x0013, lo: 0xac, hi: 0xbf}, - // Block 0xf6, offset 0x4ff - {value: 0x0013, lo: 0x80, hi: 0x85}, - {value: 0x0012, lo: 0x86, hi: 0x9f}, - {value: 0x0013, lo: 0xa0, hi: 0xb9}, - {value: 0x0012, lo: 0xba, hi: 0xbf}, - // Block 0xf7, offset 0x503 - {value: 0x0012, lo: 0x80, hi: 0x93}, - {value: 0x0013, lo: 0x94, hi: 0xad}, - {value: 0x0012, lo: 0xae, hi: 0xbf}, - // Block 0xf8, offset 0x506 - {value: 0x0012, lo: 0x80, hi: 0x87}, - {value: 0x0013, lo: 0x88, hi: 0xa1}, - {value: 0x0012, lo: 0xa2, hi: 0xbb}, - {value: 0x0013, lo: 0xbc, hi: 0xbf}, - // Block 0xf9, offset 0x50a - {value: 0x0013, lo: 0x80, hi: 0x95}, - {value: 0x0012, lo: 0x96, hi: 0xaf}, - {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0xfa, offset 0x50d - {value: 0x0013, lo: 0x80, hi: 0x89}, - {value: 0x0012, lo: 0x8a, hi: 0xa5}, - {value: 0x0013, lo: 0xa8, hi: 0xbf}, - // Block 0xfb, offset 0x510 - {value: 0x0013, lo: 0x80, hi: 0x80}, - {value: 0x0012, lo: 0x82, hi: 0x9a}, - {value: 0x0012, lo: 0x9c, hi: 0xa1}, - {value: 0x0013, lo: 0xa2, hi: 0xba}, - {value: 0x0012, lo: 0xbc, hi: 0xbf}, - // Block 0xfc, offset 0x515 - {value: 0x0012, lo: 0x80, hi: 0x94}, - {value: 0x0012, lo: 0x96, hi: 0x9b}, - {value: 0x0013, lo: 0x9c, hi: 0xb4}, - {value: 0x0012, lo: 0xb6, hi: 0xbf}, - // Block 0xfd, offset 0x519 - {value: 0x0012, lo: 0x80, hi: 0x8e}, - {value: 0x0012, lo: 0x90, hi: 0x95}, - {value: 0x0013, lo: 0x96, hi: 0xae}, - {value: 0x0012, lo: 0xb0, hi: 0xbf}, - // Block 0xfe, offset 0x51d - {value: 0x0012, lo: 0x80, hi: 0x88}, - {value: 0x0012, lo: 0x8a, hi: 0x8f}, - {value: 0x0013, lo: 0x90, hi: 0xa8}, - {value: 0x0012, lo: 0xaa, hi: 0xbf}, - // Block 0xff, offset 0x521 - {value: 0x0012, lo: 0x80, hi: 0x82}, - {value: 0x0012, lo: 0x84, hi: 0x89}, - {value: 0x0017, lo: 0x8a, hi: 0x8b}, - {value: 0x0010, lo: 0x8e, hi: 0xbf}, - // Block 0x100, offset 0x525 - {value: 0x0014, lo: 0x80, hi: 0xb6}, - {value: 0x0014, lo: 0xbb, hi: 0xbf}, - // Block 0x101, offset 0x527 - {value: 0x0014, lo: 0x80, hi: 0xac}, - {value: 0x0014, lo: 0xb5, hi: 0xb5}, - // Block 0x102, offset 0x529 - {value: 0x0014, lo: 0x84, hi: 0x84}, - {value: 0x0014, lo: 0x9b, hi: 0x9f}, - {value: 0x0014, lo: 0xa1, hi: 0xaf}, - // Block 0x103, offset 0x52c - {value: 0x0024, lo: 0x80, hi: 0x86}, - {value: 0x0024, lo: 0x88, hi: 0x98}, - {value: 0x0024, lo: 0x9b, hi: 0xa1}, - {value: 0x0024, lo: 0xa3, hi: 0xa4}, - {value: 0x0024, lo: 0xa6, hi: 0xaa}, - // Block 0x104, offset 0x531 - {value: 0x0010, lo: 0x80, hi: 0x84}, - {value: 0x0034, lo: 0x90, hi: 0x96}, - // Block 0x105, offset 0x533 - {value: 0xb552, lo: 0x80, hi: 0x81}, - {value: 0xb852, lo: 0x82, hi: 0x83}, - {value: 0x0024, lo: 0x84, hi: 0x89}, - {value: 0x0034, lo: 0x8a, hi: 0x8a}, - {value: 0x0010, lo: 0x90, hi: 0x99}, - // Block 0x106, offset 0x538 - {value: 0x0010, lo: 0x80, hi: 0x83}, - {value: 0x0010, lo: 0x85, hi: 0x9f}, - {value: 0x0010, lo: 0xa1, hi: 0xa2}, - {value: 0x0010, lo: 0xa4, hi: 0xa4}, - {value: 0x0010, lo: 0xa7, hi: 0xa7}, - {value: 0x0010, lo: 0xa9, hi: 0xb2}, - {value: 0x0010, lo: 0xb4, hi: 0xb7}, - {value: 0x0010, lo: 0xb9, hi: 0xb9}, - {value: 0x0010, lo: 0xbb, hi: 0xbb}, - // Block 0x107, offset 0x541 - {value: 0x0010, lo: 0x80, hi: 0x89}, - {value: 0x0010, lo: 0x8b, hi: 0x9b}, - {value: 0x0010, lo: 0xa1, hi: 0xa3}, - {value: 0x0010, lo: 0xa5, hi: 0xa9}, - {value: 0x0010, lo: 0xab, hi: 0xbb}, - // Block 0x108, offset 0x546 - {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0x109, offset 0x547 - {value: 0x0013, lo: 0x80, hi: 0x89}, - {value: 0x0013, lo: 0x90, hi: 0xa9}, - {value: 0x0013, lo: 0xb0, hi: 0xbf}, - // Block 0x10a, offset 0x54a - {value: 0x0013, lo: 0x80, hi: 0x89}, - // Block 0x10b, offset 0x54b - {value: 0x0004, lo: 0xbb, hi: 0xbf}, - // Block 0x10c, offset 0x54c - {value: 0x0014, lo: 0x81, hi: 0x81}, - {value: 0x0014, lo: 0xa0, hi: 0xbf}, - // Block 0x10d, offset 0x54e - {value: 0x0014, lo: 0x80, hi: 0xbf}, - // Block 0x10e, offset 0x54f - {value: 0x0014, lo: 0x80, hi: 0xaf}, -} - -// Total table size 13811 bytes (13KiB); checksum: 4CC48DA3 diff --git a/vendor/golang.org/x/text/cases/tables9.0.0_test.go b/vendor/golang.org/x/text/cases/tables9.0.0_test.go deleted file mode 100644 index 398d2533..00000000 --- a/vendor/golang.org/x/text/cases/tables9.0.0_test.go +++ /dev/null @@ -1,1156 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build !go1.10 - -package cases - -var ( - caseIgnorable = map[rune]bool{ - 0x0027: true, - 0x002e: true, - 0x003a: true, - 0x00b7: true, - 0x0387: true, - 0x05f4: true, - 0x2018: true, - 0x2019: true, - 0x2024: true, - 0x2027: true, - 0xfe13: true, - 0xfe52: true, - 0xfe55: true, - 0xff07: true, - 0xff0e: true, - 0xff1a: true, - } - - special = map[rune]struct{ toLower, toTitle, toUpper string }{ - 0x00df: {"ß", "Ss", "SS"}, - 0x0130: {"i̇", "İ", "İ"}, - 0xfb00: {"ff", "Ff", "FF"}, - 0xfb01: {"fi", "Fi", "FI"}, - 0xfb02: {"fl", "Fl", "FL"}, - 0xfb03: {"ffi", "Ffi", "FFI"}, - 0xfb04: {"ffl", "Ffl", "FFL"}, - 0xfb05: {"ſt", "St", "ST"}, - 0xfb06: {"st", "St", "ST"}, - 0x0587: {"և", "Եւ", "ԵՒ"}, - 0xfb13: {"ﬓ", "Մն", "ՄՆ"}, - 0xfb14: {"ﬔ", "Մե", "ՄԵ"}, - 0xfb15: {"ﬕ", "Մի", "ՄԻ"}, - 0xfb16: {"ﬖ", "Վն", "ՎՆ"}, - 0xfb17: {"ﬗ", "Մխ", "ՄԽ"}, - 0x0149: {"ʼn", "ʼN", "ʼN"}, - 0x0390: {"ΐ", "Ϊ́", "Ϊ́"}, - 0x03b0: {"ΰ", "Ϋ́", "Ϋ́"}, - 0x01f0: {"ǰ", "J̌", "J̌"}, - 0x1e96: {"ẖ", "H̱", "H̱"}, - 0x1e97: {"ẗ", "T̈", "T̈"}, - 0x1e98: {"ẘ", "W̊", "W̊"}, - 0x1e99: {"ẙ", "Y̊", "Y̊"}, - 0x1e9a: {"ẚ", "Aʾ", "Aʾ"}, - 0x1f50: {"ὐ", "Υ̓", "Υ̓"}, - 0x1f52: {"ὒ", "Υ̓̀", "Υ̓̀"}, - 0x1f54: {"ὔ", "Υ̓́", "Υ̓́"}, - 0x1f56: {"ὖ", "Υ̓͂", "Υ̓͂"}, - 0x1fb6: {"ᾶ", "Α͂", "Α͂"}, - 0x1fc6: {"ῆ", "Η͂", "Η͂"}, - 0x1fd2: {"ῒ", "Ϊ̀", "Ϊ̀"}, - 0x1fd3: {"ΐ", "Ϊ́", "Ϊ́"}, - 0x1fd6: {"ῖ", "Ι͂", "Ι͂"}, - 0x1fd7: {"ῗ", "Ϊ͂", "Ϊ͂"}, - 0x1fe2: {"ῢ", "Ϋ̀", "Ϋ̀"}, - 0x1fe3: {"ΰ", "Ϋ́", "Ϋ́"}, - 0x1fe4: {"ῤ", "Ρ̓", "Ρ̓"}, - 0x1fe6: {"ῦ", "Υ͂", "Υ͂"}, - 0x1fe7: {"ῧ", "Ϋ͂", "Ϋ͂"}, - 0x1ff6: {"ῶ", "Ω͂", "Ω͂"}, - 0x1f80: {"ᾀ", "ᾈ", "ἈΙ"}, - 0x1f81: {"ᾁ", "ᾉ", "ἉΙ"}, - 0x1f82: {"ᾂ", "ᾊ", "ἊΙ"}, - 0x1f83: {"ᾃ", "ᾋ", "ἋΙ"}, - 0x1f84: {"ᾄ", "ᾌ", "ἌΙ"}, - 0x1f85: {"ᾅ", "ᾍ", "ἍΙ"}, - 0x1f86: {"ᾆ", "ᾎ", "ἎΙ"}, - 0x1f87: {"ᾇ", "ᾏ", "ἏΙ"}, - 0x1f88: {"ᾀ", "ᾈ", "ἈΙ"}, - 0x1f89: {"ᾁ", "ᾉ", "ἉΙ"}, - 0x1f8a: {"ᾂ", "ᾊ", "ἊΙ"}, - 0x1f8b: {"ᾃ", "ᾋ", "ἋΙ"}, - 0x1f8c: {"ᾄ", "ᾌ", "ἌΙ"}, - 0x1f8d: {"ᾅ", "ᾍ", "ἍΙ"}, - 0x1f8e: {"ᾆ", "ᾎ", "ἎΙ"}, - 0x1f8f: {"ᾇ", "ᾏ", "ἏΙ"}, - 0x1f90: {"ᾐ", "ᾘ", "ἨΙ"}, - 0x1f91: {"ᾑ", "ᾙ", "ἩΙ"}, - 0x1f92: {"ᾒ", "ᾚ", "ἪΙ"}, - 0x1f93: {"ᾓ", "ᾛ", "ἫΙ"}, - 0x1f94: {"ᾔ", "ᾜ", "ἬΙ"}, - 0x1f95: {"ᾕ", "ᾝ", "ἭΙ"}, - 0x1f96: {"ᾖ", "ᾞ", "ἮΙ"}, - 0x1f97: {"ᾗ", "ᾟ", "ἯΙ"}, - 0x1f98: {"ᾐ", "ᾘ", "ἨΙ"}, - 0x1f99: {"ᾑ", "ᾙ", "ἩΙ"}, - 0x1f9a: {"ᾒ", "ᾚ", "ἪΙ"}, - 0x1f9b: {"ᾓ", "ᾛ", "ἫΙ"}, - 0x1f9c: {"ᾔ", "ᾜ", "ἬΙ"}, - 0x1f9d: {"ᾕ", "ᾝ", "ἭΙ"}, - 0x1f9e: {"ᾖ", "ᾞ", "ἮΙ"}, - 0x1f9f: {"ᾗ", "ᾟ", "ἯΙ"}, - 0x1fa0: {"ᾠ", "ᾨ", "ὨΙ"}, - 0x1fa1: {"ᾡ", "ᾩ", "ὩΙ"}, - 0x1fa2: {"ᾢ", "ᾪ", "ὪΙ"}, - 0x1fa3: {"ᾣ", "ᾫ", "ὫΙ"}, - 0x1fa4: {"ᾤ", "ᾬ", "ὬΙ"}, - 0x1fa5: {"ᾥ", "ᾭ", "ὭΙ"}, - 0x1fa6: {"ᾦ", "ᾮ", "ὮΙ"}, - 0x1fa7: {"ᾧ", "ᾯ", "ὯΙ"}, - 0x1fa8: {"ᾠ", "ᾨ", "ὨΙ"}, - 0x1fa9: {"ᾡ", "ᾩ", "ὩΙ"}, - 0x1faa: {"ᾢ", "ᾪ", "ὪΙ"}, - 0x1fab: {"ᾣ", "ᾫ", "ὫΙ"}, - 0x1fac: {"ᾤ", "ᾬ", "ὬΙ"}, - 0x1fad: {"ᾥ", "ᾭ", "ὭΙ"}, - 0x1fae: {"ᾦ", "ᾮ", "ὮΙ"}, - 0x1faf: {"ᾧ", "ᾯ", "ὯΙ"}, - 0x1fb3: {"ᾳ", "ᾼ", "ΑΙ"}, - 0x1fbc: {"ᾳ", "ᾼ", "ΑΙ"}, - 0x1fc3: {"ῃ", "ῌ", "ΗΙ"}, - 0x1fcc: {"ῃ", "ῌ", "ΗΙ"}, - 0x1ff3: {"ῳ", "ῼ", "ΩΙ"}, - 0x1ffc: {"ῳ", "ῼ", "ΩΙ"}, - 0x1fb2: {"ᾲ", "Ὰͅ", "ᾺΙ"}, - 0x1fb4: {"ᾴ", "Άͅ", "ΆΙ"}, - 0x1fc2: {"ῂ", "Ὴͅ", "ῊΙ"}, - 0x1fc4: {"ῄ", "Ήͅ", "ΉΙ"}, - 0x1ff2: {"ῲ", "Ὼͅ", "ῺΙ"}, - 0x1ff4: {"ῴ", "Ώͅ", "ΏΙ"}, - 0x1fb7: {"ᾷ", "ᾼ͂", "Α͂Ι"}, - 0x1fc7: {"ῇ", "ῌ͂", "Η͂Ι"}, - 0x1ff7: {"ῷ", "ῼ͂", "Ω͂Ι"}, - } - - foldMap = map[rune]struct{ simple, full, special string }{ - 0x0049: {"", "", "ı"}, - 0x00b5: {"μ", "μ", ""}, - 0x00df: {"", "ss", ""}, - 0x0130: {"", "i̇", "i"}, - 0x0149: {"", "ʼn", ""}, - 0x017f: {"s", "s", ""}, - 0x01f0: {"", "ǰ", ""}, - 0x0345: {"ι", "ι", ""}, - 0x0390: {"", "ΐ", ""}, - 0x03b0: {"", "ΰ", ""}, - 0x03c2: {"σ", "σ", ""}, - 0x03d0: {"β", "β", ""}, - 0x03d1: {"θ", "θ", ""}, - 0x03d5: {"φ", "φ", ""}, - 0x03d6: {"π", "π", ""}, - 0x03f0: {"κ", "κ", ""}, - 0x03f1: {"ρ", "ρ", ""}, - 0x03f5: {"ε", "ε", ""}, - 0x0587: {"", "եւ", ""}, - 0x13f8: {"Ᏸ", "Ᏸ", ""}, - 0x13f9: {"Ᏹ", "Ᏹ", ""}, - 0x13fa: {"Ᏺ", "Ᏺ", ""}, - 0x13fb: {"Ᏻ", "Ᏻ", ""}, - 0x13fc: {"Ᏼ", "Ᏼ", ""}, - 0x13fd: {"Ᏽ", "Ᏽ", ""}, - 0x1c80: {"в", "в", ""}, - 0x1c81: {"д", "д", ""}, - 0x1c82: {"о", "о", ""}, - 0x1c83: {"с", "с", ""}, - 0x1c84: {"т", "т", ""}, - 0x1c85: {"т", "т", ""}, - 0x1c86: {"ъ", "ъ", ""}, - 0x1c87: {"ѣ", "ѣ", ""}, - 0x1c88: {"ꙋ", "ꙋ", ""}, - 0x1e96: {"", "ẖ", ""}, - 0x1e97: {"", "ẗ", ""}, - 0x1e98: {"", "ẘ", ""}, - 0x1e99: {"", "ẙ", ""}, - 0x1e9a: {"", "aʾ", ""}, - 0x1e9b: {"ṡ", "ṡ", ""}, - 0x1e9e: {"", "ss", ""}, - 0x1f50: {"", "ὐ", ""}, - 0x1f52: {"", "ὒ", ""}, - 0x1f54: {"", "ὔ", ""}, - 0x1f56: {"", "ὖ", ""}, - 0x1f80: {"", "ἀι", ""}, - 0x1f81: {"", "ἁι", ""}, - 0x1f82: {"", "ἂι", ""}, - 0x1f83: {"", "ἃι", ""}, - 0x1f84: {"", "ἄι", ""}, - 0x1f85: {"", "ἅι", ""}, - 0x1f86: {"", "ἆι", ""}, - 0x1f87: {"", "ἇι", ""}, - 0x1f88: {"", "ἀι", ""}, - 0x1f89: {"", "ἁι", ""}, - 0x1f8a: {"", "ἂι", ""}, - 0x1f8b: {"", "ἃι", ""}, - 0x1f8c: {"", "ἄι", ""}, - 0x1f8d: {"", "ἅι", ""}, - 0x1f8e: {"", "ἆι", ""}, - 0x1f8f: {"", "ἇι", ""}, - 0x1f90: {"", "ἠι", ""}, - 0x1f91: {"", "ἡι", ""}, - 0x1f92: {"", "ἢι", ""}, - 0x1f93: {"", "ἣι", ""}, - 0x1f94: {"", "ἤι", ""}, - 0x1f95: {"", "ἥι", ""}, - 0x1f96: {"", "ἦι", ""}, - 0x1f97: {"", "ἧι", ""}, - 0x1f98: {"", "ἠι", ""}, - 0x1f99: {"", "ἡι", ""}, - 0x1f9a: {"", "ἢι", ""}, - 0x1f9b: {"", "ἣι", ""}, - 0x1f9c: {"", "ἤι", ""}, - 0x1f9d: {"", "ἥι", ""}, - 0x1f9e: {"", "ἦι", ""}, - 0x1f9f: {"", "ἧι", ""}, - 0x1fa0: {"", "ὠι", ""}, - 0x1fa1: {"", "ὡι", ""}, - 0x1fa2: {"", "ὢι", ""}, - 0x1fa3: {"", "ὣι", ""}, - 0x1fa4: {"", "ὤι", ""}, - 0x1fa5: {"", "ὥι", ""}, - 0x1fa6: {"", "ὦι", ""}, - 0x1fa7: {"", "ὧι", ""}, - 0x1fa8: {"", "ὠι", ""}, - 0x1fa9: {"", "ὡι", ""}, - 0x1faa: {"", "ὢι", ""}, - 0x1fab: {"", "ὣι", ""}, - 0x1fac: {"", "ὤι", ""}, - 0x1fad: {"", "ὥι", ""}, - 0x1fae: {"", "ὦι", ""}, - 0x1faf: {"", "ὧι", ""}, - 0x1fb2: {"", "ὰι", ""}, - 0x1fb3: {"", "αι", ""}, - 0x1fb4: {"", "άι", ""}, - 0x1fb6: {"", "ᾶ", ""}, - 0x1fb7: {"", "ᾶι", ""}, - 0x1fbc: {"", "αι", ""}, - 0x1fbe: {"ι", "ι", ""}, - 0x1fc2: {"", "ὴι", ""}, - 0x1fc3: {"", "ηι", ""}, - 0x1fc4: {"", "ήι", ""}, - 0x1fc6: {"", "ῆ", ""}, - 0x1fc7: {"", "ῆι", ""}, - 0x1fcc: {"", "ηι", ""}, - 0x1fd2: {"", "ῒ", ""}, - 0x1fd3: {"", "ΐ", ""}, - 0x1fd6: {"", "ῖ", ""}, - 0x1fd7: {"", "ῗ", ""}, - 0x1fe2: {"", "ῢ", ""}, - 0x1fe3: {"", "ΰ", ""}, - 0x1fe4: {"", "ῤ", ""}, - 0x1fe6: {"", "ῦ", ""}, - 0x1fe7: {"", "ῧ", ""}, - 0x1ff2: {"", "ὼι", ""}, - 0x1ff3: {"", "ωι", ""}, - 0x1ff4: {"", "ώι", ""}, - 0x1ff6: {"", "ῶ", ""}, - 0x1ff7: {"", "ῶι", ""}, - 0x1ffc: {"", "ωι", ""}, - 0xab70: {"Ꭰ", "Ꭰ", ""}, - 0xab71: {"Ꭱ", "Ꭱ", ""}, - 0xab72: {"Ꭲ", "Ꭲ", ""}, - 0xab73: {"Ꭳ", "Ꭳ", ""}, - 0xab74: {"Ꭴ", "Ꭴ", ""}, - 0xab75: {"Ꭵ", "Ꭵ", ""}, - 0xab76: {"Ꭶ", "Ꭶ", ""}, - 0xab77: {"Ꭷ", "Ꭷ", ""}, - 0xab78: {"Ꭸ", "Ꭸ", ""}, - 0xab79: {"Ꭹ", "Ꭹ", ""}, - 0xab7a: {"Ꭺ", "Ꭺ", ""}, - 0xab7b: {"Ꭻ", "Ꭻ", ""}, - 0xab7c: {"Ꭼ", "Ꭼ", ""}, - 0xab7d: {"Ꭽ", "Ꭽ", ""}, - 0xab7e: {"Ꭾ", "Ꭾ", ""}, - 0xab7f: {"Ꭿ", "Ꭿ", ""}, - 0xab80: {"Ꮀ", "Ꮀ", ""}, - 0xab81: {"Ꮁ", "Ꮁ", ""}, - 0xab82: {"Ꮂ", "Ꮂ", ""}, - 0xab83: {"Ꮃ", "Ꮃ", ""}, - 0xab84: {"Ꮄ", "Ꮄ", ""}, - 0xab85: {"Ꮅ", "Ꮅ", ""}, - 0xab86: {"Ꮆ", "Ꮆ", ""}, - 0xab87: {"Ꮇ", "Ꮇ", ""}, - 0xab88: {"Ꮈ", "Ꮈ", ""}, - 0xab89: {"Ꮉ", "Ꮉ", ""}, - 0xab8a: {"Ꮊ", "Ꮊ", ""}, - 0xab8b: {"Ꮋ", "Ꮋ", ""}, - 0xab8c: {"Ꮌ", "Ꮌ", ""}, - 0xab8d: {"Ꮍ", "Ꮍ", ""}, - 0xab8e: {"Ꮎ", "Ꮎ", ""}, - 0xab8f: {"Ꮏ", "Ꮏ", ""}, - 0xab90: {"Ꮐ", "Ꮐ", ""}, - 0xab91: {"Ꮑ", "Ꮑ", ""}, - 0xab92: {"Ꮒ", "Ꮒ", ""}, - 0xab93: {"Ꮓ", "Ꮓ", ""}, - 0xab94: {"Ꮔ", "Ꮔ", ""}, - 0xab95: {"Ꮕ", "Ꮕ", ""}, - 0xab96: {"Ꮖ", "Ꮖ", ""}, - 0xab97: {"Ꮗ", "Ꮗ", ""}, - 0xab98: {"Ꮘ", "Ꮘ", ""}, - 0xab99: {"Ꮙ", "Ꮙ", ""}, - 0xab9a: {"Ꮚ", "Ꮚ", ""}, - 0xab9b: {"Ꮛ", "Ꮛ", ""}, - 0xab9c: {"Ꮜ", "Ꮜ", ""}, - 0xab9d: {"Ꮝ", "Ꮝ", ""}, - 0xab9e: {"Ꮞ", "Ꮞ", ""}, - 0xab9f: {"Ꮟ", "Ꮟ", ""}, - 0xaba0: {"Ꮠ", "Ꮠ", ""}, - 0xaba1: {"Ꮡ", "Ꮡ", ""}, - 0xaba2: {"Ꮢ", "Ꮢ", ""}, - 0xaba3: {"Ꮣ", "Ꮣ", ""}, - 0xaba4: {"Ꮤ", "Ꮤ", ""}, - 0xaba5: {"Ꮥ", "Ꮥ", ""}, - 0xaba6: {"Ꮦ", "Ꮦ", ""}, - 0xaba7: {"Ꮧ", "Ꮧ", ""}, - 0xaba8: {"Ꮨ", "Ꮨ", ""}, - 0xaba9: {"Ꮩ", "Ꮩ", ""}, - 0xabaa: {"Ꮪ", "Ꮪ", ""}, - 0xabab: {"Ꮫ", "Ꮫ", ""}, - 0xabac: {"Ꮬ", "Ꮬ", ""}, - 0xabad: {"Ꮭ", "Ꮭ", ""}, - 0xabae: {"Ꮮ", "Ꮮ", ""}, - 0xabaf: {"Ꮯ", "Ꮯ", ""}, - 0xabb0: {"Ꮰ", "Ꮰ", ""}, - 0xabb1: {"Ꮱ", "Ꮱ", ""}, - 0xabb2: {"Ꮲ", "Ꮲ", ""}, - 0xabb3: {"Ꮳ", "Ꮳ", ""}, - 0xabb4: {"Ꮴ", "Ꮴ", ""}, - 0xabb5: {"Ꮵ", "Ꮵ", ""}, - 0xabb6: {"Ꮶ", "Ꮶ", ""}, - 0xabb7: {"Ꮷ", "Ꮷ", ""}, - 0xabb8: {"Ꮸ", "Ꮸ", ""}, - 0xabb9: {"Ꮹ", "Ꮹ", ""}, - 0xabba: {"Ꮺ", "Ꮺ", ""}, - 0xabbb: {"Ꮻ", "Ꮻ", ""}, - 0xabbc: {"Ꮼ", "Ꮼ", ""}, - 0xabbd: {"Ꮽ", "Ꮽ", ""}, - 0xabbe: {"Ꮾ", "Ꮾ", ""}, - 0xabbf: {"Ꮿ", "Ꮿ", ""}, - 0xfb00: {"", "ff", ""}, - 0xfb01: {"", "fi", ""}, - 0xfb02: {"", "fl", ""}, - 0xfb03: {"", "ffi", ""}, - 0xfb04: {"", "ffl", ""}, - 0xfb05: {"", "st", ""}, - 0xfb06: {"", "st", ""}, - 0xfb13: {"", "մն", ""}, - 0xfb14: {"", "մե", ""}, - 0xfb15: {"", "մի", ""}, - 0xfb16: {"", "վն", ""}, - 0xfb17: {"", "մխ", ""}, - } - - breakProp = []struct{ lo, hi rune }{ - {0x0, 0x26}, - {0x28, 0x2d}, - {0x2f, 0x2f}, - {0x3b, 0x40}, - {0x5b, 0x5e}, - {0x60, 0x60}, - {0x7b, 0xa9}, - {0xab, 0xac}, - {0xae, 0xb4}, - {0xb6, 0xb6}, - {0xb8, 0xb9}, - {0xbb, 0xbf}, - {0xd7, 0xd7}, - {0xf7, 0xf7}, - {0x2c2, 0x2c5}, - {0x2d2, 0x2d6}, - {0x2d8, 0x2df}, - {0x2e5, 0x2eb}, - {0x2ed, 0x2ed}, - {0x2ef, 0x2ff}, - {0x375, 0x375}, - {0x378, 0x379}, - {0x37e, 0x37e}, - {0x380, 0x385}, - {0x38b, 0x38b}, - {0x38d, 0x38d}, - {0x3a2, 0x3a2}, - {0x3f6, 0x3f6}, - {0x482, 0x482}, - {0x530, 0x530}, - {0x557, 0x558}, - {0x55a, 0x560}, - {0x588, 0x590}, - {0x5be, 0x5be}, - {0x5c0, 0x5c0}, - {0x5c3, 0x5c3}, - {0x5c6, 0x5c6}, - {0x5c8, 0x5cf}, - {0x5eb, 0x5ef}, - {0x5f5, 0x5ff}, - {0x606, 0x60f}, - {0x61b, 0x61b}, - {0x61d, 0x61f}, - {0x66a, 0x66a}, - {0x66c, 0x66d}, - {0x6d4, 0x6d4}, - {0x6de, 0x6de}, - {0x6e9, 0x6e9}, - {0x6fd, 0x6fe}, - {0x700, 0x70e}, - {0x74b, 0x74c}, - {0x7b2, 0x7bf}, - {0x7f6, 0x7f9}, - {0x7fb, 0x7ff}, - {0x82e, 0x83f}, - {0x85c, 0x89f}, - {0x8b5, 0x8b5}, - {0x8be, 0x8d3}, - {0x964, 0x965}, - {0x970, 0x970}, - {0x984, 0x984}, - {0x98d, 0x98e}, - {0x991, 0x992}, - {0x9a9, 0x9a9}, - {0x9b1, 0x9b1}, - {0x9b3, 0x9b5}, - {0x9ba, 0x9bb}, - {0x9c5, 0x9c6}, - {0x9c9, 0x9ca}, - {0x9cf, 0x9d6}, - {0x9d8, 0x9db}, - {0x9de, 0x9de}, - {0x9e4, 0x9e5}, - {0x9f2, 0xa00}, - {0xa04, 0xa04}, - {0xa0b, 0xa0e}, - {0xa11, 0xa12}, - {0xa29, 0xa29}, - {0xa31, 0xa31}, - {0xa34, 0xa34}, - {0xa37, 0xa37}, - {0xa3a, 0xa3b}, - {0xa3d, 0xa3d}, - {0xa43, 0xa46}, - {0xa49, 0xa4a}, - {0xa4e, 0xa50}, - {0xa52, 0xa58}, - {0xa5d, 0xa5d}, - {0xa5f, 0xa65}, - {0xa76, 0xa80}, - {0xa84, 0xa84}, - {0xa8e, 0xa8e}, - {0xa92, 0xa92}, - {0xaa9, 0xaa9}, - {0xab1, 0xab1}, - {0xab4, 0xab4}, - {0xaba, 0xabb}, - {0xac6, 0xac6}, - {0xaca, 0xaca}, - {0xace, 0xacf}, - {0xad1, 0xadf}, - {0xae4, 0xae5}, - {0xaf0, 0xaf8}, - {0xafa, 0xb00}, - {0xb04, 0xb04}, - {0xb0d, 0xb0e}, - {0xb11, 0xb12}, - {0xb29, 0xb29}, - {0xb31, 0xb31}, - {0xb34, 0xb34}, - {0xb3a, 0xb3b}, - {0xb45, 0xb46}, - {0xb49, 0xb4a}, - {0xb4e, 0xb55}, - {0xb58, 0xb5b}, - {0xb5e, 0xb5e}, - {0xb64, 0xb65}, - {0xb70, 0xb70}, - {0xb72, 0xb81}, - {0xb84, 0xb84}, - {0xb8b, 0xb8d}, - {0xb91, 0xb91}, - {0xb96, 0xb98}, - {0xb9b, 0xb9b}, - {0xb9d, 0xb9d}, - {0xba0, 0xba2}, - {0xba5, 0xba7}, - {0xbab, 0xbad}, - {0xbba, 0xbbd}, - {0xbc3, 0xbc5}, - {0xbc9, 0xbc9}, - {0xbce, 0xbcf}, - {0xbd1, 0xbd6}, - {0xbd8, 0xbe5}, - {0xbf0, 0xbff}, - {0xc04, 0xc04}, - {0xc0d, 0xc0d}, - {0xc11, 0xc11}, - {0xc29, 0xc29}, - {0xc3a, 0xc3c}, - {0xc45, 0xc45}, - {0xc49, 0xc49}, - {0xc4e, 0xc54}, - {0xc57, 0xc57}, - {0xc5b, 0xc5f}, - {0xc64, 0xc65}, - {0xc70, 0xc7f}, - {0xc84, 0xc84}, - {0xc8d, 0xc8d}, - {0xc91, 0xc91}, - {0xca9, 0xca9}, - {0xcb4, 0xcb4}, - {0xcba, 0xcbb}, - {0xcc5, 0xcc5}, - {0xcc9, 0xcc9}, - {0xcce, 0xcd4}, - {0xcd7, 0xcdd}, - {0xcdf, 0xcdf}, - {0xce4, 0xce5}, - {0xcf0, 0xcf0}, - {0xcf3, 0xd00}, - {0xd04, 0xd04}, - {0xd0d, 0xd0d}, - {0xd11, 0xd11}, - {0xd3b, 0xd3c}, - {0xd45, 0xd45}, - {0xd49, 0xd49}, - {0xd4f, 0xd53}, - {0xd58, 0xd5e}, - {0xd64, 0xd65}, - {0xd70, 0xd79}, - {0xd80, 0xd81}, - {0xd84, 0xd84}, - {0xd97, 0xd99}, - {0xdb2, 0xdb2}, - {0xdbc, 0xdbc}, - {0xdbe, 0xdbf}, - {0xdc7, 0xdc9}, - {0xdcb, 0xdce}, - {0xdd5, 0xdd5}, - {0xdd7, 0xdd7}, - {0xde0, 0xde5}, - {0xdf0, 0xdf1}, - {0xdf4, 0xe30}, - {0xe32, 0xe33}, - {0xe3b, 0xe46}, - {0xe4f, 0xe4f}, - {0xe5a, 0xeb0}, - {0xeb2, 0xeb3}, - {0xeba, 0xeba}, - {0xebd, 0xec7}, - {0xece, 0xecf}, - {0xeda, 0xeff}, - {0xf01, 0xf17}, - {0xf1a, 0xf1f}, - {0xf2a, 0xf34}, - {0xf36, 0xf36}, - {0xf38, 0xf38}, - {0xf3a, 0xf3d}, - {0xf48, 0xf48}, - {0xf6d, 0xf70}, - {0xf85, 0xf85}, - {0xf98, 0xf98}, - {0xfbd, 0xfc5}, - {0xfc7, 0x102a}, - {0x103f, 0x103f}, - {0x104a, 0x1055}, - {0x105a, 0x105d}, - {0x1061, 0x1061}, - {0x1065, 0x1066}, - {0x106e, 0x1070}, - {0x1075, 0x1081}, - {0x108e, 0x108e}, - {0x109e, 0x109f}, - {0x10c6, 0x10c6}, - {0x10c8, 0x10cc}, - {0x10ce, 0x10cf}, - {0x10fb, 0x10fb}, - {0x1249, 0x1249}, - {0x124e, 0x124f}, - {0x1257, 0x1257}, - {0x1259, 0x1259}, - {0x125e, 0x125f}, - {0x1289, 0x1289}, - {0x128e, 0x128f}, - {0x12b1, 0x12b1}, - {0x12b6, 0x12b7}, - {0x12bf, 0x12bf}, - {0x12c1, 0x12c1}, - {0x12c6, 0x12c7}, - {0x12d7, 0x12d7}, - {0x1311, 0x1311}, - {0x1316, 0x1317}, - {0x135b, 0x135c}, - {0x1360, 0x137f}, - {0x1390, 0x139f}, - {0x13f6, 0x13f7}, - {0x13fe, 0x1400}, - {0x166d, 0x166e}, - {0x1680, 0x1680}, - {0x169b, 0x169f}, - {0x16eb, 0x16ed}, - {0x16f9, 0x16ff}, - {0x170d, 0x170d}, - {0x1715, 0x171f}, - {0x1735, 0x173f}, - {0x1754, 0x175f}, - {0x176d, 0x176d}, - {0x1771, 0x1771}, - {0x1774, 0x17b3}, - {0x17d4, 0x17dc}, - {0x17de, 0x17df}, - {0x17ea, 0x180a}, - {0x180f, 0x180f}, - {0x181a, 0x181f}, - {0x1878, 0x187f}, - {0x18ab, 0x18af}, - {0x18f6, 0x18ff}, - {0x191f, 0x191f}, - {0x192c, 0x192f}, - {0x193c, 0x1945}, - {0x1950, 0x19cf}, - {0x19da, 0x19ff}, - {0x1a1c, 0x1a54}, - {0x1a5f, 0x1a5f}, - {0x1a7d, 0x1a7e}, - {0x1a8a, 0x1a8f}, - {0x1a9a, 0x1aaf}, - {0x1abf, 0x1aff}, - {0x1b4c, 0x1b4f}, - {0x1b5a, 0x1b6a}, - {0x1b74, 0x1b7f}, - {0x1bf4, 0x1bff}, - {0x1c38, 0x1c3f}, - {0x1c4a, 0x1c4c}, - {0x1c7e, 0x1c7f}, - {0x1c89, 0x1ccf}, - {0x1cd3, 0x1cd3}, - {0x1cf7, 0x1cf7}, - {0x1cfa, 0x1cff}, - {0x1df6, 0x1dfa}, - {0x1f16, 0x1f17}, - {0x1f1e, 0x1f1f}, - {0x1f46, 0x1f47}, - {0x1f4e, 0x1f4f}, - {0x1f58, 0x1f58}, - {0x1f5a, 0x1f5a}, - {0x1f5c, 0x1f5c}, - {0x1f5e, 0x1f5e}, - {0x1f7e, 0x1f7f}, - {0x1fb5, 0x1fb5}, - {0x1fbd, 0x1fbd}, - {0x1fbf, 0x1fc1}, - {0x1fc5, 0x1fc5}, - {0x1fcd, 0x1fcf}, - {0x1fd4, 0x1fd5}, - {0x1fdc, 0x1fdf}, - {0x1fed, 0x1ff1}, - {0x1ff5, 0x1ff5}, - {0x1ffd, 0x200b}, - {0x2010, 0x2017}, - {0x201a, 0x2023}, - {0x2025, 0x2026}, - {0x2028, 0x2029}, - {0x2030, 0x203e}, - {0x2041, 0x2053}, - {0x2055, 0x205f}, - {0x2065, 0x2065}, - {0x2070, 0x2070}, - {0x2072, 0x207e}, - {0x2080, 0x208f}, - {0x209d, 0x20cf}, - {0x20f1, 0x2101}, - {0x2103, 0x2106}, - {0x2108, 0x2109}, - {0x2114, 0x2114}, - {0x2116, 0x2118}, - {0x211e, 0x2123}, - {0x2125, 0x2125}, - {0x2127, 0x2127}, - {0x2129, 0x2129}, - {0x212e, 0x212e}, - {0x213a, 0x213b}, - {0x2140, 0x2144}, - {0x214a, 0x214d}, - {0x214f, 0x215f}, - {0x2189, 0x24b5}, - {0x24ea, 0x2bff}, - {0x2c2f, 0x2c2f}, - {0x2c5f, 0x2c5f}, - {0x2ce5, 0x2cea}, - {0x2cf4, 0x2cff}, - {0x2d26, 0x2d26}, - {0x2d28, 0x2d2c}, - {0x2d2e, 0x2d2f}, - {0x2d68, 0x2d6e}, - {0x2d70, 0x2d7e}, - {0x2d97, 0x2d9f}, - {0x2da7, 0x2da7}, - {0x2daf, 0x2daf}, - {0x2db7, 0x2db7}, - {0x2dbf, 0x2dbf}, - {0x2dc7, 0x2dc7}, - {0x2dcf, 0x2dcf}, - {0x2dd7, 0x2dd7}, - {0x2ddf, 0x2ddf}, - {0x2e00, 0x2e2e}, - {0x2e30, 0x3004}, - {0x3006, 0x3029}, - {0x3030, 0x303a}, - {0x303d, 0x3098}, - {0x309b, 0x3104}, - {0x312e, 0x3130}, - {0x318f, 0x319f}, - {0x31bb, 0x9fff}, - {0xa48d, 0xa4cf}, - {0xa4fe, 0xa4ff}, - {0xa60d, 0xa60f}, - {0xa62c, 0xa63f}, - {0xa673, 0xa673}, - {0xa67e, 0xa67e}, - {0xa6f2, 0xa716}, - {0xa720, 0xa721}, - {0xa789, 0xa78a}, - {0xa7af, 0xa7af}, - {0xa7b8, 0xa7f6}, - {0xa828, 0xa83f}, - {0xa874, 0xa87f}, - {0xa8c6, 0xa8cf}, - {0xa8da, 0xa8df}, - {0xa8f8, 0xa8fa}, - {0xa8fc, 0xa8fc}, - {0xa8fe, 0xa8ff}, - {0xa92e, 0xa92f}, - {0xa954, 0xa95f}, - {0xa97d, 0xa97f}, - {0xa9c1, 0xa9ce}, - {0xa9da, 0xa9e4}, - {0xa9e6, 0xa9ef}, - {0xa9fa, 0xa9ff}, - {0xaa37, 0xaa3f}, - {0xaa4e, 0xaa4f}, - {0xaa5a, 0xaa7a}, - {0xaa7e, 0xaaaf}, - {0xaab1, 0xaab1}, - {0xaab5, 0xaab6}, - {0xaab9, 0xaabd}, - {0xaac0, 0xaac0}, - {0xaac2, 0xaadf}, - {0xaaf0, 0xaaf1}, - {0xaaf7, 0xab00}, - {0xab07, 0xab08}, - {0xab0f, 0xab10}, - {0xab17, 0xab1f}, - {0xab27, 0xab27}, - {0xab2f, 0xab2f}, - {0xab5b, 0xab5b}, - {0xab66, 0xab6f}, - {0xabeb, 0xabeb}, - {0xabee, 0xabef}, - {0xabfa, 0xabff}, - {0xd7a4, 0xd7af}, - {0xd7c7, 0xd7ca}, - {0xd7fc, 0xfaff}, - {0xfb07, 0xfb12}, - {0xfb18, 0xfb1c}, - {0xfb29, 0xfb29}, - {0xfb37, 0xfb37}, - {0xfb3d, 0xfb3d}, - {0xfb3f, 0xfb3f}, - {0xfb42, 0xfb42}, - {0xfb45, 0xfb45}, - {0xfbb2, 0xfbd2}, - {0xfd3e, 0xfd4f}, - {0xfd90, 0xfd91}, - {0xfdc8, 0xfdef}, - {0xfdfc, 0xfdff}, - {0xfe10, 0xfe12}, - {0xfe14, 0xfe1f}, - {0xfe30, 0xfe32}, - {0xfe35, 0xfe4c}, - {0xfe50, 0xfe51}, - {0xfe53, 0xfe54}, - {0xfe56, 0xfe6f}, - {0xfe75, 0xfe75}, - {0xfefd, 0xfefe}, - {0xff00, 0xff06}, - {0xff08, 0xff0d}, - {0xff0f, 0xff19}, - {0xff1b, 0xff20}, - {0xff3b, 0xff3e}, - {0xff40, 0xff40}, - {0xff5b, 0xff9d}, - {0xffbf, 0xffc1}, - {0xffc8, 0xffc9}, - {0xffd0, 0xffd1}, - {0xffd8, 0xffd9}, - {0xffdd, 0xfff8}, - {0xfffc, 0xffff}, - {0x1000c, 0x1000c}, - {0x10027, 0x10027}, - {0x1003b, 0x1003b}, - {0x1003e, 0x1003e}, - {0x1004e, 0x1004f}, - {0x1005e, 0x1007f}, - {0x100fb, 0x1013f}, - {0x10175, 0x101fc}, - {0x101fe, 0x1027f}, - {0x1029d, 0x1029f}, - {0x102d1, 0x102df}, - {0x102e1, 0x102ff}, - {0x10320, 0x1032f}, - {0x1034b, 0x1034f}, - {0x1037b, 0x1037f}, - {0x1039e, 0x1039f}, - {0x103c4, 0x103c7}, - {0x103d0, 0x103d0}, - {0x103d6, 0x103ff}, - {0x1049e, 0x1049f}, - {0x104aa, 0x104af}, - {0x104d4, 0x104d7}, - {0x104fc, 0x104ff}, - {0x10528, 0x1052f}, - {0x10564, 0x105ff}, - {0x10737, 0x1073f}, - {0x10756, 0x1075f}, - {0x10768, 0x107ff}, - {0x10806, 0x10807}, - {0x10809, 0x10809}, - {0x10836, 0x10836}, - {0x10839, 0x1083b}, - {0x1083d, 0x1083e}, - {0x10856, 0x1085f}, - {0x10877, 0x1087f}, - {0x1089f, 0x108df}, - {0x108f3, 0x108f3}, - {0x108f6, 0x108ff}, - {0x10916, 0x1091f}, - {0x1093a, 0x1097f}, - {0x109b8, 0x109bd}, - {0x109c0, 0x109ff}, - {0x10a04, 0x10a04}, - {0x10a07, 0x10a0b}, - {0x10a14, 0x10a14}, - {0x10a18, 0x10a18}, - {0x10a34, 0x10a37}, - {0x10a3b, 0x10a3e}, - {0x10a40, 0x10a5f}, - {0x10a7d, 0x10a7f}, - {0x10a9d, 0x10abf}, - {0x10ac8, 0x10ac8}, - {0x10ae7, 0x10aff}, - {0x10b36, 0x10b3f}, - {0x10b56, 0x10b5f}, - {0x10b73, 0x10b7f}, - {0x10b92, 0x10bff}, - {0x10c49, 0x10c7f}, - {0x10cb3, 0x10cbf}, - {0x10cf3, 0x10fff}, - {0x11047, 0x11065}, - {0x11070, 0x1107e}, - {0x110bb, 0x110bc}, - {0x110be, 0x110cf}, - {0x110e9, 0x110ef}, - {0x110fa, 0x110ff}, - {0x11135, 0x11135}, - {0x11140, 0x1114f}, - {0x11174, 0x11175}, - {0x11177, 0x1117f}, - {0x111c5, 0x111c9}, - {0x111cd, 0x111cf}, - {0x111db, 0x111db}, - {0x111dd, 0x111ff}, - {0x11212, 0x11212}, - {0x11238, 0x1123d}, - {0x1123f, 0x1127f}, - {0x11287, 0x11287}, - {0x11289, 0x11289}, - {0x1128e, 0x1128e}, - {0x1129e, 0x1129e}, - {0x112a9, 0x112af}, - {0x112eb, 0x112ef}, - {0x112fa, 0x112ff}, - {0x11304, 0x11304}, - {0x1130d, 0x1130e}, - {0x11311, 0x11312}, - {0x11329, 0x11329}, - {0x11331, 0x11331}, - {0x11334, 0x11334}, - {0x1133a, 0x1133b}, - {0x11345, 0x11346}, - {0x11349, 0x1134a}, - {0x1134e, 0x1134f}, - {0x11351, 0x11356}, - {0x11358, 0x1135c}, - {0x11364, 0x11365}, - {0x1136d, 0x1136f}, - {0x11375, 0x113ff}, - {0x1144b, 0x1144f}, - {0x1145a, 0x1147f}, - {0x114c6, 0x114c6}, - {0x114c8, 0x114cf}, - {0x114da, 0x1157f}, - {0x115b6, 0x115b7}, - {0x115c1, 0x115d7}, - {0x115de, 0x115ff}, - {0x11641, 0x11643}, - {0x11645, 0x1164f}, - {0x1165a, 0x1167f}, - {0x116b8, 0x116bf}, - {0x116ca, 0x1171c}, - {0x1172c, 0x1172f}, - {0x1173a, 0x1189f}, - {0x118ea, 0x118fe}, - {0x11900, 0x11abf}, - {0x11af9, 0x11bff}, - {0x11c09, 0x11c09}, - {0x11c37, 0x11c37}, - {0x11c41, 0x11c4f}, - {0x11c5a, 0x11c71}, - {0x11c90, 0x11c91}, - {0x11ca8, 0x11ca8}, - {0x11cb7, 0x11fff}, - {0x1239a, 0x123ff}, - {0x1246f, 0x1247f}, - {0x12544, 0x12fff}, - {0x1342f, 0x143ff}, - {0x14647, 0x167ff}, - {0x16a39, 0x16a3f}, - {0x16a5f, 0x16a5f}, - {0x16a6a, 0x16acf}, - {0x16aee, 0x16aef}, - {0x16af5, 0x16aff}, - {0x16b37, 0x16b3f}, - {0x16b44, 0x16b4f}, - {0x16b5a, 0x16b62}, - {0x16b78, 0x16b7c}, - {0x16b90, 0x16eff}, - {0x16f45, 0x16f4f}, - {0x16f7f, 0x16f8e}, - {0x16fa0, 0x16fdf}, - {0x16fe1, 0x1bbff}, - {0x1bc6b, 0x1bc6f}, - {0x1bc7d, 0x1bc7f}, - {0x1bc89, 0x1bc8f}, - {0x1bc9a, 0x1bc9c}, - {0x1bc9f, 0x1bc9f}, - {0x1bca4, 0x1d164}, - {0x1d16a, 0x1d16c}, - {0x1d183, 0x1d184}, - {0x1d18c, 0x1d1a9}, - {0x1d1ae, 0x1d241}, - {0x1d245, 0x1d3ff}, - {0x1d455, 0x1d455}, - {0x1d49d, 0x1d49d}, - {0x1d4a0, 0x1d4a1}, - {0x1d4a3, 0x1d4a4}, - {0x1d4a7, 0x1d4a8}, - {0x1d4ad, 0x1d4ad}, - {0x1d4ba, 0x1d4ba}, - {0x1d4bc, 0x1d4bc}, - {0x1d4c4, 0x1d4c4}, - {0x1d506, 0x1d506}, - {0x1d50b, 0x1d50c}, - {0x1d515, 0x1d515}, - {0x1d51d, 0x1d51d}, - {0x1d53a, 0x1d53a}, - {0x1d53f, 0x1d53f}, - {0x1d545, 0x1d545}, - {0x1d547, 0x1d549}, - {0x1d551, 0x1d551}, - {0x1d6a6, 0x1d6a7}, - {0x1d6c1, 0x1d6c1}, - {0x1d6db, 0x1d6db}, - {0x1d6fb, 0x1d6fb}, - {0x1d715, 0x1d715}, - {0x1d735, 0x1d735}, - {0x1d74f, 0x1d74f}, - {0x1d76f, 0x1d76f}, - {0x1d789, 0x1d789}, - {0x1d7a9, 0x1d7a9}, - {0x1d7c3, 0x1d7c3}, - {0x1d7cc, 0x1d7cd}, - {0x1d800, 0x1d9ff}, - {0x1da37, 0x1da3a}, - {0x1da6d, 0x1da74}, - {0x1da76, 0x1da83}, - {0x1da85, 0x1da9a}, - {0x1daa0, 0x1daa0}, - {0x1dab0, 0x1dfff}, - {0x1e007, 0x1e007}, - {0x1e019, 0x1e01a}, - {0x1e022, 0x1e022}, - {0x1e025, 0x1e025}, - {0x1e02b, 0x1e7ff}, - {0x1e8c5, 0x1e8cf}, - {0x1e8d7, 0x1e8ff}, - {0x1e94b, 0x1e94f}, - {0x1e95a, 0x1edff}, - {0x1ee04, 0x1ee04}, - {0x1ee20, 0x1ee20}, - {0x1ee23, 0x1ee23}, - {0x1ee25, 0x1ee26}, - {0x1ee28, 0x1ee28}, - {0x1ee33, 0x1ee33}, - {0x1ee38, 0x1ee38}, - {0x1ee3a, 0x1ee3a}, - {0x1ee3c, 0x1ee41}, - {0x1ee43, 0x1ee46}, - {0x1ee48, 0x1ee48}, - {0x1ee4a, 0x1ee4a}, - {0x1ee4c, 0x1ee4c}, - {0x1ee50, 0x1ee50}, - {0x1ee53, 0x1ee53}, - {0x1ee55, 0x1ee56}, - {0x1ee58, 0x1ee58}, - {0x1ee5a, 0x1ee5a}, - {0x1ee5c, 0x1ee5c}, - {0x1ee5e, 0x1ee5e}, - {0x1ee60, 0x1ee60}, - {0x1ee63, 0x1ee63}, - {0x1ee65, 0x1ee66}, - {0x1ee6b, 0x1ee6b}, - {0x1ee73, 0x1ee73}, - {0x1ee78, 0x1ee78}, - {0x1ee7d, 0x1ee7d}, - {0x1ee7f, 0x1ee7f}, - {0x1ee8a, 0x1ee8a}, - {0x1ee9c, 0x1eea0}, - {0x1eea4, 0x1eea4}, - {0x1eeaa, 0x1eeaa}, - {0x1eebc, 0x1f12f}, - {0x1f14a, 0x1f14f}, - {0x1f16a, 0x1f16f}, - {0x1f18a, 0x1ffff}, - } - - breakTest = []string{ - "AA", - "ÄA", - "Aa\u2060", - "Äa\u2060", - "Aa|:", - "Äa|:", - "Aa|'", - "Äa|'", - "Aa|'\u2060", - "Äa|'\u2060", - "Aa|,", - "Äa|,", - "a\u2060A", - "a\u2060̈A", - "a\u2060a\u2060", - "a\u2060̈a\u2060", - "a\u2060a|:", - "a\u2060̈a|:", - "a\u2060a|'", - "a\u2060̈a|'", - "a\u2060a|'\u2060", - "a\u2060̈a|'\u2060", - "a\u2060a|,", - "a\u2060̈a|,", - "a:A", - "a:̈A", - "a:a\u2060", - "a:̈a\u2060", - "a:a|:", - "a:̈a|:", - "a:a|'", - "a:̈a|'", - "a:a|'\u2060", - "a:̈a|'\u2060", - "a:a|,", - "a:̈a|,", - "a'A", - "a'̈A", - "a'a\u2060", - "a'̈a\u2060", - "a'a|:", - "a'̈a|:", - "a'a|'", - "a'̈a|'", - "a'a|'\u2060", - "a'̈a|'\u2060", - "a'a|,", - "a'̈a|,", - "a'\u2060A", - "a'\u2060̈A", - "a'\u2060a\u2060", - "a'\u2060̈a\u2060", - "a'\u2060a|:", - "a'\u2060̈a|:", - "a'\u2060a|'", - "a'\u2060̈a|'", - "a'\u2060a|'\u2060", - "a'\u2060̈a|'\u2060", - "a'\u2060a|,", - "a'\u2060̈a|,", - "a|,|A", - "a|,̈|A", - "a|,|a\u2060", - "a|,̈|a\u2060", - "a|,|a|:", - "a|,̈|a|:", - "a|,|a|'", - "a|,̈|a|'", - "a|,|a|'\u2060", - "a|,̈|a|'\u2060", - "a|,|a|,", - "a|,̈|a|,", - "AAA", - "A:A", - "A|:|:|A", - "A00A", - "A__A", - "a|🇦🇧|🇨|b", - "a|🇦🇧\u200d|🇨|b", - "a|🇦\u200d🇧|🇨|b", - "a|🇦🇧|🇨🇩|b", - "ä\u200d̈b", - "1_a|:|:|a", - "1_a|:|.|a", - "1_a|:|,|a", - "1_a|.|:|a", - "1_a|.|.|a", - "1_a|.|,|a", - "1_a|,|:|a", - "1_a|,|.|a", - "1_a|,|,|a", - "a_a|:|:|1", - "a|:|:|a", - "a_1|:|:|a", - "a_a|:|:|a", - "a_a|:|.|1", - "a|:|.|a", - "a_1|:|.|a", - "a_a|:|.|a", - "a_a|:|,|1", - "a|:|,|a", - "a_1|:|,|a", - "a_a|:|,|a", - "a_a|.|:|1", - "a|.|:|a", - "a_1|.|:|a", - "a_a|.|:|a", - "a_a|.|.|1", - "a|.|.|a", - "a_1|.|.|a", - "a_a|.|.|a", - "a_a|.|,|1", - "a|.|,|a", - "a_1|.|,|a", - "a_a|.|,|a", - "a_a|,|:|1", - "a|,|:|a", - "a_1|,|:|a", - "a_a|,|:|a", - "a_a|,|.|1", - "a|,|.|a", - "a_1|,|.|a", - "a_a|,|.|a", - "a_a|,|,|1", - "a|,|,|a", - "a_1|,|,|a", - "a_a|,|,|a", - } -) diff --git a/vendor/golang.org/x/text/cases/trieval.go b/vendor/golang.org/x/text/cases/trieval.go deleted file mode 100644 index fb221f84..00000000 --- a/vendor/golang.org/x/text/cases/trieval.go +++ /dev/null @@ -1,215 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package cases - -// This file contains definitions for interpreting the trie value of the case -// trie generated by "go run gen*.go". It is shared by both the generator -// program and the resultant package. Sharing is achieved by the generator -// copying gen_trieval.go to trieval.go and changing what's above this comment. - -// info holds case information for a single rune. It is the value returned -// by a trie lookup. Most mapping information can be stored in a single 16-bit -// value. If not, for example when a rune is mapped to multiple runes, the value -// stores some basic case data and an index into an array with additional data. -// -// The per-rune values have the following format: -// -// if (exception) { -// 15..5 unsigned exception index -// 4 unused -// } else { -// 15..8 XOR pattern or index to XOR pattern for case mapping -// Only 13..8 are used for XOR patterns. -// 7 inverseFold (fold to upper, not to lower) -// 6 index: interpret the XOR pattern as an index -// or isMid if case mode is cIgnorableUncased. -// 5..4 CCC: zero (normal or break), above or other -// } -// 3 exception: interpret this value as an exception index -// (TODO: is this bit necessary? Probably implied from case mode.) -// 2..0 case mode -// -// For the non-exceptional cases, a rune must be either uncased, lowercase or -// uppercase. If the rune is cased, the XOR pattern maps either a lowercase -// rune to uppercase or an uppercase rune to lowercase (applied to the 10 -// least-significant bits of the rune). -// -// See the definitions below for a more detailed description of the various -// bits. -type info uint16 - -const ( - casedMask = 0x0003 - fullCasedMask = 0x0007 - ignorableMask = 0x0006 - ignorableValue = 0x0004 - - inverseFoldBit = 1 << 7 - isMidBit = 1 << 6 - - exceptionBit = 1 << 3 - exceptionShift = 5 - numExceptionBits = 11 - - xorIndexBit = 1 << 6 - xorShift = 8 - - // There is no mapping if all xor bits and the exception bit are zero. - hasMappingMask = 0xff80 | exceptionBit -) - -// The case mode bits encodes the case type of a rune. This includes uncased, -// title, upper and lower case and case ignorable. (For a definition of these -// terms see Chapter 3 of The Unicode Standard Core Specification.) In some rare -// cases, a rune can be both cased and case-ignorable. This is encoded by -// cIgnorableCased. A rune of this type is always lower case. Some runes are -// cased while not having a mapping. -// -// A common pattern for scripts in the Unicode standard is for upper and lower -// case runes to alternate for increasing rune values (e.g. the accented Latin -// ranges starting from U+0100 and U+1E00 among others and some Cyrillic -// characters). We use this property by defining a cXORCase mode, where the case -// mode (always upper or lower case) is derived from the rune value. As the XOR -// pattern for case mappings is often identical for successive runes, using -// cXORCase can result in large series of identical trie values. This, in turn, -// allows us to better compress the trie blocks. -const ( - cUncased info = iota // 000 - cTitle // 001 - cLower // 010 - cUpper // 011 - cIgnorableUncased // 100 - cIgnorableCased // 101 // lower case if mappings exist - cXORCase // 11x // case is cLower | ((rune&1) ^ x) - - maxCaseMode = cUpper -) - -func (c info) isCased() bool { - return c&casedMask != 0 -} - -func (c info) isCaseIgnorable() bool { - return c&ignorableMask == ignorableValue -} - -func (c info) isNotCasedAndNotCaseIgnorable() bool { - return c&fullCasedMask == 0 -} - -func (c info) isCaseIgnorableAndNotCased() bool { - return c&fullCasedMask == cIgnorableUncased -} - -func (c info) isMid() bool { - return c&(fullCasedMask|isMidBit) == isMidBit|cIgnorableUncased -} - -// The case mapping implementation will need to know about various Canonical -// Combining Class (CCC) values. We encode two of these in the trie value: -// cccZero (0) and cccAbove (230). If the value is cccOther, it means that -// CCC(r) > 0, but not 230. A value of cccBreak means that CCC(r) == 0 and that -// the rune also has the break category Break (see below). -const ( - cccBreak info = iota << 4 - cccZero - cccAbove - cccOther - - cccMask = cccBreak | cccZero | cccAbove | cccOther -) - -const ( - starter = 0 - above = 230 - iotaSubscript = 240 -) - -// The exceptions slice holds data that does not fit in a normal info entry. -// The entry is pointed to by the exception index in an entry. It has the -// following format: -// -// Header -// byte 0: -// 7..6 unused -// 5..4 CCC type (same bits as entry) -// 3 unused -// 2..0 length of fold -// -// byte 1: -// 7..6 unused -// 5..3 length of 1st mapping of case type -// 2..0 length of 2nd mapping of case type -// -// case 1st 2nd -// lower -> upper, title -// upper -> lower, title -// title -> lower, upper -// -// Lengths with the value 0x7 indicate no value and implies no change. -// A length of 0 indicates a mapping to zero-length string. -// -// Body bytes: -// case folding bytes -// lowercase mapping bytes -// uppercase mapping bytes -// titlecase mapping bytes -// closure mapping bytes (for NFKC_Casefold). (TODO) -// -// Fallbacks: -// missing fold -> lower -// missing title -> upper -// all missing -> original rune -// -// exceptions starts with a dummy byte to enforce that there is no zero index -// value. -const ( - lengthMask = 0x07 - lengthBits = 3 - noChange = 0 -) - -// References to generated trie. - -var trie = newCaseTrie(0) - -var sparse = sparseBlocks{ - values: sparseValues[:], - offsets: sparseOffsets[:], -} - -// Sparse block lookup code. - -// valueRange is an entry in a sparse block. -type valueRange struct { - value uint16 - lo, hi byte -} - -type sparseBlocks struct { - values []valueRange - offsets []uint16 -} - -// lookup returns the value from values block n for byte b using binary search. -func (s *sparseBlocks) lookup(n uint32, b byte) uint16 { - lo := s.offsets[n] - hi := s.offsets[n+1] - for lo < hi { - m := lo + (hi-lo)/2 - r := s.values[m] - if r.lo <= b && b <= r.hi { - return r.value - } - if b < r.lo { - hi = m - } else { - lo = m + 1 - } - } - return 0 -} - -// lastRuneForTesting is the last rune used for testing. Everything after this -// is boring. -const lastRuneForTesting = rune(0x1FFFF) diff --git a/vendor/golang.org/x/text/cmd/gotext/common.go b/vendor/golang.org/x/text/cmd/gotext/common.go deleted file mode 100644 index 1036592f..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/common.go +++ /dev/null @@ -1,46 +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 main - -import ( - "fmt" - "go/build" - "go/parser" - - "golang.org/x/tools/go/loader" -) - -const ( - extractFile = "extracted.gotext.json" - outFile = "out.gotext.json" - gotextSuffix = ".gotext.json" -) - -// NOTE: The command line tool already prefixes with "gotext:". -var ( - wrap = func(err error, msg string) error { - return fmt.Errorf("%s: %v", msg, err) - } - errorf = fmt.Errorf -) - -// TODO: still used. Remove when possible. -func loadPackages(conf *loader.Config, args []string) (*loader.Program, error) { - if len(args) == 0 { - args = []string{"."} - } - - conf.Build = &build.Default - conf.ParserMode = parser.ParseComments - - // Use the initial packages from the command line. - args, err := conf.FromArgs(args, false) - if err != nil { - return nil, wrap(err, "loading packages failed") - } - - // Load, parse and type-check the whole program. - return conf.Load() -} diff --git a/vendor/golang.org/x/text/cmd/gotext/doc.go b/vendor/golang.org/x/text/cmd/gotext/doc.go deleted file mode 100644 index 2a274f76..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/doc.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by go generate. DO NOT EDIT. - -// gotext is a tool for managing text in Go source code. -// -// Usage: -// -// gotext command [arguments] -// -// The commands are: -// -// extract extracts strings to be translated from code -// rewrite rewrites fmt functions to use a message Printer -// generate generates code to insert translated messages -// -// Use "go help [command]" for more information about a command. -// -// Additional help topics: -// -// -// Use "gotext help [topic]" for more information about that topic. -// -// -// Extracts strings to be translated from code -// -// Usage: -// -// go extract <package>* -// -// -// -// -// Rewrites fmt functions to use a message Printer -// -// Usage: -// -// go rewrite <package> -// -// rewrite is typically done once for a project. It rewrites all usages of -// fmt to use x/text's message package whenever a message.Printer is in scope. -// It rewrites Print and Println calls with constant strings to the equivalent -// using Printf to allow translators to reorder arguments. -// -// -// Generates code to insert translated messages -// -// Usage: -// -// go generate <package> -// -// -// -// -package main diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/catalog.go b/vendor/golang.org/x/text/cmd/gotext/examples/extract/catalog.go deleted file mode 100644 index 4c2303fd..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/catalog.go +++ /dev/null @@ -1,76 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package main - -import ( - "golang.org/x/text/language" - "golang.org/x/text/message" - "golang.org/x/text/message/catalog" -) - -type dictionary struct { - index []uint32 - data string -} - -func (d *dictionary) Lookup(key string) (data string, ok bool) { - p := messageKeyToIndex[key] - start, end := d.index[p], d.index[p+1] - if start == end { - return "", false - } - return d.data[start:end], true -} - -func init() { - dict := map[string]catalog.Dictionary{ - "de": &dictionary{index: deIndex, data: deData}, - "en_US": &dictionary{index: en_USIndex, data: en_USData}, - "zh": &dictionary{index: zhIndex, data: zhData}, - } - fallback := language.MustParse("en-US") - cat, err := catalog.NewFromMap(dict, catalog.Fallback(fallback)) - if err != nil { - panic(err) - } - message.DefaultCatalog = cat -} - -var messageKeyToIndex = map[string]int{ - "%.2[1]f miles traveled (%[1]f)": 6, - "%[1]s is visiting %[3]s!\n": 3, - "%d more files remaining!": 4, - "%s is out of order!": 5, - "%s is visiting %s!\n": 2, - "Hello %s!\n": 1, - "Hello world!\n": 0, -} - -var deIndex = []uint32{ // 8 elements - 0x00000000, 0x0000000d, 0x0000001b, 0x00000031, - 0x00000047, 0x00000066, 0x00000066, 0x00000066, -} // Size: 56 bytes - -const deData string = "" + // Size: 102 bytes - "\x02Hallo Welt!\x0a\x02Hallo %[1]s!\x0a\x02%[1]s besucht %[2]s!\x0a\x02%" + - "[1]s besucht %[3]s!\x0a\x02Noch %[1]d Bestände zu gehen!" - -var en_USIndex = []uint32{ // 8 elements - 0x00000000, 0x0000000e, 0x0000001c, 0x00000036, - 0x00000050, 0x00000093, 0x000000aa, 0x000000c9, -} // Size: 56 bytes - -const en_USData string = "" + // Size: 201 bytes - "\x02Hello world!\x0a\x02Hello %[1]s!\x0a\x02%[1]s is visiting %[2]s!\x0a" + - "\x02%[1]s is visiting %[3]s!\x0a\x04\x01\x81\x01\x00\x02\x14\x02One file" + - " remaining!\x00&\x02There are %[1]d more files remaining!\x02%[1]s is ou" + - "t of order!\x02%.2[1]f miles traveled (%[1]f)" - -var zhIndex = []uint32{ // 8 elements - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, -} // Size: 56 bytes - -const zhData string = "" - -// Total table size 471 bytes (0KiB); checksum: 7746955 diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/messages.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/messages.gotext.json deleted file mode 100755 index 221990f2..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/messages.gotext.json +++ /dev/null @@ -1,186 +0,0 @@ -{ - "language": "de", - "messages": [ - { - "id": "Hello world!\n", - "key": "Hello world!\n", - "message": "Hello world!\n", - "translation": "Hallo Welt!\n", - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:27:10" - }, - { - "id": "Hello {City}!\n", - "key": "Hello %s!\n", - "message": "Hello {City}!\n", - "translation": "Hallo {City}!\n", - "placeholders": [ - { - "id": "City", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "city" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:31:10" - }, - { - "id": "Hello {Town}!\n", - "key": "Hello %s!\n", - "message": "Hello {Town}!\n", - "translation": "Hallo {Town}!\n", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "town", - "comment": "Town" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:35:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "{Person} besucht {Place}!\n", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "person", - "comment": "The person of matter." - }, - { - "id": "Place", - "string": "%[2]s", - "type": "string", - "underlyingType": "string", - "argNum": 2, - "expr": "place", - "comment": "Place the person is visiting." - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:40:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "{Person} besucht {Place}!\n", - "comment": "Person visiting a place.", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "pp.Person" - }, - { - "id": "Place", - "string": "%[3]s", - "type": "string", - "underlyingType": "string", - "argNum": 3, - "expr": "pp.Place", - "comment": "Place the person is visiting." - }, - { - "id": "Extra", - "string": "%[2]v", - "type": "int", - "underlyingType": "int", - "argNum": 2, - "expr": "pp.extra" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:55:10" - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "Noch {N} Bestände zu gehen!", - "placeholders": [ - { - "id": "N", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "n" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:67:10" - }, - { - "id": "Use the following code for your discount: {ReferralCode}\n", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}\n", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d", - "type": "golang.org/x/text/cmd/gotext/examples/extract.referralCode", - "underlyingType": "int", - "argNum": 1, - "expr": "c" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:73:10" - }, - { - "id": [ "msgOutOfOrder", "{Device} is out of order!" ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "comment": "FOO\n", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "device" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:81:10" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - }, - { - "id": "Miles_1", - "string": "%[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:85:10" - } - ] -} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/out.gotext.json deleted file mode 100755 index 354e8e6a..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/de/out.gotext.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "language": "de", - "messages": [ - { - "id": "Hello world!\n", - "key": "Hello world!\n", - "message": "Hello world!\n", - "translation": "", - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:28:10" - }, - { - "id": "Hello {City}!\n", - "key": "Hello %s!\n", - "message": "Hello {City}!\n", - "translation": "", - "placeholders": [ - { - "id": "City", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "city" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:32:10" - }, - { - "id": "Hello {Town}!\n", - "key": "Hello %s!\n", - "message": "Hello {Town}!\n", - "translation": "", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "town", - "comment": "Town" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:36:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "person", - "comment": "The person of matter." - }, - { - "id": "Place", - "string": "%[2]s", - "type": "string", - "underlyingType": "string", - "argNum": 2, - "expr": "place", - "comment": "Place the person is visiting." - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:41:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "comment": "Person visiting a place.", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "pp.Person" - }, - { - "id": "Place", - "string": "%[3]s", - "type": "string", - "underlyingType": "string", - "argNum": 3, - "expr": "pp.Place", - "comment": "Place the person is visiting." - }, - { - "id": "Extra", - "string": "%[2]v", - "type": "int", - "underlyingType": "int", - "argNum": 2, - "expr": "pp.extra" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:56:10" - }, - { - "id": "{} files remaining!", - "key": "%d files remaining!", - "message": "{} files remaining!", - "translation": "", - "placeholders": [ - { - "id": "", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "2" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:63:10" - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "", - "placeholders": [ - { - "id": "N", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "n" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:68:10" - }, - { - "id": "Use the following code for your discount: {ReferralCode}\n", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}\n", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d", - "type": "golang.org/x/text/cmd/gotext/examples/extract.referralCode", - "underlyingType": "int", - "argNum": 1, - "expr": "c" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:74:10" - }, - { - "id": [ - "msgOutOfOrder", - "{Device} is out of order!" - ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "comment": "FOO\n", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "device" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:82:10" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - }, - { - "id": "Miles_1", - "string": "%[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:86:10" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/messages.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/messages.gotext.json deleted file mode 100755 index 37d691b5..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/messages.gotext.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "language": "en-US", - "messages": [ - { -"id": "Hello world!\n", - "key": "Hello world!\n", - "message": "Hello world!\n", - "translation": "Hello world!\n", - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:27:10" - }, - { - "id": "Hello {City}!\n", - "key": "Hello %s!\n", - "message": "Hello {City}!\n", - "translation": "Hello {City}!\n" - }, - { - "id": "Hello {Town}!\n", - "key": "Hello %s!\n", - "message": "Hello {Town}!\n", - "translation": "Hello {Town}!\n", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "town", - "comment": "Town" - } - ] - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "{Person} is visiting {Place}!\n" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "{Person} is visiting {Place}!\n", - "comment": "Person visiting a place." - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": { - "select": { - "feature": "plural", - "arg": "N", - "cases": { - "one": "One file remaining!", - "other": "There are {N} more files remaining!" - } - } - } - }, - { - "id": "Use the following code for your discount: {ReferralCode}\n", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}\n", - "translation": "" - }, - { - "id": [ "msgOutOfOrder", "{Device} is out of order!" ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "{Device} is out of order!", - "comment": "FOO\n" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "{Miles} miles traveled ({Miles_1})" - } - ] -} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/out.gotext.json deleted file mode 100755 index fea86e54..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/en-US/out.gotext.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "language": "en-US", - "messages": [ - { - "id": "Hello world!\n", - "key": "Hello world!\n", - "message": "Hello world!\n", - "translation": "", - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:28:10" - }, - { - "id": "Hello {City}!\n", - "key": "Hello %s!\n", - "message": "Hello {City}!\n", - "translation": "", - "placeholders": [ - { - "id": "City", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "city" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:32:10" - }, - { - "id": "Hello {Town}!\n", - "key": "Hello %s!\n", - "message": "Hello {Town}!\n", - "translation": "", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "town", - "comment": "Town" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:36:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "person", - "comment": "The person of matter." - }, - { - "id": "Place", - "string": "%[2]s", - "type": "string", - "underlyingType": "string", - "argNum": 2, - "expr": "place", - "comment": "Place the person is visiting." - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:41:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "comment": "Person visiting a place.", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "pp.Person" - }, - { - "id": "Place", - "string": "%[3]s", - "type": "string", - "underlyingType": "string", - "argNum": 3, - "expr": "pp.Place", - "comment": "Place the person is visiting." - }, - { - "id": "Extra", - "string": "%[2]v", - "type": "int", - "underlyingType": "int", - "argNum": 2, - "expr": "pp.extra" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:56:10" - }, - { - "id": "{} files remaining!", - "key": "%d files remaining!", - "message": "{} files remaining!", - "translation": "", - "placeholders": [ - { - "id": "", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "2" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:63:10" - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "", - "placeholders": [ - { - "id": "N", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "n" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:68:10" - }, - { - "id": "Use the following code for your discount: {ReferralCode}\n", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}\n", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d", - "type": "golang.org/x/text/cmd/gotext/examples/extract.referralCode", - "underlyingType": "int", - "argNum": 1, - "expr": "c" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:74:10" - }, - { - "id": [ - "msgOutOfOrder", - "{Device} is out of order!" - ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "comment": "FOO\n", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "device" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:82:10" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - }, - { - "id": "Miles_1", - "string": "%[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:86:10" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/extracted.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/extracted.gotext.json deleted file mode 100755 index fea86e54..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/extracted.gotext.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "language": "en-US", - "messages": [ - { - "id": "Hello world!\n", - "key": "Hello world!\n", - "message": "Hello world!\n", - "translation": "", - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:28:10" - }, - { - "id": "Hello {City}!\n", - "key": "Hello %s!\n", - "message": "Hello {City}!\n", - "translation": "", - "placeholders": [ - { - "id": "City", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "city" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:32:10" - }, - { - "id": "Hello {Town}!\n", - "key": "Hello %s!\n", - "message": "Hello {Town}!\n", - "translation": "", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "town", - "comment": "Town" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:36:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "person", - "comment": "The person of matter." - }, - { - "id": "Place", - "string": "%[2]s", - "type": "string", - "underlyingType": "string", - "argNum": 2, - "expr": "place", - "comment": "Place the person is visiting." - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:41:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "comment": "Person visiting a place.", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "pp.Person" - }, - { - "id": "Place", - "string": "%[3]s", - "type": "string", - "underlyingType": "string", - "argNum": 3, - "expr": "pp.Place", - "comment": "Place the person is visiting." - }, - { - "id": "Extra", - "string": "%[2]v", - "type": "int", - "underlyingType": "int", - "argNum": 2, - "expr": "pp.extra" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:56:10" - }, - { - "id": "{} files remaining!", - "key": "%d files remaining!", - "message": "{} files remaining!", - "translation": "", - "placeholders": [ - { - "id": "", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "2" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:63:10" - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "", - "placeholders": [ - { - "id": "N", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "n" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:68:10" - }, - { - "id": "Use the following code for your discount: {ReferralCode}\n", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}\n", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d", - "type": "golang.org/x/text/cmd/gotext/examples/extract.referralCode", - "underlyingType": "int", - "argNum": 1, - "expr": "c" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:74:10" - }, - { - "id": [ - "msgOutOfOrder", - "{Device} is out of order!" - ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "comment": "FOO\n", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "device" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:82:10" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - }, - { - "id": "Miles_1", - "string": "%[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:86:10" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/messages.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/messages.gotext.json deleted file mode 100755 index 85307402..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/messages.gotext.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "language": "zh", - "messages": [ - { -"id": "Hello world!\n", - "key": "Hello world!\n", - "message": "Hello world!\n", - "translation": "", - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:27:10" - }, - { - "id": "Hello {City}!\n", - "key": "Hello %s!\n", - "message": "Hello {City}!\n", - "translation": "", - "placeholders": [ - { - "id": "City", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "city" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:31:10" - }, - { - "id": "Hello {Town}!\n", - "key": "Hello %s!\n", - "message": "Hello {Town}!\n", - "translation": "", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "town", - "comment": "Town" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:35:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "person", - "comment": "The person of matter." - }, - { - "id": "Place", - "string": "%[2]s", - "type": "string", - "underlyingType": "string", - "argNum": 2, - "expr": "place", - "comment": "Place the person is visiting." - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:40:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "comment": "Person visiting a place.", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "pp.Person" - }, - { - "id": "Place", - "string": "%[3]s", - "type": "string", - "underlyingType": "string", - "argNum": 3, - "expr": "pp.Place", - "comment": "Place the person is visiting." - }, - { - "id": "Extra", - "string": "%[2]v", - "type": "int", - "underlyingType": "int", - "argNum": 2, - "expr": "pp.extra" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:55:10" - }, - { - "id": "{} files remaining!", - "key": "%d files remaining!", - "message": "{} files remaining!", - "translation": "", - "placeholders": [ - { - "id": "", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "2" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:62:10" - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "", - "placeholders": [ - { - "id": "N", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "n" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:67:10" - }, - { - "id": "Use the following code for your discount: {ReferralCode}\n", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}\n", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d", - "type": "golang.org/x/text/cmd/gotext/examples/extract.referralCode", - "underlyingType": "int", - "argNum": 1, - "expr": "c" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:73:10" - }, - { - "id": [ "{Device} is out of order!", "msgOutOfOrder" ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "comment": "FOO\n", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "device" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:81:10" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - }, - { - "id": "Miles_1", - "string": "%[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:85:10" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/out.gotext.json deleted file mode 100755 index 88739a31..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/locales/zh/out.gotext.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "language": "zh", - "messages": [ - { - "id": "Hello world!\n", - "key": "Hello world!\n", - "message": "Hello world!\n", - "translation": "", - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:28:10" - }, - { - "id": "Hello {City}!\n", - "key": "Hello %s!\n", - "message": "Hello {City}!\n", - "translation": "", - "placeholders": [ - { - "id": "City", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "city" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:32:10" - }, - { - "id": "Hello {Town}!\n", - "key": "Hello %s!\n", - "message": "Hello {Town}!\n", - "translation": "", - "placeholders": [ - { - "id": "Town", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "town", - "comment": "Town" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:36:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%s is visiting %s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "person", - "comment": "The person of matter." - }, - { - "id": "Place", - "string": "%[2]s", - "type": "string", - "underlyingType": "string", - "argNum": 2, - "expr": "place", - "comment": "Place the person is visiting." - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:41:10" - }, - { - "id": "{Person} is visiting {Place}!\n", - "key": "%[1]s is visiting %[3]s!\n", - "message": "{Person} is visiting {Place}!\n", - "translation": "", - "comment": "Person visiting a place.", - "placeholders": [ - { - "id": "Person", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "pp.Person" - }, - { - "id": "Place", - "string": "%[3]s", - "type": "string", - "underlyingType": "string", - "argNum": 3, - "expr": "pp.Place", - "comment": "Place the person is visiting." - }, - { - "id": "Extra", - "string": "%[2]v", - "type": "int", - "underlyingType": "int", - "argNum": 2, - "expr": "pp.extra" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:56:10" - }, - { - "id": "{} files remaining!", - "key": "%d files remaining!", - "message": "{} files remaining!", - "translation": "", - "placeholders": [ - { - "id": "", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "2" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:63:10" - }, - { - "id": "{N} more files remaining!", - "key": "%d more files remaining!", - "message": "{N} more files remaining!", - "translation": "", - "placeholders": [ - { - "id": "N", - "string": "%[1]d", - "type": "int", - "underlyingType": "int", - "argNum": 1, - "expr": "n" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:68:10" - }, - { - "id": "Use the following code for your discount: {ReferralCode}\n", - "key": "Use the following code for your discount: %d\n", - "message": "Use the following code for your discount: {ReferralCode}\n", - "translation": "", - "placeholders": [ - { - "id": "ReferralCode", - "string": "%[1]d", - "type": "golang.org/x/text/cmd/gotext/examples/extract.referralCode", - "underlyingType": "int", - "argNum": 1, - "expr": "c" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:74:10" - }, - { - "id": [ - "msgOutOfOrder", - "{Device} is out of order!" - ], - "key": "%s is out of order!", - "message": "{Device} is out of order!", - "translation": "", - "comment": "FOO\n", - "placeholders": [ - { - "id": "Device", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "device" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:82:10" - }, - { - "id": "{Miles} miles traveled ({Miles_1})", - "key": "%.2[1]f miles traveled (%[1]f)", - "message": "{Miles} miles traveled ({Miles_1})", - "translation": "", - "placeholders": [ - { - "id": "Miles", - "string": "%.2[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - }, - { - "id": "Miles_1", - "string": "%[1]f", - "type": "float64", - "underlyingType": "float64", - "argNum": 1, - "expr": "miles" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract/main.go:86:10" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract/main.go b/vendor/golang.org/x/text/cmd/gotext/examples/extract/main.go deleted file mode 100644 index cbbc3704..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract/main.go +++ /dev/null @@ -1,87 +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 main - -//go:generate gotext extract --lang=de,zh -//go:generate gotext generate -out catalog.go - -import ( - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -func main() { - p := message.NewPrinter(language.English) - - p.Print("Hello world!\n") - - p.Println("Hello", "world!") - - person := "Sheila" - place := "Zürich" - - p.Print("Hello ", person, " in ", place, "!\n") - - // Greet everyone. - p.Printf("Hello world!\n") - - city := "Amsterdam" - // Greet a city. - p.Printf("Hello %s!\n", city) - - town := "Amsterdam" - // Greet a town. - p.Printf("Hello %s!\n", - town, // Town - ) - - // Person visiting a place. - p.Printf("%s is visiting %s!\n", - person, // The person of matter. - place, // Place the person is visiting. - ) - - pp := struct { - Person string // The person of matter. // TODO: get this comment. - Place string - extra int - }{ - person, place, 4, - } - - // extract will drop this comment in favor of the one below. - // argument is added as a placeholder. - p.Printf("%[1]s is visiting %[3]s!\n", // Person visiting a place. - pp.Person, - pp.extra, - pp.Place, // Place the person is visiting. - ) - - // Numeric literal - p.Printf("%d files remaining!", 2) - - const n = 2 - - // Numeric var - p.Printf("%d more files remaining!", n) - - // Infer better names from type names. - type referralCode int - - const c = referralCode(5) - p.Printf("Use the following code for your discount: %d\n", c) - - // Using a constant for a message will cause the constant name to be - // added as an identifier, allowing for stable message identifiers. - - // Explain that a device is out of order. - const msgOutOfOrder = "%s is out of order!" // FOO - const device = "Soda machine" - p.Printf(msgOutOfOrder, device) - - // Double arguments. - miles := 1.2345 - p.Printf("%.2[1]f miles traveled (%[1]f)", miles) -} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/de/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/de/out.gotext.json deleted file mode 100755 index bd715908..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/de/out.gotext.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "language": "de", - "messages": [ - { - "id": "Hello {From}!\n", - "key": "Hello %s!\n", - "message": "Hello {From}!\n", - "translation": "", - "placeholders": [ - { - "id": "From", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "r.Header.Get(\"From\")" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:22:11" - }, - { - "id": "Do you like your browser ({User_Agent})?\n", - "key": "Do you like your browser (%s)?\n", - "message": "Do you like your browser ({User_Agent})?\n", - "translation": "", - "placeholders": [ - { - "id": "User_Agent", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "r.Header.Get(\"User-Agent\")" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:24:11" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/en-US/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/en-US/out.gotext.json deleted file mode 100755 index d0c4684a..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/en-US/out.gotext.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "language": "en-US", - "messages": [ - { - "id": "Hello {From}!\n", - "key": "Hello %s!\n", - "message": "Hello {From}!\n", - "translation": "", - "placeholders": [ - { - "id": "From", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "r.Header.Get(\"From\")" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:22:11" - }, - { - "id": "Do you like your browser ({User_Agent})?\n", - "key": "Do you like your browser (%s)?\n", - "message": "Do you like your browser ({User_Agent})?\n", - "translation": "", - "placeholders": [ - { - "id": "User_Agent", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "r.Header.Get(\"User-Agent\")" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:24:11" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/extracted.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/extracted.gotext.json deleted file mode 100755 index d0c4684a..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/extracted.gotext.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "language": "en-US", - "messages": [ - { - "id": "Hello {From}!\n", - "key": "Hello %s!\n", - "message": "Hello {From}!\n", - "translation": "", - "placeholders": [ - { - "id": "From", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "r.Header.Get(\"From\")" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:22:11" - }, - { - "id": "Do you like your browser ({User_Agent})?\n", - "key": "Do you like your browser (%s)?\n", - "message": "Do you like your browser ({User_Agent})?\n", - "translation": "", - "placeholders": [ - { - "id": "User_Agent", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "r.Header.Get(\"User-Agent\")" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:24:11" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/zh/out.gotext.json b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/zh/out.gotext.json deleted file mode 100755 index cad0ff03..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/locales/zh/out.gotext.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "language": "zh", - "messages": [ - { - "id": "Hello {From}!\n", - "key": "Hello %s!\n", - "message": "Hello {From}!\n", - "translation": "", - "placeholders": [ - { - "id": "From", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "r.Header.Get(\"From\")" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:22:11" - }, - { - "id": "Do you like your browser ({User_Agent})?\n", - "key": "Do you like your browser (%s)?\n", - "message": "Do you like your browser ({User_Agent})?\n", - "translation": "", - "placeholders": [ - { - "id": "User_Agent", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", - "argNum": 1, - "expr": "r.Header.Get(\"User-Agent\")" - } - ], - "position": "golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go:24:11" - } - ] -} \ No newline at end of file diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/main.go b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/main.go deleted file mode 100644 index c1ac4494..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/main.go +++ /dev/null @@ -1,17 +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 main - -//go:generate gotext extract --lang=de,zh - -import ( - "net/http" - - "golang.org/x/text/cmd/gotext/examples/extract_http/pkg" -) - -func main() { - http.Handle("/generize", http.HandlerFunc(pkg.Generize)) -} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go b/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go deleted file mode 100644 index 7b446348..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/extract_http/pkg/pkg.go +++ /dev/null @@ -1,25 +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 pkg - -import ( - "net/http" - - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -var matcher = language.NewMatcher(message.DefaultCatalog.Languages()) - -func Generize(w http.ResponseWriter, r *http.Request) { - lang, _ := r.Cookie("lang") - accept := r.Header.Get("Accept-Language") - tag := message.MatchLanguage(lang.String(), accept) - p := message.NewPrinter(tag) - - p.Fprintf(w, "Hello %s!\n", r.Header.Get("From")) - - p.Fprintf(w, "Do you like your browser (%s)?\n", r.Header.Get("User-Agent")) -} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/main.go b/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/main.go deleted file mode 100644 index 2fada451..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/main.go +++ /dev/null @@ -1,37 +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 main - -import ( - "fmt" - - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -func main() { - var nPizzas = 4 - // The following call gets replaced by a call to the globally - // defined printer. - fmt.Println("We ate", nPizzas, "pizzas.") - - p := message.NewPrinter(language.English) - - // Prevent build failure, although it is okay for gotext. - p.Println(1024) - - // Replaced by a call to p. - fmt.Println("Example punctuation:", "$%^&!") - - { - q := message.NewPrinter(language.French) - - const leaveAnIdentBe = "Don't expand me." - fmt.Print(leaveAnIdentBe) - q.Println() // Prevent build failure, although it is okay for gotext. - } - - fmt.Printf("Hello %s\n", "City") -} diff --git a/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/printer.go b/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/printer.go deleted file mode 100644 index 9ed05562..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/examples/rewrite/printer.go +++ /dev/null @@ -1,16 +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. - -// +build ignore - -package main - -import ( - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -// The printer defined here will be picked up by the first print statement -// in main.go. -var printer = message.NewPrinter(language.English) diff --git a/vendor/golang.org/x/text/cmd/gotext/extract.go b/vendor/golang.org/x/text/cmd/gotext/extract.go deleted file mode 100644 index f1f700ba..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/extract.go +++ /dev/null @@ -1,81 +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 main - -import ( - "encoding/json" - "io/ioutil" - "os" - "path/filepath" - - "golang.org/x/text/internal" - "golang.org/x/text/language" - "golang.org/x/text/message/pipeline" -) - -// TODO: -// - merge information into existing files -// - handle different file formats (PO, XLIFF) -// - handle features (gender, plural) -// - message rewriting - -var ( - srcLang *string - lang *string -) - -func init() { - srcLang = cmdExtract.Flag.String("srclang", "en-US", "the source-code language") - lang = cmdExtract.Flag.String("lang", "en-US", "comma-separated list of languages to process") -} - -var cmdExtract = &Command{ - Run: runExtract, - UsageLine: "extract <package>*", - Short: "extracts strings to be translated from code", -} - -func runExtract(cmd *Command, args []string) error { - tag, err := language.Parse(*srcLang) - if err != nil { - return wrap(err, "") - } - config := &pipeline.Config{ - SourceLanguage: tag, - Packages: args, - } - out, err := pipeline.Extract(config) - - data, err := json.MarshalIndent(out, "", " ") - if err != nil { - return wrap(err, "") - } - os.MkdirAll(*dir, 0755) - // TODO: this file can probably go if we replace the extract + generate - // cycle with a init once and update cycle. - file := filepath.Join(*dir, extractFile) - if err := ioutil.WriteFile(file, data, 0644); err != nil { - return wrap(err, "could not create file") - } - - langs := append(getLangs(), tag) - langs = internal.UniqueTags(langs) - for _, tag := range langs { - // TODO: inject translations from existing files to avoid retranslation. - out.Language = tag - data, err := json.MarshalIndent(out, "", " ") - if err != nil { - return wrap(err, "JSON marshal failed") - } - file := filepath.Join(*dir, tag.String(), outFile) - if err := os.MkdirAll(filepath.Dir(file), 0750); err != nil { - return wrap(err, "dir create failed") - } - if err := ioutil.WriteFile(file, data, 0740); err != nil { - return wrap(err, "write failed") - } - } - return nil -} diff --git a/vendor/golang.org/x/text/cmd/gotext/generate.go b/vendor/golang.org/x/text/cmd/gotext/generate.go deleted file mode 100644 index 2d344650..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/generate.go +++ /dev/null @@ -1,104 +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 main - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "regexp" - "strings" - - "golang.org/x/text/message/pipeline" - "golang.org/x/tools/go/loader" -) - -func init() { - out = cmdGenerate.Flag.String("out", "", "output file to write to") -} - -var ( - out *string -) - -var cmdGenerate = &Command{ - Run: runGenerate, - UsageLine: "generate <package>", - Short: "generates code to insert translated messages", -} - -var transRe = regexp.MustCompile(`messages\.(.*)\.json`) - -func runGenerate(cmd *Command, args []string) error { - - prog, err := loadPackages(&loader.Config{}, args) - if err != nil { - return wrap(err, "could not load package") - } - - pkgs := prog.InitialPackages() - if len(pkgs) != 1 { - return fmt.Errorf("more than one package selected: %v", pkgs) - } - pkg := pkgs[0].Pkg.Name() - - // TODO: add in external input. Right now we assume that all files are - // manually created and stored in the textdata directory. - - // Build up index of translations and original messages. - extracted := pipeline.Locale{} - translations := []*pipeline.Locale{} - - err = filepath.Walk(*dir, func(path string, f os.FileInfo, err error) error { - if err != nil { - return wrap(err, "loading data") - } - if f.IsDir() { - return nil - } - if f.Name() == extractFile { - b, err := ioutil.ReadFile(path) - if err != nil { - return wrap(err, "read file failed") - } - if err := json.Unmarshal(b, &extracted); err != nil { - return wrap(err, "unmarshal source failed") - } - return nil - } - if f.Name() == outFile { - return nil - } - if !strings.HasSuffix(path, gotextSuffix) { - return nil - } - b, err := ioutil.ReadFile(path) - if err != nil { - return wrap(err, "read file failed") - } - var locale pipeline.Locale - if err := json.Unmarshal(b, &locale); err != nil { - return wrap(err, "parsing translation file failed") - } - translations = append(translations, &locale) - return nil - }) - if err != nil { - return err - } - - w := os.Stdout - if *out != "" { - w, err = os.Create(*out) - if err != nil { - return wrap(err, "create file failed") - } - } - - _, err = pipeline.Generate(w, pkg, &extracted, translations...) - return err -} diff --git a/vendor/golang.org/x/text/cmd/gotext/main.go b/vendor/golang.org/x/text/cmd/gotext/main.go deleted file mode 100644 index f3f50d79..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/main.go +++ /dev/null @@ -1,352 +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 build -o gotext.latest -//go:generate ./gotext.latest help gendocumentation -//go:generate rm gotext.latest - -package main - -import ( - "bufio" - "bytes" - "flag" - "fmt" - "go/build" - "go/format" - "io" - "io/ioutil" - "log" - "os" - "strings" - "sync" - "text/template" - "unicode" - "unicode/utf8" - - "golang.org/x/text/language" - "golang.org/x/tools/go/buildutil" -) - -func init() { - flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc) -} - -var dir = flag.String("dir", "locales", "default subdirectory to store translation files") - -// NOTE: the Command struct is copied from the go tool in core. - -// A Command is an implementation of a go command -// like go build or go fix. -type Command struct { - // Run runs the command. - // The args are the arguments after the command name. - Run func(cmd *Command, args []string) error - - // UsageLine is the one-line usage message. - // The first word in the line is taken to be the command name. - UsageLine string - - // Short is the short description shown in the 'go help' output. - Short string - - // Long is the long message shown in the 'go help <this-command>' output. - Long string - - // Flag is a set of flags specific to this command. - Flag flag.FlagSet -} - -// Name returns the command's name: the first word in the usage line. -func (c *Command) Name() string { - name := c.UsageLine - i := strings.Index(name, " ") - if i >= 0 { - name = name[:i] - } - return name -} - -func (c *Command) Usage() { - fmt.Fprintf(os.Stderr, "usage: %s\n\n", c.UsageLine) - fmt.Fprintf(os.Stderr, "%s\n", strings.TrimSpace(c.Long)) - os.Exit(2) -} - -// Runnable reports whether the command can be run; otherwise -// it is a documentation pseudo-command such as importpath. -func (c *Command) Runnable() bool { - return c.Run != nil -} - -// Commands lists the available commands and help topics. -// The order here is the order in which they are printed by 'go help'. -var commands = []*Command{ - cmdExtract, - cmdRewrite, - cmdGenerate, - // TODO: - // - update: full-cycle update of extraction, sending, and integration - // - report: report of freshness of translations -} - -var exitStatus = 0 -var exitMu sync.Mutex - -func setExitStatus(n int) { - exitMu.Lock() - if exitStatus < n { - exitStatus = n - } - exitMu.Unlock() -} - -var origEnv []string - -func main() { - flag.Usage = usage - flag.Parse() - log.SetFlags(0) - - args := flag.Args() - if len(args) < 1 { - usage() - } - - if args[0] == "help" { - help(args[1:]) - return - } - - for _, cmd := range commands { - if cmd.Name() == args[0] && cmd.Runnable() { - cmd.Flag.Usage = func() { cmd.Usage() } - cmd.Flag.Parse(args[1:]) - args = cmd.Flag.Args() - if err := cmd.Run(cmd, args); err != nil { - fatalf("gotext: %+v", err) - } - exit() - return - } - } - - fmt.Fprintf(os.Stderr, "gotext: unknown subcommand %q\nRun 'go help' for usage.\n", args[0]) - setExitStatus(2) - exit() -} - -var usageTemplate = `gotext is a tool for managing text in Go source code. - -Usage: - - gotext command [arguments] - -The commands are: -{{range .}}{{if .Runnable}} - {{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}} - -Use "go help [command]" for more information about a command. - -Additional help topics: -{{range .}}{{if not .Runnable}} - {{.Name | printf "%-11s"}} {{.Short}}{{end}}{{end}} - -Use "gotext help [topic]" for more information about that topic. - -` - -var helpTemplate = `{{if .Runnable}}usage: go {{.UsageLine}} - -{{end}}{{.Long | trim}} -` - -var documentationTemplate = `{{range .}}{{if .Short}}{{.Short | capitalize}} - -{{end}}{{if .Runnable}}Usage: - - go {{.UsageLine}} - -{{end}}{{.Long | trim}} - - -{{end}}` - -// commentWriter writes a Go comment to the underlying io.Writer, -// using line comment form (//). -type commentWriter struct { - W io.Writer - wroteSlashes bool // Wrote "//" at the beginning of the current line. -} - -func (c *commentWriter) Write(p []byte) (int, error) { - var n int - for i, b := range p { - if !c.wroteSlashes { - s := "//" - if b != '\n' { - s = "// " - } - if _, err := io.WriteString(c.W, s); err != nil { - return n, err - } - c.wroteSlashes = true - } - n0, err := c.W.Write(p[i : i+1]) - n += n0 - if err != nil { - return n, err - } - if b == '\n' { - c.wroteSlashes = false - } - } - return len(p), nil -} - -// An errWriter wraps a writer, recording whether a write error occurred. -type errWriter struct { - w io.Writer - err error -} - -func (w *errWriter) Write(b []byte) (int, error) { - n, err := w.w.Write(b) - if err != nil { - w.err = err - } - return n, err -} - -// tmpl executes the given template text on data, writing the result to w. -func tmpl(w io.Writer, text string, data interface{}) { - t := template.New("top") - t.Funcs(template.FuncMap{"trim": strings.TrimSpace, "capitalize": capitalize}) - template.Must(t.Parse(text)) - ew := &errWriter{w: w} - err := t.Execute(ew, data) - if ew.err != nil { - // I/O error writing. Ignore write on closed pipe. - if strings.Contains(ew.err.Error(), "pipe") { - os.Exit(1) - } - fatalf("writing output: %v", ew.err) - } - if err != nil { - panic(err) - } -} - -func capitalize(s string) string { - if s == "" { - return s - } - r, n := utf8.DecodeRuneInString(s) - return string(unicode.ToTitle(r)) + s[n:] -} - -func printUsage(w io.Writer) { - bw := bufio.NewWriter(w) - tmpl(bw, usageTemplate, commands) - bw.Flush() -} - -func usage() { - printUsage(os.Stderr) - os.Exit(2) -} - -// help implements the 'help' command. -func help(args []string) { - if len(args) == 0 { - printUsage(os.Stdout) - // not exit 2: succeeded at 'go help'. - return - } - if len(args) != 1 { - fmt.Fprintf(os.Stderr, "usage: go help command\n\nToo many arguments given.\n") - os.Exit(2) // failed at 'go help' - } - - arg := args[0] - - // 'go help documentation' generates doc.go. - if strings.HasSuffix(arg, "documentation") { - w := &bytes.Buffer{} - - fmt.Fprintln(w, "// Code generated by go generate. DO NOT EDIT.") - fmt.Fprintln(w) - buf := new(bytes.Buffer) - printUsage(buf) - usage := &Command{Long: buf.String()} - tmpl(&commentWriter{W: w}, documentationTemplate, append([]*Command{usage}, commands...)) - fmt.Fprintln(w, "package main") - if arg == "gendocumentation" { - b, err := format.Source(w.Bytes()) - if err != nil { - logf("Could not format generated docs: %v\n", err) - } - if err := ioutil.WriteFile("doc.go", b, 0666); err != nil { - logf("Could not create file alldocs.go: %v\n", err) - } - } else { - fmt.Println(w.String()) - } - return - } - - for _, cmd := range commands { - if cmd.Name() == arg { - tmpl(os.Stdout, helpTemplate, cmd) - // not exit 2: succeeded at 'go help cmd'. - return - } - } - - fmt.Fprintf(os.Stderr, "Unknown help topic %#q. Run 'go help'.\n", arg) - os.Exit(2) // failed at 'go help cmd' -} - -func getLangs() (tags []language.Tag) { - for _, t := range strings.Split(*lang, ",") { - if t == "" { - continue - } - tag, err := language.Parse(t) - if err != nil { - fatalf("gotext: could not parse language %q: %v", t, err) - } - tags = append(tags, tag) - } - return tags -} - -var atexitFuncs []func() - -func atexit(f func()) { - atexitFuncs = append(atexitFuncs, f) -} - -func exit() { - for _, f := range atexitFuncs { - f() - } - os.Exit(exitStatus) -} - -func fatalf(format string, args ...interface{}) { - logf(format, args...) - exit() -} - -func logf(format string, args ...interface{}) { - log.Printf(format, args...) - setExitStatus(1) -} - -func exitIfErrors() { - if exitStatus != 0 { - exit() - } -} diff --git a/vendor/golang.org/x/text/cmd/gotext/rewrite.go b/vendor/golang.org/x/text/cmd/gotext/rewrite.go deleted file mode 100644 index a35b727d..00000000 --- a/vendor/golang.org/x/text/cmd/gotext/rewrite.go +++ /dev/null @@ -1,55 +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 main - -import ( - "os" - - "golang.org/x/text/message/pipeline" -) - -const printerType = "golang.org/x/text/message.Printer" - -// TODO: -// - merge information into existing files -// - handle different file formats (PO, XLIFF) -// - handle features (gender, plural) -// - message rewriting - -func init() { - overwrite = cmdRewrite.Flag.Bool("w", false, "write files in place") -} - -var ( - overwrite *bool -) - -var cmdRewrite = &Command{ - Run: runRewrite, - UsageLine: "rewrite <package>", - Short: "rewrites fmt functions to use a message Printer", - Long: ` -rewrite is typically done once for a project. It rewrites all usages of -fmt to use x/text's message package whenever a message.Printer is in scope. -It rewrites Print and Println calls with constant strings to the equivalent -using Printf to allow translators to reorder arguments. -`, -} - -func runRewrite(cmd *Command, args []string) error { - w := os.Stdout - if *overwrite { - w = nil - } - pkg := "." - switch len(args) { - case 0: - case 1: - pkg = args[0] - default: - return errorf("can only specify at most one package") - } - return pipeline.Rewrite(w, pkg) -} diff --git a/vendor/golang.org/x/text/codereview.cfg b/vendor/golang.org/x/text/codereview.cfg deleted file mode 100644 index 3f8b14b6..00000000 --- a/vendor/golang.org/x/text/codereview.cfg +++ /dev/null @@ -1 +0,0 @@ -issuerepo: golang/go diff --git a/vendor/golang.org/x/text/collate/build/builder_test.go b/vendor/golang.org/x/text/collate/build/builder_test.go deleted file mode 100644 index ff0aba3a..00000000 --- a/vendor/golang.org/x/text/collate/build/builder_test.go +++ /dev/null @@ -1,290 +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 build - -import "testing" - -// cjk returns an implicit collation element for a CJK rune. -func cjk(r rune) []rawCE { - // A CJK character C is represented in the DUCET as - // [.AAAA.0020.0002.C][.BBBB.0000.0000.C] - // Where AAAA is the most significant 15 bits plus a base value. - // Any base value will work for the test, so we pick the common value of FB40. - const base = 0xFB40 - return []rawCE{ - {w: []int{base + int(r>>15), defaultSecondary, defaultTertiary, int(r)}}, - {w: []int{int(r&0x7FFF) | 0x8000, 0, 0, int(r)}}, - } -} - -func pCE(p int) []rawCE { - return mkCE([]int{p, defaultSecondary, defaultTertiary, 0}, 0) -} - -func pqCE(p, q int) []rawCE { - return mkCE([]int{p, defaultSecondary, defaultTertiary, q}, 0) -} - -func ptCE(p, t int) []rawCE { - return mkCE([]int{p, defaultSecondary, t, 0}, 0) -} - -func ptcCE(p, t int, ccc uint8) []rawCE { - return mkCE([]int{p, defaultSecondary, t, 0}, ccc) -} - -func sCE(s int) []rawCE { - return mkCE([]int{0, s, defaultTertiary, 0}, 0) -} - -func stCE(s, t int) []rawCE { - return mkCE([]int{0, s, t, 0}, 0) -} - -func scCE(s int, ccc uint8) []rawCE { - return mkCE([]int{0, s, defaultTertiary, 0}, ccc) -} - -func mkCE(w []int, ccc uint8) []rawCE { - return []rawCE{rawCE{w, ccc}} -} - -// ducetElem is used to define test data that is used to generate a table. -type ducetElem struct { - str string - ces []rawCE -} - -func newBuilder(t *testing.T, ducet []ducetElem) *Builder { - b := NewBuilder() - for _, e := range ducet { - ces := [][]int{} - for _, ce := range e.ces { - ces = append(ces, ce.w) - } - if err := b.Add([]rune(e.str), ces, nil); err != nil { - t.Errorf(err.Error()) - } - } - b.t = &table{} - b.root.sort() - return b -} - -type convertTest struct { - in, out []rawCE - err bool -} - -var convLargeTests = []convertTest{ - {pCE(0xFB39), pCE(0xFB39), false}, - {cjk(0x2F9B2), pqCE(0x3F9B2, 0x2F9B2), false}, - {pCE(0xFB40), pCE(0), true}, - {append(pCE(0xFB40), pCE(0)[0]), pCE(0), true}, - {pCE(0xFFFE), pCE(illegalOffset), false}, - {pCE(0xFFFF), pCE(illegalOffset + 1), false}, -} - -func TestConvertLarge(t *testing.T) { - for i, tt := range convLargeTests { - e := new(entry) - for _, ce := range tt.in { - e.elems = append(e.elems, makeRawCE(ce.w, ce.ccc)) - } - elems, err := convertLargeWeights(e.elems) - if tt.err { - if err == nil { - t.Errorf("%d: expected error; none found", i) - } - continue - } else if err != nil { - t.Errorf("%d: unexpected error: %v", i, err) - } - if !equalCEArrays(elems, tt.out) { - t.Errorf("%d: conversion was %x; want %x", i, elems, tt.out) - } - } -} - -// Collation element table for simplify tests. -var simplifyTest = []ducetElem{ - {"\u0300", sCE(30)}, // grave - {"\u030C", sCE(40)}, // caron - {"A", ptCE(100, 8)}, - {"D", ptCE(104, 8)}, - {"E", ptCE(105, 8)}, - {"I", ptCE(110, 8)}, - {"z", ptCE(130, 8)}, - {"\u05F2", append(ptCE(200, 4), ptCE(200, 4)[0])}, - {"\u05B7", sCE(80)}, - {"\u00C0", append(ptCE(100, 8), sCE(30)...)}, // A with grave, can be removed - {"\u00C8", append(ptCE(105, 8), sCE(30)...)}, // E with grave - {"\uFB1F", append(ptCE(200, 4), ptCE(200, 4)[0], sCE(80)[0])}, // eliminated by NFD - {"\u00C8\u0302", ptCE(106, 8)}, // block previous from simplifying - {"\u01C5", append(ptCE(104, 9), ptCE(130, 4)[0], stCE(40, maxTertiary)[0])}, // eliminated by NFKD - // no removal: tertiary value of third element is not maxTertiary - {"\u2162", append(ptCE(110, 9), ptCE(110, 4)[0], ptCE(110, 8)[0])}, -} - -var genColTests = []ducetElem{ - {"\uFA70", pqCE(0x1FA70, 0xFA70)}, - {"A\u0300", append(ptCE(100, 8), sCE(30)...)}, - {"A\u0300\uFA70", append(ptCE(100, 8), sCE(30)[0], pqCE(0x1FA70, 0xFA70)[0])}, - {"A\u0300A\u0300", append(ptCE(100, 8), sCE(30)[0], ptCE(100, 8)[0], sCE(30)[0])}, -} - -func TestGenColElems(t *testing.T) { - b := newBuilder(t, simplifyTest[:5]) - - for i, tt := range genColTests { - res := b.root.genColElems(tt.str) - if !equalCEArrays(tt.ces, res) { - t.Errorf("%d: result %X; want %X", i, res, tt.ces) - } - } -} - -type strArray []string - -func (sa strArray) contains(s string) bool { - for _, e := range sa { - if e == s { - return true - } - } - return false -} - -var simplifyRemoved = strArray{"\u00C0", "\uFB1F"} -var simplifyMarked = strArray{"\u01C5"} - -func TestSimplify(t *testing.T) { - b := newBuilder(t, simplifyTest) - o := &b.root - simplify(o) - - for i, tt := range simplifyTest { - if simplifyRemoved.contains(tt.str) { - continue - } - e := o.find(tt.str) - if e.str != tt.str || !equalCEArrays(e.elems, tt.ces) { - t.Errorf("%d: found element %s -> %X; want %s -> %X", i, e.str, e.elems, tt.str, tt.ces) - break - } - } - var i, k int - for e := o.front(); e != nil; e, _ = e.nextIndexed() { - gold := simplifyMarked.contains(e.str) - if gold { - k++ - } - if gold != e.decompose { - t.Errorf("%d: %s has decompose %v; want %v", i, e.str, e.decompose, gold) - } - i++ - } - if k != len(simplifyMarked) { - t.Errorf(" an entry that should be marked as decompose was deleted") - } -} - -var expandTest = []ducetElem{ - {"\u0300", append(scCE(29, 230), scCE(30, 230)...)}, - {"\u00C0", append(ptCE(100, 8), scCE(30, 230)...)}, - {"\u00C8", append(ptCE(105, 8), scCE(30, 230)...)}, - {"\u00C9", append(ptCE(105, 8), scCE(30, 230)...)}, // identical expansion - {"\u05F2", append(ptCE(200, 4), ptCE(200, 4)[0], ptCE(200, 4)[0])}, - {"\u01FF", append(ptCE(200, 4), ptcCE(201, 4, 0)[0], scCE(30, 230)[0])}, -} - -func TestExpand(t *testing.T) { - const ( - totalExpansions = 5 - totalElements = 2 + 2 + 2 + 3 + 3 + totalExpansions - ) - b := newBuilder(t, expandTest) - o := &b.root - b.processExpansions(o) - - e := o.front() - for _, tt := range expandTest { - exp := b.t.ExpandElem[e.expansionIndex:] - if int(exp[0]) != len(tt.ces) { - t.Errorf("%U: len(expansion)==%d; want %d", []rune(tt.str)[0], exp[0], len(tt.ces)) - } - exp = exp[1:] - for j, w := range tt.ces { - if ce, _ := makeCE(w); exp[j] != ce { - t.Errorf("%U: element %d is %X; want %X", []rune(tt.str)[0], j, exp[j], ce) - } - } - e, _ = e.nextIndexed() - } - // Verify uniquing. - if len(b.t.ExpandElem) != totalElements { - t.Errorf("len(expandElem)==%d; want %d", len(b.t.ExpandElem), totalElements) - } -} - -var contractTest = []ducetElem{ - {"abc", pCE(102)}, - {"abd", pCE(103)}, - {"a", pCE(100)}, - {"ab", pCE(101)}, - {"ac", pCE(104)}, - {"bcd", pCE(202)}, - {"b", pCE(200)}, - {"bc", pCE(201)}, - {"bd", pCE(203)}, - // shares suffixes with a* - {"Ab", pCE(301)}, - {"A", pCE(300)}, - {"Ac", pCE(304)}, - {"Abc", pCE(302)}, - {"Abd", pCE(303)}, - // starter to be ignored - {"z", pCE(1000)}, -} - -func TestContract(t *testing.T) { - const ( - totalElements = 5 + 5 + 4 - ) - b := newBuilder(t, contractTest) - o := &b.root - b.processContractions(o) - - indexMap := make(map[int]bool) - handleMap := make(map[rune]*entry) - for e := o.front(); e != nil; e, _ = e.nextIndexed() { - if e.contractionHandle.n > 0 { - handleMap[e.runes[0]] = e - indexMap[e.contractionHandle.index] = true - } - } - // Verify uniquing. - if len(indexMap) != 2 { - t.Errorf("number of tries is %d; want %d", len(indexMap), 2) - } - for _, tt := range contractTest { - e, ok := handleMap[[]rune(tt.str)[0]] - if !ok { - continue - } - str := tt.str[1:] - offset, n := lookup(&b.t.ContractTries, e.contractionHandle, []byte(str)) - if len(str) != n { - t.Errorf("%s: bytes consumed==%d; want %d", tt.str, n, len(str)) - } - ce := b.t.ContractElem[offset+e.contractionIndex] - if want, _ := makeCE(tt.ces[0]); want != ce { - t.Errorf("%s: element %X; want %X", tt.str, ce, want) - } - } - if len(b.t.ContractElem) != totalElements { - t.Errorf("len(expandElem)==%d; want %d", len(b.t.ContractElem), totalElements) - } -} diff --git a/vendor/golang.org/x/text/collate/build/colelem_test.go b/vendor/golang.org/x/text/collate/build/colelem_test.go deleted file mode 100644 index d0c8d07d..00000000 --- a/vendor/golang.org/x/text/collate/build/colelem_test.go +++ /dev/null @@ -1,215 +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 build - -import ( - "testing" - - "golang.org/x/text/internal/colltab" -) - -type ceTest struct { - f func(in []int) (uint32, error) - arg []int - val uint32 -} - -func normalCE(in []int) (ce uint32, err error) { - return makeCE(rawCE{w: in[:3], ccc: uint8(in[3])}) -} - -func expandCE(in []int) (ce uint32, err error) { - return makeExpandIndex(in[0]) -} - -func contractCE(in []int) (ce uint32, err error) { - return makeContractIndex(ctHandle{in[0], in[1]}, in[2]) -} - -func decompCE(in []int) (ce uint32, err error) { - return makeDecompose(in[0], in[1]) -} - -var ceTests = []ceTest{ - {normalCE, []int{0, 0, 0, 0}, 0xA0000000}, - {normalCE, []int{0, 0x28, 3, 0}, 0xA0002803}, - {normalCE, []int{0, 0x28, 3, 0xFF}, 0xAFF02803}, - {normalCE, []int{100, defaultSecondary, 3, 0}, 0x0000C883}, - // non-ignorable primary with non-default secondary - {normalCE, []int{100, 0x28, defaultTertiary, 0}, 0x4000C828}, - {normalCE, []int{100, defaultSecondary + 8, 3, 0}, 0x0000C983}, - {normalCE, []int{100, 0, 3, 0}, 0xFFFF}, // non-ignorable primary with non-supported secondary - {normalCE, []int{100, 1, 3, 0}, 0xFFFF}, - {normalCE, []int{1 << maxPrimaryBits, defaultSecondary, 0, 0}, 0xFFFF}, - {normalCE, []int{0, 1 << maxSecondaryBits, 0, 0}, 0xFFFF}, - {normalCE, []int{100, defaultSecondary, 1 << maxTertiaryBits, 0}, 0xFFFF}, - {normalCE, []int{0x123, defaultSecondary, 8, 0xFF}, 0x88FF0123}, - {normalCE, []int{0x123, defaultSecondary + 1, 8, 0xFF}, 0xFFFF}, - - {contractCE, []int{0, 0, 0}, 0xC0000000}, - {contractCE, []int{1, 1, 1}, 0xC0010011}, - {contractCE, []int{1, (1 << maxNBits) - 1, 1}, 0xC001001F}, - {contractCE, []int{(1 << maxTrieIndexBits) - 1, 1, 1}, 0xC001FFF1}, - {contractCE, []int{1, 1, (1 << maxContractOffsetBits) - 1}, 0xDFFF0011}, - {contractCE, []int{1, (1 << maxNBits), 1}, 0xFFFF}, - {contractCE, []int{(1 << maxTrieIndexBits), 1, 1}, 0xFFFF}, - {contractCE, []int{1, (1 << maxContractOffsetBits), 1}, 0xFFFF}, - - {expandCE, []int{0}, 0xE0000000}, - {expandCE, []int{5}, 0xE0000005}, - {expandCE, []int{(1 << maxExpandIndexBits) - 1}, 0xE000FFFF}, - {expandCE, []int{1 << maxExpandIndexBits}, 0xFFFF}, - - {decompCE, []int{0, 0}, 0xF0000000}, - {decompCE, []int{1, 1}, 0xF0000101}, - {decompCE, []int{0x1F, 0x1F}, 0xF0001F1F}, - {decompCE, []int{256, 0x1F}, 0xFFFF}, - {decompCE, []int{0x1F, 256}, 0xFFFF}, -} - -func TestColElem(t *testing.T) { - for i, tt := range ceTests { - in := make([]int, len(tt.arg)) - copy(in, tt.arg) - ce, err := tt.f(in) - if tt.val == 0xFFFF { - if err == nil { - t.Errorf("%d: expected error for args %x", i, tt.arg) - } - continue - } - if err != nil { - t.Errorf("%d: unexpected error: %v", i, err.Error()) - } - if ce != tt.val { - t.Errorf("%d: colElem=%X; want %X", i, ce, tt.val) - } - } -} - -func mkRawCES(in [][]int) []rawCE { - out := []rawCE{} - for _, w := range in { - out = append(out, rawCE{w: w}) - } - return out -} - -type weightsTest struct { - a, b [][]int - level colltab.Level - result int -} - -var nextWeightTests = []weightsTest{ - { - a: [][]int{{100, 20, 5, 0}}, - b: [][]int{{101, defaultSecondary, defaultTertiary, 0}}, - level: colltab.Primary, - }, - { - a: [][]int{{100, 20, 5, 0}}, - b: [][]int{{100, 21, defaultTertiary, 0}}, - level: colltab.Secondary, - }, - { - a: [][]int{{100, 20, 5, 0}}, - b: [][]int{{100, 20, 6, 0}}, - level: colltab.Tertiary, - }, - { - a: [][]int{{100, 20, 5, 0}}, - b: [][]int{{100, 20, 5, 0}}, - level: colltab.Identity, - }, -} - -var extra = [][]int{{200, 32, 8, 0}, {0, 32, 8, 0}, {0, 0, 8, 0}, {0, 0, 0, 0}} - -func TestNextWeight(t *testing.T) { - for i, tt := range nextWeightTests { - test := func(l colltab.Level, tt weightsTest, a, gold [][]int) { - res := nextWeight(tt.level, mkRawCES(a)) - if !equalCEArrays(mkRawCES(gold), res) { - t.Errorf("%d:%d: expected weights %d; found %d", i, l, gold, res) - } - } - test(-1, tt, tt.a, tt.b) - for l := colltab.Primary; l <= colltab.Tertiary; l++ { - if tt.level <= l { - test(l, tt, append(tt.a, extra[l]), tt.b) - } else { - test(l, tt, append(tt.a, extra[l]), append(tt.b, extra[l])) - } - } - } -} - -var compareTests = []weightsTest{ - { - [][]int{{100, 20, 5, 0}}, - [][]int{{100, 20, 5, 0}}, - colltab.Identity, - 0, - }, - { - [][]int{{100, 20, 5, 0}, extra[0]}, - [][]int{{100, 20, 5, 1}}, - colltab.Primary, - 1, - }, - { - [][]int{{100, 20, 5, 0}}, - [][]int{{101, 20, 5, 0}}, - colltab.Primary, - -1, - }, - { - [][]int{{101, 20, 5, 0}}, - [][]int{{100, 20, 5, 0}}, - colltab.Primary, - 1, - }, - { - [][]int{{100, 0, 0, 0}, {0, 20, 5, 0}}, - [][]int{{0, 20, 5, 0}, {100, 0, 0, 0}}, - colltab.Identity, - 0, - }, - { - [][]int{{100, 20, 5, 0}}, - [][]int{{100, 21, 5, 0}}, - colltab.Secondary, - -1, - }, - { - [][]int{{100, 20, 5, 0}}, - [][]int{{100, 20, 2, 0}}, - colltab.Tertiary, - 1, - }, - { - [][]int{{100, 20, 5, 1}}, - [][]int{{100, 20, 5, 2}}, - colltab.Quaternary, - -1, - }, -} - -func TestCompareWeights(t *testing.T) { - for i, tt := range compareTests { - test := func(tt weightsTest, a, b [][]int) { - res, level := compareWeights(mkRawCES(a), mkRawCES(b)) - if res != tt.result { - t.Errorf("%d: expected comparison result %d; found %d", i, tt.result, res) - } - if level != tt.level { - t.Errorf("%d: expected level %d; found %d", i, tt.level, level) - } - } - test(tt, tt.a, tt.b) - test(tt, append(tt.a, extra[0]), append(tt.b, extra[0])) - } -} diff --git a/vendor/golang.org/x/text/collate/build/contract_test.go b/vendor/golang.org/x/text/collate/build/contract_test.go deleted file mode 100644 index 2e0eaecd..00000000 --- a/vendor/golang.org/x/text/collate/build/contract_test.go +++ /dev/null @@ -1,266 +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 build - -import ( - "bytes" - "sort" - "testing" - - "golang.org/x/text/internal/colltab" -) - -var largetosmall = []stridx{ - {"a", 5}, - {"ab", 4}, - {"abc", 3}, - {"abcd", 2}, - {"abcde", 1}, - {"abcdef", 0}, -} - -var offsetSortTests = [][]stridx{ - { - {"bcde", 1}, - {"bc", 5}, - {"ab", 4}, - {"bcd", 3}, - {"abcd", 0}, - {"abc", 2}, - }, - largetosmall, -} - -func TestOffsetSort(t *testing.T) { - for i, st := range offsetSortTests { - sort.Sort(offsetSort(st)) - for j, si := range st { - if j != si.index { - t.Errorf("%d: failed: %v", i, st) - } - } - } - for i, tt := range genStateTests { - // ensure input is well-formed - sort.Sort(offsetSort(tt.in)) - for j, si := range tt.in { - if si.index != j+1 { - t.Errorf("%dth sort failed: %v", i, tt.in) - } - } - } -} - -var genidxtest1 = []stridx{ - {"bcde", 3}, - {"bc", 6}, - {"ab", 2}, - {"bcd", 5}, - {"abcd", 0}, - {"abc", 1}, - {"bcdf", 4}, -} - -var genidxSortTests = [][]stridx{ - genidxtest1, - largetosmall, -} - -func TestGenIdxSort(t *testing.T) { - for i, st := range genidxSortTests { - sort.Sort(genidxSort(st)) - for j, si := range st { - if j != si.index { - t.Errorf("%dth sort failed %v", i, st) - break - } - } - } -} - -var entrySortTests = []colltab.ContractTrieSet{ - { - {10, 0, 1, 3}, - {99, 0, 1, 0}, - {20, 50, 0, 2}, - {30, 0, 1, 1}, - }, -} - -func TestEntrySort(t *testing.T) { - for i, et := range entrySortTests { - sort.Sort(entrySort(et)) - for j, fe := range et { - if j != int(fe.I) { - t.Errorf("%dth sort failed %v", i, et) - break - } - } - } -} - -type GenStateTest struct { - in []stridx - firstBlockLen int - out colltab.ContractTrieSet -} - -var genStateTests = []GenStateTest{ - {[]stridx{ - {"abc", 1}, - }, - 1, - colltab.ContractTrieSet{ - {'a', 0, 1, noIndex}, - {'b', 0, 1, noIndex}, - {'c', 'c', final, 1}, - }, - }, - {[]stridx{ - {"abc", 1}, - {"abd", 2}, - {"abe", 3}, - }, - 1, - colltab.ContractTrieSet{ - {'a', 0, 1, noIndex}, - {'b', 0, 1, noIndex}, - {'c', 'e', final, 1}, - }, - }, - {[]stridx{ - {"abc", 1}, - {"ab", 2}, - {"a", 3}, - }, - 1, - colltab.ContractTrieSet{ - {'a', 0, 1, 3}, - {'b', 0, 1, 2}, - {'c', 'c', final, 1}, - }, - }, - {[]stridx{ - {"abc", 1}, - {"abd", 2}, - {"ab", 3}, - {"ac", 4}, - {"a", 5}, - {"b", 6}, - }, - 2, - colltab.ContractTrieSet{ - {'b', 'b', final, 6}, - {'a', 0, 2, 5}, - {'c', 'c', final, 4}, - {'b', 0, 1, 3}, - {'c', 'd', final, 1}, - }, - }, - {[]stridx{ - {"bcde", 2}, - {"bc", 7}, - {"ab", 6}, - {"bcd", 5}, - {"abcd", 1}, - {"abc", 4}, - {"bcdf", 3}, - }, - 2, - colltab.ContractTrieSet{ - {'b', 3, 1, noIndex}, - {'a', 0, 1, noIndex}, - {'b', 0, 1, 6}, - {'c', 0, 1, 4}, - {'d', 'd', final, 1}, - {'c', 0, 1, 7}, - {'d', 0, 1, 5}, - {'e', 'f', final, 2}, - }, - }, -} - -func TestGenStates(t *testing.T) { - for i, tt := range genStateTests { - si := []stridx{} - for _, e := range tt.in { - si = append(si, e) - } - // ensure input is well-formed - sort.Sort(genidxSort(si)) - ct := colltab.ContractTrieSet{} - n, _ := genStates(&ct, si) - if nn := tt.firstBlockLen; nn != n { - t.Errorf("%d: block len %v; want %v", i, n, nn) - } - if lv, lw := len(ct), len(tt.out); lv != lw { - t.Errorf("%d: len %v; want %v", i, lv, lw) - continue - } - for j, fe := range tt.out { - const msg = "%d:%d: value %s=%v; want %v" - if fe.L != ct[j].L { - t.Errorf(msg, i, j, "l", ct[j].L, fe.L) - } - if fe.H != ct[j].H { - t.Errorf(msg, i, j, "h", ct[j].H, fe.H) - } - if fe.N != ct[j].N { - t.Errorf(msg, i, j, "n", ct[j].N, fe.N) - } - if fe.I != ct[j].I { - t.Errorf(msg, i, j, "i", ct[j].I, fe.I) - } - } - } -} - -func TestLookupContraction(t *testing.T) { - for i, tt := range genStateTests { - input := []string{} - for _, e := range tt.in { - input = append(input, e.str) - } - cts := colltab.ContractTrieSet{} - h, _ := appendTrie(&cts, input) - for j, si := range tt.in { - str := si.str - for _, s := range []string{str, str + "X"} { - msg := "%d:%d: %s(%s) %v; want %v" - idx, sn := lookup(&cts, h, []byte(s)) - if idx != si.index { - t.Errorf(msg, i, j, "index", s, idx, si.index) - } - if sn != len(str) { - t.Errorf(msg, i, j, "sn", s, sn, len(str)) - } - } - } - } -} - -func TestPrintContractionTrieSet(t *testing.T) { - testdata := colltab.ContractTrieSet(genStateTests[4].out) - buf := &bytes.Buffer{} - print(&testdata, buf, "test") - if contractTrieOutput != buf.String() { - t.Errorf("output differs; found\n%s", buf.String()) - println(string(buf.Bytes())) - } -} - -const contractTrieOutput = `// testCTEntries: 8 entries, 32 bytes -var testCTEntries = [8]struct{L,H,N,I uint8}{ - {0x62, 0x3, 1, 255}, - {0x61, 0x0, 1, 255}, - {0x62, 0x0, 1, 6}, - {0x63, 0x0, 1, 4}, - {0x64, 0x64, 0, 1}, - {0x63, 0x0, 1, 7}, - {0x64, 0x0, 1, 5}, - {0x65, 0x66, 0, 2}, -} -var testContractTrieSet = colltab.ContractTrieSet( testCTEntries[:] ) -` diff --git a/vendor/golang.org/x/text/collate/build/order_test.go b/vendor/golang.org/x/text/collate/build/order_test.go deleted file mode 100644 index 0e174bfb..00000000 --- a/vendor/golang.org/x/text/collate/build/order_test.go +++ /dev/null @@ -1,229 +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 build - -import ( - "strconv" - "testing" - - "golang.org/x/text/internal/colltab" -) - -type entryTest struct { - f func(in []int) (uint32, error) - arg []int - val uint32 -} - -// makeList returns a list of entries of length n+2, with n normal -// entries plus a leading and trailing anchor. -func makeList(n int) []*entry { - es := make([]*entry, n+2) - weights := []rawCE{{w: []int{100, 20, 5, 0}}} - for i := range es { - runes := []rune{rune(i)} - es[i] = &entry{ - runes: runes, - elems: weights, - } - weights = nextWeight(colltab.Primary, weights) - } - for i := 1; i < len(es); i++ { - es[i-1].next = es[i] - es[i].prev = es[i-1] - _, es[i-1].level = compareWeights(es[i-1].elems, es[i].elems) - } - es[0].exclude = true - es[0].logical = firstAnchor - es[len(es)-1].exclude = true - es[len(es)-1].logical = lastAnchor - return es -} - -func TestNextIndexed(t *testing.T) { - const n = 5 - es := makeList(n) - for i := int64(0); i < 1<<n; i++ { - mask := strconv.FormatInt(i+(1<<n), 2) - for i, c := range mask { - es[i].exclude = c == '1' - } - e := es[0] - for i, c := range mask { - if c == '0' { - e, _ = e.nextIndexed() - if e != es[i] { - t.Errorf("%d: expected entry %d; found %d", i, es[i].elems, e.elems) - } - } - } - if e, _ = e.nextIndexed(); e != nil { - t.Errorf("%d: expected nil entry; found %d", i, e.elems) - } - } -} - -func TestRemove(t *testing.T) { - const n = 5 - for i := int64(0); i < 1<<n; i++ { - es := makeList(n) - mask := strconv.FormatInt(i+(1<<n), 2) - for i, c := range mask { - if c == '0' { - es[i].remove() - } - } - e := es[0] - for i, c := range mask { - if c == '1' { - if e != es[i] { - t.Errorf("%d: expected entry %d; found %d", i, es[i].elems, e.elems) - } - e, _ = e.nextIndexed() - } - } - if e != nil { - t.Errorf("%d: expected nil entry; found %d", i, e.elems) - } - } -} - -// nextPerm generates the next permutation of the array. The starting -// permutation is assumed to be a list of integers sorted in increasing order. -// It returns false if there are no more permuations left. -func nextPerm(a []int) bool { - i := len(a) - 2 - for ; i >= 0; i-- { - if a[i] < a[i+1] { - break - } - } - if i < 0 { - return false - } - for j := len(a) - 1; j >= i; j-- { - if a[j] > a[i] { - a[i], a[j] = a[j], a[i] - break - } - } - for j := i + 1; j < (len(a)+i+1)/2; j++ { - a[j], a[len(a)+i-j] = a[len(a)+i-j], a[j] - } - return true -} - -func TestInsertAfter(t *testing.T) { - const n = 5 - orig := makeList(n) - perm := make([]int, n) - for i := range perm { - perm[i] = i + 1 - } - for ok := true; ok; ok = nextPerm(perm) { - es := makeList(n) - last := es[0] - for _, i := range perm { - last.insertAfter(es[i]) - last = es[i] - } - for _, e := range es { - e.elems = es[0].elems - } - e := es[0] - for _, i := range perm { - e, _ = e.nextIndexed() - if e.runes[0] != orig[i].runes[0] { - t.Errorf("%d:%d: expected entry %X; found %X", perm, i, orig[i].runes, e.runes) - break - } - } - } -} - -func TestInsertBefore(t *testing.T) { - const n = 5 - orig := makeList(n) - perm := make([]int, n) - for i := range perm { - perm[i] = i + 1 - } - for ok := true; ok; ok = nextPerm(perm) { - es := makeList(n) - last := es[len(es)-1] - for _, i := range perm { - last.insertBefore(es[i]) - last = es[i] - } - for _, e := range es { - e.elems = es[0].elems - } - e := es[0] - for i := n - 1; i >= 0; i-- { - e, _ = e.nextIndexed() - if e.runes[0] != rune(perm[i]) { - t.Errorf("%d:%d: expected entry %X; found %X", perm, i, orig[i].runes, e.runes) - break - } - } - } -} - -type entryLessTest struct { - a, b *entry - res bool -} - -var ( - w1 = []rawCE{{w: []int{100, 20, 5, 5}}} - w2 = []rawCE{{w: []int{101, 20, 5, 5}}} -) - -var entryLessTests = []entryLessTest{ - {&entry{str: "a", elems: w1}, - &entry{str: "a", elems: w1}, - false, - }, - {&entry{str: "a", elems: w1}, - &entry{str: "a", elems: w2}, - true, - }, - {&entry{str: "a", elems: w1}, - &entry{str: "b", elems: w1}, - true, - }, - {&entry{str: "a", elems: w2}, - &entry{str: "a", elems: w1}, - false, - }, - {&entry{str: "c", elems: w1}, - &entry{str: "b", elems: w1}, - false, - }, - {&entry{str: "a", elems: w1, logical: firstAnchor}, - &entry{str: "a", elems: w1}, - true, - }, - {&entry{str: "a", elems: w1}, - &entry{str: "b", elems: w1, logical: firstAnchor}, - false, - }, - {&entry{str: "b", elems: w1}, - &entry{str: "a", elems: w1, logical: lastAnchor}, - true, - }, - {&entry{str: "a", elems: w1, logical: lastAnchor}, - &entry{str: "c", elems: w1}, - false, - }, -} - -func TestEntryLess(t *testing.T) { - for i, tt := range entryLessTests { - if res := entryLess(tt.a, tt.b); res != tt.res { - t.Errorf("%d: was %v; want %v", i, res, tt.res) - } - } -} diff --git a/vendor/golang.org/x/text/collate/build/trie_test.go b/vendor/golang.org/x/text/collate/build/trie_test.go deleted file mode 100644 index 4d4f6e4d..00000000 --- a/vendor/golang.org/x/text/collate/build/trie_test.go +++ /dev/null @@ -1,107 +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 build - -import ( - "bytes" - "fmt" - "testing" -) - -// We take the smallest, largest and an arbitrary value for each -// of the UTF-8 sequence lengths. -var testRunes = []rune{ - 0x01, 0x0C, 0x7F, // 1-byte sequences - 0x80, 0x100, 0x7FF, // 2-byte sequences - 0x800, 0x999, 0xFFFF, // 3-byte sequences - 0x10000, 0x10101, 0x10FFFF, // 4-byte sequences - 0x200, 0x201, 0x202, 0x210, 0x215, // five entries in one sparse block -} - -func makeTestTrie(t *testing.T) trie { - n := newNode() - for i, r := range testRunes { - n.insert(r, uint32(i)) - } - idx := newTrieBuilder() - idx.addTrie(n) - tr, err := idx.generate() - if err != nil { - t.Errorf(err.Error()) - } - return *tr -} - -func TestGenerateTrie(t *testing.T) { - testdata := makeTestTrie(t) - buf := &bytes.Buffer{} - testdata.printArrays(buf, "test") - fmt.Fprintf(buf, "var testTrie = ") - testdata.printStruct(buf, &trieHandle{19, 0}, "test") - if output != buf.String() { - t.Error("output differs") - } -} - -var output = `// testValues: 832 entries, 3328 bytes -// Block 2 is the null block. -var testValues = [832]uint32 { - // Block 0x0, offset 0x0 - 0x000c:0x00000001, - // Block 0x1, offset 0x40 - 0x007f:0x00000002, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0x00c0:0x00000003, - // Block 0x4, offset 0x100 - 0x0100:0x00000004, - // Block 0x5, offset 0x140 - 0x0140:0x0000000c, 0x0141:0x0000000d, 0x0142:0x0000000e, - 0x0150:0x0000000f, - 0x0155:0x00000010, - // Block 0x6, offset 0x180 - 0x01bf:0x00000005, - // Block 0x7, offset 0x1c0 - 0x01c0:0x00000006, - // Block 0x8, offset 0x200 - 0x0219:0x00000007, - // Block 0x9, offset 0x240 - 0x027f:0x00000008, - // Block 0xa, offset 0x280 - 0x0280:0x00000009, - // Block 0xb, offset 0x2c0 - 0x02c1:0x0000000a, - // Block 0xc, offset 0x300 - 0x033f:0x0000000b, -} - -// testLookup: 640 entries, 1280 bytes -// Block 0 is the null block. -var testLookup = [640]uint16 { - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0x0e0:0x05, 0x0e6:0x06, - // Block 0x4, offset 0x100 - 0x13f:0x07, - // Block 0x5, offset 0x140 - 0x140:0x08, 0x144:0x09, - // Block 0x6, offset 0x180 - 0x190:0x03, - // Block 0x7, offset 0x1c0 - 0x1ff:0x0a, - // Block 0x8, offset 0x200 - 0x20f:0x05, - // Block 0x9, offset 0x240 - 0x242:0x01, 0x244:0x02, - 0x248:0x03, - 0x25f:0x04, - 0x260:0x01, - 0x26f:0x02, - 0x270:0x04, 0x274:0x06, -} - -var testTrie = trie{ testLookup[1216:], testValues[0:], testLookup[:], testValues[:]}` diff --git a/vendor/golang.org/x/text/collate/collate_test.go b/vendor/golang.org/x/text/collate/collate_test.go deleted file mode 100644 index 0e78b96f..00000000 --- a/vendor/golang.org/x/text/collate/collate_test.go +++ /dev/null @@ -1,482 +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 collate - -import ( - "bytes" - "testing" - - "golang.org/x/text/internal/colltab" - "golang.org/x/text/language" -) - -type weightsTest struct { - opt opts - in, out ColElems -} - -type opts struct { - lev int - alt alternateHandling - top int - - backwards bool - caseLevel bool -} - -// ignore returns an initialized boolean array based on the given Level. -// A negative value means using the default setting of quaternary. -func ignore(level colltab.Level) (ignore [colltab.NumLevels]bool) { - if level < 0 { - level = colltab.Quaternary - } - for i := range ignore { - ignore[i] = level < colltab.Level(i) - } - return ignore -} - -func makeCE(w []int) colltab.Elem { - ce, err := colltab.MakeElem(w[0], w[1], w[2], uint8(w[3])) - if err != nil { - panic(err) - } - return ce -} - -func (o opts) collator() *Collator { - c := &Collator{ - options: options{ - ignore: ignore(colltab.Level(o.lev - 1)), - alternate: o.alt, - backwards: o.backwards, - caseLevel: o.caseLevel, - variableTop: uint32(o.top), - }, - } - return c -} - -const ( - maxQ = 0x1FFFFF -) - -func wpq(p, q int) Weights { - return W(p, defaults.Secondary, defaults.Tertiary, q) -} - -func wsq(s, q int) Weights { - return W(0, s, defaults.Tertiary, q) -} - -func wq(q int) Weights { - return W(0, 0, 0, q) -} - -var zero = W(0, 0, 0, 0) - -var processTests = []weightsTest{ - // Shifted - { // simple sequence of non-variables - opt: opts{alt: altShifted, top: 100}, - in: ColElems{W(200), W(300), W(400)}, - out: ColElems{wpq(200, maxQ), wpq(300, maxQ), wpq(400, maxQ)}, - }, - { // first is a variable - opt: opts{alt: altShifted, top: 250}, - in: ColElems{W(200), W(300), W(400)}, - out: ColElems{wq(200), wpq(300, maxQ), wpq(400, maxQ)}, - }, - { // all but first are variable - opt: opts{alt: altShifted, top: 999}, - in: ColElems{W(1000), W(200), W(300), W(400)}, - out: ColElems{wpq(1000, maxQ), wq(200), wq(300), wq(400)}, - }, - { // first is a modifier - opt: opts{alt: altShifted, top: 999}, - in: ColElems{W(0, 10), W(1000)}, - out: ColElems{wsq(10, maxQ), wpq(1000, maxQ)}, - }, - { // primary ignorables - opt: opts{alt: altShifted, top: 250}, - in: ColElems{W(200), W(0, 10), W(300), W(0, 15), W(400)}, - out: ColElems{wq(200), zero, wpq(300, maxQ), wsq(15, maxQ), wpq(400, maxQ)}, - }, - { // secondary ignorables - opt: opts{alt: altShifted, top: 250}, - in: ColElems{W(200), W(0, 0, 10), W(300), W(0, 0, 15), W(400)}, - out: ColElems{wq(200), zero, wpq(300, maxQ), W(0, 0, 15, maxQ), wpq(400, maxQ)}, - }, - { // tertiary ignorables, no change - opt: opts{alt: altShifted, top: 250}, - in: ColElems{W(200), zero, W(300), zero, W(400)}, - out: ColElems{wq(200), zero, wpq(300, maxQ), zero, wpq(400, maxQ)}, - }, - - // ShiftTrimmed (same as Shifted) - { // simple sequence of non-variables - opt: opts{alt: altShiftTrimmed, top: 100}, - in: ColElems{W(200), W(300), W(400)}, - out: ColElems{wpq(200, maxQ), wpq(300, maxQ), wpq(400, maxQ)}, - }, - { // first is a variable - opt: opts{alt: altShiftTrimmed, top: 250}, - in: ColElems{W(200), W(300), W(400)}, - out: ColElems{wq(200), wpq(300, maxQ), wpq(400, maxQ)}, - }, - { // all but first are variable - opt: opts{alt: altShiftTrimmed, top: 999}, - in: ColElems{W(1000), W(200), W(300), W(400)}, - out: ColElems{wpq(1000, maxQ), wq(200), wq(300), wq(400)}, - }, - { // first is a modifier - opt: opts{alt: altShiftTrimmed, top: 999}, - in: ColElems{W(0, 10), W(1000)}, - out: ColElems{wsq(10, maxQ), wpq(1000, maxQ)}, - }, - { // primary ignorables - opt: opts{alt: altShiftTrimmed, top: 250}, - in: ColElems{W(200), W(0, 10), W(300), W(0, 15), W(400)}, - out: ColElems{wq(200), zero, wpq(300, maxQ), wsq(15, maxQ), wpq(400, maxQ)}, - }, - { // secondary ignorables - opt: opts{alt: altShiftTrimmed, top: 250}, - in: ColElems{W(200), W(0, 0, 10), W(300), W(0, 0, 15), W(400)}, - out: ColElems{wq(200), zero, wpq(300, maxQ), W(0, 0, 15, maxQ), wpq(400, maxQ)}, - }, - { // tertiary ignorables, no change - opt: opts{alt: altShiftTrimmed, top: 250}, - in: ColElems{W(200), zero, W(300), zero, W(400)}, - out: ColElems{wq(200), zero, wpq(300, maxQ), zero, wpq(400, maxQ)}, - }, - - // Blanked - { // simple sequence of non-variables - opt: opts{alt: altBlanked, top: 100}, - in: ColElems{W(200), W(300), W(400)}, - out: ColElems{W(200), W(300), W(400)}, - }, - { // first is a variable - opt: opts{alt: altBlanked, top: 250}, - in: ColElems{W(200), W(300), W(400)}, - out: ColElems{zero, W(300), W(400)}, - }, - { // all but first are variable - opt: opts{alt: altBlanked, top: 999}, - in: ColElems{W(1000), W(200), W(300), W(400)}, - out: ColElems{W(1000), zero, zero, zero}, - }, - { // first is a modifier - opt: opts{alt: altBlanked, top: 999}, - in: ColElems{W(0, 10), W(1000)}, - out: ColElems{W(0, 10), W(1000)}, - }, - { // primary ignorables - opt: opts{alt: altBlanked, top: 250}, - in: ColElems{W(200), W(0, 10), W(300), W(0, 15), W(400)}, - out: ColElems{zero, zero, W(300), W(0, 15), W(400)}, - }, - { // secondary ignorables - opt: opts{alt: altBlanked, top: 250}, - in: ColElems{W(200), W(0, 0, 10), W(300), W(0, 0, 15), W(400)}, - out: ColElems{zero, zero, W(300), W(0, 0, 15), W(400)}, - }, - { // tertiary ignorables, no change - opt: opts{alt: altBlanked, top: 250}, - in: ColElems{W(200), zero, W(300), zero, W(400)}, - out: ColElems{zero, zero, W(300), zero, W(400)}, - }, - - // Non-ignorable: input is always equal to output. - { // all but first are variable - opt: opts{alt: altNonIgnorable, top: 999}, - in: ColElems{W(1000), W(200), W(300), W(400)}, - out: ColElems{W(1000), W(200), W(300), W(400)}, - }, - { // primary ignorables - opt: opts{alt: altNonIgnorable, top: 250}, - in: ColElems{W(200), W(0, 10), W(300), W(0, 15), W(400)}, - out: ColElems{W(200), W(0, 10), W(300), W(0, 15), W(400)}, - }, - { // secondary ignorables - opt: opts{alt: altNonIgnorable, top: 250}, - in: ColElems{W(200), W(0, 0, 10), W(300), W(0, 0, 15), W(400)}, - out: ColElems{W(200), W(0, 0, 10), W(300), W(0, 0, 15), W(400)}, - }, - { // tertiary ignorables, no change - opt: opts{alt: altNonIgnorable, top: 250}, - in: ColElems{W(200), zero, W(300), zero, W(400)}, - out: ColElems{W(200), zero, W(300), zero, W(400)}, - }, -} - -func TestProcessWeights(t *testing.T) { - for i, tt := range processTests { - in := convertFromWeights(tt.in) - out := convertFromWeights(tt.out) - processWeights(tt.opt.alt, uint32(tt.opt.top), in) - for j, w := range in { - if w != out[j] { - t.Errorf("%d: Weights %d was %v; want %v", i, j, w, out[j]) - } - } - } -} - -type keyFromElemTest struct { - opt opts - in ColElems - out []byte -} - -var defS = byte(defaults.Secondary) -var defT = byte(defaults.Tertiary) - -const sep = 0 // separator byte - -var keyFromElemTests = []keyFromElemTest{ - { // simple primary and secondary weights. - opts{alt: altShifted}, - ColElems{W(0x200), W(0x7FFF), W(0, 0x30), W(0x100)}, - []byte{0x2, 0, 0x7F, 0xFF, 0x1, 0x00, // primary - sep, sep, 0, defS, 0, defS, 0, 0x30, 0, defS, // secondary - sep, sep, defT, defT, defT, defT, // tertiary - sep, 0xFF, 0xFF, 0xFF, 0xFF, // quaternary - }, - }, - { // same as first, but with zero element that need to be removed - opts{alt: altShifted}, - ColElems{W(0x200), zero, W(0x7FFF), W(0, 0x30), zero, W(0x100)}, - []byte{0x2, 0, 0x7F, 0xFF, 0x1, 0x00, // primary - sep, sep, 0, defS, 0, defS, 0, 0x30, 0, defS, // secondary - sep, sep, defT, defT, defT, defT, // tertiary - sep, 0xFF, 0xFF, 0xFF, 0xFF, // quaternary - }, - }, - { // same as first, with large primary values - opts{alt: altShifted}, - ColElems{W(0x200), W(0x8000), W(0, 0x30), W(0x12345)}, - []byte{0x2, 0, 0x80, 0x80, 0x00, 0x81, 0x23, 0x45, // primary - sep, sep, 0, defS, 0, defS, 0, 0x30, 0, defS, // secondary - sep, sep, defT, defT, defT, defT, // tertiary - sep, 0xFF, 0xFF, 0xFF, 0xFF, // quaternary - }, - }, - { // same as first, but with the secondary level backwards - opts{alt: altShifted, backwards: true}, - ColElems{W(0x200), W(0x7FFF), W(0, 0x30), W(0x100)}, - []byte{0x2, 0, 0x7F, 0xFF, 0x1, 0x00, // primary - sep, sep, 0, defS, 0, 0x30, 0, defS, 0, defS, // secondary - sep, sep, defT, defT, defT, defT, // tertiary - sep, 0xFF, 0xFF, 0xFF, 0xFF, // quaternary - }, - }, - { // same as first, ignoring quaternary level - opts{alt: altShifted, lev: 3}, - ColElems{W(0x200), zero, W(0x7FFF), W(0, 0x30), zero, W(0x100)}, - []byte{0x2, 0, 0x7F, 0xFF, 0x1, 0x00, // primary - sep, sep, 0, defS, 0, defS, 0, 0x30, 0, defS, // secondary - sep, sep, defT, defT, defT, defT, // tertiary - }, - }, - { // same as first, ignoring tertiary level - opts{alt: altShifted, lev: 2}, - ColElems{W(0x200), zero, W(0x7FFF), W(0, 0x30), zero, W(0x100)}, - []byte{0x2, 0, 0x7F, 0xFF, 0x1, 0x00, // primary - sep, sep, 0, defS, 0, defS, 0, 0x30, 0, defS, // secondary - }, - }, - { // same as first, ignoring secondary level - opts{alt: altShifted, lev: 1}, - ColElems{W(0x200), zero, W(0x7FFF), W(0, 0x30), zero, W(0x100)}, - []byte{0x2, 0, 0x7F, 0xFF, 0x1, 0x00}, - }, - { // simple primary and secondary weights. - opts{alt: altShiftTrimmed, top: 0x250}, - ColElems{W(0x300), W(0x200), W(0x7FFF), W(0, 0x30), W(0x800)}, - []byte{0x3, 0, 0x7F, 0xFF, 0x8, 0x00, // primary - sep, sep, 0, defS, 0, defS, 0, 0x30, 0, defS, // secondary - sep, sep, defT, defT, defT, defT, // tertiary - sep, 0xFF, 0x2, 0, // quaternary - }, - }, - { // as first, primary with case level enabled - opts{alt: altShifted, lev: 1, caseLevel: true}, - ColElems{W(0x200), W(0x7FFF), W(0, 0x30), W(0x100)}, - []byte{0x2, 0, 0x7F, 0xFF, 0x1, 0x00, // primary - sep, sep, // secondary - sep, sep, defT, defT, defT, defT, // tertiary - }, - }, -} - -func TestKeyFromElems(t *testing.T) { - buf := Buffer{} - for i, tt := range keyFromElemTests { - buf.Reset() - in := convertFromWeights(tt.in) - processWeights(tt.opt.alt, uint32(tt.opt.top), in) - tt.opt.collator().keyFromElems(&buf, in) - res := buf.key - if len(res) != len(tt.out) { - t.Errorf("%d: len(ws) was %d; want %d (%X should be %X)", i, len(res), len(tt.out), res, tt.out) - } - n := len(res) - if len(tt.out) < n { - n = len(tt.out) - } - for j, c := range res[:n] { - if c != tt.out[j] { - t.Errorf("%d: byte %d was %X; want %X", i, j, c, tt.out[j]) - } - } - } -} - -func TestGetColElems(t *testing.T) { - for i, tt := range appendNextTests { - c, err := makeTable(tt.in) - if err != nil { - // error is reported in TestAppendNext - continue - } - // Create one large test per table - str := make([]byte, 0, 4000) - out := ColElems{} - for len(str) < 3000 { - for _, chk := range tt.chk { - str = append(str, chk.in[:chk.n]...) - out = append(out, chk.out...) - } - } - for j, chk := range append(tt.chk, check{string(str), len(str), out}) { - out := convertFromWeights(chk.out) - ce := c.getColElems([]byte(chk.in)[:chk.n]) - if len(ce) != len(out) { - t.Errorf("%d:%d: len(ws) was %d; want %d", i, j, len(ce), len(out)) - continue - } - cnt := 0 - for k, w := range ce { - w, _ = colltab.MakeElem(w.Primary(), w.Secondary(), int(w.Tertiary()), 0) - if w != out[k] { - t.Errorf("%d:%d: Weights %d was %X; want %X", i, j, k, w, out[k]) - cnt++ - } - if cnt > 10 { - break - } - } - } - } -} - -type keyTest struct { - in string - out []byte -} - -var keyTests = []keyTest{ - {"abc", - []byte{0, 100, 0, 200, 1, 44, 0, 0, 0, 32, 0, 32, 0, 32, 0, 0, 2, 2, 2, 0, 255, 255, 255}, - }, - {"a\u0301", - []byte{0, 102, 0, 0, 0, 32, 0, 0, 2, 0, 255}, - }, - {"aaaaa", - []byte{0, 100, 0, 100, 0, 100, 0, 100, 0, 100, 0, 0, - 0, 32, 0, 32, 0, 32, 0, 32, 0, 32, 0, 0, - 2, 2, 2, 2, 2, 0, - 255, 255, 255, 255, 255, - }, - }, - // Issue 16391: incomplete rune at end of UTF-8 sequence. - {"\xc2", []byte{133, 255, 253, 0, 0, 0, 32, 0, 0, 2, 0, 255}}, - {"\xc2a", []byte{133, 255, 253, 0, 100, 0, 0, 0, 32, 0, 32, 0, 0, 2, 2, 0, 255, 255}}, -} - -func TestKey(t *testing.T) { - c, _ := makeTable(appendNextTests[4].in) - c.alternate = altShifted - c.ignore = ignore(colltab.Quaternary) - buf := Buffer{} - keys1 := [][]byte{} - keys2 := [][]byte{} - for _, tt := range keyTests { - keys1 = append(keys1, c.Key(&buf, []byte(tt.in))) - keys2 = append(keys2, c.KeyFromString(&buf, tt.in)) - } - // Separate generation from testing to ensure buffers are not overwritten. - for i, tt := range keyTests { - if !bytes.Equal(keys1[i], tt.out) { - t.Errorf("%d: Key(%q) = %d; want %d", i, tt.in, keys1[i], tt.out) - } - if !bytes.Equal(keys2[i], tt.out) { - t.Errorf("%d: KeyFromString(%q) = %d; want %d", i, tt.in, keys2[i], tt.out) - } - } -} - -type compareTest struct { - a, b string - res int // comparison result -} - -var compareTests = []compareTest{ - {"a\u0301", "a", 1}, - {"a\u0301b", "ab", 1}, - {"a", "a\u0301", -1}, - {"ab", "a\u0301b", -1}, - {"bc", "a\u0301c", 1}, - {"ab", "aB", -1}, - {"a\u0301", "a\u0301", 0}, - {"a", "a", 0}, - // Only clip prefixes of whole runes. - {"\u302E", "\u302F", 1}, - // Don't clip prefixes when last rune of prefix may be part of contraction. - {"a\u035E", "a\u0301\u035F", -1}, - {"a\u0301\u035Fb", "a\u0301\u035F", -1}, -} - -func TestCompare(t *testing.T) { - c, _ := makeTable(appendNextTests[4].in) - for i, tt := range compareTests { - if res := c.Compare([]byte(tt.a), []byte(tt.b)); res != tt.res { - t.Errorf("%d: Compare(%q, %q) == %d; want %d", i, tt.a, tt.b, res, tt.res) - } - if res := c.CompareString(tt.a, tt.b); res != tt.res { - t.Errorf("%d: CompareString(%q, %q) == %d; want %d", i, tt.a, tt.b, res, tt.res) - } - } -} - -func TestNumeric(t *testing.T) { - c := New(language.English, Loose, Numeric) - - for i, tt := range []struct { - a, b string - want int - }{ - {"1", "2", -1}, - {"2", "12", -1}, - {"2", "12", -1}, // Fullwidth is sorted as usual. - {"₂", "₁₂", 1}, // Subscript is not sorted as numbers. - {"②", "①②", 1}, // Circled is not sorted as numbers. - { // Imperial Aramaic, is not sorted as number. - "\U00010859", - "\U00010858\U00010859", - 1, - }, - {"12", "2", 1}, - {"A-1", "A-2", -1}, - {"A-2", "A-12", -1}, - {"A-12", "A-2", 1}, - {"A-0001", "A-1", 0}, - } { - if got := c.CompareString(tt.a, tt.b); got != tt.want { - t.Errorf("%d: CompareString(%s, %s) = %d; want %d", i, tt.a, tt.b, got, tt.want) - } - } -} diff --git a/vendor/golang.org/x/text/collate/export_test.go b/vendor/golang.org/x/text/collate/export_test.go deleted file mode 100644 index 69bfeaf1..00000000 --- a/vendor/golang.org/x/text/collate/export_test.go +++ /dev/null @@ -1,51 +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 collate - -// Export for testing. -// TODO: no longer necessary. Remove at some point. - -import ( - "fmt" - - "golang.org/x/text/internal/colltab" -) - -const ( - defaultSecondary = 0x20 - defaultTertiary = 0x2 -) - -type Weights struct { - Primary, Secondary, Tertiary, Quaternary int -} - -func W(ce ...int) Weights { - w := Weights{ce[0], defaultSecondary, defaultTertiary, 0} - if len(ce) > 1 { - w.Secondary = ce[1] - } - if len(ce) > 2 { - w.Tertiary = ce[2] - } - if len(ce) > 3 { - w.Quaternary = ce[3] - } - return w -} -func (w Weights) String() string { - return fmt.Sprintf("[%X.%X.%X.%X]", w.Primary, w.Secondary, w.Tertiary, w.Quaternary) -} - -func convertFromWeights(ws []Weights) []colltab.Elem { - out := make([]colltab.Elem, len(ws)) - for i, w := range ws { - out[i], _ = colltab.MakeElem(w.Primary, w.Secondary, w.Tertiary, 0) - if out[i] == colltab.Ignore && w.Quaternary > 0 { - out[i] = colltab.MakeQuaternary(w.Quaternary) - } - } - return out -} diff --git a/vendor/golang.org/x/text/collate/option_test.go b/vendor/golang.org/x/text/collate/option_test.go deleted file mode 100644 index 0f6ba9bc..00000000 --- a/vendor/golang.org/x/text/collate/option_test.go +++ /dev/null @@ -1,209 +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 collate - -import ( - "reflect" - "strings" - "testing" - - "golang.org/x/text/internal/colltab" - "golang.org/x/text/language" -) - -var ( - defaultIgnore = ignore(colltab.Tertiary) - defaultTable = getTable(locales[0]) -) - -func TestOptions(t *testing.T) { - for i, tt := range []struct { - in []Option - out options - }{ - 0: { - out: options{ - ignore: defaultIgnore, - }, - }, - 1: { - in: []Option{IgnoreDiacritics}, - out: options{ - ignore: [colltab.NumLevels]bool{false, true, false, true, true}, - }, - }, - 2: { - in: []Option{IgnoreCase, IgnoreDiacritics}, - out: options{ - ignore: ignore(colltab.Primary), - }, - }, - 3: { - in: []Option{ignoreDiacritics, IgnoreWidth}, - out: options{ - ignore: ignore(colltab.Primary), - caseLevel: true, - }, - }, - 4: { - in: []Option{IgnoreWidth, ignoreDiacritics}, - out: options{ - ignore: ignore(colltab.Primary), - caseLevel: true, - }, - }, - 5: { - in: []Option{IgnoreCase, IgnoreWidth}, - out: options{ - ignore: ignore(colltab.Secondary), - }, - }, - 6: { - in: []Option{IgnoreCase, IgnoreWidth, Loose}, - out: options{ - ignore: ignore(colltab.Primary), - }, - }, - 7: { - in: []Option{Force, IgnoreCase, IgnoreWidth, Loose}, - out: options{ - ignore: [colltab.NumLevels]bool{false, true, true, true, false}, - }, - }, - 8: { - in: []Option{IgnoreDiacritics, IgnoreCase}, - out: options{ - ignore: ignore(colltab.Primary), - }, - }, - 9: { - in: []Option{Numeric}, - out: options{ - ignore: defaultIgnore, - numeric: true, - }, - }, - 10: { - in: []Option{OptionsFromTag(language.MustParse("und-u-ks-level1"))}, - out: options{ - ignore: ignore(colltab.Primary), - }, - }, - 11: { - in: []Option{OptionsFromTag(language.MustParse("und-u-ks-level4"))}, - out: options{ - ignore: ignore(colltab.Quaternary), - }, - }, - 12: { - in: []Option{OptionsFromTag(language.MustParse("und-u-ks-identic"))}, - out: options{}, - }, - 13: { - in: []Option{ - OptionsFromTag(language.MustParse("und-u-kn-true-kb-true-kc-true")), - }, - out: options{ - ignore: defaultIgnore, - caseLevel: true, - backwards: true, - numeric: true, - }, - }, - 14: { - in: []Option{ - OptionsFromTag(language.MustParse("und-u-kn-true-kb-true-kc-true")), - OptionsFromTag(language.MustParse("und-u-kn-false-kb-false-kc-false")), - }, - out: options{ - ignore: defaultIgnore, - }, - }, - 15: { - in: []Option{ - OptionsFromTag(language.MustParse("und-u-kn-true-kb-true-kc-true")), - OptionsFromTag(language.MustParse("und-u-kn-foo-kb-foo-kc-foo")), - }, - out: options{ - ignore: defaultIgnore, - caseLevel: true, - backwards: true, - numeric: true, - }, - }, - 16: { // Normal options take precedence over tag options. - in: []Option{ - Numeric, IgnoreCase, - OptionsFromTag(language.MustParse("und-u-kn-false-kc-true")), - }, - out: options{ - ignore: ignore(colltab.Secondary), - caseLevel: false, - numeric: true, - }, - }, - 17: { - in: []Option{ - OptionsFromTag(language.MustParse("und-u-ka-shifted")), - }, - out: options{ - ignore: defaultIgnore, - alternate: altShifted, - }, - }, - 18: { - in: []Option{ - OptionsFromTag(language.MustParse("und-u-ka-blanked")), - }, - out: options{ - ignore: defaultIgnore, - alternate: altBlanked, - }, - }, - 19: { - in: []Option{ - OptionsFromTag(language.MustParse("und-u-ka-posix")), - }, - out: options{ - ignore: defaultIgnore, - alternate: altShiftTrimmed, - }, - }, - } { - c := newCollator(defaultTable) - c.t = nil - c.variableTop = 0 - c.f = 0 - - c.setOptions(tt.in) - if !reflect.DeepEqual(c.options, tt.out) { - t.Errorf("%d: got %v; want %v", i, c.options, tt.out) - } - } -} - -func TestAlternateSortTypes(t *testing.T) { - testCases := []struct { - lang string - in []string - want []string - }{{ - lang: "zh,cmn,zh-Hant-u-co-pinyin,zh-HK-u-co-pinyin,zh-pinyin", - in: []string{"爸爸", "妈妈", "儿子", "女儿"}, - want: []string{"爸爸", "儿子", "妈妈", "女儿"}, - }, { - lang: "zh-Hant,zh-u-co-stroke,zh-Hant-u-co-stroke", - in: []string{"爸爸", "妈妈", "儿子", "女儿"}, - want: []string{"儿子", "女儿", "妈妈", "爸爸"}, - }} - for _, tc := range testCases { - for _, tag := range strings.Split(tc.lang, ",") { - got := append([]string{}, tc.in...) - New(language.MustParse(tag)).SortStrings(got) - if !reflect.DeepEqual(got, tc.want) { - t.Errorf("New(%s).SortStrings(%v) = %v; want %v", tag, tc.in, got, tc.want) - } - } - } -} diff --git a/vendor/golang.org/x/text/collate/reg_test.go b/vendor/golang.org/x/text/collate/reg_test.go deleted file mode 100644 index 1ac5fedc..00000000 --- a/vendor/golang.org/x/text/collate/reg_test.go +++ /dev/null @@ -1,230 +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 collate - -import ( - "archive/zip" - "bufio" - "bytes" - "flag" - "io" - "io/ioutil" - "log" - "path" - "regexp" - "strconv" - "strings" - "testing" - "unicode/utf8" - - "golang.org/x/text/collate/build" - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" -) - -var long = flag.Bool("long", false, - "run time-consuming tests, such as tests that fetch data online") - -// This regression test runs tests for the test files in CollationTest.zip -// (taken from http://www.unicode.org/Public/UCA/<gen.UnicodeVersion()>/). -// -// The test files have the following form: -// # header -// 0009 0021; # ('\u0009') <CHARACTER TABULATION> [| | | 0201 025E] -// 0009 003F; # ('\u0009') <CHARACTER TABULATION> [| | | 0201 0263] -// 000A 0021; # ('\u000A') <LINE FEED (LF)> [| | | 0202 025E] -// 000A 003F; # ('\u000A') <LINE FEED (LF)> [| | | 0202 0263] -// -// The part before the semicolon is the hex representation of a sequence -// of runes. After the hash mark is a comment. The strings -// represented by rune sequence are in the file in sorted order, as -// defined by the DUCET. - -type Test struct { - name string - str [][]byte - comment []string -} - -var versionRe = regexp.MustCompile(`# UCA Version: (.*)\n?$`) -var testRe = regexp.MustCompile(`^([\dA-F ]+);.*# (.*)\n?$`) - -func TestCollation(t *testing.T) { - if !gen.IsLocal() && !*long { - t.Skip("skipping test to prevent downloading; to run use -long or use -local to specify a local source") - } - t.Skip("must first update to new file format to support test") - for _, test := range loadTestData() { - doTest(t, test) - } -} - -func Error(e error) { - if e != nil { - log.Fatal(e) - } -} - -// parseUCA parses a Default Unicode Collation Element Table of the format -// specified in http://www.unicode.org/reports/tr10/#File_Format. -// It returns the variable top. -func parseUCA(builder *build.Builder) { - r := gen.OpenUnicodeFile("UCA", "", "allkeys.txt") - defer r.Close() - input := bufio.NewReader(r) - colelem := regexp.MustCompile(`\[([.*])([0-9A-F.]+)\]`) - for i := 1; true; i++ { - l, prefix, err := input.ReadLine() - if err == io.EOF { - break - } - Error(err) - line := string(l) - if prefix { - log.Fatalf("%d: buffer overflow", i) - } - if len(line) == 0 || line[0] == '#' { - continue - } - if line[0] == '@' { - if strings.HasPrefix(line[1:], "version ") { - if v := strings.Split(line[1:], " ")[1]; v != gen.UnicodeVersion() { - log.Fatalf("incompatible version %s; want %s", v, gen.UnicodeVersion()) - } - } - } else { - // parse entries - part := strings.Split(line, " ; ") - if len(part) != 2 { - log.Fatalf("%d: production rule without ';': %v", i, line) - } - lhs := []rune{} - for _, v := range strings.Split(part[0], " ") { - if v != "" { - lhs = append(lhs, rune(convHex(i, v))) - } - } - vars := []int{} - rhs := [][]int{} - for i, m := range colelem.FindAllStringSubmatch(part[1], -1) { - if m[1] == "*" { - vars = append(vars, i) - } - elem := []int{} - for _, h := range strings.Split(m[2], ".") { - elem = append(elem, convHex(i, h)) - } - rhs = append(rhs, elem) - } - builder.Add(lhs, rhs, vars) - } - } -} - -func convHex(line int, s string) int { - r, e := strconv.ParseInt(s, 16, 32) - if e != nil { - log.Fatalf("%d: %v", line, e) - } - return int(r) -} - -func loadTestData() []Test { - f := gen.OpenUnicodeFile("UCA", "", "CollationTest.zip") - buffer, err := ioutil.ReadAll(f) - f.Close() - Error(err) - archive, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer))) - Error(err) - tests := []Test{} - for _, f := range archive.File { - // Skip the short versions, which are simply duplicates of the long versions. - if strings.Contains(f.Name, "SHORT") || f.FileInfo().IsDir() { - continue - } - ff, err := f.Open() - Error(err) - defer ff.Close() - scanner := bufio.NewScanner(ff) - test := Test{name: path.Base(f.Name)} - for scanner.Scan() { - line := scanner.Text() - if len(line) <= 1 || line[0] == '#' { - if m := versionRe.FindStringSubmatch(line); m != nil { - if m[1] != gen.UnicodeVersion() { - log.Printf("warning:%s: version is %s; want %s", f.Name, m[1], gen.UnicodeVersion()) - } - } - continue - } - m := testRe.FindStringSubmatch(line) - if m == nil || len(m) < 3 { - log.Fatalf(`Failed to parse: "%s" result: %#v`, line, m) - } - str := []byte{} - // In the regression test data (unpaired) surrogates are assigned a weight - // corresponding to their code point value. However, utf8.DecodeRune, - // which is used to compute the implicit weight, assigns FFFD to surrogates. - // We therefore skip tests with surrogates. This skips about 35 entries - // per test. - valid := true - for _, split := range strings.Split(m[1], " ") { - r, err := strconv.ParseUint(split, 16, 64) - Error(err) - valid = valid && utf8.ValidRune(rune(r)) - str = append(str, string(rune(r))...) - } - if valid { - test.str = append(test.str, str) - test.comment = append(test.comment, m[2]) - } - } - if scanner.Err() != nil { - log.Fatal(scanner.Err()) - } - tests = append(tests, test) - } - return tests -} - -var errorCount int - -func runes(b []byte) []rune { - return []rune(string(b)) -} - -var shifted = language.MustParse("und-u-ka-shifted-ks-level4") - -func doTest(t *testing.T, tc Test) { - bld := build.NewBuilder() - parseUCA(bld) - w, err := bld.Build() - Error(err) - var tag language.Tag - if !strings.Contains(tc.name, "NON_IGNOR") { - tag = shifted - } - c := NewFromTable(w, OptionsFromTag(tag)) - b := &Buffer{} - prev := tc.str[0] - for i := 1; i < len(tc.str); i++ { - b.Reset() - s := tc.str[i] - ka := c.Key(b, prev) - kb := c.Key(b, s) - if r := bytes.Compare(ka, kb); r == 1 { - t.Errorf("%s:%d: Key(%.4X) < Key(%.4X) (%X < %X) == %d; want -1 or 0", tc.name, i, []rune(string(prev)), []rune(string(s)), ka, kb, r) - prev = s - continue - } - if r := c.Compare(prev, s); r == 1 { - t.Errorf("%s:%d: Compare(%.4X, %.4X) == %d; want -1 or 0", tc.name, i, runes(prev), runes(s), r) - } - if r := c.Compare(s, prev); r == -1 { - t.Errorf("%s:%d: Compare(%.4X, %.4X) == %d; want 1 or 0", tc.name, i, runes(s), runes(prev), r) - } - prev = s - } -} diff --git a/vendor/golang.org/x/text/collate/sort_test.go b/vendor/golang.org/x/text/collate/sort_test.go deleted file mode 100644 index d9e7f31c..00000000 --- a/vendor/golang.org/x/text/collate/sort_test.go +++ /dev/null @@ -1,55 +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 collate_test - -import ( - "fmt" - "testing" - - "golang.org/x/text/collate" - "golang.org/x/text/language" -) - -func ExampleCollator_Strings() { - c := collate.New(language.Und) - strings := []string{ - "ad", - "ab", - "äb", - "ac", - } - c.SortStrings(strings) - fmt.Println(strings) - // Output: [ab äb ac ad] -} - -type sorter []string - -func (s sorter) Len() int { - return len(s) -} - -func (s sorter) Swap(i, j int) { - s[j], s[i] = s[i], s[j] -} - -func (s sorter) Bytes(i int) []byte { - return []byte(s[i]) -} - -func TestSort(t *testing.T) { - c := collate.New(language.English) - strings := []string{ - "bcd", - "abc", - "ddd", - } - c.Sort(sorter(strings)) - res := fmt.Sprint(strings) - want := "[abc bcd ddd]" - if res != want { - t.Errorf("found %s; want %s", res, want) - } -} diff --git a/vendor/golang.org/x/text/collate/table_test.go b/vendor/golang.org/x/text/collate/table_test.go deleted file mode 100644 index 3a6b12fd..00000000 --- a/vendor/golang.org/x/text/collate/table_test.go +++ /dev/null @@ -1,291 +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 collate - -import ( - "testing" - - "golang.org/x/text/collate/build" - "golang.org/x/text/internal/colltab" - "golang.org/x/text/unicode/norm" -) - -type ColElems []Weights - -type input struct { - str string - ces [][]int -} - -type check struct { - in string - n int - out ColElems -} - -type tableTest struct { - in []input - chk []check -} - -func w(ce ...int) Weights { - return W(ce...) -} - -var defaults = w(0) - -func pt(p, t int) []int { - return []int{p, defaults.Secondary, t} -} - -func makeTable(in []input) (*Collator, error) { - b := build.NewBuilder() - for _, r := range in { - if e := b.Add([]rune(r.str), r.ces, nil); e != nil { - panic(e) - } - } - t, err := b.Build() - if err != nil { - return nil, err - } - return NewFromTable(t), nil -} - -// modSeq holds a seqeunce of modifiers in increasing order of CCC long enough -// to cause a segment overflow if not handled correctly. The last rune in this -// list has a CCC of 214. -var modSeq = []rune{ - 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, 0x05B8, 0x05B9, 0x05BB, - 0x05BC, 0x05BD, 0x05BF, 0x05C1, 0x05C2, 0xFB1E, 0x064B, 0x064C, 0x064D, 0x064E, - 0x064F, 0x0650, 0x0651, 0x0652, 0x0670, 0x0711, 0x0C55, 0x0C56, 0x0E38, 0x0E48, - 0x0EB8, 0x0EC8, 0x0F71, 0x0F72, 0x0F74, 0x0321, 0x1DCE, -} - -var mods []input -var modW = func() ColElems { - ws := ColElems{} - for _, r := range modSeq { - rune := norm.NFC.PropertiesString(string(r)) - ws = append(ws, w(0, int(rune.CCC()))) - mods = append(mods, input{string(r), [][]int{{0, int(rune.CCC())}}}) - } - return ws -}() - -var appendNextTests = []tableTest{ - { // test getWeights - []input{ - {"a", [][]int{{100}}}, - {"b", [][]int{{105}}}, - {"c", [][]int{{110}}}, - {"ß", [][]int{{120}}}, - }, - []check{ - {"a", 1, ColElems{w(100)}}, - {"b", 1, ColElems{w(105)}}, - {"c", 1, ColElems{w(110)}}, - {"d", 1, ColElems{w(0x50064)}}, - {"ab", 1, ColElems{w(100)}}, - {"bc", 1, ColElems{w(105)}}, - {"dd", 1, ColElems{w(0x50064)}}, - {"ß", 2, ColElems{w(120)}}, - }, - }, - { // test expansion - []input{ - {"u", [][]int{{100}}}, - {"U", [][]int{{100}, {0, 25}}}, - {"w", [][]int{{100}, {100}}}, - {"W", [][]int{{100}, {0, 25}, {100}, {0, 25}}}, - }, - []check{ - {"u", 1, ColElems{w(100)}}, - {"U", 1, ColElems{w(100), w(0, 25)}}, - {"w", 1, ColElems{w(100), w(100)}}, - {"W", 1, ColElems{w(100), w(0, 25), w(100), w(0, 25)}}, - }, - }, - { // test decompose - []input{ - {"D", [][]int{pt(104, 8)}}, - {"z", [][]int{pt(130, 8)}}, - {"\u030C", [][]int{{0, 40}}}, // Caron - {"\u01C5", [][]int{pt(104, 9), pt(130, 4), {0, 40, 0x1F}}}, // Dž = D+z+caron - }, - []check{ - {"\u01C5", 2, ColElems{w(pt(104, 9)...), w(pt(130, 4)...), w(0, 40, 0x1F)}}, - }, - }, - { // test basic contraction - []input{ - {"a", [][]int{{100}}}, - {"ab", [][]int{{101}}}, - {"aab", [][]int{{101}, {101}}}, - {"abc", [][]int{{102}}}, - {"b", [][]int{{200}}}, - {"c", [][]int{{300}}}, - {"d", [][]int{{400}}}, - }, - []check{ - {"a", 1, ColElems{w(100)}}, - {"aa", 1, ColElems{w(100)}}, - {"aac", 1, ColElems{w(100)}}, - {"d", 1, ColElems{w(400)}}, - {"ab", 2, ColElems{w(101)}}, - {"abb", 2, ColElems{w(101)}}, - {"aab", 3, ColElems{w(101), w(101)}}, - {"aaba", 3, ColElems{w(101), w(101)}}, - {"abc", 3, ColElems{w(102)}}, - {"abcd", 3, ColElems{w(102)}}, - }, - }, - { // test discontinuous contraction - append(mods, []input{ - // modifiers; secondary weight equals ccc - {"\u0316", [][]int{{0, 220}}}, - {"\u0317", [][]int{{0, 220}, {0, 220}}}, - {"\u302D", [][]int{{0, 222}}}, - {"\u302E", [][]int{{0, 225}}}, // used as starter - {"\u302F", [][]int{{0, 224}}}, // used as starter - {"\u18A9", [][]int{{0, 228}}}, - {"\u0300", [][]int{{0, 230}}}, - {"\u0301", [][]int{{0, 230}}}, - {"\u0315", [][]int{{0, 232}}}, - {"\u031A", [][]int{{0, 232}}}, - {"\u035C", [][]int{{0, 233}}}, - {"\u035F", [][]int{{0, 233}}}, - {"\u035D", [][]int{{0, 234}}}, - {"\u035E", [][]int{{0, 234}}}, - {"\u0345", [][]int{{0, 240}}}, - - // starters - {"a", [][]int{{100}}}, - {"b", [][]int{{200}}}, - {"c", [][]int{{300}}}, - {"\u03B1", [][]int{{900}}}, - {"\x01", [][]int{{0, 0, 0, 0}}}, - - // contractions - {"a\u0300", [][]int{{101}}}, - {"a\u0301", [][]int{{102}}}, - {"a\u035E", [][]int{{110}}}, - {"a\u035Eb\u035E", [][]int{{115}}}, - {"ac\u035Eaca\u035E", [][]int{{116}}}, - {"a\u035Db\u035D", [][]int{{117}}}, - {"a\u0301\u035Db", [][]int{{120}}}, - {"a\u0301\u035F", [][]int{{121}}}, - {"a\u0301\u035Fb", [][]int{{119}}}, - {"\u03B1\u0345", [][]int{{901}, {902}}}, - {"\u302E\u302F", [][]int{{0, 131}, {0, 131}}}, - {"\u302F\u18A9", [][]int{{0, 130}}}, - }...), - []check{ - {"a\x01\u0300", 1, ColElems{w(100)}}, - {"ab", 1, ColElems{w(100)}}, // closing segment - {"a\u0316\u0300b", 5, ColElems{w(101), w(0, 220)}}, // closing segment - {"a\u0316\u0300", 5, ColElems{w(101), w(0, 220)}}, // no closing segment - {"a\u0316\u0300\u035Cb", 5, ColElems{w(101), w(0, 220)}}, // completes before segment end - {"a\u0316\u0300\u035C", 5, ColElems{w(101), w(0, 220)}}, // completes before segment end - - {"a\u0316\u0301b", 5, ColElems{w(102), w(0, 220)}}, // closing segment - {"a\u0316\u0301", 5, ColElems{w(102), w(0, 220)}}, // no closing segment - {"a\u0316\u0301\u035Cb", 5, ColElems{w(102), w(0, 220)}}, // completes before segment end - {"a\u0316\u0301\u035C", 5, ColElems{w(102), w(0, 220)}}, // completes before segment end - - // match blocked by modifier with same ccc - {"a\u0301\u0315\u031A\u035Fb", 3, ColElems{w(102)}}, - - // multiple gaps - {"a\u0301\u035Db", 6, ColElems{w(120)}}, - {"a\u0301\u035F", 5, ColElems{w(121)}}, - {"a\u0301\u035Fb", 6, ColElems{w(119)}}, - {"a\u0316\u0301\u035F", 7, ColElems{w(121), w(0, 220)}}, - {"a\u0301\u0315\u035Fb", 7, ColElems{w(121), w(0, 232)}}, - {"a\u0316\u0301\u0315\u035Db", 5, ColElems{w(102), w(0, 220)}}, - {"a\u0316\u0301\u0315\u035F", 9, ColElems{w(121), w(0, 220), w(0, 232)}}, - {"a\u0316\u0301\u0315\u035Fb", 9, ColElems{w(121), w(0, 220), w(0, 232)}}, - {"a\u0316\u0301\u0315\u035F\u035D", 9, ColElems{w(121), w(0, 220), w(0, 232)}}, - {"a\u0316\u0301\u0315\u035F\u035Db", 9, ColElems{w(121), w(0, 220), w(0, 232)}}, - - // handling of segment overflow - { // just fits within segment - "a" + string(modSeq[:30]) + "\u0301", - 3 + len(string(modSeq[:30])), - append(ColElems{w(102)}, modW[:30]...), - }, - {"a" + string(modSeq[:31]) + "\u0301", 1, ColElems{w(100)}}, // overflow - {"a" + string(modSeq) + "\u0301", 1, ColElems{w(100)}}, - { // just fits within segment with two interstitial runes - "a" + string(modSeq[:28]) + "\u0301\u0315\u035F", - 7 + len(string(modSeq[:28])), - append(append(ColElems{w(121)}, modW[:28]...), w(0, 232)), - }, - { // second half does not fit within segment - "a" + string(modSeq[:29]) + "\u0301\u0315\u035F", - 3 + len(string(modSeq[:29])), - append(ColElems{w(102)}, modW[:29]...), - }, - - // discontinuity can only occur in last normalization segment - {"a\u035Eb\u035E", 6, ColElems{w(115)}}, - {"a\u0316\u035Eb\u035E", 5, ColElems{w(110), w(0, 220)}}, - {"a\u035Db\u035D", 6, ColElems{w(117)}}, - {"a\u0316\u035Db\u035D", 1, ColElems{w(100)}}, - {"a\u035Eb\u0316\u035E", 8, ColElems{w(115), w(0, 220)}}, - {"a\u035Db\u0316\u035D", 8, ColElems{w(117), w(0, 220)}}, - {"ac\u035Eaca\u035E", 9, ColElems{w(116)}}, - {"a\u0316c\u035Eaca\u035E", 1, ColElems{w(100)}}, - {"ac\u035Eac\u0316a\u035E", 1, ColElems{w(100)}}, - - // expanding contraction - {"\u03B1\u0345", 4, ColElems{w(901), w(902)}}, - - // Theoretical possibilities - // contraction within a gap - {"a\u302F\u18A9\u0301", 9, ColElems{w(102), w(0, 130)}}, - // expansion within a gap - {"a\u0317\u0301", 5, ColElems{w(102), w(0, 220), w(0, 220)}}, - // repeating CCC blocks last modifier - {"a\u302E\u302F\u0301", 1, ColElems{w(100)}}, - // The trailing combining characters (with lower CCC) should block the first one. - // TODO: make the following pass. - // {"a\u035E\u0316\u0316", 1, ColElems{w(100)}}, - {"a\u035F\u035Eb", 5, ColElems{w(110), w(0, 233)}}, - // Last combiner should match after normalization. - // TODO: make the following pass. - // {"a\u035D\u0301", 3, ColElems{w(102), w(0, 234)}}, - // The first combiner is blocking the second one as they have the same CCC. - {"a\u035D\u035Eb", 1, ColElems{w(100)}}, - }, - }, -} - -func TestAppendNext(t *testing.T) { - for i, tt := range appendNextTests { - c, err := makeTable(tt.in) - if err != nil { - t.Errorf("%d: error creating table: %v", i, err) - continue - } - for j, chk := range tt.chk { - ws, n := c.t.AppendNext(nil, []byte(chk.in)) - if n != chk.n { - t.Errorf("%d:%d: bytes consumed was %d; want %d", i, j, n, chk.n) - } - out := convertFromWeights(chk.out) - if len(ws) != len(out) { - t.Errorf("%d:%d: len(ws) was %d; want %d (%X vs %X)\n%X", i, j, len(ws), len(out), ws, out, chk.in) - continue - } - for k, w := range ws { - w, _ = colltab.MakeElem(w.Primary(), w.Secondary(), int(w.Tertiary()), 0) - if w != out[k] { - t.Errorf("%d:%d: Weights %d was %X; want %X", i, j, k, w, out[k]) - } - } - } - } -} diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/Makefile b/vendor/golang.org/x/text/collate/tools/colcmp/Makefile deleted file mode 100644 index 1cf78226..00000000 --- a/vendor/golang.org/x/text/collate/tools/colcmp/Makefile +++ /dev/null @@ -1,7 +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. - -chars: - go run ../../maketables.go -tables=chars -package=main > chars.go - gofmt -w -s chars.go diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/chars.go b/vendor/golang.org/x/text/collate/tools/colcmp/chars.go deleted file mode 100644 index 9f3b9d77..00000000 --- a/vendor/golang.org/x/text/collate/tools/colcmp/chars.go +++ /dev/null @@ -1,1156 +0,0 @@ -// Generated by running -// maketables -root=http://unicode.org/Public/UCA/6.2.0/CollationAuxiliary.zip -cldr=http://www.unicode.org/Public/cldr/23/core.zip -// DO NOT EDIT -// TODO: implement more compact representation for sparse blocks. - -package main - -type exemplarType int - -const ( - exCharacters exemplarType = iota - exContractions - exPunctuation - exAuxiliary - exCurrency - exIndex - exN -) - -var exemplarCharacters = map[string][exN]string{ - "aa": { - 0: "a b t s e c k x i d q r f g o l m n u w h y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "j p v z", - 5: "A B T S E C K X I D Q R F G O L M N U W H Y", - }, - "af": { - 0: "a á â b c d e é è ê ë f g h i î ï j k l m n o ô ö p q r s t u û v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à â ä ã æ ç é è ê ë í ì î ï ó ò ô ö ú ù û ü ý", - }, - "agq": { - 0: "a à â ǎ ā b c d e è ê ě ē ɛ ɛ̀ ɛ̂ ɛ̌ ɛ̄ f g h i ì î ǐ ī ɨ ɨ̀ ɨ̂ ɨ̌ ɨ̄ k l m n ŋ o ò ô ǒ ō ɔ ɔ̀ ɔ̂ ɔ̌ ɔ̄ p s t u ù û ǔ ū ʉ ʉ̀ ʉ̂ ʉ̌ ʉ̄ v w y z ʔ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q r x", - 5: "A B C D E Ɛ F G H I Ɨ K L M N Ŋ O Ɔ P S T U Ʉ V W Y Z ʔ", - }, - "ak": { - 0: "a b d e ɛ f g h i k l m n o ɔ p r s t u w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c j q v z", - 5: "A B C D E Ɛ F G H I J K L M N O Ɔ P Q R S T U V W X Y Z", - }, - "am": { - 0: "፟ ሀ ሀ ሁ ሂ ሃ ሄ ህ ሆ ለ ለ ሉ ሊ ላ ሌ ል ሎ ሏ ሐ ሑ ሒ ሓ ሔ ሕ ሖ ሗ መ ሙ ሚ ማ ሜ ም ሞ ሟ ሠ ሡ ሢ ሣ ሤ ሥ ሦ ሧ ረ ሩ ሪ ራ ሬ ር ሮ ሯ ሰ ሱ ሲ ሳ ሴ ስ ሶ ሷ ሸ ሹ ሺ ሻ ሼ ሽ ሾ ሿ ቀ ቁ ቂ ቃ ቄ ቅ ቆ ቈ ቊ ቊ ቋ ቌ ቍ በ በ ቡ ቢ ባ ቤ ብ ቦ ቧ ቨ ቩ ቪ ቫ ቬ ቭ ቮ ቯ ተ ቱ ቲ ታ ቴ ት ቶ ቷ ቸ ቹ ቺ ቻ ቼ ች ቾ ቿ ኀ ኁ ኂ ኃ ኄ ኅ ኆ ኈ ኊ ኊ ኋ ኌ ኍ ነ ነ ኑ ኒ ና ኔ ን ኖ ኗ ኘ ኙ ኚ ኛ ኜ ኝ ኞ ኟ አ ኡ ኢ ኣ ኤ እ ኦ ኧ ከ ኩ ኪ ካ ኬ ክ ኮ ኰ ኲ ኲ ኳ ኴ ኵ ኸ ኸ ኹ ኺ ኻ ኼ ኽ ኾ ወ ወ ዉ ዊ ዋ ዌ ው ዎ ዐ ዐ ዑ ዒ ዓ ዔ ዕ ዖ ዘ ዘ ዙ ዚ ዛ ዜ ዝ ዞ ዟ ዠ ዡ ዢ ዣ ዤ ዥ ዦ ዧ የ ዩ ዪ ያ ዬ ይ ዮ ዯ ደ ዱ ዲ ዳ ዴ ድ ዶ ዷ ጀ ጀ ጁ ጂ ጃ ጄ ጅ ጆ ጇ ገ ጉ ጊ ጋ ጌ ግ ጎ ጐ ጒ ጒ ጓ ጔ ጕ ጠ ጠ ጡ ጢ ጣ ጤ ጥ ጦ ጧ ጨ ጩ ጪ ጫ ጬ ጭ ጮ ጯ ጰ ጱ ጲ ጳ ጴ ጵ ጶ ጷ ጸ ጹ ጺ ጻ ጼ ጽ ጾ ጿ ፀ ፁ ፂ ፃ ፄ ፅ ፆ ፇ ፈ ፉ ፊ ፋ ፌ ፍ ፎ ፏ ፐ ፑ ፒ ፓ ፔ ፕ ፖ ፗ ፘ ፙ ፚ", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "ar": { - 0: "ً ٌ ٍ َ ُ ِ ّ ْ ٰ ء آ أ ؤ إ ئ ا ب ت ة ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي ى", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d \u200e \u200f ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک گ ی", - 5: "ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي", - }, - "as": { - 0: "অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ ং ঁ ঃ ক ক্ষ খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ড় ড় ঢ ঢ় ঢ় ণ ত থ দ ধ ন প ফ ব ভ ম য য় ৰ ল ৱ শ ষ স হ া ি ী ু ূ ৃ ে ৈ ো ৌ ্", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d ৲", - }, - "asa": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "ast": { - 0: "a á b c d e é f g h ḥ i í l ḷ m n ñ o ó p q r s t u ú ü v x y z", - 2: "- ‐ – — , ; : ! ¡ ? ¿ . … ' ‘ ’ \" “ ” « » ( ) [ ] § @ * / \\ & # † ‡ ′ ″", - 3: "ª à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī j k º ò ŏ ô ö ø ō œ ù ŭ û ū w ÿ", - 5: "A B C D E F G H I L M N Ñ O P Q R S T U V X Y Z", - }, - "az": { - 0: "a b c ç d e ə f g ğ h x ı i İ j k q l m n o ö p r s ş t u ü v y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "w", - }, - "az-Cyrl": { - 0: "а ә б в г ғ д е ж з и й ј к ҝ л м н о ө п р с т у ү ф х һ ч ҹ ш ы", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ц щ ъ ь э ю я", - }, - "bas": { - 0: "a á à â ǎ ā a᷆ a᷇ b ɓ c d e é è ê ě ē e᷆ e᷇ ɛ ɛ́ ɛ̀ ɛ̂ ɛ̌ ɛ̄ ɛ᷆ ɛ᷇ f g h i í ì î ǐ ī i᷆ i᷇ j k l m n ń ǹ ŋ o ó ò ô ǒ ō o᷆ o᷇ ɔ ɔ́ ɔ̀ ɔ̂ ɔ̌ ɔ̄ ɔ᷆ ɔ᷇ p r s t u ú ù û ǔ ū u᷆ u᷇ v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B Ɓ C D E Ɛ F G H I J K L M N Ŋ O Ɔ P R S T U V W Y Z", - }, - "be": { - 0: "а б в г д дж дз е ё ж з і й к л м н о п р с т у ў ф х ц ч ш ы ь э ю я", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "bem": { - 0: "a b c e f g i j k l m n o p s sh t u w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "d h q r v x z", - 5: "A B C E F G I J K L M N O P S SH T U W Y", - }, - "bez": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "x", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W Y Z", - }, - "bg": { - 0: "а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ь ю я", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "а̀ ѐ ё ѝ о̀ у̀ ъ̀ ы ѣ э ю̀ я̀ ѫ", - }, - "bm": { - 0: "a b c d e ɛ f g h i j k l m n ɲ ŋ o ɔ p r s t u w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q v x", - 5: "A B C D E Ɛ F G H I J K L M N Ɲ Ŋ O Ɔ P R S T U W Y Z", - }, - "bn": { - 0: "় ৺ অ আ ই ঈ উ ঊ ঋ ৠ ঌ ৡ এ ঐ ও ঔ ং ঃ ঁ ক ক্ষ খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ড় ঢ ঢ় ণ ত ৎ থ দ ধ ন প ফ ব ভ ম য য় র ল শ ষ স হ ঽ া ি ী ু ূ ৃ ৄ ৢ ৣ ে ৈ ো ৌ ্ ৗ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d ৲ ৳ ৴ ৵ ৶ ৷ ৸ ৹ ৰ ৱ", - }, - "bn-IN": { - 0: "় ৺ অ আ ই ঈ উ ঊ ঋ ৠ ঌ ৡ এ ঐ ও ঔ ং ঃ ঁ ক ক্ষ খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ড় ঢ ঢ় ণ ত ৎ থ দ ধ ন প ফ ব ভ ম য য় র ল শ ষ স হ ঽ া ি ী ু ূ ৃ ৄ ৢ ৣ ে ৈ ো ৌ ্ ৗ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d ৲ ৳ ৴ ৵ ৶ ৷ ৸ ৹ ৰ ৱ", - }, - "bo": { - 0: "ཾ ཿ ཀ ཀྵ ྐ ྐྵ ཁ ྑ ག གྷ ྒ ྒྷ ང ྔ ཅ ྕ ཆ ྖ ཇ ྗ ཉ ྙ ཊ ྚ ཋ ྛ ཌ ཌྷ ྜ ྜྷ ཎ ྞ ཏ ྟ ཐ ྠ ད དྷ ྡ ྡྷ ན ྣ པ ྤ ཕ ྥ བ བྷ ྦ ྦྷ མ ྨ ཙ ྩ ཚ ྪ ཛ ཛྷ ྫ ྫྷ ཝ ྭ ྺ ཞ ྮ ཟ ྯ འ ྰ ཡ ྱ ྻ ར ཪ ྲ ྼ ལ ླ ཤ ྴ ཥ ྵ ས ྶ ཧ ྷ ཨ ྸ ི ཱི ྀ ཱྀ ུ ཱུ ྲྀ ཷ ླྀ ཹ ཹ ེ ཻ ོ ཽ ྄", - 3: "ༀ", - }, - "br": { - 0: "a b ch cʼh d e ê f g h i j k l m n ñ o p r s t u ù v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à ă â å ä ã ā æ c ç é è ĕ ë ē í ì ĭ î ï ī ó ò ŏ ô ö ø ō œ q ú ŭ û ü ū ÿ", - 5: "A B C D E F G H I J K L M N O P R S T U V W X Y Z", - }, - "brx": { - 0: "़ ँ ं अ आ इ ई उ ऊ ऍ ए ऐ ऑ ओ औ क ख ग घ च छ ज झ ञ ट ठ ड ड़ ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ा ि ी ु ू ृ ॅ े ै ॉ ो ौ ्", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - 5: "अ आ इ ई उ ऊ ऍ ए ऐ ऑ ओ औ क ख ग घ च छ ज झ ञ ट ठ ड ड़ ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह", - }, - "bs": { - 0: "a b c č ć d dž đ e f g h i j k l lj m n nj o p r s š t u v z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q w x y", - }, - "bs-Cyrl": { - 0: "а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "byn": { - 0: "፟ ሀ ሀ ሁ ሂ ሃ ሄ ህ ሆ ለ ለ ሉ ሊ ላ ሌ ል ሎ ሏ ሐ ሑ ሒ ሓ ሔ ሕ ሖ ሗ መ ሙ ሚ ማ ሜ ም ሞ ሟ ረ ረ ሩ ሪ ራ ሬ ር ሮ ሯ ሰ ሱ ሲ ሳ ሴ ስ ሶ ሷ ሸ ሹ ሺ ሻ ሼ ሽ ሾ ሿ ቀ ቁ ቂ ቃ ቄ ቅ ቆ ቈ ቊ ቊ ቋ ቌ ቍ ቐ ቐ ቑ ቒ ቓ ቔ ቕ ቖ ቘ ቚ ቚ ቛ ቜ ቝ በ በ ቡ ቢ ባ ቤ ብ ቦ ቧ ቨ ቩ ቪ ቫ ቬ ቭ ቮ ቯ ተ ቱ ቲ ታ ቴ ት ቶ ቷ ቸ ቹ ቺ ቻ ቼ ች ቾ ቿ ኀ ኁ ኂ ኃ ኄ ኅ ኆ ኈ ኊ ኊ ኋ ኌ ኍ ነ ነ ኑ ኒ ና ኔ ን ኖ ኗ ኘ ኙ ኚ ኛ ኜ ኝ ኞ ኟ አ ኡ ኢ ኣ ኤ እ ኦ ኧ ከ ኩ ኪ ካ ኬ ክ ኮ ኰ ኲ ኲ ኳ ኴ ኵ ኸ ኸ ኹ ኺ ኻ ኼ ኽ ኾ ዀ ዂ ዂ ዃ ዄ ዅ ወ ወ ዉ ዊ ዋ ዌ ው ዎ ዐ ዐ ዑ ዒ ዓ ዔ ዕ ዖ ዘ ዘ ዙ ዚ ዛ ዜ ዝ ዞ ዟ ዠ ዡ ዢ ዣ ዤ ዥ ዦ ዧ የ ዩ ዪ ያ ዬ ይ ዮ ደ ደ ዱ ዲ ዳ ዴ ድ ዶ ዷ ጀ ጀ ጁ ጂ ጃ ጄ ጅ ጆ ጇ ገ ጉ ጊ ጋ ጌ ግ ጎ ጐ ጒ ጒ ጓ ጔ ጕ ጘ ጘ ጙ ጚ ጛ ጜ ጝ ጞ ጟ ⶓ ⶓ ⶔ ⶕ ⶖ ጠ ጠ ጡ ጢ ጣ ጤ ጥ ጦ ጧ ጨ ጩ ጪ ጫ ጬ ጭ ጮ ጯ ጸ ጸ ጹ ጺ ጻ ጼ ጽ ጾ ጿ ፈ ፈ ፉ ፊ ፋ ፌ ፍ ፎ ፏ ፐ ፑ ፒ ፓ ፔ ፕ ፖ ፗ", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "ca": { - 0: "a à b c ç d e é è f g h i í ï j k l ŀ m n o ó ò p q r s t u ú ü v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á ă â å ä ã ā æ ĕ ê ë ē ì ĭ î ī ñ º ŏ ô ö ø ō œ ù ŭ û ū ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "cgg": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "chr": { - 0: "Ꭰ Ꭱ Ꭲ Ꭳ Ꭴ Ꭵ Ꭶ Ꭷ Ꭸ Ꭹ Ꭺ Ꭻ Ꭼ Ꭽ Ꭾ Ꭿ Ꮀ Ꮁ Ꮂ Ꮃ Ꮄ Ꮅ Ꮆ Ꮇ Ꮈ Ꮉ Ꮊ Ꮋ Ꮌ Ꮍ Ꮎ Ꮏ Ꮐ Ꮑ Ꮒ Ꮓ Ꮔ Ꮕ Ꮖ Ꮗ Ꮘ Ꮙ Ꮚ Ꮛ Ꮜ Ꮝ Ꮞ Ꮟ Ꮠ Ꮡ Ꮢ Ꮣ Ꮤ Ꮥ Ꮦ Ꮧ Ꮨ Ꮩ Ꮪ Ꮫ Ꮬ Ꮭ Ꮮ Ꮯ Ꮰ Ꮱ Ꮲ Ꮳ Ꮴ Ꮵ Ꮶ Ꮷ Ꮸ Ꮹ Ꮺ Ꮻ Ꮼ Ꮽ Ꮾ Ꮿ Ᏸ Ᏹ Ᏺ Ᏻ Ᏼ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "Ꭰ Ꭶ Ꭽ Ꮃ Ꮉ Ꮎ Ꮖ Ꮜ Ꮣ Ꮬ Ꮳ Ꮹ Ꮿ", - }, - "cs": { - 0: "a á b c č d ď e é ě f g h ch i í j k l m n ň o ó p q r ř s š t ť u ú ů v w x y ý z ž", - 2: "- ‐ – , ; : ! ? . … ‘ ‚ “ „ ( ) [ ] § @ * / &", - 3: "á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ľ ł ñ ó ò ŏ ô ö ø ō œ ŕ ú ù ŭ û ü ū ÿ", - }, - "cy": { - 0: "a á à â ä b c ch d dd e é è ê ë f ff g ng h i í ì î ï j l ll m n o ó ò ô ö p ph r rh s t th u ú ù û ü w ẃ ẁ ŵ ẅ y ý ỳ ŷ ÿ", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "k q v x z", - 5: "A B C CH D DD E F FF G NG H I J L LL M N O P PH R RH S T TH U W Y", - }, - "da": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å", - 2: "- ‐ – , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ′ ″", - 3: "á à â ç é è ê ë í î ï ñ ó ô ú ù û ÿ ü æ ä ø ö œ å", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å", - }, - "dav": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "de": { - 0: "a ä b c d e f g h i j k l m n o ö p q r s ß t u ü v w x y z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ‚ \" “ „ « » ( ) [ ] { } § @ * / & #", - 3: "á à ă â å ã ā æ ç é è ĕ ê ë ē ğ í ì ĭ î ï İ ī ı ñ ó ò ŏ ô ø ō œ ş ú ù ŭ û ū ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S Sch* St* T U V W X Y Z", - }, - "dje": { - 0: "a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "v", - 5: "A B C D E F G H I J K L M N Ɲ Ŋ O P Q R S T U W X Y Z", - }, - "dua": { - 0: "a á b ɓ c d ɗ e é ɛ ɛ́ f g i í j k l m n ny ŋ o ó ɔ ɔ́ p r s t u ú ū w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "h q v x z", - 5: "A B Ɓ C D Ɗ E Ɛ F G I J K L M N Ŋ O Ɔ P S T U W Y", - }, - "dyo": { - 0: "a á b c d e é f g h i í j k l m n ñ ŋ o ó p q r s t u ú v w x y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "z", - 5: "A B C D E F G H I J K L M N Ñ Ŋ O P Q R S T U V W X Y", - }, - "dz": { - 0: "ཀ ྐ ཁ ྑ ག ྒ ང ྔ ཅ ཆ ཇ ྗ ཉ ྙ ཏ ྟ ཐ ྠ ད ྡ ན ྣ པ ྤ ཕ ྥ བ ྦ མ ྨ ཙ ྩ ཚ ྪ ཛ ྫ ཝ ྭ ཞ ཟ འ ཡ ྱ ར ྲ ལ ླ ཤ ྵ ས ྶ ཧ ྷ ཨ ི ུ ེ ོ", - 2: "- ‐ – — , ; : ༔ ! ? . … ' ‘ ’ \" “ ” ( ) [ ] ༼ ༽ § @ * / & # † ‡ ༄ ༅ ༆ ༈ ༉ ༊ ࿐ ࿑ ༌ ། ༎ ༏ ༐ ༑ ༒ ࿒ ࿓ ࿔ ༴ ༶ ྾ ྿", - 3: "ཾ ཊ ྚ ཋ ྛ ཌ ྜ ཎ ྞ ྺ ྻ ྼ ཥ ྀ ཻ ཽ ྄", - }, - "ebu": { - 0: "a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I Ĩ J K L M N O P Q R S T U Ũ V W X Y Z", - }, - "ee": { - 0: "a á à ã b d ɖ e é è ẽ ɛ ɛ́ ɛ̀ ɛ̃ f ƒ g ɣ h x i í ì ĩ k l m n ŋ o ó ò õ ɔ ɔ́ ɔ̀ ɔ̃ p r s t u ú ù ũ v ʋ w y z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] { } § @ * / & # † ‡ ′ ″", - 3: "ă â å ä ā æ c ç ĕ ê ë ĭ î ï j ñ ŏ ô ö ø œ q ŭ û ü ÿ", - 5: "A B D Ɖ E Ɛ F Ƒ G Ɣ H X I K L M N Ŋ O Ɔ P R S T U V Ʋ W Y Z", - }, - "el": { - 0: "α ά β γ δ ε έ ζ η ή θ ι ί ϊ ΐ κ λ μ ν ξ ο ό π ρ σ ς τ υ ύ ϋ ΰ φ χ ψ ω ώ", - 2: "- ‐ – — , ; : ! . … \" ( ) [ ] § @ * / \\ &", - 3: "ἀ ἄ ἂ ἆ ἁ ἅ ἃ ἇ ὰ ᾶ ἐ ἔ ἒ ἑ ἕ ἓ ὲ ἠ ἤ ἢ ἦ ἡ ἥ ἣ ἧ ὴ ῆ ἰ ἴ ἲ ἶ ἱ ἵ ἳ ἷ ὶ ῖ ῒ ῗ ὄ ὂ ὃ ὸ ὐ ὔ ὒ ὖ ὑ ὕ ὓ ὗ ὺ ῦ ῢ ῧ ὤ ὢ ὦ ὥ ὣ ὧ ὼ ῶ", - 5: "Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω", - }, - "en": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "en-Dsrt": { - 0: "𐐨 𐐩 𐐪 𐐫 𐐬 𐐭 𐐮 𐐯 𐐰 𐐱 𐐲 𐐳 𐐴 𐐵 𐐶 𐐷 𐐸 𐐹 𐐺 𐐻 𐐼 𐐽 𐐾 𐐿 𐑀 𐑁 𐑂 𐑃 𐑄 𐑅 𐑆 𐑇 𐑈 𐑉 𐑊 𐑋 𐑌 𐑍 𐑎 𐑏", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - }, - "en-GB": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "en-ZA": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "eo": { - 0: "a b c ĉ d e f g ĝ h ĥ i j ĵ k l m n o p r s ŝ t u ŭ v z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q w x y", - 5: "A B C Ĉ D E F G Ĝ H Ĥ I J Ĵ K L M N O P R S Ŝ T U Ŭ V Z", - }, - "es": { - 0: "a á b c d e é f g h i í j k l m n ñ o ó p q r s t u ú ü v w x y z", - 2: "- ‐ – — , ; : ! ¡ ? ¿ . … ' ‘ ’ \" “ ” « » ( ) [ ] § @ * / \\ & # † ‡ ′ ″", - 3: "ª à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī º ò ŏ ô ö ø ō œ ù ŭ û ū ÿ", - 5: "A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z", - }, - "et": { - 0: "a b c d e f g h i j k l m n o p q r s š z ž t u v w õ ä ö ü x y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à â å ā æ ç é è ê ë ē í ì î ï ī ñ ó ò ŏ ô ø ō œ ú ù û ū", - 5: "A B C D E F G H I J K L M N O P Q R S Š Z Ž T U V Õ Ä Ö Ü X Y", - }, - "eu": { - 0: "a b c ç d e f g h i j k l m n ñ o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "ewo": { - 0: "a á à â ǎ b d dz e é è ê ě ə ə́ ə̀ ə̂ ə̌ ɛ ɛ́ ɛ̀ ɛ̂ ɛ̌ f g h i í ì î ǐ k kp l m n ń ǹ ng nk ŋ o ó ò ô ǒ ɔ ɔ́ ɔ̀ ɔ̂ ɔ̌ p r s t ts u ú ù û ǔ v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c j q x", - 5: "A B D E Ə Ɛ F G H I K L M N Ŋ O Ɔ P R S T U V W Y Z", - }, - "fa": { - 0: "ً ٍ ٌ ّ ٔ آ ا ء أ ؤ ئ ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ة ی", - 2: "- ‐ ، ٫ ٬ ؛ : ! ؟ . … « » ( ) [ ] * / \\", - 3: "\u200c \u200d \u200e \u200f َ ِ ُ ْ ٖ ٰ ۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ إ ك ى ي", - 5: "آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی", - }, - "fa-AF": { - 0: "ً ٍ ٌ ّ ٔ آ ا ء أ ؤ ئ ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ة ی", - 2: "- ‐ ، ٫ ٬ ؛ : ! ؟ . … « » ( ) [ ] * / \\", - 3: "ٖ ٰ \u200c \u200d ټ ځ څ ډ ړ ږ ښ ګ ڼ ي", - 5: "آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی", - }, - "ff": { - 0: "a b ɓ c d ɗ e f g h i j k l m n ñ ŋ o p r s t u w y ƴ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q v x z", - 5: "A B Ɓ C D Ɗ E F G H I J K L M N Ñ Ŋ O P R S T U W Y Ƴ", - }, - "fi": { - 0: "a b c d e f g h i j k l m n o p q r s š t u v w x y z ž å ä ö", - 3: "á à â ã č ç đ é è ê ë ǧ ǥ ȟ í î ï ǩ ń ñ ŋ ô õ œ ř ß ŧ ú ù û ÿ ü ʒ ǯ æ ø", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö", - }, - "fil": { - 0: "a b c d e f g h i j k l m n ñ ng o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à â é è ê í ì î ó ò ô ú ù û", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "fo": { - 0: "a á b d ð e f g h i í j k l m n o ó p r s t u ú v x y ý æ ø", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c q w z", - }, - "fr": { - 0: "a à â æ b c ç d e é è ê ë f g h i î ï j k l m n o ô œ p q r s t u ù û ü v w x y ÿ z", - 2: "- ‐ – — , ; : ! ? . … ’ \" “ ” « » ( ) [ ] § @ * / & # † ‡", - 3: "á å ä ã ā ē í ì ī ñ ó ò ö ø ú ǔ", - }, - "fur": { - 0: "a à â b c ç d e è ê f g h i ì î j k l m n o ò ô p q r s t u ù û v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "å č é ë ğ ï ñ ó š ü", - }, - "ga": { - 0: "a á b c d e é f g h i í l m n o ó p r s t u ú", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "å ḃ ċ ḋ ḟ ġ j k ṁ ṗ q ṡ ṫ v w x y z", - }, - "gd": { - 0: "a à b c d e è f g h i ì l m n o ò p r s t u ù", - 3: "á ċ ḋ é ḟ ġ j k ṁ ó ṗ q ṡ ṫ v w x y z", - 5: "A B C D E F G H I L M N O P R S T U", - }, - "gl": { - 0: "a á b c d e é f g h i í j k l m n ñ o ó p q r s t u ú ü v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z", - }, - "gsw": { - 0: "a ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à ă â å ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ú ù ŭ û ū ÿ", - }, - "gu": { - 0: "઼ ૐ ં ઁ ઃ અ આ ઇ ઈ ઉ ઊ ઋ ૠ ઍ એ ઐ ઑ ઓ ઔ ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ ઽ ા િ ી ુ ૂ ૃ ૄ ૅ ે ૈ ૉ ો ૌ ્", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d ૰", - 5: "અ આ ઇ ઈ ઉ ઊ ઋ એ ઐ ઓ ઔ ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ", - }, - "guz": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "gv": { - 0: "a b c ç d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "ha": { - 0: "a b ɓ c d ɗ e f g h i j k ƙ l m n o r s sh t ts u w y ʼy z ʼ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à â é è ê í ì î ó ò ô p q r̃ ú ù û v x ƴ", - }, - "haw": { - 0: "a ā e ē i ī o ō u ū h k l m n p w ʻ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "b c d f g j q r s t v x y z", - }, - "he": { - 0: "א ב ג ד ה ו ז ח ט י כ ך ל מ ם נ ן ס ע פ ף צ ץ ק ר ש ת", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ֽ ׄ \u200e \u200f ְ ֱ ֲ ֳ ִ ֵ ֶ ַ ָ ֹ ֻ ׂ ׁ ּ ֿ ־ ׳ ״", - 5: "א ב ג ד ה ו ז ח ט י כ ל מ נ ס ע פ צ ק ר ש ת", - }, - "hi": { - 0: "़ ॐ ं ँ ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ऽ ा ि ी ु ू ृ ॄ ॅ े ै ॉ ो ौ ्", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - }, - "hr": { - 0: "a b c č ć d dž đ e f g h i j k l lj m n nj o p r s š t u v z ž", - 2: "‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] @ * / ′ ″", - 3: "q w x y", - 5: "A B C Č Ć D DŽ Đ E F G H I J K L LJ M N NJ O P Q R S Š T U V W X Y Z Ž", - }, - "hu": { - 0: "a á b c cs ccs d dz ddz dzs ddzs e é f g gy ggy h i í j k l ly lly m n ny nny o ó ö ő p r s sz ssz t ty tty u ú ü ű v z zs zzs", - 2: "- – , ; : ! ? . … ' ’ \" ” „ « » ( ) [ ] { } 〈 〉 § @ * / & # ⸓ ~", - 3: "à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ô ø ō œ q ù ŭ û ū w x y ÿ", - 5: "A Á B C CS D DZ DZS E É F G GY H I Í J K L LY M N NY O Ó Ö Ő P Q R S SZ T TY U Ú Ü Ű V W X Y Z ZS", - }, - "hy": { - 0: "ա բ գ դ ե զ է ը թ ժ ի լ խ ծ կ հ ձ ղ ճ մ յ ն շ ո չ պ ջ ռ ս վ տ ր ց ւ փ ք և օ ֆ", - 2: "֊ ՝ ՜ ՞ « » ՚ ՛ ՟", - }, - "ia": { - 0: "a b c ch d e f g h i j k l m n o p ph q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "id": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "‐ – — , ; : ! ? . … ' ‘ ’ “ ” ( ) [ ] /", - 3: "å q x z", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "ig": { - 0: "a b ch d e ẹ f g gb gh gw h i ị j k kp kw l m n ṅ nw ny o ọ p r s sh t u ụ v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "ii": { - 0: "ꀀ ꀀ ꀁ ꀂ ꀃ ꀄ ꀅ ꀆ ꀇ ꀈ ꀉ ꀊ ꀋ ꀌ ꀍ ꀎ ꀏ ꀐ ꀑ ꀒ ꀓ ꀔ ꀕ ꀖ ꀗ ꀘ ꀙ ꀚ ꀛ ꀜ ꀝ ꀞ ꀟ ꀠ ꀡ ꀢ ꀣ ꀤ ꀥ ꀦ ꀧ ꀨ ꀩ ꀪ ꀫ ꀬ ꀭ ꀮ ꀯ ꀰ ꀱ ꀲ ꀳ ꀴ ꀵ ꀶ ꀷ ꀸ ꀹ ꀺ ꀻ ꀼ ꀽ ꀾ ꀿ ꁀ ꁁ ꁂ ꁃ ꁄ ꁅ ꁆ ꁇ ꁈ ꁉ ꁊ ꁋ ꁌ ꁍ ꁎ ꁏ ꁐ ꁑ ꁒ ꁓ ꁔ ꁕ ꁖ ꁗ ꁘ ꁙ ꁚ ꁛ ꁜ ꁝ ꁞ ꁟ ꁠ ꁡ ꁢ ꁣ ꁤ ꁥ ꁦ ꁧ ꁨ ꁩ ꁪ ꁫ ꁬ ꁭ ꁮ ꁯ ꁰ ꁱ ꁲ ꁳ ꁴ ꁵ ꁶ ꁷ ꁸ ꁹ ꁺ ꁻ ꁼ ꁽ ꁾ ꁿ ꂀ ꂁ ꂂ ꂃ ꂄ ꂅ ꂆ ꂇ ꂈ ꂉ ꂊ ꂋ ꂌ ꂍ ꂎ ꂏ ꂐ ꂑ ꂒ ꂓ ꂔ ꂕ ꂖ ꂗ ꂘ ꂙ ꂚ ꂛ ꂜ ꂝ ꂞ ꂟ ꂠ ꂡ ꂢ ꂣ ꂤ ꂥ ꂦ ꂧ ꂨ ꂩ ꂪ ꂫ ꂬ ꂭ ꂮ ꂯ ꂰ ꂱ ꂲ ꂳ ꂴ ꂵ ꂶ ꂷ ꂸ ꂹ ꂺ ꂻ ꂼ ꂽ ꂾ ꂿ ꃀ ꃁ ꃂ ꃃ ꃄ ꃅ ꃆ ꃇ ꃈ ꃉ ꃊ ꃋ ꃌ ꃍ ꃎ ꃏ ꃐ ꃑ ꃒ ꃓ ꃔ ꃕ ꃖ ꃗ ꃘ ꃙ ꃚ ꃛ ꃜ ꃝ ꃞ ꃟ ꃠ ꃡ ꃢ ꃣ ꃤ ꃥ ꃦ ꃧ ꃨ ꃩ ꃪ ꃫ ꃬ ꃭ ꃮ ꃯ ꃰ ꃱ ꃲ ꃳ ꃴ ꃵ ꃶ ꃷ ꃸ ꃹ ꃺ ꃻ ꃼ ꃽ ꃾ ꃿ ꄀ ꄁ ꄂ ꄃ ꄄ ꄅ ꄆ ꄇ ꄈ ꄉ ꄊ ꄋ ꄌ ꄍ ꄎ ꄏ ꄐ ꄑ ꄒ ꄓ ꄔ ꄕ ꄖ ꄗ ꄘ ꄙ ꄚ ꄛ ꄜ ꄝ ꄞ ꄟ ꄠ ꄡ ꄢ ꄣ ꄤ ꄥ ꄦ ꄧ ꄨ ꄩ ꄪ ꄫ ꄬ ꄭ ꄮ ꄯ ꄰ ꄱ ꄲ ꄳ ꄴ ꄵ ꄶ ꄷ ꄸ ꄹ ꄺ ꄻ ꄼ ꄽ ꄾ ꄿ ꅀ ꅁ ꅂ ꅃ ꅄ ꅅ ꅆ ꅇ ꅈ ꅉ ꅊ ꅋ ꅌ ꅍ ꅎ ꅏ ꅐ ꅑ ꅒ ꅓ ꅔ ꅕ ꅖ ꅗ ꅘ ꅙ ꅚ ꅛ ꅜ ꅝ ꅞ ꅟ ꅠ ꅡ ꅢ ꅣ ꅤ ꅥ ꅦ ꅧ ꅨ ꅩ ꅪ ꅫ ꅬ ꅭ ꅮ ꅯ ꅰ ꅱ ꅲ ꅳ ꅴ ꅵ ꅶ ꅷ ꅸ ꅹ ꅺ ꅻ ꅼ ꅽ ꅾ ꅿ ꆀ ꆁ ꆂ ꆃ ꆄ ꆅ ꆆ ꆇ ꆈ ꆉ ꆊ ꆋ ꆌ ꆍ ꆎ ꆏ ꆐ ꆑ ꆒ ꆓ ꆔ ꆕ ꆖ ꆗ ꆘ ꆙ ꆚ ꆛ ꆜ ꆝ ꆞ ꆟ ꆠ ꆡ ꆢ ꆣ ꆤ ꆥ ꆦ ꆧ ꆨ ꆩ ꆪ ꆫ ꆬ ꆭ ꆮ ꆯ ꆰ ꆱ ꆲ ꆳ ꆴ ꆵ ꆶ ꆷ ꆸ ꆹ ꆺ ꆻ ꆼ ꆽ ꆾ ꆿ ꇀ ꇁ ꇂ ꇃ ꇄ ꇅ ꇆ ꇇ ꇈ ꇉ ꇊ ꇋ ꇌ ꇍ ꇎ ꇏ ꇐ ꇑ ꇒ ꇓ ꇔ ꇕ ꇖ ꇗ ꇘ ꇙ ꇚ ꇛ ꇜ ꇝ ꇞ ꇟ ꇠ ꇡ ꇢ ꇣ ꇤ ꇥ ꇦ ꇧ ꇨ ꇩ ꇪ ꇫ ꇬ ꇭ ꇮ ꇯ ꇰ ꇱ ꇲ ꇳ ꇴ ꇵ ꇶ ꇷ ꇸ ꇹ ꇺ ꇻ ꇼ ꇽ ꇾ ꇿ ꈀ ꈁ ꈂ ꈃ ꈄ ꈅ ꈆ ꈇ ꈈ ꈉ ꈊ ꈋ ꈌ ꈍ ꈎ ꈏ ꈐ ꈑ ꈒ ꈓ ꈔ ꈕ ꈖ ꈗ ꈘ ꈙ ꈚ ꈛ ꈜ ꈝ ꈞ ꈟ ꈠ ꈡ ꈢ ꈣ ꈤ ꈥ ꈦ ꈧ ꈨ ꈩ ꈪ ꈫ ꈬ ꈭ ꈮ ꈯ ꈰ ꈱ ꈲ ꈳ ꈴ ꈵ ꈶ ꈷ ꈸ ꈹ ꈺ ꈻ ꈼ ꈽ ꈾ ꈿ ꉀ ꉁ ꉂ ꉃ ꉄ ꉅ ꉆ ꉇ ꉈ ꉉ ꉊ ꉋ ꉌ ꉍ ꉎ ꉏ ꉐ ꉑ ꉒ ꉓ ꉔ ꉕ ꉖ ꉗ ꉘ ꉙ ꉚ ꉛ ꉜ ꉝ ꉞ ꉟ ꉠ ꉡ ꉢ ꉣ ꉤ ꉥ ꉦ ꉧ ꉨ ꉩ ꉪ ꉫ ꉬ ꉭ ꉮ ꉯ ꉰ ꉱ ꉲ ꉳ ꉴ ꉵ ꉶ ꉷ ꉸ ꉹ ꉺ ꉻ ꉼ ꉽ ꉾ ꉿ ꊀ ꊁ ꊂ ꊃ ꊄ ꊅ ꊆ ꊇ ꊈ ꊉ ꊊ ꊋ ꊌ ꊍ ꊎ ꊏ ꊐ ꊑ ꊒ ꊓ ꊔ ꊕ ꊖ ꊗ ꊘ ꊙ ꊚ ꊛ ꊜ ꊝ ꊞ ꊟ ꊠ ꊡ ꊢ ꊣ ꊤ ꊥ ꊦ ꊧ ꊨ ꊩ ꊪ ꊫ ꊬ ꊭ ꊮ ꊯ ꊰ ꊱ ꊲ ꊳ ꊴ ꊵ ꊶ ꊷ ꊸ ꊹ ꊺ ꊻ ꊼ ꊽ ꊾ ꊿ ꋀ ꋁ ꋂ ꋃ ꋄ ꋅ ꋆ ꋇ ꋈ ꋉ ꋊ ꋋ ꋌ ꋍ ꋎ ꋏ ꋐ ꋑ ꋒ ꋓ ꋔ ꋕ ꋖ ꋗ ꋘ ꋙ ꋚ ꋛ ꋜ ꋝ ꋞ ꋟ ꋠ ꋡ ꋢ ꋣ ꋤ ꋥ ꋦ ꋧ ꋨ ꋩ ꋪ ꋫ ꋬ ꋭ ꋮ ꋯ ꋰ ꋱ ꋲ ꋳ ꋴ ꋵ ꋶ ꋷ ꋸ ꋹ ꋺ ꋻ ꋼ ꋽ ꋾ ꋿ ꌀ ꌁ ꌂ ꌃ ꌄ ꌅ ꌆ ꌇ ꌈ ꌉ ꌊ ꌋ ꌌ ꌍ ꌎ ꌏ ꌐ ꌑ ꌒ ꌓ ꌔ ꌕ ꌖ ꌗ ꌘ ꌙ ꌚ ꌛ ꌜ ꌝ ꌞ ꌟ ꌠ ꌡ ꌢ ꌣ ꌤ ꌥ ꌦ ꌧ ꌨ ꌩ ꌪ ꌫ ꌬ ꌭ ꌮ ꌯ ꌰ ꌱ ꌲ ꌳ ꌴ ꌵ ꌶ ꌷ ꌸ ꌹ ꌺ ꌻ ꌼ ꌽ ꌾ ꌿ ꍀ ꍁ ꍂ ꍃ ꍄ ꍅ ꍆ ꍇ ꍈ ꍉ ꍊ ꍋ ꍌ ꍍ ꍎ ꍏ ꍐ ꍑ ꍒ ꍓ ꍔ ꍕ ꍖ ꍗ ꍘ ꍙ ꍚ ꍛ ꍜ ꍝ ꍞ ꍟ ꍠ ꍡ ꍢ ꍣ ꍤ ꍥ ꍦ ꍧ ꍨ ꍩ ꍪ ꍫ ꍬ ꍭ ꍮ ꍯ ꍰ ꍱ ꍲ ꍳ ꍴ ꍵ ꍶ ꍷ ꍸ ꍹ ꍺ ꍻ ꍼ ꍽ ꍾ ꍿ ꎀ ꎁ ꎂ ꎃ ꎄ ꎅ ꎆ ꎇ ꎈ ꎉ ꎊ ꎋ ꎌ ꎍ ꎎ ꎏ ꎐ ꎑ ꎒ ꎓ ꎔ ꎕ ꎖ ꎗ ꎘ ꎙ ꎚ ꎛ ꎜ ꎝ ꎞ ꎟ ꎠ ꎡ ꎢ ꎣ ꎤ ꎥ ꎦ ꎧ ꎨ ꎩ ꎪ ꎫ ꎬ ꎭ ꎮ ꎯ ꎰ ꎱ ꎲ ꎳ ꎴ ꎵ ꎶ ꎷ ꎸ ꎹ ꎺ ꎻ ꎼ ꎽ ꎾ ꎿ ꏀ ꏁ ꏂ ꏃ ꏄ ꏅ ꏆ ꏇ ꏈ ꏉ ꏊ ꏋ ꏌ ꏍ ꏎ ꏏ ꏐ ꏑ ꏒ ꏓ ꏔ ꏕ ꏖ ꏗ ꏘ ꏙ ꏚ ꏛ ꏜ ꏝ ꏞ ꏟ ꏠ ꏡ ꏢ ꏣ ꏤ ꏥ ꏦ ꏧ ꏨ ꏩ ꏪ ꏫ ꏬ ꏭ ꏮ ꏯ ꏰ ꏱ ꏲ ꏳ ꏴ ꏵ ꏶ ꏷ ꏸ ꏹ ꏺ ꏻ ꏼ ꏽ ꏾ ꏿ ꐀ ꐁ ꐂ ꐃ ꐄ ꐅ ꐆ ꐇ ꐈ ꐉ ꐊ ꐋ ꐌ ꐍ ꐎ ꐏ ꐐ ꐑ ꐒ ꐓ ꐔ ꐕ ꐖ ꐗ ꐘ ꐙ ꐚ ꐛ ꐜ ꐝ ꐞ ꐟ ꐠ ꐡ ꐢ ꐣ ꐤ ꐥ ꐦ ꐧ ꐨ ꐩ ꐪ ꐫ ꐬ ꐭ ꐮ ꐯ ꐰ ꐱ ꐲ ꐳ ꐴ ꐵ ꐶ ꐷ ꐸ ꐹ ꐺ ꐻ ꐼ ꐽ ꐾ ꐿ ꑀ ꑁ ꑂ ꑃ ꑄ ꑅ ꑆ ꑇ ꑈ ꑉ ꑊ ꑋ ꑌ ꑍ ꑎ ꑏ ꑐ ꑑ ꑒ ꑓ ꑔ ꑕ ꑖ ꑗ ꑘ ꑙ ꑚ ꑛ ꑜ ꑝ ꑞ ꑟ ꑠ ꑡ ꑢ ꑣ ꑤ ꑥ ꑦ ꑧ ꑨ ꑩ ꑪ ꑫ ꑬ ꑭ ꑮ ꑯ ꑰ ꑱ ꑲ ꑳ ꑴ ꑵ ꑶ ꑷ ꑸ ꑹ ꑺ ꑻ ꑼ ꑽ ꑾ ꑿ ꒀ ꒁ ꒂ ꒃ ꒄ ꒅ ꒆ ꒇ ꒈ ꒉ ꒊ ꒋ ꒌ", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "is": { - 0: "a á b d ð e é f g h i í j k l m n o ó p r s t u ú v y ý þ æ ö", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c q w x z", - }, - "it": { - 0: "a à b c d e é è f g h i ì j k l m n o ó ò p q r s t u ù v w x y z", - 2: "- — , ; : ! ? . … “ ” ( ) [ ] { } @ /", - 3: "á â å ä ã æ ç ê ë í î ï ñ ô ö õ ø œ ß ú û ü ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "ja": { - 0: "々 ゞ ー ゝ ヽ ヾ ぁ ァ あ ア ぃ ィ い イ ぅ ゥ う ウ ヴ ぇ ェ え エ ぉ ォ お オ ヵ か カ が ガ き キ ぎ ギ く ク ぐ グ ヶ け ケ げ ゲ こ コ ご ゴ さ サ ざ ザ し シ じ ジ す ス ず ズ せ セ ぜ ゼ そ ソ ぞ ゾ た タ だ ダ ち チ ぢ ヂ っ ッ つ ツ づ ヅ て テ で デ と ト ど ド な ナ に ニ ぬ ヌ ね ネ の ノ は ハ ば バ ぱ パ ひ ヒ び ビ ぴ ピ ふ フ ぶ ブ ぷ プ へ ヘ べ ベ ぺ ペ ほ ホ ぼ ボ ぽ ポ ま マ み ミ む ム め メ も モ ゃ ャ や ヤ ゅ ュ ゆ ユ ょ ョ よ ヨ ら ラ り リ る ル れ レ ろ ロ ゎ ヮ わ ワ ゐ ヰ ゑ ヱ を ヲ ん ン 一 丁 七 万 万 丈 三 上 下 不 与 丑 且 世 丘 丙 両 並 中 丸 丹 主 久 乏 乗 乙 九 乱 乳 乾 亀 了 予 争 事 二 互 五 井 亜 亡 交 亥 亨 享 享 京 亭 人 仁 今 介 仏 仕 他 付 仙 代 代 令 以 仮 仰 仲 件 任 企 伊 伏 伏 伐 休 会 伝 伯 伴 伸 伺 似 但 位 位 低 住 佐 体 何 余 作 佳 併 使 例 侍 供 依 価 侮 侯 侵 便 係 促 俊 俗 保 信 修 俳 俵 俸 俺 倉 個 倍 倒 候 借 倣 値 倫 倹 偉 偏 停 健 側 側 偵 偶 偽 傍 傑 傘 備 催 債 傷 傾 働 像 僕 僚 僧 儀 億 儒 償 優 元 元 兄 充 兆 先 光 克 免 兎 児 党 入 全 八 八 公 六 共 兵 具 典 兼 内 円 冊 再 冒 冗 写 冠 冬 冷 准 凍 凝 凡 処 凶 凸 凸 凹 出 刀 刃 分 分 切 刈 刊 刑 列 初 判 別 利 到 制 制 刷 券 刺 刻 則 削 前 剖 剛 剣 剤 副 剰 割 創 劇 力 功 加 劣 助 努 励 労 効 劾 勅 勇 勉 動 勘 務 勝 募 勢 勤 勧 勲 勺 匁 包 化 北 匠 匹 匹 区 医 匿 十 千 升 午 半 卑 卑 卒 卓 協 南 単 博 占 卯 卯 印 危 即 即 却 卵 卸 厄 厘 厚 原 厳 去 参 又 及 及 友 双 反 収 叔 取 受 叙 口 口 古 句 叫 召 可 台 史 右 号 司 各 合 吉 同 同 名 后 吏 吐 向 君 吟 否 含 吸 吹 呈 呈 呉 告 周 味 呼 命 和 咲 哀 品 員 哲 唆 唇 唐 唯 唱 商 問 啓 善 喚 喜 喝 喪 喫 営 嗣 嘆 嘉 嘱 器 噴 嚇 囚 四 回 因 団 困 囲 図 固 国 圏 園 土 圧 在 地 坂 均 坊 坑 坪 垂 型 垣 埋 城 域 執 培 基 埼 堀 堂 堅 堕 堤 堪 報 場 塀 塁 塊 塑 塔 塗 塚 塩 塾 境 墓 増 墜 墨 墳 墾 壁 壇 壊 壌 士 壬 壮 声 声 壱 売 変 夏 夕 外 多 夜 夢 大 天 天 太 夫 央 失 奇 奇 奈 奉 奏 契 奔 奥 奨 奪 奮 女 奴 好 如 如 妃 妄 妊 妙 妥 妨 妹 妻 姉 始 姓 委 姫 姻 姿 威 娘 娠 娯 婆 婚 婦 婿 媒 嫁 嫌 嫡 嬢 子 孔 字 存 孝 季 孤 学 孫 宅 宇 宇 守 安 完 宗 宗 官 宙 定 宜 宝 実 客 客 宣 室 宮 宰 害 害 宴 宵 家 容 宿 寂 寄 寄 寅 密 富 寒 寛 寝 察 寡 寧 審 寮 寸 寺 対 寿 封 専 射 将 尉 尉 尊 尋 導 小 少 尚 就 尺 尼 尼 尽 尾 尿 局 居 屈 届 屋 展 属 層 履 屯 山 岐 岡 岩 岬 岳 岸 峠 峡 峰 島 崇 崎 崩 川 州 巡 巣 工 工 左 巧 巨 差 己 巳 巻 市 布 帆 希 帝 帥 師 席 帯 帰 帳 常 帽 幅 幕 幣 干 干 平 年 幸 幹 幻 幻 幼 幽 幾 庁 広 床 序 底 店 庚 府 度 座 庫 庭 庶 庶 康 庸 廃 廉 廊 延 廷 建 弁 弊 式 弐 弓 弓 弔 引 弘 弟 弦 弧 弱 張 強 弾 当 形 彩 彫 彰 影 役 彼 往 征 径 待 律 後 徐 徒 従 得 御 復 循 微 徳 徴 徹 心 必 忌 忍 志 志 忘 忙 応 忠 快 念 怒 怖 思 怠 急 性 怪 恋 恐 恒 恥 恨 恩 恭 息 恵 悔 悟 悠 患 悦 悩 悪 悲 悼 情 惑 惜 惨 惰 想 愁 愉 意 愚 愛 感 慈 態 慌 慎 慕 慢 慣 慨 慮 慰 慶 憂 憎 憤 憩 憲 憶 憾 懇 懐 懲 懸 戊 戌 成 成 我 戒 戦 戯 戸 戻 房 所 扇 扉 手 才 打 払 扱 扶 批 承 技 抄 把 抑 投 抗 折 抜 択 披 抱 抵 抹 押 抽 担 拍 拐 拒 拓 拘 拙 招 拝 拠 拡 括 拷 拾 持 指 挑 挙 挟 振 挿 捕 捜 捨 据 掃 授 掌 排 掘 掛 採 探 接 控 推 措 掲 描 提 揚 換 握 揮 援 揺 損 搬 搭 携 搾 摂 摘 摩 撃 撤 撮 撲 擁 操 擦 擬 支 改 攻 放 政 故 敏 救 敗 教 敢 散 敬 数 整 敵 敷 文 斉 斎 斗 料 斜 斤 斥 断 新 方 施 旅 旋 族 旗 既 日 旧 旧 旨 早 旬 昆 昇 昌 明 易 昔 星 映 春 昨 昭 是 昼 時 晩 普 景 晴 晶 暁 暇 暑 暖 暗 暦 暫 暮 暴 曇 曜 曲 更 書 曹 替 最 月 有 服 朕 朗 望 朝 期 木 未 未 末 本 札 朱 朴 机 朽 杉 材 村 束 条 来 杯 東 松 板 析 林 枚 果 枝 枠 枢 枯 架 柄 某 染 柔 柱 柳 査 栄 栓 校 株 核 根 格 栽 桃 案 桑 桜 桟 梅 械 棄 棋 棒 棚 棟 森 棺 植 検 業 極 楼 楽 概 構 様 槽 標 模 権 横 樹 橋 機 欄 欠 次 欧 欲 欺 款 歌 歓 止 正 武 歩 歯 歳 歴 死 殉 殉 殊 残 殖 殴 段 殺 殻 殿 母 毎 毒 比 毛 氏 民 気 水 氷 永 汁 求 汎 汗 汚 江 池 決 汽 沈 沖 没 沢 河 沸 油 治 沼 沿 況 泉 泊 泌 法 泡 泡 波 泣 泥 注 泰 泳 洋 洗 洞 津 洪 活 派 流 浄 浅 浜 浦 浪 浮 浴 海 浸 消 涙 涯 液 涼 淑 淡 深 混 添 清 渇 渇 済 渉 渋 渓 減 渡 渦 温 測 港 湖 湯 湾 湾 湿 満 源 準 溝 溶 滅 滋 滑 滝 滞 滴 漁 漂 漆 漏 演 漠 漢 漫 漬 漸 潔 潜 潟 潤 潮 澄 激 濁 濃 濫 濯 瀬 火 灯 灰 災 炉 炊 炎 炭 点 為 烈 無 焦 然 焼 煙 照 煩 煮 熟 熱 燃 燥 爆 爵 父 片 版 牙 牛 牧 物 牲 特 犠 犬 犯 状 狂 狩 独 狭 猛 猟 猪 猫 献 猶 猿 獄 獣 獲 玄 率 玉 王 珍 珠 班 現 球 理 琴 環 璽 瓶 甘 甚 生 産 用 田 田 由 甲 申 男 町 画 界 畑 畔 留 畜 畝 略 番 異 畳 疎 疑 疫 疲 疾 病 症 痘 痛 痢 痴 療 癒 癖 癸 発 登 白 百 的 皆 皇 皮 皿 盆 益 盗 盛 盟 監 盤 目 盲 直 相 盾 省 看 県 真 眠 眺 眼 着 睡 督 瞬 矛 矢 知 短 矯 石 砂 研 砕 砲 破 硝 硫 硬 碁 碑 確 磁 磨 礁 礎 示 礼 社 祈 祉 祖 祚 祝 神 祥 票 祭 禁 禄 禅 禍 禍 禎 福 秀 私 秋 科 秒 秘 租 秩 称 移 程 税 稚 種 稲 稼 稿 穀 穂 積 穏 穫 穴 究 空 突 窃 窒 窓 窮 窯 立 竜 章 童 端 競 竹 笑 笛 符 第 筆 等 筋 筒 答 策 箇 算 管 箱 節 範 築 篤 簡 簿 籍 米 粉 粋 粒 粗 粘 粛 粧 精 糖 糧 糸 系 糾 紀 約 紅 紋 納 純 紙 紙 級 紛 素 素 紡 索 紫 累 細 紳 紹 紺 終 組 経 結 絞 絡 給 統 絵 絶 絹 継 続 維 綱 網 綿 緊 総 緑 緒 線 締 編 緩 緯 練 縁 縄 縛 縦 縫 縮 績 繁 繊 織 繕 繭 繰 缶 罪 置 罰 署 罷 羅 羊 美 群 義 羽 翁 翌 習 翻 翼 老 考 者 耐 耕 耗 耳 聖 聞 聴 職 肉 肌 肖 肝 肢 肥 肩 肪 肯 育 肺 胃 胆 背 胎 胞 胴 胸 能 脂 脅 脈 脚 脱 脳 脹 腐 腕 腰 腸 腹 膚 膜 膨 臓 臣 臨 自 臭 至 致 興 舌 舎 舗 舞 舟 航 般 舶 船 艇 艦 良 色 芋 芝 花 芳 芸 芽 苗 若 苦 英 茂 茎 茶 草 荒 荘 荷 菊 菌 菓 菜 華 落 葉 著 葬 蒸 蓄 蔵 薄 薦 薪 薪 薫 薬 藤 藩 藻 虎 虐 虚 虜 虞 虫 蚊 蚕 蛇 蛍 蛮 融 血 衆 行 術 街 衛 衝 衡 衣 表 衰 衷 袋 被 裁 裂 装 裏 裕 補 裸 製 複 褐 褒 襟 襲 西 要 覆 覇 見 規 視 覚 覧 親 観 角 解 触 言 訂 計 討 訓 託 記 訟 訪 設 許 訳 訴 診 証 詐 詔 評 詞 詠 試 詩 詰 詰 話 該 詳 誇 誉 誌 認 誓 誕 誘 語 誠 誤 説 読 誰 課 調 談 請 論 諭 諮 諸 諾 謀 謁 謄 謙 講 謝 謡 謹 識 譜 警 議 譲 護 谷 豆 豊 豚 象 豪 貝 貞 負 負 財 貢 貧 貧 貨 販 貫 責 貯 貴 買 貸 費 貿 賀 賃 賄 資 賊 賓 賛 賜 賞 賠 賢 賦 質 購 贈 赤 赦 走 赴 起 超 越 趣 足 距 跡 路 跳 践 踊 踏 躍 身 車 軌 軍 軒 軟 転 軸 軽 較 載 輝 輩 輪 輸 轄 辛 辞 辰 辰 辱 農 辺 込 迅 迎 近 返 迫 迭 述 迷 追 退 送 逃 逆 透 逐 逓 途 通 逝 速 造 連 逮 週 進 逸 遂 遅 遇 遊 運 遍 過 道 道 達 違 遠 遣 適 遭 遮 遵 遷 選 遺 避 還 邦 邪 邸 郊 郎 郡 部 郭 郵 郷 都 酉 酌 配 酒 酔 酢 酪 酬 酵 酷 酸 醜 醸 釈 里 里 重 野 量 金 針 釣 鈍 鈴 鉄 鉛 鉢 鉱 銀 銃 銅 銑 銘 銭 鋭 鋳 鋼 錘 錠 錬 錯 録 鍛 鎖 鎮 鏡 鐘 鑑 長 門 閉 開 閏 閑 間 関 閣 閥 閲 闘 阪 防 阻 附 降 限 陛 院 院 陣 除 陥 陪 陰 陳 陵 陶 陸 険 陽 隅 隆 隊 階 随 隔 際 障 隠 隣 隷 隻 雄 雄 雅 集 雇 雉 雌 雑 離 難 雨 雪 雰 雲 零 雷 電 需 震 霊 霜 霧 露 青 静 非 面 革 靴 韓 音 韻 響 頂 頃 項 順 預 預 頑 頒 領 頭 頻 頼 題 額 顔 顕 願 類 顧 風 飛 食 飢 飯 飲 飼 飼 飽 飾 養 餓 館 首 香 馬 駄 駄 駅 駆 駐 騎 騒 験 騰 驚 骨 髄 高 髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鹿 麗 麦 麻 黄 黒 黙 鼓 鼠 鼻 齢", - 2: "‾ _ _ - - ‐ — ― 〜 ・ ・ , , 、 、 ; ; : : ! ! ? ? . . ‥ … 。 。 ' \ ‘ ’ \" " “ ” ( ( ) ) [ [ ] ] { { } } 〈 〉 《 》 「 「 」 」 『 』 【 】 〔 〕 ‖ § ¶ @ @ * * / / \\ & & # # % % ‰ † ‡ ′ ″ 〃 ※", - 3: "兌 拼 楔 錄 鳯", - }, - "jgo": { - 0: "a á â ǎ b c d ɛ ɛ́ ɛ̀ ɛ̂ ɛ̌ ɛ̄ f g h i í î ǐ j k l m ḿ m̀ m̄ n ń ǹ n̄ ŋ ŋ́ ŋ̀ ŋ̄ ɔ ɔ́ ɔ̂ ɔ̌ p pf s sh t ts u ú û ǔ ʉ ʉ́ ʉ̂ ʉ̌ ʉ̈ v w ẅ y z ꞌ", - 2: "- , ; : ! ? . ‹ › « »", - 3: "e o q r x", - 5: "A B C D Ɛ F G H I J K L M N Ŋ Ɔ P Pf S Sh T Ts U Ʉ Ʉ̈ V W Ẅ Y Z Ꞌ", - }, - "jmc": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "ka": { - 0: "ა ბ გ დ ე ვ ზ თ ი კ ლ მ ნ ო პ ჟ რ ს ტ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჯ ჰ", - 2: "- ‐ – — , ; : ! ? . … ჻ ' ‘ ‚ “ „ « » ( ) [ ] { } § @ * / & # † ‡ ′ ″ №", - 3: "ჱ ჲ ჳ ჴ ჵ ჶ ჷ ჸ ჹ ჺ ⴀ ⴁ ⴂ ⴃ ⴄ ⴅ ⴆ ⴡ ⴇ ⴈ ⴉ ⴊ ⴋ ⴌ ⴢ ⴍ ⴎ ⴏ ⴐ ⴑ ⴒ ⴣ ⴓ ⴔ ⴕ ⴖ ⴗ ⴘ ⴙ ⴚ ⴛ ⴜ ⴝ ⴞ ⴤ ⴟ ⴠ ⴥ", - 5: "ა ბ გ დ ე ვ ზ თ ი კ ლ მ ნ ო პ ჟ რ ს ტ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჯ ჰ", - }, - "kab": { - 0: "a b c č d ḍ e ɛ f g ǧ ɣ h ḥ i j k l m n p q r ṛ s ṣ t ṭ u w x y z ẓ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "o v", - 5: "A B C Č D Ḍ E Ɛ F G Ǧ Ɣ H Ḥ I J K L M N P Q R Ṛ S Ṣ T Ṭ U W X Y Z Ẓ", - }, - "kam": { - 0: "a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "kde": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "kea": { - 0: "a b d dj e f g i j k l lh m n nh o p r s t tx u v x z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à ă â å ä ã ā æ c ç é è ĕ ê ë ē h í ì ĭ î ï ī ñ ó ò ŏ ô ö õ ø ō œ q ú ù ŭ û ü ū w y ÿ", - 5: "A B D E F G H I J K L M N O P R S T U V X Z", - }, - "khq": { - 0: "a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "v", - 5: "A à B C D E Ẽ F G H I J K L M N Ɲ Ŋ O Õ P Q R S Š T U W X Y Z Ž", - }, - "ki": { - 0: "a b c d e g h i ĩ j k m n o r t u ũ w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "f l p q s v x z", - 5: "A B C D E G H I J K M N O R T U W Y", - }, - "kk": { - 0: "а ә б в г ғ д е ё ж з и й к қ л м н ң о ө п р с т у ұ ү ф х һ ц ч ш щ ъ ы і ь э ю я", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "А Ә Б В Г Ғ Д Е Ё Ж З И Й К Қ Л М Н Ң О Ө П Р С Т У Ұ Ү Ф Х Һ Ц Ч Ш Щ Ъ Ы І Ь Э Ю Я", - }, - "kkj": { - 0: "a á à â a̧ b ɓ c d ɗ ɗy e é è ê ɛ ɛ́ ɛ̀ ɛ̂ ɛ̧ f g gb gw h i í ì î i̧ j k kp kw l m mb n nd nj ny ŋ ŋg ŋgb ŋgw o ó ò ô ɔ ɔ́ ɔ̀ ɔ̂ ɔ̧ p r s t u ú ù û u̧ v w y", - 2: ", : ! ? . … ‘ ‹ › “ ” « » ( ) *", - 3: "q x z", - 5: "A B Ɓ C D Ɗ Ɗy E Ɛ F G Gb Gw H I I̧ J K Kp Kw L M Mb N Nd Nj Ny Ŋ Ŋg Ŋgb Ŋgw O Ɔ Ɔ̧ P R S T U U̧ V W Y", - }, - "kl": { - 0: "a á â ã b c d e é ê f g h i í î ĩ j k l m n o ô p q ĸ r s t u ú û ũ v w x y z æ ø å", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "kln": { - 0: "a b c d e g h i j k l m n o p r s t u w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "f q v x z", - 5: "A B C D E G H I J K L M N O P R S T U W Y", - }, - "km": { - 0: "៌ ៎ ៏ ៑ ័ ៈ ់ ៉ ៊ ៍ ក ខ គ ឃ ង ច ឆ ជ ឈ ញ ដ ឋ ឌ ឍ ណ ត ថ ទ ធ ន ប ផ ព ភ ម យ រ ឫ ឬ ល ឭ ឮ វ ស ហ ឡ អ ឲ ឪ អា ឥ ឦ ឧ ឧក ឩ ឯ ឰ ឱ ឳ ា ិ ី ឹ ឺ ុ ូ ួ ើ ឿ ៀ េ ែ ៃ ោ ៅ ំ ះ ្", - 2: "- , ៖ ! ? . ។ ៕ ‘ ’ \" “ ” ( ) [ ] { } ៙ ៚", - 3: "឴ ឵ \u200b ឝ ឞ", - }, - "kn": { - 0: "಼ ೦ ೧ ೨ ೩ ೪ ೫ ೬ ೭ ೮ ೯ ಅ ಆ ಇ ಈ ಉ ಊ ಋ ೠ ಌ ೡ ಎ ಏ ಐ ಒ ಓ ಔ ಂ ಃ ಕ ಖ ಗ ಘ ಙ ಚ ಛ ಜ ಝ ಞ ಟ ಠ ಡ ಢ ಣ ತ ಥ ದ ಧ ನ ಪ ಫ ಬ ಭ ಮ ಯ ರ ಱ ಲ ವ ಶ ಷ ಸ ಹ ಳ ೞ ಽ ಾ ಿ ೀ ು ೂ ೃ ೄ ೆ ೇ ೈ ೊ ೋ ೌ ್ ೕ ೖ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - }, - "ko": { - 0: "가 가 각 갂 갃 간 갅 갆 갇 갈 갉 갊 갋 갌 갍 갎 갏 감 갑 값 갓 갔 강 갖 갗 갘 같 갚 갛 개 객 갞 갟 갠 갡 갢 갣 갤 갥 갦 갧 갨 갩 갪 갫 갬 갭 갮 갯 갰 갱 갲 갳 갴 갵 갶 갷 갸 갹 갺 갻 갼 갽 갾 갿 걀 걁 걂 걃 걄 걅 걆 걇 걈 걉 걊 걋 걌 걍 걎 걏 걐 걑 걒 걓 걔 걕 걖 걗 걘 걙 걚 걛 걜 걝 걞 걟 걠 걡 걢 걣 걤 걥 걦 걧 걨 걩 걪 걫 걬 걭 걮 걯 거 걱 걲 걳 건 걵 걶 걷 걸 걹 걺 걻 걼 걽 걾 걿 검 겁 겂 것 겄 겅 겆 겇 겈 겉 겊 겋 게 겍 겎 겏 겐 겑 겒 겓 겔 겕 겖 겗 겘 겙 겚 겛 겜 겝 겞 겟 겠 겡 겢 겣 겤 겥 겦 겧 겨 격 겪 겫 견 겭 겮 겯 결 겱 겲 겳 겴 겵 겶 겷 겸 겹 겺 겻 겼 경 겾 겿 곀 곁 곂 곃 계 곅 곆 곇 곈 곉 곊 곋 곌 곍 곎 곏 곐 곑 곒 곓 곔 곕 곖 곗 곘 곙 곚 곛 곜 곝 곞 곟 고 곡 곢 곣 곤 곥 곦 곧 골 곩 곪 곫 곬 곭 곮 곯 곰 곱 곲 곳 곴 공 곶 곷 곸 곹 곺 곻 과 곽 곾 곿 관 괁 괂 괃 괄 괅 괆 괇 괈 괉 괊 괋 괌 괍 괎 괏 괐 광 괒 괓 괔 괕 괖 괗 괘 괙 괚 괛 괜 괝 괞 괟 괠 괡 괢 괣 괤 괥 괦 괧 괨 괩 괪 괫 괬 괭 괮 괯 괰 괱 괲 괳 괴 괵 괶 괷 괸 괹 괺 괻 괼 괽 괾 괿 굀 굁 굂 굃 굄 굅 굆 굇 굈 굉 굊 굋 굌 굍 굎 굏 교 굑 굒 굓 굔 굕 굖 굗 굘 굙 굚 굛 굜 굝 굞 굟 굠 굡 굢 굣 굤 굥 굦 굧 굨 굩 굪 굫 구 국 굮 굯 군 굱 굲 굳 굴 굵 굶 굷 굸 굹 굺 굻 굼 굽 굾 굿 궀 궁 궂 궃 궄 궅 궆 궇 궈 궉 궊 궋 권 궍 궎 궏 궐 궑 궒 궓 궔 궕 궖 궗 궘 궙 궚 궛 궜 궝 궞 궟 궠 궡 궢 궣 궤 궥 궦 궧 궨 궩 궪 궫 궬 궭 궮 궯 궰 궱 궲 궳 궴 궵 궶 궷 궸 궹 궺 궻 궼 궽 궾 궿 귀 귁 귂 귃 귄 귅 귆 귇 귈 귉 귊 귋 귌 귍 귎 귏 귐 귑 귒 귓 귔 귕 귖 귗 귘 귙 귚 귛 규 귝 귞 귟 균 귡 귢 귣 귤 귥 귦 귧 귨 귩 귪 귫 귬 귭 귮 귯 귰 귱 귲 귳 귴 귵 귶 귷 그 극 귺 귻 근 귽 귾 귿 글 긁 긂 긃 긄 긅 긆 긇 금 급 긊 긋 긌 긍 긎 긏 긐 긑 긒 긓 긔 긕 긖 긗 긘 긙 긚 긛 긜 긝 긞 긟 긠 긡 긢 긣 긤 긥 긦 긧 긨 긩 긪 긫 긬 긭 긮 긯 기 긱 긲 긳 긴 긵 긶 긷 길 긹 긺 긻 긼 긽 긾 긿 김 깁 깂 깃 깄 깅 깆 깇 깈 깉 깊 깋 까 깍 깎 깏 깐 깑 깒 깓 깔 깕 깖 깗 깘 깙 깚 깛 깜 깝 깞 깟 깠 깡 깢 깣 깤 깥 깦 깧 깨 깩 깪 깫 깬 깭 깮 깯 깰 깱 깲 깳 깴 깵 깶 깷 깸 깹 깺 깻 깼 깽 깾 깿 꺀 꺁 꺂 꺃 꺄 꺅 꺆 꺇 꺈 꺉 꺊 꺋 꺌 꺍 꺎 꺏 꺐 꺑 꺒 꺓 꺔 꺕 꺖 꺗 꺘 꺙 꺚 꺛 꺜 꺝 꺞 꺟 꺠 꺡 꺢 꺣 꺤 꺥 꺦 꺧 꺨 꺩 꺪 꺫 꺬 꺭 꺮 꺯 꺰 꺱 꺲 꺳 꺴 꺵 꺶 꺷 꺸 꺹 꺺 꺻 꺼 꺽 꺾 꺿 껀 껁 껂 껃 껄 껅 껆 껇 껈 껉 껊 껋 껌 껍 껎 껏 껐 껑 껒 껓 껔 껕 껖 껗 께 껙 껚 껛 껜 껝 껞 껟 껠 껡 껢 껣 껤 껥 껦 껧 껨 껩 껪 껫 껬 껭 껮 껯 껰 껱 껲 껳 껴 껵 껶 껷 껸 껹 껺 껻 껼 껽 껾 껿 꼀 꼁 꼂 꼃 꼄 꼅 꼆 꼇 꼈 꼉 꼊 꼋 꼌 꼍 꼎 꼏 꼐 꼑 꼒 꼓 꼔 꼕 꼖 꼗 꼘 꼙 꼚 꼛 꼜 꼝 꼞 꼟 꼠 꼡 꼢 꼣 꼤 꼥 꼦 꼧 꼨 꼩 꼪 꼫 꼬 꼭 꼮 꼯 꼰 꼱 꼲 꼳 꼴 꼵 꼶 꼷 꼸 꼹 꼺 꼻 꼼 꼽 꼾 꼿 꽀 꽁 꽂 꽃 꽄 꽅 꽆 꽇 꽈 꽉 꽊 꽋 꽌 꽍 꽎 꽏 꽐 꽑 꽒 꽓 꽔 꽕 꽖 꽗 꽘 꽙 꽚 꽛 꽜 꽝 꽞 꽟 꽠 꽡 꽢 꽣 꽤 꽥 꽦 꽧 꽨 꽩 꽪 꽫 꽬 꽭 꽮 꽯 꽰 꽱 꽲 꽳 꽴 꽵 꽶 꽷 꽸 꽹 꽺 꽻 꽼 꽽 꽾 꽿 꾀 꾁 꾂 꾃 꾄 꾅 꾆 꾇 꾈 꾉 꾊 꾋 꾌 꾍 꾎 꾏 꾐 꾑 꾒 꾓 꾔 꾕 꾖 꾗 꾘 꾙 꾚 꾛 꾜 꾝 꾞 꾟 꾠 꾡 꾢 꾣 꾤 꾥 꾦 꾧 꾨 꾩 꾪 꾫 꾬 꾭 꾮 꾯 꾰 꾱 꾲 꾳 꾴 꾵 꾶 꾷 꾸 꾹 꾺 꾻 꾼 꾽 꾾 꾿 꿀 꿁 꿂 꿃 꿄 꿅 꿆 꿇 꿈 꿉 꿊 꿋 꿌 꿍 꿎 꿏 꿐 꿑 꿒 꿓 꿔 꿕 꿖 꿗 꿘 꿙 꿚 꿛 꿜 꿝 꿞 꿟 꿠 꿡 꿢 꿣 꿤 꿥 꿦 꿧 꿨 꿩 꿪 꿫 꿬 꿭 꿮 꿯 꿰 꿱 꿲 꿳 꿴 꿵 꿶 꿷 꿸 꿹 꿺 꿻 꿼 꿽 꿾 꿿 뀀 뀁 뀂 뀃 뀄 뀅 뀆 뀇 뀈 뀉 뀊 뀋 뀌 뀍 뀎 뀏 뀐 뀑 뀒 뀓 뀔 뀕 뀖 뀗 뀘 뀙 뀚 뀛 뀜 뀝 뀞 뀟 뀠 뀡 뀢 뀣 뀤 뀥 뀦 뀧 뀨 뀩 뀪 뀫 뀬 뀭 뀮 뀯 뀰 뀱 뀲 뀳 뀴 뀵 뀶 뀷 뀸 뀹 뀺 뀻 뀼 뀽 뀾 뀿 끀 끁 끂 끃 끄 끅 끆 끇 끈 끉 끊 끋 끌 끍 끎 끏 끐 끑 끒 끓 끔 끕 끖 끗 끘 끙 끚 끛 끜 끝 끞 끟 끠 끡 끢 끣 끤 끥 끦 끧 끨 끩 끪 끫 끬 끭 끮 끯 끰 끱 끲 끳 끴 끵 끶 끷 끸 끹 끺 끻 끼 끽 끾 끿 낀 낁 낂 낃 낄 낅 낆 낇 낈 낉 낊 낋 낌 낍 낎 낏 낐 낑 낒 낓 낔 낕 낖 낗 나 낙 낚 낛 난 낝 낞 낟 날 낡 낢 낣 낤 낥 낦 낧 남 납 낪 낫 났 낭 낮 낯 낰 낱 낲 낳 내 낵 낶 낷 낸 낹 낺 낻 낼 낽 낾 낿 냀 냁 냂 냃 냄 냅 냆 냇 냈 냉 냊 냋 냌 냍 냎 냏 냐 냑 냒 냓 냔 냕 냖 냗 냘 냙 냚 냛 냜 냝 냞 냟 냠 냡 냢 냣 냤 냥 냦 냧 냨 냩 냪 냫 냬 냭 냮 냯 냰 냱 냲 냳 냴 냵 냶 냷 냸 냹 냺 냻 냼 냽 냾 냿 넀 넁 넂 넃 넄 넅 넆 넇 너 넉 넊 넋 넌 넍 넎 넏 널 넑 넒 넓 넔 넕 넖 넗 넘 넙 넚 넛 넜 넝 넞 넟 넠 넡 넢 넣 네 넥 넦 넧 넨 넩 넪 넫 넬 넭 넮 넯 넰 넱 넲 넳 넴 넵 넶 넷 넸 넹 넺 넻 넼 넽 넾 넿 녀 녁 녂 녃 년 녅 녆 녇 녈 녉 녊 녋 녌 녍 녎 녏 념 녑 녒 녓 녔 녕 녖 녗 녘 녙 녚 녛 녜 녝 녞 녟 녠 녡 녢 녣 녤 녥 녦 녧 녨 녩 녪 녫 녬 녭 녮 녯 녰 녱 녲 녳 녴 녵 녶 녷 노 녹 녺 녻 논 녽 녾 녿 놀 놁 놂 놃 놄 놅 놆 놇 놈 놉 놊 놋 놌 농 놎 놏 놐 놑 높 놓 놔 놕 놖 놗 놘 놙 놚 놛 놜 놝 놞 놟 놠 놡 놢 놣 놤 놥 놦 놧 놨 놩 놪 놫 놬 놭 놮 놯 놰 놱 놲 놳 놴 놵 놶 놷 놸 놹 놺 놻 놼 놽 놾 놿 뇀 뇁 뇂 뇃 뇄 뇅 뇆 뇇 뇈 뇉 뇊 뇋 뇌 뇍 뇎 뇏 뇐 뇑 뇒 뇓 뇔 뇕 뇖 뇗 뇘 뇙 뇚 뇛 뇜 뇝 뇞 뇟 뇠 뇡 뇢 뇣 뇤 뇥 뇦 뇧 뇨 뇩 뇪 뇫 뇬 뇭 뇮 뇯 뇰 뇱 뇲 뇳 뇴 뇵 뇶 뇷 뇸 뇹 뇺 뇻 뇼 뇽 뇾 뇿 눀 눁 눂 눃 누 눅 눆 눇 눈 눉 눊 눋 눌 눍 눎 눏 눐 눑 눒 눓 눔 눕 눖 눗 눘 눙 눚 눛 눜 눝 눞 눟 눠 눡 눢 눣 눤 눥 눦 눧 눨 눩 눪 눫 눬 눭 눮 눯 눰 눱 눲 눳 눴 눵 눶 눷 눸 눹 눺 눻 눼 눽 눾 눿 뉀 뉁 뉂 뉃 뉄 뉅 뉆 뉇 뉈 뉉 뉊 뉋 뉌 뉍 뉎 뉏 뉐 뉑 뉒 뉓 뉔 뉕 뉖 뉗 뉘 뉙 뉚 뉛 뉜 뉝 뉞 뉟 뉠 뉡 뉢 뉣 뉤 뉥 뉦 뉧 뉨 뉩 뉪 뉫 뉬 뉭 뉮 뉯 뉰 뉱 뉲 뉳 뉴 뉵 뉶 뉷 뉸 뉹 뉺 뉻 뉼 뉽 뉾 뉿 늀 늁 늂 늃 늄 늅 늆 늇 늈 늉 늊 늋 늌 늍 늎 늏 느 늑 늒 늓 는 늕 늖 늗 늘 늙 늚 늛 늜 늝 늞 늟 늠 늡 늢 늣 늤 능 늦 늧 늨 늩 늪 늫 늬 늭 늮 늯 늰 늱 늲 늳 늴 늵 늶 늷 늸 늹 늺 늻 늼 늽 늾 늿 닀 닁 닂 닃 닄 닅 닆 닇 니 닉 닊 닋 닌 닍 닎 닏 닐 닑 닒 닓 닔 닕 닖 닗 님 닙 닚 닛 닜 닝 닞 닟 닠 닡 닢 닣 다 닥 닦 닧 단 닩 닪 닫 달 닭 닮 닯 닰 닱 닲 닳 담 답 닶 닷 닸 당 닺 닻 닼 닽 닾 닿 대 댁 댂 댃 댄 댅 댆 댇 댈 댉 댊 댋 댌 댍 댎 댏 댐 댑 댒 댓 댔 댕 댖 댗 댘 댙 댚 댛 댜 댝 댞 댟 댠 댡 댢 댣 댤 댥 댦 댧 댨 댩 댪 댫 댬 댭 댮 댯 댰 댱 댲 댳 댴 댵 댶 댷 댸 댹 댺 댻 댼 댽 댾 댿 덀 덁 덂 덃 덄 덅 덆 덇 덈 덉 덊 덋 덌 덍 덎 덏 덐 덑 덒 덓 더 덕 덖 덗 던 덙 덚 덛 덜 덝 덞 덟 덠 덡 덢 덣 덤 덥 덦 덧 덨 덩 덪 덫 덬 덭 덮 덯 데 덱 덲 덳 덴 덵 덶 덷 델 덹 덺 덻 덼 덽 덾 덿 뎀 뎁 뎂 뎃 뎄 뎅 뎆 뎇 뎈 뎉 뎊 뎋 뎌 뎍 뎎 뎏 뎐 뎑 뎒 뎓 뎔 뎕 뎖 뎗 뎘 뎙 뎚 뎛 뎜 뎝 뎞 뎟 뎠 뎡 뎢 뎣 뎤 뎥 뎦 뎧 뎨 뎩 뎪 뎫 뎬 뎭 뎮 뎯 뎰 뎱 뎲 뎳 뎴 뎵 뎶 뎷 뎸 뎹 뎺 뎻 뎼 뎽 뎾 뎿 돀 돁 돂 돃 도 독 돆 돇 돈 돉 돊 돋 돌 돍 돎 돏 돐 돑 돒 돓 돔 돕 돖 돗 돘 동 돚 돛 돜 돝 돞 돟 돠 돡 돢 돣 돤 돥 돦 돧 돨 돩 돪 돫 돬 돭 돮 돯 돰 돱 돲 돳 돴 돵 돶 돷 돸 돹 돺 돻 돼 돽 돾 돿 됀 됁 됂 됃 됄 됅 됆 됇 됈 됉 됊 됋 됌 됍 됎 됏 됐 됑 됒 됓 됔 됕 됖 됗 되 됙 됚 됛 된 됝 됞 됟 될 됡 됢 됣 됤 됥 됦 됧 됨 됩 됪 됫 됬 됭 됮 됯 됰 됱 됲 됳 됴 됵 됶 됷 됸 됹 됺 됻 됼 됽 됾 됿 둀 둁 둂 둃 둄 둅 둆 둇 둈 둉 둊 둋 둌 둍 둎 둏 두 둑 둒 둓 둔 둕 둖 둗 둘 둙 둚 둛 둜 둝 둞 둟 둠 둡 둢 둣 둤 둥 둦 둧 둨 둩 둪 둫 둬 둭 둮 둯 둰 둱 둲 둳 둴 둵 둶 둷 둸 둹 둺 둻 둼 둽 둾 둿 뒀 뒁 뒂 뒃 뒄 뒅 뒆 뒇 뒈 뒉 뒊 뒋 뒌 뒍 뒎 뒏 뒐 뒑 뒒 뒓 뒔 뒕 뒖 뒗 뒘 뒙 뒚 뒛 뒜 뒝 뒞 뒟 뒠 뒡 뒢 뒣 뒤 뒥 뒦 뒧 뒨 뒩 뒪 뒫 뒬 뒭 뒮 뒯 뒰 뒱 뒲 뒳 뒴 뒵 뒶 뒷 뒸 뒹 뒺 뒻 뒼 뒽 뒾 뒿 듀 듁 듂 듃 듄 듅 듆 듇 듈 듉 듊 듋 듌 듍 듎 듏 듐 듑 듒 듓 듔 듕 듖 듗 듘 듙 듚 듛 드 득 듞 듟 든 듡 듢 듣 들 듥 듦 듧 듨 듩 듪 듫 듬 듭 듮 듯 듰 등 듲 듳 듴 듵 듶 듷 듸 듹 듺 듻 듼 듽 듾 듿 딀 딁 딂 딃 딄 딅 딆 딇 딈 딉 딊 딋 딌 딍 딎 딏 딐 딑 딒 딓 디 딕 딖 딗 딘 딙 딚 딛 딜 딝 딞 딟 딠 딡 딢 딣 딤 딥 딦 딧 딨 딩 딪 딫 딬 딭 딮 딯 따 딱 딲 딳 딴 딵 딶 딷 딸 딹 딺 딻 딼 딽 딾 딿 땀 땁 땂 땃 땄 땅 땆 땇 땈 땉 땊 땋 때 땍 땎 땏 땐 땑 땒 땓 땔 땕 땖 땗 땘 땙 땚 땛 땜 땝 땞 땟 땠 땡 땢 땣 땤 땥 땦 땧 땨 땩 땪 땫 땬 땭 땮 땯 땰 땱 땲 땳 땴 땵 땶 땷 땸 땹 땺 땻 땼 땽 땾 땿 떀 떁 떂 떃 떄 떅 떆 떇 떈 떉 떊 떋 떌 떍 떎 떏 떐 떑 떒 떓 떔 떕 떖 떗 떘 떙 떚 떛 떜 떝 떞 떟 떠 떡 떢 떣 떤 떥 떦 떧 떨 떩 떪 떫 떬 떭 떮 떯 떰 떱 떲 떳 떴 떵 떶 떷 떸 떹 떺 떻 떼 떽 떾 떿 뗀 뗁 뗂 뗃 뗄 뗅 뗆 뗇 뗈 뗉 뗊 뗋 뗌 뗍 뗎 뗏 뗐 뗑 뗒 뗓 뗔 뗕 뗖 뗗 뗘 뗙 뗚 뗛 뗜 뗝 뗞 뗟 뗠 뗡 뗢 뗣 뗤 뗥 뗦 뗧 뗨 뗩 뗪 뗫 뗬 뗭 뗮 뗯 뗰 뗱 뗲 뗳 뗴 뗵 뗶 뗷 뗸 뗹 뗺 뗻 뗼 뗽 뗾 뗿 똀 똁 똂 똃 똄 똅 똆 똇 똈 똉 똊 똋 똌 똍 똎 똏 또 똑 똒 똓 똔 똕 똖 똗 똘 똙 똚 똛 똜 똝 똞 똟 똠 똡 똢 똣 똤 똥 똦 똧 똨 똩 똪 똫 똬 똭 똮 똯 똰 똱 똲 똳 똴 똵 똶 똷 똸 똹 똺 똻 똼 똽 똾 똿 뙀 뙁 뙂 뙃 뙄 뙅 뙆 뙇 뙈 뙉 뙊 뙋 뙌 뙍 뙎 뙏 뙐 뙑 뙒 뙓 뙔 뙕 뙖 뙗 뙘 뙙 뙚 뙛 뙜 뙝 뙞 뙟 뙠 뙡 뙢 뙣 뙤 뙥 뙦 뙧 뙨 뙩 뙪 뙫 뙬 뙭 뙮 뙯 뙰 뙱 뙲 뙳 뙴 뙵 뙶 뙷 뙸 뙹 뙺 뙻 뙼 뙽 뙾 뙿 뚀 뚁 뚂 뚃 뚄 뚅 뚆 뚇 뚈 뚉 뚊 뚋 뚌 뚍 뚎 뚏 뚐 뚑 뚒 뚓 뚔 뚕 뚖 뚗 뚘 뚙 뚚 뚛 뚜 뚝 뚞 뚟 뚠 뚡 뚢 뚣 뚤 뚥 뚦 뚧 뚨 뚩 뚪 뚫 뚬 뚭 뚮 뚯 뚰 뚱 뚲 뚳 뚴 뚵 뚶 뚷 뚸 뚹 뚺 뚻 뚼 뚽 뚾 뚿 뛀 뛁 뛂 뛃 뛄 뛅 뛆 뛇 뛈 뛉 뛊 뛋 뛌 뛍 뛎 뛏 뛐 뛑 뛒 뛓 뛔 뛕 뛖 뛗 뛘 뛙 뛚 뛛 뛜 뛝 뛞 뛟 뛠 뛡 뛢 뛣 뛤 뛥 뛦 뛧 뛨 뛩 뛪 뛫 뛬 뛭 뛮 뛯 뛰 뛱 뛲 뛳 뛴 뛵 뛶 뛷 뛸 뛹 뛺 뛻 뛼 뛽 뛾 뛿 뜀 뜁 뜂 뜃 뜄 뜅 뜆 뜇 뜈 뜉 뜊 뜋 뜌 뜍 뜎 뜏 뜐 뜑 뜒 뜓 뜔 뜕 뜖 뜗 뜘 뜙 뜚 뜛 뜜 뜝 뜞 뜟 뜠 뜡 뜢 뜣 뜤 뜥 뜦 뜧 뜨 뜩 뜪 뜫 뜬 뜭 뜮 뜯 뜰 뜱 뜲 뜳 뜴 뜵 뜶 뜷 뜸 뜹 뜺 뜻 뜼 뜽 뜾 뜿 띀 띁 띂 띃 띄 띅 띆 띇 띈 띉 띊 띋 띌 띍 띎 띏 띐 띑 띒 띓 띔 띕 띖 띗 띘 띙 띚 띛 띜 띝 띞 띟 띠 띡 띢 띣 띤 띥 띦 띧 띨 띩 띪 띫 띬 띭 띮 띯 띰 띱 띲 띳 띴 띵 띶 띷 띸 띹 띺 띻 라 락 띾 띿 란 랁 랂 랃 랄 랅 랆 랇 랈 랉 랊 랋 람 랍 랎 랏 랐 랑 랒 랓 랔 랕 랖 랗 래 랙 랚 랛 랜 랝 랞 랟 랠 랡 랢 랣 랤 랥 랦 랧 램 랩 랪 랫 랬 랭 랮 랯 랰 랱 랲 랳 랴 략 랶 랷 랸 랹 랺 랻 랼 랽 랾 랿 럀 럁 럂 럃 럄 럅 럆 럇 럈 량 럊 럋 럌 럍 럎 럏 럐 럑 럒 럓 럔 럕 럖 럗 럘 럙 럚 럛 럜 럝 럞 럟 럠 럡 럢 럣 럤 럥 럦 럧 럨 럩 럪 럫 러 럭 럮 럯 런 럱 럲 럳 럴 럵 럶 럷 럸 럹 럺 럻 럼 럽 럾 럿 렀 렁 렂 렃 렄 렅 렆 렇 레 렉 렊 렋 렌 렍 렎 렏 렐 렑 렒 렓 렔 렕 렖 렗 렘 렙 렚 렛 렜 렝 렞 렟 렠 렡 렢 렣 려 력 렦 렧 련 렩 렪 렫 렬 렭 렮 렯 렰 렱 렲 렳 렴 렵 렶 렷 렸 령 렺 렻 렼 렽 렾 렿 례 롁 롂 롃 롄 롅 롆 롇 롈 롉 롊 롋 롌 롍 롎 롏 롐 롑 롒 롓 롔 롕 롖 롗 롘 롙 롚 롛 로 록 롞 롟 론 롡 롢 롣 롤 롥 롦 롧 롨 롩 롪 롫 롬 롭 롮 롯 롰 롱 롲 롳 롴 롵 롶 롷 롸 롹 롺 롻 롼 롽 롾 롿 뢀 뢁 뢂 뢃 뢄 뢅 뢆 뢇 뢈 뢉 뢊 뢋 뢌 뢍 뢎 뢏 뢐 뢑 뢒 뢓 뢔 뢕 뢖 뢗 뢘 뢙 뢚 뢛 뢜 뢝 뢞 뢟 뢠 뢡 뢢 뢣 뢤 뢥 뢦 뢧 뢨 뢩 뢪 뢫 뢬 뢭 뢮 뢯 뢰 뢱 뢲 뢳 뢴 뢵 뢶 뢷 뢸 뢹 뢺 뢻 뢼 뢽 뢾 뢿 룀 룁 룂 룃 룄 룅 룆 룇 룈 룉 룊 룋 료 룍 룎 룏 룐 룑 룒 룓 룔 룕 룖 룗 룘 룙 룚 룛 룜 룝 룞 룟 룠 룡 룢 룣 룤 룥 룦 룧 루 룩 룪 룫 룬 룭 룮 룯 룰 룱 룲 룳 룴 룵 룶 룷 룸 룹 룺 룻 룼 룽 룾 룿 뤀 뤁 뤂 뤃 뤄 뤅 뤆 뤇 뤈 뤉 뤊 뤋 뤌 뤍 뤎 뤏 뤐 뤑 뤒 뤓 뤔 뤕 뤖 뤗 뤘 뤙 뤚 뤛 뤜 뤝 뤞 뤟 뤠 뤡 뤢 뤣 뤤 뤥 뤦 뤧 뤨 뤩 뤪 뤫 뤬 뤭 뤮 뤯 뤰 뤱 뤲 뤳 뤴 뤵 뤶 뤷 뤸 뤹 뤺 뤻 뤼 뤽 뤾 뤿 륀 륁 륂 륃 륄 륅 륆 륇 륈 륉 륊 륋 륌 륍 륎 륏 륐 륑 륒 륓 륔 륕 륖 륗 류 륙 륚 륛 륜 륝 륞 륟 률 륡 륢 륣 륤 륥 륦 륧 륨 륩 륪 륫 륬 륭 륮 륯 륰 륱 륲 륳 르 륵 륶 륷 른 륹 륺 륻 를 륽 륾 륿 릀 릁 릂 릃 름 릅 릆 릇 릈 릉 릊 릋 릌 릍 릎 릏 릐 릑 릒 릓 릔 릕 릖 릗 릘 릙 릚 릛 릜 릝 릞 릟 릠 릡 릢 릣 릤 릥 릦 릧 릨 릩 릪 릫 리 릭 릮 릯 린 릱 릲 릳 릴 릵 릶 릷 릸 릹 릺 릻 림 립 릾 릿 맀 링 맂 맃 맄 맅 맆 맇 마 막 맊 맋 만 맍 많 맏 말 맑 맒 맓 맔 맕 맖 맗 맘 맙 맚 맛 맜 망 맞 맟 맠 맡 맢 맣 매 맥 맦 맧 맨 맩 맪 맫 맬 맭 맮 맯 맰 맱 맲 맳 맴 맵 맶 맷 맸 맹 맺 맻 맼 맽 맾 맿 먀 먁 먂 먃 먄 먅 먆 먇 먈 먉 먊 먋 먌 먍 먎 먏 먐 먑 먒 먓 먔 먕 먖 먗 먘 먙 먚 먛 먜 먝 먞 먟 먠 먡 먢 먣 먤 먥 먦 먧 먨 먩 먪 먫 먬 먭 먮 먯 먰 먱 먲 먳 먴 먵 먶 먷 머 먹 먺 먻 먼 먽 먾 먿 멀 멁 멂 멃 멄 멅 멆 멇 멈 멉 멊 멋 멌 멍 멎 멏 멐 멑 멒 멓 메 멕 멖 멗 멘 멙 멚 멛 멜 멝 멞 멟 멠 멡 멢 멣 멤 멥 멦 멧 멨 멩 멪 멫 멬 멭 멮 멯 며 멱 멲 멳 면 멵 멶 멷 멸 멹 멺 멻 멼 멽 멾 멿 몀 몁 몂 몃 몄 명 몆 몇 몈 몉 몊 몋 몌 몍 몎 몏 몐 몑 몒 몓 몔 몕 몖 몗 몘 몙 몚 몛 몜 몝 몞 몟 몠 몡 몢 몣 몤 몥 몦 몧 모 목 몪 몫 몬 몭 몮 몯 몰 몱 몲 몳 몴 몵 몶 몷 몸 몹 몺 못 몼 몽 몾 몿 뫀 뫁 뫂 뫃 뫄 뫅 뫆 뫇 뫈 뫉 뫊 뫋 뫌 뫍 뫎 뫏 뫐 뫑 뫒 뫓 뫔 뫕 뫖 뫗 뫘 뫙 뫚 뫛 뫜 뫝 뫞 뫟 뫠 뫡 뫢 뫣 뫤 뫥 뫦 뫧 뫨 뫩 뫪 뫫 뫬 뫭 뫮 뫯 뫰 뫱 뫲 뫳 뫴 뫵 뫶 뫷 뫸 뫹 뫺 뫻 뫼 뫽 뫾 뫿 묀 묁 묂 묃 묄 묅 묆 묇 묈 묉 묊 묋 묌 묍 묎 묏 묐 묑 묒 묓 묔 묕 묖 묗 묘 묙 묚 묛 묜 묝 묞 묟 묠 묡 묢 묣 묤 묥 묦 묧 묨 묩 묪 묫 묬 묭 묮 묯 묰 묱 묲 묳 무 묵 묶 묷 문 묹 묺 묻 물 묽 묾 묿 뭀 뭁 뭂 뭃 뭄 뭅 뭆 뭇 뭈 뭉 뭊 뭋 뭌 뭍 뭎 뭏 뭐 뭑 뭒 뭓 뭔 뭕 뭖 뭗 뭘 뭙 뭚 뭛 뭜 뭝 뭞 뭟 뭠 뭡 뭢 뭣 뭤 뭥 뭦 뭧 뭨 뭩 뭪 뭫 뭬 뭭 뭮 뭯 뭰 뭱 뭲 뭳 뭴 뭵 뭶 뭷 뭸 뭹 뭺 뭻 뭼 뭽 뭾 뭿 뮀 뮁 뮂 뮃 뮄 뮅 뮆 뮇 뮈 뮉 뮊 뮋 뮌 뮍 뮎 뮏 뮐 뮑 뮒 뮓 뮔 뮕 뮖 뮗 뮘 뮙 뮚 뮛 뮜 뮝 뮞 뮟 뮠 뮡 뮢 뮣 뮤 뮥 뮦 뮧 뮨 뮩 뮪 뮫 뮬 뮭 뮮 뮯 뮰 뮱 뮲 뮳 뮴 뮵 뮶 뮷 뮸 뮹 뮺 뮻 뮼 뮽 뮾 뮿 므 믁 믂 믃 믄 믅 믆 믇 믈 믉 믊 믋 믌 믍 믎 믏 믐 믑 믒 믓 믔 믕 믖 믗 믘 믙 믚 믛 믜 믝 믞 믟 믠 믡 믢 믣 믤 믥 믦 믧 믨 믩 믪 믫 믬 믭 믮 믯 믰 믱 믲 믳 믴 믵 믶 믷 미 믹 믺 믻 민 믽 믾 믿 밀 밁 밂 밃 밄 밅 밆 밇 밈 밉 밊 밋 밌 밍 밎 및 밐 밑 밒 밓 바 박 밖 밗 반 밙 밚 받 발 밝 밞 밟 밠 밡 밢 밣 밤 밥 밦 밧 밨 방 밪 밫 밬 밭 밮 밯 배 백 밲 밳 밴 밵 밶 밷 밸 밹 밺 밻 밼 밽 밾 밿 뱀 뱁 뱂 뱃 뱄 뱅 뱆 뱇 뱈 뱉 뱊 뱋 뱌 뱍 뱎 뱏 뱐 뱑 뱒 뱓 뱔 뱕 뱖 뱗 뱘 뱙 뱚 뱛 뱜 뱝 뱞 뱟 뱠 뱡 뱢 뱣 뱤 뱥 뱦 뱧 뱨 뱩 뱪 뱫 뱬 뱭 뱮 뱯 뱰 뱱 뱲 뱳 뱴 뱵 뱶 뱷 뱸 뱹 뱺 뱻 뱼 뱽 뱾 뱿 벀 벁 벂 벃 버 벅 벆 벇 번 벉 벊 벋 벌 벍 벎 벏 벐 벑 벒 벓 범 법 벖 벗 벘 벙 벚 벛 벜 벝 벞 벟 베 벡 벢 벣 벤 벥 벦 벧 벨 벩 벪 벫 벬 벭 벮 벯 벰 벱 벲 벳 벴 벵 벶 벷 벸 벹 벺 벻 벼 벽 벾 벿 변 볁 볂 볃 별 볅 볆 볇 볈 볉 볊 볋 볌 볍 볎 볏 볐 병 볒 볓 볔 볕 볖 볗 볘 볙 볚 볛 볜 볝 볞 볟 볠 볡 볢 볣 볤 볥 볦 볧 볨 볩 볪 볫 볬 볭 볮 볯 볰 볱 볲 볳 보 복 볶 볷 본 볹 볺 볻 볼 볽 볾 볿 봀 봁 봂 봃 봄 봅 봆 봇 봈 봉 봊 봋 봌 봍 봎 봏 봐 봑 봒 봓 봔 봕 봖 봗 봘 봙 봚 봛 봜 봝 봞 봟 봠 봡 봢 봣 봤 봥 봦 봧 봨 봩 봪 봫 봬 봭 봮 봯 봰 봱 봲 봳 봴 봵 봶 봷 봸 봹 봺 봻 봼 봽 봾 봿 뵀 뵁 뵂 뵃 뵄 뵅 뵆 뵇 뵈 뵉 뵊 뵋 뵌 뵍 뵎 뵏 뵐 뵑 뵒 뵓 뵔 뵕 뵖 뵗 뵘 뵙 뵚 뵛 뵜 뵝 뵞 뵟 뵠 뵡 뵢 뵣 뵤 뵥 뵦 뵧 뵨 뵩 뵪 뵫 뵬 뵭 뵮 뵯 뵰 뵱 뵲 뵳 뵴 뵵 뵶 뵷 뵸 뵹 뵺 뵻 뵼 뵽 뵾 뵿 부 북 붂 붃 분 붅 붆 붇 불 붉 붊 붋 붌 붍 붎 붏 붐 붑 붒 붓 붔 붕 붖 붗 붘 붙 붚 붛 붜 붝 붞 붟 붠 붡 붢 붣 붤 붥 붦 붧 붨 붩 붪 붫 붬 붭 붮 붯 붰 붱 붲 붳 붴 붵 붶 붷 붸 붹 붺 붻 붼 붽 붾 붿 뷀 뷁 뷂 뷃 뷄 뷅 뷆 뷇 뷈 뷉 뷊 뷋 뷌 뷍 뷎 뷏 뷐 뷑 뷒 뷓 뷔 뷕 뷖 뷗 뷘 뷙 뷚 뷛 뷜 뷝 뷞 뷟 뷠 뷡 뷢 뷣 뷤 뷥 뷦 뷧 뷨 뷩 뷪 뷫 뷬 뷭 뷮 뷯 뷰 뷱 뷲 뷳 뷴 뷵 뷶 뷷 뷸 뷹 뷺 뷻 뷼 뷽 뷾 뷿 븀 븁 븂 븃 븄 븅 븆 븇 븈 븉 븊 븋 브 븍 븎 븏 븐 븑 븒 븓 블 븕 븖 븗 븘 븙 븚 븛 븜 븝 븞 븟 븠 븡 븢 븣 븤 븥 븦 븧 븨 븩 븪 븫 븬 븭 븮 븯 븰 븱 븲 븳 븴 븵 븶 븷 븸 븹 븺 븻 븼 븽 븾 븿 빀 빁 빂 빃 비 빅 빆 빇 빈 빉 빊 빋 빌 빍 빎 빏 빐 빑 빒 빓 빔 빕 빖 빗 빘 빙 빚 빛 빜 빝 빞 빟 빠 빡 빢 빣 빤 빥 빦 빧 빨 빩 빪 빫 빬 빭 빮 빯 빰 빱 빲 빳 빴 빵 빶 빷 빸 빹 빺 빻 빼 빽 빾 빿 뺀 뺁 뺂 뺃 뺄 뺅 뺆 뺇 뺈 뺉 뺊 뺋 뺌 뺍 뺎 뺏 뺐 뺑 뺒 뺓 뺔 뺕 뺖 뺗 뺘 뺙 뺚 뺛 뺜 뺝 뺞 뺟 뺠 뺡 뺢 뺣 뺤 뺥 뺦 뺧 뺨 뺩 뺪 뺫 뺬 뺭 뺮 뺯 뺰 뺱 뺲 뺳 뺴 뺵 뺶 뺷 뺸 뺹 뺺 뺻 뺼 뺽 뺾 뺿 뻀 뻁 뻂 뻃 뻄 뻅 뻆 뻇 뻈 뻉 뻊 뻋 뻌 뻍 뻎 뻏 뻐 뻑 뻒 뻓 뻔 뻕 뻖 뻗 뻘 뻙 뻚 뻛 뻜 뻝 뻞 뻟 뻠 뻡 뻢 뻣 뻤 뻥 뻦 뻧 뻨 뻩 뻪 뻫 뻬 뻭 뻮 뻯 뻰 뻱 뻲 뻳 뻴 뻵 뻶 뻷 뻸 뻹 뻺 뻻 뻼 뻽 뻾 뻿 뼀 뼁 뼂 뼃 뼄 뼅 뼆 뼇 뼈 뼉 뼊 뼋 뼌 뼍 뼎 뼏 뼐 뼑 뼒 뼓 뼔 뼕 뼖 뼗 뼘 뼙 뼚 뼛 뼜 뼝 뼞 뼟 뼠 뼡 뼢 뼣 뼤 뼥 뼦 뼧 뼨 뼩 뼪 뼫 뼬 뼭 뼮 뼯 뼰 뼱 뼲 뼳 뼴 뼵 뼶 뼷 뼸 뼹 뼺 뼻 뼼 뼽 뼾 뼿 뽀 뽁 뽂 뽃 뽄 뽅 뽆 뽇 뽈 뽉 뽊 뽋 뽌 뽍 뽎 뽏 뽐 뽑 뽒 뽓 뽔 뽕 뽖 뽗 뽘 뽙 뽚 뽛 뽜 뽝 뽞 뽟 뽠 뽡 뽢 뽣 뽤 뽥 뽦 뽧 뽨 뽩 뽪 뽫 뽬 뽭 뽮 뽯 뽰 뽱 뽲 뽳 뽴 뽵 뽶 뽷 뽸 뽹 뽺 뽻 뽼 뽽 뽾 뽿 뾀 뾁 뾂 뾃 뾄 뾅 뾆 뾇 뾈 뾉 뾊 뾋 뾌 뾍 뾎 뾏 뾐 뾑 뾒 뾓 뾔 뾕 뾖 뾗 뾘 뾙 뾚 뾛 뾜 뾝 뾞 뾟 뾠 뾡 뾢 뾣 뾤 뾥 뾦 뾧 뾨 뾩 뾪 뾫 뾬 뾭 뾮 뾯 뾰 뾱 뾲 뾳 뾴 뾵 뾶 뾷 뾸 뾹 뾺 뾻 뾼 뾽 뾾 뾿 뿀 뿁 뿂 뿃 뿄 뿅 뿆 뿇 뿈 뿉 뿊 뿋 뿌 뿍 뿎 뿏 뿐 뿑 뿒 뿓 뿔 뿕 뿖 뿗 뿘 뿙 뿚 뿛 뿜 뿝 뿞 뿟 뿠 뿡 뿢 뿣 뿤 뿥 뿦 뿧 뿨 뿩 뿪 뿫 뿬 뿭 뿮 뿯 뿰 뿱 뿲 뿳 뿴 뿵 뿶 뿷 뿸 뿹 뿺 뿻 뿼 뿽 뿾 뿿 쀀 쀁 쀂 쀃 쀄 쀅 쀆 쀇 쀈 쀉 쀊 쀋 쀌 쀍 쀎 쀏 쀐 쀑 쀒 쀓 쀔 쀕 쀖 쀗 쀘 쀙 쀚 쀛 쀜 쀝 쀞 쀟 쀠 쀡 쀢 쀣 쀤 쀥 쀦 쀧 쀨 쀩 쀪 쀫 쀬 쀭 쀮 쀯 쀰 쀱 쀲 쀳 쀴 쀵 쀶 쀷 쀸 쀹 쀺 쀻 쀼 쀽 쀾 쀿 쁀 쁁 쁂 쁃 쁄 쁅 쁆 쁇 쁈 쁉 쁊 쁋 쁌 쁍 쁎 쁏 쁐 쁑 쁒 쁓 쁔 쁕 쁖 쁗 쁘 쁙 쁚 쁛 쁜 쁝 쁞 쁟 쁠 쁡 쁢 쁣 쁤 쁥 쁦 쁧 쁨 쁩 쁪 쁫 쁬 쁭 쁮 쁯 쁰 쁱 쁲 쁳 쁴 쁵 쁶 쁷 쁸 쁹 쁺 쁻 쁼 쁽 쁾 쁿 삀 삁 삂 삃 삄 삅 삆 삇 삈 삉 삊 삋 삌 삍 삎 삏 삐 삑 삒 삓 삔 삕 삖 삗 삘 삙 삚 삛 삜 삝 삞 삟 삠 삡 삢 삣 삤 삥 삦 삧 삨 삩 삪 삫 사 삭 삮 삯 산 삱 삲 삳 살 삵 삶 삷 삸 삹 삺 삻 삼 삽 삾 삿 샀 상 샂 샃 샄 샅 샆 샇 새 색 샊 샋 샌 샍 샎 샏 샐 샑 샒 샓 샔 샕 샖 샗 샘 샙 샚 샛 샜 생 샞 샟 샠 샡 샢 샣 샤 샥 샦 샧 샨 샩 샪 샫 샬 샭 샮 샯 샰 샱 샲 샳 샴 샵 샶 샷 샸 샹 샺 샻 샼 샽 샾 샿 섀 섁 섂 섃 섄 섅 섆 섇 섈 섉 섊 섋 섌 섍 섎 섏 섐 섑 섒 섓 섔 섕 섖 섗 섘 섙 섚 섛 서 석 섞 섟 선 섡 섢 섣 설 섥 섦 섧 섨 섩 섪 섫 섬 섭 섮 섯 섰 성 섲 섳 섴 섵 섶 섷 세 섹 섺 섻 센 섽 섾 섿 셀 셁 셂 셃 셄 셅 셆 셇 셈 셉 셊 셋 셌 셍 셎 셏 셐 셑 셒 셓 셔 셕 셖 셗 션 셙 셚 셛 셜 셝 셞 셟 셠 셡 셢 셣 셤 셥 셦 셧 셨 셩 셪 셫 셬 셭 셮 셯 셰 셱 셲 셳 셴 셵 셶 셷 셸 셹 셺 셻 셼 셽 셾 셿 솀 솁 솂 솃 솄 솅 솆 솇 솈 솉 솊 솋 소 속 솎 솏 손 솑 솒 솓 솔 솕 솖 솗 솘 솙 솚 솛 솜 솝 솞 솟 솠 송 솢 솣 솤 솥 솦 솧 솨 솩 솪 솫 솬 솭 솮 솯 솰 솱 솲 솳 솴 솵 솶 솷 솸 솹 솺 솻 솼 솽 솾 솿 쇀 쇁 쇂 쇃 쇄 쇅 쇆 쇇 쇈 쇉 쇊 쇋 쇌 쇍 쇎 쇏 쇐 쇑 쇒 쇓 쇔 쇕 쇖 쇗 쇘 쇙 쇚 쇛 쇜 쇝 쇞 쇟 쇠 쇡 쇢 쇣 쇤 쇥 쇦 쇧 쇨 쇩 쇪 쇫 쇬 쇭 쇮 쇯 쇰 쇱 쇲 쇳 쇴 쇵 쇶 쇷 쇸 쇹 쇺 쇻 쇼 쇽 쇾 쇿 숀 숁 숂 숃 숄 숅 숆 숇 숈 숉 숊 숋 숌 숍 숎 숏 숐 숑 숒 숓 숔 숕 숖 숗 수 숙 숚 숛 순 숝 숞 숟 술 숡 숢 숣 숤 숥 숦 숧 숨 숩 숪 숫 숬 숭 숮 숯 숰 숱 숲 숳 숴 숵 숶 숷 숸 숹 숺 숻 숼 숽 숾 숿 쉀 쉁 쉂 쉃 쉄 쉅 쉆 쉇 쉈 쉉 쉊 쉋 쉌 쉍 쉎 쉏 쉐 쉑 쉒 쉓 쉔 쉕 쉖 쉗 쉘 쉙 쉚 쉛 쉜 쉝 쉞 쉟 쉠 쉡 쉢 쉣 쉤 쉥 쉦 쉧 쉨 쉩 쉪 쉫 쉬 쉭 쉮 쉯 쉰 쉱 쉲 쉳 쉴 쉵 쉶 쉷 쉸 쉹 쉺 쉻 쉼 쉽 쉾 쉿 슀 슁 슂 슃 슄 슅 슆 슇 슈 슉 슊 슋 슌 슍 슎 슏 슐 슑 슒 슓 슔 슕 슖 슗 슘 슙 슚 슛 슜 슝 슞 슟 슠 슡 슢 슣 스 슥 슦 슧 슨 슩 슪 슫 슬 슭 슮 슯 슰 슱 슲 슳 슴 습 슶 슷 슸 승 슺 슻 슼 슽 슾 슿 싀 싁 싂 싃 싄 싅 싆 싇 싈 싉 싊 싋 싌 싍 싎 싏 싐 싑 싒 싓 싔 싕 싖 싗 싘 싙 싚 싛 시 식 싞 싟 신 싡 싢 싣 실 싥 싦 싧 싨 싩 싪 싫 심 십 싮 싯 싰 싱 싲 싳 싴 싵 싶 싷 싸 싹 싺 싻 싼 싽 싾 싿 쌀 쌁 쌂 쌃 쌄 쌅 쌆 쌇 쌈 쌉 쌊 쌋 쌌 쌍 쌎 쌏 쌐 쌑 쌒 쌓 쌔 쌕 쌖 쌗 쌘 쌙 쌚 쌛 쌜 쌝 쌞 쌟 쌠 쌡 쌢 쌣 쌤 쌥 쌦 쌧 쌨 쌩 쌪 쌫 쌬 쌭 쌮 쌯 쌰 쌱 쌲 쌳 쌴 쌵 쌶 쌷 쌸 쌹 쌺 쌻 쌼 쌽 쌾 쌿 썀 썁 썂 썃 썄 썅 썆 썇 썈 썉 썊 썋 썌 썍 썎 썏 썐 썑 썒 썓 썔 썕 썖 썗 썘 썙 썚 썛 썜 썝 썞 썟 썠 썡 썢 썣 썤 썥 썦 썧 써 썩 썪 썫 썬 썭 썮 썯 썰 썱 썲 썳 썴 썵 썶 썷 썸 썹 썺 썻 썼 썽 썾 썿 쎀 쎁 쎂 쎃 쎄 쎅 쎆 쎇 쎈 쎉 쎊 쎋 쎌 쎍 쎎 쎏 쎐 쎑 쎒 쎓 쎔 쎕 쎖 쎗 쎘 쎙 쎚 쎛 쎜 쎝 쎞 쎟 쎠 쎡 쎢 쎣 쎤 쎥 쎦 쎧 쎨 쎩 쎪 쎫 쎬 쎭 쎮 쎯 쎰 쎱 쎲 쎳 쎴 쎵 쎶 쎷 쎸 쎹 쎺 쎻 쎼 쎽 쎾 쎿 쏀 쏁 쏂 쏃 쏄 쏅 쏆 쏇 쏈 쏉 쏊 쏋 쏌 쏍 쏎 쏏 쏐 쏑 쏒 쏓 쏔 쏕 쏖 쏗 쏘 쏙 쏚 쏛 쏜 쏝 쏞 쏟 쏠 쏡 쏢 쏣 쏤 쏥 쏦 쏧 쏨 쏩 쏪 쏫 쏬 쏭 쏮 쏯 쏰 쏱 쏲 쏳 쏴 쏵 쏶 쏷 쏸 쏹 쏺 쏻 쏼 쏽 쏾 쏿 쐀 쐁 쐂 쐃 쐄 쐅 쐆 쐇 쐈 쐉 쐊 쐋 쐌 쐍 쐎 쐏 쐐 쐑 쐒 쐓 쐔 쐕 쐖 쐗 쐘 쐙 쐚 쐛 쐜 쐝 쐞 쐟 쐠 쐡 쐢 쐣 쐤 쐥 쐦 쐧 쐨 쐩 쐪 쐫 쐬 쐭 쐮 쐯 쐰 쐱 쐲 쐳 쐴 쐵 쐶 쐷 쐸 쐹 쐺 쐻 쐼 쐽 쐾 쐿 쑀 쑁 쑂 쑃 쑄 쑅 쑆 쑇 쑈 쑉 쑊 쑋 쑌 쑍 쑎 쑏 쑐 쑑 쑒 쑓 쑔 쑕 쑖 쑗 쑘 쑙 쑚 쑛 쑜 쑝 쑞 쑟 쑠 쑡 쑢 쑣 쑤 쑥 쑦 쑧 쑨 쑩 쑪 쑫 쑬 쑭 쑮 쑯 쑰 쑱 쑲 쑳 쑴 쑵 쑶 쑷 쑸 쑹 쑺 쑻 쑼 쑽 쑾 쑿 쒀 쒁 쒂 쒃 쒄 쒅 쒆 쒇 쒈 쒉 쒊 쒋 쒌 쒍 쒎 쒏 쒐 쒑 쒒 쒓 쒔 쒕 쒖 쒗 쒘 쒙 쒚 쒛 쒜 쒝 쒞 쒟 쒠 쒡 쒢 쒣 쒤 쒥 쒦 쒧 쒨 쒩 쒪 쒫 쒬 쒭 쒮 쒯 쒰 쒱 쒲 쒳 쒴 쒵 쒶 쒷 쒸 쒹 쒺 쒻 쒼 쒽 쒾 쒿 쓀 쓁 쓂 쓃 쓄 쓅 쓆 쓇 쓈 쓉 쓊 쓋 쓌 쓍 쓎 쓏 쓐 쓑 쓒 쓓 쓔 쓕 쓖 쓗 쓘 쓙 쓚 쓛 쓜 쓝 쓞 쓟 쓠 쓡 쓢 쓣 쓤 쓥 쓦 쓧 쓨 쓩 쓪 쓫 쓬 쓭 쓮 쓯 쓰 쓱 쓲 쓳 쓴 쓵 쓶 쓷 쓸 쓹 쓺 쓻 쓼 쓽 쓾 쓿 씀 씁 씂 씃 씄 씅 씆 씇 씈 씉 씊 씋 씌 씍 씎 씏 씐 씑 씒 씓 씔 씕 씖 씗 씘 씙 씚 씛 씜 씝 씞 씟 씠 씡 씢 씣 씤 씥 씦 씧 씨 씩 씪 씫 씬 씭 씮 씯 씰 씱 씲 씳 씴 씵 씶 씷 씸 씹 씺 씻 씼 씽 씾 씿 앀 앁 앂 앃 아 악 앆 앇 안 앉 않 앋 알 앍 앎 앏 앐 앑 앒 앓 암 압 앖 앗 았 앙 앚 앛 앜 앝 앞 앟 애 액 앢 앣 앤 앥 앦 앧 앨 앩 앪 앫 앬 앭 앮 앯 앰 앱 앲 앳 앴 앵 앶 앷 앸 앹 앺 앻 야 약 앾 앿 얀 얁 얂 얃 얄 얅 얆 얇 얈 얉 얊 얋 얌 얍 얎 얏 얐 양 얒 얓 얔 얕 얖 얗 얘 얙 얚 얛 얜 얝 얞 얟 얠 얡 얢 얣 얤 얥 얦 얧 얨 얩 얪 얫 얬 얭 얮 얯 얰 얱 얲 얳 어 억 얶 얷 언 얹 얺 얻 얼 얽 얾 얿 엀 엁 엂 엃 엄 업 없 엇 었 엉 엊 엋 엌 엍 엎 엏 에 엑 엒 엓 엔 엕 엖 엗 엘 엙 엚 엛 엜 엝 엞 엟 엠 엡 엢 엣 엤 엥 엦 엧 엨 엩 엪 엫 여 역 엮 엯 연 엱 엲 엳 열 엵 엶 엷 엸 엹 엺 엻 염 엽 엾 엿 였 영 옂 옃 옄 옅 옆 옇 예 옉 옊 옋 옌 옍 옎 옏 옐 옑 옒 옓 옔 옕 옖 옗 옘 옙 옚 옛 옜 옝 옞 옟 옠 옡 옢 옣 오 옥 옦 옧 온 옩 옪 옫 올 옭 옮 옯 옰 옱 옲 옳 옴 옵 옶 옷 옸 옹 옺 옻 옼 옽 옾 옿 와 왁 왂 왃 완 왅 왆 왇 왈 왉 왊 왋 왌 왍 왎 왏 왐 왑 왒 왓 왔 왕 왖 왗 왘 왙 왚 왛 왜 왝 왞 왟 왠 왡 왢 왣 왤 왥 왦 왧 왨 왩 왪 왫 왬 왭 왮 왯 왰 왱 왲 왳 왴 왵 왶 왷 외 왹 왺 왻 왼 왽 왾 왿 욀 욁 욂 욃 욄 욅 욆 욇 욈 욉 욊 욋 욌 욍 욎 욏 욐 욑 욒 욓 요 욕 욖 욗 욘 욙 욚 욛 욜 욝 욞 욟 욠 욡 욢 욣 욤 욥 욦 욧 욨 용 욪 욫 욬 욭 욮 욯 우 욱 욲 욳 운 욵 욶 욷 울 욹 욺 욻 욼 욽 욾 욿 움 웁 웂 웃 웄 웅 웆 웇 웈 웉 웊 웋 워 웍 웎 웏 원 웑 웒 웓 월 웕 웖 웗 웘 웙 웚 웛 웜 웝 웞 웟 웠 웡 웢 웣 웤 웥 웦 웧 웨 웩 웪 웫 웬 웭 웮 웯 웰 웱 웲 웳 웴 웵 웶 웷 웸 웹 웺 웻 웼 웽 웾 웿 윀 윁 윂 윃 위 윅 윆 윇 윈 윉 윊 윋 윌 윍 윎 윏 윐 윑 윒 윓 윔 윕 윖 윗 윘 윙 윚 윛 윜 윝 윞 윟 유 육 윢 윣 윤 윥 윦 윧 율 윩 윪 윫 윬 윭 윮 윯 윰 윱 윲 윳 윴 융 윶 윷 윸 윹 윺 윻 으 윽 윾 윿 은 읁 읂 읃 을 읅 읆 읇 읈 읉 읊 읋 음 읍 읎 읏 읐 응 읒 읓 읔 읕 읖 읗 의 읙 읚 읛 읜 읝 읞 읟 읠 읡 읢 읣 읤 읥 읦 읧 읨 읩 읪 읫 읬 읭 읮 읯 읰 읱 읲 읳 이 익 읶 읷 인 읹 읺 읻 일 읽 읾 읿 잀 잁 잂 잃 임 입 잆 잇 있 잉 잊 잋 잌 잍 잎 잏 자 작 잒 잓 잔 잕 잖 잗 잘 잙 잚 잛 잜 잝 잞 잟 잠 잡 잢 잣 잤 장 잦 잧 잨 잩 잪 잫 재 잭 잮 잯 잰 잱 잲 잳 잴 잵 잶 잷 잸 잹 잺 잻 잼 잽 잾 잿 쟀 쟁 쟂 쟃 쟄 쟅 쟆 쟇 쟈 쟉 쟊 쟋 쟌 쟍 쟎 쟏 쟐 쟑 쟒 쟓 쟔 쟕 쟖 쟗 쟘 쟙 쟚 쟛 쟜 쟝 쟞 쟟 쟠 쟡 쟢 쟣 쟤 쟥 쟦 쟧 쟨 쟩 쟪 쟫 쟬 쟭 쟮 쟯 쟰 쟱 쟲 쟳 쟴 쟵 쟶 쟷 쟸 쟹 쟺 쟻 쟼 쟽 쟾 쟿 저 적 젂 젃 전 젅 젆 젇 절 젉 젊 젋 젌 젍 젎 젏 점 접 젒 젓 젔 정 젖 젗 젘 젙 젚 젛 제 젝 젞 젟 젠 젡 젢 젣 젤 젥 젦 젧 젨 젩 젪 젫 젬 젭 젮 젯 젰 젱 젲 젳 젴 젵 젶 젷 져 젹 젺 젻 젼 젽 젾 젿 졀 졁 졂 졃 졄 졅 졆 졇 졈 졉 졊 졋 졌 졍 졎 졏 졐 졑 졒 졓 졔 졕 졖 졗 졘 졙 졚 졛 졜 졝 졞 졟 졠 졡 졢 졣 졤 졥 졦 졧 졨 졩 졪 졫 졬 졭 졮 졯 조 족 졲 졳 존 졵 졶 졷 졸 졹 졺 졻 졼 졽 졾 졿 좀 좁 좂 좃 좄 종 좆 좇 좈 좉 좊 좋 좌 좍 좎 좏 좐 좑 좒 좓 좔 좕 좖 좗 좘 좙 좚 좛 좜 좝 좞 좟 좠 좡 좢 좣 좤 좥 좦 좧 좨 좩 좪 좫 좬 좭 좮 좯 좰 좱 좲 좳 좴 좵 좶 좷 좸 좹 좺 좻 좼 좽 좾 좿 죀 죁 죂 죃 죄 죅 죆 죇 죈 죉 죊 죋 죌 죍 죎 죏 죐 죑 죒 죓 죔 죕 죖 죗 죘 죙 죚 죛 죜 죝 죞 죟 죠 죡 죢 죣 죤 죥 죦 죧 죨 죩 죪 죫 죬 죭 죮 죯 죰 죱 죲 죳 죴 죵 죶 죷 죸 죹 죺 죻 주 죽 죾 죿 준 줁 줂 줃 줄 줅 줆 줇 줈 줉 줊 줋 줌 줍 줎 줏 줐 중 줒 줓 줔 줕 줖 줗 줘 줙 줚 줛 줜 줝 줞 줟 줠 줡 줢 줣 줤 줥 줦 줧 줨 줩 줪 줫 줬 줭 줮 줯 줰 줱 줲 줳 줴 줵 줶 줷 줸 줹 줺 줻 줼 줽 줾 줿 쥀 쥁 쥂 쥃 쥄 쥅 쥆 쥇 쥈 쥉 쥊 쥋 쥌 쥍 쥎 쥏 쥐 쥑 쥒 쥓 쥔 쥕 쥖 쥗 쥘 쥙 쥚 쥛 쥜 쥝 쥞 쥟 쥠 쥡 쥢 쥣 쥤 쥥 쥦 쥧 쥨 쥩 쥪 쥫 쥬 쥭 쥮 쥯 쥰 쥱 쥲 쥳 쥴 쥵 쥶 쥷 쥸 쥹 쥺 쥻 쥼 쥽 쥾 쥿 즀 즁 즂 즃 즄 즅 즆 즇 즈 즉 즊 즋 즌 즍 즎 즏 즐 즑 즒 즓 즔 즕 즖 즗 즘 즙 즚 즛 즜 증 즞 즟 즠 즡 즢 즣 즤 즥 즦 즧 즨 즩 즪 즫 즬 즭 즮 즯 즰 즱 즲 즳 즴 즵 즶 즷 즸 즹 즺 즻 즼 즽 즾 즿 지 직 짂 짃 진 짅 짆 짇 질 짉 짊 짋 짌 짍 짎 짏 짐 집 짒 짓 짔 징 짖 짗 짘 짙 짚 짛 짜 짝 짞 짟 짠 짡 짢 짣 짤 짥 짦 짧 짨 짩 짪 짫 짬 짭 짮 짯 짰 짱 짲 짳 짴 짵 짶 짷 째 짹 짺 짻 짼 짽 짾 짿 쨀 쨁 쨂 쨃 쨄 쨅 쨆 쨇 쨈 쨉 쨊 쨋 쨌 쨍 쨎 쨏 쨐 쨑 쨒 쨓 쨔 쨕 쨖 쨗 쨘 쨙 쨚 쨛 쨜 쨝 쨞 쨟 쨠 쨡 쨢 쨣 쨤 쨥 쨦 쨧 쨨 쨩 쨪 쨫 쨬 쨭 쨮 쨯 쨰 쨱 쨲 쨳 쨴 쨵 쨶 쨷 쨸 쨹 쨺 쨻 쨼 쨽 쨾 쨿 쩀 쩁 쩂 쩃 쩄 쩅 쩆 쩇 쩈 쩉 쩊 쩋 쩌 쩍 쩎 쩏 쩐 쩑 쩒 쩓 쩔 쩕 쩖 쩗 쩘 쩙 쩚 쩛 쩜 쩝 쩞 쩟 쩠 쩡 쩢 쩣 쩤 쩥 쩦 쩧 쩨 쩩 쩪 쩫 쩬 쩭 쩮 쩯 쩰 쩱 쩲 쩳 쩴 쩵 쩶 쩷 쩸 쩹 쩺 쩻 쩼 쩽 쩾 쩿 쪀 쪁 쪂 쪃 쪄 쪅 쪆 쪇 쪈 쪉 쪊 쪋 쪌 쪍 쪎 쪏 쪐 쪑 쪒 쪓 쪔 쪕 쪖 쪗 쪘 쪙 쪚 쪛 쪜 쪝 쪞 쪟 쪠 쪡 쪢 쪣 쪤 쪥 쪦 쪧 쪨 쪩 쪪 쪫 쪬 쪭 쪮 쪯 쪰 쪱 쪲 쪳 쪴 쪵 쪶 쪷 쪸 쪹 쪺 쪻 쪼 쪽 쪾 쪿 쫀 쫁 쫂 쫃 쫄 쫅 쫆 쫇 쫈 쫉 쫊 쫋 쫌 쫍 쫎 쫏 쫐 쫑 쫒 쫓 쫔 쫕 쫖 쫗 쫘 쫙 쫚 쫛 쫜 쫝 쫞 쫟 쫠 쫡 쫢 쫣 쫤 쫥 쫦 쫧 쫨 쫩 쫪 쫫 쫬 쫭 쫮 쫯 쫰 쫱 쫲 쫳 쫴 쫵 쫶 쫷 쫸 쫹 쫺 쫻 쫼 쫽 쫾 쫿 쬀 쬁 쬂 쬃 쬄 쬅 쬆 쬇 쬈 쬉 쬊 쬋 쬌 쬍 쬎 쬏 쬐 쬑 쬒 쬓 쬔 쬕 쬖 쬗 쬘 쬙 쬚 쬛 쬜 쬝 쬞 쬟 쬠 쬡 쬢 쬣 쬤 쬥 쬦 쬧 쬨 쬩 쬪 쬫 쬬 쬭 쬮 쬯 쬰 쬱 쬲 쬳 쬴 쬵 쬶 쬷 쬸 쬹 쬺 쬻 쬼 쬽 쬾 쬿 쭀 쭁 쭂 쭃 쭄 쭅 쭆 쭇 쭈 쭉 쭊 쭋 쭌 쭍 쭎 쭏 쭐 쭑 쭒 쭓 쭔 쭕 쭖 쭗 쭘 쭙 쭚 쭛 쭜 쭝 쭞 쭟 쭠 쭡 쭢 쭣 쭤 쭥 쭦 쭧 쭨 쭩 쭪 쭫 쭬 쭭 쭮 쭯 쭰 쭱 쭲 쭳 쭴 쭵 쭶 쭷 쭸 쭹 쭺 쭻 쭼 쭽 쭾 쭿 쮀 쮁 쮂 쮃 쮄 쮅 쮆 쮇 쮈 쮉 쮊 쮋 쮌 쮍 쮎 쮏 쮐 쮑 쮒 쮓 쮔 쮕 쮖 쮗 쮘 쮙 쮚 쮛 쮜 쮝 쮞 쮟 쮠 쮡 쮢 쮣 쮤 쮥 쮦 쮧 쮨 쮩 쮪 쮫 쮬 쮭 쮮 쮯 쮰 쮱 쮲 쮳 쮴 쮵 쮶 쮷 쮸 쮹 쮺 쮻 쮼 쮽 쮾 쮿 쯀 쯁 쯂 쯃 쯄 쯅 쯆 쯇 쯈 쯉 쯊 쯋 쯌 쯍 쯎 쯏 쯐 쯑 쯒 쯓 쯔 쯕 쯖 쯗 쯘 쯙 쯚 쯛 쯜 쯝 쯞 쯟 쯠 쯡 쯢 쯣 쯤 쯥 쯦 쯧 쯨 쯩 쯪 쯫 쯬 쯭 쯮 쯯 쯰 쯱 쯲 쯳 쯴 쯵 쯶 쯷 쯸 쯹 쯺 쯻 쯼 쯽 쯾 쯿 찀 찁 찂 찃 찄 찅 찆 찇 찈 찉 찊 찋 찌 찍 찎 찏 찐 찑 찒 찓 찔 찕 찖 찗 찘 찙 찚 찛 찜 찝 찞 찟 찠 찡 찢 찣 찤 찥 찦 찧 차 착 찪 찫 찬 찭 찮 찯 찰 찱 찲 찳 찴 찵 찶 찷 참 찹 찺 찻 찼 창 찾 찿 챀 챁 챂 챃 채 책 챆 챇 챈 챉 챊 챋 챌 챍 챎 챏 챐 챑 챒 챓 챔 챕 챖 챗 챘 챙 챚 챛 챜 챝 챞 챟 챠 챡 챢 챣 챤 챥 챦 챧 챨 챩 챪 챫 챬 챭 챮 챯 챰 챱 챲 챳 챴 챵 챶 챷 챸 챹 챺 챻 챼 챽 챾 챿 첀 첁 첂 첃 첄 첅 첆 첇 첈 첉 첊 첋 첌 첍 첎 첏 첐 첑 첒 첓 첔 첕 첖 첗 처 척 첚 첛 천 첝 첞 첟 철 첡 첢 첣 첤 첥 첦 첧 첨 첩 첪 첫 첬 청 첮 첯 첰 첱 첲 첳 체 첵 첶 첷 첸 첹 첺 첻 첼 첽 첾 첿 쳀 쳁 쳂 쳃 쳄 쳅 쳆 쳇 쳈 쳉 쳊 쳋 쳌 쳍 쳎 쳏 쳐 쳑 쳒 쳓 쳔 쳕 쳖 쳗 쳘 쳙 쳚 쳛 쳜 쳝 쳞 쳟 쳠 쳡 쳢 쳣 쳤 쳥 쳦 쳧 쳨 쳩 쳪 쳫 쳬 쳭 쳮 쳯 쳰 쳱 쳲 쳳 쳴 쳵 쳶 쳷 쳸 쳹 쳺 쳻 쳼 쳽 쳾 쳿 촀 촁 촂 촃 촄 촅 촆 촇 초 촉 촊 촋 촌 촍 촎 촏 촐 촑 촒 촓 촔 촕 촖 촗 촘 촙 촚 촛 촜 총 촞 촟 촠 촡 촢 촣 촤 촥 촦 촧 촨 촩 촪 촫 촬 촭 촮 촯 촰 촱 촲 촳 촴 촵 촶 촷 촸 촹 촺 촻 촼 촽 촾 촿 쵀 쵁 쵂 쵃 쵄 쵅 쵆 쵇 쵈 쵉 쵊 쵋 쵌 쵍 쵎 쵏 쵐 쵑 쵒 쵓 쵔 쵕 쵖 쵗 쵘 쵙 쵚 쵛 최 쵝 쵞 쵟 쵠 쵡 쵢 쵣 쵤 쵥 쵦 쵧 쵨 쵩 쵪 쵫 쵬 쵭 쵮 쵯 쵰 쵱 쵲 쵳 쵴 쵵 쵶 쵷 쵸 쵹 쵺 쵻 쵼 쵽 쵾 쵿 춀 춁 춂 춃 춄 춅 춆 춇 춈 춉 춊 춋 춌 춍 춎 춏 춐 춑 춒 춓 추 축 춖 춗 춘 춙 춚 춛 출 춝 춞 춟 춠 춡 춢 춣 춤 춥 춦 춧 춨 충 춪 춫 춬 춭 춮 춯 춰 춱 춲 춳 춴 춵 춶 춷 춸 춹 춺 춻 춼 춽 춾 춿 췀 췁 췂 췃 췄 췅 췆 췇 췈 췉 췊 췋 췌 췍 췎 췏 췐 췑 췒 췓 췔 췕 췖 췗 췘 췙 췚 췛 췜 췝 췞 췟 췠 췡 췢 췣 췤 췥 췦 췧 취 췩 췪 췫 췬 췭 췮 췯 췰 췱 췲 췳 췴 췵 췶 췷 췸 췹 췺 췻 췼 췽 췾 췿 츀 츁 츂 츃 츄 츅 츆 츇 츈 츉 츊 츋 츌 츍 츎 츏 츐 츑 츒 츓 츔 츕 츖 츗 츘 츙 츚 츛 츜 츝 츞 츟 츠 측 츢 츣 츤 츥 츦 츧 츨 츩 츪 츫 츬 츭 츮 츯 츰 츱 츲 츳 츴 층 츶 츷 츸 츹 츺 츻 츼 츽 츾 츿 칀 칁 칂 칃 칄 칅 칆 칇 칈 칉 칊 칋 칌 칍 칎 칏 칐 칑 칒 칓 칔 칕 칖 칗 치 칙 칚 칛 친 칝 칞 칟 칠 칡 칢 칣 칤 칥 칦 칧 침 칩 칪 칫 칬 칭 칮 칯 칰 칱 칲 칳 카 칵 칶 칷 칸 칹 칺 칻 칼 칽 칾 칿 캀 캁 캂 캃 캄 캅 캆 캇 캈 캉 캊 캋 캌 캍 캎 캏 캐 캑 캒 캓 캔 캕 캖 캗 캘 캙 캚 캛 캜 캝 캞 캟 캠 캡 캢 캣 캤 캥 캦 캧 캨 캩 캪 캫 캬 캭 캮 캯 캰 캱 캲 캳 캴 캵 캶 캷 캸 캹 캺 캻 캼 캽 캾 캿 컀 컁 컂 컃 컄 컅 컆 컇 컈 컉 컊 컋 컌 컍 컎 컏 컐 컑 컒 컓 컔 컕 컖 컗 컘 컙 컚 컛 컜 컝 컞 컟 컠 컡 컢 컣 커 컥 컦 컧 컨 컩 컪 컫 컬 컭 컮 컯 컰 컱 컲 컳 컴 컵 컶 컷 컸 컹 컺 컻 컼 컽 컾 컿 케 켁 켂 켃 켄 켅 켆 켇 켈 켉 켊 켋 켌 켍 켎 켏 켐 켑 켒 켓 켔 켕 켖 켗 켘 켙 켚 켛 켜 켝 켞 켟 켠 켡 켢 켣 켤 켥 켦 켧 켨 켩 켪 켫 켬 켭 켮 켯 켰 켱 켲 켳 켴 켵 켶 켷 켸 켹 켺 켻 켼 켽 켾 켿 콀 콁 콂 콃 콄 콅 콆 콇 콈 콉 콊 콋 콌 콍 콎 콏 콐 콑 콒 콓 코 콕 콖 콗 콘 콙 콚 콛 콜 콝 콞 콟 콠 콡 콢 콣 콤 콥 콦 콧 콨 콩 콪 콫 콬 콭 콮 콯 콰 콱 콲 콳 콴 콵 콶 콷 콸 콹 콺 콻 콼 콽 콾 콿 쾀 쾁 쾂 쾃 쾄 쾅 쾆 쾇 쾈 쾉 쾊 쾋 쾌 쾍 쾎 쾏 쾐 쾑 쾒 쾓 쾔 쾕 쾖 쾗 쾘 쾙 쾚 쾛 쾜 쾝 쾞 쾟 쾠 쾡 쾢 쾣 쾤 쾥 쾦 쾧 쾨 쾩 쾪 쾫 쾬 쾭 쾮 쾯 쾰 쾱 쾲 쾳 쾴 쾵 쾶 쾷 쾸 쾹 쾺 쾻 쾼 쾽 쾾 쾿 쿀 쿁 쿂 쿃 쿄 쿅 쿆 쿇 쿈 쿉 쿊 쿋 쿌 쿍 쿎 쿏 쿐 쿑 쿒 쿓 쿔 쿕 쿖 쿗 쿘 쿙 쿚 쿛 쿜 쿝 쿞 쿟 쿠 쿡 쿢 쿣 쿤 쿥 쿦 쿧 쿨 쿩 쿪 쿫 쿬 쿭 쿮 쿯 쿰 쿱 쿲 쿳 쿴 쿵 쿶 쿷 쿸 쿹 쿺 쿻 쿼 쿽 쿾 쿿 퀀 퀁 퀂 퀃 퀄 퀅 퀆 퀇 퀈 퀉 퀊 퀋 퀌 퀍 퀎 퀏 퀐 퀑 퀒 퀓 퀔 퀕 퀖 퀗 퀘 퀙 퀚 퀛 퀜 퀝 퀞 퀟 퀠 퀡 퀢 퀣 퀤 퀥 퀦 퀧 퀨 퀩 퀪 퀫 퀬 퀭 퀮 퀯 퀰 퀱 퀲 퀳 퀴 퀵 퀶 퀷 퀸 퀹 퀺 퀻 퀼 퀽 퀾 퀿 큀 큁 큂 큃 큄 큅 큆 큇 큈 큉 큊 큋 큌 큍 큎 큏 큐 큑 큒 큓 큔 큕 큖 큗 큘 큙 큚 큛 큜 큝 큞 큟 큠 큡 큢 큣 큤 큥 큦 큧 큨 큩 큪 큫 크 큭 큮 큯 큰 큱 큲 큳 클 큵 큶 큷 큸 큹 큺 큻 큼 큽 큾 큿 킀 킁 킂 킃 킄 킅 킆 킇 킈 킉 킊 킋 킌 킍 킎 킏 킐 킑 킒 킓 킔 킕 킖 킗 킘 킙 킚 킛 킜 킝 킞 킟 킠 킡 킢 킣 키 킥 킦 킧 킨 킩 킪 킫 킬 킭 킮 킯 킰 킱 킲 킳 킴 킵 킶 킷 킸 킹 킺 킻 킼 킽 킾 킿 타 탁 탂 탃 탄 탅 탆 탇 탈 탉 탊 탋 탌 탍 탎 탏 탐 탑 탒 탓 탔 탕 탖 탗 탘 탙 탚 탛 태 택 탞 탟 탠 탡 탢 탣 탤 탥 탦 탧 탨 탩 탪 탫 탬 탭 탮 탯 탰 탱 탲 탳 탴 탵 탶 탷 탸 탹 탺 탻 탼 탽 탾 탿 턀 턁 턂 턃 턄 턅 턆 턇 턈 턉 턊 턋 턌 턍 턎 턏 턐 턑 턒 턓 턔 턕 턖 턗 턘 턙 턚 턛 턜 턝 턞 턟 턠 턡 턢 턣 턤 턥 턦 턧 턨 턩 턪 턫 턬 턭 턮 턯 터 턱 턲 턳 턴 턵 턶 턷 털 턹 턺 턻 턼 턽 턾 턿 텀 텁 텂 텃 텄 텅 텆 텇 텈 텉 텊 텋 테 텍 텎 텏 텐 텑 텒 텓 텔 텕 텖 텗 텘 텙 텚 텛 템 텝 텞 텟 텠 텡 텢 텣 텤 텥 텦 텧 텨 텩 텪 텫 텬 텭 텮 텯 텰 텱 텲 텳 텴 텵 텶 텷 텸 텹 텺 텻 텼 텽 텾 텿 톀 톁 톂 톃 톄 톅 톆 톇 톈 톉 톊 톋 톌 톍 톎 톏 톐 톑 톒 톓 톔 톕 톖 톗 톘 톙 톚 톛 톜 톝 톞 톟 토 톡 톢 톣 톤 톥 톦 톧 톨 톩 톪 톫 톬 톭 톮 톯 톰 톱 톲 톳 톴 통 톶 톷 톸 톹 톺 톻 톼 톽 톾 톿 퇀 퇁 퇂 퇃 퇄 퇅 퇆 퇇 퇈 퇉 퇊 퇋 퇌 퇍 퇎 퇏 퇐 퇑 퇒 퇓 퇔 퇕 퇖 퇗 퇘 퇙 퇚 퇛 퇜 퇝 퇞 퇟 퇠 퇡 퇢 퇣 퇤 퇥 퇦 퇧 퇨 퇩 퇪 퇫 퇬 퇭 퇮 퇯 퇰 퇱 퇲 퇳 퇴 퇵 퇶 퇷 퇸 퇹 퇺 퇻 퇼 퇽 퇾 퇿 툀 툁 툂 툃 툄 툅 툆 툇 툈 툉 툊 툋 툌 툍 툎 툏 툐 툑 툒 툓 툔 툕 툖 툗 툘 툙 툚 툛 툜 툝 툞 툟 툠 툡 툢 툣 툤 툥 툦 툧 툨 툩 툪 툫 투 툭 툮 툯 툰 툱 툲 툳 툴 툵 툶 툷 툸 툹 툺 툻 툼 툽 툾 툿 퉀 퉁 퉂 퉃 퉄 퉅 퉆 퉇 퉈 퉉 퉊 퉋 퉌 퉍 퉎 퉏 퉐 퉑 퉒 퉓 퉔 퉕 퉖 퉗 퉘 퉙 퉚 퉛 퉜 퉝 퉞 퉟 퉠 퉡 퉢 퉣 퉤 퉥 퉦 퉧 퉨 퉩 퉪 퉫 퉬 퉭 퉮 퉯 퉰 퉱 퉲 퉳 퉴 퉵 퉶 퉷 퉸 퉹 퉺 퉻 퉼 퉽 퉾 퉿 튀 튁 튂 튃 튄 튅 튆 튇 튈 튉 튊 튋 튌 튍 튎 튏 튐 튑 튒 튓 튔 튕 튖 튗 튘 튙 튚 튛 튜 튝 튞 튟 튠 튡 튢 튣 튤 튥 튦 튧 튨 튩 튪 튫 튬 튭 튮 튯 튰 튱 튲 튳 튴 튵 튶 튷 트 특 튺 튻 튼 튽 튾 튿 틀 틁 틂 틃 틄 틅 틆 틇 틈 틉 틊 틋 틌 틍 틎 틏 틐 틑 틒 틓 틔 틕 틖 틗 틘 틙 틚 틛 틜 틝 틞 틟 틠 틡 틢 틣 틤 틥 틦 틧 틨 틩 틪 틫 틬 틭 틮 틯 티 틱 틲 틳 틴 틵 틶 틷 틸 틹 틺 틻 틼 틽 틾 틿 팀 팁 팂 팃 팄 팅 팆 팇 팈 팉 팊 팋 파 팍 팎 팏 판 팑 팒 팓 팔 팕 팖 팗 팘 팙 팚 팛 팜 팝 팞 팟 팠 팡 팢 팣 팤 팥 팦 팧 패 팩 팪 팫 팬 팭 팮 팯 팰 팱 팲 팳 팴 팵 팶 팷 팸 팹 팺 팻 팼 팽 팾 팿 퍀 퍁 퍂 퍃 퍄 퍅 퍆 퍇 퍈 퍉 퍊 퍋 퍌 퍍 퍎 퍏 퍐 퍑 퍒 퍓 퍔 퍕 퍖 퍗 퍘 퍙 퍚 퍛 퍜 퍝 퍞 퍟 퍠 퍡 퍢 퍣 퍤 퍥 퍦 퍧 퍨 퍩 퍪 퍫 퍬 퍭 퍮 퍯 퍰 퍱 퍲 퍳 퍴 퍵 퍶 퍷 퍸 퍹 퍺 퍻 퍼 퍽 퍾 퍿 펀 펁 펂 펃 펄 펅 펆 펇 펈 펉 펊 펋 펌 펍 펎 펏 펐 펑 펒 펓 펔 펕 펖 펗 페 펙 펚 펛 펜 펝 펞 펟 펠 펡 펢 펣 펤 펥 펦 펧 펨 펩 펪 펫 펬 펭 펮 펯 펰 펱 펲 펳 펴 펵 펶 펷 편 펹 펺 펻 펼 펽 펾 펿 폀 폁 폂 폃 폄 폅 폆 폇 폈 평 폊 폋 폌 폍 폎 폏 폐 폑 폒 폓 폔 폕 폖 폗 폘 폙 폚 폛 폜 폝 폞 폟 폠 폡 폢 폣 폤 폥 폦 폧 폨 폩 폪 폫 포 폭 폮 폯 폰 폱 폲 폳 폴 폵 폶 폷 폸 폹 폺 폻 폼 폽 폾 폿 퐀 퐁 퐂 퐃 퐄 퐅 퐆 퐇 퐈 퐉 퐊 퐋 퐌 퐍 퐎 퐏 퐐 퐑 퐒 퐓 퐔 퐕 퐖 퐗 퐘 퐙 퐚 퐛 퐜 퐝 퐞 퐟 퐠 퐡 퐢 퐣 퐤 퐥 퐦 퐧 퐨 퐩 퐪 퐫 퐬 퐭 퐮 퐯 퐰 퐱 퐲 퐳 퐴 퐵 퐶 퐷 퐸 퐹 퐺 퐻 퐼 퐽 퐾 퐿 푀 푁 푂 푃 푄 푅 푆 푇 푈 푉 푊 푋 푌 푍 푎 푏 푐 푑 푒 푓 푔 푕 푖 푗 푘 푙 푚 푛 표 푝 푞 푟 푠 푡 푢 푣 푤 푥 푦 푧 푨 푩 푪 푫 푬 푭 푮 푯 푰 푱 푲 푳 푴 푵 푶 푷 푸 푹 푺 푻 푼 푽 푾 푿 풀 풁 풂 풃 풄 풅 풆 풇 품 풉 풊 풋 풌 풍 풎 풏 풐 풑 풒 풓 풔 풕 풖 풗 풘 풙 풚 풛 풜 풝 풞 풟 풠 풡 풢 풣 풤 풥 풦 풧 풨 풩 풪 풫 풬 풭 풮 풯 풰 풱 풲 풳 풴 풵 풶 풷 풸 풹 풺 풻 풼 풽 풾 풿 퓀 퓁 퓂 퓃 퓄 퓅 퓆 퓇 퓈 퓉 퓊 퓋 퓌 퓍 퓎 퓏 퓐 퓑 퓒 퓓 퓔 퓕 퓖 퓗 퓘 퓙 퓚 퓛 퓜 퓝 퓞 퓟 퓠 퓡 퓢 퓣 퓤 퓥 퓦 퓧 퓨 퓩 퓪 퓫 퓬 퓭 퓮 퓯 퓰 퓱 퓲 퓳 퓴 퓵 퓶 퓷 퓸 퓹 퓺 퓻 퓼 퓽 퓾 퓿 픀 픁 픂 픃 프 픅 픆 픇 픈 픉 픊 픋 플 픍 픎 픏 픐 픑 픒 픓 픔 픕 픖 픗 픘 픙 픚 픛 픜 픝 픞 픟 픠 픡 픢 픣 픤 픥 픦 픧 픨 픩 픪 픫 픬 픭 픮 픯 픰 픱 픲 픳 픴 픵 픶 픷 픸 픹 픺 픻 피 픽 픾 픿 핀 핁 핂 핃 필 핅 핆 핇 핈 핉 핊 핋 핌 핍 핎 핏 핐 핑 핒 핓 핔 핕 핖 핗 하 학 핚 핛 한 핝 핞 핟 할 핡 핢 핣 핤 핥 핦 핧 함 합 핪 핫 핬 항 핮 핯 핰 핱 핲 핳 해 핵 핶 핷 핸 핹 핺 핻 핼 핽 핾 핿 햀 햁 햂 햃 햄 햅 햆 햇 했 행 햊 햋 햌 햍 햎 햏 햐 햑 햒 햓 햔 햕 햖 햗 햘 햙 햚 햛 햜 햝 햞 햟 햠 햡 햢 햣 햤 향 햦 햧 햨 햩 햪 햫 햬 햭 햮 햯 햰 햱 햲 햳 햴 햵 햶 햷 햸 햹 햺 햻 햼 햽 햾 햿 헀 헁 헂 헃 헄 헅 헆 헇 허 헉 헊 헋 헌 헍 헎 헏 헐 헑 헒 헓 헔 헕 헖 헗 험 헙 헚 헛 헜 헝 헞 헟 헠 헡 헢 헣 헤 헥 헦 헧 헨 헩 헪 헫 헬 헭 헮 헯 헰 헱 헲 헳 헴 헵 헶 헷 헸 헹 헺 헻 헼 헽 헾 헿 혀 혁 혂 혃 현 혅 혆 혇 혈 혉 혊 혋 혌 혍 혎 혏 혐 협 혒 혓 혔 형 혖 혗 혘 혙 혚 혛 혜 혝 혞 혟 혠 혡 혢 혣 혤 혥 혦 혧 혨 혩 혪 혫 혬 혭 혮 혯 혰 혱 혲 혳 혴 혵 혶 혷 호 혹 혺 혻 혼 혽 혾 혿 홀 홁 홂 홃 홄 홅 홆 홇 홈 홉 홊 홋 홌 홍 홎 홏 홐 홑 홒 홓 화 확 홖 홗 환 홙 홚 홛 활 홝 홞 홟 홠 홡 홢 홣 홤 홥 홦 홧 홨 황 홪 홫 홬 홭 홮 홯 홰 홱 홲 홳 홴 홵 홶 홷 홸 홹 홺 홻 홼 홽 홾 홿 횀 횁 횂 횃 횄 횅 횆 횇 횈 횉 횊 횋 회 획 횎 횏 횐 횑 횒 횓 횔 횕 횖 횗 횘 횙 횚 횛 횜 횝 횞 횟 횠 횡 횢 횣 횤 횥 횦 횧 효 횩 횪 횫 횬 횭 횮 횯 횰 횱 횲 횳 횴 횵 횶 횷 횸 횹 횺 횻 횼 횽 횾 횿 훀 훁 훂 훃 후 훅 훆 훇 훈 훉 훊 훋 훌 훍 훎 훏 훐 훑 훒 훓 훔 훕 훖 훗 훘 훙 훚 훛 훜 훝 훞 훟 훠 훡 훢 훣 훤 훥 훦 훧 훨 훩 훪 훫 훬 훭 훮 훯 훰 훱 훲 훳 훴 훵 훶 훷 훸 훹 훺 훻 훼 훽 훾 훿 휀 휁 휂 휃 휄 휅 휆 휇 휈 휉 휊 휋 휌 휍 휎 휏 휐 휑 휒 휓 휔 휕 휖 휗 휘 휙 휚 휛 휜 휝 휞 휟 휠 휡 휢 휣 휤 휥 휦 휧 휨 휩 휪 휫 휬 휭 휮 휯 휰 휱 휲 휳 휴 휵 휶 휷 휸 휹 휺 휻 휼 휽 휾 휿 흀 흁 흂 흃 흄 흅 흆 흇 흈 흉 흊 흋 흌 흍 흎 흏 흐 흑 흒 흓 흔 흕 흖 흗 흘 흙 흚 흛 흜 흝 흞 흟 흠 흡 흢 흣 흤 흥 흦 흧 흨 흩 흪 흫 희 흭 흮 흯 흰 흱 흲 흳 흴 흵 흶 흷 흸 흹 흺 흻 흼 흽 흾 흿 힀 힁 힂 힃 힄 힅 힆 힇 히 힉 힊 힋 힌 힍 힎 힏 힐 힑 힒 힓 힔 힕 힖 힗 힘 힙 힚 힛 힜 힝 힞 힟 힠 힡 힢 힣", - 2: "‾ _ _ - - ‐ — ― 〜 ・ , , 、 ; ; : : ! ! ¡ ? ? ¿ . . ‥ … 。 · ' ‘ ’ \" " “ ” ( ( ) ) [ [ ] ] { { } } 〈 〉 《 》 「 」 『 』 【 】 〔 〕 § ¶ @ @ * * / / \\ \ & & # # % % ‰ † ‡ ′ ″ 〃 ※", - 3: "ᄀ ᄀ ᄁ ᄂ ᄃ ᄄ ᄅ ᄆ ᄇ ᄈ ᄉ ᄊ ᄋ ᄌ ᄍ ᄎ ᄏ ᄐ ᄑ ᄒ ᅡ ᅡ ᅢ ᅣ ᅤ ᅥ ᅦ ᅧ ᅨ ᅩ ᅪ ᅫ ᅬ ᅭ ᅮ ᅯ ᅰ ᅱ ᅲ ᅳ ᅴ ᅵ ᆨ ᆨ ᆩ ᆪ ᆫ ᆬ ᆭ ᆮ ᆯ ᆰ ᆱ ᆲ ᆳ ᆴ ᆵ ᆶ ᆷ ᆸ ᆹ ᆺ ᆻ ᆼ ᆽ ᆾ ᆿ ᇀ ᇁ ᇂ 丘 串 乃 久 乖 九 乞 乫 乾 亂 亘 交 京 仇 今 介 件 价 企 伋 伎 伽 佳 佶 侃 來 侊 供 係 俓 俱 個 倞 倦 倨 假 偈 健 傀 傑 傾 僅 僑 價 儆 儉 儺 光 克 兢 內 公 共 其 具 兼 冀 冠 凱 刊 刮 券 刻 剋 剛 劇 劍 劒 功 加 劤 劫 勁 勍 勘 勤 勸 勻 勾 匡 匣 區 南 卦 却 卵 卷 卿 厥 去 及 口 句 叩 叫 可 各 吉 君 告 呱 呵 咎 咬 哥 哭 啓 喀 喇 喝 喫 喬 嗜 嘉 嘔 器 囊 困 固 圈 國 圭 圻 均 坎 坑 坤 坰 坵 垢 基 埼 堀 堅 堈 堪 堺 塊 塏 境 墾 壙 壞 夔 奇 奈 奎 契 奸 妓 妗 姑 姜 姦 娘 娜 嫁 嬌 孔 季 孤 宏 官 客 宮 家 寄 寇 寡 寬 尻 局 居 屆 屈 岐 岡 岬 崎 崑 崗 嵌 嵐 嶇 嶠 工 巧 巨 己 巾 干 幹 幾 庚 庫 康 廊 廐 廓 廣 建 弓 强 彊 徑 忌 急 怪 怯 恐 恝 恪 恭 悸 愆 感 愧 愷 愾 慊 慣 慤 慨 慶 慷 憩 憬 憾 懃 懇 懦 懶 懼 戈 戒 戟 戡 扱 技 抉 拉 拏 拐 拒 拘 括 拮 拱 拳 拷 拿 捏 据 捲 捺 掘 掛 控 揀 揆 揭 擊 擎 擒 據 擧 攪 攷 改 攻 故 敎 救 敢 敬 敲 斛 斤 旗 旣 昆 昑 景 晷 暇 暖 暠 暻 曠 曲 更 曷 朗 朞 期 机 杆 杞 杰 枏 果 枯 架 枸 柑 柩 柬 柯 校 根 格 桀 桂 桔 桿 梏 梗 械 梱 棄 棋 棍 棘 棨 棺 楗 楠 極 槁 構 槐 槨 槪 槻 槿 樂 橄 橋 橘 機 檄 檎 檢 櫃 欄 權 欺 款 歌 歐 歸 殼 毆 毬 氣 求 江 汨 汲 決 汽 沂 沽 洛 洸 浪 涇 淃 淇 減 渠 渴 湳 溝 溪 滑 滾 漑 潔 潰 澗 激 濫 灌 灸 炅 炚 炬 烙 烱 煖 爛 牽 犬 狂 狗 狡 狼 獗 玖 玘 珂 珏 珖 珙 珞 珪 球 琦 琨 琪 琯 琴 瑾 璂 璟 璣 璥 瓊 瓘 瓜 甄 甘 甲 男 畇 界 畸 畺 畿 疆 疥 疳 痂 痙 痼 癎 癩 癸 皆 皎 皐 盖 監 看 眷 睾 瞰 瞼 瞿 矜 矩 矯 硅 硬 碁 碣 磎 磬 磯 磵 祁 祇 祈 祛 祺 禁 禽 科 稈 稼 稽 稿 穀 究 穹 空 窘 窟 窮 窺 竅 竟 竭 競 竿 筋 筐 筠 箇 箕 箝 管 簡 粳 糠 系 糾 紀 納 紘 級 紺 絅 結 絞 給 絳 絹 絿 經 綱 綺 緊 繫 繭 繼 缺 罐 罫 羅 羈 羌 羔 群 羹 翹 考 耆 耉 耕 耭 耿 肌 肝 股 肩 肯 肱 胛 胱 脚 脛 腔 腱 膈 膏 膠 臘 臼 舅 舊 舡 艮 艱 芎 芥 芩 芹 苛 苟 苦 苽 茄 莖 菅 菊 菌 菓 菫 菰 落 葛 葵 蓋 蕎 蕨 薑 藁 藍 藿 蘭 蘿 虔 蚣 蛟 蝎 螺 蠟 蠱 街 衢 衲 衾 衿 袈 袞 袴 裙 裸 褐 襁 襟 襤 見 規 覡 覲 覺 觀 角 計 記 訣 訶 詭 誇 誡 誥 課 諫 諾 謙 講 謳 謹 譏 警 譴 谷 谿 豈 貢 貫 貴 賈 購 赳 起 跏 距 跨 踞 蹇 蹶 躬 軀 車 軌 軍 軻 較 輕 轎 轟 辜 近 迦 迲 适 逑 逕 逵 過 遣 遽 邏 那 邯 邱 郊 郎 郡 郭 酪 醵 金 鈐 鈞 鉀 鉅 鉗 鉤 銶 鋸 鋼 錡 錤 錦 錮 鍋 鍵 鎌 鎧 鏡 鑑 鑒 鑛 開 間 閘 閣 閨 闕 關 降 階 隔 隙 雇 難 鞏 鞠 鞨 鞫 頃 頸 顆 顧 飢 餃 館 饉 饋 饑 駒 駕 駱 騎 騏 騫 驅 驕 驚 驥 骨 高 鬼 魁 鮫 鯤 鯨 鱇 鳩 鵑 鵠 鷄 鷗 鸞 麒 麴 黔 鼓 龕 龜", - 5: "ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ", - }, - "kok": { - 0: "़ ० १ २ ३ ४ ५ ६ ७ ८ ९ ॐ ं ँ ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क क़ ख ख़ ग ग़ घ ङ च छ ज ज़ झ ञ ट ठ ड ड़ ढ ढ़ ण त थ द ध न प फ फ़ ब भ म य य़ र ल व श ष स ह ळ ऽ ा ि ी ु ू ृ ॄ ॅ े ै ॉ ो ौ ्", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - }, - "ks": { - 0: "۪ ۭ َ ُ ِ ٔ ٕ ٖ ٗ ٚ ٛ ء آ أ ٲ ؤ ا ٮ ب پ ت ث ٹ ج چ ح خ د ذ ڈ ر ز ڑ ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں ھ ہ و ۄ ی ۍ ے", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "ksb": { - 0: "a b c d e f g h i j k l m n o p s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q r x", - 5: "A B C D E F G H I J K L M N O P S T U V W Y Z", - }, - "ksf": { - 0: "a á b c d e é ǝ ǝ́ ɛ ɛ́ f g h i í j k l m n ŋ o ó ɔ ɔ́ p r s t u ú v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E Ǝ Ɛ F G H I J K L M N Ŋ O Ɔ P R S T U V W Y Z", - }, - "ksh": { - 0: "a å ä æ b c d e ë ė f g h i j k l m n o ö œ p q r s ß t u ů ü v w x y z", - 2: "_ ‐ – — ⸗ , ; : ! ? . … ' ‘ ‚ \" “ „ ( ) [ ] { } § @ * / & # % † ‡ ° < = > ~ $", - 3: "á à ă â å ä ã ā æ ç é è ĕ ê ë ē ğ í ì ĭ î ï ī ij ı ł ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "kw": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "ky": { - 0: "а б г д е ё ж з и й к л м н ӊ о ө п р с т у ү х ч ш ъ ы э ю я", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "в ф ц щ ь", - }, - "lag": { - 0: "a á b c d e é f g h i í ɨ j k l m n o ó p q r s t u ú ʉ v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I Ɨ J K L M N O P Q R S T U Ʉ V W X Y Z", - }, - "lg": { - 0: "a b c d e f g i j k l m n ny ŋ o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "h q x", - 5: "A B C D E F G I J K L M N Ŋ O P R S T U V W Y Z", - }, - "ln": { - 0: "a á â ǎ b c d e é ê ě ɛ ɛ́ ɛ̂ ɛ̌ f g gb h i í î ǐ k l m mb mp n nd ng nk ns nt ny nz o ó ô ǒ ɔ ɔ́ ɔ̂ ɔ̌ p r s t u ú v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "j q x", - 5: "A B C D E Ɛ F G Gb H I K L M Mb Mp N Nd Ng Nk Ns Nt Ny Nz O Ɔ P R S T U V W Y Z", - }, - "lo": { - 0: "່ ້ ໊ ໋ ໌ ໍ ໆ ກ ຂ ຄ ງ ຈ ສ ຊ ຍ ດ ຕ ຖ ທ ນ ບ ປ ຜ ຝ ພ ຟ ມ ຢ ຣ ລ ວ ຫ ໜ ໝ ອ ຮ ຯ ະ ັ າ ຳ ິ ີ ຶ ື ຸ ູ ົ ຼ ຽ ເ ແ ໂ ໃ ໄ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200b ໐ ໑ ໒ ໓ ໔ ໕ ໖ ໗ ໘ ໙", - }, - "lt": { - 0: "a ą b c č d e ę ė f g h i į y j k l m n o p r s š t u ų ū v z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à ã ą́ ą̃ é è ẽ ę́ ę̃ ė́ ė̃ i̇́ í i̇̀ ì i̇̃ ĩ į́ į̇́ į̃ į̇̃ j̃ j̇̃ l̃ m̃ ñ ó ò õ q r̃ ú ù ũ ų́ ų̃ ū́ ū̃ w x", - 5: "A Ą B C Č D E Ę Ė F G H I Į Y J K L M N O P R S Š T U Ų Ū V Z Ž", - }, - "lu": { - 0: "a á à b c d e é è ɛ ɛ́ ɛ̀ f h i í ì j k l m n ng ny o ó ò ɔ ɔ́ ɔ̀ p ph q s shi t u ú ù v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "g r x", - 5: "A B C D E F H I J K L M N O P Q S T U V W Y Z", - }, - "luo": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x z", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y", - }, - "luy": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "lv": { - 0: "a ā b c č d e ē f g ģ h i ī j k ķ l ļ m n ņ o p r s š t u ū v z ž", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ ‚ \" “ ” „ ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "q w x y", - 5: "A B C Č D E F G Ģ H I J K Ķ L Ļ M N Ņ O P Q R S Š T U V W X Y Z Ž", - }, - "mas": { - 0: "a á à â ā b c d e é è ê ē ɛ g h i í ì î ī ɨ j k l m n ny ŋ o ó ò ô ō ɔ p r rr s sh t u ú ù û ū ʉ ʉ́ w wu y yi", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "f q v x z", - 5: "A B C D E Ɛ G H I Ɨ J K L M N Ŋ O Ɔ P R S T U Ʉ W Y", - }, - "mer": { - 0: "a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "mfe": { - 0: "a b c d e f g h i j k l m n o p r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P R S T U V W X Y Z", - }, - "mg": { - 0: "a à â b d e é è ê ë f g h i ì î ï j k l m n ñ o ô p r s t v y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c q u w x", - 5: "A B D E F G H I J K L M N O P R S T V Y Z", - }, - "mgh": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "mgo": { - 0: "a à b ch d e è ə ə̀ f g gh i ì j k m n ŋ o ò ɔ ɔ̀ p r s t u ù w y z ʼ", - 2: ", ; : ! ? . ' ‘ ’ \" “ ”", - 3: "c h l q v x", - 5: "A B CH D E Ə F G GH I J K M N Ŋ O Ɔ P R S T U W Y Z ʼ", - }, - "mk": { - 0: "а б в г д ѓ е ж з ѕ и ј к л љ м н њ о п р с т ќ у ф х ц ч џ ш", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ѐ ѝ", - 5: "А Б В Г Д Ѓ Е Ж З Ѕ И Ј К Л Љ М Н Њ О П Р С Т Ќ У Ф Х Ц Ч Џ Ш", - }, - "ml": { - 0: "\u200c \u200d ഃ അ ആ ഇ ഈ ഉ ഊ ഋ ൠ ഌ ൡ എ ഏ ഐ ഒ ഓ ഔ ക ൿ ഖ ഗ ഘ ങ ച ഛ ജ ഝ ഞ ട ഠ ഡ ഢ ണ ൺ ത ഥ ദ ധ ന ൻ പ ഫ ബ ഭ മ ം യ ര ർ ല ൽ വ ശ ഷ സ ഹ ള ൾ ഴ റ ാ ി ീ ു ൂ ൃ െ േ ൈ ൊ ോ ൗ ൌ ്", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - }, - "mn": { - 0: "а б в г д е ё ж з и й к л м н о ө п р с т у ү ф х ц ч ш щ ъ ы ь э ю я", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "ә җ ӊ һ", - }, - "mr": { - 0: "़ ० १ २ ३ ४ ५ ६ ७ ८ ९ ॐ ं ँ ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ ा ि ी ु ू ृ ॄ ॅ े ै ॉ ो ौ ्", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - 5: "\u200d ॐ ं ः अ आ इ ई उ ऊ ऋ ऌ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ ॅ ्", - }, - "ms": { - 0: "a ai au b c d dz e f g h i j k kh l m n ng ngg ny o p q r s sy t ts u ua v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "mt": { - 0: "a à b ċ d e è f ġ g għ h ħ i ì j k l m n o ò p q r s t u ù v w x ż z", - 2: "- , ; : ! ? . ' ‘ ’ \" “ ” ( ) [ ] { }", - 3: "c y", - }, - "mua": { - 0: "a ã b ɓ c d ɗ e ë ǝ f g h i ĩ j k l m n ŋ o õ p r s t u v ṽ w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B Ɓ C D Ɗ E Ǝ F G H I J K L M N Ŋ O P R S T U V W Y Z", - }, - "my": { - 0: "က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ အ ဣ ဤ ဥ ဦ ဧ ဩ ဪ ာ ါ ိ ီ ု ူ ေ ဲ ံ ဿ ျ ြ ွ ှ ္ ် ့ း", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ၐ ၑ ဨ ဢ ၒ ၓ ၔ ၕ ၖ ၗ ၘ ၙ", - }, - "naq": { - 0: "a â b c d e f g h i î k m n o ô p q r s t u û w x y z ǀ ǁ ǂ ǃ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "j l v", - 5: "A B C D E F G H I K M N O P Q R S T U W X Y Z", - }, - "nb": { - 0: "a à b c d e é f g h i j k l m n o ó ò ô p q r s t u v w x y z æ ø å", - 2: "- – , ; : ! ? . ' \" « » ( ) [ ] { } § @ * / \\", - 3: "á ǎ ã č ç đ è ê í ń ñ ŋ š ŧ ü ž ä ö", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å", - }, - "nd": { - 0: "a b c d e f g h i j k l m n o p q s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "r", - 5: "A B C D E F G H I J K L M N O P Q S T U V W X Y Z", - }, - "ne": { - 0: "़ ँ ं ः ॐ अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ऽ ा ि ी ु ू ृ ॄ ॅ े ै ॉ ो ौ ्", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - }, - "nl": { - 0: "a á ä b c d e é ë f g h i í ï ij j k l m n o ó ö p q r s t u ú ü v w x y z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "à â å ã æ ç è ê î ñ ô ø œ ù û ÿ", - }, - "nmg": { - 0: "a á ă â ä ā b ɓ c d e é ĕ ê ē ǝ ǝ́ ǝ̆ ǝ̂ ǝ̄ ɛ ɛ́ ɛ̆ ɛ̂ ɛ̄ f g h i í ĭ î ï ī j k l m n ń ŋ o ó ŏ ô ö ō ɔ ɔ́ ɔ̆ ɔ̂ ɔ̄ p r ŕ s t u ú ŭ û ū v w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x z", - 5: "A B Ɓ C D E Ǝ Ɛ F G H I J K L M N Ŋ O Ɔ P R S T U V W Y", - }, - "nn": { - 0: "a à b c d e é f g h i j k l m n o ó ò ô p q r s t u v w x y z æ ø å", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á ǎ č ç đ è ê ń ñ ŋ š ŧ ü ž ä ö", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å", - }, - "nnh": { - 0: "a á à â ǎ b c d e é è ê ě ɛ ɛ́ ɛ̀ ɛ̂ ɛ̌ f g h i í ì j k l m n ŋ o ó ò ô ǒ ɔ ɔ́ ɔ̀ ɔ̂ ɔ̌ p pf s sh t ts u ú ù û ǔ ʉ ʉ́ ʉ̀ ʉ̂ ʉ̌ v w ẅ y ÿ z ʼ", - 2: ", ; : ! ? . ' ‘ ’ « »", - 3: "q r x", - 5: "A B C D E Ɛ F G H I J K L M N Ŋ O Ɔ P Pf R S Sh T Ts U Ʉ V W Ẅ Y Ÿ Z ʼ", - }, - "nr": { - 0: "a b c d e f g h i j k l m n o p q s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "r", - }, - "nso": { - 0: "a b d e ê f g h i j k l m n o ô p r s š t u w x y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c q v z", - }, - "nus": { - 0: "a ä a̱ b c d e ë e̱ ɛ ɛ̈ ɛ̱ ɛ̱̈ f g ɣ h i ï i̱ j k l m n ŋ o ö o̱ ɔ ɔ̈ ɔ̱ p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E Ɛ F G Ɣ H I J K L M N Ŋ O Ɔ P Q R S T U V W X Y Z", - }, - "nyn": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "om": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "or": { - 0: "଼ ଅ ଆ ଇ ଈ ଉ ଊ ଋ ଏ ଐ ଓ ଔ ଁ ଂ ଃ କ ଖ ଗ ଘ ଙ ଚ ଛ ଜ ଝ ଞ ଟ ଠ ଡ ଡ଼ ଢ ଢ଼ ଣ ତ ଥ ଦ ଧ ନ ପ ଫ ବ ଭ ମ ଯ ୟ ର ଲ ଳ ଵ ୱ ଶ ଷ ସ ହ ା ି ୀ ୁ ୂ ୃ େ ୈ ୋ ୌ ୍", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - }, - "os": { - 0: "а ӕ б в г гъ д дж дз е ё ж з и й к къ л м н о п пъ р с т тъ у ф х хъ ц цъ ч чъ ш щ ъ ы ь э ю я", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ‚ \" “ „ « » ( ) [ ] { } § @ * / & #", - 5: "А Ӕ Б В Г Гъ Д Дж Дз Е Ё Ж З И Й К Къ Л М Н О П Пъ Р С Т Тъ У Ф Х Хъ Ц Цъ Ч Чъ Ш Щ Ы Э Ю Я", - }, - "pa": { - 0: "ੱ ੰ ਼ ੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ੴ ੳ ਉ ਊ ਓ ਅ ਆ ਐ ਔ ੲ ਇ ਈ ਏ ਸ ਸ਼ ਹ ਕ ਖ ਖ਼ ਗ ਗ਼ ਘ ਙ ਚ ਛ ਜ ਜ਼ ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ ਫ਼ ਬ ਭ ਮ ਯ ਰ ਲ ਵ ੜ ੍ ਾ ਿ ੀ ੁ ੂ ੇ ੈ ੋ ੌ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d ਃ ਂ ਁ ਲ਼", - }, - "pa-Arab": { - 0: "ُ ء آ ؤ ئ ا ب پ ت ث ٹ ج چ ح خ د ذ ڈ ر ز ڑ ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں ه ھ ہ و ی ے", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "أ ٻ ة ٺ ټ ٽ", - }, - "pl": { - 0: "a ą b c ć d e ę f g h i j k l ł m n ń o ó p r s ś t u w y z ź ż", - 2: "- ‐ – — , ; : ! ? . … ' \" ” „ « » ( ) [ ] { } § @ * / & # % † ‡ ′ ″ ° ~", - 3: "à â å ä æ ç é è ê ë î ï ô ö œ q ß ù û ü v x ÿ", - }, - "ps": { - 0: "َ ِ ُ ً ٍ ٌ ّ ْ ٔ ٰ آ ا أ ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګ ل م ن ڼ ه ة و ؤ ی ي ې ۍ ئ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d", - }, - "pt": { - 0: "a á à â ã b c ç d e é ê f g h i í j k l m n o ó ò ô õ p q r s t u ú v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ª ă å ä ā æ è ĕ ë ē ì ĭ î ï ī ñ º ŏ ö ø ō œ ù ŭ û ü ū ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "rm": { - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "rn": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "ro": { - 0: "a ă â b c d e f g h i î j k l m n o p r s ș t ț u v x z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ \" “ ” „ « » ( ) [ ] @ * /", - 3: "á à å ä ç é è ê ë ñ ö q ş ţ ü w y", - 5: "A Ă Â B C D E F G H I Î J K L M N O P Q R S Ș T Ț U V W X Y Z", - }, - "rof": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "und": { - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "ru": { - 0: "а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ‚ \" “ „ « » ( ) [ ] { } § @ * / & #", - 3: "а́ е́ и́ о́ у́ ы́ э́ ю́ я́", - 5: "А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я", - }, - "rw": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "rwk": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "sah": { - 0: "а б г ҕ д дь и й к л м н нь ҥ о ө п р с т у ү х һ ч ы э", - 3: "в е ё ж з ф ц ш щ ъ ь ю я", - 5: "А Б Г Ҕ Д Дь И Й К Л М Н Нь Ҥ О Ө П Р С Т У Ү Х Һ Ч Ы Э", - }, - "saq": { - 0: "a b c d e g h i j k l m n o p r s t u v w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "f q x z", - 5: "A B C D E G H I J K L M N O P R S T U V W Y", - }, - "sbp": { - 0: "a b c d e f g h i j k l m n o p s t u v w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q r x z", - 5: "A B C D E F G H I J K L M N O P S T U V W Y", - }, - "se": { - 0: "a á b c č d đ e f g h i j k l m n ŋ o p r s š t ŧ u v z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "à å ä ã æ ç é è í ń ñ ó ò ö ø q ú ü w x y", - }, - "seh": { - 0: "a á à â ã b c ç d e é ê f g h i í j k l m n o ó ò ô õ p q r s t u ú v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "ses": { - 0: "a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "v", - 5: "A à B C D E Ẽ F G H I J K L M N Ɲ Ŋ O Õ P Q R S Š T U W X Y Z Ž", - }, - "sg": { - 0: "a â ä b d e ê ë f g h i î ï j k l m n o ô ö p r s t u ù û ü v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c q x", - 5: "A B D E F G H I J K L M N O P R S T U V W Y Z", - }, - "shi": { - 0: "ⴰ ⴱ ⴳ ⴳⵯ ⴷ ⴹ ⴻ ⴼ ⴽ ⴽⵯ ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "ⴰ ⴱ ⴳ ⴷ ⴹ ⴻ ⴼ ⴽ ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ", - }, - "shi-Latn": { - 0: "a b c d ḍ e ɛ f g gʷ ɣ h ḥ i j k kʷ l m n q r ṛ s ṣ t ṭ u w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "o p v", - 5: "A B C D Ḍ E Ɛ F G Gʷ Ɣ H Ḥ I J K Kʷ L M N Q R Ṛ S Ṣ T Ṭ U W X Y Z", - }, - "si": { - 0: "අ ආ ඇ ඈ ඉ ඊ උ ඌ ඍ එ ඒ ඓ ඔ ඕ ඖ ං ඃ ක ඛ ග ඝ ඞ ඟ ච ඡ ජ ඣ ඥ ඤ ට ඨ ඩ ඪ ණ ඬ ත ථ ද ධ න ඳ ප ඵ බ භ ම ඹ ය ර ල ව ශ ෂ ස හ ළ ෆ ා ැ ෑ ි ී ු ූ ෘ ෲ ෟ ෙ ේ ෛ ො ෝ ෞ ්", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200b \u200c \u200d ඎ ඏ ඐ ඦ ෳ", - 5: "අ ආ ඇ ඈ ඉ ඊ උ ඌ ඍ එ ඒ ඓ ඔ ඕ ඖ ක ඛ ග ඝ ඞ ඟ ච ඡ ජ ඣ ඥ ඤ ට ඨ ඩ ඪ ණ ඬ ත ථ ද ධ න ඳ ප ඵ බ භ ම ඹ ය ර ල ව ශ ෂ ස හ ළ ෆ", - }, - "sk": { - 0: "a á ä b c č d ď e é f g h ch i í j k l ĺ ľ m n ň o ó ô p q r ŕ s š t ť u ú v w x y ý z ž", - 2: "- ‐ – , ; : ! ? . … ‘ ‚ “ „ ( ) [ ] § @ * / &", - }, - "sl": { - 0: "a b c č d e f g h i j k l m n o p r s š t u v z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à ă â å ä ā æ ç ć đ é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ q ú ù ŭ û ü ū w x y ÿ", - 5: "A B C Č Ć D Đ E F G H I J K L M N O P Q R S Š T U V W X Y Z Ž", - }, - "sn": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "so": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "sq": { - 0: "a b c ç d dh e ë f g gj h i j k l ll m n nj o p q r rr s sh t th u v x xh y z zh", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "w", - }, - "sr": { - 0: "а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ё й щ ъ ы ь э ю я", - }, - "sr-Latn": { - 0: "a b c č ć d dž đ e f g h i j k l lj m n nj o p r s š t u v z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "å q w x y", - }, - "ss": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "ssy": { - 0: "a b t s e c k x i d q r f g o l m n u w h y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "j p v z", - 5: "A B T S E C K X I D Q R F G O L M N U W H Y", - }, - "st": { - 0: "a b d e f g h i j k l m n o p q r s t u w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c v x z", - }, - "sv": { - 0: "a à b c d e é f g h i j k l m n o p q r s t u v w x y z å ä ö", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "á â ã ā ç ë í î ï ī ñ ó ú ÿ ü æ ø", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö", - }, - "sv-FI": { - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "ã ç ë í ñ ó š ÿ ü ž", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö", - }, - "sw": { - 0: "a b ch d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c q x", - }, - "swc": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "ta": { - 0: "அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ ஃ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன ஜ ஷ ஸ ஹ ா ி ீ ு ூ ெ ே ை ொ ோ ௌ ்", - 3: "\u200c \u200d", - }, - "te": { - 0: "అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఌ ౡ ఎ ఏ ఐ ఒ ఓ ఔ ఁ ం ః క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల వ శ ష స హ ళ ా ి ీ ు ూ ృ ౄ ె ే ై ొ ో ౌ ్ ౕ ౖ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d ౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯", - 5: "అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఎ ఏ ఐ ఒ ఓ ఔ క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల వ శ ష స హ ళ", - }, - "teo": { - 0: "a b c d e g h i j k l m n o p r s t u v w x y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "f q z", - 5: "A B C D E G H I J K L M N O P R S T U V W X Y", - }, - "tg": { - 0: "а б в г ғ д е ё ж з и ӣ й к қ л м н о п р с т у ӯ ф х ҳ ч ҷ ш ъ э ю я", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ц щ ы ь", - }, - "th": { - 0: "ฯ ๆ ๎ ์ ็ ่ ้ ๊ ๋ ก ข ฃ ค ฅ ฆ ง จ ฉ ช ซ ฌ ญ ฎ ฏ ฐ ฑ ฒ ณ ด ต ถ ท ธ น บ ป ผ ฝ พ ฟ ภ ม ย ร ฤ ล ฦ ว ศ ษ ส ห ฬ อ ฮ ํ ะ ั า ๅ ำ ิ ี ึ ื ุ ู เ แ โ ใ ไ ฺ", - 2: "! \" # ' ( ) * , - . / : @ [ \\ ] ‐ – — ‘ ’ “ ” … ′ ″", - 3: "\u200b", - }, - "ti": { - 0: "፟ ሀ ሀ ሁ ሂ ሃ ሄ ህ ሆ ለ ለ ሉ ሊ ላ ሌ ል ሎ ሏ ሐ ሑ ሒ ሓ ሔ ሕ ሖ ሗ መ ሙ ሚ ማ ሜ ም ሞ ሟ ሠ ሡ ሢ ሣ ሤ ሥ ሦ ሧ ረ ሩ ሪ ራ ሬ ር ሮ ሯ ሰ ሱ ሲ ሳ ሴ ስ ሶ ሷ ሸ ሹ ሺ ሻ ሼ ሽ ሾ ሿ ቀ ቁ ቂ ቃ ቄ ቅ ቆ ቈ ቊ ቊ ቋ ቌ ቍ ቐ ቐ ቑ ቒ ቓ ቔ ቕ ቖ ቘ ቚ ቚ ቛ ቜ ቝ በ በ ቡ ቢ ባ ቤ ብ ቦ ቧ ቨ ቩ ቪ ቫ ቬ ቭ ቮ ቯ ተ ቱ ቲ ታ ቴ ት ቶ ቷ ቸ ቹ ቺ ቻ ቼ ች ቾ ቿ ኀ ኁ ኂ ኃ ኄ ኅ ኆ ኈ ኊ ኊ ኋ ኌ ኍ ነ ነ ኑ ኒ ና ኔ ን ኖ ኗ ኘ ኙ ኚ ኛ ኜ ኝ ኞ ኟ አ ኡ ኢ ኣ ኤ እ ኦ ኧ ከ ኩ ኪ ካ ኬ ክ ኮ ኰ ኲ ኲ ኳ ኴ ኵ ኸ ኸ ኹ ኺ ኻ ኼ ኽ ኾ ዀ ዂ ዂ ዃ ዄ ዅ ወ ወ ዉ ዊ ዋ ዌ ው ዎ ዐ ዐ ዑ ዒ ዓ ዔ ዕ ዖ ዘ ዘ ዙ ዚ ዛ ዜ ዝ ዞ ዟ ዠ ዡ ዢ ዣ ዤ ዥ ዦ ዧ የ ዩ ዪ ያ ዬ ይ ዮ ደ ደ ዱ ዲ ዳ ዴ ድ ዶ ዷ ጀ ጀ ጁ ጂ ጃ ጄ ጅ ጆ ጇ ገ ጉ ጊ ጋ ጌ ግ ጎ ጐ ጒ ጒ ጓ ጔ ጕ ጠ ጠ ጡ ጢ ጣ ጤ ጥ ጦ ጧ ጨ ጩ ጪ ጫ ጬ ጭ ጮ ጯ ጰ ጱ ጲ ጳ ጴ ጵ ጶ ጷ ጸ ጹ ጺ ጻ ጼ ጽ ጾ ጿ ፀ ፁ ፂ ፃ ፄ ፅ ፆ ፇ ፈ ፉ ፊ ፋ ፌ ፍ ፎ ፏ ፐ ፑ ፒ ፓ ፔ ፕ ፖ ፗ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "᎐ ᎐ ᎑ ᎒ ᎓ ᎔ ᎕ ᎖ ᎗ ᎘ ᎙ ሇ ⶀ ᎀ ᎀ ᎁ ᎂ ᎃ ⶁ ⶁ ⶂ ⶃ ⶄ ቇ ᎄ ᎄ ᎅ ᎆ ᎇ ⶅ ⶅ ⶆ ⶇ ኇ ⶈ ⶈ ⶉ ⶊ ኯ ዏ ⶋ ዯ ⶌ ዸ ዸ ዹ ዺ ዻ ዼ ዽ ዾ ዿ ⶍ ⶎ ጏ ጘ ጘ ጙ ጚ ጛ ጜ ጝ ጞ ጟ ⶓ ⶓ ⶔ ⶕ ⶖ ⶏ ⶏ ⶐ ⶑ ፇ ᎈ ᎈ ᎉ ᎊ ᎋ ᎌ ᎍ ᎎ ᎏ ⶒ ፘ ፘ ፙ ፚ ⶠ ⶠ ⶡ ⶢ ⶣ ⶤ ⶥ ⶦ ⶨ ⶨ ⶩ ⶪ ⶫ ⶬ ⶭ ⶮ ⶰ ⶰ ⶱ ⶲ ⶳ ⶴ ⶵ ⶶ ⶸ ⶸ ⶹ ⶺ ⶻ ⶼ ⶽ ⶾ ⷀ ⷀ ⷁ ⷂ ⷃ ⷄ ⷅ ⷆ ⷈ ⷈ ⷉ ⷊ ⷋ ⷌ ⷍ ⷎ ⷐ ⷐ ⷑ ⷒ ⷓ ⷔ ⷕ ⷖ ⷘ ⷘ ⷙ ⷚ ⷛ ⷜ ⷝ ⷞ", - 5: "ሀ ለ ሐ መ ሠ ረ ሰ ሸ ቀ ቈ ቐ ቘ በ ቨ ተ ቸ ኀ ኈ ነ ኘ አ ከ ኰ ኸ ዀ ወ ዐ ዘ ዠ የ ደ ጀ ገ ጐ ጠ ጨ ጰ ጸ ፀ ፈ ፐ", - }, - "ti-ER": { - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "tig": { - 0: "፟ ፡ ፣ ፣ ፤ ፥ ፦ ፧ ። ፠ ፨ ᎐ ᎐ ᎑ ᎒ ᎓ ᎔ ᎕ ᎖ ᎗ ᎘ ᎙ ፲ ፲ ፳ ፴ ፵ ፶ ፷ ፸ ፹ ፺ ፻ ፼ ፩ ፩ ፪ ፫ ፬ ፭ ፮ ፯ ፰ ፱ ሀ ሀ ሁ ሂ ሃ ሄ ህ ሆ ሇ ለ ሉ ሊ ላ ሌ ል ሎ ሏ ⶀ ሐ ሐ ሑ ሒ ሓ ሔ ሕ ሖ ሗ መ ሙ ሚ ማ ሜ ም ሞ ሟ ᎀ ᎀ ᎁ ᎂ ᎃ ⶁ ሠ ሠ ሡ ሢ ሣ ሤ ሥ ሦ ሧ ረ ሩ ሪ ራ ሬ ር ሮ ሯ ⶂ ሰ ሰ ሱ ሲ ሳ ሴ ስ ሶ ሷ ⶃ ሸ ሸ ሹ ሺ ሻ ሼ ሽ ሾ ሿ ⶄ ቀ ቀ ቁ ቂ ቃ ቄ ቅ ቆ ቇ ቈ ቊ ቊ ቋ ቌ ቍ ቐ ቐ ቑ ቒ ቓ ቔ ቕ ቖ ቘ ቚ ቚ ቛ ቜ ቝ በ በ ቡ ቢ ባ ቤ ብ ቦ ቧ ᎄ ᎄ ᎅ ᎆ ᎇ ⶅ ቨ ቨ ቩ ቪ ቫ ቬ ቭ ቮ ቯ ተ ቱ ቲ ታ ቴ ት ቶ ቷ ⶆ ቸ ቸ ቹ ቺ ቻ ቼ ች ቾ ቿ ⶇ ኀ ኀ ኁ ኂ ኃ ኄ ኅ ኆ ኇ ኈ ኊ ኊ ኋ ኌ ኍ ነ ነ ኑ ኒ ና ኔ ን ኖ ኗ ⶈ ኘ ኘ ኙ ኚ ኛ ኜ ኝ ኞ ኟ ⶉ አ አ ኡ ኢ ኣ ኤ እ ኦ ኧ ⶊ ከ ከ ኩ ኪ ካ ኬ ክ ኮ ኯ ኰ ኲ ኲ ኳ ኴ ኵ ኸ ኸ ኹ ኺ ኻ ኼ ኽ ኾ ዀ ዂ ዂ ዃ ዄ ዅ ወ ወ ዉ ዊ ዋ ዌ ው ዎ ዏ ዐ ዑ ዒ ዓ ዔ ዕ ዖ ዘ ዘ ዙ ዚ ዛ ዜ ዝ ዞ ዟ ⶋ ዠ ዠ ዡ ዢ ዣ ዤ ዥ ዦ ዧ የ ዩ ዪ ያ ዬ ይ ዮ ዯ ደ ዱ ዲ ዳ ዴ ድ ዶ ዷ ⶌ ዸ ዸ ዹ ዺ ዻ ዼ ዽ ዾ ዿ ⶍ ጀ ጀ ጁ ጂ ጃ ጄ ጅ ጆ ጇ ⶎ ገ ገ ጉ ጊ ጋ ጌ ግ ጎ ጏ ጐ ጒ ጒ ጓ ጔ ጕ ጘ ጘ ጙ ጚ ጛ ጜ ጝ ጞ ጟ ⶓ ⶓ ⶔ ⶕ ⶖ ጠ ጠ ጡ ጢ ጣ ጤ ጥ ጦ ጧ ⶏ ጨ ጨ ጩ ጪ ጫ ጬ ጭ ጮ ጯ ⶐ ጰ ጰ ጱ ጲ ጳ ጴ ጵ ጶ ጷ ⶑ ጸ ጸ ጹ ጺ ጻ ጼ ጽ ጾ ጿ ፀ ፁ ፂ ፃ ፄ ፅ ፆ ፇ ፈ ፉ ፊ ፋ ፌ ፍ ፎ ፏ ᎈ ᎈ ᎉ ᎊ ᎋ ፐ ፐ ፑ ፒ ፓ ፔ ፕ ፖ ፗ ᎌ ᎌ ᎍ ᎎ ᎏ ⶒ ፘ ፘ ፙ ፚ ⶠ ⶠ ⶡ ⶢ ⶣ ⶤ ⶥ ⶦ ⶨ ⶨ ⶩ ⶪ ⶫ ⶬ ⶭ ⶮ ⶰ ⶰ ⶱ ⶲ ⶳ ⶴ ⶵ ⶶ ⶸ ⶸ ⶹ ⶺ ⶻ ⶼ ⶽ ⶾ ⷀ ⷀ ⷁ ⷂ ⷃ ⷄ ⷅ ⷆ ⷈ ⷈ ⷉ ⷊ ⷋ ⷌ ⷍ ⷎ ⷐ ⷐ ⷑ ⷒ ⷓ ⷔ ⷕ ⷖ ⷘ ⷘ ⷙ ⷚ ⷛ ⷜ ⷝ ⷞ", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "tn": { - 0: "a b d e ê f g h i j k l m n o ô p r s t u w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c q v x z", - }, - "to": { - 0: "a á ā e é ē f h i í ī k l m n ng o ó ō p s t u ú ū v ʻ", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "à ă â å ä æ b c ç d è ĕ ê ë g ì ĭ î ï j ñ ò ŏ ô ö ø œ q r ù ŭ û ü w x y ÿ z", - 5: "A E F H I K L M N NG O P S T U V ʻ", - }, - "tr": { - 0: "a b c ç d e f g ğ h ı i İ j k l m n o ö p r s ş t u ü v y z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” ( ) [ ] § @ * / & # † ‡ ′ ″", - 3: "á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ö q ß ú ù ŭ û ū ü w x ÿ", - 5: "A B C Ç D E F G H I İ J K L M N O Ö P Q R S Ş T U Ü V W X Y Z", - }, - "ts": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "twq": { - 0: "a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "v", - }, - "tzm": { - 0: "a b c d ḍ e ɛ f g gʷ ɣ h ḥ i j k kʷ l m n q r ṛ s ṣ t ṭ u w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "o p v", - 5: "A B C D Ḍ E Ɛ F G Ɣ H Ḥ I J K L M N Q R Ṛ S Ṣ T Ṭ U W X Y Z", - }, - "uk": { - 0: "ʼ а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ё ъ ы э", - 5: "А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я", - }, - "ur": { - 0: "ا أ آ ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں و ؤ ہ ۂ ھ ء ی ئ ے ة ه", - 2: "، ؍ ٫ ٬ ؛ : ؟ . ۔ ( ) [ ]", - 3: "\u0600 \u0601 \u0602 \u0603 \u200c \u200d \u200e \u200f ْ َ ِ ُ ٰ ٖ ٗ ً ٍ ٌ ٔ ّ ٘ ۃ ٻ ٺ ټ ٽ ي", - 5: "ا ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ہ ھ ء ی ے", - }, - "uz": { - 0: "а б в г ғ д е ё ж з и й к қ л м н о п р с т у ў ф х ҳ ч ш ъ э ю я", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "ц щ ы ь", - }, - "uz-Arab": { - 0: "ً ٌ ٍ َ ُ ِ ّ ْ ٔ ٰ ء آ أ ؤ ئ ا ب پ ة ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه و ۇ ۉ ی", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "\u200c \u200d ټ ځ څ ډ ړ ږ ښ ګ ڼ ي ۍ ې", - }, - "uz-Latn": { - 0: "a aʼ b ch d e eʼ f g gʻ h i iʼ j k l m n o oʻ p q r s sh t u uʼ v x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c w", - 5: "A B CH D E F G Gʻ H I J K L M N O Oʻ P Q R S SH T U V X Y Z", - }, - "vai": { - 0: "꘠ ꘠ ꘡ ꘢ ꘣ ꘤ ꘥ ꘦ ꘧ ꘨ ꘩ ꔀ ꔀ ꔁ ꔂ ꔃ ꔄ ꔅ ꔆ ꔇ ꔈ ꔉ ꔊ ꔋ ꔌ ꘓ ꔍ ꔍ ꔎ ꔏ ꔐ ꔑ ꔒ ꔓ ꔔ ꔕ ꔖ ꔗ ꔘ ꔙ ꔚ ꔛ ꔜ ꔝ ꔞ ꘔ ꔟ ꔟ ꔠ ꔡ ꔢ ꔣ ꔤ ꔥ ꔦ ꔧ ꔨ ꔩ ꔪ ꔫ ꔬ ꔭ ꔮ ꔯ ꔰ ꔱ ꔲ ꔳ ꘕ ꔴ ꔴ ꔵ ꔶ ꔷ ꔸ ꔹ ꔺ ꔻ ꔼ ꔽ ꔾ ꔿ ꕀ ꕁ ꕂ ꕃ ꕄ ꕅ ꕆ ꕇ ꘖ ꕈ ꕈ ꕉ ꕊ ꕋ ꕌ ꕍ ꕎ ꕏ ꕐ ꕑ ꕒ ꘗ ꕓ ꕓ ꕔ ꕕ ꕖ ꕗ ꕘ ꘐ ꘘ ꕙ ꕚ ꘙ ꕛ ꕛ ꕜ ꕝ ꕞ ꕟ ꕠ ꘚ ꕡ ꕡ ꕢ ꕣ ꕤ ꕥ ꕦ ꕧ ꕨ ꕩ ꕪ ꘑ ꕫ ꕫ ꕬ ꕭ ꕮ ꘪ ꕯ ꕯ ꕰ ꕱ ꕲ ꕳ ꕴ ꕵ ꕶ ꕷ ꕸ ꕹ ꕺ ꕻ ꕼ ꕽ ꕾ ꕿ ꖀ ꖁ ꖂ ꖃ ꖄ ꖅ ꘛ ꖆ ꖇ ꘒ ꖈ ꖈ ꖉ ꖊ ꖋ ꖌ ꖍ ꖎ ꖏ ꖐ ꖑ ꖒ ꖓ ꖔ ꖕ ꖖ ꖗ ꖘ ꖙ ꖚ ꖛ ꖜ ꖝ ꖞ ꖟ ꖠ ꖡ ꖢ ꖣ ꖤ ꖥ ꖦ ꖧ ꖨ ꖩ ꖪ ꖫ ꖬ ꖭ ꖮ ꖯ ꖰ ꖱ ꖲ ꖳ ꖴ ꘜ ꖵ ꖵ ꖶ ꖷ ꖸ ꖹ ꖺ ꖻ ꖼ ꖽ ꖾ ꖿ ꗀ ꗁ ꗂ ꗃ ꗄ ꗅ ꗆ ꗇ ꗈ ꗉ ꗊ ꗋ ꘝ ꗌ ꗌ ꗍ ꗎ ꗏ ꗐ ꗑ ꘫ ꘞ ꗒ ꗒ ꗓ ꗔ ꗕ ꗖ ꗗ ꗘ ꘟ ꗙ ꗙ ꗚ ꗛ ꗜ ꗝ ꗞ ꗟ ꗠ ꗡ ꗢ ꗣ ꗤ ꗥ ꗦ ꗧ ꗨ ꗩ ꗪ ꗫ ꗬ ꗭ ꗮ ꗯ ꗰ ꗱ ꗲ ꗳ ꗴ ꗵ ꗶ ꗷ ꗸ ꗹ ꗺ ꗻ ꗼ ꗽ ꗾ ꗿ ꘀ ꘁ ꘂ ꘃ ꘄ ꘅ ꘆ ꘇ ꘈ ꘉ ꘊ ꘋ ꘌ", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "vai-Latn": { - 0: "a á ã b ɓ c d ɗ e é ẽ ɛ ɛ́ ɛ̃ f g h i í ĩ j k l m n ŋ o ó õ ɔ ɔ́ ɔ̃ p q r s t u ú ũ v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B Ɓ C D Ɗ E Ɛ F G H I J K L M N Ŋ O Ɔ P Q R S T U V W X Y Z", - }, - "ve": { - 0: "a b d ḓ e f g h i k l ḽ m n ṅ ṋ o p r s t ṱ u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "vi": { - 0: "a à ả ã á ạ ă ằ ẳ ẵ ắ ặ â ầ ẩ ẫ ấ ậ b c d đ e è ẻ ẽ é ẹ ê ề ể ễ ế ệ f g h i ì ỉ ĩ í ị j k l m n o ò ỏ õ ó ọ ô ồ ổ ỗ ố ộ ơ ờ ở ỡ ớ ợ p q r s t u ù ủ ũ ú ụ ư ừ ử ữ ứ ự v w x y ỳ ỷ ỹ ý ỵ z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "vo": { - 0: "a ä b c d e f g h i j k l m n o ö p q r s š t u ü v x y z", - 2: "- ‐ – — , ; : ! ? . … ' ‘ ’ \" “ ” « » ( ) [ ] { } § @ * / & #", - 3: "q w", - 5: "A Ä B C D E F G H I J K L M N O Ö P R S T U Ü V X Y Z", - }, - "vun": { - 0: "a b c d e f g h i j k l m n o p r s t u v w y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "q x", - 5: "A B C D E F G H I J K L M N O P R S T U V W Y Z", - }, - "wae": { - 0: "a á ä ã b c č d e é f g h i í j k l m n o ó ö õ p q r s š t u ú ü ũ v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "à ă â å ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ô ø ō œ ß ù ŭ û ū ÿ", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "wal": { - 0: "፟ ᎐ ᎐ ᎑ ᎒ ᎓ ᎔ ᎕ ᎖ ᎗ ᎘ ᎙ ሀ ሀ ሁ ሂ ሃ ሄ ህ ሆ ሇ ለ ሉ ሊ ላ ሌ ል ሎ ሏ ⶀ ሐ ሐ ሑ ሒ ሓ ሔ ሕ ሖ ሗ መ ሙ ሚ ማ ሜ ም ሞ ሟ ᎀ ᎀ ᎁ ᎂ ᎃ ⶁ ሠ ሠ ሡ ሢ ሣ ሤ ሥ ሦ ሧ ረ ሩ ሪ ራ ሬ ር ሮ ሯ ⶂ ሰ ሰ ሱ ሲ ሳ ሴ ስ ሶ ሷ ⶃ ሸ ሸ ሹ ሺ ሻ ሼ ሽ ሾ ሿ ⶄ ቀ ቀ ቁ ቂ ቃ ቄ ቅ ቆ ቇ ቈ ቊ ቊ ቋ ቌ ቍ ቐ ቐ ቑ ቒ ቓ ቔ ቕ ቖ ቘ ቚ ቚ ቛ ቜ ቝ በ በ ቡ ቢ ባ ቤ ብ ቦ ቧ ᎄ ᎄ ᎅ ᎆ ᎇ ⶅ ቨ ቨ ቩ ቪ ቫ ቬ ቭ ቮ ቯ ተ ቱ ቲ ታ ቴ ት ቶ ቷ ⶆ ቸ ቸ ቹ ቺ ቻ ቼ ች ቾ ቿ ⶇ ኀ ኀ ኁ ኂ ኃ ኄ ኅ ኆ ኇ ኈ ኊ ኊ ኋ ኌ ኍ ነ ነ ኑ ኒ ና ኔ ን ኖ ኗ ⶈ ኘ ኘ ኙ ኚ ኛ ኜ ኝ ኞ ኟ ⶉ አ አ ኡ ኢ ኣ ኤ እ ኦ ኧ ⶊ ከ ከ ኩ ኪ ካ ኬ ክ ኮ ኯ ኰ ኲ ኲ ኳ ኴ ኵ ኸ ኸ ኹ ኺ ኻ ኼ ኽ ኾ ዀ ዂ ዂ ዃ ዄ ዅ ወ ወ ዉ ዊ ዋ ዌ ው ዎ ዏ ዐ ዑ ዒ ዓ ዔ ዕ ዖ ዘ ዘ ዙ ዚ ዛ ዜ ዝ ዞ ዟ ⶋ ዠ ዠ ዡ ዢ ዣ ዤ ዥ ዦ ዧ የ ዩ ዪ ያ ዬ ይ ዮ ዯ ደ ዱ ዲ ዳ ዴ ድ ዶ ዷ ⶌ ዸ ዸ ዹ ዺ ዻ ዼ ዽ ዾ ዿ ⶍ ጀ ጀ ጁ ጂ ጃ ጄ ጅ ጆ ጇ ⶎ ገ ገ ጉ ጊ ጋ ጌ ግ ጎ ጏ ጐ ጒ ጒ ጓ ጔ ጕ ጘ ጘ ጙ ጚ ጛ ጜ ጝ ጞ ጟ ⶓ ⶓ ⶔ ⶕ ⶖ ጠ ጠ ጡ ጢ ጣ ጤ ጥ ጦ ጧ ⶏ ጨ ጨ ጩ ጪ ጫ ጬ ጭ ጮ ጯ ⶐ ጰ ጰ ጱ ጲ ጳ ጴ ጵ ጶ ጷ ⶑ ጸ ጸ ጹ ጺ ጻ ጼ ጽ ጾ ጿ ፀ ፁ ፂ ፃ ፄ ፅ ፆ ፇ ፈ ፉ ፊ ፋ ፌ ፍ ፎ ፏ ᎈ ᎈ ᎉ ᎊ ᎋ ፐ ፐ ፑ ፒ ፓ ፔ ፕ ፖ ፗ ᎌ ᎌ ᎍ ᎎ ᎏ ⶒ ፘ ፘ ፙ ፚ ⶠ ⶠ ⶡ ⶢ ⶣ ⶤ ⶥ ⶦ ⶨ ⶨ ⶩ ⶪ ⶫ ⶬ ⶭ ⶮ ⶰ ⶰ ⶱ ⶲ ⶳ ⶴ ⶵ ⶶ ⶸ ⶸ ⶹ ⶺ ⶻ ⶼ ⶽ ⶾ ⷀ ⷀ ⷁ ⷂ ⷃ ⷄ ⷅ ⷆ ⷈ ⷈ ⷉ ⷊ ⷋ ⷌ ⷍ ⷎ ⷐ ⷐ ⷑ ⷒ ⷓ ⷔ ⷕ ⷖ ⷘ ⷘ ⷙ ⷚ ⷛ ⷜ ⷝ ⷞ", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "xh": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - }, - "xog": { - 0: "a b c d e f g h i j k l m n o p q r s t u v w x y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "yav": { - 0: "a á à â ǎ ā b c d e é è ɛ ɛ́ ɛ̀ f h i í ì î ī k l m mb n ny ŋ ŋg o ó ò ô ǒ ō ɔ ɔ́ ɔ̀ p s t u ú ù û ǔ ū v w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "g j q r x z", - 5: "A B C D E Ɛ F H I K L M N Ŋ O Ɔ P S T U V W Y", - }, - "yo": { - 0: "a á à b d e é è ẹ ẹ́ ẹ̀ f g gb h i í ì j k l m n o ó ò ọ ọ́ ọ̀ p r s ṣ t u ú ù w y", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "c q v x z", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "zh": { - 0: "一 丁 七 万 万 丈 三 上 下 丌 不 与 丑 专 且 世 丘 丘 丙 业 东 丝 丢 两 严 丧 个 中 丰 串 临 丸 丸 丹 为 主 丽 举 乃 久 么 义 之 之 乌 乍 乎 乏 乐 乔 乖 乘 乙 九 也 也 习 乡 书 买 乱 乾 了 予 争 事 二 于 亏 云 互 五 井 亚 些 亡 交 交 亥 亦 产 亨 享 京 亮 亲 人 亿 亿 什 仁 仅 仇 今 介 仍 从 仔 他 付 仙 代 代 令 以 仪 们 仰 仲 件 价 任 份 仿 企 伊 伍 伏 伏 伐 休 众 众 优 伙 会 伟 传 伤 伦 伯 估 伴 伸 似 伽 但 位 位 低 住 佐 佑 体 何 余 佛 作 你 佤 佩 佳 使 例 供 依 侠 侦 侦 侧 侨 侬 侯 侵 便 促 俄 俊 俗 保 信 俩 修 俱 俾 倍 倒 候 倚 借 倦 值 倾 假 偌 偏 做 停 健 偶 偷 储 催 傲 傻 像 僧 儒 儿 允 元 元 兄 充 先 光 克 免 兑 兔 党 入 全 八 八 公 六 兮 兰 共 关 关 兴 兵 其 具 典 兹 养 养 兼 兽 内 冈 册 再 冒 写 军 农 冠 冬 冰 冲 决 况 冷 准 凌 减 凝 几 凡 凤 凭 凯 凰 出 击 函 刀 分 切 刊 刑 划 列 列 刘 则 刚 创 初 判 利 别 到 制 制 刷 券 刺 刻 剂 前 剑 剧 剩 剪 副 割 力 劝 劝 办 功 加 务 劣 动 动 助 努 劫 励 励 劲 劳 势 勇 勉 勋 勒 勤 勾 勿 包 匆 匈 化 北 匙 匹 匹 区 医 十 千 升 午 半 华 协 卒 卓 单 单 卖 南 博 占 占 卡 卢 卫 卯 卯 印 危 即 却 卷 厂 厄 厄 厅 历 厉 压 压 厌 厍 厚 原 去 县 参 又 又 叉 及 友 双 反 发 叔 取 取 受 变 叙 口 口 古 句 另 只 只 叫 召 叭 可 台 史 右 叶 叶 号 司 叹 吃 各 合 合 吉 吊 同 同 名 后 吐 向 吓 吗 君 吝 吟 否 吧 含 听 启 吵 吸 吹 吻 吾 呀 呆 呈 告 呐 员 呜 呢 呦 周 味 呵 呼 命 和 咖 咦 咦 咧 咨 咪 咬 咯 咱 哀 品 哇 哇 哈 哉 响 哎 哟 哥 哦 哩 哪 哭 哲 唉 唐 唤 唬 售 唯 唱 唷 商 啊 啡 啥 啦 啪 喀 喂 善 喇 喊 喏 喔 喜 喝 喵 喷 喻 嗒 嗨 嗯 嘉 嘛 嘴 嘻 嘿 器 四 回 因 团 园 困 围 固 国 图 圆 圈 土 圣 在 圭 地 圳 场 圾 址 均 坎 坐 坑 块 坚 坚 坛 坜 坡 坤 坦 坪 垂 垃 型 垒 埃 埋 城 埔 域 培 基 堂 堆 堕 堡 堪 塑 塔 塞 填 境 增 墨 壁 壤 士 壬 壮 声 处 备 复 夏 夕 外 多 夜 够 夥 大 天 天 太 夫 央 失 头 夷 夷 夸 夹 夺 奇 奇 奈 奉 奋 奏 契 奔 奖 套 奥 女 奴 奶 她 好 如 妇 妈 妖 妙 妥 妨 妮 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娄 娘 娜 娟 娱 婆 婚 媒 嫁 嫌 嫩 子 孔 孕 字 字 存 孙 孜 孝 孟 季 孤 学 孩 宁 它 宇 宇 守 安 宋 完 宏 宗 宗 官 宙 定 宛 宜 宝 实 审 审 客 宣 室 宪 害 宴 家 容 宽 宽 宾 宿 寂 寄 寄 寅 密 寇 富 寒 寝 寝 寞 察 寡 寨 寸 对 寻 导 寿 封 射 将 尊 小 少 尔 尖 尘 尚 尝 尤 就 尺 尼 尼 尽 尾 局 局 屁 层 居 屋 屏 展 属 屠 山 岁 岂 岗 岘 岚 岛 岳 岸 峡 峰 崇 崩 崴 川 州 巡 工 工 左 巧 巨 巫 差 己 己 已 巳 巴 巷 币 币 市 布 帅 师 希 帐 帕 帖 帝 带 席 帮 常 帽 幅 幕 干 干 平 年 并 幸 幻 幻 幼 幽 广 庆 床 序 库 库 应 底 店 庙 庚 府 庞 废 度 座 庭 康 庸 廉 廖 延 廷 建 开 异 异 弃 弄 弊 式 引 弗 弘 弟 张 弥 弦 弯 弱 弹 强 归 当 录 彝 形 彩 彬 彭 彰 影 彷 役 彻 彼 往 征 径 待 很 律 後 徐 徒 得 循 微 徵 德 心 必 忆 忌 忍 志 志 忘 忙 忠 忧 快 念 忽 怀 态 怎 怒 怕 怖 思 怡 急 性 怨 怪 总 恋 恐 恢 恨 恩 恭 息 恰 恶 恼 悄 悉 悔 悟 悠 患 您 悲 情 惑 惜 惠 惧 惨 惯 想 惹 愁 愈 愉 意 愚 感 愧 慈 慎 慕 慢 慧 慰 憾 懂 懒 戈 戊 戌 戏 戏 成 我 戒 或 战 截 戴 户 房 房 所 扁 扇 手 才 扎 扑 打 托 扣 执 扩 扫 扫 扬 扭 扮 扯 批 找 找 承 技 抄 把 抑 抓 投 抗 折 抢 护 报 披 抬 抱 抵 抹 抽 担 拆 拉 拍 拒 拔 拖 拘 招 拜 拟 拥 拦 拨 择 括 拳 拷 拼 拾 拿 持 指 按 挑 挖 挝 挡 挤 挥 挪 振 挺 捉 捐 捕 损 捡 换 据 捷 授 掉 掌 排 探 接 控 控 推 掩 措 掸 描 提 插 握 援 搜 搞 搬 搭 摄 摆 摊 摔 摘 摩 摸 撒 撞 播 操 擎 擦 支 收 改 攻 放 政 故 效 敌 敏 救 教 敝 敢 散 敦 敬 数 敲 整 文 斋 斐 斗 料 斜 斥 断 斯 新 方 於 施 旁 旅 旋 族 旗 无 既 日 日 旦 旧 旨 早 旭 时 旺 昂 昆 昌 明 昏 易 星 映 春 昨 昭 是 显 晃 晋 晒 晓 晚 晨 普 景 晴 晶 智 暂 暑 暖 暗 暮 暴 曰 曲 更 曹 曼 曾 曾 替 最 月 有 朋 服 朗 望 朝 期 木 未 未 末 本 札 术 朱 朵 机 杀 杂 权 杉 李 材 村 杜 束 条 来 杨 杯 杰 松 板 极 构 析 林 果 枝 枢 枪 枫 架 柏 某 染 柔 查 柬 柯 柳 柴 标 栋 栏 树 校 样 样 核 根 格 桃 框 案 桌 桑 档 桥 梁 梅 梦 梯 械 梵 检 棉 棋 棒 棚 森 椅 植 椰 楚 楼 概 榜 模 樱 檀 欠 欠 次 欢 欣 欧 欲 欺 款 歉 歌 止 止 正 此 步 武 歪 死 殊 残 段 毅 母 每 毒 比 毕 毛 毫 氏 民 气 氛 水 永 求 汇 汉 汗 汝 江 江 池 污 汤 汪 汶 汽 沃 沈 沉 沙 沟 没 沧 河 油 治 沿 泉 泊 法 泛 泡 泡 波 泣 泥 注 泰 泳 泽 洋 洗 洛 洞 津 洪 洲 活 洽 派 流 浅 测 济 浏 浑 浓 浙 浦 浩 浪 浮 浴 海 涅 消 涉 涛 涨 涯 液 涵 淋 淑 淘 淡 深 混 添 清 渐 渡 渣 温 港 渴 游 湖 湾 源 溜 溪 滋 滑 满 滥 滨 滴 漂 漏 演 漠 漫 潘 潜 潮 澎 澳 激 灌 火 灭 灯 灰 灵 灿 炉 炎 炮 炸 点 烂 烈 烤 烦 烧 热 焦 然 煌 煞 照 煮 熊 熟 燃 燕 爆 爪 爬 爱 爵 爵 父 爷 爸 爽 片 版 牌 牙 牛 牡 牢 牧 物 牲 牵 特 牺 犯 状 犹 狂 狐 狗 狠 独 狮 狱 狼 猛 猜 猪 献 猴 玄 率 玉 王 玛 玩 玫 环 现 玲 玻 珀 珊 珍 珠 班 球 理 琊 琪 琳 琴 琼 瑙 瑜 瑞 瑟 瑰 瑶 璃 瓜 瓦 瓶 甘 甚 甜 生 用 田 田 由 甲 申 电 男 甸 画 畅 界 留 略 番 疆 疏 疑 疗 疯 疲 疼 疾 病 痕 痛 痴 癸 登 白 百 的 皆 皇 皮 盈 益 监 盒 盖 盘 盛 盟 目 直 相 盼 盾 省 眉 看 真 眠 眼 着 睛 睡 督 瞧 矛 矣 知 短 石 矶 码 砂 砍 研 破 础 硕 硬 确 碍 碎 碗 碟 碧 碰 磁 磅 磨 示 礼 社 祖 祚 祝 神 祥 票 祯 祸 禁 禅 福 离 秀 私 秋 种 科 秒 秘 租 秤 秦 秩 积 称 移 稀 程 稍 税 稣 稳 稿 穆 究 穷 穹 空 穿 突 窗 窝 立 站 竞 竞 竟 章 童 端 竹 笑 笔 笛 符 笨 第 等 筋 筑 答 策 筹 签 简 算 管 箭 箱 篇 篮 簿 籍 米 类 粉 粒 粗 粤 粹 精 糊 糕 糖 糟 系 素 索 紧 紫 累 繁 红 约 级 纪 纯 纲 纳 纵 纷 纸 纽 线 练 组 细 细 织 终 绍 经 结 绕 绘 给 络 绝 统 继 绩 绪 续 维 绵 综 绿 缅 缓 编 缘 缠 缩 缴 缶 缸 缺 罐 网 罕 罗 罚 罢 罪 置 署 羊 美 羞 群 羯 羽 翁 翅 翔 翘 翠 翰 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 职 联 聘 聚 聪 肉 肖 肚 股 肤 肥 肩 肯 育 胁 胆 背 胎 胖 胜 胞 胡 胶 胸 能 脆 脑 脱 脸 腊 腐 腓 腰 腹 腾 腿 臂 臣 自 臭 至 致 舌 舍 舒 舞 舟 航 般 舰 船 良 色 艺 艾 节 芒 芝 芦 芬 芭 花 芳 苍 苏 苗 若 苦 英 茂 范 茨 茫 茶 草 荐 荒 荣 药 荷 莉 莎 莪 莫 莱 莲 获 菜 菩 菲 萄 萍 萤 营 萧 萨 落 著 葛 葡 蒂 蒋 蒙 蓉 蓝 蓬 蔑 蔡 薄 薪 藉 藏 藤 虎 虑 虫 虹 虽 虾 蚁 蛇 蛋 蛙 蛮 蜂 蜜 蝶 融 蟹 蠢 血 行 街 衡 衣 补 表 袋 被 袭 裁 裂 装 裕 裤 西 要 覆 见 观 规 视 览 觉 角 解 言 誉 誓 警 计 订 认 讨 让 训 训 议 讯 记 讲 讷 许 论 设 访 证 评 识 诉 词 译 试 诗 诚 话 诞 询 该 详 语 误 说 请 诸 诺 读 课 谁 调 谅 谈 谊 谋 谓 谜 谢 谨 谱 谷 豆 象 豪 貌 贝 贝 贞 负 贡 贡 财 责 贤 败 货 货 质 贩 贪 购 贯 贱 贴 贵 贸 贸 费 贺 贼 贾 资 赋 赌 赏 赐 赔 赖 赚 赛 赞 赠 赢 赤 赫 走 赵 起 趁 超 越 趋 趣 足 跃 跌 跑 距 跟 路 跳 踏 踢 踩 身 躲 车 轨 轩 转 轮 轮 软 轰 轻 载 较 辅 辆 辈 辉 辑 输 辛 辞 辨 辩 辰 辱 边 达 迁 迅 过 迈 迎 运 近 返 还 这 进 进 远 违 连 迟 迦 迪 迫 述 迷 追 退 退 送 适 逃 逆 选 逊 透 逐 递 途 通 逛 逝 速 造 逢 逸 逻 逼 遇 遍 道 遗 遭 遮 遵 避 邀 邓 那 邦 邪 邮 邱 邻 郎 郑 部 郭 都 鄂 酉 酋 配 酒 酷 酸 醉 醒 采 释 里 里 重 野 量 金 针 钓 钟 钢 钦 钱 钻 铁 铃 铜 铢 铭 银 铺 链 销 锁 锅 锋 错 锡 锦 键 锺 镇 镜 镭 长 门 闪 闭 问 闰 闲 间 闷 闹 闻 阁 阅 阐 阔 队 阮 防 防 阳 阴 阵 阶 阻 阿 陀 附 附 际 陆 陈 降 限 院 除 险 陪 陵 陵 陶 陷 隆 随 隐 隔 障 难 雄 雄 雅 集 雉 雨 雪 雯 雳 零 雷 雾 需 震 霍 霖 露 霸 霹 青 靖 静 非 靠 面 革 靼 鞋 鞑 韦 韩 音 页 顶 项 项 顺 须 顽 顽 顾 顿 预 领 颇 频 颗 题 额 风 飘 飙 飞 食 餐 饭 饮 饰 饱 饼 馆 首 香 馨 马 驱 驶 驻 驾 验 骑 骗 骚 骤 骨 高 鬼 魂 魅 魔 鱼 鲁 鲜 鸟 鸡 鸣 鸭 鸿 鹅 鹤 鹰 鹿 麦 麻 黄 黎 黑 默 鼓 鼠 鼻 齐 齿 龄 龙 龟", - 2: "﹉ ﹉ ﹊ ﹋ ﹌ _ _ ﹍ ﹍ ﹎ ﹏ ︳ ︴ - - ﹣ ‐ – — ︱ ― , , ﹐ 、 ﹑ ; ; ﹔ : : ﹕ ! ! ﹗ ? ? ﹖ . . ﹒ ‥ ︰ … 。 · ' ‘ ’ \" " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ [ [ ] ] { { ﹛ ︷ } } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ 〖 〗 ‖ § @ @ ﹫ * * ﹡ / / \\ \ ﹨ & & ﹠ # # ﹟ % % ﹪ ‰ ′ ″ ‵ 〃 ※", - 3: "侣 傣 卑 厘 吕 堤 奎 巽 撤 楔 楠 滕 瑚 甫 盲 禄 粟 脚 钯 铂 锑 镑 魁", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "zh-Hans-MO": { - 0: "一 丁 七 万 万 丈 三 上 下 丌 不 与 丑 专 且 世 丘 丘 丙 业 东 丝 丢 两 严 丧 个 中 丰 串 临 丸 丸 丹 为 主 丽 举 乃 久 么 义 之 之 乌 乍 乎 乏 乐 乔 乖 乘 乙 九 也 也 习 乡 书 买 乱 乾 了 予 争 事 二 于 亏 云 互 五 井 亚 些 亡 交 交 亥 亦 产 亨 享 京 亮 亲 人 亿 亿 什 仁 仅 仇 今 介 仍 从 仔 他 付 仙 代 代 令 以 仪 们 仰 仲 件 价 任 份 仿 企 伊 伍 伏 伏 伐 休 众 众 优 伙 会 伟 传 伤 伦 伯 估 伴 伸 似 伽 但 位 位 低 住 佐 佑 体 何 余 佛 作 你 佤 佩 佳 使 例 供 依 侠 侦 侦 侧 侨 侬 侯 侵 便 促 俄 俊 俗 保 信 俩 修 俱 俾 倍 倒 候 倚 借 倦 值 倾 假 偌 偏 做 停 健 偶 偷 储 催 傲 傻 像 僧 儒 儿 允 元 元 兄 充 先 光 克 免 兑 兔 党 入 全 八 八 公 六 兮 兰 共 关 关 兴 兵 其 具 典 兹 养 养 兼 兽 内 冈 册 再 冒 写 军 农 冠 冬 冰 冲 决 况 冷 准 凌 减 凝 几 凡 凤 凭 凯 凰 出 击 函 刀 分 切 刊 刑 划 列 列 刘 则 刚 创 初 判 利 别 到 制 制 刷 券 刺 刻 剂 前 剑 剧 剩 剪 副 割 力 劝 劝 办 功 加 务 劣 动 动 助 努 劫 励 励 劲 劳 势 勇 勉 勋 勒 勤 勾 勿 包 匆 匈 化 北 匙 匹 匹 区 医 十 千 升 午 半 华 协 卒 卓 单 单 卖 南 博 占 占 卡 卢 卫 卯 卯 印 危 即 却 卷 厂 厄 厄 厅 历 厉 压 压 厌 厍 厚 原 去 县 参 又 又 叉 及 友 双 反 发 叔 取 取 受 变 叙 口 口 古 句 另 只 只 叫 召 叭 可 台 史 右 叶 叶 号 司 叹 吃 各 合 合 吉 吊 同 同 名 后 吐 向 吓 吗 君 吝 吟 否 吧 含 听 启 吵 吸 吹 吻 吾 呀 呆 呈 告 呐 员 呜 呢 呦 周 味 呵 呼 命 和 咖 咦 咦 咧 咨 咪 咬 咯 咱 哀 品 哇 哇 哈 哉 响 哎 哟 哥 哦 哩 哪 哭 哲 唉 唐 唤 唬 售 唯 唱 唷 商 啊 啡 啥 啦 啪 喀 喂 善 喇 喊 喏 喔 喜 喝 喵 喷 喻 嗒 嗨 嗯 嘉 嘛 嘴 嘻 嘿 器 四 回 因 团 园 困 围 固 国 图 圆 圈 土 圣 在 圭 地 圳 场 圾 址 均 坎 坐 坑 块 坚 坚 坛 坜 坡 坤 坦 坪 垂 垃 型 垒 埃 埋 城 埔 域 培 基 堂 堆 堕 堡 堪 塑 塔 塞 填 境 增 墨 壁 壤 士 壬 壮 声 处 备 复 夏 夕 外 多 夜 够 夥 大 天 天 太 夫 央 失 头 夷 夷 夸 夹 夺 奇 奇 奈 奉 奋 奏 契 奔 奖 套 奥 女 奴 奶 她 好 如 妇 妈 妖 妙 妥 妨 妮 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娄 娘 娜 娟 娱 婆 婚 媒 嫁 嫌 嫩 子 孔 孕 字 字 存 孙 孜 孝 孟 季 孤 学 孩 宁 它 宇 宇 守 安 宋 完 宏 宗 宗 官 宙 定 宛 宜 宝 实 审 审 客 宣 室 宪 害 宴 家 容 宽 宽 宾 宿 寂 寄 寄 寅 密 寇 富 寒 寝 寝 寞 察 寡 寨 寸 对 寻 导 寿 封 射 将 尊 小 少 尔 尖 尘 尚 尝 尤 就 尺 尼 尼 尽 尾 局 局 屁 层 居 屋 屏 展 属 屠 山 岁 岂 岗 岘 岚 岛 岳 岸 峡 峰 崇 崩 崴 川 州 巡 工 工 左 巧 巨 巫 差 己 己 已 巳 巴 巷 币 币 市 布 帅 师 希 帐 帕 帖 帝 带 席 帮 常 帽 幅 幕 干 干 平 年 并 幸 幻 幻 幼 幽 广 庆 床 序 库 库 应 底 店 庙 庚 府 庞 废 度 座 庭 康 庸 廉 廖 延 廷 建 开 异 异 弃 弄 弊 式 引 弗 弘 弟 张 弥 弦 弯 弱 弹 强 归 当 录 彝 形 彩 彬 彭 彰 影 彷 役 彻 彼 往 征 径 待 很 律 後 徐 徒 得 循 微 徵 德 心 必 忆 忌 忍 志 志 忘 忙 忠 忧 快 念 忽 怀 态 怎 怒 怕 怖 思 怡 急 性 怨 怪 总 恋 恐 恢 恨 恩 恭 息 恰 恶 恼 悄 悉 悔 悟 悠 患 您 悲 情 惑 惜 惠 惧 惨 惯 想 惹 愁 愈 愉 意 愚 感 愧 慈 慎 慕 慢 慧 慰 憾 懂 懒 戈 戊 戌 戏 戏 成 我 戒 或 战 截 戴 户 房 房 所 扁 扇 手 才 扎 扑 打 托 扣 执 扩 扫 扫 扬 扭 扮 扯 批 找 找 承 技 抄 把 抑 抓 投 抗 折 抢 护 报 披 抬 抱 抵 抹 抽 担 拆 拉 拍 拒 拔 拖 拘 招 拜 拟 拥 拦 拨 择 括 拳 拷 拼 拾 拿 持 指 按 挑 挖 挝 挡 挤 挥 挪 振 挺 捉 捐 捕 损 捡 换 据 捷 授 掉 掌 排 探 接 控 控 推 掩 措 掸 描 提 插 握 援 搜 搞 搬 搭 摄 摆 摊 摔 摘 摩 摸 撒 撞 播 操 擎 擦 支 收 改 攻 放 政 故 效 敌 敏 救 教 敝 敢 散 敦 敬 数 敲 整 文 斋 斐 斗 料 斜 斥 断 斯 新 方 於 施 旁 旅 旋 族 旗 无 既 日 日 旦 旧 旨 早 旭 时 旺 昂 昆 昌 明 昏 易 星 映 春 昨 昭 是 显 晃 晋 晒 晓 晚 晨 普 景 晴 晶 智 暂 暑 暖 暗 暮 暴 曰 曲 更 曹 曼 曾 曾 替 最 月 有 朋 服 朗 望 朝 期 木 未 未 末 本 札 术 朱 朵 机 杀 杂 权 杉 李 材 村 杜 束 条 来 杨 杯 杰 松 板 极 构 析 林 果 枝 枢 枪 枫 架 柏 某 染 柔 查 柬 柯 柳 柴 标 栋 栏 树 校 样 样 核 根 格 桃 框 案 桌 桑 档 桥 梁 梅 梦 梯 械 梵 检 棉 棋 棒 棚 森 椅 植 椰 楚 楼 概 榜 模 樱 檀 欠 欠 次 欢 欣 欧 欲 欺 款 歉 歌 止 止 正 此 步 武 歪 死 殊 残 段 毅 母 每 毒 比 毕 毛 毫 氏 民 气 氛 水 永 求 汇 汉 汗 汝 江 江 池 污 汤 汪 汶 汽 沃 沈 沉 沙 沟 没 沧 河 油 治 沿 泉 泊 法 泛 泡 泡 波 泣 泥 注 泰 泳 泽 洋 洗 洛 洞 津 洪 洲 活 洽 派 流 浅 测 济 浏 浑 浓 浙 浦 浩 浪 浮 浴 海 涅 消 涉 涛 涨 涯 液 涵 淋 淑 淘 淡 深 混 添 清 渐 渡 渣 温 港 渴 游 湖 湾 源 溜 溪 滋 滑 满 滥 滨 滴 漂 漏 演 漠 漫 潘 潜 潮 澎 澳 激 灌 火 灭 灯 灰 灵 灿 炉 炎 炮 炸 点 烂 烈 烤 烦 烧 热 焦 然 煌 煞 照 煮 熊 熟 燃 燕 爆 爪 爬 爱 爵 爵 父 爷 爸 爽 片 版 牌 牙 牛 牡 牢 牧 物 牲 牵 特 牺 犯 状 犹 狂 狐 狗 狠 独 狮 狱 狼 猛 猜 猪 献 猴 玄 率 玉 王 玛 玩 玫 环 现 玲 玻 珀 珊 珍 珠 班 球 理 琊 琪 琳 琴 琼 瑙 瑜 瑞 瑟 瑰 瑶 璃 瓜 瓦 瓶 甘 甚 甜 生 用 田 田 由 甲 申 电 男 甸 画 畅 界 留 略 番 疆 疏 疑 疗 疯 疲 疼 疾 病 痕 痛 痴 癸 登 白 百 的 皆 皇 皮 盈 益 监 盒 盖 盘 盛 盟 目 直 相 盼 盾 省 眉 看 真 眠 眼 着 睛 睡 督 瞧 矛 矣 知 短 石 矶 码 砂 砍 研 破 础 硕 硬 确 碍 碎 碗 碟 碧 碰 磁 磅 磨 示 礼 社 祖 祚 祝 神 祥 票 祯 祸 禁 禅 福 离 秀 私 秋 种 科 秒 秘 租 秤 秦 秩 积 称 移 稀 程 稍 税 稣 稳 稿 穆 究 穷 穹 空 穿 突 窗 窝 立 站 竞 竞 竟 章 童 端 竹 笑 笔 笛 符 笨 第 等 筋 筑 答 策 筹 签 简 算 管 箭 箱 篇 篮 簿 籍 米 类 粉 粒 粗 粤 粹 精 糊 糕 糖 糟 系 素 索 紧 紫 累 繁 红 约 级 纪 纯 纲 纳 纵 纷 纸 纽 线 练 组 细 细 织 终 绍 经 结 绕 绘 给 络 绝 统 继 绩 绪 续 维 绵 综 绿 缅 缓 编 缘 缠 缩 缴 缶 缸 缺 罐 网 罕 罗 罚 罢 罪 置 署 羊 美 羞 群 羯 羽 翁 翅 翔 翘 翠 翰 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 职 联 聘 聚 聪 肉 肖 肚 股 肤 肥 肩 肯 育 胁 胆 背 胎 胖 胜 胞 胡 胶 胸 能 脆 脑 脱 脸 腊 腐 腓 腰 腹 腾 腿 臂 臣 自 臭 至 致 舌 舍 舒 舞 舟 航 般 舰 船 良 色 艺 艾 节 芒 芝 芦 芬 芭 花 芳 苍 苏 苗 若 苦 英 茂 范 茨 茫 茶 草 荐 荒 荣 药 荷 莉 莎 莪 莫 莱 莲 获 菜 菩 菲 萄 萍 萤 营 萧 萨 落 著 葛 葡 蒂 蒋 蒙 蓉 蓝 蓬 蔑 蔡 薄 薪 藉 藏 藤 虎 虑 虫 虹 虽 虾 蚁 蛇 蛋 蛙 蛮 蜂 蜜 蝶 融 蟹 蠢 血 行 街 衡 衣 补 表 袋 被 袭 裁 裂 装 裕 裤 西 要 覆 见 观 规 视 览 觉 角 解 言 誉 誓 警 计 订 认 讨 让 训 训 议 讯 记 讲 讷 许 论 设 访 证 评 识 诉 词 译 试 诗 诚 话 诞 询 该 详 语 误 说 请 诸 诺 读 课 谁 调 谅 谈 谊 谋 谓 谜 谢 谨 谱 谷 豆 象 豪 貌 贝 贝 贞 负 贡 贡 财 责 贤 败 货 货 质 贩 贪 购 贯 贱 贴 贵 贸 贸 费 贺 贼 贾 资 赋 赌 赏 赐 赔 赖 赚 赛 赞 赠 赢 赤 赫 走 赵 起 趁 超 越 趋 趣 足 跃 跌 跑 距 跟 路 跳 踏 踢 踩 身 躲 车 轨 轩 转 轮 轮 软 轰 轻 载 较 辅 辆 辈 辉 辑 输 辛 辞 辨 辩 辰 辱 边 达 迁 迅 过 迈 迎 运 近 返 还 这 进 进 远 违 连 迟 迦 迪 迫 述 迷 追 退 退 送 适 逃 逆 选 逊 透 逐 递 途 通 逛 逝 速 造 逢 逸 逻 逼 遇 遍 道 遗 遭 遮 遵 避 邀 邓 那 邦 邪 邮 邱 邻 郎 郑 部 郭 都 鄂 酉 酋 配 酒 酷 酸 醉 醒 采 释 里 里 重 野 量 金 针 钓 钟 钢 钦 钱 钻 铁 铃 铜 铢 铭 银 铺 链 销 锁 锅 锋 错 锡 锦 键 锺 镇 镜 镭 长 门 闪 闭 问 闰 闲 间 闷 闹 闻 阁 阅 阐 阔 队 阮 防 防 阳 阴 阵 阶 阻 阿 陀 附 附 际 陆 陈 降 限 院 除 险 陪 陵 陵 陶 陷 隆 随 隐 隔 障 难 雄 雄 雅 集 雉 雨 雪 雯 雳 零 雷 雾 需 震 霍 霖 露 霸 霹 青 靖 静 非 靠 面 革 靼 鞋 鞑 韦 韩 音 页 顶 项 项 顺 须 顽 顽 顾 顿 预 领 颇 频 颗 题 额 风 飘 飙 飞 食 餐 饭 饮 饰 饱 饼 馆 首 香 馨 马 驱 驶 驻 驾 验 骑 骗 骚 骤 骨 高 鬼 魂 魅 魔 鱼 鲁 鲜 鸟 鸡 鸣 鸭 鸿 鹅 鹤 鹰 鹿 麦 麻 黄 黎 黑 默 鼓 鼠 鼻 齐 齿 龄 龙 龟", - 3: "侣 傣 卑 厘 吕 堤 奎 巽 撤 楔 楠 滕 瑚 甫 盲 禄 粟 脚 钯 铂 锑 镑 魁", - 5: "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", - }, - "zh-Hant": { - 0: "一 丁 七 丈 丈 三 上 下 丌 不 丑 且 世 丘 丙 丟 並 中 串 丸 丹 主 乃 久 么 之 乎 乏 乖 乘 乙 九 也 乾 亂 了 予 事 二 于 云 互 五 井 些 亞 亡 交 交 亥 亦 亨 享 京 亮 人 什 仁 仇 今 介 仍 仔 他 付 仙 代 代 令 以 仰 仲 件 任 份 企 伊 伍 伐 休 伙 伯 估 伴 伸 似 伽 但 佈 佉 位 位 低 住 佔 何 余 佛 作 你 佩 佳 使 來 例 供 依 侯 侵 便 係 係 促 俄 俊 俗 保 俠 信 修 俱 俾 個 倍 們 倒 候 倚 借 倫 值 假 偉 偏 做 停 健 側 側 偵 偶 偷 傑 備 傢 傣 傲 傳 傷 傻 傾 僅 像 僑 僧 價 儀 億 儒 儘 優 允 元 元 兄 充 兇 兇 先 光 克 免 兒 兔 入 內 內 全 兩 八 八 公 六 兮 共 兵 兵 其 具 典 兼 冊 再 冒 冠 冬 冰 冷 准 凌 凝 凡 凰 凱 出 函 刀 分 切 刊 列 初 判 別 利 刪 到 制 刷 刺 刻 則 剌 前 剛 剩 剪 副 割 創 劃 劇 劉 劍 力 功 加 助 助 努 劫 勁 勇 勉 勒 動 務 勝 勞 勢 勤 勵 勸 勿 包 匈 化 北 匹 區 十 千 升 午 半 卒 卒 卓 協 南 博 卜 卡 卯 卯 印 危 即 卷 卻 厄 厘 厚 原 厭 厲 去 參 又 及 友 反 叔 取 受 口 口 古 句 另 只 只 叫 召 叭 可 台 史 右 司 吃 各 合 合 吉 吊 同 同 名 后 吐 吐 向 吒 君 吝 吝 吞 吟 吠 否 吧 含 吳 吵 吸 吹 吾 呀 呂 呆 告 呢 周 味 呵 呼 命 和 咖 咦 咧 咪 咬 咱 哀 品 哇 哇 哈 哉 哎 員 哥 哦 哩 哪 哭 哲 唉 唐 唔 唬 售 唯 唱 唷 唸 商 啊 問 啟 啡 啥 啦 啪 喀 喂 善 喇 喊 喔 喜 喝 喬 單 喵 嗎 嗚 嗨 嗯 嘆 嘉 嘗 嘛 嘴 嘻 嘿 器 噴 嚇 嚴 囉 四 回 因 困 固 圈 國 圍 園 圓 圖 團 圜 土 在 圭 地 圾 址 均 坎 坐 坡 坤 坦 坪 垂 垃 型 埃 城 埔 域 執 培 基 堂 堅 堆 堡 堪 報 場 塊 塔 塗 塞 填 塵 境 增 墨 墮 壁 壇 壓 壘 壞 壢 士 壬 壯 壽 夏 夕 外 多 夜 夠 夢 夥 大 天 天 太 夫 央 失 夷 夸 夾 奇 奇 奈 奉 奎 奏 契 奔 套 奧 奪 奮 女 奴 奶 她 好 如 妙 妝 妥 妨 妮 妳 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娘 娛 婁 婆 婚 婦 媒 媽 嫌 嫩 子 孔 字 存 孝 孟 季 孤 孩 孫 學 它 宅 宇 宇 守 安 宋 完 宏 宗 宗 官 宙 定 宛 宜 客 客 宣 室 宮 害 家 容 宿 寂 寄 寄 寅 密 富 寒 寞 察 寢 實 實 寧 寨 審 寫 寬 寮 寵 寶 封 射 將 專 尊 尋 對 對 導 小 少 尖 尚 尤 就 尺 尼 尾 局 屁 居 屆 屋 屏 展 屠 層 屬 山 岡 岩 岸 峰 島 峽 崇 崙 崴 嵐 嶺 川 州 巡 工 工 左 巧 巨 巫 差 己 己 已 巳 巴 巷 市 布 希 帕 帖 帛 帝 帥 師 席 帳 帶 常 帽 幅 幕 幣 幫 干 干 平 年 幸 幹 幻 幻 幼 幽 幾 庇 床 序 底 店 庚 府 度 座 庫 庭 康 庸 廉 廖 廠 廢 廣 廳 延 廷 建 弄 式 引 弗 弘 弟 弦 弱 張 強 彈 彊 彌 彎 彝 彞 形 彥 彩 彬 彭 彰 影 役 彼 往 征 待 很 律 後 徐 徐 徑 徒 得 從 復 微 徵 德 徹 心 必 忌 忍 志 志 忘 忙 忠 快 念 忽 怎 怒 怕 怖 思 怡 急 性 怨 怪 恆 恐 恢 恥 恨 恩 恭 息 恰 悅 悉 悔 悟 悠 您 悲 悶 情 惑 惜 惠 惡 惱 想 惹 愁 愈 愉 意 愚 愛 感 慈 態 慕 慘 慢 慣 慧 慮 慰 慶 慾 憂 憐 憑 憲 憶 憾 懂 應 懶 懷 懼 戀 戈 戊 戌 成 成 我 戒 或 截 戰 戲 戴 戶 房 房 所 扁 扇 手 才 扎 打 托 扣 扥 扭 扯 批 找 找 承 技 抄 把 抓 投 抗 折 披 抬 抱 抵 抹 抽 拆 拉 拋 拍 拏 拒 拔 拖 招 拜 括 拳 拼 拾 拿 持 指 按 挑 挖 挪 振 挺 捐 捕 捨 捲 捷 掃 授 掉 掌 排 掛 採 探 接 控 推 措 描 提 插 揚 換 握 揮 援 損 搖 搜 搞 搬 搭 搶 摘 摩 摸 撐 撒 撞 撣 撥 播 撾 撿 擁 擇 擊 擋 操 擎 擔 據 擠 擦 擬 擴 擺 擾 攝 支 收 改 攻 放 政 故 效 敍 敏 救 敗 敗 敘 教 敝 敢 散 敦 敬 整 敵 數 文 斐 斗 料 斯 新 斷 方 於 施 旁 旅 旋 族 旗 既 日 旦 早 旭 旺 昂 昆 昇 昌 明 昏 易 星 映 春 昨 昭 是 時 晉 晒 晚 晨 普 景 晴 晶 智 暑 暖 暗 暫 暴 曆 曉 曰 曲 更 書 曼 曾 曾 替 最 會 月 有 朋 服 朗 望 朝 期 木 未 未 末 本 札 朱 朵 杉 李 材 村 杜 束 杯 杯 杰 東 松 板 析 林 果 枝 架 柏 某 染 柔 查 柬 柯 柳 柴 校 核 根 格 桃 案 桌 桑 梁 梅 條 梨 梯 械 梵 棄 棉 棋 棒 棚 森 椅 植 椰 楊 楓 楚 業 極 概 榜 榮 構 槍 樂 樓 標 樞 模 樣 樹 橋 機 橫 檀 檔 檢 欄 權 次 欣 欲 欺 欽 款 歉 歌 歐 歡 歡 止 正 此 步 武 歲 歷 歸 死 殊 殘 段 殺 殼 毀 毅 母 每 毒 比 毛 毫 氏 民 氣 水 永 求 汗 汝 江 江 池 污 汪 汶 決 汽 沃 沈 沉 沒 沖 沙 河 油 治 沿 況 泉 泊 法 泡 波 泥 注 泰 泳 洋 洗 洛 洞 洩 洪 洲 活 洽 派 流 浦 浩 浪 浮 海 涇 涇 消 涉 涯 液 涵 涼 淑 淚 淡 淨 深 混 淺 清 減 渡 測 港 游 湖 湯 源 準 溝 溪 溫 滄 滅 滋 滑 滴 滾 滿 漂 漏 演 漠 漢 漫 漲 漸 潔 潘 潛 潮 澤 澳 激 濃 濟 濤 濫 濱 瀏 灌 灣 火 灰 災 炎 炮 炸 為 烈 烏 烤 無 焦 然 煙 煞 照 煩 熊 熟 熱 燃 燈 燒 營 爆 爐 爛 爪 爬 爭 爵 父 爸 爺 爽 爾 牆 牆 片 版 牌 牙 牛 牠 牧 物 牲 特 牽 犧 犯 狀 狂 狐 狗 狠 狼 猛 猜 猴 猶 獄 獅 獎 獨 獲 獸 獻 玄 率 玉 王 玩 玫 玲 玻 珊 珍 珠 珥 班 現 球 理 琉 琪 琴 瑙 瑜 瑞 瑟 瑤 瑪 瑰 環 瓜 瓦 瓶 甘 甚 甜 生 產 用 田 田 由 甲 申 男 甸 界 留 畢 略 番 畫 異 當 疆 疏 疑 疼 病 痕 痛 痴 瘋 療 癡 癸 登 登 發 白 百 的 皆 皇 皮 盃 益 盛 盜 盟 盡 監 盤 盧 目 盲 直 相 盼 盾 省 眉 看 真 眠 眼 眾 睛 睡 督 瞧 瞭 矛 矣 知 短 石 砂 砍 研 砲 破 硬 碎 碗 碟 碧 碩 碰 確 碼 磁 磨 磯 礎 礙 示 社 祕 祖 祚 祛 祝 神 祥 票 祿 禁 禍 禍 禎 福 禪 禮 秀 私 秋 科 秒 秘 租 秤 秦 移 稅 程 稍 種 稱 稿 穆 穌 積 穩 究 穹 空 穿 突 窗 窩 窮 窶 立 站 竟 章 童 端 競 竹 笑 笛 符 笨 第 筆 等 筋 答 策 简 算 管 箭 箱 節 範 篇 築 簡 簫 簽 簿 籃 籌 籍 籤 米 粉 粗 粵 精 糊 糕 糟 系 糾 紀 約 紅 納 紐 純 紙 紙 級 紛 素 索 紫 累 細 紹 終 組 結 絕 絡 給 統 絲 經 綜 綠 維 綱 網 緊 緒 線 緣 編 緩 緬 緯 練 縛 縣 縮 縱 總 績 繁 繆 織 繞 繪 繳 繼 續 缸 缺 罕 罪 置 罰 署 罵 罷 羅 羊 美 羞 群 義 羽 翁 習 翔 翰 翹 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 聖 聚 聞 聯 聰 聲 職 聽 肉 肚 股 肥 肩 肯 育 背 胎 胖 胞 胡 胸 能 脆 脫 腓 腔 腦 腰 腳 腿 膽 臉 臘 臣 臥 臨 自 臭 至 致 臺 與 與 興 舉 舊 舌 舍 舒 舞 舟 航 般 船 艦 良 色 艾 芝 芬 花 芳 若 苦 英 茅 茫 茲 茶 草 荒 荷 荼 莉 莊 莎 莫 菜 菩 華 菲 萄 萊 萬 落 葉 著 葛 葡 蒂 蒙 蒲 蒼 蓋 蓮 蔕 蔡 蔣 蕭 薄 薦 薩 薪 藉 藍 藏 藝 藤 藥 蘆 蘇 蘭 虎 處 虛 號 虧 蛇 蛋 蛙 蜂 蜜 蝶 融 螢 蟲 蟹 蠍 蠻 血 行 術 街 衛 衝 衡 衣 表 袋 被 裁 裂 裕 補 裝 裡 製 複 褲 西 要 覆 見 規 視 親 覺 覽 觀 角 解 觸 言 訂 計 訊 討 訓 託 記 訥 訪 設 許 訴 註 証 評 詞 詢 試 詩 話 話 該 詳 誇 誌 認 誓 誕 語 誠 誤 說 誰 課 誼 調 談 請 諒 論 諸 諺 諾 謀 謂 講 謝 證 識 譜 警 譯 議 護 譽 讀 變 讓 讚 谷 豆 豈 豐 象 豪 豬 貌 貓 貝 貞 負 負 財 貢 貨 貪 貪 貫 責 貴 買 費 貼 賀 資 賈 賓 賜 賞 賢 賢 賣 賤 賦 質 賭 賴 賺 購 賽 贈 贊 贏 赤 赫 走 起 超 越 趕 趙 趣 趨 足 跌 跎 跑 距 跟 跡 路 跳 踏 踢 蹟 蹤 躍 身 躲 車 軌 軍 軒 軟 較 載 輔 輕 輛 輝 輩 輪 輯 輸 轉 轟 辛 辦 辨 辭 辯 辯 辰 辱 農 迅 迎 近 返 迦 迪 迫 述 迴 迷 追 退 送 逃 逆 透 逐 途 這 這 通 逛 逝 速 造 逢 連 週 進 逸 逼 遇 遊 運 遍 過 道 道 達 違 遙 遜 遠 適 遭 遮 遲 遷 選 遺 避 避 邀 邁 還 邊 邏 那 邦 邪 邱 郎 部 郭 郵 都 鄂 鄉 鄭 鄰 酉 配 酒 酷 酸 醉 醒 醜 醫 采 釋 釋 里 重 野 量 金 針 釣 鈴 鉢 銀 銅 銖 銘 銳 銷 鋒 鋼 錄 錢 錦 錫 錯 鍋 鍵 鍾 鎊 鎖 鎮 鏡 鐘 鐵 鑑 長 門 閃 閉 開 閏 閒 間 閣 閱 闆 闊 闍 闐 關 闡 防 阻 阿 陀 附 降 限 院 院 陣 除 陪 陰 陳 陵 陵 陶 陷 陸 陽 隆 隊 階 隔 際 障 隨 險 隱 隻 雄 雄 雅 集 雉 雖 雙 雜 雞 離 難 雨 雪 雲 零 雷 電 需 震 霍 霧 露 霸 霹 靂 靈 青 靖 靜 非 靠 面 革 靼 鞋 韃 韋 韓 音 韻 響 頁 頂 項 順 須 預 頑 頓 頗 領 頞 頭 頻 顆 題 額 顏 願 類 顧 顯 風 飄 飛 食 飯 飲 飽 飾 餅 養 餐 餘 館 首 香 馬 駐 駕 駛 騎 騙 騷 驅 驗 驚 骨 體 高 髮 鬆 鬥 鬧 鬱 鬼 魁 魂 魅 魔 魚 魯 鮮 鳥 鳳 鳴 鴻 鵝 鷹 鹿 麗 麥 麵 麻 麼 黃 黎 黑 默 點 黨 鼓 鼠 鼻 齊 齋 齒 齡 龍 龜", - 2: "‾ ﹉ ﹉ ﹊ ﹋ ﹌ _ _ ﹍ ﹍ ﹎ ﹏ ︳ ︴ - - ﹣ ‐ – ︲ — ﹘ ︱ , , ﹐ 、 ﹑ ; ; ﹔ : : ﹕ ! ! ﹗ ? ? ﹖ . . ﹒ ‥ ︰ … 。 · ' ‘ ’ \" " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ [ [ ] ] { { ﹛ ︷ } } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ § @ @ ﹫ * * ﹡ / / \\ \ ﹨ & & ﹠ # # ﹟ % % ﹪ ‰ † ‡ ‧ ′ ″ ‵ 〃 ※", - 3: "伏 侶 兌 兹 别 勳 卑 占 叶 堤 墎 奥 孜 峇 巽 彝 楔 渾 燦 狄 琳 瑚 甫 礁 芒 苗 茨 蚩 蜀 隴", - 5: "一 丁 丈 不 且 丞 並 串 乘 乾 亂 亭 傀 僎 僵 儐 償 儳 儷 儻 叢 嚴 囌 囑 廳", - }, - "zh-Hant-HK": { - 0: "一 丁 七 丈 丈 三 上 下 丌 不 丑 且 世 丘 丙 丟 並 中 串 丸 丹 主 乃 久 么 之 乎 乏 乖 乘 乙 九 也 乾 亂 了 予 事 二 于 云 互 五 井 些 亞 亡 交 交 亥 亦 亨 享 京 亮 人 什 仁 仇 今 介 仍 仔 他 付 仙 代 代 令 以 仰 仲 件 任 份 企 伊 伍 伐 休 伙 伯 估 伴 伸 似 伽 但 佈 佉 位 位 低 住 佔 何 余 佛 作 你 佩 佳 使 來 例 供 依 侯 侵 便 係 係 促 俄 俊 俗 保 俠 信 修 俱 俾 個 倍 們 倒 候 倚 借 倫 值 假 偉 偏 做 停 健 側 側 偵 偶 偷 傑 備 傢 傣 傲 傳 傷 傻 傾 僅 像 僑 僧 價 儀 億 儒 儘 優 允 元 元 兄 充 兇 兇 先 光 克 免 兒 兔 入 內 內 全 兩 八 八 公 六 兮 共 兵 兵 其 具 典 兼 冊 再 冒 冠 冬 冰 冷 准 凌 凝 凡 凰 凱 出 函 刀 分 切 刊 列 初 判 別 利 刪 到 制 刷 刺 刻 則 剌 前 剛 剩 剪 副 割 創 劃 劇 劉 劍 力 功 加 助 助 努 劫 勁 勇 勉 勒 動 務 勝 勞 勢 勤 勵 勸 勿 包 匈 化 北 匹 區 十 千 升 午 半 卒 卒 卓 協 南 博 卜 卡 卯 卯 印 危 即 卷 卻 厄 厘 厚 原 厭 厲 去 參 又 及 友 反 叔 取 受 口 口 古 句 另 只 只 叫 召 叭 可 台 史 右 司 吃 各 合 合 吉 吊 同 同 名 后 吐 吐 向 吒 君 吝 吝 吞 吟 吠 否 吧 含 吳 吵 吸 吹 吾 呀 呂 呆 告 呢 周 味 呵 呼 命 和 咖 咦 咧 咪 咬 咱 哀 品 哇 哇 哈 哉 哎 員 哥 哦 哩 哪 哭 哲 唉 唐 唔 唬 售 唯 唱 唷 唸 商 啊 問 啟 啡 啥 啦 啪 喀 喂 善 喇 喊 喔 喜 喝 喬 單 喵 嗎 嗚 嗨 嗯 嘆 嘉 嘗 嘛 嘴 嘻 嘿 器 噴 嚇 嚴 囉 四 回 因 困 固 圈 國 圍 園 圓 圖 團 圜 土 在 圭 地 圾 址 均 坎 坐 坡 坤 坦 坪 垂 垃 型 埃 城 埔 域 執 培 基 堂 堅 堆 堡 堪 報 場 塊 塔 塗 塞 填 塵 境 增 墨 墮 壁 壇 壓 壘 壞 壢 士 壬 壯 壽 夏 夕 外 多 夜 夠 夢 夥 大 天 天 太 夫 央 失 夷 夸 夾 奇 奇 奈 奉 奎 奏 契 奔 套 奧 奪 奮 女 奴 奶 她 好 如 妙 妝 妥 妨 妮 妳 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娘 娛 婁 婆 婚 婦 媒 媽 嫌 嫩 子 孔 字 存 孝 孟 季 孤 孩 孫 學 它 宅 宇 宇 守 安 宋 完 宏 宗 宗 官 宙 定 宛 宜 客 客 宣 室 宮 害 家 容 宿 寂 寄 寄 寅 密 富 寒 寞 察 寢 實 實 寧 寨 審 寫 寬 寮 寵 寶 封 射 將 專 尊 尋 對 對 導 小 少 尖 尚 尤 就 尺 尼 尾 局 屁 居 屆 屋 屏 展 屠 層 屬 山 岡 岩 岸 峰 島 峽 崇 崙 崴 嵐 嶺 川 州 巡 工 工 左 巧 巨 巫 差 己 己 已 巳 巴 巷 市 布 希 帕 帖 帛 帝 帥 師 席 帳 帶 常 帽 幅 幕 幣 幫 干 干 平 年 幸 幹 幻 幻 幼 幽 幾 庇 床 序 底 店 庚 府 度 座 庫 庭 康 庸 廉 廖 廠 廢 廣 廳 延 廷 建 弄 式 引 弗 弘 弟 弦 弱 張 強 彈 彊 彌 彎 彝 彞 形 彥 彩 彬 彭 彰 影 役 彼 往 征 待 很 律 後 徐 徐 徑 徒 得 從 復 微 徵 德 徹 心 必 忌 忍 志 志 忘 忙 忠 快 念 忽 怎 怒 怕 怖 思 怡 急 性 怨 怪 恆 恐 恢 恥 恨 恩 恭 息 恰 悅 悉 悔 悟 悠 您 悲 悶 情 惑 惜 惠 惡 惱 想 惹 愁 愈 愉 意 愚 愛 感 慈 態 慕 慘 慢 慣 慧 慮 慰 慶 慾 憂 憐 憑 憲 憶 憾 懂 應 懶 懷 懼 戀 戈 戊 戌 成 成 我 戒 或 截 戰 戲 戴 戶 房 房 所 扁 扇 手 才 扎 打 托 扣 扥 扭 扯 批 找 找 承 技 抄 把 抓 投 抗 折 披 抬 抱 抵 抹 抽 拆 拉 拋 拍 拏 拒 拔 拖 招 拜 括 拳 拼 拾 拿 持 指 按 挑 挖 挪 振 挺 捐 捕 捨 捲 捷 掃 授 掉 掌 排 掛 採 探 接 控 推 措 描 提 插 揚 換 握 揮 援 損 搖 搜 搞 搬 搭 搶 摘 摩 摸 撐 撒 撞 撣 撥 播 撾 撿 擁 擇 擊 擋 操 擎 擔 據 擠 擦 擬 擴 擺 擾 攝 支 收 改 攻 放 政 故 效 敍 敏 救 敗 敗 敘 教 敝 敢 散 敦 敬 整 敵 數 文 斐 斗 料 斯 新 斷 方 於 施 旁 旅 旋 族 旗 既 日 旦 早 旭 旺 昂 昆 昇 昌 明 昏 易 星 映 春 昨 昭 是 時 晉 晒 晚 晨 普 景 晴 晶 智 暑 暖 暗 暫 暴 曆 曉 曰 曲 更 書 曼 曾 曾 替 最 會 月 有 朋 服 朗 望 朝 期 木 未 未 末 本 札 朱 朵 杉 李 材 村 杜 束 杯 杯 杰 東 松 板 析 林 果 枝 架 柏 某 染 柔 查 柬 柯 柳 柴 校 核 根 格 桃 案 桌 桑 梁 梅 條 梨 梯 械 梵 棄 棉 棋 棒 棚 森 椅 植 椰 楊 楓 楚 業 極 概 榜 榮 構 槍 樂 樓 標 樞 模 樣 樹 橋 機 橫 檀 檔 檢 欄 權 次 欣 欲 欺 欽 款 歉 歌 歐 歡 歡 止 正 此 步 武 歲 歷 歸 死 殊 殘 段 殺 殼 毀 毅 母 每 毒 比 毛 毫 氏 民 氣 水 永 求 汗 汝 江 江 池 污 汪 汶 決 汽 沃 沈 沉 沒 沖 沙 河 油 治 沿 況 泉 泊 法 泡 波 泥 注 泰 泳 洋 洗 洛 洞 洩 洪 洲 活 洽 派 流 浦 浩 浪 浮 海 涇 涇 消 涉 涯 液 涵 涼 淑 淚 淡 淨 深 混 淺 清 減 渡 測 港 游 湖 湯 源 準 溝 溪 溫 滄 滅 滋 滑 滴 滾 滿 漂 漏 演 漠 漢 漫 漲 漸 潔 潘 潛 潮 澤 澳 激 濃 濟 濤 濫 濱 瀏 灌 灣 火 灰 災 炎 炮 炸 為 烈 烏 烤 無 焦 然 煙 煞 照 煩 熊 熟 熱 燃 燈 燒 營 爆 爐 爛 爪 爬 爭 爵 父 爸 爺 爽 爾 牆 牆 片 版 牌 牙 牛 牠 牧 物 牲 特 牽 犧 犯 狀 狂 狐 狗 狠 狼 猛 猜 猴 猶 獄 獅 獎 獨 獲 獸 獻 玄 率 玉 王 玩 玫 玲 玻 珊 珍 珠 珥 班 現 球 理 琉 琪 琴 瑙 瑜 瑞 瑟 瑤 瑪 瑰 環 瓜 瓦 瓶 甘 甚 甜 生 產 用 田 田 由 甲 申 男 甸 界 留 畢 略 番 畫 異 當 疆 疏 疑 疼 病 痕 痛 痴 瘋 療 癡 癸 登 登 發 白 百 的 皆 皇 皮 盃 益 盛 盜 盟 盡 監 盤 盧 目 盲 直 相 盼 盾 省 眉 看 真 眠 眼 眾 睛 睡 督 瞧 瞭 矛 矣 知 短 石 砂 砍 研 砲 破 硬 碎 碗 碟 碧 碩 碰 確 碼 磁 磨 磯 礎 礙 示 社 祕 祖 祚 祛 祝 神 祥 票 祿 禁 禍 禍 禎 福 禪 禮 秀 私 秋 科 秒 秘 租 秤 秦 移 稅 程 稍 種 稱 稿 穆 穌 積 穩 究 穹 空 穿 突 窗 窩 窮 窶 立 站 竟 章 童 端 競 竹 笑 笛 符 笨 第 筆 等 筋 答 策 简 算 管 箭 箱 節 範 篇 築 簡 簫 簽 簿 籃 籌 籍 籤 米 粉 粗 粵 精 糊 糕 糟 系 糾 紀 約 紅 納 紐 純 紙 紙 級 紛 素 索 紫 累 細 紹 終 組 結 絕 絡 給 統 絲 經 綜 綠 維 綱 網 緊 緒 線 緣 編 緩 緬 緯 練 縛 縣 縮 縱 總 績 繁 繆 織 繞 繪 繳 繼 續 缸 缺 罕 罪 置 罰 署 罵 罷 羅 羊 美 羞 群 義 羽 翁 習 翔 翰 翹 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 聖 聚 聞 聯 聰 聲 職 聽 肉 肚 股 肥 肩 肯 育 背 胎 胖 胞 胡 胸 能 脆 脫 腓 腔 腦 腰 腳 腿 膽 臉 臘 臣 臥 臨 自 臭 至 致 臺 與 與 興 舉 舊 舌 舍 舒 舞 舟 航 般 船 艦 良 色 艾 芝 芬 花 芳 若 苦 英 茅 茫 茲 茶 草 荒 荷 荼 莉 莊 莎 莫 菜 菩 華 菲 萄 萊 萬 落 葉 著 葛 葡 蒂 蒙 蒲 蒼 蓋 蓮 蔕 蔡 蔣 蕭 薄 薦 薩 薪 藉 藍 藏 藝 藤 藥 蘆 蘇 蘭 虎 處 虛 號 虧 蛇 蛋 蛙 蜂 蜜 蝶 融 螢 蟲 蟹 蠍 蠻 血 行 術 街 衛 衝 衡 衣 表 袋 被 裁 裂 裕 補 裝 裡 製 複 褲 西 要 覆 見 規 視 親 覺 覽 觀 角 解 觸 言 訂 計 訊 討 訓 託 記 訥 訪 設 許 訴 註 証 評 詞 詢 試 詩 話 話 該 詳 誇 誌 認 誓 誕 語 誠 誤 說 誰 課 誼 調 談 請 諒 論 諸 諺 諾 謀 謂 講 謝 證 識 譜 警 譯 議 護 譽 讀 變 讓 讚 谷 豆 豈 豐 象 豪 豬 貌 貓 貝 貞 負 負 財 貢 貨 貪 貪 貫 責 貴 買 費 貼 賀 資 賈 賓 賜 賞 賢 賢 賣 賤 賦 質 賭 賴 賺 購 賽 贈 贊 贏 赤 赫 走 起 超 越 趕 趙 趣 趨 足 跌 跎 跑 距 跟 跡 路 跳 踏 踢 蹟 蹤 躍 身 躲 車 軌 軍 軒 軟 較 載 輔 輕 輛 輝 輩 輪 輯 輸 轉 轟 辛 辦 辨 辭 辯 辯 辰 辱 農 迅 迎 近 返 迦 迪 迫 述 迴 迷 追 退 送 逃 逆 透 逐 途 這 這 通 逛 逝 速 造 逢 連 週 進 逸 逼 遇 遊 運 遍 過 道 道 達 違 遙 遜 遠 適 遭 遮 遲 遷 選 遺 避 避 邀 邁 還 邊 邏 那 邦 邪 邱 郎 部 郭 郵 都 鄂 鄉 鄭 鄰 酉 配 酒 酷 酸 醉 醒 醜 醫 采 釋 釋 里 重 野 量 金 針 釣 鈴 鉢 銀 銅 銖 銘 銳 銷 鋒 鋼 錄 錢 錦 錫 錯 鍋 鍵 鍾 鎊 鎖 鎮 鏡 鐘 鐵 鑑 長 門 閃 閉 開 閏 閒 間 閣 閱 闆 闊 闍 闐 關 闡 防 阻 阿 陀 附 降 限 院 院 陣 除 陪 陰 陳 陵 陵 陶 陷 陸 陽 隆 隊 階 隔 際 障 隨 險 隱 隻 雄 雄 雅 集 雉 雖 雙 雜 雞 離 難 雨 雪 雲 零 雷 電 需 震 霍 霧 露 霸 霹 靂 靈 青 靖 靜 非 靠 面 革 靼 鞋 韃 韋 韓 音 韻 響 頁 頂 項 順 須 預 頑 頓 頗 領 頞 頭 頻 顆 題 額 顏 願 類 顧 顯 風 飄 飛 食 飯 飲 飽 飾 餅 養 餐 餘 館 首 香 馬 駐 駕 駛 騎 騙 騷 驅 驗 驚 骨 體 高 髮 鬆 鬥 鬧 鬱 鬼 魁 魂 魅 魔 魚 魯 鮮 鳥 鳳 鳴 鴻 鵝 鷹 鹿 麗 麥 麵 麻 麼 黃 黎 黑 默 點 黨 鼓 鼠 鼻 齊 齋 齒 齡 龍 龜", - 2: "‾ ﹉ ﹉ ﹊ ﹋ ﹌ _ _ ﹍ ﹍ ﹎ ﹏ ︳ ︴ - - ﹣ ‐ – ︲ — ﹘ ︱ , , ﹐ 、 ﹑ ; ; ﹔ : : ﹕ ! ! ﹗ ? ? ﹖ . . ﹒ ‥ ︰ … 。 · ' ‘ ’ \" " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ [ [ ] ] { { ﹛ ︷ } } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ § @ @ ﹫ * * ﹡ / / \\ \ ﹨ & & ﹠ # # ﹟ % % ﹪ ‰ † ‡ ‧ ′ ″ ‵ 〃 ※", - 3: "伏 侶 兌 兹 别 勳 卑 占 叶 堤 墎 奥 孜 峇 巽 彝 楔 渾 燦 狄 琳 瑚 甫 礁 芒 苗 茨 蚩 蜀 隴", - 5: "一 丁 丈 不 且 丞 並 串 乘 乾 亂 亭 傀 僎 僵 儐 償 儳 儷 儻 叢 嚴 囌 囑 廳", - }, - "zu": { - 0: "a b bh c ch d dl dy e f g gc gq gx h hh hl i j k kh kl kp l m n nc ngc ngq ngx nhl nk nkc nkq nkx nq ntsh nx ny o p ph q qh r rh s sh t th tl ts tsh u v w x xh y z", - 2: "- , ; : ! ? . ( ) [ ] { }", - 3: "á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ", - }, -} diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/col.go b/vendor/golang.org/x/text/collate/tools/colcmp/col.go deleted file mode 100644 index dc22d2ee..00000000 --- a/vendor/golang.org/x/text/collate/tools/colcmp/col.go +++ /dev/null @@ -1,97 +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 main - -import ( - "log" - "unicode/utf16" - - "golang.org/x/text/collate" - "golang.org/x/text/language" -) - -// Input holds an input string in both UTF-8 and UTF-16 format. -type Input struct { - index int // used for restoring to original random order - UTF8 []byte - UTF16 []uint16 - key []byte // used for sorting -} - -func (i Input) String() string { - return string(i.UTF8) -} - -func makeInput(s8 []byte, s16 []uint16) Input { - return Input{UTF8: s8, UTF16: s16} -} - -func makeInputString(s string) Input { - return Input{ - UTF8: []byte(s), - UTF16: utf16.Encode([]rune(s)), - } -} - -// Collator is an interface for architecture-specific implementations of collation. -type Collator interface { - // Key generates a sort key for the given input. Implemenations - // may return nil if a collator does not support sort keys. - Key(s Input) []byte - - // Compare returns -1 if a < b, 1 if a > b and 0 if a == b. - Compare(a, b Input) int -} - -// CollatorFactory creates a Collator for a given language tag. -type CollatorFactory struct { - name string - makeFn func(tag string) (Collator, error) - description string -} - -var collators = []CollatorFactory{} - -// AddFactory registers f as a factory for an implementation of Collator. -func AddFactory(f CollatorFactory) { - collators = append(collators, f) -} - -func getCollator(name, locale string) Collator { - for _, f := range collators { - if f.name == name { - col, err := f.makeFn(locale) - if err != nil { - log.Fatal(err) - } - return col - } - } - log.Fatalf("collator of type %q not found", name) - return nil -} - -// goCollator is an implemention of Collator using go's own collator. -type goCollator struct { - c *collate.Collator - buf collate.Buffer -} - -func init() { - AddFactory(CollatorFactory{"go", newGoCollator, "Go's native collator implementation."}) -} - -func newGoCollator(loc string) (Collator, error) { - c := &goCollator{c: collate.New(language.Make(loc))} - return c, nil -} - -func (c *goCollator) Key(b Input) []byte { - return c.c.Key(&c.buf, b.UTF8) -} - -func (c *goCollator) Compare(a, b Input) int { - return c.c.Compare(a.UTF8, b.UTF8) -} diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go b/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go deleted file mode 100644 index ebd6012d..00000000 --- a/vendor/golang.org/x/text/collate/tools/colcmp/colcmp.go +++ /dev/null @@ -1,529 +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 main // import "golang.org/x/text/collate/tools/colcmp" - -import ( - "bytes" - "flag" - "fmt" - "io" - "log" - "os" - "runtime/pprof" - "sort" - "strconv" - "strings" - "text/template" - "time" - - "golang.org/x/text/unicode/norm" -) - -var ( - doNorm = flag.Bool("norm", false, "normalize input strings") - cases = flag.Bool("case", false, "generate case variants") - verbose = flag.Bool("verbose", false, "print results") - debug = flag.Bool("debug", false, "output debug information") - locales = flag.String("locale", "en_US", "the locale to use. May be a comma-separated list for some commands.") - col = flag.String("col", "go", "collator to test") - gold = flag.String("gold", "go", "collator used as the gold standard") - usecmp = flag.Bool("usecmp", false, - `use comparison instead of sort keys when sorting. Must be "test", "gold" or "both"`) - cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file") - exclude = flag.String("exclude", "", "exclude errors that contain any of the characters") - limit = flag.Int("limit", 5000000, "maximum number of samples to generate for one run") -) - -func failOnError(err error) { - if err != nil { - log.Panic(err) - } -} - -// Test holds test data for testing a locale-collator pair. -// Test also provides functionality that is commonly used by the various commands. -type Test struct { - ctxt *Context - Name string - Locale string - ColName string - - Col Collator - UseCompare bool - - Input []Input - Duration time.Duration - - start time.Time - msg string - count int -} - -func (t *Test) clear() { - t.Col = nil - t.Input = nil -} - -const ( - msgGeneratingInput = "generating input" - msgGeneratingKeys = "generating keys" - msgSorting = "sorting" -) - -var lastLen = 0 - -func (t *Test) SetStatus(msg string) { - if *debug || *verbose { - fmt.Printf("%s: %s...\n", t.Name, msg) - } else if t.ctxt.out != nil { - fmt.Fprint(t.ctxt.out, strings.Repeat(" ", lastLen)) - fmt.Fprint(t.ctxt.out, strings.Repeat("\b", lastLen)) - fmt.Fprint(t.ctxt.out, msg, "...") - lastLen = len(msg) + 3 - fmt.Fprint(t.ctxt.out, strings.Repeat("\b", lastLen)) - } -} - -// Start is used by commands to signal the start of an operation. -func (t *Test) Start(msg string) { - t.SetStatus(msg) - t.count = 0 - t.msg = msg - t.start = time.Now() -} - -// Stop is used by commands to signal the end of an operation. -func (t *Test) Stop() (time.Duration, int) { - d := time.Now().Sub(t.start) - t.Duration += d - if *debug || *verbose { - fmt.Printf("%s: %s done. (%.3fs /%dK ops)\n", t.Name, t.msg, d.Seconds(), t.count/1000) - } - return d, t.count -} - -// generateKeys generates sort keys for all the inputs. -func (t *Test) generateKeys() { - for i, s := range t.Input { - b := t.Col.Key(s) - t.Input[i].key = b - if *debug { - fmt.Printf("%s (%X): %X\n", string(s.UTF8), s.UTF16, b) - } - } -} - -// Sort sorts the inputs. It generates sort keys if this is required by the -// chosen sort method. -func (t *Test) Sort() (tkey, tsort time.Duration, nkey, nsort int) { - if *cpuprofile != "" { - f, err := os.Create(*cpuprofile) - failOnError(err) - pprof.StartCPUProfile(f) - defer pprof.StopCPUProfile() - } - if t.UseCompare || t.Col.Key(t.Input[0]) == nil { - t.Start(msgSorting) - sort.Sort(&testCompare{*t}) - tsort, nsort = t.Stop() - } else { - t.Start(msgGeneratingKeys) - t.generateKeys() - t.count = len(t.Input) - tkey, nkey = t.Stop() - t.Start(msgSorting) - sort.Sort(t) - tsort, nsort = t.Stop() - } - return -} - -func (t *Test) Swap(a, b int) { - t.Input[a], t.Input[b] = t.Input[b], t.Input[a] -} - -func (t *Test) Less(a, b int) bool { - t.count++ - return bytes.Compare(t.Input[a].key, t.Input[b].key) == -1 -} - -func (t Test) Len() int { - return len(t.Input) -} - -type testCompare struct { - Test -} - -func (t *testCompare) Less(a, b int) bool { - t.count++ - return t.Col.Compare(t.Input[a], t.Input[b]) == -1 -} - -type testRestore struct { - Test -} - -func (t *testRestore) Less(a, b int) bool { - return t.Input[a].index < t.Input[b].index -} - -// GenerateInput generates input phrases for the locale tested by t. -func (t *Test) GenerateInput() { - t.Input = nil - if t.ctxt.lastLocale != t.Locale { - gen := phraseGenerator{} - gen.init(t.Locale) - t.SetStatus(msgGeneratingInput) - t.ctxt.lastInput = nil // allow the previous value to be garbage collected. - t.Input = gen.generate(*doNorm) - t.ctxt.lastInput = t.Input - t.ctxt.lastLocale = t.Locale - } else { - t.Input = t.ctxt.lastInput - for i := range t.Input { - t.Input[i].key = nil - } - sort.Sort(&testRestore{*t}) - } -} - -// Context holds all tests and settings translated from command line options. -type Context struct { - test []*Test - last *Test - - lastLocale string - lastInput []Input - - out io.Writer -} - -func (ts *Context) Printf(format string, a ...interface{}) { - ts.assertBuf() - fmt.Fprintf(ts.out, format, a...) -} - -func (ts *Context) Print(a ...interface{}) { - ts.assertBuf() - fmt.Fprint(ts.out, a...) -} - -// assertBuf sets up an io.Writer for output, if it doesn't already exist. -// In debug and verbose mode, output is buffered so that the regular output -// will not interfere with the additional output. Otherwise, output is -// written directly to stdout for a more responsive feel. -func (ts *Context) assertBuf() { - if ts.out != nil { - return - } - if *debug || *verbose { - ts.out = &bytes.Buffer{} - } else { - ts.out = os.Stdout - } -} - -// flush flushes the contents of ts.out to stdout, if it is not stdout already. -func (ts *Context) flush() { - if ts.out != nil { - if _, ok := ts.out.(io.ReadCloser); !ok { - io.Copy(os.Stdout, ts.out.(io.Reader)) - } - } -} - -// parseTests creates all tests from command lines and returns -// a Context to hold them. -func parseTests() *Context { - ctxt := &Context{} - colls := strings.Split(*col, ",") - for _, loc := range strings.Split(*locales, ",") { - loc = strings.TrimSpace(loc) - for _, name := range colls { - name = strings.TrimSpace(name) - col := getCollator(name, loc) - ctxt.test = append(ctxt.test, &Test{ - ctxt: ctxt, - Locale: loc, - ColName: name, - UseCompare: *usecmp, - Col: col, - }) - } - } - return ctxt -} - -func (c *Context) Len() int { - return len(c.test) -} - -func (c *Context) Test(i int) *Test { - if c.last != nil { - c.last.clear() - } - c.last = c.test[i] - return c.last -} - -func parseInput(args []string) []Input { - input := []Input{} - for _, s := range args { - rs := []rune{} - for len(s) > 0 { - var r rune - r, _, s, _ = strconv.UnquoteChar(s, '\'') - rs = append(rs, r) - } - s = string(rs) - if *doNorm { - s = norm.NFD.String(s) - } - input = append(input, makeInputString(s)) - } - return input -} - -// A Command is an implementation of a colcmp command. -type Command struct { - Run func(cmd *Context, args []string) - Usage string - Short string - Long string -} - -func (cmd Command) Name() string { - return strings.SplitN(cmd.Usage, " ", 2)[0] -} - -var commands = []*Command{ - cmdSort, - cmdBench, - cmdRegress, -} - -const sortHelp = ` -Sort sorts a given list of strings. Strings are separated by whitespace. -` - -var cmdSort = &Command{ - Run: runSort, - Usage: "sort <string>*", - Short: "sort a given list of strings", - Long: sortHelp, -} - -func runSort(ctxt *Context, args []string) { - input := parseInput(args) - if len(input) == 0 { - log.Fatalf("Nothing to sort.") - } - if ctxt.Len() > 1 { - ctxt.Print("COLL LOCALE RESULT\n") - } - for i := 0; i < ctxt.Len(); i++ { - t := ctxt.Test(i) - t.Input = append(t.Input, input...) - t.Sort() - if ctxt.Len() > 1 { - ctxt.Printf("%-5s %-5s ", t.ColName, t.Locale) - } - for _, s := range t.Input { - ctxt.Print(string(s.UTF8), " ") - } - ctxt.Print("\n") - } -} - -const benchHelp = ` -Bench runs a benchmark for the given list of collator implementations. -If no collator implementations are given, the go collator will be used. -` - -var cmdBench = &Command{ - Run: runBench, - Usage: "bench", - Short: "benchmark a given list of collator implementations", - Long: benchHelp, -} - -func runBench(ctxt *Context, args []string) { - ctxt.Printf("%-7s %-5s %-6s %-24s %-24s %-5s %s\n", "LOCALE", "COLL", "N", "KEYS", "SORT", "AVGLN", "TOTAL") - for i := 0; i < ctxt.Len(); i++ { - t := ctxt.Test(i) - ctxt.Printf("%-7s %-5s ", t.Locale, t.ColName) - t.GenerateInput() - ctxt.Printf("%-6s ", fmt.Sprintf("%dK", t.Len()/1000)) - tkey, tsort, nkey, nsort := t.Sort() - p := func(dur time.Duration, n int) { - s := "" - if dur > 0 { - s = fmt.Sprintf("%6.3fs ", dur.Seconds()) - if n > 0 { - s += fmt.Sprintf("%15s", fmt.Sprintf("(%4.2f ns/op)", float64(dur)/float64(n))) - } - } - ctxt.Printf("%-24s ", s) - } - p(tkey, nkey) - p(tsort, nsort) - - total := 0 - for _, s := range t.Input { - total += len(s.key) - } - ctxt.Printf("%-5d ", total/t.Len()) - ctxt.Printf("%6.3fs\n", t.Duration.Seconds()) - if *debug { - for _, s := range t.Input { - fmt.Print(string(s.UTF8), " ") - } - fmt.Println() - } - } -} - -const regressHelp = ` -Regress runs a monkey test by comparing the results of randomly generated tests -between two implementations of a collator. The user may optionally pass a list -of strings to regress against instead of the default test set. -` - -var cmdRegress = &Command{ - Run: runRegress, - Usage: "regress -gold=<col> -test=<col> [string]*", - Short: "run a monkey test between two collators", - Long: regressHelp, -} - -const failedKeyCompare = ` -%s:%d: incorrect comparison result for input: - a: %q (%.4X) - key: %s - b: %q (%.4X) - key: %s - Compare(a, b) = %d; want %d. - - gold keys: - a: %s - b: %s -` - -const failedCompare = ` -%s:%d: incorrect comparison result for input: - a: %q (%.4X) - b: %q (%.4X) - Compare(a, b) = %d; want %d. -` - -func keyStr(b []byte) string { - buf := &bytes.Buffer{} - for _, v := range b { - fmt.Fprintf(buf, "%.2X ", v) - } - return buf.String() -} - -func runRegress(ctxt *Context, args []string) { - input := parseInput(args) - for i := 0; i < ctxt.Len(); i++ { - t := ctxt.Test(i) - if len(input) > 0 { - t.Input = append(t.Input, input...) - } else { - t.GenerateInput() - } - t.Sort() - count := 0 - gold := getCollator(*gold, t.Locale) - for i := 1; i < len(t.Input); i++ { - ia := t.Input[i-1] - ib := t.Input[i] - if bytes.IndexAny(ib.UTF8, *exclude) != -1 { - i++ - continue - } - if bytes.IndexAny(ia.UTF8, *exclude) != -1 { - continue - } - goldCmp := gold.Compare(ia, ib) - if cmp := bytes.Compare(ia.key, ib.key); cmp != goldCmp { - count++ - a := string(ia.UTF8) - b := string(ib.UTF8) - fmt.Printf(failedKeyCompare, t.Locale, i-1, a, []rune(a), keyStr(ia.key), b, []rune(b), keyStr(ib.key), cmp, goldCmp, keyStr(gold.Key(ia)), keyStr(gold.Key(ib))) - } else if cmp := t.Col.Compare(ia, ib); cmp != goldCmp { - count++ - a := string(ia.UTF8) - b := string(ib.UTF8) - fmt.Printf(failedCompare, t.Locale, i-1, a, []rune(a), b, []rune(b), cmp, goldCmp) - } - } - if count > 0 { - ctxt.Printf("Found %d inconsistencies in %d entries.\n", count, t.Len()-1) - } - } -} - -const helpTemplate = ` -colcmp is a tool for testing and benchmarking collation - -Usage: colcmp command [arguments] - -The commands are: -{{range .}} - {{.Name | printf "%-11s"}} {{.Short}}{{end}} - -Use "col help [topic]" for more information about that topic. -` - -const detailedHelpTemplate = ` -Usage: colcmp {{.Usage}} - -{{.Long | trim}} -` - -func runHelp(args []string) { - t := template.New("help") - t.Funcs(template.FuncMap{"trim": strings.TrimSpace}) - if len(args) < 1 { - template.Must(t.Parse(helpTemplate)) - failOnError(t.Execute(os.Stderr, &commands)) - } else { - for _, cmd := range commands { - if cmd.Name() == args[0] { - template.Must(t.Parse(detailedHelpTemplate)) - failOnError(t.Execute(os.Stderr, cmd)) - os.Exit(0) - } - } - log.Fatalf("Unknown command %q. Run 'colcmp help'.", args[0]) - } - os.Exit(0) -} - -func main() { - flag.Parse() - log.SetFlags(0) - - ctxt := parseTests() - - if flag.NArg() < 1 { - runHelp(nil) - } - args := flag.Args()[1:] - if flag.Arg(0) == "help" { - runHelp(args) - } - for _, cmd := range commands { - if cmd.Name() == flag.Arg(0) { - cmd.Run(ctxt, args) - ctxt.flush() - return - } - } - runHelp(flag.Args()) -} diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go b/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go deleted file mode 100644 index d2300e3e..00000000 --- a/vendor/golang.org/x/text/collate/tools/colcmp/darwin.go +++ /dev/null @@ -1,111 +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. - -// +build darwin - -package main - -/* -#cgo LDFLAGS: -framework CoreFoundation -#include <CoreFoundation/CFBase.h> -#include <CoreFoundation/CoreFoundation.h> -*/ -import "C" -import ( - "unsafe" -) - -func init() { - AddFactory(CollatorFactory{"osx", newOSX16Collator, - "OS X/Darwin collator, using native strings."}) - AddFactory(CollatorFactory{"osx8", newOSX8Collator, - "OS X/Darwin collator for UTF-8."}) -} - -func osxUInt8P(s []byte) *C.UInt8 { - return (*C.UInt8)(unsafe.Pointer(&s[0])) -} - -func osxCharP(s []uint16) *C.UniChar { - return (*C.UniChar)(unsafe.Pointer(&s[0])) -} - -// osxCollator implements an Collator based on OS X's CoreFoundation. -type osxCollator struct { - loc C.CFLocaleRef - opt C.CFStringCompareFlags -} - -func (c *osxCollator) init(locale string) { - l := C.CFStringCreateWithBytes( - C.kCFAllocatorDefault, - osxUInt8P([]byte(locale)), - C.CFIndex(len(locale)), - C.kCFStringEncodingUTF8, - C.Boolean(0), - ) - c.loc = C.CFLocaleCreate(C.kCFAllocatorDefault, l) -} - -func newOSX8Collator(locale string) (Collator, error) { - c := &osx8Collator{} - c.init(locale) - return c, nil -} - -func newOSX16Collator(locale string) (Collator, error) { - c := &osx16Collator{} - c.init(locale) - return c, nil -} - -func (c osxCollator) Key(s Input) []byte { - return nil // sort keys not supported by OS X CoreFoundation -} - -type osx8Collator struct { - osxCollator -} - -type osx16Collator struct { - osxCollator -} - -func (c osx16Collator) Compare(a, b Input) int { - sa := C.CFStringCreateWithCharactersNoCopy( - C.kCFAllocatorDefault, - osxCharP(a.UTF16), - C.CFIndex(len(a.UTF16)), - C.kCFAllocatorDefault, - ) - sb := C.CFStringCreateWithCharactersNoCopy( - C.kCFAllocatorDefault, - osxCharP(b.UTF16), - C.CFIndex(len(b.UTF16)), - C.kCFAllocatorDefault, - ) - _range := C.CFRangeMake(0, C.CFStringGetLength(sa)) - return int(C.CFStringCompareWithOptionsAndLocale(sa, sb, _range, c.opt, c.loc)) -} - -func (c osx8Collator) Compare(a, b Input) int { - sa := C.CFStringCreateWithBytesNoCopy( - C.kCFAllocatorDefault, - osxUInt8P(a.UTF8), - C.CFIndex(len(a.UTF8)), - C.kCFStringEncodingUTF8, - C.Boolean(0), - C.kCFAllocatorDefault, - ) - sb := C.CFStringCreateWithBytesNoCopy( - C.kCFAllocatorDefault, - osxUInt8P(b.UTF8), - C.CFIndex(len(b.UTF8)), - C.kCFStringEncodingUTF8, - C.Boolean(0), - C.kCFAllocatorDefault, - ) - _range := C.CFRangeMake(0, C.CFStringGetLength(sa)) - return int(C.CFStringCompareWithOptionsAndLocale(sa, sb, _range, c.opt, c.loc)) -} diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/gen.go b/vendor/golang.org/x/text/collate/tools/colcmp/gen.go deleted file mode 100644 index 795be132..00000000 --- a/vendor/golang.org/x/text/collate/tools/colcmp/gen.go +++ /dev/null @@ -1,183 +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 main - -import ( - "math" - "math/rand" - "strings" - "unicode" - "unicode/utf16" - "unicode/utf8" - - "golang.org/x/text/language" - "golang.org/x/text/unicode/norm" -) - -// TODO: replace with functionality in language package. -// parent computes the parent language for the given language. -// It returns false if the parent is already root. -func parent(locale string) (parent string, ok bool) { - if locale == "und" { - return "", false - } - if i := strings.LastIndex(locale, "-"); i != -1 { - return locale[:i], true - } - return "und", true -} - -// rewriter is used to both unique strings and create variants of strings -// to add to the test set. -type rewriter struct { - seen map[string]bool - addCases bool -} - -func newRewriter() *rewriter { - return &rewriter{ - seen: make(map[string]bool), - } -} - -func (r *rewriter) insert(a []string, s string) []string { - if !r.seen[s] { - r.seen[s] = true - a = append(a, s) - } - return a -} - -// rewrite takes a sequence of strings in, adds variants of the these strings -// based on options and removes duplicates. -func (r *rewriter) rewrite(ss []string) []string { - ns := []string{} - for _, s := range ss { - ns = r.insert(ns, s) - if r.addCases { - rs := []rune(s) - rn := rs[0] - for c := unicode.SimpleFold(rn); c != rn; c = unicode.SimpleFold(c) { - rs[0] = c - ns = r.insert(ns, string(rs)) - } - } - } - return ns -} - -// exemplarySet holds a parsed set of characters from the exemplarCharacters table. -type exemplarySet struct { - typ exemplarType - set []string - charIndex int // cumulative total of phrases, including this set -} - -type phraseGenerator struct { - sets [exN]exemplarySet - n int -} - -func (g *phraseGenerator) init(id string) { - ec := exemplarCharacters - loc := language.Make(id).String() - // get sets for locale or parent locale if the set is not defined. - for i := range g.sets { - for p, ok := loc, true; ok; p, ok = parent(p) { - if set, ok := ec[p]; ok && set[i] != "" { - g.sets[i].set = strings.Split(set[i], " ") - break - } - } - } - r := newRewriter() - r.addCases = *cases - for i := range g.sets { - g.sets[i].set = r.rewrite(g.sets[i].set) - } - // compute indexes - for i, set := range g.sets { - g.n += len(set.set) - g.sets[i].charIndex = g.n - } -} - -// phrase returns the ith phrase, where i < g.n. -func (g *phraseGenerator) phrase(i int) string { - for _, set := range g.sets { - if i < set.charIndex { - return set.set[i-(set.charIndex-len(set.set))] - } - } - panic("index out of range") -} - -// generate generates inputs by combining all pairs of examplar strings. -// If doNorm is true, all input strings are normalized to NFC. -// TODO: allow other variations, statistical models, and random -// trailing sequences. -func (g *phraseGenerator) generate(doNorm bool) []Input { - const ( - M = 1024 * 1024 - buf8Size = 30 * M - buf16Size = 10 * M - ) - // TODO: use a better way to limit the input size. - if sq := int(math.Sqrt(float64(*limit))); g.n > sq { - g.n = sq - } - size := g.n * g.n - a := make([]Input, 0, size) - buf8 := make([]byte, 0, buf8Size) - buf16 := make([]uint16, 0, buf16Size) - - addInput := func(str string) { - buf8 = buf8[len(buf8):] - buf16 = buf16[len(buf16):] - if len(str) > cap(buf8) { - buf8 = make([]byte, 0, buf8Size) - } - if len(str) > cap(buf16) { - buf16 = make([]uint16, 0, buf16Size) - } - if doNorm { - buf8 = norm.NFD.AppendString(buf8, str) - } else { - buf8 = append(buf8, str...) - } - buf16 = appendUTF16(buf16, buf8) - a = append(a, makeInput(buf8, buf16)) - } - for i := 0; i < g.n; i++ { - p1 := g.phrase(i) - addInput(p1) - for j := 0; j < g.n; j++ { - p2 := g.phrase(j) - addInput(p1 + p2) - } - } - // permutate - rnd := rand.New(rand.NewSource(int64(rand.Int()))) - for i := range a { - j := i + rnd.Intn(len(a)-i) - a[i], a[j] = a[j], a[i] - a[i].index = i // allow restoring this order if input is used multiple times. - } - return a -} - -func appendUTF16(buf []uint16, s []byte) []uint16 { - for len(s) > 0 { - r, sz := utf8.DecodeRune(s) - s = s[sz:] - r1, r2 := utf16.EncodeRune(r) - if r1 != 0xFFFD { - buf = append(buf, uint16(r1), uint16(r2)) - } else { - buf = append(buf, uint16(r)) - } - } - return buf -} diff --git a/vendor/golang.org/x/text/collate/tools/colcmp/icu.go b/vendor/golang.org/x/text/collate/tools/colcmp/icu.go deleted file mode 100644 index 76de4042..00000000 --- a/vendor/golang.org/x/text/collate/tools/colcmp/icu.go +++ /dev/null @@ -1,209 +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. - -// +build icu - -package main - -/* -#cgo LDFLAGS: -licui18n -licuuc -#include <stdlib.h> -#include <unicode/ucol.h> -#include <unicode/uiter.h> -#include <unicode/utypes.h> -*/ -import "C" -import ( - "fmt" - "log" - "unicode/utf16" - "unicode/utf8" - "unsafe" -) - -func init() { - AddFactory(CollatorFactory{"icu", newUTF16, - "Main ICU collator, using native strings."}) - AddFactory(CollatorFactory{"icu8", newUTF8iter, - "ICU collator using ICU iterators to process UTF8."}) - AddFactory(CollatorFactory{"icu16", newUTF8conv, - "ICU collation by first converting UTF8 to UTF16."}) -} - -func icuCharP(s []byte) *C.char { - return (*C.char)(unsafe.Pointer(&s[0])) -} - -func icuUInt8P(s []byte) *C.uint8_t { - return (*C.uint8_t)(unsafe.Pointer(&s[0])) -} - -func icuUCharP(s []uint16) *C.UChar { - return (*C.UChar)(unsafe.Pointer(&s[0])) -} -func icuULen(s []uint16) C.int32_t { - return C.int32_t(len(s)) -} -func icuSLen(s []byte) C.int32_t { - return C.int32_t(len(s)) -} - -// icuCollator implements a Collator based on ICU. -type icuCollator struct { - loc *C.char - col *C.UCollator - keyBuf []byte -} - -const growBufSize = 10 * 1024 * 1024 - -func (c *icuCollator) init(locale string) error { - err := C.UErrorCode(0) - c.loc = C.CString(locale) - c.col = C.ucol_open(c.loc, &err) - if err > 0 { - return fmt.Errorf("failed opening collator for %q", locale) - } else if err < 0 { - loc := C.ucol_getLocaleByType(c.col, 0, &err) - fmt, ok := map[int]string{ - -127: "warning: using default collator: %s", - -128: "warning: using fallback collator: %s", - }[int(err)] - if ok { - log.Printf(fmt, C.GoString(loc)) - } - } - c.keyBuf = make([]byte, 0, growBufSize) - return nil -} - -func (c *icuCollator) buf() (*C.uint8_t, C.int32_t) { - if len(c.keyBuf) == cap(c.keyBuf) { - c.keyBuf = make([]byte, 0, growBufSize) - } - b := c.keyBuf[len(c.keyBuf):cap(c.keyBuf)] - return icuUInt8P(b), icuSLen(b) -} - -func (c *icuCollator) extendBuf(n C.int32_t) []byte { - end := len(c.keyBuf) + int(n) - if end > cap(c.keyBuf) { - if len(c.keyBuf) == 0 { - log.Fatalf("icuCollator: max string size exceeded: %v > %v", n, growBufSize) - } - c.keyBuf = make([]byte, 0, growBufSize) - return nil - } - b := c.keyBuf[len(c.keyBuf):end] - c.keyBuf = c.keyBuf[:end] - return b -} - -func (c *icuCollator) Close() error { - C.ucol_close(c.col) - C.free(unsafe.Pointer(c.loc)) - return nil -} - -// icuUTF16 implements the Collator interface. -type icuUTF16 struct { - icuCollator -} - -func newUTF16(locale string) (Collator, error) { - c := &icuUTF16{} - return c, c.init(locale) -} - -func (c *icuUTF16) Compare(a, b Input) int { - return int(C.ucol_strcoll(c.col, icuUCharP(a.UTF16), icuULen(a.UTF16), icuUCharP(b.UTF16), icuULen(b.UTF16))) -} - -func (c *icuUTF16) Key(s Input) []byte { - bp, bn := c.buf() - n := C.ucol_getSortKey(c.col, icuUCharP(s.UTF16), icuULen(s.UTF16), bp, bn) - if b := c.extendBuf(n); b != nil { - return b - } - return c.Key(s) -} - -// icuUTF8iter implements the Collator interface -// This implementation wraps the UTF8 string in an iterator -// which is passed to the collator. -type icuUTF8iter struct { - icuCollator - a, b C.UCharIterator -} - -func newUTF8iter(locale string) (Collator, error) { - c := &icuUTF8iter{} - return c, c.init(locale) -} - -func (c *icuUTF8iter) Compare(a, b Input) int { - err := C.UErrorCode(0) - C.uiter_setUTF8(&c.a, icuCharP(a.UTF8), icuSLen(a.UTF8)) - C.uiter_setUTF8(&c.b, icuCharP(b.UTF8), icuSLen(b.UTF8)) - return int(C.ucol_strcollIter(c.col, &c.a, &c.b, &err)) -} - -func (c *icuUTF8iter) Key(s Input) []byte { - err := C.UErrorCode(0) - state := [2]C.uint32_t{} - C.uiter_setUTF8(&c.a, icuCharP(s.UTF8), icuSLen(s.UTF8)) - bp, bn := c.buf() - n := C.ucol_nextSortKeyPart(c.col, &c.a, &(state[0]), bp, bn, &err) - if n >= bn { - // Force failure. - if c.extendBuf(n+1) != nil { - log.Fatal("expected extension to fail") - } - return c.Key(s) - } - return c.extendBuf(n) -} - -// icuUTF8conv implements the Collator interface. -// This implementation first converts the give UTF8 string -// to UTF16 and then calls the main ICU collation function. -type icuUTF8conv struct { - icuCollator -} - -func newUTF8conv(locale string) (Collator, error) { - c := &icuUTF8conv{} - return c, c.init(locale) -} - -func (c *icuUTF8conv) Compare(sa, sb Input) int { - a := encodeUTF16(sa.UTF8) - b := encodeUTF16(sb.UTF8) - return int(C.ucol_strcoll(c.col, icuUCharP(a), icuULen(a), icuUCharP(b), icuULen(b))) -} - -func (c *icuUTF8conv) Key(s Input) []byte { - a := encodeUTF16(s.UTF8) - bp, bn := c.buf() - n := C.ucol_getSortKey(c.col, icuUCharP(a), icuULen(a), bp, bn) - if b := c.extendBuf(n); b != nil { - return b - } - return c.Key(s) -} - -func encodeUTF16(b []byte) []uint16 { - a := []uint16{} - for len(b) > 0 { - r, sz := utf8.DecodeRune(b) - b = b[sz:] - r1, r2 := utf16.EncodeRune(r) - if r1 != 0xFFFD { - a = append(a, uint16(r1), uint16(r2)) - } else { - a = append(a, uint16(r)) - } - } - return a -} diff --git a/vendor/golang.org/x/text/currency/common.go b/vendor/golang.org/x/text/currency/common.go deleted file mode 100644 index fef15be5..00000000 --- a/vendor/golang.org/x/text/currency/common.go +++ /dev/null @@ -1,67 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package currency - -import ( - "time" - - "golang.org/x/text/language" -) - -// This file contains code common to gen.go and the package code. - -const ( - cashShift = 3 - roundMask = 0x7 - - nonTenderBit = 0x8000 -) - -// currencyInfo contains information about a currency. -// bits 0..2: index into roundings for standard rounding -// bits 3..5: index into roundings for cash rounding -type currencyInfo byte - -// roundingType defines the scale (number of fractional decimals) and increments -// in terms of units of size 10^-scale. For example, for scale == 2 and -// increment == 1, the currency is rounded to units of 0.01. -type roundingType struct { - scale, increment uint8 -} - -// roundings contains rounding data for currencies. This struct is -// created by hand as it is very unlikely to change much. -var roundings = [...]roundingType{ - {2, 1}, // default - {0, 1}, - {1, 1}, - {3, 1}, - {4, 1}, - {2, 5}, // cash rounding alternative - {2, 50}, -} - -// regionToCode returns a 16-bit region code. Only two-letter codes are -// supported. (Three-letter codes are not needed.) -func regionToCode(r language.Region) uint16 { - if s := r.String(); len(s) == 2 { - return uint16(s[0])<<8 | uint16(s[1]) - } - return 0 -} - -func toDate(t time.Time) uint32 { - y := t.Year() - if y == 1 { - return 0 - } - date := uint32(y) << 4 - date |= uint32(t.Month()) - date <<= 5 - date |= uint32(t.Day()) - return date -} - -func fromDate(date uint32) time.Time { - return time.Date(int(date>>9), time.Month((date>>5)&0xf), int(date&0x1f), 0, 0, 0, 0, time.UTC) -} diff --git a/vendor/golang.org/x/text/currency/currency.go b/vendor/golang.org/x/text/currency/currency.go deleted file mode 100644 index 598ddeff..00000000 --- a/vendor/golang.org/x/text/currency/currency.go +++ /dev/null @@ -1,185 +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. - -//go:generate go run gen.go gen_common.go -output tables.go - -// Package currency contains currency-related functionality. -// -// NOTE: the formatting functionality is currently under development and may -// change without notice. -package currency // import "golang.org/x/text/currency" - -import ( - "errors" - "sort" - - "golang.org/x/text/internal/tag" - "golang.org/x/text/language" -) - -// TODO: -// - language-specific currency names. -// - currency formatting. -// - currency information per region -// - register currency code (there are no private use area) - -// TODO: remove Currency type from package language. - -// Kind determines the rounding and rendering properties of a currency value. -type Kind struct { - rounding rounding - // TODO: formatting type: standard, accounting. See CLDR. -} - -type rounding byte - -const ( - standard rounding = iota - cash -) - -var ( - // Standard defines standard rounding and formatting for currencies. - Standard Kind = Kind{rounding: standard} - - // Cash defines rounding and formatting standards for cash transactions. - Cash Kind = Kind{rounding: cash} - - // Accounting defines rounding and formatting standards for accounting. - Accounting Kind = Kind{rounding: standard} -) - -// Rounding reports the rounding characteristics for the given currency, where -// scale is the number of fractional decimals and increment is the number of -// units in terms of 10^(-scale) to which to round to. -func (k Kind) Rounding(cur Unit) (scale, increment int) { - info := currency.Elem(int(cur.index))[3] - switch k.rounding { - case standard: - info &= roundMask - case cash: - info >>= cashShift - } - return int(roundings[info].scale), int(roundings[info].increment) -} - -// Unit is an ISO 4217 currency designator. -type Unit struct { - index uint16 -} - -// String returns the ISO code of u. -func (u Unit) String() string { - if u.index == 0 { - return "XXX" - } - return currency.Elem(int(u.index))[:3] -} - -// Amount creates an Amount for the given currency unit and amount. -func (u Unit) Amount(amount interface{}) Amount { - // TODO: verify amount is a supported number type - return Amount{amount: amount, currency: u} -} - -var ( - errSyntax = errors.New("currency: tag is not well-formed") - errValue = errors.New("currency: tag is not a recognized currency") -) - -// ParseISO parses a 3-letter ISO 4217 currency code. It returns an error if s -// is not well-formed or not a recognized currency code. -func ParseISO(s string) (Unit, error) { - var buf [4]byte // Take one byte more to detect oversize keys. - key := buf[:copy(buf[:], s)] - if !tag.FixCase("XXX", key) { - return Unit{}, errSyntax - } - if i := currency.Index(key); i >= 0 { - if i == xxx { - return Unit{}, nil - } - return Unit{uint16(i)}, nil - } - return Unit{}, errValue -} - -// MustParseISO is like ParseISO, but panics if the given currency unit -// cannot be parsed. It simplifies safe initialization of Unit values. -func MustParseISO(s string) Unit { - c, err := ParseISO(s) - if err != nil { - panic(err) - } - return c -} - -// FromRegion reports the currency unit that is currently legal tender in the -// given region according to CLDR. It will return false if region currently does -// not have a legal tender. -func FromRegion(r language.Region) (currency Unit, ok bool) { - x := regionToCode(r) - i := sort.Search(len(regionToCurrency), func(i int) bool { - return regionToCurrency[i].region >= x - }) - if i < len(regionToCurrency) && regionToCurrency[i].region == x { - return Unit{regionToCurrency[i].code}, true - } - return Unit{}, false -} - -// FromTag reports the most likely currency for the given tag. It considers the -// currency defined in the -u extension and infers the region if necessary. -func FromTag(t language.Tag) (Unit, language.Confidence) { - if cur := t.TypeForKey("cu"); len(cur) == 3 { - c, _ := ParseISO(cur) - return c, language.Exact - } - r, conf := t.Region() - if cur, ok := FromRegion(r); ok { - return cur, conf - } - return Unit{}, language.No -} - -var ( - // Undefined and testing. - XXX Unit = Unit{} - XTS Unit = Unit{xts} - - // G10 currencies https://en.wikipedia.org/wiki/G10_currencies. - USD Unit = Unit{usd} - EUR Unit = Unit{eur} - JPY Unit = Unit{jpy} - GBP Unit = Unit{gbp} - CHF Unit = Unit{chf} - AUD Unit = Unit{aud} - NZD Unit = Unit{nzd} - CAD Unit = Unit{cad} - SEK Unit = Unit{sek} - NOK Unit = Unit{nok} - - // Additional common currencies as defined by CLDR. - BRL Unit = Unit{brl} - CNY Unit = Unit{cny} - DKK Unit = Unit{dkk} - INR Unit = Unit{inr} - RUB Unit = Unit{rub} - HKD Unit = Unit{hkd} - IDR Unit = Unit{idr} - KRW Unit = Unit{krw} - MXN Unit = Unit{mxn} - PLN Unit = Unit{pln} - SAR Unit = Unit{sar} - THB Unit = Unit{thb} - TRY Unit = Unit{try} - TWD Unit = Unit{twd} - ZAR Unit = Unit{zar} - - // Precious metals. - XAG Unit = Unit{xag} - XAU Unit = Unit{xau} - XPT Unit = Unit{xpt} - XPD Unit = Unit{xpd} -) diff --git a/vendor/golang.org/x/text/currency/currency_test.go b/vendor/golang.org/x/text/currency/currency_test.go deleted file mode 100644 index db93a0ff..00000000 --- a/vendor/golang.org/x/text/currency/currency_test.go +++ /dev/null @@ -1,171 +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 currency - -import ( - "fmt" - "testing" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" -) - -var ( - cup = MustParseISO("CUP") - czk = MustParseISO("CZK") - xcd = MustParseISO("XCD") - zwr = MustParseISO("ZWR") -) - -func TestParseISO(t *testing.T) { - testCases := []struct { - in string - out Unit - ok bool - }{ - {"USD", USD, true}, - {"xxx", XXX, true}, - {"xts", XTS, true}, - {"XX", XXX, false}, - {"XXXX", XXX, false}, - {"", XXX, false}, // not well-formed - {"UUU", XXX, false}, // unknown - {"\u22A9", XXX, false}, // non-ASCII, printable - - {"aaa", XXX, false}, - {"zzz", XXX, false}, - {"000", XXX, false}, - {"999", XXX, false}, - {"---", XXX, false}, - {"\x00\x00\x00", XXX, false}, - {"\xff\xff\xff", XXX, false}, - } - for i, tc := range testCases { - if x, err := ParseISO(tc.in); x != tc.out || err == nil != tc.ok { - t.Errorf("%d:%s: was %s, %v; want %s, %v", i, tc.in, x, err == nil, tc.out, tc.ok) - } - } -} - -func TestFromRegion(t *testing.T) { - testCases := []struct { - region string - currency Unit - ok bool - }{ - {"NL", EUR, true}, - {"BE", EUR, true}, - {"AG", xcd, true}, - {"CH", CHF, true}, - {"CU", cup, true}, // first of multiple - {"DG", USD, true}, // does not have M49 code - {"150", XXX, false}, // implicit false - {"CP", XXX, false}, // explicit false in CLDR - {"CS", XXX, false}, // all expired - {"ZZ", XXX, false}, // none match - } - for _, tc := range testCases { - cur, ok := FromRegion(language.MustParseRegion(tc.region)) - if cur != tc.currency || ok != tc.ok { - t.Errorf("%s: got %v, %v; want %v, %v", tc.region, cur, ok, tc.currency, tc.ok) - } - } -} - -func TestFromTag(t *testing.T) { - testCases := []struct { - tag string - currency Unit - conf language.Confidence - }{ - {"nl", EUR, language.Low}, // nl also spoken outside Euro land. - {"nl-BE", EUR, language.Exact}, // region is known - {"pt", BRL, language.Low}, - {"en", USD, language.Low}, - {"en-u-cu-eur", EUR, language.Exact}, - {"tlh", XXX, language.No}, // Klingon has no country. - {"es-419", XXX, language.No}, - {"und", USD, language.Low}, - } - for _, tc := range testCases { - cur, conf := FromTag(language.MustParse(tc.tag)) - if cur != tc.currency || conf != tc.conf { - t.Errorf("%s: got %v, %v; want %v, %v", tc.tag, cur, conf, tc.currency, tc.conf) - } - } -} - -func TestTable(t *testing.T) { - for i := 4; i < len(currency); i += 4 { - if a, b := currency[i-4:i-1], currency[i:i+3]; a >= b { - t.Errorf("currency unordered at element %d: %s >= %s", i, a, b) - } - } - // First currency has index 1, last is numCurrencies. - if c := currency.Elem(1)[:3]; c != "ADP" { - t.Errorf("first was %q; want ADP", c) - } - if c := currency.Elem(numCurrencies)[:3]; c != "ZWR" { - t.Errorf("last was %q; want ZWR", c) - } -} - -func TestKindRounding(t *testing.T) { - testCases := []struct { - kind Kind - cur Unit - scale int - inc int - }{ - {Standard, USD, 2, 1}, - {Standard, CHF, 2, 1}, - {Cash, CHF, 2, 5}, - {Standard, TWD, 2, 1}, - {Cash, TWD, 0, 1}, - {Standard, czk, 2, 1}, - {Cash, czk, 0, 1}, - {Standard, zwr, 2, 1}, - {Cash, zwr, 0, 1}, - {Standard, KRW, 0, 1}, - {Cash, KRW, 0, 1}, // Cash defaults to standard. - } - for i, tc := range testCases { - if scale, inc := tc.kind.Rounding(tc.cur); scale != tc.scale && inc != tc.inc { - t.Errorf("%d: got %d, %d; want %d, %d", i, scale, inc, tc.scale, tc.inc) - } - } -} - -const body = `package main -import ( - "fmt" - "golang.org/x/text/currency" -) -func main() { - %s -} -` - -func TestLinking(t *testing.T) { - base := getSize(t, `fmt.Print(currency.CLDRVersion)`) - symbols := getSize(t, `fmt.Print(currency.Symbol(currency.USD))`) - if d := symbols - base; d < 2*1024 { - t.Errorf("size(symbols)-size(base) was %d; want > 2K", d) - } -} - -func getSize(t *testing.T, main string) int { - size, err := testtext.CodeSize(fmt.Sprintf(body, main)) - if err != nil { - t.Skipf("skipping link size test; binary size could not be determined: %v", err) - } - return size -} - -func BenchmarkString(b *testing.B) { - for i := 0; i < b.N; i++ { - USD.String() - } -} diff --git a/vendor/golang.org/x/text/currency/example_test.go b/vendor/golang.org/x/text/currency/example_test.go deleted file mode 100644 index f7984aa7..00000000 --- a/vendor/golang.org/x/text/currency/example_test.go +++ /dev/null @@ -1,27 +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 currency_test - -import ( - "fmt" - "time" - - "golang.org/x/text/currency" -) - -func ExampleQuery() { - t1799, _ := time.Parse("2006-01-02", "1799-01-01") - for it := currency.Query(currency.Date(t1799)); it.Next(); { - from := "" - if t, ok := it.From(); ok { - from = t.Format("2006-01-01") - } - fmt.Printf("%v is used in %v since: %v\n", it.Unit(), it.Region(), from) - } - // Output: - // GBP is used in GB since: 1694-07-07 - // GIP is used in GI since: 1713-01-01 - // USD is used in US since: 1792-01-01 -} diff --git a/vendor/golang.org/x/text/currency/format.go b/vendor/golang.org/x/text/currency/format.go deleted file mode 100644 index 97ce2d94..00000000 --- a/vendor/golang.org/x/text/currency/format.go +++ /dev/null @@ -1,215 +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 currency - -import ( - "fmt" - "io" - "sort" - - "golang.org/x/text/internal" - "golang.org/x/text/internal/format" - "golang.org/x/text/language" -) - -// Amount is an amount-currency unit pair. -type Amount struct { - amount interface{} // Change to decimal(64|128). - currency Unit -} - -// Currency reports the currency unit of this amount. -func (a Amount) Currency() Unit { return a.currency } - -// TODO: based on decimal type, but may make sense to customize a bit. -// func (a Amount) Decimal() -// func (a Amount) Int() (int64, error) -// func (a Amount) Fraction() (int64, error) -// func (a Amount) Rat() *big.Rat -// func (a Amount) Float() (float64, error) -// func (a Amount) Scale() uint -// func (a Amount) Precision() uint -// func (a Amount) Sign() int -// -// Add/Sub/Div/Mul/Round. - -var space = []byte(" ") - -// Format implements fmt.Formatter. It accepts format.State for -// language-specific rendering. -func (a Amount) Format(s fmt.State, verb rune) { - v := formattedValue{ - currency: a.currency, - amount: a.amount, - format: defaultFormat, - } - v.Format(s, verb) -} - -// formattedValue is currency amount or unit that implements language-sensitive -// formatting. -type formattedValue struct { - currency Unit - amount interface{} // Amount, Unit, or number. - format *options -} - -// Format implements fmt.Formatter. It accepts format.State for -// language-specific rendering. -func (v formattedValue) Format(s fmt.State, verb rune) { - var lang int - if state, ok := s.(format.State); ok { - lang, _ = language.CompactIndex(state.Language()) - } - - // Get the options. Use DefaultFormat if not present. - opt := v.format - if opt == nil { - opt = defaultFormat - } - cur := v.currency - if cur.index == 0 { - cur = opt.currency - } - - // TODO: use pattern. - io.WriteString(s, opt.symbol(lang, cur)) - if v.amount != nil { - s.Write(space) - - // TODO: apply currency-specific rounding - scale, _ := opt.kind.Rounding(cur) - if _, ok := s.Precision(); !ok { - fmt.Fprintf(s, "%.*f", scale, v.amount) - } else { - fmt.Fprint(s, v.amount) - } - } -} - -// Formatter decorates a given number, Unit or Amount with formatting options. -type Formatter func(amount interface{}) formattedValue - -// func (f Formatter) Options(opts ...Option) Formatter - -// TODO: call this a Formatter or FormatFunc? - -var dummy = USD.Amount(0) - -// adjust creates a new Formatter based on the adjustments of fn on f. -func (f Formatter) adjust(fn func(*options)) Formatter { - var o options = *(f(dummy).format) - fn(&o) - return o.format -} - -// Default creates a new Formatter that defaults to currency unit c if a numeric -// value is passed that is not associated with a currency. -func (f Formatter) Default(currency Unit) Formatter { - return f.adjust(func(o *options) { o.currency = currency }) -} - -// Kind sets the kind of the underlying currency unit. -func (f Formatter) Kind(k Kind) Formatter { - return f.adjust(func(o *options) { o.kind = k }) -} - -var defaultFormat *options = ISO(dummy).format - -var ( - // Uses Narrow symbols. Overrides Symbol, if present. - NarrowSymbol Formatter = Formatter(formNarrow) - - // Use Symbols instead of ISO codes, when available. - Symbol Formatter = Formatter(formSymbol) - - // Use ISO code as symbol. - ISO Formatter = Formatter(formISO) - - // TODO: - // // Use full name as symbol. - // Name Formatter -) - -// options configures rendering and rounding options for an Amount. -type options struct { - currency Unit - kind Kind - - symbol func(compactIndex int, c Unit) string -} - -func (o *options) format(amount interface{}) formattedValue { - v := formattedValue{format: o} - switch x := amount.(type) { - case Amount: - v.amount = x.amount - v.currency = x.currency - case *Amount: - v.amount = x.amount - v.currency = x.currency - case Unit: - v.currency = x - case *Unit: - v.currency = *x - default: - if o.currency.index == 0 { - panic("cannot format number without a currency being set") - } - // TODO: Must be a number. - v.amount = x - v.currency = o.currency - } - return v -} - -var ( - optISO = options{symbol: lookupISO} - optSymbol = options{symbol: lookupSymbol} - optNarrow = options{symbol: lookupNarrow} -) - -// These need to be functions, rather than curried methods, as curried methods -// are evaluated at init time, causing tables to be included unconditionally. -func formISO(x interface{}) formattedValue { return optISO.format(x) } -func formSymbol(x interface{}) formattedValue { return optSymbol.format(x) } -func formNarrow(x interface{}) formattedValue { return optNarrow.format(x) } - -func lookupISO(x int, c Unit) string { return c.String() } -func lookupSymbol(x int, c Unit) string { return normalSymbol.lookup(x, c) } -func lookupNarrow(x int, c Unit) string { return narrowSymbol.lookup(x, c) } - -type symbolIndex struct { - index []uint16 // position corresponds with compact index of language. - data []curToIndex -} - -var ( - normalSymbol = symbolIndex{normalLangIndex, normalSymIndex} - narrowSymbol = symbolIndex{narrowLangIndex, narrowSymIndex} -) - -func (x *symbolIndex) lookup(lang int, c Unit) string { - for { - index := x.data[x.index[lang]:x.index[lang+1]] - i := sort.Search(len(index), func(i int) bool { - return index[i].cur >= c.index - }) - if i < len(index) && index[i].cur == c.index { - x := index[i].idx - start := x + 1 - end := start + uint16(symbols[x]) - if start == end { - return c.String() - } - return symbols[start:end] - } - if lang == 0 { - break - } - lang = int(internal.Parent[lang]) - } - return c.String() -} diff --git a/vendor/golang.org/x/text/currency/format_test.go b/vendor/golang.org/x/text/currency/format_test.go deleted file mode 100644 index 0aa0d58a..00000000 --- a/vendor/golang.org/x/text/currency/format_test.go +++ /dev/null @@ -1,70 +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 currency - -import ( - "testing" - - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -var ( - en = language.English - fr = language.French - en_US = language.AmericanEnglish - en_GB = language.BritishEnglish - en_AU = language.MustParse("en-AU") - und = language.Und -) - -func TestFormatting(t *testing.T) { - testCases := []struct { - tag language.Tag - value interface{} - format Formatter - want string - }{ - 0: {en, USD.Amount(0.1), nil, "USD 0.10"}, - 1: {en, XPT.Amount(1.0), Symbol, "XPT 1.00"}, - - 2: {en, USD.Amount(2.0), ISO, "USD 2.00"}, - 3: {und, USD.Amount(3.0), Symbol, "US$ 3.00"}, - 4: {en, USD.Amount(4.0), Symbol, "$ 4.00"}, - - 5: {en, USD.Amount(5.20), NarrowSymbol, "$ 5.20"}, - 6: {en, AUD.Amount(6.20), Symbol, "A$ 6.20"}, - - 7: {en_AU, AUD.Amount(7.20), Symbol, "$ 7.20"}, - 8: {en_GB, USD.Amount(8.20), Symbol, "US$ 8.20"}, - - 9: {en, 9.0, Symbol.Default(EUR), "€ 9.00"}, - 10: {en, 10.123, Symbol.Default(KRW), "₩ 10"}, - 11: {fr, 11.52, Symbol.Default(TWD), "TWD 11.52"}, - 12: {en, 12.123, Symbol.Default(czk), "CZK 12.12"}, - 13: {en, 13.123, Symbol.Default(czk).Kind(Cash), "CZK 13"}, - 14: {en, 14.12345, ISO.Default(MustParseISO("CLF")), "CLF 14.1235"}, - 15: {en, USD.Amount(15.00), ISO.Default(TWD), "USD 15.00"}, - 16: {en, KRW.Amount(16.00), ISO.Kind(Cash), "KRW 16"}, - - // TODO: support integers as well. - - 17: {en, USD, nil, "USD"}, - 18: {en, USD, ISO, "USD"}, - 19: {en, USD, Symbol, "$"}, - 20: {en_GB, USD, Symbol, "US$"}, - 21: {en_AU, USD, NarrowSymbol, "$"}, - } - for i, tc := range testCases { - p := message.NewPrinter(tc.tag) - v := tc.value - if tc.format != nil { - v = tc.format(v) - } - if got := p.Sprint(v); got != tc.want { - t.Errorf("%d: got %q; want %q", i, got, tc.want) - } - } -} diff --git a/vendor/golang.org/x/text/currency/gen.go b/vendor/golang.org/x/text/currency/gen.go deleted file mode 100644 index 0952d414..00000000 --- a/vendor/golang.org/x/text/currency/gen.go +++ /dev/null @@ -1,400 +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. - -// +build ignore - -// Generator for currency-related data. - -package main - -import ( - "flag" - "fmt" - "log" - "os" - "sort" - "strconv" - "strings" - "time" - - "golang.org/x/text/internal" - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/tag" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -var ( - test = flag.Bool("test", false, - "test existing tables; can be used to compare web data with package data.") - outputFile = flag.String("output", "tables.go", "output file") - - draft = flag.String("draft", - "contributed", - `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) -) - -func main() { - gen.Init() - - gen.Repackage("gen_common.go", "common.go", "currency") - - // Read the CLDR zip file. - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("supplemental", "main") - d.SetSectionFilter("numbers") - data, err := d.DecodeZip(r) - if err != nil { - log.Fatalf("DecodeZip: %v", err) - } - - w := gen.NewCodeWriter() - defer w.WriteGoFile(*outputFile, "currency") - - fmt.Fprintln(w, `import "golang.org/x/text/internal/tag"`) - - gen.WriteCLDRVersion(w) - b := &builder{} - b.genCurrencies(w, data.Supplemental()) - b.genSymbols(w, data) -} - -var constants = []string{ - // Undefined and testing. - "XXX", "XTS", - // G11 currencies https://en.wikipedia.org/wiki/G10_currencies. - "USD", "EUR", "JPY", "GBP", "CHF", "AUD", "NZD", "CAD", "SEK", "NOK", "DKK", - // Precious metals. - "XAG", "XAU", "XPT", "XPD", - - // Additional common currencies as defined by CLDR. - "BRL", "CNY", "INR", "RUB", "HKD", "IDR", "KRW", "MXN", "PLN", "SAR", - "THB", "TRY", "TWD", "ZAR", -} - -type builder struct { - currencies tag.Index - numCurrencies int -} - -func (b *builder) genCurrencies(w *gen.CodeWriter, data *cldr.SupplementalData) { - // 3-letter ISO currency codes - // Start with dummy to let index start at 1. - currencies := []string{"\x00\x00\x00\x00"} - - // currency codes - for _, reg := range data.CurrencyData.Region { - for _, cur := range reg.Currency { - currencies = append(currencies, cur.Iso4217) - } - } - // Not included in the list for some reasons: - currencies = append(currencies, "MVP") - - sort.Strings(currencies) - // Unique the elements. - k := 0 - for i := 1; i < len(currencies); i++ { - if currencies[k] != currencies[i] { - currencies[k+1] = currencies[i] - k++ - } - } - currencies = currencies[:k+1] - - // Close with dummy for simpler and faster searching. - currencies = append(currencies, "\xff\xff\xff\xff") - - // Write currency values. - fmt.Fprintln(w, "const (") - for _, c := range constants { - index := sort.SearchStrings(currencies, c) - fmt.Fprintf(w, "\t%s = %d\n", strings.ToLower(c), index) - } - fmt.Fprint(w, ")") - - // Compute currency-related data that we merge into the table. - for _, info := range data.CurrencyData.Fractions[0].Info { - if info.Iso4217 == "DEFAULT" { - continue - } - standard := getRoundingIndex(info.Digits, info.Rounding, 0) - cash := getRoundingIndex(info.CashDigits, info.CashRounding, standard) - - index := sort.SearchStrings(currencies, info.Iso4217) - currencies[index] += mkCurrencyInfo(standard, cash) - } - - // Set default values for entries that weren't touched. - for i, c := range currencies { - if len(c) == 3 { - currencies[i] += mkCurrencyInfo(0, 0) - } - } - - b.currencies = tag.Index(strings.Join(currencies, "")) - w.WriteComment(` - currency holds an alphabetically sorted list of canonical 3-letter currency - identifiers. Each identifier is followed by a byte of type currencyInfo, - defined in gen_common.go.`) - w.WriteConst("currency", b.currencies) - - // Hack alert: gofmt indents a trailing comment after an indented string. - // Ensure that the next thing written is not a comment. - b.numCurrencies = (len(b.currencies) / 4) - 2 - w.WriteConst("numCurrencies", b.numCurrencies) - - // Create a table that maps regions to currencies. - regionToCurrency := []toCurrency{} - - for _, reg := range data.CurrencyData.Region { - if len(reg.Iso3166) != 2 { - log.Fatalf("Unexpected group %q in region data", reg.Iso3166) - } - if len(reg.Currency) == 0 { - continue - } - cur := reg.Currency[0] - if cur.To != "" || cur.Tender == "false" { - continue - } - regionToCurrency = append(regionToCurrency, toCurrency{ - region: regionToCode(language.MustParseRegion(reg.Iso3166)), - code: uint16(b.currencies.Index([]byte(cur.Iso4217))), - }) - } - sort.Sort(byRegion(regionToCurrency)) - - w.WriteType(toCurrency{}) - w.WriteVar("regionToCurrency", regionToCurrency) - - // Create a table that maps regions to currencies. - regionData := []regionInfo{} - - for _, reg := range data.CurrencyData.Region { - if len(reg.Iso3166) != 2 { - log.Fatalf("Unexpected group %q in region data", reg.Iso3166) - } - for _, cur := range reg.Currency { - from, _ := time.Parse("2006-01-02", cur.From) - to, _ := time.Parse("2006-01-02", cur.To) - code := uint16(b.currencies.Index([]byte(cur.Iso4217))) - if cur.Tender == "false" { - code |= nonTenderBit - } - regionData = append(regionData, regionInfo{ - region: regionToCode(language.MustParseRegion(reg.Iso3166)), - code: code, - from: toDate(from), - to: toDate(to), - }) - } - } - sort.Stable(byRegionCode(regionData)) - - w.WriteType(regionInfo{}) - w.WriteVar("regionData", regionData) -} - -type regionInfo struct { - region uint16 - code uint16 // 0x8000 not legal tender - from uint32 - to uint32 -} - -type byRegionCode []regionInfo - -func (a byRegionCode) Len() int { return len(a) } -func (a byRegionCode) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a byRegionCode) Less(i, j int) bool { return a[i].region < a[j].region } - -type toCurrency struct { - region uint16 - code uint16 -} - -type byRegion []toCurrency - -func (a byRegion) Len() int { return len(a) } -func (a byRegion) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a byRegion) Less(i, j int) bool { return a[i].region < a[j].region } - -func mkCurrencyInfo(standard, cash int) string { - return string([]byte{byte(cash<<cashShift | standard)}) -} - -func getRoundingIndex(digits, rounding string, defIndex int) int { - round := roundings[defIndex] // default - - if digits != "" { - round.scale = parseUint8(digits) - } - if rounding != "" && rounding != "0" { // 0 means 1 here in CLDR - round.increment = parseUint8(rounding) - } - - // Will panic if the entry doesn't exist: - for i, r := range roundings { - if r == round { - return i - } - } - log.Fatalf("Rounding entry %#v does not exist.", round) - panic("unreachable") -} - -// genSymbols generates the symbols used for currencies. Most symbols are -// defined in root and there is only very small variation per language. -// The following rules apply: -// - A symbol can be requested as normal or narrow. -// - If a symbol is not defined for a currency, it defaults to its ISO code. -func (b *builder) genSymbols(w *gen.CodeWriter, data *cldr.CLDR) { - d, err := cldr.ParseDraft(*draft) - if err != nil { - log.Fatalf("filter: %v", err) - } - - const ( - normal = iota - narrow - numTypes - ) - // language -> currency -> type -> symbol - var symbols [language.NumCompactTags][][numTypes]*string - - // Collect symbol information per language. - for _, lang := range data.Locales() { - ldml := data.RawLDML(lang) - if ldml.Numbers == nil || ldml.Numbers.Currencies == nil { - continue - } - - langIndex, ok := language.CompactIndex(language.MustParse(lang)) - if !ok { - log.Fatalf("No compact index for language %s", lang) - } - - symbols[langIndex] = make([][numTypes]*string, b.numCurrencies+1) - - for _, c := range ldml.Numbers.Currencies.Currency { - syms := cldr.MakeSlice(&c.Symbol) - syms.SelectDraft(d) - - for _, sym := range c.Symbol { - v := sym.Data() - if v == c.Type { - // We define "" to mean the ISO symbol. - v = "" - } - cur := b.currencies.Index([]byte(c.Type)) - // XXX gets reassigned to 0 in the package's code. - if c.Type == "XXX" { - cur = 0 - } - if cur == -1 { - fmt.Println("Unsupported:", c.Type) - continue - } - - switch sym.Alt { - case "": - symbols[langIndex][cur][normal] = &v - case "narrow": - symbols[langIndex][cur][narrow] = &v - } - } - } - } - - // Remove values identical to the parent. - for langIndex, data := range symbols { - for curIndex, curs := range data { - for typ, sym := range curs { - if sym == nil { - continue - } - for p := uint16(langIndex); p != 0; { - p = internal.Parent[p] - x := symbols[p] - if x == nil { - continue - } - if v := x[curIndex][typ]; v != nil || p == 0 { - // Value is equal to the default value root value is undefined. - parentSym := "" - if v != nil { - parentSym = *v - } - if parentSym == *sym { - // Value is the same as parent. - data[curIndex][typ] = nil - } - break - } - } - } - } - } - - // Create symbol index. - symbolData := []byte{0} - symbolLookup := map[string]uint16{"": 0} // 0 means default, so block that value. - for _, data := range symbols { - for _, curs := range data { - for _, sym := range curs { - if sym == nil { - continue - } - if _, ok := symbolLookup[*sym]; !ok { - symbolLookup[*sym] = uint16(len(symbolData)) - symbolData = append(symbolData, byte(len(*sym))) - symbolData = append(symbolData, *sym...) - } - } - } - } - w.WriteComment(` - symbols holds symbol data of the form <n> <str>, where n is the length of - the symbol string str.`) - w.WriteConst("symbols", string(symbolData)) - - // Create index from language to currency lookup to symbol. - type curToIndex struct{ cur, idx uint16 } - w.WriteType(curToIndex{}) - - prefix := []string{"normal", "narrow"} - // Create data for regular and narrow symbol data. - for typ := normal; typ <= narrow; typ++ { - - indexes := []curToIndex{} // maps currency to symbol index - languages := []uint16{} - - for _, data := range symbols { - languages = append(languages, uint16(len(indexes))) - for curIndex, curs := range data { - - if sym := curs[typ]; sym != nil { - indexes = append(indexes, curToIndex{uint16(curIndex), symbolLookup[*sym]}) - } - } - } - languages = append(languages, uint16(len(indexes))) - - w.WriteVar(prefix[typ]+"LangIndex", languages) - w.WriteVar(prefix[typ]+"SymIndex", indexes) - } -} -func parseUint8(str string) uint8 { - x, err := strconv.ParseUint(str, 10, 8) - if err != nil { - // Show line number of where this function was called. - log.New(os.Stderr, "", log.Lshortfile).Output(2, err.Error()) - os.Exit(1) - } - return uint8(x) -} diff --git a/vendor/golang.org/x/text/currency/gen_common.go b/vendor/golang.org/x/text/currency/gen_common.go deleted file mode 100644 index e1cea249..00000000 --- a/vendor/golang.org/x/text/currency/gen_common.go +++ /dev/null @@ -1,71 +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. - -// +build ignore - -package main - -import ( - "time" - - "golang.org/x/text/language" -) - -// This file contains code common to gen.go and the package code. - -const ( - cashShift = 3 - roundMask = 0x7 - - nonTenderBit = 0x8000 -) - -// currencyInfo contains information about a currency. -// bits 0..2: index into roundings for standard rounding -// bits 3..5: index into roundings for cash rounding -type currencyInfo byte - -// roundingType defines the scale (number of fractional decimals) and increments -// in terms of units of size 10^-scale. For example, for scale == 2 and -// increment == 1, the currency is rounded to units of 0.01. -type roundingType struct { - scale, increment uint8 -} - -// roundings contains rounding data for currencies. This struct is -// created by hand as it is very unlikely to change much. -var roundings = [...]roundingType{ - {2, 1}, // default - {0, 1}, - {1, 1}, - {3, 1}, - {4, 1}, - {2, 5}, // cash rounding alternative - {2, 50}, -} - -// regionToCode returns a 16-bit region code. Only two-letter codes are -// supported. (Three-letter codes are not needed.) -func regionToCode(r language.Region) uint16 { - if s := r.String(); len(s) == 2 { - return uint16(s[0])<<8 | uint16(s[1]) - } - return 0 -} - -func toDate(t time.Time) uint32 { - y := t.Year() - if y == 1 { - return 0 - } - date := uint32(y) << 4 - date |= uint32(t.Month()) - date <<= 5 - date |= uint32(t.Day()) - return date -} - -func fromDate(date uint32) time.Time { - return time.Date(int(date>>9), time.Month((date>>5)&0xf), int(date&0x1f), 0, 0, 0, 0, time.UTC) -} diff --git a/vendor/golang.org/x/text/currency/query.go b/vendor/golang.org/x/text/currency/query.go deleted file mode 100644 index 7bf9430a..00000000 --- a/vendor/golang.org/x/text/currency/query.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. - -package currency - -import ( - "sort" - "time" - - "golang.org/x/text/language" -) - -// QueryIter represents a set of Units. The default set includes all Units that -// are currently in use as legal tender in any Region. -type QueryIter interface { - // Next returns true if there is a next element available. - // It must be called before any of the other methods are called. - Next() bool - - // Unit returns the unit of the current iteration. - Unit() Unit - - // Region returns the Region for the current iteration. - Region() language.Region - - // From returns the date from which the unit was used in the region. - // It returns false if this date is unknown. - From() (time.Time, bool) - - // To returns the date up till which the unit was used in the region. - // It returns false if this date is unknown or if the unit is still in use. - To() (time.Time, bool) - - // IsTender reports whether the unit is a legal tender in the region during - // the specified date range. - IsTender() bool -} - -// Query represents a set of Units. The default set includes all Units that are -// currently in use as legal tender in any Region. -func Query(options ...QueryOption) QueryIter { - it := &iter{ - end: len(regionData), - date: 0xFFFFFFFF, - } - for _, fn := range options { - fn(it) - } - return it -} - -// NonTender returns a new query that also includes matching Units that are not -// legal tender. -var NonTender QueryOption = nonTender - -func nonTender(i *iter) { - i.nonTender = true -} - -// Historical selects the units for all dates. -var Historical QueryOption = historical - -func historical(i *iter) { - i.date = hist -} - -// A QueryOption can be used to change the set of unit information returned by -// a query. -type QueryOption func(*iter) - -// Date queries the units that were in use at the given point in history. -func Date(t time.Time) QueryOption { - d := toDate(t) - return func(i *iter) { - i.date = d - } -} - -// Region limits the query to only return entries for the given region. -func Region(r language.Region) QueryOption { - p, end := len(regionData), len(regionData) - x := regionToCode(r) - i := sort.Search(len(regionData), func(i int) bool { - return regionData[i].region >= x - }) - if i < len(regionData) && regionData[i].region == x { - p = i - for i++; i < len(regionData) && regionData[i].region == x; i++ { - } - end = i - } - return func(i *iter) { - i.p, i.end = p, end - } -} - -const ( - hist = 0x00 - now = 0xFFFFFFFF -) - -type iter struct { - *regionInfo - p, end int - date uint32 - nonTender bool -} - -func (i *iter) Next() bool { - for ; i.p < i.end; i.p++ { - i.regionInfo = &regionData[i.p] - if !i.nonTender && !i.IsTender() { - continue - } - if i.date == hist || (i.from <= i.date && (i.to == 0 || i.date <= i.to)) { - i.p++ - return true - } - } - return false -} - -func (r *regionInfo) Region() language.Region { - // TODO: this could be much faster. - var buf [2]byte - buf[0] = uint8(r.region >> 8) - buf[1] = uint8(r.region) - return language.MustParseRegion(string(buf[:])) -} - -func (r *regionInfo) Unit() Unit { - return Unit{r.code &^ nonTenderBit} -} - -func (r *regionInfo) IsTender() bool { - return r.code&nonTenderBit == 0 -} - -func (r *regionInfo) From() (time.Time, bool) { - if r.from == 0 { - return time.Time{}, false - } - return fromDate(r.from), true -} - -func (r *regionInfo) To() (time.Time, bool) { - if r.to == 0 { - return time.Time{}, false - } - return fromDate(r.to), true -} diff --git a/vendor/golang.org/x/text/currency/query_test.go b/vendor/golang.org/x/text/currency/query_test.go deleted file mode 100644 index 6caea9db..00000000 --- a/vendor/golang.org/x/text/currency/query_test.go +++ /dev/null @@ -1,107 +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 currency - -import ( - "testing" - "time" - - "golang.org/x/text/language" -) - -func TestQuery(t *testing.T) { - r := func(region string) language.Region { - return language.MustParseRegion(region) - } - t1800, _ := time.Parse("2006-01-02", "1800-01-01") - type result struct { - region language.Region - unit Unit - isTender bool - from, to string - } - testCases := []struct { - name string - opts []QueryOption - results []result - }{{ - name: "XA", - opts: []QueryOption{Region(r("XA"))}, - results: []result{}, - }, { - name: "AC", - opts: []QueryOption{Region(r("AC"))}, - results: []result{ - {r("AC"), MustParseISO("SHP"), true, "1976-01-01", ""}, - }, - }, { - name: "US", - opts: []QueryOption{Region(r("US"))}, - results: []result{ - {r("US"), MustParseISO("USD"), true, "1792-01-01", ""}, - }, - }, { - name: "US-hist", - opts: []QueryOption{Region(r("US")), Historical}, - results: []result{ - {r("US"), MustParseISO("USD"), true, "1792-01-01", ""}, - }, - }, { - name: "US-non-tender", - opts: []QueryOption{Region(r("US")), NonTender}, - results: []result{ - {r("US"), MustParseISO("USD"), true, "1792-01-01", ""}, - {r("US"), MustParseISO("USN"), false, "", ""}, - }, - }, { - name: "US-historical+non-tender", - opts: []QueryOption{Region(r("US")), Historical, NonTender}, - results: []result{ - {r("US"), MustParseISO("USD"), true, "1792-01-01", ""}, - {r("US"), MustParseISO("USN"), false, "", ""}, - {r("US"), MustParseISO("USS"), false, "", "2014-03-01"}, - }, - }, { - name: "1800", - opts: []QueryOption{Date(t1800)}, - results: []result{ - {r("CH"), MustParseISO("CHF"), true, "1799-03-17", ""}, - {r("GB"), MustParseISO("GBP"), true, "1694-07-27", ""}, - {r("GI"), MustParseISO("GIP"), true, "1713-01-01", ""}, - // The date for IE and PR seem wrong, so these may be updated at - // some point causing the tests to fail. - {r("IE"), MustParseISO("GBP"), true, "1800-01-01", "1922-01-01"}, - {r("PR"), MustParseISO("ESP"), true, "1800-01-01", "1898-12-10"}, - {r("US"), MustParseISO("USD"), true, "1792-01-01", ""}, - }, - }} - for _, tc := range testCases { - n := 0 - for it := Query(tc.opts...); it.Next(); n++ { - if n < len(tc.results) { - got := result{ - it.Region(), - it.Unit(), - it.IsTender(), - getTime(it.From()), - getTime(it.To()), - } - if got != tc.results[n] { - t.Errorf("%s:%d: got %v; want %v", tc.name, n, got, tc.results[n]) - } - } - } - if n != len(tc.results) { - t.Errorf("%s: unexpected number of results: got %d; want %d", tc.name, n, len(tc.results)) - } - } -} - -func getTime(t time.Time, ok bool) string { - if !ok { - return "" - } - return t.Format("2006-01-02") -} diff --git a/vendor/golang.org/x/text/currency/tables.go b/vendor/golang.org/x/text/currency/tables.go deleted file mode 100644 index cc3a2e30..00000000 --- a/vendor/golang.org/x/text/currency/tables.go +++ /dev/null @@ -1,2629 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package currency - -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 ( - xxx = 285 - xts = 283 - usd = 252 - eur = 94 - jpy = 133 - gbp = 99 - chf = 61 - aud = 19 - nzd = 192 - cad = 58 - sek = 219 - nok = 190 - dkk = 82 - xag = 266 - xau = 267 - xpt = 280 - xpd = 278 - brl = 46 - cny = 68 - inr = 125 - rub = 210 - hkd = 114 - idr = 120 - krw = 141 - mxn = 178 - pln = 201 - sar = 213 - thb = 235 - try = 244 - twd = 246 - zar = 293 -) - -// currency holds an alphabetically sorted list of canonical 3-letter currency -// identifiers. Each identifier is followed by a byte of type currencyInfo, -// defined in gen_common.go. -const currency tag.Index = "" + // Size: 1208 bytes - "\x00\x00\x00\x00ADP\x09AED\x00AFA\x00AFN\x09ALK\x00ALL\x09AMD\x09ANG\x00" + - "AOA\x00AOK\x00AON\x00AOR\x00ARA\x00ARL\x00ARM\x00ARP\x00ARS\x00ATS\x00AU" + - "D\x00AWG\x00AZM\x00AZN\x00BAD\x00BAM\x00BAN\x00BBD\x00BDT\x00BEC\x00BEF" + - "\x00BEL\x00BGL\x00BGM\x00BGN\x00BGO\x00BHD\x1bBIF\x09BMD\x00BND\x00BOB" + - "\x00BOL\x00BOP\x00BOV\x00BRB\x00BRC\x00BRE\x00BRL\x00BRN\x00BRR\x00BRZ" + - "\x00BSD\x00BTN\x00BUK\x00BWP\x00BYB\x00BYN\x00BYR\x09BZD\x00CAD(CDF\x00C" + - "HE\x00CHF(CHW\x00CLE\x00CLF$CLP\x09CNH\x00CNX\x00CNY\x00COP\x09COU\x00CR" + - "C\x08CSD\x00CSK\x00CUC\x00CUP\x00CVE\x00CYP\x00CZK\x08DDM\x00DEM\x00DJF" + - "\x09DKK0DOP\x00DZD\x00ECS\x00ECV\x00EEK\x00EGP\x00ERN\x00ESA\x00ESB\x00E" + - "SP\x09ETB\x00EUR\x00FIM\x00FJD\x00FKP\x00FRF\x00GBP\x00GEK\x00GEL\x00GHC" + - "\x00GHS\x00GIP\x00GMD\x00GNF\x09GNS\x00GQE\x00GRD\x00GTQ\x00GWE\x00GWP" + - "\x00GYD\x09HKD\x00HNL\x00HRD\x00HRK\x00HTG\x00HUF\x08IDR\x09IEP\x00ILP" + - "\x00ILR\x00ILS\x00INR\x00IQD\x09IRR\x09ISJ\x00ISK\x09ITL\x09JMD\x00JOD" + - "\x1bJPY\x09KES\x00KGS\x00KHR\x00KMF\x09KPW\x09KRH\x00KRO\x00KRW\x09KWD" + - "\x1bKYD\x00KZT\x00LAK\x09LBP\x09LKR\x00LRD\x00LSL\x00LTL\x00LTT\x00LUC" + - "\x00LUF\x09LUL\x00LVL\x00LVR\x00LYD\x1bMAD\x00MAF\x00MCF\x00MDC\x00MDL" + - "\x00MGA\x09MGF\x09MKD\x00MKN\x00MLF\x00MMK\x09MNT\x09MOP\x00MRO\x09MTL" + - "\x00MTP\x00MUR\x09MVP\x00MVR\x00MWK\x00MXN\x00MXP\x00MXV\x00MYR\x00MZE" + - "\x00MZM\x00MZN\x00NAD\x00NGN\x00NIC\x00NIO\x00NLG\x00NOK\x08NPR\x00NZD" + - "\x00OMR\x1bPAB\x00PEI\x00PEN\x00PES\x00PGK\x00PHP\x00PKR\x09PLN\x00PLZ" + - "\x00PTE\x00PYG\x09QAR\x00RHD\x00ROL\x00RON\x00RSD\x09RUB\x00RUR\x00RWF" + - "\x09SAR\x00SBD\x00SCR\x00SDD\x00SDG\x00SDP\x00SEK\x08SGD\x00SHP\x00SIT" + - "\x00SKK\x00SLL\x09SOS\x09SRD\x00SRG\x00SSP\x00STD\x09STN\x00SUR\x00SVC" + - "\x00SYP\x09SZL\x00THB\x00TJR\x00TJS\x00TMM\x09TMT\x00TND\x1bTOP\x00TPE" + - "\x00TRL\x09TRY\x00TTD\x00TWD\x08TZS\x09UAH\x00UAK\x00UGS\x00UGX\x09USD" + - "\x00USN\x00USS\x00UYI\x09UYP\x00UYU\x00UZS\x09VEB\x00VEF\x00VND\x09VNN" + - "\x00VUV\x09WST\x00XAF\x09XAG\x00XAU\x00XBA\x00XBB\x00XBC\x00XBD\x00XCD" + - "\x00XDR\x00XEU\x00XFO\x00XFU\x00XOF\x09XPD\x00XPF\x09XPT\x00XRE\x00XSU" + - "\x00XTS\x00XUA\x00XXX\x00YDD\x00YER\x09YUD\x00YUM\x00YUN\x00YUR\x00ZAL" + - "\x00ZAR\x00ZMK\x09ZMW\x00ZRN\x00ZRZ\x00ZWD\x09ZWL\x00ZWR\x00\xff\xff\xff" + - "\xff" - -const numCurrencies = 300 - -type toCurrency struct { - region uint16 - code uint16 -} - -var regionToCurrency = []toCurrency{ // 255 elements - 0: {region: 0x4143, code: 0xdd}, - 1: {region: 0x4144, code: 0x5e}, - 2: {region: 0x4145, code: 0x2}, - 3: {region: 0x4146, code: 0x4}, - 4: {region: 0x4147, code: 0x110}, - 5: {region: 0x4149, code: 0x110}, - 6: {region: 0x414c, code: 0x6}, - 7: {region: 0x414d, code: 0x7}, - 8: {region: 0x414f, code: 0x9}, - 9: {region: 0x4152, code: 0x11}, - 10: {region: 0x4153, code: 0xfc}, - 11: {region: 0x4154, code: 0x5e}, - 12: {region: 0x4155, code: 0x13}, - 13: {region: 0x4157, code: 0x14}, - 14: {region: 0x4158, code: 0x5e}, - 15: {region: 0x415a, code: 0x16}, - 16: {region: 0x4241, code: 0x18}, - 17: {region: 0x4242, code: 0x1a}, - 18: {region: 0x4244, code: 0x1b}, - 19: {region: 0x4245, code: 0x5e}, - 20: {region: 0x4246, code: 0x115}, - 21: {region: 0x4247, code: 0x21}, - 22: {region: 0x4248, code: 0x23}, - 23: {region: 0x4249, code: 0x24}, - 24: {region: 0x424a, code: 0x115}, - 25: {region: 0x424c, code: 0x5e}, - 26: {region: 0x424d, code: 0x25}, - 27: {region: 0x424e, code: 0x26}, - 28: {region: 0x424f, code: 0x27}, - 29: {region: 0x4251, code: 0xfc}, - 30: {region: 0x4252, code: 0x2e}, - 31: {region: 0x4253, code: 0x32}, - 32: {region: 0x4254, code: 0x33}, - 33: {region: 0x4256, code: 0xbe}, - 34: {region: 0x4257, code: 0x35}, - 35: {region: 0x4259, code: 0x37}, - 36: {region: 0x425a, code: 0x39}, - 37: {region: 0x4341, code: 0x3a}, - 38: {region: 0x4343, code: 0x13}, - 39: {region: 0x4344, code: 0x3b}, - 40: {region: 0x4346, code: 0x109}, - 41: {region: 0x4347, code: 0x109}, - 42: {region: 0x4348, code: 0x3d}, - 43: {region: 0x4349, code: 0x115}, - 44: {region: 0x434b, code: 0xc0}, - 45: {region: 0x434c, code: 0x41}, - 46: {region: 0x434d, code: 0x109}, - 47: {region: 0x434e, code: 0x44}, - 48: {region: 0x434f, code: 0x45}, - 49: {region: 0x4352, code: 0x47}, - 50: {region: 0x4355, code: 0x4b}, - 51: {region: 0x4356, code: 0x4c}, - 52: {region: 0x4357, code: 0x8}, - 53: {region: 0x4358, code: 0x13}, - 54: {region: 0x4359, code: 0x5e}, - 55: {region: 0x435a, code: 0x4e}, - 56: {region: 0x4445, code: 0x5e}, - 57: {region: 0x4447, code: 0xfc}, - 58: {region: 0x444a, code: 0x51}, - 59: {region: 0x444b, code: 0x52}, - 60: {region: 0x444d, code: 0x110}, - 61: {region: 0x444f, code: 0x53}, - 62: {region: 0x445a, code: 0x54}, - 63: {region: 0x4541, code: 0x5e}, - 64: {region: 0x4543, code: 0xfc}, - 65: {region: 0x4545, code: 0x5e}, - 66: {region: 0x4547, code: 0x58}, - 67: {region: 0x4548, code: 0x9e}, - 68: {region: 0x4552, code: 0x59}, - 69: {region: 0x4553, code: 0x5e}, - 70: {region: 0x4554, code: 0x5d}, - 71: {region: 0x4555, code: 0x5e}, - 72: {region: 0x4649, code: 0x5e}, - 73: {region: 0x464a, code: 0x60}, - 74: {region: 0x464b, code: 0x61}, - 75: {region: 0x464d, code: 0xfc}, - 76: {region: 0x464f, code: 0x52}, - 77: {region: 0x4652, code: 0x5e}, - 78: {region: 0x4741, code: 0x109}, - 79: {region: 0x4742, code: 0x63}, - 80: {region: 0x4744, code: 0x110}, - 81: {region: 0x4745, code: 0x65}, - 82: {region: 0x4746, code: 0x5e}, - 83: {region: 0x4747, code: 0x63}, - 84: {region: 0x4748, code: 0x67}, - 85: {region: 0x4749, code: 0x68}, - 86: {region: 0x474c, code: 0x52}, - 87: {region: 0x474d, code: 0x69}, - 88: {region: 0x474e, code: 0x6a}, - 89: {region: 0x4750, code: 0x5e}, - 90: {region: 0x4751, code: 0x109}, - 91: {region: 0x4752, code: 0x5e}, - 92: {region: 0x4753, code: 0x63}, - 93: {region: 0x4754, code: 0x6e}, - 94: {region: 0x4755, code: 0xfc}, - 95: {region: 0x4757, code: 0x115}, - 96: {region: 0x4759, code: 0x71}, - 97: {region: 0x484b, code: 0x72}, - 98: {region: 0x484d, code: 0x13}, - 99: {region: 0x484e, code: 0x73}, - 100: {region: 0x4852, code: 0x75}, - 101: {region: 0x4854, code: 0x76}, - 102: {region: 0x4855, code: 0x77}, - 103: {region: 0x4943, code: 0x5e}, - 104: {region: 0x4944, code: 0x78}, - 105: {region: 0x4945, code: 0x5e}, - 106: {region: 0x494c, code: 0x7c}, - 107: {region: 0x494d, code: 0x63}, - 108: {region: 0x494e, code: 0x7d}, - 109: {region: 0x494f, code: 0xfc}, - 110: {region: 0x4951, code: 0x7e}, - 111: {region: 0x4952, code: 0x7f}, - 112: {region: 0x4953, code: 0x81}, - 113: {region: 0x4954, code: 0x5e}, - 114: {region: 0x4a45, code: 0x63}, - 115: {region: 0x4a4d, code: 0x83}, - 116: {region: 0x4a4f, code: 0x84}, - 117: {region: 0x4a50, code: 0x85}, - 118: {region: 0x4b45, code: 0x86}, - 119: {region: 0x4b47, code: 0x87}, - 120: {region: 0x4b48, code: 0x88}, - 121: {region: 0x4b49, code: 0x13}, - 122: {region: 0x4b4d, code: 0x89}, - 123: {region: 0x4b4e, code: 0x110}, - 124: {region: 0x4b50, code: 0x8a}, - 125: {region: 0x4b52, code: 0x8d}, - 126: {region: 0x4b57, code: 0x8e}, - 127: {region: 0x4b59, code: 0x8f}, - 128: {region: 0x4b5a, code: 0x90}, - 129: {region: 0x4c41, code: 0x91}, - 130: {region: 0x4c42, code: 0x92}, - 131: {region: 0x4c43, code: 0x110}, - 132: {region: 0x4c49, code: 0x3d}, - 133: {region: 0x4c4b, code: 0x93}, - 134: {region: 0x4c52, code: 0x94}, - 135: {region: 0x4c53, code: 0x125}, - 136: {region: 0x4c54, code: 0x5e}, - 137: {region: 0x4c55, code: 0x5e}, - 138: {region: 0x4c56, code: 0x5e}, - 139: {region: 0x4c59, code: 0x9d}, - 140: {region: 0x4d41, code: 0x9e}, - 141: {region: 0x4d43, code: 0x5e}, - 142: {region: 0x4d44, code: 0xa2}, - 143: {region: 0x4d45, code: 0x5e}, - 144: {region: 0x4d46, code: 0x5e}, - 145: {region: 0x4d47, code: 0xa3}, - 146: {region: 0x4d48, code: 0xfc}, - 147: {region: 0x4d4b, code: 0xa5}, - 148: {region: 0x4d4c, code: 0x115}, - 149: {region: 0x4d4d, code: 0xa8}, - 150: {region: 0x4d4e, code: 0xa9}, - 151: {region: 0x4d4f, code: 0xaa}, - 152: {region: 0x4d50, code: 0xfc}, - 153: {region: 0x4d51, code: 0x5e}, - 154: {region: 0x4d52, code: 0xab}, - 155: {region: 0x4d53, code: 0x110}, - 156: {region: 0x4d54, code: 0x5e}, - 157: {region: 0x4d55, code: 0xae}, - 158: {region: 0x4d56, code: 0xb0}, - 159: {region: 0x4d57, code: 0xb1}, - 160: {region: 0x4d58, code: 0xb2}, - 161: {region: 0x4d59, code: 0xb5}, - 162: {region: 0x4d5a, code: 0xb8}, - 163: {region: 0x4e41, code: 0xb9}, - 164: {region: 0x4e43, code: 0x117}, - 165: {region: 0x4e45, code: 0x115}, - 166: {region: 0x4e46, code: 0x13}, - 167: {region: 0x4e47, code: 0xba}, - 168: {region: 0x4e49, code: 0xbc}, - 169: {region: 0x4e4c, code: 0x5e}, - 170: {region: 0x4e4f, code: 0xbe}, - 171: {region: 0x4e50, code: 0xbf}, - 172: {region: 0x4e52, code: 0x13}, - 173: {region: 0x4e55, code: 0xc0}, - 174: {region: 0x4e5a, code: 0xc0}, - 175: {region: 0x4f4d, code: 0xc1}, - 176: {region: 0x5041, code: 0xc2}, - 177: {region: 0x5045, code: 0xc4}, - 178: {region: 0x5046, code: 0x117}, - 179: {region: 0x5047, code: 0xc6}, - 180: {region: 0x5048, code: 0xc7}, - 181: {region: 0x504b, code: 0xc8}, - 182: {region: 0x504c, code: 0xc9}, - 183: {region: 0x504d, code: 0x5e}, - 184: {region: 0x504e, code: 0xc0}, - 185: {region: 0x5052, code: 0xfc}, - 186: {region: 0x5053, code: 0x7c}, - 187: {region: 0x5054, code: 0x5e}, - 188: {region: 0x5057, code: 0xfc}, - 189: {region: 0x5059, code: 0xcc}, - 190: {region: 0x5141, code: 0xcd}, - 191: {region: 0x5245, code: 0x5e}, - 192: {region: 0x524f, code: 0xd0}, - 193: {region: 0x5253, code: 0xd1}, - 194: {region: 0x5255, code: 0xd2}, - 195: {region: 0x5257, code: 0xd4}, - 196: {region: 0x5341, code: 0xd5}, - 197: {region: 0x5342, code: 0xd6}, - 198: {region: 0x5343, code: 0xd7}, - 199: {region: 0x5344, code: 0xd9}, - 200: {region: 0x5345, code: 0xdb}, - 201: {region: 0x5347, code: 0xdc}, - 202: {region: 0x5348, code: 0xdd}, - 203: {region: 0x5349, code: 0x5e}, - 204: {region: 0x534a, code: 0xbe}, - 205: {region: 0x534b, code: 0x5e}, - 206: {region: 0x534c, code: 0xe0}, - 207: {region: 0x534d, code: 0x5e}, - 208: {region: 0x534e, code: 0x115}, - 209: {region: 0x534f, code: 0xe1}, - 210: {region: 0x5352, code: 0xe2}, - 211: {region: 0x5353, code: 0xe4}, - 212: {region: 0x5354, code: 0xe6}, - 213: {region: 0x5356, code: 0xfc}, - 214: {region: 0x5358, code: 0x8}, - 215: {region: 0x5359, code: 0xe9}, - 216: {region: 0x535a, code: 0xea}, - 217: {region: 0x5441, code: 0x63}, - 218: {region: 0x5443, code: 0xfc}, - 219: {region: 0x5444, code: 0x109}, - 220: {region: 0x5446, code: 0x5e}, - 221: {region: 0x5447, code: 0x115}, - 222: {region: 0x5448, code: 0xeb}, - 223: {region: 0x544a, code: 0xed}, - 224: {region: 0x544b, code: 0xc0}, - 225: {region: 0x544c, code: 0xfc}, - 226: {region: 0x544d, code: 0xef}, - 227: {region: 0x544e, code: 0xf0}, - 228: {region: 0x544f, code: 0xf1}, - 229: {region: 0x5452, code: 0xf4}, - 230: {region: 0x5454, code: 0xf5}, - 231: {region: 0x5456, code: 0x13}, - 232: {region: 0x5457, code: 0xf6}, - 233: {region: 0x545a, code: 0xf7}, - 234: {region: 0x5541, code: 0xf8}, - 235: {region: 0x5547, code: 0xfb}, - 236: {region: 0x554d, code: 0xfc}, - 237: {region: 0x5553, code: 0xfc}, - 238: {region: 0x5559, code: 0x101}, - 239: {region: 0x555a, code: 0x102}, - 240: {region: 0x5641, code: 0x5e}, - 241: {region: 0x5643, code: 0x110}, - 242: {region: 0x5645, code: 0x104}, - 243: {region: 0x5647, code: 0xfc}, - 244: {region: 0x5649, code: 0xfc}, - 245: {region: 0x564e, code: 0x105}, - 246: {region: 0x5655, code: 0x107}, - 247: {region: 0x5746, code: 0x117}, - 248: {region: 0x5753, code: 0x108}, - 249: {region: 0x584b, code: 0x5e}, - 250: {region: 0x5945, code: 0x11f}, - 251: {region: 0x5954, code: 0x5e}, - 252: {region: 0x5a41, code: 0x125}, - 253: {region: 0x5a4d, code: 0x127}, - 254: {region: 0x5a57, code: 0xfc}, -} // Size: 1044 bytes - -type regionInfo struct { - region uint16 - code uint16 - from uint32 - to uint32 -} - -var regionData = []regionInfo{ // 495 elements - 0: {region: 0x4143, code: 0xdd, from: 0xf7021, to: 0x0}, - 1: {region: 0x4144, code: 0x5e, from: 0xf9e21, to: 0x0}, - 2: {region: 0x4144, code: 0x5c, from: 0xea221, to: 0xfa45c}, - 3: {region: 0x4144, code: 0x62, from: 0xf5021, to: 0xfa451}, - 4: {region: 0x4144, code: 0x1, from: 0xf2021, to: 0xfa39f}, - 5: {region: 0x4145, code: 0x2, from: 0xf6ab3, to: 0x0}, - 6: {region: 0x4146, code: 0x4, from: 0xfa547, to: 0x0}, - 7: {region: 0x4146, code: 0x3, from: 0xf0e6e, to: 0xfa59f}, - 8: {region: 0x4147, code: 0x110, from: 0xf5b46, to: 0x0}, - 9: {region: 0x4149, code: 0x110, from: 0xf5b46, to: 0x0}, - 10: {region: 0x414c, code: 0x6, from: 0xf5b10, to: 0x0}, - 11: {region: 0x414c, code: 0x5, from: 0xf3561, to: 0xf5b10}, - 12: {region: 0x414d, code: 0x7, from: 0xf9376, to: 0x0}, - 13: {region: 0x414d, code: 0xd3, from: 0xf8f99, to: 0xf9376}, - 14: {region: 0x414d, code: 0xe7, from: 0xf5221, to: 0xf8f99}, - 15: {region: 0x414f, code: 0x9, from: 0xf9f8d, to: 0x0}, - 16: {region: 0x414f, code: 0xc, from: 0xf96e1, to: 0xfa041}, - 17: {region: 0x414f, code: 0xb, from: 0xf8d39, to: 0xfa041}, - 18: {region: 0x414f, code: 0xa, from: 0xf7228, to: 0xf8e61}, - 19: {region: 0x4151, code: 0x811d, from: 0x0, to: 0x0}, - 20: {region: 0x4152, code: 0x11, from: 0xf9021, to: 0x0}, - 21: {region: 0x4152, code: 0xd, from: 0xf82ce, to: 0xf9021}, - 22: {region: 0x4152, code: 0x10, from: 0xf7ec1, to: 0xf82ce}, - 23: {region: 0x4152, code: 0xe, from: 0xf6421, to: 0xf7ec1}, - 24: {region: 0x4152, code: 0xf, from: 0xeb365, to: 0xf6421}, - 25: {region: 0x4153, code: 0xfc, from: 0xee0f0, to: 0x0}, - 26: {region: 0x4154, code: 0x5e, from: 0xf9e21, to: 0x0}, - 27: {region: 0x4154, code: 0x12, from: 0xf3784, to: 0xfa45c}, - 28: {region: 0x4155, code: 0x13, from: 0xf5c4e, to: 0x0}, - 29: {region: 0x4157, code: 0x14, from: 0xf8421, to: 0x0}, - 30: {region: 0x4157, code: 0x8, from: 0xf28aa, to: 0xf8421}, - 31: {region: 0x4158, code: 0x5e, from: 0xf9e21, to: 0x0}, - 32: {region: 0x415a, code: 0x16, from: 0xfac21, to: 0x0}, - 33: {region: 0x415a, code: 0x15, from: 0xf9376, to: 0xfad9f}, - 34: {region: 0x415a, code: 0xd3, from: 0xf8f99, to: 0xf9421}, - 35: {region: 0x415a, code: 0xe7, from: 0xf5221, to: 0xf8f99}, - 36: {region: 0x4241, code: 0x18, from: 0xf9621, to: 0x0}, - 37: {region: 0x4241, code: 0x19, from: 0xf950f, to: 0xf9ae1}, - 38: {region: 0x4241, code: 0x17, from: 0xf90e1, to: 0xf950f}, - 39: {region: 0x4241, code: 0x123, from: 0xf90e1, to: 0xf9341}, - 40: {region: 0x4241, code: 0x122, from: 0xf8c21, to: 0xf90e1}, - 41: {region: 0x4241, code: 0x120, from: 0xf5c21, to: 0xf8c21}, - 42: {region: 0x4242, code: 0x1a, from: 0xf6b83, to: 0x0}, - 43: {region: 0x4242, code: 0x110, from: 0xf5b46, to: 0xf6b83}, - 44: {region: 0x4244, code: 0x1b, from: 0xf6821, to: 0x0}, - 45: {region: 0x4244, code: 0xc8, from: 0xf3881, to: 0xf6821}, - 46: {region: 0x4244, code: 0x7d, from: 0xe5711, to: 0xf3881}, - 47: {region: 0x4245, code: 0x5e, from: 0xf9e21, to: 0x0}, - 48: {region: 0x4245, code: 0x1d, from: 0xe4e47, to: 0xfa45c}, - 49: {region: 0x4245, code: 0xbd, from: 0xe318f, to: 0xe4e47}, - 50: {region: 0x4245, code: 0x801e, from: 0xf6421, to: 0xf8c65}, - 51: {region: 0x4245, code: 0x801c, from: 0xf6421, to: 0xf8c65}, - 52: {region: 0x4246, code: 0x115, from: 0xf8104, to: 0x0}, - 53: {region: 0x4247, code: 0x21, from: 0xf9ee5, to: 0x0}, - 54: {region: 0x4247, code: 0x1f, from: 0xf5421, to: 0xf9ee5}, - 55: {region: 0x4247, code: 0x20, from: 0xf40ac, to: 0xf5421}, - 56: {region: 0x4247, code: 0x22, from: 0xeaee8, to: 0xf40ac}, - 57: {region: 0x4248, code: 0x23, from: 0xf5b50, to: 0x0}, - 58: {region: 0x4249, code: 0x24, from: 0xf58b3, to: 0x0}, - 59: {region: 0x424a, code: 0x115, from: 0xf6f7e, to: 0x0}, - 60: {region: 0x424c, code: 0x5e, from: 0xf9e21, to: 0x0}, - 61: {region: 0x424c, code: 0x62, from: 0xf5021, to: 0xfa451}, - 62: {region: 0x424d, code: 0x25, from: 0xf6446, to: 0x0}, - 63: {region: 0x424e, code: 0x26, from: 0xf5ecc, to: 0x0}, - 64: {region: 0x424e, code: 0xb5, from: 0xf5730, to: 0xf5ecc}, - 65: {region: 0x424f, code: 0x27, from: 0xf8621, to: 0x0}, - 66: {region: 0x424f, code: 0x29, from: 0xf5621, to: 0xf859f}, - 67: {region: 0x424f, code: 0x28, from: 0xe8ed7, to: 0xf5621}, - 68: {region: 0x424f, code: 0x802a, from: 0x0, to: 0x0}, - 69: {region: 0x4251, code: 0xfc, from: 0xfb621, to: 0x0}, - 70: {region: 0x4251, code: 0x8, from: 0xfb54a, to: 0xfb621}, - 71: {region: 0x4252, code: 0x2e, from: 0xf94e1, to: 0x0}, - 72: {region: 0x4252, code: 0x30, from: 0xf9301, to: 0xf94e1}, - 73: {region: 0x4252, code: 0x2d, from: 0xf8c70, to: 0xf9301}, - 74: {region: 0x4252, code: 0x2f, from: 0xf8a2f, to: 0xf8c70}, - 75: {region: 0x4252, code: 0x2c, from: 0xf845c, to: 0xf8a2f}, - 76: {region: 0x4252, code: 0x2b, from: 0xf5e4d, to: 0xf845c}, - 77: {region: 0x4252, code: 0x31, from: 0xf2d61, to: 0xf5e4d}, - 78: {region: 0x4253, code: 0x32, from: 0xf5cb9, to: 0x0}, - 79: {region: 0x4254, code: 0x33, from: 0xf6c90, to: 0x0}, - 80: {region: 0x4254, code: 0x7d, from: 0xee621, to: 0x0}, - 81: {region: 0x4255, code: 0x34, from: 0xf40e1, to: 0xf8ad2}, - 82: {region: 0x4256, code: 0xbe, from: 0xee2c7, to: 0x0}, - 83: {region: 0x4257, code: 0x35, from: 0xf7117, to: 0x0}, - 84: {region: 0x4257, code: 0x125, from: 0xf524e, to: 0xf7117}, - 85: {region: 0x4259, code: 0x37, from: 0xfc0e1, to: 0x0}, - 86: {region: 0x4259, code: 0x38, from: 0xfa021, to: 0xfc221}, - 87: {region: 0x4259, code: 0x36, from: 0xf9501, to: 0xfa19f}, - 88: {region: 0x4259, code: 0xd3, from: 0xf8f99, to: 0xf9568}, - 89: {region: 0x4259, code: 0xe7, from: 0xf5221, to: 0xf8f99}, - 90: {region: 0x425a, code: 0x39, from: 0xf6c21, to: 0x0}, - 91: {region: 0x4341, code: 0x3a, from: 0xe8421, to: 0x0}, - 92: {region: 0x4343, code: 0x13, from: 0xf5c4e, to: 0x0}, - 93: {region: 0x4344, code: 0x3b, from: 0xf9ce1, to: 0x0}, - 94: {region: 0x4344, code: 0x128, from: 0xf9361, to: 0xf9ce1}, - 95: {region: 0x4344, code: 0x129, from: 0xf675b, to: 0xf9361}, - 96: {region: 0x4346, code: 0x109, from: 0xf9221, to: 0x0}, - 97: {region: 0x4347, code: 0x109, from: 0xf9221, to: 0x0}, - 98: {region: 0x4348, code: 0x3d, from: 0xe0e71, to: 0x0}, - 99: {region: 0x4348, code: 0x803c, from: 0x0, to: 0x0}, - 100: {region: 0x4348, code: 0x803e, from: 0x0, to: 0x0}, - 101: {region: 0x4349, code: 0x115, from: 0xf4d84, to: 0x0}, - 102: {region: 0x434b, code: 0xc0, from: 0xf5eea, to: 0x0}, - 103: {region: 0x434c, code: 0x41, from: 0xf6f3d, to: 0x0}, - 104: {region: 0x434c, code: 0x3f, from: 0xf5021, to: 0xf6f3d}, - 105: {region: 0x434c, code: 0x8040, from: 0x0, to: 0x0}, - 106: {region: 0x434d, code: 0x109, from: 0xf6a81, to: 0x0}, - 107: {region: 0x434e, code: 0x44, from: 0xf4261, to: 0x0}, - 108: {region: 0x434e, code: 0x8043, from: 0xf7621, to: 0xf9d9f}, - 109: {region: 0x434e, code: 0x8042, from: 0xfb4f3, to: 0x0}, - 110: {region: 0x434f, code: 0x45, from: 0xee221, to: 0x0}, - 111: {region: 0x434f, code: 0x8046, from: 0x0, to: 0x0}, - 112: {region: 0x4350, code: 0x811d, from: 0x0, to: 0x0}, - 113: {region: 0x4352, code: 0x47, from: 0xed15a, to: 0x0}, - 114: {region: 0x4353, code: 0x48, from: 0xfa4af, to: 0xfacc3}, - 115: {region: 0x4353, code: 0x5e, from: 0xfa644, to: 0xfacc3}, - 116: {region: 0x4353, code: 0x121, from: 0xf9438, to: 0xfa4af}, - 117: {region: 0x4355, code: 0x4b, from: 0xe8621, to: 0x0}, - 118: {region: 0x4355, code: 0x4a, from: 0xf9421, to: 0x0}, - 119: {region: 0x4355, code: 0xfc, from: 0xed621, to: 0xf4e21}, - 120: {region: 0x4356, code: 0x4c, from: 0xef421, to: 0x0}, - 121: {region: 0x4356, code: 0xcb, from: 0xeeeb6, to: 0xf6ee5}, - 122: {region: 0x4357, code: 0x8, from: 0xfb54a, to: 0x0}, - 123: {region: 0x4358, code: 0x13, from: 0xf5c4e, to: 0x0}, - 124: {region: 0x4359, code: 0x5e, from: 0xfb021, to: 0x0}, - 125: {region: 0x4359, code: 0x4d, from: 0xef52a, to: 0xfb03f}, - 126: {region: 0x435a, code: 0x4e, from: 0xf9221, to: 0x0}, - 127: {region: 0x435a, code: 0x49, from: 0xf42c1, to: 0xf9261}, - 128: {region: 0x4444, code: 0x4f, from: 0xf38f4, to: 0xf8d42}, - 129: {region: 0x4445, code: 0x5e, from: 0xf9e21, to: 0x0}, - 130: {region: 0x4445, code: 0x50, from: 0xf38d4, to: 0xfa45c}, - 131: {region: 0x4447, code: 0xfc, from: 0xf5b68, to: 0x0}, - 132: {region: 0x444a, code: 0x51, from: 0xf72db, to: 0x0}, - 133: {region: 0x444b, code: 0x52, from: 0xea2bb, to: 0x0}, - 134: {region: 0x444d, code: 0x110, from: 0xf5b46, to: 0x0}, - 135: {region: 0x444f, code: 0x53, from: 0xf3741, to: 0x0}, - 136: {region: 0x444f, code: 0xfc, from: 0xee2d5, to: 0xf3741}, - 137: {region: 0x445a, code: 0x54, from: 0xf5881, to: 0x0}, - 138: {region: 0x4541, code: 0x5e, from: 0xf9e21, to: 0x0}, - 139: {region: 0x4543, code: 0xfc, from: 0xfa142, to: 0x0}, - 140: {region: 0x4543, code: 0x55, from: 0xeb881, to: 0xfa142}, - 141: {region: 0x4543, code: 0x8056, from: 0xf92b7, to: 0xfa029}, - 142: {region: 0x4545, code: 0x5e, from: 0xfb621, to: 0x0}, - 143: {region: 0x4545, code: 0x57, from: 0xf90d5, to: 0xfb59f}, - 144: {region: 0x4545, code: 0xe7, from: 0xf5221, to: 0xf90d4}, - 145: {region: 0x4547, code: 0x58, from: 0xebb6e, to: 0x0}, - 146: {region: 0x4548, code: 0x9e, from: 0xf705a, to: 0x0}, - 147: {region: 0x4552, code: 0x59, from: 0xf9b68, to: 0x0}, - 148: {region: 0x4552, code: 0x5d, from: 0xf92b8, to: 0xf9b68}, - 149: {region: 0x4553, code: 0x5e, from: 0xf9e21, to: 0x0}, - 150: {region: 0x4553, code: 0x5c, from: 0xe9953, to: 0xfa45c}, - 151: {region: 0x4553, code: 0x805a, from: 0xf7421, to: 0xf7b9f}, - 152: {region: 0x4553, code: 0x805b, from: 0xf6e21, to: 0xf959f}, - 153: {region: 0x4554, code: 0x5d, from: 0xf712f, to: 0x0}, - 154: {region: 0x4555, code: 0x5e, from: 0xf9e21, to: 0x0}, - 155: {region: 0x4555, code: 0x8112, from: 0xf7621, to: 0xf9d9f}, - 156: {region: 0x4649, code: 0x5e, from: 0xf9e21, to: 0x0}, - 157: {region: 0x4649, code: 0x5f, from: 0xf5621, to: 0xfa45c}, - 158: {region: 0x464a, code: 0x60, from: 0xf622d, to: 0x0}, - 159: {region: 0x464b, code: 0x61, from: 0xeda21, to: 0x0}, - 160: {region: 0x464d, code: 0xfc, from: 0xf3021, to: 0x0}, - 161: {region: 0x464d, code: 0x85, from: 0xef543, to: 0xf3021}, - 162: {region: 0x464f, code: 0x52, from: 0xf3821, to: 0x0}, - 163: {region: 0x4652, code: 0x5e, from: 0xf9e21, to: 0x0}, - 164: {region: 0x4652, code: 0x62, from: 0xf5021, to: 0xfa451}, - 165: {region: 0x4741, code: 0x109, from: 0xf9221, to: 0x0}, - 166: {region: 0x4742, code: 0x63, from: 0xd3cfb, to: 0x0}, - 167: {region: 0x4744, code: 0x110, from: 0xf5e5b, to: 0x0}, - 168: {region: 0x4745, code: 0x65, from: 0xf9737, to: 0x0}, - 169: {region: 0x4745, code: 0x64, from: 0xf9285, to: 0xf9739}, - 170: {region: 0x4745, code: 0xd3, from: 0xf8f99, to: 0xf92cb}, - 171: {region: 0x4745, code: 0xe7, from: 0xf5221, to: 0xf8f99}, - 172: {region: 0x4746, code: 0x5e, from: 0xf9e21, to: 0x0}, - 173: {region: 0x4746, code: 0x62, from: 0xf5021, to: 0xfa451}, - 174: {region: 0x4747, code: 0x63, from: 0xe4c21, to: 0x0}, - 175: {region: 0x4748, code: 0x67, from: 0xfaee3, to: 0x0}, - 176: {region: 0x4748, code: 0x66, from: 0xf7669, to: 0xfaf9f}, - 177: {region: 0x4749, code: 0x68, from: 0xd6221, to: 0x0}, - 178: {region: 0x474c, code: 0x52, from: 0xea2bb, to: 0x0}, - 179: {region: 0x474d, code: 0x69, from: 0xf66e1, to: 0x0}, - 180: {region: 0x474e, code: 0x6a, from: 0xf8426, to: 0x0}, - 181: {region: 0x474e, code: 0x6b, from: 0xf6942, to: 0xf8426}, - 182: {region: 0x4750, code: 0x5e, from: 0xf9e21, to: 0x0}, - 183: {region: 0x4750, code: 0x62, from: 0xf5021, to: 0xfa451}, - 184: {region: 0x4751, code: 0x109, from: 0xf9221, to: 0x0}, - 185: {region: 0x4751, code: 0x6c, from: 0xf6ee7, to: 0xf84c1}, - 186: {region: 0x4752, code: 0x5e, from: 0xfa221, to: 0x0}, - 187: {region: 0x4752, code: 0x6d, from: 0xf44a1, to: 0xfa45c}, - 188: {region: 0x4753, code: 0x63, from: 0xee821, to: 0x0}, - 189: {region: 0x4754, code: 0x6e, from: 0xf0abb, to: 0x0}, - 190: {region: 0x4755, code: 0xfc, from: 0xf3115, to: 0x0}, - 191: {region: 0x4757, code: 0x115, from: 0xf9a7f, to: 0x0}, - 192: {region: 0x4757, code: 0x70, from: 0xf705c, to: 0xf9a7f}, - 193: {region: 0x4757, code: 0x6f, from: 0xef421, to: 0xf705c}, - 194: {region: 0x4759, code: 0x71, from: 0xf5cba, to: 0x0}, - 195: {region: 0x484b, code: 0x72, from: 0xece42, to: 0x0}, - 196: {region: 0x484d, code: 0x13, from: 0xf5e50, to: 0x0}, - 197: {region: 0x484e, code: 0x73, from: 0xf0c83, to: 0x0}, - 198: {region: 0x4852, code: 0x75, from: 0xf94be, to: 0x0}, - 199: {region: 0x4852, code: 0x74, from: 0xf8f97, to: 0xf9621}, - 200: {region: 0x4852, code: 0x122, from: 0xf8c21, to: 0xf8f97}, - 201: {region: 0x4852, code: 0x120, from: 0xf5c21, to: 0xf8c21}, - 202: {region: 0x4854, code: 0x76, from: 0xea11a, to: 0x0}, - 203: {region: 0x4854, code: 0xfc, from: 0xef621, to: 0x0}, - 204: {region: 0x4855, code: 0x77, from: 0xf34f7, to: 0x0}, - 205: {region: 0x4943, code: 0x5e, from: 0xf9e21, to: 0x0}, - 206: {region: 0x4944, code: 0x78, from: 0xf5b8d, to: 0x0}, - 207: {region: 0x4945, code: 0x5e, from: 0xf9e21, to: 0x0}, - 208: {region: 0x4945, code: 0x79, from: 0xf0421, to: 0xfa449}, - 209: {region: 0x4945, code: 0x63, from: 0xe1021, to: 0xf0421}, - 210: {region: 0x494c, code: 0x7c, from: 0xf8324, to: 0x0}, - 211: {region: 0x494c, code: 0x7b, from: 0xf7856, to: 0xf8324}, - 212: {region: 0x494c, code: 0x7a, from: 0xf3910, to: 0xf7856}, - 213: {region: 0x494d, code: 0x63, from: 0xe6023, to: 0x0}, - 214: {region: 0x494e, code: 0x7d, from: 0xe5711, to: 0x0}, - 215: {region: 0x494f, code: 0xfc, from: 0xf5b68, to: 0x0}, - 216: {region: 0x4951, code: 0x7e, from: 0xf1693, to: 0x0}, - 217: {region: 0x4951, code: 0x58, from: 0xf016b, to: 0xf1693}, - 218: {region: 0x4951, code: 0x7d, from: 0xf016b, to: 0xf1693}, - 219: {region: 0x4952, code: 0x7f, from: 0xf18ad, to: 0x0}, - 220: {region: 0x4953, code: 0x81, from: 0xf7a21, to: 0x0}, - 221: {region: 0x4953, code: 0x80, from: 0xefd81, to: 0xf7a21}, - 222: {region: 0x4953, code: 0x52, from: 0xea2bb, to: 0xefd81}, - 223: {region: 0x4954, code: 0x5e, from: 0xf9e21, to: 0x0}, - 224: {region: 0x4954, code: 0x82, from: 0xe8d18, to: 0xfa45c}, - 225: {region: 0x4a45, code: 0x63, from: 0xe5a21, to: 0x0}, - 226: {region: 0x4a4d, code: 0x83, from: 0xf6328, to: 0x0}, - 227: {region: 0x4a4f, code: 0x84, from: 0xf3ce1, to: 0x0}, - 228: {region: 0x4a50, code: 0x85, from: 0xe9ec1, to: 0x0}, - 229: {region: 0x4b45, code: 0x86, from: 0xf5d2e, to: 0x0}, - 230: {region: 0x4b47, code: 0x87, from: 0xf92aa, to: 0x0}, - 231: {region: 0x4b47, code: 0xd3, from: 0xf8f99, to: 0xf92aa}, - 232: {region: 0x4b47, code: 0xe7, from: 0xf5221, to: 0xf8f99}, - 233: {region: 0x4b48, code: 0x88, from: 0xf7874, to: 0x0}, - 234: {region: 0x4b49, code: 0x13, from: 0xf5c4e, to: 0x0}, - 235: {region: 0x4b4d, code: 0x89, from: 0xf6ee6, to: 0x0}, - 236: {region: 0x4b4e, code: 0x110, from: 0xf5b46, to: 0x0}, - 237: {region: 0x4b50, code: 0x8a, from: 0xf4e91, to: 0x0}, - 238: {region: 0x4b52, code: 0x8d, from: 0xf54ca, to: 0x0}, - 239: {region: 0x4b52, code: 0x8b, from: 0xf424f, to: 0xf54ca}, - 240: {region: 0x4b52, code: 0x8c, from: 0xf330f, to: 0xf424f}, - 241: {region: 0x4b57, code: 0x8e, from: 0xf5281, to: 0x0}, - 242: {region: 0x4b59, code: 0x8f, from: 0xf6621, to: 0x0}, - 243: {region: 0x4b59, code: 0x83, from: 0xf6328, to: 0xf6621}, - 244: {region: 0x4b5a, code: 0x90, from: 0xf9365, to: 0x0}, - 245: {region: 0x4c41, code: 0x91, from: 0xf778a, to: 0x0}, - 246: {region: 0x4c42, code: 0x92, from: 0xf3842, to: 0x0}, - 247: {region: 0x4c43, code: 0x110, from: 0xf5b46, to: 0x0}, - 248: {region: 0x4c49, code: 0x3d, from: 0xf0241, to: 0x0}, - 249: {region: 0x4c4b, code: 0x93, from: 0xf74b6, to: 0x0}, - 250: {region: 0x4c52, code: 0x94, from: 0xf3021, to: 0x0}, - 251: {region: 0x4c53, code: 0x125, from: 0xf524e, to: 0x0}, - 252: {region: 0x4c53, code: 0x95, from: 0xf7836, to: 0x0}, - 253: {region: 0x4c54, code: 0x5e, from: 0xfbe21, to: 0x0}, - 254: {region: 0x4c54, code: 0x96, from: 0xf92d9, to: 0xfbd9f}, - 255: {region: 0x4c54, code: 0x97, from: 0xf9141, to: 0xf92d9}, - 256: {region: 0x4c54, code: 0xe7, from: 0xf5221, to: 0xf9141}, - 257: {region: 0x4c55, code: 0x5e, from: 0xf9e21, to: 0x0}, - 258: {region: 0x4c55, code: 0x99, from: 0xf3124, to: 0xfa45c}, - 259: {region: 0x4c55, code: 0x8098, from: 0xf6421, to: 0xf8c65}, - 260: {region: 0x4c55, code: 0x809a, from: 0xf6421, to: 0xf8c65}, - 261: {region: 0x4c56, code: 0x5e, from: 0xfbc21, to: 0x0}, - 262: {region: 0x4c56, code: 0x9b, from: 0xf92dc, to: 0xfbb9f}, - 263: {region: 0x4c56, code: 0x9c, from: 0xf90a7, to: 0xf9351}, - 264: {region: 0x4c56, code: 0xe7, from: 0xf5221, to: 0xf90f4}, - 265: {region: 0x4c59, code: 0x9d, from: 0xf6721, to: 0x0}, - 266: {region: 0x4d41, code: 0x9e, from: 0xf4f51, to: 0x0}, - 267: {region: 0x4d41, code: 0x9f, from: 0xeb221, to: 0xf4f51}, - 268: {region: 0x4d43, code: 0x5e, from: 0xf9e21, to: 0x0}, - 269: {region: 0x4d43, code: 0x62, from: 0xf5021, to: 0xfa451}, - 270: {region: 0x4d43, code: 0xa0, from: 0xf5021, to: 0xfa451}, - 271: {region: 0x4d44, code: 0xa2, from: 0xf937d, to: 0x0}, - 272: {region: 0x4d44, code: 0xa1, from: 0xf90c1, to: 0xf937d}, - 273: {region: 0x4d45, code: 0x5e, from: 0xfa421, to: 0x0}, - 274: {region: 0x4d45, code: 0x50, from: 0xf9f42, to: 0xfa4af}, - 275: {region: 0x4d45, code: 0x121, from: 0xf9438, to: 0xfa4af}, - 276: {region: 0x4d46, code: 0x5e, from: 0xf9e21, to: 0x0}, - 277: {region: 0x4d46, code: 0x62, from: 0xf5021, to: 0xfa451}, - 278: {region: 0x4d47, code: 0xa3, from: 0xf7f61, to: 0x0}, - 279: {region: 0x4d47, code: 0xa4, from: 0xf56e1, to: 0xfa99f}, - 280: {region: 0x4d48, code: 0xfc, from: 0xf3021, to: 0x0}, - 281: {region: 0x4d4b, code: 0xa5, from: 0xf92b4, to: 0x0}, - 282: {region: 0x4d4b, code: 0xa6, from: 0xf909a, to: 0xf92b4}, - 283: {region: 0x4d4c, code: 0x115, from: 0xf80c1, to: 0x0}, - 284: {region: 0x4d4c, code: 0xa7, from: 0xf54e2, to: 0xf811f}, - 285: {region: 0x4d4c, code: 0x115, from: 0xf4d78, to: 0xf54e2}, - 286: {region: 0x4d4d, code: 0xa8, from: 0xf8ad2, to: 0x0}, - 287: {region: 0x4d4d, code: 0x34, from: 0xf40e1, to: 0xf8ad2}, - 288: {region: 0x4d4e, code: 0xa9, from: 0xef661, to: 0x0}, - 289: {region: 0x4d4f, code: 0xaa, from: 0xeda21, to: 0x0}, - 290: {region: 0x4d50, code: 0xfc, from: 0xf3021, to: 0x0}, - 291: {region: 0x4d51, code: 0x5e, from: 0xf9e21, to: 0x0}, - 292: {region: 0x4d51, code: 0x62, from: 0xf5021, to: 0xfa451}, - 293: {region: 0x4d52, code: 0xab, from: 0xf6add, to: 0x0}, - 294: {region: 0x4d52, code: 0x115, from: 0xf4d7c, to: 0xf6add}, - 295: {region: 0x4d53, code: 0x110, from: 0xf5e5b, to: 0x0}, - 296: {region: 0x4d54, code: 0x5e, from: 0xfb021, to: 0x0}, - 297: {region: 0x4d54, code: 0xac, from: 0xf60c7, to: 0xfb03f}, - 298: {region: 0x4d54, code: 0xad, from: 0xef50d, to: 0xf60c7}, - 299: {region: 0x4d55, code: 0xae, from: 0xf1c81, to: 0x0}, - 300: {region: 0x4d56, code: 0xb0, from: 0xf7ae1, to: 0x0}, - 301: {region: 0x4d57, code: 0xb1, from: 0xf664f, to: 0x0}, - 302: {region: 0x4d58, code: 0xb2, from: 0xf9221, to: 0x0}, - 303: {region: 0x4d58, code: 0xb3, from: 0xe3c21, to: 0xf919f}, - 304: {region: 0x4d58, code: 0x80b4, from: 0x0, to: 0x0}, - 305: {region: 0x4d59, code: 0xb5, from: 0xf5730, to: 0x0}, - 306: {region: 0x4d5a, code: 0xb8, from: 0xface1, to: 0x0}, - 307: {region: 0x4d5a, code: 0xb7, from: 0xf78d0, to: 0xfad9f}, - 308: {region: 0x4d5a, code: 0xb6, from: 0xf6ed9, to: 0xf78d0}, - 309: {region: 0x4e41, code: 0xb9, from: 0xf9221, to: 0x0}, - 310: {region: 0x4e41, code: 0x125, from: 0xf524e, to: 0x0}, - 311: {region: 0x4e43, code: 0x117, from: 0xf8221, to: 0x0}, - 312: {region: 0x4e45, code: 0x115, from: 0xf4d93, to: 0x0}, - 313: {region: 0x4e46, code: 0x13, from: 0xf5c4e, to: 0x0}, - 314: {region: 0x4e47, code: 0xba, from: 0xf6a21, to: 0x0}, - 315: {region: 0x4e49, code: 0xbc, from: 0xf8e9e, to: 0x0}, - 316: {region: 0x4e49, code: 0xbb, from: 0xf884f, to: 0xf8e9e}, - 317: {region: 0x4e4c, code: 0x5e, from: 0xf9e21, to: 0x0}, - 318: {region: 0x4e4c, code: 0xbd, from: 0xe2a21, to: 0xfa45c}, - 319: {region: 0x4e4f, code: 0xbe, from: 0xee2c7, to: 0x0}, - 320: {region: 0x4e4f, code: 0xdb, from: 0xea2bb, to: 0xee2c7}, - 321: {region: 0x4e50, code: 0xbf, from: 0xf1a21, to: 0x0}, - 322: {region: 0x4e50, code: 0x7d, from: 0xe9c21, to: 0xf5d51}, - 323: {region: 0x4e52, code: 0x13, from: 0xf5c4e, to: 0x0}, - 324: {region: 0x4e55, code: 0xc0, from: 0xf5eea, to: 0x0}, - 325: {region: 0x4e5a, code: 0xc0, from: 0xf5eea, to: 0x0}, - 326: {region: 0x4f4d, code: 0xc1, from: 0xf696b, to: 0x0}, - 327: {region: 0x5041, code: 0xc2, from: 0xedf64, to: 0x0}, - 328: {region: 0x5041, code: 0xfc, from: 0xedf72, to: 0x0}, - 329: {region: 0x5045, code: 0xc4, from: 0xf8ee1, to: 0x0}, - 330: {region: 0x5045, code: 0xc3, from: 0xf8241, to: 0xf8ee1}, - 331: {region: 0x5045, code: 0xc5, from: 0xe8e4e, to: 0xf8241}, - 332: {region: 0x5046, code: 0x117, from: 0xf339a, to: 0x0}, - 333: {region: 0x5047, code: 0xc6, from: 0xf6f30, to: 0x0}, - 334: {region: 0x5047, code: 0x13, from: 0xf5c4e, to: 0xf6f30}, - 335: {region: 0x5048, code: 0xc7, from: 0xf34e4, to: 0x0}, - 336: {region: 0x504b, code: 0xc8, from: 0xf3881, to: 0x0}, - 337: {region: 0x504b, code: 0x7d, from: 0xe5711, to: 0xf370f}, - 338: {region: 0x504c, code: 0xc9, from: 0xf9621, to: 0x0}, - 339: {region: 0x504c, code: 0xca, from: 0xf3d5c, to: 0xf959f}, - 340: {region: 0x504d, code: 0x5e, from: 0xf9e21, to: 0x0}, - 341: {region: 0x504d, code: 0x62, from: 0xf6995, to: 0xfa451}, - 342: {region: 0x504e, code: 0xc0, from: 0xf622d, to: 0x0}, - 343: {region: 0x5052, code: 0xfc, from: 0xed58a, to: 0x0}, - 344: {region: 0x5052, code: 0x5c, from: 0xe1021, to: 0xed58a}, - 345: {region: 0x5053, code: 0x7c, from: 0xf8324, to: 0x0}, - 346: {region: 0x5053, code: 0x84, from: 0xf984c, to: 0x0}, - 347: {region: 0x5053, code: 0x7a, from: 0xf5ec1, to: 0xf7856}, - 348: {region: 0x5053, code: 0x84, from: 0xf3ce1, to: 0xf5ec1}, - 349: {region: 0x5054, code: 0x5e, from: 0xf9e21, to: 0x0}, - 350: {region: 0x5054, code: 0xcb, from: 0xeeeb6, to: 0xfa45c}, - 351: {region: 0x5057, code: 0xfc, from: 0xf3021, to: 0x0}, - 352: {region: 0x5059, code: 0xcc, from: 0xf2f61, to: 0x0}, - 353: {region: 0x5141, code: 0xcd, from: 0xf6ab3, to: 0x0}, - 354: {region: 0x5245, code: 0x5e, from: 0xf9e21, to: 0x0}, - 355: {region: 0x5245, code: 0x62, from: 0xf6e21, to: 0xfa451}, - 356: {region: 0x524f, code: 0xd0, from: 0xfaae1, to: 0x0}, - 357: {region: 0x524f, code: 0xcf, from: 0xf403c, to: 0xfad9f}, - 358: {region: 0x5253, code: 0xd1, from: 0xfad59, to: 0x0}, - 359: {region: 0x5253, code: 0x48, from: 0xfa4af, to: 0xfad59}, - 360: {region: 0x5253, code: 0x121, from: 0xf9438, to: 0xfa4af}, - 361: {region: 0x5255, code: 0xd2, from: 0xf9e21, to: 0x0}, - 362: {region: 0x5255, code: 0xd3, from: 0xf8f99, to: 0xf9d9f}, - 363: {region: 0x5257, code: 0xd4, from: 0xf58b3, to: 0x0}, - 364: {region: 0x5341, code: 0xd5, from: 0xf4156, to: 0x0}, - 365: {region: 0x5342, code: 0xd6, from: 0xf7358, to: 0x0}, - 366: {region: 0x5342, code: 0x13, from: 0xf5c4e, to: 0xf74de}, - 367: {region: 0x5343, code: 0xd7, from: 0xedf61, to: 0x0}, - 368: {region: 0x5344, code: 0xd9, from: 0xfae2a, to: 0x0}, - 369: {region: 0x5344, code: 0xd8, from: 0xf90c8, to: 0xfaede}, - 370: {region: 0x5344, code: 0xda, from: 0xf4a88, to: 0xf9cc1}, - 371: {region: 0x5344, code: 0x58, from: 0xec233, to: 0xf4c21}, - 372: {region: 0x5344, code: 0x63, from: 0xec233, to: 0xf4c21}, - 373: {region: 0x5345, code: 0xdb, from: 0xea2bb, to: 0x0}, - 374: {region: 0x5347, code: 0xdc, from: 0xf5ecc, to: 0x0}, - 375: {region: 0x5347, code: 0xb5, from: 0xf5730, to: 0xf5ecc}, - 376: {region: 0x5348, code: 0xdd, from: 0xefa4f, to: 0x0}, - 377: {region: 0x5349, code: 0x5e, from: 0xfae21, to: 0x0}, - 378: {region: 0x5349, code: 0xde, from: 0xf9147, to: 0xfae2e}, - 379: {region: 0x534a, code: 0xbe, from: 0xee2c7, to: 0x0}, - 380: {region: 0x534b, code: 0x5e, from: 0xfb221, to: 0x0}, - 381: {region: 0x534b, code: 0xdf, from: 0xf919f, to: 0xfb221}, - 382: {region: 0x534b, code: 0x49, from: 0xf42c1, to: 0xf919f}, - 383: {region: 0x534c, code: 0xe0, from: 0xf5904, to: 0x0}, - 384: {region: 0x534c, code: 0x63, from: 0xe217e, to: 0xf5c44}, - 385: {region: 0x534d, code: 0x5e, from: 0xf9e21, to: 0x0}, - 386: {region: 0x534d, code: 0x82, from: 0xe9397, to: 0xfa25c}, - 387: {region: 0x534e, code: 0x115, from: 0xf4e84, to: 0x0}, - 388: {region: 0x534f, code: 0xe1, from: 0xf50e1, to: 0x0}, - 389: {region: 0x5352, code: 0xe2, from: 0xfa821, to: 0x0}, - 390: {region: 0x5352, code: 0xe3, from: 0xf28aa, to: 0xfa79f}, - 391: {region: 0x5352, code: 0xbd, from: 0xe2f74, to: 0xf28aa}, - 392: {region: 0x5353, code: 0xe4, from: 0xfb6f2, to: 0x0}, - 393: {region: 0x5353, code: 0xd9, from: 0xfae2a, to: 0xfb721}, - 394: {region: 0x5354, code: 0xe6, from: 0xfc421, to: 0x0}, - 395: {region: 0x5354, code: 0xe5, from: 0xf7328, to: 0xfc39f}, - 396: {region: 0x5355, code: 0xe7, from: 0xf5221, to: 0xf8f99}, - 397: {region: 0x5356, code: 0xfc, from: 0xfa221, to: 0x0}, - 398: {region: 0x5356, code: 0xe8, from: 0xeff6b, to: 0xfa221}, - 399: {region: 0x5358, code: 0x8, from: 0xfb54a, to: 0x0}, - 400: {region: 0x5359, code: 0xe9, from: 0xf3821, to: 0x0}, - 401: {region: 0x535a, code: 0xea, from: 0xf6d26, to: 0x0}, - 402: {region: 0x5441, code: 0x63, from: 0xf242c, to: 0x0}, - 403: {region: 0x5443, code: 0xfc, from: 0xf6328, to: 0x0}, - 404: {region: 0x5444, code: 0x109, from: 0xf9221, to: 0x0}, - 405: {region: 0x5446, code: 0x5e, from: 0xf9e21, to: 0x0}, - 406: {region: 0x5446, code: 0x62, from: 0xf4e21, to: 0xfa451}, - 407: {region: 0x5447, code: 0x115, from: 0xf4d7c, to: 0x0}, - 408: {region: 0x5448, code: 0xeb, from: 0xf108f, to: 0x0}, - 409: {region: 0x544a, code: 0xed, from: 0xfa15a, to: 0x0}, - 410: {region: 0x544a, code: 0xec, from: 0xf96aa, to: 0xfa159}, - 411: {region: 0x544a, code: 0xd3, from: 0xf8f99, to: 0xf96aa}, - 412: {region: 0x544b, code: 0xc0, from: 0xf5eea, to: 0x0}, - 413: {region: 0x544c, code: 0xfc, from: 0xf9f54, to: 0x0}, - 414: {region: 0x544c, code: 0xf2, from: 0xf4e22, to: 0xfa4b4}, - 415: {region: 0x544c, code: 0x78, from: 0xf6f87, to: 0xfa4b4}, - 416: {region: 0x544d, code: 0xef, from: 0xfb221, to: 0x0}, - 417: {region: 0x544d, code: 0xee, from: 0xf9361, to: 0xfb221}, - 418: {region: 0x544d, code: 0xd3, from: 0xf8f99, to: 0xf9361}, - 419: {region: 0x544d, code: 0xe7, from: 0xf5221, to: 0xf8f99}, - 420: {region: 0x544e, code: 0xf0, from: 0xf4d61, to: 0x0}, - 421: {region: 0x544f, code: 0xf1, from: 0xf5c4e, to: 0x0}, - 422: {region: 0x5450, code: 0xf2, from: 0xf4e22, to: 0xfa4b4}, - 423: {region: 0x5450, code: 0x78, from: 0xf6f87, to: 0xfa4b4}, - 424: {region: 0x5452, code: 0xf4, from: 0xfaa21, to: 0x0}, - 425: {region: 0x5452, code: 0xf3, from: 0xf0561, to: 0xfab9f}, - 426: {region: 0x5454, code: 0xf5, from: 0xf5821, to: 0x0}, - 427: {region: 0x5456, code: 0x13, from: 0xf5c4e, to: 0x0}, - 428: {region: 0x5457, code: 0xf6, from: 0xf3acf, to: 0x0}, - 429: {region: 0x545a, code: 0xf7, from: 0xf5cce, to: 0x0}, - 430: {region: 0x5541, code: 0xf8, from: 0xf9922, to: 0x0}, - 431: {region: 0x5541, code: 0xf9, from: 0xf916d, to: 0xf9351}, - 432: {region: 0x5541, code: 0xd3, from: 0xf8f99, to: 0xf916d}, - 433: {region: 0x5541, code: 0xe7, from: 0xf5221, to: 0xf8f99}, - 434: {region: 0x5547, code: 0xfb, from: 0xf86af, to: 0x0}, - 435: {region: 0x5547, code: 0xfa, from: 0xf5d0f, to: 0xf86af}, - 436: {region: 0x554d, code: 0xfc, from: 0xf3021, to: 0x0}, - 437: {region: 0x5553, code: 0xfc, from: 0xe0021, to: 0x0}, - 438: {region: 0x5553, code: 0x80fd, from: 0x0, to: 0x0}, - 439: {region: 0x5553, code: 0x80fe, from: 0x0, to: 0xfbc61}, - 440: {region: 0x5559, code: 0x101, from: 0xf9261, to: 0x0}, - 441: {region: 0x5559, code: 0x100, from: 0xf6ee1, to: 0xf9261}, - 442: {region: 0x5559, code: 0x80ff, from: 0x0, to: 0x0}, - 443: {region: 0x555a, code: 0x102, from: 0xf94e1, to: 0x0}, - 444: {region: 0x5641, code: 0x5e, from: 0xf9e21, to: 0x0}, - 445: {region: 0x5641, code: 0x82, from: 0xe9d53, to: 0xfa45c}, - 446: {region: 0x5643, code: 0x110, from: 0xf5b46, to: 0x0}, - 447: {region: 0x5645, code: 0x104, from: 0xfb021, to: 0x0}, - 448: {region: 0x5645, code: 0x103, from: 0xe9eab, to: 0xfb0de}, - 449: {region: 0x5647, code: 0xfc, from: 0xe5221, to: 0x0}, - 450: {region: 0x5647, code: 0x63, from: 0xe5221, to: 0xf4e21}, - 451: {region: 0x5649, code: 0xfc, from: 0xe5a21, to: 0x0}, - 452: {region: 0x564e, code: 0x105, from: 0xf832e, to: 0x0}, - 453: {region: 0x564e, code: 0x106, from: 0xf74a3, to: 0xf832e}, - 454: {region: 0x5655, code: 0x107, from: 0xf7a21, to: 0x0}, - 455: {region: 0x5746, code: 0x117, from: 0xf52fe, to: 0x0}, - 456: {region: 0x5753, code: 0x108, from: 0xf5eea, to: 0x0}, - 457: {region: 0x584b, code: 0x5e, from: 0xfa421, to: 0x0}, - 458: {region: 0x584b, code: 0x50, from: 0xf9f21, to: 0xfa469}, - 459: {region: 0x584b, code: 0x121, from: 0xf9438, to: 0xf9f3e}, - 460: {region: 0x5944, code: 0x11e, from: 0xf5a81, to: 0xf9821}, - 461: {region: 0x5945, code: 0x11f, from: 0xf8cb6, to: 0x0}, - 462: {region: 0x5954, code: 0x5e, from: 0xf9e21, to: 0x0}, - 463: {region: 0x5954, code: 0x62, from: 0xf7057, to: 0xfa451}, - 464: {region: 0x5954, code: 0x89, from: 0xf6e21, to: 0xf7057}, - 465: {region: 0x5955, code: 0x121, from: 0xf9438, to: 0xfa4af}, - 466: {region: 0x5955, code: 0x122, from: 0xf8c21, to: 0xf90f8}, - 467: {region: 0x5955, code: 0x120, from: 0xf5c21, to: 0xf8c21}, - 468: {region: 0x5a41, code: 0x125, from: 0xf524e, to: 0x0}, - 469: {region: 0x5a41, code: 0x8124, from: 0xf8321, to: 0xf966d}, - 470: {region: 0x5a4d, code: 0x127, from: 0xfba21, to: 0x0}, - 471: {region: 0x5a4d, code: 0x126, from: 0xf6030, to: 0xfba21}, - 472: {region: 0x5a52, code: 0x128, from: 0xf9361, to: 0xf9cff}, - 473: {region: 0x5a52, code: 0x129, from: 0xf675b, to: 0xf9361}, - 474: {region: 0x5a57, code: 0xfc, from: 0xfb28c, to: 0x0}, - 475: {region: 0x5a57, code: 0x12b, from: 0xfb242, to: 0xfb28c}, - 476: {region: 0x5a57, code: 0x12c, from: 0xfb101, to: 0xfb242}, - 477: {region: 0x5a57, code: 0x12a, from: 0xf7892, to: 0xfb101}, - 478: {region: 0x5a57, code: 0xce, from: 0xf6451, to: 0xf7892}, - 479: {region: 0x5a5a, code: 0x810a, from: 0x0, to: 0x0}, - 480: {region: 0x5a5a, code: 0x810b, from: 0x0, to: 0x0}, - 481: {region: 0x5a5a, code: 0x810c, from: 0x0, to: 0x0}, - 482: {region: 0x5a5a, code: 0x810d, from: 0x0, to: 0x0}, - 483: {region: 0x5a5a, code: 0x810e, from: 0x0, to: 0x0}, - 484: {region: 0x5a5a, code: 0x810f, from: 0x0, to: 0x0}, - 485: {region: 0x5a5a, code: 0x8111, from: 0x0, to: 0x0}, - 486: {region: 0x5a5a, code: 0x8113, from: 0xf1421, to: 0xfa681}, - 487: {region: 0x5a5a, code: 0x8114, from: 0x0, to: 0xfbb7e}, - 488: {region: 0x5a5a, code: 0x8116, from: 0x0, to: 0x0}, - 489: {region: 0x5a5a, code: 0x8118, from: 0x0, to: 0x0}, - 490: {region: 0x5a5a, code: 0x8119, from: 0x0, to: 0xf9f7e}, - 491: {region: 0x5a5a, code: 0x811a, from: 0x0, to: 0x0}, - 492: {region: 0x5a5a, code: 0x811b, from: 0x0, to: 0x0}, - 493: {region: 0x5a5a, code: 0x811c, from: 0x0, to: 0x0}, - 494: {region: 0x5a5a, code: 0x811d, from: 0x0, to: 0x0}, -} // Size: 5964 bytes - -// symbols holds symbol data of the form <n> <str>, where n is the length of -// the symbol string str. -const symbols string = "" + // Size: 1445 bytes - "\x00\x02Kz\x01$\x02A$\x02KM\x03৳\x02Bs\x02R$\x01P\x03р.\x03CA$\x04CN¥" + - "\x02¥\x03₡\x03Kč\x02kr\x03E£\x03₧\x03€\x02£\x03₾\x02FG\x01Q\x03HK$\x01L" + - "\x02kn\x02Ft\x02Rp\x03₪\x03₹\x04JP¥\x03៛\x02CF\x03₩\x03₸\x03₭\x03L£\x02R" + - "s\x02Lt\x02Ls\x02Ar\x01K\x03₮\x03MX$\x02RM\x03₦\x02C$\x03NZ$\x03₱\x03zł" + - "\x03₲\x03lei\x03₽\x02RF\x02Db\x03฿\x02T$\x03₺\x03NT$\x03₴\x03US$\x03₫" + - "\x04FCFA\x03EC$\x03CFA\x04CFPF\x01R\x02ZK\x03leu\x05GH₵\x03AU$\x16የቻይና ዩ" + - "ዋን\x06ብር\x03***\x09د.إ.\u200f\x03AR$\x03BB$\x09د.ب.\u200f\x03BM$\x03BN" + - "$\x03BS$\x03BZ$\x03CL$\x03CO$\x03CU$\x03DO$\x09د.ج.\u200f\x09ج.م.\u200f" + - "\x03FJ$\x04UK£\x03GY$\x09د.ع.\u200f\x06ر.إ.\x03JM$\x09د.أ.\u200f\x09د.ك." + - "\u200f\x03KY$\x09ل.ل.\u200f\x09د.ل.\u200f\x09د.م.\u200f\x09أ.م.\u200f" + - "\x09ر.ع.\u200f\x09ر.ق.\u200f\x09ر.س.\u200f\x03SB$\x09د.س.\u200f\x06ج.س." + - "\x03SR$\x09ل.س.\u200f\x09د.ت.\u200f\x03TT$\x03UY$\x09ر.ي.\u200f\x03Fdj" + - "\x03Nfk\x01S\x04GB£\x03TSh\x03₼\x03ley\x03S£\x04Bds$\x03BD$\x02B$\x02Br" + - "\x04CUC$\x03$MN\x03RD$\x04FK£\x02G$\x04Íkr\x02J$\x03CI$\x02L$\x02N$\x07р" + - "уб.\x03SI$\x02S$\x02$U\x05лв.\x06щ.д.\x02$A\x03$CA\x04£ E\x05£ RU\x04$ " + - "HK\x03£L\x04$ ZN\x03$ T\x04$ SU\x04din.\x04КМ\x04Кч\x04зл\x07дин.\x04Тл" + - "\x01F\x06лей\x03USh\x04Kčs\x03ECU\x02TK\x03kr.\x03Ksh\x03öS\x03BGK\x03BG" + - "J\x04Cub$\x02DM\x04Fl£\x04F.G.\x02FC\x04F.Rw\x03Nu.\x05KR₩\x05TH฿\x06Δρχ" + - "\x02Tk\x02$b\x02Kr\x02Gs\x03CFP\x03FBu\x01D\x04MOP$\x02MK\x02SR\x02Le" + - "\x04NAf.\x01E\x02VT\x03WS$\x04SD£\x03BsF\x02p.\x03B/.\x02S/\x03Gs.\x03Bs" + - ".\x02؋\x04¥CN\x03$HK\x08ریال\x03$MX\x03$NZ\x03$EC\x02UM\x02mk\x03$AR\x03" + - "$AU\x02FB\x03$BM\x03$BN\x03$BS\x03$BZ\x03$CL\x03$CO\x04£CY\x03£E\x03$FJ" + - "\x04£FK\x04£GB\x04£GI\x04£IE\x04£IL\x05₤IT\x04£LB\x04£MT\x03$NA\x02$C" + - "\x03$RH\x02FR\x03$SB\x03$SG\x03$SR\x03$TT\x03$US\x03$UY\x04FCFP\x02Kw" + - "\x05$\u00a0AU\x05$\u00a0HK\x05$\u00a0NZ\x05$\u00a0SG\x05$\u00a0US\x02DA" + - "\x01G\x02LS\x02DT\x06руб\x07રૂ.\x0a\u200eCN¥\u200e\x06ל״י\x09लेई\x02֏" + - "\x03NKr\x03元\x03¥\x06レイ\x03\u200b\x06ಲೀ\x02LE\x02Kn\x06сом\x02zl\x02rb" + - "\x03MTn\x06ден\x04кр\x03NAf\x03Afl\x0cनेरू\x06रू\x04Afl.\x02ر\x03lej\x04" + - "Esc.\x06\u200bPTE\x04XXXX\x03ლ\x06ТМТ\x03Dkr\x03Skr\x03Nkr\x07රු.\x0fසිෆ" + - "්එ\x03NIS\x05Lekë\x03den\x02r.\x03BR$\x03Ekr\x04EG£\x04IE£\x03Ikr\x03R" + - "s.\x07сом.\x04AUD$\x04NZD$\x07крб.\x05soʻm\x06сўм\x03₩\x03ILS\x02P.\x03Z" + - "ł" - -type curToIndex struct { - cur uint16 - idx uint16 -} - -var normalLangIndex = []uint16{ // 769 elements - // Entry 0 - 3F - 0x0000, 0x0014, 0x0014, 0x0014, 0x0017, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0019, 0x0019, 0x001d, 0x001d, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0035, 0x0035, 0x0035, 0x0035, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0037, 0x0037, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0039, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003c, 0x003c, 0x003f, - 0x003f, 0x0041, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0049, 0x0049, 0x004a, 0x004a, 0x004b, 0x004b, 0x005c, 0x005c, - // Entry 40 - 7F - 0x005c, 0x005c, 0x005c, 0x005e, 0x005e, 0x005e, 0x005f, 0x005f, - 0x0060, 0x006e, 0x006e, 0x006e, 0x006e, 0x007f, 0x0085, 0x0085, - 0x0085, 0x0085, 0x008e, 0x008e, 0x008e, 0x008f, 0x008f, 0x0091, - 0x0091, 0x0091, 0x0092, 0x0092, 0x0093, 0x0093, 0x0094, 0x0094, - 0x0095, 0x0095, 0x0095, 0x009c, 0x009c, 0x009d, 0x009d, 0x009f, - 0x009f, 0x00a3, 0x00a3, 0x00a3, 0x00a4, 0x00a4, 0x00ac, 0x00ac, - 0x00ac, 0x00ad, 0x00ad, 0x00ad, 0x00ae, 0x00af, 0x00af, 0x00af, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00ba, - // Entry 80 - BF - 0x00ba, 0x00bb, 0x00bb, 0x00be, 0x00be, 0x00be, 0x00c1, 0x00c1, - 0x00c1, 0x00c3, 0x00c5, 0x00c5, 0x00c6, 0x00c7, 0x00c7, 0x00c7, - 0x00dc, 0x00dd, 0x00dd, 0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, - 0x00e3, 0x00e4, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e6, 0x00e6, - 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00e9, 0x00ea, 0x00ec, 0x00ec, - 0x00ec, 0x00ed, 0x00ed, 0x00ee, 0x00f0, 0x00f1, 0x00f1, 0x00f2, - 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f3, - 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, - // Entry C0 - FF - 0x00fb, 0x00fc, 0x00fc, 0x00fd, 0x00fe, 0x00ff, 0x0100, 0x0101, - 0x0102, 0x0103, 0x0104, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, - 0x0109, 0x010a, 0x010b, 0x010b, 0x010b, 0x010c, 0x010d, 0x010e, - 0x010e, 0x010f, 0x0110, 0x0112, 0x0112, 0x0113, 0x0115, 0x0116, - 0x0117, 0x0117, 0x0118, 0x0119, 0x011a, 0x011b, 0x011c, 0x011d, - 0x011d, 0x011d, 0x011e, 0x011e, 0x011e, 0x011f, 0x0120, 0x0121, - 0x0122, 0x0122, 0x0122, 0x0122, 0x0133, 0x0138, 0x013a, 0x013b, - 0x013c, 0x013d, 0x013f, 0x0141, 0x0142, 0x0144, 0x0146, 0x0146, - // Entry 100 - 13F - 0x0147, 0x0147, 0x0148, 0x0149, 0x014a, 0x014a, 0x014b, 0x014c, - 0x014d, 0x014e, 0x014f, 0x0150, 0x0151, 0x0152, 0x0154, 0x0156, - 0x0157, 0x015c, 0x015c, 0x015e, 0x015e, 0x015e, 0x015e, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x016a, 0x016b, 0x016b, 0x017c, - 0x017c, 0x0180, 0x0180, 0x0181, 0x0182, 0x0182, 0x01a8, 0x01a8, - 0x01a8, 0x01a9, 0x01a9, 0x01a9, 0x01ca, 0x01cb, 0x01cb, 0x01cb, - 0x01cb, 0x01cb, 0x01cb, 0x01cc, 0x01cd, 0x01cd, 0x01cd, 0x01cd, - 0x01ce, 0x01ce, 0x01ce, 0x01cf, 0x01d0, 0x01d2, 0x01d2, 0x01d2, - // Entry 140 - 17F - 0x01d2, 0x01d3, 0x01d3, 0x01d3, 0x01d4, 0x01d5, 0x01d5, 0x01d5, - 0x01d5, 0x01d5, 0x01d5, 0x01d6, 0x01d7, 0x01d7, 0x01d8, 0x01d8, - 0x01d8, 0x01d9, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01e0, - 0x01e0, 0x01e3, 0x01e3, 0x01e5, 0x01e5, 0x01e9, 0x01e9, 0x01ec, - 0x01ec, 0x01ec, 0x01ec, 0x01ed, 0x01ed, 0x01ed, 0x01ee, 0x01ee, - 0x01ee, 0x01ee, 0x01ef, 0x01f0, 0x01f0, 0x01f0, 0x01f1, 0x01f1, - 0x01f6, 0x01f6, 0x01f8, 0x01f8, 0x020a, 0x020b, 0x020b, 0x0210, - 0x0210, 0x0222, 0x0222, 0x0225, 0x0225, 0x0229, 0x0229, 0x022a, - // Entry 180 - 1BF - 0x022a, 0x022b, 0x022b, 0x022b, 0x0237, 0x0237, 0x023f, 0x023f, - 0x023f, 0x023f, 0x023f, 0x023f, 0x0242, 0x0242, 0x0242, 0x0242, - 0x0242, 0x0243, 0x0243, 0x0243, 0x024d, 0x024d, 0x024e, 0x024e, - 0x024e, 0x024f, 0x024f, 0x024f, 0x0250, 0x0250, 0x0253, 0x0253, - 0x0253, 0x0253, 0x0254, 0x0254, 0x0258, 0x0258, 0x0258, 0x0258, - 0x0259, 0x0259, 0x025a, 0x025a, 0x025d, 0x025d, 0x025f, 0x025f, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - // Entry 1C0 - 1FF - 0x0270, 0x0270, 0x0271, 0x0271, 0x0276, 0x0276, 0x0277, 0x0277, - 0x0278, 0x0278, 0x0279, 0x027a, 0x027a, 0x027a, 0x027a, 0x027c, - 0x027c, 0x027d, 0x027d, 0x027d, 0x0290, 0x0290, 0x0291, 0x0291, - 0x0292, 0x0292, 0x0293, 0x0293, 0x0298, 0x0298, 0x0299, 0x0299, - 0x029a, 0x029b, 0x029b, 0x029c, 0x029c, 0x029d, 0x029d, 0x029e, - 0x029e, 0x029e, 0x029e, 0x02aa, 0x02aa, 0x02ad, 0x02ad, 0x02b0, - 0x02b0, 0x02b2, 0x02b2, 0x02b6, 0x02b7, 0x02b7, 0x02b8, 0x02b8, - 0x02b8, 0x02b8, 0x02b8, 0x02bf, 0x02bf, 0x02c0, 0x02c0, 0x02c0, - // Entry 200 - 23F - 0x02c1, 0x02c1, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, 0x02d3, - 0x02d3, 0x02d3, 0x02d5, 0x02d5, 0x02d5, 0x02db, 0x02dc, 0x02dc, - 0x02dd, 0x02de, 0x02de, 0x02df, 0x02e0, 0x02e0, 0x02e0, 0x02f3, - 0x02f3, 0x02f3, 0x02f3, 0x02f3, 0x02f3, 0x02f3, 0x02f3, 0x02f5, - 0x02f5, 0x02f5, 0x02f6, 0x02f6, 0x02f7, 0x02f7, 0x02f8, 0x02fa, - 0x02fa, 0x02fc, 0x02fc, 0x02fe, 0x02ff, 0x0300, 0x0300, 0x0300, - 0x0300, 0x0300, 0x030f, 0x030f, 0x030f, 0x030f, 0x0310, 0x0310, - 0x0313, 0x0314, 0x0314, 0x0314, 0x0316, 0x0316, 0x0316, 0x0317, - // Entry 240 - 27F - 0x0318, 0x0319, 0x031a, 0x031b, 0x031b, 0x031c, 0x031e, 0x0320, - 0x0320, 0x0320, 0x0320, 0x0321, 0x0321, 0x0332, 0x0333, 0x0333, - 0x0334, 0x0334, 0x033c, 0x033e, 0x033f, 0x0340, 0x0341, 0x0341, - 0x0341, 0x0342, 0x0342, 0x0343, 0x0343, 0x0344, 0x0344, 0x0345, - 0x0345, 0x0346, 0x0346, 0x0347, 0x0347, 0x0347, 0x034b, 0x034b, - 0x034b, 0x034d, 0x034e, 0x034e, 0x034e, 0x034e, 0x034e, 0x034e, - 0x034e, 0x034e, 0x034e, 0x034e, 0x034e, 0x0351, 0x0351, 0x035f, - 0x035f, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, - // Entry 280 - 2BF - 0x0369, 0x0369, 0x0369, 0x036a, 0x036b, 0x036c, 0x036d, 0x036d, - 0x036f, 0x036f, 0x0370, 0x0370, 0x0376, 0x0376, 0x0376, 0x0376, - 0x0376, 0x0376, 0x037c, 0x037c, 0x037c, 0x037c, 0x037c, 0x037c, - 0x037c, 0x037c, 0x0394, 0x0394, 0x0394, 0x0394, 0x0397, 0x0398, - 0x0398, 0x0398, 0x0399, 0x0399, 0x039c, 0x039c, 0x039d, 0x039f, - 0x03a2, 0x03a4, 0x03a4, 0x03a5, 0x03a6, 0x03a6, 0x03a8, 0x03a8, - 0x03aa, 0x03aa, 0x03ab, 0x03ac, 0x03ac, 0x03ac, 0x03ae, 0x03ae, - 0x03ae, 0x03b1, 0x03b1, 0x03b6, 0x03b6, 0x03b6, 0x03b6, 0x03b8, - // Entry 2C0 - 2FF - 0x03b8, 0x03b8, 0x03b8, 0x03b8, 0x03b8, 0x03ba, 0x03ba, 0x03cd, - 0x03cd, 0x03d0, 0x03d1, 0x03d1, 0x03d2, 0x03d3, 0x03d3, 0x03d5, - 0x03d5, 0x03d5, 0x03d5, 0x03d6, 0x03d7, 0x03d7, 0x03d7, 0x03d7, - 0x03d7, 0x03d9, 0x03d9, 0x03d9, 0x03d9, 0x03da, 0x03da, 0x03da, - 0x03dc, 0x03dc, 0x03dd, 0x03dd, 0x03dd, 0x03de, 0x03de, 0x03de, - 0x03de, 0x03de, 0x03de, 0x03df, 0x03df, 0x03df, 0x03e2, 0x03e5, - 0x03e5, 0x03e5, 0x03e5, 0x03e5, 0x03e5, 0x03e9, 0x03e9, 0x03e9, - 0x03ea, 0x03ec, 0x03ee, 0x03f2, 0x03f4, 0x03f5, 0x03f5, 0x03f7, - // Entry 300 - 33F - 0x03f7, -} // Size: 1562 bytes - -var normalSymIndex = []curToIndex{ // 1015 elements - 0: {cur: 0x13, idx: 0x6}, - 1: {cur: 0x2e, idx: 0x13}, - 2: {cur: 0x3a, idx: 0x1c}, - 3: {cur: 0x44, idx: 0x20}, - 4: {cur: 0x5e, idx: 0x3b}, - 5: {cur: 0x63, idx: 0x3f}, - 6: {cur: 0x72, idx: 0x4b}, - 7: {cur: 0x7c, idx: 0x5a}, - 8: {cur: 0x7d, idx: 0x5e}, - 9: {cur: 0x85, idx: 0x62}, - 10: {cur: 0x8d, idx: 0x6e}, - 11: {cur: 0xb2, idx: 0x90}, - 12: {cur: 0xc0, idx: 0x9e}, - 13: {cur: 0xf6, idx: 0xc7}, - 14: {cur: 0xfc, idx: 0xcf}, - 15: {cur: 0x105, idx: 0xd3}, - 16: {cur: 0x109, idx: 0xd7}, - 17: {cur: 0x110, idx: 0xdc}, - 18: {cur: 0x115, idx: 0xe0}, - 19: {cur: 0x117, idx: 0xe4}, - 20: {cur: 0xb2, idx: 0x0}, - 21: {cur: 0xeb, idx: 0xbc}, - 22: {cur: 0x125, idx: 0xe9}, - 23: {cur: 0xb9, idx: 0x4}, - 24: {cur: 0x67, idx: 0xf2}, - 25: {cur: 0x13, idx: 0xf8}, - 26: {cur: 0x42, idx: 0xfc}, - 27: {cur: 0x5d, idx: 0x113}, - 28: {cur: 0xeb, idx: 0xbc}, - 29: {cur: 0x0, idx: 0x11a}, - 30: {cur: 0x2, idx: 0x11e}, - 31: {cur: 0x13, idx: 0xf8}, - 32: {cur: 0x23, idx: 0x130}, - 33: {cur: 0x54, idx: 0x15a}, - 34: {cur: 0x58, idx: 0x164}, - 35: {cur: 0x7e, idx: 0x17b}, - 36: {cur: 0x7f, idx: 0x185}, - 37: {cur: 0x84, idx: 0x190}, - 38: {cur: 0x8e, idx: 0x19a}, - 39: {cur: 0x92, idx: 0x1a8}, - 40: {cur: 0x9d, idx: 0x1b2}, - 41: {cur: 0x9e, idx: 0x1bc}, - 42: {cur: 0xab, idx: 0x1c6}, - 43: {cur: 0xc1, idx: 0x1d0}, - 44: {cur: 0xcd, idx: 0x1da}, - 45: {cur: 0xd5, idx: 0x1e4}, - 46: {cur: 0xd8, idx: 0x1f2}, - 47: {cur: 0xd9, idx: 0x1fc}, - 48: {cur: 0xe9, idx: 0x207}, - 49: {cur: 0xeb, idx: 0xbc}, - 50: {cur: 0xf0, idx: 0x211}, - 51: {cur: 0x11f, idx: 0x223}, - 52: {cur: 0x51, idx: 0x22d}, - 53: {cur: 0x59, idx: 0x231}, - 54: {cur: 0x89, idx: 0x6b}, - 55: {cur: 0xd9, idx: 0x0}, - 56: {cur: 0xe1, idx: 0x235}, - 57: {cur: 0x63, idx: 0x237}, - 58: {cur: 0xe4, idx: 0x3f}, - 59: {cur: 0xf7, idx: 0x23c}, - 60: {cur: 0x85, idx: 0x25}, - 61: {cur: 0xeb, idx: 0xbc}, - 62: {cur: 0xfc, idx: 0x4}, - 63: {cur: 0x16, idx: 0x240}, - 64: {cur: 0xeb, idx: 0xbc}, - 65: {cur: 0x16, idx: 0x240}, - 66: {cur: 0x2e, idx: 0x0}, - 67: {cur: 0x37, idx: 0x258}, - 68: {cur: 0x3a, idx: 0x0}, - 69: {cur: 0x85, idx: 0x25}, - 70: {cur: 0xc0, idx: 0x0}, - 71: {cur: 0xd2, idx: 0xb2}, - 72: {cur: 0xfc, idx: 0x4}, - 73: {cur: 0x127, idx: 0x8a}, - 74: {cur: 0xf7, idx: 0x23c}, - 75: {cur: 0x13, idx: 0x0}, - 76: {cur: 0x21, idx: 0x294}, - 77: {cur: 0x2e, idx: 0x0}, - 78: {cur: 0x3a, idx: 0x0}, - 79: {cur: 0x44, idx: 0x0}, - 80: {cur: 0x63, idx: 0x0}, - 81: {cur: 0x72, idx: 0x0}, - 82: {cur: 0x7c, idx: 0x0}, - 83: {cur: 0x7d, idx: 0x0}, - 84: {cur: 0x85, idx: 0x0}, - 85: {cur: 0x8d, idx: 0x0}, - 86: {cur: 0xb2, idx: 0x0}, - 87: {cur: 0xc0, idx: 0x0}, - 88: {cur: 0xf6, idx: 0x0}, - 89: {cur: 0xfc, idx: 0x29a}, - 90: {cur: 0x105, idx: 0x0}, - 91: {cur: 0x110, idx: 0x0}, - 92: {cur: 0x1b, idx: 0xc}, - 93: {cur: 0xeb, idx: 0xbc}, - 94: {cur: 0x44, idx: 0x25}, - 95: {cur: 0x44, idx: 0x20}, - 96: {cur: 0x13, idx: 0x2a1}, - 97: {cur: 0x2e, idx: 0x0}, - 98: {cur: 0x3a, idx: 0x2a4}, - 99: {cur: 0x44, idx: 0x0}, - 100: {cur: 0x63, idx: 0x2ad}, - 101: {cur: 0x72, idx: 0x2b3}, - 102: {cur: 0x7c, idx: 0x0}, - 103: {cur: 0x85, idx: 0x0}, - 104: {cur: 0x8d, idx: 0x0}, - 105: {cur: 0xc0, idx: 0x2bc}, - 106: {cur: 0xf6, idx: 0x0}, - 107: {cur: 0xfc, idx: 0x2c5}, - 108: {cur: 0x105, idx: 0x0}, - 109: {cur: 0x110, idx: 0x0}, - 110: {cur: 0x13, idx: 0x0}, - 111: {cur: 0x18, idx: 0x9}, - 112: {cur: 0x2e, idx: 0x0}, - 113: {cur: 0x3a, idx: 0x0}, - 114: {cur: 0x44, idx: 0x0}, - 115: {cur: 0x63, idx: 0x0}, - 116: {cur: 0x72, idx: 0x0}, - 117: {cur: 0x75, idx: 0x51}, - 118: {cur: 0x7c, idx: 0x0}, - 119: {cur: 0x85, idx: 0x25}, - 120: {cur: 0xb2, idx: 0x0}, - 121: {cur: 0xc0, idx: 0x0}, - 122: {cur: 0xd1, idx: 0x2ca}, - 123: {cur: 0xeb, idx: 0xbc}, - 124: {cur: 0xfc, idx: 0x0}, - 125: {cur: 0x110, idx: 0x0}, - 126: {cur: 0x117, idx: 0x0}, - 127: {cur: 0x18, idx: 0x2cf}, - 128: {cur: 0x4e, idx: 0x2d4}, - 129: {cur: 0x85, idx: 0x25}, - 130: {cur: 0xc9, idx: 0x2d9}, - 131: {cur: 0xd1, idx: 0x2de}, - 132: {cur: 0xf4, idx: 0x2e6}, - 133: {cur: 0x13, idx: 0xf8}, - 134: {cur: 0x2e, idx: 0x0}, - 135: {cur: 0x3a, idx: 0x0}, - 136: {cur: 0x44, idx: 0x25}, - 137: {cur: 0x5c, idx: 0x37}, - 138: {cur: 0xb2, idx: 0x0}, - 139: {cur: 0xeb, idx: 0xbc}, - 140: {cur: 0xfc, idx: 0x0}, - 141: {cur: 0x110, idx: 0x0}, - 142: {cur: 0x62, idx: 0x2eb}, - 143: {cur: 0x1b, idx: 0xc}, - 144: {cur: 0xeb, idx: 0xbc}, - 145: {cur: 0xd2, idx: 0xb2}, - 146: {cur: 0xfb, idx: 0x2f4}, - 147: {cur: 0xfc, idx: 0x4}, - 148: {cur: 0x7e, idx: 0x17b}, - 149: {cur: 0x13, idx: 0xf8}, - 150: {cur: 0x49, idx: 0x2f8}, - 151: {cur: 0x4e, idx: 0x2c}, - 152: {cur: 0x7c, idx: 0x0}, - 153: {cur: 0x7d, idx: 0x0}, - 154: {cur: 0x105, idx: 0x0}, - 155: {cur: 0x112, idx: 0x2fd}, - 156: {cur: 0xd2, idx: 0xb2}, - 157: {cur: 0x8d, idx: 0x0}, - 158: {cur: 0xeb, idx: 0xbc}, - 159: {cur: 0x13, idx: 0xf8}, - 160: {cur: 0x52, idx: 0x304}, - 161: {cur: 0xeb, idx: 0xbc}, - 162: {cur: 0xfc, idx: 0x4}, - 163: {cur: 0x86, idx: 0x308}, - 164: {cur: 0x12, idx: 0x30c}, - 165: {cur: 0x13, idx: 0xf8}, - 166: {cur: 0x20, idx: 0x310}, - 167: {cur: 0x22, idx: 0x314}, - 168: {cur: 0x50, idx: 0x31d}, - 169: {cur: 0x85, idx: 0x25}, - 170: {cur: 0xeb, idx: 0xbc}, - 171: {cur: 0xfc, idx: 0x4}, - 172: {cur: 0x5e, idx: 0x0}, - 173: {cur: 0x5e, idx: 0x0}, - 174: {cur: 0x99, idx: 0x2eb}, - 175: {cur: 0x13, idx: 0x0}, - 176: {cur: 0x85, idx: 0x25}, - 177: {cur: 0xc9, idx: 0xa6}, - 178: {cur: 0xeb, idx: 0xbc}, - 179: {cur: 0xfc, idx: 0x4}, - 180: {cur: 0x13, idx: 0xf8}, - 181: {cur: 0x33, idx: 0x332}, - 182: {cur: 0x7c, idx: 0x0}, - 183: {cur: 0x8d, idx: 0x336}, - 184: {cur: 0xeb, idx: 0x33c}, - 185: {cur: 0x109, idx: 0x0}, - 186: {cur: 0x86, idx: 0x308}, - 187: {cur: 0x13, idx: 0xf8}, - 188: {cur: 0x67, idx: 0xf2}, - 189: {cur: 0xeb, idx: 0xbc}, - 190: {cur: 0x6d, idx: 0x342}, - 191: {cur: 0xeb, idx: 0xbc}, - 192: {cur: 0xfc, idx: 0x4}, - 193: {cur: 0x85, idx: 0x25}, - 194: {cur: 0xfc, idx: 0x4}, - 195: {cur: 0x85, idx: 0x62}, - 196: {cur: 0xfc, idx: 0xcf}, - 197: {cur: 0x110, idx: 0x4}, - 198: {cur: 0x110, idx: 0x4}, - 199: {cur: 0x13, idx: 0x4}, - 200: {cur: 0x2e, idx: 0x0}, - 201: {cur: 0x3a, idx: 0x0}, - 202: {cur: 0x44, idx: 0x0}, - 203: {cur: 0x5e, idx: 0x0}, - 204: {cur: 0x63, idx: 0x0}, - 205: {cur: 0x72, idx: 0x0}, - 206: {cur: 0x7c, idx: 0x0}, - 207: {cur: 0x7d, idx: 0x0}, - 208: {cur: 0x85, idx: 0x0}, - 209: {cur: 0x8d, idx: 0x0}, - 210: {cur: 0xb2, idx: 0x0}, - 211: {cur: 0xc0, idx: 0x0}, - 212: {cur: 0xd7, idx: 0x7e}, - 213: {cur: 0xf6, idx: 0x0}, - 214: {cur: 0xfc, idx: 0x0}, - 215: {cur: 0x105, idx: 0x0}, - 216: {cur: 0x109, idx: 0x0}, - 217: {cur: 0x110, idx: 0x0}, - 218: {cur: 0x115, idx: 0x0}, - 219: {cur: 0x117, idx: 0x355}, - 220: {cur: 0x1a, idx: 0x4}, - 221: {cur: 0x24, idx: 0x359}, - 222: {cur: 0x25, idx: 0x4}, - 223: {cur: 0x32, idx: 0x4}, - 224: {cur: 0x35, idx: 0x16}, - 225: {cur: 0x39, idx: 0x4}, - 226: {cur: 0x3a, idx: 0x4}, - 227: {cur: 0x13, idx: 0x4}, - 228: {cur: 0xc0, idx: 0x4}, - 229: {cur: 0x13, idx: 0x4}, - 230: {cur: 0x52, idx: 0x304}, - 231: {cur: 0x110, idx: 0x4}, - 232: {cur: 0x59, idx: 0x231}, - 233: {cur: 0x60, idx: 0x4}, - 234: {cur: 0x61, idx: 0x3f}, - 235: {cur: 0x63, idx: 0x237}, - 236: {cur: 0x110, idx: 0x4}, - 237: {cur: 0x67, idx: 0xf2}, - 238: {cur: 0x63, idx: 0x237}, - 239: {cur: 0x68, idx: 0x3f}, - 240: {cur: 0x69, idx: 0x35d}, - 241: {cur: 0x71, idx: 0x4}, - 242: {cur: 0x83, idx: 0x4}, - 243: {cur: 0x86, idx: 0x308}, - 244: {cur: 0x13, idx: 0x4}, - 245: {cur: 0x110, idx: 0x4}, - 246: {cur: 0x8f, idx: 0x4}, - 247: {cur: 0x110, idx: 0x4}, - 248: {cur: 0x94, idx: 0x4}, - 249: {cur: 0x125, idx: 0xe9}, - 250: {cur: 0xa3, idx: 0x87}, - 251: {cur: 0xaa, idx: 0x35f}, - 252: {cur: 0x110, idx: 0x4}, - 253: {cur: 0x63, idx: 0x237}, - 254: {cur: 0xae, idx: 0x7e}, - 255: {cur: 0xb1, idx: 0x364}, - 256: {cur: 0xb5, idx: 0x94}, - 257: {cur: 0xb9, idx: 0x4}, - 258: {cur: 0x13, idx: 0x4}, - 259: {cur: 0xba, idx: 0x97}, - 260: {cur: 0x13, idx: 0x4}, - 261: {cur: 0xc0, idx: 0x4}, - 262: {cur: 0xc0, idx: 0x4}, - 263: {cur: 0xc6, idx: 0x8a}, - 264: {cur: 0xc7, idx: 0xa2}, - 265: {cur: 0xc8, idx: 0x7e}, - 266: {cur: 0xc0, idx: 0x4}, - 267: {cur: 0xd4, idx: 0xb6}, - 268: {cur: 0xd6, idx: 0x4}, - 269: {cur: 0xd7, idx: 0x367}, - 270: {cur: 0xdb, idx: 0x30}, - 271: {cur: 0xdc, idx: 0x4}, - 272: {cur: 0x63, idx: 0x237}, - 273: {cur: 0xdd, idx: 0x3f}, - 274: {cur: 0xe0, idx: 0x36a}, - 275: {cur: 0x63, idx: 0x237}, - 276: {cur: 0xe4, idx: 0x3f}, - 277: {cur: 0x8, idx: 0x36d}, - 278: {cur: 0xea, idx: 0x372}, - 279: {cur: 0xc0, idx: 0x4}, - 280: {cur: 0xf1, idx: 0xc0}, - 281: {cur: 0xf5, idx: 0x4}, - 282: {cur: 0x13, idx: 0x4}, - 283: {cur: 0xf7, idx: 0x23c}, - 284: {cur: 0xfb, idx: 0x2f4}, - 285: {cur: 0x110, idx: 0x4}, - 286: {cur: 0x107, idx: 0x374}, - 287: {cur: 0x108, idx: 0x377}, - 288: {cur: 0x125, idx: 0xe9}, - 289: {cur: 0x127, idx: 0x8a}, - 290: {cur: 0x13, idx: 0x0}, - 291: {cur: 0x2e, idx: 0x0}, - 292: {cur: 0x44, idx: 0x0}, - 293: {cur: 0x5c, idx: 0x37}, - 294: {cur: 0x63, idx: 0x0}, - 295: {cur: 0x72, idx: 0x0}, - 296: {cur: 0x7c, idx: 0x0}, - 297: {cur: 0x7d, idx: 0x0}, - 298: {cur: 0x85, idx: 0x0}, - 299: {cur: 0x8d, idx: 0x0}, - 300: {cur: 0xb2, idx: 0x0}, - 301: {cur: 0xc0, idx: 0x0}, - 302: {cur: 0xeb, idx: 0xbc}, - 303: {cur: 0xf6, idx: 0x0}, - 304: {cur: 0x109, idx: 0x0}, - 305: {cur: 0x110, idx: 0x0}, - 306: {cur: 0x115, idx: 0x0}, - 307: {cur: 0x3a, idx: 0x0}, - 308: {cur: 0x5e, idx: 0x0}, - 309: {cur: 0xeb, idx: 0x0}, - 310: {cur: 0xfc, idx: 0x0}, - 311: {cur: 0x105, idx: 0x0}, - 312: {cur: 0x11, idx: 0x4}, - 313: {cur: 0xfc, idx: 0xcf}, - 314: {cur: 0x27, idx: 0x10}, - 315: {cur: 0x2e, idx: 0x13}, - 316: {cur: 0x39, idx: 0x4}, - 317: {cur: 0x41, idx: 0x4}, - 318: {cur: 0xfc, idx: 0xcf}, - 319: {cur: 0x45, idx: 0x4}, - 320: {cur: 0xfc, idx: 0xcf}, - 321: {cur: 0x47, idx: 0x28}, - 322: {cur: 0x4b, idx: 0x4}, - 323: {cur: 0xfc, idx: 0xcf}, - 324: {cur: 0x53, idx: 0x264}, - 325: {cur: 0xfc, idx: 0xcf}, - 326: {cur: 0xfc, idx: 0x4}, - 327: {cur: 0x109, idx: 0xd7}, - 328: {cur: 0x6e, idx: 0x49}, - 329: {cur: 0x73, idx: 0x4f}, - 330: {cur: 0xb2, idx: 0x4}, - 331: {cur: 0xbc, idx: 0x9b}, - 332: {cur: 0xc2, idx: 0x387}, - 333: {cur: 0xc4, idx: 0x38b}, - 334: {cur: 0xc7, idx: 0xa2}, - 335: {cur: 0xfc, idx: 0x4}, - 336: {cur: 0xcc, idx: 0x38e}, - 337: {cur: 0xfc, idx: 0x4}, - 338: {cur: 0x85, idx: 0x25}, - 339: {cur: 0xfc, idx: 0x4}, - 340: {cur: 0xfc, idx: 0xcf}, - 341: {cur: 0x101, idx: 0x4}, - 342: {cur: 0x104, idx: 0x392}, - 343: {cur: 0x13, idx: 0xf8}, - 344: {cur: 0x57, idx: 0x30}, - 345: {cur: 0x85, idx: 0x25}, - 346: {cur: 0xeb, idx: 0xbc}, - 347: {cur: 0xfc, idx: 0x4}, - 348: {cur: 0x5c, idx: 0x37}, - 349: {cur: 0xeb, idx: 0xbc}, - 350: {cur: 0x4, idx: 0x396}, - 351: {cur: 0x3a, idx: 0x2a4}, - 352: {cur: 0x44, idx: 0x399}, - 353: {cur: 0x72, idx: 0x39e}, - 354: {cur: 0x7f, idx: 0x3a2}, - 355: {cur: 0x85, idx: 0x25}, - 356: {cur: 0xb2, idx: 0x3ab}, - 357: {cur: 0xc0, idx: 0x3af}, - 358: {cur: 0xeb, idx: 0xbc}, - 359: {cur: 0xfc, idx: 0x4}, - 360: {cur: 0x110, idx: 0x3b3}, - 361: {cur: 0x6a, idx: 0x46}, - 362: {cur: 0xab, idx: 0x3b7}, - 363: {cur: 0x13, idx: 0x0}, - 364: {cur: 0x2e, idx: 0x0}, - 365: {cur: 0x3a, idx: 0x0}, - 366: {cur: 0x44, idx: 0x0}, - 367: {cur: 0x5f, idx: 0x3ba}, - 368: {cur: 0x72, idx: 0x0}, - 369: {cur: 0x7c, idx: 0x0}, - 370: {cur: 0x7d, idx: 0x0}, - 371: {cur: 0x85, idx: 0x25}, - 372: {cur: 0x8d, idx: 0x0}, - 373: {cur: 0xb2, idx: 0x0}, - 374: {cur: 0xc0, idx: 0x0}, - 375: {cur: 0xf6, idx: 0x0}, - 376: {cur: 0xfc, idx: 0x4}, - 377: {cur: 0x105, idx: 0x0}, - 378: {cur: 0x110, idx: 0x0}, - 379: {cur: 0x117, idx: 0x0}, - 380: {cur: 0x85, idx: 0x25}, - 381: {cur: 0xc7, idx: 0xa2}, - 382: {cur: 0xeb, idx: 0xbc}, - 383: {cur: 0xfc, idx: 0x4}, - 384: {cur: 0x52, idx: 0x30}, - 385: {cur: 0x52, idx: 0x304}, - 386: {cur: 0x11, idx: 0x3bd}, - 387: {cur: 0x13, idx: 0x3c1}, - 388: {cur: 0x1d, idx: 0x3c5}, - 389: {cur: 0x25, idx: 0x3c8}, - 390: {cur: 0x26, idx: 0x3cc}, - 391: {cur: 0x32, idx: 0x3d0}, - 392: {cur: 0x39, idx: 0x3d4}, - 393: {cur: 0x3a, idx: 0x2a4}, - 394: {cur: 0x41, idx: 0x3d8}, - 395: {cur: 0x44, idx: 0x0}, - 396: {cur: 0x45, idx: 0x3dc}, - 397: {cur: 0x4d, idx: 0x3e0}, - 398: {cur: 0x60, idx: 0x3e9}, - 399: {cur: 0x61, idx: 0x3ed}, - 400: {cur: 0x62, idx: 0x2eb}, - 401: {cur: 0x63, idx: 0x3f2}, - 402: {cur: 0x68, idx: 0x3f7}, - 403: {cur: 0x72, idx: 0x0}, - 404: {cur: 0x79, idx: 0x3fc}, - 405: {cur: 0x7a, idx: 0x401}, - 406: {cur: 0x82, idx: 0x406}, - 407: {cur: 0x85, idx: 0x0}, - 408: {cur: 0x92, idx: 0x40c}, - 409: {cur: 0xad, idx: 0x411}, - 410: {cur: 0xb2, idx: 0x3ab}, - 411: {cur: 0xb9, idx: 0x416}, - 412: {cur: 0xc0, idx: 0x3af}, - 413: {cur: 0xce, idx: 0x41d}, - 414: {cur: 0xd6, idx: 0x424}, - 415: {cur: 0xdc, idx: 0x428}, - 416: {cur: 0xe2, idx: 0x42c}, - 417: {cur: 0xf5, idx: 0x430}, - 418: {cur: 0xf6, idx: 0x0}, - 419: {cur: 0xfc, idx: 0x434}, - 420: {cur: 0x101, idx: 0x438}, - 421: {cur: 0x108, idx: 0x377}, - 422: {cur: 0x110, idx: 0x0}, - 423: {cur: 0x117, idx: 0x43c}, - 424: {cur: 0x24, idx: 0x359}, - 425: {cur: 0x11, idx: 0x0}, - 426: {cur: 0x13, idx: 0x444}, - 427: {cur: 0x25, idx: 0x0}, - 428: {cur: 0x26, idx: 0x0}, - 429: {cur: 0x32, idx: 0x0}, - 430: {cur: 0x39, idx: 0x0}, - 431: {cur: 0x3a, idx: 0x4}, - 432: {cur: 0x41, idx: 0x0}, - 433: {cur: 0x44, idx: 0x20}, - 434: {cur: 0x45, idx: 0x0}, - 435: {cur: 0x60, idx: 0x0}, - 436: {cur: 0x61, idx: 0x0}, - 437: {cur: 0x63, idx: 0x3f}, - 438: {cur: 0x68, idx: 0x0}, - 439: {cur: 0x72, idx: 0x44a}, - 440: {cur: 0x7c, idx: 0x0}, - 441: {cur: 0x7d, idx: 0x0}, - 442: {cur: 0x85, idx: 0x25}, - 443: {cur: 0x8d, idx: 0x0}, - 444: {cur: 0x92, idx: 0x0}, - 445: {cur: 0xb2, idx: 0x0}, - 446: {cur: 0xb9, idx: 0x0}, - 447: {cur: 0xc0, idx: 0x450}, - 448: {cur: 0xd6, idx: 0x0}, - 449: {cur: 0xdc, idx: 0x456}, - 450: {cur: 0xe2, idx: 0x0}, - 451: {cur: 0xf5, idx: 0x0}, - 452: {cur: 0xfc, idx: 0x45c}, - 453: {cur: 0x101, idx: 0x0}, - 454: {cur: 0x105, idx: 0x0}, - 455: {cur: 0x109, idx: 0x0}, - 456: {cur: 0x115, idx: 0x0}, - 457: {cur: 0x117, idx: 0x0}, - 458: {cur: 0x3b, idx: 0x32a}, - 459: {cur: 0x51, idx: 0x22d}, - 460: {cur: 0x54, idx: 0x462}, - 461: {cur: 0x6a, idx: 0x46}, - 462: {cur: 0x76, idx: 0x465}, - 463: {cur: 0x89, idx: 0x6b}, - 464: {cur: 0x62, idx: 0x0}, - 465: {cur: 0x99, idx: 0x2eb}, - 466: {cur: 0xa3, idx: 0x87}, - 467: {cur: 0xab, idx: 0x3b7}, - 468: {cur: 0xae, idx: 0x7e}, - 469: {cur: 0xd4, idx: 0xb6}, - 470: {cur: 0xd7, idx: 0x367}, - 471: {cur: 0xe9, idx: 0x467}, - 472: {cur: 0xf0, idx: 0x46a}, - 473: {cur: 0x107, idx: 0x374}, - 474: {cur: 0x13, idx: 0xf8}, - 475: {cur: 0x3a, idx: 0x9b}, - 476: {cur: 0x60, idx: 0x16e}, - 477: {cur: 0xd6, idx: 0x28a}, - 478: {cur: 0xeb, idx: 0xbc}, - 479: {cur: 0x117, idx: 0x0}, - 480: {cur: 0x85, idx: 0x25}, - 481: {cur: 0xeb, idx: 0xbc}, - 482: {cur: 0xfc, idx: 0x4}, - 483: {cur: 0xeb, idx: 0xbc}, - 484: {cur: 0xfc, idx: 0x4}, - 485: {cur: 0x5c, idx: 0x37}, - 486: {cur: 0xb2, idx: 0x3ab}, - 487: {cur: 0xeb, idx: 0xbc}, - 488: {cur: 0xfc, idx: 0x4}, - 489: {cur: 0x12, idx: 0x30c}, - 490: {cur: 0x85, idx: 0x25}, - 491: {cur: 0xfc, idx: 0x4}, - 492: {cur: 0xeb, idx: 0xbc}, - 493: {cur: 0x86, idx: 0x308}, - 494: {cur: 0xba, idx: 0x97}, - 495: {cur: 0x67, idx: 0xf2}, - 496: {cur: 0xfc, idx: 0x4}, - 497: {cur: 0x44, idx: 0x47c}, - 498: {cur: 0x7a, idx: 0x487}, - 499: {cur: 0x85, idx: 0x25}, - 500: {cur: 0xeb, idx: 0xbc}, - 501: {cur: 0xfc, idx: 0x4}, - 502: {cur: 0xeb, idx: 0xbc}, - 503: {cur: 0xfc, idx: 0x4}, - 504: {cur: 0x13, idx: 0x0}, - 505: {cur: 0x2e, idx: 0x0}, - 506: {cur: 0x3a, idx: 0x0}, - 507: {cur: 0x44, idx: 0x0}, - 508: {cur: 0x5e, idx: 0x0}, - 509: {cur: 0x63, idx: 0x0}, - 510: {cur: 0x72, idx: 0x0}, - 511: {cur: 0x7c, idx: 0x0}, - 512: {cur: 0x7d, idx: 0x0}, - 513: {cur: 0x85, idx: 0x0}, - 514: {cur: 0x8d, idx: 0x0}, - 515: {cur: 0xb2, idx: 0x0}, - 516: {cur: 0xc0, idx: 0x0}, - 517: {cur: 0xf6, idx: 0x0}, - 518: {cur: 0xfc, idx: 0x0}, - 519: {cur: 0x105, idx: 0x0}, - 520: {cur: 0x110, idx: 0x0}, - 521: {cur: 0x117, idx: 0x0}, - 522: {cur: 0x18, idx: 0x9}, - 523: {cur: 0x13, idx: 0x0}, - 524: {cur: 0x85, idx: 0x25}, - 525: {cur: 0xc9, idx: 0xa6}, - 526: {cur: 0xeb, idx: 0xbc}, - 527: {cur: 0xfc, idx: 0x4}, - 528: {cur: 0x13, idx: 0x0}, - 529: {cur: 0x2e, idx: 0x0}, - 530: {cur: 0x3a, idx: 0x0}, - 531: {cur: 0x44, idx: 0x0}, - 532: {cur: 0x5e, idx: 0x0}, - 533: {cur: 0x63, idx: 0x0}, - 534: {cur: 0x72, idx: 0x0}, - 535: {cur: 0x77, idx: 0x54}, - 536: {cur: 0x7c, idx: 0x0}, - 537: {cur: 0x7d, idx: 0x0}, - 538: {cur: 0x85, idx: 0x25}, - 539: {cur: 0x8d, idx: 0x0}, - 540: {cur: 0xb2, idx: 0x0}, - 541: {cur: 0xc0, idx: 0x0}, - 542: {cur: 0xf6, idx: 0x0}, - 543: {cur: 0xfc, idx: 0x0}, - 544: {cur: 0x105, idx: 0x0}, - 545: {cur: 0x110, idx: 0x0}, - 546: {cur: 0x7, idx: 0x498}, - 547: {cur: 0xeb, idx: 0xbc}, - 548: {cur: 0xfc, idx: 0x4}, - 549: {cur: 0x13, idx: 0xf8}, - 550: {cur: 0x78, idx: 0x57}, - 551: {cur: 0x7d, idx: 0x7e}, - 552: {cur: 0xeb, idx: 0xbc}, - 553: {cur: 0xba, idx: 0x97}, - 554: {cur: 0x44, idx: 0x25}, - 555: {cur: 0x13, idx: 0x0}, - 556: {cur: 0x2e, idx: 0x0}, - 557: {cur: 0x3a, idx: 0x0}, - 558: {cur: 0x5e, idx: 0x0}, - 559: {cur: 0x63, idx: 0x0}, - 560: {cur: 0x7d, idx: 0x0}, - 561: {cur: 0x8d, idx: 0x0}, - 562: {cur: 0xb2, idx: 0x0}, - 563: {cur: 0xc0, idx: 0x0}, - 564: {cur: 0xf6, idx: 0x0}, - 565: {cur: 0xfc, idx: 0x0}, - 566: {cur: 0x105, idx: 0x0}, - 567: {cur: 0x2e, idx: 0x0}, - 568: {cur: 0x72, idx: 0x0}, - 569: {cur: 0x85, idx: 0x0}, - 570: {cur: 0x8d, idx: 0x0}, - 571: {cur: 0xb2, idx: 0x0}, - 572: {cur: 0xeb, idx: 0xbc}, - 573: {cur: 0xf6, idx: 0x0}, - 574: {cur: 0xfc, idx: 0x0}, - 575: {cur: 0x44, idx: 0x49f}, - 576: {cur: 0x85, idx: 0x4a3}, - 577: {cur: 0xfc, idx: 0x4}, - 578: {cur: 0xf7, idx: 0x23c}, - 579: {cur: 0x13, idx: 0x0}, - 580: {cur: 0x44, idx: 0x0}, - 581: {cur: 0x65, idx: 0x42}, - 582: {cur: 0x72, idx: 0x0}, - 583: {cur: 0x7c, idx: 0x0}, - 584: {cur: 0x7d, idx: 0x0}, - 585: {cur: 0x85, idx: 0x0}, - 586: {cur: 0x8d, idx: 0x0}, - 587: {cur: 0xc0, idx: 0x0}, - 588: {cur: 0x105, idx: 0x0}, - 589: {cur: 0x54, idx: 0x462}, - 590: {cur: 0x86, idx: 0x308}, - 591: {cur: 0xf7, idx: 0x23c}, - 592: {cur: 0x13, idx: 0xf8}, - 593: {cur: 0x4c, idx: 0x4ae}, - 594: {cur: 0xeb, idx: 0xbc}, - 595: {cur: 0x86, idx: 0x308}, - 596: {cur: 0x90, idx: 0x72}, - 597: {cur: 0xd2, idx: 0xb2}, - 598: {cur: 0xeb, idx: 0xbc}, - 599: {cur: 0xfc, idx: 0x4}, - 600: {cur: 0x52, idx: 0x304}, - 601: {cur: 0x86, idx: 0x308}, - 602: {cur: 0x88, idx: 0x67}, - 603: {cur: 0xeb, idx: 0xbc}, - 604: {cur: 0xfc, idx: 0x4}, - 605: {cur: 0xeb, idx: 0xbc}, - 606: {cur: 0xfc, idx: 0x4}, - 607: {cur: 0x13, idx: 0xf8}, - 608: {cur: 0xf7, idx: 0x23c}, - 609: {cur: 0x13, idx: 0x0}, - 610: {cur: 0x2e, idx: 0x0}, - 611: {cur: 0x3a, idx: 0x0}, - 612: {cur: 0x63, idx: 0x0}, - 613: {cur: 0x72, idx: 0x0}, - 614: {cur: 0x7c, idx: 0x0}, - 615: {cur: 0x7d, idx: 0x0}, - 616: {cur: 0x87, idx: 0x4bf}, - 617: {cur: 0x8d, idx: 0x0}, - 618: {cur: 0xb2, idx: 0x0}, - 619: {cur: 0xc0, idx: 0x0}, - 620: {cur: 0xeb, idx: 0xbc}, - 621: {cur: 0xf6, idx: 0x0}, - 622: {cur: 0xfc, idx: 0x0}, - 623: {cur: 0x110, idx: 0x0}, - 624: {cur: 0xf7, idx: 0x23c}, - 625: {cur: 0x12, idx: 0x30c}, - 626: {cur: 0x13, idx: 0xf8}, - 627: {cur: 0x85, idx: 0x25}, - 628: {cur: 0xeb, idx: 0xbc}, - 629: {cur: 0xfc, idx: 0x4}, - 630: {cur: 0xfb, idx: 0x2f4}, - 631: {cur: 0xfc, idx: 0x4}, - 632: {cur: 0x3b, idx: 0x32a}, - 633: {cur: 0x9, idx: 0x1}, - 634: {cur: 0x91, idx: 0x76}, - 635: {cur: 0xeb, idx: 0xbc}, - 636: {cur: 0x7e, idx: 0x17b}, - 637: {cur: 0x13, idx: 0x0}, - 638: {cur: 0x2e, idx: 0x0}, - 639: {cur: 0x3a, idx: 0x0}, - 640: {cur: 0x44, idx: 0x0}, - 641: {cur: 0x63, idx: 0x0}, - 642: {cur: 0x72, idx: 0x0}, - 643: {cur: 0x7c, idx: 0x0}, - 644: {cur: 0x7d, idx: 0x0}, - 645: {cur: 0x85, idx: 0x0}, - 646: {cur: 0x8d, idx: 0x0}, - 647: {cur: 0xb2, idx: 0x0}, - 648: {cur: 0xc0, idx: 0x0}, - 649: {cur: 0xf6, idx: 0x0}, - 650: {cur: 0xfc, idx: 0x0}, - 651: {cur: 0x105, idx: 0x0}, - 652: {cur: 0x109, idx: 0x0}, - 653: {cur: 0x110, idx: 0x0}, - 654: {cur: 0x115, idx: 0x0}, - 655: {cur: 0x117, idx: 0x0}, - 656: {cur: 0x3b, idx: 0x32a}, - 657: {cur: 0x86, idx: 0x308}, - 658: {cur: 0x86, idx: 0x308}, - 659: {cur: 0x13, idx: 0xf8}, - 660: {cur: 0x85, idx: 0x25}, - 661: {cur: 0x9b, idx: 0x84}, - 662: {cur: 0xeb, idx: 0xbc}, - 663: {cur: 0xfc, idx: 0x4}, - 664: {cur: 0x86, idx: 0x308}, - 665: {cur: 0xf7, idx: 0x23c}, - 666: {cur: 0x86, idx: 0x308}, - 667: {cur: 0xae, idx: 0x7e}, - 668: {cur: 0xa3, idx: 0x87}, - 669: {cur: 0xb8, idx: 0x4cc}, - 670: {cur: 0x13, idx: 0x0}, - 671: {cur: 0x44, idx: 0x0}, - 672: {cur: 0x63, idx: 0x0}, - 673: {cur: 0x72, idx: 0x0}, - 674: {cur: 0x7c, idx: 0x0}, - 675: {cur: 0x7d, idx: 0x0}, - 676: {cur: 0x85, idx: 0x0}, - 677: {cur: 0x8d, idx: 0x0}, - 678: {cur: 0xa5, idx: 0x4d0}, - 679: {cur: 0xc0, idx: 0x0}, - 680: {cur: 0xf6, idx: 0x0}, - 681: {cur: 0x105, idx: 0x0}, - 682: {cur: 0x85, idx: 0x25}, - 683: {cur: 0xeb, idx: 0xbc}, - 684: {cur: 0xfc, idx: 0x4}, - 685: {cur: 0xa9, idx: 0x8c}, - 686: {cur: 0xeb, idx: 0xbc}, - 687: {cur: 0xfc, idx: 0x4}, - 688: {cur: 0xeb, idx: 0xbc}, - 689: {cur: 0xfc, idx: 0x4}, - 690: {cur: 0x3a, idx: 0x0}, - 691: {cur: 0xb2, idx: 0x0}, - 692: {cur: 0xb5, idx: 0x94}, - 693: {cur: 0xfc, idx: 0x0}, - 694: {cur: 0x26, idx: 0x4}, - 695: {cur: 0xdc, idx: 0x4}, - 696: {cur: 0x8, idx: 0x4dc}, - 697: {cur: 0x14, idx: 0x4e0}, - 698: {cur: 0x76, idx: 0x465}, - 699: {cur: 0xa8, idx: 0x8a}, - 700: {cur: 0xc2, idx: 0x387}, - 701: {cur: 0xeb, idx: 0xbc}, - 702: {cur: 0xf5, idx: 0x21b}, - 703: {cur: 0xfc, idx: 0x4}, - 704: {cur: 0xb9, idx: 0x4}, - 705: {cur: 0x13, idx: 0x0}, - 706: {cur: 0x2e, idx: 0x0}, - 707: {cur: 0x3a, idx: 0x0}, - 708: {cur: 0x44, idx: 0x0}, - 709: {cur: 0x72, idx: 0x0}, - 710: {cur: 0x7c, idx: 0x0}, - 711: {cur: 0x7d, idx: 0x0}, - 712: {cur: 0x85, idx: 0x0}, - 713: {cur: 0x8d, idx: 0x0}, - 714: {cur: 0xb2, idx: 0x0}, - 715: {cur: 0xbe, idx: 0x30}, - 716: {cur: 0xc0, idx: 0x0}, - 717: {cur: 0xf6, idx: 0x0}, - 718: {cur: 0xfc, idx: 0x0}, - 719: {cur: 0x105, idx: 0x0}, - 720: {cur: 0x109, idx: 0x0}, - 721: {cur: 0x110, idx: 0x0}, - 722: {cur: 0x117, idx: 0x0}, - 723: {cur: 0xbf, idx: 0x4e4}, - 724: {cur: 0xeb, idx: 0xbc}, - 725: {cur: 0x13, idx: 0xf8}, - 726: {cur: 0x3a, idx: 0x9b}, - 727: {cur: 0x60, idx: 0x16e}, - 728: {cur: 0xd6, idx: 0x28a}, - 729: {cur: 0xeb, idx: 0xbc}, - 730: {cur: 0x117, idx: 0x0}, - 731: {cur: 0x14, idx: 0x4f8}, - 732: {cur: 0xfc, idx: 0x4}, - 733: {cur: 0x8, idx: 0x36d}, - 734: {cur: 0xe2, idx: 0x4}, - 735: {cur: 0x8, idx: 0x36d}, - 736: {cur: 0x13, idx: 0x0}, - 737: {cur: 0x2e, idx: 0x0}, - 738: {cur: 0x3a, idx: 0x0}, - 739: {cur: 0x44, idx: 0x0}, - 740: {cur: 0x63, idx: 0x0}, - 741: {cur: 0x72, idx: 0x0}, - 742: {cur: 0x7c, idx: 0x0}, - 743: {cur: 0x7d, idx: 0x0}, - 744: {cur: 0x85, idx: 0x0}, - 745: {cur: 0x8d, idx: 0x0}, - 746: {cur: 0xb2, idx: 0x0}, - 747: {cur: 0xbe, idx: 0x30}, - 748: {cur: 0xc0, idx: 0x0}, - 749: {cur: 0xf6, idx: 0x0}, - 750: {cur: 0xfc, idx: 0x0}, - 751: {cur: 0x105, idx: 0x0}, - 752: {cur: 0x109, idx: 0x0}, - 753: {cur: 0x110, idx: 0x0}, - 754: {cur: 0x117, idx: 0x0}, - 755: {cur: 0x63, idx: 0x237}, - 756: {cur: 0xe4, idx: 0x3f}, - 757: {cur: 0xfb, idx: 0x2f4}, - 758: {cur: 0x5d, idx: 0x258}, - 759: {cur: 0x86, idx: 0x308}, - 760: {cur: 0x85, idx: 0x25}, - 761: {cur: 0xfc, idx: 0x4}, - 762: {cur: 0x65, idx: 0x42}, - 763: {cur: 0xfc, idx: 0x4}, - 764: {cur: 0x65, idx: 0x0}, - 765: {cur: 0xd2, idx: 0xb2}, - 766: {cur: 0xeb, idx: 0xbc}, - 767: {cur: 0xc8, idx: 0x4fd}, - 768: {cur: 0x13, idx: 0x0}, - 769: {cur: 0x3a, idx: 0x0}, - 770: {cur: 0x44, idx: 0x0}, - 771: {cur: 0x63, idx: 0x0}, - 772: {cur: 0x72, idx: 0x0}, - 773: {cur: 0x7c, idx: 0x0}, - 774: {cur: 0x7d, idx: 0x0}, - 775: {cur: 0x85, idx: 0x0}, - 776: {cur: 0x8d, idx: 0x0}, - 777: {cur: 0xb2, idx: 0x0}, - 778: {cur: 0xc0, idx: 0x0}, - 779: {cur: 0xc9, idx: 0xa6}, - 780: {cur: 0xf6, idx: 0x0}, - 781: {cur: 0xfc, idx: 0x0}, - 782: {cur: 0x105, idx: 0x0}, - 783: {cur: 0x4, idx: 0x396}, - 784: {cur: 0x13, idx: 0xf8}, - 785: {cur: 0xcb, idx: 0x504}, - 786: {cur: 0xeb, idx: 0xbc}, - 787: {cur: 0x9, idx: 0x1}, - 788: {cur: 0x4c, idx: 0x4ae}, - 789: {cur: 0xcb, idx: 0x509}, - 790: {cur: 0x99, idx: 0x2eb}, - 791: {cur: 0xaa, idx: 0x35f}, - 792: {cur: 0xb8, idx: 0x4cc}, - 793: {cur: 0xcb, idx: 0x4ae}, - 794: {cur: 0xe5, idx: 0xb9}, - 795: {cur: 0xc4, idx: 0x38b}, - 796: {cur: 0x27, idx: 0x10}, - 797: {cur: 0xc4, idx: 0x0}, - 798: {cur: 0xc4, idx: 0x0}, - 799: {cur: 0xfc, idx: 0x4}, - 800: {cur: 0x24, idx: 0x359}, - 801: {cur: 0x13, idx: 0x0}, - 802: {cur: 0x2e, idx: 0x0}, - 803: {cur: 0x3a, idx: 0x0}, - 804: {cur: 0x44, idx: 0x0}, - 805: {cur: 0x5e, idx: 0x0}, - 806: {cur: 0x63, idx: 0x0}, - 807: {cur: 0x72, idx: 0x0}, - 808: {cur: 0x7c, idx: 0x0}, - 809: {cur: 0x7d, idx: 0x0}, - 810: {cur: 0x85, idx: 0x0}, - 811: {cur: 0x8d, idx: 0x0}, - 812: {cur: 0xb2, idx: 0x0}, - 813: {cur: 0xc0, idx: 0x0}, - 814: {cur: 0xf6, idx: 0x0}, - 815: {cur: 0xfc, idx: 0x0}, - 816: {cur: 0x105, idx: 0x0}, - 817: {cur: 0x110, idx: 0x0}, - 818: {cur: 0xa2, idx: 0x4f}, - 819: {cur: 0xf7, idx: 0x23c}, - 820: {cur: 0x0, idx: 0x510}, - 821: {cur: 0x85, idx: 0x25}, - 822: {cur: 0xd2, idx: 0xb2}, - 823: {cur: 0xd3, idx: 0x18}, - 824: {cur: 0xeb, idx: 0xbc}, - 825: {cur: 0xef, idx: 0x519}, - 826: {cur: 0xf8, idx: 0xcb}, - 827: {cur: 0xfc, idx: 0x4}, - 828: {cur: 0x37, idx: 0x258}, - 829: {cur: 0xd3, idx: 0x0}, - 830: {cur: 0x87, idx: 0x4bf}, - 831: {cur: 0x90, idx: 0x72}, - 832: {cur: 0xa2, idx: 0x4f}, - 833: {cur: 0xd4, idx: 0xb6}, - 834: {cur: 0xf7, idx: 0x23c}, - 835: {cur: 0xd2, idx: 0xb2}, - 836: {cur: 0x86, idx: 0x308}, - 837: {cur: 0xf7, idx: 0x23c}, - 838: {cur: 0xc8, idx: 0x7e}, - 839: {cur: 0x52, idx: 0x520}, - 840: {cur: 0xbe, idx: 0x30}, - 841: {cur: 0xdb, idx: 0x524}, - 842: {cur: 0xeb, idx: 0xbc}, - 843: {cur: 0xbe, idx: 0x528}, - 844: {cur: 0xdb, idx: 0x30}, - 845: {cur: 0xb8, idx: 0x4cc}, - 846: {cur: 0x93, idx: 0x52c}, - 847: {cur: 0xeb, idx: 0xbc}, - 848: {cur: 0x115, idx: 0x534}, - 849: {cur: 0x13, idx: 0x0}, - 850: {cur: 0x2e, idx: 0x0}, - 851: {cur: 0x3a, idx: 0x0}, - 852: {cur: 0x44, idx: 0x0}, - 853: {cur: 0x63, idx: 0x0}, - 854: {cur: 0x72, idx: 0x0}, - 855: {cur: 0x7c, idx: 0x544}, - 856: {cur: 0x7d, idx: 0x0}, - 857: {cur: 0x85, idx: 0x0}, - 858: {cur: 0x8d, idx: 0x0}, - 859: {cur: 0xc0, idx: 0x0}, - 860: {cur: 0xf6, idx: 0x0}, - 861: {cur: 0xfc, idx: 0x0}, - 862: {cur: 0x105, idx: 0x0}, - 863: {cur: 0x13, idx: 0x0}, - 864: {cur: 0x2e, idx: 0x0}, - 865: {cur: 0x3a, idx: 0x0}, - 866: {cur: 0x63, idx: 0x0}, - 867: {cur: 0x85, idx: 0x25}, - 868: {cur: 0xb2, idx: 0x0}, - 869: {cur: 0xc0, idx: 0x0}, - 870: {cur: 0xf6, idx: 0x0}, - 871: {cur: 0xfc, idx: 0x4}, - 872: {cur: 0x110, idx: 0x0}, - 873: {cur: 0xe1, idx: 0x235}, - 874: {cur: 0x51, idx: 0x22d}, - 875: {cur: 0x5d, idx: 0x258}, - 876: {cur: 0x86, idx: 0x308}, - 877: {cur: 0x6, idx: 0x548}, - 878: {cur: 0xeb, idx: 0xbc}, - 879: {cur: 0xa5, idx: 0x54e}, - 880: {cur: 0x13, idx: 0x0}, - 881: {cur: 0x18, idx: 0x2cf}, - 882: {cur: 0x85, idx: 0x25}, - 883: {cur: 0x8d, idx: 0x0}, - 884: {cur: 0xc0, idx: 0x0}, - 885: {cur: 0x105, idx: 0x0}, - 886: {cur: 0x13, idx: 0x0}, - 887: {cur: 0x18, idx: 0x9}, - 888: {cur: 0x85, idx: 0x25}, - 889: {cur: 0x8d, idx: 0x0}, - 890: {cur: 0xc0, idx: 0x0}, - 891: {cur: 0x105, idx: 0x0}, - 892: {cur: 0x13, idx: 0x0}, - 893: {cur: 0x1a, idx: 0x24c}, - 894: {cur: 0x25, idx: 0x13a}, - 895: {cur: 0x2e, idx: 0x555}, - 896: {cur: 0x32, idx: 0x142}, - 897: {cur: 0x39, idx: 0x146}, - 898: {cur: 0x44, idx: 0x0}, - 899: {cur: 0x52, idx: 0x520}, - 900: {cur: 0x53, idx: 0x264}, - 901: {cur: 0x57, idx: 0x559}, - 902: {cur: 0x58, idx: 0x55d}, - 903: {cur: 0x63, idx: 0x0}, - 904: {cur: 0x72, idx: 0x0}, - 905: {cur: 0x79, idx: 0x562}, - 906: {cur: 0x7d, idx: 0x0}, - 907: {cur: 0x81, idx: 0x567}, - 908: {cur: 0x83, idx: 0x18c}, - 909: {cur: 0x85, idx: 0x0}, - 910: {cur: 0x8d, idx: 0x0}, - 911: {cur: 0xbe, idx: 0x528}, - 912: {cur: 0xc0, idx: 0x0}, - 913: {cur: 0xdb, idx: 0x30}, - 914: {cur: 0xf6, idx: 0x0}, - 915: {cur: 0x105, idx: 0x0}, - 916: {cur: 0x86, idx: 0x308}, - 917: {cur: 0xeb, idx: 0xbc}, - 918: {cur: 0xf7, idx: 0x23c}, - 919: {cur: 0x3b, idx: 0x32a}, - 920: {cur: 0xfb, idx: 0x2f4}, - 921: {cur: 0x85, idx: 0x25}, - 922: {cur: 0xeb, idx: 0xbc}, - 923: {cur: 0xfc, idx: 0x4}, - 924: {cur: 0x93, idx: 0x56b}, - 925: {cur: 0xb5, idx: 0x94}, - 926: {cur: 0xdc, idx: 0x28e}, - 927: {cur: 0xb5, idx: 0x94}, - 928: {cur: 0xdc, idx: 0x4}, - 929: {cur: 0xfc, idx: 0xcf}, - 930: {cur: 0xeb, idx: 0xbc}, - 931: {cur: 0xfc, idx: 0x4}, - 932: {cur: 0xfb, idx: 0x2f4}, - 933: {cur: 0x86, idx: 0x308}, - 934: {cur: 0xed, idx: 0x56f}, - 935: {cur: 0xfc, idx: 0x4}, - 936: {cur: 0x13, idx: 0xf8}, - 937: {cur: 0x85, idx: 0x25}, - 938: {cur: 0x5d, idx: 0x258}, - 939: {cur: 0x59, idx: 0x231}, - 940: {cur: 0x5e, idx: 0x0}, - 941: {cur: 0x63, idx: 0x0}, - 942: {cur: 0x13, idx: 0x577}, - 943: {cur: 0xc0, idx: 0x57c}, - 944: {cur: 0xf1, idx: 0xc0}, - 945: {cur: 0x13, idx: 0xf8}, - 946: {cur: 0x85, idx: 0x25}, - 947: {cur: 0xeb, idx: 0xbc}, - 948: {cur: 0xf4, idx: 0xc3}, - 949: {cur: 0xfc, idx: 0x4}, - 950: {cur: 0xd2, idx: 0xb2}, - 951: {cur: 0xfc, idx: 0x4}, - 952: {cur: 0x44, idx: 0x4a3}, - 953: {cur: 0xfc, idx: 0x4}, - 954: {cur: 0x13, idx: 0x0}, - 955: {cur: 0x2e, idx: 0x0}, - 956: {cur: 0x3a, idx: 0x0}, - 957: {cur: 0x44, idx: 0x0}, - 958: {cur: 0x5e, idx: 0x0}, - 959: {cur: 0x63, idx: 0x0}, - 960: {cur: 0x72, idx: 0x0}, - 961: {cur: 0x7c, idx: 0x0}, - 962: {cur: 0x7d, idx: 0x0}, - 963: {cur: 0x85, idx: 0x25}, - 964: {cur: 0x8d, idx: 0x0}, - 965: {cur: 0xb2, idx: 0x0}, - 966: {cur: 0xc0, idx: 0x0}, - 967: {cur: 0xf6, idx: 0x0}, - 968: {cur: 0xf8, idx: 0xcb}, - 969: {cur: 0xf9, idx: 0x581}, - 970: {cur: 0xfc, idx: 0x0}, - 971: {cur: 0x105, idx: 0x0}, - 972: {cur: 0x110, idx: 0x0}, - 973: {cur: 0xc8, idx: 0x7e}, - 974: {cur: 0xeb, idx: 0xbc}, - 975: {cur: 0xfc, idx: 0x4}, - 976: {cur: 0xc8, idx: 0x0}, - 977: {cur: 0x102, idx: 0x589}, - 978: {cur: 0x4, idx: 0x396}, - 979: {cur: 0xeb, idx: 0xbc}, - 980: {cur: 0x102, idx: 0x58f}, - 981: {cur: 0x94, idx: 0x4}, - 982: {cur: 0x94, idx: 0x4}, - 983: {cur: 0x13, idx: 0xf8}, - 984: {cur: 0xeb, idx: 0xbc}, - 985: {cur: 0xf7, idx: 0x23c}, - 986: {cur: 0x85, idx: 0x25}, - 987: {cur: 0xfc, idx: 0x4}, - 988: {cur: 0xfc, idx: 0x4}, - 989: {cur: 0xfb, idx: 0x2f4}, - 990: {cur: 0xba, idx: 0x97}, - 991: {cur: 0x13, idx: 0xf8}, - 992: {cur: 0x85, idx: 0x25}, - 993: {cur: 0x8d, idx: 0x596}, - 994: {cur: 0x13, idx: 0xf8}, - 995: {cur: 0x44, idx: 0x4a3}, - 996: {cur: 0x8d, idx: 0x596}, - 997: {cur: 0x13, idx: 0xf8}, - 998: {cur: 0x44, idx: 0x4a3}, - 999: {cur: 0x7b, idx: 0x59a}, - 1000: {cur: 0x8d, idx: 0x596}, - 1001: {cur: 0x44, idx: 0x20}, - 1002: {cur: 0x44, idx: 0x20}, - 1003: {cur: 0xaa, idx: 0x35f}, - 1004: {cur: 0x44, idx: 0x20}, - 1005: {cur: 0xdc, idx: 0x4}, - 1006: {cur: 0x13, idx: 0xf8}, - 1007: {cur: 0x85, idx: 0x25}, - 1008: {cur: 0x8d, idx: 0x596}, - 1009: {cur: 0xf6, idx: 0x4}, - 1010: {cur: 0x8d, idx: 0x6e}, - 1011: {cur: 0xf6, idx: 0xc7}, - 1012: {cur: 0xaa, idx: 0x35f}, - 1013: {cur: 0xeb, idx: 0xbc}, - 1014: {cur: 0x125, idx: 0xe9}, -} // Size: 4084 bytes - -var narrowLangIndex = []uint16{ // 769 elements - // Entry 0 - 3F - 0x0000, 0x0062, 0x0062, 0x0062, 0x0064, 0x0064, 0x0064, 0x0064, - 0x0064, 0x0064, 0x0064, 0x0065, 0x0065, 0x0081, 0x0081, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008b, - 0x008b, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00d8, 0x00d8, - // Entry 40 - 7F - 0x00d8, 0x00d8, 0x00d8, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00df, - 0x00df, 0x00df, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e8, - 0x00e8, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f7, 0x00f7, - 0x00f7, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - // Entry 80 - BF - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - // Entry C0 - FF - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0103, 0x0108, 0x0108, 0x0108, - 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, - // Entry 100 - 13F - 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x010d, 0x010d, - 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x0111, 0x0111, - 0x0112, 0x0113, 0x0113, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, - 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0171, - 0x0171, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x017a, 0x017a, - 0x017a, 0x017a, 0x017a, 0x017a, 0x017f, 0x017f, 0x017f, 0x017f, - 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, - 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, - // Entry 140 - 17F - 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, - 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, - 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, - 0x017f, 0x0180, 0x0180, 0x0182, 0x0182, 0x0185, 0x0185, 0x0185, - 0x0185, 0x0185, 0x0185, 0x0187, 0x0187, 0x0187, 0x0187, 0x0187, - 0x0187, 0x0187, 0x0187, 0x0187, 0x0187, 0x0187, 0x0187, 0x0187, - 0x0188, 0x0188, 0x018a, 0x018a, 0x018b, 0x018b, 0x018b, 0x018b, - 0x018b, 0x018c, 0x018c, 0x018d, 0x018d, 0x018e, 0x018e, 0x018e, - // Entry 180 - 1BF - 0x018e, 0x018e, 0x018e, 0x018e, 0x018f, 0x018f, 0x0193, 0x0193, - 0x0193, 0x0193, 0x0193, 0x0193, 0x0196, 0x0196, 0x0196, 0x0196, - 0x0196, 0x0196, 0x0196, 0x0196, 0x0197, 0x0197, 0x0197, 0x0197, - 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, 0x0197, - 0x0197, 0x0197, 0x0197, 0x0197, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0199, 0x0199, 0x019b, 0x019b, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - // Entry 1C0 - 1FF - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a9, 0x01a9, 0x01a9, 0x01a9, - 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01aa, - 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01b5, 0x01b5, 0x01b5, 0x01b5, - 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01b6, 0x01b6, 0x01b6, 0x01b7, 0x01b7, 0x01b8, 0x01b8, 0x01ba, - 0x01ba, 0x01bb, 0x01bb, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, - // Entry 200 - 23F - 0x01be, 0x01be, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, - 0x01c0, 0x01c0, 0x01c1, 0x01c1, 0x01c1, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c3, 0x01c3, 0x01c3, 0x01c3, - 0x01c3, 0x01c3, 0x01c5, 0x01c5, 0x01c5, 0x01c5, 0x01c5, 0x01c5, - 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, - // Entry 240 - 27F - 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, - 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c8, 0x01c8, 0x01c8, - 0x01c8, 0x01c8, 0x01cb, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01cf, - 0x01cf, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - // Entry 280 - 2BF - 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d2, 0x01d2, 0x01d2, 0x01d2, - 0x01d2, 0x01d2, 0x01d5, 0x01d5, 0x01d5, 0x01d5, 0x01d5, 0x01d5, - 0x01d5, 0x01d5, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d9, 0x01d9, - 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, - 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, - 0x01dc, 0x01dc, 0x01dc, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, - // Entry 2C0 - 2FF - 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01df, - 0x01df, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, - 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e0, - 0x01e0, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, - 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, - 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, - 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e1, 0x01e2, 0x01e2, 0x01e2, - 0x01e2, 0x01e2, 0x01e2, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01eb, - // Entry 300 - 33F - 0x01eb, -} // Size: 1562 bytes - -var narrowSymIndex = []curToIndex{ // 491 elements - 0: {cur: 0x9, idx: 0x1}, - 1: {cur: 0x11, idx: 0x4}, - 2: {cur: 0x13, idx: 0x4}, - 3: {cur: 0x18, idx: 0x9}, - 4: {cur: 0x1a, idx: 0x4}, - 5: {cur: 0x1b, idx: 0xc}, - 6: {cur: 0x25, idx: 0x4}, - 7: {cur: 0x26, idx: 0x4}, - 8: {cur: 0x27, idx: 0x10}, - 9: {cur: 0x2e, idx: 0x13}, - 10: {cur: 0x32, idx: 0x4}, - 11: {cur: 0x35, idx: 0x16}, - 12: {cur: 0x37, idx: 0x18}, - 13: {cur: 0x39, idx: 0x4}, - 14: {cur: 0x3a, idx: 0x4}, - 15: {cur: 0x41, idx: 0x4}, - 16: {cur: 0x44, idx: 0x25}, - 17: {cur: 0x45, idx: 0x4}, - 18: {cur: 0x47, idx: 0x28}, - 19: {cur: 0x4a, idx: 0x4}, - 20: {cur: 0x4b, idx: 0x4}, - 21: {cur: 0x4e, idx: 0x2c}, - 22: {cur: 0x52, idx: 0x30}, - 23: {cur: 0x53, idx: 0x4}, - 24: {cur: 0x58, idx: 0x33}, - 25: {cur: 0x5c, idx: 0x37}, - 26: {cur: 0x5e, idx: 0x3b}, - 27: {cur: 0x60, idx: 0x4}, - 28: {cur: 0x61, idx: 0x3f}, - 29: {cur: 0x63, idx: 0x3f}, - 30: {cur: 0x65, idx: 0x42}, - 31: {cur: 0x68, idx: 0x3f}, - 32: {cur: 0x6a, idx: 0x46}, - 33: {cur: 0x6e, idx: 0x49}, - 34: {cur: 0x71, idx: 0x4}, - 35: {cur: 0x72, idx: 0x4}, - 36: {cur: 0x73, idx: 0x4f}, - 37: {cur: 0x75, idx: 0x51}, - 38: {cur: 0x77, idx: 0x54}, - 39: {cur: 0x78, idx: 0x57}, - 40: {cur: 0x7c, idx: 0x5a}, - 41: {cur: 0x7d, idx: 0x5e}, - 42: {cur: 0x81, idx: 0x30}, - 43: {cur: 0x83, idx: 0x4}, - 44: {cur: 0x85, idx: 0x25}, - 45: {cur: 0x88, idx: 0x67}, - 46: {cur: 0x89, idx: 0x6b}, - 47: {cur: 0x8a, idx: 0x6e}, - 48: {cur: 0x8d, idx: 0x6e}, - 49: {cur: 0x8f, idx: 0x4}, - 50: {cur: 0x90, idx: 0x72}, - 51: {cur: 0x91, idx: 0x76}, - 52: {cur: 0x92, idx: 0x7a}, - 53: {cur: 0x93, idx: 0x7e}, - 54: {cur: 0x94, idx: 0x4}, - 55: {cur: 0x96, idx: 0x81}, - 56: {cur: 0x9b, idx: 0x84}, - 57: {cur: 0xa3, idx: 0x87}, - 58: {cur: 0xa8, idx: 0x8a}, - 59: {cur: 0xa9, idx: 0x8c}, - 60: {cur: 0xae, idx: 0x7e}, - 61: {cur: 0xb2, idx: 0x4}, - 62: {cur: 0xb5, idx: 0x94}, - 63: {cur: 0xb9, idx: 0x4}, - 64: {cur: 0xba, idx: 0x97}, - 65: {cur: 0xbc, idx: 0x9b}, - 66: {cur: 0xbe, idx: 0x30}, - 67: {cur: 0xbf, idx: 0x7e}, - 68: {cur: 0xc0, idx: 0x4}, - 69: {cur: 0xc7, idx: 0xa2}, - 70: {cur: 0xc8, idx: 0x7e}, - 71: {cur: 0xc9, idx: 0xa6}, - 72: {cur: 0xcc, idx: 0xaa}, - 73: {cur: 0xd0, idx: 0xae}, - 74: {cur: 0xd2, idx: 0xb2}, - 75: {cur: 0xd3, idx: 0x18}, - 76: {cur: 0xd4, idx: 0xb6}, - 77: {cur: 0xd6, idx: 0x4}, - 78: {cur: 0xdb, idx: 0x30}, - 79: {cur: 0xdc, idx: 0x4}, - 80: {cur: 0xdd, idx: 0x3f}, - 81: {cur: 0xe2, idx: 0x4}, - 82: {cur: 0xe4, idx: 0x3f}, - 83: {cur: 0xe5, idx: 0xb9}, - 84: {cur: 0xe9, idx: 0x3f}, - 85: {cur: 0xeb, idx: 0xbc}, - 86: {cur: 0xf1, idx: 0xc0}, - 87: {cur: 0xf4, idx: 0xc3}, - 88: {cur: 0xf5, idx: 0x4}, - 89: {cur: 0xf6, idx: 0x4}, - 90: {cur: 0xf8, idx: 0xcb}, - 91: {cur: 0xfc, idx: 0x4}, - 92: {cur: 0x101, idx: 0x4}, - 93: {cur: 0x104, idx: 0x10}, - 94: {cur: 0x105, idx: 0xd3}, - 95: {cur: 0x110, idx: 0x4}, - 96: {cur: 0x125, idx: 0xe9}, - 97: {cur: 0x127, idx: 0xeb}, - 98: {cur: 0xd0, idx: 0xee}, - 99: {cur: 0xf6, idx: 0xc7}, - 100: {cur: 0xf6, idx: 0xc7}, - 101: {cur: 0x11, idx: 0x128}, - 102: {cur: 0x13, idx: 0xf8}, - 103: {cur: 0x1a, idx: 0x12c}, - 104: {cur: 0x25, idx: 0x13a}, - 105: {cur: 0x26, idx: 0x13e}, - 106: {cur: 0x32, idx: 0x142}, - 107: {cur: 0x39, idx: 0x146}, - 108: {cur: 0x3a, idx: 0x1c}, - 109: {cur: 0x41, idx: 0x14a}, - 110: {cur: 0x44, idx: 0x20}, - 111: {cur: 0x45, idx: 0x14e}, - 112: {cur: 0x4b, idx: 0x152}, - 113: {cur: 0x53, idx: 0x156}, - 114: {cur: 0x60, idx: 0x16e}, - 115: {cur: 0x63, idx: 0x172}, - 116: {cur: 0x71, idx: 0x177}, - 117: {cur: 0x72, idx: 0x4b}, - 118: {cur: 0x83, idx: 0x18c}, - 119: {cur: 0x85, idx: 0x62}, - 120: {cur: 0x8f, idx: 0x1a4}, - 121: {cur: 0xb2, idx: 0x90}, - 122: {cur: 0xc0, idx: 0x9e}, - 123: {cur: 0xd6, idx: 0x1ee}, - 124: {cur: 0xe2, idx: 0x203}, - 125: {cur: 0xf5, idx: 0x21b}, - 126: {cur: 0xf6, idx: 0xc7}, - 127: {cur: 0xfc, idx: 0xcf}, - 128: {cur: 0x101, idx: 0x21f}, - 129: {cur: 0x26, idx: 0x4}, - 130: {cur: 0x37, idx: 0x0}, - 131: {cur: 0x52, idx: 0x0}, - 132: {cur: 0x75, idx: 0x0}, - 133: {cur: 0x81, idx: 0x0}, - 134: {cur: 0xbe, idx: 0x0}, - 135: {cur: 0xc9, idx: 0x0}, - 136: {cur: 0xd3, idx: 0x0}, - 137: {cur: 0xdb, idx: 0x0}, - 138: {cur: 0xf6, idx: 0xc7}, - 139: {cur: 0xd0, idx: 0x244}, - 140: {cur: 0xe9, idx: 0x248}, - 141: {cur: 0xf6, idx: 0xc7}, - 142: {cur: 0x13, idx: 0x6}, - 143: {cur: 0x1a, idx: 0x24c}, - 144: {cur: 0x25, idx: 0x251}, - 145: {cur: 0x32, idx: 0x255}, - 146: {cur: 0x37, idx: 0x258}, - 147: {cur: 0x39, idx: 0x146}, - 148: {cur: 0x3a, idx: 0x1c}, - 149: {cur: 0x4a, idx: 0x25b}, - 150: {cur: 0x4b, idx: 0x260}, - 151: {cur: 0x53, idx: 0x264}, - 152: {cur: 0x60, idx: 0x16e}, - 153: {cur: 0x61, idx: 0x268}, - 154: {cur: 0x71, idx: 0x26d}, - 155: {cur: 0x81, idx: 0x270}, - 156: {cur: 0x83, idx: 0x275}, - 157: {cur: 0x8f, idx: 0x278}, - 158: {cur: 0x94, idx: 0x27c}, - 159: {cur: 0xb2, idx: 0x90}, - 160: {cur: 0xb9, idx: 0x27f}, - 161: {cur: 0xc0, idx: 0x9e}, - 162: {cur: 0xd2, idx: 0x282}, - 163: {cur: 0xd6, idx: 0x28a}, - 164: {cur: 0xdc, idx: 0x28e}, - 165: {cur: 0xf5, idx: 0x21b}, - 166: {cur: 0x101, idx: 0x291}, - 167: {cur: 0x110, idx: 0xdc}, - 168: {cur: 0x11, idx: 0x0}, - 169: {cur: 0x13, idx: 0x0}, - 170: {cur: 0x1a, idx: 0x0}, - 171: {cur: 0x1b, idx: 0x0}, - 172: {cur: 0x25, idx: 0x0}, - 173: {cur: 0x26, idx: 0x0}, - 174: {cur: 0x2e, idx: 0x0}, - 175: {cur: 0x32, idx: 0x0}, - 176: {cur: 0x37, idx: 0x0}, - 177: {cur: 0x39, idx: 0x0}, - 178: {cur: 0x3a, idx: 0x0}, - 179: {cur: 0x41, idx: 0x0}, - 180: {cur: 0x44, idx: 0x0}, - 181: {cur: 0x45, idx: 0x0}, - 182: {cur: 0x47, idx: 0x0}, - 183: {cur: 0x4b, idx: 0x0}, - 184: {cur: 0x53, idx: 0x0}, - 185: {cur: 0x60, idx: 0x0}, - 186: {cur: 0x68, idx: 0x0}, - 187: {cur: 0x71, idx: 0x0}, - 188: {cur: 0x72, idx: 0x0}, - 189: {cur: 0x7c, idx: 0x0}, - 190: {cur: 0x7d, idx: 0x0}, - 191: {cur: 0x83, idx: 0x0}, - 192: {cur: 0x88, idx: 0x0}, - 193: {cur: 0x8d, idx: 0x0}, - 194: {cur: 0x8f, idx: 0x0}, - 195: {cur: 0x90, idx: 0x0}, - 196: {cur: 0x91, idx: 0x0}, - 197: {cur: 0x94, idx: 0x0}, - 198: {cur: 0xa9, idx: 0x0}, - 199: {cur: 0xb2, idx: 0x0}, - 200: {cur: 0xb9, idx: 0x0}, - 201: {cur: 0xba, idx: 0x0}, - 202: {cur: 0xc0, idx: 0x0}, - 203: {cur: 0xc7, idx: 0x0}, - 204: {cur: 0xcc, idx: 0x0}, - 205: {cur: 0xd0, idx: 0x0}, - 206: {cur: 0xd6, idx: 0x0}, - 207: {cur: 0xdc, idx: 0x0}, - 208: {cur: 0xe2, idx: 0x0}, - 209: {cur: 0xe4, idx: 0x0}, - 210: {cur: 0xf4, idx: 0x0}, - 211: {cur: 0xf5, idx: 0x0}, - 212: {cur: 0xf6, idx: 0x0}, - 213: {cur: 0xf8, idx: 0x0}, - 214: {cur: 0x101, idx: 0x0}, - 215: {cur: 0x105, idx: 0x0}, - 216: {cur: 0xf6, idx: 0xc7}, - 217: {cur: 0x58, idx: 0x2a8}, - 218: {cur: 0x92, idx: 0x2b8}, - 219: {cur: 0xf1, idx: 0x2c1}, - 220: {cur: 0xf6, idx: 0xc7}, - 221: {cur: 0x104, idx: 0x0}, - 222: {cur: 0xf6, idx: 0xc7}, - 223: {cur: 0xd0, idx: 0x2ed}, - 224: {cur: 0xd0, idx: 0x4f}, - 225: {cur: 0xf6, idx: 0xc7}, - 226: {cur: 0x1b, idx: 0x301}, - 227: {cur: 0x35, idx: 0x0}, - 228: {cur: 0x72, idx: 0x4b}, - 229: {cur: 0xf6, idx: 0xc7}, - 230: {cur: 0x125, idx: 0x0}, - 231: {cur: 0x127, idx: 0x0}, - 232: {cur: 0x52, idx: 0x304}, - 233: {cur: 0x81, idx: 0x304}, - 234: {cur: 0xbe, idx: 0x304}, - 235: {cur: 0xd0, idx: 0x4f}, - 236: {cur: 0xdb, idx: 0x304}, - 237: {cur: 0xf6, idx: 0xc7}, - 238: {cur: 0x4a, idx: 0x318}, - 239: {cur: 0x61, idx: 0x320}, - 240: {cur: 0x6a, idx: 0x325}, - 241: {cur: 0x89, idx: 0x32a}, - 242: {cur: 0xd0, idx: 0x4f}, - 243: {cur: 0xd4, idx: 0x32d}, - 244: {cur: 0xe9, idx: 0x0}, - 245: {cur: 0xf6, idx: 0xc7}, - 246: {cur: 0x127, idx: 0x8a}, - 247: {cur: 0x5e, idx: 0x0}, - 248: {cur: 0x1b, idx: 0x349}, - 249: {cur: 0x27, idx: 0x34c}, - 250: {cur: 0x4b, idx: 0xa2}, - 251: {cur: 0x58, idx: 0x3f}, - 252: {cur: 0x81, idx: 0x34f}, - 253: {cur: 0xcc, idx: 0x352}, - 254: {cur: 0xdb, idx: 0x34f}, - 255: {cur: 0x101, idx: 0x291}, - 256: {cur: 0x58, idx: 0x0}, - 257: {cur: 0xd0, idx: 0x4f}, - 258: {cur: 0xf6, idx: 0xc7}, - 259: {cur: 0x58, idx: 0x33}, - 260: {cur: 0x61, idx: 0x268}, - 261: {cur: 0xe4, idx: 0x37b}, - 262: {cur: 0xe9, idx: 0x248}, - 263: {cur: 0x104, idx: 0x380}, - 264: {cur: 0x37, idx: 0x384}, - 265: {cur: 0x61, idx: 0x3f}, - 266: {cur: 0xd0, idx: 0xae}, - 267: {cur: 0xe4, idx: 0x3f}, - 268: {cur: 0xe9, idx: 0x3f}, - 269: {cur: 0x61, idx: 0x3f}, - 270: {cur: 0xd0, idx: 0xae}, - 271: {cur: 0xe4, idx: 0x3f}, - 272: {cur: 0xe9, idx: 0x3f}, - 273: {cur: 0x104, idx: 0x392}, - 274: {cur: 0xf6, idx: 0xc7}, - 275: {cur: 0xf6, idx: 0xc7}, - 276: {cur: 0x9, idx: 0x0}, - 277: {cur: 0x11, idx: 0x0}, - 278: {cur: 0x13, idx: 0x0}, - 279: {cur: 0x18, idx: 0x0}, - 280: {cur: 0x1a, idx: 0x0}, - 281: {cur: 0x1b, idx: 0x0}, - 282: {cur: 0x25, idx: 0x0}, - 283: {cur: 0x26, idx: 0x0}, - 284: {cur: 0x27, idx: 0x0}, - 285: {cur: 0x2e, idx: 0x0}, - 286: {cur: 0x32, idx: 0x0}, - 287: {cur: 0x35, idx: 0x0}, - 288: {cur: 0x37, idx: 0x0}, - 289: {cur: 0x39, idx: 0x0}, - 290: {cur: 0x3a, idx: 0x0}, - 291: {cur: 0x41, idx: 0x0}, - 292: {cur: 0x44, idx: 0x0}, - 293: {cur: 0x45, idx: 0x0}, - 294: {cur: 0x47, idx: 0x0}, - 295: {cur: 0x4a, idx: 0x0}, - 296: {cur: 0x4b, idx: 0x0}, - 297: {cur: 0x4e, idx: 0x0}, - 298: {cur: 0x52, idx: 0x0}, - 299: {cur: 0x53, idx: 0x0}, - 300: {cur: 0x58, idx: 0x0}, - 301: {cur: 0x5c, idx: 0x0}, - 302: {cur: 0x60, idx: 0x0}, - 303: {cur: 0x61, idx: 0x0}, - 304: {cur: 0x65, idx: 0x0}, - 305: {cur: 0x68, idx: 0x0}, - 306: {cur: 0x6a, idx: 0x0}, - 307: {cur: 0x6e, idx: 0x0}, - 308: {cur: 0x71, idx: 0x0}, - 309: {cur: 0x72, idx: 0x0}, - 310: {cur: 0x73, idx: 0x0}, - 311: {cur: 0x75, idx: 0x0}, - 312: {cur: 0x77, idx: 0x0}, - 313: {cur: 0x78, idx: 0x0}, - 314: {cur: 0x7c, idx: 0x0}, - 315: {cur: 0x7d, idx: 0x0}, - 316: {cur: 0x81, idx: 0x0}, - 317: {cur: 0x83, idx: 0x0}, - 318: {cur: 0x88, idx: 0x0}, - 319: {cur: 0x89, idx: 0x0}, - 320: {cur: 0x8a, idx: 0x0}, - 321: {cur: 0x8d, idx: 0x0}, - 322: {cur: 0x8f, idx: 0x0}, - 323: {cur: 0x90, idx: 0x0}, - 324: {cur: 0x91, idx: 0x0}, - 325: {cur: 0x92, idx: 0x0}, - 326: {cur: 0x93, idx: 0x0}, - 327: {cur: 0x94, idx: 0x0}, - 328: {cur: 0x96, idx: 0x0}, - 329: {cur: 0x9b, idx: 0x0}, - 330: {cur: 0xa3, idx: 0x0}, - 331: {cur: 0xa8, idx: 0x0}, - 332: {cur: 0xa9, idx: 0x0}, - 333: {cur: 0xae, idx: 0x0}, - 334: {cur: 0xb2, idx: 0x0}, - 335: {cur: 0xb5, idx: 0x0}, - 336: {cur: 0xb9, idx: 0x0}, - 337: {cur: 0xba, idx: 0x0}, - 338: {cur: 0xbc, idx: 0x0}, - 339: {cur: 0xbe, idx: 0x0}, - 340: {cur: 0xbf, idx: 0x0}, - 341: {cur: 0xc0, idx: 0x0}, - 342: {cur: 0xc7, idx: 0x0}, - 343: {cur: 0xc8, idx: 0x0}, - 344: {cur: 0xc9, idx: 0x0}, - 345: {cur: 0xcc, idx: 0x0}, - 346: {cur: 0xd0, idx: 0x0}, - 347: {cur: 0xd3, idx: 0x0}, - 348: {cur: 0xd4, idx: 0x0}, - 349: {cur: 0xd6, idx: 0x0}, - 350: {cur: 0xdb, idx: 0x0}, - 351: {cur: 0xdc, idx: 0x0}, - 352: {cur: 0xdd, idx: 0x0}, - 353: {cur: 0xe2, idx: 0x0}, - 354: {cur: 0xe4, idx: 0x0}, - 355: {cur: 0xe5, idx: 0x0}, - 356: {cur: 0xe9, idx: 0x0}, - 357: {cur: 0xeb, idx: 0x0}, - 358: {cur: 0xf1, idx: 0x0}, - 359: {cur: 0xf4, idx: 0x0}, - 360: {cur: 0xf5, idx: 0x0}, - 361: {cur: 0xf6, idx: 0x0}, - 362: {cur: 0xf8, idx: 0x0}, - 363: {cur: 0x101, idx: 0x0}, - 364: {cur: 0x104, idx: 0x0}, - 365: {cur: 0x105, idx: 0x0}, - 366: {cur: 0x110, idx: 0x0}, - 367: {cur: 0x125, idx: 0x0}, - 368: {cur: 0x127, idx: 0x0}, - 369: {cur: 0xf6, idx: 0xc7}, - 370: {cur: 0x58, idx: 0x3e5}, - 371: {cur: 0x89, idx: 0x32a}, - 372: {cur: 0x92, idx: 0x2b8}, - 373: {cur: 0xbc, idx: 0x41a}, - 374: {cur: 0xd0, idx: 0x4f}, - 375: {cur: 0xd4, idx: 0x421}, - 376: {cur: 0xf6, idx: 0xc7}, - 377: {cur: 0x127, idx: 0x441}, - 378: {cur: 0x37, idx: 0x258}, - 379: {cur: 0x65, idx: 0x0}, - 380: {cur: 0x89, idx: 0x6b}, - 381: {cur: 0xbc, idx: 0x9b}, - 382: {cur: 0x127, idx: 0xeb}, - 383: {cur: 0xf6, idx: 0xc7}, - 384: {cur: 0xd0, idx: 0xee}, - 385: {cur: 0xf6, idx: 0xc7}, - 386: {cur: 0x89, idx: 0x32a}, - 387: {cur: 0xd2, idx: 0x46d}, - 388: {cur: 0xf6, idx: 0xc7}, - 389: {cur: 0xae, idx: 0x474}, - 390: {cur: 0xf6, idx: 0xc7}, - 391: {cur: 0xf6, idx: 0xc7}, - 392: {cur: 0xd0, idx: 0x48e}, - 393: {cur: 0xf6, idx: 0xc7}, - 394: {cur: 0xf6, idx: 0xc7}, - 395: {cur: 0xf6, idx: 0xc7}, - 396: {cur: 0xf6, idx: 0xc7}, - 397: {cur: 0xf6, idx: 0xc7}, - 398: {cur: 0xf6, idx: 0xc7}, - 399: {cur: 0x37, idx: 0x258}, - 400: {cur: 0x58, idx: 0x3e5}, - 401: {cur: 0xbe, idx: 0x49b}, - 402: {cur: 0xf6, idx: 0xc7}, - 403: {cur: 0x44, idx: 0x4a3}, - 404: {cur: 0x85, idx: 0x4a3}, - 405: {cur: 0xd0, idx: 0x4a7}, - 406: {cur: 0xf6, idx: 0xc7}, - 407: {cur: 0xf6, idx: 0xc7}, - 408: {cur: 0xf6, idx: 0xc7}, - 409: {cur: 0xd0, idx: 0x4b2}, - 410: {cur: 0xf6, idx: 0xc7}, - 411: {cur: 0xd0, idx: 0x4f}, - 412: {cur: 0xf6, idx: 0xc7}, - 413: {cur: 0x25, idx: 0x251}, - 414: {cur: 0x32, idx: 0x255}, - 415: {cur: 0x39, idx: 0x146}, - 416: {cur: 0x3a, idx: 0x9b}, - 417: {cur: 0x53, idx: 0x264}, - 418: {cur: 0x58, idx: 0x4b9}, - 419: {cur: 0x72, idx: 0x4b}, - 420: {cur: 0x75, idx: 0x4bc}, - 421: {cur: 0x83, idx: 0x275}, - 422: {cur: 0xf5, idx: 0x21b}, - 423: {cur: 0xf6, idx: 0xc7}, - 424: {cur: 0xf6, idx: 0xc7}, - 425: {cur: 0xf6, idx: 0xc7}, - 426: {cur: 0x1b, idx: 0x0}, - 427: {cur: 0x37, idx: 0x258}, - 428: {cur: 0x7c, idx: 0x0}, - 429: {cur: 0x7d, idx: 0x0}, - 430: {cur: 0x88, idx: 0x0}, - 431: {cur: 0x91, idx: 0x0}, - 432: {cur: 0xa9, idx: 0x0}, - 433: {cur: 0xc9, idx: 0x4c6}, - 434: {cur: 0xcc, idx: 0x352}, - 435: {cur: 0xd2, idx: 0x4c9}, - 436: {cur: 0x105, idx: 0x0}, - 437: {cur: 0xf6, idx: 0xc7}, - 438: {cur: 0xf6, idx: 0xc7}, - 439: {cur: 0xf6, idx: 0xc7}, - 440: {cur: 0xdb, idx: 0x4d7}, - 441: {cur: 0xf6, idx: 0xc7}, - 442: {cur: 0xf6, idx: 0xc7}, - 443: {cur: 0xf6, idx: 0xc7}, - 444: {cur: 0x1a, idx: 0x24c}, - 445: {cur: 0x32, idx: 0x255}, - 446: {cur: 0xd0, idx: 0x4f}, - 447: {cur: 0xf6, idx: 0xc7}, - 448: {cur: 0xbf, idx: 0x4f1}, - 449: {cur: 0xf6, idx: 0xc7}, - 450: {cur: 0xf6, idx: 0xc7}, - 451: {cur: 0xd0, idx: 0x500}, - 452: {cur: 0xf6, idx: 0xc7}, - 453: {cur: 0xd0, idx: 0x4f}, - 454: {cur: 0xf6, idx: 0xc7}, - 455: {cur: 0xf6, idx: 0xc7}, - 456: {cur: 0x65, idx: 0x515}, - 457: {cur: 0xd0, idx: 0x4f}, - 458: {cur: 0xf6, idx: 0xc7}, - 459: {cur: 0x37, idx: 0x258}, - 460: {cur: 0x93, idx: 0x52c}, - 461: {cur: 0xf6, idx: 0xc7}, - 462: {cur: 0xf6, idx: 0xc7}, - 463: {cur: 0xf6, idx: 0xc7}, - 464: {cur: 0x65, idx: 0x515}, - 465: {cur: 0xf6, idx: 0xc7}, - 466: {cur: 0x37, idx: 0x552}, - 467: {cur: 0x65, idx: 0x515}, - 468: {cur: 0xf6, idx: 0xc7}, - 469: {cur: 0x5c, idx: 0x0}, - 470: {cur: 0xd0, idx: 0x4f}, - 471: {cur: 0xf6, idx: 0xc7}, - 472: {cur: 0xf6, idx: 0xc7}, - 473: {cur: 0xf6, idx: 0xc7}, - 474: {cur: 0xf6, idx: 0xc7}, - 475: {cur: 0xf6, idx: 0xc7}, - 476: {cur: 0xd0, idx: 0x4f}, - 477: {cur: 0xf6, idx: 0xc7}, - 478: {cur: 0xf6, idx: 0xc7}, - 479: {cur: 0xf6, idx: 0xc7}, - 480: {cur: 0xf6, idx: 0xc7}, - 481: {cur: 0xf6, idx: 0xc7}, - 482: {cur: 0xd0, idx: 0x4f}, - 483: {cur: 0x37, idx: 0x59e}, - 484: {cur: 0x52, idx: 0x34f}, - 485: {cur: 0x75, idx: 0x4bc}, - 486: {cur: 0x81, idx: 0x34f}, - 487: {cur: 0xbe, idx: 0x34f}, - 488: {cur: 0xc9, idx: 0x5a1}, - 489: {cur: 0xdb, idx: 0x34f}, - 490: {cur: 0xf6, idx: 0xc7}, -} // Size: 1988 bytes - -// Total table size 18857 bytes (18KiB); checksum: C636CB94 diff --git a/vendor/golang.org/x/text/currency/tables_test.go b/vendor/golang.org/x/text/currency/tables_test.go deleted file mode 100644 index 779f5001..00000000 --- a/vendor/golang.org/x/text/currency/tables_test.go +++ /dev/null @@ -1,93 +0,0 @@ -package currency - -import ( - "flag" - "strings" - "testing" - "time" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" - "golang.org/x/text/message" - "golang.org/x/text/unicode/cldr" -) - -var draft = flag.String("draft", - "contributed", - `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) - -func TestTables(t *testing.T) { - testtext.SkipIfNotLong(t) - - // Read the CLDR zip file. - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("supplemental", "main") - d.SetSectionFilter("numbers") - data, err := d.DecodeZip(r) - if err != nil { - t.Fatalf("DecodeZip: %v", err) - } - - dr, err := cldr.ParseDraft(*draft) - if err != nil { - t.Fatalf("filter: %v", err) - } - - for _, lang := range data.Locales() { - p := message.NewPrinter(language.MustParse(lang)) - - ldml := data.RawLDML(lang) - if ldml.Numbers == nil || ldml.Numbers.Currencies == nil { - continue - } - for _, c := range ldml.Numbers.Currencies.Currency { - syms := cldr.MakeSlice(&c.Symbol) - syms.SelectDraft(dr) - - for _, sym := range c.Symbol { - cur, err := ParseISO(c.Type) - if err != nil { - continue - } - formatter := Symbol - switch sym.Alt { - case "": - case "narrow": - formatter = NarrowSymbol - default: - continue - } - want := sym.Data() - if got := p.Sprint(formatter(cur)); got != want { - t.Errorf("%s:%sSymbol(%s) = %s; want %s", lang, strings.Title(sym.Alt), c.Type, got, want) - } - } - } - } - - for _, reg := range data.Supplemental().CurrencyData.Region { - i := 0 - for ; regionData[i].Region().String() != reg.Iso3166; i++ { - } - it := Query(Historical, NonTender, Region(language.MustParseRegion(reg.Iso3166))) - for _, cur := range reg.Currency { - from, _ := time.Parse("2006-01-02", cur.From) - to, _ := time.Parse("2006-01-02", cur.To) - - it.Next() - for j, r := range []QueryIter{&iter{regionInfo: &regionData[i]}, it} { - if got, _ := r.From(); from != got { - t.Errorf("%d:%s:%s:from: got %v; want %v", j, reg.Iso3166, cur.Iso4217, got, from) - } - if got, _ := r.To(); to != got { - t.Errorf("%d:%s:%s:to: got %v; want %v", j, reg.Iso3166, cur.Iso4217, got, to) - } - } - i++ - } - } -} diff --git a/vendor/golang.org/x/text/date/data_test.go b/vendor/golang.org/x/text/date/data_test.go deleted file mode 100644 index eb388cbc..00000000 --- a/vendor/golang.org/x/text/date/data_test.go +++ /dev/null @@ -1,335 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package date - -var enumMap = map[string]uint16{ - "": 0, - "calendars": 0, - "fields": 1, - "timeZoneNames": 2, - "buddhist": 0, - "chinese": 1, - "coptic": 2, - "dangi": 3, - "ethiopic": 4, - "ethiopic-amete-alem": 5, - "generic": 6, - "gregorian": 7, - "hebrew": 8, - "indian": 9, - "islamic": 10, - "islamic-civil": 11, - "islamic-rgsa": 12, - "islamic-tbla": 13, - "islamic-umalqura": 14, - "japanese": 15, - "persian": 16, - "roc": 17, - "months": 0, - "days": 1, - "quarters": 2, - "dayPeriods": 3, - "eras": 4, - "dateFormats": 5, - "timeFormats": 6, - "dateTimeFormats": 7, - "monthPatterns": 8, - "cyclicNameSets": 9, - "format": 0, - "stand-alone": 1, - "numeric": 2, - "widthAbbreviated": 0, - "widthNarrow": 1, - "widthWide": 2, - "widthAll": 3, - "widthShort": 4, - "leap7": 0, - "sun": 0, - "mon": 1, - "tue": 2, - "wed": 3, - "thu": 4, - "fri": 5, - "sat": 6, - "am": 0, - "pm": 1, - "midnight": 2, - "morning1": 3, - "afternoon1": 4, - "evening1": 5, - "night1": 6, - "noon": 7, - "morning2": 8, - "afternoon2": 9, - "night2": 10, - "evening2": 11, - "variant": 1, - "short": 0, - "long": 1, - "full": 2, - "medium": 3, - "dayPartsCycleType": 0, - "daysCycleType": 1, - "monthsCycleType": 2, - "solarTermsCycleType": 3, - "yearsCycleType": 4, - "zodiacsCycleType": 5, - "eraField": 0, - "era-shortField": 1, - "era-narrowField": 2, - "yearField": 3, - "year-shortField": 4, - "year-narrowField": 5, - "quarterField": 6, - "quarter-shortField": 7, - "quarter-narrowField": 8, - "monthField": 9, - "month-shortField": 10, - "month-narrowField": 11, - "weekField": 12, - "week-shortField": 13, - "week-narrowField": 14, - "weekOfMonthField": 15, - "weekOfMonth-shortField": 16, - "weekOfMonth-narrowField": 17, - "dayField": 18, - "day-shortField": 19, - "day-narrowField": 20, - "dayOfYearField": 21, - "dayOfYear-shortField": 22, - "dayOfYear-narrowField": 23, - "weekdayField": 24, - "weekday-shortField": 25, - "weekday-narrowField": 26, - "weekdayOfMonthField": 27, - "weekdayOfMonth-shortField": 28, - "weekdayOfMonth-narrowField": 29, - "sunField": 30, - "sun-shortField": 31, - "sun-narrowField": 32, - "monField": 33, - "mon-shortField": 34, - "mon-narrowField": 35, - "tueField": 36, - "tue-shortField": 37, - "tue-narrowField": 38, - "wedField": 39, - "wed-shortField": 40, - "wed-narrowField": 41, - "thuField": 42, - "thu-shortField": 43, - "thu-narrowField": 44, - "friField": 45, - "fri-shortField": 46, - "fri-narrowField": 47, - "satField": 48, - "sat-shortField": 49, - "sat-narrowField": 50, - "dayperiod-shortField": 51, - "dayperiodField": 52, - "dayperiod-narrowField": 53, - "hourField": 54, - "hour-shortField": 55, - "hour-narrowField": 56, - "minuteField": 57, - "minute-shortField": 58, - "minute-narrowField": 59, - "secondField": 60, - "second-shortField": 61, - "second-narrowField": 62, - "zoneField": 63, - "zone-shortField": 64, - "zone-narrowField": 65, - "displayName": 0, - "relative": 1, - "relativeTime": 2, - "relativePeriod": 3, - "before1": 0, - "current": 1, - "after1": 2, - "before2": 3, - "after2": 4, - "after3": 5, - "future": 0, - "past": 1, - "other": 0, - "one": 1, - "zero": 2, - "two": 3, - "few": 4, - "many": 5, - "zoneFormat": 0, - "regionFormat": 1, - "zone": 2, - "metaZone": 3, - "hourFormat": 0, - "gmtFormat": 1, - "gmtZeroFormat": 2, - "genericTime": 0, - "daylightTime": 1, - "standardTime": 2, - "Etc/UTC": 0, - "Europe/London": 1, - "Europe/Dublin": 2, - "Pacific/Honolulu": 3, - "Afghanistan": 0, - "Africa_Central": 1, - "Africa_Eastern": 2, - "Africa_Southern": 3, - "Africa_Western": 4, - "Alaska": 5, - "Amazon": 6, - "America_Central": 7, - "America_Eastern": 8, - "America_Mountain": 9, - "America_Pacific": 10, - "Anadyr": 11, - "Apia": 12, - "Arabian": 13, - "Argentina": 14, - "Argentina_Western": 15, - "Armenia": 16, - "Atlantic": 17, - "Australia_Central": 18, - "Australia_CentralWestern": 19, - "Australia_Eastern": 20, - "Australia_Western": 21, - "Azerbaijan": 22, - "Azores": 23, - "Bangladesh": 24, - "Bhutan": 25, - "Bolivia": 26, - "Brasilia": 27, - "Brunei": 28, - "Cape_Verde": 29, - "Chamorro": 30, - "Chatham": 31, - "Chile": 32, - "China": 33, - "Choibalsan": 34, - "Christmas": 35, - "Cocos": 36, - "Colombia": 37, - "Cook": 38, - "Cuba": 39, - "Davis": 40, - "DumontDUrville": 41, - "East_Timor": 42, - "Easter": 43, - "Ecuador": 44, - "Europe_Central": 45, - "Europe_Eastern": 46, - "Europe_Further_Eastern": 47, - "Europe_Western": 48, - "Falkland": 49, - "Fiji": 50, - "French_Guiana": 51, - "French_Southern": 52, - "Galapagos": 53, - "Gambier": 54, - "Georgia": 55, - "Gilbert_Islands": 56, - "GMT": 57, - "Greenland_Eastern": 58, - "Greenland_Western": 59, - "Gulf": 60, - "Guyana": 61, - "Hawaii_Aleutian": 62, - "Hong_Kong": 63, - "Hovd": 64, - "India": 65, - "Indian_Ocean": 66, - "Indochina": 67, - "Indonesia_Central": 68, - "Indonesia_Eastern": 69, - "Indonesia_Western": 70, - "Iran": 71, - "Irkutsk": 72, - "Israel": 73, - "Japan": 74, - "Kamchatka": 75, - "Kazakhstan_Eastern": 76, - "Kazakhstan_Western": 77, - "Korea": 78, - "Kosrae": 79, - "Krasnoyarsk": 80, - "Kyrgystan": 81, - "Line_Islands": 82, - "Lord_Howe": 83, - "Macquarie": 84, - "Magadan": 85, - "Malaysia": 86, - "Maldives": 87, - "Marquesas": 88, - "Marshall_Islands": 89, - "Mauritius": 90, - "Mawson": 91, - "Mexico_Northwest": 92, - "Mexico_Pacific": 93, - "Mongolia": 94, - "Moscow": 95, - "Myanmar": 96, - "Nauru": 97, - "Nepal": 98, - "New_Caledonia": 99, - "New_Zealand": 100, - "Newfoundland": 101, - "Niue": 102, - "Norfolk": 103, - "Noronha": 104, - "Novosibirsk": 105, - "Omsk": 106, - "Pakistan": 107, - "Palau": 108, - "Papua_New_Guinea": 109, - "Paraguay": 110, - "Peru": 111, - "Philippines": 112, - "Phoenix_Islands": 113, - "Pierre_Miquelon": 114, - "Pitcairn": 115, - "Ponape": 116, - "Pyongyang": 117, - "Reunion": 118, - "Rothera": 119, - "Sakhalin": 120, - "Samara": 121, - "Samoa": 122, - "Seychelles": 123, - "Singapore": 124, - "Solomon": 125, - "South_Georgia": 126, - "Suriname": 127, - "Syowa": 128, - "Tahiti": 129, - "Taipei": 130, - "Tajikistan": 131, - "Tokelau": 132, - "Tonga": 133, - "Truk": 134, - "Turkmenistan": 135, - "Tuvalu": 136, - "Uruguay": 137, - "Uzbekistan": 138, - "Vanuatu": 139, - "Venezuela": 140, - "Vladivostok": 141, - "Volgograd": 142, - "Vostok": 143, - "Wake": 144, - "Wallis": 145, - "Yakutsk": 146, - "Yekaterinburg": 147, - "Guam": 148, - "North_Mariana": 149, - "Acre": 150, - "Almaty": 151, - "Aqtau": 152, - "Aqtobe": 153, - "Casey": 154, - "Lanka": 155, - "Macau": 156, - "Qyzylorda": 157, -} - -// Total table size 0 bytes (0KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/date/gen.go b/vendor/golang.org/x/text/date/gen.go deleted file mode 100644 index 6f4ae079..00000000 --- a/vendor/golang.org/x/text/date/gen.go +++ /dev/null @@ -1,329 +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. - -// +build ignore - -package main - -import ( - "flag" - "log" - "strconv" - "strings" - - "golang.org/x/text/internal/cldrtree" - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -var ( - draft = flag.String("draft", - "contributed", - `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) -) - -// TODO: -// - Compile format patterns. -// - Compress the large amount of redundancy in metazones. -// - Split trees (with shared buckets) with data that is enough for default -// formatting of Go Time values and and tables that are needed for larger -// variants. -// - zone to metaZone mappings (in supplemental) -// - Add more enum values and also some key maps for some of the elements. - -func main() { - gen.Init() - - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("supplemental", "main") - d.SetSectionFilter("dates") - data, err := d.DecodeZip(r) - if err != nil { - log.Fatalf("DecodeZip: %v", err) - } - - dates := cldrtree.New("dates") - buildCLDRTree(data, dates) - - w := gen.NewCodeWriter() - if err := dates.Gen(w); err != nil { - log.Fatal(err) - } - gen.WriteCLDRVersion(w) - w.WriteGoFile("tables.go", "date") - - w = gen.NewCodeWriter() - if err := dates.GenTestData(w); err != nil { - log.Fatal(err) - } - w.WriteGoFile("data_test.go", "date") -} - -func buildCLDRTree(data *cldr.CLDR, dates *cldrtree.Builder) { - context := cldrtree.Enum("context") - widthMap := func(s string) string { - // Align era with width values. - if r, ok := map[string]string{ - "eraAbbr": "abbreviated", - "eraNarrow": "narrow", - "eraNames": "wide", - }[s]; ok { - s = r - } - // Prefix width to disambiguate with some overlapping length values. - return "width" + strings.Title(s) - } - width := cldrtree.EnumFunc("width", widthMap, "abbreviated", "narrow", "wide") - length := cldrtree.Enum("length", "short", "long") - month := cldrtree.Enum("month", "leap7") - relTime := cldrtree.EnumFunc("relTime", func(s string) string { - x, err := strconv.ParseInt(s, 10, 8) - if err != nil { - log.Fatal("Invalid number:", err) - } - return []string{ - "before2", - "before1", - "current", - "after1", - "after2", - "after3", - }[x+2] - }) - // Disambiguate keys like 'months' and 'sun'. - cycleType := cldrtree.EnumFunc("cycleType", func(s string) string { - return s + "CycleType" - }) - field := cldrtree.EnumFunc("field", func(s string) string { - return s + "Field" - }) - timeType := cldrtree.EnumFunc("timeType", func(s string) string { - if s == "" { - return "genericTime" - } - return s + "Time" - }, "generic") - - zoneType := []cldrtree.Option{cldrtree.SharedType(), timeType} - metaZoneType := []cldrtree.Option{cldrtree.SharedType(), timeType} - - for _, lang := range data.Locales() { - tag := language.Make(lang) - ldml := data.RawLDML(lang) - if ldml.Dates == nil { - continue - } - x := dates.Locale(tag) - if x := x.Index(ldml.Dates.Calendars); x != nil { - for _, cal := range ldml.Dates.Calendars.Calendar { - x := x.IndexFromType(cal) - if x := x.Index(cal.Months); x != nil { - for _, mc := range cal.Months.MonthContext { - x := x.IndexFromType(mc, context) - for _, mw := range mc.MonthWidth { - x := x.IndexFromType(mw, width) - for _, m := range mw.Month { - x.SetValue(m.Yeartype+m.Type, m, month) - } - } - } - } - if x := x.Index(cal.MonthPatterns); x != nil { - for _, mc := range cal.MonthPatterns.MonthPatternContext { - x := x.IndexFromType(mc, context) - for _, mw := range mc.MonthPatternWidth { - // Value is always leap, so no need to create a - // subindex. - for _, m := range mw.MonthPattern { - x.SetValue(mw.Type, m, width) - } - } - } - } - if x := x.Index(cal.CyclicNameSets); x != nil { - for _, cns := range cal.CyclicNameSets.CyclicNameSet { - x := x.IndexFromType(cns, cycleType) - for _, cc := range cns.CyclicNameContext { - x := x.IndexFromType(cc, context) - for _, cw := range cc.CyclicNameWidth { - x := x.IndexFromType(cw, width) - for _, c := range cw.CyclicName { - x.SetValue(c.Type, c) - } - } - } - } - } - if x := x.Index(cal.Days); x != nil { - for _, dc := range cal.Days.DayContext { - x := x.IndexFromType(dc, context) - for _, dw := range dc.DayWidth { - x := x.IndexFromType(dw, width) - for _, d := range dw.Day { - x.SetValue(d.Type, d) - } - } - } - } - if x := x.Index(cal.Quarters); x != nil { - for _, qc := range cal.Quarters.QuarterContext { - x := x.IndexFromType(qc, context) - for _, qw := range qc.QuarterWidth { - x := x.IndexFromType(qw, width) - for _, q := range qw.Quarter { - x.SetValue(q.Type, q) - } - } - } - } - if x := x.Index(cal.DayPeriods); x != nil { - for _, dc := range cal.DayPeriods.DayPeriodContext { - x := x.IndexFromType(dc, context) - for _, dw := range dc.DayPeriodWidth { - x := x.IndexFromType(dw, width) - for _, d := range dw.DayPeriod { - x.IndexFromType(d).SetValue(d.Alt, d) - } - } - } - } - if x := x.Index(cal.Eras); x != nil { - opts := []cldrtree.Option{width, cldrtree.SharedType()} - if x := x.Index(cal.Eras.EraNames, opts...); x != nil { - for _, e := range cal.Eras.EraNames.Era { - x.IndexFromAlt(e).SetValue(e.Type, e) - } - } - if x := x.Index(cal.Eras.EraAbbr, opts...); x != nil { - for _, e := range cal.Eras.EraAbbr.Era { - x.IndexFromAlt(e).SetValue(e.Type, e) - } - } - if x := x.Index(cal.Eras.EraNarrow, opts...); x != nil { - for _, e := range cal.Eras.EraNarrow.Era { - x.IndexFromAlt(e).SetValue(e.Type, e) - } - } - } - if x := x.Index(cal.DateFormats); x != nil { - for _, dfl := range cal.DateFormats.DateFormatLength { - x := x.IndexFromType(dfl, length) - for _, df := range dfl.DateFormat { - for _, p := range df.Pattern { - x.SetValue(p.Alt, p) - } - } - } - } - if x := x.Index(cal.TimeFormats); x != nil { - for _, tfl := range cal.TimeFormats.TimeFormatLength { - x := x.IndexFromType(tfl, length) - for _, tf := range tfl.TimeFormat { - for _, p := range tf.Pattern { - x.SetValue(p.Alt, p) - } - } - } - } - if x := x.Index(cal.DateTimeFormats); x != nil { - for _, dtfl := range cal.DateTimeFormats.DateTimeFormatLength { - x := x.IndexFromType(dtfl, length) - for _, dtf := range dtfl.DateTimeFormat { - for _, p := range dtf.Pattern { - x.SetValue(p.Alt, p) - } - } - } - // TODO: - // - appendItems - // - intervalFormats - } - } - } - // TODO: this is a lot of data and is probably relatively little used. - // Store this somewhere else. - if x := x.Index(ldml.Dates.Fields); x != nil { - for _, f := range ldml.Dates.Fields.Field { - x := x.IndexFromType(f, field) - for _, d := range f.DisplayName { - x.Index(d).SetValue(d.Alt, d) - } - for _, r := range f.Relative { - x.Index(r).SetValue(r.Type, r, relTime) - } - for _, rt := range f.RelativeTime { - x := x.Index(rt).IndexFromType(rt) - for _, p := range rt.RelativeTimePattern { - x.SetValue(p.Count, p) - } - } - for _, rp := range f.RelativePeriod { - x.Index(rp).SetValue(rp.Alt, rp) - } - } - } - if x := x.Index(ldml.Dates.TimeZoneNames); x != nil { - format := x.IndexWithName("zoneFormat") - for _, h := range ldml.Dates.TimeZoneNames.HourFormat { - format.SetValue(h.Element(), h) - } - for _, g := range ldml.Dates.TimeZoneNames.GmtFormat { - format.SetValue(g.Element(), g) - } - for _, g := range ldml.Dates.TimeZoneNames.GmtZeroFormat { - format.SetValue(g.Element(), g) - } - for _, r := range ldml.Dates.TimeZoneNames.RegionFormat { - x.Index(r).SetValue(r.Type, r, timeType) - } - - set := func(x *cldrtree.Index, e []*cldr.Common, zone string) { - for _, n := range e { - x.Index(n, zoneType...).SetValue(zone, n) - } - } - zoneWidth := []cldrtree.Option{length, cldrtree.SharedType()} - zs := x.IndexWithName("zone") - for _, z := range ldml.Dates.TimeZoneNames.Zone { - for _, l := range z.Long { - x := zs.Index(l, zoneWidth...) - set(x, l.Generic, z.Type) - set(x, l.Standard, z.Type) - set(x, l.Daylight, z.Type) - } - for _, s := range z.Short { - x := zs.Index(s, zoneWidth...) - set(x, s.Generic, z.Type) - set(x, s.Standard, z.Type) - set(x, s.Daylight, z.Type) - } - } - set = func(x *cldrtree.Index, e []*cldr.Common, zone string) { - for _, n := range e { - x.Index(n, metaZoneType...).SetValue(zone, n) - } - } - zoneWidth = []cldrtree.Option{length, cldrtree.SharedType()} - zs = x.IndexWithName("metaZone") - for _, z := range ldml.Dates.TimeZoneNames.Metazone { - for _, l := range z.Long { - x := zs.Index(l, zoneWidth...) - set(x, l.Generic, z.Type) - set(x, l.Standard, z.Type) - set(x, l.Daylight, z.Type) - } - for _, s := range z.Short { - x := zs.Index(s, zoneWidth...) - set(x, s.Generic, z.Type) - set(x, s.Standard, z.Type) - set(x, s.Daylight, z.Type) - } - } - } - } -} diff --git a/vendor/golang.org/x/text/date/gen_test.go b/vendor/golang.org/x/text/date/gen_test.go deleted file mode 100644 index 798cb4fa..00000000 --- a/vendor/golang.org/x/text/date/gen_test.go +++ /dev/null @@ -1,241 +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 date - -import ( - "strconv" - "strings" - "testing" - - "golang.org/x/text/internal/cldrtree" - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -func TestTables(t *testing.T) { - testtext.SkipIfNotLong(t) - - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("supplemental", "main") - d.SetSectionFilter("dates") - data, err := d.DecodeZip(r) - if err != nil { - t.Fatalf("DecodeZip: %v", err) - } - - count := 0 - for _, lang := range data.Locales() { - ldml := data.RawLDML(lang) - if ldml.Dates == nil { - continue - } - tag, _ := language.CompactIndex(language.MustParse(lang)) - - test := func(want cldrtree.Element, path ...string) { - if count > 30 { - return - } - t.Run(lang+"/"+strings.Join(path, "/"), func(t *testing.T) { - p := make([]uint16, len(path)) - for i, s := range path { - if v, err := strconv.Atoi(s); err == nil { - p[i] = uint16(v) - } else if v, ok := enumMap[s]; ok { - p[i] = v - } else { - count++ - t.Fatalf("Unknown key %q", s) - } - } - wantStr := want.GetCommon().Data() - if got := tree.Lookup(tag, p...); got != wantStr { - count++ - t.Errorf("got %q; want %q", got, wantStr) - } - }) - } - - width := func(s string) string { return "width" + strings.Title(s) } - - if ldml.Dates.Calendars != nil { - for _, cal := range ldml.Dates.Calendars.Calendar { - if cal.Months != nil { - for _, mc := range cal.Months.MonthContext { - for _, mw := range mc.MonthWidth { - for _, m := range mw.Month { - test(m, "calendars", cal.Type, "months", mc.Type, width(mw.Type), m.Yeartype+m.Type) - } - } - } - } - if cal.MonthPatterns != nil { - for _, mc := range cal.MonthPatterns.MonthPatternContext { - for _, mw := range mc.MonthPatternWidth { - for _, m := range mw.MonthPattern { - test(m, "calendars", cal.Type, "monthPatterns", mc.Type, width(mw.Type)) - } - } - } - } - if cal.CyclicNameSets != nil { - for _, cns := range cal.CyclicNameSets.CyclicNameSet { - for _, cc := range cns.CyclicNameContext { - for _, cw := range cc.CyclicNameWidth { - for _, c := range cw.CyclicName { - test(c, "calendars", cal.Type, "cyclicNameSets", cns.Type+"CycleType", cc.Type, width(cw.Type), c.Type) - - } - } - } - } - } - if cal.Days != nil { - for _, dc := range cal.Days.DayContext { - for _, dw := range dc.DayWidth { - for _, d := range dw.Day { - test(d, "calendars", cal.Type, "days", dc.Type, width(dw.Type), d.Type) - } - } - } - } - if cal.Quarters != nil { - for _, qc := range cal.Quarters.QuarterContext { - for _, qw := range qc.QuarterWidth { - for _, q := range qw.Quarter { - test(q, "calendars", cal.Type, "quarters", qc.Type, width(qw.Type), q.Type) - } - } - } - } - if cal.DayPeriods != nil { - for _, dc := range cal.DayPeriods.DayPeriodContext { - for _, dw := range dc.DayPeriodWidth { - for _, d := range dw.DayPeriod { - test(d, "calendars", cal.Type, "dayPeriods", dc.Type, width(dw.Type), d.Type, d.Alt) - } - } - } - } - if cal.Eras != nil { - if cal.Eras.EraNames != nil { - for _, e := range cal.Eras.EraNames.Era { - test(e, "calendars", cal.Type, "eras", "widthWide", e.Alt, e.Type) - } - } - if cal.Eras.EraAbbr != nil { - for _, e := range cal.Eras.EraAbbr.Era { - test(e, "calendars", cal.Type, "eras", "widthAbbreviated", e.Alt, e.Type) - } - } - if cal.Eras.EraNarrow != nil { - for _, e := range cal.Eras.EraNarrow.Era { - test(e, "calendars", cal.Type, "eras", "widthNarrow", e.Alt, e.Type) - } - } - } - if cal.DateFormats != nil { - for _, dfl := range cal.DateFormats.DateFormatLength { - for _, df := range dfl.DateFormat { - for _, p := range df.Pattern { - test(p, "calendars", cal.Type, "dateFormats", dfl.Type, p.Alt) - } - } - } - } - if cal.TimeFormats != nil { - for _, tfl := range cal.TimeFormats.TimeFormatLength { - for _, tf := range tfl.TimeFormat { - for _, p := range tf.Pattern { - test(p, "calendars", cal.Type, "timeFormats", tfl.Type, p.Alt) - } - } - } - } - if cal.DateTimeFormats != nil { - for _, dtfl := range cal.DateTimeFormats.DateTimeFormatLength { - for _, dtf := range dtfl.DateTimeFormat { - for _, p := range dtf.Pattern { - test(p, "calendars", cal.Type, "dateTimeFormats", dtfl.Type, p.Alt) - } - } - } - // TODO: - // - appendItems - // - intervalFormats - } - } - } - // TODO: this is a lot of data and is probably relatively little used. - // Store this somewhere else. - if ldml.Dates.Fields != nil { - for _, f := range ldml.Dates.Fields.Field { - field := f.Type + "Field" - for _, d := range f.DisplayName { - test(d, "fields", field, "displayName", d.Alt) - } - for _, r := range f.Relative { - i, _ := strconv.Atoi(r.Type) - v := []string{"before2", "before1", "current", "after1", "after2", "after3"}[i+2] - test(r, "fields", field, "relative", v) - } - for _, rt := range f.RelativeTime { - for _, p := range rt.RelativeTimePattern { - test(p, "fields", field, "relativeTime", rt.Type, p.Count) - } - } - for _, rp := range f.RelativePeriod { - test(rp, "fields", field, "relativePeriod", rp.Alt) - } - } - } - if ldml.Dates.TimeZoneNames != nil { - for _, h := range ldml.Dates.TimeZoneNames.HourFormat { - test(h, "timeZoneNames", "zoneFormat", h.Element()) - } - for _, g := range ldml.Dates.TimeZoneNames.GmtFormat { - test(g, "timeZoneNames", "zoneFormat", g.Element()) - } - for _, g := range ldml.Dates.TimeZoneNames.GmtZeroFormat { - test(g, "timeZoneNames", "zoneFormat", g.Element()) - } - for _, r := range ldml.Dates.TimeZoneNames.RegionFormat { - s := r.Type - if s == "" { - s = "generic" - } - test(r, "timeZoneNames", "regionFormat", s+"Time") - } - - testZone := func(zoneType, zoneWidth, zone string, a ...[]*cldr.Common) { - for _, e := range a { - for _, n := range e { - test(n, "timeZoneNames", zoneType, zoneWidth, n.Element()+"Time", zone) - } - } - } - for _, z := range ldml.Dates.TimeZoneNames.Zone { - for _, l := range z.Long { - testZone("zone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) - } - for _, l := range z.Short { - testZone("zone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) - } - } - for _, z := range ldml.Dates.TimeZoneNames.Metazone { - for _, l := range z.Long { - testZone("metaZone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) - } - for _, l := range z.Short { - testZone("metaZone", l.Element(), z.Type, l.Generic, l.Standard, l.Daylight) - } - } - } - } -} diff --git a/vendor/golang.org/x/text/date/tables.go b/vendor/golang.org/x/text/date/tables.go deleted file mode 100644 index a55e306b..00000000 --- a/vendor/golang.org/x/text/date/tables.go +++ /dev/null @@ -1,64522 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package date - -import "golang.org/x/text/internal/cldrtree" - -var tree = &cldrtree.Tree{locales, indices, buckets} - -// Path values: -// <width> -// - widthAbbreviated -// - widthNarrow -// - widthWide -// - widthAll -// - widthShort -// <context> -// - format -// - stand-alone -// - numeric -// <month> -// - leap7 -// - 1..13 -// <cycleType> -// - dayPartsCycleType -// - daysCycleType -// - monthsCycleType -// - solarTermsCycleType -// - yearsCycleType -// - zodiacsCycleType -// <length> -// - short -// - long -// - full -// - medium -// <field> -// - eraField -// - era-shortField -// - era-narrowField -// - yearField -// - year-shortField -// - year-narrowField -// - quarterField -// - quarter-shortField -// - quarter-narrowField -// - monthField -// - month-shortField -// - month-narrowField -// - weekField -// - week-shortField -// - week-narrowField -// - weekOfMonthField -// - weekOfMonth-shortField -// - weekOfMonth-narrowField -// - dayField -// - day-shortField -// - day-narrowField -// - dayOfYearField -// - dayOfYear-shortField -// - dayOfYear-narrowField -// - weekdayField -// - weekday-shortField -// - weekday-narrowField -// - weekdayOfMonthField -// - weekdayOfMonth-shortField -// - weekdayOfMonth-narrowField -// - sunField -// - sun-shortField -// - sun-narrowField -// - monField -// - mon-shortField -// - mon-narrowField -// - tueField -// - tue-shortField -// - tue-narrowField -// - wedField -// - wed-shortField -// - wed-narrowField -// - thuField -// - thu-shortField -// - thu-narrowField -// - friField -// - fri-shortField -// - fri-narrowField -// - satField -// - sat-shortField -// - sat-narrowField -// - dayperiod-shortField -// - dayperiodField -// - dayperiod-narrowField -// - hourField -// - hour-shortField -// - hour-narrowField -// - minuteField -// - minute-shortField -// - minute-narrowField -// - secondField -// - second-shortField -// - second-narrowField -// - zoneField -// - zone-shortField -// - zone-narrowField -// <relTime> -// - before1 -// - current -// - after1 -// - before2 -// - after2 -// - after3 -// <timeType> -// - genericTime -// - daylightTime -// - standardTime -// -// - calendars -// - buddhist -// - chinese -// - coptic -// - dangi -// - ethiopic -// - ethiopic-amete-alem -// - generic -// - gregorian -// - hebrew -// - indian -// - islamic -// - islamic-civil -// - islamic-rgsa -// - islamic-tbla -// - islamic-umalqura -// - japanese -// - persian -// - roc -// - months -// - <context> -// - <width> -// - <month> -// - days -// - <context> -// - <width> -// - sun -// - mon -// - tue -// - wed -// - thu -// - fri -// - sat -// - quarters -// - <context> -// - <width> -// - 0..4 -// - dayPeriods -// - <context> -// - <width> -// - am -// - pm -// - midnight -// - morning1 -// - afternoon1 -// - evening1 -// - night1 -// - noon -// - morning2 -// - afternoon2 -// - night2 -// - evening2 -// - "" -// - variant -// - eras -// - <width> -// - "" -// - variant -// - 0..235 -// - dateFormats -// - <length> -// - "" -// - variant -// - timeFormats -// - <length> -// - "" -// - variant -// - dateTimeFormats -// - <length> -// - "" -// - monthPatterns -// - <context> -// - <width> -// - cyclicNameSets -// - <cycleType> -// - <context> -// - <width> -// - 0..60 -// - fields -// - <field> -// - displayName -// - "" -// - variant -// - relative -// - <relTime> -// - relativeTime -// - future -// - past -// - other -// - one -// - zero -// - two -// - few -// - many -// - relativePeriod -// - "" -// - timeZoneNames -// - zoneFormat -// - hourFormat -// - gmtFormat -// - gmtZeroFormat -// - regionFormat -// - <timeType> -// - zone -// - <length> -// - <timeType> -// - Etc/UTC -// - Europe/London -// - Europe/Dublin -// - Pacific/Honolulu -// - metaZone -// - <length> -// - <timeType> -// - Afghanistan -// - Africa_Central -// - Africa_Eastern -// - Africa_Southern -// - Africa_Western -// - Alaska -// - Amazon -// - America_Central -// - America_Eastern -// - America_Mountain -// - America_Pacific -// - Anadyr -// - Apia -// - Arabian -// - Argentina -// - Argentina_Western -// - Armenia -// - Atlantic -// - Australia_Central -// - Australia_CentralWestern -// - Australia_Eastern -// - Australia_Western -// - Azerbaijan -// - Azores -// - Bangladesh -// - Bhutan -// - Bolivia -// - Brasilia -// - Brunei -// - Cape_Verde -// - Chamorro -// - Chatham -// - Chile -// - China -// - Choibalsan -// - Christmas -// - Cocos -// - Colombia -// - Cook -// - Cuba -// - Davis -// - DumontDUrville -// - East_Timor -// - Easter -// - Ecuador -// - Europe_Central -// - Europe_Eastern -// - Europe_Further_Eastern -// - Europe_Western -// - Falkland -// - Fiji -// - French_Guiana -// - French_Southern -// - Galapagos -// - Gambier -// - Georgia -// - Gilbert_Islands -// - GMT -// - Greenland_Eastern -// - Greenland_Western -// - Gulf -// - Guyana -// - Hawaii_Aleutian -// - Hong_Kong -// - Hovd -// - India -// - Indian_Ocean -// - Indochina -// - Indonesia_Central -// - Indonesia_Eastern -// - Indonesia_Western -// - Iran -// - Irkutsk -// - Israel -// - Japan -// - Kamchatka -// - Kazakhstan_Eastern -// - Kazakhstan_Western -// - Korea -// - Kosrae -// - Krasnoyarsk -// - Kyrgystan -// - Line_Islands -// - Lord_Howe -// - Macquarie -// - Magadan -// - Malaysia -// - Maldives -// - Marquesas -// - Marshall_Islands -// - Mauritius -// - Mawson -// - Mexico_Northwest -// - Mexico_Pacific -// - Mongolia -// - Moscow -// - Myanmar -// - Nauru -// - Nepal -// - New_Caledonia -// - New_Zealand -// - Newfoundland -// - Niue -// - Norfolk -// - Noronha -// - Novosibirsk -// - Omsk -// - Pakistan -// - Palau -// - Papua_New_Guinea -// - Paraguay -// - Peru -// - Philippines -// - Phoenix_Islands -// - Pierre_Miquelon -// - Pitcairn -// - Ponape -// - Pyongyang -// - Reunion -// - Rothera -// - Sakhalin -// - Samara -// - Samoa -// - Seychelles -// - Singapore -// - Solomon -// - South_Georgia -// - Suriname -// - Syowa -// - Tahiti -// - Taipei -// - Tajikistan -// - Tokelau -// - Tonga -// - Truk -// - Turkmenistan -// - Tuvalu -// - Uruguay -// - Uzbekistan -// - Vanuatu -// - Venezuela -// - Vladivostok -// - Volgograd -// - Vostok -// - Wake -// - Wallis -// - Yakutsk -// - Yekaterinburg -// - Guam -// - North_Mariana -// - Acre -// - Almaty -// - Aqtau -// - Aqtobe -// - Casey -// - Lanka -// - Macau -// - Qyzylorda -// -// Nr elem: 63066 -// uniqued size: 1585832 -// total string size: 2305791 -// bucket waste: 24136 - -// width specifies a property of a CLDR field. -type width uint16 - -// context specifies a property of a CLDR field. -type context uint16 - -// month specifies a property of a CLDR field. -type month uint16 - -// cycleType specifies a property of a CLDR field. -type cycleType uint16 - -// length specifies a property of a CLDR field. -type length uint16 - -// field specifies a property of a CLDR field. -type field uint16 - -// relTime specifies a property of a CLDR field. -type relTime uint16 - -// timeType specifies a property of a CLDR field. -type timeType uint16 - -const ( - calendars = 0 // calendars - fields = 1 // fields - timeZoneNames = 2 // timeZoneNames - buddhist = 0 // buddhist - chinese = 1 // chinese - coptic = 2 // coptic - dangi = 3 // dangi - ethiopic = 4 // ethiopic - ethiopicAmeteAlem = 5 // ethiopic-amete-alem - generic = 6 // generic - gregorian = 7 // gregorian - hebrew = 8 // hebrew - indian = 9 // indian - islamic = 10 // islamic - islamicCivil = 11 // islamic-civil - islamicRgsa = 12 // islamic-rgsa - islamicTbla = 13 // islamic-tbla - islamicUmalqura = 14 // islamic-umalqura - japanese = 15 // japanese - persian = 16 // persian - roc = 17 // roc - months = 0 // months - days = 1 // days - quarters = 2 // quarters - dayPeriods = 3 // dayPeriods - eras = 4 // eras - dateFormats = 5 // dateFormats - timeFormats = 6 // timeFormats - dateTimeFormats = 7 // dateTimeFormats - monthPatterns = 8 // monthPatterns - cyclicNameSets = 9 // cyclicNameSets - format context = 0 // format - standAlone context = 1 // stand-alone - numeric context = 2 // numeric - widthAbbreviated width = 0 // widthAbbreviated - widthNarrow width = 1 // widthNarrow - widthWide width = 2 // widthWide - widthAll width = 3 // widthAll - widthShort width = 4 // widthShort - leap7 month = 0 // leap7 - sun = 0 // sun - mon = 1 // mon - tue = 2 // tue - wed = 3 // wed - thu = 4 // thu - fri = 5 // fri - sat = 6 // sat - am = 0 // am - pm = 1 // pm - midnight = 2 // midnight - morning1 = 3 // morning1 - afternoon1 = 4 // afternoon1 - evening1 = 5 // evening1 - night1 = 6 // night1 - noon = 7 // noon - morning2 = 8 // morning2 - afternoon2 = 9 // afternoon2 - night2 = 10 // night2 - evening2 = 11 // evening2 - variant = 1 // variant - short length = 0 // short - long length = 1 // long - full length = 2 // full - medium length = 3 // medium - dayPartsCycleType cycleType = 0 // dayPartsCycleType - daysCycleType cycleType = 1 // daysCycleType - monthsCycleType cycleType = 2 // monthsCycleType - solarTermsCycleType cycleType = 3 // solarTermsCycleType - yearsCycleType cycleType = 4 // yearsCycleType - zodiacsCycleType cycleType = 5 // zodiacsCycleType - eraField field = 0 // eraField - eraShortField field = 1 // era-shortField - eraNarrowField field = 2 // era-narrowField - yearField field = 3 // yearField - yearShortField field = 4 // year-shortField - yearNarrowField field = 5 // year-narrowField - quarterField field = 6 // quarterField - quarterShortField field = 7 // quarter-shortField - quarterNarrowField field = 8 // quarter-narrowField - monthField field = 9 // monthField - monthShortField field = 10 // month-shortField - monthNarrowField field = 11 // month-narrowField - weekField field = 12 // weekField - weekShortField field = 13 // week-shortField - weekNarrowField field = 14 // week-narrowField - weekOfMonthField field = 15 // weekOfMonthField - weekOfMonthShortField field = 16 // weekOfMonth-shortField - weekOfMonthNarrowField field = 17 // weekOfMonth-narrowField - dayField field = 18 // dayField - dayShortField field = 19 // day-shortField - dayNarrowField field = 20 // day-narrowField - dayOfYearField field = 21 // dayOfYearField - dayOfYearShortField field = 22 // dayOfYear-shortField - dayOfYearNarrowField field = 23 // dayOfYear-narrowField - weekdayField field = 24 // weekdayField - weekdayShortField field = 25 // weekday-shortField - weekdayNarrowField field = 26 // weekday-narrowField - weekdayOfMonthField field = 27 // weekdayOfMonthField - weekdayOfMonthShortField field = 28 // weekdayOfMonth-shortField - weekdayOfMonthNarrowField field = 29 // weekdayOfMonth-narrowField - sunField field = 30 // sunField - sunShortField field = 31 // sun-shortField - sunNarrowField field = 32 // sun-narrowField - monField field = 33 // monField - monShortField field = 34 // mon-shortField - monNarrowField field = 35 // mon-narrowField - tueField field = 36 // tueField - tueShortField field = 37 // tue-shortField - tueNarrowField field = 38 // tue-narrowField - wedField field = 39 // wedField - wedShortField field = 40 // wed-shortField - wedNarrowField field = 41 // wed-narrowField - thuField field = 42 // thuField - thuShortField field = 43 // thu-shortField - thuNarrowField field = 44 // thu-narrowField - friField field = 45 // friField - friShortField field = 46 // fri-shortField - friNarrowField field = 47 // fri-narrowField - satField field = 48 // satField - satShortField field = 49 // sat-shortField - satNarrowField field = 50 // sat-narrowField - dayperiodShortField field = 51 // dayperiod-shortField - dayperiodField field = 52 // dayperiodField - dayperiodNarrowField field = 53 // dayperiod-narrowField - hourField field = 54 // hourField - hourShortField field = 55 // hour-shortField - hourNarrowField field = 56 // hour-narrowField - minuteField field = 57 // minuteField - minuteShortField field = 58 // minute-shortField - minuteNarrowField field = 59 // minute-narrowField - secondField field = 60 // secondField - secondShortField field = 61 // second-shortField - secondNarrowField field = 62 // second-narrowField - zoneField field = 63 // zoneField - zoneShortField field = 64 // zone-shortField - zoneNarrowField field = 65 // zone-narrowField - displayName = 0 // displayName - relative = 1 // relative - relativeTime = 2 // relativeTime - relativePeriod = 3 // relativePeriod - before1 relTime = 0 // before1 - current relTime = 1 // current - after1 relTime = 2 // after1 - before2 relTime = 3 // before2 - after2 relTime = 4 // after2 - after3 relTime = 5 // after3 - future = 0 // future - past = 1 // past - other = 0 // other - one = 1 // one - zero = 2 // zero - two = 3 // two - few = 4 // few - many = 5 // many - zoneFormat = 0 // zoneFormat - regionFormat = 1 // regionFormat - zone = 2 // zone - metaZone = 3 // metaZone - hourFormat = 0 // hourFormat - gmtFormat = 1 // gmtFormat - gmtZeroFormat = 2 // gmtZeroFormat - genericTime timeType = 0 // genericTime - daylightTime timeType = 1 // daylightTime - standardTime timeType = 2 // standardTime - EtcUTC = 0 // Etc/UTC - EuropeLondon = 1 // Europe/London - EuropeDublin = 2 // Europe/Dublin - PacificHonolulu = 3 // Pacific/Honolulu - Afghanistan = 0 // Afghanistan - Africa_Central = 1 // Africa_Central - Africa_Eastern = 2 // Africa_Eastern - Africa_Southern = 3 // Africa_Southern - Africa_Western = 4 // Africa_Western - Alaska = 5 // Alaska - Amazon = 6 // Amazon - America_Central = 7 // America_Central - America_Eastern = 8 // America_Eastern - America_Mountain = 9 // America_Mountain - America_Pacific = 10 // America_Pacific - Anadyr = 11 // Anadyr - Apia = 12 // Apia - Arabian = 13 // Arabian - Argentina = 14 // Argentina - Argentina_Western = 15 // Argentina_Western - Armenia = 16 // Armenia - Atlantic = 17 // Atlantic - Australia_Central = 18 // Australia_Central - Australia_CentralWestern = 19 // Australia_CentralWestern - Australia_Eastern = 20 // Australia_Eastern - Australia_Western = 21 // Australia_Western - Azerbaijan = 22 // Azerbaijan - Azores = 23 // Azores - Bangladesh = 24 // Bangladesh - Bhutan = 25 // Bhutan - Bolivia = 26 // Bolivia - Brasilia = 27 // Brasilia - Brunei = 28 // Brunei - Cape_Verde = 29 // Cape_Verde - Chamorro = 30 // Chamorro - Chatham = 31 // Chatham - Chile = 32 // Chile - China = 33 // China - Choibalsan = 34 // Choibalsan - Christmas = 35 // Christmas - Cocos = 36 // Cocos - Colombia = 37 // Colombia - Cook = 38 // Cook - Cuba = 39 // Cuba - Davis = 40 // Davis - DumontDUrville = 41 // DumontDUrville - East_Timor = 42 // East_Timor - Easter = 43 // Easter - Ecuador = 44 // Ecuador - Europe_Central = 45 // Europe_Central - Europe_Eastern = 46 // Europe_Eastern - Europe_Further_Eastern = 47 // Europe_Further_Eastern - Europe_Western = 48 // Europe_Western - Falkland = 49 // Falkland - Fiji = 50 // Fiji - French_Guiana = 51 // French_Guiana - French_Southern = 52 // French_Southern - Galapagos = 53 // Galapagos - Gambier = 54 // Gambier - Georgia = 55 // Georgia - Gilbert_Islands = 56 // Gilbert_Islands - GMT = 57 // GMT - Greenland_Eastern = 58 // Greenland_Eastern - Greenland_Western = 59 // Greenland_Western - Gulf = 60 // Gulf - Guyana = 61 // Guyana - Hawaii_Aleutian = 62 // Hawaii_Aleutian - Hong_Kong = 63 // Hong_Kong - Hovd = 64 // Hovd - India = 65 // India - Indian_Ocean = 66 // Indian_Ocean - Indochina = 67 // Indochina - Indonesia_Central = 68 // Indonesia_Central - Indonesia_Eastern = 69 // Indonesia_Eastern - Indonesia_Western = 70 // Indonesia_Western - Iran = 71 // Iran - Irkutsk = 72 // Irkutsk - Israel = 73 // Israel - Japan = 74 // Japan - Kamchatka = 75 // Kamchatka - Kazakhstan_Eastern = 76 // Kazakhstan_Eastern - Kazakhstan_Western = 77 // Kazakhstan_Western - Korea = 78 // Korea - Kosrae = 79 // Kosrae - Krasnoyarsk = 80 // Krasnoyarsk - Kyrgystan = 81 // Kyrgystan - Line_Islands = 82 // Line_Islands - Lord_Howe = 83 // Lord_Howe - Macquarie = 84 // Macquarie - Magadan = 85 // Magadan - Malaysia = 86 // Malaysia - Maldives = 87 // Maldives - Marquesas = 88 // Marquesas - Marshall_Islands = 89 // Marshall_Islands - Mauritius = 90 // Mauritius - Mawson = 91 // Mawson - Mexico_Northwest = 92 // Mexico_Northwest - Mexico_Pacific = 93 // Mexico_Pacific - Mongolia = 94 // Mongolia - Moscow = 95 // Moscow - Myanmar = 96 // Myanmar - Nauru = 97 // Nauru - Nepal = 98 // Nepal - New_Caledonia = 99 // New_Caledonia - New_Zealand = 100 // New_Zealand - Newfoundland = 101 // Newfoundland - Niue = 102 // Niue - Norfolk = 103 // Norfolk - Noronha = 104 // Noronha - Novosibirsk = 105 // Novosibirsk - Omsk = 106 // Omsk - Pakistan = 107 // Pakistan - Palau = 108 // Palau - Papua_New_Guinea = 109 // Papua_New_Guinea - Paraguay = 110 // Paraguay - Peru = 111 // Peru - Philippines = 112 // Philippines - Phoenix_Islands = 113 // Phoenix_Islands - Pierre_Miquelon = 114 // Pierre_Miquelon - Pitcairn = 115 // Pitcairn - Ponape = 116 // Ponape - Pyongyang = 117 // Pyongyang - Reunion = 118 // Reunion - Rothera = 119 // Rothera - Sakhalin = 120 // Sakhalin - Samara = 121 // Samara - Samoa = 122 // Samoa - Seychelles = 123 // Seychelles - Singapore = 124 // Singapore - Solomon = 125 // Solomon - South_Georgia = 126 // South_Georgia - Suriname = 127 // Suriname - Syowa = 128 // Syowa - Tahiti = 129 // Tahiti - Taipei = 130 // Taipei - Tajikistan = 131 // Tajikistan - Tokelau = 132 // Tokelau - Tonga = 133 // Tonga - Truk = 134 // Truk - Turkmenistan = 135 // Turkmenistan - Tuvalu = 136 // Tuvalu - Uruguay = 137 // Uruguay - Uzbekistan = 138 // Uzbekistan - Vanuatu = 139 // Vanuatu - Venezuela = 140 // Venezuela - Vladivostok = 141 // Vladivostok - Volgograd = 142 // Volgograd - Vostok = 143 // Vostok - Wake = 144 // Wake - Wallis = 145 // Wallis - Yakutsk = 146 // Yakutsk - Yekaterinburg = 147 // Yekaterinburg - Guam = 148 // Guam - North_Mariana = 149 // North_Mariana - Acre = 150 // Acre - Almaty = 151 // Almaty - Aqtau = 152 // Aqtau - Aqtobe = 153 // Aqtobe - Casey = 154 // Casey - Lanka = 155 // Lanka - Macau = 156 // Macau - Qyzylorda = 157 // Qyzylorda -) - -var locales = []uint32{ // 754 elements - // Entry 0 - 1F - 0x00000000, 0x000087fc, 0x0000fce9, 0x00000794, - 0x00000fc1, 0x00000794, 0x00000ff6, 0x00000ff6, - 0x00001156, 0x00001156, 0x00001296, 0x00001296, - 0x00001bff, 0x00001bff, 0x0000286a, 0x00001bff, - 0x00001bff, 0x00002899, 0x00001bff, 0x00001bff, - 0x00001bff, 0x0000290b, 0x0000292f, 0x000029a1, - 0x00002a13, 0x00001bff, 0x00002a37, 0x00002aa9, - 0x00002b24, 0x00002bad, 0x00001bff, 0x00002c1f, - // Entry 20 - 3F - 0x00001bff, 0x00002c91, 0x00001bff, 0x00001bff, - 0x00001bff, 0x00002d0c, 0x00001bff, 0x00002d7e, - 0x00001bff, 0x00000000, 0x00002df0, 0x00002df0, - 0x00002fae, 0x00002fae, 0x00003115, 0x00003115, - 0x0000406c, 0x000048b3, 0x000048b3, 0x0000406c, - 0x0000406c, 0x00004aca, 0x00004aca, 0x00004c31, - 0x00004c31, 0x0000552d, 0x0000552d, 0x0000565d, - 0x0000565d, 0x000057c4, 0x000057c4, 0x00000000, - // Entry 40 - 5F - 0x0000605c, 0x0000605c, 0x000061a6, 0x000061a6, - 0x000061a6, 0x00006ac4, 0x00006ac4, 0x00006ac4, - 0x00006c55, 0x00006c55, 0x000073c6, 0x000073c6, - 0x00007768, 0x000081e0, 0x000081e0, 0x00007768, - 0x00007768, 0x000087fc, 0x000087fc, 0x000087fc, - 0x000087fc, 0x000087fc, 0x00009273, 0x00009273, - 0x00009797, 0x00009797, 0x000098de, 0x000098de, - 0x0000a192, 0x0000a192, 0x0000a487, 0x0000a4ab, - // Entry 60 - 7F - 0x0000a4ab, 0x0000b6fd, 0x0000b6fd, 0x0000bb5a, - 0x0000bb5a, 0x0000c4ef, 0x0000c4ef, 0x0000ce6b, - 0x0000ce8f, 0x0000ce8f, 0x0000cff1, 0x0000d9bd, - 0x0000cff1, 0x0000cff1, 0x0000cff1, 0x0000da23, - 0x0000da77, 0x0000da96, 0x0000dab8, 0x0000dab8, - 0x0000dc1a, 0x0000dc1a, 0x0000e38b, 0x0000e38b, - 0x00000000, 0x0000e4ea, 0x0000e4ea, 0x0000e601, - 0x0000e601, 0x0000ea5c, 0x0000ea5c, 0x0000ebbe, - // Entry 80 - 9F - 0x0000ebbe, 0x0000f3bd, 0x0000f3e1, 0x0000f3e1, - 0x0000f3e1, 0x0000fce9, 0x000105fd, 0x00010948, - 0x000105fd, 0x00010a12, 0x0000fce9, 0x00010948, - 0x00010a36, 0x000105fd, 0x00010e74, 0x0000fce9, - 0x000105fd, 0x000105fd, 0x00010eb5, 0x00010f24, - 0x00010f71, 0x000112b2, 0x00010948, 0x000112d6, - 0x000112fa, 0x00011340, 0x000105fd, 0x00010948, - 0x00011364, 0x00011388, 0x000105fd, 0x000113b6, - // Entry A0 - BF - 0x000113da, 0x000105fd, 0x00011408, 0x000105fd, - 0x0001142c, 0x000105fd, 0x0001153b, 0x0001155f, - 0x00011583, 0x000115a7, 0x000115cb, 0x000115fb, - 0x0001164a, 0x00011750, 0x000117ac, 0x000117da, - 0x000117fe, 0x00011885, 0x000118a9, 0x000118cd, - 0x000118f4, 0x000105fd, 0x000105fd, 0x000105fd, - 0x000105fd, 0x0001193a, 0x0001195e, 0x00011982, - 0x000119c8, 0x00011ab2, 0x00011c9e, 0x00011d88, - // Entry C0 - DF - 0x00011dac, 0x00011df0, 0x00011e36, 0x00011e5a, - 0x00011ec2, 0x00011ee6, 0x00011f0a, 0x00010948, - 0x00011f2e, 0x00011f52, 0x00011f76, 0x000105fd, - 0x000105fd, 0x000120eb, 0x00012118, 0x0000fce9, - 0x000105fd, 0x0001213c, 0x000105fd, 0x00012182, - 0x000121a6, 0x000121ca, 0x000121f1, 0x000122ee, - 0x00010948, 0x00012312, 0x00012336, 0x0001235a, - 0x0001237e, 0x000105fd, 0x000123a2, 0x000105fd, - // Entry E0 - FF - 0x000105fd, 0x000123c6, 0x000123ea, 0x00012430, - 0x0000fce9, 0x0000fce9, 0x000105fd, 0x000105fd, - 0x0000fce9, 0x000105fd, 0x000105fd, 0x00012476, - 0x000124e8, 0x0001250c, 0x0001257e, 0x0001257e, - 0x0001292f, 0x0001328c, 0x000135d1, 0x00013739, - 0x0001328c, 0x0001328c, 0x00013804, 0x00013953, - 0x00013af9, 0x0001328c, 0x00013b87, 0x0001292f, - 0x00013cb4, 0x0001292f, 0x0001292f, 0x00013d80, - // Entry 100 - 11F - 0x00013e31, 0x0001292f, 0x00013eb9, 0x000142ff, - 0x00014366, 0x0001445a, 0x00014663, 0x00014687, - 0x00014703, 0x00014828, 0x000148b6, 0x00014a3a, - 0x00014c7a, 0x00014e57, 0x00014e57, 0x000156e8, - 0x000156e8, 0x00015fa2, 0x00015fa2, 0x00016109, - 0x00016b48, 0x00016109, 0x00016cb3, 0x00016cb3, - 0x00016cb3, 0x00016e1a, 0x00016cb3, 0x00016e3e, - 0x00016e3e, 0x000177c3, 0x000177c3, 0x00018020, - // Entry 120 - 13F - 0x00018020, 0x00018020, 0x000187c2, 0x00019905, - 0x000187c2, 0x000187c2, 0x000187c2, 0x000187c2, - 0x00019932, 0x00019e03, 0x000187c2, 0x000187c2, - 0x00019e42, 0x000187c2, 0x00019ee3, 0x00019f38, - 0x00019f5c, 0x000187c2, 0x000187c2, 0x00019f80, - 0x000187c2, 0x000187c2, 0x000187c2, 0x00019fc5, - 0x000187c2, 0x000187c2, 0x0001a092, 0x000187c2, - 0x000187c2, 0x000187c2, 0x0001a0d6, 0x000187c2, - // Entry 140 - 15F - 0x0001a10e, 0x000187c2, 0x000187c2, 0x000187c2, - 0x000187c2, 0x000187c2, 0x0001a132, 0x000187c2, - 0x000187c2, 0x0001a173, 0x0001a1d0, 0x0001a1f4, - 0x000187c2, 0x0001a218, 0x0001a23c, 0x000187c2, - 0x000187c2, 0x0001a260, 0x0001a260, 0x0001a65c, - 0x0001a65c, 0x0001b10a, 0x0001b10a, 0x0001bb54, - 0x0001bb54, 0x0001c3d1, 0x0001c3d1, 0x0001ccae, - 0x0001ccae, 0x0001ccae, 0x0001ccae, 0x0001d166, - // Entry 160 - 17F - 0x0001d166, 0x00000000, 0x0001da04, 0x0001da04, - 0x0001db6b, 0x0001db6b, 0x0001dcc3, 0x0001dcc3, - 0x0001dcc3, 0x0001dcc3, 0x0001decb, 0x0001decb, - 0x0001e154, 0x0001e154, 0x0001ec65, 0x0001ec65, - 0x0001f65c, 0x000203e3, 0x0001f65c, 0x00020414, - 0x00020414, 0x00020b85, 0x00020b85, 0x00021721, - 0x00021721, 0x00021f4b, 0x00021f4b, 0x00022ceb, - 0x00022ceb, 0x00022f22, 0x00022f22, 0x000230eb, - // Entry 180 - 19F - 0x000230eb, 0x0002382f, 0x00024163, 0x0002382f, - 0x0002382f, 0x0002382f, 0x00000000, 0x0002419f, - 0x0002419f, 0x00000000, 0x00025200, 0x00025200, - 0x000253e9, 0x000253e9, 0x00000000, 0x0002554b, - 0x0002554b, 0x00025ecf, 0x00025ecf, 0x00000000, - 0x00026036, 0x00026036, 0x00000000, 0x0002619d, - 0x0002619d, 0x00026304, 0x00026304, 0x000267e4, - 0x000267e4, 0x00026946, 0x00026946, 0x00026aa8, - // Entry 1A0 - 1BF - 0x00026aa8, 0x00027377, 0x00027377, 0x00027480, - 0x00027480, 0x00027742, 0x00027742, 0x000278a9, - 0x000278a9, 0x00028097, 0x00028097, 0x0002892a, - 0x000295ba, 0x0002892a, 0x000296bd, 0x000296bd, - 0x000297f1, 0x000297f1, 0x00029b68, 0x00029b68, - 0x00029ccf, 0x00029ccf, 0x00029e23, 0x00029e23, - 0x00000000, 0x0002a2a0, 0x0002a2a0, 0x0002a453, - 0x0002a453, 0x0002ac98, 0x0002ac98, 0x0002adff, - // Entry 1C0 - 1DF - 0x0002adff, 0x0002b4fc, 0x0002b4fc, 0x0002b64b, - 0x0002b64b, 0x0002b7c5, 0x0002b7c5, 0x0002b7c5, - 0x0002b7c5, 0x0002b7c5, 0x0002b9ba, 0x0002b9ba, - 0x0002c644, 0x0002c872, 0x0002c644, 0x0002c896, - 0x0002c896, 0x0002d8a6, 0x0002d8a6, 0x0002da0d, - 0x0002da0d, 0x0002db74, 0x0002db74, 0x0002dcdb, - 0x0002dcdb, 0x0002e618, 0x0002e618, 0x0002e618, - 0x0002e76c, 0x0002e76c, 0x0002e8cc, 0x0002e8cc, - // Entry 1E0 - 1FF - 0x0002ea1b, 0x0002ea1b, 0x0002ec31, 0x0002ec31, - 0x0002ed77, 0x0002ed77, 0x0002ef94, 0x0002ef94, - 0x0002f891, 0x0002f891, 0x000301f1, 0x000301f1, - 0x00030a0a, 0x00030a0a, 0x000312e1, 0x00031c04, - 0x000312e1, 0x000312e1, 0x00031c2b, 0x00031c2b, - 0x00031fe6, 0x00031fe6, 0x00032148, 0x00032148, - 0x00032926, 0x00032926, 0x00000000, 0x00032c3a, - 0x00032c3a, 0x00032da1, 0x00032da1, 0x00032da1, - // Entry 200 - 21F - 0x00033cfe, 0x00033cfe, 0x00033e43, 0x00033e43, - 0x00033e43, 0x000341f0, 0x00034a3a, 0x000341f0, - 0x00034aaf, 0x00034aaf, 0x00035948, 0x00034aaf, - 0x00034aaf, 0x00034aaf, 0x0003596f, 0x00034aaf, - 0x00035a00, 0x00035a00, 0x00035b4f, 0x00035b4f, - 0x00035f9b, 0x00035f9b, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000360fa, 0x000360fa, - 0x00000000, 0x00036254, 0x00036254, 0x000363a3, - // Entry 220 - 23F - 0x000363a3, 0x00036543, 0x000365a2, 0x000365a2, - 0x00036725, 0x00036725, 0x00036725, 0x00036a76, - 0x00037378, 0x00037378, 0x00036a76, 0x00036a76, - 0x00000000, 0x00037473, 0x00037473, 0x00038120, - 0x00038120, 0x00038420, 0x00038420, 0x000387e2, - 0x0003941e, 0x000387e2, 0x00039788, 0x000394c6, - 0x00039788, 0x0003956e, 0x00039788, 0x00039616, - 0x000396e0, 0x00039788, 0x00039f24, 0x00039fcc, - // Entry 240 - 25F - 0x0003a074, 0x0003a370, 0x0003a4d5, 0x0003a074, - 0x0003a63a, 0x0003a63a, 0x0003a872, 0x0003a872, - 0x0003a9b9, 0x0003b485, 0x0003a9b9, 0x0003b56e, - 0x0003b56e, 0x0003b6d5, 0x0003b6d5, 0x0003b6d5, - 0x0003b6d5, 0x0003b6d5, 0x0003b6d5, 0x0003c405, - 0x0003c49d, 0x0003c49d, 0x0003c649, 0x0003c649, - 0x0003c7ab, 0x0003c7ab, 0x0003cde5, 0x0003cde5, - 0x0003cf47, 0x0003cf47, 0x00000000, 0x0003d09b, - // Entry 260 - 27F - 0x0003d513, 0x0003d09b, 0x0003d09b, 0x0003d5a5, - 0x0003d5a5, 0x0003d6c4, 0x0003d6c4, 0x0003d826, - 0x0003d826, 0x0003d98d, 0x0003dad6, 0x0003dad6, - 0x0003d98d, 0x0003d98d, 0x0003dc1f, 0x0003dc1f, - 0x0003e494, 0x0003e494, 0x0003eec5, 0x0003eec5, - 0x00000000, 0x00000000, 0x00000000, 0x0003f808, - 0x0003f808, 0x00000000, 0x0003f9c6, 0x0003f9c6, - 0x0003fbf9, 0x0003fbf9, 0x0003fbf9, 0x0003ffeb, - // Entry 280 - 29F - 0x0003fbf9, 0x0004000f, 0x0004000f, 0x00040861, - 0x00040885, 0x000408a9, 0x000408a9, 0x00041494, - 0x0004157e, 0x000408a9, 0x00041663, 0x00041702, - 0x000422ed, 0x000423d7, 0x00041702, 0x000424bc, - 0x00000000, 0x00000000, 0x00000000, 0x0004255b, - 0x0004255b, 0x00043230, 0x0004255b, 0x0004325c, - 0x00043a83, 0x00043af1, 0x0004325c, 0x0004325c, - 0x00000000, 0x00043b4c, 0x00043b4c, 0x000444c2, - // Entry 2A0 - 2BF - 0x000444e6, 0x00044574, 0x00044602, 0x00044602, - 0x00044ebd, 0x00044ebd, 0x00044ebd, 0x0004501f, - 0x0004501f, 0x00045e99, 0x00046028, 0x00045e99, - 0x00000000, 0x00046066, 0x00046066, 0x00000000, - 0x000466e8, 0x000466e8, 0x00046e6c, 0x000477df, - 0x00046e6c, 0x00000000, 0x00047803, 0x00047803, - 0x00047965, 0x00047965, 0x00047abb, 0x00047abb, - 0x00048084, 0x00048084, 0x00048d10, 0x0004957c, - // Entry 2C0 - 2DF - 0x00048d10, 0x000498d6, 0x0004a106, 0x0004a106, - 0x0004a1ab, 0x0004a1ab, 0x000498d6, 0x000498d6, - 0x0004a719, 0x0004a7fa, 0x0004a7fa, 0x0004a719, - 0x0004a719, 0x00000000, 0x0004a8db, 0x0004a8db, - 0x0004b3c4, 0x0004b3c4, 0x0004b56c, 0x0004b56c, - 0x00000000, 0x0004b6ce, 0x0004b6ce, 0x00000000, - 0x00000000, 0x0004ba04, 0x0004ba04, 0x0004bb6b, - 0x0004bb6b, 0x0004bcbf, 0x0004bcbf, 0x0004bf8d, - // Entry 2E0 - 2FF - 0x0004c1b3, 0x0004bf8d, 0x0004c313, 0x0004c313, - 0x0004d16c, 0x0004d16c, 0x0004d398, 0x0004d398, - 0x0004d398, 0x0004e1b0, 0x0004e278, 0x0004e324, - 0x0004e475, 0x0004f2d2, 0x0004f2d2, 0x0004e475, - 0x0004f7f4, 0x0004f7f4, -} // Size: 3040 bytes - -var indices = []uint16{ // 327671 elements - // Entry 0 - 3F - 0x0003, 0x0004, 0x05ef, 0x077c, 0x0012, 0x0017, 0x0029, 0x011a, - 0x0158, 0x0163, 0x01a1, 0x01b3, 0x0211, 0x02ce, 0x030b, 0x0346, - 0x0390, 0x0399, 0x03a2, 0x03ab, 0x03b4, 0x05a1, 0x05dc, 0x0008, - 0x9007, 0x9007, 0x9007, 0x9007, 0x0020, 0x9006, 0x9007, 0x9006, - 0x0003, 0x0024, 0x8000, 0x8000, 0x0001, 0x0026, 0x0001, 0x0000, - 0x0000, 0x000a, 0x0034, 0x9007, 0x9007, 0x9007, 0x0000, 0x00f8, - 0x9007, 0x0109, 0x005d, 0x0070, 0x0002, 0x0037, 0x004a, 0x0003, - 0x8002, 0x9001, 0x003b, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, - // Entry 40 - 7F - 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, - 0x002b, 0x002f, 0x0003, 0x9000, 0x004e, 0x9000, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, - 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0003, 0x0061, 0x006c, - 0x0066, 0x0003, 0x0000, 0xffff, 0xffff, 0x004e, 0x0004, 0x0000, - 0xffff, 0xffff, 0xffff, 0x004e, 0x0002, 0x0000, 0xffff, 0x0055, - 0x0006, 0x0077, 0x8004, 0x8004, 0x008c, 0x00ad, 0x00f2, 0x0001, - 0x0079, 0x0003, 0x007d, 0x8000, 0x8000, 0x000d, 0x0000, 0xffff, - // Entry 80 - BF - 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, - 0x0079, 0x007e, 0x0082, 0x0085, 0x0001, 0x008e, 0x0003, 0x0092, - 0x8000, 0x8000, 0x0019, 0x0000, 0xffff, 0x0089, 0x0097, 0x00a2, - 0x00b1, 0x00c0, 0x00d1, 0x00dc, 0x00ea, 0x00f5, 0x0102, 0x0112, - 0x011d, 0x0128, 0x0136, 0x0142, 0x014c, 0x015b, 0x0164, 0x0173, - 0x0181, 0x018c, 0x0197, 0x01a7, 0x01b2, 0x0001, 0x00af, 0x0003, - 0x00b3, 0x8000, 0x8000, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, - 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, - // Entry C0 - FF - 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, - 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, - 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, - 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, - 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, - 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, - 0x0389, 0x0390, 0x0001, 0x00f4, 0x0003, 0xa000, 0x8000, 0x8000, - 0x0004, 0x0106, 0x0100, 0x00fd, 0x0103, 0x0001, 0x0000, 0x0398, - // Entry 100 - 13F - 0x0001, 0x0000, 0x03aa, 0x0001, 0x0000, 0x03b6, 0x0001, 0x0000, - 0x03be, 0x0004, 0x0117, 0x0111, 0x010e, 0x0114, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0008, 0x0123, 0x9007, 0x9007, 0x9007, 0x014e, - 0x9006, 0x9007, 0x9006, 0x0002, 0x0126, 0x013a, 0x0003, 0x8002, - 0x9001, 0x012a, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, - 0x03de, 0x03e4, 0x03e9, 0x03f0, 0x03f9, 0x0403, 0x040b, 0x0411, - 0x0416, 0x041c, 0x0003, 0x9000, 0x013e, 0x9000, 0x000e, 0x0000, - // Entry 140 - 17F - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, - 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, 0x0003, 0x0152, - 0x8000, 0x8000, 0x0001, 0x0154, 0x0002, 0x0000, 0x0425, 0x042a, - 0x000a, 0x9001, 0x9001, 0x9001, 0x9001, 0x0000, 0x9001, 0x9001, - 0x9001, 0x9001, 0x9001, 0x0008, 0x016c, 0x9007, 0x9007, 0x9007, - 0x0197, 0x9006, 0x9007, 0x9006, 0x0002, 0x016f, 0x0183, 0x0003, - 0x8002, 0x9001, 0x0173, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, - 0x043f, 0x0445, 0x044c, 0x0450, 0x0458, 0x0460, 0x0467, 0x046e, - // Entry 180 - 1BF - 0x0473, 0x0479, 0x0481, 0x0003, 0x9000, 0x0187, 0x9000, 0x000e, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, - 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, 0x0003, - 0x019b, 0x8000, 0x8000, 0x0001, 0x019d, 0x0002, 0x0000, 0x0425, - 0x042a, 0x0008, 0x9004, 0x9004, 0x9004, 0x9004, 0x01aa, 0x9004, - 0x9004, 0x9004, 0x0003, 0x01ae, 0x8000, 0x8000, 0x0001, 0x01b0, - 0x0001, 0x0000, 0x0425, 0x0008, 0x01bc, 0x9007, 0x9007, 0x9007, - 0x01e5, 0x01ef, 0x9007, 0x0200, 0x0002, 0x01bf, 0x01d2, 0x0003, - // Entry 1C0 - 1FF - 0x8002, 0x9001, 0x01c3, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, - 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, - 0x002b, 0x002f, 0x0003, 0x9000, 0x01d6, 0x9000, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, - 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0003, 0x01e9, 0x8000, - 0x8000, 0x0001, 0x01eb, 0x0002, 0x0000, 0x0425, 0x042a, 0x0004, - 0x01fd, 0x01f7, 0x01f4, 0x01fa, 0x0001, 0x0000, 0x0489, 0x0001, - 0x0000, 0x049a, 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, - // Entry 200 - 23F - 0x0004, 0x020e, 0x0208, 0x0205, 0x020b, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0008, 0x021a, 0x0243, 0x0264, 0x027d, 0x0291, 0x029b, - 0x02ac, 0x02bd, 0x0002, 0x021d, 0x0230, 0x0003, 0x8002, 0x9001, - 0x0221, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, 0x000b, 0x000f, - 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, - 0x0003, 0x9000, 0x0234, 0x9000, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, - // Entry 240 - 27F - 0x0045, 0x0048, 0x004b, 0x0002, 0x0246, 0x0255, 0x0005, 0x8002, - 0x9001, 0x024c, 0x0000, 0x8000, 0x0007, 0x0000, 0x04bd, 0x04c1, - 0x04c5, 0x04c9, 0x04cd, 0x04d1, 0x04d5, 0x0005, 0x9000, 0x025b, - 0x9000, 0x0000, 0x9000, 0x0007, 0x0000, 0x04d9, 0x04db, 0x04dd, - 0x04df, 0x04dd, 0x04e1, 0x04d9, 0x0002, 0x0267, 0x0272, 0x0003, - 0x8002, 0x9001, 0x026b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, - 0x04e9, 0x04ec, 0x0003, 0x9000, 0x0276, 0x9000, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0002, 0x0280, 0x028d, - // Entry 280 - 2BF - 0x0003, 0x0284, 0x8000, 0x8000, 0x0002, 0x0287, 0x028a, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x9000, 0x8000, - 0x8000, 0x0003, 0x0295, 0x8000, 0x8000, 0x0001, 0x0297, 0x0002, - 0x0000, 0x04f5, 0x04f9, 0x0004, 0x02a9, 0x02a3, 0x02a0, 0x02a6, - 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, - 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x02ba, 0x02b4, 0x02b1, - 0x02b7, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x02cb, 0x02c5, - // Entry 2C0 - 2FF - 0x02c2, 0x02c8, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x02d7, - 0x9007, 0x9007, 0x9007, 0x0302, 0x9006, 0x9007, 0x9006, 0x0002, - 0x02da, 0x02ee, 0x0003, 0x8002, 0x9001, 0x02de, 0x000e, 0x0000, - 0x057b, 0x054c, 0x0553, 0x055b, 0x0562, 0x0568, 0x056f, 0x0576, - 0x0583, 0x0589, 0x058e, 0x0594, 0x059a, 0x059d, 0x0003, 0x9000, - 0x02f2, 0x9000, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, - 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, - // Entry 300 - 33F - 0x004b, 0x0422, 0x0003, 0x0306, 0x8000, 0x8000, 0x0001, 0x0308, - 0x0001, 0x0000, 0x04ef, 0x0008, 0x0314, 0x9007, 0x9007, 0x9007, - 0x033d, 0x9006, 0x9007, 0x9006, 0x0002, 0x0317, 0x032a, 0x0003, - 0x8002, 0x9001, 0x031b, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, - 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, - 0x05f2, 0x05f8, 0x0003, 0x9000, 0x032e, 0x9000, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, - 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0003, 0x0341, 0x8000, - // Entry 340 - 37F - 0x8000, 0x0001, 0x0343, 0x0001, 0x0000, 0x0601, 0x0008, 0x034f, - 0x9007, 0x9007, 0x9007, 0x0387, 0x9006, 0x9007, 0x9006, 0x0002, - 0x0352, 0x0374, 0x0003, 0x0356, 0x9001, 0x0365, 0x000d, 0x0000, - 0xffff, 0x0606, 0x060b, 0x0610, 0x0617, 0x061f, 0x0626, 0x062e, - 0x0633, 0x0638, 0x063d, 0x0643, 0x064d, 0x000d, 0x0000, 0xffff, - 0x0657, 0x0660, 0x0666, 0x066f, 0x0679, 0x0682, 0x068c, 0x0692, - 0x069b, 0x06a3, 0x06ab, 0x06ba, 0x0003, 0x9000, 0x0378, 0x9000, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, - // Entry 380 - 3BF - 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0003, - 0x038b, 0x8000, 0x8000, 0x0001, 0x038d, 0x0001, 0x0000, 0x06c8, - 0x0008, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, - 0x900a, 0x0008, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, - 0x900a, 0x900a, 0x0008, 0x900a, 0x900a, 0x900a, 0x900a, 0x900a, - 0x900a, 0x900a, 0x900a, 0x0008, 0x900a, 0x900a, 0x900a, 0x900a, - 0x900a, 0x900a, 0x900a, 0x900a, 0x0008, 0x9007, 0x9007, 0x9007, - 0x9007, 0x03bd, 0x9006, 0x9007, 0x9006, 0x0003, 0x03c1, 0x04b1, - // Entry 3C0 - 3FF - 0x8000, 0x0001, 0x03c3, 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, - 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, 0x0775, 0x0787, - 0x079b, 0x07b6, 0x07d2, 0x07ec, 0x0806, 0x081e, 0x0830, 0x0843, - 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, 0x08c7, 0x08da, - 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, 0x094e, 0x095f, 0x0972, - 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x0a0b, - 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, - 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, - // Entry 400 - 43F - 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, - 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, 0x0c74, 0x0c89, 0x0c9f, - 0x0cb3, 0x0cc8, 0x0cdd, 0x0cf2, 0x0d07, 0x0d1c, 0x0d33, 0x0d47, - 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, 0x0dc3, 0x0dd7, 0x0def, - 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, - 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x0f39, - 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, - 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, - // Entry 440 - 47F - 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, 0x1110, 0x1124, 0x1139, - 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, 0x11ba, 0x11d0, 0x11e7, - 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, 0x1276, 0x128b, - 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, 0x1308, 0x131f, 0x1335, - 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, 0x13b4, 0x13ca, 0x13e0, - 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, - 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, 0x150b, 0x1522, 0x1538, - 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, - // Entry 480 - 4BF - 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, 0x1661, 0x1676, 0x168a, - 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, 0x170c, 0x1720, 0x1734, - 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, 0x17b1, 0x17c7, 0x17db, - 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, 0x185e, 0x1874, 0x1888, - 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, - 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, 0x19ab, 0x19b1, 0x19b9, - 0x19c0, 0x0001, 0x04b3, 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, - 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, 0x0775, 0x0787, - // Entry 4C0 - 4FF - 0x079b, 0x07b6, 0x07d2, 0x07ec, 0x0806, 0x081e, 0x0830, 0x0843, - 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, 0x08c7, 0x08da, - 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, 0x094e, 0x095f, 0x0972, - 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x0a0b, - 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, - 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, - 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, - 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, 0x0c74, 0x0c89, 0x0c9f, - // Entry 500 - 53F - 0x0cb3, 0x0cc8, 0x0cdd, 0x0cf2, 0x0d07, 0x0d1c, 0x0d33, 0x0d47, - 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, 0x0dc3, 0x0dd7, 0x0def, - 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, - 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x0f39, - 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, - 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, - 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, 0x1110, 0x1124, 0x1139, - 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, 0x11ba, 0x11d0, 0x11e7, - // Entry 540 - 57F - 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, 0x1276, 0x128b, - 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, 0x1308, 0x131f, 0x1335, - 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, 0x13b4, 0x13ca, 0x13e0, - 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, - 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, 0x150b, 0x1522, 0x1538, - 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, - 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, 0x1661, 0x1676, 0x168a, - 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, 0x170c, 0x1720, 0x1734, - // Entry 580 - 5BF - 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, 0x17b1, 0x17c7, 0x17db, - 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, 0x185e, 0x1874, 0x1888, - 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, - 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, 0x04db, 0x04dd, 0x04d9, - 0x19c7, 0x0008, 0x05aa, 0x9007, 0x9007, 0x9007, 0x05d3, 0x9006, - 0x9007, 0x9006, 0x0002, 0x05ad, 0x05c0, 0x0003, 0x8002, 0x9001, - 0x05b1, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, - 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, - // Entry 5C0 - 5FF - 0x0003, 0x9000, 0x05c4, 0x9000, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, - 0x0045, 0x0048, 0x004b, 0x0003, 0x05d7, 0x8000, 0x8000, 0x0001, - 0x05d9, 0x0001, 0x0000, 0x1a1d, 0x0008, 0x9007, 0x9007, 0x9007, - 0x9007, 0x05e5, 0x9006, 0x9007, 0x9006, 0x0003, 0x05e9, 0x8000, - 0x8000, 0x0001, 0x05eb, 0x0002, 0x0000, 0x1a20, 0x1a2e, 0x0042, - 0x0632, 0x8000, 0x8001, 0x0637, 0x8003, 0x8004, 0x064c, 0x8006, - 0x8007, 0x0661, 0x8009, 0x800a, 0x0676, 0x800c, 0x800d, 0x068f, - // Entry 600 - 63F - 0x800f, 0x8010, 0x0694, 0x8012, 0x8013, 0x06a9, 0x8015, 0x8016, - 0x06ae, 0x8018, 0x8019, 0x06b3, 0x801b, 0x801c, 0x06b8, 0x801e, - 0x801f, 0x06ca, 0x8021, 0x8022, 0x06dc, 0x8024, 0x8025, 0x06ee, - 0x8027, 0x8028, 0x0700, 0x802a, 0x802b, 0x0712, 0x802d, 0x802e, - 0x0724, 0x8030, 0x8031, 0x8034, 0x0736, 0x8033, 0x073b, 0x8036, - 0x8037, 0x074f, 0x8039, 0x803a, 0x0763, 0x803c, 0x803d, 0x0777, - 0x803f, 0x8040, 0x0001, 0x0634, 0x0001, 0x0000, 0x1a35, 0x0003, - 0x063b, 0x063e, 0x0643, 0x0001, 0x0000, 0x1a39, 0x0003, 0x0000, - // Entry 640 - 67F - 0x1a3e, 0x1a48, 0x1a52, 0x0002, 0x0646, 0x0649, 0x0001, 0x0000, - 0x1a5c, 0x0001, 0x0000, 0x1a63, 0x0003, 0x0650, 0x0653, 0x0658, - 0x0001, 0x0000, 0x1a6a, 0x0003, 0x0000, 0x1a72, 0x1a7f, 0x1a8c, - 0x0002, 0x065b, 0x065e, 0x0001, 0x0000, 0x1a99, 0x0001, 0x0000, - 0x1aa0, 0x0003, 0x0665, 0x0668, 0x066d, 0x0001, 0x0000, 0x1aa7, - 0x0003, 0x0000, 0x1aad, 0x1ab8, 0x1ac3, 0x0002, 0x0670, 0x0673, - 0x0001, 0x0000, 0x1ace, 0x0001, 0x0000, 0x1ad5, 0x0004, 0x067b, - 0x067e, 0x0683, 0x068c, 0x0001, 0x0000, 0x1adc, 0x0003, 0x0000, - // Entry 680 - 6BF - 0x1ae1, 0x1aeb, 0x1af5, 0x0002, 0x0686, 0x0689, 0x0001, 0x0000, - 0x1aff, 0x0001, 0x0000, 0x1b06, 0x0001, 0x0000, 0x1b0d, 0x0001, - 0x0691, 0x0001, 0x0000, 0x1b1d, 0x0003, 0x0698, 0x069b, 0x06a0, - 0x0001, 0x0000, 0x1b2b, 0x0003, 0x0000, 0x1b2f, 0x1b39, 0x1b3f, - 0x0002, 0x06a3, 0x06a6, 0x0001, 0x0000, 0x1b48, 0x0001, 0x0000, - 0x1b4f, 0x0001, 0x06ab, 0x0001, 0x0000, 0x1b56, 0x0001, 0x06b0, - 0x0001, 0x0000, 0x1b62, 0x0001, 0x06b5, 0x0001, 0x0000, 0x1b72, - 0x0003, 0x0000, 0x06bc, 0x06c1, 0x0003, 0x0000, 0x1b83, 0x1b8f, - // Entry 6C0 - 6FF - 0x1b9b, 0x0002, 0x06c4, 0x06c7, 0x0001, 0x0000, 0x1ba7, 0x0001, - 0x0000, 0x1bb4, 0x0003, 0x0000, 0x06ce, 0x06d3, 0x0003, 0x0000, - 0x1bc1, 0x1bcd, 0x1bd9, 0x0002, 0x06d6, 0x06d9, 0x0001, 0x0000, - 0x1be5, 0x0001, 0x0000, 0x1bf2, 0x0003, 0x0000, 0x06e0, 0x06e5, - 0x0003, 0x0000, 0x1bff, 0x1c0c, 0x1c19, 0x0002, 0x06e8, 0x06eb, - 0x0001, 0x0000, 0x1c26, 0x0001, 0x0000, 0x1c34, 0x0003, 0x0000, - 0x06f2, 0x06f7, 0x0003, 0x0000, 0x1c42, 0x1c51, 0x1c60, 0x0002, - 0x06fa, 0x06fd, 0x0001, 0x0000, 0x1c6f, 0x0001, 0x0000, 0x1c7f, - // Entry 700 - 73F - 0x0003, 0x0000, 0x0704, 0x0709, 0x0003, 0x0000, 0x1c8f, 0x1c9d, - 0x1cab, 0x0002, 0x070c, 0x070f, 0x0001, 0x0000, 0x1cb9, 0x0001, - 0x0000, 0x1cc8, 0x0003, 0x0000, 0x0716, 0x071b, 0x0003, 0x0000, - 0x1cd7, 0x1ce3, 0x1cef, 0x0002, 0x071e, 0x0721, 0x0001, 0x0000, - 0x1cfb, 0x0001, 0x0000, 0x1d08, 0x0003, 0x0000, 0x0728, 0x072d, - 0x0003, 0x0000, 0x1d15, 0x1d23, 0x1d31, 0x0002, 0x0730, 0x0733, - 0x0001, 0x0000, 0x1d3f, 0x0001, 0x0000, 0x1d4e, 0x0001, 0x0738, - 0x0001, 0x0000, 0x1d5d, 0x0003, 0x073f, 0x0742, 0x0746, 0x0001, - // Entry 740 - 77F - 0x0000, 0x1d67, 0x0002, 0x0000, 0xffff, 0x1d6c, 0x0002, 0x0749, - 0x074c, 0x0001, 0x0000, 0x1d76, 0x0001, 0x0000, 0x1d7d, 0x0003, - 0x0753, 0x0756, 0x075a, 0x0001, 0x0000, 0x1d84, 0x0002, 0x0000, - 0xffff, 0x1d8b, 0x0002, 0x075d, 0x0760, 0x0001, 0x0000, 0x1d97, - 0x0001, 0x0000, 0x1da0, 0x0003, 0x0767, 0x076a, 0x076e, 0x0001, - 0x0000, 0x1da9, 0x0002, 0x0000, 0xffff, 0x1db0, 0x0002, 0x0771, - 0x0774, 0x0001, 0x0000, 0x1db4, 0x0001, 0x0000, 0x1dbb, 0x0001, - 0x0779, 0x0001, 0x0000, 0x1dc2, 0x0004, 0x0781, 0x0786, 0x078b, - // Entry 780 - 7BF - 0x0000, 0x0003, 0x0000, 0x1dc7, 0x1dd5, 0x1ddc, 0x0003, 0x0000, - 0x1de0, 0x1de4, 0x1ded, 0x0001, 0x078d, 0x0003, 0x0000, 0x0000, - 0x0791, 0x0001, 0x0000, 0x1df6, 0x0003, 0x0004, 0x0243, 0x062d, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0000, 0x1dfa, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x0000, 0x1e17, - 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - // Entry 7C0 - 7FF - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, - 0x0132, 0x01eb, 0x0210, 0x0221, 0x0232, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0000, 0xffff, 0x1e22, - 0x1e27, 0x1e2c, 0x1e31, 0x1e36, 0x1e3a, 0x1e3f, 0x1e44, 0x1e49, - 0x1e4e, 0x1e53, 0x1e58, 0x000d, 0x0000, 0xffff, 0x1e5d, 0x04e1, - 0x04db, 0x1e5f, 0x04db, 0x1e5d, 0x1e5d, 0x1e5f, 0x04d9, 0x1e61, - 0x1e63, 0x1e65, 0x000d, 0x0000, 0xffff, 0x1e67, 0x1e70, 0x1e7a, - // Entry 800 - 83F - 0x1e80, 0x1e36, 0x1e86, 0x1e8c, 0x1e92, 0x1e9b, 0x1ea5, 0x1ead, - 0x1eb6, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0000, 0xffff, - 0x1e22, 0x1e27, 0x1e2c, 0x1e31, 0x1e36, 0x1e3a, 0x1e3f, 0x1e44, - 0x1e49, 0x1e4e, 0x1e53, 0x1e58, 0x000d, 0x0000, 0xffff, 0x1e5d, - 0x04e1, 0x04db, 0x1e5f, 0x04db, 0x1e5d, 0x1e5d, 0x1e5f, 0x04d9, - 0x1e61, 0x1e63, 0x1e65, 0x000d, 0x0000, 0xffff, 0x1e67, 0x1e70, - 0x1e7a, 0x1e80, 0x1e36, 0x1e86, 0x1e8c, 0x1e92, 0x1e9b, 0x1ea5, - 0x1ead, 0x1eb6, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, - // Entry 840 - 87F - 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0000, 0x1ebf, 0x1ec3, 0x1ec7, - 0x1ecb, 0x1ecf, 0x1ed3, 0x1ed7, 0x0007, 0x0000, 0x04d9, 0x04db, - 0x1e65, 0x04df, 0x1e65, 0x1edb, 0x04d9, 0x0007, 0x0000, 0x1ebf, - 0x1ec3, 0x1ec7, 0x1ecb, 0x1ecf, 0x1ed3, 0x1ed7, 0x0007, 0x0000, - 0x1edd, 0x1ee4, 0x1eec, 0x1ef4, 0x1efd, 0x1f07, 0x1f0e, 0x0005, - 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0000, 0x1ebf, - 0x1ec3, 0x1ec7, 0x1ecb, 0x1ecf, 0x1ed3, 0x1ed7, 0x0007, 0x0000, - 0x04d9, 0x04db, 0x1e65, 0x04df, 0x1e65, 0x1edb, 0x04d9, 0x0007, - // Entry 880 - 8BF - 0x0000, 0x1ebf, 0x1ec3, 0x1ec7, 0x1ecb, 0x1ecf, 0x1ed3, 0x1ed7, - 0x0007, 0x0000, 0x1edd, 0x1ee4, 0x1eec, 0x1ef4, 0x1efd, 0x1f07, - 0x1f0e, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, - 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0000, - 0xffff, 0x1f23, 0x1f31, 0x1f3e, 0x1f4b, 0x0003, 0x011d, 0x0124, - 0x012b, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, - // Entry 8C0 - 8FF - 0x0000, 0xffff, 0x1f23, 0x1f31, 0x1f3e, 0x1f4b, 0x0002, 0x0135, - 0x0190, 0x0003, 0x0139, 0x0156, 0x0173, 0x0007, 0x0144, 0x0147, - 0x0141, 0x014a, 0x014d, 0x0150, 0x0153, 0x0001, 0x0000, 0x1f58, - 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, 0x1f66, 0x0001, 0x0000, - 0x1f6a, 0x0001, 0x0000, 0x1f75, 0x0001, 0x0000, 0x1f80, 0x0001, - 0x0000, 0x1f89, 0x0007, 0x0161, 0x0164, 0x015e, 0x0167, 0x016a, - 0x016d, 0x0170, 0x0001, 0x0000, 0x1f91, 0x0001, 0x0000, 0x1f94, - 0x0001, 0x0000, 0x1f96, 0x0001, 0x0000, 0x1f98, 0x0001, 0x0000, - // Entry 900 - 93F - 0x1f9a, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x1f96, 0x0007, - 0x017e, 0x0181, 0x017b, 0x0184, 0x0187, 0x018a, 0x018d, 0x0001, - 0x0000, 0x1f58, 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, 0x1f66, - 0x0001, 0x0000, 0x1f6a, 0x0001, 0x0000, 0x1f75, 0x0001, 0x0000, - 0x1f80, 0x0001, 0x0000, 0x1f89, 0x0003, 0x0194, 0x01b1, 0x01ce, - 0x0007, 0x019f, 0x01a2, 0x019c, 0x01a5, 0x01a8, 0x01ab, 0x01ae, - 0x0001, 0x0000, 0x1f58, 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, - 0x1f66, 0x0001, 0x0000, 0x1f9e, 0x0001, 0x0000, 0x1fa5, 0x0001, - // Entry 940 - 97F - 0x0000, 0x1fac, 0x0001, 0x0000, 0x1fb1, 0x0007, 0x01bc, 0x01bf, - 0x01b9, 0x01c2, 0x01c5, 0x01c8, 0x01cb, 0x0001, 0x0000, 0x1f91, - 0x0001, 0x0000, 0x1f94, 0x0001, 0x0000, 0x1f96, 0x0001, 0x0000, - 0x1f98, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x0000, 0x1f9c, 0x0001, - 0x0000, 0x1f96, 0x0007, 0x01d9, 0x01dc, 0x01d6, 0x01df, 0x01e2, - 0x01e5, 0x01e8, 0x0001, 0x0000, 0x1f58, 0x0001, 0x0000, 0x1f62, - 0x0001, 0x0000, 0x1f66, 0x0001, 0x0000, 0x1f9e, 0x0001, 0x0000, - 0x1fa5, 0x0001, 0x0000, 0x1fac, 0x0001, 0x0000, 0x1fb1, 0x0003, - // Entry 980 - 9BF - 0x01fa, 0x0205, 0x01ef, 0x0002, 0x01f2, 0x01f6, 0x0002, 0x0000, - 0x1fb5, 0x1fdf, 0x0002, 0x0000, 0x1fc3, 0x1feb, 0x0002, 0x01fd, - 0x0201, 0x0002, 0x0001, 0x0000, 0x000c, 0x0002, 0x0001, 0x0005, - 0x0011, 0x0002, 0x0208, 0x020c, 0x0002, 0x0001, 0x0000, 0x000c, - 0x0002, 0x0001, 0x0016, 0x001a, 0x0004, 0x021e, 0x0218, 0x0215, - 0x021b, 0x0001, 0x0001, 0x001d, 0x0001, 0x0001, 0x002d, 0x0001, - 0x0001, 0x0037, 0x0001, 0x0000, 0x051c, 0x0004, 0x022f, 0x0229, - 0x0226, 0x022c, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - // Entry 9C0 - 9FF - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0240, - 0x023a, 0x0237, 0x023d, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, - 0x0284, 0x0000, 0x0000, 0x0289, 0x02a0, 0x02b2, 0x02c4, 0x02db, - 0x02ed, 0x02ff, 0x0316, 0x0328, 0x033a, 0x0355, 0x036b, 0x0000, - 0x0000, 0x0000, 0x0381, 0x039a, 0x03b3, 0x0000, 0x0000, 0x0000, - 0x03cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d1, 0x03e5, - 0x03f9, 0x040d, 0x0421, 0x0435, 0x0449, 0x045d, 0x0471, 0x0485, - // Entry A00 - A3F - 0x0499, 0x04ad, 0x04c1, 0x04d5, 0x04e9, 0x04fd, 0x0511, 0x0525, - 0x0539, 0x054d, 0x0561, 0x0000, 0x0575, 0x0000, 0x057a, 0x0590, - 0x05a2, 0x05b4, 0x05ca, 0x05dc, 0x05ee, 0x0604, 0x0616, 0x0628, - 0x0001, 0x0286, 0x0001, 0x0001, 0x0040, 0x0003, 0x028d, 0x0290, - 0x0295, 0x0001, 0x0001, 0x0044, 0x0003, 0x0001, 0x0049, 0x0056, - 0x0063, 0x0002, 0x0298, 0x029c, 0x0002, 0x0001, 0x0071, 0x0071, - 0x0002, 0x0001, 0x007e, 0x007e, 0x0003, 0x02a4, 0x0000, 0x02a7, - 0x0001, 0x0001, 0x008e, 0x0002, 0x02aa, 0x02ae, 0x0002, 0x0001, - // Entry A40 - A7F - 0x0071, 0x0071, 0x0002, 0x0001, 0x007e, 0x007e, 0x0003, 0x02b6, - 0x0000, 0x02b9, 0x0001, 0x0001, 0x008e, 0x0002, 0x02bc, 0x02c0, - 0x0002, 0x0001, 0x0071, 0x0071, 0x0002, 0x0001, 0x007e, 0x007e, - 0x0003, 0x02c8, 0x02cb, 0x02d0, 0x0001, 0x0001, 0x0091, 0x0003, - 0x0001, 0x009a, 0x00aa, 0x00bb, 0x0002, 0x02d3, 0x02d7, 0x0002, - 0x0001, 0x00de, 0x00cd, 0x0002, 0x0001, 0x0103, 0x00ef, 0x0003, - 0x02df, 0x0000, 0x02e2, 0x0001, 0x0001, 0x0117, 0x0002, 0x02e5, - 0x02e9, 0x0002, 0x0001, 0x00de, 0x00cd, 0x0002, 0x0001, 0x0103, - // Entry A80 - ABF - 0x00ef, 0x0003, 0x02f1, 0x0000, 0x02f4, 0x0001, 0x0001, 0x0117, - 0x0002, 0x02f7, 0x02fb, 0x0002, 0x0001, 0x00de, 0x00de, 0x0002, - 0x0001, 0x0103, 0x0103, 0x0003, 0x0303, 0x0306, 0x030b, 0x0001, - 0x0001, 0x011b, 0x0003, 0x0001, 0x0121, 0x012f, 0x013c, 0x0002, - 0x030e, 0x0312, 0x0002, 0x0001, 0x014b, 0x014b, 0x0002, 0x0001, - 0x016b, 0x015a, 0x0003, 0x031a, 0x0000, 0x031d, 0x0001, 0x0001, - 0x017d, 0x0002, 0x0320, 0x0324, 0x0002, 0x0001, 0x0181, 0x0181, - 0x0002, 0x0001, 0x018d, 0x018d, 0x0003, 0x032c, 0x0000, 0x032f, - // Entry AC0 - AFF - 0x0001, 0x0001, 0x017d, 0x0002, 0x0332, 0x0336, 0x0002, 0x0001, - 0x0181, 0x0181, 0x0002, 0x0001, 0x018d, 0x018d, 0x0004, 0x033f, - 0x0342, 0x0347, 0x0352, 0x0001, 0x0001, 0x019c, 0x0003, 0x0001, - 0x01a1, 0x01ae, 0x01ba, 0x0002, 0x034a, 0x034e, 0x0002, 0x0001, - 0x01d5, 0x01c8, 0x0002, 0x0001, 0x01f2, 0x01e2, 0x0001, 0x0001, - 0x0202, 0x0004, 0x035a, 0x0000, 0x035d, 0x0368, 0x0001, 0x0001, - 0x0213, 0x0002, 0x0360, 0x0364, 0x0002, 0x0001, 0x0217, 0x0217, - 0x0002, 0x0001, 0x0222, 0x0222, 0x0001, 0x0001, 0x0202, 0x0004, - // Entry B00 - B3F - 0x0370, 0x0000, 0x0373, 0x037e, 0x0001, 0x0001, 0x0213, 0x0002, - 0x0376, 0x037a, 0x0002, 0x0001, 0x0217, 0x0217, 0x0002, 0x0001, - 0x0222, 0x0222, 0x0001, 0x0001, 0x0202, 0x0003, 0x0385, 0x0388, - 0x038f, 0x0001, 0x0001, 0x0230, 0x0005, 0x0001, 0x023e, 0x0245, - 0x024c, 0x0234, 0x0252, 0x0002, 0x0392, 0x0396, 0x0002, 0x0001, - 0x014b, 0x014b, 0x0002, 0x0001, 0x026a, 0x025b, 0x0003, 0x039e, - 0x03a1, 0x03a8, 0x0001, 0x0001, 0x0279, 0x0005, 0x0001, 0x023e, - 0x0245, 0x024c, 0x0234, 0x0252, 0x0002, 0x03ab, 0x03af, 0x0002, - // Entry B40 - B7F - 0x0001, 0x0288, 0x027c, 0x0002, 0x0001, 0x026a, 0x025b, 0x0003, - 0x03b7, 0x03ba, 0x03c1, 0x0001, 0x0001, 0x0279, 0x0005, 0x0001, - 0x023e, 0x0245, 0x024c, 0x0234, 0x0252, 0x0002, 0x03c4, 0x03c8, - 0x0002, 0x0001, 0x0288, 0x027c, 0x0002, 0x0001, 0x026a, 0x025b, - 0x0001, 0x03ce, 0x0001, 0x0001, 0x0294, 0x0003, 0x0000, 0x03d5, - 0x03da, 0x0003, 0x0001, 0x02a5, 0x02b4, 0x02c3, 0x0002, 0x03dd, - 0x03e1, 0x0002, 0x0001, 0x02e2, 0x02d3, 0x0002, 0x0001, 0x0303, - 0x02f1, 0x0003, 0x0000, 0x03e9, 0x03ee, 0x0003, 0x0001, 0x0315, - // Entry B80 - BBF - 0x0322, 0x032f, 0x0002, 0x03f1, 0x03f5, 0x0002, 0x0001, 0x02e2, - 0x02e2, 0x0002, 0x0001, 0x0303, 0x0303, 0x0003, 0x0000, 0x03fd, - 0x0402, 0x0003, 0x0001, 0x0315, 0x0322, 0x032f, 0x0002, 0x0405, - 0x0409, 0x0002, 0x0001, 0x02e2, 0x02e2, 0x0002, 0x0001, 0x0303, - 0x0303, 0x0003, 0x0000, 0x0411, 0x0416, 0x0003, 0x0001, 0x033d, - 0x034d, 0x035d, 0x0002, 0x0419, 0x041d, 0x0002, 0x0001, 0x037e, - 0x036e, 0x0002, 0x0001, 0x03a1, 0x038e, 0x0003, 0x0000, 0x0425, - 0x042a, 0x0003, 0x0001, 0x03b4, 0x03c0, 0x03cc, 0x0002, 0x042d, - // Entry BC0 - BFF - 0x0431, 0x0002, 0x0001, 0x037e, 0x037e, 0x0002, 0x0001, 0x03a1, - 0x03a1, 0x0003, 0x0000, 0x0439, 0x043e, 0x0003, 0x0001, 0x03b4, - 0x03c0, 0x03cc, 0x0002, 0x0441, 0x0445, 0x0002, 0x0001, 0x037e, - 0x037e, 0x0002, 0x0001, 0x03a1, 0x03a1, 0x0003, 0x0000, 0x044d, - 0x0452, 0x0003, 0x0001, 0x03d9, 0x03e9, 0x03f9, 0x0002, 0x0455, - 0x0459, 0x0002, 0x0001, 0x041a, 0x040a, 0x0002, 0x0001, 0x043d, - 0x042a, 0x0003, 0x0000, 0x0461, 0x0466, 0x0003, 0x0001, 0x0450, - 0x045c, 0x0468, 0x0002, 0x0469, 0x046d, 0x0002, 0x0001, 0x041a, - // Entry C00 - C3F - 0x041a, 0x0002, 0x0001, 0x043d, 0x043d, 0x0003, 0x0000, 0x0475, - 0x047a, 0x0003, 0x0001, 0x0450, 0x045c, 0x0468, 0x0002, 0x047d, - 0x0481, 0x0002, 0x0001, 0x041a, 0x041a, 0x0002, 0x0001, 0x043d, - 0x043d, 0x0003, 0x0000, 0x0489, 0x048e, 0x0003, 0x0001, 0x0475, - 0x0486, 0x0497, 0x0002, 0x0491, 0x0495, 0x0002, 0x0001, 0x04ba, - 0x04a9, 0x0002, 0x0001, 0x04df, 0x04cb, 0x0003, 0x0000, 0x049d, - 0x04a2, 0x0003, 0x0001, 0x04f3, 0x04ff, 0x050b, 0x0002, 0x04a5, - 0x04a9, 0x0002, 0x0001, 0x04ba, 0x04ba, 0x0002, 0x0001, 0x04df, - // Entry C40 - C7F - 0x04df, 0x0003, 0x0000, 0x04b1, 0x04b6, 0x0003, 0x0001, 0x04f3, - 0x04ff, 0x050b, 0x0002, 0x04b9, 0x04bd, 0x0002, 0x0001, 0x04ba, - 0x04ba, 0x0002, 0x0001, 0x04df, 0x04df, 0x0003, 0x0000, 0x04c5, - 0x04ca, 0x0003, 0x0001, 0x0518, 0x052a, 0x053c, 0x0002, 0x04cd, - 0x04d1, 0x0002, 0x0001, 0x0561, 0x054f, 0x0002, 0x0001, 0x0588, - 0x0573, 0x0003, 0x0000, 0x04d9, 0x04de, 0x0003, 0x0001, 0x059d, - 0x05a9, 0x05b5, 0x0002, 0x04e1, 0x04e5, 0x0002, 0x0001, 0x0561, - 0x0561, 0x0002, 0x0001, 0x0588, 0x0588, 0x0003, 0x0000, 0x04ed, - // Entry C80 - CBF - 0x04f2, 0x0003, 0x0001, 0x059d, 0x05a9, 0x05b5, 0x0002, 0x04f5, - 0x04f9, 0x0002, 0x0001, 0x0561, 0x0561, 0x0002, 0x0001, 0x0588, - 0x0588, 0x0003, 0x0000, 0x0501, 0x0506, 0x0003, 0x0001, 0x05c2, - 0x05d1, 0x05e0, 0x0002, 0x0509, 0x050d, 0x0002, 0x0001, 0x05ff, - 0x05f0, 0x0002, 0x0001, 0x0620, 0x060e, 0x0003, 0x0000, 0x0515, - 0x051a, 0x0003, 0x0001, 0x0632, 0x063e, 0x0647, 0x0002, 0x051d, - 0x0521, 0x0002, 0x0001, 0x05ff, 0x05ff, 0x0002, 0x0001, 0x0620, - 0x0620, 0x0003, 0x0000, 0x0529, 0x052e, 0x0003, 0x0001, 0x0632, - // Entry CC0 - CFF - 0x063e, 0x0647, 0x0002, 0x0531, 0x0535, 0x0002, 0x0001, 0x05ff, - 0x05ff, 0x0002, 0x0001, 0x0620, 0x0620, 0x0003, 0x0000, 0x053d, - 0x0542, 0x0003, 0x0001, 0x0650, 0x0661, 0x0672, 0x0002, 0x0545, - 0x0549, 0x0002, 0x0001, 0x0695, 0x0684, 0x0002, 0x0001, 0x06ba, - 0x06a6, 0x0003, 0x0000, 0x0551, 0x0556, 0x0003, 0x0001, 0x06ce, - 0x06da, 0x06e3, 0x0002, 0x0559, 0x055d, 0x0002, 0x0001, 0x0695, - 0x0695, 0x0002, 0x0001, 0x06ba, 0x06ba, 0x0003, 0x0000, 0x0565, - 0x056a, 0x0003, 0x0001, 0x06ce, 0x06da, 0x06e3, 0x0002, 0x056d, - // Entry D00 - D3F - 0x0571, 0x0002, 0x0001, 0x0695, 0x0695, 0x0002, 0x0001, 0x06ba, - 0x06ba, 0x0001, 0x0577, 0x0001, 0x0001, 0x06ec, 0x0003, 0x057e, - 0x0581, 0x0585, 0x0001, 0x0001, 0x06f2, 0x0002, 0x0001, 0xffff, - 0x06f6, 0x0002, 0x0588, 0x058c, 0x0002, 0x0001, 0x0702, 0x0702, - 0x0002, 0x0001, 0x070e, 0x070e, 0x0003, 0x0594, 0x0000, 0x0597, - 0x0001, 0x0001, 0x071d, 0x0002, 0x059a, 0x059e, 0x0002, 0x0001, - 0x0702, 0x0702, 0x0002, 0x0001, 0x070e, 0x070e, 0x0003, 0x05a6, - 0x0000, 0x05a9, 0x0001, 0x0001, 0x071d, 0x0002, 0x05ac, 0x05b0, - // Entry D40 - D7F - 0x0002, 0x0001, 0x0702, 0x0702, 0x0002, 0x0001, 0x070e, 0x070e, - 0x0003, 0x05b8, 0x05bb, 0x05bf, 0x0001, 0x0001, 0x0720, 0x0002, - 0x0001, 0xffff, 0x0727, 0x0002, 0x05c2, 0x05c6, 0x0002, 0x0001, - 0x014b, 0x014b, 0x0002, 0x0001, 0x0748, 0x0736, 0x0003, 0x05ce, - 0x0000, 0x05d1, 0x0001, 0x0001, 0x075a, 0x0002, 0x05d4, 0x05d8, - 0x0002, 0x0001, 0x075f, 0x075f, 0x0002, 0x0001, 0x076c, 0x076c, - 0x0003, 0x05e0, 0x0000, 0x05e3, 0x0001, 0x0001, 0x077c, 0x0002, - 0x05e6, 0x05ea, 0x0002, 0x0001, 0x075f, 0x075f, 0x0002, 0x0001, - // Entry D80 - DBF - 0x076c, 0x076c, 0x0003, 0x05f2, 0x05f5, 0x05f9, 0x0001, 0x0001, - 0x077f, 0x0002, 0x0001, 0xffff, 0x0787, 0x0002, 0x05fc, 0x0600, - 0x0002, 0x0001, 0x079b, 0x078b, 0x0002, 0x0001, 0x07bf, 0x07ac, - 0x0003, 0x0608, 0x0000, 0x060b, 0x0001, 0x0001, 0x07d3, 0x0002, - 0x060e, 0x0612, 0x0002, 0x0001, 0x07d8, 0x07d8, 0x0002, 0x0001, - 0x07e5, 0x07e5, 0x0003, 0x061a, 0x0000, 0x061d, 0x0001, 0x0001, - 0x07f5, 0x0002, 0x0620, 0x0624, 0x0002, 0x0001, 0x07d8, 0x07d8, - 0x0002, 0x0001, 0x07e5, 0x07e5, 0x0001, 0x062a, 0x0001, 0x0001, - // Entry DC0 - DFF - 0x07f8, 0x0004, 0x0632, 0x0637, 0x063c, 0x064b, 0x0003, 0x0000, - 0x1dc7, 0x1dd5, 0x1ddc, 0x0003, 0x0001, 0x0800, 0x0808, 0x0816, - 0x0002, 0x0000, 0x063f, 0x0003, 0x0000, 0x0646, 0x0643, 0x0001, - 0x0001, 0x0827, 0x0003, 0x0001, 0xffff, 0x0846, 0x0856, 0x0002, - 0x0814, 0x064e, 0x0003, 0x06e8, 0x077e, 0x0652, 0x0094, 0x0001, - 0x0869, 0x0879, 0x0891, 0x08a4, 0x08d1, 0x0911, 0x0942, 0x0975, - 0x09ac, 0x09df, 0x0a0e, 0x0a44, 0x0a71, 0x0a9f, 0x0ad8, 0x0b1a, - 0x0b5d, 0x0b94, 0x0bd9, 0x0c3d, 0x0cad, 0x0d09, 0x0d5c, 0x0d94, - // Entry E00 - E3F - 0x0dc5, 0x0df1, 0x0dfd, 0x0e17, 0x0e41, 0x0e67, 0x0e93, 0x0eb5, - 0x0ee6, 0x0f12, 0x0f44, 0x0f70, 0x0f83, 0x0fa2, 0x0fdc, 0x1017, - 0x1038, 0x1042, 0x1059, 0x1076, 0x10a2, 0x10c4, 0x110f, 0x113f, - 0x116d, 0x11b1, 0x11f1, 0x1213, 0x1224, 0x1246, 0x1254, 0x126d, - 0x1295, 0x12a8, 0x12cf, 0x1313, 0x1345, 0x1357, 0x1377, 0x13bd, - 0x13ee, 0x140e, 0x1422, 0x1435, 0x1443, 0x145b, 0x146e, 0x148a, - 0x14b7, 0x14e8, 0x1517, 0x1557, 0x159f, 0x15b1, 0x15d1, 0x15fc, - 0x1617, 0x1645, 0x1653, 0x1672, 0x169d, 0x16be, 0x16e4, 0x16f2, - // Entry E40 - E7F - 0x16ff, 0x170d, 0x172f, 0x1759, 0x1779, 0x17cc, 0x181e, 0x1855, - 0x1879, 0x1885, 0x188f, 0x18ad, 0x18f4, 0x1936, 0x1967, 0x1970, - 0x199b, 0x19e9, 0x1a20, 0x1a4d, 0x1a75, 0x1a7f, 0x1aa3, 0x1ad4, - 0x1b03, 0x1b2f, 0x1b5d, 0x1ba4, 0x1bb1, 0x1bbc, 0x1bca, 0x1bd6, - 0x1bef, 0x1c22, 0x1c51, 0x1c74, 0x1c82, 0x1c99, 0x1cac, 0x1cbe, - 0x1ccb, 0x1cd5, 0x1ceb, 0x1d10, 0x1d20, 0x1d36, 0x1d58, 0x1d73, - 0x1da3, 0x1dba, 0x1df0, 0x1e2a, 0x1e50, 0x1e6e, 0x1eaa, 0x1ed4, - 0x1edf, 0x1eef, 0x1f11, 0x1f4b, 0x0094, 0x0001, 0xffff, 0xffff, - // Entry E80 - EBF - 0xffff, 0xffff, 0x08c2, 0x0906, 0x0936, 0x0968, 0x099e, 0x09d7, - 0x0a00, 0x0a39, 0x0a68, 0x0a92, 0x0ac8, 0x0b06, 0x0b50, 0x0b85, - 0x0bc1, 0x0c1a, 0x0c93, 0x0cf0, 0x0d4c, 0x0d8a, 0x0db6, 0xffff, - 0xffff, 0x0e09, 0xffff, 0x0e58, 0xffff, 0x0ea9, 0x0edc, 0x0f08, - 0x0f35, 0xffff, 0xffff, 0x0f94, 0x0fcc, 0x100e, 0xffff, 0xffff, - 0xffff, 0x1067, 0xffff, 0x10ae, 0x10fe, 0xffff, 0x115c, 0x119d, - 0x11e7, 0xffff, 0xffff, 0xffff, 0xffff, 0x1260, 0xffff, 0xffff, - 0x12bd, 0x1301, 0xffff, 0xffff, 0x1362, 0x13b0, 0x13e5, 0xffff, - // Entry EC0 - EFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1481, 0x14ab, 0x14dd, - 0x150d, 0x153a, 0xffff, 0xffff, 0x15c3, 0xffff, 0x1607, 0xffff, - 0xffff, 0x1664, 0xffff, 0x16b2, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1721, 0xffff, 0x1764, 0x17b2, 0x180f, 0x184a, 0xffff, 0xffff, - 0xffff, 0x1899, 0x18e3, 0x1925, 0xffff, 0xffff, 0x1983, 0x19d9, - 0x1a17, 0x1a40, 0xffff, 0xffff, 0x1a96, 0x1acb, 0x1af4, 0xffff, - 0x1b41, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1be2, 0x1c17, - 0x1c47, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry F00 - F3F - 0x1ce0, 0xffff, 0xffff, 0x1d2c, 0xffff, 0x1d62, 0xffff, 0x1dae, - 0x1de0, 0x1e1e, 0xffff, 0x1e5e, 0x1e9c, 0xffff, 0xffff, 0xffff, - 0x1f04, 0x1f39, 0x0094, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, - 0x08e9, 0x0925, 0x0957, 0x098b, 0x09c3, 0x09f1, 0x0a25, 0x0a58, - 0x0a83, 0x0ab5, 0x0af1, 0x0b37, 0x0b73, 0x0bac, 0x0bfb, 0x0c6a, - 0x0cd0, 0x0d2c, 0x0d75, 0x0da7, 0x0ddd, 0xffff, 0xffff, 0x0e2e, - 0xffff, 0x0e7f, 0xffff, 0x0eca, 0x0ef9, 0x0f25, 0x0f5c, 0xffff, - 0xffff, 0x0fb9, 0x0ff5, 0x1029, 0xffff, 0xffff, 0xffff, 0x108e, - // Entry F40 - F7F - 0xffff, 0x10e3, 0x1129, 0xffff, 0x1187, 0x11ce, 0x1204, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1283, 0xffff, 0xffff, 0x12ea, 0x132e, - 0xffff, 0xffff, 0x1395, 0x13d3, 0x1400, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x149c, 0x14cc, 0x14fc, 0x152a, 0x157d, - 0xffff, 0xffff, 0x15e8, 0xffff, 0x1630, 0xffff, 0xffff, 0x1689, - 0xffff, 0x16d3, 0xffff, 0xffff, 0xffff, 0xffff, 0x1746, 0xffff, - 0x1797, 0x17ef, 0x1836, 0x1869, 0xffff, 0xffff, 0xffff, 0x18ca, - 0x190e, 0x1950, 0xffff, 0xffff, 0x19bc, 0x1a02, 0x1a32, 0x1a63, - // Entry F80 - FBF - 0xffff, 0xffff, 0x1ab9, 0x1ae6, 0x1b1b, 0xffff, 0x1b82, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1c05, 0x1c36, 0x1c64, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cff, 0xffff, - 0xffff, 0x1d49, 0xffff, 0x1d8d, 0xffff, 0x1dcf, 0x1e09, 0x1e3f, - 0xffff, 0x1e87, 0x1ec1, 0xffff, 0xffff, 0xffff, 0x1f27, 0x1f66, - 0x0003, 0x081f, 0x0826, 0x0818, 0x0005, 0x0001, 0xffff, 0x088d, - 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry FC0 - FFF - 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0020, 0x0006, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0012, 0x0004, 0x0000, 0x001a, 0x0017, 0x001d, - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0027, - 0x0004, 0x0000, 0x002f, 0x002c, 0x0032, 0x0001, 0x0001, 0x1fa2, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0002, 0x0003, - 0x00e2, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1000 - 103F - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1fc1, 0x0001, 0x0001, 0x1fcc, 0x0008, 0x002f, 0x0066, 0x008b, - 0x0098, 0x00b0, 0x00c0, 0x00d1, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0001, 0xffff, 0x1fd8, - 0x1fdd, 0x1fe2, 0x1fe7, 0x1feb, 0x1fef, 0x1ff3, 0x1ff7, 0x1ffc, - 0x2000, 0x2005, 0x2009, 0x000d, 0x0002, 0xffff, 0x0000, 0x0012, - // Entry 1040 - 107F - 0x002a, 0x0046, 0x0061, 0x0071, 0x0087, 0x009b, 0x00b3, 0x00d6, - 0x00f1, 0x010d, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, - 0x1f96, 0x1ffe, 0x2000, 0x2000, 0x2002, 0x2004, 0x1ffe, 0x2006, - 0x2008, 0x200a, 0x200c, 0x2006, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0002, 0x011e, 0x0122, 0x0126, - 0x012b, 0x0130, 0x0134, 0x0139, 0x0007, 0x0002, 0x013d, 0x0148, - 0x0153, 0x015f, 0x016f, 0x0179, 0x0187, 0x0002, 0x0000, 0x0082, - 0x0007, 0x0000, 0x1f96, 0x1ffe, 0x200e, 0x2000, 0x2010, 0x200e, - // Entry 1080 - 10BF - 0x2008, 0x0001, 0x008d, 0x0003, 0x0000, 0x0000, 0x0091, 0x0005, - 0x0002, 0xffff, 0x0199, 0x01a6, 0x01b0, 0x01ba, 0x0001, 0x009a, - 0x0003, 0x009e, 0x0000, 0x00a7, 0x0002, 0x00a1, 0x00a4, 0x0001, - 0x0002, 0x01c4, 0x0001, 0x0002, 0x01c8, 0x0002, 0x00aa, 0x00ad, - 0x0001, 0x0002, 0x01c4, 0x0001, 0x0002, 0x01c8, 0x0003, 0x00ba, - 0x0000, 0x00b4, 0x0001, 0x00b6, 0x0002, 0x0002, 0x01cc, 0x01dc, - 0x0001, 0x00bc, 0x0002, 0x0002, 0x01ec, 0x01ef, 0x0004, 0x00ce, - 0x00c8, 0x00c5, 0x00cb, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, - // Entry 10C0 - 10FF - 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, - 0x00df, 0x00d9, 0x00d6, 0x00dc, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0040, 0x0123, 0x0000, 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x012d, 0x0000, 0x0000, 0x0132, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0137, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0142, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1100 - 113F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0147, 0x0000, 0x014c, - 0x0000, 0x0000, 0x0151, 0x0000, 0x0000, 0x0156, 0x0000, 0x0000, - 0x015b, 0x0001, 0x0125, 0x0001, 0x0002, 0x0201, 0x0001, 0x012a, - 0x0001, 0x0002, 0x020a, 0x0001, 0x012f, 0x0001, 0x0002, 0x0212, - 0x0001, 0x0134, 0x0001, 0x0002, 0x021a, 0x0002, 0x013a, 0x013d, - 0x0001, 0x0002, 0x0220, 0x0003, 0x0002, 0x0227, 0x0232, 0x0236, - 0x0001, 0x0144, 0x0001, 0x0002, 0x023f, 0x0001, 0x0149, 0x0001, - // Entry 1140 - 117F - 0x0002, 0x0255, 0x0001, 0x014e, 0x0001, 0x0002, 0x025f, 0x0001, - 0x0153, 0x0001, 0x0002, 0x0264, 0x0001, 0x0158, 0x0001, 0x0002, - 0x026a, 0x0001, 0x015d, 0x0001, 0x0002, 0x0274, 0x0002, 0x0003, - 0x00c2, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0002, 0x028a, 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, - 0x04a5, 0x0001, 0x0002, 0x029c, 0x0008, 0x002f, 0x0053, 0x0000, - // Entry 1180 - 11BF - 0x0078, 0x0090, 0x00a0, 0x00b1, 0x0000, 0x0001, 0x0031, 0x0003, - 0x0035, 0x0000, 0x0044, 0x000d, 0x0002, 0xffff, 0x02ab, 0x02b0, - 0x02b5, 0x02ba, 0x02be, 0x02c2, 0x02c6, 0x02ca, 0x02cf, 0x02d4, - 0x02d9, 0x02de, 0x000d, 0x0002, 0xffff, 0x02e3, 0x02f3, 0x0304, - 0x0312, 0x0324, 0x0341, 0x0356, 0x0369, 0x0378, 0x0385, 0x0396, - 0x03a9, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, 0x0000, 0x0063, - 0x0007, 0x0002, 0x03b9, 0x03bd, 0x03c1, 0x03c5, 0x03c9, 0x03cd, - 0x03d1, 0x0007, 0x0002, 0x03d5, 0x03dd, 0x03e4, 0x03eb, 0x03f2, - // Entry 11C0 - 11FF - 0x03f8, 0x03fd, 0x0002, 0x0000, 0x006f, 0x0007, 0x0002, 0x0406, - 0x0408, 0x040a, 0x040c, 0x040e, 0x0410, 0x0412, 0x0001, 0x007a, - 0x0003, 0x007e, 0x0000, 0x0087, 0x0002, 0x0081, 0x0084, 0x0001, - 0x0002, 0x0414, 0x0001, 0x0002, 0x0417, 0x0002, 0x008a, 0x008d, - 0x0001, 0x0002, 0x0414, 0x0001, 0x0002, 0x0417, 0x0003, 0x009a, - 0x0000, 0x0094, 0x0001, 0x0096, 0x0002, 0x0002, 0x041a, 0x0426, - 0x0001, 0x009c, 0x0002, 0x0002, 0x0434, 0x0437, 0x0004, 0x00ae, - 0x00a8, 0x00a5, 0x00ab, 0x0001, 0x0002, 0x043a, 0x0001, 0x0000, - // Entry 1200 - 123F - 0x050b, 0x0001, 0x0000, 0x0514, 0x0001, 0x0002, 0x044a, 0x0004, - 0x00bf, 0x00b9, 0x00b6, 0x00bc, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - 0x0040, 0x0103, 0x0000, 0x0000, 0x0108, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x010d, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0122, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1240 - 127F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0127, 0x0000, 0x012c, - 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, 0x0136, 0x0000, 0x0000, - 0x013b, 0x0001, 0x0105, 0x0001, 0x0002, 0x047f, 0x0001, 0x010a, - 0x0001, 0x0002, 0x0484, 0x0001, 0x010f, 0x0001, 0x0002, 0x0488, - 0x0001, 0x0114, 0x0001, 0x0002, 0x048f, 0x0002, 0x011a, 0x011d, - 0x0001, 0x0002, 0x0496, 0x0003, 0x0002, 0x0499, 0x049f, 0x04a4, - 0x0001, 0x0124, 0x0001, 0x0002, 0x04ac, 0x0001, 0x0129, 0x0001, - // Entry 1280 - 12BF - 0x0002, 0x04b9, 0x0001, 0x012e, 0x0001, 0x0002, 0x04c1, 0x0001, - 0x0133, 0x0001, 0x0002, 0x04ca, 0x0001, 0x0138, 0x0001, 0x0002, - 0x04cf, 0x0001, 0x013d, 0x0001, 0x0002, 0x04d8, 0x0003, 0x0004, - 0x0368, 0x0782, 0x000b, 0x0010, 0x0000, 0x004e, 0x0000, 0x005c, - 0x0000, 0x0108, 0x0133, 0x0000, 0x0000, 0x0351, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0019, 0x002c, 0x0000, 0x003d, 0x0003, - 0x0022, 0x0027, 0x001d, 0x0001, 0x001f, 0x0001, 0x0000, 0x0000, - 0x0001, 0x0024, 0x0001, 0x0000, 0x0000, 0x0001, 0x0029, 0x0001, - // Entry 12C0 - 12FF - 0x0000, 0x0000, 0x0004, 0x003a, 0x0034, 0x0031, 0x0037, 0x0001, - 0x0002, 0x04e4, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0002, 0x04f7, 0x0004, 0x004b, 0x0045, 0x0042, 0x0048, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0054, 0x0001, 0x0056, 0x0001, 0x0058, 0x0002, 0x0002, - 0x0505, 0x050d, 0x0008, 0x0065, 0x0000, 0x0000, 0x0000, 0x00d0, - 0x00e6, 0x0000, 0x00f7, 0x0002, 0x0068, 0x009c, 0x0003, 0x006c, - // Entry 1300 - 133F - 0x007c, 0x008c, 0x000e, 0x0002, 0xffff, 0x0515, 0x0525, 0x0532, - 0x053c, 0x0549, 0x0550, 0x055d, 0x056a, 0x0577, 0x0584, 0x058b, - 0x0595, 0x059f, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, - 0x004b, 0x0422, 0x000e, 0x0002, 0xffff, 0x0515, 0x0525, 0x0532, - 0x053c, 0x0549, 0x0550, 0x055d, 0x056a, 0x0577, 0x0584, 0x058b, - 0x0595, 0x059f, 0x0003, 0x00a0, 0x00b0, 0x00c0, 0x000e, 0x0002, - 0xffff, 0x0515, 0x0525, 0x0532, 0x053c, 0x0549, 0x0550, 0x055d, - // Entry 1340 - 137F - 0x056a, 0x0577, 0x0584, 0x058b, 0x0595, 0x059f, 0x000e, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, - 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, 0x000e, 0x0002, - 0xffff, 0x0515, 0x0525, 0x0532, 0x053c, 0x0549, 0x0550, 0x055d, - 0x056a, 0x0577, 0x0584, 0x058b, 0x0595, 0x059f, 0x0003, 0x00da, - 0x00e0, 0x00d4, 0x0001, 0x00d6, 0x0002, 0x0000, 0x0425, 0x042a, - 0x0001, 0x00dc, 0x0002, 0x0000, 0x0425, 0x042a, 0x0001, 0x00e2, - 0x0002, 0x0000, 0x0425, 0x042a, 0x0004, 0x00f4, 0x00ee, 0x00eb, - // Entry 1380 - 13BF - 0x00f1, 0x0001, 0x0002, 0x04e4, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0105, 0x00ff, - 0x00fc, 0x0102, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0111, 0x0000, 0x0122, 0x0004, - 0x011f, 0x0119, 0x0116, 0x011c, 0x0001, 0x0002, 0x04e4, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, - 0x0004, 0x0130, 0x012a, 0x0127, 0x012d, 0x0001, 0x0000, 0x03c6, - // Entry 13C0 - 13FF - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0008, 0x013c, 0x01a1, 0x01f8, 0x022d, 0x02fe, 0x031e, - 0x032f, 0x0340, 0x0002, 0x013f, 0x0170, 0x0003, 0x0143, 0x0152, - 0x0161, 0x000d, 0x0002, 0xffff, 0x05ac, 0x05b6, 0x05c0, 0x05ca, - 0x05d4, 0x05db, 0x05e2, 0x05ec, 0x05f6, 0x0600, 0x060a, 0x0614, - 0x000d, 0x0002, 0xffff, 0x061e, 0x0622, 0x0626, 0x062a, 0x062e, - 0x0632, 0x0632, 0x0636, 0x063a, 0x0636, 0x063e, 0x0642, 0x000d, - 0x0002, 0xffff, 0x0646, 0x0656, 0x05c0, 0x0666, 0x05d4, 0x05db, - // Entry 1400 - 143F - 0x05e2, 0x0673, 0x0680, 0x0693, 0x06a3, 0x06b3, 0x0003, 0x0174, - 0x0183, 0x0192, 0x000d, 0x0002, 0xffff, 0x05ac, 0x05b6, 0x05c0, - 0x05ca, 0x05d4, 0x05db, 0x05e2, 0x05ec, 0x05f6, 0x0600, 0x060a, - 0x0614, 0x000d, 0x0002, 0xffff, 0x061e, 0x0622, 0x0626, 0x062a, - 0x062e, 0x0632, 0x0632, 0x0636, 0x063a, 0x0636, 0x063e, 0x0642, - 0x000d, 0x0002, 0xffff, 0x0646, 0x0656, 0x05c0, 0x0666, 0x05d4, - 0x05db, 0x05e2, 0x0673, 0x0680, 0x0693, 0x06a3, 0x06b3, 0x0002, - 0x01a4, 0x01ce, 0x0005, 0x01aa, 0x01b3, 0x01c5, 0x0000, 0x01bc, - // Entry 1440 - 147F - 0x0007, 0x0002, 0x06c3, 0x06cd, 0x06d4, 0x06de, 0x06e8, 0x06f2, - 0x06fc, 0x0007, 0x0002, 0x0706, 0x070a, 0x0626, 0x070e, 0x0712, - 0x0716, 0x071a, 0x0007, 0x0002, 0x0706, 0x070a, 0x0626, 0x070e, - 0x0712, 0x0716, 0x071a, 0x0007, 0x0002, 0x06c3, 0x06cd, 0x071e, - 0x06de, 0x06e8, 0x06f2, 0x06fc, 0x0005, 0x01d4, 0x01dd, 0x01ef, - 0x0000, 0x01e6, 0x0007, 0x0002, 0x06c3, 0x06cd, 0x06d4, 0x06de, - 0x06e8, 0x06f2, 0x06fc, 0x0007, 0x0002, 0x0706, 0x070a, 0x0626, - 0x070e, 0x0712, 0x0716, 0x071a, 0x0007, 0x0002, 0x0706, 0x070a, - // Entry 1480 - 14BF - 0x0626, 0x070e, 0x0712, 0x0716, 0x071a, 0x0007, 0x0002, 0x06c3, - 0x06cd, 0x071e, 0x06de, 0x06e8, 0x06f2, 0x06fc, 0x0002, 0x01fb, - 0x0214, 0x0003, 0x01ff, 0x0206, 0x020d, 0x0005, 0x0002, 0xffff, - 0x072b, 0x0733, 0x073b, 0x0743, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x0039, 0x0005, 0x0002, 0xffff, 0x074b, 0x075a, - 0x0769, 0x0778, 0x0003, 0x0218, 0x021f, 0x0226, 0x0005, 0x0002, - 0xffff, 0x072b, 0x0733, 0x073b, 0x0743, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0002, 0xffff, 0x074b, - // Entry 14C0 - 14FF - 0x075a, 0x0769, 0x0778, 0x0002, 0x0230, 0x0297, 0x0003, 0x0234, - 0x0255, 0x0276, 0x0008, 0x0240, 0x0246, 0x023d, 0x0249, 0x024c, - 0x024f, 0x0252, 0x0243, 0x0001, 0x0002, 0x0787, 0x0001, 0x0002, - 0x079b, 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, 0x07af, 0x0001, - 0x0002, 0x07bc, 0x0001, 0x0002, 0x07c7, 0x0001, 0x0002, 0x07d5, - 0x0001, 0x0002, 0x07dd, 0x0008, 0x0261, 0x0267, 0x025e, 0x026a, - 0x026d, 0x0270, 0x0273, 0x0264, 0x0001, 0x0002, 0x0787, 0x0001, - 0x0002, 0x07e8, 0x0001, 0x0002, 0x07ec, 0x0001, 0x0002, 0x07f0, - // Entry 1500 - 153F - 0x0001, 0x0002, 0x07bc, 0x0001, 0x0002, 0x07c7, 0x0001, 0x0002, - 0x07d5, 0x0001, 0x0002, 0x07dd, 0x0008, 0x0282, 0x0288, 0x027f, - 0x028b, 0x028e, 0x0291, 0x0294, 0x0285, 0x0001, 0x0002, 0x0787, - 0x0001, 0x0002, 0x079b, 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, - 0x07af, 0x0001, 0x0002, 0x07bc, 0x0001, 0x0002, 0x07c7, 0x0001, - 0x0002, 0x07d5, 0x0001, 0x0002, 0x07dd, 0x0003, 0x029b, 0x02bc, - 0x02dd, 0x0008, 0x02a7, 0x02ad, 0x02a4, 0x02b0, 0x02b3, 0x02b6, - 0x02b9, 0x02aa, 0x0001, 0x0002, 0x0787, 0x0001, 0x0002, 0x079b, - // Entry 1540 - 157F - 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, 0x07af, 0x0001, 0x0002, - 0x07bc, 0x0001, 0x0002, 0x07f4, 0x0001, 0x0002, 0x080b, 0x0001, - 0x0002, 0x0812, 0x0008, 0x02c8, 0x02ce, 0x02c5, 0x02d1, 0x02d4, - 0x02d7, 0x02da, 0x02cb, 0x0001, 0x0002, 0x0787, 0x0001, 0x0002, - 0x07e8, 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, 0x07f0, 0x0001, - 0x0002, 0x079b, 0x0001, 0x0002, 0x07f4, 0x0001, 0x0002, 0x080b, - 0x0001, 0x0002, 0x0812, 0x0008, 0x02e9, 0x02ef, 0x02e6, 0x02f2, - 0x02f5, 0x02f8, 0x02fb, 0x02ec, 0x0001, 0x0002, 0x0787, 0x0001, - // Entry 1580 - 15BF - 0x0002, 0x079b, 0x0001, 0x0002, 0x07a5, 0x0001, 0x0002, 0x07af, - 0x0001, 0x0002, 0x07bc, 0x0001, 0x0002, 0x07f4, 0x0001, 0x0002, - 0x080b, 0x0001, 0x0002, 0x0812, 0x0003, 0x030d, 0x0318, 0x0302, - 0x0002, 0x0305, 0x0309, 0x0002, 0x0002, 0x081c, 0x0830, 0x0002, - 0x0000, 0x04f5, 0x2012, 0x0002, 0x0310, 0x0314, 0x0002, 0x0002, - 0x0505, 0x0847, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0001, 0x031a, - 0x0002, 0x0002, 0x0505, 0x0847, 0x0004, 0x032c, 0x0326, 0x0323, - 0x0329, 0x0001, 0x0002, 0x084f, 0x0001, 0x0001, 0x1fb0, 0x0001, - // Entry 15C0 - 15FF - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x033d, 0x0337, - 0x0334, 0x033a, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x034e, - 0x0348, 0x0345, 0x034b, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0353, 0x0001, 0x0355, 0x0003, 0x0000, 0x0000, 0x0359, 0x000d, - 0x0002, 0xffff, 0x0868, 0x0875, 0x087f, 0x0896, 0x08ad, 0x08c4, - 0x08db, 0x08e5, 0x08f2, 0x08ff, 0x0909, 0x0919, 0x0040, 0x03a9, - // Entry 1600 - 163F - 0x0000, 0x0000, 0x03ae, 0x03c5, 0x03dc, 0x03f3, 0x040a, 0x0421, - 0x0438, 0x044f, 0x0466, 0x047d, 0x0498, 0x04b3, 0x0000, 0x0000, - 0x0000, 0x04ce, 0x04e7, 0x0500, 0x0000, 0x0000, 0x0000, 0x0519, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x051e, 0x0532, 0x0546, - 0x055a, 0x056e, 0x0582, 0x0596, 0x05aa, 0x05be, 0x05d2, 0x05e6, - 0x05fa, 0x060e, 0x0622, 0x0636, 0x064a, 0x065e, 0x0672, 0x0686, - 0x069a, 0x06ae, 0x0000, 0x06c2, 0x0000, 0x06c7, 0x06dd, 0x06ef, - 0x0701, 0x0717, 0x0729, 0x073b, 0x0751, 0x0767, 0x077d, 0x0001, - // Entry 1640 - 167F - 0x03ab, 0x0001, 0x0002, 0x0929, 0x0003, 0x03b2, 0x03b5, 0x03ba, - 0x0001, 0x0002, 0x0933, 0x0003, 0x0002, 0x093d, 0x0954, 0x0968, - 0x0002, 0x03bd, 0x03c1, 0x0002, 0x0002, 0x0985, 0x0985, 0x0002, - 0x0002, 0x09be, 0x09a3, 0x0003, 0x03c9, 0x03cc, 0x03d1, 0x0001, - 0x0002, 0x0933, 0x0003, 0x0002, 0x093d, 0x0954, 0x0968, 0x0002, - 0x03d4, 0x03d8, 0x0002, 0x0002, 0x0985, 0x0985, 0x0002, 0x0002, - 0x09be, 0x09be, 0x0003, 0x03e0, 0x03e3, 0x03e8, 0x0001, 0x0002, - 0x0933, 0x0003, 0x0002, 0x093d, 0x0954, 0x0968, 0x0002, 0x03eb, - // Entry 1680 - 16BF - 0x03ef, 0x0002, 0x0002, 0x0985, 0x0985, 0x0002, 0x0002, 0x09be, - 0x09be, 0x0003, 0x03f7, 0x03fa, 0x03ff, 0x0001, 0x0002, 0x09dc, - 0x0003, 0x0002, 0x09e3, 0x09fd, 0x0a0b, 0x0002, 0x0402, 0x0406, - 0x0002, 0x0002, 0x0a25, 0x0a25, 0x0002, 0x0002, 0x0a31, 0x0a31, - 0x0003, 0x040e, 0x0411, 0x0416, 0x0001, 0x0002, 0x09dc, 0x0003, - 0x0002, 0x09e3, 0x09fd, 0x0a0b, 0x0002, 0x0419, 0x041d, 0x0002, - 0x0002, 0x0a25, 0x0a25, 0x0002, 0x0002, 0x0a31, 0x0a31, 0x0003, - 0x0425, 0x0428, 0x042d, 0x0001, 0x0002, 0x09dc, 0x0003, 0x0002, - // Entry 16C0 - 16FF - 0x09e3, 0x09fd, 0x0a0b, 0x0002, 0x0430, 0x0434, 0x0002, 0x0002, - 0x0a25, 0x0a25, 0x0002, 0x0002, 0x0a31, 0x0a31, 0x0003, 0x043c, - 0x043f, 0x0444, 0x0001, 0x0002, 0x0a46, 0x0003, 0x0002, 0x0a4d, - 0x0a61, 0x0a72, 0x0002, 0x0447, 0x044b, 0x0002, 0x0002, 0x0aa4, - 0x0a8c, 0x0002, 0x0002, 0x0ad7, 0x0abf, 0x0003, 0x0453, 0x0456, - 0x045b, 0x0001, 0x0002, 0x0a46, 0x0003, 0x0002, 0x0a4d, 0x0a61, - 0x0a72, 0x0002, 0x045e, 0x0462, 0x0002, 0x0002, 0x0aa4, 0x0aa4, - 0x0002, 0x0002, 0x0ad7, 0x0ad7, 0x0003, 0x046a, 0x046d, 0x0472, - // Entry 1700 - 173F - 0x0001, 0x0002, 0x0a46, 0x0003, 0x0002, 0x0a4d, 0x0a61, 0x0a72, - 0x0002, 0x0475, 0x0479, 0x0002, 0x0002, 0x0aa4, 0x0aa4, 0x0002, - 0x0002, 0x0ad7, 0x0ad7, 0x0004, 0x0482, 0x0485, 0x048a, 0x0495, - 0x0001, 0x0002, 0x0af2, 0x0003, 0x0002, 0x0aff, 0x0b19, 0x0b30, - 0x0002, 0x048d, 0x0491, 0x0002, 0x0002, 0x0b6e, 0x0b50, 0x0002, - 0x0002, 0x0bad, 0x0b8f, 0x0001, 0x0002, 0x0bce, 0x0004, 0x049d, - 0x04a0, 0x04a5, 0x04b0, 0x0001, 0x0002, 0x0af2, 0x0003, 0x0002, - 0x0bdf, 0x0bf9, 0x0b30, 0x0002, 0x04a8, 0x04ac, 0x0002, 0x0002, - // Entry 1740 - 177F - 0x0b6e, 0x0b6e, 0x0002, 0x0002, 0x0bad, 0x0bad, 0x0001, 0x0002, - 0x0bce, 0x0004, 0x04b8, 0x04bb, 0x04c0, 0x04cb, 0x0001, 0x0002, - 0x0af2, 0x0003, 0x0002, 0x0bdf, 0x0bf9, 0x0b30, 0x0002, 0x04c3, - 0x04c7, 0x0002, 0x0002, 0x0b6e, 0x0b6e, 0x0002, 0x0002, 0x0bad, - 0x0bad, 0x0001, 0x0002, 0x0bce, 0x0003, 0x04d2, 0x04d5, 0x04dc, - 0x0001, 0x0002, 0x0c10, 0x0005, 0x0002, 0x0c31, 0x0c3e, 0x0c45, - 0x0c17, 0x0c4c, 0x0002, 0x04df, 0x04e3, 0x0002, 0x0002, 0x0c78, - 0x0c60, 0x0002, 0x0002, 0x0cab, 0x0c93, 0x0003, 0x04eb, 0x04ee, - // Entry 1780 - 17BF - 0x04f5, 0x0001, 0x0002, 0x0c10, 0x0005, 0x0002, 0x0cc6, 0x0c3e, - 0x0c45, 0x0c17, 0x0c4c, 0x0002, 0x04f8, 0x04fc, 0x0002, 0x0002, - 0x0cd6, 0x0c60, 0x0002, 0x0002, 0x0d0a, 0x0cf1, 0x0003, 0x0504, - 0x0507, 0x050e, 0x0001, 0x0002, 0x0c10, 0x0005, 0x0002, 0x0cc6, - 0x0c3e, 0x0c45, 0x0c17, 0x0c4c, 0x0002, 0x0511, 0x0515, 0x0002, - 0x0002, 0x0cd6, 0x0c60, 0x0002, 0x0002, 0x0d0a, 0x0cf1, 0x0001, - 0x051b, 0x0001, 0x0002, 0x0d25, 0x0003, 0x0000, 0x0522, 0x0527, - 0x0003, 0x0002, 0x0d32, 0x0d49, 0x0d60, 0x0002, 0x052a, 0x052e, - // Entry 17C0 - 17FF - 0x0002, 0x0002, 0x0d98, 0x0d7d, 0x0002, 0x0002, 0x0dd1, 0x0db6, - 0x0003, 0x0000, 0x0536, 0x053b, 0x0003, 0x0002, 0x0d32, 0x0d49, - 0x0d60, 0x0002, 0x053e, 0x0542, 0x0002, 0x0002, 0x0d98, 0x0d98, - 0x0002, 0x0002, 0x0dd1, 0x0dd1, 0x0003, 0x0000, 0x054a, 0x054f, - 0x0003, 0x0002, 0x0d32, 0x0d49, 0x0d60, 0x0002, 0x0552, 0x0556, - 0x0002, 0x0002, 0x0d98, 0x0d98, 0x0002, 0x0002, 0x0dd1, 0x0dd1, - 0x0003, 0x0000, 0x055e, 0x0563, 0x0003, 0x0002, 0x0def, 0x0e03, - 0x0e17, 0x0002, 0x0566, 0x056a, 0x0002, 0x0002, 0x0e49, 0x0e31, - // Entry 1800 - 183F - 0x0002, 0x0002, 0x0e7f, 0x0e67, 0x0003, 0x0000, 0x0572, 0x0577, - 0x0003, 0x0002, 0x0def, 0x0e03, 0x0e17, 0x0002, 0x057a, 0x057e, - 0x0002, 0x0002, 0x0e49, 0x0e49, 0x0002, 0x0002, 0x0e7f, 0x0e7f, - 0x0003, 0x0000, 0x0586, 0x058b, 0x0003, 0x0002, 0x0def, 0x0e03, - 0x0e17, 0x0002, 0x058e, 0x0592, 0x0002, 0x0002, 0x0e49, 0x0e49, - 0x0002, 0x0002, 0x0e7f, 0x0e7f, 0x0003, 0x0000, 0x059a, 0x059f, - 0x0003, 0x0002, 0x0e9d, 0x0eb7, 0x0ed1, 0x0002, 0x05a2, 0x05a6, - 0x0002, 0x0002, 0x0f0f, 0x0ef1, 0x0002, 0x0002, 0x0f51, 0x0f33, - // Entry 1840 - 187F - 0x0003, 0x0000, 0x05ae, 0x05b3, 0x0003, 0x0002, 0x0e9d, 0x0eb7, - 0x0ed1, 0x0002, 0x05b6, 0x05ba, 0x0002, 0x0002, 0x0f0f, 0x0f0f, - 0x0002, 0x0002, 0x0f51, 0x0f51, 0x0003, 0x0000, 0x05c2, 0x05c7, - 0x0003, 0x0002, 0x0e9d, 0x0eb7, 0x0ed1, 0x0002, 0x05ca, 0x05ce, - 0x0002, 0x0002, 0x0f0f, 0x0f0f, 0x0002, 0x0002, 0x0f51, 0x0f51, - 0x0003, 0x0000, 0x05d6, 0x05db, 0x0003, 0x0002, 0x0f75, 0x0f8c, - 0x0fa3, 0x0002, 0x05de, 0x05e2, 0x0002, 0x0002, 0x0fdb, 0x0fc0, - 0x0002, 0x0002, 0x1017, 0x0ffc, 0x0003, 0x0000, 0x05ea, 0x05ef, - // Entry 1880 - 18BF - 0x0003, 0x0002, 0x0f75, 0x0f8c, 0x0fa3, 0x0002, 0x05f2, 0x05f6, - 0x0002, 0x0002, 0x0fdb, 0x0fdb, 0x0002, 0x0002, 0x1017, 0x1017, - 0x0003, 0x0000, 0x05fe, 0x0603, 0x0003, 0x0002, 0x0f75, 0x0f8c, - 0x0fa3, 0x0002, 0x0606, 0x060a, 0x0002, 0x0002, 0x0fdb, 0x0fdb, - 0x0002, 0x0002, 0x1017, 0x1017, 0x0003, 0x0000, 0x0612, 0x0617, - 0x0003, 0x0002, 0x1038, 0x104f, 0x1066, 0x0002, 0x061a, 0x061e, - 0x0002, 0x0002, 0x109e, 0x1083, 0x0002, 0x0002, 0x10d7, 0x10bc, - 0x0003, 0x0000, 0x0626, 0x062b, 0x0003, 0x0002, 0x1038, 0x104f, - // Entry 18C0 - 18FF - 0x1066, 0x0002, 0x062e, 0x0632, 0x0002, 0x0002, 0x109e, 0x109e, - 0x0002, 0x0002, 0x10d7, 0x10d7, 0x0003, 0x0000, 0x063a, 0x063f, - 0x0003, 0x0002, 0x1038, 0x104f, 0x1066, 0x0002, 0x0642, 0x0646, - 0x0002, 0x0002, 0x109e, 0x109e, 0x0002, 0x0002, 0x10d7, 0x10d7, - 0x0003, 0x0000, 0x064e, 0x0653, 0x0003, 0x0002, 0x10f5, 0x110c, - 0x1123, 0x0002, 0x0656, 0x065a, 0x0002, 0x0002, 0x115b, 0x1140, - 0x0002, 0x0002, 0x1197, 0x117c, 0x0003, 0x0000, 0x0662, 0x0667, - 0x0003, 0x0002, 0x10f5, 0x110c, 0x1123, 0x0002, 0x066a, 0x066e, - // Entry 1900 - 193F - 0x0002, 0x0002, 0x115b, 0x115b, 0x0002, 0x0002, 0x1197, 0x1197, - 0x0003, 0x0000, 0x0676, 0x067b, 0x0003, 0x0002, 0x10f5, 0x110c, - 0x1123, 0x0002, 0x067e, 0x0682, 0x0002, 0x0002, 0x115b, 0x115b, - 0x0002, 0x0002, 0x1197, 0x1197, 0x0003, 0x0000, 0x068a, 0x068f, - 0x0003, 0x0002, 0x11b8, 0x11cf, 0x11e6, 0x0002, 0x0692, 0x0696, - 0x0002, 0x0002, 0x121e, 0x1203, 0x0002, 0x0002, 0x125a, 0x123f, - 0x0003, 0x0000, 0x069e, 0x06a3, 0x0003, 0x0002, 0x11b8, 0x11cf, - 0x11e6, 0x0002, 0x06a6, 0x06aa, 0x0002, 0x0002, 0x121e, 0x121e, - // Entry 1940 - 197F - 0x0002, 0x0002, 0x125a, 0x125a, 0x0003, 0x0000, 0x06b2, 0x06b7, - 0x0003, 0x0002, 0x11b8, 0x11cf, 0x11e6, 0x0002, 0x06ba, 0x06be, - 0x0002, 0x0002, 0x121e, 0x121e, 0x0002, 0x0002, 0x125a, 0x125a, - 0x0001, 0x06c4, 0x0001, 0x0002, 0x127b, 0x0003, 0x06cb, 0x06ce, - 0x06d2, 0x0001, 0x0002, 0x1292, 0x0002, 0x0002, 0xffff, 0x129c, - 0x0002, 0x06d5, 0x06d9, 0x0002, 0x0002, 0x12c8, 0x12ad, 0x0002, - 0x0002, 0x1301, 0x12e6, 0x0003, 0x06e1, 0x0000, 0x06e4, 0x0001, - 0x0002, 0x1292, 0x0002, 0x06e7, 0x06eb, 0x0002, 0x0002, 0x12c8, - // Entry 1980 - 19BF - 0x12ad, 0x0002, 0x0002, 0x1301, 0x12e6, 0x0003, 0x06f3, 0x0000, - 0x06f6, 0x0001, 0x0002, 0x1292, 0x0002, 0x06f9, 0x06fd, 0x0002, - 0x0002, 0x12c8, 0x12ad, 0x0002, 0x0002, 0x1301, 0x12e6, 0x0003, - 0x0705, 0x0708, 0x070c, 0x0001, 0x0002, 0x131f, 0x0002, 0x0002, - 0xffff, 0x1329, 0x0002, 0x070f, 0x0713, 0x0002, 0x0002, 0x1355, - 0x133a, 0x0002, 0x0002, 0x1391, 0x1376, 0x0003, 0x071b, 0x0000, - 0x071e, 0x0001, 0x0002, 0x131f, 0x0002, 0x0721, 0x0725, 0x0002, - 0x0002, 0x1355, 0x133a, 0x0002, 0x0002, 0x1391, 0x1376, 0x0003, - // Entry 19C0 - 19FF - 0x072d, 0x0000, 0x0730, 0x0001, 0x0002, 0x131f, 0x0002, 0x0733, - 0x0737, 0x0002, 0x0002, 0x1355, 0x133a, 0x0002, 0x0002, 0x1391, - 0x1376, 0x0003, 0x073f, 0x0742, 0x0746, 0x0001, 0x0002, 0x13b2, - 0x0002, 0x0002, 0xffff, 0x13bf, 0x0002, 0x0749, 0x074d, 0x0002, - 0x0002, 0x13e7, 0x13c9, 0x0002, 0x0002, 0x1426, 0x1408, 0x0003, - 0x0755, 0x0758, 0x075c, 0x0001, 0x0002, 0x13b2, 0x0002, 0x0002, - 0xffff, 0x13bf, 0x0002, 0x075f, 0x0763, 0x0002, 0x0002, 0x13e7, - 0x13c9, 0x0002, 0x0002, 0x1426, 0x1408, 0x0003, 0x076b, 0x076e, - // Entry 1A00 - 1A3F - 0x0772, 0x0001, 0x0002, 0x13b2, 0x0002, 0x0002, 0xffff, 0x13bf, - 0x0002, 0x0775, 0x0779, 0x0002, 0x0002, 0x13e7, 0x13c9, 0x0002, - 0x0002, 0x1426, 0x1408, 0x0001, 0x077f, 0x0001, 0x0002, 0x1447, - 0x0004, 0x0787, 0x078c, 0x0791, 0x07a0, 0x0003, 0x0002, 0x145b, - 0x1467, 0x1479, 0x0003, 0x0002, 0x1488, 0x1493, 0x14b8, 0x0002, - 0x0000, 0x0794, 0x0003, 0x0000, 0x079b, 0x0798, 0x0001, 0x0002, - 0x14d3, 0x0003, 0x0002, 0xffff, 0x1500, 0x1534, 0x0002, 0x0000, - 0x07a3, 0x0003, 0x083d, 0x08d3, 0x07a7, 0x0094, 0x0002, 0x156b, - // Entry 1A40 - 1A7F - 0x158e, 0x15bb, 0x15e2, 0x163a, 0x16cc, 0x1764, 0x17fc, 0x189a, - 0x1938, 0x19c9, 0x1a61, 0x1adf, 0x1b45, 0x1bd0, 0x1c87, 0x1d38, - 0x1dbf, 0x1e7f, 0x1f72, 0x2075, 0x2158, 0x2218, 0x2292, 0x2300, - 0x235a, 0x2371, 0x23b8, 0x2426, 0x246e, 0x24c4, 0x24ff, 0x2565, - 0x25be, 0x263d, 0x26ba, 0x26d8, 0x2719, 0x278e, 0x2805, 0x2851, - 0x2868, 0x288f, 0x28d7, 0x2939, 0x2980, 0x2a1e, 0x2a8c, 0x2ae7, - 0x2b82, 0x2c0a, 0x2c4c, 0x2c73, 0x2cba, 0x2cd7, 0x2d11, 0x2d65, - 0x2d8f, 0x2de6, 0x2e87, 0x2efb, 0x2f28, 0x2f73, 0x3013, 0x3096, - // Entry 1A80 - 1ABF - 0x30fe, 0x3122, 0x3149, 0x3169, 0x319c, 0x31cc, 0x3213, 0x3295, - 0x332c, 0x33a1, 0x3420, 0x34c0, 0x34ed, 0x3531, 0x3583, 0x35d3, - 0x3659, 0x3679, 0x36ce, 0x3744, 0x3792, 0x37fa, 0x3817, 0x3834, - 0x3851, 0x3898, 0x38f2, 0x3950, 0x3a26, 0x3ac9, 0x3b69, 0x3bce, - 0x3beb, 0x3c02, 0x3c3d, 0x3cc0, 0x3d62, 0x3df1, 0x3e08, 0x3e5c, - 0x3f28, 0x3fd5, 0x405d, 0x40b1, 0x40c8, 0x4104, 0x4166, 0x41c2, - 0x4210, 0x426c, 0x42fa, 0x431a, 0x4331, 0x4354, 0x4371, 0x43b5, - 0x444d, 0x44c9, 0x450e, 0x4528, 0x4552, 0x4579, 0x45a0, 0x45ba, - // Entry 1AC0 - 1AFF - 0x45d1, 0x4602, 0x465a, 0x467a, 0x46ab, 0x46f3, 0x472d, 0x4793, - 0x47c4, 0x4835, 0x48ac, 0x48f4, 0x4947, 0x49fa, 0x4a6b, 0x4a85, - 0x4aa3, 0x4af8, 0x4b9c, 0x0094, 0x0002, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1613, 0x16a2, 0x173a, 0x17cf, 0x186d, 0x190e, 0x199f, - 0x1a34, 0x1ac8, 0x1b2b, 0x1b9d, 0x1c47, 0x1d1b, 0x1d8c, 0x1e39, - 0x1f1f, 0x202f, 0x2115, 0x21f5, 0x2278, 0x22e0, 0xffff, 0xffff, - 0x238b, 0xffff, 0x2450, 0xffff, 0x24e8, 0x2551, 0x25a7, 0x2610, - 0xffff, 0xffff, 0x26fc, 0x276d, 0x27f4, 0xffff, 0xffff, 0xffff, - // Entry 1B00 - 1B3F - 0x28b3, 0xffff, 0x2953, 0x29f4, 0xffff, 0x2abd, 0x2b55, 0x2bf6, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2cf4, 0xffff, 0xffff, 0x2db9, - 0x2e5a, 0xffff, 0xffff, 0x2f3f, 0x2ff2, 0x306f, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x31fc, 0x3265, 0x330f, 0x338a, - 0x33f3, 0xffff, 0xffff, 0x351a, 0xffff, 0x359d, 0xffff, 0xffff, - 0x369d, 0xffff, 0x3765, 0xffff, 0xffff, 0xffff, 0xffff, 0x3878, - 0xffff, 0x390c, 0x39ef, 0x3aab, 0x3b42, 0xffff, 0xffff, 0xffff, - 0x3c19, 0x3c9f, 0x3d26, 0xffff, 0xffff, 0x3e32, 0x3ef2, 0x3fa8, - // Entry 1B40 - 1B7F - 0x4040, 0xffff, 0xffff, 0x40ea, 0x4152, 0x41a8, 0xffff, 0x4237, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4388, 0x4426, 0x44b2, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x45e8, - 0xffff, 0xffff, 0x4694, 0xffff, 0x4707, 0xffff, 0x47aa, 0x4812, - 0x4895, 0xffff, 0x4911, 0x49ca, 0xffff, 0xffff, 0xffff, 0x4acb, - 0x4b66, 0x0094, 0x0002, 0xffff, 0xffff, 0xffff, 0xffff, 0x166e, - 0x1706, 0x179b, 0x1836, 0x18d7, 0x196f, 0x1a00, 0x1a8e, 0x1b03, - 0x1b6c, 0x1c0d, 0x1cd4, 0x1d62, 0x1dff, 0x1ed2, 0x1fd2, 0x20c8, - // Entry 1B80 - 1BBF - 0x21a8, 0x2248, 0x22b9, 0x232d, 0xffff, 0xffff, 0x23f2, 0xffff, - 0x2499, 0xffff, 0x2523, 0x2586, 0x25e2, 0x267d, 0xffff, 0xffff, - 0x2743, 0x27bc, 0x2826, 0xffff, 0xffff, 0xffff, 0x2908, 0xffff, - 0x29ba, 0x2a55, 0xffff, 0x2b1e, 0x2bbc, 0x2c2b, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2d3b, 0xffff, 0xffff, 0x2e20, 0x2ec1, 0xffff, - 0xffff, 0x2fb4, 0x3041, 0x30cd, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3237, 0x32d5, 0x3356, 0x33c5, 0x346b, 0xffff, - 0xffff, 0x3555, 0xffff, 0x3619, 0xffff, 0xffff, 0x370c, 0xffff, - // Entry 1BC0 - 1BFF - 0x37c9, 0xffff, 0xffff, 0xffff, 0xffff, 0x38c5, 0xffff, 0x39a1, - 0x3a6a, 0x3b07, 0x3b9d, 0xffff, 0xffff, 0xffff, 0x3c6e, 0x3cee, - 0x3dab, 0xffff, 0xffff, 0x3ea7, 0x3f6b, 0x400c, 0x4087, 0xffff, - 0xffff, 0x412b, 0x4187, 0x41e9, 0xffff, 0x42ae, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x43ef, 0x4481, 0x44ed, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4629, 0xffff, 0xffff, - 0x46cf, 0xffff, 0x4760, 0xffff, 0x47eb, 0x4865, 0x48d0, 0xffff, - 0x498a, 0x4a34, 0xffff, 0xffff, 0xffff, 0x4b2f, 0x4bdf, 0x0003, - // Entry 1C00 - 1C3F - 0x0004, 0x0534, 0x0a82, 0x0012, 0x0017, 0x0000, 0x0030, 0x0000, - 0x009d, 0x0000, 0x00b5, 0x00e0, 0x031c, 0x0000, 0x0386, 0x0000, - 0x0000, 0x0000, 0x0000, 0x040c, 0x0504, 0x0526, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x001d, 0x0003, 0x0026, 0x002b, 0x0021, - 0x0001, 0x0023, 0x0001, 0x0003, 0x0000, 0x0001, 0x0028, 0x0001, - 0x0000, 0x0000, 0x0001, 0x002d, 0x0001, 0x0000, 0x0000, 0x0001, - 0x0032, 0x0002, 0x0035, 0x0069, 0x0003, 0x0039, 0x0049, 0x0059, - 0x000e, 0x0003, 0xffff, 0x001c, 0x0023, 0x002c, 0x0037, 0x0040, - // Entry 1C40 - 1C7F - 0x0049, 0x0054, 0x0061, 0x006e, 0x0077, 0x0082, 0x008b, 0x0094, - 0x000e, 0x0003, 0xffff, 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x00a9, - 0x00ac, 0x00af, 0x00b2, 0x00b5, 0x00b8, 0x00bd, 0x00c2, 0x00c7, - 0x000e, 0x0003, 0xffff, 0x001c, 0x0023, 0x002c, 0x0037, 0x0040, - 0x0049, 0x0054, 0x0061, 0x006e, 0x0077, 0x0082, 0x008b, 0x0094, - 0x0003, 0x006d, 0x007d, 0x008d, 0x000e, 0x0003, 0xffff, 0x001c, - 0x0023, 0x002c, 0x0037, 0x0040, 0x0049, 0x0054, 0x0061, 0x006e, - 0x0077, 0x0082, 0x008b, 0x0094, 0x000e, 0x0003, 0xffff, 0x009d, - // Entry 1C80 - 1CBF - 0x00a0, 0x00a3, 0x00a6, 0x00a9, 0x00ac, 0x00af, 0x00b2, 0x00b5, - 0x00b8, 0x00bd, 0x00c2, 0x00c7, 0x000e, 0x0003, 0xffff, 0x001c, - 0x0023, 0x002c, 0x0037, 0x0040, 0x0049, 0x0054, 0x0061, 0x006e, - 0x0077, 0x0082, 0x008b, 0x0094, 0x0001, 0x009f, 0x0001, 0x00a1, - 0x0003, 0x0000, 0x0000, 0x00a5, 0x000e, 0x0003, 0xffff, 0x00cc, - 0x00d9, 0x00e2, 0x00eb, 0x00f6, 0x00fb, 0x0104, 0x0111, 0x011e, - 0x0127, 0x012e, 0x0137, 0x0140, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x00be, 0x0000, 0x00cf, 0x0004, 0x00cc, 0x00c6, - // Entry 1CC0 - 1CFF - 0x00c3, 0x00c9, 0x0001, 0x0003, 0x014b, 0x0001, 0x0003, 0x015f, - 0x0001, 0x0003, 0x016c, 0x0001, 0x0003, 0x017c, 0x0004, 0x00dd, - 0x00d7, 0x00d4, 0x00da, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x00e9, 0x014e, 0x01a5, 0x01da, 0x02cf, 0x02e9, 0x02fa, 0x030b, - 0x0002, 0x00ec, 0x011d, 0x0003, 0x00f0, 0x00ff, 0x010e, 0x000d, - 0x0003, 0xffff, 0x018e, 0x0199, 0x01a6, 0x01af, 0x01ba, 0x01c3, - 0x01ce, 0x01d9, 0x01e4, 0x01f1, 0x01fe, 0x020b, 0x000d, 0x0003, - // Entry 1D00 - 1D3F - 0xffff, 0x0218, 0x021b, 0x021e, 0x0221, 0x0224, 0x0227, 0x022a, - 0x022d, 0x0230, 0x0233, 0x0236, 0x0239, 0x000d, 0x0003, 0xffff, - 0x018e, 0x0199, 0x01a6, 0x01af, 0x01ba, 0x01c3, 0x01ce, 0x01d9, - 0x01e4, 0x01f1, 0x01fe, 0x020b, 0x0003, 0x0121, 0x0130, 0x013f, - 0x000d, 0x0003, 0xffff, 0x018e, 0x0199, 0x01a6, 0x01af, 0x01ba, - 0x01c3, 0x01ce, 0x01d9, 0x01e4, 0x01f1, 0x01fe, 0x020b, 0x000d, - 0x0003, 0xffff, 0x0218, 0x021b, 0x021e, 0x0221, 0x0224, 0x0227, - 0x022a, 0x022d, 0x0230, 0x0233, 0x0236, 0x0239, 0x000d, 0x0003, - // Entry 1D40 - 1D7F - 0xffff, 0x018e, 0x0199, 0x01a6, 0x01af, 0x01ba, 0x01c3, 0x01ce, - 0x01d9, 0x01e4, 0x01f1, 0x01fe, 0x020b, 0x0002, 0x0151, 0x017b, - 0x0005, 0x0157, 0x0160, 0x0172, 0x0000, 0x0169, 0x0007, 0x0003, - 0x023c, 0x0247, 0x0256, 0x0267, 0x0278, 0x0285, 0x0292, 0x0007, - 0x0003, 0x029d, 0x0227, 0x02a0, 0x02a3, 0x02a6, 0x02a9, 0x0230, - 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, 0x0267, 0x0278, 0x0285, - 0x0292, 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, 0x0267, 0x0278, - 0x0285, 0x0292, 0x0005, 0x0181, 0x018a, 0x019c, 0x0000, 0x0193, - // Entry 1D80 - 1DBF - 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, 0x0267, 0x0278, 0x0285, - 0x0292, 0x0007, 0x0003, 0x029d, 0x0227, 0x02a0, 0x02a3, 0x02a6, - 0x02a9, 0x0230, 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, 0x0267, - 0x0278, 0x0285, 0x0292, 0x0007, 0x0003, 0x023c, 0x0247, 0x0256, - 0x0267, 0x0278, 0x0285, 0x0292, 0x0002, 0x01a8, 0x01c1, 0x0003, - 0x01ac, 0x01b3, 0x01ba, 0x0005, 0x0003, 0xffff, 0x02ac, 0x02c2, - 0x02da, 0x02f2, 0x0005, 0x0003, 0xffff, 0x009d, 0x00a0, 0x00a3, - 0x00a6, 0x0005, 0x0003, 0xffff, 0x02ac, 0x02c2, 0x02da, 0x02f2, - // Entry 1DC0 - 1DFF - 0x0003, 0x01c5, 0x01cc, 0x01d3, 0x0005, 0x0003, 0xffff, 0x02ac, - 0x02c2, 0x02da, 0x02f2, 0x0005, 0x0003, 0xffff, 0x009d, 0x00a0, - 0x00a3, 0x00a6, 0x0005, 0x0003, 0xffff, 0x02ac, 0x02c2, 0x02da, - 0x02f2, 0x0002, 0x01dd, 0x0256, 0x0003, 0x01e1, 0x0208, 0x022f, - 0x000b, 0x01ed, 0x01f0, 0x0000, 0x01f3, 0x01f9, 0x01ff, 0x0202, - 0x0000, 0x01f6, 0x01fc, 0x0205, 0x0001, 0x0003, 0x030a, 0x0001, - 0x0003, 0x021e, 0x0001, 0x0003, 0x030d, 0x0001, 0x0003, 0x030a, - 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, - // Entry 1E00 - 1E3F - 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x022a, 0x000b, - 0x0214, 0x0217, 0x0000, 0x021a, 0x0220, 0x0226, 0x0229, 0x0000, - 0x021d, 0x0223, 0x022c, 0x0001, 0x0003, 0x030a, 0x0001, 0x0003, - 0x021e, 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, - 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, - 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, 0x000b, 0x023b, - 0x023e, 0x0000, 0x0241, 0x0247, 0x024d, 0x0250, 0x0000, 0x0244, - 0x024a, 0x0253, 0x0001, 0x0003, 0x030a, 0x0001, 0x0003, 0x021e, - // Entry 1E40 - 1E7F - 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, 0x0003, - 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, - 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, 0x0003, 0x025a, 0x0281, - 0x02a8, 0x000b, 0x0266, 0x0269, 0x0000, 0x026c, 0x0272, 0x0278, - 0x027b, 0x0000, 0x026f, 0x0275, 0x027e, 0x0001, 0x0003, 0x030a, - 0x0001, 0x0003, 0x021e, 0x0001, 0x0003, 0x030d, 0x0001, 0x0003, - 0x030a, 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, - 0x0003, 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, - // Entry 1E80 - 1EBF - 0x000b, 0x028d, 0x0290, 0x0000, 0x0293, 0x0299, 0x029f, 0x02a2, - 0x0000, 0x0296, 0x029c, 0x02a5, 0x0001, 0x0003, 0x030a, 0x0001, - 0x0003, 0x021e, 0x0001, 0x0003, 0x030d, 0x0001, 0x0003, 0x035f, - 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, - 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, 0x000b, - 0x02b4, 0x02b7, 0x0000, 0x02ba, 0x02c0, 0x02c6, 0x02c9, 0x0000, - 0x02bd, 0x02c3, 0x02cc, 0x0001, 0x0003, 0x035f, 0x0001, 0x0003, - 0x0333, 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, - // Entry 1EC0 - 1EFF - 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, - 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x036c, 0x0003, 0x02de, - 0x0000, 0x02d3, 0x0002, 0x02d6, 0x02da, 0x0002, 0x0003, 0x0377, - 0x038d, 0x0002, 0x0003, 0xffff, 0x039a, 0x0002, 0x02e1, 0x02e5, - 0x0002, 0x0003, 0x03b0, 0x021e, 0x0002, 0x0003, 0xffff, 0x03b6, - 0x0004, 0x02f7, 0x02f1, 0x02ee, 0x02f4, 0x0001, 0x0003, 0x03bc, - 0x0001, 0x0003, 0x03ce, 0x0001, 0x0003, 0x03d9, 0x0001, 0x0003, - 0x03e7, 0x0004, 0x0308, 0x0302, 0x02ff, 0x0305, 0x0001, 0x0002, - // Entry 1F00 - 1F3F - 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, - 0x0002, 0x0478, 0x0004, 0x0319, 0x0313, 0x0310, 0x0316, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0006, 0x0323, 0x0000, 0x0000, 0x0000, - 0x036e, 0x0375, 0x0002, 0x0326, 0x034a, 0x0003, 0x032a, 0x0000, - 0x033a, 0x000e, 0x0003, 0x0445, 0x03f3, 0x03fc, 0x040b, 0x0416, - 0x041f, 0x0428, 0x043c, 0x045b, 0x0466, 0x046f, 0x047a, 0x0483, - 0x0488, 0x000e, 0x0003, 0x0445, 0x03f3, 0x03fc, 0x040b, 0x0416, - // Entry 1F40 - 1F7F - 0x041f, 0x0428, 0x043c, 0x045b, 0x0466, 0x046f, 0x047a, 0x0483, - 0x0488, 0x0003, 0x034e, 0x0000, 0x035e, 0x000e, 0x0003, 0x0445, - 0x03f3, 0x03fc, 0x040b, 0x0416, 0x041f, 0x0428, 0x043c, 0x045b, - 0x0466, 0x046f, 0x047a, 0x0483, 0x0488, 0x000e, 0x0003, 0x0445, - 0x03f3, 0x03fc, 0x040b, 0x0416, 0x041f, 0x0428, 0x043c, 0x045b, - 0x0466, 0x046f, 0x047a, 0x0483, 0x0488, 0x0001, 0x0370, 0x0001, - 0x0372, 0x0001, 0x0003, 0x030a, 0x0004, 0x0383, 0x037d, 0x037a, - 0x0380, 0x0001, 0x0003, 0x014b, 0x0001, 0x0003, 0x015f, 0x0001, - // Entry 1F80 - 1FBF - 0x0003, 0x016c, 0x0001, 0x0003, 0x017c, 0x0008, 0x038f, 0x0000, - 0x0000, 0x0000, 0x03f4, 0x03fb, 0x0000, 0x9006, 0x0002, 0x0392, - 0x03c3, 0x0003, 0x0396, 0x03a5, 0x03b4, 0x000d, 0x0003, 0xffff, - 0x0493, 0x049c, 0x04a3, 0x04b7, 0x04cb, 0x04e3, 0x04fb, 0x0502, - 0x050d, 0x0518, 0x0521, 0x0533, 0x000d, 0x0003, 0xffff, 0x009d, - 0x00a0, 0x00a3, 0x00a6, 0x00a9, 0x00ac, 0x00af, 0x00b2, 0x00b5, - 0x00b8, 0x00bd, 0x00c2, 0x000d, 0x0003, 0xffff, 0x0493, 0x049c, - 0x04a3, 0x04b7, 0x04cb, 0x04e3, 0x04fb, 0x0502, 0x050d, 0x0518, - // Entry 1FC0 - 1FFF - 0x0521, 0x0533, 0x0003, 0x03c7, 0x03d6, 0x03e5, 0x000d, 0x0003, - 0xffff, 0x0493, 0x049c, 0x04a3, 0x04b7, 0x04cb, 0x04e3, 0x04fb, - 0x0502, 0x050d, 0x0518, 0x0521, 0x0533, 0x000d, 0x0003, 0xffff, - 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x00a9, 0x00ac, 0x00af, 0x00b2, - 0x00b5, 0x00b8, 0x00bd, 0x00c2, 0x000d, 0x0003, 0xffff, 0x0493, - 0x049c, 0x04a3, 0x04b7, 0x04cb, 0x04e3, 0x04fb, 0x0502, 0x050d, - 0x0518, 0x0521, 0x0533, 0x0001, 0x03f6, 0x0001, 0x03f8, 0x0001, - 0x0003, 0x0543, 0x0004, 0x0409, 0x0403, 0x0400, 0x0406, 0x0001, - // Entry 2000 - 203F - 0x0003, 0x014b, 0x0001, 0x0003, 0x015f, 0x0001, 0x0003, 0x0548, - 0x0001, 0x0003, 0x017c, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0412, 0x0001, 0x0414, 0x0001, 0x0416, 0x00ec, 0x0003, 0x0554, - 0x055d, 0x056a, 0x0575, 0x057e, 0x0587, 0x0590, 0x0599, 0x05a4, - 0x05ad, 0x05b8, 0x05c3, 0x05d9, 0x05ed, 0x0601, 0x0615, 0x0629, - 0x0632, 0x063c, 0x064b, 0x0654, 0x065f, 0x066a, 0x0688, 0x0691, - 0x069c, 0x06a5, 0x06ae, 0x06b9, 0x06c6, 0x06cf, 0x06dc, 0x06e7, - 0x06f0, 0x06fb, 0x0706, 0x0711, 0x0720, 0x072d, 0x0736, 0x073f, - // Entry 2040 - 207F - 0x0746, 0x0755, 0x075f, 0x0768, 0x0771, 0x077c, 0x0785, 0x078f, - 0x0798, 0x07bc, 0x07cb, 0x07d6, 0x07e1, 0x07ec, 0x07f7, 0x0800, - 0x080b, 0x0818, 0x0829, 0x084f, 0x085e, 0x0880, 0x088b, 0x0896, - 0x08a5, 0x08c9, 0x08eb, 0x0913, 0x091c, 0x0929, 0x0934, 0x093d, - 0x0948, 0x0955, 0x0977, 0x0982, 0x098b, 0x0994, 0x099e, 0x09c2, - 0x09cc, 0x09d5, 0x09de, 0x09e7, 0x0a09, 0x0a14, 0x0a1d, 0x0a26, - 0x0a48, 0x0a51, 0x0a5c, 0x0a69, 0x0a74, 0x0a7d, 0x0a86, 0x0a95, - 0x0a9e, 0x0aab, 0x0ab6, 0x0ac2, 0x0ac9, 0x0ad0, 0x0adb, 0x0ae4, - // Entry 2080 - 20BF - 0x0aed, 0x0af4, 0x0b03, 0x0b0c, 0x0b17, 0x0b20, 0x0b29, 0x0b4d, - 0x0b57, 0x0b79, 0x0b88, 0x0baa, 0x0bb5, 0x0bba, 0x0bc7, 0x0bd2, - 0x0bdd, 0x0be6, 0x0bef, 0x0bfa, 0x0c09, 0x0c14, 0x0c23, 0x0c2d, - 0x0c38, 0x0c43, 0x0c4c, 0x0c57, 0x0c60, 0x0c69, 0x0c8b, 0x0c95, - 0x0ca0, 0x0caa, 0x0cb3, 0x0cbc, 0x0cdc, 0x0ce7, 0x0cf0, 0x0cf9, - 0x0d00, 0x0d0b, 0x0d14, 0x0d1f, 0x0d41, 0x0d4a, 0x0d51, 0x0d75, - 0x0d99, 0x0da4, 0x0daf, 0x0db8, 0x0dbf, 0x0dc8, 0x0dd3, 0x0ddc, - 0x0de7, 0x0df2, 0x0dfb, 0x0e0a, 0x0e2c, 0x0e37, 0x0e5d, 0x0e66, - // Entry 20C0 - 20FF - 0x0e6b, 0x0e91, 0x0e9a, 0x0ebe, 0x0ee2, 0x0eef, 0x0ef9, 0x0f04, - 0x0f11, 0x0f1a, 0x0f27, 0x0f30, 0x0f39, 0x0f44, 0x0f4d, 0x0f73, - 0x0f7e, 0x0f85, 0x0f8e, 0x0fb0, 0x0fb9, 0x0fc6, 0x0fcf, 0x0ff1, - 0x0ffc, 0x1005, 0x1027, 0x1032, 0x103d, 0x1046, 0x1052, 0x1074, - 0x107d, 0x109d, 0x10ac, 0x10b5, 0x10be, 0x10c7, 0x10d0, 0x10db, - 0x10e6, 0x10ef, 0x10fa, 0x1105, 0x110e, 0x1130, 0x1154, 0x1160, - 0x116f, 0x117a, 0x1184, 0x118d, 0x1196, 0x11a1, 0x11aa, 0x11b3, - 0x11bc, 0x11c5, 0x11cc, 0x11d5, 0x11df, 0x11ea, 0x11f3, 0x11fa, - // Entry 2100 - 213F - 0x1203, 0x120c, 0x1215, 0x0005, 0x050a, 0x0000, 0x0000, 0x0000, - 0x051f, 0x0001, 0x050c, 0x0003, 0x0000, 0x0000, 0x0510, 0x000d, - 0x0003, 0xffff, 0x121e, 0x122b, 0x123c, 0x1247, 0x124e, 0x1259, - 0x1266, 0x126d, 0x1276, 0x127d, 0x1282, 0x128b, 0x0001, 0x0521, - 0x0001, 0x0523, 0x0001, 0x0003, 0x129a, 0x0005, 0x0000, 0x0000, - 0x0000, 0x0000, 0x052c, 0x0001, 0x052e, 0x0001, 0x0530, 0x0002, - 0x0000, 0x1a20, 0x201a, 0x0040, 0x0575, 0x0000, 0x0000, 0x057a, - 0x0599, 0x05b3, 0x05cd, 0x05ec, 0x060b, 0x062a, 0x0649, 0x0663, - // Entry 2140 - 217F - 0x067d, 0x06a0, 0x06be, 0x0000, 0x0000, 0x0000, 0x06dc, 0x06fd, - 0x0717, 0x0000, 0x0000, 0x0000, 0x0731, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0736, 0x0752, 0x076e, 0x078a, 0x07a6, 0x07c2, - 0x07de, 0x07fa, 0x0816, 0x0832, 0x084e, 0x086a, 0x0886, 0x08a2, - 0x08be, 0x08da, 0x08f6, 0x0912, 0x092e, 0x094a, 0x0966, 0x0000, - 0x0982, 0x0000, 0x0987, 0x09a5, 0x09bf, 0x09d9, 0x09f7, 0x0a11, - 0x0a2b, 0x0a49, 0x0a63, 0x0a7d, 0x0001, 0x0577, 0x0001, 0x0003, - 0x12a3, 0x0003, 0x057e, 0x0581, 0x0586, 0x0001, 0x0003, 0x12ae, - // Entry 2180 - 21BF - 0x0003, 0x0003, 0x12b9, 0x12d3, 0x12ed, 0x0002, 0x0589, 0x0591, - 0x0006, 0x0003, 0x1307, 0x131b, 0x1307, 0x1336, 0x134a, 0x1307, - 0x0006, 0x0003, 0x1362, 0x1374, 0x1362, 0x138d, 0x139f, 0x1362, - 0x0003, 0x059d, 0x0000, 0x05a0, 0x0001, 0x0003, 0x12ae, 0x0002, - 0x05a3, 0x05ab, 0x0006, 0x0003, 0x1307, 0x131b, 0x1307, 0x1336, - 0x134a, 0x1307, 0x0006, 0x0003, 0x1362, 0x1374, 0x1362, 0x138d, - 0x139f, 0x1362, 0x0003, 0x05b7, 0x0000, 0x05ba, 0x0001, 0x0003, - 0x12ae, 0x0002, 0x05bd, 0x05c5, 0x0006, 0x0003, 0x1307, 0x131b, - // Entry 21C0 - 21FF - 0x1307, 0x1336, 0x134a, 0x1307, 0x0006, 0x0003, 0x1362, 0x1374, - 0x1362, 0x138d, 0x139f, 0x1362, 0x0003, 0x05d1, 0x05d4, 0x05d9, - 0x0001, 0x0003, 0x13b5, 0x0003, 0x0003, 0x13c7, 0x13df, 0x13f1, - 0x0002, 0x05dc, 0x05e4, 0x0006, 0x0003, 0x1409, 0x1424, 0x1409, - 0x1444, 0x145d, 0x1409, 0x0006, 0x0003, 0x147c, 0x1495, 0x147c, - 0x14b3, 0x14ca, 0x147c, 0x0003, 0x05f0, 0x05f3, 0x05f8, 0x0001, - 0x0003, 0x13b5, 0x0003, 0x0003, 0x13c7, 0x13df, 0x13f1, 0x0002, - 0x05fb, 0x0603, 0x0006, 0x0003, 0x1409, 0x1424, 0x1409, 0x1444, - // Entry 2200 - 223F - 0x145d, 0x1409, 0x0006, 0x0003, 0x147c, 0x1495, 0x147c, 0x14b3, - 0x14ca, 0x147c, 0x0003, 0x060f, 0x0612, 0x0617, 0x0001, 0x0003, - 0x13b5, 0x0003, 0x0003, 0x13c7, 0x13df, 0x13f1, 0x0002, 0x061a, - 0x0622, 0x0006, 0x0003, 0x1409, 0x1424, 0x1409, 0x1444, 0x145d, - 0x1409, 0x0006, 0x0003, 0x147c, 0x1495, 0x147c, 0x14b3, 0x14ca, - 0x147c, 0x0003, 0x062e, 0x0631, 0x0636, 0x0001, 0x0003, 0x14e7, - 0x0003, 0x0003, 0x14f2, 0x150a, 0x151c, 0x0002, 0x0639, 0x0641, - 0x0006, 0x0003, 0x1534, 0x1548, 0x1534, 0x1561, 0x1575, 0x158b, - // Entry 2240 - 227F - 0x0006, 0x0003, 0x15a3, 0x15b5, 0x15a3, 0x15cc, 0x15de, 0x15f2, - 0x0003, 0x064d, 0x0000, 0x0650, 0x0001, 0x0003, 0x14e7, 0x0002, - 0x0653, 0x065b, 0x0006, 0x0003, 0x1534, 0x1548, 0x1534, 0x1561, - 0x1575, 0x158b, 0x0006, 0x0003, 0x15a3, 0x15b5, 0x15a3, 0x15cc, - 0x1575, 0x15f2, 0x0003, 0x0667, 0x0000, 0x066a, 0x0001, 0x0003, - 0x14e7, 0x0002, 0x066d, 0x0675, 0x0006, 0x0003, 0x1534, 0x1548, - 0x1534, 0x1561, 0x1575, 0x158b, 0x0006, 0x0003, 0x15a3, 0x15b5, - 0x15a3, 0x15cc, 0x15de, 0x15f2, 0x0004, 0x0682, 0x0685, 0x068a, - // Entry 2280 - 22BF - 0x069d, 0x0001, 0x0003, 0x1608, 0x0003, 0x0003, 0x1617, 0x1633, - 0x1649, 0x0002, 0x068d, 0x0695, 0x0006, 0x0003, 0x1665, 0x167d, - 0x1665, 0x169a, 0x16b2, 0x16cc, 0x0006, 0x0003, 0x16e8, 0x16fe, - 0x16e8, 0x1719, 0x172f, 0x1747, 0x0001, 0x0003, 0x1761, 0x0004, - 0x06a5, 0x0000, 0x06a8, 0x06bb, 0x0001, 0x0003, 0x1608, 0x0002, - 0x06ab, 0x06b3, 0x0006, 0x0003, 0x1665, 0x167d, 0x1665, 0x1770, - 0x16b2, 0x16cc, 0x0006, 0x0003, 0x16e8, 0x16fe, 0x16e8, 0x1719, - 0x172f, 0x1747, 0x0001, 0x0003, 0x1761, 0x0004, 0x06c3, 0x0000, - // Entry 22C0 - 22FF - 0x06c6, 0x06d9, 0x0001, 0x0003, 0x1608, 0x0002, 0x06c9, 0x06d1, - 0x0006, 0x0003, 0x1665, 0x167d, 0x1665, 0x169a, 0x16b2, 0x16cc, - 0x0006, 0x0003, 0x16e8, 0x16fe, 0x16e8, 0x1719, 0x172f, 0x1747, - 0x0001, 0x0003, 0x1761, 0x0003, 0x06e0, 0x06e3, 0x06ea, 0x0001, - 0x0003, 0x178c, 0x0005, 0x0003, 0x17a1, 0x17a8, 0x17b3, 0x1793, - 0x17bc, 0x0002, 0x06ed, 0x06f5, 0x0006, 0x0003, 0x17cc, 0x17e0, - 0x17cc, 0x17f9, 0x180d, 0x1823, 0x0006, 0x0003, 0x183b, 0x184d, - 0x183b, 0x1864, 0x1876, 0x188a, 0x0003, 0x0701, 0x0000, 0x0704, - // Entry 2300 - 233F - 0x0001, 0x0003, 0x178c, 0x0002, 0x0707, 0x070f, 0x0006, 0x0003, - 0x17cc, 0x17e0, 0x17cc, 0x17f9, 0x180d, 0x1823, 0x0006, 0x0003, - 0x183b, 0x184d, 0x183b, 0x1864, 0x1876, 0x188a, 0x0003, 0x071b, - 0x0000, 0x071e, 0x0001, 0x0003, 0x178c, 0x0002, 0x0721, 0x0729, - 0x0006, 0x0003, 0x17cc, 0x17e0, 0x17cc, 0x17f9, 0x180d, 0x1823, - 0x0006, 0x0003, 0x183b, 0x184d, 0x183b, 0x1864, 0x1876, 0x188a, - 0x0001, 0x0733, 0x0001, 0x0003, 0x17a8, 0x0003, 0x0000, 0x073a, - 0x073f, 0x0003, 0x0003, 0x18a0, 0x18b8, 0x18d0, 0x0002, 0x0742, - // Entry 2340 - 237F - 0x074a, 0x0006, 0x0003, 0x18e8, 0x18d0, 0x18e8, 0x18fc, 0x18e8, - 0x18e8, 0x0006, 0x0003, 0x191b, 0x18a0, 0x191b, 0x192d, 0x191b, - 0x191b, 0x0003, 0x0000, 0x0756, 0x075b, 0x0003, 0x0003, 0x18a0, - 0x18b8, 0x18d0, 0x0002, 0x075e, 0x0766, 0x0006, 0x0003, 0x18e8, - 0x194c, 0x18e8, 0x195c, 0x18e8, 0x18e8, 0x0006, 0x0003, 0x191b, - 0x1977, 0x191b, 0x1987, 0x191b, 0x191b, 0x0003, 0x0000, 0x0772, - 0x0777, 0x0003, 0x0003, 0x18a0, 0x18b8, 0x18d0, 0x0002, 0x077a, - 0x0782, 0x0006, 0x0003, 0x18e8, 0x194c, 0x18e8, 0x195c, 0x18e8, - // Entry 2380 - 23BF - 0x18e8, 0x0006, 0x0003, 0x191b, 0x1977, 0x191b, 0x1987, 0x191b, - 0x191b, 0x0003, 0x0000, 0x078e, 0x0793, 0x0003, 0x0003, 0x19a2, - 0x19be, 0x19da, 0x0002, 0x0796, 0x079e, 0x0006, 0x0003, 0x1a6e, - 0x1a0e, 0x19f6, 0x1a2a, 0x1a4d, 0x1a6e, 0x0006, 0x0003, 0x1b01, - 0x1aa3, 0x1a8d, 0x1abf, 0x1ae2, 0x1b01, 0x0003, 0x0000, 0x07aa, - 0x07af, 0x0003, 0x0003, 0x19a2, 0x19be, 0x1a0e, 0x0002, 0x07b2, - 0x07ba, 0x0006, 0x0003, 0x19f6, 0x1a0e, 0x19f6, 0x1a2a, 0x19f6, - 0x19f6, 0x0006, 0x0003, 0x1a8d, 0x1aa3, 0x1a8d, 0x1abf, 0x1a8d, - // Entry 23C0 - 23FF - 0x1a8d, 0x0003, 0x0000, 0x07c6, 0x07cb, 0x0003, 0x0003, 0x1aa3, - 0x1b1e, 0x1a0e, 0x0002, 0x07ce, 0x07d6, 0x0006, 0x0003, 0x19f6, - 0x1b3a, 0x19f6, 0x1b4e, 0x19f6, 0x19f6, 0x0006, 0x0003, 0x1a8d, - 0x1b6d, 0x1a8d, 0x1b81, 0x1a8d, 0x1a8d, 0x0003, 0x0000, 0x07e2, - 0x07e7, 0x0003, 0x0003, 0x1ba0, 0x1bbe, 0x1bdc, 0x0002, 0x07ea, - 0x07f2, 0x0006, 0x0003, 0x1bfa, 0x1bdc, 0x1bfa, 0x1c1b, 0x1c40, - 0x1bfa, 0x0006, 0x0003, 0x1c63, 0x1ba0, 0x1c63, 0x1c82, 0x1ca7, - 0x1c63, 0x0003, 0x0000, 0x07fe, 0x0803, 0x0003, 0x0003, 0x1ba0, - // Entry 2400 - 243F - 0x1bbe, 0x1bdc, 0x0002, 0x0806, 0x080e, 0x0006, 0x0003, 0x1cc8, - 0x1ce2, 0x1cc8, 0x1cf8, 0x1cc8, 0x1cc8, 0x0006, 0x0003, 0x1d19, - 0x1d31, 0x1d19, 0x1d47, 0x1d19, 0x1d19, 0x0003, 0x0000, 0x081a, - 0x081f, 0x0003, 0x0003, 0x1ba0, 0x1bbe, 0x1bdc, 0x0002, 0x0822, - 0x082a, 0x0006, 0x0003, 0x1cc8, 0x1ce2, 0x1cc8, 0x1cf8, 0x1cc8, - 0x1cc8, 0x0006, 0x0003, 0x1d19, 0x1d31, 0x1d19, 0x1d47, 0x1d19, - 0x1d19, 0x0003, 0x0000, 0x0836, 0x083b, 0x0003, 0x0003, 0x1d68, - 0x1d86, 0x1da4, 0x0002, 0x083e, 0x0846, 0x0006, 0x0003, 0x1dc2, - // Entry 2440 - 247F - 0x1da4, 0x1dc2, 0x1de3, 0x1e08, 0x1dc2, 0x0006, 0x0003, 0x1e2b, - 0x1d68, 0x1e2b, 0x1e4a, 0x1e6f, 0x1e2b, 0x0003, 0x0000, 0x0852, - 0x0857, 0x0003, 0x0003, 0x1d68, 0x1d86, 0x1da4, 0x0002, 0x085a, - 0x0862, 0x0006, 0x0003, 0x1e90, 0x1e90, 0x1e90, 0x1e90, 0x1e90, - 0x1e90, 0x0006, 0x0003, 0x1eaa, 0x1ec2, 0x1eaa, 0x1ed8, 0x1eaa, - 0x1eaa, 0x0003, 0x0000, 0x086e, 0x0873, 0x0003, 0x0003, 0x1d68, - 0x1d86, 0x1da4, 0x0002, 0x0876, 0x087e, 0x0006, 0x0003, 0x1e90, - 0x1ef9, 0x1e90, 0x1f0f, 0x1e90, 0x1e90, 0x0006, 0x0003, 0x1eaa, - // Entry 2480 - 24BF - 0x1ec2, 0x1eaa, 0x1ed8, 0x1eaa, 0x1eaa, 0x0003, 0x0000, 0x088a, - 0x088f, 0x0003, 0x0003, 0x1f30, 0x1f4a, 0x1f64, 0x0002, 0x0892, - 0x089a, 0x0006, 0x0003, 0x1f7e, 0x1f64, 0x1f7e, 0x1f9b, 0x1fbc, - 0x1f7e, 0x0006, 0x0003, 0x1fdb, 0x1f30, 0x1fdb, 0x1ff6, 0x2017, - 0x1fdb, 0x0003, 0x0000, 0x08a6, 0x08ab, 0x0003, 0x0003, 0x1f30, - 0x1f4a, 0x1f64, 0x0002, 0x08ae, 0x08b6, 0x0006, 0x0004, 0x0000, - 0x0016, 0x0000, 0x0016, 0x0000, 0x0000, 0x0006, 0x0004, 0x0033, - 0x0047, 0x0033, 0x0059, 0x0033, 0x0033, 0x0003, 0x0000, 0x08c2, - // Entry 24C0 - 24FF - 0x08c7, 0x0003, 0x0003, 0x1f30, 0x1f4a, 0x1f64, 0x0002, 0x08ca, - 0x08d2, 0x0006, 0x0004, 0x0000, 0x0016, 0x0000, 0x0016, 0x0000, - 0x0000, 0x0006, 0x0004, 0x0033, 0x0047, 0x0033, 0x0059, 0x0033, - 0x0033, 0x0003, 0x0000, 0x08de, 0x08e3, 0x0003, 0x0004, 0x0076, - 0x0090, 0x00aa, 0x0002, 0x08e6, 0x08ee, 0x0006, 0x0004, 0x00c4, - 0x00aa, 0x00c4, 0x00e1, 0x0102, 0x00c4, 0x0006, 0x0004, 0x0121, - 0x0076, 0x0121, 0x013c, 0x015d, 0x0121, 0x0003, 0x0000, 0x08fa, - 0x08ff, 0x0003, 0x0004, 0x0076, 0x0090, 0x00aa, 0x0002, 0x0902, - // Entry 2500 - 253F - 0x090a, 0x0006, 0x0004, 0x017a, 0x0190, 0x017a, 0x01a2, 0x017a, - 0x017a, 0x0006, 0x0004, 0x01bf, 0x01d3, 0x01bf, 0x01e5, 0x01bf, - 0x01bf, 0x0003, 0x0000, 0x0916, 0x091b, 0x0003, 0x0004, 0x0076, - 0x0090, 0x00aa, 0x0002, 0x091e, 0x0926, 0x0006, 0x0004, 0x017a, - 0x0190, 0x017a, 0x01a2, 0x017a, 0x017a, 0x0006, 0x0004, 0x01bf, - 0x01d3, 0x01bf, 0x01e5, 0x01bf, 0x01bf, 0x0003, 0x0000, 0x0932, - 0x0937, 0x0003, 0x0004, 0x0202, 0x021a, 0x0232, 0x0002, 0x093a, - 0x0942, 0x0006, 0x0004, 0x024a, 0x0232, 0x024a, 0x0263, 0x024a, - // Entry 2540 - 257F - 0x0282, 0x0006, 0x0004, 0x029d, 0x0202, 0x029d, 0x02b6, 0x029d, - 0x029d, 0x0003, 0x0000, 0x094e, 0x0953, 0x0003, 0x0004, 0x0202, - 0x021a, 0x0232, 0x0002, 0x0956, 0x095e, 0x0006, 0x0004, 0x02d5, - 0x02e9, 0x02d5, 0x02f9, 0x02d5, 0x02d5, 0x0006, 0x0004, 0x0314, - 0x0326, 0x0314, 0x0336, 0x0314, 0x0314, 0x0003, 0x0000, 0x096a, - 0x096f, 0x0003, 0x0004, 0x0202, 0x021a, 0x0232, 0x0002, 0x0972, - 0x097a, 0x0006, 0x0004, 0x02d5, 0x02e9, 0x02d5, 0x02f9, 0x02d5, - 0x02d5, 0x0006, 0x0004, 0x0314, 0x0326, 0x0314, 0x0336, 0x0314, - // Entry 2580 - 25BF - 0x0314, 0x0001, 0x0984, 0x0001, 0x0004, 0x0351, 0x0003, 0x098b, - 0x098e, 0x0992, 0x0001, 0x0004, 0x0357, 0x0002, 0x0004, 0xffff, - 0x0366, 0x0002, 0x0995, 0x099d, 0x0006, 0x0004, 0x0382, 0x0398, - 0x0382, 0x03b5, 0x03cb, 0x0382, 0x0006, 0x0004, 0x03e3, 0x03f7, - 0x03e3, 0x0412, 0x0426, 0x03e3, 0x0003, 0x09a9, 0x0000, 0x09ac, - 0x0001, 0x0004, 0x0357, 0x0002, 0x09af, 0x09b7, 0x0006, 0x0004, - 0x0382, 0x0398, 0x0382, 0x03b5, 0x03cb, 0x0382, 0x0006, 0x0004, - 0x03e3, 0x03f7, 0x03e3, 0x0412, 0x0426, 0x03e3, 0x0003, 0x09c3, - // Entry 25C0 - 25FF - 0x0000, 0x09c6, 0x0001, 0x0004, 0x0357, 0x0002, 0x09c9, 0x09d1, - 0x0006, 0x0004, 0x0382, 0x0398, 0x0382, 0x03b5, 0x03cb, 0x0382, - 0x0006, 0x0004, 0x03e3, 0x03f7, 0x03e3, 0x0412, 0x0426, 0x03e3, - 0x0003, 0x09dd, 0x09e0, 0x09e4, 0x0001, 0x0004, 0x043c, 0x0002, - 0x0004, 0xffff, 0x044b, 0x0002, 0x09e7, 0x09ef, 0x0006, 0x0004, - 0x0461, 0x0479, 0x0461, 0x0498, 0x04b0, 0x0461, 0x0006, 0x0004, - 0x04c8, 0x04de, 0x04c8, 0x04fb, 0x0511, 0x04c8, 0x0003, 0x09fb, - 0x0000, 0x09fe, 0x0001, 0x0004, 0x043c, 0x0002, 0x0a01, 0x0a09, - // Entry 2600 - 263F - 0x0006, 0x0004, 0x0461, 0x0479, 0x0461, 0x0498, 0x04b0, 0x0461, - 0x0006, 0x0004, 0x04c8, 0x04de, 0x04c8, 0x04fb, 0x0511, 0x04c8, - 0x0003, 0x0a15, 0x0000, 0x0a18, 0x0001, 0x0004, 0x043c, 0x0002, - 0x0a1b, 0x0a23, 0x0006, 0x0004, 0x0461, 0x0479, 0x0461, 0x0498, - 0x04b0, 0x0461, 0x0006, 0x0004, 0x04c8, 0x04de, 0x04c8, 0x04fb, - 0x0511, 0x04c8, 0x0003, 0x0a2f, 0x0a32, 0x0a36, 0x0001, 0x0004, - 0x0527, 0x0002, 0x0004, 0xffff, 0x0536, 0x0002, 0x0a39, 0x0a41, - 0x0006, 0x0004, 0x053f, 0x0557, 0x053f, 0x0576, 0x058e, 0x053f, - // Entry 2640 - 267F - 0x0006, 0x0004, 0x05a6, 0x05bc, 0x05a6, 0x05d9, 0x05ef, 0x05a6, - 0x0003, 0x0a4d, 0x0000, 0x0a50, 0x0001, 0x0004, 0x0527, 0x0002, - 0x0a53, 0x0a5b, 0x0006, 0x0004, 0x053f, 0x0557, 0x053f, 0x0576, - 0x058e, 0x053f, 0x0006, 0x0004, 0x05a6, 0x05bc, 0x05a6, 0x05d9, - 0x0605, 0x05a6, 0x0003, 0x0a67, 0x0000, 0x0a6a, 0x0001, 0x0004, - 0x0527, 0x0002, 0x0a6d, 0x0a75, 0x0006, 0x0004, 0x053f, 0x0557, - 0x053f, 0x0576, 0x058e, 0x053f, 0x0006, 0x0004, 0x05a6, 0x05bc, - 0x05a6, 0x05d9, 0x0605, 0x05a6, 0x0001, 0x0a7f, 0x0001, 0x0004, - // Entry 2680 - 26BF - 0x061b, 0x0004, 0x0a87, 0x0a8c, 0x0a91, 0x0aa0, 0x0003, 0x0000, - 0x1dc7, 0x2032, 0x2042, 0x0003, 0x0004, 0x062a, 0x0639, 0x0655, - 0x0002, 0x0000, 0x0a94, 0x0003, 0x0000, 0x0a9b, 0x0a98, 0x0001, - 0x0004, 0x0671, 0x0003, 0x0004, 0xffff, 0x069c, 0x06c5, 0x0002, - 0x0000, 0x0aa3, 0x0003, 0x0b3f, 0x0bd5, 0x0aa7, 0x0096, 0x0004, - 0x06ec, 0x070a, 0x072b, 0x074c, 0x0790, 0x0804, 0x0870, 0x0900, - 0x09d2, 0x0aa0, 0x0b57, 0x0bd3, 0x0c37, 0x0ca1, 0x0d11, 0x0d8c, - 0x0e0a, 0x0e72, 0x0eeb, 0x0f75, 0x1006, 0x1089, 0x1105, 0x116d, - // Entry 26C0 - 26FF - 0x11cf, 0x1221, 0x1237, 0x126d, 0x12bf, 0x12fa, 0x135a, 0x138c, - 0x13ea, 0x1442, 0x14a6, 0x1502, 0x1527, 0x1560, 0x15cd, 0x1631, - 0x1673, 0x1689, 0x16b2, 0x16f6, 0x174e, 0x178b, 0x1802, 0x185a, - 0x18af, 0x1928, 0x1998, 0x19da, 0x1a03, 0x1a5e, 0x1a7a, 0x1aaa, - 0x1af4, 0x1b13, 0x1b4e, 0x1bd1, 0x1c45, 0x1c5d, 0x1c98, 0x1d19, - 0x1d81, 0x1dc3, 0x1dd9, 0x1dfe, 0x1e23, 0x1e48, 0x1e6d, 0x1ea8, - 0x1f08, 0x1f70, 0x1fd8, 0x2042, 0x20c5, 0x20ea, 0x2125, 0x216b, - 0x21a3, 0x2207, 0x2225, 0x225b, 0x22b1, 0x22e5, 0x2333, 0x234d, - // Entry 2700 - 273F - 0x236b, 0x2387, 0x23c2, 0x2414, 0x2456, 0x2504, 0x25a7, 0x2619, - 0x265f, 0x2679, 0x268f, 0x26d2, 0x2764, 0x27de, 0x2840, 0x2854, - 0x28a9, 0x2973, 0x29e7, 0x2a47, 0x2a95, 0x2aab, 0x2af7, 0x2b5d, - 0x2bbb, 0x2c0d, 0x2c58, 0x2cce, 0x2ce8, 0x2d00, 0x2d1f, 0x2d39, - 0x2d6b, 0x2dd1, 0x2e20, 0x2e66, 0x2e7a, 0x2e96, 0x2eb5, 0x2ed6, - 0x2ef0, 0x2f08, 0x2f38, 0x2f82, 0x2f9e, 0x2fce, 0x3014, 0x3046, - 0x30a0, 0x30d2, 0x313e, 0x31ae, 0x31fc, 0x3238, 0x32b4, 0x330a, - 0x3322, 0x333f, 0x337f, 0x33ef, 0x1c31, 0x291f, 0x0094, 0x0004, - // Entry 2740 - 277F - 0xffff, 0xffff, 0xffff, 0xffff, 0x076f, 0x07ec, 0x0854, 0x08c2, - 0x0996, 0x0a64, 0x0b32, 0x0bbb, 0x0c23, 0x0c85, 0x0cf3, 0x0d67, - 0x0df0, 0x0e58, 0x0ec8, 0x0f4b, 0x0fe3, 0x1066, 0x10e9, 0x1157, - 0x11b3, 0xffff, 0xffff, 0x1251, 0xffff, 0x12d7, 0xffff, 0x1374, - 0x13d6, 0x142c, 0x1488, 0xffff, 0xffff, 0x1544, 0x15b2, 0x161d, - 0xffff, 0xffff, 0xffff, 0x16d7, 0xffff, 0x176c, 0x17e3, 0xffff, - 0x1890, 0x1907, 0x1984, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a92, - 0xffff, 0xffff, 0x1b2b, 0x1bae, 0xffff, 0xffff, 0x1c73, 0x1cfc, - // Entry 2780 - 27BF - 0x1d6d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e92, - 0x1eee, 0x1f56, 0x1fbe, 0x2026, 0xffff, 0xffff, 0x210f, 0xffff, - 0x2181, 0xffff, 0xffff, 0x2240, 0xffff, 0x22cb, 0xffff, 0xffff, - 0xffff, 0xffff, 0x23a6, 0xffff, 0x242c, 0x24d0, 0x2586, 0x2603, - 0xffff, 0xffff, 0xffff, 0x26a5, 0x2746, 0x27ba, 0xffff, 0xffff, - 0x2879, 0x2951, 0x29d1, 0x2a2d, 0xffff, 0xffff, 0x2adb, 0x2b49, - 0x2b9f, 0xffff, 0x2c2a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2d51, 0x2db9, 0x2e0a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 27C0 - 27FF - 0xffff, 0xffff, 0x2f20, 0xffff, 0xffff, 0x2fb8, 0xffff, 0x3026, - 0xffff, 0x30b8, 0x3120, 0x3194, 0xffff, 0x3216, 0x3296, 0xffff, - 0xffff, 0xffff, 0x3365, 0x33cd, 0x0094, 0x0004, 0xffff, 0xffff, - 0xffff, 0xffff, 0x07be, 0x082f, 0x0899, 0x094b, 0x0a1b, 0x0ae9, - 0x0b89, 0x0bf8, 0x0c5e, 0x0cca, 0x0d3c, 0x0dbe, 0x0e31, 0x0e9d, - 0x0f1b, 0x0fac, 0x1036, 0x10b9, 0x112e, 0x1190, 0x11f8, 0xffff, - 0xffff, 0x1296, 0xffff, 0x132a, 0xffff, 0x13b1, 0x140b, 0x1465, - 0x14d1, 0xffff, 0xffff, 0x1589, 0x15f5, 0x1652, 0xffff, 0xffff, - // Entry 2800 - 283F - 0xffff, 0x1722, 0xffff, 0x17b7, 0x182e, 0xffff, 0x18db, 0x1956, - 0x19b9, 0xffff, 0xffff, 0xffff, 0xffff, 0x1acf, 0xffff, 0xffff, - 0x1b7e, 0x1c01, 0xffff, 0xffff, 0x1cca, 0x1d43, 0x1da2, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ecb, 0x1f2f, 0x1f97, - 0x1fff, 0x207d, 0xffff, 0xffff, 0x2148, 0xffff, 0x21d2, 0xffff, - 0xffff, 0x2283, 0xffff, 0x230c, 0xffff, 0xffff, 0xffff, 0xffff, - 0x23eb, 0xffff, 0x2493, 0x2545, 0x25d5, 0x263c, 0xffff, 0xffff, - 0xffff, 0x270c, 0x278f, 0x280f, 0xffff, 0xffff, 0x28e4, 0x29a2, - // Entry 2840 - 287F - 0x2a0a, 0x2a6e, 0xffff, 0xffff, 0x2b20, 0x2b7e, 0x2be4, 0xffff, - 0x2c93, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d92, 0x2de7, - 0x2e43, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2f5d, 0xffff, 0xffff, 0x2ff1, 0xffff, 0x3073, 0xffff, 0x30f9, - 0x3169, 0x31d5, 0xffff, 0x3267, 0x32df, 0xffff, 0xffff, 0xffff, - 0x33a6, 0x341e, 0x0002, 0x0003, 0x0022, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0012, 0x0003, 0x001c, 0x0000, 0x0016, - // Entry 2880 - 28BF - 0x0002, 0x0000, 0x0019, 0x0001, 0x0003, 0x0377, 0x0002, 0x0000, - 0x001f, 0x0001, 0x0003, 0x03b0, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0027, 0x0002, 0x0000, 0x002a, 0x0003, 0x0003, 0x12b9, 0x2034, - 0x2046, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, - 0x0041, 0x0003, 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, - 0x0000, 0x000b, 0x0016, 0x001f, 0x002a, 0x0031, 0x003a, 0x0047, - 0x004e, 0x005b, 0x0068, 0x0075, 0x000d, 0x0003, 0xffff, 0x02a9, - // Entry 28C0 - 28FF - 0x021b, 0x021e, 0x0221, 0x021e, 0x02a9, 0x02a9, 0x0221, 0x0230, - 0x0221, 0x0227, 0x0239, 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, - 0x0016, 0x001f, 0x002a, 0x0031, 0x003a, 0x0047, 0x004e, 0x005b, - 0x0068, 0x0075, 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, - 0xffff, 0x0000, 0x000b, 0x0016, 0x001f, 0x002a, 0x0031, 0x003a, - 0x0047, 0x004e, 0x005b, 0x0068, 0x0075, 0x000d, 0x0003, 0xffff, - 0x02a9, 0x021b, 0x021e, 0x0221, 0x021e, 0x02a9, 0x02a9, 0x0221, - 0x0230, 0x0221, 0x0227, 0x0239, 0x000d, 0x0005, 0xffff, 0x0000, - // Entry 2900 - 293F - 0x000b, 0x0016, 0x001f, 0x002a, 0x0031, 0x003a, 0x0047, 0x004e, - 0x005b, 0x0068, 0x0075, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, - 0x001b, 0x0018, 0x001e, 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, - 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0001, - 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, - // Entry 2940 - 297F - 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, - 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x010a, - 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, - 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, - 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, - 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, - 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, 0xffff, 0x00a6, - 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, - // Entry 2980 - 29BF - 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, - 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, - 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, - 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, - 0x0138, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, - 0x0041, 0x0003, 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, - 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, - // Entry 29C0 - 29FF - 0x00ff, 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, - 0x2060, 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, - 0x2066, 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, - 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, - 0x0120, 0x0138, 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, - 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, - 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, - 0x0233, 0x2060, 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, - // Entry 2A00 - 2A3F - 0x0221, 0x2066, 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, - 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, - 0x014e, 0x0120, 0x0138, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, - 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, - 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2A40 - 2A7F - 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, - 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, - 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, - 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, - 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, - 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, - 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, - 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, 0xffff, 0x00a6, - // Entry 2A80 - 2ABF - 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, - 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, - 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, - 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, - 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, - 0x0138, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0010, 0x0002, 0x0013, 0x0036, 0x0001, 0x0015, 0x000b, 0x0000, - // Entry 2AC0 - 2AFF - 0x0000, 0x0000, 0x0021, 0x0027, 0x002d, 0x0030, 0x0000, 0x0024, - 0x002a, 0x0033, 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x030a, - 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, - 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x022a, 0x0002, - 0x0039, 0x005a, 0x000b, 0x0000, 0x0000, 0x0000, 0x0045, 0x004b, - 0x0051, 0x0054, 0x0000, 0x0048, 0x004e, 0x0057, 0x0001, 0x0003, - 0x0354, 0x0001, 0x0003, 0x030a, 0x0001, 0x0003, 0x0316, 0x0001, - 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, 0x0003, 0x033e, - // Entry 2B00 - 2B3F - 0x0001, 0x0003, 0x036c, 0x000b, 0x0000, 0x0000, 0x0000, 0x0066, - 0x006c, 0x0072, 0x0075, 0x0000, 0x0069, 0x006f, 0x0078, 0x0001, - 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, 0x0003, 0x0316, - 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, 0x0003, - 0x033e, 0x0001, 0x0003, 0x036c, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, - 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0078, 0x0002, - 0x0016, 0x0047, 0x0003, 0x001a, 0x0029, 0x0038, 0x000d, 0x0003, - // Entry 2B40 - 2B7F - 0xffff, 0x018e, 0x0199, 0x2069, 0x01af, 0x2072, 0x01c3, 0x2079, - 0x2086, 0x208d, 0x2098, 0x20a5, 0x20b0, 0x000d, 0x0003, 0xffff, - 0x0218, 0x021b, 0x021e, 0x0221, 0x021e, 0x0227, 0x022a, 0x022d, - 0x2060, 0x0233, 0x0236, 0x0239, 0x000d, 0x0003, 0xffff, 0x018e, - 0x0199, 0x2069, 0x01af, 0x2072, 0x01c3, 0x2079, 0x2086, 0x208d, - 0x2098, 0x20a5, 0x20b0, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, - 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, 0x01af, 0x2072, 0x01c3, - 0x2079, 0x2086, 0x208d, 0x2098, 0x20a5, 0x20b0, 0x000d, 0x0003, - // Entry 2B80 - 2BBF - 0xffff, 0x0218, 0x021b, 0x021e, 0x0221, 0x021e, 0x0227, 0x022a, - 0x022d, 0x2060, 0x0233, 0x0236, 0x0239, 0x000d, 0x0003, 0xffff, - 0x018e, 0x0199, 0x2069, 0x01af, 0x2072, 0x01c3, 0x2079, 0x2086, - 0x208d, 0x2098, 0x20a5, 0x20b0, 0x0004, 0x0086, 0x0080, 0x007d, - 0x0083, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, - 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, 0x0014, 0x0023, - // Entry 2BC0 - 2BFF - 0x0032, 0x000d, 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, 0x20bb, - 0x01ba, 0x01c3, 0x01ce, 0x20c6, 0x20cf, 0x2098, 0x20da, 0x20e7, - 0x000d, 0x0003, 0xffff, 0x0218, 0x021b, 0x021e, 0x20f2, 0x0224, - 0x0227, 0x022a, 0x022d, 0x2060, 0x0233, 0x0236, 0x0239, 0x000d, - 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, 0x20bb, 0x01ba, 0x01c3, - 0x01ce, 0x20c6, 0x20cf, 0x2098, 0x20da, 0x20e7, 0x0003, 0x0045, - 0x0054, 0x0063, 0x000d, 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, - 0x20bb, 0x01ba, 0x01c3, 0x01ce, 0x20c6, 0x20cf, 0x2098, 0x20da, - // Entry 2C00 - 2C3F - 0x20e7, 0x000d, 0x0003, 0xffff, 0x0218, 0x021b, 0x021e, 0x20f2, - 0x0224, 0x0227, 0x022a, 0x022d, 0x2060, 0x0233, 0x0236, 0x0239, - 0x000d, 0x0003, 0xffff, 0x018e, 0x0199, 0x2069, 0x20bb, 0x01ba, - 0x01c3, 0x01ce, 0x20c6, 0x20cf, 0x2098, 0x20da, 0x20e7, 0x0001, - 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, - 0x0014, 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, - 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, - // Entry 2C40 - 2C7F - 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, - 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, - 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, - 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, - 0x0003, 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, 0xffff, 0x00a6, - 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, - 0x014e, 0x0120, 0x0138, 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, - 0x2063, 0x0227, 0x0221, 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, - // Entry 2C80 - 2CBF - 0x2066, 0x0233, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, - 0x00d0, 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, - 0x0138, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0010, 0x0002, 0x0013, 0x0036, 0x0001, 0x0015, 0x000b, 0x0000, - 0x0000, 0x0000, 0x0021, 0x0027, 0x002d, 0x0030, 0x0000, 0x0024, - 0x002a, 0x0033, 0x0001, 0x0003, 0x0354, 0x0001, 0x0003, 0x030a, - 0x0001, 0x0003, 0x0316, 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, - // Entry 2CC0 - 2CFF - 0x0333, 0x0001, 0x0003, 0x033e, 0x0001, 0x0003, 0x022a, 0x0002, - 0x0039, 0x005a, 0x000b, 0x0000, 0x0000, 0x0000, 0x0045, 0x004b, - 0x0051, 0x0054, 0x0000, 0x0048, 0x004e, 0x0057, 0x0001, 0x0003, - 0x0354, 0x0001, 0x0003, 0x030a, 0x0001, 0x0003, 0x0316, 0x0001, - 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, 0x0003, 0x033e, - 0x0001, 0x0003, 0x036c, 0x000b, 0x0000, 0x0000, 0x0000, 0x0066, - 0x006c, 0x0072, 0x0075, 0x0000, 0x0069, 0x006f, 0x0078, 0x0001, - 0x0003, 0x0354, 0x0001, 0x0003, 0x035f, 0x0001, 0x0003, 0x0316, - // Entry 2D00 - 2D3F - 0x0001, 0x0003, 0x0321, 0x0001, 0x0003, 0x0333, 0x0001, 0x0003, - 0x033e, 0x0001, 0x0003, 0x036c, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0001, - 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, 0x0014, 0x0023, 0x0032, - 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, - 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, 0x000d, - 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, 0x0227, 0x0221, 0x029d, - 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, 0x0233, 0x000d, 0x0005, - // Entry 2D40 - 2D7F - 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, 0x00f1, - 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, 0x0003, 0x0045, 0x0054, - 0x0063, 0x000d, 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, - 0x00db, 0x00e4, 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, - 0x000d, 0x0003, 0xffff, 0x0233, 0x2060, 0x2063, 0x0227, 0x0221, - 0x029d, 0x2066, 0x2063, 0x0221, 0x2066, 0x2066, 0x0233, 0x000d, - 0x0005, 0xffff, 0x00a6, 0x00be, 0x00c7, 0x00d0, 0x00db, 0x00e4, - 0x00f1, 0x00fa, 0x00ff, 0x014e, 0x0120, 0x0138, 0x0001, 0x0002, - // Entry 2D80 - 2DBF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0001, 0x000d, 0x0002, 0x0010, 0x0041, 0x0003, 0x0014, - 0x0023, 0x0032, 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, 0x0164, - 0x001f, 0x016d, 0x0031, 0x003a, 0x0047, 0x004e, 0x0174, 0x0181, - 0x0075, 0x000d, 0x0003, 0xffff, 0x02a9, 0x021b, 0x021e, 0x0221, - 0x021e, 0x02a9, 0x02a9, 0x0221, 0x0230, 0x0221, 0x0227, 0x0239, - 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, 0x0164, 0x001f, 0x016d, - 0x0031, 0x003a, 0x0047, 0x004e, 0x0174, 0x0181, 0x0075, 0x0003, - // Entry 2DC0 - 2DFF - 0x0045, 0x0054, 0x0063, 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, - 0x0164, 0x001f, 0x016d, 0x0031, 0x003a, 0x0047, 0x004e, 0x0174, - 0x0181, 0x0075, 0x000d, 0x0003, 0xffff, 0x02a9, 0x021b, 0x021e, - 0x0221, 0x021e, 0x02a9, 0x02a9, 0x0221, 0x0230, 0x0221, 0x0227, - 0x0239, 0x000d, 0x0005, 0xffff, 0x0000, 0x000b, 0x0164, 0x001f, - 0x016d, 0x0031, 0x003a, 0x0047, 0x004e, 0x0174, 0x0181, 0x0075, - 0x0003, 0x0004, 0x00b0, 0x0126, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0025, 0x0006, 0x0000, 0x0000, - // Entry 2E00 - 2E3F - 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, - 0x001f, 0x0001, 0x0005, 0x018e, 0x0001, 0x0005, 0x01a0, 0x0001, - 0x0005, 0x01ac, 0x0001, 0x0005, 0x01b6, 0x0007, 0x002d, 0x0051, - 0x0069, 0x0076, 0x0000, 0x008e, 0x009f, 0x0001, 0x002f, 0x0003, - 0x0033, 0x0000, 0x0042, 0x000d, 0x0005, 0xffff, 0x01c2, 0x01cf, - 0x01e2, 0x01f2, 0x0205, 0x020c, 0x0216, 0x0226, 0x022d, 0x023d, - 0x024d, 0x0257, 0x000d, 0x0005, 0xffff, 0x0264, 0x027d, 0x01e2, - 0x01f2, 0x0205, 0x020c, 0x0216, 0x029c, 0x02ac, 0x02cb, 0x02e1, - // Entry 2E40 - 2E7F - 0x02f7, 0x0001, 0x0053, 0x0003, 0x0057, 0x0000, 0x0060, 0x0007, - 0x0005, 0x0310, 0x031a, 0x0324, 0x0334, 0x033e, 0x0357, 0x0367, - 0x0007, 0x0005, 0x0371, 0x0384, 0x0397, 0x03b0, 0x03c3, 0x03e5, - 0x03fe, 0x0001, 0x006b, 0x0003, 0x0000, 0x0000, 0x006f, 0x0005, - 0x0005, 0xffff, 0x0411, 0x0431, 0x045a, 0x047d, 0x0001, 0x0078, - 0x0003, 0x007c, 0x0000, 0x0085, 0x0002, 0x007f, 0x0082, 0x0001, - 0x0005, 0x04a0, 0x0001, 0x0005, 0x04bc, 0x0002, 0x0088, 0x008b, - 0x0001, 0x0005, 0x04a0, 0x0001, 0x0005, 0x04bc, 0x0004, 0x009c, - // Entry 2E80 - 2EBF - 0x0096, 0x0093, 0x0099, 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, - 0x04e2, 0x0001, 0x0005, 0x04ec, 0x0001, 0x0005, 0x04f4, 0x0004, - 0x00ad, 0x00a7, 0x00a4, 0x00aa, 0x0001, 0x0005, 0x04fa, 0x0001, - 0x0005, 0x0509, 0x0001, 0x0005, 0x0515, 0x0001, 0x0005, 0x051f, - 0x0040, 0x00f1, 0x0000, 0x0000, 0x00f6, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x00fb, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0105, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2EC0 - 2EFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0112, - 0x0000, 0x0000, 0x0117, 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, - 0x0121, 0x0001, 0x00f3, 0x0001, 0x0005, 0x0527, 0x0001, 0x00f8, - 0x0001, 0x0005, 0x0531, 0x0001, 0x00fd, 0x0001, 0x0005, 0x053b, - 0x0001, 0x0102, 0x0001, 0x0005, 0x0545, 0x0002, 0x0108, 0x010b, - 0x0001, 0x0005, 0x0558, 0x0005, 0x0005, 0x056f, 0x057c, 0x0586, - // Entry 2F00 - 2F3F - 0x0562, 0x0596, 0x0001, 0x0114, 0x0001, 0x0005, 0x05a9, 0x0001, - 0x0119, 0x0001, 0x0005, 0x05b9, 0x0001, 0x011e, 0x0001, 0x0005, - 0x05c9, 0x0001, 0x0123, 0x0001, 0x0005, 0x05df, 0x0004, 0x0000, - 0x0000, 0x0000, 0x012b, 0x0002, 0x0176, 0x012e, 0x0003, 0x0000, - 0x0000, 0x0132, 0x0042, 0x0005, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2F40 - 2F7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x05f5, 0x0003, 0x0000, - 0x0000, 0x017a, 0x0042, 0x0005, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2F80 - 2FBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0618, 0x0002, 0x0003, - 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2FC0 - 2FFF - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, - 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, - 0x063a, 0x063e, 0x0642, 0x0646, 0x064a, 0x064e, 0x0652, 0x0656, - 0x065a, 0x065e, 0x0662, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, - 0x0677, 0x067d, 0x0646, 0x0684, 0x0689, 0x068f, 0x0696, 0x069f, - // Entry 3000 - 303F - 0x06a6, 0x06ae, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, - 0x1e5d, 0x204f, 0x2051, 0x1e5f, 0x2051, 0x1e5d, 0x1e5d, 0x1e5f, - 0x04d9, 0x1e61, 0x1e63, 0x2053, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, 0x06b6, 0x06ba, 0x06be, - 0x06c2, 0x06c6, 0x06ca, 0x06ce, 0x0007, 0x0005, 0x06d2, 0x06db, - 0x06e4, 0x06ec, 0x06f5, 0x06fe, 0x0705, 0x0002, 0x0000, 0x0082, - 0x0007, 0x0000, 0x1e5d, 0x1e5d, 0x1e5d, 0x1e5d, 0x1e5f, 0x2055, - 0x1e5d, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, - // Entry 3040 - 307F - 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0005, - 0xffff, 0x071a, 0x0721, 0x0728, 0x072f, 0x0001, 0x00a1, 0x0003, - 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0005, - 0x0736, 0x0001, 0x0005, 0x0740, 0x0002, 0x00b1, 0x00b4, 0x0001, - 0x0005, 0x0736, 0x0001, 0x0005, 0x0740, 0x0003, 0x00c1, 0x0000, - 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0005, 0x0749, 0x075b, 0x0001, - 0x00c3, 0x0002, 0x0005, 0x076d, 0x0770, 0x0004, 0x00d5, 0x00cf, - 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, - // Entry 3080 - 30BF - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, - 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 30C0 - 30FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, - 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, - 0x0001, 0x012c, 0x0001, 0x0005, 0x0782, 0x0001, 0x0131, 0x0001, - 0x0005, 0x0787, 0x0001, 0x0136, 0x0001, 0x0005, 0x078d, 0x0001, - 0x013b, 0x0001, 0x0005, 0x0793, 0x0002, 0x0141, 0x0144, 0x0001, - 0x0005, 0x079a, 0x0003, 0x0005, 0x07a0, 0x07a6, 0x07ab, 0x0001, - 0x014b, 0x0001, 0x0005, 0x07b0, 0x0001, 0x0150, 0x0001, 0x0005, - // Entry 3100 - 313F - 0x07c0, 0x0001, 0x0155, 0x0001, 0x0005, 0x07cf, 0x0001, 0x015a, - 0x0001, 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, 0x0005, 0x07db, - 0x0001, 0x0164, 0x0001, 0x0005, 0x07e4, 0x0003, 0x0004, 0x084f, - 0x0c79, 0x0012, 0x0017, 0x0055, 0x0000, 0x01e2, 0x0213, 0x0000, - 0x029d, 0x02c8, 0x0450, 0x047b, 0x051e, 0x0000, 0x0000, 0x0000, - 0x0000, 0x05c1, 0x0805, 0x080e, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0020, 0x0033, 0x0000, 0x0044, 0x0003, 0x0029, 0x002e, - 0x0024, 0x0001, 0x0026, 0x0001, 0x0005, 0x07f1, 0x0001, 0x002b, - // Entry 3140 - 317F - 0x0001, 0x0005, 0x07fd, 0x0001, 0x0030, 0x0001, 0x0005, 0x07fd, - 0x0004, 0x0041, 0x003b, 0x0038, 0x003e, 0x0001, 0x0005, 0x0800, - 0x0001, 0x0005, 0x0817, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0005, - 0x0827, 0x0004, 0x0052, 0x004c, 0x0049, 0x004f, 0x0001, 0x0005, - 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x000a, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00b6, 0x00ca, 0x0002, 0x0063, 0x0094, - 0x0003, 0x0067, 0x0076, 0x0085, 0x000d, 0x0005, 0xffff, 0x084f, - // Entry 3180 - 31BF - 0x0855, 0x085b, 0x0861, 0x0867, 0x086d, 0x0873, 0x0879, 0x087f, - 0x0885, 0x088c, 0x0893, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, - 0x0048, 0x004b, 0x000d, 0x0005, 0xffff, 0x084f, 0x0855, 0x085b, - 0x0861, 0x0867, 0x086d, 0x0873, 0x0879, 0x087f, 0x0885, 0x088c, - 0x0893, 0x0003, 0x0000, 0x0098, 0x00a7, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, - 0x0043, 0x0045, 0x0048, 0x004b, 0x000d, 0x0005, 0xffff, 0x089a, - // Entry 31C0 - 31FF - 0x08a0, 0x08a6, 0x08ac, 0x08b2, 0x08b8, 0x08be, 0x08c4, 0x08ca, - 0x08d0, 0x08d7, 0x08de, 0x0003, 0x00ba, 0x00c5, 0x00bf, 0x0003, - 0x0000, 0x004e, 0x0055, 0x2057, 0x0004, 0x0005, 0xffff, 0xffff, - 0xffff, 0x08e5, 0x0003, 0x0000, 0x004e, 0x0055, 0x2057, 0x0006, - 0x00d1, 0x0104, 0x0000, 0x0149, 0x016a, 0x01af, 0x0001, 0x00d3, - 0x0003, 0x00d7, 0x00e6, 0x00f5, 0x000d, 0x0005, 0xffff, 0x08ed, - 0x08f2, 0x08f7, 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, - 0x0927, 0x092d, 0x0933, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, - // Entry 3200 - 323F - 0x08f7, 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, - 0x092d, 0x0933, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, 0x08f7, - 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, 0x092d, - 0x0933, 0x0001, 0x0106, 0x0003, 0x0000, 0x0000, 0x010a, 0x003d, - 0x0005, 0xffff, 0x0939, 0x094d, 0x0960, 0x0973, 0x0986, 0x099d, - 0x09b3, 0x09c9, 0x09dc, 0x09ef, 0x0a02, 0x0a17, 0x0a2b, 0x0a3d, - 0x0a4e, 0x0a63, 0x0a78, 0x0a8e, 0x0aa3, 0x0ab9, 0x0acc, 0x0ae0, - 0x0af4, 0x0b07, 0x0b19, 0x0b2d, 0x0b40, 0x0b54, 0x0b68, 0x0b7e, - // Entry 3240 - 327F - 0x0b93, 0x0baa, 0x0bbe, 0x0bd0, 0x0be2, 0x0bf7, 0x0c0b, 0x0c1e, - 0x0c30, 0x0c44, 0x0c58, 0x0c6f, 0x0c85, 0x0c9a, 0x0cac, 0x0cc0, - 0x0cd4, 0x0ce8, 0x0cfb, 0x0d0e, 0x0d20, 0x0d35, 0x0d4a, 0x0d5f, - 0x0d73, 0x0d8a, 0x0d9e, 0x0db1, 0x0dc4, 0x0dd8, 0x0001, 0x014b, - 0x0003, 0x0000, 0x0000, 0x014f, 0x0019, 0x0005, 0xffff, 0x0deb, - 0x0e02, 0x0e11, 0x0e2a, 0x0e42, 0x0e54, 0x0e65, 0x0e79, 0x0e88, - 0x0e99, 0x0eac, 0x0ebb, 0x0ec6, 0x0edb, 0x0eeb, 0x0ef9, 0x0f0f, - 0x0f1c, 0x0f2e, 0x0f44, 0x0f53, 0x0f5e, 0x0f74, 0x0f83, 0x0001, - // Entry 3280 - 32BF - 0x016c, 0x0003, 0x0000, 0x0000, 0x0170, 0x003d, 0x0005, 0xffff, - 0x0939, 0x094d, 0x0960, 0x0973, 0x0986, 0x099d, 0x09b3, 0x09c9, - 0x09dc, 0x09ef, 0x0a02, 0x0a17, 0x0a2b, 0x0a3d, 0x0a4e, 0x0a63, - 0x0a78, 0x0a8e, 0x0aa3, 0x0ab9, 0x0acc, 0x0ae0, 0x0af4, 0x0b07, - 0x0b19, 0x0b2d, 0x0b40, 0x0b54, 0x0b68, 0x0b7e, 0x0b93, 0x0baa, - 0x0bbe, 0x0bd0, 0x0be2, 0x0bf7, 0x0c0b, 0x0c1e, 0x0c30, 0x0c44, - 0x0c58, 0x0c6f, 0x0c85, 0x0c9a, 0x0cac, 0x0cc0, 0x0cd4, 0x0ce8, - 0x0cfb, 0x0d0e, 0x0d20, 0x0d35, 0x0d4a, 0x0d5f, 0x0d73, 0x0d8a, - // Entry 32C0 - 32FF - 0x0d9e, 0x0db1, 0x0dc4, 0x0dd8, 0x0001, 0x01b1, 0x0003, 0x01b5, - 0x01c4, 0x01d3, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, 0x08f7, - 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, 0x092d, - 0x0933, 0x000d, 0x0005, 0xffff, 0x0f8e, 0x08f2, 0x0f92, 0x0f96, - 0x0f9a, 0x0f9e, 0x0fa2, 0x0fa6, 0x0faa, 0x0fae, 0x0fb2, 0x0fb6, - 0x000d, 0x0005, 0xffff, 0x0fba, 0x0fbf, 0x0fc4, 0x0fca, 0x0fd1, - 0x0fd9, 0x0fe1, 0x0fe9, 0x0fef, 0x0ff4, 0x0ffa, 0x1000, 0x000a, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3300 - 333F - 0x0000, 0x01ed, 0x0001, 0x01ef, 0x0001, 0x01f1, 0x0003, 0x01f5, - 0x0000, 0x0204, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, 0x08f7, - 0x08fd, 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, 0x092d, - 0x0933, 0x000d, 0x0005, 0xffff, 0x08ed, 0x08f2, 0x08f7, 0x08fd, - 0x0904, 0x090c, 0x0914, 0x091c, 0x0922, 0x0927, 0x092d, 0x0933, - 0x0008, 0x021c, 0x0000, 0x0000, 0x0000, 0x0287, 0x0000, 0x0000, - 0x9006, 0x0002, 0x021f, 0x0253, 0x0003, 0x0223, 0x0233, 0x0243, - 0x000e, 0x0005, 0xffff, 0x1006, 0x100a, 0x100e, 0x1012, 0x1016, - // Entry 3340 - 337F - 0x101a, 0x101e, 0x1022, 0x1026, 0x102a, 0x102e, 0x1032, 0x1036, - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, - 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, - 0x000e, 0x0005, 0xffff, 0x103a, 0x1046, 0x1050, 0x105a, 0x1064, - 0x106b, 0x1076, 0x1081, 0x108b, 0x1095, 0x109d, 0x10a7, 0x10b2, - 0x0003, 0x0257, 0x0267, 0x0277, 0x000e, 0x0005, 0xffff, 0x1006, - 0x100a, 0x100e, 0x1012, 0x1016, 0x101a, 0x101e, 0x1022, 0x1026, - 0x102a, 0x102e, 0x1032, 0x1036, 0x000e, 0x0000, 0xffff, 0x0033, - // Entry 3380 - 33BF - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, - 0x0045, 0x0048, 0x004b, 0x0422, 0x000e, 0x0000, 0xffff, 0x042f, - 0x0438, 0x043f, 0x0445, 0x044c, 0x0450, 0x0458, 0x0460, 0x0467, - 0x046e, 0x0473, 0x0479, 0x0481, 0x0003, 0x0291, 0x0297, 0x028b, - 0x0001, 0x028d, 0x0002, 0x0005, 0x10bd, 0x10d6, 0x0001, 0x0293, - 0x0002, 0x0005, 0x10f2, 0x10f8, 0x0001, 0x0299, 0x0002, 0x0005, - 0x10fe, 0x1101, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x02a6, 0x0000, 0x02b7, 0x0004, 0x02b4, 0x02ae, 0x02ab, 0x02b1, - // Entry 33C0 - 33FF - 0x0001, 0x0005, 0x0800, 0x0001, 0x0005, 0x0817, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0005, 0x0827, 0x0004, 0x02c5, 0x02bf, 0x02bc, - 0x02c2, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, 0x0008, 0x02d1, 0x0336, - 0x038d, 0x03c2, 0x0403, 0x041d, 0x042e, 0x043f, 0x0002, 0x02d4, - 0x0305, 0x0003, 0x02d8, 0x02e7, 0x02f6, 0x000d, 0x0005, 0xffff, - 0x1104, 0x1108, 0x110c, 0x1110, 0x1114, 0x1118, 0x111c, 0x1120, - 0x1124, 0x1128, 0x112c, 0x1130, 0x000d, 0x0005, 0xffff, 0x1134, - // Entry 3400 - 343F - 0x1136, 0x1138, 0x113a, 0x1138, 0x1134, 0x1134, 0x113a, 0x113c, - 0x113e, 0x1140, 0x113a, 0x000d, 0x0005, 0xffff, 0x1142, 0x114c, - 0x1157, 0x1160, 0x116a, 0x1172, 0x117a, 0x1184, 0x118f, 0x119c, - 0x11a8, 0x11b3, 0x0003, 0x0309, 0x0318, 0x0327, 0x000d, 0x0005, - 0xffff, 0x11bf, 0x063a, 0x11c3, 0x11c7, 0x11cb, 0x11cf, 0x11d3, - 0x0652, 0x11d7, 0x11db, 0x11df, 0x11e3, 0x000d, 0x0005, 0xffff, - 0x1134, 0x1136, 0x1138, 0x113a, 0x1138, 0x1134, 0x1134, 0x113a, - 0x113c, 0x113e, 0x1140, 0x113a, 0x000d, 0x0005, 0xffff, 0x11e7, - // Entry 3440 - 347F - 0x11ee, 0x11f6, 0x11fc, 0x1202, 0x1207, 0x120c, 0x1213, 0x121a, - 0x1224, 0x122c, 0x1234, 0x0002, 0x0339, 0x0363, 0x0005, 0x033f, - 0x0348, 0x035a, 0x0000, 0x0351, 0x0007, 0x0005, 0x123c, 0x1240, - 0x110c, 0x1244, 0x1249, 0x124d, 0x1251, 0x0007, 0x0000, 0x2053, - 0x2064, 0x2066, 0x2066, 0x2068, 0x1edb, 0x206a, 0x0007, 0x0005, - 0x1256, 0x1259, 0x125c, 0x125f, 0x1262, 0x1265, 0x1268, 0x0007, - 0x0005, 0x126c, 0x1274, 0x127b, 0x1282, 0x128d, 0x1294, 0x129c, - 0x0005, 0x0369, 0x0372, 0x0384, 0x0000, 0x037b, 0x0007, 0x0005, - // Entry 3480 - 34BF - 0x123c, 0x1240, 0x110c, 0x1244, 0x1249, 0x124d, 0x1251, 0x0007, - 0x0000, 0x2053, 0x2064, 0x2066, 0x2066, 0x2068, 0x1edb, 0x206a, - 0x0007, 0x0005, 0x1256, 0x1259, 0x125c, 0x125f, 0x1262, 0x1265, - 0x1268, 0x0007, 0x0005, 0x126c, 0x1274, 0x127b, 0x1282, 0x128d, - 0x1294, 0x129c, 0x0002, 0x0390, 0x03a9, 0x0003, 0x0394, 0x039b, - 0x03a2, 0x0005, 0x0005, 0xffff, 0x12a4, 0x12a7, 0x12aa, 0x12ad, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, - 0x0005, 0xffff, 0x12b0, 0x12be, 0x12cb, 0x12d9, 0x0003, 0x03ad, - // Entry 34C0 - 34FF - 0x03b4, 0x03bb, 0x0005, 0x0005, 0xffff, 0x12a4, 0x12a7, 0x12aa, - 0x12ad, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x0005, 0x0005, 0xffff, 0x12b0, 0x12be, 0x12cb, 0x12d9, 0x0002, - 0x03c5, 0x03e4, 0x0003, 0x03c9, 0x03d2, 0x03db, 0x0002, 0x03cc, - 0x03cf, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, - 0x03d5, 0x03d8, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0005, 0x12e6, - 0x0002, 0x03de, 0x03e1, 0x0001, 0x0005, 0x12e8, 0x0001, 0x0005, - 0x12f6, 0x0003, 0x03e8, 0x03f1, 0x03fa, 0x0002, 0x03eb, 0x03ee, - // Entry 3500 - 353F - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x03f4, - 0x03f7, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0005, 0x12e6, 0x0002, - 0x03fd, 0x0400, 0x0001, 0x0005, 0x1302, 0x0001, 0x0005, 0x130a, - 0x0003, 0x0412, 0x0000, 0x0407, 0x0002, 0x040a, 0x040e, 0x0002, - 0x0005, 0x1310, 0x133f, 0x0002, 0x0005, 0x1322, 0x1352, 0x0002, - 0x0415, 0x0419, 0x0002, 0x0005, 0x1361, 0x136a, 0x0002, 0x0005, - 0x1366, 0x136f, 0x0004, 0x042b, 0x0425, 0x0422, 0x0428, 0x0001, - 0x0005, 0x1372, 0x0001, 0x0005, 0x1386, 0x0001, 0x0001, 0x1fb9, - // Entry 3540 - 357F - 0x0001, 0x0005, 0x1394, 0x0004, 0x043c, 0x0436, 0x0433, 0x0439, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x044d, 0x0447, 0x0444, - 0x044a, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0452, 0x0002, - 0x0455, 0x0468, 0x0002, 0x0000, 0x0458, 0x000e, 0x0000, 0x206c, - 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, - 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, 0x0002, 0x0000, 0x046b, - // Entry 3580 - 35BF - 0x000e, 0x0000, 0x206f, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, - 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x0422, - 0x0008, 0x0484, 0x0000, 0x0000, 0x0000, 0x04e9, 0x04fc, 0x0000, - 0x050d, 0x0002, 0x0487, 0x04b8, 0x0003, 0x048b, 0x049a, 0x04a9, - 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, - 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, - 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x000d, 0x0005, - // Entry 35C0 - 35FF - 0xffff, 0x139b, 0x13a6, 0x13b2, 0x13be, 0x13c9, 0x13d4, 0x13de, - 0x13e9, 0x13f4, 0x1403, 0x140c, 0x1415, 0x0003, 0x04bc, 0x04cb, - 0x04da, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, - 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, - 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, 0x004b, 0x000d, - 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, - 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x0003, 0x04f2, - // Entry 3600 - 363F - 0x04f7, 0x04ed, 0x0001, 0x04ef, 0x0001, 0x0000, 0x0601, 0x0001, - 0x04f4, 0x0001, 0x0000, 0x0601, 0x0001, 0x04f9, 0x0001, 0x0000, - 0x0601, 0x0004, 0x050a, 0x0504, 0x0501, 0x0507, 0x0001, 0x0005, - 0x0800, 0x0001, 0x0005, 0x0817, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0005, 0x0827, 0x0004, 0x051b, 0x0515, 0x0512, 0x0518, 0x0001, - 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0000, 0x03c6, 0x0008, 0x0527, 0x0000, 0x0000, 0x0000, - 0x058c, 0x059f, 0x0000, 0x05b0, 0x0002, 0x052a, 0x055b, 0x0003, - // Entry 3640 - 367F - 0x052e, 0x053d, 0x054c, 0x000d, 0x0000, 0xffff, 0x0606, 0x060b, - 0x0610, 0x0617, 0x061f, 0x0626, 0x062e, 0x0633, 0x0638, 0x063d, - 0x0643, 0x064d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0048, - 0x004b, 0x000d, 0x0005, 0xffff, 0x1421, 0x142d, 0x1436, 0x1442, - 0x144f, 0x145b, 0x1468, 0x1471, 0x147d, 0x1488, 0x1493, 0x14a5, - 0x0003, 0x055f, 0x056e, 0x057d, 0x000d, 0x0000, 0xffff, 0x0606, - 0x060b, 0x0610, 0x0617, 0x061f, 0x0626, 0x062e, 0x0633, 0x0638, - // Entry 3680 - 36BF - 0x063d, 0x0643, 0x064d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, - 0x0048, 0x004b, 0x000d, 0x0000, 0xffff, 0x0657, 0x0660, 0x0666, - 0x066f, 0x0679, 0x0682, 0x068c, 0x0692, 0x069b, 0x06a3, 0x06ab, - 0x06ba, 0x0003, 0x0595, 0x059a, 0x0590, 0x0001, 0x0592, 0x0001, - 0x0000, 0x06c8, 0x0001, 0x0597, 0x0001, 0x0000, 0x06c8, 0x0001, - 0x059c, 0x0001, 0x0000, 0x06c8, 0x0004, 0x05ad, 0x05a7, 0x05a4, - 0x05aa, 0x0001, 0x0005, 0x0800, 0x0001, 0x0005, 0x0817, 0x0001, - // Entry 36C0 - 36FF - 0x0001, 0x1f98, 0x0001, 0x0005, 0x0827, 0x0004, 0x05be, 0x05b8, - 0x05b5, 0x05bb, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x05ca, 0x0000, 0x0000, 0x07f7, 0x0003, - 0x06be, 0x07ae, 0x05ce, 0x0001, 0x05d0, 0x00ec, 0x0000, 0x06cb, - 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, - 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, 0x20d7, 0x081e, - 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, - // Entry 3700 - 373F - 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, 0x094e, - 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, - 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, 0x0a7b, - 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, - 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, - 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, 0x0c74, - 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, 0x0d1c, - 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, 0x0dc3, - // Entry 3740 - 377F - 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, 0x0e6d, - 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, - 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x0fba, - 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, 0x1066, - 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x2122, 0x1110, - 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, 0x11ba, - 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, - 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, 0x1308, - // Entry 3780 - 37BF - 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, 0x13b4, - 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, 0x145f, - 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, 0x150b, - 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, - 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, 0x1661, - 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, 0x170c, - 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, 0x17b1, - 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, 0x185e, - // Entry 37C0 - 37FF - 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, - 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, 0x19ab, - 0x19b1, 0x2134, 0x19c0, 0x0001, 0x06c0, 0x00ec, 0x0005, 0x14b6, - 0x14bc, 0x14c4, 0x14cc, 0x14d4, 0x14db, 0x14e1, 0x14e7, 0x14ed, - 0x14f4, 0x14fa, 0x1502, 0x150c, 0x1517, 0x1520, 0x1529, 0x1532, - 0x1538, 0x153f, 0x1547, 0x154e, 0x1555, 0x155d, 0x1563, 0x1569, - 0x156f, 0x1576, 0x157d, 0x1584, 0x158c, 0x1592, 0x159a, 0x15a2, - 0x15a7, 0x15ae, 0x15b5, 0x15bd, 0x15c6, 0x15ce, 0x15d3, 0x15da, - // Entry 3800 - 383F - 0x15df, 0x15e7, 0x15f0, 0x15f7, 0x15fe, 0x1604, 0x160a, 0x160f, - 0x1614, 0x161e, 0x1627, 0x162f, 0x1636, 0x163d, 0x1644, 0x1649, - 0x164f, 0x1657, 0x1661, 0x166a, 0x1672, 0x1679, 0x167f, 0x1686, - 0x168e, 0x1695, 0x169c, 0x16a9, 0x16af, 0x16b6, 0x16bc, 0x16c2, - 0x16c9, 0x16d1, 0x16d7, 0x16de, 0x16e5, 0x16ec, 0x16f3, 0x16fa, - 0x1703, 0x1709, 0x170f, 0x1715, 0x171d, 0x1726, 0x172c, 0x1731, - 0x1737, 0x1741, 0x1748, 0x174f, 0x1756, 0x175d, 0x1763, 0x176b, - 0x1770, 0x1778, 0x177e, 0x1787, 0x178c, 0x1793, 0x1799, 0x17a0, - // Entry 3840 - 387F - 0x17a6, 0x17ab, 0x17b4, 0x17ba, 0x17c2, 0x17c9, 0x17d0, 0x17d8, - 0x17e1, 0x17eb, 0x17f4, 0x17fb, 0x1803, 0x1809, 0x1810, 0x1817, - 0x181d, 0x1823, 0x1829, 0x1831, 0x183a, 0x1840, 0x1849, 0x1851, - 0x1857, 0x185e, 0x1864, 0x186c, 0x1873, 0x187a, 0x1882, 0x188b, - 0x1893, 0x189c, 0x18a2, 0x18a8, 0x18af, 0x18b5, 0x18bf, 0x18c6, - 0x18cc, 0x18d3, 0x18da, 0x18e1, 0x18e8, 0x18ef, 0x18f5, 0x18fc, - 0x1905, 0x190d, 0x1915, 0x191f, 0x1925, 0x192b, 0x1933, 0x193b, - 0x1943, 0x194b, 0x1951, 0x195a, 0x1963, 0x196b, 0x1973, 0x1979, - // Entry 3880 - 38BF - 0x197f, 0x198a, 0x198f, 0x1998, 0x199f, 0x19a7, 0x19b0, 0x19b8, - 0x19c1, 0x19c9, 0x19d2, 0x19da, 0x19e2, 0x19e8, 0x19ef, 0x19f8, - 0x19ff, 0x1a05, 0x1a0b, 0x1a15, 0x1a1b, 0x1a24, 0x1a2b, 0x1a34, - 0x1a3b, 0x1a41, 0x1a4c, 0x1a54, 0x1a5c, 0x1a62, 0x1a6b, 0x1a75, - 0x1a7b, 0x1a84, 0x1a8c, 0x1a92, 0x1a99, 0x1a9f, 0x1aa5, 0x1aad, - 0x1ab5, 0x1abb, 0x1ac4, 0x1acc, 0x1ad3, 0x1ada, 0x1ae4, 0x1aed, - 0x1af5, 0x1afb, 0x1b03, 0x1b0a, 0x1b11, 0x1b18, 0x1b1e, 0x1b25, - 0x1b2c, 0x1b32, 0x1b37, 0x1b3d, 0x1b46, 0x1b4e, 0x1b54, 0x1b5a, - // Entry 38C0 - 38FF - 0x1b60, 0x1b68, 0x1b72, 0x0001, 0x07b0, 0x0045, 0x0005, 0x14b6, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x14fa, 0x1b79, 0x1b83, 0x1b8e, 0x1b97, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x156f, 0x1576, 0x157d, 0x1584, 0xffff, 0x1592, 0xffff, 0xffff, - 0xffff, 0x15ae, 0xffff, 0x15bd, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x160a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3900 - 393F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x16a9, 0x0004, 0x0000, 0x07ff, 0x07fc, - 0x0802, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, - 0x0005, 0x0846, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x9006, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0817, 0x082d, 0x0000, 0x083e, 0x0003, 0x0821, 0x0827, 0x081b, - 0x0001, 0x081d, 0x0002, 0x0005, 0x1ba0, 0x1bb3, 0x0001, 0x0823, - 0x0002, 0x0005, 0x1bba, 0x1bb3, 0x0001, 0x0829, 0x0002, 0x0005, - // Entry 3940 - 397F - 0x1bba, 0x1bb3, 0x0004, 0x083b, 0x0835, 0x0832, 0x0838, 0x0001, - 0x0005, 0x0800, 0x0001, 0x0005, 0x0817, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0005, 0x0827, 0x0004, 0x084c, 0x0846, 0x0843, 0x0849, - 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0000, 0x03c6, 0x0040, 0x0890, 0x0000, 0x0000, - 0x0895, 0x08ac, 0x08c3, 0x08da, 0x08f1, 0x0908, 0x091f, 0x0936, - 0x094d, 0x0964, 0x097f, 0x099a, 0x0000, 0x0000, 0x0000, 0x09b5, - 0x09ce, 0x09e7, 0x0000, 0x0000, 0x0000, 0x0a00, 0x0000, 0x0000, - // Entry 3980 - 39BF - 0x0000, 0x0000, 0x0000, 0x0a05, 0x0a19, 0x0a2d, 0x0a41, 0x0a55, - 0x0a69, 0x0a7d, 0x0a91, 0x0aa5, 0x0ab9, 0x0acd, 0x0ae1, 0x0af5, - 0x0b09, 0x0b1d, 0x0b31, 0x0b45, 0x0b59, 0x0b6d, 0x0b81, 0x0b95, - 0x0000, 0x0ba9, 0x0000, 0x0bae, 0x0bc4, 0x0bda, 0x0bf0, 0x0c06, - 0x0c1c, 0x0c32, 0x0c48, 0x0c5e, 0x0c74, 0x0001, 0x0892, 0x0001, - 0x0001, 0x0040, 0x0003, 0x0899, 0x089c, 0x08a1, 0x0001, 0x0005, - 0x1bc3, 0x0003, 0x0005, 0x1bc8, 0x1bd8, 0x1be2, 0x0002, 0x08a4, - 0x08a8, 0x0002, 0x0005, 0x1c00, 0x1bf4, 0x0002, 0x0005, 0x1c1a, - // Entry 39C0 - 39FF - 0x1c0d, 0x0003, 0x08b0, 0x08b3, 0x08b8, 0x0001, 0x0005, 0x1bc3, - 0x0003, 0x0005, 0x1c28, 0x1bd8, 0x1c36, 0x0002, 0x08bb, 0x08bf, - 0x0002, 0x0005, 0x1c00, 0x1bf4, 0x0002, 0x0005, 0x1c1a, 0x1c0d, - 0x0003, 0x08c7, 0x08ca, 0x08cf, 0x0001, 0x0005, 0x1bc3, 0x0003, - 0x0005, 0x1c44, 0x1bd8, 0x1c4e, 0x0002, 0x08d2, 0x08d6, 0x0002, - 0x0005, 0x1c58, 0x1c58, 0x0002, 0x0005, 0x1c62, 0x1c62, 0x0003, - 0x08de, 0x08e1, 0x08e6, 0x0001, 0x0005, 0x1c6d, 0x0003, 0x0005, - 0x1c77, 0x1c8a, 0x1c99, 0x0002, 0x08e9, 0x08ed, 0x0002, 0x0005, - // Entry 3A00 - 3A3F - 0x1cbd, 0x1cac, 0x0002, 0x0005, 0x1ce1, 0x1ccf, 0x0003, 0x08f5, - 0x08f8, 0x08fd, 0x0001, 0x0005, 0x1cf4, 0x0003, 0x0005, 0x1cf9, - 0x1d04, 0x1d0f, 0x0002, 0x0900, 0x0904, 0x0002, 0x0005, 0x1d1a, - 0x1d1a, 0x0002, 0x0005, 0x1d27, 0x1d27, 0x0003, 0x090c, 0x090f, - 0x0914, 0x0001, 0x0005, 0x1cf4, 0x0003, 0x0005, 0x1cf9, 0x1d04, - 0x1d0f, 0x0002, 0x0917, 0x091b, 0x0002, 0x0005, 0x1d35, 0x1d35, - 0x0002, 0x0005, 0x1d40, 0x1d40, 0x0003, 0x0923, 0x0926, 0x092b, - 0x0001, 0x0005, 0x1006, 0x0003, 0x0005, 0x1d4c, 0x1d5a, 0x1d63, - // Entry 3A40 - 3A7F - 0x0002, 0x092e, 0x0932, 0x0002, 0x0005, 0x1d7e, 0x1d73, 0x0002, - 0x0005, 0x1d97, 0x1d8b, 0x0003, 0x093a, 0x093d, 0x0942, 0x0001, - 0x0005, 0x1006, 0x0003, 0x0005, 0x1da5, 0x1d5a, 0x1dae, 0x0002, - 0x0945, 0x0949, 0x0002, 0x0005, 0x1d7e, 0x1d73, 0x0002, 0x0005, - 0x1d97, 0x1d8b, 0x0003, 0x0951, 0x0954, 0x0959, 0x0001, 0x0005, - 0x1006, 0x0003, 0x0005, 0x1da5, 0x1d5a, 0x1dae, 0x0002, 0x095c, - 0x0960, 0x0002, 0x0005, 0x1db7, 0x1db7, 0x0002, 0x0005, 0x1dc1, - 0x1dc1, 0x0004, 0x0969, 0x096c, 0x0971, 0x097c, 0x0001, 0x0005, - // Entry 3A80 - 3ABF - 0x1dcc, 0x0003, 0x0005, 0x1dd4, 0x1de6, 0x1df3, 0x0002, 0x0974, - 0x0978, 0x0002, 0x0005, 0x1e16, 0x1e07, 0x0002, 0x0005, 0x1e36, - 0x1e26, 0x0001, 0x0005, 0x1e47, 0x0004, 0x0984, 0x0987, 0x098c, - 0x0997, 0x0001, 0x0005, 0x1e5a, 0x0003, 0x0005, 0x1e5f, 0x1e6c, - 0x1e77, 0x0002, 0x098f, 0x0993, 0x0002, 0x0005, 0x1e86, 0x1e86, - 0x0002, 0x0005, 0x1e93, 0x1e93, 0x0001, 0x0005, 0x1e47, 0x0004, - 0x099f, 0x09a2, 0x09a7, 0x09b2, 0x0001, 0x0005, 0x1e5a, 0x0003, - 0x0005, 0x1ea1, 0x1e6c, 0x1eac, 0x0002, 0x09aa, 0x09ae, 0x0002, - // Entry 3AC0 - 3AFF - 0x0005, 0x1eb7, 0x1eb7, 0x0002, 0x0005, 0x1ec2, 0x1ec2, 0x0001, - 0x0005, 0x1e47, 0x0003, 0x09b9, 0x09bc, 0x09c3, 0x0001, 0x0005, - 0x1ece, 0x0005, 0x0005, 0x1edc, 0x1ee2, 0x1302, 0x1ed3, 0x1ee8, - 0x0002, 0x09c6, 0x09ca, 0x0002, 0x0005, 0x1f02, 0x1ef6, 0x0002, - 0x0005, 0x1f1c, 0x1f0f, 0x0003, 0x09d2, 0x09d5, 0x09dc, 0x0001, - 0x0005, 0x1ece, 0x0005, 0x0005, 0x1edc, 0x1ee2, 0x1302, 0x1ed3, - 0x1ee8, 0x0002, 0x09df, 0x09e3, 0x0002, 0x0005, 0x1f02, 0x1ef6, - 0x0002, 0x0005, 0x1f1c, 0x1f0f, 0x0003, 0x09eb, 0x09ee, 0x09f5, - // Entry 3B00 - 3B3F - 0x0001, 0x0005, 0x1ece, 0x0005, 0x0005, 0x1edc, 0x1ee2, 0x1f31, - 0x1f2a, 0x1f37, 0x0002, 0x09f8, 0x09fc, 0x0002, 0x0005, 0x1f40, - 0x1f40, 0x0002, 0x0005, 0x1f4a, 0x1f4a, 0x0001, 0x0a02, 0x0001, - 0x0005, 0x1f55, 0x0003, 0x0000, 0x0a09, 0x0a0e, 0x0003, 0x0005, - 0x1f68, 0x1f7a, 0x1f87, 0x0002, 0x0a11, 0x0a15, 0x0002, 0x0005, - 0x1fb2, 0x1f9b, 0x0002, 0x0005, 0x1fda, 0x1fca, 0x0003, 0x0000, - 0x0a1d, 0x0a22, 0x0003, 0x0005, 0x1feb, 0x1ff7, 0x2001, 0x0002, - 0x0a25, 0x0a29, 0x0002, 0x0005, 0x1fb2, 0x1f9b, 0x0002, 0x0005, - // Entry 3B40 - 3B7F - 0x1fda, 0x1fca, 0x0003, 0x0000, 0x0a31, 0x0a36, 0x0003, 0x0006, - 0x0000, 0x000a, 0x0014, 0x0002, 0x0a39, 0x0a3d, 0x0002, 0x0005, - 0x1fb2, 0x1f9b, 0x0002, 0x0005, 0x1fda, 0x1fca, 0x0003, 0x0000, - 0x0a45, 0x0a4a, 0x0003, 0x0006, 0x001e, 0x002f, 0x003b, 0x0002, - 0x0a4d, 0x0a51, 0x0002, 0x0006, 0x004e, 0x004e, 0x0002, 0x0006, - 0x0064, 0x0064, 0x0003, 0x0000, 0x0a59, 0x0a5e, 0x0003, 0x0006, - 0x0073, 0x0080, 0x008b, 0x0002, 0x0a61, 0x0a65, 0x0002, 0x0006, - 0x004e, 0x004e, 0x0002, 0x0006, 0x0064, 0x0064, 0x0003, 0x0000, - // Entry 3B80 - 3BBF - 0x0a6d, 0x0a72, 0x0003, 0x0006, 0x009a, 0x00a4, 0x00ae, 0x0002, - 0x0a75, 0x0a79, 0x0002, 0x0006, 0x004e, 0x004e, 0x0002, 0x0006, - 0x0064, 0x0064, 0x0003, 0x0000, 0x0a81, 0x0a86, 0x0003, 0x0006, - 0x00b8, 0x00c9, 0x00d5, 0x0002, 0x0a89, 0x0a8d, 0x0002, 0x0006, - 0x00e8, 0x00e8, 0x0002, 0x0006, 0x00fe, 0x00fe, 0x0003, 0x0000, - 0x0a95, 0x0a9a, 0x0003, 0x0006, 0x010d, 0x0119, 0x0123, 0x0002, - 0x0a9d, 0x0aa1, 0x0002, 0x0006, 0x00e8, 0x00e8, 0x0002, 0x0006, - 0x00fe, 0x00fe, 0x0003, 0x0000, 0x0aa9, 0x0aae, 0x0003, 0x0006, - // Entry 3BC0 - 3BFF - 0x0131, 0x0119, 0x013b, 0x0002, 0x0ab1, 0x0ab5, 0x0002, 0x0006, - 0x00e8, 0x00e8, 0x0002, 0x0006, 0x00fe, 0x00fe, 0x0003, 0x0000, - 0x0abd, 0x0ac2, 0x0003, 0x0006, 0x0145, 0x015a, 0x016a, 0x0002, - 0x0ac5, 0x0ac9, 0x0002, 0x0006, 0x0181, 0x0181, 0x0002, 0x0006, - 0x019b, 0x019b, 0x0003, 0x0000, 0x0ad1, 0x0ad6, 0x0003, 0x0006, - 0x01ae, 0x01bb, 0x01c6, 0x0002, 0x0ad9, 0x0add, 0x0002, 0x0006, - 0x0181, 0x0181, 0x0002, 0x0006, 0x019b, 0x019b, 0x0003, 0x0000, - 0x0ae5, 0x0aea, 0x0003, 0x0006, 0x01d5, 0x01bb, 0x01e0, 0x0002, - // Entry 3C00 - 3C3F - 0x0aed, 0x0af1, 0x0002, 0x0006, 0x0181, 0x0181, 0x0002, 0x0006, - 0x019b, 0x019b, 0x0003, 0x0000, 0x0af9, 0x0afe, 0x0003, 0x0006, - 0x01eb, 0x01fc, 0x0208, 0x0002, 0x0b01, 0x0b05, 0x0002, 0x0006, - 0x021b, 0x021b, 0x0002, 0x0006, 0x0231, 0x0231, 0x0003, 0x0000, - 0x0b0d, 0x0b12, 0x0003, 0x0006, 0x0240, 0x024c, 0x0256, 0x0002, - 0x0b15, 0x0b19, 0x0002, 0x0006, 0x021b, 0x021b, 0x0002, 0x0006, - 0x0231, 0x0231, 0x0003, 0x0000, 0x0b21, 0x0b26, 0x0003, 0x0006, - 0x0264, 0x024c, 0x026e, 0x0002, 0x0b29, 0x0b2d, 0x0002, 0x0006, - // Entry 3C40 - 3C7F - 0x021b, 0x021b, 0x0002, 0x0006, 0x0231, 0x0231, 0x0003, 0x0000, - 0x0b35, 0x0b3a, 0x0003, 0x0006, 0x0278, 0x028a, 0x0297, 0x0002, - 0x0b3d, 0x0b41, 0x0002, 0x0006, 0x02ab, 0x02ab, 0x0002, 0x0006, - 0x02c2, 0x02c2, 0x0003, 0x0000, 0x0b49, 0x0b4e, 0x0003, 0x0006, - 0x02d2, 0x02de, 0x02e8, 0x0002, 0x0b51, 0x0b55, 0x0002, 0x0006, - 0x02ab, 0x02ab, 0x0002, 0x0006, 0x02c2, 0x02c2, 0x0003, 0x0000, - 0x0b5d, 0x0b62, 0x0003, 0x0006, 0x02f6, 0x02de, 0x0300, 0x0002, - 0x0b65, 0x0b69, 0x0002, 0x0006, 0x02ab, 0x02ab, 0x0002, 0x0006, - // Entry 3C80 - 3CBF - 0x02c2, 0x02c2, 0x0003, 0x0000, 0x0b71, 0x0b76, 0x0003, 0x0006, - 0x030a, 0x031c, 0x0329, 0x0002, 0x0b79, 0x0b7d, 0x0002, 0x0006, - 0x0354, 0x033d, 0x0002, 0x0006, 0x037c, 0x036c, 0x0003, 0x0000, - 0x0b85, 0x0b8a, 0x0003, 0x0006, 0x038d, 0x039a, 0x03a5, 0x0002, - 0x0b8d, 0x0b91, 0x0002, 0x0006, 0x0354, 0x033d, 0x0002, 0x0006, - 0x037c, 0x036c, 0x0003, 0x0000, 0x0b99, 0x0b9e, 0x0003, 0x0006, - 0x03b4, 0x039a, 0x03bf, 0x0002, 0x0ba1, 0x0ba5, 0x0002, 0x0006, - 0x0354, 0x033d, 0x0002, 0x0006, 0x037c, 0x036c, 0x0001, 0x0bab, - // Entry 3CC0 - 3CFF - 0x0001, 0x0006, 0x03ca, 0x0003, 0x0bb2, 0x0bb5, 0x0bb9, 0x0001, - 0x0006, 0x03db, 0x0002, 0x0006, 0xffff, 0x03e0, 0x0002, 0x0bbc, - 0x0bc0, 0x0002, 0x0006, 0x03f6, 0x03ea, 0x0002, 0x0006, 0x0410, - 0x0403, 0x0003, 0x0bc8, 0x0bcb, 0x0bcf, 0x0001, 0x0006, 0x041e, - 0x0002, 0x0006, 0xffff, 0x03e0, 0x0002, 0x0bd2, 0x0bd6, 0x0002, - 0x0006, 0x0421, 0x0421, 0x0002, 0x0006, 0x042b, 0x042b, 0x0003, - 0x0bde, 0x0be1, 0x0be5, 0x0001, 0x0006, 0x041e, 0x0002, 0x0006, - 0xffff, 0x0436, 0x0002, 0x0be8, 0x0bec, 0x0002, 0x0006, 0x0421, - // Entry 3D00 - 3D3F - 0x0421, 0x0002, 0x0006, 0x042b, 0x042b, 0x0003, 0x0bf4, 0x0bf7, - 0x0bfb, 0x0001, 0x0006, 0x043e, 0x0002, 0x0006, 0xffff, 0x0445, - 0x0002, 0x0bfe, 0x0c02, 0x0002, 0x0006, 0x045f, 0x0451, 0x0002, - 0x0006, 0x047d, 0x046e, 0x0003, 0x0c0a, 0x0c0d, 0x0c11, 0x0001, - 0x0001, 0x075a, 0x0002, 0x0006, 0xffff, 0x048d, 0x0002, 0x0c14, - 0x0c18, 0x0002, 0x0006, 0x0497, 0x0497, 0x0002, 0x0006, 0x04a3, - 0x04a3, 0x0003, 0x0c20, 0x0c23, 0x0c27, 0x0001, 0x0001, 0x077c, - 0x0002, 0x0006, 0xffff, 0x048d, 0x0002, 0x0c2a, 0x0c2e, 0x0002, - // Entry 3D40 - 3D7F - 0x0006, 0x0497, 0x0497, 0x0002, 0x0006, 0x04a3, 0x04a3, 0x0003, - 0x0c36, 0x0c39, 0x0c3d, 0x0001, 0x0006, 0x04b0, 0x0002, 0x0006, - 0xffff, 0x04b8, 0x0002, 0x0c40, 0x0c44, 0x0002, 0x0006, 0x04cd, - 0x04be, 0x0002, 0x0006, 0x04ed, 0x04dd, 0x0003, 0x0c4c, 0x0c4f, - 0x0c53, 0x0001, 0x0001, 0x07f5, 0x0002, 0x0006, 0xffff, 0x04b8, - 0x0002, 0x0c56, 0x0c5a, 0x0002, 0x0006, 0x04fe, 0x04fe, 0x0002, - 0x0006, 0x050a, 0x050a, 0x0003, 0x0c62, 0x0c65, 0x0c69, 0x0001, - 0x0001, 0x07f5, 0x0002, 0x0006, 0xffff, 0x04b8, 0x0002, 0x0c6c, - // Entry 3D80 - 3DBF - 0x0c70, 0x0002, 0x0006, 0x0517, 0x0517, 0x0002, 0x0006, 0x0521, - 0x0521, 0x0001, 0x0c76, 0x0001, 0x0006, 0x052c, 0x0004, 0x0c7e, - 0x0c83, 0x0c88, 0x0ca9, 0x0003, 0x0000, 0x1dc7, 0x1dd5, 0x1ddc, - 0x0003, 0x0006, 0x053b, 0x0547, 0x055c, 0x0002, 0x0c93, 0x0c8b, - 0x0002, 0x0000, 0x0c8e, 0x0003, 0x0006, 0xffff, 0x0572, 0x058b, - 0x0003, 0x0c97, 0x0ca3, 0x0c9d, 0x0004, 0x0006, 0xffff, 0xffff, - 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, - 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a8, 0x0002, 0x0e90, - // Entry 3DC0 - 3DFF - 0x0cac, 0x0003, 0x0cb0, 0x0df0, 0x0d50, 0x009e, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0644, 0x06a8, 0x073c, 0x0785, 0x07f7, - 0x086c, 0x08fc, 0x0980, 0x09c3, 0x0a83, 0x0ac6, 0x0b12, 0x0b7f, - 0x0bc5, 0x0c1f, 0x0c83, 0x0d05, 0x0d6c, 0x0dd6, 0x0e28, 0x0e74, - 0xffff, 0xffff, 0x0edc, 0xffff, 0x0f3d, 0xffff, 0x0fb2, 0x0ff5, - 0x1032, 0x106f, 0xffff, 0xffff, 0x10f9, 0x113f, 0x11a0, 0xffff, - 0xffff, 0xffff, 0x121a, 0xffff, 0x128f, 0x12f3, 0xffff, 0x137b, - 0x13e8, 0x144f, 0xffff, 0xffff, 0xffff, 0xffff, 0x14ee, 0xffff, - // Entry 3E00 - 3E3F - 0xffff, 0x1565, 0x15cf, 0xffff, 0xffff, 0x1681, 0x16f0, 0x173f, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1814, 0x1854, - 0x189a, 0x18dd, 0x191d, 0xffff, 0xffff, 0x19ce, 0xffff, 0x1a1a, - 0xffff, 0xffff, 0x1aa4, 0xffff, 0x1b48, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1be5, 0xffff, 0x1c3a, 0x1ca4, 0x1d11, 0x1d66, 0xffff, - 0xffff, 0xffff, 0x1dd3, 0x1e2e, 0x1e83, 0xffff, 0xffff, 0x1efb, - 0x1f88, 0x1fd7, 0x2014, 0xffff, 0xffff, 0x208d, 0x20d9, 0x2119, - 0xffff, 0x217d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x228c, - // Entry 3E40 - 3E7F - 0x22d2, 0x2312, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x23e0, 0xffff, 0xffff, 0x2449, 0xffff, 0x2494, 0xffff, - 0x24fb, 0x2544, 0x2599, 0xffff, 0x25ee, 0x263d, 0xffff, 0xffff, - 0xffff, 0x26c6, 0x2709, 0xffff, 0xffff, 0x05ac, 0x06f9, 0x0a00, - 0x0a40, 0xffff, 0xffff, 0x1aed, 0x2222, 0x009e, 0x0006, 0x05e9, - 0x05fe, 0x0617, 0x0631, 0x065f, 0x06b8, 0x074e, 0x07a1, 0x0814, - 0x0892, 0x091e, 0x0990, 0x09d1, 0x0a93, 0x0ad9, 0x0b30, 0x0b90, - 0x0bd9, 0x0c3a, 0x0ca8, 0x0d21, 0x0d89, 0x0deb, 0x0e3b, 0x0e86, - // Entry 3E80 - 3EBF - 0x0ebd, 0x0ecc, 0x0eed, 0x0f22, 0x0f50, 0x0f97, 0x0fc2, 0x1003, - 0x1040, 0x1082, 0x10bb, 0x10e0, 0x110a, 0x1157, 0x11ad, 0x11da, - 0x11e8, 0x1203, 0x1235, 0x127e, 0x12a7, 0x130c, 0x135a, 0x1396, - 0x1404, 0x145c, 0x1489, 0x14a4, 0x14cb, 0x14de, 0x14fd, 0x152e, - 0x1549, 0x1582, 0x15ee, 0x1656, 0x166f, 0x169b, 0x1704, 0x174c, - 0x1779, 0x1794, 0x17ad, 0x17c0, 0x17db, 0x17f7, 0x1823, 0x1865, - 0x18aa, 0x18ec, 0x193e, 0x1992, 0x19af, 0x19dc, 0x1a0b, 0x1a2e, - 0x1a69, 0x1a8c, 0x1ab6, 0x1b2d, 0x1b59, 0x1b8e, 0x1b9e, 0x1bb3, - // Entry 3EC0 - 3EFF - 0x1bc9, 0x1bf6, 0x1c2b, 0x1c57, 0x1cc2, 0x1d27, 0x1d75, 0x1da6, - 0x1db6, 0x1dc4, 0x1deb, 0x1e44, 0x1e98, 0x1ed5, 0x1ee2, 0x1f17, - 0x1f9c, 0x1fe5, 0x2028, 0x2063, 0x2071, 0x20a0, 0x20e8, 0x212b, - 0x2162, 0x219d, 0x21f0, 0x2201, 0x2210, 0x226b, 0x227c, 0x229d, - 0x22e1, 0x2320, 0x234f, 0x2364, 0x237f, 0x239b, 0x23b2, 0x23c3, - 0x23d1, 0x23f0, 0x2423, 0x2439, 0x2457, 0x2486, 0x24ab, 0x24ec, - 0x250d, 0x255a, 0x25a9, 0x25dc, 0x2602, 0x2650, 0x2689, 0x2698, - 0x26ae, 0x26d6, 0x2720, 0x163f, 0x1f62, 0x05ba, 0x0709, 0x0a0f, - // Entry 3F00 - 3F3F - 0x0a50, 0x0f89, 0x1a7e, 0x1afc, 0x2234, 0x009e, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0684, 0x06d2, 0x076a, 0x07c7, 0x083b, - 0x08c2, 0x094a, 0x09aa, 0x09e9, 0x0aad, 0x0af6, 0x0b58, 0x0bab, - 0x0bf7, 0x0c5f, 0x0cd7, 0x0d47, 0x0db0, 0x0e0a, 0x0e58, 0x0ea2, - 0xffff, 0xffff, 0x0f08, 0xffff, 0x0f6d, 0xffff, 0x0fdc, 0x101b, - 0x1058, 0x109f, 0xffff, 0xffff, 0x1125, 0x1179, 0x11c4, 0xffff, - 0xffff, 0xffff, 0x125a, 0xffff, 0x12c9, 0x132f, 0xffff, 0x13bb, - 0x142a, 0x1473, 0xffff, 0xffff, 0xffff, 0xffff, 0x1516, 0xffff, - // Entry 3F40 - 3F7F - 0xffff, 0x15a9, 0x1617, 0xffff, 0xffff, 0x16bf, 0x1722, 0x1763, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x183c, 0x1880, - 0x18c4, 0x1905, 0x1968, 0xffff, 0xffff, 0x19f4, 0xffff, 0x1a4c, - 0xffff, 0xffff, 0x1ad2, 0xffff, 0x1b74, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1c11, 0xffff, 0x1c7e, 0x1cea, 0x1d47, 0x1d8e, 0xffff, - 0xffff, 0xffff, 0x1e0d, 0x1e64, 0x1eb7, 0xffff, 0xffff, 0x1f3d, - 0x1fba, 0x1ffd, 0x2046, 0xffff, 0xffff, 0x20bd, 0x2101, 0x2147, - 0xffff, 0x21c7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22b8, - // Entry 3F80 - 3FBF - 0x22fa, 0x2338, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x240a, 0xffff, 0xffff, 0x246f, 0xffff, 0x24cc, 0xffff, - 0x2529, 0x257a, 0x25c3, 0xffff, 0x2620, 0x266d, 0xffff, 0xffff, - 0xffff, 0x26f0, 0x2741, 0xffff, 0xffff, 0x05d2, 0x0723, 0x0a28, - 0x0a6a, 0xffff, 0xffff, 0x1b15, 0x2250, 0x0003, 0x0e94, 0x0f16, - 0x0ed5, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, 0xffff, - // Entry 3FC0 - 3FFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x16e2, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x08f4, 0x0978, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, 0xffff, - // Entry 4000 - 403F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1561, 0xffff, 0xffff, - 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, 0x08f8, 0x097c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, 0xffff, - // Entry 4040 - 407F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x16eb, 0x0003, 0x0004, 0x0286, 0x0660, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - // Entry 4080 - 40BF - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0007, 0x0000, 0x0001, 0x0007, 0x0011, 0x0001, 0x0007, 0x001d, - 0x0001, 0x0007, 0x0027, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, - 0x0132, 0x0239, 0x0253, 0x0264, 0x0275, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0007, 0xffff, 0x0035, - 0x0039, 0x003d, 0x0041, 0x0045, 0x0049, 0x004d, 0x0051, 0x0055, - // Entry 40C0 - 40FF - 0x0059, 0x005d, 0x0061, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, - 0x0048, 0x004b, 0x000d, 0x0007, 0xffff, 0x0065, 0x006c, 0x0073, - 0x0078, 0x0045, 0x007e, 0x0083, 0x0088, 0x008f, 0x0098, 0x00a0, - 0x00a7, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0007, 0xffff, - 0x0035, 0x0039, 0x003d, 0x0041, 0x0045, 0x0049, 0x004d, 0x0051, - 0x0055, 0x0059, 0x005d, 0x0061, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, - // Entry 4100 - 413F - 0x0045, 0x0048, 0x004b, 0x000d, 0x0007, 0xffff, 0x00ae, 0x00b5, - 0x00bc, 0x00c1, 0x00c7, 0x00cb, 0x00d1, 0x00d7, 0x00de, 0x00e7, - 0x00ef, 0x00f6, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, - 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0007, 0x00fd, 0x0100, 0x0105, - 0x010b, 0x010f, 0x0114, 0x0117, 0x0007, 0x0000, 0x003f, 0x0033, - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x0007, 0x0007, 0x00fd, - 0x0100, 0x0105, 0x010b, 0x010f, 0x0114, 0x0117, 0x0007, 0x0007, - 0x011b, 0x0121, 0x012f, 0x0146, 0x0154, 0x0164, 0x016b, 0x0005, - // Entry 4140 - 417F - 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0007, 0x00fd, - 0x0100, 0x0105, 0x010b, 0x010f, 0x0114, 0x0117, 0x0007, 0x0000, - 0x003f, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x0007, - 0x0007, 0x00fd, 0x0100, 0x0105, 0x010b, 0x010f, 0x0114, 0x0117, - 0x0007, 0x0007, 0x011b, 0x0121, 0x012f, 0x0146, 0x0154, 0x0164, - 0x016b, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, - 0x0005, 0x0007, 0xffff, 0x0174, 0x017d, 0x0186, 0x0190, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0007, - // Entry 4180 - 41BF - 0xffff, 0x019a, 0x01a7, 0x01b4, 0x01c2, 0x0003, 0x011d, 0x0124, - 0x012b, 0x0005, 0x0007, 0xffff, 0x0174, 0x017d, 0x0186, 0x0190, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, - 0x0007, 0xffff, 0x019a, 0x01a7, 0x01b4, 0x01c2, 0x0002, 0x0135, - 0x01b7, 0x0003, 0x0139, 0x0163, 0x018d, 0x000b, 0x0148, 0x014e, - 0x0145, 0x0151, 0x0157, 0x015a, 0x015d, 0x014b, 0x0154, 0x0000, - 0x0160, 0x0001, 0x0007, 0x01d0, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0007, 0x01db, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0007, 0x01e4, - // Entry 41C0 - 41FF - 0x0001, 0x0007, 0x01ea, 0x0001, 0x0007, 0x01f2, 0x0001, 0x0007, - 0x01fb, 0x0001, 0x0007, 0x0208, 0x0001, 0x0007, 0x020f, 0x000b, - 0x0172, 0x0178, 0x016f, 0x017b, 0x0181, 0x0184, 0x0187, 0x0175, - 0x017e, 0x0000, 0x018a, 0x0001, 0x0007, 0x01d0, 0x0001, 0x0000, - 0x1f9c, 0x0001, 0x0000, 0x200e, 0x0001, 0x0005, 0x12e6, 0x0001, - 0x0007, 0x01e4, 0x0001, 0x0007, 0x01ea, 0x0001, 0x0007, 0x01f2, - 0x0001, 0x0007, 0x01fb, 0x0001, 0x0007, 0x0208, 0x0001, 0x0007, - 0x020f, 0x000b, 0x019c, 0x01a2, 0x0199, 0x01a5, 0x01ab, 0x01ae, - // Entry 4200 - 423F - 0x01b1, 0x019f, 0x01a8, 0x0000, 0x01b4, 0x0001, 0x0007, 0x01d0, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0007, 0x01db, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x0007, 0x01e4, 0x0001, 0x0007, 0x01ea, 0x0001, - 0x0007, 0x01f2, 0x0001, 0x0007, 0x01fb, 0x0001, 0x0007, 0x0208, - 0x0001, 0x0007, 0x020f, 0x0003, 0x01bb, 0x01e5, 0x020f, 0x000b, - 0x01ca, 0x01d0, 0x01c7, 0x01d3, 0x01d9, 0x01dc, 0x01df, 0x01cd, - 0x01d6, 0x0000, 0x01e2, 0x0001, 0x0007, 0x01d0, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0007, 0x01db, 0x0001, 0x0000, 0x04f2, 0x0001, - // Entry 4240 - 427F - 0x0007, 0x01e4, 0x0001, 0x0007, 0x01ea, 0x0001, 0x0007, 0x01f2, - 0x0001, 0x0007, 0x01fb, 0x0001, 0x0007, 0x0208, 0x0001, 0x0007, - 0x020f, 0x000b, 0x01f4, 0x01fa, 0x01f1, 0x01fd, 0x0203, 0x0206, - 0x0209, 0x01f7, 0x0200, 0x0000, 0x020c, 0x0001, 0x0007, 0x01d0, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0007, 0x01db, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x0007, 0x01e4, 0x0001, 0x0007, 0x01ea, 0x0001, - 0x0007, 0x01f2, 0x0001, 0x0007, 0x01fb, 0x0001, 0x0007, 0x0208, - 0x0001, 0x0007, 0x020f, 0x000b, 0x021e, 0x0224, 0x021b, 0x0227, - // Entry 4280 - 42BF - 0x022d, 0x0230, 0x0233, 0x0221, 0x022a, 0x0000, 0x0236, 0x0001, - 0x0007, 0x01d0, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0007, 0x01db, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0007, 0x01e4, 0x0001, 0x0007, - 0x01ea, 0x0001, 0x0007, 0x01f2, 0x0001, 0x0007, 0x01fb, 0x0001, - 0x0007, 0x0208, 0x0001, 0x0007, 0x020f, 0x0003, 0x0248, 0x0000, - 0x023d, 0x0002, 0x0240, 0x0244, 0x0002, 0x0007, 0x0215, 0x023d, - 0x0002, 0x0007, 0x0228, 0x0246, 0x0002, 0x024b, 0x024f, 0x0002, - 0x0007, 0x0250, 0x025e, 0x0002, 0x0007, 0x0256, 0x0263, 0x0004, - // Entry 42C0 - 42FF - 0x0261, 0x025b, 0x0258, 0x025e, 0x0001, 0x0007, 0x0268, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0007, 0x0277, - 0x0004, 0x0272, 0x026c, 0x0269, 0x026f, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0004, 0x0283, 0x027d, 0x027a, 0x0280, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0040, 0x02c7, 0x0000, 0x0000, 0x02cc, 0x02e3, - 0x02f5, 0x0307, 0x031e, 0x0330, 0x0342, 0x0359, 0x036b, 0x037d, - // Entry 4300 - 433F - 0x0398, 0x03ae, 0x0000, 0x0000, 0x0000, 0x03c4, 0x03db, 0x03ed, - 0x0000, 0x0000, 0x0000, 0x03ff, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0404, 0x0418, 0x042c, 0x0440, 0x0454, 0x0468, 0x047c, - 0x0490, 0x04a4, 0x04b8, 0x04cc, 0x04e0, 0x04f4, 0x0508, 0x051c, - 0x0530, 0x0544, 0x0558, 0x056c, 0x0580, 0x0594, 0x0000, 0x05a8, - 0x0000, 0x05ad, 0x05c3, 0x05d5, 0x05e7, 0x05fd, 0x060f, 0x0621, - 0x0637, 0x0649, 0x065b, 0x0001, 0x02c9, 0x0001, 0x0000, 0x1a35, - 0x0003, 0x02d0, 0x02d3, 0x02d8, 0x0001, 0x0007, 0x0280, 0x0003, - // Entry 4340 - 437F - 0x0007, 0x0284, 0x028f, 0x0295, 0x0002, 0x02db, 0x02df, 0x0002, - 0x0007, 0x02a0, 0x02a0, 0x0002, 0x0007, 0x02b1, 0x02b1, 0x0003, - 0x02e7, 0x0000, 0x02ea, 0x0001, 0x0007, 0x02bf, 0x0002, 0x02ed, - 0x02f1, 0x0002, 0x0007, 0x02a0, 0x02a0, 0x0002, 0x0007, 0x02b1, - 0x02b1, 0x0003, 0x02f9, 0x0000, 0x02fc, 0x0001, 0x0007, 0x02bf, - 0x0002, 0x02ff, 0x0303, 0x0002, 0x0007, 0x02a0, 0x02a0, 0x0002, - 0x0007, 0x02b1, 0x02b1, 0x0003, 0x030b, 0x030e, 0x0313, 0x0001, - 0x0007, 0x02c2, 0x0003, 0x0007, 0x02c7, 0x02d4, 0x02dc, 0x0002, - // Entry 4380 - 43BF - 0x0316, 0x031a, 0x0002, 0x0007, 0x02e9, 0x02e9, 0x0002, 0x0007, - 0x02fc, 0x02fc, 0x0003, 0x0322, 0x0000, 0x0325, 0x0001, 0x0007, - 0x030c, 0x0002, 0x0328, 0x032c, 0x0002, 0x0007, 0x02e9, 0x02e9, - 0x0002, 0x0007, 0x02fc, 0x02fc, 0x0003, 0x0334, 0x0000, 0x0337, - 0x0001, 0x0007, 0x030c, 0x0002, 0x033a, 0x033e, 0x0002, 0x0007, - 0x02e9, 0x02e9, 0x0002, 0x0007, 0x02fc, 0x02fc, 0x0003, 0x0346, - 0x0349, 0x034e, 0x0001, 0x0007, 0x0311, 0x0003, 0x0007, 0x0314, - 0x031f, 0x0325, 0x0002, 0x0351, 0x0355, 0x0002, 0x0007, 0x0330, - // Entry 43C0 - 43FF - 0x0330, 0x0002, 0x0007, 0x0341, 0x0341, 0x0003, 0x035d, 0x0000, - 0x0360, 0x0001, 0x0007, 0x034f, 0x0002, 0x0363, 0x0367, 0x0002, - 0x0007, 0x0330, 0x0330, 0x0002, 0x0007, 0x0341, 0x0341, 0x0003, - 0x036f, 0x0000, 0x0372, 0x0001, 0x0007, 0x034f, 0x0002, 0x0375, - 0x0379, 0x0002, 0x0007, 0x0330, 0x0330, 0x0002, 0x0007, 0x0341, - 0x0341, 0x0004, 0x0382, 0x0385, 0x038a, 0x0395, 0x0001, 0x0007, - 0x0352, 0x0003, 0x0007, 0x035a, 0x036a, 0x0375, 0x0002, 0x038d, - 0x0391, 0x0002, 0x0007, 0x0385, 0x0385, 0x0002, 0x0007, 0x039b, - // Entry 4400 - 443F - 0x039b, 0x0001, 0x0007, 0x03ae, 0x0004, 0x039d, 0x0000, 0x03a0, - 0x03ab, 0x0001, 0x0007, 0x03bc, 0x0002, 0x03a3, 0x03a7, 0x0002, - 0x0007, 0x0385, 0x0385, 0x0002, 0x0007, 0x039b, 0x039b, 0x0001, - 0x0007, 0x03ae, 0x0004, 0x03b3, 0x0000, 0x03b6, 0x03c1, 0x0001, - 0x0007, 0x03bc, 0x0002, 0x03b9, 0x03bd, 0x0002, 0x0007, 0x0385, - 0x0385, 0x0002, 0x0007, 0x039b, 0x039b, 0x0001, 0x0007, 0x03ae, - 0x0003, 0x03c8, 0x03cb, 0x03d0, 0x0001, 0x0007, 0x03c4, 0x0003, - 0x0007, 0x03c9, 0x03d1, 0x03d9, 0x0002, 0x03d3, 0x03d7, 0x0002, - // Entry 4440 - 447F - 0x0007, 0x03df, 0x03df, 0x0002, 0x0007, 0x03f2, 0x03f2, 0x0003, - 0x03df, 0x0000, 0x03e2, 0x0001, 0x0007, 0x03c4, 0x0002, 0x03e5, - 0x03e9, 0x0002, 0x0007, 0x03df, 0x03df, 0x0002, 0x0007, 0x03f2, - 0x03f2, 0x0003, 0x03f1, 0x0000, 0x03f4, 0x0001, 0x0007, 0x03c4, - 0x0002, 0x03f7, 0x03fb, 0x0002, 0x0007, 0x03df, 0x03df, 0x0002, - 0x0007, 0x03f2, 0x03f2, 0x0001, 0x0401, 0x0001, 0x0007, 0x0402, - 0x0003, 0x0000, 0x0408, 0x040d, 0x0003, 0x0007, 0x0414, 0x0422, - 0x042b, 0x0002, 0x0410, 0x0414, 0x0002, 0x0007, 0x0439, 0x0439, - // Entry 4480 - 44BF - 0x0002, 0x0007, 0x044d, 0x044d, 0x0003, 0x0000, 0x041c, 0x0421, - 0x0003, 0x0007, 0x0414, 0x0422, 0x042b, 0x0002, 0x0424, 0x0428, - 0x0002, 0x0007, 0x0439, 0x0439, 0x0002, 0x0007, 0x044d, 0x044d, - 0x0003, 0x0000, 0x0430, 0x0435, 0x0003, 0x0007, 0x0414, 0x0422, - 0x042b, 0x0002, 0x0438, 0x043c, 0x0002, 0x0007, 0x0439, 0x0439, - 0x0002, 0x0007, 0x044d, 0x044d, 0x0003, 0x0000, 0x0444, 0x0449, - 0x0003, 0x0007, 0x045e, 0x0474, 0x0485, 0x0002, 0x044c, 0x0450, - 0x0002, 0x0007, 0x04b7, 0x049b, 0x0002, 0x0007, 0x04d3, 0x04d3, - // Entry 44C0 - 44FF - 0x0003, 0x0000, 0x0458, 0x045d, 0x0003, 0x0007, 0x045e, 0x0474, - 0x0485, 0x0002, 0x0460, 0x0464, 0x0002, 0x0007, 0x04b7, 0x04b7, - 0x0002, 0x0007, 0x04d3, 0x04d3, 0x0003, 0x0000, 0x046c, 0x0471, - 0x0003, 0x0007, 0x04ec, 0x04f7, 0x04fd, 0x0002, 0x0474, 0x0478, - 0x0002, 0x0007, 0x04b7, 0x04b7, 0x0002, 0x0007, 0x04d3, 0x04d3, - 0x0003, 0x0000, 0x0480, 0x0485, 0x0003, 0x0007, 0x0508, 0x0527, - 0x0541, 0x0002, 0x0488, 0x048c, 0x0002, 0x0007, 0x0560, 0x0560, - 0x0002, 0x0007, 0x0585, 0x0585, 0x0003, 0x0000, 0x0494, 0x0499, - // Entry 4500 - 453F - 0x0003, 0x0007, 0x05a7, 0x05b4, 0x05bc, 0x0002, 0x049c, 0x04a0, - 0x0002, 0x0007, 0x0560, 0x0560, 0x0002, 0x0007, 0x0585, 0x0585, - 0x0003, 0x0000, 0x04a8, 0x04ad, 0x0003, 0x0007, 0x05a7, 0x05b4, - 0x05bc, 0x0002, 0x04b0, 0x04b4, 0x0002, 0x0007, 0x0560, 0x0560, - 0x0002, 0x0007, 0x0585, 0x0585, 0x0003, 0x0000, 0x04bc, 0x04c1, - 0x0003, 0x0007, 0x05c9, 0x05df, 0x05f0, 0x0002, 0x04c4, 0x04c8, - 0x0002, 0x0007, 0x0606, 0x0606, 0x0002, 0x0007, 0x0622, 0x0622, - 0x0003, 0x0000, 0x04d0, 0x04d5, 0x0003, 0x0007, 0x05c9, 0x05df, - // Entry 4540 - 457F - 0x05f0, 0x0002, 0x04d8, 0x04dc, 0x0002, 0x0007, 0x0606, 0x0606, - 0x0002, 0x0007, 0x0622, 0x0622, 0x0003, 0x0000, 0x04e4, 0x04e9, - 0x0003, 0x0007, 0x063b, 0x0646, 0x064c, 0x0002, 0x04ec, 0x04f0, - 0x0002, 0x0007, 0x0606, 0x0606, 0x0002, 0x0007, 0x0622, 0x0622, - 0x0003, 0x0000, 0x04f8, 0x04fd, 0x0003, 0x0007, 0x0657, 0x066f, - 0x0682, 0x0002, 0x0500, 0x0504, 0x0002, 0x0007, 0x069a, 0x069a, - 0x0002, 0x0007, 0x06b8, 0x06b8, 0x0003, 0x0000, 0x050c, 0x0511, - 0x0003, 0x0007, 0x0657, 0x066f, 0x0682, 0x0002, 0x0514, 0x0518, - // Entry 4580 - 45BF - 0x0002, 0x0007, 0x069a, 0x069a, 0x0002, 0x0007, 0x06b8, 0x06b8, - 0x0003, 0x0000, 0x0520, 0x0525, 0x0003, 0x0007, 0x06d3, 0x06de, - 0x06e4, 0x0002, 0x0528, 0x052c, 0x0002, 0x0007, 0x069a, 0x069a, - 0x0002, 0x0007, 0x06b8, 0x06b8, 0x0003, 0x0000, 0x0534, 0x0539, - 0x0003, 0x0007, 0x06ef, 0x06fe, 0x0708, 0x0002, 0x053c, 0x0540, - 0x0002, 0x0007, 0x0717, 0x0717, 0x0002, 0x0007, 0x072c, 0x072c, - 0x0003, 0x0000, 0x0548, 0x054d, 0x0003, 0x0007, 0x06ef, 0x06fe, - 0x0708, 0x0002, 0x0550, 0x0554, 0x0002, 0x0007, 0x0717, 0x0717, - // Entry 45C0 - 45FF - 0x0002, 0x0007, 0x072c, 0x072c, 0x0003, 0x0000, 0x055c, 0x0561, - 0x0003, 0x0007, 0x073e, 0x0748, 0x074d, 0x0002, 0x0564, 0x0568, - 0x0002, 0x0007, 0x0717, 0x0717, 0x0002, 0x0007, 0x072c, 0x072c, - 0x0003, 0x0000, 0x0570, 0x0575, 0x0003, 0x0007, 0x0757, 0x0768, - 0x0774, 0x0002, 0x0578, 0x057c, 0x0002, 0x0007, 0x0785, 0x0785, - 0x0002, 0x0007, 0x079c, 0x079c, 0x0003, 0x0000, 0x0584, 0x0589, - 0x0003, 0x0007, 0x0757, 0x0768, 0x0774, 0x0002, 0x058c, 0x0590, - 0x0002, 0x0007, 0x0785, 0x0785, 0x0002, 0x0007, 0x079c, 0x079c, - // Entry 4600 - 463F - 0x0003, 0x0000, 0x0598, 0x059d, 0x0003, 0x0007, 0x07b0, 0x07bb, - 0x07c1, 0x0002, 0x05a0, 0x05a4, 0x0002, 0x0007, 0x0785, 0x0785, - 0x0002, 0x0007, 0x079c, 0x079c, 0x0001, 0x05aa, 0x0001, 0x0007, - 0x07cc, 0x0003, 0x05b1, 0x05b4, 0x05b8, 0x0001, 0x0007, 0x07d2, - 0x0002, 0x0007, 0xffff, 0x07d7, 0x0002, 0x05bb, 0x05bf, 0x0002, - 0x0007, 0x07df, 0x07df, 0x0002, 0x0007, 0x07f2, 0x07f2, 0x0003, - 0x05c7, 0x0000, 0x05ca, 0x0001, 0x0007, 0x0802, 0x0002, 0x05cd, - 0x05d1, 0x0002, 0x0007, 0x07df, 0x07df, 0x0002, 0x0007, 0x07f2, - // Entry 4640 - 467F - 0x07f2, 0x0003, 0x05d9, 0x0000, 0x05dc, 0x0001, 0x0007, 0x0802, - 0x0002, 0x05df, 0x05e3, 0x0002, 0x0007, 0x07df, 0x07df, 0x0002, - 0x0007, 0x07f2, 0x07f2, 0x0003, 0x05eb, 0x05ee, 0x05f2, 0x0001, - 0x0007, 0x0807, 0x0002, 0x0007, 0xffff, 0x0810, 0x0002, 0x05f5, - 0x05f9, 0x0002, 0x0007, 0x081c, 0x081c, 0x0002, 0x0007, 0x0833, - 0x0833, 0x0003, 0x0601, 0x0000, 0x0604, 0x0001, 0x0007, 0x0847, - 0x0002, 0x0607, 0x060b, 0x0002, 0x0007, 0x081c, 0x081c, 0x0002, - 0x0007, 0x0833, 0x0833, 0x0003, 0x0613, 0x0000, 0x0616, 0x0001, - // Entry 4680 - 46BF - 0x0007, 0x0847, 0x0002, 0x0619, 0x061d, 0x0002, 0x0007, 0x081c, - 0x081c, 0x0002, 0x0007, 0x0833, 0x0833, 0x0003, 0x0625, 0x0628, - 0x062c, 0x0001, 0x0007, 0x084d, 0x0002, 0x0007, 0xffff, 0x0855, - 0x0002, 0x062f, 0x0633, 0x0002, 0x0007, 0x085a, 0x085a, 0x0002, - 0x0007, 0x0870, 0x0870, 0x0003, 0x063b, 0x0000, 0x063e, 0x0001, - 0x0007, 0x0883, 0x0002, 0x0641, 0x0645, 0x0002, 0x0007, 0x085a, - 0x085a, 0x0002, 0x0007, 0x0870, 0x0870, 0x0003, 0x064d, 0x0000, - 0x0650, 0x0001, 0x0007, 0x0883, 0x0002, 0x0653, 0x0657, 0x0002, - // Entry 46C0 - 46FF - 0x0007, 0x085a, 0x085a, 0x0002, 0x0007, 0x0870, 0x0870, 0x0001, - 0x065d, 0x0001, 0x0007, 0x0888, 0x0004, 0x0665, 0x066a, 0x066f, - 0x067e, 0x0003, 0x0000, 0x1dc7, 0x1dd5, 0x213f, 0x0003, 0x0007, - 0x0898, 0x08a3, 0x08b2, 0x0002, 0x0000, 0x0672, 0x0003, 0x0000, - 0x0679, 0x0676, 0x0001, 0x0007, 0x08c6, 0x0003, 0x0007, 0xffff, - 0x08ef, 0x0904, 0x0002, 0x0000, 0x0681, 0x0003, 0x071b, 0x07b1, - 0x0685, 0x0094, 0x0007, 0x091a, 0x092e, 0x0946, 0x095c, 0x0987, - 0x09cd, 0x0a06, 0x0a50, 0x0abe, 0x0b29, 0x0b99, 0xffff, 0x0bf8, - // Entry 4700 - 473F - 0x0c30, 0x0c74, 0x0cbb, 0x0d0b, 0x0d4c, 0x0d93, 0x0dfb, 0x0e68, - 0x0ec2, 0x0f14, 0x0f53, 0x0f8a, 0x0fbb, 0x0fc8, 0x0fe9, 0x1018, - 0x1043, 0x1074, 0x1093, 0x10cb, 0x10fe, 0x1135, 0x1166, 0x117a, - 0x11a1, 0x11e4, 0x122c, 0x1251, 0x125e, 0x1277, 0x12a0, 0x12d5, - 0x12fc, 0x134f, 0x1388, 0x13ba, 0x140a, 0x1455, 0x147a, 0x1494, - 0x14ba, 0x14cb, 0x14ec, 0x151d, 0x1535, 0x1565, 0x15c2, 0x1603, - 0x1613, 0x1634, 0x1678, 0x16b3, 0x16d8, 0x16e9, 0x16fd, 0x170d, - 0x172a, 0x1745, 0x176c, 0x17a3, 0x17df, 0x181a, 0xffff, 0x1847, - // Entry 4740 - 477F - 0x1862, 0x188a, 0x18b3, 0x18d3, 0x1906, 0x191d, 0x1942, 0x196f, - 0x1993, 0x19be, 0x19cf, 0x19dd, 0x19ed, 0x1a14, 0x1a3f, 0x1a6a, - 0x1acc, 0x1b20, 0x1b5d, 0x1b86, 0x1b94, 0x1ba1, 0x1bc5, 0x1c16, - 0x1c63, 0x1c98, 0x1ca4, 0x1cd5, 0x1d2b, 0x1d6a, 0x1d9f, 0x1dcc, - 0x1dd9, 0x1e03, 0x1e3c, 0x1e71, 0x1e9e, 0x1ed1, 0x1f16, 0x1f25, - 0x1f33, 0x1f42, 0x1f51, 0x1f6e, 0x1fa7, 0x1fdd, 0x2004, 0x201c, - 0x202c, 0x2044, 0x205b, 0x206a, 0x2077, 0x2093, 0x20bc, 0x20ce, - 0x20ea, 0x2111, 0x2134, 0x216d, 0x218a, 0x21c9, 0x220d, 0x2238, - // Entry 4780 - 47BF - 0x225c, 0x22a0, 0x22cf, 0x22dd, 0x22e9, 0x2311, 0x2351, 0x0094, - 0x0007, 0xffff, 0xffff, 0xffff, 0xffff, 0x0972, 0x09be, 0x09f8, - 0x0a2f, 0x0a9f, 0x0b09, 0x0b76, 0xffff, 0x0bec, 0x0c1d, 0x0c63, - 0x0ca3, 0x0cf8, 0x0d3e, 0x0d77, 0x0dd8, 0x0e4e, 0x0ea9, 0x0f01, - 0x0f47, 0x0f78, 0xffff, 0xffff, 0x0fd8, 0xffff, 0x1031, 0xffff, - 0x1084, 0x10be, 0x10f2, 0x1123, 0xffff, 0xffff, 0x1190, 0x11d0, - 0x1220, 0xffff, 0xffff, 0xffff, 0x128c, 0xffff, 0x12e4, 0x1339, - 0xffff, 0x13a5, 0x13f1, 0x1449, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 47C0 - 47FF - 0x14da, 0xffff, 0xffff, 0x154a, 0x15a8, 0xffff, 0xffff, 0x1621, - 0x1667, 0x16a7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x175f, 0x1793, 0x17d0, 0x180a, 0xffff, 0xffff, 0xffff, 0x187c, - 0xffff, 0x18c0, 0xffff, 0xffff, 0x1932, 0xffff, 0x1984, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1a05, 0xffff, 0x1a4d, 0x1ab1, 0x1b0f, - 0x1b4f, 0xffff, 0xffff, 0xffff, 0x1bae, 0x1c00, 0x1c4f, 0xffff, - 0xffff, 0x1cba, 0x1d18, 0x1d5e, 0x1d8f, 0xffff, 0xffff, 0x1df3, - 0x1e30, 0x1e61, 0xffff, 0x1eb5, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4800 - 483F - 0xffff, 0x1f5f, 0x1f99, 0x1fd0, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2085, 0xffff, 0xffff, 0x20dd, 0xffff, - 0x211e, 0xffff, 0x217b, 0x21b5, 0x21fe, 0xffff, 0x2249, 0x228f, - 0xffff, 0xffff, 0xffff, 0x2302, 0x233c, 0x0094, 0x0007, 0xffff, - 0xffff, 0xffff, 0xffff, 0x09a5, 0x09e5, 0x0a1d, 0x0a7a, 0x0ae6, - 0x0b52, 0x0bc5, 0xffff, 0x0c0d, 0x0c4c, 0x0c8e, 0x0cdc, 0x0d27, - 0x0d63, 0x0db8, 0x0e27, 0x0e8b, 0x0ee4, 0x0f30, 0x0f68, 0x0fa5, - 0xffff, 0xffff, 0x1003, 0xffff, 0x105e, 0xffff, 0x10ab, 0x10e1, - // Entry 4840 - 487F - 0x1113, 0x1150, 0xffff, 0xffff, 0x11bb, 0x1201, 0x1241, 0xffff, - 0xffff, 0xffff, 0x12bd, 0xffff, 0x131d, 0x136e, 0xffff, 0x13d8, - 0x142c, 0x146a, 0xffff, 0xffff, 0xffff, 0xffff, 0x1507, 0xffff, - 0xffff, 0x1589, 0x15e5, 0xffff, 0xffff, 0x1650, 0x1692, 0x16c8, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1782, 0x17bc, - 0x17f7, 0x1833, 0xffff, 0xffff, 0xffff, 0x18a1, 0xffff, 0x18ef, - 0xffff, 0xffff, 0x195b, 0xffff, 0x19ab, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1a2c, 0xffff, 0x1a90, 0x1af0, 0x1b3a, 0x1b74, 0xffff, - // Entry 4880 - 48BF - 0xffff, 0xffff, 0x1be5, 0x1c35, 0x1c80, 0xffff, 0xffff, 0x1cf9, - 0x1d47, 0x1d7f, 0x1db8, 0xffff, 0xffff, 0x1e1c, 0x1e51, 0x1e8a, - 0xffff, 0x1ef6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f86, - 0x1fbe, 0x1ff3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x20aa, 0xffff, 0xffff, 0x2100, 0xffff, 0x2153, 0xffff, - 0x21a2, 0x21e6, 0x2225, 0xffff, 0x2278, 0x22ba, 0xffff, 0xffff, - 0xffff, 0x2329, 0x236f, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0025, 0x0008, 0x0000, - // Entry 48C0 - 48FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0004, - 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0007, 0x0000, 0x0001, - 0x0007, 0x0011, 0x0001, 0x0007, 0x001d, 0x0001, 0x0007, 0x0027, - 0x0008, 0x002e, 0x0075, 0x00cc, 0x00e0, 0x01db, 0x01f5, 0x0206, - 0x0000, 0x0002, 0x0031, 0x0053, 0x0003, 0x0035, 0x0000, 0x0044, - 0x000d, 0x0008, 0xffff, 0x0000, 0x0007, 0x000e, 0x0015, 0x001c, - 0x0023, 0x002a, 0x0031, 0x0038, 0x003f, 0x0046, 0x004d, 0x000d, - 0x0008, 0xffff, 0x0054, 0x0061, 0x006e, 0x0077, 0x001c, 0x0082, - // Entry 4900 - 493F - 0x008b, 0x0094, 0x00a1, 0x00b2, 0x00c1, 0x00ce, 0x0003, 0x0057, - 0x0000, 0x0066, 0x000d, 0x0008, 0xffff, 0x0000, 0x0007, 0x000e, - 0x0015, 0x001c, 0x0023, 0x002a, 0x0031, 0x0038, 0x003f, 0x0046, - 0x004d, 0x000d, 0x0008, 0xffff, 0x00db, 0x00e8, 0x00f5, 0x00fe, - 0x0109, 0x0110, 0x0119, 0x0122, 0x012f, 0x0140, 0x014f, 0x015c, - 0x0002, 0x0078, 0x00a2, 0x0005, 0x007e, 0x0087, 0x0099, 0x0000, - 0x0090, 0x0007, 0x0008, 0x0169, 0x016d, 0x0174, 0x017b, 0x017f, - 0x0186, 0x018a, 0x0007, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, - // Entry 4940 - 497F - 0x0039, 0x003b, 0x003d, 0x0007, 0x0008, 0x0169, 0x016d, 0x0174, - 0x017b, 0x017f, 0x0186, 0x018a, 0x0007, 0x0008, 0x018e, 0x0199, - 0x01b1, 0x01cf, 0x01e0, 0x01f6, 0x01ff, 0x0005, 0x00a8, 0x00b1, - 0x00c3, 0x0000, 0x00ba, 0x0007, 0x0008, 0x0169, 0x016d, 0x0174, - 0x017b, 0x017f, 0x0186, 0x018a, 0x0007, 0x0000, 0x003f, 0x0033, - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x0007, 0x0008, 0x0169, - 0x016d, 0x0174, 0x017b, 0x017f, 0x0186, 0x018a, 0x0007, 0x0008, - 0x018e, 0x0199, 0x01b1, 0x01cf, 0x01e0, 0x01f6, 0x01ff, 0x0001, - // Entry 4980 - 49BF - 0x00ce, 0x0003, 0x00d2, 0x0000, 0x00d9, 0x0005, 0x0008, 0xffff, - 0x020a, 0x0217, 0x0224, 0x0231, 0x0005, 0x0008, 0xffff, 0x023e, - 0x0254, 0x026a, 0x0280, 0x0002, 0x00e3, 0x0165, 0x0003, 0x00e7, - 0x0111, 0x013b, 0x000b, 0x00f6, 0x00fc, 0x00f3, 0x00ff, 0x0105, - 0x0108, 0x010b, 0x00f9, 0x0102, 0x0000, 0x010e, 0x0001, 0x0008, - 0x0296, 0x0001, 0x0008, 0x02a7, 0x0001, 0x0008, 0x02ac, 0x0001, - 0x0008, 0x02bb, 0x0001, 0x0008, 0x02c0, 0x0001, 0x0008, 0x02c9, - 0x0001, 0x0008, 0x02d4, 0x0001, 0x0008, 0x02e1, 0x0001, 0x0008, - // Entry 49C0 - 49FF - 0x02f4, 0x0001, 0x0008, 0x02ff, 0x000b, 0x0120, 0x0126, 0x011d, - 0x0129, 0x012f, 0x0132, 0x0135, 0x0123, 0x012c, 0x0000, 0x0138, - 0x0001, 0x0008, 0x0296, 0x0001, 0x0008, 0x0308, 0x0001, 0x0008, - 0x030b, 0x0001, 0x0008, 0x030e, 0x0001, 0x0008, 0x02c0, 0x0001, - 0x0008, 0x02c9, 0x0001, 0x0008, 0x02d4, 0x0001, 0x0008, 0x02e1, - 0x0001, 0x0008, 0x02f4, 0x0001, 0x0008, 0x02ff, 0x000b, 0x014a, - 0x0150, 0x0147, 0x0153, 0x0159, 0x015c, 0x015f, 0x014d, 0x0156, - 0x0000, 0x0162, 0x0001, 0x0008, 0x0296, 0x0001, 0x0008, 0x02a7, - // Entry 4A00 - 4A3F - 0x0001, 0x0008, 0x02ac, 0x0001, 0x0008, 0x02bb, 0x0001, 0x0008, - 0x02c0, 0x0001, 0x0008, 0x02c9, 0x0001, 0x0008, 0x02d4, 0x0001, - 0x0008, 0x02e1, 0x0001, 0x0008, 0x02f4, 0x0001, 0x0008, 0x02ff, - 0x0003, 0x0169, 0x018d, 0x01b1, 0x000b, 0x0000, 0x0000, 0x0175, - 0x017b, 0x0181, 0x0184, 0x0187, 0x0178, 0x017e, 0x0000, 0x018a, - 0x0001, 0x0008, 0x0296, 0x0001, 0x0008, 0x02ac, 0x0001, 0x0008, - 0x02c0, 0x0001, 0x0008, 0x02c9, 0x0001, 0x0008, 0x02d4, 0x0001, - 0x0008, 0x02e1, 0x0001, 0x0008, 0x02f4, 0x0001, 0x0008, 0x02ff, - // Entry 4A40 - 4A7F - 0x000b, 0x0000, 0x0000, 0x0199, 0x019f, 0x01a5, 0x01a8, 0x01ab, - 0x019c, 0x01a2, 0x0000, 0x01ae, 0x0001, 0x0008, 0x0296, 0x0001, - 0x0008, 0x02ac, 0x0001, 0x0008, 0x02c0, 0x0001, 0x0008, 0x02c9, - 0x0001, 0x0008, 0x02d4, 0x0001, 0x0008, 0x02e1, 0x0001, 0x0008, - 0x02f4, 0x0001, 0x0008, 0x02ff, 0x000b, 0x01c0, 0x01c6, 0x01bd, - 0x01c9, 0x01cf, 0x01d2, 0x01d5, 0x01c3, 0x01cc, 0x0000, 0x01d8, - 0x0001, 0x0008, 0x0296, 0x0001, 0x0008, 0x02a7, 0x0001, 0x0008, - 0x02ac, 0x0001, 0x0008, 0x02bb, 0x0001, 0x0008, 0x02c0, 0x0001, - // Entry 4A80 - 4ABF - 0x0008, 0x02c9, 0x0001, 0x0008, 0x02d4, 0x0001, 0x0008, 0x02e1, - 0x0001, 0x0008, 0x02f4, 0x0001, 0x0008, 0x02ff, 0x0003, 0x01ea, - 0x0000, 0x01df, 0x0002, 0x01e2, 0x01e6, 0x0002, 0x0008, 0x0311, - 0x0352, 0x0002, 0x0008, 0x032f, 0x0362, 0x0002, 0x01ed, 0x01f1, - 0x0002, 0x0008, 0x0374, 0x0385, 0x0002, 0x0008, 0x037b, 0x038c, - 0x0004, 0x0203, 0x01fd, 0x01fa, 0x0200, 0x0001, 0x0007, 0x0268, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0007, - 0x0277, 0x0004, 0x0214, 0x020e, 0x020b, 0x0211, 0x0001, 0x0000, - // Entry 4AC0 - 4AFF - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0001, 0x1fcc, - 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, - 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, - // Entry 4B00 - 4B3F - 0x000d, 0x0008, 0xffff, 0x0393, 0x0398, 0x039c, 0x03a0, 0x03a4, - 0x03a8, 0x03ac, 0x03b0, 0x03b4, 0x03b8, 0x03bc, 0x03c0, 0x000d, - 0x0008, 0xffff, 0x03c5, 0x03cf, 0x03d9, 0x03e2, 0x03e9, 0x03f2, - 0x03ff, 0x0407, 0x040f, 0x0419, 0x0422, 0x042d, 0x0002, 0x0000, - 0x0057, 0x000d, 0x0000, 0xffff, 0x1ffe, 0x1f9a, 0x1f9a, 0x1f9a, - 0x1f9a, 0x2143, 0x1f96, 0x2143, 0x2008, 0x2145, 0x1f9a, 0x200a, - 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, - 0x0008, 0x043e, 0x0443, 0x0447, 0x044b, 0x0450, 0x0455, 0x045b, - // Entry 4B40 - 4B7F - 0x0007, 0x0008, 0x045f, 0x046d, 0x047f, 0x048a, 0x0497, 0x04a4, - 0x04b1, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x1f96, 0x1f96, - 0x2010, 0x2147, 0x1f9a, 0x1ffe, 0x214a, 0x0001, 0x008d, 0x0003, - 0x0091, 0x0000, 0x0098, 0x0005, 0x0008, 0xffff, 0x04bd, 0x04c2, - 0x04c7, 0x04cc, 0x0005, 0x0008, 0xffff, 0x04d1, 0x04e7, 0x050a, - 0x052b, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, - 0x00a8, 0x00ab, 0x0001, 0x0008, 0x054c, 0x0001, 0x0008, 0x055a, - 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0008, 0x054c, 0x0001, 0x0008, - // Entry 4B80 - 4BBF - 0x055a, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, - 0x0008, 0x0566, 0x057e, 0x0001, 0x00c3, 0x0002, 0x0008, 0x0595, - 0x059b, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, - 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, - 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, - // Entry 4BC0 - 4BFF - 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, - 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x0008, - 0x05a1, 0x0001, 0x0131, 0x0001, 0x0008, 0x05a6, 0x0001, 0x0136, - // Entry 4C00 - 4C3F - 0x0001, 0x0008, 0x05ad, 0x0001, 0x013b, 0x0001, 0x0008, 0x05b2, - 0x0002, 0x0141, 0x0144, 0x0001, 0x0008, 0x05bc, 0x0003, 0x0008, - 0x05c1, 0x05c9, 0x05d0, 0x0001, 0x014b, 0x0001, 0x0008, 0x05d6, - 0x0001, 0x0150, 0x0001, 0x0008, 0x05ea, 0x0001, 0x0155, 0x0001, - 0x0008, 0x05f4, 0x0001, 0x015a, 0x0001, 0x0008, 0x05fc, 0x0001, - 0x015f, 0x0001, 0x0008, 0x0602, 0x0001, 0x0164, 0x0001, 0x0008, - 0x060f, 0x0003, 0x0004, 0x01d5, 0x0719, 0x0008, 0x000d, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0027, 0x0052, 0x0008, 0x0000, - // Entry 4C40 - 4C7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x9006, 0x0004, - 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x0625, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0008, 0x0620, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0000, - 0x0041, 0x0004, 0x003e, 0x0038, 0x0035, 0x003b, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0008, 0x0627, 0x0001, - 0x0008, 0x062f, 0x0004, 0x004f, 0x0049, 0x0046, 0x004c, 0x0001, - 0x0008, 0x063b, 0x0001, 0x0008, 0x063b, 0x0001, 0x0005, 0x0846, - // Entry 4C80 - 4CBF - 0x0001, 0x0005, 0x0846, 0x0008, 0x005b, 0x00c0, 0x0117, 0x014c, - 0x018d, 0x01a2, 0x01b3, 0x01c4, 0x0002, 0x005e, 0x008f, 0x0003, - 0x0062, 0x0071, 0x0080, 0x000d, 0x0008, 0xffff, 0x0648, 0x064f, - 0x0656, 0x065d, 0x0664, 0x066b, 0x0672, 0x0679, 0x0680, 0x0687, - 0x068e, 0x0695, 0x000d, 0x0008, 0xffff, 0x069c, 0x069f, 0x069c, - 0x06a2, 0x06a5, 0x06a8, 0x069f, 0x06ab, 0x06ae, 0x06a2, 0x069f, - 0x069c, 0x000d, 0x0008, 0xffff, 0x06b1, 0x06c2, 0x06cf, 0x06e0, - 0x0664, 0x06f3, 0x0702, 0x070f, 0x071c, 0x072b, 0x0742, 0x0755, - // Entry 4CC0 - 4CFF - 0x0003, 0x0093, 0x00a2, 0x00b1, 0x000d, 0x0008, 0xffff, 0x0648, - 0x064f, 0x0656, 0x065d, 0x001c, 0x066b, 0x0672, 0x0679, 0x0680, - 0x0687, 0x068e, 0x0695, 0x000d, 0x0008, 0xffff, 0x069c, 0x069f, - 0x069c, 0x06a2, 0x06a5, 0x06a8, 0x069f, 0x06ab, 0x06ae, 0x06a2, - 0x069f, 0x069c, 0x000d, 0x0008, 0xffff, 0x0762, 0x0773, 0x077c, - 0x078b, 0x001c, 0x079c, 0x07ab, 0x07b8, 0x07c7, 0x07d8, 0x07ed, - 0x07fe, 0x0002, 0x00c3, 0x00ed, 0x0005, 0x00c9, 0x00d2, 0x00e4, - 0x0000, 0x00db, 0x0007, 0x0008, 0x080d, 0x0812, 0x0817, 0x081c, - // Entry 4D00 - 4D3F - 0x0821, 0x0826, 0x082b, 0x0007, 0x0008, 0x0830, 0x030e, 0x0308, - 0x069c, 0x06a8, 0x030e, 0x069c, 0x0007, 0x0008, 0x080d, 0x0812, - 0x0817, 0x081c, 0x0821, 0x0826, 0x082b, 0x0007, 0x0008, 0x0833, - 0x0842, 0x0857, 0x0866, 0x0873, 0x0880, 0x088f, 0x0005, 0x00f3, - 0x00fc, 0x010e, 0x0000, 0x0105, 0x0007, 0x0008, 0x080d, 0x0812, - 0x0817, 0x081c, 0x0821, 0x0826, 0x082b, 0x0007, 0x0008, 0x0830, - 0x030e, 0x0308, 0x069c, 0x06a8, 0x030e, 0x069c, 0x0007, 0x0008, - 0x080d, 0x0812, 0x0817, 0x081c, 0x0821, 0x0826, 0x082b, 0x0007, - // Entry 4D40 - 4D7F - 0x0008, 0x0833, 0x0842, 0x0857, 0x0866, 0x0873, 0x0880, 0x088f, - 0x0002, 0x011a, 0x0133, 0x0003, 0x011e, 0x0125, 0x012c, 0x0005, - 0x0008, 0xffff, 0x089c, 0x08a9, 0x08b6, 0x08c3, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0008, 0xffff, - 0x08d0, 0x08e6, 0x08fc, 0x0912, 0x0003, 0x0137, 0x013e, 0x0145, - 0x0005, 0x0008, 0xffff, 0x089c, 0x08a9, 0x08b6, 0x08c3, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0008, - 0xffff, 0x08d0, 0x08e6, 0x08fc, 0x0912, 0x0002, 0x014f, 0x016e, - // Entry 4D80 - 4DBF - 0x0003, 0x0153, 0x015c, 0x0165, 0x0002, 0x0156, 0x0159, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x015f, 0x0162, - 0x0001, 0x0008, 0x0928, 0x0001, 0x0008, 0x092b, 0x0002, 0x0168, - 0x016b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, - 0x0172, 0x017b, 0x0184, 0x0002, 0x0175, 0x0178, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x017e, 0x0181, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x0187, 0x018a, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x019c, - // Entry 4DC0 - 4DFF - 0x0000, 0x0191, 0x0002, 0x0194, 0x0198, 0x0002, 0x0008, 0x092e, - 0x0970, 0x0002, 0x0008, 0x0959, 0x099b, 0x0001, 0x019e, 0x0002, - 0x0008, 0x09ad, 0x09b9, 0x0004, 0x01b0, 0x01aa, 0x01a7, 0x01ad, - 0x0001, 0x0008, 0x09c0, 0x0001, 0x0008, 0x09d5, 0x0001, 0x0008, - 0x09e4, 0x0001, 0x0008, 0x09eb, 0x0004, 0x01c1, 0x01bb, 0x01b8, - 0x01be, 0x0001, 0x0008, 0x09f3, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x01d2, 0x01cc, - 0x01c9, 0x01cf, 0x0001, 0x0008, 0x063b, 0x0001, 0x0008, 0x063b, - // Entry 4E00 - 4E3F - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x0216, - 0x0000, 0x0000, 0x021b, 0x023a, 0x0254, 0x026e, 0x028d, 0x02a7, - 0x02c1, 0x02e0, 0x02fa, 0x0314, 0x0337, 0x0355, 0x0000, 0x0000, - 0x0000, 0x0373, 0x0394, 0x03ae, 0x0000, 0x0000, 0x0000, 0x03c8, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03cd, 0x03e9, 0x0405, - 0x0421, 0x043d, 0x0459, 0x0475, 0x0491, 0x04ad, 0x04c9, 0x04e5, - 0x0501, 0x051d, 0x0539, 0x0555, 0x0571, 0x058d, 0x05a9, 0x05c5, - 0x05e1, 0x05fd, 0x0000, 0x0619, 0x0000, 0x061e, 0x063c, 0x0656, - // Entry 4E40 - 4E7F - 0x0670, 0x068e, 0x06a8, 0x06c2, 0x06e0, 0x06fa, 0x0714, 0x0001, - 0x0218, 0x0001, 0x0008, 0x0a02, 0x0003, 0x021f, 0x0222, 0x0227, - 0x0001, 0x0008, 0x0a09, 0x0003, 0x0008, 0x0a10, 0x0a2d, 0x0a46, - 0x0002, 0x022a, 0x0232, 0x0006, 0x0008, 0x0aa9, 0x0a67, 0xffff, - 0xffff, 0x0a7b, 0x0a91, 0x0006, 0x0008, 0x0b01, 0x0abf, 0xffff, - 0xffff, 0x0ad3, 0x0ae9, 0x0003, 0x023e, 0x0000, 0x0241, 0x0001, - 0x0008, 0x0b17, 0x0002, 0x0244, 0x024c, 0x0006, 0x0008, 0x0b1b, - 0x0b1b, 0xffff, 0xffff, 0x0b1b, 0x0b1b, 0x0006, 0x0008, 0x0b2c, - // Entry 4E80 - 4EBF - 0x0b2c, 0xffff, 0xffff, 0x0b2c, 0x0b2c, 0x0003, 0x0258, 0x0000, - 0x025b, 0x0001, 0x0008, 0x0b17, 0x0002, 0x025e, 0x0266, 0x0006, - 0x0008, 0x0b1b, 0x0b1b, 0xffff, 0xffff, 0x0b1b, 0x0b1b, 0x0006, - 0x0008, 0x0b2c, 0x0b2c, 0xffff, 0xffff, 0x0b2c, 0x0b2c, 0x0003, - 0x0272, 0x0275, 0x027a, 0x0001, 0x0008, 0x0b3d, 0x0003, 0x0008, - 0x0b4c, 0x0b6f, 0x0b8e, 0x0002, 0x027d, 0x0285, 0x0006, 0x0008, - 0x0c0f, 0x0bb5, 0xffff, 0xffff, 0x0bd1, 0x0bef, 0x0006, 0x0008, - 0x0c87, 0x0c2d, 0xffff, 0xffff, 0x0c49, 0x0c67, 0x0003, 0x0291, - // Entry 4EC0 - 4EFF - 0x0000, 0x0294, 0x0001, 0x0008, 0x0ca5, 0x0002, 0x0297, 0x029f, - 0x0006, 0x0008, 0x0cab, 0x0cab, 0xffff, 0xffff, 0x0cab, 0x0cab, - 0x0006, 0x0008, 0x0cbe, 0x0cbe, 0xffff, 0xffff, 0x0cbe, 0x0cbe, - 0x0003, 0x02ab, 0x0000, 0x02ae, 0x0001, 0x0008, 0x0ca5, 0x0002, - 0x02b1, 0x02b9, 0x0006, 0x0008, 0x0cab, 0x0cab, 0xffff, 0xffff, - 0x0cab, 0x0cab, 0x0006, 0x0008, 0x0cbe, 0x0cbe, 0xffff, 0xffff, - 0x0cbe, 0x0cbe, 0x0003, 0x02c5, 0x02c8, 0x02cd, 0x0001, 0x0008, - 0x0cd1, 0x0003, 0x0008, 0x0cdc, 0x0cfb, 0x0d16, 0x0002, 0x02d0, - // Entry 4F00 - 4F3F - 0x02d8, 0x0006, 0x0008, 0x0d87, 0x0d39, 0xffff, 0xffff, 0x0d51, - 0x0d6b, 0x0006, 0x0008, 0x0def, 0x0da1, 0xffff, 0xffff, 0x0db9, - 0x0dd3, 0x0003, 0x02e4, 0x0000, 0x02e7, 0x0001, 0x0008, 0x0e09, - 0x0002, 0x02ea, 0x02f2, 0x0006, 0x0008, 0x0e11, 0x0e11, 0xffff, - 0xffff, 0x0e11, 0x0e11, 0x0006, 0x0008, 0x0e26, 0x0e26, 0xffff, - 0xffff, 0x0e26, 0x0e26, 0x0003, 0x02fe, 0x0000, 0x0301, 0x0001, - 0x0008, 0x0e09, 0x0002, 0x0304, 0x030c, 0x0006, 0x0008, 0x0e11, - 0x0e11, 0xffff, 0xffff, 0x0e11, 0x0e11, 0x0006, 0x0008, 0x0e26, - // Entry 4F40 - 4F7F - 0x0e26, 0xffff, 0xffff, 0x0e26, 0x0e26, 0x0004, 0x0319, 0x031c, - 0x0321, 0x0334, 0x0001, 0x0008, 0x0e3b, 0x0003, 0x0008, 0x0e42, - 0x0e61, 0x0e7c, 0x0002, 0x0324, 0x032c, 0x0006, 0x0008, 0x0eed, - 0x0e9f, 0xffff, 0xffff, 0x0ebb, 0x0ed3, 0x0006, 0x0008, 0x0f53, - 0x0f05, 0xffff, 0xffff, 0x0f21, 0x0f39, 0x0001, 0x0008, 0x0f6b, - 0x0004, 0x033c, 0x0000, 0x033f, 0x0352, 0x0001, 0x0008, 0x0e3b, - 0x0002, 0x0342, 0x034a, 0x0006, 0x0008, 0x0f7e, 0x0f7e, 0xffff, - 0xffff, 0x0f7e, 0x0f7e, 0x0006, 0x0008, 0x0f92, 0x0f92, 0xffff, - // Entry 4F80 - 4FBF - 0xffff, 0x0f92, 0x0f92, 0x0001, 0x0008, 0x0f6b, 0x0004, 0x035a, - 0x0000, 0x035d, 0x0370, 0x0001, 0x0008, 0x0e3b, 0x0002, 0x0360, - 0x0368, 0x0006, 0x0008, 0x0f7e, 0x0f7e, 0xffff, 0xffff, 0x0f7e, - 0x0f7e, 0x0006, 0x0008, 0x0f92, 0x0f92, 0xffff, 0xffff, 0x0f92, - 0x0f92, 0x0001, 0x0008, 0x0f6b, 0x0003, 0x0377, 0x037a, 0x0381, - 0x0001, 0x0008, 0x0fa6, 0x0005, 0x0008, 0x0fc4, 0x0fcf, 0x0fda, - 0x0fb1, 0x0fe7, 0x0002, 0x0384, 0x038c, 0x0006, 0x0008, 0x1040, - 0x0ffe, 0xffff, 0xffff, 0x1016, 0x102a, 0x0006, 0x0008, 0x1096, - // Entry 4FC0 - 4FFF - 0x1054, 0xffff, 0xffff, 0x106c, 0x1080, 0x0003, 0x0398, 0x0000, - 0x039b, 0x0001, 0x0008, 0x0fa6, 0x0002, 0x039e, 0x03a6, 0x0006, - 0x0008, 0x1040, 0x0ffe, 0xffff, 0xffff, 0x1016, 0x102a, 0x0006, - 0x0008, 0x1096, 0x1054, 0xffff, 0xffff, 0x106c, 0x1080, 0x0003, - 0x03b2, 0x0000, 0x03b5, 0x0001, 0x0008, 0x10aa, 0x0002, 0x03b8, - 0x03c0, 0x0006, 0x0008, 0x10ae, 0x10ae, 0xffff, 0xffff, 0x10ae, - 0x10ae, 0x0006, 0x0008, 0x10bf, 0x10bf, 0xffff, 0xffff, 0x10bf, - 0x10bf, 0x0001, 0x03ca, 0x0001, 0x0008, 0x10d0, 0x0003, 0x0000, - // Entry 5000 - 503F - 0x03d1, 0x03d6, 0x0003, 0x0008, 0x10e6, 0x1107, 0x1122, 0x0002, - 0x03d9, 0x03e1, 0x0006, 0x0008, 0x1163, 0x1147, 0xffff, 0xffff, - 0x1163, 0x117f, 0x0006, 0x0008, 0x11b7, 0x119b, 0xffff, 0xffff, - 0x11b7, 0x11d3, 0x0003, 0x0000, 0x03ed, 0x03f2, 0x0003, 0x0008, - 0x11ef, 0x1206, 0x1217, 0x0002, 0x03f5, 0x03fd, 0x0006, 0x0008, - 0x1163, 0x1147, 0xffff, 0xffff, 0x1163, 0x117f, 0x0006, 0x0008, - 0x11b7, 0x119b, 0xffff, 0xffff, 0x11b7, 0x11d3, 0x0003, 0x0000, - 0x0409, 0x040e, 0x0003, 0x0008, 0x11ef, 0x1206, 0x1217, 0x0002, - // Entry 5040 - 507F - 0x0411, 0x0419, 0x0006, 0x0008, 0x1163, 0x1147, 0xffff, 0xffff, - 0x1163, 0x117f, 0x0006, 0x0008, 0x11b7, 0x119b, 0xffff, 0xffff, - 0x11b7, 0x11d3, 0x0003, 0x0000, 0x0425, 0x042a, 0x0003, 0x0008, - 0x1232, 0x1257, 0x1278, 0x0002, 0x042d, 0x0435, 0x0006, 0x0008, - 0x1309, 0x12a1, 0xffff, 0xffff, 0x12c3, 0x12e5, 0x0006, 0x0008, - 0x1393, 0x132b, 0xffff, 0xffff, 0x134d, 0x136f, 0x0003, 0x0000, - 0x0441, 0x0446, 0x0003, 0x0008, 0x13b5, 0x13ca, 0x13db, 0x0002, - 0x0449, 0x0451, 0x0006, 0x0008, 0x1309, 0x12a1, 0xffff, 0xffff, - // Entry 5080 - 50BF - 0x12c3, 0x12e5, 0x0006, 0x0008, 0x1393, 0x132b, 0xffff, 0xffff, - 0x134d, 0x136f, 0x0003, 0x0000, 0x045d, 0x0462, 0x0003, 0x0008, - 0x13b5, 0x13ca, 0x13db, 0x0002, 0x0465, 0x046d, 0x0006, 0x0008, - 0x1309, 0x12a1, 0xffff, 0xffff, 0x12c3, 0x12e5, 0x0006, 0x0008, - 0x1393, 0x132b, 0xffff, 0xffff, 0x134d, 0x136f, 0x0003, 0x0000, - 0x0479, 0x047e, 0x0003, 0x0008, 0x13f4, 0x1413, 0x142e, 0x0002, - 0x0481, 0x0489, 0x0006, 0x0008, 0x14a7, 0x1451, 0xffff, 0xffff, - 0x146d, 0x1489, 0x0006, 0x0008, 0x1519, 0x14c3, 0xffff, 0xffff, - // Entry 50C0 - 50FF - 0x14df, 0x14fb, 0x0003, 0x0000, 0x0495, 0x049a, 0x0003, 0x0008, - 0x1535, 0x154a, 0x155b, 0x0002, 0x049d, 0x04a5, 0x0006, 0x0008, - 0x14a7, 0x1451, 0xffff, 0xffff, 0x146d, 0x1489, 0x0006, 0x0008, - 0x1519, 0x14c3, 0xffff, 0xffff, 0x14df, 0x14fb, 0x0003, 0x0000, - 0x04b1, 0x04b6, 0x0003, 0x0008, 0x1535, 0x154a, 0x155b, 0x0002, - 0x04b9, 0x04c1, 0x0006, 0x0008, 0x14a7, 0x1451, 0xffff, 0xffff, - 0x146d, 0x1489, 0x0006, 0x0008, 0x1519, 0x14c3, 0xffff, 0xffff, - 0x14df, 0x14fb, 0x0003, 0x0000, 0x04cd, 0x04d2, 0x0003, 0x0008, - // Entry 5100 - 513F - 0x1574, 0x1593, 0x15ac, 0x0002, 0x04d5, 0x04dd, 0x0006, 0x0008, - 0x15e9, 0x15cf, 0xffff, 0xffff, 0x15e9, 0x1603, 0x0006, 0x0008, - 0x1635, 0x161b, 0xffff, 0xffff, 0x1635, 0x164f, 0x0003, 0x0000, - 0x04e9, 0x04ee, 0x0003, 0x0008, 0x1667, 0x167e, 0x168f, 0x0002, - 0x04f1, 0x04f9, 0x0006, 0x0008, 0x15e9, 0x15cf, 0xffff, 0xffff, - 0x15e9, 0x1603, 0x0006, 0x0008, 0x1635, 0x161b, 0xffff, 0xffff, - 0x1635, 0x164f, 0x0003, 0x0000, 0x0505, 0x050a, 0x0003, 0x0008, - 0x1667, 0x167e, 0x168f, 0x0002, 0x050d, 0x0515, 0x0006, 0x0008, - // Entry 5140 - 517F - 0x15e9, 0x15cf, 0xffff, 0xffff, 0x15e9, 0x1603, 0x0006, 0x0008, - 0x1635, 0x161b, 0xffff, 0xffff, 0x1635, 0x164f, 0x0003, 0x0000, - 0x0521, 0x0526, 0x0003, 0x0008, 0x16aa, 0x16c7, 0x16e0, 0x0002, - 0x0529, 0x0531, 0x0006, 0x0008, 0x1759, 0x1701, 0xffff, 0xffff, - 0x171b, 0x1739, 0x0006, 0x0008, 0x17cf, 0x1777, 0xffff, 0xffff, - 0x1791, 0x17af, 0x0003, 0x0000, 0x053d, 0x0542, 0x0003, 0x0008, - 0x17ed, 0x1802, 0x1813, 0x0002, 0x0545, 0x054d, 0x0006, 0x0008, - 0x1759, 0x1701, 0xffff, 0xffff, 0x171b, 0x1739, 0x0006, 0x0008, - // Entry 5180 - 51BF - 0x17cf, 0x1777, 0xffff, 0xffff, 0x1791, 0x17af, 0x0003, 0x0000, - 0x0559, 0x055e, 0x0003, 0x0008, 0x17ed, 0x1802, 0x1813, 0x0002, - 0x0561, 0x0569, 0x0006, 0x0008, 0x1759, 0x1701, 0xffff, 0xffff, - 0x171b, 0x1739, 0x0006, 0x0008, 0x17cf, 0x1777, 0xffff, 0xffff, - 0x1791, 0x17af, 0x0003, 0x0000, 0x0575, 0x057a, 0x0003, 0x0008, - 0x182c, 0x184d, 0x1868, 0x0002, 0x057d, 0x0585, 0x0006, 0x0008, - 0x18a9, 0x188d, 0xffff, 0xffff, 0x18a9, 0x18c5, 0x0006, 0x0008, - 0x18fb, 0x18df, 0xffff, 0xffff, 0x18fb, 0x1917, 0x0003, 0x0000, - // Entry 51C0 - 51FF - 0x0591, 0x0596, 0x0003, 0x0008, 0x1931, 0x1948, 0x1959, 0x0002, - 0x0599, 0x05a1, 0x0006, 0x0008, 0x18a9, 0x188d, 0xffff, 0xffff, - 0x18a9, 0x18c5, 0x0006, 0x0008, 0x18fb, 0x18df, 0xffff, 0xffff, - 0x18fb, 0x1917, 0x0003, 0x0000, 0x05ad, 0x05b2, 0x0003, 0x0008, - 0x1931, 0x1948, 0x1959, 0x0002, 0x05b5, 0x05bd, 0x0006, 0x0008, - 0x18a9, 0x188d, 0xffff, 0xffff, 0x18a9, 0x18c5, 0x0006, 0x0008, - 0x18fb, 0x18df, 0xffff, 0xffff, 0x18fb, 0x1917, 0x0003, 0x0000, - 0x05c9, 0x05ce, 0x0003, 0x0008, 0x1974, 0x1993, 0x19ac, 0x0002, - // Entry 5200 - 523F - 0x05d1, 0x05d9, 0x0006, 0x0008, 0x19e9, 0x19cf, 0xffff, 0xffff, - 0x19e9, 0x1a03, 0x0006, 0x0008, 0x1a35, 0x1a1b, 0xffff, 0xffff, - 0x1a35, 0x1a4f, 0x0003, 0x0000, 0x05e5, 0x05ea, 0x0003, 0x0008, - 0x1a67, 0x1a7e, 0x1a8f, 0x0002, 0x05ed, 0x05f5, 0x0006, 0x0008, - 0x19e9, 0x19cf, 0xffff, 0xffff, 0x19e9, 0x1a03, 0x0006, 0x0008, - 0x1a35, 0x1a1b, 0xffff, 0xffff, 0x1a35, 0x1a4f, 0x0003, 0x0000, - 0x0601, 0x0606, 0x0003, 0x0008, 0x1a67, 0x1a7e, 0x1a8f, 0x0002, - 0x0609, 0x0611, 0x0006, 0x0008, 0x19e9, 0x19cf, 0xffff, 0xffff, - // Entry 5240 - 527F - 0x19e9, 0x1a03, 0x0006, 0x0008, 0x1a35, 0x1a1b, 0xffff, 0xffff, - 0x1a35, 0x1a4f, 0x0001, 0x061b, 0x0001, 0x0007, 0x07cc, 0x0003, - 0x0622, 0x0625, 0x0629, 0x0001, 0x0008, 0x1aaa, 0x0002, 0x0008, - 0xffff, 0x1ab9, 0x0002, 0x062c, 0x0634, 0x0006, 0x0008, 0x1af0, - 0x1ad4, 0xffff, 0xffff, 0x1af0, 0x1b0c, 0x0006, 0x0008, 0x1b42, - 0x1b26, 0xffff, 0xffff, 0x1b42, 0x1b5e, 0x0003, 0x0640, 0x0000, - 0x0643, 0x0001, 0x0008, 0x1b78, 0x0002, 0x0646, 0x064e, 0x0006, - 0x0008, 0x1b81, 0x1b81, 0xffff, 0xffff, 0x1b81, 0x1b81, 0x0006, - // Entry 5280 - 52BF - 0x0008, 0x1b97, 0x1b97, 0xffff, 0xffff, 0x1b97, 0x1b97, 0x0003, - 0x065a, 0x0000, 0x065d, 0x0001, 0x0008, 0x1b78, 0x0002, 0x0660, - 0x0668, 0x0006, 0x0008, 0x1b81, 0x1b81, 0xffff, 0xffff, 0x1b81, - 0x1b81, 0x0006, 0x0008, 0x1b97, 0x1b97, 0xffff, 0xffff, 0x1b97, - 0x1b97, 0x0003, 0x0674, 0x0677, 0x067b, 0x0001, 0x0008, 0x1bad, - 0x0002, 0x0008, 0xffff, 0x1bbc, 0x0002, 0x067e, 0x0686, 0x0006, - 0x0008, 0x1bf3, 0x1bd7, 0xffff, 0xffff, 0x1bf3, 0x1c0f, 0x0006, - 0x0008, 0x1c45, 0x1c29, 0xffff, 0xffff, 0x1c45, 0x1c61, 0x0003, - // Entry 52C0 - 52FF - 0x0692, 0x0000, 0x0695, 0x0001, 0x0008, 0x1c7b, 0x0002, 0x0698, - 0x06a0, 0x0006, 0x0008, 0x1c80, 0x1c80, 0xffff, 0xffff, 0x1c80, - 0x1c80, 0x0006, 0x0008, 0x1c92, 0x1c92, 0xffff, 0xffff, 0x1c92, - 0x1c92, 0x0003, 0x06ac, 0x0000, 0x06af, 0x0001, 0x0008, 0x1c7b, - 0x0002, 0x06b2, 0x06ba, 0x0006, 0x0008, 0x1c80, 0x1c80, 0xffff, - 0xffff, 0x1c80, 0x1c80, 0x0006, 0x0008, 0x1c92, 0x1c92, 0xffff, - 0xffff, 0x1c92, 0x1c92, 0x0003, 0x06c6, 0x06c9, 0x06cd, 0x0001, - 0x0008, 0x1ca4, 0x0002, 0x0008, 0xffff, 0x1cb3, 0x0002, 0x06d0, - // Entry 5300 - 533F - 0x06d8, 0x0006, 0x0008, 0x1cda, 0x1cbe, 0xffff, 0xffff, 0x1cda, - 0x1cf6, 0x0006, 0x0008, 0x1d2c, 0x1d10, 0xffff, 0xffff, 0x1d2c, - 0x1d48, 0x0003, 0x06e4, 0x0000, 0x06e7, 0x0001, 0x0008, 0x069c, - 0x0002, 0x06ea, 0x06f2, 0x0006, 0x0008, 0x1d62, 0x1d62, 0xffff, - 0xffff, 0x1d62, 0x1d62, 0x0006, 0x0008, 0x1d72, 0x1d72, 0xffff, - 0xffff, 0x1d72, 0x1d72, 0x0003, 0x06fe, 0x0000, 0x0701, 0x0001, - 0x0008, 0x069c, 0x0002, 0x0704, 0x070c, 0x0006, 0x0008, 0x1d62, - 0x1d62, 0xffff, 0xffff, 0x1d62, 0x1d62, 0x0006, 0x0008, 0x1d72, - // Entry 5340 - 537F - 0x1d72, 0xffff, 0xffff, 0x1d72, 0x1d72, 0x0001, 0x0716, 0x0001, - 0x0008, 0x1d82, 0x0004, 0x071e, 0x0723, 0x0728, 0x0733, 0x0003, - 0x0008, 0x1d98, 0x1da6, 0x1dad, 0x0003, 0x0008, 0x1db1, 0x1dbd, - 0x1dd4, 0x0002, 0x0000, 0x072b, 0x0002, 0x0000, 0x072e, 0x0003, - 0x0008, 0xffff, 0x1df5, 0x1e1a, 0x0002, 0x0000, 0x0736, 0x0003, - 0x07d0, 0x0866, 0x073a, 0x0094, 0x0008, 0x1e49, 0x1e6b, 0x1e9b, - 0x1ec5, 0x1f1b, 0x1fa3, 0x2005, 0x209c, 0x217f, 0x2252, 0x2304, - 0xffff, 0x2374, 0x23dd, 0x246d, 0x24f4, 0x2580, 0x25e8, 0x2671, - // Entry 5380 - 53BF - 0x2733, 0x27fe, 0x289f, 0x2935, 0x29be, 0x2a4a, 0x2a9e, 0x2ab2, - 0x2aea, 0x2b42, 0x2b71, 0x2bc7, 0x2bef, 0x2c4f, 0x2cb1, 0x2d11, - 0x2d69, 0x2d8c, 0x2dd5, 0x2e52, 0x2eca, 0x2f0a, 0x2f2d, 0x2f61, - 0x2fab, 0x3011, 0x305d, 0x3107, 0x317b, 0x31bf, 0x3264, 0x32f8, - 0x333c, 0x3367, 0x33c7, 0x340d, 0x344b, 0x349f, 0x34c8, 0x3512, - 0x35b9, 0x3633, 0x365e, 0x3697, 0x371d, 0x377f, 0x37c3, 0x37d5, - 0x37fe, 0x381e, 0x3852, 0x3880, 0x38c4, 0x3926, 0x398e, 0x39fa, - 0xffff, 0x3a42, 0x3a70, 0x3ab0, 0x3af4, 0x3b37, 0x3b93, 0x3bb1, - // Entry 53C0 - 53FF - 0x3be9, 0x3c37, 0x3c7a, 0x3cd2, 0x3cea, 0x3d00, 0x3d2d, 0x3d72, - 0x3dc2, 0x3e23, 0x3ef6, 0x3f9f, 0x4013, 0x4067, 0x407c, 0x408e, - 0x40cd, 0x415a, 0x41e6, 0x4252, 0x4262, 0x42b5, 0x434d, 0x43bf, - 0x4421, 0x447d, 0x448f, 0x44d1, 0x453b, 0x45ab, 0x4603, 0x4652, - 0x46db, 0x4702, 0x4727, 0x4743, 0x475b, 0x479a, 0xffff, 0x4804, - 0x4848, 0x4877, 0x4895, 0x48c4, 0x48ef, 0x4907, 0x4926, 0x494c, - 0x4994, 0x49b4, 0x49dc, 0x4a20, 0x4a52, 0x4ab6, 0x4ae6, 0x4b5c, - 0x4bce, 0x4c1a, 0x4c5e, 0x4ce6, 0x4d46, 0x4d67, 0x4d88, 0x4dcf, - // Entry 5400 - 543F - 0x4e3d, 0x0094, 0x0008, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ef1, - 0x1f8f, 0x1feb, 0x2059, 0x2142, 0x2219, 0x22e4, 0xffff, 0x2364, - 0x23b4, 0x244f, 0x24c9, 0x256a, 0x25cc, 0x2640, 0x26f3, 0x27d3, - 0x2874, 0x2915, 0x2995, 0x2a30, 0xffff, 0xffff, 0x2ace, 0xffff, - 0x2b56, 0xffff, 0x2bdb, 0x2c37, 0x2c9f, 0x2cf5, 0xffff, 0xffff, - 0x2db7, 0x2e31, 0x2eba, 0xffff, 0xffff, 0xffff, 0x2f88, 0xffff, - 0x302d, 0x30dd, 0xffff, 0x3195, 0x3233, 0x32e6, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3431, 0xffff, 0xffff, 0x34e5, 0x358c, 0xffff, - // Entry 5440 - 547F - 0xffff, 0x3670, 0x3705, 0x376d, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x38ae, 0x3910, 0x3972, 0x39e6, 0xffff, 0xffff, - 0xffff, 0x3a9e, 0xffff, 0x3b19, 0xffff, 0xffff, 0x3bd2, 0xffff, - 0x3c5e, 0xffff, 0xffff, 0xffff, 0xffff, 0x3d5a, 0xffff, 0x3de5, - 0x3ebf, 0x3f82, 0x3ff9, 0xffff, 0xffff, 0xffff, 0x40a8, 0x4137, - 0x41c0, 0xffff, 0xffff, 0x4289, 0x432d, 0x43ad, 0x4403, 0xffff, - 0xffff, 0x44b9, 0x4521, 0x458f, 0xffff, 0x4628, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x477e, 0xffff, 0x47f2, 0xffff, 0xffff, - // Entry 5480 - 54BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4938, 0xffff, 0xffff, - 0x49ca, 0xffff, 0x4a30, 0xffff, 0x4aca, 0x4b3e, 0x4bb8, 0xffff, - 0x4c3a, 0x4cc6, 0xffff, 0xffff, 0xffff, 0x4dbb, 0x4e17, 0x0094, - 0x0008, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f5a, 0x1fcc, 0x2034, - 0x20f4, 0x21d1, 0x22a0, 0x2339, 0xffff, 0x2399, 0x241b, 0x24a0, - 0x2534, 0x25ab, 0x2619, 0x26b7, 0x2788, 0x283e, 0x28df, 0x296a, - 0x29fc, 0x2a79, 0xffff, 0xffff, 0x2b1b, 0xffff, 0x2ba1, 0xffff, - 0x2c18, 0x2c7c, 0x2cd8, 0x2d42, 0xffff, 0xffff, 0x2e08, 0x2e88, - // Entry 54C0 - 54FF - 0x2eef, 0xffff, 0xffff, 0xffff, 0x2fe3, 0xffff, 0x30a2, 0x3146, - 0xffff, 0x31fe, 0x32aa, 0x331f, 0xffff, 0xffff, 0xffff, 0xffff, - 0x347a, 0xffff, 0xffff, 0x3554, 0x35fb, 0xffff, 0xffff, 0x36d3, - 0x374a, 0x37a6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x38ef, 0x3951, 0x39bf, 0x3a23, 0xffff, 0xffff, 0xffff, 0x3ad7, - 0xffff, 0x3b6a, 0xffff, 0xffff, 0x3c15, 0xffff, 0x3cab, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3d9f, 0xffff, 0x3e76, 0x3f40, 0x3fd1, - 0x4042, 0xffff, 0xffff, 0xffff, 0x4107, 0x4192, 0x4221, 0xffff, - // Entry 5500 - 553F - 0xffff, 0x42f6, 0x4382, 0x43e6, 0x4454, 0xffff, 0xffff, 0x44fe, - 0x456a, 0x45dc, 0xffff, 0x4691, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x47cb, 0xffff, 0x482b, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x4975, 0xffff, 0xffff, 0x4a03, 0xffff, - 0x4a89, 0xffff, 0x4b17, 0x4b8f, 0x4bf9, 0xffff, 0x4c97, 0x4d1b, - 0xffff, 0xffff, 0xffff, 0x4df8, 0x4e78, 0x0002, 0x0003, 0x00bf, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - // Entry 5540 - 557F - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x0000, 0x0075, - 0x008d, 0x009d, 0x00ae, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x063a, - 0x063e, 0x200f, 0x0646, 0x064a, 0x064e, 0x2013, 0x0656, 0x065a, - 0x065e, 0x2017, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x0677, - 0x201b, 0x0646, 0x0684, 0x0689, 0x2021, 0x0696, 0x069f, 0x06a6, - // Entry 5580 - 55BF - 0x2028, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x1e5d, - 0x214c, 0x2066, 0x214e, 0x2066, 0x1e5d, 0x1e5d, 0x2150, 0x206a, - 0x2150, 0x1e63, 0x2053, 0x0001, 0x0068, 0x0003, 0x0000, 0x0000, - 0x006c, 0x0007, 0x0009, 0x0000, 0x000b, 0x0015, 0x0021, 0x002d, - 0x0037, 0x0043, 0x0001, 0x0077, 0x0003, 0x007b, 0x0000, 0x0084, - 0x0002, 0x007e, 0x0081, 0x0001, 0x0009, 0x0050, 0x0001, 0x0009, - 0x0059, 0x0002, 0x0087, 0x008a, 0x0001, 0x0009, 0x0050, 0x0001, - 0x0009, 0x0059, 0x0003, 0x0097, 0x0000, 0x0091, 0x0001, 0x0093, - // Entry 55C0 - 55FF - 0x0002, 0x0009, 0x0061, 0x006d, 0x0001, 0x0099, 0x0002, 0x0009, - 0x0078, 0x007b, 0x0004, 0x00ab, 0x00a5, 0x00a2, 0x00a8, 0x0001, - 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, - 0x0001, 0x0002, 0x0860, 0x0004, 0x00bc, 0x00b6, 0x00b3, 0x00b9, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, 0x00fd, 0x0000, 0x0000, - 0x0102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, 0x0000, - 0x0000, 0x010c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0111, - // Entry 5600 - 563F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x011c, 0x0000, 0x0121, 0x0000, 0x0000, 0x0126, 0x0000, - 0x0000, 0x012b, 0x0001, 0x00ff, 0x0001, 0x0009, 0x007e, 0x0001, - 0x0104, 0x0001, 0x0009, 0x0085, 0x0001, 0x0109, 0x0001, 0x0009, - 0x008c, 0x0001, 0x010e, 0x0001, 0x0009, 0x0094, 0x0002, 0x0114, - // Entry 5640 - 567F - 0x0117, 0x0001, 0x0009, 0x009d, 0x0003, 0x0000, 0x1b2f, 0x2152, - 0x1b3f, 0x0001, 0x011e, 0x0001, 0x0009, 0x00a6, 0x0001, 0x0123, - 0x0001, 0x0009, 0x00ae, 0x0001, 0x0128, 0x0001, 0x0009, 0x00b3, - 0x0001, 0x012d, 0x0001, 0x0009, 0x00ba, 0x0002, 0x0003, 0x00e9, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - // Entry 5680 - 56BF - 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, - 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - 0x0036, 0x0000, 0x0045, 0x000d, 0x0009, 0xffff, 0x00c2, 0x00c6, - 0x00ca, 0x00ce, 0x00d2, 0x00d6, 0x00da, 0x00de, 0x00e2, 0x00e6, - 0x00ea, 0x00ee, 0x000d, 0x0009, 0xffff, 0x00f2, 0x0107, 0x011c, - 0x0131, 0x0145, 0x015a, 0x016d, 0x0180, 0x0193, 0x01a6, 0x01b9, - 0x01d4, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x19c7, - 0x1edb, 0x2053, 0x04dd, 0x19c7, 0x206a, 0x206a, 0x1e63, 0x04dd, - // Entry 56C0 - 56FF - 0x2157, 0x2157, 0x2157, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, - 0x0000, 0x0076, 0x0007, 0x0009, 0x01f0, 0x00c6, 0x01f4, 0x01f8, - 0x01fc, 0x0200, 0x0204, 0x0007, 0x0009, 0x0208, 0x0213, 0x0222, - 0x022c, 0x0236, 0x0240, 0x024a, 0x0002, 0x0000, 0x0082, 0x0007, - 0x0000, 0x2066, 0x1e5d, 0x19c7, 0x19c7, 0x19c7, 0x2159, 0x1e5d, - 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0009, - 0xffff, 0x025a, 0x025d, 0x0260, 0x0263, 0x0005, 0x0009, 0xffff, - 0x0266, 0x026d, 0x0274, 0x027b, 0x0001, 0x00a1, 0x0003, 0x00a5, - // Entry 5700 - 573F - 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0009, 0x0282, - 0x0001, 0x0009, 0x028a, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0009, - 0x0282, 0x0001, 0x0009, 0x028a, 0x0003, 0x00c1, 0x0000, 0x00bb, - 0x0001, 0x00bd, 0x0002, 0x0009, 0x0292, 0x02a1, 0x0001, 0x00c3, - 0x0002, 0x0005, 0x076d, 0x0770, 0x0004, 0x00d5, 0x00cf, 0x00cc, - 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, - 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - // Entry 5740 - 577F - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, - 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, - // Entry 5780 - 57BF - 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, - 0x012c, 0x0001, 0x0009, 0x02b0, 0x0001, 0x0131, 0x0001, 0x0009, - 0x02b8, 0x0001, 0x0136, 0x0001, 0x0009, 0x02be, 0x0001, 0x013b, - 0x0001, 0x0009, 0x02c5, 0x0002, 0x0141, 0x0144, 0x0001, 0x0009, - 0x02d4, 0x0003, 0x0009, 0x02d9, 0x02df, 0x02eb, 0x0001, 0x014b, - 0x0001, 0x0009, 0x02f2, 0x0001, 0x0150, 0x0001, 0x0009, 0x02ff, - 0x0001, 0x0155, 0x0001, 0x0009, 0x0308, 0x0001, 0x015a, 0x0001, - 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, 0x0009, 0x030c, 0x0001, - // Entry 57C0 - 57FF - 0x0164, 0x0001, 0x0009, 0x0314, 0x0003, 0x0004, 0x029f, 0x06b1, - 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, - 0x003b, 0x0259, 0x0271, 0x0288, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, - 0x001e, 0x0024, 0x0001, 0x0009, 0x0323, 0x0001, 0x0009, 0x033a, - 0x0001, 0x0009, 0x034b, 0x0001, 0x0009, 0x035a, 0x0004, 0x0038, - 0x0032, 0x002f, 0x0035, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, - // Entry 5800 - 583F - 0x0044, 0x00a9, 0x0100, 0x0135, 0x020c, 0x0226, 0x0237, 0x0248, - 0x0002, 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, - 0x0009, 0xffff, 0x0364, 0x036b, 0x0372, 0x037b, 0x0382, 0x0389, - 0x0390, 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03b3, 0x000d, 0x0009, - 0xffff, 0x03ba, 0x03bd, 0x03c0, 0x03c3, 0x03c0, 0x03c6, 0x03c6, - 0x03c3, 0x03c9, 0x03cc, 0x03cf, 0x03d2, 0x000d, 0x0009, 0xffff, - 0x03d5, 0x03e2, 0x0372, 0x03f3, 0x0382, 0x0389, 0x0390, 0x03fe, - 0x040b, 0x041e, 0x042f, 0x043e, 0x0003, 0x007c, 0x008b, 0x009a, - // Entry 5840 - 587F - 0x000d, 0x0009, 0xffff, 0x0364, 0x036b, 0x0372, 0x037b, 0x0382, - 0x0389, 0x0390, 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03b3, 0x000d, - 0x0009, 0xffff, 0x03ba, 0x03bd, 0x03c0, 0x03c3, 0x03c0, 0x03c6, - 0x03c6, 0x03c3, 0x03c9, 0x03cc, 0x03cf, 0x03d2, 0x000d, 0x0009, - 0xffff, 0x03d5, 0x03e2, 0x0372, 0x03f3, 0x0382, 0x0389, 0x0390, - 0x03fe, 0x040b, 0x041e, 0x042f, 0x043e, 0x0002, 0x00ac, 0x00d6, - 0x0005, 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, 0x0007, 0x0008, - 0x080d, 0x0812, 0x4ea9, 0x081c, 0x4eae, 0x0826, 0x082b, 0x0007, - // Entry 5880 - 58BF - 0x0009, 0x03cf, 0x044f, 0x0452, 0x03c9, 0x0455, 0x044f, 0x03c9, - 0x0007, 0x0008, 0x080d, 0x0812, 0x4ea9, 0x081c, 0x4eae, 0x0826, - 0x082b, 0x0007, 0x0009, 0x0458, 0x0465, 0x047a, 0x0489, 0x0494, - 0x04a7, 0x04b2, 0x0005, 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, - 0x0007, 0x0008, 0x080d, 0x0812, 0x4ea9, 0x081c, 0x4eae, 0x0826, - 0x082b, 0x0007, 0x0009, 0x03cf, 0x044f, 0x0452, 0x03c9, 0x0455, - 0x044f, 0x03c9, 0x0007, 0x0008, 0x080d, 0x0812, 0x4ea9, 0x081c, - 0x4eae, 0x0826, 0x082b, 0x0007, 0x0009, 0x0458, 0x0465, 0x047a, - // Entry 58C0 - 58FF - 0x0489, 0x0494, 0x04a7, 0x04b2, 0x0002, 0x0103, 0x011c, 0x0003, - 0x0107, 0x010e, 0x0115, 0x0005, 0x0009, 0xffff, 0x04bf, 0x04cc, - 0x04d9, 0x04e6, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x0039, 0x0005, 0x0009, 0xffff, 0x04f3, 0x050b, 0x0523, 0x053b, - 0x0003, 0x0120, 0x0127, 0x012e, 0x0005, 0x0009, 0xffff, 0x04bf, - 0x04cc, 0x04d9, 0x04e6, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x0039, 0x0005, 0x0009, 0xffff, 0x04f3, 0x050b, 0x0523, - 0x053b, 0x0002, 0x0138, 0x01a2, 0x0003, 0x013c, 0x015e, 0x0180, - // Entry 5900 - 593F - 0x0009, 0x0149, 0x014c, 0x0146, 0x014f, 0x0155, 0x0158, 0x015b, - 0x0000, 0x0152, 0x0001, 0x0009, 0x0553, 0x0001, 0x0008, 0x0928, - 0x0001, 0x0008, 0x092b, 0x0001, 0x0009, 0x0562, 0x0001, 0x0009, - 0x0573, 0x0001, 0x0009, 0x0581, 0x0001, 0x0009, 0x0592, 0x0001, - 0x0009, 0x05a1, 0x0009, 0x016b, 0x016e, 0x0168, 0x0171, 0x0177, - 0x017a, 0x017d, 0x0000, 0x0174, 0x0001, 0x0009, 0x0553, 0x0001, - 0x0008, 0x0928, 0x0001, 0x0008, 0x092b, 0x0001, 0x0009, 0x0562, - 0x0001, 0x0009, 0x0573, 0x0001, 0x0009, 0x0581, 0x0001, 0x0009, - // Entry 5940 - 597F - 0x0592, 0x0001, 0x0009, 0x05a1, 0x0009, 0x018d, 0x0190, 0x018a, - 0x0193, 0x0199, 0x019c, 0x019f, 0x0000, 0x0196, 0x0001, 0x0009, - 0x0553, 0x0001, 0x0009, 0x05b5, 0x0001, 0x0009, 0x05c0, 0x0001, - 0x0009, 0x0562, 0x0001, 0x0009, 0x05cb, 0x0001, 0x0009, 0x0581, - 0x0001, 0x0009, 0x0592, 0x0001, 0x0009, 0x05a1, 0x0003, 0x01a6, - 0x01c8, 0x01ea, 0x0009, 0x01b3, 0x01b6, 0x01b0, 0x01b9, 0x01bf, - 0x01c2, 0x01c5, 0x0000, 0x01bc, 0x0001, 0x0009, 0x0553, 0x0001, - 0x0008, 0x0928, 0x0001, 0x0008, 0x092b, 0x0001, 0x0009, 0x0562, - // Entry 5980 - 59BF - 0x0001, 0x0009, 0x0573, 0x0001, 0x0009, 0x0581, 0x0001, 0x0009, - 0x0592, 0x0001, 0x0009, 0x05a1, 0x0009, 0x01d5, 0x01d8, 0x01d2, - 0x01db, 0x01e1, 0x01e4, 0x01e7, 0x0000, 0x01de, 0x0001, 0x0009, - 0x0553, 0x0001, 0x0008, 0x0928, 0x0001, 0x0008, 0x092b, 0x0001, - 0x0009, 0x0562, 0x0001, 0x0009, 0x0573, 0x0001, 0x0009, 0x0581, - 0x0001, 0x0009, 0x0592, 0x0001, 0x0009, 0x05a1, 0x0009, 0x01f7, - 0x01fa, 0x01f4, 0x01fd, 0x0203, 0x0206, 0x0209, 0x0000, 0x0200, - 0x0001, 0x0009, 0x0553, 0x0001, 0x0008, 0x0928, 0x0001, 0x0008, - // Entry 59C0 - 59FF - 0x092b, 0x0001, 0x0009, 0x0562, 0x0001, 0x0009, 0x0573, 0x0001, - 0x0009, 0x0581, 0x0001, 0x0009, 0x0592, 0x0001, 0x0009, 0x05a1, - 0x0003, 0x021b, 0x0000, 0x0210, 0x0002, 0x0213, 0x0217, 0x0002, - 0x0009, 0x05d9, 0x0610, 0x0002, 0x0009, 0x05f1, 0x0626, 0x0002, - 0x021e, 0x0222, 0x0002, 0x0009, 0x0643, 0x065a, 0x0002, 0x0009, - 0x064e, 0x0665, 0x0004, 0x0234, 0x022e, 0x022b, 0x0231, 0x0001, - 0x0008, 0x09c0, 0x0001, 0x0008, 0x09d5, 0x0001, 0x0009, 0x0671, - 0x0001, 0x0009, 0x067e, 0x0004, 0x0245, 0x023f, 0x023c, 0x0242, - // Entry 5A00 - 5A3F - 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, - 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x0256, 0x0250, 0x024d, - 0x0253, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x025b, 0x0001, - 0x025d, 0x0003, 0x0000, 0x0000, 0x0261, 0x000e, 0x0009, 0x06db, - 0x068c, 0x0697, 0x06a4, 0x06b1, 0x06bc, 0x06c7, 0x06d2, 0x06e7, - 0x06f2, 0x06f9, 0x0704, 0x070f, 0x0714, 0x0001, 0x0273, 0x0001, - 0x0275, 0x0003, 0x0000, 0x0000, 0x0279, 0x000d, 0x0009, 0xffff, - // Entry 5A40 - 5A7F - 0x071d, 0x072a, 0x073b, 0x074c, 0x0759, 0x0768, 0x0773, 0x0780, - 0x078f, 0x07a4, 0x07af, 0x07ba, 0x0001, 0x028a, 0x0001, 0x028c, - 0x0003, 0x0000, 0x0000, 0x0290, 0x000d, 0x0009, 0xffff, 0x07cb, - 0x07da, 0x07e5, 0x07f0, 0x07fb, 0x080c, 0x081d, 0x082a, 0x0835, - 0x0844, 0x084f, 0x0863, 0x0040, 0x02e0, 0x0000, 0x0000, 0x02e5, - 0x02fc, 0x0313, 0x032a, 0x0341, 0x0358, 0x036f, 0x0386, 0x039d, - 0x03b4, 0x03cf, 0x03ea, 0x0000, 0x0000, 0x0000, 0x0405, 0x041e, - 0x0437, 0x0000, 0x0000, 0x0000, 0x0450, 0x0000, 0x0000, 0x0000, - // Entry 5A80 - 5ABF - 0x0000, 0x0000, 0x0455, 0x0469, 0x047d, 0x0491, 0x04a5, 0x04b9, - 0x04cd, 0x04e1, 0x04f5, 0x0509, 0x051d, 0x0531, 0x0545, 0x0559, - 0x056d, 0x0581, 0x0595, 0x05a9, 0x05bd, 0x05d1, 0x05e5, 0x0000, - 0x05f9, 0x0000, 0x05fe, 0x0614, 0x0626, 0x0638, 0x064e, 0x0660, - 0x0672, 0x0688, 0x069a, 0x06ac, 0x0001, 0x02e2, 0x0001, 0x0009, - 0x0877, 0x0003, 0x02e9, 0x02ec, 0x02f1, 0x0001, 0x0009, 0x087e, - 0x0003, 0x0009, 0x088b, 0x08a9, 0x08bf, 0x0002, 0x02f4, 0x02f8, - 0x0002, 0x0009, 0x08fb, 0x08e1, 0x0002, 0x0009, 0x0931, 0x0915, - // Entry 5AC0 - 5AFF - 0x0003, 0x0300, 0x0303, 0x0308, 0x0001, 0x0008, 0x0b17, 0x0003, - 0x0009, 0x094d, 0x0959, 0x0961, 0x0002, 0x030b, 0x030f, 0x0002, - 0x0009, 0x0971, 0x0971, 0x0002, 0x0009, 0x0982, 0x0982, 0x0003, - 0x0317, 0x031a, 0x031f, 0x0001, 0x0008, 0x0b17, 0x0003, 0x0009, - 0x094d, 0x0959, 0x0995, 0x0002, 0x0322, 0x0326, 0x0002, 0x0009, - 0x099f, 0x099f, 0x0002, 0x0009, 0x09ad, 0x09ad, 0x0003, 0x032e, - 0x0331, 0x0336, 0x0001, 0x0009, 0x09bb, 0x0003, 0x0009, 0x09d0, - 0x09f8, 0x0a16, 0x0002, 0x0339, 0x033d, 0x0002, 0x0009, 0x0a5e, - // Entry 5B00 - 5B3F - 0x0a3c, 0x0002, 0x0009, 0x0aa4, 0x0a80, 0x0003, 0x0345, 0x0348, - 0x034d, 0x0001, 0x0009, 0x0ac8, 0x0003, 0x0009, 0x0ad2, 0x0ae4, - 0x0af7, 0x0002, 0x0350, 0x0354, 0x0002, 0x0009, 0x0b0d, 0x0b0d, - 0x0002, 0x0009, 0x0b21, 0x0b21, 0x0003, 0x035c, 0x035f, 0x0364, - 0x0001, 0x0009, 0x0ac8, 0x0003, 0x0009, 0x0ad2, 0x0ae4, 0x0af7, - 0x0002, 0x0367, 0x036b, 0x0002, 0x0009, 0x0b0d, 0x0b0d, 0x0002, - 0x0009, 0x0b21, 0x0b21, 0x0003, 0x0373, 0x0376, 0x037b, 0x0001, - 0x0009, 0x0b35, 0x0003, 0x0009, 0x0b40, 0x0b5e, 0x0b72, 0x0002, - // Entry 5B40 - 5B7F - 0x037e, 0x0382, 0x0002, 0x0009, 0x0ba4, 0x0b8c, 0x0002, 0x0009, - 0x0bd8, 0x0bbe, 0x0003, 0x038a, 0x038d, 0x0392, 0x0001, 0x0009, - 0x03c0, 0x0003, 0x0009, 0x0bf4, 0x0c04, 0x0c15, 0x0002, 0x0395, - 0x0399, 0x0002, 0x0009, 0x0c29, 0x0c29, 0x0002, 0x0009, 0x0c3a, - 0x0c3a, 0x0003, 0x03a1, 0x03a4, 0x03a9, 0x0001, 0x0009, 0x03c0, - 0x0003, 0x0009, 0x0c4d, 0x0c59, 0x0c61, 0x0002, 0x03ac, 0x03b0, - 0x0002, 0x0009, 0x0c6b, 0x0c6b, 0x0002, 0x0009, 0x0c79, 0x0c79, - 0x0004, 0x03b9, 0x03bc, 0x03c1, 0x03cc, 0x0001, 0x0009, 0x0c87, - // Entry 5B80 - 5BBF - 0x0003, 0x0009, 0x0c96, 0x0cbc, 0x0cd4, 0x0002, 0x03c4, 0x03c8, - 0x0002, 0x0009, 0x0d14, 0x0cf8, 0x0002, 0x0009, 0x0d4e, 0x0d30, - 0x0001, 0x0009, 0x0d6c, 0x0004, 0x03d4, 0x03d7, 0x03dc, 0x03e7, - 0x0001, 0x0009, 0x0d88, 0x0003, 0x0009, 0x0d92, 0x0db2, 0x0dc5, - 0x0002, 0x03df, 0x03e3, 0x0002, 0x0009, 0x0ddb, 0x0ddb, 0x0002, - 0x0009, 0x0df2, 0x0df2, 0x0001, 0x0009, 0x0d6c, 0x0004, 0x03ef, - 0x03f2, 0x03f7, 0x0402, 0x0001, 0x0009, 0x0d88, 0x0003, 0x0009, - 0x0e0b, 0x0db2, 0x0e1d, 0x0002, 0x03fa, 0x03fe, 0x0002, 0x0009, - // Entry 5BC0 - 5BFF - 0x0e2d, 0x0e2d, 0x0002, 0x0009, 0x0e41, 0x0e41, 0x0001, 0x0009, - 0x0d6c, 0x0003, 0x0409, 0x040c, 0x0413, 0x0001, 0x0009, 0x0e55, - 0x0005, 0x0009, 0x0e6c, 0x0e77, 0x0e80, 0x0e5c, 0x0e89, 0x0002, - 0x0416, 0x041a, 0x0002, 0x0009, 0x0eb0, 0x0e9c, 0x0002, 0x0009, - 0x0eda, 0x0ec4, 0x0003, 0x0422, 0x0425, 0x042c, 0x0001, 0x0009, - 0x03d2, 0x0005, 0x0009, 0x0e6c, 0x0e77, 0x0e80, 0x0e5c, 0x0e89, - 0x0002, 0x042f, 0x0433, 0x0002, 0x0009, 0x0eb0, 0x0e9c, 0x0002, - 0x0009, 0x0eda, 0x0ec4, 0x0003, 0x043b, 0x043e, 0x0445, 0x0001, - // Entry 5C00 - 5C3F - 0x0009, 0x03d2, 0x0005, 0x0009, 0x0e6c, 0x0e77, 0x0e80, 0x0e5c, - 0x0e89, 0x0002, 0x0448, 0x044c, 0x0002, 0x0009, 0x0ef0, 0x0ef0, - 0x0002, 0x0009, 0x0efd, 0x0efd, 0x0001, 0x0452, 0x0001, 0x0009, - 0x0f0a, 0x0003, 0x0000, 0x0459, 0x045e, 0x0003, 0x0009, 0x0f29, - 0x0f4d, 0x0f63, 0x0002, 0x0461, 0x0465, 0x0002, 0x0009, 0x0f9f, - 0x0f85, 0x0002, 0x0009, 0x0fd5, 0x0fb9, 0x0003, 0x0000, 0x046d, - 0x0472, 0x0003, 0x0009, 0x0ff1, 0x100d, 0x101b, 0x0002, 0x0475, - 0x0479, 0x0002, 0x0009, 0x0f9f, 0x0f85, 0x0002, 0x0009, 0x0fd5, - // Entry 5C40 - 5C7F - 0x0fb9, 0x0003, 0x0000, 0x0481, 0x0486, 0x0003, 0x0009, 0x1035, - 0x100d, 0x1046, 0x0002, 0x0489, 0x048d, 0x0002, 0x0009, 0x0f9f, - 0x0f85, 0x0002, 0x0009, 0x0fd5, 0x0fb9, 0x0003, 0x0000, 0x0495, - 0x049a, 0x0003, 0x0009, 0x1057, 0x1083, 0x10a1, 0x0002, 0x049d, - 0x04a1, 0x0002, 0x0009, 0x10ed, 0x10cb, 0x0002, 0x0009, 0x1135, - 0x1111, 0x0003, 0x0000, 0x04a9, 0x04ae, 0x0003, 0x0009, 0x115b, - 0x1177, 0x1185, 0x0002, 0x04b1, 0x04b5, 0x0002, 0x0009, 0x10ed, - 0x10cb, 0x0002, 0x0009, 0x1135, 0x1111, 0x0003, 0x0000, 0x04bd, - // Entry 5C80 - 5CBF - 0x04c2, 0x0003, 0x0009, 0x119f, 0x1177, 0x11b0, 0x0002, 0x04c5, - 0x04c9, 0x0002, 0x0009, 0x10ed, 0x10cb, 0x0002, 0x0009, 0x1135, - 0x1111, 0x0003, 0x0000, 0x04d1, 0x04d6, 0x0003, 0x0009, 0x11c1, - 0x11e7, 0x11ff, 0x0002, 0x04d9, 0x04dd, 0x0002, 0x0009, 0x123f, - 0x1223, 0x0002, 0x0009, 0x127b, 0x125d, 0x0003, 0x0000, 0x04e5, - 0x04ea, 0x0003, 0x0009, 0x129b, 0x12b7, 0x12c5, 0x0002, 0x04ed, - 0x04f1, 0x0002, 0x0009, 0x123f, 0x1223, 0x0002, 0x0009, 0x127b, - 0x125d, 0x0003, 0x0000, 0x04f9, 0x04fe, 0x0003, 0x0009, 0x12df, - // Entry 5CC0 - 5CFF - 0x12b7, 0x12f0, 0x0002, 0x0501, 0x0505, 0x0002, 0x0009, 0x123f, - 0x1223, 0x0002, 0x0009, 0x127b, 0x125d, 0x0003, 0x0000, 0x050d, - 0x0512, 0x0003, 0x0009, 0x1301, 0x1323, 0x1337, 0x0002, 0x0515, - 0x0519, 0x0002, 0x0009, 0x136f, 0x1357, 0x0002, 0x0009, 0x13a1, - 0x1387, 0x0003, 0x0000, 0x0521, 0x0526, 0x0003, 0x0009, 0x13bb, - 0x13d7, 0x13e5, 0x0002, 0x0529, 0x052d, 0x0002, 0x0009, 0x136f, - 0x1357, 0x0002, 0x0009, 0x13a1, 0x1387, 0x0003, 0x0000, 0x0535, - 0x053a, 0x0003, 0x0009, 0x13ff, 0x13d7, 0x1410, 0x0002, 0x053d, - // Entry 5D00 - 5D3F - 0x0541, 0x0002, 0x0009, 0x136f, 0x1357, 0x0002, 0x0009, 0x13a1, - 0x1387, 0x0003, 0x0000, 0x0549, 0x054e, 0x0003, 0x0009, 0x1421, - 0x144b, 0x1467, 0x0002, 0x0551, 0x0555, 0x0002, 0x0009, 0x14af, - 0x148f, 0x0002, 0x0009, 0x14f3, 0x14d1, 0x0003, 0x0000, 0x055d, - 0x0562, 0x0003, 0x0009, 0x1421, 0x1517, 0x1525, 0x0002, 0x0565, - 0x0569, 0x0002, 0x0009, 0x14af, 0x148f, 0x0002, 0x0009, 0x14f3, - 0x14d1, 0x0003, 0x0000, 0x0571, 0x0576, 0x0003, 0x0009, 0x153f, - 0x1517, 0x1550, 0x0002, 0x0579, 0x057d, 0x0002, 0x0009, 0x14af, - // Entry 5D40 - 5D7F - 0x148f, 0x0002, 0x0009, 0x14f3, 0x14d1, 0x0003, 0x0000, 0x0585, - 0x058a, 0x0003, 0x0009, 0x1561, 0x1583, 0x1597, 0x0002, 0x058d, - 0x0591, 0x0002, 0x0009, 0x15cf, 0x15b7, 0x0002, 0x0009, 0x1603, - 0x15e9, 0x0003, 0x0000, 0x0599, 0x059e, 0x0003, 0x0009, 0x1561, - 0x161f, 0x162d, 0x0002, 0x05a1, 0x05a5, 0x0002, 0x0009, 0x15cf, - 0x15b7, 0x0002, 0x0009, 0x1603, 0x15e9, 0x0003, 0x0000, 0x05ad, - 0x05b2, 0x0003, 0x0009, 0x1647, 0x161f, 0x1658, 0x0002, 0x05b5, - 0x05b9, 0x0002, 0x0009, 0x15cf, 0x15b7, 0x0002, 0x0009, 0x1603, - // Entry 5D80 - 5DBF - 0x15e9, 0x0003, 0x0000, 0x05c1, 0x05c6, 0x0003, 0x0009, 0x1669, - 0x168d, 0x16a3, 0x0002, 0x05c9, 0x05cd, 0x0002, 0x0009, 0x16df, - 0x16c5, 0x0002, 0x0009, 0x1715, 0x16f9, 0x0003, 0x0000, 0x05d5, - 0x05da, 0x0003, 0x0009, 0x1731, 0x174d, 0x175b, 0x0002, 0x05dd, - 0x05e1, 0x0002, 0x0009, 0x16df, 0x16c5, 0x0002, 0x0009, 0x1715, - 0x16f9, 0x0003, 0x0000, 0x05e9, 0x05ee, 0x0003, 0x0009, 0x1775, - 0x174d, 0x1786, 0x0002, 0x05f1, 0x05f5, 0x0002, 0x0009, 0x16df, - 0x16c5, 0x0002, 0x0009, 0x1715, 0x16f9, 0x0001, 0x05fb, 0x0001, - // Entry 5DC0 - 5DFF - 0x0009, 0x1797, 0x0003, 0x0602, 0x0605, 0x0609, 0x0001, 0x0009, - 0x17ad, 0x0002, 0x0009, 0xffff, 0x17b4, 0x0002, 0x060c, 0x0610, - 0x0002, 0x0009, 0x17db, 0x17c7, 0x0002, 0x0009, 0x1807, 0x17f1, - 0x0003, 0x0618, 0x0000, 0x061b, 0x0001, 0x0009, 0x0455, 0x0002, - 0x061e, 0x0622, 0x0002, 0x0009, 0x181f, 0x181f, 0x0002, 0x0009, - 0x182f, 0x182f, 0x0003, 0x062a, 0x0000, 0x062d, 0x0001, 0x0009, - 0x0455, 0x0002, 0x0630, 0x0634, 0x0002, 0x0009, 0x1841, 0x1841, - 0x0002, 0x0009, 0x184e, 0x184e, 0x0003, 0x063c, 0x063f, 0x0643, - // Entry 5E00 - 5E3F - 0x0001, 0x0009, 0x185b, 0x0002, 0x0009, 0xffff, 0x1868, 0x0002, - 0x0646, 0x064a, 0x0002, 0x0009, 0x189b, 0x1881, 0x0002, 0x0009, - 0x18d1, 0x18b5, 0x0003, 0x0652, 0x0000, 0x0655, 0x0001, 0x0009, - 0x18ed, 0x0002, 0x0658, 0x065c, 0x0002, 0x0009, 0x18f4, 0x18f4, - 0x0002, 0x0009, 0x1908, 0x1908, 0x0003, 0x0664, 0x0000, 0x0667, - 0x0001, 0x0009, 0x18ed, 0x0002, 0x066a, 0x066e, 0x0002, 0x0009, - 0x191e, 0x191e, 0x0002, 0x0009, 0x192f, 0x192f, 0x0003, 0x0676, - 0x0679, 0x067d, 0x0001, 0x0008, 0x1ca4, 0x0002, 0x0009, 0xffff, - // Entry 5E40 - 5E7F - 0x1940, 0x0002, 0x0680, 0x0684, 0x0002, 0x0009, 0x1965, 0x1949, - 0x0002, 0x0009, 0x199f, 0x1981, 0x0003, 0x068c, 0x0000, 0x068f, - 0x0001, 0x0009, 0x03c9, 0x0002, 0x0692, 0x0696, 0x0002, 0x0009, - 0x19bd, 0x19bd, 0x0002, 0x0009, 0x19d1, 0x19d1, 0x0003, 0x069e, - 0x0000, 0x06a1, 0x0001, 0x0009, 0x03c9, 0x0002, 0x06a4, 0x06a8, - 0x0002, 0x0009, 0x19e7, 0x19e7, 0x0002, 0x0009, 0x19f8, 0x19f8, - 0x0001, 0x06ae, 0x0001, 0x0009, 0x1a09, 0x0004, 0x06b6, 0x06bb, - 0x06c0, 0x06cf, 0x0003, 0x0000, 0x1dc7, 0x215b, 0x216d, 0x0003, - // Entry 5E80 - 5EBF - 0x0000, 0x1de0, 0x217c, 0x21a4, 0x0002, 0x0000, 0x06c3, 0x0003, - 0x0000, 0x06ca, 0x06c7, 0x0001, 0x0009, 0x1a1f, 0x0003, 0x0009, - 0xffff, 0x1a5a, 0x1a90, 0x0002, 0x0000, 0x06d2, 0x0003, 0x076c, - 0x0802, 0x06d6, 0x0094, 0x0009, 0x1ac3, 0x1ae9, 0x1b1b, 0x1b49, - 0x1b9f, 0x1c35, 0x1cb8, 0x1d64, 0x1e56, 0x1f44, 0x2040, 0x2117, - 0x2185, 0x21fc, 0x227f, 0x2320, 0x23c9, 0x2477, 0x256b, 0x2646, - 0x272c, 0x27ec, 0x28a3, 0x293e, 0x29e7, 0x2a58, 0x2a74, 0x2ab2, - 0x2b1b, 0x2b51, 0x2bc4, 0x2c00, 0x2c7d, 0x2cfe, 0x2d87, 0x2dfc, - // Entry 5EC0 - 5EFF - 0x2e1c, 0x2e5e, 0x2ee5, 0x2f78, 0x2fdd, 0x2fea, 0x3002, 0x3050, - 0x30e3, 0x3135, 0x31f4, 0x327d, 0x32e8, 0x338a, 0x342c, 0x348d, - 0x34a9, 0x34f2, 0x3514, 0x353f, 0x35a8, 0x35c6, 0x3621, 0x36de, - 0x376b, 0x3789, 0x37c1, 0x3868, 0x38ef, 0x3950, 0x3981, 0x399d, - 0x39c1, 0x39f7, 0x3a29, 0x3a75, 0x3af2, 0x3b75, 0x3bf8, 0x3c92, - 0x3d35, 0x3d67, 0x3db5, 0x3e1a, 0x3e49, 0x3eba, 0x3ee0, 0x3f18, - 0x3f83, 0x3fb4, 0x4021, 0x4043, 0x4065, 0x4085, 0x40b8, 0x4125, - 0x416b, 0x4245, 0x430c, 0x439f, 0x4408, 0x4428, 0x4433, 0x4477, - // Entry 5F00 - 5F3F - 0x451a, 0x45bb, 0x4638, 0x4641, 0x4673, 0x4728, 0x47b3, 0x482e, - 0x489f, 0x48aa, 0x48ed, 0x497c, 0x4a05, 0x4a72, 0x4ab0, 0x4b3f, - 0x4b4e, 0x4b5b, 0x4b7a, 0x4b89, 0x4bb6, 0x4c3b, 0x4cbe, 0x4d27, - 0x4d49, 0x4d6b, 0x4d8f, 0x4da9, 0x4dc9, 0x4dd2, 0x4dfb, 0x4e5c, - 0x4e84, 0x4e9e, 0x4eff, 0x4f32, 0x4fb3, 0x4fe0, 0x5073, 0x50fb, - 0x5164, 0x51ae, 0x524f, 0x52c4, 0x52d1, 0x52e7, 0x531c, 0x53af, - 0x0094, 0x0009, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b71, 0x1c28, - 0x1c9a, 0x1d21, 0x1e17, 0x1f01, 0x1ff7, 0x20ff, 0x217c, 0x21e2, - // Entry 5F40 - 5F7F - 0x225d, 0x22f0, 0x23ad, 0x242e, 0x2536, 0x2602, 0x26fb, 0x27bb, - 0x287b, 0x2920, 0x29c5, 0xffff, 0xffff, 0x2a94, 0xffff, 0x2b3d, - 0xffff, 0x2bf5, 0x2c61, 0x2ce2, 0x2d63, 0xffff, 0xffff, 0x2e3c, - 0x2ecf, 0x2f5c, 0xffff, 0xffff, 0xffff, 0x302c, 0xffff, 0x3103, - 0x31c6, 0xffff, 0x32ba, 0x3364, 0x3421, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3521, 0xffff, 0xffff, 0x35f1, 0x36ae, 0xffff, 0xffff, - 0x3794, 0x3848, 0x38d5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3a5b, 0x3ad6, 0x3b57, 0x3bde, 0x3c59, 0xffff, 0xffff, - // Entry 5F80 - 5FBF - 0x3d99, 0xffff, 0x3e27, 0xffff, 0xffff, 0x3f08, 0xffff, 0x3f94, - 0xffff, 0xffff, 0xffff, 0xffff, 0x40a7, 0xffff, 0x4132, 0x420a, - 0x42e8, 0x4381, 0xffff, 0xffff, 0xffff, 0x444f, 0x44f4, 0x4593, - 0xffff, 0xffff, 0x4650, 0x4704, 0x479d, 0x480c, 0xffff, 0xffff, - 0x48cb, 0x495e, 0x49e5, 0xffff, 0x4a8e, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4b96, 0x4c23, 0x4ca0, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x4df0, 0xffff, 0xffff, 0x4e93, - 0xffff, 0x4f08, 0xffff, 0x4fc0, 0x504d, 0x50ec, 0xffff, 0x5186, - // Entry 5FC0 - 5FFF - 0x522b, 0xffff, 0xffff, 0xffff, 0x5302, 0x5385, 0x0094, 0x0009, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1be2, 0x1c66, 0x1ceb, 0x1dbc, - 0x1eaa, 0x1f9c, 0x209e, 0x2148, 0x21b2, 0x222b, 0x22b6, 0x2365, - 0x23fa, 0x24d5, 0x25b5, 0x269f, 0x2772, 0x2832, 0x28e0, 0x2980, - 0x2a1e, 0xffff, 0xffff, 0x2ae5, 0xffff, 0x2b89, 0xffff, 0x2c2f, - 0x2cae, 0x2d2f, 0x2dc0, 0xffff, 0xffff, 0x2e95, 0x2f1f, 0x2fa9, - 0xffff, 0xffff, 0xffff, 0x3098, 0xffff, 0x317c, 0x3237, 0xffff, - 0x332b, 0x33d4, 0x345b, 0xffff, 0xffff, 0xffff, 0xffff, 0x3572, - // Entry 6000 - 603F - 0xffff, 0xffff, 0x3666, 0x3723, 0xffff, 0xffff, 0x3803, 0x389d, - 0x391e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3aa4, - 0x3b23, 0x3ba8, 0x3c27, 0x3ce0, 0xffff, 0xffff, 0x3de6, 0xffff, - 0x3e80, 0xffff, 0xffff, 0x3f4c, 0xffff, 0x3fe9, 0xffff, 0xffff, - 0xffff, 0xffff, 0x40ed, 0xffff, 0x41b9, 0x4295, 0x4345, 0x43d2, - 0xffff, 0xffff, 0xffff, 0x44b4, 0x4555, 0x45f8, 0xffff, 0xffff, - 0x46ba, 0x4761, 0x47de, 0x4865, 0xffff, 0xffff, 0x4924, 0x49af, - 0x4a3a, 0xffff, 0x4af6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 6040 - 607F - 0x4beb, 0x4c6c, 0x4cf1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4e2a, 0xffff, 0xffff, 0x4ecd, 0xffff, 0x4f71, - 0xffff, 0x5015, 0x50ae, 0x512e, 0xffff, 0x51eb, 0x5288, 0xffff, - 0xffff, 0xffff, 0x534f, 0x53ee, 0x0002, 0x0003, 0x00d1, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, - 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, - // Entry 6080 - 60BF - 0x0001, 0x1fcc, 0x0008, 0x002f, 0x0066, 0x008b, 0x0000, 0x009f, - 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x000a, 0xffff, 0x0000, 0x0004, 0x0008, - 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0025, 0x002a, - 0x002e, 0x000d, 0x000a, 0xffff, 0x0032, 0x003a, 0x0043, 0x004a, - 0x0010, 0x0052, 0x0059, 0x001c, 0x0060, 0x006b, 0x0077, 0x0081, - 0x0002, 0x0000, 0x0057, 0x000d, 0x000a, 0xffff, 0x008b, 0x008d, - 0x008f, 0x0091, 0x008f, 0x008b, 0x008b, 0x0093, 0x0095, 0x0097, - // Entry 60C0 - 60FF - 0x009a, 0x009c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x000a, 0x009e, 0x00a2, 0x00a7, 0x00ab, 0x00af, - 0x00b3, 0x00b7, 0x0007, 0x000a, 0x00bb, 0x00c0, 0x00c8, 0x00cf, - 0x00d5, 0x00dd, 0x00e2, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - 0x2157, 0x21cc, 0x04dd, 0x21ce, 0x21ce, 0x1e5d, 0x21d0, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x000a, 0xffff, - 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x0005, 0x000a, 0xffff, 0x00f9, - 0x010a, 0x011c, 0x012e, 0x0003, 0x00a9, 0x0000, 0x00a3, 0x0001, - // Entry 6100 - 613F - 0x00a5, 0x0002, 0x000a, 0x0141, 0x0153, 0x0001, 0x00ab, 0x0002, - 0x000a, 0x0167, 0x0172, 0x0004, 0x00bd, 0x00b7, 0x00b4, 0x00ba, - 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, - 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00ce, 0x00c8, 0x00c5, - 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0112, 0x0000, - 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, - 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 6140 - 617F - 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0131, 0x0000, 0x0136, 0x0000, 0x0000, 0x013b, - 0x0000, 0x0000, 0x0140, 0x0000, 0x0000, 0x0145, 0x0001, 0x0114, - 0x0001, 0x000a, 0x017b, 0x0001, 0x0119, 0x0001, 0x000a, 0x0180, - 0x0001, 0x011e, 0x0001, 0x000a, 0x0184, 0x0001, 0x0123, 0x0001, - // Entry 6180 - 61BF - 0x000a, 0x0189, 0x0002, 0x0129, 0x012c, 0x0001, 0x000a, 0x0193, - 0x0003, 0x000a, 0x0197, 0x019c, 0x019f, 0x0001, 0x0133, 0x0001, - 0x000a, 0x01a4, 0x0001, 0x0138, 0x0001, 0x000a, 0x01ba, 0x0001, - 0x013d, 0x0001, 0x000a, 0x01c1, 0x0001, 0x0142, 0x0001, 0x000a, - 0x01c8, 0x0001, 0x0147, 0x0001, 0x000a, 0x01d0, 0x0003, 0x0004, - 0x02c9, 0x06d1, 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0010, 0x003b, 0x0000, 0x025f, 0x0294, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, - // Entry 61C0 - 61FF - 0x0027, 0x0021, 0x001e, 0x0024, 0x0001, 0x0005, 0x018e, 0x0001, - 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0001, 0x1fcc, - 0x0004, 0x0038, 0x0032, 0x002f, 0x0035, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0008, 0x0044, 0x00a9, 0x0100, 0x0135, 0x0212, 0x022c, - 0x023d, 0x024e, 0x0002, 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, - 0x0069, 0x000d, 0x0005, 0xffff, 0x01c2, 0x2030, 0x203a, 0x204a, - 0x0205, 0x020c, 0x0216, 0x205d, 0x206d, 0x208c, 0x20a2, 0x20b8, - // Entry 6200 - 623F - 0x000d, 0x000a, 0xffff, 0x01df, 0x01e6, 0x01ed, 0x01f4, 0x01f8, - 0x01ff, 0x0209, 0x0210, 0x0214, 0x021b, 0x021f, 0x0223, 0x000d, - 0x000a, 0xffff, 0x022a, 0x0246, 0x0268, 0x0278, 0x01f8, 0x01ff, - 0x028b, 0x029b, 0x02ab, 0x02ca, 0x02e0, 0x02f6, 0x0003, 0x007c, - 0x008b, 0x009a, 0x000d, 0x000a, 0xffff, 0x022a, 0x0246, 0x0268, - 0x0278, 0x01f8, 0x01ff, 0x028b, 0x029b, 0x02ab, 0x02ca, 0x02e0, - 0x02f6, 0x000d, 0x000a, 0xffff, 0x01df, 0x01e6, 0x01ed, 0x01f4, - 0x01f8, 0x01ff, 0x0209, 0x0210, 0x0214, 0x021b, 0x021f, 0x0223, - // Entry 6240 - 627F - 0x000d, 0x000a, 0xffff, 0x022a, 0x0246, 0x0268, 0x0278, 0x01f8, - 0x01ff, 0x028b, 0x029b, 0x02ab, 0x02ca, 0x02e0, 0x02f6, 0x0002, - 0x00ac, 0x00d6, 0x0005, 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, - 0x0007, 0x000a, 0x030f, 0x0319, 0x0323, 0x0333, 0x033d, 0x0356, - 0x0366, 0x0007, 0x000a, 0x0370, 0x0374, 0x037b, 0x037f, 0x0386, - 0x038d, 0x0394, 0x0007, 0x000a, 0x0398, 0x039f, 0x03a9, 0x03b0, - 0x03ba, 0x03c4, 0x03ce, 0x0007, 0x000a, 0x03d8, 0x03eb, 0x03fe, - 0x0417, 0x042a, 0x044c, 0x0465, 0x0005, 0x00dc, 0x00e5, 0x00f7, - // Entry 6280 - 62BF - 0x0000, 0x00ee, 0x0007, 0x000a, 0x030f, 0x0319, 0x0323, 0x0333, - 0x033d, 0x0356, 0x0366, 0x0007, 0x000a, 0x0370, 0x0374, 0x037b, - 0x037f, 0x0386, 0x038d, 0x0394, 0x0007, 0x000a, 0x0398, 0x039f, - 0x03a9, 0x03b0, 0x03ba, 0x03c4, 0x0366, 0x0007, 0x000a, 0x03d8, - 0x03eb, 0x03fe, 0x0417, 0x0478, 0x044c, 0x0465, 0x0002, 0x0103, - 0x011c, 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x000a, 0xffff, 0x049a, - 0x049e, 0x04a2, 0x04a6, 0x0005, 0x000a, 0xffff, 0x04aa, 0x04c6, - // Entry 62C0 - 62FF - 0x04fb, 0x052a, 0x0003, 0x0120, 0x0127, 0x012e, 0x0005, 0x0000, - 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x000a, 0xffff, - 0x049a, 0x049e, 0x04a2, 0x04a6, 0x0005, 0x000a, 0xffff, 0x04aa, - 0x04c6, 0x04fb, 0x052a, 0x0002, 0x0138, 0x01a5, 0x0003, 0x013c, - 0x015f, 0x0182, 0x000a, 0x0147, 0x014a, 0x0000, 0x014d, 0x0153, - 0x0159, 0x015c, 0x0000, 0x0150, 0x0156, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x000a, 0x0559, 0x0001, 0x000a, - 0x0563, 0x0001, 0x000a, 0x0570, 0x0001, 0x000a, 0x0580, 0x0001, - // Entry 6300 - 633F - 0x000a, 0x0590, 0x0001, 0x000a, 0x05a6, 0x000a, 0x016a, 0x016d, - 0x0000, 0x0170, 0x0176, 0x017c, 0x017f, 0x0000, 0x0173, 0x0179, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000a, - 0x0559, 0x0001, 0x000a, 0x0563, 0x0001, 0x000a, 0x0570, 0x0001, - 0x000a, 0x0580, 0x0001, 0x000a, 0x0590, 0x0001, 0x000a, 0x05a6, - 0x000a, 0x018d, 0x0190, 0x0000, 0x0193, 0x0199, 0x019f, 0x01a2, - 0x0000, 0x0196, 0x019c, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x000a, 0x0559, 0x0001, 0x000a, 0x0563, 0x0001, - // Entry 6340 - 637F - 0x000a, 0x0570, 0x0001, 0x000a, 0x0580, 0x0001, 0x000a, 0x0590, - 0x0001, 0x000a, 0x05a6, 0x0003, 0x01a9, 0x01cc, 0x01ef, 0x000a, - 0x01b4, 0x01b7, 0x0000, 0x01ba, 0x01c0, 0x01c6, 0x01c9, 0x0000, - 0x01bd, 0x01c3, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x000a, 0x0559, 0x0001, 0x000a, 0x0563, 0x0001, 0x000a, - 0x0570, 0x0001, 0x000a, 0x0580, 0x0001, 0x000a, 0x0590, 0x0001, - 0x000a, 0x05a6, 0x000a, 0x01d7, 0x01da, 0x0000, 0x01dd, 0x01e3, - 0x01e9, 0x01ec, 0x0000, 0x01e0, 0x01e6, 0x0001, 0x0000, 0x04ef, - // Entry 6380 - 63BF - 0x0001, 0x0000, 0x04f2, 0x0001, 0x000a, 0x0559, 0x0001, 0x000a, - 0x0563, 0x0001, 0x000a, 0x0570, 0x0001, 0x000a, 0x0580, 0x0001, - 0x000a, 0x0590, 0x0001, 0x000a, 0x05a6, 0x000a, 0x01fa, 0x01fd, - 0x0000, 0x0200, 0x0206, 0x020c, 0x020f, 0x0000, 0x0203, 0x0209, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000a, - 0x0559, 0x0001, 0x000a, 0x0563, 0x0001, 0x000a, 0x0570, 0x0001, - 0x000a, 0x0580, 0x0001, 0x000a, 0x0590, 0x0001, 0x000a, 0x05a6, - 0x0003, 0x0221, 0x0000, 0x0216, 0x0002, 0x0219, 0x021d, 0x0002, - // Entry 63C0 - 63FF - 0x000a, 0x05b9, 0x060f, 0x0002, 0x000a, 0x05de, 0x062b, 0x0002, - 0x0224, 0x0228, 0x0002, 0x000a, 0x05b9, 0x060f, 0x0002, 0x000a, - 0x05de, 0x062b, 0x0004, 0x023a, 0x0234, 0x0231, 0x0237, 0x0001, - 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, 0x01f2, - 0x0001, 0x0005, 0x1394, 0x0004, 0x024b, 0x0245, 0x0242, 0x0248, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x025c, 0x0256, 0x0253, - 0x0259, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - // Entry 6400 - 643F - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0265, 0x0000, - 0x0000, 0x0000, 0x028d, 0x0002, 0x0268, 0x027b, 0x0003, 0x0000, - 0x0000, 0x026c, 0x000d, 0x000a, 0xffff, 0x064d, 0x065d, 0x066d, - 0x0683, 0x0693, 0x06a6, 0x06b6, 0x06c9, 0x06df, 0x06fb, 0x0705, - 0x070f, 0x0002, 0x0000, 0x027e, 0x000d, 0x000a, 0xffff, 0x049a, - 0x049e, 0x04a2, 0x04a6, 0x0725, 0x0729, 0x072d, 0x0731, 0x0735, - 0x0739, 0x0740, 0x0747, 0x0001, 0x028f, 0x0001, 0x0291, 0x0001, - 0x000a, 0x074e, 0x0005, 0x029a, 0x0000, 0x0000, 0x0000, 0x02c2, - // Entry 6440 - 647F - 0x0002, 0x029d, 0x02b0, 0x0003, 0x0000, 0x0000, 0x02a1, 0x000d, - 0x000a, 0xffff, 0x0758, 0x0768, 0x0772, 0x0795, 0x07b2, 0x07db, - 0x07fe, 0x0808, 0x081b, 0x082b, 0x0841, 0x0857, 0x0002, 0x0000, - 0x02b3, 0x000d, 0x000a, 0xffff, 0x049a, 0x049e, 0x04a2, 0x04a6, - 0x0725, 0x0729, 0x072d, 0x0731, 0x0735, 0x0739, 0x0740, 0x0747, - 0x0001, 0x02c4, 0x0001, 0x02c6, 0x0001, 0x0005, 0x0527, 0x0040, - 0x030a, 0x0000, 0x0000, 0x030f, 0x0326, 0x033d, 0x0354, 0x036b, - 0x037d, 0x038f, 0x03a6, 0x03bd, 0x03d4, 0x03ef, 0x040a, 0x0000, - // Entry 6480 - 64BF - 0x0000, 0x0000, 0x0425, 0x043e, 0x0457, 0x0000, 0x0000, 0x0000, - 0x0470, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0475, 0x0489, - 0x049d, 0x04b1, 0x04c5, 0x04d9, 0x04ed, 0x0501, 0x0515, 0x0529, - 0x053d, 0x0551, 0x0565, 0x0579, 0x058d, 0x05a1, 0x05b5, 0x05c9, - 0x05dd, 0x05f1, 0x0605, 0x0000, 0x0619, 0x0000, 0x061e, 0x0634, - 0x0646, 0x0658, 0x066e, 0x0680, 0x0692, 0x06a8, 0x06ba, 0x06cc, - 0x0001, 0x030c, 0x0001, 0x0005, 0x0527, 0x0003, 0x0313, 0x0316, - 0x031b, 0x0001, 0x000a, 0x0873, 0x0003, 0x000a, 0x087d, 0x088e, - // Entry 64C0 - 64FF - 0x089f, 0x0002, 0x031e, 0x0322, 0x0002, 0x000a, 0x08b6, 0x08b6, - 0x0002, 0x000a, 0x08c7, 0x08c7, 0x0003, 0x032a, 0x032d, 0x0332, - 0x0001, 0x000a, 0x0873, 0x0003, 0x000a, 0x087d, 0x088e, 0x089f, - 0x0002, 0x0335, 0x0339, 0x0002, 0x000a, 0x08b6, 0x08b6, 0x0002, - 0x000a, 0x08c7, 0x08c7, 0x0003, 0x0341, 0x0344, 0x0349, 0x0001, - 0x000a, 0x0873, 0x0003, 0x000a, 0x087d, 0x088e, 0x089f, 0x0002, - 0x034c, 0x0350, 0x0002, 0x000a, 0x08b6, 0x08b6, 0x0002, 0x000a, - 0x08c7, 0x08c7, 0x0003, 0x0358, 0x035b, 0x0360, 0x0001, 0x000a, - // Entry 6500 - 653F - 0x04aa, 0x0003, 0x000a, 0x08e8, 0x090b, 0x092e, 0x0002, 0x0363, - 0x0367, 0x0002, 0x000a, 0x0957, 0x0957, 0x0002, 0x000a, 0x097a, - 0x097a, 0x0003, 0x036f, 0x0000, 0x0372, 0x0001, 0x000a, 0x04aa, - 0x0002, 0x0375, 0x0379, 0x0002, 0x000a, 0x0957, 0x0957, 0x0002, - 0x000a, 0x097a, 0x097a, 0x0003, 0x0381, 0x0000, 0x0384, 0x0001, - 0x000a, 0x04aa, 0x0002, 0x0387, 0x038b, 0x0002, 0x000a, 0x0957, - 0x0957, 0x0002, 0x000a, 0x097a, 0x097a, 0x0003, 0x0393, 0x0396, - 0x039b, 0x0001, 0x000a, 0x09a4, 0x0003, 0x000a, 0x09ae, 0x09bf, - // Entry 6540 - 657F - 0x09d0, 0x0002, 0x039e, 0x03a2, 0x0002, 0x000a, 0x09e7, 0x09e7, - 0x0002, 0x000a, 0x09f8, 0x09f8, 0x0003, 0x03aa, 0x03ad, 0x03b2, - 0x0001, 0x000a, 0x09a4, 0x0003, 0x000a, 0x09ae, 0x09bf, 0x09d0, - 0x0002, 0x03b5, 0x03b9, 0x0002, 0x000a, 0x09e7, 0x09e7, 0x0002, - 0x000a, 0x09f8, 0x09f8, 0x0003, 0x03c1, 0x03c4, 0x03c9, 0x0001, - 0x000a, 0x09a4, 0x0003, 0x000a, 0x09ae, 0x09bf, 0x09d0, 0x0002, - 0x03cc, 0x03d0, 0x0002, 0x000a, 0x09e7, 0x09e7, 0x0002, 0x000a, - 0x09f8, 0x09f8, 0x0004, 0x03d9, 0x03dc, 0x03e1, 0x03ec, 0x0001, - // Entry 6580 - 65BF - 0x0005, 0x0545, 0x0003, 0x000a, 0x0a10, 0x0a2a, 0x0a44, 0x0002, - 0x03e4, 0x03e8, 0x0002, 0x000a, 0x0a64, 0x0a64, 0x0002, 0x000a, - 0x0a7e, 0x0a7e, 0x0001, 0x000a, 0x0a9f, 0x0004, 0x03f4, 0x03f7, - 0x03fc, 0x0407, 0x0001, 0x0005, 0x0545, 0x0003, 0x000a, 0x0a10, - 0x0a2a, 0x0a44, 0x0002, 0x03ff, 0x0403, 0x0002, 0x000a, 0x0a64, - 0x0a64, 0x0002, 0x000a, 0x0a7e, 0x0a7e, 0x0001, 0x000a, 0x0ab6, - 0x0004, 0x040f, 0x0412, 0x0417, 0x0422, 0x0001, 0x0005, 0x0545, - 0x0003, 0x000a, 0x0a10, 0x0a2a, 0x0a44, 0x0002, 0x041a, 0x041e, - // Entry 65C0 - 65FF - 0x0002, 0x000a, 0x0a64, 0x0a64, 0x0002, 0x000a, 0x0a7e, 0x0a7e, - 0x0001, 0x000a, 0x0ab6, 0x0003, 0x0429, 0x042c, 0x0433, 0x0001, - 0x0005, 0x0558, 0x0005, 0x000a, 0x0aeb, 0x0afb, 0x0b02, 0x0ad7, - 0x0b1b, 0x0002, 0x0436, 0x043a, 0x0002, 0x000a, 0x0b38, 0x0b38, - 0x0002, 0x000a, 0x0b5c, 0x0b5c, 0x0003, 0x0442, 0x0445, 0x044c, - 0x0001, 0x0005, 0x0558, 0x0005, 0x000a, 0x0aeb, 0x0afb, 0x0b02, - 0x0ad7, 0x0b1b, 0x0002, 0x044f, 0x0453, 0x0002, 0x000a, 0x0b38, - 0x0b38, 0x0002, 0x000a, 0x0b5c, 0x0b5c, 0x0003, 0x045b, 0x045e, - // Entry 6600 - 663F - 0x0465, 0x0001, 0x0005, 0x0558, 0x0005, 0x000a, 0x0aeb, 0x0afb, - 0x0b02, 0x0ad7, 0x0b1b, 0x0002, 0x0468, 0x046c, 0x0002, 0x000a, - 0x0b38, 0x0b38, 0x0002, 0x000a, 0x0b5c, 0x0b5c, 0x0001, 0x0472, - 0x0001, 0x000a, 0x0b74, 0x0003, 0x0000, 0x0479, 0x047e, 0x0003, - 0x000a, 0x0b97, 0x0bb1, 0x0bcb, 0x0002, 0x0481, 0x0485, 0x0002, - 0x000a, 0x0beb, 0x0beb, 0x0002, 0x000a, 0x0c0b, 0x0c0b, 0x0003, - 0x0000, 0x048d, 0x0492, 0x0003, 0x000a, 0x0b97, 0x0bb1, 0x0bcb, - 0x0002, 0x0495, 0x0499, 0x0002, 0x000a, 0x0beb, 0x0beb, 0x0002, - // Entry 6640 - 667F - 0x000a, 0x0c0b, 0x0c0b, 0x0003, 0x0000, 0x04a1, 0x04a6, 0x0003, - 0x000a, 0x0b97, 0x0bb1, 0x0bcb, 0x0002, 0x04a9, 0x04ad, 0x0002, - 0x000a, 0x0beb, 0x0beb, 0x0002, 0x000a, 0x0c0b, 0x0c0b, 0x0003, - 0x0000, 0x04b5, 0x04ba, 0x0003, 0x000a, 0x0c2c, 0x0c46, 0x0c60, - 0x0002, 0x04bd, 0x04c1, 0x0002, 0x000a, 0x0c80, 0x0c80, 0x0002, - 0x000a, 0x0ca0, 0x0c80, 0x0003, 0x0000, 0x04c9, 0x04ce, 0x0003, - 0x000a, 0x0c2c, 0x0c46, 0x0c60, 0x0002, 0x04d1, 0x04d5, 0x0002, - 0x000a, 0x0c80, 0x0c80, 0x0002, 0x000a, 0x0ca0, 0x0ca0, 0x0003, - // Entry 6680 - 66BF - 0x0000, 0x04dd, 0x04e2, 0x0003, 0x000a, 0x0c2c, 0x0c46, 0x0c60, - 0x0002, 0x04e5, 0x04e9, 0x0002, 0x000a, 0x0c80, 0x0c80, 0x0002, - 0x000a, 0x0ca0, 0x0ca0, 0x0003, 0x0000, 0x04f1, 0x04f6, 0x0003, - 0x000a, 0x0cc1, 0x0ce1, 0x0d01, 0x0002, 0x04f9, 0x04fd, 0x0002, - 0x000a, 0x0d27, 0x0d27, 0x0002, 0x000a, 0x0d47, 0x0d47, 0x0003, - 0x0000, 0x0505, 0x050a, 0x0003, 0x000a, 0x0cc1, 0x0ce1, 0x0d01, - 0x0002, 0x050d, 0x0511, 0x0002, 0x000a, 0x0d27, 0x0d27, 0x0002, - 0x000a, 0x0d47, 0x0d47, 0x0003, 0x0000, 0x0519, 0x051e, 0x0003, - // Entry 66C0 - 66FF - 0x000a, 0x0cc1, 0x0ce1, 0x0d01, 0x0002, 0x0521, 0x0525, 0x0002, - 0x000a, 0x0d27, 0x0d27, 0x0002, 0x000a, 0x0d47, 0x0d47, 0x0003, - 0x0000, 0x052d, 0x0532, 0x0003, 0x000a, 0x0d6e, 0x0d88, 0x0da2, - 0x0002, 0x0535, 0x0539, 0x0002, 0x000a, 0x0dc2, 0x0dc2, 0x0002, - 0x000a, 0x0ddc, 0x0ddc, 0x0003, 0x0000, 0x0541, 0x0546, 0x0003, - 0x000a, 0x0d6e, 0x0d88, 0x0da2, 0x0002, 0x0549, 0x054d, 0x0002, - 0x000a, 0x0dc2, 0x0dc2, 0x0002, 0x000a, 0x0ddc, 0x0ddc, 0x0003, - 0x0000, 0x0555, 0x055a, 0x0003, 0x000a, 0x0d6e, 0x0d88, 0x0da2, - // Entry 6700 - 673F - 0x0002, 0x055d, 0x0561, 0x0002, 0x000a, 0x0dc2, 0x0dc2, 0x0002, - 0x000a, 0x0ddc, 0x0ddc, 0x0003, 0x0000, 0x0569, 0x056e, 0x0003, - 0x000a, 0x0dfd, 0x0e26, 0x0e4f, 0x0002, 0x0571, 0x0575, 0x0002, - 0x000a, 0x0e7e, 0x0e7e, 0x0002, 0x000a, 0x0ea7, 0x0ea7, 0x0003, - 0x0000, 0x057d, 0x0582, 0x0003, 0x000a, 0x0dfd, 0x0e26, 0x0e4f, - 0x0002, 0x0585, 0x0589, 0x0002, 0x000a, 0x0e7e, 0x0e7e, 0x0002, - 0x000a, 0x0ea7, 0x0ea7, 0x0003, 0x0000, 0x0591, 0x0596, 0x0003, - 0x000a, 0x0dfd, 0x0e26, 0x0e4f, 0x0002, 0x0599, 0x059d, 0x0002, - // Entry 6740 - 677F - 0x000a, 0x0e7e, 0x0e7e, 0x0002, 0x000a, 0x0ea7, 0x0ea7, 0x0003, - 0x0000, 0x05a5, 0x05aa, 0x0003, 0x000a, 0x0ed7, 0x0ef7, 0x0f17, - 0x0002, 0x05ad, 0x05b1, 0x0002, 0x000a, 0x0f3d, 0x0f3d, 0x0002, - 0x000a, 0x0f5d, 0x0f5d, 0x0003, 0x0000, 0x05b9, 0x05be, 0x0003, - 0x000a, 0x0ed7, 0x0ef7, 0x0f17, 0x0002, 0x05c1, 0x05c5, 0x0002, - 0x000a, 0x0f3d, 0x0f3d, 0x0002, 0x000a, 0x0f5d, 0x0f5d, 0x0003, - 0x0000, 0x05cd, 0x05d2, 0x0003, 0x000a, 0x0ed7, 0x0ef7, 0x0f17, - 0x0002, 0x05d5, 0x05d9, 0x0002, 0x000a, 0x0f3d, 0x0f3d, 0x0002, - // Entry 6780 - 67BF - 0x000a, 0x0f5d, 0x0f5d, 0x0003, 0x0000, 0x05e1, 0x05e6, 0x0003, - 0x000a, 0x0f84, 0x0f9e, 0x0fb8, 0x0002, 0x05e9, 0x05ed, 0x0002, - 0x000a, 0x0fd8, 0x0fd8, 0x0002, 0x000a, 0x0ff2, 0x0ff2, 0x0003, - 0x0000, 0x05f5, 0x05fa, 0x0003, 0x000a, 0x0f84, 0x0f9e, 0x0fb8, - 0x0002, 0x05fd, 0x0601, 0x0002, 0x000a, 0x0fd8, 0x0fd8, 0x0002, - 0x000a, 0x0ff2, 0x0ff2, 0x0003, 0x0000, 0x0609, 0x060e, 0x0003, - 0x000a, 0x0f84, 0x0f9e, 0x0fb8, 0x0002, 0x0611, 0x0615, 0x0002, - 0x000a, 0x0fd8, 0x0fd8, 0x0002, 0x000a, 0x0ff2, 0x0ff2, 0x0001, - // Entry 67C0 - 67FF - 0x061b, 0x0001, 0x0007, 0x07cc, 0x0003, 0x0622, 0x0625, 0x0629, - 0x0001, 0x000a, 0x1013, 0x0002, 0x000a, 0xffff, 0x1023, 0x0002, - 0x062c, 0x0630, 0x0002, 0x000a, 0x1040, 0x1040, 0x0002, 0x000a, - 0x105a, 0x105a, 0x0003, 0x0638, 0x0000, 0x063b, 0x0001, 0x000a, - 0x1013, 0x0002, 0x063e, 0x0642, 0x0002, 0x000a, 0x1040, 0x1040, - 0x0002, 0x000a, 0x105a, 0x105a, 0x0003, 0x064a, 0x0000, 0x064d, - 0x0001, 0x000a, 0x1013, 0x0002, 0x0650, 0x0654, 0x0002, 0x000a, - 0x1040, 0x1040, 0x0002, 0x000a, 0x105a, 0x105a, 0x0003, 0x065c, - // Entry 6800 - 683F - 0x065f, 0x0663, 0x0001, 0x0005, 0x05b9, 0x0002, 0x000a, 0xffff, - 0x1078, 0x0002, 0x0666, 0x066a, 0x0002, 0x000a, 0x108f, 0x108f, - 0x0002, 0x000a, 0x10c4, 0x10a6, 0x0003, 0x0672, 0x0000, 0x0675, - 0x0001, 0x0005, 0x05b9, 0x0002, 0x0678, 0x067c, 0x0002, 0x000a, - 0x108f, 0x108f, 0x0002, 0x000a, 0x10a6, 0x10a6, 0x0003, 0x0684, - 0x0000, 0x0687, 0x0001, 0x0005, 0x05b9, 0x0002, 0x068a, 0x068e, - 0x0002, 0x000a, 0x108f, 0x108f, 0x0002, 0x000a, 0x10a6, 0x10a6, - 0x0003, 0x0696, 0x0699, 0x069d, 0x0001, 0x000a, 0x10eb, 0x0002, - // Entry 6840 - 687F - 0x000a, 0xffff, 0x1101, 0x0002, 0x06a0, 0x06a4, 0x0002, 0x000a, - 0x110b, 0x110b, 0x0002, 0x000a, 0x1128, 0x1128, 0x0003, 0x06ac, - 0x0000, 0x06af, 0x0001, 0x000a, 0x10eb, 0x0002, 0x06b2, 0x06b6, - 0x0002, 0x000a, 0x110b, 0x110b, 0x0002, 0x000a, 0x1128, 0x1128, - 0x0003, 0x06be, 0x0000, 0x06c1, 0x0001, 0x000a, 0x10eb, 0x0002, - 0x06c4, 0x06c8, 0x0002, 0x000a, 0x110b, 0x110b, 0x0002, 0x000a, - 0x1155, 0x1155, 0x0001, 0x06ce, 0x0001, 0x000a, 0x1179, 0x0004, - 0x06d6, 0x06db, 0x06e0, 0x06ef, 0x0003, 0x0000, 0x1dc7, 0x21d2, - // Entry 6880 - 68BF - 0x21da, 0x0003, 0x000a, 0x1196, 0x11a7, 0x11ce, 0x0002, 0x0000, - 0x06e3, 0x0003, 0x0000, 0x06ea, 0x06e7, 0x0001, 0x000a, 0x11ec, - 0x0003, 0x000a, 0xffff, 0x123a, 0x1282, 0x0002, 0x08d6, 0x06f2, - 0x0003, 0x06f6, 0x0836, 0x0796, 0x009e, 0x000a, 0xffff, 0xffff, - 0xffff, 0xffff, 0x13f2, 0x14c6, 0x15e7, 0x1682, 0x1729, 0x17eb, - 0x18c2, 0x19f0, 0x1a94, 0x1c17, 0x1c88, 0x1d3e, 0x1e3c, 0x1ef2, - 0x1f96, 0x20a3, 0x21f2, 0x22d2, 0x23c4, 0x247a, 0x250c, 0xffff, - 0xffff, 0x25f6, 0xffff, 0x26f7, 0xffff, 0x27cb, 0x2857, 0x28d1, - // Entry 68C0 - 68FF - 0x2939, 0xffff, 0xffff, 0x2a4f, 0x2b0e, 0x2bf5, 0xffff, 0xffff, - 0xffff, 0x2cf8, 0xffff, 0x2de0, 0x2ea2, 0xffff, 0x2fbc, 0x3090, - 0x319a, 0xffff, 0xffff, 0xffff, 0xffff, 0x3304, 0xffff, 0xffff, - 0x341a, 0x3512, 0xffff, 0xffff, 0x3696, 0x376a, 0x37ed, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x39d7, 0x3a48, 0x3aec, - 0x3b81, 0x3bfb, 0xffff, 0xffff, 0x3de8, 0xffff, 0x3e9d, 0xffff, - 0xffff, 0x400b, 0xffff, 0x416e, 0xffff, 0xffff, 0xffff, 0xffff, - 0x42db, 0xffff, 0x4384, 0x4482, 0x45c5, 0x4675, 0xffff, 0xffff, - // Entry 6900 - 693F - 0xffff, 0x4761, 0x4850, 0x4909, 0xffff, 0xffff, 0x4a3c, 0x4b95, - 0x4c66, 0x4cef, 0xffff, 0xffff, 0x4df3, 0x4eb2, 0x4f32, 0xffff, - 0x5018, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x527e, 0x5319, - 0x53a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x556e, 0xffff, 0xffff, 0x5643, 0xffff, 0x56ec, 0xffff, 0x57e6, - 0x588a, 0x5949, 0xffff, 0x5a25, 0x5af6, 0xffff, 0xffff, 0xffff, - 0x5c2a, 0x5cd7, 0xffff, 0xffff, 0x12ac, 0x1552, 0x1b11, 0x1b94, - 0xffff, 0xffff, 0x40b5, 0x518b, 0x009e, 0x000a, 0x131d, 0x134c, - // Entry 6940 - 697F - 0x137c, 0x13af, 0x1428, 0x14e9, 0x160d, 0x16ae, 0x175e, 0x1827, - 0x191d, 0x1a16, 0x1ab4, 0x1c31, 0x1cb4, 0x1d83, 0x1e68, 0x1f21, - 0x1fe4, 0x2107, 0x2231, 0x2317, 0x23f0, 0x249a, 0x2532, 0x25b0, - 0x25cd, 0x2625, 0x26b5, 0x271e, 0x279e, 0x27ee, 0x2871, 0x28e8, - 0x295f, 0x29dd, 0x2a13, 0x2a7e, 0x2b44, 0x2c15, 0x2c72, 0x2c8f, - 0x2cce, 0x2d28, 0x2dba, 0x2e10, 0x2ed5, 0x2f6d, 0x2ff2, 0x30d8, - 0x31b4, 0x321a, 0x324d, 0x32a9, 0x32d2, 0x332a, 0x33a8, 0x33ed, - 0x345c, 0x3557, 0x363d, 0x3673, 0x36e1, 0x3785, 0x3807, 0x386d, - // Entry 6980 - 69BF - 0x389d, 0x38d6, 0x38fc, 0x394d, 0x398f, 0x39f1, 0x3a6e, 0x3b12, - 0x3b9e, 0x3c62, 0x3d59, 0x3d9f, 0x3e0e, 0x3e7d, 0x3edb, 0x3f89, - 0x3fd2, 0x4038, 0x4135, 0x4197, 0x421b, 0x424a, 0x4270, 0x4299, - 0x42fb, 0x436d, 0x43cf, 0x44e3, 0x45ef, 0x4692, 0x46fe, 0x4727, - 0x4744, 0x47a0, 0x4882, 0x4947, 0x49e6, 0x4a00, 0x4a85, 0x4bca, - 0x4c83, 0x4d18, 0x4d9c, 0x4db9, 0x4e22, 0x4ecc, 0x4f58, 0x4fd6, - 0x505f, 0x5110, 0x513f, 0x515f, 0x5238, 0x5261, 0x52a1, 0x5339, - 0x53c5, 0x5437, 0x5457, 0x548d, 0x54c9, 0x5502, 0x5525, 0x554e, - // Entry 69C0 - 69FF - 0x558e, 0x55f1, 0x5620, 0x5663, 0x56d5, 0x5724, 0x57c6, 0x580c, - 0x58b9, 0x5972, 0x59f6, 0x5a5a, 0x5b1f, 0x5ba3, 0x5bbd, 0x5bea, - 0x5c53, 0x5d15, 0x3613, 0x4b49, 0x12c3, 0x1575, 0x1b2e, 0x1bb1, - 0xffff, 0x3fb5, 0x40d2, 0x51b7, 0x009e, 0x000a, 0xffff, 0xffff, - 0xffff, 0xffff, 0x146b, 0x1519, 0x1637, 0x16e7, 0x17a3, 0x1876, - 0x1985, 0x1a49, 0x1ae1, 0x1c58, 0x1ced, 0x1ddb, 0x1ea1, 0x1f57, - 0x203f, 0x2178, 0x227d, 0x2369, 0x2429, 0x24c7, 0x2565, 0xffff, - 0xffff, 0x2661, 0xffff, 0x2752, 0xffff, 0x281e, 0x2898, 0x290c, - // Entry 6A00 - 6A3F - 0x2992, 0xffff, 0xffff, 0x2aba, 0x2b87, 0x2c3f, 0xffff, 0xffff, - 0xffff, 0x2d65, 0xffff, 0x2e4d, 0x2f15, 0xffff, 0x3035, 0x312d, - 0x31db, 0xffff, 0xffff, 0xffff, 0xffff, 0x335d, 0xffff, 0xffff, - 0x34ab, 0x35a9, 0xffff, 0xffff, 0x3721, 0x37ad, 0x382e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a18, 0x3aa1, 0x3b45, - 0x3bc8, 0x3cd3, 0xffff, 0xffff, 0x3e41, 0xffff, 0x3f26, 0xffff, - 0xffff, 0x4072, 0xffff, 0x41cd, 0xffff, 0xffff, 0xffff, 0xffff, - 0x4328, 0xffff, 0x4427, 0x454e, 0x4626, 0x46bc, 0xffff, 0xffff, - // Entry 6A40 - 6A7F - 0xffff, 0x47ec, 0x48c1, 0x4992, 0xffff, 0xffff, 0x4adb, 0x4c0c, - 0x4cad, 0x4d4e, 0xffff, 0xffff, 0x4e5e, 0x4ef3, 0x4f8b, 0xffff, - 0x50b3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x52d1, 0x5363, - 0x53f5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x55bb, 0xffff, 0xffff, 0x5690, 0xffff, 0x5769, 0xffff, 0x583f, - 0x58f5, 0x59a8, 0xffff, 0x5a9c, 0x5b55, 0xffff, 0xffff, 0xffff, - 0x5c89, 0x5d60, 0xffff, 0xffff, 0x12e7, 0x15a5, 0x1b58, 0x1bdb, - 0xffff, 0xffff, 0x40f9, 0x51ed, 0x0003, 0x0000, 0x0000, 0x08da, - // Entry 6A80 - 6ABF - 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 6AC0 - 6AFF - 0xffff, 0xffff, 0xffff, 0x0000, 0x0003, 0x0004, 0x010c, 0x018c, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0000, 0x0004, 0x0000, 0x001b, 0x0000, 0x001e, 0x0001, - 0x000b, 0x0004, 0x0001, 0x000b, 0x003b, 0x0008, 0x002a, 0x0062, - 0x00a3, 0x00ca, 0x00e2, 0x00ea, 0x00fb, 0x0000, 0x0002, 0x002d, - 0x004f, 0x0003, 0x0031, 0x0000, 0x0040, 0x000d, 0x000b, 0xffff, - 0x005f, 0x006c, 0x0079, 0x0086, 0x0093, 0x00a0, 0x00ad, 0x00ba, - // Entry 6B00 - 6B3F - 0x00c7, 0x00d4, 0x00e4, 0x00f4, 0x000d, 0x000b, 0xffff, 0x0104, - 0x0123, 0x0145, 0x0167, 0x0186, 0x01a2, 0x01c4, 0x01e6, 0x020b, - 0x022a, 0x0249, 0x0277, 0x0003, 0x0000, 0x0000, 0x0053, 0x000d, - 0x000b, 0xffff, 0x02a5, 0x02c7, 0x02ec, 0x0311, 0x0333, 0x0352, - 0x0377, 0x039c, 0x03c4, 0x03e6, 0x0408, 0x0439, 0x0002, 0x0065, - 0x0084, 0x0003, 0x0069, 0x0072, 0x007b, 0x0007, 0x000b, 0x046a, - 0x047a, 0x048a, 0x04a3, 0x04b6, 0x04cc, 0x04df, 0x0007, 0x000b, - 0x04f5, 0x04fc, 0x0503, 0x050d, 0x0517, 0x0521, 0x052b, 0x0007, - // Entry 6B40 - 6B7F - 0x000b, 0x0538, 0x0554, 0x0570, 0x0595, 0x05b4, 0x05d6, 0x05f5, - 0x0003, 0x0088, 0x0091, 0x009a, 0x0007, 0x000b, 0x046a, 0x047a, - 0x048a, 0x04a3, 0x04b6, 0x04cc, 0x04df, 0x0007, 0x000b, 0x04f5, - 0x04fc, 0x0503, 0x050d, 0x0517, 0x0521, 0x052b, 0x0007, 0x000b, - 0x0538, 0x0554, 0x0570, 0x0595, 0x05b4, 0x05d6, 0x05f5, 0x0002, - 0x00a6, 0x00b8, 0x0003, 0x00aa, 0x0000, 0x00b1, 0x0005, 0x000b, - 0xffff, 0x0617, 0x0645, 0x0676, 0x06a7, 0x0005, 0x000b, 0xffff, - 0x0617, 0x0645, 0x0676, 0x06a7, 0x0003, 0x00bc, 0x0000, 0x00c3, - // Entry 6B80 - 6BBF - 0x0005, 0x000b, 0xffff, 0x0617, 0x0645, 0x0676, 0x06a7, 0x0005, - 0x000b, 0xffff, 0x0617, 0x0645, 0x0676, 0x06a7, 0x0001, 0x00cc, - 0x0003, 0x00d0, 0x0000, 0x00d9, 0x0002, 0x00d3, 0x00d6, 0x0001, - 0x000b, 0x06d5, 0x0001, 0x000b, 0x06eb, 0x0002, 0x00dc, 0x00df, - 0x0001, 0x000b, 0x06d5, 0x0001, 0x000b, 0x06eb, 0x0001, 0x00e4, - 0x0001, 0x00e6, 0x0002, 0x000b, 0x0704, 0x072c, 0x0004, 0x00f8, - 0x00f2, 0x00ef, 0x00f5, 0x0001, 0x000b, 0x0745, 0x0001, 0x000b, - 0x0768, 0x0001, 0x000b, 0x079d, 0x0001, 0x0000, 0x051c, 0x0004, - // Entry 6BC0 - 6BFF - 0x0109, 0x0103, 0x0100, 0x0106, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - 0x0040, 0x014d, 0x0000, 0x0000, 0x0152, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0157, 0x0000, 0x0000, 0x015c, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0161, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x016e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 6C00 - 6C3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0173, 0x0000, 0x0178, - 0x0000, 0x0000, 0x017d, 0x0000, 0x0000, 0x0182, 0x0000, 0x0000, - 0x0187, 0x0001, 0x014f, 0x0001, 0x000b, 0x07bf, 0x0001, 0x0154, - 0x0001, 0x000b, 0x07d5, 0x0001, 0x0159, 0x0001, 0x000b, 0x047a, - 0x0001, 0x015e, 0x0001, 0x000b, 0x07df, 0x0002, 0x0164, 0x0167, - 0x0001, 0x000b, 0x07fb, 0x0005, 0x000b, 0x081e, 0x082e, 0x0844, - 0x0808, 0x085a, 0x0001, 0x0170, 0x0001, 0x000b, 0x0876, 0x0001, - 0x0175, 0x0001, 0x000b, 0x089e, 0x0001, 0x017a, 0x0001, 0x000b, - // Entry 6C40 - 6C7F - 0x08cd, 0x0001, 0x017f, 0x0001, 0x000b, 0x08e3, 0x0001, 0x0184, - 0x0001, 0x000b, 0x08f6, 0x0001, 0x0189, 0x0001, 0x000b, 0x0909, - 0x0004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0004, 0x01f9, - 0x0573, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0017, 0x0042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01d0, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0020, 0x0000, 0x0031, 0x0004, 0x002e, 0x0028, - 0x0025, 0x002b, 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, - // Entry 6C80 - 6CBF - 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x003f, - 0x0039, 0x0036, 0x003c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x004b, 0x00b0, 0x0107, 0x013c, 0x017d, 0x019d, 0x01ae, 0x01bf, - 0x0002, 0x004e, 0x007f, 0x0003, 0x0052, 0x0061, 0x0070, 0x000d, - 0x000b, 0xffff, 0x0922, 0x0927, 0x092f, 0x0935, 0x093a, 0x093e, - 0x0944, 0x094a, 0x094f, 0x0955, 0x095a, 0x095d, 0x000d, 0x000b, - 0xffff, 0x0962, 0x0965, 0x0968, 0x096b, 0x096e, 0x0971, 0x0974, - // Entry 6CC0 - 6CFF - 0x0977, 0x097a, 0x097d, 0x0980, 0x0983, 0x000d, 0x000b, 0xffff, - 0x0986, 0x098d, 0x0998, 0x099f, 0x093a, 0x09a5, 0x09ae, 0x094a, - 0x09b5, 0x0955, 0x095a, 0x09be, 0x0003, 0x0083, 0x0092, 0x00a1, - 0x000d, 0x000b, 0xffff, 0x0922, 0x0927, 0x092f, 0x0935, 0x093a, - 0x093e, 0x0944, 0x094a, 0x094f, 0x0955, 0x095a, 0x09c4, 0x000d, - 0x000b, 0xffff, 0x0962, 0x0965, 0x0968, 0x096b, 0x096e, 0x0971, - 0x0974, 0x0977, 0x097a, 0x097d, 0x0980, 0x0983, 0x000d, 0x000b, - 0xffff, 0x0986, 0x098d, 0x0998, 0x099f, 0x093a, 0x09a5, 0x09ae, - // Entry 6D00 - 6D3F - 0x094a, 0x09b5, 0x0955, 0x095a, 0x09be, 0x0002, 0x00b3, 0x00dd, - 0x0005, 0x00b9, 0x00c2, 0x00d4, 0x0000, 0x00cb, 0x0007, 0x000b, - 0x09c9, 0x09cd, 0x09d1, 0x09d6, 0x09db, 0x09e0, 0x09e5, 0x0007, - 0x000b, 0x09ea, 0x09ed, 0x09ef, 0x09f2, 0x09f5, 0x09f7, 0x09f9, - 0x0007, 0x000b, 0x09c9, 0x09cd, 0x09d1, 0x09d6, 0x09db, 0x09e0, - 0x09e5, 0x0007, 0x000b, 0x09c9, 0x09cd, 0x0998, 0x09fc, 0x09db, - 0x0a06, 0x0a0d, 0x0005, 0x00e3, 0x00ec, 0x00fe, 0x0000, 0x00f5, - 0x0007, 0x000b, 0x09c9, 0x09cd, 0x09d1, 0x09d6, 0x09db, 0x09e0, - // Entry 6D40 - 6D7F - 0x09e5, 0x0007, 0x000b, 0x09ea, 0x09ed, 0x09ef, 0x09f2, 0x09f5, - 0x09f7, 0x09f9, 0x0007, 0x000b, 0x09c9, 0x09cd, 0x09d1, 0x09d6, - 0x09db, 0x09e0, 0x09e5, 0x0007, 0x000b, 0x09c9, 0x09cd, 0x0998, - 0x09fc, 0x09db, 0x0a06, 0x0a0d, 0x0002, 0x010a, 0x0123, 0x0003, - 0x010e, 0x0115, 0x011c, 0x0005, 0x000b, 0xffff, 0x0a14, 0x0a1f, - 0x0a28, 0x0a31, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x0039, 0x0005, 0x000b, 0xffff, 0x0a3a, 0x0a49, 0x0a56, 0x0a63, - 0x0003, 0x0127, 0x012e, 0x0135, 0x0005, 0x000b, 0xffff, 0x0a14, - // Entry 6D80 - 6DBF - 0x0a1f, 0x0a28, 0x0a31, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x0039, 0x0005, 0x000b, 0xffff, 0x0a3a, 0x0a49, 0x0a56, - 0x0a63, 0x0002, 0x013f, 0x015e, 0x0003, 0x0143, 0x014c, 0x0155, - 0x0002, 0x0146, 0x0149, 0x0001, 0x000b, 0x0a70, 0x0001, 0x000b, - 0x0a75, 0x0002, 0x014f, 0x0152, 0x0001, 0x0008, 0x0928, 0x0001, - 0x000b, 0x0a7a, 0x0002, 0x0158, 0x015b, 0x0001, 0x000b, 0x0a70, - 0x0001, 0x000b, 0x0a75, 0x0003, 0x0162, 0x016b, 0x0174, 0x0002, - 0x0165, 0x0168, 0x0001, 0x000b, 0x0a70, 0x0001, 0x000b, 0x0a75, - // Entry 6DC0 - 6DFF - 0x0002, 0x016e, 0x0171, 0x0001, 0x000b, 0x0a70, 0x0001, 0x000b, - 0x0a75, 0x0002, 0x0177, 0x017a, 0x0001, 0x000b, 0x0a70, 0x0001, - 0x000b, 0x0a75, 0x0003, 0x018c, 0x0197, 0x0181, 0x0002, 0x0184, - 0x0188, 0x0002, 0x000b, 0x0a7d, 0x0a90, 0x0002, 0x0000, 0x04f5, - 0x04f9, 0x0002, 0x018f, 0x0193, 0x0002, 0x000b, 0x0aa2, 0x0aae, - 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0001, 0x0199, 0x0002, 0x000b, - 0x0aa2, 0x0aae, 0x0004, 0x01ab, 0x01a5, 0x01a2, 0x01a8, 0x0001, - 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, 0x0514, - // Entry 6E00 - 6E3F - 0x0001, 0x0000, 0x051c, 0x0004, 0x01bc, 0x01b6, 0x01b3, 0x01b9, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x01cd, 0x01c7, 0x01c4, - 0x01ca, 0x0001, 0x000b, 0x0ab9, 0x0001, 0x000b, 0x0ab9, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01d9, 0x01ef, 0x0000, 0x9006, 0x0003, 0x01e3, - 0x01e9, 0x01dd, 0x0001, 0x01df, 0x0002, 0x000b, 0x0ac6, 0x0adb, - 0x0001, 0x01e5, 0x0002, 0x000b, 0x0ae9, 0x0af5, 0x0001, 0x01eb, - // Entry 6E40 - 6E7F - 0x0002, 0x000b, 0x0ae9, 0x0af5, 0x0003, 0x01f6, 0x0000, 0x01f3, - 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x04af, 0x0040, 0x023a, - 0x0000, 0x0000, 0x023f, 0x025e, 0x027d, 0x029c, 0x02b6, 0x02d0, - 0x02ea, 0x0309, 0x0328, 0x0347, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0366, 0x0386, 0x03a6, 0x0000, 0x0000, 0x0000, 0x03c6, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03cb, 0x03d3, 0x03db, - 0x03e3, 0x03eb, 0x03f3, 0x03fb, 0x0403, 0x040b, 0x0413, 0x041b, - 0x0423, 0x042b, 0x0433, 0x043b, 0x0443, 0x044b, 0x0453, 0x045b, - // Entry 6E80 - 6EBF - 0x0463, 0x046b, 0x0000, 0x0473, 0x0000, 0x0478, 0x0492, 0x04ac, - 0x04c6, 0x04e0, 0x04fa, 0x0514, 0x0532, 0x0550, 0x056e, 0x0001, - 0x023c, 0x0001, 0x000b, 0x0afa, 0x0003, 0x0243, 0x0246, 0x024b, - 0x0001, 0x000b, 0x0b04, 0x0003, 0x000b, 0x0b0a, 0x0b12, 0x0b1a, - 0x0002, 0x024e, 0x0256, 0x0006, 0x000b, 0x0b3a, 0x0b29, 0xffff, - 0x0b3a, 0x0b29, 0x0b4b, 0x0006, 0x000b, 0x0b6f, 0x0b62, 0xffff, - 0x0b6f, 0x0b62, 0x0b7c, 0x0003, 0x0262, 0x0265, 0x026a, 0x0001, - 0x000b, 0x0b8f, 0x0003, 0x000b, 0x0b0a, 0x0b12, 0x0b93, 0x0002, - // Entry 6EC0 - 6EFF - 0x026d, 0x0275, 0x0006, 0x000b, 0x0ba0, 0x0ba0, 0xffff, 0x0ba0, - 0x0ba0, 0x0ba0, 0x0006, 0x000b, 0x0baf, 0x0baf, 0xffff, 0x0baf, - 0x0baf, 0x0baf, 0x0003, 0x0281, 0x0284, 0x0289, 0x0001, 0x000b, - 0x0b8f, 0x0003, 0x000b, 0x0b0a, 0x0b12, 0x0b93, 0x0002, 0x028c, - 0x0294, 0x0006, 0x000b, 0x0bba, 0x0bba, 0xffff, 0x0bba, 0x0bba, - 0x0bba, 0x0006, 0x000b, 0x0bc3, 0x0bc3, 0xffff, 0x0bc3, 0x0bc3, - 0x0bc3, 0x0003, 0x02a0, 0x0000, 0x02a3, 0x0001, 0x000b, 0x0bcc, - 0x0002, 0x02a6, 0x02ae, 0x0006, 0x000b, 0x0bd6, 0x0bd6, 0xffff, - // Entry 6F00 - 6F3F - 0x0beb, 0x0c00, 0x0c15, 0x0006, 0x000b, 0x0c2f, 0x0c2f, 0xffff, - 0x0c40, 0x0c51, 0x0c62, 0x0003, 0x02ba, 0x0000, 0x02bd, 0x0001, - 0x000b, 0x0c78, 0x0002, 0x02c0, 0x02c8, 0x0006, 0x000b, 0x0c7e, - 0x0c7e, 0xffff, 0x0c7e, 0x0c7e, 0x0c7e, 0x0006, 0x000b, 0x0c8f, - 0x0c8f, 0xffff, 0x0c8f, 0x0c8f, 0x0c8f, 0x0003, 0x02d4, 0x0000, - 0x02d7, 0x0001, 0x000b, 0x0c78, 0x0002, 0x02da, 0x02e2, 0x0006, - 0x000b, 0x0c9c, 0x0c9c, 0xffff, 0x0c9c, 0x0c9c, 0x0c9c, 0x0006, - 0x000b, 0x0ca7, 0x0ca7, 0xffff, 0x0ca7, 0x0ca7, 0x0ca7, 0x0003, - // Entry 6F40 - 6F7F - 0x02ee, 0x02f1, 0x02f6, 0x0001, 0x000b, 0x0cb2, 0x0003, 0x000b, - 0x0cb6, 0x0cc5, 0x0cd1, 0x0002, 0x02f9, 0x0301, 0x0006, 0x000b, - 0x0cde, 0x0cde, 0xffff, 0x0ced, 0x0cde, 0x0cfc, 0x0006, 0x000b, - 0x0d11, 0x0d11, 0xffff, 0x0d1c, 0x0d11, 0x0d27, 0x0003, 0x030d, - 0x0310, 0x0315, 0x0001, 0x000b, 0x0cb2, 0x0003, 0x000b, 0x0cb6, - 0x0cc5, 0x0cd1, 0x0002, 0x0318, 0x0320, 0x0006, 0x000b, 0x0cde, - 0x0cde, 0xffff, 0x0ced, 0x0cde, 0x0cfc, 0x0006, 0x000b, 0x0d11, - 0x0d11, 0xffff, 0x0d1c, 0x0d11, 0x0d27, 0x0003, 0x032c, 0x032f, - // Entry 6F80 - 6FBF - 0x0334, 0x0001, 0x000b, 0x0cb2, 0x0003, 0x000b, 0x0cb6, 0x0cc5, - 0x0cd1, 0x0002, 0x0337, 0x033f, 0x0006, 0x000b, 0x0d38, 0x0d38, - 0xffff, 0x0d38, 0x0d38, 0x0d38, 0x0006, 0x000b, 0x0d41, 0x0d41, - 0xffff, 0x0d41, 0x0d41, 0x0d41, 0x0003, 0x034b, 0x034e, 0x0353, - 0x0001, 0x000b, 0x0d4a, 0x0003, 0x000b, 0x0d51, 0x0d63, 0x0d72, - 0x0002, 0x0356, 0x035e, 0x0006, 0x000b, 0x0d82, 0x0d82, 0xffff, - 0x0d82, 0x0d82, 0x0d94, 0x0006, 0x000b, 0x0dac, 0x0dac, 0xffff, - 0x0dac, 0x0dac, 0x0dba, 0x0003, 0x036a, 0x036d, 0x0373, 0x0001, - // Entry 6FC0 - 6FFF - 0x000b, 0x0dce, 0x0004, 0x000b, 0x0de5, 0x0dec, 0x0df2, 0x0dd3, - 0x0002, 0x0376, 0x037e, 0x0006, 0x000b, 0x0dfe, 0x0dfe, 0xffff, - 0x0e0e, 0x0dfe, 0x0e1e, 0x0006, 0x000b, 0x0e34, 0x0e34, 0xffff, - 0x0e40, 0x0e34, 0x0e4c, 0x0003, 0x038a, 0x038d, 0x0393, 0x0001, - 0x0000, 0x2008, 0x0004, 0x000b, 0x0de5, 0x0dec, 0x0df2, 0x0dd3, - 0x0002, 0x0396, 0x039e, 0x0006, 0x000b, 0x0e5e, 0x0e5e, 0xffff, - 0x0e5e, 0x0e5e, 0x0e5e, 0x0006, 0x000b, 0x0e6b, 0x0e6b, 0xffff, - 0x0e6b, 0x0e6b, 0x0e6b, 0x0003, 0x03aa, 0x03ad, 0x03b3, 0x0001, - // Entry 7000 - 703F - 0x0000, 0x2008, 0x0004, 0x000b, 0x0de5, 0x0dec, 0x0df2, 0x0dd3, - 0x0002, 0x03b6, 0x03be, 0x0006, 0x0000, 0x1b48, 0x1b48, 0xffff, - 0x1b48, 0x1b48, 0x1b48, 0x0006, 0x0000, 0x1b4f, 0x1b4f, 0xffff, - 0x1b4f, 0x1b4f, 0x1b4f, 0x0001, 0x03c8, 0x0001, 0x000b, 0x0e74, - 0x0002, 0x0000, 0x03ce, 0x0003, 0x000b, 0x0e83, 0x0e93, 0x0e9f, - 0x0002, 0x0000, 0x03d6, 0x0003, 0x000b, 0x0eab, 0x0eb9, 0x0ec2, - 0x0002, 0x0000, 0x03de, 0x0003, 0x000b, 0x0ecc, 0x0ed9, 0x0ee1, - 0x0002, 0x0000, 0x03e6, 0x0003, 0x000b, 0x0eea, 0x0efa, 0x0f06, - // Entry 7040 - 707F - 0x0002, 0x0000, 0x03ee, 0x0003, 0x000b, 0x0f12, 0x0f20, 0x0f29, - 0x0002, 0x0000, 0x03f6, 0x0003, 0x000b, 0x0f33, 0x0f3f, 0x0f46, - 0x0002, 0x0000, 0x03fe, 0x0003, 0x000b, 0x0f4e, 0x0f61, 0x0f70, - 0x0002, 0x0000, 0x0406, 0x0003, 0x000b, 0x0f7f, 0x0f8e, 0x0f98, - 0x0002, 0x0000, 0x040e, 0x0003, 0x000b, 0x0fa3, 0x0fb0, 0x0fb8, - 0x0002, 0x0000, 0x0416, 0x0003, 0x000b, 0x0fc1, 0x0fd7, 0x0fe9, - 0x0002, 0x0000, 0x041e, 0x0003, 0x000b, 0x0ffb, 0x100a, 0x1014, - 0x0002, 0x0000, 0x0426, 0x0003, 0x000b, 0x101f, 0x102c, 0x1034, - // Entry 7080 - 70BF - 0x0002, 0x0000, 0x042e, 0x0003, 0x000b, 0x103d, 0x104f, 0x105c, - 0x0002, 0x0000, 0x0436, 0x0003, 0x000b, 0x106a, 0x1079, 0x1083, - 0x0002, 0x0000, 0x043e, 0x0003, 0x000b, 0x108e, 0x109a, 0x1083, - 0x0002, 0x0000, 0x0446, 0x0003, 0x000b, 0x10a1, 0x10b4, 0x10c3, - 0x0002, 0x0000, 0x044e, 0x0003, 0x000b, 0x10d2, 0x10e1, 0x10eb, - 0x0002, 0x0000, 0x0456, 0x0003, 0x000b, 0x10f6, 0x1102, 0x1109, - 0x0002, 0x0000, 0x045e, 0x0003, 0x000b, 0x1111, 0x1124, 0x1133, - 0x0002, 0x0000, 0x0466, 0x0003, 0x000b, 0x1142, 0x1151, 0x115b, - // Entry 70C0 - 70FF - 0x0002, 0x0000, 0x046e, 0x0003, 0x000b, 0x1166, 0x1173, 0x117b, - 0x0001, 0x0475, 0x0001, 0x000b, 0x1184, 0x0003, 0x047c, 0x0000, - 0x047f, 0x0001, 0x000b, 0x118a, 0x0002, 0x0482, 0x048a, 0x0006, - 0x000b, 0x118e, 0x118e, 0xffff, 0x118e, 0x118e, 0x119d, 0x0006, - 0x000b, 0x11b2, 0x11b2, 0xffff, 0x11b2, 0x11b2, 0x11bd, 0x0003, - 0x0496, 0x0000, 0x0499, 0x0001, 0x000b, 0x11ce, 0x0002, 0x049c, - 0x04a4, 0x0006, 0x000b, 0x11d0, 0x11d0, 0xffff, 0x11d0, 0x11d0, - 0x11d0, 0x0006, 0x000b, 0x11dd, 0x11dd, 0xffff, 0x11dd, 0x11dd, - // Entry 7100 - 713F - 0x11dd, 0x0003, 0x04b0, 0x0000, 0x04b3, 0x0001, 0x000b, 0x11ce, - 0x0002, 0x04b6, 0x04be, 0x0006, 0x0000, 0x1d76, 0x1d76, 0xffff, - 0x1d76, 0x1d76, 0x1d76, 0x0006, 0x0000, 0x1d7d, 0x1d7d, 0xffff, - 0x1d7d, 0x1d7d, 0x1d7d, 0x0003, 0x04ca, 0x0000, 0x04cd, 0x0001, - 0x000b, 0x11e6, 0x0002, 0x04d0, 0x04d8, 0x0006, 0x000b, 0x11ec, - 0x11ec, 0xffff, 0x11fd, 0x11ec, 0x120e, 0x0006, 0x000b, 0x1224, - 0x1224, 0xffff, 0x1231, 0x1224, 0x123e, 0x0003, 0x04e4, 0x0000, - 0x04e7, 0x0001, 0x000b, 0x1250, 0x0002, 0x04ea, 0x04f2, 0x0006, - // Entry 7140 - 717F - 0x000b, 0x1254, 0x1254, 0xffff, 0x1254, 0x1254, 0x1254, 0x0006, - 0x000b, 0x1263, 0x1263, 0xffff, 0x1263, 0x1263, 0x1263, 0x0003, - 0x04fe, 0x0000, 0x0501, 0x0001, 0x000b, 0x1250, 0x0002, 0x0504, - 0x050c, 0x0006, 0x0000, 0x1d97, 0x1d97, 0xffff, 0x1d97, 0x1d97, - 0x1d97, 0x0006, 0x0000, 0x1da0, 0x1da0, 0xffff, 0x1da0, 0x1da0, - 0x1da0, 0x0003, 0x0518, 0x051b, 0x051f, 0x0001, 0x000b, 0x126e, - 0x0002, 0x000b, 0xffff, 0x1275, 0x0002, 0x0522, 0x052a, 0x0006, - 0x000b, 0x127d, 0x127d, 0xffff, 0x127d, 0x127d, 0x128f, 0x0006, - // Entry 7180 - 71BF - 0x000b, 0x12a6, 0x12a6, 0xffff, 0x12a6, 0x12a6, 0x12a6, 0x0003, - 0x0536, 0x0539, 0x053d, 0x0001, 0x0000, 0x2002, 0x0002, 0x000b, - 0xffff, 0x12b4, 0x0002, 0x0540, 0x0548, 0x0006, 0x000b, 0x12ba, - 0x12ba, 0xffff, 0x12ba, 0x12ba, 0x12ba, 0x0006, 0x000b, 0x12c7, - 0x12c7, 0xffff, 0x12c7, 0x12c7, 0x12c7, 0x0003, 0x0554, 0x0557, - 0x055b, 0x0001, 0x0000, 0x2002, 0x0002, 0x000b, 0xffff, 0x12b4, - 0x0002, 0x055e, 0x0566, 0x0006, 0x0000, 0x1db4, 0x1db4, 0xffff, - 0x1db4, 0x1db4, 0x1db4, 0x0006, 0x0000, 0x1dbb, 0x1dbb, 0xffff, - // Entry 71C0 - 71FF - 0x1dbb, 0x1dbb, 0x1dbb, 0x0001, 0x0570, 0x0001, 0x000b, 0x12d0, - 0x0004, 0x0578, 0x057d, 0x0582, 0x058d, 0x0003, 0x0000, 0x1dc7, - 0x21de, 0x21da, 0x0003, 0x000b, 0x12da, 0x12e2, 0x12f0, 0x0002, - 0x0000, 0x0585, 0x0002, 0x0000, 0x0588, 0x0003, 0x000b, 0xffff, - 0x1302, 0x1318, 0x0002, 0x0000, 0x0590, 0x0003, 0x0633, 0x06d2, - 0x0594, 0x009d, 0x000b, 0x132f, 0x133f, 0x134f, 0x1363, 0x1393, - 0x13e0, 0x1445, 0xffff, 0x147e, 0x14b9, 0xffff, 0x14f8, 0x152b, - 0x1558, 0x158f, 0x15e0, 0x163a, 0xffff, 0x1675, 0x16cc, 0x1735, - // Entry 7200 - 723F - 0x178f, 0x17e7, 0x1825, 0x1860, 0x188e, 0x189a, 0x18b4, 0x18e0, - 0x1909, 0xffff, 0x194b, 0x197d, 0x19aa, 0xffff, 0x19cc, 0x19df, - 0x19fc, 0x1a35, 0x1a6c, 0xffff, 0xffff, 0x1a8e, 0x1aaf, 0x1adb, - 0x1af7, 0x1b3b, 0xffff, 0x1b8c, 0x1be1, 0x1c21, 0x1c45, 0x1c58, - 0x1c83, 0x1c98, 0x1caf, 0xffff, 0x1cd5, 0x1d09, 0x1d63, 0x1dbe, - 0x1de5, 0xffff, 0x1dfe, 0xffff, 0x1e2a, 0xffff, 0x1e3e, 0xffff, - 0x1e4d, 0x1e64, 0x1e89, 0x1eb7, 0x1eea, 0x1f1a, 0xffff, 0x1f3e, - 0x1f55, 0x1f7b, 0xffff, 0xffff, 0x1f9f, 0xffff, 0xffff, 0x1fea, - // Entry 7240 - 727F - 0xffff, 0x1ffd, 0x200a, 0x201a, 0x202b, 0x2048, 0xffff, 0x2082, - 0xffff, 0x20ce, 0x2109, 0x212f, 0x213b, 0x2145, 0x2163, 0x21ac, - 0x21ef, 0x2221, 0x222a, 0xffff, 0x224b, 0xffff, 0x2288, 0x22b2, - 0xffff, 0x22c9, 0x22fd, 0x2332, 0xffff, 0x237d, 0x23bf, 0xffff, - 0xffff, 0x23cc, 0xffff, 0x23e9, 0xffff, 0x241d, 0x2441, 0x244e, - 0x2466, 0x2478, 0x248a, 0xffff, 0x2496, 0x24ac, 0x24d2, 0x24e2, - 0x24f8, 0xffff, 0x252d, 0x255f, 0x2576, 0x25ae, 0x25ea, 0x2612, - 0x2630, 0x266e, 0xffff, 0xffff, 0x269a, 0x26bb, 0x26f6, 0x1dab, - // Entry 7280 - 72BF - 0xffff, 0xffff, 0x1411, 0xffff, 0xffff, 0xffff, 0x1fae, 0x1fc6, - 0x009d, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0x137a, 0x13d5, - 0x1437, 0xffff, 0x1471, 0x14a8, 0xffff, 0x14eb, 0x1522, 0x154d, - 0x157e, 0x15c1, 0x162e, 0xffff, 0x1662, 0x16ab, 0x171e, 0x1773, - 0x17d7, 0x1817, 0x1851, 0xffff, 0xffff, 0x18a6, 0xffff, 0x18f6, - 0xffff, 0x193f, 0x1973, 0x19a1, 0xffff, 0xffff, 0xffff, 0x19ef, - 0x1a26, 0x1a63, 0xffff, 0xffff, 0xffff, 0x1aa1, 0xffff, 0x1ae7, - 0x1b27, 0xffff, 0x1b73, 0x1bce, 0x1c17, 0xffff, 0xffff, 0xffff, - // Entry 72C0 - 72FF - 0xffff, 0x1ca4, 0xffff, 0xffff, 0x1cf2, 0x1d47, 0xffff, 0xffff, - 0xffff, 0x1df0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1e80, 0x1eab, 0x1edf, 0x1f10, 0xffff, 0xffff, 0xffff, - 0x1f71, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x203e, 0xffff, 0x206c, 0xffff, - 0x20be, 0x20fe, 0xffff, 0xffff, 0xffff, 0x214f, 0x219b, 0x21de, - 0xffff, 0xffff, 0xffff, 0x223b, 0xffff, 0x227b, 0xffff, 0xffff, - 0x22bc, 0x22f3, 0x2321, 0xffff, 0x2364, 0xffff, 0xffff, 0xffff, - // Entry 7300 - 733F - 0xffff, 0xffff, 0x23dc, 0xffff, 0x2413, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x24a1, 0xffff, 0xffff, 0x24ee, - 0xffff, 0x251c, 0xffff, 0x256a, 0x259e, 0x25de, 0xffff, 0x2620, - 0x2660, 0xffff, 0xffff, 0xffff, 0x26af, 0x26e3, 0xffff, 0xffff, - 0xffff, 0x1406, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fbc, 0x009d, - 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0x13b6, 0x13f5, 0x145d, - 0xffff, 0x1495, 0x14d4, 0xffff, 0x150f, 0x153e, 0x156d, 0x15aa, - 0x1609, 0x1650, 0xffff, 0x1692, 0x16f7, 0x1756, 0x17b5, 0x1801, - // Entry 7340 - 737F - 0x183d, 0x1879, 0xffff, 0xffff, 0x18cc, 0xffff, 0x1926, 0xffff, - 0x1961, 0x1991, 0x19bd, 0xffff, 0xffff, 0xffff, 0x1a13, 0x1a4e, - 0x1a7f, 0xffff, 0xffff, 0xffff, 0x1ac7, 0xffff, 0x1b11, 0x1b59, - 0xffff, 0x1baf, 0x1bfe, 0x1c35, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1cc4, 0xffff, 0xffff, 0x1d2a, 0x1d89, 0xffff, 0xffff, 0xffff, - 0x1e16, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1e9c, 0x1ecd, 0x1eff, 0x1f2e, 0xffff, 0xffff, 0xffff, 0x1f8f, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 7380 - 73BF - 0xffff, 0xffff, 0xffff, 0x205c, 0xffff, 0x20a2, 0xffff, 0x20e8, - 0x211e, 0xffff, 0xffff, 0xffff, 0x2181, 0x21c7, 0x220a, 0xffff, - 0xffff, 0xffff, 0x2265, 0xffff, 0x229f, 0xffff, 0xffff, 0x22e0, - 0x2311, 0x234d, 0xffff, 0x23a0, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2400, 0xffff, 0x2431, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x24c1, 0xffff, 0xffff, 0x250c, 0xffff, - 0x2548, 0xffff, 0x258c, 0x25c8, 0x2600, 0xffff, 0x264a, 0x2686, - 0xffff, 0xffff, 0xffff, 0x26d1, 0x2713, 0xffff, 0xffff, 0xffff, - // Entry 73C0 - 73FF - 0x1426, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fda, 0x0003, 0x0004, - 0x00e5, 0x0163, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000f, 0x0029, 0x0000, 0x00ce, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, 0x0000, 0x0004, 0x0026, - 0x0020, 0x001d, 0x0023, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, - 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, 0x000c, 0x0029, 0x0008, - 0x0032, 0x005a, 0x007f, 0x008c, 0x00a4, 0x00ac, 0x00bd, 0x0000, - 0x0002, 0x0035, 0x0048, 0x0003, 0x0000, 0x0000, 0x0039, 0x000d, - // Entry 7400 - 743F - 0x000c, 0xffff, 0x0036, 0x004f, 0x006e, 0x007e, 0x0091, 0x0098, - 0x00a2, 0x00b2, 0x00c2, 0x00e1, 0x00f1, 0x010a, 0x0002, 0x0000, - 0x004b, 0x000d, 0x000c, 0xffff, 0x0126, 0x012a, 0x0131, 0x0138, - 0x0091, 0x013c, 0x013c, 0x0143, 0x0147, 0x014e, 0x0152, 0x0156, - 0x0002, 0x005d, 0x0073, 0x0003, 0x0061, 0x0000, 0x006a, 0x0007, - 0x000c, 0x015d, 0x0167, 0x016e, 0x017b, 0x0185, 0x0195, 0x01a5, - 0x0007, 0x000c, 0x01b2, 0x01c5, 0x01d5, 0x01eb, 0x01fe, 0x0217, - 0x0230, 0x0002, 0x0000, 0x0076, 0x0007, 0x000c, 0x0246, 0x024a, - // Entry 7440 - 747F - 0x024e, 0x0255, 0x025c, 0x0263, 0x0263, 0x0001, 0x0081, 0x0003, - 0x0000, 0x0000, 0x0085, 0x0005, 0x000c, 0xffff, 0x026a, 0x02af, - 0x02f1, 0x033c, 0x0001, 0x008e, 0x0003, 0x0092, 0x0000, 0x009b, - 0x0002, 0x0095, 0x0098, 0x0001, 0x000c, 0x038b, 0x0001, 0x000c, - 0x0395, 0x0002, 0x009e, 0x00a1, 0x0001, 0x000c, 0x038b, 0x0001, - 0x000c, 0x0395, 0x0001, 0x00a6, 0x0001, 0x00a8, 0x0002, 0x000c, - 0x03a8, 0x03c2, 0x0004, 0x00ba, 0x00b4, 0x00b1, 0x00b7, 0x0001, - 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, 0x0001, 0x000c, 0x03e3, - // Entry 7480 - 74BF - 0x0001, 0x000c, 0x03ec, 0x0004, 0x00cb, 0x00c5, 0x00c2, 0x00c8, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, 0x00d0, 0x0001, 0x00d2, - 0x0003, 0x0000, 0x0000, 0x00d6, 0x000d, 0x000c, 0xffff, 0x03f3, - 0x0416, 0x0423, 0x0430, 0x0440, 0x0450, 0x045d, 0x046a, 0x047d, - 0x0487, 0x0494, 0x04a4, 0x0040, 0x0126, 0x0000, 0x0000, 0x012b, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0130, 0x0000, 0x0000, - 0x0135, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013a, 0x0000, - // Entry 74C0 - 74FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x014a, 0x0000, 0x014f, 0x0000, 0x0000, 0x0154, 0x0000, 0x0000, - 0x0159, 0x0000, 0x0000, 0x015e, 0x0001, 0x0128, 0x0001, 0x000c, - 0x04b1, 0x0001, 0x012d, 0x0001, 0x000c, 0x04c1, 0x0001, 0x0132, - 0x0001, 0x000c, 0x04d1, 0x0001, 0x0137, 0x0001, 0x000c, 0x04db, - // Entry 7500 - 753F - 0x0002, 0x013d, 0x0140, 0x0001, 0x000c, 0x04f5, 0x0003, 0x000c, - 0x04ff, 0x050c, 0x0519, 0x0001, 0x0147, 0x0001, 0x000c, 0x0529, - 0x0001, 0x014c, 0x0001, 0x000c, 0x054d, 0x0001, 0x0151, 0x0001, - 0x000c, 0x056a, 0x0001, 0x0156, 0x0001, 0x000c, 0x057a, 0x0001, - 0x015b, 0x0001, 0x000c, 0x058a, 0x0001, 0x0160, 0x0001, 0x000c, - 0x05a0, 0x0004, 0x0000, 0x0000, 0x0168, 0x0173, 0x0002, 0x0000, - 0x016b, 0x0002, 0x0000, 0x016e, 0x0003, 0x000c, 0xffff, 0x05b0, - 0x05dd, 0x0002, 0x035a, 0x0176, 0x0003, 0x017a, 0x02ba, 0x021a, - // Entry 7540 - 757F - 0x009e, 0x000c, 0xffff, 0xffff, 0xffff, 0xffff, 0x079e, 0x0866, - 0x0984, 0x0a13, 0x0ae4, 0x0bb5, 0x0c86, 0x0d1e, 0xffff, 0x0ecb, - 0x0f48, 0x0fec, 0x10cf, 0x1155, 0x11f6, 0x12cc, 0x13e8, 0x14dd, - 0x15d2, 0x1673, 0x16f0, 0xffff, 0xffff, 0x180c, 0xffff, 0x1919, - 0xffff, 0x19f6, 0x1a73, 0x1ae7, 0x1b6d, 0xffff, 0xffff, 0x1c93, - 0x1d2b, 0x1dd3, 0xffff, 0xffff, 0xffff, 0x1f39, 0xffff, 0x2028, - 0x20cc, 0xffff, 0x218b, 0x2253, 0x2306, 0xffff, 0xffff, 0xffff, - 0xffff, 0x24b4, 0xffff, 0xffff, 0x25da, 0x26c6, 0xffff, 0xffff, - // Entry 7580 - 75BF - 0x2866, 0x290a, 0x29a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2bf4, 0x2c71, 0x2d24, 0x2dbc, 0x2e39, 0xffff, 0xffff, - 0x2fc6, 0xffff, 0x308e, 0xffff, 0xffff, 0x3226, 0xffff, 0x3350, - 0xffff, 0xffff, 0xffff, 0xffff, 0x34c9, 0xffff, 0xffff, 0xffff, - 0x3597, 0x362f, 0xffff, 0xffff, 0xffff, 0x3769, 0x383a, 0x38ff, - 0xffff, 0xffff, 0x3a48, 0x3b8f, 0x3c54, 0x3cda, 0xffff, 0xffff, - 0x3e04, 0x3e93, 0x3f07, 0xffff, 0x3ff7, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x42c5, 0x4354, 0x43d1, 0xffff, 0xffff, 0xffff, - // Entry 75C0 - 75FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x468f, - 0xffff, 0x4745, 0xffff, 0x484f, 0x48d5, 0x499a, 0xffff, 0x4a68, - 0x4b36, 0xffff, 0xffff, 0xffff, 0x4cbe, 0x4d5f, 0xffff, 0xffff, - 0x0604, 0x08fe, 0x0da4, 0x0e33, 0xffff, 0xffff, 0x32d3, 0x418b, - 0x009e, 0x000c, 0x066f, 0x06ae, 0x06fa, 0x074c, 0x07d4, 0x0889, - 0x09a7, 0x0a49, 0x0b1a, 0x0beb, 0x0ca9, 0x0d3e, 0xffff, 0x0ee5, - 0x0f71, 0x102b, 0x10ef, 0x117b, 0x1225, 0x131b, 0x142a, 0x151f, - 0x15fb, 0x1690, 0x1719, 0x1791, 0x17ca, 0x183b, 0x18bf, 0x1943, - // Entry 7600 - 763F - 0x19bd, 0x1a10, 0x1a8d, 0x1b04, 0x1b96, 0x1c0e, 0x1c4d, 0x1cb9, - 0x1d52, 0x1df3, 0x1e62, 0x1e9b, 0x1ef3, 0x1f66, 0x1fe6, 0x2052, - 0x20ff, 0xffff, 0x21c1, 0x2282, 0x2320, 0x237a, 0x23d5, 0x2430, - 0x2475, 0x24da, 0x254c, 0x259b, 0x261c, 0x270b, 0x27f1, 0x282a, - 0x288d, 0x2930, 0x29bf, 0x2a1f, 0x2a5b, 0x2aaa, 0x2aed, 0x2b35, - 0x2b93, 0x2c0e, 0x2ca0, 0x2d47, 0x2dd6, 0x2e87, 0x2f49, 0x2f7b, - 0x2fe6, 0x3055, 0x30c6, 0x315c, 0x31e0, 0x3250, 0xffff, 0x336a, - 0x33c4, 0x3403, 0x343f, 0x3487, 0x34ef, 0x3561, 0xffff, 0xffff, - // Entry 7640 - 767F - 0x35bd, 0x364f, 0x36b5, 0x36f7, 0x3730, 0x37a2, 0x386c, 0x3937, - 0x39d6, 0x3a0c, 0x3a8e, 0x3bc4, 0x3c74, 0x3d03, 0x3d7b, 0x3db1, - 0x3e27, 0x3ead, 0x3f30, 0x3fa8, 0x403b, 0x40f2, 0x4134, 0xffff, - 0x4247, 0x4289, 0x42e8, 0x4371, 0x43eb, 0x4445, 0x4484, 0x44c6, - 0x4502, 0x4551, 0x4590, 0x45c9, 0xffff, 0x4605, 0x4653, 0x46ac, - 0x470c, 0x477d, 0x4813, 0x486f, 0x490a, 0x49ba, 0x4a20, 0x4a9d, - 0x4b62, 0x4be0, 0x4c1f, 0x4c65, 0x4ce7, 0x4d9a, 0x27bb, 0x3b40, - 0x061b, 0x091e, 0x0dc7, 0x0e59, 0xffff, 0x31aa, 0x32f0, 0x41bd, - // Entry 7680 - 76BF - 0x009e, 0x000c, 0xffff, 0xffff, 0xffff, 0xffff, 0x0826, 0x08c8, - 0x09e6, 0x0a9b, 0x0b6c, 0x0c3d, 0x0ce8, 0x0d7a, 0xffff, 0x0f1b, - 0x0fb6, 0x1086, 0x112b, 0x11bd, 0x127d, 0x1386, 0x1488, 0x157d, - 0x1640, 0x16c9, 0x175e, 0xffff, 0xffff, 0x1886, 0xffff, 0x1989, - 0xffff, 0x1a46, 0x1ac3, 0x1b3d, 0x1bdb, 0xffff, 0xffff, 0x1cfb, - 0x1d95, 0x1e2f, 0xffff, 0xffff, 0xffff, 0x1faf, 0xffff, 0x2098, - 0x214e, 0xffff, 0x2213, 0x22cd, 0x2356, 0xffff, 0xffff, 0xffff, - 0xffff, 0x251c, 0xffff, 0xffff, 0x267a, 0x276c, 0xffff, 0xffff, - // Entry 76C0 - 76FF - 0x28d0, 0x2972, 0x29f8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2c44, 0x2ceb, 0x2d86, 0x2e0c, 0x2ef1, 0xffff, 0xffff, - 0x3022, 0xffff, 0x311a, 0xffff, 0xffff, 0x3296, 0xffff, 0x33a0, - 0xffff, 0xffff, 0xffff, 0xffff, 0x3531, 0xffff, 0xffff, 0xffff, - 0x35ff, 0x368b, 0xffff, 0xffff, 0xffff, 0x37f7, 0x38ba, 0x398b, - 0xffff, 0xffff, 0x3af0, 0x3c15, 0x3cb0, 0x3d48, 0xffff, 0xffff, - 0x3e66, 0x3ee3, 0x3f75, 0xffff, 0x409b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4327, 0x43aa, 0x4421, 0xffff, 0xffff, 0xffff, - // Entry 7700 - 773F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x46e5, - 0xffff, 0x47d1, 0xffff, 0x48ab, 0x495b, 0x49f6, 0xffff, 0x4aee, - 0x4baa, 0xffff, 0xffff, 0xffff, 0x4d2c, 0x4df1, 0xffff, 0xffff, - 0x064e, 0x095a, 0x0e06, 0x0e9b, 0xffff, 0xffff, 0x3329, 0x420b, - 0x0003, 0x0000, 0x0000, 0x035e, 0x0042, 0x000b, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 7740 - 777F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, - 0x0003, 0x0004, 0x02e7, 0x07d1, 0x0012, 0x0017, 0x0024, 0x0000, - 0x0000, 0x0000, 0x0000, 0x003c, 0x0067, 0x027b, 0x0000, 0x0288, - 0x0000, 0x0000, 0x0000, 0x0000, 0x02cd, 0x0000, 0x02d6, 0x0005, - // Entry 7780 - 77BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, - 0x0021, 0x0001, 0x0000, 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x002b, 0x0004, 0x0039, 0x0033, 0x0030, 0x0036, - 0x0001, 0x000d, 0x0000, 0x0001, 0x000d, 0x000a, 0x0001, 0x000d, - 0x000a, 0x0001, 0x000d, 0x000a, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0045, 0x0000, 0x0056, 0x0004, 0x0053, 0x004d, - 0x004a, 0x0050, 0x0001, 0x000d, 0x0011, 0x0001, 0x000d, 0x0025, - 0x0001, 0x000d, 0x0033, 0x0001, 0x000d, 0x003e, 0x0004, 0x0064, - // Entry 77C0 - 77FF - 0x005e, 0x005b, 0x0061, 0x0001, 0x000d, 0x004d, 0x0001, 0x000d, - 0x004d, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, - 0x0070, 0x00d5, 0x012c, 0x0161, 0x0232, 0x0248, 0x0259, 0x026a, - 0x0002, 0x0073, 0x00a4, 0x0003, 0x0077, 0x0086, 0x0095, 0x000d, - 0x000d, 0xffff, 0x0059, 0x005d, 0x0061, 0x0065, 0x0069, 0x006d, - 0x0071, 0x0075, 0x0079, 0x007d, 0x0081, 0x0085, 0x000d, 0x0000, - 0xffff, 0x214a, 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, 0x214a, - 0x1f9c, 0x2002, 0x1f98, 0x1f96, 0x2008, 0x000d, 0x000d, 0xffff, - // Entry 7800 - 783F - 0x0089, 0x0090, 0x0098, 0x009d, 0x0069, 0x00a3, 0x00a8, 0x00ad, - 0x00b4, 0x00be, 0x00c6, 0x00cf, 0x0003, 0x00a8, 0x00b7, 0x00c6, - 0x000d, 0x000d, 0xffff, 0x0059, 0x005d, 0x0061, 0x0065, 0x0069, - 0x006d, 0x0071, 0x0075, 0x0079, 0x007d, 0x0081, 0x0085, 0x000d, - 0x0000, 0xffff, 0x214a, 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, - 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x1f96, 0x2008, 0x000d, 0x000d, - 0xffff, 0x0089, 0x0090, 0x0098, 0x009d, 0x0069, 0x00a3, 0x00a8, - 0x00ad, 0x00b4, 0x00be, 0x00c6, 0x00cf, 0x0002, 0x00d8, 0x0102, - // Entry 7840 - 787F - 0x0005, 0x00de, 0x00e7, 0x00f9, 0x0000, 0x00f0, 0x0007, 0x000d, - 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, - 0x0000, 0x21cc, 0x21e5, 0x21e7, 0x21d0, 0x21e9, 0x21e5, 0x21d0, - 0x0007, 0x000d, 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, - 0x00f1, 0x0007, 0x000d, 0x00f5, 0x00fe, 0x010a, 0x0111, 0x0119, - 0x0123, 0x0129, 0x0005, 0x0108, 0x0111, 0x0123, 0x0000, 0x011a, - 0x0007, 0x000d, 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, - 0x00f1, 0x0007, 0x0000, 0x1f96, 0x21ec, 0x2010, 0x2002, 0x21ee, - // Entry 7880 - 78BF - 0x21ec, 0x2002, 0x0007, 0x000d, 0x00d8, 0x00dc, 0x00e0, 0x00e4, - 0x00e8, 0x00ed, 0x00f1, 0x0007, 0x000d, 0x00f5, 0x00fe, 0x010a, - 0x0111, 0x0119, 0x0123, 0x0129, 0x0002, 0x012f, 0x0148, 0x0003, - 0x0133, 0x013a, 0x0141, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, - 0x1f1d, 0x1f20, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, - 0x0139, 0x0005, 0x000d, 0xffff, 0x013c, 0x0149, 0x0157, 0x0166, - 0x0003, 0x014c, 0x0153, 0x015a, 0x0005, 0x0000, 0xffff, 0x1f17, - 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, - // Entry 78C0 - 78FF - 0x0136, 0x0139, 0x0005, 0x000d, 0xffff, 0x013c, 0x0149, 0x0157, - 0x0166, 0x0002, 0x0164, 0x01cb, 0x0003, 0x0168, 0x0189, 0x01aa, - 0x0008, 0x0174, 0x017a, 0x0171, 0x017d, 0x0180, 0x0183, 0x0186, - 0x0177, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, 0x0001, - 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, 0x0197, - 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, 0x000d, - 0x01b4, 0x0008, 0x0195, 0x019b, 0x0192, 0x019e, 0x01a1, 0x01a4, - 0x01a7, 0x0198, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, - // Entry 7900 - 793F - 0x0001, 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, - 0x0197, 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, - 0x000d, 0x01b4, 0x0008, 0x01b6, 0x01bc, 0x01b3, 0x01bf, 0x01c2, - 0x01c5, 0x01c8, 0x01b9, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, - 0x017e, 0x0001, 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, - 0x000d, 0x0197, 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, - 0x0001, 0x000d, 0x01b4, 0x0003, 0x01cf, 0x01f0, 0x0211, 0x0008, - 0x01db, 0x01e1, 0x01d8, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01de, - // Entry 7940 - 797F - 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, 0x0001, 0x000d, - 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, 0x0197, 0x0001, - 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, 0x000d, 0x01b4, - 0x0008, 0x01fc, 0x0202, 0x01f9, 0x0205, 0x0208, 0x020b, 0x020e, - 0x01ff, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, 0x0001, - 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, 0x0197, - 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, 0x000d, - 0x01b4, 0x0008, 0x021d, 0x0223, 0x021a, 0x0226, 0x0229, 0x022c, - // Entry 7980 - 79BF - 0x022f, 0x0220, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x017e, - 0x0001, 0x000d, 0x0189, 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, - 0x0197, 0x0001, 0x000d, 0x019e, 0x0001, 0x000d, 0x01ab, 0x0001, - 0x000d, 0x01b4, 0x0003, 0x023c, 0x0242, 0x0236, 0x0001, 0x0238, - 0x0002, 0x000d, 0x01bd, 0x01cc, 0x0001, 0x023e, 0x0002, 0x000d, - 0x01d5, 0x01de, 0x0001, 0x0244, 0x0002, 0x000d, 0x01e4, 0x01ec, - 0x0004, 0x0256, 0x0250, 0x024d, 0x0253, 0x0001, 0x000d, 0x01ef, - 0x0001, 0x000d, 0x0200, 0x0001, 0x000d, 0x020b, 0x0001, 0x000d, - // Entry 79C0 - 79FF - 0x0216, 0x0004, 0x0267, 0x0261, 0x025e, 0x0264, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x0278, 0x0272, 0x026f, 0x0275, 0x0001, - 0x000d, 0x004d, 0x0001, 0x000d, 0x004d, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0281, 0x0001, 0x0283, 0x0001, 0x0285, 0x0001, 0x0000, 0x04ef, - 0x0008, 0x0291, 0x0000, 0x0000, 0x0000, 0x02b5, 0x02bc, 0x0000, - 0x9006, 0x0001, 0x0293, 0x0003, 0x0297, 0x0000, 0x02a6, 0x000d, - // Entry 7A00 - 7A3F - 0x000d, 0xffff, 0x021e, 0x0223, 0x0228, 0x022f, 0x0237, 0x0240, - 0x024a, 0x0251, 0x0256, 0x025b, 0x0260, 0x0267, 0x000d, 0x000d, - 0xffff, 0x026e, 0x0276, 0x027c, 0x0285, 0x028f, 0x029a, 0x02a6, - 0x02ae, 0x02b7, 0x02bf, 0x02c6, 0x02cf, 0x0001, 0x02b7, 0x0001, - 0x02b9, 0x0001, 0x0000, 0x06c8, 0x0004, 0x02ca, 0x02c4, 0x02c1, - 0x02c7, 0x0001, 0x000d, 0x0011, 0x0001, 0x000d, 0x0025, 0x0001, - 0x000d, 0x0033, 0x0001, 0x000d, 0x0033, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0008, 0x0000, - // Entry 7A40 - 7A7F - 0x0000, 0x0000, 0x0000, 0x02df, 0x0000, 0x0000, 0x9006, 0x0001, - 0x02e1, 0x0001, 0x02e3, 0x0002, 0x000d, 0x02da, 0x02e7, 0x0040, - 0x0328, 0x0000, 0x0000, 0x032d, 0x034a, 0x0362, 0x037a, 0x0397, - 0x03af, 0x03c7, 0x03e4, 0x03fc, 0x0414, 0x0435, 0x0451, 0x0000, - 0x0000, 0x0000, 0x046d, 0x048c, 0x04a4, 0x0000, 0x0000, 0x0000, - 0x04bc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04c1, 0x04db, - 0x04f5, 0x050f, 0x0529, 0x0543, 0x055d, 0x0577, 0x0591, 0x05ab, - 0x05c5, 0x05df, 0x05f9, 0x0613, 0x062d, 0x0647, 0x0661, 0x067b, - // Entry 7A80 - 7ABF - 0x0695, 0x06af, 0x06c9, 0x0000, 0x06e3, 0x0000, 0x06e8, 0x0704, - 0x071c, 0x0734, 0x0750, 0x0768, 0x0780, 0x079c, 0x07b4, 0x07cc, - 0x0001, 0x032a, 0x0001, 0x0001, 0x0040, 0x0003, 0x0331, 0x0334, - 0x0339, 0x0001, 0x000d, 0x02ee, 0x0003, 0x000d, 0x02f5, 0x0304, - 0x030f, 0x0002, 0x033c, 0x0343, 0x0005, 0x000d, 0x033c, 0x0320, - 0xffff, 0xffff, 0x032e, 0x0005, 0x000d, 0x036c, 0x034a, 0xffff, - 0xffff, 0x035b, 0x0003, 0x034e, 0x0000, 0x0351, 0x0001, 0x000d, - 0x037d, 0x0002, 0x0354, 0x035b, 0x0005, 0x000d, 0x0382, 0x0382, - // Entry 7AC0 - 7AFF - 0xffff, 0xffff, 0x0382, 0x0005, 0x000d, 0x038e, 0x038e, 0xffff, - 0xffff, 0x038e, 0x0003, 0x0366, 0x0000, 0x0369, 0x0001, 0x000d, - 0x039d, 0x0002, 0x036c, 0x0373, 0x0005, 0x000d, 0x03a0, 0x03a0, - 0xffff, 0xffff, 0x03a0, 0x0005, 0x000d, 0x03aa, 0x03aa, 0xffff, - 0xffff, 0x03aa, 0x0003, 0x037e, 0x0381, 0x0386, 0x0001, 0x000d, - 0x03b7, 0x0003, 0x000d, 0x03bf, 0x03d2, 0x03df, 0x0002, 0x0389, - 0x0390, 0x0005, 0x000d, 0x0400, 0x03f1, 0xffff, 0xffff, 0x0400, - 0x0005, 0x000d, 0x0435, 0x0410, 0xffff, 0xffff, 0x0422, 0x0003, - // Entry 7B00 - 7B3F - 0x039b, 0x0000, 0x039e, 0x0001, 0x000d, 0x043e, 0x0002, 0x03a1, - 0x03a8, 0x0005, 0x000d, 0x0442, 0x0442, 0xffff, 0xffff, 0x0442, - 0x0005, 0x000d, 0x044d, 0x044d, 0xffff, 0xffff, 0x044d, 0x0003, - 0x03b3, 0x0000, 0x03b6, 0x0001, 0x000d, 0x043e, 0x0002, 0x03b9, - 0x03c0, 0x0005, 0x000d, 0x0442, 0x0442, 0xffff, 0xffff, 0x0442, - 0x0005, 0x000d, 0x044d, 0x044d, 0xffff, 0xffff, 0x044d, 0x0003, - 0x03cb, 0x03ce, 0x03d3, 0x0001, 0x000d, 0x045b, 0x0003, 0x000d, - 0x0462, 0x0471, 0x047d, 0x0002, 0x03d6, 0x03dd, 0x0005, 0x000d, - // Entry 7B40 - 7B7F - 0x04ab, 0x048e, 0xffff, 0xffff, 0x049c, 0x0005, 0x000d, 0x04dd, - 0x04ba, 0xffff, 0xffff, 0x04cb, 0x0003, 0x03e8, 0x0000, 0x03eb, - 0x0001, 0x000d, 0x04ef, 0x0002, 0x03ee, 0x03f5, 0x0005, 0x000d, - 0x04f3, 0x04f3, 0xffff, 0xffff, 0x04f3, 0x0005, 0x000d, 0x04fe, - 0x04fe, 0xffff, 0xffff, 0x04fe, 0x0003, 0x0400, 0x0000, 0x0403, - 0x0001, 0x000d, 0x04ef, 0x0002, 0x0406, 0x040d, 0x0005, 0x000d, - 0x04f3, 0x04f3, 0xffff, 0xffff, 0x04f3, 0x0005, 0x000d, 0x04fe, - 0x04fe, 0xffff, 0xffff, 0x04fe, 0x0004, 0x0419, 0x041c, 0x0421, - // Entry 7B80 - 7BBF - 0x0432, 0x0001, 0x000d, 0x050c, 0x0003, 0x000d, 0x0514, 0x0524, - 0x0530, 0x0002, 0x0424, 0x042b, 0x0005, 0x000d, 0x0560, 0x0542, - 0xffff, 0xffff, 0x0551, 0x0005, 0x000d, 0x0593, 0x056f, 0xffff, - 0xffff, 0x0581, 0x0001, 0x000d, 0x05a5, 0x0004, 0x043a, 0x0000, - 0x043d, 0x044e, 0x0001, 0x000d, 0x05b4, 0x0002, 0x0440, 0x0447, - 0x0005, 0x000d, 0x05b9, 0x05b9, 0xffff, 0xffff, 0x05b9, 0x0005, - 0x000d, 0x05c5, 0x05c5, 0xffff, 0xffff, 0x05c5, 0x0001, 0x000d, - 0x05a5, 0x0004, 0x0456, 0x0000, 0x0459, 0x046a, 0x0001, 0x000d, - // Entry 7BC0 - 7BFF - 0x05b4, 0x0002, 0x045c, 0x0463, 0x0005, 0x000d, 0x05b9, 0x05b9, - 0xffff, 0xffff, 0x05b9, 0x0005, 0x000d, 0x05c5, 0x05c5, 0xffff, - 0xffff, 0x05c5, 0x0001, 0x000d, 0x05a5, 0x0003, 0x0471, 0x0474, - 0x047b, 0x0001, 0x000d, 0x05d4, 0x0005, 0x000d, 0x05e3, 0x05ea, - 0x05f0, 0x05d8, 0x05f6, 0x0002, 0x047e, 0x0485, 0x0005, 0x000d, - 0x060c, 0x0601, 0xffff, 0xffff, 0x060c, 0x0005, 0x000d, 0x0626, - 0x0618, 0xffff, 0xffff, 0x0626, 0x0003, 0x0490, 0x0000, 0x0493, - 0x0001, 0x000d, 0x05d4, 0x0002, 0x0496, 0x049d, 0x0005, 0x000d, - // Entry 7C00 - 7C3F - 0x0635, 0x0635, 0xffff, 0xffff, 0x0635, 0x0005, 0x000d, 0x063f, - 0x063f, 0xffff, 0xffff, 0x063f, 0x0003, 0x04a8, 0x0000, 0x04ab, - 0x0001, 0x000d, 0x05d4, 0x0002, 0x04ae, 0x04b5, 0x0005, 0x000d, - 0x0635, 0x0635, 0xffff, 0xffff, 0x0635, 0x0005, 0x000d, 0x063f, - 0x063f, 0xffff, 0xffff, 0x063f, 0x0001, 0x04be, 0x0001, 0x000d, - 0x064c, 0x0003, 0x0000, 0x04c5, 0x04ca, 0x0003, 0x000d, 0x065a, - 0x066b, 0x0678, 0x0002, 0x04cd, 0x04d4, 0x0005, 0x000d, 0x06ab, - 0x068b, 0xffff, 0xffff, 0x069b, 0x0005, 0x000d, 0x06e1, 0x06bb, - // Entry 7C40 - 7C7F - 0xffff, 0xffff, 0x06ce, 0x0003, 0x0000, 0x04df, 0x04e4, 0x0003, - 0x000d, 0x06f4, 0x0701, 0x070a, 0x0002, 0x04e7, 0x04ee, 0x0005, - 0x000d, 0x06ab, 0x068b, 0xffff, 0xffff, 0x069b, 0x0005, 0x000d, - 0x06e1, 0x06bb, 0xffff, 0xffff, 0x06ce, 0x0003, 0x0000, 0x04f9, - 0x04fe, 0x0003, 0x000d, 0x06f4, 0x0701, 0x070a, 0x0002, 0x0501, - 0x0508, 0x0005, 0x000d, 0x06ab, 0x068b, 0xffff, 0xffff, 0x069b, - 0x0005, 0x000d, 0x06e1, 0x06bb, 0xffff, 0xffff, 0x06ce, 0x0003, - 0x0000, 0x0513, 0x0518, 0x0003, 0x000d, 0x0719, 0x072d, 0x073e, - // Entry 7C80 - 7CBF - 0x0002, 0x051b, 0x0522, 0x0005, 0x000d, 0x077a, 0x0754, 0xffff, - 0xffff, 0x0767, 0x0005, 0x000d, 0x07ba, 0x078e, 0xffff, 0xffff, - 0x07a4, 0x0003, 0x0000, 0x052d, 0x0532, 0x0003, 0x000d, 0x07d1, - 0x07de, 0x07e8, 0x0002, 0x0535, 0x053c, 0x0005, 0x000d, 0x077a, - 0x0754, 0xffff, 0xffff, 0x0767, 0x0005, 0x000d, 0x07ba, 0x078e, - 0xffff, 0xffff, 0x07a4, 0x0003, 0x0000, 0x0547, 0x054c, 0x0003, - 0x000d, 0x07d1, 0x07de, 0x07e8, 0x0002, 0x054f, 0x0556, 0x0005, - 0x000d, 0x077a, 0x0754, 0xffff, 0xffff, 0x0767, 0x0005, 0x000d, - // Entry 7CC0 - 7CFF - 0x07ba, 0x078e, 0xffff, 0xffff, 0x07a4, 0x0003, 0x0000, 0x0561, - 0x0566, 0x0003, 0x000d, 0x07f6, 0x0805, 0x0811, 0x0002, 0x0569, - 0x0570, 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, 0xffff, 0x0830, - 0x0005, 0x000d, 0x086f, 0x084d, 0xffff, 0xffff, 0x085e, 0x0003, - 0x0000, 0x057b, 0x0580, 0x0003, 0x000d, 0x0881, 0x088e, 0x0898, - 0x0002, 0x0583, 0x058a, 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, - 0xffff, 0x0830, 0x0005, 0x000d, 0x086f, 0x084d, 0xffff, 0xffff, - 0x085e, 0x0003, 0x0000, 0x0595, 0x059a, 0x0003, 0x000d, 0x0881, - // Entry 7D00 - 7D3F - 0x088e, 0x0898, 0x0002, 0x059d, 0x05a4, 0x0005, 0x000d, 0x083e, - 0x0822, 0xffff, 0xffff, 0x0830, 0x0005, 0x000d, 0x086f, 0x084d, - 0xffff, 0xffff, 0x085e, 0x0003, 0x0000, 0x05af, 0x05b4, 0x0003, - 0x000d, 0x08a7, 0x08b7, 0x08c3, 0x0002, 0x05b7, 0x05be, 0x0005, - 0x000d, 0x08f3, 0x08d5, 0xffff, 0xffff, 0x08e4, 0x0005, 0x000d, - 0x0926, 0x0902, 0xffff, 0xffff, 0x0914, 0x0003, 0x0000, 0x05c9, - 0x05ce, 0x0003, 0x000d, 0x0938, 0x0945, 0x094e, 0x0002, 0x05d1, - 0x05d8, 0x0005, 0x000d, 0x08f3, 0x08d5, 0xffff, 0xffff, 0x08e4, - // Entry 7D40 - 7D7F - 0x0005, 0x000d, 0x0926, 0x0902, 0xffff, 0xffff, 0x0914, 0x0003, - 0x0000, 0x05e3, 0x05e8, 0x0003, 0x000d, 0x0938, 0x0945, 0x094e, - 0x0002, 0x05eb, 0x05f2, 0x0005, 0x000d, 0x08f3, 0x08d5, 0xffff, - 0xffff, 0x08e4, 0x0005, 0x000d, 0x0926, 0x0902, 0xffff, 0xffff, - 0x0914, 0x0003, 0x0000, 0x05fd, 0x0602, 0x0003, 0x000d, 0x095d, - 0x096f, 0x097e, 0x0002, 0x0605, 0x060c, 0x0005, 0x000d, 0x09b4, - 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, 0x000d, 0x09ee, 0x09c6, - 0xffff, 0xffff, 0x09da, 0x0003, 0x0000, 0x0617, 0x061c, 0x0003, - // Entry 7D80 - 7DBF - 0x000d, 0x0a03, 0x0a11, 0x0a1c, 0x0002, 0x061f, 0x0626, 0x0005, - 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, 0x000d, - 0x09ee, 0x09c6, 0xffff, 0xffff, 0x09da, 0x0003, 0x0000, 0x0631, - 0x0636, 0x0003, 0x000d, 0x0a03, 0x0a11, 0x0a1c, 0x0002, 0x0639, - 0x0640, 0x0005, 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, - 0x0005, 0x000d, 0x09ee, 0x09c6, 0xffff, 0xffff, 0x09da, 0x0003, - 0x0000, 0x064b, 0x0650, 0x0003, 0x000d, 0x0a2c, 0x0a3a, 0x0a45, - 0x0002, 0x0653, 0x065a, 0x0005, 0x000d, 0x0a6f, 0x0a55, 0xffff, - // Entry 7DC0 - 7DFF - 0xffff, 0x0a62, 0x0005, 0x000d, 0x0a9d, 0x0a7d, 0xffff, 0xffff, - 0x0a8d, 0x0003, 0x0000, 0x0665, 0x066a, 0x0003, 0x000d, 0x0aae, - 0x0abb, 0x0ac5, 0x0002, 0x066d, 0x0674, 0x0005, 0x000d, 0x0a6f, - 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, 0x000d, 0x0a9d, 0x0a7d, - 0xffff, 0xffff, 0x0a8d, 0x0003, 0x0000, 0x067f, 0x0684, 0x0003, - 0x000d, 0x0aae, 0x0abb, 0x0ac5, 0x0002, 0x0687, 0x068e, 0x0005, - 0x000d, 0x0a6f, 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, 0x000d, - 0x0a9d, 0x0a7d, 0xffff, 0xffff, 0x0a8d, 0x0003, 0x0000, 0x0699, - // Entry 7E00 - 7E3F - 0x069e, 0x0003, 0x000d, 0x0ad4, 0x0ae3, 0x0aee, 0x0002, 0x06a1, - 0x06a8, 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, 0xffff, 0x0b0d, - 0x0005, 0x000d, 0x0b4b, 0x0b29, 0xffff, 0xffff, 0x0b3a, 0x0003, - 0x0000, 0x06b3, 0x06b8, 0x0003, 0x000d, 0x0b5c, 0x0b69, 0x0b72, - 0x0002, 0x06bb, 0x06c2, 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, - 0xffff, 0x0b0d, 0x0005, 0x000d, 0x0b4b, 0x0b29, 0xffff, 0xffff, - 0x0b3a, 0x0003, 0x0000, 0x06cd, 0x06d2, 0x0003, 0x000d, 0x0b5c, - 0x0b69, 0x0b72, 0x0002, 0x06d5, 0x06dc, 0x0005, 0x000d, 0x0b1b, - // Entry 7E40 - 7E7F - 0x0aff, 0xffff, 0xffff, 0x0b0d, 0x0005, 0x000d, 0x0b4b, 0x0b29, - 0xffff, 0xffff, 0x0b3a, 0x0001, 0x06e5, 0x0001, 0x000d, 0x0b81, - 0x0003, 0x06ec, 0x06ef, 0x06f3, 0x0001, 0x000d, 0x0b99, 0x0002, - 0x000d, 0xffff, 0x0b9d, 0x0002, 0x06f6, 0x06fd, 0x0005, 0x000d, - 0x0bbd, 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x000d, 0x0be6, - 0x0bc9, 0xffff, 0xffff, 0x0bd7, 0x0003, 0x0708, 0x0000, 0x070b, - 0x0001, 0x0000, 0x2143, 0x0002, 0x070e, 0x0715, 0x0005, 0x000d, - 0x0bbd, 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x000d, 0x0be6, - // Entry 7E80 - 7EBF - 0x0bc9, 0xffff, 0xffff, 0x0bd7, 0x0003, 0x0720, 0x0000, 0x0723, - 0x0001, 0x0000, 0x2143, 0x0002, 0x0726, 0x072d, 0x0005, 0x000d, - 0x0bbd, 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x000d, 0x0be6, - 0x0bc9, 0xffff, 0xffff, 0x0bd7, 0x0003, 0x0738, 0x073b, 0x073f, - 0x0001, 0x000d, 0x0bf5, 0x0002, 0x000d, 0xffff, 0x0bfc, 0x0002, - 0x0742, 0x0749, 0x0005, 0x000d, 0x0c23, 0x0c07, 0xffff, 0xffff, - 0x0c15, 0x0005, 0x000d, 0x0c53, 0x0c31, 0xffff, 0xffff, 0x0c42, - 0x0003, 0x0754, 0x0000, 0x0757, 0x0001, 0x0001, 0x075a, 0x0002, - // Entry 7EC0 - 7EFF - 0x075a, 0x0761, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, 0xffff, - 0x0c64, 0x0005, 0x000d, 0x0c70, 0x0c70, 0xffff, 0xffff, 0x0c70, - 0x0003, 0x076c, 0x0000, 0x076f, 0x0001, 0x0001, 0x075a, 0x0002, - 0x0772, 0x0779, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, 0xffff, - 0x0c64, 0x0005, 0x000d, 0x0c70, 0x0c70, 0xffff, 0xffff, 0x0c70, - 0x0003, 0x0784, 0x0787, 0x078b, 0x0001, 0x000d, 0x0c7f, 0x0002, - 0x000d, 0xffff, 0x0c87, 0x0002, 0x078e, 0x0795, 0x0005, 0x000d, - 0x0caa, 0x0c8c, 0xffff, 0xffff, 0x0c9b, 0x0005, 0x000d, 0x0cdd, - // Entry 7F00 - 7F3F - 0x0cb9, 0xffff, 0xffff, 0x0ccb, 0x0003, 0x07a0, 0x0000, 0x07a3, - 0x0001, 0x0001, 0x07d3, 0x0002, 0x07a6, 0x07ad, 0x0005, 0x000d, - 0x0cef, 0x0cef, 0xffff, 0xffff, 0x0cef, 0x0005, 0x000d, 0x0cfb, - 0x0cfb, 0xffff, 0xffff, 0x0cfb, 0x0003, 0x07b8, 0x0000, 0x07bb, - 0x0001, 0x0000, 0x2002, 0x0002, 0x07be, 0x07c5, 0x0005, 0x000d, - 0x0cef, 0x0cef, 0xffff, 0xffff, 0x0cef, 0x0005, 0x000d, 0x0cfb, - 0x0cfb, 0xffff, 0xffff, 0x0cfb, 0x0001, 0x07ce, 0x0001, 0x000d, - 0x0d0a, 0x0004, 0x07d6, 0x07db, 0x07e0, 0x07eb, 0x0003, 0x000d, - // Entry 7F40 - 7F7F - 0x0d19, 0x0d28, 0x0d30, 0x0003, 0x0000, 0x1de0, 0x21f1, 0x2205, - 0x0002, 0x0000, 0x07e3, 0x0002, 0x0000, 0x07e6, 0x0003, 0x000d, - 0xffff, 0x0d34, 0x0d4d, 0x0002, 0x09d2, 0x07ee, 0x0003, 0x07f2, - 0x0932, 0x0892, 0x009e, 0x000d, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0e11, 0x0e6b, 0x0eff, 0x0f47, 0x0fc5, 0x1040, 0x10be, 0x113f, - 0x1185, 0x1256, 0x129e, 0x12ec, 0x134f, 0x1394, 0x1412, 0x147e, - 0x1503, 0x156c, 0x15d2, 0x162c, 0x166e, 0xffff, 0xffff, 0x16e3, - 0xffff, 0x1743, 0xffff, 0x17ae, 0x17f6, 0x1841, 0x1883, 0xffff, - // Entry 7F80 - 7FBF - 0xffff, 0x190e, 0x195c, 0x19c6, 0xffff, 0xffff, 0xffff, 0x1a5d, - 0xffff, 0x1ad0, 0x1b30, 0xffff, 0x1bac, 0x1c06, 0x1c54, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1d1a, 0xffff, 0xffff, 0x1d94, 0x1dfa, - 0xffff, 0xffff, 0x1ea1, 0x1f0a, 0x1f58, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x203d, 0x207f, 0x20c4, 0x210c, 0x2151, - 0xffff, 0xffff, 0x2206, 0xffff, 0x2264, 0xffff, 0xffff, 0x22ef, - 0xffff, 0x23af, 0xffff, 0xffff, 0xffff, 0xffff, 0x245a, 0xffff, - 0x24bf, 0x2534, 0x259d, 0x25ee, 0xffff, 0xffff, 0xffff, 0x2673, - // Entry 7FC0 - 7FFF - 0x26d0, 0x2724, 0xffff, 0xffff, 0x27a8, 0x284c, 0x289d, 0x28d9, - 0xffff, 0xffff, 0x295e, 0x29ac, 0x29f4, 0xffff, 0x2a5a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2ba3, 0x2bee, 0x2c34, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d27, 0xffff, - 0xffff, 0x2da1, 0xffff, 0x2df9, 0xffff, 0x2e67, 0x2eb2, 0x2f06, - 0xffff, 0x2f6d, 0x2fc4, 0xffff, 0xffff, 0xffff, 0x3066, 0x30ab, - 0xffff, 0xffff, 0x0d66, 0x0eb9, 0x11c7, 0x120d, 0xffff, 0xffff, - 0x2352, 0x2b29, 0x009e, 0x000d, 0x0da6, 0x0dbc, 0x0dd6, 0x0def, - // Entry 8000 - 803F - 0x0e29, 0x0e7f, 0x0f11, 0x0f6b, 0x0fe8, 0x1064, 0x10e3, 0x114c, - 0x1195, 0x1268, 0x12b2, 0x1307, 0x1360, 0x13b8, 0x1430, 0x14a5, - 0x1520, 0x1588, 0x15ea, 0x163c, 0x1683, 0x16bf, 0x16d0, 0x16f7, - 0x1731, 0x1757, 0x1791, 0x17c0, 0x1809, 0x1851, 0x1899, 0x18d7, - 0x18f4, 0x1922, 0x1978, 0x19d7, 0x1a0b, 0x1a21, 0x1a44, 0x1a77, - 0x1abd, 0x1aea, 0x1b49, 0x1b8d, 0x1bc4, 0x1c1a, 0x1c68, 0x1ca1, - 0x1cbc, 0x1cf2, 0x1d06, 0x1d2c, 0x1d62, 0x1d82, 0x1db0, 0x1e15, - 0x1e73, 0x1e8f, 0x1ebe, 0x1f1e, 0x1f68, 0x1f9a, 0x1fb6, 0x1fd2, - // Entry 8040 - 807F - 0x1fe6, 0x2004, 0x2021, 0x204d, 0x2090, 0x20d6, 0x211d, 0x2170, - 0x21cd, 0x21ea, 0x2217, 0x224b, 0x2279, 0x22b5, 0x22d6, 0x230a, - 0x2395, 0x23c2, 0x23fa, 0x240d, 0x241f, 0x243a, 0x246e, 0x24a8, - 0x24e0, 0x2551, 0x25b2, 0x2600, 0x2636, 0x264a, 0x2662, 0x268c, - 0x26e6, 0x273c, 0x277e, 0x2795, 0x27ce, 0x2861, 0x28ab, 0x28ed, - 0x2927, 0x293f, 0x2972, 0x29be, 0x2a07, 0x2a3f, 0x2a81, 0x2ae1, - 0x2afb, 0x2b14, 0x2b78, 0x2b8b, 0x2bb6, 0x2bfb, 0x2c46, 0x2c7c, - 0x2c8f, 0x2cae, 0x2cce, 0x2cea, 0x2cfd, 0x2d13, 0x2d39, 0x2d6f, - // Entry 8080 - 80BF - 0x2d87, 0x2db3, 0x2de9, 0x2e11, 0x2e53, 0x2e7a, 0x2ec8, 0x2f1b, - 0x2f57, 0x2f84, 0x2fd9, 0x3015, 0x302c, 0x3043, 0x3077, 0x30c4, - 0x1e5d, 0x282c, 0x0d71, 0x0ec6, 0x11d4, 0x121b, 0xffff, 0x22ca, - 0x235e, 0x2b39, 0x009e, 0x000d, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0e4c, 0x0e9e, 0x0f2e, 0x0f9a, 0x1016, 0x1093, 0x1113, 0x1164, - 0x11b0, 0x1285, 0x12d1, 0x132d, 0x137c, 0x13e7, 0x1459, 0x14d6, - 0x1548, 0x15af, 0x160d, 0x1657, 0x16a3, 0xffff, 0xffff, 0x1716, - 0xffff, 0x1776, 0xffff, 0x17dd, 0x1827, 0x186c, 0x18ba, 0xffff, - // Entry 80C0 - 80FF - 0xffff, 0x1941, 0x199f, 0x19f3, 0xffff, 0xffff, 0xffff, 0x1a9c, - 0xffff, 0x1b0f, 0x1b6d, 0xffff, 0x1be7, 0x1c39, 0x1c87, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1d49, 0xffff, 0xffff, 0x1dd7, 0x1e3b, - 0xffff, 0xffff, 0x1ee6, 0x1f3d, 0x1f83, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2068, 0x20ac, 0x20f3, 0x2139, 0x219a, - 0xffff, 0xffff, 0x2233, 0xffff, 0x2299, 0xffff, 0xffff, 0x2330, - 0xffff, 0x23e0, 0xffff, 0xffff, 0xffff, 0xffff, 0x248d, 0xffff, - 0x250c, 0x2579, 0x25d2, 0x261d, 0xffff, 0xffff, 0xffff, 0x26b0, - // Entry 8100 - 813F - 0x2707, 0x275f, 0xffff, 0xffff, 0x27ff, 0x2881, 0x28c4, 0x290c, - 0xffff, 0xffff, 0x2991, 0x29db, 0x2a25, 0xffff, 0x2ab3, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2bd4, 0x2c13, 0x2c63, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d56, 0xffff, - 0xffff, 0x2dd0, 0xffff, 0x2e34, 0xffff, 0x2e98, 0x2ee9, 0x2f3b, - 0xffff, 0x2fa6, 0x2ff9, 0xffff, 0xffff, 0xffff, 0x3093, 0x30e8, - 0xffff, 0xffff, 0x0d87, 0x0ede, 0x11ec, 0x1234, 0xffff, 0xffff, - 0x2375, 0x2b54, 0x0003, 0x09d6, 0x0a45, 0x0a09, 0x0031, 0x0006, - // Entry 8140 - 817F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, - 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 8180 - 81BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2761, 0x0031, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 81C0 - 81FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, - 0x0003, 0x0004, 0x0316, 0x0429, 0x0012, 0x0017, 0x0000, 0x0024, - 0x0000, 0x003c, 0x0000, 0x0054, 0x006e, 0x0149, 0x0161, 0x0183, - 0x0000, 0x0000, 0x0000, 0x0000, 0x01dc, 0x02e6, 0x0308, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, - // Entry 8200 - 823F - 0x0021, 0x0001, 0x000e, 0x0000, 0x0001, 0x0026, 0x0001, 0x0028, - 0x0003, 0x0000, 0x0000, 0x002c, 0x000e, 0x000e, 0xffff, 0x0005, - 0x000e, 0x0017, 0x0022, 0x002d, 0x0036, 0x0041, 0x0052, 0x0063, - 0x0070, 0x007b, 0x0084, 0x008f, 0x0001, 0x003e, 0x0001, 0x0040, - 0x0003, 0x0000, 0x0000, 0x0044, 0x000e, 0x000e, 0xffff, 0x0098, - 0x00a9, 0x00b6, 0x00c1, 0x00ce, 0x00d5, 0x00e4, 0x00f3, 0x0100, - 0x010d, 0x0116, 0x0121, 0x012e, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x005d, 0x0000, 0x0000, 0x0004, 0x006b, 0x0065, - // Entry 8240 - 827F - 0x0062, 0x0068, 0x0001, 0x000d, 0x0011, 0x0001, 0x000d, 0x0025, - 0x0001, 0x000d, 0x0033, 0x0001, 0x000e, 0x013d, 0x0008, 0x0077, - 0x00ae, 0x00d3, 0x00f9, 0x0111, 0x0127, 0x0138, 0x0000, 0x0002, - 0x007a, 0x009c, 0x0003, 0x007e, 0x0000, 0x008d, 0x000d, 0x0008, - 0xffff, 0x0000, 0x4eb3, 0x000e, 0x4eba, 0x4ec1, 0x4ec8, 0x4ecf, - 0x4ed6, 0x4edd, 0x4ee4, 0x4eeb, 0x4ef2, 0x000d, 0x000e, 0xffff, - 0x014a, 0x0157, 0x0166, 0x016f, 0x017a, 0x0181, 0x018a, 0x0193, - 0x01a0, 0x01b3, 0x01c2, 0x01d3, 0x0002, 0x0000, 0x009f, 0x000d, - // Entry 8280 - 82BF - 0x000e, 0xffff, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01ea, 0x01e4, - 0x01e4, 0x01ed, 0x01f0, 0x01f3, 0x01f6, 0x01f9, 0x0002, 0x00b1, - 0x00c7, 0x0003, 0x00b5, 0x0000, 0x00be, 0x0007, 0x000e, 0x01fc, - 0x0203, 0x020a, 0x0211, 0x0218, 0x021f, 0x0226, 0x0007, 0x000e, - 0x022d, 0x023a, 0x024d, 0x025a, 0x0269, 0x027a, 0x0285, 0x0002, - 0x0000, 0x00ca, 0x0007, 0x000e, 0x01f6, 0x0292, 0x0295, 0x01f0, - 0x0298, 0x0292, 0x01f0, 0x0002, 0x00d6, 0x00ef, 0x0003, 0x00da, - 0x00e1, 0x00e8, 0x0005, 0x000e, 0xffff, 0x029b, 0x029f, 0x02a3, - // Entry 82C0 - 82FF - 0x02a7, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, - 0x0005, 0x000e, 0xffff, 0x02ab, 0x02c9, 0x02e9, 0x0309, 0x0002, - 0x0000, 0x00f2, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, - 0x0139, 0x0001, 0x00fb, 0x0003, 0x00ff, 0x0000, 0x0108, 0x0002, - 0x0102, 0x0105, 0x0001, 0x000e, 0x032d, 0x0001, 0x000e, 0x033f, - 0x0002, 0x010b, 0x010e, 0x0001, 0x000e, 0x032d, 0x0001, 0x000e, - 0x033f, 0x0003, 0x011b, 0x0121, 0x0115, 0x0001, 0x0117, 0x0002, - 0x000e, 0x034e, 0x0365, 0x0001, 0x011d, 0x0002, 0x000e, 0x0375, - // Entry 8300 - 833F - 0x0381, 0x0001, 0x0123, 0x0002, 0x000e, 0x0389, 0x0393, 0x0004, - 0x0135, 0x012f, 0x012c, 0x0132, 0x0001, 0x000e, 0x039a, 0x0001, - 0x000e, 0x03ac, 0x0001, 0x000e, 0x03b8, 0x0001, 0x000d, 0x0216, - 0x0004, 0x0146, 0x0140, 0x013d, 0x0143, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0001, 0x014b, 0x0001, 0x014d, 0x0003, 0x0000, 0x0000, - 0x0151, 0x000e, 0x000e, 0x0410, 0x03c1, 0x03cc, 0x03d9, 0x03e6, - 0x03f1, 0x03fc, 0x0407, 0x041c, 0x0427, 0x0430, 0x043b, 0x0446, - // Entry 8340 - 837F - 0x044b, 0x0005, 0x0167, 0x0000, 0x0000, 0x0000, 0x017c, 0x0001, - 0x0169, 0x0003, 0x0000, 0x0000, 0x016d, 0x000d, 0x000e, 0xffff, - 0x0454, 0x0461, 0x0470, 0x047f, 0x048a, 0x0499, 0x04a4, 0x04b1, - 0x04c0, 0x04d1, 0x04dc, 0x04e5, 0x0001, 0x017e, 0x0001, 0x0180, - 0x0001, 0x000e, 0x04f4, 0x0008, 0x018c, 0x0000, 0x0000, 0x0000, - 0x01c4, 0x01cb, 0x0000, 0x9006, 0x0002, 0x018f, 0x01b1, 0x0003, - 0x0193, 0x0000, 0x01a2, 0x000d, 0x000e, 0xffff, 0x04fd, 0x0505, - 0x050d, 0x0517, 0x0521, 0x052b, 0x0535, 0x053d, 0x0543, 0x054b, - // Entry 8380 - 83BF - 0x0551, 0x055c, 0x000d, 0x000e, 0xffff, 0x0567, 0x0576, 0x0581, - 0x058e, 0x059c, 0x05ab, 0x05bb, 0x05c6, 0x05d3, 0x05e2, 0x05ed, - 0x0601, 0x0003, 0x0000, 0x0000, 0x01b5, 0x000d, 0x000e, 0xffff, - 0x0613, 0x0622, 0x062d, 0x0638, 0x0643, 0x0652, 0x0661, 0x05c6, - 0x066c, 0x067b, 0x0686, 0x0696, 0x0001, 0x01c6, 0x0001, 0x01c8, - 0x0001, 0x000e, 0x06a6, 0x0004, 0x01d9, 0x01d3, 0x01d0, 0x01d6, - 0x0001, 0x000d, 0x0011, 0x0001, 0x000d, 0x0025, 0x0001, 0x000d, - 0x0033, 0x0001, 0x000d, 0x0033, 0x0006, 0x0000, 0x0000, 0x0000, - // Entry 83C0 - 83FF - 0x0000, 0x01e3, 0x02d5, 0x0001, 0x01e5, 0x0001, 0x01e7, 0x00ec, - 0x000e, 0x06ab, 0x06c2, 0x06db, 0x06f4, 0x0709, 0x0720, 0x0737, - 0x074c, 0x0763, 0x0778, 0x078f, 0x07a8, 0x07ca, 0x07ea, 0x080a, - 0x082a, 0x084a, 0x085f, 0x0873, 0x088e, 0x08a5, 0x08bc, 0x08d3, - 0x08e8, 0x08fd, 0x0912, 0x0929, 0x0940, 0x0957, 0x0970, 0x0985, - 0x099e, 0x09b5, 0x09ca, 0x09df, 0x09f6, 0x0a0f, 0x0a2c, 0x0a47, - 0x0a5a, 0x0a6f, 0x0a82, 0x0a9d, 0x0ab3, 0x0aca, 0x0ae3, 0x0afa, - 0x0b0f, 0x0b23, 0x0b38, 0x0b53, 0x0b6c, 0x0b82, 0x0b9b, 0x0bb2, - // Entry 8400 - 843F - 0x0bcb, 0x0be2, 0x0bf9, 0x0c12, 0x0c2f, 0x0c48, 0x0c65, 0x0c7c, - 0x0c95, 0x0cae, 0x0ccb, 0x0ce4, 0x0cfb, 0x0d18, 0x0d2f, 0x0d48, - 0x0d61, 0x0d78, 0x0d8f, 0x0daa, 0x0dc1, 0x0dd8, 0x0def, 0x0e08, - 0x0e20, 0x0e39, 0x0e51, 0x0e68, 0x0e81, 0x0e9a, 0x0eb3, 0x0ecc, - 0x0ee3, 0x0efa, 0x0f11, 0x0f28, 0x0f41, 0x0f5c, 0x0f75, 0x0f8e, - 0x0fa7, 0x0fc4, 0x0fd9, 0x0ff2, 0x100b, 0x1023, 0x1038, 0x104f, - 0x1068, 0x107f, 0x1096, 0x10ad, 0x10cc, 0x10e5, 0x1100, 0x1117, - 0x1130, 0x114b, 0x1163, 0x117c, 0x119b, 0x11b4, 0x11cd, 0x11e0, - // Entry 8440 - 847F - 0x11f9, 0x1214, 0x122d, 0x1246, 0x125d, 0x127a, 0x1299, 0x12b2, - 0x12d1, 0x12e5, 0x12fc, 0x1317, 0x132e, 0x1347, 0x1360, 0x1377, - 0x1390, 0x13a6, 0x13bd, 0x13d5, 0x13ee, 0x1405, 0x1418, 0x1431, - 0x1448, 0x1463, 0x147c, 0x1497, 0x14b0, 0x14c5, 0x14dc, 0x14f5, - 0x150c, 0x1527, 0x153e, 0x1559, 0x1576, 0x158f, 0x15a6, 0x15bf, - 0x15da, 0x15f3, 0x1610, 0x1627, 0x163e, 0x165b, 0x1672, 0x168b, - 0x16a8, 0x16c1, 0x16d4, 0x16f1, 0x1706, 0x171d, 0x1736, 0x1753, - 0x176b, 0x1786, 0x17a3, 0x17ba, 0x17d5, 0x17ee, 0x1807, 0x181e, - // Entry 8480 - 84BF - 0x1839, 0x1852, 0x186d, 0x1884, 0x189d, 0x18b4, 0x18cd, 0x18ea, - 0x1905, 0x191c, 0x1937, 0x1950, 0x1969, 0x1986, 0x199f, 0x19b8, - 0x19d0, 0x19e7, 0x1a00, 0x1a13, 0x1a32, 0x1a49, 0x1a64, 0x1a7b, - 0x1a94, 0x1aad, 0x1aca, 0x1ae1, 0x1afc, 0x1b15, 0x1b30, 0x1b49, - 0x1b62, 0x1b7a, 0x1b97, 0x1bb0, 0x1bc6, 0x1be1, 0x1bfc, 0x1c15, - 0x1c2e, 0x1c49, 0x1c62, 0x1c79, 0x1c90, 0x1ca9, 0x1cc1, 0x1cdc, - 0x1cf5, 0x1d0e, 0x1d19, 0x1d24, 0x1d2d, 0x0004, 0x02e3, 0x02dd, - 0x02da, 0x02e0, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, - // Entry 84C0 - 84FF - 0x0001, 0x000c, 0x001e, 0x0001, 0x000e, 0x1d3a, 0x0005, 0x02ec, - 0x0000, 0x0000, 0x0000, 0x0301, 0x0001, 0x02ee, 0x0003, 0x0000, - 0x0000, 0x02f2, 0x000d, 0x000e, 0xffff, 0x1d43, 0x1d56, 0x1d6b, - 0x1d78, 0x1d7f, 0x1d8c, 0x1d9d, 0x1da6, 0x1daf, 0x1db8, 0x1dbf, - 0x1dcc, 0x0001, 0x0303, 0x0001, 0x0305, 0x0001, 0x000e, 0x1dd9, - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x030e, 0x0001, 0x0310, - 0x0001, 0x0312, 0x0002, 0x000e, 0x1dde, 0x1dea, 0x0040, 0x0357, - 0x0000, 0x0000, 0x035c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 8500 - 853F - 0x0379, 0x0000, 0x0000, 0x0396, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x03b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x03d7, 0x0000, 0x03dc, 0x0000, 0x0000, - 0x03f4, 0x0000, 0x0000, 0x040c, 0x0000, 0x0000, 0x0424, 0x0001, - 0x0359, 0x0001, 0x0009, 0x0877, 0x0003, 0x0360, 0x0363, 0x0368, - // Entry 8540 - 857F - 0x0001, 0x0009, 0x087e, 0x0003, 0x000e, 0x1def, 0x1e09, 0x1e1d, - 0x0002, 0x036b, 0x0372, 0x0005, 0x000e, 0x1e65, 0x1e39, 0xffff, - 0xffff, 0x1e4f, 0x0005, 0x000e, 0x1eab, 0x1e7b, 0xffff, 0xffff, - 0x1e93, 0x0003, 0x037d, 0x0380, 0x0385, 0x0001, 0x0009, 0x0b35, - 0x0003, 0x000e, 0x1ec3, 0x1edf, 0x1ef5, 0x0002, 0x0388, 0x038f, - 0x0005, 0x000e, 0x1f3d, 0x1f13, 0xffff, 0xffff, 0x1f27, 0x0005, - 0x000e, 0x1f81, 0x1f53, 0xffff, 0xffff, 0x1f69, 0x0003, 0x039a, - 0x039d, 0x03a2, 0x0001, 0x000e, 0x022d, 0x0003, 0x000e, 0x1f99, - // Entry 8580 - 85BF - 0x1fb3, 0x1fc7, 0x0002, 0x03a5, 0x03ac, 0x0005, 0x000e, 0x200f, - 0x1fe3, 0xffff, 0xffff, 0x1ff9, 0x0005, 0x000f, 0x0030, 0x0000, - 0xffff, 0xffff, 0x0018, 0x0003, 0x03b7, 0x03ba, 0x03c1, 0x0001, - 0x000f, 0x0048, 0x0005, 0x000f, 0x0060, 0x0069, 0x0074, 0x004f, - 0x007f, 0x0002, 0x03c4, 0x03cb, 0x0005, 0x000f, 0x00a4, 0x0094, - 0xffff, 0xffff, 0x00a4, 0x0005, 0x000f, 0x00c8, 0x00b6, 0xffff, - 0xffff, 0x00c8, 0x0001, 0x03d4, 0x0001, 0x000f, 0x00dc, 0x0001, - 0x03d9, 0x0001, 0x000f, 0x00f3, 0x0003, 0x03e0, 0x0000, 0x03e3, - // Entry 85C0 - 85FF - 0x0001, 0x0009, 0x17ad, 0x0002, 0x03e6, 0x03ed, 0x0005, 0x000f, - 0x0136, 0x0114, 0xffff, 0xffff, 0x0124, 0x0005, 0x000f, 0x016e, - 0x0148, 0xffff, 0xffff, 0x015a, 0x0003, 0x03f8, 0x0000, 0x03fb, - 0x0001, 0x000f, 0x0182, 0x0002, 0x03fe, 0x0405, 0x0005, 0x000f, - 0x01a1, 0x018d, 0xffff, 0xffff, 0x01a1, 0x0005, 0x000f, 0x01cd, - 0x01b7, 0xffff, 0xffff, 0x01cd, 0x0003, 0x0410, 0x0000, 0x0413, - 0x0001, 0x000f, 0x01e5, 0x0002, 0x0416, 0x041d, 0x0005, 0x000f, - 0x0220, 0x01f2, 0xffff, 0xffff, 0x0208, 0x0005, 0x000f, 0x026a, - // Entry 8600 - 863F - 0x0238, 0xffff, 0xffff, 0x0250, 0x0001, 0x0426, 0x0001, 0x000f, - 0x0284, 0x0004, 0x042e, 0x0432, 0x0000, 0x0435, 0x0002, 0x0002, - 0x145b, 0x4c1f, 0x0001, 0x000f, 0x028d, 0x0002, 0x0000, 0x0438, - 0x0003, 0x043c, 0x057c, 0x04dc, 0x009e, 0x000f, 0xffff, 0xffff, - 0xffff, 0xffff, 0x03bd, 0x046d, 0x0552, 0x05cf, 0x065e, 0x06e1, - 0x0770, 0x07ff, 0xffff, 0x0982, 0x0a11, 0x0aa0, 0x0b5c, 0x0be5, - 0x0c6c, 0x0d46, 0x0e4d, 0x0f1b, 0x0fe9, 0x107e, 0x10f5, 0xffff, - 0xffff, 0x11b6, 0xffff, 0x1270, 0xffff, 0x1323, 0x139a, 0x140b, - // Entry 8640 - 867F - 0x1482, 0xffff, 0xffff, 0x156a, 0x15f9, 0x16a6, 0xffff, 0xffff, - 0xffff, 0x177a, 0xffff, 0x183e, 0x18eb, 0xffff, 0x199e, 0x1a51, - 0x1b13, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c2e, 0xffff, 0xffff, - 0x1cff, 0x1db5, 0xffff, 0xffff, 0x1ec4, 0x1f80, 0x200f, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2197, 0x2208, 0x2285, - 0x2314, 0x239d, 0xffff, 0xffff, 0x24e7, 0xffff, 0x2582, 0xffff, - 0xffff, 0x267b, 0xffff, 0x2798, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2892, 0xffff, 0xffff, 0xffff, 0x293d, 0x29cf, 0xffff, 0xffff, - // Entry 8680 - 86BF - 0xffff, 0x2a94, 0x2b44, 0x2bdc, 0xffff, 0xffff, 0x2cb2, 0x2dad, - 0x2e48, 0x2eb9, 0xffff, 0xffff, 0x2f86, 0x300f, 0x3080, 0xffff, - 0x312e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32db, 0x335e, - 0x33db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3535, 0xffff, 0xffff, 0x35ea, 0xffff, 0x3675, 0xffff, 0x372e, - 0x37b1, 0x3846, 0xffff, 0x38e7, 0x3982, 0xffff, 0xffff, 0xffff, - 0x3a7d, 0x3b00, 0xffff, 0xffff, 0x02ab, 0x04d5, 0x087c, 0x08ff, - 0xffff, 0xffff, 0x2701, 0x321a, 0x009e, 0x000f, 0x031c, 0x0342, - // Entry 86C0 - 86FF - 0x036f, 0x0398, 0x03e6, 0x0485, 0x056a, 0x05ed, 0x0678, 0x06ff, - 0x078e, 0x0817, 0xffff, 0x09a0, 0x0a2f, 0x0acd, 0x0b78, 0x0c01, - 0x0ca3, 0x0d8c, 0x0e80, 0x0f4e, 0x1009, 0x1094, 0x1113, 0x1184, - 0x119a, 0x11d4, 0x1245, 0x1292, 0x130b, 0x1339, 0x13ae, 0x141f, - 0x14a0, 0x1511, 0x1538, 0x1588, 0x161e, 0x16ba, 0x1717, 0x172f, - 0x1755, 0x17a1, 0x1824, 0x1866, 0x1915, 0xffff, 0x19c8, 0x1a80, - 0x1b27, 0x1b84, 0x1bb1, 0x1bf4, 0x1c12, 0x1c48, 0x1cb1, 0x1cd8, - 0x1d2a, 0x1de0, 0x1e94, 0x1eaa, 0x1ef1, 0x1f9d, 0x2023, 0x2080, - // Entry 8700 - 873F - 0x20b1, 0x20de, 0x20fa, 0x2131, 0x2164, 0x21ab, 0x2220, 0x22a3, - 0x2330, 0x23d8, 0x2481, 0x24b4, 0x24ff, 0x256c, 0x25a4, 0x261d, - 0x265a, 0x2696, 0x2776, 0x27b2, 0x2819, 0x2835, 0x284f, 0x2867, - 0x28b2, 0x2927, 0xffff, 0xffff, 0x295c, 0x29e7, 0x2a4c, 0x2a68, - 0x2a7e, 0x2abd, 0x2b65, 0x2bfe, 0x2c77, 0x2c8b, 0x2ce0, 0x2dcf, - 0x2e5c, 0x2ed5, 0x2f42, 0x2f58, 0x2fa2, 0x3023, 0x309c, 0x3109, - 0x315b, 0x31e8, 0x3202, 0xffff, 0x32a9, 0x32c3, 0x32f5, 0x3376, - 0x33f1, 0x3452, 0x346c, 0x349d, 0x34ca, 0x34ef, 0x3509, 0x351d, - // Entry 8740 - 877F - 0x354d, 0x35b0, 0x35d0, 0x3600, 0x3661, 0x3699, 0x3716, 0x3748, - 0x37d1, 0x3860, 0x38c9, 0x3909, 0x39a0, 0x3a11, 0x3a29, 0x3a4a, - 0x3a97, 0x3b26, 0x1e6b, 0x2d71, 0x02bf, 0x04ed, 0x0896, 0x0919, - 0xffff, 0x263d, 0x2717, 0x3238, 0x009e, 0x000f, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0424, 0x04b2, 0x0597, 0x0620, 0x06a7, 0x0732, - 0x07c1, 0x0844, 0xffff, 0x09d3, 0x0a62, 0x0b0f, 0x0ba9, 0x0c32, - 0x0cef, 0x0de7, 0x0ec8, 0x0f96, 0x103e, 0x10bf, 0x1146, 0xffff, - 0xffff, 0x1207, 0xffff, 0x12c9, 0xffff, 0x1364, 0x13d7, 0x144e, - // Entry 8780 - 87BF - 0x14d3, 0xffff, 0xffff, 0x15bb, 0x1658, 0x16e3, 0xffff, 0xffff, - 0xffff, 0x17dd, 0xffff, 0x18a3, 0x1954, 0xffff, 0x1a07, 0x1ac4, - 0x1b50, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c77, 0xffff, 0xffff, - 0x1d6a, 0x1e20, 0xffff, 0xffff, 0x1f33, 0x1fcf, 0x204c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x21d4, 0x224d, 0x22d6, - 0x2361, 0x2428, 0xffff, 0xffff, 0x2530, 0xffff, 0x25db, 0xffff, - 0xffff, 0x26c6, 0xffff, 0x27e1, 0xffff, 0xffff, 0xffff, 0xffff, - 0x28e7, 0xffff, 0xffff, 0xffff, 0x2990, 0x2a14, 0xffff, 0xffff, - // Entry 87C0 - 87FF - 0xffff, 0x2afb, 0x2b9b, 0x2c35, 0xffff, 0xffff, 0x2d23, 0x2e06, - 0x2e85, 0x2f06, 0xffff, 0xffff, 0x2fd3, 0x304c, 0x30cd, 0xffff, - 0x319d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3324, 0x33a3, - 0x341c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3578, 0xffff, 0xffff, 0x362b, 0xffff, 0x36d2, 0xffff, 0x3777, - 0x3806, 0x388f, 0xffff, 0x3940, 0x39d3, 0xffff, 0xffff, 0xffff, - 0x3ac6, 0x3b61, 0xffff, 0xffff, 0x02e8, 0x051a, 0x08c5, 0x0948, - 0xffff, 0xffff, 0x2742, 0x326b, 0x0003, 0x0004, 0x03ad, 0x07cf, - // Entry 8800 - 883F - 0x0012, 0x0017, 0x0038, 0x0000, 0x0000, 0x0000, 0x0000, 0x0129, - 0x0154, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0395, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, - 0x0001, 0x0010, 0x0000, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0002, 0x04f7, 0x000a, 0x0043, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0118, 0x0000, 0x0000, 0x0000, 0x00a8, 0x0002, - // Entry 8840 - 887F - 0x0046, 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, - 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, - 0x0043, 0x221d, 0x2220, 0x2223, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, - 0x221d, 0x2220, 0x2223, 0x0003, 0x007b, 0x008a, 0x0099, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, - // Entry 8880 - 88BF - 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, - 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, - 0x0043, 0x221d, 0x2220, 0x2223, 0x0006, 0x00af, 0x0000, 0x0000, - 0x0000, 0x00c2, 0x0105, 0x0001, 0x00b1, 0x0001, 0x00b3, 0x000d, - 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, - 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x00c4, - // Entry 88C0 - 88FF - 0x0001, 0x00c6, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, - 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, - 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, - 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, - 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, - 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, - 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, - 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, - // Entry 8900 - 893F - 0x0390, 0x0001, 0x0107, 0x0001, 0x0109, 0x000d, 0x0000, 0xffff, - 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, - 0x0079, 0x007e, 0x2226, 0x0085, 0x0004, 0x0126, 0x0120, 0x011d, - 0x0123, 0x0001, 0x0010, 0x0015, 0x0001, 0x0010, 0x0026, 0x0001, - 0x0010, 0x002f, 0x0001, 0x0002, 0x01fb, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0132, 0x0000, 0x0143, 0x0004, 0x0140, - 0x013a, 0x0137, 0x013d, 0x0001, 0x0010, 0x0037, 0x0001, 0x0005, - 0x0817, 0x0001, 0x0010, 0x004c, 0x0001, 0x0005, 0x0827, 0x0004, - // Entry 8940 - 897F - 0x0151, 0x014b, 0x0148, 0x014e, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0008, 0x015d, 0x01c2, 0x0219, 0x024e, 0x033d, 0x0362, 0x0373, - 0x0384, 0x0002, 0x0160, 0x0191, 0x0003, 0x0164, 0x0173, 0x0182, - 0x000d, 0x0010, 0xffff, 0x0054, 0x005c, 0x0065, 0x006e, 0x0077, - 0x007f, 0x0087, 0x008f, 0x0097, 0x009f, 0x00a8, 0x00b0, 0x000d, - 0x0010, 0xffff, 0x00b8, 0x00bb, 0x00be, 0x00c2, 0x00c5, 0x00c8, - 0x00cb, 0x00ce, 0x00d1, 0x00d4, 0x00d7, 0x00da, 0x000d, 0x0010, - // Entry 8980 - 89BF - 0xffff, 0x00dd, 0x00e6, 0x0065, 0x00f0, 0x0077, 0x007f, 0x00fa, - 0x0104, 0x010e, 0x011a, 0x0126, 0x0132, 0x0003, 0x0195, 0x01a4, - 0x01b3, 0x000d, 0x0010, 0xffff, 0x013e, 0x0143, 0x0149, 0x014f, - 0x0154, 0x0159, 0x015e, 0x0163, 0x0167, 0x016c, 0x0171, 0x0176, - 0x000d, 0x0010, 0xffff, 0x00b8, 0x00bb, 0x00be, 0x00c2, 0x00c5, - 0x00c8, 0x00cb, 0x00ce, 0x00d1, 0x00d4, 0x00d7, 0x00da, 0x000d, - 0x0010, 0xffff, 0x017b, 0x0181, 0x0149, 0x0188, 0x0154, 0x0159, - 0x018e, 0x0195, 0x019b, 0x01a4, 0x01ac, 0x01b5, 0x0002, 0x01c5, - // Entry 89C0 - 89FF - 0x01ef, 0x0005, 0x01cb, 0x01d4, 0x01e6, 0x0000, 0x01dd, 0x0007, - 0x0010, 0x01be, 0x01c2, 0x01c6, 0x01ca, 0x01ce, 0x01d2, 0x01d6, - 0x0007, 0x0010, 0x01da, 0x01dd, 0x01e0, 0x01e3, 0x01e6, 0x01e9, - 0x01ec, 0x0007, 0x0010, 0x01be, 0x01c2, 0x01c6, 0x01ca, 0x01ce, - 0x01d2, 0x01d6, 0x0007, 0x0010, 0x01ef, 0x01f8, 0x0200, 0x0208, - 0x0211, 0x0218, 0x0222, 0x0005, 0x01f5, 0x01fe, 0x0210, 0x0000, - 0x0207, 0x0007, 0x0010, 0x01be, 0x01c2, 0x01c6, 0x01ca, 0x01ce, - 0x01d2, 0x01d6, 0x0007, 0x0010, 0x01da, 0x01dd, 0x01e0, 0x01e3, - // Entry 8A00 - 8A3F - 0x01e6, 0x01e9, 0x01ec, 0x0007, 0x0010, 0x01be, 0x01c2, 0x01c6, - 0x01ca, 0x01ce, 0x01d2, 0x01d6, 0x0007, 0x0010, 0x01ef, 0x01f8, - 0x0200, 0x0208, 0x0211, 0x0218, 0x0222, 0x0002, 0x021c, 0x0235, - 0x0003, 0x0220, 0x0227, 0x022e, 0x0005, 0x0005, 0xffff, 0x12a4, - 0x12a7, 0x12aa, 0x12ad, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x0039, 0x0005, 0x0010, 0xffff, 0x022b, 0x0238, 0x0245, - 0x0252, 0x0003, 0x0239, 0x0240, 0x0247, 0x0005, 0x0005, 0xffff, - 0x12a4, 0x12a7, 0x12aa, 0x12ad, 0x0005, 0x0000, 0xffff, 0x0033, - // Entry 8A40 - 8A7F - 0x0035, 0x0037, 0x0039, 0x0005, 0x0010, 0xffff, 0x022b, 0x0238, - 0x0245, 0x0252, 0x0002, 0x0251, 0x02c7, 0x0003, 0x0255, 0x027b, - 0x02a1, 0x000a, 0x0263, 0x0266, 0x0260, 0x0269, 0x026f, 0x0275, - 0x0278, 0x0000, 0x026c, 0x0272, 0x0001, 0x0010, 0x025f, 0x0001, - 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0001, 0x0010, 0x0274, - 0x0001, 0x0010, 0x027d, 0x0001, 0x0010, 0x0283, 0x0001, 0x0010, - 0x028a, 0x0001, 0x0010, 0x0290, 0x0001, 0x0010, 0x0297, 0x000a, - 0x0289, 0x028c, 0x0286, 0x028f, 0x0295, 0x029b, 0x029e, 0x0000, - // Entry 8A80 - 8ABF - 0x0292, 0x0298, 0x0001, 0x0010, 0x025f, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0001, 0x0010, 0x029b, 0x0001, 0x0010, - 0x027d, 0x0001, 0x0010, 0x02a0, 0x0001, 0x0010, 0x028a, 0x0001, - 0x0010, 0x0290, 0x0001, 0x0010, 0x0297, 0x000a, 0x02af, 0x02b2, - 0x02ac, 0x02b5, 0x02bb, 0x02c1, 0x02c4, 0x0000, 0x02b8, 0x02be, - 0x0001, 0x0010, 0x025f, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0001, 0x0010, 0x0274, 0x0001, 0x0010, 0x027d, 0x0001, - 0x0010, 0x0283, 0x0001, 0x0010, 0x028a, 0x0001, 0x0010, 0x0290, - // Entry 8AC0 - 8AFF - 0x0001, 0x0010, 0x0297, 0x0003, 0x02cb, 0x02f1, 0x0317, 0x000a, - 0x02d9, 0x02dc, 0x02d6, 0x02df, 0x02e5, 0x02eb, 0x02ee, 0x0000, - 0x02e2, 0x02e8, 0x0001, 0x0010, 0x025f, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0001, 0x0010, 0x0274, 0x0001, 0x0010, - 0x027d, 0x0001, 0x0010, 0x0283, 0x0001, 0x0010, 0x028a, 0x0001, - 0x0010, 0x0290, 0x0001, 0x0010, 0x0297, 0x000a, 0x02ff, 0x0302, - 0x02fc, 0x0305, 0x030b, 0x0311, 0x0314, 0x0000, 0x0308, 0x030e, - 0x0001, 0x0010, 0x025f, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - // Entry 8B00 - 8B3F - 0x026e, 0x0001, 0x0010, 0x0274, 0x0001, 0x0010, 0x027d, 0x0001, - 0x0010, 0x0283, 0x0001, 0x0010, 0x028a, 0x0001, 0x0010, 0x0290, - 0x0001, 0x0010, 0x0297, 0x000a, 0x0325, 0x0328, 0x0322, 0x032b, - 0x0331, 0x0337, 0x033a, 0x0000, 0x032e, 0x0334, 0x0001, 0x0010, - 0x025f, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0001, - 0x0010, 0x0274, 0x0001, 0x0010, 0x027d, 0x0001, 0x0010, 0x0283, - 0x0001, 0x0010, 0x028a, 0x0001, 0x0010, 0x0290, 0x0001, 0x0010, - 0x0297, 0x0003, 0x034c, 0x0357, 0x0341, 0x0002, 0x0344, 0x0348, - // Entry 8B40 - 8B7F - 0x0002, 0x0010, 0x02a3, 0x02ca, 0x0002, 0x0010, 0x02b2, 0x02dc, - 0x0002, 0x034f, 0x0353, 0x0002, 0x0010, 0x02e7, 0x02ee, 0x0002, - 0x0010, 0x02ea, 0x02f1, 0x0002, 0x035a, 0x035e, 0x0002, 0x0010, - 0x02e7, 0x02ee, 0x0002, 0x0010, 0x02ea, 0x02f1, 0x0004, 0x0370, - 0x036a, 0x0367, 0x036d, 0x0001, 0x0005, 0x1372, 0x0001, 0x0005, - 0x1386, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0005, 0x1394, 0x0004, - 0x0381, 0x037b, 0x0378, 0x037e, 0x0001, 0x0005, 0x0082, 0x0001, - 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, - // Entry 8B80 - 8BBF - 0x0004, 0x0392, 0x038c, 0x0389, 0x038f, 0x0001, 0x0005, 0x0834, - 0x0001, 0x0005, 0x0834, 0x0001, 0x0005, 0x0846, 0x0001, 0x0000, - 0x03c6, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x039c, - 0x0004, 0x03aa, 0x03a4, 0x03a1, 0x03a7, 0x0001, 0x0010, 0x0037, - 0x0001, 0x0005, 0x0817, 0x0001, 0x0010, 0x02f4, 0x0001, 0x0002, - 0x04f7, 0x0040, 0x03ee, 0x0000, 0x0000, 0x03f3, 0x040a, 0x0421, - 0x0438, 0x044f, 0x0466, 0x047d, 0x0494, 0x04ab, 0x04c2, 0x04dd, - 0x04f8, 0x0000, 0x0000, 0x0000, 0x0513, 0x052c, 0x0545, 0x0000, - // Entry 8BC0 - 8BFF - 0x0000, 0x0000, 0x055e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0563, 0x0577, 0x058b, 0x059f, 0x05b3, 0x05c7, 0x05db, 0x05ef, - 0x0603, 0x0617, 0x062b, 0x063f, 0x0653, 0x0667, 0x067b, 0x068f, - 0x06a3, 0x06b7, 0x06cb, 0x06df, 0x06f3, 0x0000, 0x0707, 0x0000, - 0x070c, 0x0722, 0x0738, 0x074e, 0x0764, 0x077a, 0x0790, 0x07a6, - 0x07b8, 0x07ca, 0x0001, 0x03f0, 0x0001, 0x0001, 0x0040, 0x0003, - 0x03f7, 0x03fa, 0x03ff, 0x0001, 0x0010, 0x02fe, 0x0003, 0x0010, - 0x0302, 0x0311, 0x0319, 0x0002, 0x0402, 0x0406, 0x0002, 0x0010, - // Entry 8C00 - 8C3F - 0x033c, 0x0328, 0x0002, 0x0010, 0x035c, 0x0351, 0x0003, 0x040e, - 0x0411, 0x0416, 0x0001, 0x0010, 0x02fe, 0x0003, 0x0010, 0x0302, - 0x0311, 0x0319, 0x0002, 0x0419, 0x041d, 0x0002, 0x0010, 0x033c, - 0x0328, 0x0002, 0x0010, 0x035c, 0x0351, 0x0003, 0x0425, 0x0428, - 0x042d, 0x0001, 0x0010, 0x02fe, 0x0003, 0x0010, 0x0302, 0x0311, - 0x0319, 0x0002, 0x0430, 0x0434, 0x0002, 0x0010, 0x033c, 0x0328, - 0x0002, 0x0010, 0x035c, 0x0351, 0x0003, 0x043c, 0x043f, 0x0444, - 0x0001, 0x0005, 0x1c6d, 0x0003, 0x0010, 0x0368, 0x037c, 0x038d, - // Entry 8C40 - 8C7F - 0x0002, 0x0447, 0x044b, 0x0002, 0x0010, 0x03bb, 0x03a1, 0x0002, - 0x0010, 0x03e7, 0x03d6, 0x0003, 0x0453, 0x0456, 0x045b, 0x0001, - 0x000b, 0x0c78, 0x0003, 0x0010, 0x03f9, 0x0409, 0x0416, 0x0002, - 0x045e, 0x0462, 0x0002, 0x0010, 0x0426, 0x0426, 0x0002, 0x0010, - 0x043c, 0x043c, 0x0003, 0x046a, 0x046d, 0x0472, 0x0001, 0x000b, - 0x0c78, 0x0003, 0x0010, 0x0449, 0x0409, 0x0456, 0x0002, 0x0475, - 0x0479, 0x0002, 0x0010, 0x0426, 0x0426, 0x0002, 0x0010, 0x043c, - 0x043c, 0x0003, 0x0481, 0x0484, 0x0489, 0x0001, 0x0005, 0x1006, - // Entry 8C80 - 8CBF - 0x0003, 0x0010, 0x0463, 0x0471, 0x047c, 0x0002, 0x048c, 0x0490, - 0x0002, 0x0010, 0x049e, 0x048a, 0x0002, 0x0010, 0x04bf, 0x04b4, - 0x0003, 0x0498, 0x049b, 0x04a0, 0x0001, 0x0005, 0x1006, 0x0003, - 0x0010, 0x0463, 0x0471, 0x047c, 0x0002, 0x04a3, 0x04a7, 0x0002, - 0x0010, 0x049e, 0x048a, 0x0002, 0x0010, 0x04bf, 0x04b4, 0x0003, - 0x04af, 0x04b2, 0x04b7, 0x0001, 0x0005, 0x1006, 0x0003, 0x0010, - 0x04cc, 0x0471, 0x04d7, 0x0002, 0x04ba, 0x04be, 0x0002, 0x0010, - 0x049e, 0x048a, 0x0002, 0x0010, 0x04bf, 0x04b4, 0x0004, 0x04c7, - // Entry 8CC0 - 8CFF - 0x04ca, 0x04cf, 0x04da, 0x0001, 0x0010, 0x04e2, 0x0003, 0x0010, - 0x04ea, 0x04fd, 0x050d, 0x0002, 0x04d2, 0x04d6, 0x0002, 0x0010, - 0x0537, 0x051f, 0x0002, 0x0010, 0x055f, 0x0550, 0x0001, 0x0010, - 0x056f, 0x0004, 0x04e2, 0x04e5, 0x04ea, 0x04f5, 0x0001, 0x0010, - 0x0582, 0x0003, 0x0010, 0x0588, 0x0599, 0x05a7, 0x0002, 0x04ed, - 0x04f1, 0x0002, 0x0010, 0x05b7, 0x05b7, 0x0002, 0x0010, 0x05cd, - 0x05cd, 0x0001, 0x0010, 0x056f, 0x0004, 0x04fd, 0x0500, 0x0505, - 0x0510, 0x0001, 0x0010, 0x0582, 0x0003, 0x0010, 0x05da, 0x0599, - // Entry 8D00 - 8D3F - 0x05e8, 0x0002, 0x0508, 0x050c, 0x0002, 0x0010, 0x05b7, 0x05b7, - 0x0002, 0x0010, 0x05cd, 0x05cd, 0x0001, 0x0010, 0x056f, 0x0003, - 0x0517, 0x051a, 0x0521, 0x0001, 0x0010, 0x05f5, 0x0005, 0x0010, - 0x0608, 0x060d, 0x0612, 0x05f9, 0x0618, 0x0002, 0x0524, 0x0528, - 0x0002, 0x0010, 0x0639, 0x0625, 0x0002, 0x0010, 0x0659, 0x064e, - 0x0003, 0x0530, 0x0533, 0x053a, 0x0001, 0x0010, 0x05f5, 0x0005, - 0x0010, 0x0608, 0x060d, 0x0612, 0x05f9, 0x0618, 0x0002, 0x053d, - 0x0541, 0x0002, 0x0010, 0x0639, 0x0625, 0x0002, 0x0010, 0x0659, - // Entry 8D40 - 8D7F - 0x064e, 0x0003, 0x0549, 0x054c, 0x0553, 0x0001, 0x0010, 0x05f5, - 0x0005, 0x0010, 0x0608, 0x060d, 0x0612, 0x05f9, 0x0618, 0x0002, - 0x0556, 0x055a, 0x0002, 0x0010, 0x0639, 0x0625, 0x0002, 0x0010, - 0x0659, 0x064e, 0x0001, 0x0560, 0x0001, 0x0010, 0x0665, 0x0003, - 0x0000, 0x0567, 0x056c, 0x0003, 0x0010, 0x0677, 0x0687, 0x0697, - 0x0002, 0x056f, 0x0573, 0x0002, 0x0010, 0x06c0, 0x06a7, 0x0002, - 0x0010, 0x06ea, 0x06da, 0x0003, 0x0000, 0x057b, 0x0580, 0x0003, - 0x0010, 0x06fb, 0x0706, 0x0711, 0x0002, 0x0583, 0x0587, 0x0002, - // Entry 8D80 - 8DBF - 0x0010, 0x071c, 0x071c, 0x0002, 0x0010, 0x0730, 0x0730, 0x0003, - 0x0000, 0x058f, 0x0594, 0x0003, 0x0010, 0x06fb, 0x0706, 0x0711, - 0x0002, 0x0597, 0x059b, 0x0002, 0x0010, 0x071c, 0x071c, 0x0002, - 0x0010, 0x0730, 0x0730, 0x0003, 0x0000, 0x05a3, 0x05a8, 0x0003, - 0x0010, 0x073b, 0x074a, 0x0759, 0x0002, 0x05ab, 0x05af, 0x0002, - 0x0010, 0x0768, 0x0768, 0x0002, 0x0010, 0x0780, 0x0780, 0x0003, - 0x0000, 0x05b7, 0x05bc, 0x0003, 0x0010, 0x078f, 0x079a, 0x07a5, - 0x0002, 0x05bf, 0x05c3, 0x0002, 0x0010, 0x07b0, 0x07b0, 0x0002, - // Entry 8DC0 - 8DFF - 0x0010, 0x07c4, 0x07c4, 0x0003, 0x0000, 0x05cb, 0x05d0, 0x0003, - 0x0010, 0x078f, 0x079a, 0x07a5, 0x0002, 0x05d3, 0x05d7, 0x0002, - 0x0010, 0x07b0, 0x07b0, 0x0002, 0x0010, 0x07c4, 0x07c4, 0x0003, - 0x0000, 0x05df, 0x05e4, 0x0003, 0x0010, 0x07cf, 0x07de, 0x07ed, - 0x0002, 0x05e7, 0x05eb, 0x0002, 0x0010, 0x07fc, 0x07fc, 0x0002, - 0x0010, 0x0814, 0x0814, 0x0003, 0x0000, 0x05f3, 0x05f8, 0x0003, - 0x0010, 0x0823, 0x082e, 0x0839, 0x0002, 0x05fb, 0x05ff, 0x0002, - 0x0010, 0x0844, 0x0844, 0x0002, 0x0010, 0x0858, 0x0858, 0x0003, - // Entry 8E00 - 8E3F - 0x0000, 0x0607, 0x060c, 0x0003, 0x0010, 0x0823, 0x082e, 0x0839, - 0x0002, 0x060f, 0x0613, 0x0002, 0x0010, 0x0844, 0x0844, 0x0002, - 0x0010, 0x0858, 0x0858, 0x0003, 0x0000, 0x061b, 0x0620, 0x0003, - 0x0010, 0x0863, 0x0873, 0x0883, 0x0002, 0x0623, 0x0627, 0x0002, - 0x0010, 0x0893, 0x0893, 0x0002, 0x0010, 0x08ac, 0x08ac, 0x0003, - 0x0000, 0x062f, 0x0634, 0x0003, 0x0010, 0x08bc, 0x08c7, 0x08d2, - 0x0002, 0x0637, 0x063b, 0x0002, 0x0010, 0x08dd, 0x08dd, 0x0002, - 0x0010, 0x08f1, 0x08f1, 0x0003, 0x0000, 0x0643, 0x0648, 0x0003, - // Entry 8E40 - 8E7F - 0x0010, 0x08bc, 0x08c7, 0x08d2, 0x0002, 0x064b, 0x064f, 0x0002, - 0x0010, 0x08dd, 0x08dd, 0x0002, 0x0010, 0x08f1, 0x08f1, 0x0003, - 0x0000, 0x0657, 0x065c, 0x0003, 0x0010, 0x08fc, 0x090a, 0x0918, - 0x0002, 0x065f, 0x0663, 0x0002, 0x0010, 0x0926, 0x0926, 0x0002, - 0x0010, 0x093d, 0x093d, 0x0003, 0x0000, 0x066b, 0x0670, 0x0003, - 0x0010, 0x094b, 0x0956, 0x0961, 0x0002, 0x0673, 0x0677, 0x0002, - 0x0010, 0x096c, 0x096c, 0x0002, 0x0010, 0x0980, 0x0980, 0x0003, - 0x0000, 0x067f, 0x0684, 0x0003, 0x0010, 0x094b, 0x0956, 0x0961, - // Entry 8E80 - 8EBF - 0x0002, 0x0687, 0x068b, 0x0002, 0x0010, 0x096c, 0x096c, 0x0002, - 0x0010, 0x0980, 0x0980, 0x0003, 0x0000, 0x0693, 0x0698, 0x0003, - 0x0010, 0x098b, 0x099c, 0x09ad, 0x0002, 0x069b, 0x069f, 0x0002, - 0x0010, 0x09be, 0x09be, 0x0002, 0x0010, 0x09d8, 0x09d8, 0x0003, - 0x0000, 0x06a7, 0x06ac, 0x0003, 0x0010, 0x09e9, 0x09f4, 0x09ff, - 0x0002, 0x06af, 0x06b3, 0x0002, 0x0010, 0x0a0a, 0x0a0a, 0x0002, - 0x0010, 0x0a1e, 0x0a1e, 0x0003, 0x0000, 0x06bb, 0x06c0, 0x0003, - 0x0010, 0x09e9, 0x09f4, 0x09ff, 0x0002, 0x06c3, 0x06c7, 0x0002, - // Entry 8EC0 - 8EFF - 0x0010, 0x0a0a, 0x0a0a, 0x0002, 0x0010, 0x0a1e, 0x0a1e, 0x0003, - 0x0000, 0x06cf, 0x06d4, 0x0003, 0x0010, 0x0a29, 0x0a39, 0x0a49, - 0x0002, 0x06d7, 0x06db, 0x0002, 0x0010, 0x0a72, 0x0a59, 0x0002, - 0x0010, 0x0a9c, 0x0a8c, 0x0003, 0x0000, 0x06e3, 0x06e8, 0x0003, - 0x0010, 0x0aad, 0x0ab8, 0x0ac3, 0x0002, 0x06eb, 0x06ef, 0x0002, - 0x0010, 0x0ace, 0x0ace, 0x0002, 0x0010, 0x0ae2, 0x0ae2, 0x0003, - 0x0000, 0x06f7, 0x06fc, 0x0003, 0x0010, 0x0aad, 0x0ab8, 0x0ac3, - 0x0002, 0x06ff, 0x0703, 0x0002, 0x0010, 0x0ace, 0x0ace, 0x0002, - // Entry 8F00 - 8F3F - 0x0010, 0x0ae2, 0x0ae2, 0x0001, 0x0709, 0x0001, 0x0010, 0x0aed, - 0x0003, 0x0710, 0x0713, 0x0717, 0x0001, 0x0006, 0x03db, 0x0002, - 0x0010, 0xffff, 0x0af9, 0x0002, 0x071a, 0x071e, 0x0002, 0x0010, - 0x0b1b, 0x0b06, 0x0002, 0x0010, 0x0b3d, 0x0b31, 0x0003, 0x0726, - 0x0729, 0x072d, 0x0001, 0x0000, 0x2143, 0x0002, 0x0010, 0xffff, - 0x0af9, 0x0002, 0x0730, 0x0734, 0x0002, 0x0010, 0x0b4a, 0x0b4a, - 0x0002, 0x0010, 0x0b5c, 0x0b5c, 0x0003, 0x073c, 0x073f, 0x0743, - 0x0001, 0x0000, 0x2143, 0x0002, 0x0010, 0xffff, 0x0af9, 0x0002, - // Entry 8F40 - 8F7F - 0x0746, 0x074a, 0x0002, 0x0010, 0x0b65, 0x0b65, 0x0002, 0x0010, - 0x0b5c, 0x0b5c, 0x0003, 0x0752, 0x0755, 0x0759, 0x0001, 0x0010, - 0x0b77, 0x0002, 0x0010, 0xffff, 0x0b7d, 0x0002, 0x075c, 0x0760, - 0x0002, 0x0010, 0x0ba0, 0x0b8a, 0x0002, 0x0010, 0x0bc4, 0x0bb7, - 0x0003, 0x0768, 0x076b, 0x076f, 0x0001, 0x000b, 0x1250, 0x0002, - 0x0010, 0xffff, 0x0b7d, 0x0002, 0x0772, 0x0776, 0x0002, 0x0010, - 0x0bd2, 0x0bd2, 0x0002, 0x0010, 0x0be6, 0x0be6, 0x0003, 0x077e, - 0x0781, 0x0785, 0x0001, 0x000b, 0x1250, 0x0002, 0x0010, 0xffff, - // Entry 8F80 - 8FBF - 0x0b7d, 0x0002, 0x0788, 0x078c, 0x0002, 0x0010, 0x0bd2, 0x0bd2, - 0x0002, 0x0010, 0x0be6, 0x0be6, 0x0003, 0x0794, 0x0797, 0x079b, - 0x0001, 0x0010, 0x0bf1, 0x0002, 0x000a, 0xffff, 0x00ab, 0x0002, - 0x079e, 0x07a2, 0x0002, 0x0010, 0x0c0d, 0x0bf7, 0x0002, 0x0010, - 0x0c31, 0x0c24, 0x0003, 0x07aa, 0x0000, 0x07ad, 0x0001, 0x0000, - 0x2002, 0x0002, 0x07b0, 0x07b4, 0x0002, 0x0010, 0x0c3f, 0x0c3f, - 0x0002, 0x0010, 0x0c51, 0x0c51, 0x0003, 0x07bc, 0x0000, 0x07bf, - 0x0001, 0x0000, 0x2002, 0x0002, 0x07c2, 0x07c6, 0x0002, 0x0010, - // Entry 8FC0 - 8FFF - 0x0c3f, 0x0c3f, 0x0002, 0x0010, 0x0c51, 0x0c51, 0x0001, 0x07cc, - 0x0001, 0x0010, 0x0c5a, 0x0004, 0x07d4, 0x07d9, 0x07de, 0x07ed, - 0x0003, 0x0000, 0x1dc7, 0x2229, 0x2230, 0x0003, 0x0010, 0x0c65, - 0x0c72, 0x0c88, 0x0002, 0x0000, 0x07e1, 0x0003, 0x0000, 0x07e8, - 0x07e5, 0x0001, 0x0010, 0x0c9d, 0x0003, 0x0010, 0xffff, 0x0cb7, - 0x0cd1, 0x0002, 0x09d1, 0x07f0, 0x0003, 0x0893, 0x0932, 0x07f4, - 0x009d, 0x0010, 0x0ced, 0x0d04, 0x0d20, 0x0d3d, 0x0d83, 0x0de6, - 0x0e30, 0x0e92, 0x0f11, 0x0f95, 0x100a, 0x1053, 0x1098, 0x10d4, - // Entry 9000 - 903F - 0x1115, 0x1178, 0x11e3, 0x1232, 0x128f, 0x1302, 0x1380, 0x13ee, - 0x1456, 0x14a9, 0x14fa, 0x1537, 0x1546, 0x1569, 0x15a2, 0x15cd, - 0x1604, 0x1625, 0x1667, 0x16a6, 0x16ee, 0x1729, 0x173c, 0x1766, - 0x17b6, 0x1809, 0x1838, 0x1846, 0x1861, 0x1893, 0x18de, 0x190d, - 0x1973, 0x19be, 0x19fc, 0x1a64, 0x1abc, 0x1aeb, 0x1b07, 0x1b2d, - 0x1b40, 0x1b61, 0x1b98, 0x1bb2, 0x1bf0, 0x1c63, 0x1cb8, 0x1cc6, - 0x1cef, 0x1d4a, 0x1d90, 0x1dbf, 0x1ddd, 0x1df6, 0x1e08, 0x1e24, - 0x1e43, 0x1e71, 0x1eb3, 0x1efa, 0x1f3e, 0x1f83, 0x1fe0, 0x1fff, - // Entry 9040 - 907F - 0x202d, 0x205e, 0x2081, 0x20be, 0x20d4, 0x20fb, 0x2175, 0x2197, - 0x21cc, 0x21de, 0x21f3, 0x2209, 0x2234, 0x2269, 0x2295, 0x2300, - 0x2361, 0x23ad, 0x23e0, 0x23f0, 0x23fe, 0x2425, 0x247f, 0x24d0, - 0x2509, 0x2516, 0x254c, 0x25ad, 0x25f8, 0x263b, 0x2674, 0x2682, - 0x26ae, 0x26f6, 0x273b, 0x2774, 0x27ae, 0x2803, 0x2814, 0x2823, - 0x2835, 0x2845, 0x2866, 0x28ac, 0x28ed, 0x291e, 0x2935, 0x2946, - 0x2956, 0x296f, 0x297f, 0x298d, 0x29ac, 0x29df, 0x29f4, 0x2a12, - 0x2a43, 0x2a67, 0x2aa8, 0x2acb, 0x2b1f, 0x2b71, 0x2ba4, 0x2bcb, - // Entry 9080 - 90BF - 0x2c1a, 0x2c53, 0x2c62, 0x2c6f, 0x2c97, 0x2ce2, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2144, 0x009d, - 0x0010, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d64, 0x0dd6, 0x0e1b, - 0x0e6f, 0x0eed, 0x0f6e, 0x0ff8, 0x1043, 0x108a, 0x10c9, 0x10ff, - 0x1156, 0x11d1, 0x121c, 0x1273, 0x12dc, 0x1363, 0x13cf, 0x1441, - 0x1495, 0x14e6, 0xffff, 0xffff, 0x1557, 0xffff, 0x15bc, 0xffff, - 0x1615, 0x165a, 0x1696, 0x16db, 0xffff, 0xffff, 0x1754, 0x179f, - 0x17fc, 0xffff, 0xffff, 0xffff, 0x1878, 0xffff, 0x18f2, 0x1958, - // Entry 90C0 - 90FF - 0xffff, 0x19e0, 0x1a49, 0x1aaf, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1b50, 0xffff, 0xffff, 0x1bd1, 0x1c43, 0xffff, 0xffff, 0x1cd5, - 0x1d38, 0x1d83, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1e63, 0x1ea2, 0x1eea, 0x1f2f, 0x1f71, 0xffff, 0xffff, 0x201f, - 0xffff, 0x206d, 0xffff, 0xffff, 0x20e9, 0xffff, 0x2187, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2224, 0xffff, 0x2278, 0x22e4, 0x234d, - 0x239e, 0xffff, 0xffff, 0xffff, 0x240d, 0x246a, 0x24be, 0xffff, - 0xffff, 0x2530, 0x2599, 0x25ea, 0x2629, 0xffff, 0xffff, 0x269c, - // Entry 9100 - 913F - 0x26e7, 0x2729, 0xffff, 0x278e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2855, 0x289d, 0x28df, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x299d, 0xffff, 0xffff, 0x2a04, 0xffff, - 0x2a51, 0xffff, 0x2ab7, 0x2b08, 0x2b62, 0xffff, 0x2bb7, 0x2c08, - 0xffff, 0xffff, 0xffff, 0x2c87, 0x2ccc, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2136, 0x009d, 0x0010, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0dad, 0x0e01, 0x0e50, 0x0ec0, - 0x0f40, 0x0fc7, 0x1027, 0x106e, 0x10b1, 0x10ea, 0x1136, 0x11a5, - // Entry 9140 - 917F - 0x1200, 0x1253, 0x12b6, 0x1333, 0x13a8, 0x1418, 0x1476, 0x14c8, - 0x1519, 0xffff, 0xffff, 0x1586, 0xffff, 0x15e9, 0xffff, 0x1640, - 0x167f, 0x16c1, 0x170c, 0xffff, 0xffff, 0x1783, 0x17d8, 0x1821, - 0xffff, 0xffff, 0xffff, 0x18b9, 0xffff, 0x1933, 0x1999, 0xffff, - 0x1a23, 0x1a8a, 0x1ad4, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b7d, - 0xffff, 0xffff, 0x1c1a, 0x1c8e, 0xffff, 0xffff, 0x1d14, 0x1d67, - 0x1da8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e8a, - 0x1ecf, 0x1f15, 0x1f58, 0x1fb1, 0xffff, 0xffff, 0x2046, 0xffff, - // Entry 9180 - 91BF - 0x20a0, 0xffff, 0xffff, 0x2118, 0xffff, 0x21b2, 0xffff, 0xffff, - 0xffff, 0xffff, 0x224f, 0xffff, 0x22bd, 0x2327, 0x2380, 0x23c7, - 0xffff, 0xffff, 0xffff, 0x2448, 0x249f, 0x24ed, 0xffff, 0xffff, - 0x2573, 0x25cc, 0x2611, 0x2658, 0xffff, 0xffff, 0x26cb, 0x2710, - 0x2758, 0xffff, 0x27d9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2882, 0x28c6, 0x2906, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x29c6, 0xffff, 0xffff, 0x2a2b, 0xffff, 0x2a88, - 0xffff, 0x2aea, 0x2b41, 0x2b8b, 0xffff, 0x2bea, 0x2c37, 0xffff, - // Entry 91C0 - 91FF - 0xffff, 0xffff, 0x2cb2, 0x2d03, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x215d, 0x0003, 0x09d5, 0x0a44, - 0x0a08, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 9200 - 923F - 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2765, - // Entry 9240 - 927F - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x0080, 0x0341, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, - // Entry 9280 - 92BF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0016, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0003, 0x002b, 0x0063, 0x0072, 0x0002, 0x002e, - 0x0050, 0x0003, 0x0032, 0x0000, 0x0041, 0x000d, 0x0011, 0xffff, - 0x0000, 0x0007, 0x000e, 0x0015, 0x001c, 0x0023, 0x002a, 0x0031, - 0x0038, 0x003f, 0x0046, 0x004d, 0x000d, 0x0011, 0xffff, 0x0054, - 0x0061, 0x0070, 0x0079, 0x001c, 0x0086, 0x008f, 0x0098, 0x00a5, - // Entry 92C0 - 92FF - 0x00b6, 0x00c5, 0x00d2, 0x0003, 0x0000, 0x0000, 0x0054, 0x000d, - 0x0011, 0xffff, 0x0054, 0x0061, 0x0070, 0x0079, 0x001c, 0x0086, - 0x008f, 0x0098, 0x00a5, 0x00b6, 0x00c5, 0x00d2, 0x0001, 0x0065, - 0x0003, 0x0000, 0x0000, 0x0069, 0x0007, 0x0011, 0x00e1, 0x00f7, - 0x010b, 0x011f, 0x0133, 0x0143, 0x015b, 0x0002, 0x0000, 0x0075, - 0x0003, 0x0000, 0x0000, 0x0079, 0x0005, 0x0011, 0xffff, 0x0167, - 0x017f, 0x0197, 0x01af, 0x0040, 0x00c1, 0x0000, 0x0000, 0x00c6, - 0x00dd, 0x00ef, 0x0101, 0x0113, 0x0125, 0x0137, 0x014e, 0x0160, - // Entry 9300 - 933F - 0x0172, 0x0189, 0x019b, 0x0000, 0x0000, 0x0000, 0x01ad, 0x01c4, - 0x01d6, 0x0000, 0x0000, 0x0000, 0x01e8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01ed, 0x01f5, 0x01fd, 0x0205, 0x020d, 0x0215, - 0x021d, 0x0225, 0x022d, 0x0235, 0x023d, 0x0245, 0x024d, 0x0255, - 0x025d, 0x0265, 0x026d, 0x0275, 0x027d, 0x0285, 0x028d, 0x0000, - 0x0295, 0x0000, 0x029a, 0x02ac, 0x02be, 0x02d0, 0x02e2, 0x02f4, - 0x0306, 0x0318, 0x032a, 0x033c, 0x0001, 0x00c3, 0x0001, 0x0011, - 0x01c7, 0x0003, 0x00ca, 0x00cd, 0x00d2, 0x0001, 0x0011, 0x01ce, - // Entry 9340 - 937F - 0x0003, 0x0011, 0x01d3, 0x01ef, 0x020b, 0x0002, 0x00d5, 0x00d9, - 0x0002, 0x0011, 0x0229, 0x0229, 0x0002, 0x0011, 0x023f, 0x023f, - 0x0003, 0x00e1, 0x0000, 0x00e4, 0x0001, 0x0011, 0x0255, 0x0002, - 0x00e7, 0x00eb, 0x0002, 0x0011, 0x0259, 0x0259, 0x0002, 0x0011, - 0x026e, 0x026e, 0x0003, 0x00f3, 0x0000, 0x00f6, 0x0001, 0x0011, - 0x0255, 0x0002, 0x00f9, 0x00fd, 0x0002, 0x0011, 0x0259, 0x0259, - 0x0002, 0x0011, 0x026e, 0x026e, 0x0003, 0x0105, 0x0000, 0x0108, - 0x0001, 0x0011, 0x0283, 0x0002, 0x010b, 0x010f, 0x0002, 0x0011, - // Entry 9380 - 93BF - 0x0292, 0x0292, 0x0002, 0x0011, 0x02b0, 0x02b0, 0x0003, 0x0117, - 0x0000, 0x011a, 0x0001, 0x0008, 0x0ca5, 0x0002, 0x011d, 0x0121, - 0x0002, 0x0011, 0x02d0, 0x02d0, 0x0002, 0x0011, 0x02e5, 0x02e5, - 0x0003, 0x0129, 0x0000, 0x012c, 0x0001, 0x0008, 0x0ca5, 0x0002, - 0x012f, 0x0133, 0x0002, 0x0011, 0x02d0, 0x02d0, 0x0002, 0x0011, - 0x02e5, 0x02e5, 0x0003, 0x013b, 0x013e, 0x0143, 0x0001, 0x0011, - 0x02fc, 0x0003, 0x0011, 0x0305, 0x0323, 0x0341, 0x0002, 0x0146, - 0x014a, 0x0002, 0x0011, 0x0361, 0x0361, 0x0002, 0x0011, 0x037b, - // Entry 93C0 - 93FF - 0x037b, 0x0003, 0x0152, 0x0000, 0x0155, 0x0001, 0x0011, 0x0395, - 0x0002, 0x0158, 0x015c, 0x0002, 0x0011, 0x039d, 0x039d, 0x0002, - 0x0011, 0x03b2, 0x03b2, 0x0003, 0x0164, 0x0000, 0x0167, 0x0001, - 0x0011, 0x0395, 0x0002, 0x016a, 0x016e, 0x0002, 0x0011, 0x039d, - 0x039d, 0x0002, 0x0011, 0x03b2, 0x03b2, 0x0003, 0x0176, 0x0179, - 0x017e, 0x0001, 0x0011, 0x03c7, 0x0003, 0x0011, 0x03d2, 0x03f2, - 0x0412, 0x0002, 0x0181, 0x0185, 0x0002, 0x0011, 0x0434, 0x0434, - 0x0002, 0x0011, 0x0450, 0x0450, 0x0003, 0x018d, 0x0000, 0x0190, - // Entry 9400 - 943F - 0x0001, 0x0011, 0x046c, 0x0002, 0x0193, 0x0197, 0x0002, 0x0011, - 0x0476, 0x0476, 0x0002, 0x0011, 0x0491, 0x0491, 0x0003, 0x019f, - 0x0000, 0x01a2, 0x0001, 0x0011, 0x046c, 0x0002, 0x01a5, 0x01a9, - 0x0002, 0x0011, 0x0476, 0x0476, 0x0002, 0x0011, 0x0491, 0x0491, - 0x0003, 0x01b1, 0x01b4, 0x01b9, 0x0001, 0x0011, 0x04ac, 0x0003, - 0x0011, 0x04b1, 0x04c0, 0x04cd, 0x0002, 0x01bc, 0x01c0, 0x0002, - 0x0011, 0x04d8, 0x04d8, 0x0002, 0x0011, 0x04ee, 0x04ee, 0x0003, - 0x01c8, 0x0000, 0x01cb, 0x0001, 0x0011, 0x04ac, 0x0002, 0x01ce, - // Entry 9440 - 947F - 0x01d2, 0x0002, 0x0011, 0x0504, 0x0504, 0x0002, 0x0011, 0x04ee, - 0x0519, 0x0003, 0x01da, 0x0000, 0x01dd, 0x0001, 0x0011, 0x04ac, - 0x0002, 0x01e0, 0x01e4, 0x0002, 0x0011, 0x0504, 0x0504, 0x0002, - 0x0011, 0x04ee, 0x052e, 0x0001, 0x01ea, 0x0001, 0x0011, 0x0540, - 0x0002, 0x0000, 0x01f0, 0x0003, 0x0011, 0x0552, 0x0581, 0x05b0, - 0x0002, 0x0000, 0x01f8, 0x0003, 0x0011, 0x05e1, 0x0605, 0x0629, - 0x0002, 0x0000, 0x0200, 0x0003, 0x0011, 0x05e1, 0x0605, 0x064f, - 0x0002, 0x0000, 0x0208, 0x0003, 0x0011, 0x0674, 0x06a1, 0x06ce, - // Entry 9480 - 94BF - 0x0002, 0x0000, 0x0210, 0x0003, 0x0011, 0x06fd, 0x071f, 0x073f, - 0x0002, 0x0000, 0x0218, 0x0003, 0x0011, 0x06fd, 0x071f, 0x073f, - 0x0002, 0x0000, 0x0220, 0x0003, 0x0011, 0x0763, 0x0790, 0x07bd, - 0x0002, 0x0000, 0x0228, 0x0003, 0x0011, 0x07ec, 0x080e, 0x0830, - 0x0002, 0x0000, 0x0230, 0x0003, 0x0011, 0x07ec, 0x080e, 0x0830, - 0x0002, 0x0000, 0x0238, 0x0003, 0x0011, 0x0854, 0x0881, 0x08ae, - 0x0002, 0x0000, 0x0240, 0x0003, 0x0011, 0x08dd, 0x08ff, 0x0921, - 0x0002, 0x0000, 0x0248, 0x0003, 0x0011, 0x08dd, 0x08ff, 0x0921, - // Entry 94C0 - 94FF - 0x0002, 0x0000, 0x0250, 0x0003, 0x0011, 0x0945, 0x096e, 0x0997, - 0x0002, 0x0000, 0x0258, 0x0003, 0x0011, 0x09c2, 0x09e0, 0x09fe, - 0x0002, 0x0000, 0x0260, 0x0003, 0x0011, 0x09c2, 0x09e0, 0x09fe, - 0x0002, 0x0000, 0x0268, 0x0003, 0x0011, 0x0a1e, 0x0a4f, 0x0a80, - 0x0002, 0x0000, 0x0270, 0x0003, 0x0011, 0x0ab3, 0x0ad9, 0x0aff, - 0x0002, 0x0000, 0x0278, 0x0003, 0x0011, 0x0ab3, 0x0ad9, 0x0aff, - 0x0002, 0x0000, 0x0280, 0x0003, 0x0011, 0x0b27, 0x0b4b, 0x0b6f, - 0x0002, 0x0000, 0x0288, 0x0003, 0x0011, 0x0b95, 0x0bae, 0x0bd6, - // Entry 9500 - 953F - 0x0002, 0x0000, 0x0290, 0x0003, 0x0011, 0x0b95, 0x0bae, 0x0bd6, - 0x0001, 0x0297, 0x0001, 0x0011, 0x0c00, 0x0003, 0x029e, 0x0000, - 0x02a1, 0x0001, 0x0011, 0x0c1c, 0x0002, 0x02a4, 0x02a8, 0x0002, - 0x0011, 0x0c27, 0x0c27, 0x0002, 0x0011, 0x0c43, 0x0c43, 0x0003, - 0x02b0, 0x0000, 0x02b3, 0x0001, 0x0011, 0x0c5f, 0x0002, 0x02b6, - 0x02ba, 0x0002, 0x0011, 0x0c69, 0x0c69, 0x0002, 0x0011, 0x0c84, - 0x0c84, 0x0003, 0x02c2, 0x0000, 0x02c5, 0x0001, 0x0011, 0x0c5f, - 0x0002, 0x02c8, 0x02cc, 0x0002, 0x0011, 0x0c69, 0x0c69, 0x0002, - // Entry 9540 - 957F - 0x0011, 0x0c84, 0x0c84, 0x0003, 0x02d4, 0x0000, 0x02d7, 0x0001, - 0x0011, 0x0c9f, 0x0002, 0x02da, 0x02de, 0x0002, 0x0011, 0x0caa, - 0x0caa, 0x0002, 0x0011, 0x0cc4, 0x0cc4, 0x0003, 0x02e6, 0x0000, - 0x02e9, 0x0001, 0x0011, 0x0ce0, 0x0002, 0x02ec, 0x02f0, 0x0002, - 0x0011, 0x0ce8, 0x0ce8, 0x0002, 0x0011, 0x0cff, 0x0cff, 0x0003, - 0x02f8, 0x0000, 0x02fb, 0x0001, 0x0011, 0x0ce0, 0x0002, 0x02fe, - 0x0302, 0x0002, 0x0011, 0x0ce8, 0x0ce8, 0x0002, 0x0011, 0x0cff, - 0x0cff, 0x0003, 0x030a, 0x0000, 0x030d, 0x0001, 0x000f, 0x01e5, - // Entry 9580 - 95BF - 0x0002, 0x0310, 0x0314, 0x0002, 0x0011, 0x0d18, 0x0d18, 0x0002, - 0x0011, 0x0d34, 0x0d34, 0x0003, 0x031c, 0x0000, 0x031f, 0x0001, - 0x0011, 0x0d52, 0x0002, 0x0322, 0x0326, 0x0002, 0x0011, 0x0d5a, - 0x0d5a, 0x0002, 0x0011, 0x0d71, 0x0d71, 0x0003, 0x032e, 0x0000, - 0x0331, 0x0001, 0x0011, 0x0d52, 0x0002, 0x0334, 0x0338, 0x0002, - 0x0011, 0x0d5a, 0x0d5a, 0x0002, 0x0011, 0x0d71, 0x0d71, 0x0001, - 0x033e, 0x0001, 0x0011, 0x0d8a, 0x0004, 0x0346, 0x034b, 0x0350, - 0x035b, 0x0003, 0x0000, 0x1dc7, 0x2229, 0x2234, 0x0003, 0x0000, - // Entry 95C0 - 95FF - 0x1de0, 0x1de4, 0x1ded, 0x0002, 0x0000, 0x0353, 0x0002, 0x0000, - 0x0356, 0x0003, 0x0011, 0xffff, 0x0da0, 0x0dca, 0x0002, 0x0000, - 0x035e, 0x0003, 0x03f8, 0x048e, 0x0362, 0x0094, 0x0011, 0x0df2, - 0x0e12, 0x0e2e, 0x0e4e, 0x0e88, 0x0f0b, 0x0f6c, 0x0fe2, 0x1076, - 0x1111, 0x119a, 0xffff, 0x121e, 0x1298, 0x1319, 0x139b, 0x1432, - 0x14ae, 0x152c, 0x15dd, 0x169d, 0x173f, 0x17d4, 0x1858, 0x18e1, - 0x193d, 0x1948, 0x1964, 0x19b8, 0x19ee, 0x1a4c, 0x1a66, 0x1abb, - 0x1b0e, 0x1b6d, 0x1bc9, 0x1c04, 0x1c31, 0x1c9d, 0x1d0c, 0x1d54, - // Entry 9600 - 963F - 0x1d61, 0x1d7e, 0x1db6, 0x1e20, 0x1e4b, 0x1ed9, 0x1f4f, 0x1fab, - 0x2049, 0x20da, 0x2126, 0x2148, 0x218f, 0x21b9, 0x21db, 0x223b, - 0x225b, 0x22aa, 0x2352, 0x23d4, 0x23f0, 0x2422, 0x24a1, 0x24fe, - 0x2546, 0x254f, 0x2565, 0x2578, 0x2598, 0x25bc, 0x25f7, 0x266a, - 0x26cd, 0x272c, 0xffff, 0x2778, 0x279e, 0x27cf, 0x281b, 0x283d, - 0x289d, 0x28ac, 0x28d2, 0x2928, 0x2948, 0x299c, 0x29ab, 0x29be, - 0x29dc, 0x2a0a, 0x2a5e, 0x2aa9, 0x2b7d, 0x2c1b, 0x2c86, 0x2cd6, - 0x2ce3, 0x2cee, 0x2d15, 0x2d9d, 0x2e20, 0x2e88, 0x2e91, 0x2ec5, - // Entry 9640 - 967F - 0x2f5c, 0x2fc9, 0x3022, 0x307a, 0x3085, 0x30bd, 0x311e, 0x317b, - 0x31db, 0x321b, 0x329d, 0x32ac, 0xffff, 0x32c6, 0x32d5, 0x32f1, - 0xffff, 0x3350, 0x339c, 0x33c0, 0x33d1, 0x33f1, 0x340b, 0x341a, - 0x3423, 0x344a, 0x349e, 0x34b5, 0x34cf, 0x351b, 0x3535, 0x358f, - 0x35ab, 0x3614, 0x3689, 0x36dd, 0x3707, 0x377e, 0x37da, 0x37e7, - 0x37f9, 0x3827, 0x3890, 0x0094, 0x0011, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0e68, 0x0efe, 0x0f5b, 0x0fc4, 0x1054, 0x10f0, 0x1179, - 0xffff, 0x1202, 0x127c, 0x1306, 0x1375, 0x141d, 0x1492, 0x150c, - // Entry 9680 - 96BF - 0x15a2, 0x1679, 0x171b, 0x17bd, 0x1838, 0x18ce, 0xffff, 0xffff, - 0x1955, 0xffff, 0x19da, 0xffff, 0x1a5b, 0x1ab2, 0x1b03, 0x1b5a, - 0xffff, 0xffff, 0x1c22, 0x1c85, 0x1d03, 0xffff, 0xffff, 0xffff, - 0x1d9c, 0xffff, 0x1e2f, 0x1eb9, 0xffff, 0x1f8b, 0x2021, 0x20cf, - 0xffff, 0xffff, 0xffff, 0xffff, 0x21c6, 0xffff, 0xffff, 0x2284, - 0x232c, 0xffff, 0xffff, 0x23fd, 0x2492, 0x24f5, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x25e0, 0x265b, 0x26be, 0x2721, - 0xffff, 0xffff, 0xffff, 0x27c4, 0xffff, 0x2828, 0xffff, 0xffff, - // Entry 96C0 - 96FF - 0x28c2, 0xffff, 0x2939, 0xffff, 0xffff, 0xffff, 0xffff, 0x29fb, - 0xffff, 0x2a6b, 0x2b4b, 0x2c07, 0x2c79, 0xffff, 0xffff, 0xffff, - 0x2cf9, 0x2d83, 0x2e07, 0xffff, 0xffff, 0x2ea0, 0x2f45, 0x2fc0, - 0x3011, 0xffff, 0xffff, 0x30ac, 0x3115, 0x3166, 0xffff, 0x31f5, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32e2, 0xffff, 0x3345, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x343b, - 0xffff, 0xffff, 0x34c4, 0xffff, 0x3524, 0xffff, 0x359c, 0x35ff, - 0x367a, 0xffff, 0x36f0, 0x376b, 0xffff, 0xffff, 0xffff, 0x381a, - // Entry 9700 - 973F - 0x3877, 0x0094, 0x0011, 0xffff, 0xffff, 0xffff, 0xffff, 0x0ec5, - 0x0f35, 0x0f9a, 0x101d, 0x10b5, 0x1147, 0x11d0, 0xffff, 0x124f, - 0x12d1, 0x1349, 0x13de, 0x1464, 0x14df, 0x1569, 0x162d, 0x16de, - 0x1780, 0x1808, 0x1895, 0x1911, 0xffff, 0xffff, 0x1990, 0xffff, - 0x1a1f, 0xffff, 0x1a8e, 0x1ae1, 0x1b36, 0x1b9d, 0xffff, 0xffff, - 0x1c5d, 0x1cd2, 0x1d32, 0xffff, 0xffff, 0xffff, 0x1ded, 0xffff, - 0x1e84, 0x1f16, 0xffff, 0x1fe8, 0x208e, 0x2102, 0xffff, 0xffff, - 0xffff, 0xffff, 0x220d, 0xffff, 0xffff, 0x22ed, 0x2395, 0xffff, - // Entry 9740 - 977F - 0xffff, 0x245c, 0x24cd, 0x2524, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x262b, 0x2696, 0x26f9, 0x2754, 0xffff, 0xffff, - 0xffff, 0x27f7, 0xffff, 0x286f, 0xffff, 0xffff, 0x28ff, 0xffff, - 0x2974, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a36, 0xffff, 0x2afc, - 0x2bc4, 0x2c4c, 0x2cb0, 0xffff, 0xffff, 0xffff, 0x2d4e, 0x2dd4, - 0x2e56, 0xffff, 0xffff, 0x2f07, 0x2f90, 0x2fef, 0x3050, 0xffff, - 0xffff, 0x30eb, 0x3144, 0x31ad, 0xffff, 0x325e, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x331d, 0xffff, 0x3378, 0xffff, 0xffff, - // Entry 9780 - 97BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3476, 0xffff, 0xffff, - 0x34f7, 0xffff, 0x3564, 0xffff, 0x35d7, 0x3649, 0x36b5, 0xffff, - 0x373b, 0x37ae, 0xffff, 0xffff, 0xffff, 0x3851, 0x38c6, 0x0002, - 0x0003, 0x00d1, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, - 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, - // Entry 97C0 - 97FF - 0x008b, 0x0000, 0x009f, 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, - 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0012, 0xffff, - 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, - 0x0020, 0x0024, 0x0028, 0x002c, 0x000d, 0x0012, 0xffff, 0x0030, - 0x003c, 0x0047, 0x0053, 0x005c, 0x0068, 0x0074, 0x0081, 0x008d, - 0x0098, 0x00a2, 0x00b5, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, - 0xffff, 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, - 0x21ce, 0x21d0, 0x2150, 0x21cc, 0x223c, 0x0002, 0x0069, 0x007f, - // Entry 9800 - 983F - 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0012, 0x00c8, 0x00cc, - 0x00d0, 0x00d4, 0x00d8, 0x00dc, 0x00e0, 0x0007, 0x0012, 0x00e4, - 0x00ea, 0x00f6, 0x0101, 0x010d, 0x0116, 0x0122, 0x0002, 0x0000, - 0x0082, 0x0007, 0x0000, 0x21d0, 0x2157, 0x223e, 0x21d0, 0x21cc, - 0x04dd, 0x223a, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, - 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, - 0x0012, 0xffff, 0x012e, 0x0136, 0x013e, 0x0146, 0x0003, 0x00a9, - 0x0000, 0x00a3, 0x0001, 0x00a5, 0x0002, 0x0012, 0x014e, 0x0162, - // Entry 9840 - 987F - 0x0001, 0x00ab, 0x0002, 0x0009, 0x0078, 0x5430, 0x0004, 0x00bd, - 0x00b7, 0x00b4, 0x00ba, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, - 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, - 0x00ce, 0x00c8, 0x00c5, 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x003d, 0x010f, 0x0000, 0x0000, 0x0114, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0119, 0x0000, 0x0000, 0x011e, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0123, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 9880 - 98BF - 0x0000, 0x012e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0133, 0x0000, 0x0138, - 0x0000, 0x0000, 0x013d, 0x0000, 0x0000, 0x0142, 0x0001, 0x0111, - 0x0001, 0x0012, 0x0173, 0x0001, 0x0116, 0x0001, 0x0012, 0x017b, - 0x0001, 0x011b, 0x0001, 0x0012, 0x0182, 0x0001, 0x0120, 0x0001, - 0x0012, 0x0189, 0x0002, 0x0126, 0x0129, 0x0001, 0x0012, 0x0190, - // Entry 98C0 - 98FF - 0x0003, 0x0012, 0x0198, 0x01a4, 0x01ad, 0x0001, 0x0130, 0x0001, - 0x0012, 0x01b9, 0x0001, 0x0135, 0x0001, 0x0012, 0x01ce, 0x0001, - 0x013a, 0x0001, 0x0012, 0x01e1, 0x0001, 0x013f, 0x0001, 0x0012, - 0x01e8, 0x0001, 0x0144, 0x0001, 0x0012, 0x01f1, 0x0003, 0x0004, - 0x021a, 0x05f4, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, - 0x0021, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, - // Entry 9900 - 993F - 0x000c, 0x001e, 0x0001, 0x0012, 0x0203, 0x0004, 0x0035, 0x002f, - 0x002c, 0x0032, 0x0001, 0x0012, 0x020f, 0x0001, 0x0012, 0x020f, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, - 0x00a6, 0x00fd, 0x0132, 0x01cd, 0x01e7, 0x01f8, 0x0209, 0x0002, - 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0012, - 0xffff, 0x0221, 0x0228, 0x022f, 0x0236, 0x023d, 0x0244, 0x024b, - 0x0252, 0x0259, 0x0260, 0x0267, 0x026e, 0x000d, 0x0012, 0xffff, - 0x0275, 0x0279, 0x027d, 0x0279, 0x027d, 0x0281, 0x0285, 0x0289, - // Entry 9940 - 997F - 0x028d, 0x028d, 0x0291, 0x0295, 0x000d, 0x0012, 0xffff, 0x0299, - 0x02a9, 0x02b3, 0x02bd, 0x02c7, 0x02d7, 0x02e4, 0x02f1, 0x02fb, - 0x0308, 0x0315, 0x0322, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, - 0x0012, 0xffff, 0x0221, 0x0228, 0x022f, 0x0236, 0x023d, 0x0244, - 0x024b, 0x0252, 0x0259, 0x0260, 0x0267, 0x026e, 0x000d, 0x0012, - 0xffff, 0x0275, 0x0279, 0x027d, 0x0279, 0x027d, 0x0281, 0x0285, - 0x0289, 0x028d, 0x028d, 0x0291, 0x0295, 0x000d, 0x0012, 0xffff, - 0x0299, 0x02a9, 0x02b3, 0x02bd, 0x02c7, 0x02d7, 0x02e4, 0x02f1, - // Entry 9980 - 99BF - 0x02fb, 0x0308, 0x0315, 0x0322, 0x0002, 0x00a9, 0x00d3, 0x0005, - 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0012, 0x032f, - 0x0339, 0x0343, 0x034d, 0x0357, 0x0361, 0x036b, 0x0007, 0x0012, - 0x0375, 0x0379, 0x037d, 0x0381, 0x0291, 0x0385, 0x0275, 0x0007, - 0x0012, 0x0389, 0x0390, 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03b3, - 0x0007, 0x0012, 0x03ba, 0x03d0, 0x03e6, 0x03f6, 0x0406, 0x0416, - 0x0429, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, - 0x0012, 0x032f, 0x0339, 0x0343, 0x034d, 0x0357, 0x0361, 0x036b, - // Entry 99C0 - 99FF - 0x0007, 0x0012, 0x0375, 0x0379, 0x037d, 0x0381, 0x0291, 0x0385, - 0x0275, 0x0007, 0x0012, 0x0389, 0x0390, 0x0397, 0x039e, 0x03a5, - 0x03ac, 0x03b3, 0x0007, 0x0012, 0x03ba, 0x03d0, 0x03e6, 0x03f6, - 0x0406, 0x0416, 0x0429, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, - 0x010b, 0x0112, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, - 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x0005, 0x0012, 0xffff, 0x043f, 0x0450, 0x0461, 0x0472, 0x0003, - 0x011d, 0x0124, 0x012b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, - // Entry 9A00 - 9A3F - 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x0039, 0x0005, 0x0012, 0xffff, 0x043f, 0x0450, 0x0461, 0x0472, - 0x0002, 0x0135, 0x0181, 0x0003, 0x0139, 0x0151, 0x0169, 0x0008, - 0x0142, 0x0148, 0x0000, 0x014b, 0x014e, 0x0000, 0x0000, 0x0145, - 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x048d, 0x0001, 0x0012, - 0x0494, 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x0494, 0x0008, - 0x015a, 0x0160, 0x0000, 0x0163, 0x0166, 0x0000, 0x0000, 0x015d, - 0x0001, 0x0012, 0x04a7, 0x0001, 0x0012, 0x04ab, 0x0001, 0x0012, - // Entry 9A40 - 9A7F - 0x04af, 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x0494, 0x0008, - 0x0172, 0x0178, 0x0000, 0x017b, 0x017e, 0x0000, 0x0000, 0x0175, - 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x048d, 0x0001, 0x0012, - 0x0494, 0x0001, 0x0012, 0x0483, 0x0001, 0x0012, 0x0494, 0x0003, - 0x0185, 0x019d, 0x01b5, 0x0008, 0x018e, 0x0194, 0x0000, 0x0197, - 0x019a, 0x0000, 0x0000, 0x0191, 0x0001, 0x0012, 0x0483, 0x0001, - 0x0012, 0x048d, 0x0001, 0x0012, 0x0494, 0x0001, 0x0012, 0x0483, - 0x0001, 0x0012, 0x0494, 0x0008, 0x01a6, 0x01ac, 0x0000, 0x01af, - // Entry 9A80 - 9ABF - 0x01b2, 0x0000, 0x0000, 0x01a9, 0x0001, 0x0012, 0x0483, 0x0001, - 0x0012, 0x048d, 0x0001, 0x0012, 0x0494, 0x0001, 0x0012, 0x0483, - 0x0001, 0x0012, 0x0494, 0x0008, 0x01be, 0x01c4, 0x0000, 0x01c7, - 0x01ca, 0x0000, 0x0000, 0x01c1, 0x0001, 0x0012, 0x0483, 0x0001, - 0x0012, 0x048d, 0x0001, 0x0012, 0x0494, 0x0001, 0x0012, 0x0483, - 0x0001, 0x0012, 0x0494, 0x0003, 0x01dc, 0x0000, 0x01d1, 0x0002, - 0x01d4, 0x01d8, 0x0002, 0x0012, 0x04b3, 0x0517, 0x0002, 0x0012, - 0x04dd, 0x0528, 0x0002, 0x01df, 0x01e3, 0x0002, 0x0009, 0x0078, - // Entry 9AC0 - 9AFF - 0x5430, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x01f5, 0x01ef, - 0x01ec, 0x01f2, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, - 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, 0x0206, - 0x0200, 0x01fd, 0x0203, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, - 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, - 0x0217, 0x0211, 0x020e, 0x0214, 0x0001, 0x0012, 0x020f, 0x0001, - 0x0012, 0x020f, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0040, 0x025b, 0x0000, 0x0000, 0x0260, 0x0277, 0x0289, 0x029b, - // Entry 9B00 - 9B3F - 0x02b2, 0x02c4, 0x02d6, 0x02ed, 0x02ff, 0x0311, 0x032c, 0x0342, - 0x0000, 0x0000, 0x0000, 0x0358, 0x036f, 0x0381, 0x0000, 0x0000, - 0x0000, 0x0393, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0398, - 0x03ac, 0x03c0, 0x03d4, 0x03e8, 0x03fc, 0x0410, 0x0424, 0x0438, - 0x044c, 0x0460, 0x0474, 0x0488, 0x049c, 0x04b0, 0x04c4, 0x04d8, - 0x04ec, 0x0500, 0x0514, 0x0528, 0x0000, 0x053c, 0x0000, 0x0541, - 0x0557, 0x0569, 0x057b, 0x0591, 0x05a3, 0x05b5, 0x05cb, 0x05dd, - 0x05ef, 0x0001, 0x025d, 0x0001, 0x0012, 0x0555, 0x0003, 0x0264, - // Entry 9B40 - 9B7F - 0x0267, 0x026c, 0x0001, 0x0012, 0x0568, 0x0003, 0x0012, 0x0581, - 0x0592, 0x05ac, 0x0002, 0x026f, 0x0273, 0x0002, 0x0012, 0x05dd, - 0x05b9, 0x0002, 0x0012, 0x062b, 0x0604, 0x0003, 0x027b, 0x0000, - 0x027e, 0x0001, 0x0012, 0x0655, 0x0002, 0x0281, 0x0285, 0x0002, - 0x0012, 0x065d, 0x065d, 0x0002, 0x0012, 0x0670, 0x0670, 0x0003, - 0x028d, 0x0000, 0x0290, 0x0001, 0x0012, 0x0655, 0x0002, 0x0293, - 0x0297, 0x0002, 0x0012, 0x065d, 0x065d, 0x0002, 0x0012, 0x0670, - 0x0670, 0x0003, 0x029f, 0x02a2, 0x02a7, 0x0001, 0x0012, 0x068d, - // Entry 9B80 - 9BBF - 0x0003, 0x0012, 0x069a, 0x06b1, 0x06c5, 0x0002, 0x02aa, 0x02ae, - 0x0002, 0x0012, 0x06dc, 0x06dc, 0x0002, 0x0012, 0x06f4, 0x06dc, - 0x0003, 0x02b6, 0x0000, 0x02b9, 0x0001, 0x0012, 0x0716, 0x0002, - 0x02bc, 0x02c0, 0x0002, 0x0012, 0x0721, 0x0721, 0x0002, 0x0012, - 0x0737, 0x0737, 0x0003, 0x02c8, 0x0000, 0x02cb, 0x0001, 0x0012, - 0x0716, 0x0002, 0x02ce, 0x02d2, 0x0002, 0x0012, 0x0721, 0x0721, - 0x0002, 0x0012, 0x0737, 0x0737, 0x0003, 0x02da, 0x02dd, 0x02e2, - 0x0001, 0x0012, 0x0757, 0x0003, 0x0012, 0x0761, 0x0775, 0x0786, - // Entry 9BC0 - 9BFF - 0x0002, 0x02e5, 0x02e9, 0x0002, 0x0012, 0x07af, 0x079a, 0x0002, - 0x0012, 0x07e6, 0x07c7, 0x0003, 0x02f1, 0x0000, 0x02f4, 0x0001, - 0x0012, 0x0808, 0x0002, 0x02f7, 0x02fb, 0x0002, 0x0012, 0x0810, - 0x0810, 0x0002, 0x0012, 0x0823, 0x0823, 0x0003, 0x0303, 0x0000, - 0x0306, 0x0001, 0x0012, 0x0840, 0x0002, 0x0309, 0x030d, 0x0002, - 0x0012, 0x0810, 0x0810, 0x0002, 0x0012, 0x0823, 0x0823, 0x0004, - 0x0316, 0x0319, 0x031e, 0x0329, 0x0001, 0x0012, 0x0847, 0x0003, - 0x0012, 0x085d, 0x0873, 0x0887, 0x0002, 0x0321, 0x0325, 0x0002, - // Entry 9C00 - 9C3F - 0x0012, 0x08b8, 0x0897, 0x0002, 0x0012, 0x0907, 0x08dc, 0x0001, - 0x0012, 0x0935, 0x0004, 0x0331, 0x0000, 0x0334, 0x033f, 0x0001, - 0x0012, 0x095d, 0x0002, 0x0337, 0x033b, 0x0002, 0x0012, 0x0965, - 0x0965, 0x0002, 0x0012, 0x0978, 0x0978, 0x0001, 0x0012, 0x0935, - 0x0004, 0x0347, 0x0000, 0x034a, 0x0355, 0x0001, 0x0012, 0x095d, - 0x0002, 0x034d, 0x0351, 0x0002, 0x0012, 0x0965, 0x0965, 0x0002, - 0x0012, 0x0978, 0x0978, 0x0001, 0x0012, 0x0935, 0x0003, 0x035c, - 0x035f, 0x0364, 0x0001, 0x0012, 0x048d, 0x0003, 0x0012, 0x0995, - // Entry 9C40 - 9C7F - 0x099c, 0x09aa, 0x0002, 0x0367, 0x036b, 0x0002, 0x0012, 0x09c9, - 0x09b7, 0x0002, 0x0012, 0x0a03, 0x09ee, 0x0003, 0x0373, 0x0000, - 0x0376, 0x0001, 0x0012, 0x048d, 0x0002, 0x0379, 0x037d, 0x0002, - 0x0012, 0x09c9, 0x09b7, 0x0002, 0x0012, 0x0a03, 0x09ee, 0x0003, - 0x0385, 0x0000, 0x0388, 0x0001, 0x0012, 0x048d, 0x0002, 0x038b, - 0x038f, 0x0002, 0x0012, 0x09c9, 0x09c9, 0x0002, 0x0012, 0x0a03, - 0x09ee, 0x0001, 0x0395, 0x0001, 0x0012, 0x0a2b, 0x0003, 0x0000, - 0x039c, 0x03a1, 0x0003, 0x0012, 0x0a42, 0x0a62, 0x0a7f, 0x0002, - // Entry 9C80 - 9CBF - 0x03a4, 0x03a8, 0x0002, 0x0012, 0x0a9f, 0x0a9f, 0x0002, 0x0012, - 0x0ac0, 0x0ac0, 0x0003, 0x0000, 0x03b0, 0x03b5, 0x0003, 0x0012, - 0x0ae4, 0x0af9, 0x0b0b, 0x0002, 0x03b8, 0x03bc, 0x0002, 0x0012, - 0x0a9f, 0x0a9f, 0x0002, 0x0012, 0x0ac0, 0x0ac0, 0x0003, 0x0000, - 0x03c4, 0x03c9, 0x0003, 0x0012, 0x0b20, 0x0b31, 0x0b3f, 0x0002, - 0x03cc, 0x03d0, 0x0002, 0x0012, 0x0a9f, 0x0a9f, 0x0002, 0x0012, - 0x0ac0, 0x0ac0, 0x0003, 0x0000, 0x03d8, 0x03dd, 0x0003, 0x0012, - 0x0b50, 0x0b6d, 0x0b87, 0x0002, 0x03e0, 0x03e4, 0x0002, 0x0012, - // Entry 9CC0 - 9CFF - 0x0ba4, 0x0ba4, 0x0002, 0x0012, 0x0bc2, 0x0bc2, 0x0003, 0x0000, - 0x03ec, 0x03f1, 0x0003, 0x0012, 0x0be3, 0x0bf8, 0x0c0a, 0x0002, - 0x03f4, 0x03f8, 0x0002, 0x0012, 0x0ba4, 0x0ba4, 0x0002, 0x0012, - 0x0bc2, 0x0bc2, 0x0003, 0x0000, 0x0400, 0x0405, 0x0003, 0x0012, - 0x0c1f, 0x0c2d, 0x0c38, 0x0002, 0x0408, 0x040c, 0x0002, 0x0012, - 0x0ba4, 0x0ba4, 0x0002, 0x0012, 0x0bc2, 0x0bc2, 0x0003, 0x0000, - 0x0414, 0x0419, 0x0003, 0x0012, 0x0c46, 0x0c61, 0x0c79, 0x0002, - 0x041c, 0x0420, 0x0002, 0x0012, 0x0c94, 0x0c94, 0x0002, 0x0012, - // Entry 9D00 - 9D3F - 0x0cb0, 0x0cb0, 0x0003, 0x0000, 0x0428, 0x042d, 0x0003, 0x0012, - 0x0ccf, 0x0ce4, 0x0cf6, 0x0002, 0x0430, 0x0434, 0x0002, 0x0012, - 0x0c94, 0x0c94, 0x0002, 0x0012, 0x0cb0, 0x0cb0, 0x0003, 0x0000, - 0x043c, 0x0441, 0x0003, 0x0012, 0x0d0b, 0x0d1c, 0x0d2a, 0x0002, - 0x0444, 0x0448, 0x0002, 0x0012, 0x0c94, 0x0c94, 0x0002, 0x0012, - 0x0cb0, 0x0cb0, 0x0003, 0x0000, 0x0450, 0x0455, 0x0003, 0x0012, - 0x0d3b, 0x0d56, 0x0d6e, 0x0002, 0x0458, 0x045c, 0x0002, 0x0012, - 0x0d89, 0x0d89, 0x0002, 0x0012, 0x0da5, 0x0da5, 0x0003, 0x0000, - // Entry 9D40 - 9D7F - 0x0464, 0x0469, 0x0003, 0x0012, 0x0dc4, 0x0dd9, 0x0deb, 0x0002, - 0x046c, 0x0470, 0x0002, 0x0012, 0x0d89, 0x0d89, 0x0002, 0x0012, - 0x0da5, 0x0da5, 0x0003, 0x0000, 0x0478, 0x047d, 0x0003, 0x0012, - 0x0e00, 0x0e0e, 0x0e19, 0x0002, 0x0480, 0x0484, 0x0002, 0x0012, - 0x0d89, 0x0d89, 0x0002, 0x0012, 0x0da5, 0x0da5, 0x0003, 0x0000, - 0x048c, 0x0491, 0x0003, 0x0012, 0x0e27, 0x0e3b, 0x0e53, 0x0002, - 0x0494, 0x0498, 0x0002, 0x0012, 0x0e6e, 0x0e6e, 0x0002, 0x0012, - 0x0e8a, 0x0e8a, 0x0003, 0x0000, 0x04a0, 0x04a5, 0x0003, 0x0012, - // Entry 9D80 - 9DBF - 0x0ea9, 0x0ebe, 0x0ed0, 0x0002, 0x04a8, 0x04ac, 0x0002, 0x0012, - 0x0e6e, 0x0e6e, 0x0002, 0x0012, 0x0e8a, 0x0e8a, 0x0003, 0x0000, - 0x04b4, 0x04b9, 0x0003, 0x0012, 0x0ee5, 0x0ef6, 0x0f04, 0x0002, - 0x04bc, 0x04c0, 0x0002, 0x0012, 0x0e6e, 0x0e6e, 0x0002, 0x0012, - 0x0e8a, 0x0e8a, 0x0003, 0x0000, 0x04c8, 0x04cd, 0x0003, 0x0012, - 0x0f15, 0x0f32, 0x0f4c, 0x0002, 0x04d0, 0x04d4, 0x0002, 0x0012, - 0x0f69, 0x0f69, 0x0002, 0x0012, 0x0f8e, 0x0f8e, 0x0003, 0x0000, - 0x04dc, 0x04e1, 0x0003, 0x0012, 0x0faf, 0x0fc4, 0x0fd6, 0x0002, - // Entry 9DC0 - 9DFF - 0x04e4, 0x04e8, 0x0002, 0x0012, 0x0f69, 0x0f69, 0x0002, 0x0012, - 0x0f8e, 0x0f8e, 0x0003, 0x0000, 0x04f0, 0x04f5, 0x0003, 0x0012, - 0x0feb, 0x0ff9, 0x1004, 0x0002, 0x04f8, 0x04fc, 0x0002, 0x0012, - 0x0f69, 0x0f69, 0x0002, 0x0012, 0x0f8e, 0x0f8e, 0x0003, 0x0000, - 0x0504, 0x0509, 0x0003, 0x0012, 0x1012, 0x1032, 0x104f, 0x0002, - 0x050c, 0x0510, 0x0002, 0x0012, 0x106f, 0x106f, 0x0002, 0x0012, - 0x1097, 0x1097, 0x0003, 0x0000, 0x0518, 0x051d, 0x0003, 0x0012, - 0x10bb, 0x10d0, 0x10e2, 0x0002, 0x0520, 0x0524, 0x0002, 0x0012, - // Entry 9E00 - 9E3F - 0x106f, 0x106f, 0x0002, 0x0012, 0x1097, 0x1097, 0x0003, 0x0000, - 0x052c, 0x0531, 0x0003, 0x0012, 0x10f7, 0x1108, 0x1116, 0x0002, - 0x0534, 0x0538, 0x0002, 0x0012, 0x106f, 0x106f, 0x0002, 0x0012, - 0x1097, 0x1097, 0x0001, 0x053e, 0x0001, 0x0012, 0x1127, 0x0003, - 0x0545, 0x0548, 0x054c, 0x0001, 0x0012, 0x113b, 0x0002, 0x0012, - 0xffff, 0x1148, 0x0002, 0x054f, 0x0553, 0x0002, 0x0012, 0x1174, - 0x115c, 0x0002, 0x0012, 0x11aa, 0x118f, 0x0003, 0x055b, 0x0000, - 0x055e, 0x0001, 0x0012, 0x11c8, 0x0002, 0x0561, 0x0565, 0x0002, - // Entry 9E40 - 9E7F - 0x0012, 0x11d0, 0x11d0, 0x0002, 0x0012, 0x11e3, 0x11e3, 0x0003, - 0x056d, 0x0000, 0x0570, 0x0001, 0x0012, 0x11c8, 0x0002, 0x0573, - 0x0577, 0x0002, 0x0012, 0x11d0, 0x11d0, 0x0002, 0x0012, 0x11e3, - 0x11e3, 0x0003, 0x057f, 0x0582, 0x0586, 0x0001, 0x0012, 0x1200, - 0x0002, 0x0012, 0xffff, 0x1216, 0x0002, 0x0589, 0x058d, 0x0002, - 0x0012, 0x1233, 0x1233, 0x0002, 0x0012, 0x1254, 0x1254, 0x0003, - 0x0595, 0x0000, 0x0598, 0x0001, 0x0012, 0x127f, 0x0002, 0x059b, - 0x059f, 0x0002, 0x0012, 0x128a, 0x128a, 0x0002, 0x0012, 0x12a0, - // Entry 9E80 - 9EBF - 0x12a0, 0x0003, 0x05a7, 0x0000, 0x05aa, 0x0001, 0x0012, 0x127f, - 0x0002, 0x05ad, 0x05b1, 0x0002, 0x0012, 0x128a, 0x128a, 0x0002, - 0x0012, 0x12a0, 0x12a0, 0x0003, 0x05b9, 0x05bc, 0x05c0, 0x0001, - 0x0012, 0x12c0, 0x0002, 0x0012, 0xffff, 0x12ca, 0x0002, 0x05c3, - 0x05c7, 0x0002, 0x0012, 0x12e6, 0x12d1, 0x0002, 0x0012, 0x1326, - 0x130e, 0x0003, 0x05cf, 0x0000, 0x05d2, 0x0001, 0x0012, 0x1347, - 0x0002, 0x05d5, 0x05d9, 0x0002, 0x0012, 0x1352, 0x1352, 0x0002, - 0x0012, 0x1368, 0x1368, 0x0003, 0x05e1, 0x0000, 0x05e4, 0x0001, - // Entry 9EC0 - 9EFF - 0x0012, 0x1347, 0x0002, 0x05e7, 0x05eb, 0x0002, 0x0012, 0x1352, - 0x1352, 0x0002, 0x0012, 0x1368, 0x1368, 0x0001, 0x05f1, 0x0001, - 0x0012, 0x1381, 0x0004, 0x05f9, 0x05fe, 0x0603, 0x0624, 0x0003, - 0x0000, 0x1dc7, 0x2229, 0x2234, 0x0003, 0x0012, 0x13b4, 0x13c8, - 0x13f0, 0x0002, 0x060e, 0x0606, 0x0002, 0x0000, 0x0609, 0x0003, - 0x0012, 0xffff, 0x1414, 0x1435, 0x0003, 0x0612, 0x061e, 0x0618, - 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, - 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, 0xffff, - // Entry 9F00 - 9F3F - 0xffff, 0x05a8, 0x0002, 0x07ed, 0x0627, 0x0003, 0x06c1, 0x0757, - 0x062b, 0x0094, 0x0012, 0x145f, 0x1485, 0x14af, 0x14dc, 0x1546, - 0x15d4, 0x164f, 0x16ba, 0x1736, 0x17bc, 0x1831, 0xffff, 0x18a9, - 0x191b, 0x1999, 0x1a2d, 0x1ae2, 0x1b56, 0x1bdb, 0x1c85, 0x1d4d, - 0x1e01, 0x1ea7, 0x1f21, 0x1f95, 0x1ff2, 0x200c, 0x2046, 0x2097, - 0x20f1, 0x2168, 0x21ac, 0x2218, 0x2280, 0x230a, 0x2367, 0x239d, - 0x23ea, 0x2480, 0x252a, 0x257c, 0x2596, 0x25c6, 0x2623, 0x26a6, - 0x26e7, 0x2774, 0x27e7, 0x283c, 0x28d6, 0x2952, 0x2997, 0x29be, - // Entry 9F40 - 9F7F - 0x2a02, 0x2a33, 0x2a6d, 0x2abe, 0x2aeb, 0x2b3c, 0x2bda, 0x2c4b, - 0x2c7b, 0x2cc2, 0x2d64, 0x2ddd, 0x2e28, 0x2e58, 0x2e85, 0x2eb1, - 0x2ede, 0x2f15, 0x2f66, 0x2fd8, 0x3046, 0x30be, 0xffff, 0x3119, - 0x3149, 0x3196, 0x31f1, 0x322e, 0x328b, 0x32ab, 0x3302, 0x3371, - 0x33b8, 0x3409, 0x3429, 0x3449, 0x3469, 0x34b3, 0x350a, 0x355b, - 0x361a, 0x36bc, 0x3738, 0x3789, 0x37a6, 0x37bd, 0x3801, 0x3893, - 0x3931, 0x39b3, 0x39ca, 0x3a28, 0x3abe, 0x3b38, 0x3ba9, 0x3c00, - 0x3c17, 0x3c59, 0x3cbb, 0x3d23, 0x3d80, 0x3deb, 0x3e7c, 0x3e99, - // Entry 9F80 - 9FBF - 0x3eb3, 0x3ed9, 0x3ef9, 0x3f30, 0xffff, 0x3f9b, 0x3ff0, 0x400d, - 0x403d, 0x406a, 0x4094, 0x40b1, 0x40cb, 0x40ff, 0x4154, 0x4177, - 0x41ae, 0x41f9, 0x4239, 0x42a2, 0x42d6, 0x4347, 0x43c7, 0x4418, - 0x445e, 0x44e1, 0x4538, 0x4555, 0x457f, 0x45c7, 0x463e, 0x0094, - 0x0012, 0xffff, 0xffff, 0xffff, 0xffff, 0x1519, 0x15b7, 0x1632, - 0x16a0, 0x1712, 0x17a2, 0x1814, 0xffff, 0x188f, 0x18fe, 0x1976, - 0x19f6, 0x1ac2, 0x1b39, 0x1bb4, 0x1c4a, 0x1d1c, 0x1dd0, 0x1e84, - 0x1f04, 0x1f72, 0xffff, 0xffff, 0x2029, 0xffff, 0x20c1, 0xffff, - // Entry 9FC0 - 9FFF - 0x2192, 0x2201, 0x225d, 0x22e7, 0xffff, 0xffff, 0x23c7, 0x2447, - 0x2513, 0xffff, 0xffff, 0xffff, 0x25ed, 0xffff, 0x26c3, 0x2746, - 0xffff, 0x280e, 0x28af, 0x293b, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2a50, 0xffff, 0xffff, 0x2b0f, 0x2bad, 0xffff, 0xffff, 0x2c95, - 0x2d40, 0x2dc3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2f4c, 0x2fbb, 0x3029, 0x30a1, 0xffff, 0xffff, 0xffff, 0x3179, - 0xffff, 0x320b, 0xffff, 0xffff, 0x32db, 0xffff, 0x339b, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3493, 0xffff, 0x3524, 0x35ed, 0x3698, - // Entry A000 - A03F - 0x371b, 0xffff, 0xffff, 0xffff, 0x37d7, 0x386c, 0x3902, 0xffff, - 0xffff, 0x39fa, 0x3a9b, 0x3b1b, 0x3b89, 0xffff, 0xffff, 0x3c3f, - 0x3ca4, 0x3d00, 0xffff, 0x3db3, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3f13, 0xffff, 0x3f81, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x40e5, 0xffff, 0xffff, 0x4194, 0xffff, - 0x4210, 0xffff, 0x42bc, 0x4321, 0x43aa, 0xffff, 0x4438, 0x44c1, - 0xffff, 0xffff, 0xffff, 0x45aa, 0x4618, 0x0094, 0x0012, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1583, 0x1601, 0x167c, 0x16e4, 0x176a, - // Entry A040 - A07F - 0x17e6, 0x185e, 0xffff, 0x18d3, 0x1948, 0x19cc, 0x1a74, 0x1b12, - 0x1b83, 0x1c12, 0x1cd0, 0x1d8e, 0x1e42, 0x1eda, 0x1f4e, 0x1fc8, - 0xffff, 0xffff, 0x2073, 0xffff, 0x2131, 0xffff, 0x21d6, 0x223f, - 0x22b3, 0x233d, 0xffff, 0xffff, 0x241d, 0x24c9, 0x2551, 0xffff, - 0xffff, 0xffff, 0x2669, 0xffff, 0x271b, 0x27b2, 0xffff, 0x287a, - 0x290d, 0x2979, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a9a, 0xffff, - 0xffff, 0x2b79, 0x2c17, 0xffff, 0xffff, 0x2cff, 0x2d98, 0x2e07, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f90, 0x3005, - // Entry A080 - A0BF - 0x3073, 0x30eb, 0xffff, 0xffff, 0xffff, 0x31c3, 0xffff, 0x3261, - 0xffff, 0xffff, 0x3339, 0xffff, 0x33e5, 0xffff, 0xffff, 0xffff, - 0xffff, 0x34e3, 0xffff, 0x35a2, 0x3657, 0x36f0, 0x3765, 0xffff, - 0xffff, 0xffff, 0x383b, 0x38ca, 0x3970, 0xffff, 0xffff, 0x3a66, - 0x3af1, 0x3b65, 0x3bd9, 0xffff, 0xffff, 0x3c83, 0x3ce2, 0x3d56, - 0xffff, 0x3e33, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3f5d, - 0xffff, 0x3fc5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x4129, 0xffff, 0xffff, 0x41d8, 0xffff, 0x4272, 0xffff, - // Entry A0C0 - A0FF - 0x4300, 0x437d, 0x43f4, 0xffff, 0x4494, 0x4511, 0xffff, 0xffff, - 0xffff, 0x45f4, 0x4674, 0x0003, 0x07f1, 0x0873, 0x0832, 0x003f, - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06eb, 0xffff, - 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry A100 - A13F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x16e2, - 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06ef, - 0xffff, 0x07ef, 0x0864, 0x08f4, 0x0978, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry A140 - A17F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x06f4, 0xffff, 0x07f3, 0x0868, 0x08f8, 0x097c, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry A180 - A1BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x16eb, 0x0002, 0x0003, 0x0289, 0x0011, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x00b2, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0240, 0x0008, - 0x0000, 0x001e, 0x005f, 0x0078, 0x0000, 0x0090, 0x0000, 0x00a1, - 0x0002, 0x0021, 0x0040, 0x0003, 0x0025, 0x002e, 0x0037, 0x0007, - 0x0013, 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, 0x0062, - // Entry A1C0 - A1FF - 0x0007, 0x0013, 0x006d, 0x0070, 0x0073, 0x0076, 0x0079, 0x007c, - 0x007f, 0x0007, 0x0013, 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, - 0x0057, 0x0062, 0x0003, 0x0044, 0x004d, 0x0056, 0x0007, 0x0013, - 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, 0x0062, 0x0007, - 0x0013, 0x006d, 0x0070, 0x0073, 0x0076, 0x0079, 0x007c, 0x007f, - 0x0007, 0x0013, 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, - 0x0062, 0x0002, 0x0062, 0x006d, 0x0003, 0x0000, 0x0000, 0x0066, - 0x0005, 0x0013, 0xffff, 0x0082, 0x009a, 0x00b2, 0x00c8, 0x0003, - // Entry A200 - A23F - 0x0000, 0x0000, 0x0071, 0x0005, 0x0013, 0xffff, 0x0082, 0x009a, - 0x00b2, 0x00c8, 0x0001, 0x007a, 0x0003, 0x007e, 0x0000, 0x0087, - 0x0002, 0x0081, 0x0084, 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, - 0x00e8, 0x0002, 0x008a, 0x008d, 0x0001, 0x0013, 0x00e2, 0x0001, - 0x0013, 0x00e8, 0x0004, 0x009e, 0x0098, 0x0095, 0x009b, 0x0001, - 0x0000, 0x0489, 0x0001, 0x0013, 0x00ee, 0x0001, 0x0000, 0x04a5, - 0x0001, 0x0000, 0x04af, 0x0004, 0x00af, 0x00a9, 0x00a6, 0x00ac, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry A240 - A27F - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x00bb, 0x0120, 0x0177, - 0x01ac, 0x01ed, 0x020d, 0x021e, 0x022f, 0x0002, 0x00be, 0x00ef, - 0x0003, 0x00c2, 0x00d1, 0x00e0, 0x000d, 0x0013, 0xffff, 0x00fd, - 0x0117, 0x0122, 0x012d, 0x0138, 0x0143, 0x0154, 0x0161, 0x0168, - 0x0177, 0x018f, 0x01a7, 0x000d, 0x0013, 0xffff, 0x01bf, 0x007f, - 0x01c2, 0x01c5, 0x01c2, 0x01c8, 0x01cb, 0x01c2, 0x01c2, 0x01cb, - 0x01cb, 0x01bf, 0x000d, 0x0013, 0xffff, 0x00fd, 0x0117, 0x0122, - 0x012d, 0x0138, 0x0143, 0x0154, 0x0161, 0x0168, 0x0177, 0x018f, - // Entry A280 - A2BF - 0x01a7, 0x0003, 0x00f3, 0x0102, 0x0111, 0x000d, 0x0013, 0xffff, - 0x00fd, 0x0117, 0x0122, 0x012d, 0x0138, 0x0143, 0x0154, 0x0161, - 0x0168, 0x0177, 0x018f, 0x01a7, 0x000d, 0x0013, 0xffff, 0x01bf, - 0x007f, 0x01c2, 0x01c5, 0x01c2, 0x01c8, 0x01cb, 0x01c2, 0x01c2, - 0x01cb, 0x01cb, 0x01bf, 0x000d, 0x0013, 0xffff, 0x00fd, 0x0117, - 0x0122, 0x012d, 0x0138, 0x0143, 0x0154, 0x0161, 0x0168, 0x0177, - 0x018f, 0x01a7, 0x0002, 0x0123, 0x014d, 0x0005, 0x0129, 0x0132, - 0x0144, 0x0000, 0x013b, 0x0007, 0x0013, 0x0000, 0x0011, 0x0022, - // Entry A2C0 - A2FF - 0x0031, 0x0044, 0x0057, 0x0062, 0x0007, 0x0013, 0x006d, 0x0070, - 0x0073, 0x0076, 0x0079, 0x007c, 0x007f, 0x0007, 0x0013, 0x01ce, - 0x01d3, 0x01d8, 0x01dd, 0x01e2, 0x007c, 0x007f, 0x0007, 0x0013, - 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, 0x0062, 0x0005, - 0x0153, 0x015c, 0x016e, 0x0000, 0x0165, 0x0007, 0x0013, 0x0000, - 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, 0x0062, 0x0007, 0x0013, - 0x006d, 0x0070, 0x0073, 0x0076, 0x0079, 0x007c, 0x007f, 0x0007, - 0x0013, 0x01ce, 0x01d3, 0x01d8, 0x01dd, 0x01e2, 0x007c, 0x007f, - // Entry A300 - A33F - 0x0007, 0x0013, 0x0000, 0x0011, 0x0022, 0x0031, 0x0044, 0x0057, - 0x0062, 0x0002, 0x017a, 0x0193, 0x0003, 0x017e, 0x0185, 0x018c, - 0x0005, 0x0013, 0xffff, 0x01e7, 0x01ec, 0x01f1, 0x01f6, 0x0005, - 0x0003, 0xffff, 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x0005, 0x0013, - 0xffff, 0x0082, 0x009a, 0x00b2, 0x00c8, 0x0003, 0x0197, 0x019e, - 0x01a5, 0x0005, 0x0013, 0xffff, 0x01e7, 0x01ec, 0x01f1, 0x01f6, - 0x0005, 0x0003, 0xffff, 0x009d, 0x00a0, 0x00a3, 0x00a6, 0x0005, - 0x0013, 0xffff, 0x0082, 0x009a, 0x00b2, 0x00c8, 0x0002, 0x01af, - // Entry A340 - A37F - 0x01ce, 0x0003, 0x01b3, 0x01bc, 0x01c5, 0x0002, 0x01b6, 0x01b9, - 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0002, 0x01bf, - 0x01c2, 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0002, - 0x01c8, 0x01cb, 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, - 0x0003, 0x01d2, 0x01db, 0x01e4, 0x0002, 0x01d5, 0x01d8, 0x0001, - 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0002, 0x01de, 0x01e1, - 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0002, 0x01e7, - 0x01ea, 0x0001, 0x0013, 0x00e2, 0x0001, 0x0013, 0x00e8, 0x0003, - // Entry A380 - A3BF - 0x01fc, 0x0207, 0x01f1, 0x0002, 0x01f4, 0x01f8, 0x0002, 0x0013, - 0x01fb, 0x020d, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x01ff, - 0x0203, 0x0002, 0x0013, 0x01fb, 0x020d, 0x0002, 0x0000, 0x04f5, - 0x04f9, 0x0001, 0x0209, 0x0002, 0x0013, 0x021a, 0x0220, 0x0004, - 0x021b, 0x0215, 0x0212, 0x0218, 0x0001, 0x0000, 0x04fc, 0x0001, - 0x0013, 0x0223, 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, - 0x0004, 0x022c, 0x0226, 0x0223, 0x0229, 0x0001, 0x0002, 0x0453, - 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, - // Entry A3C0 - A3FF - 0x0478, 0x0004, 0x023d, 0x0237, 0x0234, 0x023a, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0242, 0x0002, 0x0245, 0x0267, 0x0003, - 0x0249, 0x0000, 0x0258, 0x000d, 0x0013, 0xffff, 0x0230, 0x0241, - 0x0250, 0x0261, 0x0270, 0x027f, 0x0290, 0x029d, 0x02ae, 0x02bf, - 0x02d2, 0x02e3, 0x000d, 0x0013, 0xffff, 0x0230, 0x0241, 0x0250, - 0x0261, 0x0270, 0x027f, 0x0290, 0x029d, 0x02ae, 0x02bf, 0x02d2, - 0x02e3, 0x0003, 0x026b, 0x0000, 0x027a, 0x000d, 0x0013, 0xffff, - // Entry A400 - A43F - 0x0230, 0x0241, 0x0250, 0x0261, 0x0270, 0x027f, 0x0290, 0x029d, - 0x02ae, 0x02bf, 0x02d2, 0x02e3, 0x000d, 0x0013, 0xffff, 0x0230, - 0x0241, 0x0250, 0x0261, 0x0270, 0x027f, 0x0290, 0x029d, 0x02ae, - 0x02bf, 0x02d2, 0x02e3, 0x003d, 0x0000, 0x0000, 0x0000, 0x02c7, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02cc, 0x0000, 0x0000, - 0x02d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02d6, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x02e1, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry A440 - A47F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x02e6, 0x0000, 0x0000, 0x02eb, 0x0000, 0x0000, - 0x02f0, 0x0001, 0x02c9, 0x0001, 0x0013, 0x02f0, 0x0001, 0x02ce, - 0x0001, 0x0013, 0x02f7, 0x0001, 0x02d3, 0x0001, 0x0013, 0x0300, - 0x0002, 0x02d9, 0x02dc, 0x0001, 0x0013, 0x030b, 0x0003, 0x0000, - 0x1b2f, 0x2240, 0x224b, 0x0001, 0x02e3, 0x0001, 0x0013, 0x0312, - 0x0001, 0x02e8, 0x0001, 0x0013, 0x0326, 0x0001, 0x02ed, 0x0001, - // Entry A480 - A4BF - 0x0013, 0x0335, 0x0001, 0x02f2, 0x0001, 0x0013, 0x0340, 0x0001, - 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0a4b, 0x0fb9, 0x0012, - 0x0017, 0x0027, 0x0066, 0x0091, 0x03ad, 0x0000, 0x0434, 0x045f, - 0x068b, 0x06c1, 0x06ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x071e, - // Entry A4C0 - A4FF - 0x0a0a, 0x0a3e, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, - 0x0000, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, - 0x0000, 0x0000, 0x0006, 0x002e, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0055, 0x0002, 0x0031, 0x0043, 0x0002, 0x0000, 0x0034, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, - 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x0002, 0x0000, - 0x0046, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, - // Entry A500 - A53F - 0x0004, 0x0063, 0x005d, 0x005a, 0x0060, 0x0001, 0x0013, 0x0349, - 0x0001, 0x0013, 0x0357, 0x0001, 0x0013, 0x0357, 0x0001, 0x0013, - 0x0357, 0x0001, 0x0068, 0x0002, 0x006b, 0x007e, 0x0002, 0x0000, - 0x006e, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, - 0x0422, 0x0002, 0x0000, 0x0081, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, - 0x221d, 0x2220, 0x2223, 0x0422, 0x000a, 0x009c, 0x0000, 0x0000, - // Entry A540 - A57F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e3, 0x00f7, 0x0002, - 0x009f, 0x00c1, 0x0003, 0x00a3, 0x0000, 0x00b2, 0x000d, 0x0000, - 0xffff, 0x0003, 0x0007, 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, - 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, 0x000d, 0x0013, 0xffff, - 0x035f, 0x036e, 0x037d, 0x038d, 0x039e, 0x03ad, 0x03bd, 0x03cc, - 0x03da, 0x03eb, 0x03fc, 0x0410, 0x0003, 0x00c5, 0x0000, 0x00d4, - 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, 0x000b, 0x000f, 0x0013, - 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, 0x000d, - // Entry A580 - A5BF - 0x0013, 0xffff, 0x035f, 0x036e, 0x037d, 0x038d, 0x039e, 0x03ad, - 0x03bd, 0x03cc, 0x03da, 0x03eb, 0x03fc, 0x0410, 0x0003, 0x00e7, - 0x00f2, 0x00ec, 0x0003, 0x0000, 0x004e, 0x0055, 0x004e, 0x0004, - 0x0000, 0xffff, 0xffff, 0xffff, 0x004e, 0x0003, 0x0000, 0x004e, - 0x0055, 0x004e, 0x0006, 0x00fe, 0x0131, 0x01f4, 0x0000, 0x02b7, - 0x037a, 0x0001, 0x0100, 0x0003, 0x0104, 0x0113, 0x0122, 0x000d, - 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, - 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x000d, 0x0000, - // Entry A5C0 - A5FF - 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, - 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x000d, 0x0000, 0xffff, - 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, - 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x0133, 0x0003, 0x0137, - 0x0176, 0x01b5, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, - 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, - 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, - 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, - // Entry A600 - A63F - 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, - 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, - 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, - 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, - 0x0390, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, - 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, - 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, - 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, - // Entry A640 - A67F - 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, - 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, - 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, - 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, - 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, - 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, - 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, - 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, - // Entry A680 - A6BF - 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, - 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, - 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, - 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x0001, - 0x01f6, 0x0003, 0x01fa, 0x0239, 0x0278, 0x003d, 0x0000, 0xffff, - 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, - 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, - 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, - // Entry A6C0 - A6FF - 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, - 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, - 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, - 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, - 0x0377, 0x0381, 0x0389, 0x0390, 0x003d, 0x0000, 0xffff, 0x01bd, - 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, - 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, - 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, - // Entry A700 - A73F - 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, - 0x02c3, 0xffff, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, - 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, - 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, - 0x0381, 0x0389, 0x0390, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, - 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, - 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, - 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, - // Entry A740 - A77F - 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, - 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, - 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, - 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, - 0x0389, 0x0390, 0x0001, 0x02b9, 0x0003, 0x02bd, 0x02fc, 0x033b, - 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, - 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, - 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, - // Entry A780 - A7BF - 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, - 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, - 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, - 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, - 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x003d, - 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, - 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, - 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, - // Entry A7C0 - A7FF - 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, - 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, - 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, - 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, - 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x003d, 0x0000, - 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, - 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, - 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, - // Entry A800 - A83F - 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, - 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, - 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, - 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, - 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x0001, 0x037c, 0x0003, - 0x0380, 0x038f, 0x039e, 0x000d, 0x0013, 0xffff, 0x0423, 0x0429, - 0x042f, 0x0434, 0x043b, 0x0440, 0x0444, 0x044a, 0x044f, 0x0455, - 0x045c, 0x0460, 0x000d, 0x0013, 0xffff, 0x0423, 0x0429, 0x042f, - // Entry A840 - A87F - 0x0434, 0x043b, 0x0440, 0x0444, 0x044a, 0x044f, 0x0455, 0x045c, - 0x0460, 0x000d, 0x0013, 0xffff, 0x0423, 0x0429, 0x042f, 0x0434, - 0x043b, 0x0440, 0x0444, 0x044a, 0x044f, 0x0455, 0x045c, 0x0460, - 0x0005, 0x03b3, 0x0000, 0x0000, 0x0000, 0x041e, 0x0002, 0x03b6, - 0x03ea, 0x0003, 0x03ba, 0x03ca, 0x03da, 0x000e, 0x0000, 0xffff, - 0x042f, 0x0438, 0x043f, 0x0445, 0x044c, 0x0450, 0x0458, 0x0460, - 0x0467, 0x046e, 0x0473, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, - // Entry A880 - A8BF - 0x0043, 0x221d, 0x2220, 0x2223, 0x0422, 0x000e, 0x0000, 0xffff, - 0x042f, 0x0438, 0x043f, 0x0445, 0x044c, 0x0450, 0x0458, 0x0460, - 0x0467, 0x046e, 0x0473, 0x0479, 0x0481, 0x0003, 0x03ee, 0x03fe, - 0x040e, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x043f, 0x0445, - 0x044c, 0x0450, 0x0458, 0x0460, 0x0467, 0x046e, 0x0473, 0x0479, - 0x0481, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, - 0x0422, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x043f, 0x0445, - // Entry A8C0 - A8FF - 0x044c, 0x0450, 0x0458, 0x0460, 0x0467, 0x046e, 0x0473, 0x0479, - 0x0481, 0x0003, 0x0428, 0x042e, 0x0422, 0x0001, 0x0424, 0x0002, - 0x0000, 0x0425, 0x042a, 0x0001, 0x042a, 0x0002, 0x0000, 0x0425, - 0x042a, 0x0001, 0x0430, 0x0002, 0x0000, 0x0425, 0x042a, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x043d, 0x0000, 0x044e, - 0x0004, 0x044b, 0x0445, 0x0442, 0x0448, 0x0001, 0x0013, 0x0466, - 0x0001, 0x0013, 0x0477, 0x0001, 0x0013, 0x0483, 0x0001, 0x0013, - 0x048d, 0x0004, 0x045c, 0x0456, 0x0453, 0x0459, 0x0001, 0x0000, - // Entry A900 - A93F - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0008, 0x0468, 0x04cd, 0x0524, 0x0559, 0x0642, - 0x0658, 0x0669, 0x067a, 0x0002, 0x046b, 0x049c, 0x0003, 0x046f, - 0x047e, 0x048d, 0x000d, 0x0013, 0xffff, 0x049c, 0x04a0, 0x04a5, - 0x04aa, 0x04ae, 0x04b3, 0x04b8, 0x04bd, 0x04c1, 0x04c7, 0x04cd, - 0x04d1, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, - 0x000d, 0x0013, 0xffff, 0x04d5, 0x04db, 0x04e2, 0x04ea, 0x04f0, - // Entry A940 - A97F - 0x04f8, 0x0500, 0x050a, 0x0510, 0x0518, 0x0520, 0x052a, 0x0003, - 0x04a0, 0x04af, 0x04be, 0x000d, 0x0013, 0xffff, 0x049c, 0x04a0, - 0x04a5, 0x04aa, 0x04ae, 0x04b3, 0x04b8, 0x04bd, 0x04c1, 0x04c7, - 0x04cd, 0x04d1, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, - 0x2223, 0x000d, 0x0013, 0xffff, 0x0533, 0x0539, 0x053f, 0x0547, - 0x054d, 0x0555, 0x055d, 0x0567, 0x0510, 0x056d, 0x0575, 0x057e, - 0x0002, 0x04d0, 0x04fa, 0x0005, 0x04d6, 0x04df, 0x04f1, 0x0000, - // Entry A980 - A9BF - 0x04e8, 0x0007, 0x0013, 0x0587, 0x058a, 0x058d, 0x0591, 0x0594, - 0x0598, 0x059c, 0x0007, 0x0000, 0x21cc, 0x21e5, 0x2254, 0x21d0, - 0x21e9, 0x21e5, 0x21d0, 0x0007, 0x0013, 0x0587, 0x058a, 0x058d, - 0x0591, 0x0594, 0x0598, 0x059c, 0x0007, 0x0013, 0x059f, 0x05a7, - 0x05b1, 0x05b9, 0x05c1, 0x05ca, 0x05d1, 0x0005, 0x0500, 0x0509, - 0x051b, 0x0000, 0x0512, 0x0007, 0x0013, 0x0587, 0x058a, 0x058d, - 0x0591, 0x0594, 0x0598, 0x059c, 0x0007, 0x0000, 0x21cc, 0x21e5, - 0x2254, 0x21d0, 0x21e9, 0x21e5, 0x21d0, 0x0007, 0x0013, 0x0587, - // Entry A9C0 - A9FF - 0x058a, 0x058d, 0x0591, 0x0594, 0x0598, 0x059c, 0x0007, 0x0013, - 0x059f, 0x05a7, 0x05b1, 0x05b9, 0x05c1, 0x05ca, 0x05d1, 0x0002, - 0x0527, 0x0540, 0x0003, 0x052b, 0x0532, 0x0539, 0x0005, 0x0000, - 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0013, 0xffff, 0x05d8, - 0x05e7, 0x05f6, 0x0605, 0x0003, 0x0544, 0x054b, 0x0552, 0x0005, - 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0013, 0xffff, - // Entry AA00 - AA3F - 0x05d8, 0x05e7, 0x05f6, 0x0605, 0x0002, 0x055c, 0x05cf, 0x0003, - 0x0560, 0x0585, 0x05aa, 0x0009, 0x056d, 0x0573, 0x056a, 0x0576, - 0x057c, 0x057f, 0x0582, 0x0570, 0x0579, 0x0001, 0x0013, 0x0614, - 0x0001, 0x0013, 0x061b, 0x0001, 0x0013, 0x0620, 0x0001, 0x0013, - 0x0625, 0x0001, 0x0013, 0x062a, 0x0001, 0x0013, 0x061b, 0x0001, - 0x0013, 0x0625, 0x0001, 0x0013, 0x062d, 0x0001, 0x0013, 0x0633, - 0x0009, 0x0592, 0x0598, 0x058f, 0x059b, 0x05a1, 0x05a4, 0x05a7, - 0x0595, 0x059e, 0x0001, 0x0013, 0x0638, 0x0001, 0x0013, 0x061b, - // Entry AA40 - AA7F - 0x0001, 0x0013, 0x0620, 0x0001, 0x0013, 0x0625, 0x0001, 0x0013, - 0x062a, 0x0001, 0x0001, 0x0279, 0x0001, 0x0013, 0x063e, 0x0001, - 0x0013, 0x0641, 0x0001, 0x0013, 0x0644, 0x0009, 0x05b7, 0x05bd, - 0x05b4, 0x05c0, 0x05c6, 0x05c9, 0x05cc, 0x05ba, 0x05c3, 0x0001, - 0x0013, 0x0647, 0x0001, 0x0013, 0x061b, 0x0001, 0x0013, 0x064f, - 0x0001, 0x0013, 0x0625, 0x0001, 0x0013, 0x0657, 0x0001, 0x0013, - 0x065d, 0x0001, 0x0013, 0x0667, 0x0001, 0x0013, 0x0671, 0x0001, - 0x0013, 0x0678, 0x0003, 0x05d3, 0x05f8, 0x061d, 0x0009, 0x05e0, - // Entry AA80 - AABF - 0x05e6, 0x05dd, 0x05e9, 0x05ef, 0x05f2, 0x05f5, 0x05e3, 0x05ec, - 0x0001, 0x0013, 0x0647, 0x0001, 0x0013, 0x061b, 0x0001, 0x0013, - 0x064f, 0x0001, 0x0013, 0x0625, 0x0001, 0x0013, 0x0657, 0x0001, - 0x0013, 0x065d, 0x0001, 0x0013, 0x0667, 0x0001, 0x0013, 0x0671, - 0x0001, 0x0013, 0x067f, 0x0009, 0x0605, 0x060b, 0x0602, 0x060e, - 0x0614, 0x0617, 0x061a, 0x0608, 0x0611, 0x0001, 0x0013, 0x0638, - 0x0001, 0x0013, 0x061b, 0x0001, 0x0013, 0x0620, 0x0001, 0x0013, - 0x0625, 0x0001, 0x0013, 0x0657, 0x0001, 0x0013, 0x061b, 0x0001, - // Entry AAC0 - AAFF - 0x0013, 0x0625, 0x0001, 0x0013, 0x062d, 0x0001, 0x0013, 0x067f, - 0x0009, 0x062a, 0x0630, 0x0627, 0x0633, 0x0639, 0x063c, 0x063f, - 0x062d, 0x0636, 0x0001, 0x0013, 0x0647, 0x0001, 0x0013, 0x061b, - 0x0001, 0x0013, 0x064f, 0x0001, 0x0013, 0x0625, 0x0001, 0x0013, - 0x0657, 0x0001, 0x0013, 0x065d, 0x0001, 0x0013, 0x0667, 0x0001, - 0x0013, 0x0671, 0x0001, 0x0013, 0x067f, 0x0003, 0x064c, 0x0652, - 0x0646, 0x0001, 0x0648, 0x0002, 0x0013, 0x0683, 0x068e, 0x0001, - 0x064e, 0x0002, 0x0013, 0x0683, 0x068e, 0x0001, 0x0654, 0x0002, - // Entry AB00 - AB3F - 0x0013, 0x0694, 0x069d, 0x0004, 0x0666, 0x0660, 0x065d, 0x0663, - 0x0001, 0x0013, 0x06a2, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0013, - 0x0357, 0x0001, 0x0007, 0x0277, 0x0004, 0x0677, 0x0671, 0x066e, - 0x0674, 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, - 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x0688, 0x0682, - 0x067f, 0x0685, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0691, - 0x0000, 0x0000, 0x0000, 0x06ba, 0x0002, 0x0694, 0x06a7, 0x0002, - // Entry AB40 - AB7F - 0x0000, 0x0697, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, - 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, - 0x2223, 0x0422, 0x0002, 0x0000, 0x06aa, 0x000e, 0x0000, 0x003f, - 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, - 0x0043, 0x221d, 0x2220, 0x2223, 0x0422, 0x0001, 0x06bc, 0x0001, - 0x06be, 0x0001, 0x0000, 0x04ef, 0x0001, 0x06c3, 0x0002, 0x06c6, - 0x06d8, 0x0002, 0x0000, 0x06c9, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, - // Entry AB80 - ABBF - 0x221d, 0x2220, 0x2223, 0x0002, 0x0000, 0x06db, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, - 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, 0x0005, 0x06f0, 0x0000, - 0x0000, 0x0000, 0x0717, 0x0002, 0x06f3, 0x0705, 0x0002, 0x0000, - 0x06f6, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, - 0x0002, 0x0000, 0x0708, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, - // Entry ABC0 - ABFF - 0x2220, 0x2223, 0x0001, 0x0719, 0x0001, 0x071b, 0x0001, 0x0000, - 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0725, 0x09f9, - 0x0003, 0x0819, 0x0909, 0x0729, 0x0001, 0x072b, 0x00ec, 0x0000, - 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, - 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, 0x20d7, - 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, - 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, - 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, - // Entry AC00 - AC3F - 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, - 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, - 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, - 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, - 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, - 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, - 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, - 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, - // Entry AC40 - AC7F - 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, - 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, - 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, - 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, - 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, - 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, - 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, - 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, - // Entry AC80 - ACBF - 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, - 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, - 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, - 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, - 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, - 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, - 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, - 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, - // Entry ACC0 - ACFF - 0x2257, 0x225d, 0x2265, 0x226c, 0x0001, 0x081b, 0x00ec, 0x0000, - 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, - 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, 0x20d7, - 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, - 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, - 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, - 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, - 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, - // Entry AD00 - AD3F - 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, - 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, - 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, - 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, - 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, - 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, - 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, - 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, - // Entry AD40 - AD7F - 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, - 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, - 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, - 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, - 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, - 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, - 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, - 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, - // Entry AD80 - ADBF - 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, - 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, - 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, - 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, - 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, - 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, - 0x2257, 0x225d, 0x2265, 0x226c, 0x0001, 0x090b, 0x00ec, 0x0000, - 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, - // Entry ADC0 - ADFF - 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, 0x20d7, - 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, - 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, 0x093a, - 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, - 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x0a6a, - 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, - 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, - 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, 0x0c60, - // Entry AE00 - AE3F - 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, - 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, 0x0db0, - 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, 0x0e57, - 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, - 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, - 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, 0x1051, - 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, 0x10fa, - 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x11a3, - // Entry AE40 - AE7F - 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, - 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x12f3, - 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, 0x139e, - 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, - 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, 0x14f5, - 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, - 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, 0x164d, - 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, 0x16f7, - // Entry AE80 - AEBF - 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, 0x179b, - 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x1847, - 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, - 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, 0x1997, - 0x223a, 0x04dd, 0x21d0, 0x19c7, 0x0004, 0x0a07, 0x0a01, 0x09fe, - 0x0a04, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, - 0x0013, 0x0483, 0x0001, 0x0013, 0x048d, 0x0005, 0x0a10, 0x0000, - 0x0000, 0x0000, 0x0a37, 0x0002, 0x0a13, 0x0a25, 0x0002, 0x0000, - // Entry AEC0 - AEFF - 0x0a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, 0x2220, 0x2223, - 0x0002, 0x0000, 0x0a28, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x221d, - 0x2220, 0x2223, 0x0001, 0x0a39, 0x0001, 0x0a3b, 0x0001, 0x0000, - 0x1a1d, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a44, 0x0001, - 0x0a46, 0x0001, 0x0a48, 0x0001, 0x0013, 0x06cd, 0x0040, 0x0a8c, - 0x0000, 0x0000, 0x0a91, 0x0ab0, 0x0acf, 0x0aee, 0x0b0d, 0x0b27, - // Entry AF00 - AF3F - 0x0b41, 0x0b60, 0x0b7a, 0x0b94, 0x0bb7, 0x0bda, 0x0000, 0x0000, - 0x0000, 0x0bfd, 0x0c1e, 0x0c3f, 0x0000, 0x0000, 0x0000, 0x0c60, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c65, 0x0c81, 0x0c9d, - 0x0cb9, 0x0cd5, 0x0cf1, 0x0d0d, 0x0d29, 0x0d45, 0x0d61, 0x0d7d, - 0x0d99, 0x0db5, 0x0dd1, 0x0ded, 0x0e09, 0x0e25, 0x0e41, 0x0e5d, - 0x0e79, 0x0e95, 0x0000, 0x0eb1, 0x0000, 0x0eb6, 0x0ed4, 0x0eee, - 0x0f08, 0x0f26, 0x0f40, 0x0f5a, 0x0f78, 0x0f96, 0x0fb4, 0x0001, - 0x0a8e, 0x0001, 0x0013, 0x06dc, 0x0003, 0x0a95, 0x0a98, 0x0a9d, - // Entry AF40 - AF7F - 0x0001, 0x0013, 0x06e7, 0x0003, 0x0013, 0x06eb, 0x06f7, 0x0701, - 0x0002, 0x0aa0, 0x0aa8, 0x0006, 0x0013, 0x0733, 0x0710, 0xffff, - 0xffff, 0x071b, 0x0727, 0x0006, 0x0013, 0x074e, 0x073e, 0xffff, - 0xffff, 0x074e, 0x075d, 0x0003, 0x0ab4, 0x0ab7, 0x0abc, 0x0001, - 0x0013, 0x062a, 0x0003, 0x0013, 0x06eb, 0x06f7, 0x0701, 0x0002, - 0x0abf, 0x0ac7, 0x0006, 0x0013, 0x0776, 0x076c, 0xffff, 0xffff, - 0x076c, 0x076c, 0x0006, 0x0013, 0x078d, 0x0780, 0xffff, 0xffff, - 0x0780, 0x0780, 0x0003, 0x0ad3, 0x0ad6, 0x0adb, 0x0001, 0x0013, - // Entry AF80 - AFBF - 0x062a, 0x0003, 0x0013, 0x06eb, 0x06f7, 0x0701, 0x0002, 0x0ade, - 0x0ae6, 0x0006, 0x0013, 0x0776, 0x076c, 0xffff, 0xffff, 0x076c, - 0x076c, 0x0006, 0x0013, 0x078d, 0x0780, 0xffff, 0xffff, 0x0780, - 0x0780, 0x0003, 0x0af2, 0x0af5, 0x0afa, 0x0001, 0x0013, 0x079a, - 0x0003, 0x0013, 0x07a6, 0x07ba, 0x07cb, 0x0002, 0x0afd, 0x0b05, - 0x0006, 0x0013, 0x07e2, 0x07e2, 0xffff, 0xffff, 0x07e2, 0x07e2, - 0x0006, 0x0013, 0x080c, 0x07f5, 0xffff, 0xffff, 0x080c, 0x0824, - 0x0003, 0x0b11, 0x0000, 0x0b14, 0x0001, 0x0013, 0x083a, 0x0002, - // Entry AFC0 - AFFF - 0x0b17, 0x0b1f, 0x0006, 0x0000, 0x1a99, 0x1a99, 0xffff, 0xffff, - 0x1a99, 0x1a99, 0x0006, 0x0000, 0x1aa0, 0x1aa0, 0xffff, 0xffff, - 0x1aa0, 0x1aa0, 0x0003, 0x0b2b, 0x0000, 0x0b2e, 0x0001, 0x0013, - 0x083a, 0x0002, 0x0b31, 0x0b39, 0x0006, 0x0000, 0x1a99, 0x1a99, - 0xffff, 0xffff, 0x1a99, 0x1a99, 0x0006, 0x0000, 0x1aa0, 0x1aa0, - 0xffff, 0xffff, 0x1aa0, 0x1aa0, 0x0003, 0x0b45, 0x0b48, 0x0b4d, - 0x0001, 0x0013, 0x083c, 0x0003, 0x0013, 0x0844, 0x0854, 0x0862, - 0x0002, 0x0b50, 0x0b58, 0x0006, 0x0013, 0x0894, 0x0875, 0xffff, - // Entry B000 - B03F - 0xffff, 0x0884, 0x0884, 0x0006, 0x0013, 0x08b9, 0x08a5, 0xffff, - 0xffff, 0x08b9, 0x08cc, 0x0003, 0x0b64, 0x0000, 0x0b67, 0x0001, - 0x0013, 0x08df, 0x0002, 0x0b6a, 0x0b72, 0x0006, 0x0013, 0x08e5, - 0x08e5, 0xffff, 0xffff, 0x08e5, 0x08e5, 0x0006, 0x0013, 0x08f2, - 0x08f2, 0xffff, 0xffff, 0x08f2, 0x08f2, 0x0003, 0x0b7e, 0x0000, - 0x0b81, 0x0001, 0x0013, 0x08df, 0x0002, 0x0b84, 0x0b8c, 0x0006, - 0x0013, 0x08e5, 0x08e5, 0xffff, 0xffff, 0x08e5, 0x08e5, 0x0006, - 0x0013, 0x08f2, 0x08f2, 0xffff, 0xffff, 0x08f2, 0x08f2, 0x0004, - // Entry B040 - B07F - 0x0b99, 0x0b9c, 0x0ba1, 0x0bb4, 0x0001, 0x0013, 0x0902, 0x0003, - 0x0013, 0x0909, 0x0918, 0x0925, 0x0002, 0x0ba4, 0x0bac, 0x0006, - 0x0013, 0x0961, 0x0937, 0xffff, 0xffff, 0x0945, 0x0953, 0x0006, - 0x0013, 0x0982, 0x0970, 0xffff, 0xffff, 0x0982, 0x0993, 0x0001, - 0x0013, 0x09a4, 0x0004, 0x0bbc, 0x0bbf, 0x0bc4, 0x0bd7, 0x0001, - 0x0013, 0x09b1, 0x0003, 0x0013, 0x09b7, 0x09c5, 0x09d1, 0x0002, - 0x0bc7, 0x0bcf, 0x0006, 0x0013, 0x09e2, 0x09e2, 0xffff, 0xffff, - 0x09e2, 0x09e2, 0x0006, 0x0013, 0x09ef, 0x09ef, 0xffff, 0xffff, - // Entry B080 - B0BF - 0x09ef, 0x09ef, 0x0001, 0x0013, 0x09ff, 0x0004, 0x0bdf, 0x0be2, - 0x0be7, 0x0bfa, 0x0001, 0x0013, 0x09b1, 0x0003, 0x0013, 0x09b7, - 0x09c5, 0x09d1, 0x0002, 0x0bea, 0x0bf2, 0x0006, 0x0013, 0x09e2, - 0x09e2, 0xffff, 0xffff, 0x09e2, 0x09e2, 0x0006, 0x0013, 0x09ef, - 0x09ef, 0xffff, 0xffff, 0x09ef, 0x09ef, 0x0001, 0x0013, 0x09ff, - 0x0003, 0x0c01, 0x0c04, 0x0c0b, 0x0001, 0x0013, 0x0a0b, 0x0005, - 0x0013, 0x0a1e, 0x0a25, 0x0a2a, 0x0a0f, 0x0a31, 0x0002, 0x0c0e, - 0x0c16, 0x0006, 0x0013, 0x0a5d, 0x0a3c, 0xffff, 0xffff, 0x0a47, - // Entry B0C0 - B0FF - 0x0a52, 0x0006, 0x0013, 0x0a78, 0x0a69, 0xffff, 0xffff, 0x0a78, - 0x0a86, 0x0003, 0x0c22, 0x0c25, 0x0c2c, 0x0001, 0x0013, 0x0a0b, - 0x0005, 0x0013, 0x0a1e, 0x0a25, 0x0a2a, 0x0a0f, 0x0a31, 0x0002, - 0x0c2f, 0x0c37, 0x0006, 0x0013, 0x0a5d, 0x0a3c, 0xffff, 0xffff, - 0x0a47, 0x0a52, 0x0006, 0x0013, 0x0a78, 0x0a69, 0xffff, 0xffff, - 0x0a78, 0x0a86, 0x0003, 0x0c43, 0x0c46, 0x0c4d, 0x0001, 0x0013, - 0x0a0b, 0x0005, 0x0013, 0x0a1e, 0x0a25, 0x0a2a, 0x0a0f, 0x0a31, - 0x0002, 0x0c50, 0x0c58, 0x0006, 0x0013, 0x0a5d, 0x0a3c, 0xffff, - // Entry B100 - B13F - 0xffff, 0x0a47, 0x0a52, 0x0006, 0x0013, 0x0a78, 0x0a69, 0xffff, - 0xffff, 0x0a78, 0x0a86, 0x0001, 0x0c62, 0x0001, 0x0013, 0x0a94, - 0x0003, 0x0000, 0x0c69, 0x0c6e, 0x0003, 0x0013, 0x0aa1, 0x0ab1, - 0x0abe, 0x0002, 0x0c71, 0x0c79, 0x0006, 0x0013, 0x0aef, 0x0ad1, - 0xffff, 0xffff, 0x0ae0, 0x0ae0, 0x0006, 0x0013, 0x0b12, 0x0aff, - 0xffff, 0xffff, 0x0b12, 0x0b26, 0x0003, 0x0000, 0x0c85, 0x0c8a, - 0x0003, 0x0013, 0x0aa1, 0x0ab1, 0x0abe, 0x0002, 0x0c8d, 0x0c95, - 0x0006, 0x0013, 0x0aef, 0x0ad1, 0xffff, 0xffff, 0x0ae0, 0x0ae0, - // Entry B140 - B17F - 0x0006, 0x0013, 0x0b12, 0x0aff, 0xffff, 0xffff, 0x0b12, 0x0b26, - 0x0003, 0x0000, 0x0ca1, 0x0ca6, 0x0003, 0x0013, 0x0aa1, 0x0ab1, - 0x0abe, 0x0002, 0x0ca9, 0x0cb1, 0x0006, 0x0013, 0x0aef, 0x0ad1, - 0xffff, 0xffff, 0x0ae0, 0x0ae0, 0x0006, 0x0013, 0x0b12, 0x0aff, - 0xffff, 0xffff, 0x0b12, 0x0b26, 0x0003, 0x0000, 0x0cbd, 0x0cc2, - 0x0003, 0x0013, 0x0b38, 0x0b4a, 0x0b59, 0x0002, 0x0cc5, 0x0ccd, - 0x0006, 0x0013, 0x0b6e, 0x0b6e, 0xffff, 0xffff, 0x0b6e, 0x0b6e, - 0x0006, 0x0013, 0x0b94, 0x0b7f, 0xffff, 0xffff, 0x0b94, 0x0baa, - // Entry B180 - B1BF - 0x0003, 0x0000, 0x0cd9, 0x0cde, 0x0003, 0x0013, 0x0b38, 0x0b4a, - 0x0b59, 0x0002, 0x0ce1, 0x0ce9, 0x0006, 0x0013, 0x0b6e, 0x0b6e, - 0xffff, 0xffff, 0x0b6e, 0x0b6e, 0x0006, 0x0013, 0x0b94, 0x0b7f, - 0xffff, 0xffff, 0x0b94, 0x0baa, 0x0003, 0x0000, 0x0cf5, 0x0cfa, - 0x0003, 0x0013, 0x0b38, 0x0b4a, 0x0b59, 0x0002, 0x0cfd, 0x0d05, - 0x0006, 0x0013, 0x0b6e, 0x0b6e, 0xffff, 0xffff, 0x0b6e, 0x0b6e, - 0x0006, 0x0013, 0x0b94, 0x0b7f, 0xffff, 0xffff, 0x0b94, 0x0baa, - 0x0003, 0x0000, 0x0d11, 0x0d16, 0x0003, 0x0013, 0x0bbe, 0x0bce, - // Entry B1C0 - B1FF - 0x0bdb, 0x0002, 0x0d19, 0x0d21, 0x0006, 0x0013, 0x0bee, 0x0bee, - 0xffff, 0xffff, 0x0bee, 0x0bee, 0x0006, 0x0013, 0x0c10, 0x0bfd, - 0xffff, 0xffff, 0x0c10, 0x0c24, 0x0003, 0x0000, 0x0d2d, 0x0d32, - 0x0003, 0x0013, 0x0bbe, 0x0bce, 0x0bdb, 0x0002, 0x0d35, 0x0d3d, - 0x0006, 0x0013, 0x0bee, 0x0bee, 0xffff, 0xffff, 0x0bee, 0x0bee, - 0x0006, 0x0013, 0x0c10, 0x0bfd, 0xffff, 0xffff, 0x0c10, 0x0c24, - 0x0003, 0x0000, 0x0d49, 0x0d4e, 0x0003, 0x0013, 0x0bbe, 0x0bce, - 0x0bdb, 0x0002, 0x0d51, 0x0d59, 0x0006, 0x0013, 0x0bee, 0x0bee, - // Entry B200 - B23F - 0xffff, 0xffff, 0x0bee, 0x0bee, 0x0006, 0x0013, 0x0c10, 0x0bfd, - 0xffff, 0xffff, 0x0c10, 0x0c24, 0x0003, 0x0000, 0x0d65, 0x0d6a, - 0x0003, 0x0013, 0x0c36, 0x0c46, 0x0c53, 0x0002, 0x0d6d, 0x0d75, - 0x0006, 0x0013, 0x0c84, 0x0c66, 0xffff, 0xffff, 0x0c75, 0x0c75, - 0x0006, 0x0013, 0x0ca5, 0x0c92, 0xffff, 0xffff, 0x0ca5, 0x0cb9, - 0x0003, 0x0000, 0x0d81, 0x0d86, 0x0003, 0x0013, 0x0c36, 0x0c46, - 0x0c53, 0x0002, 0x0d89, 0x0d91, 0x0006, 0x0013, 0x0c84, 0x0c66, - 0xffff, 0xffff, 0x0c75, 0x0c75, 0x0006, 0x0013, 0x0ca5, 0x0c92, - // Entry B240 - B27F - 0xffff, 0xffff, 0x0ca5, 0x0cb9, 0x0003, 0x0000, 0x0d9d, 0x0da2, - 0x0003, 0x0013, 0x0c36, 0x0c46, 0x0c53, 0x0002, 0x0da5, 0x0dad, - 0x0006, 0x0013, 0x0c84, 0x0c66, 0xffff, 0xffff, 0x0c75, 0x0c75, - 0x0006, 0x0013, 0x0ca5, 0x0c92, 0xffff, 0xffff, 0x0ca5, 0x0cb9, - 0x0003, 0x0000, 0x0db9, 0x0dbe, 0x0003, 0x0013, 0x0ccb, 0x0cdc, - 0x0ceb, 0x0002, 0x0dc1, 0x0dc9, 0x0006, 0x0013, 0x0d2f, 0x0cff, - 0xffff, 0xffff, 0x0d0f, 0x0d1f, 0x0006, 0x0013, 0x0d54, 0x0d40, - 0xffff, 0xffff, 0x0d54, 0x0d67, 0x0003, 0x0000, 0x0dd5, 0x0dda, - // Entry B280 - B2BF - 0x0003, 0x0013, 0x0ccb, 0x0cdc, 0x0ceb, 0x0002, 0x0ddd, 0x0de5, - 0x0006, 0x0013, 0x0d2f, 0x0cff, 0xffff, 0xffff, 0x0d0f, 0x0d1f, - 0x0006, 0x0013, 0x0d54, 0x0d40, 0xffff, 0xffff, 0x0d54, 0x0d67, - 0x0003, 0x0000, 0x0df1, 0x0df6, 0x0003, 0x0013, 0x0ccb, 0x0cdc, - 0x0ceb, 0x0002, 0x0df9, 0x0e01, 0x0006, 0x0013, 0x0d2f, 0x0cff, - 0xffff, 0xffff, 0x0d0f, 0x0d1f, 0x0006, 0x0013, 0x0d54, 0x0d40, - 0xffff, 0xffff, 0x0d54, 0x0d67, 0x0003, 0x0000, 0x0e0d, 0x0e12, - 0x0003, 0x0013, 0x0d7a, 0x0d89, 0x0d96, 0x0002, 0x0e15, 0x0e1d, - // Entry B2C0 - B2FF - 0x0006, 0x0013, 0x0dd2, 0x0da8, 0xffff, 0xffff, 0x0db6, 0x0dc4, - 0x0006, 0x0013, 0x0df3, 0x0de1, 0xffff, 0xffff, 0x0df3, 0x0e04, - 0x0003, 0x0000, 0x0e29, 0x0e2e, 0x0003, 0x0013, 0x0d7a, 0x0d89, - 0x0d96, 0x0002, 0x0e31, 0x0e39, 0x0006, 0x0013, 0x0dd2, 0x0da8, - 0xffff, 0xffff, 0x0db6, 0x0dc4, 0x0006, 0x0013, 0x0df3, 0x0de1, - 0xffff, 0xffff, 0x0df3, 0x0e04, 0x0003, 0x0000, 0x0e45, 0x0e4a, - 0x0003, 0x0013, 0x0d7a, 0x0d89, 0x0d96, 0x0002, 0x0e4d, 0x0e55, - 0x0006, 0x0013, 0x0dd2, 0x0da8, 0xffff, 0xffff, 0x0db6, 0x0dc4, - // Entry B300 - B33F - 0x0006, 0x0013, 0x0df3, 0x0de1, 0xffff, 0xffff, 0x0df3, 0x0e04, - 0x0003, 0x0000, 0x0e61, 0x0e66, 0x0003, 0x0013, 0x0e15, 0x0e24, - 0x0e30, 0x0002, 0x0e69, 0x0e71, 0x0006, 0x0013, 0x0e5e, 0x0e42, - 0xffff, 0xffff, 0x0e50, 0x0e50, 0x0006, 0x0013, 0x0e7d, 0x0e6b, - 0xffff, 0xffff, 0x0e7d, 0x0e90, 0x0003, 0x0000, 0x0e7d, 0x0e82, - 0x0003, 0x0013, 0x0e15, 0x0e24, 0x0e30, 0x0002, 0x0e85, 0x0e8d, - 0x0006, 0x0013, 0x0e5e, 0x0e42, 0xffff, 0xffff, 0x0e50, 0x0e50, - 0x0006, 0x0013, 0x0e7d, 0x0e6b, 0xffff, 0xffff, 0x0e7d, 0x0e90, - // Entry B340 - B37F - 0x0003, 0x0000, 0x0e99, 0x0e9e, 0x0003, 0x0013, 0x0e15, 0x0e24, - 0x0e30, 0x0002, 0x0ea1, 0x0ea9, 0x0006, 0x0013, 0x0e5e, 0x0e42, - 0xffff, 0xffff, 0x0e50, 0x0e50, 0x0006, 0x0013, 0x0e7d, 0x0e6b, - 0xffff, 0xffff, 0x0e7d, 0x0e90, 0x0001, 0x0eb3, 0x0001, 0x0013, - 0x0ea1, 0x0003, 0x0eba, 0x0ebd, 0x0ec1, 0x0001, 0x0013, 0x0eac, - 0x0002, 0x0013, 0xffff, 0x0eb3, 0x0002, 0x0ec4, 0x0ecc, 0x0006, - 0x0013, 0x0edb, 0x0ebf, 0xffff, 0xffff, 0x0ecd, 0x0ecd, 0x0006, - 0x0013, 0x0efa, 0x0ee8, 0xffff, 0xffff, 0x0efa, 0x0f0d, 0x0003, - // Entry B380 - B3BF - 0x0ed8, 0x0000, 0x0edb, 0x0001, 0x0000, 0x2143, 0x0002, 0x0ede, - 0x0ee6, 0x0006, 0x0013, 0x0f1e, 0x0f1e, 0xffff, 0xffff, 0x0f1e, - 0x0f1e, 0x0006, 0x0013, 0x0f27, 0x0f27, 0xffff, 0xffff, 0x0f27, - 0x0f27, 0x0003, 0x0ef2, 0x0000, 0x0ef5, 0x0001, 0x0000, 0x2143, - 0x0002, 0x0ef8, 0x0f00, 0x0006, 0x0013, 0x0f1e, 0x0f1e, 0xffff, - 0xffff, 0x0f1e, 0x0f1e, 0x0006, 0x0013, 0x0f27, 0x0f27, 0xffff, - 0xffff, 0x0f27, 0x0f27, 0x0003, 0x0f0c, 0x0f0f, 0x0f13, 0x0001, - 0x000d, 0x0bf5, 0x0002, 0x0013, 0xffff, 0x0f33, 0x0002, 0x0f16, - // Entry B3C0 - B3FF - 0x0f1e, 0x0006, 0x000d, 0x3116, 0x0c07, 0xffff, 0xffff, 0x3108, - 0x3108, 0x0006, 0x0013, 0x0f51, 0x0f3f, 0xffff, 0xffff, 0x0f51, - 0x0f64, 0x0003, 0x0f2a, 0x0000, 0x0f2d, 0x0001, 0x000b, 0x1250, - 0x0002, 0x0f30, 0x0f38, 0x0006, 0x0013, 0x0f75, 0x0f75, 0xffff, - 0xffff, 0x0f75, 0x0f75, 0x0006, 0x0013, 0x0f80, 0x0f80, 0xffff, - 0xffff, 0x0f80, 0x0f80, 0x0003, 0x0f44, 0x0000, 0x0f47, 0x0001, - 0x000b, 0x1250, 0x0002, 0x0f4a, 0x0f52, 0x0006, 0x0013, 0x0f75, - 0x0f75, 0xffff, 0xffff, 0x0f75, 0x0f75, 0x0006, 0x0013, 0x0f80, - // Entry B400 - B43F - 0x0f80, 0xffff, 0xffff, 0x0f80, 0x0f80, 0x0003, 0x0f5e, 0x0f61, - 0x0f65, 0x0001, 0x000d, 0x0c7f, 0x0002, 0x0013, 0xffff, 0x0f8e, - 0x0002, 0x0f68, 0x0f70, 0x0006, 0x000d, 0x3132, 0x0c8c, 0xffff, - 0xffff, 0x3123, 0x3123, 0x0006, 0x0013, 0x0fa7, 0x0f94, 0xffff, - 0xffff, 0x0fa7, 0x0fbb, 0x0003, 0x0f7c, 0x0f7f, 0x0f83, 0x0001, - 0x0000, 0x2002, 0x0002, 0x0013, 0xffff, 0x0f8e, 0x0002, 0x0f86, - 0x0f8e, 0x0006, 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0xffff, 0x0fcd, - 0x0fcd, 0x0006, 0x0013, 0x0fd6, 0x0fd6, 0xffff, 0xffff, 0x0fd6, - // Entry B440 - B47F - 0x0fd6, 0x0003, 0x0f9a, 0x0f9d, 0x0fa1, 0x0001, 0x0000, 0x2002, - 0x0002, 0x0013, 0xffff, 0x0f8e, 0x0002, 0x0fa4, 0x0fac, 0x0006, - 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0xffff, 0x0fcd, 0x0fcd, 0x0006, - 0x0013, 0x0fd6, 0x0fd6, 0xffff, 0xffff, 0x0fd6, 0x0fd6, 0x0001, - 0x0fb6, 0x0001, 0x0013, 0x0fe2, 0x0004, 0x0fbe, 0x0fc3, 0x0fc8, - 0x0fd7, 0x0003, 0x0013, 0x0ff2, 0x0ffe, 0x1005, 0x0003, 0x0013, - 0x1009, 0x101d, 0x1026, 0x0002, 0x0000, 0x0fcb, 0x0003, 0x0000, - 0x0fd2, 0x0fcf, 0x0001, 0x0013, 0x102f, 0x0003, 0x0013, 0xffff, - // Entry B480 - B4BF - 0x104c, 0x1061, 0x0002, 0x11be, 0x0fda, 0x0003, 0x0fde, 0x111e, - 0x107e, 0x009e, 0x0013, 0xffff, 0xffff, 0xffff, 0xffff, 0x1102, - 0x1154, 0x11d7, 0x121a, 0x1290, 0x1303, 0x136d, 0x13e0, 0x1423, - 0x14e0, 0x151d, 0x1566, 0x15c4, 0x1607, 0x164d, 0x16a8, 0x1721, - 0x177f, 0x17da, 0x1838, 0x1875, 0xffff, 0xffff, 0x18ea, 0xffff, - 0x1943, 0xffff, 0x19af, 0x19f5, 0x1a32, 0x1a72, 0xffff, 0xffff, - 0x1af5, 0x1b3e, 0x1b9c, 0xffff, 0xffff, 0xffff, 0x1c2d, 0xffff, - 0x1ca9, 0x1d09, 0xffff, 0x1d7f, 0x1dd4, 0x1e1d, 0xffff, 0xffff, - // Entry B4C0 - B4FF - 0xffff, 0xffff, 0x1ed8, 0xffff, 0xffff, 0x1f57, 0x1faf, 0xffff, - 0xffff, 0x2044, 0x209f, 0x20e8, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x21a6, 0x21e9, 0x2229, 0x226c, 0x22ac, 0xffff, - 0xffff, 0x2358, 0xffff, 0x23a8, 0xffff, 0xffff, 0x2431, 0xffff, - 0x24e3, 0xffff, 0xffff, 0xffff, 0xffff, 0x2577, 0xffff, 0x25d7, - 0x2644, 0x26a2, 0x26f4, 0xffff, 0xffff, 0xffff, 0x2766, 0x27b8, - 0x280a, 0xffff, 0xffff, 0x287e, 0x2917, 0x2963, 0x299a, 0xffff, - 0xffff, 0x2a10, 0x2a59, 0x2a9f, 0xffff, 0x2b03, 0xffff, 0xffff, - // Entry B500 - B53F - 0xffff, 0xffff, 0xffff, 0x2c10, 0x2c59, 0x2c99, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d63, 0xffff, 0xffff, - 0x2dce, 0xffff, 0x2e1d, 0xffff, 0x2e72, 0x2eb8, 0x2ef5, 0xffff, - 0x2f4a, 0x2f99, 0xffff, 0xffff, 0xffff, 0x3029, 0x3069, 0xffff, - 0xffff, 0x1074, 0x1197, 0x1460, 0x14a0, 0xffff, 0xffff, 0x248c, - 0x2b9e, 0x009e, 0x0013, 0x10b4, 0x10c5, 0x10da, 0x10f0, 0x1117, - 0x1164, 0x11e7, 0x123b, 0x12b0, 0x1320, 0x138d, 0x13f0, 0x1431, - 0x14ee, 0x152f, 0x157f, 0x15d4, 0x1618, 0x1665, 0x16ca, 0x173a, - // Entry B540 - B57F - 0x1797, 0x17f3, 0x1846, 0x188a, 0x18c7, 0x18d9, 0x18fc, 0x1933, - 0x1954, 0x199e, 0x19c0, 0x1a03, 0x1a41, 0x1a86, 0x1ac1, 0x1adb, - 0x1b07, 0x1b57, 0x1bac, 0x1bdf, 0x1bf5, 0x1c16, 0x1c4a, 0x1c97, - 0x1cbf, 0x1d20, 0x1d61, 0x1d95, 0x1de6, 0x1e2e, 0x1e63, 0x1e7d, - 0x1eb4, 0x1ec7, 0x1ee9, 0x1f1e, 0x1f3a, 0x1f6e, 0x1fc5, 0x2012, - 0x2035, 0x205c, 0x20b1, 0x20f6, 0x2125, 0x2133, 0x214a, 0x215d, - 0x2175, 0x218e, 0x21b6, 0x21f8, 0x2239, 0x227b, 0x22cc, 0x231f, - 0x233c, 0x2367, 0x2398, 0x23bb, 0x23f4, 0x2415, 0x2449, 0x24cc, - // Entry B580 - B5BF - 0x24f4, 0x2529, 0x2538, 0x2549, 0x255a, 0x2589, 0x25c0, 0x25f5, - 0x265d, 0x26b7, 0x2704, 0x2737, 0x2748, 0x2756, 0x277b, 0x27cd, - 0x2820, 0x285f, 0x286e, 0x28a3, 0x292a, 0x296f, 0x29ae, 0x29e9, - 0x29f8, 0x2a22, 0x2a6a, 0x2ab1, 0x2ae8, 0x2b1c, 0x2b61, 0x2b7a, - 0x2b89, 0x2be7, 0x2bf9, 0x2c22, 0x2c68, 0x2ca8, 0x2cd9, 0x2cea, - 0x2cfc, 0x2d1a, 0x2d2f, 0x2d40, 0x2d54, 0x2d75, 0x2dac, 0x2dbd, - 0x2ddd, 0x2e0e, 0x2e2e, 0x2e63, 0x2e83, 0x2ec6, 0x2f05, 0x2f38, - 0x2f5e, 0x2fac, 0x2fe5, 0x2ff9, 0x300b, 0x3038, 0x3080, 0x2004, - // Entry B5C0 - B5FF - 0x2900, 0x1083, 0x11a6, 0x146f, 0x14af, 0x1989, 0x2404, 0x249b, - 0x2bb0, 0x009e, 0x0013, 0xffff, 0xffff, 0xffff, 0xffff, 0x1138, - 0x1180, 0x1203, 0x1268, 0x12dc, 0x1349, 0x13b9, 0x140c, 0x144b, - 0x1508, 0x154d, 0x15a4, 0x15f0, 0x1635, 0x1689, 0x16f8, 0x175f, - 0x17bb, 0x1818, 0x1860, 0x18ab, 0xffff, 0xffff, 0x191a, 0xffff, - 0x1971, 0xffff, 0x19dd, 0x1a1d, 0x1a5c, 0x1aa6, 0xffff, 0xffff, - 0x1b25, 0x1b7c, 0x1bc8, 0xffff, 0xffff, 0xffff, 0x1c73, 0xffff, - 0x1ce1, 0x1d43, 0xffff, 0x1db7, 0x1e04, 0x1e4b, 0xffff, 0xffff, - // Entry B600 - B63F - 0xffff, 0xffff, 0x1f06, 0xffff, 0xffff, 0x1f91, 0x1fe7, 0xffff, - 0xffff, 0x2080, 0x20cf, 0x2110, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x21d2, 0x2213, 0x2255, 0x2296, 0x22f8, 0xffff, - 0xffff, 0x2382, 0xffff, 0x23da, 0xffff, 0xffff, 0x246d, 0xffff, - 0x2511, 0xffff, 0xffff, 0xffff, 0xffff, 0x25a7, 0xffff, 0x261f, - 0x2682, 0x26d8, 0x2720, 0xffff, 0xffff, 0xffff, 0x279c, 0x27ee, - 0x2842, 0xffff, 0xffff, 0x28d4, 0x2949, 0x2987, 0x29ce, 0xffff, - 0xffff, 0x2a40, 0x2a87, 0x2acf, 0xffff, 0x2b41, 0xffff, 0xffff, - // Entry B640 - B67F - 0xffff, 0xffff, 0xffff, 0x2c40, 0x2c83, 0x2cc3, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d93, 0xffff, 0xffff, - 0x2df8, 0xffff, 0x2e4b, 0xffff, 0x2ea0, 0x2ee0, 0x2f21, 0xffff, - 0x2f7e, 0x2fcb, 0xffff, 0xffff, 0xffff, 0x3053, 0x30a3, 0xffff, - 0xffff, 0x109e, 0x11c1, 0x148a, 0x14ca, 0xffff, 0xffff, 0x24b6, - 0x2bce, 0x0003, 0x11c2, 0x1222, 0x11f2, 0x002e, 0x0013, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry B680 - B6BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1cfe, 0x002e, 0x0013, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry B6C0 - B6FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1cfe, 0x002e, 0x0013, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1d03, 0x0003, 0x0004, 0x01b2, - // Entry B700 - B73F - 0x0285, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, - 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, - 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, 0x002f, 0x002c, - 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, - 0x00fd, 0x0132, 0x016a, 0x017f, 0x0190, 0x01a1, 0x0002, 0x0044, - // Entry B740 - B77F - 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0014, 0xffff, - 0x0000, 0x000c, 0x0016, 0x0020, 0x002c, 0x0034, 0x0041, 0x004e, - 0x005c, 0x0066, 0x0070, 0x007a, 0x000d, 0x0014, 0xffff, 0x0084, - 0x0089, 0x008c, 0x008f, 0x008c, 0x0084, 0x0084, 0x008f, 0x0094, - 0x0097, 0x009c, 0x009f, 0x000d, 0x0014, 0xffff, 0x00a2, 0x00ba, - 0x00d0, 0x00dd, 0x00f2, 0x00fd, 0x010d, 0x011d, 0x0131, 0x0148, - 0x015d, 0x0170, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0014, - 0xffff, 0x0000, 0x000c, 0x0016, 0x0020, 0x002c, 0x0034, 0x0041, - // Entry B780 - B7BF - 0x004e, 0x005c, 0x0066, 0x0070, 0x007a, 0x000d, 0x0014, 0xffff, - 0x0084, 0x0089, 0x008c, 0x008f, 0x008c, 0x0084, 0x0084, 0x008f, - 0x0094, 0x0097, 0x009c, 0x009f, 0x000d, 0x0014, 0xffff, 0x0185, - 0x019d, 0x01b3, 0x01c0, 0x01d5, 0x01e0, 0x01f0, 0x0200, 0x0214, - 0x022b, 0x0240, 0x0253, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, - 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0014, 0x0268, 0x0274, - 0x027e, 0x028a, 0x0294, 0x029e, 0x02a8, 0x0007, 0x0014, 0x009c, - 0x02b3, 0x02b6, 0x0094, 0x02b9, 0x02b3, 0x0094, 0x0007, 0x0014, - // Entry B7C0 - B7FF - 0x0268, 0x0274, 0x027e, 0x028a, 0x0294, 0x029e, 0x02a8, 0x0007, - 0x0014, 0x02bc, 0x02cb, 0x02e6, 0x02f9, 0x0306, 0x031d, 0x032c, - 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0014, - 0x0268, 0x0274, 0x027e, 0x028a, 0x0294, 0x029e, 0x02a8, 0x0007, - 0x0014, 0x009c, 0x02b3, 0x02b6, 0x0094, 0x02b9, 0x02b3, 0x0094, - 0x0007, 0x0014, 0x0268, 0x0274, 0x027e, 0x028a, 0x0294, 0x029e, - 0x02a8, 0x0007, 0x0014, 0x02bc, 0x02cb, 0x02e6, 0x02f9, 0x0306, - 0x031d, 0x032c, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, - // Entry B800 - B83F - 0x0112, 0x0005, 0x0014, 0xffff, 0x033e, 0x0350, 0x0362, 0x0374, - 0x0005, 0x0014, 0xffff, 0x0386, 0x038b, 0x0390, 0x0395, 0x0005, - 0x0014, 0xffff, 0x039a, 0x03b5, 0x03d0, 0x03eb, 0x0003, 0x011d, - 0x0124, 0x012b, 0x0005, 0x0014, 0xffff, 0x0386, 0x038b, 0x0390, - 0x0395, 0x0005, 0x0014, 0xffff, 0x0386, 0x038b, 0x0390, 0x0395, - 0x0005, 0x0014, 0xffff, 0x039a, 0x03b5, 0x03d0, 0x03eb, 0x0002, - 0x0135, 0x014b, 0x0003, 0x0139, 0x0000, 0x0142, 0x0002, 0x013c, - 0x013f, 0x0001, 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, 0x0002, - // Entry B840 - B87F - 0x0145, 0x0148, 0x0001, 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, - 0x0003, 0x014f, 0x0158, 0x0161, 0x0002, 0x0152, 0x0155, 0x0001, - 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, 0x0002, 0x015b, 0x015e, - 0x0001, 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, 0x0002, 0x0164, - 0x0167, 0x0001, 0x0014, 0x0406, 0x0001, 0x0014, 0x040b, 0x0003, - 0x0174, 0x0000, 0x016e, 0x0001, 0x0170, 0x0002, 0x0014, 0x0410, - 0x0426, 0x0002, 0x0177, 0x017b, 0x0002, 0x0014, 0x0410, 0x0434, - 0x0002, 0x0014, 0xffff, 0x043f, 0x0004, 0x018d, 0x0187, 0x0184, - // Entry B880 - B8BF - 0x018a, 0x0001, 0x0014, 0x044b, 0x0001, 0x0000, 0x050b, 0x0001, - 0x0000, 0x0514, 0x0001, 0x0014, 0x0461, 0x0004, 0x019e, 0x0198, - 0x0195, 0x019b, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x01af, - 0x01a9, 0x01a6, 0x01ac, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, - 0x01f3, 0x0000, 0x0000, 0x01f8, 0x01fd, 0x0202, 0x0207, 0x020c, - 0x0211, 0x0216, 0x021b, 0x0220, 0x0225, 0x022a, 0x022f, 0x0000, - // Entry B8C0 - B8FF - 0x0000, 0x0000, 0x0234, 0x023f, 0x0244, 0x0000, 0x0000, 0x0000, - 0x0249, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x024e, 0x0000, 0x0253, 0x0258, - 0x025d, 0x0262, 0x0267, 0x026c, 0x0271, 0x0276, 0x027b, 0x0280, - 0x0001, 0x01f5, 0x0001, 0x0014, 0x0469, 0x0001, 0x01fa, 0x0001, - 0x0014, 0x0474, 0x0001, 0x01ff, 0x0001, 0x0014, 0x047f, 0x0001, - // Entry B900 - B93F - 0x0204, 0x0001, 0x0014, 0x047f, 0x0001, 0x0209, 0x0001, 0x0014, - 0x0483, 0x0001, 0x020e, 0x0001, 0x0014, 0x0496, 0x0001, 0x0213, - 0x0001, 0x0014, 0x0496, 0x0001, 0x0218, 0x0001, 0x0014, 0x04a0, - 0x0001, 0x021d, 0x0001, 0x0014, 0x04af, 0x0001, 0x0222, 0x0001, - 0x0014, 0x04af, 0x0001, 0x0227, 0x0001, 0x0014, 0x04bb, 0x0001, - 0x022c, 0x0001, 0x0014, 0x04cc, 0x0001, 0x0231, 0x0001, 0x0014, - 0x04cc, 0x0002, 0x0237, 0x023a, 0x0001, 0x0014, 0x04d4, 0x0003, - 0x0014, 0x04df, 0x04ec, 0x04f9, 0x0001, 0x0241, 0x0001, 0x0014, - // Entry B940 - B97F - 0x050b, 0x0001, 0x0246, 0x0001, 0x0014, 0x050b, 0x0001, 0x024b, - 0x0001, 0x0014, 0x0515, 0x0001, 0x0250, 0x0001, 0x0014, 0x0531, - 0x0001, 0x0255, 0x0001, 0x0014, 0x053b, 0x0001, 0x025a, 0x0001, - 0x0014, 0x0546, 0x0001, 0x025f, 0x0001, 0x0014, 0x0546, 0x0001, - 0x0264, 0x0001, 0x0014, 0x0550, 0x0001, 0x0269, 0x0001, 0x0014, - 0x0560, 0x0001, 0x026e, 0x0001, 0x0014, 0x0560, 0x0001, 0x0273, - 0x0001, 0x0014, 0x056a, 0x0001, 0x0278, 0x0001, 0x0014, 0x057c, - 0x0001, 0x027d, 0x0001, 0x0014, 0x057c, 0x0001, 0x0282, 0x0001, - // Entry B980 - B9BF - 0x0014, 0x0586, 0x0004, 0x028a, 0x028f, 0x0000, 0x0294, 0x0003, - 0x0000, 0x1dc7, 0x2273, 0x227a, 0x0003, 0x0014, 0x05a6, 0x05b9, - 0x05db, 0x0002, 0x0000, 0x0297, 0x0003, 0x029b, 0x03c7, 0x0331, - 0x0094, 0x0014, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x05fd, 0x06b7, 0x077d, 0x0852, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x08ee, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry B9C0 - B9FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0990, - 0x0a44, 0xffff, 0x0b45, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0c37, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0d1a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0dc3, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0e53, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry BA00 - BA3F - 0xffff, 0xffff, 0xffff, 0x0edd, 0x0f79, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0ff1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x107e, - 0x1120, 0xffff, 0xffff, 0xffff, 0x11bc, 0x1246, 0x0094, 0x0014, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0631, - 0x06ef, 0x07ba, 0x087c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry BA40 - BA7F - 0xffff, 0x091a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x09c2, 0x0a7a, 0x0b04, - 0x0b79, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0bff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0c5c, 0xffff, 0xffff, 0xffff, 0x0cc4, 0x0cf0, 0xffff, 0xffff, - // Entry BA80 - BABF - 0x0d42, 0x0db0, 0xffff, 0xffff, 0xffff, 0x0de9, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0e77, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0f07, 0x0f97, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x10aa, 0x114a, 0xffff, - // Entry BAC0 - BAFF - 0xffff, 0xffff, 0x11e0, 0x1279, 0x0094, 0x0014, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0674, 0x0736, 0x0806, - 0x08b5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0955, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0a03, 0x0abf, 0xffff, 0x0bbc, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry BB00 - BB3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c90, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d79, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0e1e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0eaa, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0f40, - 0x0fc4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x104a, 0xffff, - // Entry BB40 - BB7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x10e5, 0x1183, 0xffff, 0xffff, 0xffff, - 0x1213, 0x12bb, 0x0003, 0x0004, 0x01c1, 0x070c, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, - 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x0625, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, - // Entry BB80 - BBBF - 0x04f7, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0014, - 0x12fd, 0x0001, 0x0014, 0x12fd, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0173, - 0x018e, 0x019f, 0x01b0, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, - 0x0057, 0x0066, 0x000d, 0x0014, 0xffff, 0x1308, 0x130c, 0x1312, - 0x1316, 0x131d, 0x1321, 0x1325, 0x132b, 0x1330, 0x1335, 0x1339, - 0x133e, 0x000d, 0x0000, 0xffff, 0x2055, 0x227e, 0x223a, 0x214e, - 0x223a, 0x223a, 0x2281, 0x21ce, 0x223a, 0x19c7, 0x04dd, 0x2283, - // Entry BBC0 - BBFF - 0x000d, 0x0014, 0xffff, 0x1343, 0x134a, 0x1353, 0x1316, 0x131d, - 0x135a, 0x1362, 0x132b, 0x1330, 0x136d, 0x1374, 0x137d, 0x0003, - 0x0079, 0x0088, 0x0097, 0x000d, 0x0014, 0xffff, 0x1308, 0x1385, - 0x1312, 0x1389, 0x131d, 0x1321, 0x138d, 0x132b, 0x1330, 0x1335, - 0x1339, 0x133e, 0x000d, 0x0000, 0xffff, 0x2055, 0x227e, 0x223a, - 0x214e, 0x223a, 0x223a, 0x2281, 0x21ce, 0x223a, 0x19c7, 0x04dd, - 0x2283, 0x000d, 0x0014, 0xffff, 0x1343, 0x134a, 0x1353, 0x1316, - 0x131d, 0x135a, 0x1362, 0x132b, 0x1330, 0x136d, 0x1374, 0x137d, - // Entry BC00 - BC3F - 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, - 0x00c1, 0x0007, 0x000b, 0x09c9, 0x272c, 0x2731, 0x2735, 0x2739, - 0x273d, 0x2742, 0x0007, 0x0000, 0x21d0, 0x2286, 0x223a, 0x223a, - 0x2055, 0x2281, 0x21d0, 0x0007, 0x000b, 0x09ea, 0x2746, 0x2749, - 0x274c, 0x274f, 0x2752, 0x09f9, 0x0007, 0x0014, 0x1391, 0x139a, - 0x13a4, 0x13b0, 0x13bd, 0x13c6, 0x13d2, 0x0005, 0x00d9, 0x00e2, - 0x00f4, 0x0000, 0x00eb, 0x0007, 0x000b, 0x09c9, 0x272c, 0x2731, - 0x2735, 0x2739, 0x2755, 0x2742, 0x0007, 0x0000, 0x21d0, 0x2289, - // Entry BC40 - BC7F - 0x223a, 0x223a, 0x2055, 0x2281, 0x21d0, 0x0007, 0x000b, 0x09ea, - 0x2759, 0x2749, 0x274c, 0x274f, 0x2752, 0x09f9, 0x0007, 0x0014, - 0x1391, 0x139a, 0x13a4, 0x13b0, 0x13bd, 0x13c6, 0x13d2, 0x0002, - 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0014, - 0xffff, 0x13de, 0x13e2, 0x13e6, 0x13ea, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0014, 0xffff, 0x13ee, - 0x13fb, 0x1408, 0x1416, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, - 0x0014, 0xffff, 0x13de, 0x13e2, 0x13e6, 0x13ea, 0x0005, 0x0000, - // Entry BC80 - BCBF - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0014, 0xffff, - 0x13ee, 0x13fb, 0x1408, 0x1416, 0x0002, 0x0135, 0x0154, 0x0003, - 0x0139, 0x0142, 0x014b, 0x0002, 0x013c, 0x013f, 0x0001, 0x0014, - 0x1424, 0x0001, 0x0014, 0x1427, 0x0002, 0x0145, 0x0148, 0x0001, - 0x0000, 0x2145, 0x0001, 0x0000, 0x2143, 0x0002, 0x014e, 0x0151, - 0x0001, 0x0014, 0x1424, 0x0001, 0x0014, 0x1427, 0x0003, 0x0158, - 0x0161, 0x016a, 0x0002, 0x015b, 0x015e, 0x0001, 0x0014, 0x1424, - 0x0001, 0x0014, 0x1427, 0x0002, 0x0164, 0x0167, 0x0001, 0x0014, - // Entry BCC0 - BCFF - 0x1424, 0x0001, 0x0014, 0x1427, 0x0002, 0x016d, 0x0170, 0x0001, - 0x0014, 0x1424, 0x0001, 0x0014, 0x1427, 0x0003, 0x0182, 0x0188, - 0x0177, 0x0002, 0x017a, 0x017e, 0x0002, 0x0014, 0x142a, 0x1449, - 0x0002, 0x0014, 0x1434, 0x1453, 0x0001, 0x0184, 0x0002, 0x0014, - 0x1464, 0x1467, 0x0001, 0x018a, 0x0002, 0x0014, 0x146a, 0x146c, - 0x0004, 0x019c, 0x0196, 0x0193, 0x0199, 0x0001, 0x0005, 0x0773, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0014, - 0x146e, 0x0004, 0x01ad, 0x01a7, 0x01a4, 0x01aa, 0x0001, 0x0000, - // Entry BD00 - BD3F - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x01be, 0x01b8, 0x01b5, 0x01bb, 0x0001, - 0x0014, 0x1477, 0x0001, 0x0014, 0x1477, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0040, 0x0202, 0x0000, 0x0000, 0x0207, - 0x0226, 0x0240, 0x025a, 0x0279, 0x0293, 0x02ad, 0x02cc, 0x02e6, - 0x0300, 0x0323, 0x0341, 0x0000, 0x0000, 0x0000, 0x035f, 0x0380, - 0x03a1, 0x0000, 0x0000, 0x0000, 0x03bb, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x03c0, 0x03dc, 0x03f8, 0x0414, 0x0430, 0x044c, - // Entry BD40 - BD7F - 0x0468, 0x0484, 0x04a0, 0x04bc, 0x04d8, 0x04f4, 0x0510, 0x052c, - 0x0548, 0x0564, 0x0580, 0x059c, 0x05b8, 0x05d4, 0x05f0, 0x0000, - 0x060c, 0x0000, 0x0611, 0x062f, 0x0649, 0x0663, 0x0681, 0x069b, - 0x06b5, 0x06d3, 0x06ed, 0x0707, 0x0001, 0x0204, 0x0001, 0x0014, - 0x1484, 0x0003, 0x020b, 0x020e, 0x0213, 0x0001, 0x0014, 0x1488, - 0x0003, 0x0014, 0x1491, 0x1499, 0x149f, 0x0002, 0x0216, 0x021e, - 0x0006, 0x0014, 0x14ae, 0x14c0, 0x14ae, 0x14cf, 0x14e1, 0x14e1, - 0x0006, 0x0014, 0x14f3, 0x150c, 0x14f3, 0x151c, 0x152f, 0x152f, - // Entry BD80 - BDBF - 0x0003, 0x022a, 0x0000, 0x022d, 0x0001, 0x000b, 0x0b8f, 0x0002, - 0x0230, 0x0238, 0x0006, 0x0014, 0x14ae, 0x14c0, 0x14ae, 0x14cf, - 0x14e1, 0x14e1, 0x0006, 0x0014, 0x14f3, 0x150c, 0x14f3, 0x151c, - 0x152f, 0x152f, 0x0003, 0x0244, 0x0000, 0x0247, 0x0001, 0x000b, - 0x0b8f, 0x0002, 0x024a, 0x0252, 0x0006, 0x0014, 0x14ae, 0x14c0, - 0x14ae, 0x14cf, 0x14e1, 0x14e1, 0x0006, 0x0014, 0x14f3, 0x150c, - 0x14f3, 0x151c, 0x152f, 0x152f, 0x0003, 0x025e, 0x0261, 0x0266, - 0x0001, 0x0014, 0x1542, 0x0003, 0x0014, 0x154b, 0x1559, 0x1566, - // Entry BDC0 - BDFF - 0x0002, 0x0269, 0x0271, 0x0006, 0x0014, 0x158b, 0x158b, 0x1575, - 0x158b, 0x158b, 0x158b, 0x0006, 0x0014, 0x159e, 0x15b5, 0x159e, - 0x15b5, 0x15b5, 0x15b5, 0x0003, 0x027d, 0x0000, 0x0280, 0x0001, - 0x0014, 0x1542, 0x0002, 0x0283, 0x028b, 0x0006, 0x0014, 0x1575, - 0x1575, 0x1575, 0x1575, 0x1575, 0x1575, 0x0006, 0x0014, 0x159e, - 0x15b5, 0x159e, 0x15b5, 0x15b5, 0x15b5, 0x0003, 0x0297, 0x0000, - 0x029a, 0x0001, 0x0014, 0x1542, 0x0002, 0x029d, 0x02a5, 0x0006, - 0x0014, 0x1575, 0x158b, 0x1575, 0x158b, 0x158b, 0x158b, 0x0006, - // Entry BE00 - BE3F - 0x0014, 0x159e, 0x15b5, 0x159e, 0x15b5, 0x15b5, 0x15b5, 0x0003, - 0x02b1, 0x02b4, 0x02b9, 0x0001, 0x0014, 0x15c9, 0x0003, 0x0014, - 0x15cd, 0x15da, 0x15e4, 0x0002, 0x02bc, 0x02c4, 0x0006, 0x0014, - 0x15ee, 0x15fc, 0x15ee, 0x1606, 0x15ee, 0x15ee, 0x0006, 0x0014, - 0x1613, 0x1613, 0x1613, 0x1622, 0x1613, 0x1613, 0x0003, 0x02d0, - 0x0000, 0x02d3, 0x0001, 0x0014, 0x15c9, 0x0002, 0x02d6, 0x02de, - 0x0006, 0x0014, 0x15ee, 0x15fc, 0x15ee, 0x1606, 0x15ee, 0x15ee, - 0x0006, 0x0014, 0x1613, 0x1613, 0x1613, 0x1631, 0x1613, 0x1613, - // Entry BE40 - BE7F - 0x0003, 0x02ea, 0x0000, 0x02ed, 0x0001, 0x0014, 0x15c9, 0x0002, - 0x02f0, 0x02f8, 0x0006, 0x0014, 0x15ee, 0x15fc, 0x15ee, 0x1606, - 0x15ee, 0x15ee, 0x0006, 0x0014, 0x1613, 0x1613, 0x1613, 0x1622, - 0x1613, 0x1613, 0x0004, 0x0305, 0x0308, 0x030d, 0x0320, 0x0001, - 0x0014, 0x163f, 0x0003, 0x0014, 0x1647, 0x1659, 0x1668, 0x0002, - 0x0310, 0x0318, 0x0006, 0x0014, 0x1676, 0x1688, 0x1676, 0x1696, - 0x1676, 0x1676, 0x0006, 0x0014, 0x16a6, 0x16a6, 0x16a6, 0x16a6, - 0x16a6, 0x16a6, 0x0001, 0x0014, 0x16b9, 0x0004, 0x0328, 0x0000, - // Entry BE80 - BEBF - 0x032b, 0x033e, 0x0001, 0x0014, 0x163f, 0x0002, 0x032e, 0x0336, - 0x0006, 0x0014, 0x1676, 0x1688, 0x1676, 0x1696, 0x1676, 0x1676, - 0x0006, 0x0014, 0x16a6, 0x16a6, 0x16a6, 0x16c5, 0x16a6, 0x16a6, - 0x0001, 0x0014, 0x16b9, 0x0004, 0x0346, 0x0000, 0x0349, 0x035c, - 0x0001, 0x0014, 0x163f, 0x0002, 0x034c, 0x0354, 0x0006, 0x0014, - 0x1676, 0x1688, 0x1676, 0x1696, 0x1676, 0x1676, 0x0006, 0x0014, - 0x16a6, 0x16a6, 0x16a6, 0x16c5, 0x16a6, 0x16a6, 0x0001, 0x0014, - 0x16b9, 0x0003, 0x0363, 0x0366, 0x036d, 0x0001, 0x0014, 0x16d6, - // Entry BEC0 - BEFF - 0x0005, 0x0014, 0x16e2, 0x16e7, 0x16ee, 0x16db, 0x16f4, 0x0002, - 0x0370, 0x0378, 0x0006, 0x0014, 0x16fd, 0x170f, 0x16fd, 0x171d, - 0x172c, 0x16fd, 0x0006, 0x0014, 0x173a, 0x173a, 0x173a, 0x174d, - 0x173a, 0x173a, 0x0003, 0x0384, 0x0387, 0x038e, 0x0001, 0x0014, - 0x16d6, 0x0005, 0x0014, 0x16e2, 0x16e7, 0x16ee, 0x16db, 0x16f4, - 0x0002, 0x0391, 0x0399, 0x0006, 0x0014, 0x16fd, 0x170f, 0x16fd, - 0x171d, 0x172c, 0x16fd, 0x0006, 0x0014, 0x173a, 0x173a, 0x173a, - 0x174d, 0x173a, 0x173a, 0x0003, 0x03a5, 0x0000, 0x03a8, 0x0001, - // Entry BF00 - BF3F - 0x0014, 0x16d6, 0x0002, 0x03ab, 0x03b3, 0x0006, 0x0014, 0x16fd, - 0x170f, 0x16fd, 0x171d, 0x172c, 0x16fd, 0x0006, 0x0014, 0x173a, - 0x173a, 0x173a, 0x174d, 0x173a, 0x173a, 0x0001, 0x03bd, 0x0001, - 0x0014, 0x1761, 0x0003, 0x0000, 0x03c4, 0x03c9, 0x0003, 0x0014, - 0x1774, 0x1786, 0x1793, 0x0002, 0x03cc, 0x03d4, 0x0006, 0x0014, - 0x17a2, 0x17a2, 0x17a2, 0x17b5, 0x17a2, 0x17a2, 0x0006, 0x0014, - 0x17c9, 0x17c9, 0x17c9, 0x17dd, 0x17c9, 0x17c9, 0x0003, 0x0000, - 0x03e0, 0x03e5, 0x0003, 0x0014, 0x17f2, 0x17ff, 0x1807, 0x0002, - // Entry BF40 - BF7F - 0x03e8, 0x03f0, 0x0006, 0x0014, 0x17a2, 0x17a2, 0x17a2, 0x17b5, - 0x17a2, 0x17a2, 0x0006, 0x0014, 0x17c9, 0x17c9, 0x17c9, 0x17dd, - 0x17c9, 0x17c9, 0x0003, 0x0000, 0x03fc, 0x0401, 0x0003, 0x0014, - 0x17f2, 0x17ff, 0x1807, 0x0002, 0x0404, 0x040c, 0x0006, 0x0014, - 0x17a2, 0x17a2, 0x17a2, 0x17b5, 0x17a2, 0x17a2, 0x0006, 0x0014, - 0x17c9, 0x17c9, 0x17c9, 0x17dd, 0x17c9, 0x17c9, 0x0003, 0x0000, - 0x0418, 0x041d, 0x0003, 0x0014, 0x1811, 0x1824, 0x1832, 0x0002, - 0x0420, 0x0428, 0x0006, 0x0014, 0x1842, 0x1842, 0x1842, 0x1856, - // Entry BF80 - BFBF - 0x1842, 0x1842, 0x0006, 0x0014, 0x186b, 0x186b, 0x186b, 0x1880, - 0x186b, 0x186b, 0x0003, 0x0000, 0x0434, 0x0439, 0x0003, 0x0014, - 0x1896, 0x18a4, 0x18ad, 0x0002, 0x043c, 0x0444, 0x0006, 0x0014, - 0x1842, 0x1842, 0x1842, 0x1856, 0x1842, 0x1842, 0x0006, 0x0014, - 0x186b, 0x186b, 0x186b, 0x186b, 0x1880, 0x186b, 0x0003, 0x0000, - 0x0450, 0x0455, 0x0003, 0x0014, 0x1896, 0x18a4, 0x18ad, 0x0002, - 0x0458, 0x0460, 0x0006, 0x0014, 0x1842, 0x1842, 0x1842, 0x1856, - 0x1842, 0x1842, 0x0006, 0x0014, 0x186b, 0x186b, 0x186b, 0x1880, - // Entry BFC0 - BFFF - 0x186b, 0x186b, 0x0003, 0x0000, 0x046c, 0x0471, 0x0003, 0x0014, - 0x18b8, 0x18cd, 0x18dd, 0x0002, 0x0474, 0x047c, 0x0006, 0x0014, - 0x18ef, 0x18ef, 0x18ef, 0x1905, 0x18ef, 0x18ef, 0x0006, 0x0014, - 0x191c, 0x191c, 0x191c, 0x1933, 0x191c, 0x191c, 0x0003, 0x0000, - 0x0488, 0x048d, 0x0003, 0x0014, 0x194b, 0x195b, 0x1966, 0x0002, - 0x0490, 0x0498, 0x0006, 0x0014, 0x18ef, 0x18ef, 0x18ef, 0x1905, - 0x18ef, 0x18ef, 0x0006, 0x0014, 0x191c, 0x191c, 0x191c, 0x1933, - 0x191c, 0x191c, 0x0003, 0x0000, 0x04a4, 0x04a9, 0x0003, 0x0014, - // Entry C000 - C03F - 0x1973, 0x1981, 0x198a, 0x0002, 0x04ac, 0x04b4, 0x0006, 0x0014, - 0x18ef, 0x18ef, 0x18ef, 0x1905, 0x18ef, 0x18ef, 0x0006, 0x0014, - 0x191c, 0x191c, 0x191c, 0x1933, 0x191c, 0x191c, 0x0003, 0x0000, - 0x04c0, 0x04c5, 0x0003, 0x0014, 0x1995, 0x19ab, 0x19bc, 0x0002, - 0x04c8, 0x04d0, 0x0006, 0x0014, 0x19cf, 0x19cf, 0x19cf, 0x19e6, - 0x19cf, 0x19cf, 0x0006, 0x0014, 0x19fe, 0x19fe, 0x19fe, 0x1a16, - 0x19fe, 0x19fe, 0x0003, 0x0000, 0x04dc, 0x04e1, 0x0003, 0x0014, - 0x1a2f, 0x1a40, 0x1a4c, 0x0002, 0x04e4, 0x04ec, 0x0006, 0x0014, - // Entry C040 - C07F - 0x19cf, 0x19cf, 0x19cf, 0x19e6, 0x19cf, 0x19cf, 0x0006, 0x0014, - 0x19fe, 0x19fe, 0x19fe, 0x1a16, 0x19fe, 0x19fe, 0x0003, 0x0000, - 0x04f8, 0x04fd, 0x0003, 0x0014, 0x1a5a, 0x1a6a, 0x1a75, 0x0002, - 0x0500, 0x0508, 0x0006, 0x0014, 0x19cf, 0x19cf, 0x19cf, 0x19e6, - 0x19cf, 0x19cf, 0x0006, 0x0014, 0x19fe, 0x19fe, 0x19fe, 0x1a16, - 0x19fe, 0x19fe, 0x0003, 0x0000, 0x0514, 0x0519, 0x0003, 0x0014, - 0x1a82, 0x1a94, 0x1aa1, 0x0002, 0x051c, 0x0524, 0x0006, 0x0014, - 0x1ab0, 0x1ab0, 0x1ab0, 0x1ac3, 0x1ab0, 0x1ab0, 0x0006, 0x0014, - // Entry C080 - C0BF - 0x1ad7, 0x1ad7, 0x1ad7, 0x1aeb, 0x1ad7, 0x1ad7, 0x0003, 0x0000, - 0x0530, 0x0535, 0x0003, 0x0014, 0x1b00, 0x1b0d, 0x1b15, 0x0002, - 0x0538, 0x0540, 0x0006, 0x0014, 0x1ab0, 0x1ab0, 0x1ab0, 0x1b1f, - 0x1ab0, 0x1ab0, 0x0006, 0x0014, 0x1ad7, 0x1ad7, 0x1ad7, 0x1aeb, - 0x1ad7, 0x1ad7, 0x0003, 0x0000, 0x054c, 0x0551, 0x0003, 0x0014, - 0x1b00, 0x1b0d, 0x1b15, 0x0002, 0x0554, 0x055c, 0x0006, 0x0014, - 0x1ab0, 0x1ab0, 0x1ab0, 0x1ac3, 0x1ab0, 0x1ab0, 0x0006, 0x0014, - 0x1ad7, 0x1ad7, 0x1ad7, 0x1aeb, 0x1ad7, 0x1ad7, 0x0003, 0x0000, - // Entry C0C0 - C0FF - 0x0568, 0x056d, 0x0003, 0x0014, 0x1b32, 0x1b47, 0x1b57, 0x0002, - 0x0570, 0x0578, 0x0006, 0x0014, 0x1b69, 0x1b69, 0x1b69, 0x1b7f, - 0x1b69, 0x1b69, 0x0006, 0x0014, 0x1b96, 0x1b96, 0x1b96, 0x1bad, - 0x1b96, 0x1b96, 0x0003, 0x0000, 0x0584, 0x0589, 0x0003, 0x0014, - 0x1bc5, 0x1bd5, 0x1be0, 0x0002, 0x058c, 0x0594, 0x0006, 0x0014, - 0x1b69, 0x1b69, 0x1b69, 0x1b69, 0x1b69, 0x1b69, 0x0006, 0x0014, - 0x1b96, 0x1b96, 0x1b96, 0x1bad, 0x1b96, 0x1b96, 0x0003, 0x0000, - 0x05a0, 0x05a5, 0x0003, 0x0014, 0x1bed, 0x1bfc, 0x1c06, 0x0002, - // Entry C100 - C13F - 0x05a8, 0x05b0, 0x0006, 0x0014, 0x1b69, 0x1b69, 0x1b69, 0x1b7f, - 0x1b69, 0x1b69, 0x0006, 0x0014, 0x1b96, 0x1b96, 0x1b96, 0x1bad, - 0x1b96, 0x1b96, 0x0003, 0x0000, 0x05bc, 0x05c1, 0x0003, 0x0014, - 0x1c12, 0x1c27, 0x1c37, 0x0002, 0x05c4, 0x05cc, 0x0006, 0x0014, - 0x1c49, 0x1c49, 0x1c49, 0x1c5f, 0x1c49, 0x1c49, 0x0006, 0x0014, - 0x1c76, 0x1c76, 0x1c76, 0x1c8d, 0x1c76, 0x1c76, 0x0003, 0x0000, - 0x05d8, 0x05dd, 0x0003, 0x0014, 0x1ca5, 0x1cb5, 0x1cc0, 0x0002, - 0x05e0, 0x05e8, 0x0006, 0x0014, 0x1c49, 0x1c49, 0x1c49, 0x1c5f, - // Entry C140 - C17F - 0x1c49, 0x1c49, 0x0006, 0x0014, 0x1c76, 0x1c76, 0x1c76, 0x1c8d, - 0x1c76, 0x1c76, 0x0003, 0x0000, 0x05f4, 0x05f9, 0x0003, 0x0014, - 0x1ccd, 0x1cdb, 0x1ce4, 0x0002, 0x05fc, 0x0604, 0x0006, 0x0014, - 0x1c49, 0x1c49, 0x1c49, 0x1c5f, 0x1c49, 0x1c49, 0x0006, 0x0014, - 0x1c76, 0x1c76, 0x1c76, 0x1c8d, 0x1c76, 0x1c76, 0x0001, 0x060e, - 0x0001, 0x0014, 0x1cef, 0x0003, 0x0615, 0x0618, 0x061c, 0x0001, - 0x0014, 0x1cf5, 0x0002, 0x0014, 0xffff, 0x1cf9, 0x0002, 0x061f, - 0x0627, 0x0006, 0x0014, 0x1d04, 0x1d12, 0x1d04, 0x1d04, 0x1d04, - // Entry C180 - C1BF - 0x1d04, 0x0006, 0x0014, 0x1d1c, 0x1d2b, 0x1d1c, 0x1d1c, 0x1d1c, - 0x1d1c, 0x0003, 0x0633, 0x0000, 0x0636, 0x0001, 0x0014, 0x1cf5, - 0x0002, 0x0639, 0x0641, 0x0006, 0x0014, 0x1d04, 0x1d12, 0x1d04, - 0x1d04, 0x1d04, 0x1d04, 0x0006, 0x0014, 0x1d1c, 0x1d2b, 0x1d1c, - 0x1d1c, 0x1d1c, 0x1d1c, 0x0003, 0x064d, 0x0000, 0x0650, 0x0001, - 0x0014, 0x1cf5, 0x0002, 0x0653, 0x065b, 0x0006, 0x0014, 0x1d04, - 0x1d12, 0x1d04, 0x1d04, 0x1d04, 0x1d04, 0x0006, 0x0014, 0x1d1c, - 0x1d1c, 0x1d1c, 0x1d1c, 0x1d1c, 0x1d1c, 0x0003, 0x0667, 0x066a, - // Entry C1C0 - C1FF - 0x066e, 0x0001, 0x0014, 0x1d36, 0x0002, 0x0014, 0xffff, 0x1d3c, - 0x0002, 0x0671, 0x0679, 0x0006, 0x0014, 0x1d48, 0x1d58, 0x1d48, - 0x1d64, 0x1d48, 0x1d48, 0x0006, 0x0014, 0x1d74, 0x1d74, 0x1d74, - 0x1d85, 0x1d74, 0x1d74, 0x0003, 0x0685, 0x0000, 0x0688, 0x0001, - 0x0014, 0x1d96, 0x0002, 0x068b, 0x0693, 0x0006, 0x0014, 0x1d9b, - 0x1d9b, 0x1d9b, 0x1daa, 0x1d9b, 0x1d9b, 0x0006, 0x0014, 0x1db9, - 0x1db9, 0x1db9, 0x1dc9, 0x1db9, 0x1db9, 0x0003, 0x069f, 0x0000, - 0x06a2, 0x0001, 0x0014, 0x1d96, 0x0002, 0x06a5, 0x06ad, 0x0006, - // Entry C200 - C23F - 0x0014, 0x1d9b, 0x1d9b, 0x1d9b, 0x1daa, 0x1d9b, 0x1d9b, 0x0006, - 0x0014, 0x1db9, 0x1db9, 0x1db9, 0x1dc9, 0x1db9, 0x1db9, 0x0003, - 0x06b9, 0x06bc, 0x06c0, 0x0001, 0x0014, 0x1dd9, 0x0002, 0x0014, - 0xffff, 0x1de0, 0x0002, 0x06c3, 0x06cb, 0x0006, 0x0014, 0x1de5, - 0x1df6, 0x1de5, 0x1de5, 0x1de5, 0x1de5, 0x0006, 0x0014, 0x1e03, - 0x1e15, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x0003, 0x06d7, 0x0000, - 0x06da, 0x0001, 0x0014, 0x1dd9, 0x0002, 0x06dd, 0x06e5, 0x0006, - 0x0014, 0x1de5, 0x1df6, 0x1de5, 0x1de5, 0x1de5, 0x1de5, 0x0006, - // Entry C240 - C27F - 0x0014, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x0003, - 0x06f1, 0x0000, 0x06f4, 0x0001, 0x0014, 0x1dd9, 0x0002, 0x06f7, - 0x06ff, 0x0006, 0x0014, 0x1de5, 0x1df6, 0x1de5, 0x1de5, 0x1de5, - 0x1de5, 0x0006, 0x0014, 0x1e03, 0x1e03, 0x1e03, 0x1e03, 0x1e03, - 0x1e03, 0x0001, 0x0709, 0x0001, 0x0014, 0x1e23, 0x0004, 0x0711, - 0x0716, 0x071b, 0x0726, 0x0003, 0x0000, 0x1dc7, 0x2273, 0x227a, - 0x0003, 0x0014, 0x1e31, 0x1e3b, 0x1e49, 0x0002, 0x0000, 0x071e, - 0x0002, 0x0000, 0x0721, 0x0003, 0x0014, 0xffff, 0x1e5b, 0x1e6d, - // Entry C280 - C2BF - 0x0002, 0x08ef, 0x0729, 0x0003, 0x07c3, 0x0859, 0x072d, 0x0094, - 0x0014, 0x1e80, 0x1e92, 0x1eab, 0x1ec1, 0x1ef2, 0x1f3b, 0x1f70, - 0x1fbb, 0x2027, 0x2090, 0x2102, 0xffff, 0x2161, 0x2192, 0x21ce, - 0x2211, 0x225d, 0x229e, 0x22f7, 0x235e, 0x23cc, 0x2422, 0x2473, - 0x24b1, 0x24ee, 0x251c, 0x2529, 0x2547, 0x2573, 0x259c, 0x25ca, - 0x25e7, 0x261b, 0x264d, 0x2686, 0x26b4, 0x26c9, 0x26ed, 0x272b, - 0x2771, 0x2793, 0x279f, 0x27b8, 0x27de, 0x280e, 0x2833, 0x2881, - 0x28b5, 0x28e4, 0x293e, 0x2999, 0x29bb, 0x29d1, 0x29f4, 0x2a04, - // Entry C2C0 - C2FF - 0x2a20, 0x2a48, 0x2a5f, 0x2a91, 0x2aed, 0x2b31, 0x2b47, 0x2b6a, - 0x2bb2, 0x2be9, 0x2c0b, 0x2c17, 0x2c2b, 0x2c3e, 0x2c59, 0x2c71, - 0x2c96, 0x2cc6, 0x2cfb, 0x2d2e, 0xffff, 0x2d54, 0x2d6d, 0x2d94, - 0x2db8, 0x2dd7, 0x2e07, 0x2e18, 0x2e43, 0x2e7d, 0x2ea0, 0x2ec8, - 0x2ed7, 0x2ee8, 0x2ef8, 0x2f20, 0x2f4c, 0x2f78, 0x2fd9, 0x3024, - 0x305f, 0x3085, 0x3093, 0x309f, 0x30c2, 0x3110, 0x3157, 0x3189, - 0x3194, 0x31c1, 0x3213, 0x324e, 0x327f, 0x32a9, 0x32b5, 0x32de, - 0x3314, 0x3348, 0x3374, 0x33aa, 0x33f4, 0x3403, 0x3411, 0x3421, - // Entry C300 - C33F - 0x3430, 0x344d, 0xffff, 0x3483, 0x34a7, 0x34b8, 0x34c8, 0x34df, - 0x34f0, 0x34ff, 0x350b, 0x3525, 0x354b, 0x355c, 0x3576, 0x359a, - 0x35b9, 0x35eb, 0x3606, 0x363f, 0x367b, 0x36a3, 0x36c5, 0x3705, - 0x3731, 0x373e, 0x374e, 0x3772, 0x37ae, 0x0094, 0x0014, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1eda, 0x1f2e, 0x1f61, 0x1f9a, 0x2009, - 0x206f, 0x20de, 0xffff, 0x2156, 0x2183, 0x21bc, 0x21f8, 0x224f, - 0x2285, 0x22dc, 0x2339, 0x23b4, 0x2408, 0x2462, 0x24a1, 0x24dd, - 0xffff, 0xffff, 0x2537, 0xffff, 0x258b, 0xffff, 0x25d9, 0x260f, - // Entry C340 - C37F - 0x263f, 0x2675, 0xffff, 0xffff, 0x26de, 0x2717, 0x2766, 0xffff, - 0xffff, 0xffff, 0x27cc, 0xffff, 0x281c, 0x286d, 0xffff, 0x28ce, - 0x291c, 0x298e, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a12, 0xffff, - 0xffff, 0x2a77, 0x2ad1, 0xffff, 0xffff, 0x2b54, 0x2ba2, 0x2bde, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2c8b, 0x2cb8, - 0x2cee, 0x2d21, 0xffff, 0xffff, 0xffff, 0x2d88, 0xffff, 0x2dc5, - 0xffff, 0xffff, 0x2e2c, 0xffff, 0x2e92, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2f10, 0xffff, 0x2f59, 0x2fc2, 0x3013, 0x3052, 0xffff, - // Entry C380 - C3BF - 0xffff, 0xffff, 0x30ab, 0x30fc, 0x3144, 0xffff, 0xffff, 0x31a7, - 0x3201, 0x3243, 0x3270, 0xffff, 0xffff, 0x32cf, 0x3308, 0x3338, - 0xffff, 0x338b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x343e, - 0xffff, 0x3477, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3518, 0xffff, 0xffff, 0x356a, 0xffff, 0x35a6, 0xffff, - 0x35f8, 0x362e, 0x366d, 0xffff, 0x36b3, 0x36f5, 0xffff, 0xffff, - 0xffff, 0x3764, 0x379a, 0x0094, 0x0014, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1f12, 0x1f50, 0x1f87, 0x1fe4, 0x204d, 0x20b9, 0x212e, - // Entry C3C0 - C3FF - 0xffff, 0x2174, 0x21a9, 0x21e5, 0x2232, 0x2273, 0x22bf, 0x231a, - 0x238b, 0x23ec, 0x2444, 0x248c, 0x24c9, 0x2507, 0xffff, 0xffff, - 0x255f, 0xffff, 0x25b5, 0xffff, 0x25fd, 0x262f, 0x2663, 0x269f, - 0xffff, 0xffff, 0x2704, 0x2747, 0x2784, 0xffff, 0xffff, 0xffff, - 0x27f8, 0xffff, 0x2852, 0x289d, 0xffff, 0x2902, 0x2968, 0x29ac, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2a36, 0xffff, 0xffff, 0x2ab3, - 0x2b11, 0xffff, 0xffff, 0x2b88, 0x2bca, 0x2bfc, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2ca9, 0x2cdc, 0x2d10, 0x2d43, - // Entry C400 - C43F - 0xffff, 0xffff, 0xffff, 0x2da8, 0xffff, 0x2df1, 0xffff, 0xffff, - 0x2e62, 0xffff, 0x2eb6, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f38, - 0xffff, 0x2f9f, 0x2ff8, 0x303d, 0x3074, 0xffff, 0xffff, 0xffff, - 0x30e1, 0x312c, 0x3172, 0xffff, 0xffff, 0x31e3, 0x322d, 0x3261, - 0x3296, 0xffff, 0xffff, 0x32f5, 0x3328, 0x3360, 0xffff, 0x33d1, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3464, 0xffff, 0x3497, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x353a, - 0xffff, 0xffff, 0x358a, 0xffff, 0x35d4, 0xffff, 0x361c, 0x3658, - // Entry C440 - C47F - 0x3691, 0xffff, 0x36df, 0x371d, 0xffff, 0xffff, 0xffff, 0x3788, - 0x37ca, 0x0003, 0x08f3, 0x0962, 0x0926, 0x0031, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, - // Entry C480 - C4BF - 0x003a, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, - 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2769, 0x0031, 0x0006, 0xffff, 0xffff, - // Entry C4C0 - C4FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, - 0x0004, 0x02b8, 0x06da, 0x0012, 0x0017, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0024, 0x004f, 0x0278, 0x0000, 0x0285, 0x0000, - // Entry C500 - C53F - 0x0000, 0x0000, 0x0000, 0x0292, 0x0000, 0x02aa, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, - 0x0001, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x002d, 0x0000, 0x003e, 0x0004, 0x003b, 0x0035, 0x0032, - 0x0038, 0x0001, 0x0013, 0x0466, 0x0001, 0x0013, 0x0477, 0x0001, - 0x0015, 0x0000, 0x0001, 0x0002, 0x01fb, 0x0004, 0x004c, 0x0046, - 0x0043, 0x0049, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0058, - // Entry C540 - C57F - 0x00bd, 0x0114, 0x0149, 0x0220, 0x0245, 0x0256, 0x0267, 0x0002, - 0x005b, 0x008c, 0x0003, 0x005f, 0x006e, 0x007d, 0x000d, 0x0015, - 0xffff, 0x000b, 0x0010, 0x0015, 0x001a, 0x001f, 0x0023, 0x0028, - 0x002d, 0x0032, 0x0037, 0x003c, 0x0041, 0x000d, 0x0000, 0xffff, - 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, 0x21ce, - 0x21d0, 0x228c, 0x21cc, 0x223c, 0x000d, 0x000d, 0xffff, 0x0089, - 0x0090, 0x3140, 0x009d, 0x3146, 0x00a3, 0x00a8, 0x314a, 0x3151, - 0x315b, 0x3163, 0x316c, 0x0003, 0x0090, 0x009f, 0x00ae, 0x000d, - // Entry C580 - C5BF - 0x0015, 0xffff, 0x000b, 0x0010, 0x0015, 0x001a, 0x0046, 0x0023, - 0x0028, 0x002d, 0x0032, 0x0037, 0x003c, 0x0041, 0x000d, 0x0000, - 0xffff, 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, - 0x21ce, 0x21d0, 0x228c, 0x21cc, 0x223c, 0x000d, 0x000d, 0xffff, - 0x0089, 0x0090, 0x3140, 0x009d, 0x3175, 0x00a3, 0x00a8, 0x314a, - 0x3151, 0x315b, 0x3163, 0x316c, 0x0002, 0x00c0, 0x00ea, 0x0005, - 0x00c6, 0x00cf, 0x00e1, 0x0000, 0x00d8, 0x0007, 0x0015, 0x004a, - 0x0050, 0x0055, 0x005a, 0x005f, 0x0064, 0x0069, 0x0007, 0x0000, - // Entry C5C0 - C5FF - 0x21d0, 0x223a, 0x04dd, 0x228c, 0x04dd, 0x2238, 0x228e, 0x0007, - 0x0015, 0x006f, 0x0073, 0x0076, 0x0079, 0x007c, 0x007f, 0x0082, - 0x0007, 0x0015, 0x0086, 0x008e, 0x0095, 0x009d, 0x00a4, 0x00ac, - 0x00b3, 0x0005, 0x00f0, 0x00f9, 0x010b, 0x0000, 0x0102, 0x0007, - 0x0015, 0x00bb, 0x00c0, 0x00c4, 0x00c8, 0x00cc, 0x00d0, 0x00d4, - 0x0007, 0x0000, 0x21d0, 0x223a, 0x04dd, 0x228c, 0x04dd, 0x2238, - 0x228e, 0x0007, 0x0015, 0x006f, 0x0073, 0x0076, 0x0079, 0x007c, - 0x007f, 0x0082, 0x0007, 0x0015, 0x0086, 0x008e, 0x0095, 0x009d, - // Entry C600 - C63F - 0x00a4, 0x00ac, 0x00b3, 0x0002, 0x0117, 0x0130, 0x0003, 0x011b, - 0x0122, 0x0129, 0x0005, 0x0015, 0xffff, 0x00d9, 0x00e1, 0x00e9, - 0x00f1, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0003, - 0x0134, 0x013b, 0x0142, 0x0005, 0x0015, 0xffff, 0x00d9, 0x00e1, - 0x00e9, 0x00f1, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x0039, 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, - 0x0002, 0x014c, 0x01b6, 0x0003, 0x0150, 0x0172, 0x0194, 0x0009, - // Entry C640 - C67F - 0x015d, 0x0160, 0x015a, 0x0163, 0x0169, 0x016c, 0x016f, 0x0000, - 0x0166, 0x0001, 0x0015, 0x0125, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x0015, 0x012c, 0x0001, 0x0015, 0x0138, - 0x0001, 0x0015, 0x0147, 0x0001, 0x0015, 0x0158, 0x0001, 0x0015, - 0x0163, 0x0009, 0x017f, 0x0182, 0x017c, 0x0185, 0x018b, 0x018e, - 0x0191, 0x0000, 0x0188, 0x0001, 0x0015, 0x0125, 0x0001, 0x0000, - 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0015, 0x012c, 0x0001, - 0x0015, 0x0138, 0x0001, 0x0015, 0x0147, 0x0001, 0x0015, 0x0158, - // Entry C680 - C6BF - 0x0001, 0x0015, 0x0163, 0x0009, 0x01a1, 0x01a4, 0x019e, 0x01a7, - 0x01ad, 0x01b0, 0x01b3, 0x0000, 0x01aa, 0x0001, 0x0015, 0x0125, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0015, - 0x012c, 0x0001, 0x0015, 0x0138, 0x0001, 0x0015, 0x0147, 0x0001, - 0x0015, 0x0158, 0x0001, 0x0015, 0x0163, 0x0003, 0x01ba, 0x01dc, - 0x01fe, 0x0009, 0x01c7, 0x01ca, 0x01c4, 0x01cd, 0x01d3, 0x01d6, - 0x01d9, 0x0000, 0x01d0, 0x0001, 0x0015, 0x0125, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0015, 0x016d, 0x0001, - // Entry C6C0 - C6FF - 0x0015, 0x0174, 0x0001, 0x0015, 0x017e, 0x0001, 0x0015, 0x018a, - 0x0001, 0x0015, 0x0190, 0x0009, 0x01e9, 0x01ec, 0x01e6, 0x01ef, - 0x01f5, 0x01f8, 0x01fb, 0x0000, 0x01f2, 0x0001, 0x0015, 0x0125, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0015, - 0x016d, 0x0001, 0x0015, 0x0174, 0x0001, 0x0015, 0x017e, 0x0001, - 0x0015, 0x018a, 0x0001, 0x0015, 0x0190, 0x0009, 0x020b, 0x020e, - 0x0208, 0x0211, 0x0217, 0x021a, 0x021d, 0x0000, 0x0214, 0x0001, - 0x0015, 0x0125, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - // Entry C700 - C73F - 0x0001, 0x0015, 0x016d, 0x0001, 0x0015, 0x0174, 0x0001, 0x0015, - 0x017e, 0x0001, 0x0015, 0x018a, 0x0001, 0x0015, 0x0190, 0x0003, - 0x022f, 0x023a, 0x0224, 0x0002, 0x0227, 0x022b, 0x0002, 0x0015, - 0x0194, 0x01b8, 0x0002, 0x0015, 0x019a, 0x01be, 0x0002, 0x0232, - 0x0236, 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x0015, 0x01d7, - 0x01de, 0x0002, 0x023d, 0x0241, 0x0002, 0x0015, 0x01e3, 0x01eb, - 0x0002, 0x0015, 0x01e7, 0x01ef, 0x0004, 0x0253, 0x024d, 0x024a, - 0x0250, 0x0001, 0x0015, 0x01f2, 0x0001, 0x0013, 0x06b1, 0x0001, - // Entry C740 - C77F - 0x0015, 0x0207, 0x0001, 0x0002, 0x0860, 0x0004, 0x0264, 0x025e, - 0x025b, 0x0261, 0x0001, 0x0015, 0x0210, 0x0001, 0x0015, 0x021e, - 0x0001, 0x0015, 0x0229, 0x0001, 0x0015, 0x0232, 0x0004, 0x0275, - 0x026f, 0x026c, 0x0272, 0x0001, 0x0015, 0x0238, 0x0001, 0x0015, - 0x0238, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x027e, 0x0001, 0x0280, 0x0001, - 0x0282, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x028b, 0x0001, 0x028d, 0x0001, 0x028f, 0x0001, 0x0000, - // Entry C780 - C7BF - 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0299, - 0x0004, 0x02a7, 0x02a1, 0x029e, 0x02a4, 0x0001, 0x0013, 0x0466, - 0x0001, 0x0013, 0x0477, 0x0001, 0x0015, 0x0000, 0x0001, 0x0002, - 0x01fb, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x02b0, 0x0001, - 0x02b2, 0x0001, 0x02b4, 0x0002, 0x0000, 0x1a20, 0x2290, 0x0040, - 0x02f9, 0x0000, 0x0000, 0x02fe, 0x0315, 0x032c, 0x0343, 0x035a, - 0x0371, 0x0388, 0x039f, 0x03b6, 0x03cd, 0x03e8, 0x0403, 0x0000, - 0x0000, 0x0000, 0x041e, 0x0437, 0x0450, 0x0000, 0x0000, 0x0000, - // Entry C7C0 - C7FF - 0x0469, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x046e, 0x0482, - 0x0496, 0x04aa, 0x04be, 0x04d2, 0x04e6, 0x04fa, 0x050e, 0x0522, - 0x0536, 0x054a, 0x055e, 0x0572, 0x0586, 0x059a, 0x05ae, 0x05c2, - 0x05d6, 0x05ea, 0x05fe, 0x0000, 0x0612, 0x0000, 0x0617, 0x062d, - 0x0643, 0x0659, 0x066f, 0x0685, 0x069b, 0x06b1, 0x06c3, 0x06d5, - 0x0001, 0x02fb, 0x0001, 0x0015, 0x0246, 0x0003, 0x0302, 0x0305, - 0x030a, 0x0001, 0x0015, 0x024b, 0x0003, 0x0015, 0x024f, 0x025a, - 0x0260, 0x0002, 0x030d, 0x0311, 0x0002, 0x0015, 0x026b, 0x026b, - // Entry C800 - C83F - 0x0002, 0x0015, 0x0276, 0x0276, 0x0003, 0x0319, 0x031c, 0x0321, - 0x0001, 0x0015, 0x024b, 0x0003, 0x0015, 0x024f, 0x025a, 0x0260, - 0x0002, 0x0324, 0x0328, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, - 0x0015, 0x0276, 0x0276, 0x0003, 0x0330, 0x0333, 0x0338, 0x0001, - 0x0015, 0x024b, 0x0003, 0x0015, 0x024f, 0x025a, 0x0260, 0x0002, - 0x033b, 0x033f, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, 0x0015, - 0x0276, 0x0276, 0x0003, 0x0347, 0x034a, 0x034f, 0x0001, 0x000d, - 0x03b7, 0x0003, 0x0015, 0x0288, 0x0297, 0x02a5, 0x0002, 0x0352, - // Entry C840 - C87F - 0x0356, 0x0002, 0x0015, 0x02c3, 0x02b4, 0x0002, 0x0015, 0x02ea, - 0x02d4, 0x0003, 0x035e, 0x0361, 0x0366, 0x0001, 0x0015, 0x0302, - 0x0003, 0x0015, 0x0307, 0x0313, 0x031e, 0x0002, 0x0369, 0x036d, - 0x0002, 0x0015, 0x032a, 0x032a, 0x0002, 0x0015, 0x0336, 0x0336, - 0x0003, 0x0375, 0x0378, 0x037d, 0x0001, 0x0015, 0x0302, 0x0003, - 0x0015, 0x0307, 0x0313, 0x031e, 0x0002, 0x0380, 0x0384, 0x0002, - 0x0015, 0x032a, 0x032a, 0x0002, 0x0015, 0x0336, 0x0336, 0x0003, - 0x038c, 0x038f, 0x0394, 0x0001, 0x0015, 0x0349, 0x0003, 0x0015, - // Entry C880 - C8BF - 0x0350, 0x035e, 0x036b, 0x0002, 0x0397, 0x039b, 0x0002, 0x0015, - 0x0387, 0x0379, 0x0002, 0x0015, 0x03ac, 0x0397, 0x0003, 0x03a3, - 0x03a6, 0x03ab, 0x0001, 0x0001, 0x017d, 0x0003, 0x0015, 0x03c3, - 0x03ce, 0x03d8, 0x0002, 0x03ae, 0x03b2, 0x0002, 0x0015, 0x03ee, - 0x03e3, 0x0002, 0x0015, 0x040c, 0x03fa, 0x0003, 0x03ba, 0x03bd, - 0x03c2, 0x0001, 0x0001, 0x017d, 0x0003, 0x0015, 0x03c3, 0x03ce, - 0x03d8, 0x0002, 0x03c5, 0x03c9, 0x0002, 0x0015, 0x03ee, 0x03e3, - 0x0002, 0x0015, 0x040c, 0x03fa, 0x0004, 0x03d2, 0x03d5, 0x03da, - // Entry C8C0 - C8FF - 0x03e5, 0x0001, 0x0015, 0x041f, 0x0003, 0x0015, 0x0423, 0x042e, - 0x0438, 0x0002, 0x03dd, 0x03e1, 0x0002, 0x0015, 0x044e, 0x0443, - 0x0002, 0x0015, 0x046c, 0x045a, 0x0001, 0x0015, 0x047f, 0x0004, - 0x03ed, 0x03f0, 0x03f5, 0x0400, 0x0001, 0x0015, 0x041f, 0x0003, - 0x0015, 0x0423, 0x042e, 0x0438, 0x0002, 0x03f8, 0x03fc, 0x0002, - 0x0015, 0x044e, 0x0443, 0x0002, 0x0015, 0x046c, 0x045a, 0x0001, - 0x0015, 0x047f, 0x0004, 0x0408, 0x040b, 0x0410, 0x041b, 0x0001, - 0x0015, 0x041f, 0x0003, 0x0015, 0x0423, 0x042e, 0x0438, 0x0002, - // Entry C900 - C93F - 0x0413, 0x0417, 0x0002, 0x0015, 0x044e, 0x0443, 0x0002, 0x0015, - 0x046c, 0x045a, 0x0001, 0x0015, 0x047f, 0x0003, 0x0422, 0x0425, - 0x042c, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, 0x04a0, - 0x04a6, 0x048e, 0x04af, 0x0002, 0x042f, 0x0433, 0x0002, 0x0015, - 0x04c7, 0x04bc, 0x0002, 0x0015, 0x04e5, 0x04d3, 0x0003, 0x043b, - 0x043e, 0x0445, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, - 0x04a0, 0x04a6, 0x048e, 0x04af, 0x0002, 0x0448, 0x044c, 0x0002, - 0x0015, 0x04c7, 0x04bc, 0x0002, 0x0015, 0x04e5, 0x04d3, 0x0003, - // Entry C940 - C97F - 0x0454, 0x0457, 0x045e, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, - 0x0499, 0x04a0, 0x04a6, 0x048e, 0x04af, 0x0002, 0x0461, 0x0465, - 0x0002, 0x0015, 0x04c7, 0x04bc, 0x0002, 0x0015, 0x04e5, 0x04d3, - 0x0001, 0x046b, 0x0001, 0x0015, 0x04f8, 0x0003, 0x0000, 0x0472, - 0x0477, 0x0003, 0x0015, 0x04ff, 0x050e, 0x051a, 0x0002, 0x047a, - 0x047e, 0x0002, 0x0015, 0x0538, 0x0529, 0x0002, 0x0015, 0x055e, - 0x0548, 0x0003, 0x0000, 0x0486, 0x048b, 0x0003, 0x0015, 0x0575, - 0x0582, 0x058c, 0x0002, 0x048e, 0x0492, 0x0002, 0x0015, 0x0538, - // Entry C980 - C9BF - 0x0529, 0x0002, 0x0015, 0x055e, 0x0548, 0x0003, 0x0000, 0x049a, - 0x049f, 0x0003, 0x0015, 0x0599, 0x05a5, 0x05ae, 0x0002, 0x04a2, - 0x04a6, 0x0002, 0x0015, 0x0538, 0x0529, 0x0002, 0x0015, 0x055e, - 0x0548, 0x0003, 0x0000, 0x04ae, 0x04b3, 0x0003, 0x0015, 0x05ba, - 0x05c8, 0x05d3, 0x0002, 0x04b6, 0x04ba, 0x0002, 0x0015, 0x05ef, - 0x05e1, 0x0002, 0x0015, 0x0613, 0x05fe, 0x0003, 0x0000, 0x04c2, - 0x04c7, 0x0003, 0x0015, 0x0629, 0x0635, 0x063e, 0x0002, 0x04ca, - 0x04ce, 0x0002, 0x0015, 0x05ef, 0x05e1, 0x0002, 0x0015, 0x0613, - // Entry C9C0 - C9FF - 0x05fe, 0x0003, 0x0000, 0x04d6, 0x04db, 0x0003, 0x0015, 0x064a, - 0x0655, 0x065d, 0x0002, 0x04de, 0x04e2, 0x0002, 0x0015, 0x05ef, - 0x05e1, 0x0002, 0x0015, 0x0613, 0x05fe, 0x0003, 0x0000, 0x04ea, - 0x04ef, 0x0003, 0x0015, 0x0668, 0x0677, 0x0683, 0x0002, 0x04f2, - 0x04f6, 0x0002, 0x0015, 0x06a1, 0x0692, 0x0002, 0x0015, 0x06c7, - 0x06b1, 0x0003, 0x0000, 0x04fe, 0x0503, 0x0003, 0x0015, 0x06de, - 0x06ea, 0x06f3, 0x0002, 0x0506, 0x050a, 0x0002, 0x0015, 0x06a1, - 0x0692, 0x0002, 0x0015, 0x06c7, 0x06b1, 0x0003, 0x0000, 0x0512, - // Entry CA00 - CA3F - 0x0517, 0x0003, 0x0015, 0x06ff, 0x070a, 0x0712, 0x0002, 0x051a, - 0x051e, 0x0002, 0x0015, 0x06a1, 0x0692, 0x0002, 0x0015, 0x06c7, - 0x06b1, 0x0003, 0x0000, 0x0526, 0x052b, 0x0003, 0x0015, 0x071d, - 0x072b, 0x0736, 0x0002, 0x052e, 0x0532, 0x0002, 0x0015, 0x0752, - 0x0744, 0x0002, 0x0015, 0x0776, 0x0761, 0x0003, 0x0000, 0x053a, - 0x053f, 0x0003, 0x0015, 0x078c, 0x0798, 0x07a1, 0x0002, 0x0542, - 0x0546, 0x0002, 0x0015, 0x0752, 0x0744, 0x0002, 0x0015, 0x0776, - 0x0761, 0x0003, 0x0000, 0x054e, 0x0553, 0x0003, 0x0015, 0x07ad, - // Entry CA40 - CA7F - 0x07b8, 0x07c0, 0x0002, 0x0556, 0x055a, 0x0002, 0x0015, 0x0752, - 0x0744, 0x0002, 0x0015, 0x0776, 0x0761, 0x0003, 0x0000, 0x0562, - 0x0567, 0x0003, 0x0015, 0x07cb, 0x07da, 0x07e6, 0x0002, 0x056a, - 0x056e, 0x0002, 0x0015, 0x0804, 0x07f5, 0x0002, 0x0015, 0x082a, - 0x0814, 0x0003, 0x0000, 0x0576, 0x057b, 0x0003, 0x0015, 0x0841, - 0x084d, 0x0856, 0x0002, 0x057e, 0x0582, 0x0002, 0x0015, 0x0804, - 0x07f5, 0x0002, 0x0015, 0x082a, 0x0814, 0x0003, 0x0000, 0x058a, - 0x058f, 0x0003, 0x0015, 0x0862, 0x086d, 0x0875, 0x0002, 0x0592, - // Entry CA80 - CABF - 0x0596, 0x0002, 0x0015, 0x0804, 0x07f5, 0x0002, 0x0015, 0x082a, - 0x0814, 0x0003, 0x0000, 0x059e, 0x05a3, 0x0003, 0x0015, 0x0880, - 0x088e, 0x0899, 0x0002, 0x05a6, 0x05aa, 0x0002, 0x0015, 0x08b5, - 0x08a7, 0x0002, 0x0015, 0x08d9, 0x08c4, 0x0003, 0x0000, 0x05b2, - 0x05b7, 0x0003, 0x0015, 0x08ef, 0x08fb, 0x0904, 0x0002, 0x05ba, - 0x05be, 0x0002, 0x0015, 0x08b5, 0x08a7, 0x0002, 0x0015, 0x08d9, - 0x08c4, 0x0003, 0x0000, 0x05c6, 0x05cb, 0x0003, 0x0015, 0x0910, - 0x091b, 0x0923, 0x0002, 0x05ce, 0x05d2, 0x0002, 0x0015, 0x08b5, - // Entry CAC0 - CAFF - 0x08a7, 0x0002, 0x0015, 0x08d9, 0x08c4, 0x0003, 0x0000, 0x05da, - 0x05df, 0x0003, 0x0015, 0x092e, 0x093d, 0x0949, 0x0002, 0x05e2, - 0x05e6, 0x0002, 0x0015, 0x0967, 0x0958, 0x0002, 0x0015, 0x098d, - 0x0977, 0x0003, 0x0000, 0x05ee, 0x05f3, 0x0003, 0x0015, 0x09a4, - 0x09b1, 0x09bb, 0x0002, 0x05f6, 0x05fa, 0x0002, 0x0015, 0x0967, - 0x0958, 0x0002, 0x0015, 0x098d, 0x0977, 0x0003, 0x0000, 0x0602, - 0x0607, 0x0003, 0x0015, 0x09c8, 0x09d4, 0x09dd, 0x0002, 0x060a, - 0x060e, 0x0002, 0x0015, 0x0967, 0x0958, 0x0002, 0x0015, 0x098d, - // Entry CB00 - CB3F - 0x0977, 0x0001, 0x0614, 0x0001, 0x0007, 0x07cc, 0x0003, 0x061b, - 0x061e, 0x0622, 0x0001, 0x0015, 0x09e9, 0x0002, 0x0015, 0xffff, - 0x09ee, 0x0002, 0x0625, 0x0629, 0x0002, 0x0015, 0x0a0e, 0x0a02, - 0x0002, 0x0015, 0x0a2e, 0x0a1b, 0x0003, 0x0631, 0x0634, 0x0638, - 0x0001, 0x0015, 0x0a42, 0x0002, 0x0015, 0xffff, 0x0a45, 0x0002, - 0x063b, 0x063f, 0x0002, 0x0015, 0x0a0e, 0x0a02, 0x0002, 0x0015, - 0x0a2e, 0x0a1b, 0x0003, 0x0647, 0x064a, 0x064e, 0x0001, 0x0000, - 0x2000, 0x0002, 0x0015, 0xffff, 0x0a45, 0x0002, 0x0651, 0x0655, - // Entry CB40 - CB7F - 0x0002, 0x0015, 0x0a0e, 0x0a02, 0x0002, 0x0015, 0x0a2e, 0x0a1b, - 0x0003, 0x065d, 0x0660, 0x0664, 0x0001, 0x0010, 0x0b77, 0x0002, - 0x0015, 0xffff, 0x0a50, 0x0002, 0x0667, 0x066b, 0x0002, 0x0015, - 0x0a72, 0x0a65, 0x0002, 0x0015, 0x0a96, 0x0a82, 0x0003, 0x0673, - 0x0676, 0x067a, 0x0001, 0x0001, 0x075a, 0x0002, 0x0015, 0xffff, - 0x0aad, 0x0002, 0x067d, 0x0681, 0x0002, 0x0015, 0x0ab9, 0x0ab9, - 0x0002, 0x0015, 0x0ac5, 0x0ac5, 0x0003, 0x0689, 0x068c, 0x0690, - 0x0001, 0x000b, 0x1250, 0x0002, 0x0015, 0xffff, 0x0aad, 0x0002, - // Entry CB80 - CBBF - 0x0693, 0x0697, 0x0002, 0x0015, 0x0ab9, 0x0ab9, 0x0002, 0x0015, - 0x0ac5, 0x0ac5, 0x0003, 0x069f, 0x06a2, 0x06a6, 0x0001, 0x0015, - 0x0ad8, 0x0002, 0x0015, 0xffff, 0x0adf, 0x0002, 0x06a9, 0x06ad, - 0x0002, 0x0015, 0x0af0, 0x0ae2, 0x0002, 0x0015, 0x0b15, 0x0b00, - 0x0003, 0x06b5, 0x0000, 0x06b8, 0x0001, 0x0001, 0x07d3, 0x0002, - 0x06bb, 0x06bf, 0x0002, 0x0015, 0x0b2c, 0x0b2c, 0x0002, 0x0015, - 0x0b38, 0x0b38, 0x0003, 0x06c7, 0x0000, 0x06ca, 0x0001, 0x0000, - 0x2002, 0x0002, 0x06cd, 0x06d1, 0x0002, 0x0015, 0x0b2c, 0x0b2c, - // Entry CBC0 - CBFF - 0x0002, 0x0015, 0x0b38, 0x0b38, 0x0001, 0x06d7, 0x0001, 0x0015, - 0x0b4b, 0x0004, 0x06df, 0x06e4, 0x06e9, 0x06f8, 0x0003, 0x0008, - 0x1d98, 0x4ef9, 0x4f00, 0x0003, 0x0000, 0x1de0, 0x2297, 0x22a0, - 0x0002, 0x0000, 0x06ec, 0x0003, 0x0000, 0x06f3, 0x06f0, 0x0001, - 0x0015, 0x0b54, 0x0003, 0x0015, 0xffff, 0x0b6d, 0x0b7f, 0x0002, - 0x08df, 0x06fb, 0x0003, 0x06ff, 0x083f, 0x079f, 0x009e, 0x0015, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0bfa, 0x0c3c, 0x0c96, 0x0cc9, - 0x0cf9, 0x0d29, 0x0d5c, 0x0d8c, 0x0db9, 0x0e37, 0x0e67, 0x0e9f, - // Entry CC00 - CC3F - 0x0ee4, 0x0f14, 0x0f47, 0x0f92, 0x0ff5, 0x1037, 0x1079, 0x10be, - 0x10f1, 0xffff, 0xffff, 0x1152, 0xffff, 0x11a4, 0xffff, 0x11ea, - 0x121a, 0x124d, 0x1280, 0xffff, 0xffff, 0x12ea, 0x1326, 0x135f, - 0xffff, 0xffff, 0xffff, 0x13be, 0xffff, 0x1408, 0x1456, 0xffff, - 0x14b3, 0x14f8, 0x1540, 0xffff, 0xffff, 0xffff, 0xffff, 0x15ce, - 0xffff, 0xffff, 0x161d, 0x1665, 0xffff, 0xffff, 0x16dd, 0x1725, - 0x1758, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x17f1, - 0x181e, 0x184e, 0x1881, 0x18b1, 0xffff, 0xffff, 0x193e, 0xffff, - // Entry CC40 - CC7F - 0x197c, 0xffff, 0xffff, 0x19e0, 0xffff, 0x1a4e, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1abb, 0xffff, 0x1afc, 0x1b4a, 0x1b98, 0x1bd1, - 0xffff, 0xffff, 0xffff, 0x1c34, 0x1c70, 0x1caf, 0xffff, 0xffff, - 0x1d10, 0x1d77, 0x1db3, 0x1dda, 0xffff, 0xffff, 0x1e37, 0x1e76, - 0x1eaf, 0xffff, 0x1ef8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1fd2, 0x2005, 0x2032, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x20cb, 0xffff, 0xffff, 0x2113, 0xffff, 0x2150, - 0xffff, 0x2191, 0x21cd, 0x2200, 0xffff, 0x2241, 0x227d, 0xffff, - // Entry CC80 - CCBF - 0xffff, 0xffff, 0x22e0, 0x2310, 0xffff, 0xffff, 0x0b8e, 0x0c69, - 0x0de0, 0x0e0a, 0xffff, 0xffff, 0x1a16, 0x1f84, 0x009e, 0x0015, - 0x0bb5, 0x0bc2, 0x0bd7, 0x0be9, 0x0c0c, 0x0c47, 0x0ca3, 0x0cd5, - 0x0d05, 0x0d36, 0x0d68, 0x0d97, 0x0dc2, 0x0e43, 0x0e75, 0x0eb2, - 0x0ef0, 0x0f21, 0x0f5c, 0x0faf, 0x1007, 0x1049, 0x108c, 0x10cb, - 0x1103, 0x1133, 0x1143, 0x1162, 0x118e, 0x11b3, 0x11dd, 0x11f6, - 0x1227, 0x125a, 0x128f, 0x12b9, 0x12d4, 0x12fa, 0x1335, 0x136b, - 0x138f, 0x1399, 0x13b0, 0x13cd, 0x13f7, 0x141e, 0x1469, 0x149b, - // Entry CCC0 - CCFF - 0x14c6, 0x150c, 0x154d, 0x1573, 0x1585, 0x15b4, 0x15c2, 0x15dd, - 0x1607, 0x1619, 0x1631, 0x1679, 0x16bc, 0x16d2, 0x16f1, 0x1732, - 0x1761, 0x177f, 0x1790, 0x17a8, 0x17b5, 0x17cb, 0x17de, 0x17fc, - 0x182a, 0x185b, 0x188d, 0x18ce, 0x1914, 0x1929, 0x194b, 0x1971, - 0x198c, 0x19b8, 0x19d0, 0x19ee, 0x1a40, 0x1a5a, 0x1a7e, 0x1a8c, - 0x1a9a, 0x1aa8, 0x1ac9, 0x1af1, 0x1b12, 0x1b60, 0x1ba7, 0x1be1, - 0x1c0d, 0x1c1b, 0x1c25, 0x1c44, 0x1c81, 0x1cc2, 0x1cf4, 0x1cfd, - 0x1d28, 0x1d87, 0x1dbc, 0x1de9, 0x1e13, 0x1e23, 0x1e48, 0x1e85, - // Entry CD00 - CD3F - 0x1ebe, 0x1ee8, 0x1f16, 0x1f5e, 0x1f6b, 0x1f76, 0x1fba, 0x1fc6, - 0x1fdf, 0x2010, 0x203c, 0x205c, 0x206c, 0x2084, 0x2096, 0x20a8, - 0x20b4, 0x20be, 0x20d6, 0x20f8, 0x2107, 0x2120, 0x2146, 0x215e, - 0x2186, 0x21a1, 0x21da, 0x220c, 0x2230, 0x2251, 0x228b, 0x22b3, - 0x22be, 0x22cb, 0x22ec, 0x2324, 0x16ad, 0x1d64, 0x0b97, 0x0c74, - 0x0dea, 0x0e15, 0xffff, 0x19c6, 0x1a20, 0x1f92, 0x009e, 0x0015, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0c24, 0x0c58, 0x0cb6, 0x0ce7, - 0x0d17, 0x0d49, 0x0d7a, 0x0da8, 0x0dd1, 0x0e55, 0x0e8a, 0x0ecb, - // Entry CD40 - CD7F - 0x0f02, 0x0f34, 0x0f77, 0x0fd2, 0x101f, 0x1061, 0x10a5, 0x10de, - 0x111b, 0xffff, 0xffff, 0x1178, 0xffff, 0x11c8, 0xffff, 0x1208, - 0x123a, 0x126d, 0x12a4, 0xffff, 0xffff, 0x1310, 0x134a, 0x137d, - 0xffff, 0xffff, 0xffff, 0x13e2, 0xffff, 0x143a, 0x1482, 0xffff, - 0x14df, 0x1526, 0x1560, 0xffff, 0xffff, 0xffff, 0xffff, 0x15f2, - 0xffff, 0xffff, 0x164b, 0x1693, 0xffff, 0xffff, 0x170b, 0x1745, - 0x1770, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x180d, - 0x183c, 0x186e, 0x189f, 0x18f1, 0xffff, 0xffff, 0x195e, 0xffff, - // Entry CD80 - CDBF - 0x19a2, 0xffff, 0xffff, 0x1a02, 0xffff, 0x1a6c, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1add, 0xffff, 0x1b2e, 0x1b7c, 0x1bbc, 0x1bf7, - 0xffff, 0xffff, 0xffff, 0x1c5a, 0x1c98, 0x1cdb, 0xffff, 0xffff, - 0x1d46, 0x1d9d, 0x1dcb, 0x1dfe, 0xffff, 0xffff, 0x1e5f, 0x1e9a, - 0x1ed3, 0xffff, 0x1f3a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1ff2, 0x2021, 0x204c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x20e7, 0xffff, 0xffff, 0x2133, 0xffff, 0x2172, - 0xffff, 0x21b7, 0x21ed, 0x221e, 0xffff, 0x2267, 0x229f, 0xffff, - // Entry CDC0 - CDFF - 0xffff, 0xffff, 0x22fe, 0x233e, 0xffff, 0xffff, 0x0ba6, 0x0c85, - 0x0dfa, 0x0e26, 0xffff, 0xffff, 0x1a30, 0x1fa6, 0x0003, 0x08e3, - 0x0949, 0x0916, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry CE00 - CE3F - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry CE40 - CE7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - 0x1355, 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, - // Entry CE80 - CEBF - 0x001b, 0x0018, 0x001e, 0x0001, 0x0005, 0x04fa, 0x0001, 0x0005, - 0x0509, 0x0001, 0x0005, 0x0515, 0x0001, 0x0016, 0x0000, 0x0002, - 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, - 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, - 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, - // Entry CEC0 - CEFF - 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0016, 0xffff, - 0x0007, 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, - 0x0027, 0x002b, 0x002f, 0x0033, 0x000d, 0x0016, 0xffff, 0x0037, - 0x0048, 0x0057, 0x0068, 0x0077, 0x0088, 0x009c, 0x00af, 0x00c2, - 0x00d3, 0x00e3, 0x00fd, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, - 0xffff, 0x2055, 0x2157, 0x2157, 0x2157, 0x2157, 0x2157, 0x223a, - 0x2159, 0x2055, 0x2055, 0x2055, 0x2055, 0x0002, 0x0069, 0x007f, - 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0016, 0x0114, 0x0118, - // Entry CF00 - CF3F - 0x000b, 0x000f, 0x0013, 0x0017, 0x011c, 0x0007, 0x0016, 0x0120, - 0x012f, 0x0140, 0x014e, 0x015e, 0x016c, 0x017c, 0x0002, 0x0000, - 0x0082, 0x0007, 0x0000, 0x1e5d, 0x1e5d, 0x2157, 0x2157, 0x2157, - 0x2157, 0x21cc, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, - 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, - 0x0016, 0xffff, 0x0189, 0x0199, 0x01a7, 0x01b7, 0x0001, 0x00a1, - 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, - 0x0016, 0x01c5, 0x0001, 0x0016, 0x01d0, 0x0002, 0x00b1, 0x00b4, - // Entry CF40 - CF7F - 0x0001, 0x0016, 0x01c5, 0x0001, 0x0016, 0x01d0, 0x0003, 0x00c1, - 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0016, 0x01db, 0x01eb, - 0x0001, 0x00c3, 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0004, 0x00d5, - 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, - 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, - 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, - // Entry CF80 - CFBF - 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, - 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, - 0x015d, 0x0001, 0x012c, 0x0001, 0x0016, 0x0201, 0x0001, 0x0131, - // Entry CFC0 - CFFF - 0x0001, 0x0005, 0x0787, 0x0001, 0x0136, 0x0001, 0x0016, 0x0207, - 0x0001, 0x013b, 0x0001, 0x0016, 0x020c, 0x0002, 0x0141, 0x0144, - 0x0001, 0x0016, 0x0211, 0x0003, 0x0016, 0x0217, 0x021c, 0x0222, - 0x0001, 0x014b, 0x0001, 0x0016, 0x0228, 0x0001, 0x0150, 0x0001, - 0x0009, 0x0308, 0x0001, 0x0155, 0x0001, 0x0005, 0x07d4, 0x0001, - 0x015a, 0x0001, 0x0009, 0x030c, 0x0001, 0x015f, 0x0001, 0x0016, - 0x022e, 0x0003, 0x0004, 0x030d, 0x072a, 0x0012, 0x0017, 0x0024, - 0x0000, 0x0000, 0x0000, 0x0000, 0x005a, 0x0085, 0x02c6, 0x0000, - // Entry D000 - D03F - 0x02d3, 0x0000, 0x0000, 0x0000, 0x0000, 0x02e0, 0x0000, 0x02ff, - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, - 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x000a, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0049, 0x0000, 0x0000, 0x0000, 0x002f, - 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0036, 0x0001, - 0x0038, 0x0001, 0x003a, 0x000d, 0x0016, 0xffff, 0x023c, 0x0242, - 0x024a, 0x0250, 0x0255, 0x025c, 0x0265, 0x026b, 0x0271, 0x0276, - 0x027b, 0x0280, 0x0004, 0x0057, 0x0051, 0x004e, 0x0054, 0x0001, - // Entry D040 - D07F - 0x0016, 0x0288, 0x0001, 0x0016, 0x0298, 0x0001, 0x0016, 0x02a2, - 0x0001, 0x0007, 0x0277, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0063, 0x0000, 0x0074, 0x0004, 0x0071, 0x006b, 0x0068, - 0x006e, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, - 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, 0x0004, 0x0082, 0x007c, - 0x0079, 0x007f, 0x0001, 0x0016, 0x02b4, 0x0001, 0x0016, 0x02b4, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x008e, - 0x00f3, 0x014a, 0x017f, 0x026e, 0x0293, 0x02a4, 0x02b5, 0x0002, - // Entry D080 - D0BF - 0x0091, 0x00c2, 0x0003, 0x0095, 0x00a4, 0x00b3, 0x000d, 0x0000, - 0xffff, 0x1e22, 0x1e27, 0x22a9, 0x1e31, 0x22af, 0x22b3, 0x22b8, - 0x1e44, 0x1e49, 0x1e4e, 0x1e53, 0x22bd, 0x000d, 0x0000, 0xffff, - 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, 0x21ce, - 0x21d0, 0x228c, 0x21cc, 0x223c, 0x000d, 0x0016, 0xffff, 0x02c1, - 0x02c8, 0x02d0, 0x02d6, 0x02dc, 0x02e0, 0x02e5, 0x02ea, 0x02f1, - 0x02fb, 0x0303, 0x030c, 0x0003, 0x00c6, 0x00d5, 0x00e4, 0x000d, - 0x0005, 0xffff, 0x0636, 0x063a, 0x20d1, 0x0642, 0x20d6, 0x064a, - // Entry D0C0 - D0FF - 0x064e, 0x20da, 0x0656, 0x065a, 0x065e, 0x20de, 0x000d, 0x0000, - 0xffff, 0x1e5d, 0x2238, 0x223a, 0x21ce, 0x223a, 0x1e5d, 0x1e5d, - 0x21ce, 0x21d0, 0x228c, 0x21cc, 0x223c, 0x000d, 0x0016, 0xffff, - 0x02c1, 0x02c8, 0x02d0, 0x02d6, 0x0315, 0x02e0, 0x02e5, 0x02ea, - 0x02f1, 0x02fb, 0x0303, 0x030c, 0x0002, 0x00f6, 0x0120, 0x0005, - 0x00fc, 0x0105, 0x0117, 0x0000, 0x010e, 0x0007, 0x0000, 0x1ebf, - 0x22c2, 0x1ec7, 0x22c6, 0x1ecf, 0x22ca, 0x1ed7, 0x0007, 0x0000, - 0x21d0, 0x223a, 0x223c, 0x223a, 0x223c, 0x2238, 0x21d0, 0x0007, - // Entry D100 - D13F - 0x0000, 0x1ebf, 0x22c2, 0x1ec7, 0x22c6, 0x1ecf, 0x22ca, 0x1ed7, - 0x0007, 0x0016, 0x0319, 0x0321, 0x0328, 0x0331, 0x033a, 0x0345, - 0x034d, 0x0005, 0x0126, 0x012f, 0x0141, 0x0000, 0x0138, 0x0007, - 0x0016, 0x0355, 0x0358, 0x035b, 0x035e, 0x0361, 0x0364, 0x0367, - 0x0007, 0x0000, 0x21d0, 0x223a, 0x223c, 0x223a, 0x223c, 0x2238, - 0x21d0, 0x0007, 0x0000, 0x1ebf, 0x22c2, 0x1ec7, 0x22c6, 0x1ecf, - 0x22ca, 0x1ed7, 0x0007, 0x0016, 0x0319, 0x0321, 0x0328, 0x0331, - 0x033a, 0x0345, 0x034d, 0x0002, 0x014d, 0x0166, 0x0003, 0x0151, - // Entry D140 - D17F - 0x0158, 0x015f, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, - 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, - 0x0005, 0x0016, 0xffff, 0x036a, 0x0375, 0x0380, 0x038b, 0x0003, - 0x016a, 0x0171, 0x0178, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, - 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x0039, 0x0005, 0x0016, 0xffff, 0x036a, 0x0375, 0x0380, 0x038b, - 0x0002, 0x0182, 0x01f8, 0x0003, 0x0186, 0x01ac, 0x01d2, 0x000a, - 0x0194, 0x0197, 0x0191, 0x019a, 0x01a0, 0x01a6, 0x01a9, 0x0000, - // Entry D180 - D1BF - 0x019d, 0x01a3, 0x0001, 0x0016, 0x0396, 0x0001, 0x0016, 0x03a2, - 0x0001, 0x0016, 0x03a8, 0x0001, 0x0016, 0x03af, 0x0001, 0x0016, - 0x03b7, 0x0001, 0x0016, 0x03c2, 0x0001, 0x0016, 0x03ca, 0x0001, - 0x0016, 0x03d6, 0x0001, 0x0016, 0x03dd, 0x000a, 0x01ba, 0x01bd, - 0x01b7, 0x01c0, 0x01c6, 0x01cc, 0x01cf, 0x0000, 0x01c3, 0x01c9, - 0x0001, 0x0016, 0x0396, 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, - 0x1f66, 0x0001, 0x0016, 0x03af, 0x0001, 0x0016, 0x03b7, 0x0001, - 0x0016, 0x03c2, 0x0001, 0x0016, 0x03ca, 0x0001, 0x0016, 0x03d6, - // Entry D1C0 - D1FF - 0x0001, 0x0016, 0x03dd, 0x000a, 0x01e0, 0x01e3, 0x01dd, 0x01e6, - 0x01ec, 0x01f2, 0x01f5, 0x0000, 0x01e9, 0x01ef, 0x0001, 0x0016, - 0x0396, 0x0001, 0x0016, 0x03a2, 0x0001, 0x0016, 0x03a8, 0x0001, - 0x0016, 0x03af, 0x0001, 0x0016, 0x03b7, 0x0001, 0x0016, 0x03c2, - 0x0001, 0x0016, 0x03ca, 0x0001, 0x0016, 0x03d6, 0x0001, 0x0016, - 0x03dd, 0x0003, 0x01fc, 0x0222, 0x0248, 0x000a, 0x020a, 0x020d, - 0x0207, 0x0210, 0x0216, 0x021c, 0x021f, 0x0000, 0x0213, 0x0219, - 0x0001, 0x0016, 0x0396, 0x0001, 0x0016, 0x03a2, 0x0001, 0x0016, - // Entry D200 - D23F - 0x03a8, 0x0001, 0x0016, 0x03e4, 0x0001, 0x0016, 0x03eb, 0x0001, - 0x0016, 0x03f5, 0x0001, 0x0016, 0x03fc, 0x0001, 0x0016, 0x0407, - 0x0001, 0x0016, 0x040d, 0x000a, 0x0230, 0x0233, 0x022d, 0x0236, - 0x023c, 0x0242, 0x0245, 0x0000, 0x0239, 0x023f, 0x0001, 0x0016, - 0x0396, 0x0001, 0x0016, 0x03a2, 0x0001, 0x0016, 0x03a8, 0x0001, - 0x0016, 0x03e4, 0x0001, 0x0016, 0x03eb, 0x0001, 0x0016, 0x03f5, - 0x0001, 0x0016, 0x03fc, 0x0001, 0x0016, 0x0407, 0x0001, 0x0016, - 0x040d, 0x000a, 0x0256, 0x0259, 0x0253, 0x025c, 0x0262, 0x0268, - // Entry D240 - D27F - 0x026b, 0x0000, 0x025f, 0x0265, 0x0001, 0x0016, 0x0396, 0x0001, - 0x0016, 0x03a2, 0x0001, 0x0016, 0x03a8, 0x0001, 0x0016, 0x03e4, - 0x0001, 0x0016, 0x03eb, 0x0001, 0x0016, 0x03f5, 0x0001, 0x0016, - 0x03fc, 0x0001, 0x0016, 0x0407, 0x0001, 0x0016, 0x040d, 0x0003, - 0x027d, 0x0288, 0x0272, 0x0002, 0x0275, 0x0279, 0x0002, 0x0016, - 0x0413, 0x0434, 0x0002, 0x0016, 0x041b, 0x043c, 0x0002, 0x0280, - 0x0284, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x0016, 0x0451, - 0x045a, 0x0002, 0x028b, 0x028f, 0x0002, 0x0016, 0x0413, 0x0434, - // Entry D280 - D2BF - 0x0002, 0x0016, 0x0451, 0x045a, 0x0004, 0x02a1, 0x029b, 0x0298, - 0x029e, 0x0001, 0x0016, 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, - 0x0016, 0x0470, 0x0001, 0x0007, 0x0277, 0x0004, 0x02b2, 0x02ac, - 0x02a9, 0x02af, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x02c3, - 0x02bd, 0x02ba, 0x02c0, 0x0001, 0x0016, 0x02b4, 0x0001, 0x0016, - 0x02b4, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x02cc, 0x0001, 0x02ce, 0x0001, - // Entry D2C0 - D2FF - 0x02d0, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x02d9, 0x0001, 0x02db, 0x0001, 0x02dd, 0x0001, 0x0000, - 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x02e7, 0x02ee, - 0x0001, 0x02e9, 0x0001, 0x02eb, 0x0001, 0x0000, 0x06cb, 0x0004, - 0x02fc, 0x02f6, 0x02f3, 0x02f9, 0x0001, 0x0013, 0x06bb, 0x0001, - 0x0013, 0x0477, 0x0001, 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0305, 0x0001, 0x0307, - 0x0001, 0x0309, 0x0002, 0x0000, 0x1a20, 0x2290, 0x0040, 0x034e, - // Entry D300 - D33F - 0x0000, 0x0000, 0x0353, 0x036a, 0x0381, 0x0398, 0x03af, 0x03c1, - 0x03d8, 0x03ef, 0x0406, 0x041d, 0x0438, 0x0453, 0x0000, 0x0000, - 0x0000, 0x046e, 0x0487, 0x04a0, 0x0000, 0x0000, 0x0000, 0x04b9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04be, 0x04d2, 0x04e6, - 0x04fa, 0x050e, 0x0522, 0x0536, 0x054a, 0x055e, 0x0572, 0x0586, - 0x059a, 0x05ae, 0x05c2, 0x05d6, 0x05ea, 0x05fe, 0x0612, 0x0626, - 0x063a, 0x064e, 0x0000, 0x0662, 0x0000, 0x0667, 0x067d, 0x0693, - 0x06a9, 0x06bf, 0x06d5, 0x06eb, 0x0701, 0x0713, 0x0725, 0x0001, - // Entry D340 - D37F - 0x0350, 0x0001, 0x0016, 0x0478, 0x0003, 0x0357, 0x035a, 0x035f, - 0x0001, 0x0016, 0x047f, 0x0003, 0x0016, 0x0484, 0x0491, 0x049d, - 0x0002, 0x0362, 0x0366, 0x0002, 0x0016, 0x04b8, 0x04ac, 0x0002, - 0x0016, 0x04d3, 0x04c6, 0x0003, 0x036e, 0x0371, 0x0376, 0x0001, - 0x0016, 0x047f, 0x0003, 0x0016, 0x0484, 0x0491, 0x049d, 0x0002, - 0x0379, 0x037d, 0x0002, 0x0016, 0x04b8, 0x04ac, 0x0002, 0x0016, - 0x04d3, 0x04c6, 0x0003, 0x0385, 0x0388, 0x038d, 0x0001, 0x0000, - 0x1e5d, 0x0003, 0x0016, 0x0484, 0x0491, 0x049d, 0x0002, 0x0390, - // Entry D380 - D3BF - 0x0394, 0x0002, 0x0016, 0x04b8, 0x04ac, 0x0002, 0x0016, 0x04d3, - 0x04c6, 0x0003, 0x039c, 0x039f, 0x03a4, 0x0001, 0x0016, 0x04e2, - 0x0003, 0x0016, 0x04ea, 0x04fa, 0x0509, 0x0002, 0x03a7, 0x03ab, - 0x0002, 0x0016, 0x052a, 0x051b, 0x0002, 0x0016, 0x054b, 0x053b, - 0x0003, 0x03b3, 0x0000, 0x03b6, 0x0001, 0x0016, 0x055d, 0x0002, - 0x03b9, 0x03bd, 0x0002, 0x0016, 0x0564, 0x0564, 0x0002, 0x0016, - 0x0572, 0x0572, 0x0003, 0x03c5, 0x03c8, 0x03cd, 0x0001, 0x0013, - 0x083a, 0x0003, 0x0016, 0x04ea, 0x04fa, 0x0509, 0x0002, 0x03d0, - // Entry D3C0 - D3FF - 0x03d4, 0x0002, 0x0016, 0x0581, 0x0581, 0x0002, 0x0016, 0x058a, - 0x058a, 0x0003, 0x03dc, 0x03df, 0x03e4, 0x0001, 0x0016, 0x0594, - 0x0003, 0x0016, 0x059a, 0x05a8, 0x05b5, 0x0002, 0x03e7, 0x03eb, - 0x0002, 0x0016, 0x05d2, 0x05c5, 0x0002, 0x0016, 0x05ef, 0x05e1, - 0x0003, 0x03f3, 0x03f6, 0x03fb, 0x0001, 0x0016, 0x0594, 0x0003, - 0x0016, 0x059a, 0x05a8, 0x05b5, 0x0002, 0x03fe, 0x0402, 0x0002, - 0x0016, 0x05d2, 0x05c5, 0x0002, 0x0016, 0x05ff, 0x05e1, 0x0003, - 0x040a, 0x040d, 0x0412, 0x0001, 0x0000, 0x223a, 0x0003, 0x0016, - // Entry D400 - D43F - 0x059a, 0x05a8, 0x05b5, 0x0002, 0x0415, 0x0419, 0x0002, 0x0016, - 0x05d2, 0x05c5, 0x0002, 0x0016, 0x05ef, 0x0610, 0x0004, 0x0422, - 0x0425, 0x042a, 0x0435, 0x0001, 0x0016, 0x061f, 0x0003, 0x0016, - 0x0625, 0x0632, 0x063e, 0x0002, 0x042d, 0x0431, 0x0002, 0x0016, - 0x065a, 0x064d, 0x0002, 0x0016, 0x0676, 0x0668, 0x0001, 0x0016, - 0x0685, 0x0004, 0x043d, 0x0440, 0x0445, 0x0450, 0x0001, 0x0016, - 0x061f, 0x0003, 0x0016, 0x0625, 0x0632, 0x063e, 0x0002, 0x0448, - 0x044c, 0x0002, 0x0016, 0x065a, 0x064d, 0x0002, 0x0016, 0x0676, - // Entry D440 - D47F - 0x0668, 0x0001, 0x0016, 0x0685, 0x0004, 0x0458, 0x045b, 0x0460, - 0x046b, 0x0001, 0x0000, 0x2159, 0x0003, 0x0016, 0x0625, 0x0632, - 0x063e, 0x0002, 0x0463, 0x0467, 0x0002, 0x0016, 0x0697, 0x0697, - 0x0002, 0x0016, 0x06a2, 0x06a2, 0x0001, 0x0016, 0x0685, 0x0003, - 0x0472, 0x0475, 0x047c, 0x0001, 0x0016, 0x06ae, 0x0005, 0x0016, - 0x06bd, 0x06c5, 0x06cb, 0x06b2, 0x06d2, 0x0002, 0x047f, 0x0483, - 0x0002, 0x0016, 0x06e9, 0x06de, 0x0002, 0x0016, 0x0702, 0x06f6, - 0x0003, 0x048b, 0x048e, 0x0495, 0x0001, 0x0016, 0x06ae, 0x0005, - // Entry D480 - D4BF - 0x0016, 0x06bd, 0x06c5, 0x06cb, 0x06b2, 0x06d2, 0x0002, 0x0498, - 0x049c, 0x0002, 0x0016, 0x06e9, 0x06de, 0x0002, 0x0016, 0x0702, - 0x06f6, 0x0003, 0x04a4, 0x04a7, 0x04ae, 0x0001, 0x0016, 0x06ae, - 0x0005, 0x0016, 0x06bd, 0x06c5, 0x06cb, 0x06b2, 0x06d2, 0x0002, - 0x04b1, 0x04b5, 0x0002, 0x0016, 0x06e9, 0x06de, 0x0002, 0x0016, - 0x0702, 0x06f6, 0x0001, 0x04bb, 0x0001, 0x0016, 0x0710, 0x0003, - 0x0000, 0x04c2, 0x04c7, 0x0003, 0x0016, 0x071a, 0x072a, 0x0739, - 0x0002, 0x04ca, 0x04ce, 0x0002, 0x0016, 0x0760, 0x074b, 0x0002, - // Entry D4C0 - D4FF - 0x0016, 0x078c, 0x0776, 0x0003, 0x0000, 0x04d6, 0x04db, 0x0003, - 0x0016, 0x07a3, 0x07af, 0x07ba, 0x0002, 0x04de, 0x04e2, 0x0002, - 0x0016, 0x07d9, 0x07c8, 0x0002, 0x0016, 0x07fd, 0x07eb, 0x0003, - 0x0000, 0x04ea, 0x04ef, 0x0003, 0x0016, 0x07a3, 0x07af, 0x07ba, - 0x0002, 0x04f2, 0x04f6, 0x0002, 0x0016, 0x0810, 0x0810, 0x0002, - 0x0016, 0x081e, 0x081e, 0x0003, 0x0000, 0x04fe, 0x0503, 0x0003, - 0x0016, 0x082d, 0x083c, 0x084a, 0x0002, 0x0506, 0x050a, 0x0002, - 0x0016, 0x086f, 0x085b, 0x0002, 0x0016, 0x0899, 0x0884, 0x0003, - // Entry D500 - D53F - 0x0000, 0x0512, 0x0517, 0x0003, 0x0016, 0x08af, 0x08bb, 0x08c6, - 0x0002, 0x051a, 0x051e, 0x0002, 0x0016, 0x08e5, 0x08d4, 0x0002, - 0x0016, 0x0909, 0x08f7, 0x0003, 0x0000, 0x0526, 0x052b, 0x0003, - 0x0016, 0x08af, 0x08bb, 0x08c6, 0x0002, 0x052e, 0x0532, 0x0002, - 0x0016, 0x091c, 0x091c, 0x0002, 0x0016, 0x092a, 0x092a, 0x0003, - 0x0000, 0x053a, 0x053f, 0x0003, 0x0016, 0x0939, 0x094a, 0x095a, - 0x0002, 0x0542, 0x0546, 0x0002, 0x0016, 0x0983, 0x096d, 0x0002, - 0x0016, 0x09b1, 0x099a, 0x0003, 0x0000, 0x054e, 0x0553, 0x0003, - // Entry D540 - D57F - 0x0016, 0x09c9, 0x09d5, 0x09e0, 0x0002, 0x0556, 0x055a, 0x0002, - 0x0016, 0x09ff, 0x09ee, 0x0002, 0x0016, 0x0a23, 0x0a11, 0x0003, - 0x0000, 0x0562, 0x0567, 0x0003, 0x0016, 0x09c9, 0x09d5, 0x09e0, - 0x0002, 0x056a, 0x056e, 0x0002, 0x0016, 0x0a36, 0x0a36, 0x0002, - 0x0016, 0x0a44, 0x0a44, 0x0003, 0x0000, 0x0576, 0x057b, 0x0003, - 0x0016, 0x0a53, 0x0a64, 0x0a74, 0x0002, 0x057e, 0x0582, 0x0002, - 0x0016, 0x0a9d, 0x0a87, 0x0002, 0x0016, 0x0acb, 0x0ab4, 0x0003, - 0x0000, 0x058a, 0x058f, 0x0003, 0x0016, 0x0ae3, 0x0aef, 0x0afa, - // Entry D580 - D5BF - 0x0002, 0x0592, 0x0596, 0x0002, 0x0016, 0x0b19, 0x0b08, 0x0002, - 0x0016, 0x0b3d, 0x0b2b, 0x0003, 0x0000, 0x059e, 0x05a3, 0x0003, - 0x0016, 0x0ae3, 0x0aef, 0x0afa, 0x0002, 0x05a6, 0x05aa, 0x0002, - 0x0016, 0x0b50, 0x0b50, 0x0002, 0x0016, 0x0b5e, 0x0b5e, 0x0003, - 0x0000, 0x05b2, 0x05b7, 0x0003, 0x0016, 0x0b6d, 0x0b80, 0x0b92, - 0x0002, 0x05ba, 0x05be, 0x0002, 0x0016, 0x0bbf, 0x0ba7, 0x0002, - 0x0016, 0x0bf1, 0x0bd8, 0x0003, 0x0000, 0x05c6, 0x05cb, 0x0003, - 0x0016, 0x0c0b, 0x0c17, 0x0c22, 0x0002, 0x05ce, 0x05d2, 0x0002, - // Entry D5C0 - D5FF - 0x0016, 0x0c41, 0x0c30, 0x0002, 0x0016, 0x0c65, 0x0c53, 0x0003, - 0x0000, 0x05da, 0x05df, 0x0003, 0x0016, 0x0c0b, 0x0c17, 0x0c22, - 0x0002, 0x05e2, 0x05e6, 0x0002, 0x0016, 0x0c78, 0x0c78, 0x0002, - 0x0016, 0x0c86, 0x0c86, 0x0003, 0x0000, 0x05ee, 0x05f3, 0x0003, - 0x0016, 0x0c95, 0x0ca5, 0x0cb4, 0x0002, 0x05f6, 0x05fa, 0x0002, - 0x0016, 0x0cdb, 0x0cc6, 0x0002, 0x0016, 0x0d07, 0x0cf1, 0x0003, - 0x0000, 0x0602, 0x0607, 0x0003, 0x0016, 0x0d1e, 0x0d2a, 0x0d35, - 0x0002, 0x060a, 0x060e, 0x0002, 0x0016, 0x0d54, 0x0d43, 0x0002, - // Entry D600 - D63F - 0x0016, 0x0d78, 0x0d66, 0x0003, 0x0000, 0x0616, 0x061b, 0x0003, - 0x0016, 0x0d1e, 0x0d2a, 0x0d35, 0x0002, 0x061e, 0x0622, 0x0002, - 0x0016, 0x0d8b, 0x0d8b, 0x0002, 0x0016, 0x0d99, 0x0d99, 0x0003, - 0x0000, 0x062a, 0x062f, 0x0003, 0x0016, 0x0da8, 0x0db8, 0x0dc7, - 0x0002, 0x0632, 0x0636, 0x0002, 0x0016, 0x0dee, 0x0dd9, 0x0002, - 0x0016, 0x0e1a, 0x0e04, 0x0003, 0x0000, 0x063e, 0x0643, 0x0003, - 0x0016, 0x0e31, 0x0e3d, 0x0e48, 0x0002, 0x0646, 0x064a, 0x0002, - 0x0016, 0x0e67, 0x0e56, 0x0002, 0x0016, 0x0e8b, 0x0e79, 0x0003, - // Entry D640 - D67F - 0x0000, 0x0652, 0x0657, 0x0003, 0x0016, 0x0e31, 0x0e3d, 0x0e48, - 0x0002, 0x065a, 0x065e, 0x0002, 0x0016, 0x0e9e, 0x0e9e, 0x0002, - 0x0016, 0x0eac, 0x0eac, 0x0001, 0x0664, 0x0001, 0x0016, 0x0ebb, - 0x0003, 0x066b, 0x066e, 0x0672, 0x0001, 0x0016, 0x0ec8, 0x0002, - 0x0016, 0xffff, 0x0ecf, 0x0002, 0x0675, 0x0679, 0x0002, 0x0016, - 0x0eee, 0x0ee0, 0x0002, 0x0016, 0x0f0c, 0x0efd, 0x0003, 0x0681, - 0x0684, 0x0688, 0x0001, 0x0016, 0x0f1c, 0x0002, 0x0016, 0xffff, - 0x0ecf, 0x0002, 0x068b, 0x068f, 0x0002, 0x0016, 0x0f21, 0x0f21, - // Entry D680 - D6BF - 0x0002, 0x0016, 0x0f2d, 0x0f2d, 0x0003, 0x0697, 0x069a, 0x069e, - 0x0001, 0x0016, 0x0f1c, 0x0002, 0x0016, 0xffff, 0x0ecf, 0x0002, - 0x06a1, 0x06a5, 0x0002, 0x0016, 0x0f21, 0x0f21, 0x0002, 0x0016, - 0x0f2d, 0x0f2d, 0x0003, 0x06ad, 0x06b0, 0x06b4, 0x0001, 0x0000, - 0x1d84, 0x0002, 0x0016, 0xffff, 0x0f3a, 0x0002, 0x06b7, 0x06bb, - 0x0002, 0x0016, 0x0f59, 0x0f4b, 0x0002, 0x0016, 0x0f77, 0x0f68, - 0x0003, 0x06c3, 0x06c6, 0x06ca, 0x0001, 0x0016, 0x0f87, 0x0002, - 0x0016, 0xffff, 0x0f3a, 0x0002, 0x06cd, 0x06d1, 0x0002, 0x0016, - // Entry D6C0 - D6FF - 0x0f8c, 0x0f8c, 0x0002, 0x0016, 0x0f98, 0x0f98, 0x0003, 0x06d9, - 0x06dc, 0x06e0, 0x0001, 0x0016, 0x0f87, 0x0002, 0x0016, 0xffff, - 0x0f3a, 0x0002, 0x06e3, 0x06e7, 0x0002, 0x0016, 0x0fa5, 0x0fa5, - 0x0002, 0x0016, 0x0fae, 0x0fae, 0x0003, 0x06ef, 0x06f2, 0x06f6, - 0x0001, 0x0009, 0x030c, 0x0002, 0x0016, 0xffff, 0x0fb8, 0x0002, - 0x06f9, 0x06fd, 0x0002, 0x0016, 0x0fcd, 0x0fbe, 0x0002, 0x0016, - 0x0fed, 0x0fdd, 0x0003, 0x0705, 0x0000, 0x0708, 0x0001, 0x0016, - 0x0ffe, 0x0002, 0x070b, 0x070f, 0x0002, 0x0016, 0x1003, 0x1003, - // Entry D700 - D73F - 0x0002, 0x0016, 0x100f, 0x100f, 0x0003, 0x0717, 0x0000, 0x071a, - 0x0001, 0x0016, 0x0ffe, 0x0002, 0x071d, 0x0721, 0x0002, 0x0016, - 0x101c, 0x101c, 0x0002, 0x0016, 0x1025, 0x1025, 0x0001, 0x0727, - 0x0001, 0x0016, 0x102f, 0x0004, 0x072f, 0x0734, 0x0739, 0x0748, - 0x0003, 0x0000, 0x1dc7, 0x22ce, 0x22d5, 0x0003, 0x0016, 0x1038, - 0x1041, 0x1050, 0x0002, 0x0000, 0x073c, 0x0003, 0x0000, 0x0743, - 0x0740, 0x0001, 0x0016, 0x105f, 0x0003, 0x0016, 0xffff, 0x1075, - 0x108a, 0x0002, 0x092f, 0x074b, 0x0003, 0x074f, 0x088f, 0x07ef, - // Entry D740 - D77F - 0x009e, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0x111c, 0x116a, - 0x11ca, 0x1200, 0x1265, 0x12d6, 0x131e, 0x1392, 0x13c2, 0x144c, - 0x1485, 0x14ca, 0x151b, 0x1557, 0x158d, 0x15e4, 0x164d, 0x1698, - 0x16e6, 0x173a, 0x176a, 0xffff, 0xffff, 0x17c8, 0xffff, 0x180d, - 0xffff, 0x1862, 0x1895, 0x18d4, 0x1913, 0xffff, 0xffff, 0x197b, - 0x19c3, 0x19ff, 0xffff, 0xffff, 0xffff, 0x1a6c, 0xffff, 0x1abd, - 0x1b1a, 0xffff, 0x1b81, 0x1bd8, 0x1c20, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1cb7, 0xffff, 0xffff, 0x1d1f, 0x1d61, 0xffff, 0xffff, - // Entry D780 - D7BF - 0x1dc6, 0x1e0e, 0x1e44, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1ee7, 0x1f20, 0x1f53, 0x1f92, 0x1fce, 0xffff, 0xffff, - 0x2036, 0xffff, 0x2081, 0xffff, 0xffff, 0x20f2, 0xffff, 0x216c, - 0xffff, 0xffff, 0xffff, 0xffff, 0x21e2, 0xffff, 0x2227, 0x2290, - 0x22e4, 0x2323, 0xffff, 0xffff, 0xffff, 0x2383, 0x23ce, 0x240a, - 0xffff, 0xffff, 0x2465, 0x24d5, 0x2514, 0x253e, 0xffff, 0xffff, - 0x25a3, 0x25ee, 0x262d, 0xffff, 0x2688, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2777, 0x27ad, 0x27dd, 0xffff, 0xffff, 0xffff, - // Entry D7C0 - D7FF - 0xffff, 0xffff, 0xffff, 0xffff, 0x2874, 0xffff, 0xffff, 0x28c4, - 0xffff, 0x290e, 0xffff, 0x295c, 0x29a3, 0x29df, 0xffff, 0x2a21, - 0x2a60, 0xffff, 0xffff, 0xffff, 0x2acc, 0x2aff, 0xffff, 0xffff, - 0x109d, 0x119a, 0x13ec, 0x1419, 0xffff, 0xffff, 0x212b, 0x2721, - 0x009e, 0x0016, 0x10c7, 0x10d8, 0x10f1, 0x1106, 0x1132, 0x1176, - 0x11d8, 0x121d, 0x1286, 0x12ea, 0x1340, 0x139e, 0x13cc, 0x145b, - 0x1498, 0x14e1, 0x152b, 0x1565, 0x15a6, 0x1603, 0x1662, 0x16ae, - 0x16fe, 0x1746, 0x177b, 0x17a9, 0x17b5, 0x17d7, 0x1801, 0x181d, - // Entry D800 - D83F - 0x1854, 0x186f, 0x18a6, 0x18e5, 0x1925, 0x1955, 0x196a, 0x198f, - 0x19d3, 0x1a0f, 0x1a3b, 0x1a46, 0x1a5e, 0x1a7c, 0x1aa8, 0x1ad5, - 0x1b2f, 0x1b6e, 0x1b97, 0x1bec, 0x1c2d, 0x1c53, 0x1c6d, 0x1c9b, - 0x1caa, 0x1cc7, 0x1cf3, 0x1d07, 0x1d31, 0x1d74, 0x1db0, 0x1dba, - 0x1dda, 0x1e1c, 0x1e4f, 0x1e71, 0x1e7f, 0x1e94, 0x1ea3, 0x1ebc, - 0x1ed1, 0x1ef6, 0x1f2d, 0x1f64, 0x1fa2, 0x1fdf, 0x200d, 0x2021, - 0x2047, 0x2075, 0x2092, 0x20c0, 0x20e0, 0x2101, 0x2158, 0x2179, - 0x219f, 0x21b0, 0x21bf, 0x21ce, 0x21f1, 0x221b, 0x2246, 0x22a8, - // Entry D840 - D87F - 0x22f5, 0x2331, 0x2359, 0x2366, 0x2371, 0x2398, 0x23de, 0x241b, - 0x2449, 0x2453, 0x247e, 0x24e6, 0x251e, 0x2551, 0x2583, 0x258e, - 0x25b8, 0x25ff, 0x2641, 0x2675, 0x26a7, 0x26f1, 0x2705, 0x2711, - 0x275c, 0x276a, 0x2785, 0x27b9, 0x27e8, 0x280a, 0x281a, 0x2828, - 0x283b, 0x284f, 0x285d, 0x2868, 0x2880, 0x28a4, 0x28b7, 0x28d5, - 0x2903, 0x2920, 0x2950, 0x2970, 0x29b3, 0x29ec, 0x2a12, 0x2a32, - 0x2a6f, 0x2a99, 0x2aa5, 0x2ab5, 0x2ad9, 0x2b12, 0x1da6, 0x24bc, - 0x10a7, 0x11a6, 0x13f7, 0x1426, 0x1849, 0x20d1, 0x2136, 0x2731, - // Entry D880 - D8BF - 0x009e, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0x114e, 0x1188, - 0x11ec, 0x1241, 0x12ae, 0x1304, 0x1369, 0x13b0, 0x13dc, 0x1470, - 0x14b1, 0x14fe, 0x1541, 0x1579, 0x15c5, 0x1628, 0x167d, 0x16ca, - 0x171c, 0x1758, 0x1792, 0xffff, 0xffff, 0x17ec, 0xffff, 0x1833, - 0xffff, 0x1882, 0x18bd, 0x18fc, 0x193d, 0xffff, 0xffff, 0x19a9, - 0x19e9, 0x1a25, 0xffff, 0xffff, 0xffff, 0x1a92, 0xffff, 0x1af3, - 0x1b4a, 0xffff, 0x1bb3, 0x1c06, 0x1c40, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1cdd, 0xffff, 0xffff, 0x1d49, 0x1d8d, 0xffff, 0xffff, - // Entry D8C0 - D8FF - 0x1df4, 0x1e30, 0x1e60, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1f0b, 0x1f40, 0x1f7b, 0x1fb8, 0x1ff6, 0xffff, 0xffff, - 0x205e, 0xffff, 0x20a9, 0xffff, 0xffff, 0x2116, 0xffff, 0x218c, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2206, 0xffff, 0x226b, 0x22c6, - 0x230c, 0x2345, 0xffff, 0xffff, 0xffff, 0x23b3, 0x23f4, 0x2432, - 0xffff, 0xffff, 0x249d, 0x24fd, 0x252e, 0x256a, 0xffff, 0xffff, - 0x25d3, 0x2616, 0x265b, 0xffff, 0x26cc, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2799, 0x27cb, 0x27f9, 0xffff, 0xffff, 0xffff, - // Entry D900 - D93F - 0xffff, 0xffff, 0xffff, 0xffff, 0x2892, 0xffff, 0xffff, 0x28ec, - 0xffff, 0x2938, 0xffff, 0x2989, 0x29c9, 0x29ff, 0xffff, 0x2a49, - 0x2a84, 0xffff, 0xffff, 0xffff, 0x2aec, 0x2b2b, 0xffff, 0xffff, - 0x10b7, 0x11b8, 0x1408, 0x1439, 0xffff, 0xffff, 0x2147, 0x2747, - 0x0003, 0x0933, 0x0999, 0x0966, 0x0031, 0x0016, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry D940 - D97F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, - 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry D980 - D9BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, - 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1b15, 0x1b69, 0xffff, 0x1bd3, 0x0001, 0x0002, 0x0008, - // Entry D9C0 - D9FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, - 0x0004, 0x0010, 0x0000, 0x0000, 0x0057, 0x0002, 0x0013, 0x0035, - 0x0003, 0x0017, 0x0000, 0x0026, 0x000d, 0x0017, 0xffff, 0x0000, - 0x0006, 0x000b, 0x0011, 0x0016, 0x001a, 0x001f, 0x0024, 0x0029, - 0x002e, 0x0033, 0x0038, 0x000d, 0x0017, 0xffff, 0x003d, 0x0045, - 0x000b, 0x004d, 0x0016, 0x001a, 0x001f, 0x0053, 0x005a, 0x0064, - 0x006c, 0x0075, 0x0003, 0x0039, 0x0000, 0x0048, 0x000d, 0x0017, - 0xffff, 0x007e, 0x0083, 0x0087, 0x008c, 0x0016, 0x0090, 0x0094, - // Entry DA00 - DA3F - 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x000d, 0x0017, 0xffff, - 0x003d, 0x0045, 0x000b, 0x004d, 0x0016, 0x001a, 0x001f, 0x0053, - 0x005a, 0x0064, 0x006c, 0x0075, 0x0002, 0x0000, 0x005a, 0x0002, - 0x0000, 0x005d, 0x0002, 0x0060, 0x0063, 0x0001, 0x0000, 0x1f62, - 0x0001, 0x0000, 0x1f66, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0001, 0x000d, - 0x0002, 0x0010, 0x0032, 0x0003, 0x0014, 0x0000, 0x0023, 0x000d, - 0x0017, 0xffff, 0x0000, 0x0006, 0x000b, 0x0011, 0x0016, 0x001a, - // Entry DA40 - DA7F - 0x001f, 0x0024, 0x0029, 0x002e, 0x0033, 0x0038, 0x000d, 0x0017, - 0xffff, 0x003d, 0x0045, 0x000b, 0x004d, 0x0016, 0x001a, 0x001f, - 0x0053, 0x005a, 0x0064, 0x006c, 0x0075, 0x0003, 0x0036, 0x0000, - 0x0045, 0x000d, 0x0017, 0xffff, 0x007e, 0x0083, 0x0087, 0x008c, - 0x0016, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, - 0x000d, 0x0017, 0xffff, 0x003d, 0x0045, 0x000b, 0x004d, 0x0016, - 0x001a, 0x001f, 0x0053, 0x005a, 0x0064, 0x006c, 0x0075, 0x0001, - 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry DA80 - DABF - 0x0000, 0x000b, 0x0004, 0x0000, 0x0000, 0x0000, 0x0010, 0x0002, - 0x0000, 0x0013, 0x0002, 0x0000, 0x0016, 0x0002, 0x0019, 0x001c, - 0x0001, 0x0000, 0x1f62, 0x0001, 0x0000, 0x1f66, 0x0001, 0x0002, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0008, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0001, 0x0016, 0x0002, 0x0000, 0x0019, 0x0002, - 0x001c, 0x001f, 0x0001, 0x0016, 0x03a2, 0x0001, 0x0016, 0x03a8, - 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry DAC0 - DAFF - 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, - 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0001, 0x1fcc, 0x0008, 0x002f, - 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, - 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0017, - 0xffff, 0x00ac, 0x00b1, 0x00b5, 0x00b9, 0x00bd, 0x00c0, 0x00c5, - 0x00ca, 0x00cd, 0x00a0, 0x00d1, 0x00d5, 0x000d, 0x0017, 0xffff, - // Entry DB00 - DB3F - 0x00d9, 0x00e2, 0x00ec, 0x00f2, 0x00bd, 0x00f9, 0x0101, 0x00ca, - 0x0108, 0x0112, 0x011b, 0x0125, 0x0002, 0x0000, 0x0057, 0x000d, - 0x0017, 0xffff, 0x012f, 0x0132, 0x0134, 0x0136, 0x0134, 0x012f, - 0x012f, 0x0138, 0x013a, 0x013c, 0x013e, 0x0140, 0x0002, 0x0069, - 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, 0x06c6, - 0x20e2, 0x20e6, 0x20ea, 0x20ee, 0x20f2, 0x20f6, 0x0007, 0x0017, - 0x0142, 0x0149, 0x0150, 0x0159, 0x0160, 0x0169, 0x0170, 0x0002, - 0x0000, 0x0082, 0x0007, 0x0000, 0x19c7, 0x04dd, 0x04dd, 0x228e, - // Entry DB40 - DB7F - 0x22d9, 0x22db, 0x22dd, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, - 0x0098, 0x0005, 0x0017, 0xffff, 0x0177, 0x017a, 0x017d, 0x0180, - 0x0005, 0x0017, 0xffff, 0x0183, 0x018c, 0x0195, 0x019e, 0x0001, - 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, - 0x0001, 0x0017, 0x01a7, 0x0001, 0x0017, 0x01b0, 0x0002, 0x00b1, - 0x00b4, 0x0001, 0x0017, 0x01a7, 0x0001, 0x0017, 0x01b0, 0x0003, - 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0017, 0x01bb, - 0x01c5, 0x0001, 0x00c3, 0x0002, 0x0017, 0x01d2, 0x01d5, 0x0004, - // Entry DB80 - DBBF - 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, - 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry DBC0 - DBFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, - 0x014e, 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, - 0x0000, 0x015d, 0x0001, 0x012c, 0x0001, 0x0017, 0x01d8, 0x0001, - 0x0131, 0x0001, 0x0017, 0x01de, 0x0001, 0x0136, 0x0001, 0x0017, - 0x01e4, 0x0001, 0x013b, 0x0001, 0x0017, 0x01ea, 0x0002, 0x0141, - 0x0144, 0x0001, 0x0017, 0x01ef, 0x0003, 0x0017, 0x01f5, 0x01f8, - // Entry DC00 - DC3F - 0x01fd, 0x0001, 0x014b, 0x0001, 0x0017, 0x0202, 0x0001, 0x0150, - 0x0001, 0x0017, 0x021a, 0x0001, 0x0155, 0x0001, 0x0017, 0x0220, - 0x0001, 0x015a, 0x0001, 0x0017, 0x0227, 0x0001, 0x015f, 0x0001, - 0x0017, 0x022c, 0x0003, 0x0004, 0x01a0, 0x04f1, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, - 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0013, 0x06bb, - 0x0001, 0x0013, 0x0477, 0x0001, 0x0008, 0x0627, 0x0001, 0x0017, - // Entry DC40 - DC7F - 0x0235, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0153, - 0x016d, 0x017e, 0x018f, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, - 0x0057, 0x0066, 0x000d, 0x0015, 0xffff, 0x000b, 0x0010, 0x2358, - 0x001a, 0x235e, 0x0023, 0x0028, 0x2363, 0x0032, 0x0037, 0x2368, - 0x0041, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, 0x1f9a, 0x1f9c, - 0x1f9a, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x1f96, 0x2008, - // Entry DC80 - DCBF - 0x000d, 0x0017, 0xffff, 0x0242, 0x024a, 0x0253, 0x025a, 0x0261, - 0x0266, 0x026d, 0x0274, 0x027c, 0x0286, 0x028e, 0x0297, 0x0003, - 0x0079, 0x0088, 0x0097, 0x000d, 0x000d, 0xffff, 0x0059, 0x005d, - 0x3179, 0x0065, 0x3175, 0x006d, 0x0071, 0x317e, 0x0079, 0x007d, - 0x3182, 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, 0x1f9a, - 0x1f9c, 0x1f9a, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x1f96, - 0x2008, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, 0x3186, 0x318c, - 0x3175, 0x3192, 0x3198, 0x319e, 0x3151, 0x315b, 0x31a5, 0x316c, - // Entry DCC0 - DCFF - 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, - 0x00c1, 0x0007, 0x0008, 0x03ac, 0x4f04, 0x4f09, 0x4f0e, 0x4f12, - 0x4f16, 0x4f1b, 0x0007, 0x0000, 0x1f96, 0x21ec, 0x22df, 0x2002, - 0x2002, 0x21ec, 0x2002, 0x0007, 0x0017, 0x02a0, 0x02a3, 0x02a7, - 0x02aa, 0x02ad, 0x02b0, 0x02b4, 0x0007, 0x0017, 0x02b7, 0x02c0, - 0x02cc, 0x02d5, 0x02dc, 0x02e5, 0x02eb, 0x0005, 0x00d9, 0x00e2, - 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0008, 0x03ac, 0x4f04, 0x4f09, - 0x4f0e, 0x4f12, 0x4f16, 0x4f1b, 0x0007, 0x0000, 0x1f96, 0x21ec, - // Entry DD00 - DD3F - 0x22df, 0x2002, 0x2002, 0x21ec, 0x2002, 0x0007, 0x0017, 0x02a0, - 0x02a3, 0x02a7, 0x02aa, 0x02ad, 0x02b0, 0x02b4, 0x0007, 0x0017, - 0x02b7, 0x02c0, 0x02cc, 0x02d5, 0x02dc, 0x02e5, 0x02eb, 0x0002, - 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0000, - 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0017, 0xffff, 0x02f2, - 0x02fd, 0x0308, 0x0313, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, - 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, - // Entry DD40 - DD7F - 0xffff, 0x0033, 0x0035, 0x0037, 0x0039, 0x0005, 0x0017, 0xffff, - 0x02f2, 0x02fd, 0x0308, 0x0313, 0x0001, 0x0134, 0x0003, 0x0138, - 0x0141, 0x014a, 0x0002, 0x013b, 0x013e, 0x0001, 0x0017, 0x031e, - 0x0001, 0x0017, 0x0329, 0x0002, 0x0144, 0x0147, 0x0001, 0x0013, - 0x061b, 0x0001, 0x0017, 0x0336, 0x0002, 0x014d, 0x0150, 0x0001, - 0x0017, 0x031e, 0x0001, 0x0017, 0x0329, 0x0003, 0x0162, 0x0000, - 0x0157, 0x0002, 0x015a, 0x015e, 0x0002, 0x0017, 0x033d, 0x0374, - 0x0002, 0x0017, 0x035a, 0x038f, 0x0002, 0x0165, 0x0169, 0x0002, - // Entry DD80 - DDBF - 0x0017, 0x03a4, 0x03ba, 0x0002, 0x0017, 0x03af, 0x03c5, 0x0004, - 0x017b, 0x0175, 0x0172, 0x0178, 0x0001, 0x0016, 0x0460, 0x0001, - 0x0013, 0x06b1, 0x0001, 0x0017, 0x03cc, 0x0001, 0x0008, 0x0620, - 0x0004, 0x018c, 0x0186, 0x0183, 0x0189, 0x0001, 0x0005, 0x0082, - 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, - 0x00a1, 0x0004, 0x019d, 0x0197, 0x0194, 0x019a, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0040, 0x01e1, 0x0000, 0x0000, 0x01e6, 0x0203, - // Entry DDC0 - DDFF - 0x021b, 0x0233, 0x024b, 0x0263, 0x027b, 0x0298, 0x02b0, 0x02c8, - 0x02e5, 0x02fd, 0x0000, 0x0000, 0x0000, 0x0315, 0x0332, 0x034a, - 0x0000, 0x0000, 0x0000, 0x0362, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0367, 0x036f, 0x0377, 0x037f, 0x0387, 0x038f, 0x0397, - 0x039f, 0x03a7, 0x03af, 0x03b7, 0x03bf, 0x03c7, 0x03cf, 0x03d7, - 0x03df, 0x03e7, 0x03ef, 0x03f7, 0x03ff, 0x0407, 0x0000, 0x040f, - 0x0000, 0x0414, 0x042c, 0x0444, 0x045c, 0x0474, 0x048c, 0x04a4, - 0x04bc, 0x04d4, 0x04ec, 0x0001, 0x01e3, 0x0001, 0x0017, 0x03d2, - // Entry DE00 - DE3F - 0x0003, 0x01ea, 0x01ed, 0x01f2, 0x0001, 0x0017, 0x03d9, 0x0003, - 0x0017, 0x03df, 0x03e5, 0x03ed, 0x0002, 0x01f5, 0x01fc, 0x0005, - 0x0017, 0x041b, 0x03f3, 0xffff, 0x0400, 0x040e, 0x0005, 0x0017, - 0x044a, 0x0427, 0xffff, 0x0438, 0x044a, 0x0003, 0x0207, 0x0000, - 0x020a, 0x0001, 0x0017, 0x045c, 0x0002, 0x020d, 0x0214, 0x0005, - 0x0013, 0x0776, 0x0776, 0xffff, 0x0776, 0x0776, 0x0005, 0x0017, - 0x045f, 0x045f, 0xffff, 0x045f, 0x045f, 0x0003, 0x021f, 0x0000, - 0x0222, 0x0001, 0x0017, 0x045c, 0x0002, 0x0225, 0x022c, 0x0005, - // Entry DE40 - DE7F - 0x0013, 0x0776, 0x0776, 0xffff, 0x0776, 0x0776, 0x0005, 0x0017, - 0x045f, 0x045f, 0xffff, 0x045f, 0x045f, 0x0003, 0x0237, 0x0000, - 0x023a, 0x0001, 0x0017, 0x046c, 0x0002, 0x023d, 0x0244, 0x0005, - 0x0017, 0x04a3, 0x0474, 0xffff, 0x0483, 0x0493, 0x0005, 0x0017, - 0x04dd, 0x04b4, 0xffff, 0x04c8, 0x04dd, 0x0003, 0x024f, 0x0000, - 0x0252, 0x0001, 0x0017, 0x04f2, 0x0002, 0x0255, 0x025c, 0x0005, - 0x0017, 0x04f9, 0x04f9, 0xffff, 0x04f9, 0x04f9, 0x0005, 0x0017, - 0x0507, 0x0507, 0xffff, 0x0507, 0x0507, 0x0003, 0x0267, 0x0000, - // Entry DE80 - DEBF - 0x026a, 0x0001, 0x0001, 0x0117, 0x0002, 0x026d, 0x0274, 0x0005, - 0x0017, 0x0518, 0x0518, 0xffff, 0x0518, 0x0518, 0x0005, 0x0017, - 0x0523, 0x0523, 0xffff, 0x0523, 0x0523, 0x0003, 0x027f, 0x0282, - 0x0287, 0x0001, 0x0017, 0x0531, 0x0003, 0x0017, 0x0538, 0x0547, - 0x0552, 0x0002, 0x028a, 0x0291, 0x0005, 0x0017, 0x058e, 0x0562, - 0xffff, 0x0570, 0x057f, 0x0005, 0x0017, 0x05c5, 0x059e, 0xffff, - 0x05b1, 0x05c5, 0x0003, 0x029c, 0x0000, 0x029f, 0x0001, 0x0017, - 0x05d9, 0x0002, 0x02a2, 0x02a9, 0x0005, 0x0017, 0x05df, 0x05df, - // Entry DEC0 - DEFF - 0xffff, 0x05df, 0x05df, 0x0005, 0x0017, 0x05ec, 0x05ec, 0xffff, - 0x05ec, 0x05ec, 0x0003, 0x02b4, 0x0000, 0x02b7, 0x0001, 0x0017, - 0x05d9, 0x0002, 0x02ba, 0x02c1, 0x0005, 0x0017, 0x05df, 0x05df, - 0xffff, 0x05df, 0x05df, 0x0005, 0x0017, 0x05ec, 0x05ec, 0xffff, - 0x05ec, 0x05ec, 0x0003, 0x02cc, 0x02cf, 0x02d4, 0x0001, 0x0017, - 0x05fc, 0x0003, 0x0017, 0x0604, 0x0614, 0x0620, 0x0002, 0x02d7, - 0x02de, 0x0005, 0x0017, 0x0660, 0x0631, 0xffff, 0x0640, 0x0650, - 0x0005, 0x0017, 0x069a, 0x0671, 0xffff, 0x0685, 0x069a, 0x0003, - // Entry DF00 - DF3F - 0x02e9, 0x0000, 0x02ec, 0x0001, 0x0017, 0x06af, 0x0002, 0x02ef, - 0x02f6, 0x0005, 0x0017, 0x06b5, 0x06b5, 0xffff, 0x06b5, 0x06b5, - 0x0005, 0x0017, 0x06c2, 0x06c2, 0xffff, 0x06c2, 0x06c2, 0x0003, - 0x0301, 0x0000, 0x0304, 0x0001, 0x0017, 0x06af, 0x0002, 0x0307, - 0x030e, 0x0005, 0x0017, 0x06b5, 0x06b5, 0xffff, 0x06b5, 0x06b5, - 0x0005, 0x0017, 0x06c2, 0x06c2, 0xffff, 0x06c2, 0x06c2, 0x0003, - 0x0319, 0x031c, 0x0321, 0x0001, 0x0017, 0x06d2, 0x0003, 0x0017, - 0x06d8, 0x06dd, 0x06e4, 0x0002, 0x0324, 0x032b, 0x0005, 0x0017, - // Entry DF40 - DF7F - 0x070f, 0x06eb, 0xffff, 0x06f8, 0x0704, 0x0005, 0x0017, 0x073d, - 0x071c, 0xffff, 0x072c, 0x073d, 0x0003, 0x0336, 0x0000, 0x0339, - 0x0001, 0x0017, 0x06d2, 0x0002, 0x033c, 0x0343, 0x0005, 0x0017, - 0x074e, 0x06eb, 0xffff, 0x074e, 0x0704, 0x0005, 0x0017, 0x075a, - 0x075a, 0xffff, 0x075a, 0x075a, 0x0003, 0x034e, 0x0000, 0x0351, - 0x0001, 0x0017, 0x0769, 0x0002, 0x0354, 0x035b, 0x0005, 0x0017, - 0x076c, 0x076c, 0xffff, 0x076c, 0x076c, 0x0005, 0x0017, 0x0776, - 0x0776, 0xffff, 0x0776, 0x0776, 0x0001, 0x0364, 0x0001, 0x0017, - // Entry DF80 - DFBF - 0x0782, 0x0002, 0x0000, 0x036a, 0x0003, 0x0017, 0x0791, 0x07a2, - 0x07ae, 0x0002, 0x0000, 0x0372, 0x0003, 0x0017, 0x07c0, 0x07cd, - 0x07d5, 0x0002, 0x0000, 0x037a, 0x0003, 0x0017, 0x07e3, 0x07ef, - 0x07f6, 0x0002, 0x0000, 0x0382, 0x0003, 0x0017, 0x0803, 0x0817, - 0x0826, 0x0002, 0x0000, 0x038a, 0x0003, 0x0017, 0x083b, 0x084a, - 0x0854, 0x0002, 0x0000, 0x0392, 0x0003, 0x0017, 0x0864, 0x0871, - 0x0879, 0x0002, 0x0000, 0x039a, 0x0003, 0x0017, 0x0887, 0x0898, - 0x08a4, 0x0002, 0x0000, 0x03a2, 0x0003, 0x0017, 0x08b6, 0x08c5, - // Entry DFC0 - DFFF - 0x08cf, 0x0002, 0x0000, 0x03aa, 0x0003, 0x0017, 0x08df, 0x08eb, - 0x08f2, 0x0002, 0x0000, 0x03b2, 0x0003, 0x0017, 0x08ff, 0x090e, - 0x0918, 0x0002, 0x0000, 0x03ba, 0x0003, 0x0017, 0x0928, 0x0935, - 0x093d, 0x0002, 0x0000, 0x03c2, 0x0003, 0x0017, 0x094b, 0x0957, - 0x095e, 0x0002, 0x0000, 0x03ca, 0x0003, 0x0017, 0x096b, 0x097c, - 0x0989, 0x0002, 0x0000, 0x03d2, 0x0003, 0x0017, 0x099b, 0x09a8, - 0x09b1, 0x0002, 0x0000, 0x03da, 0x0003, 0x0017, 0x09bf, 0x09cb, - 0x09d3, 0x0002, 0x0000, 0x03e2, 0x0003, 0x0017, 0x09e0, 0x09ee, - // Entry E000 - E03F - 0x09f8, 0x0002, 0x0000, 0x03ea, 0x0003, 0x0017, 0x0a07, 0x0a15, - 0x0a1f, 0x0002, 0x0000, 0x03f2, 0x0003, 0x0017, 0x0a2e, 0x0a3b, - 0x0a44, 0x0002, 0x0000, 0x03fa, 0x0003, 0x0017, 0x0a52, 0x0a61, - 0x0a6b, 0x0002, 0x0000, 0x0402, 0x0003, 0x0017, 0x0a7b, 0x0a88, - 0x0a90, 0x0002, 0x0000, 0x040a, 0x0003, 0x0017, 0x0a9e, 0x0aaa, - 0x0ab1, 0x0001, 0x0411, 0x0001, 0x0017, 0x0abe, 0x0003, 0x0418, - 0x0000, 0x041b, 0x0001, 0x0017, 0x0acc, 0x0002, 0x041e, 0x0425, - 0x0005, 0x0017, 0x0b06, 0x0ad5, 0xffff, 0x0ae5, 0x0af6, 0x0005, - // Entry E040 - E07F - 0x0017, 0x0b3d, 0x0b15, 0xffff, 0x0b28, 0x0b3d, 0x0003, 0x0430, - 0x0000, 0x0433, 0x0001, 0x0017, 0x0b52, 0x0002, 0x0436, 0x043d, - 0x0005, 0x0017, 0x0b59, 0x0b59, 0xffff, 0x0b59, 0x0b59, 0x0005, - 0x0017, 0x0b67, 0x0b67, 0xffff, 0x0b67, 0x0b67, 0x0003, 0x0448, - 0x0000, 0x044b, 0x0001, 0x0000, 0x200e, 0x0002, 0x044e, 0x0455, - 0x0005, 0x0017, 0x0b78, 0x0b78, 0xffff, 0x0b78, 0x0b78, 0x0005, - 0x0017, 0x0b81, 0x0b81, 0xffff, 0x0b81, 0x0b81, 0x0003, 0x0460, - 0x0000, 0x0463, 0x0001, 0x000d, 0x0bf5, 0x0002, 0x0466, 0x046d, - // Entry E080 - E0BF - 0x0005, 0x000d, 0x31bd, 0x0c07, 0xffff, 0x31ae, 0x3108, 0x0005, - 0x0017, 0x0bb1, 0x0b8d, 0xffff, 0x0b9e, 0x0bb1, 0x0003, 0x0478, - 0x0000, 0x047b, 0x0001, 0x0001, 0x075a, 0x0002, 0x047e, 0x0485, - 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, 0x0c64, 0x0c64, 0x0005, - 0x0017, 0x0bc4, 0x0bc4, 0xffff, 0x0bc4, 0x0bc4, 0x0003, 0x0490, - 0x0000, 0x0493, 0x0001, 0x0000, 0x1f9a, 0x0002, 0x0496, 0x049d, - 0x0005, 0x0017, 0x0bd3, 0x0bd3, 0xffff, 0x0bd3, 0x0bd3, 0x0005, - 0x0017, 0x0bdc, 0x0bdc, 0xffff, 0x0bdc, 0x0bdc, 0x0003, 0x04a8, - // Entry E0C0 - E0FF - 0x0000, 0x04ab, 0x0001, 0x000d, 0x0c7f, 0x0002, 0x04ae, 0x04b5, - 0x0005, 0x000d, 0x31dc, 0x0c8c, 0xffff, 0x31cc, 0x3123, 0x0005, - 0x0017, 0x0c0e, 0x0be8, 0xffff, 0x0bfa, 0x0c0e, 0x0003, 0x04c0, - 0x0000, 0x04c3, 0x0001, 0x0001, 0x07d3, 0x0002, 0x04c6, 0x04cd, - 0x0005, 0x000d, 0x0cef, 0x0cef, 0xffff, 0x0cef, 0x0cef, 0x0005, - 0x0017, 0x0c22, 0x0c22, 0xffff, 0x0c22, 0x0c22, 0x0003, 0x04d8, - 0x0000, 0x04db, 0x0001, 0x0000, 0x2002, 0x0002, 0x04de, 0x04e5, - 0x0005, 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0x0fcd, 0x0fcd, 0x0005, - // Entry E100 - E13F - 0x0017, 0x0c31, 0x0c31, 0xffff, 0x0c31, 0x0c31, 0x0001, 0x04ee, - 0x0001, 0x0017, 0x0c3d, 0x0004, 0x04f6, 0x04fb, 0x0500, 0x050b, - 0x0003, 0x0000, 0x1dc7, 0x22ce, 0x22d5, 0x0003, 0x0017, 0x0c4a, - 0x0c5b, 0x0c6e, 0x0002, 0x0000, 0x0503, 0x0002, 0x0000, 0x0506, - 0x0003, 0x0017, 0xffff, 0x0c7d, 0x0c95, 0x0002, 0x06d4, 0x050e, - 0x0003, 0x05a8, 0x063e, 0x0512, 0x0094, 0x0017, 0x0cab, 0x0cba, - 0x0cce, 0x0ce6, 0x0d18, 0x0d6d, 0x0db0, 0x0e08, 0x0e8d, 0x0f13, - 0x0f91, 0xffff, 0x0ffb, 0x1036, 0x1076, 0x10c8, 0x1124, 0x1165, - // Entry E140 - E17F - 0x11b0, 0x1218, 0x1291, 0x12f8, 0x1359, 0x13a5, 0x13e5, 0x141f, - 0x142e, 0x144a, 0x147c, 0x1499, 0x14cd, 0x14eb, 0x152b, 0x1565, - 0x15a6, 0x15e2, 0x15f7, 0x161b, 0x1663, 0x16af, 0x16e1, 0x16eb, - 0x16fe, 0x172c, 0x176c, 0x1790, 0x17e9, 0x1831, 0x185d, 0x18b5, - 0x18f9, 0x192b, 0x1943, 0x1981, 0x1991, 0x19ae, 0x19e0, 0x19f7, - 0x1a25, 0x1a92, 0x1ae2, 0x1af7, 0x1b1c, 0x1b70, 0x1bb3, 0x1be3, - 0x1bef, 0x1c04, 0x1c14, 0x1c2a, 0x1c40, 0x1c67, 0x1ca4, 0x1ce2, - 0x1d22, 0xffff, 0x1d54, 0x1d6e, 0x1d95, 0x1dc5, 0x1de4, 0x1e1c, - // Entry E180 - E1BF - 0x1e29, 0x1e51, 0x1e8d, 0x1eb0, 0x1ee6, 0x1ef5, 0x1f04, 0x1f12, - 0x1f39, 0x1f6d, 0x1f94, 0x1ff8, 0x204c, 0x2094, 0x20c6, 0x20d5, - 0x20e2, 0x2103, 0x2154, 0x21a4, 0x21e2, 0x21ee, 0x2217, 0x226e, - 0x22b0, 0x22eb, 0x2323, 0x2330, 0x2357, 0x2399, 0x23d6, 0x240a, - 0x243f, 0x2491, 0x24a9, 0xffff, 0x24b6, 0x24c5, 0x24e1, 0xffff, - 0x2524, 0x2554, 0x2563, 0x2573, 0x2583, 0x259f, 0x25ae, 0x25b8, - 0x25d6, 0x260c, 0x261c, 0x2638, 0x2668, 0x2685, 0x26bb, 0x26d7, - 0x2719, 0x2759, 0x278b, 0x27ae, 0x27fb, 0x2833, 0x283e, 0x284c, - // Entry E1C0 - E1FF - 0x2873, 0x28b8, 0x0094, 0x0017, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0d00, 0x0d5e, 0x0da1, 0x0de4, 0x0e66, 0x0ef1, 0x0f6d, 0xffff, - 0x0fef, 0x1029, 0x1066, 0x10ac, 0x1116, 0x1156, 0x1199, 0x11f4, - 0x1276, 0x12dd, 0x1344, 0x1399, 0x13d3, 0xffff, 0xffff, 0x143c, - 0xffff, 0x148a, 0xffff, 0x14dc, 0x151f, 0x1559, 0x1593, 0xffff, - 0xffff, 0x160c, 0x164f, 0x16a1, 0xffff, 0xffff, 0xffff, 0x1717, - 0xffff, 0x177b, 0x17d0, 0xffff, 0x1844, 0x18a5, 0x18eb, 0xffff, - 0xffff, 0xffff, 0xffff, 0x19a0, 0xffff, 0xffff, 0x1a08, 0x1a75, - // Entry E200 - E23F - 0xffff, 0xffff, 0x1b05, 0x1b60, 0x1ba6, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1c5a, 0x1c97, 0x1cd4, 0x1d14, 0xffff, - 0xffff, 0xffff, 0x1d88, 0xffff, 0x1dd3, 0xffff, 0xffff, 0x1e3e, - 0xffff, 0x1ea0, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f2a, 0xffff, - 0x1f78, 0x1fe2, 0x203a, 0x2086, 0xffff, 0xffff, 0xffff, 0x20ef, - 0x2141, 0x2190, 0xffff, 0xffff, 0x21ff, 0x225d, 0x22a6, 0x22da, - 0xffff, 0xffff, 0x2347, 0x238d, 0x23c7, 0xffff, 0x2421, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x24d1, 0xffff, 0x2517, 0xffff, - // Entry E240 - E27F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x25c6, 0xffff, - 0xffff, 0x262b, 0xffff, 0x2675, 0xffff, 0x26c8, 0x270b, 0x274b, - 0xffff, 0x279b, 0x27ea, 0xffff, 0xffff, 0xffff, 0x2866, 0x28a3, - 0x0094, 0x0017, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d3b, 0x0d87, - 0x0dca, 0x0e37, 0x0ebf, 0x0f40, 0x0fc0, 0xffff, 0x1012, 0x104e, - 0x1091, 0x10ef, 0x113d, 0x117f, 0x11d2, 0x1247, 0x12b7, 0x131e, - 0x1379, 0x13bc, 0x1402, 0xffff, 0xffff, 0x1463, 0xffff, 0x14b3, - 0xffff, 0x1505, 0x1542, 0x157c, 0x15c4, 0xffff, 0xffff, 0x1635, - // Entry E280 - E2BF - 0x1682, 0x16c8, 0xffff, 0xffff, 0xffff, 0x174c, 0xffff, 0x17b0, - 0x180d, 0xffff, 0x1881, 0x18d0, 0x1912, 0xffff, 0xffff, 0xffff, - 0xffff, 0x19c7, 0xffff, 0xffff, 0x1a4d, 0x1aba, 0xffff, 0xffff, - 0x1b3e, 0x1b8b, 0x1bcb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1c7f, 0x1cbc, 0x1cfb, 0x1d3b, 0xffff, 0xffff, 0xffff, - 0x1dad, 0xffff, 0x1e00, 0xffff, 0xffff, 0x1e6f, 0xffff, 0x1ecb, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1f53, 0xffff, 0x1fbb, 0x2019, - 0x2069, 0x20ad, 0xffff, 0xffff, 0xffff, 0x2122, 0x2172, 0x21c3, - // Entry E2C0 - E2FF - 0xffff, 0xffff, 0x223a, 0x228a, 0x22c5, 0x2307, 0xffff, 0xffff, - 0x2372, 0x23b0, 0x23f0, 0xffff, 0x2468, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x24fc, 0xffff, 0x253c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x25f1, 0xffff, 0xffff, 0x2650, - 0xffff, 0x26a0, 0xffff, 0x26f1, 0x2732, 0x2772, 0xffff, 0x27cc, - 0x2817, 0xffff, 0xffff, 0xffff, 0x288b, 0x28d8, 0x0003, 0x06d8, - 0x073e, 0x070b, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry E300 - E33F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry E340 - E37F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, - 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry E380 - E3BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b15, - 0x1b69, 0xffff, 0x1bd3, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, - 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0001, - 0x1fcc, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, - 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, - // Entry E3C0 - E3FF - 0x0045, 0x000d, 0x0018, 0xffff, 0x0000, 0x0003, 0x000a, 0x0010, - 0x0015, 0x0019, 0x001e, 0x0022, 0x0027, 0x002d, 0x0031, 0x0035, - 0x000d, 0x0018, 0xffff, 0x003a, 0x0044, 0x004e, 0x0056, 0x0061, - 0x006a, 0x0078, 0x008c, 0x0096, 0x00a0, 0x00ab, 0x00b4, 0x0002, - 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2008, 0x2147, 0x2002, - 0x2008, 0x22e1, 0x22e1, 0x1f9a, 0x2008, 0x1f96, 0x1f9a, 0x2000, - 0x22e1, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, - 0x0007, 0x0018, 0x00c0, 0x00c4, 0x00cb, 0x00cf, 0x00d3, 0x00d8, - // Entry E400 - E43F - 0x00de, 0x0007, 0x0018, 0x00e2, 0x00e7, 0x00f0, 0x00f7, 0x0102, - 0x010a, 0x0115, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x22e1, - 0x1f9a, 0x1ffe, 0x1f9a, 0x2147, 0x22e3, 0x22e1, 0x0001, 0x008d, - 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0018, 0xffff, 0x011f, - 0x0124, 0x0129, 0x012e, 0x0005, 0x0018, 0xffff, 0x0133, 0x0148, - 0x0167, 0x0186, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, - 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0018, 0x01a6, 0x0001, 0x0018, - 0x01ad, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0018, 0x01a6, 0x0001, - // Entry E440 - E47F - 0x0018, 0x01ad, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, - 0x0002, 0x0018, 0x01b5, 0x01cc, 0x0001, 0x00c3, 0x0002, 0x0018, - 0x01e1, 0x01e7, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, - 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, - 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x003d, 0x0127, 0x0000, 0x0000, - 0x012c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, - // Entry E480 - E4BF - 0x0000, 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013b, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0146, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x014b, 0x0000, 0x0150, 0x0000, 0x0000, 0x0155, 0x0000, - 0x0000, 0x015a, 0x0001, 0x0129, 0x0001, 0x0018, 0x01ed, 0x0001, - 0x012e, 0x0001, 0x0018, 0x01f5, 0x0001, 0x0133, 0x0001, 0x0018, - // Entry E4C0 - E4FF - 0x01fa, 0x0001, 0x0138, 0x0001, 0x0018, 0x0202, 0x0002, 0x013e, - 0x0141, 0x0001, 0x0018, 0x0209, 0x0003, 0x0018, 0x0211, 0x0227, - 0x0234, 0x0001, 0x0148, 0x0001, 0x0018, 0x023d, 0x0001, 0x014d, - 0x0001, 0x0018, 0x0250, 0x0001, 0x0152, 0x0001, 0x0018, 0x0260, - 0x0001, 0x0157, 0x0001, 0x0018, 0x0269, 0x0001, 0x015c, 0x0001, - 0x0018, 0x0271, 0x0002, 0x0003, 0x00bd, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, - // Entry E500 - E53F - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0001, 0x1fcc, - 0x0008, 0x002f, 0x0066, 0x0000, 0x0000, 0x008b, 0x009b, 0x00ac, - 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, - 0x000d, 0x0016, 0xffff, 0x0367, 0x2b44, 0x2b47, 0x2b4a, 0x2b4d, - 0x2b50, 0x2b53, 0x2b57, 0x2b5a, 0x2b5d, 0x2b60, 0x2b63, 0x000d, - 0x0018, 0xffff, 0x0279, 0x0280, 0x0289, 0x028e, 0x0295, 0x0299, - 0x029f, 0x02a7, 0x02aa, 0x02b4, 0x02bc, 0x02c5, 0x0002, 0x0000, - // Entry E540 - E57F - 0x0057, 0x000d, 0x0000, 0xffff, 0x22dd, 0x22e6, 0x22d9, 0x22e8, - 0x22d9, 0x22dd, 0x22dd, 0x22ea, 0x22dd, 0x22ec, 0x22ee, 0x22f0, - 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, - 0x0018, 0x02ce, 0x02d2, 0x02d6, 0x02da, 0x02de, 0x02e2, 0x02e6, - 0x0007, 0x0018, 0x02ea, 0x02f0, 0x02f7, 0x02fe, 0x0306, 0x030f, - 0x0316, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x22f0, 0x04dd, - 0x04dd, 0x22e8, 0x22e8, 0x22e8, 0x22dd, 0x0003, 0x0095, 0x0000, - 0x008f, 0x0001, 0x0091, 0x0002, 0x0018, 0x031d, 0x032b, 0x0001, - // Entry E580 - E5BF - 0x0097, 0x0002, 0x0018, 0x0339, 0x033d, 0x0004, 0x00a9, 0x00a3, - 0x00a0, 0x00a6, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00ba, - 0x00b4, 0x00b1, 0x00b7, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0035, - 0x00f3, 0x0000, 0x0000, 0x00f8, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00fd, 0x0000, 0x0000, 0x0102, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry E5C0 - E5FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0112, 0x0001, 0x00f5, 0x0001, - 0x0018, 0x0341, 0x0001, 0x00fa, 0x0001, 0x0018, 0x0349, 0x0001, - 0x00ff, 0x0001, 0x0018, 0x034e, 0x0001, 0x0104, 0x0001, 0x0018, - 0x0356, 0x0002, 0x010a, 0x010d, 0x0001, 0x0018, 0x035f, 0x0003, - 0x0018, 0x0365, 0x036b, 0x0370, 0x0001, 0x0114, 0x0001, 0x0018, - // Entry E600 - E63F - 0x0376, 0x0003, 0x0004, 0x018e, 0x025a, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, - 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0018, 0x0386, 0x0001, - 0x0018, 0x03bc, 0x0001, 0x0018, 0x03ed, 0x0001, 0x0000, 0x04af, - 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0153, 0x015b, - // Entry E640 - E67F - 0x016c, 0x017d, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, - 0x0066, 0x000d, 0x0018, 0xffff, 0x0425, 0x0429, 0x042d, 0x0431, - 0x0435, 0x0439, 0x043d, 0x0441, 0x0445, 0x0449, 0x0450, 0x0457, - 0x000d, 0x0018, 0xffff, 0x0425, 0x0429, 0x042d, 0x045a, 0x0435, - 0x0439, 0x043d, 0x0441, 0x045c, 0x0449, 0x0450, 0x045e, 0x000d, - 0x0018, 0xffff, 0x0465, 0x047b, 0x049a, 0x04b9, 0x04d5, 0x04ee, - 0x050a, 0x0529, 0x054b, 0x0567, 0x0583, 0x05ae, 0x0003, 0x0079, - 0x0088, 0x0097, 0x000d, 0x000b, 0xffff, 0x005f, 0x006c, 0x0079, - // Entry E680 - E6BF - 0x0086, 0x0093, 0x00a0, 0x00ad, 0x00ba, 0x00c7, 0x00d4, 0x00e4, - 0x00f4, 0x000d, 0x0018, 0xffff, 0x0425, 0x0429, 0x042d, 0x0431, - 0x0435, 0x0439, 0x043d, 0x0441, 0x0445, 0x0449, 0x0450, 0x045e, - 0x000d, 0x0018, 0xffff, 0x05d9, 0x05fe, 0x062c, 0x065a, 0x0682, - 0x06aa, 0x06d5, 0x0703, 0x0734, 0x075f, 0x078a, 0x07c4, 0x0002, - 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, - 0x0007, 0x0018, 0x07fe, 0x0808, 0x0815, 0x0822, 0x082f, 0x083c, - 0x084c, 0x0007, 0x000b, 0x04fc, 0x275c, 0x050d, 0x0517, 0x2766, - // Entry E6C0 - E6FF - 0x052b, 0x04f5, 0x0007, 0x0018, 0x07fe, 0x0808, 0x0815, 0x0822, - 0x082f, 0x083c, 0x084c, 0x0007, 0x000b, 0x0554, 0x0570, 0x0595, - 0x05b4, 0x05d6, 0x05f5, 0x0538, 0x0005, 0x00d9, 0x00e2, 0x00f4, - 0x0000, 0x00eb, 0x0007, 0x0018, 0x07fe, 0x0808, 0x0815, 0x0822, - 0x082f, 0x083c, 0x084c, 0x0007, 0x000b, 0x04fc, 0x275c, 0x050d, - 0x0517, 0x2766, 0x052b, 0x04f5, 0x0007, 0x0018, 0x07fe, 0x0808, - 0x0815, 0x0822, 0x082f, 0x083c, 0x084c, 0x0007, 0x000b, 0x0554, - 0x0570, 0x0595, 0x05b4, 0x05d6, 0x05f5, 0x0538, 0x0002, 0x0100, - // Entry E700 - E73F - 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0018, 0xffff, - 0x0856, 0x0872, 0x088e, 0x08aa, 0x0005, 0x0018, 0xffff, 0x0425, - 0x0429, 0x042d, 0x0431, 0x0005, 0x0018, 0xffff, 0x08c6, 0x08ee, - 0x091c, 0x094a, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0018, - 0xffff, 0x0856, 0x0872, 0x088e, 0x08aa, 0x0005, 0x0018, 0xffff, - 0x0425, 0x0429, 0x042d, 0x0431, 0x0005, 0x0018, 0xffff, 0x08c6, - 0x08ee, 0x091c, 0x094a, 0x0001, 0x0134, 0x0003, 0x0138, 0x0141, - 0x014a, 0x0002, 0x013b, 0x013e, 0x0001, 0x0018, 0x0975, 0x0001, - // Entry E740 - E77F - 0x0018, 0x0985, 0x0002, 0x0144, 0x0147, 0x0001, 0x0018, 0x0975, - 0x0001, 0x0018, 0x0985, 0x0002, 0x014d, 0x0150, 0x0001, 0x0018, - 0x0975, 0x0001, 0x0018, 0x0985, 0x0001, 0x0155, 0x0001, 0x0157, - 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0169, 0x0163, 0x0160, - 0x0166, 0x0001, 0x0018, 0x0998, 0x0001, 0x0018, 0x09cc, 0x0001, - 0x0018, 0x09fb, 0x0001, 0x0000, 0x051c, 0x0004, 0x017a, 0x0174, - 0x0171, 0x0177, 0x0001, 0x0018, 0x0a31, 0x0001, 0x0018, 0x0a69, - 0x0001, 0x0018, 0x0a9e, 0x0001, 0x0018, 0x0abd, 0x0004, 0x018b, - // Entry E780 - E7BF - 0x0185, 0x0182, 0x0188, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, - 0x01cf, 0x0000, 0x0000, 0x01d4, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x01e4, 0x0000, 0x0000, 0x01f4, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0204, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x021b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry E7C0 - E7FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0220, 0x0000, 0x0225, 0x0000, - 0x0000, 0x0235, 0x0000, 0x0000, 0x0245, 0x0000, 0x0000, 0x0255, - 0x0001, 0x01d1, 0x0001, 0x0018, 0x0aed, 0x0003, 0x01d8, 0x0000, - 0x01db, 0x0001, 0x0018, 0x0b06, 0x0002, 0x01de, 0x01e1, 0x0001, - 0x0018, 0x0b0d, 0x0001, 0x0018, 0x0b34, 0x0003, 0x01e8, 0x0000, - 0x01eb, 0x0001, 0x0018, 0x0b61, 0x0002, 0x01ee, 0x01f1, 0x0001, - 0x0018, 0x0b71, 0x0001, 0x0018, 0x0b8c, 0x0003, 0x01f8, 0x0000, - 0x01fb, 0x0001, 0x0018, 0x0bad, 0x0002, 0x01fe, 0x0201, 0x0001, - // Entry E800 - E83F - 0x0018, 0x0bc6, 0x0001, 0x0018, 0x0bf0, 0x0003, 0x0208, 0x020b, - 0x0212, 0x0001, 0x0018, 0x0c20, 0x0005, 0x0018, 0x0c3d, 0x0c4a, - 0x0c5d, 0x0c2d, 0x0c70, 0x0002, 0x0215, 0x0218, 0x0001, 0x0018, - 0x0c86, 0x0001, 0x0018, 0x0ca4, 0x0001, 0x021d, 0x0001, 0x0018, - 0x0cc8, 0x0001, 0x0222, 0x0001, 0x0018, 0x0cf6, 0x0003, 0x0229, - 0x0000, 0x022c, 0x0001, 0x0018, 0x0d16, 0x0002, 0x022f, 0x0232, - 0x0001, 0x0018, 0x0d29, 0x0001, 0x0018, 0x0d4d, 0x0003, 0x0239, - 0x0000, 0x023c, 0x0001, 0x0018, 0x0d77, 0x0002, 0x023f, 0x0242, - // Entry E840 - E87F - 0x0001, 0x0018, 0x0d87, 0x0001, 0x0018, 0x0da8, 0x0003, 0x0249, - 0x0000, 0x024c, 0x0001, 0x0018, 0x0dcf, 0x0002, 0x024f, 0x0252, - 0x0001, 0x0018, 0x0de5, 0x0001, 0x0018, 0x0e06, 0x0001, 0x0257, - 0x0001, 0x0018, 0x0e2d, 0x0004, 0x025f, 0x0264, 0x0267, 0x0272, - 0x0003, 0x0000, 0x1dc7, 0x22f2, 0x2314, 0x0001, 0x0018, 0x0e43, - 0x0002, 0x0000, 0x026a, 0x0002, 0x0000, 0x026d, 0x0003, 0x0018, - 0xffff, 0x0e5f, 0x0ea8, 0x0002, 0x043b, 0x0275, 0x0003, 0x030f, - 0x03a5, 0x0279, 0x0094, 0x0018, 0x0eee, 0x0f28, 0x0f77, 0x0fc0, - // Entry E880 - E8BF - 0x1058, 0x114b, 0x1202, 0x12f2, 0x1436, 0x156b, 0x16a0, 0xffff, - 0xffff, 0x17bd, 0x1886, 0x1979, 0x1a87, 0x1b56, 0x1c55, 0x1db1, - 0x1f28, 0x2090, 0x21b9, 0x228e, 0x2345, 0x23d7, 0x2408, 0x2473, - 0xffff, 0x2536, 0xffff, 0xffff, 0x25e1, 0x2683, 0xffff, 0x2703, - 0xffff, 0x278f, 0xffff, 0x285e, 0xffff, 0xffff, 0xffff, 0x292d, - 0x29ef, 0x2a6f, 0x2b8f, 0xffff, 0x2ca6, 0x2dc3, 0xffff, 0x2e91, - 0xffff, 0x2ece, 0xffff, 0x2f27, 0xffff, 0x2fa1, 0x3042, 0x3162, - 0x3236, 0x325b, 0x32cd, 0xffff, 0xffff, 0x3391, 0x33b9, 0x3405, - // Entry E8C0 - E8FF - 0x3442, 0x34a3, 0x34fe, 0x3584, 0x362f, 0x36e0, 0x378b, 0xffff, - 0xffff, 0xffff, 0x3830, 0xffff, 0x38f3, 0xffff, 0xffff, 0xffff, - 0xffff, 0x39cb, 0xffff, 0x3a57, 0xffff, 0xffff, 0x3ab6, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3b70, 0xffff, 0xffff, 0x3bf0, 0xffff, - 0x3c52, 0x3d39, 0xffff, 0xffff, 0x3e49, 0x3f70, 0x404e, 0x4102, - 0xffff, 0xffff, 0x41ce, 0x4288, 0xffff, 0xffff, 0x434e, 0xffff, - 0xffff, 0xffff, 0x4422, 0xffff, 0x4487, 0xffff, 0xffff, 0x450d, - 0xffff, 0xffff, 0xffff, 0x4538, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry E900 - E93F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x45a6, 0xffff, 0xffff, - 0x4650, 0x46d0, 0x47c3, 0xffff, 0xffff, 0xffff, 0x489b, 0x496a, - 0x0094, 0x0018, 0xffff, 0xffff, 0xffff, 0xffff, 0x100c, 0x1120, - 0x11d1, 0x1294, 0x13de, 0x1516, 0x1645, 0xffff, 0xffff, 0x1786, - 0x184f, 0x1924, 0x1a53, 0x1b1f, 0x1bf4, 0x1d47, 0x1ebb, 0x2032, - 0x217c, 0x2263, 0x2314, 0xffff, 0xffff, 0x243f, 0xffff, 0x250b, - 0xffff, 0xffff, 0x25bc, 0x265b, 0xffff, 0xffff, 0xffff, 0x2755, - 0xffff, 0x2833, 0xffff, 0xffff, 0xffff, 0x28e4, 0xffff, 0x2a1d, - // Entry E940 - E97F - 0x2b43, 0xffff, 0x2c57, 0x2d74, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2f02, 0xffff, 0xffff, 0x2ff3, 0x3110, 0xffff, 0xffff, - 0x3283, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x355c, 0x3604, 0x36b5, 0x3766, 0xffff, 0xffff, 0xffff, - 0x3805, 0xffff, 0x38b6, 0xffff, 0xffff, 0xffff, 0xffff, 0x399d, - 0xffff, 0xffff, 0xffff, 0xffff, 0x3a85, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3b48, 0xffff, 0xffff, 0xffff, 0xffff, 0x3c18, 0x3cf6, - 0xffff, 0xffff, 0x3def, 0x3f2d, 0x4026, 0x40ce, 0xffff, 0xffff, - // Entry E980 - E9BF - 0x419a, 0x4266, 0xffff, 0xffff, 0x42fc, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x445c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x4569, 0xffff, 0xffff, 0xffff, 0x468d, - 0x4786, 0xffff, 0xffff, 0xffff, 0x486d, 0x4927, 0x0094, 0x0018, - 0xffff, 0xffff, 0xffff, 0xffff, 0x10b9, 0x118b, 0x1248, 0x1365, - 0x14a3, 0x15d5, 0x1710, 0xffff, 0xffff, 0x1809, 0x18d2, 0x19e3, - 0x1ad0, 0x1ba2, 0x1ccb, 0x1e33, 0x1faa, 0x2103, 0x220b, 0x22ce, - // Entry E9C0 - E9FF - 0x238b, 0xffff, 0xffff, 0x24bc, 0xffff, 0x2576, 0xffff, 0xffff, - 0x261b, 0x26c0, 0xffff, 0xffff, 0xffff, 0x27de, 0xffff, 0x289e, - 0xffff, 0xffff, 0xffff, 0x298b, 0xffff, 0x2ad6, 0x2bf0, 0xffff, - 0x2d0a, 0x2e27, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f61, - 0xffff, 0xffff, 0x30a6, 0x31c9, 0xffff, 0xffff, 0x332c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x35c1, - 0x366f, 0x3720, 0x37c5, 0xffff, 0xffff, 0xffff, 0x3870, 0xffff, - 0x3945, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a0e, 0xffff, 0xffff, - // Entry EA00 - EA3F - 0xffff, 0xffff, 0x3afc, 0xffff, 0xffff, 0xffff, 0xffff, 0x3bad, - 0xffff, 0xffff, 0xffff, 0xffff, 0x3ca1, 0x3d91, 0xffff, 0xffff, - 0x3eb8, 0x3fc8, 0x408b, 0x414b, 0xffff, 0xffff, 0x4217, 0x42bf, - 0xffff, 0xffff, 0x43b5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x44c7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x45f8, 0xffff, 0xffff, 0xffff, 0x4728, 0x4815, 0xffff, - 0xffff, 0xffff, 0x48de, 0x49c2, 0x0003, 0x0000, 0x0000, 0x043f, - // Entry EA40 - EA7F - 0x001a, 0x0019, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0000, 0x0002, 0x0003, 0x00e9, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - // Entry EA80 - EABF - 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, - 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0019, 0xffff, 0x0003, 0x0007, 0x000b, - 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, - 0x002f, 0x000d, 0x0019, 0xffff, 0x0033, 0x0042, 0x0052, 0x0064, - 0x0072, 0x0082, 0x0096, 0x00a9, 0x00b9, 0x00c8, 0x00d8, 0x00f1, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x22d9, 0x2157, - 0x2157, 0x2157, 0x2281, 0x2281, 0x22d9, 0x2157, 0x2157, 0x2055, - // Entry EAC0 - EAFF - 0x2055, 0x2055, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x0019, 0x010c, 0x0110, 0x0114, 0x0118, 0x011c, - 0x0120, 0x0124, 0x0007, 0x0019, 0x0128, 0x012f, 0x0139, 0x0142, - 0x014c, 0x0155, 0x015c, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - 0x2157, 0x22ee, 0x22ee, 0x22ee, 0x22e8, 0x22d9, 0x22ee, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, 0xffff, - 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0019, 0xffff, 0x0168, - 0x0177, 0x0188, 0x0199, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, - // Entry EB00 - EB3F - 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0019, 0x01a7, 0x0001, - 0x0019, 0x01aa, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0019, 0x01a7, - 0x0001, 0x0019, 0x01aa, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, - 0x00bd, 0x0002, 0x0019, 0x01ad, 0x01bd, 0x0001, 0x00c3, 0x0002, - 0x0019, 0x01ce, 0x01d1, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, - 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - // Entry EB40 - EB7F - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, - 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, - 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, - // Entry EB80 - EBBF - 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, - 0x0001, 0x0019, 0x01d4, 0x0001, 0x0131, 0x0001, 0x0005, 0x0787, - 0x0001, 0x0136, 0x0001, 0x0019, 0x01db, 0x0001, 0x013b, 0x0001, - 0x0019, 0x0128, 0x0002, 0x0141, 0x0144, 0x0001, 0x0019, 0x01e1, - 0x0003, 0x0019, 0x01eb, 0x01f2, 0x01fd, 0x0001, 0x014b, 0x0001, - 0x0019, 0x0205, 0x0001, 0x0150, 0x0001, 0x0019, 0x021b, 0x0001, - 0x0155, 0x0001, 0x0019, 0x0221, 0x0001, 0x015a, 0x0001, 0x0009, - 0x00ba, 0x0001, 0x015f, 0x0001, 0x0019, 0x022a, 0x0003, 0x0004, - // Entry EBC0 - EBFF - 0x045c, 0x05e5, 0x0012, 0x0017, 0x0020, 0x007c, 0x0000, 0x00c9, - 0x0000, 0x0116, 0x0141, 0x02ee, 0x0346, 0x038f, 0x0000, 0x0000, - 0x0000, 0x0000, 0x03d8, 0x03f2, 0x043b, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0006, 0x0027, - 0x0000, 0x0000, 0x0000, 0x0000, 0x006e, 0x0002, 0x002a, 0x004c, - 0x0003, 0x002e, 0x0000, 0x003d, 0x000d, 0x0019, 0xffff, 0x0232, - 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, - 0x0257, 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, 0x0263, 0x0269, - // Entry EC00 - EC3F - 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, - 0x02af, 0x02bd, 0x0003, 0x0050, 0x0000, 0x005f, 0x000d, 0x0019, - 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, - 0x024f, 0x0253, 0x02aa, 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, - 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, - 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0004, 0x0000, 0x0076, 0x0073, - 0x0079, 0x0001, 0x0019, 0x02c3, 0x0001, 0x0019, 0x02d9, 0x0001, - 0x0019, 0x02e8, 0x0001, 0x007e, 0x0002, 0x0081, 0x00a5, 0x0003, - // Entry EC40 - EC7F - 0x0085, 0x0000, 0x0095, 0x000e, 0x0019, 0xffff, 0x0232, 0x0236, - 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, - 0x025b, 0x025f, 0x02f6, 0x000e, 0x0019, 0xffff, 0x0263, 0x0269, - 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, - 0x02af, 0x02bd, 0x02fa, 0x0003, 0x00a9, 0x0000, 0x00b9, 0x000e, - 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, - 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x02f6, 0x000e, - 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, - // Entry EC80 - ECBF - 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x02fa, 0x0001, - 0x00cb, 0x0002, 0x00ce, 0x00f2, 0x0003, 0x00d2, 0x0000, 0x00e2, - 0x000e, 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, - 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x02fa, - 0x000e, 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, - 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x02fa, - 0x0003, 0x00f6, 0x0000, 0x0106, 0x000e, 0x0019, 0xffff, 0x0232, - 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, - // Entry ECC0 - ECFF - 0x0257, 0x025b, 0x025f, 0x0301, 0x000e, 0x0019, 0xffff, 0x0263, - 0x0269, 0x0270, 0x0306, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, - 0x02aa, 0x02af, 0x02bd, 0x02fa, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x011f, 0x0000, 0x0130, 0x0004, 0x012d, 0x0127, - 0x0124, 0x012a, 0x0001, 0x0019, 0x030e, 0x0001, 0x0019, 0x0325, - 0x0001, 0x0019, 0x0336, 0x0001, 0x0012, 0x0203, 0x0004, 0x013e, - 0x0138, 0x0135, 0x013b, 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, - 0x0347, 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, 0x0347, 0x0008, - // Entry ED00 - ED3F - 0x014a, 0x01af, 0x0206, 0x0234, 0x02a0, 0x02bb, 0x02cc, 0x02dd, - 0x0002, 0x014d, 0x017e, 0x0003, 0x0151, 0x0160, 0x016f, 0x000d, - 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, - 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, 0x0000, - 0xffff, 0x2008, 0x2008, 0x2000, 0x1f9c, 0x2008, 0x1f9a, 0x2002, - 0x2008, 0x1f9c, 0x1ffe, 0x1f9c, 0x2008, 0x000d, 0x0019, 0xffff, - 0x0263, 0x0269, 0x0270, 0x034f, 0x0358, 0x0287, 0x028c, 0x0295, - 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0003, 0x0182, 0x0191, 0x01a0, - // Entry ED40 - ED7F - 0x000d, 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, - 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, - 0x0000, 0xffff, 0x2008, 0x2008, 0x2000, 0x1f9c, 0x2008, 0x1f9a, - 0x2002, 0x2008, 0x1f9c, 0x1ffe, 0x1f9c, 0x2008, 0x000d, 0x0019, - 0xffff, 0x0263, 0x0269, 0x0270, 0x034f, 0x0358, 0x0287, 0x028c, - 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0002, 0x01b2, 0x01dc, - 0x0005, 0x01b8, 0x01c1, 0x01d3, 0x0000, 0x01ca, 0x0007, 0x0019, - 0x035d, 0x0362, 0x0366, 0x036a, 0x036f, 0x0373, 0x0378, 0x0007, - // Entry ED80 - EDBF - 0x0000, 0x1ffe, 0x2008, 0x2145, 0x1ffe, 0x2333, 0x2006, 0x1f9a, - 0x0007, 0x0019, 0x035d, 0x0362, 0x0366, 0x036a, 0x036f, 0x0373, - 0x0378, 0x0007, 0x0019, 0x037c, 0x0385, 0x038c, 0x0393, 0x0399, - 0x03a1, 0x03a7, 0x0005, 0x01e2, 0x01eb, 0x01fd, 0x0000, 0x01f4, - 0x0007, 0x0019, 0x035d, 0x0362, 0x0366, 0x036a, 0x036f, 0x0373, - 0x0378, 0x0007, 0x0000, 0x1ffe, 0x2008, 0x2145, 0x1ffe, 0x2333, - 0x2006, 0x1f9a, 0x0007, 0x0019, 0x035d, 0x0362, 0x0366, 0x036a, - 0x036f, 0x0373, 0x0378, 0x0007, 0x0019, 0x037c, 0x0385, 0x038c, - // Entry EDC0 - EDFF - 0x0393, 0x0399, 0x03a1, 0x03a7, 0x0002, 0x0209, 0x0222, 0x0003, - 0x020d, 0x0214, 0x021b, 0x0005, 0x0019, 0xffff, 0x03b0, 0x03b3, - 0x03b6, 0x03b9, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0019, 0xffff, 0x03bc, 0x03ca, 0x03d7, 0x03e7, - 0x0003, 0x0226, 0x0000, 0x022d, 0x0005, 0x0019, 0xffff, 0x03b0, - 0x03b3, 0x03b6, 0x03b9, 0x0005, 0x0019, 0xffff, 0x03bc, 0x03ca, - 0x03d7, 0x03e7, 0x0002, 0x0237, 0x028a, 0x0003, 0x023b, 0x025e, - 0x0267, 0x000a, 0x0246, 0x0249, 0x0000, 0x024c, 0x0252, 0x0258, - // Entry EE00 - EE3F - 0x025b, 0x0000, 0x024f, 0x0255, 0x0001, 0x0019, 0x03f4, 0x0001, - 0x0019, 0x03f9, 0x0001, 0x0019, 0x0401, 0x0001, 0x0019, 0x03f4, - 0x0001, 0x0019, 0x0409, 0x0001, 0x0019, 0x03f9, 0x0001, 0x0019, - 0x040f, 0x0001, 0x0019, 0x0415, 0x0002, 0x0261, 0x0264, 0x0001, - 0x0000, 0x2147, 0x0001, 0x0019, 0x0419, 0x000a, 0x0272, 0x0275, - 0x0000, 0x0278, 0x027e, 0x0284, 0x0287, 0x0000, 0x027b, 0x0281, - 0x0001, 0x0019, 0x03f4, 0x0001, 0x0019, 0x03f9, 0x0001, 0x0019, - 0x0401, 0x0001, 0x0019, 0x03f4, 0x0001, 0x0019, 0x0409, 0x0001, - // Entry EE40 - EE7F - 0x0019, 0x03f9, 0x0001, 0x0019, 0x040f, 0x0001, 0x0019, 0x0415, - 0x0003, 0x0000, 0x028e, 0x0297, 0x0002, 0x0291, 0x0294, 0x0001, - 0x0000, 0x2147, 0x0001, 0x0019, 0x0419, 0x0002, 0x029a, 0x029d, - 0x0001, 0x0019, 0x03f4, 0x0001, 0x0019, 0x03f9, 0x0003, 0x02aa, - 0x02b5, 0x02a4, 0x0001, 0x02a6, 0x0002, 0x0019, 0x041c, 0x0432, - 0x0002, 0x02ad, 0x02b1, 0x0002, 0x0019, 0x043e, 0x0445, 0x0002, - 0x0019, 0x0441, 0x0449, 0x0001, 0x02b7, 0x0002, 0x0019, 0x043e, - 0x0445, 0x0004, 0x02c9, 0x02c3, 0x02c0, 0x02c6, 0x0001, 0x0019, - // Entry EE80 - EEBF - 0x044d, 0x0001, 0x0019, 0x0462, 0x0001, 0x0019, 0x0471, 0x0001, - 0x000c, 0x03ec, 0x0004, 0x02da, 0x02d4, 0x02d1, 0x02d7, 0x0001, - 0x0019, 0x0480, 0x0001, 0x0019, 0x0494, 0x0001, 0x0019, 0x04a5, - 0x0001, 0x0019, 0x04b4, 0x0004, 0x02eb, 0x02e5, 0x02e2, 0x02e8, - 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, - 0x0347, 0x0001, 0x0019, 0x0347, 0x0005, 0x02f4, 0x0000, 0x0000, - 0x0000, 0x033f, 0x0002, 0x02f7, 0x031b, 0x0003, 0x02fb, 0x0000, - 0x030b, 0x000e, 0x0019, 0x028c, 0x0263, 0x0269, 0x0270, 0x0277, - // Entry EEC0 - EEFF - 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, - 0x02fa, 0x000e, 0x0019, 0x028c, 0x0263, 0x0269, 0x0270, 0x0277, - 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, - 0x02fa, 0x0003, 0x031f, 0x0000, 0x032f, 0x000e, 0x0019, 0x024b, - 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, - 0x0253, 0x0257, 0x025b, 0x025f, 0x02f6, 0x000e, 0x0019, 0x028c, - 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x04c0, - 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x02fa, 0x0001, 0x0341, 0x0001, - // Entry EF00 - EF3F - 0x0343, 0x0001, 0x0019, 0x03f4, 0x0001, 0x0348, 0x0002, 0x034b, - 0x036d, 0x0003, 0x034f, 0x0000, 0x035e, 0x000d, 0x0019, 0xffff, - 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, - 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, 0x0263, - 0x0269, 0x0270, 0x023e, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, - 0x02aa, 0x02af, 0x02bd, 0x0003, 0x0371, 0x0000, 0x0380, 0x000d, - 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, - 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, 0x0019, - // Entry EF40 - EF7F - 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, - 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0001, 0x0391, 0x0002, - 0x0394, 0x03b6, 0x0003, 0x0398, 0x0000, 0x03a7, 0x000d, 0x0019, - 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, - 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, - 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, - 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0003, 0x03ba, 0x0000, 0x03c9, - 0x000d, 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, 0x0243, - // Entry EF80 - EFBF - 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, 0x000d, - 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, 0x0287, - 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x03e1, 0x0000, 0x9006, 0x0004, - 0x03ef, 0x03e9, 0x03e6, 0x03ec, 0x0001, 0x0019, 0x04ca, 0x0001, - 0x0019, 0x04e3, 0x0001, 0x0019, 0x04f5, 0x0001, 0x0019, 0x0506, - 0x0001, 0x03f4, 0x0002, 0x03f7, 0x0419, 0x0003, 0x03fb, 0x0000, - 0x040a, 0x000d, 0x0019, 0xffff, 0x0232, 0x0236, 0x023a, 0x023e, - // Entry EFC0 - EFFF - 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, 0x025b, 0x025f, - 0x000d, 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, 0x0277, 0x0281, - 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, 0x02bd, 0x0003, - 0x041d, 0x0000, 0x042c, 0x000d, 0x0019, 0xffff, 0x0232, 0x0236, - 0x023a, 0x023e, 0x0243, 0x0247, 0x024b, 0x024f, 0x0253, 0x0257, - 0x025b, 0x025f, 0x000d, 0x0019, 0xffff, 0x0263, 0x0269, 0x0270, - 0x0277, 0x0281, 0x0287, 0x028c, 0x0295, 0x02a0, 0x02aa, 0x02af, - 0x02bd, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0444, 0x044b, - // Entry F000 - F03F - 0x0000, 0x9006, 0x0001, 0x0446, 0x0001, 0x0448, 0x0001, 0x0019, - 0x0515, 0x0004, 0x0459, 0x0453, 0x0450, 0x0456, 0x0001, 0x0019, - 0x04ca, 0x0001, 0x0019, 0x04e3, 0x0001, 0x0019, 0x04f5, 0x0001, - 0x0019, 0x0521, 0x0040, 0x049d, 0x0000, 0x0000, 0x04a2, 0x04b9, - 0x04cb, 0x04dd, 0x04ef, 0x0501, 0x0513, 0x052a, 0x052f, 0x0534, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x054b, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0564, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0569, 0x0000, 0x0000, 0x0571, 0x0000, 0x0000, 0x0579, - // Entry F040 - F07F - 0x0000, 0x0000, 0x0581, 0x0000, 0x0000, 0x0589, 0x0000, 0x0000, - 0x0591, 0x0000, 0x0000, 0x0599, 0x0000, 0x0000, 0x0000, 0x05a1, - 0x0000, 0x05a6, 0x0000, 0x0000, 0x05b8, 0x0000, 0x0000, 0x05ca, - 0x0000, 0x0000, 0x05e0, 0x0001, 0x049f, 0x0001, 0x0019, 0x052f, - 0x0003, 0x04a6, 0x04a9, 0x04ae, 0x0001, 0x0019, 0x0536, 0x0003, - 0x0019, 0x053a, 0x0547, 0x054f, 0x0002, 0x04b1, 0x04b5, 0x0002, - 0x0019, 0x055e, 0x055e, 0x0002, 0x0019, 0x057d, 0x056c, 0x0003, - 0x04bd, 0x0000, 0x04c0, 0x0001, 0x0019, 0x0536, 0x0002, 0x04c3, - // Entry F080 - F0BF - 0x04c7, 0x0002, 0x0019, 0x055e, 0x055e, 0x0002, 0x0019, 0x0591, - 0x0591, 0x0003, 0x04cf, 0x0000, 0x04d2, 0x0001, 0x0019, 0x0536, - 0x0002, 0x04d5, 0x04d9, 0x0002, 0x0019, 0x05a8, 0x05a8, 0x0002, - 0x0019, 0x05c0, 0x05c0, 0x0003, 0x04e1, 0x0000, 0x04e4, 0x0001, - 0x0019, 0x05d4, 0x0002, 0x04e7, 0x04eb, 0x0002, 0x0019, 0x05da, - 0x05da, 0x0002, 0x0019, 0x05f5, 0x05f5, 0x0003, 0x04f3, 0x0000, - 0x04f6, 0x0001, 0x0019, 0x05d4, 0x0002, 0x04f9, 0x04fd, 0x0002, - 0x0019, 0x05da, 0x05da, 0x0002, 0x0019, 0x05f5, 0x05f5, 0x0003, - // Entry F0C0 - F0FF - 0x0505, 0x0000, 0x0508, 0x0001, 0x0019, 0x05d4, 0x0002, 0x050b, - 0x050f, 0x0002, 0x0019, 0x05da, 0x060b, 0x0002, 0x0019, 0x05f5, - 0x05f5, 0x0003, 0x0517, 0x051a, 0x051f, 0x0001, 0x0019, 0x0625, - 0x0003, 0x0019, 0x062c, 0x063c, 0x0647, 0x0002, 0x0522, 0x0526, - 0x0002, 0x0019, 0x066a, 0x0659, 0x0002, 0x0019, 0x0692, 0x067e, - 0x0001, 0x052c, 0x0001, 0x0019, 0x0625, 0x0001, 0x0531, 0x0001, - 0x0019, 0x0625, 0x0003, 0x0538, 0x053b, 0x0540, 0x0001, 0x0019, - 0x06a9, 0x0003, 0x0019, 0x06b8, 0x06ca, 0x06d7, 0x0002, 0x0543, - // Entry F100 - F13F - 0x0547, 0x0002, 0x0019, 0x06fe, 0x06eb, 0x0002, 0x0019, 0x072a, - 0x0714, 0x0003, 0x054f, 0x0552, 0x0559, 0x0001, 0x0019, 0x0743, - 0x0005, 0x0019, 0x075b, 0x076a, 0x076f, 0x074a, 0x077f, 0x0002, - 0x055c, 0x0560, 0x0002, 0x0019, 0x07a2, 0x0791, 0x0002, 0x0019, - 0x07ca, 0x07b6, 0x0001, 0x0566, 0x0001, 0x0019, 0x07e1, 0x0002, - 0x0000, 0x056c, 0x0003, 0x0019, 0x07f4, 0x0809, 0x081a, 0x0002, - 0x0000, 0x0574, 0x0003, 0x0019, 0x0831, 0x0841, 0x084c, 0x0002, - 0x0000, 0x057c, 0x0003, 0x0019, 0x085e, 0x086e, 0x0879, 0x0002, - // Entry F140 - F17F - 0x0000, 0x0584, 0x0003, 0x0019, 0x088b, 0x089a, 0x08a4, 0x0002, - 0x0000, 0x058c, 0x0003, 0x0019, 0x08b5, 0x08c6, 0x08d2, 0x0002, - 0x0000, 0x0594, 0x0003, 0x0019, 0x08e5, 0x08f4, 0x08fe, 0x0002, - 0x0000, 0x059c, 0x0003, 0x0019, 0x090f, 0x0921, 0x092e, 0x0001, - 0x05a3, 0x0001, 0x0019, 0x0942, 0x0003, 0x05aa, 0x0000, 0x05ad, - 0x0001, 0x0019, 0x094d, 0x0002, 0x05b0, 0x05b4, 0x0002, 0x0019, - 0x0969, 0x0956, 0x0002, 0x0019, 0x0995, 0x097f, 0x0003, 0x05bc, - 0x0000, 0x05bf, 0x0001, 0x0019, 0x09ae, 0x0002, 0x05c2, 0x05c6, - // Entry F180 - F1BF - 0x0002, 0x0019, 0x09d2, 0x09bb, 0x0002, 0x0019, 0x0a06, 0x09ec, - 0x0003, 0x05ce, 0x05d1, 0x05d5, 0x0001, 0x0019, 0x0a23, 0x0002, - 0x0019, 0xffff, 0x0a2a, 0x0002, 0x05d8, 0x05dc, 0x0002, 0x0019, - 0x0a40, 0x0a2f, 0x0002, 0x0019, 0x0a68, 0x0a54, 0x0001, 0x05e2, - 0x0001, 0x0019, 0x0a7f, 0x0004, 0x05ea, 0x05ef, 0x05f4, 0x05ff, - 0x0003, 0x0000, 0x1dc7, 0x22ce, 0x22d5, 0x0003, 0x0000, 0x1de0, - 0x1de0, 0x1de0, 0x0002, 0x0000, 0x05f7, 0x0002, 0x0000, 0x05fa, - 0x0003, 0x0019, 0xffff, 0x0a8e, 0x0aad, 0x0002, 0x07e6, 0x0602, - // Entry F1C0 - F1FF - 0x0003, 0x0606, 0x0746, 0x06a6, 0x009e, 0x0019, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0b5f, 0x0bc9, 0x0c58, 0x0ca1, 0x0cff, 0x0d66, - 0x0de1, 0x0e29, 0xffff, 0x0ef3, 0x0f39, 0x0f8b, 0x1001, 0x104d, - 0x1099, 0x10fd, 0x116d, 0x11da, 0x124d, 0x12a5, 0xffff, 0xffff, - 0xffff, 0x1301, 0xffff, 0x1350, 0xffff, 0xffff, 0x13a2, 0x13e9, - 0x142c, 0xffff, 0xffff, 0x1481, 0xffff, 0x14d0, 0xffff, 0xffff, - 0xffff, 0x1510, 0xffff, 0x15b4, 0x160f, 0xffff, 0x1673, 0x16dd, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x179d, 0xffff, 0xffff, - // Entry F200 - F23F - 0x1801, 0x1871, 0xffff, 0xffff, 0x1909, 0x1967, 0x19c0, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a06, 0x1a4f, - 0x1a95, 0x1ad7, 0xffff, 0xffff, 0x1b93, 0xffff, 0x1bd6, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1c86, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1cd2, 0xffff, 0xffff, 0xffff, 0x1d24, 0x1d79, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1dbf, 0xffff, 0xffff, 0x1e1d, 0x1e8d, - 0x1ee5, 0xffff, 0xffff, 0xffff, 0x1f28, 0x1f77, 0xffff, 0xffff, - 0x1fba, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x20a4, 0x20f1, - // Entry F240 - F27F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x215f, 0xffff, 0xffff, 0xffff, 0xffff, 0x21bc, 0xffff, 0x2217, - 0x2263, 0xffff, 0xffff, 0x22cd, 0x2325, 0xffff, 0xffff, 0xffff, - 0x2374, 0x23c0, 0xffff, 0xffff, 0x0acd, 0x0c0f, 0x0e6f, 0x0eb5, - 0xffff, 0xffff, 0x1c43, 0x203c, 0x009e, 0x0019, 0xffff, 0x0b10, - 0x0b29, 0x0b45, 0x0b7d, 0x0bdb, 0x0c6a, 0x0cbb, 0x0d1c, 0x0d8a, - 0x0df4, 0x0e3b, 0xffff, 0x0f05, 0x0f4e, 0x0fac, 0x1014, 0x1061, - 0x10b5, 0x111d, 0x118c, 0x11fb, 0x1264, 0x12b7, 0xffff, 0xffff, - // Entry F280 - F2BF - 0x12ee, 0x1315, 0xffff, 0x1365, 0xffff, 0xffff, 0x13b4, 0x13fa, - 0x1442, 0xffff, 0xffff, 0x1495, 0xffff, 0x14e0, 0xffff, 0xffff, - 0xffff, 0x1536, 0x1595, 0x15cd, 0x162b, 0xffff, 0x1691, 0x1707, - 0xffff, 0x176e, 0xffff, 0x1788, 0xffff, 0x17b1, 0xffff, 0x17ec, - 0x1820, 0x1892, 0x18e7, 0x18f7, 0x1923, 0x197e, 0x19d1, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a18, 0x1a61, - 0x1aa6, 0x1afb, 0x1b53, 0x1b72, 0x1ba4, 0xffff, 0x1bed, 0x1c2e, - 0xffff, 0xffff, 0xffff, 0x1c99, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry F2C0 - F2FF - 0x1ce7, 0xffff, 0xffff, 0xffff, 0x1d3a, 0x1d8b, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1dd9, 0xffff, 0xffff, 0x1e3c, 0x1ea4, - 0x1ef5, 0xffff, 0xffff, 0xffff, 0x1f3c, 0x1f87, 0xffff, 0xffff, - 0x1fe0, 0xffff, 0xffff, 0xffff, 0x2091, 0xffff, 0x20b7, 0x2103, - 0xffff, 0x2137, 0xffff, 0xffff, 0xffff, 0x214b, 0xffff, 0xffff, - 0x2171, 0x21a5, 0xffff, 0xffff, 0xffff, 0x21d4, 0xffff, 0x222a, - 0x2279, 0xffff, 0x22b8, 0x22e4, 0x2339, 0xffff, 0xffff, 0xffff, - 0x2387, 0x23da, 0xffff, 0xffff, 0x0add, 0x0c21, 0x0e80, 0x0ec7, - // Entry F300 - F33F - 0xffff, 0xffff, 0x1c54, 0x2052, 0x009e, 0x0019, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0ba2, 0x0bf4, 0x0c83, 0x0cdc, 0x0d40, 0x0db5, - 0x0e0e, 0x0e54, 0xffff, 0x0f1e, 0x0f6a, 0x0fd4, 0x102e, 0x107c, - 0x10d8, 0x1144, 0x11b2, 0x1223, 0x1282, 0x12d0, 0xffff, 0xffff, - 0xffff, 0x1330, 0xffff, 0x1381, 0xffff, 0xffff, 0x13cc, 0x1412, - 0x145f, 0xffff, 0xffff, 0x14b0, 0xffff, 0x14f7, 0xffff, 0xffff, - 0xffff, 0x1563, 0xffff, 0x15ed, 0x164e, 0xffff, 0x16b6, 0x1738, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x17cc, 0xffff, 0xffff, - // Entry F340 - F37F - 0x1846, 0x18ba, 0xffff, 0xffff, 0x1944, 0x199d, 0x19e9, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a31, 0x1a7a, - 0x1abd, 0x1b26, 0xffff, 0xffff, 0x1bbc, 0xffff, 0x1c0b, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1cb3, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1d03, 0xffff, 0xffff, 0xffff, 0x1d57, 0x1da4, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1dfa, 0xffff, 0xffff, 0x1e62, 0x1ec2, - 0x1f0c, 0xffff, 0xffff, 0xffff, 0x1f57, 0x1f9e, 0xffff, 0xffff, - 0x200d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x20d2, 0x211c, - // Entry F380 - F3BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x218a, 0xffff, 0xffff, 0xffff, 0xffff, 0x21f3, 0xffff, 0x2244, - 0x2296, 0xffff, 0xffff, 0x2302, 0x2354, 0xffff, 0xffff, 0xffff, - 0x23a1, 0x23fb, 0xffff, 0xffff, 0x0af4, 0x0c3a, 0x0e98, 0x0ee0, - 0xffff, 0xffff, 0x1c6c, 0x206f, 0x0003, 0x07f1, 0x07f8, 0x07ea, - 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, - 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, - // Entry F3C0 - F3FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, - 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, - 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0003, 0x0004, 0x0279, 0x0669, 0x0012, 0x0017, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x004f, 0x023d, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0251, 0x0000, 0x026b, - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, - // Entry F400 - F43F - 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x002d, 0x0000, 0x003e, 0x0004, 0x003b, - 0x0035, 0x0032, 0x0038, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0001, 0x1fcc, 0x0004, - 0x004c, 0x0046, 0x0043, 0x0049, 0x0001, 0x001a, 0x0000, 0x0001, - 0x001a, 0x0000, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0008, 0x0058, 0x00bd, 0x0114, 0x0149, 0x01f0, 0x020a, 0x021b, - 0x022c, 0x0002, 0x005b, 0x008c, 0x0003, 0x005f, 0x006e, 0x007d, - // Entry F440 - F47F - 0x000d, 0x001a, 0xffff, 0x000a, 0x0011, 0x0018, 0x001f, 0x0026, - 0x002d, 0x0036, 0x003f, 0x0046, 0x004d, 0x0054, 0x005b, 0x000d, - 0x001a, 0xffff, 0x0062, 0x0065, 0x0068, 0x006b, 0x0068, 0x0062, - 0x0062, 0x006b, 0x006e, 0x0071, 0x0074, 0x0077, 0x000d, 0x001a, - 0xffff, 0x007a, 0x008f, 0x00a6, 0x00b5, 0x00c6, 0x00d1, 0x00e0, - 0x00ef, 0x0102, 0x0119, 0x012c, 0x013f, 0x0003, 0x0090, 0x009f, - 0x00ae, 0x000d, 0x001a, 0xffff, 0x000a, 0x0011, 0x0154, 0x001f, - 0x015b, 0x0162, 0x016b, 0x0174, 0x0046, 0x004d, 0x017b, 0x005b, - // Entry F480 - F4BF - 0x000d, 0x001a, 0xffff, 0x0062, 0x0065, 0x0068, 0x006b, 0x0068, - 0x0062, 0x0062, 0x006b, 0x006e, 0x0071, 0x0074, 0x0077, 0x000d, - 0x001a, 0xffff, 0x0182, 0x0197, 0x01ae, 0x01bd, 0x01ce, 0x01d9, - 0x01e8, 0x01f7, 0x020a, 0x0221, 0x0234, 0x0247, 0x0002, 0x00c0, - 0x00ea, 0x0005, 0x00c6, 0x00cf, 0x00e1, 0x0000, 0x00d8, 0x0007, - 0x001a, 0x025c, 0x0263, 0x026a, 0x0271, 0x0278, 0x027f, 0x0286, - 0x0007, 0x001a, 0x028d, 0x0077, 0x0290, 0x0290, 0x0293, 0x0293, - 0x006e, 0x0007, 0x001a, 0x0296, 0x029b, 0x02a0, 0x02a5, 0x02aa, - // Entry F4C0 - F4FF - 0x02af, 0x02b4, 0x0007, 0x001a, 0x02b9, 0x02c8, 0x02d7, 0x02e2, - 0x02f1, 0x02fe, 0x0311, 0x0005, 0x00f0, 0x00f9, 0x010b, 0x0000, - 0x0102, 0x0007, 0x001a, 0x025c, 0x0263, 0x026a, 0x0271, 0x0278, - 0x027f, 0x0286, 0x0007, 0x001a, 0x028d, 0x0077, 0x0290, 0x0290, - 0x0293, 0x0293, 0x006e, 0x0007, 0x001a, 0x0296, 0x029b, 0x02a0, - 0x02a5, 0x02aa, 0x02af, 0x02b4, 0x0007, 0x001a, 0x02b9, 0x02c8, - 0x02d7, 0x02e2, 0x02f1, 0x02fe, 0x0311, 0x0002, 0x0117, 0x0130, - 0x0003, 0x011b, 0x0122, 0x0129, 0x0005, 0x001a, 0xffff, 0x0320, - // Entry F500 - F53F - 0x0324, 0x0328, 0x032c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x001a, 0xffff, 0x0330, 0x0343, 0x0356, - 0x0369, 0x0003, 0x0134, 0x013b, 0x0142, 0x0005, 0x001a, 0xffff, - 0x0320, 0x0324, 0x0328, 0x032c, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x001a, 0xffff, 0x0330, 0x0343, - 0x0356, 0x0369, 0x0002, 0x014c, 0x019e, 0x0003, 0x0150, 0x016a, - 0x0184, 0x0007, 0x0158, 0x015b, 0x0000, 0x015e, 0x0161, 0x0164, - 0x0167, 0x0001, 0x001a, 0x037c, 0x0001, 0x001a, 0x0383, 0x0001, - // Entry F540 - F57F - 0x001a, 0x038a, 0x0001, 0x001a, 0x0393, 0x0001, 0x001a, 0x039f, - 0x0001, 0x001a, 0x03a9, 0x0007, 0x0172, 0x0175, 0x0000, 0x0178, - 0x017b, 0x017e, 0x0181, 0x0001, 0x001a, 0x03b4, 0x0001, 0x001a, - 0x03b9, 0x0001, 0x001a, 0x038a, 0x0001, 0x001a, 0x0393, 0x0001, - 0x001a, 0x039f, 0x0001, 0x001a, 0x03a9, 0x0007, 0x018c, 0x018f, - 0x0000, 0x0192, 0x0195, 0x0198, 0x019b, 0x0001, 0x001a, 0x037c, - 0x0001, 0x001a, 0x0383, 0x0001, 0x001a, 0x038a, 0x0001, 0x001a, - 0x03be, 0x0001, 0x001a, 0x03cf, 0x0001, 0x001a, 0x03a9, 0x0003, - // Entry F580 - F5BF - 0x01a2, 0x01bc, 0x01d6, 0x0007, 0x01aa, 0x01ad, 0x0000, 0x01b0, - 0x01b3, 0x01b6, 0x01b9, 0x0001, 0x001a, 0x037c, 0x0001, 0x001a, - 0x0383, 0x0001, 0x001a, 0x038a, 0x0001, 0x001a, 0x0393, 0x0001, - 0x001a, 0x039f, 0x0001, 0x001a, 0x03a9, 0x0007, 0x01c4, 0x01c7, - 0x0000, 0x01ca, 0x01cd, 0x01d0, 0x01d3, 0x0001, 0x001a, 0x037c, - 0x0001, 0x001a, 0x0383, 0x0001, 0x001a, 0x038a, 0x0001, 0x001a, - 0x0393, 0x0001, 0x001a, 0x039f, 0x0001, 0x001a, 0x03a9, 0x0007, - 0x01de, 0x01e1, 0x0000, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x0001, - // Entry F5C0 - F5FF - 0x001a, 0x037c, 0x0001, 0x001a, 0x0383, 0x0001, 0x001a, 0x038a, - 0x0001, 0x001a, 0x03be, 0x0001, 0x001a, 0x03cf, 0x0001, 0x001a, - 0x03a9, 0x0003, 0x01ff, 0x0000, 0x01f4, 0x0002, 0x01f7, 0x01fb, - 0x0002, 0x001a, 0x03e0, 0x042d, 0x0002, 0x001a, 0x03f6, 0x0445, - 0x0002, 0x0202, 0x0206, 0x0002, 0x001a, 0x0465, 0x0476, 0x0002, - 0x001a, 0x046c, 0x047d, 0x0004, 0x0218, 0x0212, 0x020f, 0x0215, - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0005, 0x1394, 0x0004, 0x0229, 0x0223, 0x0220, - // Entry F600 - F63F - 0x0226, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, - 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x023a, 0x0234, - 0x0231, 0x0237, 0x0001, 0x001a, 0x0000, 0x0001, 0x001a, 0x0000, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0243, 0x0003, 0x024c, 0x0000, 0x0247, - 0x0001, 0x0249, 0x0001, 0x0000, 0x04ef, 0x0001, 0x024e, 0x0001, - 0x0000, 0x04ef, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x025a, 0x0000, 0x9006, 0x0004, 0x0268, 0x0262, 0x025f, 0x0265, - // Entry F640 - F67F - 0x0001, 0x0005, 0x018e, 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, - 0x1fc1, 0x0001, 0x0005, 0x1394, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0271, 0x0001, 0x0273, 0x0001, 0x0275, 0x0002, 0x001a, - 0x0482, 0x0492, 0x0040, 0x02ba, 0x0000, 0x0000, 0x02bf, 0x02d6, - 0x02ed, 0x0304, 0x031b, 0x0332, 0x0349, 0x0360, 0x0372, 0x0384, - 0x039f, 0x03b5, 0x0000, 0x0000, 0x0000, 0x03cb, 0x03e4, 0x03f6, - 0x0000, 0x0000, 0x0000, 0x0408, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x040d, 0x0421, 0x0435, 0x0449, 0x045d, 0x0471, 0x0485, - // Entry F680 - F6BF - 0x0499, 0x04ad, 0x04c1, 0x04d5, 0x04e9, 0x04fd, 0x0511, 0x0525, - 0x0539, 0x054d, 0x0561, 0x0575, 0x0589, 0x059d, 0x0000, 0x05b1, - 0x0000, 0x05b6, 0x05cc, 0x05de, 0x05f0, 0x0606, 0x0618, 0x062a, - 0x0640, 0x0652, 0x0664, 0x0001, 0x02bc, 0x0001, 0x001a, 0x0499, - 0x0003, 0x02c3, 0x02c6, 0x02cb, 0x0001, 0x001a, 0x04aa, 0x0003, - 0x001a, 0x04b3, 0x04be, 0x04c9, 0x0002, 0x02ce, 0x02d2, 0x0002, - 0x001a, 0x04f3, 0x04e1, 0x0002, 0x001a, 0x0520, 0x0503, 0x0003, - 0x02da, 0x02dd, 0x02e2, 0x0001, 0x001a, 0x053b, 0x0003, 0x001a, - // Entry F6C0 - F6FF - 0x04b3, 0x04be, 0x04c9, 0x0002, 0x02e5, 0x02e9, 0x0002, 0x001a, - 0x04f3, 0x04e1, 0x0002, 0x001a, 0x0520, 0x0503, 0x0003, 0x02f1, - 0x02f4, 0x02f9, 0x0001, 0x001a, 0x053b, 0x0003, 0x001a, 0x04b3, - 0x04be, 0x04c9, 0x0002, 0x02fc, 0x0300, 0x0002, 0x001a, 0x04f3, - 0x04e1, 0x0002, 0x001a, 0x0557, 0x0541, 0x0003, 0x0308, 0x030b, - 0x0310, 0x0001, 0x001a, 0x056b, 0x0003, 0x001a, 0x057a, 0x05a0, - 0x05bc, 0x0002, 0x0313, 0x0317, 0x0002, 0x001a, 0x05f2, 0x05da, - 0x0002, 0x001a, 0x062d, 0x060a, 0x0003, 0x031f, 0x0322, 0x0327, - // Entry F700 - F73F - 0x0001, 0x001a, 0x0650, 0x0003, 0x001a, 0x065a, 0x0670, 0x0687, - 0x0002, 0x032a, 0x032e, 0x0002, 0x001a, 0x069b, 0x069b, 0x0002, - 0x001a, 0x06ae, 0x06ae, 0x0003, 0x0336, 0x0339, 0x033e, 0x0001, - 0x001a, 0x0650, 0x0003, 0x001a, 0x065a, 0x0670, 0x0687, 0x0002, - 0x0341, 0x0345, 0x0002, 0x001a, 0x069b, 0x069b, 0x0002, 0x001a, - 0x06cc, 0x06cc, 0x0003, 0x034d, 0x0350, 0x0355, 0x0001, 0x001a, - 0x06e3, 0x0003, 0x001a, 0x06ee, 0x0712, 0x072a, 0x0002, 0x0358, - 0x035c, 0x0002, 0x001a, 0x0758, 0x0746, 0x0002, 0x001a, 0x0789, - // Entry F740 - F77F - 0x076c, 0x0003, 0x0364, 0x0000, 0x0367, 0x0001, 0x001a, 0x07a8, - 0x0002, 0x036a, 0x036e, 0x0002, 0x001a, 0x0758, 0x0746, 0x0002, - 0x001a, 0x0789, 0x076c, 0x0003, 0x0376, 0x0000, 0x0379, 0x0001, - 0x001a, 0x07a8, 0x0002, 0x037c, 0x0380, 0x0002, 0x001a, 0x07b0, - 0x07b0, 0x0002, 0x001a, 0x07bd, 0x07bd, 0x0004, 0x0389, 0x038c, - 0x0391, 0x039c, 0x0001, 0x001a, 0x07ce, 0x0003, 0x001a, 0x07df, - 0x0807, 0x082a, 0x0002, 0x0394, 0x0398, 0x0002, 0x001a, 0x0864, - 0x084a, 0x0002, 0x001a, 0x08a5, 0x0880, 0x0001, 0x001a, 0x08cc, - // Entry F780 - F7BF - 0x0004, 0x03a4, 0x0000, 0x03a7, 0x03b2, 0x0001, 0x001a, 0x08e8, - 0x0002, 0x03aa, 0x03ae, 0x0002, 0x001a, 0x08f0, 0x08f0, 0x0002, - 0x001a, 0x0901, 0x0901, 0x0001, 0x001a, 0x08cc, 0x0004, 0x03ba, - 0x0000, 0x03bd, 0x03c8, 0x0001, 0x001a, 0x08e8, 0x0002, 0x03c0, - 0x03c4, 0x0002, 0x001a, 0x08f0, 0x08f0, 0x0002, 0x001a, 0x091d, - 0x091d, 0x0001, 0x001a, 0x08cc, 0x0003, 0x03cf, 0x03d2, 0x03d9, - 0x0001, 0x001a, 0x0932, 0x0005, 0x001a, 0x094c, 0x0955, 0x0962, - 0x093d, 0x096d, 0x0002, 0x03dc, 0x03e0, 0x0002, 0x001a, 0x0992, - // Entry F7C0 - F7FF - 0x097e, 0x0002, 0x001a, 0x09c7, 0x09a8, 0x0003, 0x03e8, 0x0000, - 0x03eb, 0x0001, 0x001a, 0x0932, 0x0002, 0x03ee, 0x03f2, 0x0002, - 0x001a, 0x0992, 0x097e, 0x0002, 0x001a, 0x09c7, 0x09a8, 0x0003, - 0x03fa, 0x0000, 0x03fd, 0x0001, 0x001a, 0x0932, 0x0002, 0x0400, - 0x0404, 0x0002, 0x001a, 0x09e8, 0x09e8, 0x0002, 0x001a, 0x09f7, - 0x09f7, 0x0001, 0x040a, 0x0001, 0x001a, 0x0a0a, 0x0003, 0x0000, - 0x0411, 0x0416, 0x0003, 0x001a, 0x0a1f, 0x0a45, 0x0a66, 0x0002, - 0x0419, 0x041d, 0x0002, 0x001a, 0x0a9c, 0x0a84, 0x0002, 0x001a, - // Entry F800 - F83F - 0x0ad9, 0x0ab6, 0x0003, 0x0000, 0x0425, 0x042a, 0x0003, 0x001a, - 0x0afe, 0x0b12, 0x0b2c, 0x0002, 0x042d, 0x0431, 0x0002, 0x001a, - 0x0b3e, 0x0b3e, 0x0002, 0x001a, 0x0b4f, 0x0b4f, 0x0003, 0x0000, - 0x0439, 0x043e, 0x0003, 0x001a, 0x0b6b, 0x0b7c, 0x0b93, 0x0002, - 0x0441, 0x0445, 0x0002, 0x001a, 0x0ba2, 0x0ba2, 0x0002, 0x001a, - 0x0bb0, 0x0bb0, 0x0003, 0x0000, 0x044d, 0x0452, 0x0003, 0x001a, - 0x0bc2, 0x0be8, 0x0c07, 0x0002, 0x0455, 0x0459, 0x0002, 0x001a, - 0x0c3d, 0x0c25, 0x0002, 0x001a, 0x0c7a, 0x0c57, 0x0003, 0x0000, - // Entry F840 - F87F - 0x0461, 0x0466, 0x0003, 0x001a, 0x0c9f, 0x0cb5, 0x0ccf, 0x0002, - 0x0469, 0x046d, 0x0002, 0x001a, 0x0ce3, 0x0ce3, 0x0002, 0x001a, - 0x0cf6, 0x0cf6, 0x0003, 0x0000, 0x0475, 0x047a, 0x0003, 0x001a, - 0x0d14, 0x0d25, 0x0d3a, 0x0002, 0x047d, 0x0481, 0x0002, 0x001a, - 0x0d49, 0x0d49, 0x0002, 0x001a, 0x0d57, 0x0d57, 0x0003, 0x0000, - 0x0489, 0x048e, 0x0003, 0x001a, 0x0d69, 0x0d8b, 0x0da8, 0x0002, - 0x0491, 0x0495, 0x0002, 0x001a, 0x0dd6, 0x0dc2, 0x0002, 0x001a, - 0x0e0b, 0x0dec, 0x0003, 0x0000, 0x049d, 0x04a2, 0x0003, 0x001a, - // Entry F880 - F8BF - 0x0e2c, 0x0e3e, 0x0e56, 0x0002, 0x04a5, 0x04a9, 0x0002, 0x001a, - 0x0e66, 0x0e66, 0x0002, 0x001a, 0x0e75, 0x0e75, 0x0003, 0x0000, - 0x04b1, 0x04b6, 0x0003, 0x001a, 0x0e8f, 0x0ea0, 0x0eb7, 0x0002, - 0x04b9, 0x04bd, 0x0002, 0x001a, 0x0ec6, 0x0ec6, 0x0002, 0x001a, - 0x0ed4, 0x0ed4, 0x0003, 0x0000, 0x04c5, 0x04ca, 0x0003, 0x001a, - 0x0ee6, 0x0f0c, 0x0f2d, 0x0002, 0x04cd, 0x04d1, 0x0002, 0x001a, - 0x0f63, 0x0f4b, 0x0002, 0x001a, 0x0fa0, 0x0f7d, 0x0003, 0x0000, - 0x04d9, 0x04de, 0x0003, 0x001a, 0x0fc5, 0x0fd9, 0x0ff3, 0x0002, - // Entry F8C0 - F8FF - 0x04e1, 0x04e5, 0x0002, 0x001a, 0x1005, 0x1005, 0x0002, 0x001a, - 0x1016, 0x1016, 0x0003, 0x0000, 0x04ed, 0x04f2, 0x0003, 0x001a, - 0x1032, 0x1043, 0x105a, 0x0002, 0x04f5, 0x04f9, 0x0002, 0x001a, - 0x1069, 0x1069, 0x0002, 0x001a, 0x1077, 0x1077, 0x0003, 0x0000, - 0x0501, 0x0506, 0x0003, 0x001a, 0x1089, 0x10ad, 0x10cc, 0x0002, - 0x0509, 0x050d, 0x0002, 0x001a, 0x10fe, 0x10e8, 0x0002, 0x001a, - 0x1137, 0x1116, 0x0003, 0x0000, 0x0515, 0x051a, 0x0003, 0x001a, - 0x115a, 0x116e, 0x1188, 0x0002, 0x051d, 0x0521, 0x0002, 0x001a, - // Entry F900 - F93F - 0x119a, 0x119a, 0x0002, 0x001a, 0x11ab, 0x11ab, 0x0003, 0x0000, - 0x0529, 0x052e, 0x0003, 0x001a, 0x11c7, 0x11d8, 0x11ef, 0x0002, - 0x0531, 0x0535, 0x0002, 0x001a, 0x11fe, 0x11fe, 0x0002, 0x001a, - 0x120c, 0x120c, 0x0003, 0x0000, 0x053d, 0x0542, 0x0003, 0x001a, - 0x121e, 0x1248, 0x126d, 0x0002, 0x0545, 0x0549, 0x0002, 0x001a, - 0x12ab, 0x128f, 0x0002, 0x001a, 0x12f0, 0x12c9, 0x0003, 0x0000, - 0x0551, 0x0556, 0x0003, 0x001a, 0x1319, 0x132d, 0x1347, 0x0002, - 0x0559, 0x055d, 0x0002, 0x001a, 0x1359, 0x1359, 0x0002, 0x001a, - // Entry F940 - F97F - 0x136a, 0x136a, 0x0003, 0x0000, 0x0565, 0x056a, 0x0003, 0x001a, - 0x1386, 0x1397, 0x13ae, 0x0002, 0x056d, 0x0571, 0x0002, 0x001a, - 0x13bd, 0x13bd, 0x0002, 0x001a, 0x13cb, 0x13cb, 0x0003, 0x0000, - 0x0579, 0x057e, 0x0003, 0x001a, 0x13dd, 0x1403, 0x1420, 0x0002, - 0x0581, 0x0585, 0x0002, 0x001a, 0x1456, 0x143e, 0x0002, 0x001a, - 0x148a, 0x146e, 0x0003, 0x0000, 0x058d, 0x0592, 0x0003, 0x001a, - 0x14a6, 0x14ba, 0x14d0, 0x0002, 0x0595, 0x0599, 0x0002, 0x001a, - 0x14e2, 0x14e2, 0x0002, 0x001a, 0x14f3, 0x14f3, 0x0003, 0x0000, - // Entry F980 - F9BF - 0x05a1, 0x05a6, 0x0003, 0x001a, 0x150f, 0x1520, 0x1533, 0x0002, - 0x05a9, 0x05ad, 0x0002, 0x001a, 0x1542, 0x1542, 0x0002, 0x001a, - 0x1550, 0x1550, 0x0001, 0x05b3, 0x0001, 0x001a, 0x1562, 0x0003, - 0x05ba, 0x05bd, 0x05c1, 0x0001, 0x001a, 0x1570, 0x0002, 0x001a, - 0xffff, 0x1577, 0x0002, 0x05c4, 0x05c8, 0x0002, 0x001a, 0x15a0, - 0x1590, 0x0002, 0x001a, 0x15cd, 0x15b2, 0x0003, 0x05d0, 0x0000, - 0x05d3, 0x0001, 0x001a, 0x15ea, 0x0002, 0x05d6, 0x05da, 0x0002, - 0x001a, 0x15f0, 0x1590, 0x0002, 0x001a, 0x15ff, 0x15b2, 0x0003, - // Entry F9C0 - F9FF - 0x05e2, 0x0000, 0x05e5, 0x0001, 0x001a, 0x1619, 0x0002, 0x05e8, - 0x05ec, 0x0002, 0x001a, 0x161c, 0x161c, 0x0002, 0x001a, 0x1629, - 0x1629, 0x0003, 0x05f4, 0x05f7, 0x05fb, 0x0001, 0x001a, 0x163a, - 0x0002, 0x001a, 0xffff, 0x1645, 0x0002, 0x05fe, 0x0602, 0x0002, - 0x001a, 0x1672, 0x165e, 0x0002, 0x001a, 0x16a5, 0x1686, 0x0003, - 0x060a, 0x0000, 0x060d, 0x0001, 0x001a, 0x16c4, 0x0002, 0x0610, - 0x0614, 0x0002, 0x001a, 0x16cc, 0x16cc, 0x0002, 0x001a, 0x16dd, - 0x16dd, 0x0003, 0x061c, 0x0000, 0x061f, 0x0001, 0x001a, 0x16f9, - // Entry FA00 - FA3F - 0x0002, 0x0622, 0x0626, 0x0002, 0x001a, 0x16fc, 0x16fc, 0x0002, - 0x001a, 0x1709, 0x1709, 0x0003, 0x062e, 0x0631, 0x0635, 0x0001, - 0x001a, 0x171a, 0x0002, 0x001a, 0xffff, 0x1733, 0x0002, 0x0638, - 0x063c, 0x0002, 0x001a, 0x175e, 0x173c, 0x0002, 0x001a, 0x17ad, - 0x1780, 0x0003, 0x0644, 0x0000, 0x0647, 0x0001, 0x001a, 0x17da, - 0x0002, 0x064a, 0x064e, 0x0002, 0x001a, 0x17e4, 0x17e4, 0x0002, - 0x001a, 0x17f7, 0x17f7, 0x0003, 0x0656, 0x0000, 0x0659, 0x0001, - 0x001a, 0x1815, 0x0002, 0x065c, 0x0660, 0x0002, 0x001a, 0x1818, - // Entry FA40 - FA7F - 0x1818, 0x0002, 0x001a, 0x1825, 0x1825, 0x0001, 0x0666, 0x0001, - 0x001a, 0x1836, 0x0004, 0x066e, 0x0673, 0x0678, 0x0687, 0x0003, - 0x0000, 0x1dc7, 0x22ce, 0x22d5, 0x0003, 0x001a, 0x1848, 0x1855, - 0x186f, 0x0002, 0x0000, 0x067b, 0x0003, 0x0000, 0x0682, 0x067f, - 0x0001, 0x001a, 0x188f, 0x0003, 0x001a, 0xffff, 0x18c2, 0x18e9, - 0x0002, 0x086b, 0x068a, 0x0003, 0x072d, 0x07cc, 0x068e, 0x009d, - 0x001a, 0x1910, 0x192c, 0x1955, 0x1980, 0x19db, 0x1a5b, 0x1ac1, - 0x1b4d, 0x1c17, 0x1cdf, 0x1d8e, 0x1e12, 0x1e6e, 0x1ec4, 0x1f2c, - // Entry FA80 - FABF - 0x1faf, 0x203d, 0x20a9, 0x2130, 0x21e5, 0x22a4, 0x2351, 0x23e7, - 0x245b, 0x24c3, 0x2523, 0x2539, 0x256b, 0x25bf, 0x261b, 0x2695, - 0x26bf, 0x2719, 0x276f, 0x27d1, 0x282d, 0x285c, 0x2895, 0x2906, - 0x2974, 0x29bc, 0x29d2, 0x29f7, 0x2a3d, 0x2a9b, 0x2adc, 0x2b79, - 0x2bef, 0x2c52, 0x2cdf, 0x2d57, 0x2d9b, 0x2dc4, 0x2e05, 0x2e23, - 0x2e53, 0x2ea3, 0x2eca, 0x2f22, 0x2fd5, 0x3063, 0x3077, 0x30c1, - 0x3162, 0x31ce, 0x3212, 0x3226, 0x324b, 0x3265, 0x3294, 0x32c5, - 0x3300, 0x3358, 0x33bc, 0x341c, 0x3486, 0x3514, 0x3543, 0x3580, - // Entry FAC0 - FAFF - 0x35c8, 0x35fe, 0x365e, 0x3678, 0x36b0, 0x375c, 0x379b, 0x37ef, - 0x3809, 0x3821, 0x3839, 0x3874, 0x38c8, 0x390b, 0x39b6, 0x3a47, - 0x3ab9, 0x3b01, 0x3b17, 0x3b2d, 0x3b64, 0x3bf1, 0x3c6e, 0x3cbc, - 0x3cce, 0x3d21, 0x3df5, 0x3e65, 0x3ebd, 0x3f0d, 0x3f21, 0x3f67, - 0x3fd1, 0x4031, 0x4089, 0x40d9, 0x415b, 0x4171, 0x4185, 0x41a1, - 0x41b7, 0x41e5, 0x424f, 0x42ad, 0x42f1, 0x430b, 0x4329, 0x4350, - 0x4375, 0x438d, 0x439f, 0x43c5, 0x440d, 0x442b, 0x4457, 0x449f, - 0x44d3, 0x4537, 0x456d, 0x45e9, 0x4663, 0x46b7, 0x46f3, 0x476f, - // Entry FB00 - FB3F - 0x47cf, 0x47e3, 0x4804, 0x484a, 0x48c6, 0x304f, 0x3da1, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3718, 0x009d, 0x001a, - 0xffff, 0xffff, 0xffff, 0xffff, 0x19b6, 0x1a45, 0x1aa7, 0x1b15, - 0x1bdd, 0x1cab, 0x1d67, 0x1dfc, 0x1e5e, 0x1eae, 0x1f10, 0x1f84, - 0x2025, 0x208d, 0x2101, 0x21ae, 0x2273, 0x2326, 0x23c7, 0x2447, - 0x24a3, 0xffff, 0xffff, 0x2551, 0xffff, 0x25ee, 0xffff, 0x26ab, - 0x2707, 0x275d, 0x27b3, 0xffff, 0xffff, 0x287b, 0x28e9, 0x2960, - 0xffff, 0xffff, 0xffff, 0x2a1e, 0xffff, 0x2ab3, 0x2b4e, 0xffff, - // Entry FB40 - FB7F - 0x2c2d, 0x2cbc, 0x2d45, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e3b, - 0xffff, 0xffff, 0x2eef, 0x2fa8, 0xffff, 0xffff, 0x308f, 0x3145, - 0x31bc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32f0, - 0x3340, 0x33a8, 0x3404, 0x346c, 0xffff, 0xffff, 0x356c, 0xffff, - 0x35de, 0xffff, 0xffff, 0x3695, 0xffff, 0x3781, 0xffff, 0xffff, - 0xffff, 0xffff, 0x385a, 0xffff, 0x38da, 0x398d, 0x3a28, 0x3aa5, - 0xffff, 0xffff, 0xffff, 0x3b3f, 0x3bce, 0x3c57, 0xffff, 0xffff, - 0x3cf1, 0x3dd5, 0x3e55, 0x3ea5, 0xffff, 0xffff, 0x3f4b, 0x3fbf, - // Entry FB80 - FBBF - 0x4015, 0xffff, 0x40a8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x41cb, 0x4239, 0x429b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x43b1, 0xffff, 0xffff, 0x4443, 0xffff, 0x44b1, - 0xffff, 0x454f, 0x45c9, 0x4649, 0xffff, 0x46d5, 0x474f, 0xffff, - 0xffff, 0xffff, 0x4830, 0x489e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x3706, 0x009d, 0x001a, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1a13, 0x1a84, 0x1aee, 0x1b98, 0x1c64, - 0x1d26, 0x1dc8, 0x1e3b, 0x1e91, 0x1eed, 0x1f5b, 0x1fed, 0x2068, - // Entry FBC0 - FBFF - 0x20d8, 0x2172, 0x222f, 0x22e8, 0x238f, 0x241a, 0x2482, 0x24f6, - 0xffff, 0xffff, 0x2598, 0xffff, 0x265b, 0xffff, 0x26e6, 0x273e, - 0x2794, 0x2802, 0xffff, 0xffff, 0x28c2, 0x2936, 0x299b, 0xffff, - 0xffff, 0xffff, 0x2a6f, 0xffff, 0x2b18, 0x2bb7, 0xffff, 0x2c8a, - 0x2d15, 0x2d7c, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e7e, 0xffff, - 0xffff, 0x2f68, 0x3015, 0xffff, 0xffff, 0x3106, 0x3192, 0x31f3, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3323, 0x3383, - 0x33e3, 0x3447, 0x34d0, 0xffff, 0xffff, 0x35a7, 0xffff, 0x3631, - // Entry FC00 - FC3F - 0xffff, 0xffff, 0x36de, 0xffff, 0x37c8, 0xffff, 0xffff, 0xffff, - 0xffff, 0x38a1, 0xffff, 0x394f, 0x39f2, 0x3a79, 0x3ae0, 0xffff, - 0xffff, 0xffff, 0x3b9c, 0x3c27, 0x3c98, 0xffff, 0xffff, 0x3d64, - 0x3e28, 0x3e88, 0x3ee8, 0xffff, 0xffff, 0x3f96, 0x3ff6, 0x4060, - 0xffff, 0x411d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4212, - 0x4278, 0x42d2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x43ec, 0xffff, 0xffff, 0x447e, 0xffff, 0x4508, 0xffff, - 0x459e, 0x461c, 0x4690, 0xffff, 0x4724, 0x47a2, 0xffff, 0xffff, - // Entry FC40 - FC7F - 0xffff, 0x4877, 0x4901, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x373d, 0x0003, 0x086f, 0x08d5, 0x08a2, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, - // Entry FC80 - FCBF - 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry FCC0 - FCFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, - 0x13e3, 0x0003, 0x0004, 0x02a4, 0x0633, 0x0012, 0x0017, 0x0024, - 0x0000, 0x0000, 0x0000, 0x0000, 0x008f, 0x00ba, 0x0250, 0x0000, - 0x0271, 0x0000, 0x0000, 0x0000, 0x0000, 0x027e, 0x0000, 0x0296, - // Entry FD00 - FD3F - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, - 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x000a, 0x002f, 0x0000, - 0x0000, 0x0000, 0x0000, 0x006d, 0x0000, 0x007e, 0x0000, 0x0053, - 0x0001, 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x001b, - 0xffff, 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, - 0x001c, 0x0020, 0x0024, 0x0029, 0x002e, 0x000d, 0x001b, 0xffff, - 0x0033, 0x003f, 0x004c, 0x0058, 0x0065, 0x0071, 0x007d, 0x008b, - 0x0098, 0x00a4, 0x00b0, 0x00bf, 0x0006, 0x0000, 0x0000, 0x0000, - // Entry FD40 - FD7F - 0x0000, 0x0000, 0x005a, 0x0001, 0x005c, 0x0001, 0x005e, 0x000d, - 0x001b, 0xffff, 0x00cd, 0x00d1, 0x00d4, 0x00da, 0x00e1, 0x00e8, - 0x00ee, 0x00f4, 0x00f9, 0x0100, 0x0108, 0x010c, 0x0004, 0x007b, - 0x0075, 0x0072, 0x0078, 0x0001, 0x001b, 0x0110, 0x0001, 0x001b, - 0x0123, 0x0001, 0x001b, 0x0130, 0x0001, 0x001b, 0x0139, 0x0004, - 0x008c, 0x0086, 0x0083, 0x0089, 0x0001, 0x001b, 0x013f, 0x0001, - 0x001b, 0x013f, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0098, 0x0000, - // Entry FD80 - FDBF - 0x00a9, 0x0004, 0x00a6, 0x00a0, 0x009d, 0x00a3, 0x0001, 0x000c, - 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, - 0x0012, 0x0203, 0x0004, 0x00b7, 0x00b1, 0x00ae, 0x00b4, 0x0001, - 0x001b, 0x013f, 0x0001, 0x001b, 0x013f, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0008, 0x00c3, 0x00fa, 0x012a, 0x0149, - 0x01fd, 0x021d, 0x022e, 0x023f, 0x0002, 0x00c6, 0x00e8, 0x0003, - 0x00ca, 0x0000, 0x00d9, 0x000d, 0x0005, 0xffff, 0x0636, 0x20fa, - 0x20fe, 0x2102, 0x2106, 0x210a, 0x210e, 0x2112, 0x2116, 0x211a, - // Entry FDC0 - FDFF - 0x211e, 0x0662, 0x000d, 0x001b, 0xffff, 0x014c, 0x0154, 0x015d, - 0x0163, 0x0169, 0x016d, 0x0172, 0x0177, 0x017e, 0x0188, 0x0190, - 0x0199, 0x0002, 0x0000, 0x00eb, 0x000d, 0x0000, 0xffff, 0x1e5d, - 0x22e6, 0x22d9, 0x22e8, 0x22d9, 0x1e5d, 0x1e5d, 0x22e8, 0x22dd, - 0x22ec, 0x22ee, 0x22f0, 0x0002, 0x00fd, 0x011e, 0x0005, 0x0103, - 0x0000, 0x0115, 0x0000, 0x010c, 0x0007, 0x0000, 0x04bd, 0x04c1, - 0x04c5, 0x04c9, 0x04cd, 0x04d1, 0x04d5, 0x0007, 0x0016, 0x2b50, - 0x0358, 0x2b66, 0x2b69, 0x2b6c, 0x0364, 0x0367, 0x0007, 0x001b, - // Entry FE00 - FE3F - 0x01a2, 0x01a9, 0x01b0, 0x01b8, 0x01c2, 0x01cb, 0x01d2, 0x0002, - 0x0000, 0x0121, 0x0007, 0x0000, 0x22dd, 0x22d9, 0x04dd, 0x2159, - 0x04dd, 0x22e6, 0x22dd, 0x0002, 0x012d, 0x013f, 0x0003, 0x0131, - 0x0000, 0x0138, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, - 0x04ec, 0x0005, 0x001b, 0xffff, 0x01db, 0x01e7, 0x01f3, 0x01ff, - 0x0002, 0x0000, 0x0142, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0002, 0x014c, 0x01b7, 0x0003, 0x0150, 0x0173, - 0x0194, 0x0008, 0x015c, 0x0163, 0x0159, 0x0167, 0x016a, 0x016d, - // Entry FE40 - FE7F - 0x0170, 0x0160, 0x0001, 0x001b, 0x020b, 0x0002, 0x0000, 0x04ef, - 0x2337, 0x0001, 0x001b, 0x0214, 0x0002, 0x0000, 0x04f2, 0x233a, - 0x0001, 0x001b, 0x0219, 0x0001, 0x001b, 0x0228, 0x0001, 0x001b, - 0x0239, 0x0001, 0x001b, 0x0248, 0x0008, 0x017f, 0x0185, 0x017c, - 0x0188, 0x018b, 0x018e, 0x0191, 0x0182, 0x0001, 0x0005, 0x125f, - 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x1f96, 0x0001, 0x0000, - 0x21ec, 0x0001, 0x001b, 0x0219, 0x0001, 0x001b, 0x0228, 0x0001, - 0x001b, 0x0239, 0x0001, 0x001b, 0x0248, 0x0008, 0x01a0, 0x01a7, - // Entry FE80 - FEBF - 0x019d, 0x01ab, 0x01ae, 0x01b1, 0x01b4, 0x01a4, 0x0001, 0x001b, - 0x020b, 0x0002, 0x0000, 0x04ef, 0x2337, 0x0001, 0x001b, 0x0214, - 0x0002, 0x0000, 0x04f2, 0x233a, 0x0001, 0x001b, 0x0219, 0x0001, - 0x001b, 0x0228, 0x0001, 0x001b, 0x0239, 0x0001, 0x001b, 0x0248, - 0x0003, 0x01bb, 0x0000, 0x01dc, 0x0008, 0x01c7, 0x01cd, 0x01c4, - 0x01d0, 0x01d3, 0x01d6, 0x01d9, 0x01ca, 0x0001, 0x001b, 0x020b, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x001b, 0x0214, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x001b, 0x0251, 0x0001, 0x001b, 0x0259, 0x0001, - // Entry FEC0 - FEFF - 0x001b, 0x0263, 0x0001, 0x001b, 0x026b, 0x0008, 0x01e8, 0x01ee, - 0x01e5, 0x01f1, 0x01f4, 0x01f7, 0x01fa, 0x01eb, 0x0001, 0x001b, - 0x020b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x001b, 0x0214, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x001b, 0x0251, 0x0001, 0x001b, 0x0259, - 0x0001, 0x001b, 0x0263, 0x0001, 0x001b, 0x026b, 0x0003, 0x020c, - 0x0217, 0x0201, 0x0002, 0x0204, 0x0208, 0x0002, 0x001b, 0x0271, - 0x0291, 0x0002, 0x001b, 0x027f, 0x029d, 0x0002, 0x020f, 0x0213, - 0x0002, 0x0009, 0x0078, 0x5430, 0x0002, 0x0000, 0x04f5, 0x04f9, - // Entry FF00 - FF3F - 0x0001, 0x0219, 0x0002, 0x0002, 0x040a, 0x4c26, 0x0004, 0x022b, - 0x0225, 0x0222, 0x0228, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, - 0x03d9, 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, - 0x023c, 0x0236, 0x0233, 0x0239, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - 0x0004, 0x024d, 0x0247, 0x0244, 0x024a, 0x0001, 0x001b, 0x013f, - 0x0001, 0x001b, 0x013f, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0259, 0x0260, - // Entry FF40 - FF7F - 0x0000, 0x9006, 0x0001, 0x025b, 0x0001, 0x025d, 0x0001, 0x0000, - 0x04ef, 0x0004, 0x026e, 0x0268, 0x0265, 0x026b, 0x0001, 0x0005, - 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0001, 0x1fb9, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0277, - 0x0001, 0x0279, 0x0001, 0x027b, 0x0001, 0x0000, 0x06c8, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0285, 0x0004, 0x0293, - 0x028d, 0x028a, 0x0290, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, - 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, 0x0012, 0x0203, 0x0005, - // Entry FF80 - FFBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x029c, 0x0001, 0x029e, 0x0001, - 0x02a0, 0x0002, 0x0000, 0x1a20, 0x2290, 0x0041, 0x02e6, 0x02eb, - 0x0000, 0x02f0, 0x0307, 0x0000, 0x031e, 0x0335, 0x0000, 0x034c, - 0x0363, 0x0000, 0x037a, 0x0395, 0x0000, 0x03ac, 0x03b1, 0x0000, - 0x03b6, 0x03cd, 0x0000, 0x03df, 0x03e4, 0x0000, 0x03e9, 0x03ee, - 0x0000, 0x03f3, 0x03f8, 0x0000, 0x03fd, 0x0411, 0x0425, 0x0439, - 0x044d, 0x0461, 0x0475, 0x0489, 0x049d, 0x04b1, 0x04c5, 0x04d9, - 0x04ed, 0x0501, 0x0515, 0x0529, 0x053d, 0x0551, 0x0565, 0x0579, - // Entry FFC0 - FFFF - 0x058d, 0x05a1, 0x05a7, 0x0000, 0x05ad, 0x05c3, 0x0000, 0x05d5, - 0x05eb, 0x0000, 0x05fd, 0x0613, 0x0000, 0x0629, 0x062e, 0x0001, - 0x02e8, 0x0001, 0x0001, 0x0040, 0x0001, 0x02ed, 0x0001, 0x0001, - 0x0040, 0x0003, 0x02f4, 0x02f7, 0x02fc, 0x0001, 0x001b, 0x02a8, - 0x0003, 0x0000, 0x1a3e, 0x1a48, 0x1a52, 0x0002, 0x02ff, 0x0303, - 0x0002, 0x001b, 0x02b9, 0x02ad, 0x0002, 0x001b, 0x02d3, 0x02c6, - 0x0003, 0x030b, 0x030e, 0x0313, 0x0001, 0x001b, 0x02e1, 0x0003, - 0x001b, 0x02e5, 0x02ee, 0x02f7, 0x0002, 0x0316, 0x031a, 0x0002, - // Entry 10000 - 1003F - 0x001b, 0x0300, 0x0300, 0x0002, 0x001b, 0x030b, 0x030b, 0x0003, - 0x0322, 0x0325, 0x032a, 0x0001, 0x001b, 0x0317, 0x0003, 0x0000, - 0x1a72, 0x1a7f, 0x1a8c, 0x0002, 0x032d, 0x0331, 0x0002, 0x001b, - 0x032e, 0x031f, 0x0002, 0x001b, 0x034e, 0x033e, 0x0003, 0x0339, - 0x033c, 0x0341, 0x0001, 0x001b, 0x035f, 0x0003, 0x001b, 0x0364, - 0x036e, 0x0378, 0x0002, 0x0344, 0x0348, 0x0002, 0x001b, 0x038e, - 0x0382, 0x0002, 0x001b, 0x03a8, 0x039b, 0x0003, 0x0350, 0x0353, - 0x0358, 0x0001, 0x001b, 0x03b6, 0x0003, 0x0000, 0x1aad, 0x1ab8, - // Entry 10040 - 1007F - 0x1ac3, 0x0002, 0x035b, 0x035f, 0x0002, 0x001b, 0x03c9, 0x03bc, - 0x0002, 0x001b, 0x03e5, 0x03d7, 0x0003, 0x0367, 0x036a, 0x036f, - 0x0001, 0x001b, 0x03f4, 0x0003, 0x001b, 0x03f8, 0x0401, 0x040a, - 0x0002, 0x0372, 0x0376, 0x0002, 0x001b, 0x0413, 0x0413, 0x0002, - 0x001b, 0x041e, 0x041e, 0x0004, 0x037f, 0x0382, 0x0387, 0x0392, - 0x0001, 0x0001, 0x019c, 0x0003, 0x0000, 0x1ae1, 0x1aeb, 0x1af5, - 0x0002, 0x038a, 0x038e, 0x0002, 0x001b, 0x0436, 0x042a, 0x0002, - 0x001b, 0x0450, 0x0443, 0x0001, 0x0000, 0x1b0d, 0x0003, 0x0399, - // Entry 10080 - 100BF - 0x039c, 0x03a1, 0x0001, 0x0001, 0x0213, 0x0003, 0x001b, 0x045e, - 0x0467, 0x0470, 0x0002, 0x03a4, 0x03a8, 0x0002, 0x001b, 0x0479, - 0x0479, 0x0002, 0x001b, 0x0484, 0x0484, 0x0001, 0x03ae, 0x0001, - 0x001b, 0x0490, 0x0001, 0x03b3, 0x0001, 0x001b, 0x049e, 0x0003, - 0x03ba, 0x03bd, 0x03c2, 0x0001, 0x001b, 0x04a9, 0x0003, 0x0000, - 0x1b2f, 0x1b39, 0x1b3f, 0x0002, 0x03c5, 0x03c9, 0x0002, 0x001b, - 0x04b8, 0x04ad, 0x0002, 0x001b, 0x04d0, 0x04c4, 0x0003, 0x03d1, - 0x0000, 0x03d4, 0x0001, 0x001b, 0x04a9, 0x0002, 0x03d7, 0x03db, - // Entry 100C0 - 100FF - 0x0002, 0x001b, 0x04b8, 0x04ad, 0x0002, 0x001b, 0x04d0, 0x04c4, - 0x0001, 0x03e1, 0x0001, 0x001b, 0x04dd, 0x0001, 0x03e6, 0x0001, - 0x001b, 0x04e9, 0x0001, 0x03eb, 0x0001, 0x001b, 0x04f4, 0x0001, - 0x03f0, 0x0001, 0x001b, 0x0504, 0x0001, 0x03f5, 0x0001, 0x001b, - 0x050f, 0x0001, 0x03fa, 0x0001, 0x001b, 0x0524, 0x0003, 0x0000, - 0x0401, 0x0406, 0x0003, 0x0000, 0x1b83, 0x1b8f, 0x1b9b, 0x0002, - 0x0409, 0x040d, 0x0002, 0x001b, 0x0540, 0x0532, 0x0002, 0x001b, - 0x055e, 0x054f, 0x0003, 0x0000, 0x0415, 0x041a, 0x0003, 0x001b, - // Entry 10100 - 1013F - 0x056e, 0x0578, 0x0582, 0x0002, 0x041d, 0x0421, 0x0002, 0x001b, - 0x058c, 0x058c, 0x0002, 0x001b, 0x0598, 0x0598, 0x0003, 0x0000, - 0x0429, 0x042e, 0x0003, 0x001b, 0x05a5, 0x05ad, 0x05b5, 0x0002, - 0x0431, 0x0435, 0x0002, 0x001b, 0x05bd, 0x05bd, 0x0002, 0x001b, - 0x05c7, 0x05c7, 0x0003, 0x0000, 0x043d, 0x0442, 0x0003, 0x0000, - 0x1bc1, 0x1bcd, 0x1bd9, 0x0002, 0x0445, 0x0449, 0x0002, 0x001b, - 0x05e0, 0x05d2, 0x0002, 0x001b, 0x05fe, 0x05ef, 0x0003, 0x0000, - 0x0451, 0x0456, 0x0003, 0x001b, 0x060e, 0x0618, 0x0622, 0x0002, - // Entry 10140 - 1017F - 0x0459, 0x045d, 0x0002, 0x001b, 0x062c, 0x062c, 0x0002, 0x001b, - 0x0638, 0x0638, 0x0003, 0x0000, 0x0465, 0x046a, 0x0003, 0x001b, - 0x0645, 0x064c, 0x0653, 0x0002, 0x046d, 0x0471, 0x0002, 0x001b, - 0x065a, 0x065a, 0x0002, 0x001b, 0x0663, 0x0663, 0x0003, 0x0000, - 0x0479, 0x047e, 0x0003, 0x0000, 0x1bff, 0x1c0c, 0x1c19, 0x0002, - 0x0481, 0x0485, 0x0002, 0x001b, 0x067c, 0x066d, 0x0002, 0x001b, - 0x069c, 0x068c, 0x0003, 0x0000, 0x048d, 0x0492, 0x0003, 0x001b, - 0x06ad, 0x06b7, 0x06c1, 0x0002, 0x0495, 0x0499, 0x0002, 0x001b, - // Entry 10180 - 101BF - 0x06cb, 0x06cb, 0x0002, 0x001b, 0x06d7, 0x06d7, 0x0003, 0x0000, - 0x04a1, 0x04a6, 0x0003, 0x001b, 0x06e4, 0x06ec, 0x06f4, 0x0002, - 0x04a9, 0x04ad, 0x0002, 0x001b, 0x06fc, 0x06fc, 0x0002, 0x001b, - 0x0706, 0x0706, 0x0003, 0x0000, 0x04b5, 0x04ba, 0x0003, 0x0000, - 0x1c42, 0x1c51, 0x1c60, 0x0002, 0x04bd, 0x04c1, 0x0002, 0x001b, - 0x0722, 0x0711, 0x0002, 0x001b, 0x0746, 0x0734, 0x0003, 0x0000, - 0x04c9, 0x04ce, 0x0003, 0x001b, 0x0759, 0x0763, 0x076d, 0x0002, - 0x04d1, 0x04d5, 0x0002, 0x001b, 0x0777, 0x0777, 0x0002, 0x001b, - // Entry 101C0 - 101FF - 0x0783, 0x0783, 0x0003, 0x0000, 0x04dd, 0x04e2, 0x0003, 0x001b, - 0x0790, 0x0797, 0x079e, 0x0002, 0x04e5, 0x04e9, 0x0002, 0x001b, - 0x07a5, 0x07a5, 0x0002, 0x001b, 0x07ae, 0x07ae, 0x0003, 0x0000, - 0x04f1, 0x04f6, 0x0003, 0x0000, 0x1c8f, 0x1c9d, 0x1cab, 0x0002, - 0x04f9, 0x04fd, 0x0002, 0x001b, 0x07c8, 0x07b8, 0x0002, 0x001b, - 0x07ea, 0x07d9, 0x0003, 0x0000, 0x0505, 0x050a, 0x0003, 0x001b, - 0x07fc, 0x0806, 0x0810, 0x0002, 0x050d, 0x0511, 0x0002, 0x001b, - 0x081a, 0x081a, 0x0002, 0x001b, 0x0826, 0x0826, 0x0003, 0x0000, - // Entry 10200 - 1023F - 0x0519, 0x051e, 0x0003, 0x001b, 0x0833, 0x083b, 0x0843, 0x0002, - 0x0521, 0x0525, 0x0002, 0x001b, 0x084b, 0x084b, 0x0002, 0x001b, - 0x0855, 0x0855, 0x0003, 0x0000, 0x052d, 0x0532, 0x0003, 0x0000, - 0x1cd7, 0x1ce3, 0x1cef, 0x0002, 0x0535, 0x0539, 0x0002, 0x001b, - 0x086e, 0x0860, 0x0002, 0x001b, 0x088c, 0x087d, 0x0003, 0x0000, - 0x0541, 0x0546, 0x0003, 0x001b, 0x089c, 0x08a6, 0x08b0, 0x0002, - 0x0549, 0x054d, 0x0002, 0x001b, 0x08ba, 0x08ba, 0x0002, 0x001b, - 0x08c6, 0x08c6, 0x0003, 0x0000, 0x0555, 0x055a, 0x0003, 0x001b, - // Entry 10240 - 1027F - 0x08d3, 0x08da, 0x08e1, 0x0002, 0x055d, 0x0561, 0x0002, 0x001b, - 0x08e8, 0x08e8, 0x0002, 0x001b, 0x08f1, 0x08f1, 0x0003, 0x0000, - 0x0569, 0x056e, 0x0003, 0x0000, 0x1d15, 0x1d23, 0x1d31, 0x0002, - 0x0571, 0x0575, 0x0002, 0x001b, 0x090b, 0x08fb, 0x0002, 0x001b, - 0x092d, 0x091c, 0x0003, 0x0000, 0x057d, 0x0582, 0x0003, 0x001b, - 0x093f, 0x0949, 0x0953, 0x0002, 0x0585, 0x0589, 0x0002, 0x001b, - 0x095d, 0x095d, 0x0002, 0x001b, 0x0969, 0x0969, 0x0003, 0x0000, - 0x0591, 0x0596, 0x0003, 0x001b, 0x0976, 0x097e, 0x0986, 0x0002, - // Entry 10280 - 102BF - 0x0599, 0x059d, 0x0002, 0x001b, 0x098e, 0x098e, 0x0002, 0x001b, - 0x0998, 0x0998, 0x0001, 0x05a3, 0x0002, 0x0007, 0x07cc, 0x2388, - 0x0001, 0x05a9, 0x0002, 0x0007, 0x07cc, 0x2388, 0x0003, 0x05b1, - 0x05b4, 0x05b8, 0x0001, 0x001b, 0x09a3, 0x0002, 0x0000, 0xffff, - 0x1d6c, 0x0002, 0x05bb, 0x05bf, 0x0002, 0x001b, 0x09b4, 0x09a8, - 0x0002, 0x001b, 0x09ce, 0x09c1, 0x0003, 0x05c7, 0x0000, 0x05ca, - 0x0001, 0x001b, 0x09dc, 0x0002, 0x05cd, 0x05d1, 0x0002, 0x001b, - 0x09e0, 0x09e0, 0x0002, 0x001b, 0x09eb, 0x09eb, 0x0003, 0x05d9, - // Entry 102C0 - 102FF - 0x05dc, 0x05e0, 0x0001, 0x001b, 0x09f7, 0x0002, 0x0000, 0xffff, - 0x1d8b, 0x0002, 0x05e3, 0x05e7, 0x0002, 0x001b, 0x0a0c, 0x09fe, - 0x0002, 0x001b, 0x0a2a, 0x0a1b, 0x0003, 0x05ef, 0x0000, 0x05f2, - 0x0001, 0x0001, 0x075a, 0x0002, 0x05f5, 0x05f9, 0x0002, 0x001b, - 0x0a3a, 0x0a3a, 0x0002, 0x001b, 0x0a46, 0x0a46, 0x0003, 0x0601, - 0x0604, 0x0608, 0x0001, 0x001b, 0x0a53, 0x0002, 0x000d, 0xffff, - 0x3182, 0x0002, 0x060b, 0x060f, 0x0002, 0x001b, 0x0a68, 0x0a5a, - 0x0002, 0x001b, 0x0a86, 0x0a77, 0x0003, 0x0617, 0x061a, 0x061e, - // Entry 10300 - 1033F - 0x0001, 0x001b, 0x0a96, 0x0002, 0x000d, 0xffff, 0x3182, 0x0002, - 0x0621, 0x0625, 0x0002, 0x001b, 0x0a9b, 0x0a9b, 0x0002, 0x001b, - 0x0aa7, 0x0aa7, 0x0001, 0x062b, 0x0001, 0x001b, 0x0ab4, 0x0001, - 0x0630, 0x0001, 0x001b, 0x0abe, 0x0004, 0x0638, 0x063c, 0x0641, - 0x0666, 0x0002, 0x0000, 0x1dc7, 0x22ce, 0x0003, 0x001b, 0x0ac3, - 0x0acc, 0x0ade, 0x0002, 0x0650, 0x0644, 0x0003, 0x0000, 0x064b, - 0x0648, 0x0001, 0x001b, 0x0af0, 0x0003, 0x001b, 0xffff, 0x0b0b, - 0x0b1f, 0x0003, 0x0654, 0x0660, 0x065a, 0x0004, 0x0006, 0xffff, - // Entry 10340 - 1037F - 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, - 0x05a4, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a8, 0x0002, - 0x084d, 0x0669, 0x0003, 0x066d, 0x07ad, 0x070d, 0x009e, 0x001b, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0bb2, 0x0bf5, 0x0c5f, 0x0c93, - 0x0ccc, 0x0d05, 0x0d41, 0x0d7a, 0x0dae, 0x0e43, 0x0e7c, 0x0eb9, - 0x0f0e, 0x0f45, 0x0f81, 0x0fda, 0x104c, 0x10a5, 0x10fe, 0x113e, - 0x1172, 0xffff, 0xffff, 0x11cb, 0xffff, 0x121c, 0xffff, 0x127e, - 0x12b7, 0x12e8, 0x131b, 0xffff, 0xffff, 0x1384, 0x13be, 0x1409, - // Entry 10380 - 103BF - 0xffff, 0xffff, 0xffff, 0x146c, 0xffff, 0x14c2, 0x1514, 0xffff, - 0x1584, 0x15d6, 0x1628, 0xffff, 0xffff, 0xffff, 0xffff, 0x16a6, - 0xffff, 0xffff, 0x1706, 0x1752, 0xffff, 0xffff, 0x17d0, 0x1821, - 0x185e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1906, - 0x1936, 0x196d, 0x19a3, 0x19d6, 0xffff, 0xffff, 0x1a6a, 0xffff, - 0x1aac, 0xffff, 0xffff, 0x1b1b, 0xffff, 0x1ba1, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1c19, 0xffff, 0x1c62, 0x1cb6, 0x1d07, 0x1d47, - 0xffff, 0xffff, 0xffff, 0x1d9e, 0x1de7, 0x1e2c, 0xffff, 0xffff, - // Entry 103C0 - 103FF - 0x1e92, 0x1f08, 0x1f4b, 0x1f79, 0xffff, 0xffff, 0x1fd4, 0x200e, - 0x203c, 0xffff, 0x2091, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2174, 0x21ae, 0x21e2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x228a, 0xffff, 0xffff, 0x22dd, 0xffff, 0x2319, - 0xffff, 0x236b, 0x23a2, 0x23e2, 0xffff, 0x2428, 0x246b, 0xffff, - 0xffff, 0xffff, 0x24da, 0x2511, 0xffff, 0xffff, 0x0b33, 0x0c2b, - 0x0dde, 0x0e0f, 0xffff, 0xffff, 0x1b5a, 0x211d, 0x009e, 0x001b, - 0x0b61, 0x0b72, 0x0b86, 0x0b97, 0x0bc3, 0x0c01, 0x0c6b, 0x0ca0, - // Entry 10400 - 1043F - 0x0cd9, 0x0d13, 0x0d4e, 0x0d86, 0x0db8, 0x0e50, 0x0e8b, 0x0ed0, - 0x0f1b, 0x0f53, 0x0f98, 0x0ffa, 0x1063, 0x10bc, 0x110e, 0x114a, - 0x1182, 0x11b2, 0x11be, 0x11d9, 0x1205, 0x122c, 0x1267, 0x128b, - 0x12c2, 0x12f3, 0x132b, 0x135b, 0x1371, 0x1392, 0x13d0, 0x1413, - 0x1439, 0x1444, 0x145c, 0x147f, 0x14b5, 0x14d8, 0x152a, 0x1566, - 0x159a, 0x15ec, 0x1632, 0x1656, 0x1669, 0x168a, 0x1699, 0x16b3, - 0x16dd, 0x16f2, 0x171a, 0x1766, 0x17b1, 0x17c4, 0x17e5, 0x1830, - 0x1868, 0x188c, 0x18a0, 0x18b2, 0x18c1, 0x18d8, 0x18ef, 0x1910, - // Entry 10440 - 1047F - 0x1943, 0x1979, 0x19ae, 0x19f4, 0x1a40, 0x1a55, 0x1a76, 0x1aa0, - 0x1abd, 0x1aef, 0x1b09, 0x1b2a, 0x1b8b, 0x1bae, 0x1bd8, 0x1be6, - 0x1bf4, 0x1c03, 0x1c28, 0x1c56, 0x1c78, 0x1ccb, 0x1d17, 0x1d53, - 0x1d7b, 0x1d88, 0x1d93, 0x1db1, 0x1df8, 0x1e3e, 0x1e74, 0x1e7e, - 0x1eab, 0x1f19, 0x1f55, 0x1f87, 0x1fb3, 0x1fbe, 0x1fe2, 0x2018, - 0x204c, 0x207c, 0x20ac, 0x20f4, 0x2102, 0x210e, 0x215a, 0x2167, - 0x2182, 0x21ba, 0x21ed, 0x2215, 0x2225, 0x223d, 0x2252, 0x2265, - 0x2273, 0x227e, 0x2296, 0x22c0, 0x22d0, 0x22e8, 0x230e, 0x232b, - // Entry 10480 - 104BF - 0x235f, 0x2378, 0x23b2, 0x23ef, 0x2419, 0x2439, 0x247a, 0x24a8, - 0x24b4, 0x24c5, 0x24e7, 0x2524, 0x179e, 0x1eed, 0x0b3d, 0x0c37, - 0x0de9, 0x0e1b, 0x125c, 0x1afe, 0x1b65, 0x212c, 0x009e, 0x001b, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0bdd, 0x0c16, 0x0c80, 0x0cb6, - 0x0cef, 0x0d2a, 0x0d64, 0x0d9b, 0x0dcb, 0x0e66, 0x0ea3, 0x0ef0, - 0x0f31, 0x0f6a, 0x0fb9, 0x1023, 0x1084, 0x10dd, 0x1127, 0x115f, - 0x119b, 0xffff, 0xffff, 0x11f0, 0xffff, 0x1245, 0xffff, 0x12a1, - 0x12d6, 0x1307, 0x1344, 0xffff, 0xffff, 0x13a9, 0x13eb, 0x1426, - // Entry 104C0 - 104FF - 0xffff, 0xffff, 0xffff, 0x149b, 0xffff, 0x14f7, 0x1549, 0xffff, - 0x15b9, 0x160b, 0x1645, 0xffff, 0xffff, 0xffff, 0xffff, 0x16c9, - 0xffff, 0xffff, 0x1737, 0x1783, 0xffff, 0xffff, 0x1803, 0x1848, - 0x187b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1923, - 0x1959, 0x198e, 0x19c2, 0x1a1b, 0xffff, 0xffff, 0x1a8b, 0xffff, - 0x1ad7, 0xffff, 0xffff, 0x1b42, 0xffff, 0x1bc4, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1c40, 0xffff, 0x1c97, 0x1ce9, 0x1d30, 0x1d68, - 0xffff, 0xffff, 0xffff, 0x1dcd, 0x1e12, 0x1e59, 0xffff, 0xffff, - // Entry 10500 - 1053F - 0x1ecd, 0x1f33, 0x1f68, 0x1f9e, 0xffff, 0xffff, 0x1ff9, 0x202b, - 0x2065, 0xffff, 0x20d0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2199, 0x21cf, 0x2201, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x22ab, 0xffff, 0xffff, 0x22fc, 0xffff, 0x2346, - 0xffff, 0x238e, 0x23cb, 0x2405, 0xffff, 0x2453, 0x2492, 0xffff, - 0xffff, 0xffff, 0x24fd, 0x2540, 0xffff, 0xffff, 0x0b50, 0x0c4c, - 0x0dfd, 0x0e30, 0xffff, 0xffff, 0x1b79, 0x2144, 0x0003, 0x0851, - 0x08d3, 0x0892, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10540 - 1057F - 0xffff, 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x16e2, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, - // Entry 10580 - 105BF - 0xffff, 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x08f4, 0x0978, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x276d, 0xffff, - 0xffff, 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, - // Entry 105C0 - 105FF - 0xffff, 0xffff, 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, 0x08f8, - 0x097c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x16eb, 0x0003, 0x0004, 0x005b, - // Entry 10600 - 1063F - 0x0265, 0x0008, 0x0000, 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0027, 0x0041, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, - 0x0001, 0x001c, 0x0000, 0x0001, 0x001c, 0x0012, 0x0001, 0x001c, - 0x001e, 0x0001, 0x001c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0030, 0x0000, 0x0000, 0x0004, 0x003e, 0x0038, - 0x0035, 0x003b, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x0000, - // Entry 10640 - 1067F - 0x0000, 0x0000, 0x0000, 0x0000, 0x004a, 0x0000, 0x0000, 0x0004, - 0x0058, 0x0052, 0x004f, 0x0055, 0x0001, 0x0005, 0x0773, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, - 0x003f, 0x0000, 0x0000, 0x0000, 0x0000, 0x009b, 0x00ad, 0x0000, - 0x00bc, 0x00ce, 0x0000, 0x00e0, 0x00f2, 0x0000, 0x0104, 0x0116, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0128, 0x0137, 0x0000, 0x0146, 0x0155, 0x0000, 0x0164, 0x0173, - // Entry 10680 - 106BF - 0x0000, 0x0182, 0x0191, 0x0000, 0x01a0, 0x01af, 0x0000, 0x01be, - 0x01cd, 0x0000, 0x01dc, 0x01eb, 0x0000, 0x01fa, 0x0000, 0x0000, - 0x01ff, 0x0211, 0x0000, 0x0220, 0x0232, 0x0000, 0x0244, 0x0256, - 0x0003, 0x009f, 0x0000, 0x00a2, 0x0001, 0x001c, 0x002e, 0x0002, - 0x00a5, 0x00a9, 0x0002, 0x001c, 0x0031, 0x0031, 0x0002, 0x001c, - 0x003b, 0x003b, 0x0003, 0x0000, 0x0000, 0x00b1, 0x0002, 0x00b4, - 0x00b8, 0x0002, 0x001c, 0x0031, 0x0031, 0x0002, 0x001c, 0x003b, - 0x003b, 0x0003, 0x00c0, 0x0000, 0x00c3, 0x0001, 0x001c, 0x0046, - // Entry 106C0 - 106FF - 0x0002, 0x00c6, 0x00ca, 0x0002, 0x001c, 0x004a, 0x004a, 0x0002, - 0x001c, 0x0055, 0x0055, 0x0003, 0x00d2, 0x0000, 0x00d5, 0x0001, - 0x001c, 0x0046, 0x0002, 0x00d8, 0x00dc, 0x0002, 0x001c, 0x004a, - 0x004a, 0x0002, 0x001c, 0x0055, 0x0055, 0x0003, 0x00e4, 0x0000, - 0x00e7, 0x0001, 0x001c, 0x0061, 0x0002, 0x00ea, 0x00ee, 0x0002, - 0x001c, 0x0064, 0x0064, 0x0002, 0x001c, 0x006e, 0x006e, 0x0003, - 0x00f6, 0x0000, 0x00f9, 0x0001, 0x001c, 0x0061, 0x0002, 0x00fc, - 0x0100, 0x0002, 0x001c, 0x0064, 0x0064, 0x0002, 0x001c, 0x006e, - // Entry 10700 - 1073F - 0x006e, 0x0003, 0x0108, 0x0000, 0x010b, 0x0001, 0x001c, 0x0079, - 0x0002, 0x010e, 0x0112, 0x0002, 0x001c, 0x007c, 0x007c, 0x0002, - 0x001c, 0x0086, 0x0086, 0x0003, 0x011a, 0x0000, 0x011d, 0x0001, - 0x001c, 0x0079, 0x0002, 0x0120, 0x0124, 0x0002, 0x001c, 0x007c, - 0x007c, 0x0002, 0x001c, 0x0086, 0x0086, 0x0003, 0x0000, 0x0000, - 0x012c, 0x0002, 0x012f, 0x0133, 0x0002, 0x001b, 0x0540, 0x0532, - 0x0002, 0x001b, 0x055e, 0x054f, 0x0003, 0x0000, 0x0000, 0x013b, - 0x0002, 0x013e, 0x0142, 0x0002, 0x001b, 0x0540, 0x0532, 0x0002, - // Entry 10740 - 1077F - 0x001b, 0x055e, 0x054f, 0x0003, 0x0000, 0x0000, 0x014a, 0x0002, - 0x014d, 0x0151, 0x0002, 0x001b, 0x05e0, 0x05d2, 0x0002, 0x001b, - 0x05fe, 0x05ef, 0x0003, 0x0000, 0x0000, 0x0159, 0x0002, 0x015c, - 0x0160, 0x0002, 0x001b, 0x05e0, 0x05d2, 0x0002, 0x001b, 0x05fe, - 0x05ef, 0x0003, 0x0000, 0x0000, 0x0168, 0x0002, 0x016b, 0x016f, - 0x0002, 0x001b, 0x067c, 0x066d, 0x0002, 0x001b, 0x069c, 0x068c, - 0x0003, 0x0000, 0x0000, 0x0177, 0x0002, 0x017a, 0x017e, 0x0002, - 0x001b, 0x067c, 0x066d, 0x0002, 0x001b, 0x069c, 0x068c, 0x0003, - // Entry 10780 - 107BF - 0x0000, 0x0000, 0x0186, 0x0002, 0x0189, 0x018d, 0x0002, 0x001b, - 0x0722, 0x0711, 0x0002, 0x001b, 0x0746, 0x0734, 0x0003, 0x0000, - 0x0000, 0x0195, 0x0002, 0x0198, 0x019c, 0x0002, 0x001b, 0x0722, - 0x0711, 0x0002, 0x001b, 0x0746, 0x0734, 0x0003, 0x0000, 0x0000, - 0x01a4, 0x0002, 0x01a7, 0x01ab, 0x0002, 0x001b, 0x07c8, 0x07b8, - 0x0002, 0x001b, 0x07ea, 0x07d9, 0x0003, 0x0000, 0x0000, 0x01b3, - 0x0002, 0x01b6, 0x01ba, 0x0002, 0x001b, 0x07c8, 0x07b8, 0x0002, - 0x001b, 0x07ea, 0x07d9, 0x0003, 0x0000, 0x0000, 0x01c2, 0x0002, - // Entry 107C0 - 107FF - 0x01c5, 0x01c9, 0x0002, 0x001b, 0x086e, 0x0860, 0x0002, 0x001b, - 0x088c, 0x087d, 0x0003, 0x0000, 0x0000, 0x01d1, 0x0002, 0x01d4, - 0x01d8, 0x0002, 0x001b, 0x086e, 0x0860, 0x0002, 0x001b, 0x088c, - 0x087d, 0x0003, 0x0000, 0x0000, 0x01e0, 0x0002, 0x01e3, 0x01e7, - 0x0002, 0x001b, 0x090b, 0x08fb, 0x0002, 0x001b, 0x092d, 0x091c, - 0x0003, 0x0000, 0x0000, 0x01ef, 0x0002, 0x01f2, 0x01f6, 0x0002, - 0x001b, 0x090b, 0x08fb, 0x0002, 0x001b, 0x092d, 0x091c, 0x0001, - 0x01fc, 0x0001, 0x0007, 0x2388, 0x0003, 0x0203, 0x0000, 0x0206, - // Entry 10800 - 1083F - 0x0001, 0x001c, 0x0091, 0x0002, 0x0209, 0x020d, 0x0002, 0x001c, - 0x0094, 0x0094, 0x0002, 0x001c, 0x009e, 0x009e, 0x0003, 0x0000, - 0x0000, 0x0215, 0x0002, 0x0218, 0x021c, 0x0002, 0x001c, 0x0094, - 0x0094, 0x0002, 0x001c, 0x009e, 0x009e, 0x0003, 0x0224, 0x0000, - 0x0227, 0x0001, 0x000b, 0x1250, 0x0002, 0x022a, 0x022e, 0x0002, - 0x001c, 0x00a9, 0x00a9, 0x0002, 0x001c, 0x00b4, 0x00b4, 0x0003, - 0x0236, 0x0000, 0x0239, 0x0001, 0x000b, 0x1250, 0x0002, 0x023c, - 0x0240, 0x0002, 0x001c, 0x00a9, 0x00a9, 0x0002, 0x001c, 0x00b4, - // Entry 10840 - 1087F - 0x00b4, 0x0003, 0x0248, 0x0000, 0x024b, 0x0001, 0x001c, 0x00c0, - 0x0002, 0x024e, 0x0252, 0x0002, 0x001c, 0x00c4, 0x00c4, 0x0002, - 0x001c, 0x00cf, 0x00cf, 0x0003, 0x0000, 0x0000, 0x025a, 0x0002, - 0x025d, 0x0261, 0x0002, 0x001c, 0x00c4, 0x00c4, 0x0002, 0x001c, - 0x00cf, 0x00cf, 0x0004, 0x0000, 0x0000, 0x026a, 0x0282, 0x0001, - 0x026c, 0x0003, 0x0270, 0x027c, 0x0276, 0x0004, 0x001c, 0xffff, - 0xffff, 0xffff, 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, - 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, 0x00db, 0x0001, - // Entry 10880 - 108BF - 0x0284, 0x0003, 0x0288, 0x030a, 0x02c9, 0x003f, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0x00db, 0x00db, - 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 108C0 - 108FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x003f, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0x00db, - 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10900 - 1093F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x003f, - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10940 - 1097F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, 0x0023, 0x001d, - 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, - 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, 0x0031, 0x0097, - 0x0064, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10980 - 109BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 109C0 - 109FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10A00 - 10A3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, - 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, - 0x0121, 0x016a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 10A40 - 10A7F - 0x0000, 0x000d, 0x0016, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x001d, 0x0042, 0x0000, - 0x007e, 0x0000, 0x011c, 0x0002, 0x0020, 0x0031, 0x0001, 0x0022, - 0x000d, 0x0000, 0xffff, 0x1e22, 0x233d, 0x2342, 0x2347, 0x234c, - 0x1e3a, 0x1e3f, 0x2350, 0x2355, 0x235a, 0x235f, 0x2364, 0x0001, - 0x0033, 0x000d, 0x0000, 0xffff, 0x1e22, 0x233d, 0x2342, 0x2347, - 0x234c, 0x1e3a, 0x1e3f, 0x2350, 0x2355, 0x235a, 0x235f, 0x2364, - 0x0002, 0x0045, 0x0066, 0x0005, 0x004b, 0x0054, 0x0000, 0x0000, - // Entry 10A80 - 10ABF - 0x005d, 0x0007, 0x001c, 0x00e5, 0x00ea, 0x00ef, 0x00f4, 0x00f9, - 0x00fe, 0x0103, 0x0007, 0x001c, 0x0108, 0x010c, 0x010f, 0x0113, - 0x0116, 0x011a, 0x011d, 0x0007, 0x001c, 0x0108, 0x00ea, 0x010f, - 0x00f4, 0x0116, 0x00fe, 0x0103, 0x0005, 0x0000, 0x006c, 0x0000, - 0x0000, 0x0075, 0x0007, 0x001c, 0x0108, 0x010c, 0x010f, 0x0113, - 0x0116, 0x011a, 0x011d, 0x0007, 0x001c, 0x0108, 0x00ea, 0x010f, - 0x00f4, 0x0116, 0x00fe, 0x0103, 0x0002, 0x0081, 0x00e8, 0x0003, - 0x0085, 0x00a6, 0x00c7, 0x0008, 0x0091, 0x0097, 0x008e, 0x009a, - // Entry 10AC0 - 10AFF - 0x009d, 0x00a0, 0x00a3, 0x0094, 0x0001, 0x001b, 0x020b, 0x0001, - 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, 0x0000, 0x233a, - 0x0001, 0x001b, 0x0251, 0x0001, 0x001b, 0x0259, 0x0001, 0x001b, - 0x0263, 0x0001, 0x001b, 0x026b, 0x0008, 0x00b2, 0x00b8, 0x00af, - 0x00bb, 0x00be, 0x00c1, 0x00c4, 0x00b5, 0x0001, 0x001b, 0x020b, - 0x0001, 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, 0x0000, - 0x233a, 0x0001, 0x001b, 0x0251, 0x0001, 0x001b, 0x0259, 0x0001, - 0x001b, 0x0263, 0x0001, 0x001b, 0x026b, 0x0008, 0x00d3, 0x00d9, - // Entry 10B00 - 10B3F - 0x00d0, 0x00dc, 0x00df, 0x00e2, 0x00e5, 0x00d6, 0x0001, 0x001b, - 0x020b, 0x0001, 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, - 0x0000, 0x233a, 0x0001, 0x001b, 0x0219, 0x0001, 0x001b, 0x0228, - 0x0001, 0x001b, 0x0239, 0x0001, 0x001b, 0x0248, 0x0003, 0x00ec, - 0x00f8, 0x010a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x00f5, 0x0001, 0x001c, 0x0121, 0x0008, 0x0101, - 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x0001, - 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, 0x0000, 0x233a, - // Entry 10B40 - 10B7F - 0x0008, 0x0113, 0x0119, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0116, 0x0001, 0x0000, 0x2337, 0x0001, 0x001c, 0x0121, 0x0001, - 0x0000, 0x233a, 0x0001, 0x011e, 0x0001, 0x0005, 0x1394, 0x0038, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x015a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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 10B80 - 10BBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0165, - 0x0003, 0x0000, 0x0000, 0x015e, 0x0002, 0x0000, 0x0161, 0x0002, - 0x001c, 0x0138, 0x0128, 0x0001, 0x0167, 0x0001, 0x0000, 0x2143, - 0x0004, 0x0000, 0x0000, 0x0000, 0x016f, 0x0002, 0x0305, 0x0172, - 0x0003, 0x01fb, 0x0280, 0x0176, 0x0083, 0x001c, 0xffff, 0xffff, - 0x0146, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0166, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10BC0 - 10BFF - 0x01a8, 0xffff, 0x0221, 0x0289, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x02ea, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0327, 0xffff, 0xffff, 0xffff, 0x0358, 0xffff, 0xffff, 0xffff, - // Entry 10C00 - 10C3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x039a, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x03dd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x040f, 0x0083, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10C40 - 10C7F - 0x015a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0190, 0xffff, 0x0209, - 0x0271, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x02d9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x031c, 0xffff, 0xffff, - // Entry 10C80 - 10CBF - 0xffff, 0x034d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x038e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03d2, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0403, 0x0083, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10CC0 - 10CFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x017b, 0xffff, 0xffff, - 0xffff, 0xffff, 0x01c9, 0xffff, 0x0242, 0x02aa, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0304, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10D00 - 10D3F - 0xffff, 0xffff, 0x033b, 0xffff, 0xffff, 0xffff, 0x036d, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03af, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x03f1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0424, 0x0003, 0x0309, 0x03d7, 0x0370, 0x0065, - // Entry 10D40 - 10D7F - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x01ea, 0x01f8, 0x0263, 0x02cb, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10D80 - 10DBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0380, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03c4, 0x0065, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x01ee, 0x01fd, 0x0267, 0x02cf, 0xffff, 0xffff, - // Entry 10DC0 - 10DFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0384, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10E00 - 10E3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x03c8, 0x0065, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x01f3, 0x0203, 0x026c, 0x02d4, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 10E40 - 10E7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0389, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x03cd, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001c, 0x0008, - // Entry 10E80 - 10EBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, - 0x0004, 0x0000, 0x0000, 0x0000, 0x0019, 0x0001, 0x0000, 0x1e17, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0025, 0x0030, - 0x0000, 0x0004, 0x002d, 0x0000, 0x0000, 0x002a, 0x0001, 0x0001, - 0x0037, 0x0001, 0x0014, 0x146e, 0x0004, 0x003e, 0x0038, 0x0035, - 0x003b, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, - 0x004f, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 10EC0 - 10EFF - 0x000d, 0x0024, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0016, 0x0000, 0x0000, 0x0004, 0x0000, 0x001e, 0x001b, 0x0021, - 0x0001, 0x0010, 0x0003, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x0000, - 0x1e17, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, - 0x003e, 0x0000, 0x0004, 0x003b, 0x0035, 0x0032, 0x0038, 0x0001, - 0x0001, 0x001d, 0x0001, 0x0001, 0x002d, 0x0001, 0x0001, 0x0037, - 0x0001, 0x0014, 0x146e, 0x0004, 0x004c, 0x0046, 0x0043, 0x0049, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - // Entry 10F00 - 10F3F - 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0054, 0x0001, 0x0056, 0x0003, 0x0061, 0x0068, 0x005a, 0x0005, - 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, - 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0022, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, - 0x0004, 0x0000, 0x001c, 0x0019, 0x001f, 0x0001, 0x0010, 0x0003, - // Entry 10F40 - 10F7F - 0x0001, 0x0000, 0x1e0b, 0x0001, 0x001c, 0x0437, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x002b, 0x003c, 0x0000, 0x0004, - 0x0039, 0x0033, 0x0030, 0x0036, 0x0001, 0x0001, 0x001d, 0x0001, - 0x0001, 0x002d, 0x0001, 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, - 0x0004, 0x004a, 0x0044, 0x0041, 0x0047, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0003, 0x0004, 0x005e, 0x01e6, 0x0008, 0x0000, 0x000d, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0028, 0x0043, 0x0008, 0x0000, - // Entry 10F80 - 10FBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, - 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x001b, 0x0110, 0x0001, - 0x001b, 0x0123, 0x0001, 0x001b, 0x0130, 0x0002, 0x0000, 0x03be, - 0x2369, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0031, - 0x0000, 0x0000, 0x0004, 0x003f, 0x0039, 0x0036, 0x003c, 0x0001, - 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, 0x000c, 0x001e, - 0x0002, 0x0000, 0x04af, 0x236f, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x004c, 0x0000, 0x0000, 0x0004, 0x005a, 0x0054, - // Entry 10FC0 - 10FFF - 0x0051, 0x0057, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, - 0x0001, 0x000c, 0x03e3, 0x0002, 0x0000, 0x051c, 0x237b, 0x003e, - 0x0000, 0x0000, 0x0000, 0x0000, 0x009d, 0x0000, 0x0000, 0x0000, - 0x00ac, 0x0000, 0x00bb, 0x00ca, 0x0000, 0x00d9, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ec, - 0x00f6, 0x0000, 0x0105, 0x0114, 0x0000, 0x0123, 0x0132, 0x0000, - 0x0141, 0x0150, 0x0000, 0x015f, 0x016e, 0x0000, 0x017d, 0x018c, - // Entry 11000 - 1103F - 0x0000, 0x019b, 0x01aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x01b9, - 0x0000, 0x0000, 0x01c8, 0x0000, 0x0000, 0x01d7, 0x0003, 0x0000, - 0x0000, 0x00a1, 0x0002, 0x00a4, 0x00a8, 0x0002, 0x001b, 0x255a, - 0x0300, 0x0002, 0x001b, 0x2566, 0x030b, 0x0003, 0x0000, 0x0000, - 0x00b0, 0x0002, 0x00b3, 0x00b7, 0x0002, 0x001b, 0x0382, 0x0382, - 0x0002, 0x001b, 0x039b, 0x039b, 0x0003, 0x0000, 0x0000, 0x00bf, - 0x0002, 0x00c2, 0x00c6, 0x0002, 0x001b, 0x2573, 0x0413, 0x0002, - 0x001b, 0x257f, 0x041e, 0x0003, 0x0000, 0x0000, 0x00ce, 0x0002, - // Entry 11040 - 1107F - 0x00d1, 0x00d5, 0x0002, 0x001b, 0x2573, 0x0413, 0x0002, 0x001b, - 0x257f, 0x041e, 0x0004, 0x0000, 0x0000, 0x00de, 0x00e9, 0x0002, - 0x00e1, 0x00e5, 0x0002, 0x001b, 0x258c, 0x0479, 0x0002, 0x001b, - 0x2598, 0x0484, 0x0001, 0x001c, 0x044b, 0x0003, 0x0000, 0x0000, - 0x00f0, 0x0001, 0x00f2, 0x0002, 0x001b, 0x25a5, 0x058c, 0x0003, - 0x0000, 0x0000, 0x00fa, 0x0002, 0x00fd, 0x0101, 0x0002, 0x001b, - 0x25b5, 0x05bd, 0x0002, 0x001b, 0x25c3, 0x05c7, 0x0003, 0x0000, - 0x0000, 0x0109, 0x0002, 0x010c, 0x0110, 0x0002, 0x001b, 0x25d2, - // Entry 11080 - 110BF - 0x062c, 0x0002, 0x001b, 0x25e2, 0x0638, 0x0003, 0x0000, 0x0000, - 0x0118, 0x0002, 0x011b, 0x011f, 0x0002, 0x001b, 0x25f3, 0x065a, - 0x0002, 0x001b, 0x2600, 0x0663, 0x0003, 0x0000, 0x0000, 0x0127, - 0x0002, 0x012a, 0x012e, 0x0002, 0x001b, 0x260e, 0x06cb, 0x0002, - 0x001b, 0x261e, 0x06d7, 0x0003, 0x0000, 0x0000, 0x0136, 0x0002, - 0x0139, 0x013d, 0x0002, 0x001b, 0x262f, 0x06fc, 0x0002, 0x001b, - 0x263d, 0x0706, 0x0003, 0x0000, 0x0000, 0x0145, 0x0002, 0x0148, - 0x014c, 0x0002, 0x001b, 0x264c, 0x0777, 0x0002, 0x001b, 0x265c, - // Entry 110C0 - 110FF - 0x0783, 0x0003, 0x0000, 0x0000, 0x0154, 0x0002, 0x0157, 0x015b, - 0x0002, 0x001b, 0x266d, 0x07a5, 0x0002, 0x001b, 0x267a, 0x07ae, - 0x0003, 0x0000, 0x0000, 0x0163, 0x0002, 0x0166, 0x016a, 0x0002, - 0x001b, 0x2688, 0x081a, 0x0002, 0x001b, 0x2698, 0x0826, 0x0003, - 0x0000, 0x0000, 0x0172, 0x0002, 0x0175, 0x0179, 0x0002, 0x001b, - 0x26a8, 0x084b, 0x0002, 0x001b, 0x26b6, 0x0855, 0x0003, 0x0000, - 0x0000, 0x0181, 0x0002, 0x0184, 0x0188, 0x0002, 0x001b, 0x26c5, - 0x08ba, 0x0002, 0x001b, 0x26d5, 0x08c6, 0x0003, 0x0000, 0x0000, - // Entry 11100 - 1113F - 0x0190, 0x0002, 0x0193, 0x0197, 0x0002, 0x001b, 0x26e6, 0x08e8, - 0x0002, 0x001b, 0x26f3, 0x08f1, 0x0003, 0x0000, 0x0000, 0x019f, - 0x0002, 0x01a2, 0x01a6, 0x0002, 0x001b, 0x2701, 0x095d, 0x0002, - 0x001b, 0x2711, 0x0969, 0x0003, 0x0000, 0x0000, 0x01ae, 0x0002, - 0x01b1, 0x01b5, 0x0002, 0x001b, 0x2722, 0x098e, 0x0002, 0x001b, - 0x2730, 0x0998, 0x0003, 0x0000, 0x0000, 0x01bd, 0x0002, 0x01c0, - 0x01c4, 0x0002, 0x001b, 0x273f, 0x09e0, 0x0002, 0x001b, 0x274b, - 0x09eb, 0x0003, 0x0000, 0x0000, 0x01cc, 0x0002, 0x01cf, 0x01d3, - // Entry 11140 - 1117F - 0x0002, 0x001b, 0x2758, 0x0a3a, 0x0002, 0x001b, 0x2765, 0x0a46, - 0x0003, 0x0000, 0x0000, 0x01db, 0x0002, 0x01de, 0x01e2, 0x0002, - 0x001b, 0x2773, 0x0a9b, 0x0002, 0x001b, 0x2780, 0x0aa7, 0x0004, - 0x0000, 0x0000, 0x01eb, 0x0203, 0x0001, 0x01ed, 0x0003, 0x01f1, - 0x01fd, 0x01f7, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, - 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, - 0xffff, 0xffff, 0xffff, 0x05a8, 0x0001, 0x0205, 0x0003, 0x0209, - 0x02d9, 0x0271, 0x0066, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11180 - 111BF - 0xffff, 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x16e2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 111C0 - 111FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2771, 0x0066, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x08f4, 0x0978, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11200 - 1123F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x16e6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11240 - 1127F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2774, 0x0066, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, 0x08f8, 0x097c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11280 - 112BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x16eb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2778, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - // Entry 112C0 - 112FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, - // Entry 11300 - 1133F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, - 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, - 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, - 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, - // Entry 11340 - 1137F - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, - 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, - // Entry 11380 - 113BF - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, 0x0014, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x001d, 0x0000, 0x0004, 0x002b, 0x0025, - 0x0022, 0x0028, 0x0001, 0x0015, 0x0210, 0x0001, 0x0015, 0x021e, - 0x0001, 0x0015, 0x0229, 0x0001, 0x0015, 0x0232, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - // Entry 113C0 - 113FF - 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, - 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0000, 0x0004, - 0x002b, 0x0025, 0x0022, 0x0028, 0x0001, 0x001c, 0x045a, 0x0001, - // Entry 11400 - 1143F - 0x001c, 0x0467, 0x0001, 0x001c, 0x0471, 0x0001, 0x001c, 0x0479, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x0062, - 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0010, 0x0000, 0x0000, 0x0059, 0x0008, 0x0000, 0x0000, 0x0000, - // Entry 11440 - 1147F - 0x0019, 0x0000, 0x0000, 0x0048, 0x0000, 0x0002, 0x001c, 0x0032, - 0x0003, 0x0020, 0x0000, 0x0029, 0x0002, 0x0023, 0x0026, 0x0001, - 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0002, 0x002c, 0x002f, - 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0003, 0x0036, - 0x0000, 0x003f, 0x0002, 0x0039, 0x003c, 0x0001, 0x0000, 0x2337, - 0x0001, 0x0000, 0x233a, 0x0002, 0x0042, 0x0045, 0x0001, 0x0000, - 0x2337, 0x0001, 0x0000, 0x233a, 0x0004, 0x0056, 0x0050, 0x004d, - 0x0053, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - // Entry 11480 - 114BF - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0004, 0x0000, - 0x0000, 0x0067, 0x0070, 0x0001, 0x0069, 0x0002, 0x0000, 0x006c, - 0x0002, 0x001c, 0xffff, 0x047e, 0x0001, 0x0072, 0x0003, 0x0076, - 0x00dc, 0x00a9, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 114C0 - 114FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11500 - 1153F - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - 0x1355, 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - // Entry 11540 - 1157F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, - 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, - 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, - 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, - 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, - 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - // Entry 11580 - 115BF - 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, - 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, - 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, - 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, - 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, - // Entry 115C0 - 115FF - 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0901, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, - 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0000, - 0x0000, 0x000f, 0x001f, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0482, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, - // Entry 11600 - 1163F - 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0000, - 0x0000, 0x000f, 0x003e, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11640 - 1167F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0487, 0x0003, 0x0004, 0x0000, 0x0035, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, - 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x018e, - 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0005, - 0x0827, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, - 0x0000, 0x0000, 0x0001, 0x0032, 0x0001, 0x0002, 0x01fb, 0x0004, - // Entry 11680 - 116BF - 0x0000, 0x0000, 0x0000, 0x003a, 0x0001, 0x003c, 0x0003, 0x0040, - 0x00c4, 0x0082, 0x0040, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 116C0 - 116FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x048b, 0x0040, 0x001c, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11700 - 1173F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x048b, 0x0040, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11740 - 1177F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x048f, - 0x0003, 0x0004, 0x0000, 0x004d, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x001d, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0003, 0x0000, - 0x0000, 0x001a, 0x0001, 0x0001, 0x1f7d, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0026, 0x0000, 0x0035, 0x003c, 0x0000, 0x0001, 0x0028, - 0x0003, 0x0000, 0x0000, 0x002c, 0x0002, 0x002f, 0x0032, 0x0001, - // Entry 11780 - 117BF - 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0003, 0x0000, 0x0000, - 0x0039, 0x0001, 0x0001, 0x1fa2, 0x0004, 0x004a, 0x0044, 0x0041, - 0x0047, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, 0x0000, - 0x0052, 0x0000, 0x0001, 0x0054, 0x0002, 0x0000, 0x0057, 0x0003, - 0x000b, 0xffff, 0xffff, 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 117C0 - 117FF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, - 0x0000, 0x0004, 0x002b, 0x0025, 0x0022, 0x0028, 0x0001, 0x0005, - 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, - 0x0005, 0x00a1, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, - // Entry 11800 - 1183F - 0x0000, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000d, 0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0000, 0x0000, 0x001b, - 0x001e, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x001c, 0x0437, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002a, 0x0000, 0x0000, - 0x0004, 0x0035, 0x0000, 0x002f, 0x0032, 0x0001, 0x0001, 0x1fa2, - 0x0001, 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, 0x0004, 0x0000, - 0x0000, 0x0000, 0x003d, 0x0001, 0x003f, 0x0003, 0x0000, 0x0000, - // Entry 11840 - 1187F - 0x0043, 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11880 - 118BF - 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0001, 0x0002, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, - 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, - 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, - // Entry 118C0 - 118FF - 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0019, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, - 0x0000, 0x0001, 0x0016, 0x0001, 0x0000, 0x236f, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0022, 0x0000, 0x0000, 0x0001, - 0x0024, 0x0001, 0x0000, 0x237b, 0x0003, 0x0004, 0x0000, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 11900 - 1193F - 0x000d, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, - 0x002d, 0x0003, 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, - 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0901, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, - // Entry 11940 - 1197F - 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, - 0x000f, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, - 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, - 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, - 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - // Entry 11980 - 119BF - 0xffff, 0x0901, 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, - 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, - 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 119C0 - 119FF - 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, - 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0009, - 0x0021, 0x0001, 0x000b, 0x0003, 0x000f, 0x001b, 0x0015, 0x0004, - 0x001c, 0xffff, 0xffff, 0xffff, 0x00db, 0x0004, 0x001c, 0xffff, - 0xffff, 0xffff, 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, - 0x00db, 0x0001, 0x0023, 0x0003, 0x0027, 0x00a9, 0x0068, 0x003f, - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11A00 - 11A3F - 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0x003f, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0xffff, 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, - // Entry 11A40 - 11A7F - 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00db, 0x003f, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00db, 0xffff, 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, - // Entry 11A80 - 11ABF - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x000f, 0x014d, - // Entry 11AC0 - 11AFF - 0x00ae, 0x009d, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11B00 - 11B3F - 0xffff, 0xffff, 0x048b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11B40 - 11B7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x049e, - 0x009d, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11B80 - 11BBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x048b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11BC0 - 11BFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x049e, 0x009d, - // Entry 11C00 - 11C3F - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11C40 - 11C7F - 0x048f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11C80 - 11CBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04a2, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0009, 0x0021, 0x0001, - 0x000b, 0x0003, 0x000f, 0x001b, 0x0015, 0x0004, 0x001c, 0xffff, - 0xffff, 0xffff, 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, - 0x00db, 0x0004, 0x001c, 0xffff, 0xffff, 0xffff, 0x00db, 0x0001, - // Entry 11CC0 - 11CFF - 0x0023, 0x0003, 0x0027, 0x00a9, 0x0068, 0x003f, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0x00db, 0x00db, - 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11D00 - 11D3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x003f, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0x00db, - 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11D40 - 11D7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x003f, - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0x00db, 0x00db, 0x00db, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11D80 - 11DBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001f, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, - // Entry 11DC0 - 11DFF - 0x0004, 0x0000, 0x0019, 0x0000, 0x001c, 0x0001, 0x0000, 0x1e0b, - 0x0001, 0x0000, 0x1e17, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0028, 0x0033, 0x0000, 0x0004, 0x0000, 0x002d, 0x0000, - 0x0030, 0x0001, 0x0001, 0x002d, 0x0001, 0x0001, 0x0037, 0x0004, - 0x0041, 0x003b, 0x0038, 0x003e, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, 0x0000, 0x0000, - // Entry 11E00 - 11E3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, 0x0023, 0x001d, - 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, - 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, 0x0038, 0x003f, - 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, - 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, - 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - // Entry 11E40 - 11E7F - 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, - 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0901, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0000, 0x0000, - 0x000f, 0x0057, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11E80 - 11EBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11EC0 - 11EFF - 0xffff, 0x04a6, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, - 0x000f, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, - 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, - 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, - // Entry 11F00 - 11F3F - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, - 0x000f, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, - 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, - 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0001, 0x0002, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 11F40 - 11F7F - 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, - 0x0000, 0x0035, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 11F80 - 11FBF - 0x0000, 0x000d, 0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x001e, 0x0000, 0x0000, - 0x001b, 0x0001, 0x001c, 0x04aa, 0x0001, 0x001c, 0x04b3, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002a, 0x0000, 0x0000, - 0x0004, 0x0032, 0x0000, 0x0000, 0x002f, 0x0001, 0x001c, 0x04c0, - 0x0001, 0x001c, 0x04c7, 0x0004, 0x0000, 0x0000, 0x0000, 0x003a, - 0x0001, 0x003c, 0x0003, 0x0040, 0x010e, 0x00a7, 0x0065, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 11FC0 - 11FFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x01ea, 0x01f8, 0x0263, 0x02cb, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04cf, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 12000 - 1203F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0380, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x03c4, 0x0065, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x01ee, 0x01fd, 0x0267, 0x02cf, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04d4, 0xffff, - // Entry 12040 - 1207F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0384, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 12080 - 120BF - 0xffff, 0xffff, 0xffff, 0x03c8, 0x0065, 0x001c, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x01f3, 0x0203, 0x026c, 0x02d4, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04da, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 120C0 - 120FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0389, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x03cd, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001c, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0004, - // Entry 12100 - 1213F - 0x0000, 0x0000, 0x0000, 0x0019, 0x0001, 0x001c, 0x0437, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0025, 0x0000, 0x0000, - 0x0004, 0x0000, 0x0000, 0x0000, 0x002a, 0x0001, 0x001c, 0x0442, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x0026, - // Entry 12140 - 1217F - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, - 0x002d, 0x0003, 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, - 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - // Entry 12180 - 121BF - 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, - 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - // Entry 121C0 - 121FF - 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x0019, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0001, 0x0016, - 0x0001, 0x001c, 0x04e0, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0022, 0x0000, 0x0000, 0x0001, 0x0024, 0x0001, 0x0000, - 0x051c, 0x0003, 0x0004, 0x0029, 0x0073, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x001b, 0x0008, 0x0000, - // Entry 12200 - 1223F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0001, - 0x0018, 0x0001, 0x0005, 0x0827, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0024, 0x0000, 0x0000, 0x0001, 0x0026, 0x0001, - 0x0000, 0x237b, 0x000e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0038, - 0x0000, 0x0000, 0x0040, 0x0000, 0x0000, 0x0054, 0x0000, 0x0000, - 0x006b, 0x0002, 0x0000, 0x003b, 0x0003, 0x001c, 0x04ea, 0x04f2, - 0x04fa, 0x0003, 0x0000, 0x0044, 0x0049, 0x0003, 0x001c, 0x0502, - 0x050b, 0x0514, 0x0002, 0x004c, 0x0050, 0x0002, 0x001c, 0x051d, - // Entry 12240 - 1227F - 0x004a, 0x0002, 0x001c, 0x0529, 0x0055, 0x0003, 0x0058, 0x005b, - 0x0060, 0x0001, 0x001c, 0x0536, 0x0003, 0x001c, 0x053a, 0x0543, - 0x054c, 0x0002, 0x0063, 0x0067, 0x0002, 0x001c, 0x0555, 0x0555, - 0x0002, 0x001c, 0x0560, 0x0560, 0x0002, 0x0000, 0x006e, 0x0003, - 0x001c, 0x056c, 0x0574, 0x057c, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0078, 0x0001, 0x007a, 0x0003, 0x0000, 0x0000, 0x007e, 0x007d, - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 12280 - 122BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 122C0 - 122FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04a6, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0584, 0x0001, 0x0002, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 12300 - 1233F - 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, - 0x000f, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, - 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, - 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - // Entry 12340 - 1237F - 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, - 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0000, - // Entry 12380 - 123BF - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, 0x0001, 0xffff, - 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, - 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0901, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - // Entry 123C0 - 123FF - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, - // Entry 12400 - 1243F - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, - 0x0038, 0x003f, 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, - 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, - 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, - 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, 0x0000, 0x0000, - // Entry 12440 - 1247F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, 0x0023, 0x001d, - 0x001a, 0x0020, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, - 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, 0x0038, 0x003f, - 0x0031, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, - 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, - 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0004, - 0x0000, 0x0052, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 12480 - 124BF - 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, - 0x0021, 0x0001, 0x0010, 0x0003, 0x0001, 0x0000, 0x1e0b, 0x0001, - 0x0000, 0x1e17, 0x0001, 0x001c, 0x0588, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0030, 0x0041, 0x0000, 0x0004, 0x003e, - 0x0038, 0x0035, 0x003b, 0x0001, 0x0001, 0x001d, 0x0001, 0x0001, - 0x002d, 0x0001, 0x0001, 0x0037, 0x0001, 0x001c, 0x0596, 0x0004, - 0x004f, 0x0049, 0x0046, 0x004c, 0x0001, 0x0000, 0x0524, 0x0001, - // Entry 124C0 - 124FF - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x0000, 0x0000, 0x0000, 0x0057, 0x0001, 0x0059, 0x0003, - 0x0064, 0x006b, 0x005d, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, - 0x08bd, 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, - 0x08fd, 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, - 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0009, 0x0001, 0x000b, 0x0003, 0x0016, 0x001d, 0x000f, 0x0005, - 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, 0x0005, 0x0001, - // Entry 12500 - 1253F - 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, 0x0001, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0004, 0x0000, 0x0052, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0010, 0x0003, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x001c, 0x059e, - 0x0001, 0x0000, 0x236f, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0030, 0x0041, 0x0000, 0x0004, 0x003e, 0x0038, 0x0035, - // Entry 12540 - 1257F - 0x003b, 0x0001, 0x0001, 0x001d, 0x0001, 0x0001, 0x002d, 0x0001, - 0x001c, 0x05a9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x004f, 0x0049, - 0x0046, 0x004c, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0057, 0x0001, 0x0059, 0x0003, 0x0064, 0x006b, - 0x005d, 0x0005, 0x0001, 0xffff, 0x088d, 0x08a0, 0x08bd, 0x08fd, - 0x0005, 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x08fd, 0x0005, - 0x0001, 0xffff, 0xffff, 0xffff, 0xffff, 0x0901, 0x0003, 0x0004, - // Entry 12580 - 125BF - 0x0135, 0x0275, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, - 0x0021, 0x0001, 0x001c, 0x05b2, 0x0001, 0x001c, 0x05cc, 0x0001, - 0x001c, 0x05d8, 0x0001, 0x0000, 0x04af, 0x0008, 0x0030, 0x0077, - 0x00a6, 0x00cd, 0x00ee, 0x0113, 0x0124, 0x0000, 0x0002, 0x0033, - 0x0055, 0x0003, 0x0037, 0x0000, 0x0046, 0x000d, 0x000d, 0xffff, - 0x0059, 0x005d, 0x0061, 0x0065, 0x3175, 0x006d, 0x0071, 0x31ec, - // Entry 125C0 - 125FF - 0x0079, 0x007d, 0x0081, 0x0085, 0x000d, 0x001c, 0xffff, 0x05e3, - 0x05eb, 0x05f4, 0x05fa, 0x0601, 0x0606, 0x060c, 0x0612, 0x061b, - 0x0625, 0x062d, 0x0636, 0x0003, 0x0000, 0x0059, 0x0068, 0x000d, - 0x0000, 0xffff, 0x1e5d, 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, - 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x001c, - 0xffff, 0x05e3, 0x05eb, 0x05f4, 0x05fa, 0x0601, 0x0606, 0x060c, - 0x0612, 0x061b, 0x0625, 0x062d, 0x0636, 0x0002, 0x007a, 0x0090, - 0x0003, 0x007e, 0x0000, 0x0087, 0x0007, 0x0018, 0x0000, 0x4a20, - // Entry 12600 - 1263F - 0x4a23, 0x4a26, 0x4a29, 0x4a2d, 0x4a30, 0x0007, 0x001c, 0x063f, - 0x0648, 0x064e, 0x0654, 0x065d, 0x0665, 0x066e, 0x0003, 0x0000, - 0x0094, 0x009d, 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x22d9, - 0x2384, 0x1edb, 0x22dd, 0x0007, 0x001c, 0x063f, 0x0648, 0x064e, - 0x0654, 0x065d, 0x0665, 0x066e, 0x0002, 0x00a9, 0x00bb, 0x0003, - 0x00ad, 0x0000, 0x00b4, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, - 0x1f1d, 0x1f20, 0x0005, 0x001c, 0xffff, 0x0675, 0x0684, 0x0693, - 0x06a2, 0x0003, 0x0000, 0x00bf, 0x00c6, 0x0005, 0x0000, 0xffff, - // Entry 12640 - 1267F - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x001c, 0xffff, 0x0675, - 0x0684, 0x0693, 0x06a2, 0x0001, 0x00cf, 0x0003, 0x00d3, 0x00dc, - 0x00e5, 0x0002, 0x00d6, 0x00d9, 0x0001, 0x001c, 0x06b1, 0x0001, - 0x001c, 0x06b5, 0x0002, 0x00df, 0x00e2, 0x0001, 0x0000, 0x1f9c, - 0x0001, 0x0000, 0x21ec, 0x0002, 0x00e8, 0x00eb, 0x0001, 0x001c, - 0x06b1, 0x0001, 0x001c, 0x06b5, 0x0003, 0x00fd, 0x0108, 0x00f2, - 0x0002, 0x00f5, 0x00f9, 0x0002, 0x001c, 0x06b9, 0x06cf, 0x0002, - 0x001c, 0x06bc, 0x06d2, 0x0002, 0x0100, 0x0104, 0x0002, 0x001c, - // Entry 12680 - 126BF - 0x06b9, 0x06cf, 0x0002, 0x001c, 0x06de, 0x06e5, 0x0002, 0x010b, - 0x010f, 0x0002, 0x001c, 0x06b9, 0x06cf, 0x0002, 0x001c, 0x06ea, - 0x06ee, 0x0004, 0x0121, 0x011b, 0x0118, 0x011e, 0x0001, 0x001c, - 0x06f1, 0x0001, 0x001c, 0x0709, 0x0001, 0x001c, 0x0713, 0x0001, - 0x001c, 0x071c, 0x0004, 0x0132, 0x012c, 0x0129, 0x012f, 0x0001, - 0x001c, 0x0725, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0040, 0x0176, 0x0000, 0x0000, 0x017b, - 0x0000, 0x0000, 0x0192, 0x0000, 0x0000, 0x01a4, 0x0000, 0x0000, - // Entry 126C0 - 126FF - 0x01bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01d2, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x01e9, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01ee, 0x0000, 0x0000, 0x01f6, 0x0000, 0x0000, - 0x01fe, 0x0000, 0x0000, 0x0206, 0x0000, 0x0000, 0x020e, 0x0000, - 0x0000, 0x0216, 0x0000, 0x0000, 0x021e, 0x0000, 0x0000, 0x0000, - 0x0226, 0x0000, 0x022b, 0x0000, 0x023d, 0x0242, 0x0000, 0x0254, - 0x0259, 0x0000, 0x026b, 0x0270, 0x0001, 0x0178, 0x0001, 0x001c, - 0x0742, 0x0003, 0x017f, 0x0182, 0x0187, 0x0001, 0x001c, 0x0747, - // Entry 12700 - 1273F - 0x0003, 0x001c, 0x074c, 0x0759, 0x0763, 0x0002, 0x018a, 0x018e, - 0x0002, 0x001c, 0x077e, 0x0770, 0x0002, 0x001c, 0x079d, 0x078d, - 0x0003, 0x0196, 0x0000, 0x0199, 0x0001, 0x001c, 0x07ae, 0x0002, - 0x019c, 0x01a0, 0x0002, 0x001c, 0x07cd, 0x07b9, 0x0002, 0x001c, - 0x07f8, 0x07e2, 0x0003, 0x01a8, 0x01ab, 0x01b0, 0x0001, 0x001c, - 0x080f, 0x0003, 0x001c, 0x0816, 0x0825, 0x0831, 0x0002, 0x01b3, - 0x01b7, 0x0002, 0x001c, 0x0850, 0x0840, 0x0002, 0x001c, 0x0873, - 0x0861, 0x0003, 0x01bf, 0x01c2, 0x01c7, 0x0001, 0x001c, 0x0886, - // Entry 12740 - 1277F - 0x0003, 0x001c, 0x088e, 0x089e, 0x08ab, 0x0002, 0x01ca, 0x01ce, - 0x0002, 0x001c, 0x08cc, 0x08bb, 0x0002, 0x001c, 0x08f1, 0x08de, - 0x0003, 0x01d6, 0x01d9, 0x01de, 0x0001, 0x001c, 0x0905, 0x0003, - 0x001c, 0x090a, 0x0912, 0x091a, 0x0002, 0x01e1, 0x01e5, 0x0002, - 0x001c, 0x0930, 0x0922, 0x0002, 0x001c, 0x094f, 0x093f, 0x0001, - 0x01eb, 0x0001, 0x001c, 0x0960, 0x0002, 0x0000, 0x01f1, 0x0003, - 0x001c, 0x0973, 0x0984, 0x0995, 0x0002, 0x0000, 0x01f9, 0x0003, - 0x001c, 0x09a6, 0x09b4, 0x09c2, 0x0002, 0x0000, 0x0201, 0x0003, - // Entry 12780 - 127BF - 0x001c, 0x09d0, 0x09de, 0x09ec, 0x0002, 0x0000, 0x0209, 0x0003, - 0x001c, 0x09fa, 0x0a0b, 0x0a1c, 0x0002, 0x0000, 0x0211, 0x0003, - 0x001c, 0x0a2d, 0x0a3d, 0x0a4d, 0x0002, 0x0000, 0x0219, 0x0003, - 0x001c, 0x0a5d, 0x0a6e, 0x0a7f, 0x0002, 0x0000, 0x0221, 0x0003, - 0x001c, 0x0a90, 0x0a9f, 0x0aae, 0x0001, 0x0228, 0x0001, 0x001c, - 0x0abd, 0x0003, 0x022f, 0x0000, 0x0232, 0x0001, 0x001c, 0x0ac5, - 0x0002, 0x0235, 0x0239, 0x0002, 0x001c, 0x0ad8, 0x0aca, 0x0002, - 0x001c, 0x0af7, 0x0ae7, 0x0001, 0x023f, 0x0001, 0x0000, 0x2143, - // Entry 127C0 - 127FF - 0x0003, 0x0246, 0x0000, 0x0249, 0x0001, 0x001c, 0x0b08, 0x0002, - 0x024c, 0x0250, 0x0002, 0x001c, 0x0b1f, 0x0b0f, 0x0002, 0x001c, - 0x0b42, 0x0b30, 0x0001, 0x0256, 0x0001, 0x0000, 0x1f9a, 0x0003, - 0x025d, 0x0000, 0x0260, 0x0001, 0x001c, 0x0b55, 0x0002, 0x0263, - 0x0267, 0x0002, 0x001c, 0x0b6e, 0x0b5d, 0x0002, 0x001c, 0x0b93, - 0x0b80, 0x0001, 0x026d, 0x0001, 0x0000, 0x2002, 0x0001, 0x0272, - 0x0001, 0x001c, 0x0ba7, 0x0004, 0x027a, 0x027f, 0x0000, 0x0284, - 0x0003, 0x001c, 0x0baf, 0x0bbf, 0x0bc6, 0x0003, 0x001c, 0x0bca, - // Entry 12800 - 1283F - 0x0bd7, 0x0beb, 0x0002, 0x0000, 0x0287, 0x0003, 0x02ed, 0x034f, - 0x028b, 0x0060, 0x001c, 0xffff, 0x0bfe, 0x0c12, 0x0c27, 0x0c50, - 0xffff, 0xffff, 0x0ca5, 0x0d01, 0x0d5d, 0x0db8, 0xffff, 0xffff, - 0x0e09, 0xffff, 0xffff, 0xffff, 0x0e4b, 0x0eaa, 0x0f07, 0x0f6d, - 0x0fc7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1016, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1050, 0x109d, 0xffff, 0x10ee, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 12840 - 1287F - 0xffff, 0xffff, 0xffff, 0xffff, 0x112b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1148, 0xffff, 0x1155, 0x1166, - 0x117d, 0x1195, 0xffff, 0xffff, 0x11bd, 0x11f3, 0xffff, 0xffff, - 0xffff, 0x1226, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1258, 0x0060, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0c39, 0xffff, 0xffff, 0x0c8b, 0x0ce6, 0x0d44, 0x0d9c, - 0xffff, 0xffff, 0x0dfd, 0xffff, 0xffff, 0xffff, 0x0e2e, 0x0e92, - // Entry 12880 - 128BF - 0x0ee7, 0x0f54, 0x0fac, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x100a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x103b, 0x1087, 0xffff, 0x10d6, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x11af, 0x11e6, - 0xffff, 0xffff, 0xffff, 0x121a, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 128C0 - 128FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x124b, 0x0060, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0c6d, 0xffff, 0xffff, 0x0cc5, 0x0d22, - 0x0d7c, 0x0dda, 0xffff, 0xffff, 0x0e1b, 0xffff, 0xffff, 0xffff, - 0x0e6e, 0x0ec8, 0x0f2d, 0x0f8c, 0x0fe8, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1028, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x106b, 0x10b9, 0xffff, 0x110c, - // Entry 12900 - 1293F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x11d1, 0x1206, 0xffff, 0xffff, 0xffff, 0x1238, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x126b, 0x0003, - 0x0004, 0x02b4, 0x06b2, 0x0012, 0x0017, 0x0024, 0x0000, 0x0000, - 0x0000, 0x0000, 0x003e, 0x0069, 0x0275, 0x0000, 0x0282, 0x0000, - // Entry 12940 - 1297F - 0x0000, 0x0000, 0x0000, 0x028f, 0x0000, 0x02a7, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, - 0x0001, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x002d, 0x0000, 0x0000, 0x0004, 0x003b, 0x0035, 0x0032, - 0x0038, 0x0001, 0x001c, 0x127f, 0x0001, 0x0005, 0x04f4, 0x0001, - 0x0005, 0x04f4, 0x0001, 0x0005, 0x04f4, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0047, 0x0000, 0x0058, 0x0004, 0x0055, - 0x004f, 0x004c, 0x0052, 0x0001, 0x001c, 0x128b, 0x0001, 0x001c, - // Entry 12980 - 129BF - 0x12a6, 0x0001, 0x0010, 0x004c, 0x0001, 0x001c, 0x12bb, 0x0004, - 0x0066, 0x0060, 0x005d, 0x0063, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0072, 0x00d7, 0x012e, 0x0163, 0x0228, 0x0242, 0x0253, - 0x0264, 0x0002, 0x0075, 0x00a6, 0x0003, 0x0079, 0x0088, 0x0097, - 0x000d, 0x001c, 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, - 0x12dd, 0x12e2, 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x000d, - 0x0000, 0xffff, 0x214e, 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, - // Entry 129C0 - 129FF - 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x001c, - 0xffff, 0x1301, 0x1307, 0x130f, 0x1315, 0x131b, 0x0606, 0x060c, - 0x1320, 0x1327, 0x1332, 0x133a, 0x1344, 0x0003, 0x00aa, 0x00b9, - 0x00c8, 0x000d, 0x001c, 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, - 0x12d8, 0x12dd, 0x12e2, 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, - 0x000d, 0x0000, 0xffff, 0x214e, 0x22e6, 0x22d9, 0x2382, 0x22d9, - 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, - 0x001c, 0xffff, 0x1301, 0x1307, 0x130f, 0x1315, 0x131b, 0x0606, - // Entry 12A00 - 12A3F - 0x060c, 0x1320, 0x1327, 0x1332, 0x133a, 0x1344, 0x0002, 0x00da, - 0x0104, 0x0005, 0x00e0, 0x00e9, 0x00fb, 0x0000, 0x00f2, 0x0007, - 0x001c, 0x134e, 0x1353, 0x12ce, 0x1358, 0x135e, 0x1363, 0x1368, - 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x2068, 0x1e5d, 0x1edb, - 0x22dd, 0x0007, 0x001c, 0x136e, 0x1371, 0x1374, 0x1377, 0x137a, - 0x137d, 0x1380, 0x0007, 0x001c, 0x1383, 0x138b, 0x1391, 0x1398, - 0x13a3, 0x13aa, 0x13b2, 0x0005, 0x010a, 0x0113, 0x0125, 0x0000, - 0x011c, 0x0007, 0x001c, 0x134e, 0x1353, 0x12ce, 0x1358, 0x135e, - // Entry 12A40 - 12A7F - 0x1363, 0x1368, 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x2068, - 0x1e5d, 0x1edb, 0x22dd, 0x0007, 0x001c, 0x136e, 0x1371, 0x1374, - 0x1377, 0x137a, 0x137d, 0x1380, 0x0007, 0x001c, 0x1383, 0x138b, - 0x1391, 0x1398, 0x13a3, 0x13aa, 0x13b2, 0x0002, 0x0131, 0x014a, - 0x0003, 0x0135, 0x013c, 0x0143, 0x0005, 0x001c, 0xffff, 0x13ba, - 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x001c, 0xffff, 0x13c6, 0x13d5, 0x13e4, - 0x13f3, 0x0003, 0x014e, 0x0155, 0x015c, 0x0005, 0x001c, 0xffff, - // Entry 12A80 - 12ABF - 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x001c, 0xffff, 0x13c6, 0x13d5, - 0x13e4, 0x13f3, 0x0002, 0x0166, 0x01c7, 0x0003, 0x016a, 0x0189, - 0x01a8, 0x0009, 0x0174, 0x017a, 0x0000, 0x017d, 0x0000, 0x0183, - 0x0186, 0x0177, 0x0180, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, - 0x1402, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1410, 0x0001, - 0x0005, 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, 0x001c, 0x1420, - 0x0009, 0x0193, 0x0199, 0x0000, 0x019c, 0x0000, 0x01a2, 0x01a5, - // Entry 12AC0 - 12AFF - 0x0196, 0x019f, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, 0x1402, - 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1410, 0x0001, 0x0005, - 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, 0x001c, 0x1420, 0x0009, - 0x01b2, 0x01b8, 0x0000, 0x01bb, 0x0000, 0x01c1, 0x01c4, 0x01b5, - 0x01be, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, 0x1402, 0x0001, - 0x0010, 0x026e, 0x0001, 0x001c, 0x1410, 0x0001, 0x0005, 0x12e8, - 0x0001, 0x0005, 0x12f6, 0x0001, 0x001c, 0x1420, 0x0003, 0x01cb, - 0x01ea, 0x0209, 0x0009, 0x01d5, 0x01db, 0x0000, 0x01de, 0x0000, - // Entry 12B00 - 12B3F - 0x01e4, 0x01e7, 0x01d8, 0x01e1, 0x0001, 0x0010, 0x0268, 0x0001, - 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1436, - 0x0001, 0x0005, 0x1302, 0x0001, 0x0005, 0x130a, 0x0001, 0x001c, - 0x1440, 0x0009, 0x01f4, 0x01fa, 0x0000, 0x01fd, 0x0000, 0x0203, - 0x0206, 0x01f7, 0x0200, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, - 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1436, 0x0001, - 0x0005, 0x1302, 0x0001, 0x0005, 0x130a, 0x0001, 0x001c, 0x1440, - 0x0009, 0x0213, 0x0219, 0x0000, 0x021c, 0x0000, 0x0222, 0x0225, - // Entry 12B40 - 12B7F - 0x0216, 0x021f, 0x0001, 0x0010, 0x0268, 0x0001, 0x001c, 0x142c, - 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1436, 0x0001, 0x0005, - 0x1302, 0x0001, 0x0005, 0x130a, 0x0001, 0x001c, 0x1440, 0x0003, - 0x0237, 0x0000, 0x022c, 0x0002, 0x022f, 0x0233, 0x0002, 0x001c, - 0x1446, 0x146d, 0x0002, 0x001c, 0x1456, 0x1480, 0x0002, 0x023a, - 0x023e, 0x0002, 0x001c, 0x148b, 0x149a, 0x0002, 0x001c, 0x1491, - 0x14a0, 0x0004, 0x0250, 0x024a, 0x0247, 0x024d, 0x0001, 0x001c, - 0x14a6, 0x0001, 0x001c, 0x14bf, 0x0001, 0x0001, 0x1fb9, 0x0001, - // Entry 12B80 - 12BBF - 0x0000, 0x237b, 0x0004, 0x0261, 0x025b, 0x0258, 0x025e, 0x0001, - 0x001c, 0x14d2, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, - 0x0001, 0x0005, 0x00a1, 0x0004, 0x0272, 0x026c, 0x0269, 0x026f, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x027b, 0x0001, 0x027d, 0x0001, 0x027f, 0x0001, 0x0000, - 0x04ef, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0288, 0x0001, - 0x028a, 0x0001, 0x028c, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, - // Entry 12BC0 - 12BFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0296, 0x0004, 0x02a4, 0x029e, - 0x029b, 0x02a1, 0x0001, 0x001c, 0x128b, 0x0001, 0x001c, 0x12a6, - 0x0001, 0x0010, 0x02f4, 0x0001, 0x001c, 0x14e1, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x02ad, 0x0001, 0x02af, 0x0001, 0x02b1, - 0x0001, 0x001c, 0x14f0, 0x0040, 0x02f5, 0x0000, 0x0000, 0x02fa, - 0x0311, 0x0328, 0x033f, 0x0356, 0x0368, 0x037a, 0x0391, 0x03a8, - 0x03bf, 0x03da, 0x03f0, 0x0000, 0x0000, 0x0000, 0x0406, 0x041f, - 0x0438, 0x0000, 0x0000, 0x0000, 0x0451, 0x0000, 0x0000, 0x0000, - // Entry 12C00 - 12C3F - 0x0000, 0x0000, 0x0456, 0x046a, 0x047e, 0x0492, 0x04a6, 0x04ba, - 0x04ce, 0x04e2, 0x04f6, 0x050a, 0x051e, 0x0532, 0x0546, 0x055a, - 0x056e, 0x0582, 0x0596, 0x05aa, 0x05be, 0x05d2, 0x05e6, 0x0000, - 0x05fa, 0x0000, 0x05ff, 0x0615, 0x0627, 0x0639, 0x064f, 0x0661, - 0x0673, 0x0689, 0x069b, 0x06ad, 0x0001, 0x02f7, 0x0001, 0x0001, - 0x0040, 0x0003, 0x02fe, 0x0301, 0x0306, 0x0001, 0x001c, 0x1500, - 0x0003, 0x001c, 0x1505, 0x1514, 0x151e, 0x0002, 0x0309, 0x030d, - 0x0002, 0x001c, 0x1542, 0x152f, 0x0002, 0x001c, 0x1564, 0x1556, - // Entry 12C40 - 12C7F - 0x0003, 0x0315, 0x0318, 0x031d, 0x0001, 0x0000, 0x1f9c, 0x0003, - 0x001c, 0x1505, 0x1514, 0x151e, 0x0002, 0x0320, 0x0324, 0x0002, - 0x001c, 0x1573, 0x1573, 0x0002, 0x001c, 0x1583, 0x1583, 0x0003, - 0x032c, 0x032f, 0x0334, 0x0001, 0x0000, 0x1f9c, 0x0003, 0x001c, - 0x1505, 0x1514, 0x151e, 0x0002, 0x0337, 0x033b, 0x0002, 0x001c, - 0x1573, 0x1573, 0x0002, 0x001c, 0x1583, 0x1583, 0x0003, 0x0343, - 0x0346, 0x034b, 0x0001, 0x0005, 0x1c6d, 0x0003, 0x001c, 0x158e, - 0x15a2, 0x15b1, 0x0002, 0x034e, 0x0352, 0x0002, 0x001c, 0x15df, - // Entry 12C80 - 12CBF - 0x15c7, 0x0002, 0x001c, 0x160b, 0x15f8, 0x0003, 0x035a, 0x0000, - 0x035d, 0x0001, 0x000b, 0x0c78, 0x0002, 0x0360, 0x0364, 0x0002, - 0x001c, 0x161f, 0x161f, 0x0002, 0x001c, 0x1633, 0x1633, 0x0003, - 0x036c, 0x0000, 0x036f, 0x0001, 0x000b, 0x0c78, 0x0002, 0x0372, - 0x0376, 0x0002, 0x001c, 0x161f, 0x161f, 0x0002, 0x001c, 0x1633, - 0x1633, 0x0003, 0x037e, 0x0381, 0x0386, 0x0001, 0x0005, 0x1006, - 0x0003, 0x001c, 0x1642, 0x1650, 0x1659, 0x0002, 0x0389, 0x038d, - 0x0002, 0x001c, 0x167b, 0x1669, 0x0002, 0x001c, 0x169c, 0x168f, - // Entry 12CC0 - 12CFF - 0x0003, 0x0395, 0x0398, 0x039d, 0x0001, 0x0000, 0x1f9a, 0x0003, - 0x001c, 0x1642, 0x1650, 0x1659, 0x0002, 0x03a0, 0x03a4, 0x0002, - 0x001c, 0x16ab, 0x16ab, 0x0002, 0x001c, 0x16bb, 0x16bb, 0x0003, - 0x03ac, 0x03af, 0x03b4, 0x0001, 0x0000, 0x1f9a, 0x0003, 0x001c, - 0x1642, 0x1650, 0x1659, 0x0002, 0x03b7, 0x03bb, 0x0002, 0x001c, - 0x16ab, 0x16ab, 0x0002, 0x001c, 0x16bb, 0x16bb, 0x0004, 0x03c4, - 0x03c7, 0x03cc, 0x03d7, 0x0001, 0x001c, 0x16c6, 0x0003, 0x001c, - 0x16cd, 0x16de, 0x16ea, 0x0002, 0x03cf, 0x03d3, 0x0002, 0x001c, - // Entry 12D00 - 12D3F - 0x1712, 0x16fd, 0x0002, 0x001c, 0x1738, 0x1728, 0x0001, 0x001c, - 0x1749, 0x0004, 0x03df, 0x0000, 0x03e2, 0x03ed, 0x0001, 0x001c, - 0x175b, 0x0002, 0x03e5, 0x03e9, 0x0002, 0x001c, 0x1760, 0x1760, - 0x0002, 0x001c, 0x1773, 0x1773, 0x0001, 0x001c, 0x1781, 0x0004, - 0x03f5, 0x0000, 0x03f8, 0x0403, 0x0001, 0x001c, 0x175b, 0x0002, - 0x03fb, 0x03ff, 0x0002, 0x001c, 0x1760, 0x1760, 0x0002, 0x001c, - 0x1773, 0x1773, 0x0001, 0x001c, 0x1781, 0x0003, 0x040a, 0x040d, - 0x0414, 0x0001, 0x0005, 0x1ece, 0x0005, 0x001c, 0x179a, 0x179f, - // Entry 12D40 - 12D7F - 0x17a3, 0x1791, 0x17ab, 0x0002, 0x0417, 0x041b, 0x0002, 0x001c, - 0x17cd, 0x17ba, 0x0002, 0x001c, 0x17ef, 0x17e1, 0x0003, 0x0423, - 0x0426, 0x042d, 0x0001, 0x0000, 0x2008, 0x0005, 0x001c, 0x179a, - 0x179f, 0x17a3, 0x1791, 0x17ab, 0x0002, 0x0430, 0x0434, 0x0002, - 0x001c, 0x17cd, 0x17ba, 0x0002, 0x001c, 0x17ef, 0x17e1, 0x0003, - 0x043c, 0x043f, 0x0446, 0x0001, 0x0000, 0x2008, 0x0005, 0x001c, - 0x179a, 0x179f, 0x17a3, 0x1791, 0x17ab, 0x0002, 0x0449, 0x044d, - 0x0002, 0x001c, 0x17cd, 0x17ba, 0x0002, 0x001c, 0x17ef, 0x17e1, - // Entry 12D80 - 12DBF - 0x0001, 0x0453, 0x0001, 0x001c, 0x17fe, 0x0003, 0x0000, 0x045a, - 0x045f, 0x0003, 0x001c, 0x1810, 0x1822, 0x182f, 0x0002, 0x0462, - 0x0466, 0x0002, 0x001c, 0x1859, 0x1843, 0x0002, 0x001c, 0x1881, - 0x1870, 0x0003, 0x0000, 0x046e, 0x0473, 0x0003, 0x001c, 0x1893, - 0x18a2, 0x18ac, 0x0002, 0x0476, 0x047a, 0x0002, 0x001c, 0x18bd, - 0x18bd, 0x0002, 0x001c, 0x18d0, 0x18d0, 0x0003, 0x0000, 0x0482, - 0x0487, 0x0003, 0x001c, 0x18de, 0x18eb, 0x18f3, 0x0002, 0x048a, - 0x048e, 0x0002, 0x001c, 0x1902, 0x1902, 0x0002, 0x001c, 0x1913, - // Entry 12DC0 - 12DFF - 0x1913, 0x0003, 0x0000, 0x0496, 0x049b, 0x0003, 0x001c, 0x191f, - 0x192f, 0x193a, 0x0002, 0x049e, 0x04a2, 0x0002, 0x001c, 0x194c, - 0x194c, 0x0002, 0x001c, 0x1960, 0x1960, 0x0003, 0x0000, 0x04aa, - 0x04af, 0x0003, 0x001c, 0x196f, 0x197e, 0x1988, 0x0002, 0x04b2, - 0x04b6, 0x0002, 0x001c, 0x1999, 0x1999, 0x0002, 0x001c, 0x19ac, - 0x19ac, 0x0003, 0x0000, 0x04be, 0x04c3, 0x0003, 0x001c, 0x19ba, - 0x19c7, 0x19cf, 0x0002, 0x04c6, 0x04ca, 0x0002, 0x001c, 0x19de, - 0x19de, 0x0002, 0x001c, 0x19ef, 0x19ef, 0x0003, 0x0000, 0x04d2, - // Entry 12E00 - 12E3F - 0x04d7, 0x0003, 0x001c, 0x19fb, 0x1a0c, 0x1a18, 0x0002, 0x04da, - 0x04de, 0x0002, 0x001c, 0x1a2b, 0x1a2b, 0x0002, 0x001c, 0x1a40, - 0x1a40, 0x0003, 0x0000, 0x04e6, 0x04eb, 0x0003, 0x001c, 0x1a50, - 0x1a5f, 0x1a69, 0x0002, 0x04ee, 0x04f2, 0x0002, 0x001c, 0x1a7a, - 0x1a7a, 0x0002, 0x001c, 0x1a8d, 0x1a8d, 0x0003, 0x0000, 0x04fa, - 0x04ff, 0x0003, 0x001c, 0x1a9b, 0x1aa8, 0x1ab0, 0x0002, 0x0502, - 0x0506, 0x0002, 0x001c, 0x1abf, 0x1abf, 0x0002, 0x001c, 0x1ad0, - 0x1ad0, 0x0003, 0x0000, 0x050e, 0x0513, 0x0003, 0x001c, 0x1adc, - // Entry 12E40 - 12E7F - 0x1af1, 0x1b01, 0x0002, 0x0516, 0x051a, 0x0002, 0x001c, 0x1b18, - 0x1b18, 0x0002, 0x001c, 0x1b31, 0x1b31, 0x0003, 0x0000, 0x0522, - 0x0527, 0x0003, 0x001c, 0x1b45, 0x1b55, 0x1b60, 0x0002, 0x052a, - 0x052e, 0x0002, 0x001c, 0x1b72, 0x1b72, 0x0002, 0x001c, 0x1b86, - 0x1b86, 0x0003, 0x0000, 0x0536, 0x053b, 0x0003, 0x001c, 0x1b95, - 0x1ba2, 0x1baa, 0x0002, 0x053e, 0x0542, 0x0002, 0x001c, 0x1bb9, - 0x1bb9, 0x0002, 0x001c, 0x1bca, 0x1bca, 0x0003, 0x0000, 0x054a, - 0x054f, 0x0003, 0x001c, 0x1bd6, 0x1be7, 0x1bf3, 0x0002, 0x0552, - // Entry 12E80 - 12EBF - 0x0556, 0x0002, 0x001c, 0x1c06, 0x1c06, 0x0002, 0x001c, 0x1c1b, - 0x1c1b, 0x0003, 0x0000, 0x055e, 0x0563, 0x0003, 0x001c, 0x1c2b, - 0x1c3a, 0x1c44, 0x0002, 0x0566, 0x056a, 0x0002, 0x001c, 0x1c55, - 0x1c55, 0x0002, 0x001c, 0x1c68, 0x1c68, 0x0003, 0x0000, 0x0572, - 0x0577, 0x0003, 0x001c, 0x1c76, 0x1c83, 0x1c8b, 0x0002, 0x057a, - 0x057e, 0x0002, 0x001c, 0x1c9a, 0x1c9a, 0x0002, 0x001c, 0x1cab, - 0x1cab, 0x0003, 0x0000, 0x0586, 0x058b, 0x0003, 0x001c, 0x1cb7, - 0x1cc9, 0x1cd6, 0x0002, 0x058e, 0x0592, 0x0002, 0x001c, 0x1cea, - // Entry 12EC0 - 12EFF - 0x1cea, 0x0002, 0x001c, 0x1d00, 0x1d00, 0x0003, 0x0000, 0x059a, - 0x059f, 0x0003, 0x001c, 0x1d11, 0x1d20, 0x1d2a, 0x0002, 0x05a2, - 0x05a6, 0x0002, 0x001c, 0x1d3b, 0x1d3b, 0x0002, 0x001c, 0x1d4e, - 0x1d4e, 0x0003, 0x0000, 0x05ae, 0x05b3, 0x0003, 0x001c, 0x1d5c, - 0x1d69, 0x1d71, 0x0002, 0x05b6, 0x05ba, 0x0002, 0x001c, 0x1d80, - 0x1d80, 0x0002, 0x001c, 0x1d91, 0x1d91, 0x0003, 0x0000, 0x05c2, - 0x05c7, 0x0003, 0x001c, 0x1d9d, 0x1daf, 0x1dbc, 0x0002, 0x05ca, - 0x05ce, 0x0002, 0x001c, 0x1de6, 0x1dd0, 0x0002, 0x001c, 0x1e0e, - // Entry 12F00 - 12F3F - 0x1dfd, 0x0003, 0x0000, 0x05d6, 0x05db, 0x0003, 0x001c, 0x1e20, - 0x1e30, 0x1e3b, 0x0002, 0x05de, 0x05e2, 0x0002, 0x001c, 0x1e4d, - 0x1e4d, 0x0002, 0x001c, 0x1e61, 0x1e61, 0x0003, 0x0000, 0x05ea, - 0x05ef, 0x0003, 0x001c, 0x1e70, 0x1e7d, 0x1e85, 0x0002, 0x05f2, - 0x05f6, 0x0002, 0x001c, 0x1e94, 0x1e94, 0x0002, 0x001c, 0x1ea5, - 0x1ea5, 0x0001, 0x05fc, 0x0001, 0x0010, 0x0aed, 0x0003, 0x0603, - 0x0606, 0x060a, 0x0001, 0x0006, 0x03db, 0x0002, 0x0006, 0xffff, - 0x03e0, 0x0002, 0x060d, 0x0611, 0x0002, 0x001c, 0x1ec4, 0x1eb1, - // Entry 12F40 - 12F7F - 0x0002, 0x001c, 0x1ee6, 0x1ed8, 0x0003, 0x0619, 0x0000, 0x061c, - 0x0001, 0x0000, 0x2143, 0x0002, 0x061f, 0x0623, 0x0002, 0x001c, - 0x1ef5, 0x1ef5, 0x0002, 0x001c, 0x1f05, 0x1f05, 0x0003, 0x062b, - 0x0000, 0x062e, 0x0001, 0x0000, 0x2143, 0x0002, 0x0631, 0x0635, - 0x0002, 0x001c, 0x1ef5, 0x1ef5, 0x0002, 0x001c, 0x1f05, 0x1f05, - 0x0003, 0x063d, 0x0640, 0x0644, 0x0001, 0x001c, 0x0b08, 0x0002, - 0x001c, 0xffff, 0x1f10, 0x0002, 0x0647, 0x064b, 0x0002, 0x001c, - 0x1f31, 0x1f1c, 0x0002, 0x001c, 0x1f57, 0x1f47, 0x0003, 0x0653, - // Entry 12F80 - 12FBF - 0x0000, 0x0656, 0x0001, 0x000b, 0x1250, 0x0002, 0x0659, 0x065d, - 0x0002, 0x001c, 0x1f68, 0x1f68, 0x0002, 0x001c, 0x1f7a, 0x1f7a, - 0x0003, 0x0665, 0x0000, 0x0668, 0x0001, 0x000b, 0x1250, 0x0002, - 0x066b, 0x066f, 0x0002, 0x001c, 0x1f68, 0x1f68, 0x0002, 0x001c, - 0x1f7a, 0x1f7a, 0x0003, 0x0677, 0x067a, 0x067e, 0x0001, 0x001c, - 0x1f87, 0x0002, 0x001c, 0xffff, 0x1f8f, 0x0002, 0x0681, 0x0685, - 0x0002, 0x001c, 0x1fab, 0x1f95, 0x0002, 0x001c, 0x1fd3, 0x1fc2, - 0x0003, 0x068d, 0x0000, 0x0690, 0x0001, 0x0000, 0x2002, 0x0002, - // Entry 12FC0 - 12FFF - 0x0693, 0x0697, 0x0002, 0x001c, 0x1fe5, 0x1fe5, 0x0002, 0x001d, - 0x0000, 0x0000, 0x0003, 0x069f, 0x0000, 0x06a2, 0x0001, 0x0000, - 0x2002, 0x0002, 0x06a5, 0x06a9, 0x0002, 0x001c, 0x1fe5, 0x1fe5, - 0x0002, 0x001d, 0x0000, 0x0000, 0x0001, 0x06af, 0x0001, 0x001d, - 0x000b, 0x0004, 0x06b7, 0x06bc, 0x06c1, 0x06d0, 0x0003, 0x0000, - 0x1dc7, 0x22ce, 0x2387, 0x0003, 0x001d, 0x0018, 0x0024, 0x003d, - 0x0002, 0x0000, 0x06c4, 0x0003, 0x0000, 0x06cb, 0x06c8, 0x0001, - 0x001d, 0x0056, 0x0003, 0x001d, 0xffff, 0x0072, 0x008c, 0x0002, - // Entry 13000 - 1303F - 0x08b7, 0x06d3, 0x0003, 0x06d7, 0x0817, 0x0777, 0x009e, 0x001d, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0139, 0x019e, 0x01df, 0x0229, - 0x0264, 0x02a2, 0x02f8, 0x0345, 0x0386, 0x0443, 0x0484, 0x04ce, - 0x0539, 0x057d, 0x05cd, 0x062f, 0x06a9, 0x070e, 0x0779, 0x07c9, - 0x0816, 0xffff, 0xffff, 0x0882, 0xffff, 0x08d9, 0xffff, 0x0941, - 0x0985, 0x09c3, 0x0a01, 0xffff, 0xffff, 0x0a81, 0x0ac8, 0x0b27, - 0xffff, 0xffff, 0xffff, 0x0ba2, 0xffff, 0x0c14, 0x0c6d, 0xffff, - 0x0ce8, 0x0d4a, 0x0daf, 0xffff, 0xffff, 0xffff, 0xffff, 0x0e5f, - // Entry 13040 - 1307F - 0xffff, 0xffff, 0x0edd, 0x0f48, 0xffff, 0xffff, 0x0ff8, 0x1057, - 0x10a1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1174, - 0x11b2, 0x11f6, 0x1237, 0x1278, 0xffff, 0xffff, 0x1301, 0xffff, - 0x134e, 0xffff, 0xffff, 0x13e8, 0xffff, 0x148a, 0xffff, 0xffff, - 0xffff, 0xffff, 0x151f, 0xffff, 0x1575, 0x15e0, 0x164e, 0x169e, - 0xffff, 0xffff, 0xffff, 0x170c, 0x1768, 0x17be, 0xffff, 0xffff, - 0x182d, 0x18ba, 0x190a, 0x1945, 0xffff, 0xffff, 0x19ba, 0x1a01, - 0x1a3f, 0xffff, 0x1aa2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13080 - 130BF - 0x1bae, 0x1bf5, 0x1c36, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1cfc, 0xffff, 0xffff, 0x1d64, 0xffff, 0x1db0, - 0xffff, 0x1e15, 0x1e59, 0x1ea9, 0xffff, 0x1eff, 0x1f4f, 0xffff, - 0xffff, 0xffff, 0x1fd8, 0x201c, 0xffff, 0xffff, 0x00a6, 0xffff, - 0x03c4, 0x0402, 0xffff, 0xffff, 0x1432, 0x1b43, 0x009e, 0x001d, - 0x00e1, 0x00f5, 0x010d, 0x0126, 0x0154, 0x01ad, 0x01f1, 0x0236, - 0x0272, 0x02b8, 0x030b, 0x0354, 0x0393, 0x0452, 0x0496, 0x04eb, - 0x0549, 0x0591, 0x05e7, 0x0651, 0x06c4, 0x072b, 0x078d, 0x07dc, - // Entry 130C0 - 130FF - 0x0829, 0x0863, 0x0872, 0x0893, 0x08c9, 0x08ec, 0x0926, 0x0951, - 0x0993, 0x09d1, 0x0a14, 0x0a4e, 0x0a69, 0x0a92, 0x0adf, 0x0b34, - 0x0b62, 0x0b70, 0x0b8b, 0x0bbc, 0x0c04, 0x0c2b, 0x0c85, 0x0cc9, - 0x0d02, 0x0d65, 0x0dbc, 0x0dea, 0x0e06, 0x0e3c, 0x0e4f, 0x0e6f, - 0x0ea3, 0x0ebd, 0x0efa, 0x0f67, 0x0fd0, 0x0fe9, 0x1011, 0x1069, - 0x10ae, 0x10dc, 0x10f7, 0x1110, 0x1122, 0x113c, 0x1157, 0x1182, - 0x11c2, 0x1205, 0x1246, 0x128a, 0x12c5, 0x12e2, 0x130f, 0x133f, - 0x1362, 0x139e, 0x13c4, 0x13fa, 0x1470, 0x149b, 0x14d1, 0x14e1, - // Entry 13100 - 1313F - 0x14f2, 0x1504, 0x1530, 0x1566, 0x1592, 0x15fe, 0x1662, 0x16ad, - 0x16df, 0x16f0, 0x16fe, 0x1724, 0x177e, 0x17d0, 0x1808, 0x1815, - 0x1849, 0x18ce, 0x1917, 0x1957, 0x198f, 0x199e, 0x19cb, 0x1a0f, - 0x1a51, 0x1a89, 0x1ac0, 0x1b10, 0x1b21, 0x1b31, 0x1b8d, 0x1b9e, - 0x1bbf, 0x1c04, 0x1c44, 0x1c74, 0x1c87, 0x1c98, 0x1cb3, 0x1cce, - 0x1cde, 0x1cec, 0x1d0c, 0x1d40, 0x1d54, 0x1d72, 0x1da2, 0x1dc6, - 0x1e06, 0x1e25, 0x1e6d, 0x1eb9, 0x1eed, 0x1f13, 0x1f62, 0x1f9c, - 0x1fab, 0x1fc0, 0x1fe8, 0x2032, 0x0fb9, 0x1895, 0x00b3, 0xffff, - // Entry 13140 - 1317F - 0x03d2, 0x0411, 0xffff, 0x13b2, 0x1440, 0x1b55, 0x009e, 0x001d, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0179, 0x01c6, 0x020d, 0x024d, - 0x028a, 0x02d8, 0x0328, 0x036d, 0x03aa, 0x046b, 0x04b2, 0x0512, - 0x0563, 0x05af, 0x060b, 0x067d, 0x06e9, 0x0752, 0x07ab, 0x07f9, - 0x0846, 0xffff, 0xffff, 0x08ae, 0xffff, 0x0909, 0xffff, 0x096b, - 0x09ab, 0x09e9, 0x0a31, 0xffff, 0xffff, 0x0aad, 0x0b00, 0x0b4b, - 0xffff, 0xffff, 0xffff, 0x0be0, 0xffff, 0x0c4c, 0x0ca7, 0xffff, - 0x0d26, 0x0d8a, 0x0dd3, 0xffff, 0xffff, 0xffff, 0xffff, 0x0e89, - // Entry 13180 - 131BF - 0xffff, 0xffff, 0x0f21, 0x0f90, 0xffff, 0xffff, 0x1034, 0x1085, - 0x10c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x119a, - 0x11dc, 0x121e, 0x125f, 0x12a9, 0xffff, 0xffff, 0x1327, 0xffff, - 0x1380, 0xffff, 0xffff, 0x1416, 0xffff, 0x14b6, 0xffff, 0xffff, - 0xffff, 0xffff, 0x154b, 0xffff, 0x15b9, 0x1626, 0x1680, 0x16c6, - 0xffff, 0xffff, 0xffff, 0x1746, 0x179e, 0x17ec, 0xffff, 0xffff, - 0x186f, 0x18ec, 0x192e, 0x1973, 0xffff, 0xffff, 0x19e6, 0x1a27, - 0x1a6d, 0xffff, 0x1ae8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 131C0 - 131FF - 0x1bda, 0x1c1d, 0x1c5c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1d26, 0xffff, 0xffff, 0x1d8a, 0xffff, 0x1de6, - 0xffff, 0x1e3f, 0x1e8b, 0x1ed3, 0xffff, 0x1f31, 0x1f7f, 0xffff, - 0xffff, 0xffff, 0x2002, 0x2052, 0xffff, 0xffff, 0x00ca, 0xffff, - 0x03ea, 0x042a, 0xffff, 0xffff, 0x1458, 0x1b71, 0x0003, 0x08bb, - 0x092a, 0x08ee, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13200 - 1323F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13240 - 1327F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x277c, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13280 - 132BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x00bd, 0x0194, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x001b, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0000, 0x0001, 0x0018, 0x0001, 0x001c, 0x14e1, 0x0008, - 0x0024, 0x0059, 0x0000, 0x0074, 0x0000, 0x0000, 0x00ac, 0x0000, - 0x0002, 0x0027, 0x0048, 0x0002, 0x002a, 0x0039, 0x000d, 0x001c, - 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, - // Entry 132C0 - 132FF - 0x12e7, 0x1ff5, 0x12f2, 0x12f7, 0x12fc, 0x000d, 0x0000, 0xffff, - 0x22e1, 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, 0x214a, 0x1f9c, - 0x2002, 0x1f98, 0x1f96, 0x2008, 0x0001, 0x004a, 0x000d, 0x001c, - 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, - 0x12e7, 0x1ff5, 0x12f2, 0x12f7, 0x12fc, 0x0002, 0x005c, 0x0068, - 0x0002, 0x0000, 0x005f, 0x0007, 0x0000, 0x2008, 0x200a, 0x1f9a, - 0x1f9a, 0x214a, 0x1f94, 0x2002, 0x0002, 0x0000, 0x006b, 0x0007, - 0x0000, 0x22f0, 0x228e, 0x22d9, 0x22d9, 0x1e5d, 0x1edb, 0x22dd, - // Entry 13300 - 1333F - 0x0002, 0x0077, 0x008d, 0x0003, 0x007b, 0x0000, 0x0084, 0x0002, - 0x007e, 0x0081, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, - 0x0002, 0x0087, 0x008a, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, - 0x0499, 0x0003, 0x0091, 0x009a, 0x00a3, 0x0002, 0x0094, 0x0097, - 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0002, 0x009d, - 0x00a0, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0002, - 0x00a6, 0x00a9, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, - 0x0004, 0x00ba, 0x00b4, 0x00b1, 0x00b7, 0x0001, 0x0000, 0x0524, - // Entry 13340 - 1337F - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00fe, - 0x0106, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x010e, 0x0000, 0x0118, 0x0000, 0x0123, 0x012e, 0x0000, 0x013d, - 0x0000, 0x0000, 0x0148, 0x0153, 0x0000, 0x0000, 0x015e, 0x0000, - 0x0169, 0x0174, 0x0000, 0x0000, 0x017f, 0x0000, 0x018a, 0x0000, - // Entry 13380 - 133BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x018f, 0x0004, 0x0000, 0x0000, 0x0000, 0x0103, 0x0001, - 0x001c, 0x1749, 0x0004, 0x0000, 0x0000, 0x0000, 0x010b, 0x0001, - 0x001c, 0x1749, 0x0003, 0x0000, 0x0000, 0x0112, 0x0001, 0x0114, - 0x0002, 0x001e, 0x000f, 0x0000, 0x0003, 0x0000, 0x0000, 0x011c, - 0x0002, 0x0000, 0x011f, 0x0002, 0x001c, 0x1881, 0x1870, 0x0003, - 0x0000, 0x0000, 0x0127, 0x0002, 0x0000, 0x012a, 0x0002, 0x001c, - 0x1960, 0x1960, 0x0003, 0x0000, 0x0000, 0x0132, 0x0002, 0x0135, - // Entry 133C0 - 133FF - 0x0139, 0x0002, 0x001e, 0x001f, 0x001f, 0x0002, 0x001c, 0x1960, - 0x1960, 0x0003, 0x0000, 0x0000, 0x0141, 0x0002, 0x0000, 0x0144, - 0x0002, 0x001c, 0x1a40, 0x1a40, 0x0003, 0x0000, 0x0000, 0x014c, - 0x0002, 0x0000, 0x014f, 0x0002, 0x001c, 0x1b31, 0x1b31, 0x0003, - 0x0000, 0x0000, 0x0157, 0x0002, 0x0000, 0x015a, 0x0002, 0x001c, - 0x1b31, 0x1b31, 0x0003, 0x0000, 0x0000, 0x0162, 0x0002, 0x0000, - 0x0165, 0x0002, 0x001c, 0x1c1b, 0x1c1b, 0x0003, 0x0000, 0x0000, - 0x016d, 0x0002, 0x0000, 0x0170, 0x0002, 0x001c, 0x1d00, 0x1d00, - // Entry 13400 - 1343F - 0x0003, 0x0000, 0x0000, 0x0178, 0x0002, 0x0000, 0x017b, 0x0002, - 0x001c, 0x1d00, 0x1d00, 0x0003, 0x0000, 0x0000, 0x0183, 0x0002, - 0x0000, 0x0186, 0x0002, 0x001c, 0x1e0e, 0x1e0e, 0x0001, 0x018c, - 0x0001, 0x001e, 0x002c, 0x0001, 0x0191, 0x0001, 0x001e, 0x0036, - 0x0004, 0x0000, 0x0199, 0x0000, 0x019e, 0x0003, 0x001e, 0xffff, - 0x0043, 0x0059, 0x0002, 0x029f, 0x01a1, 0x0003, 0x01a5, 0x025e, - 0x01e6, 0x003f, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13440 - 1347F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x006f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00f0, 0x0076, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13480 - 134BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0086, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x00ce, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x010a, 0xffff, 0xffff, 0x0152, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 134C0 - 134FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0160, 0x003f, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13500 - 1353F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00a7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x012e, 0x0003, 0x02a3, 0x0312, 0x02d6, 0x0031, - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13540 - 1357F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, - 0xffff, 0x00db, 0x003a, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13580 - 135BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x0031, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 135C0 - 135FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, - 0x00db, 0x0003, 0x0004, 0x009a, 0x0127, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0016, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, - 0x0000, 0x001f, 0x0000, 0x002d, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0001, 0x0021, 0x0002, 0x0000, 0x0024, 0x0007, 0x0000, 0x22f0, - 0x228e, 0x22d9, 0x22d9, 0x1e5d, 0x1edb, 0x22dd, 0x0002, 0x0030, - // Entry 13600 - 1363F - 0x0072, 0x0003, 0x0034, 0x0000, 0x0053, 0x0009, 0x003e, 0x0044, - 0x0000, 0x0047, 0x0000, 0x004d, 0x0050, 0x0041, 0x004a, 0x0001, - 0x0010, 0x0268, 0x0001, 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, - 0x0001, 0x001c, 0x1436, 0x0001, 0x001c, 0x17a3, 0x0001, 0x0005, - 0x130a, 0x0001, 0x001c, 0x1440, 0x0009, 0x005d, 0x0063, 0x0000, - 0x0066, 0x0000, 0x006c, 0x006f, 0x0060, 0x0069, 0x0001, 0x0010, - 0x0268, 0x0001, 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, - 0x001c, 0x1436, 0x0001, 0x001c, 0x17a3, 0x0001, 0x0005, 0x130a, - // Entry 13640 - 1367F - 0x0001, 0x001c, 0x1440, 0x0003, 0x0076, 0x007f, 0x0091, 0x0002, - 0x0079, 0x007c, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0008, 0x0088, 0x008e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x008b, 0x0001, 0x0010, 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, - 0x0010, 0x026e, 0x0002, 0x0094, 0x0097, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0040, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00db, - // Entry 13680 - 136BF - 0x00ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00fe, 0x0110, 0x0122, 0x0003, 0x0000, 0x0000, 0x00df, - 0x0002, 0x00e2, 0x00e6, 0x0002, 0x001c, 0x17cd, 0x17cd, 0x0002, - 0x001c, 0x17ef, 0x17ef, 0x0003, 0x0000, 0x0000, 0x00ee, 0x0002, - // Entry 136C0 - 136FF - 0x00f1, 0x00f5, 0x0002, 0x001c, 0x17cd, 0x17cd, 0x0002, 0x001c, - 0x17ef, 0x17ef, 0x0001, 0x00fb, 0x0001, 0x0010, 0x0aed, 0x0003, - 0x0102, 0x0000, 0x0105, 0x0001, 0x001e, 0x0171, 0x0002, 0x0108, - 0x010c, 0x0002, 0x001e, 0x0176, 0x0176, 0x0002, 0x001e, 0x0189, - 0x0189, 0x0003, 0x0114, 0x0000, 0x0117, 0x0001, 0x001e, 0x0171, - 0x0002, 0x011a, 0x011e, 0x0002, 0x001e, 0x0176, 0x0176, 0x0002, - 0x001e, 0x0189, 0x0189, 0x0001, 0x0124, 0x0001, 0x001d, 0x000b, - 0x0004, 0x0000, 0x0000, 0x0000, 0x012c, 0x0001, 0x012e, 0x0003, - // Entry 13700 - 1373F - 0x0132, 0x0156, 0x0144, 0x0010, 0x001e, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0197, 0x01a0, 0x0010, 0x001e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0197, 0x01a0, 0x0010, - 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x019b, - 0x01a5, 0x0003, 0x0004, 0x0068, 0x00a3, 0x0008, 0x0000, 0x0000, - // Entry 13740 - 1377F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0006, 0x0014, - 0x0000, 0x0000, 0x0028, 0x0000, 0x0060, 0x0001, 0x0016, 0x0002, - 0x0000, 0x0019, 0x000d, 0x0000, 0xffff, 0x214e, 0x22e6, 0x22d9, - 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, - 0x22f0, 0x0002, 0x002b, 0x0041, 0x0003, 0x002f, 0x0000, 0x0038, - 0x0002, 0x0032, 0x0035, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0002, 0x003b, 0x003e, 0x0001, 0x0010, 0x0268, 0x0001, - 0x0010, 0x026e, 0x0003, 0x0045, 0x004e, 0x0057, 0x0002, 0x0048, - // Entry 13780 - 137BF - 0x004b, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - 0x0051, 0x0054, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0002, 0x005a, 0x005d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0004, 0x0000, 0x0000, 0x0000, 0x0065, 0x0001, 0x001e, - 0x01ab, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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 137C0 - 137FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009e, 0x0001, - 0x00a0, 0x0001, 0x0010, 0x0aed, 0x0004, 0x0000, 0x0000, 0x0000, - 0x00a8, 0x0001, 0x00aa, 0x0003, 0x0000, 0x0000, 0x00ae, 0x001b, - 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13800 - 1383F - 0xffff, 0xffff, 0xffff, 0x01b8, 0x0003, 0x0004, 0x00a0, 0x00db, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0000, 0x0004, 0x001e, 0x0000, 0x0000, 0x001b, 0x0001, - 0x0005, 0x01ac, 0x0001, 0x001e, 0x01bc, 0x0008, 0x002a, 0x003e, - 0x004f, 0x005d, 0x0000, 0x0095, 0x0000, 0x0000, 0x0002, 0x0000, - 0x002d, 0x0001, 0x002f, 0x000d, 0x001c, 0xffff, 0x12c4, 0x12c9, - 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, 0x12ec, 0x12f2, - // Entry 13840 - 1387F - 0x12f7, 0x12fc, 0x0001, 0x0040, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0046, 0x0007, 0x0005, 0x1256, 0x2122, 0x2125, 0x125f, - 0x2128, 0x1265, 0x1268, 0x0002, 0x0000, 0x0052, 0x0003, 0x0000, - 0x0000, 0x0056, 0x0005, 0x001e, 0xffff, 0x01ca, 0x01d9, 0x01e8, - 0x01f7, 0x0002, 0x0060, 0x0076, 0x0003, 0x0064, 0x0000, 0x006d, - 0x0002, 0x0067, 0x006a, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0002, 0x0070, 0x0073, 0x0001, 0x0010, 0x0268, 0x0001, - 0x0010, 0x026e, 0x0003, 0x007a, 0x0083, 0x008c, 0x0002, 0x007d, - // Entry 13880 - 138BF - 0x0080, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - 0x0086, 0x0089, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0002, 0x008f, 0x0092, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0004, 0x009d, 0x0000, 0x0000, 0x009a, 0x0001, 0x0005, - 0x04ec, 0x0001, 0x001e, 0x0206, 0x0035, 0x0000, 0x0000, 0x0000, - 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 138C0 - 138FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00d6, 0x0001, 0x00d8, 0x0001, 0x0010, 0x0aed, 0x0004, - 0x0000, 0x0000, 0x0000, 0x00e0, 0x0001, 0x00e2, 0x0003, 0x00e6, - 0x012c, 0x0109, 0x0021, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13900 - 1393F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x020f, 0x0021, 0x001e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x020f, - 0x0021, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13940 - 1397F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0213, 0x0003, 0x0004, 0x00e8, 0x0123, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x002c, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - 0x0021, 0x0004, 0x001e, 0x0000, 0x0000, 0x001b, 0x0001, 0x001c, - 0x04aa, 0x0001, 0x001e, 0x0218, 0x0004, 0x0029, 0x0000, 0x0000, - 0x0026, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, - // Entry 13980 - 139BF - 0x0035, 0x0049, 0x0000, 0x0064, 0x0000, 0x00c1, 0x00cc, 0x00dd, - 0x0002, 0x0000, 0x0038, 0x0001, 0x003a, 0x000d, 0x001c, 0xffff, - 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, - 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x0002, 0x004c, 0x0058, 0x0002, - 0x0000, 0x004f, 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x22d9, - 0x1e5d, 0x1edb, 0x22dd, 0x0002, 0x0000, 0x005b, 0x0007, 0x0000, - 0x2008, 0x200a, 0x1f9a, 0x1f9a, 0x214a, 0x1f94, 0x2002, 0x0002, - 0x0067, 0x0090, 0x0003, 0x006b, 0x0000, 0x0087, 0x0009, 0x0075, - // Entry 139C0 - 139FF - 0x007b, 0x0000, 0x0000, 0x0000, 0x0081, 0x0084, 0x0078, 0x007e, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, - 0x026e, 0x0001, 0x0005, 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, - 0x001c, 0x1420, 0x0002, 0x008a, 0x008d, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0003, 0x0094, 0x00a6, 0x00b8, 0x0008, - 0x009d, 0x00a3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a0, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, - 0x026e, 0x0008, 0x00af, 0x00b5, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 13A00 - 13A3F - 0x0000, 0x00b2, 0x0001, 0x0010, 0x0268, 0x0001, 0x0001, 0x077c, - 0x0001, 0x0010, 0x026e, 0x0002, 0x00bb, 0x00be, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0010, 0x026e, 0x0004, 0x00c9, 0x0000, 0x0000, - 0x00c6, 0x0001, 0x001c, 0x04c0, 0x0001, 0x001c, 0x04c7, 0x0004, - 0x00da, 0x00d4, 0x00d1, 0x00d7, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - 0x0004, 0x00e5, 0x0000, 0x0000, 0x00e2, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 13A40 - 13A7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x011e, 0x0001, 0x0120, 0x0001, 0x0010, 0x0aed, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0128, 0x0001, 0x012a, 0x0003, 0x012e, 0x017e, - // Entry 13A80 - 13ABF - 0x0156, 0x0026, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0226, 0x0026, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 13AC0 - 13AFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0226, 0x0026, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x022a, 0x0002, 0x0003, 0x0049, 0x0008, 0x0000, 0x0000, 0x0000, - // Entry 13B00 - 13B3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0004, 0x0000, 0x0000, - 0x0000, 0x0011, 0x0002, 0x0014, 0x002a, 0x0003, 0x0018, 0x0000, - 0x0021, 0x0002, 0x001b, 0x001e, 0x0001, 0x0010, 0x0268, 0x0001, - 0x0010, 0x026e, 0x0002, 0x0024, 0x0027, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0003, 0x002e, 0x0037, 0x0040, 0x0002, - 0x0031, 0x0034, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0002, 0x003a, 0x003d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0002, 0x0043, 0x0046, 0x0001, 0x0010, 0x0268, 0x0001, - // Entry 13B40 - 13B7F - 0x0010, 0x026e, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007f, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0089, - 0x0002, 0x0000, 0x0082, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, - // Entry 13B80 - 13BBF - 0x022f, 0x0247, 0x0001, 0x008b, 0x0001, 0x0010, 0x0aed, 0x0002, - 0x0003, 0x00bd, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000c, 0x001b, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0013, 0x0004, 0x0000, 0x0000, 0x0000, 0x0018, 0x0001, - 0x0010, 0x02f4, 0x0008, 0x0000, 0x0024, 0x0032, 0x0047, 0x00a1, - 0x0000, 0x00ac, 0x0000, 0x0001, 0x0026, 0x0002, 0x0000, 0x0029, - 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, 0x22d9, 0x1e5d, 0x1edb, - 0x22dd, 0x0002, 0x0035, 0x003e, 0x0001, 0x0037, 0x0005, 0x0000, - // Entry 13BC0 - 13BFF - 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0001, 0x0040, 0x0005, - 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0002, 0x004a, - 0x0079, 0x0003, 0x004e, 0x0057, 0x0070, 0x0002, 0x0051, 0x0054, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0009, 0x0000, - 0x0000, 0x0000, 0x0064, 0x0000, 0x006a, 0x006d, 0x0061, 0x0067, - 0x0001, 0x001c, 0x142c, 0x0001, 0x0005, 0x1ece, 0x0001, 0x001e, - 0x023f, 0x0001, 0x0005, 0x130a, 0x0001, 0x001c, 0x1440, 0x0002, - 0x0073, 0x0076, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - // Entry 13C00 - 13C3F - 0x0003, 0x007d, 0x0086, 0x0098, 0x0002, 0x0080, 0x0083, 0x0001, - 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0008, 0x008f, 0x0095, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0092, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, 0x026e, 0x0002, - 0x009b, 0x009e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0003, 0x0000, 0x0000, 0x00a5, 0x0002, 0x0000, 0x00a8, 0x0002, - 0x001e, 0x0256, 0x026d, 0x0004, 0x00ba, 0x00b4, 0x00b1, 0x00b7, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - // Entry 13C40 - 13C7F - 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, 0x00fb, 0x0000, 0x0000, - 0x0100, 0x0000, 0x0000, 0x0105, 0x0000, 0x0000, 0x010a, 0x0000, - 0x0000, 0x010f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0114, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0119, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x011e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0123, 0x0000, - // Entry 13C80 - 13CBF - 0x0000, 0x0128, 0x0001, 0x00fd, 0x0001, 0x0000, 0x1a35, 0x0001, - 0x0102, 0x0001, 0x001e, 0x0278, 0x0001, 0x0107, 0x0001, 0x001e, - 0x027d, 0x0001, 0x010c, 0x0001, 0x001e, 0x0287, 0x0001, 0x0111, - 0x0001, 0x001e, 0x028b, 0x0001, 0x0116, 0x0001, 0x001e, 0x0292, - 0x0001, 0x011b, 0x0001, 0x001e, 0x0297, 0x0001, 0x0120, 0x0001, - 0x0010, 0x0aed, 0x0001, 0x0125, 0x0001, 0x001e, 0x02a9, 0x0001, - 0x012a, 0x0001, 0x001e, 0x02b0, 0x0003, 0x0004, 0x0057, 0x0092, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - // Entry 13CC0 - 13CFF - 0x0016, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x001f, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0002, 0x0022, 0x0038, 0x0003, 0x0026, - 0x0000, 0x002f, 0x0002, 0x0029, 0x002c, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0002, 0x0032, 0x0035, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x003c, 0x0045, 0x004e, - 0x0002, 0x003f, 0x0042, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0002, 0x0048, 0x004b, 0x0001, 0x0010, 0x0268, 0x0001, - // Entry 13D00 - 13D3F - 0x0010, 0x026e, 0x0002, 0x0051, 0x0054, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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 13D40 - 13D7F - 0x008d, 0x0001, 0x008f, 0x0001, 0x0010, 0x0aed, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0097, 0x0001, 0x0099, 0x0003, 0x0000, 0x0000, - 0x009d, 0x002d, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x02b8, - // Entry 13D80 - 13DBF - 0x0002, 0x0003, 0x006c, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000c, 0x0020, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x001d, 0x0000, - 0x0000, 0x001a, 0x0001, 0x001c, 0x04aa, 0x0001, 0x001e, 0x0218, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0029, 0x0000, 0x0061, 0x0000, - 0x0000, 0x0002, 0x002c, 0x0042, 0x0003, 0x0030, 0x0000, 0x0039, - 0x0002, 0x0033, 0x0036, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0002, 0x003c, 0x003f, 0x0001, 0x0010, 0x0268, 0x0001, - // Entry 13DC0 - 13DFF - 0x0010, 0x026e, 0x0003, 0x0046, 0x004f, 0x0058, 0x0002, 0x0049, - 0x004c, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - 0x0052, 0x0055, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0002, 0x005b, 0x005e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0004, 0x0069, 0x0000, 0x0000, 0x0066, 0x0001, 0x001c, - 0x04c0, 0x0001, 0x001c, 0x04c7, 0x0035, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a2, - // Entry 13E00 - 13E3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00ac, 0x0002, 0x0000, 0x00a5, 0x0005, 0x001e, 0x0236, - 0x023b, 0x023f, 0x022f, 0x0247, 0x0001, 0x00ae, 0x0001, 0x0010, - 0x0aed, 0x0002, 0x0003, 0x006a, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x001f, 0x0008, 0x0000, 0x0000, - // Entry 13E40 - 13E7F - 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0003, 0x0000, - 0x001c, 0x0019, 0x0001, 0x001e, 0x02bc, 0x0001, 0x001e, 0x02d7, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0028, 0x0000, 0x0060, 0x0000, - 0x0000, 0x0002, 0x002b, 0x0041, 0x0003, 0x002f, 0x0000, 0x0038, - 0x0002, 0x0032, 0x0035, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0002, 0x003b, 0x003e, 0x0001, 0x0010, 0x0268, 0x0001, - 0x0010, 0x026e, 0x0003, 0x0045, 0x004e, 0x0057, 0x0002, 0x0048, - 0x004b, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - // Entry 13E80 - 13EBF - 0x0051, 0x0054, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0002, 0x005a, 0x005d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0003, 0x0000, 0x0067, 0x0064, 0x0001, 0x001e, 0x02ed, - 0x0001, 0x001e, 0x0306, 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007e, 0x0002, - 0x0000, 0x0081, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, 0x022f, - 0x0247, 0x0003, 0x0004, 0x00e5, 0x026d, 0x0008, 0x0000, 0x0000, - // Entry 13EC0 - 13EFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x001e, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, - 0x0000, 0x0000, 0x0000, 0x001b, 0x0001, 0x0001, 0x1fc1, 0x0008, - 0x0027, 0x003a, 0x0054, 0x0089, 0x0000, 0x00da, 0x0000, 0x0000, - 0x0001, 0x0029, 0x0001, 0x002b, 0x000d, 0x001e, 0xffff, 0x031a, - 0x031e, 0x0322, 0x0326, 0x032a, 0x032e, 0x0332, 0x0336, 0x033a, - 0x033e, 0x0342, 0x0346, 0x0001, 0x003c, 0x0005, 0x0000, 0x0042, - 0x0000, 0x0000, 0x004b, 0x0007, 0x0000, 0x22f0, 0x228e, 0x22d9, - // Entry 13F00 - 13F3F - 0x22d9, 0x1e5d, 0x1edb, 0x22dd, 0x0007, 0x0005, 0x1256, 0x2122, - 0x2125, 0x125f, 0x2128, 0x1265, 0x1268, 0x0002, 0x0057, 0x0070, - 0x0003, 0x005b, 0x0062, 0x0069, 0x0005, 0x001e, 0xffff, 0x034a, - 0x0355, 0x0360, 0x036b, 0x0005, 0x0005, 0xffff, 0x12a4, 0x12a7, - 0x12aa, 0x12ad, 0x0005, 0x001e, 0xffff, 0x0375, 0x0384, 0x0393, - 0x03a2, 0x0003, 0x0074, 0x007b, 0x0082, 0x0005, 0x001e, 0xffff, - 0x034a, 0x0355, 0x0360, 0x036b, 0x0005, 0x0005, 0xffff, 0x12a4, - 0x12a7, 0x12aa, 0x12ad, 0x0005, 0x001e, 0xffff, 0x0375, 0x0384, - // Entry 13F40 - 13F7F - 0x0393, 0x03b0, 0x0002, 0x008c, 0x00bb, 0x0003, 0x0090, 0x0099, - 0x00b2, 0x0002, 0x0093, 0x0096, 0x0001, 0x0010, 0x0268, 0x0001, - 0x0010, 0x026e, 0x0009, 0x0000, 0x0000, 0x0000, 0x00a6, 0x0000, - 0x00ac, 0x00af, 0x00a3, 0x00a9, 0x0001, 0x001c, 0x1402, 0x0001, - 0x001c, 0x1410, 0x0001, 0x001e, 0x023f, 0x0001, 0x0005, 0x12f6, - 0x0001, 0x001c, 0x1420, 0x0002, 0x00b5, 0x00b8, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x00bf, 0x00c8, 0x00d1, - 0x0002, 0x00c2, 0x00c5, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - // Entry 13F80 - 13FBF - 0x026e, 0x0002, 0x00cb, 0x00ce, 0x0001, 0x0010, 0x0268, 0x0001, - 0x0010, 0x026e, 0x0002, 0x00d4, 0x00d7, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0004, 0x00e2, 0x0000, 0x0000, 0x00df, - 0x0001, 0x0002, 0x0860, 0x0001, 0x0014, 0x146e, 0x003f, 0x0000, - 0x0000, 0x0000, 0x0125, 0x012d, 0x0137, 0x0146, 0x0150, 0x015a, - 0x0169, 0x0178, 0x0182, 0x0191, 0x0199, 0x01a3, 0x0000, 0x0000, - 0x0000, 0x01b2, 0x01bc, 0x01c6, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01d5, 0x0000, 0x0000, - // Entry 13FC0 - 13FFF - 0x01dd, 0x0000, 0x0000, 0x01e5, 0x0000, 0x0000, 0x01ed, 0x01f5, - 0x0000, 0x01fd, 0x0000, 0x0000, 0x0205, 0x020d, 0x0000, 0x0215, - 0x0000, 0x0000, 0x0000, 0x021d, 0x0000, 0x0000, 0x0222, 0x022c, - 0x0000, 0x023b, 0x0245, 0x0000, 0x0254, 0x025e, 0x0002, 0x0000, - 0x0128, 0x0003, 0x001c, 0x1505, 0x1514, 0x1ffa, 0x0003, 0x0000, - 0x0000, 0x0131, 0x0001, 0x0133, 0x0002, 0x001e, 0x03be, 0x03be, - 0x0003, 0x0000, 0x0000, 0x013b, 0x0002, 0x013e, 0x0142, 0x0002, - 0x001e, 0x03be, 0x03be, 0x0002, 0x001e, 0x03c7, 0x03c7, 0x0003, - // Entry 14000 - 1403F - 0x0000, 0x0000, 0x014a, 0x0001, 0x014c, 0x0002, 0x0005, 0x1cbd, - 0x1cac, 0x0003, 0x0000, 0x0000, 0x0154, 0x0001, 0x0156, 0x0002, - 0x0005, 0x212b, 0x1d1a, 0x0003, 0x0000, 0x0000, 0x015e, 0x0002, - 0x0161, 0x0165, 0x0002, 0x001e, 0x03ce, 0x03ce, 0x0002, 0x001e, - 0x03d5, 0x03d5, 0x0003, 0x0000, 0x016d, 0x0172, 0x0003, 0x001c, - 0x1642, 0x1650, 0x200b, 0x0001, 0x0174, 0x0002, 0x0005, 0x1d7e, - 0x1d73, 0x0003, 0x0000, 0x0000, 0x017c, 0x0001, 0x017e, 0x0002, - 0x001e, 0x03dc, 0x03dc, 0x0003, 0x0000, 0x0000, 0x0186, 0x0002, - // Entry 14040 - 1407F - 0x0189, 0x018d, 0x0002, 0x0000, 0x1ace, 0x1ace, 0x0002, 0x0000, - 0x1ad5, 0x1ad5, 0x0002, 0x0000, 0x0194, 0x0003, 0x001c, 0x16cd, - 0x16de, 0x201b, 0x0003, 0x0000, 0x0000, 0x019d, 0x0001, 0x019f, - 0x0002, 0x001e, 0x03e5, 0x03e5, 0x0003, 0x0000, 0x0000, 0x01a7, - 0x0002, 0x01aa, 0x01ae, 0x0002, 0x001e, 0x03f1, 0x03f1, 0x0002, - 0x001e, 0x03fb, 0x03fb, 0x0002, 0x0000, 0x01b5, 0x0005, 0x001e, - 0x0236, 0x023b, 0x023f, 0x022f, 0x0247, 0x0003, 0x0000, 0x0000, - 0x01c0, 0x0001, 0x01c2, 0x0002, 0x0005, 0x2137, 0x1ef6, 0x0003, - // Entry 14080 - 140BF - 0x0000, 0x0000, 0x01ca, 0x0002, 0x01cd, 0x01d1, 0x0002, 0x001e, - 0x040f, 0x0405, 0x0002, 0x001e, 0x0424, 0x041a, 0x0002, 0x0000, - 0x01d8, 0x0003, 0x001c, 0x1810, 0x1822, 0x202e, 0x0002, 0x0000, - 0x01e0, 0x0003, 0x001c, 0x191f, 0x192f, 0x2042, 0x0002, 0x0000, - 0x01e8, 0x0003, 0x001c, 0x19fb, 0x1a0c, 0x2054, 0x0002, 0x0000, - 0x01f0, 0x0003, 0x001c, 0x1adc, 0x1af1, 0x2067, 0x0002, 0x0000, - 0x01f8, 0x0003, 0x001e, 0x042f, 0x0440, 0x044c, 0x0002, 0x0000, - 0x0200, 0x0003, 0x001c, 0x1bd6, 0x1be7, 0x207e, 0x0002, 0x0000, - // Entry 140C0 - 140FF - 0x0208, 0x0003, 0x001c, 0x1cb7, 0x1cc9, 0x2091, 0x0002, 0x0000, - 0x0210, 0x0003, 0x001e, 0x045f, 0x046f, 0x047a, 0x0002, 0x0000, - 0x0218, 0x0003, 0x001c, 0x1d9d, 0x1daf, 0x20a5, 0x0001, 0x021f, - 0x0001, 0x0010, 0x0aed, 0x0003, 0x0000, 0x0000, 0x0226, 0x0001, - 0x0228, 0x0002, 0x001e, 0x0495, 0x048c, 0x0003, 0x0000, 0x0000, - 0x0230, 0x0002, 0x0233, 0x0237, 0x0002, 0x0000, 0x1d76, 0x1d76, - 0x0002, 0x0000, 0x1d7d, 0x1d7d, 0x0003, 0x0000, 0x0000, 0x023f, - 0x0001, 0x0241, 0x0002, 0x001e, 0x049e, 0x049e, 0x0003, 0x0000, - // Entry 14100 - 1413F - 0x0000, 0x0249, 0x0002, 0x024c, 0x0250, 0x0002, 0x0000, 0x1d97, - 0x1d97, 0x0002, 0x0000, 0x1da0, 0x1da0, 0x0003, 0x0000, 0x0000, - 0x0258, 0x0001, 0x025a, 0x0002, 0x001e, 0x04a9, 0x04a9, 0x0003, - 0x0000, 0x0000, 0x0262, 0x0002, 0x0265, 0x0269, 0x0002, 0x0000, - 0x1db4, 0x1db4, 0x0002, 0x0000, 0x1dbb, 0x1dbb, 0x0004, 0x0000, - 0x0000, 0x0272, 0x027d, 0x0002, 0x0000, 0x0275, 0x0002, 0x0000, - 0x0278, 0x0003, 0x001e, 0xffff, 0x04b2, 0x04cc, 0x0002, 0x0000, - 0x0280, 0x0003, 0x031a, 0x03b0, 0x0284, 0x0094, 0x001e, 0xffff, - // Entry 14140 - 1417F - 0x04e5, 0x04fd, 0x0516, 0x0544, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x059b, 0x05d8, 0xffff, 0xffff, 0x061a, - 0xffff, 0x0668, 0x06d2, 0x0745, 0x07ac, 0x080e, 0x085d, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x08aa, 0x08e4, 0x090f, 0xffff, - 0xffff, 0xffff, 0x0943, 0x095e, 0x0987, 0x09d4, 0xffff, 0x0a1c, - 0x0a2a, 0xffff, 0x0a5f, 0x0aa7, 0x0ace, 0x0b28, 0x0b6c, 0x0baa, - 0x0c0d, 0x0c64, 0x0c92, 0x0cae, 0x0ce4, 0x0cf7, 0x0d17, 0x0d4b, - 0x0d65, 0xffff, 0xffff, 0x0d85, 0x0d9e, 0xffff, 0xffff, 0xffff, - // Entry 14180 - 141BF - 0xffff, 0x0dad, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0dd6, - 0x0e19, 0xffff, 0xffff, 0x0e4b, 0x0e68, 0xffff, 0x0e87, 0x0eaa, - 0x0ee6, 0x0efa, 0x0f30, 0x0f68, 0x0f93, 0xffff, 0xffff, 0x0fc9, - 0x0fe5, 0x1011, 0x1047, 0xffff, 0xffff, 0xffff, 0x1065, 0xffff, - 0x1097, 0xffff, 0x10bd, 0x1117, 0xffff, 0x1157, 0x1164, 0x119a, - 0x11fa, 0x1243, 0xffff, 0x1271, 0x1280, 0x12ad, 0x12f1, 0xffff, - 0x1321, 0xffff, 0x133a, 0x134b, 0xffff, 0x135b, 0x136c, 0x138d, - 0xffff, 0x13d1, 0x1401, 0xffff, 0x1414, 0x142f, 0x144a, 0x145a, - // Entry 141C0 - 141FF - 0x1468, 0xffff, 0x1478, 0x148c, 0x14aa, 0x14da, 0x14fe, 0x153e, - 0x155d, 0x15a5, 0x15f1, 0x1625, 0x164b, 0x169a, 0x16d4, 0x16e3, - 0x16f8, 0x1720, 0x176a, 0x0094, 0x001e, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0529, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x058e, 0x05c9, 0xffff, 0xffff, 0x060a, 0xffff, 0x064e, - 0x06b0, 0x072a, 0x078f, 0x07fa, 0x084a, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0897, 0xffff, 0x08ff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0976, 0x09bd, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14200 - 1423F - 0x0a45, 0xffff, 0x0ab7, 0x0b10, 0xffff, 0x0b90, 0x0bf2, 0x0c57, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0d07, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0dc6, 0x0e0a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0e96, 0xffff, 0xffff, - 0x0f1e, 0xffff, 0x0f82, 0xffff, 0xffff, 0xffff, 0xffff, 0x1000, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1056, 0xffff, 0xffff, 0xffff, - 0x10a5, 0x1101, 0xffff, 0xffff, 0xffff, 0x117e, 0x11e6, 0x1236, - // Entry 14240 - 1427F - 0xffff, 0xffff, 0xffff, 0x129c, 0x12e3, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x137c, 0xffff, 0x13c3, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x149c, 0xffff, 0x14e8, 0xffff, 0x154d, 0x1591, - 0x15e1, 0xffff, 0x1637, 0x1687, 0xffff, 0xffff, 0xffff, 0x1710, - 0x1754, 0x0094, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0x0569, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x05b2, - 0x05f1, 0xffff, 0xffff, 0x0634, 0xffff, 0x068c, 0x06fe, 0x076a, - // Entry 14280 - 142BF - 0x07d3, 0x082c, 0x087a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x08c7, 0xffff, 0x0929, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x09a2, 0x09f5, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a83, 0xffff, - 0x0aef, 0x0b4a, 0xffff, 0x0bce, 0x0c32, 0x0c7b, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0d31, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0df0, 0x0e32, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0ec8, 0xffff, 0xffff, 0x0f4c, 0xffff, - // Entry 142C0 - 142FF - 0x0fae, 0xffff, 0xffff, 0xffff, 0xffff, 0x102c, 0xffff, 0xffff, - 0xffff, 0xffff, 0x107e, 0xffff, 0xffff, 0xffff, 0x10df, 0x1137, - 0xffff, 0xffff, 0xffff, 0x11c0, 0x1218, 0x125a, 0xffff, 0xffff, - 0xffff, 0x12c8, 0x1309, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x13a8, 0xffff, 0x13e9, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x14c2, 0xffff, 0x151e, 0xffff, 0x1577, 0x15c3, 0x160b, 0xffff, - 0x1669, 0x16b7, 0xffff, 0xffff, 0xffff, 0x173a, 0x178a, 0x0002, - // Entry 14300 - 1433F - 0x0003, 0x0049, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000c, 0x0004, 0x0000, 0x0000, 0x0000, 0x0011, - 0x0002, 0x0014, 0x002a, 0x0003, 0x0018, 0x0000, 0x0021, 0x0002, - 0x001b, 0x001e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0002, 0x0024, 0x0027, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0003, 0x002e, 0x0037, 0x0040, 0x0002, 0x0031, 0x0034, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x003a, - 0x003d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - // Entry 14340 - 1437F - 0x0043, 0x0046, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x005d, 0x0002, 0x0000, 0x0060, 0x0005, - 0x001e, 0x0236, 0x023b, 0x023f, 0x022f, 0x0247, 0x0002, 0x0003, - 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0020, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x001d, 0x0000, 0x0000, 0x001a, - // Entry 14380 - 143BF - 0x0001, 0x001e, 0x17aa, 0x0001, 0x001e, 0x17b4, 0x0008, 0x0029, - 0x0000, 0x003d, 0x0056, 0x0000, 0x00ba, 0x00c5, 0x0000, 0x0001, - 0x002b, 0x0002, 0x0000, 0x002e, 0x000d, 0x0000, 0xffff, 0x214e, - 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, - 0x22ec, 0x22ee, 0x22f0, 0x0002, 0x0040, 0x004b, 0x0003, 0x0000, - 0x0000, 0x0044, 0x0005, 0x001e, 0xffff, 0x0375, 0x17c3, 0x0393, - 0x01f7, 0x0003, 0x0000, 0x0000, 0x004f, 0x0005, 0x001e, 0xffff, - 0x0375, 0x17c3, 0x0393, 0x01f7, 0x0002, 0x0059, 0x009b, 0x0003, - // Entry 143C0 - 143FF - 0x005d, 0x0000, 0x007c, 0x0009, 0x0067, 0x006d, 0x0000, 0x0070, - 0x0000, 0x0076, 0x0079, 0x006a, 0x0073, 0x0001, 0x0010, 0x0268, - 0x0001, 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, - 0x1410, 0x0001, 0x0005, 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, - 0x001c, 0x1420, 0x0009, 0x0086, 0x008c, 0x0000, 0x008f, 0x0000, - 0x0095, 0x0098, 0x0089, 0x0092, 0x0001, 0x0010, 0x0268, 0x0001, - 0x001c, 0x142c, 0x0001, 0x0010, 0x026e, 0x0001, 0x001c, 0x1410, - 0x0001, 0x0005, 0x12e8, 0x0001, 0x0005, 0x12f6, 0x0001, 0x001c, - // Entry 14400 - 1443F - 0x1420, 0x0003, 0x009f, 0x00a8, 0x00b1, 0x0002, 0x00a2, 0x00a5, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x00ab, - 0x00ae, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - 0x00b4, 0x00b7, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0004, 0x00c2, 0x0000, 0x0000, 0x00bf, 0x0001, 0x001e, 0x17d2, - 0x0001, 0x001e, 0x17da, 0x0004, 0x00d3, 0x00cd, 0x00ca, 0x00d0, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0013, 0x0000, 0x0000, 0x0000, - // Entry 14440 - 1447F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ea, - 0x0002, 0x0000, 0x00ed, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, - 0x022f, 0x0247, 0x0003, 0x0004, 0x0000, 0x00a8, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x001b, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, - 0x0001, 0x0018, 0x0001, 0x001e, 0x0218, 0x0008, 0x0024, 0x0000, - 0x0000, 0x006b, 0x0000, 0x00a3, 0x0000, 0x0000, 0x0002, 0x0027, - // Entry 14480 - 144BF - 0x0049, 0x0003, 0x002b, 0x0000, 0x003a, 0x000d, 0x001c, 0xffff, - 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, - 0x20b9, 0x12f2, 0x12f7, 0x12fc, 0x000d, 0x001c, 0xffff, 0x1301, - 0x1307, 0x130f, 0x1315, 0x131b, 0x0606, 0x060c, 0x1320, 0x20be, - 0x1332, 0x133a, 0x1344, 0x0003, 0x004d, 0x0000, 0x005c, 0x000d, - 0x001e, 0xffff, 0x17e3, 0x17e8, 0x17ed, 0x17f2, 0x17f7, 0x17fc, - 0x1801, 0x1806, 0x180b, 0x1810, 0x1815, 0x181a, 0x000d, 0x001e, - 0xffff, 0x181f, 0x1825, 0x182d, 0x1833, 0x1839, 0x183e, 0x1844, - // Entry 144C0 - 144FF - 0x184a, 0x1851, 0x185b, 0x1863, 0x186d, 0x0002, 0x006e, 0x0084, - 0x0003, 0x0072, 0x0000, 0x007b, 0x0002, 0x0075, 0x0078, 0x0001, - 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x007e, 0x0081, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x0088, - 0x0091, 0x009a, 0x0002, 0x008b, 0x008e, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0002, 0x0094, 0x0097, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x009d, 0x00a0, 0x0001, - 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0001, 0x00a5, 0x0001, - // Entry 14500 - 1453F - 0x001c, 0x04c7, 0x0004, 0x0000, 0x0000, 0x0000, 0x00ad, 0x0001, - 0x00af, 0x0003, 0x00b3, 0x0197, 0x0125, 0x0070, 0x001e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14540 - 1457F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1877, 0x0070, - // Entry 14580 - 145BF - 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 145C0 - 145FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1877, 0x0070, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14600 - 1463F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14640 - 1467F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x187b, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, - 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, - // Entry 14680 - 146BF - 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, - 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x001f, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0014, 0x0000, 0x0000, 0x0004, 0x001c, 0x0000, 0x0000, 0x0019, - 0x0001, 0x001e, 0x17aa, 0x0001, 0x001e, 0x17b4, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0028, 0x0000, 0x0060, 0x006b, 0x0000, 0x0002, - 0x002b, 0x0041, 0x0003, 0x002f, 0x0000, 0x0038, 0x0002, 0x0032, - 0x0035, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - // Entry 146C0 - 146FF - 0x003b, 0x003e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0003, 0x0045, 0x004e, 0x0057, 0x0002, 0x0048, 0x004b, 0x0001, - 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x0051, 0x0054, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x005a, - 0x005d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0004, - 0x0068, 0x0000, 0x0000, 0x0065, 0x0001, 0x001e, 0x17d2, 0x0001, - 0x001e, 0x17da, 0x0004, 0x0079, 0x0073, 0x0070, 0x0076, 0x0001, - 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, - // Entry 14700 - 1473F - 0x0001, 0x0002, 0x0478, 0x0002, 0x0003, 0x009c, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0008, - 0x0015, 0x003a, 0x0000, 0x005b, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0002, 0x0018, 0x0029, 0x0001, 0x001a, 0x000d, 0x001c, 0xffff, - 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, - 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x0001, 0x002b, 0x000d, 0x001c, - 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, - 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x0002, 0x003d, 0x004c, - // Entry 14740 - 1477F - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0043, 0x0007, 0x0005, - 0x1256, 0x2122, 0x2125, 0x125f, 0x2128, 0x1265, 0x2144, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0052, 0x0007, 0x0016, 0x0361, - 0x2b6f, 0x2b47, 0x035e, 0x2b72, 0x2b75, 0x0367, 0x0002, 0x005e, - 0x0074, 0x0003, 0x0062, 0x0000, 0x006b, 0x0002, 0x0065, 0x0068, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x006e, - 0x0071, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, - 0x0078, 0x0081, 0x0093, 0x0002, 0x007b, 0x007e, 0x0001, 0x0010, - // Entry 14780 - 147BF - 0x0268, 0x0001, 0x0010, 0x026e, 0x0008, 0x008a, 0x0090, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x008d, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, 0x026e, 0x0002, 0x0096, - 0x0099, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0040, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x00dd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 147C0 - 147FF - 0x00e7, 0x0000, 0x0000, 0x00ef, 0x0000, 0x0000, 0x00f7, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0x0111, 0x0120, - 0x0002, 0x0000, 0x00e0, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, - 0x1880, 0x0247, 0x0002, 0x0000, 0x00ea, 0x0003, 0x001c, 0x1893, - 0x18a2, 0x18ac, 0x0002, 0x0000, 0x00f2, 0x0003, 0x001c, 0x196f, - 0x197e, 0x1988, 0x0002, 0x0000, 0x00fa, 0x0003, 0x001c, 0x1a50, - // Entry 14800 - 1483F - 0x1a5f, 0x1a69, 0x0003, 0x0103, 0x0000, 0x0106, 0x0001, 0x001e, - 0x0171, 0x0002, 0x0109, 0x010d, 0x0002, 0x001e, 0x0176, 0x0176, - 0x0002, 0x001e, 0x0189, 0x0189, 0x0003, 0x0000, 0x0000, 0x0115, - 0x0002, 0x0118, 0x011c, 0x0002, 0x001e, 0x0176, 0x0176, 0x0002, - 0x001e, 0x0189, 0x0189, 0x0001, 0x0122, 0x0001, 0x001d, 0x000b, - 0x0002, 0x0003, 0x0049, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0011, 0x0002, 0x0014, 0x002a, 0x0003, 0x0018, 0x0000, 0x0021, - // Entry 14840 - 1487F - 0x0002, 0x001b, 0x001e, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0002, 0x0024, 0x0027, 0x0001, 0x0010, 0x0268, 0x0001, - 0x0010, 0x026e, 0x0003, 0x002e, 0x0037, 0x0040, 0x0002, 0x0031, - 0x0034, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - 0x003a, 0x003d, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0002, 0x0043, 0x0046, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 14880 - 148BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x007f, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0089, 0x0002, - 0x0000, 0x0082, 0x0005, 0x001e, 0x0236, 0x023b, 0x023f, 0x022f, - 0x0247, 0x0001, 0x008b, 0x0001, 0x0010, 0x0aed, 0x0003, 0x0004, - 0x0000, 0x0078, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 148C0 - 148FF - 0x0000, 0x0000, 0x000d, 0x0008, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0000, 0x0067, 0x0000, 0x0002, 0x0019, 0x0048, 0x0003, - 0x001d, 0x0026, 0x003f, 0x0002, 0x0020, 0x0023, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0010, 0x026e, 0x0009, 0x0000, 0x0000, 0x0000, - 0x0033, 0x0000, 0x0039, 0x003c, 0x0030, 0x0036, 0x0001, 0x001c, - 0x1402, 0x0001, 0x001c, 0x1410, 0x0001, 0x001e, 0x023f, 0x0001, - 0x0005, 0x12f6, 0x0001, 0x001c, 0x1420, 0x0002, 0x0042, 0x0045, - 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x004c, - // Entry 14900 - 1493F - 0x0055, 0x005e, 0x0002, 0x004f, 0x0052, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0002, 0x0058, 0x005b, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, 0x0061, 0x0064, 0x0001, - 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0004, 0x0075, 0x006f, - 0x006c, 0x0072, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0000, - 0x0000, 0x007d, 0x0095, 0x0001, 0x007f, 0x0003, 0x0083, 0x008f, - 0x0089, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, - // Entry 14940 - 1497F - 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, - 0xffff, 0xffff, 0x05a8, 0x0002, 0x0098, 0x015f, 0x0003, 0x009c, - 0x011e, 0x00dd, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14980 - 149BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x16e2, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x2780, 0x0978, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 149C0 - 149FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, 0x2784, - 0x097c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c1b, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14A00 - 14A3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x16eb, 0x0003, 0x0000, 0x0000, - 0x0163, 0x001f, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x188e, 0x0003, 0x0004, 0x0000, 0x0091, 0x0008, 0x0000, - // Entry 14A40 - 14A7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0004, - 0x0012, 0x0000, 0x0000, 0x0059, 0x0002, 0x0015, 0x0037, 0x0003, - 0x0019, 0x0000, 0x0028, 0x000d, 0x001c, 0xffff, 0x12c4, 0x12c9, - 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, 0x12e7, 0x20b9, 0x12f2, - 0x12f7, 0x12fc, 0x000d, 0x001c, 0xffff, 0x1301, 0x1307, 0x130f, - 0x1315, 0x131b, 0x0606, 0x060c, 0x1320, 0x20be, 0x1332, 0x133a, - 0x1344, 0x0003, 0x003b, 0x0000, 0x004a, 0x000d, 0x001e, 0xffff, - 0x17e3, 0x17e8, 0x17ed, 0x17f2, 0x17f7, 0x17fc, 0x1801, 0x1806, - // Entry 14A80 - 14ABF - 0x180b, 0x1810, 0x1815, 0x181a, 0x000d, 0x001e, 0xffff, 0x181f, - 0x1825, 0x182d, 0x1833, 0x1839, 0x183e, 0x1844, 0x184a, 0x1851, - 0x185b, 0x1863, 0x186d, 0x0002, 0x005c, 0x0072, 0x0003, 0x0060, - 0x0000, 0x0069, 0x0002, 0x0063, 0x0066, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0002, 0x006c, 0x006f, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0010, 0x026e, 0x0003, 0x0076, 0x007f, 0x0088, - 0x0002, 0x0079, 0x007c, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, - 0x026e, 0x0002, 0x0082, 0x0085, 0x0001, 0x0010, 0x0268, 0x0001, - // Entry 14AC0 - 14AFF - 0x0010, 0x026e, 0x0002, 0x008b, 0x008e, 0x0001, 0x0010, 0x0268, - 0x0001, 0x0010, 0x026e, 0x0004, 0x0000, 0x0000, 0x0000, 0x0096, - 0x0001, 0x0098, 0x0003, 0x009c, 0x01b4, 0x0128, 0x008a, 0x001e, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14B00 - 14B3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14B40 - 14B7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x189f, 0x008a, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14B80 - 14BBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14BC0 - 14BFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x189f, 0x008a, 0x001e, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14C00 - 14C3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14C40 - 14C7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x18a3, 0x0003, 0x0004, 0x00d7, 0x0143, 0x0008, 0x0000, - // Entry 14C80 - 14CBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0008, - 0x0016, 0x004b, 0x006c, 0x0085, 0x0000, 0x0000, 0x00c6, 0x0000, - 0x0002, 0x0019, 0x003a, 0x0002, 0x001c, 0x002b, 0x000d, 0x001c, - 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, - 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x000d, 0x0000, 0xffff, - 0x214e, 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, - 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x0001, 0x003c, 0x000d, 0x001c, - 0xffff, 0x12c4, 0x12c9, 0x12ce, 0x12d3, 0x12d8, 0x12dd, 0x12e2, - // Entry 14CC0 - 14CFF - 0x12e7, 0x12ec, 0x12f2, 0x12f7, 0x12fc, 0x0002, 0x004e, 0x005d, - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0054, 0x0007, 0x0016, - 0x0361, 0x2b6f, 0x2b47, 0x035e, 0x2b72, 0x2b75, 0x0367, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0063, 0x0007, 0x0016, 0x0361, - 0x2b6f, 0x2b47, 0x035e, 0x2b72, 0x2b75, 0x0367, 0x0002, 0x006f, - 0x007a, 0x0003, 0x0000, 0x0000, 0x0073, 0x0005, 0x0005, 0xffff, - 0x12b0, 0x2147, 0x12cb, 0x2155, 0x0003, 0x0000, 0x0000, 0x007e, - 0x0005, 0x0005, 0xffff, 0x12b0, 0x2147, 0x12cb, 0x2155, 0x0002, - // Entry 14D00 - 14D3F - 0x0088, 0x009e, 0x0003, 0x008c, 0x0000, 0x0095, 0x0002, 0x008f, - 0x0092, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0002, - 0x0098, 0x009b, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - 0x0003, 0x00a2, 0x00ab, 0x00bd, 0x0002, 0x00a5, 0x00a8, 0x0001, - 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, 0x0008, 0x00b4, 0x00ba, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00b7, 0x0001, 0x0010, - 0x0268, 0x0001, 0x0001, 0x077c, 0x0001, 0x0010, 0x026e, 0x0002, - 0x00c0, 0x00c3, 0x0001, 0x0010, 0x0268, 0x0001, 0x0010, 0x026e, - // Entry 14D40 - 14D7F - 0x0004, 0x00d4, 0x00ce, 0x00cb, 0x00d1, 0x0001, 0x0002, 0x0453, - 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, - 0x0478, 0x0033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x010b, 0x0000, 0x0000, 0x0113, 0x0000, 0x0000, - 0x011b, 0x0000, 0x0000, 0x0123, 0x0000, 0x0000, 0x012b, 0x0000, - // Entry 14D80 - 14DBF - 0x0000, 0x0133, 0x0000, 0x0000, 0x013b, 0x0002, 0x0000, 0x010e, - 0x0003, 0x001e, 0x18a8, 0x18b5, 0x18bd, 0x0002, 0x0000, 0x0116, - 0x0003, 0x001e, 0x18cc, 0x18d9, 0x18e1, 0x0002, 0x0000, 0x011e, - 0x0003, 0x001e, 0x18f0, 0x18fd, 0x1905, 0x0002, 0x0000, 0x0126, - 0x0003, 0x001e, 0x1914, 0x1921, 0x1929, 0x0002, 0x0000, 0x012e, - 0x0003, 0x001e, 0x1938, 0x1945, 0x194d, 0x0002, 0x0000, 0x0136, - 0x0003, 0x001e, 0x195c, 0x1969, 0x1971, 0x0002, 0x0000, 0x013e, - 0x0003, 0x001e, 0x1980, 0x198d, 0x1995, 0x0004, 0x0000, 0x0000, - // Entry 14DC0 - 14DFF - 0x0000, 0x0148, 0x0001, 0x014a, 0x0003, 0x0000, 0x0000, 0x014e, - 0x008d, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14E00 - 14E3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 14E40 - 14E7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x19a4, 0x0003, - 0x0004, 0x02a6, 0x068c, 0x0008, 0x0000, 0x000d, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0058, 0x0083, 0x000a, 0x0018, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, 0x0001, - 0x001a, 0x0003, 0x0000, 0x0000, 0x001e, 0x000d, 0x001e, 0xffff, - 0x19a8, 0x19b4, 0x19be, 0x19c9, 0x19d4, 0x19de, 0x19e8, 0x19f5, - // Entry 14E80 - 14EBF - 0x1a02, 0x1a0f, 0x1a1b, 0x1a30, 0x0006, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0034, 0x0001, 0x0036, 0x0003, 0x003a, 0x0000, - 0x0049, 0x000d, 0x001e, 0xffff, 0x1a45, 0x1a4a, 0x1a50, 0x1a57, - 0x1a60, 0x1a68, 0x1a6d, 0x1a74, 0x1a7b, 0x1a7f, 0x1a84, 0x1a89, - 0x000d, 0x001e, 0xffff, 0x1a45, 0x1a4a, 0x1a50, 0x1a57, 0x1a60, - 0x1a68, 0x1a6d, 0x1a74, 0x1a7b, 0x1a7f, 0x1a84, 0x1a89, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0000, 0x0072, - 0x0004, 0x006f, 0x0069, 0x0066, 0x006c, 0x0001, 0x0013, 0x06bb, - // Entry 14EC0 - 14EFF - 0x0001, 0x0013, 0x0477, 0x0001, 0x0016, 0x02aa, 0x0001, 0x001e, - 0x1a8e, 0x0004, 0x0080, 0x007a, 0x0077, 0x007d, 0x0001, 0x001e, - 0x1a9c, 0x0001, 0x001e, 0x1a9c, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0008, 0x008c, 0x00f1, 0x0148, 0x017d, 0x024e, - 0x0273, 0x0284, 0x0295, 0x0002, 0x008f, 0x00c0, 0x0003, 0x0093, - 0x00a2, 0x00b1, 0x000d, 0x001e, 0xffff, 0x1aac, 0x1ab1, 0x1ab7, - 0x1abe, 0x1ac2, 0x1ac6, 0x1acc, 0x1ad2, 0x1ad6, 0x1adb, 0x0342, - 0x1adf, 0x000d, 0x0000, 0xffff, 0x1e5d, 0x1edb, 0x22d9, 0x2382, - // Entry 14F00 - 14F3F - 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, - 0x000d, 0x001e, 0xffff, 0x1ae4, 0x1aec, 0x1ab7, 0x1af5, 0x1ac2, - 0x1ac6, 0x1acc, 0x1afc, 0x1b03, 0x1b0d, 0x1b16, 0x1b1f, 0x0003, - 0x00c4, 0x00d3, 0x00e2, 0x000d, 0x001e, 0xffff, 0x1aac, 0x1ab1, - 0x1ab7, 0x1abe, 0x1ac2, 0x1ac6, 0x1acc, 0x1ad2, 0x1ad6, 0x1adb, - 0x0342, 0x1adf, 0x000d, 0x0000, 0xffff, 0x1e5d, 0x1edb, 0x22d9, - 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, - 0x22f0, 0x000d, 0x001e, 0xffff, 0x1ae4, 0x1aec, 0x1ab7, 0x1af5, - // Entry 14F40 - 14F7F - 0x1ac2, 0x1ac6, 0x1acc, 0x1afc, 0x1b03, 0x1b0d, 0x1b16, 0x1b1f, - 0x0002, 0x00f4, 0x011e, 0x0005, 0x00fa, 0x0103, 0x0115, 0x0000, - 0x010c, 0x0007, 0x0000, 0x21e5, 0x214e, 0x04dd, 0x2157, 0x22ee, - 0x223e, 0x228e, 0x0007, 0x0000, 0x21e5, 0x214e, 0x04dd, 0x2157, - 0x22ee, 0x223e, 0x228e, 0x0007, 0x0000, 0x21e5, 0x214e, 0x04dd, - 0x2157, 0x22ee, 0x223e, 0x228e, 0x0007, 0x001e, 0x1b29, 0x1b34, - 0x1b3f, 0x1b4a, 0x1b55, 0x1b60, 0x1b66, 0x0005, 0x0124, 0x012d, - 0x013f, 0x0000, 0x0136, 0x0007, 0x0000, 0x21e5, 0x214e, 0x04dd, - // Entry 14F80 - 14FBF - 0x2157, 0x22ee, 0x223e, 0x228e, 0x0007, 0x0000, 0x21e5, 0x214e, - 0x04dd, 0x2157, 0x22ee, 0x223e, 0x228e, 0x0007, 0x0000, 0x21e5, - 0x214e, 0x04dd, 0x2157, 0x22ee, 0x223e, 0x228e, 0x0007, 0x001e, - 0x1b29, 0x1b34, 0x1b3f, 0x1b4a, 0x1b55, 0x1b60, 0x1b66, 0x0002, - 0x014b, 0x0164, 0x0003, 0x014f, 0x0156, 0x015d, 0x0005, 0x0000, - 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0015, 0xffff, 0x00f9, - 0x0104, 0x010f, 0x011a, 0x0003, 0x0168, 0x016f, 0x0176, 0x0005, - // Entry 14FC0 - 14FFF - 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x000d, - 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0015, 0xffff, - 0x00f9, 0x0104, 0x010f, 0x011a, 0x0002, 0x0180, 0x01e7, 0x0003, - 0x0184, 0x01a5, 0x01c6, 0x0008, 0x0190, 0x0196, 0x018d, 0x0199, - 0x019c, 0x019f, 0x01a2, 0x0193, 0x0001, 0x001e, 0x1b6f, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x001e, 0x1b79, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x001e, 0x1b85, 0x0001, 0x001e, 0x1b8e, 0x0001, 0x001e, - 0x1b9d, 0x0001, 0x001e, 0x1ba4, 0x0008, 0x01b1, 0x01b7, 0x01ae, - // Entry 15000 - 1503F - 0x01ba, 0x01bd, 0x01c0, 0x01c3, 0x01b4, 0x0001, 0x001e, 0x1b6f, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x001e, 0x1b79, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x001e, 0x1b85, 0x0001, 0x001e, 0x1b8e, 0x0001, - 0x001e, 0x1b9d, 0x0001, 0x001e, 0x1ba4, 0x0008, 0x01d2, 0x01d8, - 0x01cf, 0x01db, 0x01de, 0x01e1, 0x01e4, 0x01d5, 0x0001, 0x001e, - 0x1b6f, 0x0001, 0x0000, 0x04ef, 0x0001, 0x001e, 0x1b79, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x001e, 0x1b85, 0x0001, 0x001e, 0x1b8e, - 0x0001, 0x001e, 0x1b9d, 0x0001, 0x001e, 0x1ba4, 0x0003, 0x01eb, - // Entry 15040 - 1507F - 0x020c, 0x022d, 0x0008, 0x01f7, 0x01fd, 0x01f4, 0x0200, 0x0203, - 0x0206, 0x0209, 0x01fa, 0x0001, 0x001e, 0x1bac, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x001e, 0x1bb5, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x001e, 0x1bbf, 0x0001, 0x001e, 0x1bc6, 0x0001, 0x001e, 0x1bd4, - 0x0001, 0x001e, 0x1bda, 0x0008, 0x0218, 0x021e, 0x0215, 0x0221, - 0x0224, 0x0227, 0x022a, 0x021b, 0x0001, 0x001e, 0x1bac, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x001e, 0x1bb5, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x001e, 0x1bbf, 0x0001, 0x001e, 0x1bc6, 0x0001, 0x001e, - // Entry 15080 - 150BF - 0x1bd4, 0x0001, 0x001e, 0x1bda, 0x0008, 0x0239, 0x023f, 0x0236, - 0x0242, 0x0245, 0x0248, 0x024b, 0x023c, 0x0001, 0x001e, 0x1bac, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x001e, 0x1bb5, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x001e, 0x1bbf, 0x0001, 0x001e, 0x1bc6, 0x0001, - 0x001e, 0x1bd4, 0x0001, 0x001e, 0x1bda, 0x0003, 0x025d, 0x0268, - 0x0252, 0x0002, 0x0255, 0x0259, 0x0002, 0x001e, 0x1bdf, 0x1c03, - 0x0002, 0x001e, 0x1bed, 0x1c14, 0x0002, 0x0260, 0x0264, 0x0002, - 0x0015, 0x01eb, 0x236d, 0x0002, 0x001e, 0x1c2c, 0x1c32, 0x0002, - // Entry 150C0 - 150FF - 0x026b, 0x026f, 0x0002, 0x0015, 0x01eb, 0x236d, 0x0002, 0x001e, - 0x1c2c, 0x1c32, 0x0004, 0x0281, 0x027b, 0x0278, 0x027e, 0x0001, - 0x0016, 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, - 0x0001, 0x0007, 0x0277, 0x0004, 0x0292, 0x028c, 0x0289, 0x028f, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x02a3, 0x029d, 0x029a, - 0x02a0, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02e7, 0x0000, - // Entry 15100 - 1513F - 0x0000, 0x02ec, 0x0303, 0x0315, 0x0327, 0x033e, 0x0355, 0x036c, - 0x0383, 0x0395, 0x03a7, 0x03c2, 0x03d8, 0x0000, 0x0000, 0x0000, - 0x03ee, 0x0407, 0x0419, 0x0000, 0x0000, 0x0000, 0x042b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0444, 0x0458, 0x046c, - 0x0480, 0x0494, 0x04a8, 0x04bc, 0x04d0, 0x04e4, 0x04f8, 0x050c, - 0x0520, 0x0534, 0x0548, 0x055c, 0x0570, 0x0584, 0x0598, 0x05ac, - 0x05c0, 0x0000, 0x05d4, 0x0000, 0x05d9, 0x05ef, 0x0601, 0x0613, - 0x0629, 0x063b, 0x064d, 0x0663, 0x0675, 0x0687, 0x0001, 0x02e9, - // Entry 15140 - 1517F - 0x0001, 0x001e, 0x1c38, 0x0003, 0x02f0, 0x02f3, 0x02f8, 0x0001, - 0x001e, 0x1c3f, 0x0003, 0x001e, 0x1c45, 0x1c53, 0x1c63, 0x0002, - 0x02fb, 0x02ff, 0x0002, 0x001e, 0x1c73, 0x1c73, 0x0002, 0x001e, - 0x1c85, 0x1c85, 0x0003, 0x0307, 0x0000, 0x030a, 0x0001, 0x0000, - 0x1f9c, 0x0002, 0x030d, 0x0311, 0x0002, 0x001e, 0x1c94, 0x1c94, - 0x0002, 0x001e, 0x1ca2, 0x1ca2, 0x0003, 0x0319, 0x0000, 0x031c, - 0x0001, 0x0000, 0x1f9c, 0x0002, 0x031f, 0x0323, 0x0002, 0x001e, - 0x1c94, 0x1c94, 0x0002, 0x001e, 0x1c85, 0x1c85, 0x0003, 0x032b, - // Entry 15180 - 151BF - 0x032e, 0x0333, 0x0001, 0x000d, 0x03b7, 0x0003, 0x001e, 0x1cad, - 0x1cbd, 0x1ccf, 0x0002, 0x0336, 0x033a, 0x0002, 0x001e, 0x1ce1, - 0x1ce1, 0x0002, 0x001e, 0x1cf6, 0x1cf6, 0x0003, 0x0342, 0x0345, - 0x034a, 0x0001, 0x001e, 0x1d08, 0x0003, 0x001e, 0x1d0b, 0x1d16, - 0x1d23, 0x0002, 0x034d, 0x0351, 0x0002, 0x001e, 0x1d30, 0x1d30, - 0x0002, 0x001e, 0x1d3f, 0x1d3f, 0x0003, 0x0359, 0x035c, 0x0361, - 0x0001, 0x001e, 0x1d08, 0x0003, 0x001e, 0x1d0b, 0x1d16, 0x1d23, - 0x0002, 0x0364, 0x0368, 0x0002, 0x001e, 0x1d4b, 0x1d4b, 0x0002, - // Entry 151C0 - 151FF - 0x001e, 0x1d53, 0x1d53, 0x0003, 0x0370, 0x0373, 0x0378, 0x0001, - 0x001e, 0x1d5b, 0x0003, 0x001e, 0x1d5f, 0x1d6b, 0x1d79, 0x0002, - 0x037b, 0x037f, 0x0002, 0x001e, 0x1d87, 0x1d87, 0x0002, 0x001e, - 0x1d97, 0x1d97, 0x0003, 0x0387, 0x0000, 0x038a, 0x0001, 0x0000, - 0x1ffe, 0x0002, 0x038d, 0x0391, 0x0002, 0x001e, 0x1d87, 0x1d87, - 0x0002, 0x001e, 0x1d97, 0x1d97, 0x0003, 0x0399, 0x0000, 0x039c, - 0x0001, 0x0000, 0x1ffe, 0x0002, 0x039f, 0x03a3, 0x0002, 0x001e, - 0x1da4, 0x1da4, 0x0002, 0x001e, 0x1db2, 0x1db2, 0x0004, 0x03ac, - // Entry 15200 - 1523F - 0x03af, 0x03b4, 0x03bf, 0x0001, 0x001e, 0x1dbd, 0x0003, 0x001e, - 0x1dc4, 0x1dd3, 0x1de4, 0x0002, 0x03b7, 0x03bb, 0x0002, 0x001e, - 0x1df5, 0x1df5, 0x0002, 0x001e, 0x1e09, 0x1e09, 0x0001, 0x001e, - 0x1e1a, 0x0004, 0x03c7, 0x0000, 0x03ca, 0x03d5, 0x0001, 0x001e, - 0x1e25, 0x0002, 0x03cd, 0x03d1, 0x0002, 0x001e, 0x1e2a, 0x1e2a, - 0x0002, 0x001e, 0x1e3b, 0x1e3b, 0x0001, 0x001e, 0x1e49, 0x0004, - 0x03dd, 0x0000, 0x03e0, 0x03eb, 0x0001, 0x001e, 0x1e25, 0x0002, - 0x03e3, 0x03e7, 0x0002, 0x001e, 0x1e2a, 0x1e2a, 0x0002, 0x001e, - // Entry 15240 - 1527F - 0x1e3b, 0x1e3b, 0x0001, 0x001e, 0x1e1a, 0x0003, 0x03f2, 0x03f5, - 0x03fc, 0x0001, 0x001e, 0x1e52, 0x0005, 0x001e, 0x1e61, 0x1e66, - 0x1e6c, 0x1e58, 0x1e72, 0x0002, 0x03ff, 0x0403, 0x0002, 0x001e, - 0x1e7c, 0x1e7c, 0x0002, 0x001e, 0x1e8f, 0x1e8f, 0x0003, 0x040b, - 0x0000, 0x040e, 0x0001, 0x0000, 0x21ec, 0x0002, 0x0411, 0x0415, - 0x0002, 0x001e, 0x1e9f, 0x1e9f, 0x0002, 0x001e, 0x1ead, 0x1ead, - 0x0003, 0x041d, 0x0000, 0x0420, 0x0001, 0x0000, 0x21ec, 0x0002, - 0x0423, 0x0427, 0x0002, 0x001e, 0x1e9f, 0x1e9f, 0x0002, 0x001e, - // Entry 15280 - 152BF - 0x1ead, 0x1ead, 0x0001, 0x042d, 0x0001, 0x001e, 0x1eb8, 0x0003, - 0x0000, 0x0434, 0x0439, 0x0003, 0x001e, 0x1ec5, 0x1ed8, 0x1eed, - 0x0002, 0x043c, 0x0440, 0x0002, 0x001e, 0x1f02, 0x1f02, 0x0002, - 0x001e, 0x1f1a, 0x1f1a, 0x0003, 0x0000, 0x0448, 0x044d, 0x0003, - 0x001e, 0x1ec5, 0x1ed8, 0x1eed, 0x0002, 0x0450, 0x0454, 0x0002, - 0x001e, 0x1f02, 0x1f02, 0x0002, 0x001e, 0x1f1a, 0x1f1a, 0x0003, - 0x0000, 0x045c, 0x0461, 0x0003, 0x001e, 0x1ec5, 0x1ed8, 0x1eed, - 0x0002, 0x0464, 0x0468, 0x0002, 0x001e, 0x1f02, 0x1f02, 0x0002, - // Entry 152C0 - 152FF - 0x001e, 0x1f1a, 0x1f1a, 0x0003, 0x0000, 0x0470, 0x0475, 0x0003, - 0x001e, 0x1f2f, 0x1f42, 0x1f57, 0x0002, 0x0478, 0x047c, 0x0002, - 0x001e, 0x1f6c, 0x1f6c, 0x0002, 0x001e, 0x1f84, 0x1f84, 0x0003, - 0x0000, 0x0484, 0x0489, 0x0003, 0x001e, 0x1f2f, 0x1f42, 0x1f57, - 0x0002, 0x048c, 0x0490, 0x0002, 0x001e, 0x1f6c, 0x1f6c, 0x0002, - 0x001e, 0x1f84, 0x1f84, 0x0003, 0x0000, 0x0498, 0x049d, 0x0003, - 0x001e, 0x1f2f, 0x1f42, 0x1f57, 0x0002, 0x04a0, 0x04a4, 0x0002, - 0x001e, 0x1f6c, 0x1f6c, 0x0002, 0x001e, 0x1f84, 0x1f84, 0x0003, - // Entry 15300 - 1533F - 0x0000, 0x04ac, 0x04b1, 0x0003, 0x001e, 0x1f99, 0x1fac, 0x1fc1, - 0x0002, 0x04b4, 0x04b8, 0x0002, 0x001e, 0x1fd6, 0x1fd6, 0x0002, - 0x001f, 0x0000, 0x0000, 0x0003, 0x0000, 0x04c0, 0x04c5, 0x0003, - 0x001e, 0x1f99, 0x1fac, 0x1fc1, 0x0002, 0x04c8, 0x04cc, 0x0002, - 0x001e, 0x1fd6, 0x1fd6, 0x0002, 0x001f, 0x0000, 0x0000, 0x0003, - 0x0000, 0x04d4, 0x04d9, 0x0003, 0x001e, 0x1f99, 0x1fac, 0x1fc1, - 0x0002, 0x04dc, 0x04e0, 0x0002, 0x001e, 0x1fd6, 0x1fd6, 0x0002, - 0x001f, 0x0000, 0x0000, 0x0003, 0x0000, 0x04e8, 0x04ed, 0x0003, - // Entry 15340 - 1537F - 0x001f, 0x0015, 0x0028, 0x003d, 0x0002, 0x04f0, 0x04f4, 0x0002, - 0x001f, 0x0052, 0x0052, 0x0002, 0x001f, 0x006a, 0x006a, 0x0003, - 0x0000, 0x04fc, 0x0501, 0x0003, 0x001f, 0x0015, 0x0028, 0x003d, - 0x0002, 0x0504, 0x0508, 0x0002, 0x001f, 0x0052, 0x0052, 0x0002, - 0x001f, 0x006a, 0x006a, 0x0003, 0x0000, 0x0510, 0x0515, 0x0003, - 0x001f, 0x0015, 0x0028, 0x003d, 0x0002, 0x0518, 0x051c, 0x0002, - 0x001f, 0x0052, 0x0052, 0x0002, 0x001f, 0x006a, 0x006a, 0x0003, - 0x0000, 0x0524, 0x0529, 0x0003, 0x001f, 0x007f, 0x0092, 0x00a7, - // Entry 15380 - 153BF - 0x0002, 0x052c, 0x0530, 0x0002, 0x001f, 0x00bc, 0x00bc, 0x0002, - 0x001f, 0x00d4, 0x00d4, 0x0003, 0x0000, 0x0538, 0x053d, 0x0003, - 0x001f, 0x007f, 0x0092, 0x00a7, 0x0002, 0x0540, 0x0544, 0x0002, - 0x001f, 0x00bc, 0x00bc, 0x0002, 0x001f, 0x00d4, 0x00d4, 0x0003, - 0x0000, 0x054c, 0x0551, 0x0003, 0x001f, 0x007f, 0x0092, 0x00a7, - 0x0002, 0x0554, 0x0558, 0x0002, 0x001f, 0x00bc, 0x00bc, 0x0002, - 0x001f, 0x00d4, 0x00d4, 0x0003, 0x0000, 0x0560, 0x0565, 0x0003, - 0x001f, 0x00e9, 0x00f7, 0x0107, 0x0002, 0x0568, 0x056c, 0x0002, - // Entry 153C0 - 153FF - 0x001f, 0x0117, 0x0117, 0x0002, 0x001f, 0x0129, 0x0129, 0x0003, - 0x0000, 0x0574, 0x0579, 0x0003, 0x001f, 0x00e9, 0x00f7, 0x0107, - 0x0002, 0x057c, 0x0580, 0x0002, 0x001f, 0x0117, 0x0117, 0x0002, - 0x001f, 0x0129, 0x0129, 0x0003, 0x0000, 0x0588, 0x058d, 0x0003, - 0x001f, 0x00e9, 0x00f7, 0x0107, 0x0002, 0x0590, 0x0594, 0x0002, - 0x001f, 0x0117, 0x0117, 0x0002, 0x001f, 0x0129, 0x0129, 0x0003, - 0x0000, 0x059c, 0x05a1, 0x0003, 0x001f, 0x0138, 0x0149, 0x015c, - 0x0002, 0x05a4, 0x05a8, 0x0002, 0x001f, 0x016f, 0x016f, 0x0002, - // Entry 15400 - 1543F - 0x001f, 0x0185, 0x0185, 0x0003, 0x0000, 0x05b0, 0x05b5, 0x0003, - 0x001f, 0x0138, 0x0149, 0x015c, 0x0002, 0x05b8, 0x05bc, 0x0002, - 0x001f, 0x016f, 0x016f, 0x0002, 0x001f, 0x0185, 0x0185, 0x0003, - 0x0000, 0x05c4, 0x05c9, 0x0003, 0x001f, 0x0138, 0x0149, 0x015c, - 0x0002, 0x05cc, 0x05d0, 0x0002, 0x001f, 0x016f, 0x016f, 0x0002, - 0x001f, 0x0185, 0x0185, 0x0001, 0x05d6, 0x0001, 0x001f, 0x0198, - 0x0003, 0x05dd, 0x05e0, 0x05e4, 0x0001, 0x001f, 0x01ad, 0x0002, - 0x001f, 0xffff, 0x01b2, 0x0002, 0x05e7, 0x05eb, 0x0002, 0x001f, - // Entry 15440 - 1547F - 0x01c3, 0x01c3, 0x0002, 0x001f, 0x01d5, 0x01d5, 0x0003, 0x05f3, - 0x0000, 0x05f6, 0x0001, 0x0000, 0x2000, 0x0002, 0x05f9, 0x05fd, - 0x0002, 0x001f, 0x01e4, 0x01e4, 0x0002, 0x001f, 0x01f2, 0x01f2, - 0x0003, 0x0605, 0x0000, 0x0608, 0x0001, 0x0000, 0x2000, 0x0002, - 0x060b, 0x060f, 0x0002, 0x001f, 0x01e4, 0x01e4, 0x0002, 0x001f, - 0x01f2, 0x01f2, 0x0003, 0x0617, 0x061a, 0x061e, 0x0001, 0x0010, - 0x0b77, 0x0002, 0x001f, 0xffff, 0x01fd, 0x0002, 0x0621, 0x0625, - 0x0002, 0x001f, 0x020f, 0x020f, 0x0002, 0x001f, 0x0222, 0x0222, - // Entry 15480 - 154BF - 0x0003, 0x062d, 0x0000, 0x0630, 0x0001, 0x000b, 0x1250, 0x0002, - 0x0633, 0x0637, 0x0002, 0x001f, 0x0232, 0x0232, 0x0002, 0x001f, - 0x0242, 0x0242, 0x0003, 0x063f, 0x0000, 0x0642, 0x0001, 0x000b, - 0x1250, 0x0002, 0x0645, 0x0649, 0x0002, 0x001f, 0x0232, 0x0232, - 0x0002, 0x001f, 0x0242, 0x0242, 0x0003, 0x0651, 0x0654, 0x0658, - 0x0001, 0x0015, 0x0ad8, 0x0002, 0x001f, 0xffff, 0x024f, 0x0002, - 0x065b, 0x065f, 0x0002, 0x001f, 0x0256, 0x0256, 0x0002, 0x001f, - 0x026a, 0x026a, 0x0003, 0x0667, 0x0000, 0x066a, 0x0001, 0x001f, - // Entry 154C0 - 154FF - 0x027b, 0x0002, 0x066d, 0x0671, 0x0002, 0x001f, 0x027f, 0x027f, - 0x0002, 0x001f, 0x028f, 0x028f, 0x0003, 0x0679, 0x0000, 0x067c, - 0x0001, 0x0000, 0x2002, 0x0002, 0x067f, 0x0683, 0x0002, 0x001f, - 0x029c, 0x029c, 0x0002, 0x001f, 0x02aa, 0x02aa, 0x0001, 0x0689, - 0x0001, 0x001f, 0x02b5, 0x0004, 0x0691, 0x0696, 0x069b, 0x06aa, - 0x0003, 0x001c, 0x0baf, 0x20c8, 0x20cf, 0x0003, 0x001f, 0x02c0, - 0x02c6, 0x02cf, 0x0002, 0x0000, 0x069e, 0x0003, 0x0000, 0x06a5, - 0x06a2, 0x0001, 0x001f, 0x02d8, 0x0003, 0x001f, 0xffff, 0x02f2, - // Entry 15500 - 1553F - 0x0300, 0x0002, 0x0000, 0x06ad, 0x0003, 0x06b1, 0x07f1, 0x0751, - 0x009e, 0x001f, 0xffff, 0xffff, 0xffff, 0xffff, 0x0380, 0x03c8, - 0x0425, 0x045b, 0x049d, 0x04d6, 0x0524, 0x0569, 0x059c, 0x061d, - 0x064d, 0x0683, 0x06d1, 0x0704, 0x0734, 0x077c, 0x07dc, 0x0821, - 0x0872, 0x08b7, 0x08ed, 0xffff, 0xffff, 0x0942, 0xffff, 0x0983, - 0xffff, 0x09e1, 0x0a14, 0x0a44, 0x0a6e, 0xffff, 0xffff, 0x0ace, - 0x0b01, 0x0b48, 0xffff, 0xffff, 0xffff, 0x0ba7, 0xffff, 0x0bfc, - 0x0c3b, 0xffff, 0x0c95, 0x0cdd, 0x0d28, 0xffff, 0xffff, 0xffff, - // Entry 15540 - 1557F - 0xffff, 0x0db5, 0xffff, 0xffff, 0x0e08, 0x0e50, 0xffff, 0xffff, - 0x0eda, 0x0f1f, 0x0f55, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0fe7, 0x1014, 0x1047, 0x107a, 0x10aa, 0xffff, 0xffff, - 0x111c, 0xffff, 0x1151, 0xffff, 0xffff, 0x11b6, 0xffff, 0x120c, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1285, 0xffff, 0x12ca, 0x130c, - 0x1369, 0x13a8, 0xffff, 0xffff, 0xffff, 0x13f4, 0x1439, 0x1475, - 0xffff, 0xffff, 0x14d4, 0x1528, 0x1567, 0x1591, 0xffff, 0xffff, - 0x15e7, 0x161a, 0x1644, 0xffff, 0x168f, 0xffff, 0xffff, 0xffff, - // Entry 15580 - 155BF - 0xffff, 0xffff, 0x1780, 0x17b6, 0x17e3, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x187b, 0xffff, 0xffff, 0x18c6, - 0xffff, 0x18fb, 0xffff, 0x194b, 0x197b, 0x19b7, 0xffff, 0x19f5, - 0x1a34, 0xffff, 0xffff, 0xffff, 0x1a9c, 0x1acf, 0xffff, 0xffff, - 0x030d, 0x03f5, 0x05c3, 0x05ed, 0xffff, 0xffff, 0xffff, 0x172a, - 0x009e, 0x001f, 0x0334, 0x0344, 0x0355, 0x0365, 0x0394, 0x03d3, - 0x0433, 0x046d, 0x04ac, 0x04ec, 0x0537, 0x0576, 0x05a5, 0x0629, - 0x065b, 0x0699, 0x06de, 0x0710, 0x0748, 0x0798, 0x07ef, 0x0838, - // Entry 155C0 - 155FF - 0x0885, 0x08c5, 0x08fd, 0x0929, 0x0935, 0x0950, 0x0978, 0x0997, - 0x09cb, 0x09ee, 0x0a20, 0x0a4e, 0x0a7f, 0x0aad, 0x0abd, 0x0adb, - 0x0b12, 0x0b52, 0x0b72, 0x0b7d, 0x0b98, 0x0bbb, 0x0bef, 0x0c0d, - 0x0c4b, 0x0c77, 0x0ca9, 0x0cf2, 0x0d33, 0x0d55, 0x0d6c, 0x0d97, - 0x0da6, 0x0dc1, 0x0de5, 0x0df9, 0x0e1c, 0x0e68, 0x0eb6, 0x0ecf, - 0x0eed, 0x0f2d, 0x0f5f, 0x0f7f, 0x0f89, 0x0f9b, 0x0fa9, 0x0fbd, - 0x0fd0, 0x0ff2, 0x1021, 0x1054, 0x1086, 0x10c8, 0x10f2, 0x1105, - 0x1126, 0x1146, 0x1162, 0x1190, 0x11a2, 0x11c8, 0x11f8, 0x1219, - // Entry 15600 - 1563F - 0x123f, 0x1252, 0x125f, 0x1270, 0x1294, 0x12be, 0x12dc, 0x1327, - 0x137a, 0x13b3, 0x13d5, 0x13df, 0x13e9, 0x1407, 0x1449, 0x1487, - 0x14b7, 0x14c0, 0x14ec, 0x1539, 0x1571, 0x159f, 0x15c7, 0x15d1, - 0x15f4, 0x1624, 0x1652, 0x167a, 0x16b1, 0x1701, 0x170f, 0x171b, - 0x1766, 0x1774, 0x178e, 0x17c1, 0x17ed, 0x180d, 0x181b, 0x1831, - 0x1846, 0x1859, 0x1866, 0x1870, 0x1886, 0x18a8, 0x18ba, 0x18d0, - 0x18f0, 0x190e, 0x1940, 0x1957, 0x198b, 0x19c3, 0x19e7, 0x1a06, - 0x1a43, 0x1a6d, 0x1a79, 0x1a86, 0x1aa9, 0x1ae2, 0x0ea4, 0xffff, - // Entry 15640 - 1567F - 0x0316, 0x0401, 0x05cd, 0x05f9, 0xffff, 0xffff, 0xffff, 0x173a, - 0x009e, 0x001f, 0xffff, 0xffff, 0xffff, 0xffff, 0x03b0, 0x03e6, - 0x0449, 0x0487, 0x04c3, 0x050a, 0x0552, 0x058b, 0x05b6, 0x063d, - 0x0671, 0x06b7, 0x06f3, 0x0724, 0x0764, 0x07bc, 0x080a, 0x0857, - 0x08a0, 0x08db, 0x0915, 0xffff, 0xffff, 0x0966, 0xffff, 0x09b3, - 0xffff, 0x0a03, 0x0a34, 0x0a60, 0x0a98, 0xffff, 0xffff, 0x0af0, - 0x0b2b, 0x0b64, 0xffff, 0xffff, 0xffff, 0x0bd7, 0xffff, 0x0c26, - 0x0c63, 0xffff, 0x0cc5, 0x0d0f, 0x0d46, 0xffff, 0xffff, 0xffff, - // Entry 15680 - 156BF - 0xffff, 0x0dd5, 0xffff, 0xffff, 0x0e38, 0x0e88, 0xffff, 0xffff, - 0x0f08, 0x0f43, 0x0f71, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1005, 0x1036, 0x1069, 0x109a, 0x10df, 0xffff, 0xffff, - 0x1138, 0xffff, 0x117b, 0xffff, 0xffff, 0x11e2, 0xffff, 0x122e, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ab, 0xffff, 0x12f6, 0x134a, - 0x1393, 0x13c6, 0xffff, 0xffff, 0xffff, 0x1422, 0x1461, 0x14a1, - 0xffff, 0xffff, 0x150c, 0x1552, 0x1583, 0x15b5, 0xffff, 0xffff, - 0x1609, 0x1636, 0x1668, 0xffff, 0x16db, 0xffff, 0xffff, 0xffff, - // Entry 156C0 - 156FF - 0xffff, 0xffff, 0x17a4, 0x17d4, 0x17ff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1899, 0xffff, 0xffff, 0x18e2, - 0xffff, 0x1929, 0xffff, 0x196b, 0x19a3, 0x19d7, 0xffff, 0x1a1f, - 0x1a5a, 0xffff, 0xffff, 0xffff, 0x1abe, 0x1afd, 0xffff, 0xffff, - 0x0327, 0x0415, 0x05df, 0x060d, 0xffff, 0xffff, 0xffff, 0x1752, - 0x0003, 0x0004, 0x0247, 0x062d, 0x0012, 0x0017, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0024, 0x004f, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0239, 0x0005, - // Entry 15700 - 1573F - 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, - 0x0021, 0x0001, 0x001f, 0x1b14, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x002d, 0x0000, 0x003e, 0x0004, 0x003b, 0x0035, - 0x0032, 0x0038, 0x0001, 0x001f, 0x1b17, 0x0001, 0x001f, 0x1b3b, - 0x0001, 0x001f, 0x1b59, 0x0001, 0x0000, 0x04af, 0x0004, 0x004c, - 0x0046, 0x0043, 0x0049, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0058, 0x00bd, 0x0114, 0x0149, 0x01ec, 0x0206, 0x0217, 0x0228, - // Entry 15740 - 1577F - 0x0002, 0x005b, 0x008c, 0x0003, 0x005f, 0x006e, 0x007d, 0x000d, - 0x001f, 0xffff, 0x1b75, 0x1b7a, 0x1b7f, 0x1b84, 0x1b89, 0x1b8e, - 0x1b93, 0x1b98, 0x1b9d, 0x1ba2, 0x1ba7, 0x1bac, 0x000d, 0x0000, - 0xffff, 0x22ea, 0x22ec, 0x22d9, 0x2382, 0x22d9, 0x214e, 0x22ea, - 0x2382, 0x2055, 0x22ea, 0x2382, 0x2382, 0x000d, 0x001f, 0xffff, - 0x1bb1, 0x1bbb, 0x1bc3, 0x1bcb, 0x1bd3, 0x1bdb, 0x1be2, 0x1bea, - 0x1bf2, 0x1bf9, 0x1bff, 0x1c06, 0x0003, 0x0090, 0x009f, 0x00ae, - 0x000d, 0x001f, 0xffff, 0x1b75, 0x1b7a, 0x1b7f, 0x1b84, 0x1b89, - // Entry 15780 - 157BF - 0x1b8e, 0x1b93, 0x1b98, 0x1b9d, 0x1ba2, 0x1ba7, 0x1bac, 0x000d, - 0x0000, 0xffff, 0x22ea, 0x22ec, 0x22d9, 0x2382, 0x22d9, 0x214e, - 0x22ea, 0x2382, 0x2055, 0x22ea, 0x2382, 0x2382, 0x000d, 0x001f, - 0xffff, 0x1bb1, 0x1c0e, 0x1c16, 0x1c1e, 0x1c26, 0x1c2e, 0x1c35, - 0x1c3d, 0x1c45, 0x1c4c, 0x1c52, 0x1c59, 0x0002, 0x00c0, 0x00ea, - 0x0005, 0x00c6, 0x00cf, 0x00e1, 0x0000, 0x00d8, 0x0007, 0x001f, - 0x1c61, 0x1c65, 0x1c69, 0x1c6d, 0x1c71, 0x1c75, 0x1c79, 0x0007, - 0x0000, 0x2055, 0x2382, 0x2382, 0x2382, 0x22ec, 0x22ec, 0x228e, - // Entry 157C0 - 157FF - 0x0007, 0x001f, 0x1c61, 0x1c65, 0x1c69, 0x1c6d, 0x1c71, 0x1c75, - 0x1c79, 0x0007, 0x001f, 0x1c7d, 0x1c85, 0x1c90, 0x1c9a, 0x1ca5, - 0x1cae, 0x1cb7, 0x0005, 0x00f0, 0x00f9, 0x010b, 0x0000, 0x0102, - 0x0007, 0x001f, 0x1c61, 0x1c65, 0x1c69, 0x1c6d, 0x1c71, 0x1c75, - 0x1c79, 0x0007, 0x0000, 0x2055, 0x2382, 0x2382, 0x2382, 0x22ec, - 0x22ec, 0x228e, 0x0007, 0x001f, 0x1c61, 0x1c65, 0x1c69, 0x1c6d, - 0x1c71, 0x1c75, 0x1c79, 0x0007, 0x001f, 0x1cc1, 0x1cc9, 0x1cd4, - 0x1cde, 0x1ce9, 0x1cf2, 0x1cfb, 0x0002, 0x0117, 0x0130, 0x0003, - // Entry 15800 - 1583F - 0x011b, 0x0122, 0x0129, 0x0005, 0x001f, 0xffff, 0x1d05, 0x1d09, - 0x1d0d, 0x1d11, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x001f, 0xffff, 0x1d15, 0x1d24, 0x1d33, 0x1d42, - 0x0003, 0x0134, 0x013b, 0x0142, 0x0005, 0x001f, 0xffff, 0x1d05, - 0x1d09, 0x1d0d, 0x1d11, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x001f, 0xffff, 0x1d15, 0x1d24, 0x1d33, - 0x1d42, 0x0002, 0x014c, 0x019c, 0x0003, 0x0150, 0x0000, 0x0176, - 0x000a, 0x015e, 0x0161, 0x015b, 0x0164, 0x016a, 0x0170, 0x0173, - // Entry 15840 - 1587F - 0x0000, 0x0167, 0x016d, 0x0001, 0x001f, 0x1d51, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x001f, 0x1d5a, 0x0001, - 0x001f, 0x1d60, 0x0001, 0x001f, 0x1d68, 0x0001, 0x001f, 0x1d70, - 0x0001, 0x001f, 0x1d78, 0x0001, 0x001f, 0x1d80, 0x000a, 0x0184, - 0x0187, 0x0181, 0x018a, 0x0190, 0x0196, 0x0199, 0x0000, 0x018d, - 0x0193, 0x0001, 0x001f, 0x1d51, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x001f, 0x1d85, 0x0001, 0x001f, 0x1d60, - 0x0001, 0x001f, 0x1d90, 0x0001, 0x001f, 0x1d9a, 0x0001, 0x001f, - // Entry 15880 - 158BF - 0x1da7, 0x0001, 0x001f, 0x1db1, 0x0003, 0x01a0, 0x0000, 0x01c6, - 0x000a, 0x01ae, 0x01b1, 0x01ab, 0x01b4, 0x01ba, 0x01c0, 0x01c3, - 0x0000, 0x01b7, 0x01bd, 0x0001, 0x001f, 0x1d51, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x001f, 0x1d5a, 0x0001, - 0x001f, 0x1db8, 0x0001, 0x001f, 0x1d68, 0x0001, 0x001f, 0x1d70, - 0x0001, 0x001f, 0x1d78, 0x0001, 0x001f, 0x1dbe, 0x000a, 0x01d4, - 0x01d7, 0x01d1, 0x01da, 0x01e0, 0x01e6, 0x01e9, 0x0000, 0x01dd, - 0x01e3, 0x0001, 0x001f, 0x1d51, 0x0001, 0x0000, 0x04ef, 0x0001, - // Entry 158C0 - 158FF - 0x0000, 0x04f2, 0x0001, 0x001f, 0x1dc3, 0x0001, 0x001f, 0x1db8, - 0x0001, 0x001f, 0x1dcd, 0x0001, 0x001f, 0x1dd6, 0x0001, 0x001f, - 0x1de2, 0x0001, 0x001f, 0x1dbe, 0x0003, 0x01fb, 0x0000, 0x01f0, - 0x0002, 0x01f3, 0x01f7, 0x0002, 0x001f, 0x1deb, 0x1e02, 0x0002, - 0x001f, 0x1df0, 0x1e11, 0x0002, 0x01fe, 0x0202, 0x0002, 0x001f, - 0x1deb, 0x1e21, 0x0002, 0x001f, 0x1e1b, 0x1e26, 0x0004, 0x0214, - 0x020e, 0x020b, 0x0211, 0x0001, 0x001f, 0x1e2a, 0x0001, 0x001f, - 0x1e42, 0x0001, 0x0000, 0x0514, 0x0001, 0x001f, 0x1e54, 0x0004, - // Entry 15900 - 1593F - 0x0225, 0x021f, 0x021c, 0x0222, 0x0001, 0x001f, 0x1e5b, 0x0001, - 0x001f, 0x1e6b, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x0236, 0x0230, 0x022d, 0x0233, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x023f, 0x0001, - 0x0241, 0x0001, 0x0243, 0x0002, 0x001f, 0x1e78, 0x1e88, 0x0040, - 0x0288, 0x0000, 0x0000, 0x028d, 0x02a4, 0x02bb, 0x02d2, 0x02e9, - 0x02fb, 0x030d, 0x0324, 0x0336, 0x0348, 0x0363, 0x0379, 0x0000, - // Entry 15940 - 1597F - 0x0000, 0x0000, 0x038f, 0x03a8, 0x03ba, 0x0000, 0x0000, 0x0000, - 0x03cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d1, 0x03e5, - 0x03f9, 0x040d, 0x0421, 0x0435, 0x0449, 0x045d, 0x0471, 0x0485, - 0x0499, 0x04ad, 0x04c1, 0x04d5, 0x04e9, 0x04fd, 0x0511, 0x0525, - 0x0539, 0x054d, 0x0561, 0x0000, 0x0575, 0x0000, 0x057a, 0x0590, - 0x05a2, 0x05b4, 0x05ca, 0x05dc, 0x05ee, 0x0604, 0x0616, 0x0628, - 0x0001, 0x028a, 0x0001, 0x001f, 0x1e8f, 0x0003, 0x0291, 0x0294, - 0x0299, 0x0001, 0x001f, 0x1e94, 0x0003, 0x001f, 0x1e9a, 0x1ea8, - // Entry 15980 - 159BF - 0x1eaf, 0x0002, 0x029c, 0x02a0, 0x0002, 0x001f, 0x1ebe, 0x1ebe, - 0x0002, 0x001f, 0x1ecd, 0x1ecd, 0x0003, 0x02a8, 0x02ab, 0x02b0, - 0x0001, 0x001f, 0x1e94, 0x0003, 0x001f, 0x1e9a, 0x1ea8, 0x1eaf, - 0x0002, 0x02b3, 0x02b7, 0x0002, 0x001f, 0x1ebe, 0x1ebe, 0x0002, - 0x001f, 0x1ecd, 0x1ecd, 0x0003, 0x02bf, 0x02c2, 0x02c7, 0x0001, - 0x001f, 0x1e94, 0x0003, 0x001f, 0x1e9a, 0x1ea8, 0x1eaf, 0x0002, - 0x02ca, 0x02ce, 0x0002, 0x001f, 0x1ebe, 0x1ebe, 0x0002, 0x001f, - 0x1ecd, 0x1ecd, 0x0003, 0x02d6, 0x02d9, 0x02de, 0x0001, 0x001f, - // Entry 159C0 - 159FF - 0x1edc, 0x0003, 0x001f, 0x1ee8, 0x1efc, 0x1f0b, 0x0002, 0x02e1, - 0x02e5, 0x0002, 0x001f, 0x1f20, 0x1f20, 0x0002, 0x001f, 0x1f35, - 0x1f35, 0x0003, 0x02ed, 0x0000, 0x02f0, 0x0001, 0x001f, 0x1f4a, - 0x0002, 0x02f3, 0x02f7, 0x0002, 0x001f, 0x1f20, 0x1f20, 0x0002, - 0x001f, 0x1f35, 0x1f35, 0x0003, 0x02ff, 0x0000, 0x0302, 0x0001, - 0x001f, 0x1f4a, 0x0002, 0x0305, 0x0309, 0x0002, 0x001f, 0x1f20, - 0x1f20, 0x0002, 0x001f, 0x1f35, 0x1f35, 0x0003, 0x0311, 0x0314, - 0x0319, 0x0001, 0x001f, 0x1f53, 0x0003, 0x001f, 0x1f5d, 0x1f6f, - // Entry 15A00 - 15A3F - 0x1f7c, 0x0002, 0x031c, 0x0320, 0x0002, 0x001f, 0x1f8f, 0x1f8f, - 0x0002, 0x001f, 0x1fa2, 0x1fa2, 0x0003, 0x0328, 0x0000, 0x032b, - 0x0001, 0x001f, 0x1fb5, 0x0002, 0x032e, 0x0332, 0x0002, 0x001f, - 0x1f8f, 0x1f8f, 0x0002, 0x001f, 0x1fa2, 0x1fa2, 0x0003, 0x033a, - 0x0000, 0x033d, 0x0001, 0x001f, 0x1fb5, 0x0002, 0x0340, 0x0344, - 0x0002, 0x001f, 0x1f8f, 0x1f8f, 0x0002, 0x001f, 0x1fa2, 0x1fa2, - 0x0004, 0x034d, 0x0350, 0x0355, 0x0360, 0x0001, 0x001f, 0x1fba, - 0x0003, 0x001f, 0x1fc0, 0x1fce, 0x1fd7, 0x0002, 0x0358, 0x035c, - // Entry 15A40 - 15A7F - 0x0002, 0x001f, 0x1fe6, 0x1fe6, 0x0002, 0x0020, 0x0000, 0x0000, - 0x0001, 0x0020, 0x000f, 0x0004, 0x0368, 0x0000, 0x036b, 0x0376, - 0x0001, 0x0020, 0x0019, 0x0002, 0x036e, 0x0372, 0x0002, 0x001f, - 0x1fe6, 0x1fe6, 0x0002, 0x0020, 0x0000, 0x0000, 0x0001, 0x0020, - 0x000f, 0x0004, 0x037e, 0x0000, 0x0381, 0x038c, 0x0001, 0x0020, - 0x0019, 0x0002, 0x0384, 0x0388, 0x0002, 0x001f, 0x1fe6, 0x1fe6, - 0x0002, 0x0020, 0x0000, 0x0000, 0x0001, 0x0020, 0x000f, 0x0003, - 0x0393, 0x0396, 0x039d, 0x0001, 0x0020, 0x001e, 0x0005, 0x0020, - // Entry 15A80 - 15ABF - 0x002e, 0x0033, 0x0038, 0x0024, 0x003e, 0x0002, 0x03a0, 0x03a4, - 0x0002, 0x0020, 0x0043, 0x0043, 0x0002, 0x0020, 0x0052, 0x0052, - 0x0003, 0x03ac, 0x0000, 0x03af, 0x0001, 0x0020, 0x0061, 0x0002, - 0x03b2, 0x03b6, 0x0002, 0x0020, 0x0043, 0x0043, 0x0002, 0x0020, - 0x0052, 0x0052, 0x0003, 0x03be, 0x0000, 0x03c1, 0x0001, 0x0020, - 0x0061, 0x0002, 0x03c4, 0x03c8, 0x0002, 0x0020, 0x0043, 0x0043, - 0x0002, 0x0020, 0x0052, 0x0052, 0x0001, 0x03ce, 0x0001, 0x0020, - 0x0065, 0x0003, 0x0000, 0x03d5, 0x03da, 0x0003, 0x0020, 0x006e, - // Entry 15AC0 - 15AFF - 0x007e, 0x0089, 0x0002, 0x03dd, 0x03e1, 0x0002, 0x0020, 0x009a, - 0x009a, 0x0002, 0x0020, 0x00ab, 0x00ab, 0x0003, 0x0000, 0x03e9, - 0x03ee, 0x0003, 0x0020, 0x006e, 0x007e, 0x0089, 0x0002, 0x03f1, - 0x03f5, 0x0002, 0x0020, 0x009a, 0x009a, 0x0002, 0x0020, 0x00ab, - 0x00ab, 0x0003, 0x0000, 0x03fd, 0x0402, 0x0003, 0x0020, 0x006e, - 0x007e, 0x0089, 0x0002, 0x0405, 0x0409, 0x0002, 0x0020, 0x009a, - 0x009a, 0x0002, 0x0020, 0x00ab, 0x00ab, 0x0003, 0x0000, 0x0411, - 0x0416, 0x0003, 0x0020, 0x00bc, 0x00cf, 0x00dd, 0x0002, 0x0419, - // Entry 15B00 - 15B3F - 0x041d, 0x0002, 0x0020, 0x00f1, 0x00f1, 0x0002, 0x0020, 0x0105, - 0x0105, 0x0003, 0x0000, 0x0425, 0x042a, 0x0003, 0x0020, 0x00bc, - 0x00cf, 0x00dd, 0x0002, 0x042d, 0x0431, 0x0002, 0x0020, 0x00f1, - 0x00f1, 0x0002, 0x0020, 0x0105, 0x0105, 0x0003, 0x0000, 0x0439, - 0x043e, 0x0003, 0x0020, 0x00bc, 0x00cf, 0x00dd, 0x0002, 0x0441, - 0x0445, 0x0002, 0x0020, 0x00f1, 0x00f1, 0x0002, 0x0020, 0x0105, - 0x0105, 0x0003, 0x0000, 0x044d, 0x0452, 0x0003, 0x0020, 0x0119, - 0x012b, 0x0138, 0x0002, 0x0455, 0x0459, 0x0002, 0x0020, 0x014b, - // Entry 15B40 - 15B7F - 0x014b, 0x0002, 0x0020, 0x015e, 0x015e, 0x0003, 0x0000, 0x0461, - 0x0466, 0x0003, 0x0020, 0x0119, 0x012b, 0x0138, 0x0002, 0x0469, - 0x046d, 0x0002, 0x0020, 0x014b, 0x014b, 0x0002, 0x0020, 0x015e, - 0x015e, 0x0003, 0x0000, 0x0475, 0x047a, 0x0003, 0x0020, 0x0119, - 0x012b, 0x0138, 0x0002, 0x047d, 0x0481, 0x0002, 0x0020, 0x014b, - 0x014b, 0x0002, 0x0020, 0x015e, 0x015e, 0x0003, 0x0000, 0x0489, - 0x048e, 0x0003, 0x0020, 0x0171, 0x0184, 0x0192, 0x0002, 0x0491, - 0x0495, 0x0002, 0x0020, 0x01a6, 0x01a6, 0x0002, 0x0020, 0x01ba, - // Entry 15B80 - 15BBF - 0x01ba, 0x0003, 0x0000, 0x049d, 0x04a2, 0x0003, 0x0020, 0x0171, - 0x0184, 0x0192, 0x0002, 0x04a5, 0x04a9, 0x0002, 0x0020, 0x01a6, - 0x01a6, 0x0002, 0x0020, 0x01ba, 0x01ba, 0x0003, 0x0000, 0x04b1, - 0x04b6, 0x0003, 0x0020, 0x0171, 0x0184, 0x0192, 0x0002, 0x04b9, - 0x04bd, 0x0002, 0x0020, 0x01a6, 0x01a6, 0x0002, 0x0020, 0x01ba, - 0x01ba, 0x0003, 0x0000, 0x04c5, 0x04ca, 0x0003, 0x0020, 0x01ce, - 0x01df, 0x01eb, 0x0002, 0x04cd, 0x04d1, 0x0002, 0x0020, 0x01fd, - 0x01fd, 0x0002, 0x0020, 0x020f, 0x020f, 0x0003, 0x0000, 0x04d9, - // Entry 15BC0 - 15BFF - 0x04de, 0x0003, 0x0020, 0x01ce, 0x01df, 0x01eb, 0x0002, 0x04e1, - 0x04e5, 0x0002, 0x0020, 0x01fd, 0x01fd, 0x0002, 0x0020, 0x020f, - 0x020f, 0x0003, 0x0000, 0x04ed, 0x04f2, 0x0003, 0x0020, 0x01ce, - 0x01df, 0x01eb, 0x0002, 0x04f5, 0x04f9, 0x0002, 0x0020, 0x01fd, - 0x01fd, 0x0002, 0x0020, 0x020f, 0x020f, 0x0003, 0x0000, 0x0501, - 0x0506, 0x0003, 0x0020, 0x0221, 0x0232, 0x023e, 0x0002, 0x0509, - 0x050d, 0x0002, 0x0020, 0x0250, 0x0250, 0x0002, 0x0020, 0x0262, - 0x0262, 0x0003, 0x0000, 0x0515, 0x051a, 0x0003, 0x0020, 0x0221, - // Entry 15C00 - 15C3F - 0x0232, 0x023e, 0x0002, 0x051d, 0x0521, 0x0002, 0x0020, 0x0250, - 0x0250, 0x0002, 0x0020, 0x0262, 0x0262, 0x0003, 0x0000, 0x0529, - 0x052e, 0x0003, 0x0020, 0x0221, 0x0232, 0x023e, 0x0002, 0x0531, - 0x0535, 0x0002, 0x0020, 0x0250, 0x0250, 0x0002, 0x0020, 0x0262, - 0x0262, 0x0003, 0x0000, 0x053d, 0x0542, 0x0003, 0x0020, 0x0274, - 0x0286, 0x0293, 0x0002, 0x0545, 0x0549, 0x0002, 0x0020, 0x02a6, - 0x02a6, 0x0002, 0x0020, 0x02b9, 0x02b9, 0x0003, 0x0000, 0x0551, - 0x0556, 0x0003, 0x0020, 0x0274, 0x0286, 0x0293, 0x0002, 0x0559, - // Entry 15C40 - 15C7F - 0x055d, 0x0002, 0x0020, 0x02a6, 0x02a6, 0x0002, 0x0020, 0x02b9, - 0x02b9, 0x0003, 0x0000, 0x0565, 0x056a, 0x0003, 0x0020, 0x0274, - 0x0286, 0x0293, 0x0002, 0x056d, 0x0571, 0x0002, 0x0020, 0x02a6, - 0x02a6, 0x0002, 0x0020, 0x02b9, 0x02b9, 0x0001, 0x0577, 0x0001, - 0x0020, 0x02cc, 0x0003, 0x057e, 0x0581, 0x0585, 0x0001, 0x0020, - 0x02d3, 0x0002, 0x0020, 0xffff, 0x02d9, 0x0002, 0x0588, 0x058c, - 0x0002, 0x0020, 0x02e6, 0x02e6, 0x0002, 0x0020, 0x02f5, 0x02f5, - 0x0003, 0x0594, 0x0000, 0x0597, 0x0001, 0x0000, 0x2143, 0x0002, - // Entry 15C80 - 15CBF - 0x059a, 0x059e, 0x0002, 0x0020, 0x02e6, 0x02e6, 0x0002, 0x0020, - 0x02f5, 0x02f5, 0x0003, 0x05a6, 0x0000, 0x05a9, 0x0001, 0x0000, - 0x2143, 0x0002, 0x05ac, 0x05b0, 0x0002, 0x0020, 0x02e6, 0x02e6, - 0x0002, 0x0020, 0x02f5, 0x02f5, 0x0003, 0x05b8, 0x05bb, 0x05bf, - 0x0001, 0x0020, 0x0304, 0x0002, 0x0020, 0xffff, 0x030c, 0x0002, - 0x05c2, 0x05c6, 0x0002, 0x0020, 0x031b, 0x031b, 0x0002, 0x0020, - 0x032c, 0x032c, 0x0003, 0x05ce, 0x0000, 0x05d1, 0x0001, 0x000b, - 0x1250, 0x0002, 0x05d4, 0x05d8, 0x0002, 0x0020, 0x031b, 0x031b, - // Entry 15CC0 - 15CFF - 0x0002, 0x0020, 0x032c, 0x032c, 0x0003, 0x05e0, 0x0000, 0x05e3, - 0x0001, 0x000b, 0x1250, 0x0002, 0x05e6, 0x05ea, 0x0002, 0x0020, - 0x031b, 0x031b, 0x0002, 0x0020, 0x032c, 0x032c, 0x0003, 0x05f2, - 0x05f5, 0x05f9, 0x0001, 0x0020, 0x033d, 0x0002, 0x0020, 0xffff, - 0x0346, 0x0002, 0x05fc, 0x0600, 0x0002, 0x0020, 0x034c, 0x034c, - 0x0002, 0x0020, 0x035e, 0x035e, 0x0003, 0x0608, 0x0000, 0x060b, - 0x0001, 0x0000, 0x2002, 0x0002, 0x060e, 0x0612, 0x0002, 0x0020, - 0x034c, 0x034c, 0x0002, 0x0020, 0x035e, 0x035e, 0x0003, 0x061a, - // Entry 15D00 - 15D3F - 0x0000, 0x061d, 0x0001, 0x0000, 0x2002, 0x0002, 0x0620, 0x0624, - 0x0002, 0x0020, 0x034c, 0x034c, 0x0002, 0x0020, 0x035e, 0x035e, - 0x0001, 0x062a, 0x0001, 0x0020, 0x0370, 0x0004, 0x0632, 0x0637, - 0x063c, 0x064b, 0x0003, 0x0000, 0x1dc7, 0x238b, 0x2392, 0x0003, - 0x0020, 0x037a, 0x038f, 0x03a5, 0x0002, 0x0000, 0x063f, 0x0003, - 0x0000, 0x0646, 0x0643, 0x0001, 0x0020, 0x03bd, 0x0003, 0x0020, - 0xffff, 0x03d9, 0x03ef, 0x0002, 0x0814, 0x064e, 0x0003, 0x06e8, - 0x077e, 0x0652, 0x0094, 0x0020, 0x040d, 0x0420, 0x0438, 0x044f, - // Entry 15D40 - 15D7F - 0x0481, 0x04d8, 0x0523, 0x0581, 0x05f8, 0x0673, 0x06f1, 0x075a, - 0x0799, 0x07d2, 0x0816, 0x0873, 0x08d6, 0x091c, 0x0973, 0x09db, - 0x0a49, 0x0aaa, 0x0b07, 0x0b4e, 0x0b94, 0x0bcc, 0x0bdb, 0x0c00, - 0x0c32, 0x0c5f, 0x0c95, 0x0cc0, 0x0cfe, 0x0d38, 0x0d77, 0x0dad, - 0x0dc6, 0x0def, 0x0e38, 0x0e90, 0x0ec2, 0x0ed1, 0x0eec, 0x0f1b, - 0x0f55, 0x0f7f, 0x0fd6, 0x1014, 0x104e, 0x10ad, 0x1100, 0x112a, - 0x1143, 0x117d, 0x1191, 0x11b3, 0x11e3, 0x11fd, 0x1239, 0x12ac, - 0x1302, 0x131a, 0x134f, 0x13bc, 0x13fc, 0x1428, 0x1436, 0x144c, - // Entry 15D80 - 15DBF - 0x145e, 0x1479, 0x1493, 0x14bd, 0x14fc, 0x153d, 0x157b, 0x15cc, - 0x161e, 0x1639, 0x1665, 0x1691, 0x16b9, 0x16f3, 0x1707, 0x1730, - 0x1764, 0x1791, 0x17c1, 0x17d2, 0x17e4, 0x17f6, 0x1822, 0x1854, - 0x1886, 0x18f8, 0x1959, 0x19a1, 0x19cd, 0x19df, 0x19ed, 0x1a14, - 0x1a6b, 0x1abc, 0x1af2, 0x1aff, 0x1b35, 0x1b96, 0x1be2, 0x1c1f, - 0x1c51, 0x1c5f, 0x1c8a, 0x1cc9, 0x1d06, 0x1d3c, 0x1d7c, 0x1dd8, - 0x1dea, 0x1df9, 0x1e0c, 0x1e26, 0x1e4b, 0x1e8c, 0x1ec8, 0x1ef4, - 0x1f10, 0x1f2d, 0x1f47, 0x1f5c, 0x1f6c, 0x1f7a, 0x1f98, 0x1fc6, - // Entry 15DC0 - 15DFF - 0x1fda, 0x1ff8, 0x2024, 0x2048, 0x2082, 0x20a1, 0x20e4, 0x212a, - 0x215a, 0x2185, 0x21d2, 0x2208, 0x2218, 0x222c, 0x225f, 0x22ac, - 0x0094, 0x0020, 0xffff, 0xffff, 0xffff, 0xffff, 0x0467, 0x04c5, - 0x050e, 0x055d, 0x05d5, 0x064e, 0x06cd, 0x0749, 0x078c, 0x07c3, - 0x0800, 0x0852, 0x08c6, 0x0906, 0x0958, 0x09b9, 0x0a2f, 0x0a8d, - 0x0af4, 0x0b3d, 0x0b80, 0xffff, 0xffff, 0x0bef, 0xffff, 0x0c4c, - 0xffff, 0x0cb0, 0x0cf0, 0x0d2a, 0x0d64, 0xffff, 0xffff, 0x0dde, - 0x0e21, 0x0e7f, 0xffff, 0xffff, 0xffff, 0x0f06, 0xffff, 0x0f67, - // Entry 15E00 - 15E3F - 0x0fbf, 0xffff, 0x1034, 0x1092, 0x10f3, 0xffff, 0xffff, 0xffff, - 0xffff, 0x11a3, 0xffff, 0xffff, 0x1219, 0x1289, 0xffff, 0xffff, - 0x1329, 0x13ab, 0x13ee, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x14b0, 0x14e7, 0x152e, 0x156b, 0x15ab, 0xffff, 0xffff, - 0x1657, 0xffff, 0x16a0, 0xffff, 0xffff, 0x171e, 0xffff, 0x177d, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1811, 0xffff, 0x1864, 0x18da, - 0x1944, 0x1993, 0xffff, 0xffff, 0xffff, 0x19fb, 0x1a54, 0x1aa9, - 0xffff, 0xffff, 0x1b19, 0x1b7d, 0x1bd0, 0x1c0e, 0xffff, 0xffff, - // Entry 15E40 - 15E7F - 0x1c79, 0x1cbc, 0x1cf3, 0xffff, 0x1d56, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1e36, 0x1e7d, 0x1eba, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1f89, 0xffff, 0xffff, 0x1fea, - 0xffff, 0x2033, 0xffff, 0x2091, 0x20d1, 0x211a, 0xffff, 0x216c, - 0x21bf, 0xffff, 0xffff, 0xffff, 0x224a, 0x2291, 0x0094, 0x0020, - 0xffff, 0xffff, 0xffff, 0xffff, 0x04a5, 0x04f5, 0x0542, 0x05ab, - 0x0625, 0x06a2, 0x071f, 0x0775, 0x07b0, 0x07eb, 0x0836, 0x089f, - 0x08f0, 0x093c, 0x0998, 0x0a07, 0x0a6d, 0x0ad1, 0x0b24, 0x0b69, - // Entry 15E80 - 15EBF - 0x0bb2, 0xffff, 0xffff, 0x0c1b, 0xffff, 0x0c7c, 0xffff, 0x0cda, - 0x0d16, 0x0d50, 0x0d94, 0xffff, 0xffff, 0x0e0a, 0x0e59, 0x0eab, - 0xffff, 0xffff, 0xffff, 0x0f3a, 0xffff, 0x0fa1, 0x0ff7, 0xffff, - 0x1072, 0x10d2, 0x1117, 0xffff, 0xffff, 0xffff, 0xffff, 0x11cd, - 0xffff, 0xffff, 0x1263, 0x12d9, 0xffff, 0xffff, 0x137f, 0x13d7, - 0x1414, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x14d4, - 0x1517, 0x1556, 0x1595, 0x15f7, 0xffff, 0xffff, 0x167d, 0xffff, - 0x16d8, 0xffff, 0xffff, 0x174c, 0xffff, 0x17ab, 0xffff, 0xffff, - // Entry 15EC0 - 15EFF - 0xffff, 0xffff, 0x183d, 0xffff, 0x18b2, 0x1920, 0x1978, 0x19b9, - 0xffff, 0xffff, 0xffff, 0x1a36, 0x1a8c, 0x1ad9, 0xffff, 0xffff, - 0x1b5b, 0x1bb5, 0x1bfa, 0x1c3a, 0xffff, 0xffff, 0x1ca5, 0x1ce0, - 0x1d23, 0xffff, 0x1dac, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1e66, 0x1ea5, 0x1ee0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1fb1, 0xffff, 0xffff, 0x2010, 0xffff, 0x2067, - 0xffff, 0x20bb, 0x2101, 0x2144, 0xffff, 0x21a4, 0x21ef, 0xffff, - 0xffff, 0xffff, 0x227a, 0x22cd, 0x0003, 0x0818, 0x0887, 0x084b, - // Entry 15F00 - 15F3F - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, - 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 15F40 - 15F7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2788, 0x0031, - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 15F80 - 15FBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, - 0xffff, 0x13e3, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, - // Entry 15FC0 - 15FFF - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, - 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, - 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, - 0x000d, 0x0021, 0xffff, 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, - 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, 0x002d, 0x000d, - 0x0021, 0xffff, 0x0032, 0x003d, 0x0049, 0x0055, 0x0061, 0x006d, - 0x007b, 0x008b, 0x0096, 0x00a3, 0x00af, 0x00c4, 0x0002, 0x0000, - 0x0057, 0x000d, 0x0000, 0xffff, 0x1f98, 0x2145, 0x200a, 0x1f96, - // Entry 16000 - 1603F - 0x2000, 0x2002, 0x2004, 0x1f9a, 0x22e1, 0x1f9c, 0x2008, 0x2145, - 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, - 0x0021, 0x00d9, 0x00e0, 0x00e7, 0x00eb, 0x00ef, 0x00f3, 0x00f8, - 0x0007, 0x0021, 0x00fd, 0x0107, 0x0110, 0x012c, 0x0148, 0x0162, - 0x016b, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2002, 0x1f9a, - 0x2002, 0x2002, 0x2002, 0x2006, 0x2002, 0x0001, 0x008d, 0x0003, - 0x0091, 0x0000, 0x0098, 0x0005, 0x0021, 0xffff, 0x0174, 0x0178, - 0x017c, 0x0180, 0x0005, 0x0021, 0xffff, 0x0185, 0x0199, 0x01ae, - // Entry 16040 - 1607F - 0x01c3, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, - 0x00a8, 0x00ab, 0x0001, 0x0021, 0x01d8, 0x0001, 0x0021, 0x01e3, - 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0021, 0x01d8, 0x0001, 0x0021, - 0x01e3, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, - 0x0021, 0x01f0, 0x0205, 0x0001, 0x00c3, 0x0002, 0x0021, 0x021a, - 0x021e, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, - 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, - // Entry 16080 - 160BF - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, - 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, - 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 160C0 - 160FF - 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, - 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x0021, - 0x0222, 0x0001, 0x0131, 0x0001, 0x0021, 0x0228, 0x0001, 0x0136, - 0x0001, 0x0021, 0x022f, 0x0001, 0x013b, 0x0001, 0x0021, 0x0235, - 0x0002, 0x0141, 0x0144, 0x0001, 0x0021, 0x023f, 0x0003, 0x0021, - 0x0245, 0x024d, 0x0252, 0x0001, 0x014b, 0x0001, 0x0021, 0x025a, - 0x0001, 0x0150, 0x0001, 0x0021, 0x026e, 0x0001, 0x0155, 0x0001, - 0x0021, 0x0284, 0x0001, 0x015a, 0x0001, 0x0021, 0x028a, 0x0001, - // Entry 16100 - 1613F - 0x015f, 0x0001, 0x0021, 0x0293, 0x0001, 0x0164, 0x0001, 0x0021, - 0x029d, 0x0003, 0x0004, 0x0410, 0x083a, 0x0011, 0x0000, 0x0016, - 0x0000, 0x0000, 0x0000, 0x0000, 0x003b, 0x0066, 0x0289, 0x0000, - 0x02f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0383, 0x000a, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0021, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0028, 0x0001, 0x002a, 0x0001, 0x002c, 0x000d, 0x0021, 0xffff, - 0x02aa, 0x02b1, 0x02b8, 0x02bf, 0x02ca, 0x02d5, 0x02dc, 0x02e3, - // Entry 16140 - 1617F - 0x02e8, 0x02f3, 0x02fc, 0x0301, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0044, 0x0000, 0x0055, 0x0004, 0x0052, 0x004c, - 0x0049, 0x004f, 0x0001, 0x0000, 0x0489, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0021, 0x0308, 0x0004, 0x0063, - 0x005d, 0x005a, 0x0060, 0x0001, 0x0021, 0x0310, 0x0001, 0x0021, - 0x0310, 0x0001, 0x0021, 0x0323, 0x0001, 0x0021, 0x0323, 0x0008, - 0x006f, 0x00d4, 0x012b, 0x0160, 0x0231, 0x0256, 0x0267, 0x0278, - 0x0002, 0x0072, 0x00a3, 0x0003, 0x0076, 0x0085, 0x0094, 0x000d, - // Entry 16180 - 161BF - 0x0021, 0xffff, 0x0330, 0x033f, 0x034c, 0x0355, 0x0360, 0x0367, - 0x0370, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x000d, 0x0021, - 0xffff, 0x03b8, 0x03bb, 0x03be, 0x03c1, 0x03be, 0x03b8, 0x03b8, - 0x03c4, 0x03c7, 0x03c4, 0x03ca, 0x03cd, 0x000d, 0x0021, 0xffff, - 0x0330, 0x033f, 0x034c, 0x0355, 0x0360, 0x0367, 0x0370, 0x037d, - 0x0384, 0x0393, 0x039e, 0x03ab, 0x0003, 0x00a7, 0x00b6, 0x00c5, - 0x000d, 0x0021, 0xffff, 0x03d0, 0x03dd, 0x034c, 0x0355, 0x03e8, - 0x0367, 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x000d, - // Entry 161C0 - 161FF - 0x0021, 0xffff, 0x03b8, 0x03bb, 0x03be, 0x03c1, 0x03be, 0x03b8, - 0x03b8, 0x03c4, 0x03c7, 0x03c4, 0x03ca, 0x03cd, 0x000d, 0x0021, - 0xffff, 0x03d0, 0x03dd, 0x034c, 0x0355, 0x03e8, 0x0367, 0x03ed, - 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x0002, 0x00d7, 0x0101, - 0x0005, 0x00dd, 0x00e6, 0x00f8, 0x0000, 0x00ef, 0x0007, 0x0021, - 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, 0x044b, 0x0007, - 0x0013, 0x006d, 0x30c1, 0x30c4, 0x0076, 0x0079, 0x30c7, 0x007f, - 0x0007, 0x0021, 0x0454, 0x0459, 0x045e, 0x0463, 0x0468, 0x046d, - // Entry 16200 - 1623F - 0x0470, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, - 0x0442, 0x044b, 0x0005, 0x0107, 0x0110, 0x0122, 0x0000, 0x0119, - 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, - 0x044b, 0x0007, 0x0013, 0x006d, 0x30c1, 0x30c4, 0x0076, 0x0079, - 0x30ca, 0x30cd, 0x0007, 0x0021, 0x0454, 0x0459, 0x045e, 0x0463, - 0x0468, 0x0473, 0x0476, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, - 0x0422, 0x0433, 0x0442, 0x044b, 0x0002, 0x012e, 0x0147, 0x0003, - 0x0132, 0x0139, 0x0140, 0x0005, 0x0021, 0xffff, 0x0479, 0x0483, - // Entry 16240 - 1627F - 0x048d, 0x0497, 0x0005, 0x0021, 0xffff, 0x04a1, 0x04a4, 0x04a7, - 0x04aa, 0x0005, 0x0021, 0xffff, 0x04ad, 0x04c6, 0x04df, 0x04f8, - 0x0003, 0x014b, 0x0152, 0x0159, 0x0005, 0x0021, 0xffff, 0x0479, - 0x0483, 0x048d, 0x0497, 0x0005, 0x0021, 0xffff, 0x04a1, 0x04a4, - 0x04a7, 0x04aa, 0x0005, 0x0021, 0xffff, 0x04ad, 0x04c6, 0x04df, - 0x04f8, 0x0002, 0x0163, 0x01ca, 0x0003, 0x0167, 0x0188, 0x01a9, - 0x0008, 0x0173, 0x0179, 0x0170, 0x017c, 0x017f, 0x0182, 0x0185, - 0x0176, 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, 0x0525, 0x0001, - // Entry 16280 - 162BF - 0x0021, 0x052c, 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x053a, - 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x0541, 0x0001, 0x0021, - 0x0548, 0x0008, 0x0194, 0x019a, 0x0191, 0x019d, 0x01a0, 0x01a3, - 0x01a6, 0x0197, 0x0001, 0x0021, 0x03ca, 0x0001, 0x0021, 0x054d, - 0x0001, 0x0021, 0x0550, 0x0001, 0x0003, 0x0236, 0x0001, 0x0003, - 0x030a, 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x0553, 0x0001, - 0x0021, 0x0476, 0x0008, 0x01b5, 0x01bb, 0x01b2, 0x01be, 0x01c1, - 0x01c4, 0x01c7, 0x01b8, 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, - // Entry 162C0 - 162FF - 0x0556, 0x0001, 0x0021, 0x052c, 0x0001, 0x0021, 0x056a, 0x0001, - 0x0021, 0x053a, 0x0001, 0x0021, 0x0541, 0x0001, 0x0021, 0x0541, - 0x0001, 0x0021, 0x0548, 0x0003, 0x01ce, 0x01ef, 0x0210, 0x0008, - 0x01da, 0x01e0, 0x01d7, 0x01e3, 0x01e6, 0x01e9, 0x01ec, 0x01dd, - 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, 0x0525, 0x0001, 0x0021, - 0x0550, 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x053a, 0x0001, - 0x0021, 0x0533, 0x0001, 0x0021, 0x0541, 0x0001, 0x0021, 0x0548, - 0x0008, 0x01fb, 0x0201, 0x01f8, 0x0204, 0x0207, 0x020a, 0x020d, - // Entry 16300 - 1633F - 0x01fe, 0x0001, 0x0021, 0x03ca, 0x0001, 0x0021, 0x0525, 0x0001, - 0x0021, 0x0550, 0x0001, 0x0021, 0x0533, 0x0001, 0x0003, 0x030a, - 0x0001, 0x0021, 0x0533, 0x0001, 0x0021, 0x0553, 0x0001, 0x0021, - 0x0476, 0x0008, 0x021c, 0x0222, 0x0219, 0x0225, 0x0228, 0x022b, - 0x022e, 0x021f, 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, 0x0556, - 0x0001, 0x0021, 0x052c, 0x0001, 0x0021, 0x056a, 0x0001, 0x0021, - 0x053a, 0x0001, 0x0021, 0x056a, 0x0001, 0x0021, 0x0541, 0x0001, - 0x0021, 0x0548, 0x0003, 0x0240, 0x024b, 0x0235, 0x0002, 0x0238, - // Entry 16340 - 1637F - 0x023c, 0x0002, 0x0021, 0x057b, 0x05b4, 0x0002, 0x0021, 0x0592, - 0x05c1, 0x0002, 0x0243, 0x0247, 0x0002, 0x0021, 0x05d7, 0x05e7, - 0x0002, 0x0021, 0x05de, 0x05eb, 0x0002, 0x024e, 0x0252, 0x0002, - 0x0021, 0x054d, 0x03be, 0x0002, 0x0021, 0x05de, 0x05eb, 0x0004, - 0x0264, 0x025e, 0x025b, 0x0261, 0x0001, 0x0001, 0x1fa2, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0021, 0x05f2, - 0x0004, 0x0275, 0x026f, 0x026c, 0x0272, 0x0001, 0x001c, 0x14d2, - 0x0001, 0x0021, 0x05f8, 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, - // Entry 16380 - 163BF - 0x00a1, 0x0004, 0x0286, 0x0280, 0x027d, 0x0283, 0x0001, 0x0021, - 0x0310, 0x0001, 0x0021, 0x0310, 0x0001, 0x0021, 0x0323, 0x0001, - 0x0021, 0x0323, 0x0001, 0x028b, 0x0002, 0x028e, 0x02c2, 0x0003, - 0x0292, 0x02a2, 0x02b2, 0x000e, 0x0021, 0x0645, 0x0604, 0x060d, - 0x0618, 0x0621, 0x0628, 0x0631, 0x063a, 0x065d, 0x0668, 0x0671, - 0x067c, 0x0685, 0x068a, 0x000e, 0x0013, 0x30d9, 0x01cb, 0x01c8, - 0x01bf, 0x30d0, 0x30d3, 0x30d6, 0x30d9, 0x30dc, 0x30df, 0x30c4, - 0x01cb, 0x30d6, 0x30df, 0x000e, 0x0021, 0x0645, 0x0604, 0x060d, - // Entry 163C0 - 163FF - 0x0618, 0x0621, 0x0628, 0x0631, 0x063a, 0x065d, 0x0668, 0x0671, - 0x067c, 0x0685, 0x068a, 0x0003, 0x02c6, 0x02d6, 0x02e6, 0x000e, - 0x0021, 0x0645, 0x0604, 0x060d, 0x0618, 0x0621, 0x0628, 0x0631, - 0x063a, 0x065d, 0x0668, 0x0671, 0x067c, 0x0685, 0x068a, 0x000e, - 0x0013, 0x30d9, 0x01cb, 0x01c8, 0x01bf, 0x30d0, 0x30d3, 0x30d6, - 0x30d9, 0x30dc, 0x30df, 0x30c4, 0x01cb, 0x30d6, 0x30df, 0x000e, - 0x0021, 0x0645, 0x0604, 0x060d, 0x0618, 0x0621, 0x0628, 0x0631, - 0x063a, 0x065d, 0x0668, 0x0671, 0x067c, 0x0685, 0x068a, 0x0008, - // Entry 16400 - 1643F - 0x02ff, 0x0000, 0x0000, 0x0000, 0x0364, 0x0372, 0x0000, 0x9006, - 0x0002, 0x0302, 0x0333, 0x0003, 0x0306, 0x0315, 0x0324, 0x000d, - 0x0003, 0xffff, 0x0493, 0x049c, 0x20f5, 0x2109, 0x211f, 0x2135, - 0x04fb, 0x0502, 0x050d, 0x0518, 0x214d, 0x215c, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0003, 0xffff, - 0x0493, 0x049c, 0x20f5, 0x2109, 0x211f, 0x2135, 0x04fb, 0x0502, - 0x050d, 0x0518, 0x214d, 0x215c, 0x0003, 0x0337, 0x0346, 0x0355, - // Entry 16440 - 1647F - 0x000d, 0x0003, 0xffff, 0x0493, 0x049c, 0x20f5, 0x2109, 0x211f, - 0x2135, 0x04fb, 0x0502, 0x050d, 0x0518, 0x2169, 0x2176, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0003, - 0xffff, 0x0493, 0x049c, 0x20f5, 0x2109, 0x211f, 0x2135, 0x04fb, - 0x0502, 0x050d, 0x0518, 0x2169, 0x2176, 0x0003, 0x036d, 0x0000, - 0x0368, 0x0001, 0x036a, 0x0001, 0x0021, 0x0695, 0x0001, 0x036f, - 0x0001, 0x0021, 0x06a7, 0x0004, 0x0380, 0x037a, 0x0377, 0x037d, - // Entry 16480 - 164BF - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0021, 0x0308, 0x0008, 0x038c, 0x0000, 0x0000, - 0x0000, 0x03f1, 0x03ff, 0x0000, 0x9006, 0x0002, 0x038f, 0x03c0, - 0x0003, 0x0393, 0x03a2, 0x03b1, 0x000d, 0x0021, 0xffff, 0x06b1, - 0x06c0, 0x06d1, 0x06dc, 0x06e3, 0x06ee, 0x06fb, 0x0702, 0x070b, - 0x0712, 0x0717, 0x0720, 0x000d, 0x0021, 0xffff, 0x03bb, 0x072b, - 0x072e, 0x0731, 0x03be, 0x0734, 0x03be, 0x0737, 0x0737, 0x073a, - 0x073d, 0x072b, 0x000d, 0x0021, 0xffff, 0x06b1, 0x06c0, 0x06d1, - // Entry 164C0 - 164FF - 0x06dc, 0x06e3, 0x06ee, 0x06fb, 0x0702, 0x070b, 0x0712, 0x0717, - 0x0720, 0x0003, 0x03c4, 0x03d3, 0x03e2, 0x000d, 0x0021, 0xffff, - 0x06b1, 0x06c0, 0x06d1, 0x06dc, 0x06e3, 0x06ee, 0x06fb, 0x0702, - 0x070b, 0x0712, 0x0717, 0x0720, 0x000d, 0x0021, 0xffff, 0x03bb, - 0x072b, 0x072e, 0x0731, 0x03be, 0x0734, 0x03be, 0x0737, 0x0737, - 0x073a, 0x073d, 0x072b, 0x000d, 0x0021, 0xffff, 0x06b1, 0x06c0, - 0x06d1, 0x06dc, 0x06e3, 0x06ee, 0x06fb, 0x0702, 0x070b, 0x0712, - 0x0717, 0x0720, 0x0003, 0x03fa, 0x0000, 0x03f5, 0x0001, 0x03f7, - // Entry 16500 - 1653F - 0x0001, 0x0021, 0x0740, 0x0001, 0x03fc, 0x0001, 0x0021, 0x0752, - 0x0004, 0x040d, 0x0407, 0x0404, 0x040a, 0x0001, 0x0000, 0x04fc, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0021, - 0x05f2, 0x0040, 0x0451, 0x0000, 0x0000, 0x0456, 0x046d, 0x0484, - 0x049b, 0x04b2, 0x04c9, 0x04e0, 0x04f7, 0x050e, 0x0525, 0x0540, - 0x055b, 0x0000, 0x0000, 0x0000, 0x0576, 0x058f, 0x05a8, 0x0000, - 0x0000, 0x0000, 0x05c1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x05c6, 0x05da, 0x05ee, 0x0602, 0x0616, 0x062a, 0x063e, 0x0652, - // Entry 16540 - 1657F - 0x0666, 0x067a, 0x068e, 0x06a2, 0x06b6, 0x06ca, 0x06de, 0x06f2, - 0x0706, 0x071a, 0x072e, 0x0742, 0x0756, 0x0000, 0x076a, 0x0000, - 0x076f, 0x0785, 0x079b, 0x07b1, 0x07c7, 0x07dd, 0x07f3, 0x0809, - 0x081f, 0x0835, 0x0001, 0x0453, 0x0001, 0x0021, 0x075c, 0x0003, - 0x045a, 0x045d, 0x0462, 0x0001, 0x0021, 0x0765, 0x0003, 0x0021, - 0x076c, 0x077e, 0x0789, 0x0002, 0x0465, 0x0469, 0x0002, 0x0021, - 0x079b, 0x079b, 0x0002, 0x0021, 0x07ad, 0x07ad, 0x0003, 0x0471, - 0x0474, 0x0479, 0x0001, 0x0021, 0x0765, 0x0003, 0x0021, 0x076c, - // Entry 16580 - 165BF - 0x077e, 0x0789, 0x0002, 0x047c, 0x0480, 0x0002, 0x0021, 0x079b, - 0x079b, 0x0002, 0x0021, 0x07ad, 0x07ad, 0x0003, 0x0488, 0x048b, - 0x0490, 0x0001, 0x0021, 0x0765, 0x0003, 0x0021, 0x076c, 0x077e, - 0x0789, 0x0002, 0x0493, 0x0497, 0x0002, 0x0021, 0x079b, 0x079b, - 0x0002, 0x0021, 0x07ad, 0x07ad, 0x0003, 0x049f, 0x04a2, 0x04a7, - 0x0001, 0x0021, 0x07bf, 0x0003, 0x0021, 0x07cf, 0x07ec, 0x0809, - 0x0002, 0x04aa, 0x04ae, 0x0002, 0x0021, 0x0826, 0x0826, 0x0002, - 0x0021, 0x0843, 0x0843, 0x0003, 0x04b6, 0x04b9, 0x04be, 0x0001, - // Entry 165C0 - 165FF - 0x0021, 0x07bf, 0x0003, 0x0021, 0x07cf, 0x07ec, 0x0809, 0x0002, - 0x04c1, 0x04c5, 0x0002, 0x0021, 0x0826, 0x0826, 0x0002, 0x0021, - 0x0843, 0x0843, 0x0003, 0x04cd, 0x04d0, 0x04d5, 0x0001, 0x0021, - 0x07bf, 0x0003, 0x0021, 0x07cf, 0x07ec, 0x0809, 0x0002, 0x04d8, - 0x04dc, 0x0002, 0x0021, 0x0826, 0x0826, 0x0002, 0x0021, 0x0843, - 0x0843, 0x0003, 0x04e4, 0x04e7, 0x04ec, 0x0001, 0x0021, 0x0860, - 0x0003, 0x0021, 0x0867, 0x0879, 0x0887, 0x0002, 0x04ef, 0x04f3, - 0x0002, 0x0021, 0x0899, 0x0899, 0x0002, 0x0021, 0x08ab, 0x08ab, - // Entry 16600 - 1663F - 0x0003, 0x04fb, 0x04fe, 0x0503, 0x0001, 0x0021, 0x0860, 0x0003, - 0x0021, 0x08bd, 0x0879, 0x0887, 0x0002, 0x0506, 0x050a, 0x0002, - 0x0021, 0x0899, 0x0899, 0x0002, 0x0021, 0x08ab, 0x08ab, 0x0003, - 0x0512, 0x0515, 0x051a, 0x0001, 0x0021, 0x0860, 0x0003, 0x0021, - 0x08bd, 0x0879, 0x0887, 0x0002, 0x051d, 0x0521, 0x0002, 0x0021, - 0x0899, 0x0899, 0x0002, 0x0021, 0x08ab, 0x08ab, 0x0004, 0x052a, - 0x052d, 0x0532, 0x053d, 0x0001, 0x0021, 0x08cb, 0x0003, 0x0021, - 0x08d4, 0x08ea, 0x08fa, 0x0002, 0x0535, 0x0539, 0x0002, 0x0021, - // Entry 16640 - 1667F - 0x0910, 0x0910, 0x0002, 0x0021, 0x0924, 0x0924, 0x0001, 0x0021, - 0x0938, 0x0004, 0x0545, 0x0548, 0x054d, 0x0558, 0x0001, 0x0021, - 0x08cb, 0x0003, 0x0021, 0x08d4, 0x08ea, 0x08fa, 0x0002, 0x0550, - 0x0554, 0x0002, 0x0021, 0x0910, 0x0910, 0x0002, 0x0021, 0x0924, - 0x0924, 0x0001, 0x0021, 0x0938, 0x0004, 0x0560, 0x0563, 0x0568, - 0x0573, 0x0001, 0x0021, 0x08cb, 0x0003, 0x0021, 0x08d4, 0x08ea, - 0x08fa, 0x0002, 0x056b, 0x056f, 0x0002, 0x0021, 0x0910, 0x0910, - 0x0002, 0x0021, 0x0924, 0x0924, 0x0001, 0x0021, 0x0938, 0x0003, - // Entry 16680 - 166BF - 0x057a, 0x057d, 0x0584, 0x0001, 0x0021, 0x0947, 0x0005, 0x0021, - 0x095b, 0x0966, 0x0971, 0x094e, 0x097a, 0x0002, 0x0587, 0x058b, - 0x0002, 0x0021, 0x098a, 0x098a, 0x0002, 0x0021, 0x099c, 0x099c, - 0x0003, 0x0593, 0x0596, 0x059d, 0x0001, 0x0021, 0x0947, 0x0005, - 0x0021, 0x095b, 0x0966, 0x0971, 0x094e, 0x097a, 0x0002, 0x05a0, - 0x05a4, 0x0002, 0x0021, 0x098a, 0x098a, 0x0002, 0x0021, 0x099c, - 0x099c, 0x0003, 0x05ac, 0x05af, 0x05b6, 0x0001, 0x0021, 0x0947, - 0x0005, 0x0021, 0x095b, 0x0966, 0x0971, 0x094e, 0x097a, 0x0002, - // Entry 166C0 - 166FF - 0x05b9, 0x05bd, 0x0002, 0x0021, 0x098a, 0x098a, 0x0002, 0x0021, - 0x099c, 0x099c, 0x0001, 0x05c3, 0x0001, 0x0021, 0x09ae, 0x0003, - 0x0000, 0x05ca, 0x05cf, 0x0003, 0x0021, 0x09be, 0x09d8, 0x09ec, - 0x0002, 0x05d2, 0x05d6, 0x0002, 0x0021, 0x0a06, 0x0a06, 0x0002, - 0x0021, 0x0a20, 0x0a20, 0x0003, 0x0000, 0x05de, 0x05e3, 0x0003, - 0x0021, 0x09be, 0x09d8, 0x09ec, 0x0002, 0x05e6, 0x05ea, 0x0002, - 0x0021, 0x0a06, 0x0a06, 0x0002, 0x0021, 0x0a20, 0x0a20, 0x0003, - 0x0000, 0x05f2, 0x05f7, 0x0003, 0x0021, 0x09be, 0x09d8, 0x09ec, - // Entry 16700 - 1673F - 0x0002, 0x05fa, 0x05fe, 0x0002, 0x0021, 0x0a06, 0x0a06, 0x0002, - 0x0021, 0x0a20, 0x0a20, 0x0003, 0x0000, 0x0606, 0x060b, 0x0003, - 0x0021, 0x0a3a, 0x0a54, 0x0a68, 0x0002, 0x060e, 0x0612, 0x0002, - 0x0021, 0x0a82, 0x0a82, 0x0002, 0x0021, 0x0a9c, 0x0a9c, 0x0003, - 0x0000, 0x061a, 0x061f, 0x0003, 0x0021, 0x0a3a, 0x0a54, 0x0a68, - 0x0002, 0x0622, 0x0626, 0x0002, 0x0021, 0x0a82, 0x0a82, 0x0002, - 0x0021, 0x0a9c, 0x0a9c, 0x0003, 0x0000, 0x062e, 0x0633, 0x0003, - 0x0021, 0x0a3a, 0x0a54, 0x0a68, 0x0002, 0x0636, 0x063a, 0x0002, - // Entry 16740 - 1677F - 0x0021, 0x0a82, 0x0a82, 0x0002, 0x0021, 0x0a9c, 0x0a9c, 0x0003, - 0x0000, 0x0642, 0x0647, 0x0003, 0x0021, 0x0ab6, 0x0ad3, 0x0aea, - 0x0002, 0x064a, 0x064e, 0x0002, 0x0021, 0x0b07, 0x0b07, 0x0002, - 0x0021, 0x0b24, 0x0b24, 0x0003, 0x0000, 0x0656, 0x065b, 0x0003, - 0x0021, 0x0ab6, 0x0ad3, 0x0aea, 0x0002, 0x065e, 0x0662, 0x0002, - 0x0021, 0x0b07, 0x0b07, 0x0002, 0x0021, 0x0b24, 0x0b24, 0x0003, - 0x0000, 0x066a, 0x066f, 0x0003, 0x0021, 0x0ab6, 0x0ad3, 0x0aea, - 0x0002, 0x0672, 0x0676, 0x0002, 0x0021, 0x0b07, 0x0b07, 0x0002, - // Entry 16780 - 167BF - 0x0021, 0x0b24, 0x0b24, 0x0003, 0x0000, 0x067e, 0x0683, 0x0003, - 0x0021, 0x0b41, 0x0b5f, 0x0b77, 0x0002, 0x0686, 0x068a, 0x0002, - 0x0021, 0x0b95, 0x0b95, 0x0002, 0x0021, 0x0bb3, 0x0bb3, 0x0003, - 0x0000, 0x0692, 0x0697, 0x0003, 0x0021, 0x0b41, 0x0b5f, 0x0b77, - 0x0002, 0x069a, 0x069e, 0x0002, 0x0021, 0x0b95, 0x0b95, 0x0002, - 0x0021, 0x0bb3, 0x0bb3, 0x0003, 0x0000, 0x06a6, 0x06ab, 0x0003, - 0x0021, 0x0b41, 0x0b5f, 0x0b77, 0x0002, 0x06ae, 0x06b2, 0x0002, - 0x0021, 0x0b95, 0x0b95, 0x0002, 0x0021, 0x0bb3, 0x0bb3, 0x0003, - // Entry 167C0 - 167FF - 0x0000, 0x06ba, 0x06bf, 0x0003, 0x0021, 0x0bd1, 0x0bed, 0x0c03, - 0x0002, 0x06c2, 0x06c6, 0x0002, 0x0021, 0x0c1f, 0x0c1f, 0x0002, - 0x0021, 0x0c3b, 0x0c3b, 0x0003, 0x0000, 0x06ce, 0x06d3, 0x0003, - 0x0021, 0x0bd1, 0x0bed, 0x0c03, 0x0002, 0x06d6, 0x06da, 0x0002, - 0x0021, 0x0c1f, 0x0c1f, 0x0002, 0x0021, 0x0c3b, 0x0c3b, 0x0003, - 0x0000, 0x06e2, 0x06e7, 0x0003, 0x0021, 0x0bd1, 0x0bed, 0x0c03, - 0x0002, 0x06ea, 0x06ee, 0x0002, 0x0021, 0x0c1f, 0x0c1f, 0x0002, - 0x0021, 0x0c3b, 0x0c3b, 0x0003, 0x0000, 0x06f6, 0x06fb, 0x0003, - // Entry 16800 - 1683F - 0x0021, 0x0c57, 0x0c6d, 0x0c7d, 0x0002, 0x06fe, 0x0702, 0x0002, - 0x0021, 0x0c93, 0x0c93, 0x0002, 0x0021, 0x0ca9, 0x0ca9, 0x0003, - 0x0000, 0x070a, 0x070f, 0x0003, 0x0021, 0x0c57, 0x0c6d, 0x0c7d, - 0x0002, 0x0712, 0x0716, 0x0002, 0x0021, 0x0c93, 0x0c93, 0x0002, - 0x0021, 0x0ca9, 0x0ca9, 0x0003, 0x0000, 0x071e, 0x0723, 0x0003, - 0x0021, 0x0c57, 0x0c6d, 0x0c7d, 0x0002, 0x0726, 0x072a, 0x0002, - 0x0021, 0x0c93, 0x0c93, 0x0002, 0x0021, 0x0ca9, 0x0ca9, 0x0003, - 0x0000, 0x0732, 0x0737, 0x0003, 0x0021, 0x0cbf, 0x0cd5, 0x0ce5, - // Entry 16840 - 1687F - 0x0002, 0x073a, 0x073e, 0x0002, 0x0021, 0x0cfb, 0x0cfb, 0x0002, - 0x0021, 0x0d11, 0x0d11, 0x0003, 0x0000, 0x0746, 0x074b, 0x0003, - 0x0021, 0x0cbf, 0x0cd5, 0x0ce5, 0x0002, 0x074e, 0x0752, 0x0002, - 0x0021, 0x0cfb, 0x0cfb, 0x0002, 0x0021, 0x0d11, 0x0d11, 0x0003, - 0x0000, 0x075a, 0x075f, 0x0003, 0x0021, 0x0cbf, 0x0cd5, 0x0ce5, - 0x0002, 0x0762, 0x0766, 0x0002, 0x0021, 0x0cfb, 0x0cfb, 0x0002, - 0x0021, 0x0d11, 0x0d11, 0x0001, 0x076c, 0x0001, 0x0021, 0x0d27, - 0x0003, 0x0773, 0x0776, 0x077a, 0x0001, 0x0021, 0x0d3f, 0x0002, - // Entry 16880 - 168BF - 0x0021, 0xffff, 0x0d48, 0x0002, 0x077d, 0x0781, 0x0002, 0x0021, - 0x0d5a, 0x0d5a, 0x0002, 0x0021, 0x0d6e, 0x0d6e, 0x0003, 0x0789, - 0x078c, 0x0790, 0x0001, 0x0021, 0x0d3f, 0x0002, 0x0021, 0xffff, - 0x0d48, 0x0002, 0x0793, 0x0797, 0x0002, 0x0021, 0x0d5a, 0x0d5a, - 0x0002, 0x0021, 0x0d6e, 0x0d6e, 0x0003, 0x079f, 0x07a2, 0x07a6, - 0x0001, 0x0021, 0x0d3f, 0x0002, 0x0021, 0xffff, 0x0d48, 0x0002, - 0x07a9, 0x07ad, 0x0002, 0x0021, 0x0d5a, 0x0d5a, 0x0002, 0x0021, - 0x0d6e, 0x0d6e, 0x0003, 0x07b5, 0x07b8, 0x07bc, 0x0001, 0x0021, - // Entry 168C0 - 168FF - 0x0d82, 0x0002, 0x0021, 0xffff, 0x0d8d, 0x0002, 0x07bf, 0x07c3, - 0x0002, 0x0021, 0x0da1, 0x0da1, 0x0002, 0x0021, 0x0db7, 0x0db7, - 0x0003, 0x07cb, 0x07ce, 0x07d2, 0x0001, 0x0021, 0x0d82, 0x0002, - 0x0021, 0xffff, 0x0d8d, 0x0002, 0x07d5, 0x07d9, 0x0002, 0x0021, - 0x0da1, 0x0da1, 0x0002, 0x0021, 0x0db7, 0x0db7, 0x0003, 0x07e1, - 0x07e4, 0x07e8, 0x0001, 0x0021, 0x0d82, 0x0002, 0x0021, 0xffff, - 0x0d8d, 0x0002, 0x07eb, 0x07ef, 0x0002, 0x0021, 0x0da1, 0x0da1, - 0x0002, 0x0021, 0x0db7, 0x0db7, 0x0003, 0x07f7, 0x07fa, 0x07fe, - // Entry 16900 - 1693F - 0x0001, 0x0021, 0x0dcd, 0x0002, 0x0021, 0xffff, 0x0dd8, 0x0002, - 0x0801, 0x0805, 0x0002, 0x0021, 0x0de3, 0x0de3, 0x0002, 0x0021, - 0x0df9, 0x0df9, 0x0003, 0x080d, 0x0810, 0x0814, 0x0001, 0x0021, - 0x0dcd, 0x0002, 0x0021, 0xffff, 0x0dd8, 0x0002, 0x0817, 0x081b, - 0x0002, 0x0021, 0x0de3, 0x0de3, 0x0002, 0x0021, 0x0df9, 0x0df9, - 0x0003, 0x0823, 0x0826, 0x082a, 0x0001, 0x0021, 0x0dcd, 0x0002, - 0x0021, 0xffff, 0x0dd8, 0x0002, 0x082d, 0x0831, 0x0002, 0x0021, - 0x0de3, 0x0de3, 0x0002, 0x0021, 0x0df9, 0x0df9, 0x0001, 0x0837, - // Entry 16940 - 1697F - 0x0001, 0x0021, 0x0e0f, 0x0004, 0x083f, 0x0844, 0x0849, 0x0858, - 0x0003, 0x001c, 0x0baf, 0x20d3, 0x20e6, 0x0003, 0x0021, 0x0e27, - 0x0e32, 0x0e4e, 0x0002, 0x0000, 0x084c, 0x0003, 0x0000, 0x0853, - 0x0850, 0x0001, 0x0021, 0x0e62, 0x0003, 0x0021, 0xffff, 0x0e83, - 0x0eac, 0x0002, 0x0000, 0x085b, 0x0003, 0x08ff, 0x099f, 0x085f, - 0x009e, 0x0021, 0x0ec9, 0x0ee3, 0x0f00, 0x0f1b, 0x0f5c, 0x0fc0, - 0x1072, 0x10d1, 0x1140, 0x11b5, 0x1234, 0x1298, 0x12ea, 0x133a, - 0x1398, 0x1401, 0x1471, 0x14d3, 0x153e, 0x15c2, 0x164b, 0x16c2, - // Entry 16980 - 169BF - 0x1741, 0x17b9, 0x1809, 0x184f, 0x1861, 0x188d, 0x18d7, 0x1915, - 0x195d, 0x198f, 0x19e3, 0x1a2b, 0x1a7b, 0x1ac9, 0x1aea, 0x1b1b, - 0x1b76, 0x1bd2, 0x1c0c, 0x1c1e, 0x1c3d, 0x1c77, 0x1ccf, 0x1d00, - 0x1d69, 0x1db5, 0x1e13, 0x1e80, 0x1eec, 0x1f26, 0x1f45, 0x1f8c, - 0x1fa6, 0x1fd0, 0x2016, 0x2035, 0x2068, 0x20d9, 0x2146, 0x2168, - 0x219b, 0x220e, 0x2266, 0x22a0, 0x22ae, 0x22cb, 0x22e1, 0x2300, - 0x231d, 0x234c, 0x23a2, 0x2402, 0x2458, 0x24c5, 0x2545, 0x2564, - 0x2591, 0x25c7, 0x25f9, 0x264f, 0x267b, 0x26a8, 0x273c, 0x2773, - // Entry 169C0 - 169FF - 0x27b9, 0x27cb, 0x27df, 0x27f5, 0x2826, 0x2864, 0x289a, 0x2911, - 0x297c, 0x29e4, 0x2a1e, 0x2a34, 0x2a48, 0x2a7b, 0x2af2, 0x2b56, - 0x2ba8, 0x2bba, 0x2c05, 0x2cbd, 0x2d21, 0x2d75, 0x2dbb, 0x2dcf, - 0x2e09, 0x2e61, 0x2ead, 0x2ef3, 0x2f39, 0x2fa1, 0x2fb9, 0x2fcd, - 0x3061, 0x3077, 0x309f, 0x30f9, 0x314d, 0x318b, 0x319b, 0x31b1, - 0x31d0, 0x31f1, 0x3207, 0x3217, 0x323d, 0x327b, 0x3295, 0x32bd, - 0x32fb, 0x3327, 0x3375, 0x339f, 0x33fd, 0x345b, 0x349d, 0x34d2, - 0x3542, 0x358c, 0x359e, 0x35b9, 0x35f1, 0x3655, 0x212d, 0x2c73, - // Entry 16A00 - 16A3F - 0xffff, 0x1018, 0xffff, 0xffff, 0xffff, 0x2669, 0x26fa, 0x3009, - 0x009e, 0x0021, 0xffff, 0xffff, 0xffff, 0xffff, 0x0f41, 0x0fac, - 0x105e, 0x10b4, 0x1125, 0x1190, 0x1219, 0x1284, 0x12da, 0x1324, - 0x1380, 0x13e2, 0x1459, 0x14bb, 0x151d, 0x159a, 0x162c, 0x16a3, - 0x171a, 0x17a9, 0x17f3, 0xffff, 0xffff, 0x1875, 0xffff, 0x18fe, - 0xffff, 0x197a, 0x19d3, 0x1a1d, 0x1a61, 0xffff, 0xffff, 0x1b07, - 0x1b5d, 0x1bc2, 0xffff, 0xffff, 0xffff, 0x1c58, 0xffff, 0x1ce5, - 0x1d50, 0xffff, 0x1dfa, 0x1e5f, 0x1edc, 0xffff, 0xffff, 0xffff, - // Entry 16A40 - 16A7F - 0xffff, 0x1fba, 0xffff, 0xffff, 0x204b, 0x20bc, 0xffff, 0xffff, - 0x217a, 0x21f7, 0x2256, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x233a, 0x238a, 0x23ec, 0x2448, 0x2492, 0xffff, 0xffff, - 0x2583, 0xffff, 0x25db, 0xffff, 0xffff, 0x2696, 0xffff, 0x275d, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2814, 0xffff, 0x2878, 0x28f8, - 0x295d, 0x29d4, 0xffff, 0xffff, 0xffff, 0x2a58, 0x2adb, 0x2b3a, - 0xffff, 0xffff, 0x2bdb, 0x2ca1, 0x2d0f, 0x2d5f, 0xffff, 0xffff, - 0x2df1, 0x2e53, 0x2e97, 0xffff, 0x2f12, 0xffff, 0xffff, 0xffff, - // Entry 16A80 - 16ABF - 0xffff, 0xffff, 0x3089, 0x30e5, 0x313b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x322b, 0xffff, 0xffff, 0x32ab, - 0xffff, 0x330d, 0xffff, 0x3389, 0x33e5, 0x3447, 0xffff, 0x34b3, - 0x352a, 0xffff, 0xffff, 0xffff, 0x35db, 0x3637, 0xffff, 0xffff, - 0xffff, 0x1002, 0xffff, 0xffff, 0xffff, 0xffff, 0x26e6, 0x2fea, - 0x009e, 0x0021, 0xffff, 0xffff, 0xffff, 0xffff, 0x0f80, 0x0fdd, - 0x108f, 0x10f7, 0x1164, 0x11e3, 0x1258, 0x12b5, 0x1303, 0x1359, - 0x13b9, 0x1429, 0x1492, 0x14f4, 0x1568, 0x15f3, 0x1673, 0x16ea, - // Entry 16AC0 - 16AFF - 0x1771, 0x17d2, 0x1828, 0xffff, 0xffff, 0x18ae, 0xffff, 0x1935, - 0xffff, 0x19ad, 0x19fc, 0x1a42, 0x1a9e, 0xffff, 0xffff, 0x1b38, - 0x1b98, 0x1beb, 0xffff, 0xffff, 0xffff, 0x1c9f, 0xffff, 0x1d24, - 0x1d8b, 0xffff, 0x1e35, 0x1eaa, 0x1f05, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1fef, 0xffff, 0xffff, 0x208e, 0x20ff, 0xffff, 0xffff, - 0x21c5, 0x222e, 0x227f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2367, 0x23c3, 0x2421, 0x2471, 0x2501, 0xffff, 0xffff, - 0x25a8, 0xffff, 0x2620, 0xffff, 0xffff, 0x26c3, 0xffff, 0x2792, - // Entry 16B00 - 16B3F - 0xffff, 0xffff, 0xffff, 0xffff, 0x2841, 0xffff, 0x28c5, 0x2933, - 0x29a4, 0x29fd, 0xffff, 0xffff, 0xffff, 0x2aa7, 0x2b12, 0x2b7b, - 0xffff, 0xffff, 0x2c38, 0x2ce2, 0x2d3c, 0x2d94, 0xffff, 0xffff, - 0x2e2a, 0x2e78, 0x2ecc, 0xffff, 0x2f69, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x30be, 0x3116, 0x3168, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x3258, 0xffff, 0xffff, 0x32d8, - 0xffff, 0x334a, 0xffff, 0x33be, 0x341e, 0x3478, 0xffff, 0x34fa, - 0x3563, 0xffff, 0xffff, 0xffff, 0x3610, 0x367c, 0xffff, 0xffff, - // Entry 16B40 - 16B7F - 0xffff, 0x1037, 0xffff, 0xffff, 0xffff, 0xffff, 0x2717, 0x3031, - 0x0001, 0x0002, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0141, 0x0008, 0x001d, 0x0000, 0x0082, - 0x00a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0020, 0x0051, - 0x0003, 0x0024, 0x0033, 0x0042, 0x000d, 0x0003, 0xffff, 0x0d4a, - 0x2181, 0x218e, 0x2197, 0x21a2, 0x21a7, 0x21ae, 0x21b5, 0x21be, - 0x21cb, 0x21d8, 0x21e3, 0x000d, 0x0021, 0xffff, 0x0473, 0x03bb, - // Entry 16B80 - 16BBF - 0x03be, 0x072b, 0x03be, 0x0473, 0x0473, 0x072b, 0x36ab, 0x072b, - 0x36ae, 0x073a, 0x000d, 0x0022, 0xffff, 0x0000, 0x000b, 0x0018, - 0x0021, 0x002c, 0x0031, 0x0038, 0x0043, 0x004c, 0x0059, 0x0066, - 0x0071, 0x0003, 0x0055, 0x0064, 0x0073, 0x000d, 0x0022, 0xffff, - 0x0000, 0x000b, 0x0018, 0x0021, 0x002c, 0x0031, 0x0038, 0x0043, - 0x004c, 0x0059, 0x0066, 0x0071, 0x000d, 0x0021, 0xffff, 0x0473, - 0x03bb, 0x03be, 0x072b, 0x03be, 0x0473, 0x0473, 0x072b, 0x36ab, - 0x072b, 0x36ae, 0x073a, 0x000d, 0x0022, 0xffff, 0x0000, 0x000b, - // Entry 16BC0 - 16BFF - 0x0018, 0x0021, 0x002c, 0x0031, 0x0038, 0x0043, 0x004c, 0x0059, - 0x0066, 0x0071, 0x0002, 0x0085, 0x0097, 0x0003, 0x0089, 0x0000, - 0x0090, 0x0005, 0x0022, 0xffff, 0x007c, 0x0081, 0x0086, 0x008b, - 0x0005, 0x0022, 0xffff, 0x0090, 0x009e, 0x00ac, 0x00ba, 0x0003, - 0x009b, 0x0000, 0x00a2, 0x0005, 0x0022, 0xffff, 0x007c, 0x0081, - 0x0086, 0x008b, 0x0005, 0x0022, 0xffff, 0x0090, 0x009e, 0x00ac, - 0x00ba, 0x0002, 0x00ac, 0x0101, 0x0003, 0x00b0, 0x00cb, 0x00e6, - 0x0008, 0x0000, 0x0000, 0x00b9, 0x00bf, 0x00c2, 0x00c5, 0x00c8, - // Entry 16C00 - 16C3F - 0x00bc, 0x0001, 0x0021, 0x0515, 0x0001, 0x0021, 0x052c, 0x0001, - 0x0021, 0x053a, 0x0001, 0x0022, 0x00cc, 0x0001, 0x0022, 0x00e1, - 0x0001, 0x0021, 0x0548, 0x0008, 0x0000, 0x0000, 0x00d4, 0x00da, - 0x00dd, 0x00e0, 0x00e3, 0x00d7, 0x0001, 0x0021, 0x36ae, 0x0001, - 0x0021, 0x0550, 0x0001, 0x0003, 0x030a, 0x0001, 0x0021, 0x0533, - 0x0001, 0x0021, 0x0734, 0x0001, 0x0021, 0x0734, 0x0008, 0x0000, - 0x0000, 0x00ef, 0x00f5, 0x00f8, 0x00fb, 0x00fe, 0x00f2, 0x0001, - 0x0021, 0x0515, 0x0001, 0x0021, 0x052c, 0x0001, 0x0021, 0x053a, - // Entry 16C40 - 16C7F - 0x0001, 0x0022, 0x00cc, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0021, - 0x0548, 0x0003, 0x0105, 0x0119, 0x012d, 0x0007, 0x0000, 0x0000, - 0x0000, 0x010d, 0x0110, 0x0113, 0x0116, 0x0001, 0x0021, 0x053a, - 0x0001, 0x0022, 0x00cc, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0021, - 0x0548, 0x0007, 0x0000, 0x0000, 0x0000, 0x0121, 0x0124, 0x0127, - 0x012a, 0x0001, 0x0003, 0x030a, 0x0001, 0x0022, 0x00cc, 0x0001, - 0x0022, 0x00e1, 0x0001, 0x0021, 0x0734, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0135, 0x0138, 0x013b, 0x013e, 0x0001, 0x0021, 0x053a, - // Entry 16C80 - 16CBF - 0x0001, 0x0022, 0x00cc, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0021, - 0x0548, 0x0001, 0x0143, 0x0002, 0x0146, 0x0159, 0x0003, 0x0000, - 0x0000, 0x014a, 0x000d, 0x0022, 0xffff, 0x00e8, 0x00ef, 0x00f6, - 0x00ff, 0x010a, 0x0111, 0x011e, 0x0129, 0x0132, 0x0139, 0x0140, - 0x0147, 0x0002, 0x0000, 0x015c, 0x000d, 0x0013, 0xffff, 0x01c8, - 0x30e2, 0x30e5, 0x30e8, 0x30eb, 0x30e8, 0x30ee, 0x30f1, 0x30f4, - 0x30e5, 0x30f7, 0x01c8, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, - // Entry 16CC0 - 16CFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, - 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0000, - 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, - 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, - 0x0045, 0x000d, 0x0022, 0xffff, 0x014e, 0x0152, 0x0156, 0x015a, - 0x015e, 0x0162, 0x0166, 0x016a, 0x016e, 0x0172, 0x0176, 0x017a, - 0x000d, 0x0022, 0xffff, 0x017e, 0x0184, 0x018a, 0x0190, 0x0198, - // Entry 16D00 - 16D3F - 0x019f, 0x01a5, 0x01ab, 0x01b0, 0x01b7, 0x01c0, 0x01c6, 0x0002, - 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2002, 0x200c, 0x1f9a, - 0x2002, 0x2008, 0x1ffe, 0x1f9a, 0x214a, 0x2002, 0x2333, 0x214a, - 0x2145, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, - 0x0007, 0x0022, 0x01cc, 0x01d0, 0x01d5, 0x01d9, 0x01dd, 0x01e1, - 0x01e5, 0x0007, 0x0022, 0x01e9, 0x01ee, 0x01f6, 0x01ff, 0x0209, - 0x0213, 0x021a, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2008, - 0x1f9c, 0x1f9a, 0x1f96, 0x1f96, 0x1f9a, 0x2143, 0x0001, 0x008d, - // Entry 16D40 - 16D7F - 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x001c, 0xffff, 0x13ba, - 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0022, 0xffff, 0x0225, 0x022e, - 0x0237, 0x0240, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, - 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0022, 0x0249, 0x0001, 0x0022, - 0x0250, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0022, 0x0249, 0x0001, - 0x0022, 0x0250, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, - 0x0002, 0x0022, 0x0259, 0x0263, 0x0001, 0x00c3, 0x0002, 0x0022, - 0x026f, 0x0273, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, - // Entry 16D80 - 16DBF - 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, - 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, - 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, - 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 16DC0 - 16DFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, - 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, - 0x0022, 0x0277, 0x0001, 0x0131, 0x0001, 0x0022, 0x027f, 0x0001, - 0x0136, 0x0001, 0x0022, 0x0288, 0x0001, 0x013b, 0x0001, 0x0022, - 0x028e, 0x0002, 0x0141, 0x0144, 0x0001, 0x0022, 0x0296, 0x0003, - 0x0022, 0x029e, 0x02a5, 0x02ac, 0x0001, 0x014b, 0x0001, 0x0022, - // Entry 16E00 - 16E3F - 0x02b4, 0x0001, 0x0150, 0x0001, 0x0022, 0x02c4, 0x0001, 0x0155, - 0x0001, 0x0022, 0x02cb, 0x0001, 0x015a, 0x0001, 0x0022, 0x02d1, - 0x0001, 0x015f, 0x0001, 0x0022, 0x02d8, 0x0001, 0x0164, 0x0001, - 0x0022, 0x02e1, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0003, 0x0004, - // Entry 16E40 - 16E7F - 0x0356, 0x0780, 0x0012, 0x0017, 0x0038, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0052, 0x007d, 0x02b8, 0x0000, 0x0305, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0330, 0x0000, 0x0348, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, - 0x0001, 0x0024, 0x0001, 0x0000, 0x0000, 0x0004, 0x0035, 0x002f, - 0x002c, 0x0032, 0x0001, 0x0022, 0x02ef, 0x0001, 0x0013, 0x0477, - 0x0001, 0x0008, 0x0627, 0x0001, 0x0008, 0x062f, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0041, 0x0000, 0x0000, 0x0004, - // Entry 16E80 - 16EBF - 0x004f, 0x0049, 0x0046, 0x004c, 0x0001, 0x0022, 0x0300, 0x0001, - 0x0017, 0x03cc, 0x0001, 0x0017, 0x03cc, 0x0001, 0x0017, 0x03cc, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005b, 0x0000, - 0x006c, 0x0004, 0x0069, 0x0063, 0x0060, 0x0066, 0x0001, 0x0022, - 0x02ef, 0x0001, 0x0013, 0x0477, 0x0001, 0x0008, 0x0627, 0x0001, - 0x0008, 0x062f, 0x0004, 0x007a, 0x0074, 0x0071, 0x0077, 0x0001, - 0x0022, 0x030b, 0x0001, 0x0022, 0x030b, 0x0001, 0x0022, 0x030b, - 0x0001, 0x0000, 0x03c6, 0x0008, 0x0086, 0x00eb, 0x0142, 0x0177, - // Entry 16EC0 - 16EFF - 0x0260, 0x0285, 0x0296, 0x02a7, 0x0002, 0x0089, 0x00ba, 0x0003, - 0x008d, 0x009c, 0x00ab, 0x000d, 0x0022, 0xffff, 0x0319, 0x0321, - 0x0329, 0x0332, 0x033a, 0x0342, 0x034a, 0x0353, 0x0359, 0x0360, - 0x0367, 0x0370, 0x000d, 0x0000, 0xffff, 0x04dd, 0x19c7, 0x22d9, - 0x19c7, 0x04dd, 0x2157, 0x19c7, 0x214e, 0x22dd, 0x228e, 0x22d9, - 0x1e5d, 0x000d, 0x0022, 0xffff, 0x0378, 0x0383, 0x038e, 0x039a, - 0x03a5, 0x03b0, 0x03bb, 0x03c7, 0x03d0, 0x03da, 0x03e4, 0x03f0, - 0x0003, 0x00be, 0x00cd, 0x00dc, 0x000d, 0x0022, 0xffff, 0x03fb, - // Entry 16F00 - 16F3F - 0x0401, 0x0407, 0x040e, 0x0414, 0x041a, 0x0420, 0x0427, 0x042b, - 0x0430, 0x0435, 0x043c, 0x000d, 0x0000, 0xffff, 0x04dd, 0x19c7, - 0x22d9, 0x19c7, 0x04dd, 0x2157, 0x19c7, 0x214e, 0x22dd, 0x228e, - 0x22d9, 0x1e5d, 0x000d, 0x0022, 0xffff, 0x0442, 0x044b, 0x0454, - 0x045e, 0x0467, 0x0470, 0x0479, 0x0483, 0x048a, 0x0492, 0x049a, - 0x04a4, 0x0002, 0x00ee, 0x0118, 0x0005, 0x00f4, 0x00fd, 0x010f, - 0x0000, 0x0106, 0x0007, 0x0022, 0x04ad, 0x04b0, 0x04b3, 0x04b6, - 0x04b9, 0x04bc, 0x04bf, 0x0007, 0x0000, 0x22dd, 0x22d9, 0x04dd, - // Entry 16F40 - 16F7F - 0x2157, 0x04dd, 0x21e5, 0x228e, 0x0007, 0x0022, 0x04ad, 0x04b0, - 0x04b3, 0x04b6, 0x04b9, 0x04bc, 0x04bf, 0x0007, 0x0022, 0x04c2, - 0x04ce, 0x04da, 0x04e4, 0x04f2, 0x04fc, 0x0508, 0x0005, 0x011e, - 0x0127, 0x0139, 0x0000, 0x0130, 0x0007, 0x0022, 0x04ad, 0x04b0, - 0x04b3, 0x04b6, 0x04b9, 0x04bc, 0x04bf, 0x0007, 0x0000, 0x22dd, - 0x22d9, 0x04dd, 0x2157, 0x04dd, 0x21e5, 0x228e, 0x0007, 0x0022, - 0x04ad, 0x04b0, 0x04b3, 0x04b6, 0x04b9, 0x04bc, 0x04bf, 0x0007, - 0x0022, 0x0513, 0x051d, 0x0527, 0x052f, 0x053b, 0x0543, 0x054d, - // Entry 16F80 - 16FBF - 0x0002, 0x0145, 0x015e, 0x0003, 0x0149, 0x0150, 0x0157, 0x0005, - 0x0022, 0xffff, 0x0556, 0x055f, 0x0568, 0x0571, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0022, 0xffff, - 0x057a, 0x0588, 0x0596, 0x05a4, 0x0003, 0x0162, 0x0169, 0x0170, - 0x0005, 0x0022, 0xffff, 0x0556, 0x055f, 0x0568, 0x0571, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0022, - 0xffff, 0x057a, 0x0588, 0x0596, 0x05a4, 0x0002, 0x017a, 0x01ed, - 0x0003, 0x017e, 0x01a3, 0x01c8, 0x0009, 0x018b, 0x0191, 0x0188, - // Entry 16FC0 - 16FFF - 0x0194, 0x019a, 0x019d, 0x01a0, 0x018e, 0x0197, 0x0001, 0x0022, - 0x05b2, 0x0001, 0x0022, 0x05bf, 0x0001, 0x0022, 0x05c3, 0x0001, - 0x0022, 0x05cb, 0x0001, 0x0022, 0x05cf, 0x0001, 0x0022, 0x05d7, - 0x0001, 0x0022, 0x05de, 0x0001, 0x0022, 0x05e5, 0x0001, 0x0022, - 0x05ed, 0x0009, 0x01b0, 0x01b6, 0x01ad, 0x01b9, 0x01bf, 0x01c2, - 0x01c5, 0x01b3, 0x01bc, 0x0001, 0x0022, 0x05f5, 0x0001, 0x0022, - 0x05bf, 0x0001, 0x0022, 0x05f9, 0x0001, 0x0022, 0x05cb, 0x0001, - 0x0022, 0x05cf, 0x0001, 0x0022, 0x05bf, 0x0001, 0x0022, 0x05cb, - // Entry 17000 - 1703F - 0x0001, 0x0022, 0x05e5, 0x0001, 0x0022, 0x05ed, 0x0009, 0x01d5, - 0x01db, 0x01d2, 0x01de, 0x01e4, 0x01e7, 0x01ea, 0x01d8, 0x01e1, - 0x0001, 0x0022, 0x05b2, 0x0001, 0x0022, 0x05bf, 0x0001, 0x0022, - 0x05fd, 0x0001, 0x0022, 0x05cb, 0x0001, 0x0022, 0x05cf, 0x0001, - 0x0022, 0x060e, 0x0001, 0x0022, 0x061e, 0x0001, 0x0022, 0x05e5, - 0x0001, 0x0022, 0x05ed, 0x0003, 0x01f1, 0x0216, 0x023b, 0x0009, - 0x01fe, 0x0204, 0x01fb, 0x0207, 0x020d, 0x0210, 0x0213, 0x0201, - 0x020a, 0x0001, 0x0022, 0x062e, 0x0001, 0x0022, 0x05bf, 0x0001, - // Entry 17040 - 1707F - 0x0022, 0x05c3, 0x0001, 0x0022, 0x05cb, 0x0001, 0x0022, 0x0637, - 0x0001, 0x0022, 0x05d7, 0x0001, 0x0022, 0x05de, 0x0001, 0x0022, - 0x063c, 0x0001, 0x0022, 0x0641, 0x0009, 0x0223, 0x0229, 0x0220, - 0x022c, 0x0232, 0x0235, 0x0238, 0x0226, 0x022f, 0x0001, 0x0022, - 0x05f5, 0x0001, 0x0022, 0x05bf, 0x0001, 0x0022, 0x05f9, 0x0001, - 0x0022, 0x05cb, 0x0001, 0x0022, 0x0637, 0x0001, 0x0022, 0x05bf, - 0x0001, 0x0022, 0x05cb, 0x0001, 0x0022, 0x063c, 0x0001, 0x0022, - 0x0641, 0x0009, 0x0248, 0x024e, 0x0245, 0x0251, 0x0257, 0x025a, - // Entry 17080 - 170BF - 0x025d, 0x024b, 0x0254, 0x0001, 0x0022, 0x062e, 0x0001, 0x0022, - 0x05bf, 0x0001, 0x0022, 0x0645, 0x0001, 0x0022, 0x05cb, 0x0001, - 0x0022, 0x0637, 0x0001, 0x0022, 0x0652, 0x0001, 0x0022, 0x065e, - 0x0001, 0x0022, 0x063c, 0x0001, 0x0022, 0x0641, 0x0003, 0x026f, - 0x027a, 0x0264, 0x0002, 0x0267, 0x026b, 0x0002, 0x0022, 0x066a, - 0x069d, 0x0002, 0x0022, 0x0686, 0x06bb, 0x0002, 0x0272, 0x0276, - 0x0002, 0x0022, 0x06d4, 0x06de, 0x0002, 0x0022, 0x06d9, 0x06e3, - 0x0002, 0x027d, 0x0281, 0x0002, 0x0015, 0x01eb, 0x2371, 0x0002, - // Entry 170C0 - 170FF - 0x0022, 0x06e8, 0x06ec, 0x0004, 0x0293, 0x028d, 0x028a, 0x0290, - 0x0001, 0x0022, 0x06f0, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0017, - 0x03cc, 0x0001, 0x0017, 0x03cc, 0x0004, 0x02a4, 0x029e, 0x029b, - 0x02a1, 0x0001, 0x001c, 0x045a, 0x0001, 0x001c, 0x0467, 0x0001, - 0x001c, 0x0471, 0x0001, 0x001c, 0x0479, 0x0004, 0x02b5, 0x02af, - 0x02ac, 0x02b2, 0x0001, 0x0022, 0x030b, 0x0001, 0x0022, 0x030b, - 0x0001, 0x0022, 0x030b, 0x0001, 0x0000, 0x03c6, 0x0001, 0x02ba, - 0x0002, 0x02bd, 0x02d1, 0x0003, 0x0000, 0x0000, 0x02c1, 0x000e, - // Entry 17100 - 1713F - 0x0022, 0x0758, 0x06ff, 0x070c, 0x071a, 0x0727, 0x0733, 0x0740, - 0x074d, 0x0766, 0x0772, 0x077e, 0x078a, 0x0797, 0x079f, 0x0003, - 0x02d5, 0x02e5, 0x02f5, 0x000e, 0x0022, 0x07e0, 0x07aa, 0x07b2, - 0x07bb, 0x07c3, 0x07ca, 0x07d2, 0x07da, 0x07e9, 0x07f0, 0x07f7, - 0x07fe, 0x0806, 0x0809, 0x000e, 0x0000, 0x2382, 0x04dd, 0x19c7, - 0x2157, 0x04dd, 0x22dd, 0x2382, 0x2382, 0x22ee, 0x2055, 0x22dd, - 0x04dd, 0x2382, 0x214e, 0x000e, 0x0022, 0x085a, 0x080f, 0x081a, - 0x0826, 0x0831, 0x083b, 0x0846, 0x0851, 0x0866, 0x0870, 0x087a, - // Entry 17140 - 1717F - 0x0884, 0x088f, 0x0895, 0x0001, 0x0307, 0x0002, 0x030a, 0x031d, - 0x0003, 0x0000, 0x0000, 0x030e, 0x000d, 0x0022, 0xffff, 0x089e, - 0x08a7, 0x08ad, 0x08be, 0x08cf, 0x08de, 0x08f0, 0x08f8, 0x0902, - 0x090a, 0x0912, 0x0920, 0x0003, 0x0000, 0x0000, 0x0321, 0x000d, - 0x0022, 0xffff, 0x089e, 0x08a7, 0x08ad, 0x08be, 0x08cf, 0x08de, - 0x08f0, 0x08f8, 0x0902, 0x090a, 0x0912, 0x0920, 0x0006, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0337, 0x0004, 0x0345, 0x033f, - 0x033c, 0x0342, 0x0001, 0x0022, 0x02ef, 0x0001, 0x0013, 0x0477, - // Entry 17180 - 171BF - 0x0001, 0x0008, 0x0627, 0x0001, 0x0008, 0x062f, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x034e, 0x0001, 0x0350, 0x0001, 0x0352, - 0x0002, 0x0000, 0x1a20, 0x2290, 0x0040, 0x0397, 0x0000, 0x0000, - 0x039c, 0x03b3, 0x03ca, 0x03e1, 0x03f8, 0x040f, 0x0426, 0x043d, - 0x0454, 0x046b, 0x0486, 0x04a1, 0x0000, 0x0000, 0x0000, 0x04bc, - 0x04d5, 0x04ee, 0x0000, 0x0000, 0x0000, 0x0507, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x050c, 0x0520, 0x0534, 0x0548, 0x055c, - 0x0570, 0x0584, 0x0598, 0x05ac, 0x05c0, 0x05d4, 0x05e8, 0x05fc, - // Entry 171C0 - 171FF - 0x0610, 0x0624, 0x0638, 0x064c, 0x0660, 0x0674, 0x0688, 0x069c, - 0x0000, 0x06b0, 0x0000, 0x06b5, 0x06cb, 0x06e1, 0x06f7, 0x070d, - 0x0723, 0x0739, 0x074f, 0x0765, 0x077b, 0x0001, 0x0399, 0x0001, - 0x0022, 0x092e, 0x0003, 0x03a0, 0x03a3, 0x03a8, 0x0001, 0x0022, - 0x0938, 0x0003, 0x0022, 0x093e, 0x094b, 0x0959, 0x0002, 0x03ab, - 0x03af, 0x0002, 0x0022, 0x0965, 0x0965, 0x0002, 0x0022, 0x098b, - 0x097a, 0x0003, 0x03b7, 0x03ba, 0x03bf, 0x0001, 0x0000, 0x1f94, - 0x0003, 0x0022, 0x099d, 0x09a5, 0x09ae, 0x0002, 0x03c2, 0x03c6, - // Entry 17200 - 1723F - 0x0002, 0x0022, 0x09b5, 0x09b5, 0x0002, 0x0022, 0x09c5, 0x09c5, - 0x0003, 0x03ce, 0x03d1, 0x03d6, 0x0001, 0x0000, 0x1f94, 0x0003, - 0x0022, 0x099d, 0x09a5, 0x09ae, 0x0002, 0x03d9, 0x03dd, 0x0002, - 0x0022, 0x09b5, 0x09b5, 0x0002, 0x0022, 0x09c5, 0x09c5, 0x0003, - 0x03e5, 0x03e8, 0x03ed, 0x0001, 0x0022, 0x09d2, 0x0003, 0x0022, - 0x09e2, 0x09f9, 0x0a11, 0x0002, 0x03f0, 0x03f4, 0x0002, 0x0022, - 0x0a27, 0x0a27, 0x0002, 0x0022, 0x0a61, 0x0a46, 0x0003, 0x03fc, - 0x03ff, 0x0404, 0x0001, 0x0022, 0x0a7d, 0x0003, 0x0022, 0x0a88, - // Entry 17240 - 1727F - 0x0a9e, 0x0ab5, 0x0002, 0x0407, 0x040b, 0x0002, 0x0022, 0x0aca, - 0x0aca, 0x0002, 0x0022, 0x0afc, 0x0ae6, 0x0003, 0x0413, 0x0416, - 0x041b, 0x0001, 0x0022, 0x0b15, 0x0003, 0x0022, 0x0b1b, 0x0b27, - 0x0b34, 0x0002, 0x041e, 0x0422, 0x0002, 0x0022, 0x0b3f, 0x0b3f, - 0x0002, 0x0022, 0x0b53, 0x0b53, 0x0003, 0x042a, 0x042d, 0x0432, - 0x0001, 0x0022, 0x0b64, 0x0003, 0x0022, 0x0b6d, 0x0b7a, 0x0b89, - 0x0002, 0x0435, 0x0439, 0x0002, 0x0022, 0x0b95, 0x0b95, 0x0002, - 0x0022, 0x0bc1, 0x0bad, 0x0003, 0x0441, 0x0444, 0x0449, 0x0001, - // Entry 17280 - 172BF - 0x0022, 0x0bd6, 0x0003, 0x0022, 0x0bd9, 0x0be2, 0x0bed, 0x0002, - 0x044c, 0x0450, 0x0002, 0x0022, 0x0bf5, 0x0bf5, 0x0002, 0x0022, - 0x0c06, 0x0c06, 0x0003, 0x0458, 0x045b, 0x0460, 0x0001, 0x0022, - 0x0bd6, 0x0003, 0x0022, 0x0bd9, 0x0be2, 0x0bed, 0x0002, 0x0463, - 0x0467, 0x0002, 0x0022, 0x0bf5, 0x0bf5, 0x0002, 0x0022, 0x0c06, - 0x0c06, 0x0004, 0x0470, 0x0473, 0x0478, 0x0483, 0x0001, 0x0022, - 0x0c14, 0x0003, 0x0022, 0x0c1b, 0x0c2a, 0x0c3b, 0x0002, 0x047b, - 0x047f, 0x0002, 0x0022, 0x0c49, 0x0c49, 0x0002, 0x0022, 0x0c70, - // Entry 172C0 - 172FF - 0x0c5e, 0x0001, 0x0022, 0x0c83, 0x0004, 0x048b, 0x048e, 0x0493, - 0x049e, 0x0001, 0x0022, 0x0c99, 0x0003, 0x0022, 0x0c9c, 0x0ca5, - 0x0cb0, 0x0002, 0x0496, 0x049a, 0x0002, 0x0022, 0x0cb8, 0x0cb8, - 0x0002, 0x0022, 0x0cc9, 0x0cc9, 0x0001, 0x0022, 0x0c83, 0x0004, - 0x04a6, 0x04a9, 0x04ae, 0x04b9, 0x0001, 0x0022, 0x0c99, 0x0003, - 0x0022, 0x0c9c, 0x0ca5, 0x0cb0, 0x0002, 0x04b1, 0x04b5, 0x0002, - 0x0022, 0x0cb8, 0x0cb8, 0x0002, 0x0022, 0x0cc9, 0x0cc9, 0x0001, - 0x0022, 0x0c83, 0x0003, 0x04c0, 0x04c3, 0x04ca, 0x0001, 0x0022, - // Entry 17300 - 1733F - 0x0cd7, 0x0005, 0x0022, 0x0cf1, 0x0cf7, 0x0d01, 0x0cdf, 0x0d0a, - 0x0002, 0x04cd, 0x04d1, 0x0002, 0x0022, 0x0d16, 0x0d16, 0x0002, - 0x0022, 0x0d40, 0x0d2d, 0x0003, 0x04d9, 0x04dc, 0x04e3, 0x0001, - 0x0022, 0x0d55, 0x0005, 0x0022, 0x0cf1, 0x0cf7, 0x0d61, 0x0d58, - 0x0d67, 0x0002, 0x04e6, 0x04ea, 0x0002, 0x0022, 0x0d70, 0x0d70, - 0x0002, 0x0022, 0x0d81, 0x0d81, 0x0003, 0x04f2, 0x04f5, 0x04fc, - 0x0001, 0x0022, 0x0d55, 0x0005, 0x0022, 0x0cf1, 0x0cf7, 0x0d61, - 0x0d58, 0x0d67, 0x0002, 0x04ff, 0x0503, 0x0002, 0x0022, 0x0d70, - // Entry 17340 - 1737F - 0x0d70, 0x0002, 0x0022, 0x0d81, 0x0d81, 0x0001, 0x0509, 0x0001, - 0x0022, 0x0d8f, 0x0003, 0x0000, 0x0510, 0x0515, 0x0003, 0x0022, - 0x0d9d, 0x0daf, 0x0dc2, 0x0002, 0x0518, 0x051c, 0x0002, 0x0022, - 0x0dd3, 0x0dd3, 0x0002, 0x0022, 0x0e01, 0x0dec, 0x0003, 0x0000, - 0x0524, 0x0529, 0x0003, 0x0022, 0x0e18, 0x0e21, 0x0e2b, 0x0002, - 0x052c, 0x0530, 0x0002, 0x0022, 0x0e33, 0x0e33, 0x0002, 0x0022, - 0x0e44, 0x0e44, 0x0003, 0x0000, 0x0538, 0x053d, 0x0003, 0x0022, - 0x0e18, 0x0e21, 0x0e2b, 0x0002, 0x0540, 0x0544, 0x0002, 0x0022, - // Entry 17380 - 173BF - 0x0e33, 0x0e33, 0x0002, 0x0022, 0x0e44, 0x0e44, 0x0003, 0x0000, - 0x054c, 0x0551, 0x0003, 0x0022, 0x0e52, 0x0e64, 0x0e77, 0x0002, - 0x0554, 0x0558, 0x0002, 0x0022, 0x0e88, 0x0e88, 0x0002, 0x0022, - 0x0eb6, 0x0ea1, 0x0003, 0x0000, 0x0560, 0x0565, 0x0003, 0x0022, - 0x0ecd, 0x0ed6, 0x0ee0, 0x0002, 0x0568, 0x056c, 0x0002, 0x0022, - 0x0ee8, 0x0ee8, 0x0002, 0x0022, 0x0ef9, 0x0ef9, 0x0003, 0x0000, - 0x0574, 0x0579, 0x0003, 0x0022, 0x0ecd, 0x0ed6, 0x0ee0, 0x0002, - 0x057c, 0x0580, 0x0002, 0x0022, 0x0ee8, 0x0ee8, 0x0002, 0x0022, - // Entry 173C0 - 173FF - 0x0ef9, 0x0ef9, 0x0003, 0x0000, 0x0588, 0x058d, 0x0003, 0x0022, - 0x0f07, 0x0f17, 0x0f28, 0x0002, 0x0590, 0x0594, 0x0002, 0x0022, - 0x0f37, 0x0f37, 0x0002, 0x0022, 0x0f61, 0x0f4e, 0x0003, 0x0000, - 0x059c, 0x05a1, 0x0003, 0x0022, 0x0f76, 0x0f7f, 0x0f89, 0x0002, - 0x05a4, 0x05a8, 0x0002, 0x0022, 0x0f91, 0x0f91, 0x0002, 0x0022, - 0x0fa2, 0x0fa2, 0x0003, 0x0000, 0x05b0, 0x05b5, 0x0003, 0x0022, - 0x0f76, 0x0f7f, 0x0f89, 0x0002, 0x05b8, 0x05bc, 0x0002, 0x0022, - 0x0f91, 0x0f91, 0x0002, 0x0022, 0x0fa2, 0x0fa2, 0x0003, 0x0000, - // Entry 17400 - 1743F - 0x05c4, 0x05c9, 0x0003, 0x0022, 0x0fb0, 0x0fc4, 0x0fd9, 0x0002, - 0x05cc, 0x05d0, 0x0002, 0x0022, 0x0fec, 0x0fec, 0x0002, 0x0022, - 0x101d, 0x1006, 0x0003, 0x0000, 0x05d8, 0x05dd, 0x0003, 0x0022, - 0x1035, 0x103e, 0x1048, 0x0002, 0x05e0, 0x05e4, 0x0002, 0x0022, - 0x1050, 0x1050, 0x0002, 0x0022, 0x1061, 0x1061, 0x0003, 0x0000, - 0x05ec, 0x05f1, 0x0003, 0x0022, 0x1035, 0x103e, 0x1048, 0x0002, - 0x05f4, 0x05f8, 0x0002, 0x0022, 0x1050, 0x1050, 0x0002, 0x0022, - 0x1061, 0x1061, 0x0003, 0x0000, 0x0600, 0x0605, 0x0003, 0x0022, - // Entry 17440 - 1747F - 0x106f, 0x107f, 0x1090, 0x0002, 0x0608, 0x060c, 0x0002, 0x0022, - 0x109f, 0x109f, 0x0002, 0x0022, 0x10c9, 0x10b6, 0x0003, 0x0000, - 0x0614, 0x0619, 0x0003, 0x0022, 0x10de, 0x10e7, 0x10f1, 0x0002, - 0x061c, 0x0620, 0x0002, 0x0022, 0x10f9, 0x10f9, 0x0002, 0x0022, - 0x110a, 0x110a, 0x0003, 0x0000, 0x0628, 0x062d, 0x0003, 0x0022, - 0x10de, 0x10e7, 0x10f1, 0x0002, 0x0630, 0x0634, 0x0002, 0x0022, - 0x10f9, 0x10f9, 0x0002, 0x0022, 0x110a, 0x110a, 0x0003, 0x0000, - 0x063c, 0x0641, 0x0003, 0x0022, 0x1118, 0x112a, 0x113d, 0x0002, - // Entry 17480 - 174BF - 0x0644, 0x0648, 0x0002, 0x0022, 0x114e, 0x114e, 0x0002, 0x0022, - 0x117c, 0x1167, 0x0003, 0x0000, 0x0650, 0x0655, 0x0003, 0x0022, - 0x1193, 0x119c, 0x11a6, 0x0002, 0x0658, 0x065c, 0x0002, 0x0022, - 0x11ae, 0x11ae, 0x0002, 0x0022, 0x11bf, 0x11bf, 0x0003, 0x0000, - 0x0664, 0x0669, 0x0003, 0x0022, 0x1193, 0x119c, 0x11a6, 0x0002, - 0x066c, 0x0670, 0x0002, 0x0022, 0x11ae, 0x11ae, 0x0002, 0x0022, - 0x11bf, 0x11bf, 0x0003, 0x0000, 0x0678, 0x067d, 0x0003, 0x0022, - 0x11cd, 0x11de, 0x11f0, 0x0002, 0x0680, 0x0684, 0x0002, 0x0022, - // Entry 174C0 - 174FF - 0x1200, 0x1200, 0x0002, 0x0022, 0x122c, 0x1218, 0x0003, 0x0000, - 0x068c, 0x0691, 0x0003, 0x0022, 0x1242, 0x124b, 0x1255, 0x0002, - 0x0694, 0x0698, 0x0002, 0x0022, 0x125d, 0x125d, 0x0002, 0x0022, - 0x126e, 0x126e, 0x0003, 0x0000, 0x06a0, 0x06a5, 0x0003, 0x0022, - 0x1242, 0x124b, 0x1255, 0x0002, 0x06a8, 0x06ac, 0x0002, 0x0022, - 0x125d, 0x125d, 0x0002, 0x0022, 0x126e, 0x126e, 0x0001, 0x06b2, - 0x0001, 0x0022, 0x127c, 0x0003, 0x06b9, 0x06bc, 0x06c0, 0x0001, - 0x0022, 0x128c, 0x0002, 0x0022, 0xffff, 0x1292, 0x0002, 0x06c3, - // Entry 17500 - 1753F - 0x06c7, 0x0002, 0x0022, 0x12a8, 0x12a8, 0x0002, 0x0022, 0x12ce, - 0x12bd, 0x0003, 0x06cf, 0x06d2, 0x06d6, 0x0001, 0x0000, 0x2000, - 0x0002, 0x0022, 0xffff, 0x12e0, 0x0002, 0x06d9, 0x06dd, 0x0002, - 0x0022, 0x12f1, 0x12f1, 0x0002, 0x0022, 0x1301, 0x1301, 0x0003, - 0x06e5, 0x06e8, 0x06ec, 0x0001, 0x0000, 0x2000, 0x0002, 0x0022, - 0xffff, 0x12e0, 0x0002, 0x06ef, 0x06f3, 0x0002, 0x0022, 0x12f1, - 0x12f1, 0x0002, 0x0022, 0x1301, 0x1301, 0x0003, 0x06fb, 0x06fe, - 0x0702, 0x0001, 0x0022, 0x130e, 0x0002, 0x0022, 0xffff, 0x1317, - // Entry 17540 - 1757F - 0x0002, 0x0705, 0x0709, 0x0002, 0x0022, 0x132f, 0x132f, 0x0002, - 0x0022, 0x135a, 0x1346, 0x0003, 0x0711, 0x0714, 0x0718, 0x0001, - 0x000b, 0x1250, 0x0002, 0x0022, 0xffff, 0x136f, 0x0002, 0x071b, - 0x071f, 0x0002, 0x0022, 0x1382, 0x1382, 0x0002, 0x0022, 0x1394, - 0x1394, 0x0003, 0x0727, 0x072a, 0x072e, 0x0001, 0x000b, 0x1250, - 0x0002, 0x0022, 0xffff, 0x136f, 0x0002, 0x0731, 0x0735, 0x0002, - 0x0022, 0x1382, 0x1382, 0x0002, 0x0022, 0x1394, 0x1394, 0x0003, - 0x073d, 0x0740, 0x0744, 0x0001, 0x0022, 0x13a3, 0x0002, 0x0022, - // Entry 17580 - 175BF - 0xffff, 0x13ab, 0x0002, 0x0747, 0x074b, 0x0002, 0x0022, 0x13af, - 0x13af, 0x0002, 0x0022, 0x13d9, 0x13c6, 0x0003, 0x0753, 0x0756, - 0x075a, 0x0001, 0x0000, 0x2002, 0x0002, 0x0022, 0xffff, 0x13ab, - 0x0002, 0x075d, 0x0761, 0x0002, 0x0022, 0x13ed, 0x13ed, 0x0002, - 0x0022, 0x13fd, 0x13fd, 0x0003, 0x0769, 0x076c, 0x0770, 0x0001, - 0x0000, 0x2002, 0x0002, 0x0022, 0xffff, 0x13ab, 0x0002, 0x0773, - 0x0777, 0x0002, 0x0022, 0x13ed, 0x13ed, 0x0002, 0x0022, 0x13fd, - 0x13fd, 0x0001, 0x077d, 0x0001, 0x0022, 0x140a, 0x0004, 0x0785, - // Entry 175C0 - 175FF - 0x078a, 0x078f, 0x079e, 0x0003, 0x0022, 0x1417, 0x1423, 0x142a, - 0x0003, 0x0022, 0x142e, 0x1440, 0x1450, 0x0002, 0x0000, 0x0792, - 0x0003, 0x0000, 0x0799, 0x0796, 0x0001, 0x0022, 0x1463, 0x0003, - 0x0022, 0xffff, 0x1476, 0x148b, 0x0002, 0x0000, 0x07a1, 0x0003, - 0x07a5, 0x08e5, 0x0845, 0x009e, 0x0022, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1517, 0x1560, 0x15c8, 0x15ff, 0x165d, 0x16bb, 0x1701, - 0x1768, 0x179f, 0x183e, 0x1884, 0x18c4, 0x1919, 0x1950, 0x199f, - 0x19ee, 0x1a5b, 0x1aa7, 0x1af9, 0x1b42, 0x1b76, 0xffff, 0xffff, - // Entry 17600 - 1763F - 0x1bd5, 0xffff, 0x1c1c, 0xffff, 0x1c75, 0x1caf, 0x1ce0, 0x1d11, - 0xffff, 0xffff, 0x1d75, 0x1daf, 0x1df5, 0xffff, 0xffff, 0xffff, - 0x1e5e, 0xffff, 0x1ebf, 0x1f08, 0xffff, 0x1f69, 0x1fb5, 0x2007, - 0xffff, 0xffff, 0xffff, 0xffff, 0x20a9, 0xffff, 0xffff, 0x210d, - 0x215c, 0xffff, 0xffff, 0x21ea, 0x223f, 0x227c, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2322, 0x2353, 0x238d, 0x23c4, - 0x23f8, 0xffff, 0xffff, 0x2466, 0xffff, 0x24a4, 0xffff, 0xffff, - 0x251a, 0xffff, 0x259e, 0xffff, 0xffff, 0xffff, 0xffff, 0x261f, - // Entry 17640 - 1767F - 0xffff, 0x2670, 0x26bf, 0x271a, 0x275d, 0xffff, 0xffff, 0xffff, - 0x27bc, 0x280b, 0x2857, 0xffff, 0xffff, 0x28c1, 0x2934, 0x297a, - 0x29ab, 0xffff, 0xffff, 0x2a0d, 0x2a47, 0x2a75, 0xffff, 0x2acc, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bcc, 0x2c06, 0x2c3a, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2cdd, - 0xffff, 0xffff, 0x2d33, 0xffff, 0x2d71, 0xffff, 0x2dc7, 0x2dfe, - 0x2e41, 0xffff, 0x2e88, 0x2ece, 0xffff, 0xffff, 0xffff, 0x2f40, - 0x2f7a, 0xffff, 0xffff, 0x149e, 0x1594, 0x17cd, 0x1807, 0xffff, - // Entry 17680 - 176BF - 0xffff, 0x2557, 0x2b6b, 0x009e, 0x0022, 0x14cc, 0x14de, 0x14f1, - 0x1503, 0x152b, 0x156d, 0x15d6, 0x161a, 0x1678, 0x16ce, 0x171f, - 0x1776, 0x17aa, 0x1851, 0x1895, 0x18dc, 0x1927, 0x1966, 0x19b5, - 0x1a0e, 0x1a70, 0x1abe, 0x1b0d, 0x1b4f, 0x1b88, 0x1bb9, 0x1bc7, - 0x1be4, 0x1c0f, 0x1c2c, 0x1c65, 0x1c84, 0x1cbb, 0x1cec, 0x1d22, - 0x1d51, 0x1d62, 0x1d84, 0x1dc2, 0x1e01, 0x1e26, 0x1e33, 0x1e4c, - 0x1e75, 0x1eb0, 0x1ed3, 0x1f1b, 0x1f4e, 0x1f7e, 0x1fcc, 0x2014, - 0x203b, 0x2051, 0x2083, 0x209a, 0x20b7, 0x20e0, 0x20f4, 0x2123, - // Entry 176C0 - 176FF - 0x2174, 0x21bd, 0x21dd, 0x2202, 0x224f, 0x2288, 0x22ad, 0x22b9, - 0x22d0, 0x22e0, 0x22f6, 0x230b, 0x232e, 0x2362, 0x239b, 0x23d1, - 0x2409, 0x2438, 0x244e, 0x2472, 0x2497, 0x24b7, 0x24ea, 0x2509, - 0x252a, 0x2588, 0x25ad, 0x25d8, 0x25e6, 0x25f7, 0x2608, 0x2631, - 0x2662, 0x2686, 0x26d9, 0x272c, 0x276b, 0x2794, 0x27a3, 0x27af, - 0x27d2, 0x2820, 0x286b, 0x28a0, 0x28ab, 0x28db, 0x2947, 0x2986, - 0x29bb, 0x29e8, 0x29f4, 0x2a1c, 0x2a52, 0x2a87, 0x2ab8, 0x2aed, - 0x2b3c, 0x2b4c, 0x2b5a, 0x2bae, 0x2bbe, 0x2bdb, 0x2c13, 0x2c46, - // Entry 17700 - 1773F - 0x2c6b, 0x2c7c, 0x2c8c, 0x2ca0, 0x2cb5, 0x2cc4, 0x2cd0, 0x2cea, - 0x2d11, 0x2d25, 0x2d3f, 0x2d64, 0x2d85, 0x2dba, 0x2dd5, 0x2e10, - 0x2e4f, 0x2e78, 0x2e9b, 0x2edf, 0x2f0e, 0x2f1c, 0x2f27, 0x2f4f, - 0x2f8f, 0x21b1, 0x291c, 0x14a9, 0x15a1, 0x17dc, 0x1815, 0x1c59, - 0x24f9, 0x2563, 0x2b7d, 0x009e, 0x0022, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1547, 0x1582, 0x15ec, 0x163d, 0x169b, 0x16e9, 0x1745, - 0x178c, 0x17bd, 0x186c, 0x18ae, 0x18fc, 0x193d, 0x1984, 0x19d3, - 0x1a36, 0x1a8d, 0x1add, 0x1b29, 0x1b64, 0x1ba2, 0xffff, 0xffff, - // Entry 17740 - 1777F - 0x1bfb, 0xffff, 0x1c44, 0xffff, 0x1c9b, 0x1ccf, 0x1d00, 0x1d3b, - 0xffff, 0xffff, 0x1d9b, 0x1ddd, 0x1e15, 0xffff, 0xffff, 0xffff, - 0x1e94, 0xffff, 0x1eef, 0x1f36, 0xffff, 0x1f9b, 0x1feb, 0x2029, - 0xffff, 0xffff, 0xffff, 0xffff, 0x20cd, 0xffff, 0xffff, 0x2141, - 0x2194, 0xffff, 0xffff, 0x2222, 0x2267, 0x229c, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2342, 0x2379, 0x23b1, 0x23e6, - 0x2422, 0xffff, 0xffff, 0x2486, 0xffff, 0x24d2, 0xffff, 0xffff, - 0x2542, 0xffff, 0x25c4, 0xffff, 0xffff, 0xffff, 0xffff, 0x264b, - // Entry 17780 - 177BF - 0xffff, 0x26a4, 0x26fb, 0x2746, 0x2781, 0xffff, 0xffff, 0xffff, - 0x27f0, 0x283d, 0x2887, 0xffff, 0xffff, 0x28fd, 0x2962, 0x299a, - 0x29d3, 0xffff, 0xffff, 0x2a33, 0x2a65, 0x2aa1, 0xffff, 0x2b16, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bf2, 0x2c28, 0x2c5a, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2cff, - 0xffff, 0xffff, 0x2d53, 0xffff, 0x2da1, 0xffff, 0x2deb, 0x2e2a, - 0x2e65, 0xffff, 0x2eb6, 0x2ef8, 0xffff, 0xffff, 0xffff, 0x2f66, - 0x2fac, 0xffff, 0xffff, 0x14bc, 0x15b6, 0x17f3, 0x182b, 0xffff, - // Entry 177C0 - 177FF - 0xffff, 0x2577, 0x2b97, 0x0003, 0x0004, 0x0268, 0x067a, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x000c, - 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, - 0x0012, 0x0203, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, - 0x0023, 0x0000, 0x0001, 0x0023, 0x0000, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, - // Entry 17800 - 1783F - 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, 0x0075, 0x0003, - 0x0048, 0x0057, 0x0066, 0x000d, 0x0023, 0xffff, 0x000f, 0x0013, - 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, 0x0033, - 0x0037, 0x003b, 0x000d, 0x0023, 0xffff, 0x000f, 0x0013, 0x0017, - 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, 0x0033, 0x0037, - 0x003b, 0x000d, 0x001e, 0xffff, 0x181f, 0x1fee, 0x1ff6, 0x1833, - 0x1839, 0x1ffc, 0x2002, 0x184a, 0x2008, 0x2012, 0x201a, 0x2024, - 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0023, 0xffff, 0x000f, - // Entry 17840 - 1787F - 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, 0x002f, - 0x0033, 0x0037, 0x003b, 0x000d, 0x0000, 0xffff, 0x214e, 0x21e5, - 0x22d9, 0x2382, 0x22d9, 0x239b, 0x239f, 0x23a3, 0x23a7, 0x23ab, - 0x23af, 0x23b3, 0x000d, 0x001e, 0xffff, 0x181f, 0x1fee, 0x1ff6, - 0x1833, 0x1839, 0x1ffc, 0x2002, 0x184a, 0x2008, 0x2012, 0x201a, - 0x2024, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, - 0x0000, 0x00c1, 0x0007, 0x0023, 0x003f, 0x0043, 0x0017, 0x0047, - 0x004b, 0x004f, 0x0053, 0x0007, 0x0023, 0x003f, 0x0043, 0x0017, - // Entry 17880 - 178BF - 0x0047, 0x004b, 0x004f, 0x0053, 0x0007, 0x0023, 0x0057, 0x005a, - 0x005d, 0x0060, 0x0063, 0x0066, 0x0069, 0x0007, 0x0023, 0x006c, - 0x0073, 0x0079, 0x0080, 0x008b, 0x0093, 0x009c, 0x0005, 0x00d9, - 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0023, 0x003f, 0x0043, - 0x0017, 0x0047, 0x004b, 0x004f, 0x0053, 0x0007, 0x0023, 0x003f, - 0x0043, 0x0017, 0x0047, 0x004b, 0x004f, 0x0053, 0x0007, 0x0023, - 0x0057, 0x005a, 0x005d, 0x0060, 0x0063, 0x0066, 0x0069, 0x0007, - 0x0023, 0x006c, 0x0073, 0x0079, 0x0080, 0x008b, 0x0093, 0x009c, - // Entry 178C0 - 178FF - 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, - 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0023, 0xffff, - 0x00a3, 0x00b1, 0x00bf, 0x00cd, 0x0003, 0x011d, 0x0124, 0x012b, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0023, - 0xffff, 0x00a3, 0x00b1, 0x00bf, 0x00cd, 0x0002, 0x0135, 0x01a8, - 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, 0x014c, 0x0143, - // Entry 17900 - 1793F - 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, 0x0001, 0x0023, - 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0023, 0x00e9, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x0023, 0x00fa, 0x0001, 0x0023, 0x0105, - 0x0001, 0x0023, 0x0113, 0x0001, 0x0023, 0x011c, 0x0001, 0x0023, - 0x0125, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, 0x017a, 0x017d, - 0x0180, 0x016e, 0x0177, 0x0001, 0x0023, 0x00de, 0x0001, 0x0000, - 0x2337, 0x0001, 0x0023, 0x00e9, 0x0001, 0x0000, 0x233a, 0x0001, - 0x0023, 0x012a, 0x0001, 0x0023, 0x0105, 0x0001, 0x0023, 0x0113, - // Entry 17940 - 1797F - 0x0001, 0x0023, 0x011c, 0x0001, 0x0023, 0x0125, 0x0009, 0x0190, - 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, 0x0193, 0x019c, - 0x0001, 0x0023, 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0023, - 0x00e9, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0023, 0x00fa, 0x0001, - 0x0023, 0x0105, 0x0001, 0x0023, 0x0113, 0x0001, 0x0023, 0x011c, - 0x0001, 0x0023, 0x0130, 0x0003, 0x01ac, 0x01d1, 0x01f6, 0x0009, - 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, 0x01ce, 0x01bc, - 0x01c5, 0x0001, 0x0023, 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, - // Entry 17980 - 179BF - 0x0023, 0x00e9, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0023, 0x012a, - 0x0001, 0x0023, 0x0105, 0x0001, 0x0023, 0x0113, 0x0001, 0x0023, - 0x0138, 0x0001, 0x0023, 0x0125, 0x0009, 0x01de, 0x01e4, 0x01db, - 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, 0x0001, 0x0023, - 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0023, 0x00e9, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x0023, 0x012a, 0x0001, 0x0023, 0x0105, - 0x0001, 0x0023, 0x0113, 0x0001, 0x0023, 0x0138, 0x0001, 0x0023, - 0x0125, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, 0x0212, 0x0215, - // Entry 179C0 - 179FF - 0x0218, 0x0206, 0x020f, 0x0001, 0x0023, 0x00de, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0023, 0x00e9, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x0023, 0x012a, 0x0001, 0x0023, 0x0105, 0x0001, 0x0023, 0x0113, - 0x0001, 0x0023, 0x0138, 0x0001, 0x0023, 0x0125, 0x0003, 0x022a, - 0x0000, 0x021f, 0x0002, 0x0222, 0x0226, 0x0002, 0x0009, 0x0078, - 0x5430, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x022d, 0x0231, - 0x0002, 0x0009, 0x0078, 0x5430, 0x0002, 0x0000, 0x04f5, 0x04f9, - 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, 0x000c, 0x03c9, - // Entry 17A00 - 17A3F - 0x0001, 0x000c, 0x03d9, 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, - 0x03ec, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, 0x0001, 0x0002, - 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, - 0x0002, 0x0478, 0x0004, 0x0265, 0x025f, 0x025c, 0x0262, 0x0001, - 0x0023, 0x0000, 0x0001, 0x0023, 0x0000, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0040, 0x02a9, 0x0000, 0x0000, 0x02ae, - 0x02c5, 0x02dc, 0x02f3, 0x030a, 0x0321, 0x0338, 0x034f, 0x0366, - 0x037d, 0x0398, 0x03b3, 0x0000, 0x0000, 0x0000, 0x03ce, 0x03e7, - // Entry 17A40 - 17A7F - 0x0400, 0x0000, 0x0000, 0x0000, 0x0419, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x041e, 0x0432, 0x0446, 0x045a, 0x046e, 0x0482, - 0x0496, 0x04aa, 0x04be, 0x04d2, 0x04e6, 0x04fa, 0x050e, 0x0522, - 0x0536, 0x054a, 0x055e, 0x0572, 0x0586, 0x059a, 0x05ae, 0x0000, - 0x05c2, 0x0000, 0x05c7, 0x05dd, 0x05ef, 0x0601, 0x0617, 0x0629, - 0x063b, 0x0651, 0x0663, 0x0675, 0x0001, 0x02ab, 0x0001, 0x0023, - 0x013e, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x0023, 0x0146, - 0x0003, 0x0023, 0x014b, 0x015a, 0x0167, 0x0002, 0x02bd, 0x02c1, - // Entry 17A80 - 17ABF - 0x0002, 0x0023, 0x0183, 0x0177, 0x0002, 0x0023, 0x01ab, 0x0194, - 0x0003, 0x02c9, 0x02cc, 0x02d1, 0x0001, 0x0023, 0x0146, 0x0003, - 0x0023, 0x014b, 0x015a, 0x0167, 0x0002, 0x02d4, 0x02d8, 0x0002, - 0x0023, 0x0183, 0x0177, 0x0002, 0x0023, 0x01ab, 0x0194, 0x0003, - 0x02e0, 0x02e3, 0x02e8, 0x0001, 0x0023, 0x0146, 0x0003, 0x0023, - 0x014b, 0x015a, 0x0167, 0x0002, 0x02eb, 0x02ef, 0x0002, 0x0023, - 0x0183, 0x0177, 0x0002, 0x0023, 0x01ab, 0x0194, 0x0003, 0x02f7, - 0x02fa, 0x02ff, 0x0001, 0x0000, 0x1a6a, 0x0003, 0x0023, 0x01c7, - // Entry 17AC0 - 17AFF - 0x01d9, 0x01e9, 0x0002, 0x0302, 0x0306, 0x0002, 0x0023, 0x020b, - 0x01fc, 0x0002, 0x0023, 0x0239, 0x021f, 0x0003, 0x030e, 0x0311, - 0x0316, 0x0001, 0x001b, 0x035f, 0x0003, 0x0023, 0x01c7, 0x01d9, - 0x01e9, 0x0002, 0x0319, 0x031d, 0x0002, 0x0023, 0x020b, 0x020b, - 0x0002, 0x0023, 0x0239, 0x021f, 0x0003, 0x0325, 0x0328, 0x032d, - 0x0001, 0x001b, 0x035f, 0x0003, 0x0023, 0x01c7, 0x01d9, 0x01e9, - 0x0002, 0x0330, 0x0334, 0x0002, 0x0023, 0x020b, 0x01fc, 0x0002, - 0x0023, 0x0239, 0x021f, 0x0003, 0x033c, 0x033f, 0x0344, 0x0001, - // Entry 17B00 - 17B3F - 0x0023, 0x0258, 0x0003, 0x0023, 0x025e, 0x026e, 0x027c, 0x0002, - 0x0347, 0x034b, 0x0002, 0x0023, 0x029a, 0x028d, 0x0002, 0x0023, - 0x02c4, 0x02ac, 0x0003, 0x0353, 0x0356, 0x035b, 0x0001, 0x0023, - 0x0258, 0x0003, 0x0023, 0x025e, 0x026e, 0x027c, 0x0002, 0x035e, - 0x0362, 0x0002, 0x0023, 0x029a, 0x028d, 0x0002, 0x0023, 0x02c4, - 0x02ac, 0x0003, 0x036a, 0x036d, 0x0372, 0x0001, 0x0023, 0x0258, - 0x0003, 0x0023, 0x025e, 0x026e, 0x027c, 0x0002, 0x0375, 0x0379, - 0x0002, 0x0023, 0x029a, 0x028d, 0x0002, 0x0023, 0x02c4, 0x02ac, - // Entry 17B40 - 17B7F - 0x0004, 0x0382, 0x0385, 0x038a, 0x0395, 0x0001, 0x0023, 0x02e1, - 0x0003, 0x0023, 0x02e8, 0x02fc, 0x030c, 0x0002, 0x038d, 0x0391, - 0x0002, 0x0023, 0x032c, 0x031e, 0x0002, 0x0023, 0x0358, 0x033f, - 0x0001, 0x0023, 0x0376, 0x0004, 0x039d, 0x03a0, 0x03a5, 0x03b0, - 0x0001, 0x0023, 0x02e1, 0x0003, 0x0023, 0x0384, 0x0395, 0x030c, - 0x0002, 0x03a8, 0x03ac, 0x0002, 0x0023, 0x032c, 0x031e, 0x0002, - 0x0023, 0x0358, 0x033f, 0x0001, 0x0023, 0x0376, 0x0004, 0x03b8, - 0x03bb, 0x03c0, 0x03cb, 0x0001, 0x0023, 0x02e1, 0x0003, 0x0023, - // Entry 17B80 - 17BBF - 0x0384, 0x0395, 0x030c, 0x0002, 0x03c3, 0x03c7, 0x0002, 0x0023, - 0x032c, 0x031e, 0x0002, 0x0023, 0x0358, 0x033f, 0x0001, 0x0023, - 0x0376, 0x0003, 0x03d2, 0x03d5, 0x03dc, 0x0001, 0x0023, 0x03a4, - 0x0005, 0x0023, 0x03bf, 0x03c7, 0x03d4, 0x03a9, 0x03da, 0x0002, - 0x03df, 0x03e3, 0x0002, 0x0023, 0x03f1, 0x03e5, 0x0002, 0x0023, - 0x0419, 0x0402, 0x0003, 0x03eb, 0x03ee, 0x03f5, 0x0001, 0x0023, - 0x03a4, 0x0005, 0x0023, 0x03bf, 0x03c7, 0x03d4, 0x03a9, 0x03da, - 0x0002, 0x03f8, 0x03fc, 0x0002, 0x0023, 0x03f1, 0x03f1, 0x0002, - // Entry 17BC0 - 17BFF - 0x0023, 0x0419, 0x0419, 0x0003, 0x0404, 0x0407, 0x040e, 0x0001, - 0x0023, 0x03a4, 0x0005, 0x0023, 0x03bf, 0x03c7, 0x03d4, 0x03a9, - 0x03da, 0x0002, 0x0411, 0x0415, 0x0002, 0x0023, 0x03f1, 0x03e5, - 0x0002, 0x0023, 0x0419, 0x0402, 0x0001, 0x041b, 0x0001, 0x0023, - 0x0435, 0x0003, 0x0000, 0x0422, 0x0427, 0x0003, 0x0023, 0x0384, - 0x0444, 0x044e, 0x0002, 0x042a, 0x042e, 0x0002, 0x0023, 0x046e, - 0x0460, 0x0002, 0x0023, 0x049a, 0x0481, 0x0003, 0x0000, 0x0436, - 0x043b, 0x0003, 0x0023, 0x04b8, 0x04c7, 0x04d4, 0x0002, 0x043e, - // Entry 17C00 - 17C3F - 0x0442, 0x0002, 0x0023, 0x046e, 0x0460, 0x0002, 0x0023, 0x049a, - 0x0481, 0x0003, 0x0000, 0x044a, 0x044f, 0x0003, 0x0023, 0x04b8, - 0x04c7, 0x04d4, 0x0002, 0x0452, 0x0456, 0x0002, 0x0023, 0x046e, - 0x031e, 0x0002, 0x0023, 0x049a, 0x0481, 0x0003, 0x0000, 0x045e, - 0x0463, 0x0003, 0x0023, 0x04e4, 0x04f4, 0x0502, 0x0002, 0x0466, - 0x046a, 0x0002, 0x0023, 0x0520, 0x0513, 0x0002, 0x0023, 0x054a, - 0x0532, 0x0003, 0x0000, 0x0472, 0x0477, 0x0003, 0x0023, 0x0567, - 0x0576, 0x0583, 0x0002, 0x047a, 0x047e, 0x0002, 0x0023, 0x0520, - // Entry 17C40 - 17C7F - 0x0513, 0x0002, 0x0023, 0x054a, 0x0532, 0x0003, 0x0000, 0x0486, - 0x048b, 0x0003, 0x0023, 0x0567, 0x0576, 0x0583, 0x0002, 0x048e, - 0x0492, 0x0002, 0x0023, 0x0513, 0x0513, 0x0002, 0x0023, 0x054a, - 0x0532, 0x0003, 0x0000, 0x049a, 0x049f, 0x0003, 0x0023, 0x0593, - 0x05a4, 0x05b3, 0x0002, 0x04a2, 0x04a6, 0x0002, 0x0023, 0x05d3, - 0x05c5, 0x0002, 0x0023, 0x05ff, 0x05e6, 0x0003, 0x0000, 0x04ae, - 0x04b3, 0x0003, 0x0023, 0x061d, 0x062c, 0x0639, 0x0002, 0x04b6, - 0x04ba, 0x0002, 0x0023, 0x05d3, 0x05c5, 0x0002, 0x0023, 0x05ff, - // Entry 17C80 - 17CBF - 0x05e6, 0x0003, 0x0000, 0x04c2, 0x04c7, 0x0003, 0x0023, 0x061d, - 0x062c, 0x0639, 0x0002, 0x04ca, 0x04ce, 0x0002, 0x0023, 0x0649, - 0x05c5, 0x0002, 0x0023, 0x05ff, 0x05e6, 0x0003, 0x0000, 0x04d6, - 0x04db, 0x0003, 0x0023, 0x066a, 0x067f, 0x0692, 0x0002, 0x04de, - 0x04e2, 0x0002, 0x0023, 0x06ba, 0x06a8, 0x0002, 0x0023, 0x06ee, - 0x06d1, 0x0003, 0x0000, 0x04ea, 0x04ef, 0x0003, 0x0023, 0x0710, - 0x071f, 0x072c, 0x0002, 0x04f2, 0x04f6, 0x0002, 0x0023, 0x06ba, - 0x06a8, 0x0002, 0x0023, 0x06ee, 0x06d1, 0x0003, 0x0000, 0x04fe, - // Entry 17CC0 - 17CFF - 0x0503, 0x0003, 0x0023, 0x0710, 0x071f, 0x072c, 0x0002, 0x0506, - 0x050a, 0x0002, 0x0023, 0x06ba, 0x06a8, 0x0002, 0x0023, 0x06ee, - 0x06d1, 0x0003, 0x0000, 0x0512, 0x0517, 0x0003, 0x0023, 0x073c, - 0x074e, 0x075e, 0x0002, 0x051a, 0x051e, 0x0002, 0x0023, 0x0780, - 0x0771, 0x0002, 0x0023, 0x07ae, 0x0794, 0x0003, 0x0000, 0x0526, - 0x052b, 0x0003, 0x0023, 0x07cd, 0x07dc, 0x07e9, 0x0002, 0x052e, - 0x0532, 0x0002, 0x0023, 0x0780, 0x0771, 0x0002, 0x0023, 0x07ae, - 0x0794, 0x0003, 0x0000, 0x053a, 0x053f, 0x0003, 0x0023, 0x07cd, - // Entry 17D00 - 17D3F - 0x07dc, 0x07e9, 0x0002, 0x0542, 0x0546, 0x0002, 0x0023, 0x0780, - 0x0771, 0x0002, 0x0023, 0x07ae, 0x0794, 0x0003, 0x0000, 0x054e, - 0x0553, 0x0003, 0x0023, 0x07f9, 0x080c, 0x081d, 0x0002, 0x0556, - 0x055a, 0x0002, 0x0023, 0x0841, 0x0831, 0x0002, 0x0023, 0x0871, - 0x0856, 0x0003, 0x0000, 0x0562, 0x0567, 0x0003, 0x0023, 0x0891, - 0x08a0, 0x08ad, 0x0002, 0x056a, 0x056e, 0x0002, 0x0023, 0x0841, - 0x0831, 0x0002, 0x0023, 0x0871, 0x0856, 0x0003, 0x0000, 0x0576, - 0x057b, 0x0003, 0x0023, 0x0891, 0x08a0, 0x08ad, 0x0002, 0x057e, - // Entry 17D40 - 17D7F - 0x0582, 0x0002, 0x0023, 0x0841, 0x0831, 0x0002, 0x0023, 0x0871, - 0x0856, 0x0003, 0x0000, 0x058a, 0x058f, 0x0003, 0x0023, 0x08bd, - 0x08ce, 0x08dd, 0x0002, 0x0592, 0x0596, 0x0002, 0x0023, 0x08fd, - 0x08ef, 0x0002, 0x0023, 0x0929, 0x0910, 0x0003, 0x0000, 0x059e, - 0x05a3, 0x0003, 0x0023, 0x0947, 0x0956, 0x0963, 0x0002, 0x05a6, - 0x05aa, 0x0002, 0x0023, 0x08fd, 0x08ef, 0x0002, 0x0023, 0x0929, - 0x0910, 0x0003, 0x0000, 0x05b2, 0x05b7, 0x0003, 0x0023, 0x0947, - 0x0956, 0x0963, 0x0002, 0x05ba, 0x05be, 0x0002, 0x0023, 0x0973, - // Entry 17D80 - 17DBF - 0x08ef, 0x0002, 0x0023, 0x0929, 0x0910, 0x0001, 0x05c4, 0x0001, - 0x0007, 0x07cc, 0x0003, 0x05cb, 0x05ce, 0x05d2, 0x0001, 0x0023, - 0x0994, 0x0002, 0x0023, 0xffff, 0x0999, 0x0002, 0x05d5, 0x05d9, - 0x0002, 0x0023, 0x09b2, 0x09a6, 0x0002, 0x0023, 0x09da, 0x09c3, - 0x0003, 0x05e1, 0x0000, 0x05e4, 0x0001, 0x0023, 0x0994, 0x0002, - 0x05e7, 0x05eb, 0x0002, 0x0023, 0x09b2, 0x09a6, 0x0002, 0x0023, - 0x09da, 0x09c3, 0x0003, 0x05f3, 0x0000, 0x05f6, 0x0001, 0x0023, - 0x0994, 0x0002, 0x05f9, 0x05fd, 0x0002, 0x0023, 0x09b2, 0x09a6, - // Entry 17DC0 - 17DFF - 0x0002, 0x0023, 0x0a09, 0x09f6, 0x0003, 0x0605, 0x0608, 0x060c, - 0x0001, 0x001c, 0x0b08, 0x0002, 0x0023, 0xffff, 0x0a21, 0x0002, - 0x060f, 0x0613, 0x0002, 0x0023, 0x0a3f, 0x0a31, 0x0002, 0x0023, - 0x0a6b, 0x0a52, 0x0003, 0x061b, 0x0000, 0x061e, 0x0001, 0x0001, - 0x075a, 0x0002, 0x0621, 0x0625, 0x0002, 0x0023, 0x0a95, 0x0a89, - 0x0002, 0x0023, 0x0abd, 0x0aa6, 0x0003, 0x062d, 0x0000, 0x0630, - 0x0001, 0x0001, 0x075a, 0x0002, 0x0633, 0x0637, 0x0002, 0x0023, - 0x0a95, 0x0a89, 0x0002, 0x0023, 0x0abd, 0x0aa6, 0x0003, 0x063f, - // Entry 17E00 - 17E3F - 0x0642, 0x0646, 0x0001, 0x001c, 0x1f87, 0x0002, 0x0023, 0xffff, - 0x0ad9, 0x0002, 0x0649, 0x064d, 0x0002, 0x0023, 0x0aef, 0x0ae0, - 0x0002, 0x0023, 0x0b1d, 0x0b03, 0x0003, 0x0655, 0x0000, 0x0658, - 0x0001, 0x001e, 0x0171, 0x0002, 0x065b, 0x065f, 0x0002, 0x0023, - 0x0b48, 0x0b3c, 0x0002, 0x0023, 0x0b70, 0x0b59, 0x0003, 0x0667, - 0x0000, 0x066a, 0x0001, 0x001e, 0x0171, 0x0002, 0x066d, 0x0671, - 0x0002, 0x0023, 0x0b48, 0x0b3c, 0x0002, 0x0023, 0x0b70, 0x0b88, - 0x0001, 0x0677, 0x0001, 0x001b, 0x0ab4, 0x0004, 0x067f, 0x0684, - // Entry 17E40 - 17E7F - 0x0689, 0x0694, 0x0003, 0x0000, 0x1dc7, 0x238b, 0x23b7, 0x0003, - 0x0000, 0x1de0, 0x23bb, 0x23d0, 0x0002, 0x0000, 0x068c, 0x0002, - 0x0000, 0x068f, 0x0003, 0x0023, 0xffff, 0x0b9b, 0x0bb7, 0x0002, - 0x0000, 0x0697, 0x0003, 0x0731, 0x07c7, 0x069b, 0x0094, 0x0023, - 0x0bd3, 0x0be7, 0x0bfe, 0x0c17, 0x0c45, 0x0c9e, 0x0ce0, 0x0d26, - 0x0d67, 0x0da8, 0x0deb, 0x0e31, 0x0e6c, 0x0ea7, 0x0eec, 0x0f44, - 0x0fa4, 0x0fee, 0x1041, 0x10ad, 0x1127, 0x118d, 0x11ea, 0x1237, - 0x1280, 0x12be, 0x12cd, 0x12ee, 0x1328, 0x1355, 0x1393, 0x13c0, - // Entry 17E80 - 17EBF - 0x1403, 0x1445, 0x1489, 0x14c7, 0x14e0, 0x1507, 0x1556, 0x15b1, - 0x15e0, 0x15ee, 0x1609, 0x1632, 0x1676, 0x169d, 0x16fc, 0x1746, - 0x177f, 0x17e2, 0x1839, 0x186b, 0x1881, 0x18a8, 0x18ba, 0x18da, - 0x1912, 0x192a, 0x195a, 0x19c6, 0x1a16, 0x1a23, 0x1a4a, 0x1aa4, - 0x1aed, 0x1b1f, 0x1b3a, 0x1b4f, 0x1b61, 0x1b7c, 0x1b99, 0x1bc3, - 0x1c02, 0x1c49, 0x1c8a, 0x1cdc, 0x1d2e, 0x1d4b, 0x1d76, 0x1da7, - 0x1dca, 0x1e0a, 0x1e1c, 0x1e43, 0x1e7d, 0x1ea6, 0x1ede, 0x1eef, - 0x1f00, 0x1f12, 0x1f3d, 0x1f79, 0x1faa, 0x201e, 0x207c, 0x20c9, - // Entry 17EC0 - 17EFF - 0x20ff, 0x210f, 0x211d, 0x2141, 0x2199, 0x21eb, 0x222a, 0x2237, - 0x226a, 0x22ce, 0x231b, 0x235e, 0x2398, 0x23a6, 0x23d0, 0x2417, - 0x245b, 0x2497, 0x24d1, 0x252a, 0x253b, 0x254a, 0x255c, 0x256c, - 0x258d, 0x25d6, 0x260c, 0x263d, 0x2650, 0x266e, 0x2686, 0x269c, - 0x26ad, 0x26bb, 0x26d9, 0x270c, 0x271f, 0x273d, 0x2771, 0x2794, - 0x27d6, 0x27f5, 0x2840, 0x288e, 0x28c6, 0x28ec, 0x293e, 0x297a, - 0x2989, 0x299d, 0x29c7, 0x2a15, 0x0094, 0x0023, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0c2c, 0x0c8f, 0x0cd1, 0x0d16, 0x0d5a, 0x0d99, - // Entry 17F00 - 17F3F - 0x0dda, 0x0e22, 0x0e5f, 0x0e98, 0x0eda, 0x0f28, 0x0f94, 0x0fdc, - 0x1027, 0x1087, 0x110b, 0x1171, 0x11d7, 0x1228, 0x126d, 0xffff, - 0xffff, 0x12dd, 0xffff, 0x1342, 0xffff, 0x13b0, 0x13f5, 0x1437, - 0x1476, 0xffff, 0xffff, 0x14f6, 0x1541, 0x15a4, 0xffff, 0xffff, - 0xffff, 0x161c, 0xffff, 0x1686, 0x16e3, 0xffff, 0x1766, 0x17c9, - 0x182c, 0xffff, 0xffff, 0xffff, 0xffff, 0x18ca, 0xffff, 0xffff, - 0x193e, 0x19aa, 0xffff, 0xffff, 0x1a32, 0x1a92, 0x1ae0, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1bb6, 0x1bf2, 0x1c3a, - // Entry 17F40 - 17F7F - 0x1c7c, 0x1cbb, 0xffff, 0xffff, 0x1d68, 0xffff, 0x1db6, 0xffff, - 0xffff, 0x1e31, 0xffff, 0x1e96, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1f2b, 0xffff, 0x1f88, 0x2003, 0x2069, 0x20ba, 0xffff, 0xffff, - 0xffff, 0x212b, 0x2185, 0x21d6, 0xffff, 0xffff, 0x224e, 0x22ba, - 0x230e, 0x234d, 0xffff, 0xffff, 0x23bf, 0x240a, 0x2449, 0xffff, - 0x24af, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x257c, 0x25c7, - 0x25fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x26ca, 0xffff, 0xffff, 0x272f, 0xffff, 0x277f, 0xffff, 0x27e5, - // Entry 17F80 - 17FBF - 0x282d, 0x287e, 0xffff, 0x28d8, 0x292c, 0xffff, 0xffff, 0xffff, - 0x29b7, 0x29ff, 0x0094, 0x0023, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0c6a, 0x0cb9, 0x0cfb, 0x0d41, 0x0d83, 0x0dc2, 0x0e08, 0x0e49, - 0x0e85, 0x0ec2, 0x0f0a, 0x0f6c, 0x0fc0, 0x100c, 0x1064, 0x10dc, - 0x114c, 0x11b2, 0x1209, 0x1252, 0x129f, 0xffff, 0xffff, 0x130b, - 0xffff, 0x1374, 0xffff, 0x13dc, 0x141d, 0x145f, 0x14a8, 0xffff, - 0xffff, 0x1524, 0x1577, 0x15ca, 0xffff, 0xffff, 0xffff, 0x1654, - 0xffff, 0x16c0, 0x1721, 0xffff, 0x17a4, 0x1807, 0x1852, 0xffff, - // Entry 17FC0 - 17FFF - 0xffff, 0xffff, 0xffff, 0x18f6, 0xffff, 0xffff, 0x1982, 0x19ee, - 0xffff, 0xffff, 0x1a6e, 0x1ac2, 0x1b06, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1bdc, 0x1c1e, 0x1c64, 0x1ca4, 0x1d06, - 0xffff, 0xffff, 0x1d90, 0xffff, 0x1dea, 0xffff, 0xffff, 0x1e61, - 0xffff, 0x1ec2, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f5b, 0xffff, - 0x1fd8, 0x2045, 0x209b, 0x20e4, 0xffff, 0xffff, 0xffff, 0x2163, - 0x21b9, 0x220c, 0xffff, 0xffff, 0x2292, 0x22ee, 0x2334, 0x237b, - 0xffff, 0xffff, 0x23ed, 0x2430, 0x2479, 0xffff, 0x24ff, 0xffff, - // Entry 18000 - 1803F - 0xffff, 0xffff, 0xffff, 0xffff, 0x25aa, 0x25ee, 0x2626, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x26f4, 0xffff, - 0xffff, 0x2757, 0xffff, 0x27b5, 0xffff, 0x2811, 0x285f, 0x28aa, - 0xffff, 0x290c, 0x295c, 0xffff, 0xffff, 0xffff, 0x29e3, 0x2a37, - 0x0003, 0x0004, 0x01cb, 0x05bf, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, - 0x001e, 0x001b, 0x0021, 0x0001, 0x0024, 0x0000, 0x0001, 0x0013, - // Entry 18040 - 1807F - 0x0477, 0x0001, 0x0015, 0x0000, 0x0001, 0x001e, 0x1a8e, 0x0004, - 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0015, 0x0238, 0x0001, - 0x0015, 0x0238, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0173, 0x0198, 0x01a9, - 0x01ba, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, - 0x000d, 0x0015, 0xffff, 0x000b, 0x2375, 0x237a, 0x001a, 0x237f, - 0x2383, 0x2388, 0x002d, 0x238d, 0x0037, 0x2392, 0x2397, 0x000d, - 0x0000, 0xffff, 0x1e5d, 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, - // Entry 18080 - 180BF - 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x000d, - 0xffff, 0x0089, 0x0090, 0x31f1, 0x31f6, 0x31fd, 0x00a3, 0x00a8, - 0x3201, 0x3208, 0x315b, 0x3212, 0x321b, 0x0003, 0x0079, 0x0088, - 0x0097, 0x000d, 0x000d, 0xffff, 0x0059, 0x3224, 0x3228, 0x322c, - 0x31fd, 0x3230, 0x3234, 0x3238, 0x323c, 0x3240, 0x3244, 0x3248, - 0x000d, 0x0000, 0xffff, 0x1e5d, 0x22e6, 0x22d9, 0x2382, 0x22d9, - 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, 0x22ee, 0x22f0, 0x000d, - 0x000d, 0xffff, 0x0089, 0x0090, 0x31f1, 0x31f6, 0x31fd, 0x00a3, - // Entry 180C0 - 180FF - 0x00a8, 0x3201, 0x3208, 0x315b, 0x3212, 0x321b, 0x0002, 0x00a9, - 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, - 0x0024, 0x0013, 0x0018, 0x001e, 0x0024, 0x0029, 0x002f, 0x0035, - 0x0007, 0x0000, 0x22dd, 0x22d9, 0x04dd, 0x22d9, 0x19c7, 0x22e6, - 0x228e, 0x0007, 0x0024, 0x003a, 0x003e, 0x0043, 0x0048, 0x004c, - 0x0051, 0x0055, 0x0007, 0x0024, 0x0059, 0x0064, 0x006f, 0x0079, - 0x0083, 0x008d, 0x009b, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, - 0x00eb, 0x0007, 0x0024, 0x00a7, 0x00ab, 0x00b0, 0x00b5, 0x00b9, - // Entry 18100 - 1813F - 0x00be, 0x00c3, 0x0007, 0x0000, 0x22dd, 0x22d9, 0x04dd, 0x22d9, - 0x19c7, 0x22e6, 0x228e, 0x0007, 0x0022, 0x04ad, 0x2fc6, 0x2fca, - 0x2fce, 0x2fd1, 0x2fd5, 0x2fd8, 0x0007, 0x0024, 0x0059, 0x0064, - 0x006f, 0x0079, 0x0083, 0x008d, 0x009b, 0x0002, 0x0100, 0x0119, - 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0024, 0xffff, 0x00c7, - 0x00d2, 0x00dd, 0x00e8, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0024, 0xffff, 0x00f3, 0x0107, 0x011b, - 0x012f, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0024, 0xffff, - // Entry 18140 - 1817F - 0x00c7, 0x00d2, 0x00dd, 0x00e8, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0024, 0xffff, 0x00f3, 0x0107, - 0x011b, 0x012f, 0x0002, 0x0135, 0x0154, 0x0003, 0x0139, 0x0142, - 0x014b, 0x0002, 0x013c, 0x013f, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x0145, 0x0148, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0002, 0x014e, 0x0151, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0158, 0x0161, 0x016a, - 0x0002, 0x015b, 0x015e, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - // Entry 18180 - 181BF - 0x04f2, 0x0002, 0x0164, 0x0167, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x016d, 0x0170, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0003, 0x0182, 0x018d, 0x0177, 0x0002, - 0x017a, 0x017e, 0x0002, 0x0024, 0x0143, 0x0169, 0x0002, 0x0024, - 0x014e, 0x0175, 0x0002, 0x0185, 0x0189, 0x0002, 0x0015, 0x0194, - 0x01b8, 0x0002, 0x0024, 0x018b, 0x0197, 0x0002, 0x0190, 0x0194, - 0x0002, 0x0015, 0x01e3, 0x01eb, 0x0002, 0x0024, 0x01a1, 0x01a5, - 0x0004, 0x01a6, 0x01a0, 0x019d, 0x01a3, 0x0001, 0x0016, 0x0460, - // Entry 181C0 - 181FF - 0x0001, 0x0013, 0x06b1, 0x0001, 0x0016, 0x0470, 0x0001, 0x0007, - 0x0277, 0x0004, 0x01b7, 0x01b1, 0x01ae, 0x01b4, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x01c8, 0x01c2, 0x01bf, 0x01c5, 0x0001, - 0x0015, 0x0238, 0x0001, 0x0015, 0x0238, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0040, 0x020c, 0x0000, 0x0000, 0x0211, - 0x0228, 0x023a, 0x024c, 0x0263, 0x0275, 0x0287, 0x029e, 0x02b0, - 0x02c2, 0x02dd, 0x02f3, 0x0000, 0x0000, 0x0000, 0x0309, 0x0322, - // Entry 18200 - 1823F - 0x0334, 0x0000, 0x0000, 0x0000, 0x0346, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x034b, 0x035f, 0x0373, 0x0387, 0x039b, 0x03af, - 0x03c3, 0x03d7, 0x03eb, 0x03ff, 0x0413, 0x0427, 0x043b, 0x044f, - 0x0463, 0x0477, 0x048b, 0x049f, 0x04b3, 0x04c7, 0x04db, 0x0000, - 0x04ef, 0x0000, 0x04f4, 0x050a, 0x0520, 0x0536, 0x054c, 0x0562, - 0x0578, 0x058e, 0x05a4, 0x05ba, 0x0001, 0x020e, 0x0001, 0x0024, - 0x01a8, 0x0003, 0x0215, 0x0218, 0x021d, 0x0001, 0x0024, 0x01b7, - 0x0003, 0x0024, 0x01bb, 0x01c4, 0x01cb, 0x0002, 0x0220, 0x0224, - // Entry 18240 - 1827F - 0x0002, 0x0024, 0x01d6, 0x01d6, 0x0002, 0x0024, 0x01e1, 0x01e1, - 0x0003, 0x022c, 0x0000, 0x022f, 0x0001, 0x0024, 0x01b7, 0x0002, - 0x0232, 0x0236, 0x0002, 0x0024, 0x01d6, 0x01d6, 0x0002, 0x0024, - 0x01e1, 0x01e1, 0x0003, 0x023e, 0x0000, 0x0241, 0x0001, 0x0024, - 0x01b7, 0x0002, 0x0244, 0x0248, 0x0002, 0x0024, 0x01d6, 0x01d6, - 0x0002, 0x0024, 0x01e1, 0x01e1, 0x0003, 0x0250, 0x0253, 0x0258, - 0x0001, 0x0024, 0x01f1, 0x0003, 0x0024, 0x0202, 0x021a, 0x0232, - 0x0002, 0x025b, 0x025f, 0x0002, 0x0024, 0x025e, 0x0248, 0x0002, - // Entry 18280 - 182BF - 0x0024, 0x0291, 0x0276, 0x0003, 0x0267, 0x0000, 0x026a, 0x0001, - 0x0024, 0x02ae, 0x0002, 0x026d, 0x0271, 0x0002, 0x0024, 0x02b6, - 0x02b6, 0x0002, 0x0024, 0x02c5, 0x02c5, 0x0003, 0x0279, 0x0000, - 0x027c, 0x0001, 0x0024, 0x02ae, 0x0002, 0x027f, 0x0283, 0x0002, - 0x0024, 0x02b6, 0x02b6, 0x0002, 0x0024, 0x02c5, 0x02c5, 0x0003, - 0x028b, 0x028e, 0x0293, 0x0001, 0x0024, 0x02d9, 0x0003, 0x0024, - 0x02e3, 0x02f4, 0x0304, 0x0002, 0x0296, 0x029a, 0x0002, 0x0024, - 0x0322, 0x0313, 0x0002, 0x0024, 0x0347, 0x0333, 0x0003, 0x02a2, - // Entry 182C0 - 182FF - 0x0000, 0x02a5, 0x0001, 0x0024, 0x035d, 0x0002, 0x02a8, 0x02ac, - 0x0002, 0x0024, 0x0363, 0x0363, 0x0002, 0x0024, 0x0370, 0x0370, - 0x0003, 0x02b4, 0x0000, 0x02b7, 0x0001, 0x0024, 0x035d, 0x0002, - 0x02ba, 0x02be, 0x0002, 0x0024, 0x0363, 0x0363, 0x0002, 0x0024, - 0x0370, 0x0370, 0x0004, 0x02c7, 0x02ca, 0x02cf, 0x02da, 0x0001, - 0x0024, 0x0382, 0x0003, 0x0024, 0x0387, 0x0395, 0x039f, 0x0002, - 0x02d2, 0x02d6, 0x0002, 0x0024, 0x03b7, 0x03ab, 0x0002, 0x0024, - 0x03d5, 0x03c4, 0x0001, 0x0024, 0x03e7, 0x0004, 0x02e2, 0x0000, - // Entry 18300 - 1833F - 0x02e5, 0x02f0, 0x0001, 0x0024, 0x03f7, 0x0002, 0x02e8, 0x02ec, - 0x0002, 0x0024, 0x03fb, 0x03fb, 0x0002, 0x0024, 0x0406, 0x0406, - 0x0001, 0x0024, 0x03e7, 0x0004, 0x02f8, 0x0000, 0x02fb, 0x0306, - 0x0001, 0x0013, 0x0641, 0x0002, 0x02fe, 0x0302, 0x0002, 0x0024, - 0x0416, 0x0416, 0x0002, 0x0024, 0x0420, 0x0420, 0x0001, 0x0024, - 0x03e7, 0x0003, 0x030d, 0x0310, 0x0317, 0x0001, 0x0024, 0x042f, - 0x0005, 0x0024, 0x0440, 0x0449, 0x0450, 0x0435, 0x045a, 0x0002, - 0x031a, 0x031e, 0x0002, 0x0024, 0x0473, 0x0468, 0x0002, 0x0024, - // Entry 18340 - 1837F - 0x0492, 0x0480, 0x0003, 0x0326, 0x0000, 0x0329, 0x0001, 0x0024, - 0x04a4, 0x0002, 0x032c, 0x0330, 0x0002, 0x0024, 0x04a8, 0x04a8, - 0x0002, 0x0024, 0x04b3, 0x04b3, 0x0003, 0x0338, 0x0000, 0x033b, - 0x0001, 0x0001, 0x0279, 0x0002, 0x033e, 0x0342, 0x0002, 0x0024, - 0x04c3, 0x04c3, 0x0002, 0x0024, 0x04cd, 0x04cd, 0x0001, 0x0348, - 0x0001, 0x0024, 0x04dc, 0x0003, 0x0000, 0x034f, 0x0354, 0x0003, - 0x0024, 0x04ea, 0x04fc, 0x050c, 0x0002, 0x0357, 0x035b, 0x0002, - 0x0024, 0x0536, 0x0526, 0x0002, 0x0024, 0x055e, 0x0548, 0x0003, - // Entry 18380 - 183BF - 0x0000, 0x0363, 0x0368, 0x0003, 0x0024, 0x0576, 0x0584, 0x0590, - 0x0002, 0x036b, 0x036f, 0x0002, 0x0024, 0x05a4, 0x05a4, 0x0002, - 0x0024, 0x05b0, 0x05b0, 0x0003, 0x0000, 0x0377, 0x037c, 0x0003, - 0x0024, 0x05c2, 0x05cf, 0x05da, 0x0002, 0x037f, 0x0383, 0x0002, - 0x0024, 0x05ed, 0x05ed, 0x0002, 0x0024, 0x05f8, 0x05f8, 0x0003, - 0x0000, 0x038b, 0x0390, 0x0003, 0x0024, 0x0609, 0x061b, 0x062b, - 0x0002, 0x0393, 0x0397, 0x0002, 0x0024, 0x0655, 0x0645, 0x0002, - 0x0024, 0x067d, 0x0667, 0x0003, 0x0000, 0x039f, 0x03a4, 0x0003, - // Entry 183C0 - 183FF - 0x0024, 0x0695, 0x06a4, 0x06b1, 0x0002, 0x03a7, 0x03ab, 0x0002, - 0x0024, 0x06c6, 0x06c6, 0x0002, 0x0024, 0x06d3, 0x06d3, 0x0003, - 0x0000, 0x03b3, 0x03b8, 0x0003, 0x0024, 0x06e6, 0x06f4, 0x0700, - 0x0002, 0x03bb, 0x03bf, 0x0002, 0x0024, 0x0714, 0x0714, 0x0002, - 0x0024, 0x0720, 0x0720, 0x0003, 0x0000, 0x03c7, 0x03cc, 0x0003, - 0x0024, 0x0732, 0x0743, 0x0752, 0x0002, 0x03cf, 0x03d3, 0x0002, - 0x0024, 0x077a, 0x076b, 0x0002, 0x0024, 0x07a0, 0x078b, 0x0003, - 0x0000, 0x03db, 0x03e0, 0x0003, 0x0024, 0x07b7, 0x07c6, 0x07d3, - // Entry 18400 - 1843F - 0x0002, 0x03e3, 0x03e7, 0x0002, 0x0024, 0x07e8, 0x07e8, 0x0002, - 0x0024, 0x07f5, 0x07f5, 0x0003, 0x0000, 0x03ef, 0x03f4, 0x0003, - 0x0024, 0x0808, 0x0816, 0x0822, 0x0002, 0x03f7, 0x03fb, 0x0002, - 0x0024, 0x0836, 0x0836, 0x0002, 0x0024, 0x0842, 0x0842, 0x0003, - 0x0000, 0x0403, 0x0408, 0x0003, 0x0024, 0x0854, 0x0865, 0x0874, - 0x0002, 0x040b, 0x040f, 0x0002, 0x0024, 0x089c, 0x088d, 0x0002, - 0x0024, 0x08c2, 0x08ad, 0x0003, 0x0000, 0x0417, 0x041c, 0x0003, - 0x0024, 0x08d9, 0x08e7, 0x08f3, 0x0002, 0x041f, 0x0423, 0x0002, - // Entry 18440 - 1847F - 0x0024, 0x0907, 0x0907, 0x0002, 0x0024, 0x0913, 0x0913, 0x0003, - 0x0000, 0x042b, 0x0430, 0x0003, 0x0024, 0x0925, 0x0932, 0x093d, - 0x0002, 0x0433, 0x0437, 0x0002, 0x0024, 0x0950, 0x0950, 0x0002, - 0x0024, 0x095b, 0x095b, 0x0003, 0x0000, 0x043f, 0x0444, 0x0003, - 0x0024, 0x096c, 0x097d, 0x098c, 0x0002, 0x0447, 0x044b, 0x0002, - 0x0024, 0x09b4, 0x09a5, 0x0002, 0x0024, 0x09da, 0x09c5, 0x0003, - 0x0000, 0x0453, 0x0458, 0x0003, 0x0024, 0x09f1, 0x0a00, 0x0a0d, - 0x0002, 0x045b, 0x045f, 0x0002, 0x0024, 0x0a22, 0x0a22, 0x0002, - // Entry 18480 - 184BF - 0x0024, 0x0a2f, 0x0a2f, 0x0003, 0x0000, 0x0467, 0x046c, 0x0003, - 0x0024, 0x0a42, 0x0a50, 0x0a5c, 0x0002, 0x046f, 0x0473, 0x0002, - 0x0024, 0x0a70, 0x0a70, 0x0002, 0x0024, 0x0a7c, 0x0a7c, 0x0003, - 0x0000, 0x047b, 0x0480, 0x0003, 0x0024, 0x0a8e, 0x0aa3, 0x0ab6, - 0x0002, 0x0483, 0x0487, 0x0002, 0x0024, 0x0ae6, 0x0ad3, 0x0002, - 0x0024, 0x0b14, 0x0afb, 0x0003, 0x0000, 0x048f, 0x0494, 0x0003, - 0x0024, 0x0b2f, 0x0b3e, 0x0b4b, 0x0002, 0x0497, 0x049b, 0x0002, - 0x0024, 0x0b60, 0x0b60, 0x0002, 0x0024, 0x0b6d, 0x0b6d, 0x0003, - // Entry 184C0 - 184FF - 0x0000, 0x04a3, 0x04a8, 0x0003, 0x0024, 0x0b80, 0x0b8d, 0x0b98, - 0x0002, 0x04ab, 0x04af, 0x0002, 0x0024, 0x0bab, 0x0bab, 0x0002, - 0x0024, 0x0bb6, 0x0bb6, 0x0003, 0x0000, 0x04b7, 0x04bc, 0x0003, - 0x0024, 0x0bc7, 0x0bda, 0x0beb, 0x0002, 0x04bf, 0x04c3, 0x0002, - 0x0024, 0x0c17, 0x0c06, 0x0002, 0x0024, 0x0c41, 0x0c2a, 0x0003, - 0x0000, 0x04cb, 0x04d0, 0x0003, 0x0024, 0x0c5a, 0x0c68, 0x0c74, - 0x0002, 0x04d3, 0x04d7, 0x0002, 0x0024, 0x0c88, 0x0c88, 0x0002, - 0x0024, 0x0c94, 0x0c94, 0x0003, 0x0000, 0x04df, 0x04e4, 0x0003, - // Entry 18500 - 1853F - 0x0024, 0x0ca6, 0x0cb3, 0x0cbe, 0x0002, 0x04e7, 0x04eb, 0x0002, - 0x0024, 0x0cd1, 0x0cd1, 0x0002, 0x0024, 0x0cdc, 0x0cdc, 0x0001, - 0x04f1, 0x0001, 0x0007, 0x07cc, 0x0003, 0x04f8, 0x04fb, 0x04ff, - 0x0001, 0x0024, 0x0ced, 0x0002, 0x0024, 0xffff, 0x0cf3, 0x0002, - 0x0502, 0x0506, 0x0002, 0x0024, 0x0d0e, 0x0d01, 0x0002, 0x0024, - 0x0d2e, 0x0d1c, 0x0003, 0x050e, 0x0511, 0x0515, 0x0001, 0x0015, - 0x0a42, 0x0002, 0x0024, 0xffff, 0x0cf3, 0x0002, 0x0518, 0x051c, - 0x0002, 0x0024, 0x0d41, 0x0d41, 0x0002, 0x0024, 0x0d4b, 0x0d4b, - // Entry 18540 - 1857F - 0x0003, 0x0524, 0x0527, 0x052b, 0x0001, 0x0015, 0x0a42, 0x0002, - 0x0024, 0xffff, 0x0cf3, 0x0002, 0x052e, 0x0532, 0x0002, 0x0024, - 0x0d41, 0x0d41, 0x0002, 0x0024, 0x0d4b, 0x0d4b, 0x0003, 0x053a, - 0x053d, 0x0541, 0x0001, 0x0024, 0x0d5a, 0x0002, 0x0024, 0xffff, - 0x0d63, 0x0002, 0x0544, 0x0548, 0x0002, 0x0024, 0x0d81, 0x0d73, - 0x0002, 0x0024, 0x0da4, 0x0d91, 0x0003, 0x0550, 0x0553, 0x0557, - 0x0001, 0x0001, 0x075a, 0x0002, 0x0024, 0xffff, 0x0d63, 0x0002, - 0x055a, 0x055e, 0x0002, 0x0024, 0x0db9, 0x0db9, 0x0002, 0x0024, - // Entry 18580 - 185BF - 0x0dc5, 0x0dc5, 0x0003, 0x0566, 0x0569, 0x056d, 0x0001, 0x0001, - 0x077c, 0x0002, 0x0024, 0xffff, 0x0d63, 0x0002, 0x0570, 0x0574, - 0x0002, 0x0024, 0x0dd6, 0x0dd6, 0x0002, 0x0024, 0x0de0, 0x0de0, - 0x0003, 0x057c, 0x057f, 0x0583, 0x0001, 0x0015, 0x0ad8, 0x0002, - 0x0024, 0xffff, 0x0def, 0x0002, 0x0586, 0x058a, 0x0002, 0x0024, - 0x0df3, 0x0df3, 0x0002, 0x0024, 0x0e01, 0x0e01, 0x0003, 0x0592, - 0x0595, 0x0599, 0x0001, 0x0001, 0x07d3, 0x0002, 0x0024, 0xffff, - 0x0def, 0x0002, 0x059c, 0x05a0, 0x0002, 0x0024, 0x0e14, 0x0e14, - // Entry 185C0 - 185FF - 0x0002, 0x0024, 0x0e20, 0x0e20, 0x0003, 0x05a8, 0x05ab, 0x05af, - 0x0001, 0x0001, 0x07f5, 0x0002, 0x0024, 0xffff, 0x0def, 0x0002, - 0x05b2, 0x05b6, 0x0002, 0x0024, 0x0e31, 0x0e31, 0x0002, 0x0024, - 0x0e3b, 0x0e3b, 0x0001, 0x05bc, 0x0001, 0x0024, 0x0e4a, 0x0004, - 0x05c4, 0x05c9, 0x05ce, 0x05d9, 0x0003, 0x0000, 0x1dc7, 0x238b, - 0x23b7, 0x0003, 0x0024, 0x0e56, 0x0e60, 0x0e70, 0x0002, 0x0000, - 0x05d1, 0x0002, 0x0000, 0x05d4, 0x0003, 0x0024, 0xffff, 0x0e81, - 0x0e9d, 0x0002, 0x0000, 0x05dc, 0x0003, 0x0676, 0x070c, 0x05e0, - // Entry 18600 - 1863F - 0x0094, 0x0024, 0x0eb0, 0x0ec1, 0x0ed2, 0x0ee5, 0x0f12, 0x0f52, - 0x0f87, 0x0fbe, 0x0ff5, 0x102d, 0x1066, 0xffff, 0x109a, 0x10cb, - 0x1104, 0x1148, 0x1191, 0x11c9, 0x1209, 0x125b, 0x12b5, 0x1307, - 0x1353, 0x1392, 0x13d0, 0x13ff, 0x140b, 0x1428, 0x1453, 0x1484, - 0x14c3, 0x14e7, 0x151b, 0x1549, 0x157d, 0x15ac, 0x15bd, 0x15df, - 0x161d, 0x165b, 0x167e, 0x168a, 0x16a3, 0x16c8, 0x16fb, 0x171a, - 0x175c, 0x178f, 0x17bc, 0x1806, 0x184c, 0x186f, 0x1884, 0x18b1, - 0x18c1, 0x18dd, 0x1906, 0x191b, 0x1949, 0x19a1, 0x19e0, 0x19f2, - // Entry 18640 - 1867F - 0x1a15, 0x1a5e, 0x1a96, 0x1ab9, 0x1ac5, 0x1ad4, 0x1ae3, 0x1af8, - 0x1b0f, 0x1b31, 0x1b62, 0x1b99, 0x1bce, 0xffff, 0x1bf3, 0x1c0a, - 0x1c2d, 0x1c52, 0x1c71, 0x1ca2, 0x1cb1, 0x1cd3, 0x1d00, 0x1d24, - 0x1d4d, 0x1d5c, 0x1d70, 0x1d80, 0x1da6, 0x1dd3, 0x1df7, 0x1e48, - 0x1e92, 0x1ece, 0x1ef5, 0x1f0b, 0x1f17, 0x1f37, 0x1f7d, 0x1fbf, - 0x1ff2, 0x1ffd, 0x202b, 0x207e, 0x20ba, 0x20ec, 0x2117, 0x2123, - 0x2148, 0x217e, 0x21b5, 0x21ea, 0x221b, 0x2260, 0x2276, 0x2283, - 0x2293, 0x22a2, 0x22bf, 0xffff, 0x22f6, 0x231b, 0x2331, 0x2340, - // Entry 18680 - 186BF - 0x2355, 0x2370, 0x237e, 0x238a, 0x23a4, 0x23cb, 0x23de, 0x23f8, - 0x241d, 0x243c, 0x246f, 0x248a, 0x24c4, 0x2501, 0x252a, 0x254c, - 0x258d, 0x25ba, 0x25c7, 0x25d7, 0x2604, 0x2641, 0x0094, 0x0024, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0eff, 0x0f45, 0x0f79, 0x0fb0, - 0x0fe7, 0x101e, 0x1058, 0xffff, 0x108f, 0x10bd, 0x10f4, 0x1131, - 0x1183, 0x11ba, 0x11f4, 0x1240, 0x129e, 0x12f0, 0x1342, 0x1382, - 0x13bf, 0xffff, 0xffff, 0x1419, 0xffff, 0x146b, 0xffff, 0x14d9, - 0x1510, 0x153e, 0x156c, 0xffff, 0xffff, 0x15d0, 0x160a, 0x1650, - // Entry 186C0 - 186FF - 0xffff, 0xffff, 0xffff, 0x16b5, 0xffff, 0x1709, 0x1749, 0xffff, - 0x17a9, 0x17ef, 0x1841, 0xffff, 0xffff, 0xffff, 0xffff, 0x18cf, - 0xffff, 0xffff, 0x1930, 0x1988, 0xffff, 0xffff, 0x19ff, 0x1a4e, - 0x1a8b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b26, - 0x1b54, 0x1b8b, 0x1bc2, 0xffff, 0xffff, 0xffff, 0x1c21, 0xffff, - 0x1c5f, 0xffff, 0xffff, 0x1cc3, 0xffff, 0x1d16, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1d96, 0xffff, 0x1de0, 0x1e32, 0x1e81, 0x1ec1, - 0xffff, 0xffff, 0xffff, 0x1f23, 0x1f6c, 0x1fac, 0xffff, 0xffff, - // Entry 18700 - 1873F - 0x2011, 0x206c, 0x20af, 0x20dd, 0xffff, 0xffff, 0x2139, 0x2173, - 0x21a1, 0xffff, 0x21ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x22b0, 0xffff, 0x22ea, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2397, 0xffff, 0xffff, 0x23ec, 0xffff, 0x2429, - 0xffff, 0x247c, 0x24b3, 0x24f3, 0xffff, 0x253a, 0x257d, 0xffff, - 0xffff, 0xffff, 0x25f6, 0x262d, 0x0094, 0x0024, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0f2c, 0x0f66, 0x0f9c, 0x0fd3, 0x100a, 0x1043, - 0x107b, 0xffff, 0x10ac, 0x10e0, 0x111b, 0x1166, 0x11a6, 0x11df, - // Entry 18740 - 1877F - 0x1225, 0x127d, 0x12d3, 0x1325, 0x136b, 0x13a9, 0x13e8, 0xffff, - 0xffff, 0x143e, 0xffff, 0x14a4, 0xffff, 0x14fc, 0x152d, 0x155b, - 0x1595, 0xffff, 0xffff, 0x15f5, 0x1637, 0x166d, 0xffff, 0xffff, - 0xffff, 0x16e2, 0xffff, 0x1732, 0x1776, 0xffff, 0x17d6, 0x1824, - 0x185e, 0xffff, 0xffff, 0xffff, 0xffff, 0x18f2, 0xffff, 0xffff, - 0x1969, 0x19c1, 0xffff, 0xffff, 0x1a32, 0x1a75, 0x1aa8, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b43, 0x1b77, 0x1bae, - 0x1be1, 0xffff, 0xffff, 0xffff, 0x1c40, 0xffff, 0x1c8a, 0xffff, - // Entry 18780 - 187BF - 0xffff, 0x1cea, 0xffff, 0x1d39, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1dbd, 0xffff, 0x1e15, 0x1e65, 0x1eaa, 0x1ee2, 0xffff, 0xffff, - 0xffff, 0x1f52, 0x1f95, 0x1fd9, 0xffff, 0xffff, 0x204c, 0x2097, - 0x20cc, 0x2102, 0xffff, 0xffff, 0x215e, 0x2190, 0x21d0, 0xffff, - 0x223e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22d5, 0xffff, - 0x2309, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x23b8, 0xffff, 0xffff, 0x240b, 0xffff, 0x2456, 0xffff, 0x249f, - 0x24dc, 0x2516, 0xffff, 0x2565, 0x25a4, 0xffff, 0xffff, 0xffff, - // Entry 187C0 - 187FF - 0x2619, 0x265c, 0x0003, 0x0004, 0x09e8, 0x0dde, 0x0012, 0x0017, - 0x0044, 0x0135, 0x01b6, 0x02a7, 0x0000, 0x02f7, 0x0322, 0x0545, - 0x05d6, 0x0648, 0x0000, 0x0000, 0x0000, 0x0000, 0x06ce, 0x09cd, - 0x09da, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0033, - 0x0000, 0x9006, 0x0003, 0x0029, 0x002e, 0x0024, 0x0001, 0x0026, - 0x0001, 0x0025, 0x0000, 0x0001, 0x002b, 0x0001, 0x0025, 0x0010, - 0x0001, 0x0030, 0x0001, 0x0025, 0x0018, 0x0004, 0x0041, 0x003b, - 0x0038, 0x003e, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, - // Entry 18800 - 1883F - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x000a, 0x004f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0124, 0x0000, 0x0000, 0x0000, - 0x00b4, 0x0002, 0x0052, 0x0083, 0x0003, 0x0056, 0x0065, 0x0074, - 0x000d, 0x0025, 0xffff, 0x001d, 0x0023, 0x0029, 0x002f, 0x0035, - 0x003b, 0x0041, 0x0047, 0x004d, 0x0053, 0x005a, 0x0061, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0025, - 0xffff, 0x0068, 0x0073, 0x007b, 0x0084, 0x008c, 0x0094, 0x009d, - // Entry 18840 - 1887F - 0x00a5, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x0003, 0x0087, 0x0096, - 0x00a5, 0x000d, 0x0025, 0xffff, 0x001d, 0x0023, 0x0029, 0x002f, - 0x0035, 0x003b, 0x0041, 0x0047, 0x004d, 0x0053, 0x005a, 0x0061, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - 0x0025, 0xffff, 0x0068, 0x0073, 0x007b, 0x0084, 0x008c, 0x0094, - 0x009d, 0x00a5, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x0006, 0x00bb, - 0x0000, 0x0000, 0x0000, 0x00ce, 0x0111, 0x0001, 0x00bd, 0x0001, - // Entry 18880 - 188BF - 0x00bf, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, - 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, - 0x0001, 0x00d0, 0x0001, 0x00d2, 0x003d, 0x0000, 0xffff, 0x01bd, - 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, - 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, - 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, - 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, - 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, - // Entry 188C0 - 188FF - 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, - 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, - 0x0381, 0x0389, 0x0390, 0x0001, 0x0113, 0x0001, 0x0115, 0x000d, - 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, - 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0004, 0x0132, - 0x012c, 0x0129, 0x012f, 0x0001, 0x0025, 0x00da, 0x0001, 0x0010, - 0x0026, 0x0001, 0x0010, 0x002f, 0x0001, 0x0002, 0x01fb, 0x0005, - 0x013b, 0x0000, 0x0000, 0x0000, 0x01a6, 0x0002, 0x013e, 0x0172, - // Entry 18900 - 1893F - 0x0003, 0x0142, 0x0152, 0x0162, 0x000e, 0x0025, 0xffff, 0x00e8, - 0x00ed, 0x00f3, 0x00f9, 0x00fe, 0x0104, 0x010a, 0x0111, 0x0118, - 0x011e, 0x0126, 0x012c, 0x0131, 0x000e, 0x0000, 0xffff, 0x04dd, - 0x23d9, 0x19c7, 0x2157, 0x04dd, 0x2382, 0x23d9, 0x23d9, 0x23d9, - 0x23d9, 0x2382, 0x22d9, 0x22ee, 0x000e, 0x0025, 0xffff, 0x00e8, - 0x0137, 0x013e, 0x0146, 0x014c, 0x0153, 0x015b, 0x0165, 0x016f, - 0x0177, 0x0182, 0x0188, 0x018e, 0x0003, 0x0176, 0x0186, 0x0196, - 0x000e, 0x0025, 0xffff, 0x00e8, 0x00ed, 0x00f3, 0x00f9, 0x00fe, - // Entry 18940 - 1897F - 0x0104, 0x010a, 0x0111, 0x0118, 0x011e, 0x0126, 0x012c, 0x0131, - 0x000e, 0x0000, 0xffff, 0x04dd, 0x23d9, 0x19c7, 0x2157, 0x04dd, - 0x2382, 0x23d9, 0x23d9, 0x23d9, 0x23d9, 0x2382, 0x22d9, 0x22ee, - 0x000e, 0x0025, 0xffff, 0x00e8, 0x0137, 0x013e, 0x0146, 0x014c, - 0x0153, 0x015b, 0x0165, 0x016f, 0x0177, 0x0182, 0x0188, 0x018e, - 0x0003, 0x01b0, 0x0000, 0x01aa, 0x0001, 0x01ac, 0x0002, 0x0025, - 0x0196, 0x01a8, 0x0001, 0x01b2, 0x0002, 0x0025, 0x01bb, 0x01c2, - 0x000a, 0x01c1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0296, 0x0000, - // Entry 18980 - 189BF - 0x0000, 0x0000, 0x0226, 0x0002, 0x01c4, 0x01f5, 0x0003, 0x01c8, - 0x01d7, 0x01e6, 0x000d, 0x0025, 0xffff, 0x001d, 0x0023, 0x0029, - 0x002f, 0x0035, 0x003b, 0x0041, 0x0047, 0x004d, 0x0053, 0x005a, - 0x0061, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - 0x000d, 0x0025, 0xffff, 0x0068, 0x0073, 0x007b, 0x0084, 0x008c, - 0x0094, 0x009d, 0x00a5, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x0003, - 0x01f9, 0x0208, 0x0217, 0x000d, 0x0025, 0xffff, 0x001d, 0x0023, - // Entry 189C0 - 189FF - 0x0029, 0x002f, 0x0035, 0x003b, 0x0041, 0x0047, 0x004d, 0x0053, - 0x005a, 0x0061, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x0025, 0xffff, 0x0068, 0x0073, 0x007b, 0x0084, - 0x008c, 0x0094, 0x009d, 0x00a5, 0x00ad, 0x00b6, 0x00bf, 0x00cb, - 0x0006, 0x022d, 0x0000, 0x0000, 0x0000, 0x0240, 0x0283, 0x0001, - 0x022f, 0x0001, 0x0231, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, - 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, - // Entry 18A00 - 18A3F - 0x2226, 0x0085, 0x0001, 0x0242, 0x0001, 0x0244, 0x003d, 0x0000, - 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, - 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, - 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, - 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, - 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, - 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, - 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, - // Entry 18A40 - 18A7F - 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x0001, 0x0285, 0x0001, - 0x0287, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, - 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, - 0x0004, 0x02a4, 0x029e, 0x029b, 0x02a1, 0x0001, 0x0025, 0x00da, - 0x0001, 0x0010, 0x0026, 0x0001, 0x0010, 0x002f, 0x0001, 0x0002, - 0x01fb, 0x0005, 0x02ad, 0x0000, 0x0000, 0x0000, 0x02e7, 0x0002, - 0x02b0, 0x02d4, 0x0003, 0x02b4, 0x0000, 0x02c4, 0x000e, 0x0025, - 0xffff, 0x01c9, 0x01cf, 0x01d4, 0x01d9, 0x01de, 0x01e2, 0x01e8, - // Entry 18A80 - 18ABF - 0x01ee, 0x01f3, 0x01f8, 0x01fe, 0x0203, 0x0209, 0x000e, 0x0025, - 0xffff, 0x020e, 0x021a, 0x0221, 0x0227, 0x01de, 0x022f, 0x0238, - 0x0241, 0x0249, 0x0251, 0x0258, 0x025f, 0x0268, 0x0002, 0x0000, - 0x02d7, 0x000e, 0x0000, 0xffff, 0x22d9, 0x04dd, 0x19c7, 0x04dd, - 0x04dd, 0x23db, 0x22d9, 0x22d9, 0x2281, 0x22dd, 0x19c7, 0x22ee, - 0x21e5, 0x0003, 0x02f1, 0x0000, 0x02eb, 0x0001, 0x02ed, 0x0002, - 0x0025, 0x0271, 0x0287, 0x0001, 0x02f3, 0x0002, 0x0025, 0x029e, - 0x02a7, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, - // Entry 18AC0 - 18AFF - 0x0000, 0x0311, 0x0004, 0x030e, 0x0308, 0x0305, 0x030b, 0x0001, - 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0002, 0x04f7, 0x0004, 0x031f, 0x0319, 0x0316, 0x031c, - 0x0001, 0x0025, 0x02b0, 0x0001, 0x0025, 0x02b0, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x032b, 0x0390, 0x03e7, - 0x041c, 0x04ed, 0x0512, 0x0523, 0x0534, 0x0002, 0x032e, 0x035f, - 0x0003, 0x0332, 0x0341, 0x0350, 0x000d, 0x0025, 0xffff, 0x02bd, - 0x02c3, 0x02ca, 0x02cf, 0x02d4, 0x02d8, 0x02dd, 0x02e3, 0x02e9, - // Entry 18B00 - 18B3F - 0x02ef, 0x02f4, 0x02f9, 0x000d, 0x0000, 0xffff, 0x1e5d, 0x22e6, - 0x22d9, 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, 0x22ec, - 0x22ee, 0x22f0, 0x000d, 0x0025, 0xffff, 0x02ff, 0x0307, 0x02ca, - 0x0310, 0x02d4, 0x02d8, 0x0316, 0x02e3, 0x031e, 0x0328, 0x0330, - 0x0339, 0x0003, 0x0363, 0x0372, 0x0381, 0x000d, 0x0025, 0xffff, - 0x02bd, 0x02c3, 0x02ca, 0x02cf, 0x02d4, 0x02d8, 0x02dd, 0x02e3, - 0x02e9, 0x02ef, 0x02f4, 0x02f9, 0x000d, 0x0000, 0xffff, 0x1e5d, - 0x22e6, 0x22d9, 0x2382, 0x22d9, 0x1e5d, 0x1e5d, 0x2382, 0x22dd, - // Entry 18B40 - 18B7F - 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0025, 0xffff, 0x02ff, 0x0307, - 0x02ca, 0x0310, 0x02d4, 0x02d8, 0x0316, 0x02e3, 0x031e, 0x0328, - 0x0330, 0x0339, 0x0002, 0x0393, 0x03bd, 0x0005, 0x0399, 0x03a2, - 0x03b4, 0x0000, 0x03ab, 0x0007, 0x0025, 0x0343, 0x0348, 0x034d, - 0x0352, 0x0357, 0x035c, 0x0361, 0x0007, 0x0000, 0x22f0, 0x228e, - 0x22d9, 0x22d9, 0x1e5d, 0x1edb, 0x22dd, 0x0007, 0x0018, 0x0000, - 0x4a33, 0x4a36, 0x4a26, 0x4a39, 0x4a2d, 0x4a3c, 0x0007, 0x0025, - 0x0366, 0x036f, 0x0375, 0x037b, 0x0384, 0x038a, 0x0393, 0x0005, - // Entry 18B80 - 18BBF - 0x03c3, 0x03cc, 0x03de, 0x0000, 0x03d5, 0x0007, 0x0025, 0x0343, - 0x0348, 0x034d, 0x0352, 0x0357, 0x035c, 0x0361, 0x0007, 0x0000, - 0x22f0, 0x228e, 0x22d9, 0x22d9, 0x1e5d, 0x1edb, 0x22dd, 0x0007, - 0x0018, 0x0000, 0x4a33, 0x4a36, 0x4a26, 0x4a39, 0x4a2d, 0x4a3c, - 0x0007, 0x0025, 0x0366, 0x036f, 0x0375, 0x037b, 0x0384, 0x038a, - 0x0393, 0x0002, 0x03ea, 0x0403, 0x0003, 0x03ee, 0x03f5, 0x03fc, - 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0005, - // Entry 18BC0 - 18BFF - 0xffff, 0x12b0, 0x2163, 0x2170, 0x217d, 0x0003, 0x0407, 0x040e, - 0x0415, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x0005, 0xffff, 0x12b0, 0x2163, 0x2170, 0x217d, 0x0002, 0x041f, - 0x0486, 0x0003, 0x0423, 0x0444, 0x0465, 0x0008, 0x042f, 0x0435, - 0x042c, 0x0438, 0x043b, 0x043e, 0x0441, 0x0432, 0x0001, 0x0025, - 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03a6, - // Entry 18C00 - 18C3F - 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, 0x0450, - 0x0456, 0x044d, 0x0459, 0x045c, 0x045f, 0x0462, 0x0453, 0x0001, - 0x0025, 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, - 0x03a6, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, - 0x0471, 0x0477, 0x046e, 0x047a, 0x047d, 0x0480, 0x0483, 0x0474, - 0x0001, 0x0025, 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, - 0x03a1, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0025, 0x03b6, 0x0001, - // Entry 18C40 - 18C7F - 0x0025, 0x03bf, 0x0001, 0x0025, 0x03d2, 0x0001, 0x0025, 0x03da, - 0x0003, 0x048a, 0x04ab, 0x04cc, 0x0008, 0x0496, 0x049c, 0x0493, - 0x049f, 0x04a2, 0x04a5, 0x04a8, 0x0499, 0x0001, 0x0025, 0x039a, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03a6, 0x0001, - 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, 0x04b7, 0x04bd, - 0x04b4, 0x04c0, 0x04c3, 0x04c6, 0x04c9, 0x04ba, 0x0001, 0x0025, - 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, 0x0001, - // Entry 18C80 - 18CBF - 0x0000, 0x04f2, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03a6, - 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, 0x04d8, - 0x04de, 0x04d5, 0x04e1, 0x04e4, 0x04e7, 0x04ea, 0x04db, 0x0001, - 0x0025, 0x039a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0025, 0x03a1, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0025, 0x03e2, 0x0001, 0x0025, - 0x03e8, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0003, - 0x04fc, 0x0507, 0x04f1, 0x0002, 0x04f4, 0x04f8, 0x0002, 0x0025, - 0x03f4, 0x041f, 0x0002, 0x0025, 0x0408, 0x0434, 0x0002, 0x04ff, - // Entry 18CC0 - 18CFF - 0x0503, 0x0002, 0x0025, 0x0448, 0x0452, 0x0002, 0x0010, 0x02ea, - 0x02f1, 0x0002, 0x050a, 0x050e, 0x0002, 0x0025, 0x0448, 0x0452, - 0x0002, 0x0010, 0x02ea, 0x02f1, 0x0004, 0x0520, 0x051a, 0x0517, - 0x051d, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x0531, 0x052b, - 0x0528, 0x052e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0542, - 0x053c, 0x0539, 0x053f, 0x0001, 0x0025, 0x02b0, 0x0001, 0x0025, - // Entry 18D00 - 18D3F - 0x02b0, 0x0001, 0x0025, 0x02b0, 0x0001, 0x0000, 0x03c6, 0x0006, - 0x054c, 0x0000, 0x0000, 0x0000, 0x05b7, 0x05c5, 0x0002, 0x054f, - 0x0583, 0x0003, 0x0553, 0x0563, 0x0573, 0x000e, 0x0025, 0x0482, - 0x045c, 0x0461, 0x0466, 0x046b, 0x0471, 0x0478, 0x047d, 0x0488, - 0x048d, 0x0492, 0x0497, 0x049c, 0x049f, 0x000e, 0x0000, 0x2382, - 0x04dd, 0x19c7, 0x2157, 0x04dd, 0x22dd, 0x2382, 0x2382, 0x22ee, - 0x2055, 0x22dd, 0x04dd, 0x2382, 0x214e, 0x000e, 0x0025, 0x04d7, - 0x04a4, 0x04ac, 0x04b3, 0x04ba, 0x04c2, 0x04cb, 0x04d2, 0x04df, - // Entry 18D40 - 18D7F - 0x04e6, 0x04eb, 0x04f1, 0x04f8, 0x04fb, 0x0003, 0x0587, 0x0597, - 0x05a7, 0x000e, 0x0025, 0x0482, 0x045c, 0x0461, 0x0466, 0x046b, - 0x0471, 0x0478, 0x047d, 0x0488, 0x048d, 0x0492, 0x0497, 0x049c, - 0x049f, 0x000e, 0x0000, 0x2382, 0x04dd, 0x19c7, 0x2157, 0x04dd, - 0x22dd, 0x2382, 0x2382, 0x22ee, 0x2055, 0x22dd, 0x04dd, 0x2382, - 0x214e, 0x000e, 0x0025, 0x04d7, 0x04a4, 0x04ac, 0x04b3, 0x04ba, - 0x04c2, 0x04cb, 0x04d2, 0x04df, 0x04e6, 0x04eb, 0x04f1, 0x04f8, - 0x04fb, 0x0003, 0x05c0, 0x0000, 0x05bb, 0x0001, 0x05bd, 0x0001, - // Entry 18D80 - 18DBF - 0x0025, 0x0502, 0x0001, 0x05c2, 0x0001, 0x0000, 0x04ef, 0x0004, - 0x05d3, 0x05cd, 0x05ca, 0x05d0, 0x0001, 0x0001, 0x1f7d, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, - 0x0005, 0x05dc, 0x0000, 0x0000, 0x0000, 0x0641, 0x0002, 0x05df, - 0x0610, 0x0003, 0x05e3, 0x05f2, 0x0601, 0x000d, 0x0025, 0xffff, - 0x050d, 0x0513, 0x0518, 0x051e, 0x0525, 0x052c, 0x0532, 0x0539, - 0x053f, 0x0545, 0x054a, 0x0550, 0x000d, 0x0014, 0xffff, 0x146a, - 0x37e2, 0x37e4, 0x37e6, 0x37e9, 0x37eb, 0x37e6, 0x37ed, 0x37ef, - // Entry 18DC0 - 18DFF - 0x37f1, 0x37ef, 0x37f1, 0x000d, 0x0025, 0xffff, 0x0557, 0x055f, - 0x0569, 0x0573, 0x057d, 0x0587, 0x0592, 0x059a, 0x05a2, 0x05b1, - 0x054a, 0x05b7, 0x0003, 0x0614, 0x0623, 0x0632, 0x000d, 0x0025, - 0xffff, 0x050d, 0x0513, 0x0518, 0x051e, 0x0525, 0x052c, 0x0532, - 0x0539, 0x053f, 0x0545, 0x054a, 0x0550, 0x000d, 0x0014, 0xffff, - 0x146a, 0x37e2, 0x37e4, 0x37e6, 0x37e9, 0x37eb, 0x37e6, 0x37ed, - 0x37ef, 0x37f1, 0x37ef, 0x37f1, 0x000d, 0x0025, 0xffff, 0x0557, - 0x055f, 0x0569, 0x0573, 0x057d, 0x0587, 0x0592, 0x059a, 0x05a2, - // Entry 18E00 - 18E3F - 0x05b1, 0x054a, 0x05b7, 0x0001, 0x0643, 0x0001, 0x0645, 0x0001, - 0x0025, 0x05c0, 0x0008, 0x0651, 0x0000, 0x0000, 0x0000, 0x06b6, - 0x06bd, 0x0000, 0x9006, 0x0002, 0x0654, 0x0685, 0x0003, 0x0658, - 0x0667, 0x0676, 0x000d, 0x0025, 0xffff, 0x05c5, 0x05cb, 0x05d0, - 0x05d9, 0x05e2, 0x05ed, 0x05f8, 0x05fd, 0x0603, 0x0608, 0x060e, - 0x0617, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - 0x000d, 0x0025, 0xffff, 0x0620, 0x062a, 0x0630, 0x063e, 0x064e, - // Entry 18E40 - 18E7F - 0x065e, 0x0671, 0x0677, 0x0680, 0x0688, 0x0690, 0x069e, 0x0003, - 0x0689, 0x0698, 0x06a7, 0x000d, 0x0025, 0xffff, 0x05c5, 0x05cb, - 0x05d0, 0x05d9, 0x06ac, 0x06b6, 0x05f8, 0x05fd, 0x0603, 0x0608, - 0x06c0, 0x06ca, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x0025, 0xffff, 0x0620, 0x062a, 0x0630, 0x063e, - 0x064e, 0x065e, 0x0671, 0x0677, 0x0680, 0x0688, 0x0690, 0x069e, - 0x0001, 0x06b8, 0x0001, 0x06ba, 0x0001, 0x0000, 0x06c8, 0x0004, - // Entry 18E80 - 18EBF - 0x06cb, 0x06c5, 0x06c2, 0x06c8, 0x0001, 0x0001, 0x1f7d, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x06d7, 0x09ab, 0x0000, - 0x09bc, 0x0003, 0x07cb, 0x08bb, 0x06db, 0x0001, 0x06dd, 0x00ec, - 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, - 0x0750, 0x0762, 0x0775, 0x23dd, 0x23f1, 0x240a, 0x2424, 0x243c, - 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, - 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, - // Entry 18EC0 - 18EFF - 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, - 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, - 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, - 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, - 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, - 0x0c60, 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, - 0x0d07, 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, - 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, - // Entry 18F00 - 18F3F - 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, - 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, - 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, - 0x1051, 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, - 0x10fa, 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, - 0x11a3, 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, - 0x124d, 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, - 0x12f3, 0x1308, 0x131f, 0x1335, 0x134b, 0x2454, 0x1374, 0x1388, - // Entry 18F40 - 18F7F - 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, - 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, - 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, - 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, - 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, - 0x16f7, 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, - 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, - 0x1847, 0x2468, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, - // Entry 18F80 - 18FBF - 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, - 0x1997, 0x2257, 0x225d, 0x2265, 0x226c, 0x0001, 0x07cd, 0x00ec, - 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, - 0x0750, 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, - 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, - 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, - 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, - 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, - // Entry 18FC0 - 18FFF - 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, - 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, - 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, - 0x0c60, 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, - 0x0d07, 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, - 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, - 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, - 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, - // Entry 19000 - 1903F - 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, - 0x1051, 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, - 0x10fa, 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, - 0x11a3, 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, - 0x124d, 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, - 0x12f3, 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, - 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, - 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, - // Entry 19040 - 1907F - 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, - 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, - 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, - 0x16f7, 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, - 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, - 0x1847, 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, - 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, - 0x1997, 0x2257, 0x225d, 0x2265, 0x226c, 0x0001, 0x08bd, 0x00ec, - // Entry 19080 - 190BF - 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, - 0x0750, 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, 0x20bf, - 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, - 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, 0x0926, - 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, 0x09c2, - 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, 0x0a58, - 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, - 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, - // Entry 190C0 - 190FF - 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, 0x0c4c, - 0x0c60, 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, - 0x0d07, 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x0d9c, - 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, 0x0e43, - 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, 0x0ee9, - 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, - 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, 0x103c, - 0x1051, 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, 0x10e3, - // Entry 19100 - 1913F - 0x10fa, 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, - 0x11a3, 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, - 0x124d, 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, 0x12df, - 0x12f3, 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, 0x1388, - 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, - 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x14de, - 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, - 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x1638, - // Entry 19140 - 1917F - 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, 0x16e0, - 0x16f7, 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, 0x1787, - 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, - 0x1847, 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, 0x18dd, - 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, 0x1983, - 0x1997, 0x247f, 0x04dd, 0x2481, 0x19c7, 0x0004, 0x09b9, 0x09b3, - 0x09b0, 0x09b6, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, 0x09ca, - // Entry 19180 - 191BF - 0x09c4, 0x09c1, 0x09c7, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x09d3, 0x0001, 0x09d5, 0x0001, - 0x09d7, 0x0001, 0x0000, 0x1a1d, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x09e0, 0x0001, 0x09e2, 0x0001, 0x09e4, 0x0002, 0x0025, - 0x06d4, 0x06de, 0x0040, 0x0a29, 0x0000, 0x0000, 0x0a2e, 0x0a45, - 0x0a57, 0x0a69, 0x0a80, 0x0a97, 0x0aae, 0x0ac5, 0x0ad7, 0x0ae9, - 0x0b04, 0x0b1a, 0x0000, 0x0000, 0x0000, 0x0b30, 0x0b49, 0x0b5b, - // Entry 191C0 - 191FF - 0x0000, 0x0000, 0x0000, 0x0b6d, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0b72, 0x0b86, 0x0b9a, 0x0bae, 0x0bc2, 0x0bd6, 0x0bea, - 0x0bfe, 0x0c12, 0x0c26, 0x0c3a, 0x0c4e, 0x0c62, 0x0c76, 0x0c8a, - 0x0c9e, 0x0cb2, 0x0cc6, 0x0cda, 0x0cee, 0x0d02, 0x0000, 0x0d16, - 0x0000, 0x0d1b, 0x0d31, 0x0d47, 0x0d5d, 0x0d73, 0x0d89, 0x0d9f, - 0x0db5, 0x0dc7, 0x0dd9, 0x0001, 0x0a2b, 0x0001, 0x0025, 0x06e2, - 0x0003, 0x0a32, 0x0a35, 0x0a3a, 0x0001, 0x0025, 0x06e7, 0x0003, - 0x0025, 0x06ee, 0x0703, 0x0710, 0x0002, 0x0a3d, 0x0a41, 0x0002, - // Entry 19200 - 1923F - 0x0025, 0x0731, 0x0725, 0x0002, 0x0025, 0x074c, 0x073e, 0x0003, - 0x0a49, 0x0000, 0x0a4c, 0x0001, 0x0025, 0x075b, 0x0002, 0x0a4f, - 0x0a53, 0x0002, 0x0025, 0x075e, 0x075e, 0x0002, 0x0025, 0x0769, - 0x0769, 0x0003, 0x0a5b, 0x0000, 0x0a5e, 0x0001, 0x0000, 0x1f9c, - 0x0002, 0x0a61, 0x0a65, 0x0002, 0x0025, 0x0776, 0x0776, 0x0002, - 0x001e, 0x03c7, 0x03c7, 0x0003, 0x0a6d, 0x0a70, 0x0a75, 0x0001, - 0x0005, 0x1c6d, 0x0003, 0x0025, 0x077d, 0x0792, 0x079f, 0x0002, - 0x0a78, 0x0a7c, 0x0002, 0x0025, 0x07c8, 0x07b5, 0x0002, 0x0025, - // Entry 19240 - 1927F - 0x07f1, 0x07dc, 0x0003, 0x0a84, 0x0a87, 0x0a8c, 0x0001, 0x000b, - 0x0c78, 0x0003, 0x0025, 0x0807, 0x0816, 0x081f, 0x0002, 0x0a8f, - 0x0a93, 0x0002, 0x0025, 0x082f, 0x082f, 0x0002, 0x0025, 0x083e, - 0x083e, 0x0003, 0x0a9b, 0x0a9e, 0x0aa3, 0x0001, 0x000b, 0x0c78, - 0x0003, 0x0025, 0x084f, 0x0859, 0x0861, 0x0002, 0x0aa6, 0x0aaa, - 0x0002, 0x000b, 0x0c9c, 0x0c9c, 0x0002, 0x000b, 0x0ca7, 0x0ca7, - 0x0003, 0x0ab2, 0x0ab5, 0x0aba, 0x0001, 0x0025, 0x086c, 0x0003, - 0x0025, 0x0871, 0x0881, 0x088c, 0x0002, 0x0abd, 0x0ac1, 0x0002, - // Entry 19280 - 192BF - 0x0025, 0x089d, 0x089d, 0x0002, 0x0025, 0x08ab, 0x08ab, 0x0003, - 0x0ac9, 0x0000, 0x0acc, 0x0001, 0x0001, 0x077c, 0x0002, 0x0acf, - 0x0ad3, 0x0002, 0x0025, 0x08bb, 0x08bb, 0x0002, 0x0025, 0x08c7, - 0x08c7, 0x0003, 0x0adb, 0x0000, 0x0ade, 0x0001, 0x0001, 0x077c, - 0x0002, 0x0ae1, 0x0ae5, 0x0002, 0x0025, 0x08d5, 0x08d5, 0x0002, - 0x0025, 0x08dd, 0x08dd, 0x0004, 0x0aee, 0x0af1, 0x0af6, 0x0b01, - 0x0001, 0x0025, 0x08e5, 0x0003, 0x0025, 0x08ed, 0x0902, 0x0910, - 0x0002, 0x0af9, 0x0afd, 0x0002, 0x0025, 0x0936, 0x0925, 0x0002, - // Entry 192C0 - 192FF - 0x0025, 0x095b, 0x0948, 0x0001, 0x0025, 0x096f, 0x0004, 0x0b09, - 0x0000, 0x0b0c, 0x0b17, 0x0001, 0x001c, 0x175b, 0x0002, 0x0b0f, - 0x0b13, 0x0002, 0x0025, 0x0981, 0x0981, 0x0002, 0x0025, 0x098f, - 0x098f, 0x0001, 0x0025, 0x099f, 0x0004, 0x0b1f, 0x0000, 0x0b22, - 0x0b2d, 0x0001, 0x001c, 0x175b, 0x0002, 0x0b25, 0x0b29, 0x0002, - 0x001e, 0x03f1, 0x03f1, 0x0002, 0x001e, 0x03fb, 0x03fb, 0x0001, - 0x0025, 0x099f, 0x0003, 0x0b34, 0x0b37, 0x0b3e, 0x0001, 0x0025, - 0x09ab, 0x0005, 0x0025, 0x09bb, 0x09c0, 0x09ce, 0x09b0, 0x09d5, - // Entry 19300 - 1933F - 0x0002, 0x0b41, 0x0b45, 0x0002, 0x0025, 0x09f1, 0x09e3, 0x0002, - 0x0025, 0x0a10, 0x0a00, 0x0003, 0x0b4d, 0x0000, 0x0b50, 0x0001, - 0x0000, 0x214a, 0x0002, 0x0b53, 0x0b57, 0x0002, 0x0025, 0x0a21, - 0x0a21, 0x0002, 0x0025, 0x0a2d, 0x0a2d, 0x0003, 0x0b5f, 0x0000, - 0x0b62, 0x0001, 0x0000, 0x214a, 0x0002, 0x0b65, 0x0b69, 0x0002, - 0x0025, 0x0a3b, 0x0a3b, 0x0002, 0x0025, 0x0a42, 0x0a42, 0x0001, - 0x0b6f, 0x0001, 0x0025, 0x0a49, 0x0003, 0x0000, 0x0b76, 0x0b7b, - 0x0003, 0x0025, 0x0a5c, 0x0a6d, 0x0a79, 0x0002, 0x0b7e, 0x0b82, - // Entry 19340 - 1937F - 0x0002, 0x0025, 0x0a9d, 0x0a8b, 0x0002, 0x0025, 0x0ac4, 0x0ab0, - 0x0003, 0x0000, 0x0b8a, 0x0b8f, 0x0003, 0x0025, 0x0ad9, 0x0ae6, - 0x0aee, 0x0002, 0x0b92, 0x0b96, 0x0002, 0x0025, 0x0afc, 0x0afc, - 0x0002, 0x0025, 0x0b0a, 0x0b0a, 0x0003, 0x0000, 0x0b9e, 0x0ba3, - 0x0003, 0x0025, 0x0b1a, 0x0b23, 0x0b2a, 0x0002, 0x0ba6, 0x0baa, - 0x0002, 0x0025, 0x0b34, 0x0b34, 0x0002, 0x0025, 0x0b40, 0x0b40, - 0x0003, 0x0000, 0x0bb2, 0x0bb7, 0x0003, 0x0025, 0x0b4e, 0x0b5c, - 0x0b65, 0x0002, 0x0bba, 0x0bbe, 0x0002, 0x0025, 0x0b83, 0x0b74, - // Entry 19380 - 193BF - 0x0002, 0x0025, 0x0ba4, 0x0b93, 0x0003, 0x0000, 0x0bc6, 0x0bcb, - 0x0003, 0x0025, 0x0bb6, 0x0bc3, 0x0bcb, 0x0002, 0x0bce, 0x0bd2, - 0x0002, 0x0025, 0x0bd9, 0x0bd9, 0x0002, 0x0025, 0x0be7, 0x0be7, - 0x0003, 0x0000, 0x0bda, 0x0bdf, 0x0003, 0x0025, 0x0bf7, 0x0c00, - 0x0c07, 0x0002, 0x0be2, 0x0be6, 0x0002, 0x0025, 0x0c11, 0x0c11, - 0x0002, 0x0025, 0x0c1d, 0x0c1d, 0x0003, 0x0000, 0x0bee, 0x0bf3, - 0x0003, 0x0025, 0x0c2b, 0x0c39, 0x0c42, 0x0002, 0x0bf6, 0x0bfa, - 0x0002, 0x0025, 0x0c60, 0x0c51, 0x0002, 0x0025, 0x0c81, 0x0c70, - // Entry 193C0 - 193FF - 0x0003, 0x0000, 0x0c02, 0x0c07, 0x0003, 0x0025, 0x0c93, 0x0ca0, - 0x0ca8, 0x0002, 0x0c0a, 0x0c0e, 0x0002, 0x0025, 0x0cb6, 0x0cb6, - 0x0002, 0x0025, 0x0cc4, 0x0cc4, 0x0003, 0x0000, 0x0c16, 0x0c1b, - 0x0003, 0x0025, 0x0cd4, 0x0cdd, 0x0ce4, 0x0002, 0x0c1e, 0x0c22, - 0x0002, 0x0025, 0x0cee, 0x0cee, 0x0002, 0x0025, 0x0cfa, 0x0cfa, - 0x0003, 0x0000, 0x0c2a, 0x0c2f, 0x0003, 0x0025, 0x0d08, 0x0d19, - 0x0d25, 0x0002, 0x0c32, 0x0c36, 0x0002, 0x0025, 0x0d49, 0x0d37, - 0x0002, 0x0025, 0x0d70, 0x0d5c, 0x0003, 0x0000, 0x0c3e, 0x0c43, - // Entry 19400 - 1943F - 0x0003, 0x0025, 0x0d85, 0x0d92, 0x0d9a, 0x0002, 0x0c46, 0x0c4a, - 0x0002, 0x0025, 0x0da8, 0x0da8, 0x0002, 0x0025, 0x0db6, 0x0db6, - 0x0003, 0x0000, 0x0c52, 0x0c57, 0x0003, 0x0025, 0x0dc6, 0x0dcf, - 0x0dd6, 0x0002, 0x0c5a, 0x0c5e, 0x0002, 0x0025, 0x0de0, 0x0de0, - 0x0002, 0x0025, 0x0dec, 0x0dec, 0x0003, 0x0000, 0x0c66, 0x0c6b, - 0x0003, 0x0025, 0x0dfa, 0x0e08, 0x0e11, 0x0002, 0x0c6e, 0x0c72, - 0x0002, 0x0025, 0x0e2f, 0x0e20, 0x0002, 0x0025, 0x0e50, 0x0e3f, - 0x0003, 0x0000, 0x0c7a, 0x0c7f, 0x0003, 0x0025, 0x0e62, 0x0e6f, - // Entry 19440 - 1947F - 0x0e77, 0x0002, 0x0c82, 0x0c86, 0x0002, 0x0025, 0x0e85, 0x0e85, - 0x0002, 0x0025, 0x0e93, 0x0e93, 0x0003, 0x0000, 0x0c8e, 0x0c93, - 0x0003, 0x0025, 0x0ea3, 0x0eac, 0x0eb3, 0x0002, 0x0c96, 0x0c9a, - 0x0002, 0x0025, 0x0ebd, 0x0ebd, 0x0002, 0x0025, 0x0ec9, 0x0ec9, - 0x0003, 0x0000, 0x0ca2, 0x0ca7, 0x0003, 0x0025, 0x0ed7, 0x0ee8, - 0x0ef4, 0x0002, 0x0caa, 0x0cae, 0x0002, 0x0025, 0x0f18, 0x0f06, - 0x0002, 0x0025, 0x0f3f, 0x0f2b, 0x0003, 0x0000, 0x0cb6, 0x0cbb, - 0x0003, 0x0025, 0x0f54, 0x0f61, 0x0f69, 0x0002, 0x0cbe, 0x0cc2, - // Entry 19480 - 194BF - 0x0002, 0x0025, 0x0f77, 0x0f77, 0x0002, 0x0025, 0x0f85, 0x0f85, - 0x0003, 0x0000, 0x0cca, 0x0ccf, 0x0003, 0x0025, 0x0f95, 0x0f9e, - 0x0fa5, 0x0002, 0x0cd2, 0x0cd6, 0x0002, 0x0025, 0x0faf, 0x0faf, - 0x0002, 0x0025, 0x0fbb, 0x0fbb, 0x0003, 0x0000, 0x0cde, 0x0ce3, - 0x0003, 0x0025, 0x0fc9, 0x0fd8, 0x0fe2, 0x0002, 0x0ce6, 0x0cea, - 0x0002, 0x0025, 0x1002, 0x0ff2, 0x0002, 0x0025, 0x1025, 0x1013, - 0x0003, 0x0000, 0x0cf2, 0x0cf7, 0x0003, 0x0025, 0x1038, 0x1045, - 0x104d, 0x0002, 0x0cfa, 0x0cfe, 0x0002, 0x0025, 0x105b, 0x105b, - // Entry 194C0 - 194FF - 0x0002, 0x0025, 0x105b, 0x105b, 0x0003, 0x0000, 0x0d06, 0x0d0b, - 0x0003, 0x0025, 0x1069, 0x1072, 0x1079, 0x0002, 0x0d0e, 0x0d12, - 0x0002, 0x0025, 0x1083, 0x1083, 0x0002, 0x0025, 0x108f, 0x108f, - 0x0001, 0x0d18, 0x0001, 0x0025, 0x109d, 0x0003, 0x0d1f, 0x0d22, - 0x0d26, 0x0001, 0x0025, 0x10a4, 0x0002, 0x0025, 0xffff, 0x10aa, - 0x0002, 0x0d29, 0x0d2d, 0x0002, 0x0025, 0x10c8, 0x10b9, 0x0002, - 0x0025, 0x10e9, 0x10d8, 0x0003, 0x0d35, 0x0d38, 0x0d3c, 0x0001, - 0x0000, 0x2143, 0x0002, 0x0025, 0xffff, 0x10fb, 0x0002, 0x0d3f, - // Entry 19500 - 1953F - 0x0d43, 0x0002, 0x0025, 0x1103, 0x1103, 0x0002, 0x0025, 0x110f, - 0x110f, 0x0003, 0x0d4b, 0x0d4e, 0x0d52, 0x0001, 0x0000, 0x2143, - 0x0002, 0x0025, 0xffff, 0x10fb, 0x0002, 0x0d55, 0x0d59, 0x0002, - 0x0025, 0x111d, 0x111d, 0x0002, 0x0025, 0x1127, 0x1127, 0x0003, - 0x0d61, 0x0d64, 0x0d68, 0x0001, 0x001b, 0x09f7, 0x0002, 0x0025, - 0xffff, 0x1133, 0x0002, 0x0d6b, 0x0d6f, 0x0002, 0x0025, 0x1153, - 0x1143, 0x0002, 0x0025, 0x1176, 0x1164, 0x0003, 0x0d77, 0x0d7a, - 0x0d7e, 0x0001, 0x000b, 0x1250, 0x0002, 0x0025, 0xffff, 0x1189, - // Entry 19540 - 1957F - 0x0002, 0x0d81, 0x0d85, 0x0002, 0x0025, 0x1193, 0x1193, 0x0002, - 0x0025, 0x11a1, 0x11a1, 0x0003, 0x0d8d, 0x0d90, 0x0d94, 0x0001, - 0x000b, 0x1250, 0x0002, 0x0025, 0xffff, 0x1189, 0x0002, 0x0d97, - 0x0d9b, 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, - 0x11b1, 0x0003, 0x0da3, 0x0da6, 0x0daa, 0x0001, 0x0025, 0x11c8, - 0x0002, 0x0025, 0xffff, 0x11d0, 0x0002, 0x0dad, 0x0db1, 0x0002, - 0x0025, 0x11ec, 0x11db, 0x0002, 0x0025, 0x1211, 0x11fe, 0x0003, - 0x0db9, 0x0000, 0x0dbc, 0x0001, 0x0000, 0x2002, 0x0002, 0x0dbf, - // Entry 19580 - 195BF - 0x0dc3, 0x0002, 0x0025, 0x1225, 0x1225, 0x0002, 0x0025, 0x1231, - 0x1231, 0x0003, 0x0dcb, 0x0000, 0x0dce, 0x0001, 0x0000, 0x2002, - 0x0002, 0x0dd1, 0x0dd5, 0x0002, 0x0000, 0x1db4, 0x1db4, 0x0002, - 0x0000, 0x1dbb, 0x1dbb, 0x0001, 0x0ddb, 0x0001, 0x0025, 0x123f, - 0x0004, 0x0de3, 0x0de8, 0x0ded, 0x0dfc, 0x0003, 0x001c, 0x0baf, - 0x20f5, 0x20fc, 0x0003, 0x0025, 0x124e, 0x125a, 0x1270, 0x0002, - 0x0000, 0x0df0, 0x0003, 0x0000, 0x0df7, 0x0df4, 0x0001, 0x0025, - 0x1285, 0x0003, 0x0025, 0xffff, 0x12a0, 0x12bc, 0x0002, 0x0fe0, - // Entry 195C0 - 195FF - 0x0dff, 0x0003, 0x0e03, 0x0f41, 0x0ea2, 0x009d, 0x0025, 0xffff, - 0xffff, 0xffff, 0xffff, 0x13a7, 0x1416, 0x14bd, 0x1511, 0x157e, - 0x15ee, 0x1647, 0x16bd, 0x1702, 0x17ce, 0x181c, 0x1870, 0x18d6, - 0x1927, 0x198c, 0x1a01, 0x1a88, 0x1b00, 0x1b7e, 0x1bdb, 0x1c23, - 0xffff, 0xffff, 0x1c93, 0xffff, 0x1cec, 0xffff, 0x1d47, 0x1da1, - 0x1de0, 0x1e25, 0xffff, 0xffff, 0x1ea5, 0x1eed, 0x1f3e, 0xffff, - 0xffff, 0xffff, 0x1fcb, 0xffff, 0x204b, 0x20ab, 0xffff, 0x2126, - 0x2192, 0x21f2, 0xffff, 0xffff, 0xffff, 0xffff, 0x22ce, 0xffff, - // Entry 19600 - 1963F - 0xffff, 0x234f, 0x23c9, 0xffff, 0xffff, 0x2476, 0x24f9, 0x2544, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2619, 0x265b, - 0x26a6, 0x26ee, 0x272d, 0xffff, 0xffff, 0x27e5, 0xffff, 0x283d, - 0xffff, 0xffff, 0x28d2, 0xffff, 0x2978, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2a18, 0xffff, 0x2a6d, 0x2af0, 0x2b67, 0x2bbb, 0xffff, - 0xffff, 0xffff, 0x2c2d, 0x2c9c, 0x2d08, 0xffff, 0xffff, 0x2d91, - 0x2e1c, 0x2e70, 0x2eac, 0xffff, 0xffff, 0x2f2c, 0x2f74, 0x2fb6, - 0xffff, 0x3022, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3117, - // Entry 19640 - 1967F - 0x3162, 0x31a4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3270, 0xffff, 0xffff, 0x32d8, 0xffff, 0x3328, 0xffff, - 0x3390, 0x33e1, 0x3441, 0xffff, 0x3499, 0x34ea, 0xffff, 0xffff, - 0xffff, 0x3576, 0x35be, 0xffff, 0xffff, 0x12d7, 0x1472, 0x1741, - 0x1786, 0xffff, 0xffff, 0x291d, 0x009d, 0x0025, 0x131f, 0x1338, - 0x135b, 0x1380, 0x13c6, 0x142a, 0x14d3, 0x1531, 0x159f, 0x1602, - 0x166a, 0x16ce, 0x1711, 0x17e2, 0x1833, 0x188c, 0x18ec, 0x193f, - 0x19ad, 0x1a28, 0x1aaa, 0x1b24, 0x1b98, 0x1bed, 0x1c37, 0x1c71, - // Entry 19680 - 196BF - 0x1c82, 0x1ca5, 0x1cdb, 0x1cfe, 0x1d34, 0x1d5f, 0x1db0, 0x1df2, - 0x1e39, 0x1e73, 0x1e8f, 0x1eb7, 0x1f02, 0x1f4c, 0x1f88, 0x1f97, - 0x1fb3, 0x1fe8, 0x2034, 0x2065, 0x20c7, 0x2111, 0x2144, 0x21ac, - 0x2208, 0x2246, 0x2264, 0x229b, 0x22b6, 0x22e3, 0x231c, 0x2334, - 0x236d, 0x23e9, 0x2457, 0x2466, 0x2497, 0x250c, 0x2552, 0x2580, - 0x2592, 0x25ad, 0x25c1, 0x25dd, 0x25fa, 0x262b, 0x266e, 0x26b8, - 0x26fd, 0x274f, 0x27a5, 0x27c4, 0x27f8, 0x282d, 0x2853, 0x2891, - 0x28b6, 0x28e5, 0x295c, 0x2989, 0x29bd, 0x29d2, 0x29e5, 0x29ff, - // Entry 196C0 - 196FF - 0x2a29, 0x2a5d, 0x2a8c, 0x2b0c, 0x2b7d, 0x2bcb, 0x2bfd, 0x2c0e, - 0x2c1d, 0x2c4d, 0x2cba, 0x2d1d, 0x2d67, 0x2d77, 0x2dae, 0x2e32, - 0x2e7e, 0x2ebe, 0x2ef4, 0x2f05, 0x2f3e, 0x2f84, 0x2fcc, 0x300a, - 0x3044, 0x30a8, 0x30c1, 0x30de, 0x30f1, 0x3106, 0x312a, 0x3172, - 0x31b4, 0x31e6, 0x31fb, 0x320e, 0x3226, 0x323f, 0x3251, 0x3260, - 0x3280, 0x32b2, 0x32c7, 0x32e8, 0x3319, 0x333f, 0x337f, 0x33a5, - 0x33fb, 0x3452, 0x3486, 0x34ae, 0x34fd, 0x3535, 0x3545, 0x355c, - 0x3588, 0x35d6, 0x2449, 0x2dfa, 0x12e9, 0x1485, 0x1752, 0x1798, - // Entry 19700 - 1973F - 0xffff, 0x28a7, 0x292c, 0x009d, 0x0025, 0xffff, 0xffff, 0xffff, - 0xffff, 0x13ed, 0x1446, 0x14f1, 0x1559, 0x15c8, 0x161e, 0x1695, - 0x16e7, 0x1728, 0x17fe, 0x184f, 0x18b0, 0x190a, 0x195f, 0x19d6, - 0x1a57, 0x1ad4, 0x1b50, 0x1bba, 0x1c07, 0x1c53, 0xffff, 0xffff, - 0x1cbf, 0xffff, 0x1d18, 0xffff, 0x1d7f, 0x1dc7, 0x1e0c, 0x1e55, - 0xffff, 0xffff, 0x1ed1, 0x1f1f, 0x1f62, 0xffff, 0xffff, 0xffff, - 0x200d, 0xffff, 0x2087, 0x20eb, 0xffff, 0x216a, 0x21ce, 0x2226, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2300, 0xffff, 0xffff, 0x2393, - // Entry 19740 - 1977F - 0x2411, 0xffff, 0xffff, 0x24c0, 0x2527, 0x2568, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2642, 0x2689, 0x26d2, 0x2714, - 0x2779, 0xffff, 0xffff, 0x2813, 0xffff, 0x2871, 0xffff, 0xffff, - 0x2900, 0xffff, 0x29a2, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a42, - 0xffff, 0x2ab3, 0x2b30, 0x2b9b, 0x2be3, 0xffff, 0xffff, 0xffff, - 0x2c75, 0x2ce0, 0x2d3a, 0xffff, 0xffff, 0x2dd3, 0x2e50, 0x2e94, - 0x2ed8, 0xffff, 0xffff, 0x2f58, 0x2f9c, 0x2fea, 0xffff, 0x306e, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3145, 0x318a, 0x31cc, - // Entry 19780 - 197BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3298, - 0xffff, 0xffff, 0x3300, 0xffff, 0x335e, 0xffff, 0x33c2, 0x341d, - 0x346b, 0xffff, 0x34cb, 0x3518, 0xffff, 0xffff, 0xffff, 0x35a2, - 0x35f6, 0xffff, 0xffff, 0x1303, 0x14a0, 0x176b, 0x17b2, 0xffff, - 0xffff, 0x2943, 0x0003, 0x0fe4, 0x10ce, 0x1059, 0x0073, 0x0025, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1464, 0xffff, 0x1573, - 0x15e3, 0x163c, 0x16b2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1981, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 197C0 - 197FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f7a, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x23bb, 0x243b, 0xffff, 0xffff, 0x24eb, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19800 - 1983F - 0xffff, 0xffff, 0xffff, 0xffff, 0x2adc, 0x2b56, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d59, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x309a, 0x0073, 0x0025, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1468, 0xffff, 0x1576, 0x15e6, 0x163f, 0x16b5, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1984, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19840 - 1987F - 0xffff, 0xffff, 0xffff, 0xffff, 0x1f7e, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x23bf, - 0x243f, 0xffff, 0xffff, 0x24ef, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2ae2, 0x2b5b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19880 - 198BF - 0xffff, 0xffff, 0x2d5d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x309e, - 0x0073, 0x0025, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x146d, - 0xffff, 0x157a, 0x15ea, 0x1643, 0x16b9, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1988, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1f83, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 198C0 - 198FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x23c4, 0x2444, 0xffff, 0xffff, - 0x24f4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ae9, 0x2b61, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d62, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19900 - 1993F - 0xffff, 0xffff, 0xffff, 0xffff, 0x30a3, 0x0001, 0x0002, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0019, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, - 0x0000, 0x0001, 0x0016, 0x0001, 0x001e, 0x0218, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x0026, 0x0001, 0x0023, - 0x0001, 0x001c, 0x04c7, 0x0003, 0x0000, 0x0000, 0x002a, 0x0001, - 0x0026, 0x0000, 0x0003, 0x0004, 0x011c, 0x019c, 0x000b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x001e, 0x0000, - // Entry 19940 - 1997F - 0x0000, 0x010e, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0019, 0x0000, 0x0000, 0x0001, 0x001b, 0x0001, 0x0026, 0x001b, - 0x0008, 0x0027, 0x0000, 0x0000, 0x004c, 0x00f1, 0x00fc, 0x0101, - 0x0106, 0x0002, 0x002a, 0x003b, 0x0001, 0x002c, 0x000d, 0x0025, - 0xffff, 0x02bd, 0x02c3, 0x02ca, 0x02cf, 0x02d4, 0x02d8, 0x3618, - 0x02e3, 0x02e9, 0x02ef, 0x02f4, 0x02f9, 0x0001, 0x003d, 0x000d, - 0x0025, 0xffff, 0x02bd, 0x02c3, 0x02ca, 0x02cf, 0x02d4, 0x02d8, - 0x3618, 0x02e3, 0x02e9, 0x02ef, 0x02f4, 0x02f9, 0x0002, 0x004f, - // Entry 19980 - 199BF - 0x00b6, 0x0003, 0x0053, 0x0074, 0x0095, 0x0008, 0x005f, 0x0065, - 0x005c, 0x0068, 0x006b, 0x006e, 0x0071, 0x0062, 0x0001, 0x0025, - 0x039a, 0x0001, 0x001c, 0x0494, 0x0001, 0x0025, 0x03a1, 0x0001, - 0x001c, 0x0499, 0x0001, 0x0026, 0x002a, 0x0001, 0x0025, 0x03e8, - 0x0001, 0x0025, 0x03d2, 0x0001, 0x0025, 0x03b6, 0x0008, 0x0080, - 0x0086, 0x007d, 0x0089, 0x008c, 0x008f, 0x0092, 0x0083, 0x0001, - 0x0025, 0x039a, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0025, 0x03a1, - 0x0001, 0x0000, 0x21ec, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, - // Entry 199C0 - 199FF - 0x03e8, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, - 0x00a1, 0x00a7, 0x009e, 0x00aa, 0x00ad, 0x00b0, 0x00b3, 0x00a4, - 0x0001, 0x0025, 0x039a, 0x0001, 0x001c, 0x0494, 0x0001, 0x0025, - 0x03a1, 0x0001, 0x001c, 0x0499, 0x0001, 0x0025, 0x03b6, 0x0001, - 0x0025, 0x03bf, 0x0001, 0x0025, 0x03d2, 0x0001, 0x0025, 0x03b6, - 0x0003, 0x00ba, 0x00d4, 0x00e8, 0x0007, 0x00c2, 0x00c5, 0x0000, - 0x00c8, 0x00cb, 0x00ce, 0x00d1, 0x0001, 0x001c, 0x0494, 0x0001, - 0x001c, 0x0499, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03e8, - // Entry 19A00 - 19A3F - 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0007, 0x0000, - 0x0000, 0x0000, 0x00dc, 0x00df, 0x00e2, 0x00e5, 0x0001, 0x0010, - 0x029b, 0x0001, 0x0025, 0x03e8, 0x0001, 0x0025, 0x03ac, 0x0001, - 0x0025, 0x03b1, 0x0002, 0x00eb, 0x00ee, 0x0001, 0x001c, 0x0494, - 0x0001, 0x001c, 0x0499, 0x0003, 0x0000, 0x0000, 0x00f5, 0x0002, - 0x0000, 0x00f8, 0x0002, 0x0026, 0x0032, 0x004d, 0x0001, 0x00fe, - 0x0001, 0x001c, 0x071c, 0x0001, 0x0103, 0x0001, 0x0026, 0x0065, - 0x0004, 0x0000, 0x0000, 0x0000, 0x010b, 0x0001, 0x0000, 0x03c6, - // Entry 19A40 - 19A7F - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0117, 0x0000, - 0x9006, 0x0001, 0x0119, 0x0001, 0x0026, 0x006f, 0x003f, 0x0000, - 0x0000, 0x0000, 0x015c, 0x016b, 0x0000, 0x0170, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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 19A80 - 19ABF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0178, - 0x0000, 0x0000, 0x0187, 0x0000, 0x0000, 0x0192, 0x0003, 0x0000, - 0x0000, 0x0160, 0x0002, 0x0163, 0x0167, 0x0002, 0x0026, 0x008a, - 0x007d, 0x0002, 0x0026, 0x00a7, 0x0098, 0x0001, 0x016d, 0x0001, - 0x0000, 0x1f9c, 0x0002, 0x0000, 0x0173, 0x0003, 0x0025, 0x077d, - 0x361f, 0x079f, 0x0003, 0x0000, 0x0000, 0x017c, 0x0002, 0x017f, - 0x0183, 0x0002, 0x0000, 0x1d76, 0x1d76, 0x0002, 0x0000, 0x1d7d, - 0x1d7d, 0x0003, 0x0000, 0x0000, 0x018b, 0x0002, 0x0000, 0x018e, - // Entry 19AC0 - 19AFF - 0x0002, 0x0025, 0x11bf, 0x11bf, 0x0003, 0x0000, 0x0000, 0x0196, - 0x0001, 0x0198, 0x0002, 0x0026, 0x00bf, 0x00b7, 0x0004, 0x0000, - 0x01a1, 0x01a6, 0x01b1, 0x0003, 0x0026, 0xffff, 0x00c6, 0x00db, - 0x0002, 0x0000, 0x01a9, 0x0002, 0x0000, 0x01ac, 0x0003, 0x0026, - 0xffff, 0x00ef, 0x010a, 0x0002, 0x0395, 0x01b4, 0x0003, 0x01b8, - 0x02f6, 0x0257, 0x009d, 0x0025, 0xffff, 0xffff, 0xffff, 0xffff, - 0x13a7, 0x1416, 0x14bd, 0x3687, 0x36af, 0x15ee, 0x36d9, 0x16bd, - 0x1702, 0x17ce, 0x181c, 0x1870, 0x18d6, 0x1927, 0x198c, 0x1a01, - // Entry 19B00 - 19B3F - 0x1a88, 0x1b00, 0x1b7e, 0x1bdb, 0x1c23, 0xffff, 0xffff, 0x1c93, - 0xffff, 0x1cec, 0xffff, 0x1d47, 0x1da1, 0x3727, 0x1e25, 0xffff, - 0xffff, 0x1ea5, 0x1eed, 0x1f3e, 0xffff, 0xffff, 0xffff, 0x1fcb, - 0xffff, 0x204b, 0x20ab, 0xffff, 0x2126, 0x2192, 0x21f2, 0xffff, - 0xffff, 0xffff, 0xffff, 0x22ce, 0xffff, 0xffff, 0x234f, 0x23c9, - 0xffff, 0xffff, 0x3768, 0x24f9, 0x2544, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2619, 0x265b, 0x26a6, 0x26ee, 0x272d, - 0xffff, 0xffff, 0x27e5, 0xffff, 0x283d, 0xffff, 0xffff, 0x28d2, - // Entry 19B40 - 19B7F - 0xffff, 0x2978, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a18, 0xffff, - 0x2a6d, 0x2af0, 0x2b67, 0x2bbb, 0xffff, 0xffff, 0xffff, 0x2c2d, - 0x2c9c, 0x2d08, 0xffff, 0xffff, 0x2d91, 0x2e1c, 0x37b5, 0x2eac, - 0xffff, 0xffff, 0x2f2c, 0x2f74, 0x2fb6, 0xffff, 0x3022, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x3117, 0xffff, 0x31a4, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3270, 0xffff, - 0xffff, 0x32d8, 0xffff, 0x3328, 0xffff, 0x3390, 0x33e1, 0x3441, - 0xffff, 0x3499, 0x34ea, 0xffff, 0xffff, 0xffff, 0x3576, 0x35be, - // Entry 19B80 - 19BBF - 0xffff, 0xffff, 0x12d7, 0x1472, 0x1741, 0x1786, 0xffff, 0xffff, - 0x291d, 0x009d, 0x0025, 0xffff, 0x362f, 0x364a, 0x3666, 0x13c6, - 0x142a, 0x14d3, 0x3697, 0x36c0, 0x1602, 0x36ec, 0x16ce, 0x1711, - 0x17e2, 0x1833, 0x188c, 0x18ec, 0x193f, 0x19ad, 0x1a28, 0x1aaa, - 0x1b24, 0x1b98, 0x1bed, 0x1c37, 0xffff, 0xffff, 0x1ca5, 0xffff, - 0x1cfe, 0xffff, 0x3707, 0x1db0, 0x3736, 0x1e39, 0xffff, 0xffff, - 0x1eb7, 0x1f02, 0x1f4c, 0xffff, 0xffff, 0xffff, 0x1fe8, 0xffff, - 0x2065, 0x20c7, 0xffff, 0x2144, 0x21ac, 0x2208, 0x374d, 0xffff, - // Entry 19BC0 - 19BFF - 0xffff, 0xffff, 0x22e3, 0xffff, 0xffff, 0x236d, 0x23e9, 0xffff, - 0xffff, 0x3787, 0x250c, 0x2552, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x262b, 0x266e, 0x26b8, 0x26fd, 0x274f, 0xffff, - 0xffff, 0x27f8, 0xffff, 0x2853, 0xffff, 0xffff, 0x28e5, 0xffff, - 0x2989, 0xffff, 0xffff, 0xffff, 0xffff, 0x2a29, 0xffff, 0x2a8c, - 0x2b0c, 0x2b7d, 0x2bcb, 0xffff, 0xffff, 0xffff, 0x2c4d, 0x2cba, - 0x2d1d, 0xffff, 0xffff, 0x2dae, 0x2e32, 0x37c4, 0x2ebe, 0xffff, - 0xffff, 0x2f3e, 0x2f84, 0x2fcc, 0xffff, 0x3044, 0xffff, 0xffff, - // Entry 19C00 - 19C3F - 0xffff, 0x37db, 0xffff, 0x312a, 0xffff, 0x31b4, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3280, 0xffff, 0xffff, - 0x32e8, 0xffff, 0x333f, 0xffff, 0x33a5, 0x33fb, 0x3452, 0xffff, - 0x34ae, 0x34fd, 0xffff, 0xffff, 0xffff, 0x3588, 0x35d6, 0xffff, - 0xffff, 0x12e9, 0x1485, 0x1752, 0x1798, 0xffff, 0xffff, 0x292c, - 0x009d, 0x0026, 0xffff, 0xffff, 0xffff, 0xffff, 0x013f, 0x0167, - 0x01a0, 0x01bf, 0x01dc, 0x01fa, 0x021b, 0x023b, 0x0255, 0x02a2, - 0x02bf, 0x02df, 0x0304, 0x0320, 0x0341, 0x036b, 0x039b, 0x03c6, - // Entry 19C40 - 19C7F - 0x03f3, 0x0413, 0x042e, 0xffff, 0xffff, 0x044b, 0xffff, 0x0466, - 0xffff, 0x0481, 0x04a2, 0x04ba, 0x04d2, 0xffff, 0xffff, 0x04ef, - 0x050a, 0x0528, 0xffff, 0xffff, 0xffff, 0x053f, 0xffff, 0x0565, - 0x0588, 0xffff, 0x05ad, 0x05d4, 0x05f7, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0616, 0xffff, 0xffff, 0x0631, 0x0658, 0xffff, 0xffff, - 0x0681, 0x06a9, 0x06c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x06dc, 0x06f4, 0x0710, 0x072b, 0x0743, 0xffff, 0xffff, - 0x076e, 0xffff, 0x0787, 0xffff, 0xffff, 0x07a6, 0xffff, 0x07da, - // Entry 19C80 - 19CBF - 0xffff, 0xffff, 0xffff, 0xffff, 0x07f4, 0xffff, 0x080e, 0x0836, - 0x085b, 0x087a, 0xffff, 0xffff, 0xffff, 0x0893, 0x08b9, 0x08e0, - 0xffff, 0xffff, 0x0902, 0x0928, 0x0947, 0x095f, 0xffff, 0xffff, - 0x097a, 0x0995, 0x09ae, 0xffff, 0x09cd, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x09f8, 0xffff, 0x0a14, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0a2d, 0xffff, 0xffff, 0x0a46, - 0xffff, 0x0a5e, 0xffff, 0x0a7e, 0x0a9c, 0x0abf, 0xffff, 0x0ad9, - 0x0af7, 0xffff, 0xffff, 0xffff, 0x0b13, 0x0b2e, 0xffff, 0xffff, - // Entry 19CC0 - 19CFF - 0x0124, 0x0184, 0x026d, 0x0287, 0xffff, 0xffff, 0x07c2, 0x0003, - 0x0399, 0x0469, 0x0401, 0x0066, 0x0025, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1573, 0x15e3, 0x163c, 0x16b2, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19D00 - 19D3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x37ae, 0x0066, 0x0025, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1576, 0x15e6, 0x163f, 0x16b5, - // Entry 19D40 - 19D7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19D80 - 19DBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x37b1, 0x0066, 0x0026, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x01d8, 0x01f6, 0x0217, 0x0237, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19DC0 - 19DFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19E00 - 19E3F - 0xffff, 0xffff, 0x08fe, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, - 0x0017, 0x0035, 0x0002, 0x0000, 0x001a, 0x0008, 0x0000, 0x0000, - 0x0023, 0x0029, 0x002c, 0x002f, 0x0032, 0x0026, 0x0001, 0x0001, - 0x075a, 0x0001, 0x0025, 0x03a1, 0x0001, 0x0010, 0x029b, 0x0001, - 0x0025, 0x03a6, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, - 0x0002, 0x0000, 0x0038, 0x0003, 0x0000, 0x0000, 0x003c, 0x0001, - // Entry 19E40 - 19E7F - 0x0001, 0x075a, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x001e, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0003, 0x001b, - 0x0000, 0x0018, 0x0001, 0x0005, 0x0625, 0x0001, 0x001e, 0x1a8e, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0027, 0x0000, 0x0090, 0x009a, - 0x0000, 0x0002, 0x002a, 0x007f, 0x0003, 0x002e, 0x0049, 0x0064, - 0x0008, 0x0000, 0x0000, 0x0037, 0x003d, 0x0040, 0x0043, 0x0046, - 0x003a, 0x0001, 0x0001, 0x075a, 0x0001, 0x0025, 0x03a1, 0x0001, - // Entry 19E80 - 19EBF - 0x0026, 0x002a, 0x0001, 0x0026, 0x0b4f, 0x0001, 0x0025, 0x03d2, - 0x0001, 0x0026, 0x002a, 0x0008, 0x0000, 0x0000, 0x0052, 0x0058, - 0x005b, 0x005e, 0x0061, 0x0055, 0x0001, 0x0001, 0x075a, 0x0001, - 0x0025, 0x03a1, 0x0001, 0x0026, 0x002a, 0x0001, 0x0026, 0x0b4f, - 0x0001, 0x0025, 0x03d2, 0x0001, 0x0026, 0x002a, 0x0008, 0x0000, - 0x0000, 0x006d, 0x0073, 0x0076, 0x0079, 0x007c, 0x0070, 0x0001, - 0x0025, 0x039a, 0x0001, 0x0025, 0x03a1, 0x0001, 0x0025, 0x03b6, - 0x0001, 0x0025, 0x03bf, 0x0001, 0x0025, 0x03d2, 0x0001, 0x0025, - // Entry 19EC0 - 19EFF - 0x03b6, 0x0002, 0x0082, 0x0089, 0x0003, 0x0000, 0x0000, 0x0086, - 0x0001, 0x0001, 0x075a, 0x0003, 0x0000, 0x0000, 0x008d, 0x0001, - 0x0001, 0x075a, 0x0003, 0x0097, 0x0000, 0x0094, 0x0001, 0x0005, - 0x0773, 0x0001, 0x0007, 0x0277, 0x0003, 0x0000, 0x0000, 0x009e, - 0x0001, 0x0026, 0x0b5c, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, - 0x0017, 0x0036, 0x0003, 0x001b, 0x0024, 0x002d, 0x0002, 0x001e, - // Entry 19F00 - 19F3F - 0x0021, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03ac, 0x0002, - 0x0027, 0x002a, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03ac, - 0x0002, 0x0030, 0x0033, 0x0001, 0x0025, 0x03e2, 0x0001, 0x0025, - 0x03ac, 0x0003, 0x003a, 0x0043, 0x004c, 0x0002, 0x003d, 0x0040, - 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03ac, 0x0002, 0x0046, - 0x0049, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03ac, 0x0002, - 0x004f, 0x0052, 0x0001, 0x0025, 0x03e2, 0x0001, 0x0025, 0x03ac, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 19F40 - 19F7F - 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, - 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - // Entry 19F80 - 19FBF - 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0009, 0x0001, 0x000b, 0x0003, 0x0000, 0x0000, 0x000f, 0x0034, - 0x0026, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 19FC0 - 19FFF - 0xffff, 0xffff, 0xffff, 0xffff, 0x0b6e, 0x0002, 0x0003, 0x0032, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0004, 0x0000, 0x0000, 0x0000, 0x0011, 0x0001, 0x0013, - 0x0003, 0x0000, 0x0000, 0x0017, 0x0008, 0x0000, 0x0000, 0x0020, - 0x0026, 0x0029, 0x002c, 0x002f, 0x0023, 0x0001, 0x0025, 0x039a, - 0x0001, 0x0025, 0x03a1, 0x0001, 0x0025, 0x03b6, 0x0001, 0x0025, - 0x03bf, 0x0001, 0x0025, 0x03d2, 0x0001, 0x0026, 0x0b72, 0x003f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1A000 - 1A03F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0072, 0x0077, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x007c, 0x0000, 0x0000, 0x0084, 0x0000, 0x0000, 0x008c, 0x0000, - 0x0000, 0x0094, 0x0000, 0x0000, 0x009c, 0x0000, 0x0000, 0x00a4, - 0x0000, 0x0000, 0x00ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x00b4, - 0x00b9, 0x0000, 0x00be, 0x00c3, 0x0000, 0x0000, 0x00c8, 0x0001, - 0x0074, 0x0001, 0x0026, 0x0b7d, 0x0001, 0x0079, 0x0001, 0x0026, - // Entry 1A040 - 1A07F - 0x0b7d, 0x0002, 0x0000, 0x007f, 0x0003, 0x0026, 0x0b81, 0x0b8d, - 0x0b94, 0x0002, 0x0000, 0x0087, 0x0003, 0x0026, 0x0ba1, 0x0bad, - 0x0bb4, 0x0002, 0x0000, 0x008f, 0x0003, 0x0026, 0x0bc1, 0x0bcd, - 0x0bd4, 0x0002, 0x0000, 0x0097, 0x0003, 0x0026, 0x0be1, 0x0bed, - 0x0bf4, 0x0002, 0x0000, 0x009f, 0x0003, 0x0026, 0x0c01, 0x0c0d, - 0x0c14, 0x0002, 0x0000, 0x00a7, 0x0003, 0x0026, 0x0c21, 0x0c2d, - 0x0c34, 0x0002, 0x0000, 0x00af, 0x0003, 0x0026, 0x0c41, 0x0c4d, - 0x0c54, 0x0001, 0x00b6, 0x0001, 0x001c, 0x0091, 0x0001, 0x00bb, - // Entry 1A080 - 1A0BF - 0x0001, 0x001c, 0x0091, 0x0001, 0x00c0, 0x0001, 0x0001, 0x075a, - 0x0001, 0x00c5, 0x0001, 0x0001, 0x075a, 0x0001, 0x00ca, 0x0001, - 0x001b, 0x0a96, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0010, 0x0000, - 0x0000, 0x0035, 0x0002, 0x0013, 0x0024, 0x0001, 0x0015, 0x000d, - 0x0015, 0xffff, 0x000b, 0x239c, 0x23a2, 0x23a7, 0x23ac, 0x23b0, - 0x23b5, 0x23bb, 0x23c1, 0x23c7, 0x23cc, 0x23d1, 0x0001, 0x0026, - 0x000d, 0x0015, 0xffff, 0x000b, 0x239c, 0x23a2, 0x23a7, 0x23ac, - // Entry 1A0C0 - 1A0FF - 0x23b0, 0x23b5, 0x23bb, 0x23c1, 0x23c7, 0x23cc, 0x23d1, 0x0001, - 0x0037, 0x0003, 0x0000, 0x0000, 0x003b, 0x0002, 0x003e, 0x0041, - 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x0002, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0008, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, - 0x0000, 0x002d, 0x0002, 0x0017, 0x0022, 0x0003, 0x0000, 0x0000, - 0x001b, 0x0005, 0x0026, 0xffff, 0x0c61, 0x0c72, 0x0c85, 0x0c98, - 0x0003, 0x0000, 0x0000, 0x0026, 0x0005, 0x0005, 0xffff, 0x12b0, - // Entry 1A100 - 1A13F - 0x218a, 0x219a, 0x21aa, 0x0004, 0x0035, 0x0000, 0x0000, 0x0032, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0002, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, - 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, - 0x0002, 0x0478, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0000, 0x0000, - // Entry 1A140 - 1A17F - 0x0000, 0x0010, 0x0002, 0x0013, 0x0030, 0x0001, 0x0015, 0x0008, - 0x0000, 0x0000, 0x001e, 0x0024, 0x0027, 0x002a, 0x002d, 0x0021, - 0x0001, 0x0001, 0x075a, 0x0001, 0x0025, 0x03a1, 0x0001, 0x0010, - 0x029b, 0x0001, 0x0025, 0x03a6, 0x0001, 0x0025, 0x03ac, 0x0001, - 0x0025, 0x03b1, 0x0002, 0x0033, 0x003a, 0x0003, 0x0000, 0x0000, - 0x0037, 0x0001, 0x0001, 0x075a, 0x0003, 0x0000, 0x0000, 0x003e, - 0x0001, 0x0001, 0x075a, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0004, 0x0000, - // Entry 1A180 - 1A1BF - 0x0000, 0x0000, 0x0010, 0x0002, 0x0013, 0x004c, 0x0002, 0x0016, - 0x0031, 0x0008, 0x0000, 0x0000, 0x001f, 0x0025, 0x0028, 0x002b, - 0x002e, 0x0022, 0x0001, 0x0001, 0x075a, 0x0001, 0x0025, 0x03a1, - 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, 0x03a6, 0x0001, 0x0025, - 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0008, 0x0000, 0x0000, 0x003a, - 0x0040, 0x0043, 0x0046, 0x0049, 0x003d, 0x0001, 0x0001, 0x075a, - 0x0001, 0x0025, 0x03a1, 0x0001, 0x0010, 0x029b, 0x0001, 0x0025, - 0x03a6, 0x0001, 0x0025, 0x03ac, 0x0001, 0x0025, 0x03b1, 0x0002, - // Entry 1A1C0 - 1A1FF - 0x004f, 0x0056, 0x0003, 0x0000, 0x0000, 0x0053, 0x0001, 0x0001, - 0x075a, 0x0003, 0x0000, 0x0000, 0x005a, 0x0001, 0x0001, 0x075a, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, - // Entry 1A200 - 1A23F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, - 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0001, 0x0002, 0x0008, 0x0000, - // Entry 1A240 - 1A27F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, - 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - 0x0003, 0x0004, 0x0146, 0x0220, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, - 0x001e, 0x001b, 0x0021, 0x0001, 0x0026, 0x0cab, 0x0001, 0x0026, - // Entry 1A280 - 1A2BF - 0x0cc6, 0x0001, 0x0010, 0x02f4, 0x0001, 0x001c, 0x14e1, 0x0008, - 0x0030, 0x0095, 0x00d6, 0x0104, 0x011c, 0x0124, 0x0135, 0x0000, - 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, 0x0046, 0x0055, 0x000d, - 0x0026, 0xffff, 0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, 0x0cf0, - 0x0cf4, 0x0cf8, 0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x000d, 0x0000, - 0xffff, 0x22db, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, 0x228e, - 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0026, 0xffff, - 0x0d0c, 0x0d13, 0x0d1b, 0x0d21, 0x0cec, 0x0d28, 0x0cf4, 0x0d2d, - // Entry 1A2C0 - 1A2FF - 0x0d33, 0x0d3c, 0x0d43, 0x0d4c, 0x0003, 0x0068, 0x0077, 0x0086, - 0x000d, 0x0026, 0xffff, 0x0cdc, 0x0ce0, 0x0ce4, 0x0ce8, 0x0cec, - 0x0cf0, 0x0cf4, 0x0cf8, 0x0cfc, 0x0d00, 0x0d04, 0x0d08, 0x000d, - 0x0000, 0xffff, 0x22db, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, - 0x228e, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0026, - 0xffff, 0x0d0c, 0x0d13, 0x0d1b, 0x0d21, 0x0cec, 0x0d28, 0x0cf4, - 0x0d2d, 0x0d33, 0x0d3c, 0x0d43, 0x0d4c, 0x0002, 0x0098, 0x00b7, - 0x0003, 0x009c, 0x00a5, 0x00ae, 0x0007, 0x0005, 0x123c, 0x21ba, - // Entry 1A300 - 1A33F - 0x21be, 0x21c2, 0x21c6, 0x21ca, 0x21ce, 0x0007, 0x0000, 0x22f0, - 0x228e, 0x247f, 0x247f, 0x2483, 0x2485, 0x2481, 0x0007, 0x0026, - 0x0d55, 0x0d5d, 0x0d63, 0x0d6b, 0x0d73, 0x0d79, 0x0d80, 0x0003, - 0x00bb, 0x00c4, 0x00cd, 0x0007, 0x0005, 0x123c, 0x21ba, 0x21be, - 0x21c2, 0x21c6, 0x21ca, 0x21ce, 0x0007, 0x0000, 0x22f0, 0x228e, - 0x247f, 0x247f, 0x2483, 0x2485, 0x2481, 0x0007, 0x0026, 0x0d55, - 0x0d5d, 0x0d63, 0x0d6b, 0x0d73, 0x0d79, 0x0d80, 0x0002, 0x00d9, - 0x00f2, 0x0003, 0x00dd, 0x00e4, 0x00eb, 0x0005, 0x001c, 0xffff, - // Entry 1A340 - 1A37F - 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0026, 0xffff, 0x0d87, 0x0d96, - 0x0da7, 0x0db8, 0x0003, 0x00f6, 0x0000, 0x00fd, 0x0005, 0x001c, - 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0026, 0xffff, - 0x0d87, 0x0d96, 0x0da7, 0x0db8, 0x0001, 0x0106, 0x0003, 0x010a, - 0x0000, 0x0113, 0x0002, 0x010d, 0x0110, 0x0001, 0x0026, 0x0dc8, - 0x0001, 0x0026, 0x0dcb, 0x0002, 0x0116, 0x0119, 0x0001, 0x0026, - 0x0dc8, 0x0001, 0x0026, 0x0dcb, 0x0001, 0x011e, 0x0001, 0x0120, - // Entry 1A380 - 1A3BF - 0x0002, 0x0026, 0x0dce, 0x0dd2, 0x0004, 0x0132, 0x012c, 0x0129, - 0x012f, 0x0001, 0x0026, 0x0dd6, 0x0001, 0x0026, 0x0def, 0x0001, - 0x0002, 0x0860, 0x0001, 0x0014, 0x146e, 0x0004, 0x0143, 0x013d, - 0x013a, 0x0140, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0187, - 0x0000, 0x0000, 0x018c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x019e, 0x0000, 0x0000, 0x01b0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x01c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01db, - // Entry 1A3C0 - 1A3FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01e0, 0x0000, 0x01e5, 0x0000, 0x0000, - 0x01f7, 0x0000, 0x0000, 0x0209, 0x0000, 0x0000, 0x021b, 0x0001, - 0x0189, 0x0001, 0x0026, 0x0e03, 0x0003, 0x0190, 0x0000, 0x0193, - 0x0001, 0x0025, 0x075b, 0x0002, 0x0196, 0x019a, 0x0002, 0x0026, - 0x0e14, 0x0e07, 0x0002, 0x0026, 0x0e32, 0x0e23, 0x0003, 0x01a2, - // Entry 1A400 - 1A43F - 0x0000, 0x01a5, 0x0001, 0x0026, 0x0e43, 0x0002, 0x01a8, 0x01ac, - 0x0002, 0x0026, 0x0e48, 0x0e48, 0x0002, 0x0026, 0x0e57, 0x0e57, - 0x0003, 0x01b4, 0x0000, 0x01b7, 0x0001, 0x0026, 0x0e68, 0x0002, - 0x01ba, 0x01be, 0x0002, 0x0026, 0x0e84, 0x0e71, 0x0002, 0x0026, - 0x0ead, 0x0e98, 0x0003, 0x01c6, 0x01c9, 0x01d0, 0x0001, 0x0026, - 0x0ec3, 0x0005, 0x0026, 0x0ed5, 0x0ed9, 0x0ede, 0x0ec7, 0x0ee4, - 0x0002, 0x01d3, 0x01d7, 0x0002, 0x0026, 0x0f03, 0x0ef1, 0x0002, - 0x0026, 0x0f2a, 0x0f16, 0x0001, 0x01dd, 0x0001, 0x0026, 0x0f3f, - // Entry 1A440 - 1A47F - 0x0001, 0x01e2, 0x0001, 0x0026, 0x0f4f, 0x0003, 0x01e9, 0x0000, - 0x01ec, 0x0001, 0x0026, 0x0f5b, 0x0002, 0x01ef, 0x01f3, 0x0002, - 0x0026, 0x0f6d, 0x0f5f, 0x0002, 0x0026, 0x0f8c, 0x0f7c, 0x0003, - 0x01fb, 0x0000, 0x01fe, 0x0001, 0x0026, 0x0f9d, 0x0002, 0x0201, - 0x0205, 0x0002, 0x0026, 0x0fb5, 0x0fa4, 0x0002, 0x0026, 0x0fda, - 0x0fc7, 0x0003, 0x020d, 0x0000, 0x0210, 0x0001, 0x0026, 0x0fee, - 0x0002, 0x0213, 0x0217, 0x0002, 0x0026, 0x1006, 0x0ff5, 0x0002, - 0x0026, 0x102b, 0x1018, 0x0001, 0x021d, 0x0001, 0x001b, 0x0abe, - // Entry 1A480 - 1A4BF - 0x0004, 0x0225, 0x0000, 0x0000, 0x0229, 0x0002, 0x0000, 0x1dc7, - 0x238b, 0x0002, 0x0356, 0x022c, 0x0003, 0x0230, 0x02f4, 0x0292, - 0x0060, 0x0026, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x103f, - // Entry 1A4C0 - 1A4FF - 0x1094, 0xffff, 0x10ec, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1147, 0x0060, 0x0026, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1A500 - 1A53F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1056, 0x10ac, 0xffff, 0x1105, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1A540 - 1A57F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1155, 0x0060, 0x0026, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1A580 - 1A5BF - 0xffff, 0xffff, 0xffff, 0x1076, 0x10cd, 0xffff, 0x1127, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x116c, 0x0003, 0x035a, - 0x03c9, 0x038d, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1A5C0 - 1A5FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1A600 - 1A63F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x278c, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1A640 - 1A67F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x06a6, 0x0810, - 0x0012, 0x0017, 0x0038, 0x010a, 0x0177, 0x022a, 0x0000, 0x0297, - 0x02f2, 0x0485, 0x04ef, 0x0561, 0x0000, 0x0000, 0x0000, 0x0000, - 0x05e7, 0x0612, 0x0684, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, - // Entry 1A680 - 1A6BF - 0x0001, 0x0000, 0x0000, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0026, 0x1181, 0x000a, 0x0043, 0x0000, 0x0000, - 0x0000, 0x0000, 0x00f9, 0x0000, 0x0000, 0x0000, 0x006a, 0x0002, - 0x0046, 0x0058, 0x0002, 0x0000, 0x0049, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x2220, 0x2398, 0x0002, 0x0000, 0x005b, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - // Entry 1A6C0 - 1A6FF - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0006, 0x0071, - 0x0000, 0x0000, 0x0084, 0x00a3, 0x00e6, 0x0001, 0x0073, 0x0001, - 0x0075, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, - 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, - 0x0001, 0x0086, 0x0003, 0x0000, 0x0000, 0x008a, 0x0017, 0x0026, - 0xffff, 0x1190, 0x11a6, 0x11b1, 0x11c6, 0x11d2, 0xffff, 0x11e3, - 0xffff, 0xffff, 0x11f9, 0x1204, 0x120a, 0x120f, 0x1224, 0x1238, - 0x1243, 0x124e, 0x125b, 0x1269, 0x127e, 0x128a, 0x1296, 0x0001, - // Entry 1A700 - 1A73F - 0x00a5, 0x0001, 0x00a7, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, - 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, - 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, - 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, - 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, - 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, - 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, - 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, - // Entry 1A740 - 1A77F - 0x0389, 0x0390, 0x0001, 0x00e8, 0x0001, 0x00ea, 0x000d, 0x0026, - 0xffff, 0x12a1, 0x12a6, 0x12ab, 0x12b1, 0x12b6, 0x12bc, 0x12c2, - 0x12c9, 0x12ce, 0x12d2, 0x12d9, 0x12de, 0x0004, 0x0107, 0x0101, - 0x00fe, 0x0104, 0x0001, 0x0025, 0x00da, 0x0001, 0x0010, 0x0026, - 0x0001, 0x0010, 0x002f, 0x0001, 0x001e, 0x0206, 0x0001, 0x010c, - 0x0002, 0x010f, 0x0143, 0x0003, 0x0113, 0x0123, 0x0133, 0x000e, - 0x0026, 0xffff, 0x12e5, 0x12e9, 0x12ef, 0x12f5, 0x12fc, 0x1302, - 0x1309, 0x1312, 0x131d, 0x1325, 0x132f, 0x1334, 0x133a, 0x000e, - // Entry 1A780 - 1A7BF - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, - 0x0026, 0xffff, 0x12e5, 0x12e9, 0x12ef, 0x12f5, 0x12fc, 0x1302, - 0x1309, 0x1312, 0x131d, 0x1325, 0x132f, 0x1334, 0x133a, 0x0003, - 0x0147, 0x0157, 0x0167, 0x000e, 0x0026, 0xffff, 0x12e5, 0x12e9, - 0x12ef, 0x12f5, 0x12fc, 0x1302, 0x1309, 0x1312, 0x131d, 0x1325, - 0x132f, 0x1334, 0x133a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - // Entry 1A7C0 - 1A7FF - 0x2220, 0x2398, 0x0422, 0x000e, 0x0026, 0xffff, 0x12e5, 0x12e9, - 0x12ef, 0x12f5, 0x12fc, 0x1302, 0x1309, 0x1312, 0x131d, 0x1325, - 0x132f, 0x1334, 0x133a, 0x000a, 0x0182, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0219, 0x0000, 0x0000, 0x0000, 0x01a9, 0x0002, 0x0185, - 0x0197, 0x0002, 0x0000, 0x0188, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x0002, 0x0000, 0x019a, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - // Entry 1A800 - 1A83F - 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0006, 0x01b0, 0x0000, - 0x0000, 0x0000, 0x01c3, 0x0206, 0x0001, 0x01b2, 0x0001, 0x01b4, - 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, - 0x006f, 0x0072, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, - 0x01c5, 0x0001, 0x01c7, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, - 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, - 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, - 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, - // Entry 1A840 - 1A87F - 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, - 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, - 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, - 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, - 0x0389, 0x0390, 0x0001, 0x0208, 0x0001, 0x020a, 0x000d, 0x0026, - 0xffff, 0x12a1, 0x12a6, 0x12ab, 0x12b1, 0x12b6, 0x12bc, 0x12c2, - 0x12c9, 0x12ce, 0x12d2, 0x12d9, 0x12de, 0x0004, 0x0227, 0x0221, - 0x021e, 0x0224, 0x0001, 0x0025, 0x00da, 0x0001, 0x0010, 0x0026, - // Entry 1A880 - 1A8BF - 0x0001, 0x0010, 0x002f, 0x0001, 0x001e, 0x0206, 0x0001, 0x022c, - 0x0002, 0x022f, 0x0263, 0x0003, 0x0233, 0x0243, 0x0253, 0x000e, - 0x0026, 0xffff, 0x133f, 0x134b, 0x1352, 0x1358, 0x135f, 0x1366, - 0x136f, 0x1378, 0x1380, 0x1387, 0x138d, 0x1393, 0x139b, 0x000e, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, - 0x0026, 0xffff, 0x133f, 0x134b, 0x1352, 0x1358, 0x135f, 0x1366, - 0x136f, 0x1378, 0x1380, 0x1387, 0x138d, 0x1393, 0x139b, 0x0003, - // Entry 1A8C0 - 1A8FF - 0x0267, 0x0277, 0x0287, 0x000e, 0x0026, 0xffff, 0x133f, 0x134b, - 0x1352, 0x1358, 0x135f, 0x1366, 0x136f, 0x1378, 0x1380, 0x1387, - 0x138d, 0x1393, 0x139b, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x2220, 0x2398, 0x0422, 0x000e, 0x0026, 0xffff, 0x133f, 0x134b, - 0x1352, 0x1358, 0x135f, 0x1366, 0x136f, 0x1378, 0x1380, 0x1387, - 0x138d, 0x1393, 0x139b, 0x0008, 0x02a0, 0x0000, 0x0000, 0x0000, - 0x02c8, 0x02d0, 0x0000, 0x02e1, 0x0002, 0x02a3, 0x02b6, 0x0003, - // Entry 1A900 - 1A93F - 0x0000, 0x0000, 0x02a7, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, - 0x000b, 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, - 0x002b, 0x002f, 0x0002, 0x0000, 0x02b9, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x2220, 0x2398, 0x0001, 0x02ca, 0x0001, 0x02cc, - 0x0002, 0x0000, 0x0425, 0x042a, 0x0004, 0x02de, 0x02d8, 0x02d5, - 0x02db, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0004, 0x02ef, 0x02e9, - // Entry 1A940 - 1A97F - 0x02e6, 0x02ec, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x02fb, - 0x0360, 0x03b7, 0x03ec, 0x042d, 0x0452, 0x0463, 0x0474, 0x0002, - 0x02fe, 0x032f, 0x0003, 0x0302, 0x0311, 0x0320, 0x000d, 0x0005, - 0xffff, 0x0636, 0x20fa, 0x21d2, 0x2102, 0x21d6, 0x210a, 0x210e, - 0x2112, 0x2116, 0x21da, 0x21de, 0x21e2, 0x000d, 0x0000, 0xffff, - 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, 0x2483, 0x2382, - 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0026, 0xffff, 0x13a4, - // Entry 1A980 - 1A9BF - 0x13af, 0x13ba, 0x13c0, 0x13c6, 0x13cc, 0x13d1, 0x13d6, 0x13df, - 0x13e9, 0x13f1, 0x13fa, 0x0003, 0x0333, 0x0342, 0x0351, 0x000d, - 0x0005, 0xffff, 0x0636, 0x20fa, 0x21d2, 0x2102, 0x21d6, 0x210a, - 0x210e, 0x2112, 0x2116, 0x21da, 0x21de, 0x21e2, 0x000d, 0x0000, - 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, 0x2483, - 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0026, 0xffff, - 0x13a4, 0x13af, 0x13ba, 0x13c0, 0x13c6, 0x13cc, 0x13d1, 0x13d6, - 0x13df, 0x13e9, 0x13f1, 0x13fa, 0x0002, 0x0363, 0x038d, 0x0005, - // Entry 1A9C0 - 1A9FF - 0x0369, 0x0372, 0x0384, 0x0000, 0x037b, 0x0007, 0x0000, 0x006f, - 0x2487, 0x248a, 0x248d, 0x2490, 0x2493, 0x2496, 0x0007, 0x0000, - 0x2481, 0x247f, 0x04dd, 0x2159, 0x04dd, 0x22e6, 0x2481, 0x0007, - 0x0000, 0x006f, 0x2487, 0x248a, 0x248d, 0x2490, 0x2493, 0x2496, - 0x0007, 0x0026, 0x1403, 0x1409, 0x1411, 0x1419, 0x1422, 0x142d, - 0x1433, 0x0005, 0x0393, 0x039c, 0x03ae, 0x0000, 0x03a5, 0x0007, - 0x0000, 0x006f, 0x2487, 0x248a, 0x248d, 0x2490, 0x2493, 0x2496, - 0x0007, 0x0000, 0x2481, 0x247f, 0x04dd, 0x2159, 0x04dd, 0x22e6, - // Entry 1AA00 - 1AA3F - 0x2481, 0x0007, 0x0000, 0x006f, 0x2487, 0x248a, 0x248d, 0x2490, - 0x2493, 0x2496, 0x0007, 0x0026, 0x1403, 0x1409, 0x1411, 0x1419, - 0x1422, 0x142d, 0x1433, 0x0002, 0x03ba, 0x03d3, 0x0003, 0x03be, - 0x03c5, 0x03cc, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, - 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0026, 0xffff, 0x1439, 0x1447, 0x1455, 0x1463, 0x0003, - 0x03d7, 0x03de, 0x03e5, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, - 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - // Entry 1AA40 - 1AA7F - 0x2335, 0x0005, 0x0026, 0xffff, 0x1439, 0x1447, 0x1455, 0x1463, - 0x0002, 0x03ef, 0x040e, 0x0003, 0x03f3, 0x03fc, 0x0405, 0x0002, - 0x03f6, 0x03f9, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - 0x0002, 0x03ff, 0x0402, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0002, 0x0408, 0x040b, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0003, 0x0412, 0x041b, 0x0424, 0x0002, 0x0415, - 0x0418, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, - 0x041e, 0x0421, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - // Entry 1AA80 - 1AABF - 0x0002, 0x0427, 0x042a, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0003, 0x043c, 0x0447, 0x0431, 0x0002, 0x0434, 0x0438, - 0x0002, 0x0026, 0x1471, 0x1497, 0x0002, 0x0026, 0x147e, 0x14a3, - 0x0002, 0x043f, 0x0443, 0x0002, 0x0015, 0x0194, 0x23d7, 0x0002, - 0x0026, 0x14b7, 0x14be, 0x0002, 0x044a, 0x044e, 0x0002, 0x0026, - 0x14c3, 0x14cc, 0x0002, 0x0026, 0x14c8, 0x14d1, 0x0004, 0x0460, - 0x045a, 0x0457, 0x045d, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, - 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x001e, 0x0206, 0x0004, - // Entry 1AAC0 - 1AAFF - 0x0471, 0x046b, 0x0468, 0x046e, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x0482, 0x047c, 0x0479, 0x047f, 0x0001, 0x0026, 0x14d4, - 0x0001, 0x0026, 0x14d4, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0006, 0x048c, 0x0000, 0x0000, 0x0000, 0x04d7, 0x04de, - 0x0002, 0x048f, 0x04b3, 0x0003, 0x0493, 0x0000, 0x04a3, 0x000e, - 0x0026, 0x1512, 0x14e1, 0x14e9, 0x14f2, 0x14f9, 0x14ff, 0x1506, - 0x150d, 0x1519, 0x151f, 0x1524, 0x152a, 0x1532, 0x1535, 0x000e, - // Entry 1AB00 - 1AB3F - 0x0026, 0x1512, 0x14e1, 0x14e9, 0x14f2, 0x14f9, 0x14ff, 0x1506, - 0x150d, 0x1519, 0x151f, 0x1524, 0x152a, 0x1532, 0x1535, 0x0003, - 0x04b7, 0x0000, 0x04c7, 0x000e, 0x0026, 0x1512, 0x14e1, 0x14e9, - 0x14f2, 0x14f9, 0x14ff, 0x1506, 0x150d, 0x1519, 0x151f, 0x1524, - 0x152a, 0x1532, 0x1535, 0x000e, 0x0026, 0x1512, 0x14e1, 0x14e9, - 0x14f2, 0x14f9, 0x14ff, 0x1506, 0x150d, 0x1519, 0x151f, 0x1524, - 0x152a, 0x1532, 0x1535, 0x0001, 0x04d9, 0x0001, 0x04db, 0x0001, - 0x0000, 0x04ef, 0x0004, 0x04ec, 0x04e6, 0x04e3, 0x04e9, 0x0001, - // Entry 1AB40 - 1AB7F - 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0026, 0x1181, 0x0005, 0x04f5, 0x0000, 0x0000, 0x0000, - 0x055a, 0x0002, 0x04f8, 0x0529, 0x0003, 0x04fc, 0x050b, 0x051a, - 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, 0x24b6, - 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, - 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, 0x24b6, 0x24c0, 0x24cc, - // Entry 1AB80 - 1ABBF - 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, 0x0003, 0x052d, 0x053c, - 0x054b, 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, - 0x24b6, 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, 0x24b6, 0x24c0, - 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, 0x0001, 0x055c, - 0x0001, 0x055e, 0x0001, 0x0025, 0x05c0, 0x0008, 0x056a, 0x0000, - // Entry 1ABC0 - 1ABFF - 0x0000, 0x0000, 0x05cf, 0x05d6, 0x0000, 0x9006, 0x0002, 0x056d, - 0x059e, 0x0003, 0x0571, 0x0580, 0x058f, 0x000d, 0x0026, 0xffff, - 0x153c, 0x1542, 0x1547, 0x154e, 0x1556, 0x155e, 0x1567, 0x156c, - 0x1571, 0x1576, 0x157c, 0x1586, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x000d, 0x0026, 0xffff, 0x1590, 0x159a, - 0x15a0, 0x15b0, 0x15c1, 0x15d1, 0x15e2, 0x15e8, 0x15f2, 0x15fa, - 0x1601, 0x1610, 0x0003, 0x05a2, 0x05b1, 0x05c0, 0x000d, 0x0026, - // Entry 1AC00 - 1AC3F - 0xffff, 0x153c, 0x1542, 0x1547, 0x154e, 0x1556, 0x155e, 0x1567, - 0x156c, 0x1571, 0x1576, 0x157c, 0x1586, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0026, 0xffff, 0x1590, - 0x159a, 0x15a0, 0x15b0, 0x15c1, 0x15d1, 0x15e2, 0x15e8, 0x15f2, - 0x15fa, 0x1601, 0x1610, 0x0001, 0x05d1, 0x0001, 0x05d3, 0x0001, - 0x0026, 0x161d, 0x0004, 0x05e4, 0x05de, 0x05db, 0x05e1, 0x0001, - 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - // Entry 1AC40 - 1AC7F - 0x0001, 0x0026, 0x1181, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x05f0, 0x0000, 0x0601, 0x0004, 0x05fe, 0x05f8, 0x05f5, - 0x05fb, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0004, 0x060f, 0x0609, - 0x0606, 0x060c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0618, - 0x0000, 0x0000, 0x0000, 0x067d, 0x0002, 0x061b, 0x064c, 0x0003, - 0x061f, 0x062e, 0x063d, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, - // Entry 1AC80 - 1ACBF - 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, - 0x1a0f, 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, - 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, - 0x0003, 0x0650, 0x065f, 0x066e, 0x000d, 0x0000, 0xffff, 0x19c9, - 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, - 0x1a0b, 0x1a0f, 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - // Entry 1ACC0 - 1ACFF - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, - 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, - 0x1a16, 0x0001, 0x067f, 0x0001, 0x0681, 0x0001, 0x0000, 0x1a1d, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x068d, 0x0695, 0x0000, - 0x9006, 0x0001, 0x068f, 0x0001, 0x0691, 0x0002, 0x0000, 0x1a20, - 0x2290, 0x0004, 0x06a3, 0x069d, 0x069a, 0x06a0, 0x0001, 0x0001, - 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - // Entry 1AD00 - 1AD3F - 0x0026, 0x1181, 0x0040, 0x06e7, 0x0000, 0x0000, 0x06ec, 0x0000, - 0x0000, 0x0703, 0x071a, 0x0731, 0x0748, 0x0000, 0x0000, 0x075f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0776, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x078f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0794, 0x0000, 0x0000, 0x079c, 0x0000, 0x0000, 0x07a4, - 0x0000, 0x0000, 0x07ac, 0x0000, 0x0000, 0x07b4, 0x0000, 0x0000, - 0x07bc, 0x0000, 0x0000, 0x07c4, 0x0000, 0x0000, 0x0000, 0x07cc, - 0x0000, 0x07d1, 0x0000, 0x0000, 0x07e3, 0x0000, 0x0000, 0x07f5, - // Entry 1AD40 - 1AD7F - 0x0000, 0x0000, 0x080b, 0x0001, 0x06e9, 0x0001, 0x0026, 0x162c, - 0x0003, 0x06f0, 0x06f3, 0x06f8, 0x0001, 0x0026, 0x1635, 0x0003, - 0x0026, 0x163a, 0x1647, 0x1650, 0x0002, 0x06fb, 0x06ff, 0x0002, - 0x0026, 0x165e, 0x165e, 0x0002, 0x0026, 0x166b, 0x166b, 0x0003, - 0x0707, 0x070a, 0x070f, 0x0001, 0x0026, 0x1678, 0x0003, 0x0026, - 0x1683, 0x1696, 0x16a5, 0x0002, 0x0712, 0x0716, 0x0002, 0x0026, - 0x16b9, 0x16b9, 0x0002, 0x0026, 0x16cc, 0x16cc, 0x0003, 0x071e, - 0x0721, 0x0726, 0x0001, 0x0026, 0x16df, 0x0003, 0x0026, 0x1683, - // Entry 1AD80 - 1ADBF - 0x1696, 0x16a5, 0x0002, 0x0729, 0x072d, 0x0002, 0x0026, 0x16b9, - 0x16b9, 0x0002, 0x0026, 0x16cc, 0x16cc, 0x0003, 0x0735, 0x0738, - 0x073d, 0x0001, 0x0026, 0x16df, 0x0003, 0x0026, 0x1683, 0x1696, - 0x16a5, 0x0002, 0x0740, 0x0744, 0x0002, 0x0026, 0x16b9, 0x16b9, - 0x0002, 0x0026, 0x16cc, 0x16cc, 0x0003, 0x074c, 0x074f, 0x0754, - 0x0001, 0x0026, 0x16ea, 0x0003, 0x0026, 0x16f1, 0x1700, 0x170d, - 0x0002, 0x0757, 0x075b, 0x0002, 0x0026, 0x172d, 0x171e, 0x0002, - 0x0026, 0x174c, 0x173d, 0x0003, 0x0763, 0x0766, 0x076b, 0x0001, - // Entry 1ADC0 - 1ADFF - 0x0026, 0x175c, 0x0003, 0x0026, 0x1761, 0x176e, 0x1779, 0x0002, - 0x076e, 0x0772, 0x0002, 0x0026, 0x1795, 0x1788, 0x0002, 0x0026, - 0x17b0, 0x17a3, 0x0003, 0x077a, 0x077d, 0x0784, 0x0001, 0x0026, - 0x17be, 0x0005, 0x0026, 0x17ce, 0x17d7, 0x17df, 0x17c2, 0x17e6, - 0x0002, 0x0787, 0x078b, 0x0002, 0x0026, 0x17fc, 0x17f0, 0x0002, - 0x0026, 0x1816, 0x180a, 0x0001, 0x0791, 0x0001, 0x0026, 0x1824, - 0x0002, 0x0000, 0x0797, 0x0003, 0x0026, 0x1834, 0x1843, 0x184f, - 0x0002, 0x0000, 0x079f, 0x0003, 0x0026, 0x1864, 0x1875, 0x1883, - // Entry 1AE00 - 1AE3F - 0x0002, 0x0000, 0x07a7, 0x0003, 0x0026, 0x189a, 0x18ab, 0x18b9, - 0x0002, 0x0000, 0x07af, 0x0003, 0x0026, 0x18d0, 0x18e2, 0x18f1, - 0x0002, 0x0000, 0x07b7, 0x0003, 0x0026, 0x1909, 0x191d, 0x192e, - 0x0002, 0x0000, 0x07bf, 0x0003, 0x0026, 0x1948, 0x1957, 0x1963, - 0x0002, 0x0000, 0x07c7, 0x0003, 0x0026, 0x1978, 0x1987, 0x1993, - 0x0001, 0x07ce, 0x0001, 0x0007, 0x07cc, 0x0003, 0x07d5, 0x0000, - 0x07d8, 0x0001, 0x0026, 0x19a8, 0x0002, 0x07db, 0x07df, 0x0002, - 0x0026, 0x19ad, 0x19ad, 0x0002, 0x0026, 0x19ba, 0x19ba, 0x0003, - // Entry 1AE40 - 1AE7F - 0x07e7, 0x0000, 0x07ea, 0x0001, 0x0026, 0x19c7, 0x0002, 0x07ed, - 0x07f1, 0x0002, 0x0026, 0x19dd, 0x19ce, 0x0002, 0x0026, 0x19fc, - 0x19ed, 0x0003, 0x07f9, 0x07fc, 0x0800, 0x0001, 0x0026, 0x1a0c, - 0x0002, 0x0015, 0xffff, 0x0adf, 0x0002, 0x0803, 0x0807, 0x0002, - 0x0026, 0x1a24, 0x1a14, 0x0002, 0x0026, 0x1a45, 0x1a35, 0x0001, - 0x080d, 0x0001, 0x0000, 0x1dc2, 0x0004, 0x0815, 0x081a, 0x081f, - 0x082a, 0x0003, 0x0000, 0x1dc7, 0x238b, 0x24f5, 0x0003, 0x0026, - 0x1a56, 0x1a5f, 0x1a6d, 0x0002, 0x0000, 0x0822, 0x0002, 0x0000, - // Entry 1AE80 - 1AEBF - 0x0825, 0x0003, 0x0026, 0xffff, 0x1a7f, 0x1a91, 0x0002, 0x0a11, - 0x082d, 0x0003, 0x0831, 0x0971, 0x08d1, 0x009e, 0x0026, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1b24, 0x1b74, 0x1bde, 0x1c13, 0x1c48, - 0x1c7d, 0x1cb5, 0x1cea, 0xffff, 0x1d80, 0x1db8, 0x1df9, 0x1e49, - 0x1e81, 0x1eb9, 0x1f0f, 0x1f86, 0x1fd6, 0x2026, 0x2076, 0x20a8, - 0xffff, 0xffff, 0x2105, 0xffff, 0x215a, 0xffff, 0x21ac, 0x21e1, - 0x221c, 0x2254, 0xffff, 0xffff, 0x22bd, 0x2304, 0x234e, 0xffff, - 0xffff, 0xffff, 0x23bf, 0xffff, 0x241f, 0x2472, 0xffff, 0x24bf, - // Entry 1AEC0 - 1AEFF - 0x250c, 0x255f, 0xffff, 0xffff, 0xffff, 0xffff, 0x25fe, 0xffff, - 0xffff, 0x2663, 0x26b6, 0xffff, 0xffff, 0x273f, 0x2792, 0x27d0, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2876, 0x28ae, - 0x28e6, 0x2927, 0x295f, 0xffff, 0xffff, 0x29f0, 0xffff, 0x2a3c, - 0xffff, 0xffff, 0x2aac, 0xffff, 0x2b53, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2bd7, 0xffff, 0xffff, 0xffff, 0x2c2a, 0x2c6b, 0xffff, - 0xffff, 0xffff, 0x2ccc, 0x2d19, 0x2d63, 0xffff, 0xffff, 0x2dd2, - 0x2e45, 0x2e86, 0x2eb2, 0xffff, 0xffff, 0x2f1d, 0x2f67, 0x2fa5, - // Entry 1AF00 - 1AF3F - 0xffff, 0x2ff9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x30de, - 0x3116, 0x3148, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3207, 0xffff, 0xffff, 0x3260, 0xffff, 0x32ab, 0xffff, - 0x32fb, 0x3342, 0x337d, 0xffff, 0x33d7, 0x3418, 0xffff, 0xffff, - 0xffff, 0x348b, 0x34c3, 0xffff, 0xffff, 0x1aa2, 0x1ba6, 0x1d1c, - 0x1d4b, 0xffff, 0xffff, 0x2b05, 0x3086, 0x009e, 0x0026, 0x1ace, - 0x1ade, 0x1af8, 0x1b0e, 0x1b3a, 0x1b80, 0x1beb, 0x1c20, 0x1c55, - 0x1c8b, 0x1cc2, 0x1cf6, 0xffff, 0x1d8e, 0x1dc9, 0x1e0f, 0x1e57, - // Entry 1AF40 - 1AF7F - 0x1e8f, 0x1ed1, 0x1f32, 0x1f9c, 0x1fec, 0x203c, 0x2082, 0x20b7, - 0x20e3, 0x20f3, 0x2118, 0x214c, 0x216c, 0x219e, 0x21b9, 0x21f0, - 0x222a, 0x2265, 0x2295, 0x22a9, 0x22d0, 0x2316, 0x235d, 0x2389, - 0x2394, 0x23ac, 0x23d4, 0x240c, 0x2436, 0x2487, 0xffff, 0x24d4, - 0x2523, 0x256c, 0x2594, 0x25aa, 0x25d0, 0x25e8, 0x260d, 0x2639, - 0x264f, 0x267a, 0x26cd, 0x271e, 0x2730, 0x2756, 0x27a2, 0x27da, - 0x27fc, 0x280b, 0x281f, 0x2830, 0x284a, 0x2860, 0x2884, 0x28bc, - 0x28f7, 0x2935, 0x297e, 0x29ca, 0x29dd, 0x2a00, 0x2a2e, 0x2a4d, - // Entry 1AF80 - 1AFBF - 0x2a7d, 0x2a98, 0x2ac5, 0x2b3a, 0x2b60, 0x2b88, 0x2b98, 0x2ba8, - 0x2bc0, 0x2bea, 0x2c1e, 0xffff, 0xffff, 0x2c3b, 0x2c77, 0x2c9d, - 0x2cad, 0x2cbe, 0x2ce1, 0x2d2d, 0x2d78, 0x2db0, 0x2dbc, 0x2deb, - 0x2e56, 0x2e90, 0x2ec4, 0x2ef6, 0x2f03, 0x2f31, 0x2f77, 0x2fb5, - 0x2fe3, 0x3017, 0x3061, 0x3079, 0xffff, 0x30c1, 0x30d1, 0x30ec, - 0x3122, 0x3158, 0x3186, 0x3195, 0x31ae, 0x31c5, 0x31d9, 0x31ea, - 0x31f5, 0x3213, 0x3239, 0x3249, 0x3270, 0x329e, 0x32bb, 0x32e9, - 0x330e, 0x3351, 0x3390, 0x33c4, 0x33e8, 0x3427, 0x3453, 0x345f, - // Entry 1AFC0 - 1AFFF - 0x3473, 0x3499, 0x34d8, 0x2709, 0x2e2b, 0x1aac, 0x1bb4, 0x1d27, - 0x1d58, 0xffff, 0x2a8d, 0x2b12, 0x3095, 0x009e, 0x0026, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1b58, 0x1b94, 0x1c00, 0x1c35, 0x1c6a, - 0x1ca1, 0x1cd7, 0x1d0a, 0xffff, 0x1da4, 0x1de2, 0x1e2d, 0x1e6d, - 0x1ea5, 0x1ef1, 0x1f5d, 0x1fba, 0x200a, 0x205a, 0x2096, 0x20ce, - 0xffff, 0xffff, 0x2133, 0xffff, 0x2186, 0xffff, 0x21ce, 0x2207, - 0x2240, 0x227e, 0xffff, 0xffff, 0x22eb, 0x2330, 0x2374, 0xffff, - 0xffff, 0xffff, 0x23f1, 0xffff, 0x2455, 0x24a4, 0xffff, 0x24f1, - // Entry 1B000 - 1B03F - 0x2542, 0x2581, 0xffff, 0xffff, 0xffff, 0xffff, 0x2624, 0xffff, - 0xffff, 0x2699, 0x26ec, 0xffff, 0xffff, 0x2775, 0x27ba, 0x27ec, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x289a, 0x28d2, - 0x2910, 0x294b, 0x29a5, 0xffff, 0xffff, 0x2a18, 0xffff, 0x2a66, - 0xffff, 0xffff, 0x2ae6, 0xffff, 0x2b75, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2c05, 0xffff, 0xffff, 0xffff, 0x2c54, 0x2c8b, 0xffff, - 0xffff, 0xffff, 0x2cfe, 0x2d49, 0x2d95, 0xffff, 0xffff, 0x2e0c, - 0x2e6f, 0x2ea2, 0x2ede, 0xffff, 0xffff, 0x2f4d, 0x2f8f, 0x2fcd, - // Entry 1B040 - 1B07F - 0xffff, 0x303d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3102, - 0x3136, 0x3170, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3227, 0xffff, 0xffff, 0x3288, 0xffff, 0x32d3, 0xffff, - 0x3329, 0x3368, 0x33ab, 0xffff, 0x3401, 0x343e, 0xffff, 0xffff, - 0xffff, 0x34af, 0x34f5, 0xffff, 0xffff, 0x1abe, 0x1bca, 0x1d3a, - 0x1d6d, 0xffff, 0xffff, 0x2b27, 0x30ac, 0x0003, 0x0a15, 0x0a7b, - 0x0a48, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1B080 - 1B0BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1B0C0 - 1B0FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1B100 - 1B13F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, - 0xffff, 0x13e3, 0x0003, 0x0004, 0x0209, 0x079b, 0x0008, 0x000d, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x004b, 0x0076, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0029, 0x0000, 0x003a, - 0x0003, 0x001f, 0x0024, 0x001a, 0x0001, 0x001c, 0x0001, 0x0027, - 0x0000, 0x0001, 0x0021, 0x0001, 0x0027, 0x0000, 0x0001, 0x0026, - 0x0001, 0x0027, 0x0000, 0x0004, 0x0037, 0x0031, 0x002e, 0x0034, - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - // Entry 1B140 - 1B17F - 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0048, 0x0042, 0x003f, - 0x0045, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0054, 0x0000, 0x0065, 0x0004, 0x0062, - 0x005c, 0x0059, 0x005f, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, - 0x0073, 0x006d, 0x006a, 0x0070, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 1B180 - 1B1BF - 0x0008, 0x007f, 0x00e4, 0x013b, 0x0170, 0x01b1, 0x01d6, 0x01e7, - 0x01f8, 0x0002, 0x0082, 0x00b3, 0x0003, 0x0086, 0x0095, 0x00a4, - 0x000d, 0x0027, 0xffff, 0x0003, 0x0007, 0x000d, 0x0014, 0x0018, - 0x001d, 0x0023, 0x0029, 0x002e, 0x0035, 0x003c, 0x0041, 0x000d, - 0x0000, 0xffff, 0x214e, 0x22e6, 0x247f, 0x2382, 0x24f9, 0x247f, - 0x2055, 0x228e, 0x247f, 0x22f0, 0x2481, 0x22ee, 0x000d, 0x0027, - 0xffff, 0x0046, 0x004e, 0x000d, 0x0056, 0x005f, 0x0069, 0x0023, - 0x0073, 0x007b, 0x008a, 0x009c, 0x00a4, 0x0003, 0x00b7, 0x00c6, - // Entry 1B1C0 - 1B1FF - 0x00d5, 0x000d, 0x0027, 0xffff, 0x0003, 0x0007, 0x000d, 0x0014, - 0x0018, 0x001d, 0x0023, 0x0029, 0x002e, 0x0035, 0x003c, 0x0041, - 0x000d, 0x0000, 0xffff, 0x214e, 0x22e6, 0x247f, 0x2382, 0x24f9, - 0x247f, 0x2055, 0x228e, 0x247f, 0x22f0, 0x2481, 0x22ee, 0x000d, - 0x0027, 0xffff, 0x0046, 0x004e, 0x000d, 0x0056, 0x005f, 0x0069, - 0x0023, 0x0073, 0x007b, 0x008a, 0x009c, 0x00a4, 0x0002, 0x00e7, - 0x0111, 0x0005, 0x00ed, 0x00f6, 0x0108, 0x0000, 0x00ff, 0x0007, - 0x0027, 0x00ac, 0x00b1, 0x00b6, 0x00bd, 0x00c3, 0x00c9, 0x00cf, - // Entry 1B200 - 1B23F - 0x0007, 0x0000, 0x22f0, 0x228e, 0x247f, 0x24fb, 0x22f0, 0x2382, - 0x2481, 0x0007, 0x0016, 0x0361, 0x2b78, 0x2b7b, 0x2b7f, 0x2b83, - 0x2b87, 0x2b8a, 0x0007, 0x0027, 0x00d4, 0x00e2, 0x00ec, 0x00f7, - 0x0105, 0x0110, 0x011b, 0x0005, 0x0117, 0x0120, 0x0132, 0x0000, - 0x0129, 0x0007, 0x0027, 0x00ac, 0x00b1, 0x00b6, 0x00bd, 0x00c3, - 0x00c9, 0x00cf, 0x0007, 0x0000, 0x22f0, 0x228e, 0x247f, 0x24fb, - 0x22f0, 0x2382, 0x2481, 0x0007, 0x0016, 0x0361, 0x2b78, 0x2b7b, - 0x2b7f, 0x2b83, 0x2b87, 0x2b8a, 0x0007, 0x0027, 0x00d4, 0x00e2, - // Entry 1B240 - 1B27F - 0x00ec, 0x00f7, 0x0105, 0x0110, 0x011b, 0x0002, 0x013e, 0x0157, - 0x0003, 0x0142, 0x0149, 0x0150, 0x0005, 0x0005, 0xffff, 0x070e, - 0x0711, 0x0714, 0x0717, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0027, 0xffff, 0x0128, 0x0134, 0x0140, - 0x014c, 0x0003, 0x015b, 0x0162, 0x0169, 0x0005, 0x0005, 0xffff, - 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0027, 0xffff, 0x0128, 0x0134, - 0x0140, 0x014c, 0x0002, 0x0173, 0x0192, 0x0003, 0x0177, 0x0180, - // Entry 1B280 - 1B2BF - 0x0189, 0x0002, 0x017a, 0x017d, 0x0001, 0x001c, 0x0494, 0x0001, - 0x001c, 0x0499, 0x0002, 0x0183, 0x0186, 0x0001, 0x0000, 0x1f9c, - 0x0001, 0x0000, 0x21ec, 0x0002, 0x018c, 0x018f, 0x0001, 0x001c, - 0x0494, 0x0001, 0x001c, 0x0499, 0x0003, 0x0196, 0x019f, 0x01a8, - 0x0002, 0x0199, 0x019c, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, - 0x0499, 0x0002, 0x01a2, 0x01a5, 0x0001, 0x0000, 0x1f9c, 0x0001, - 0x0000, 0x21ec, 0x0002, 0x01ab, 0x01ae, 0x0001, 0x001c, 0x0494, - 0x0001, 0x001c, 0x0499, 0x0003, 0x01c0, 0x01cb, 0x01b5, 0x0002, - // Entry 1B2C0 - 1B2FF - 0x01b8, 0x01bc, 0x0002, 0x0027, 0x0158, 0x0177, 0x0002, 0x0027, - 0x0167, 0x0183, 0x0002, 0x01c3, 0x01c7, 0x0002, 0x0027, 0x018c, - 0x0193, 0x0002, 0x0027, 0x018f, 0x0196, 0x0002, 0x01ce, 0x01d2, - 0x0002, 0x0027, 0x018c, 0x0193, 0x0002, 0x0027, 0x018f, 0x0196, - 0x0004, 0x01e4, 0x01de, 0x01db, 0x01e1, 0x0001, 0x0001, 0x1fa2, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, - 0x0860, 0x0004, 0x01f5, 0x01ef, 0x01ec, 0x01f2, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - // Entry 1B300 - 1B33F - 0x0000, 0x0546, 0x0004, 0x0206, 0x0200, 0x01fd, 0x0203, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0040, 0x024a, 0x0000, 0x0000, 0x024f, - 0x026e, 0x028d, 0x02ac, 0x02cb, 0x02ea, 0x0309, 0x0328, 0x0347, - 0x0366, 0x0389, 0x03ac, 0x0000, 0x0000, 0x0000, 0x03cf, 0x03f0, - 0x0411, 0x0000, 0x0000, 0x0000, 0x0432, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0437, 0x0453, 0x046f, 0x048b, 0x04a7, 0x04c3, - 0x04df, 0x04fb, 0x0517, 0x0533, 0x054f, 0x056b, 0x0587, 0x05a3, - // Entry 1B340 - 1B37F - 0x05bf, 0x05db, 0x05f7, 0x0613, 0x062f, 0x064b, 0x0667, 0x0000, - 0x0683, 0x0000, 0x0688, 0x06a6, 0x06c4, 0x06e2, 0x0700, 0x071e, - 0x073c, 0x075a, 0x0778, 0x0796, 0x0001, 0x024c, 0x0001, 0x0027, - 0x0199, 0x0003, 0x0253, 0x0256, 0x025b, 0x0001, 0x0027, 0x019d, - 0x0003, 0x0027, 0x01a4, 0x01ad, 0x01bc, 0x0002, 0x025e, 0x0266, - 0x0006, 0x0027, 0x0212, 0x01d4, 0xffff, 0x01d4, 0x01e9, 0x01fd, - 0x0006, 0x0027, 0x0261, 0x0226, 0xffff, 0x0226, 0x023a, 0x024d, - 0x0003, 0x0272, 0x0275, 0x027a, 0x0001, 0x000b, 0x0b8f, 0x0003, - // Entry 1B380 - 1B3BF - 0x0027, 0x01a4, 0x0274, 0x0280, 0x0002, 0x027d, 0x0285, 0x0006, - 0x0027, 0x0295, 0x0295, 0xffff, 0x02a6, 0x0295, 0x02b8, 0x0006, - 0x0027, 0x02db, 0x02ca, 0xffff, 0x02ca, 0x02db, 0x02eb, 0x0003, - 0x0291, 0x0294, 0x0299, 0x0001, 0x000b, 0x0b8f, 0x0003, 0x0027, - 0x01a4, 0x0274, 0x0280, 0x0002, 0x029c, 0x02a4, 0x0006, 0x0027, - 0x0306, 0x02fc, 0xffff, 0x02fc, 0x0306, 0x030f, 0x0006, 0x0027, - 0x0323, 0x0319, 0xffff, 0x0319, 0x0323, 0x032c, 0x0003, 0x02b0, - 0x02b3, 0x02b8, 0x0001, 0x0027, 0x0336, 0x0003, 0x0027, 0x033e, - // Entry 1B3C0 - 1B3FF - 0x0353, 0x0362, 0x0002, 0x02bb, 0x02c3, 0x0006, 0x0027, 0x037a, - 0x037a, 0xffff, 0x037a, 0x037a, 0x037a, 0x0006, 0x0027, 0x038f, - 0x038f, 0xffff, 0x038f, 0x038f, 0x038f, 0x0003, 0x02cf, 0x02d2, - 0x02d7, 0x0001, 0x0027, 0x03a3, 0x0003, 0x0027, 0x033e, 0x0353, - 0x0362, 0x0002, 0x02da, 0x02e2, 0x0006, 0x0027, 0x037a, 0x037a, - 0xffff, 0x037a, 0x037a, 0x037a, 0x0006, 0x0027, 0x038f, 0x038f, - 0xffff, 0x038f, 0x038f, 0x038f, 0x0003, 0x02ee, 0x02f1, 0x02f6, - 0x0001, 0x0027, 0x03a3, 0x0003, 0x0027, 0x033e, 0x0353, 0x0362, - // Entry 1B400 - 1B43F - 0x0002, 0x02f9, 0x0301, 0x0006, 0x0027, 0x03ab, 0x03ab, 0xffff, - 0x03ab, 0x03ab, 0x03ab, 0x0006, 0x0027, 0x03b2, 0x03b2, 0xffff, - 0x03b2, 0x03b2, 0x03b2, 0x0003, 0x030d, 0x0310, 0x0315, 0x0001, - 0x0027, 0x03b9, 0x0003, 0x0027, 0x03bd, 0x03cf, 0x03db, 0x0002, - 0x0318, 0x0320, 0x0006, 0x0027, 0x0402, 0x03f0, 0xffff, 0x03f0, - 0x03f0, 0x0402, 0x0006, 0x0027, 0x0424, 0x0413, 0xffff, 0x0413, - 0x0413, 0x0424, 0x0003, 0x032c, 0x032f, 0x0334, 0x0001, 0x0027, - 0x0434, 0x0003, 0x0027, 0x03bd, 0x03cf, 0x03db, 0x0002, 0x0337, - // Entry 1B440 - 1B47F - 0x033f, 0x0006, 0x0027, 0x0402, 0x03f0, 0xffff, 0x03f0, 0x03f0, - 0x0402, 0x0006, 0x0027, 0x0424, 0x0413, 0xffff, 0x0413, 0x0413, - 0x0424, 0x0003, 0x034b, 0x034e, 0x0353, 0x0001, 0x0027, 0x0434, - 0x0003, 0x0027, 0x03bd, 0x03cf, 0x03db, 0x0002, 0x0356, 0x035e, - 0x0006, 0x0027, 0x0442, 0x0438, 0xffff, 0x0438, 0x0438, 0x0442, - 0x0006, 0x0027, 0x0455, 0x044b, 0xffff, 0x044b, 0x044b, 0x0455, - 0x0004, 0x036b, 0x036e, 0x0373, 0x0386, 0x0001, 0x0027, 0x045e, - 0x0003, 0x0027, 0x0468, 0x0480, 0x0492, 0x0002, 0x0376, 0x037e, - // Entry 1B480 - 1B4BF - 0x0006, 0x0027, 0x04ad, 0x04ad, 0xffff, 0x04c4, 0x04dc, 0x04dc, - 0x0006, 0x0027, 0x04f4, 0x04f4, 0xffff, 0x050a, 0x0521, 0x0521, - 0x0001, 0x0027, 0x0538, 0x0004, 0x038e, 0x0391, 0x0396, 0x03a9, - 0x0001, 0x0027, 0x0546, 0x0003, 0x0027, 0x054c, 0x0560, 0x056e, - 0x0002, 0x0399, 0x03a1, 0x0006, 0x0027, 0x0585, 0x0585, 0xffff, - 0x0598, 0x0585, 0x0585, 0x0006, 0x0027, 0x05ac, 0x05ac, 0xffff, - 0x05ac, 0x05ac, 0x05ac, 0x0001, 0x0027, 0x0538, 0x0004, 0x03b1, - 0x03b4, 0x03b9, 0x03cc, 0x0001, 0x0027, 0x0546, 0x0003, 0x0027, - // Entry 1B4C0 - 1B4FF - 0x054c, 0x0560, 0x056e, 0x0002, 0x03bc, 0x03c4, 0x0006, 0x0027, - 0x05be, 0x05be, 0xffff, 0x05be, 0x05be, 0x05be, 0x0006, 0x0027, - 0x05c9, 0x05c9, 0xffff, 0x05c9, 0x05c9, 0x05c9, 0x0001, 0x0027, - 0x0538, 0x0003, 0x03d3, 0x03d6, 0x03dd, 0x0001, 0x0027, 0x05d4, - 0x0005, 0x0027, 0x05e3, 0x05e9, 0x05ef, 0x05d8, 0x05f8, 0x0002, - 0x03e0, 0x03e8, 0x0006, 0x0027, 0x0606, 0x0606, 0xffff, 0x0606, - 0x0606, 0x0606, 0x0006, 0x0027, 0x0617, 0x0617, 0xffff, 0x0617, - 0x0617, 0x0617, 0x0003, 0x03f4, 0x03f7, 0x03fe, 0x0001, 0x0027, - // Entry 1B500 - 1B53F - 0x05d4, 0x0005, 0x0027, 0x05e3, 0x05e9, 0x05ef, 0x05d8, 0x05f8, - 0x0002, 0x0401, 0x0409, 0x0006, 0x0027, 0x0606, 0x0606, 0xffff, - 0x0606, 0x0606, 0x0606, 0x0006, 0x0027, 0x0617, 0x0617, 0xffff, - 0x0617, 0x0617, 0x0617, 0x0003, 0x0415, 0x0418, 0x041f, 0x0001, - 0x0027, 0x05d4, 0x0005, 0x0027, 0x05e3, 0x05e9, 0x05ef, 0x05d8, - 0x05f8, 0x0002, 0x0422, 0x042a, 0x0006, 0x0027, 0x0627, 0x0627, - 0xffff, 0x0627, 0x0627, 0x0627, 0x0006, 0x0027, 0x0630, 0x0630, - 0xffff, 0x0630, 0x0630, 0x0630, 0x0001, 0x0434, 0x0001, 0x0027, - // Entry 1B540 - 1B57F - 0x0639, 0x0003, 0x0000, 0x043b, 0x0440, 0x0003, 0x0027, 0x064b, - 0x0661, 0x0671, 0x0002, 0x0443, 0x044b, 0x0006, 0x0027, 0x068a, - 0x068a, 0xffff, 0x06a5, 0x06c1, 0x06c1, 0x0006, 0x0027, 0x06dd, - 0x06dd, 0xffff, 0x0701, 0x0726, 0x0726, 0x0003, 0x0000, 0x0457, - 0x045c, 0x0003, 0x0027, 0x074b, 0x075e, 0x076b, 0x0002, 0x045f, - 0x0467, 0x0006, 0x0027, 0x0781, 0x0781, 0xffff, 0x0799, 0x07b2, - 0x07b2, 0x0006, 0x0027, 0x07cb, 0x07cb, 0xffff, 0x07eb, 0x080c, - 0x080c, 0x0003, 0x0000, 0x0473, 0x0478, 0x0003, 0x0027, 0x082d, - // Entry 1B580 - 1B5BF - 0x083f, 0x084b, 0x0002, 0x047b, 0x0483, 0x0006, 0x0027, 0x085d, - 0x085d, 0xffff, 0x0868, 0x0868, 0x0874, 0x0006, 0x0027, 0x0880, - 0x0880, 0xffff, 0x0892, 0x0892, 0x08a5, 0x0003, 0x0000, 0x048f, - 0x0494, 0x0003, 0x0027, 0x08b8, 0x08ca, 0x08d6, 0x0002, 0x0497, - 0x049f, 0x0006, 0x0027, 0x08eb, 0x08eb, 0xffff, 0x0902, 0x091a, - 0x091a, 0x0006, 0x0027, 0x0932, 0x0932, 0xffff, 0x0952, 0x0973, - 0x0973, 0x0003, 0x0000, 0x04ab, 0x04b0, 0x0003, 0x0027, 0x08b8, - 0x08ca, 0x08d6, 0x0002, 0x04b3, 0x04bb, 0x0006, 0x0027, 0x08eb, - // Entry 1B5C0 - 1B5FF - 0x08eb, 0xffff, 0x0902, 0x091a, 0x091a, 0x0006, 0x0027, 0x0932, - 0x0932, 0xffff, 0x0952, 0x0973, 0x0973, 0x0003, 0x0000, 0x04c7, - 0x04cc, 0x0003, 0x0027, 0x08b8, 0x08ca, 0x0994, 0x0002, 0x04cf, - 0x04d7, 0x0006, 0x0027, 0x09a6, 0x09a6, 0xffff, 0x09a6, 0x09a6, - 0x09a6, 0x0006, 0x0027, 0x09b0, 0x09b0, 0xffff, 0x09b0, 0x09b0, - 0x09b0, 0x0003, 0x0000, 0x04e3, 0x04e8, 0x0003, 0x0027, 0x09c1, - 0x09d6, 0x09e5, 0x0002, 0x04eb, 0x04f3, 0x0006, 0x0027, 0x09fd, - 0x09fd, 0xffff, 0x0a16, 0x0a30, 0x0a30, 0x0006, 0x0027, 0x0a4a, - // Entry 1B600 - 1B63F - 0x0a4a, 0xffff, 0x0a6b, 0x0a8d, 0x0a8d, 0x0003, 0x0000, 0x04ff, - 0x0504, 0x0003, 0x0027, 0x09c1, 0x09d6, 0x09e5, 0x0002, 0x0507, - 0x050f, 0x0006, 0x0027, 0x09fd, 0x09fd, 0xffff, 0x0a16, 0x0a30, - 0x0a30, 0x0006, 0x0027, 0x0a4a, 0x0a4a, 0xffff, 0x0a6b, 0x0a8d, - 0x0a8d, 0x0003, 0x0000, 0x051b, 0x0520, 0x0003, 0x0027, 0x09c1, - 0x09d6, 0x0aaf, 0x0002, 0x0523, 0x052b, 0x0006, 0x0027, 0x0ad1, - 0x0ac4, 0xffff, 0x0ac4, 0x0ac4, 0x0ad1, 0x0006, 0x0027, 0x0af1, - 0x0add, 0xffff, 0x0add, 0x0add, 0x0af1, 0x0003, 0x0000, 0x0537, - // Entry 1B640 - 1B67F - 0x053c, 0x0003, 0x0027, 0x0b04, 0x0b1c, 0x0b2e, 0x0002, 0x053f, - 0x0547, 0x0006, 0x0027, 0x0b49, 0x0b49, 0xffff, 0x0b66, 0x0b84, - 0x0b84, 0x0006, 0x0027, 0x0ba2, 0x0ba2, 0xffff, 0x0bc6, 0x0beb, - 0x0beb, 0x0003, 0x0000, 0x0553, 0x0558, 0x0003, 0x0027, 0x0c10, - 0x0c25, 0x0c34, 0x0002, 0x055b, 0x0563, 0x0006, 0x0027, 0x0b49, - 0x0b49, 0xffff, 0x0b66, 0x0b84, 0x0b84, 0x0006, 0x0027, 0x0ba2, - 0x0ba2, 0xffff, 0x0bc6, 0x0beb, 0x0beb, 0x0003, 0x0000, 0x056f, - 0x0574, 0x0003, 0x0027, 0x0c10, 0x0c25, 0x0c4c, 0x0002, 0x0577, - // Entry 1B680 - 1B6BF - 0x057f, 0x0006, 0x0027, 0x0c80, 0x0c60, 0xffff, 0x0c60, 0x0c60, - 0x0c70, 0x0006, 0x0027, 0x0cbd, 0x0c8f, 0xffff, 0x0c8f, 0x0c8f, - 0x0ca6, 0x0003, 0x0000, 0x058b, 0x0590, 0x0003, 0x0027, 0x0cd3, - 0x0ceb, 0x0cfd, 0x0002, 0x0593, 0x059b, 0x0006, 0x0027, 0x0d18, - 0x0d18, 0xffff, 0x0d35, 0x0d53, 0x0d53, 0x0006, 0x0027, 0x0d71, - 0x0d71, 0xffff, 0x0d92, 0x0db4, 0x0db4, 0x0003, 0x0000, 0x05a7, - 0x05ac, 0x0003, 0x0027, 0x0dd6, 0x0dea, 0x0df8, 0x0002, 0x05af, - 0x05b7, 0x0006, 0x0027, 0x0d18, 0x0d18, 0xffff, 0x0d35, 0x0d53, - // Entry 1B6C0 - 1B6FF - 0x0d53, 0x0006, 0x0027, 0x0d71, 0x0d71, 0xffff, 0x0d92, 0x0db4, - 0x0db4, 0x0003, 0x0000, 0x05c3, 0x05c8, 0x0003, 0x0027, 0x0dd6, - 0x0dea, 0x0e0f, 0x0002, 0x05cb, 0x05d3, 0x0006, 0x0027, 0x0e23, - 0x0e23, 0xffff, 0x0e33, 0x0e33, 0x0e44, 0x0006, 0x0027, 0x0e55, - 0x0e55, 0xffff, 0x0e6c, 0x0e6c, 0x0e84, 0x0003, 0x0000, 0x05df, - 0x05e4, 0x0003, 0x0027, 0x0e9c, 0x0eaf, 0x0ebc, 0x0002, 0x05e7, - 0x05ef, 0x0006, 0x0027, 0x0ed2, 0x0ed2, 0xffff, 0x0eea, 0x0f03, - 0x0f03, 0x0006, 0x0027, 0x0f1c, 0x0f1c, 0xffff, 0x0f3d, 0x0f5f, - // Entry 1B700 - 1B73F - 0x0f5f, 0x0003, 0x0000, 0x05fb, 0x0600, 0x0003, 0x0027, 0x0e9c, - 0x0eaf, 0x0ebc, 0x0002, 0x0603, 0x060b, 0x0006, 0x0027, 0x0ed2, - 0x0ed2, 0xffff, 0x0eea, 0x0f03, 0x0f03, 0x0006, 0x0027, 0x0f1c, - 0x0f1c, 0xffff, 0x0f3d, 0x0f5f, 0x0f5f, 0x0003, 0x0000, 0x0617, - 0x061c, 0x0003, 0x0027, 0x0e9c, 0x0eaf, 0x0f81, 0x0002, 0x061f, - 0x0627, 0x0006, 0x0027, 0x0f94, 0x0f94, 0xffff, 0x0f94, 0x0f94, - 0x0f94, 0x0006, 0x0027, 0x0f9f, 0x0f9f, 0xffff, 0x0f9f, 0x0f9f, - 0x0f9f, 0x0003, 0x0000, 0x0633, 0x0638, 0x0003, 0x0027, 0x0fb1, - // Entry 1B740 - 1B77F - 0x0fc6, 0x0fd5, 0x0002, 0x063b, 0x0643, 0x0006, 0x0027, 0x0fed, - 0x0fed, 0xffff, 0x1007, 0x1022, 0x1022, 0x0006, 0x0027, 0x103d, - 0x103d, 0xffff, 0x1060, 0x1084, 0x1084, 0x0003, 0x0000, 0x064f, - 0x0654, 0x0003, 0x0027, 0x10a8, 0x10bb, 0x10c8, 0x0002, 0x0657, - 0x065f, 0x0006, 0x0027, 0x0fed, 0x0fed, 0xffff, 0x1007, 0x1022, - 0x1022, 0x0006, 0x0027, 0x103d, 0x103d, 0xffff, 0x1060, 0x1084, - 0x1084, 0x0003, 0x0000, 0x066b, 0x0670, 0x0003, 0x0027, 0x10de, - 0x10f0, 0x10fc, 0x0002, 0x0673, 0x067b, 0x0006, 0x0027, 0x110e, - // Entry 1B780 - 1B7BF - 0x110e, 0xffff, 0x111b, 0x111b, 0x110e, 0x0006, 0x0027, 0x1129, - 0x1129, 0xffff, 0x113d, 0x113d, 0x1129, 0x0001, 0x0685, 0x0001, - 0x001e, 0x002c, 0x0003, 0x068c, 0x068f, 0x0693, 0x0001, 0x0027, - 0x1152, 0x0002, 0x0027, 0xffff, 0x1157, 0x0002, 0x0696, 0x069e, - 0x0006, 0x0027, 0x1163, 0x1163, 0xffff, 0x1163, 0x117f, 0x119d, - 0x0006, 0x0027, 0x11bc, 0x11bc, 0xffff, 0x11bc, 0x11d7, 0x11f4, - 0x0003, 0x06aa, 0x06ad, 0x06b1, 0x0001, 0x0027, 0x1212, 0x0002, - 0x0027, 0xffff, 0x1157, 0x0002, 0x06b4, 0x06bc, 0x0006, 0x0027, - // Entry 1B7C0 - 1B7FF - 0x1217, 0x1217, 0xffff, 0x1217, 0x1229, 0x123d, 0x0006, 0x0027, - 0x1252, 0x1252, 0xffff, 0x1252, 0x1263, 0x1276, 0x0003, 0x06c8, - 0x06cb, 0x06cf, 0x0001, 0x0000, 0x2010, 0x0002, 0x0027, 0xffff, - 0x1157, 0x0002, 0x06d2, 0x06da, 0x0006, 0x0027, 0x128a, 0x128a, - 0xffff, 0x128a, 0x128a, 0x128a, 0x0006, 0x0027, 0x1291, 0x1291, - 0xffff, 0x1291, 0x1291, 0x1291, 0x0003, 0x06e6, 0x06e9, 0x06ed, - 0x0001, 0x0027, 0x1298, 0x0002, 0x0027, 0xffff, 0x12a2, 0x0002, - 0x06f0, 0x06f8, 0x0006, 0x0027, 0x12b3, 0x12b3, 0xffff, 0x12b3, - // Entry 1B800 - 1B83F - 0x12b3, 0x12b3, 0x0006, 0x0027, 0x12ca, 0x12ca, 0xffff, 0x12ca, - 0x12ca, 0x12ca, 0x0003, 0x0704, 0x0707, 0x070b, 0x0001, 0x0027, - 0x12e0, 0x0002, 0x0027, 0xffff, 0x12a2, 0x0002, 0x070e, 0x0716, - 0x0006, 0x0027, 0x12e7, 0x12e7, 0xffff, 0x12e7, 0x12e7, 0x12e7, - 0x0006, 0x0027, 0x12fb, 0x12fb, 0xffff, 0x12fb, 0x12fb, 0x12fb, - 0x0003, 0x0722, 0x0725, 0x0729, 0x0001, 0x0000, 0x1f96, 0x0002, - 0x0027, 0xffff, 0x12a2, 0x0002, 0x072c, 0x0734, 0x0006, 0x0027, - 0x130e, 0x130e, 0xffff, 0x130e, 0x130e, 0x130e, 0x0006, 0x0027, - // Entry 1B840 - 1B87F - 0x1315, 0x1315, 0xffff, 0x1315, 0x1315, 0x1315, 0x0003, 0x0740, - 0x0743, 0x0747, 0x0001, 0x0027, 0x131c, 0x0002, 0x0027, 0xffff, - 0x1324, 0x0002, 0x074a, 0x0752, 0x0006, 0x0027, 0x132a, 0x132a, - 0xffff, 0x133f, 0x133f, 0x132a, 0x0006, 0x0027, 0x1355, 0x1355, - 0xffff, 0x1369, 0x1369, 0x1355, 0x0003, 0x075e, 0x0761, 0x0765, - 0x0001, 0x0027, 0x137e, 0x0002, 0x0027, 0xffff, 0x1324, 0x0002, - 0x0768, 0x0770, 0x0006, 0x0027, 0x1384, 0x1384, 0xffff, 0x1397, - 0x1397, 0x1384, 0x0006, 0x0027, 0x13ab, 0x13ab, 0xffff, 0x13bd, - // Entry 1B880 - 1B8BF - 0x13bd, 0x13ab, 0x0003, 0x077c, 0x077f, 0x0783, 0x0001, 0x0000, - 0x2002, 0x0002, 0x0027, 0xffff, 0x1324, 0x0002, 0x0786, 0x078e, - 0x0006, 0x0026, 0x00bf, 0x00bf, 0xffff, 0x00bf, 0x00bf, 0x00bf, - 0x0006, 0x0000, 0x1dbb, 0x1dbb, 0xffff, 0x1dbb, 0x1dbb, 0x1dbb, - 0x0001, 0x0798, 0x0001, 0x0027, 0x13d0, 0x0004, 0x07a0, 0x07a5, - 0x07aa, 0x07bd, 0x0003, 0x0000, 0x1dc7, 0x24fd, 0x2504, 0x0003, - 0x0000, 0x1de0, 0x2508, 0x23d0, 0x0002, 0x07b5, 0x07ad, 0x0002, - 0x0000, 0x07b0, 0x0003, 0x0027, 0xffff, 0x13da, 0x13f8, 0x0002, - // Entry 1B8C0 - 1B8FF - 0x0000, 0x07b8, 0x0003, 0x0027, 0xffff, 0x13f4, 0x1416, 0x0002, - 0x09a4, 0x07c0, 0x0003, 0x07c4, 0x0904, 0x0864, 0x009e, 0x0027, - 0xffff, 0xffff, 0xffff, 0xffff, 0x14af, 0x150c, 0x1578, 0x15c3, - 0x15ff, 0x1641, 0x1689, 0x16e3, 0x1719, 0x17b2, 0x17f4, 0x1845, - 0x18ae, 0x18f9, 0x1944, 0x199e, 0x1a13, 0x1a79, 0x1adc, 0x1b36, - 0x1b75, 0xffff, 0xffff, 0x1be7, 0xffff, 0x1c40, 0xffff, 0x1cb2, - 0x1ceb, 0x1d24, 0x1d60, 0xffff, 0xffff, 0x1dc9, 0x1e0e, 0x1e5f, - 0xffff, 0xffff, 0xffff, 0x1edd, 0xffff, 0x1f41, 0x1f8f, 0xffff, - // Entry 1B900 - 1B93F - 0x2004, 0x205b, 0x20bb, 0xffff, 0xffff, 0xffff, 0xffff, 0x2159, - 0xffff, 0xffff, 0x21c1, 0x222a, 0xffff, 0xffff, 0x22d5, 0x2329, - 0x2368, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2427, - 0x246f, 0x24a8, 0x24e1, 0x2529, 0xffff, 0xffff, 0x25cf, 0xffff, - 0x261b, 0xffff, 0xffff, 0x2698, 0xffff, 0x2724, 0xffff, 0xffff, - 0xffff, 0xffff, 0x27b5, 0xffff, 0x281e, 0x288d, 0x290b, 0x2950, - 0xffff, 0xffff, 0xffff, 0x29aa, 0x2a04, 0x2a5e, 0xffff, 0xffff, - 0x2acd, 0x2b50, 0x2b95, 0x2bc5, 0xffff, 0xffff, 0x2c3a, 0x2c76, - // Entry 1B940 - 1B97F - 0x2cb2, 0xffff, 0x2d37, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2e31, 0x2e70, 0x2ea9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2f65, 0xffff, 0xffff, 0x2fcc, 0xffff, 0x300b, - 0xffff, 0x3079, 0x30af, 0x3115, 0xffff, 0x3160, 0x31a5, 0xffff, - 0xffff, 0xffff, 0x3221, 0x325d, 0xffff, 0xffff, 0x141b, 0x1542, - 0x1749, 0x177c, 0xffff, 0xffff, 0x26d7, 0x2dd0, 0x009e, 0x0027, - 0x144b, 0x1460, 0x1474, 0x148c, 0x14c6, 0x1516, 0x1589, 0x15cf, - 0x160d, 0x1651, 0x169f, 0x16ed, 0x1721, 0x17c0, 0x1807, 0x1860, - // Entry 1B980 - 1B9BF - 0x18bf, 0x190a, 0x195a, 0x19bd, 0x1a2d, 0x1a92, 0x1af2, 0x1b43, - 0x1b89, 0x1bc9, 0x1bd9, 0x1bf5, 0x1c29, 0x1c4e, 0x1c96, 0x1cbd, - 0x1cf6, 0x1d30, 0x1d6e, 0x1da2, 0x1db7, 0x1dd8, 0x1e1f, 0x1e69, - 0x1e95, 0x1ea9, 0x1eca, 0x1ef2, 0x1f34, 0x1f53, 0x1fa5, 0x1fe9, - 0x2019, 0x2073, 0x20c6, 0x20f4, 0x210a, 0x2136, 0x214d, 0x2168, - 0x219e, 0x21ae, 0x21dc, 0x2244, 0x22a7, 0x22c7, 0x22e9, 0x2336, - 0x2370, 0x2398, 0x23b3, 0x23ca, 0x23db, 0x23f2, 0x240d, 0x2437, - 0x247a, 0x24b3, 0x24f1, 0x2546, 0x2598, 0x25b4, 0x25dd, 0x2611, - // Entry 1B9C0 - 1B9FF - 0x262a, 0x2660, 0x2683, 0x26a5, 0x270d, 0x2730, 0x2760, 0x2770, - 0x2787, 0x27a0, 0x27c9, 0x2809, 0x283b, 0x28af, 0x291a, 0x295b, - 0x2989, 0x2995, 0x299f, 0x29c0, 0x2a1a, 0x2a72, 0x2ab2, 0x2aba, - 0x2ae5, 0x2b5f, 0x2b9d, 0x2bd7, 0x2c13, 0x2c25, 0x2c46, 0x2c82, - 0x2cce, 0x2d1e, 0x2d53, 0x2da3, 0x2db7, 0x2dc3, 0x2e0f, 0x2e1b, - 0x2e3e, 0x2e7b, 0x2eb3, 0x2edf, 0x2eef, 0x2f0c, 0x2f22, 0x2f37, - 0x2f43, 0x2f57, 0x2f70, 0x2f9e, 0x2fb7, 0x2fd6, 0x3002, 0x3024, - 0x306e, 0x3083, 0x30c9, 0x3121, 0x3151, 0x316f, 0x31b2, 0x31e4, - // Entry 1BA00 - 1BA3F - 0x31f9, 0x3209, 0x322d, 0x326e, 0x2290, 0x2b2d, 0x1423, 0x154c, - 0x1752, 0x1786, 0x1c82, 0x2674, 0x26e1, 0x2ddd, 0x009e, 0x0027, - 0xffff, 0xffff, 0xffff, 0xffff, 0x14eb, 0x152e, 0x15a8, 0x15e9, - 0x1629, 0x166f, 0x16c3, 0x1705, 0x1737, 0x17dc, 0x1828, 0x1889, - 0x18de, 0x1929, 0x197e, 0x19ea, 0x1a55, 0x1ab9, 0x1b16, 0x1b5e, - 0x1bab, 0xffff, 0xffff, 0x1c11, 0xffff, 0x1c6a, 0xffff, 0x1cd6, - 0x1d0f, 0x1d4a, 0x1d8a, 0xffff, 0xffff, 0x1df5, 0x1e3e, 0x1e81, - 0xffff, 0xffff, 0xffff, 0x1f15, 0xffff, 0x1f73, 0x1fc9, 0xffff, - // Entry 1BA40 - 1BA7F - 0x203c, 0x2099, 0x20df, 0xffff, 0xffff, 0xffff, 0xffff, 0x2185, - 0xffff, 0xffff, 0x2205, 0x226c, 0xffff, 0xffff, 0x230b, 0x2351, - 0x2386, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2455, - 0x2493, 0x24cc, 0x250f, 0x2571, 0xffff, 0xffff, 0x25f9, 0xffff, - 0x2647, 0xffff, 0xffff, 0x26c0, 0xffff, 0x274a, 0xffff, 0xffff, - 0xffff, 0xffff, 0x27eb, 0xffff, 0x2866, 0x28df, 0x2937, 0x2974, - 0xffff, 0xffff, 0xffff, 0x29e4, 0x2a3e, 0x2a94, 0xffff, 0xffff, - 0x2b0b, 0x2b7c, 0x2bb3, 0x2bf7, 0xffff, 0xffff, 0x2c60, 0x2c9c, - // Entry 1BA80 - 1BABF - 0x2cf8, 0xffff, 0x2d7d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2e59, 0x2e94, 0x2ecb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2f89, 0xffff, 0xffff, 0x2fee, 0xffff, 0x304b, - 0xffff, 0x309b, 0x30f1, 0x313b, 0xffff, 0x318c, 0x31cd, 0xffff, - 0xffff, 0xffff, 0x3247, 0x328d, 0xffff, 0xffff, 0x1439, 0x1564, - 0x1769, 0x179e, 0xffff, 0xffff, 0x26f9, 0x2df8, 0x0003, 0x09a8, - 0x0a17, 0x09db, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1BAC0 - 1BAFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1BB00 - 1BB3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2790, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1BB40 - 1BB7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x01ff, 0x059f, - 0x0012, 0x0017, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, - 0x004b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01cf, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x9006, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0029, 0x0000, 0x003a, 0x0004, 0x0037, 0x0031, - // Entry 1BB80 - 1BBBF - 0x002e, 0x0034, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0004, 0x0048, - 0x0042, 0x003f, 0x0045, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0054, 0x00b9, 0x0110, 0x0145, 0x0186, 0x019c, 0x01ad, 0x01be, - 0x0002, 0x0057, 0x0088, 0x0003, 0x005b, 0x006a, 0x0079, 0x000d, - 0x0028, 0xffff, 0x0000, 0x0005, 0x000b, 0x0011, 0x0016, 0x001c, - 0x0022, 0x0027, 0x002d, 0x0032, 0x0038, 0x003d, 0x000d, 0x0000, - // Entry 1BBC0 - 1BBFF - 0xffff, 0x22e6, 0x2281, 0x247f, 0x2281, 0x24fb, 0x2511, 0x2055, - 0x228e, 0x2481, 0x22f0, 0x2481, 0x22f0, 0x000d, 0x0028, 0xffff, - 0x0043, 0x0054, 0x0062, 0x006e, 0x007c, 0x008b, 0x0099, 0x00a5, - 0x00b4, 0x00c3, 0x00d1, 0x00e0, 0x0003, 0x008c, 0x009b, 0x00aa, - 0x000d, 0x0028, 0xffff, 0x0000, 0x0005, 0x000b, 0x0011, 0x0016, - 0x001c, 0x0022, 0x0027, 0x002d, 0x0032, 0x0038, 0x003d, 0x000d, - 0x0000, 0xffff, 0x22e6, 0x2281, 0x247f, 0x2281, 0x24fb, 0x2511, - 0x2055, 0x228e, 0x2481, 0x22f0, 0x2481, 0x22f0, 0x000d, 0x0028, - // Entry 1BC00 - 1BC3F - 0xffff, 0x00f0, 0x00fe, 0x0109, 0x0112, 0x011d, 0x0129, 0x0137, - 0x0143, 0x0150, 0x015d, 0x0169, 0x0176, 0x0002, 0x00bc, 0x00e6, - 0x0005, 0x00c2, 0x00cb, 0x00dd, 0x0000, 0x00d4, 0x0007, 0x0028, - 0x0184, 0x0188, 0x018c, 0x0190, 0x0194, 0x0198, 0x019c, 0x0007, - 0x0000, 0x22f0, 0x228e, 0x247f, 0x24fb, 0x2382, 0x19c7, 0x2481, - 0x0007, 0x0028, 0x01a0, 0x01a4, 0x01a7, 0x01ab, 0x01ae, 0x01b1, - 0x01b4, 0x0007, 0x0028, 0x01b7, 0x01c4, 0x01cc, 0x01d5, 0x01df, - 0x01e9, 0x01f2, 0x0005, 0x00ec, 0x00f5, 0x0107, 0x0000, 0x00fe, - // Entry 1BC40 - 1BC7F - 0x0007, 0x0028, 0x0184, 0x0188, 0x018c, 0x0190, 0x0194, 0x0198, - 0x019c, 0x0007, 0x0000, 0x22f0, 0x228e, 0x247f, 0x24fb, 0x2382, - 0x19c7, 0x2481, 0x0007, 0x0028, 0x01a0, 0x01a4, 0x01a7, 0x01ab, - 0x01ae, 0x01b1, 0x01b4, 0x0007, 0x0028, 0x01b7, 0x01c4, 0x01cc, - 0x01d5, 0x01df, 0x01e9, 0x01f2, 0x0002, 0x0113, 0x012c, 0x0003, - 0x0117, 0x011e, 0x0125, 0x0005, 0x0028, 0xffff, 0x01fe, 0x0201, - 0x0204, 0x0207, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0028, 0xffff, 0x020a, 0x0217, 0x0224, 0x0230, - // Entry 1BC80 - 1BCBF - 0x0003, 0x0130, 0x0137, 0x013e, 0x0005, 0x0028, 0xffff, 0x01fe, - 0x0201, 0x0204, 0x0207, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0028, 0xffff, 0x020a, 0x0217, 0x0224, - 0x0230, 0x0002, 0x0148, 0x0167, 0x0003, 0x014c, 0x0155, 0x015e, - 0x0002, 0x014f, 0x0152, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x0000, - 0x2006, 0x0002, 0x0158, 0x015b, 0x0001, 0x0000, 0x1f9a, 0x0001, - 0x0000, 0x2006, 0x0002, 0x0161, 0x0164, 0x0001, 0x0000, 0x1f9a, - 0x0001, 0x0000, 0x2006, 0x0003, 0x016b, 0x0174, 0x017d, 0x0002, - // Entry 1BCC0 - 1BCFF - 0x016e, 0x0171, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x0000, 0x2006, - 0x0002, 0x0177, 0x017a, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x0000, - 0x2006, 0x0002, 0x0180, 0x0183, 0x0001, 0x0000, 0x1f9a, 0x0001, - 0x0000, 0x2006, 0x0003, 0x0190, 0x0196, 0x018a, 0x0001, 0x018c, - 0x0002, 0x0028, 0x023d, 0x024a, 0x0001, 0x0192, 0x0002, 0x0027, - 0x018c, 0x0193, 0x0001, 0x0198, 0x0002, 0x0000, 0x223e, 0x2382, - 0x0004, 0x01aa, 0x01a4, 0x01a1, 0x01a7, 0x0001, 0x0028, 0x025e, - 0x0001, 0x0028, 0x0271, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, - // Entry 1BD00 - 1BD3F - 0x0860, 0x0004, 0x01bb, 0x01b5, 0x01b2, 0x01b8, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x01cc, 0x01c6, 0x01c3, 0x01c9, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x01d8, 0x0000, 0x0000, 0x01ee, 0x0003, 0x01e2, 0x01e8, 0x01dc, - 0x0001, 0x01de, 0x0002, 0x0028, 0x027e, 0x028e, 0x0001, 0x01e4, - 0x0002, 0x0028, 0x0297, 0x028e, 0x0001, 0x01ea, 0x0002, 0x0028, - // Entry 1BD40 - 1BD7F - 0x0297, 0x028e, 0x0004, 0x01fc, 0x01f6, 0x01f3, 0x01f9, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0040, 0x0240, 0x0000, 0x0000, 0x0245, - 0x0263, 0x0281, 0x029f, 0x02bc, 0x02d9, 0x02f6, 0x0313, 0x0330, - 0x034d, 0x036a, 0x0387, 0x0000, 0x0000, 0x0000, 0x03a4, 0x03c4, - 0x03e4, 0x0000, 0x0000, 0x0000, 0x0404, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0409, 0x0411, 0x0419, 0x0421, 0x0429, 0x0431, - 0x0439, 0x0441, 0x0449, 0x0451, 0x0459, 0x0461, 0x0469, 0x0471, - // Entry 1BD80 - 1BDBF - 0x0479, 0x0481, 0x0489, 0x0491, 0x0499, 0x04a1, 0x04a9, 0x0000, - 0x04b1, 0x0000, 0x04b6, 0x04ce, 0x04e6, 0x04fe, 0x0516, 0x052e, - 0x0546, 0x0562, 0x057e, 0x059a, 0x0001, 0x0242, 0x0001, 0x0028, - 0x029e, 0x0003, 0x0249, 0x024c, 0x0252, 0x0001, 0x0028, 0x02a3, - 0x0004, 0x0028, 0x02bb, 0x02c5, 0x02d1, 0x02ac, 0x0002, 0x0255, - 0x025c, 0x0005, 0x0028, 0x0315, 0x02e2, 0xffff, 0x02e2, 0x02f9, - 0x0005, 0x0028, 0x035d, 0x032b, 0xffff, 0x032b, 0x0341, 0x0003, - 0x0267, 0x026a, 0x0270, 0x0001, 0x0028, 0x0372, 0x0004, 0x0028, - // Entry 1BDC0 - 1BDFF - 0x02bb, 0x02c5, 0x02d1, 0x02ac, 0x0002, 0x0273, 0x027a, 0x0005, - 0x0028, 0x0386, 0x0378, 0xffff, 0x0378, 0x0386, 0x0005, 0x0028, - 0x03a0, 0x0393, 0xffff, 0x0393, 0x03a0, 0x0003, 0x0285, 0x0288, - 0x028e, 0x0001, 0x000b, 0x0b8f, 0x0004, 0x0028, 0x03b6, 0x03be, - 0x03c5, 0x03ac, 0x0002, 0x0291, 0x0298, 0x0005, 0x0027, 0x0306, - 0x02fc, 0xffff, 0x02fc, 0x0306, 0x0005, 0x0027, 0x0323, 0x0319, - 0xffff, 0x0319, 0x0323, 0x0003, 0x02a3, 0x02a6, 0x02ab, 0x0001, - 0x0028, 0x03d1, 0x0003, 0x0028, 0x03da, 0x03f1, 0x0401, 0x0002, - // Entry 1BE00 - 1BE3F - 0x02ae, 0x02b5, 0x0005, 0x0028, 0x0441, 0x0412, 0xffff, 0x0412, - 0x0429, 0x0005, 0x0028, 0x0486, 0x0457, 0xffff, 0x0457, 0x046e, - 0x0003, 0x02c0, 0x02c3, 0x02c8, 0x0001, 0x0028, 0x049c, 0x0003, - 0x0028, 0x04a3, 0x04b7, 0x04c5, 0x0002, 0x02cb, 0x02d2, 0x0005, - 0x0028, 0x04e3, 0x04d4, 0xffff, 0x04d4, 0x04e3, 0x0005, 0x0028, - 0x04ff, 0x04f1, 0xffff, 0x04f1, 0x04ff, 0x0003, 0x02dd, 0x02e0, - 0x02e5, 0x0001, 0x0028, 0x050c, 0x0003, 0x0028, 0x050f, 0x0516, - 0x0520, 0x0002, 0x02e8, 0x02ef, 0x0005, 0x0028, 0x0528, 0x0528, - // Entry 1BE40 - 1BE7F - 0xffff, 0x0528, 0x0528, 0x0005, 0x0028, 0x0530, 0x0530, 0xffff, - 0x0530, 0x0530, 0x0003, 0x02fa, 0x02fd, 0x0302, 0x0001, 0x0028, - 0x0538, 0x0003, 0x0028, 0x053e, 0x0552, 0x055f, 0x0002, 0x0305, - 0x030c, 0x0005, 0x0028, 0x0597, 0x056d, 0xffff, 0x056d, 0x0582, - 0x0005, 0x0028, 0x05d2, 0x05ab, 0xffff, 0x05ab, 0x05be, 0x0003, - 0x0317, 0x031a, 0x031f, 0x0001, 0x0028, 0x0538, 0x0003, 0x0028, - 0x05e4, 0x0552, 0x055f, 0x0002, 0x0322, 0x0329, 0x0005, 0x0028, - 0x0606, 0x05f7, 0xffff, 0x05f7, 0x0606, 0x0005, 0x0028, 0x0622, - // Entry 1BE80 - 1BEBF - 0x0614, 0xffff, 0x0614, 0x0622, 0x0003, 0x0334, 0x0337, 0x033c, - 0x0001, 0x0028, 0x062f, 0x0003, 0x0028, 0x0634, 0x063d, 0x0649, - 0x0002, 0x033f, 0x0346, 0x0005, 0x0028, 0x065e, 0x0653, 0xffff, - 0x0653, 0x065e, 0x0005, 0x0028, 0x0673, 0x0668, 0xffff, 0x0668, - 0x0673, 0x0003, 0x0351, 0x0354, 0x0359, 0x0001, 0x0028, 0x067d, - 0x0003, 0x0028, 0x0687, 0x06a1, 0x06b4, 0x0002, 0x035c, 0x0363, - 0x0005, 0x0028, 0x06c6, 0x06c6, 0xffff, 0x06dd, 0x06f5, 0x0005, - 0x0028, 0x070f, 0x070f, 0xffff, 0x0725, 0x073c, 0x0003, 0x036e, - // Entry 1BEC0 - 1BEFF - 0x0371, 0x0376, 0x0001, 0x0028, 0x0755, 0x0003, 0x0028, 0x075d, - 0x076f, 0x0780, 0x0002, 0x0379, 0x0380, 0x0005, 0x0028, 0x07a0, - 0x0790, 0xffff, 0x0790, 0x07a0, 0x0005, 0x0028, 0x07be, 0x07af, - 0xffff, 0x07af, 0x07be, 0x0003, 0x038b, 0x038e, 0x0393, 0x0001, - 0x0028, 0x07cc, 0x0003, 0x0028, 0x07d0, 0x07d8, 0x07e5, 0x0002, - 0x0396, 0x039d, 0x0005, 0x0028, 0x07ee, 0x07ee, 0xffff, 0x07ee, - 0x07ee, 0x0005, 0x0028, 0x07f7, 0x07f7, 0xffff, 0x07f7, 0x07f7, - 0x0003, 0x03a8, 0x03ab, 0x03b3, 0x0001, 0x0028, 0x0800, 0x0006, - // Entry 1BF00 - 1BF3F - 0x0028, 0x0813, 0x081a, 0x0823, 0x0806, 0x082f, 0x0838, 0x0002, - 0x03b6, 0x03bd, 0x0005, 0x0028, 0x0844, 0x0844, 0xffff, 0x0844, - 0x0857, 0x0005, 0x0028, 0x086e, 0x086e, 0xffff, 0x086e, 0x0880, - 0x0003, 0x03c8, 0x03cb, 0x03d3, 0x0001, 0x0028, 0x0896, 0x0006, - 0x0028, 0x0813, 0x081a, 0x0823, 0x0806, 0x082f, 0x0838, 0x0002, - 0x03d6, 0x03dd, 0x0005, 0x0028, 0x089a, 0x089a, 0xffff, 0x089a, - 0x08a5, 0x0005, 0x0028, 0x08b1, 0x08b1, 0xffff, 0x08b1, 0x08bb, - 0x0003, 0x03e8, 0x03eb, 0x03f3, 0x0001, 0x0028, 0x0896, 0x0006, - // Entry 1BF40 - 1BF7F - 0x0028, 0x0813, 0x081a, 0x0823, 0x0806, 0x082f, 0x0838, 0x0002, - 0x03f6, 0x03fd, 0x0005, 0x0028, 0x08c6, 0x08c6, 0xffff, 0x08c6, - 0x08c6, 0x0005, 0x0028, 0x08cf, 0x08cf, 0xffff, 0x08cf, 0x08cf, - 0x0001, 0x0406, 0x0001, 0x0028, 0x08d8, 0x0002, 0x0000, 0x040c, - 0x0003, 0x0028, 0x08ec, 0x01b7, 0x0904, 0x0002, 0x0000, 0x0414, - 0x0003, 0x0028, 0x091d, 0x092c, 0x0931, 0x0002, 0x0000, 0x041c, - 0x0003, 0x0028, 0x0941, 0x094a, 0x094f, 0x0002, 0x0000, 0x0424, - 0x0003, 0x0028, 0x0958, 0x01c4, 0x096b, 0x0002, 0x0000, 0x042c, - // Entry 1BF80 - 1BFBF - 0x0003, 0x0028, 0x097f, 0x098e, 0x0993, 0x0002, 0x0000, 0x0434, - 0x0003, 0x0028, 0x09a3, 0x09ab, 0x09af, 0x0002, 0x0000, 0x043c, - 0x0003, 0x0028, 0x09b7, 0x01cc, 0x09cb, 0x0002, 0x0000, 0x0444, - 0x0003, 0x0028, 0x09e0, 0x09ef, 0x09f4, 0x0002, 0x0000, 0x044c, - 0x0003, 0x0028, 0x0a04, 0x0a0d, 0x0a12, 0x0002, 0x0000, 0x0454, - 0x0003, 0x0028, 0x0a1b, 0x01d5, 0x0a30, 0x0002, 0x0000, 0x045c, - 0x0003, 0x0028, 0x0a46, 0x0a55, 0x0a5a, 0x0002, 0x0000, 0x0464, - 0x0003, 0x0028, 0x0a6a, 0x0a72, 0x0a76, 0x0002, 0x0000, 0x046c, - // Entry 1BFC0 - 1BFFF - 0x0003, 0x0028, 0x0a7e, 0x01df, 0x0a93, 0x0002, 0x0000, 0x0474, - 0x0003, 0x0028, 0x0aa9, 0x0ab8, 0x0abd, 0x0002, 0x0000, 0x047c, - 0x0003, 0x0028, 0x0acd, 0x0ad5, 0x0ad9, 0x0002, 0x0000, 0x0484, - 0x0003, 0x0028, 0x0ae1, 0x01e9, 0x0af5, 0x0002, 0x0000, 0x048c, - 0x0003, 0x0028, 0x0b0a, 0x0b19, 0x0b1e, 0x0002, 0x0000, 0x0494, - 0x0003, 0x0028, 0x0b2e, 0x0b36, 0x0b3a, 0x0002, 0x0000, 0x049c, - 0x0003, 0x0028, 0x0b42, 0x01f2, 0x0b59, 0x0002, 0x0000, 0x04a4, - 0x0003, 0x0028, 0x0b71, 0x0b80, 0x0b85, 0x0002, 0x0000, 0x04ac, - // Entry 1C000 - 1C03F - 0x0003, 0x0028, 0x0b95, 0x0b9d, 0x0ba1, 0x0001, 0x04b3, 0x0001, - 0x0028, 0x0ba9, 0x0003, 0x04ba, 0x0000, 0x04bd, 0x0001, 0x0028, - 0x0bad, 0x0002, 0x04c0, 0x04c7, 0x0005, 0x0028, 0x0bbb, 0x0bbb, - 0xffff, 0x0bbb, 0x0bd6, 0x0005, 0x0028, 0x0bf4, 0x0bf4, 0xffff, - 0x0bf4, 0x0c0e, 0x0003, 0x04d2, 0x0000, 0x04d5, 0x0001, 0x0027, - 0x1212, 0x0002, 0x04d8, 0x04df, 0x0005, 0x0028, 0x0c2b, 0x0c2b, - 0xffff, 0x0c2b, 0x0c37, 0x0005, 0x0028, 0x0c44, 0x0c44, 0xffff, - 0x0c44, 0x0c4f, 0x0003, 0x04ea, 0x0000, 0x04ed, 0x0001, 0x0000, - // Entry 1C040 - 1C07F - 0x2010, 0x0002, 0x04f0, 0x04f7, 0x0005, 0x0028, 0x0c5b, 0x0c5b, - 0xffff, 0x0c5b, 0x0c5b, 0x0005, 0x0028, 0x0c63, 0x0c63, 0xffff, - 0x0c63, 0x0c63, 0x0003, 0x0502, 0x0000, 0x0505, 0x0001, 0x0028, - 0x0c6b, 0x0002, 0x0508, 0x050f, 0x0005, 0x0028, 0x0ca1, 0x0c73, - 0xffff, 0x0c73, 0x0c89, 0x0005, 0x0028, 0x0ce2, 0x0cb6, 0xffff, - 0x0cb6, 0x0ccb, 0x0003, 0x051a, 0x0000, 0x051d, 0x0001, 0x0028, - 0x0cf6, 0x0002, 0x0520, 0x0527, 0x0005, 0x0028, 0x0d0a, 0x0cfc, - 0xffff, 0x0cfc, 0x0d0a, 0x0005, 0x0028, 0x0d24, 0x0d17, 0xffff, - // Entry 1C080 - 1C0BF - 0x0d17, 0x0d24, 0x0003, 0x0532, 0x0000, 0x0535, 0x0001, 0x0000, - 0x1f9a, 0x0002, 0x0538, 0x053f, 0x0005, 0x0000, 0x1ace, 0x1ace, - 0xffff, 0x1ace, 0x1ace, 0x0005, 0x0000, 0x1ad5, 0x1ad5, 0xffff, - 0x1ad5, 0x1ad5, 0x0003, 0x054a, 0x054d, 0x0551, 0x0001, 0x0028, - 0x0d30, 0x0002, 0x0028, 0xffff, 0x0d35, 0x0002, 0x0554, 0x055b, - 0x0005, 0x0028, 0x0d40, 0x0d40, 0xffff, 0x0d52, 0x0d65, 0x0005, - 0x0028, 0x0d79, 0x0d79, 0xffff, 0x0d8a, 0x0d9c, 0x0003, 0x0566, - 0x0569, 0x056d, 0x0001, 0x0028, 0x0d30, 0x0002, 0x0028, 0xffff, - // Entry 1C0C0 - 1C0FF - 0x0d35, 0x0002, 0x0570, 0x0577, 0x0005, 0x0028, 0x0daf, 0x0daf, - 0xffff, 0x0dbb, 0x0dc8, 0x0005, 0x0028, 0x0dd5, 0x0dd5, 0xffff, - 0x0de0, 0x0dec, 0x0003, 0x0582, 0x0585, 0x0589, 0x0001, 0x0000, - 0x2008, 0x0002, 0x0028, 0xffff, 0x0d35, 0x0002, 0x058c, 0x0593, - 0x0005, 0x0000, 0x1b48, 0x1b48, 0xffff, 0x1b48, 0x1b48, 0x0005, - 0x0000, 0x1b4f, 0x1b4f, 0xffff, 0x1b4f, 0x1b4f, 0x0001, 0x059c, - 0x0001, 0x0028, 0x0df8, 0x0004, 0x05a4, 0x05a9, 0x05ae, 0x05cf, - 0x0003, 0x0000, 0x1dc7, 0x238b, 0x24f5, 0x0003, 0x0000, 0x1de0, - // Entry 1C100 - 1C13F - 0x2514, 0x2529, 0x0002, 0x05b9, 0x05b1, 0x0002, 0x0000, 0x05b4, - 0x0003, 0x0028, 0xffff, 0x0e04, 0x0e23, 0x0003, 0x05c3, 0x05bd, - 0x05c9, 0x0004, 0x0028, 0xffff, 0x0e1f, 0x0e39, 0x0e48, 0x0004, - 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0006, 0xffff, - 0xffff, 0xffff, 0x05a4, 0x0002, 0x07b6, 0x05d2, 0x0003, 0x05d6, - 0x0716, 0x0676, 0x009e, 0x0028, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0ec0, 0x0f06, 0x0f68, 0x0f9c, 0x1009, 0x1073, 0x10dd, 0x1132, - 0x1163, 0x11ed, 0x1221, 0x126d, 0x12d4, 0x130e, 0x135d, 0x13b2, - // Entry 1C140 - 1C17F - 0x141c, 0x146e, 0x14c0, 0x1506, 0x1561, 0xffff, 0xffff, 0x15b8, - 0xffff, 0x1610, 0xffff, 0x1674, 0x16a8, 0x16dc, 0x1713, 0xffff, - 0xffff, 0x177a, 0x17b4, 0x1800, 0xffff, 0xffff, 0xffff, 0x1864, - 0xffff, 0x18c4, 0x1928, 0xffff, 0x19ac, 0x1a0d, 0x1a74, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1b02, 0xffff, 0xffff, 0x1b78, 0x1bd3, - 0xffff, 0xffff, 0x1c57, 0x1ce2, 0x1d1c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1dd5, 0x1e09, 0x1e3d, 0x1e71, 0x1eb1, - 0xffff, 0xffff, 0x1f48, 0xffff, 0x1f8a, 0xffff, 0xffff, 0x1ffa, - // Entry 1C180 - 1C1BF - 0xffff, 0x2081, 0xffff, 0xffff, 0xffff, 0xffff, 0x2113, 0xffff, - 0x2183, 0x21e7, 0x225a, 0x2297, 0xffff, 0xffff, 0xffff, 0x22ec, - 0x233e, 0x238d, 0xffff, 0xffff, 0x23f5, 0x2471, 0x24b1, 0x24dc, - 0xffff, 0xffff, 0x2540, 0x257d, 0x25ae, 0xffff, 0x2624, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x270b, 0x2742, 0x2773, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x281e, 0xffff, - 0xffff, 0x286e, 0xffff, 0x28a6, 0xffff, 0x28fb, 0x2935, 0x2975, - 0xffff, 0x29bc, 0x29fc, 0xffff, 0xffff, 0xffff, 0x2a68, 0x2a9c, - // Entry 1C1C0 - 1C1FF - 0xffff, 0xffff, 0x0e4c, 0x0f37, 0x118e, 0x11bc, 0xffff, 0xffff, - 0x2034, 0x26b3, 0x009e, 0x0028, 0x0e77, 0x0e89, 0x0e9c, 0x0eae, - 0x0ed2, 0x0f11, 0x0f74, 0x0fbb, 0x1027, 0x1091, 0x10f4, 0x113d, - 0x116c, 0x11f9, 0x1235, 0x128a, 0x12e2, 0x1323, 0x1374, 0x13d0, - 0x1432, 0x1484, 0x14d2, 0x151f, 0x1570, 0x159e, 0x15aa, 0x15c6, - 0x15f2, 0x1624, 0x1667, 0x1680, 0x16b4, 0x16e9, 0x1722, 0x1750, - 0x1766, 0x1788, 0x17c6, 0x180a, 0x182e, 0x1839, 0x1850, 0x187a, - 0x18b6, 0x18e0, 0x1943, 0x1989, 0x19c7, 0x1a2a, 0x1a7e, 0x1aa2, - // Entry 1C200 - 1C23F - 0x1abc, 0x1ae6, 0x1af5, 0x1b15, 0x1b4b, 0x1b64, 0x1b91, 0x1bec, - 0x1c37, 0x1c48, 0x1c80, 0x1cf0, 0x1d25, 0x1d47, 0x1d5a, 0x1d72, - 0x1d86, 0x1da1, 0x1dbb, 0x1de1, 0x1e15, 0x1e49, 0x1e81, 0x1ece, - 0x1f18, 0x1f30, 0x1f55, 0x1f7f, 0x1f9a, 0x1fca, 0x1fe5, 0x2008, - 0x206b, 0x208d, 0x20b5, 0x20c5, 0x20e1, 0x20fc, 0x212f, 0x2177, - 0x219f, 0x2208, 0x2269, 0x22a2, 0x22c8, 0x22d5, 0x22e0, 0x2302, - 0x2353, 0x23a1, 0x23d9, 0x23e2, 0x240d, 0x2481, 0x24ba, 0x24eb, - 0x2519, 0x2524, 0x254f, 0x2588, 0x25c9, 0x260f, 0x2643, 0x2691, - // Entry 1C240 - 1C27F - 0x26a7, 0xffff, 0x26f3, 0x26ff, 0x2718, 0x274d, 0x277f, 0x27a7, - 0x27c2, 0x27d1, 0x27e7, 0x27fb, 0x2808, 0x2813, 0x2829, 0x284f, - 0x2862, 0x2878, 0x289c, 0x28b9, 0x28ef, 0x2909, 0x2945, 0x2981, - 0x29a9, 0x29cc, 0x2a0a, 0x2a36, 0x2a41, 0x2a51, 0x2a74, 0x2aae, - 0x1c2e, 0x244d, 0x0e55, 0x0f42, 0x1198, 0x11c7, 0x165c, 0x1fdb, - 0x2041, 0x26c3, 0x009e, 0x0028, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0ee8, 0x0f20, 0x0f84, 0x0fde, 0x1049, 0x10b3, 0x110f, 0x114c, - 0x1179, 0x1209, 0x124d, 0x12ab, 0x12f4, 0x133c, 0x138f, 0x13f2, - // Entry 1C280 - 1C2BF - 0x144c, 0x149e, 0x14e8, 0x153c, 0x1583, 0xffff, 0xffff, 0x15d8, - 0xffff, 0x163c, 0xffff, 0x1690, 0x16c4, 0x16fa, 0x1735, 0xffff, - 0xffff, 0x179a, 0x17dc, 0x1818, 0xffff, 0xffff, 0xffff, 0x1894, - 0xffff, 0x1900, 0x1962, 0xffff, 0x19e6, 0x1a4b, 0x1a8c, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1b2c, 0xffff, 0xffff, 0x1bae, 0x1c09, - 0xffff, 0xffff, 0x1cad, 0x1d02, 0x1d32, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1df1, 0x1e25, 0x1e59, 0x1e95, 0x1eef, - 0xffff, 0xffff, 0x1f66, 0xffff, 0x1fae, 0xffff, 0xffff, 0x201a, - // Entry 1C2C0 - 1C2FF - 0xffff, 0x209d, 0xffff, 0xffff, 0xffff, 0xffff, 0x214f, 0xffff, - 0x21bf, 0x222d, 0x227c, 0x22b1, 0xffff, 0xffff, 0xffff, 0x231c, - 0x236c, 0x23b9, 0xffff, 0xffff, 0x2429, 0x2495, 0x24c7, 0x24fe, - 0xffff, 0xffff, 0x2562, 0x2597, 0x25e8, 0xffff, 0x2666, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2729, 0x275c, 0x278f, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2838, 0xffff, - 0xffff, 0x2886, 0xffff, 0x28d0, 0xffff, 0x291b, 0x2959, 0x2991, - 0xffff, 0x29e0, 0x2a1c, 0xffff, 0xffff, 0xffff, 0x2a84, 0x2ac4, - // Entry 1C300 - 1C33F - 0xffff, 0xffff, 0x0e62, 0x0f51, 0x11a6, 0x11d6, 0xffff, 0xffff, - 0x2052, 0x26d7, 0x0003, 0x07ba, 0x083c, 0x07fb, 0x003f, 0x0006, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06eb, 0xffff, 0x07ec, - 0x0861, 0x08f1, 0x0975, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0c14, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, - // Entry 1C340 - 1C37F - 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2798, 0x003f, - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06ef, 0xffff, - 0x07ef, 0x0864, 0x2780, 0x0978, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0c17, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, - // Entry 1C380 - 1C3BF - 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2794, 0xffff, 0xffff, 0xffff, 0xffff, 0x16e6, - 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x06f4, - 0xffff, 0x07f3, 0x0868, 0x2784, 0x097c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0c1b, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - // Entry 1C3C0 - 1C3FF - 0x1355, 0xffff, 0x13e3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x16eb, 0x0003, 0x0004, 0x0256, 0x0650, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, - 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0029, 0x0000, 0x0001, - 0x001c, 0x12a6, 0x0001, 0x0029, 0x001b, 0x0001, 0x0002, 0x04f7, - 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0029, 0x002f, - // Entry 1C400 - 1C43F - 0x0001, 0x0029, 0x002f, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0209, 0x0223, - 0x0234, 0x0245, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, - 0x0066, 0x000d, 0x0029, 0xffff, 0x003d, 0x0042, 0x0047, 0x004c, - 0x0051, 0x0056, 0x005c, 0x0061, 0x0066, 0x006b, 0x0070, 0x0075, - 0x000d, 0x0029, 0xffff, 0x007a, 0x007d, 0x0080, 0x0083, 0x0080, - 0x007a, 0x007a, 0x0083, 0x0086, 0x0089, 0x008c, 0x008f, 0x000d, - 0x0029, 0xffff, 0x0092, 0x009a, 0x00a3, 0x00a9, 0x0051, 0x0056, - // Entry 1C440 - 1C47F - 0x00af, 0x00b5, 0x00bc, 0x00c5, 0x00cd, 0x00d6, 0x0003, 0x0079, - 0x0088, 0x0097, 0x000d, 0x0029, 0xffff, 0x00df, 0x00e4, 0x00e9, - 0x00ee, 0x00f3, 0x00f8, 0x00fe, 0x0103, 0x0108, 0x010d, 0x0112, - 0x0117, 0x000d, 0x0000, 0xffff, 0x2068, 0x22e6, 0x247f, 0x2382, - 0x247f, 0x2068, 0x2068, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, - 0x000d, 0x0029, 0xffff, 0x011c, 0x0124, 0x012d, 0x0133, 0x00f3, - 0x00f8, 0x0139, 0x013f, 0x0146, 0x014f, 0x0157, 0x0160, 0x0002, - 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, - // Entry 1C480 - 1C4BF - 0x0007, 0x001c, 0x134e, 0x2100, 0x2105, 0x210a, 0x2110, 0x2115, - 0x1368, 0x0007, 0x0029, 0x008f, 0x0169, 0x0080, 0x0080, 0x007a, - 0x016c, 0x0086, 0x0007, 0x001c, 0x134e, 0x2100, 0x2105, 0x210a, - 0x2110, 0x2115, 0x1368, 0x0007, 0x001c, 0x1383, 0x2100, 0x1391, - 0x211a, 0x2124, 0x212a, 0x13b2, 0x0005, 0x00d9, 0x00e2, 0x00f4, - 0x0000, 0x00eb, 0x0007, 0x0029, 0x016f, 0x0174, 0x00e9, 0x0179, - 0x017f, 0x0184, 0x0189, 0x0007, 0x0000, 0x22f0, 0x228e, 0x247f, - 0x247f, 0x2068, 0x2485, 0x2481, 0x0007, 0x0016, 0x0361, 0x2b8d, - // Entry 1C4C0 - 1C4FF - 0x2b90, 0x2b93, 0x2b97, 0x2b9a, 0x2b9d, 0x0007, 0x0029, 0x018f, - 0x0174, 0x0197, 0x019e, 0x01a8, 0x01ae, 0x01b5, 0x0002, 0x0100, - 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x001c, 0xffff, - 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0029, 0xffff, 0x01bd, 0x01cc, - 0x01db, 0x01ea, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x001c, - 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0029, 0xffff, 0x01bd, - // Entry 1C500 - 1C53F - 0x01cc, 0x01db, 0x01ea, 0x0002, 0x0135, 0x019f, 0x0003, 0x0139, - 0x015b, 0x017d, 0x0009, 0x0146, 0x0149, 0x0143, 0x014c, 0x0152, - 0x0155, 0x0158, 0x0000, 0x014f, 0x0001, 0x0029, 0x01f9, 0x0001, - 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x0029, 0x0202, - 0x0001, 0x0029, 0x020f, 0x0001, 0x0029, 0x0219, 0x0001, 0x0029, - 0x0226, 0x0001, 0x0029, 0x01f9, 0x0009, 0x0168, 0x016b, 0x0165, - 0x016e, 0x0174, 0x0177, 0x017a, 0x0000, 0x0171, 0x0001, 0x0029, - 0x01f9, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, - // Entry 1C540 - 1C57F - 0x0029, 0x0202, 0x0001, 0x0029, 0x020f, 0x0001, 0x0029, 0x0219, - 0x0001, 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, 0x0009, 0x018a, - 0x018d, 0x0187, 0x0190, 0x0196, 0x0199, 0x019c, 0x0000, 0x0193, - 0x0001, 0x0029, 0x01f9, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, - 0x0499, 0x0001, 0x0029, 0x0202, 0x0001, 0x0029, 0x020f, 0x0001, - 0x0029, 0x0219, 0x0001, 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, - 0x0003, 0x01a3, 0x01c5, 0x01e7, 0x0009, 0x01b0, 0x01b3, 0x01ad, - 0x01b6, 0x01bc, 0x01bf, 0x01c2, 0x0000, 0x01b9, 0x0001, 0x0029, - // Entry 1C580 - 1C5BF - 0x022f, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, - 0x001c, 0x1436, 0x0001, 0x0029, 0x023a, 0x0001, 0x001c, 0x142c, - 0x0001, 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, 0x0009, 0x01d2, - 0x01d5, 0x01cf, 0x01d8, 0x01de, 0x01e1, 0x01e4, 0x0000, 0x01db, - 0x0001, 0x0029, 0x022f, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, - 0x0499, 0x0001, 0x001c, 0x1436, 0x0001, 0x0029, 0x023a, 0x0001, - 0x001c, 0x142c, 0x0001, 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, - 0x0009, 0x01f4, 0x01f7, 0x01f1, 0x01fa, 0x0200, 0x0203, 0x0206, - // Entry 1C5C0 - 1C5FF - 0x0000, 0x01fd, 0x0001, 0x0029, 0x022f, 0x0001, 0x001c, 0x0494, - 0x0001, 0x001c, 0x0499, 0x0001, 0x001c, 0x1436, 0x0001, 0x0029, - 0x023a, 0x0001, 0x001c, 0x142c, 0x0001, 0x0005, 0x130a, 0x0001, - 0x0029, 0x0241, 0x0003, 0x0218, 0x0000, 0x020d, 0x0002, 0x0210, - 0x0214, 0x0002, 0x001c, 0x1446, 0x2131, 0x0002, 0x0029, 0x0247, - 0x025b, 0x0002, 0x021b, 0x021f, 0x0002, 0x0029, 0x0269, 0x0275, - 0x0002, 0x0029, 0x026e, 0x027a, 0x0004, 0x0231, 0x022b, 0x0228, - 0x022e, 0x0001, 0x001c, 0x14a6, 0x0001, 0x001c, 0x14bf, 0x0001, - // Entry 1C600 - 1C63F - 0x0029, 0x027f, 0x0001, 0x0014, 0x146e, 0x0004, 0x0242, 0x023c, - 0x0239, 0x023f, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0253, - 0x024d, 0x024a, 0x0250, 0x0001, 0x0029, 0x0291, 0x0001, 0x0029, - 0x0291, 0x0001, 0x0029, 0x029e, 0x0001, 0x0029, 0x029e, 0x0040, - 0x0297, 0x0000, 0x0000, 0x029c, 0x02b3, 0x02ca, 0x02e1, 0x02f8, - 0x030f, 0x0326, 0x033d, 0x0354, 0x0366, 0x0381, 0x039c, 0x0000, - 0x0000, 0x0000, 0x03b2, 0x03cb, 0x03dd, 0x0000, 0x0000, 0x0000, - // Entry 1C640 - 1C67F - 0x03ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f4, 0x0408, - 0x041c, 0x0430, 0x0444, 0x0458, 0x046c, 0x0480, 0x0494, 0x04a8, - 0x04bc, 0x04d0, 0x04e4, 0x04f8, 0x050c, 0x0520, 0x0534, 0x0548, - 0x055c, 0x0570, 0x0584, 0x0000, 0x0598, 0x0000, 0x059d, 0x05b3, - 0x05c5, 0x05d7, 0x05ed, 0x05ff, 0x0611, 0x0627, 0x0639, 0x064b, - 0x0001, 0x0299, 0x0001, 0x0001, 0x0040, 0x0003, 0x02a0, 0x02a3, - 0x02a8, 0x0001, 0x0029, 0x02a7, 0x0003, 0x0029, 0x02ab, 0x02b8, - 0x02c1, 0x0002, 0x02ab, 0x02af, 0x0002, 0x0029, 0x02db, 0x02d0, - // Entry 1C680 - 1C6BF - 0x0002, 0x0029, 0x02f3, 0x02e7, 0x0003, 0x02b7, 0x02ba, 0x02bf, - 0x0001, 0x0029, 0x02a7, 0x0003, 0x0029, 0x0300, 0x02b8, 0x030b, - 0x0002, 0x02c2, 0x02c6, 0x0002, 0x0029, 0x02db, 0x02d0, 0x0002, - 0x0029, 0x02f3, 0x02e7, 0x0003, 0x02ce, 0x02d1, 0x02d6, 0x0001, - 0x0029, 0x0083, 0x0003, 0x0029, 0x0300, 0x02b8, 0x030b, 0x0002, - 0x02d9, 0x02dd, 0x0002, 0x0005, 0x1c58, 0x1c58, 0x0002, 0x0005, - 0x1c62, 0x1c62, 0x0003, 0x02e5, 0x02e8, 0x02ed, 0x0001, 0x0005, - 0x1c6d, 0x0003, 0x0029, 0x0318, 0x032b, 0x033a, 0x0002, 0x02f0, - // Entry 1C6C0 - 1C6FF - 0x02f4, 0x0002, 0x0005, 0x1cbd, 0x1cac, 0x0002, 0x0005, 0x1ce1, - 0x1ccf, 0x0003, 0x02fc, 0x02ff, 0x0304, 0x0001, 0x000b, 0x0c78, - 0x0003, 0x0029, 0x034f, 0x035c, 0x0367, 0x0002, 0x0307, 0x030b, - 0x0002, 0x0005, 0x1d1a, 0x1d1a, 0x0002, 0x0005, 0x1d27, 0x1d27, - 0x0003, 0x0313, 0x0316, 0x031b, 0x0001, 0x000b, 0x0c78, 0x0003, - 0x0029, 0x034f, 0x035c, 0x0367, 0x0002, 0x031e, 0x0322, 0x0002, - 0x0005, 0x1d1a, 0x1d1a, 0x0002, 0x0005, 0x1d27, 0x1d27, 0x0003, - 0x032a, 0x032d, 0x0332, 0x0001, 0x0005, 0x1006, 0x0003, 0x0029, - // Entry 1C700 - 1C73F - 0x0376, 0x0383, 0x038c, 0x0002, 0x0335, 0x0339, 0x0002, 0x0005, - 0x1d7e, 0x1d73, 0x0002, 0x0005, 0x1d97, 0x1d8b, 0x0003, 0x0341, - 0x0344, 0x0349, 0x0001, 0x0005, 0x1006, 0x0003, 0x0029, 0x039b, - 0x03a5, 0x03ad, 0x0002, 0x034c, 0x0350, 0x0002, 0x0005, 0x21e6, - 0x1d73, 0x0002, 0x0005, 0x21f2, 0x1d8b, 0x0003, 0x0358, 0x0000, - 0x035b, 0x0001, 0x0029, 0x0080, 0x0002, 0x035e, 0x0362, 0x0002, - 0x0005, 0x1db7, 0x1db7, 0x0002, 0x0005, 0x1dc1, 0x1dc1, 0x0004, - 0x036b, 0x036e, 0x0373, 0x037e, 0x0001, 0x001c, 0x16c6, 0x0003, - // Entry 1C740 - 1C77F - 0x0029, 0x03b9, 0x03c9, 0x03d5, 0x0002, 0x0376, 0x037a, 0x0002, - 0x0029, 0x03f5, 0x03e7, 0x0002, 0x0029, 0x0413, 0x0404, 0x0001, - 0x0029, 0x0423, 0x0004, 0x0386, 0x0389, 0x038e, 0x0399, 0x0001, - 0x001c, 0x175b, 0x0003, 0x0029, 0x0433, 0x043f, 0x0449, 0x0002, - 0x0391, 0x0395, 0x0002, 0x001e, 0x03e5, 0x03e5, 0x0002, 0x0029, - 0x0457, 0x0457, 0x0001, 0x0029, 0x0423, 0x0004, 0x03a1, 0x0000, - 0x03a4, 0x03af, 0x0001, 0x001c, 0x175b, 0x0002, 0x03a7, 0x03ab, - 0x0002, 0x001e, 0x03e5, 0x03e5, 0x0002, 0x0029, 0x0457, 0x0457, - // Entry 1C780 - 1C7BF - 0x0001, 0x0029, 0x0423, 0x0003, 0x03b6, 0x03b9, 0x03c0, 0x0001, - 0x0005, 0x1ece, 0x0005, 0x0029, 0x046c, 0x0471, 0x023a, 0x0464, - 0x0476, 0x0002, 0x03c3, 0x03c7, 0x0002, 0x0005, 0x2137, 0x1ef6, - 0x0002, 0x0005, 0x21ff, 0x1f0f, 0x0003, 0x03cf, 0x0000, 0x03d2, - 0x0001, 0x0000, 0x2008, 0x0002, 0x03d5, 0x03d9, 0x0002, 0x0005, - 0x2137, 0x1ef6, 0x0002, 0x0005, 0x21ff, 0x1f0f, 0x0003, 0x03e1, - 0x0000, 0x03e4, 0x0001, 0x0000, 0x2008, 0x0002, 0x03e7, 0x03eb, - 0x0002, 0x0029, 0x0483, 0x0483, 0x0002, 0x0029, 0x048c, 0x048c, - // Entry 1C7C0 - 1C7FF - 0x0001, 0x03f1, 0x0001, 0x0029, 0x0496, 0x0003, 0x0000, 0x03f8, - 0x03fd, 0x0003, 0x0029, 0x04a5, 0x04b6, 0x04c3, 0x0002, 0x0400, - 0x0404, 0x0002, 0x001e, 0x000f, 0x0000, 0x0002, 0x0029, 0x04e6, - 0x04d6, 0x0003, 0x0000, 0x040c, 0x0411, 0x0003, 0x0029, 0x04f7, - 0x0505, 0x050f, 0x0002, 0x0414, 0x0418, 0x0002, 0x0029, 0x051f, - 0x051f, 0x0002, 0x0029, 0x052b, 0x052b, 0x0003, 0x0000, 0x0420, - 0x0425, 0x0003, 0x0029, 0x0538, 0x0505, 0x0544, 0x0002, 0x0428, - 0x042c, 0x0002, 0x0029, 0x051f, 0x051f, 0x0002, 0x0029, 0x052b, - // Entry 1C800 - 1C83F - 0x052b, 0x0003, 0x0000, 0x0434, 0x0439, 0x0003, 0x0029, 0x0552, - 0x0560, 0x056a, 0x0002, 0x043c, 0x0440, 0x0002, 0x0029, 0x057a, - 0x057a, 0x0002, 0x0029, 0x0586, 0x0586, 0x0003, 0x0000, 0x0448, - 0x044d, 0x0003, 0x0029, 0x0593, 0x0560, 0x059f, 0x0002, 0x0450, - 0x0454, 0x0002, 0x0029, 0x057a, 0x057a, 0x0002, 0x0029, 0x0586, - 0x0586, 0x0003, 0x0000, 0x045c, 0x0461, 0x0003, 0x0029, 0x0593, - 0x0560, 0x059f, 0x0002, 0x0464, 0x0468, 0x0002, 0x0029, 0x057a, - 0x057a, 0x0002, 0x0029, 0x0586, 0x0586, 0x0003, 0x0000, 0x0470, - // Entry 1C840 - 1C87F - 0x0475, 0x0003, 0x0029, 0x05ad, 0x05bd, 0x05c9, 0x0002, 0x0478, - 0x047c, 0x0002, 0x0029, 0x05db, 0x05db, 0x0002, 0x0006, 0x00fe, - 0x00fe, 0x0003, 0x0000, 0x0484, 0x0489, 0x0003, 0x0029, 0x05e9, - 0x05f7, 0x0601, 0x0002, 0x048c, 0x0490, 0x0002, 0x0029, 0x0611, - 0x0611, 0x0002, 0x0029, 0x061d, 0x061d, 0x0003, 0x0000, 0x0498, - 0x049d, 0x0003, 0x0029, 0x062a, 0x05f7, 0x0636, 0x0002, 0x04a0, - 0x04a4, 0x0002, 0x0029, 0x0611, 0x0611, 0x0002, 0x0029, 0x061d, - 0x061d, 0x0003, 0x0000, 0x04ac, 0x04b1, 0x0003, 0x0029, 0x0644, - // Entry 1C880 - 1C8BF - 0x0657, 0x0666, 0x0002, 0x04b4, 0x04b8, 0x0002, 0x0029, 0x067b, - 0x067b, 0x0002, 0x0029, 0x068c, 0x068c, 0x0003, 0x0000, 0x04c0, - 0x04c5, 0x0003, 0x0029, 0x069e, 0x06ad, 0x06b8, 0x0002, 0x04c8, - 0x04cc, 0x0002, 0x0029, 0x06c9, 0x06c9, 0x0002, 0x0029, 0x06d6, - 0x06d6, 0x0003, 0x0000, 0x04d4, 0x04d9, 0x0003, 0x0029, 0x06e4, - 0x06ad, 0x06f1, 0x0002, 0x04dc, 0x04e0, 0x0002, 0x0029, 0x06c9, - 0x06c9, 0x0002, 0x0029, 0x06d6, 0x06d6, 0x0003, 0x0000, 0x04e8, - 0x04ed, 0x0003, 0x0029, 0x0700, 0x070f, 0x071a, 0x0002, 0x04f0, - // Entry 1C8C0 - 1C8FF - 0x04f4, 0x0002, 0x0029, 0x072b, 0x072b, 0x0002, 0x0029, 0x0738, - 0x0738, 0x0003, 0x0000, 0x04fc, 0x0501, 0x0003, 0x0029, 0x0746, - 0x0754, 0x075e, 0x0002, 0x0504, 0x0508, 0x0002, 0x0029, 0x076e, - 0x076e, 0x0002, 0x0029, 0x077a, 0x077a, 0x0003, 0x0000, 0x0510, - 0x0515, 0x0003, 0x0029, 0x0787, 0x0754, 0x0793, 0x0002, 0x0518, - 0x051c, 0x0002, 0x0029, 0x076e, 0x076e, 0x0002, 0x0029, 0x077a, - 0x077a, 0x0003, 0x0000, 0x0524, 0x0529, 0x0003, 0x0029, 0x07a1, - 0x07b1, 0x07bd, 0x0002, 0x052c, 0x0530, 0x0002, 0x0029, 0x07cf, - // Entry 1C900 - 1C93F - 0x07cf, 0x0002, 0x0029, 0x07dd, 0x07dd, 0x0003, 0x0000, 0x0538, - 0x053d, 0x0003, 0x0029, 0x07ec, 0x07fa, 0x0804, 0x0002, 0x0540, - 0x0544, 0x0002, 0x0029, 0x0814, 0x0814, 0x0002, 0x0029, 0x0820, - 0x0820, 0x0003, 0x0000, 0x054c, 0x0551, 0x0003, 0x0029, 0x082d, - 0x07fa, 0x0839, 0x0002, 0x0554, 0x0558, 0x0002, 0x0029, 0x0814, - 0x0814, 0x0002, 0x0029, 0x0820, 0x0820, 0x0003, 0x0000, 0x0560, - 0x0565, 0x0003, 0x0029, 0x0847, 0x0858, 0x0865, 0x0002, 0x0568, - 0x056c, 0x0002, 0x0029, 0x0887, 0x0878, 0x0002, 0x0029, 0x08a7, - // Entry 1C940 - 1C97F - 0x0897, 0x0003, 0x0000, 0x0574, 0x0579, 0x0003, 0x0029, 0x08b8, - 0x08c7, 0x08d2, 0x0002, 0x057c, 0x0580, 0x0002, 0x0029, 0x08e3, - 0x08e3, 0x0002, 0x0029, 0x08f0, 0x08f0, 0x0003, 0x0000, 0x0588, - 0x058d, 0x0003, 0x0029, 0x08fe, 0x08c7, 0x090b, 0x0002, 0x0590, - 0x0594, 0x0002, 0x0029, 0x08e3, 0x08e3, 0x0002, 0x0029, 0x08f0, - 0x08f0, 0x0001, 0x059a, 0x0001, 0x001e, 0x002c, 0x0003, 0x05a1, - 0x05a4, 0x05a8, 0x0001, 0x0006, 0x03db, 0x0002, 0x0029, 0xffff, - 0x091a, 0x0002, 0x05ab, 0x05af, 0x0002, 0x0006, 0x279c, 0x03ea, - // Entry 1C980 - 1C9BF - 0x0002, 0x0006, 0x27a9, 0x0403, 0x0003, 0x05b7, 0x0000, 0x05ba, - 0x0001, 0x0000, 0x2143, 0x0002, 0x05bd, 0x05c1, 0x0002, 0x001e, - 0x048c, 0x048c, 0x0002, 0x0029, 0x0925, 0x0925, 0x0003, 0x05c9, - 0x0000, 0x05cc, 0x0001, 0x0000, 0x2143, 0x0002, 0x05cf, 0x05d3, - 0x0002, 0x001e, 0x048c, 0x048c, 0x0002, 0x0029, 0x0925, 0x0925, - 0x0003, 0x05db, 0x05de, 0x05e2, 0x0001, 0x001c, 0x0b08, 0x0002, - 0x0029, 0xffff, 0x092f, 0x0002, 0x05e5, 0x05e9, 0x0002, 0x0029, - 0x094a, 0x093c, 0x0002, 0x0029, 0x0968, 0x0959, 0x0003, 0x05f1, - // Entry 1C9C0 - 1C9FF - 0x0000, 0x05f4, 0x0001, 0x000b, 0x1250, 0x0002, 0x05f7, 0x05fb, - 0x0002, 0x001e, 0x049e, 0x049e, 0x0002, 0x0029, 0x0978, 0x0978, - 0x0003, 0x0603, 0x0000, 0x0606, 0x0001, 0x000b, 0x1250, 0x0002, - 0x0609, 0x060d, 0x0002, 0x001e, 0x049e, 0x049e, 0x0002, 0x0029, - 0x0978, 0x0978, 0x0003, 0x0615, 0x0618, 0x061c, 0x0001, 0x001c, - 0x1f87, 0x0002, 0x0006, 0xffff, 0x04b8, 0x0002, 0x061f, 0x0623, - 0x0002, 0x0029, 0x0993, 0x0984, 0x0002, 0x0029, 0x09b3, 0x09a3, - 0x0003, 0x062b, 0x0000, 0x062e, 0x0001, 0x0000, 0x2002, 0x0002, - // Entry 1CA00 - 1CA3F - 0x0631, 0x0635, 0x0002, 0x001e, 0x04a9, 0x04a9, 0x0002, 0x0029, - 0x09c4, 0x09c4, 0x0003, 0x063d, 0x0000, 0x0640, 0x0001, 0x0000, - 0x2002, 0x0002, 0x0643, 0x0647, 0x0002, 0x001e, 0x04a9, 0x04a9, - 0x0002, 0x0029, 0x09c4, 0x09c4, 0x0001, 0x064d, 0x0001, 0x0029, - 0x09ce, 0x0004, 0x0655, 0x065a, 0x065f, 0x066e, 0x0003, 0x0000, - 0x1dc7, 0x238b, 0x2536, 0x0003, 0x0029, 0x09db, 0x09ea, 0x0a03, - 0x0002, 0x0000, 0x0662, 0x0003, 0x0000, 0x0669, 0x0666, 0x0001, - 0x0029, 0x0a1c, 0x0003, 0x0029, 0xffff, 0x0a37, 0x0a54, 0x0002, - // Entry 1CA40 - 1CA7F - 0x0837, 0x0671, 0x0003, 0x070b, 0x07a1, 0x0675, 0x0094, 0x0029, - 0x0a70, 0x0a87, 0x0aa2, 0x0abe, 0x0b00, 0x0b62, 0x0bae, 0x0c09, - 0x0c7b, 0x0cf2, 0x0d70, 0x0dde, 0x0e26, 0x0e69, 0x0eb0, 0x0f0e, - 0x0f75, 0x0fc5, 0x1022, 0x1098, 0x111a, 0x118a, 0x11f5, 0x124a, - 0x129a, 0x12da, 0x12ec, 0x1313, 0x134f, 0x1382, 0x13c2, 0x13f0, - 0x143b, 0x1482, 0x14ce, 0x150e, 0x1527, 0x1553, 0x15a6, 0x15fe, - 0x1632, 0x1643, 0x1661, 0x1692, 0x16da, 0x1707, 0x176a, 0x17b4, - 0x17f2, 0x185b, 0x18b6, 0x18ec, 0x1908, 0x193c, 0x1953, 0x1979, - // Entry 1CA80 - 1CABF - 0x19b3, 0x19cd, 0x1a0f, 0x1a85, 0x1add, 0x1af8, 0x1b26, 0x1b85, - 0x1bd3, 0x1c07, 0x1c22, 0x1c3d, 0x1c52, 0x1c6f, 0x1c8d, 0x1cbe, - 0x1d07, 0x1d53, 0x1d9d, 0x1dfa, 0x1e58, 0x1e79, 0x1ead, 0x1ee3, - 0x1f0c, 0x1f4e, 0x1f68, 0x1f98, 0x1fd6, 0x2003, 0x203d, 0x2051, - 0x2066, 0x207c, 0x20ab, 0x20e7, 0x2115, 0x217f, 0x21e7, 0x223e, - 0x2278, 0x228c, 0x229d, 0x22c8, 0x2329, 0x2384, 0x23c2, 0x23d2, - 0x240b, 0x2474, 0x24c6, 0x2510, 0x2550, 0x2561, 0x2593, 0x25e0, - 0x262b, 0x2669, 0x26a5, 0x26ff, 0x2713, 0x2726, 0x273b, 0x274f, - // Entry 1CAC0 - 1CAFF - 0x2776, 0x27c5, 0x280e, 0x2844, 0x2859, 0x2877, 0x2892, 0x28ac, - 0x28c0, 0x28d1, 0x28f6, 0x292e, 0x2946, 0x296b, 0x29a1, 0x29cc, - 0x2a14, 0x2a39, 0x2a8b, 0x2ae2, 0x2b1c, 0x2b48, 0x2ba0, 0x2be0, - 0x2bf2, 0x2c07, 0x2c35, 0x2c88, 0x0094, 0x0029, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0ae2, 0x0b50, 0x0b9a, 0x0bea, 0x0c5b, 0x0ccf, - 0x0d4c, 0x0dcc, 0x0e16, 0x0e5a, 0x0e9b, 0x0eee, 0x0f62, 0x0faf, - 0x1005, 0x1070, 0x10fc, 0x116a, 0x11de, 0x1237, 0x1284, 0xffff, - 0xffff, 0x12ff, 0xffff, 0x136c, 0xffff, 0x13dd, 0x142a, 0x1471, - // Entry 1CB00 - 1CB3F - 0x14b8, 0xffff, 0xffff, 0x153f, 0x158f, 0x15ee, 0xffff, 0xffff, - 0xffff, 0x1678, 0xffff, 0x16ed, 0x174f, 0xffff, 0x17d5, 0x1840, - 0x18a5, 0xffff, 0xffff, 0xffff, 0xffff, 0x1966, 0xffff, 0xffff, - 0x19ef, 0x1a63, 0xffff, 0xffff, 0x1b0b, 0x1b70, 0x1bc3, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cad, 0x1cf4, 0x1d41, - 0x1d8b, 0x1dd5, 0xffff, 0xffff, 0x1e9c, 0xffff, 0x1ef5, 0xffff, - 0xffff, 0x1f83, 0xffff, 0x1ff0, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2097, 0xffff, 0x20f9, 0x2161, 0x21cf, 0x222b, 0xffff, 0xffff, - // Entry 1CB40 - 1CB7F - 0xffff, 0x22ae, 0x2310, 0x236f, 0xffff, 0xffff, 0x23ec, 0x245d, - 0x24b6, 0x24fa, 0xffff, 0xffff, 0x257f, 0x25cf, 0x2616, 0xffff, - 0x2682, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2762, 0x27b3, - 0x27fd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x28e4, 0xffff, 0xffff, 0x295a, 0xffff, 0x29b2, 0xffff, 0x2a26, - 0x2a73, 0x2acf, 0xffff, 0x2b31, 0x2b8a, 0xffff, 0xffff, 0xffff, - 0x2c22, 0x2c6f, 0x0094, 0x0029, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0b28, 0x0b7e, 0x0bcc, 0x0c32, 0x0ca5, 0x0d1f, 0x0d9e, 0x0dfa, - // Entry 1CB80 - 1CBBF - 0x0e40, 0x0e82, 0x0ecf, 0x0f38, 0x0f92, 0x0fe5, 0x1049, 0x10ca, - 0x1142, 0x11b4, 0x1216, 0x1267, 0x12ba, 0xffff, 0xffff, 0x1331, - 0xffff, 0x13a2, 0xffff, 0x140d, 0x1456, 0x149d, 0x14ee, 0xffff, - 0xffff, 0x1571, 0x15c7, 0x1618, 0xffff, 0xffff, 0xffff, 0x16b6, - 0xffff, 0x172b, 0x178f, 0xffff, 0x1819, 0x1880, 0x18d1, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1996, 0xffff, 0xffff, 0x1a39, 0x1ab1, - 0xffff, 0xffff, 0x1b4b, 0x1ba4, 0x1bed, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1cd9, 0x1d24, 0x1d6f, 0x1db9, 0x1e29, - // Entry 1CBC0 - 1CBFF - 0xffff, 0xffff, 0x1ec8, 0xffff, 0x1f2d, 0xffff, 0xffff, 0x1fb7, - 0xffff, 0x2020, 0xffff, 0xffff, 0xffff, 0xffff, 0x20c9, 0xffff, - 0x213b, 0x21a7, 0x2209, 0x225b, 0xffff, 0xffff, 0xffff, 0x22ec, - 0x234c, 0x23a3, 0xffff, 0xffff, 0x2434, 0x2495, 0x24e0, 0x2530, - 0xffff, 0xffff, 0x25b1, 0x25fb, 0x264a, 0xffff, 0x26d2, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2795, 0x27e1, 0x2829, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2912, 0xffff, - 0xffff, 0x2986, 0xffff, 0x29f0, 0xffff, 0x2a56, 0x2aad, 0x2aff, - // Entry 1CC00 - 1CC3F - 0xffff, 0x2b69, 0x2bc0, 0xffff, 0xffff, 0xffff, 0x2c52, 0x2cab, - 0x0003, 0x083b, 0x08aa, 0x086e, 0x0031, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, - // Entry 1CC40 - 1CC7F - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, - 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x27b7, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, - // Entry 1CC80 - 1CCBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, - 0x0173, 0x023d, 0x0008, 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0025, 0x003f, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1CCC0 - 1CCFF - 0x0000, 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, - 0x0013, 0x0466, 0x0001, 0x0013, 0x0477, 0x0001, 0x0015, 0x0000, - 0x0001, 0x0017, 0x03cc, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x002e, 0x0000, 0x0000, 0x0004, 0x003c, 0x0036, 0x0033, - 0x0039, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, - 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, 0x0008, 0x0048, 0x007f, - 0x00a4, 0x00b8, 0x012c, 0x0151, 0x0162, 0x0000, 0x0002, 0x004b, - 0x006d, 0x0003, 0x004f, 0x0000, 0x005e, 0x000d, 0x0005, 0xffff, - // Entry 1CD00 - 1CD3F - 0x0636, 0x20fa, 0x220d, 0x2102, 0x21d6, 0x210a, 0x210e, 0x2112, - 0x2116, 0x21da, 0x21de, 0x2212, 0x000d, 0x0016, 0xffff, 0x02c1, - 0x2ba1, 0x2ba9, 0x2baf, 0x2bb5, 0x2bb9, 0x2bbe, 0x2bc3, 0x2bcc, - 0x2bd7, 0x2be0, 0x2bea, 0x0002, 0x0000, 0x0070, 0x000d, 0x0000, - 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, 0x2483, - 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x0002, 0x0082, 0x0098, - 0x0003, 0x0086, 0x0000, 0x008f, 0x0007, 0x001c, 0x0108, 0x2143, - 0x2148, 0x214c, 0x2150, 0x2154, 0x2158, 0x0007, 0x002a, 0x0000, - // Entry 1CD40 - 1CD7F - 0x0008, 0x0012, 0x001c, 0x0025, 0x002f, 0x0037, 0x0002, 0x0000, - 0x009b, 0x0007, 0x0000, 0x2481, 0x247f, 0x22f0, 0x247f, 0x22f0, - 0x22e6, 0x2481, 0x0001, 0x00a6, 0x0003, 0x00aa, 0x0000, 0x00b1, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, - 0x0016, 0xffff, 0x036a, 0x0375, 0x0380, 0x038b, 0x0002, 0x00bb, - 0x0105, 0x0003, 0x00bf, 0x0000, 0x00e2, 0x000a, 0x00cd, 0x00d0, - 0x00ca, 0x00d3, 0x00d6, 0x00dc, 0x00df, 0x0000, 0x0000, 0x00d9, - 0x0001, 0x0016, 0x0396, 0x0001, 0x0016, 0x03a2, 0x0001, 0x002a, - // Entry 1CD80 - 1CDBF - 0x0041, 0x0001, 0x002a, 0x0046, 0x0001, 0x002a, 0x004f, 0x0001, - 0x002a, 0x0057, 0x0001, 0x002a, 0x0063, 0x0001, 0x002a, 0x006a, - 0x000a, 0x00f0, 0x00f3, 0x00ed, 0x00f6, 0x00f9, 0x00ff, 0x0102, - 0x0000, 0x0000, 0x00fc, 0x0001, 0x0016, 0x0396, 0x0001, 0x002a, - 0x0071, 0x0001, 0x002a, 0x0057, 0x0001, 0x002a, 0x0046, 0x0001, - 0x002a, 0x004f, 0x0001, 0x002a, 0x0057, 0x0001, 0x002a, 0x0063, - 0x0001, 0x002a, 0x006a, 0x0003, 0x0000, 0x0000, 0x0109, 0x000a, - 0x0117, 0x011a, 0x0114, 0x011d, 0x0120, 0x0126, 0x0129, 0x0000, - // Entry 1CDC0 - 1CDFF - 0x0000, 0x0123, 0x0001, 0x0016, 0x0396, 0x0001, 0x0016, 0x03eb, - 0x0001, 0x002a, 0x007e, 0x0001, 0x002a, 0x0087, 0x0001, 0x0016, - 0x03f5, 0x0001, 0x002a, 0x007e, 0x0001, 0x002a, 0x008d, 0x0001, - 0x0016, 0x040d, 0x0003, 0x013b, 0x0146, 0x0130, 0x0002, 0x0133, - 0x0137, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x002a, 0x0093, - 0x00b6, 0x0002, 0x013e, 0x0142, 0x0002, 0x0016, 0x0413, 0x0434, - 0x0002, 0x002a, 0x00d5, 0x00de, 0x0002, 0x0149, 0x014d, 0x0002, - 0x0016, 0x0413, 0x0434, 0x0002, 0x002a, 0x00e4, 0x00e8, 0x0004, - // Entry 1CE00 - 1CE3F - 0x015f, 0x0159, 0x0156, 0x015c, 0x0001, 0x0016, 0x0460, 0x0001, - 0x0013, 0x06b1, 0x0001, 0x0016, 0x0470, 0x0001, 0x0007, 0x0277, - 0x0004, 0x0170, 0x016a, 0x0167, 0x016d, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0040, 0x01b4, 0x0000, 0x0000, 0x01b9, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01c4, 0x0000, 0x0000, 0x01cf, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x01da, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1CE40 - 1CE7F - 0x01ec, 0x0000, 0x0000, 0x01f4, 0x0000, 0x0000, 0x01fc, 0x0000, - 0x0000, 0x0204, 0x0000, 0x0000, 0x020c, 0x0000, 0x0000, 0x0214, - 0x0000, 0x0000, 0x021c, 0x0000, 0x0000, 0x0000, 0x0224, 0x0000, - 0x0229, 0x0000, 0x0000, 0x022e, 0x0000, 0x0000, 0x0233, 0x0000, - 0x0000, 0x0238, 0x0001, 0x01b6, 0x0001, 0x0016, 0x0478, 0x0002, - 0x01bc, 0x01bf, 0x0001, 0x002a, 0x00eb, 0x0003, 0x002a, 0x00f0, - 0x00fc, 0x0107, 0x0002, 0x01c7, 0x01ca, 0x0001, 0x002a, 0x0115, - 0x0003, 0x002a, 0x011b, 0x0128, 0x0134, 0x0002, 0x01d2, 0x01d5, - // Entry 1CE80 - 1CEBF - 0x0001, 0x002a, 0x0143, 0x0003, 0x002a, 0x0149, 0x0156, 0x0162, - 0x0002, 0x01dd, 0x01e0, 0x0001, 0x0016, 0x06ae, 0x0005, 0x002a, - 0x017d, 0x0186, 0x018b, 0x0171, 0x0191, 0x0001, 0x01e9, 0x0001, - 0x002a, 0x019c, 0x0002, 0x0000, 0x01ef, 0x0003, 0x002a, 0x01a5, - 0x01ba, 0x01ce, 0x0002, 0x0000, 0x01f7, 0x0003, 0x002a, 0x01e5, - 0x01fc, 0x0212, 0x0002, 0x0000, 0x01ff, 0x0003, 0x002a, 0x022b, - 0x0242, 0x0258, 0x0002, 0x0000, 0x0207, 0x0003, 0x002a, 0x0271, - 0x0287, 0x029c, 0x0002, 0x0000, 0x020f, 0x0003, 0x002a, 0x02b4, - // Entry 1CEC0 - 1CEFF - 0x02cb, 0x02e1, 0x0002, 0x0000, 0x0217, 0x0003, 0x002a, 0x02fa, - 0x030f, 0x0323, 0x0002, 0x0000, 0x021f, 0x0003, 0x002a, 0x033a, - 0x0351, 0x0367, 0x0001, 0x0226, 0x0001, 0x002a, 0x0380, 0x0001, - 0x022b, 0x0001, 0x002a, 0x038d, 0x0001, 0x0230, 0x0001, 0x002a, - 0x0395, 0x0001, 0x0235, 0x0001, 0x0009, 0x030c, 0x0001, 0x023a, - 0x0001, 0x0000, 0x1dc2, 0x0004, 0x0242, 0x0000, 0x0000, 0x0246, - 0x0002, 0x0000, 0x1dc7, 0x238b, 0x0002, 0x041b, 0x0249, 0x0003, - 0x024d, 0x0381, 0x02e7, 0x0098, 0x002a, 0xffff, 0xffff, 0xffff, - // Entry 1CF00 - 1CF3F - 0xffff, 0x0426, 0x047e, 0x04e6, 0x0520, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0572, 0x05ca, 0xffff, 0x061f, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1CF40 - 1CF7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0677, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1CF80 - 1CFBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x039d, 0x04b2, 0x0098, 0x002a, 0x03cb, - 0x03de, 0x03f7, 0x040e, 0x043e, 0x048a, 0x04f4, 0x0536, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1CFC0 - 1CFFF - 0xffff, 0xffff, 0xffff, 0xffff, 0x058a, 0x05e1, 0xffff, 0x0637, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0685, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1D000 - 1D03F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03a7, 0x04be, 0x0098, - 0x002a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0460, 0x04a0, 0x050c, - 0x0556, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1D040 - 1D07F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x05ac, 0x0602, - 0xffff, 0x0659, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1D080 - 1D0BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x069d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1D0C0 - 1D0FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03bb, - 0x04d4, 0x0003, 0x041f, 0x0485, 0x0452, 0x0031, 0x0016, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, - // Entry 1D100 - 1D13F - 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, - 0x1b65, 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1D140 - 1D17F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1b15, 0x1b69, 0xffff, 0x1bd3, 0x0003, 0x0004, - 0x0249, 0x0651, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000f, 0x003a, 0x0000, 0x0240, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, 0x0029, 0x0004, 0x0026, - // Entry 1D180 - 1D1BF - 0x0020, 0x001d, 0x0023, 0x0001, 0x002a, 0x06b1, 0x0001, 0x002a, - 0x06c3, 0x0001, 0x002a, 0x06cf, 0x0001, 0x002a, 0x06da, 0x0004, - 0x0037, 0x0031, 0x002e, 0x0034, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0043, 0x00a8, 0x00ff, 0x0134, 0x01ed, 0x020d, 0x021e, - 0x022f, 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, - 0x000d, 0x002a, 0xffff, 0x06e8, 0x06fb, 0x070e, 0x071e, 0x0731, - 0x0738, 0x0742, 0x0752, 0x0762, 0x0772, 0x0782, 0x078c, 0x000d, - // Entry 1D1C0 - 1D1FF - 0x002a, 0xffff, 0x0799, 0x07a0, 0x07a7, 0x07ae, 0x0731, 0x07b2, - 0x07b9, 0x07c0, 0x07c4, 0x07c0, 0x07c8, 0x07cc, 0x000d, 0x002a, - 0xffff, 0x07d3, 0x07ef, 0x070e, 0x071e, 0x0731, 0x0738, 0x0742, - 0x0752, 0x080b, 0x0827, 0x083d, 0x0853, 0x0003, 0x007b, 0x008a, - 0x0099, 0x000d, 0x002a, 0xffff, 0x06e8, 0x06fb, 0x070e, 0x071e, - 0x0731, 0x0738, 0x0742, 0x0752, 0x0762, 0x0772, 0x0782, 0x078c, - 0x000d, 0x002a, 0xffff, 0x0799, 0x07a0, 0x07a7, 0x07ae, 0x0731, - 0x07b2, 0x07b9, 0x07c0, 0x07c4, 0x07c0, 0x07c8, 0x07cc, 0x000d, - // Entry 1D200 - 1D23F - 0x002a, 0xffff, 0x07d3, 0x07ef, 0x070e, 0x071e, 0x0731, 0x0738, - 0x0742, 0x0752, 0x080b, 0x0827, 0x083d, 0x0853, 0x0002, 0x00ab, - 0x00d5, 0x0005, 0x00b1, 0x00ba, 0x00cc, 0x0000, 0x00c3, 0x0007, - 0x002a, 0x086c, 0x0876, 0x0880, 0x088d, 0x0897, 0x08a4, 0x08b4, - 0x0007, 0x002a, 0x08be, 0x08c2, 0x08c9, 0x08d0, 0x08d7, 0x08de, - 0x08e5, 0x0007, 0x002a, 0x08be, 0x08c2, 0x08c9, 0x08d0, 0x08d7, - 0x08de, 0x08e5, 0x0007, 0x002a, 0x08e9, 0x08fc, 0x090f, 0x0925, - 0x0938, 0x094e, 0x0967, 0x0005, 0x00db, 0x00e4, 0x00f6, 0x0000, - // Entry 1D240 - 1D27F - 0x00ed, 0x0007, 0x002a, 0x086c, 0x0876, 0x0880, 0x088d, 0x0897, - 0x08a4, 0x08b4, 0x0007, 0x002a, 0x08be, 0x08c2, 0x08c9, 0x08d0, - 0x08d7, 0x08de, 0x08e5, 0x0007, 0x002a, 0x08be, 0x08c2, 0x08c9, - 0x08d0, 0x08d7, 0x08de, 0x08e5, 0x0007, 0x002a, 0x08e9, 0x08fc, - 0x090f, 0x0925, 0x0938, 0x094e, 0x0967, 0x0002, 0x0102, 0x011b, - 0x0003, 0x0106, 0x010d, 0x0114, 0x0005, 0x0000, 0xffff, 0x04e3, - 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x002a, 0xffff, 0x097a, 0x09a0, 0x09c3, - // Entry 1D280 - 1D2BF - 0x09ec, 0x0003, 0x011f, 0x0126, 0x012d, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x002a, 0xffff, 0x097a, 0x09a0, - 0x09c3, 0x09ec, 0x0002, 0x0137, 0x0192, 0x0003, 0x013b, 0x0158, - 0x0175, 0x0007, 0x0146, 0x0149, 0x0143, 0x014c, 0x014f, 0x0152, - 0x0155, 0x0001, 0x002a, 0x0a0f, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x002a, 0x0a2e, 0x0001, 0x002a, 0x0a3e, - 0x0001, 0x002a, 0x0a4e, 0x0001, 0x002a, 0x0a5e, 0x0007, 0x0163, - // Entry 1D2C0 - 1D2FF - 0x0166, 0x0160, 0x0169, 0x016c, 0x016f, 0x0172, 0x0001, 0x002a, - 0x0a71, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x002a, 0x0a2e, 0x0001, 0x002a, 0x0a3e, 0x0001, 0x002a, 0x0a4e, - 0x0001, 0x002a, 0x0a5e, 0x0007, 0x0180, 0x0183, 0x017d, 0x0186, - 0x0189, 0x018c, 0x018f, 0x0001, 0x002a, 0x0a0f, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x002a, 0x0a2e, 0x0001, - 0x002a, 0x0a3e, 0x0001, 0x002a, 0x0a4e, 0x0001, 0x002a, 0x0a5e, - 0x0003, 0x0196, 0x01b3, 0x01d0, 0x0007, 0x01a1, 0x01a4, 0x019e, - // Entry 1D300 - 1D33F - 0x01a7, 0x01aa, 0x01ad, 0x01b0, 0x0001, 0x002a, 0x0a0f, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x002a, 0x0a2e, - 0x0001, 0x002a, 0x0a3e, 0x0001, 0x002a, 0x0a4e, 0x0001, 0x002a, - 0x0a5e, 0x0007, 0x01be, 0x01c1, 0x01bb, 0x01c4, 0x01c7, 0x01ca, - 0x01cd, 0x0001, 0x002a, 0x0a0f, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x002a, 0x0a2e, 0x0001, 0x002a, 0x0a3e, - 0x0001, 0x002a, 0x0a4e, 0x0001, 0x002a, 0x0a5e, 0x0007, 0x01db, - 0x01de, 0x01d8, 0x01e1, 0x01e4, 0x01e7, 0x01ea, 0x0001, 0x002a, - // Entry 1D340 - 1D37F - 0x0a0f, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x002a, 0x0a88, 0x0001, 0x002a, 0x0a95, 0x0001, 0x002a, 0x0aa2, - 0x0001, 0x002a, 0x0aaf, 0x0003, 0x01fc, 0x0207, 0x01f1, 0x0002, - 0x01f4, 0x01f8, 0x0002, 0x002a, 0x0ac2, 0x0b18, 0x0002, 0x002a, - 0x0ae8, 0x0b2b, 0x0002, 0x01ff, 0x0203, 0x0002, 0x002a, 0x0b4b, - 0x0b79, 0x0002, 0x002a, 0x0b66, 0x0b82, 0x0001, 0x0209, 0x0002, - 0x002a, 0x0b91, 0x0ba0, 0x0004, 0x021b, 0x0215, 0x0212, 0x0218, - 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, - // Entry 1D380 - 1D3BF - 0x01f2, 0x0001, 0x0000, 0x237b, 0x0004, 0x022c, 0x0226, 0x0223, - 0x0229, 0x0001, 0x002a, 0x0ba7, 0x0001, 0x002a, 0x0bb7, 0x0001, - 0x002a, 0x0bc4, 0x0001, 0x002a, 0x0bcf, 0x0004, 0x023d, 0x0237, - 0x0234, 0x023a, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0040, - 0x028a, 0x0000, 0x0000, 0x028f, 0x02a6, 0x02bd, 0x02d4, 0x02eb, - 0x02fd, 0x030f, 0x0326, 0x033d, 0x0354, 0x036f, 0x038a, 0x0000, - // Entry 1D3C0 - 1D3FF - 0x0000, 0x0000, 0x03a5, 0x03be, 0x03d7, 0x0000, 0x0000, 0x0000, - 0x03f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f5, 0x0409, - 0x041d, 0x0431, 0x0445, 0x0459, 0x046d, 0x0481, 0x0495, 0x04a9, - 0x04bd, 0x04d1, 0x04e5, 0x04f9, 0x050d, 0x0521, 0x0535, 0x0549, - 0x055d, 0x0571, 0x0585, 0x0000, 0x0599, 0x0000, 0x059e, 0x05b4, - 0x05c6, 0x05d8, 0x05ee, 0x0600, 0x0612, 0x0628, 0x063a, 0x064c, - 0x0001, 0x028c, 0x0001, 0x002a, 0x0bd7, 0x0003, 0x0293, 0x0296, - 0x029b, 0x0001, 0x002a, 0x0be1, 0x0003, 0x002a, 0x0bee, 0x0c08, - // Entry 1D400 - 1D43F - 0x0c1c, 0x0002, 0x029e, 0x02a2, 0x0002, 0x002a, 0x0c39, 0x0c39, - 0x0002, 0x002a, 0x0c53, 0x0c53, 0x0003, 0x02aa, 0x02ad, 0x02b2, - 0x0001, 0x002a, 0x0c77, 0x0003, 0x002a, 0x0bee, 0x0c08, 0x0c1c, - 0x0002, 0x02b5, 0x02b9, 0x0002, 0x002a, 0x0c39, 0x0c39, 0x0002, - 0x002a, 0x0c53, 0x0c53, 0x0003, 0x02c1, 0x02c4, 0x02c9, 0x0001, - 0x002a, 0x0c77, 0x0003, 0x002a, 0x0bee, 0x0c08, 0x0c1c, 0x0002, - 0x02cc, 0x02d0, 0x0002, 0x002a, 0x0c7c, 0x0c39, 0x0002, 0x002a, - 0x0caf, 0x0c8e, 0x0003, 0x02d8, 0x02db, 0x02e0, 0x0001, 0x002a, - // Entry 1D440 - 1D47F - 0x0cc1, 0x0003, 0x002a, 0x0cdd, 0x0d0f, 0x0d2f, 0x0002, 0x02e3, - 0x02e7, 0x0002, 0x002a, 0x0d5e, 0x0d5e, 0x0002, 0x002a, 0x0d87, - 0x0d87, 0x0003, 0x02ef, 0x0000, 0x02f2, 0x0001, 0x002a, 0x0dba, - 0x0002, 0x02f5, 0x02f9, 0x0002, 0x002a, 0x0dd1, 0x0dd1, 0x0002, - 0x002a, 0x0df4, 0x0df4, 0x0003, 0x0301, 0x0000, 0x0304, 0x0001, - 0x002a, 0x0dba, 0x0002, 0x0307, 0x030b, 0x0002, 0x002a, 0x0dd1, - 0x0dd1, 0x0002, 0x002a, 0x0df4, 0x0df4, 0x0003, 0x0313, 0x0316, - 0x031b, 0x0001, 0x002a, 0x0e21, 0x0003, 0x002a, 0x0e31, 0x0e4b, - // Entry 1D480 - 1D4BF - 0x0e5f, 0x0002, 0x031e, 0x0322, 0x0002, 0x002a, 0x0e7c, 0x0e7c, - 0x0002, 0x002a, 0x0e99, 0x0e99, 0x0003, 0x032a, 0x032d, 0x0332, - 0x0001, 0x002a, 0x0ec0, 0x0003, 0x002a, 0x0e31, 0x0e4b, 0x0e5f, - 0x0002, 0x0335, 0x0339, 0x0002, 0x002a, 0x0e7c, 0x0e7c, 0x0002, - 0x002a, 0x0e99, 0x0e99, 0x0003, 0x0341, 0x0344, 0x0349, 0x0001, - 0x002a, 0x0ec0, 0x0003, 0x002a, 0x0e31, 0x0e4b, 0x0e5f, 0x0002, - 0x034c, 0x0350, 0x0002, 0x002a, 0x0e7c, 0x0e7c, 0x0002, 0x002a, - 0x0e99, 0x0e99, 0x0004, 0x0359, 0x035c, 0x0361, 0x036c, 0x0001, - // Entry 1D4C0 - 1D4FF - 0x002a, 0x0ec5, 0x0003, 0x002a, 0x0ee1, 0x0f04, 0x0f21, 0x0002, - 0x0364, 0x0368, 0x0002, 0x002a, 0x0f47, 0x0f47, 0x0002, 0x002a, - 0x0f6d, 0x0f6d, 0x0001, 0x002a, 0x0f9d, 0x0004, 0x0374, 0x0377, - 0x037c, 0x0387, 0x0001, 0x002a, 0x0fc7, 0x0003, 0x002a, 0x0ee1, - 0x0f04, 0x0f21, 0x0002, 0x037f, 0x0383, 0x0002, 0x002a, 0x0fcf, - 0x0fcf, 0x0002, 0x002a, 0x0fe5, 0x0fe5, 0x0001, 0x002a, 0x0f9d, - 0x0004, 0x038f, 0x0392, 0x0397, 0x03a2, 0x0001, 0x002a, 0x0fc7, - 0x0003, 0x002a, 0x0ee1, 0x0f04, 0x0f21, 0x0002, 0x039a, 0x039e, - // Entry 1D500 - 1D53F - 0x0002, 0x002a, 0x0fcf, 0x0fcf, 0x0002, 0x002a, 0x0fe5, 0x0fe5, - 0x0001, 0x002a, 0x0f9d, 0x0003, 0x03a9, 0x03ac, 0x03b3, 0x0001, - 0x002a, 0x1004, 0x0005, 0x002a, 0x1034, 0x1047, 0x1051, 0x1011, - 0x106a, 0x0002, 0x03b6, 0x03ba, 0x0002, 0x002a, 0x1083, 0x1083, - 0x0002, 0x002a, 0x109d, 0x109d, 0x0003, 0x03c2, 0x03c5, 0x03cc, - 0x0001, 0x002a, 0x1004, 0x0005, 0x002a, 0x1034, 0x1047, 0x1051, - 0x1011, 0x106a, 0x0002, 0x03cf, 0x03d3, 0x0002, 0x002a, 0x1083, - 0x1083, 0x0002, 0x002a, 0x109d, 0x109d, 0x0003, 0x03db, 0x03de, - // Entry 1D540 - 1D57F - 0x03e5, 0x0001, 0x002a, 0x1004, 0x0005, 0x002a, 0x1034, 0x1047, - 0x1051, 0x1011, 0x106a, 0x0002, 0x03e8, 0x03ec, 0x0002, 0x002a, - 0x10c1, 0x10c1, 0x0002, 0x002a, 0x10d3, 0x10d3, 0x0001, 0x03f2, - 0x0001, 0x002a, 0x10e5, 0x0003, 0x0000, 0x03f9, 0x03fe, 0x0003, - 0x002a, 0x1111, 0x1131, 0x114b, 0x0002, 0x0401, 0x0405, 0x0002, - 0x002a, 0x116e, 0x116e, 0x0002, 0x002a, 0x1186, 0x1186, 0x0003, - 0x0000, 0x040d, 0x0412, 0x0003, 0x002a, 0x1111, 0x1131, 0x114b, - 0x0002, 0x0415, 0x0419, 0x0002, 0x002a, 0x116e, 0x116e, 0x0002, - // Entry 1D580 - 1D5BF - 0x002a, 0x1186, 0x1186, 0x0003, 0x0000, 0x0421, 0x0426, 0x0003, - 0x002a, 0x119e, 0x11b3, 0x11c1, 0x0002, 0x0429, 0x042d, 0x0002, - 0x002a, 0x116e, 0x116e, 0x0002, 0x002a, 0x1186, 0x1186, 0x0003, - 0x0000, 0x0435, 0x043a, 0x0003, 0x002a, 0x11d8, 0x11f8, 0x1212, - 0x0002, 0x043d, 0x0441, 0x0002, 0x002a, 0x1235, 0x1235, 0x0002, - 0x002a, 0x124d, 0x124d, 0x0003, 0x0000, 0x0449, 0x044e, 0x0003, - 0x002a, 0x11d8, 0x11f8, 0x1212, 0x0002, 0x0451, 0x0455, 0x0002, - 0x002a, 0x1235, 0x1235, 0x0002, 0x002a, 0x124d, 0x124d, 0x0003, - // Entry 1D5C0 - 1D5FF - 0x0000, 0x045d, 0x0462, 0x0003, 0x002a, 0x11d8, 0x11f8, 0x1212, - 0x0002, 0x0465, 0x0469, 0x0002, 0x002a, 0x1235, 0x1235, 0x0002, - 0x002a, 0x124d, 0x124d, 0x0003, 0x0000, 0x0471, 0x0476, 0x0003, - 0x002a, 0x1265, 0x1288, 0x12a5, 0x0002, 0x0479, 0x047d, 0x0002, - 0x002a, 0x12cb, 0x12cb, 0x0002, 0x002a, 0x12e6, 0x12e6, 0x0003, - 0x0000, 0x0485, 0x048a, 0x0003, 0x002a, 0x1265, 0x1288, 0x12a5, - 0x0002, 0x048d, 0x0491, 0x0002, 0x002a, 0x12cb, 0x12cb, 0x0002, - 0x002a, 0x12e6, 0x12e6, 0x0003, 0x0000, 0x0499, 0x049e, 0x0003, - // Entry 1D600 - 1D63F - 0x002a, 0x1265, 0x1288, 0x12a5, 0x0002, 0x04a1, 0x04a5, 0x0002, - 0x002a, 0x12cb, 0x12cb, 0x0002, 0x002a, 0x12e6, 0x12e6, 0x0003, - 0x0000, 0x04ad, 0x04b2, 0x0003, 0x002a, 0x1301, 0x1321, 0x133b, - 0x0002, 0x04b5, 0x04b9, 0x0002, 0x002a, 0x135e, 0x135e, 0x0002, - 0x002a, 0x1376, 0x1376, 0x0003, 0x0000, 0x04c1, 0x04c6, 0x0003, - 0x002a, 0x1301, 0x1321, 0x133b, 0x0002, 0x04c9, 0x04cd, 0x0002, - 0x002a, 0x135e, 0x135e, 0x0002, 0x002a, 0x1376, 0x1376, 0x0003, - 0x0000, 0x04d5, 0x04da, 0x0003, 0x002a, 0x1301, 0x1321, 0x133b, - // Entry 1D640 - 1D67F - 0x0002, 0x04dd, 0x04e1, 0x0002, 0x002a, 0x135e, 0x135e, 0x0002, - 0x002a, 0x1376, 0x1376, 0x0003, 0x0000, 0x04e9, 0x04ee, 0x0003, - 0x002a, 0x138e, 0x13b1, 0x13ce, 0x0002, 0x04f1, 0x04f5, 0x0002, - 0x002a, 0x13f4, 0x13f4, 0x0002, 0x002a, 0x140f, 0x140f, 0x0003, - 0x0000, 0x04fd, 0x0502, 0x0003, 0x002a, 0x138e, 0x13b1, 0x13ce, - 0x0002, 0x0505, 0x0509, 0x0002, 0x002a, 0x13f4, 0x13f4, 0x0002, - 0x002a, 0x140f, 0x140f, 0x0003, 0x0000, 0x0511, 0x0516, 0x0003, - 0x002a, 0x138e, 0x13b1, 0x13ce, 0x0002, 0x0519, 0x051d, 0x0002, - // Entry 1D680 - 1D6BF - 0x002a, 0x13f4, 0x13f4, 0x0002, 0x002a, 0x140f, 0x140f, 0x0003, - 0x0000, 0x0525, 0x052a, 0x0003, 0x002a, 0x142a, 0x1450, 0x1470, - 0x0002, 0x052d, 0x0531, 0x0002, 0x002a, 0x1499, 0x1499, 0x0002, - 0x002a, 0x14b7, 0x14b7, 0x0003, 0x0000, 0x0539, 0x053e, 0x0003, - 0x002a, 0x142a, 0x1450, 0x1470, 0x0002, 0x0541, 0x0545, 0x0002, - 0x002a, 0x1499, 0x1499, 0x0002, 0x002a, 0x14b7, 0x14b7, 0x0003, - 0x0000, 0x054d, 0x0552, 0x0003, 0x002a, 0x142a, 0x1450, 0x1470, - 0x0002, 0x0555, 0x0559, 0x0002, 0x002a, 0x1499, 0x1499, 0x0002, - // Entry 1D6C0 - 1D6FF - 0x002a, 0x14b7, 0x14b7, 0x0003, 0x0000, 0x0561, 0x0566, 0x0003, - 0x002a, 0x14d5, 0x14f5, 0x150f, 0x0002, 0x0569, 0x056d, 0x0002, - 0x002a, 0x1532, 0x1532, 0x0002, 0x002a, 0x154a, 0x154a, 0x0003, - 0x0000, 0x0575, 0x057a, 0x0003, 0x002a, 0x14d5, 0x14f5, 0x150f, - 0x0002, 0x057d, 0x0581, 0x0002, 0x002a, 0x1532, 0x1532, 0x0002, - 0x002a, 0x154a, 0x154a, 0x0003, 0x0000, 0x0589, 0x058e, 0x0003, - 0x002a, 0x14d5, 0x14f5, 0x150f, 0x0002, 0x0591, 0x0595, 0x0002, - 0x002a, 0x1532, 0x1532, 0x0002, 0x002a, 0x154a, 0x154a, 0x0001, - // Entry 1D700 - 1D73F - 0x059b, 0x0001, 0x0007, 0x07cc, 0x0003, 0x05a2, 0x05a5, 0x05a9, - 0x0001, 0x002a, 0x1562, 0x0002, 0x002a, 0xffff, 0x156f, 0x0002, - 0x05ac, 0x05b0, 0x0002, 0x002a, 0x1580, 0x1580, 0x0002, 0x002a, - 0x159a, 0x159a, 0x0003, 0x05b8, 0x0000, 0x05bb, 0x0001, 0x002a, - 0x15be, 0x0002, 0x05be, 0x05c2, 0x0002, 0x002a, 0x1580, 0x1580, - 0x0002, 0x002a, 0x159a, 0x159a, 0x0003, 0x05ca, 0x0000, 0x05cd, - 0x0001, 0x002a, 0x15be, 0x0002, 0x05d0, 0x05d4, 0x0002, 0x002a, - 0x1580, 0x1580, 0x0002, 0x002a, 0x159a, 0x159a, 0x0003, 0x05dc, - // Entry 1D740 - 1D77F - 0x05df, 0x05e3, 0x0001, 0x002a, 0x15c3, 0x0002, 0x002a, 0xffff, - 0x15d3, 0x0002, 0x05e6, 0x05ea, 0x0002, 0x002a, 0x15e7, 0x15e7, - 0x0002, 0x002a, 0x1604, 0x1604, 0x0003, 0x05f2, 0x0000, 0x05f5, - 0x0001, 0x002a, 0x162b, 0x0002, 0x05f8, 0x05fc, 0x0002, 0x002a, - 0x15e7, 0x15e7, 0x0002, 0x002a, 0x1604, 0x1604, 0x0003, 0x0604, - 0x0000, 0x0607, 0x0001, 0x002a, 0x162b, 0x0002, 0x060a, 0x060e, - 0x0002, 0x002a, 0x15e7, 0x15e7, 0x0002, 0x002a, 0x1604, 0x1604, - 0x0003, 0x0616, 0x0619, 0x061d, 0x0001, 0x002a, 0x1633, 0x0002, - // Entry 1D780 - 1D7BF - 0x002a, 0xffff, 0x1646, 0x0002, 0x0620, 0x0624, 0x0002, 0x002a, - 0x1656, 0x1656, 0x0002, 0x002a, 0x1673, 0x1673, 0x0003, 0x062c, - 0x0000, 0x062f, 0x0001, 0x002a, 0x169a, 0x0002, 0x0632, 0x0636, - 0x0002, 0x002a, 0x1656, 0x1656, 0x0002, 0x002a, 0x1673, 0x1673, - 0x0003, 0x063e, 0x0000, 0x0641, 0x0001, 0x002a, 0x169a, 0x0002, - 0x0644, 0x0648, 0x0002, 0x002a, 0x1656, 0x1656, 0x0002, 0x002a, - 0x1673, 0x1673, 0x0001, 0x064e, 0x0001, 0x002a, 0x16a2, 0x0004, - 0x0656, 0x065b, 0x0660, 0x066f, 0x0003, 0x0000, 0x1dc7, 0x238b, - // Entry 1D7C0 - 1D7FF - 0x253a, 0x0003, 0x002a, 0x16b6, 0x16c4, 0x16cd, 0x0002, 0x0000, - 0x0663, 0x0003, 0x0000, 0x066a, 0x0667, 0x0001, 0x002a, 0x16e8, - 0x0003, 0x002a, 0xffff, 0x1721, 0x1757, 0x0002, 0x0856, 0x0672, - 0x0003, 0x0676, 0x07b6, 0x0716, 0x009e, 0x002a, 0xffff, 0xffff, - 0xffff, 0xffff, 0x18b5, 0x1971, 0x1a8c, 0x1b06, 0x1bf5, 0x1ce7, - 0x1de2, 0x1edd, 0x1f66, 0x20ef, 0x2169, 0x2210, 0x22f9, 0x238e, - 0x2429, 0x24fd, 0x2613, 0x2702, 0x27f1, 0x287d, 0x28f7, 0xffff, - 0xffff, 0x29d2, 0xffff, 0x2aa9, 0xffff, 0x2b62, 0x2bd3, 0x2c3b, - // Entry 1D800 - 1D83F - 0x2c91, 0xffff, 0xffff, 0x2d8c, 0x2e18, 0x2ed8, 0xffff, 0xffff, - 0xffff, 0x2fcf, 0xffff, 0x30a5, 0x3158, 0xffff, 0x3269, 0x3337, - 0x340e, 0xffff, 0xffff, 0xffff, 0xffff, 0x3551, 0xffff, 0xffff, - 0x3658, 0x3726, 0xffff, 0xffff, 0x3871, 0x3924, 0x39b3, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3b67, 0x3bc6, 0x3c64, - 0x3cd5, 0x3d3d, 0xffff, 0xffff, 0x3ee9, 0xffff, 0x3f74, 0xffff, - 0xffff, 0x40af, 0xffff, 0x41f4, 0xffff, 0xffff, 0xffff, 0xffff, - 0x4304, 0xffff, 0x43a7, 0x4490, 0x4555, 0x45ea, 0xffff, 0xffff, - // Entry 1D840 - 1D87F - 0xffff, 0x46c7, 0x478c, 0x482a, 0xffff, 0xffff, 0x4945, 0x4a76, - 0x4b26, 0x4b9d, 0xffff, 0xffff, 0x4c7d, 0x4d09, 0x4d71, 0xffff, - 0x4e39, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x508a, 0x5104, - 0x5184, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x5308, 0xffff, 0xffff, 0x53c2, 0xffff, 0x544a, 0xffff, 0x5526, - 0x55a9, 0x5659, 0xffff, 0x56f0, 0x57a9, 0xffff, 0xffff, 0xffff, - 0x58d7, 0x596c, 0xffff, 0xffff, 0x177e, 0x19fa, 0x1fdd, 0x2066, - 0xffff, 0xffff, 0x4144, 0x4f9d, 0x009e, 0x002a, 0x17ec, 0x1818, - // Entry 1D880 - 1D8BF - 0x1845, 0x1875, 0x18e8, 0x1991, 0x1aa9, 0x1b43, 0x1c38, 0x1d2d, - 0x1e28, 0x1efa, 0x1f80, 0x210f, 0x2195, 0x2252, 0x231f, 0x23b4, - 0x2462, 0x254c, 0x2655, 0x2744, 0x2814, 0x289a, 0x2920, 0x2995, - 0x29af, 0x29fb, 0x2a70, 0x2acd, 0x2b38, 0x2b7f, 0x2bea, 0x2c4f, - 0x2cb7, 0x2d26, 0x2d5c, 0x2daf, 0x2e48, 0x2ef5, 0x2f49, 0x2f63, - 0x2fa5, 0x2fff, 0x3082, 0x30d5, 0x318e, 0x321d, 0x32a2, 0x3373, - 0x3425, 0x3476, 0x34a6, 0x3508, 0x352e, 0x357a, 0x35ef, 0x3625, - 0x3691, 0x3762, 0x3833, 0x3857, 0x38a4, 0x3948, 0x39cd, 0x3a24, - // Entry 1D8C0 - 1D8FF - 0x3a4e, 0x3a81, 0x3aaa, 0x3ae3, 0x3b25, 0x3b7e, 0x3bef, 0x3c81, - 0x3cef, 0x3d94, 0x3e74, 0x3ead, 0x3f06, 0x3f5a, 0x3faf, 0x403c, - 0x407c, 0x40d3, 0x41bb, 0x420e, 0x4265, 0x4285, 0x42a2, 0x42cb, - 0x4327, 0x4390, 0x43ec, 0x44c9, 0x457c, 0x4607, 0x4673, 0x4696, - 0x46ad, 0x46fd, 0x47b8, 0x4862, 0x48fb, 0x4912, 0x498b, 0x4aa5, - 0x4b43, 0x4bc3, 0x4c32, 0x4c49, 0x4ca0, 0x4d20, 0x4d94, 0x4dfd, - 0x4e83, 0x4f31, 0x4f57, 0x4f71, 0x504a, 0x506d, 0x50a7, 0x511e, - 0x519b, 0x51ec, 0x5209, 0x5239, 0x5272, 0x52ae, 0x52ce, 0x52eb, - // Entry 1D900 - 1D93F - 0x5325, 0x5379, 0x53a5, 0x53dc, 0x5433, 0x547f, 0x550c, 0x5546, - 0x55d8, 0x5673, 0x56ca, 0x5722, 0x57d5, 0x5850, 0x5870, 0x589a, - 0x58fd, 0x599e, 0x37fd, 0x4a31, 0x1792, 0x1a1a, 0x1ffa, 0x2083, - 0xffff, 0x4065, 0x415b, 0x4fc6, 0x009e, 0x002a, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1928, 0x19cd, 0x1ad3, 0x1bab, 0x1c97, 0x1d8f, - 0x1e8a, 0x1f33, 0x1fb6, 0x213c, 0x21ce, 0x22a1, 0x2352, 0x23f6, - 0x24b7, 0x25b7, 0x26b3, 0x27a2, 0x2844, 0x28c4, 0x2956, 0xffff, - 0xffff, 0x2a31, 0xffff, 0x2afe, 0xffff, 0x2ba9, 0x2c0e, 0x2c70, - // Entry 1D940 - 1D97F - 0x2cea, 0xffff, 0xffff, 0x2ddf, 0x2e85, 0x2f1f, 0xffff, 0xffff, - 0xffff, 0x303c, 0xffff, 0x3112, 0x31d1, 0xffff, 0x32e8, 0x33bc, - 0x3449, 0xffff, 0xffff, 0xffff, 0xffff, 0x35b0, 0xffff, 0xffff, - 0x36d7, 0x37ab, 0xffff, 0xffff, 0x38e4, 0x3979, 0x39f4, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3ba2, 0x3c25, 0x3cab, - 0x3d16, 0x3e07, 0xffff, 0xffff, 0x3f30, 0xffff, 0x3ff1, 0xffff, - 0xffff, 0x4113, 0xffff, 0x4235, 0xffff, 0xffff, 0xffff, 0xffff, - 0x4357, 0xffff, 0x443e, 0x450f, 0x45b0, 0x4640, 0xffff, 0xffff, - // Entry 1D980 - 1D9BF - 0xffff, 0x4740, 0x47f1, 0x48b6, 0xffff, 0xffff, 0x49de, 0x4ae1, - 0x4b6a, 0x4bf6, 0xffff, 0xffff, 0x4cd0, 0x4d44, 0x4dc4, 0xffff, - 0x4eda, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x50d1, 0x5154, - 0x51bf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x534f, 0xffff, 0xffff, 0x5403, 0xffff, 0x54c1, 0xffff, 0x5573, - 0x5614, 0x569a, 0xffff, 0x5761, 0x580e, 0xffff, 0xffff, 0xffff, - 0x5930, 0x59dd, 0xffff, 0xffff, 0x17c2, 0x1a56, 0x2033, 0x20bc, - 0xffff, 0xffff, 0x418e, 0x500b, 0x0003, 0x0000, 0x0000, 0x085a, - // Entry 1D9C0 - 1D9FF - 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1DA00 - 1DA3F - 0xffff, 0xffff, 0xffff, 0x0000, 0x0002, 0x0003, 0x00e9, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, - 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x002b, 0xffff, 0x0000, 0x0004, 0x0008, - // Entry 1DA40 - 1DA7F - 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, - 0x002c, 0x000d, 0x002b, 0xffff, 0x0030, 0x0039, 0x0042, 0x0048, - 0x0010, 0x0050, 0x0055, 0x005c, 0x0063, 0x006c, 0x0074, 0x007c, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x24fb, 0x22e6, - 0x247f, 0x2382, 0x247f, 0x2483, 0x24fb, 0x2382, 0x2481, 0x22ec, - 0x22ee, 0x22f0, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x002b, 0x0084, 0x0088, 0x008c, 0x0090, 0x0094, - 0x0098, 0x009c, 0x0007, 0x002b, 0x00a0, 0x00aa, 0x00b4, 0x00bd, - // Entry 1DA80 - 1DABF - 0x00c7, 0x00cf, 0x00d6, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - 0x24fb, 0x24fb, 0x24fb, 0x24fb, 0x2382, 0x2055, 0x214e, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x002b, 0xffff, - 0x00de, 0x00e1, 0x00e4, 0x00e7, 0x0005, 0x002b, 0xffff, 0x00ea, - 0x00fd, 0x010c, 0x011b, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, - 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0016, 0x2b90, 0x0001, - 0x0016, 0x0358, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x002b, 0x0128, - 0x0001, 0x002b, 0x012f, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, - // Entry 1DAC0 - 1DAFF - 0x00bd, 0x0002, 0x002b, 0x0133, 0x0142, 0x0001, 0x00c3, 0x0002, - 0x002b, 0x0151, 0x0154, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, - 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, - 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, - 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1DB00 - 1DB3F - 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, - 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, - 0x0001, 0x002b, 0x0157, 0x0001, 0x0131, 0x0001, 0x0012, 0x017b, - 0x0001, 0x0136, 0x0001, 0x002b, 0x015d, 0x0001, 0x013b, 0x0001, - // Entry 1DB40 - 1DB7F - 0x002b, 0x0167, 0x0002, 0x0141, 0x0144, 0x0001, 0x002b, 0x0170, - 0x0003, 0x002b, 0x0177, 0x017d, 0x0128, 0x0001, 0x014b, 0x0001, - 0x002b, 0x0182, 0x0001, 0x0150, 0x0001, 0x002b, 0x0193, 0x0001, - 0x0155, 0x0001, 0x002b, 0x01a8, 0x0001, 0x015a, 0x0001, 0x002b, - 0x01ad, 0x0001, 0x015f, 0x0001, 0x002b, 0x01b5, 0x0001, 0x0164, - 0x0001, 0x002b, 0x01be, 0x0003, 0x0004, 0x0000, 0x00ab, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0025, - 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, - // Entry 1DB80 - 1DBBF - 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0000, 0x1dfa, 0x0001, - 0x0000, 0x1e0b, 0x0001, 0x002b, 0x01ce, 0x0001, 0x001c, 0x14e1, - 0x0007, 0x002d, 0x0051, 0x0000, 0x0069, 0x0081, 0x0089, 0x009a, - 0x0001, 0x002f, 0x0003, 0x0033, 0x0000, 0x0042, 0x000d, 0x002b, - 0xffff, 0x01da, 0x01e1, 0x01e9, 0x01f0, 0x01f7, 0x01ff, 0x0208, - 0x0211, 0x021b, 0x0224, 0x022d, 0x0236, 0x000d, 0x002b, 0xffff, - 0x0240, 0x024e, 0x01e9, 0x025e, 0x01f7, 0x0265, 0x0271, 0x0211, - 0x027f, 0x028b, 0x0299, 0x02a4, 0x0001, 0x0053, 0x0003, 0x0057, - // Entry 1DBC0 - 1DBFF - 0x0000, 0x0060, 0x0007, 0x002b, 0x02b3, 0x02b7, 0x02bb, 0x02bf, - 0x02c4, 0x02c9, 0x02cd, 0x0007, 0x002b, 0x02d1, 0x02da, 0x02e2, - 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0001, 0x006b, 0x0003, 0x006f, - 0x0000, 0x0078, 0x0002, 0x0072, 0x0075, 0x0001, 0x001c, 0x0494, - 0x0001, 0x001c, 0x0499, 0x0002, 0x007b, 0x007e, 0x0001, 0x001c, - 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x0083, 0x0001, 0x0085, - 0x0002, 0x0027, 0x018c, 0x0193, 0x0004, 0x0097, 0x0091, 0x008e, - 0x0094, 0x0001, 0x002b, 0x030a, 0x0001, 0x0001, 0x002d, 0x0001, - // Entry 1DC00 - 1DC3F - 0x002b, 0x0319, 0x0001, 0x0014, 0x146e, 0x0004, 0x00a8, 0x00a2, - 0x009f, 0x00a5, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0000, - 0x0000, 0x0000, 0x00b0, 0x0001, 0x00b2, 0x0003, 0x00b6, 0x0125, - 0x00e9, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1DC40 - 1DC7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1DC80 - 1DCBF - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27bb, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - // Entry 1DCC0 - 1DCFF - 0x1355, 0xffff, 0x13e3, 0x0002, 0x0003, 0x018a, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, - 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x018e, - 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0005, - 0x0827, 0x0008, 0x002f, 0x0094, 0x00eb, 0x0120, 0x0158, 0x0168, - 0x0179, 0x0000, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, 0x0045, - 0x0054, 0x000d, 0x0005, 0xffff, 0x0636, 0x2216, 0x221a, 0x221e, - // Entry 1DD00 - 1DD3F - 0x2222, 0x2226, 0x222a, 0x222e, 0x2232, 0x2236, 0x223a, 0x223e, - 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, - 0x23db, 0x23db, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, - 0x002b, 0xffff, 0x0323, 0x032b, 0x0335, 0x033b, 0x0343, 0x0348, - 0x034d, 0x0352, 0x0359, 0x0361, 0x0368, 0x0370, 0x0003, 0x0067, - 0x0076, 0x0085, 0x000d, 0x0005, 0xffff, 0x0636, 0x2216, 0x221a, - 0x221e, 0x2222, 0x2226, 0x222a, 0x222e, 0x2232, 0x2236, 0x223a, - 0x223e, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, - // Entry 1DD40 - 1DD7F - 0x247f, 0x23db, 0x23db, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, - 0x000d, 0x002b, 0xffff, 0x0323, 0x032b, 0x0335, 0x033b, 0x0343, - 0x0348, 0x034d, 0x0352, 0x0359, 0x0361, 0x0368, 0x0370, 0x0002, - 0x0097, 0x00c1, 0x0005, 0x009d, 0x00a6, 0x00b8, 0x0000, 0x00af, - 0x0007, 0x002b, 0x0378, 0x037c, 0x0380, 0x0384, 0x0388, 0x038c, - 0x0390, 0x0007, 0x0000, 0x228e, 0x228e, 0x04dd, 0x228e, 0x2382, - 0x2483, 0x2382, 0x0007, 0x002b, 0x0394, 0x0397, 0x039a, 0x039d, - 0x03a0, 0x03a3, 0x03a6, 0x0007, 0x002b, 0x03a9, 0x03b0, 0x03b8, - // Entry 1DD80 - 1DDBF - 0x03bf, 0x03c6, 0x03ce, 0x03d7, 0x0005, 0x00c7, 0x00d0, 0x00e2, - 0x0000, 0x00d9, 0x0007, 0x002b, 0x0378, 0x037c, 0x0380, 0x0384, - 0x0388, 0x038c, 0x0390, 0x0007, 0x0000, 0x228e, 0x228e, 0x04dd, - 0x228e, 0x2382, 0x2483, 0x2382, 0x0007, 0x002b, 0x0394, 0x0397, - 0x039a, 0x039d, 0x03a0, 0x03a3, 0x03a6, 0x0007, 0x002b, 0x03a9, - 0x03b0, 0x03b8, 0x03bf, 0x03c6, 0x03ce, 0x03d7, 0x0002, 0x00ee, - 0x0107, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0000, 0xffff, - 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, - // Entry 1DDC0 - 1DDFF - 0x0035, 0x0037, 0x2335, 0x0005, 0x002b, 0xffff, 0x03de, 0x03ed, - 0x03fb, 0x0408, 0x0003, 0x010b, 0x0112, 0x0119, 0x0005, 0x0000, - 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x002b, 0xffff, 0x03de, - 0x03ed, 0x03fb, 0x0408, 0x0002, 0x0123, 0x0139, 0x0003, 0x0127, - 0x0000, 0x0130, 0x0002, 0x012a, 0x012d, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0002, 0x0133, 0x0136, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x013d, 0x0146, 0x014f, - // Entry 1DE00 - 1DE3F - 0x0002, 0x0140, 0x0143, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0002, 0x0149, 0x014c, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x0152, 0x0155, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0003, 0x0162, 0x0000, 0x015c, 0x0001, - 0x015e, 0x0002, 0x002b, 0x0417, 0x042c, 0x0001, 0x0164, 0x0002, - 0x002b, 0x0441, 0x0446, 0x0004, 0x0176, 0x0170, 0x016d, 0x0173, - 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, - 0x01f2, 0x0001, 0x0000, 0x237b, 0x0004, 0x0187, 0x0181, 0x017e, - // Entry 1DE40 - 1DE7F - 0x0184, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x01cb, 0x0000, - 0x0000, 0x01d0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01d5, - 0x0000, 0x0000, 0x01da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x01df, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ea, 0x0000, - 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 1DE80 - 1DEBF - 0x0000, 0x0000, 0x01ef, 0x0000, 0x01f4, 0x0000, 0x0000, 0x01f9, - 0x0000, 0x0000, 0x01fe, 0x0000, 0x0000, 0x0203, 0x0001, 0x01cd, - 0x0001, 0x002b, 0x044b, 0x0001, 0x01d2, 0x0001, 0x002b, 0x0452, - 0x0001, 0x01d7, 0x0001, 0x002b, 0x045a, 0x0001, 0x01dc, 0x0001, - 0x002b, 0x045f, 0x0002, 0x01e2, 0x01e5, 0x0001, 0x002b, 0x0464, - 0x0003, 0x002b, 0x046a, 0x046f, 0x0473, 0x0001, 0x01ec, 0x0001, - 0x002b, 0x0478, 0x0001, 0x01f1, 0x0001, 0x002b, 0x047d, 0x0001, - 0x01f6, 0x0001, 0x002b, 0x0482, 0x0001, 0x01fb, 0x0001, 0x002b, - // Entry 1DEC0 - 1DEFF - 0x0486, 0x0001, 0x0200, 0x0001, 0x002b, 0x048c, 0x0001, 0x0205, - 0x0001, 0x002b, 0x0495, 0x0003, 0x0004, 0x0000, 0x01a3, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0025, - 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, - 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0005, 0x0625, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0005, 0x0827, - 0x0008, 0x002e, 0x0093, 0x00ea, 0x011f, 0x0160, 0x0170, 0x0181, - 0x0192, 0x0002, 0x0031, 0x0062, 0x0003, 0x0035, 0x0044, 0x0053, - // Entry 1DF00 - 1DF3F - 0x000d, 0x002b, 0xffff, 0x049b, 0x04a0, 0x04a5, 0x04aa, 0x0010, - 0x04b0, 0x04b5, 0x04ba, 0x04c0, 0x04c5, 0x04cb, 0x04d0, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x002b, - 0xffff, 0x04d5, 0x04dd, 0x04e7, 0x04ee, 0x0010, 0x04f8, 0x04fd, - 0x0503, 0x050c, 0x0517, 0x0521, 0x052a, 0x0003, 0x0066, 0x0075, - 0x0084, 0x000d, 0x002b, 0xffff, 0x049b, 0x04a0, 0x04a5, 0x04aa, - 0x0010, 0x04b0, 0x04b5, 0x04ba, 0x04c0, 0x04c5, 0x04cb, 0x04d0, - // Entry 1DF40 - 1DF7F - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - 0x002b, 0xffff, 0x04d5, 0x04dd, 0x04e7, 0x04ee, 0x0010, 0x04f8, - 0x04fd, 0x0503, 0x050c, 0x0517, 0x0521, 0x052a, 0x0002, 0x0096, - 0x00c0, 0x0005, 0x009c, 0x00a5, 0x00b7, 0x0000, 0x00ae, 0x0007, - 0x002b, 0x0533, 0x0536, 0x0539, 0x053c, 0x053f, 0x0542, 0x0545, - 0x0007, 0x0000, 0x2481, 0x247f, 0x04dd, 0x2159, 0x04dd, 0x22e6, - 0x2481, 0x0007, 0x002b, 0x0533, 0x0536, 0x0539, 0x053c, 0x053f, - // Entry 1DF80 - 1DFBF - 0x0542, 0x0545, 0x0007, 0x002b, 0x0548, 0x0550, 0x055a, 0x0563, - 0x056d, 0x0576, 0x0580, 0x0005, 0x00c6, 0x00cf, 0x00e1, 0x0000, - 0x00d8, 0x0007, 0x002b, 0x0533, 0x0536, 0x0539, 0x053c, 0x053f, - 0x0542, 0x0545, 0x0007, 0x0000, 0x2481, 0x247f, 0x04dd, 0x2159, - 0x04dd, 0x22e6, 0x2481, 0x0007, 0x002b, 0x0533, 0x0536, 0x0539, - 0x053c, 0x053f, 0x0542, 0x0545, 0x0007, 0x002b, 0x0548, 0x0550, - 0x055a, 0x0563, 0x056d, 0x0576, 0x0580, 0x0002, 0x00ed, 0x0106, - 0x0003, 0x00f1, 0x00f8, 0x00ff, 0x0005, 0x0000, 0xffff, 0x04e3, - // Entry 1DFC0 - 1DFFF - 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, - 0x04ec, 0x0003, 0x010a, 0x0111, 0x0118, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, - 0x04e9, 0x04ec, 0x0002, 0x0122, 0x0141, 0x0003, 0x0126, 0x012f, - 0x0138, 0x0002, 0x0129, 0x012c, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x0132, 0x0135, 0x0001, 0x0000, 0x04ef, - // Entry 1E000 - 1E03F - 0x0001, 0x0000, 0x04f2, 0x0002, 0x013b, 0x013e, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0145, 0x014e, 0x0157, - 0x0002, 0x0148, 0x014b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0002, 0x0151, 0x0154, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x015a, 0x015d, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0003, 0x016a, 0x0000, 0x0164, 0x0001, - 0x0166, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0001, 0x016c, 0x0002, - 0x0000, 0x04f5, 0x04f9, 0x0004, 0x017e, 0x0178, 0x0175, 0x017b, - // Entry 1E040 - 1E07F - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0000, 0x237b, 0x0004, 0x018f, 0x0189, 0x0186, - 0x018c, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, - 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x01a0, 0x019a, - 0x0197, 0x019d, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0004, 0x0000, - 0x0000, 0x01a8, 0x01c0, 0x0001, 0x01aa, 0x0003, 0x01ae, 0x01ba, - 0x01b4, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, - // Entry 1E080 - 1E0BF - 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0028, 0xffff, - 0xffff, 0xffff, 0x0e48, 0x0001, 0x01c2, 0x0003, 0x01c6, 0x0248, - 0x0207, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x06eb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1E0C0 - 1E0FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2798, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x06ef, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1E100 - 1E13F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x06f4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1E140 - 1E17F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x16eb, 0x0003, 0x0004, 0x03cb, 0x090f, - 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0040, 0x0263, 0x0000, 0x02ef, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0375, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001e, - 0x0000, 0x002f, 0x0004, 0x002c, 0x0026, 0x0023, 0x0029, 0x0001, - 0x002b, 0x0589, 0x0001, 0x002b, 0x059c, 0x0001, 0x002b, 0x05a9, - // Entry 1E180 - 1E1BF - 0x0001, 0x0008, 0x062f, 0x0004, 0x003d, 0x0037, 0x0034, 0x003a, - 0x0001, 0x002b, 0x05b5, 0x0001, 0x002b, 0x05b5, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0049, 0x00ae, 0x0105, - 0x013a, 0x0217, 0x0230, 0x0241, 0x0252, 0x0002, 0x004c, 0x007d, - 0x0003, 0x0050, 0x005f, 0x006e, 0x000d, 0x002b, 0xffff, 0x05c6, - 0x05cf, 0x05d8, 0x05df, 0x05e8, 0x05ef, 0x05f8, 0x0601, 0x060a, - 0x0613, 0x061c, 0x0625, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - // Entry 1E1C0 - 1E1FF - 0x2220, 0x2398, 0x000d, 0x002b, 0xffff, 0x062e, 0x0639, 0x05d8, - 0x0646, 0x05e8, 0x05ef, 0x05f8, 0x0651, 0x065e, 0x066b, 0x067a, - 0x0687, 0x0003, 0x0081, 0x0090, 0x009f, 0x000d, 0x002b, 0xffff, - 0x05c6, 0x05cf, 0x05d8, 0x05df, 0x05e8, 0x05ef, 0x05f8, 0x0601, - 0x060a, 0x0613, 0x061c, 0x0625, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x000d, 0x002b, 0xffff, 0x062e, 0x0639, - 0x05d8, 0x0646, 0x05e8, 0x05ef, 0x05f8, 0x0651, 0x065e, 0x066b, - // Entry 1E200 - 1E23F - 0x067a, 0x0687, 0x0002, 0x00b1, 0x00db, 0x0005, 0x00b7, 0x00c0, - 0x00d2, 0x0000, 0x00c9, 0x0007, 0x002b, 0x0692, 0x069e, 0x06aa, - 0x06b6, 0x06c2, 0x06ce, 0x06da, 0x0007, 0x002b, 0x06e1, 0x06e6, - 0x06eb, 0x06f0, 0x06f5, 0x06fa, 0x06ff, 0x0007, 0x002b, 0x06e1, - 0x06e6, 0x06eb, 0x06f0, 0x06f5, 0x06fa, 0x06ff, 0x0007, 0x002b, - 0x0704, 0x0716, 0x0724, 0x0736, 0x0748, 0x075a, 0x076a, 0x0005, - 0x00e1, 0x00ea, 0x00fc, 0x0000, 0x00f3, 0x0007, 0x002b, 0x0692, - 0x069e, 0x06aa, 0x06b6, 0x06c2, 0x06ce, 0x06da, 0x0007, 0x002b, - // Entry 1E240 - 1E27F - 0x06e1, 0x06e6, 0x06eb, 0x06f0, 0x06f5, 0x06fa, 0x06ff, 0x0007, - 0x002b, 0x06e1, 0x06e6, 0x06eb, 0x06f0, 0x06f5, 0x06fa, 0x06ff, - 0x0007, 0x002b, 0x0704, 0x0716, 0x0724, 0x0736, 0x0748, 0x075a, - 0x076a, 0x0002, 0x0108, 0x0121, 0x0003, 0x010c, 0x0113, 0x011a, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x002b, - 0xffff, 0x0778, 0x0785, 0x0792, 0x079f, 0x0003, 0x0125, 0x012c, - 0x0133, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, - // Entry 1E280 - 1E2BF - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x002b, 0xffff, 0x0778, 0x0785, 0x0792, 0x079f, 0x0002, 0x013d, - 0x01b0, 0x0003, 0x0141, 0x0168, 0x0189, 0x000b, 0x0150, 0x0153, - 0x014d, 0x0156, 0x0159, 0x015f, 0x0162, 0x0000, 0x0000, 0x015c, - 0x0165, 0x0001, 0x002b, 0x07ac, 0x0001, 0x002b, 0x07b5, 0x0001, - 0x002b, 0x07c2, 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, - 0x0001, 0x002b, 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, - 0x0800, 0x0001, 0x002b, 0x0809, 0x000b, 0x0000, 0x0000, 0x0174, - // Entry 1E2C0 - 1E2FF - 0x0177, 0x017a, 0x0180, 0x0183, 0x0000, 0x0000, 0x017d, 0x0186, - 0x0001, 0x002b, 0x07ac, 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, - 0x07d6, 0x0001, 0x002b, 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, - 0x002b, 0x0800, 0x0001, 0x002b, 0x0809, 0x000b, 0x0198, 0x019b, - 0x0195, 0x019e, 0x01a1, 0x01a7, 0x01aa, 0x0000, 0x0000, 0x01a4, - 0x01ad, 0x0001, 0x002b, 0x07ac, 0x0001, 0x002b, 0x07b5, 0x0001, - 0x002b, 0x07c2, 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, - 0x0001, 0x002b, 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, - // Entry 1E300 - 1E33F - 0x0800, 0x0001, 0x002b, 0x0809, 0x0003, 0x01b4, 0x01d5, 0x01f6, - 0x000b, 0x0000, 0x0000, 0x01c0, 0x01c3, 0x01c6, 0x01cc, 0x01cf, - 0x0000, 0x0000, 0x01c9, 0x01d2, 0x0001, 0x002b, 0x07ac, 0x0001, - 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, 0x0001, 0x002b, 0x07e3, - 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, 0x0800, 0x0001, 0x002b, - 0x0809, 0x000b, 0x0000, 0x0000, 0x01e1, 0x01e4, 0x01e7, 0x01ed, - 0x01f0, 0x0000, 0x0000, 0x01ea, 0x01f3, 0x0001, 0x002b, 0x07ac, - 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, 0x0001, 0x002b, - // Entry 1E340 - 1E37F - 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, 0x0800, 0x0001, - 0x002b, 0x0809, 0x000b, 0x0000, 0x0000, 0x0202, 0x0205, 0x0208, - 0x020e, 0x0211, 0x0000, 0x0000, 0x020b, 0x0214, 0x0001, 0x002b, - 0x07ac, 0x0001, 0x002b, 0x07cd, 0x0001, 0x002b, 0x07d6, 0x0001, - 0x002b, 0x07e3, 0x0001, 0x002b, 0x07f9, 0x0001, 0x002b, 0x0800, - 0x0001, 0x002b, 0x0809, 0x0003, 0x0225, 0x0000, 0x021b, 0x0002, - 0x021e, 0x0222, 0x0002, 0x002b, 0x081d, 0x0840, 0x0001, 0x002b, - 0x0833, 0x0002, 0x0228, 0x022c, 0x0002, 0x002b, 0x0833, 0x0840, - // Entry 1E380 - 1E3BF - 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x023e, 0x0238, 0x0235, - 0x023b, 0x0001, 0x002b, 0x084d, 0x0001, 0x002b, 0x085e, 0x0001, - 0x002b, 0x0869, 0x0001, 0x0017, 0x03cc, 0x0004, 0x024f, 0x0249, - 0x0246, 0x024c, 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, - 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x0260, - 0x025a, 0x0257, 0x025d, 0x0001, 0x002b, 0x05b5, 0x0001, 0x002b, - 0x05b5, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, - 0x026c, 0x0000, 0x0000, 0x0000, 0x02d7, 0x02de, 0x0000, 0x9006, - // Entry 1E3C0 - 1E3FF - 0x0002, 0x026f, 0x02a3, 0x0003, 0x0273, 0x0283, 0x0293, 0x000e, - 0x002b, 0x08af, 0x0873, 0x087c, 0x0885, 0x088e, 0x0895, 0x089c, - 0x08a8, 0x08bb, 0x08c4, 0x08cd, 0x08d6, 0x08df, 0x08e4, 0x000e, - 0x002b, 0x091e, 0x08ed, 0x08f4, 0x08fb, 0x0902, 0x0909, 0x0910, - 0x0917, 0x0925, 0x092c, 0x0933, 0x093a, 0x08df, 0x0941, 0x000e, - 0x002b, 0x08af, 0x0873, 0x0948, 0x0885, 0x088e, 0x0895, 0x089c, - 0x08a8, 0x08bb, 0x08c4, 0x0953, 0x08d6, 0x08df, 0x08e4, 0x0003, - 0x02a7, 0x02b7, 0x02c7, 0x000e, 0x002b, 0x08af, 0x0873, 0x087c, - // Entry 1E400 - 1E43F - 0x0885, 0x088e, 0x0895, 0x089c, 0x08a8, 0x08bb, 0x08c4, 0x08cd, - 0x08d6, 0x08df, 0x08e4, 0x000e, 0x002b, 0x091e, 0x08ed, 0x08f4, - 0x08fb, 0x0902, 0x0909, 0x0910, 0x0917, 0x0925, 0x092c, 0x0933, - 0x093a, 0x08df, 0x0941, 0x000e, 0x002b, 0x08af, 0x0873, 0x0948, - 0x0885, 0x088e, 0x0895, 0x089c, 0x08a8, 0x08bb, 0x08c4, 0x0953, - 0x08d6, 0x08df, 0x08e4, 0x0001, 0x02d9, 0x0001, 0x02db, 0x0001, - 0x002b, 0x095e, 0x0004, 0x02ec, 0x02e6, 0x02e3, 0x02e9, 0x0001, - 0x002b, 0x084d, 0x0001, 0x002b, 0x085e, 0x0001, 0x002b, 0x085e, - // Entry 1E440 - 1E47F - 0x0001, 0x002b, 0x085e, 0x0008, 0x02f8, 0x0000, 0x0000, 0x0000, - 0x035d, 0x0364, 0x0000, 0x9006, 0x0002, 0x02fb, 0x032c, 0x0003, - 0x02ff, 0x030e, 0x031d, 0x000d, 0x002b, 0xffff, 0x0969, 0x0974, - 0x097b, 0x0989, 0x0997, 0x09ab, 0x09bf, 0x09c8, 0x09d3, 0x09de, - 0x09e9, 0x09ff, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x002b, 0xffff, 0x0969, 0x0974, 0x0a17, 0x0a2e, - 0x0a45, 0x0a62, 0x09bf, 0x09c8, 0x09d3, 0x09de, 0x09e9, 0x09ff, - // Entry 1E480 - 1E4BF - 0x0003, 0x0330, 0x033f, 0x034e, 0x000d, 0x002b, 0xffff, 0x0969, - 0x0974, 0x097b, 0x0989, 0x0997, 0x09ab, 0x09bf, 0x09c8, 0x09d3, - 0x09de, 0x09e9, 0x09ff, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x2220, 0x2398, 0x000d, 0x002b, 0xffff, 0x0969, 0x0974, 0x0a81, - 0x0a99, 0x0ab1, 0x0acf, 0x09bf, 0x09c8, 0x09d3, 0x09de, 0x09e9, - 0x09ff, 0x0001, 0x035f, 0x0001, 0x0361, 0x0001, 0x002b, 0x0aef, - 0x0004, 0x0372, 0x036c, 0x0369, 0x036f, 0x0001, 0x002b, 0x0589, - // Entry 1E4C0 - 1E4FF - 0x0001, 0x002b, 0x059c, 0x0001, 0x002b, 0x05a9, 0x0001, 0x001c, - 0x14e1, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x037b, 0x0001, - 0x037d, 0x0001, 0x037f, 0x004a, 0x002b, 0x0b03, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b0e, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1E500 - 1E53F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b1b, 0x0040, - 0x040c, 0x0000, 0x0000, 0x0411, 0x0430, 0x044a, 0x0464, 0x0483, - 0x049d, 0x04b7, 0x04d6, 0x04f0, 0x050a, 0x052d, 0x054b, 0x0000, - 0x0000, 0x0000, 0x0569, 0x058a, 0x05a4, 0x0000, 0x0000, 0x0000, - 0x05be, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05c3, 0x05df, - // Entry 1E540 - 1E57F - 0x05fb, 0x0617, 0x0633, 0x064f, 0x066b, 0x0687, 0x06a3, 0x06bf, - 0x06db, 0x06f7, 0x0713, 0x072f, 0x074b, 0x0767, 0x0783, 0x079f, - 0x07bb, 0x07d7, 0x07f3, 0x0000, 0x080f, 0x0000, 0x0814, 0x0832, - 0x084c, 0x0866, 0x0884, 0x089e, 0x08b8, 0x08d6, 0x08f0, 0x090a, - 0x0001, 0x040e, 0x0001, 0x002b, 0x0b28, 0x0003, 0x0415, 0x0418, - 0x041d, 0x0001, 0x002b, 0x0b33, 0x0003, 0x002b, 0x0b3a, 0x0b4e, - 0x0b57, 0x0002, 0x0420, 0x0428, 0x0006, 0x002b, 0x0ba3, 0x0b69, - 0xffff, 0x0b79, 0xffff, 0x0b8f, 0x0006, 0x002b, 0x0bf3, 0x0bb9, - // Entry 1E580 - 1E5BF - 0xffff, 0x0bc9, 0xffff, 0x0bdf, 0x0003, 0x0434, 0x0000, 0x0437, - 0x0001, 0x002b, 0x0c09, 0x0002, 0x043a, 0x0442, 0x0006, 0x002b, - 0x0ba3, 0x0b69, 0xffff, 0x0b79, 0xffff, 0x0b8f, 0x0006, 0x002b, - 0x0bf3, 0x0bb9, 0xffff, 0x0bc9, 0xffff, 0x0bdf, 0x0003, 0x044e, - 0x0000, 0x0451, 0x0001, 0x002b, 0x0c09, 0x0002, 0x0454, 0x045c, - 0x0006, 0x002b, 0x0ba3, 0x0b69, 0xffff, 0x0b79, 0xffff, 0x0b8f, - 0x0006, 0x002b, 0x0bf3, 0x0bb9, 0xffff, 0x0bc9, 0xffff, 0x0bdf, - 0x0003, 0x0468, 0x046b, 0x0470, 0x0001, 0x002b, 0x0c10, 0x0003, - // Entry 1E5C0 - 1E5FF - 0x002b, 0x0c1b, 0x0c33, 0x0c43, 0x0002, 0x0473, 0x047b, 0x0006, - 0x002b, 0x0c8a, 0x0c57, 0xffff, 0x0c6b, 0xffff, 0x0c8a, 0x0006, - 0x002b, 0x0cdd, 0x0ca6, 0xffff, 0x0cbe, 0xffff, 0x0cdd, 0x0003, - 0x0487, 0x0000, 0x048a, 0x0001, 0x002b, 0x0cf9, 0x0002, 0x048d, - 0x0495, 0x0006, 0x002b, 0x0d2d, 0x0d02, 0xffff, 0x0d14, 0xffff, - 0x0d2d, 0x0006, 0x002b, 0x0d72, 0x0d43, 0xffff, 0x0d59, 0xffff, - 0x0d72, 0x0003, 0x04a1, 0x0000, 0x04a4, 0x0001, 0x002b, 0x0cf9, - 0x0002, 0x04a7, 0x04af, 0x0006, 0x002b, 0x0d2d, 0x0d02, 0xffff, - // Entry 1E600 - 1E63F - 0x0d14, 0xffff, 0x0d2d, 0x0006, 0x002b, 0x0d72, 0x0d43, 0xffff, - 0x0d59, 0xffff, 0x0d72, 0x0003, 0x04bb, 0x04be, 0x04c3, 0x0001, - 0x002b, 0x0d88, 0x0003, 0x002b, 0x0d91, 0x0da5, 0x0db0, 0x0002, - 0x04c6, 0x04ce, 0x0006, 0x002b, 0x0dec, 0x0dc2, 0xffff, 0x0dd4, - 0xffff, 0x0dec, 0x0006, 0x002b, 0x0e30, 0x0e06, 0xffff, 0x0e18, - 0xffff, 0x0e30, 0x0003, 0x04da, 0x0000, 0x04dd, 0x0001, 0x002b, - 0x0e4a, 0x0002, 0x04e0, 0x04e8, 0x0006, 0x002b, 0x0dec, 0x0dc2, - 0xffff, 0x0dd4, 0xffff, 0x0dec, 0x0006, 0x002b, 0x0e30, 0x0e06, - // Entry 1E640 - 1E67F - 0xffff, 0x0e18, 0xffff, 0x0e30, 0x0003, 0x04f4, 0x0000, 0x04f7, - 0x0001, 0x002b, 0x0e4a, 0x0002, 0x04fa, 0x0502, 0x0006, 0x002b, - 0x0e61, 0x0e51, 0xffff, 0x0dd4, 0xffff, 0x0e61, 0x0006, 0x002b, - 0x0e85, 0x0e75, 0xffff, 0x0e18, 0xffff, 0x0e85, 0x0004, 0x050f, - 0x0512, 0x0517, 0x052a, 0x0001, 0x002b, 0x0e99, 0x0003, 0x002b, - 0x0ea2, 0x0eb6, 0x0ec1, 0x0002, 0x051a, 0x0522, 0x0006, 0x002b, - 0x0efd, 0x0ed3, 0xffff, 0x0ee5, 0xffff, 0x0efd, 0x0006, 0x002b, - 0x0f41, 0x0f17, 0xffff, 0x0f29, 0xffff, 0x0f41, 0x0001, 0x002b, - // Entry 1E680 - 1E6BF - 0x0f5b, 0x0004, 0x0532, 0x0000, 0x0535, 0x0548, 0x0001, 0x002b, - 0x0909, 0x0002, 0x0538, 0x0540, 0x0006, 0x002b, 0x0f7b, 0x0f6b, - 0xffff, 0x0ee5, 0xffff, 0x0f7b, 0x0006, 0x002b, 0x0f9f, 0x0f8f, - 0xffff, 0x0f29, 0xffff, 0x0f9f, 0x0001, 0x002b, 0x0f5b, 0x0004, - 0x0550, 0x0000, 0x0553, 0x0566, 0x0001, 0x002b, 0x0909, 0x0002, - 0x0556, 0x055e, 0x0006, 0x002b, 0x0f7b, 0x0f6b, 0xffff, 0x0ee5, - 0xffff, 0x0f7b, 0x0006, 0x002b, 0x0f9f, 0x0f17, 0xffff, 0x0f29, - 0xffff, 0x0f9f, 0x0001, 0x002b, 0x0fb3, 0x0003, 0x056d, 0x0570, - // Entry 1E6C0 - 1E6FF - 0x0577, 0x0001, 0x002b, 0x0fc7, 0x0005, 0x002b, 0x0fd9, 0x0fe4, - 0x0fed, 0x0fce, 0x0ff4, 0x0002, 0x057a, 0x0582, 0x0006, 0x002b, - 0x102d, 0x1003, 0xffff, 0x1017, 0xffff, 0x102d, 0x0006, 0x002b, - 0x106d, 0x1043, 0xffff, 0x1057, 0xffff, 0x106d, 0x0003, 0x058e, - 0x0000, 0x0591, 0x0001, 0x002b, 0x0fc7, 0x0002, 0x0594, 0x059c, - 0x0006, 0x002b, 0x102d, 0x0fed, 0xffff, 0x1017, 0xffff, 0x1083, - 0x0006, 0x002b, 0x1097, 0x0fd9, 0xffff, 0x1057, 0xffff, 0x106d, - 0x0003, 0x05a8, 0x0000, 0x05ab, 0x0001, 0x002b, 0x0fc7, 0x0002, - // Entry 1E700 - 1E73F - 0x05ae, 0x05b6, 0x0006, 0x002b, 0x10ab, 0x0fed, 0xffff, 0x1017, - 0xffff, 0x102d, 0x0006, 0x002b, 0x1097, 0x0fd9, 0xffff, 0x1057, - 0xffff, 0x10bf, 0x0001, 0x05c0, 0x0001, 0x002b, 0x10d3, 0x0003, - 0x0000, 0x05c7, 0x05cc, 0x0003, 0x002b, 0x10e5, 0x1102, 0x111d, - 0x0002, 0x05cf, 0x05d7, 0x0006, 0x002b, 0x1157, 0x1138, 0xffff, - 0x1157, 0xffff, 0x1157, 0x0006, 0x002b, 0x1195, 0x1176, 0xffff, - 0x1195, 0xffff, 0x1195, 0x0003, 0x0000, 0x05e3, 0x05e8, 0x0003, - 0x002b, 0x11b4, 0x0692, 0x11c9, 0x0002, 0x05eb, 0x05f3, 0x0006, - // Entry 1E740 - 1E77F - 0x002b, 0x1157, 0x1138, 0xffff, 0x1157, 0xffff, 0x1157, 0x0006, - 0x002b, 0x1195, 0x1176, 0xffff, 0x1195, 0xffff, 0x1195, 0x0003, - 0x0000, 0x05ff, 0x0604, 0x0003, 0x002b, 0x11b4, 0x0692, 0x11c9, - 0x0002, 0x0607, 0x060f, 0x0006, 0x002b, 0x1157, 0x1138, 0xffff, - 0x1157, 0xffff, 0x1157, 0x0006, 0x002b, 0x1195, 0x1176, 0xffff, - 0x1195, 0xffff, 0x1195, 0x0003, 0x0000, 0x061b, 0x0620, 0x0003, - 0x002b, 0x11dc, 0x0716, 0x11f3, 0x0002, 0x0623, 0x062b, 0x0006, - 0x002b, 0x1223, 0x1208, 0xffff, 0x1223, 0xffff, 0x1223, 0x0006, - // Entry 1E780 - 1E7BF - 0x002b, 0x1259, 0x123e, 0xffff, 0x1259, 0xffff, 0x1259, 0x0003, - 0x0000, 0x0637, 0x063c, 0x0003, 0x002b, 0x1274, 0x069e, 0x1289, - 0x0002, 0x063f, 0x0647, 0x0006, 0x002b, 0x1223, 0x1208, 0xffff, - 0x1223, 0xffff, 0x1223, 0x0006, 0x002b, 0x1259, 0x123e, 0xffff, - 0x1259, 0xffff, 0x1259, 0x0003, 0x0000, 0x0653, 0x0658, 0x0003, - 0x002b, 0x1274, 0x069e, 0x1289, 0x0002, 0x065b, 0x0663, 0x0006, - 0x002b, 0x1223, 0x1208, 0xffff, 0x1223, 0xffff, 0x1223, 0x0006, - 0x002b, 0x1259, 0x123e, 0xffff, 0x1259, 0xffff, 0x1259, 0x0003, - // Entry 1E7C0 - 1E7FF - 0x0000, 0x066f, 0x0674, 0x0003, 0x002b, 0x129c, 0x0724, 0x12b7, - 0x0002, 0x0677, 0x067f, 0x0006, 0x002b, 0x12ef, 0x12d0, 0xffff, - 0x12ef, 0xffff, 0x12ef, 0x0006, 0x002b, 0x132d, 0x130e, 0xffff, - 0x132d, 0xffff, 0x132d, 0x0003, 0x0000, 0x068b, 0x0690, 0x0003, - 0x002b, 0x134c, 0x06aa, 0x1361, 0x0002, 0x0693, 0x069b, 0x0006, - 0x002b, 0x12ef, 0x12d0, 0xffff, 0x12ef, 0xffff, 0x12ef, 0x0006, - 0x002b, 0x132d, 0x130e, 0xffff, 0x132d, 0xffff, 0x132d, 0x0003, - 0x0000, 0x06a7, 0x06ac, 0x0003, 0x002b, 0x134c, 0x06aa, 0x1361, - // Entry 1E800 - 1E83F - 0x0002, 0x06af, 0x06b7, 0x0006, 0x002b, 0x12ef, 0x12d0, 0xffff, - 0x12ef, 0xffff, 0x12ef, 0x0006, 0x002b, 0x132d, 0x130e, 0xffff, - 0x132d, 0xffff, 0x132d, 0x0003, 0x0000, 0x06c3, 0x06c8, 0x0003, - 0x002b, 0x1374, 0x0736, 0x138f, 0x0002, 0x06cb, 0x06d3, 0x0006, - 0x002b, 0x13c7, 0x13a8, 0xffff, 0x13c7, 0xffff, 0x13c7, 0x0006, - 0x002b, 0x1405, 0x13e6, 0xffff, 0x1405, 0xffff, 0x1405, 0x0003, - 0x0000, 0x06df, 0x06e4, 0x0003, 0x002b, 0x1424, 0x06b6, 0x1439, - 0x0002, 0x06e7, 0x06ef, 0x0006, 0x002b, 0x13c7, 0x13a8, 0xffff, - // Entry 1E840 - 1E87F - 0x13c7, 0xffff, 0x13c7, 0x0006, 0x002b, 0x1405, 0x13e6, 0xffff, - 0x1405, 0xffff, 0x1405, 0x0003, 0x0000, 0x06fb, 0x0700, 0x0003, - 0x002b, 0x1424, 0x06b6, 0x1439, 0x0002, 0x0703, 0x070b, 0x0006, - 0x002b, 0x13c7, 0x13a8, 0xffff, 0x13c7, 0xffff, 0x13c7, 0x0006, - 0x002b, 0x1405, 0x13e6, 0xffff, 0x1405, 0xffff, 0x1405, 0x0003, - 0x0000, 0x0717, 0x071c, 0x0003, 0x002b, 0x144c, 0x0748, 0x1467, - 0x0002, 0x071f, 0x0727, 0x0006, 0x002b, 0x149f, 0x1480, 0xffff, - 0x149f, 0xffff, 0x149f, 0x0006, 0x002b, 0x14dd, 0x14be, 0xffff, - // Entry 1E880 - 1E8BF - 0x14dd, 0xffff, 0x14dd, 0x0003, 0x0000, 0x0733, 0x0738, 0x0003, - 0x002b, 0x14fc, 0x06c2, 0x1511, 0x0002, 0x073b, 0x0743, 0x0006, - 0x002b, 0x149f, 0x1480, 0xffff, 0x149f, 0xffff, 0x149f, 0x0006, - 0x002b, 0x14dd, 0x14be, 0xffff, 0x14dd, 0xffff, 0x14dd, 0x0003, - 0x0000, 0x074f, 0x0754, 0x0003, 0x002b, 0x14fc, 0x06c2, 0x1511, - 0x0002, 0x0757, 0x075f, 0x0006, 0x002b, 0x149f, 0x1480, 0xffff, - 0x149f, 0xffff, 0x149f, 0x0006, 0x002b, 0x14dd, 0x14be, 0xffff, - 0x14dd, 0xffff, 0x14dd, 0x0003, 0x0000, 0x076b, 0x0770, 0x0003, - // Entry 1E8C0 - 1E8FF - 0x002b, 0x1524, 0x075a, 0x153d, 0x0002, 0x0773, 0x077b, 0x0006, - 0x002b, 0x156f, 0x1554, 0xffff, 0x156f, 0xffff, 0x156f, 0x0006, - 0x002b, 0x15a5, 0x158a, 0xffff, 0x15a5, 0xffff, 0x15a5, 0x0003, - 0x0000, 0x0787, 0x078c, 0x0003, 0x002b, 0x15c0, 0x06ce, 0x15d5, - 0x0002, 0x078f, 0x0797, 0x0006, 0x002b, 0x156f, 0x1554, 0xffff, - 0x156f, 0xffff, 0x156f, 0x0006, 0x002b, 0x15a5, 0x158a, 0xffff, - 0x15a5, 0xffff, 0x15a5, 0x0003, 0x0000, 0x07a3, 0x07a8, 0x0003, - 0x002b, 0x15c0, 0x06ce, 0x15ea, 0x0002, 0x07ab, 0x07b3, 0x0006, - // Entry 1E900 - 1E93F - 0x002b, 0x156f, 0x1554, 0xffff, 0x156f, 0xffff, 0x156f, 0x0006, - 0x002b, 0x15a5, 0x158a, 0xffff, 0x15a5, 0xffff, 0x15a5, 0x0003, - 0x0000, 0x07bf, 0x07c4, 0x0003, 0x002b, 0x15fd, 0x076a, 0x1614, - 0x0002, 0x07c7, 0x07cf, 0x0006, 0x002b, 0x163d, 0x1629, 0xffff, - 0x163d, 0xffff, 0x163d, 0x0006, 0x002b, 0x1669, 0x1655, 0xffff, - 0x1669, 0xffff, 0x1669, 0x0003, 0x0000, 0x07db, 0x07e0, 0x0003, - 0x002b, 0x1681, 0x06da, 0x1693, 0x0002, 0x07e3, 0x07eb, 0x0006, - 0x002b, 0x163d, 0x1629, 0xffff, 0x163d, 0xffff, 0x163d, 0x0006, - // Entry 1E940 - 1E97F - 0x002b, 0x1669, 0x1655, 0xffff, 0x1669, 0xffff, 0x1669, 0x0003, - 0x0000, 0x07f7, 0x07fc, 0x0003, 0x002b, 0x1681, 0x06da, 0x1693, - 0x0002, 0x07ff, 0x0807, 0x0006, 0x002b, 0x163d, 0x1629, 0xffff, - 0x163d, 0xffff, 0x163d, 0x0006, 0x002b, 0x1669, 0x1655, 0xffff, - 0x1669, 0xffff, 0x1669, 0x0001, 0x0811, 0x0001, 0x002b, 0x16a3, - 0x0003, 0x0818, 0x081b, 0x081f, 0x0001, 0x002b, 0x16bb, 0x0002, - 0x002b, 0xffff, 0x16c2, 0x0002, 0x0822, 0x082a, 0x0006, 0x002b, - 0x16f6, 0x16d0, 0xffff, 0x16e0, 0xffff, 0x16f6, 0x0006, 0x002b, - // Entry 1E980 - 1E9BF - 0x1732, 0x170c, 0xffff, 0x171c, 0xffff, 0x1732, 0x0003, 0x0836, - 0x0000, 0x0839, 0x0001, 0x002b, 0x16bb, 0x0002, 0x083c, 0x0844, - 0x0006, 0x002b, 0x1748, 0x16d0, 0xffff, 0x16e0, 0xffff, 0x1748, - 0x0006, 0x002b, 0x175c, 0x170c, 0xffff, 0x171c, 0xffff, 0x175c, - 0x0003, 0x0850, 0x0000, 0x0853, 0x0001, 0x002b, 0x1770, 0x0002, - 0x0856, 0x085e, 0x0006, 0x002b, 0x1748, 0x16d0, 0xffff, 0x16e0, - 0xffff, 0x1748, 0x0006, 0x002b, 0x175c, 0x170c, 0xffff, 0x171c, - 0xffff, 0x175c, 0x0003, 0x086a, 0x086d, 0x0871, 0x0001, 0x002b, - // Entry 1E9C0 - 1E9FF - 0x1777, 0x0002, 0x002b, 0xffff, 0x177e, 0x0002, 0x0874, 0x087c, - 0x0006, 0x002b, 0x17b5, 0x178c, 0xffff, 0x179c, 0xffff, 0x17b5, - 0x0006, 0x002b, 0x17f4, 0x17cb, 0xffff, 0x17db, 0xffff, 0x17f4, - 0x0003, 0x0888, 0x0000, 0x088b, 0x0001, 0x002b, 0x180a, 0x0002, - 0x088e, 0x0896, 0x0006, 0x002b, 0x1828, 0x178c, 0xffff, 0x1811, - 0xffff, 0x1828, 0x0006, 0x002b, 0x183c, 0x17cb, 0xffff, 0x183c, - 0xffff, 0x183c, 0x0003, 0x08a2, 0x0000, 0x08a5, 0x0001, 0x002b, - 0x180a, 0x0002, 0x08a8, 0x08b0, 0x0006, 0x002b, 0x1828, 0x178c, - // Entry 1EA00 - 1EA3F - 0xffff, 0x1811, 0xffff, 0x1828, 0x0006, 0x002b, 0x183c, 0x17cb, - 0xffff, 0x1850, 0xffff, 0x183c, 0x0003, 0x08bc, 0x08bf, 0x08c3, - 0x0001, 0x002b, 0x1867, 0x0002, 0x002b, 0xffff, 0x1872, 0x0002, - 0x08c6, 0x08ce, 0x0006, 0x002b, 0x18ac, 0x187d, 0xffff, 0x1891, - 0xffff, 0x18ac, 0x0006, 0x002b, 0x18f3, 0x18c4, 0xffff, 0x18d8, - 0xffff, 0x18f3, 0x0003, 0x08da, 0x0000, 0x08dd, 0x0001, 0x002b, - 0x0c09, 0x0002, 0x08e0, 0x08e8, 0x0006, 0x002b, 0x1932, 0x190b, - 0xffff, 0x191b, 0xffff, 0x1932, 0x0006, 0x002b, 0x196d, 0x1946, - // Entry 1EA40 - 1EA7F - 0xffff, 0x1956, 0xffff, 0x196d, 0x0003, 0x08f4, 0x0000, 0x08f7, - 0x0001, 0x002b, 0x0c09, 0x0002, 0x08fa, 0x0902, 0x0006, 0x002b, - 0x1932, 0x190b, 0xffff, 0x191b, 0xffff, 0x1932, 0x0006, 0x002b, - 0x196d, 0x1946, 0xffff, 0x1956, 0xffff, 0x196d, 0x0001, 0x090c, - 0x0001, 0x002b, 0x1981, 0x0004, 0x0914, 0x0919, 0x091e, 0x092d, - 0x0003, 0x002b, 0x198a, 0x199e, 0x19a8, 0x0003, 0x002b, 0x19ac, - 0x19b9, 0x19cf, 0x0002, 0x0000, 0x0921, 0x0003, 0x0000, 0x0928, - 0x0925, 0x0001, 0x002b, 0x19e7, 0x0003, 0x002b, 0xffff, 0x1a0c, - // Entry 1EA80 - 1EABF - 0x1a2b, 0x0002, 0x0000, 0x0930, 0x0003, 0x09d3, 0x0a72, 0x0934, - 0x009d, 0x002b, 0x1a48, 0x1a62, 0x1a81, 0x1aa0, 0x1ade, 0x1b44, - 0x1b96, 0x1bf3, 0x1c60, 0x1cdc, 0x1d61, 0x1dc3, 0x1e0d, 0x1e63, - 0x1ecd, 0x1f38, 0x1fa8, 0x2013, 0x20a0, 0x2126, 0x21b5, 0x2232, - 0x22aa, 0x231f, 0x2393, 0x23d3, 0x23e7, 0x2417, 0x245b, 0x2499, - 0x24db, 0x2509, 0x255d, 0x25a9, 0x25f7, 0x263f, 0x265e, 0x2693, - 0x26f2, 0x2753, 0x278b, 0x27a1, 0x27c8, 0x27fe, 0x2844, 0x287b, - 0x28ec, 0x293e, 0x2971, 0x29e0, 0x2a42, 0x2a7e, 0x2aa1, 0x2aef, - // Entry 1EAC0 - 1EAFF - 0x2b0e, 0x2b43, 0x2b87, 0x2ba4, 0x2be0, 0x2c57, 0x2cad, 0x2cce, - 0x2d14, 0x2da7, 0x2e03, 0x2e3b, 0x2e4d, 0x2e74, 0x2e8d, 0x2eb2, - 0x2ed7, 0x2f10, 0x2f66, 0x2fc2, 0x300e, 0x3073, 0x30e5, 0x3104, - 0x3139, 0x3179, 0x31ad, 0x31fd, 0x3219, 0x3252, 0x32ec, 0x3316, - 0x334e, 0x3362, 0x3389, 0x33a4, 0x33d9, 0x3425, 0x3463, 0x34e6, - 0x3553, 0x35b3, 0x35f3, 0x3609, 0x361d, 0x3652, 0x36c7, 0x3731, - 0x3785, 0x3799, 0x37e0, 0x3868, 0x38d0, 0x3922, 0x3962, 0x3974, - 0x39b8, 0x3a0c, 0x3a5e, 0x3aae, 0x3af3, 0x3b57, 0x3b6d, 0x3b83, - // Entry 1EB00 - 1EB3F - 0x3b9f, 0x3bb7, 0x3be1, 0x3c2f, 0x3c77, 0x3cb3, 0x3cce, 0x3ce6, - 0x3cff, 0x3d22, 0x3d3a, 0x3d50, 0x3d7a, 0x3dba, 0x3dd6, 0x3e00, - 0x3e3c, 0x3e6c, 0x3ebc, 0x3eee, 0x3f56, 0x3fb8, 0x3ff8, 0x402e, - 0x4098, 0x40e0, 0x40f6, 0x410f, 0x414a, 0x41a8, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32b8, 0x009d, - 0x002b, 0xffff, 0xffff, 0xffff, 0xffff, 0x1abf, 0x1b30, 0x1b80, - 0x1bd6, 0x1c41, 0x1cb2, 0x1d44, 0x1daf, 0x1dfb, 0x1e45, 0x1eb3, - 0x1f15, 0x1f92, 0x1fe8, 0x207d, 0x20fa, 0x2192, 0x220f, 0x228c, - // Entry 1EB40 - 1EB7F - 0x22fa, 0x237d, 0xffff, 0xffff, 0x23ff, 0xffff, 0x2482, 0xffff, - 0x24f3, 0x2549, 0x2599, 0x25dd, 0xffff, 0xffff, 0x2679, 0x26db, - 0x2741, 0xffff, 0xffff, 0xffff, 0x27e5, 0xffff, 0x285c, 0x28cd, - 0xffff, 0x2952, 0x29c3, 0x2a2e, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2b2b, 0xffff, 0xffff, 0x2bbf, 0x2c36, 0xffff, 0xffff, 0x2ce2, - 0x2d8c, 0x2df1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2efc, 0x2f4c, 0x2fae, 0x2ffe, 0x3042, 0xffff, 0xffff, 0x3123, - 0xffff, 0x318f, 0xffff, 0xffff, 0x3232, 0xffff, 0x3304, 0xffff, - // Entry 1EB80 - 1EBBF - 0xffff, 0xffff, 0xffff, 0x33bd, 0xffff, 0x343b, 0x34c7, 0x3538, - 0x359d, 0xffff, 0xffff, 0xffff, 0x362f, 0x36ac, 0x3711, 0xffff, - 0xffff, 0x37b6, 0x3848, 0x38bc, 0x390c, 0xffff, 0xffff, 0x39a0, - 0x39fc, 0x3a40, 0xffff, 0x3acb, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3bcd, 0x3c1d, 0x3c63, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3d64, 0xffff, 0xffff, 0x3dec, 0xffff, - 0x3e4e, 0xffff, 0x3ed2, 0x3f3a, 0x3fa2, 0xffff, 0x4010, 0x407e, - 0xffff, 0xffff, 0xffff, 0x4134, 0x418a, 0xffff, 0xffff, 0xffff, - // Entry 1EBC0 - 1EBFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32a6, 0x009d, 0x002b, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1b08, 0x1b63, 0x1bb7, 0x1c1b, - 0x1c8a, 0x1d11, 0x1d89, 0x1de0, 0x1e2a, 0x1e8c, 0x1ef2, 0x1f66, - 0x1fc9, 0x2049, 0x20ce, 0x215d, 0x21e3, 0x2260, 0x22d3, 0x234f, - 0x23b4, 0xffff, 0xffff, 0x243a, 0xffff, 0x24bb, 0xffff, 0x252a, - 0x257c, 0x25c4, 0x261c, 0xffff, 0xffff, 0x26b8, 0x2714, 0x2770, - 0xffff, 0xffff, 0xffff, 0x2822, 0xffff, 0x28a5, 0x2916, 0xffff, - 0x299b, 0x2a08, 0x2a61, 0xffff, 0xffff, 0xffff, 0xffff, 0x2b66, - // Entry 1EC00 - 1EC3F - 0xffff, 0xffff, 0x2c0c, 0x2c83, 0xffff, 0xffff, 0x2d51, 0x2dcd, - 0x2e20, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f2f, - 0x2f8b, 0x2fe1, 0x3029, 0x30ad, 0xffff, 0xffff, 0x315a, 0xffff, - 0x31d6, 0xffff, 0xffff, 0x327d, 0xffff, 0x3333, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3400, 0xffff, 0x3496, 0x3510, 0x3579, 0x35d4, - 0xffff, 0xffff, 0xffff, 0x3680, 0x36ed, 0x375c, 0xffff, 0xffff, - 0x3815, 0x3893, 0x38ef, 0x3943, 0xffff, 0xffff, 0x39db, 0x3a27, - 0x3a87, 0xffff, 0x3b26, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1EC40 - 1EC7F - 0x3c00, 0x3c4a, 0x3c96, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3d9b, 0xffff, 0xffff, 0x3e1f, 0xffff, 0x3e95, - 0xffff, 0x3f15, 0x3f7d, 0x3fd9, 0xffff, 0x4057, 0x40bd, 0xffff, - 0xffff, 0xffff, 0x416b, 0x41d1, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x32d3, 0x0003, 0x0004, 0x03ee, - 0x07c8, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - 0x002e, 0x0059, 0x0000, 0x0256, 0x02c8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x02df, 0x03d7, 0x0001, 0x0018, 0x0001, 0x001a, 0x0003, - // Entry 1EC80 - 1ECBF - 0x0000, 0x0000, 0x001e, 0x000e, 0x002c, 0xffff, 0x0000, 0x0019, - 0x002f, 0x003c, 0x004c, 0x0053, 0x0069, 0x007f, 0x009b, 0x00ab, - 0x00b5, 0x00c5, 0x00d8, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0037, 0x0000, 0x0048, 0x0004, 0x0045, 0x003f, 0x003c, - 0x0042, 0x0001, 0x002c, 0x00eb, 0x0001, 0x002c, 0x00fc, 0x0001, - 0x0007, 0x001d, 0x0001, 0x002c, 0x0107, 0x0004, 0x0056, 0x0050, - 0x004d, 0x0053, 0x0001, 0x002c, 0x010f, 0x0001, 0x002c, 0x010f, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0062, - // Entry 1ECC0 - 1ECFF - 0x00c7, 0x011e, 0x0153, 0x0209, 0x0223, 0x0234, 0x0245, 0x0002, - 0x0065, 0x0096, 0x0003, 0x0069, 0x0078, 0x0087, 0x000d, 0x002c, - 0xffff, 0x011e, 0x0128, 0x0135, 0x0145, 0x0158, 0x015f, 0x0169, - 0x0176, 0x0180, 0x018d, 0x01a0, 0x01aa, 0x000d, 0x000c, 0xffff, - 0x0126, 0x4e36, 0x0131, 0x014e, 0x4e3d, 0x4e41, 0x013c, 0x014e, - 0x4e48, 0x014e, 0x0152, 0x0156, 0x000d, 0x002c, 0xffff, 0x01b7, - 0x01c7, 0x0135, 0x0145, 0x0158, 0x015f, 0x01da, 0x01ea, 0x01fa, - 0x020d, 0x0223, 0x0233, 0x0003, 0x009a, 0x00a9, 0x00b8, 0x000d, - // Entry 1ED00 - 1ED3F - 0x002c, 0xffff, 0x011e, 0x0128, 0x0135, 0x0145, 0x0158, 0x015f, - 0x0169, 0x0176, 0x0180, 0x018d, 0x01a0, 0x01aa, 0x000d, 0x000c, - 0xffff, 0x0126, 0x4e36, 0x0131, 0x014e, 0x4e3d, 0x4e41, 0x013c, - 0x014e, 0x4e48, 0x014e, 0x0152, 0x0156, 0x000d, 0x002c, 0xffff, - 0x01b7, 0x01c7, 0x0135, 0x0145, 0x0158, 0x015f, 0x01da, 0x01ea, - 0x01fa, 0x020d, 0x0223, 0x0233, 0x0002, 0x00ca, 0x00f4, 0x0005, - 0x00d0, 0x00d9, 0x00eb, 0x0000, 0x00e2, 0x0007, 0x002c, 0x0246, - 0x0250, 0x025a, 0x0267, 0x0271, 0x027e, 0x028e, 0x0007, 0x000c, - // Entry 1ED40 - 1ED7F - 0x0246, 0x4e4f, 0x024e, 0x0255, 0x4e56, 0x4e5d, 0x4e64, 0x0007, - 0x000c, 0x0246, 0x4e4f, 0x024e, 0x0255, 0x4e56, 0x4e5d, 0x4e64, - 0x0007, 0x002c, 0x0298, 0x02ab, 0x02be, 0x02d4, 0x02e7, 0x02fd, - 0x0316, 0x0005, 0x00fa, 0x0103, 0x0115, 0x0000, 0x010c, 0x0007, - 0x002c, 0x0246, 0x0250, 0x025a, 0x0267, 0x0271, 0x027e, 0x028e, - 0x0007, 0x000c, 0x0246, 0x4e4f, 0x024e, 0x0255, 0x4e56, 0x4e5d, - 0x4e64, 0x0007, 0x000c, 0x0246, 0x4e4f, 0x024e, 0x0255, 0x4e56, - 0x4e5d, 0x4e64, 0x0007, 0x002c, 0x0298, 0x02ab, 0x02be, 0x02d4, - // Entry 1ED80 - 1EDBF - 0x02e7, 0x02fd, 0x0316, 0x0002, 0x0121, 0x013a, 0x0003, 0x0125, - 0x012c, 0x0133, 0x0005, 0x002c, 0xffff, 0x0329, 0x0331, 0x0339, - 0x0341, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x002c, 0xffff, 0x0349, 0x0369, 0x038c, 0x03af, 0x0003, - 0x013e, 0x0145, 0x014c, 0x0005, 0x002c, 0xffff, 0x0329, 0x0331, - 0x0339, 0x0341, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x002c, 0xffff, 0x0349, 0x0369, 0x038c, 0x03af, - 0x0002, 0x0156, 0x01b1, 0x0003, 0x015a, 0x0177, 0x0194, 0x0007, - // Entry 1EDC0 - 1EDFF - 0x0165, 0x0168, 0x0162, 0x016b, 0x016e, 0x0171, 0x0174, 0x0001, - 0x002c, 0x03cf, 0x0001, 0x002c, 0x03ee, 0x0001, 0x002c, 0x040a, - 0x0001, 0x002c, 0x0420, 0x0001, 0x002c, 0x040a, 0x0001, 0x002c, - 0x042d, 0x0001, 0x002c, 0x0437, 0x0007, 0x0182, 0x0185, 0x017f, - 0x0188, 0x018b, 0x018e, 0x0191, 0x0001, 0x002c, 0x03cf, 0x0001, - 0x002c, 0x0441, 0x0001, 0x000c, 0x014e, 0x0001, 0x002c, 0x0420, - 0x0001, 0x002c, 0x040a, 0x0001, 0x002c, 0x042d, 0x0001, 0x002c, - 0x042d, 0x0007, 0x019f, 0x01a2, 0x019c, 0x01a5, 0x01a8, 0x01ab, - // Entry 1EE00 - 1EE3F - 0x01ae, 0x0001, 0x002c, 0x03cf, 0x0001, 0x002c, 0x03ee, 0x0001, - 0x002c, 0x040a, 0x0001, 0x002c, 0x0420, 0x0001, 0x002c, 0x040a, - 0x0001, 0x002c, 0x042d, 0x0001, 0x002c, 0x0437, 0x0003, 0x01b5, - 0x01cf, 0x01ec, 0x0007, 0x01bd, 0x01c0, 0x0000, 0x01c3, 0x01c6, - 0x01c9, 0x01cc, 0x0001, 0x002c, 0x03ee, 0x0001, 0x002c, 0x040a, - 0x0001, 0x002c, 0x0420, 0x0001, 0x002c, 0x0448, 0x0001, 0x002c, - 0x042d, 0x0001, 0x002c, 0x0437, 0x0007, 0x01da, 0x01dd, 0x01d7, - 0x01e0, 0x01e3, 0x01e6, 0x01e9, 0x0001, 0x002c, 0x0458, 0x0001, - // Entry 1EE40 - 1EE7F - 0x002c, 0x0441, 0x0001, 0x000c, 0x014e, 0x0001, 0x002c, 0x0420, - 0x0001, 0x002c, 0x040a, 0x0001, 0x002c, 0x042d, 0x0001, 0x002c, - 0x0437, 0x0007, 0x01f7, 0x01fa, 0x01f4, 0x01fd, 0x0200, 0x0203, - 0x0206, 0x0001, 0x002c, 0x03cf, 0x0001, 0x002c, 0x03ee, 0x0001, - 0x002c, 0x040a, 0x0001, 0x002c, 0x0420, 0x0001, 0x002c, 0x0448, - 0x0001, 0x002c, 0x042d, 0x0001, 0x002c, 0x0437, 0x0003, 0x0218, - 0x0000, 0x020d, 0x0002, 0x0210, 0x0214, 0x0002, 0x002c, 0x046c, - 0x04a3, 0x0002, 0x002c, 0x0486, 0x04b7, 0x0002, 0x021b, 0x021f, - // Entry 1EE80 - 1EEBF - 0x0002, 0x002c, 0x046c, 0x04c4, 0x0002, 0x002c, 0x0486, 0x04b7, - 0x0004, 0x0231, 0x022b, 0x0228, 0x022e, 0x0001, 0x0005, 0x0773, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, 0x0860, 0x0001, 0x0000, - 0x237b, 0x0004, 0x0242, 0x023c, 0x0239, 0x023f, 0x0001, 0x0002, - 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, - 0x0002, 0x0478, 0x0004, 0x0253, 0x024d, 0x024a, 0x0250, 0x0001, - 0x002c, 0x010f, 0x0001, 0x002c, 0x010f, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0005, 0x025c, 0x0000, 0x0000, 0x0000, - // Entry 1EEC0 - 1EEFF - 0x02c1, 0x0002, 0x025f, 0x0290, 0x0003, 0x0263, 0x0272, 0x0281, - 0x000d, 0x002c, 0xffff, 0x04d4, 0x04e4, 0x04f4, 0x050a, 0x051a, - 0x052d, 0x0543, 0x0556, 0x056c, 0x0585, 0x058f, 0x0599, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x002c, - 0xffff, 0x04d4, 0x04e4, 0x04f4, 0x050a, 0x051a, 0x052d, 0x0543, - 0x0556, 0x056c, 0x0585, 0x058f, 0x0599, 0x0003, 0x0294, 0x02a3, - 0x02b2, 0x000d, 0x002c, 0xffff, 0x04d4, 0x04e4, 0x04f4, 0x050a, - // Entry 1EF00 - 1EF3F - 0x051a, 0x052d, 0x0543, 0x0556, 0x056c, 0x0585, 0x058f, 0x0599, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - 0x002c, 0xffff, 0x04d4, 0x04e4, 0x04f4, 0x050a, 0x051a, 0x052d, - 0x0543, 0x0556, 0x056c, 0x0585, 0x058f, 0x0599, 0x0001, 0x02c3, - 0x0001, 0x02c5, 0x0001, 0x002c, 0x05af, 0x0001, 0x02ca, 0x0001, - 0x02cc, 0x0003, 0x0000, 0x0000, 0x02d0, 0x000d, 0x002c, 0xffff, - 0x05b6, 0x05cc, 0x05d6, 0x05f3, 0x0616, 0x0639, 0x0662, 0x066c, - // Entry 1EF40 - 1EF7F - 0x0679, 0x0689, 0x069c, 0x06b6, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x02e5, 0x0001, 0x02e7, 0x0001, 0x02e9, 0x00ec, 0x002c, - 0x06d9, 0x06f5, 0x0714, 0x0733, 0x074c, 0x0768, 0x0781, 0x079a, - 0x07b3, 0x07cc, 0x07e8, 0x080d, 0x0845, 0x0877, 0x08a9, 0x08de, - 0x0910, 0x0929, 0x0942, 0x0967, 0x0983, 0x09a2, 0x09be, 0x09d7, - 0x09f6, 0x0a12, 0x0a2e, 0x0a47, 0x0a63, 0x0a82, 0x0aa1, 0x0ac6, - 0x0ae2, 0x0afb, 0x0b14, 0x0b30, 0x0b52, 0x0b7a, 0x0b9c, 0x0bb2, - 0x0bcb, 0x0be7, 0x0c09, 0x0c26, 0x0c42, 0x0c61, 0x0c7a, 0x0c96, - // Entry 1EF80 - 1EFBF - 0x0cad, 0x0cc6, 0x0ceb, 0x0d0a, 0x0d24, 0x0d3f, 0x0d60, 0x0d81, - 0x0da2, 0x0dbd, 0x0dd8, 0x0dff, 0x0e20, 0x0e44, 0x0e5c, 0x0e7a, - 0x0e98, 0x0ebf, 0x0ee0, 0x0efb, 0x0f22, 0x0f3a, 0x0f58, 0x0f76, - 0x0f91, 0x0fa9, 0x0fca, 0x0fe5, 0x1000, 0x101b, 0x103f, 0x105b, - 0x1079, 0x1095, 0x10b0, 0x10ce, 0x10ec, 0x110a, 0x1125, 0x1140, - 0x1158, 0x1173, 0x1194, 0x11b5, 0x11d6, 0x11f7, 0x1215, 0x1230, - 0x1254, 0x126c, 0x128a, 0x12a5, 0x12c4, 0x12dc, 0x12f7, 0x1312, - 0x132d, 0x1348, 0x1363, 0x138d, 0x13ab, 0x13cf, 0x13ea, 0x140e, - // Entry 1EFC0 - 1EFFF - 0x1432, 0x144e, 0x146c, 0x1496, 0x14b4, 0x14d5, 0x14ea, 0x150e, - 0x152f, 0x154d, 0x156b, 0x1586, 0x15ad, 0x15d7, 0x15f5, 0x161f, - 0x1638, 0x1656, 0x1677, 0x1692, 0x16b0, 0x16ce, 0x16e9, 0x1707, - 0x1723, 0x173e, 0x175a, 0x1778, 0x1793, 0x17a8, 0x17c3, 0x17de, - 0x17ff, 0x181d, 0x183e, 0x185c, 0x1874, 0x188f, 0x18ad, 0x18c8, - 0x18ec, 0x1907, 0x1928, 0x194c, 0x196a, 0x198b, 0x19a9, 0x19ca, - 0x19e8, 0x1a0c, 0x1a2a, 0x1a48, 0x1a6f, 0x1a8a, 0x1aa8, 0x1ac9, - 0x1ae7, 0x1afc, 0x1b1d, 0x1b32, 0x1b4d, 0x1b6b, 0x1b92, 0x1bb1, - // Entry 1F000 - 1F03F - 0x1bd2, 0x1bf9, 0x1c14, 0x1c35, 0x1c53, 0x1c71, 0x1c8c, 0x1cb0, - 0x1cd1, 0x1cf2, 0x1d0d, 0x1d2b, 0x1d43, 0x1d61, 0x1d88, 0x1da9, - 0x1dc4, 0x1de2, 0x1e00, 0x1e1e, 0x1e42, 0x1e60, 0x1e7e, 0x1e9d, - 0x1eb8, 0x1ed6, 0x1eeb, 0x1f15, 0x1f33, 0x1f51, 0x1f6c, 0x1f8a, - 0x1fab, 0x1fcf, 0x1fea, 0x200b, 0x202c, 0x204d, 0x206b, 0x208c, - 0x20ab, 0x20d2, 0x20f0, 0x210c, 0x212d, 0x214e, 0x216f, 0x218d, - 0x21ae, 0x21cc, 0x21e7, 0x2202, 0x2220, 0x223f, 0x2263, 0x2281, - 0x229c, 0x22a9, 0x22b9, 0x22c6, 0x0001, 0x03d9, 0x0001, 0x03db, - // Entry 1F040 - 1F07F - 0x0003, 0x0000, 0x0000, 0x03df, 0x000d, 0x002d, 0xffff, 0x0000, - 0x0019, 0x003e, 0x0057, 0x0061, 0x0074, 0x008d, 0x009a, 0x00a4, - 0x00b1, 0x00b8, 0x00c5, 0x0040, 0x042f, 0x0000, 0x0000, 0x0434, - 0x044b, 0x045d, 0x046f, 0x0486, 0x049d, 0x04b4, 0x04cb, 0x04dd, - 0x04ef, 0x050a, 0x0520, 0x0000, 0x0000, 0x0000, 0x0536, 0x054f, - 0x0561, 0x0000, 0x0000, 0x0000, 0x0573, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0578, 0x058c, 0x05a0, 0x05b4, 0x05c8, 0x05dc, - 0x05f0, 0x0604, 0x0618, 0x062c, 0x0640, 0x0654, 0x0668, 0x067c, - // Entry 1F080 - 1F0BF - 0x0690, 0x06a4, 0x06b8, 0x06cc, 0x06e0, 0x06f4, 0x0708, 0x0000, - 0x0710, 0x0000, 0x0715, 0x072b, 0x073d, 0x074f, 0x0765, 0x0777, - 0x0789, 0x079f, 0x07b1, 0x07c3, 0x0001, 0x0431, 0x0001, 0x002d, - 0x00de, 0x0003, 0x0438, 0x043b, 0x0440, 0x0001, 0x002d, 0x00e8, - 0x0003, 0x002d, 0x00f5, 0x0112, 0x0126, 0x0002, 0x0443, 0x0447, - 0x0002, 0x002d, 0x0140, 0x0140, 0x0002, 0x002d, 0x015b, 0x015b, - 0x0003, 0x044f, 0x0000, 0x0452, 0x0001, 0x002d, 0x00e8, 0x0002, - 0x0455, 0x0459, 0x0002, 0x002d, 0x0140, 0x0140, 0x0002, 0x002d, - // Entry 1F0C0 - 1F0FF - 0x015b, 0x015b, 0x0003, 0x0461, 0x0000, 0x0464, 0x0001, 0x002d, - 0x00e8, 0x0002, 0x0467, 0x046b, 0x0002, 0x002d, 0x0140, 0x0140, - 0x0002, 0x002d, 0x015b, 0x015b, 0x0003, 0x0473, 0x0476, 0x047b, - 0x0001, 0x002d, 0x0179, 0x0003, 0x002d, 0x018c, 0x01af, 0x01c9, - 0x0002, 0x047e, 0x0482, 0x0002, 0x002d, 0x020a, 0x01e9, 0x0002, - 0x002d, 0x0234, 0x0234, 0x0003, 0x048a, 0x048d, 0x0492, 0x0001, - 0x002d, 0x0179, 0x0003, 0x002d, 0x018c, 0x01af, 0x01c9, 0x0002, - 0x0495, 0x0499, 0x0002, 0x002d, 0x020a, 0x01e9, 0x0002, 0x002d, - // Entry 1F100 - 1F13F - 0x0258, 0x0234, 0x0003, 0x04a1, 0x04a4, 0x04a9, 0x0001, 0x002d, - 0x0179, 0x0003, 0x002d, 0x018c, 0x01af, 0x01c9, 0x0002, 0x04ac, - 0x04b0, 0x0002, 0x002d, 0x0285, 0x0285, 0x0002, 0x002d, 0x029b, - 0x029b, 0x0003, 0x04b8, 0x04bb, 0x04c0, 0x0001, 0x002d, 0x02b4, - 0x0003, 0x002d, 0x02be, 0x02d8, 0x02e9, 0x0002, 0x04c3, 0x04c7, - 0x0002, 0x002d, 0x0300, 0x0300, 0x0002, 0x002d, 0x0318, 0x0318, - 0x0003, 0x04cf, 0x0000, 0x04d2, 0x0001, 0x002d, 0x02b4, 0x0002, - 0x04d5, 0x04d9, 0x0002, 0x002d, 0x0300, 0x0300, 0x0002, 0x002d, - // Entry 1F140 - 1F17F - 0x0318, 0x0318, 0x0003, 0x04e1, 0x0000, 0x04e4, 0x0001, 0x002d, - 0x02b4, 0x0002, 0x04e7, 0x04eb, 0x0002, 0x002d, 0x0300, 0x0300, - 0x0002, 0x002d, 0x0318, 0x0318, 0x0004, 0x04f4, 0x04f7, 0x04fc, - 0x0507, 0x0001, 0x002d, 0x0333, 0x0003, 0x002d, 0x0346, 0x0369, - 0x0383, 0x0002, 0x04ff, 0x0503, 0x0002, 0x002d, 0x03a3, 0x03a3, - 0x0002, 0x002d, 0x03c4, 0x03c4, 0x0001, 0x002d, 0x03e8, 0x0004, - 0x050f, 0x0000, 0x0512, 0x051d, 0x0001, 0x002d, 0x0333, 0x0002, - 0x0515, 0x0519, 0x0002, 0x002d, 0x03a3, 0x03a3, 0x0002, 0x002d, - // Entry 1F180 - 1F1BF - 0x03c4, 0x03c4, 0x0001, 0x002d, 0x03e8, 0x0004, 0x0525, 0x0000, - 0x0528, 0x0533, 0x0001, 0x002d, 0x0333, 0x0002, 0x052b, 0x052f, - 0x0002, 0x002d, 0x03a3, 0x03a3, 0x0002, 0x002d, 0x03c4, 0x03c4, - 0x0001, 0x0000, 0x1b0d, 0x0003, 0x053a, 0x053d, 0x0544, 0x0001, - 0x002d, 0x0406, 0x0005, 0x002d, 0x042d, 0x0434, 0x042d, 0x0410, - 0x043b, 0x0002, 0x0547, 0x054b, 0x0002, 0x002d, 0x044b, 0x044b, - 0x0002, 0x002d, 0x0463, 0x0463, 0x0003, 0x0553, 0x0000, 0x0556, - 0x0001, 0x002d, 0x0406, 0x0002, 0x0559, 0x055d, 0x0002, 0x002d, - // Entry 1F1C0 - 1F1FF - 0x044b, 0x044b, 0x0002, 0x002d, 0x0463, 0x0463, 0x0003, 0x0565, - 0x0000, 0x0568, 0x0001, 0x002d, 0x0406, 0x0002, 0x056b, 0x056f, - 0x0002, 0x002d, 0x044b, 0x044b, 0x0002, 0x002d, 0x0463, 0x0463, - 0x0001, 0x0575, 0x0001, 0x002d, 0x047e, 0x0003, 0x0000, 0x057c, - 0x0581, 0x0003, 0x002d, 0x04a2, 0x04c5, 0x04df, 0x0002, 0x0584, - 0x0588, 0x0002, 0x002d, 0x04ff, 0x04ff, 0x0002, 0x002d, 0x0520, - 0x0520, 0x0003, 0x0000, 0x0590, 0x0595, 0x0003, 0x002d, 0x0547, - 0x0562, 0x0574, 0x0002, 0x0598, 0x059c, 0x0002, 0x002d, 0x04ff, - // Entry 1F200 - 1F23F - 0x04ff, 0x0002, 0x002d, 0x0520, 0x0520, 0x0003, 0x0000, 0x05a4, - 0x05a9, 0x0003, 0x002d, 0x0547, 0x0562, 0x0574, 0x0002, 0x05ac, - 0x05b0, 0x0002, 0x002d, 0x04ff, 0x04ff, 0x0002, 0x002d, 0x0520, - 0x0520, 0x0003, 0x0000, 0x05b8, 0x05bd, 0x0003, 0x002d, 0x058c, - 0x05af, 0x05c9, 0x0002, 0x05c0, 0x05c4, 0x0002, 0x002d, 0x05e9, - 0x05e9, 0x0002, 0x002d, 0x060a, 0x060a, 0x0003, 0x0000, 0x05cc, - 0x05d1, 0x0003, 0x002d, 0x0631, 0x064c, 0x065e, 0x0002, 0x05d4, - 0x05d8, 0x0002, 0x002d, 0x05e9, 0x05e9, 0x0002, 0x002d, 0x060a, - // Entry 1F240 - 1F27F - 0x060a, 0x0003, 0x0000, 0x05e0, 0x05e5, 0x0003, 0x002d, 0x0631, - 0x064c, 0x065e, 0x0002, 0x05e8, 0x05ec, 0x0002, 0x002d, 0x05e9, - 0x05e9, 0x0002, 0x002d, 0x060a, 0x060a, 0x0003, 0x0000, 0x05f4, - 0x05f9, 0x0003, 0x002d, 0x0676, 0x069c, 0x06b9, 0x0002, 0x05fc, - 0x0600, 0x0002, 0x002d, 0x06dc, 0x06dc, 0x0002, 0x002d, 0x0700, - 0x0700, 0x0003, 0x0000, 0x0608, 0x060d, 0x0003, 0x002d, 0x072a, - 0x0748, 0x075d, 0x0002, 0x0610, 0x0614, 0x0002, 0x002d, 0x06dc, - 0x06dc, 0x0002, 0x002d, 0x0700, 0x0700, 0x0003, 0x0000, 0x061c, - // Entry 1F280 - 1F2BF - 0x0621, 0x0003, 0x002d, 0x072a, 0x0748, 0x075d, 0x0002, 0x0624, - 0x0628, 0x0002, 0x002d, 0x06dc, 0x06dc, 0x0002, 0x002d, 0x0700, - 0x0700, 0x0003, 0x0000, 0x0630, 0x0635, 0x0003, 0x002d, 0x0778, - 0x079b, 0x07b5, 0x0002, 0x0638, 0x063c, 0x0002, 0x002d, 0x07d5, - 0x07d5, 0x0002, 0x002d, 0x07f6, 0x07f6, 0x0003, 0x0000, 0x0644, - 0x0649, 0x0003, 0x002d, 0x081d, 0x0838, 0x084a, 0x0002, 0x064c, - 0x0650, 0x0002, 0x002d, 0x07d5, 0x07d5, 0x0002, 0x002d, 0x07f6, - 0x07f6, 0x0003, 0x0000, 0x0658, 0x065d, 0x0003, 0x002d, 0x081d, - // Entry 1F2C0 - 1F2FF - 0x0838, 0x084a, 0x0002, 0x0660, 0x0664, 0x0002, 0x002d, 0x07d5, - 0x07d5, 0x0002, 0x002d, 0x07f6, 0x07f6, 0x0003, 0x0000, 0x066c, - 0x0671, 0x0003, 0x002d, 0x0862, 0x0888, 0x08a5, 0x0002, 0x0674, - 0x0678, 0x0002, 0x002d, 0x08c8, 0x08c8, 0x0002, 0x002d, 0x08ec, - 0x08ec, 0x0003, 0x0000, 0x0680, 0x0685, 0x0003, 0x002d, 0x0916, - 0x0934, 0x0949, 0x0002, 0x0688, 0x068c, 0x0002, 0x0000, 0x1cb9, - 0x1cb9, 0x0002, 0x0000, 0x1cc8, 0x1cc8, 0x0003, 0x0000, 0x0694, - 0x0699, 0x0003, 0x002d, 0x0916, 0x0934, 0x0949, 0x0002, 0x069c, - // Entry 1F300 - 1F33F - 0x06a0, 0x0002, 0x0000, 0x1cb9, 0x1cb9, 0x0002, 0x0000, 0x1cc8, - 0x1cc8, 0x0003, 0x0000, 0x06a8, 0x06ad, 0x0003, 0x002d, 0x0964, - 0x098d, 0x09ad, 0x0002, 0x06b0, 0x06b4, 0x0002, 0x002d, 0x09d3, - 0x09d3, 0x0002, 0x002d, 0x09fa, 0x09fa, 0x0003, 0x0000, 0x06bc, - 0x06c1, 0x0003, 0x002d, 0x0a27, 0x0a48, 0x0a60, 0x0002, 0x06c4, - 0x06c8, 0x0002, 0x0000, 0x1cfb, 0x1cfb, 0x0002, 0x0000, 0x1d08, - 0x1d08, 0x0003, 0x0000, 0x06d0, 0x06d5, 0x0003, 0x002d, 0x0a27, - 0x0a48, 0x0a60, 0x0002, 0x06d8, 0x06dc, 0x0002, 0x0000, 0x1cfb, - // Entry 1F340 - 1F37F - 0x1cfb, 0x0002, 0x0000, 0x1d08, 0x1d08, 0x0003, 0x0000, 0x06e4, - 0x06e9, 0x0003, 0x002d, 0x0a7e, 0x0aa1, 0x0abb, 0x0002, 0x06ec, - 0x06f0, 0x0002, 0x002d, 0x0adb, 0x0adb, 0x0002, 0x002d, 0x0afc, - 0x0afc, 0x0003, 0x0000, 0x06f8, 0x06fd, 0x0003, 0x002d, 0x0b23, - 0x0b3e, 0x0b50, 0x0002, 0x0700, 0x0704, 0x0002, 0x002d, 0x0adb, - 0x0adb, 0x0002, 0x002d, 0x0afc, 0x0afc, 0x0002, 0x0000, 0x070b, - 0x0003, 0x002d, 0x0b23, 0x0b3e, 0x0b50, 0x0001, 0x0712, 0x0001, - 0x002d, 0x0b68, 0x0003, 0x0719, 0x071c, 0x0720, 0x0001, 0x002d, - // Entry 1F380 - 1F3BF - 0x0b9a, 0x0002, 0x002d, 0xffff, 0x0ba7, 0x0002, 0x0723, 0x0727, - 0x0002, 0x002d, 0x0bbb, 0x0bbb, 0x0002, 0x002d, 0x0bd6, 0x0bd6, - 0x0003, 0x072f, 0x0000, 0x0732, 0x0001, 0x002d, 0x0bf4, 0x0002, - 0x0735, 0x0739, 0x0002, 0x002d, 0x0bfc, 0x0bfc, 0x0002, 0x002d, - 0x0c12, 0x0c12, 0x0003, 0x0741, 0x0000, 0x0744, 0x0001, 0x002d, - 0x0bf4, 0x0002, 0x0747, 0x074b, 0x0002, 0x002d, 0x0bfc, 0x0bfc, - 0x0002, 0x002d, 0x0c12, 0x0c12, 0x0003, 0x0753, 0x0756, 0x075a, - 0x0001, 0x002d, 0x0c2b, 0x0002, 0x002d, 0xffff, 0x0c38, 0x0002, - // Entry 1F3C0 - 1F3FF - 0x075d, 0x0761, 0x0002, 0x002d, 0x0c4c, 0x0c4c, 0x0002, 0x002d, - 0x0c67, 0x0c67, 0x0003, 0x0769, 0x0000, 0x076c, 0x0001, 0x002d, - 0x0c85, 0x0002, 0x076f, 0x0773, 0x0002, 0x002d, 0x0c8d, 0x0c8d, - 0x0002, 0x002d, 0x0ca3, 0x0ca3, 0x0003, 0x077b, 0x0000, 0x077e, - 0x0001, 0x002d, 0x0c85, 0x0002, 0x0781, 0x0785, 0x0002, 0x002d, - 0x0c8d, 0x0c8d, 0x0002, 0x002d, 0x0ca3, 0x0ca3, 0x0003, 0x078d, - 0x0790, 0x0794, 0x0001, 0x002d, 0x0cbc, 0x0002, 0x002d, 0xffff, - 0x0ccc, 0x0002, 0x0797, 0x079b, 0x0002, 0x002d, 0x0cd3, 0x0cd3, - // Entry 1F400 - 1F43F - 0x0002, 0x002d, 0x0cf1, 0x0cf1, 0x0003, 0x07a3, 0x0000, 0x07a6, - 0x0001, 0x002d, 0x0d12, 0x0002, 0x07a9, 0x07ad, 0x0002, 0x002d, - 0x0d1a, 0x0d1a, 0x0002, 0x002d, 0x0d30, 0x0d30, 0x0003, 0x07b5, - 0x0000, 0x07b8, 0x0001, 0x002d, 0x0d12, 0x0002, 0x07bb, 0x07bf, - 0x0002, 0x002d, 0x0d1a, 0x0d1a, 0x0002, 0x002d, 0x0d30, 0x0d30, - 0x0001, 0x07c5, 0x0001, 0x002d, 0x0d49, 0x0004, 0x07cd, 0x07d2, - 0x07d7, 0x07e6, 0x0003, 0x0000, 0x1dc7, 0x238b, 0x253e, 0x0003, - 0x002d, 0x0d69, 0x0d77, 0x0d98, 0x0002, 0x0000, 0x07da, 0x0003, - // Entry 1F440 - 1F47F - 0x0000, 0x07e1, 0x07de, 0x0001, 0x002d, 0x0db3, 0x0003, 0x002d, - 0xffff, 0x0df2, 0x0e37, 0x0002, 0x09af, 0x07e9, 0x0003, 0x0883, - 0x0919, 0x07ed, 0x0094, 0x002d, 0x0e5e, 0x0e8d, 0x0ebd, 0x0ef3, - 0x0f5f, 0x101d, 0x10a0, 0x1158, 0x1256, 0x134b, 0x1446, 0x1518, - 0x15a1, 0x1603, 0x1674, 0x1737, 0x180d, 0x18ae, 0x1950, 0x1a67, - 0x1b88, 0x1c74, 0x1d44, 0x1de2, 0x1e7d, 0x1f01, 0x1f1b, 0x1f67, - 0x1feb, 0x2048, 0x20bc, 0x20fd, 0x2162, 0x21d6, 0x2244, 0x22c2, - 0x22f2, 0x234b, 0x23f3, 0x24b5, 0x250f, 0x2529, 0x255f, 0x25b6, - // Entry 1F480 - 1F4BF - 0x263c, 0x268c, 0x2751, 0x27e9, 0x285f, 0x293f, 0x2a09, 0x2a6f, - 0x2aa2, 0x2afe, 0x2b2b, 0x2b6e, 0x2be6, 0x2c25, 0x2c8e, 0x2d6e, - 0x2e18, 0x2e3f, 0x2e8b, 0x2f2d, 0x2fc1, 0x3027, 0x3051, 0x307e, - 0x30a4, 0x30da, 0x3116, 0x316c, 0x31e3, 0x3287, 0x3301, 0x33a9, - 0x3483, 0x34bc, 0x3518, 0x3578, 0x35cd, 0x366f, 0x369e, 0x36f8, - 0x3766, 0x37b6, 0x3828, 0x3848, 0x3865, 0x3888, 0x38de, 0x394a, - 0x39b0, 0x3a9b, 0x3b51, 0x3be8, 0x3c54, 0x3c77, 0x3c8e, 0x3cde, - 0x3da8, 0x3e55, 0x3edf, 0x3ef6, 0x3f72, 0x406e, 0x4121, 0x41b3, - // Entry 1F4C0 - 1F4FF - 0x4231, 0x4248, 0x429f, 0x432e, 0x43b1, 0x4429, 0x44ac, 0x4554, - 0x4577, 0x4594, 0x45bd, 0x45e0, 0x461a, 0x46a0, 0x471d, 0x476b, - 0x4788, 0x47ab, 0x47e4, 0x481d, 0x483d, 0x485a, 0x4891, 0x48e5, - 0x4911, 0x494b, 0x49b1, 0x49fa, 0x4a96, 0x4ad3, 0x4b77, 0x4c2a, - 0x4c96, 0x4cf1, 0x4db3, 0x4e3d, 0x4e5d, 0x4e81, 0x4ee4, 0x4f94, - 0x0094, 0x002d, 0xffff, 0xffff, 0xffff, 0xffff, 0x0f29, 0x0ffd, - 0x1083, 0x110c, 0x1210, 0x1302, 0x13fd, 0x14f8, 0x158a, 0x15ef, - 0x164b, 0x16f8, 0x17e7, 0x188b, 0x1914, 0x1a06, 0x1b49, 0x1c32, - // Entry 1F500 - 1F53F - 0x1d1e, 0x1dc2, 0x1e54, 0xffff, 0xffff, 0x1f3e, 0xffff, 0x2027, - 0xffff, 0x20e6, 0x214b, 0x21c2, 0x221e, 0xffff, 0xffff, 0x2328, - 0x23c3, 0x2498, 0xffff, 0xffff, 0xffff, 0x258c, 0xffff, 0x265f, - 0x271e, 0xffff, 0x2829, 0x2900, 0x29ef, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2b4b, 0xffff, 0xffff, 0x2c55, 0x2d32, 0xffff, 0xffff, - 0x2e5c, 0x2f09, 0x2fa7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3155, 0x31ba, 0x3267, 0x32e7, 0x3355, 0xffff, 0xffff, - 0x34f8, 0xffff, 0x3595, 0xffff, 0xffff, 0x36d1, 0xffff, 0x3796, - // Entry 1F540 - 1F57F - 0xffff, 0xffff, 0xffff, 0xffff, 0x38c1, 0xffff, 0x3967, 0x3a62, - 0x3b2d, 0x3bcb, 0xffff, 0xffff, 0xffff, 0x3ca8, 0x3d7c, 0x3e20, - 0xffff, 0xffff, 0x3f26, 0x403c, 0x4104, 0x418d, 0xffff, 0xffff, - 0x427c, 0x4317, 0x438e, 0xffff, 0x4468, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x45fd, 0x4686, 0x4706, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x4877, 0xffff, 0xffff, 0x4931, - 0xffff, 0x49c5, 0xffff, 0x4ab3, 0x4b45, 0x4c0d, 0xffff, 0x4cbf, - 0x4d87, 0xffff, 0xffff, 0xffff, 0x4ebe, 0x4f62, 0x0094, 0x002d, - // Entry 1F580 - 1F5BF - 0xffff, 0xffff, 0xffff, 0xffff, 0x0fa2, 0x104d, 0x10ca, 0x11b1, - 0x12a9, 0x13a1, 0x149c, 0x1545, 0x15c5, 0x1624, 0x16aa, 0x1783, - 0x1840, 0x18de, 0x19a8, 0x1ad5, 0x1bda, 0x1cc6, 0x1d77, 0x1e0f, - 0x1eb3, 0xffff, 0xffff, 0x1f9d, 0xffff, 0x2076, 0xffff, 0x2121, - 0x2186, 0x21f7, 0x2277, 0xffff, 0xffff, 0x237b, 0x2430, 0x24df, - 0xffff, 0xffff, 0xffff, 0x25ed, 0xffff, 0x26c6, 0x2791, 0xffff, - 0x28a2, 0x298b, 0x2a30, 0xffff, 0xffff, 0xffff, 0xffff, 0x2b9e, - 0xffff, 0xffff, 0x2cd4, 0x2db7, 0xffff, 0xffff, 0x2ec7, 0x2f5e, - // Entry 1F5C0 - 1F5FF - 0x2fe8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3190, - 0x3219, 0x32b4, 0x3328, 0x340a, 0xffff, 0xffff, 0x3545, 0xffff, - 0x3612, 0xffff, 0xffff, 0x372c, 0xffff, 0x37e3, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3908, 0xffff, 0x3a06, 0x3ae1, 0x3b82, 0x3c12, - 0xffff, 0xffff, 0xffff, 0x3d21, 0x3de1, 0x3e97, 0xffff, 0xffff, - 0x3fcb, 0x40ad, 0x414b, 0x41e6, 0xffff, 0xffff, 0x42cf, 0x4352, - 0x43e1, 0xffff, 0x44fd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x4644, 0x46c7, 0x4741, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1F600 - 1F63F - 0xffff, 0xffff, 0x48b8, 0xffff, 0xffff, 0x4972, 0xffff, 0x4a3c, - 0xffff, 0x4b00, 0x4bb6, 0x4c54, 0xffff, 0x4d30, 0x4dec, 0xffff, - 0xffff, 0xffff, 0x4f17, 0x4fd3, 0x0003, 0x0000, 0x0000, 0x09b3, - 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 1F640 - 1F67F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0000, 0x0003, 0x0004, 0x05bc, 0x0adc, - 0x0012, 0x0017, 0x0024, 0x0000, 0x0000, 0x0061, 0x0000, 0x00ce, - 0x00f9, 0x0317, 0x0324, 0x0396, 0x0000, 0x0000, 0x0000, 0x0000, - 0x041c, 0x0539, 0x05ab, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, - 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, - // Entry 1F680 - 1F6BF - 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0050, 0x0000, - 0x0000, 0x0000, 0x002f, 0x0004, 0x0034, 0x0000, 0x0000, 0x0047, - 0x0001, 0x0036, 0x0001, 0x0038, 0x000d, 0x0000, 0xffff, 0x005a, - 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x0072, 0x0075, 0x0079, - 0x007e, 0x2226, 0x0085, 0x0001, 0x0049, 0x0001, 0x004b, 0x0003, - 0x0000, 0xffff, 0x0089, 0x0097, 0x0004, 0x005e, 0x0058, 0x0055, - 0x005b, 0x0001, 0x002e, 0x0000, 0x0001, 0x002e, 0x000c, 0x0001, - 0x002e, 0x000c, 0x0001, 0x002e, 0x000c, 0x0001, 0x0063, 0x0002, - // Entry 1F6C0 - 1F6FF - 0x0066, 0x009a, 0x0003, 0x006a, 0x007a, 0x008a, 0x000e, 0x0000, - 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, - 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x000e, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0000, - 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, - 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x0003, 0x009e, - 0x00ae, 0x00be, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, - // Entry 1F700 - 1F73F - 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, - 0x0479, 0x0481, 0x000e, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, - 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, 0x3258, 0x325b, 0x325f, - 0x3263, 0x3267, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, - 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, - 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00d7, 0x0000, 0x00e8, 0x0004, 0x00e5, 0x00df, 0x00dc, 0x00e2, - 0x0001, 0x002e, 0x0015, 0x0001, 0x002e, 0x0028, 0x0001, 0x002e, - // Entry 1F740 - 1F77F - 0x0035, 0x0001, 0x002e, 0x0041, 0x0004, 0x00f6, 0x00f0, 0x00ed, - 0x00f3, 0x0001, 0x000d, 0x004d, 0x0001, 0x000d, 0x004d, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0102, 0x0167, - 0x01be, 0x01f3, 0x02c4, 0x02e4, 0x02f5, 0x0306, 0x0002, 0x0105, - 0x0136, 0x0003, 0x0109, 0x0118, 0x0127, 0x000d, 0x002e, 0xffff, - 0x0052, 0x0056, 0x005b, 0x0060, 0x0064, 0x0068, 0x006c, 0x0070, - 0x0074, 0x0078, 0x007c, 0x0080, 0x000d, 0x000d, 0xffff, 0x0130, - 0x0133, 0x0136, 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, 0x3258, - // Entry 1F780 - 1F7BF - 0x325b, 0x325f, 0x3263, 0x000d, 0x002e, 0xffff, 0x0084, 0x008e, - 0x0097, 0x009f, 0x00a7, 0x00af, 0x00b6, 0x00bd, 0x00c6, 0x00cc, - 0x00d6, 0x00e0, 0x0003, 0x013a, 0x0149, 0x0158, 0x000d, 0x002e, - 0xffff, 0x0052, 0x0056, 0x005b, 0x0060, 0x0064, 0x0068, 0x006c, - 0x0070, 0x0074, 0x0078, 0x007c, 0x0080, 0x000d, 0x000d, 0xffff, - 0x0130, 0x0133, 0x0136, 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, - 0x3258, 0x325b, 0x325f, 0x3263, 0x000d, 0x002e, 0xffff, 0x00e9, - 0x00f3, 0x00fc, 0x0104, 0x010c, 0x0114, 0x011b, 0x0122, 0x012a, - // Entry 1F7C0 - 1F7FF - 0x0130, 0x0139, 0x0141, 0x0002, 0x016a, 0x0194, 0x0005, 0x0170, - 0x0179, 0x018b, 0x0000, 0x0182, 0x0007, 0x000d, 0x00d8, 0x00dc, - 0x00e0, 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, 0x0000, 0x22ee, - 0x255c, 0x22ea, 0x2481, 0x21e9, 0x255c, 0x2481, 0x0007, 0x000d, - 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, - 0x000d, 0x00f5, 0x00fe, 0x010a, 0x0111, 0x0119, 0x0123, 0x0129, - 0x0005, 0x019a, 0x01a3, 0x01b5, 0x0000, 0x01ac, 0x0007, 0x000d, - 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, - // Entry 1F800 - 1F83F - 0x0000, 0x1f96, 0x21ec, 0x2010, 0x2002, 0x21ee, 0x21ec, 0x2002, - 0x0007, 0x000d, 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ed, - 0x00f1, 0x0007, 0x000d, 0x00f5, 0x00fe, 0x010a, 0x0111, 0x0119, - 0x0123, 0x0129, 0x0002, 0x01c1, 0x01da, 0x0003, 0x01c5, 0x01cc, - 0x01d3, 0x0005, 0x002e, 0xffff, 0x014a, 0x014e, 0x0152, 0x0156, - 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, - 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0003, 0x01de, - 0x01e5, 0x01ec, 0x0005, 0x002e, 0xffff, 0x015a, 0x0161, 0x0168, - // Entry 1F840 - 1F87F - 0x016f, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, - 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0002, - 0x01f6, 0x025d, 0x0003, 0x01fa, 0x021b, 0x023c, 0x0008, 0x0206, - 0x020c, 0x0203, 0x020f, 0x0212, 0x0215, 0x0218, 0x0209, 0x0001, - 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, 0x0189, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, 0x000d, - 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, 0x0008, - 0x0227, 0x022d, 0x0224, 0x0230, 0x0233, 0x0236, 0x0239, 0x022a, - // Entry 1F880 - 1F8BF - 0x0001, 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, - 0x0189, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, - 0x000d, 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, - 0x0008, 0x0248, 0x024e, 0x0245, 0x0251, 0x0254, 0x0257, 0x025a, - 0x024b, 0x0001, 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x000d, 0x0189, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, - 0x0001, 0x000d, 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, - 0x0176, 0x0003, 0x0261, 0x0282, 0x02a3, 0x0008, 0x026d, 0x0273, - // Entry 1F8C0 - 1F8FF - 0x026a, 0x0276, 0x0279, 0x027c, 0x027f, 0x0270, 0x0001, 0x000d, - 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, 0x0189, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, 0x000d, 0x018f, - 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, 0x0008, 0x028e, - 0x0294, 0x028b, 0x0297, 0x029a, 0x029d, 0x02a0, 0x0291, 0x0001, - 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, 0x0189, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, 0x000d, - 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, 0x0008, - // Entry 1F900 - 1F93F - 0x02af, 0x02b5, 0x02ac, 0x02b8, 0x02bb, 0x02be, 0x02c1, 0x02b2, - 0x0001, 0x000d, 0x0177, 0x0001, 0x0000, 0x04ef, 0x0001, 0x000d, - 0x0189, 0x0001, 0x0000, 0x04f2, 0x0001, 0x000d, 0x0197, 0x0001, - 0x000d, 0x018f, 0x0001, 0x000d, 0x01ab, 0x0001, 0x002e, 0x0176, - 0x0003, 0x02d3, 0x02de, 0x02c8, 0x0002, 0x02cb, 0x02cf, 0x0002, - 0x002e, 0x017c, 0x0189, 0x0002, 0x000d, 0x01bd, 0x01cc, 0x0002, - 0x02d6, 0x02da, 0x0002, 0x002e, 0x0198, 0x01aa, 0x0002, 0x002e, - 0x01a0, 0x01b2, 0x0001, 0x02e0, 0x0002, 0x000d, 0x01e4, 0x326b, - // Entry 1F940 - 1F97F - 0x0004, 0x02f2, 0x02ec, 0x02e9, 0x02ef, 0x0001, 0x000d, 0x01ef, - 0x0001, 0x000d, 0x0200, 0x0001, 0x002e, 0x01b8, 0x0001, 0x002e, - 0x01c2, 0x0004, 0x0303, 0x02fd, 0x02fa, 0x0300, 0x0001, 0x001f, - 0x1e5b, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x0314, 0x030e, 0x030b, 0x0311, 0x0001, - 0x000d, 0x004d, 0x0001, 0x000d, 0x004d, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, - 0x031d, 0x0001, 0x031f, 0x0001, 0x0321, 0x0001, 0x0000, 0x04ef, - // Entry 1F980 - 1F9BF - 0x0005, 0x032a, 0x0000, 0x0000, 0x0000, 0x038f, 0x0002, 0x032d, - 0x035e, 0x0003, 0x0331, 0x0340, 0x034f, 0x000d, 0x0000, 0xffff, - 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, - 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, - 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, - 0x05f2, 0x05f8, 0x0003, 0x0362, 0x0371, 0x0380, 0x000d, 0x0000, - // Entry 1F9C0 - 1F9FF - 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, - 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x000d, 0xffff, - 0x0130, 0x0133, 0x0136, 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, - 0x3258, 0x325b, 0x325f, 0x3263, 0x000d, 0x0000, 0xffff, 0x05a2, - 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, - 0x05ec, 0x05f2, 0x05f8, 0x0001, 0x0391, 0x0001, 0x0393, 0x0001, - 0x0000, 0x0601, 0x0008, 0x039f, 0x0000, 0x0000, 0x0000, 0x0404, - 0x040b, 0x0000, 0x9006, 0x0002, 0x03a2, 0x03d3, 0x0003, 0x03a6, - // Entry 1FA00 - 1FA3F - 0x03b5, 0x03c4, 0x000d, 0x0000, 0xffff, 0x0606, 0x255e, 0x2563, - 0x256a, 0x061f, 0x0626, 0x2572, 0x0633, 0x2577, 0x063d, 0x0643, - 0x064d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - 0x000d, 0x0000, 0xffff, 0x0657, 0x257c, 0x0666, 0x066f, 0x0679, - 0x0682, 0x2582, 0x0692, 0x2588, 0x06a3, 0x06ab, 0x06ba, 0x0003, - 0x03d7, 0x03e6, 0x03f5, 0x000d, 0x0000, 0xffff, 0x0606, 0x255e, - 0x2563, 0x256a, 0x061f, 0x0626, 0x2572, 0x0633, 0x2577, 0x063d, - // Entry 1FA40 - 1FA7F - 0x0643, 0x064d, 0x000d, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, - 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, 0x3258, 0x325b, 0x325f, - 0x3263, 0x000d, 0x0000, 0xffff, 0x0657, 0x257c, 0x0666, 0x066f, - 0x0679, 0x0682, 0x2582, 0x0692, 0x2588, 0x06a3, 0x06ab, 0x06ba, - 0x0001, 0x0406, 0x0001, 0x0408, 0x0001, 0x0000, 0x06c8, 0x0004, - 0x0419, 0x0413, 0x0410, 0x0416, 0x0001, 0x002e, 0x0015, 0x0001, - 0x002e, 0x0028, 0x0001, 0x002e, 0x01cd, 0x0001, 0x002e, 0x01d8, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0425, 0x0517, 0x0000, - // Entry 1FA80 - 1FABF - 0x0528, 0x0001, 0x0427, 0x0001, 0x0429, 0x00ec, 0x002e, 0x01e7, - 0x01f9, 0x020d, 0x0221, 0x0235, 0x0248, 0x025a, 0x026c, 0x027e, - 0x0291, 0x02a3, 0x02b7, 0x02d2, 0x02ee, 0x0308, 0x0322, 0x033a, - 0x034c, 0x035f, 0x0373, 0x0386, 0x0399, 0x03ad, 0x03bf, 0x03d1, - 0x03e3, 0x03f5, 0x0408, 0x041b, 0x042e, 0x0440, 0x0454, 0x0468, - 0x0479, 0x048c, 0x04a0, 0x04b4, 0x04c9, 0x04dd, 0x04ee, 0x0501, - 0x0512, 0x0526, 0x0539, 0x054c, 0x055f, 0x0571, 0x0583, 0x0595, - 0x05a6, 0x05bc, 0x05d1, 0x05e6, 0x05fb, 0x0610, 0x0625, 0x0638, - // Entry 1FAC0 - 1FAFF - 0x064c, 0x0662, 0x067a, 0x0691, 0x06a7, 0x06bc, 0x06d0, 0x06e5, - 0x06fb, 0x0710, 0x0725, 0x073d, 0x0750, 0x0765, 0x0779, 0x078c, - 0x07a1, 0x07b8, 0x07cc, 0x07e1, 0x07f6, 0x080b, 0x0820, 0x0835, - 0x084a, 0x085d, 0x0871, 0x0885, 0x089b, 0x08b2, 0x08c5, 0x08d8, - 0x08ec, 0x0901, 0x0916, 0x092b, 0x0940, 0x0954, 0x0968, 0x097e, - 0x0991, 0x09a7, 0x09bb, 0x09d0, 0x09e3, 0x09f8, 0x0a0c, 0x0a21, - 0x0a35, 0x0a48, 0x0a5f, 0x0a73, 0x0a89, 0x0a9e, 0x0ab3, 0x0ac9, - 0x0ade, 0x0af4, 0x0b0b, 0x0b20, 0x0b37, 0x0b4b, 0x0b60, 0x0b75, - // Entry 1FB00 - 1FB3F - 0x0b89, 0x0b9d, 0x0bb1, 0x0bc7, 0x0bde, 0x0bf2, 0x0c09, 0x0c1d, - 0x0c31, 0x0c46, 0x0c5a, 0x0c70, 0x0c85, 0x0c9a, 0x0cb0, 0x0cc5, - 0x0cdb, 0x0cf0, 0x0d04, 0x0d18, 0x0d2d, 0x0d41, 0x0d56, 0x0d6b, - 0x0d7f, 0x0d94, 0x0da8, 0x0dbd, 0x0dd2, 0x0de7, 0x0dfb, 0x0e11, - 0x0e28, 0x0e3d, 0x0e53, 0x0e68, 0x0e7c, 0x0e90, 0x0ea6, 0x0ebc, - 0x0ed2, 0x0ee8, 0x0efc, 0x0f13, 0x0f27, 0x0f3d, 0x0f53, 0x0f67, - 0x0f7b, 0x0f91, 0x0fa4, 0x0fbb, 0x0fd0, 0x0fe6, 0x0ffb, 0x1011, - 0x1028, 0x103e, 0x1055, 0x106b, 0x1081, 0x1095, 0x10aa, 0x10c1, - // Entry 1FB40 - 1FB7F - 0x10d6, 0x10ea, 0x10fe, 0x1113, 0x1127, 0x113e, 0x1153, 0x1167, - 0x117c, 0x1190, 0x11a6, 0x11bc, 0x11d2, 0x11e6, 0x11fb, 0x1210, - 0x1224, 0x1239, 0x1250, 0x1264, 0x1279, 0x128d, 0x12a1, 0x12b7, - 0x12cd, 0x12e1, 0x12f8, 0x130e, 0x1323, 0x1338, 0x134d, 0x1362, - 0x1379, 0x138d, 0x13a1, 0x13b6, 0x13cb, 0x13e0, 0x13f4, 0x1409, - 0x141e, 0x1432, 0x1445, 0x1459, 0x146e, 0x1484, 0x1498, 0x14ac, - 0x14b2, 0x14ba, 0x14c1, 0x0004, 0x0525, 0x051f, 0x051c, 0x0522, - 0x0001, 0x002e, 0x0015, 0x0001, 0x002e, 0x0028, 0x0001, 0x002e, - // Entry 1FB80 - 1FBBF - 0x01cd, 0x0001, 0x002e, 0x01d8, 0x0004, 0x0536, 0x0530, 0x052d, - 0x0533, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x053f, 0x0000, - 0x0000, 0x0000, 0x05a4, 0x0002, 0x0542, 0x0573, 0x0003, 0x0546, - 0x0555, 0x0564, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, - 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, - 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - // Entry 1FBC0 - 1FBFF - 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, - 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0003, - 0x0577, 0x0586, 0x0595, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, - 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, - 0x1a0f, 0x1a16, 0x000d, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, - 0x0139, 0x324c, 0x324f, 0x3252, 0x3255, 0x3258, 0x325b, 0x325f, - 0x3263, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, - 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, - // Entry 1FC00 - 1FC3F - 0x0001, 0x05a6, 0x0001, 0x05a8, 0x0001, 0x0000, 0x1a1d, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x05b4, 0x0000, 0x0000, 0x9006, - 0x0001, 0x05b6, 0x0001, 0x05b8, 0x0002, 0x000d, 0x02da, 0x326e, - 0x0040, 0x05fd, 0x0000, 0x0000, 0x0602, 0x061f, 0x063c, 0x0659, - 0x0676, 0x0693, 0x06b0, 0x06cd, 0x06ea, 0x0707, 0x0728, 0x0749, - 0x0000, 0x0000, 0x0000, 0x076a, 0x0789, 0x07a8, 0x0000, 0x0000, - 0x0000, 0x07c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07cc, - 0x07e6, 0x0800, 0x081a, 0x0834, 0x084e, 0x0868, 0x0882, 0x089c, - // Entry 1FC40 - 1FC7F - 0x08b6, 0x08d0, 0x08ea, 0x0904, 0x091e, 0x0938, 0x0952, 0x096c, - 0x0986, 0x09a0, 0x09ba, 0x09d4, 0x0000, 0x09ee, 0x0000, 0x09f3, - 0x0a0f, 0x0a27, 0x0a3f, 0x0a5b, 0x0a73, 0x0a8b, 0x0aa7, 0x0abf, - 0x0ad7, 0x0001, 0x05ff, 0x0001, 0x0001, 0x0040, 0x0003, 0x0606, - 0x0609, 0x060e, 0x0001, 0x000d, 0x02ee, 0x0003, 0x000d, 0x02f5, - 0x0304, 0x030f, 0x0002, 0x0611, 0x0618, 0x0005, 0x000d, 0x033c, - 0x0320, 0xffff, 0xffff, 0x032e, 0x0005, 0x000d, 0x036c, 0x034a, - 0xffff, 0xffff, 0x035b, 0x0003, 0x0623, 0x0626, 0x062b, 0x0001, - // Entry 1FC80 - 1FCBF - 0x000d, 0x039d, 0x0003, 0x002e, 0x14c8, 0x14d5, 0x14de, 0x0002, - 0x062e, 0x0635, 0x0005, 0x000d, 0x03a0, 0x03a0, 0xffff, 0xffff, - 0x03a0, 0x0005, 0x000d, 0x03aa, 0x03aa, 0xffff, 0xffff, 0x03aa, - 0x0003, 0x0640, 0x0643, 0x0648, 0x0001, 0x000d, 0x039d, 0x0003, - 0x002e, 0x14ed, 0x14f8, 0x14ff, 0x0002, 0x064b, 0x0652, 0x0005, - 0x002e, 0x150c, 0x150c, 0xffff, 0xffff, 0x150c, 0x0005, 0x002e, - 0x1514, 0x1514, 0xffff, 0xffff, 0x1514, 0x0003, 0x065d, 0x0660, - 0x0665, 0x0001, 0x000d, 0x03b7, 0x0003, 0x002e, 0x151c, 0x152c, - // Entry 1FCC0 - 1FCFF - 0x1539, 0x0002, 0x0668, 0x066f, 0x0005, 0x000d, 0x0400, 0x03f1, - 0xffff, 0xffff, 0x0400, 0x0005, 0x000d, 0x0422, 0x0410, 0xffff, - 0xffff, 0x0422, 0x0003, 0x067a, 0x067d, 0x0682, 0x0001, 0x000d, - 0x043e, 0x0003, 0x002e, 0x154b, 0x1557, 0x1560, 0x0002, 0x0685, - 0x068c, 0x0005, 0x000d, 0x0442, 0x0442, 0xffff, 0xffff, 0x0442, - 0x0005, 0x000d, 0x044d, 0x044d, 0xffff, 0xffff, 0x044d, 0x0003, - 0x0697, 0x069a, 0x069f, 0x0001, 0x000d, 0x043e, 0x0003, 0x002e, - 0x154b, 0x1557, 0x1560, 0x0002, 0x06a2, 0x06a9, 0x0005, 0x002e, - // Entry 1FD00 - 1FD3F - 0x156e, 0x156e, 0xffff, 0xffff, 0x156e, 0x0005, 0x000d, 0x0435, - 0x0435, 0xffff, 0xffff, 0x0435, 0x0003, 0x06b4, 0x06b7, 0x06bc, - 0x0001, 0x000d, 0x045b, 0x0003, 0x000d, 0x0462, 0x0471, 0x047d, - 0x0002, 0x06bf, 0x06c6, 0x0005, 0x000d, 0x04ab, 0x048e, 0xffff, - 0xffff, 0x049c, 0x0005, 0x000d, 0x04dd, 0x04ba, 0xffff, 0xffff, - 0x04cb, 0x0003, 0x06d1, 0x06d4, 0x06d9, 0x0001, 0x000d, 0x04ef, - 0x0003, 0x002e, 0x1577, 0x1583, 0x158c, 0x0002, 0x06dc, 0x06e3, - 0x0005, 0x000d, 0x04f3, 0x04f3, 0xffff, 0xffff, 0x04f3, 0x0005, - // Entry 1FD40 - 1FD7F - 0x000d, 0x04fe, 0x04fe, 0xffff, 0xffff, 0x04fe, 0x0003, 0x06ee, - 0x06f1, 0x06f6, 0x0001, 0x0029, 0x0080, 0x0003, 0x002e, 0x1577, - 0x1583, 0x158c, 0x0002, 0x06f9, 0x0700, 0x0005, 0x002e, 0x159a, - 0x159a, 0xffff, 0xffff, 0x159a, 0x0005, 0x002e, 0x15a3, 0x15a3, - 0xffff, 0xffff, 0x15a3, 0x0004, 0x070c, 0x070f, 0x0714, 0x0725, - 0x0001, 0x002e, 0x15ac, 0x0003, 0x002e, 0x15b3, 0x15c2, 0x15ce, - 0x0002, 0x0717, 0x071e, 0x0005, 0x002e, 0x15fb, 0x15df, 0xffff, - 0xffff, 0x15ed, 0x0005, 0x002e, 0x162c, 0x160a, 0xffff, 0xffff, - // Entry 1FD80 - 1FDBF - 0x161b, 0x0001, 0x002e, 0x163e, 0x0004, 0x072d, 0x0730, 0x0735, - 0x0746, 0x0001, 0x002e, 0x164c, 0x0003, 0x002e, 0x1650, 0x165c, - 0x1665, 0x0002, 0x0738, 0x073f, 0x0005, 0x002e, 0x1673, 0x1673, - 0xffff, 0xffff, 0x1673, 0x0005, 0x002e, 0x167e, 0x167e, 0xffff, - 0xffff, 0x167e, 0x0001, 0x002e, 0x163e, 0x0004, 0x074e, 0x0751, - 0x0756, 0x0767, 0x0001, 0x002e, 0x164c, 0x0003, 0x002e, 0x1650, - 0x165c, 0x1665, 0x0002, 0x0759, 0x0760, 0x0005, 0x002e, 0x168c, - 0x168c, 0xffff, 0xffff, 0x168c, 0x0005, 0x002e, 0x1695, 0x1695, - // Entry 1FDC0 - 1FDFF - 0xffff, 0xffff, 0x1695, 0x0001, 0x002e, 0x163e, 0x0003, 0x076e, - 0x0771, 0x0778, 0x0001, 0x000d, 0x05d4, 0x0005, 0x000d, 0x05e3, - 0x05ea, 0x05f0, 0x05d8, 0x05f6, 0x0002, 0x077b, 0x0782, 0x0005, - 0x000d, 0x060c, 0x0601, 0xffff, 0xffff, 0x060c, 0x0005, 0x000d, - 0x0626, 0x0618, 0xffff, 0xffff, 0x0626, 0x0003, 0x078d, 0x0790, - 0x0797, 0x0001, 0x0029, 0x008f, 0x0005, 0x000d, 0x05e3, 0x05ea, - 0x05f0, 0x05d8, 0x05f6, 0x0002, 0x079a, 0x07a1, 0x0005, 0x000d, - 0x060c, 0x0601, 0xffff, 0xffff, 0x060c, 0x0005, 0x000d, 0x0626, - // Entry 1FE00 - 1FE3F - 0x0618, 0xffff, 0xffff, 0x0626, 0x0003, 0x07ac, 0x07af, 0x07b6, - 0x0001, 0x0029, 0x008f, 0x0005, 0x000d, 0x05e3, 0x05ea, 0x05f0, - 0x05d8, 0x05f6, 0x0002, 0x07b9, 0x07c0, 0x0005, 0x002e, 0x169e, - 0x169e, 0xffff, 0xffff, 0x169e, 0x0005, 0x002e, 0x16a7, 0x16a7, - 0xffff, 0xffff, 0x16a7, 0x0001, 0x07c9, 0x0001, 0x002e, 0x16b3, - 0x0003, 0x0000, 0x07d0, 0x07d5, 0x0003, 0x000d, 0x065a, 0x066b, - 0x0678, 0x0002, 0x07d8, 0x07df, 0x0005, 0x000d, 0x06ab, 0x068b, - 0xffff, 0xffff, 0x069b, 0x0005, 0x000d, 0x06e1, 0x06bb, 0xffff, - // Entry 1FE40 - 1FE7F - 0xffff, 0x06ce, 0x0003, 0x0000, 0x07ea, 0x07ef, 0x0003, 0x000d, - 0x06f4, 0x0701, 0x070a, 0x0002, 0x07f2, 0x07f9, 0x0005, 0x000d, - 0x06ab, 0x068b, 0xffff, 0xffff, 0x069b, 0x0005, 0x000d, 0x06e1, - 0x06bb, 0xffff, 0xffff, 0x06ce, 0x0003, 0x0000, 0x0804, 0x0809, - 0x0003, 0x000d, 0x06f4, 0x0701, 0x070a, 0x0002, 0x080c, 0x0813, - 0x0005, 0x000d, 0x06ab, 0x068b, 0xffff, 0xffff, 0x069b, 0x0005, - 0x000d, 0x06e1, 0x06bb, 0xffff, 0xffff, 0x06ce, 0x0003, 0x0000, - 0x081e, 0x0823, 0x0003, 0x000d, 0x0719, 0x072d, 0x073e, 0x0002, - // Entry 1FE80 - 1FEBF - 0x0826, 0x082d, 0x0005, 0x000d, 0x077a, 0x0754, 0xffff, 0xffff, - 0x0767, 0x0005, 0x000d, 0x07ba, 0x078e, 0xffff, 0xffff, 0x07a4, - 0x0003, 0x0000, 0x0838, 0x083d, 0x0003, 0x000d, 0x07d1, 0x07de, - 0x3275, 0x0002, 0x0840, 0x0847, 0x0005, 0x000d, 0x077a, 0x0754, - 0xffff, 0xffff, 0x0767, 0x0005, 0x000d, 0x07ba, 0x078e, 0xffff, - 0xffff, 0x07a4, 0x0003, 0x0000, 0x0852, 0x0857, 0x0003, 0x000d, - 0x07d1, 0x07de, 0x3275, 0x0002, 0x085a, 0x0861, 0x0005, 0x000d, - 0x077a, 0x0754, 0xffff, 0xffff, 0x0767, 0x0005, 0x000d, 0x07ba, - // Entry 1FEC0 - 1FEFF - 0x078e, 0xffff, 0xffff, 0x07a4, 0x0003, 0x0000, 0x086c, 0x0871, - 0x0003, 0x000d, 0x07f6, 0x0805, 0x0811, 0x0002, 0x0874, 0x087b, - 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, 0xffff, 0x0830, 0x0005, - 0x000d, 0x086f, 0x084d, 0xffff, 0xffff, 0x085e, 0x0003, 0x0000, - 0x0886, 0x088b, 0x0003, 0x000d, 0x0881, 0x088e, 0x0898, 0x0002, - 0x088e, 0x0895, 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, 0xffff, - 0x0830, 0x0005, 0x000d, 0x086f, 0x084d, 0xffff, 0xffff, 0x085e, - 0x0003, 0x0000, 0x08a0, 0x08a5, 0x0003, 0x000d, 0x0881, 0x088e, - // Entry 1FF00 - 1FF3F - 0x0898, 0x0002, 0x08a8, 0x08af, 0x0005, 0x000d, 0x083e, 0x0822, - 0xffff, 0xffff, 0x0830, 0x0005, 0x000d, 0x086f, 0x084d, 0xffff, - 0xffff, 0x085e, 0x0003, 0x0000, 0x08ba, 0x08bf, 0x0003, 0x000d, - 0x08a7, 0x08b7, 0x08c3, 0x0002, 0x08c2, 0x08c9, 0x0005, 0x000d, - 0x08f3, 0x08d5, 0xffff, 0xffff, 0x08e4, 0x0005, 0x000d, 0x0926, - 0x0902, 0xffff, 0xffff, 0x0914, 0x0003, 0x0000, 0x08d4, 0x08d9, - 0x0003, 0x000d, 0x0938, 0x0945, 0x094e, 0x0002, 0x08dc, 0x08e3, - 0x0005, 0x000d, 0x08f3, 0x08d5, 0xffff, 0xffff, 0x08e4, 0x0005, - // Entry 1FF40 - 1FF7F - 0x000d, 0x0926, 0x0902, 0xffff, 0xffff, 0x0914, 0x0003, 0x0000, - 0x08ee, 0x08f3, 0x0003, 0x000d, 0x0938, 0x0945, 0x094e, 0x0002, - 0x08f6, 0x08fd, 0x0005, 0x000d, 0x08f3, 0x08d5, 0xffff, 0xffff, - 0x08e4, 0x0005, 0x000d, 0x0926, 0x0902, 0xffff, 0xffff, 0x0914, - 0x0003, 0x0000, 0x0908, 0x090d, 0x0003, 0x000d, 0x095d, 0x096f, - 0x097e, 0x0002, 0x0910, 0x0917, 0x0005, 0x000d, 0x09b4, 0x0992, - 0xffff, 0xffff, 0x09a3, 0x0005, 0x000d, 0x09ee, 0x09c6, 0xffff, - 0xffff, 0x09da, 0x0003, 0x0000, 0x0922, 0x0927, 0x0003, 0x000d, - // Entry 1FF80 - 1FFBF - 0x0a03, 0x0a11, 0x0a1c, 0x0002, 0x092a, 0x0931, 0x0005, 0x000d, - 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, 0x000d, 0x09ee, - 0x09c6, 0xffff, 0xffff, 0x09da, 0x0003, 0x0000, 0x093c, 0x0941, - 0x0003, 0x000d, 0x0a03, 0x0a11, 0x0a1c, 0x0002, 0x0944, 0x094b, - 0x0005, 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, - 0x000d, 0x09ee, 0x09c6, 0xffff, 0xffff, 0x09da, 0x0003, 0x0000, - 0x0956, 0x095b, 0x0003, 0x000d, 0x0a2c, 0x0a3a, 0x0a45, 0x0002, - 0x095e, 0x0965, 0x0005, 0x000d, 0x0a6f, 0x0a55, 0xffff, 0xffff, - // Entry 1FFC0 - 1FFFF - 0x0a62, 0x0005, 0x000d, 0x0a9d, 0x0a7d, 0xffff, 0xffff, 0x0a8d, - 0x0003, 0x0000, 0x0970, 0x0975, 0x0003, 0x000d, 0x0aae, 0x0abb, - 0x0ac5, 0x0002, 0x0978, 0x097f, 0x0005, 0x000d, 0x0a6f, 0x0a55, - 0xffff, 0xffff, 0x0a62, 0x0005, 0x000d, 0x0a9d, 0x0a7d, 0xffff, - 0xffff, 0x0a8d, 0x0003, 0x0000, 0x098a, 0x098f, 0x0003, 0x000d, - 0x0aae, 0x0abb, 0x0ac5, 0x0002, 0x0992, 0x0999, 0x0005, 0x000d, - 0x0a6f, 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, 0x000d, 0x0a9d, - 0x0a7d, 0xffff, 0xffff, 0x0a8d, 0x0003, 0x0000, 0x09a4, 0x09a9, - // Entry 20000 - 2003F - 0x0003, 0x000d, 0x0ad4, 0x0ae3, 0x0aee, 0x0002, 0x09ac, 0x09b3, - 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, 0xffff, 0x0b0d, 0x0005, - 0x000d, 0x0b4b, 0x0b29, 0xffff, 0xffff, 0x0b3a, 0x0003, 0x0000, - 0x09be, 0x09c3, 0x0003, 0x000d, 0x0b5c, 0x0b69, 0x0b72, 0x0002, - 0x09c6, 0x09cd, 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, 0xffff, - 0x0b0d, 0x0005, 0x000d, 0x0b4b, 0x0b29, 0xffff, 0xffff, 0x0b3a, - 0x0003, 0x0000, 0x09d8, 0x09dd, 0x0003, 0x000d, 0x0b5c, 0x0b69, - 0x0b72, 0x0002, 0x09e0, 0x09e7, 0x0005, 0x000d, 0x0b1b, 0x0aff, - // Entry 20040 - 2007F - 0xffff, 0xffff, 0x0b0d, 0x0005, 0x000d, 0x0b4b, 0x0b29, 0xffff, - 0xffff, 0x0b3a, 0x0001, 0x09f0, 0x0001, 0x0007, 0x07cc, 0x0003, - 0x09f7, 0x09fa, 0x09fe, 0x0001, 0x000d, 0x0b99, 0x0002, 0x000d, - 0xffff, 0x0b9d, 0x0002, 0x0a01, 0x0a08, 0x0005, 0x000d, 0x0bbd, - 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x000d, 0x0be6, 0x0bc9, - 0xffff, 0xffff, 0x0bd7, 0x0003, 0x0a13, 0x0000, 0x0a16, 0x0001, - 0x0000, 0x2143, 0x0002, 0x0a19, 0x0a20, 0x0005, 0x0013, 0x0f1e, - 0x0f1e, 0xffff, 0xffff, 0x0f1e, 0x0005, 0x002e, 0x16c0, 0x16c0, - // Entry 20080 - 200BF - 0xffff, 0xffff, 0x16c0, 0x0003, 0x0a2b, 0x0000, 0x0a2e, 0x0001, - 0x0000, 0x2143, 0x0002, 0x0a31, 0x0a38, 0x0005, 0x0000, 0x1d76, - 0x1d76, 0xffff, 0xffff, 0x1d76, 0x0005, 0x0000, 0x1d7d, 0x1d7d, - 0xffff, 0xffff, 0x1d7d, 0x0003, 0x0a43, 0x0a46, 0x0a4a, 0x0001, - 0x000d, 0x0bf5, 0x0002, 0x000d, 0xffff, 0x0bfc, 0x0002, 0x0a4d, - 0x0a54, 0x0005, 0x000d, 0x0c23, 0x0c07, 0xffff, 0xffff, 0x0c15, - 0x0005, 0x000d, 0x0c53, 0x0c31, 0xffff, 0xffff, 0x0c42, 0x0003, - 0x0a5f, 0x0000, 0x0a62, 0x0001, 0x000b, 0x1250, 0x0002, 0x0a65, - // Entry 200C0 - 200FF - 0x0a6c, 0x0005, 0x0013, 0x0f75, 0x0f75, 0xffff, 0xffff, 0x0f75, - 0x0005, 0x002e, 0x16cc, 0x16cc, 0xffff, 0xffff, 0x16cc, 0x0003, - 0x0a77, 0x0000, 0x0a7a, 0x0001, 0x000b, 0x1250, 0x0002, 0x0a7d, - 0x0a84, 0x0005, 0x0000, 0x1d97, 0x1d97, 0xffff, 0xffff, 0x1d97, - 0x0005, 0x0025, 0x11bf, 0x11bf, 0xffff, 0xffff, 0x11bf, 0x0003, - 0x0a8f, 0x0a92, 0x0a96, 0x0001, 0x000d, 0x0c7f, 0x0002, 0x002e, - 0xffff, 0x16da, 0x0002, 0x0a99, 0x0aa0, 0x0005, 0x000d, 0x0caa, - 0x0c8c, 0xffff, 0xffff, 0x0c9b, 0x0005, 0x000d, 0x0cdd, 0x0cb9, - // Entry 20100 - 2013F - 0xffff, 0xffff, 0x0ccb, 0x0003, 0x0aab, 0x0000, 0x0aae, 0x0001, - 0x0000, 0x2002, 0x0002, 0x0ab1, 0x0ab8, 0x0005, 0x0013, 0x0fcd, - 0x0fcd, 0xffff, 0xffff, 0x0fcd, 0x0005, 0x002e, 0x16de, 0x16de, - 0xffff, 0xffff, 0x16de, 0x0003, 0x0ac3, 0x0000, 0x0ac6, 0x0001, - 0x0000, 0x2002, 0x0002, 0x0ac9, 0x0ad0, 0x0005, 0x0026, 0x00bf, - 0x00bf, 0xffff, 0xffff, 0x00bf, 0x0005, 0x0000, 0x1dbb, 0x1dbb, - 0xffff, 0xffff, 0x1dbb, 0x0001, 0x0ad9, 0x0001, 0x000d, 0x0d0a, - 0x0004, 0x0ae1, 0x0ae6, 0x0aeb, 0x0afa, 0x0003, 0x000d, 0x0d19, - // Entry 20140 - 2017F - 0x3284, 0x328b, 0x0003, 0x0000, 0x1de0, 0x21f1, 0x2205, 0x0002, - 0x0000, 0x0aee, 0x0003, 0x0000, 0x0af5, 0x0af2, 0x0001, 0x002e, - 0x16ea, 0x0003, 0x002e, 0xffff, 0x1708, 0x1721, 0x0002, 0x0ce1, - 0x0afd, 0x0003, 0x0b01, 0x0c41, 0x0ba1, 0x009e, 0x002e, 0xffff, - 0xffff, 0xffff, 0xffff, 0x17d1, 0x182b, 0x18b8, 0x1900, 0x194b, - 0x1990, 0x19d8, 0x1a23, 0x1a6b, 0x1b46, 0x1b88, 0x1bd6, 0x1c3c, - 0x1c81, 0x1cc9, 0x1d29, 0x1dad, 0x1e10, 0x1e70, 0x1eca, 0x1f0c, - 0xffff, 0xffff, 0x1f81, 0xffff, 0x1fec, 0xffff, 0x2081, 0x20c6, - // Entry 20180 - 201BF - 0x2111, 0x2153, 0xffff, 0xffff, 0x21d8, 0x2226, 0x2290, 0xffff, - 0xffff, 0xffff, 0x2319, 0xffff, 0x2389, 0x23e3, 0xffff, 0x2460, - 0x24ba, 0x2508, 0xffff, 0xffff, 0xffff, 0xffff, 0x25b2, 0xffff, - 0xffff, 0x2628, 0x268e, 0xffff, 0xffff, 0x273b, 0x279b, 0x27e9, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28be, 0x2900, - 0x2945, 0x298d, 0x29d2, 0xffff, 0xffff, 0x2a80, 0xffff, 0x2ad4, - 0xffff, 0xffff, 0x2b5f, 0xffff, 0x2c16, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2cb5, 0xffff, 0x2d15, 0x2d8a, 0x2df3, 0x2e47, 0xffff, - // Entry 201C0 - 201FF - 0xffff, 0xffff, 0x2ec2, 0x2f1c, 0x2f70, 0xffff, 0xffff, 0x2fee, - 0x3088, 0x30d9, 0x3115, 0xffff, 0xffff, 0x318d, 0x31db, 0x3223, - 0xffff, 0x3284, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x33ab, - 0x33f6, 0x343b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x350e, 0xffff, 0xffff, 0x357f, 0xffff, 0x35ca, 0xffff, - 0x3634, 0x367f, 0x36d3, 0xffff, 0x372c, 0x3783, 0xffff, 0xffff, - 0xffff, 0x3817, 0x385c, 0xffff, 0xffff, 0x173a, 0x1870, 0x1aa7, - 0x1af5, 0xffff, 0xffff, 0x2bb9, 0x3330, 0x009e, 0x002e, 0x1773, - // Entry 20200 - 2023F - 0x1789, 0x17a1, 0x17ba, 0x17e9, 0x183c, 0x18ca, 0x1913, 0x195c, - 0x19a2, 0x19eb, 0x1a35, 0x1a79, 0x1b56, 0x1b9c, 0x1bf2, 0x1c4d, - 0x1c93, 0x1ce3, 0x1d4f, 0x1dc8, 0x1e2a, 0x1e88, 0x1eda, 0x1f21, - 0x1f5d, 0x1f6e, 0x1f95, 0x1fcf, 0x2009, 0x2065, 0x2092, 0x20d9, - 0x2121, 0x2169, 0x21a7, 0x21c0, 0x21ec, 0x223d, 0x22a1, 0x22d5, - 0x22e4, 0x2300, 0x2332, 0x2376, 0x23a1, 0x23fc, 0x2440, 0x2478, - 0x24ce, 0x2519, 0x254d, 0x2567, 0x258e, 0x25a1, 0x25c4, 0x25fa, - 0x2614, 0x2644, 0x26a9, 0x270c, 0x2729, 0x2755, 0x27af, 0x27f9, - // Entry 20240 - 2027F - 0x282b, 0x283c, 0x2855, 0x2869, 0x2885, 0x28a2, 0x28ce, 0x2911, - 0x2957, 0x299e, 0x29f3, 0x2a47, 0x2a64, 0x2a91, 0x2ac5, 0x2ae9, - 0x2b25, 0x2b4c, 0x2b77, 0x2bfe, 0x2c29, 0x2c61, 0x2c74, 0x2c86, - 0x2c9b, 0x2cc9, 0x2d03, 0x2d36, 0x2da7, 0x2e09, 0x2e59, 0x2e8f, - 0x2ea2, 0x2eb1, 0x2eda, 0x2f32, 0x2f88, 0x2fca, 0x2fd8, 0x3010, - 0x309d, 0x30e7, 0x3129, 0x3163, 0x3172, 0x31a1, 0x31ed, 0x3236, - 0x326e, 0x32a5, 0x32f9, 0x330b, 0x331b, 0x338a, 0x339b, 0x33be, - 0x3407, 0x344d, 0x3483, 0x3496, 0x34aa, 0x34c4, 0x34dc, 0x34ef, - // Entry 20280 - 202BF - 0x34fd, 0x3520, 0x3556, 0x356e, 0x358d, 0x35bb, 0x35e2, 0x3624, - 0x3647, 0x3695, 0x36e4, 0x3718, 0x3743, 0x3798, 0x37d4, 0x37e6, - 0x37f9, 0x3828, 0x3874, 0x26f1, 0x3066, 0x1747, 0x1882, 0x1abb, - 0x1b0a, 0x2055, 0x2b3a, 0x2bca, 0x3348, 0x009e, 0x002e, 0xffff, - 0xffff, 0xffff, 0xffff, 0x180c, 0x1858, 0x18e7, 0x1931, 0x1978, - 0x19bf, 0x1a09, 0x1a52, 0x1a92, 0x1b71, 0x1bbb, 0x1c19, 0x1c69, - 0x1cb0, 0x1d08, 0x1d80, 0x1dee, 0x1e4f, 0x1eab, 0x1ef5, 0x1f41, - 0xffff, 0xffff, 0x1fb4, 0xffff, 0x2031, 0xffff, 0x20ae, 0x20f7, - // Entry 202C0 - 202FF - 0x213c, 0x218a, 0xffff, 0xffff, 0x220b, 0x225f, 0x22bd, 0xffff, - 0xffff, 0xffff, 0x2356, 0xffff, 0x23c4, 0x2420, 0xffff, 0x249b, - 0x24ed, 0x2535, 0xffff, 0xffff, 0xffff, 0xffff, 0x25e1, 0xffff, - 0xffff, 0x266b, 0x26cf, 0xffff, 0xffff, 0x277a, 0x27ce, 0x2814, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28e9, 0x292d, - 0x2974, 0x29ba, 0x2a1f, 0xffff, 0xffff, 0x2aad, 0xffff, 0x2b09, - 0xffff, 0xffff, 0x2b9a, 0xffff, 0x2c47, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2ce8, 0xffff, 0x2d62, 0x2dcf, 0x2e2a, 0x2e76, 0xffff, - // Entry 20300 - 2033F - 0xffff, 0xffff, 0x2efd, 0x2f53, 0x2fab, 0xffff, 0xffff, 0x303d, - 0x30bd, 0x3100, 0x3148, 0xffff, 0xffff, 0x31c0, 0x320a, 0x3254, - 0xffff, 0x32d1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x33dc, - 0x3423, 0x346a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x353d, 0xffff, 0xffff, 0x35a6, 0xffff, 0x3605, 0xffff, - 0x3665, 0x36b6, 0x3700, 0xffff, 0x3765, 0x37b8, 0xffff, 0xffff, - 0xffff, 0x3844, 0x3897, 0xffff, 0xffff, 0x175f, 0x189f, 0x1ada, - 0x1b2a, 0xffff, 0xffff, 0x2be6, 0x336b, 0x0003, 0x0ce5, 0x0d54, - // Entry 20340 - 2037F - 0x0d18, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 20380 - 203BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27bf, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 203C0 - 203FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - 0x1355, 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0006, 0x0000, - 0x0012, 0x0021, 0x0000, 0x0000, 0x002c, 0x0002, 0x0000, 0x0015, - 0x0002, 0x0000, 0x0018, 0x0007, 0x0000, 0x22ee, 0x255c, 0x22ea, - // Entry 20400 - 2043F - 0x2481, 0x21e9, 0x255c, 0x2481, 0x0001, 0x0023, 0x0001, 0x0025, - 0x0005, 0x002e, 0xffff, 0x015a, 0x0161, 0x0168, 0x016f, 0x0001, - 0x002e, 0x0001, 0x002f, 0x0000, 0x0003, 0x0004, 0x01a0, 0x04f1, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, 0x0008, 0x0627, - 0x0001, 0x0017, 0x0235, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - // Entry 20440 - 2047F - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, - 0x0132, 0x0153, 0x016d, 0x017e, 0x018f, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0015, 0xffff, 0x000b, - 0x23dd, 0x2358, 0x001a, 0x23e2, 0x2383, 0x2388, 0x2363, 0x238d, - 0x0037, 0x2368, 0x23e7, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, - 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, - 0x1f96, 0x2008, 0x000d, 0x0017, 0xffff, 0x0242, 0x024a, 0x0253, - // Entry 20480 - 204BF - 0x025a, 0x28f8, 0x0266, 0x026d, 0x0274, 0x027c, 0x0286, 0x028e, - 0x0297, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x000d, 0xffff, - 0x0059, 0x3224, 0x3179, 0x322c, 0x328f, 0x3230, 0x3234, 0x317e, - 0x323c, 0x3240, 0x3182, 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, - 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x214a, 0x214a, 0x1f9c, 0x2002, - 0x1f98, 0x1f96, 0x2008, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, - 0x3186, 0x318c, 0x3293, 0x3192, 0x3198, 0x319e, 0x3208, 0x315b, - 0x31a5, 0x316c, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, - // Entry 204C0 - 204FF - 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0022, 0x01d9, 0x2fdb, 0x2fe0, - 0x2fe4, 0x2fe8, 0x2fed, 0x2ff1, 0x0007, 0x0000, 0x1f96, 0x21ec, - 0x22df, 0x2002, 0x2590, 0x21ec, 0x2002, 0x0007, 0x0017, 0x02a0, - 0x02a3, 0x28fd, 0x02aa, 0x2900, 0x2904, 0x2907, 0x0007, 0x002f, - 0x000a, 0x0014, 0x001f, 0x0026, 0x002d, 0x0037, 0x003d, 0x0005, - 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0022, 0x01d9, - 0x2fdb, 0x2fe0, 0x2fe4, 0x2fe8, 0x2fed, 0x2ff1, 0x0007, 0x0000, - 0x1f96, 0x21ec, 0x22df, 0x2002, 0x2590, 0x21ec, 0x2002, 0x0007, - // Entry 20500 - 2053F - 0x0017, 0x02a0, 0x02a3, 0x28fd, 0x02aa, 0x2900, 0x2904, 0x2907, - 0x0007, 0x002f, 0x000a, 0x0014, 0x001f, 0x0026, 0x002d, 0x0037, - 0x003d, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0017, - 0xffff, 0x02f2, 0x02fd, 0x0308, 0x0313, 0x0003, 0x011d, 0x0124, - 0x012b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - // Entry 20540 - 2057F - 0x0017, 0xffff, 0x02f2, 0x02fd, 0x0308, 0x0313, 0x0001, 0x0134, - 0x0003, 0x0138, 0x0141, 0x014a, 0x0002, 0x013b, 0x013e, 0x0001, - 0x0017, 0x031e, 0x0001, 0x002f, 0x0044, 0x0002, 0x0144, 0x0147, - 0x0001, 0x0013, 0x061b, 0x0001, 0x002f, 0x004f, 0x0002, 0x014d, - 0x0150, 0x0001, 0x0017, 0x031e, 0x0001, 0x002f, 0x0044, 0x0003, - 0x0162, 0x0000, 0x0157, 0x0002, 0x015a, 0x015e, 0x0002, 0x002f, - 0x0054, 0x008f, 0x0002, 0x002f, 0x0072, 0x00a9, 0x0002, 0x0165, - 0x0169, 0x0002, 0x002f, 0x00c0, 0x00d7, 0x0002, 0x002f, 0x00cb, - // Entry 20580 - 205BF - 0x00e1, 0x0004, 0x017b, 0x0175, 0x0172, 0x0178, 0x0001, 0x0016, - 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0017, 0x03cc, 0x0001, - 0x0008, 0x0620, 0x0004, 0x018c, 0x0186, 0x0183, 0x0189, 0x0001, - 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, - 0x0001, 0x002f, 0x00e9, 0x0004, 0x019d, 0x0197, 0x0194, 0x019a, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x01e1, 0x0000, 0x0000, - 0x01e6, 0x0203, 0x021b, 0x0233, 0x024b, 0x0263, 0x027b, 0x0298, - // Entry 205C0 - 205FF - 0x02b0, 0x02c8, 0x02e5, 0x02fd, 0x0000, 0x0000, 0x0000, 0x0315, - 0x0332, 0x034a, 0x0000, 0x0000, 0x0000, 0x0362, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0367, 0x036f, 0x0377, 0x037f, 0x0387, - 0x038f, 0x0397, 0x039f, 0x03a7, 0x03af, 0x03b7, 0x03bf, 0x03c7, - 0x03cf, 0x03d7, 0x03df, 0x03e7, 0x03ef, 0x03f7, 0x03ff, 0x0407, - 0x0000, 0x040f, 0x0000, 0x0414, 0x042c, 0x0444, 0x045c, 0x0474, - 0x048c, 0x04a4, 0x04bc, 0x04d4, 0x04ec, 0x0001, 0x01e3, 0x0001, - 0x002f, 0x00f7, 0x0003, 0x01ea, 0x01ed, 0x01f2, 0x0001, 0x0017, - // Entry 20600 - 2063F - 0x03d9, 0x0003, 0x002f, 0x00fc, 0x0101, 0x0108, 0x0002, 0x01f5, - 0x01fc, 0x0005, 0x0017, 0x041b, 0x03f3, 0xffff, 0x290a, 0x040e, - 0x0005, 0x002f, 0x0133, 0x010f, 0xffff, 0x0120, 0x0133, 0x0003, - 0x0207, 0x0000, 0x020a, 0x0001, 0x0029, 0x0169, 0x0002, 0x020d, - 0x0214, 0x0005, 0x0013, 0x0776, 0x0776, 0xffff, 0x0776, 0x0776, - 0x0005, 0x0013, 0x078d, 0x078d, 0xffff, 0x078d, 0x078d, 0x0003, - 0x021f, 0x0000, 0x0222, 0x0001, 0x0029, 0x0169, 0x0002, 0x0225, - 0x022c, 0x0005, 0x0013, 0x0776, 0x0776, 0xffff, 0x0776, 0x0776, - // Entry 20640 - 2067F - 0x0005, 0x0013, 0x078d, 0x078d, 0xffff, 0x078d, 0x078d, 0x0003, - 0x0237, 0x0000, 0x023a, 0x0001, 0x0017, 0x046c, 0x0002, 0x023d, - 0x0244, 0x0005, 0x0017, 0x04a3, 0x0474, 0xffff, 0x2918, 0x0493, - 0x0005, 0x002f, 0x016f, 0x0145, 0xffff, 0x0159, 0x016f, 0x0003, - 0x024f, 0x0000, 0x0252, 0x0001, 0x0017, 0x04f2, 0x0002, 0x0255, - 0x025c, 0x0005, 0x0017, 0x04f9, 0x04f9, 0xffff, 0x04f9, 0x04f9, - 0x0005, 0x002f, 0x0184, 0x0184, 0xffff, 0x0184, 0x0184, 0x0003, - 0x0267, 0x0000, 0x026a, 0x0001, 0x0001, 0x0117, 0x0002, 0x026d, - // Entry 20680 - 206BF - 0x0274, 0x0005, 0x0017, 0x0518, 0x0518, 0xffff, 0x0518, 0x0518, - 0x0005, 0x002f, 0x0195, 0x0195, 0xffff, 0x0195, 0x0195, 0x0003, - 0x027f, 0x0282, 0x0287, 0x0001, 0x002f, 0x01a3, 0x0003, 0x002f, - 0x01aa, 0x01b9, 0x01c7, 0x0002, 0x028a, 0x0291, 0x0005, 0x002f, - 0x0206, 0x01d9, 0xffff, 0x01e7, 0x01f7, 0x0005, 0x002f, 0x023e, - 0x0216, 0xffff, 0x0229, 0x023e, 0x0003, 0x029c, 0x0000, 0x029f, - 0x0001, 0x0013, 0x08df, 0x0002, 0x02a2, 0x02a9, 0x0005, 0x0013, - 0x08e5, 0x08e5, 0xffff, 0x08e5, 0x08e5, 0x0005, 0x0013, 0x08f2, - // Entry 206C0 - 206FF - 0x08f2, 0xffff, 0x08f2, 0x08f2, 0x0003, 0x02b4, 0x0000, 0x02b7, - 0x0001, 0x0013, 0x08df, 0x0002, 0x02ba, 0x02c1, 0x0005, 0x0013, - 0x08e5, 0x08e5, 0xffff, 0x08e5, 0x08e5, 0x0005, 0x0013, 0x08f2, - 0x08f2, 0xffff, 0x08f2, 0x08f2, 0x0003, 0x02cc, 0x02cf, 0x02d4, - 0x0001, 0x002f, 0x0252, 0x0003, 0x002f, 0x025b, 0x026c, 0x027c, - 0x0002, 0x02d7, 0x02de, 0x0005, 0x002f, 0x02c3, 0x0290, 0xffff, - 0x02a0, 0x02b2, 0x0005, 0x002f, 0x0301, 0x02d5, 0xffff, 0x02ea, - 0x0301, 0x0003, 0x02e9, 0x0000, 0x02ec, 0x0001, 0x002f, 0x0317, - // Entry 20700 - 2073F - 0x0002, 0x02ef, 0x02f6, 0x0005, 0x002f, 0x031e, 0x031e, 0xffff, - 0x031e, 0x031e, 0x0005, 0x002f, 0x032c, 0x032c, 0xffff, 0x032c, - 0x032c, 0x0003, 0x0301, 0x0000, 0x0304, 0x0001, 0x002f, 0x0317, - 0x0002, 0x0307, 0x030e, 0x0005, 0x002f, 0x031e, 0x031e, 0xffff, - 0x031e, 0x031e, 0x0005, 0x002f, 0x032c, 0x032c, 0xffff, 0x032c, - 0x032c, 0x0003, 0x0319, 0x031c, 0x0321, 0x0001, 0x002f, 0x033d, - 0x0003, 0x002f, 0x0344, 0x034b, 0x0353, 0x0002, 0x0324, 0x032b, - 0x0005, 0x002f, 0x0380, 0x035a, 0xffff, 0x0368, 0x0375, 0x0005, - // Entry 20740 - 2077F - 0x002f, 0x03af, 0x038d, 0xffff, 0x039d, 0x03af, 0x0003, 0x0336, - 0x0000, 0x0339, 0x0001, 0x002f, 0x033d, 0x0002, 0x033c, 0x0343, - 0x0005, 0x002f, 0x03c0, 0x035a, 0xffff, 0x03c0, 0x0375, 0x0005, - 0x002f, 0x03cc, 0x03cc, 0xffff, 0x03cc, 0x03cc, 0x0003, 0x034e, - 0x0000, 0x0351, 0x0001, 0x0000, 0x2008, 0x0002, 0x0354, 0x035b, - 0x0005, 0x002e, 0x169e, 0x169e, 0xffff, 0x169e, 0x169e, 0x0005, - 0x002f, 0x03db, 0x03db, 0xffff, 0x03db, 0x03db, 0x0001, 0x0364, - 0x0001, 0x002f, 0x03e7, 0x0002, 0x0000, 0x036a, 0x0003, 0x002f, - // Entry 20780 - 207BF - 0x03f8, 0x040a, 0x0419, 0x0002, 0x0000, 0x0372, 0x0003, 0x002f, - 0x042e, 0x043b, 0x0445, 0x0002, 0x0000, 0x037a, 0x0003, 0x002f, - 0x0455, 0x0461, 0x046a, 0x0002, 0x0000, 0x0382, 0x0003, 0x002f, - 0x0479, 0x048c, 0x049c, 0x0002, 0x0000, 0x038a, 0x0003, 0x002f, - 0x04b2, 0x04c0, 0x04cb, 0x0002, 0x0000, 0x0392, 0x0003, 0x002f, - 0x04dc, 0x04e9, 0x04f3, 0x0002, 0x0000, 0x039a, 0x0003, 0x002f, - 0x0503, 0x0512, 0x051e, 0x0002, 0x0000, 0x03a2, 0x0003, 0x002f, - 0x0530, 0x053d, 0x0547, 0x0002, 0x0000, 0x03aa, 0x0003, 0x002f, - // Entry 207C0 - 207FF - 0x0557, 0x0563, 0x056c, 0x0002, 0x0000, 0x03b2, 0x0003, 0x002f, - 0x057b, 0x058a, 0x0596, 0x0002, 0x0000, 0x03ba, 0x0003, 0x002f, - 0x05a8, 0x05b5, 0x05bf, 0x0002, 0x0000, 0x03c2, 0x0003, 0x002f, - 0x05cf, 0x05db, 0x05e4, 0x0002, 0x0000, 0x03ca, 0x0003, 0x002f, - 0x05f3, 0x0605, 0x0616, 0x0002, 0x0000, 0x03d2, 0x0003, 0x002f, - 0x062b, 0x0639, 0x0646, 0x0002, 0x0000, 0x03da, 0x0003, 0x002f, - 0x0657, 0x0664, 0x0670, 0x0002, 0x0000, 0x03e2, 0x0003, 0x002f, - 0x0680, 0x068e, 0x069b, 0x0002, 0x0000, 0x03ea, 0x0003, 0x002f, - // Entry 20800 - 2083F - 0x06ac, 0x06b9, 0x06c5, 0x0002, 0x0000, 0x03f2, 0x0003, 0x002f, - 0x06d5, 0x06e1, 0x06ec, 0x0002, 0x0000, 0x03fa, 0x0003, 0x002f, - 0x06fb, 0x070a, 0x0716, 0x0002, 0x0000, 0x0402, 0x0003, 0x002f, - 0x0728, 0x0735, 0x073f, 0x0002, 0x0000, 0x040a, 0x0003, 0x002f, - 0x074f, 0x075b, 0x0764, 0x0001, 0x0411, 0x0001, 0x0017, 0x0abe, - 0x0003, 0x0418, 0x0000, 0x041b, 0x0001, 0x002f, 0x0773, 0x0002, - 0x041e, 0x0425, 0x0005, 0x002f, 0x07ad, 0x077c, 0xffff, 0x078c, - 0x079d, 0x0005, 0x002f, 0x07e5, 0x07bc, 0xffff, 0x07cf, 0x07e5, - // Entry 20840 - 2087F - 0x0003, 0x0430, 0x0000, 0x0433, 0x0001, 0x002f, 0x07fa, 0x0002, - 0x0436, 0x043d, 0x0005, 0x002f, 0x0801, 0x0801, 0xffff, 0x0801, - 0x0801, 0x0005, 0x002f, 0x080f, 0x080f, 0xffff, 0x080f, 0x080f, - 0x0003, 0x0448, 0x0000, 0x044b, 0x0001, 0x0000, 0x2143, 0x0002, - 0x044e, 0x0455, 0x0005, 0x0013, 0x0f1e, 0x0f1e, 0xffff, 0x0f1e, - 0x0f1e, 0x0005, 0x0013, 0x0f27, 0x0f27, 0xffff, 0x0f27, 0x0f27, - 0x0003, 0x0460, 0x0000, 0x0463, 0x0001, 0x000d, 0x0bf5, 0x0002, - 0x0466, 0x046d, 0x0005, 0x000d, 0x31bd, 0x0c07, 0xffff, 0x3298, - // Entry 20880 - 208BF - 0x3108, 0x0005, 0x002f, 0x0845, 0x0820, 0xffff, 0x0831, 0x0845, - 0x0003, 0x0478, 0x0000, 0x047b, 0x0001, 0x0001, 0x075a, 0x0002, - 0x047e, 0x0485, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, 0x0c64, - 0x0c64, 0x0005, 0x002f, 0x0858, 0x0858, 0xffff, 0x0858, 0x0858, - 0x0003, 0x0490, 0x0000, 0x0493, 0x0001, 0x0000, 0x1f9a, 0x0002, - 0x0496, 0x049d, 0x0005, 0x0017, 0x0bd3, 0x0bd3, 0xffff, 0x0bd3, - 0x0bd3, 0x0005, 0x002f, 0x0867, 0x0867, 0xffff, 0x0867, 0x0867, - 0x0003, 0x04a8, 0x0000, 0x04ab, 0x0001, 0x000d, 0x0c7f, 0x0002, - // Entry 208C0 - 208FF - 0x04ae, 0x04b5, 0x0005, 0x000d, 0x31dc, 0x0c8c, 0xffff, 0x32a7, - 0x3123, 0x0005, 0x002f, 0x089a, 0x0873, 0xffff, 0x0885, 0x089a, - 0x0003, 0x04c0, 0x0000, 0x04c3, 0x0001, 0x0001, 0x07d3, 0x0002, - 0x04c6, 0x04cd, 0x0005, 0x000d, 0x0cef, 0x0cef, 0xffff, 0x0cef, - 0x0cef, 0x0005, 0x002f, 0x08ae, 0x08ae, 0xffff, 0x08ae, 0x08ae, - 0x0003, 0x04d8, 0x0000, 0x04db, 0x0001, 0x0000, 0x2002, 0x0002, - 0x04de, 0x04e5, 0x0005, 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0x0fcd, - 0x0fcd, 0x0005, 0x0013, 0x0fd6, 0x0fd6, 0xffff, 0x0fd6, 0x0fd6, - // Entry 20900 - 2093F - 0x0001, 0x04ee, 0x0001, 0x002f, 0x08bd, 0x0004, 0x04f6, 0x04fb, - 0x0500, 0x050b, 0x0003, 0x0000, 0x1dc7, 0x2593, 0x259a, 0x0003, - 0x002f, 0x08cb, 0x08dd, 0x08ed, 0x0002, 0x0000, 0x0503, 0x0002, - 0x0000, 0x0506, 0x0003, 0x002f, 0xffff, 0x08fd, 0x0912, 0x0002, - 0x06d4, 0x050e, 0x0003, 0x05a8, 0x063e, 0x0512, 0x0094, 0x002f, - 0x0924, 0x0933, 0x0949, 0x095d, 0x0983, 0x09ca, 0x0a0a, 0x0a5b, - 0x0ac9, 0x0b34, 0x0b9f, 0xffff, 0x0bfc, 0x0c35, 0x0c72, 0x0cbd, - 0x0d0b, 0x0d49, 0x0d93, 0x0df5, 0x0e5d, 0x0eb3, 0x0f06, 0x0f4f, - // Entry 20940 - 2097F - 0x0f8e, 0x0fc6, 0x0fd5, 0x0ff4, 0x1026, 0x1045, 0x1077, 0x1098, - 0x10d7, 0x1110, 0x114f, 0x1187, 0x119b, 0x11c1, 0x1208, 0x1251, - 0x127d, 0x128a, 0x12a5, 0x12d0, 0x130c, 0x1332, 0x1385, 0x13c1, - 0x13e9, 0x1434, 0x1477, 0x14a7, 0x14be, 0x14f3, 0x1504, 0x1523, - 0x1553, 0x156b, 0x1596, 0x15f2, 0x1634, 0x164a, 0x1670, 0x16c3, - 0x1705, 0x1733, 0x1740, 0x1755, 0x1766, 0x177d, 0x178e, 0x17b0, - 0x17ea, 0x1827, 0x1865, 0xffff, 0x1893, 0x18aa, 0x18ce, 0x18fc, - 0x191d, 0x1953, 0x1961, 0x198b, 0x19c5, 0x19e9, 0x1a1b, 0x1a2b, - // Entry 20980 - 209BF - 0x1a3b, 0x1a4c, 0x1a76, 0x1aaa, 0x1ad5, 0x1b36, 0x1b89, 0x1bd0, - 0x1c00, 0x1c10, 0x1c1e, 0x1c40, 0x1c8e, 0x1cdd, 0x1d19, 0x1d26, - 0x1d57, 0x1db9, 0x1dfa, 0x1e33, 0x1e67, 0x1e75, 0x1e9e, 0x1edf, - 0x1f1b, 0x1f4d, 0x1f86, 0x1fda, 0x1ff3, 0xffff, 0x2002, 0x2012, - 0x2033, 0xffff, 0x2075, 0x20a3, 0x20b4, 0x20c5, 0x20dd, 0x20f2, - 0x2102, 0x2110, 0x212e, 0x215e, 0x216e, 0x218c, 0x21ba, 0x21d8, - 0x220a, 0x2229, 0x2269, 0x22a7, 0x22d9, 0x22fe, 0x234a, 0x2380, - 0x238f, 0x239e, 0x23c7, 0x240b, 0x0094, 0x002f, 0xffff, 0xffff, - // Entry 209C0 - 209FF - 0xffff, 0xffff, 0x0970, 0x09bb, 0x09fa, 0x0a3c, 0x0aab, 0x0b17, - 0x0b80, 0xffff, 0x0bef, 0x0c28, 0x0c61, 0x0ca6, 0x0cfd, 0x0d39, - 0x0d7b, 0x0dd5, 0x0e46, 0x0e9d, 0x0ef1, 0x0f42, 0x0f7b, 0xffff, - 0xffff, 0x0fe4, 0xffff, 0x1035, 0xffff, 0x1088, 0x10ca, 0x1103, - 0x113c, 0xffff, 0xffff, 0x11b1, 0x11f3, 0x1244, 0xffff, 0xffff, - 0xffff, 0x12bb, 0xffff, 0x131c, 0x1370, 0xffff, 0x13d5, 0x1423, - 0x1468, 0xffff, 0xffff, 0xffff, 0xffff, 0x1514, 0xffff, 0xffff, - 0x157d, 0x15da, 0xffff, 0xffff, 0x1658, 0x16b2, 0x16f7, 0xffff, - // Entry 20A00 - 20A3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x17a3, 0x17dc, 0x1818, - 0x1857, 0xffff, 0xffff, 0xffff, 0x18c0, 0xffff, 0x190b, 0xffff, - 0xffff, 0x1977, 0xffff, 0x19d9, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1a65, 0xffff, 0x1ab9, 0x1b1f, 0x1b76, 0x1bc1, 0xffff, 0xffff, - 0xffff, 0x1c2c, 0x1c7a, 0x1cc8, 0xffff, 0xffff, 0x1d38, 0x1da7, - 0x1def, 0x1e22, 0xffff, 0xffff, 0x1e8d, 0x1ed2, 0x1f0b, 0xffff, - 0x1f65, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2022, 0xffff, - 0x2067, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 20A40 - 20A7F - 0x211f, 0xffff, 0xffff, 0x217e, 0xffff, 0x21c8, 0xffff, 0x2219, - 0x225b, 0x2297, 0xffff, 0x22ea, 0x2338, 0xffff, 0xffff, 0xffff, - 0x23b9, 0x23f5, 0x0094, 0x002f, 0xffff, 0xffff, 0xffff, 0xffff, - 0x09a1, 0x09e4, 0x0a25, 0x0a85, 0x0af2, 0x0b5c, 0x0bc9, 0xffff, - 0x0c14, 0x0c4d, 0x0c8e, 0x0cdf, 0x0d24, 0x0d64, 0x0db6, 0x0e20, - 0x0e7f, 0x0ed4, 0x0f26, 0x0f67, 0x0fac, 0xffff, 0xffff, 0x100f, - 0xffff, 0x1060, 0xffff, 0x10b3, 0x10ef, 0x1128, 0x116d, 0xffff, - 0xffff, 0x11dc, 0x1228, 0x1269, 0xffff, 0xffff, 0xffff, 0x12f0, - // Entry 20A80 - 20ABF - 0xffff, 0x1353, 0x13a5, 0xffff, 0x1408, 0x1450, 0x1491, 0xffff, - 0xffff, 0xffff, 0xffff, 0x153d, 0xffff, 0xffff, 0x15ba, 0x1615, - 0xffff, 0xffff, 0x1693, 0x16df, 0x171e, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x17c8, 0x1803, 0x1841, 0x187e, 0xffff, - 0xffff, 0xffff, 0x18e7, 0xffff, 0x193a, 0xffff, 0xffff, 0x19aa, - 0xffff, 0x1a04, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a92, 0xffff, - 0x1afc, 0x1b58, 0x1ba7, 0x1bea, 0xffff, 0xffff, 0xffff, 0x1c5f, - 0x1cad, 0x1cfd, 0xffff, 0xffff, 0x1d81, 0x1dd6, 0x1e10, 0x1e4f, - // Entry 20AC0 - 20AFF - 0xffff, 0xffff, 0x1eba, 0x1ef7, 0x1f36, 0xffff, 0x1fb2, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x204f, 0xffff, 0x208e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2148, 0xffff, - 0xffff, 0x21a5, 0xffff, 0x21f3, 0xffff, 0x2244, 0x2282, 0x22c2, - 0xffff, 0x231d, 0x2367, 0xffff, 0xffff, 0xffff, 0x23e0, 0x242c, - 0x0003, 0x06d8, 0x073e, 0x070b, 0x0031, 0x0016, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 20B00 - 20B3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, - 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 20B40 - 20B7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, - 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 20B80 - 20BBF - 0xffff, 0x1b15, 0x1b69, 0xffff, 0x1bd3, 0x0003, 0x0004, 0x04df, - 0x08f1, 0x0012, 0x0017, 0x0024, 0x006c, 0x0000, 0x00b8, 0x0000, - 0x0104, 0x012f, 0x037e, 0x03d6, 0x041e, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0472, 0x048a, 0x04d2, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0016, - 0x01fe, 0x0001, 0x0026, 0x0002, 0x0029, 0x004a, 0x0002, 0x002c, - 0x003b, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - // Entry 20BC0 - 20BFF - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0003, - 0x004e, 0x0000, 0x005d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x0001, 0x006e, 0x0002, 0x0071, 0x0094, 0x0002, 0x0074, - 0x0084, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, - // Entry 20C00 - 20C3F - 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, - 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - 0x0422, 0x0003, 0x0098, 0x0000, 0x00a8, 0x000e, 0x0000, 0xffff, - 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, - 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, - 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, - 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, 0x0001, 0x00ba, 0x0002, - // Entry 20C40 - 20C7F - 0x00bd, 0x00e0, 0x0002, 0x00c0, 0x00d0, 0x000e, 0x0000, 0xffff, - 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, - 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x0003, 0x00e4, 0x0000, - 0x00f4, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, - 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, - 0x0481, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, - // Entry 20C80 - 20CBF - 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, - 0x0481, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010d, - 0x0000, 0x011e, 0x0004, 0x011b, 0x0115, 0x0112, 0x0118, 0x0001, - 0x0030, 0x0000, 0x0001, 0x0030, 0x0013, 0x0001, 0x0030, 0x0020, - 0x0001, 0x0030, 0x002c, 0x0004, 0x012c, 0x0126, 0x0123, 0x0129, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0138, 0x019d, 0x01f4, - 0x0229, 0x0330, 0x034b, 0x035c, 0x036d, 0x0002, 0x013b, 0x016c, - // Entry 20CC0 - 20CFF - 0x0003, 0x013f, 0x014e, 0x015d, 0x000d, 0x0015, 0xffff, 0x000b, - 0x23ec, 0x23f2, 0x23f9, 0x23ff, 0x2405, 0x240b, 0x002d, 0x2411, - 0x0037, 0x2418, 0x23e7, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, - 0x247f, 0x25b6, 0x247f, 0x2483, 0x2483, 0x2382, 0x25b9, 0x22ec, - 0x22ee, 0x22f0, 0x000d, 0x0030, 0xffff, 0x003b, 0x0043, 0x004c, - 0x0055, 0x005e, 0x0065, 0x006d, 0x0075, 0x007f, 0x008a, 0x0093, - 0x009c, 0x0003, 0x0170, 0x017f, 0x018e, 0x000d, 0x0015, 0xffff, - 0x000b, 0x23ec, 0x23f2, 0x23f9, 0x23ff, 0x2405, 0x240b, 0x002d, - // Entry 20D00 - 20D3F - 0x2411, 0x0037, 0x2418, 0x23e7, 0x000d, 0x0000, 0xffff, 0x2483, - 0x22e6, 0x247f, 0x25b6, 0x247f, 0x2483, 0x2483, 0x2382, 0x25b9, - 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0030, 0xffff, 0x003b, 0x0043, - 0x004c, 0x0055, 0x005e, 0x0065, 0x006d, 0x0075, 0x007f, 0x008a, - 0x0093, 0x009c, 0x0002, 0x01a0, 0x01ca, 0x0005, 0x01a6, 0x01af, - 0x01c1, 0x0000, 0x01b8, 0x0007, 0x0000, 0x2485, 0x19c7, 0x25bc, - 0x25be, 0x25c2, 0x255c, 0x25c5, 0x0007, 0x0000, 0x2485, 0x19c7, - 0x25bc, 0x25b9, 0x25c2, 0x255c, 0x25b9, 0x0007, 0x0000, 0x2485, - // Entry 20D40 - 20D7F - 0x19c7, 0x25bc, 0x25be, 0x25c2, 0x255c, 0x25c5, 0x0007, 0x0030, - 0x00a5, 0x00af, 0x00b7, 0x00bc, 0x00c3, 0x00d0, 0x00d8, 0x0005, - 0x01d0, 0x01d9, 0x01eb, 0x0000, 0x01e2, 0x0007, 0x0000, 0x2485, - 0x19c7, 0x25bc, 0x25be, 0x25c2, 0x255c, 0x25c5, 0x0007, 0x0000, - 0x2485, 0x19c7, 0x25bc, 0x25b9, 0x25c2, 0x255c, 0x25b9, 0x0007, - 0x0000, 0x2485, 0x19c7, 0x25bc, 0x25be, 0x25c2, 0x255c, 0x25c5, - 0x0007, 0x0030, 0x00a5, 0x00af, 0x00b7, 0x00bc, 0x00c3, 0x00d0, - 0x00d8, 0x0002, 0x01f7, 0x0210, 0x0003, 0x01fb, 0x0202, 0x0209, - // Entry 20D80 - 20DBF - 0x0005, 0x0030, 0xffff, 0x00e0, 0x00e3, 0x00e6, 0x00e9, 0x0005, - 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0030, - 0xffff, 0x00ec, 0x00f9, 0x0107, 0x0116, 0x0003, 0x0214, 0x021b, - 0x0222, 0x0005, 0x0030, 0xffff, 0x00e0, 0x00e3, 0x00e6, 0x00e9, - 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, - 0x0030, 0xffff, 0x0124, 0x0131, 0x013e, 0x014b, 0x0002, 0x022c, - 0x02ae, 0x0003, 0x0230, 0x025a, 0x0284, 0x000b, 0x023f, 0x0245, - 0x023c, 0x0248, 0x024e, 0x0251, 0x0254, 0x0242, 0x024b, 0x0000, - // Entry 20DC0 - 20DFF - 0x0257, 0x0001, 0x0030, 0x0158, 0x0001, 0x0030, 0x0160, 0x0001, - 0x0030, 0x0164, 0x0001, 0x0030, 0x0169, 0x0001, 0x0030, 0x016d, - 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, 0x0174, 0x0001, 0x0030, - 0x017e, 0x0001, 0x0030, 0x0183, 0x0001, 0x0030, 0x0183, 0x000b, - 0x0269, 0x026f, 0x0266, 0x0272, 0x0278, 0x027b, 0x027e, 0x026c, - 0x0275, 0x0000, 0x0281, 0x0001, 0x0030, 0x0158, 0x0001, 0x0030, - 0x0160, 0x0001, 0x0030, 0x0164, 0x0001, 0x0030, 0x0169, 0x0001, - 0x0030, 0x016d, 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, 0x0174, - // Entry 20E00 - 20E3F - 0x0001, 0x0030, 0x0174, 0x0001, 0x0030, 0x0183, 0x0001, 0x0030, - 0x0183, 0x000b, 0x0293, 0x0299, 0x0290, 0x029c, 0x02a2, 0x02a5, - 0x02a8, 0x0296, 0x029f, 0x0000, 0x02ab, 0x0001, 0x0030, 0x0158, - 0x0001, 0x0030, 0x0160, 0x0001, 0x0030, 0x0164, 0x0001, 0x0030, - 0x0169, 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, 0x016d, 0x0001, - 0x0030, 0x0174, 0x0001, 0x0030, 0x017e, 0x0001, 0x0030, 0x0183, - 0x0001, 0x0030, 0x0183, 0x0003, 0x02b2, 0x02dc, 0x0306, 0x000b, - 0x02c1, 0x02c7, 0x02be, 0x02ca, 0x02d0, 0x02d3, 0x02d6, 0x02c4, - // Entry 20E40 - 20E7F - 0x02cd, 0x0000, 0x02d9, 0x0001, 0x0030, 0x0158, 0x0001, 0x0030, - 0x0160, 0x0001, 0x0030, 0x0164, 0x0001, 0x0030, 0x0169, 0x0001, - 0x0030, 0x016d, 0x0001, 0x0030, 0x018c, 0x0001, 0x0030, 0x0174, - 0x0001, 0x0030, 0x017e, 0x0001, 0x0030, 0x0197, 0x0001, 0x0030, - 0x019e, 0x000b, 0x02eb, 0x02f1, 0x02e8, 0x02f4, 0x02fa, 0x02fd, - 0x0300, 0x02ee, 0x02f7, 0x0000, 0x0303, 0x0001, 0x0030, 0x0158, - 0x0001, 0x0030, 0x0160, 0x0001, 0x0030, 0x0164, 0x0001, 0x0030, - 0x0169, 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, 0x018c, 0x0001, - // Entry 20E80 - 20EBF - 0x0030, 0x0174, 0x0001, 0x0030, 0x017e, 0x0001, 0x0030, 0x0197, - 0x0001, 0x0030, 0x019e, 0x000b, 0x0315, 0x031b, 0x0312, 0x031e, - 0x0324, 0x0327, 0x032a, 0x0318, 0x0321, 0x0000, 0x032d, 0x0001, - 0x0030, 0x0158, 0x0001, 0x0030, 0x0160, 0x0001, 0x0030, 0x0164, - 0x0001, 0x0030, 0x0169, 0x0001, 0x0030, 0x016d, 0x0001, 0x0030, - 0x018c, 0x0001, 0x0030, 0x0174, 0x0001, 0x0030, 0x017e, 0x0001, - 0x0030, 0x0197, 0x0001, 0x0030, 0x019e, 0x0003, 0x033f, 0x0345, - 0x0334, 0x0002, 0x0337, 0x033b, 0x0002, 0x0030, 0x01a5, 0x01c5, - // Entry 20EC0 - 20EFF - 0x0002, 0x0030, 0x01bf, 0x01e0, 0x0001, 0x0341, 0x0002, 0x0030, - 0x01bf, 0x01e0, 0x0001, 0x0347, 0x0002, 0x0030, 0x01e7, 0x01eb, - 0x0004, 0x0359, 0x0353, 0x0350, 0x0356, 0x0001, 0x0030, 0x01f0, - 0x0001, 0x0030, 0x0201, 0x0001, 0x0030, 0x020c, 0x0001, 0x0030, - 0x0216, 0x0004, 0x036a, 0x0364, 0x0361, 0x0367, 0x0001, 0x0005, - 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, 0x0001, - 0x0005, 0x00a1, 0x0004, 0x037b, 0x0375, 0x0372, 0x0378, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 20F00 - 20F3F - 0x0001, 0x0000, 0x03c6, 0x0005, 0x0384, 0x0000, 0x0000, 0x0000, - 0x03cf, 0x0002, 0x0387, 0x03ab, 0x0003, 0x038b, 0x0000, 0x039b, - 0x000e, 0x0030, 0x0257, 0x0221, 0x0227, 0x022f, 0x0238, 0x0241, - 0x0247, 0x0250, 0x0261, 0x0269, 0x026f, 0x0277, 0x027d, 0x0281, - 0x000e, 0x0030, 0x0257, 0x0221, 0x0227, 0x022f, 0x0238, 0x0241, - 0x0247, 0x0250, 0x0261, 0x0269, 0x026f, 0x0277, 0x027d, 0x0281, - 0x0003, 0x03af, 0x0000, 0x03bf, 0x000e, 0x0030, 0x0257, 0x0221, - 0x0227, 0x022f, 0x0238, 0x0241, 0x0247, 0x0250, 0x0261, 0x0269, - // Entry 20F40 - 20F7F - 0x026f, 0x0277, 0x027d, 0x0281, 0x000e, 0x0030, 0x0257, 0x0221, - 0x0227, 0x022f, 0x0238, 0x0241, 0x0247, 0x0250, 0x0261, 0x0269, - 0x026f, 0x0277, 0x027d, 0x0281, 0x0001, 0x03d1, 0x0001, 0x03d3, - 0x0001, 0x0030, 0x0286, 0x0001, 0x03d8, 0x0002, 0x03db, 0x03fc, - 0x0002, 0x03de, 0x03ed, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, - 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, - 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - // Entry 20F80 - 20FBF - 0x2398, 0x0003, 0x0400, 0x0000, 0x040f, 0x000d, 0x0000, 0xffff, - 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, - 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, - 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, - 0x05ec, 0x05f2, 0x05f8, 0x0005, 0x0424, 0x0000, 0x0000, 0x0000, - 0x046b, 0x0002, 0x0427, 0x0449, 0x0003, 0x042b, 0x0000, 0x043a, - 0x000d, 0x0030, 0xffff, 0x028a, 0x028f, 0x0294, 0x029c, 0x02a4, - 0x02ac, 0x02b5, 0x02ba, 0x02bf, 0x02c4, 0x02c9, 0x02d2, 0x000d, - // Entry 20FC0 - 20FFF - 0x0030, 0xffff, 0x02db, 0x02e4, 0x02ea, 0x02f9, 0x0309, 0x031b, - 0x032e, 0x0335, 0x033c, 0x0345, 0x034d, 0x0358, 0x0003, 0x0000, - 0x044d, 0x045c, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x0030, 0xffff, 0x02db, 0x02e4, 0x0364, 0x036c, - 0x0375, 0x0380, 0x032e, 0x0335, 0x033c, 0x0345, 0x034d, 0x0358, - 0x0001, 0x046d, 0x0001, 0x046f, 0x0001, 0x0030, 0x038c, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0479, 0x0004, 0x0487, - // Entry 21000 - 2103F - 0x0481, 0x047e, 0x0484, 0x0001, 0x0030, 0x0000, 0x0001, 0x0030, - 0x0013, 0x0001, 0x0030, 0x038f, 0x0001, 0x0030, 0x039a, 0x0001, - 0x048c, 0x0002, 0x048f, 0x04b0, 0x0002, 0x0492, 0x04a1, 0x000d, - 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, - 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0003, 0x04b4, 0x0000, - 0x04c3, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, - // Entry 21040 - 2107F - 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, - 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, - 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x04d8, 0x0001, 0x04da, 0x0001, - 0x04dc, 0x0001, 0x0030, 0x03a9, 0x0040, 0x0520, 0x0000, 0x0000, - 0x0525, 0x053c, 0x0553, 0x056a, 0x0581, 0x0598, 0x05af, 0x05c6, - 0x05dd, 0x05f4, 0x060f, 0x062a, 0x0000, 0x0000, 0x0000, 0x0645, - 0x065e, 0x0677, 0x0000, 0x0000, 0x0000, 0x0690, 0x0000, 0x0000, - // Entry 21080 - 210BF - 0x0000, 0x0000, 0x0000, 0x0695, 0x06a9, 0x06bd, 0x06d1, 0x06e5, - 0x06f9, 0x070d, 0x0721, 0x0735, 0x0749, 0x075d, 0x0771, 0x0785, - 0x0799, 0x07ad, 0x07c1, 0x07d5, 0x07e9, 0x07fd, 0x0811, 0x0825, - 0x0000, 0x0839, 0x0000, 0x083e, 0x0854, 0x0866, 0x0878, 0x088e, - 0x08a0, 0x08b2, 0x08c8, 0x08da, 0x08ec, 0x0001, 0x0522, 0x0001, - 0x0030, 0x03b7, 0x0003, 0x0529, 0x052c, 0x0531, 0x0001, 0x0030, - 0x03bc, 0x0003, 0x0030, 0x03c0, 0x03cc, 0x03d6, 0x0002, 0x0534, - 0x0538, 0x0002, 0x0030, 0x03e6, 0x03e6, 0x0002, 0x0030, 0x03f5, - // Entry 210C0 - 210FF - 0x03f5, 0x0003, 0x0540, 0x0543, 0x0548, 0x0001, 0x0030, 0x03bc, - 0x0003, 0x0030, 0x03c0, 0x03cc, 0x03d6, 0x0002, 0x054b, 0x054f, - 0x0002, 0x0030, 0x03e6, 0x03e6, 0x0002, 0x0030, 0x03f5, 0x03f5, - 0x0003, 0x0557, 0x055a, 0x055f, 0x0001, 0x0030, 0x03bc, 0x0003, - 0x0030, 0x03c0, 0x03cc, 0x03d6, 0x0002, 0x0562, 0x0566, 0x0002, - 0x0030, 0x03e6, 0x03e6, 0x0002, 0x0030, 0x03f5, 0x03f5, 0x0003, - 0x056e, 0x0571, 0x0576, 0x0001, 0x0030, 0x0409, 0x0003, 0x0030, - 0x0413, 0x0425, 0x0434, 0x0002, 0x0579, 0x057d, 0x0002, 0x0030, - // Entry 21100 - 2113F - 0x044a, 0x044a, 0x0002, 0x0030, 0x045f, 0x045f, 0x0003, 0x0585, - 0x0588, 0x058d, 0x0001, 0x0030, 0x0409, 0x0003, 0x0030, 0x0413, - 0x0425, 0x0434, 0x0002, 0x0590, 0x0594, 0x0002, 0x0030, 0x044a, - 0x044a, 0x0002, 0x0030, 0x045f, 0x045f, 0x0003, 0x059c, 0x059f, - 0x05a4, 0x0001, 0x0030, 0x0409, 0x0003, 0x0030, 0x0413, 0x0425, - 0x0434, 0x0002, 0x05a7, 0x05ab, 0x0002, 0x0030, 0x044a, 0x044a, - 0x0002, 0x0030, 0x045f, 0x045f, 0x0003, 0x05b3, 0x05b6, 0x05bb, - 0x0001, 0x0030, 0x0479, 0x0003, 0x0030, 0x0480, 0x048f, 0x049b, - // Entry 21140 - 2117F - 0x0002, 0x05be, 0x05c2, 0x0002, 0x0030, 0x04ae, 0x04ae, 0x0002, - 0x0030, 0x04c0, 0x04c0, 0x0003, 0x05ca, 0x05cd, 0x05d2, 0x0001, - 0x0030, 0x0479, 0x0003, 0x0030, 0x0480, 0x048f, 0x049b, 0x0002, - 0x05d5, 0x05d9, 0x0002, 0x0030, 0x04ae, 0x04ae, 0x0002, 0x0030, - 0x04c0, 0x04c0, 0x0003, 0x05e1, 0x05e4, 0x05e9, 0x0001, 0x0030, - 0x0479, 0x0003, 0x0030, 0x0480, 0x048f, 0x049b, 0x0002, 0x05ec, - 0x05f0, 0x0002, 0x0030, 0x04ae, 0x04ae, 0x0002, 0x0030, 0x04c0, - 0x04c0, 0x0004, 0x05f9, 0x05fc, 0x0601, 0x060c, 0x0001, 0x0030, - // Entry 21180 - 211BF - 0x04d7, 0x0003, 0x0030, 0x04dc, 0x04e9, 0x04f3, 0x0002, 0x0604, - 0x0608, 0x0002, 0x0030, 0x0504, 0x0504, 0x0002, 0x0030, 0x0514, - 0x0514, 0x0001, 0x0030, 0x0529, 0x0004, 0x0614, 0x0617, 0x061c, - 0x0627, 0x0001, 0x0030, 0x04d7, 0x0003, 0x0030, 0x04dc, 0x04e9, - 0x04f3, 0x0002, 0x061f, 0x0623, 0x0002, 0x0030, 0x0504, 0x0504, - 0x0002, 0x0030, 0x0514, 0x0514, 0x0001, 0x0030, 0x0529, 0x0004, - 0x062f, 0x0632, 0x0637, 0x0642, 0x0001, 0x0030, 0x04d7, 0x0003, - 0x0030, 0x04dc, 0x04e9, 0x04f3, 0x0002, 0x063a, 0x063e, 0x0002, - // Entry 211C0 - 211FF - 0x0030, 0x0504, 0x0504, 0x0002, 0x0030, 0x0514, 0x0514, 0x0001, - 0x0030, 0x0529, 0x0003, 0x0649, 0x064c, 0x0653, 0x0001, 0x0030, - 0x0532, 0x0005, 0x0030, 0x0543, 0x054a, 0x054d, 0x0536, 0x0554, - 0x0002, 0x0656, 0x065a, 0x0002, 0x0030, 0x0560, 0x0560, 0x0002, - 0x0030, 0x056f, 0x056f, 0x0003, 0x0662, 0x0665, 0x066c, 0x0001, - 0x0030, 0x0532, 0x0005, 0x0030, 0x0543, 0x054a, 0x054d, 0x0536, - 0x0554, 0x0002, 0x066f, 0x0673, 0x0002, 0x0030, 0x0560, 0x0560, - 0x0002, 0x0030, 0x0583, 0x0583, 0x0003, 0x067b, 0x067e, 0x0685, - // Entry 21200 - 2123F - 0x0001, 0x0030, 0x0532, 0x0005, 0x0030, 0x0543, 0x054a, 0x054d, - 0x0536, 0x0554, 0x0002, 0x0688, 0x068c, 0x0002, 0x0030, 0x0560, - 0x0560, 0x0002, 0x0030, 0x0583, 0x0583, 0x0001, 0x0692, 0x0001, - 0x0030, 0x058d, 0x0003, 0x0000, 0x0699, 0x069e, 0x0003, 0x0030, - 0x0598, 0x05aa, 0x05b9, 0x0002, 0x06a1, 0x06a5, 0x0002, 0x0030, - 0x05cf, 0x05cf, 0x0002, 0x0030, 0x05e4, 0x05e4, 0x0003, 0x0000, - 0x06ad, 0x06b2, 0x0003, 0x0030, 0x0598, 0x05aa, 0x05b9, 0x0002, - 0x06b5, 0x06b9, 0x0002, 0x0030, 0x05cf, 0x05cf, 0x0002, 0x0030, - // Entry 21240 - 2127F - 0x05e4, 0x05e4, 0x0003, 0x0000, 0x06c1, 0x06c6, 0x0003, 0x0030, - 0x0598, 0x05aa, 0x05b9, 0x0002, 0x06c9, 0x06cd, 0x0002, 0x0030, - 0x05cf, 0x05cf, 0x0002, 0x0030, 0x05e4, 0x05e4, 0x0003, 0x0000, - 0x06d5, 0x06da, 0x0003, 0x0030, 0x05fe, 0x060e, 0x061b, 0x0002, - 0x06dd, 0x06e1, 0x0002, 0x0030, 0x062f, 0x062f, 0x0002, 0x0030, - 0x0642, 0x0642, 0x0003, 0x0000, 0x06e9, 0x06ee, 0x0003, 0x0030, - 0x05fe, 0x060e, 0x061b, 0x0002, 0x06f1, 0x06f5, 0x0002, 0x0030, - 0x062f, 0x062f, 0x0002, 0x0030, 0x0642, 0x0642, 0x0003, 0x0000, - // Entry 21280 - 212BF - 0x06fd, 0x0702, 0x0003, 0x0030, 0x05fe, 0x060e, 0x061b, 0x0002, - 0x0705, 0x0709, 0x0002, 0x0030, 0x062f, 0x062f, 0x0002, 0x0030, - 0x0642, 0x0642, 0x0003, 0x0000, 0x0711, 0x0716, 0x0003, 0x0030, - 0x065a, 0x0667, 0x0671, 0x0002, 0x0719, 0x071d, 0x0002, 0x0030, - 0x0682, 0x0682, 0x0002, 0x0030, 0x0692, 0x0692, 0x0003, 0x0000, - 0x0725, 0x072a, 0x0003, 0x0030, 0x065a, 0x0667, 0x0671, 0x0002, - 0x072d, 0x0731, 0x0002, 0x0030, 0x0682, 0x0682, 0x0002, 0x0030, - 0x0692, 0x0692, 0x0003, 0x0000, 0x0739, 0x073e, 0x0003, 0x0030, - // Entry 212C0 - 212FF - 0x065a, 0x0667, 0x0671, 0x0002, 0x0741, 0x0745, 0x0002, 0x0030, - 0x0682, 0x0682, 0x0002, 0x0030, 0x0692, 0x0692, 0x0003, 0x0000, - 0x074d, 0x0752, 0x0003, 0x0030, 0x06a6, 0x06b5, 0x06c1, 0x0002, - 0x0755, 0x0759, 0x0002, 0x0030, 0x06d4, 0x06d4, 0x0002, 0x0030, - 0x06e6, 0x06e6, 0x0003, 0x0000, 0x0761, 0x0766, 0x0003, 0x0030, - 0x06a6, 0x06b5, 0x06c1, 0x0002, 0x0769, 0x076d, 0x0002, 0x0030, - 0x06d4, 0x06d4, 0x0002, 0x0030, 0x06e6, 0x06e6, 0x0003, 0x0000, - 0x0775, 0x077a, 0x0003, 0x0030, 0x06a6, 0x06b5, 0x06c1, 0x0002, - // Entry 21300 - 2133F - 0x077d, 0x0781, 0x0002, 0x0030, 0x06d4, 0x06d4, 0x0002, 0x0030, - 0x06e6, 0x06e6, 0x0003, 0x0000, 0x0789, 0x078e, 0x0003, 0x0030, - 0x06fe, 0x0713, 0x0725, 0x0002, 0x0791, 0x0795, 0x0002, 0x0030, - 0x073e, 0x073e, 0x0002, 0x0030, 0x0756, 0x0756, 0x0003, 0x0000, - 0x079d, 0x07a2, 0x0003, 0x0030, 0x06fe, 0x0713, 0x0725, 0x0002, - 0x07a5, 0x07a9, 0x0002, 0x0030, 0x073e, 0x073e, 0x0002, 0x0030, - 0x0756, 0x0756, 0x0003, 0x0000, 0x07b1, 0x07b6, 0x0003, 0x0030, - 0x06fe, 0x0713, 0x0725, 0x0002, 0x07b9, 0x07bd, 0x0002, 0x0030, - // Entry 21340 - 2137F - 0x073e, 0x073e, 0x0002, 0x0030, 0x0756, 0x0756, 0x0003, 0x0000, - 0x07c5, 0x07ca, 0x0003, 0x0030, 0x0773, 0x0783, 0x0790, 0x0002, - 0x07cd, 0x07d1, 0x0002, 0x0030, 0x07a4, 0x07a4, 0x0002, 0x0030, - 0x07b7, 0x07b7, 0x0003, 0x0000, 0x07d9, 0x07de, 0x0003, 0x0030, - 0x0773, 0x0783, 0x0790, 0x0002, 0x07e1, 0x07e5, 0x0002, 0x0030, - 0x07a4, 0x07a4, 0x0002, 0x0030, 0x07b7, 0x07b7, 0x0003, 0x0000, - 0x07ed, 0x07f2, 0x0003, 0x0030, 0x0773, 0x0783, 0x0790, 0x0002, - 0x07f5, 0x07f9, 0x0002, 0x0030, 0x07a4, 0x07a4, 0x0002, 0x0030, - // Entry 21380 - 213BF - 0x07b7, 0x07b7, 0x0003, 0x0000, 0x0801, 0x0806, 0x0003, 0x0030, - 0x07cf, 0x07df, 0x07ec, 0x0002, 0x0809, 0x080d, 0x0002, 0x0030, - 0x0800, 0x0800, 0x0002, 0x0030, 0x0813, 0x0813, 0x0003, 0x0000, - 0x0815, 0x081a, 0x0003, 0x0030, 0x07cf, 0x07df, 0x07ec, 0x0002, - 0x081d, 0x0821, 0x0002, 0x0030, 0x0800, 0x0800, 0x0002, 0x0030, - 0x0813, 0x0813, 0x0003, 0x0000, 0x0829, 0x082e, 0x0003, 0x0030, - 0x07cf, 0x07df, 0x07ec, 0x0002, 0x0831, 0x0835, 0x0002, 0x0030, - 0x0800, 0x0800, 0x0002, 0x0030, 0x0813, 0x0813, 0x0001, 0x083b, - // Entry 213C0 - 213FF - 0x0001, 0x0030, 0x082b, 0x0003, 0x0842, 0x0845, 0x0849, 0x0001, - 0x0030, 0x0833, 0x0002, 0x0030, 0xffff, 0x0838, 0x0002, 0x084c, - 0x0850, 0x0002, 0x0030, 0x084a, 0x084a, 0x0002, 0x0030, 0x085a, - 0x085a, 0x0003, 0x0858, 0x0000, 0x085b, 0x0001, 0x0030, 0x0833, - 0x0002, 0x085e, 0x0862, 0x0002, 0x0030, 0x084a, 0x084a, 0x0002, - 0x0030, 0x085a, 0x085a, 0x0003, 0x086a, 0x0000, 0x086d, 0x0001, - 0x0030, 0x0833, 0x0002, 0x0870, 0x0874, 0x0002, 0x0030, 0x084a, - 0x084a, 0x0002, 0x0030, 0x085a, 0x085a, 0x0003, 0x087c, 0x087f, - // Entry 21400 - 2143F - 0x0883, 0x0001, 0x0030, 0x0870, 0x0002, 0x0030, 0xffff, 0x0875, - 0x0002, 0x0886, 0x088a, 0x0002, 0x0030, 0x0885, 0x0885, 0x0002, - 0x0030, 0x0895, 0x0895, 0x0003, 0x0892, 0x0000, 0x0895, 0x0001, - 0x0030, 0x0870, 0x0002, 0x0898, 0x089c, 0x0002, 0x0030, 0x0885, - 0x0885, 0x0002, 0x0030, 0x0895, 0x0895, 0x0003, 0x08a4, 0x0000, - 0x08a7, 0x0001, 0x0030, 0x0870, 0x0002, 0x08aa, 0x08ae, 0x0002, - 0x0030, 0x0885, 0x0885, 0x0002, 0x0030, 0x0895, 0x0895, 0x0003, - 0x08b6, 0x08b9, 0x08bd, 0x0001, 0x0030, 0x08aa, 0x0002, 0x0030, - // Entry 21440 - 2147F - 0xffff, 0x08b5, 0x0002, 0x08c0, 0x08c4, 0x0002, 0x0030, 0x08ba, - 0x08ba, 0x0002, 0x0030, 0x08d0, 0x08d0, 0x0003, 0x08cc, 0x0000, - 0x08cf, 0x0001, 0x0030, 0x08aa, 0x0002, 0x08d2, 0x08d6, 0x0002, - 0x0030, 0x08ba, 0x08ba, 0x0002, 0x0030, 0x08d0, 0x08d0, 0x0003, - 0x08de, 0x0000, 0x08e1, 0x0001, 0x0030, 0x08aa, 0x0002, 0x08e4, - 0x08e8, 0x0002, 0x0030, 0x08ba, 0x08ba, 0x0002, 0x0030, 0x08d0, - 0x08d0, 0x0001, 0x08ee, 0x0001, 0x0030, 0x08eb, 0x0004, 0x08f6, - 0x08fb, 0x0900, 0x090f, 0x0003, 0x0000, 0x1dc7, 0x2593, 0x259a, - // Entry 21480 - 214BF - 0x0003, 0x0030, 0x08f5, 0x08fe, 0x090e, 0x0002, 0x0000, 0x0903, - 0x0003, 0x0000, 0x090a, 0x0907, 0x0001, 0x0030, 0x091c, 0x0003, - 0x0030, 0xffff, 0x0933, 0x0944, 0x0002, 0x0af6, 0x0912, 0x0003, - 0x0916, 0x0a56, 0x09b6, 0x009e, 0x0030, 0xffff, 0xffff, 0xffff, - 0xffff, 0x09dd, 0x0a2b, 0x0a91, 0x0ace, 0x0b31, 0x0b88, 0x0bc7, - 0x0c15, 0x0c4a, 0x0cdb, 0x0d06, 0x0d46, 0x0da0, 0x0def, 0x0e3d, - 0x0e98, 0x0f08, 0x0f5d, 0x0fb5, 0x0ffe, 0x1031, 0xffff, 0xffff, - 0x1090, 0xffff, 0x10e6, 0xffff, 0x115c, 0x1193, 0x11c9, 0x11fa, - // Entry 214C0 - 214FF - 0xffff, 0xffff, 0x1278, 0x12b2, 0x1300, 0xffff, 0xffff, 0xffff, - 0x1371, 0xffff, 0x13d9, 0x142d, 0xffff, 0x1488, 0x14d9, 0x152e, - 0xffff, 0xffff, 0xffff, 0xffff, 0x15bc, 0xffff, 0xffff, 0x162d, - 0x1681, 0xffff, 0xffff, 0x1711, 0x175b, 0x179a, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x184d, 0x187e, 0x18b8, 0x18ec, - 0x191d, 0xffff, 0xffff, 0x19b7, 0xffff, 0x19f5, 0xffff, 0xffff, - 0x1a71, 0xffff, 0x1b10, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ba0, - 0xffff, 0x1bef, 0x1c4c, 0x1cb5, 0x1cf8, 0xffff, 0xffff, 0xffff, - // Entry 21500 - 2153F - 0x1d56, 0x1da2, 0x1de5, 0xffff, 0xffff, 0x1e4c, 0x1ec8, 0x1f11, - 0x1f42, 0xffff, 0xffff, 0x1fa6, 0x1fe0, 0x200e, 0xffff, 0x207d, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x217f, 0x21b9, 0x21ef, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22a6, - 0xffff, 0xffff, 0x22fb, 0xffff, 0x2337, 0xffff, 0x2393, 0x23ca, - 0x2413, 0xffff, 0x245a, 0x24a3, 0xffff, 0xffff, 0xffff, 0x251c, - 0x2556, 0xffff, 0xffff, 0x0954, 0x0a61, 0x0c78, 0x0ca8, 0xffff, - 0xffff, 0x1ac3, 0x2126, 0x009e, 0x0030, 0x097e, 0x0991, 0x09ac, - // Entry 21540 - 2157F - 0x09c5, 0x09f6, 0x0a39, 0x0aa1, 0x0aeb, 0x0b4a, 0x0b99, 0x0bdd, - 0x0c22, 0x0c55, 0x0ce5, 0x0d17, 0x0d63, 0x0db6, 0x0e05, 0x0e57, - 0x0eb9, 0x0f20, 0x0f76, 0x0fc9, 0x100e, 0x1041, 0x106e, 0x107b, - 0x10a0, 0x10cd, 0x1105, 0x1146, 0x116a, 0x11a4, 0x11d5, 0x120c, - 0x123d, 0x125b, 0x1287, 0x12c6, 0x1310, 0x1333, 0x133f, 0x1359, - 0x138c, 0x13c5, 0x13f4, 0x1446, 0x147b, 0x14a2, 0x14f1, 0x153a, - 0x155f, 0x1574, 0x1597, 0x15ae, 0x15ca, 0x15f3, 0x160a, 0x1648, - 0x169d, 0x16e8, 0x16fe, 0x1728, 0x176f, 0x17a5, 0x17c8, 0x17da, - // Entry 21580 - 215BF - 0x17ef, 0x17ff, 0x1818, 0x182f, 0x1859, 0x188d, 0x18c5, 0x18f8, - 0x193c, 0x1986, 0x199e, 0x19c3, 0x19e8, 0x1a09, 0x1a3e, 0x1a5e, - 0x1a88, 0x1af3, 0x1b1f, 0x1b49, 0x1b58, 0x1b6f, 0x1b88, 0x1bb5, - 0x1be2, 0x1c0a, 0x1c6b, 0x1cc7, 0x1d06, 0x1d2f, 0x1d3d, 0x1d49, - 0x1d6b, 0x1db4, 0x1df8, 0x1e2a, 0x1e35, 0x1e67, 0x1edc, 0x1f1d, - 0x1f53, 0x1f82, 0x1f8e, 0x1fb5, 0x1feb, 0x2025, 0x2060, 0x209e, - 0x20ec, 0x2104, 0x2118, 0x2162, 0x2171, 0x218e, 0x21c7, 0x21fc, - 0x2223, 0x223c, 0x2253, 0x226a, 0x227e, 0x228e, 0x229a, 0x22b2, - // Entry 215C0 - 215FF - 0x22d7, 0x22ed, 0x2307, 0x232c, 0x234d, 0x2386, 0x23a1, 0x23de, - 0x2421, 0x244a, 0x246e, 0x24b4, 0x24e3, 0x24f1, 0x2503, 0x252b, - 0x256b, 0x16d8, 0x1eaa, 0x095e, 0x0a6d, 0x0c84, 0x0cb5, 0xffff, - 0x1a52, 0x1acf, 0x2136, 0x009e, 0x0030, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0a10, 0x0a4c, 0x0ab7, 0x0b0d, 0x0b68, 0x0baf, 0x0bf8, - 0x0c35, 0x0c66, 0x0cf5, 0x0d2e, 0x0d81, 0x0dd2, 0x0e20, 0x0e77, - 0x0ee0, 0x0f3e, 0x0f95, 0x0fe3, 0x101f, 0x1057, 0xffff, 0xffff, - 0x10b6, 0xffff, 0x1125, 0xffff, 0x117e, 0x11b6, 0x11e7, 0x1224, - // Entry 21600 - 2163F - 0xffff, 0xffff, 0x129c, 0x12e0, 0x1321, 0xffff, 0xffff, 0xffff, - 0x13a8, 0xffff, 0x1410, 0x1460, 0xffff, 0x14bd, 0x150f, 0x154c, - 0xffff, 0xffff, 0xffff, 0xffff, 0x15de, 0xffff, 0xffff, 0x1664, - 0x16ba, 0xffff, 0xffff, 0x1741, 0x1784, 0x17b6, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x186b, 0x18a2, 0x18d8, 0x190a, - 0x1960, 0xffff, 0xffff, 0x19d5, 0xffff, 0x1a23, 0xffff, 0xffff, - 0x1aa5, 0xffff, 0x1b33, 0xffff, 0xffff, 0xffff, 0xffff, 0x1bcb, - 0xffff, 0x1c2a, 0x1c8f, 0x1cdf, 0x1d1a, 0xffff, 0xffff, 0xffff, - // Entry 21640 - 2167F - 0x1d86, 0x1dcc, 0x1e10, 0xffff, 0xffff, 0x1e88, 0x1ef6, 0x1f2f, - 0x1f6a, 0xffff, 0xffff, 0x1fca, 0x1ffc, 0x2042, 0xffff, 0x20c4, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x21a3, 0x21da, 0x220f, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22c4, - 0xffff, 0xffff, 0x2319, 0xffff, 0x2369, 0xffff, 0x23b5, 0x23f8, - 0x2435, 0xffff, 0x2488, 0x24cb, 0xffff, 0xffff, 0xffff, 0x2540, - 0x2586, 0xffff, 0xffff, 0x096d, 0x0a7e, 0x0c95, 0x0cc7, 0xffff, - 0xffff, 0x1ae0, 0x214b, 0x0003, 0x0afa, 0x0b69, 0x0b2d, 0x0031, - // Entry 21680 - 216BF - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, - 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 216C0 - 216FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27c3, 0x0031, 0x0006, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 21700 - 2173F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, - 0x13e3, 0x0003, 0x0004, 0x024f, 0x0643, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, - 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0031, 0x0000, 0x0001, - // Entry 21740 - 2177F - 0x0031, 0x0016, 0x0001, 0x0031, 0x0027, 0x0001, 0x001e, 0x1a8e, - 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0203, 0x021c, - 0x022d, 0x023e, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, - 0x0066, 0x000d, 0x0031, 0xffff, 0x0037, 0x003e, 0x0045, 0x004c, - 0x0053, 0x005a, 0x0061, 0x0068, 0x006f, 0x0076, 0x007d, 0x0084, - 0x000d, 0x0031, 0xffff, 0x008b, 0x008e, 0x0091, 0x0094, 0x0091, - // Entry 21780 - 217BF - 0x008b, 0x008b, 0x0097, 0x009a, 0x008b, 0x009d, 0x00a0, 0x000d, - 0x0031, 0xffff, 0x00a3, 0x00b4, 0x00c5, 0x00d0, 0x00dd, 0x00ea, - 0x00f9, 0x0108, 0x0119, 0x012e, 0x0143, 0x0156, 0x0003, 0x0079, - 0x0088, 0x0097, 0x000d, 0x0031, 0xffff, 0x0037, 0x003e, 0x0045, - 0x004c, 0x0053, 0x005a, 0x0061, 0x0068, 0x006f, 0x0076, 0x007d, - 0x0084, 0x000d, 0x0031, 0xffff, 0x008b, 0x008e, 0x0091, 0x0094, - 0x0091, 0x008b, 0x008b, 0x0097, 0x009a, 0x008b, 0x009d, 0x00a0, - 0x000d, 0x0031, 0xffff, 0x016b, 0x017a, 0x0189, 0x0192, 0x019d, - // Entry 217C0 - 217FF - 0x01a8, 0x01b5, 0x01c2, 0x01d1, 0x01e4, 0x01f7, 0x0208, 0x0002, - 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, - 0x0007, 0x0031, 0x021b, 0x0222, 0x0229, 0x0230, 0x0237, 0x023e, - 0x0245, 0x0007, 0x0031, 0x024c, 0x024f, 0x024f, 0x0252, 0x008b, - 0x0255, 0x0258, 0x0007, 0x0031, 0x025b, 0x0260, 0x0265, 0x026a, - 0x026f, 0x0274, 0x0279, 0x0007, 0x0031, 0x027e, 0x028b, 0x02a0, - 0x02b3, 0x02c8, 0x02db, 0x02e8, 0x0005, 0x00d9, 0x00e2, 0x00f4, - 0x0000, 0x00eb, 0x0007, 0x0031, 0x021b, 0x0222, 0x0229, 0x0230, - // Entry 21800 - 2183F - 0x0237, 0x023e, 0x0245, 0x0007, 0x0031, 0x024c, 0x024f, 0x024f, - 0x0252, 0x008b, 0x0255, 0x0258, 0x0007, 0x0031, 0x025b, 0x0260, - 0x0265, 0x026a, 0x026f, 0x0274, 0x0279, 0x0007, 0x0031, 0x027e, - 0x028b, 0x02a0, 0x02b3, 0x02c8, 0x02db, 0x02e8, 0x0002, 0x0100, - 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0031, 0xffff, - 0x02f3, 0x0304, 0x0315, 0x0326, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0031, 0xffff, 0x0337, 0x034f, - 0x0367, 0x037f, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0031, - // Entry 21840 - 2187F - 0xffff, 0x02f3, 0x0304, 0x0315, 0x0326, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0031, 0xffff, 0x0337, - 0x034f, 0x0367, 0x037f, 0x0002, 0x0135, 0x019c, 0x0003, 0x0139, - 0x015a, 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, 0x014e, 0x0151, - 0x0154, 0x0157, 0x0148, 0x0001, 0x0031, 0x0397, 0x0001, 0x0031, - 0x03a8, 0x0001, 0x0031, 0x03ad, 0x0001, 0x0031, 0x03b8, 0x0001, - 0x0031, 0x03bd, 0x0001, 0x0031, 0x03d0, 0x0001, 0x0031, 0x03dd, - 0x0001, 0x0031, 0x03ee, 0x0008, 0x0166, 0x016c, 0x0163, 0x016f, - // Entry 21880 - 218BF - 0x0172, 0x0175, 0x0178, 0x0169, 0x0001, 0x0031, 0x03fb, 0x0001, - 0x0031, 0x0403, 0x0001, 0x0031, 0x0406, 0x0001, 0x0031, 0x040e, - 0x0001, 0x0031, 0x0411, 0x0001, 0x0031, 0x0418, 0x0001, 0x0031, - 0x0222, 0x0001, 0x0031, 0x041f, 0x0008, 0x0187, 0x018d, 0x0184, - 0x0190, 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, 0x0031, 0x0397, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0031, 0x03ad, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x0031, 0x03bd, 0x0001, 0x0031, 0x03d0, 0x0001, - 0x0031, 0x03dd, 0x0001, 0x0031, 0x03ee, 0x0003, 0x01a0, 0x01c1, - // Entry 218C0 - 218FF - 0x01e2, 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, 0x01b8, 0x01bb, - 0x01be, 0x01af, 0x0001, 0x0031, 0x0397, 0x0001, 0x0031, 0x03a8, - 0x0001, 0x0031, 0x03ad, 0x0001, 0x0031, 0x03b8, 0x0001, 0x0031, - 0x0426, 0x0001, 0x0031, 0x0433, 0x0001, 0x0031, 0x043e, 0x0001, - 0x0031, 0x0449, 0x0008, 0x01cd, 0x01d3, 0x01ca, 0x01d6, 0x01d9, - 0x01dc, 0x01df, 0x01d0, 0x0001, 0x0031, 0x0397, 0x0001, 0x0031, - 0x03a8, 0x0001, 0x0031, 0x03ad, 0x0001, 0x0031, 0x03b8, 0x0001, - 0x0031, 0x0426, 0x0001, 0x0031, 0x0433, 0x0001, 0x0031, 0x043e, - // Entry 21900 - 2193F - 0x0001, 0x0031, 0x0449, 0x0008, 0x01ee, 0x01f4, 0x01eb, 0x01f7, - 0x01fa, 0x01fd, 0x0200, 0x01f1, 0x0001, 0x0031, 0x0397, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0031, 0x03ad, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x0031, 0x0426, 0x0001, 0x0031, 0x0433, 0x0001, 0x0031, - 0x043e, 0x0001, 0x0031, 0x0449, 0x0003, 0x0212, 0x0000, 0x0207, - 0x0002, 0x020a, 0x020e, 0x0002, 0x0031, 0x0454, 0x049d, 0x0002, - 0x0031, 0x0470, 0x04b9, 0x0002, 0x0215, 0x0219, 0x0002, 0x0031, - 0x04d7, 0x04f1, 0x0001, 0x0031, 0x04e1, 0x0004, 0x022a, 0x0224, - // Entry 21940 - 2197F - 0x0221, 0x0227, 0x0001, 0x0031, 0x04f8, 0x0001, 0x0031, 0x050b, - 0x0001, 0x0031, 0x051a, 0x0001, 0x0007, 0x0277, 0x0004, 0x023b, - 0x0235, 0x0232, 0x0238, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x024c, 0x0246, 0x0243, 0x0249, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0040, 0x0290, 0x0000, 0x0000, 0x0295, 0x02ac, 0x02be, 0x02d0, - 0x02e7, 0x02f9, 0x030b, 0x0322, 0x0339, 0x0350, 0x036b, 0x0381, - // Entry 21980 - 219BF - 0x0000, 0x0000, 0x0000, 0x0397, 0x03b0, 0x03c9, 0x0000, 0x0000, - 0x0000, 0x03e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03e7, - 0x03fb, 0x040f, 0x0423, 0x0437, 0x044b, 0x045f, 0x0473, 0x0487, - 0x049b, 0x04af, 0x04c3, 0x04d7, 0x04eb, 0x04ff, 0x0513, 0x0527, - 0x053b, 0x054f, 0x0563, 0x0577, 0x0000, 0x058b, 0x0000, 0x0590, - 0x05a6, 0x05b8, 0x05ca, 0x05e0, 0x05f2, 0x0604, 0x061a, 0x062c, - 0x063e, 0x0001, 0x0292, 0x0001, 0x0031, 0x0528, 0x0003, 0x0299, - 0x029c, 0x02a1, 0x0001, 0x0031, 0x0541, 0x0003, 0x0031, 0x054a, - // Entry 219C0 - 219FF - 0x0560, 0x0570, 0x0002, 0x02a4, 0x02a8, 0x0002, 0x0031, 0x0586, - 0x0586, 0x0002, 0x0031, 0x0597, 0x0597, 0x0003, 0x02b0, 0x0000, - 0x02b3, 0x0001, 0x0031, 0x05ad, 0x0002, 0x02b6, 0x02ba, 0x0002, - 0x0031, 0x0586, 0x0586, 0x0002, 0x0031, 0x05b0, 0x05b0, 0x0003, - 0x02c2, 0x0000, 0x02c5, 0x0001, 0x0031, 0x05ad, 0x0002, 0x02c8, - 0x02cc, 0x0002, 0x0031, 0x05c0, 0x05c0, 0x0002, 0x0031, 0x05c8, - 0x05c8, 0x0003, 0x02d4, 0x02d7, 0x02dc, 0x0001, 0x0031, 0x05d0, - 0x0003, 0x0031, 0x05e1, 0x05ff, 0x0617, 0x0002, 0x02df, 0x02e3, - // Entry 21A00 - 21A3F - 0x0002, 0x0031, 0x0635, 0x0635, 0x0002, 0x0031, 0x064e, 0x064e, - 0x0003, 0x02eb, 0x0000, 0x02ee, 0x0001, 0x0031, 0x066c, 0x0002, - 0x02f1, 0x02f5, 0x0002, 0x0031, 0x0675, 0x0675, 0x0002, 0x0031, - 0x0687, 0x0687, 0x0003, 0x02fd, 0x0000, 0x0300, 0x0001, 0x0031, - 0x066c, 0x0002, 0x0303, 0x0307, 0x0002, 0x0031, 0x069d, 0x069d, - 0x0002, 0x0031, 0x06ab, 0x06ab, 0x0003, 0x030f, 0x0312, 0x0317, - 0x0001, 0x0031, 0x06b9, 0x0003, 0x0031, 0x06c2, 0x06d8, 0x06e8, - 0x0002, 0x031a, 0x031e, 0x0002, 0x0031, 0x06fe, 0x06fe, 0x0002, - // Entry 21A40 - 21A7F - 0x0031, 0x070d, 0x070d, 0x0003, 0x0326, 0x0329, 0x032e, 0x0001, - 0x0031, 0x0723, 0x0003, 0x0031, 0x072a, 0x06d8, 0x06e8, 0x0002, - 0x0331, 0x0335, 0x0002, 0x0031, 0x06fe, 0x06fe, 0x0002, 0x0031, - 0x070d, 0x070d, 0x0003, 0x033d, 0x0340, 0x0345, 0x0001, 0x0031, - 0x0723, 0x0003, 0x0031, 0x072a, 0x06d8, 0x06e8, 0x0002, 0x0348, - 0x034c, 0x0002, 0x0031, 0x0740, 0x0740, 0x0002, 0x0031, 0x0748, - 0x0748, 0x0004, 0x0355, 0x0358, 0x035d, 0x0368, 0x0001, 0x0031, - 0x02e8, 0x0003, 0x0031, 0x0750, 0x0768, 0x077a, 0x0002, 0x0360, - // Entry 21A80 - 21ABF - 0x0364, 0x0002, 0x0031, 0x0792, 0x0792, 0x0002, 0x0031, 0x07a5, - 0x07a5, 0x0001, 0x0031, 0x07bd, 0x0004, 0x0370, 0x0000, 0x0373, - 0x037e, 0x0001, 0x0031, 0x07d5, 0x0002, 0x0376, 0x037a, 0x0002, - 0x0031, 0x07dc, 0x07dc, 0x0002, 0x0031, 0x07ec, 0x07ec, 0x0001, - 0x0031, 0x0800, 0x0004, 0x0386, 0x0000, 0x0389, 0x0394, 0x0001, - 0x0031, 0x07d5, 0x0002, 0x038c, 0x0390, 0x0002, 0x0031, 0x0815, - 0x0815, 0x0002, 0x0031, 0x07ec, 0x07ec, 0x0001, 0x0031, 0x0800, - 0x0003, 0x039b, 0x039e, 0x03a5, 0x0001, 0x0031, 0x0827, 0x0005, - // Entry 21AC0 - 21AFF - 0x0031, 0x084c, 0x0855, 0x0860, 0x082c, 0x0869, 0x0002, 0x03a8, - 0x03ac, 0x0002, 0x0031, 0x0889, 0x0889, 0x0002, 0x0031, 0x0896, - 0x0896, 0x0003, 0x03b4, 0x03b7, 0x03be, 0x0001, 0x0031, 0x0827, - 0x0005, 0x0031, 0x084c, 0x0855, 0x0860, 0x082c, 0x0869, 0x0002, - 0x03c1, 0x03c5, 0x0002, 0x0031, 0x0889, 0x0889, 0x0002, 0x0031, - 0x0896, 0x0896, 0x0003, 0x03cd, 0x03d0, 0x03d7, 0x0001, 0x0031, - 0x0827, 0x0005, 0x0031, 0x084c, 0x0855, 0x0860, 0x082c, 0x0869, - 0x0002, 0x03da, 0x03de, 0x0002, 0x0031, 0x0889, 0x0889, 0x0002, - // Entry 21B00 - 21B3F - 0x0031, 0x0896, 0x0896, 0x0001, 0x03e4, 0x0001, 0x0031, 0x08a8, - 0x0003, 0x0000, 0x03eb, 0x03f0, 0x0003, 0x0031, 0x08bc, 0x08d6, - 0x08ea, 0x0002, 0x03f3, 0x03f7, 0x0002, 0x0031, 0x0904, 0x0904, - 0x0002, 0x0031, 0x091e, 0x091e, 0x0003, 0x0000, 0x03ff, 0x0404, - 0x0003, 0x0031, 0x0938, 0x0948, 0x0956, 0x0002, 0x0407, 0x040b, - 0x0002, 0x0031, 0x0966, 0x0966, 0x0002, 0x0031, 0x097a, 0x097a, - 0x0003, 0x0000, 0x0413, 0x0418, 0x0003, 0x0031, 0x0938, 0x0948, - 0x0956, 0x0002, 0x041b, 0x041f, 0x0002, 0x0031, 0x098e, 0x098e, - // Entry 21B40 - 21B7F - 0x0002, 0x0031, 0x099a, 0x099a, 0x0003, 0x0000, 0x0427, 0x042c, - 0x0003, 0x0031, 0x09a6, 0x09c8, 0x09e4, 0x0002, 0x042f, 0x0433, - 0x0002, 0x0031, 0x0a06, 0x0a06, 0x0002, 0x0031, 0x0a28, 0x0a28, - 0x0003, 0x0000, 0x043b, 0x0440, 0x0003, 0x0031, 0x0a4a, 0x0a5a, - 0x0a68, 0x0002, 0x0443, 0x0447, 0x0002, 0x0031, 0x0a78, 0x0a78, - 0x0002, 0x0031, 0x0a8c, 0x0a8c, 0x0003, 0x0000, 0x044f, 0x0454, - 0x0003, 0x0031, 0x0a4a, 0x0a5a, 0x0a68, 0x0002, 0x0457, 0x045b, - 0x0002, 0x0031, 0x0aa0, 0x0aa0, 0x0002, 0x0031, 0x0aac, 0x0aac, - // Entry 21B80 - 21BBF - 0x0003, 0x0000, 0x0463, 0x0468, 0x0003, 0x0031, 0x0ab8, 0x0ad8, - 0x0af2, 0x0002, 0x046b, 0x046f, 0x0002, 0x0031, 0x0b12, 0x0b12, - 0x0002, 0x0031, 0x0b32, 0x0b32, 0x0003, 0x0000, 0x0477, 0x047c, - 0x0003, 0x0031, 0x0b52, 0x0b62, 0x0b70, 0x0002, 0x047f, 0x0483, - 0x0002, 0x0031, 0x0b80, 0x0b80, 0x0002, 0x0031, 0x0b94, 0x0b94, - 0x0003, 0x0000, 0x048b, 0x0490, 0x0003, 0x0031, 0x0b52, 0x0b62, - 0x0b70, 0x0002, 0x0493, 0x0497, 0x0002, 0x0031, 0x0ba8, 0x0ba8, - 0x0002, 0x0031, 0x0bb4, 0x0bb4, 0x0003, 0x0000, 0x049f, 0x04a4, - // Entry 21BC0 - 21BFF - 0x0003, 0x0031, 0x0bc0, 0x0be2, 0x0bfe, 0x0002, 0x04a7, 0x04ab, - 0x0002, 0x0031, 0x0c20, 0x0c20, 0x0002, 0x0031, 0x0c42, 0x0c42, - 0x0003, 0x0000, 0x04b3, 0x04b8, 0x0003, 0x0031, 0x0c64, 0x0c74, - 0x0c82, 0x0002, 0x04bb, 0x04bf, 0x0002, 0x0031, 0x0c92, 0x0c92, - 0x0002, 0x0031, 0x0ca6, 0x0ca6, 0x0003, 0x0000, 0x04c7, 0x04cc, - 0x0003, 0x0031, 0x0c64, 0x0c74, 0x0c82, 0x0002, 0x04cf, 0x04d3, - 0x0002, 0x0031, 0x0cba, 0x0cba, 0x0002, 0x0031, 0x0cc6, 0x0cc6, - 0x0003, 0x0000, 0x04db, 0x04e0, 0x0003, 0x0031, 0x0cd2, 0x0cf2, - // Entry 21C00 - 21C3F - 0x0d0c, 0x0002, 0x04e3, 0x04e7, 0x0002, 0x0031, 0x0d2c, 0x0d2c, - 0x0002, 0x0031, 0x0d4c, 0x0d4c, 0x0003, 0x0000, 0x04ef, 0x04f4, - 0x0003, 0x0031, 0x0d6c, 0x0d7c, 0x0d8a, 0x0002, 0x04f7, 0x04fb, - 0x0002, 0x0031, 0x0d9a, 0x0d9a, 0x0002, 0x0031, 0x0dae, 0x0dae, - 0x0003, 0x0000, 0x0503, 0x0508, 0x0003, 0x0031, 0x0d6c, 0x0d7c, - 0x0d8a, 0x0002, 0x050b, 0x050f, 0x0002, 0x0031, 0x0dc2, 0x0dc2, - 0x0002, 0x0031, 0x0dce, 0x0dce, 0x0003, 0x0000, 0x0517, 0x051c, - 0x0003, 0x0031, 0x0dda, 0x0df4, 0x0e08, 0x0002, 0x051f, 0x0523, - // Entry 21C40 - 21C7F - 0x0002, 0x0031, 0x0e22, 0x0e22, 0x0002, 0x0031, 0x0e3c, 0x0e3c, - 0x0003, 0x0000, 0x052b, 0x0530, 0x0003, 0x0031, 0x0e56, 0x0e68, - 0x0e78, 0x0002, 0x0533, 0x0537, 0x0002, 0x0031, 0x0e8a, 0x0e8a, - 0x0002, 0x0031, 0x0ea0, 0x0ea0, 0x0003, 0x0000, 0x053f, 0x0544, - 0x0003, 0x0031, 0x0e56, 0x0e68, 0x0e78, 0x0002, 0x0547, 0x054b, - 0x0002, 0x0031, 0x0e8a, 0x0e8a, 0x0002, 0x0031, 0x0ea0, 0x0ea0, - 0x0003, 0x0000, 0x0553, 0x0558, 0x0003, 0x0031, 0x0eb6, 0x0ed5, - 0x0eee, 0x0002, 0x055b, 0x055f, 0x0002, 0x0031, 0x0f0d, 0x0f0d, - // Entry 21C80 - 21CBF - 0x0002, 0x0031, 0x0f2a, 0x0f2a, 0x0003, 0x0000, 0x0567, 0x056c, - 0x0003, 0x0031, 0x0f47, 0x0f57, 0x0f65, 0x0002, 0x056f, 0x0573, - 0x0002, 0x0031, 0x0f75, 0x0f75, 0x0002, 0x0031, 0x0f89, 0x0f89, - 0x0003, 0x0000, 0x057b, 0x0580, 0x0003, 0x0031, 0x0f47, 0x0f57, - 0x0f65, 0x0002, 0x0583, 0x0587, 0x0002, 0x0031, 0x0f9d, 0x0f9d, - 0x0002, 0x0031, 0x0fa7, 0x0fa7, 0x0001, 0x058d, 0x0001, 0x0031, - 0x0fb1, 0x0003, 0x0594, 0x0597, 0x059b, 0x0001, 0x0031, 0x0fbb, - 0x0002, 0x0031, 0xffff, 0x0fc2, 0x0002, 0x059e, 0x05a2, 0x0002, - // Entry 21CC0 - 21CFF - 0x0031, 0x0fd4, 0x0fd4, 0x0002, 0x0031, 0x0fe3, 0x0fe3, 0x0003, - 0x05aa, 0x0000, 0x05ad, 0x0001, 0x0031, 0x0ff7, 0x0002, 0x05b0, - 0x05b4, 0x0002, 0x0031, 0x0ffa, 0x0ffa, 0x0002, 0x0031, 0x1006, - 0x1006, 0x0003, 0x05bc, 0x0000, 0x05bf, 0x0001, 0x0031, 0x0ff7, - 0x0002, 0x05c2, 0x05c6, 0x0002, 0x0031, 0x0ffa, 0x0ffa, 0x0002, - 0x0031, 0x1006, 0x1006, 0x0003, 0x05ce, 0x05d1, 0x05d5, 0x0001, - 0x0031, 0x1016, 0x0002, 0x0031, 0xffff, 0x101f, 0x0002, 0x05d8, - 0x05dc, 0x0002, 0x0031, 0x1033, 0x1033, 0x0002, 0x0031, 0x1044, - // Entry 21D00 - 21D3F - 0x1044, 0x0003, 0x05e4, 0x0000, 0x05e7, 0x0001, 0x0031, 0x105a, - 0x0002, 0x05ea, 0x05ee, 0x0002, 0x0031, 0x105d, 0x105d, 0x0002, - 0x0031, 0x1069, 0x1069, 0x0003, 0x05f6, 0x0000, 0x05f9, 0x0001, - 0x0031, 0x105a, 0x0002, 0x05fc, 0x0600, 0x0002, 0x0031, 0x105d, - 0x105d, 0x0002, 0x0031, 0x1069, 0x1069, 0x0003, 0x0608, 0x060b, - 0x060f, 0x0001, 0x0031, 0x1079, 0x0002, 0x0031, 0xffff, 0x108a, - 0x0002, 0x0612, 0x0616, 0x0002, 0x0031, 0x1093, 0x1093, 0x0002, - 0x0031, 0x10ac, 0x10ac, 0x0003, 0x061e, 0x0000, 0x0621, 0x0001, - // Entry 21D40 - 21D7F - 0x0031, 0x10ca, 0x0002, 0x0624, 0x0628, 0x0002, 0x0031, 0x10cd, - 0x10cd, 0x0002, 0x0031, 0x10dd, 0x10dd, 0x0003, 0x0630, 0x0000, - 0x0633, 0x0001, 0x0031, 0x10ca, 0x0002, 0x0636, 0x063a, 0x0002, - 0x0031, 0x10f1, 0x10f1, 0x0002, 0x0031, 0x10fd, 0x10fd, 0x0001, - 0x0640, 0x0001, 0x0031, 0x110d, 0x0004, 0x0648, 0x064d, 0x0652, - 0x0661, 0x0003, 0x0000, 0x1dc7, 0x2593, 0x25c9, 0x0003, 0x0000, - 0x1de0, 0x25cd, 0x23d0, 0x0002, 0x0000, 0x0655, 0x0003, 0x0000, - 0x065c, 0x0659, 0x0001, 0x0031, 0x1125, 0x0003, 0x0031, 0xffff, - // Entry 21D80 - 21DBF - 0x1168, 0x119d, 0x0002, 0x0000, 0x0664, 0x0003, 0x06fe, 0x0794, - 0x0668, 0x0094, 0x0031, 0x11d2, 0x11f6, 0x122d, 0x125e, 0x12c2, - 0x1368, 0x13f0, 0x148f, 0x1556, 0x1607, 0x16ab, 0xffff, 0x1749, - 0x17d4, 0x187e, 0x1923, 0x19d5, 0x1a5d, 0x1b00, 0x1bea, 0x1cdf, - 0x1da6, 0x1e58, 0x1eed, 0x1f91, 0x1ffb, 0x2019, 0x205f, 0x20c9, - 0x210e, 0x217a, 0x21bf, 0x2245, 0x22bd, 0x2347, 0x23b1, 0x23e5, - 0x243c, 0x24d5, 0x2573, 0x25d1, 0x25ef, 0x2623, 0x2675, 0x26e1, - 0x2738, 0x27f9, 0x287d, 0x28ca, 0x2985, 0x2a2f, 0x2a85, 0x2aba, - // Entry 21DC0 - 21DFF - 0x2b0d, 0x2b46, 0x2b93, 0x2bf5, 0x2c26, 0x2c7f, 0x2d4c, 0x2de0, - 0x2e16, 0x2e67, 0x2f0b, 0x2f87, 0x2fdd, 0x3012, 0x3045, 0x306d, - 0x30aa, 0x30e1, 0x3132, 0x31aa, 0x3230, 0x32b4, 0xffff, 0x331a, - 0x334f, 0x33a2, 0x3400, 0x3448, 0x34ba, 0x34dc, 0x3528, 0x3590, - 0x35dd, 0x363f, 0x3663, 0x3687, 0x36ba, 0x3711, 0x377b, 0x37dc, - 0x38c3, 0x3992, 0x3a22, 0x3a84, 0x3aa4, 0x3ac4, 0x3b0d, 0x3bb4, - 0x3c5a, 0x3cd8, 0x3cf6, 0x3d59, 0x3e17, 0x3ea3, 0x3f1b, 0x3f81, - 0x3fa1, 0x3ff7, 0x4079, 0x40f9, 0x4167, 0x41c7, 0x424f, 0x426f, - // Entry 21E00 - 21E3F - 0x4296, 0x42b6, 0x42da, 0x431a, 0xffff, 0x439a, 0x43f8, 0x442b, - 0x444f, 0x4480, 0x44b3, 0x44d5, 0x44f3, 0x452d, 0x458b, 0x45af, - 0x45f1, 0x464f, 0x4695, 0x470b, 0x4753, 0x47e3, 0x4877, 0x48e5, - 0x4935, 0x49cb, 0x4a35, 0x4a53, 0x4a78, 0x4ace, 0x4b60, 0x0094, - 0x0031, 0xffff, 0xffff, 0xffff, 0xffff, 0x1291, 0x1346, 0x13ce, - 0x1456, 0x1523, 0x15de, 0x167b, 0xffff, 0x172d, 0x17a3, 0x1858, - 0x18ec, 0x19b3, 0x1a3b, 0x1ac3, 0x1b9c, 0x1ca8, 0x1d6f, 0x1e36, - 0x1ebe, 0x1f6d, 0xffff, 0xffff, 0x203b, 0xffff, 0x20e9, 0xffff, - // Entry 21E40 - 21E7F - 0x219a, 0x222b, 0x229b, 0x2323, 0xffff, 0xffff, 0x2416, 0x24aa, - 0x2555, 0xffff, 0xffff, 0xffff, 0x2650, 0xffff, 0x2701, 0x27c8, - 0xffff, 0x2899, 0x294e, 0x2a15, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2b73, 0xffff, 0xffff, 0x2c46, 0x2d13, 0xffff, 0xffff, 0x2e36, - 0x2eeb, 0x2f6d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3118, 0x3188, 0x3210, 0x3292, 0xffff, 0xffff, 0xffff, 0x3384, - 0xffff, 0x3420, 0xffff, 0xffff, 0x3505, 0xffff, 0x35bd, 0xffff, - 0xffff, 0xffff, 0xffff, 0x36ed, 0xffff, 0x379b, 0x3880, 0x396b, - // Entry 21E80 - 21EBF - 0x3a02, 0xffff, 0xffff, 0xffff, 0x3ae0, 0x3b89, 0x3c2c, 0xffff, - 0xffff, 0x3d1f, 0x3def, 0x3e89, 0x3ef9, 0xffff, 0xffff, 0x3fd5, - 0x405d, 0x40d3, 0xffff, 0x4194, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x42fa, 0xffff, 0x437c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x450f, 0xffff, 0xffff, 0x45d3, 0xffff, - 0x466b, 0xffff, 0x472f, 0x47bd, 0x4851, 0xffff, 0x490d, 0x49a7, - 0xffff, 0xffff, 0xffff, 0x4aac, 0x4b34, 0x0094, 0x0031, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1304, 0x139b, 0x1423, 0x14d9, 0x159a, - // Entry 21EC0 - 21EFF - 0x1641, 0x16ec, 0xffff, 0x1776, 0x1816, 0x18b5, 0x196b, 0x1a08, - 0x1a90, 0x1b4e, 0x1c49, 0x1d27, 0x1dee, 0x1e8b, 0x1f2d, 0x1fc6, - 0xffff, 0xffff, 0x2094, 0xffff, 0x2144, 0xffff, 0x21f5, 0x2270, - 0x22f0, 0x237c, 0xffff, 0xffff, 0x2473, 0x2511, 0x25a2, 0xffff, - 0xffff, 0xffff, 0x26ab, 0xffff, 0x2780, 0x283b, 0xffff, 0x290c, - 0x29cd, 0x2a5a, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bc4, 0xffff, - 0xffff, 0x2cc9, 0x2d96, 0xffff, 0xffff, 0x2ea9, 0x2f3c, 0x2fb2, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x315d, 0x31dd, - // Entry 21F00 - 21F3F - 0x3261, 0x32e7, 0xffff, 0xffff, 0xffff, 0x33d1, 0xffff, 0x3481, - 0xffff, 0xffff, 0x355c, 0xffff, 0x360e, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3746, 0xffff, 0x382e, 0x3917, 0x39ca, 0x3a53, 0xffff, - 0xffff, 0xffff, 0x3b4b, 0x3bf0, 0x3c99, 0xffff, 0xffff, 0x3da4, - 0x3e50, 0x3ece, 0x3f4e, 0xffff, 0xffff, 0x402a, 0x40a6, 0x4130, - 0xffff, 0x420b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x434b, - 0xffff, 0x43c9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x455c, 0xffff, 0xffff, 0x4620, 0xffff, 0x46d0, 0xffff, - // Entry 21F40 - 21F7F - 0x4788, 0x481a, 0x48ae, 0xffff, 0x496e, 0x4a00, 0xffff, 0xffff, - 0xffff, 0x4b01, 0x4b9d, 0x0003, 0x0004, 0x07cc, 0x0b4e, 0x0012, - 0x0017, 0x0038, 0x0144, 0x01b1, 0x01f5, 0x0000, 0x0262, 0x028d, - 0x04ab, 0x0523, 0x0595, 0x0000, 0x0000, 0x0000, 0x0000, 0x061b, - 0x0738, 0x07aa, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, - 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, - 0x0000, 0x0000, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, - 0x0010, 0x0003, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - // Entry 21F80 - 21FBF - 0x0001, 0x0000, 0x236f, 0x000a, 0x0043, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0133, 0x0000, 0x0000, 0x0000, 0x00a8, 0x0002, 0x0046, - 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - // Entry 21FC0 - 21FFF - 0x2220, 0x2398, 0x0003, 0x007b, 0x008a, 0x0099, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x0006, 0x00af, 0x0000, 0x0000, 0x00c2, - 0x00dd, 0x0120, 0x0001, 0x00b1, 0x0001, 0x00b3, 0x000d, 0x0000, - // Entry 22000 - 2203F - 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, 0x25d6, - 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x00c4, 0x0001, - 0x00c6, 0x0015, 0x0032, 0xffff, 0x0000, 0x0011, 0x001b, 0x002b, - 0xffff, 0x003f, 0x004d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x005f, 0x0071, 0x007d, 0x0087, 0x009c, 0x00a9, 0x00ba, 0x00cd, - 0x0001, 0x00df, 0x0001, 0x00e1, 0x003d, 0x0000, 0xffff, 0x01bd, - 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, - 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, - // Entry 22040 - 2207F - 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, - 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, - 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, - 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, - 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, - 0x0381, 0x0389, 0x0390, 0x0001, 0x0122, 0x0001, 0x0124, 0x000d, - 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x006f, - 0x25d6, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0004, 0x0141, - // Entry 22080 - 220BF - 0x013b, 0x0138, 0x013e, 0x0001, 0x0032, 0x00df, 0x0001, 0x0032, - 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, 0x0032, 0x0100, 0x0001, - 0x0146, 0x0002, 0x0149, 0x017d, 0x0003, 0x014d, 0x015d, 0x016d, - 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, - 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, - 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, - // Entry 220C0 - 220FF - 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, - 0x0003, 0x0181, 0x0191, 0x01a1, 0x000e, 0x0000, 0xffff, 0x03ce, - 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, - 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0000, 0xffff, 0x03ce, - 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, - 0x040b, 0x0411, 0x0416, 0x041c, 0x000a, 0x0000, 0x0000, 0x0000, - // Entry 22100 - 2213F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01bc, 0x0004, - 0x0000, 0x0000, 0x0000, 0x01c1, 0x0001, 0x01c3, 0x0003, 0x01c7, - 0x0000, 0x01de, 0x0015, 0x0032, 0xffff, 0x0000, 0x0011, 0x001b, - 0x002b, 0xffff, 0x003f, 0x004d, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x005f, 0x0071, 0x0106, 0x0087, 0x009c, 0x00a9, 0xffff, - 0x00cd, 0x0015, 0x0032, 0xffff, 0x0000, 0x0011, 0x001b, 0x002b, - 0xffff, 0x003f, 0x004d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x005f, 0x0071, 0x0106, 0x0087, 0x009c, 0x00a9, 0xffff, 0x00cd, - // Entry 22140 - 2217F - 0x0001, 0x01f7, 0x0002, 0x01fa, 0x022e, 0x0003, 0x01fe, 0x020e, - 0x021e, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, - 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, - 0x0481, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - 0x0422, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, - 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, - 0x0481, 0x0003, 0x0232, 0x0242, 0x0252, 0x000e, 0x0000, 0xffff, - // Entry 22180 - 221BF - 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, - 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0000, 0xffff, - 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, - 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x026b, 0x0000, 0x027c, 0x0004, 0x0279, - 0x0273, 0x0270, 0x0276, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, - // Entry 221C0 - 221FF - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x001c, 0x14e1, 0x0004, - 0x028a, 0x0284, 0x0281, 0x0287, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0296, 0x02fb, 0x0352, 0x0387, 0x0458, 0x0478, 0x0489, - 0x049a, 0x0002, 0x0299, 0x02ca, 0x0003, 0x029d, 0x02ac, 0x02bb, - 0x000d, 0x0005, 0xffff, 0x0636, 0x2242, 0x221a, 0x2246, 0x224a, - 0x224e, 0x210e, 0x2252, 0x2256, 0x2236, 0x21de, 0x21e2, 0x000d, - 0x0000, 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, 0x2483, - // Entry 22200 - 2223F - 0x2483, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0005, - 0xffff, 0x0666, 0x066e, 0x225a, 0x2260, 0x224a, 0x2266, 0x226b, - 0x2270, 0x2278, 0x2282, 0x228a, 0x2293, 0x0003, 0x02ce, 0x02dd, - 0x02ec, 0x000d, 0x0005, 0xffff, 0x0636, 0x2242, 0x221a, 0x2246, - 0x224a, 0x224e, 0x210e, 0x2252, 0x2256, 0x2236, 0x21de, 0x21e2, - 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x247f, 0x2382, 0x247f, - 0x2483, 0x2483, 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, - 0x0005, 0xffff, 0x0666, 0x066e, 0x225a, 0x2260, 0x224a, 0x2266, - // Entry 22240 - 2227F - 0x226b, 0x2270, 0x2278, 0x2282, 0x228a, 0x2293, 0x0002, 0x02fe, - 0x0328, 0x0005, 0x0304, 0x030d, 0x031f, 0x0000, 0x0316, 0x0007, - 0x0032, 0x0112, 0x0116, 0x011a, 0x011e, 0x0122, 0x0126, 0x012a, - 0x0007, 0x0000, 0x247f, 0x2481, 0x2481, 0x223e, 0x25bc, 0x2483, - 0x2481, 0x0007, 0x0032, 0x0112, 0x0116, 0x011a, 0x011e, 0x0122, - 0x0126, 0x012a, 0x0007, 0x0032, 0x012e, 0x0135, 0x013b, 0x0142, - 0x0147, 0x014d, 0x0153, 0x0005, 0x032e, 0x0337, 0x0349, 0x0000, - 0x0340, 0x0007, 0x0032, 0x0112, 0x0116, 0x011a, 0x011e, 0x0122, - // Entry 22280 - 222BF - 0x0126, 0x012a, 0x0007, 0x0000, 0x247f, 0x2481, 0x2481, 0x223e, - 0x25bc, 0x2483, 0x2481, 0x0007, 0x0032, 0x0112, 0x0116, 0x011a, - 0x011e, 0x0122, 0x0126, 0x012a, 0x0007, 0x0032, 0x012e, 0x0135, - 0x013b, 0x0142, 0x0147, 0x014d, 0x0153, 0x0002, 0x0355, 0x036e, - 0x0003, 0x0359, 0x0360, 0x0367, 0x0005, 0x0000, 0xffff, 0x1f17, - 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0032, 0xffff, 0x0159, 0x0166, 0x0173, - 0x0180, 0x0003, 0x0372, 0x0379, 0x0380, 0x0005, 0x0000, 0xffff, - // Entry 222C0 - 222FF - 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0032, 0xffff, 0x0159, 0x0166, - 0x0173, 0x0180, 0x0002, 0x038a, 0x03f1, 0x0003, 0x038e, 0x03af, - 0x03d0, 0x0008, 0x039a, 0x03a0, 0x0397, 0x03a3, 0x03a6, 0x03a9, - 0x03ac, 0x039d, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0032, - 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, 0x0001, - 0x0032, 0x01b6, 0x0008, 0x03bb, 0x03c1, 0x03b8, 0x03c4, 0x03c7, - // Entry 22300 - 2233F - 0x03ca, 0x03cd, 0x03be, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x0032, 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, - 0x0001, 0x0032, 0x01b6, 0x0008, 0x03dc, 0x03e2, 0x03d9, 0x03e5, - 0x03e8, 0x03eb, 0x03ee, 0x03df, 0x0001, 0x0032, 0x018d, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, - 0x01b1, 0x0001, 0x0032, 0x01b6, 0x0003, 0x03f5, 0x0416, 0x0437, - // Entry 22340 - 2237F - 0x0008, 0x0401, 0x0407, 0x03fe, 0x040a, 0x040d, 0x0410, 0x0413, - 0x0404, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0032, 0x01a6, - 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, 0x0001, 0x0032, - 0x01b6, 0x0008, 0x0422, 0x0428, 0x041f, 0x042b, 0x042e, 0x0431, - 0x0434, 0x0425, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0032, - 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, 0x0001, - // Entry 22380 - 223BF - 0x0032, 0x01b6, 0x0008, 0x0443, 0x0449, 0x0440, 0x044c, 0x044f, - 0x0452, 0x0455, 0x0446, 0x0001, 0x0032, 0x018d, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0032, 0x019a, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x0032, 0x01a6, 0x0001, 0x0032, 0x01ab, 0x0001, 0x0032, 0x01b1, - 0x0001, 0x0032, 0x01b6, 0x0003, 0x0467, 0x0472, 0x045c, 0x0002, - 0x045f, 0x0463, 0x0002, 0x0032, 0x01bc, 0x01dc, 0x0002, 0x0032, - 0x01cb, 0x01e3, 0x0002, 0x046a, 0x046e, 0x0002, 0x0032, 0x01ec, - 0x01f3, 0x0002, 0x0032, 0x01ef, 0x01f5, 0x0001, 0x0474, 0x0002, - // Entry 223C0 - 223FF - 0x0032, 0x01ec, 0x01f3, 0x0004, 0x0486, 0x0480, 0x047d, 0x0483, - 0x0001, 0x0001, 0x001d, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0014, 0x146e, 0x0004, 0x0497, 0x0491, 0x048e, - 0x0494, 0x0001, 0x0015, 0x0210, 0x0001, 0x0015, 0x021e, 0x0001, - 0x0015, 0x0229, 0x0001, 0x0015, 0x0232, 0x0004, 0x04a8, 0x04a2, - 0x049f, 0x04a5, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x04b1, - 0x0000, 0x0000, 0x0000, 0x051c, 0x0002, 0x04b4, 0x04e8, 0x0003, - // Entry 22400 - 2243F - 0x04b8, 0x04c8, 0x04d8, 0x000e, 0x0000, 0x25f2, 0x054c, 0x0553, - 0x25d9, 0x25e0, 0x0568, 0x25e6, 0x25ed, 0x25fa, 0x2600, 0x2605, - 0x260b, 0x2611, 0x2614, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x2220, 0x2398, 0x0422, 0x000e, 0x0000, 0x25f2, 0x054c, 0x0553, - 0x25d9, 0x25e0, 0x0568, 0x25e6, 0x25ed, 0x25fa, 0x2600, 0x2605, - 0x260b, 0x2611, 0x2614, 0x0003, 0x04ec, 0x04fc, 0x050c, 0x000e, - 0x0000, 0x25f2, 0x054c, 0x0553, 0x25d9, 0x25e0, 0x0568, 0x25e6, - // Entry 22440 - 2247F - 0x25ed, 0x25fa, 0x2600, 0x2605, 0x260b, 0x2611, 0x2614, 0x000e, - 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, - 0x0000, 0x25f2, 0x054c, 0x0553, 0x25d9, 0x25e0, 0x0568, 0x25e6, - 0x25ed, 0x25fa, 0x2600, 0x2605, 0x260b, 0x2611, 0x2614, 0x0001, - 0x051e, 0x0001, 0x0520, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0529, - 0x0000, 0x0000, 0x0000, 0x058e, 0x0002, 0x052c, 0x055d, 0x0003, - 0x0530, 0x053f, 0x054e, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, - // Entry 22480 - 224BF - 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, - 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, - 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, - 0x0003, 0x0561, 0x0570, 0x057f, 0x000d, 0x0000, 0xffff, 0x05a2, - 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, - 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - // Entry 224C0 - 224FF - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x2220, 0x2398, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, - 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, - 0x05f8, 0x0001, 0x0590, 0x0001, 0x0592, 0x0001, 0x0025, 0x05c0, - 0x0008, 0x059e, 0x0000, 0x0000, 0x0000, 0x0603, 0x060a, 0x0000, - 0x9006, 0x0002, 0x05a1, 0x05d2, 0x0003, 0x05a5, 0x05b4, 0x05c3, - 0x000d, 0x0000, 0xffff, 0x0606, 0x2619, 0x2563, 0x256a, 0x061f, - 0x0626, 0x2572, 0x0633, 0x261e, 0x2623, 0x0643, 0x064d, 0x000d, - // Entry 22500 - 2253F - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, - 0xffff, 0x0657, 0x2629, 0x0666, 0x066f, 0x0679, 0x0682, 0x2582, - 0x262f, 0x2639, 0x2642, 0x06ab, 0x06ba, 0x0003, 0x05d6, 0x05e5, - 0x05f4, 0x000d, 0x0000, 0xffff, 0x0606, 0x2619, 0x2563, 0x256a, - 0x061f, 0x0626, 0x2572, 0x0633, 0x261e, 0x2623, 0x0643, 0x064d, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - // Entry 22540 - 2257F - 0x0000, 0xffff, 0x0657, 0x2629, 0x0666, 0x066f, 0x0679, 0x0682, - 0x2582, 0x262f, 0x2639, 0x2642, 0x06ab, 0x06ba, 0x0001, 0x0605, - 0x0001, 0x0607, 0x0001, 0x0000, 0x06c8, 0x0004, 0x0618, 0x0612, - 0x060f, 0x0615, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0624, 0x0716, 0x0000, 0x0727, 0x0001, - 0x0626, 0x0001, 0x0628, 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, - 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, 0x0775, 0x23dd, - // Entry 22580 - 225BF - 0x23f1, 0x240a, 0x2424, 0x243c, 0x20d7, 0x081e, 0x20ed, 0x0843, - 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, 0x2649, 0x265b, - 0x08ed, 0x266e, 0x0914, 0x2681, 0x093a, 0x094e, 0x095f, 0x2695, - 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x26a9, - 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x26ba, 0x0a7b, 0x0a8c, 0x0aa2, - 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, - 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, - 0x0c0b, 0x26ca, 0x0c37, 0x0c4c, 0x26dd, 0x0c74, 0x26f0, 0x0c9f, - // Entry 225C0 - 225FF - 0x0cb3, 0x0cc8, 0x0cdd, 0x210f, 0x0d07, 0x2707, 0x271a, 0x0d47, - 0x0d5b, 0x0d6f, 0x0d85, 0x272d, 0x0db0, 0x0dc3, 0x2740, 0x0def, - 0x0e04, 0x0e19, 0x2755, 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, - 0x2769, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x277c, - 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x2793, 0x27a6, 0x0fe6, - 0x0ffd, 0x27bc, 0x1028, 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, - 0x27d3, 0x10b8, 0x10cf, 0x10e3, 0x2122, 0x1110, 0x1124, 0x1139, - 0x114d, 0x1163, 0x1178, 0x118d, 0x27e9, 0x11ba, 0x27fc, 0x11e7, - // Entry 22600 - 2263F - 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, 0x1276, 0x280f, - 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x2823, 0x1308, 0x2839, 0x1335, - 0x134b, 0x2454, 0x1374, 0x1388, 0x139e, 0x13b4, 0xffff, 0x13e0, - 0x13f4, 0x140b, 0xffff, 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, - 0x149c, 0x14b3, 0x14c8, 0x284e, 0xffff, 0x150b, 0x1522, 0x1538, - 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, - 0x15f8, 0x160d, 0x1621, 0x2861, 0x164d, 0x1661, 0x1676, 0x168a, - 0x16a0, 0x16b6, 0x2876, 0x288a, 0x16f7, 0x170c, 0x289d, 0x28b2, - // Entry 22640 - 2267F - 0x174a, 0x175e, 0x1773, 0x28c9, 0x179b, 0x17b1, 0x17c7, 0x17db, - 0x17f2, 0x1808, 0x181d, 0x1832, 0x28dd, 0x2468, 0x1874, 0x28f0, - 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, - 0x1942, 0x2902, 0x196d, 0x1983, 0x1997, 0x2915, 0x291b, 0x2923, - 0x292a, 0x0004, 0x0724, 0x071e, 0x071b, 0x0721, 0x0001, 0x0010, - 0x0003, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0000, 0x236f, 0x0004, 0x0735, 0x072f, 0x072c, 0x0732, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 22680 - 226BF - 0x0001, 0x0000, 0x03c6, 0x0005, 0x073e, 0x0000, 0x0000, 0x0000, - 0x07a3, 0x0002, 0x0741, 0x0772, 0x0003, 0x0745, 0x0754, 0x0763, - 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, - 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0000, - 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, - 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0003, 0x0776, 0x0785, - // Entry 226C0 - 226FF - 0x0794, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, - 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, - 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0001, 0x07a5, - 0x0001, 0x07a7, 0x0001, 0x0000, 0x1a1d, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x07b3, 0x07bb, 0x0000, 0x9006, 0x0001, 0x07b5, - // Entry 22700 - 2273F - 0x0001, 0x07b7, 0x0002, 0x0032, 0x01f8, 0x0207, 0x0004, 0x07c9, - 0x07c3, 0x07c0, 0x07c6, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0040, - 0x080d, 0x0000, 0x0000, 0x0812, 0x0827, 0x0837, 0x0847, 0x085c, - 0x086c, 0x087c, 0x0891, 0x08a1, 0x08b1, 0x08ca, 0x08de, 0x0000, - 0x0000, 0x0000, 0x08f2, 0x0909, 0x0919, 0x0000, 0x0000, 0x0000, - 0x0929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x092e, 0x0940, - 0x0952, 0x0964, 0x0976, 0x0988, 0x099a, 0x09ac, 0x09be, 0x09d0, - // Entry 22740 - 2277F - 0x09e2, 0x09f4, 0x0a06, 0x0a18, 0x0a2a, 0x0a3c, 0x0a4e, 0x0a60, - 0x0a72, 0x0a84, 0x0a96, 0x0000, 0x0aa8, 0x0000, 0x0aad, 0x0ac1, - 0x0ad1, 0x0ae1, 0x0af5, 0x0b05, 0x0b15, 0x0b29, 0x0b39, 0x0b49, - 0x0001, 0x080f, 0x0001, 0x0000, 0x1a35, 0x0003, 0x0816, 0x0819, - 0x081e, 0x0001, 0x0032, 0x020e, 0x0003, 0x0032, 0x0214, 0x021f, - 0x0229, 0x0002, 0x0821, 0x0824, 0x0001, 0x0032, 0x0235, 0x0001, - 0x0032, 0x0245, 0x0003, 0x082b, 0x0000, 0x082e, 0x0001, 0x0032, - 0x0259, 0x0002, 0x0831, 0x0834, 0x0001, 0x0032, 0x025e, 0x0001, - // Entry 22780 - 227BF - 0x0032, 0x026a, 0x0003, 0x083b, 0x0000, 0x083e, 0x0001, 0x0032, - 0x0259, 0x0002, 0x0841, 0x0844, 0x0001, 0x0032, 0x0277, 0x0001, - 0x0032, 0x0280, 0x0003, 0x084b, 0x084e, 0x0853, 0x0001, 0x0032, - 0x0289, 0x0003, 0x0032, 0x0291, 0x029e, 0x02aa, 0x0002, 0x0856, - 0x0859, 0x0001, 0x0032, 0x02bd, 0x0001, 0x0032, 0x02cf, 0x0003, - 0x0860, 0x0000, 0x0863, 0x0001, 0x0032, 0x02e5, 0x0002, 0x0866, - 0x0869, 0x0001, 0x0032, 0x02eb, 0x0001, 0x0032, 0x02f9, 0x0003, - 0x0870, 0x0000, 0x0873, 0x0001, 0x0032, 0x02e5, 0x0002, 0x0876, - // Entry 227C0 - 227FF - 0x0879, 0x0001, 0x0032, 0x0308, 0x0001, 0x0032, 0x0313, 0x0003, - 0x0880, 0x0883, 0x0888, 0x0001, 0x0032, 0x031e, 0x0003, 0x0032, - 0x0324, 0x032f, 0x0339, 0x0002, 0x088b, 0x088e, 0x0001, 0x0032, - 0x034a, 0x0001, 0x0032, 0x035a, 0x0003, 0x0895, 0x0000, 0x0898, - 0x0001, 0x0032, 0x036e, 0x0002, 0x089b, 0x089e, 0x0001, 0x0032, - 0x0373, 0x0001, 0x0032, 0x037f, 0x0003, 0x08a5, 0x0000, 0x08a8, - 0x0001, 0x0032, 0x036e, 0x0002, 0x08ab, 0x08ae, 0x0001, 0x0032, - 0x038c, 0x0001, 0x0032, 0x0396, 0x0004, 0x08b6, 0x08b9, 0x08be, - // Entry 22800 - 2283F - 0x08c7, 0x0001, 0x0032, 0x012e, 0x0003, 0x0032, 0x03a0, 0x03ac, - 0x03b7, 0x0002, 0x08c1, 0x08c4, 0x0001, 0x0032, 0x03c4, 0x0001, - 0x0032, 0x03d5, 0x0001, 0x0032, 0x03ea, 0x0004, 0x08cf, 0x0000, - 0x08d2, 0x08db, 0x0001, 0x0032, 0x03f8, 0x0002, 0x08d5, 0x08d8, - 0x0001, 0x0032, 0x03fd, 0x0001, 0x0032, 0x0409, 0x0001, 0x0032, - 0x0416, 0x0004, 0x08e3, 0x0000, 0x08e6, 0x08ef, 0x0001, 0x0032, - 0x03f8, 0x0002, 0x08e9, 0x08ec, 0x0001, 0x0032, 0x0421, 0x0001, - 0x0032, 0x042b, 0x0001, 0x0032, 0x0435, 0x0003, 0x08f6, 0x08f9, - // Entry 22840 - 2287F - 0x0900, 0x0001, 0x0032, 0x043d, 0x0005, 0x0032, 0x044f, 0x0457, - 0x0460, 0x0442, 0x0466, 0x0002, 0x0903, 0x0906, 0x0001, 0x0032, - 0x046b, 0x0001, 0x0032, 0x047a, 0x0003, 0x090d, 0x0000, 0x0910, - 0x0001, 0x0000, 0x2143, 0x0002, 0x0913, 0x0916, 0x0001, 0x0032, - 0x048d, 0x0001, 0x0032, 0x0499, 0x0003, 0x091d, 0x0000, 0x0920, - 0x0001, 0x0000, 0x2143, 0x0002, 0x0923, 0x0926, 0x0001, 0x0000, - 0x1d76, 0x0001, 0x0000, 0x1d7d, 0x0001, 0x092b, 0x0001, 0x0032, - 0x04a4, 0x0003, 0x0000, 0x0932, 0x0937, 0x0003, 0x0032, 0x04b8, - // Entry 22880 - 228BF - 0x04c9, 0x04d9, 0x0002, 0x093a, 0x093d, 0x0001, 0x0032, 0x04f0, - 0x0001, 0x0032, 0x0506, 0x0003, 0x0000, 0x0944, 0x0949, 0x0003, - 0x0032, 0x0520, 0x052a, 0x0533, 0x0002, 0x094c, 0x094f, 0x0001, - 0x0032, 0x0543, 0x0001, 0x0032, 0x0550, 0x0003, 0x0000, 0x0956, - 0x095b, 0x0003, 0x0032, 0x0520, 0x052a, 0x0533, 0x0002, 0x095e, - 0x0961, 0x0001, 0x0032, 0x055e, 0x0001, 0x0032, 0x0568, 0x0003, - 0x0000, 0x0968, 0x096d, 0x0003, 0x0032, 0x0572, 0x057d, 0x0587, - 0x0002, 0x0970, 0x0973, 0x0001, 0x0032, 0x0598, 0x0001, 0x0032, - // Entry 228C0 - 228FF - 0x05a8, 0x0003, 0x0000, 0x097a, 0x097f, 0x0003, 0x0032, 0x05b7, - 0x05c1, 0x05ca, 0x0002, 0x0982, 0x0985, 0x0001, 0x0032, 0x05da, - 0x0001, 0x0032, 0x05e7, 0x0003, 0x0000, 0x098c, 0x0991, 0x0003, - 0x0032, 0x05b7, 0x05c1, 0x05ca, 0x0002, 0x0994, 0x0997, 0x0001, - 0x0032, 0x05f5, 0x0001, 0x0032, 0x05ff, 0x0003, 0x0000, 0x099e, - 0x09a3, 0x0003, 0x0032, 0x0609, 0x0615, 0x0620, 0x0002, 0x09a6, - 0x09a9, 0x0001, 0x0032, 0x0632, 0x0001, 0x0032, 0x0643, 0x0003, - 0x0000, 0x09b0, 0x09b5, 0x0003, 0x0032, 0x0653, 0x065d, 0x0666, - // Entry 22900 - 2293F - 0x0002, 0x09b8, 0x09bb, 0x0001, 0x0032, 0x0676, 0x0001, 0x0032, - 0x0683, 0x0003, 0x0000, 0x09c2, 0x09c7, 0x0003, 0x0032, 0x0653, - 0x065d, 0x0666, 0x0002, 0x09ca, 0x09cd, 0x0001, 0x0032, 0x0691, - 0x0001, 0x0032, 0x069b, 0x0003, 0x0000, 0x09d4, 0x09d9, 0x0003, - 0x0032, 0x06a5, 0x06af, 0x06b8, 0x0002, 0x09dc, 0x09df, 0x0001, - 0x0032, 0x06c8, 0x0001, 0x0032, 0x06d7, 0x0003, 0x0000, 0x09e6, - 0x09eb, 0x0003, 0x0032, 0x06e5, 0x06ef, 0x06f8, 0x0002, 0x09ee, - 0x09f1, 0x0001, 0x0032, 0x0708, 0x0001, 0x0032, 0x0715, 0x0003, - // Entry 22940 - 2297F - 0x0000, 0x09f8, 0x09fd, 0x0003, 0x0032, 0x06e5, 0x06ef, 0x06f8, - 0x0002, 0x0a00, 0x0a03, 0x0001, 0x0032, 0x0723, 0x0001, 0x0032, - 0x072d, 0x0003, 0x0000, 0x0a0a, 0x0a0f, 0x0003, 0x0032, 0x0737, - 0x0742, 0x074c, 0x0002, 0x0a12, 0x0a15, 0x0001, 0x0032, 0x075d, - 0x0001, 0x0032, 0x076d, 0x0003, 0x0000, 0x0a1c, 0x0a21, 0x0003, - 0x0032, 0x077c, 0x0786, 0x078f, 0x0002, 0x0a24, 0x0a27, 0x0001, - 0x0032, 0x079f, 0x0001, 0x0032, 0x07ac, 0x0003, 0x0000, 0x0a2e, - 0x0a33, 0x0003, 0x0032, 0x077c, 0x0786, 0x078f, 0x0002, 0x0a36, - // Entry 22980 - 229BF - 0x0a39, 0x0001, 0x0032, 0x07ba, 0x0001, 0x0032, 0x07c4, 0x0003, - 0x0000, 0x0a40, 0x0a45, 0x0003, 0x0032, 0x07ce, 0x07d9, 0x07e3, - 0x0002, 0x0a48, 0x0a4b, 0x0001, 0x0032, 0x07f4, 0x0001, 0x0032, - 0x0804, 0x0003, 0x0000, 0x0a52, 0x0a57, 0x0003, 0x0032, 0x0813, - 0x081d, 0x0826, 0x0002, 0x0a5a, 0x0a5d, 0x0001, 0x0032, 0x0836, - 0x0001, 0x0032, 0x0843, 0x0003, 0x0000, 0x0a64, 0x0a69, 0x0003, - 0x0032, 0x0813, 0x081d, 0x0826, 0x0002, 0x0a6c, 0x0a6f, 0x0001, - 0x0032, 0x0851, 0x0001, 0x0032, 0x085b, 0x0003, 0x0000, 0x0a76, - // Entry 229C0 - 229FF - 0x0a7b, 0x0003, 0x0032, 0x0865, 0x0870, 0x087a, 0x0002, 0x0a7e, - 0x0a81, 0x0001, 0x0032, 0x088b, 0x0001, 0x0032, 0x089b, 0x0003, - 0x0000, 0x0a88, 0x0a8d, 0x0003, 0x0032, 0x08aa, 0x08b4, 0x08bd, - 0x0002, 0x0a90, 0x0a93, 0x0001, 0x0032, 0x08cd, 0x0001, 0x0032, - 0x08da, 0x0003, 0x0000, 0x0a9a, 0x0a9f, 0x0003, 0x0032, 0x08aa, - 0x08b4, 0x08bd, 0x0002, 0x0aa2, 0x0aa5, 0x0001, 0x0032, 0x08e8, - 0x0001, 0x0032, 0x08f2, 0x0001, 0x0aaa, 0x0001, 0x0007, 0x07cc, - 0x0003, 0x0ab1, 0x0ab4, 0x0ab8, 0x0001, 0x0032, 0x08fc, 0x0002, - // Entry 22A00 - 22A3F - 0x0032, 0xffff, 0x0900, 0x0002, 0x0abb, 0x0abe, 0x0001, 0x0032, - 0x0908, 0x0001, 0x0032, 0x0916, 0x0003, 0x0ac5, 0x0000, 0x0ac8, - 0x0001, 0x0032, 0x0928, 0x0002, 0x0acb, 0x0ace, 0x0001, 0x0032, - 0x0908, 0x0001, 0x0032, 0x092c, 0x0003, 0x0ad5, 0x0000, 0x0ad8, - 0x0001, 0x0000, 0x214a, 0x0002, 0x0adb, 0x0ade, 0x0001, 0x0032, - 0x0939, 0x0001, 0x0032, 0x0942, 0x0003, 0x0ae5, 0x0ae8, 0x0aec, - 0x0001, 0x0032, 0x094b, 0x0002, 0x0032, 0xffff, 0x0951, 0x0002, - 0x0aef, 0x0af2, 0x0001, 0x0032, 0x095b, 0x0001, 0x0032, 0x096b, - // Entry 22A40 - 22A7F - 0x0003, 0x0af9, 0x0000, 0x0afc, 0x0001, 0x0032, 0x097f, 0x0002, - 0x0aff, 0x0b02, 0x0001, 0x0032, 0x0984, 0x0001, 0x0032, 0x0990, - 0x0003, 0x0b09, 0x0000, 0x0b0c, 0x0001, 0x0000, 0x1f9a, 0x0002, - 0x0b0f, 0x0b12, 0x0001, 0x0032, 0x099d, 0x0001, 0x0032, 0x09a6, - 0x0003, 0x0b19, 0x0b1c, 0x0b20, 0x0001, 0x0032, 0x09af, 0x0002, - 0x0032, 0xffff, 0x09b5, 0x0002, 0x0b23, 0x0b26, 0x0001, 0x0032, - 0x09be, 0x0001, 0x0032, 0x09ce, 0x0003, 0x0b2d, 0x0000, 0x0b30, - 0x0001, 0x0032, 0x09e2, 0x0002, 0x0b33, 0x0b36, 0x0001, 0x0032, - // Entry 22A80 - 22ABF - 0x09e7, 0x0001, 0x0032, 0x09f3, 0x0003, 0x0b3d, 0x0000, 0x0b40, - 0x0001, 0x0000, 0x2008, 0x0002, 0x0b43, 0x0b46, 0x0001, 0x0032, - 0x0a00, 0x0001, 0x0032, 0x0a09, 0x0001, 0x0b4b, 0x0001, 0x0032, - 0x0a12, 0x0004, 0x0b53, 0x0b58, 0x0b5d, 0x0b6c, 0x0003, 0x0008, - 0x1d98, 0x4f1f, 0x4f26, 0x0003, 0x0032, 0x0a1d, 0x0a27, 0x0a3d, - 0x0002, 0x0000, 0x0b60, 0x0003, 0x0000, 0x0b67, 0x0b64, 0x0001, - 0x0032, 0x0a4f, 0x0003, 0x0032, 0xffff, 0x0a6d, 0x0a87, 0x0002, - 0x0d53, 0x0b6f, 0x0003, 0x0b73, 0x0cb3, 0x0c13, 0x009e, 0x0032, - // Entry 22AC0 - 22AFF - 0xffff, 0xffff, 0xffff, 0xffff, 0x0b28, 0x0b75, 0x0beb, 0x0c26, - 0x0c61, 0x0c99, 0x0ce0, 0x0d1e, 0x0d59, 0x0e01, 0x0e36, 0x0e7a, - 0x0ee5, 0x0f23, 0x0f64, 0x0fbd, 0x1028, 0x107e, 0x10d4, 0x111b, - 0x1156, 0xffff, 0xffff, 0x11b8, 0xffff, 0x120b, 0xffff, 0x127e, - 0x12bc, 0x12f1, 0x1332, 0xffff, 0xffff, 0x13a1, 0x13e2, 0x142d, - 0xffff, 0xffff, 0xffff, 0x1499, 0xffff, 0x14f4, 0x1541, 0xffff, - 0x15a2, 0x15ec, 0x164b, 0xffff, 0xffff, 0xffff, 0xffff, 0x16e0, - 0xffff, 0xffff, 0x1745, 0x179b, 0xffff, 0xffff, 0x181d, 0x1873, - // Entry 22B00 - 22B3F - 0x18b7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x196e, - 0x19a3, 0x19e1, 0x1a1c, 0x1a57, 0xffff, 0xffff, 0x1af6, 0xffff, - 0x1b3b, 0xffff, 0xffff, 0x1bb1, 0xffff, 0x1c47, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1cc7, 0xffff, 0x1d18, 0x1d77, 0x1dcd, 0x1e14, - 0xffff, 0xffff, 0xffff, 0x1e75, 0x1ec8, 0x1f18, 0xffff, 0xffff, - 0x1f88, 0x2003, 0x204d, 0x2082, 0xffff, 0xffff, 0x20e2, 0x2123, - 0x2158, 0xffff, 0x21b1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x22b1, 0x22f2, 0x232d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 22B40 - 22B7F - 0xffff, 0xffff, 0x23e4, 0xffff, 0xffff, 0x243e, 0xffff, 0x2482, - 0xffff, 0x24dc, 0x251a, 0x2561, 0xffff, 0x25af, 0x25f9, 0xffff, - 0xffff, 0xffff, 0x2677, 0x26b5, 0xffff, 0xffff, 0x0a9e, 0x0bb0, - 0x0d8e, 0x0dc6, 0xffff, 0xffff, 0x1bf5, 0x2251, 0x009e, 0x0032, - 0x0ad3, 0x0ae4, 0x0af8, 0x0b0b, 0x0b3b, 0x0b82, 0x0bf8, 0x0c33, - 0x0c6d, 0x0caa, 0x0cee, 0x0d2b, 0x0d64, 0x0e0c, 0x0e46, 0x0e97, - 0x0ef3, 0x0f32, 0x0f7b, 0x0fda, 0x103e, 0x1094, 0x10e5, 0x1128, - 0x1167, 0x119d, 0x11aa, 0x11c5, 0x11f3, 0x121f, 0x1267, 0x128c, - // Entry 22B80 - 22BBF - 0x12c7, 0x1300, 0x1343, 0x1379, 0x138b, 0x13b0, 0x13f2, 0x1438, - 0x1462, 0x146e, 0x1487, 0x14ac, 0x14e6, 0x1507, 0x1553, 0x158b, - 0x15b4, 0x1605, 0x1656, 0x1680, 0x1695, 0x16c2, 0x16d2, 0x16ee, - 0x171e, 0x1731, 0x175b, 0x17b1, 0x17fc, 0x1810, 0x1833, 0x1883, - 0x18c2, 0x18ec, 0x18f8, 0x190e, 0x191e, 0x193a, 0x1954, 0x1979, - 0x19b1, 0x19ee, 0x1a29, 0x1a76, 0x1ac8, 0x1adf, 0x1b02, 0x1b2e, - 0x1b4d, 0x1b85, 0x1ba1, 0x1bc1, 0x1c2d, 0x1c55, 0x1c85, 0x1c94, - 0x1ca3, 0x1cb3, 0x1cd7, 0x1d0b, 0x1d31, 0x1d8d, 0x1dde, 0x1e21, - // Entry 22BC0 - 22BFF - 0x1e4f, 0x1e5d, 0x1e69, 0x1e8a, 0x1edc, 0x1f2b, 0x1f65, 0x1f70, - 0x1fa2, 0x2015, 0x2058, 0x2091, 0x20c3, 0x20cf, 0x20f1, 0x212e, - 0x2167, 0x2199, 0x21d1, 0x2225, 0x2234, 0x2241, 0x2295, 0x22a3, - 0x22c0, 0x22ff, 0x2339, 0x2365, 0x2376, 0x238e, 0x23a6, 0x23bc, - 0x23cb, 0x23d7, 0x23f1, 0x241f, 0x2430, 0x244a, 0x2476, 0x2495, - 0x24cf, 0x24ea, 0x252b, 0x256f, 0x259f, 0x25c1, 0x2609, 0x263d, - 0x264a, 0x265f, 0x2685, 0x26c9, 0x17f1, 0x1fea, 0x0aa9, 0x0bbd, - 0x0d9a, 0x0dd3, 0x125b, 0x1b95, 0x1c01, 0x2261, 0x009e, 0x0032, - // Entry 22C00 - 22C3F - 0xffff, 0xffff, 0xffff, 0xffff, 0x0b56, 0x0b97, 0x0c0d, 0x0c48, - 0x0c81, 0x0cc3, 0x0d04, 0x0d40, 0x0d77, 0x0e1f, 0x0e5e, 0x0ebc, - 0x0f09, 0x0f49, 0x0f9a, 0x0fff, 0x105c, 0x10b2, 0x10fe, 0x113d, - 0x1180, 0xffff, 0xffff, 0x11da, 0xffff, 0x123b, 0xffff, 0x12a2, - 0x12da, 0x1317, 0x135c, 0xffff, 0xffff, 0x13c7, 0x140a, 0x144b, - 0xffff, 0xffff, 0xffff, 0x14c7, 0xffff, 0x1522, 0x156d, 0xffff, - 0x15ce, 0x1626, 0x1669, 0xffff, 0xffff, 0xffff, 0xffff, 0x1704, - 0xffff, 0xffff, 0x1779, 0x17cf, 0xffff, 0xffff, 0x1851, 0x189b, - // Entry 22C40 - 22C7F - 0x18d5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x198c, - 0x19c7, 0x1a03, 0x1a3e, 0x1a9d, 0xffff, 0xffff, 0x1b16, 0xffff, - 0x1b67, 0xffff, 0xffff, 0x1bd9, 0xffff, 0x1c6b, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1cef, 0xffff, 0x1d52, 0x1dab, 0x1df7, 0x1e36, - 0xffff, 0xffff, 0xffff, 0x1ea7, 0x1ef8, 0x1f46, 0xffff, 0xffff, - 0x1fc4, 0x202f, 0x206b, 0x20a8, 0xffff, 0xffff, 0x2108, 0x2141, - 0x217e, 0xffff, 0x21f9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x22d7, 0x2314, 0x234d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 22C80 - 22CBF - 0xffff, 0xffff, 0x2406, 0xffff, 0xffff, 0x245e, 0xffff, 0x24b0, - 0xffff, 0x2500, 0x2544, 0x2585, 0xffff, 0x25db, 0x2621, 0xffff, - 0xffff, 0xffff, 0x269b, 0x26e5, 0xffff, 0xffff, 0x0abc, 0x0bd2, - 0x0dae, 0x0de8, 0xffff, 0xffff, 0x1c15, 0x2279, 0x0003, 0x0000, - 0x0000, 0x0d57, 0x0047, 0x0032, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 22CC0 - 22CFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1935, 0x1950, 0x196a, 0x0002, 0x0003, 0x01b9, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, - // Entry 22D00 - 22D3F - 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, - 0x04f7, 0x0008, 0x002f, 0x0094, 0x00eb, 0x0120, 0x0161, 0x0186, - 0x0197, 0x01a8, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, 0x0045, - 0x0054, 0x000d, 0x0033, 0xffff, 0x0000, 0x0004, 0x0008, 0x000c, - 0x0010, 0x0014, 0x0018, 0x001c, 0x0024, 0x0028, 0x002e, 0x0032, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - // Entry 22D40 - 22D7F - 0x0033, 0xffff, 0x0036, 0x0043, 0x0051, 0x005a, 0x0010, 0x0060, - 0x0065, 0x006d, 0x007a, 0x0083, 0x008c, 0x0094, 0x0003, 0x0067, - 0x0076, 0x0085, 0x000d, 0x0033, 0xffff, 0x0000, 0x0004, 0x0008, - 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0024, 0x0028, 0x002e, - 0x0032, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - 0x000d, 0x0033, 0xffff, 0x0036, 0x0043, 0x0051, 0x005a, 0x0010, - 0x0060, 0x0065, 0x006d, 0x007a, 0x0083, 0x008c, 0x0094, 0x0002, - // Entry 22D80 - 22DBF - 0x0097, 0x00c1, 0x0005, 0x009d, 0x00a6, 0x00b8, 0x0000, 0x00af, - 0x0007, 0x0033, 0x009c, 0x00a2, 0x00a8, 0x00ac, 0x00b0, 0x00b8, - 0x00bf, 0x0007, 0x0000, 0x2481, 0x2931, 0x04dd, 0x2159, 0x04dd, - 0x22e6, 0x2481, 0x0007, 0x0033, 0x009c, 0x00a2, 0x00a8, 0x00ac, - 0x00b0, 0x00b8, 0x00bf, 0x0007, 0x0033, 0x00c3, 0x00d3, 0x00db, - 0x00e3, 0x00ec, 0x00f8, 0x0102, 0x0005, 0x00c7, 0x00d0, 0x00e2, - 0x0000, 0x00d9, 0x0007, 0x0033, 0x009c, 0x00a2, 0x00a8, 0x00ac, - 0x00b0, 0x00b8, 0x00bf, 0x0007, 0x0000, 0x2481, 0x2931, 0x04dd, - // Entry 22DC0 - 22DFF - 0x2159, 0x04dd, 0x22e6, 0x2481, 0x0007, 0x0033, 0x009c, 0x00a2, - 0x00a8, 0x00ac, 0x00b0, 0x00b8, 0x00bf, 0x0007, 0x0033, 0x00c3, - 0x00d3, 0x00db, 0x00e3, 0x00ec, 0x00f8, 0x0102, 0x0002, 0x00ee, - 0x0107, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0033, 0xffff, - 0x010c, 0x0111, 0x0116, 0x011b, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, 0x0120, 0x012a, - 0x0134, 0x013e, 0x0003, 0x010b, 0x0112, 0x0119, 0x0005, 0x0033, - 0xffff, 0x010c, 0x0111, 0x0116, 0x011b, 0x0005, 0x0000, 0xffff, - // Entry 22E00 - 22E3F - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, 0x0120, - 0x012a, 0x0134, 0x013e, 0x0002, 0x0123, 0x0142, 0x0003, 0x0127, - 0x0130, 0x0139, 0x0002, 0x012a, 0x012d, 0x0001, 0x000b, 0x0a70, - 0x0001, 0x0033, 0x0148, 0x0002, 0x0133, 0x0136, 0x0001, 0x000b, - 0x0a70, 0x0001, 0x0033, 0x0148, 0x0002, 0x013c, 0x013f, 0x0001, - 0x000b, 0x0a70, 0x0001, 0x0033, 0x0148, 0x0003, 0x0146, 0x014f, - 0x0158, 0x0002, 0x0149, 0x014c, 0x0001, 0x000b, 0x0a70, 0x0001, - 0x0033, 0x0148, 0x0002, 0x0152, 0x0155, 0x0001, 0x000b, 0x0a70, - // Entry 22E40 - 22E7F - 0x0001, 0x0033, 0x0148, 0x0002, 0x015b, 0x015e, 0x0001, 0x000b, - 0x0a70, 0x0001, 0x0033, 0x0148, 0x0003, 0x0170, 0x017b, 0x0165, - 0x0002, 0x0168, 0x016c, 0x0002, 0x0033, 0x014d, 0x0159, 0x0002, - 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0173, 0x0177, 0x0002, 0x0033, - 0x0166, 0x016b, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x017e, - 0x0182, 0x0002, 0x0033, 0x0166, 0x016b, 0x0002, 0x0000, 0x04f5, - 0x04f9, 0x0004, 0x0194, 0x018e, 0x018b, 0x0191, 0x0001, 0x0005, - 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - // Entry 22E80 - 22EBF - 0x0002, 0x0860, 0x0004, 0x01a5, 0x019f, 0x019c, 0x01a2, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x01b6, 0x01b0, 0x01ad, 0x01b3, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x01fa, 0x0000, 0x0000, - 0x01ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0204, 0x0000, - 0x0000, 0x0209, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x020e, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0219, 0x0000, 0x0000, - // Entry 22EC0 - 22EFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x021e, 0x0000, 0x0223, 0x0000, 0x0000, 0x0228, 0x0000, - 0x0000, 0x022d, 0x0000, 0x0000, 0x0232, 0x0001, 0x01fc, 0x0001, - 0x0033, 0x0170, 0x0001, 0x0201, 0x0001, 0x0033, 0x0175, 0x0001, - 0x0206, 0x0001, 0x0033, 0x017b, 0x0001, 0x020b, 0x0001, 0x0033, - 0x0182, 0x0002, 0x0211, 0x0214, 0x0001, 0x0033, 0x0186, 0x0003, - // Entry 22F00 - 22F3F - 0x0033, 0x0193, 0x019d, 0x01a3, 0x0001, 0x021b, 0x0001, 0x0033, - 0x01a8, 0x0001, 0x0220, 0x0001, 0x0033, 0x01b9, 0x0001, 0x0225, - 0x0001, 0x0033, 0x01d6, 0x0001, 0x022a, 0x0001, 0x0033, 0x01de, - 0x0001, 0x022f, 0x0001, 0x0033, 0x01e4, 0x0001, 0x0234, 0x0001, - 0x0033, 0x01ed, 0x0003, 0x0004, 0x0144, 0x01c4, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0008, - 0x0016, 0x007b, 0x00bc, 0x00f1, 0x0109, 0x0111, 0x0122, 0x0133, - 0x0002, 0x0019, 0x004a, 0x0003, 0x001d, 0x002c, 0x003b, 0x000d, - // Entry 22F40 - 22F7F - 0x0033, 0xffff, 0x01fa, 0x0201, 0x0208, 0x020f, 0x0216, 0x021d, - 0x0224, 0x022b, 0x0232, 0x0239, 0x0240, 0x024a, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0033, 0xffff, - 0x01fa, 0x0201, 0x0208, 0x020f, 0x0216, 0x021d, 0x0224, 0x022b, - 0x0232, 0x0239, 0x0240, 0x024a, 0x0003, 0x004e, 0x005d, 0x006c, - 0x000d, 0x0033, 0xffff, 0x01fa, 0x0201, 0x0208, 0x020f, 0x0216, - 0x021d, 0x0224, 0x022b, 0x0232, 0x0239, 0x0240, 0x024a, 0x000d, - // Entry 22F80 - 22FBF - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0033, - 0xffff, 0x01fa, 0x0201, 0x0208, 0x020f, 0x0216, 0x021d, 0x0224, - 0x022b, 0x0232, 0x0239, 0x0240, 0x024a, 0x0002, 0x007e, 0x009d, - 0x0003, 0x0082, 0x008b, 0x0094, 0x0007, 0x0033, 0x0254, 0x025b, - 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, 0x0007, 0x0033, 0x0285, - 0x0289, 0x028d, 0x0291, 0x0295, 0x0299, 0x029d, 0x0007, 0x0033, - 0x02a1, 0x02ab, 0x02b5, 0x02bf, 0x02c9, 0x02d3, 0x02dd, 0x0003, - // Entry 22FC0 - 22FFF - 0x00a1, 0x00aa, 0x00b3, 0x0007, 0x0033, 0x0254, 0x025b, 0x0262, - 0x0269, 0x0270, 0x0277, 0x027e, 0x0007, 0x0033, 0x0285, 0x0289, - 0x028d, 0x0291, 0x0295, 0x0299, 0x029d, 0x0007, 0x0033, 0x02a1, - 0x02ab, 0x02b5, 0x02bf, 0x02c9, 0x02d3, 0x02dd, 0x0002, 0x00bf, - 0x00d8, 0x0003, 0x00c3, 0x00ca, 0x00d1, 0x0005, 0x0033, 0xffff, - 0x02e7, 0x02ee, 0x02f5, 0x02fc, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, 0x02e7, 0x02ee, - 0x02f5, 0x02fc, 0x0003, 0x00dc, 0x00e3, 0x00ea, 0x0005, 0x0033, - // Entry 23000 - 2303F - 0xffff, 0x02e7, 0x02ee, 0x02f5, 0x02fc, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, 0x02e7, - 0x02ee, 0x02f5, 0x02fc, 0x0001, 0x00f3, 0x0003, 0x00f7, 0x0000, - 0x0100, 0x0002, 0x00fa, 0x00fd, 0x0001, 0x0033, 0x0303, 0x0001, - 0x0033, 0x030a, 0x0002, 0x0103, 0x0106, 0x0001, 0x0033, 0x0303, - 0x0001, 0x0033, 0x030a, 0x0001, 0x010b, 0x0001, 0x010d, 0x0002, - 0x0033, 0x0311, 0x031b, 0x0004, 0x011f, 0x0119, 0x0116, 0x011c, - 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, - // Entry 23040 - 2307F - 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x0130, 0x012a, 0x0127, - 0x012d, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, - 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0141, 0x013b, - 0x0138, 0x013e, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x0185, - 0x0000, 0x0000, 0x018a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x018f, 0x0000, 0x0000, 0x0194, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0199, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a6, - // Entry 23080 - 230BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01ab, 0x0000, 0x01b0, 0x0000, 0x0000, - 0x01b5, 0x0000, 0x0000, 0x01ba, 0x0000, 0x0000, 0x01bf, 0x0001, - 0x0187, 0x0001, 0x0033, 0x0325, 0x0001, 0x018c, 0x0001, 0x0033, - 0x032c, 0x0001, 0x0191, 0x0001, 0x0033, 0x0330, 0x0001, 0x0196, - 0x0001, 0x0033, 0x0254, 0x0002, 0x019c, 0x019f, 0x0001, 0x0033, - // Entry 230C0 - 230FF - 0x028d, 0x0005, 0x0033, 0x0341, 0x034b, 0x0352, 0x0334, 0x035c, - 0x0001, 0x01a8, 0x0001, 0x0033, 0x0262, 0x0001, 0x01ad, 0x0001, - 0x0033, 0x0366, 0x0001, 0x01b2, 0x0001, 0x0033, 0x0374, 0x0001, - 0x01b7, 0x0001, 0x0033, 0x037b, 0x0001, 0x01bc, 0x0001, 0x0033, - 0x037f, 0x0001, 0x01c1, 0x0001, 0x0033, 0x0383, 0x0004, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0003, 0x0004, 0x025b, 0x055d, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - // Entry 23100 - 2313F - 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0013, - 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, 0x0008, 0x0627, 0x0001, - 0x0008, 0x062f, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, - 0x0015, 0x0238, 0x0001, 0x0015, 0x0238, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, - 0x0203, 0x0228, 0x0239, 0x024a, 0x0002, 0x0044, 0x0075, 0x0003, - 0x0048, 0x0057, 0x0066, 0x000d, 0x0015, 0xffff, 0x000b, 0x23dd, - 0x241d, 0x001a, 0x2422, 0x2405, 0x240b, 0x2427, 0x238d, 0x0037, - // Entry 23140 - 2317F - 0x242e, 0x2397, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x2931, - 0x2382, 0x2931, 0x2483, 0x2483, 0x25b6, 0x2481, 0x22ec, 0x22ee, - 0x22f0, 0x000d, 0x0033, 0xffff, 0x0390, 0x0398, 0x03a1, 0x03a6, - 0x03ad, 0x03b2, 0x03b9, 0x03c0, 0x03c8, 0x03d2, 0x03db, 0x03e5, - 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0015, 0xffff, 0x000b, - 0x23dd, 0x241d, 0x001a, 0x2434, 0x2405, 0x240b, 0x2427, 0x238d, - 0x0037, 0x242e, 0x2397, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, - 0x2931, 0x2382, 0x2931, 0x2483, 0x2483, 0x25b6, 0x2481, 0x22ec, - // Entry 23180 - 231BF - 0x22ee, 0x22f0, 0x000d, 0x0033, 0xffff, 0x0390, 0x0398, 0x03a1, - 0x03a6, 0x03ee, 0x03b2, 0x03b9, 0x03c0, 0x03c8, 0x03d2, 0x03db, - 0x03e5, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, - 0x0000, 0x00c1, 0x0007, 0x0024, 0x0013, 0x0018, 0x2676, 0x267c, - 0x2682, 0x2687, 0x268d, 0x0007, 0x0000, 0x2481, 0x2931, 0x2933, - 0x2931, 0x22e6, 0x22e6, 0x228e, 0x0007, 0x0024, 0x003a, 0x003e, - 0x2692, 0x0048, 0x2697, 0x269b, 0x26a0, 0x0007, 0x0024, 0x0059, - 0x26a4, 0x26af, 0x26bd, 0x26cb, 0x26d7, 0x26e3, 0x0005, 0x00d9, - // Entry 231C0 - 231FF - 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0024, 0x0013, 0x0018, - 0x2676, 0x267c, 0x2682, 0x2687, 0x268d, 0x0007, 0x0000, 0x2481, - 0x2931, 0x2933, 0x2931, 0x22e6, 0x22e6, 0x228e, 0x0007, 0x0024, - 0x003a, 0x003e, 0x2692, 0x0048, 0x2697, 0x269b, 0x26a0, 0x0007, - 0x0024, 0x0059, 0x26a4, 0x26af, 0x26bd, 0x26cb, 0x26d7, 0x26e3, - 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, - 0x0033, 0xffff, 0x03f3, 0x03f6, 0x03f9, 0x03fc, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, 0xffff, - // Entry 23200 - 2323F - 0x03ff, 0x040f, 0x041f, 0x042f, 0x0003, 0x011d, 0x0124, 0x012b, - 0x0005, 0x0033, 0xffff, 0x03f3, 0x03f6, 0x03f9, 0x03fc, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0033, - 0xffff, 0x03ff, 0x040f, 0x041f, 0x042f, 0x0002, 0x0135, 0x019c, - 0x0003, 0x0139, 0x015a, 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, - 0x014e, 0x0151, 0x0154, 0x0157, 0x0148, 0x0001, 0x0033, 0x043f, - 0x0001, 0x0033, 0x0446, 0x0001, 0x0033, 0x044b, 0x0001, 0x0033, - 0x0451, 0x0001, 0x0033, 0x0456, 0x0001, 0x0033, 0x0461, 0x0001, - // Entry 23240 - 2327F - 0x0033, 0x0469, 0x0001, 0x0033, 0x0471, 0x0008, 0x0166, 0x016c, - 0x0163, 0x016f, 0x0172, 0x0175, 0x0178, 0x0169, 0x0001, 0x0033, - 0x047c, 0x0001, 0x0029, 0x007d, 0x0001, 0x0006, 0x041e, 0x0001, - 0x0033, 0x0480, 0x0001, 0x0033, 0x0483, 0x0001, 0x0033, 0x0488, - 0x0001, 0x000d, 0x043e, 0x0001, 0x0029, 0x008c, 0x0008, 0x0187, - 0x018d, 0x0184, 0x0190, 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, - 0x0033, 0x048c, 0x0001, 0x0033, 0x0446, 0x0001, 0x0033, 0x0497, - 0x0001, 0x0033, 0x0451, 0x0001, 0x0033, 0x0456, 0x0001, 0x0033, - // Entry 23280 - 232BF - 0x049f, 0x0001, 0x0033, 0x04aa, 0x0001, 0x0033, 0x0471, 0x0003, - 0x01a0, 0x01c1, 0x01e2, 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, - 0x01b8, 0x01bb, 0x01be, 0x01af, 0x0001, 0x0033, 0x043f, 0x0001, - 0x0033, 0x0446, 0x0001, 0x0033, 0x044b, 0x0001, 0x0033, 0x0451, - 0x0001, 0x0033, 0x04b6, 0x0001, 0x0033, 0x0461, 0x0001, 0x000d, - 0x043e, 0x0001, 0x0033, 0x04bc, 0x0008, 0x01cd, 0x01d3, 0x01ca, - 0x01d6, 0x01d9, 0x01dc, 0x01df, 0x01d0, 0x0001, 0x0033, 0x047c, - 0x0001, 0x0033, 0x0446, 0x0001, 0x0033, 0x04c2, 0x0001, 0x0033, - // Entry 232C0 - 232FF - 0x0451, 0x0001, 0x0033, 0x0483, 0x0001, 0x0033, 0x0488, 0x0001, - 0x000d, 0x043e, 0x0001, 0x0029, 0x008c, 0x0008, 0x01ee, 0x01f4, - 0x01eb, 0x01f7, 0x01fa, 0x01fd, 0x0200, 0x01f1, 0x0001, 0x0033, - 0x048c, 0x0001, 0x0033, 0x0446, 0x0001, 0x0033, 0x0497, 0x0001, - 0x0033, 0x0451, 0x0001, 0x0033, 0x04c6, 0x0001, 0x0033, 0x04ce, - 0x0001, 0x0033, 0x04dc, 0x0001, 0x0033, 0x04bc, 0x0003, 0x0212, - 0x021d, 0x0207, 0x0002, 0x020a, 0x020e, 0x0002, 0x0033, 0x04e3, - 0x0507, 0x0002, 0x0033, 0x04ef, 0x0513, 0x0002, 0x0215, 0x0219, - // Entry 23300 - 2333F - 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x0033, 0x0525, 0x052c, - 0x0002, 0x0220, 0x0224, 0x0002, 0x0033, 0x0531, 0x0536, 0x0002, - 0x0015, 0x01d7, 0x01de, 0x0004, 0x0236, 0x0230, 0x022d, 0x0233, - 0x0001, 0x0016, 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0015, - 0x0207, 0x0001, 0x0017, 0x03cc, 0x0004, 0x0247, 0x0241, 0x023e, - 0x0244, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0258, 0x0252, - 0x024f, 0x0255, 0x0001, 0x0015, 0x0238, 0x0001, 0x0015, 0x0238, - // Entry 23340 - 2337F - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x029c, - 0x0000, 0x0000, 0x02a1, 0x02b8, 0x02cf, 0x02e6, 0x02fd, 0x0314, - 0x032b, 0x0342, 0x0359, 0x0370, 0x0387, 0x039e, 0x0000, 0x0000, - 0x0000, 0x03b5, 0x03ce, 0x03e7, 0x0000, 0x0000, 0x0000, 0x0400, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0405, 0x040d, 0x0415, - 0x041d, 0x0425, 0x042d, 0x0435, 0x043d, 0x0445, 0x044d, 0x0455, - 0x045d, 0x0465, 0x046d, 0x0475, 0x047d, 0x0485, 0x048d, 0x0495, - 0x049d, 0x04a5, 0x0000, 0x04ad, 0x0000, 0x04b2, 0x04c4, 0x04d6, - // Entry 23380 - 233BF - 0x04e8, 0x04fa, 0x050c, 0x051e, 0x0534, 0x0546, 0x0558, 0x0001, - 0x029e, 0x0001, 0x0033, 0x053b, 0x0003, 0x02a5, 0x02a8, 0x02ad, - 0x0001, 0x0024, 0x01b7, 0x0003, 0x0033, 0x0544, 0x0556, 0x0565, - 0x0002, 0x02b0, 0x02b4, 0x0002, 0x0033, 0x0574, 0x0574, 0x0002, - 0x0033, 0x0591, 0x0582, 0x0003, 0x02bc, 0x02bf, 0x02c4, 0x0001, - 0x0024, 0x01b7, 0x0003, 0x0033, 0x0544, 0x0556, 0x0565, 0x0002, - 0x02c7, 0x02cb, 0x0002, 0x0033, 0x0574, 0x0574, 0x0002, 0x0033, - 0x0591, 0x0582, 0x0003, 0x02d3, 0x02d6, 0x02db, 0x0001, 0x0024, - // Entry 233C0 - 233FF - 0x01b7, 0x0003, 0x0033, 0x0544, 0x0556, 0x0565, 0x0002, 0x02de, - 0x02e2, 0x0002, 0x0033, 0x0574, 0x0574, 0x0002, 0x0033, 0x0591, - 0x0591, 0x0003, 0x02ea, 0x02ed, 0x02f2, 0x0001, 0x0033, 0x05a1, - 0x0003, 0x0033, 0x05b2, 0x05cd, 0x05e5, 0x0002, 0x02f5, 0x02f9, - 0x0002, 0x0033, 0x0616, 0x05fd, 0x0002, 0x0033, 0x064a, 0x0630, - 0x0003, 0x0301, 0x0304, 0x0309, 0x0001, 0x0033, 0x0665, 0x0003, - 0x0033, 0x0672, 0x0684, 0x0693, 0x0002, 0x030c, 0x0310, 0x0002, - 0x0033, 0x06a2, 0x06a2, 0x0002, 0x0033, 0x06b4, 0x06b4, 0x0003, - // Entry 23400 - 2343F - 0x0318, 0x031b, 0x0320, 0x0001, 0x0024, 0x02ae, 0x0003, 0x0033, - 0x0672, 0x0684, 0x0693, 0x0002, 0x0323, 0x0327, 0x0002, 0x0033, - 0x06a2, 0x06a2, 0x0002, 0x0033, 0x06b4, 0x06b4, 0x0003, 0x032f, - 0x0332, 0x0337, 0x0001, 0x0033, 0x06c6, 0x0003, 0x0033, 0x06d0, - 0x06e6, 0x06fa, 0x0002, 0x033a, 0x033e, 0x0002, 0x0033, 0x071f, - 0x070d, 0x0002, 0x0033, 0x0745, 0x0732, 0x0003, 0x0346, 0x0349, - 0x034e, 0x0001, 0x0024, 0x0018, 0x0003, 0x0033, 0x0759, 0x076c, - 0x077d, 0x0002, 0x0351, 0x0355, 0x0002, 0x0033, 0x078d, 0x078d, - // Entry 23440 - 2347F - 0x0002, 0x0033, 0x079d, 0x079d, 0x0003, 0x035d, 0x0360, 0x0365, - 0x0001, 0x0024, 0x0018, 0x0003, 0x0033, 0x0759, 0x076c, 0x077d, - 0x0002, 0x0368, 0x036c, 0x0002, 0x0033, 0x078d, 0x078d, 0x0002, - 0x0033, 0x079d, 0x079d, 0x0003, 0x0374, 0x0377, 0x037c, 0x0001, - 0x0024, 0x0382, 0x0003, 0x0033, 0x07ad, 0x07bf, 0x07d0, 0x0002, - 0x037f, 0x0383, 0x0002, 0x0033, 0x07ee, 0x07df, 0x0002, 0x0033, - 0x080d, 0x07fe, 0x0003, 0x038b, 0x038e, 0x0393, 0x0001, 0x0024, - 0x0382, 0x0003, 0x0033, 0x07ad, 0x07bf, 0x07d0, 0x0002, 0x0396, - // Entry 23480 - 234BF - 0x039a, 0x0002, 0x0033, 0x07ee, 0x07ee, 0x0002, 0x0033, 0x080d, - 0x07fe, 0x0003, 0x03a2, 0x03a5, 0x03aa, 0x0001, 0x0029, 0x016c, - 0x0003, 0x0033, 0x07ad, 0x07bf, 0x07d0, 0x0002, 0x03ad, 0x03b1, - 0x0002, 0x0033, 0x0827, 0x081d, 0x0002, 0x0033, 0x083c, 0x0832, - 0x0003, 0x03b9, 0x03bc, 0x03c3, 0x0001, 0x0024, 0x042f, 0x0005, - 0x0033, 0x0853, 0x085b, 0x0862, 0x0847, 0x086c, 0x0002, 0x03c6, - 0x03ca, 0x0002, 0x0033, 0x0889, 0x087b, 0x0002, 0x0033, 0x08a7, - 0x0898, 0x0003, 0x03d2, 0x03d5, 0x03dc, 0x0001, 0x0024, 0x042f, - // Entry 234C0 - 234FF - 0x0005, 0x0033, 0x0853, 0x085b, 0x0862, 0x0847, 0x086c, 0x0002, - 0x03df, 0x03e3, 0x0002, 0x0033, 0x0889, 0x087b, 0x0002, 0x0033, - 0x08a7, 0x08a7, 0x0003, 0x03eb, 0x03ee, 0x03f5, 0x0001, 0x0029, - 0x008f, 0x0005, 0x0033, 0x0853, 0x085b, 0x0862, 0x0847, 0x086c, - 0x0002, 0x03f8, 0x03fc, 0x0002, 0x0033, 0x08c1, 0x08b8, 0x0002, - 0x0033, 0x08d5, 0x08cb, 0x0001, 0x0402, 0x0001, 0x0033, 0x08e1, - 0x0002, 0x0000, 0x0408, 0x0003, 0x0033, 0x08eb, 0x08fe, 0x091a, - 0x0002, 0x0000, 0x0410, 0x0003, 0x0033, 0x092a, 0x0939, 0x0945, - // Entry 23500 - 2353F - 0x0002, 0x0000, 0x0418, 0x0003, 0x0033, 0x092a, 0x0939, 0x0951, - 0x0002, 0x0000, 0x0420, 0x0003, 0x0033, 0x095a, 0x096d, 0x0989, - 0x0002, 0x0000, 0x0428, 0x0003, 0x0033, 0x0999, 0x09a9, 0x09b6, - 0x0002, 0x0000, 0x0430, 0x0003, 0x0033, 0x09c3, 0x09a9, 0x09d3, - 0x0002, 0x0000, 0x0438, 0x0003, 0x0033, 0x09dd, 0x09f3, 0x0a12, - 0x0002, 0x0000, 0x0440, 0x0003, 0x0033, 0x0a25, 0x0a35, 0x0a42, - 0x0002, 0x0000, 0x0448, 0x0003, 0x0033, 0x0a25, 0x0a35, 0x0a55, - 0x0002, 0x0000, 0x0450, 0x0003, 0x0033, 0x0a5f, 0x0a7f, 0x0a9e, - // Entry 23540 - 2357F - 0x0002, 0x0000, 0x0458, 0x0003, 0x0033, 0x0abb, 0x0acb, 0x0ad8, - 0x0002, 0x0000, 0x0460, 0x0003, 0x0033, 0x0abb, 0x0acb, 0x0aeb, - 0x0002, 0x0000, 0x0468, 0x0003, 0x0033, 0x0af5, 0x0b13, 0x0b30, - 0x0002, 0x0000, 0x0470, 0x0003, 0x0033, 0x0b4b, 0x0b5a, 0x0b66, - 0x0002, 0x0000, 0x0478, 0x0003, 0x0033, 0x0b4b, 0x0b5a, 0x0b78, - 0x0002, 0x0000, 0x0480, 0x0003, 0x0033, 0x0b81, 0x0b95, 0x0ba5, - 0x0002, 0x0000, 0x0488, 0x0003, 0x0033, 0x0bb6, 0x0bc6, 0x0bcf, - 0x0002, 0x0000, 0x0490, 0x0003, 0x0033, 0x0bb6, 0x0bc6, 0x0bcf, - // Entry 23580 - 235BF - 0x0002, 0x0000, 0x0498, 0x0003, 0x0033, 0x0bdc, 0x0bf0, 0x0c00, - 0x0002, 0x0000, 0x04a0, 0x0003, 0x0033, 0x0c11, 0x0c20, 0x0c28, - 0x0002, 0x0000, 0x04a8, 0x0003, 0x0033, 0x0c11, 0x0c20, 0x0c28, - 0x0001, 0x04af, 0x0001, 0x0033, 0x0c34, 0x0003, 0x04b6, 0x0000, - 0x04b9, 0x0001, 0x0033, 0x0c3e, 0x0002, 0x04bc, 0x04c0, 0x0002, - 0x0033, 0x0c60, 0x0c4a, 0x0002, 0x0033, 0x0c8e, 0x0c78, 0x0003, - 0x04c8, 0x0000, 0x04cb, 0x0001, 0x0033, 0x0ca6, 0x0002, 0x04ce, - 0x04d2, 0x0002, 0x0033, 0x0cac, 0x0cac, 0x0002, 0x0033, 0x0cbc, - // Entry 235C0 - 235FF - 0x0cbc, 0x0003, 0x04da, 0x0000, 0x04dd, 0x0001, 0x0033, 0x0ca6, - 0x0002, 0x04e0, 0x04e4, 0x0002, 0x0033, 0x0ccc, 0x0ccc, 0x0002, - 0x0033, 0x0cd7, 0x0cd7, 0x0003, 0x04ec, 0x0000, 0x04ef, 0x0001, - 0x0033, 0x0ce2, 0x0002, 0x04f2, 0x04f6, 0x0002, 0x0033, 0x0cfe, - 0x0ceb, 0x0002, 0x0033, 0x0d25, 0x0d12, 0x0003, 0x04fe, 0x0000, - 0x0501, 0x0001, 0x0033, 0x0d39, 0x0002, 0x0504, 0x0508, 0x0002, - 0x0033, 0x0d3f, 0x0d3f, 0x0002, 0x0033, 0x0d4f, 0x0d4f, 0x0003, - 0x0510, 0x0000, 0x0513, 0x0001, 0x0033, 0x0d39, 0x0002, 0x0516, - // Entry 23600 - 2363F - 0x051a, 0x0002, 0x0033, 0x0d5f, 0x0d5f, 0x0002, 0x0033, 0x0d6a, - 0x0d6a, 0x0003, 0x0522, 0x0525, 0x0529, 0x0001, 0x0033, 0x0d75, - 0x0002, 0x0033, 0xffff, 0x0d7e, 0x0002, 0x052c, 0x0530, 0x0002, - 0x0033, 0x0d97, 0x0d84, 0x0002, 0x0033, 0x0dbe, 0x0dab, 0x0003, - 0x0538, 0x0000, 0x053b, 0x0001, 0x0001, 0x07d3, 0x0002, 0x053e, - 0x0542, 0x0002, 0x0033, 0x0dd2, 0x0dd2, 0x0002, 0x0033, 0x0de1, - 0x0de1, 0x0003, 0x054a, 0x0000, 0x054d, 0x0001, 0x0001, 0x07d3, - 0x0002, 0x0550, 0x0554, 0x0002, 0x0033, 0x0df0, 0x0df0, 0x0002, - // Entry 23640 - 2367F - 0x0033, 0x0dfa, 0x0dfa, 0x0001, 0x055a, 0x0001, 0x0033, 0x0e04, - 0x0004, 0x0562, 0x0567, 0x056c, 0x057b, 0x0003, 0x0000, 0x1dc7, - 0x2936, 0x293d, 0x0003, 0x0000, 0x1de0, 0x2941, 0x2952, 0x0002, - 0x0000, 0x056f, 0x0003, 0x0000, 0x0576, 0x0573, 0x0001, 0x0033, - 0x0e0f, 0x0003, 0x0033, 0xffff, 0x0e2f, 0x0e47, 0x0002, 0x0000, - 0x057e, 0x0003, 0x0618, 0x06ae, 0x0582, 0x0094, 0x0033, 0x0e5e, - 0x0e6e, 0x0e80, 0x0e94, 0x0ebc, 0x0f08, 0x0f41, 0x0fad, 0x103f, - 0x10bf, 0x1117, 0x116b, 0x11a6, 0x11dd, 0x121b, 0x1266, 0x12b6, - // Entry 23680 - 236BF - 0x1304, 0x1365, 0x13c7, 0x1436, 0x1493, 0x14e8, 0x1531, 0x1576, - 0x15aa, 0x15b6, 0x15d4, 0x1606, 0x1629, 0x166b, 0x168f, 0x16c8, - 0x16fd, 0x173b, 0x176f, 0x177f, 0x179f, 0x17e3, 0x1829, 0x1853, - 0x185f, 0x187b, 0x18a3, 0x18d7, 0x18f6, 0x1942, 0x197e, 0x19ad, - 0x19fc, 0x1a49, 0x1a81, 0x1a9c, 0x1add, 0x1aed, 0x1b09, 0x1b39, - 0x1b50, 0x1b7e, 0x1bd7, 0x1c19, 0x1c36, 0x1c5f, 0x1cb1, 0x1cee, - 0x1d16, 0x1d24, 0x1d36, 0x1d46, 0x1d5c, 0x1d74, 0x1d98, 0x1dd3, - 0x1e0f, 0x1e49, 0x1e95, 0x1ee5, 0x1eff, 0x1f25, 0x1f51, 0x1f73, - // Entry 236C0 - 236FF - 0x1fa9, 0x1fb9, 0x1fe1, 0x201d, 0x2043, 0x2071, 0x207f, 0x2091, - 0x20af, 0x20d7, 0x210b, 0x2136, 0x2199, 0x220a, 0x224c, 0x2278, - 0x2286, 0x2293, 0x22b9, 0x2314, 0x236a, 0x23a6, 0x23b1, 0x23e4, - 0x243f, 0x2485, 0x24bb, 0x24eb, 0x24f6, 0x2521, 0x255c, 0x2597, - 0x25cf, 0x2602, 0x2654, 0x2663, 0xffff, 0x2670, 0x267f, 0x269f, - 0x26df, 0x2718, 0x2744, 0x2759, 0x2768, 0x277b, 0x2790, 0x279e, - 0x27aa, 0x27c6, 0x27f2, 0x2806, 0x2820, 0x284a, 0x286a, 0x28a4, - 0x28c1, 0x2905, 0x294b, 0x297d, 0x29a2, 0x29eb, 0x2a1d, 0x2a2a, - // Entry 23700 - 2373F - 0x2a3d, 0x2a72, 0x2ab7, 0x0094, 0x0033, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0ea8, 0x0ef8, 0x0f34, 0x0f81, 0x1011, 0x10a7, 0x10fb, - 0x115b, 0x1197, 0x11d0, 0x120b, 0x124f, 0x12a8, 0x12e6, 0x134c, - 0x13a3, 0x141b, 0x1478, 0x14d5, 0x1522, 0x1565, 0xffff, 0xffff, - 0x15c5, 0xffff, 0x1613, 0xffff, 0x1681, 0x16bd, 0x16f2, 0x1727, - 0xffff, 0xffff, 0x178f, 0x17d3, 0x181e, 0xffff, 0xffff, 0xffff, - 0x1893, 0xffff, 0x18e4, 0x192e, 0xffff, 0x1999, 0x19e9, 0x1a38, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1afb, 0xffff, 0xffff, 0x1b67, - // Entry 23740 - 2377F - 0x1bc0, 0xffff, 0xffff, 0x1c44, 0x1ca1, 0x1ce3, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1d8c, 0x1dc2, 0x1e01, 0x1e3d, - 0x1e73, 0xffff, 0xffff, 0x1f19, 0xffff, 0x1f5e, 0xffff, 0xffff, - 0x1fc9, 0xffff, 0x2032, 0xffff, 0xffff, 0xffff, 0xffff, 0x20c7, - 0xffff, 0x2118, 0x217e, 0x21f5, 0x2240, 0xffff, 0xffff, 0xffff, - 0x229e, 0x22fb, 0x2352, 0xffff, 0xffff, 0x23c7, 0x242a, 0x2475, - 0x24ad, 0xffff, 0xffff, 0x2513, 0x2551, 0x2586, 0xffff, 0x25df, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x268d, 0x26cf, 0x270b, - // Entry 23780 - 237BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27b9, - 0xffff, 0xffff, 0x2815, 0xffff, 0x2856, 0xffff, 0x28b2, 0x28f3, - 0x293b, 0xffff, 0x298d, 0x29d8, 0xffff, 0xffff, 0xffff, 0x2a5f, - 0x2aa0, 0x0094, 0x0033, 0xffff, 0xffff, 0xffff, 0xffff, 0x0edb, - 0x0f1f, 0x0f62, 0x0fe0, 0x1074, 0x10de, 0x113a, 0x1182, 0x11bc, - 0x11f5, 0x1236, 0x1288, 0x12cf, 0x1329, 0x1385, 0x13f2, 0x1458, - 0x14b5, 0x1506, 0x154c, 0x1591, 0xffff, 0xffff, 0x15ee, 0xffff, - 0x164b, 0xffff, 0x16a7, 0x16de, 0x1713, 0x1756, 0xffff, 0xffff, - // Entry 237C0 - 237FF - 0x17ba, 0x17ff, 0x183f, 0xffff, 0xffff, 0xffff, 0x18be, 0xffff, - 0x1913, 0x1961, 0xffff, 0x19cc, 0x1a1b, 0x1a66, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1b22, 0xffff, 0xffff, 0x1ba0, 0x1bf9, 0xffff, - 0xffff, 0x1c81, 0x1ccb, 0x1d03, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1dae, 0x1deb, 0x1e27, 0x1e5f, 0x1ebe, 0xffff, - 0xffff, 0x1f3c, 0xffff, 0x1f8f, 0xffff, 0xffff, 0x2000, 0xffff, - 0x205b, 0xffff, 0xffff, 0xffff, 0xffff, 0x20f2, 0xffff, 0x215b, - 0x21c8, 0x2226, 0x2263, 0xffff, 0xffff, 0xffff, 0x22db, 0x2334, - // Entry 23800 - 2383F - 0x2389, 0xffff, 0xffff, 0x2408, 0x245b, 0x249a, 0x24d4, 0xffff, - 0xffff, 0x253a, 0x2572, 0x25b4, 0xffff, 0x262c, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x26b8, 0x26f6, 0x272f, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27dd, 0xffff, 0xffff, - 0x2836, 0xffff, 0x2888, 0xffff, 0x28db, 0x2921, 0x2965, 0xffff, - 0x29be, 0x2a05, 0xffff, 0xffff, 0xffff, 0x2a8a, 0x2ad5, 0x0003, - 0x0004, 0x02ca, 0x06b0, 0x0012, 0x0017, 0x0024, 0x0000, 0x0000, - 0x0000, 0x0000, 0x003c, 0x0067, 0x028a, 0x0000, 0x0297, 0x0000, - // Entry 23840 - 2387F - 0x0000, 0x0000, 0x0000, 0x02a4, 0x0000, 0x02bc, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, - 0x0001, 0x0005, 0x07fd, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x002b, 0x0004, 0x0039, 0x0033, 0x0030, 0x0036, 0x0001, - 0x0025, 0x00da, 0x0001, 0x0034, 0x0000, 0x0001, 0x0034, 0x000a, - 0x0001, 0x0014, 0x146e, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0045, 0x0000, 0x0056, 0x0004, 0x0053, 0x004d, 0x004a, - 0x0050, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0000, 0x1e0b, 0x0001, - // Entry 23880 - 238BF - 0x0000, 0x1e17, 0x0001, 0x001c, 0x14e1, 0x0004, 0x0064, 0x005e, - 0x005b, 0x0061, 0x0001, 0x0034, 0x0013, 0x0001, 0x0034, 0x0013, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0070, - 0x00d5, 0x012c, 0x0161, 0x0232, 0x0257, 0x0268, 0x0279, 0x0002, - 0x0073, 0x00a4, 0x0003, 0x0077, 0x0086, 0x0095, 0x000d, 0x0005, - 0xffff, 0x1026, 0x229c, 0x21be, 0x22a0, 0x22a4, 0x22a8, 0x22ac, - 0x22b0, 0x1124, 0x22b4, 0x22b8, 0x22bc, 0x000d, 0x0000, 0xffff, - 0x2281, 0x22e6, 0x2931, 0x2382, 0x2931, 0x2281, 0x228e, 0x2382, - // Entry 238C0 - 238FF - 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0034, 0xffff, 0x0022, - 0x002a, 0x0033, 0x0039, 0x0040, 0x0047, 0x004e, 0x0055, 0x005c, - 0x0066, 0x006e, 0x0077, 0x0003, 0x00a8, 0x00b7, 0x00c6, 0x000d, - 0x0005, 0xffff, 0x1026, 0x229c, 0x21be, 0x22a0, 0x22a4, 0x22a8, - 0x22ac, 0x22b0, 0x1124, 0x22b4, 0x22b8, 0x22bc, 0x000d, 0x0000, - 0xffff, 0x2281, 0x22e6, 0x2931, 0x2382, 0x2931, 0x2281, 0x228e, - 0x2382, 0x2481, 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0034, 0xffff, - 0x0022, 0x002a, 0x0033, 0x0039, 0x0040, 0x0047, 0x004e, 0x0055, - // Entry 23900 - 2393F - 0x005c, 0x0066, 0x006e, 0x0077, 0x0002, 0x00d8, 0x0102, 0x0005, - 0x00de, 0x00e7, 0x00f9, 0x0000, 0x00f0, 0x0007, 0x0005, 0x123c, - 0x21ba, 0x21be, 0x22c0, 0x22c4, 0x22c8, 0x21ce, 0x0007, 0x0000, - 0x22f0, 0x228e, 0x2931, 0x2931, 0x2281, 0x2485, 0x2481, 0x0007, - 0x0005, 0x123c, 0x21ba, 0x21be, 0x22c0, 0x22c4, 0x22c8, 0x21ce, - 0x0007, 0x0034, 0x0080, 0x0089, 0x0091, 0x009a, 0x00a5, 0x00ae, - 0x00b7, 0x0005, 0x0108, 0x0111, 0x0123, 0x0000, 0x011a, 0x0007, - 0x0005, 0x123c, 0x21ba, 0x21be, 0x22c0, 0x22c4, 0x22c8, 0x21ce, - // Entry 23940 - 2397F - 0x0007, 0x0000, 0x22f0, 0x228e, 0x2931, 0x2931, 0x2281, 0x2485, - 0x2481, 0x0007, 0x0005, 0x123c, 0x21ba, 0x21be, 0x22c0, 0x22c4, - 0x22c8, 0x21ce, 0x0007, 0x0034, 0x0080, 0x0089, 0x0091, 0x009a, - 0x00a5, 0x00ae, 0x00b7, 0x0002, 0x012f, 0x0148, 0x0003, 0x0133, - 0x013a, 0x0141, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, - 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0034, 0xffff, 0x00be, 0x00cc, 0x00da, 0x00e8, 0x0003, - 0x014c, 0x0153, 0x015a, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, - // Entry 23980 - 239BF - 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0034, 0xffff, 0x00be, 0x00cc, 0x00da, 0x00e8, - 0x0002, 0x0164, 0x01cb, 0x0003, 0x0168, 0x0189, 0x01aa, 0x0008, - 0x0174, 0x017a, 0x0171, 0x017d, 0x0180, 0x0183, 0x0186, 0x0177, - 0x0001, 0x0034, 0x00f6, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0034, - 0x0101, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0034, 0x010d, 0x0001, - 0x0034, 0x0118, 0x0001, 0x0034, 0x0127, 0x0001, 0x0034, 0x012f, - 0x0008, 0x0195, 0x019b, 0x0192, 0x019e, 0x01a1, 0x01a4, 0x01a7, - // Entry 239C0 - 239FF - 0x0198, 0x0001, 0x0034, 0x00f6, 0x0001, 0x0029, 0x0080, 0x0001, - 0x0034, 0x0101, 0x0001, 0x0026, 0x0dcb, 0x0001, 0x0034, 0x0138, - 0x0001, 0x0034, 0x0140, 0x0001, 0x0034, 0x014b, 0x0001, 0x0034, - 0x0150, 0x0008, 0x01b6, 0x01bc, 0x01b3, 0x01bf, 0x01c2, 0x01c5, - 0x01c8, 0x01b9, 0x0001, 0x0034, 0x00f6, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0034, 0x0101, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0034, - 0x010d, 0x0001, 0x0034, 0x0118, 0x0001, 0x0034, 0x0127, 0x0001, - 0x0034, 0x012f, 0x0003, 0x01cf, 0x01f0, 0x0211, 0x0008, 0x01db, - // Entry 23A00 - 23A3F - 0x01e1, 0x01d8, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01de, 0x0001, - 0x0034, 0x00f6, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0034, 0x0101, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0034, 0x0138, 0x0001, 0x0034, - 0x0140, 0x0001, 0x0034, 0x014b, 0x0001, 0x0034, 0x0150, 0x0008, - 0x01fc, 0x0202, 0x01f9, 0x0205, 0x0208, 0x020b, 0x020e, 0x01ff, - 0x0001, 0x0034, 0x00f6, 0x0001, 0x0029, 0x0080, 0x0001, 0x0034, - 0x0101, 0x0001, 0x0026, 0x0dcb, 0x0001, 0x0034, 0x0138, 0x0001, - 0x0034, 0x0140, 0x0001, 0x0034, 0x014b, 0x0001, 0x0034, 0x0150, - // Entry 23A40 - 23A7F - 0x0008, 0x021d, 0x0223, 0x021a, 0x0226, 0x0229, 0x022c, 0x022f, - 0x0220, 0x0001, 0x0034, 0x00f6, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0034, 0x0101, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0034, 0x0138, - 0x0001, 0x0034, 0x0140, 0x0001, 0x0034, 0x014b, 0x0001, 0x0034, - 0x0150, 0x0003, 0x0241, 0x024c, 0x0236, 0x0002, 0x0239, 0x023d, - 0x0002, 0x0034, 0x0156, 0x0177, 0x0002, 0x0034, 0x0164, 0x0183, - 0x0002, 0x0244, 0x0248, 0x0002, 0x0029, 0x0269, 0x0275, 0x0002, - 0x0034, 0x018f, 0x0196, 0x0002, 0x024f, 0x0253, 0x0002, 0x0010, - // Entry 23A80 - 23ABF - 0x02e7, 0x02ee, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0265, - 0x025f, 0x025c, 0x0262, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, - 0x1fb0, 0x0001, 0x0001, 0x0037, 0x0001, 0x0014, 0x146e, 0x0004, - 0x0276, 0x0270, 0x026d, 0x0273, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x0287, 0x0281, 0x027e, 0x0284, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0290, 0x0001, - // Entry 23AC0 - 23AFF - 0x0292, 0x0001, 0x0294, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x029d, 0x0001, 0x029f, 0x0001, 0x02a1, - 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x02ab, 0x0004, 0x02b9, 0x02b3, 0x02b0, 0x02b6, 0x0001, - 0x0001, 0x1f7d, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x0000, 0x1e17, - 0x0001, 0x001c, 0x14e1, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, - 0x02c2, 0x0001, 0x02c4, 0x0001, 0x02c6, 0x0002, 0x0034, 0x019b, - 0x01ab, 0x0040, 0x030b, 0x0000, 0x0000, 0x0310, 0x0327, 0x0339, - // Entry 23B00 - 23B3F - 0x034b, 0x0362, 0x0379, 0x0390, 0x03a7, 0x03b9, 0x03cb, 0x03e6, - 0x03fc, 0x0000, 0x0000, 0x0000, 0x0412, 0x042b, 0x043d, 0x0000, - 0x0000, 0x0000, 0x044f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0454, 0x0468, 0x047c, 0x0490, 0x04a4, 0x04b8, 0x04cc, 0x04e0, - 0x04f4, 0x0508, 0x051c, 0x0530, 0x0544, 0x0558, 0x056c, 0x0580, - 0x0594, 0x05a8, 0x05bc, 0x05d0, 0x05e4, 0x0000, 0x05f8, 0x0000, - 0x05fd, 0x0613, 0x0625, 0x0637, 0x064d, 0x065f, 0x0671, 0x0687, - 0x0699, 0x06ab, 0x0001, 0x030d, 0x0001, 0x0001, 0x0040, 0x0003, - // Entry 23B40 - 23B7F - 0x0314, 0x0317, 0x031c, 0x0001, 0x0034, 0x01b2, 0x0003, 0x0034, - 0x01b7, 0x01c3, 0x01d0, 0x0002, 0x031f, 0x0323, 0x0002, 0x0034, - 0x01eb, 0x01de, 0x0002, 0x0034, 0x0204, 0x01f8, 0x0003, 0x032b, - 0x0000, 0x032e, 0x0001, 0x0034, 0x01b2, 0x0002, 0x0331, 0x0335, - 0x0002, 0x0034, 0x01eb, 0x01de, 0x0002, 0x0034, 0x0204, 0x01f8, - 0x0003, 0x033d, 0x0000, 0x0340, 0x0001, 0x0034, 0x01b2, 0x0002, - 0x0343, 0x0347, 0x0002, 0x0034, 0x01eb, 0x01de, 0x0002, 0x0034, - 0x0204, 0x01f8, 0x0003, 0x034f, 0x0352, 0x0357, 0x0001, 0x0005, - // Entry 23B80 - 23BBF - 0x1c6d, 0x0003, 0x0034, 0x0210, 0x0221, 0x0232, 0x0002, 0x035a, - 0x035e, 0x0002, 0x0034, 0x0257, 0x0245, 0x0002, 0x0034, 0x027a, - 0x0269, 0x0003, 0x0366, 0x0369, 0x036e, 0x0001, 0x000b, 0x0c78, - 0x0003, 0x0034, 0x028b, 0x0298, 0x02a5, 0x0002, 0x0371, 0x0375, - 0x0002, 0x0034, 0x02b4, 0x02b4, 0x0002, 0x0034, 0x02c2, 0x02c2, - 0x0003, 0x037d, 0x0380, 0x0385, 0x0001, 0x000b, 0x0c78, 0x0003, - 0x0034, 0x028b, 0x0298, 0x02a5, 0x0002, 0x0388, 0x038c, 0x0002, - 0x0034, 0x02b4, 0x02b4, 0x0002, 0x0034, 0x02c2, 0x02c2, 0x0003, - // Entry 23BC0 - 23BFF - 0x0394, 0x0397, 0x039c, 0x0001, 0x0034, 0x02cf, 0x0003, 0x0034, - 0x02d4, 0x02e0, 0x02ec, 0x0002, 0x039f, 0x03a3, 0x0002, 0x0034, - 0x0307, 0x02fa, 0x0002, 0x0034, 0x0320, 0x0314, 0x0003, 0x03ab, - 0x0000, 0x03ae, 0x0001, 0x0034, 0x02cf, 0x0002, 0x03b1, 0x03b5, - 0x0002, 0x0034, 0x0307, 0x02fa, 0x0002, 0x0034, 0x0320, 0x0314, - 0x0003, 0x03bd, 0x0000, 0x03c0, 0x0001, 0x0034, 0x02cf, 0x0002, - 0x03c3, 0x03c7, 0x0002, 0x0034, 0x0307, 0x02fa, 0x0002, 0x0034, - 0x0320, 0x0314, 0x0004, 0x03d0, 0x03d3, 0x03d8, 0x03e3, 0x0001, - // Entry 23C00 - 23C3F - 0x0034, 0x032c, 0x0003, 0x0034, 0x0336, 0x0347, 0x0358, 0x0002, - 0x03db, 0x03df, 0x0002, 0x0034, 0x037d, 0x036b, 0x0002, 0x0034, - 0x03a0, 0x038f, 0x0001, 0x0034, 0x03b1, 0x0004, 0x03eb, 0x0000, - 0x03ee, 0x03f9, 0x0001, 0x0034, 0x03c6, 0x0002, 0x03f1, 0x03f5, - 0x0002, 0x0034, 0x03cc, 0x03cc, 0x0002, 0x0034, 0x03da, 0x03da, - 0x0001, 0x0034, 0x03b1, 0x0004, 0x0401, 0x0000, 0x0404, 0x040f, - 0x0001, 0x0034, 0x03c6, 0x0002, 0x0407, 0x040b, 0x0002, 0x0034, - 0x03cc, 0x03cc, 0x0002, 0x0034, 0x03da, 0x03da, 0x0001, 0x0034, - // Entry 23C40 - 23C7F - 0x03b1, 0x0003, 0x0416, 0x0419, 0x0420, 0x0001, 0x0034, 0x03e7, - 0x0005, 0x0034, 0x03fd, 0x0402, 0x0407, 0x03ee, 0x040e, 0x0002, - 0x0423, 0x0427, 0x0002, 0x0034, 0x0428, 0x0419, 0x0002, 0x0034, - 0x0445, 0x0437, 0x0003, 0x042f, 0x0000, 0x0432, 0x0001, 0x0000, - 0x200e, 0x0002, 0x0435, 0x0439, 0x0002, 0x0034, 0x045d, 0x0453, - 0x0002, 0x0034, 0x0471, 0x0468, 0x0003, 0x0441, 0x0000, 0x0444, - 0x0001, 0x0000, 0x200e, 0x0002, 0x0447, 0x044b, 0x0002, 0x0034, - 0x045d, 0x0453, 0x0002, 0x0034, 0x0471, 0x0468, 0x0001, 0x0451, - // Entry 23C80 - 23CBF - 0x0001, 0x0034, 0x047b, 0x0003, 0x0000, 0x0458, 0x045d, 0x0003, - 0x0034, 0x0492, 0x04a2, 0x04b2, 0x0002, 0x0460, 0x0464, 0x0002, - 0x0034, 0x04d5, 0x04c4, 0x0002, 0x0034, 0x04f7, 0x04e7, 0x0003, - 0x0000, 0x046c, 0x0471, 0x0003, 0x0034, 0x0508, 0x0514, 0x0520, - 0x0002, 0x0474, 0x0478, 0x0002, 0x0034, 0x052e, 0x052e, 0x0002, - 0x0034, 0x053b, 0x053b, 0x0003, 0x0000, 0x0480, 0x0485, 0x0003, - 0x0034, 0x0547, 0x0551, 0x055b, 0x0002, 0x0488, 0x048c, 0x0002, - 0x0034, 0x0567, 0x0567, 0x0002, 0x0034, 0x0573, 0x0573, 0x0003, - // Entry 23CC0 - 23CFF - 0x0000, 0x0494, 0x0499, 0x0003, 0x0034, 0x057e, 0x058d, 0x059c, - 0x0002, 0x049c, 0x04a0, 0x0002, 0x0034, 0x05ad, 0x05ad, 0x0002, - 0x0034, 0x05bd, 0x05bd, 0x0003, 0x0000, 0x04a8, 0x04ad, 0x0003, - 0x0034, 0x05cc, 0x05d8, 0x05e4, 0x0002, 0x04b0, 0x04b4, 0x0002, - 0x0034, 0x05f2, 0x05f2, 0x0002, 0x0034, 0x05ff, 0x05ff, 0x0003, - 0x0000, 0x04bc, 0x04c1, 0x0003, 0x0034, 0x060b, 0x0615, 0x061f, - 0x0002, 0x04c4, 0x04c8, 0x0002, 0x0034, 0x062b, 0x062b, 0x0002, - 0x0034, 0x0637, 0x0637, 0x0003, 0x0000, 0x04d0, 0x04d5, 0x0003, - // Entry 23D00 - 23D3F - 0x0034, 0x0642, 0x0652, 0x0662, 0x0002, 0x04d8, 0x04dc, 0x0002, - 0x0034, 0x0674, 0x0674, 0x0002, 0x0034, 0x0685, 0x0685, 0x0003, - 0x0000, 0x04e4, 0x04e9, 0x0003, 0x0034, 0x0695, 0x06a1, 0x06ad, - 0x0002, 0x04ec, 0x04f0, 0x0002, 0x0034, 0x06bb, 0x06bb, 0x0002, - 0x0034, 0x06c8, 0x06c8, 0x0003, 0x0000, 0x04f8, 0x04fd, 0x0003, - 0x0034, 0x06d4, 0x06de, 0x06e8, 0x0002, 0x0500, 0x0504, 0x0002, - 0x0034, 0x06f4, 0x06f4, 0x0002, 0x0034, 0x0700, 0x0700, 0x0003, - 0x0000, 0x050c, 0x0511, 0x0003, 0x0034, 0x070b, 0x071d, 0x072f, - // Entry 23D40 - 23D7F - 0x0002, 0x0514, 0x0518, 0x0002, 0x0034, 0x0743, 0x0743, 0x0002, - 0x0034, 0x0756, 0x0756, 0x0003, 0x0000, 0x0520, 0x0525, 0x0003, - 0x0034, 0x0768, 0x0774, 0x0780, 0x0002, 0x0528, 0x052c, 0x0002, - 0x0034, 0x078e, 0x078e, 0x0002, 0x0034, 0x079b, 0x079b, 0x0003, - 0x0000, 0x0534, 0x0539, 0x0003, 0x0034, 0x07a7, 0x07b1, 0x07bb, - 0x0002, 0x053c, 0x0540, 0x0002, 0x0034, 0x07c7, 0x07c7, 0x0002, - 0x0034, 0x07d3, 0x07d3, 0x0003, 0x0000, 0x0548, 0x054d, 0x0003, - 0x0034, 0x07de, 0x07ee, 0x07fe, 0x0002, 0x0550, 0x0554, 0x0002, - // Entry 23D80 - 23DBF - 0x0034, 0x0810, 0x0810, 0x0002, 0x0034, 0x0821, 0x0821, 0x0003, - 0x0000, 0x055c, 0x0561, 0x0003, 0x0034, 0x0831, 0x083d, 0x0849, - 0x0002, 0x0564, 0x0568, 0x0002, 0x0034, 0x0857, 0x0857, 0x0002, - 0x0034, 0x0864, 0x0864, 0x0003, 0x0000, 0x0570, 0x0575, 0x0003, - 0x0034, 0x0870, 0x087a, 0x0884, 0x0002, 0x0578, 0x057c, 0x0002, - 0x0034, 0x0890, 0x0890, 0x0002, 0x0034, 0x089c, 0x089c, 0x0003, - 0x0000, 0x0584, 0x0589, 0x0003, 0x0034, 0x08a7, 0x08b7, 0x08c7, - 0x0002, 0x058c, 0x0590, 0x0002, 0x0034, 0x08d9, 0x08d9, 0x0002, - // Entry 23DC0 - 23DFF - 0x0034, 0x08ea, 0x08ea, 0x0003, 0x0000, 0x0598, 0x059d, 0x0003, - 0x0034, 0x08fa, 0x0906, 0x0912, 0x0002, 0x05a0, 0x05a4, 0x0002, - 0x0034, 0x0920, 0x0920, 0x0002, 0x0034, 0x092d, 0x092d, 0x0003, - 0x0000, 0x05ac, 0x05b1, 0x0003, 0x0034, 0x0939, 0x0943, 0x094d, - 0x0002, 0x05b4, 0x05b8, 0x0002, 0x0034, 0x0959, 0x0959, 0x0002, - 0x0034, 0x0965, 0x0965, 0x0003, 0x0000, 0x05c0, 0x05c5, 0x0003, - 0x0034, 0x0970, 0x097e, 0x098c, 0x0002, 0x05c8, 0x05cc, 0x0002, - 0x0034, 0x09ab, 0x099c, 0x0002, 0x0034, 0x09c8, 0x09ba, 0x0003, - // Entry 23E00 - 23E3F - 0x0000, 0x05d4, 0x05d9, 0x0003, 0x0034, 0x09d6, 0x09e2, 0x09ee, - 0x0002, 0x05dc, 0x05e0, 0x0002, 0x0034, 0x09fc, 0x09fc, 0x0002, - 0x0034, 0x0a09, 0x0a09, 0x0003, 0x0000, 0x05e8, 0x05ed, 0x0003, - 0x0034, 0x0a15, 0x0a1f, 0x0a29, 0x0002, 0x05f0, 0x05f4, 0x0002, - 0x0034, 0x0a35, 0x0a35, 0x0002, 0x0034, 0x0a41, 0x0a41, 0x0001, - 0x05fa, 0x0001, 0x0007, 0x07cc, 0x0003, 0x0601, 0x0604, 0x0608, - 0x0001, 0x0034, 0x0a4c, 0x0002, 0x0034, 0xffff, 0x0a50, 0x0002, - 0x060b, 0x060f, 0x0002, 0x0034, 0x0a68, 0x0a5c, 0x0002, 0x0034, - // Entry 23E40 - 23E7F - 0x0a7f, 0x0a74, 0x0003, 0x0617, 0x0000, 0x061a, 0x0001, 0x0006, - 0x041e, 0x0002, 0x061d, 0x0621, 0x0002, 0x0034, 0x0a8a, 0x0a8a, - 0x0002, 0x0034, 0x0a95, 0x0a95, 0x0003, 0x0629, 0x0000, 0x062c, - 0x0001, 0x0000, 0x2143, 0x0002, 0x062f, 0x0633, 0x0002, 0x0034, - 0x0a9f, 0x0a9f, 0x0002, 0x0034, 0x0aa9, 0x0aa9, 0x0003, 0x063b, - 0x063e, 0x0642, 0x0001, 0x001c, 0x0b08, 0x0002, 0x0034, 0xffff, - 0x0ab2, 0x0002, 0x0645, 0x0649, 0x0002, 0x0034, 0x0acf, 0x0ac0, - 0x0002, 0x0034, 0x0aec, 0x0ade, 0x0003, 0x0651, 0x0000, 0x0654, - // Entry 23E80 - 23EBF - 0x0001, 0x0001, 0x075a, 0x0002, 0x0657, 0x065b, 0x0002, 0x0034, - 0x0afa, 0x0afa, 0x0002, 0x0034, 0x0b07, 0x0b07, 0x0003, 0x0663, - 0x0000, 0x0666, 0x0001, 0x0000, 0x1f9a, 0x0002, 0x0669, 0x066d, - 0x0002, 0x0034, 0x0b13, 0x0b13, 0x0002, 0x0034, 0x0b1f, 0x0b1f, - 0x0003, 0x0675, 0x0678, 0x067c, 0x0001, 0x0034, 0x0b2a, 0x0002, - 0x0034, 0xffff, 0x0a4c, 0x0002, 0x067f, 0x0683, 0x0002, 0x0034, - 0x0b42, 0x0b32, 0x0002, 0x0034, 0x0b61, 0x0b52, 0x0003, 0x068b, - 0x0000, 0x068e, 0x0001, 0x001b, 0x0a96, 0x0002, 0x0691, 0x0695, - // Entry 23EC0 - 23EFF - 0x0002, 0x0034, 0x0b70, 0x0b70, 0x0002, 0x0034, 0x0b7d, 0x0b7d, - 0x0003, 0x069d, 0x0000, 0x06a0, 0x0001, 0x0000, 0x2002, 0x0002, - 0x06a3, 0x06a7, 0x0002, 0x0034, 0x0b89, 0x0b89, 0x0002, 0x0034, - 0x0b93, 0x0b93, 0x0001, 0x06ad, 0x0001, 0x0034, 0x0b9c, 0x0004, - 0x06b5, 0x06ba, 0x06bf, 0x06ce, 0x0003, 0x0000, 0x1dc7, 0x2936, - 0x293d, 0x0003, 0x0034, 0x0ba8, 0x0bb0, 0x0bc0, 0x0002, 0x0000, - 0x06c2, 0x0003, 0x0000, 0x06c9, 0x06c6, 0x0001, 0x0034, 0x0bd2, - 0x0003, 0x0034, 0xffff, 0x0bee, 0x0c09, 0x0002, 0x0897, 0x06d1, - // Entry 23F00 - 23F3F - 0x0003, 0x076b, 0x0801, 0x06d5, 0x0094, 0x0034, 0x0c23, 0x0c3a, - 0x0c55, 0x0c71, 0x0cad, 0x0d0b, 0x0d54, 0x0d9f, 0x0de3, 0x0e31, - 0x0e8a, 0x0ed2, 0x0f0a, 0x0f3c, 0x0f75, 0x0fd0, 0x1035, 0x1080, - 0x10d8, 0x114a, 0x11c5, 0x1234, 0x129d, 0x12ed, 0x1334, 0x136a, - 0x1379, 0x139b, 0x13cb, 0x13f7, 0x142b, 0x144d, 0x148e, 0x14c7, - 0x1507, 0x153b, 0x1556, 0x157f, 0x15ca, 0x1616, 0x163e, 0x164b, - 0x1665, 0x1691, 0x16d7, 0x1705, 0x1767, 0x17af, 0x17f7, 0x185c, - 0x18ad, 0x18db, 0x18f5, 0x1924, 0x1938, 0x1959, 0x198d, 0x19a5, - // Entry 23F40 - 23F7F - 0x19e4, 0x1a56, 0x1aaa, 0x1ab8, 0x1ae9, 0x1b4a, 0x1b88, 0x1bb0, - 0x1bca, 0x1be4, 0x1bf8, 0x1c16, 0x1c35, 0x1c66, 0x1ca5, 0x1ce2, - 0x1d21, 0x1d73, 0x1dc3, 0x1de0, 0x1e0b, 0x1e33, 0x1e55, 0x1e8b, - 0x1ea0, 0x1ecf, 0x1f01, 0x1f2b, 0x1f59, 0x1f6b, 0x1f7d, 0x1f90, - 0x1fbd, 0x1ff5, 0x2024, 0x2091, 0x20e9, 0x212a, 0x2154, 0x2167, - 0x2174, 0x219c, 0x21f8, 0x2249, 0x227b, 0x2287, 0x22ba, 0x2313, - 0x2355, 0x238e, 0x23c0, 0x23cd, 0x23fb, 0x243b, 0x247b, 0x24b3, - 0x24ef, 0x253d, 0x2550, 0x255f, 0x2570, 0x2580, 0x259f, 0x25dd, - // Entry 23F80 - 23FBF - 0x2616, 0x2640, 0x2655, 0x2666, 0x267f, 0x2699, 0x26aa, 0x26b7, - 0x26d3, 0x26ff, 0x2712, 0x272e, 0x2758, 0x277b, 0x27b5, 0x27d6, - 0x2822, 0x286e, 0x289e, 0x28c3, 0x290a, 0x293c, 0x294a, 0x2963, - 0x2989, 0x29cb, 0x0094, 0x0034, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0c8f, 0x0cf9, 0x0d3f, 0x0d8e, 0x0dd1, 0x0e17, 0x0e75, 0x0ec4, - 0x0efe, 0x0f32, 0x0f60, 0x0faf, 0x1022, 0x106b, 0x10ba, 0x1124, - 0x11a6, 0x1213, 0x1286, 0x12db, 0x1321, 0xffff, 0xffff, 0x138b, - 0xffff, 0x13e5, 0xffff, 0x143b, 0x1481, 0x14b8, 0x14f5, 0xffff, - // Entry 23FC0 - 23FFF - 0xffff, 0x156c, 0x15b5, 0x160a, 0xffff, 0xffff, 0xffff, 0x1676, - 0xffff, 0x16ea, 0x174b, 0xffff, 0x17d9, 0x1843, 0x189e, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1947, 0xffff, 0xffff, 0x19c4, 0x1a34, - 0xffff, 0xffff, 0x1ac9, 0x1b39, 0x1b7c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1c56, 0x1c96, 0x1cd3, 0x1d10, 0x1d53, - 0xffff, 0xffff, 0x1dff, 0xffff, 0x1e42, 0xffff, 0xffff, 0x1ebe, - 0xffff, 0x1f1c, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fa9, 0xffff, - 0x2003, 0x2076, 0x20d7, 0x211d, 0xffff, 0xffff, 0xffff, 0x2182, - // Entry 24000 - 2403F - 0x21e0, 0x2238, 0xffff, 0xffff, 0x229f, 0x2300, 0x2349, 0x237d, - 0xffff, 0xffff, 0x23ea, 0x242d, 0x2467, 0xffff, 0x24d0, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x258f, 0x25cf, 0x2609, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x26c5, 0xffff, - 0xffff, 0x2721, 0xffff, 0x2766, 0xffff, 0x27c3, 0x280c, 0x285e, - 0xffff, 0x28b0, 0x28f9, 0xffff, 0xffff, 0xffff, 0x297a, 0x29b7, - 0x0094, 0x0034, 0xffff, 0xffff, 0xffff, 0xffff, 0x0cd4, 0x0d26, - 0x0d72, 0x0db9, 0x0dfe, 0x0e54, 0x0ea8, 0x0ee9, 0x0f1f, 0x0f4f, - // Entry 24040 - 2407F - 0x0f93, 0x0ffa, 0x1051, 0x109e, 0x10ff, 0x1179, 0x11ed, 0x125e, - 0x12bd, 0x1308, 0x1350, 0xffff, 0xffff, 0x13b4, 0xffff, 0x1412, - 0xffff, 0x1468, 0x14a4, 0x14df, 0x1522, 0xffff, 0xffff, 0x159b, - 0x15e8, 0x162b, 0xffff, 0xffff, 0xffff, 0x16b5, 0xffff, 0x1729, - 0x178c, 0xffff, 0x181e, 0x187e, 0x18c5, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1974, 0xffff, 0xffff, 0x1a0d, 0x1a81, 0xffff, 0xffff, - 0x1b12, 0x1b64, 0x1b9d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1c7f, 0x1cbd, 0x1cfa, 0x1d3b, 0x1d9c, 0xffff, 0xffff, - // Entry 24080 - 240BF - 0x1e20, 0xffff, 0x1e71, 0xffff, 0xffff, 0x1ee9, 0xffff, 0x1f43, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1fda, 0xffff, 0x204e, 0x20b5, - 0x2104, 0x2140, 0xffff, 0xffff, 0xffff, 0x21bf, 0x2219, 0x2263, - 0xffff, 0xffff, 0x22de, 0x232f, 0x236a, 0x23a8, 0xffff, 0xffff, - 0x2415, 0x2452, 0x2498, 0xffff, 0x2517, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x25b8, 0x25f4, 0x262c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x26ea, 0xffff, 0xffff, 0x2744, - 0xffff, 0x2799, 0xffff, 0x27f2, 0x2841, 0x2887, 0xffff, 0x28df, - // Entry 240C0 - 240FF - 0x2924, 0xffff, 0xffff, 0xffff, 0x29a1, 0x29e8, 0x0003, 0x089b, - 0x0901, 0x08ce, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, - // Entry 24100 - 2413F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 24140 - 2417F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - 0x1355, 0xffff, 0x13e3, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0025, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0000, 0x0000, 0x0004, - 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0005, 0x0625, 0x0001, - // Entry 24180 - 241BF - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0013, 0x048d, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002e, 0x0000, - 0x0000, 0x0004, 0x0039, 0x0000, 0x0033, 0x0036, 0x0001, 0x0005, - 0x0773, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0007, 0x0277, 0x0003, - 0x0004, 0x09c3, 0x0d71, 0x0012, 0x0017, 0x003f, 0x0162, 0x01cf, - 0x02c0, 0x0000, 0x032d, 0x0358, 0x059f, 0x0629, 0x069b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0721, 0x092f, 0x09a1, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0020, 0x002e, 0x0000, 0x9006, 0x0003, - // Entry 241C0 - 241FF - 0x0029, 0x0000, 0x0024, 0x0001, 0x0026, 0x0001, 0x0035, 0x0000, - 0x0001, 0x002b, 0x0001, 0x0000, 0x0000, 0x0004, 0x003c, 0x0036, - 0x0033, 0x0039, 0x0001, 0x0035, 0x0007, 0x0001, 0x0035, 0x001c, - 0x0001, 0x0035, 0x002d, 0x0001, 0x0035, 0x002d, 0x000a, 0x004a, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0151, 0x0000, 0x0000, 0x00af, - 0x00c2, 0x0002, 0x004d, 0x007e, 0x0003, 0x0051, 0x0060, 0x006f, - 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, - 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x000d, - // Entry 24200 - 2423F - 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, - 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, - 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, - 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x0003, 0x0082, 0x0091, - 0x00a0, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, - 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, - 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, - 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, - // Entry 24240 - 2427F - 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, - 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x0003, 0x00b3, - 0x00be, 0x00b8, 0x0003, 0x0035, 0xffff, 0xffff, 0x00c6, 0x0004, - 0x0035, 0xffff, 0xffff, 0xffff, 0x00c6, 0x0002, 0x0035, 0xffff, - 0x00c6, 0x0006, 0x00c9, 0x0000, 0x0000, 0x00dc, 0x00fb, 0x013e, - 0x0001, 0x00cb, 0x0001, 0x00cd, 0x000d, 0x0035, 0xffff, 0x00cd, - 0x00d1, 0x00d5, 0x00d9, 0x00dd, 0x00e1, 0x00e5, 0x00e9, 0x00ed, - 0x00f1, 0x00f5, 0x00f9, 0x0001, 0x00de, 0x0001, 0x00e0, 0x0019, - // Entry 24280 - 242BF - 0x0035, 0xffff, 0x00fd, 0x0104, 0x010b, 0x0112, 0x0119, 0x0120, - 0x0127, 0x012e, 0x0135, 0x013c, 0x0143, 0x014a, 0x0151, 0x0158, - 0x015f, 0x0166, 0x016d, 0x0174, 0x017b, 0x0182, 0x0189, 0x0190, - 0x0197, 0x019e, 0x0001, 0x00fd, 0x0001, 0x00ff, 0x003d, 0x0035, - 0xffff, 0x01a5, 0x01ac, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, - 0x01d6, 0x01dd, 0x01e4, 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, - 0x020e, 0x0215, 0x021c, 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, - 0x0246, 0x024d, 0x0254, 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, - // Entry 242C0 - 242FF - 0x027e, 0x0285, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, - 0x02b6, 0x02bd, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, - 0x02ee, 0x02f5, 0x02fc, 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, - 0x0326, 0x032d, 0x0334, 0x033b, 0x0342, 0x0001, 0x0140, 0x0001, - 0x0142, 0x000d, 0x0035, 0xffff, 0x0349, 0x034d, 0x0351, 0x0355, - 0x0359, 0x035d, 0x0361, 0x0365, 0x0369, 0x036d, 0x0371, 0x0375, - 0x0004, 0x015f, 0x0159, 0x0156, 0x015c, 0x0001, 0x0035, 0x0379, - 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, - // Entry 24300 - 2433F - 0x0395, 0x0001, 0x0164, 0x0002, 0x0167, 0x019b, 0x0003, 0x016b, - 0x017b, 0x018b, 0x000e, 0x0035, 0xffff, 0x039b, 0x03a5, 0x03ac, - 0x03b9, 0x03c6, 0x03d0, 0x03e0, 0x03f3, 0x0403, 0x0413, 0x0420, - 0x042d, 0x0437, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x0422, 0x000e, 0x0035, 0xffff, 0x039b, 0x03a5, 0x03ac, - 0x03b9, 0x03c6, 0x03d0, 0x03e0, 0x03f3, 0x0403, 0x0413, 0x0420, - 0x042d, 0x0437, 0x0003, 0x019f, 0x01af, 0x01bf, 0x000e, 0x0035, - // Entry 24340 - 2437F - 0xffff, 0x039b, 0x03a5, 0x03ac, 0x03b9, 0x03c6, 0x03d0, 0x03e0, - 0x03f3, 0x0403, 0x0413, 0x0420, 0x042d, 0x0437, 0x000e, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0035, - 0xffff, 0x039b, 0x03a5, 0x03ac, 0x03b9, 0x03c6, 0x03d0, 0x03e0, - 0x03f3, 0x0403, 0x0413, 0x0420, 0x042d, 0x0437, 0x000a, 0x01da, - 0x0000, 0x0000, 0x0000, 0x0000, 0x02af, 0x0000, 0x0000, 0x0000, - 0x023f, 0x0002, 0x01dd, 0x020e, 0x0003, 0x01e1, 0x01f0, 0x01ff, - // Entry 24380 - 243BF - 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, - 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x000d, - 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, - 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, - 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, - 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x0003, 0x0212, 0x0221, - 0x0230, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, - 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, - // Entry 243C0 - 243FF - 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, - 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, - 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, - 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x0006, 0x0246, - 0x0000, 0x0000, 0x0000, 0x0259, 0x029c, 0x0001, 0x0248, 0x0001, - 0x024a, 0x000d, 0x0035, 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, - 0x00dd, 0x00e1, 0x00e5, 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, - 0x0001, 0x025b, 0x0001, 0x025d, 0x003d, 0x0035, 0xffff, 0x01a5, - // Entry 24400 - 2443F - 0x01ac, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dd, - 0x01e4, 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, 0x020e, 0x0215, - 0x021c, 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, 0x0246, 0x024d, - 0x0254, 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, 0x0285, - 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02b6, 0x02bd, - 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, 0x02ee, 0x02f5, - 0x02fc, 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, 0x0326, 0x032d, - 0x0334, 0x033b, 0x0342, 0x0001, 0x029e, 0x0001, 0x02a0, 0x000d, - // Entry 24440 - 2447F - 0x0035, 0xffff, 0x0349, 0x034d, 0x0351, 0x0355, 0x0359, 0x035d, - 0x0361, 0x0365, 0x0369, 0x036d, 0x0371, 0x0375, 0x0004, 0x02bd, - 0x02b7, 0x02b4, 0x02ba, 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, - 0x0389, 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, 0x0395, 0x0001, - 0x02c2, 0x0002, 0x02c5, 0x02f9, 0x0003, 0x02c9, 0x02d9, 0x02e9, - 0x000e, 0x0035, 0xffff, 0x0441, 0x0451, 0x045e, 0x0468, 0x0475, - 0x047c, 0x048f, 0x049c, 0x04a9, 0x04b6, 0x04bd, 0x04c7, 0x04d4, - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - // Entry 24480 - 244BF - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, - 0x000e, 0x0035, 0xffff, 0x0441, 0x0451, 0x045e, 0x0468, 0x0475, - 0x047c, 0x048f, 0x049c, 0x04a9, 0x04b6, 0x04bd, 0x04c7, 0x04d4, - 0x0003, 0x02fd, 0x030d, 0x031d, 0x000e, 0x0035, 0xffff, 0x0441, - 0x0451, 0x045e, 0x0468, 0x0475, 0x047c, 0x048f, 0x049c, 0x04a9, - 0x04b6, 0x04bd, 0x04c7, 0x04d4, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0035, 0xffff, 0x0441, - // Entry 244C0 - 244FF - 0x0451, 0x045e, 0x0468, 0x0475, 0x047c, 0x048f, 0x049c, 0x04a9, - 0x04b6, 0x04bd, 0x04c7, 0x04d4, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0336, 0x0000, 0x0347, 0x0004, 0x0344, 0x033e, - 0x033b, 0x0341, 0x0001, 0x0035, 0x04e1, 0x0001, 0x0035, 0x04f5, - 0x0001, 0x0035, 0x002d, 0x0001, 0x0035, 0x0503, 0x0004, 0x0355, - 0x034f, 0x034c, 0x0352, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0361, 0x03c6, 0x041d, 0x0452, 0x0547, 0x056c, 0x057d, 0x058e, - // Entry 24500 - 2453F - 0x0002, 0x0364, 0x0395, 0x0003, 0x0368, 0x0377, 0x0386, 0x000d, - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0035, 0xffff, - 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, - 0x0532, 0x0537, 0x053d, 0x0543, 0x0003, 0x0399, 0x03a8, 0x03b7, - 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, - // Entry 24540 - 2457F - 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0035, - 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, - 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x0002, 0x03c9, 0x03f3, - 0x0005, 0x03cf, 0x03d8, 0x03ea, 0x0000, 0x03e1, 0x0007, 0x0035, - 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, 0x055d, 0x0561, 0x0007, - 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, 0x055d, 0x0561, - // Entry 24580 - 245BF - 0x0007, 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, 0x055d, - 0x0561, 0x0007, 0x0035, 0x0565, 0x056f, 0x0579, 0x0583, 0x058d, - 0x0597, 0x05a1, 0x0005, 0x03f9, 0x0402, 0x0414, 0x0000, 0x040b, - 0x0007, 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, 0x055d, - 0x0561, 0x0007, 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, 0x0559, - 0x055d, 0x0561, 0x0007, 0x0035, 0x0549, 0x054d, 0x0551, 0x0555, - 0x0559, 0x055d, 0x0561, 0x0007, 0x0035, 0x0565, 0x056f, 0x0579, - 0x0583, 0x058d, 0x0597, 0x05a1, 0x0002, 0x0420, 0x0439, 0x0003, - // Entry 245C0 - 245FF - 0x0424, 0x042b, 0x0432, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, - 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0035, 0xffff, 0x05ab, 0x05b9, 0x05c7, 0x05d5, - 0x0003, 0x043d, 0x0444, 0x044b, 0x0005, 0x0000, 0xffff, 0x04e3, - 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0035, 0xffff, 0x05ab, 0x05b9, 0x05c7, - 0x05d5, 0x0002, 0x0455, 0x04ce, 0x0003, 0x0459, 0x0480, 0x04a7, - 0x000b, 0x0468, 0x046e, 0x0465, 0x0471, 0x0474, 0x0477, 0x047a, - // Entry 24600 - 2463F - 0x046b, 0x0000, 0x0000, 0x047d, 0x0001, 0x0035, 0x05e3, 0x0001, - 0x0035, 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, - 0x0001, 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, - 0x060a, 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x000b, - 0x048f, 0x0495, 0x048c, 0x0498, 0x049b, 0x049e, 0x04a1, 0x0492, - 0x0000, 0x0000, 0x04a4, 0x0001, 0x0035, 0x05e3, 0x0001, 0x0035, - 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, 0x0001, - 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, 0x060a, - // Entry 24640 - 2467F - 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x000b, 0x04b6, - 0x04bc, 0x04b3, 0x04bf, 0x04c2, 0x04c5, 0x04c8, 0x04b9, 0x0000, - 0x0000, 0x04cb, 0x0001, 0x0035, 0x05e3, 0x0001, 0x0035, 0x05ed, - 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, 0x0001, 0x0035, - 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, 0x060a, 0x0001, - 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x0003, 0x04d2, 0x04f9, - 0x0520, 0x000b, 0x04e1, 0x04e7, 0x04de, 0x04ea, 0x04ed, 0x04f0, - 0x04f3, 0x04e4, 0x0000, 0x0000, 0x04f6, 0x0001, 0x0035, 0x05e3, - // Entry 24680 - 246BF - 0x0001, 0x0035, 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, - 0x05fb, 0x0001, 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, - 0x0035, 0x060a, 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, - 0x000b, 0x0508, 0x050e, 0x0505, 0x0511, 0x0514, 0x0517, 0x051a, - 0x050b, 0x0000, 0x0000, 0x051d, 0x0001, 0x0035, 0x05e3, 0x0001, - 0x0035, 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, - 0x0001, 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, - 0x060a, 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x000b, - // Entry 246C0 - 246FF - 0x052f, 0x0535, 0x052c, 0x0538, 0x053b, 0x053e, 0x0541, 0x0532, - 0x0000, 0x0000, 0x0544, 0x0001, 0x0035, 0x05e3, 0x0001, 0x0035, - 0x05ed, 0x0001, 0x0035, 0x05f4, 0x0001, 0x0035, 0x05fb, 0x0001, - 0x0035, 0x0602, 0x0001, 0x0035, 0x0606, 0x0001, 0x0035, 0x060a, - 0x0001, 0x0035, 0x0611, 0x0001, 0x0035, 0x0615, 0x0003, 0x0556, - 0x0561, 0x054b, 0x0002, 0x054e, 0x0552, 0x0002, 0x0035, 0x061c, - 0x0636, 0x0002, 0x0035, 0x0626, 0x063d, 0x0002, 0x0559, 0x055d, - 0x0002, 0x0035, 0x061c, 0x0636, 0x0002, 0x0035, 0x0626, 0x063d, - // Entry 24700 - 2473F - 0x0002, 0x0564, 0x0568, 0x0002, 0x0009, 0x0078, 0x5433, 0x0002, - 0x0000, 0x04f5, 0x04f9, 0x0004, 0x057a, 0x0574, 0x0571, 0x0577, - 0x0001, 0x0035, 0x064a, 0x0001, 0x0035, 0x065b, 0x0001, 0x001c, - 0x0596, 0x0001, 0x001c, 0x0596, 0x0004, 0x058b, 0x0585, 0x0582, - 0x0588, 0x0001, 0x0035, 0x0668, 0x0001, 0x0005, 0x008f, 0x0001, - 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x059c, 0x0596, - 0x0593, 0x0599, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, 0x05a6, - // Entry 24740 - 2477F - 0x0000, 0x0000, 0x0000, 0x0611, 0x0618, 0x0002, 0x05a9, 0x05dd, - 0x0003, 0x05ad, 0x05bd, 0x05cd, 0x000e, 0x0035, 0x06d3, 0x067c, - 0x0689, 0x0696, 0x06a3, 0x06b0, 0x06bd, 0x06c9, 0x06e0, 0x06ea, - 0x06f4, 0x06fe, 0x0708, 0x070f, 0x000e, 0x0000, 0x003f, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x0422, 0x000e, 0x0035, 0x06d3, 0x067c, - 0x0689, 0x0696, 0x06a3, 0x06b0, 0x06bd, 0x06c9, 0x06e0, 0x06ea, - 0x06f4, 0x06fe, 0x0708, 0x070f, 0x0003, 0x05e1, 0x05f1, 0x0601, - // Entry 24780 - 247BF - 0x000e, 0x0035, 0x06d3, 0x067c, 0x0689, 0x0696, 0x06a3, 0x06b0, - 0x06bd, 0x06c9, 0x06e0, 0x06ea, 0x06f4, 0x06fe, 0x0708, 0x070f, - 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x0422, - 0x000e, 0x0035, 0x06d3, 0x067c, 0x0689, 0x0696, 0x06a3, 0x06b0, - 0x06bd, 0x06c9, 0x06e0, 0x06ea, 0x06f4, 0x06fe, 0x0708, 0x070f, - 0x0001, 0x0613, 0x0001, 0x0615, 0x0001, 0x0000, 0x04ef, 0x0004, - 0x0626, 0x0620, 0x061d, 0x0623, 0x0001, 0x0035, 0x0719, 0x0001, - // Entry 247C0 - 247FF - 0x0035, 0x04f5, 0x0001, 0x0035, 0x002d, 0x0001, 0x0035, 0x002d, - 0x0005, 0x062f, 0x0000, 0x0000, 0x0000, 0x0694, 0x0002, 0x0632, - 0x0663, 0x0003, 0x0636, 0x0645, 0x0654, 0x000d, 0x0035, 0xffff, - 0x072b, 0x0738, 0x0748, 0x0758, 0x0765, 0x0772, 0x077f, 0x078c, - 0x079c, 0x07af, 0x07b9, 0x07c3, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x000d, 0x0035, 0xffff, 0x072b, 0x0738, - 0x0748, 0x0758, 0x0765, 0x0772, 0x077f, 0x078c, 0x079c, 0x07af, - // Entry 24800 - 2483F - 0x07b9, 0x07c3, 0x0003, 0x0667, 0x0676, 0x0685, 0x000d, 0x0035, - 0xffff, 0x072b, 0x0738, 0x0748, 0x0758, 0x0765, 0x0772, 0x077f, - 0x078c, 0x079c, 0x07af, 0x07b9, 0x07c3, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0035, 0xffff, 0x072b, - 0x0738, 0x0748, 0x0758, 0x0765, 0x0772, 0x077f, 0x078c, 0x079c, - 0x07af, 0x07b9, 0x07c3, 0x0001, 0x0696, 0x0001, 0x0698, 0x0001, - 0x0035, 0x07d0, 0x0008, 0x06a4, 0x0000, 0x0000, 0x0000, 0x0709, - // Entry 24840 - 2487F - 0x0710, 0x0000, 0x9006, 0x0002, 0x06a7, 0x06d8, 0x0003, 0x06ab, - 0x06ba, 0x06c9, 0x000d, 0x0035, 0xffff, 0x07d7, 0x07e7, 0x07f4, - 0x0816, 0x0838, 0x085a, 0x0879, 0x0886, 0x0899, 0x08a9, 0x08bc, - 0x08cf, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - 0x000d, 0x0035, 0xffff, 0x07d7, 0x07e7, 0x07f4, 0x0816, 0x0838, - 0x085a, 0x0879, 0x0886, 0x0899, 0x08a9, 0x08bc, 0x08cf, 0x0003, - 0x06dc, 0x06eb, 0x06fa, 0x000d, 0x0035, 0xffff, 0x07d7, 0x07e7, - // Entry 24880 - 248BF - 0x07f4, 0x0816, 0x0838, 0x085a, 0x0879, 0x0886, 0x0899, 0x08a9, - 0x08bc, 0x08cf, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x0035, 0xffff, 0x07d7, 0x07e7, 0x07f4, 0x0816, - 0x0838, 0x085a, 0x0879, 0x0886, 0x0899, 0x08a9, 0x08bc, 0x08cf, - 0x0001, 0x070b, 0x0001, 0x070d, 0x0001, 0x0000, 0x06c8, 0x0004, - 0x071e, 0x0718, 0x0715, 0x071b, 0x0001, 0x0035, 0x0719, 0x0001, - 0x0035, 0x04f5, 0x0001, 0x0035, 0x002d, 0x0001, 0x0035, 0x002d, - // Entry 248C0 - 248FF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x072a, 0x090d, 0x0000, - 0x091e, 0x0002, 0x072d, 0x081d, 0x0001, 0x072f, 0x00ec, 0x0035, - 0x08e5, 0x08ec, 0x08f3, 0x08fa, 0x0901, 0x0908, 0x090f, 0x0916, - 0x091d, 0x0924, 0x092b, 0x0932, 0x093f, 0x094c, 0x0959, 0x0966, - 0x0973, 0x097a, 0x0981, 0x0988, 0x098f, 0x0996, 0x099d, 0x09a4, - 0x09ab, 0x09b2, 0x09b9, 0x09c0, 0x09c7, 0x09ce, 0x09d5, 0x09dc, - 0x09e3, 0x09ea, 0x09f1, 0x09f8, 0x09ff, 0x0a06, 0x0a0d, 0x0a14, - 0x0a1b, 0x0a22, 0x0a29, 0x0a30, 0x0a37, 0x0a3e, 0x0a45, 0x0a4c, - // Entry 24900 - 2493F - 0x0a53, 0x0a5a, 0x0a61, 0x0a68, 0x0a6f, 0x0a76, 0x0a7d, 0x0a84, - 0x0a8b, 0x0a92, 0x0a99, 0x0aa0, 0x0aa7, 0x0aae, 0x0ab5, 0x0abc, - 0x0ac3, 0x0aca, 0x0ad1, 0x0ad8, 0x0adf, 0x0ae6, 0x0aed, 0x0af4, - 0x0afb, 0x0b02, 0x0b09, 0x0b10, 0x0b17, 0x0b1e, 0x0b25, 0x0b2c, - 0x0b33, 0x0b3a, 0x0b41, 0x0b48, 0x0b4f, 0x0b56, 0x0b5d, 0x0b64, - 0x0b6b, 0x0b72, 0x0b79, 0x0b80, 0x0b87, 0x0b8e, 0x0b95, 0x0b9c, - 0x0ba3, 0x0baa, 0x0bb1, 0x0bb8, 0x0bbf, 0x0bc6, 0x0bcd, 0x0bd4, - 0x0bdb, 0x0be2, 0x0be9, 0x0bf0, 0x0bf7, 0x0bfe, 0x0c05, 0x0c0c, - // Entry 24940 - 2497F - 0x0c13, 0x0c1a, 0x0c21, 0x0c28, 0x0c2f, 0x0c36, 0x0c3d, 0x0c44, - 0x0c4b, 0x0c52, 0x0c59, 0x0c60, 0x0c67, 0x0c6e, 0x0c75, 0x0c7c, - 0x0c83, 0x0c8a, 0x0c91, 0x0c98, 0x0c9f, 0x0ca6, 0x0cad, 0x0cb4, - 0x0cbb, 0x0cc2, 0x0cc9, 0x0cd0, 0x0cd7, 0x0cde, 0x0ce5, 0x0cec, - 0x0cf3, 0x0cfa, 0x0d01, 0x0d08, 0x0d0f, 0x0d16, 0x0d1d, 0x0d24, - 0x0d2b, 0x0d32, 0x0d39, 0x0d40, 0x0d47, 0x0d4e, 0x0d55, 0x0d5c, - 0x0d63, 0x0d6a, 0x0d71, 0x0d78, 0x0d7f, 0x0d86, 0x0d8d, 0x0d94, - 0x0d9b, 0x0da2, 0x0da9, 0x0db0, 0x0db7, 0x0dbe, 0x0dc5, 0x0dcc, - // Entry 24980 - 249BF - 0x0dd3, 0x0dda, 0x0de1, 0x0de8, 0x0def, 0x0df6, 0x0dfd, 0x0e04, - 0x0e0b, 0x0e12, 0x0e19, 0x0e20, 0x0e27, 0x0e2e, 0x0e35, 0x0e3c, - 0x0e43, 0x0e4a, 0x0e51, 0x0e58, 0x0e5f, 0x0e66, 0x0e6d, 0x0e74, - 0x0e7b, 0x0e82, 0x0e89, 0x0e90, 0x0e97, 0x0e9e, 0x0ea5, 0x0eac, - 0x0eb3, 0x0eba, 0x0ec1, 0x0ec8, 0x0ecf, 0x0ed6, 0x0edd, 0x0ee4, - 0x0eeb, 0x0ef2, 0x0ef9, 0x0f00, 0x0f07, 0x0f0e, 0x0f15, 0x0f1c, - 0x0f23, 0x0f2a, 0x0f31, 0x0f38, 0x0f3f, 0x0f46, 0x0f4d, 0x0f54, - 0x0f5b, 0x0f62, 0x0f69, 0x0f70, 0x0001, 0x081f, 0x00ec, 0x0035, - // Entry 249C0 - 249FF - 0x08e5, 0x08ec, 0x08f3, 0x08fa, 0x0901, 0x0908, 0x090f, 0x0916, - 0x091d, 0x0924, 0x092b, 0x0932, 0x093f, 0x094c, 0x0959, 0x0966, - 0x0973, 0x097a, 0x0981, 0x0988, 0x098f, 0x0996, 0x099d, 0x09a4, - 0x09ab, 0x09b2, 0x09b9, 0x09c0, 0x09c7, 0x09ce, 0x09d5, 0x09dc, - 0x09e3, 0x09ea, 0x09f1, 0x09f8, 0x09ff, 0x0a06, 0x0a0d, 0x0a14, - 0x0a1b, 0x0a22, 0x0a29, 0x0a30, 0x0a37, 0x0a3e, 0x0a45, 0x0a4c, - 0x0a53, 0x0a5a, 0x0a61, 0x0a68, 0x0a6f, 0x0a76, 0x0a7d, 0x0a84, - 0x0a8b, 0x0a92, 0x0a99, 0x0aa0, 0x0aa7, 0x0aae, 0x0ab5, 0x0abc, - // Entry 24A00 - 24A3F - 0x0ac3, 0x0aca, 0x0ad1, 0x0ad8, 0x0adf, 0x0ae6, 0x0aed, 0x0af4, - 0x0afb, 0x0b02, 0x0b09, 0x0b10, 0x0b17, 0x0b1e, 0x0b25, 0x0b2c, - 0x0b33, 0x0b3a, 0x0b41, 0x0b48, 0x0b4f, 0x0b56, 0x0b5d, 0x0b64, - 0x0b6b, 0x0b72, 0x0b79, 0x0b80, 0x0b87, 0x0b8e, 0x0b95, 0x0b9c, - 0x0ba3, 0x0baa, 0x0bb1, 0x0bb8, 0x0bbf, 0x0bc6, 0x0bcd, 0x0bd4, - 0x0bdb, 0x0be2, 0x0be9, 0x0bf0, 0x0bf7, 0x0bfe, 0x0c05, 0x0c0c, - 0x0c13, 0x0c1a, 0x0c21, 0x0c28, 0x0c2f, 0x0c36, 0x0c3d, 0x0c44, - 0x0c4b, 0x0c52, 0x0c59, 0x0c60, 0x0c67, 0x0c6e, 0x0c75, 0x0c7c, - // Entry 24A40 - 24A7F - 0x0c83, 0x0c8a, 0x0c91, 0x0c98, 0x0c9f, 0x0ca6, 0x0cad, 0x0cb4, - 0x0cbb, 0x0cc2, 0x0cc9, 0x0cd0, 0x0cd7, 0x0cde, 0x0ce5, 0x0cec, - 0x0cf3, 0x0cfa, 0x0d01, 0x0d08, 0x0d0f, 0x0d16, 0x0d1d, 0x0d24, - 0x0d2b, 0x0d32, 0x0d39, 0x0d40, 0x0d47, 0x0d4e, 0x0d55, 0x0d5c, - 0x0d63, 0x0d6a, 0x0d71, 0x0d78, 0x0d7f, 0x0d86, 0x0d8d, 0x0d94, - 0x0d9b, 0x0da2, 0x0da9, 0x0db0, 0x0db7, 0x0dbe, 0x0dc5, 0x0dcc, - 0x0dd3, 0x0dda, 0x0de1, 0x0de8, 0x0def, 0x0df6, 0x0dfd, 0x0e04, - 0x0e0b, 0x0e12, 0x0e19, 0x0e20, 0x0e27, 0x0e2e, 0x0e35, 0x0e3c, - // Entry 24A80 - 24ABF - 0x0e43, 0x0e4a, 0x0e51, 0x0e58, 0x0e5f, 0x0e66, 0x0e6d, 0x0e74, - 0x0e7b, 0x0e82, 0x0e89, 0x0e90, 0x0e97, 0x0e9e, 0x0ea5, 0x0eac, - 0x0eb3, 0x0eba, 0x0ec1, 0x0ec8, 0x0ecf, 0x0ed6, 0x0edd, 0x0ee4, - 0x0eeb, 0x0ef2, 0x0ef9, 0x0f00, 0x0f07, 0x0f0e, 0x0f15, 0x0f1c, - 0x0f23, 0x0f2a, 0x0f31, 0x0f38, 0x0f3f, 0x0f46, 0x0f4d, 0x0f54, - 0x0f77, 0x0f79, 0x0f7b, 0x0f7d, 0x0004, 0x091b, 0x0915, 0x0912, - 0x0918, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, - 0x0035, 0x04f5, 0x0001, 0x0035, 0x0f7f, 0x0004, 0x092c, 0x0926, - // Entry 24AC0 - 24AFF - 0x0923, 0x0929, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0935, - 0x0000, 0x0000, 0x0000, 0x099a, 0x0002, 0x0938, 0x0969, 0x0003, - 0x093c, 0x094b, 0x095a, 0x000d, 0x0035, 0xffff, 0x0f8a, 0x0fa9, - 0x0fc8, 0x0fd8, 0x0fe5, 0x0ff5, 0x100e, 0x1018, 0x1028, 0x1035, - 0x103c, 0x1049, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x0035, 0xffff, 0x0f8a, 0x0fa9, 0x0fc8, 0x0fd8, - // Entry 24B00 - 24B3F - 0x0fe5, 0x0ff5, 0x100e, 0x1018, 0x1028, 0x1035, 0x103c, 0x1049, - 0x0003, 0x096d, 0x097c, 0x098b, 0x000d, 0x0035, 0xffff, 0x0f8a, - 0x0fa9, 0x0fc8, 0x0fd8, 0x0fe5, 0x0ff5, 0x100e, 0x1018, 0x1028, - 0x1035, 0x103c, 0x1049, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x2220, 0x2398, 0x000d, 0x0035, 0xffff, 0x0f8a, 0x0fa9, 0x0fc8, - 0x0fd8, 0x0fe5, 0x0ff5, 0x100e, 0x1018, 0x1028, 0x1035, 0x103c, - 0x1049, 0x0001, 0x099c, 0x0001, 0x099e, 0x0001, 0x0000, 0x1a1d, - // Entry 24B40 - 24B7F - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x09aa, 0x09b2, 0x0000, - 0x9006, 0x0001, 0x09ac, 0x0001, 0x09ae, 0x0002, 0x0035, 0x105c, - 0x1066, 0x0004, 0x09c0, 0x09ba, 0x09b7, 0x09bd, 0x0001, 0x0035, - 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x002d, 0x0001, - 0x0035, 0x002d, 0x0040, 0x0a04, 0x0000, 0x0000, 0x0a09, 0x0a1e, - 0x0a33, 0x0a48, 0x0a5d, 0x0a6d, 0x0a7d, 0x0a92, 0x0aa7, 0x0abc, - 0x0ad5, 0x0aee, 0x0000, 0x0000, 0x0000, 0x0b07, 0x0b1e, 0x0b35, - 0x0000, 0x0000, 0x0000, 0x0b4c, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 24B80 - 24BBF - 0x0000, 0x0b51, 0x0b63, 0x0b75, 0x0b87, 0x0b99, 0x0bab, 0x0bbd, - 0x0bcf, 0x0be1, 0x0bf3, 0x0c05, 0x0c17, 0x0c29, 0x0c3b, 0x0c4d, - 0x0c5f, 0x0c71, 0x0c83, 0x0c95, 0x0ca7, 0x0cb9, 0x0000, 0x0ccb, - 0x0000, 0x0cd0, 0x0ce4, 0x0cf4, 0x0d04, 0x0d18, 0x0d28, 0x0d38, - 0x0d4c, 0x0d5c, 0x0d6c, 0x0001, 0x0a06, 0x0001, 0x0035, 0x106d, - 0x0003, 0x0a0d, 0x0a10, 0x0a15, 0x0001, 0x0035, 0x1074, 0x0003, - 0x0035, 0x1078, 0x107f, 0x1086, 0x0002, 0x0a18, 0x0a1b, 0x0001, - 0x0035, 0x108d, 0x0001, 0x0035, 0x1098, 0x0003, 0x0a22, 0x0a25, - // Entry 24BC0 - 24BFF - 0x0a2a, 0x0001, 0x0035, 0x1074, 0x0003, 0x0035, 0x1078, 0x107f, - 0x1086, 0x0002, 0x0a2d, 0x0a30, 0x0001, 0x0035, 0x108d, 0x0001, - 0x0035, 0x1098, 0x0003, 0x0a37, 0x0a3a, 0x0a3f, 0x0001, 0x0035, - 0x1074, 0x0003, 0x0035, 0x1078, 0x107f, 0x1086, 0x0002, 0x0a42, - 0x0a45, 0x0001, 0x0035, 0x10a3, 0x0001, 0x0035, 0x10ad, 0x0003, - 0x0a4c, 0x0a4f, 0x0a54, 0x0001, 0x0035, 0x10b7, 0x0003, 0x0035, - 0x10c1, 0x10ce, 0x10db, 0x0002, 0x0a57, 0x0a5a, 0x0001, 0x0035, - 0x10e8, 0x0001, 0x0035, 0x10f9, 0x0003, 0x0a61, 0x0000, 0x0a64, - // Entry 24C00 - 24C3F - 0x0001, 0x0035, 0x10b7, 0x0002, 0x0a67, 0x0a6a, 0x0001, 0x0035, - 0x10e8, 0x0001, 0x0035, 0x10f9, 0x0003, 0x0a71, 0x0000, 0x0a74, - 0x0001, 0x0035, 0x10b7, 0x0002, 0x0a77, 0x0a7a, 0x0001, 0x0035, - 0x110a, 0x0001, 0x0035, 0x111a, 0x0003, 0x0a81, 0x0a84, 0x0a89, - 0x0001, 0x0035, 0x054d, 0x0003, 0x0035, 0x112a, 0x1131, 0x1138, - 0x0002, 0x0a8c, 0x0a8f, 0x0001, 0x0035, 0x113f, 0x0001, 0x0035, - 0x114d, 0x0003, 0x0a96, 0x0a99, 0x0a9e, 0x0001, 0x0035, 0x054d, - 0x0003, 0x0035, 0x112a, 0x1131, 0x1138, 0x0002, 0x0aa1, 0x0aa4, - // Entry 24C40 - 24C7F - 0x0001, 0x0035, 0x113f, 0x0001, 0x0035, 0x114d, 0x0003, 0x0aab, - 0x0aae, 0x0ab3, 0x0001, 0x0035, 0x054d, 0x0003, 0x0035, 0x112a, - 0x1131, 0x1138, 0x0002, 0x0ab6, 0x0ab9, 0x0001, 0x0035, 0x115b, - 0x0001, 0x0035, 0x1168, 0x0004, 0x0ac1, 0x0ac4, 0x0ac9, 0x0ad2, - 0x0001, 0x0035, 0x1175, 0x0003, 0x0035, 0x1179, 0x1180, 0x1187, - 0x0002, 0x0acc, 0x0acf, 0x0001, 0x0035, 0x118e, 0x0001, 0x0035, - 0x119c, 0x0001, 0x0035, 0x11aa, 0x0004, 0x0ada, 0x0add, 0x0ae2, - 0x0aeb, 0x0001, 0x0035, 0x1175, 0x0003, 0x0035, 0x1179, 0x1180, - // Entry 24C80 - 24CBF - 0x1187, 0x0002, 0x0ae5, 0x0ae8, 0x0001, 0x0035, 0x118e, 0x0001, - 0x0035, 0x119c, 0x0001, 0x0035, 0x11aa, 0x0004, 0x0af3, 0x0af6, - 0x0afb, 0x0b04, 0x0001, 0x0035, 0x1175, 0x0003, 0x0035, 0x1179, - 0x1180, 0x1187, 0x0002, 0x0afe, 0x0b01, 0x0001, 0x0035, 0x11b8, - 0x0001, 0x0035, 0x11c5, 0x0001, 0x0035, 0x11d2, 0x0003, 0x0b0b, - 0x0b0e, 0x0b15, 0x0001, 0x0035, 0x0549, 0x0005, 0x0035, 0x11e9, - 0x11f0, 0x11f7, 0x11df, 0x11fe, 0x0002, 0x0b18, 0x0b1b, 0x0001, - 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0b22, 0x0b25, - // Entry 24CC0 - 24CFF - 0x0b2c, 0x0001, 0x0035, 0x0549, 0x0005, 0x0035, 0x11e9, 0x11f0, - 0x11f7, 0x11df, 0x11fe, 0x0002, 0x0b2f, 0x0b32, 0x0001, 0x0035, - 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0b39, 0x0b3c, 0x0b43, - 0x0001, 0x0035, 0x0549, 0x0005, 0x0035, 0x11e9, 0x11f0, 0x11f7, - 0x11df, 0x11fe, 0x0002, 0x0b46, 0x0b49, 0x0001, 0x0035, 0x121e, - 0x0001, 0x0035, 0x1228, 0x0001, 0x0b4e, 0x0001, 0x0035, 0x1232, - 0x0003, 0x0000, 0x0b55, 0x0b5a, 0x0003, 0x0035, 0x1239, 0x124c, - 0x125f, 0x0002, 0x0b5d, 0x0b60, 0x0001, 0x0035, 0x1272, 0x0001, - // Entry 24D00 - 24D3F - 0x0035, 0x1289, 0x0003, 0x0000, 0x0b67, 0x0b6c, 0x0003, 0x0035, - 0x12a0, 0x12b0, 0x12c0, 0x0002, 0x0b6f, 0x0b72, 0x0001, 0x0035, - 0x12d0, 0x0001, 0x0035, 0x12e4, 0x0003, 0x0000, 0x0b79, 0x0b7e, - 0x0003, 0x0035, 0x12a0, 0x12b0, 0x12c0, 0x0002, 0x0b81, 0x0b84, - 0x0001, 0x0035, 0x12f8, 0x0001, 0x0035, 0x130b, 0x0003, 0x0000, - 0x0b8b, 0x0b90, 0x0003, 0x0035, 0x131e, 0x1331, 0x1344, 0x0002, - 0x0b93, 0x0b96, 0x0001, 0x0035, 0x1357, 0x0001, 0x0035, 0x136e, - 0x0003, 0x0000, 0x0b9d, 0x0ba2, 0x0003, 0x0035, 0x1385, 0x1395, - // Entry 24D40 - 24D7F - 0x13a5, 0x0002, 0x0ba5, 0x0ba8, 0x0001, 0x0035, 0x13b5, 0x0001, - 0x0035, 0x13c9, 0x0003, 0x0000, 0x0baf, 0x0bb4, 0x0003, 0x0035, - 0x1385, 0x1395, 0x13a5, 0x0002, 0x0bb7, 0x0bba, 0x0001, 0x0035, - 0x13dd, 0x0001, 0x0035, 0x13f0, 0x0003, 0x0000, 0x0bc1, 0x0bc6, - 0x0003, 0x0035, 0x1403, 0x1416, 0x1429, 0x0002, 0x0bc9, 0x0bcc, - 0x0001, 0x0035, 0x143c, 0x0001, 0x0035, 0x1453, 0x0003, 0x0000, - 0x0bd3, 0x0bd8, 0x0003, 0x0035, 0x146a, 0x147a, 0x148a, 0x0002, - 0x0bdb, 0x0bde, 0x0001, 0x0035, 0x149a, 0x0001, 0x0035, 0x14ae, - // Entry 24D80 - 24DBF - 0x0003, 0x0000, 0x0be5, 0x0bea, 0x0003, 0x0035, 0x146a, 0x147a, - 0x148a, 0x0002, 0x0bed, 0x0bf0, 0x0001, 0x0035, 0x14c2, 0x0001, - 0x0035, 0x14d5, 0x0003, 0x0000, 0x0bf7, 0x0bfc, 0x0003, 0x0035, - 0x14e8, 0x14fb, 0x150e, 0x0002, 0x0bff, 0x0c02, 0x0001, 0x0035, - 0x1521, 0x0001, 0x0035, 0x1538, 0x0003, 0x0000, 0x0c09, 0x0c0e, - 0x0003, 0x0035, 0x154f, 0x155f, 0x156f, 0x0002, 0x0c11, 0x0c14, - 0x0001, 0x0035, 0x157f, 0x0001, 0x0035, 0x1593, 0x0003, 0x0000, - 0x0c1b, 0x0c20, 0x0003, 0x0035, 0x154f, 0x155f, 0x156f, 0x0002, - // Entry 24DC0 - 24DFF - 0x0c23, 0x0c26, 0x0001, 0x0035, 0x15a7, 0x0001, 0x0035, 0x15ba, - 0x0003, 0x0000, 0x0c2d, 0x0c32, 0x0003, 0x0035, 0x15cd, 0x15e0, - 0x15f3, 0x0002, 0x0c35, 0x0c38, 0x0001, 0x0035, 0x1606, 0x0001, - 0x0035, 0x161d, 0x0003, 0x0000, 0x0c3f, 0x0c44, 0x0003, 0x0035, - 0x1634, 0x1644, 0x1654, 0x0002, 0x0c47, 0x0c4a, 0x0001, 0x0035, - 0x1664, 0x0001, 0x0035, 0x1678, 0x0003, 0x0000, 0x0c51, 0x0c56, - 0x0003, 0x0035, 0x1634, 0x1644, 0x1654, 0x0002, 0x0c59, 0x0c5c, - 0x0001, 0x0035, 0x168c, 0x0001, 0x0035, 0x169f, 0x0003, 0x0000, - // Entry 24E00 - 24E3F - 0x0c63, 0x0c68, 0x0003, 0x0035, 0x16b2, 0x16c5, 0x16d8, 0x0002, - 0x0c6b, 0x0c6e, 0x0001, 0x0035, 0x16eb, 0x0001, 0x0035, 0x1702, - 0x0003, 0x0000, 0x0c75, 0x0c7a, 0x0003, 0x0035, 0x1719, 0x1729, - 0x1739, 0x0002, 0x0c7d, 0x0c80, 0x0001, 0x0035, 0x1749, 0x0001, - 0x0035, 0x175d, 0x0003, 0x0000, 0x0c87, 0x0c8c, 0x0003, 0x0035, - 0x1719, 0x1729, 0x1739, 0x0002, 0x0c8f, 0x0c92, 0x0001, 0x0035, - 0x1771, 0x0001, 0x0035, 0x1784, 0x0003, 0x0000, 0x0c99, 0x0c9e, - 0x0003, 0x0035, 0x1797, 0x17aa, 0x17bd, 0x0002, 0x0ca1, 0x0ca4, - // Entry 24E40 - 24E7F - 0x0001, 0x0035, 0x17d0, 0x0001, 0x0035, 0x17e7, 0x0003, 0x0000, - 0x0cab, 0x0cb0, 0x0003, 0x0035, 0x17fe, 0x180e, 0x181e, 0x0002, - 0x0cb3, 0x0cb6, 0x0001, 0x0035, 0x182e, 0x0001, 0x0035, 0x1842, - 0x0003, 0x0000, 0x0cbd, 0x0cc2, 0x0003, 0x0035, 0x17fe, 0x180e, - 0x181e, 0x0002, 0x0cc5, 0x0cc8, 0x0001, 0x0035, 0x1856, 0x0001, - 0x0035, 0x1869, 0x0001, 0x0ccd, 0x0001, 0x0035, 0x187c, 0x0003, - 0x0cd4, 0x0cd7, 0x0cdb, 0x0001, 0x0035, 0x188a, 0x0002, 0x0035, - 0xffff, 0x188e, 0x0002, 0x0cde, 0x0ce1, 0x0001, 0x0035, 0x189d, - // Entry 24E80 - 24EBF - 0x0001, 0x0035, 0x18ab, 0x0003, 0x0ce8, 0x0000, 0x0ceb, 0x0001, - 0x0035, 0x188a, 0x0002, 0x0cee, 0x0cf1, 0x0001, 0x0035, 0x189d, - 0x0001, 0x0035, 0x18ab, 0x0003, 0x0cf8, 0x0000, 0x0cfb, 0x0001, - 0x0035, 0x188a, 0x0002, 0x0cfe, 0x0d01, 0x0001, 0x0035, 0x18b9, - 0x0001, 0x0035, 0x18c6, 0x0003, 0x0d08, 0x0d0b, 0x0d0f, 0x0001, - 0x0035, 0x18d3, 0x0002, 0x0035, 0xffff, 0x18d7, 0x0002, 0x0d12, - 0x0d15, 0x0001, 0x0035, 0x18e3, 0x0001, 0x0035, 0x18ee, 0x0003, - 0x0d1c, 0x0000, 0x0d1f, 0x0001, 0x0035, 0x18d3, 0x0002, 0x0d22, - // Entry 24EC0 - 24EFF - 0x0d25, 0x0001, 0x0035, 0x18e3, 0x0001, 0x0035, 0x18ee, 0x0003, - 0x0d2c, 0x0000, 0x0d2f, 0x0001, 0x0035, 0x18d3, 0x0002, 0x0d32, - 0x0d35, 0x0001, 0x0035, 0x18f9, 0x0001, 0x0035, 0x1903, 0x0003, - 0x0d3c, 0x0d3f, 0x0d43, 0x0001, 0x0035, 0x190d, 0x0002, 0x0035, - 0xffff, 0x1911, 0x0002, 0x0d46, 0x0d49, 0x0001, 0x0035, 0x1915, - 0x0001, 0x0035, 0x1920, 0x0003, 0x0d50, 0x0000, 0x0d53, 0x0001, - 0x0035, 0x190d, 0x0002, 0x0d56, 0x0d59, 0x0001, 0x0035, 0x1915, - 0x0001, 0x0035, 0x1920, 0x0003, 0x0d60, 0x0000, 0x0d63, 0x0001, - // Entry 24F00 - 24F3F - 0x0035, 0x190d, 0x0002, 0x0d66, 0x0d69, 0x0001, 0x0035, 0x192b, - 0x0001, 0x0035, 0x1935, 0x0001, 0x0d6e, 0x0001, 0x0035, 0x193f, - 0x0004, 0x0d76, 0x0d7b, 0x0d80, 0x0d8f, 0x0003, 0x0000, 0x1dc7, - 0x2936, 0x293d, 0x0003, 0x0035, 0x1952, 0x195c, 0x1969, 0x0002, - 0x0000, 0x0d83, 0x0003, 0x0000, 0x0d8a, 0x0d87, 0x0001, 0x0035, - 0x1976, 0x0003, 0x0035, 0xffff, 0x1986, 0x1996, 0x0002, 0x0f76, - 0x0d92, 0x0003, 0x0d96, 0x0ed6, 0x0e36, 0x009e, 0x0035, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1a4c, 0x1a94, 0x1b1b, 0x1b5a, 0x1bab, - // Entry 24F40 - 24F7F - 0x1bfc, 0x1c4d, 0x1ca7, 0x1cef, 0x1da3, 0x1de2, 0x1e33, 0x1e96, - 0x1ede, 0x1f14, 0x1f80, 0x1ff5, 0x2061, 0x20cd, 0x2130, 0x216f, - 0xffff, 0xffff, 0x21ef, 0xffff, 0x225f, 0xffff, 0x22dc, 0x231b, - 0x2348, 0x2375, 0xffff, 0xffff, 0x23fe, 0x2446, 0x248e, 0xffff, - 0xffff, 0xffff, 0x252d, 0xffff, 0x2594, 0x25ee, 0xffff, 0x265b, - 0x26ac, 0x2718, 0xffff, 0xffff, 0xffff, 0xffff, 0x27b5, 0xffff, - 0xffff, 0x2832, 0x289e, 0xffff, 0xffff, 0x293d, 0x29bb, 0x29e8, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ab7, 0x2aed, - // Entry 24F80 - 24FBF - 0x2b3e, 0x2b86, 0x2bb3, 0xffff, 0xffff, 0x2c9f, 0xffff, 0x2cdf, - 0xffff, 0xffff, 0x2d81, 0xffff, 0x2e1b, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2eb8, 0xffff, 0x2f22, 0x2f7c, 0x2fd6, 0x3030, 0xffff, - 0xffff, 0xffff, 0x30a8, 0x310b, 0x316e, 0xffff, 0xffff, 0x320f, - 0x32c4, 0x3327, 0x3366, 0xffff, 0xffff, 0x33e0, 0x3428, 0x345e, - 0xffff, 0x34c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x35ea, - 0x3629, 0x365f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3735, 0xffff, 0xffff, 0x378e, 0xffff, 0x37d7, 0xffff, - // Entry 24FC0 - 24FFF - 0x384a, 0x3892, 0x38ec, 0xffff, 0x3941, 0x399b, 0xffff, 0xffff, - 0xffff, 0x3a46, 0x3a8e, 0xffff, 0xffff, 0x19b2, 0x1ad3, 0x1d25, - 0x1d64, 0xffff, 0xffff, 0x2dc9, 0x3576, 0x009e, 0x0035, 0x19e8, - 0x1a04, 0x1a1d, 0x1a33, 0x1a62, 0x1aa7, 0x1b2e, 0x1b73, 0x1bc4, - 0x1c15, 0x1c69, 0x1cbd, 0x1cff, 0x1db6, 0x1dfb, 0x1e52, 0x1eac, - 0x1eee, 0x1f36, 0x1fa5, 0x2017, 0x2083, 0x20ec, 0x2143, 0x218b, - 0x21c9, 0x21dc, 0x2205, 0x2237, 0x2278, 0x22c9, 0x22ef, 0x2328, - 0x2355, 0x2391, 0x23cf, 0x23e8, 0x2414, 0x245c, 0x24a1, 0x24cd, - // Entry 25000 - 2503F - 0x24e6, 0x2514, 0x2546, 0x257e, 0x25b0, 0x2607, 0x263f, 0x2674, - 0x26ce, 0x272b, 0x2757, 0x276d, 0x2786, 0x279c, 0x27cb, 0x27fd, - 0x2819, 0x2854, 0x28c0, 0x291a, 0x292a, 0x2965, 0x29c8, 0x29f8, - 0x2a1e, 0x2a31, 0x2a44, 0x2a5a, 0x2a79, 0x2a98, 0x2ac7, 0x2b06, - 0x2b54, 0x2b93, 0x2bed, 0x2c67, 0x2c83, 0x2cac, 0x2ccc, 0x2cfe, - 0x2d42, 0x2d6b, 0x2d97, 0x2dff, 0x2e2e, 0x2e5a, 0x2e70, 0x2e86, - 0x2e9c, 0x2ed1, 0x2f09, 0x2f3e, 0x2f98, 0x2ff2, 0x3043, 0x306f, - 0x3085, 0x3095, 0x30c7, 0x312a, 0x3193, 0x31e3, 0x31f3, 0x3240, - // Entry 25040 - 2507F - 0x32e3, 0x333a, 0x337c, 0x33ae, 0x33be, 0x33f6, 0x3438, 0x3474, - 0x34a6, 0x34ed, 0x3543, 0x3559, 0x3569, 0x35be, 0x35d4, 0x35fd, - 0x3639, 0x366f, 0x3695, 0x36ab, 0x36c7, 0x36e0, 0x36ff, 0x3712, - 0x3725, 0x3742, 0x3762, 0x377b, 0x379e, 0x37c4, 0x37f6, 0x383a, - 0x3860, 0x38ae, 0x38ff, 0x392b, 0x395d, 0x39b7, 0x39f5, 0x3a11, - 0x3a27, 0x3a5c, 0x3aad, 0x290a, 0x32a8, 0x19c2, 0x1ae9, 0x1d38, - 0x1d77, 0x22b0, 0x2d5b, 0x2dd9, 0x358c, 0x009e, 0x0035, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1a7b, 0x1abd, 0x1b44, 0x1b8f, 0x1be0, - // Entry 25080 - 250BF - 0x1c31, 0x1c88, 0x1cd6, 0x1d12, 0x1dcc, 0x1e17, 0x1e74, 0x1ec5, - 0x1f01, 0x1f5b, 0x1fcd, 0x203c, 0x20a8, 0x210e, 0x2159, 0x21aa, - 0xffff, 0xffff, 0x221e, 0xffff, 0x2294, 0xffff, 0x2305, 0x2338, - 0x2365, 0x23b0, 0xffff, 0xffff, 0x242d, 0x2475, 0x24b7, 0xffff, - 0xffff, 0xffff, 0x2562, 0xffff, 0x25cf, 0x2623, 0xffff, 0x2690, - 0x26f3, 0x2741, 0xffff, 0xffff, 0xffff, 0xffff, 0x27e4, 0xffff, - 0xffff, 0x2879, 0x28e5, 0xffff, 0xffff, 0x2990, 0x29d8, 0x2a0b, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ada, 0x2b22, - // Entry 250C0 - 250FF - 0x2b6d, 0x2ba3, 0x2c2a, 0xffff, 0xffff, 0x2cbc, 0xffff, 0x2d20, - 0xffff, 0xffff, 0x2db0, 0xffff, 0x2e44, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2eed, 0xffff, 0x2f5d, 0x2fb7, 0x3011, 0x3059, 0xffff, - 0xffff, 0xffff, 0x30e9, 0x314c, 0x31bb, 0xffff, 0xffff, 0x3274, - 0x3305, 0x3350, 0x3395, 0xffff, 0xffff, 0x340f, 0x344b, 0x348d, - 0xffff, 0x3518, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3613, - 0x364c, 0x3682, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3752, 0xffff, 0xffff, 0x37b1, 0xffff, 0x3818, 0xffff, - // Entry 25100 - 2513F - 0x3879, 0x38cd, 0x3915, 0xffff, 0x397c, 0x39d6, 0xffff, 0xffff, - 0xffff, 0x3a75, 0x3acf, 0xffff, 0xffff, 0x19d5, 0x1b02, 0x1d4e, - 0x1d8d, 0xffff, 0xffff, 0x2dec, 0x35a5, 0x0003, 0x0f7a, 0x1014, - 0x0fc7, 0x004b, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 25140 - 2517F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x004b, 0x0036, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 25180 - 251BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0000, 0x004b, 0x0036, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 251C0 - 251FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0004, - // Entry 25200 - 2523F - 0x0003, 0x0004, 0x0142, 0x01dc, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, - 0x001e, 0x001b, 0x0021, 0x0001, 0x0002, 0x028a, 0x0001, 0x0000, - 0x049a, 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, - 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0041, 0x00a6, 0x0000, 0x00e7, 0x00ff, 0x010f, 0x0120, - // Entry 25240 - 2527F - 0x0131, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, - 0x000d, 0x0036, 0xffff, 0x0008, 0x0016, 0x0027, 0x0039, 0x004f, - 0x005d, 0x0077, 0x0087, 0x009e, 0x00ba, 0x00cc, 0x00e2, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, 0x0036, - 0xffff, 0x0008, 0x0016, 0x0027, 0x0039, 0x004f, 0x005d, 0x0077, - 0x0087, 0x009e, 0x00ba, 0x00cc, 0x00e2, 0x0003, 0x0079, 0x0088, - 0x0097, 0x000d, 0x0036, 0xffff, 0x0008, 0x0016, 0x0027, 0x0039, - // Entry 25280 - 252BF - 0x004f, 0x005d, 0x0077, 0x0087, 0x009e, 0x00ba, 0x00cc, 0x00e2, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - 0x0036, 0xffff, 0x0008, 0x0016, 0x0027, 0x0039, 0x004f, 0x005d, - 0x0077, 0x0087, 0x009e, 0x00ba, 0x00cc, 0x00e2, 0x0002, 0x00a9, - 0x00c8, 0x0003, 0x00ad, 0x00b6, 0x00bf, 0x0007, 0x0036, 0x00f6, - 0x00ff, 0x0108, 0x0117, 0x0126, 0x0132, 0x013f, 0x0007, 0x0036, - 0x0148, 0x014e, 0x0154, 0x0158, 0x015e, 0x0164, 0x0168, 0x0007, - // Entry 252C0 - 252FF - 0x0036, 0x00f6, 0x00ff, 0x0108, 0x0117, 0x0126, 0x0132, 0x013f, - 0x0003, 0x00cc, 0x00d5, 0x00de, 0x0007, 0x0036, 0x00f6, 0x00ff, - 0x0108, 0x0117, 0x0126, 0x0132, 0x013f, 0x0007, 0x0036, 0x0148, - 0x014e, 0x0154, 0x0158, 0x015e, 0x0164, 0x0168, 0x0007, 0x0036, - 0x00f6, 0x00ff, 0x0108, 0x0117, 0x0126, 0x0132, 0x013f, 0x0001, - 0x00e9, 0x0003, 0x00ed, 0x0000, 0x00f6, 0x0002, 0x00f0, 0x00f3, - 0x0001, 0x0036, 0x016c, 0x0001, 0x0036, 0x0179, 0x0002, 0x00f9, - 0x00fc, 0x0001, 0x0036, 0x016c, 0x0001, 0x0036, 0x0179, 0x0003, - // Entry 25300 - 2533F - 0x0109, 0x0000, 0x0103, 0x0001, 0x0105, 0x0002, 0x0036, 0x018a, - 0x01c9, 0x0001, 0x010b, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, - 0x011d, 0x0117, 0x0114, 0x011a, 0x0001, 0x0002, 0x043a, 0x0001, - 0x0000, 0x050b, 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, - 0x0004, 0x012e, 0x0128, 0x0125, 0x012b, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0004, 0x013f, 0x0139, 0x0136, 0x013c, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - // Entry 25340 - 2537F - 0x0000, 0x03c6, 0x003a, 0x0000, 0x0000, 0x0000, 0x017d, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x018c, 0x0000, 0x0000, 0x019b, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01aa, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x01be, 0x0000, 0x0000, 0x01cd, 0x0003, 0x0000, 0x0000, - // Entry 25380 - 253BF - 0x0181, 0x0002, 0x0184, 0x0188, 0x0002, 0x0036, 0x0207, 0x0207, - 0x0002, 0x0036, 0x0218, 0x0218, 0x0003, 0x0000, 0x0000, 0x0190, - 0x0002, 0x0193, 0x0197, 0x0002, 0x0036, 0x0234, 0x0234, 0x0002, - 0x0036, 0x0242, 0x0242, 0x0003, 0x0000, 0x0000, 0x019f, 0x0002, - 0x01a2, 0x01a6, 0x0002, 0x0036, 0x025f, 0x025f, 0x0002, 0x0036, - 0x0272, 0x0272, 0x0003, 0x0000, 0x01ae, 0x01b3, 0x0003, 0x0000, - 0x1b2f, 0x2965, 0x1b3f, 0x0002, 0x01b6, 0x01ba, 0x0002, 0x0036, - 0x028f, 0x028f, 0x0002, 0x0036, 0x02a1, 0x02a1, 0x0003, 0x0000, - // Entry 253C0 - 253FF - 0x0000, 0x01c2, 0x0002, 0x01c5, 0x01c9, 0x0002, 0x0036, 0x02bf, - 0x02bf, 0x0002, 0x0036, 0x02ce, 0x02ce, 0x0003, 0x0000, 0x0000, - 0x01d1, 0x0002, 0x01d4, 0x01d8, 0x0002, 0x0036, 0x02e7, 0x02e7, - 0x0002, 0x0036, 0x02f7, 0x02f7, 0x0004, 0x01e1, 0x01e6, 0x0000, - 0x0000, 0x0003, 0x0000, 0x1dc7, 0x2936, 0x293d, 0x0001, 0x0000, - 0x1de0, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, - // Entry 25400 - 2543F - 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, - 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, - 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, - 0x0005, 0xffff, 0x0636, 0x22cc, 0x22d0, 0x2246, 0x224a, 0x224e, - 0x22d4, 0x22d8, 0x22dc, 0x2236, 0x22e0, 0x21e2, 0x000d, 0x0005, - 0xffff, 0x0666, 0x066e, 0x22e4, 0x22ea, 0x224a, 0x22f2, 0x22f8, - 0x22ff, 0x2306, 0x230f, 0x2316, 0x06ae, 0x0002, 0x0000, 0x0057, - // Entry 25440 - 2547F - 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, 0x296e, 0x2382, 0x296e, - 0x2483, 0x2483, 0x2382, 0x2970, 0x22ec, 0x22ee, 0x22f0, 0x0002, - 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, - 0x06b6, 0x06ba, 0x06be, 0x06c2, 0x231e, 0x2322, 0x06ce, 0x0007, - 0x0036, 0x0313, 0x031d, 0x0327, 0x032f, 0x0338, 0x0341, 0x0348, - 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2483, 0x2483, 0x2483, - 0x2483, 0x2382, 0x2055, 0x2483, 0x0001, 0x008d, 0x0003, 0x0091, - 0x0000, 0x0098, 0x0005, 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, - // Entry 25480 - 254BF - 0x0717, 0x0005, 0x0005, 0xffff, 0x071a, 0x0721, 0x0728, 0x072f, - 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, - 0x00ab, 0x0001, 0x0036, 0x0351, 0x0001, 0x0036, 0x0357, 0x0002, - 0x00b1, 0x00b4, 0x0001, 0x0036, 0x0351, 0x0001, 0x0036, 0x0357, - 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0036, - 0x0361, 0x0371, 0x0001, 0x00c3, 0x0002, 0x0016, 0x01fb, 0x01fe, - 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, - // Entry 254C0 - 254FF - 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, - 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 25500 - 2553F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, - 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, - 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, 0x0001, 0x0036, 0x0381, - 0x0001, 0x0131, 0x0001, 0x0036, 0x0387, 0x0001, 0x0136, 0x0001, - 0x0016, 0x0207, 0x0001, 0x013b, 0x0001, 0x0036, 0x038c, 0x0002, - 0x0141, 0x0144, 0x0001, 0x0036, 0x0393, 0x0003, 0x0036, 0x0399, - 0x039e, 0x03a2, 0x0001, 0x014b, 0x0001, 0x0036, 0x03a8, 0x0001, - 0x0150, 0x0001, 0x0009, 0x0308, 0x0001, 0x0155, 0x0001, 0x0036, - // Entry 25540 - 2557F - 0x03b5, 0x0001, 0x015a, 0x0001, 0x0009, 0x030c, 0x0001, 0x015f, - 0x0001, 0x0036, 0x03bd, 0x0003, 0x0004, 0x0395, 0x079d, 0x0011, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0041, - 0x0259, 0x0000, 0x02b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0323, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001f, - 0x0000, 0x0030, 0x0004, 0x002d, 0x0027, 0x0024, 0x002a, 0x0001, - 0x0036, 0x03c9, 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, - 0x0001, 0x001e, 0x1a8e, 0x0004, 0x003e, 0x0038, 0x0035, 0x003b, - // Entry 25580 - 255BF - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x004a, 0x00af, 0x0106, - 0x013b, 0x020c, 0x0226, 0x0237, 0x0248, 0x0002, 0x004d, 0x007e, - 0x0003, 0x0051, 0x0060, 0x006f, 0x000d, 0x0036, 0xffff, 0x03dc, - 0x03e6, 0x03f0, 0x03fa, 0x0404, 0x040e, 0x0418, 0x0422, 0x042c, - 0x0436, 0x0440, 0x044a, 0x000d, 0x0036, 0xffff, 0x0454, 0x0458, - 0x045c, 0x0460, 0x045c, 0x0454, 0x0454, 0x0460, 0x0464, 0x0468, - 0x046c, 0x0470, 0x000d, 0x0036, 0xffff, 0x0474, 0x048a, 0x04a6, - // Entry 255C0 - 255FF - 0x04b6, 0x04c9, 0x04d9, 0x04ec, 0x04ff, 0x0515, 0x0534, 0x0550, - 0x0569, 0x0003, 0x0082, 0x0091, 0x00a0, 0x000d, 0x0036, 0xffff, - 0x03dc, 0x03e6, 0x03f0, 0x03fa, 0x0404, 0x040e, 0x0418, 0x0422, - 0x042c, 0x0436, 0x0440, 0x044a, 0x000d, 0x0036, 0xffff, 0x0454, - 0x0458, 0x045c, 0x0460, 0x045c, 0x0454, 0x0454, 0x0460, 0x0464, - 0x0468, 0x046c, 0x0470, 0x000d, 0x0036, 0xffff, 0x0474, 0x048a, - 0x04a6, 0x04b6, 0x04c9, 0x04d9, 0x04ec, 0x04ff, 0x0515, 0x0534, - 0x0550, 0x0569, 0x0002, 0x00b2, 0x00dc, 0x0005, 0x00b8, 0x00c1, - // Entry 25600 - 2563F - 0x00d3, 0x0000, 0x00ca, 0x0007, 0x0036, 0x0585, 0x058f, 0x0599, - 0x05a3, 0x05ad, 0x05b7, 0x05c1, 0x0007, 0x0036, 0x05cb, 0x0468, - 0x0464, 0x0468, 0x05cf, 0x05d3, 0x05d7, 0x0007, 0x0036, 0x05db, - 0x05e2, 0x05e9, 0x05f0, 0x05f7, 0x05fe, 0x0605, 0x0007, 0x0036, - 0x060c, 0x061c, 0x0635, 0x0651, 0x066d, 0x0689, 0x06a5, 0x0005, - 0x00e2, 0x00eb, 0x00fd, 0x0000, 0x00f4, 0x0007, 0x0036, 0x0585, - 0x058f, 0x0599, 0x05a3, 0x05ad, 0x05b7, 0x05c1, 0x0007, 0x0036, - 0x05cb, 0x0468, 0x0464, 0x0468, 0x05cf, 0x05d3, 0x05d7, 0x0007, - // Entry 25640 - 2567F - 0x0036, 0x05db, 0x05e2, 0x05e9, 0x05f0, 0x05f7, 0x05fe, 0x0605, - 0x0007, 0x0036, 0x060c, 0x061c, 0x0635, 0x0651, 0x066d, 0x0689, - 0x06a5, 0x0002, 0x0109, 0x0122, 0x0003, 0x010d, 0x0114, 0x011b, - 0x0005, 0x0036, 0xffff, 0x06b8, 0x06c2, 0x06cd, 0x06d9, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0036, - 0xffff, 0x06e4, 0x06ff, 0x071b, 0x0738, 0x0003, 0x0126, 0x012d, - 0x0134, 0x0005, 0x0036, 0xffff, 0x06b8, 0x06c2, 0x06cd, 0x06d9, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - // Entry 25680 - 256BF - 0x0036, 0xffff, 0x06e4, 0x06ff, 0x071b, 0x0738, 0x0002, 0x013e, - 0x01a5, 0x0003, 0x0142, 0x0163, 0x0184, 0x0008, 0x014e, 0x0154, - 0x014b, 0x0157, 0x015a, 0x015d, 0x0160, 0x0151, 0x0001, 0x0036, - 0x0754, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, 0x076d, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x0036, 0x077e, 0x0001, 0x0036, 0x0789, - 0x0001, 0x0036, 0x07a0, 0x0001, 0x0036, 0x07ab, 0x0008, 0x016f, - 0x0175, 0x016c, 0x0178, 0x017b, 0x017e, 0x0181, 0x0172, 0x0001, - 0x0036, 0x0754, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0036, 0x076d, - // Entry 256C0 - 256FF - 0x0001, 0x0000, 0x21ec, 0x0001, 0x0036, 0x077e, 0x0001, 0x0036, - 0x0789, 0x0001, 0x0036, 0x07a0, 0x0001, 0x0036, 0x07ab, 0x0008, - 0x0190, 0x0196, 0x018d, 0x0199, 0x019c, 0x019f, 0x01a2, 0x0193, - 0x0001, 0x0036, 0x0754, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, - 0x07b6, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0036, 0x07cc, 0x0001, - 0x0036, 0x07dc, 0x0001, 0x0036, 0x07fb, 0x0001, 0x0036, 0x0811, - 0x0003, 0x01a9, 0x01ca, 0x01eb, 0x0008, 0x01b5, 0x01bb, 0x01b2, - 0x01be, 0x01c1, 0x01c4, 0x01c7, 0x01b8, 0x0001, 0x0036, 0x0821, - // Entry 25700 - 2573F - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, 0x0837, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x0036, 0x084a, 0x0001, 0x0036, 0x0857, 0x0001, - 0x0036, 0x0876, 0x0001, 0x0036, 0x0889, 0x0008, 0x01d6, 0x01dc, - 0x01d3, 0x01df, 0x01e2, 0x01e5, 0x01e8, 0x01d9, 0x0001, 0x0036, - 0x0821, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, 0x0837, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x0036, 0x084a, 0x0001, 0x0036, 0x0857, - 0x0001, 0x0036, 0x0876, 0x0001, 0x0036, 0x0889, 0x0008, 0x01f7, - 0x01fd, 0x01f4, 0x0200, 0x0203, 0x0206, 0x0209, 0x01fa, 0x0001, - // Entry 25740 - 2577F - 0x0036, 0x0821, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0036, 0x0837, - 0x0001, 0x0036, 0x0896, 0x0001, 0x0036, 0x084a, 0x0001, 0x0036, - 0x0857, 0x0001, 0x0036, 0x0876, 0x0001, 0x0036, 0x0889, 0x0003, - 0x021b, 0x0000, 0x0210, 0x0002, 0x0213, 0x0217, 0x0002, 0x0036, - 0x08ba, 0x0915, 0x0002, 0x0036, 0x08f2, 0x094d, 0x0002, 0x021e, - 0x0222, 0x0002, 0x0036, 0x0967, 0x098f, 0x0002, 0x0036, 0x0974, - 0x099c, 0x0004, 0x0234, 0x022e, 0x022b, 0x0231, 0x0001, 0x0036, - 0x09ae, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0036, 0x09bf, 0x0001, - // Entry 25780 - 257BF - 0x0007, 0x0277, 0x0004, 0x0245, 0x023f, 0x023c, 0x0242, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x0256, 0x0250, 0x024d, 0x0253, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0005, 0x025f, 0x0000, 0x0000, - 0x0000, 0x02aa, 0x0002, 0x0262, 0x0286, 0x0003, 0x0266, 0x0000, - 0x0276, 0x000e, 0x0036, 0x0a4c, 0x09c8, 0x09db, 0x09f1, 0x0a07, - 0x0a1a, 0x0a2a, 0x0a3c, 0x0a5f, 0x0a72, 0x0a7f, 0x0a92, 0x0aa5, - // Entry 257C0 - 257FF - 0x0aaf, 0x000e, 0x0036, 0x0a4c, 0x09c8, 0x09db, 0x09f1, 0x0a07, - 0x0a1a, 0x0a2a, 0x0a3c, 0x0a5f, 0x0a72, 0x0a7f, 0x0a92, 0x0aa5, - 0x0aaf, 0x0003, 0x028a, 0x0000, 0x029a, 0x000e, 0x0036, 0x0a4c, - 0x09c8, 0x09db, 0x09f1, 0x0a07, 0x0a1a, 0x0a2a, 0x0a3c, 0x0a5f, - 0x0a72, 0x0a7f, 0x0a92, 0x0aa5, 0x0aaf, 0x000e, 0x0036, 0x0a4c, - 0x09c8, 0x09db, 0x09f1, 0x0a07, 0x0a1a, 0x0a2a, 0x0a3c, 0x0a5f, - 0x0a72, 0x0a7f, 0x0a92, 0x0aa5, 0x0aaf, 0x0001, 0x02ac, 0x0001, - 0x02ae, 0x0001, 0x0000, 0x04ef, 0x0005, 0x02b7, 0x0000, 0x0000, - // Entry 25800 - 2583F - 0x0000, 0x031c, 0x0002, 0x02ba, 0x02eb, 0x0003, 0x02be, 0x02cd, - 0x02dc, 0x000d, 0x0036, 0xffff, 0x0abf, 0x0aca, 0x0ad5, 0x0ae2, - 0x0af0, 0x0afd, 0x0b0b, 0x0b16, 0x0b21, 0x0b2c, 0x0b37, 0x0b46, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, 0x000d, - 0x0036, 0xffff, 0x0b55, 0x0b6e, 0x0b81, 0x0ba5, 0x0bc9, 0x0bf3, - 0x0c1d, 0x0c30, 0x0c43, 0x0c5c, 0x0c6f, 0x0c89, 0x0003, 0x02ef, - 0x02fe, 0x030d, 0x000d, 0x0036, 0xffff, 0x0abf, 0x0aca, 0x0ad5, - // Entry 25840 - 2587F - 0x0ae2, 0x0af0, 0x0afd, 0x0b0b, 0x0b16, 0x0b21, 0x0b2c, 0x0b37, - 0x0b46, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, 0x2398, - 0x000d, 0x0036, 0xffff, 0x0b55, 0x0b6e, 0x0b81, 0x0ba5, 0x0bc9, - 0x0bf3, 0x0c1d, 0x0c30, 0x0c43, 0x0c5c, 0x0c6f, 0x0c89, 0x0001, - 0x031e, 0x0001, 0x0320, 0x0001, 0x0000, 0x06c8, 0x0005, 0x0329, - 0x0000, 0x0000, 0x0000, 0x038e, 0x0002, 0x032c, 0x035d, 0x0003, - 0x0330, 0x033f, 0x034e, 0x000d, 0x0036, 0xffff, 0x0ca0, 0x0cbf, - // Entry 25880 - 258BF - 0x0ce1, 0x0cf7, 0x0d04, 0x0d1a, 0x0d36, 0x0d46, 0x0d56, 0x0d66, - 0x0d70, 0x0d86, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x2220, - 0x2398, 0x000d, 0x0036, 0xffff, 0x0ca0, 0x0cbf, 0x0ce1, 0x0cf7, - 0x0d04, 0x0d1a, 0x0d36, 0x0d46, 0x0d56, 0x0d66, 0x0d70, 0x0d86, - 0x0003, 0x0361, 0x0370, 0x037f, 0x000d, 0x0036, 0xffff, 0x0ca0, - 0x0cbf, 0x0ce1, 0x0cf7, 0x0d04, 0x0d1a, 0x0d36, 0x0d46, 0x0d56, - 0x0d66, 0x0d70, 0x0d86, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - // Entry 258C0 - 258FF - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x2220, 0x2398, 0x000d, 0x0036, 0xffff, 0x0ca0, 0x0cbf, 0x0ce1, - 0x0cf7, 0x0d04, 0x0d1a, 0x0d36, 0x0d46, 0x0d56, 0x0d66, 0x0d70, - 0x0d86, 0x0001, 0x0390, 0x0001, 0x0392, 0x0001, 0x0000, 0x1a1d, - 0x0040, 0x03d6, 0x0000, 0x0000, 0x03db, 0x03f2, 0x0409, 0x0420, - 0x0437, 0x0449, 0x045b, 0x0472, 0x0489, 0x04a0, 0x04bb, 0x04d6, - 0x0000, 0x0000, 0x0000, 0x04f1, 0x050a, 0x0523, 0x0000, 0x0000, - 0x0000, 0x053c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0541, - // Entry 25900 - 2593F - 0x0555, 0x0569, 0x057d, 0x0591, 0x05a5, 0x05b9, 0x05cd, 0x05e1, - 0x05f5, 0x0609, 0x061d, 0x0631, 0x0645, 0x0659, 0x066d, 0x0681, - 0x0695, 0x06a9, 0x06bd, 0x06d1, 0x0000, 0x06e5, 0x0000, 0x06ea, - 0x0700, 0x0712, 0x0724, 0x073a, 0x074c, 0x075e, 0x0774, 0x0786, - 0x0798, 0x0001, 0x03d8, 0x0001, 0x0036, 0x0d9c, 0x0003, 0x03df, - 0x03e2, 0x03e7, 0x0001, 0x0036, 0x0dac, 0x0003, 0x0036, 0x0db9, - 0x0dd6, 0x0dea, 0x0002, 0x03ea, 0x03ee, 0x0002, 0x0036, 0x0e0d, - 0x0e0d, 0x0002, 0x0036, 0x0e2d, 0x0e2d, 0x0003, 0x03f6, 0x03f9, - // Entry 25940 - 2597F - 0x03fe, 0x0001, 0x0036, 0x0e48, 0x0003, 0x0036, 0x0db9, 0x0dd6, - 0x0dea, 0x0002, 0x0401, 0x0405, 0x0002, 0x0036, 0x0e4d, 0x0e4d, - 0x0002, 0x0036, 0x0e2d, 0x0e2d, 0x0003, 0x040d, 0x0410, 0x0415, - 0x0001, 0x0036, 0x0e48, 0x0003, 0x0036, 0x0db9, 0x0dd6, 0x0dea, - 0x0002, 0x0418, 0x041c, 0x0002, 0x0036, 0x0e4d, 0x0e4d, 0x0002, - 0x0036, 0x0e2d, 0x0e2d, 0x0003, 0x0424, 0x0427, 0x042c, 0x0001, - 0x0036, 0x0e61, 0x0003, 0x0036, 0x0e7a, 0x0ea6, 0x0ec9, 0x0002, - 0x042f, 0x0433, 0x0002, 0x0036, 0x0ef8, 0x0ef8, 0x0002, 0x0036, - // Entry 25980 - 259BF - 0x0f18, 0x0f18, 0x0003, 0x043b, 0x0000, 0x043e, 0x0001, 0x0036, - 0x0f42, 0x0002, 0x0441, 0x0445, 0x0002, 0x0036, 0x0ef8, 0x0ef8, - 0x0002, 0x0036, 0x0f53, 0x0f53, 0x0003, 0x044d, 0x0000, 0x0450, - 0x0001, 0x0036, 0x0f42, 0x0002, 0x0453, 0x0457, 0x0002, 0x0036, - 0x0ef8, 0x0ef8, 0x0002, 0x0036, 0x0f53, 0x0f53, 0x0003, 0x045f, - 0x0462, 0x0467, 0x0001, 0x0036, 0x0f72, 0x0003, 0x0036, 0x0f7c, - 0x0f99, 0x0fb0, 0x0002, 0x046a, 0x046e, 0x0002, 0x0036, 0x0fd3, - 0x0fd3, 0x0002, 0x0036, 0x0fe7, 0x0fe7, 0x0003, 0x0476, 0x0479, - // Entry 259C0 - 259FF - 0x047e, 0x0001, 0x0036, 0x0f72, 0x0003, 0x0036, 0x0f7c, 0x0f99, - 0x0fb0, 0x0002, 0x0481, 0x0485, 0x0002, 0x0036, 0x0fd3, 0x0fd3, - 0x0002, 0x0036, 0x0fe7, 0x0fe7, 0x0003, 0x048d, 0x0490, 0x0495, - 0x0001, 0x0036, 0x0f72, 0x0003, 0x0036, 0x0f7c, 0x0f99, 0x0fb0, - 0x0002, 0x0498, 0x049c, 0x0002, 0x0036, 0x0fd3, 0x0fd3, 0x0002, - 0x0036, 0x0fe7, 0x0fe7, 0x0004, 0x04a5, 0x04a8, 0x04ad, 0x04b8, - 0x0001, 0x0036, 0x060c, 0x0003, 0x0036, 0x1002, 0x1028, 0x1045, - 0x0002, 0x04b0, 0x04b4, 0x0002, 0x0036, 0x1071, 0x1071, 0x0002, - // Entry 25A00 - 25A3F - 0x0036, 0x108b, 0x108b, 0x0001, 0x0036, 0x10ac, 0x0004, 0x04c0, - 0x04c3, 0x04c8, 0x04d3, 0x0001, 0x0036, 0x10cd, 0x0003, 0x0036, - 0x1002, 0x1028, 0x1045, 0x0002, 0x04cb, 0x04cf, 0x0002, 0x0036, - 0x1071, 0x1071, 0x0002, 0x0036, 0x10d5, 0x10d5, 0x0001, 0x0036, - 0x10ac, 0x0004, 0x04db, 0x04de, 0x04e3, 0x04ee, 0x0001, 0x0036, - 0x10cd, 0x0003, 0x0036, 0x1002, 0x1028, 0x1045, 0x0002, 0x04e6, - 0x04ea, 0x0002, 0x0036, 0x1071, 0x1071, 0x0002, 0x0036, 0x108b, - 0x108b, 0x0001, 0x0036, 0x10ac, 0x0003, 0x04f5, 0x04f8, 0x04ff, - // Entry 25A40 - 25A7F - 0x0001, 0x0036, 0x10eb, 0x0005, 0x0036, 0x110e, 0x111e, 0x112b, - 0x10f5, 0x1138, 0x0002, 0x0502, 0x0506, 0x0002, 0x0036, 0x1142, - 0x1142, 0x0002, 0x0036, 0x1156, 0x1156, 0x0003, 0x050e, 0x0511, - 0x0518, 0x0001, 0x0036, 0x10eb, 0x0005, 0x0036, 0x110e, 0x111e, - 0x112b, 0x10f5, 0x1138, 0x0002, 0x051b, 0x051f, 0x0002, 0x0036, - 0x1142, 0x1142, 0x0002, 0x0036, 0x1156, 0x1156, 0x0003, 0x0527, - 0x052a, 0x0531, 0x0001, 0x0036, 0x10eb, 0x0005, 0x0036, 0x110e, - 0x111e, 0x112b, 0x10f5, 0x1138, 0x0002, 0x0534, 0x0538, 0x0002, - // Entry 25A80 - 25ABF - 0x0036, 0x1142, 0x1142, 0x0002, 0x0036, 0x1156, 0x1156, 0x0001, - 0x053e, 0x0001, 0x0036, 0x1171, 0x0003, 0x0000, 0x0545, 0x054a, - 0x0003, 0x0036, 0x118e, 0x11b1, 0x11cb, 0x0002, 0x054d, 0x0551, - 0x0002, 0x0036, 0x1071, 0x1071, 0x0002, 0x0036, 0x11f4, 0x108b, - 0x0003, 0x0000, 0x0559, 0x055e, 0x0003, 0x0036, 0x118e, 0x11b1, - 0x11cb, 0x0002, 0x0561, 0x0565, 0x0002, 0x0036, 0x1071, 0x1071, - 0x0002, 0x0036, 0x108b, 0x108b, 0x0003, 0x0000, 0x056d, 0x0572, - 0x0003, 0x0036, 0x118e, 0x11b1, 0x11cb, 0x0002, 0x0575, 0x0579, - // Entry 25AC0 - 25AFF - 0x0002, 0x0036, 0x1071, 0x1071, 0x0002, 0x0036, 0x11f4, 0x108b, - 0x0003, 0x0000, 0x0581, 0x0586, 0x0003, 0x0036, 0x1212, 0x123b, - 0x125b, 0x0002, 0x0589, 0x058d, 0x0002, 0x0036, 0x128a, 0x128a, - 0x0002, 0x0036, 0x12aa, 0x12aa, 0x0003, 0x0000, 0x0595, 0x059a, - 0x0003, 0x0036, 0x12d4, 0x12ec, 0x12fe, 0x0002, 0x059d, 0x05a1, - 0x0002, 0x0036, 0x128a, 0x128a, 0x0002, 0x0036, 0x12aa, 0x12aa, - 0x0003, 0x0000, 0x05a9, 0x05ae, 0x0003, 0x0036, 0x1314, 0x1327, - 0x1336, 0x0002, 0x05b1, 0x05b5, 0x0002, 0x0036, 0x128a, 0x128a, - // Entry 25B00 - 25B3F - 0x0002, 0x0036, 0x12aa, 0x12aa, 0x0003, 0x0000, 0x05bd, 0x05c2, - 0x0003, 0x0036, 0x1349, 0x1375, 0x1398, 0x0002, 0x05c5, 0x05c9, - 0x0002, 0x0036, 0x13ca, 0x13ca, 0x0002, 0x0036, 0x13ed, 0x13ed, - 0x0003, 0x0000, 0x05d1, 0x05d6, 0x0003, 0x0036, 0x141a, 0x1432, - 0x1444, 0x0002, 0x05d9, 0x05dd, 0x0002, 0x0036, 0x13ca, 0x13ca, - 0x0002, 0x0036, 0x13ed, 0x13ed, 0x0003, 0x0000, 0x05e5, 0x05ea, - 0x0003, 0x0036, 0x145a, 0x146c, 0x147b, 0x0002, 0x05ed, 0x05f1, - 0x0002, 0x0036, 0x13ca, 0x13ca, 0x0002, 0x0036, 0x13ed, 0x13ed, - // Entry 25B40 - 25B7F - 0x0003, 0x0000, 0x05f9, 0x05fe, 0x0003, 0x0036, 0x1490, 0x14bc, - 0x14df, 0x0002, 0x0601, 0x0605, 0x0002, 0x0036, 0x1511, 0x1511, - 0x0002, 0x0036, 0x1534, 0x1534, 0x0003, 0x0000, 0x060d, 0x0612, - 0x0003, 0x0036, 0x1561, 0x1579, 0x158b, 0x0002, 0x0615, 0x0619, - 0x0002, 0x0036, 0x1511, 0x1511, 0x0002, 0x0036, 0x1534, 0x1534, - 0x0003, 0x0000, 0x0621, 0x0626, 0x0003, 0x0036, 0x15a1, 0x15b6, - 0x15c5, 0x0002, 0x0629, 0x062d, 0x0002, 0x0036, 0x1511, 0x1511, - 0x0002, 0x0036, 0x1534, 0x1534, 0x0003, 0x0000, 0x0635, 0x063a, - // Entry 25B80 - 25BBF - 0x0003, 0x0036, 0x15d8, 0x1604, 0x1627, 0x0002, 0x063d, 0x0641, - 0x0002, 0x0036, 0x1659, 0x1659, 0x0002, 0x0036, 0x167c, 0x167c, - 0x0003, 0x0000, 0x0649, 0x064e, 0x0003, 0x0036, 0x16a9, 0x16c1, - 0x16d3, 0x0002, 0x0651, 0x0655, 0x0002, 0x0036, 0x1659, 0x1659, - 0x0002, 0x0036, 0x167c, 0x167c, 0x0003, 0x0000, 0x065d, 0x0662, - 0x0003, 0x0036, 0x16e9, 0x16fe, 0x170d, 0x0002, 0x0665, 0x0669, - 0x0002, 0x0036, 0x1659, 0x1659, 0x0002, 0x0036, 0x167c, 0x167c, - 0x0003, 0x0000, 0x0671, 0x0676, 0x0003, 0x0036, 0x1720, 0x174c, - // Entry 25BC0 - 25BFF - 0x176f, 0x0002, 0x0679, 0x067d, 0x0002, 0x0036, 0x17a1, 0x17a1, - 0x0002, 0x0036, 0x17c4, 0x17c4, 0x0003, 0x0000, 0x0685, 0x068a, - 0x0003, 0x0036, 0x17f1, 0x1809, 0x181b, 0x0002, 0x068d, 0x0691, - 0x0002, 0x0036, 0x17a1, 0x17a1, 0x0002, 0x0036, 0x17c4, 0x17c4, - 0x0003, 0x0000, 0x0699, 0x069e, 0x0003, 0x0036, 0x1831, 0x1846, - 0x1855, 0x0002, 0x06a1, 0x06a5, 0x0002, 0x0036, 0x17a1, 0x17a1, - 0x0002, 0x0036, 0x17c4, 0x17c4, 0x0003, 0x0000, 0x06ad, 0x06b2, - 0x0003, 0x0036, 0x1868, 0x188b, 0x18a5, 0x0002, 0x06b5, 0x06b9, - // Entry 25C00 - 25C3F - 0x0002, 0x0036, 0x18ce, 0x18ce, 0x0002, 0x0036, 0x18e8, 0x18e8, - 0x0003, 0x0000, 0x06c1, 0x06c6, 0x0003, 0x0036, 0x190c, 0x1924, - 0x1936, 0x0002, 0x06c9, 0x06cd, 0x0002, 0x0036, 0x18ce, 0x18ce, - 0x0002, 0x0036, 0x18e8, 0x18e8, 0x0003, 0x0000, 0x06d5, 0x06da, - 0x0003, 0x0036, 0x194c, 0x1961, 0x1970, 0x0002, 0x06dd, 0x06e1, - 0x0002, 0x0036, 0x18ce, 0x18ce, 0x0002, 0x0036, 0x18e8, 0x18e8, - 0x0001, 0x06e7, 0x0001, 0x0036, 0x1983, 0x0003, 0x06ee, 0x06f1, - 0x06f5, 0x0001, 0x0036, 0x19a9, 0x0002, 0x0036, 0xffff, 0x19b9, - // Entry 25C40 - 25C7F - 0x0002, 0x06f8, 0x06fc, 0x0002, 0x0036, 0x19d3, 0x19d3, 0x0002, - 0x0036, 0x19ea, 0x19ea, 0x0003, 0x0704, 0x0000, 0x0707, 0x0001, - 0x0036, 0x1a0b, 0x0002, 0x070a, 0x070e, 0x0002, 0x0036, 0x19d3, - 0x19d3, 0x0002, 0x0036, 0x1a13, 0x1a13, 0x0003, 0x0716, 0x0000, - 0x0719, 0x0001, 0x0036, 0x1a0b, 0x0002, 0x071c, 0x0720, 0x0002, - 0x0036, 0x19d3, 0x19d3, 0x0002, 0x0036, 0x1a13, 0x1a13, 0x0003, - 0x0728, 0x072b, 0x072f, 0x0001, 0x0036, 0x1a28, 0x0002, 0x0036, - 0xffff, 0x1a35, 0x0002, 0x0732, 0x0736, 0x0002, 0x0036, 0x1a4c, - // Entry 25C80 - 25CBF - 0x1a4c, 0x0002, 0x0036, 0x1a60, 0x1a60, 0x0003, 0x073e, 0x0000, - 0x0741, 0x0001, 0x0036, 0x1a7e, 0x0002, 0x0744, 0x0748, 0x0002, - 0x0036, 0x1a4c, 0x1a4c, 0x0002, 0x0036, 0x1a86, 0x1a86, 0x0003, - 0x0750, 0x0000, 0x0753, 0x0001, 0x0036, 0x1a7e, 0x0002, 0x0756, - 0x075a, 0x0002, 0x0036, 0x1a4c, 0x1a4c, 0x0002, 0x0036, 0x1a86, - 0x1a86, 0x0003, 0x0762, 0x0765, 0x0769, 0x0001, 0x0036, 0x1a9b, - 0x0002, 0x0036, 0xffff, 0x1aa8, 0x0002, 0x076c, 0x0770, 0x0002, - 0x0036, 0x1ab5, 0x1ab5, 0x0002, 0x0036, 0x1ac9, 0x1ac9, 0x0003, - // Entry 25CC0 - 25CFF - 0x0778, 0x0000, 0x077b, 0x0001, 0x0036, 0x1ae7, 0x0002, 0x077e, - 0x0782, 0x0002, 0x0036, 0x1ab5, 0x1ab5, 0x0002, 0x0036, 0x1aef, - 0x1aef, 0x0003, 0x078a, 0x0000, 0x078d, 0x0001, 0x0036, 0x1ae7, - 0x0002, 0x0790, 0x0794, 0x0002, 0x0036, 0x1ab5, 0x1ab5, 0x0002, - 0x0036, 0x1aef, 0x1aef, 0x0001, 0x079a, 0x0001, 0x0036, 0x1b04, - 0x0004, 0x07a2, 0x07a7, 0x07ac, 0x07bb, 0x0003, 0x0000, 0x1dc7, - 0x2936, 0x293d, 0x0003, 0x0036, 0x1b2d, 0x1b3c, 0x1b63, 0x0002, - 0x0000, 0x07af, 0x0003, 0x0000, 0x07b6, 0x07b3, 0x0001, 0x0036, - // Entry 25D00 - 25D3F - 0x1b93, 0x0003, 0x0036, 0xffff, 0x1bde, 0x1c20, 0x0002, 0x0000, - 0x07be, 0x0003, 0x0858, 0x08ee, 0x07c2, 0x0094, 0x0036, 0x1c68, - 0x1c8e, 0x1ccd, 0x1d0c, 0x1d7b, 0x1e48, 0x1ee9, 0x1fcb, 0x211d, - 0x2272, 0x23c2, 0xffff, 0x24e1, 0x2573, 0x261d, 0x26ec, 0x27ce, - 0x288e, 0x298f, 0x2ac2, 0x2c15, 0x2d22, 0x2e10, 0x2ee5, 0x2fc4, - 0x3057, 0x3077, 0x30c0, 0x3147, 0x31b0, 0x323f, 0x327f, 0x3314, - 0x33a3, 0x3450, 0x34e3, 0x3516, 0x357b, 0x363b, 0x371b, 0x378a, - 0x37aa, 0x37dd, 0x3858, 0x390b, 0x3970, 0x3a68, 0x3b21, 0x3baf, - // Entry 25D40 - 25D7F - 0x3ca4, 0x3d89, 0x3df8, 0x3e3a, 0x3ea2, 0x3ece, 0x3f20, 0x3fb3, - 0x3ff8, 0x407f, 0x4195, 0x425a, 0x42b2, 0x430f, 0x43ea, 0x448e, - 0x4503, 0x4526, 0x457e, 0x45aa, 0x45f2, 0x463a, 0x4699, 0x473a, - 0x47e4, 0x4888, 0xffff, 0x4909, 0x494e, 0x49aa, 0x4a1f, 0x4a6e, - 0x4b0d, 0x4b36, 0x4b96, 0x4c19, 0x4c7e, 0x4d05, 0x4d2b, 0x4d54, - 0x4d96, 0x4dfb, 0x4e7c, 0x4ef4, 0x4ff7, 0x50f7, 0x51af, 0x5230, - 0x5256, 0x5273, 0x52cc, 0x53af, 0x548b, 0x5530, 0x554a, 0x55cc, - 0x56bf, 0x577b, 0x5819, 0x58a6, 0x58c3, 0x5929, 0x59ca, 0x5a65, - // Entry 25D80 - 25DBF - 0x5af8, 0x5b84, 0x5c53, 0x5c79, 0x5c99, 0x5cbf, 0x5ce8, 0x5d2e, - 0xffff, 0x5dd2, 0x5e47, 0x5e89, 0x5eb2, 0x5ef7, 0x5f30, 0x5f56, - 0x5f73, 0x5fb0, 0x602b, 0x6051, 0x6091, 0x6106, 0x614f, 0x61e2, - 0x6225, 0x62cc, 0x6376, 0x63f7, 0x6452, 0x651d, 0x65b0, 0x65d3, - 0x6609, 0x6669, 0x6725, 0x0094, 0x0036, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1d42, 0x1e28, 0x1ec3, 0x1f70, 0x20bc, 0x221a, 0x235d, - 0xffff, 0x24c7, 0x2550, 0x25f4, 0x26aa, 0x27ab, 0x284f, 0x2947, - 0x2a5a, 0x2bcd, 0x2ce0, 0x2de1, 0x2ea9, 0x2f98, 0xffff, 0xffff, - // Entry 25DC0 - 25DFF - 0x309a, 0xffff, 0x3186, 0xffff, 0x325f, 0x32fa, 0x3383, 0x3424, - 0xffff, 0xffff, 0x3555, 0x3602, 0x3701, 0xffff, 0xffff, 0xffff, - 0x381c, 0xffff, 0x3931, 0x3a29, 0xffff, 0x3b76, 0x3c5c, 0x3d6f, - 0xffff, 0xffff, 0xffff, 0xffff, 0x3ef4, 0xffff, 0xffff, 0x4034, - 0x4150, 0xffff, 0xffff, 0x42d2, 0x43c4, 0x4471, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x467c, 0x4714, 0x47c1, 0x4865, - 0xffff, 0xffff, 0xffff, 0x498d, 0xffff, 0x4a3c, 0xffff, 0xffff, - 0x4b72, 0xffff, 0x4c58, 0xffff, 0xffff, 0xffff, 0xffff, 0x4dd8, - // Entry 25E00 - 25E3F - 0xffff, 0x4e9f, 0x4fab, 0x50ca, 0x518c, 0xffff, 0xffff, 0xffff, - 0x5293, 0x5379, 0x5456, 0xffff, 0xffff, 0x5589, 0x568d, 0x575e, - 0x57f0, 0xffff, 0xffff, 0x5903, 0x59b0, 0x5a39, 0xffff, 0x5b3a, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5d08, 0xffff, 0x5db5, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5f90, - 0xffff, 0xffff, 0x6074, 0xffff, 0x6123, 0xffff, 0x6202, 0x62a6, - 0x6353, 0xffff, 0x6420, 0x64f1, 0xffff, 0xffff, 0xffff, 0x6643, - 0x66f0, 0x0094, 0x0036, 0xffff, 0xffff, 0xffff, 0xffff, 0x1dd6, - // Entry 25E40 - 25E7F - 0x1e8a, 0x1f31, 0x2048, 0x21a0, 0x22ec, 0x2449, 0xffff, 0x251d, - 0x25b8, 0x2668, 0x2750, 0x2813, 0x28ef, 0x29f9, 0x2b4c, 0x2c7f, - 0x2d86, 0x2e61, 0x2f43, 0x3012, 0xffff, 0xffff, 0x3108, 0xffff, - 0x31fc, 0xffff, 0x32c1, 0x3350, 0x33e5, 0x349e, 0xffff, 0xffff, - 0x35c3, 0x3696, 0x3757, 0xffff, 0xffff, 0xffff, 0x38b6, 0xffff, - 0x39d1, 0x3ac9, 0xffff, 0x3c0a, 0x3d0e, 0x3dc5, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3f6e, 0xffff, 0xffff, 0x40ec, 0x41fc, 0xffff, - 0xffff, 0x436e, 0x4432, 0x44cd, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 25E80 - 25EBF - 0xffff, 0xffff, 0x46d8, 0x4782, 0x4829, 0x48cd, 0xffff, 0xffff, - 0xffff, 0x49e9, 0xffff, 0x4ac2, 0xffff, 0xffff, 0x4bdc, 0xffff, - 0x4cc6, 0xffff, 0xffff, 0xffff, 0xffff, 0x4e40, 0xffff, 0x4f43, - 0x5065, 0x5146, 0x51f4, 0xffff, 0xffff, 0xffff, 0x5327, 0x5407, - 0x54e2, 0xffff, 0xffff, 0x5631, 0x5713, 0x57ba, 0x5864, 0xffff, - 0xffff, 0x5971, 0x5a06, 0x5ab3, 0xffff, 0x5bf0, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x5d76, 0xffff, 0x5e11, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5ff2, 0xffff, 0xffff, - // Entry 25EC0 - 25EFF - 0x60d0, 0xffff, 0x619d, 0xffff, 0x626a, 0x6314, 0x63bb, 0xffff, - 0x64a6, 0x656b, 0xffff, 0xffff, 0xffff, 0x66b1, 0x677c, 0x0002, - 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, - 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1fc1, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, - 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, - // Entry 25F00 - 25F3F - 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0037, 0xffff, - 0x0000, 0x0004, 0x0008, 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, - 0x0022, 0x0026, 0x002a, 0x002e, 0x000d, 0x0037, 0xffff, 0x0033, - 0x003c, 0x0044, 0x004c, 0x0053, 0x0059, 0x005f, 0x0065, 0x006b, - 0x0075, 0x007d, 0x0088, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, - 0xffff, 0x23db, 0x22e6, 0x296e, 0x23db, 0x296e, 0x23db, 0x23db, - 0x2972, 0x24fb, 0x2975, 0x22ee, 0x22f0, 0x0002, 0x0069, 0x007f, - 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0037, 0x0094, 0x0098, - // Entry 25F40 - 25F7F - 0x009c, 0x00a3, 0x00a9, 0x00ad, 0x00b4, 0x0007, 0x0037, 0x00b8, - 0x00bf, 0x00c6, 0x00d0, 0x00d9, 0x00e0, 0x00ea, 0x0002, 0x0000, - 0x0082, 0x0007, 0x0000, 0x23db, 0x2970, 0x25bc, 0x25bc, 0x2970, - 0x2970, 0x2970, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, - 0x0005, 0x0037, 0xffff, 0x00f1, 0x00f8, 0x00ff, 0x0106, 0x0005, - 0x0037, 0xffff, 0x010d, 0x0121, 0x0136, 0x014e, 0x0001, 0x00a1, - 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, - 0x0037, 0x0165, 0x0001, 0x0037, 0x016d, 0x0002, 0x00b1, 0x00b4, - // Entry 25F80 - 25FBF - 0x0001, 0x0037, 0x0165, 0x0001, 0x0037, 0x016d, 0x0003, 0x00c1, - 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0037, 0x0177, 0x018c, - 0x0001, 0x00c3, 0x0002, 0x0037, 0x01a1, 0x01ab, 0x0004, 0x00d5, - 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, - 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, - 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, - // Entry 25FC0 - 25FFF - 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, - 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, - 0x0162, 0x0001, 0x012c, 0x0001, 0x0037, 0x01b5, 0x0001, 0x0131, - // Entry 26000 - 2603F - 0x0001, 0x0037, 0x01bc, 0x0001, 0x0136, 0x0001, 0x0037, 0x01c4, - 0x0001, 0x013b, 0x0001, 0x0037, 0x01ca, 0x0002, 0x0141, 0x0144, - 0x0001, 0x0037, 0x01d0, 0x0003, 0x0037, 0x01d4, 0x01dd, 0x01e3, - 0x0001, 0x014b, 0x0001, 0x0037, 0x01ea, 0x0001, 0x0150, 0x0001, - 0x0037, 0x01f8, 0x0001, 0x0155, 0x0001, 0x0037, 0x020c, 0x0001, - 0x015a, 0x0001, 0x0037, 0x0213, 0x0001, 0x015f, 0x0001, 0x0037, - 0x021b, 0x0001, 0x0164, 0x0001, 0x0037, 0x0222, 0x0002, 0x0003, - 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 26040 - 2607F - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, - 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0019, 0xffff, 0x0003, - 0x2420, 0x2424, 0x000f, 0x2429, 0x242d, 0x2431, 0x2435, 0x2439, - 0x243d, 0x2442, 0x2447, 0x000d, 0x0037, 0xffff, 0x0232, 0x023f, - // Entry 26080 - 260BF - 0x024d, 0x025d, 0x026a, 0x0279, 0x028c, 0x029b, 0x02ab, 0x02b9, - 0x02c8, 0x02e0, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, - 0x296e, 0x25bc, 0x25bc, 0x25bc, 0x25bc, 0x2975, 0x296e, 0x22ee, - 0x25bc, 0x2977, 0x2977, 0x2977, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0037, 0x02f7, 0x02fb, 0x02ff, - 0x0303, 0x0308, 0x030c, 0x0310, 0x0007, 0x0037, 0x0314, 0x031e, - 0x032f, 0x0338, 0x0343, 0x034b, 0x0355, 0x0002, 0x0000, 0x0082, - 0x0007, 0x0000, 0x23db, 0x2159, 0x214e, 0x2382, 0x2382, 0x2382, - // Entry 260C0 - 260FF - 0x2382, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, - 0x0009, 0xffff, 0x025a, 0x025d, 0x0260, 0x0263, 0x0005, 0x0037, - 0xffff, 0x0363, 0x0370, 0x037e, 0x038e, 0x0001, 0x00a1, 0x0003, - 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, - 0x039b, 0x0001, 0x0037, 0x03a6, 0x0002, 0x00b1, 0x00b4, 0x0001, - 0x0037, 0x039b, 0x0001, 0x0037, 0x03a6, 0x0003, 0x00c1, 0x0000, - 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0037, 0x03b0, 0x03be, 0x0001, - 0x00c3, 0x0002, 0x0037, 0x03ce, 0x03d1, 0x0004, 0x00d5, 0x00cf, - // Entry 26100 - 2613F - 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, - 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 26140 - 2617F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, - 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, - 0x0001, 0x012c, 0x0001, 0x0037, 0x03d4, 0x0001, 0x0131, 0x0001, - 0x0005, 0x0787, 0x0001, 0x0136, 0x0001, 0x0037, 0x03dc, 0x0001, - 0x013b, 0x0001, 0x0037, 0x03e1, 0x0002, 0x0141, 0x0144, 0x0001, - 0x0019, 0x01e1, 0x0003, 0x0037, 0x03e8, 0x03ee, 0x03f9, 0x0001, - // Entry 26180 - 261BF - 0x014b, 0x0001, 0x0037, 0x03ff, 0x0001, 0x0150, 0x0001, 0x0037, - 0x0409, 0x0001, 0x0155, 0x0001, 0x0009, 0x0308, 0x0001, 0x015a, - 0x0001, 0x0037, 0x041e, 0x0001, 0x015f, 0x0001, 0x000a, 0x01c8, - 0x0001, 0x0164, 0x0001, 0x0037, 0x0427, 0x0002, 0x0003, 0x00e9, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - // Entry 261C0 - 261FF - 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, - 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, - 0x22d0, 0x2246, 0x224a, 0x224e, 0x22d4, 0x22d8, 0x22dc, 0x2236, - 0x22e0, 0x21e2, 0x000d, 0x0037, 0xffff, 0x0438, 0x0445, 0x0453, - 0x0461, 0x0472, 0x0482, 0x0499, 0x04b3, 0x04cd, 0x04e8, 0x0502, - 0x0521, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, - 0x22e6, 0x296e, 0x2382, 0x296e, 0x2483, 0x2483, 0x2382, 0x2970, - // Entry 26200 - 2623F - 0x22ec, 0x22ee, 0x22f0, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, - 0x0000, 0x0076, 0x0007, 0x0037, 0x0540, 0x0544, 0x0548, 0x054c, - 0x0550, 0x0554, 0x0558, 0x0007, 0x0037, 0x055c, 0x056b, 0x057a, - 0x058c, 0x059d, 0x05b7, 0x05d2, 0x0002, 0x0000, 0x0082, 0x0007, - 0x0000, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0033, - 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0009, - 0xffff, 0x025a, 0x025d, 0x0260, 0x0263, 0x0005, 0x0009, 0xffff, - 0x0266, 0x026d, 0x0274, 0x027b, 0x0001, 0x00a1, 0x0003, 0x00a5, - // Entry 26240 - 2627F - 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, 0x05e1, - 0x0001, 0x0037, 0x05e6, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0037, - 0x05e1, 0x0001, 0x0037, 0x05e6, 0x0003, 0x00c1, 0x0000, 0x00bb, - 0x0001, 0x00bd, 0x0002, 0x0037, 0x05ec, 0x05fb, 0x0001, 0x00c3, - 0x0002, 0x0037, 0x0609, 0x060c, 0x0004, 0x00d5, 0x00cf, 0x00cc, - 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, - 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - // Entry 26280 - 262BF - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, - 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, - // Entry 262C0 - 262FF - 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, - 0x012c, 0x0001, 0x0037, 0x060f, 0x0001, 0x0131, 0x0001, 0x0005, - 0x0787, 0x0001, 0x0136, 0x0001, 0x0037, 0x0616, 0x0001, 0x013b, - 0x0001, 0x0037, 0x061c, 0x0002, 0x0141, 0x0144, 0x0001, 0x0037, - 0x0623, 0x0003, 0x0037, 0x062a, 0x062f, 0x0634, 0x0001, 0x014b, - 0x0001, 0x0037, 0x063a, 0x0001, 0x0150, 0x0001, 0x0037, 0x064c, - 0x0001, 0x0155, 0x0001, 0x0009, 0x0308, 0x0001, 0x015a, 0x0001, - 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, 0x0009, 0x030c, 0x0001, - // Entry 26300 - 2633F - 0x0164, 0x0001, 0x0037, 0x0657, 0x0003, 0x0004, 0x01a0, 0x0431, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0037, 0x0666, 0x0001, 0x0037, 0x0681, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0000, 0x236f, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, - // Entry 26340 - 2637F - 0x0132, 0x0153, 0x016d, 0x017e, 0x018f, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0005, 0xffff, 0x0636, - 0x22cc, 0x221a, 0x2326, 0x232a, 0x224e, 0x22d4, 0x22d8, 0x232e, - 0x2332, 0x2336, 0x233a, 0x000d, 0x0000, 0xffff, 0x2483, 0x22e6, - 0x296e, 0x2382, 0x296e, 0x2483, 0x2483, 0x2382, 0x2970, 0x22ec, - 0x22ee, 0x22f0, 0x000d, 0x0037, 0xffff, 0x0696, 0x069d, 0x06a5, - 0x06ab, 0x06b1, 0x06b6, 0x06bc, 0x06c2, 0x06c9, 0x06d2, 0x06d9, - 0x06e2, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0005, 0xffff, - // Entry 26380 - 263BF - 0x0636, 0x22cc, 0x221a, 0x2326, 0x232a, 0x224e, 0x22d4, 0x22d8, - 0x232e, 0x2332, 0x2336, 0x233a, 0x000d, 0x0000, 0xffff, 0x2483, - 0x22e6, 0x296e, 0x2382, 0x296e, 0x2483, 0x2483, 0x2382, 0x2970, - 0x22ec, 0x22ee, 0x22f0, 0x000d, 0x0037, 0xffff, 0x0696, 0x069d, - 0x06a5, 0x06ab, 0x06b1, 0x06b6, 0x06bc, 0x06c2, 0x06c9, 0x06d2, - 0x06d9, 0x06e2, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, - 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0001, 0x1ff3, 0x200d, 0x2011, - 0x2015, 0x2019, 0x201d, 0x2021, 0x0007, 0x0000, 0x22f0, 0x2970, - // Entry 263C0 - 263FF - 0x2975, 0x25bc, 0x25bc, 0x2970, 0x2970, 0x0007, 0x0037, 0x06eb, - 0x06ee, 0x06f1, 0x06f4, 0x06f7, 0x06fa, 0x06fd, 0x0007, 0x0037, - 0x0700, 0x0708, 0x0715, 0x0720, 0x072c, 0x0737, 0x0742, 0x0005, - 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0001, 0x1ff3, - 0x200d, 0x2011, 0x2015, 0x2019, 0x201d, 0x2021, 0x0007, 0x0000, - 0x22f0, 0x2970, 0x2975, 0x25bc, 0x25bc, 0x2970, 0x2970, 0x0007, - 0x0037, 0x06eb, 0x06ee, 0x06f1, 0x06f4, 0x06f7, 0x06fa, 0x06fd, - 0x0007, 0x0037, 0x0700, 0x0708, 0x0715, 0x0720, 0x072c, 0x0737, - // Entry 26400 - 2643F - 0x0749, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, - 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0037, - 0xffff, 0x0751, 0x075f, 0x076d, 0x077b, 0x0003, 0x011d, 0x0124, - 0x012b, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x0037, 0xffff, 0x0751, 0x075f, 0x076d, 0x077b, 0x0001, 0x0134, - 0x0003, 0x0138, 0x0141, 0x014a, 0x0002, 0x013b, 0x013e, 0x0001, - // Entry 26440 - 2647F - 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0002, 0x0144, 0x0147, - 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0002, 0x014d, - 0x0150, 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0003, - 0x0162, 0x0000, 0x0157, 0x0002, 0x015a, 0x015e, 0x0002, 0x0037, - 0x0789, 0x07ac, 0x0002, 0x0037, 0x0799, 0x07bd, 0x0002, 0x0165, - 0x0169, 0x0002, 0x0002, 0x0434, 0x4c28, 0x0002, 0x0037, 0x07c7, - 0x07cb, 0x0004, 0x017b, 0x0175, 0x0172, 0x0178, 0x0001, 0x0037, - 0x07ce, 0x0001, 0x0037, 0x07e7, 0x0001, 0x0001, 0x1fb9, 0x0001, - // Entry 26480 - 264BF - 0x0002, 0x01fb, 0x0004, 0x018c, 0x0186, 0x0183, 0x0189, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x019d, 0x0197, 0x0194, 0x019a, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x01e1, 0x0000, 0x0000, - 0x01e6, 0x01fb, 0x020b, 0x021b, 0x022b, 0x023b, 0x024b, 0x0260, - 0x0270, 0x0280, 0x0295, 0x02a5, 0x0000, 0x0000, 0x0000, 0x02b5, - 0x02ca, 0x02da, 0x0000, 0x0000, 0x0000, 0x02ea, 0x0000, 0x0000, - // Entry 264C0 - 264FF - 0x0000, 0x0000, 0x0000, 0x02ef, 0x02f7, 0x02ff, 0x0307, 0x030f, - 0x0317, 0x031f, 0x0327, 0x032f, 0x0337, 0x033f, 0x0347, 0x034f, - 0x0357, 0x035f, 0x0367, 0x036f, 0x0377, 0x037f, 0x0387, 0x038f, - 0x0000, 0x0397, 0x0000, 0x039c, 0x03ac, 0x03bc, 0x03cc, 0x03dc, - 0x03ec, 0x03fc, 0x040c, 0x041c, 0x042c, 0x0001, 0x01e3, 0x0001, - 0x0000, 0x1a35, 0x0003, 0x01ea, 0x01ed, 0x01f2, 0x0001, 0x0037, - 0x07fa, 0x0003, 0x0037, 0x07fe, 0x0809, 0x0813, 0x0002, 0x01f5, - 0x01f8, 0x0001, 0x0037, 0x0820, 0x0001, 0x0037, 0x082e, 0x0003, - // Entry 26500 - 2653F - 0x01ff, 0x0000, 0x0202, 0x0001, 0x0037, 0x083c, 0x0002, 0x0205, - 0x0208, 0x0001, 0x0037, 0x0820, 0x0001, 0x0037, 0x082e, 0x0003, - 0x020f, 0x0000, 0x0212, 0x0001, 0x0037, 0x083c, 0x0002, 0x0215, - 0x0218, 0x0001, 0x0037, 0x0820, 0x0001, 0x0037, 0x082e, 0x0003, - 0x021f, 0x0000, 0x0222, 0x0001, 0x0037, 0x0840, 0x0002, 0x0225, - 0x0228, 0x0001, 0x0037, 0x084a, 0x0001, 0x0037, 0x085e, 0x0003, - 0x022f, 0x0000, 0x0232, 0x0001, 0x000b, 0x0c78, 0x0002, 0x0235, - 0x0238, 0x0001, 0x0037, 0x0872, 0x0001, 0x0037, 0x0882, 0x0003, - // Entry 26540 - 2657F - 0x023f, 0x0000, 0x0242, 0x0001, 0x000b, 0x0c78, 0x0002, 0x0245, - 0x0248, 0x0001, 0x0037, 0x0872, 0x0001, 0x0037, 0x0882, 0x0003, - 0x024f, 0x0252, 0x0257, 0x0001, 0x001e, 0x0287, 0x0003, 0x0037, - 0x0892, 0x089d, 0x08a7, 0x0002, 0x025a, 0x025d, 0x0001, 0x0037, - 0x08b4, 0x0001, 0x0037, 0x08c2, 0x0003, 0x0264, 0x0000, 0x0267, - 0x0001, 0x0005, 0x1006, 0x0002, 0x026a, 0x026d, 0x0001, 0x0037, - 0x08b4, 0x0001, 0x0037, 0x08c2, 0x0003, 0x0274, 0x0000, 0x0277, - 0x0001, 0x0005, 0x1006, 0x0002, 0x027a, 0x027d, 0x0001, 0x0037, - // Entry 26580 - 265BF - 0x08b4, 0x0001, 0x0037, 0x08c2, 0x0003, 0x0284, 0x0287, 0x028c, - 0x0001, 0x0037, 0x08d0, 0x0003, 0x0037, 0x08d7, 0x08e5, 0x08f2, - 0x0002, 0x028f, 0x0292, 0x0001, 0x0037, 0x0902, 0x0001, 0x0037, - 0x0913, 0x0003, 0x0299, 0x0000, 0x029c, 0x0001, 0x0037, 0x0924, - 0x0002, 0x029f, 0x02a2, 0x0001, 0x0037, 0x0929, 0x0001, 0x0037, - 0x0938, 0x0003, 0x02a9, 0x0000, 0x02ac, 0x0001, 0x0037, 0x0924, - 0x0002, 0x02af, 0x02b2, 0x0001, 0x0037, 0x0929, 0x0001, 0x0037, - 0x0938, 0x0003, 0x02b9, 0x02bc, 0x02c1, 0x0001, 0x0028, 0x0194, - // Entry 265C0 - 265FF - 0x0003, 0x0037, 0x0947, 0x094c, 0x0950, 0x0002, 0x02c4, 0x02c7, - 0x0001, 0x0037, 0x0956, 0x0001, 0x0037, 0x0964, 0x0003, 0x02ce, - 0x0000, 0x02d1, 0x0001, 0x0010, 0x05f5, 0x0002, 0x02d4, 0x02d7, - 0x0001, 0x0037, 0x0956, 0x0001, 0x0037, 0x0964, 0x0003, 0x02de, - 0x0000, 0x02e1, 0x0001, 0x0010, 0x05f5, 0x0002, 0x02e4, 0x02e7, - 0x0001, 0x0037, 0x0956, 0x0001, 0x0037, 0x0964, 0x0001, 0x02ec, - 0x0001, 0x0037, 0x0972, 0x0002, 0x0000, 0x02f2, 0x0003, 0x0037, - 0x0980, 0x098f, 0x099d, 0x0002, 0x0000, 0x02fa, 0x0003, 0x0037, - // Entry 26600 - 2663F - 0x09ae, 0x09ba, 0x09c5, 0x0002, 0x0000, 0x0302, 0x0003, 0x0037, - 0x09ae, 0x09ba, 0x09c5, 0x0002, 0x0000, 0x030a, 0x0003, 0x0037, - 0x09d3, 0x09e7, 0x09fa, 0x0002, 0x0000, 0x0312, 0x0003, 0x0037, - 0x0a10, 0x0a1c, 0x0a27, 0x0002, 0x0000, 0x031a, 0x0003, 0x0037, - 0x0a10, 0x0a1c, 0x0a27, 0x0002, 0x0000, 0x0322, 0x0003, 0x0037, - 0x0a35, 0x0a47, 0x0a58, 0x0002, 0x0000, 0x032a, 0x0003, 0x0037, - 0x0a6c, 0x0a78, 0x0a83, 0x0002, 0x0000, 0x0332, 0x0003, 0x0037, - 0x0a6c, 0x0a78, 0x0a83, 0x0002, 0x0000, 0x033a, 0x0003, 0x0037, - // Entry 26640 - 2667F - 0x0a91, 0x0aa4, 0x0ab6, 0x0002, 0x0000, 0x0342, 0x0003, 0x0037, - 0x0acb, 0x0ad7, 0x0ae2, 0x0002, 0x0000, 0x034a, 0x0003, 0x0037, - 0x0acb, 0x0ad7, 0x0ae2, 0x0002, 0x0000, 0x0352, 0x0003, 0x0037, - 0x0af0, 0x0b02, 0x0b13, 0x0002, 0x0000, 0x035a, 0x0003, 0x0037, - 0x0b27, 0x0b33, 0x0b3e, 0x0002, 0x0000, 0x0362, 0x0003, 0x0037, - 0x0b27, 0x0b33, 0x0b3e, 0x0002, 0x0000, 0x036a, 0x0003, 0x0037, - 0x0b4c, 0x0b5e, 0x0b6f, 0x0002, 0x0000, 0x0372, 0x0003, 0x0037, - 0x0b83, 0x0b8f, 0x0b9a, 0x0002, 0x0000, 0x037a, 0x0003, 0x0037, - // Entry 26680 - 266BF - 0x0b83, 0x0b8f, 0x0b9a, 0x0002, 0x0000, 0x0382, 0x0003, 0x0037, - 0x0ba8, 0x0bb6, 0x0bc3, 0x0002, 0x0000, 0x038a, 0x0003, 0x0037, - 0x0bd3, 0x0bdf, 0x0bea, 0x0002, 0x0000, 0x0392, 0x0003, 0x0037, - 0x0bd3, 0x0bdf, 0x0bea, 0x0001, 0x0399, 0x0001, 0x0007, 0x2388, - 0x0003, 0x03a0, 0x0000, 0x03a3, 0x0001, 0x0037, 0x0bf8, 0x0002, - 0x03a6, 0x03a9, 0x0001, 0x0037, 0x0bfc, 0x0001, 0x0037, 0x0c0a, - 0x0003, 0x03b0, 0x0000, 0x03b3, 0x0001, 0x0034, 0x0a4c, 0x0002, - 0x03b6, 0x03b9, 0x0001, 0x0037, 0x0bfc, 0x0001, 0x0037, 0x0c0a, - // Entry 266C0 - 266FF - 0x0003, 0x03c0, 0x0000, 0x03c3, 0x0001, 0x0000, 0x2143, 0x0002, - 0x03c6, 0x03c9, 0x0001, 0x0037, 0x0bfc, 0x0001, 0x0037, 0x0c0a, - 0x0003, 0x03d0, 0x0000, 0x03d3, 0x0001, 0x0037, 0x0c18, 0x0002, - 0x03d6, 0x03d9, 0x0001, 0x0037, 0x0c1f, 0x0001, 0x0037, 0x0c30, - 0x0003, 0x03e0, 0x0000, 0x03e3, 0x0001, 0x000b, 0x1250, 0x0002, - 0x03e6, 0x03e9, 0x0001, 0x0037, 0x0c41, 0x0001, 0x0037, 0x0c4f, - 0x0003, 0x03f0, 0x0000, 0x03f3, 0x0001, 0x0000, 0x1f9a, 0x0002, - 0x03f6, 0x03f9, 0x0001, 0x0037, 0x0c5d, 0x0001, 0x0037, 0x0c69, - // Entry 26700 - 2673F - 0x0003, 0x0400, 0x0000, 0x0403, 0x0001, 0x0037, 0x0c75, 0x0002, - 0x0406, 0x0409, 0x0001, 0x0037, 0x0c7d, 0x0001, 0x0037, 0x0c8f, - 0x0003, 0x0410, 0x0000, 0x0413, 0x0001, 0x0001, 0x200d, 0x0002, - 0x0416, 0x0419, 0x0001, 0x0037, 0x0ca1, 0x0001, 0x0037, 0x0caf, - 0x0003, 0x0420, 0x0000, 0x0423, 0x0001, 0x0000, 0x2002, 0x0002, - 0x0426, 0x0429, 0x0001, 0x0037, 0x0cbd, 0x0001, 0x0037, 0x0cc9, - 0x0001, 0x042e, 0x0001, 0x0037, 0x0cd5, 0x0004, 0x0436, 0x043b, - 0x0000, 0x0440, 0x0003, 0x0000, 0x1dc7, 0x2936, 0x293d, 0x0003, - // Entry 26740 - 2677F - 0x0037, 0x0cdf, 0x0cea, 0x0cfe, 0x0002, 0x0000, 0x0443, 0x0003, - 0x047a, 0x04ad, 0x0447, 0x0031, 0x0037, 0xffff, 0x0d12, 0x0d28, - 0x0d3f, 0x0d6c, 0xffff, 0xffff, 0x0dba, 0x0df1, 0x0e2d, 0x0e6f, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0eb2, 0x0eff, - 0x0f64, 0x0fd4, 0x1035, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1093, 0x10e8, 0xffff, 0x1140, 0x0031, 0x0037, - // Entry 26780 - 267BF - 0xffff, 0xffff, 0xffff, 0xffff, 0x0d54, 0xffff, 0xffff, 0x0dae, - 0x0de4, 0x0e1d, 0x0e5f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0ea1, 0x0ee6, 0x0f43, 0x0fba, 0x101a, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x107d, 0x10d1, 0xffff, - 0x1128, 0x0031, 0x0037, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d8c, - 0xffff, 0xffff, 0x0dce, 0x0e06, 0x0e45, 0x0e87, 0xffff, 0xffff, - // Entry 267C0 - 267FF - 0xffff, 0xffff, 0xffff, 0xffff, 0x0ecb, 0x0f20, 0x0f8e, 0x0ff6, - 0x1058, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x10b1, 0x1107, 0xffff, 0x1160, 0x0002, 0x0003, 0x00e9, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, - // Entry 26800 - 2683F - 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, - 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, - 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0017, 0xffff, 0x00ac, 0x00b1, 0x2929, - 0x00b9, 0x292d, 0x00c0, 0x00c5, 0x2930, 0x00cd, 0x2933, 0x00d1, - 0x00d5, 0x000d, 0x0017, 0xffff, 0x00d9, 0x00e2, 0x00ec, 0x00f2, - 0x292d, 0x00f9, 0x0101, 0x2930, 0x0108, 0x0112, 0x011b, 0x0125, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x012f, 0x2937, - // Entry 26840 - 2687F - 0x2939, 0x293b, 0x2939, 0x012f, 0x012f, 0x293d, 0x293f, 0x2941, - 0x2943, 0x2945, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x0005, 0x231e, 0x20e2, 0x20e6, 0x233e, 0x20ee, - 0x2342, 0x2346, 0x0007, 0x0017, 0x0142, 0x2947, 0x294d, 0x0159, - 0x2955, 0x295f, 0x2966, 0x0002, 0x0000, 0x0082, 0x0007, 0x0035, - 0x0f7d, 0x3af1, 0x3af1, 0x3af3, 0x3af3, 0x3af3, 0x3af5, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0017, 0xffff, - 0x0177, 0x017a, 0x017d, 0x0180, 0x0005, 0x0017, 0xffff, 0x0183, - // Entry 26880 - 268BF - 0x018c, 0x0195, 0x019e, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, - 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, 0x1182, 0x0001, - 0x0037, 0x1189, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0037, 0x1182, - 0x0001, 0x0037, 0x1189, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, - 0x00bd, 0x0002, 0x0017, 0x01bb, 0x296e, 0x0001, 0x00c3, 0x0002, - 0x0017, 0x01d2, 0x01d5, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, - 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, - 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, - // Entry 268C0 - 268FF - 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, - 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, - 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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 26900 - 2693F - 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, - 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, - 0x0001, 0x0017, 0x01d8, 0x0001, 0x0131, 0x0001, 0x0017, 0x01de, - 0x0001, 0x0136, 0x0001, 0x0017, 0x01e4, 0x0001, 0x013b, 0x0001, - 0x0017, 0x01ea, 0x0002, 0x0141, 0x0144, 0x0001, 0x0037, 0x1190, - 0x0003, 0x0023, 0x0066, 0x2a59, 0x2a5e, 0x0001, 0x014b, 0x0001, - 0x0037, 0x1196, 0x0001, 0x0150, 0x0001, 0x0017, 0x021a, 0x0001, - 0x0155, 0x0001, 0x0017, 0x0220, 0x0001, 0x015a, 0x0001, 0x0017, - // Entry 26940 - 2697F - 0x0227, 0x0001, 0x015f, 0x0001, 0x0017, 0x022c, 0x0002, 0x0003, - 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, - 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0037, 0xffff, 0x11a9, - // Entry 26980 - 269BF - 0x11ad, 0x11b1, 0x11b5, 0x11b9, 0x11bd, 0x11c1, 0x11c5, 0x11c9, - 0x11cd, 0x11d1, 0x11d5, 0x000d, 0x0037, 0xffff, 0x11d9, 0x11e3, - 0x11f2, 0x1203, 0x1211, 0x1221, 0x1235, 0x1248, 0x1258, 0x1267, - 0x1277, 0x1290, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, - 0x2483, 0x25bc, 0x2281, 0x25bc, 0x2281, 0x2281, 0x297a, 0x25bc, - 0x25bc, 0x2055, 0x2055, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0037, 0x129a, 0x129e, 0x12a2, - 0x12a6, 0x12aa, 0x12ae, 0x12b2, 0x0007, 0x0019, 0x0128, 0x244c, - // Entry 269C0 - 269FF - 0x0139, 0x2457, 0x014c, 0x0155, 0x2461, 0x0002, 0x0000, 0x0082, - 0x0007, 0x0000, 0x25bc, 0x297e, 0x297e, 0x297e, 0x2980, 0x297e, - 0x297e, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, - 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0037, - 0xffff, 0x12b6, 0x12c4, 0x12d2, 0x12e2, 0x0001, 0x00a1, 0x0003, - 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, - 0x12ef, 0x0001, 0x0037, 0x12f6, 0x0002, 0x00b1, 0x00b4, 0x0001, - 0x0037, 0x12ef, 0x0001, 0x0037, 0x12f6, 0x0003, 0x00c1, 0x0000, - // Entry 26A00 - 26A3F - 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0019, 0x01ad, 0x01bd, 0x0001, - 0x00c3, 0x0002, 0x0019, 0x01ce, 0x01d1, 0x0004, 0x00d5, 0x00cf, - 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, - 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, - // Entry 26A40 - 26A7F - 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, - 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, - 0x0001, 0x012c, 0x0001, 0x0037, 0x1301, 0x0001, 0x0131, 0x0001, - 0x0005, 0x0787, 0x0001, 0x0136, 0x0001, 0x0019, 0x01db, 0x0001, - // Entry 26A80 - 26ABF - 0x013b, 0x0001, 0x0019, 0x0128, 0x0002, 0x0141, 0x0144, 0x0001, - 0x0019, 0x01e1, 0x0003, 0x0037, 0x130a, 0x130e, 0x1318, 0x0001, - 0x014b, 0x0001, 0x0019, 0x0205, 0x0001, 0x0150, 0x0001, 0x0019, - 0x021b, 0x0001, 0x0155, 0x0001, 0x0019, 0x0221, 0x0001, 0x015a, - 0x0001, 0x0009, 0x030c, 0x0001, 0x015f, 0x0001, 0x0037, 0x1320, - 0x0003, 0x0004, 0x025d, 0x0651, 0x0008, 0x0000, 0x0000, 0x000d, - 0x0000, 0x0000, 0x0000, 0x0024, 0x004f, 0x0001, 0x000f, 0x0001, - 0x0011, 0x0002, 0x0000, 0x0014, 0x000e, 0x0000, 0xffff, 0x0033, - // Entry 26AC0 - 26AFF - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x2220, 0x2398, 0x0422, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x002d, 0x0000, 0x003e, 0x0004, 0x003b, 0x0035, - 0x0032, 0x0038, 0x0001, 0x0037, 0x1333, 0x0001, 0x0037, 0x134a, - 0x0001, 0x0037, 0x135b, 0x0001, 0x0007, 0x0027, 0x0004, 0x004c, - 0x0046, 0x0043, 0x0049, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0058, 0x00bd, 0x0114, 0x0149, 0x021a, 0x022a, 0x023b, 0x024c, - // Entry 26B00 - 26B3F - 0x0002, 0x005b, 0x008c, 0x0003, 0x005f, 0x006e, 0x007d, 0x000d, - 0x0037, 0xffff, 0x1365, 0x136d, 0x1375, 0x137d, 0x1385, 0x138d, - 0x1395, 0x139d, 0x13a5, 0x13ad, 0x13b5, 0x13bd, 0x000d, 0x0037, - 0xffff, 0x13c5, 0x13c8, 0x13cb, 0x13ce, 0x13d1, 0x13d1, 0x13d4, - 0x13d7, 0x13c5, 0x13c5, 0x13c5, 0x13da, 0x000d, 0x0037, 0xffff, - 0x13dd, 0x13ea, 0x13f5, 0x1402, 0x140d, 0x1418, 0x1425, 0x1430, - 0x143b, 0x144c, 0x1457, 0x1464, 0x0003, 0x0090, 0x009f, 0x00ae, - 0x000d, 0x0037, 0xffff, 0x1477, 0x147f, 0x1487, 0x148f, 0x1497, - // Entry 26B40 - 26B7F - 0x149f, 0x14a7, 0x14af, 0x14b7, 0x14bf, 0x14c7, 0x14cf, 0x000d, - 0x0037, 0xffff, 0x13c5, 0x13c8, 0x13cb, 0x13ce, 0x13d1, 0x13d1, - 0x13d4, 0x13d7, 0x13c5, 0x13c5, 0x13c5, 0x13da, 0x000d, 0x0037, - 0xffff, 0x14d7, 0x14e4, 0x14ef, 0x14fc, 0x1507, 0x1512, 0x151f, - 0x152a, 0x1535, 0x1546, 0x1551, 0x155e, 0x0002, 0x00c0, 0x00ea, - 0x0005, 0x00c6, 0x00cf, 0x00e1, 0x0000, 0x00d8, 0x0007, 0x0037, - 0x1571, 0x1576, 0x157b, 0x1580, 0x1585, 0x158a, 0x158f, 0x0007, - 0x0037, 0x13da, 0x1594, 0x13ce, 0x13ce, 0x1597, 0x13da, 0x13ce, - // Entry 26B80 - 26BBF - 0x0007, 0x0037, 0x1571, 0x1576, 0x157b, 0x1580, 0x1585, 0x158a, - 0x158f, 0x0007, 0x0037, 0x159a, 0x15ab, 0x15bc, 0x15cd, 0x15de, - 0x15ef, 0x15f8, 0x0005, 0x00f0, 0x00f9, 0x010b, 0x0000, 0x0102, - 0x0007, 0x0037, 0x1571, 0x1576, 0x157b, 0x1580, 0x1585, 0x158a, - 0x158f, 0x0007, 0x0037, 0x13da, 0x1594, 0x13ce, 0x13ce, 0x1597, - 0x13da, 0x13ce, 0x0007, 0x0037, 0x1571, 0x1576, 0x157b, 0x1580, - 0x1585, 0x158a, 0x158f, 0x0007, 0x0037, 0x1603, 0x1614, 0x1625, - 0x1636, 0x1647, 0x1658, 0x1661, 0x0002, 0x0117, 0x0130, 0x0003, - // Entry 26BC0 - 26BFF - 0x011b, 0x0122, 0x0129, 0x0005, 0x0037, 0xffff, 0x166c, 0x1673, - 0x167c, 0x1687, 0x0005, 0x0000, 0xffff, 0x2055, 0x2982, 0x2985, - 0x2989, 0x0005, 0x0037, 0xffff, 0x168e, 0x169c, 0x16ac, 0x16be, - 0x0003, 0x0134, 0x013b, 0x0142, 0x0005, 0x0037, 0xffff, 0x166c, - 0x1673, 0x167c, 0x1687, 0x0005, 0x0000, 0xffff, 0x2055, 0x2982, - 0x2985, 0x2989, 0x0005, 0x0037, 0xffff, 0x168e, 0x169c, 0x16ac, - 0x16be, 0x0002, 0x014c, 0x01b3, 0x0003, 0x0150, 0x0171, 0x0192, - 0x0008, 0x015c, 0x0162, 0x0159, 0x0165, 0x0168, 0x016b, 0x016e, - // Entry 26C00 - 26C3F - 0x015f, 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0037, 0x16e0, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, 0x16eb, - 0x0001, 0x0037, 0x16f6, 0x0001, 0x0037, 0x1712, 0x0001, 0x0037, - 0x171d, 0x0008, 0x017d, 0x0183, 0x017a, 0x0186, 0x0189, 0x018c, - 0x018f, 0x0180, 0x0001, 0x0037, 0x171d, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0037, 0x16e0, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, - 0x16eb, 0x0001, 0x0037, 0x16f6, 0x0001, 0x0037, 0x1712, 0x0001, - 0x0037, 0x171d, 0x0008, 0x019e, 0x01a4, 0x019b, 0x01a7, 0x01aa, - // Entry 26C40 - 26C7F - 0x01ad, 0x01b0, 0x01a1, 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0037, 0x16e0, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x0037, 0x16eb, 0x0001, 0x0037, 0x16f6, 0x0001, 0x0037, 0x1712, - 0x0001, 0x0037, 0x171d, 0x0003, 0x01b7, 0x01d8, 0x01f9, 0x0008, - 0x01c3, 0x01c9, 0x01c0, 0x01cc, 0x01cf, 0x01d2, 0x01d5, 0x01c6, - 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0037, - 0x1728, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, 0x1735, 0x0001, - 0x0037, 0x173c, 0x0001, 0x0037, 0x1754, 0x0001, 0x0037, 0x175b, - // Entry 26C80 - 26CBF - 0x0008, 0x01e4, 0x01ea, 0x01e1, 0x01ed, 0x01f0, 0x01f3, 0x01f6, - 0x01e7, 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0037, 0x1728, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, 0x1735, - 0x0001, 0x0037, 0x173c, 0x0001, 0x0037, 0x1754, 0x0001, 0x0037, - 0x175b, 0x0008, 0x0205, 0x020b, 0x0202, 0x020e, 0x0211, 0x0214, - 0x0217, 0x0208, 0x0001, 0x0037, 0x16cc, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0037, 0x1728, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0037, - 0x1735, 0x0001, 0x0037, 0x173c, 0x0001, 0x0037, 0x1754, 0x0001, - // Entry 26CC0 - 26CFF - 0x0037, 0x175b, 0x0003, 0x0224, 0x0000, 0x021e, 0x0001, 0x0220, - 0x0002, 0x0037, 0x1762, 0x1791, 0x0001, 0x0226, 0x0002, 0x0037, - 0x17b1, 0x17bb, 0x0004, 0x0238, 0x0232, 0x022f, 0x0235, 0x0001, - 0x0037, 0x17c2, 0x0001, 0x0037, 0x17d7, 0x0001, 0x0037, 0x17e6, - 0x0001, 0x0007, 0x0277, 0x0004, 0x0249, 0x0243, 0x0240, 0x0246, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x025a, 0x0254, 0x0251, - 0x0257, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, - // Entry 26D00 - 26D3F - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x029e, 0x0000, - 0x0000, 0x02a3, 0x02ba, 0x02cc, 0x02de, 0x02f5, 0x0307, 0x0319, - 0x0330, 0x0347, 0x035e, 0x0379, 0x038f, 0x0000, 0x0000, 0x0000, - 0x03a5, 0x03be, 0x03d7, 0x0000, 0x0000, 0x0000, 0x03f0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x03f5, 0x0409, 0x041d, 0x0431, - 0x0445, 0x0459, 0x046d, 0x0481, 0x0495, 0x04a9, 0x04bd, 0x04d1, - 0x04e5, 0x04f9, 0x050d, 0x0521, 0x0535, 0x0549, 0x055d, 0x0571, - 0x0585, 0x0000, 0x0599, 0x0000, 0x059e, 0x05b4, 0x05c6, 0x05d8, - // Entry 26D40 - 26D7F - 0x05ee, 0x0600, 0x0612, 0x0628, 0x063a, 0x064c, 0x0001, 0x02a0, - 0x0001, 0x0037, 0x17f5, 0x0003, 0x02a7, 0x02aa, 0x02af, 0x0001, - 0x0037, 0x1800, 0x0003, 0x0037, 0x1807, 0x181f, 0x1833, 0x0002, - 0x02b2, 0x02b6, 0x0002, 0x0037, 0x1847, 0x1847, 0x0002, 0x0037, - 0x1863, 0x1863, 0x0003, 0x02be, 0x0000, 0x02c1, 0x0001, 0x0037, - 0x1879, 0x0002, 0x02c4, 0x02c8, 0x0002, 0x0037, 0x187d, 0x187d, - 0x0002, 0x0037, 0x1890, 0x1890, 0x0003, 0x02d0, 0x0000, 0x02d3, - 0x0001, 0x0037, 0x1879, 0x0002, 0x02d6, 0x02da, 0x0002, 0x0037, - // Entry 26D80 - 26DBF - 0x187d, 0x187d, 0x0002, 0x0037, 0x1890, 0x1890, 0x0003, 0x02e2, - 0x02e5, 0x02ea, 0x0001, 0x0037, 0x18a3, 0x0003, 0x0037, 0x18ae, - 0x18c4, 0x18d6, 0x0002, 0x02ed, 0x02f1, 0x0002, 0x0037, 0x18ee, - 0x18ee, 0x0002, 0x0037, 0x190e, 0x190e, 0x0003, 0x02f9, 0x0000, - 0x02fc, 0x0001, 0x0011, 0x0255, 0x0002, 0x02ff, 0x0303, 0x0002, - 0x0037, 0x1928, 0x1928, 0x0002, 0x0037, 0x193b, 0x193b, 0x0003, - 0x030b, 0x0000, 0x030e, 0x0001, 0x0011, 0x0255, 0x0002, 0x0311, - 0x0315, 0x0002, 0x0037, 0x1928, 0x1928, 0x0002, 0x0037, 0x193b, - // Entry 26DC0 - 26DFF - 0x193b, 0x0003, 0x031d, 0x0320, 0x0325, 0x0001, 0x0037, 0x194e, - 0x0003, 0x0037, 0x1953, 0x1963, 0x196f, 0x0002, 0x0328, 0x032c, - 0x0002, 0x0037, 0x1981, 0x1981, 0x0002, 0x0037, 0x199b, 0x199b, - 0x0003, 0x0334, 0x0337, 0x033c, 0x0001, 0x0037, 0x194e, 0x0003, - 0x0037, 0x1953, 0x1963, 0x196f, 0x0002, 0x033f, 0x0343, 0x0002, - 0x0037, 0x1981, 0x1981, 0x0002, 0x0037, 0x199b, 0x199b, 0x0003, - 0x034b, 0x034e, 0x0353, 0x0001, 0x0037, 0x194e, 0x0003, 0x0037, - 0x1953, 0x1963, 0x196f, 0x0002, 0x0356, 0x035a, 0x0002, 0x0037, - // Entry 26E00 - 26E3F - 0x1981, 0x1981, 0x0002, 0x0037, 0x199b, 0x199b, 0x0004, 0x0363, - 0x0366, 0x036b, 0x0376, 0x0001, 0x0037, 0x19af, 0x0003, 0x0037, - 0x19b8, 0x19cc, 0x19dc, 0x0002, 0x036e, 0x0372, 0x0002, 0x0037, - 0x19f2, 0x19f2, 0x0002, 0x0037, 0x1a10, 0x1a10, 0x0001, 0x0037, - 0x1a28, 0x0004, 0x037e, 0x0000, 0x0381, 0x038c, 0x0001, 0x0037, - 0x1a39, 0x0002, 0x0384, 0x0388, 0x0002, 0x0037, 0x1a3f, 0x1a3f, - 0x0002, 0x0037, 0x1a54, 0x1a54, 0x0001, 0x0037, 0x1a28, 0x0004, - 0x0394, 0x0000, 0x0397, 0x03a2, 0x0001, 0x0037, 0x1a39, 0x0002, - // Entry 26E40 - 26E7F - 0x039a, 0x039e, 0x0002, 0x0037, 0x1a3f, 0x1a3f, 0x0002, 0x0037, - 0x1a54, 0x1a54, 0x0001, 0x0037, 0x1a28, 0x0003, 0x03a9, 0x03ac, - 0x03b3, 0x0001, 0x0037, 0x1a69, 0x0005, 0x0037, 0x1a83, 0x1a8c, - 0x1a97, 0x1a70, 0x1aa2, 0x0002, 0x03b6, 0x03ba, 0x0002, 0x0037, - 0x1ab5, 0x1ab5, 0x0002, 0x0037, 0x1ad1, 0x1ad1, 0x0003, 0x03c2, - 0x03c5, 0x03cc, 0x0001, 0x0037, 0x1a69, 0x0005, 0x0037, 0x1a83, - 0x1a8c, 0x1a97, 0x1ae7, 0x1aa2, 0x0002, 0x03cf, 0x03d3, 0x0002, - 0x0037, 0x1ab5, 0x1ab5, 0x0002, 0x0037, 0x1ad1, 0x1ad1, 0x0003, - // Entry 26E80 - 26EBF - 0x03db, 0x03de, 0x03e5, 0x0001, 0x0037, 0x1a69, 0x0005, 0x0037, - 0x1a83, 0x1a8c, 0x1a97, 0x1ae7, 0x1aa2, 0x0002, 0x03e8, 0x03ec, - 0x0002, 0x0037, 0x1ab5, 0x1ab5, 0x0002, 0x0037, 0x1ad1, 0x1ad1, - 0x0001, 0x03f2, 0x0001, 0x0037, 0x1aff, 0x0003, 0x0000, 0x03f9, - 0x03fe, 0x0003, 0x0037, 0x1b11, 0x1b2d, 0x1b45, 0x0002, 0x0401, - 0x0405, 0x0002, 0x0037, 0x1b63, 0x1b63, 0x0002, 0x0037, 0x1b89, - 0x1b89, 0x0003, 0x0000, 0x040d, 0x0412, 0x0003, 0x0037, 0x1ba9, - 0x1bbc, 0x1bcb, 0x0002, 0x0415, 0x0419, 0x0002, 0x0037, 0x1b63, - // Entry 26EC0 - 26EFF - 0x1b63, 0x0002, 0x0037, 0x1b89, 0x1b89, 0x0003, 0x0000, 0x0421, - 0x0426, 0x0003, 0x0037, 0x1be0, 0x1bf0, 0x1bfc, 0x0002, 0x0429, - 0x042d, 0x0002, 0x0037, 0x1b63, 0x1b63, 0x0002, 0x0037, 0x1b89, - 0x1b89, 0x0003, 0x0000, 0x0435, 0x043a, 0x0003, 0x0037, 0x1c0e, - 0x1c2a, 0x1c42, 0x0002, 0x043d, 0x0441, 0x0002, 0x0037, 0x1c60, - 0x1c60, 0x0002, 0x0037, 0x1c86, 0x1c86, 0x0003, 0x0000, 0x0449, - 0x044e, 0x0003, 0x0037, 0x1ca6, 0x1cb9, 0x1cc8, 0x0002, 0x0451, - 0x0455, 0x0002, 0x0037, 0x1c60, 0x1c60, 0x0002, 0x0037, 0x1c86, - // Entry 26F00 - 26F3F - 0x1c86, 0x0003, 0x0000, 0x045d, 0x0462, 0x0003, 0x0037, 0x1cdd, - 0x1ced, 0x1cf9, 0x0002, 0x0465, 0x0469, 0x0002, 0x0037, 0x1c60, - 0x1c60, 0x0002, 0x0037, 0x1c86, 0x1c86, 0x0003, 0x0000, 0x0471, - 0x0476, 0x0003, 0x0037, 0x1d0b, 0x1d27, 0x1d3f, 0x0002, 0x0479, - 0x047d, 0x0002, 0x0037, 0x1d5d, 0x1d5d, 0x0002, 0x0037, 0x1d83, - 0x1d83, 0x0003, 0x0000, 0x0485, 0x048a, 0x0003, 0x0037, 0x1da3, - 0x1db6, 0x1dc5, 0x0002, 0x048d, 0x0491, 0x0002, 0x0037, 0x1d5d, - 0x1d5d, 0x0002, 0x0037, 0x1d83, 0x1d83, 0x0003, 0x0000, 0x0499, - // Entry 26F40 - 26F7F - 0x049e, 0x0003, 0x0037, 0x1dda, 0x1dea, 0x1df6, 0x0002, 0x04a1, - 0x04a5, 0x0002, 0x0037, 0x1d5d, 0x1d5d, 0x0002, 0x0037, 0x1d83, - 0x1d83, 0x0003, 0x0000, 0x04ad, 0x04b2, 0x0003, 0x0037, 0x1e08, - 0x1e24, 0x1e3c, 0x0002, 0x04b5, 0x04b9, 0x0002, 0x0037, 0x1e5a, - 0x1e5a, 0x0002, 0x0037, 0x1e80, 0x1e80, 0x0003, 0x0000, 0x04c1, - 0x04c6, 0x0003, 0x0037, 0x1ea0, 0x1eb3, 0x1ec2, 0x0002, 0x04c9, - 0x04cd, 0x0002, 0x0037, 0x1e5a, 0x1e5a, 0x0002, 0x0037, 0x1e80, - 0x1e80, 0x0003, 0x0000, 0x04d5, 0x04da, 0x0003, 0x0037, 0x1ed7, - // Entry 26F80 - 26FBF - 0x1ee7, 0x1ef3, 0x0002, 0x04dd, 0x04e1, 0x0002, 0x0037, 0x1e5a, - 0x1e5a, 0x0002, 0x0037, 0x1e80, 0x1e80, 0x0003, 0x0000, 0x04e9, - 0x04ee, 0x0003, 0x0037, 0x1f05, 0x1f21, 0x1f39, 0x0002, 0x04f1, - 0x04f5, 0x0002, 0x0037, 0x1f57, 0x1f57, 0x0002, 0x0037, 0x1f7d, - 0x1f7d, 0x0003, 0x0000, 0x04fd, 0x0502, 0x0003, 0x0037, 0x1f9d, - 0x1fb0, 0x1fbf, 0x0002, 0x0505, 0x0509, 0x0002, 0x0037, 0x1f57, - 0x1f57, 0x0002, 0x0037, 0x1f7d, 0x1f7d, 0x0003, 0x0000, 0x0511, - 0x0516, 0x0003, 0x0037, 0x1fd4, 0x1fe4, 0x1ff0, 0x0002, 0x0519, - // Entry 26FC0 - 26FFF - 0x051d, 0x0002, 0x0037, 0x1f57, 0x1f57, 0x0002, 0x0037, 0x1f7d, - 0x1f7d, 0x0003, 0x0000, 0x0525, 0x052a, 0x0003, 0x0038, 0x0000, - 0x0014, 0x0024, 0x0002, 0x052d, 0x0531, 0x0002, 0x0038, 0x003a, - 0x003a, 0x0002, 0x0038, 0x0058, 0x0058, 0x0003, 0x0000, 0x0539, - 0x053e, 0x0003, 0x0038, 0x0070, 0x0083, 0x0092, 0x0002, 0x0541, - 0x0545, 0x0002, 0x0038, 0x003a, 0x003a, 0x0002, 0x0038, 0x0058, - 0x0058, 0x0003, 0x0000, 0x054d, 0x0552, 0x0003, 0x0038, 0x00a7, - 0x00b7, 0x00c3, 0x0002, 0x0555, 0x0559, 0x0002, 0x0038, 0x003a, - // Entry 27000 - 2703F - 0x003a, 0x0002, 0x0038, 0x0058, 0x0058, 0x0003, 0x0000, 0x0561, - 0x0566, 0x0003, 0x0038, 0x00d5, 0x00eb, 0x00fd, 0x0002, 0x0569, - 0x056d, 0x0002, 0x0038, 0x0115, 0x0115, 0x0002, 0x0038, 0x0135, - 0x0135, 0x0003, 0x0000, 0x0575, 0x057a, 0x0003, 0x0038, 0x014f, - 0x0162, 0x0171, 0x0002, 0x057d, 0x0581, 0x0002, 0x0038, 0x0115, - 0x0115, 0x0002, 0x0038, 0x0135, 0x0135, 0x0003, 0x0000, 0x0589, - 0x058e, 0x0003, 0x0038, 0x0186, 0x0196, 0x01a2, 0x0002, 0x0591, - 0x0595, 0x0002, 0x0038, 0x0115, 0x0115, 0x0002, 0x0038, 0x0135, - // Entry 27040 - 2707F - 0x0135, 0x0001, 0x059b, 0x0001, 0x0038, 0x01b4, 0x0003, 0x05a2, - 0x05a5, 0x05a9, 0x0001, 0x0038, 0x01be, 0x0002, 0x0038, 0xffff, - 0x01c9, 0x0002, 0x05ac, 0x05b0, 0x0002, 0x0038, 0x01db, 0x01db, - 0x0002, 0x0038, 0x01fb, 0x01fb, 0x0003, 0x05b8, 0x0000, 0x05bb, - 0x0001, 0x0038, 0x0215, 0x0002, 0x05be, 0x05c2, 0x0002, 0x0038, - 0x021c, 0x021c, 0x0002, 0x0038, 0x0233, 0x0233, 0x0003, 0x05ca, - 0x0000, 0x05cd, 0x0001, 0x0038, 0x0215, 0x0002, 0x05d0, 0x05d4, - 0x0002, 0x0038, 0x021c, 0x021c, 0x0002, 0x0038, 0x0233, 0x0233, - // Entry 27080 - 270BF - 0x0003, 0x05dc, 0x05df, 0x05e3, 0x0001, 0x000f, 0x0182, 0x0002, - 0x0038, 0xffff, 0x024a, 0x0002, 0x05e6, 0x05ea, 0x0002, 0x0038, - 0x025c, 0x025c, 0x0002, 0x0038, 0x027c, 0x027c, 0x0003, 0x05f2, - 0x0000, 0x05f5, 0x0001, 0x0009, 0x18ed, 0x0002, 0x05f8, 0x05fc, - 0x0002, 0x0038, 0x0296, 0x0296, 0x0002, 0x0038, 0x02ad, 0x02ad, - 0x0003, 0x0604, 0x0000, 0x0607, 0x0001, 0x0009, 0x18ed, 0x0002, - 0x060a, 0x060e, 0x0002, 0x0038, 0x0296, 0x0296, 0x0002, 0x0038, - 0x02ad, 0x02ad, 0x0003, 0x0616, 0x0619, 0x061d, 0x0001, 0x000f, - // Entry 270C0 - 270FF - 0x01e5, 0x0002, 0x0038, 0xffff, 0x02c4, 0x0002, 0x0620, 0x0624, - 0x0002, 0x0038, 0x02cf, 0x02cf, 0x0002, 0x0038, 0x02f1, 0x02f1, - 0x0003, 0x062c, 0x0000, 0x062f, 0x0001, 0x000e, 0x01f0, 0x0002, - 0x0632, 0x0636, 0x0002, 0x0038, 0x030d, 0x030d, 0x0002, 0x0038, - 0x0324, 0x0324, 0x0003, 0x063e, 0x0000, 0x0641, 0x0001, 0x000e, - 0x01f0, 0x0002, 0x0644, 0x0648, 0x0002, 0x0038, 0x030d, 0x030d, - 0x0002, 0x0038, 0x0324, 0x0324, 0x0001, 0x064e, 0x0001, 0x0038, - 0x033b, 0x0004, 0x0656, 0x065b, 0x0660, 0x066f, 0x0003, 0x0000, - // Entry 27100 - 2713F - 0x1dc7, 0x2936, 0x293d, 0x0003, 0x0038, 0x0355, 0x0366, 0x0382, - 0x0002, 0x0000, 0x0663, 0x0003, 0x0000, 0x066a, 0x0667, 0x0001, - 0x0038, 0x03a8, 0x0003, 0x0038, 0xffff, 0x03e7, 0x0416, 0x0002, - 0x0838, 0x0672, 0x0003, 0x070c, 0x07a2, 0x0676, 0x0094, 0x0038, - 0x043f, 0x045f, 0x0488, 0x04ad, 0x04fd, 0x0581, 0x05ef, 0x0681, - 0x0757, 0x0821, 0x08f4, 0xffff, 0x09b8, 0x0a2b, 0x0ab9, 0x0b44, - 0x0bd6, 0x0c4e, 0x0cdd, 0x0d95, 0x0e54, 0x0ef5, 0x0f8d, 0x1018, - 0x10a6, 0x1106, 0x111e, 0x1158, 0x11b4, 0x1204, 0x1266, 0x12af, - // Entry 27140 - 2717F - 0x1315, 0x1379, 0x13e9, 0x1449, 0x147a, 0x14c7, 0x154e, 0x15eb, - 0x1637, 0x1651, 0x167b, 0x16c1, 0x1727, 0x176c, 0x1803, 0x186d, - 0x18c0, 0x1959, 0x19ef, 0x1a3f, 0x1a6c, 0x1aca, 0x1aea, 0x1b1e, - 0x1b72, 0x1ba5, 0x1bee, 0x1c95, 0x1d0f, 0x1d38, 0x1d8f, 0x1e45, - 0x1eb3, 0x1eff, 0x1f32, 0x1f5b, 0x1f7b, 0x1faa, 0x1fd5, 0x2016, - 0x207e, 0x20f2, 0x2166, 0xffff, 0x21be, 0x21e9, 0x222c, 0x227c, - 0x22b8, 0x231c, 0x233e, 0x2388, 0x23e2, 0x2427, 0x247f, 0x249d, - 0x24d0, 0x2501, 0x2552, 0x25ae, 0x2602, 0x26c8, 0x276d, 0x27e9, - // Entry 27180 - 271BF - 0x283d, 0x2857, 0x286f, 0x28b0, 0x2949, 0x29dd, 0x2a49, 0x2a5f, - 0x2ab8, 0x2b5c, 0x2bd2, 0x2c3c, 0x2c98, 0x2cb0, 0x2d00, 0x2d72, - 0x2ddc, 0x2e38, 0x2e9e, 0x2f28, 0x2f44, 0x2f5e, 0x2f7a, 0x2f96, - 0x2fcc, 0xffff, 0x303c, 0x308c, 0x30a8, 0x30db, 0x310e, 0x313b, - 0x3157, 0x316d, 0x319f, 0x31f3, 0x3213, 0x3247, 0x3297, 0x32d3, - 0x333f, 0x3375, 0x33ed, 0x3469, 0x34c1, 0x3505, 0x358d, 0x35ed, - 0x3607, 0x362e, 0x3678, 0x36f2, 0x0094, 0x0038, 0xffff, 0xffff, - 0xffff, 0xffff, 0x04d8, 0x0567, 0x05d5, 0x0643, 0x071d, 0x07eb, - // Entry 271C0 - 271FF - 0x08ad, 0xffff, 0x09a2, 0x0a04, 0x0a99, 0x0b19, 0x0bba, 0x0c2e, - 0x0cae, 0x0d5b, 0x0e29, 0x0eca, 0x0f6b, 0x0ff1, 0x1086, 0xffff, - 0xffff, 0x113a, 0xffff, 0x11e3, 0xffff, 0x1297, 0x12ff, 0x1361, - 0x13c9, 0xffff, 0xffff, 0x14a9, 0x1523, 0x15d5, 0xffff, 0xffff, - 0xffff, 0x169e, 0xffff, 0x1743, 0x17de, 0xffff, 0x189b, 0x192a, - 0x19d7, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b04, 0xffff, 0xffff, - 0x1bc1, 0x1c68, 0xffff, 0xffff, 0x1d52, 0x1e29, 0x1e9d, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2000, 0x2062, 0x20d6, - // Entry 27200 - 2723F - 0x214a, 0xffff, 0xffff, 0xffff, 0x2214, 0xffff, 0x2296, 0xffff, - 0xffff, 0x236b, 0xffff, 0x240b, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2534, 0xffff, 0x25c8, 0x2696, 0x274c, 0x27cf, 0xffff, 0xffff, - 0xffff, 0x2887, 0x2922, 0x29b7, 0xffff, 0xffff, 0x2a86, 0x2b3c, - 0x2bbc, 0x2c1e, 0xffff, 0xffff, 0x2ce2, 0x2d5c, 0x2dbe, 0xffff, - 0x2e69, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2fb0, 0xffff, - 0x3024, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3185, 0xffff, 0xffff, 0x322f, 0xffff, 0x32ad, 0xffff, 0x3359, - // Entry 27240 - 2727F - 0x33cd, 0x344d, 0xffff, 0x34e1, 0x356d, 0xffff, 0xffff, 0xffff, - 0x365e, 0x36cc, 0x0094, 0x0038, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0537, 0x05b0, 0x061e, 0x06d4, 0x07a6, 0x086c, 0x0950, 0xffff, - 0x09e3, 0x0a67, 0x0aee, 0x0b84, 0x0c07, 0x0c83, 0x0d21, 0x0de4, - 0x0e94, 0x0f35, 0x0fc4, 0x1054, 0x10db, 0xffff, 0xffff, 0x118b, - 0xffff, 0x123a, 0xffff, 0x12dc, 0x1340, 0x13a6, 0x141e, 0xffff, - 0xffff, 0x14fa, 0x158e, 0x1616, 0xffff, 0xffff, 0xffff, 0x16f9, - 0xffff, 0x17aa, 0x183d, 0xffff, 0x18fa, 0x199d, 0x1a1c, 0xffff, - // Entry 27280 - 272BF - 0xffff, 0xffff, 0xffff, 0x1b4d, 0xffff, 0xffff, 0x1c30, 0x1cd7, - 0xffff, 0xffff, 0x1de1, 0x1e76, 0x1ede, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2041, 0x20af, 0x2123, 0x2197, 0xffff, - 0xffff, 0xffff, 0x2259, 0xffff, 0x22ef, 0xffff, 0xffff, 0x23ba, - 0xffff, 0x2458, 0xffff, 0xffff, 0xffff, 0xffff, 0x2585, 0xffff, - 0x2651, 0x270f, 0x27a3, 0x2818, 0xffff, 0xffff, 0xffff, 0x28ee, - 0x2985, 0x2a18, 0xffff, 0xffff, 0x2aff, 0x2b91, 0x2bfd, 0x2c6f, - 0xffff, 0xffff, 0x2d33, 0x2d9d, 0x2e0f, 0xffff, 0x2ee8, 0xffff, - // Entry 272C0 - 272FF - 0xffff, 0xffff, 0xffff, 0xffff, 0x2ffd, 0xffff, 0x3069, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x31ce, 0xffff, - 0xffff, 0x3274, 0xffff, 0x330e, 0xffff, 0x33a6, 0x3422, 0x349a, - 0xffff, 0x353e, 0x35c2, 0xffff, 0xffff, 0xffff, 0x36a7, 0x372d, - 0x0003, 0x083c, 0x089e, 0x086d, 0x002f, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 27300 - 2733F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1351, 0x002f, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 27340 - 2737F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1351, 0x002f, 0x0006, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1355, 0x0002, - 0x0003, 0x00ed, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 27380 - 273BF - 0x0000, 0x000c, 0x0037, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0015, 0x0000, 0x0026, 0x0004, 0x0023, 0x001d, 0x001a, - 0x0020, 0x0001, 0x0000, 0x1dfa, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0039, 0x0000, 0x0004, 0x0034, 0x002e, - 0x002b, 0x0031, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0040, - 0x0069, 0x0000, 0x0000, 0x0000, 0x00c0, 0x00d1, 0x00dc, 0x0002, - 0x0043, 0x0056, 0x0003, 0x0000, 0x0000, 0x0047, 0x000d, 0x0039, - // Entry 273C0 - 273FF - 0xffff, 0x000e, 0x0014, 0x001a, 0x002d, 0x003e, 0x004e, 0x0061, - 0x006a, 0x006e, 0x0074, 0x007b, 0x007e, 0x0003, 0x0000, 0x0000, - 0x005a, 0x000d, 0x0039, 0xffff, 0x000e, 0x0014, 0x001a, 0x002d, - 0x003e, 0x004e, 0x0061, 0x006a, 0x006e, 0x0074, 0x007b, 0x007e, - 0x0002, 0x006c, 0x0096, 0x0005, 0x0072, 0x007b, 0x008d, 0x0000, - 0x0084, 0x0007, 0x0039, 0x0089, 0x0090, 0x0096, 0x009c, 0x00a9, - 0x00ae, 0x00bb, 0x0007, 0x0017, 0x2907, 0x297b, 0x297e, 0x2981, - 0x2985, 0x2988, 0x298b, 0x0007, 0x0039, 0x0089, 0x0090, 0x0096, - // Entry 27400 - 2743F - 0x009c, 0x00a9, 0x00ae, 0x00bb, 0x0007, 0x0039, 0x0089, 0x0090, - 0x0096, 0x009c, 0x00a9, 0x00ae, 0x00bb, 0x0005, 0x009c, 0x00a5, - 0x00b7, 0x0000, 0x00ae, 0x0007, 0x0039, 0x0089, 0x0090, 0x0096, - 0x009c, 0x00a9, 0x00ae, 0x00bb, 0x0007, 0x0017, 0x2907, 0x297b, - 0x297e, 0x2981, 0x2985, 0x2988, 0x298b, 0x0007, 0x0017, 0x2907, - 0x297b, 0x297e, 0x2981, 0x2985, 0x2988, 0x298b, 0x0007, 0x0039, - 0x0089, 0x0090, 0x0096, 0x009c, 0x00a9, 0x00ae, 0x00bb, 0x0004, - 0x00ce, 0x00c8, 0x00c5, 0x00cb, 0x0001, 0x002b, 0x030a, 0x0001, - // Entry 27440 - 2747F - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0039, 0x00c9, - 0x0004, 0x00d9, 0x0000, 0x0000, 0x00d6, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x00ea, 0x00e4, 0x00e1, 0x00e7, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0013, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0101, - 0x0002, 0x0000, 0x0104, 0x0003, 0x0039, 0x00d1, 0x00d6, 0x00db, - // Entry 27480 - 274BF - 0x0003, 0x0004, 0x0190, 0x02b5, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, - 0x001e, 0x001b, 0x0021, 0x0001, 0x0000, 0x1dfa, 0x0001, 0x0000, - 0x1e0b, 0x0001, 0x002b, 0x01ce, 0x0001, 0x0000, 0x04af, 0x0004, - 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0041, 0x00a6, 0x00eb, 0x0120, 0x0138, 0x015d, 0x016e, - // Entry 274C0 - 274FF - 0x017f, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, - 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x32bc, 0x32c0, 0x3175, - 0x3230, 0x3234, 0x3238, 0x323c, 0x3240, 0x32c4, 0x0085, 0x000d, - 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, - 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0039, - 0xffff, 0x00e5, 0x00ed, 0x00f6, 0x00fd, 0x0104, 0x0109, 0x010e, - 0x0113, 0x011d, 0x0128, 0x0131, 0x013b, 0x0003, 0x0079, 0x0088, - 0x0097, 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x32bc, 0x32c0, - // Entry 27500 - 2753F - 0x3175, 0x3230, 0x3234, 0x3238, 0x323c, 0x3240, 0x32c4, 0x0085, - 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, - 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, - 0x0039, 0xffff, 0x00e5, 0x00ed, 0x00f6, 0x00fd, 0x0104, 0x0109, - 0x010e, 0x0113, 0x011d, 0x0128, 0x0131, 0x013b, 0x0002, 0x00a9, - 0x00ca, 0x0005, 0x00af, 0x0000, 0x00c1, 0x0000, 0x00b8, 0x0007, - 0x0001, 0x2021, 0x2025, 0x2029, 0x202d, 0x2031, 0x2035, 0x2039, - 0x0007, 0x0001, 0x2021, 0x2025, 0x2029, 0x202d, 0x2031, 0x2035, - // Entry 27540 - 2757F - 0x2039, 0x0007, 0x0039, 0x0145, 0x014c, 0x015b, 0x0169, 0x0179, - 0x0188, 0x0198, 0x0005, 0x0000, 0x00d0, 0x00e2, 0x0000, 0x00d9, - 0x0007, 0x0000, 0x298e, 0x2980, 0x297a, 0x255c, 0x298e, 0x2992, - 0x2980, 0x0007, 0x0001, 0x2021, 0x2025, 0x2029, 0x202d, 0x2031, - 0x2035, 0x2039, 0x0007, 0x0039, 0x0145, 0x014c, 0x015b, 0x0169, - 0x0179, 0x0188, 0x0198, 0x0002, 0x00ee, 0x0107, 0x0003, 0x00f2, - 0x00f9, 0x0100, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, - 0x01b0, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, 0x01b0, - // Entry 27580 - 275BF - 0x0005, 0x0039, 0xffff, 0x01b3, 0x01cc, 0x01e5, 0x01fe, 0x0003, - 0x010b, 0x0112, 0x0119, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, - 0x01ad, 0x01b0, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, - 0x01b0, 0x0005, 0x0039, 0xffff, 0x01b3, 0x01cc, 0x01e5, 0x01fe, - 0x0001, 0x0122, 0x0003, 0x0126, 0x0000, 0x012f, 0x0002, 0x0129, - 0x012c, 0x0001, 0x0039, 0x0217, 0x0001, 0x0039, 0x021c, 0x0002, - 0x0132, 0x0135, 0x0001, 0x0039, 0x0221, 0x0001, 0x0039, 0x0234, - 0x0003, 0x0147, 0x0152, 0x013c, 0x0002, 0x013f, 0x0143, 0x0002, - // Entry 275C0 - 275FF - 0x0039, 0x0249, 0x026c, 0x0002, 0x0015, 0x019a, 0x01be, 0x0002, - 0x014a, 0x014e, 0x0002, 0x0039, 0x0291, 0x029b, 0x0002, 0x0015, - 0x01d7, 0x01de, 0x0002, 0x0155, 0x0159, 0x0002, 0x0039, 0x02a7, - 0x02ad, 0x0002, 0x0015, 0x01d7, 0x01de, 0x0004, 0x016b, 0x0165, - 0x0162, 0x0168, 0x0001, 0x002b, 0x030a, 0x0001, 0x0001, 0x002d, - 0x0001, 0x002b, 0x0319, 0x0001, 0x0000, 0x051c, 0x0004, 0x017c, - 0x0176, 0x0173, 0x0179, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, - 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, - // Entry 27600 - 2763F - 0x018d, 0x0187, 0x0184, 0x018a, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0040, 0x01d1, 0x0000, 0x0000, 0x01d6, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01ed, 0x0000, 0x0000, 0x0204, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x021b, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0234, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0239, - 0x0000, 0x0000, 0x0241, 0x0000, 0x0000, 0x0249, 0x0000, 0x0000, - 0x0251, 0x0000, 0x0000, 0x0259, 0x0000, 0x0000, 0x0261, 0x0000, - // Entry 27640 - 2767F - 0x0000, 0x0269, 0x0000, 0x0000, 0x0000, 0x0271, 0x0000, 0x0276, - 0x0000, 0x0000, 0x0288, 0x0000, 0x0000, 0x029a, 0x0000, 0x0000, - 0x02b0, 0x0001, 0x01d3, 0x0001, 0x0015, 0x0246, 0x0003, 0x01da, - 0x01dd, 0x01e2, 0x0001, 0x0039, 0x02b3, 0x0003, 0x0039, 0x02b9, - 0x02c9, 0x02d5, 0x0002, 0x01e5, 0x01e9, 0x0002, 0x0039, 0x02e2, - 0x02e2, 0x0002, 0x0039, 0x02ef, 0x02ef, 0x0003, 0x01f1, 0x01f4, - 0x01f9, 0x0001, 0x0039, 0x0303, 0x0003, 0x0039, 0x030b, 0x031d, - 0x032b, 0x0002, 0x01fc, 0x0200, 0x0002, 0x0039, 0x033a, 0x033a, - // Entry 27680 - 276BF - 0x0002, 0x0039, 0x0349, 0x0349, 0x0003, 0x0208, 0x020b, 0x0210, - 0x0001, 0x0039, 0x035f, 0x0003, 0x0039, 0x0371, 0x038d, 0x03a5, - 0x0002, 0x0213, 0x0217, 0x0002, 0x0039, 0x03be, 0x03be, 0x0002, - 0x0039, 0x03d7, 0x03d7, 0x0003, 0x021f, 0x0222, 0x0229, 0x0001, - 0x0039, 0x03f7, 0x0005, 0x0039, 0x0408, 0x0411, 0x0418, 0x03fd, - 0x041e, 0x0002, 0x022c, 0x0230, 0x0002, 0x0039, 0x0427, 0x0427, - 0x0002, 0x0039, 0x043d, 0x043d, 0x0001, 0x0236, 0x0001, 0x0039, - 0x045a, 0x0002, 0x0000, 0x023c, 0x0003, 0x0039, 0x0474, 0x0497, - // Entry 276C0 - 276FF - 0x04b6, 0x0002, 0x0000, 0x0244, 0x0003, 0x0039, 0x04d6, 0x0501, - 0x0528, 0x0002, 0x0000, 0x024c, 0x0003, 0x0039, 0x0550, 0x057a, - 0x05a0, 0x0002, 0x0000, 0x0254, 0x0003, 0x0039, 0x05c7, 0x05f3, - 0x061b, 0x0002, 0x0000, 0x025c, 0x0003, 0x0039, 0x0644, 0x066f, - 0x0696, 0x0002, 0x0000, 0x0264, 0x0003, 0x0039, 0x06be, 0x06ea, - 0x0712, 0x0002, 0x0000, 0x026c, 0x0003, 0x0039, 0x073b, 0x0766, - 0x078d, 0x0001, 0x0273, 0x0001, 0x0039, 0x07b5, 0x0003, 0x027a, - 0x0000, 0x027d, 0x0001, 0x0039, 0x07c5, 0x0002, 0x0280, 0x0284, - // Entry 27700 - 2773F - 0x0002, 0x0039, 0x07dc, 0x07dc, 0x0002, 0x0039, 0x07fa, 0x07fa, - 0x0003, 0x028c, 0x0000, 0x028f, 0x0001, 0x0039, 0x081f, 0x0002, - 0x0292, 0x0296, 0x0002, 0x0039, 0x0827, 0x0827, 0x0002, 0x0039, - 0x0836, 0x0836, 0x0003, 0x029e, 0x02a1, 0x02a5, 0x0001, 0x0039, - 0x084c, 0x0002, 0x0039, 0xffff, 0x0854, 0x0002, 0x02a8, 0x02ac, - 0x0002, 0x0039, 0x0860, 0x0860, 0x0002, 0x0039, 0x086f, 0x086f, - 0x0001, 0x02b2, 0x0001, 0x0039, 0x0885, 0x0004, 0x02ba, 0x02bf, - 0x0000, 0x0000, 0x0003, 0x001c, 0x0baf, 0x215c, 0x2163, 0x0001, - // Entry 27740 - 2777F - 0x0000, 0x1de0, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, - 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, - 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, - 0x000d, 0x0009, 0xffff, 0x01f0, 0x5436, 0x543b, 0x543f, 0x5443, - // Entry 27780 - 277BF - 0x5447, 0x544b, 0x544f, 0x5453, 0x5457, 0x545b, 0x545f, 0x000d, - 0x0039, 0xffff, 0x089e, 0x08a5, 0x08b2, 0x08bb, 0x08c5, 0x08cc, - 0x08d2, 0x08de, 0x08e6, 0x08ed, 0x08f4, 0x0906, 0x0002, 0x0000, - 0x0057, 0x000d, 0x0000, 0xffff, 0x297a, 0x297e, 0x2992, 0x2055, - 0x297a, 0x255c, 0x297e, 0x223e, 0x24f9, 0x214e, 0x25bc, 0x25bc, - 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, - 0x0039, 0x091d, 0x0921, 0x0925, 0x0929, 0x092d, 0x0931, 0x0935, - 0x0007, 0x0039, 0x0939, 0x0941, 0x0948, 0x0952, 0x095a, 0x0966, - // Entry 277C0 - 277FF - 0x096d, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2992, 0x2992, - 0x2990, 0x298e, 0x2980, 0x297a, 0x2994, 0x0001, 0x008d, 0x0003, - 0x0091, 0x0000, 0x0098, 0x0005, 0x0005, 0xffff, 0x070e, 0x0711, - 0x0714, 0x0717, 0x0005, 0x0039, 0xffff, 0x0972, 0x097d, 0x098f, - 0x099f, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, - 0x00a8, 0x00ab, 0x0001, 0x0039, 0x09b3, 0x0001, 0x0039, 0x09b7, - 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0039, 0x09bd, 0x0001, 0x0039, - 0x09c4, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, - // Entry 27800 - 2783F - 0x0039, 0x09cf, 0x09e1, 0x0001, 0x00c3, 0x0002, 0x0000, 0x04ef, - 0x2996, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, - 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, - 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, - // Entry 27840 - 2787F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, - 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x0039, - 0x09f1, 0x0001, 0x0131, 0x0001, 0x0039, 0x09f8, 0x0001, 0x0136, - 0x0001, 0x0039, 0x09ff, 0x0001, 0x013b, 0x0001, 0x0039, 0x0a06, - // Entry 27880 - 278BF - 0x0002, 0x0141, 0x0144, 0x0001, 0x0039, 0x0a0c, 0x0003, 0x0039, - 0x0a12, 0x0a17, 0x0a1d, 0x0001, 0x014b, 0x0001, 0x0039, 0x0a23, - 0x0001, 0x0150, 0x0001, 0x0039, 0x0a31, 0x0001, 0x0155, 0x0001, - 0x0039, 0x0a37, 0x0001, 0x015a, 0x0001, 0x0039, 0x0a3c, 0x0001, - 0x015f, 0x0001, 0x0039, 0x0a44, 0x0001, 0x0164, 0x0001, 0x0039, - 0x0a4d, 0x0003, 0x0004, 0x0253, 0x060b, 0x0008, 0x000d, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x001a, 0x0045, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0013, 0x0001, 0x0015, 0x0001, 0x0017, - // Entry 278C0 - 278FF - 0x0001, 0x0039, 0x0a5a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0023, 0x0000, 0x0034, 0x0004, 0x0031, 0x002b, 0x0028, - 0x002e, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0004, 0x0042, 0x003c, - 0x0039, 0x003f, 0x0001, 0x0039, 0x0a63, 0x0001, 0x0039, 0x0a63, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x004e, - 0x00b3, 0x010a, 0x013f, 0x0210, 0x0220, 0x0231, 0x0242, 0x0002, - 0x0051, 0x0082, 0x0003, 0x0055, 0x0064, 0x0073, 0x000d, 0x0039, - // Entry 27900 - 2793F - 0xffff, 0x0a81, 0x0a8e, 0x0aa1, 0x0aae, 0x0abb, 0x0ac8, 0x0adb, - 0x0aee, 0x0afb, 0x0b0b, 0x0b18, 0x0b31, 0x000d, 0x0039, 0xffff, - 0x0b3e, 0x0b42, 0x0b3e, 0x0b3e, 0x0b46, 0x0b3e, 0x0b42, 0x0b4a, - 0x0b42, 0x0b4e, 0x0b52, 0x0b56, 0x000d, 0x0039, 0xffff, 0x0a81, - 0x0a8e, 0x0aa1, 0x0aae, 0x0abb, 0x0ac8, 0x0adb, 0x0aee, 0x0afb, - 0x0b0b, 0x0b18, 0x0b31, 0x0003, 0x0086, 0x0095, 0x00a4, 0x000d, - 0x0039, 0xffff, 0x0a81, 0x0a8e, 0x0aa1, 0x0aae, 0x0abb, 0x0ac8, - 0x0adb, 0x0aee, 0x0afb, 0x0b0b, 0x0b18, 0x0b31, 0x000d, 0x0039, - // Entry 27940 - 2797F - 0xffff, 0x0b3e, 0x0b42, 0x0b3e, 0x0b3e, 0x0b46, 0x0b3e, 0x0b42, - 0x0b4a, 0x0b42, 0x0b4e, 0x0b52, 0x0b56, 0x000d, 0x0039, 0xffff, - 0x0a81, 0x0a8e, 0x0aa1, 0x0aae, 0x0abb, 0x0ac8, 0x0adb, 0x0aee, - 0x0afb, 0x0b0b, 0x0b18, 0x0b31, 0x0002, 0x00b6, 0x00e0, 0x0005, - 0x00bc, 0x00c5, 0x00d7, 0x0000, 0x00ce, 0x0007, 0x0039, 0x0b5a, - 0x0b70, 0x0b80, 0x0b93, 0x0b9d, 0x0bbc, 0x0bcc, 0x0007, 0x0039, - 0x0bd9, 0x0bdd, 0x0bd9, 0x0be1, 0x0be1, 0x0b4a, 0x0b4a, 0x0007, - 0x0039, 0x0be5, 0x0bdd, 0x0bd9, 0x0bec, 0x0bf3, 0x0bfd, 0x0b4a, - // Entry 27980 - 279BF - 0x0007, 0x0039, 0x0b5a, 0x0b70, 0x0b80, 0x0b93, 0x0b9d, 0x0bbc, - 0x0bcc, 0x0005, 0x00e6, 0x00ef, 0x0101, 0x0000, 0x00f8, 0x0007, - 0x0039, 0x0b5a, 0x0b70, 0x0b80, 0x0b93, 0x0b9d, 0x0bbc, 0x0bcc, - 0x0007, 0x0039, 0x0bd9, 0x0bdd, 0x0bd9, 0x0be1, 0x0be1, 0x0b4a, - 0x0b4a, 0x0007, 0x0039, 0x0be5, 0x0bdd, 0x0bd9, 0x0bec, 0x0bf3, - 0x0bfd, 0x0b4a, 0x0007, 0x0039, 0x0b5a, 0x0b70, 0x0b80, 0x0b93, - 0x0b9d, 0x0bbc, 0x0bcc, 0x0002, 0x010d, 0x0126, 0x0003, 0x0111, - 0x0118, 0x011f, 0x0005, 0x0039, 0xffff, 0x0c04, 0x0c22, 0x0c40, - // Entry 279C0 - 279FF - 0x0c5e, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0039, 0xffff, 0x0c04, 0x0c22, 0x0c40, 0x0c5e, 0x0003, - 0x012a, 0x0131, 0x0138, 0x0005, 0x0039, 0xffff, 0x0c04, 0x0c22, - 0x0c40, 0x0c5e, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0039, 0xffff, 0x0c04, 0x0c22, 0x0c40, 0x0c5e, - 0x0002, 0x0142, 0x01a9, 0x0003, 0x0146, 0x0167, 0x0188, 0x0008, - 0x0152, 0x0158, 0x014f, 0x015b, 0x015e, 0x0161, 0x0164, 0x0155, - 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0039, - // Entry 27A00 - 27A3F - 0x0c95, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, 0x0cb1, 0x0001, - 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, 0x0cde, - 0x0008, 0x0173, 0x0179, 0x0170, 0x017c, 0x017f, 0x0182, 0x0185, - 0x0176, 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x1f9c, 0x0001, - 0x0039, 0x0c95, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0039, 0x0cb1, - 0x0001, 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, - 0x0cde, 0x0008, 0x0194, 0x019a, 0x0191, 0x019d, 0x01a0, 0x01a3, - 0x01a6, 0x0197, 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, - // Entry 27A40 - 27A7F - 0x0001, 0x0039, 0x0c95, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, - 0x0cb1, 0x0001, 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, - 0x0039, 0x0cde, 0x0003, 0x01ad, 0x01ce, 0x01ef, 0x0008, 0x01b9, - 0x01bf, 0x01b6, 0x01c2, 0x01c5, 0x01c8, 0x01cb, 0x01bc, 0x0001, - 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0039, 0x0ce8, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, 0x0cb1, 0x0001, 0x0039, - 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, 0x0cde, 0x0008, - 0x01da, 0x01e0, 0x01d7, 0x01e3, 0x01e6, 0x01e9, 0x01ec, 0x01dd, - // Entry 27A80 - 27ABF - 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0039, - 0x0ce8, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, 0x0cb1, 0x0001, - 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, 0x0cde, - 0x0008, 0x01fb, 0x0201, 0x01f8, 0x0204, 0x0207, 0x020a, 0x020d, - 0x01fe, 0x0001, 0x0039, 0x0c7c, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0039, 0x0ce8, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0039, 0x0cb1, - 0x0001, 0x0039, 0x0cc1, 0x0001, 0x0039, 0x0cce, 0x0001, 0x0039, - 0x0cde, 0x0003, 0x021a, 0x0000, 0x0214, 0x0001, 0x0216, 0x0002, - // Entry 27AC0 - 27AFF - 0x0039, 0x0d07, 0x0d38, 0x0001, 0x021c, 0x0002, 0x0039, 0x0d5d, - 0x0d70, 0x0004, 0x022e, 0x0228, 0x0225, 0x022b, 0x0001, 0x0001, - 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0000, 0x237b, 0x0004, 0x023f, 0x0239, 0x0236, 0x023c, 0x0001, - 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, - 0x0001, 0x0002, 0x0478, 0x0004, 0x0250, 0x024a, 0x0247, 0x024d, - 0x0001, 0x0039, 0x0a63, 0x0001, 0x0039, 0x0a63, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x0294, 0x0000, 0x0000, - // Entry 27B00 - 27B3F - 0x0299, 0x02ae, 0x02c3, 0x02d8, 0x02ed, 0x0302, 0x0317, 0x032c, - 0x0341, 0x0356, 0x036f, 0x0388, 0x0000, 0x0000, 0x0000, 0x03a1, - 0x03b8, 0x03cf, 0x0000, 0x0000, 0x0000, 0x03e6, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x03eb, 0x03fd, 0x040f, 0x0421, 0x0433, - 0x0445, 0x0457, 0x0469, 0x047b, 0x048d, 0x049f, 0x04b1, 0x04c3, - 0x04d5, 0x04e7, 0x04f9, 0x050b, 0x051d, 0x052f, 0x0541, 0x0553, - 0x0000, 0x0565, 0x0000, 0x056a, 0x057e, 0x058e, 0x059e, 0x05b2, - 0x05c2, 0x05d2, 0x05e6, 0x05f6, 0x0606, 0x0001, 0x0296, 0x0001, - // Entry 27B40 - 27B7F - 0x0039, 0x0d79, 0x0003, 0x029d, 0x02a0, 0x02a5, 0x0001, 0x0039, - 0x0d89, 0x0003, 0x0039, 0x0d99, 0x0db5, 0x0dd1, 0x0002, 0x02a8, - 0x02ab, 0x0001, 0x0039, 0x0df3, 0x0001, 0x0039, 0x0e10, 0x0003, - 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x0039, 0x0d89, 0x0003, 0x0039, - 0x0d99, 0x0db5, 0x0dd1, 0x0002, 0x02bd, 0x02c0, 0x0001, 0x0039, - 0x0df3, 0x0001, 0x0039, 0x0e10, 0x0003, 0x02c7, 0x02ca, 0x02cf, - 0x0001, 0x0039, 0x0d89, 0x0003, 0x0039, 0x0d99, 0x0db5, 0x0dd1, - 0x0002, 0x02d2, 0x02d5, 0x0001, 0x0039, 0x0df3, 0x0001, 0x0039, - // Entry 27B80 - 27BBF - 0x0e10, 0x0003, 0x02dc, 0x02df, 0x02e4, 0x0001, 0x0039, 0x0e30, - 0x0003, 0x0039, 0x0e46, 0x0e68, 0x0e8a, 0x0002, 0x02e7, 0x02ea, - 0x0001, 0x0039, 0x0eb2, 0x0001, 0x0039, 0x0ed5, 0x0003, 0x02f1, - 0x02f4, 0x02f9, 0x0001, 0x0039, 0x0e30, 0x0003, 0x0039, 0x0e46, - 0x0e68, 0x0e8a, 0x0002, 0x02fc, 0x02ff, 0x0001, 0x0039, 0x0eb2, - 0x0001, 0x0039, 0x0ed5, 0x0003, 0x0306, 0x0309, 0x030e, 0x0001, - 0x0039, 0x0e30, 0x0003, 0x0039, 0x0e46, 0x0e68, 0x0e8a, 0x0002, - 0x0311, 0x0314, 0x0001, 0x0039, 0x0eb2, 0x0001, 0x0039, 0x0ed5, - // Entry 27BC0 - 27BFF - 0x0003, 0x031b, 0x031e, 0x0323, 0x0001, 0x0039, 0x0efb, 0x0003, - 0x0039, 0x0f02, 0x0f15, 0x0f28, 0x0002, 0x0326, 0x0329, 0x0001, - 0x0039, 0x0f41, 0x0001, 0x0039, 0x0f55, 0x0003, 0x0330, 0x0333, - 0x0338, 0x0001, 0x0039, 0x0efb, 0x0003, 0x0039, 0x0f02, 0x0f15, - 0x0f28, 0x0002, 0x033b, 0x033e, 0x0001, 0x0039, 0x0f41, 0x0001, - 0x0039, 0x0f55, 0x0003, 0x0345, 0x0348, 0x034d, 0x0001, 0x0039, - 0x0efb, 0x0003, 0x0039, 0x0f02, 0x0f15, 0x0f28, 0x0002, 0x0350, - 0x0353, 0x0001, 0x0039, 0x0f41, 0x0001, 0x0039, 0x0f55, 0x0004, - // Entry 27C00 - 27C3F - 0x035b, 0x035e, 0x0363, 0x036c, 0x0001, 0x0039, 0x0f69, 0x0003, - 0x0039, 0x0f7f, 0x0fa1, 0x0fc3, 0x0002, 0x0366, 0x0369, 0x0001, - 0x0039, 0x0feb, 0x0001, 0x0039, 0x100e, 0x0001, 0x0039, 0x1034, - 0x0004, 0x0374, 0x0377, 0x037c, 0x0385, 0x0001, 0x0039, 0x0f69, - 0x0003, 0x0039, 0x0f7f, 0x0fa1, 0x0fc3, 0x0002, 0x037f, 0x0382, - 0x0001, 0x0039, 0x0feb, 0x0001, 0x0039, 0x100e, 0x0001, 0x0039, - 0x1034, 0x0004, 0x038d, 0x0390, 0x0395, 0x039e, 0x0001, 0x0039, - 0x0f69, 0x0003, 0x0039, 0x0f7f, 0x0fa1, 0x0fc3, 0x0002, 0x0398, - // Entry 27C40 - 27C7F - 0x039b, 0x0001, 0x0039, 0x0feb, 0x0001, 0x0039, 0x100e, 0x0001, - 0x0039, 0x1034, 0x0003, 0x03a5, 0x03a8, 0x03af, 0x0001, 0x0039, - 0x1054, 0x0005, 0x0039, 0x1083, 0x109c, 0x10b5, 0x1061, 0x10d4, - 0x0002, 0x03b2, 0x03b5, 0x0001, 0x0039, 0x10f3, 0x0001, 0x0039, - 0x110d, 0x0003, 0x03bc, 0x03bf, 0x03c6, 0x0001, 0x0039, 0x1054, - 0x0005, 0x0039, 0x1083, 0x109c, 0x112a, 0x1061, 0x10d4, 0x0002, - 0x03c9, 0x03cc, 0x0001, 0x0039, 0x10f3, 0x0001, 0x0039, 0x1146, - 0x0003, 0x03d3, 0x03d6, 0x03dd, 0x0001, 0x0039, 0x1054, 0x0005, - // Entry 27C80 - 27CBF - 0x0039, 0x1083, 0x109c, 0x112a, 0x1061, 0x10d4, 0x0002, 0x03e0, - 0x03e3, 0x0001, 0x0039, 0x10f3, 0x0001, 0x0039, 0x1146, 0x0001, - 0x03e8, 0x0001, 0x0039, 0x1166, 0x0003, 0x0000, 0x03ef, 0x03f4, - 0x0003, 0x0039, 0x1194, 0x11c5, 0x11f6, 0x0002, 0x03f7, 0x03fa, - 0x0001, 0x0039, 0x122d, 0x0001, 0x0039, 0x1272, 0x0003, 0x0000, - 0x0401, 0x0406, 0x0003, 0x0039, 0x1194, 0x11c5, 0x11f6, 0x0002, - 0x0409, 0x040c, 0x0001, 0x0039, 0x122d, 0x0001, 0x0039, 0x1272, - 0x0003, 0x0000, 0x0413, 0x0418, 0x0003, 0x0039, 0x1194, 0x11c5, - // Entry 27CC0 - 27CFF - 0x11f6, 0x0002, 0x041b, 0x041e, 0x0001, 0x0039, 0x122d, 0x0001, - 0x0039, 0x1272, 0x0003, 0x0000, 0x0425, 0x042a, 0x0003, 0x0039, - 0x12b7, 0x12e2, 0x130d, 0x0002, 0x042d, 0x0430, 0x0001, 0x0039, - 0x133e, 0x0001, 0x0039, 0x137d, 0x0003, 0x0000, 0x0437, 0x043c, - 0x0003, 0x0039, 0x12b7, 0x12e2, 0x130d, 0x0002, 0x043f, 0x0442, - 0x0001, 0x0039, 0x133e, 0x0001, 0x0039, 0x137d, 0x0003, 0x0000, - 0x0449, 0x044e, 0x0003, 0x0039, 0x12b7, 0x12e2, 0x130d, 0x0002, - 0x0451, 0x0454, 0x0001, 0x0039, 0x133e, 0x0001, 0x0039, 0x137d, - // Entry 27D00 - 27D3F - 0x0003, 0x0000, 0x045b, 0x0460, 0x0003, 0x0039, 0x13bc, 0x13ea, - 0x1418, 0x0002, 0x0463, 0x0466, 0x0001, 0x0039, 0x144c, 0x0001, - 0x0039, 0x148e, 0x0003, 0x0000, 0x046d, 0x0472, 0x0003, 0x0039, - 0x13bc, 0x13ea, 0x1418, 0x0002, 0x0475, 0x0478, 0x0001, 0x0039, - 0x144c, 0x0001, 0x0039, 0x148e, 0x0003, 0x0000, 0x047f, 0x0484, - 0x0003, 0x0039, 0x13bc, 0x13ea, 0x1418, 0x0002, 0x0487, 0x048a, - 0x0001, 0x0039, 0x144c, 0x0001, 0x0039, 0x148e, 0x0003, 0x0000, - 0x0491, 0x0496, 0x0003, 0x0039, 0x14d0, 0x14f5, 0x151a, 0x0002, - // Entry 27D40 - 27D7F - 0x0499, 0x049c, 0x0001, 0x0039, 0x1545, 0x0001, 0x0039, 0x157e, - 0x0003, 0x0000, 0x04a3, 0x04a8, 0x0003, 0x0039, 0x14d0, 0x14f5, - 0x151a, 0x0002, 0x04ab, 0x04ae, 0x0001, 0x0039, 0x1545, 0x0001, - 0x0039, 0x157e, 0x0003, 0x0000, 0x04b5, 0x04ba, 0x0003, 0x0039, - 0x14d0, 0x14f5, 0x151a, 0x0002, 0x04bd, 0x04c0, 0x0001, 0x0039, - 0x1545, 0x0001, 0x0039, 0x157e, 0x0003, 0x0000, 0x04c7, 0x04cc, - 0x0003, 0x0039, 0x15b7, 0x15f1, 0x162b, 0x0002, 0x04cf, 0x04d2, - 0x0001, 0x0039, 0x166b, 0x0001, 0x0039, 0x16b9, 0x0003, 0x0000, - // Entry 27D80 - 27DBF - 0x04d9, 0x04de, 0x0003, 0x0039, 0x15b7, 0x15f1, 0x162b, 0x0002, - 0x04e1, 0x04e4, 0x0001, 0x0039, 0x166b, 0x0001, 0x0039, 0x16b9, - 0x0003, 0x0000, 0x04eb, 0x04f0, 0x0003, 0x0039, 0x15b7, 0x15f1, - 0x162b, 0x0002, 0x04f3, 0x04f6, 0x0001, 0x0039, 0x166b, 0x0001, - 0x0039, 0x16b9, 0x0003, 0x0000, 0x04fd, 0x0502, 0x0003, 0x0039, - 0x1707, 0x1732, 0x175d, 0x0002, 0x0505, 0x0508, 0x0001, 0x0039, - 0x178e, 0x0001, 0x0039, 0x17cd, 0x0003, 0x0000, 0x050f, 0x0514, - 0x0003, 0x0039, 0x1707, 0x1732, 0x175d, 0x0002, 0x0517, 0x051a, - // Entry 27DC0 - 27DFF - 0x0001, 0x0039, 0x178e, 0x0001, 0x0039, 0x17cd, 0x0003, 0x0000, - 0x0521, 0x0526, 0x0003, 0x0039, 0x1707, 0x1732, 0x175d, 0x0002, - 0x0529, 0x052c, 0x0001, 0x0039, 0x178e, 0x0001, 0x0039, 0x17cd, - 0x0003, 0x0000, 0x0533, 0x0538, 0x0003, 0x0039, 0x180c, 0x1834, - 0x185c, 0x0002, 0x053b, 0x053e, 0x0001, 0x0039, 0x188a, 0x0001, - 0x0039, 0x18c6, 0x0003, 0x0000, 0x0545, 0x054a, 0x0003, 0x0039, - 0x180c, 0x1834, 0x185c, 0x0002, 0x054d, 0x0550, 0x0001, 0x0039, - 0x188a, 0x0001, 0x0039, 0x18c6, 0x0003, 0x0000, 0x0557, 0x055c, - // Entry 27E00 - 27E3F - 0x0003, 0x0039, 0x180c, 0x1834, 0x185c, 0x0002, 0x055f, 0x0562, - 0x0001, 0x0039, 0x188a, 0x0001, 0x0039, 0x18c6, 0x0001, 0x0567, - 0x0001, 0x0039, 0x1902, 0x0003, 0x056e, 0x0571, 0x0575, 0x0001, - 0x0039, 0x1922, 0x0002, 0x0039, 0xffff, 0x192f, 0x0002, 0x0578, - 0x057b, 0x0001, 0x0039, 0x1945, 0x0001, 0x0039, 0x197e, 0x0003, - 0x0582, 0x0000, 0x0585, 0x0001, 0x0039, 0x1922, 0x0002, 0x0588, - 0x058b, 0x0001, 0x0039, 0x199b, 0x0001, 0x0039, 0x197e, 0x0003, - 0x0592, 0x0000, 0x0595, 0x0001, 0x0039, 0x1922, 0x0002, 0x0598, - // Entry 27E40 - 27E7F - 0x059b, 0x0001, 0x0039, 0x199b, 0x0001, 0x0039, 0x197e, 0x0003, - 0x05a2, 0x05a5, 0x05a9, 0x0001, 0x0039, 0x19b5, 0x0002, 0x0039, - 0xffff, 0x19c2, 0x0002, 0x05ac, 0x05af, 0x0001, 0x0039, 0x19d8, - 0x0001, 0x0039, 0x19f2, 0x0003, 0x05b6, 0x0000, 0x05b9, 0x0001, - 0x0039, 0x19b5, 0x0002, 0x05bc, 0x05bf, 0x0001, 0x0039, 0x19d8, - 0x0001, 0x0039, 0x1a0f, 0x0003, 0x05c6, 0x0000, 0x05c9, 0x0001, - 0x0039, 0x19b5, 0x0002, 0x05cc, 0x05cf, 0x0001, 0x0039, 0x19d8, - 0x0001, 0x0039, 0x1a0f, 0x0003, 0x05d6, 0x05d9, 0x05dd, 0x0001, - // Entry 27E80 - 27EBF - 0x0039, 0x1a2f, 0x0002, 0x0039, 0xffff, 0x1a42, 0x0002, 0x05e0, - 0x05e3, 0x0001, 0x0039, 0x1a4f, 0x0001, 0x0039, 0x1a6f, 0x0003, - 0x05ea, 0x0000, 0x05ed, 0x0001, 0x0039, 0x1a2f, 0x0002, 0x05f0, - 0x05f3, 0x0001, 0x0039, 0x1a4f, 0x0001, 0x0039, 0x1a6f, 0x0003, - 0x05fa, 0x0000, 0x05fd, 0x0001, 0x0039, 0x1a2f, 0x0002, 0x0600, - 0x0603, 0x0001, 0x0039, 0x1a4f, 0x0001, 0x0039, 0x1a6f, 0x0001, - 0x0608, 0x0001, 0x0039, 0x1a92, 0x0004, 0x0610, 0x0615, 0x061a, - 0x0625, 0x0003, 0x0000, 0x1dc7, 0x2999, 0x29b6, 0x0003, 0x0039, - // Entry 27EC0 - 27EFF - 0x1aae, 0x1acb, 0x1b03, 0x0002, 0x0000, 0x061d, 0x0002, 0x0000, - 0x0620, 0x0003, 0x0039, 0xffff, 0x1b3b, 0x1ba2, 0x0002, 0x0000, - 0x0628, 0x0003, 0x06c2, 0x0758, 0x062c, 0x0094, 0x0039, 0x1bee, - 0x1c37, 0x1c80, 0x1ccc, 0x1d6a, 0x1e72, 0x1f3e, 0x2040, 0x21ae, - 0x2325, 0x249c, 0xffff, 0x25dd, 0x2694, 0x2757, 0x2844, 0x2940, - 0x2a06, 0x2af3, 0x2c46, 0x2dc0, 0x2ee9, 0x2ffd, 0x30db, 0x31a1, - 0x3248, 0x326d, 0x32d5, 0x338b, 0x33ff, 0x3494, 0x34f0, 0x3595, - 0x3625, 0x36d3, 0x3774, 0x37b4, 0x3819, 0x38e2, 0x39c3, 0x3a49, - // Entry 27F00 - 27F3F - 0x3a71, 0x3aba, 0x3b3a, 0x3bf0, 0x3c64, 0x3d66, 0x3e34, 0x3ed2, - 0x3fce, 0x40ac, 0x4144, 0x418a, 0x41f5, 0x422c, 0x4288, 0x432c, - 0x4363, 0x43e0, 0x4500, 0x45b6, 0x45f3, 0x466e, 0x4760, 0x4811, - 0x488b, 0x48b3, 0x48f9, 0x492a, 0x497c, 0x49ce, 0x4a4e, 0x4b0b, - 0x4bd1, 0x4c9d, 0xffff, 0x4d20, 0x4d72, 0x4df8, 0x4e7e, 0x4ee0, - 0x4f87, 0x4fbe, 0x5011, 0x5094, 0x5108, 0x51af, 0x51e0, 0x5211, - 0x5251, 0x52a7, 0x5336, 0x53b3, 0x54d3, 0x55ea, 0x56c2, 0x5752, - 0x5777, 0x579c, 0x57f5, 0x58ce, 0x59ac, 0x5a53, 0x5a7b, 0x5b10, - // Entry 27F40 - 27F7F - 0x5c39, 0x5d0e, 0x5dc2, 0x5e69, 0x5e8e, 0x5f02, 0x5fd4, 0x6091, - 0x6135, 0x61c5, 0x62a7, 0x62cf, 0x62fd, 0x632b, 0x6359, 0x63be, - 0xffff, 0x6487, 0x650d, 0x653b, 0x656f, 0x65ac, 0x65ec, 0x661a, - 0x664b, 0x669e, 0x6724, 0x6758, 0x67ab, 0x6837, 0x689f, 0x6958, - 0x69c3, 0x6ab3, 0x6b9a, 0x6c32, 0x6cb5, 0x6db1, 0x6e64, 0x6e95, - 0x6ec0, 0x6f35, 0x7007, 0x0094, 0x0039, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1d1e, 0x1e41, 0x1f0d, 0x1fd9, 0x2144, 0x22b2, 0x2435, - 0xffff, 0x25b2, 0x2666, 0x2726, 0x27f5, 0x2915, 0x29cf, 0x2aaa, - // Entry 27F80 - 27FBF - 0x2bc7, 0x2d71, 0x2e94, 0x2fc0, 0x30b0, 0x316a, 0xffff, 0xffff, - 0x3298, 0xffff, 0x33d1, 0xffff, 0x34c8, 0x3576, 0x3603, 0x369f, - 0xffff, 0xffff, 0x37e8, 0x38b4, 0x399b, 0xffff, 0xffff, 0xffff, - 0x3afd, 0xffff, 0x3c24, 0x3d1d, 0xffff, 0x3e8f, 0x3f91, 0x4081, - 0xffff, 0xffff, 0xffff, 0xffff, 0x4254, 0xffff, 0xffff, 0x438e, - 0x44bd, 0xffff, 0xffff, 0x4624, 0x4735, 0x47ef, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x4a20, 0x4ae0, 0x4b9a, 0x4c75, - 0xffff, 0xffff, 0xffff, 0x4dd0, 0xffff, 0x4ea9, 0xffff, 0xffff, - // Entry 27FC0 - 27FFF - 0x4fec, 0xffff, 0x50d1, 0xffff, 0xffff, 0xffff, 0xffff, 0x527c, - 0xffff, 0x5367, 0x547e, 0x55b0, 0x5697, 0xffff, 0xffff, 0xffff, - 0x57c4, 0x5897, 0x5972, 0xffff, 0xffff, 0x5ab8, 0x5bfc, 0x5cec, - 0x5d8b, 0xffff, 0xffff, 0x5ec8, 0x5fac, 0x605d, 0xffff, 0x6169, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x638a, 0xffff, 0x645f, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6676, - 0xffff, 0xffff, 0x6783, 0xffff, 0x685f, 0xffff, 0x6989, 0x6a73, - 0x6b6c, 0xffff, 0x6c72, 0x6d74, 0xffff, 0xffff, 0xffff, 0x6f0a, - // Entry 28000 - 2803F - 0x6fc4, 0x0094, 0x0039, 0xffff, 0xffff, 0xffff, 0xffff, 0x1dd1, - 0x1ebe, 0x1f8a, 0x20c2, 0x2233, 0x23a7, 0x2521, 0xffff, 0x2620, - 0x26dd, 0x27a6, 0x28ab, 0x2986, 0x2a58, 0x2b5a, 0x2cda, 0x2e2a, - 0x2f56, 0x3055, 0x3121, 0x31f3, 0xffff, 0xffff, 0x332d, 0xffff, - 0x3448, 0xffff, 0x3533, 0x35cc, 0x3662, 0x3722, 0xffff, 0xffff, - 0x3865, 0x392b, 0x3a06, 0xffff, 0xffff, 0xffff, 0x3b95, 0xffff, - 0x3cbf, 0x3dcd, 0xffff, 0x3f30, 0x4026, 0x40f5, 0xffff, 0xffff, - 0xffff, 0xffff, 0x42d7, 0xffff, 0xffff, 0x4453, 0x455b, 0xffff, - // Entry 28040 - 2807F - 0xffff, 0x46d3, 0x47a6, 0x484b, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4a97, 0x4b51, 0x4c23, 0x4ce0, 0xffff, 0xffff, - 0xffff, 0x4e3b, 0xffff, 0x4f32, 0xffff, 0xffff, 0x5054, 0xffff, - 0x515a, 0xffff, 0xffff, 0xffff, 0xffff, 0x52ed, 0xffff, 0x5417, - 0x5540, 0x563f, 0x5708, 0xffff, 0xffff, 0xffff, 0x5841, 0x5920, - 0x5a04, 0xffff, 0xffff, 0x5b86, 0x5c91, 0x5d4b, 0x5e14, 0xffff, - 0xffff, 0x5f57, 0x6017, 0x60e0, 0xffff, 0x6236, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x640d, 0xffff, 0x64c7, 0xffff, 0xffff, - // Entry 28080 - 280BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x66e1, 0xffff, 0xffff, - 0x67f1, 0xffff, 0x68f7, 0xffff, 0x6a18, 0x6b0e, 0x6be6, 0xffff, - 0x6d13, 0x6e09, 0xffff, 0xffff, 0xffff, 0x6f7b, 0x7065, 0x0003, - 0x0004, 0x0238, 0x064a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, - 0x001b, 0x0021, 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, - 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, - // Entry 280C0 - 280FF - 0x002f, 0x002c, 0x0032, 0x0001, 0x003a, 0x0000, 0x0001, 0x003a, - 0x0000, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0041, 0x00a6, 0x00fd, 0x0132, 0x01eb, 0x0205, 0x0216, 0x0227, - 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, - 0x003a, 0xffff, 0x0017, 0x001e, 0x002e, 0x0041, 0x0051, 0x0058, - 0x0065, 0x0072, 0x0079, 0x008f, 0x009f, 0x00ac, 0x000d, 0x003a, - 0xffff, 0x00bc, 0x00c0, 0x00c7, 0x00ce, 0x0051, 0x00d2, 0x00d9, - 0x00e0, 0x00e4, 0x00eb, 0x00ef, 0x00f3, 0x000d, 0x003a, 0xffff, - // Entry 28100 - 2813F - 0x00fa, 0x010a, 0x002e, 0x0123, 0x0051, 0x0058, 0x0065, 0x0139, - 0x014c, 0x016b, 0x0184, 0x019a, 0x0003, 0x0079, 0x0088, 0x0097, - 0x000d, 0x003a, 0xffff, 0x0017, 0x001e, 0x002e, 0x0041, 0x0051, - 0x0058, 0x0065, 0x0072, 0x0079, 0x008f, 0x009f, 0x00ac, 0x000d, - 0x003a, 0xffff, 0x00bc, 0x00c0, 0x00c7, 0x00ce, 0x0051, 0x00d2, - 0x00d9, 0x00e0, 0x00e4, 0x00eb, 0x00ef, 0x00f3, 0x000d, 0x003a, - 0xffff, 0x00fa, 0x010a, 0x002e, 0x0123, 0x0051, 0x0058, 0x0065, - 0x0139, 0x014c, 0x016b, 0x0184, 0x019a, 0x0002, 0x00a9, 0x00d3, - // Entry 28140 - 2817F - 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x003a, - 0x01b3, 0x01c0, 0x01ca, 0x01d7, 0x01e1, 0x01ee, 0x01fe, 0x0007, - 0x003a, 0x0208, 0x020f, 0x0216, 0x021d, 0x0224, 0x022b, 0x0232, - 0x0007, 0x003a, 0x01b3, 0x01c0, 0x01ca, 0x01d7, 0x01e1, 0x01ee, - 0x01fe, 0x0007, 0x003a, 0x0236, 0x024c, 0x025f, 0x0275, 0x0288, - 0x029e, 0x02b7, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, - 0x0007, 0x003a, 0x01b3, 0x01c0, 0x01ca, 0x01d7, 0x01e1, 0x01ee, - 0x01fe, 0x0007, 0x003a, 0x0208, 0x020f, 0x0216, 0x021d, 0x0224, - // Entry 28180 - 281BF - 0x022b, 0x0232, 0x0007, 0x003a, 0x01b3, 0x01c0, 0x01ca, 0x01d7, - 0x01e1, 0x01ee, 0x01fe, 0x0007, 0x003a, 0x0236, 0x024c, 0x025f, - 0x0275, 0x0288, 0x029e, 0x02b7, 0x0002, 0x0100, 0x0119, 0x0003, - 0x0104, 0x010b, 0x0112, 0x0005, 0x003a, 0xffff, 0x02ca, 0x02d9, - 0x02e8, 0x02f7, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x003a, 0xffff, 0x0306, 0x032a, 0x034e, 0x0372, - 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x003a, 0xffff, 0x02ca, - 0x02d9, 0x02e8, 0x02f7, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - // Entry 281C0 - 281FF - 0x0037, 0x2335, 0x0005, 0x003a, 0xffff, 0x0306, 0x032a, 0x034e, - 0x0372, 0x0002, 0x0135, 0x0190, 0x0003, 0x0139, 0x0156, 0x0173, - 0x0007, 0x0144, 0x0147, 0x0141, 0x014a, 0x014d, 0x0150, 0x0153, - 0x0001, 0x003a, 0x0396, 0x0001, 0x003a, 0x03b6, 0x0001, 0x003a, - 0x03d2, 0x0001, 0x003a, 0x03e8, 0x0001, 0x003a, 0x03fe, 0x0001, - 0x003a, 0x0417, 0x0001, 0x003a, 0x0424, 0x0007, 0x0161, 0x0164, - 0x015e, 0x0167, 0x016a, 0x016d, 0x0170, 0x0001, 0x003a, 0x0437, - 0x0001, 0x003a, 0x0456, 0x0001, 0x003a, 0x00eb, 0x0001, 0x003a, - // Entry 28200 - 2823F - 0x03e8, 0x0001, 0x003a, 0x03fe, 0x0001, 0x003a, 0x0417, 0x0001, - 0x003a, 0x0424, 0x0007, 0x017e, 0x0181, 0x017b, 0x0184, 0x0187, - 0x018a, 0x018d, 0x0001, 0x003a, 0x0396, 0x0001, 0x003a, 0x03b6, - 0x0001, 0x003a, 0x03d2, 0x0001, 0x003a, 0x03e8, 0x0001, 0x003a, - 0x03fe, 0x0001, 0x003a, 0x0417, 0x0001, 0x003a, 0x0424, 0x0003, - 0x0194, 0x01b1, 0x01ce, 0x0007, 0x019f, 0x01a2, 0x019c, 0x01a5, - 0x01a8, 0x01ab, 0x01ae, 0x0001, 0x003a, 0x0437, 0x0001, 0x003a, - 0x03b6, 0x0001, 0x003a, 0x03d2, 0x0001, 0x003a, 0x03e8, 0x0001, - // Entry 28240 - 2827F - 0x003a, 0x03fe, 0x0001, 0x003a, 0x0417, 0x0001, 0x003a, 0x0424, - 0x0007, 0x01bc, 0x01bf, 0x01b9, 0x01c2, 0x01c5, 0x01c8, 0x01cb, - 0x0001, 0x003a, 0x0437, 0x0001, 0x003a, 0x03b6, 0x0001, 0x003a, - 0x03d2, 0x0001, 0x003a, 0x03e8, 0x0001, 0x003a, 0x03fe, 0x0001, - 0x003a, 0x0417, 0x0001, 0x003a, 0x0424, 0x0007, 0x01d9, 0x01dc, - 0x01d6, 0x01df, 0x01e2, 0x01e5, 0x01e8, 0x0001, 0x003a, 0x0437, - 0x0001, 0x003a, 0x03b6, 0x0001, 0x003a, 0x03d2, 0x0001, 0x003a, - 0x03e8, 0x0001, 0x003a, 0x03fe, 0x0001, 0x003a, 0x0417, 0x0001, - // Entry 28280 - 282BF - 0x003a, 0x0424, 0x0003, 0x01fa, 0x0000, 0x01ef, 0x0002, 0x01f2, - 0x01f6, 0x0002, 0x003a, 0x045d, 0x04a1, 0x0002, 0x003a, 0x0483, - 0x04be, 0x0002, 0x01fd, 0x0201, 0x0002, 0x003a, 0x04db, 0x04ef, - 0x0002, 0x003a, 0x0483, 0x04be, 0x0004, 0x0213, 0x020d, 0x020a, - 0x0210, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, 0x0001, - 0x000c, 0x03e3, 0x0001, 0x0000, 0x237b, 0x0004, 0x0224, 0x021e, - 0x021b, 0x0221, 0x0001, 0x002a, 0x0ba7, 0x0001, 0x002a, 0x0bb7, - 0x0001, 0x002a, 0x0bc4, 0x0001, 0x002a, 0x0bcf, 0x0004, 0x0235, - // Entry 282C0 - 282FF - 0x022f, 0x022c, 0x0232, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, - 0x0279, 0x0000, 0x0000, 0x027e, 0x0295, 0x02ac, 0x02c3, 0x02da, - 0x02f1, 0x0308, 0x031f, 0x0336, 0x034d, 0x0368, 0x0383, 0x0000, - 0x0000, 0x0000, 0x039e, 0x03b7, 0x03d0, 0x0000, 0x0000, 0x0000, - 0x03e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ee, 0x0402, - 0x0416, 0x042a, 0x043e, 0x0452, 0x0466, 0x047a, 0x048e, 0x04a2, - 0x04b6, 0x04ca, 0x04de, 0x04f2, 0x0506, 0x051a, 0x052e, 0x0542, - // Entry 28300 - 2833F - 0x0556, 0x056a, 0x057e, 0x0000, 0x0592, 0x0000, 0x0597, 0x05ad, - 0x05bf, 0x05d1, 0x05e7, 0x05f9, 0x060b, 0x0621, 0x0633, 0x0645, - 0x0001, 0x027b, 0x0001, 0x003a, 0x0500, 0x0003, 0x0282, 0x0285, - 0x028a, 0x0001, 0x003a, 0x050a, 0x0003, 0x003a, 0x0517, 0x0537, - 0x0548, 0x0002, 0x028d, 0x0291, 0x0002, 0x003a, 0x0588, 0x0568, - 0x0002, 0x003a, 0x05cf, 0x05ab, 0x0003, 0x0299, 0x029c, 0x02a1, - 0x0001, 0x003a, 0x050a, 0x0003, 0x003a, 0x05f6, 0x0537, 0x0548, - 0x0002, 0x02a4, 0x02a8, 0x0002, 0x003a, 0x0588, 0x0568, 0x0002, - // Entry 28340 - 2837F - 0x003a, 0x05cf, 0x05ab, 0x0003, 0x02b0, 0x02b3, 0x02b8, 0x0001, - 0x003a, 0x050a, 0x0003, 0x003a, 0x05f6, 0x0537, 0x0548, 0x0002, - 0x02bb, 0x02bf, 0x0002, 0x003a, 0x0588, 0x0568, 0x0002, 0x003a, - 0x05cf, 0x05ab, 0x0003, 0x02c7, 0x02ca, 0x02cf, 0x0001, 0x003a, - 0x0610, 0x0003, 0x003a, 0x062c, 0x065b, 0x067b, 0x0002, 0x02d2, - 0x02d6, 0x0002, 0x003a, 0x06d9, 0x06aa, 0x0002, 0x003a, 0x073e, - 0x070b, 0x0003, 0x02de, 0x02e1, 0x02e6, 0x0001, 0x003a, 0x0610, - 0x0003, 0x003a, 0x0774, 0x065b, 0x067b, 0x0002, 0x02e9, 0x02ed, - // Entry 28380 - 283BF - 0x0002, 0x003a, 0x06d9, 0x079d, 0x0002, 0x003a, 0x073e, 0x07c5, - 0x0003, 0x02f5, 0x02f8, 0x02fd, 0x0001, 0x003a, 0x0610, 0x0003, - 0x003a, 0x0774, 0x065b, 0x067b, 0x0002, 0x0300, 0x0304, 0x0002, - 0x003a, 0x06d9, 0x06d9, 0x0002, 0x003a, 0x07ee, 0x073e, 0x0003, - 0x030c, 0x030f, 0x0314, 0x0001, 0x003a, 0x0811, 0x0003, 0x003a, - 0x0824, 0x0844, 0x085b, 0x0002, 0x0317, 0x031b, 0x0002, 0x003a, - 0x08a1, 0x0881, 0x0002, 0x003a, 0x08ca, 0x08ca, 0x0003, 0x0323, - 0x0326, 0x032b, 0x0001, 0x003a, 0x0811, 0x0003, 0x003a, 0x0824, - // Entry 283C0 - 283FF - 0x0844, 0x085b, 0x0002, 0x032e, 0x0332, 0x0002, 0x003a, 0x08a1, - 0x0881, 0x0002, 0x003a, 0x08ca, 0x08f7, 0x0003, 0x033a, 0x033d, - 0x0342, 0x0001, 0x003a, 0x0811, 0x0003, 0x003a, 0x0824, 0x0844, - 0x085b, 0x0002, 0x0345, 0x0349, 0x0002, 0x003a, 0x08a1, 0x0881, - 0x0002, 0x003a, 0x08ca, 0x091e, 0x0004, 0x0352, 0x0355, 0x035a, - 0x0365, 0x0001, 0x003a, 0x0942, 0x0003, 0x003a, 0x094c, 0x0963, - 0x0971, 0x0002, 0x035d, 0x0361, 0x0002, 0x003a, 0x09ab, 0x098e, - 0x0002, 0x003a, 0x09ec, 0x09cb, 0x0001, 0x003a, 0x0a10, 0x0004, - // Entry 28400 - 2843F - 0x036d, 0x0370, 0x0375, 0x0380, 0x0001, 0x003a, 0x0942, 0x0003, - 0x003a, 0x094c, 0x0963, 0x0971, 0x0002, 0x0378, 0x037c, 0x0002, - 0x003a, 0x09ab, 0x098e, 0x0002, 0x003a, 0x09ec, 0x09cb, 0x0001, - 0x003a, 0x0a10, 0x0004, 0x0388, 0x038b, 0x0390, 0x039b, 0x0001, - 0x003a, 0x0942, 0x0003, 0x003a, 0x094c, 0x0963, 0x0971, 0x0002, - 0x0393, 0x0397, 0x0002, 0x003a, 0x09ab, 0x098e, 0x0002, 0x003a, - 0x09ec, 0x09cb, 0x0001, 0x003a, 0x0a10, 0x0003, 0x03a2, 0x03a5, - 0x03ac, 0x0001, 0x003a, 0x0a1e, 0x0005, 0x003a, 0x0a3b, 0x0a4e, - // Entry 28440 - 2847F - 0x0a5b, 0x0a28, 0x0a68, 0x0002, 0x03af, 0x03b3, 0x0002, 0x003a, - 0x0a9e, 0x0a81, 0x0002, 0x003a, 0x0adf, 0x0abe, 0x0003, 0x03bb, - 0x03be, 0x03c5, 0x0001, 0x003a, 0x0a1e, 0x0005, 0x003a, 0x0a3b, - 0x0a4e, 0x0a5b, 0x0a28, 0x0a68, 0x0002, 0x03c8, 0x03cc, 0x0002, - 0x003a, 0x0a9e, 0x0a81, 0x0002, 0x003a, 0x0adf, 0x0adf, 0x0003, - 0x03d4, 0x03d7, 0x03de, 0x0001, 0x003a, 0x0a1e, 0x0005, 0x003a, - 0x0a3b, 0x0a4e, 0x0a5b, 0x0a28, 0x0a68, 0x0002, 0x03e1, 0x03e5, - 0x0002, 0x003a, 0x0a9e, 0x0a81, 0x0002, 0x003a, 0x0adf, 0x0adf, - // Entry 28480 - 284BF - 0x0001, 0x03eb, 0x0001, 0x003a, 0x0b03, 0x0003, 0x0000, 0x03f2, - 0x03f7, 0x0003, 0x003a, 0x0b1a, 0x0b3d, 0x0b57, 0x0002, 0x03fa, - 0x03fe, 0x0002, 0x003a, 0x0ba6, 0x0b80, 0x0002, 0x003a, 0x0bfc, - 0x0bcf, 0x0003, 0x0000, 0x0406, 0x040b, 0x0003, 0x003a, 0x0b1a, - 0x0b3d, 0x0b57, 0x0002, 0x040e, 0x0412, 0x0002, 0x003a, 0x0ba6, - 0x0ba6, 0x0002, 0x003a, 0x0bfc, 0x0bfc, 0x0003, 0x0000, 0x041a, - 0x041f, 0x0003, 0x003a, 0x0b1a, 0x0b3d, 0x0b57, 0x0002, 0x0422, - 0x0426, 0x0002, 0x003a, 0x0ba6, 0x0ba6, 0x0002, 0x003a, 0x0bfc, - // Entry 284C0 - 284FF - 0x0bfc, 0x0003, 0x0000, 0x042e, 0x0433, 0x0003, 0x003a, 0x0c2c, - 0x0c4c, 0x0c63, 0x0002, 0x0436, 0x043a, 0x0002, 0x003a, 0x0cac, - 0x0c89, 0x0002, 0x003a, 0x0cac, 0x0cd2, 0x0003, 0x0000, 0x0442, - 0x0447, 0x0003, 0x003a, 0x0c2c, 0x0c4c, 0x0c63, 0x0002, 0x044a, - 0x044e, 0x0002, 0x003a, 0x0cac, 0x0cac, 0x0002, 0x003a, 0x0cfc, - 0x0cfc, 0x0003, 0x0000, 0x0456, 0x045b, 0x0003, 0x003a, 0x0c2c, - 0x0c4c, 0x0c63, 0x0002, 0x045e, 0x0462, 0x0002, 0x003a, 0x0cac, - 0x0cac, 0x0002, 0x003a, 0x0cfc, 0x0cfc, 0x0003, 0x0000, 0x046a, - // Entry 28500 - 2853F - 0x046f, 0x0003, 0x003a, 0x0d29, 0x0d4c, 0x0d66, 0x0002, 0x0472, - 0x0476, 0x0002, 0x003a, 0x0db5, 0x0d8f, 0x0002, 0x003a, 0x0e0b, - 0x0dde, 0x0003, 0x0000, 0x047e, 0x0483, 0x0003, 0x003a, 0x0d29, - 0x0d4c, 0x0d66, 0x0002, 0x0486, 0x048a, 0x0002, 0x003a, 0x0db5, - 0x0db5, 0x0002, 0x003a, 0x0e0b, 0x0e0b, 0x0003, 0x0000, 0x0492, - 0x0497, 0x0003, 0x003a, 0x0d29, 0x0d4c, 0x0d66, 0x0002, 0x049a, - 0x049e, 0x0002, 0x003a, 0x0db5, 0x0db5, 0x0002, 0x003a, 0x0e0b, - 0x0e0b, 0x0003, 0x0000, 0x04a6, 0x04ab, 0x0003, 0x003a, 0x0e3b, - // Entry 28540 - 2857F - 0x0e5b, 0x0e72, 0x0002, 0x04ae, 0x04b2, 0x0002, 0x003a, 0x0ebb, - 0x0e98, 0x0002, 0x003a, 0x0f0b, 0x0ee1, 0x0003, 0x0000, 0x04ba, - 0x04bf, 0x0003, 0x003a, 0x0e3b, 0x0e5b, 0x0e72, 0x0002, 0x04c2, - 0x04c6, 0x0002, 0x003a, 0x0ebb, 0x0ebb, 0x0002, 0x003a, 0x0f0b, - 0x0f0b, 0x0003, 0x0000, 0x04ce, 0x04d3, 0x0003, 0x003a, 0x0e3b, - 0x0e5b, 0x0e72, 0x0002, 0x04d6, 0x04da, 0x0002, 0x003a, 0x0ebb, - 0x0ebb, 0x0002, 0x003a, 0x0f0b, 0x0f0b, 0x0003, 0x0000, 0x04e2, - 0x04e7, 0x0003, 0x003a, 0x0f38, 0x0f5b, 0x0f75, 0x0002, 0x04ea, - // Entry 28580 - 285BF - 0x04ee, 0x0002, 0x003a, 0x0fc4, 0x0f9e, 0x0002, 0x003a, 0x101a, - 0x0fed, 0x0003, 0x0000, 0x04f6, 0x04fb, 0x0003, 0x003a, 0x0f38, - 0x0f5b, 0x0f75, 0x0002, 0x04fe, 0x0502, 0x0002, 0x003a, 0x0fc4, - 0x0fc4, 0x0002, 0x003a, 0x101a, 0x101a, 0x0003, 0x0000, 0x050a, - 0x050f, 0x0003, 0x003a, 0x0f38, 0x0f5b, 0x0f75, 0x0002, 0x0512, - 0x0516, 0x0002, 0x003a, 0x0fc4, 0x0fc4, 0x0002, 0x003a, 0x101a, - 0x101a, 0x0003, 0x0000, 0x051e, 0x0523, 0x0003, 0x003a, 0x104a, - 0x1070, 0x108d, 0x0002, 0x0526, 0x052a, 0x0002, 0x003a, 0x10e2, - // Entry 285C0 - 285FF - 0x10b9, 0x0002, 0x003a, 0x1141, 0x1111, 0x0003, 0x0000, 0x0532, - 0x0537, 0x0003, 0x003a, 0x104a, 0x1070, 0x108d, 0x0002, 0x053a, - 0x053e, 0x0002, 0x003a, 0x10e2, 0x10e2, 0x0002, 0x003a, 0x1141, - 0x1141, 0x0003, 0x0000, 0x0546, 0x054b, 0x0003, 0x003a, 0x104a, - 0x1070, 0x108d, 0x0002, 0x054e, 0x0552, 0x0002, 0x003a, 0x10e2, - 0x10e2, 0x0002, 0x003a, 0x1141, 0x1141, 0x0003, 0x0000, 0x055a, - 0x055f, 0x0003, 0x003a, 0x1174, 0x1194, 0x11ab, 0x0002, 0x0562, - 0x0566, 0x0002, 0x003a, 0x11f4, 0x11d1, 0x0002, 0x003a, 0x1244, - // Entry 28600 - 2863F - 0x121a, 0x0003, 0x0000, 0x056e, 0x0573, 0x0003, 0x003a, 0x1174, - 0x1194, 0x11ab, 0x0002, 0x0576, 0x057a, 0x0002, 0x003a, 0x11f4, - 0x11f4, 0x0002, 0x003a, 0x1244, 0x1244, 0x0003, 0x0000, 0x0582, - 0x0587, 0x0003, 0x003a, 0x1174, 0x1194, 0x11ab, 0x0002, 0x058a, - 0x058e, 0x0002, 0x003a, 0x11f4, 0x11f4, 0x0002, 0x003a, 0x1244, - 0x1244, 0x0001, 0x0594, 0x0001, 0x003a, 0x1271, 0x0003, 0x059b, - 0x059e, 0x05a2, 0x0001, 0x003a, 0x12a3, 0x0002, 0x003a, 0xffff, - 0x12b0, 0x0002, 0x05a5, 0x05a9, 0x0002, 0x003a, 0x12e1, 0x12c1, - // Entry 28640 - 2867F - 0x0002, 0x003a, 0x1325, 0x1304, 0x0003, 0x05b1, 0x0000, 0x05b4, - 0x0001, 0x003a, 0x12a3, 0x0002, 0x05b7, 0x05bb, 0x0002, 0x003a, - 0x12e1, 0x12c1, 0x0002, 0x003a, 0x1325, 0x1304, 0x0003, 0x05c3, - 0x0000, 0x05c6, 0x0001, 0x003a, 0x12a3, 0x0002, 0x05c9, 0x05cd, - 0x0002, 0x003a, 0x12e1, 0x12c1, 0x0002, 0x003a, 0x1325, 0x1304, - 0x0003, 0x05d5, 0x05d8, 0x05dc, 0x0001, 0x003a, 0x134c, 0x0002, - 0x003a, 0xffff, 0x135c, 0x0002, 0x05df, 0x05e3, 0x0002, 0x003a, - 0x1393, 0x1370, 0x0002, 0x003a, 0x13b9, 0x13b9, 0x0003, 0x05eb, - // Entry 28680 - 286BF - 0x0000, 0x05ee, 0x0001, 0x003a, 0x134c, 0x0002, 0x05f1, 0x05f5, - 0x0002, 0x003a, 0x1393, 0x1370, 0x0002, 0x003a, 0x13b9, 0x13e3, - 0x0003, 0x05fd, 0x0000, 0x0600, 0x0001, 0x003a, 0x134c, 0x0002, - 0x0603, 0x0607, 0x0002, 0x003a, 0x1393, 0x1370, 0x0002, 0x003a, - 0x13b9, 0x13e3, 0x0003, 0x060f, 0x0612, 0x0616, 0x0001, 0x003a, - 0x140a, 0x0002, 0x003a, 0xffff, 0x1420, 0x0002, 0x0619, 0x061d, - 0x0002, 0x003a, 0x1453, 0x1427, 0x0002, 0x003a, 0x14ac, 0x1482, - 0x0003, 0x0625, 0x0000, 0x0628, 0x0001, 0x003a, 0x140a, 0x0002, - // Entry 286C0 - 286FF - 0x062b, 0x062f, 0x0002, 0x003a, 0x1453, 0x1427, 0x0002, 0x003a, - 0x14ac, 0x1482, 0x0003, 0x0637, 0x0000, 0x063a, 0x0001, 0x003a, - 0x140a, 0x0002, 0x063d, 0x0641, 0x0002, 0x003a, 0x1453, 0x1427, - 0x0002, 0x003a, 0x14ac, 0x1482, 0x0001, 0x0647, 0x0001, 0x003a, - 0x14dc, 0x0004, 0x064f, 0x0654, 0x0659, 0x0664, 0x0003, 0x0000, - 0x1dc7, 0x29cf, 0x29d6, 0x0003, 0x003a, 0x14f0, 0x14fe, 0x1519, - 0x0002, 0x0000, 0x065c, 0x0002, 0x0000, 0x065f, 0x0003, 0x003a, - 0xffff, 0x1540, 0x1576, 0x0002, 0x084b, 0x0667, 0x0003, 0x066b, - // Entry 28700 - 2873F - 0x07ab, 0x070b, 0x009e, 0x003a, 0xffff, 0xffff, 0xffff, 0xffff, - 0x16ef, 0x17b4, 0x18c6, 0x1952, 0x1a47, 0x1b36, 0x1c1c, 0x1d1d, - 0x1da3, 0x1f1d, 0x1fac, 0x2053, 0x2133, 0x21c8, 0x2269, 0x2352, - 0x2477, 0x2557, 0x2640, 0x26e7, 0x276a, 0xffff, 0xffff, 0x2851, - 0xffff, 0x2934, 0xffff, 0x2a08, 0x2a7c, 0x2aed, 0x2b58, 0xffff, - 0xffff, 0x2c80, 0x2d15, 0x2de4, 0xffff, 0xffff, 0xffff, 0x2ee5, - 0xffff, 0x2fbe, 0x3083, 0xffff, 0x31a0, 0x3277, 0x3384, 0xffff, - 0xffff, 0xffff, 0xffff, 0x34d9, 0xffff, 0xffff, 0x35f2, 0x36ed, - // Entry 28740 - 2877F - 0xffff, 0xffff, 0x3874, 0x3945, 0x39ef, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3b9a, 0x3c0e, 0x3cbe, 0x3d44, 0x3db8, - 0xffff, 0xffff, 0x3f82, 0xffff, 0x4022, 0xffff, 0xffff, 0x417b, - 0xffff, 0x42e1, 0xffff, 0xffff, 0xffff, 0xffff, 0x440f, 0xffff, - 0x44be, 0x4586, 0x4669, 0x471c, 0xffff, 0xffff, 0xffff, 0x47f9, - 0x48d3, 0x498f, 0xffff, 0xffff, 0x4ab9, 0x4bfa, 0x4cce, 0x4d5a, - 0xffff, 0xffff, 0x4e4f, 0x4edb, 0x4f4c, 0xffff, 0x501a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x52a4, 0x535d, 0x53c5, 0xffff, - // Entry 28780 - 287BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5567, 0xffff, - 0xffff, 0x561e, 0xffff, 0x56af, 0xffff, 0x57b2, 0x583e, 0x5900, - 0xffff, 0x59a3, 0x5a6e, 0xffff, 0xffff, 0xffff, 0x5bbd, 0x5c5b, - 0xffff, 0xffff, 0x15a9, 0x183a, 0x1e17, 0x1e91, 0xffff, 0xffff, - 0x4225, 0x51ba, 0x009e, 0x003a, 0x161a, 0x1646, 0x1673, 0x16a3, - 0x1722, 0x17d4, 0x18e6, 0x1995, 0x1a8a, 0x1b76, 0x1c65, 0x1d3d, - 0x1dbd, 0x1f40, 0x1fd5, 0x208f, 0x2156, 0x21f1, 0x22a8, 0x23a7, - 0x24b3, 0x2596, 0x2669, 0x2704, 0x2793, 0x2811, 0x282e, 0x287d, - // Entry 287C0 - 287FF - 0x28fb, 0x295b, 0x29d5, 0x2a22, 0x2a93, 0x2b04, 0x2b87, 0x2c17, - 0x2c4d, 0x2ca3, 0x2d42, 0x2e01, 0x2e61, 0x2e7e, 0x2eb8, 0x2f12, - 0x2f98, 0x2ff1, 0x30b9, 0x3151, 0x31d9, 0x32c2, 0x339b, 0x33f5, - 0x3425, 0x3487, 0x34b0, 0x34fc, 0x356e, 0x35aa, 0x3637, 0x3735, - 0x3827, 0x385a, 0x38ad, 0x396f, 0x3a09, 0x3a69, 0x3a9f, 0x3acf, - 0x3af2, 0x3b28, 0x3b61, 0x3bb4, 0x3c3a, 0x3cde, 0x3d5e, 0x3e1b, - 0x3f0d, 0x3f46, 0x3fa2, 0x4008, 0x4060, 0x4108, 0x414e, 0x41a5, - 0x429f, 0x42fe, 0x4364, 0x4384, 0x43ad, 0x43d9, 0x442f, 0x449b, - // Entry 28800 - 2883F - 0x44f4, 0x45c5, 0x4696, 0x4739, 0x479f, 0x47c8, 0x47df, 0x4832, - 0x4905, 0x49cd, 0x4a6f, 0x4a86, 0x4aff, 0x4c32, 0x4cee, 0x4d80, - 0x4df8, 0x4e15, 0x4e6f, 0x4ef2, 0x4f6f, 0x4fe1, 0x5070, 0x5142, - 0x516e, 0x518b, 0x5261, 0x5287, 0x52d3, 0x5371, 0x53df, 0x543f, - 0x5462, 0x54a1, 0x54d4, 0x550a, 0x552d, 0x554a, 0x557e, 0x55d2, - 0x55fb, 0x5638, 0x5698, 0x56ed, 0x5795, 0x57d2, 0x5870, 0x591a, - 0x597a, 0x59d8, 0x5a9d, 0x5b27, 0x5b4a, 0x5b71, 0x5be3, 0x5c90, - 0x37f1, 0x4bb4, 0x15c0, 0x185a, 0x1e31, 0x1eb1, 0xffff, 0x4137, - // Entry 28840 - 2887F - 0x423f, 0x51e3, 0x009e, 0x003a, 0xffff, 0xffff, 0xffff, 0xffff, - 0x176e, 0x180a, 0x191f, 0x19f1, 0x1ae6, 0x1bcf, 0x1cc7, 0x1d76, - 0x1df0, 0x1f7c, 0x2017, 0x20e4, 0x2192, 0x2233, 0x2303, 0x2415, - 0x250b, 0x25f1, 0x26ab, 0x273a, 0x27d5, 0xffff, 0xffff, 0x28bf, - 0xffff, 0x299b, 0xffff, 0x2a55, 0x2ac3, 0x2b34, 0x2bd5, 0xffff, - 0xffff, 0x2cdf, 0x2d88, 0x2e37, 0xffff, 0xffff, 0xffff, 0x2f58, - 0xffff, 0x303d, 0x3108, 0xffff, 0x322b, 0x3326, 0x33cb, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3538, 0xffff, 0xffff, 0x3695, 0x3796, - // Entry 28880 - 288BF - 0xffff, 0xffff, 0x38ff, 0x39b2, 0x3a3c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3be7, 0x3c7f, 0x3d17, 0x3d91, 0x3e97, - 0xffff, 0xffff, 0x3fdb, 0xffff, 0x40b7, 0xffff, 0xffff, 0x41e8, - 0xffff, 0x4334, 0xffff, 0xffff, 0xffff, 0xffff, 0x4468, 0xffff, - 0x4543, 0x461d, 0x46dc, 0x476f, 0xffff, 0xffff, 0xffff, 0x4884, - 0x4950, 0x4a24, 0xffff, 0xffff, 0x4b5e, 0x4c83, 0x4d27, 0x4dbf, - 0xffff, 0xffff, 0x4ea8, 0x4f22, 0x4fab, 0xffff, 0x50df, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x531b, 0x539e, 0x5412, 0xffff, - // Entry 288C0 - 288FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x55ae, 0xffff, - 0xffff, 0x566b, 0xffff, 0x5744, 0xffff, 0x580b, 0x58bb, 0x594d, - 0xffff, 0x5a26, 0x5ae5, 0xffff, 0xffff, 0xffff, 0x5c22, 0x5cde, - 0xffff, 0xffff, 0x15f0, 0x1893, 0x1e64, 0x1eea, 0xffff, 0xffff, - 0x4272, 0x5225, 0x0003, 0x0000, 0x0000, 0x084f, 0x0042, 0x000b, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 28900 - 2893F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0000, 0x0003, 0x0004, 0x0709, 0x0a8b, 0x0012, 0x0017, - 0x0024, 0x00f2, 0x013f, 0x0284, 0x0000, 0x02d1, 0x02fc, 0x052c, - 0x0000, 0x0584, 0x0000, 0x0000, 0x0000, 0x0000, 0x05ba, 0x06b2, - // Entry 28940 - 2897F - 0x06fb, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, - 0x001f, 0x0001, 0x0021, 0x0001, 0x003b, 0x0000, 0x000a, 0x002f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x00e1, 0x0000, 0x0000, 0x0066, - 0x0079, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, - 0x000d, 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, - 0x0020, 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, - 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, - 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x0002, 0x0000, - // Entry 28980 - 289BF - 0x0057, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, - 0x0003, 0x006a, 0x0075, 0x006f, 0x0003, 0x003b, 0xffff, 0xffff, - 0x0046, 0x0004, 0x003b, 0xffff, 0xffff, 0xffff, 0x0046, 0x0002, - 0x003b, 0xffff, 0x0046, 0x0005, 0x0000, 0x0000, 0x0000, 0x007f, - 0x009e, 0x0001, 0x0081, 0x0001, 0x0083, 0x0019, 0x003b, 0xffff, - 0x004d, 0x0054, 0x005b, 0x0062, 0x0069, 0x0070, 0x0077, 0x007e, - 0x0085, 0x008c, 0x0093, 0x009a, 0x00a1, 0x00a8, 0x00af, 0x00b6, - // Entry 289C0 - 289FF - 0x00bd, 0x00c4, 0x00cb, 0x00d2, 0x00d9, 0x00e0, 0x00e7, 0x00ee, - 0x0001, 0x00a0, 0x0001, 0x00a2, 0x003d, 0x003b, 0xffff, 0x00f5, - 0x00fc, 0x0103, 0x010a, 0x0111, 0x0118, 0x011f, 0x0126, 0x012d, - 0x0134, 0x013b, 0x0142, 0x0149, 0x0150, 0x0157, 0x015e, 0x0165, - 0x016c, 0x0173, 0x017a, 0x0181, 0x0188, 0x018f, 0x0196, 0x019d, - 0x01a4, 0x01ab, 0x01b2, 0x01b9, 0x01c0, 0x01c7, 0x01ce, 0x01d5, - 0x01dc, 0x01e3, 0x01ea, 0x01f1, 0x01f8, 0x01ff, 0x0206, 0x020d, - 0x0214, 0x021b, 0x0222, 0x0229, 0x0230, 0x0237, 0x023e, 0x0245, - // Entry 28A00 - 28A3F - 0x024c, 0x0253, 0x025a, 0x0261, 0x0268, 0x026f, 0x0276, 0x027d, - 0x0284, 0x028b, 0x0292, 0x0004, 0x00ef, 0x00e9, 0x00e6, 0x00ec, - 0x0001, 0x003b, 0x0299, 0x0001, 0x003b, 0x02ac, 0x0001, 0x003b, - 0x02ba, 0x0001, 0x003b, 0x02ba, 0x0001, 0x00f4, 0x0002, 0x00f7, - 0x011b, 0x0003, 0x00fb, 0x0000, 0x010b, 0x000e, 0x003b, 0xffff, - 0x02c3, 0x02ca, 0x02d4, 0x02de, 0x02eb, 0x02f5, 0x02ff, 0x030c, - 0x031c, 0x0326, 0x0333, 0x033d, 0x0347, 0x000e, 0x003b, 0xffff, - 0x02c3, 0x02ca, 0x02d4, 0x02de, 0x02eb, 0x02f5, 0x02ff, 0x030c, - // Entry 28A40 - 28A7F - 0x031c, 0x0326, 0x0333, 0x033d, 0x0347, 0x0003, 0x011f, 0x0000, - 0x012f, 0x000e, 0x003b, 0xffff, 0x02c3, 0x02ca, 0x02d4, 0x02de, - 0x02eb, 0x02f5, 0x02ff, 0x030c, 0x031c, 0x0326, 0x0333, 0x033d, - 0x0347, 0x000e, 0x003b, 0xffff, 0x02c3, 0x02ca, 0x02d4, 0x02de, - 0x02eb, 0x02f5, 0x02ff, 0x030c, 0x031c, 0x0326, 0x0333, 0x033d, - 0x0347, 0x000a, 0x014a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0273, - 0x0000, 0x0000, 0x01af, 0x01c2, 0x0002, 0x014d, 0x017e, 0x0003, - 0x0151, 0x0160, 0x016f, 0x000d, 0x003b, 0xffff, 0x0007, 0x000c, - // Entry 28A80 - 28ABF - 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, 0x0034, - 0x003a, 0x0040, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, - 0x2398, 0x000d, 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, - 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, - 0x0003, 0x0182, 0x0191, 0x01a0, 0x000d, 0x003b, 0xffff, 0x0007, - 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, - 0x0034, 0x003a, 0x0040, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - // Entry 28AC0 - 28AFF - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x29da, 0x2398, 0x000d, 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, - 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, - 0x0040, 0x0003, 0x01b3, 0x01be, 0x01b8, 0x0003, 0x003b, 0xffff, - 0xffff, 0x0046, 0x0004, 0x003b, 0xffff, 0xffff, 0xffff, 0x0046, - 0x0002, 0x003b, 0xffff, 0x0046, 0x0006, 0x01c9, 0x0000, 0x0000, - 0x01ed, 0x020c, 0x024f, 0x0001, 0x01cb, 0x0003, 0x01cf, 0x0000, - 0x01de, 0x000d, 0x003b, 0xffff, 0x034e, 0x0352, 0x0356, 0x035a, - // Entry 28B00 - 28B3F - 0x035e, 0x0362, 0x0366, 0x036a, 0x036e, 0x0372, 0x0376, 0x037a, - 0x000d, 0x003b, 0xffff, 0x034e, 0x0352, 0x0356, 0x035a, 0x035e, - 0x0362, 0x0366, 0x036a, 0x036e, 0x0372, 0x0376, 0x037a, 0x0001, - 0x01ef, 0x0001, 0x01f1, 0x0019, 0x003b, 0xffff, 0x004d, 0x0054, - 0x005b, 0x0062, 0x0069, 0x0070, 0x0077, 0x007e, 0x0085, 0x008c, - 0x0093, 0x009a, 0x00a1, 0x00a8, 0x00af, 0x00b6, 0x00bd, 0x00c4, - 0x00cb, 0x00d2, 0x00d9, 0x00e0, 0x00e7, 0x00ee, 0x0001, 0x020e, - 0x0001, 0x0210, 0x003d, 0x003b, 0xffff, 0x00f5, 0x00fc, 0x0103, - // Entry 28B40 - 28B7F - 0x010a, 0x0111, 0x0118, 0x011f, 0x0126, 0x012d, 0x0134, 0x013b, - 0x0142, 0x0149, 0x0150, 0x0157, 0x015e, 0x0165, 0x016c, 0x0173, - 0x017a, 0x0181, 0x0188, 0x018f, 0x0196, 0x019d, 0x01a4, 0x01ab, - 0x01b2, 0x01b9, 0x01c0, 0x01c7, 0x01ce, 0x01d5, 0x01dc, 0x01e3, - 0x01ea, 0x01f1, 0x01f8, 0x01ff, 0x0206, 0x020d, 0x0214, 0x021b, - 0x0222, 0x0229, 0x0230, 0x0237, 0x023e, 0x0245, 0x024c, 0x0253, - 0x025a, 0x0261, 0x0268, 0x026f, 0x0276, 0x027d, 0x0284, 0x028b, - 0x0292, 0x0001, 0x0251, 0x0003, 0x0255, 0x0000, 0x0264, 0x000d, - // Entry 28B80 - 28BBF - 0x003b, 0xffff, 0x034e, 0x0352, 0x0356, 0x035a, 0x035e, 0x0362, - 0x0366, 0x036a, 0x036e, 0x0372, 0x0376, 0x037a, 0x000d, 0x003b, - 0xffff, 0x034e, 0x0352, 0x0356, 0x035a, 0x035e, 0x0362, 0x0366, - 0x036a, 0x036e, 0x0372, 0x0376, 0x037a, 0x0004, 0x0281, 0x027b, - 0x0278, 0x027e, 0x0001, 0x003b, 0x0299, 0x0001, 0x003b, 0x02ac, - 0x0001, 0x003b, 0x02ba, 0x0001, 0x003b, 0x02ba, 0x0001, 0x0286, - 0x0002, 0x0289, 0x02ad, 0x0003, 0x028d, 0x0000, 0x029d, 0x000e, - 0x003b, 0xffff, 0x037e, 0x038b, 0x0395, 0x039f, 0x03ac, 0x03b3, - // Entry 28BC0 - 28BFF - 0x03c0, 0x03cd, 0x03da, 0x03e4, 0x03eb, 0x03f2, 0x03fc, 0x000e, - 0x003b, 0xffff, 0x037e, 0x038b, 0x0395, 0x039f, 0x03ac, 0x03b3, - 0x03c0, 0x03cd, 0x03da, 0x03e4, 0x03eb, 0x03f2, 0x03fc, 0x0003, - 0x02b1, 0x0000, 0x02c1, 0x000e, 0x003b, 0xffff, 0x037e, 0x038b, - 0x0395, 0x039f, 0x03ac, 0x03b3, 0x03c0, 0x03cd, 0x03da, 0x03e4, - 0x03eb, 0x03f2, 0x03fc, 0x000e, 0x003b, 0xffff, 0x037e, 0x038b, - 0x0395, 0x039f, 0x03ac, 0x03b3, 0x03c0, 0x03cd, 0x03da, 0x03e4, - 0x03eb, 0x03f2, 0x03fc, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 28C00 - 28C3F - 0x0000, 0x02da, 0x0000, 0x02eb, 0x0004, 0x02e8, 0x02e2, 0x02df, - 0x02e5, 0x0001, 0x003b, 0x0406, 0x0001, 0x003b, 0x041c, 0x0001, - 0x003b, 0x042d, 0x0001, 0x003b, 0x042d, 0x0004, 0x02f9, 0x02f3, - 0x02f0, 0x02f6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0305, - 0x036a, 0x03c1, 0x03f6, 0x04df, 0x04f9, 0x050a, 0x051b, 0x0002, - 0x0308, 0x0339, 0x0003, 0x030c, 0x031b, 0x032a, 0x000d, 0x003b, - 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, - // Entry 28C40 - 28C7F - 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, 0x003b, 0xffff, - 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, - 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, 0x003b, 0xffff, 0x0007, - 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, 0x002f, - 0x0034, 0x003a, 0x0040, 0x0003, 0x033d, 0x034c, 0x035b, 0x000d, - 0x003b, 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, - 0x0025, 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, 0x003b, - 0xffff, 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, - // Entry 28C80 - 28CBF - 0x002a, 0x002f, 0x0034, 0x003a, 0x0040, 0x000d, 0x003b, 0xffff, - 0x0007, 0x000c, 0x0011, 0x0016, 0x001b, 0x0020, 0x0025, 0x002a, - 0x002f, 0x0034, 0x003a, 0x0040, 0x0002, 0x036d, 0x0397, 0x0005, - 0x0373, 0x037c, 0x038e, 0x0000, 0x0385, 0x0007, 0x003b, 0x0438, - 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, 0x0007, 0x003b, - 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, 0x0007, - 0x003b, 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, - 0x0007, 0x003b, 0x0454, 0x045e, 0x0468, 0x0472, 0x047c, 0x0486, - // Entry 28CC0 - 28CFF - 0x0490, 0x0005, 0x039d, 0x03a6, 0x03b8, 0x0000, 0x03af, 0x0007, - 0x003b, 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, - 0x0007, 0x003b, 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, 0x044c, - 0x0450, 0x0007, 0x003b, 0x0438, 0x043c, 0x0440, 0x0444, 0x0448, - 0x044c, 0x0450, 0x0007, 0x003b, 0x0454, 0x045e, 0x0468, 0x0472, - 0x047c, 0x0486, 0x0490, 0x0002, 0x03c4, 0x03dd, 0x0003, 0x03c8, - 0x03cf, 0x03d6, 0x0005, 0x003b, 0xffff, 0x049a, 0x04a2, 0x04aa, - 0x04b2, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - // Entry 28D00 - 28D3F - 0x0005, 0x003b, 0xffff, 0x04ba, 0x04c8, 0x04d6, 0x04e4, 0x0003, - 0x03e1, 0x03e8, 0x03ef, 0x0005, 0x003b, 0xffff, 0x049a, 0x04a2, - 0x04aa, 0x04b2, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x003b, 0xffff, 0x04ba, 0x04c8, 0x04d6, 0x04e4, - 0x0002, 0x03f9, 0x046c, 0x0003, 0x03fd, 0x0422, 0x0447, 0x0009, - 0x040a, 0x0410, 0x0407, 0x0413, 0x0419, 0x041c, 0x041f, 0x040d, - 0x0416, 0x0001, 0x003b, 0x04f2, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x003b, 0x04f9, 0x0001, 0x0000, 0x04f2, 0x0001, 0x003b, 0x0500, - // Entry 28D40 - 28D7F - 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, 0x050e, 0x0001, 0x003b, - 0x0515, 0x0001, 0x003b, 0x051c, 0x0009, 0x042f, 0x0435, 0x042c, - 0x0438, 0x043e, 0x0441, 0x0444, 0x0432, 0x043b, 0x0001, 0x003b, - 0x04f2, 0x0001, 0x0000, 0x04ef, 0x0001, 0x003b, 0x04f9, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x003b, 0x0500, 0x0001, 0x003b, 0x0507, - 0x0001, 0x003b, 0x050e, 0x0001, 0x003b, 0x0515, 0x0001, 0x003b, - 0x051c, 0x0009, 0x0454, 0x045a, 0x0451, 0x045d, 0x0463, 0x0466, - 0x0469, 0x0457, 0x0460, 0x0001, 0x003b, 0x04f2, 0x0001, 0x003b, - // Entry 28D80 - 28DBF - 0x0507, 0x0001, 0x003b, 0x04f9, 0x0001, 0x003b, 0x050e, 0x0001, - 0x003b, 0x0500, 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, 0x050e, - 0x0001, 0x003b, 0x0515, 0x0001, 0x003b, 0x051c, 0x0003, 0x0470, - 0x0495, 0x04ba, 0x0009, 0x047d, 0x0483, 0x047a, 0x0486, 0x048c, - 0x048f, 0x0492, 0x0480, 0x0489, 0x0001, 0x003b, 0x04f2, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x003b, 0x04f9, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x003b, 0x0500, 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, - 0x050e, 0x0001, 0x003b, 0x0515, 0x0001, 0x003b, 0x051c, 0x0009, - // Entry 28DC0 - 28DFF - 0x04a2, 0x04a8, 0x049f, 0x04ab, 0x04b1, 0x04b4, 0x04b7, 0x04a5, - 0x04ae, 0x0001, 0x003b, 0x04f2, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x003b, 0x04f9, 0x0001, 0x0000, 0x04f2, 0x0001, 0x003b, 0x0500, - 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, 0x050e, 0x0001, 0x003b, - 0x0515, 0x0001, 0x003b, 0x051c, 0x0009, 0x04c7, 0x04cd, 0x04c4, - 0x04d0, 0x04d6, 0x04d9, 0x04dc, 0x04ca, 0x04d3, 0x0001, 0x003b, - 0x04f2, 0x0001, 0x003b, 0x0507, 0x0001, 0x003b, 0x04f9, 0x0001, - 0x003b, 0x050e, 0x0001, 0x003b, 0x0500, 0x0001, 0x003b, 0x0507, - // Entry 28E00 - 28E3F - 0x0001, 0x003b, 0x050e, 0x0001, 0x003b, 0x0515, 0x0001, 0x003b, - 0x051c, 0x0003, 0x04ee, 0x0000, 0x04e3, 0x0002, 0x04e6, 0x04ea, - 0x0002, 0x003b, 0x0520, 0x052a, 0x0002, 0x0000, 0x04f5, 0x04f9, - 0x0002, 0x04f1, 0x04f5, 0x0002, 0x0009, 0x0078, 0x5433, 0x0002, - 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0507, 0x0501, 0x04fe, 0x0504, - 0x0001, 0x003b, 0x0531, 0x0001, 0x003b, 0x0545, 0x0001, 0x003b, - 0x02ba, 0x0001, 0x003b, 0x0554, 0x0004, 0x0518, 0x0512, 0x050f, - 0x0515, 0x0001, 0x003b, 0x055e, 0x0001, 0x003b, 0x0574, 0x0001, - // Entry 28E40 - 28E7F - 0x003b, 0x0587, 0x0001, 0x003b, 0x0591, 0x0004, 0x0529, 0x0523, - 0x0520, 0x0526, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0532, - 0x0000, 0x0000, 0x0000, 0x057d, 0x0002, 0x0535, 0x0559, 0x0003, - 0x0539, 0x0000, 0x0549, 0x000e, 0x003b, 0x05e9, 0x0598, 0x05a5, - 0x05b2, 0x05bf, 0x05c9, 0x05d3, 0x05df, 0x05f5, 0x05ff, 0x060c, - 0x0616, 0x0623, 0x062a, 0x000e, 0x003b, 0x05e9, 0x0598, 0x05a5, - 0x05b2, 0x05bf, 0x05c9, 0x05d3, 0x05df, 0x05f5, 0x05ff, 0x060c, - // Entry 28E80 - 28EBF - 0x0616, 0x0623, 0x062a, 0x0003, 0x055d, 0x0000, 0x056d, 0x000e, - 0x003b, 0x05e9, 0x0598, 0x05a5, 0x05b2, 0x05bf, 0x05c9, 0x05d3, - 0x05df, 0x05f5, 0x05ff, 0x060c, 0x0616, 0x0623, 0x062a, 0x000e, - 0x003b, 0x05e9, 0x0598, 0x05a5, 0x05b2, 0x05bf, 0x05c9, 0x05d3, - 0x05df, 0x05f5, 0x05ff, 0x060c, 0x0616, 0x0623, 0x062a, 0x0001, - 0x057f, 0x0001, 0x0581, 0x0001, 0x0000, 0x04ef, 0x0005, 0x058a, - 0x0000, 0x0000, 0x0000, 0x05b3, 0x0002, 0x058d, 0x05a0, 0x0003, - 0x0000, 0x0000, 0x0591, 0x000d, 0x003b, 0xffff, 0x0634, 0x063e, - // Entry 28EC0 - 28EFF - 0x0648, 0x065a, 0x066c, 0x0681, 0x0696, 0x069d, 0x06a7, 0x06b1, - 0x06b8, 0x06c7, 0x0003, 0x0000, 0x0000, 0x05a4, 0x000d, 0x003b, - 0xffff, 0x0634, 0x063e, 0x0648, 0x065a, 0x066c, 0x0681, 0x0696, - 0x069d, 0x06a7, 0x06b1, 0x06b8, 0x06c7, 0x0001, 0x05b5, 0x0001, - 0x05b7, 0x0001, 0x0000, 0x06c8, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x05c0, 0x0001, 0x05c2, 0x0001, 0x05c4, 0x00ec, 0x003b, - 0x06d6, 0x06ec, 0x0702, 0x0718, 0x072b, 0x0741, 0x0757, 0x076a, - 0x0780, 0x0793, 0x07a6, 0x07b9, 0x07d2, 0x07eb, 0x0804, 0x081d, - // Entry 28F00 - 28F3F - 0x0839, 0x084c, 0x085f, 0x0875, 0x088b, 0x089e, 0x08b1, 0x08c4, - 0x08d7, 0x08ea, 0x0900, 0x0913, 0x0926, 0x0939, 0x094c, 0x095f, - 0x0975, 0x0988, 0x099b, 0x09b1, 0x09c4, 0x09da, 0x09f0, 0x0a03, - 0x0a16, 0x0a29, 0x0a3f, 0x0a52, 0x0a65, 0x0a78, 0x0a8e, 0x0aa1, - 0x0ab7, 0x0acd, 0x0ae3, 0x0af9, 0x0b0d, 0x0b22, 0x0b37, 0x0b4c, - 0x0b61, 0x0b76, 0x0b8b, 0x0ba3, 0x0bb8, 0x0bd0, 0x0be8, 0x0bfd, - 0x0c15, 0x0c2d, 0x0c42, 0x0c57, 0x0c6f, 0x0c87, 0x0c9f, 0x0cb4, - 0x0cc9, 0x0ce1, 0x0cf9, 0x0d0e, 0x0d23, 0x0d38, 0x0d4d, 0x0d65, - // Entry 28F40 - 28F7F - 0x0d7d, 0x0d95, 0x0daa, 0x0dbf, 0x0dd7, 0x0dec, 0x0e01, 0x0e16, - 0x0e2e, 0x0e43, 0x0e58, 0x0e6d, 0x0e85, 0x0e9a, 0x0eaf, 0x0ec7, - 0x0ee2, 0x0ef7, 0x0f0c, 0x0f24, 0x0f39, 0x0f4e, 0x0f63, 0x0f78, - 0x0f8d, 0x0fa2, 0x0fba, 0x0fd2, 0x0fe7, 0x0ffc, 0x1011, 0x1026, - 0x103b, 0x1053, 0x1068, 0x1080, 0x1095, 0x10aa, 0x10bf, 0x10d4, - 0x10ec, 0x1104, 0x1119, 0x1131, 0x1149, 0x1161, 0x1179, 0x1191, - 0x11a6, 0x11bb, 0x11d0, 0x11e5, 0x11fa, 0x120f, 0x1224, 0x1239, - 0x124e, 0x1263, 0x127b, 0x1290, 0x12a5, 0x12ba, 0x12d2, 0x12e7, - // Entry 28F80 - 28FBF - 0x12fc, 0x1311, 0x1329, 0x133e, 0x1353, 0x1368, 0x137d, 0x1392, - 0x13a7, 0x13bc, 0x13d4, 0x13ec, 0x1401, 0x1416, 0x142b, 0x1443, - 0x145b, 0x1473, 0x1488, 0x149d, 0x14b5, 0x14ca, 0x14df, 0x14fa, - 0x150f, 0x1524, 0x153f, 0x1557, 0x156c, 0x1584, 0x159c, 0x15b1, - 0x15c9, 0x15e1, 0x15f6, 0x160e, 0x1623, 0x1638, 0x164d, 0x1665, - 0x167b, 0x1693, 0x16ab, 0x16c0, 0x16d8, 0x16f3, 0x170b, 0x1720, - 0x1735, 0x1750, 0x1765, 0x177a, 0x1792, 0x17aa, 0x17bf, 0x17d7, - 0x17ec, 0x1804, 0x1819, 0x1834, 0x1849, 0x185e, 0x1873, 0x1888, - // Entry 28FC0 - 28FFF - 0x189d, 0x18b5, 0x18cd, 0x18e5, 0x18fa, 0x190f, 0x1924, 0x1939, - 0x194e, 0x1966, 0x197e, 0x1996, 0x19ae, 0x19c6, 0x19db, 0x19f0, - 0x1a08, 0x1a1d, 0x1a32, 0x1a4a, 0x1a62, 0x1a77, 0x1a8c, 0x1aa1, - 0x1ab9, 0x1ac3, 0x1acd, 0x1ad4, 0x0001, 0x06b4, 0x0002, 0x06b7, - 0x06d9, 0x0003, 0x06bb, 0x0000, 0x06ca, 0x000d, 0x003b, 0xffff, - 0x1ae1, 0x1aee, 0x1b04, 0x1b11, 0x1b18, 0x1b25, 0x1b35, 0x1b3f, - 0x1b46, 0x1b50, 0x1b57, 0x1b61, 0x000d, 0x003b, 0xffff, 0x1ae1, - 0x1aee, 0x1b04, 0x1b11, 0x1b18, 0x1b25, 0x1b35, 0x1b3f, 0x1b46, - // Entry 29000 - 2903F - 0x1b50, 0x1b57, 0x1b61, 0x0003, 0x06dd, 0x0000, 0x06ec, 0x000d, - 0x003b, 0xffff, 0x1ae1, 0x1aee, 0x1b04, 0x1b11, 0x1b18, 0x1b25, - 0x1b35, 0x1b3f, 0x1b46, 0x1b50, 0x1b57, 0x1b61, 0x000d, 0x003b, - 0xffff, 0x1ae1, 0x1aee, 0x1b04, 0x1b11, 0x1b18, 0x1b25, 0x1b35, - 0x1b3f, 0x1b46, 0x1b50, 0x1b57, 0x1b61, 0x0005, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0701, 0x0001, 0x0703, 0x0001, 0x0705, 0x0002, - 0x003b, 0x1b6e, 0x1b7e, 0x0040, 0x074a, 0x0000, 0x0000, 0x074f, - 0x0764, 0x0774, 0x0784, 0x0799, 0x07a9, 0x07b9, 0x07ce, 0x07de, - // Entry 29040 - 2907F - 0x07ee, 0x0807, 0x081b, 0x0000, 0x0000, 0x0000, 0x082f, 0x0846, - 0x0856, 0x0000, 0x0000, 0x0000, 0x0866, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x086b, 0x087d, 0x088f, 0x08a1, 0x08b3, 0x08c5, - 0x08d7, 0x08e9, 0x08fb, 0x090d, 0x091f, 0x0931, 0x0943, 0x0955, - 0x0967, 0x0979, 0x098b, 0x099d, 0x09af, 0x09c1, 0x09d3, 0x0000, - 0x09e5, 0x0000, 0x09ea, 0x09fe, 0x0a0e, 0x0a1e, 0x0a32, 0x0a42, - 0x0a52, 0x0a66, 0x0a76, 0x0a86, 0x0001, 0x074c, 0x0001, 0x003b, - 0x1b8b, 0x0003, 0x0753, 0x0756, 0x075b, 0x0001, 0x003b, 0x1b92, - // Entry 29080 - 290BF - 0x0003, 0x003b, 0x1b96, 0x1b9d, 0x1ba4, 0x0002, 0x075e, 0x0761, - 0x0001, 0x003b, 0x1bab, 0x0001, 0x003b, 0x1bb6, 0x0003, 0x0768, - 0x0000, 0x076b, 0x0001, 0x003b, 0x1b92, 0x0002, 0x076e, 0x0771, - 0x0001, 0x003b, 0x1bab, 0x0001, 0x003b, 0x1bb6, 0x0003, 0x0778, - 0x0000, 0x077b, 0x0001, 0x003b, 0x1b92, 0x0002, 0x077e, 0x0781, - 0x0001, 0x003b, 0x1bab, 0x0001, 0x003b, 0x1bb6, 0x0003, 0x0788, - 0x078b, 0x0790, 0x0001, 0x003b, 0x1bc1, 0x0003, 0x003b, 0x1bc8, - 0x1bd6, 0x1be4, 0x0002, 0x0793, 0x0796, 0x0001, 0x003b, 0x1bf2, - // Entry 290C0 - 290FF - 0x0001, 0x003b, 0x1c00, 0x0003, 0x079d, 0x0000, 0x07a0, 0x0001, - 0x003b, 0x1bc1, 0x0002, 0x07a3, 0x07a6, 0x0001, 0x003b, 0x1bf2, - 0x0001, 0x003b, 0x1c00, 0x0003, 0x07ad, 0x0000, 0x07b0, 0x0001, - 0x003b, 0x1bc1, 0x0002, 0x07b3, 0x07b6, 0x0001, 0x003b, 0x1bf2, - 0x0001, 0x003b, 0x1c00, 0x0003, 0x07bd, 0x07c0, 0x07c5, 0x0001, - 0x003b, 0x043c, 0x0003, 0x003b, 0x1c0e, 0x1c18, 0x1c23, 0x0002, - 0x07c8, 0x07cb, 0x0001, 0x003b, 0x1c2e, 0x0001, 0x003b, 0x1c3c, - 0x0003, 0x07d2, 0x0000, 0x07d5, 0x0001, 0x003b, 0x043c, 0x0002, - // Entry 29100 - 2913F - 0x07d8, 0x07db, 0x0001, 0x003b, 0x1c2e, 0x0001, 0x003b, 0x1c3c, - 0x0003, 0x07e2, 0x0000, 0x07e5, 0x0001, 0x003b, 0x043c, 0x0002, - 0x07e8, 0x07eb, 0x0001, 0x003b, 0x1c2e, 0x0001, 0x003b, 0x1c3c, - 0x0004, 0x07f3, 0x07f6, 0x07fb, 0x0804, 0x0001, 0x003b, 0x1c4a, - 0x0003, 0x003b, 0x1c4e, 0x1c58, 0x1c63, 0x0002, 0x07fe, 0x0801, - 0x0001, 0x003b, 0x1c6e, 0x0001, 0x003b, 0x1c79, 0x0001, 0x003b, - 0x1c84, 0x0004, 0x080c, 0x0000, 0x080f, 0x0818, 0x0001, 0x003b, - 0x1c4a, 0x0002, 0x0812, 0x0815, 0x0001, 0x003b, 0x1c6e, 0x0001, - // Entry 29140 - 2917F - 0x003b, 0x1c79, 0x0001, 0x003b, 0x1c84, 0x0004, 0x0820, 0x0000, - 0x0823, 0x082c, 0x0001, 0x003b, 0x1c4a, 0x0002, 0x0826, 0x0829, - 0x0001, 0x003b, 0x1c6e, 0x0001, 0x003b, 0x1c79, 0x0001, 0x003b, - 0x1c84, 0x0003, 0x0833, 0x0836, 0x083d, 0x0001, 0x003b, 0x0438, - 0x0005, 0x003b, 0x1c9c, 0x1ca3, 0x1caa, 0x1c92, 0x1cb1, 0x0002, - 0x0840, 0x0843, 0x0001, 0x003b, 0x1cb8, 0x0001, 0x003b, 0x1cc3, - 0x0003, 0x084a, 0x0000, 0x084d, 0x0001, 0x003b, 0x0438, 0x0002, - 0x0850, 0x0853, 0x0001, 0x003b, 0x1cb8, 0x0001, 0x003b, 0x1cc3, - // Entry 29180 - 291BF - 0x0003, 0x085a, 0x0000, 0x085d, 0x0001, 0x003b, 0x0438, 0x0002, - 0x0860, 0x0863, 0x0001, 0x003b, 0x1cb8, 0x0001, 0x003b, 0x1cc3, - 0x0001, 0x0868, 0x0001, 0x003b, 0x1cce, 0x0003, 0x0000, 0x086f, - 0x0874, 0x0003, 0x003b, 0x1cd5, 0x1ce6, 0x1cf7, 0x0002, 0x0877, - 0x087a, 0x0001, 0x003b, 0x1d08, 0x0001, 0x003b, 0x1d1d, 0x0003, - 0x0000, 0x0881, 0x0886, 0x0003, 0x003b, 0x1cd5, 0x1ce6, 0x1cf7, - 0x0002, 0x0889, 0x088c, 0x0001, 0x003b, 0x1d08, 0x0001, 0x003b, - 0x1d1d, 0x0003, 0x0000, 0x0893, 0x0898, 0x0003, 0x003b, 0x1cd5, - // Entry 291C0 - 291FF - 0x1ce6, 0x1cf7, 0x0002, 0x089b, 0x089e, 0x0001, 0x003b, 0x1d08, - 0x0001, 0x003b, 0x1d1d, 0x0003, 0x0000, 0x08a5, 0x08aa, 0x0003, - 0x003b, 0x1d32, 0x1d43, 0x1d54, 0x0002, 0x08ad, 0x08b0, 0x0001, - 0x003b, 0x1d65, 0x0001, 0x003b, 0x1d7a, 0x0003, 0x0000, 0x08b7, - 0x08bc, 0x0003, 0x003b, 0x1d32, 0x1d43, 0x1d54, 0x0002, 0x08bf, - 0x08c2, 0x0001, 0x003b, 0x1d65, 0x0001, 0x003b, 0x1d7a, 0x0003, - 0x0000, 0x08c9, 0x08ce, 0x0003, 0x003b, 0x1d32, 0x1d43, 0x1d54, - 0x0002, 0x08d1, 0x08d4, 0x0001, 0x003b, 0x1d65, 0x0001, 0x003b, - // Entry 29200 - 2923F - 0x1d7a, 0x0003, 0x0000, 0x08db, 0x08e0, 0x0003, 0x003b, 0x1d8f, - 0x1da0, 0x1db1, 0x0002, 0x08e3, 0x08e6, 0x0001, 0x003b, 0x1dc2, - 0x0001, 0x003b, 0x1dd7, 0x0003, 0x0000, 0x08ed, 0x08f2, 0x0003, - 0x003b, 0x1d8f, 0x1da0, 0x1db1, 0x0002, 0x08f5, 0x08f8, 0x0001, - 0x003b, 0x1dc2, 0x0001, 0x003b, 0x1dd7, 0x0003, 0x0000, 0x08ff, - 0x0904, 0x0003, 0x003b, 0x1d8f, 0x1da0, 0x1db1, 0x0002, 0x0907, - 0x090a, 0x0001, 0x003b, 0x1dc2, 0x0001, 0x003b, 0x1dd7, 0x0003, - 0x0000, 0x0911, 0x0916, 0x0003, 0x003b, 0x1dec, 0x1dfd, 0x1e0e, - // Entry 29240 - 2927F - 0x0002, 0x0919, 0x091c, 0x0001, 0x003b, 0x1e1f, 0x0001, 0x003b, - 0x1e34, 0x0003, 0x0000, 0x0923, 0x0928, 0x0003, 0x003b, 0x1dec, - 0x1dfd, 0x1e0e, 0x0002, 0x092b, 0x092e, 0x0001, 0x003b, 0x1e1f, - 0x0001, 0x003b, 0x1e34, 0x0003, 0x0000, 0x0935, 0x093a, 0x0003, - 0x003b, 0x1dec, 0x1dfd, 0x1e0e, 0x0002, 0x093d, 0x0940, 0x0001, - 0x003b, 0x1e1f, 0x0001, 0x003b, 0x1e34, 0x0003, 0x0000, 0x0947, - 0x094c, 0x0003, 0x003b, 0x1e49, 0x1e5a, 0x1e6b, 0x0002, 0x094f, - 0x0952, 0x0001, 0x003b, 0x1e7c, 0x0001, 0x003b, 0x1e91, 0x0003, - // Entry 29280 - 292BF - 0x0000, 0x0959, 0x095e, 0x0003, 0x003b, 0x1e49, 0x1e5a, 0x1e6b, - 0x0002, 0x0961, 0x0964, 0x0001, 0x003b, 0x1e7c, 0x0001, 0x003b, - 0x1e91, 0x0003, 0x0000, 0x096b, 0x0970, 0x0003, 0x003b, 0x1e49, - 0x1e5a, 0x1e6b, 0x0002, 0x0973, 0x0976, 0x0001, 0x003b, 0x1e7c, - 0x0001, 0x003b, 0x1e91, 0x0003, 0x0000, 0x097d, 0x0982, 0x0003, - 0x003b, 0x1ea6, 0x1eb7, 0x1ec8, 0x0002, 0x0985, 0x0988, 0x0001, - 0x003b, 0x1ed9, 0x0001, 0x003b, 0x1eee, 0x0003, 0x0000, 0x098f, - 0x0994, 0x0003, 0x003b, 0x1ea6, 0x1eb7, 0x1ec8, 0x0002, 0x0997, - // Entry 292C0 - 292FF - 0x099a, 0x0001, 0x003b, 0x1ed9, 0x0001, 0x003b, 0x1eee, 0x0003, - 0x0000, 0x09a1, 0x09a6, 0x0003, 0x003b, 0x1ea6, 0x1eb7, 0x1ec8, - 0x0002, 0x09a9, 0x09ac, 0x0001, 0x003b, 0x1ed9, 0x0001, 0x003b, - 0x1eee, 0x0003, 0x0000, 0x09b3, 0x09b8, 0x0003, 0x003b, 0x1f03, - 0x1f14, 0x1f25, 0x0002, 0x09bb, 0x09be, 0x0001, 0x003b, 0x1f36, - 0x0001, 0x003b, 0x1f4b, 0x0003, 0x0000, 0x09c5, 0x09ca, 0x0003, - 0x003b, 0x1f03, 0x1f14, 0x1f25, 0x0002, 0x09cd, 0x09d0, 0x0001, - 0x003b, 0x1f36, 0x0001, 0x003b, 0x1f4b, 0x0003, 0x0000, 0x09d7, - // Entry 29300 - 2933F - 0x09dc, 0x0003, 0x003b, 0x1f03, 0x1f14, 0x1f25, 0x0002, 0x09df, - 0x09e2, 0x0001, 0x003b, 0x1f36, 0x0001, 0x003b, 0x1f4b, 0x0001, - 0x09e7, 0x0001, 0x003b, 0x1f60, 0x0003, 0x09ee, 0x09f1, 0x09f5, - 0x0001, 0x003b, 0x1f6e, 0x0002, 0x003b, 0xffff, 0x1f72, 0x0002, - 0x09f8, 0x09fb, 0x0001, 0x003b, 0x1f80, 0x0001, 0x003b, 0x1f8e, - 0x0003, 0x0a02, 0x0000, 0x0a05, 0x0001, 0x003b, 0x1f6e, 0x0002, - 0x0a08, 0x0a0b, 0x0001, 0x003b, 0x1f80, 0x0001, 0x003b, 0x1f8e, - 0x0003, 0x0a12, 0x0000, 0x0a15, 0x0001, 0x003b, 0x1f6e, 0x0002, - // Entry 29340 - 2937F - 0x0a18, 0x0a1b, 0x0001, 0x003b, 0x1f80, 0x0001, 0x003b, 0x1f8e, - 0x0003, 0x0a22, 0x0a25, 0x0a29, 0x0001, 0x003b, 0x1f9c, 0x0002, - 0x003b, 0xffff, 0x1fa0, 0x0002, 0x0a2c, 0x0a2f, 0x0001, 0x003b, - 0x1fab, 0x0001, 0x003b, 0x1fb6, 0x0003, 0x0a36, 0x0000, 0x0a39, - 0x0001, 0x003b, 0x1f9c, 0x0002, 0x0a3c, 0x0a3f, 0x0001, 0x003b, - 0x1fab, 0x0001, 0x003b, 0x1fb6, 0x0003, 0x0a46, 0x0000, 0x0a49, - 0x0001, 0x003b, 0x1f9c, 0x0002, 0x0a4c, 0x0a4f, 0x0001, 0x003b, - 0x1fab, 0x0001, 0x003b, 0x1fb6, 0x0003, 0x0a56, 0x0a59, 0x0a5d, - // Entry 29380 - 293BF - 0x0001, 0x003b, 0x1fc1, 0x0002, 0x003b, 0xffff, 0x1fc5, 0x0002, - 0x0a60, 0x0a63, 0x0001, 0x003b, 0x1fcc, 0x0001, 0x003b, 0x1fd7, - 0x0003, 0x0a6a, 0x0000, 0x0a6d, 0x0001, 0x003b, 0x1fc1, 0x0002, - 0x0a70, 0x0a73, 0x0001, 0x003b, 0x1fcc, 0x0001, 0x003b, 0x1fd7, - 0x0003, 0x0a7a, 0x0000, 0x0a7d, 0x0001, 0x003b, 0x1fc1, 0x0002, - 0x0a80, 0x0a83, 0x0001, 0x003b, 0x1fcc, 0x0001, 0x003b, 0x1fd7, - 0x0001, 0x0a88, 0x0001, 0x003b, 0x1fe2, 0x0004, 0x0a90, 0x0a95, - 0x0a9a, 0x0aa9, 0x0003, 0x0000, 0x1dc7, 0x29cf, 0x29d6, 0x0003, - // Entry 293C0 - 293FF - 0x003b, 0x1fec, 0x1ff7, 0x200c, 0x0002, 0x0000, 0x0a9d, 0x0003, - 0x0000, 0x0aa4, 0x0aa1, 0x0001, 0x003c, 0x0000, 0x0003, 0x003c, - 0xffff, 0x0011, 0x0029, 0x0002, 0x0000, 0x0aac, 0x0003, 0x0ab0, - 0x0bf0, 0x0b50, 0x009e, 0x003c, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00e2, 0x0134, 0x01cb, 0x020b, 0x024e, 0x0291, 0x02d4, 0x0320, - 0x0369, 0x0445, 0x048e, 0x04e0, 0x0547, 0x0599, 0x05dd, 0x0656, - 0x06d8, 0x0751, 0x07ca, 0x0825, 0x086e, 0xffff, 0xffff, 0x08e2, - 0xffff, 0x0948, 0xffff, 0x09bf, 0x09f6, 0x0a2d, 0x0a64, 0xffff, - // Entry 29400 - 2943F - 0xffff, 0x0adf, 0x0b28, 0x0b72, 0xffff, 0xffff, 0xffff, 0x0be8, - 0xffff, 0x0c45, 0x0c91, 0xffff, 0x0ce9, 0x0d29, 0x0d87, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0e37, 0xffff, 0xffff, 0x0eaf, 0x0f0d, - 0xffff, 0xffff, 0x0fa5, 0x1003, 0x103a, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x110d, 0x1144, 0x1196, 0x11df, 0x1216, - 0xffff, 0xffff, 0x12e6, 0xffff, 0x1346, 0xffff, 0xffff, 0x13f7, - 0xffff, 0x149b, 0xffff, 0xffff, 0xffff, 0xffff, 0x1533, 0xffff, - 0x158a, 0x15e8, 0x1646, 0x1698, 0xffff, 0xffff, 0xffff, 0x1711, - // Entry 29440 - 2947F - 0x176c, 0x17b5, 0xffff, 0xffff, 0x1829, 0x18c1, 0x1925, 0x1965, - 0xffff, 0xffff, 0x19d9, 0x1a22, 0x1a59, 0xffff, 0x1ab1, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1bd5, 0x1c15, 0x1c55, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1d20, 0xffff, - 0xffff, 0x1d82, 0xffff, 0x1dc7, 0xffff, 0x1e3c, 0x1e85, 0x1ee0, - 0xffff, 0x1f40, 0x1fa4, 0xffff, 0xffff, 0xffff, 0x203c, 0x2085, - 0xffff, 0xffff, 0x0040, 0x017d, 0x03a9, 0x03f7, 0xffff, 0xffff, - 0x1443, 0x1b5a, 0x009e, 0x003c, 0x0080, 0x009a, 0x00b4, 0x00cb, - // Entry 29480 - 294BF - 0x00f9, 0x0148, 0x01dc, 0x021d, 0x0260, 0x02a3, 0x02e9, 0x0334, - 0x037a, 0x0459, 0x04a5, 0x04fe, 0x055e, 0x05aa, 0x0601, 0x067d, - 0x06fc, 0x0775, 0x07e4, 0x0839, 0x0885, 0x08c0, 0x08ce, 0x08f9, - 0x0934, 0x0960, 0x09ae, 0x09cd, 0x0a04, 0x0a3b, 0x0a78, 0x0aad, - 0x0ac7, 0x0af3, 0x0b3a, 0x0b80, 0x0ba9, 0x0bbd, 0x0bd4, 0x0bfc, - 0x0c31, 0x0c5a, 0x0ca2, 0x0cd1, 0x0cfa, 0x0d44, 0x0d95, 0x0dbe, - 0x0ddf, 0x0e0f, 0x0e26, 0x0e4b, 0x0e80, 0x0e98, 0x0eca, 0x0f28, - 0x0f7d, 0x0f91, 0x0fc0, 0x1011, 0x104b, 0x107a, 0x108b, 0x109c, - // Entry 294C0 - 294FF - 0x10b3, 0x10d1, 0x10ef, 0x111b, 0x115b, 0x11aa, 0x11ed, 0x1243, - 0x12aa, 0x12c8, 0x12fa, 0x132f, 0x1366, 0x13b3, 0x13e2, 0x140c, - 0x1487, 0x14ac, 0x14db, 0x14f2, 0x1503, 0x151e, 0x1547, 0x157c, - 0x15a5, 0x1603, 0x165d, 0x16ac, 0x16e1, 0x16f2, 0x1703, 0x172b, - 0x1780, 0x17cc, 0x1807, 0x1818, 0x184b, 0x18de, 0x1936, 0x1979, - 0x19ae, 0x19bf, 0x19ed, 0x1a30, 0x1a6a, 0x1a99, 0x1ad5, 0x1b2a, - 0x1b3b, 0x1b4c, 0x1bb0, 0x1bc4, 0x1be6, 0x1c26, 0x1c66, 0x1c95, - 0x1ca6, 0x1cbd, 0x1cd5, 0x1cf0, 0x1d01, 0x1d0f, 0x1d2e, 0x1d57, - // Entry 29500 - 2953F - 0x1d6e, 0x1d90, 0x1db9, 0x1de4, 0x1e2b, 0x1e50, 0x1e9f, 0x1ef4, - 0x1f29, 0x1f5d, 0x1fbb, 0x1ff6, 0x2007, 0x201b, 0x2050, 0x20a2, - 0x0f6b, 0x189c, 0x0051, 0x0195, 0x03c1, 0x040f, 0x099d, 0x13cd, - 0x1454, 0x1b71, 0x009e, 0x003c, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0113, 0x015f, 0x01f0, 0x0232, 0x0275, 0x02b8, 0x0301, 0x034b, - 0x038e, 0x0470, 0x04bf, 0x051f, 0x0578, 0x05be, 0x0628, 0x06a7, - 0x0723, 0x079c, 0x0801, 0x0850, 0x089f, 0xffff, 0xffff, 0x0913, - 0xffff, 0x097b, 0xffff, 0x09de, 0x0a15, 0x0a4c, 0x0a8f, 0xffff, - // Entry 29540 - 2957F - 0xffff, 0x0b0a, 0x0b4f, 0x0b91, 0xffff, 0xffff, 0xffff, 0x0c13, - 0xffff, 0x0c72, 0x0cb6, 0xffff, 0x0d0e, 0x0d62, 0x0da6, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0e62, 0xffff, 0xffff, 0x0ee8, 0x0f46, - 0xffff, 0xffff, 0x0fde, 0x1022, 0x105f, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x112c, 0x1175, 0x11c1, 0x11fe, 0x1273, - 0xffff, 0xffff, 0x1311, 0xffff, 0x1389, 0xffff, 0xffff, 0x1424, - 0xffff, 0x14c0, 0xffff, 0xffff, 0xffff, 0xffff, 0x155e, 0xffff, - 0x15c3, 0x1621, 0x1677, 0x16c3, 0xffff, 0xffff, 0xffff, 0x1748, - // Entry 29580 - 295BF - 0x1797, 0x17e6, 0xffff, 0xffff, 0x1870, 0x18fe, 0x194a, 0x1990, - 0xffff, 0xffff, 0x1a04, 0x1a41, 0x1a7e, 0xffff, 0x1afc, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1bfa, 0x1c3a, 0x1c7a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1d3f, 0xffff, - 0xffff, 0x1da1, 0xffff, 0x1e04, 0xffff, 0x1e67, 0x1ebc, 0x1f0b, - 0xffff, 0x1f7d, 0x1fd5, 0xffff, 0xffff, 0xffff, 0x2067, 0x20c2, - 0xffff, 0xffff, 0x0065, 0x01b0, 0x03dc, 0x042a, 0xffff, 0xffff, - 0x146c, 0x1b8f, 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, - // Entry 295C0 - 295FF - 0x0000, 0x0000, 0x0009, 0x0002, 0x0000, 0x000c, 0x0003, 0x0010, - 0x00b2, 0x0061, 0x004f, 0x003d, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 29600 - 2963F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0000, 0x004f, 0x003d, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 29640 - 2967F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x000e, 0x004f, 0x003d, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 29680 - 296BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x001f, 0x0003, 0x0004, 0x0000, - // Entry 296C0 - 296FF - 0x009c, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x0025, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0001, - 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0005, 0x01ac, 0x0001, - 0x0005, 0x01b6, 0x0007, 0x002d, 0x0042, 0x0000, 0x005a, 0x0072, - 0x007a, 0x008b, 0x0001, 0x002f, 0x0003, 0x0000, 0x0000, 0x0033, - 0x000d, 0x003d, 0xffff, 0x0037, 0x0050, 0x006f, 0x007f, 0x0092, - 0x0099, 0x00a3, 0x00b0, 0x00c0, 0x00dc, 0x00f2, 0x010e, 0x0001, - // Entry 29700 - 2973F - 0x0044, 0x0003, 0x0048, 0x0000, 0x0051, 0x0007, 0x002c, 0x0246, - 0x0250, 0x22d9, 0x0267, 0x0271, 0x027e, 0x028e, 0x0007, 0x003d, - 0x0124, 0x0140, 0x0153, 0x0166, 0x0179, 0x018f, 0x01a8, 0x0001, - 0x005c, 0x0003, 0x0060, 0x0000, 0x0069, 0x0002, 0x0063, 0x0066, - 0x0001, 0x003d, 0x01bb, 0x0001, 0x003d, 0x01c7, 0x0002, 0x006c, - 0x006f, 0x0001, 0x003d, 0x01bb, 0x0001, 0x003d, 0x01c7, 0x0001, - 0x0074, 0x0001, 0x0076, 0x0002, 0x003d, 0x01d3, 0x01f8, 0x0004, - 0x0088, 0x0082, 0x007f, 0x0085, 0x0001, 0x0001, 0x1fa2, 0x0001, - // Entry 29740 - 2977F - 0x0001, 0x1fb0, 0x0001, 0x0005, 0x04ec, 0x0001, 0x003d, 0x0217, - 0x0004, 0x0099, 0x0093, 0x0090, 0x0096, 0x0001, 0x0002, 0x0453, - 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, - 0x0478, 0x0004, 0x0000, 0x0000, 0x0000, 0x00a1, 0x0002, 0x00ec, - 0x00a4, 0x0003, 0x0000, 0x0000, 0x00a8, 0x0042, 0x003d, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 29780 - 297BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x021e, 0x0003, 0x0000, 0x0000, 0x00f0, 0x0042, 0x000b, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 297C0 - 297FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0000, 0x0003, 0x0004, 0x00fe, 0x017c, 0x000a, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x003a, 0x0000, 0x00e7, - // Entry 29800 - 2983F - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, - 0x0029, 0x0004, 0x0026, 0x0020, 0x001d, 0x0023, 0x0001, 0x003d, - 0x023b, 0x0001, 0x003d, 0x024c, 0x0001, 0x003d, 0x0257, 0x0001, - 0x003d, 0x0261, 0x0004, 0x0037, 0x0031, 0x002e, 0x0034, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0008, 0x0043, 0x006b, 0x0090, 0x0000, - 0x00a4, 0x00b4, 0x00c5, 0x00d6, 0x0002, 0x0046, 0x0059, 0x0003, - 0x0000, 0x0000, 0x004a, 0x000d, 0x003d, 0xffff, 0x0268, 0x0273, - // Entry 29840 - 2987F - 0x027e, 0x0289, 0x0294, 0x029b, 0x02a4, 0x02b3, 0x02bc, 0x02c7, - 0x02d6, 0x02e1, 0x0002, 0x0000, 0x005c, 0x000d, 0x0013, 0xffff, - 0x30e5, 0x30fa, 0x30ee, 0x30eb, 0x30ee, 0x30e5, 0x30e5, 0x30eb, - 0x30e8, 0x30e8, 0x30eb, 0x30fd, 0x0002, 0x006e, 0x0084, 0x0003, - 0x0072, 0x0000, 0x007b, 0x0007, 0x003d, 0x02ec, 0x02f9, 0x030e, - 0x031d, 0x032a, 0x033d, 0x0346, 0x0007, 0x003d, 0x0351, 0x0360, - 0x030e, 0x031d, 0x032a, 0x033d, 0x0346, 0x0002, 0x0000, 0x0087, - 0x0007, 0x0013, 0x30eb, 0x3100, 0x3103, 0x3103, 0x3103, 0x30e5, - // Entry 29880 - 298BF - 0x3103, 0x0001, 0x0092, 0x0003, 0x0096, 0x0000, 0x009d, 0x0005, - 0x003d, 0xffff, 0x0377, 0x0382, 0x039a, 0x03b2, 0x0005, 0x003d, - 0xffff, 0x03ca, 0x0382, 0x039a, 0x03b2, 0x0003, 0x00ae, 0x0000, - 0x00a8, 0x0001, 0x00aa, 0x0002, 0x003d, 0x03e4, 0x03f8, 0x0001, - 0x00b0, 0x0002, 0x003d, 0x040e, 0x0418, 0x0004, 0x00c2, 0x00bc, - 0x00b9, 0x00bf, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, - 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, 0x00d3, - 0x00cd, 0x00ca, 0x00d0, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, - // Entry 298C0 - 298FF - 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, - 0x00e4, 0x00de, 0x00db, 0x00e1, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x00e9, 0x0001, 0x00eb, 0x0003, 0x0000, 0x0000, 0x00ef, - 0x000d, 0x0003, 0xffff, 0x0493, 0x049c, 0x21ea, 0x2200, 0x211f, - 0x2135, 0x04fb, 0x0502, 0x050d, 0x0518, 0x2218, 0x2228, 0x0040, - 0x013f, 0x0000, 0x0000, 0x0144, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0149, 0x0000, 0x0000, 0x014e, 0x0000, 0x0000, 0x0000, - // Entry 29900 - 2993F - 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x015e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0163, 0x0000, 0x0168, 0x0000, - 0x0000, 0x016d, 0x0000, 0x0000, 0x0172, 0x0000, 0x0000, 0x0177, - 0x0001, 0x0141, 0x0001, 0x003d, 0x0422, 0x0001, 0x0146, 0x0001, - 0x003d, 0x0429, 0x0001, 0x014b, 0x0001, 0x003d, 0x0430, 0x0001, - // Entry 29940 - 2997F - 0x0150, 0x0001, 0x003d, 0x043b, 0x0002, 0x0156, 0x0159, 0x0001, - 0x003d, 0x0446, 0x0003, 0x003d, 0x044d, 0x0456, 0x045d, 0x0001, - 0x0160, 0x0001, 0x003d, 0x0466, 0x0001, 0x0165, 0x0001, 0x003d, - 0x0478, 0x0001, 0x016a, 0x0001, 0x003d, 0x0486, 0x0001, 0x016f, - 0x0001, 0x003d, 0x0495, 0x0001, 0x0174, 0x0001, 0x003d, 0x04a0, - 0x0001, 0x0179, 0x0001, 0x003d, 0x04af, 0x0004, 0x0181, 0x0000, - 0x0185, 0x0190, 0x0002, 0x0000, 0x1dc7, 0x29cf, 0x0002, 0x0000, - 0x0188, 0x0002, 0x0000, 0x018b, 0x0003, 0x003d, 0xffff, 0x04b6, - // Entry 29980 - 299BF - 0x04db, 0x0002, 0x0000, 0x0193, 0x0003, 0x0197, 0x02d7, 0x0237, - 0x009e, 0x003d, 0xffff, 0xffff, 0xffff, 0xffff, 0x05ef, 0x0678, - 0x0760, 0x07ce, 0x0830, 0x0892, 0x0900, 0x096e, 0xffff, 0x0ab0, - 0x0b2a, 0x0baa, 0x0c4b, 0x0cbf, 0x0d3f, 0x0de0, 0x0ea2, 0x0f43, - 0x0fe8, 0x1062, 0x10c8, 0xffff, 0xffff, 0x1176, 0xffff, 0x1221, - 0xffff, 0x12ac, 0x1314, 0x136a, 0x13cc, 0xffff, 0xffff, 0x1487, - 0x14fb, 0x1585, 0xffff, 0xffff, 0xffff, 0x1650, 0xffff, 0x16d4, - 0x1757, 0xffff, 0x17da, 0x1865, 0x18cd, 0xffff, 0xffff, 0xffff, - // Entry 299C0 - 299FF - 0xffff, 0x19bf, 0xffff, 0xffff, 0x1a88, 0x1b32, 0xffff, 0xffff, - 0x1c2f, 0x1cd6, 0x1d4f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1e90, 0x1efe, 0x1f6c, 0x1fe6, 0x204e, 0xffff, 0xffff, - 0x211a, 0xffff, 0x219a, 0xffff, 0xffff, 0x2283, 0xffff, 0x2357, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2440, 0xffff, 0xffff, 0xffff, - 0x24be, 0x2532, 0xffff, 0xffff, 0xffff, 0x25e2, 0x2677, 0x26ef, - 0xffff, 0xffff, 0x27b5, 0x2846, 0x28c6, 0x2922, 0xffff, 0xffff, - 0x29d2, 0x2a40, 0x2a9c, 0xffff, 0x2b3f, 0xffff, 0xffff, 0xffff, - // Entry 29A00 - 29A3F - 0xffff, 0xffff, 0x2cd1, 0x2d45, 0x2da7, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f22, - 0xffff, 0x2f9e, 0xffff, 0x3046, 0x30c0, 0x3144, 0xffff, 0x31e2, - 0x3262, 0xffff, 0xffff, 0xffff, 0x3341, 0x33ab, 0xffff, 0xffff, - 0x04fe, 0x06ec, 0x09e0, 0x0a48, 0xffff, 0xffff, 0x22ef, 0x2c2d, - 0x009e, 0x003d, 0x0560, 0x0580, 0x05a5, 0x05ca, 0x0614, 0x0694, - 0x077c, 0x07e4, 0x0846, 0x08ac, 0x091a, 0x098c, 0xffff, 0x0ace, - 0x0b4c, 0x0bd7, 0x0c69, 0x0cdf, 0x0d6a, 0x0e16, 0x0ecd, 0x0f6e, - // Entry 29A40 - 29A7F - 0x1008, 0x107e, 0x10e8, 0x1142, 0x115a, 0x1196, 0x11f0, 0x123c, - 0x1283, 0x12c6, 0x1328, 0x1380, 0x13ec, 0x1446, 0x1460, 0x14a5, - 0x151e, 0x159d, 0x15ed, 0x1603, 0x162d, 0x166a, 0x16b8, 0x16f7, - 0x177a, 0xffff, 0x17ff, 0x187f, 0x18e3, 0x1929, 0x1956, 0x197d, - 0x19a1, 0x19df, 0x1a39, 0x1a60, 0x1ab8, 0x1b62, 0x1bf4, 0x1c17, - 0x1c5e, 0x1cf5, 0x1d63, 0x1da5, 0x1dba, 0x1de5, 0x1e05, 0x1e32, - 0x1e61, 0x1eac, 0x1f1a, 0x1f8a, 0x1ffe, 0x206a, 0x20bc, 0x20eb, - 0x2132, 0x2182, 0x21c0, 0x2226, 0x225c, 0x22a0, 0xffff, 0x2371, - // Entry 29A80 - 29ABF - 0x23bf, 0x23db, 0x23f9, 0x2419, 0x245a, 0x24a8, 0xffff, 0xffff, - 0x24dc, 0x254a, 0x2590, 0x25ac, 0x25c8, 0x260b, 0x2695, 0x2716, - 0x2785, 0x279b, 0x27cf, 0x2868, 0x28dc, 0x293e, 0x2990, 0x29a6, - 0x29ee, 0x2a56, 0x2abc, 0x2b16, 0x2b73, 0x2bfb, 0x2c17, 0xffff, - 0x2c95, 0x2cb5, 0x2cef, 0x2d5d, 0x2dbf, 0x2e09, 0x2e25, 0x2e45, - 0x2e79, 0x2ea0, 0x2eba, 0x2ed0, 0xffff, 0x2ee8, 0x2f08, 0x2f3c, - 0x2f8a, 0x2fc4, 0x302a, 0x3066, 0x30e2, 0x3164, 0x31be, 0x3204, - 0x3280, 0x32d6, 0x32ee, 0x330f, 0x335b, 0x33d3, 0x1bdc, 0x281d, - // Entry 29AC0 - 29AFF - 0x0516, 0x070a, 0x09fa, 0x0a62, 0xffff, 0x2244, 0x2309, 0x2c47, - 0x009e, 0x003d, 0xffff, 0xffff, 0xffff, 0xffff, 0x0648, 0x06bf, - 0x07a7, 0x0809, 0x086b, 0x08d5, 0x0943, 0x09b9, 0xffff, 0x0afb, - 0x0b7d, 0x0c13, 0x0c96, 0x0d0e, 0x0da4, 0x0e5b, 0x0f07, 0x0faa, - 0x1037, 0x10a9, 0x1117, 0xffff, 0xffff, 0x11c5, 0xffff, 0x1266, - 0xffff, 0x12ef, 0x134b, 0x13a5, 0x141b, 0xffff, 0xffff, 0x14d2, - 0x1550, 0x15c4, 0xffff, 0xffff, 0xffff, 0x1693, 0xffff, 0x1729, - 0x17ac, 0xffff, 0x1833, 0x18a8, 0x1908, 0xffff, 0xffff, 0xffff, - // Entry 29B00 - 29B3F - 0xffff, 0x1a0e, 0xffff, 0xffff, 0x1af7, 0x1ba1, 0xffff, 0xffff, - 0x1c9c, 0x1d23, 0x1d86, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1ed7, 0x1f45, 0x1fb7, 0x2025, 0x2095, 0xffff, 0xffff, - 0x2159, 0xffff, 0x21f5, 0xffff, 0xffff, 0x22cc, 0xffff, 0x239a, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2483, 0xffff, 0xffff, 0xffff, - 0x2509, 0x256f, 0xffff, 0xffff, 0xffff, 0x2643, 0x26c2, 0x274c, - 0xffff, 0xffff, 0x27f8, 0x2899, 0x2901, 0x2969, 0xffff, 0xffff, - 0x2a19, 0x2a7b, 0x2aeb, 0xffff, 0x2bb6, 0xffff, 0xffff, 0xffff, - // Entry 29B40 - 29B7F - 0xffff, 0xffff, 0x2d1c, 0x2d84, 0x2de6, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f65, - 0xffff, 0x2ff9, 0xffff, 0x3095, 0x3113, 0x3193, 0xffff, 0x3235, - 0x32ad, 0xffff, 0xffff, 0xffff, 0x3384, 0x340a, 0xffff, 0xffff, - 0x053d, 0x0737, 0x0a23, 0x0a8b, 0xffff, 0xffff, 0x2332, 0x2c70, - 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, - // Entry 29B80 - 29BBF - 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, - 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, - 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, - 0xffff, 0x0636, 0x22cc, 0x22d0, 0x2246, 0x224a, 0x224e, 0x22d4, - 0x22d8, 0x22dc, 0x234a, 0x22e0, 0x21e2, 0x000d, 0x003e, 0xffff, - 0x0000, 0x0008, 0x0011, 0x0017, 0x001e, 0x0022, 0x0027, 0x002d, - 0x0034, 0x003d, 0x0044, 0x004c, 0x0002, 0x0000, 0x0057, 0x000d, - // Entry 29BC0 - 29BFF - 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, - 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x0002, 0x0069, - 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, 0x06b6, - 0x06ba, 0x234e, 0x06c2, 0x231e, 0x2322, 0x06ce, 0x0007, 0x003e, - 0x0054, 0x005d, 0x0067, 0x006f, 0x0079, 0x0082, 0x0089, 0x0002, - 0x0000, 0x0082, 0x0007, 0x0000, 0x0035, 0x0037, 0x2335, 0x003b, - 0x2980, 0x2055, 0x0033, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, - 0x0098, 0x0005, 0x0009, 0xffff, 0x025a, 0x025d, 0x0260, 0x0263, - // Entry 29C00 - 29C3F - 0x0005, 0x003e, 0xffff, 0x0093, 0x00a0, 0x00ad, 0x00bf, 0x0001, - 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, - 0x0001, 0x003e, 0x00cb, 0x0001, 0x003e, 0x00d1, 0x0002, 0x00b1, - 0x00b4, 0x0001, 0x003e, 0x00cb, 0x0001, 0x003e, 0x00d1, 0x0003, - 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x003e, 0x00da, - 0x00ea, 0x0001, 0x00c3, 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0004, - 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, - // Entry 29C40 - 29C7F - 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 29C80 - 29CBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, - 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, - 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x003e, 0x00fa, 0x0001, - 0x0131, 0x0001, 0x003e, 0x0100, 0x0001, 0x0136, 0x0001, 0x003e, - 0x010a, 0x0001, 0x013b, 0x0001, 0x003e, 0x0113, 0x0002, 0x0141, - 0x0144, 0x0001, 0x003e, 0x0118, 0x0003, 0x003e, 0x011d, 0x0122, - 0x0129, 0x0001, 0x014b, 0x0001, 0x003e, 0x012f, 0x0001, 0x0150, - 0x0001, 0x003e, 0x013f, 0x0001, 0x0155, 0x0001, 0x0009, 0x0308, - // Entry 29CC0 - 29CFF - 0x0001, 0x015a, 0x0001, 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, - 0x0009, 0x030c, 0x0001, 0x0164, 0x0001, 0x003e, 0x0147, 0x0002, - 0x0003, 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, - 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0053, - 0x0078, 0x008c, 0x00a4, 0x00b4, 0x00c5, 0x0000, 0x0001, 0x0031, - // Entry 29D00 - 29D3F - 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x003e, 0xffff, 0x014e, - 0x0152, 0x0156, 0x015a, 0x015e, 0x0162, 0x0166, 0x016a, 0x016e, - 0x0172, 0x0177, 0x017c, 0x000d, 0x003e, 0xffff, 0x0181, 0x0196, - 0x01ab, 0x01be, 0x01cf, 0x01e2, 0x01f8, 0x020f, 0x0224, 0x0239, - 0x024c, 0x0269, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, 0x0000, - 0x0063, 0x0007, 0x0021, 0x00d9, 0x36b1, 0x36b6, 0x36ba, 0x36bf, - 0x36c5, 0x36ca, 0x0007, 0x003e, 0x0287, 0x0291, 0x0299, 0x02a0, - 0x02ab, 0x02b4, 0x02bc, 0x0002, 0x0000, 0x006f, 0x0007, 0x0000, - // Entry 29D40 - 29D7F - 0x2002, 0x200a, 0x1f9a, 0x1f9a, 0x214a, 0x214a, 0x2002, 0x0001, - 0x007a, 0x0003, 0x007e, 0x0000, 0x0085, 0x0005, 0x003e, 0xffff, - 0x02c3, 0x02c6, 0x02c9, 0x02cc, 0x0005, 0x003e, 0xffff, 0x02cf, - 0x02f2, 0x0311, 0x032e, 0x0001, 0x008e, 0x0003, 0x0092, 0x0000, - 0x009b, 0x0002, 0x0095, 0x0098, 0x0001, 0x003e, 0x0349, 0x0001, - 0x003e, 0x0353, 0x0002, 0x009e, 0x00a1, 0x0001, 0x003e, 0x0349, - 0x0001, 0x003e, 0x0353, 0x0003, 0x00ae, 0x0000, 0x00a8, 0x0001, - 0x00aa, 0x0002, 0x003e, 0x035e, 0x0376, 0x0001, 0x00b0, 0x0002, - // Entry 29D80 - 29DBF - 0x003e, 0x0390, 0x0395, 0x0004, 0x00c2, 0x00bc, 0x00b9, 0x00bf, - 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00d3, 0x00cd, 0x00ca, - 0x00d0, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0117, 0x0000, - 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121, - 0x0000, 0x0000, 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0136, 0x0000, - // Entry 29DC0 - 29DFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013b, 0x0000, 0x0140, 0x0000, 0x0000, 0x0145, - 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, 0x014f, 0x0001, 0x0119, - 0x0001, 0x003e, 0x039a, 0x0001, 0x011e, 0x0001, 0x003e, 0x03a5, - 0x0001, 0x0123, 0x0001, 0x003e, 0x03aa, 0x0001, 0x0128, 0x0001, - 0x003e, 0x03b2, 0x0002, 0x012e, 0x0131, 0x0001, 0x003e, 0x03bc, - // Entry 29E00 - 29E3F - 0x0003, 0x003e, 0x03c3, 0x03ce, 0x03d9, 0x0001, 0x0138, 0x0001, - 0x003e, 0x03e4, 0x0001, 0x013d, 0x0001, 0x003e, 0x03f9, 0x0001, - 0x0142, 0x0001, 0x003e, 0x0410, 0x0001, 0x0147, 0x0001, 0x003e, - 0x041a, 0x0001, 0x014c, 0x0001, 0x003e, 0x0422, 0x0001, 0x0151, - 0x0001, 0x003e, 0x0427, 0x0003, 0x0004, 0x015b, 0x0288, 0x0008, - 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001b, 0x0035, - 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0003, - 0x0000, 0x0000, 0x0018, 0x0001, 0x0013, 0x06bb, 0x0008, 0x0000, - // Entry 29E40 - 29E7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x0000, 0x0000, 0x0004, - 0x0032, 0x002c, 0x0029, 0x002f, 0x0001, 0x003e, 0x042d, 0x0001, - 0x0013, 0x0477, 0x0001, 0x003e, 0x0445, 0x0001, 0x003e, 0x0451, - 0x0008, 0x003e, 0x0084, 0x00c0, 0x00ee, 0x0114, 0x0139, 0x014a, - 0x0000, 0x0002, 0x0041, 0x0063, 0x0003, 0x0045, 0x0000, 0x0054, - 0x000d, 0x0005, 0xffff, 0x0636, 0x2352, 0x2357, 0x2246, 0x232a, - 0x224e, 0x22d4, 0x235c, 0x2360, 0x234a, 0x22e0, 0x2212, 0x000d, - 0x003e, 0xffff, 0x045f, 0x0467, 0x0470, 0x0477, 0x047e, 0x0482, - // Entry 29E80 - 29EBF - 0x0488, 0x048e, 0x0495, 0x04a0, 0x04a9, 0x04b3, 0x0002, 0x0066, - 0x0075, 0x000d, 0x0000, 0xffff, 0x1e22, 0x29dd, 0x29e3, 0x2347, - 0x29e9, 0x29ed, 0x29f2, 0x29f7, 0x29fc, 0x2a02, 0x2a07, 0x2a0c, - 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, - 0x2483, 0x2483, 0x2990, 0x298e, 0x2990, 0x297e, 0x297c, 0x0002, - 0x0087, 0x00a8, 0x0005, 0x008d, 0x0000, 0x009f, 0x0000, 0x0096, - 0x0007, 0x001c, 0x0108, 0x2167, 0x216b, 0x216f, 0x2150, 0x2154, - 0x2158, 0x0007, 0x0016, 0x2b50, 0x0358, 0x035b, 0x2bf4, 0x2bf7, - // Entry 29EC0 - 29EFF - 0x0364, 0x2bfa, 0x0007, 0x003e, 0x04bd, 0x04c7, 0x04d1, 0x04dc, - 0x04e4, 0x04f1, 0x04fb, 0x0005, 0x0000, 0x00ae, 0x0000, 0x0000, - 0x00b7, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x297a, 0x297c, - 0x298c, 0x298e, 0x0007, 0x0016, 0x2b50, 0x0358, 0x035b, 0x2bf4, - 0x2bf7, 0x0364, 0x2bfa, 0x0002, 0x00c3, 0x00dc, 0x0003, 0x00c7, - 0x00ce, 0x00d5, 0x0005, 0x003e, 0xffff, 0x0505, 0x050a, 0x050f, - 0x0514, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x003e, 0xffff, 0x0519, 0x0525, 0x0531, 0x053d, 0x0003, - // Entry 29F00 - 29F3F - 0x0000, 0x00e0, 0x00e7, 0x0005, 0x003e, 0xffff, 0x0549, 0x054c, - 0x054f, 0x0552, 0x0005, 0x003e, 0xffff, 0x0519, 0x0525, 0x0531, - 0x053d, 0x0002, 0x00f1, 0x0107, 0x0003, 0x00f5, 0x0000, 0x00fe, - 0x0002, 0x00f8, 0x00fb, 0x0001, 0x003e, 0x0555, 0x0001, 0x003e, - 0x055a, 0x0002, 0x0101, 0x0104, 0x0001, 0x003e, 0x055f, 0x0001, - 0x003e, 0x0571, 0x0003, 0x0000, 0x0000, 0x010b, 0x0002, 0x010e, - 0x0111, 0x0001, 0x003e, 0x0582, 0x0001, 0x003e, 0x058f, 0x0003, - 0x0123, 0x012e, 0x0118, 0x0002, 0x011b, 0x011f, 0x0002, 0x003e, - // Entry 29F40 - 29F7F - 0x059b, 0x05ce, 0x0002, 0x003e, 0x05a8, 0x05da, 0x0002, 0x0126, - 0x012a, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x003e, 0x05fe, - 0x0605, 0x0002, 0x0131, 0x0135, 0x0002, 0x003e, 0x060b, 0x060e, - 0x0002, 0x002a, 0x00e4, 0x00e8, 0x0004, 0x0147, 0x0141, 0x013e, - 0x0144, 0x0001, 0x003e, 0x0611, 0x0001, 0x0013, 0x06b1, 0x0001, - 0x003e, 0x0627, 0x0001, 0x0013, 0x0357, 0x0004, 0x0158, 0x0152, - 0x014f, 0x0155, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x019c, - // Entry 29F80 - 29FBF - 0x0000, 0x0000, 0x01a1, 0x01ba, 0x01bf, 0x01c4, 0x01c9, 0x01ce, - 0x01d3, 0x01de, 0x01e3, 0x01e8, 0x01f3, 0x01f8, 0x0000, 0x0000, - 0x0000, 0x01fd, 0x020a, 0x020f, 0x0000, 0x0000, 0x0000, 0x0214, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0219, 0x0000, 0x0000, - 0x0221, 0x0000, 0x0000, 0x0229, 0x0000, 0x0000, 0x0231, 0x0000, - 0x0000, 0x0239, 0x0000, 0x0000, 0x0241, 0x0000, 0x0000, 0x0249, - 0x0000, 0x0000, 0x0000, 0x0251, 0x0000, 0x0256, 0x025b, 0x0260, - 0x0265, 0x026a, 0x026f, 0x0274, 0x0279, 0x027e, 0x0283, 0x0001, - // Entry 29FC0 - 29FFF - 0x019e, 0x0001, 0x003e, 0x0631, 0x0003, 0x01a5, 0x01a8, 0x01ad, - 0x0001, 0x003e, 0x0637, 0x0003, 0x003e, 0x063c, 0x0646, 0x0650, - 0x0002, 0x01b0, 0x01b5, 0x0003, 0x003e, 0x0675, 0x0669, 0x065a, - 0x0003, 0x003e, 0x06a2, 0x0694, 0x0682, 0x0001, 0x01bc, 0x0001, - 0x003e, 0x06b1, 0x0001, 0x01c1, 0x0001, 0x003e, 0x06b1, 0x0001, - 0x01c6, 0x0001, 0x003e, 0x06b4, 0x0001, 0x01cb, 0x0001, 0x003e, - 0x06bd, 0x0001, 0x01d0, 0x0001, 0x003e, 0x06bd, 0x0002, 0x01d6, - 0x01d9, 0x0001, 0x003e, 0x06c0, 0x0003, 0x003e, 0x06c6, 0x06d4, - // Entry 2A000 - 2A03F - 0x06e0, 0x0001, 0x01e0, 0x0001, 0x003e, 0x06c0, 0x0001, 0x01e5, - 0x0001, 0x001c, 0x010c, 0x0002, 0x01eb, 0x01ee, 0x0001, 0x003e, - 0x06ef, 0x0003, 0x003e, 0x06f4, 0x06fe, 0x0706, 0x0001, 0x01f5, - 0x0001, 0x001c, 0x0113, 0x0001, 0x01fa, 0x0001, 0x001c, 0x0113, - 0x0002, 0x0200, 0x0203, 0x0001, 0x003e, 0x0715, 0x0005, 0x003e, - 0x0727, 0x072f, 0x0735, 0x071b, 0x073b, 0x0001, 0x020c, 0x0001, - 0x003e, 0x0747, 0x0001, 0x0211, 0x0001, 0x003e, 0x0747, 0x0001, - 0x0216, 0x0001, 0x003e, 0x074a, 0x0002, 0x0000, 0x021c, 0x0003, - // Entry 2A040 - 2A07F - 0x003e, 0x0755, 0x076c, 0x0782, 0x0002, 0x0000, 0x0224, 0x0003, - 0x003e, 0x079b, 0x07b2, 0x07c8, 0x0002, 0x0000, 0x022c, 0x0003, - 0x003e, 0x07e1, 0x07f9, 0x0810, 0x0002, 0x0000, 0x0234, 0x0003, - 0x003e, 0x082a, 0x083f, 0x0853, 0x0002, 0x0000, 0x023c, 0x0003, - 0x003e, 0x086a, 0x0884, 0x089d, 0x0002, 0x0000, 0x0244, 0x0003, - 0x003e, 0x08b9, 0x08d0, 0x08e6, 0x0002, 0x0000, 0x024c, 0x0003, - 0x003e, 0x08ff, 0x0916, 0x092c, 0x0001, 0x0253, 0x0001, 0x003e, - 0x0945, 0x0001, 0x0258, 0x0001, 0x002a, 0x038d, 0x0001, 0x025d, - // Entry 2A080 - 2A0BF - 0x0001, 0x0016, 0x0f1c, 0x0001, 0x0262, 0x0001, 0x003e, 0x094f, - 0x0001, 0x0267, 0x0001, 0x003e, 0x0952, 0x0001, 0x026c, 0x0001, - 0x0001, 0x075a, 0x0001, 0x0271, 0x0001, 0x0029, 0x0080, 0x0001, - 0x0276, 0x0001, 0x003e, 0x0959, 0x0001, 0x027b, 0x0001, 0x0001, - 0x07d3, 0x0001, 0x0280, 0x0001, 0x0029, 0x0086, 0x0001, 0x0285, - 0x0001, 0x003e, 0x0960, 0x0004, 0x028d, 0x0291, 0x0296, 0x02a1, - 0x0002, 0x0000, 0x1dc7, 0x29cf, 0x0003, 0x003e, 0x0969, 0x0976, - 0x0989, 0x0002, 0x0000, 0x0299, 0x0002, 0x0000, 0x029c, 0x0003, - // Entry 2A0C0 - 2A0FF - 0x003e, 0xffff, 0x09a0, 0x09c0, 0x0002, 0x03e0, 0x02a4, 0x0003, - 0x0326, 0x0383, 0x02a8, 0x007c, 0x003e, 0xffff, 0x09d7, 0x09f4, - 0x0a0c, 0x0a3f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0a98, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0ae6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0b40, 0x0b9b, 0xffff, 0x0bf1, 0xffff, 0xffff, - // Entry 2A100 - 2A13F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c32, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c4e, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c7f, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2A140 - 2A17F - 0xffff, 0xffff, 0xffff, 0x0cb8, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0cc9, 0x005b, 0x003e, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a25, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0a86, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0acf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0b27, 0x0b85, 0xffff, 0x0bda, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2A180 - 2A1BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c6c, 0x005b, 0x003e, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0a66, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0ab7, - // Entry 2A1C0 - 2A1FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b0a, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b66, 0x0bbe, 0xffff, - 0x0c15, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2A200 - 2A23F - 0xffff, 0xffff, 0x0c9f, 0x0003, 0x03e4, 0x044a, 0x0417, 0x0031, - 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, - 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2A240 - 2A27F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, 0x0016, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2A280 - 2A2BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1b15, 0x1b69, 0xffff, 0x1bd3, - 0x0003, 0x0004, 0x00ab, 0x0106, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0025, 0x0006, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, - 0x001f, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, - // Entry 2A2C0 - 2A2FF - 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0007, 0x002d, 0x0051, - 0x0000, 0x0069, 0x0081, 0x0089, 0x009a, 0x0001, 0x002f, 0x0003, - 0x0033, 0x0000, 0x0042, 0x000d, 0x003e, 0xffff, 0x0ce1, 0x0ce5, - 0x0ce9, 0x0ced, 0x0cf1, 0x0cf4, 0x0cf8, 0x0cfc, 0x0d00, 0x0d04, - 0x0d08, 0x0d0b, 0x000d, 0x003e, 0xffff, 0x0d0f, 0x0d1a, 0x0d26, - 0x0d31, 0x0d3b, 0x0d42, 0x0d4f, 0x0d5d, 0x0d65, 0x0d73, 0x0d7d, - 0x0d84, 0x0001, 0x0053, 0x0003, 0x0057, 0x0000, 0x0060, 0x0007, - 0x000b, 0x09c9, 0x2770, 0x2774, 0x2778, 0x277c, 0x2755, 0x2742, - // Entry 2A300 - 2A33F - 0x0007, 0x003e, 0x0d91, 0x0d98, 0x0d9f, 0x0da9, 0x0db3, 0x0dba, - 0x0dc4, 0x0001, 0x006b, 0x0003, 0x006f, 0x0000, 0x0078, 0x0002, - 0x0072, 0x0075, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, - 0x0002, 0x007b, 0x007e, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, - 0x0499, 0x0001, 0x0083, 0x0001, 0x0085, 0x0002, 0x0027, 0x018c, - 0x32a8, 0x0004, 0x0097, 0x0091, 0x008e, 0x0094, 0x0001, 0x0001, - 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0002, 0x0860, 0x0004, 0x00a8, 0x00a2, 0x009f, 0x00a5, 0x0001, - // Entry 2A340 - 2A37F - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0037, 0x0000, 0x0000, 0x0000, 0x00e3, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e8, 0x0000, 0x0000, - 0x00ed, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f2, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x00f7, 0x0000, 0x0000, 0x0000, - 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 2A380 - 2A3BF - 0x00fc, 0x0000, 0x0101, 0x0001, 0x00e5, 0x0001, 0x003e, 0x0dce, - 0x0001, 0x00ea, 0x0001, 0x003e, 0x0dd6, 0x0001, 0x00ef, 0x0001, - 0x003e, 0x0dda, 0x0001, 0x00f4, 0x0001, 0x003e, 0x0de2, 0x0001, - 0x00f9, 0x0001, 0x003e, 0x0de7, 0x0001, 0x00fe, 0x0001, 0x0007, - 0x07cc, 0x0001, 0x0103, 0x0001, 0x003e, 0x0df7, 0x0004, 0x0000, - 0x0000, 0x0000, 0x010b, 0x0001, 0x010d, 0x0003, 0x0111, 0x0180, - 0x0144, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2A3C0 - 2A3FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ea, 0x1351, 0xffff, 0x13df, 0x003a, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2A400 - 2A43F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27c7, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2A440 - 2A47F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - 0x1355, 0xffff, 0x13e3, 0x0003, 0x0004, 0x0250, 0x0662, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x003e, - 0x0dfb, 0x0001, 0x003e, 0x0e12, 0x0001, 0x0016, 0x02aa, 0x0001, - 0x001e, 0x1a8e, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, - // Entry 2A480 - 2A4BF - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, - 0x0203, 0x021d, 0x022e, 0x023f, 0x0002, 0x0044, 0x0075, 0x0003, - 0x0048, 0x0057, 0x0066, 0x000d, 0x003e, 0xffff, 0x0e23, 0x0e2b, - 0x0e33, 0x0e3b, 0x0e43, 0x0e4a, 0x0e52, 0x0e5a, 0x0e62, 0x0e6a, - 0x0e72, 0x0e7a, 0x000d, 0x003e, 0xffff, 0x0e82, 0x0e85, 0x0e88, - 0x0e8b, 0x0e88, 0x0e8e, 0x0e8e, 0x0e8b, 0x0e91, 0x0e94, 0x0e97, - 0x0e9a, 0x000d, 0x0011, 0xffff, 0x0054, 0x0061, 0x0070, 0x0079, - // Entry 2A4C0 - 2A4FF - 0x38f8, 0x0086, 0x008f, 0x0098, 0x00a5, 0x00b6, 0x00c5, 0x00d2, - 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x003e, 0xffff, 0x0e9d, - 0x0ea4, 0x0eab, 0x0eb2, 0x0eb9, 0x0ec0, 0x0ec7, 0x0ece, 0x0ed5, - 0x0edc, 0x0ee3, 0x0eea, 0x000d, 0x003e, 0xffff, 0x0e82, 0x0e85, - 0x0e88, 0x0e8b, 0x0e88, 0x0e8e, 0x0e8e, 0x0e8b, 0x0e91, 0x0e94, - 0x0e97, 0x0e9a, 0x000d, 0x003e, 0xffff, 0x0ef1, 0x0efe, 0x0f0d, - 0x0f16, 0x0eb9, 0x0f23, 0x0f2c, 0x0f35, 0x0f42, 0x0f53, 0x0f62, - 0x0f6f, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, - // Entry 2A500 - 2A53F - 0x0000, 0x00c1, 0x0007, 0x003e, 0x0f7e, 0x0f86, 0x0f8e, 0x0f98, - 0x0fa2, 0x0fac, 0x0fb5, 0x0007, 0x0037, 0x13da, 0x2002, 0x13d4, - 0x13d4, 0x1597, 0x13da, 0x2005, 0x0007, 0x003e, 0x0f7e, 0x0f86, - 0x0f8e, 0x0f98, 0x0fa2, 0x0fac, 0x0fb5, 0x0007, 0x003e, 0x0fbd, - 0x0fce, 0x0fdf, 0x0ff0, 0x1001, 0x0fac, 0x1012, 0x0005, 0x00d9, - 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x003e, 0x0f7e, 0x0f86, - 0x0f8e, 0x0f98, 0x0fa2, 0x0fac, 0x0fb5, 0x0007, 0x0037, 0x13da, - 0x2002, 0x13d4, 0x13d4, 0x1597, 0x13da, 0x2005, 0x0007, 0x003e, - // Entry 2A540 - 2A57F - 0x101f, 0x1024, 0x102a, 0x1030, 0x1036, 0x103c, 0x1042, 0x0007, - 0x003e, 0x0fbd, 0x0fce, 0x0fdf, 0x0ff0, 0x1001, 0x0fac, 0x1012, - 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, - 0x003e, 0xffff, 0x1048, 0x1052, 0x105c, 0x1066, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x003e, 0xffff, - 0x1070, 0x107f, 0x108e, 0x109d, 0x0003, 0x011d, 0x0124, 0x012b, - 0x0005, 0x003e, 0xffff, 0x10ac, 0x10b2, 0x10b8, 0x10be, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x003e, - // Entry 2A580 - 2A5BF - 0xffff, 0x1070, 0x107f, 0x108e, 0x109d, 0x0002, 0x0135, 0x019c, - 0x0003, 0x0139, 0x015a, 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, - 0x014e, 0x0151, 0x0154, 0x0157, 0x0148, 0x0001, 0x003e, 0x10c4, - 0x0001, 0x003e, 0x10d8, 0x0001, 0x003e, 0x10dd, 0x0001, 0x003e, - 0x10eb, 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, 0x1106, 0x0001, - 0x003e, 0x111e, 0x0001, 0x003e, 0x112d, 0x0008, 0x0166, 0x016c, - 0x0163, 0x016f, 0x0172, 0x0175, 0x0178, 0x0169, 0x0001, 0x003e, - 0x1141, 0x0001, 0x003e, 0x10d8, 0x0001, 0x0008, 0x4eae, 0x0001, - // Entry 2A5C0 - 2A5FF - 0x003e, 0x10eb, 0x0001, 0x003e, 0x114f, 0x0001, 0x003e, 0x115d, - 0x0001, 0x003e, 0x116d, 0x0001, 0x0037, 0x175b, 0x0008, 0x0187, - 0x018d, 0x0184, 0x0190, 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, - 0x003e, 0x10c4, 0x0001, 0x003e, 0x1176, 0x0001, 0x003e, 0x10dd, - 0x0001, 0x003e, 0x1181, 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, - 0x1106, 0x0001, 0x003e, 0x111e, 0x0001, 0x003e, 0x112d, 0x0003, - 0x01a0, 0x01c1, 0x01e2, 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, - 0x01b8, 0x01bb, 0x01be, 0x01af, 0x0001, 0x003e, 0x10c4, 0x0001, - // Entry 2A600 - 2A63F - 0x003e, 0x10d8, 0x0001, 0x003e, 0x10dd, 0x0001, 0x003e, 0x10eb, - 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, 0x1106, 0x0001, 0x003e, - 0x119d, 0x0001, 0x0037, 0x175b, 0x0008, 0x01cd, 0x01d3, 0x01ca, - 0x01d6, 0x01d9, 0x01dc, 0x01df, 0x01d0, 0x0001, 0x003e, 0x10c4, - 0x0001, 0x003e, 0x10d8, 0x0001, 0x003e, 0x10dd, 0x0001, 0x003e, - 0x10eb, 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, 0x1106, 0x0001, - 0x003e, 0x119d, 0x0001, 0x0037, 0x175b, 0x0008, 0x01ee, 0x01f4, - 0x01eb, 0x01f7, 0x01fa, 0x01fd, 0x0200, 0x01f1, 0x0001, 0x003e, - // Entry 2A640 - 2A67F - 0x10c4, 0x0001, 0x003e, 0x1176, 0x0001, 0x003e, 0x10dd, 0x0001, - 0x003e, 0x1181, 0x0001, 0x003e, 0x10f0, 0x0001, 0x003e, 0x1106, - 0x0001, 0x003e, 0x119d, 0x0001, 0x0037, 0x175b, 0x0003, 0x0211, - 0x0217, 0x0207, 0x0002, 0x020a, 0x020e, 0x0002, 0x003e, 0x11ae, - 0x11df, 0x0001, 0x003e, 0x11d5, 0x0001, 0x0213, 0x0002, 0x003e, - 0x11d5, 0x11f7, 0x0001, 0x0219, 0x0002, 0x003e, 0x11d5, 0x11f7, - 0x0004, 0x022b, 0x0225, 0x0222, 0x0228, 0x0001, 0x003e, 0x11fe, - 0x0001, 0x003e, 0x1214, 0x0001, 0x003e, 0x1224, 0x0001, 0x0000, - // Entry 2A680 - 2A6BF - 0x237b, 0x0004, 0x023c, 0x0236, 0x0233, 0x0239, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x024d, 0x0247, 0x0244, 0x024a, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0040, 0x0291, 0x0000, 0x0000, 0x0296, - 0x02ad, 0x02c4, 0x02db, 0x02f2, 0x0309, 0x0320, 0x0337, 0x034e, - 0x0365, 0x0380, 0x039b, 0x0000, 0x0000, 0x0000, 0x03b6, 0x03cf, - 0x03e8, 0x0000, 0x0000, 0x0000, 0x0401, 0x0000, 0x0000, 0x0000, - // Entry 2A6C0 - 2A6FF - 0x0000, 0x0000, 0x0406, 0x041a, 0x042e, 0x0442, 0x0456, 0x046a, - 0x047e, 0x0492, 0x04a6, 0x04ba, 0x04ce, 0x04e2, 0x04f6, 0x050a, - 0x051e, 0x0532, 0x0546, 0x055a, 0x056e, 0x0582, 0x0596, 0x0000, - 0x05aa, 0x0000, 0x05af, 0x05c5, 0x05d7, 0x05e9, 0x05ff, 0x0611, - 0x0623, 0x0639, 0x064b, 0x065d, 0x0001, 0x0293, 0x0001, 0x003e, - 0x1233, 0x0003, 0x029a, 0x029d, 0x02a2, 0x0001, 0x0037, 0x1800, - 0x0003, 0x003e, 0x123e, 0x124b, 0x1256, 0x0002, 0x02a5, 0x02a9, - 0x0002, 0x003e, 0x126c, 0x126c, 0x0002, 0x003e, 0x1288, 0x1288, - // Entry 2A700 - 2A73F - 0x0003, 0x02b1, 0x02b4, 0x02b9, 0x0001, 0x0037, 0x1879, 0x0003, - 0x003e, 0x123e, 0x124b, 0x1256, 0x0002, 0x02bc, 0x02c0, 0x0002, - 0x003e, 0x129e, 0x129e, 0x0002, 0x003e, 0x1288, 0x1288, 0x0003, - 0x02c8, 0x02cb, 0x02d0, 0x0001, 0x0037, 0x1879, 0x0003, 0x003e, - 0x123e, 0x124b, 0x1256, 0x0002, 0x02d3, 0x02d7, 0x0002, 0x003e, - 0x129e, 0x129e, 0x0002, 0x003e, 0x1288, 0x1288, 0x0003, 0x02df, - 0x02e2, 0x02e7, 0x0001, 0x003e, 0x12b5, 0x0003, 0x003e, 0x12c2, - 0x12dc, 0x12f0, 0x0002, 0x02ea, 0x02ee, 0x0002, 0x003e, 0x130c, - // Entry 2A740 - 2A77F - 0x130c, 0x0002, 0x003e, 0x132e, 0x132e, 0x0003, 0x02f6, 0x02f9, - 0x02fe, 0x0001, 0x003e, 0x134a, 0x0003, 0x003e, 0x1354, 0x136b, - 0x137c, 0x0002, 0x0301, 0x0305, 0x0002, 0x003e, 0x130c, 0x130c, - 0x0002, 0x003e, 0x1395, 0x1395, 0x0003, 0x030d, 0x0310, 0x0315, - 0x0001, 0x003e, 0x134a, 0x0003, 0x003e, 0x1354, 0x136b, 0x137c, - 0x0002, 0x0318, 0x031c, 0x0002, 0x003e, 0x13ae, 0x13ae, 0x0002, - 0x003e, 0x1395, 0x1395, 0x0003, 0x0324, 0x0327, 0x032c, 0x0001, - 0x0037, 0x194e, 0x0003, 0x003e, 0x13c7, 0x13db, 0x13eb, 0x0002, - // Entry 2A780 - 2A7BF - 0x032f, 0x0333, 0x0002, 0x003e, 0x1401, 0x1401, 0x0002, 0x003e, - 0x141b, 0x141b, 0x0003, 0x033b, 0x033e, 0x0343, 0x0001, 0x0037, - 0x194e, 0x0003, 0x003e, 0x13c7, 0x13db, 0x13eb, 0x0002, 0x0346, - 0x034a, 0x0002, 0x003e, 0x142f, 0x142f, 0x0002, 0x003e, 0x141b, - 0x141b, 0x0003, 0x0352, 0x0355, 0x035a, 0x0001, 0x0037, 0x194e, - 0x0003, 0x003e, 0x13c7, 0x13db, 0x13eb, 0x0002, 0x035d, 0x0361, - 0x0002, 0x003e, 0x1446, 0x1446, 0x0002, 0x003e, 0x145b, 0x145b, - 0x0004, 0x036a, 0x036d, 0x0372, 0x037d, 0x0001, 0x0037, 0x19af, - // Entry 2A7C0 - 2A7FF - 0x0003, 0x003e, 0x146d, 0x1485, 0x149b, 0x0002, 0x0375, 0x0379, - 0x0002, 0x003e, 0x14b7, 0x14b7, 0x0002, 0x003e, 0x14d5, 0x14d5, - 0x0001, 0x003e, 0x14ed, 0x0004, 0x0385, 0x0388, 0x038d, 0x0398, - 0x0001, 0x003e, 0x1507, 0x0003, 0x003e, 0x150e, 0x1521, 0x1532, - 0x0002, 0x0390, 0x0394, 0x0002, 0x003e, 0x1549, 0x1549, 0x0002, - 0x003e, 0x1560, 0x1560, 0x0001, 0x003e, 0x14ed, 0x0004, 0x03a0, - 0x03a3, 0x03a8, 0x03b3, 0x0001, 0x003e, 0x1507, 0x0003, 0x003e, - 0x150e, 0x1521, 0x1532, 0x0002, 0x03ab, 0x03af, 0x0002, 0x003e, - // Entry 2A800 - 2A83F - 0x1549, 0x1549, 0x0002, 0x003e, 0x1560, 0x1560, 0x0001, 0x003e, - 0x14ed, 0x0003, 0x03ba, 0x03bd, 0x03c4, 0x0001, 0x0037, 0x1a69, - 0x0005, 0x003e, 0x158f, 0x159a, 0x15a5, 0x1577, 0x15b0, 0x0002, - 0x03c7, 0x03cb, 0x0002, 0x003e, 0x15c3, 0x15c3, 0x0002, 0x003e, - 0x15df, 0x15df, 0x0003, 0x03d3, 0x03d6, 0x03dd, 0x0001, 0x0037, - 0x1a69, 0x0005, 0x003e, 0x158f, 0x159a, 0x15a5, 0x1577, 0x15b0, - 0x0002, 0x03e0, 0x03e4, 0x0002, 0x003e, 0x15f5, 0x15f5, 0x0002, - 0x003e, 0x15df, 0x15df, 0x0003, 0x03ec, 0x03ef, 0x03f6, 0x0001, - // Entry 2A840 - 2A87F - 0x0037, 0x1a69, 0x0005, 0x003e, 0x158f, 0x159a, 0x15a5, 0x1577, - 0x15b0, 0x0002, 0x03f9, 0x03fd, 0x0002, 0x003e, 0x15f5, 0x15f5, - 0x0002, 0x003e, 0x15df, 0x15df, 0x0001, 0x0403, 0x0001, 0x003e, - 0x160c, 0x0003, 0x0000, 0x040a, 0x040f, 0x0003, 0x003e, 0x1624, - 0x1644, 0x1662, 0x0002, 0x0412, 0x0416, 0x0002, 0x003e, 0x1686, - 0x1686, 0x0002, 0x003e, 0x16ac, 0x16ac, 0x0003, 0x0000, 0x041e, - 0x0423, 0x0003, 0x003e, 0x16cc, 0x16e1, 0x16f4, 0x0002, 0x0426, - 0x042a, 0x0002, 0x003e, 0x170d, 0x170d, 0x0002, 0x003e, 0x172a, - // Entry 2A880 - 2A8BF - 0x172a, 0x0003, 0x0000, 0x0432, 0x0437, 0x0003, 0x003e, 0x16cc, - 0x16e1, 0x16f4, 0x0002, 0x043a, 0x043e, 0x0002, 0x003e, 0x170d, - 0x170d, 0x0002, 0x003e, 0x172a, 0x172a, 0x0003, 0x0000, 0x0446, - 0x044b, 0x0003, 0x003e, 0x1747, 0x1767, 0x1785, 0x0002, 0x044e, - 0x0452, 0x0002, 0x003e, 0x17a9, 0x17a9, 0x0002, 0x003e, 0x17cf, - 0x17cf, 0x0003, 0x0000, 0x045a, 0x045f, 0x0003, 0x003e, 0x17ef, - 0x1804, 0x1817, 0x0002, 0x0462, 0x0466, 0x0002, 0x003e, 0x1830, - 0x1830, 0x0002, 0x003e, 0x1847, 0x1847, 0x0003, 0x0000, 0x046e, - // Entry 2A8C0 - 2A8FF - 0x0473, 0x0003, 0x003e, 0x185e, 0x186f, 0x187e, 0x0002, 0x0476, - 0x047a, 0x0002, 0x003e, 0x1893, 0x1893, 0x0002, 0x003e, 0x18a6, - 0x18a6, 0x0003, 0x0000, 0x0482, 0x0487, 0x0003, 0x003e, 0x18b9, - 0x18d9, 0x18f7, 0x0002, 0x048a, 0x048e, 0x0002, 0x003e, 0x191b, - 0x191b, 0x0002, 0x003e, 0x1941, 0x1941, 0x0003, 0x0000, 0x0496, - 0x049b, 0x0003, 0x003e, 0x1961, 0x1976, 0x1989, 0x0002, 0x049e, - 0x04a2, 0x0002, 0x003e, 0x19a2, 0x19a2, 0x0002, 0x003e, 0x19b9, - 0x19b9, 0x0003, 0x0000, 0x04aa, 0x04af, 0x0003, 0x003e, 0x1961, - // Entry 2A900 - 2A93F - 0x1976, 0x1989, 0x0002, 0x04b2, 0x04b6, 0x0002, 0x003e, 0x19a2, - 0x19a2, 0x0002, 0x003e, 0x19b9, 0x19b9, 0x0003, 0x0000, 0x04be, - 0x04c3, 0x0003, 0x003e, 0x19d0, 0x19f0, 0x1a0e, 0x0002, 0x04c6, - 0x04ca, 0x0002, 0x003e, 0x1a32, 0x1a32, 0x0002, 0x003e, 0x1a58, - 0x1a58, 0x0003, 0x0000, 0x04d2, 0x04d7, 0x0003, 0x003e, 0x1a78, - 0x1a8d, 0x1aa0, 0x0002, 0x04da, 0x04de, 0x0002, 0x003e, 0x1ab9, - 0x1ab9, 0x0002, 0x003e, 0x1ad0, 0x1ad0, 0x0003, 0x0000, 0x04e6, - 0x04eb, 0x0003, 0x003e, 0x1ae7, 0x1af8, 0x1b07, 0x0002, 0x04ee, - // Entry 2A940 - 2A97F - 0x04f2, 0x0002, 0x003e, 0x1b1c, 0x1b1c, 0x0002, 0x003e, 0x1b2f, - 0x1b2f, 0x0003, 0x0000, 0x04fa, 0x04ff, 0x0003, 0x003e, 0x1b42, - 0x1b62, 0x1b80, 0x0002, 0x0502, 0x0506, 0x0002, 0x003e, 0x1ba4, - 0x1ba4, 0x0002, 0x003e, 0x1bca, 0x1bca, 0x0003, 0x0000, 0x050e, - 0x0513, 0x0003, 0x003e, 0x1bea, 0x1bff, 0x1c12, 0x0002, 0x0516, - 0x051a, 0x0002, 0x003e, 0x1c2b, 0x1c2b, 0x0002, 0x003e, 0x1c44, - 0x1c44, 0x0003, 0x0000, 0x0522, 0x0527, 0x0003, 0x003e, 0x1c5d, - 0x1c6e, 0x1c7d, 0x0002, 0x052a, 0x052e, 0x0002, 0x003e, 0x1c92, - // Entry 2A980 - 2A9BF - 0x1c92, 0x0002, 0x003e, 0x1ca5, 0x1ca5, 0x0003, 0x0000, 0x0536, - 0x053b, 0x0003, 0x003e, 0x1cb8, 0x1cd5, 0x1cf0, 0x0002, 0x053e, - 0x0542, 0x0002, 0x003e, 0x1d11, 0x1d11, 0x0002, 0x003e, 0x1d2f, - 0x1d2f, 0x0003, 0x0000, 0x054a, 0x054f, 0x0003, 0x003e, 0x1d47, - 0x1d47, 0x1d58, 0x0002, 0x0552, 0x0556, 0x0002, 0x003e, 0x1d6d, - 0x1d6d, 0x0002, 0x003e, 0x1d81, 0x1d81, 0x0003, 0x0000, 0x055e, - 0x0563, 0x0003, 0x003e, 0x1d93, 0x1da3, 0x1db1, 0x0002, 0x0566, - 0x056a, 0x0002, 0x003e, 0x1dc5, 0x1dc5, 0x0002, 0x003e, 0x1d81, - // Entry 2A9C0 - 2A9FF - 0x1d81, 0x0003, 0x0000, 0x0572, 0x0577, 0x0003, 0x003e, 0x1dd7, - 0x1df3, 0x1e0d, 0x0002, 0x057a, 0x057e, 0x0002, 0x003e, 0x1e2d, - 0x1e2d, 0x0002, 0x003e, 0x1e4f, 0x1e4f, 0x0003, 0x0000, 0x0586, - 0x058b, 0x0003, 0x003e, 0x1e6b, 0x1e7e, 0x1e8f, 0x0002, 0x058e, - 0x0592, 0x0002, 0x003e, 0x1ea6, 0x1ea6, 0x0002, 0x003e, 0x1ebd, - 0x1ebd, 0x0003, 0x0000, 0x059a, 0x059f, 0x0003, 0x003e, 0x1e6b, - 0x1e7e, 0x1e8f, 0x0002, 0x05a2, 0x05a6, 0x0002, 0x003e, 0x1ea6, - 0x1ea6, 0x0002, 0x003e, 0x1ebd, 0x1ebd, 0x0001, 0x05ac, 0x0001, - // Entry 2AA00 - 2AA3F - 0x003e, 0x1ed2, 0x0003, 0x05b3, 0x05b6, 0x05ba, 0x0001, 0x003e, - 0x1edc, 0x0002, 0x003e, 0xffff, 0x1ee5, 0x0002, 0x05bd, 0x05c1, - 0x0002, 0x003e, 0x1efb, 0x1efb, 0x0002, 0x003e, 0x1f19, 0x1f19, - 0x0003, 0x05c9, 0x0000, 0x05cc, 0x0001, 0x003e, 0x1f31, 0x0002, - 0x05cf, 0x05d3, 0x0002, 0x003e, 0x1f36, 0x1f36, 0x0002, 0x003e, - 0x1f4f, 0x1f4f, 0x0003, 0x05db, 0x0000, 0x05de, 0x0001, 0x003e, - 0x1f31, 0x0002, 0x05e1, 0x05e5, 0x0002, 0x003e, 0x1f68, 0x1f68, - 0x0002, 0x003e, 0x1f79, 0x1f79, 0x0003, 0x05ed, 0x05f0, 0x05f4, - // Entry 2AA40 - 2AA7F - 0x0001, 0x003e, 0x1f8a, 0x0002, 0x003e, 0xffff, 0x1f95, 0x0002, - 0x05f7, 0x05fb, 0x0002, 0x003e, 0x1fad, 0x1fad, 0x0002, 0x003e, - 0x1fcd, 0x1fcd, 0x0003, 0x0603, 0x0000, 0x0606, 0x0001, 0x003e, - 0x1fe7, 0x0002, 0x0609, 0x060d, 0x0002, 0x003f, 0x0000, 0x0000, - 0x0002, 0x003f, 0x0017, 0x0017, 0x0003, 0x0615, 0x0000, 0x0618, - 0x0001, 0x003f, 0x002e, 0x0002, 0x061b, 0x061f, 0x0002, 0x003f, - 0x0032, 0x0032, 0x0002, 0x003f, 0x0047, 0x0047, 0x0003, 0x0627, - 0x062a, 0x062e, 0x0001, 0x000f, 0x01e5, 0x0002, 0x003f, 0xffff, - // Entry 2AA80 - 2AABF - 0x005c, 0x0002, 0x0631, 0x0635, 0x0002, 0x003f, 0x0065, 0x0065, - 0x0002, 0x003f, 0x0087, 0x0087, 0x0003, 0x063d, 0x0000, 0x0640, - 0x0001, 0x0011, 0x0d52, 0x0002, 0x0643, 0x0647, 0x0002, 0x003f, - 0x00a3, 0x00a3, 0x0002, 0x003f, 0x00ba, 0x00ba, 0x0003, 0x064f, - 0x0000, 0x0652, 0x0001, 0x0011, 0x0d52, 0x0002, 0x0655, 0x0659, - 0x0002, 0x003f, 0x00d1, 0x00d1, 0x0002, 0x003f, 0x00e6, 0x00e6, - 0x0001, 0x065f, 0x0001, 0x003f, 0x00fb, 0x0004, 0x0667, 0x066c, - 0x0671, 0x067c, 0x0003, 0x0000, 0x1dc7, 0x29cf, 0x2a11, 0x0003, - // Entry 2AAC0 - 2AAFF - 0x003f, 0x0115, 0x012a, 0x0133, 0x0002, 0x0000, 0x0674, 0x0002, - 0x0000, 0x0677, 0x0003, 0x003f, 0xffff, 0x013c, 0x0169, 0x0002, - 0x0000, 0x067f, 0x0003, 0x0719, 0x07af, 0x0683, 0x0094, 0x003f, - 0x0194, 0x01ba, 0x01eb, 0x0214, 0x0268, 0x02ec, 0x035c, 0x03eb, - 0x04b8, 0x0575, 0x0637, 0xffff, 0x06eb, 0x0751, 0x07c3, 0x0850, - 0x08e4, 0x095c, 0x09f1, 0x0ab5, 0x0b7c, 0x0c1d, 0x0cb5, 0x0d2f, - 0x0d9d, 0x0df9, 0x0e15, 0x0e57, 0x0eb1, 0x0f09, 0x0f67, 0x0fa3, - 0x1007, 0x106d, 0x10db, 0x1137, 0x1168, 0x11bd, 0x1246, 0x12dd, - // Entry 2AB00 - 2AB3F - 0x1327, 0x1343, 0x136d, 0x13c1, 0x142d, 0x147e, 0x151d, 0x1583, - 0x15e8, 0x1687, 0x1727, 0x176f, 0x179c, 0x17e9, 0x180d, 0x1849, - 0x1899, 0x18b9, 0x1909, 0x19b2, 0x1a2a, 0x1a64, 0x1aab, 0x1b33, - 0x1ba1, 0x1be9, 0x1c05, 0x1c2a, 0x1c4e, 0x1c85, 0x1cb4, 0x1cfd, - 0x1d6b, 0x1ddb, 0x1e49, 0xffff, 0x1e95, 0x1ec4, 0x1f0f, 0x1f59, - 0x1f9d, 0x1ffd, 0x2023, 0x2075, 0x20cb, 0x210b, 0x215f, 0x2181, - 0x21a1, 0x21c3, 0x221c, 0x2274, 0x22ca, 0x2385, 0x242a, 0x24a6, - 0x24f6, 0x2516, 0x2532, 0x257b, 0x2614, 0x26a4, 0x270a, 0x2724, - // Entry 2AB40 - 2AB7F - 0x277a, 0x2824, 0x28a2, 0x290c, 0x2964, 0x2980, 0x29d4, 0x2a48, - 0x2acb, 0x2b53, 0x2bc1, 0x2c49, 0x2c6b, 0x2c89, 0x2ca7, 0x2cc7, - 0x2d05, 0xffff, 0x2d75, 0x2dc1, 0x2ddf, 0x2e01, 0x2e38, 0x2e63, - 0x2e85, 0x2e9f, 0x2ed9, 0x2f27, 0x2f4b, 0x2f87, 0x2fd3, 0x3015, - 0x3079, 0x30b7, 0x3131, 0x31ad, 0x3201, 0x324d, 0x32d5, 0x3331, - 0x334f, 0x3380, 0x33d0, 0x344a, 0x0094, 0x003f, 0xffff, 0xffff, - 0xffff, 0xffff, 0x023f, 0x02ce, 0x033e, 0x03ae, 0x047f, 0x0540, - 0x05f5, 0xffff, 0x06d1, 0x0733, 0x079f, 0x0821, 0x08c4, 0x0938, - // Entry 2AB80 - 2ABBF - 0x09ba, 0x0a73, 0x0b4d, 0x0bee, 0x0c8f, 0x0d15, 0x0d79, 0xffff, - 0xffff, 0x0e35, 0xffff, 0x0ee4, 0xffff, 0x0f87, 0x0fed, 0x1051, - 0x10b7, 0xffff, 0xffff, 0x119b, 0x1217, 0x12c3, 0xffff, 0xffff, - 0xffff, 0x1394, 0xffff, 0x144d, 0x14f4, 0xffff, 0x15bf, 0x164e, - 0x170d, 0xffff, 0xffff, 0xffff, 0xffff, 0x182b, 0xffff, 0xffff, - 0x18d8, 0x1981, 0xffff, 0xffff, 0x1a82, 0x1b13, 0x1b87, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ce3, 0x1d4b, 0x1dbd, - 0x1e2d, 0xffff, 0xffff, 0xffff, 0x1ef3, 0xffff, 0x1f77, 0xffff, - // Entry 2ABC0 - 2ABFF - 0xffff, 0x2054, 0xffff, 0x20eb, 0xffff, 0xffff, 0xffff, 0xffff, - 0x21fa, 0xffff, 0x2292, 0x2350, 0x2405, 0x2488, 0xffff, 0xffff, - 0xffff, 0x254e, 0x25e9, 0x267c, 0xffff, 0xffff, 0x2744, 0x27fc, - 0x2888, 0x28ea, 0xffff, 0xffff, 0x29b2, 0x2a2e, 0x2a92, 0xffff, - 0x2b88, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ce5, 0xffff, - 0x2d59, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2ebb, 0xffff, 0xffff, 0x2f6b, 0xffff, 0x2fed, 0xffff, 0x3097, - 0x310d, 0x318d, 0xffff, 0x3225, 0x32b1, 0xffff, 0xffff, 0xffff, - // Entry 2AC00 - 2AC3F - 0x33b2, 0x3420, 0x0094, 0x003f, 0xffff, 0xffff, 0xffff, 0xffff, - 0x029a, 0x0315, 0x0385, 0x0437, 0x04fc, 0x05b5, 0x0684, 0xffff, - 0x070e, 0x0778, 0x07f2, 0x088a, 0x090d, 0x098b, 0x0a31, 0x0b00, - 0x0bb4, 0x0c55, 0x0ce4, 0x0d52, 0x0dca, 0xffff, 0xffff, 0x0e84, - 0xffff, 0x0f37, 0xffff, 0x0fc6, 0x102c, 0x1092, 0x1108, 0xffff, - 0xffff, 0x11ea, 0x127e, 0x1302, 0xffff, 0xffff, 0xffff, 0x13f7, - 0xffff, 0x14b8, 0x154f, 0xffff, 0x161a, 0x16c9, 0x174a, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1870, 0xffff, 0xffff, 0x1945, 0x19ee, - // Entry 2AC40 - 2AC7F - 0xffff, 0xffff, 0x1adf, 0x1b5c, 0x1bc4, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1d20, 0x1d94, 0x1e04, 0x1e6e, 0xffff, - 0xffff, 0xffff, 0x1f34, 0xffff, 0x1fcc, 0xffff, 0xffff, 0x209f, - 0xffff, 0x2134, 0xffff, 0xffff, 0xffff, 0xffff, 0x2247, 0xffff, - 0x230d, 0x23c5, 0x2458, 0x24cd, 0xffff, 0xffff, 0xffff, 0x25b1, - 0x2648, 0x26d7, 0xffff, 0xffff, 0x27bb, 0x2855, 0x28c5, 0x2937, - 0xffff, 0xffff, 0x2a01, 0x2a6d, 0x2b0f, 0xffff, 0x2c05, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2d2e, 0xffff, 0x2d9a, 0xffff, - // Entry 2AC80 - 2ACBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2f00, 0xffff, - 0xffff, 0x2fac, 0xffff, 0x3046, 0xffff, 0x30e2, 0x315e, 0x31d6, - 0xffff, 0x327e, 0x3302, 0xffff, 0xffff, 0xffff, 0x33f7, 0x347d, - 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, - 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, - // Entry 2ACC0 - 2ACFF - 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, - 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0040, - 0xffff, 0x0000, 0x000a, 0x0011, 0x0018, 0x001f, 0x0029, 0x0031, - 0x003c, 0x0045, 0x004c, 0x0051, 0x0057, 0x000d, 0x0040, 0xffff, - 0x005f, 0x006c, 0x0076, 0x0080, 0x0089, 0x0097, 0x00a2, 0x00b0, - 0x00bc, 0x00c6, 0x00ce, 0x00d7, 0x0002, 0x0000, 0x0057, 0x000d, - 0x0000, 0xffff, 0x298c, 0x297e, 0x25bc, 0x2055, 0x2055, 0x2055, - 0x297a, 0x2485, 0x298e, 0x2055, 0x298e, 0x298e, 0x0002, 0x0069, - // Entry 2AD00 - 2AD3F - 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0040, 0x00e2, - 0x00e9, 0x00f0, 0x00f5, 0x00fc, 0x0100, 0x0104, 0x0007, 0x0040, - 0x010b, 0x0116, 0x0120, 0x0129, 0x0134, 0x013e, 0x0146, 0x0002, - 0x0000, 0x0082, 0x0007, 0x0000, 0x255c, 0x2992, 0x214e, 0x2990, - 0x2980, 0x2055, 0x297a, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, - 0x0098, 0x0005, 0x0040, 0xffff, 0x0151, 0x0158, 0x015f, 0x0166, - 0x0005, 0x0040, 0xffff, 0x016d, 0x0179, 0x0185, 0x0191, 0x0001, - 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, - // Entry 2AD40 - 2AD7F - 0x0001, 0x0040, 0x019d, 0x0001, 0x0040, 0x01a1, 0x0002, 0x00b1, - 0x00b4, 0x0001, 0x0040, 0x019d, 0x0001, 0x0040, 0x01a1, 0x0003, - 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0040, 0x01a5, - 0x01be, 0x0001, 0x00c3, 0x0002, 0x0040, 0x01d5, 0x01d9, 0x0004, - 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, - 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - // Entry 2AD80 - 2ADBF - 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, - 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, - // Entry 2ADC0 - 2ADFF - 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x0040, 0x01dc, 0x0001, - 0x0131, 0x0001, 0x0040, 0x01e7, 0x0001, 0x0136, 0x0001, 0x0040, - 0x01ef, 0x0001, 0x013b, 0x0001, 0x0040, 0x01f7, 0x0002, 0x0141, - 0x0144, 0x0001, 0x0040, 0x01fe, 0x0003, 0x0040, 0x0204, 0x020a, - 0x0211, 0x0001, 0x014b, 0x0001, 0x0040, 0x021d, 0x0001, 0x0150, - 0x0001, 0x0040, 0x022c, 0x0001, 0x0155, 0x0001, 0x0040, 0x0240, - 0x0001, 0x015a, 0x0001, 0x0040, 0x0245, 0x0001, 0x015f, 0x0001, - 0x0040, 0x024d, 0x0001, 0x0164, 0x0001, 0x0040, 0x0257, 0x0003, - // Entry 2AE00 - 2AE3F - 0x0004, 0x024d, 0x050e, 0x0012, 0x0017, 0x0024, 0x0000, 0x005a, - 0x0000, 0x0000, 0x007f, 0x00aa, 0x020d, 0x0000, 0x021a, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0227, 0x0000, 0x023f, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, - 0x0001, 0x0000, 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0049, 0x0000, 0x0000, 0x0000, 0x002f, 0x0006, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0036, 0x0001, 0x0038, 0x0001, - 0x003a, 0x000d, 0x001b, 0xffff, 0x00cd, 0x278e, 0x2793, 0x2799, - // Entry 2AE40 - 2AE7F - 0x27a6, 0x27ad, 0x27b6, 0x27bd, 0x27c3, 0x27c6, 0x27cb, 0x27d0, - 0x0004, 0x0057, 0x0051, 0x004e, 0x0054, 0x0001, 0x0016, 0x0288, - 0x0001, 0x0016, 0x0298, 0x0001, 0x0016, 0x02a2, 0x0001, 0x0007, - 0x0277, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0065, 0x0006, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x006c, 0x0001, 0x006e, 0x0001, 0x0070, 0x000d, - 0x001b, 0xffff, 0x00cd, 0x278e, 0x2793, 0x2799, 0x27a6, 0x27ad, - 0x27b6, 0x27bd, 0x27c3, 0x27c6, 0x27cb, 0x27d0, 0x0008, 0x0000, - // Entry 2AE80 - 2AEBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0088, 0x0000, 0x0099, 0x0004, - 0x0096, 0x0090, 0x008d, 0x0093, 0x0001, 0x0013, 0x06bb, 0x0001, - 0x0013, 0x0477, 0x0001, 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, - 0x0004, 0x00a7, 0x00a1, 0x009e, 0x00a4, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0008, 0x00b3, 0x0118, 0x016f, 0x01a4, 0x01c5, 0x01da, - 0x01eb, 0x01fc, 0x0002, 0x00b6, 0x00e7, 0x0003, 0x00ba, 0x00c9, - 0x00d8, 0x000d, 0x0000, 0xffff, 0x1e22, 0x2a15, 0x2a1a, 0x2a20, - // Entry 2AEC0 - 2AEFF - 0x2a25, 0x2a29, 0x2a2e, 0x2350, 0x2355, 0x2a02, 0x2a07, 0x2a0c, - 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, - 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, - 0x0016, 0xffff, 0x02c1, 0x2ba1, 0x2bfd, 0x2c04, 0x2c0c, 0x2c10, - 0x2c15, 0x2c1a, 0x2c21, 0x2c2b, 0x2c33, 0x2c3c, 0x0003, 0x00eb, - 0x00fa, 0x0109, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x2365, - 0x2326, 0x236a, 0x224e, 0x22d4, 0x2112, 0x22dc, 0x234a, 0x22e0, - 0x2212, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, - // Entry 2AF00 - 2AF3F - 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, - 0x000d, 0x0016, 0xffff, 0x02c1, 0x2ba1, 0x2bfd, 0x2c04, 0x2c45, - 0x2c10, 0x2c15, 0x2c1a, 0x2c21, 0x2c2b, 0x2c33, 0x2c3c, 0x0002, - 0x011b, 0x0145, 0x0005, 0x0121, 0x012a, 0x013c, 0x0000, 0x0133, - 0x0007, 0x0040, 0x026e, 0x0273, 0x0279, 0x027f, 0x0285, 0x028a, - 0x028f, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x297a, 0x297c, - 0x298c, 0x298e, 0x0007, 0x0000, 0x1ebf, 0x2a33, 0x2a38, 0x2a3d, - 0x1ecf, 0x2a42, 0x2a46, 0x0007, 0x0040, 0x0294, 0x029c, 0x02a5, - // Entry 2AF40 - 2AF7F - 0x02b0, 0x02ba, 0x02c6, 0x02ce, 0x0005, 0x014b, 0x0154, 0x0166, - 0x0000, 0x015d, 0x0007, 0x0040, 0x02d8, 0x02dc, 0x02e1, 0x02e6, - 0x02eb, 0x02ef, 0x02f3, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, - 0x297a, 0x297c, 0x298c, 0x298e, 0x0007, 0x0000, 0x1ebf, 0x2a33, - 0x2a38, 0x2a3d, 0x1ecf, 0x2a42, 0x2a46, 0x0007, 0x0040, 0x0294, - 0x029c, 0x02a5, 0x02b0, 0x02ba, 0x02c6, 0x02ce, 0x0002, 0x0172, - 0x018b, 0x0003, 0x0176, 0x017d, 0x0184, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, 0x0033, - // Entry 2AF80 - 2AFBF - 0x0035, 0x0037, 0x2335, 0x0005, 0x0016, 0xffff, 0x036a, 0x0375, - 0x0380, 0x038b, 0x0003, 0x018f, 0x0196, 0x019d, 0x0005, 0x0000, - 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0016, 0xffff, 0x036a, - 0x0375, 0x0380, 0x038b, 0x0001, 0x01a6, 0x0003, 0x01aa, 0x01b3, - 0x01bc, 0x0002, 0x01ad, 0x01b0, 0x0001, 0x0040, 0x02f7, 0x0001, - 0x0040, 0x02fd, 0x0002, 0x01b6, 0x01b9, 0x0001, 0x001b, 0x03f4, - 0x0001, 0x0040, 0x0307, 0x0002, 0x01bf, 0x01c2, 0x0001, 0x0040, - // Entry 2AFC0 - 2AFFF - 0x02f7, 0x0001, 0x0040, 0x02fd, 0x0003, 0x01cf, 0x0000, 0x01c9, - 0x0001, 0x01cb, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x01d2, - 0x01d6, 0x0002, 0x0016, 0x0413, 0x0434, 0x0002, 0x0040, 0x030e, - 0x0317, 0x0004, 0x01e8, 0x01e2, 0x01df, 0x01e5, 0x0001, 0x0016, - 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, 0x0001, - 0x0007, 0x0277, 0x0004, 0x01f9, 0x01f3, 0x01f0, 0x01f6, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x020a, 0x0204, 0x0201, 0x0207, - // Entry 2B000 - 2B03F - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0213, 0x0001, 0x0215, 0x0001, 0x0217, 0x0001, 0x0000, - 0x04ef, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0220, 0x0001, - 0x0222, 0x0001, 0x0224, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x022e, 0x0004, 0x023c, 0x0236, - 0x0233, 0x0239, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, - 0x0001, 0x0016, 0x02aa, 0x0001, 0x0013, 0x048d, 0x0005, 0x0000, - // Entry 2B040 - 2B07F - 0x0000, 0x0000, 0x0000, 0x0245, 0x0001, 0x0247, 0x0001, 0x0249, - 0x0002, 0x0000, 0x1a20, 0x2a4a, 0x0040, 0x028e, 0x0000, 0x0000, - 0x0293, 0x02aa, 0x02bc, 0x02ce, 0x02e0, 0x02f2, 0x0304, 0x031b, - 0x032d, 0x033f, 0x0356, 0x0368, 0x0000, 0x0000, 0x0000, 0x037a, - 0x0391, 0x03a3, 0x0000, 0x0000, 0x0000, 0x03b5, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x03ba, 0x03c2, 0x03ca, 0x03d2, 0x03da, - 0x03e2, 0x03ea, 0x03f2, 0x03fa, 0x0402, 0x040a, 0x0412, 0x041a, - 0x0422, 0x042a, 0x0432, 0x043a, 0x0442, 0x044a, 0x0452, 0x045a, - // Entry 2B080 - 2B0BF - 0x0000, 0x0462, 0x0000, 0x0467, 0x0479, 0x048b, 0x049d, 0x04af, - 0x04c1, 0x04d3, 0x04e5, 0x04f7, 0x0509, 0x0001, 0x0290, 0x0001, - 0x0040, 0x0320, 0x0003, 0x0297, 0x029a, 0x029f, 0x0001, 0x0040, - 0x0326, 0x0003, 0x0040, 0x032b, 0x0337, 0x0342, 0x0002, 0x02a2, - 0x02a6, 0x0002, 0x0040, 0x035b, 0x034f, 0x0002, 0x0040, 0x0378, - 0x0369, 0x0003, 0x02ae, 0x0000, 0x02b1, 0x0001, 0x003e, 0x06b1, - 0x0002, 0x02b4, 0x02b8, 0x0002, 0x0040, 0x0393, 0x0389, 0x0002, - 0x0040, 0x03ac, 0x039f, 0x0003, 0x02c0, 0x0000, 0x02c3, 0x0001, - // Entry 2B0C0 - 2B0FF - 0x003e, 0x06b1, 0x0002, 0x02c6, 0x02ca, 0x0002, 0x0040, 0x03bb, - 0x03bb, 0x0002, 0x0040, 0x03c3, 0x03c3, 0x0003, 0x02d2, 0x0000, - 0x02d5, 0x0001, 0x0016, 0x04e2, 0x0002, 0x02d8, 0x02dc, 0x0002, - 0x0040, 0x03da, 0x03cb, 0x0002, 0x0040, 0x03ff, 0x03ed, 0x0003, - 0x02e4, 0x0000, 0x02e7, 0x0001, 0x003e, 0x06bd, 0x0002, 0x02ea, - 0x02ee, 0x0002, 0x0040, 0x041f, 0x0415, 0x0002, 0x0040, 0x0438, - 0x042b, 0x0003, 0x02f6, 0x0000, 0x02f9, 0x0001, 0x003e, 0x06bd, - 0x0002, 0x02fc, 0x0300, 0x0002, 0x0040, 0x0447, 0x0447, 0x0002, - // Entry 2B100 - 2B13F - 0x0040, 0x044f, 0x044f, 0x0003, 0x0308, 0x030b, 0x0310, 0x0001, - 0x0040, 0x0457, 0x0003, 0x0040, 0x045d, 0x046b, 0x0477, 0x0002, - 0x0313, 0x0317, 0x0002, 0x0040, 0x0493, 0x0486, 0x0002, 0x0040, - 0x04b3, 0x04a3, 0x0003, 0x031f, 0x0000, 0x0322, 0x0001, 0x001c, - 0x010c, 0x0002, 0x0325, 0x0329, 0x0002, 0x0040, 0x04d0, 0x04c6, - 0x0002, 0x0040, 0x04e9, 0x04dc, 0x0003, 0x0331, 0x0000, 0x0334, - 0x0001, 0x001c, 0x010c, 0x0002, 0x0337, 0x033b, 0x0002, 0x0040, - 0x04f8, 0x04f8, 0x0002, 0x0040, 0x0500, 0x0500, 0x0003, 0x0343, - // Entry 2B140 - 2B17F - 0x0346, 0x034b, 0x0001, 0x003e, 0x06ef, 0x0003, 0x0040, 0x0508, - 0x0514, 0x051e, 0x0002, 0x034e, 0x0352, 0x0002, 0x0040, 0x0537, - 0x052b, 0x0002, 0x0040, 0x0556, 0x0547, 0x0003, 0x035a, 0x0000, - 0x035d, 0x0001, 0x001c, 0x0113, 0x0002, 0x0360, 0x0364, 0x0002, - 0x0040, 0x0573, 0x0569, 0x0002, 0x0040, 0x058c, 0x057f, 0x0003, - 0x036c, 0x0000, 0x036f, 0x0001, 0x001c, 0x0113, 0x0002, 0x0372, - 0x0376, 0x0002, 0x0040, 0x059b, 0x059b, 0x0002, 0x0040, 0x05a3, - 0x05a3, 0x0003, 0x037e, 0x0381, 0x0386, 0x0001, 0x0040, 0x05ab, - // Entry 2B180 - 2B1BF - 0x0003, 0x0040, 0x05af, 0x05b9, 0x05be, 0x0002, 0x0389, 0x038d, - 0x0002, 0x0040, 0x05ce, 0x05c3, 0x0002, 0x0040, 0x05ea, 0x05dc, - 0x0003, 0x0395, 0x0000, 0x0398, 0x0001, 0x003e, 0x0747, 0x0002, - 0x039b, 0x039f, 0x0002, 0x0040, 0x0605, 0x05fb, 0x0002, 0x0040, - 0x061e, 0x0611, 0x0003, 0x03a7, 0x0000, 0x03aa, 0x0001, 0x003e, - 0x0747, 0x0002, 0x03ad, 0x03b1, 0x0002, 0x0040, 0x062d, 0x062d, - 0x0002, 0x0040, 0x0635, 0x0635, 0x0001, 0x03b7, 0x0001, 0x0040, - 0x063d, 0x0002, 0x0000, 0x03bd, 0x0003, 0x0040, 0x0647, 0x0657, - // Entry 2B1C0 - 2B1FF - 0x0665, 0x0002, 0x0000, 0x03c5, 0x0003, 0x0040, 0x0676, 0x0683, - 0x068e, 0x0002, 0x0000, 0x03cd, 0x0003, 0x0040, 0x069c, 0x06a8, - 0x06b2, 0x0002, 0x0000, 0x03d5, 0x0003, 0x0040, 0x06bf, 0x06d0, - 0x06df, 0x0002, 0x0000, 0x03dd, 0x0003, 0x0040, 0x06f1, 0x06ff, - 0x070b, 0x0002, 0x0000, 0x03e5, 0x0003, 0x0040, 0x071a, 0x0727, - 0x0732, 0x0002, 0x0000, 0x03ed, 0x0003, 0x0040, 0x0740, 0x0754, - 0x0766, 0x0002, 0x0000, 0x03f5, 0x0003, 0x0040, 0x077b, 0x0789, - 0x0795, 0x0002, 0x0000, 0x03fd, 0x0003, 0x0040, 0x077b, 0x0789, - // Entry 2B200 - 2B23F - 0x0795, 0x0002, 0x0000, 0x0405, 0x0003, 0x0040, 0x07a4, 0x07b6, - 0x07c6, 0x0002, 0x0000, 0x040d, 0x0003, 0x0040, 0x07d9, 0x07e7, - 0x07f3, 0x0002, 0x0000, 0x0415, 0x0003, 0x0040, 0x0802, 0x080f, - 0x081a, 0x0002, 0x0000, 0x041d, 0x0003, 0x0040, 0x0828, 0x083d, - 0x0850, 0x0002, 0x0000, 0x0425, 0x0003, 0x0040, 0x0866, 0x0874, - 0x0880, 0x0002, 0x0000, 0x042d, 0x0003, 0x0040, 0x088f, 0x089c, - 0x08a7, 0x0002, 0x0000, 0x0435, 0x0003, 0x0040, 0x08b5, 0x08c5, - 0x08d3, 0x0002, 0x0000, 0x043d, 0x0003, 0x0040, 0x08e4, 0x08f1, - // Entry 2B240 - 2B27F - 0x08fc, 0x0002, 0x0000, 0x0445, 0x0003, 0x0040, 0x090a, 0x0916, - 0x0920, 0x0002, 0x0000, 0x044d, 0x0003, 0x0040, 0x092d, 0x093f, - 0x094f, 0x0002, 0x0000, 0x0455, 0x0003, 0x0040, 0x0962, 0x096f, - 0x097a, 0x0002, 0x0000, 0x045d, 0x0003, 0x0040, 0x0988, 0x0994, - 0x099e, 0x0001, 0x0464, 0x0001, 0x0040, 0x09ab, 0x0003, 0x046b, - 0x0000, 0x046e, 0x0001, 0x0040, 0x09bb, 0x0002, 0x0471, 0x0475, - 0x0002, 0x0040, 0x09ce, 0x09c1, 0x0002, 0x0040, 0x09ef, 0x09df, - 0x0003, 0x047d, 0x0000, 0x0480, 0x0001, 0x0040, 0x0a03, 0x0002, - // Entry 2B280 - 2B2BF - 0x0483, 0x0487, 0x0002, 0x0040, 0x0a12, 0x0a07, 0x0002, 0x0040, - 0x0a2d, 0x0a1f, 0x0003, 0x048f, 0x0000, 0x0492, 0x0001, 0x0040, - 0x0a03, 0x0002, 0x0495, 0x0499, 0x0002, 0x0040, 0x0a3d, 0x0a3d, - 0x0002, 0x0040, 0x0a46, 0x0a46, 0x0003, 0x04a1, 0x0000, 0x04a4, - 0x0001, 0x0040, 0x0a4f, 0x0002, 0x04a7, 0x04ab, 0x0002, 0x0040, - 0x0a64, 0x0a56, 0x0002, 0x0040, 0x0a87, 0x0a76, 0x0003, 0x04b3, - 0x0000, 0x04b6, 0x0001, 0x0016, 0x0f87, 0x0002, 0x04b9, 0x04bd, - 0x0002, 0x0040, 0x0aa8, 0x0a9c, 0x0002, 0x0040, 0x0ac5, 0x0ab6, - // Entry 2B2C0 - 2B2FF - 0x0003, 0x04c5, 0x0000, 0x04c8, 0x0001, 0x0016, 0x0f87, 0x0002, - 0x04cb, 0x04cf, 0x0002, 0x0032, 0x055e, 0x055e, 0x0002, 0x0032, - 0x0568, 0x0568, 0x0003, 0x04d7, 0x0000, 0x04da, 0x0001, 0x0040, - 0x0ad6, 0x0002, 0x04dd, 0x04e1, 0x0002, 0x0040, 0x0aeb, 0x0add, - 0x0002, 0x0040, 0x0b0e, 0x0afd, 0x0003, 0x04e9, 0x0000, 0x04ec, - 0x0001, 0x0016, 0x0ffe, 0x0002, 0x04ef, 0x04f3, 0x0002, 0x0040, - 0x0b2f, 0x0b23, 0x0002, 0x0040, 0x0b4c, 0x0b3d, 0x0003, 0x04fb, - 0x0000, 0x04fe, 0x0001, 0x0016, 0x0ffe, 0x0002, 0x0501, 0x0505, - // Entry 2B300 - 2B33F - 0x0002, 0x0040, 0x0b5d, 0x0b5d, 0x0002, 0x0040, 0x0b67, 0x0b67, - 0x0001, 0x050b, 0x0001, 0x0040, 0x0b71, 0x0004, 0x0513, 0x0518, - 0x051d, 0x0528, 0x0003, 0x0000, 0x1dc7, 0x29cf, 0x2a11, 0x0003, - 0x0040, 0x0b7a, 0x0b84, 0x0b94, 0x0002, 0x0000, 0x0520, 0x0002, - 0x0000, 0x0523, 0x0003, 0x0040, 0xffff, 0x0ba4, 0x0bb9, 0x0002, - 0x0000, 0x052b, 0x0003, 0x052f, 0x0663, 0x05c9, 0x0098, 0x0040, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0c4f, 0x0c9d, 0x0d03, 0x0d3c, - 0x0da1, 0x0e12, 0x0e5d, 0x0ed1, 0xffff, 0x0f04, 0x0f3d, 0x0f82, - // Entry 2B340 - 2B37F - 0x0fd3, 0x100f, 0x1048, 0x109f, 0x1108, 0x1153, 0x11a1, 0x11f5, - 0x1228, 0xffff, 0xffff, 0x128a, 0xffff, 0x12d3, 0xffff, 0x131e, - 0x1354, 0x1393, 0x13d2, 0xffff, 0xffff, 0x143d, 0x1485, 0x14c7, - 0xffff, 0xffff, 0xffff, 0x1537, 0xffff, 0x1594, 0x15eb, 0xffff, - 0x1636, 0x1684, 0x16d2, 0xffff, 0xffff, 0xffff, 0xffff, 0x176d, - 0xffff, 0xffff, 0x17d8, 0x181d, 0xffff, 0xffff, 0x1888, 0x18d3, - 0x190f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x19b4, - 0x19ed, 0x1a23, 0x1a62, 0x1a9e, 0xffff, 0xffff, 0x1b09, 0xffff, - // Entry 2B380 - 2B3BF - 0x1b55, 0xffff, 0xffff, 0x1bbd, 0xffff, 0x1c0e, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1c8a, 0xffff, 0x1cd3, 0x1d21, 0x1d7a, 0x1dbc, - 0xffff, 0xffff, 0xffff, 0x1e21, 0x1e6c, 0x1eae, 0xffff, 0xffff, - 0x1f10, 0x1f6a, 0x1fac, 0x1fd9, 0xffff, 0xffff, 0x2040, 0x208b, - 0x20ca, 0xffff, 0x212a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x21d0, 0x2209, 0x223c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x22e5, 0xffff, 0xffff, 0x233a, 0xffff, 0x2385, - 0xffff, 0x23d7, 0x241e, 0x245d, 0xffff, 0x24a3, 0x24e5, 0xffff, - // Entry 2B3C0 - 2B3FF - 0xffff, 0xffff, 0x2555, 0x258b, 0xffff, 0xffff, 0x0bcc, 0x0cd0, - 0x0098, 0x0040, 0x0bf9, 0x0c0b, 0x0c24, 0x0c39, 0x0c65, 0x0caa, - 0x0d12, 0x0d59, 0x0dc2, 0x0e27, 0x0e7f, 0x0ede, 0xffff, 0x0f13, - 0x0f50, 0x0f99, 0x0fe3, 0x101e, 0x1061, 0x10be, 0x111d, 0x1169, - 0x11b9, 0x1202, 0x123a, 0x126a, 0x1277, 0x129a, 0x12c6, 0x12e3, - 0x130f, 0x132c, 0x1365, 0x13a4, 0x13e3, 0x1411, 0x142a, 0x1451, - 0x1497, 0x14d7, 0x1503, 0x150f, 0x1528, 0x154b, 0x157f, 0x15ad, - 0x1600, 0xffff, 0x164c, 0x169a, 0x16e0, 0x1708, 0x1722, 0x174f, - // Entry 2B400 - 2B43F - 0x175f, 0x177d, 0x17a9, 0x17bf, 0x17eb, 0x1831, 0x1870, 0x187b, - 0x189d, 0x18e3, 0x191a, 0x193c, 0x194a, 0x1960, 0x1970, 0x1989, - 0x199e, 0x19c3, 0x19fb, 0x1a34, 0x1a72, 0x1ab0, 0x1ae0, 0x1af4, - 0x1b1a, 0x1b48, 0x1b67, 0x1b97, 0x1ba9, 0x1bcd, 0x1bf9, 0x1c1c, - 0x1c44, 0x1c55, 0x1c64, 0x1c74, 0x1c9a, 0x1cc6, 0x1ce9, 0x1d3a, - 0x1d8c, 0x1dcb, 0x1df5, 0x1e03, 0x1e0f, 0x1e36, 0x1e7e, 0x1ec0, - 0x1ef0, 0x1efb, 0x1f2a, 0x1f7c, 0x1fb7, 0x1fec, 0x201e, 0x202a, - 0x2055, 0x209c, 0x20df, 0x2115, 0x2148, 0x2190, 0x21a6, 0xffff, - // Entry 2B440 - 2B47F - 0x21b3, 0x21c2, 0x21df, 0x2216, 0x2248, 0x226c, 0x227d, 0x2294, - 0x22a9, 0x22bd, 0x22cc, 0x22d8, 0x22f2, 0x2318, 0x232c, 0x234b, - 0x2379, 0x2398, 0x23ca, 0x23eb, 0x242f, 0x246b, 0x2493, 0x24b5, - 0x24f5, 0x2521, 0x252e, 0x253f, 0x2563, 0x25a0, 0x1865, 0xffff, - 0x0bd7, 0x0cdd, 0x0098, 0x0040, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0c81, 0x0cbd, 0x0d27, 0x0d7d, 0x0dea, 0x0e42, 0x0ea8, 0x0ef1, - 0xffff, 0x0f28, 0x0f69, 0x0fb6, 0x0ff9, 0x1033, 0x1080, 0x10e3, - 0x1138, 0x1185, 0x11d7, 0x1215, 0x1252, 0xffff, 0xffff, 0x12b0, - // Entry 2B480 - 2B4BF - 0xffff, 0x12f9, 0xffff, 0x1340, 0x137c, 0x13bb, 0x13fa, 0xffff, - 0xffff, 0x146b, 0x14af, 0x14ed, 0xffff, 0xffff, 0xffff, 0x1565, - 0xffff, 0x15cc, 0x161b, 0xffff, 0x1668, 0x16b6, 0x16f4, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1793, 0xffff, 0xffff, 0x1804, 0x184b, - 0xffff, 0xffff, 0x18b8, 0x18f9, 0x192b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x19d8, 0x1a0f, 0x1a4b, 0x1a88, 0x1ac8, - 0xffff, 0xffff, 0x1b31, 0xffff, 0x1b7f, 0xffff, 0xffff, 0x1be3, - 0xffff, 0x1c30, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cb0, 0xffff, - // Entry 2B4C0 - 2B4FF - 0x1d05, 0x1d5a, 0x1da4, 0x1de0, 0xffff, 0xffff, 0xffff, 0x1e51, - 0x1e96, 0x1ed8, 0xffff, 0xffff, 0x1f4a, 0x1f94, 0x1fc8, 0x2005, - 0xffff, 0xffff, 0x2070, 0x20b3, 0x20fa, 0xffff, 0x216c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x21f4, 0x2229, 0x225a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2305, 0xffff, - 0xffff, 0x2362, 0xffff, 0x23b1, 0xffff, 0x2404, 0x2446, 0x247f, - 0xffff, 0x24cd, 0x250b, 0xffff, 0xffff, 0xffff, 0x2577, 0x25bb, - 0xffff, 0xffff, 0x0be8, 0x0cf0, 0x0002, 0x0003, 0x00d1, 0x0008, - // Entry 2B500 - 2B53F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x0000, 0x009f, - 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, - 0x2372, 0x2376, 0x237a, 0x22d4, 0x222e, 0x237e, 0x2382, 0x22e0, - // Entry 2B540 - 2B57F - 0x21e2, 0x000d, 0x0041, 0xffff, 0x0000, 0x000a, 0x0014, 0x001b, - 0x0021, 0x0027, 0x002d, 0x0035, 0x003d, 0x0048, 0x0051, 0x0059, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, - 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, - 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x0032, 0x012a, 0x2705, 0x2709, 0x270d, 0x2711, - 0x2715, 0x2719, 0x0007, 0x0041, 0x0061, 0x006a, 0x0071, 0x007b, - 0x0085, 0x008d, 0x0098, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - // Entry 2B580 - 2B5BF - 0x298e, 0x24f9, 0x2994, 0x2994, 0x2994, 0x2994, 0x2994, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0041, 0xffff, - 0x00a3, 0x00a8, 0x00ad, 0x00b2, 0x0005, 0x0041, 0xffff, 0x00b7, - 0x00c1, 0x00cb, 0x00d5, 0x0003, 0x00a9, 0x0000, 0x00a3, 0x0001, - 0x00a5, 0x0002, 0x0041, 0x00df, 0x00f4, 0x0001, 0x00ab, 0x0002, - 0x0009, 0x0078, 0x5463, 0x0004, 0x00bd, 0x00b7, 0x00b4, 0x00ba, - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00ce, 0x00c8, 0x00c5, - // Entry 2B5C0 - 2B5FF - 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0112, 0x0000, - 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, - 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, - 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 2B600 - 2B63F - 0x0000, 0x0000, 0x0136, 0x0000, 0x013b, 0x0000, 0x0000, 0x0140, - 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0001, 0x0114, - 0x0001, 0x0041, 0x0109, 0x0001, 0x0119, 0x0001, 0x0005, 0x0787, - 0x0001, 0x011e, 0x0001, 0x0041, 0x0111, 0x0001, 0x0123, 0x0001, - 0x0041, 0x0061, 0x0002, 0x0129, 0x012c, 0x0001, 0x0041, 0x0117, - 0x0003, 0x0041, 0x011e, 0x0124, 0x012d, 0x0001, 0x0133, 0x0001, - 0x0041, 0x0132, 0x0001, 0x0138, 0x0001, 0x0007, 0x07cc, 0x0001, - 0x013d, 0x0001, 0x0041, 0x014b, 0x0001, 0x0142, 0x0001, 0x0041, - // Entry 2B640 - 2B67F - 0x0151, 0x0001, 0x0147, 0x0001, 0x0041, 0x0159, 0x0001, 0x014c, - 0x0001, 0x0041, 0x0163, 0x0002, 0x0003, 0x007b, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0024, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, - 0x001b, 0x0018, 0x001e, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, - 0x0012, 0x0001, 0x000c, 0x001e, 0x0001, 0x0012, 0x0203, 0x0007, - 0x002c, 0x0041, 0x0000, 0x0000, 0x0000, 0x0059, 0x006a, 0x0001, - 0x002e, 0x0003, 0x0000, 0x0000, 0x0032, 0x000d, 0x0041, 0xffff, - // Entry 2B680 - 2B6BF - 0x016e, 0x017f, 0x0193, 0x01aa, 0x01bb, 0x01cf, 0x01e7, 0x01fb, - 0x020b, 0x021e, 0x0235, 0x0243, 0x0001, 0x0043, 0x0003, 0x0000, - 0x0047, 0x0050, 0x0007, 0x0000, 0x2980, 0x2159, 0x297e, 0x23db, - 0x2992, 0x22db, 0x2990, 0x0007, 0x0041, 0x0257, 0x0268, 0x0278, - 0x0287, 0x0295, 0x02a2, 0x02b2, 0x0004, 0x0067, 0x0061, 0x005e, - 0x0064, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, 0x0001, - 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, 0x0078, 0x0072, - 0x006f, 0x0075, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - // Entry 2B6C0 - 2B6FF - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, 0x0000, - 0x0000, 0x0000, 0x00b9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00ce, 0x0000, 0x0000, 0x00e3, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00f8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x010d, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000, - 0x011a, 0x0000, 0x0000, 0x0122, 0x0000, 0x0000, 0x012a, 0x0000, - 0x0000, 0x0132, 0x0000, 0x0000, 0x013a, 0x0000, 0x0000, 0x0142, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, - // Entry 2B700 - 2B73F - 0x015a, 0x0000, 0x0000, 0x016a, 0x0003, 0x00bd, 0x00c0, 0x00c5, - 0x0001, 0x0041, 0x02c4, 0x0003, 0x0041, 0x02cd, 0x02e5, 0x02f7, - 0x0002, 0x00c8, 0x00cb, 0x0001, 0x0041, 0x0314, 0x0001, 0x0041, - 0x0337, 0x0003, 0x00d2, 0x00d5, 0x00da, 0x0001, 0x0041, 0x035a, - 0x0003, 0x0041, 0x035e, 0x0371, 0x037e, 0x0002, 0x00dd, 0x00e0, - 0x0001, 0x0041, 0x0396, 0x0001, 0x0041, 0x03ba, 0x0003, 0x00e7, - 0x00ea, 0x00ef, 0x0001, 0x0041, 0x03de, 0x0003, 0x0041, 0x03e3, - 0x03f7, 0x0405, 0x0002, 0x00f2, 0x00f5, 0x0001, 0x0041, 0x041e, - // Entry 2B740 - 2B77F - 0x0001, 0x0041, 0x043d, 0x0003, 0x00fc, 0x00ff, 0x0104, 0x0001, - 0x0041, 0x045c, 0x0003, 0x0041, 0x0465, 0x0471, 0x0483, 0x0002, - 0x0107, 0x010a, 0x0001, 0x0041, 0x0499, 0x0001, 0x0041, 0x04bb, - 0x0001, 0x010f, 0x0001, 0x0041, 0x04de, 0x0002, 0x0000, 0x0115, - 0x0003, 0x0041, 0x04ec, 0x050d, 0x0528, 0x0002, 0x0000, 0x011d, - 0x0003, 0x0041, 0x0544, 0x0564, 0x057e, 0x0002, 0x0000, 0x0125, - 0x0003, 0x0041, 0x0599, 0x05b7, 0x05cf, 0x0002, 0x0000, 0x012d, - 0x0003, 0x0041, 0x05e8, 0x0605, 0x061c, 0x0002, 0x0000, 0x0135, - // Entry 2B780 - 2B7BF - 0x0003, 0x0041, 0x0634, 0x0650, 0x0666, 0x0002, 0x0000, 0x013d, - 0x0003, 0x0041, 0x067d, 0x069e, 0x06b5, 0x0002, 0x0000, 0x0145, - 0x0003, 0x0041, 0x06cf, 0x06f1, 0x070d, 0x0003, 0x014e, 0x0000, - 0x0151, 0x0001, 0x0041, 0x072a, 0x0002, 0x0154, 0x0157, 0x0001, - 0x0041, 0x0733, 0x0001, 0x0041, 0x0756, 0x0003, 0x015e, 0x0000, - 0x0161, 0x0001, 0x0041, 0x0779, 0x0002, 0x0164, 0x0167, 0x0001, - 0x0041, 0x0790, 0x0001, 0x0041, 0x07b9, 0x0003, 0x016e, 0x0000, - 0x0171, 0x0001, 0x0041, 0x07e3, 0x0002, 0x0174, 0x0177, 0x0001, - // Entry 2B7C0 - 2B7FF - 0x0041, 0x07e9, 0x0001, 0x0041, 0x0809, 0x0003, 0x0004, 0x00ea, - 0x0168, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x0030, 0x0067, 0x008c, - 0x00a0, 0x00b8, 0x00c8, 0x00d9, 0x0000, 0x0002, 0x0033, 0x0055, - 0x0003, 0x0037, 0x0000, 0x0046, 0x000d, 0x0007, 0xffff, 0x0035, - // Entry 2B800 - 2B83F - 0x238e, 0x2392, 0x2396, 0x239a, 0x239e, 0x23a2, 0x23a6, 0x23aa, - 0x23ae, 0x23b3, 0x23b7, 0x000d, 0x0041, 0xffff, 0x082a, 0x083b, - 0x084f, 0x0863, 0x0875, 0x0889, 0x089d, 0x08af, 0x08c1, 0x08d2, - 0x08e3, 0x0902, 0x0002, 0x0000, 0x0058, 0x000d, 0x0000, 0xffff, - 0x2333, 0x2006, 0x1f9a, 0x1f9c, 0x1f9a, 0x2333, 0x2333, 0x1f9c, - 0x2002, 0x2a51, 0x1f96, 0x2008, 0x0002, 0x006a, 0x0080, 0x0003, - 0x006e, 0x0000, 0x0077, 0x0007, 0x0041, 0x091f, 0x0923, 0x0927, - 0x092b, 0x092f, 0x0933, 0x0937, 0x0007, 0x0041, 0x093b, 0x0942, - // Entry 2B840 - 2B87F - 0x0955, 0x096b, 0x0981, 0x0995, 0x09aa, 0x0002, 0x0000, 0x0083, - 0x0007, 0x0000, 0x22e1, 0x2333, 0x1f9a, 0x1f9a, 0x1f9a, 0x1f9a, - 0x21ec, 0x0001, 0x008e, 0x0003, 0x0092, 0x0000, 0x0099, 0x0005, - 0x0041, 0xffff, 0x09b4, 0x09b8, 0x09bc, 0x09c0, 0x0005, 0x0041, - 0xffff, 0x09c4, 0x09de, 0x09fb, 0x0a18, 0x0001, 0x00a2, 0x0003, - 0x00a6, 0x0000, 0x00af, 0x0002, 0x00a9, 0x00ac, 0x0001, 0x0041, - 0x0a33, 0x0001, 0x0041, 0x0a40, 0x0002, 0x00b2, 0x00b5, 0x0001, - 0x0041, 0x0a33, 0x0001, 0x0041, 0x0a40, 0x0003, 0x00c2, 0x0000, - // Entry 2B880 - 2B8BF - 0x00bc, 0x0001, 0x00be, 0x0002, 0x0041, 0x0a48, 0x0a5d, 0x0001, - 0x00c4, 0x0002, 0x0041, 0x0a72, 0x0a7d, 0x0004, 0x00d6, 0x00d0, - 0x00cd, 0x00d3, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e7, - 0x00e1, 0x00de, 0x00e4, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x012b, 0x0000, 0x0000, 0x0130, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0135, 0x0000, 0x0000, 0x013a, 0x0000, 0x0000, 0x0000, - // Entry 2B8C0 - 2B8FF - 0x0000, 0x0000, 0x013f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x014a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x014f, 0x0000, 0x0154, 0x0000, - 0x0000, 0x0159, 0x0000, 0x0000, 0x015e, 0x0000, 0x0000, 0x0163, - 0x0001, 0x012d, 0x0001, 0x0041, 0x0a88, 0x0001, 0x0132, 0x0001, - 0x0041, 0x0a90, 0x0001, 0x0137, 0x0001, 0x0041, 0x0a96, 0x0001, - // Entry 2B900 - 2B93F - 0x013c, 0x0001, 0x0041, 0x0a9e, 0x0002, 0x0142, 0x0145, 0x0001, - 0x0041, 0x0aa7, 0x0003, 0x0041, 0x0ab0, 0x0abe, 0x0ac7, 0x0001, - 0x014c, 0x0001, 0x0041, 0x0ad4, 0x0001, 0x0151, 0x0001, 0x0041, - 0x0ae9, 0x0001, 0x0156, 0x0001, 0x0041, 0x0afb, 0x0001, 0x015b, - 0x0001, 0x0041, 0x0b02, 0x0001, 0x0160, 0x0001, 0x0041, 0x0b0a, - 0x0001, 0x0165, 0x0001, 0x0041, 0x0b17, 0x0004, 0x0000, 0x016d, - 0x0000, 0x0170, 0x0001, 0x0041, 0x0b29, 0x0002, 0x0000, 0x0173, - 0x0003, 0x0000, 0x0000, 0x0177, 0x007c, 0x0041, 0xffff, 0x0b37, - // Entry 2B940 - 2B97F - 0x0b4d, 0x0b6c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b87, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2B980 - 2B9BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0b9a, 0x0003, 0x0004, 0x06f9, 0x0a89, 0x0012, 0x0017, - // Entry 2B9C0 - 2B9FF - 0x0024, 0x0115, 0x0000, 0x0182, 0x0000, 0x01ef, 0x021a, 0x0432, - 0x048a, 0x04fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0582, 0x067a, - 0x06ec, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, - 0x001f, 0x0001, 0x0021, 0x0001, 0x0041, 0x0bad, 0x000a, 0x002f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x0000, 0x0000, 0x0000, - 0x0094, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, 0x0045, 0x0054, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, - // Entry 2BA00 - 2BA3F - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0003, 0x0067, 0x0076, - 0x0085, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, - // Entry 2BA40 - 2BA7F - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0006, 0x009b, - 0x0000, 0x0000, 0x0000, 0x00ae, 0x00f1, 0x0001, 0x009d, 0x0001, - 0x009f, 0x000d, 0x0041, 0xffff, 0x0bb6, 0x0bbd, 0x0bc4, 0x0bce, - 0x0bdb, 0x0be8, 0x0bf2, 0x0bf9, 0x0c06, 0x0c16, 0x0c1d, 0x0c27, - 0x0001, 0x00b0, 0x0001, 0x00b2, 0x003d, 0x0041, 0xffff, 0x0c2e, - 0x0c3f, 0x0c4d, 0x0c61, 0x0c78, 0x0c8c, 0x0c9a, 0x0cab, 0x0cc2, - 0x0cd6, 0x0ce7, 0x0cf5, 0x0d03, 0x0d14, 0x0d25, 0x0d36, 0x0d4a, - // Entry 2BA80 - 2BABF - 0x0d5e, 0x0d6f, 0x0d80, 0x0d97, 0x0dab, 0x0db9, 0x0dca, 0x0ddb, - 0x0de9, 0x0df7, 0x0e0b, 0x0e22, 0x0e3b, 0x0e4c, 0x0e5a, 0x0e6e, - 0x0e82, 0x0e93, 0x0ea1, 0x0eaf, 0x0ec0, 0x0ed1, 0x0ee5, 0x0efc, - 0x0f0d, 0x0f1b, 0x0f2c, 0x0f43, 0x0f54, 0x0f62, 0x0f73, 0x0f84, - 0x0f95, 0x0fa6, 0x0fba, 0x0fce, 0x0fe7, 0x0ff8, 0x1006, 0x101a, - 0x102e, 0x103f, 0x1050, 0x0001, 0x00f3, 0x0001, 0x00f5, 0x000d, - 0x0041, 0xffff, 0x1066, 0x106d, 0x1080, 0x108d, 0x10a0, 0x10b3, - 0x10ba, 0x10c4, 0x10ce, 0x10d8, 0x10eb, 0x10f2, 0x0004, 0x0112, - // Entry 2BAC0 - 2BAFF - 0x010c, 0x0109, 0x010f, 0x0001, 0x0032, 0x00df, 0x0001, 0x0032, - 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, 0x0032, 0x0100, 0x0001, - 0x0117, 0x0002, 0x011a, 0x014e, 0x0003, 0x011e, 0x012e, 0x013e, - 0x000e, 0x0041, 0xffff, 0x10f9, 0x1106, 0x1113, 0x1120, 0x112a, - 0x1137, 0x1147, 0x115d, 0x1176, 0x1189, 0x119c, 0x11ac, 0x11bc, - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, - 0x000e, 0x0041, 0xffff, 0x10f9, 0x1106, 0x1113, 0x1120, 0x112a, - // Entry 2BB00 - 2BB3F - 0x11cc, 0x1147, 0x115d, 0x1176, 0x1189, 0x119c, 0x11ac, 0x11dc, - 0x0003, 0x0152, 0x0162, 0x0172, 0x000e, 0x0041, 0xffff, 0x10f9, - 0x1106, 0x1113, 0x1120, 0x112a, 0x1137, 0x1147, 0x115d, 0x1176, - 0x1189, 0x119c, 0x11ac, 0x11dc, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, 0x0041, 0xffff, 0x10f9, - 0x1106, 0x1113, 0x1120, 0x112a, 0x1137, 0x1147, 0x115d, 0x1176, - 0x1189, 0x119c, 0x11ac, 0x11dc, 0x0001, 0x0184, 0x0002, 0x0187, - // Entry 2BB40 - 2BB7F - 0x01bb, 0x0003, 0x018b, 0x019b, 0x01ab, 0x000e, 0x0041, 0xffff, - 0x11ec, 0x1208, 0x1218, 0x1225, 0x1235, 0x123f, 0x1255, 0x126b, - 0x127e, 0x1291, 0x129e, 0x12ab, 0x12be, 0x000e, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, 0x0041, 0xffff, - 0x11ec, 0x1208, 0x1218, 0x1225, 0x1235, 0x123f, 0x1255, 0x126b, - 0x127e, 0x1291, 0x129e, 0x12ab, 0x12be, 0x0003, 0x01bf, 0x01cf, - 0x01df, 0x000e, 0x0041, 0xffff, 0x11ec, 0x1208, 0x1218, 0x1225, - // Entry 2BB80 - 2BBBF - 0x1235, 0x123f, 0x1255, 0x126b, 0x127e, 0x1291, 0x129e, 0x12ab, - 0x12be, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, - 0x0422, 0x000e, 0x0041, 0xffff, 0x11ec, 0x1208, 0x1218, 0x1225, - 0x1235, 0x123f, 0x1255, 0x126b, 0x127e, 0x1291, 0x129e, 0x12ab, - 0x12be, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01f8, - 0x0000, 0x0209, 0x0004, 0x0206, 0x0200, 0x01fd, 0x0203, 0x0001, - 0x0041, 0x12d4, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - // Entry 2BBC0 - 2BBFF - 0x0001, 0x0000, 0x236f, 0x0004, 0x0217, 0x0211, 0x020e, 0x0214, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0223, 0x0288, 0x02df, - 0x0314, 0x03e5, 0x03ff, 0x0410, 0x0421, 0x0002, 0x0226, 0x0257, - 0x0003, 0x022a, 0x0239, 0x0248, 0x000d, 0x0041, 0xffff, 0x12ea, - 0x12f3, 0x12fc, 0x1305, 0x130e, 0x1317, 0x1323, 0x132c, 0x1335, - 0x133e, 0x1347, 0x1350, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - // Entry 2BC00 - 2BC3F - 0x29da, 0x2398, 0x000d, 0x0041, 0xffff, 0x10a0, 0x1359, 0x1369, - 0x1376, 0x1383, 0x1399, 0x13ac, 0x13c2, 0x13d2, 0x13e2, 0x13ef, - 0x13ff, 0x0003, 0x025b, 0x026a, 0x0279, 0x000d, 0x0041, 0xffff, - 0x12ea, 0x12f3, 0x12fc, 0x1305, 0x130e, 0x1317, 0x1323, 0x132c, - 0x1335, 0x133e, 0x1347, 0x1350, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x29da, 0x2398, 0x000d, 0x0041, 0xffff, 0x10a0, 0x1359, - 0x1369, 0x1376, 0x1383, 0x1399, 0x13ac, 0x13c2, 0x13d2, 0x13e2, - // Entry 2BC40 - 2BC7F - 0x13ef, 0x13ff, 0x0002, 0x028b, 0x02b5, 0x0005, 0x0291, 0x029a, - 0x02ac, 0x0000, 0x02a3, 0x0007, 0x0041, 0x140f, 0x141f, 0x1429, - 0x143c, 0x1446, 0x1456, 0x1460, 0x0007, 0x0041, 0x146d, 0x1474, - 0x1478, 0x147c, 0x1480, 0x1487, 0x148e, 0x0007, 0x0041, 0x1492, - 0x149a, 0x149f, 0x14a4, 0x14a9, 0x14b1, 0x14b9, 0x0007, 0x0041, - 0x14be, 0x14d7, 0x14ea, 0x1506, 0x1519, 0x1532, 0x1545, 0x0005, - 0x02bb, 0x02c4, 0x02d6, 0x0000, 0x02cd, 0x0007, 0x0041, 0x140f, - 0x141f, 0x1429, 0x143c, 0x1446, 0x1456, 0x1460, 0x0007, 0x0041, - // Entry 2BC80 - 2BCBF - 0x146d, 0x1474, 0x1478, 0x147c, 0x1480, 0x1487, 0x148e, 0x0007, - 0x0041, 0x1492, 0x149a, 0x149f, 0x14a4, 0x14a9, 0x14b1, 0x14b9, - 0x0007, 0x0041, 0x14be, 0x14d7, 0x14ea, 0x1506, 0x1519, 0x1532, - 0x1545, 0x0002, 0x02e2, 0x02fb, 0x0003, 0x02e6, 0x02ed, 0x02f4, - 0x0005, 0x0041, 0xffff, 0x155b, 0x1563, 0x156b, 0x1573, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0041, - 0xffff, 0x157b, 0x1590, 0x15a5, 0x15ba, 0x0003, 0x02ff, 0x0306, - 0x030d, 0x0005, 0x0041, 0xffff, 0x15cf, 0x15d4, 0x15d9, 0x15de, - // Entry 2BCC0 - 2BCFF - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x0041, 0xffff, 0x157b, 0x1590, 0x15a5, 0x15ba, 0x0002, 0x0317, - 0x037e, 0x0003, 0x031b, 0x033c, 0x035d, 0x0008, 0x0327, 0x032d, - 0x0324, 0x0330, 0x0333, 0x0336, 0x0339, 0x032a, 0x0001, 0x0041, - 0x15e3, 0x0001, 0x0041, 0x15f9, 0x0001, 0x0041, 0x1612, 0x0001, - 0x0041, 0x1628, 0x0001, 0x0041, 0x1641, 0x0001, 0x0041, 0x165a, - 0x0001, 0x0041, 0x1670, 0x0001, 0x0041, 0x1683, 0x0008, 0x0348, - 0x034e, 0x0345, 0x0351, 0x0354, 0x0357, 0x035a, 0x034b, 0x0001, - // Entry 2BD00 - 2BD3F - 0x0041, 0x1696, 0x0001, 0x0041, 0x169d, 0x0001, 0x0041, 0x16a4, - 0x0001, 0x0041, 0x16a8, 0x0001, 0x0041, 0x1641, 0x0001, 0x0041, - 0x1612, 0x0001, 0x0041, 0x1670, 0x0001, 0x0041, 0x16b2, 0x0008, - 0x0369, 0x036f, 0x0366, 0x0372, 0x0375, 0x0378, 0x037b, 0x036c, - 0x0001, 0x0041, 0x15e3, 0x0001, 0x0041, 0x15f9, 0x0001, 0x0041, - 0x1612, 0x0001, 0x0041, 0x1628, 0x0001, 0x0041, 0x1641, 0x0001, - 0x0041, 0x165a, 0x0001, 0x0041, 0x1670, 0x0001, 0x0041, 0x16c6, - 0x0003, 0x0382, 0x03a3, 0x03c4, 0x0008, 0x038e, 0x0394, 0x038b, - // Entry 2BD40 - 2BD7F - 0x0397, 0x039a, 0x039d, 0x03a0, 0x0391, 0x0001, 0x0041, 0x16e2, - 0x0001, 0x0041, 0x15f9, 0x0001, 0x0041, 0x16fb, 0x0001, 0x0041, - 0x1628, 0x0001, 0x0041, 0x1708, 0x0001, 0x0041, 0x171b, 0x0001, - 0x0041, 0x1725, 0x0001, 0x0041, 0x172f, 0x0008, 0x03af, 0x03b5, - 0x03ac, 0x03b8, 0x03bb, 0x03be, 0x03c1, 0x03b2, 0x0001, 0x0041, - 0x1696, 0x0001, 0x0041, 0x169d, 0x0001, 0x0041, 0x1612, 0x0001, - 0x0041, 0x16a8, 0x0001, 0x0041, 0x1748, 0x0001, 0x0041, 0x148e, - 0x0001, 0x0041, 0x174c, 0x0001, 0x0041, 0x1750, 0x0008, 0x03d0, - // Entry 2BD80 - 2BDBF - 0x03d6, 0x03cd, 0x03d9, 0x03dc, 0x03df, 0x03e2, 0x03d3, 0x0001, - 0x0041, 0x15e3, 0x0001, 0x0041, 0x15f9, 0x0001, 0x0041, 0x1612, - 0x0001, 0x0041, 0x1628, 0x0001, 0x0041, 0x1708, 0x0001, 0x0041, - 0x171b, 0x0001, 0x0041, 0x1725, 0x0001, 0x0041, 0x172f, 0x0003, - 0x03f4, 0x0000, 0x03e9, 0x0002, 0x03ec, 0x03f0, 0x0002, 0x0041, - 0x1757, 0x17bc, 0x0002, 0x0041, 0x1788, 0x17e1, 0x0002, 0x03f7, - 0x03fb, 0x0002, 0x0041, 0x1809, 0x183d, 0x0002, 0x0041, 0x181f, - 0x1846, 0x0004, 0x040d, 0x0407, 0x0404, 0x040a, 0x0001, 0x0041, - // Entry 2BDC0 - 2BDFF - 0x1858, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0002, 0x01fb, 0x0004, 0x041e, 0x0418, 0x0415, 0x041b, 0x0001, - 0x0041, 0x186f, 0x0001, 0x0041, 0x18a5, 0x0001, 0x0005, 0x0099, - 0x0001, 0x0005, 0x00a1, 0x0004, 0x042f, 0x0429, 0x0426, 0x042c, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0005, 0x0438, 0x0000, 0x0000, - 0x0000, 0x0483, 0x0002, 0x043b, 0x045f, 0x0003, 0x043f, 0x0000, - 0x044f, 0x000e, 0x0041, 0x194a, 0x18d8, 0x18eb, 0x18fb, 0x190e, - // Entry 2BE00 - 2BE3F - 0x191e, 0x192e, 0x193d, 0x195a, 0x196d, 0x197d, 0x198d, 0x199a, - 0x19a4, 0x000e, 0x0041, 0x194a, 0x18d8, 0x18eb, 0x18fb, 0x190e, - 0x191e, 0x192e, 0x193d, 0x195a, 0x196d, 0x197d, 0x198d, 0x199a, - 0x19a4, 0x0003, 0x0463, 0x0000, 0x0473, 0x000e, 0x0041, 0x194a, - 0x18d8, 0x18eb, 0x18fb, 0x190e, 0x191e, 0x192e, 0x193d, 0x195a, - 0x196d, 0x197d, 0x198d, 0x199a, 0x19a4, 0x000e, 0x0041, 0x194a, - 0x18d8, 0x18eb, 0x18fb, 0x190e, 0x191e, 0x192e, 0x193d, 0x195a, - 0x196d, 0x197d, 0x198d, 0x199a, 0x19a4, 0x0001, 0x0485, 0x0001, - // Entry 2BE40 - 2BE7F - 0x0487, 0x0001, 0x0000, 0x04ef, 0x0005, 0x0490, 0x0000, 0x0000, - 0x0000, 0x04f5, 0x0002, 0x0493, 0x04c4, 0x0003, 0x0497, 0x04a6, - 0x04b5, 0x000d, 0x0041, 0xffff, 0x19b1, 0x19c1, 0x19d4, 0x19e4, - 0x19f4, 0x1a0d, 0x1a1d, 0x1a33, 0x1a49, 0x1a6b, 0x1a78, 0x1a85, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, - 0x0041, 0xffff, 0x19b1, 0x19c1, 0x19d4, 0x19e4, 0x19f4, 0x1a0d, - 0x1a1d, 0x1a33, 0x1a49, 0x1a9b, 0x1a78, 0x1a85, 0x0003, 0x04c8, - // Entry 2BE80 - 2BEBF - 0x04d7, 0x04e6, 0x000d, 0x0041, 0xffff, 0x19b1, 0x19c1, 0x19d4, - 0x19e4, 0x19f4, 0x1a0d, 0x1a1d, 0x1a33, 0x1a49, 0x1a9b, 0x1a78, - 0x1a85, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, - 0x000d, 0x0041, 0xffff, 0x19b1, 0x19c1, 0x19d4, 0x19e4, 0x19f4, - 0x1a0d, 0x1a1d, 0x1a33, 0x1a49, 0x1a9b, 0x1a78, 0x1a85, 0x0001, - 0x04f7, 0x0001, 0x04f9, 0x0001, 0x0041, 0x1305, 0x0008, 0x0505, - 0x0000, 0x0000, 0x0000, 0x056a, 0x0571, 0x0000, 0x9006, 0x0002, - // Entry 2BEC0 - 2BEFF - 0x0508, 0x0539, 0x0003, 0x050c, 0x051b, 0x052a, 0x000d, 0x0041, - 0xffff, 0x1aae, 0x1abe, 0x1acb, 0x1add, 0x1aef, 0x1afe, 0x1b0d, - 0x1b1a, 0x1b27, 0x1b3a, 0x1b47, 0x1b5d, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0041, 0xffff, 0x1b70, - 0x1b86, 0x1acb, 0x1b96, 0x1ba8, 0x1bbd, 0x1bd2, 0x1be2, 0x1bf2, - 0x1c08, 0x1c1e, 0x1c3a, 0x0003, 0x053d, 0x054c, 0x055b, 0x000d, - 0x0041, 0xffff, 0x1aae, 0x1abe, 0x1c56, 0x1add, 0x1aef, 0x1afe, - // Entry 2BF00 - 2BF3F - 0x1b0d, 0x1c68, 0x1b27, 0x1b3a, 0x1b47, 0x1b5d, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0041, 0xffff, - 0x1b70, 0x1b86, 0x1acb, 0x1b96, 0x1ba8, 0x1bbd, 0x1bd2, 0x1be2, - 0x1bf2, 0x1c08, 0x1c1e, 0x1c3a, 0x0001, 0x056c, 0x0001, 0x056e, - 0x0001, 0x0000, 0x06c8, 0x0004, 0x057f, 0x0579, 0x0576, 0x057c, - 0x0001, 0x0002, 0x043a, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, - 0x0514, 0x0001, 0x0000, 0x051c, 0x0005, 0x0000, 0x0000, 0x0000, - // Entry 2BF40 - 2BF7F - 0x0000, 0x0588, 0x0001, 0x058a, 0x0001, 0x058c, 0x00ec, 0x0041, - 0x1c6f, 0x1c8e, 0x1cad, 0x1ccc, 0x1ce5, 0x1d04, 0x1d20, 0x1d39, - 0x1d58, 0x1d71, 0x1d8d, 0x1daf, 0x1de1, 0x1e10, 0x1e3f, 0x1e74, - 0x1ea3, 0x1ebc, 0x1edc, 0x1f04, 0x1f23, 0x1f3f, 0x1f5e, 0x1f77, - 0x1f90, 0x1fac, 0x1fce, 0x1ff0, 0x200c, 0x202b, 0x2047, 0x2066, - 0x2085, 0x20a4, 0x20c3, 0x20dc, 0x20fe, 0x2126, 0x214e, 0x2167, - 0x2180, 0x2199, 0x21c1, 0x21e7, 0x2206, 0x222b, 0x2247, 0x2263, - 0x2283, 0x229c, 0x22be, 0x22e0, 0x22fa, 0x2318, 0x2336, 0x2357, - // Entry 2BF80 - 2BFBF - 0x2375, 0x2393, 0x23b4, 0x23db, 0x23f9, 0x2420, 0x243e, 0x245f, - 0x247a, 0x24a1, 0x24c5, 0x24e3, 0x250d, 0x252b, 0x254f, 0x256d, - 0x2588, 0x25a9, 0x25d0, 0x25ee, 0x260c, 0x262a, 0x264e, 0x2670, - 0x268e, 0x26b0, 0x26d1, 0x26f2, 0x2713, 0x2737, 0x2758, 0x2779, - 0x2794, 0x27b2, 0x27d6, 0x27f7, 0x2815, 0x2833, 0x2854, 0x286f, - 0x2896, 0x28b1, 0x28d2, 0x28f0, 0x2912, 0x292d, 0x294e, 0x2972, - 0x2990, 0x29ae, 0x29cc, 0x29f9, 0x2a17, 0x2a3b, 0x2a56, 0x2a7a, - 0x2a9e, 0x2ac3, 0x2ae7, 0x2b14, 0x2b38, 0x2b59, 0x2b7a, 0x2b9e, - // Entry 2BFC0 - 2BFFF - 0x2bbf, 0x2be0, 0x2bfe, 0x2c1f, 0x2c46, 0x2c70, 0x2c8e, 0x2cb8, - 0x2cda, 0x2cf8, 0x2d19, 0x2d34, 0x2d52, 0x2d70, 0x2d8b, 0x2da9, - 0x2dc8, 0x2de3, 0x2e02, 0x2e20, 0x2e3b, 0x2e50, 0x2e71, 0x2e8c, - 0x2ead, 0x2ecb, 0x2eec, 0x2f0a, 0x2f25, 0x2f40, 0x2f5e, 0x2f79, - 0x2f9a, 0x2fb5, 0x2fd6, 0x2ffa, 0x3018, 0x3039, 0x3060, 0x3081, - 0x309c, 0x30c0, 0x30de, 0x30ff, 0x3120, 0x313b, 0x315c, 0x317d, - 0x3198, 0x31ad, 0x31ce, 0x31e9, 0x3204, 0x3222, 0x3243, 0x3265, - 0x3286, 0x32aa, 0x32c5, 0x32e6, 0x3304, 0x3322, 0x3340, 0x335e, - // Entry 2C000 - 2C03F - 0x337c, 0x33a3, 0x33be, 0x33dc, 0x33f7, 0x3412, 0x3436, 0x345a, - 0x3475, 0x3496, 0x34b7, 0x34d8, 0x34fc, 0x3517, 0x3538, 0x3557, - 0x3572, 0x358a, 0x359f, 0x35c3, 0x35e1, 0x3602, 0x3623, 0x3644, - 0x3662, 0x3689, 0x36a4, 0x36c5, 0x36e3, 0x3707, 0x3725, 0x3749, - 0x376b, 0x378c, 0x37aa, 0x37cc, 0x37ed, 0x380b, 0x3829, 0x3847, - 0x3865, 0x3886, 0x38a1, 0x38bc, 0x38dd, 0x3905, 0x3923, 0x3941, - 0x395c, 0x3969, 0x3976, 0x3983, 0x0005, 0x0680, 0x0000, 0x0000, - 0x0000, 0x06e5, 0x0002, 0x0683, 0x06b4, 0x0003, 0x0687, 0x0696, - // Entry 2C040 - 2C07F - 0x06a5, 0x000d, 0x0042, 0xffff, 0x0000, 0x0019, 0x003b, 0x004e, - 0x0058, 0x006b, 0x0081, 0x008b, 0x009b, 0x00a8, 0x00b2, 0x00c5, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, - 0x0042, 0xffff, 0x00d8, 0x0019, 0x003b, 0x004e, 0x0058, 0x006b, - 0x0081, 0x008b, 0x00f1, 0x00a8, 0x0101, 0x00c5, 0x0003, 0x06b8, - 0x06c7, 0x06d6, 0x000d, 0x0042, 0xffff, 0x00d8, 0x0114, 0x003b, - 0x004e, 0x0058, 0x0136, 0x0081, 0x008b, 0x009b, 0x00a8, 0x00b2, - // Entry 2C080 - 2C0BF - 0x00c5, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, - 0x000d, 0x0042, 0xffff, 0x00d8, 0x0019, 0x003b, 0x004e, 0x0058, - 0x006b, 0x0081, 0x008b, 0x00f1, 0x00a8, 0x0101, 0x00c5, 0x0001, - 0x06e7, 0x0001, 0x06e9, 0x0001, 0x0042, 0x014c, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x06f2, 0x0001, 0x06f4, 0x0001, 0x06f6, - 0x0001, 0x0042, 0x0165, 0x0040, 0x073a, 0x0000, 0x0000, 0x073f, - 0x0754, 0x0764, 0x0774, 0x0789, 0x0799, 0x07a9, 0x07be, 0x07ce, - // Entry 2C0C0 - 2C0FF - 0x07de, 0x07f7, 0x080b, 0x0000, 0x0000, 0x0000, 0x081f, 0x0836, - 0x084d, 0x0000, 0x0000, 0x0000, 0x0864, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0869, 0x087b, 0x088d, 0x089f, 0x08b1, 0x08c3, - 0x08d5, 0x08e7, 0x08f9, 0x090b, 0x091d, 0x092f, 0x0941, 0x0953, - 0x0965, 0x0977, 0x0989, 0x099b, 0x09ad, 0x09bf, 0x09d1, 0x0000, - 0x09e3, 0x0000, 0x09e8, 0x09fc, 0x0a0c, 0x0a1c, 0x0a30, 0x0a40, - 0x0a50, 0x0a64, 0x0a74, 0x0a84, 0x0001, 0x073c, 0x0001, 0x0042, - 0x0179, 0x0003, 0x0743, 0x0746, 0x074b, 0x0001, 0x0042, 0x0186, - // Entry 2C100 - 2C13F - 0x0003, 0x0042, 0x018d, 0x019d, 0x01ad, 0x0002, 0x074e, 0x0751, - 0x0001, 0x0042, 0x01bd, 0x0001, 0x0042, 0x01d8, 0x0003, 0x0758, - 0x0000, 0x075b, 0x0001, 0x0042, 0x0186, 0x0002, 0x075e, 0x0761, - 0x0001, 0x0042, 0x01bd, 0x0001, 0x0042, 0x01d8, 0x0003, 0x0768, - 0x0000, 0x076b, 0x0001, 0x0042, 0x0186, 0x0002, 0x076e, 0x0771, - 0x0001, 0x0042, 0x01bd, 0x0001, 0x0042, 0x01d8, 0x0003, 0x0778, - 0x077b, 0x0780, 0x0001, 0x0042, 0x01ef, 0x0003, 0x0042, 0x0202, - 0x022a, 0x0246, 0x0002, 0x0783, 0x0786, 0x0001, 0x0042, 0x0262, - // Entry 2C140 - 2C17F - 0x0001, 0x0042, 0x0289, 0x0003, 0x078d, 0x0000, 0x0790, 0x0001, - 0x0042, 0x02ac, 0x0002, 0x0793, 0x0796, 0x0001, 0x0042, 0x02b4, - 0x0001, 0x0042, 0x02c7, 0x0003, 0x079d, 0x0000, 0x07a0, 0x0001, - 0x0042, 0x02ac, 0x0002, 0x07a3, 0x07a6, 0x0001, 0x0042, 0x02b4, - 0x0001, 0x0042, 0x02c7, 0x0003, 0x07ad, 0x07b0, 0x07b5, 0x0001, - 0x0042, 0x02e0, 0x0003, 0x0042, 0x02f0, 0x030c, 0x0325, 0x0002, - 0x07b8, 0x07bb, 0x0001, 0x0042, 0x033e, 0x0001, 0x0042, 0x0362, - 0x0003, 0x07c2, 0x0000, 0x07c5, 0x0001, 0x0042, 0x0382, 0x0002, - // Entry 2C180 - 2C1BF - 0x07c8, 0x07cb, 0x0001, 0x0042, 0x0387, 0x0001, 0x0042, 0x03a0, - 0x0003, 0x07d2, 0x0000, 0x07d5, 0x0001, 0x0042, 0x0382, 0x0002, - 0x07d8, 0x07db, 0x0001, 0x0042, 0x0387, 0x0001, 0x0042, 0x03a0, - 0x0004, 0x07e3, 0x07e6, 0x07eb, 0x07f4, 0x0001, 0x0041, 0x140f, - 0x0003, 0x0042, 0x03b6, 0x03d2, 0x03eb, 0x0002, 0x07ee, 0x07f1, - 0x0001, 0x0042, 0x0404, 0x0001, 0x0042, 0x0428, 0x0001, 0x0042, - 0x0448, 0x0004, 0x07fc, 0x0000, 0x07ff, 0x0808, 0x0001, 0x0041, - 0x149f, 0x0002, 0x0802, 0x0805, 0x0001, 0x0042, 0x0462, 0x0001, - // Entry 2C1C0 - 2C1FF - 0x0042, 0x047e, 0x0001, 0x0042, 0x0448, 0x0004, 0x0810, 0x0000, - 0x0813, 0x081c, 0x0001, 0x0041, 0x149f, 0x0002, 0x0816, 0x0819, - 0x0001, 0x0042, 0x0462, 0x0001, 0x0042, 0x047e, 0x0001, 0x0042, - 0x0448, 0x0003, 0x0823, 0x0826, 0x082d, 0x0001, 0x0042, 0x0497, - 0x0005, 0x0042, 0x04b7, 0x04ca, 0x04dd, 0x04a1, 0x04f3, 0x0002, - 0x0830, 0x0833, 0x0001, 0x0042, 0x0503, 0x0001, 0x0042, 0x0521, - 0x0003, 0x083a, 0x083d, 0x0844, 0x0001, 0x0042, 0x0497, 0x0005, - 0x0042, 0x04b7, 0x04ca, 0x04dd, 0x04a1, 0x04f3, 0x0002, 0x0847, - // Entry 2C200 - 2C23F - 0x084a, 0x0001, 0x0042, 0x0503, 0x0001, 0x0042, 0x0521, 0x0003, - 0x0851, 0x0854, 0x085b, 0x0001, 0x0042, 0x0497, 0x0005, 0x0042, - 0x04b7, 0x04ca, 0x04dd, 0x04a1, 0x04f3, 0x0002, 0x085e, 0x0861, - 0x0001, 0x0042, 0x0503, 0x0001, 0x0042, 0x0521, 0x0001, 0x0866, - 0x0001, 0x0042, 0x053b, 0x0003, 0x0000, 0x086d, 0x0872, 0x0003, - 0x0042, 0x055d, 0x0582, 0x05a4, 0x0002, 0x0875, 0x0878, 0x0001, - 0x0042, 0x05c6, 0x0001, 0x0042, 0x05ea, 0x0003, 0x0000, 0x087f, - 0x0884, 0x0003, 0x0042, 0x0613, 0x0632, 0x064e, 0x0002, 0x0887, - // Entry 2C240 - 2C27F - 0x088a, 0x0001, 0x0042, 0x05c6, 0x0001, 0x0042, 0x05ea, 0x0003, - 0x0000, 0x0891, 0x0896, 0x0003, 0x0042, 0x066a, 0x067f, 0x0691, - 0x0002, 0x0899, 0x089c, 0x0001, 0x0042, 0x05c6, 0x0001, 0x0042, - 0x05ea, 0x0003, 0x0000, 0x08a3, 0x08a8, 0x0003, 0x0042, 0x06a3, - 0x06c2, 0x06de, 0x0002, 0x08ab, 0x08ae, 0x0001, 0x0042, 0x06fa, - 0x0001, 0x0042, 0x0718, 0x0003, 0x0000, 0x08b5, 0x08ba, 0x0003, - 0x0042, 0x073b, 0x0751, 0x0764, 0x0002, 0x08bd, 0x08c0, 0x0001, - 0x0042, 0x06fa, 0x0001, 0x0042, 0x0718, 0x0003, 0x0000, 0x08c7, - // Entry 2C280 - 2C2BF - 0x08cc, 0x0003, 0x0042, 0x0777, 0x0789, 0x0798, 0x0002, 0x08cf, - 0x08d2, 0x0001, 0x0042, 0x06fa, 0x0001, 0x0042, 0x0718, 0x0003, - 0x0000, 0x08d9, 0x08de, 0x0003, 0x0042, 0x07a7, 0x07cf, 0x07f4, - 0x0002, 0x08e1, 0x08e4, 0x0001, 0x0042, 0x0819, 0x0001, 0x0042, - 0x0840, 0x0003, 0x0000, 0x08eb, 0x08f0, 0x0003, 0x0042, 0x086c, - 0x088b, 0x08a7, 0x0002, 0x08f3, 0x08f6, 0x0001, 0x0042, 0x0819, - 0x0001, 0x0042, 0x0840, 0x0003, 0x0000, 0x08fd, 0x0902, 0x0003, - 0x0042, 0x086c, 0x088b, 0x08a7, 0x0002, 0x0905, 0x0908, 0x0001, - // Entry 2C2C0 - 2C2FF - 0x0042, 0x0819, 0x0001, 0x0042, 0x0840, 0x0003, 0x0000, 0x090f, - 0x0914, 0x0003, 0x0042, 0x08c3, 0x08e2, 0x08fe, 0x0002, 0x0917, - 0x091a, 0x0001, 0x0042, 0x091a, 0x0001, 0x0042, 0x0938, 0x0003, - 0x0000, 0x0921, 0x0926, 0x0003, 0x0042, 0x095b, 0x0971, 0x0984, - 0x0002, 0x0929, 0x092c, 0x0001, 0x0042, 0x091a, 0x0001, 0x0042, - 0x0938, 0x0003, 0x0000, 0x0933, 0x0938, 0x0003, 0x0042, 0x0997, - 0x09ac, 0x09be, 0x0002, 0x093b, 0x093e, 0x0001, 0x0042, 0x091a, - 0x0001, 0x0042, 0x0938, 0x0003, 0x0000, 0x0945, 0x094a, 0x0003, - // Entry 2C300 - 2C33F - 0x0042, 0x09d0, 0x09f5, 0x0a17, 0x0002, 0x094d, 0x0950, 0x0001, - 0x0042, 0x0a39, 0x0001, 0x0042, 0x0a5d, 0x0003, 0x0000, 0x0957, - 0x095c, 0x0003, 0x0042, 0x0a86, 0x0aa2, 0x0abb, 0x0002, 0x095f, - 0x0962, 0x0001, 0x0042, 0x0a39, 0x0001, 0x0042, 0x0a5d, 0x0003, - 0x0000, 0x0969, 0x096e, 0x0003, 0x0042, 0x0ad4, 0x0ae9, 0x0afb, - 0x0002, 0x0971, 0x0974, 0x0001, 0x0042, 0x0a39, 0x0001, 0x0042, - 0x0a5d, 0x0003, 0x0000, 0x097b, 0x0980, 0x0003, 0x0042, 0x0b0d, - 0x0b2c, 0x0b48, 0x0002, 0x0983, 0x0986, 0x0001, 0x0042, 0x0b64, - // Entry 2C340 - 2C37F - 0x0001, 0x0042, 0x0b8b, 0x0003, 0x0000, 0x098d, 0x0992, 0x0003, - 0x0042, 0x0bae, 0x0bc4, 0x0bd7, 0x0002, 0x0995, 0x0998, 0x0001, - 0x0042, 0x0b64, 0x0001, 0x0042, 0x0b8b, 0x0003, 0x0000, 0x099f, - 0x09a4, 0x0003, 0x0042, 0x0bea, 0x0bff, 0x0c11, 0x0002, 0x09a7, - 0x09aa, 0x0001, 0x0042, 0x0b64, 0x0001, 0x0042, 0x0b8b, 0x0003, - 0x0000, 0x09b1, 0x09b6, 0x0003, 0x0042, 0x0c23, 0x0c45, 0x0c64, - 0x0002, 0x09b9, 0x09bc, 0x0001, 0x0042, 0x0c83, 0x0001, 0x0042, - 0x0ca4, 0x0003, 0x0000, 0x09c3, 0x09c8, 0x0003, 0x0042, 0x0cca, - // Entry 2C380 - 2C3BF - 0x0ce3, 0x0cf9, 0x0002, 0x09cb, 0x09ce, 0x0001, 0x0042, 0x0c83, - 0x0001, 0x0042, 0x0ca4, 0x0003, 0x0000, 0x09d5, 0x09da, 0x0003, - 0x0042, 0x0d0f, 0x0d21, 0x0d30, 0x0002, 0x09dd, 0x09e0, 0x0001, - 0x0042, 0x0c83, 0x0001, 0x0042, 0x0ca4, 0x0001, 0x09e5, 0x0001, - 0x0042, 0x0d3f, 0x0003, 0x09ec, 0x09ef, 0x09f3, 0x0001, 0x0042, - 0x0d71, 0x0002, 0x0042, 0xffff, 0x0d87, 0x0002, 0x09f6, 0x09f9, - 0x0001, 0x0042, 0x0da6, 0x0001, 0x0042, 0x0dd0, 0x0003, 0x0a00, - 0x0000, 0x0a03, 0x0001, 0x0042, 0x0df6, 0x0002, 0x0a06, 0x0a09, - // Entry 2C3C0 - 2C3FF - 0x0001, 0x0042, 0x0dfe, 0x0001, 0x0042, 0x0e1a, 0x0003, 0x0a10, - 0x0000, 0x0a13, 0x0001, 0x0042, 0x0df6, 0x0002, 0x0a16, 0x0a19, - 0x0001, 0x0042, 0x0dfe, 0x0001, 0x0042, 0x0e1a, 0x0003, 0x0a20, - 0x0a23, 0x0a27, 0x0001, 0x0042, 0x0e33, 0x0002, 0x0042, 0xffff, - 0x0e40, 0x0002, 0x0a2a, 0x0a2d, 0x0001, 0x0042, 0x0e56, 0x0001, - 0x0042, 0x0e79, 0x0003, 0x0a34, 0x0000, 0x0a37, 0x0001, 0x0042, - 0x0e96, 0x0002, 0x0a3a, 0x0a3d, 0x0001, 0x0042, 0x0e9e, 0x0001, - 0x0042, 0x0eb1, 0x0003, 0x0a44, 0x0000, 0x0a47, 0x0001, 0x0042, - // Entry 2C400 - 2C43F - 0x0e96, 0x0002, 0x0a4a, 0x0a4d, 0x0001, 0x0042, 0x0e9e, 0x0001, - 0x0042, 0x0eb1, 0x0003, 0x0a54, 0x0a57, 0x0a5b, 0x0001, 0x0042, - 0x0eca, 0x0002, 0x0042, 0xffff, 0x0edd, 0x0002, 0x0a5e, 0x0a61, - 0x0001, 0x0042, 0x0ef0, 0x0001, 0x0042, 0x0f17, 0x0003, 0x0a68, - 0x0000, 0x0a6b, 0x0001, 0x0042, 0x0f3a, 0x0002, 0x0a6e, 0x0a71, - 0x0001, 0x0042, 0x0f42, 0x0001, 0x0042, 0x0f55, 0x0003, 0x0a78, - 0x0000, 0x0a7b, 0x0001, 0x0042, 0x0f3a, 0x0002, 0x0a7e, 0x0a81, - 0x0001, 0x0042, 0x0f42, 0x0001, 0x0042, 0x0f55, 0x0001, 0x0a86, - // Entry 2C440 - 2C47F - 0x0001, 0x0042, 0x0f6e, 0x0004, 0x0a8e, 0x0a93, 0x0a98, 0x0aa3, - 0x0003, 0x0000, 0x1dc7, 0x29cf, 0x2a11, 0x0003, 0x0042, 0x0f84, - 0x0f95, 0x0fbb, 0x0002, 0x0000, 0x0a9b, 0x0002, 0x0000, 0x0a9e, - 0x0003, 0x0042, 0xffff, 0x0fe4, 0x102d, 0x0002, 0x0000, 0x0aa6, - 0x0003, 0x0aaa, 0x0bea, 0x0b4a, 0x009e, 0x0042, 0xffff, 0xffff, - 0xffff, 0xffff, 0x120a, 0x1342, 0x1462, 0x152e, 0x159d, 0x1642, - 0x16e7, 0xffff, 0x177a, 0x1927, 0x19d8, 0x1abf, 0x1bf1, 0x1c87, - 0x1d3e, 0x1e3a, 0x1f9c, 0x20dd, 0x2221, 0x22db, 0x23aa, 0xffff, - // Entry 2C480 - 2C4BF - 0xffff, 0x24b2, 0xffff, 0x25d3, 0xffff, 0x26dd, 0x2788, 0x282a, - 0x28ae, 0xffff, 0xffff, 0x29d0, 0x2a6c, 0x2b4a, 0xffff, 0xffff, - 0xffff, 0x2c4f, 0xffff, 0x2d67, 0x2e3c, 0xffff, 0x2fb7, 0x30ce, - 0x31f7, 0xffff, 0xffff, 0xffff, 0xffff, 0x335f, 0xffff, 0xffff, - 0x3448, 0x3538, 0xffff, 0xffff, 0x367c, 0x373f, 0x37fc, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a3a, 0x3ae5, 0x3bb7, - 0x3c77, 0xffff, 0xffff, 0xffff, 0x3dea, 0xffff, 0x3eba, 0xffff, - 0xffff, 0x4031, 0xffff, 0x41cd, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2C4C0 - 2C4FF - 0x4327, 0xffff, 0x442a, 0x4535, 0x4619, 0x46cc, 0xffff, 0xffff, - 0xffff, 0x47ef, 0x48b2, 0x497e, 0xffff, 0xffff, 0x4aa0, 0x4bd0, - 0x4cd5, 0x4d92, 0xffff, 0xffff, 0x4eab, 0x4f77, 0x5022, 0xffff, - 0x512e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x53bc, 0xffff, - 0x5482, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x562b, 0xffff, 0xffff, 0x5720, 0xffff, 0x57ba, 0xffff, 0x5893, - 0x5962, 0x5a2e, 0xffff, 0x5b0a, 0x5bbb, 0xffff, 0xffff, 0xffff, - 0x5cd8, 0x5d65, 0xffff, 0xffff, 0x1076, 0x13d5, 0x17fb, 0x1891, - // Entry 2C500 - 2C53F - 0xffff, 0xffff, 0x40fd, 0x52cf, 0x009e, 0x0042, 0x1115, 0x1144, - 0x117e, 0x11d0, 0x125c, 0x1364, 0x1496, 0x1544, 0x15c5, 0x166a, - 0x1709, 0xffff, 0x1796, 0x1955, 0x1a0c, 0x1b11, 0x1c13, 0x1cb5, - 0x1d7e, 0x1e9b, 0x1ff1, 0x2135, 0x224f, 0x230c, 0x23d6, 0x245f, - 0x2484, 0x24e9, 0x2587, 0x25fe, 0x26b2, 0x2702, 0x27aa, 0x2846, - 0x28df, 0x295f, 0x299c, 0x29f5, 0x2a9a, 0x2b66, 0x2bd4, 0x2bf0, - 0x2c1b, 0x2c89, 0x2d39, 0x2d98, 0x2e85, 0x2f59, 0x3000, 0x311d, - 0x3210, 0x3272, 0x32b2, 0x3306, 0x3340, 0x337b, 0x33e3, 0x341d, - // Entry 2C540 - 2C57F - 0x348e, 0x3575, 0x3632, 0x365a, 0x36ae, 0x3767, 0x3821, 0x38b3, - 0x38d3, 0x3913, 0x3938, 0x397e, 0x39dc, 0x3a5f, 0x3b19, 0x3beb, - 0x3ca2, 0xffff, 0x3d34, 0x3d8f, 0x3e0c, 0x3e9e, 0x3efa, 0x3fb6, - 0x3ffa, 0x405c, 0x418a, 0x41f5, 0x4275, 0x42a3, 0x42c2, 0x42e7, - 0x435e, 0x440e, 0x4479, 0x4572, 0x4645, 0x46f4, 0x4780, 0x479c, - 0x47c7, 0x4820, 0x48e3, 0x49b2, 0x4a44, 0x4a63, 0x4add, 0x4c13, - 0x4d00, 0x4dc0, 0x4e64, 0x4e83, 0x4ed9, 0x4f99, 0x5056, 0x50fa, - 0x5187, 0x526f, 0x5294, 0x52b0, 0x5365, 0x539c, 0x53ea, 0xffff, - // Entry 2C580 - 2C5BF - 0x549e, 0x5506, 0x5537, 0x5565, 0x559f, 0x55c4, 0x55f2, 0x560c, - 0x564d, 0x56d0, 0x56fb, 0x573c, 0x57a4, 0x57e8, 0x5874, 0x58c4, - 0x5996, 0x5a53, 0x5acd, 0x5b35, 0x5be0, 0x5c5a, 0x5c7a, 0x5c9c, - 0x5cf7, 0x5d99, 0x361c, 0x4b87, 0x109b, 0x13f4, 0x181d, 0x18b3, - 0x2699, 0x3fde, 0x411c, 0x52f1, 0x009e, 0x0042, 0xffff, 0xffff, - 0xffff, 0xffff, 0x12cf, 0x139e, 0x14e2, 0x1572, 0x1605, 0x16aa, - 0x1743, 0xffff, 0x17ca, 0x19a1, 0x1a64, 0x1b81, 0x1c4d, 0x1cfb, - 0x1ddf, 0x1f1d, 0x206a, 0x21ae, 0x2295, 0x235b, 0x241a, 0xffff, - // Entry 2C5C0 - 2C5FF - 0xffff, 0x2526, 0xffff, 0x264d, 0xffff, 0x2748, 0x27ea, 0x2874, - 0x291c, 0xffff, 0xffff, 0x2a2f, 0x2ae0, 0x2ba3, 0xffff, 0xffff, - 0xffff, 0x2ce1, 0xffff, 0x2de7, 0x2ef2, 0xffff, 0x3067, 0x318a, - 0x3241, 0xffff, 0xffff, 0xffff, 0xffff, 0x33af, 0xffff, 0xffff, - 0x34e3, 0x35ca, 0xffff, 0xffff, 0x36f8, 0x37b0, 0x386a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3aa2, 0x3b68, 0x3c3d, - 0x3cee, 0xffff, 0xffff, 0xffff, 0x3e58, 0xffff, 0x3f58, 0xffff, - 0xffff, 0x40a8, 0xffff, 0x4235, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2C600 - 2C63F - 0x43b3, 0xffff, 0x44e6, 0x45c7, 0x4689, 0x473a, 0xffff, 0xffff, - 0xffff, 0x4869, 0x4932, 0x4a07, 0xffff, 0xffff, 0x4b32, 0x4c74, - 0x4d49, 0x4e0f, 0xffff, 0xffff, 0x4f28, 0x4fdf, 0x50a8, 0xffff, - 0x51fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5436, 0xffff, - 0x54d2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x5690, 0xffff, 0xffff, 0x5770, 0xffff, 0x582e, 0xffff, 0x5913, - 0x59e2, 0x5a90, 0xffff, 0x5b78, 0x5c1d, 0xffff, 0xffff, 0xffff, - 0x5d2e, 0x5de5, 0xffff, 0xffff, 0x10d8, 0x142b, 0x1857, 0x18ed, - // Entry 2C640 - 2C67F - 0xffff, 0xffff, 0x4153, 0x532b, 0x0003, 0x0004, 0x012e, 0x0201, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, 0x04a5, - 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x0000, 0x00a6, - // Entry 2C680 - 2C6BF - 0x00db, 0x00f3, 0x00fb, 0x010c, 0x011d, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0043, 0xffff, 0x0000, - 0x000d, 0x001a, 0x0023, 0x002e, 0x0035, 0x0040, 0x004b, 0x0056, - 0x0065, 0x0074, 0x0081, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x29da, 0x2398, 0x000d, 0x0043, 0xffff, 0x0000, 0x000d, 0x001a, - 0x0023, 0x002e, 0x0035, 0x0040, 0x004b, 0x0056, 0x0065, 0x0074, - 0x0081, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0043, 0xffff, - // Entry 2C6C0 - 2C6FF - 0x0000, 0x000d, 0x001a, 0x0023, 0x002e, 0x0035, 0x0040, 0x004b, - 0x0056, 0x0065, 0x0074, 0x0081, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x29da, 0x2398, 0x000d, 0x0043, 0xffff, 0x0000, 0x000d, - 0x001a, 0x0023, 0x002e, 0x0035, 0x0040, 0x004b, 0x0056, 0x0065, - 0x0074, 0x0081, 0x0002, 0x00a9, 0x00c2, 0x0003, 0x00ad, 0x00b4, - 0x00bb, 0x0005, 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - // Entry 2C700 - 2C73F - 0x0000, 0xffff, 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x0003, 0x00c6, - 0x00cd, 0x00d4, 0x0005, 0x0043, 0xffff, 0x008e, 0x00a2, 0x00a5, - 0x00a8, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0043, 0xffff, 0x008e, 0x00ab, 0x00c1, 0x00d7, 0x0001, - 0x00dd, 0x0003, 0x00e1, 0x0000, 0x00ea, 0x0002, 0x00e4, 0x00e7, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x00ed, - 0x00f0, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x00f5, 0x0001, 0x00f7, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, - // Entry 2C740 - 2C77F - 0x0109, 0x0103, 0x0100, 0x0106, 0x0001, 0x0000, 0x04fc, 0x0001, - 0x0000, 0x050b, 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, - 0x0004, 0x011a, 0x0114, 0x0111, 0x0117, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0004, 0x012b, 0x0125, 0x0122, 0x0128, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0040, 0x016f, 0x0000, 0x0000, 0x0174, 0x0179, - 0x017e, 0x0183, 0x0188, 0x018d, 0x0192, 0x0197, 0x019c, 0x01a1, - // Entry 2C780 - 2C7BF - 0x01a6, 0x01ab, 0x0000, 0x0000, 0x0000, 0x01b0, 0x01bb, 0x01c0, - 0x0000, 0x0000, 0x0000, 0x01c5, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ca, - 0x0000, 0x01cf, 0x01d4, 0x01d9, 0x01de, 0x01e3, 0x01e8, 0x01ed, - 0x01f2, 0x01f7, 0x01fc, 0x0001, 0x0171, 0x0001, 0x0043, 0x00ed, - 0x0001, 0x0176, 0x0001, 0x0021, 0x0765, 0x0001, 0x017b, 0x0001, - // Entry 2C7C0 - 2C7FF - 0x0021, 0x0765, 0x0001, 0x0180, 0x0001, 0x0021, 0x0765, 0x0001, - 0x0185, 0x0001, 0x0043, 0x00f6, 0x0001, 0x018a, 0x0001, 0x0043, - 0x00f6, 0x0001, 0x018f, 0x0001, 0x0043, 0x00f6, 0x0001, 0x0194, - 0x0001, 0x0043, 0x0101, 0x0001, 0x0199, 0x0001, 0x0043, 0x0101, - 0x0001, 0x019e, 0x0001, 0x0043, 0x0101, 0x0001, 0x01a3, 0x0001, - 0x0043, 0x0106, 0x0001, 0x01a8, 0x0001, 0x0043, 0x0106, 0x0001, - 0x01ad, 0x0001, 0x0043, 0x0106, 0x0002, 0x01b3, 0x01b6, 0x0001, - 0x0043, 0x0111, 0x0003, 0x0043, 0x011a, 0x0127, 0x0132, 0x0001, - // Entry 2C800 - 2C83F - 0x01bd, 0x0001, 0x0043, 0x0111, 0x0001, 0x01c2, 0x0001, 0x0043, - 0x0111, 0x0001, 0x01c7, 0x0001, 0x0043, 0x013f, 0x0001, 0x01cc, - 0x0001, 0x0043, 0x0153, 0x0001, 0x01d1, 0x0001, 0x0043, 0x0163, - 0x0001, 0x01d6, 0x0001, 0x0043, 0x0163, 0x0001, 0x01db, 0x0001, - 0x0043, 0x0163, 0x0001, 0x01e0, 0x0001, 0x0043, 0x016c, 0x0001, - 0x01e5, 0x0001, 0x0043, 0x016c, 0x0001, 0x01ea, 0x0001, 0x0043, - 0x016c, 0x0001, 0x01ef, 0x0001, 0x0043, 0x0177, 0x0001, 0x01f4, - 0x0001, 0x0043, 0x0177, 0x0001, 0x01f9, 0x0001, 0x0043, 0x0177, - // Entry 2C840 - 2C87F - 0x0001, 0x01fe, 0x0001, 0x0043, 0x0182, 0x0004, 0x0000, 0x0206, - 0x0000, 0x0209, 0x0001, 0x0000, 0x1de0, 0x0002, 0x0000, 0x020c, - 0x0003, 0x0210, 0x0224, 0x021a, 0x0008, 0x0043, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x018f, 0x0008, 0x0043, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x01a9, - 0x0008, 0x0043, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x01da, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - // Entry 2C880 - 2C8BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0003, 0x0004, - 0x08c7, 0x0e0b, 0x0012, 0x0017, 0x0024, 0x0158, 0x01d9, 0x030d, - 0x038e, 0x03a2, 0x03cd, 0x05f0, 0x067a, 0x06dd, 0x0000, 0x0000, - 0x0000, 0x0000, 0x074f, 0x0847, 0x08b9, 0x0005, 0x0000, 0x0000, - 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, - 0x0000, 0x0000, 0x000a, 0x002f, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2C8C0 - 2C8FF - 0x0136, 0x0000, 0x0147, 0x0094, 0x00a7, 0x0002, 0x0032, 0x0063, - 0x0003, 0x0036, 0x0045, 0x0054, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, - 0x2398, 0x0003, 0x0067, 0x0076, 0x0085, 0x000d, 0x0000, 0xffff, - // Entry 2C900 - 2C93F - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x29da, 0x2398, 0x0003, 0x0098, 0x00a3, 0x009d, 0x0003, 0x0000, - 0xffff, 0xffff, 0x004e, 0x0004, 0x0000, 0xffff, 0xffff, 0xffff, - 0x004e, 0x0002, 0x0000, 0xffff, 0x0055, 0x0006, 0x00ae, 0x0000, - // Entry 2C940 - 2C97F - 0x0000, 0x00c1, 0x00e0, 0x0123, 0x0001, 0x00b0, 0x0001, 0x00b2, - 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, - 0x2a54, 0x25d6, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, - 0x00c3, 0x0001, 0x00c5, 0x0019, 0x0043, 0xffff, 0x0203, 0x0216, - 0x0225, 0x023a, 0x0250, 0x0258, 0x0266, 0x0277, 0x027f, 0x0293, - 0x02a9, 0x02bc, 0x02cd, 0x02dd, 0x02f0, 0x02fb, 0x030e, 0x031a, - 0x0322, 0x0333, 0x0346, 0x0357, 0x036d, 0x037f, 0x0001, 0x00e2, - 0x0001, 0x00e4, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, - // Entry 2C980 - 2C9BF - 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, - 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, - 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, - 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, - 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, - 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, - 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, - 0x0390, 0x0001, 0x0125, 0x0001, 0x0127, 0x000d, 0x0043, 0xffff, - // Entry 2C9C0 - 2C9FF - 0x038f, 0x0398, 0x039f, 0x03a6, 0x03af, 0x03b8, 0x03c0, 0x03c7, - 0x03cd, 0x03da, 0x03e1, 0x03e6, 0x0004, 0x0144, 0x013e, 0x013b, - 0x0141, 0x0001, 0x0043, 0x03ee, 0x0001, 0x0032, 0x00ef, 0x0001, - 0x0032, 0x00f8, 0x0001, 0x0000, 0x051c, 0x0004, 0x0155, 0x014f, - 0x014c, 0x0152, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x015e, - 0x0000, 0x0000, 0x0000, 0x01c9, 0x0002, 0x0161, 0x0195, 0x0003, - 0x0165, 0x0175, 0x0185, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, - // Entry 2CA00 - 2CA3F - 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, - 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, - 0x29da, 0x2398, 0x0422, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, - 0x03d8, 0x03de, 0x03e4, 0x259e, 0x25a5, 0x03f9, 0x25ae, 0x040b, - 0x0411, 0x0416, 0x041c, 0x0003, 0x0199, 0x01a9, 0x01b9, 0x000e, - 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, - 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, - // Entry 2CA40 - 2CA7F - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, - 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x259e, - 0x25a5, 0x03f9, 0x25ae, 0x040b, 0x0411, 0x0416, 0x041c, 0x0003, - 0x01d3, 0x0000, 0x01cd, 0x0001, 0x01cf, 0x0002, 0x0000, 0x0425, - 0x042a, 0x0001, 0x01d5, 0x0002, 0x0000, 0x0425, 0x042a, 0x000a, - 0x01e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x02eb, 0x0000, 0x02fc, - 0x0249, 0x025c, 0x0002, 0x01e7, 0x0218, 0x0003, 0x01eb, 0x01fa, - // Entry 2CA80 - 2CABF - 0x0209, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0003, 0x021c, - 0x022b, 0x023a, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, - // Entry 2CAC0 - 2CAFF - 0x2398, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0003, - 0x024d, 0x0258, 0x0252, 0x0003, 0x0000, 0xffff, 0xffff, 0x004e, - 0x0004, 0x0000, 0xffff, 0xffff, 0xffff, 0x004e, 0x0002, 0x0000, - 0xffff, 0x0055, 0x0006, 0x0263, 0x0000, 0x0000, 0x0276, 0x0295, - 0x02d8, 0x0001, 0x0265, 0x0001, 0x0267, 0x000d, 0x0000, 0xffff, - // Entry 2CB00 - 2CB3F - 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x2a54, 0x25d6, 0x0075, - 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x0278, 0x0001, 0x027a, - 0x0019, 0x0043, 0xffff, 0x0203, 0x0216, 0x0225, 0x023a, 0x0250, - 0x0258, 0x0266, 0x0277, 0x027f, 0x0293, 0x02a9, 0x02bc, 0x02cd, - 0x02dd, 0x02f0, 0x02fb, 0x030e, 0x031a, 0x0322, 0x0333, 0x0346, - 0x0357, 0x036d, 0x037f, 0x0001, 0x0297, 0x0001, 0x0299, 0x003d, - 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, 0x01de, 0x01e6, - 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, 0x021b, 0x0223, - // Entry 2CB40 - 2CB7F - 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, 0x025b, 0x0264, - 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, 0x029b, 0x02a4, - 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, 0x02d9, 0x02e1, - 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, 0x031a, 0x0322, - 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, 0x0358, 0x0362, - 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, 0x0001, 0x02da, - 0x0001, 0x02dc, 0x000d, 0x0043, 0xffff, 0x038f, 0x0398, 0x039f, - 0x03a6, 0x03af, 0x03b8, 0x03c0, 0x03c7, 0x03cd, 0x03da, 0x03e1, - // Entry 2CB80 - 2CBBF - 0x03e6, 0x0004, 0x02f9, 0x02f3, 0x02f0, 0x02f6, 0x0001, 0x0043, - 0x03ee, 0x0001, 0x0032, 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, - 0x0000, 0x051c, 0x0004, 0x030a, 0x0304, 0x0301, 0x0307, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0005, 0x0313, 0x0000, 0x0000, 0x0000, - 0x037e, 0x0002, 0x0316, 0x034a, 0x0003, 0x031a, 0x032a, 0x033a, - 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, - 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, - // Entry 2CBC0 - 2CBFF - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, - 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x2542, 0x2548, 0x044c, - 0x0450, 0x0458, 0x0460, 0x254f, 0x046e, 0x2556, 0x0479, 0x0481, - 0x0003, 0x034e, 0x035e, 0x036e, 0x000e, 0x0000, 0xffff, 0x042f, - 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, - 0x046e, 0x2556, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - // Entry 2CC00 - 2CC3F - 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, 0x0000, 0xffff, 0x042f, - 0x0438, 0x2542, 0x2548, 0x044c, 0x0450, 0x0458, 0x0460, 0x254f, - 0x046e, 0x2556, 0x0479, 0x0481, 0x0003, 0x0388, 0x0000, 0x0382, - 0x0001, 0x0384, 0x0002, 0x0000, 0x0425, 0x042a, 0x0001, 0x038a, - 0x0002, 0x0000, 0x0425, 0x042a, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0394, 0x0003, 0x039d, 0x0000, 0x0398, 0x0001, 0x039a, - 0x0001, 0x0000, 0x0425, 0x0001, 0x039f, 0x0001, 0x0000, 0x0425, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ab, 0x0000, - // Entry 2CC40 - 2CC7F - 0x03bc, 0x0004, 0x03b9, 0x03b3, 0x03b0, 0x03b6, 0x0001, 0x0043, - 0x03fd, 0x0001, 0x0043, 0x040e, 0x0001, 0x0043, 0x0419, 0x0001, - 0x0043, 0x0423, 0x0004, 0x03ca, 0x03c4, 0x03c1, 0x03c7, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0008, 0x03d6, 0x043b, 0x0492, 0x04c7, - 0x0598, 0x05bd, 0x05ce, 0x05df, 0x0002, 0x03d9, 0x040a, 0x0003, - 0x03dd, 0x03ec, 0x03fb, 0x000d, 0x0043, 0xffff, 0x042d, 0x0433, - 0x0438, 0x043d, 0x0442, 0x0447, 0x044e, 0x0454, 0x045a, 0x0460, - // Entry 2CC80 - 2CCBF - 0x0466, 0x046d, 0x000d, 0x0000, 0xffff, 0x298e, 0x2485, 0x25bc, - 0x24f9, 0x2281, 0x24f9, 0x2994, 0x223e, 0x223e, 0x298e, 0x2994, - 0x2281, 0x000d, 0x0043, 0xffff, 0x0474, 0x047b, 0x0483, 0x0488, - 0x0493, 0x049d, 0x04a7, 0x04ae, 0x04ba, 0x04c3, 0x04ca, 0x04d5, - 0x0003, 0x040e, 0x041d, 0x042c, 0x000d, 0x0043, 0xffff, 0x042d, - 0x0433, 0x0438, 0x043d, 0x0442, 0x0447, 0x044e, 0x0454, 0x045a, - 0x0460, 0x0466, 0x046d, 0x000d, 0x0000, 0xffff, 0x298e, 0x2485, - 0x25bc, 0x24f9, 0x2281, 0x24f9, 0x2994, 0x223e, 0x223e, 0x298e, - // Entry 2CCC0 - 2CCFF - 0x2994, 0x2281, 0x000d, 0x0043, 0xffff, 0x04df, 0x04e6, 0x04ee, - 0x04f4, 0x04fd, 0x0506, 0x0510, 0x0516, 0x0521, 0x052b, 0x0532, - 0x053c, 0x0002, 0x043e, 0x0468, 0x0005, 0x0444, 0x044d, 0x045f, - 0x0000, 0x0456, 0x0007, 0x0043, 0x0544, 0x0547, 0x054a, 0x054d, - 0x0550, 0x0553, 0x0556, 0x0007, 0x0000, 0x298e, 0x255c, 0x2980, - 0x2992, 0x25bc, 0x255c, 0x2a57, 0x0007, 0x0043, 0x055a, 0x055d, - 0x0560, 0x0563, 0x0566, 0x0569, 0x056c, 0x0007, 0x0043, 0x0570, - 0x057c, 0x0588, 0x0594, 0x05a2, 0x05b1, 0x05be, 0x0005, 0x046e, - // Entry 2CD00 - 2CD3F - 0x0477, 0x0489, 0x0000, 0x0480, 0x0007, 0x0043, 0x0544, 0x0547, - 0x054a, 0x054d, 0x0550, 0x0553, 0x0556, 0x0007, 0x0000, 0x298e, - 0x255c, 0x2980, 0x2992, 0x25bc, 0x255c, 0x2a57, 0x0007, 0x0043, - 0x055a, 0x055d, 0x0560, 0x0563, 0x0566, 0x0569, 0x056c, 0x0007, - 0x0043, 0x0570, 0x057c, 0x0588, 0x0594, 0x05a2, 0x05b1, 0x05be, - 0x0002, 0x0495, 0x04ae, 0x0003, 0x0499, 0x04a0, 0x04a7, 0x0005, - 0x0043, 0xffff, 0x05cc, 0x05d1, 0x05d7, 0x05de, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0043, 0xffff, - // Entry 2CD40 - 2CD7F - 0x05e4, 0x05f0, 0x05fd, 0x060b, 0x0003, 0x04b2, 0x04b9, 0x04c0, - 0x0005, 0x0043, 0xffff, 0x0618, 0x0620, 0x0629, 0x0633, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0043, - 0xffff, 0x05e4, 0x05f0, 0x05fd, 0x060b, 0x0002, 0x04ca, 0x0531, - 0x0003, 0x04ce, 0x04ef, 0x0510, 0x0008, 0x04da, 0x04e0, 0x04d7, - 0x04e3, 0x04e6, 0x04e9, 0x04ec, 0x04dd, 0x0001, 0x0043, 0x063c, - 0x0001, 0x0043, 0x0648, 0x0001, 0x0043, 0x0653, 0x0001, 0x0043, - 0x065b, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0668, 0x0001, - // Entry 2CD80 - 2CDBF - 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0008, 0x04fb, 0x0501, - 0x04f8, 0x0504, 0x0507, 0x050a, 0x050d, 0x04fe, 0x0001, 0x0043, - 0x063c, 0x0001, 0x0043, 0x0680, 0x0001, 0x0043, 0x0653, 0x0001, - 0x002f, 0x004f, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0668, - 0x0001, 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0008, 0x051c, - 0x0522, 0x0519, 0x0525, 0x0528, 0x052b, 0x052e, 0x051f, 0x0001, - 0x0043, 0x063c, 0x0001, 0x0043, 0x0648, 0x0001, 0x0043, 0x0653, - 0x0001, 0x0043, 0x065b, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, - // Entry 2CDC0 - 2CDFF - 0x0668, 0x0001, 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0003, - 0x0535, 0x0556, 0x0577, 0x0008, 0x0541, 0x0547, 0x053e, 0x054a, - 0x054d, 0x0550, 0x0553, 0x0544, 0x0001, 0x0043, 0x063c, 0x0001, - 0x0043, 0x0648, 0x0001, 0x0043, 0x0687, 0x0001, 0x0043, 0x065b, - 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0693, 0x0001, 0x0043, - 0x0671, 0x0001, 0x0043, 0x0679, 0x0008, 0x0562, 0x0568, 0x055f, - 0x056b, 0x056e, 0x0571, 0x0574, 0x0565, 0x0001, 0x0043, 0x063c, - 0x0001, 0x0043, 0x0680, 0x0001, 0x0043, 0x0687, 0x0001, 0x002f, - // Entry 2CE00 - 2CE3F - 0x004f, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0693, 0x0001, - 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0008, 0x0583, 0x0589, - 0x0580, 0x058c, 0x058f, 0x0592, 0x0595, 0x0586, 0x0001, 0x0043, - 0x063c, 0x0001, 0x0043, 0x0648, 0x0001, 0x0043, 0x0687, 0x0001, - 0x0043, 0x065b, 0x0001, 0x0043, 0x0662, 0x0001, 0x0043, 0x0693, - 0x0001, 0x0043, 0x0671, 0x0001, 0x0043, 0x0679, 0x0003, 0x05a7, - 0x05b2, 0x059c, 0x0002, 0x059f, 0x05a3, 0x0002, 0x0043, 0x0699, - 0x06bb, 0x0002, 0x0043, 0x06a8, 0x06c7, 0x0002, 0x05aa, 0x05ae, - // Entry 2CE40 - 2CE7F - 0x0002, 0x002e, 0x0198, 0x38b6, 0x0002, 0x0043, 0x06d4, 0x06c7, - 0x0002, 0x05b5, 0x05b9, 0x0002, 0x002e, 0x0198, 0x38b6, 0x0002, - 0x0043, 0x06de, 0x06e3, 0x0004, 0x05cb, 0x05c5, 0x05c2, 0x05c8, - 0x0001, 0x0043, 0x06e8, 0x0001, 0x0043, 0x0701, 0x0001, 0x0000, - 0x051c, 0x0001, 0x0000, 0x051c, 0x0004, 0x05dc, 0x05d6, 0x05d3, - 0x05d9, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x05ed, 0x05e7, - 0x05e4, 0x05ea, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 2CE80 - 2CEBF - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, 0x05f7, - 0x0000, 0x0000, 0x0000, 0x0662, 0x0669, 0x0002, 0x05fa, 0x062e, - 0x0003, 0x05fe, 0x060e, 0x061e, 0x000e, 0x0000, 0x25f2, 0x054c, - 0x0553, 0x25d9, 0x25e0, 0x0568, 0x25e6, 0x25ed, 0x25fa, 0x2600, - 0x2605, 0x260b, 0x2611, 0x2614, 0x000e, 0x0000, 0x003f, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x221d, 0x29da, 0x2398, 0x0422, 0x000e, 0x0000, 0x25f2, 0x054c, - 0x0553, 0x25d9, 0x25e0, 0x0568, 0x25e6, 0x25ed, 0x25fa, 0x2600, - // Entry 2CEC0 - 2CEFF - 0x2605, 0x260b, 0x2611, 0x2614, 0x0003, 0x0632, 0x0642, 0x0652, - 0x000e, 0x0000, 0x25f2, 0x054c, 0x0553, 0x25d9, 0x25e0, 0x0568, - 0x25e6, 0x25ed, 0x25fa, 0x2600, 0x2605, 0x260b, 0x2611, 0x2614, - 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x0422, - 0x000e, 0x0000, 0x25f2, 0x054c, 0x0553, 0x25d9, 0x25e0, 0x0568, - 0x25e6, 0x25ed, 0x25fa, 0x2600, 0x2605, 0x260b, 0x2611, 0x2614, - 0x0001, 0x0664, 0x0001, 0x0666, 0x0001, 0x0000, 0x04ef, 0x0004, - // Entry 2CF00 - 2CF3F - 0x0677, 0x0671, 0x066e, 0x0674, 0x0001, 0x0043, 0x03fd, 0x0001, - 0x0043, 0x040e, 0x0001, 0x0043, 0x0419, 0x0001, 0x0043, 0x0423, - 0x0005, 0x0680, 0x0000, 0x0000, 0x0000, 0x06d6, 0x0002, 0x0683, - 0x06a5, 0x0003, 0x0687, 0x0000, 0x0696, 0x000d, 0x0000, 0xffff, - 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, - 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, - 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, - 0x05ec, 0x05f2, 0x05f8, 0x0003, 0x06a9, 0x06b8, 0x06c7, 0x000d, - // Entry 2CF40 - 2CF7F - 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, - 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, 0xffff, - 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, - 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x0001, 0x06d8, 0x0001, 0x06da, - 0x0001, 0x0000, 0x0601, 0x0005, 0x06e3, 0x0000, 0x0000, 0x0000, - 0x0748, 0x0002, 0x06e6, 0x0717, 0x0003, 0x06ea, 0x06f9, 0x0708, - // Entry 2CF80 - 2CFBF - 0x000d, 0x0000, 0xffff, 0x0606, 0x2619, 0x2563, 0x256a, 0x061f, - 0x0626, 0x2572, 0x0633, 0x261e, 0x063d, 0x0643, 0x064d, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, 0x0000, - 0xffff, 0x0657, 0x2629, 0x0666, 0x066f, 0x0679, 0x0682, 0x2582, - 0x0692, 0x2588, 0x06a3, 0x06ab, 0x06ba, 0x0003, 0x071b, 0x072a, - 0x0739, 0x000d, 0x0000, 0xffff, 0x0606, 0x2619, 0x2563, 0x256a, - 0x061f, 0x0626, 0x2572, 0x0633, 0x261e, 0x063d, 0x0643, 0x064d, - // Entry 2CFC0 - 2CFFF - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, 0x000d, - 0x0000, 0xffff, 0x0657, 0x2629, 0x0666, 0x066f, 0x0679, 0x0682, - 0x2582, 0x0692, 0x2588, 0x06a3, 0x06ab, 0x06ba, 0x0001, 0x074a, - 0x0001, 0x074c, 0x0001, 0x0000, 0x06c8, 0x0005, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0755, 0x0001, 0x0757, 0x0001, 0x0759, 0x00ec, - 0x0000, 0x06cb, 0x2a5a, 0x2a6e, 0x2a81, 0x2a94, 0x072c, 0x2aa6, - 0x0750, 0x2ab7, 0x0775, 0x2ac8, 0x2adb, 0x2af4, 0x2b0d, 0x2b26, - // Entry 2D000 - 2D03F - 0x2b3f, 0x2b58, 0x2b69, 0x2b7b, 0x2b8f, 0x2ba1, 0x2bb3, 0x2bc6, - 0x2bd8, 0x08b5, 0x2649, 0x2be9, 0x2bfb, 0x266e, 0x2c0d, 0x2c1f, - 0x2c32, 0x094e, 0x2c45, 0x2c57, 0x2c6a, 0x2c7d, 0x09ae, 0x2c92, - 0x2ca2, 0x2cb3, 0x09f7, 0x2cc3, 0x2cd6, 0x0a33, 0x0a46, 0x2ce8, - 0x2cf9, 0x0a7b, 0x2d0b, 0x2d20, 0x2d34, 0x2d47, 0x2d5b, 0x2d6f, - 0x2d83, 0x2d98, 0x2daf, 0x2dc4, 0x2ddb, 0x0b77, 0x2df0, 0x0ba2, - 0x2e04, 0x2e18, 0x2e30, 0x2e44, 0x2e58, 0x2e6f, 0x2e81, 0x2e95, - 0x26dd, 0x2eab, 0x2ebf, 0x2ed5, 0x2ee8, 0x2efe, 0x2f12, 0x0cf2, - // Entry 2D040 - 2D07F - 0x2f26, 0x2f3a, 0x271a, 0x2f4f, 0x2f65, 0x2f7b, 0x2f90, 0x272d, - 0x2fa5, 0x2fba, 0x2fcf, 0x2fe3, 0x0e04, 0x2ff7, 0x2755, 0x300b, - 0x3021, 0x3037, 0x3049, 0x0e96, 0x305e, 0x3073, 0x3085, 0x0ee9, - 0x3099, 0x30af, 0x30c2, 0x30d7, 0x30ee, 0x3104, 0x3119, 0x312f, - 0x3143, 0x3158, 0x316d, 0x3182, 0x3199, 0x31ad, 0x31c2, 0x31d5, - 0x1051, 0x1066, 0x107a, 0x31e9, 0x27d3, 0x31fe, 0x10cf, 0x3215, - 0x322c, 0x323f, 0x1124, 0x3255, 0x326a, 0x327f, 0x3293, 0x32a7, - 0x32bc, 0x32d0, 0x32e4, 0x32f9, 0x330f, 0x3322, 0x1224, 0x3334, - // Entry 2D080 - 2D0BF - 0x124d, 0x1262, 0x3348, 0x280f, 0x335f, 0x3372, 0x3386, 0x339a, - 0x33af, 0x33c6, 0x2839, 0x1335, 0x33db, 0x33ef, 0x1374, 0x3402, - 0x3417, 0x13b4, 0x342c, 0x3441, 0x3457, 0x346d, 0x3480, 0x1435, - 0x144b, 0x3495, 0x1473, 0x34a6, 0x34b8, 0x34cd, 0x14c8, 0x34e1, - 0x34f6, 0x350b, 0x3521, 0x3535, 0x354b, 0x3560, 0x3575, 0x158f, - 0x3588, 0x15bb, 0x359d, 0x15e4, 0x35b0, 0x160d, 0x35c4, 0x2861, - 0x35da, 0x1661, 0x1676, 0x35ef, 0x16a0, 0x3604, 0x3619, 0x362d, - 0x3642, 0x170c, 0x3656, 0x3668, 0x367f, 0x175e, 0x3695, 0x36a8, - // Entry 2D0C0 - 2D0FF - 0x36bc, 0x17b1, 0x36d2, 0x36e5, 0x36fb, 0x1808, 0x370f, 0x3723, - 0x3737, 0x374c, 0x3762, 0x3776, 0x189e, 0x18b3, 0x378a, 0x18dd, - 0x18f1, 0x379e, 0x37b2, 0x192f, 0x1942, 0x37c5, 0x37da, 0x37ef, - 0x3805, 0x3819, 0x3821, 0x3828, 0x292a, 0x0005, 0x084d, 0x0000, - 0x0000, 0x0000, 0x08b2, 0x0002, 0x0850, 0x0881, 0x0003, 0x0854, - 0x0863, 0x0872, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, - 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, - 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - // Entry 2D100 - 2D13F - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, 0x2398, - 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, - 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0003, - 0x0885, 0x0894, 0x08a3, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, - 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, - 0x1a0f, 0x1a16, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x221d, 0x29da, - 0x2398, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, - // Entry 2D140 - 2D17F - 0x19eb, 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, - 0x0001, 0x08b4, 0x0001, 0x08b6, 0x0001, 0x0000, 0x1a1d, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x08bf, 0x0001, 0x08c1, 0x0001, - 0x08c3, 0x0002, 0x0043, 0x0714, 0x0722, 0x0040, 0x0908, 0x0000, - 0x0000, 0x090d, 0x092c, 0x0946, 0x0960, 0x097f, 0x0999, 0x09b3, - 0x09d2, 0x09ec, 0x0a06, 0x0a29, 0x0a47, 0x0000, 0x0000, 0x0000, - 0x0a65, 0x0a86, 0x0aa0, 0x0000, 0x0000, 0x0000, 0x0aba, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0abf, 0x0adb, 0x0af7, 0x0b13, - // Entry 2D180 - 2D1BF - 0x0b2f, 0x0b4b, 0x0b67, 0x0b83, 0x0b9f, 0x0bbb, 0x0bd7, 0x0bf3, - 0x0c0f, 0x0c2b, 0x0c47, 0x0c63, 0x0c7f, 0x0c9b, 0x0cb7, 0x0cd3, - 0x0cef, 0x0000, 0x0d0b, 0x0000, 0x0d10, 0x0d2e, 0x0d48, 0x0d62, - 0x0d80, 0x0d9a, 0x0db4, 0x0dd2, 0x0dec, 0x0e06, 0x0001, 0x090a, - 0x0001, 0x0001, 0x0040, 0x0003, 0x0911, 0x0914, 0x0919, 0x0001, - 0x0043, 0x0729, 0x0003, 0x0043, 0x072f, 0x0743, 0x0751, 0x0002, - 0x091c, 0x0924, 0x0006, 0x0043, 0x075f, 0x075f, 0xffff, 0xffff, - 0x075f, 0x075f, 0x0006, 0x0043, 0x077d, 0x076c, 0xffff, 0xffff, - // Entry 2D1C0 - 2D1FF - 0x076c, 0x077d, 0x0003, 0x0930, 0x0000, 0x0933, 0x0001, 0x0029, - 0x0080, 0x0002, 0x0936, 0x093e, 0x0006, 0x0043, 0x078e, 0x078e, - 0xffff, 0xffff, 0x078e, 0x078e, 0x0006, 0x0043, 0x077d, 0x0798, - 0xffff, 0xffff, 0x0798, 0x0798, 0x0003, 0x094a, 0x0000, 0x094d, - 0x0001, 0x0029, 0x0080, 0x0002, 0x0950, 0x0958, 0x0006, 0x0043, - 0x078e, 0x078e, 0xffff, 0xffff, 0x078e, 0x078e, 0x0006, 0x0043, - 0x0798, 0x0798, 0xffff, 0xffff, 0x0798, 0x0798, 0x0003, 0x0964, - 0x0967, 0x096c, 0x0001, 0x0043, 0x07a6, 0x0003, 0x0043, 0x07b0, - // Entry 2D200 - 2D23F - 0x07c4, 0x07d3, 0x0002, 0x096f, 0x0977, 0x0006, 0x0043, 0x07f5, - 0x07e3, 0xffff, 0xffff, 0x07f5, 0x07e3, 0x0006, 0x0043, 0x084a, - 0x0808, 0xffff, 0xffff, 0x081d, 0x0834, 0x0003, 0x0983, 0x0000, - 0x0986, 0x0001, 0x0043, 0x0861, 0x0002, 0x0989, 0x0991, 0x0006, - 0x0043, 0x0867, 0x0867, 0xffff, 0xffff, 0x0867, 0x0867, 0x0006, - 0x0043, 0x0874, 0x0874, 0xffff, 0xffff, 0x0874, 0x0874, 0x0003, - 0x099d, 0x0000, 0x09a0, 0x0001, 0x0043, 0x0861, 0x0002, 0x09a3, - 0x09ab, 0x0006, 0x0043, 0x0867, 0x0867, 0xffff, 0xffff, 0x0867, - // Entry 2D240 - 2D27F - 0x0867, 0x0006, 0x0043, 0x0874, 0x0874, 0xffff, 0xffff, 0x0874, - 0x0874, 0x0003, 0x09b7, 0x09ba, 0x09bf, 0x0001, 0x0043, 0x0885, - 0x0003, 0x0043, 0x088c, 0x08a0, 0x08ae, 0x0002, 0x09c2, 0x09ca, - 0x0006, 0x0043, 0x08cd, 0x08bd, 0xffff, 0xffff, 0x08cd, 0x08bd, - 0x0006, 0x0043, 0x091b, 0x08de, 0xffff, 0xffff, 0x08f2, 0x0907, - 0x0003, 0x09d6, 0x0000, 0x09d9, 0x0001, 0x0043, 0x0930, 0x0002, - 0x09dc, 0x09e4, 0x0006, 0x0043, 0x0936, 0x0936, 0xffff, 0xffff, - 0x0936, 0x0936, 0x0006, 0x0043, 0x0943, 0x0943, 0xffff, 0xffff, - // Entry 2D280 - 2D2BF - 0x0943, 0x0943, 0x0003, 0x09f0, 0x0000, 0x09f3, 0x0001, 0x0043, - 0x0930, 0x0002, 0x09f6, 0x09fe, 0x0006, 0x0043, 0x0936, 0x0936, - 0xffff, 0xffff, 0x0936, 0x0936, 0x0006, 0x0043, 0x0943, 0x0943, - 0xffff, 0xffff, 0x0943, 0x0943, 0x0004, 0x0a0b, 0x0a0e, 0x0a13, - 0x0a26, 0x0001, 0x0043, 0x0954, 0x0003, 0x0043, 0x095d, 0x0972, - 0x0981, 0x0002, 0x0a16, 0x0a1e, 0x0006, 0x0043, 0x09a1, 0x0990, - 0xffff, 0xffff, 0x09a1, 0x0990, 0x0006, 0x0043, 0x09f0, 0x09b3, - 0xffff, 0xffff, 0x09c7, 0x09db, 0x0001, 0x0043, 0x0a06, 0x0004, - // Entry 2D2C0 - 2D2FF - 0x0a2e, 0x0000, 0x0a31, 0x0a44, 0x0001, 0x0043, 0x0a13, 0x0002, - 0x0a34, 0x0a3c, 0x0006, 0x0043, 0x0a18, 0x0a18, 0xffff, 0xffff, - 0x0a18, 0x0a18, 0x0006, 0x0043, 0x0a24, 0x0a24, 0xffff, 0xffff, - 0x0a24, 0x0a24, 0x0001, 0x0043, 0x0a06, 0x0004, 0x0a4c, 0x0000, - 0x0a4f, 0x0a62, 0x0001, 0x0043, 0x0a13, 0x0002, 0x0a52, 0x0a5a, - 0x0006, 0x0043, 0x0a18, 0x0a18, 0xffff, 0xffff, 0x0a18, 0x0a18, - 0x0006, 0x0043, 0x0a24, 0x0a24, 0xffff, 0xffff, 0x0a24, 0x0a24, - 0x0001, 0x0043, 0x0a06, 0x0003, 0x0a69, 0x0a6c, 0x0a73, 0x0001, - // Entry 2D300 - 2D33F - 0x0043, 0x0693, 0x0005, 0x0043, 0x0a3d, 0x0a43, 0x0a4d, 0x0a34, - 0x0a53, 0x0002, 0x0a76, 0x0a7e, 0x0006, 0x0043, 0x0a67, 0x0a59, - 0xffff, 0xffff, 0x0a67, 0x0a59, 0x0006, 0x0043, 0x0aab, 0x0a75, - 0xffff, 0xffff, 0x0a87, 0x0a99, 0x0003, 0x0a8a, 0x0000, 0x0a8d, - 0x0001, 0x0029, 0x008f, 0x0002, 0x0a90, 0x0a98, 0x0006, 0x0043, - 0x0abd, 0x0abd, 0xffff, 0xffff, 0x0abd, 0x0abd, 0x0006, 0x0043, - 0x0ac7, 0x0ac7, 0xffff, 0xffff, 0x0ac7, 0x0ac7, 0x0003, 0x0aa4, - 0x0000, 0x0aa7, 0x0001, 0x0029, 0x008f, 0x0002, 0x0aaa, 0x0ab2, - // Entry 2D340 - 2D37F - 0x0006, 0x0043, 0x0abd, 0x0abd, 0xffff, 0xffff, 0x0abd, 0x0abd, - 0x0006, 0x0043, 0x0ac7, 0x0ac7, 0xffff, 0xffff, 0x0ac7, 0x0ac7, - 0x0001, 0x0abc, 0x0001, 0x0043, 0x0ad5, 0x0003, 0x0000, 0x0ac3, - 0x0ac8, 0x0003, 0x0043, 0x0ae5, 0x0afc, 0x0b0d, 0x0002, 0x0acb, - 0x0ad3, 0x0006, 0x0043, 0x0b32, 0x0b1f, 0xffff, 0xffff, 0x0b32, - 0x0b1f, 0x0006, 0x0043, 0x0b8c, 0x0b46, 0xffff, 0xffff, 0x0b5d, - 0x0b75, 0x0003, 0x0000, 0x0adf, 0x0ae4, 0x0003, 0x0043, 0x0ba4, - 0x0bb5, 0x0bc0, 0x0002, 0x0ae7, 0x0aef, 0x0006, 0x0043, 0x0b32, - // Entry 2D380 - 2D3BF - 0x0b1f, 0xffff, 0xffff, 0x0b32, 0x0b1f, 0x0006, 0x0043, 0x0b8c, - 0x0b46, 0xffff, 0xffff, 0x0b5d, 0x0b75, 0x0003, 0x0000, 0x0afb, - 0x0b00, 0x0003, 0x0043, 0x0ba4, 0x0bb5, 0x0bc0, 0x0002, 0x0b03, - 0x0b0b, 0x0006, 0x0043, 0x0b32, 0x0b1f, 0xffff, 0xffff, 0x0b32, - 0x0b1f, 0x0006, 0x0043, 0x0b8c, 0x0b46, 0xffff, 0xffff, 0x0b5d, - 0x0b75, 0x0003, 0x0000, 0x0b17, 0x0b1c, 0x0003, 0x0043, 0x0bcc, - 0x0be3, 0x0bf4, 0x0002, 0x0b1f, 0x0b27, 0x0006, 0x0043, 0x0c19, - 0x0c06, 0xffff, 0xffff, 0x0c19, 0x0c06, 0x0006, 0x0043, 0x0c73, - // Entry 2D3C0 - 2D3FF - 0x0c2d, 0xffff, 0xffff, 0x0c44, 0x0c5c, 0x0003, 0x0000, 0x0b33, - 0x0b38, 0x0003, 0x0043, 0x0c8b, 0x0c9c, 0x0ca7, 0x0002, 0x0b3b, - 0x0b43, 0x0006, 0x0043, 0x0c19, 0x0c06, 0xffff, 0xffff, 0x0c19, - 0x0c06, 0x0006, 0x0043, 0x0c73, 0x0c2d, 0xffff, 0xffff, 0x0c44, - 0x0c5c, 0x0003, 0x0000, 0x0b4f, 0x0b54, 0x0003, 0x0043, 0x0c8b, - 0x0c9c, 0x0ca7, 0x0002, 0x0b57, 0x0b5f, 0x0006, 0x0043, 0x0c19, - 0x0c06, 0xffff, 0xffff, 0x0c19, 0x0c06, 0x0006, 0x0043, 0x0c73, - 0x0c2d, 0xffff, 0xffff, 0x0c44, 0x0c5c, 0x0003, 0x0000, 0x0b6b, - // Entry 2D400 - 2D43F - 0x0b70, 0x0003, 0x0043, 0x0cb3, 0x0cca, 0x0cdb, 0x0002, 0x0b73, - 0x0b7b, 0x0006, 0x0043, 0x0d00, 0x0ced, 0xffff, 0xffff, 0x0d00, - 0x0ced, 0x0006, 0x0043, 0x0d5a, 0x0d14, 0xffff, 0xffff, 0x0d2b, - 0x0d43, 0x0003, 0x0000, 0x0b87, 0x0b8c, 0x0003, 0x0043, 0x0d72, - 0x0d83, 0x0d8e, 0x0002, 0x0b8f, 0x0b97, 0x0006, 0x0043, 0x0d00, - 0x0ced, 0xffff, 0xffff, 0x0d00, 0x0ced, 0x0006, 0x0043, 0x0d5a, - 0x0d14, 0xffff, 0xffff, 0x0d2b, 0x0d43, 0x0003, 0x0000, 0x0ba3, - 0x0ba8, 0x0003, 0x0043, 0x0d72, 0x0d83, 0x0d8e, 0x0002, 0x0bab, - // Entry 2D440 - 2D47F - 0x0bb3, 0x0006, 0x0043, 0x0d00, 0x0ced, 0xffff, 0xffff, 0x0d00, - 0x0ced, 0x0006, 0x0043, 0x0d5a, 0x0d14, 0xffff, 0xffff, 0x0d2b, - 0x0d43, 0x0003, 0x0000, 0x0bbf, 0x0bc4, 0x0003, 0x0043, 0x0d9a, - 0x0db3, 0x0dc6, 0x0002, 0x0bc7, 0x0bcf, 0x0006, 0x0043, 0x0def, - 0x0dda, 0xffff, 0xffff, 0x0def, 0x0dda, 0x0006, 0x0043, 0x0e51, - 0x0e05, 0xffff, 0xffff, 0x0e1e, 0x0e38, 0x0003, 0x0000, 0x0bdb, - 0x0be0, 0x0003, 0x0043, 0x0e6b, 0x0e7d, 0x0e89, 0x0002, 0x0be3, - 0x0beb, 0x0006, 0x0043, 0x0def, 0x0dda, 0xffff, 0xffff, 0x0def, - // Entry 2D480 - 2D4BF - 0x0dda, 0x0006, 0x0043, 0x0e51, 0x0e05, 0xffff, 0xffff, 0x0e1e, - 0x0e38, 0x0003, 0x0000, 0x0bf7, 0x0bfc, 0x0003, 0x0043, 0x0e6b, - 0x0e7d, 0x0e89, 0x0002, 0x0bff, 0x0c07, 0x0006, 0x0043, 0x0def, - 0x0dda, 0xffff, 0xffff, 0x0def, 0x0dda, 0x0006, 0x0043, 0x0e51, - 0x0e05, 0xffff, 0xffff, 0x0e1e, 0x0e38, 0x0003, 0x0000, 0x0c13, - 0x0c18, 0x0003, 0x0043, 0x0e96, 0x0eb0, 0x0ec4, 0x0002, 0x0c1b, - 0x0c23, 0x0006, 0x0043, 0x0eef, 0x0ed9, 0xffff, 0xffff, 0x0eef, - 0x0ed9, 0x0006, 0x0043, 0x0f55, 0x0f06, 0xffff, 0xffff, 0x0f20, - // Entry 2D4C0 - 2D4FF - 0x0f3b, 0x0003, 0x0000, 0x0c2f, 0x0c34, 0x0003, 0x0043, 0x0f70, - 0x0f81, 0x0f8c, 0x0002, 0x0c37, 0x0c3f, 0x0006, 0x0043, 0x0eef, - 0x0ed9, 0xffff, 0xffff, 0x0eef, 0x0ed9, 0x0006, 0x0043, 0x0f55, - 0x0f06, 0xffff, 0xffff, 0x0f20, 0x0f3b, 0x0003, 0x0000, 0x0c4b, - 0x0c50, 0x0003, 0x0043, 0x0f70, 0x0f81, 0x0f8c, 0x0002, 0x0c53, - 0x0c5b, 0x0006, 0x0043, 0x0eef, 0x0ed9, 0xffff, 0xffff, 0x0eef, - 0x0ed9, 0x0006, 0x0043, 0x0f55, 0x0f06, 0xffff, 0xffff, 0x0f20, - 0x0f3b, 0x0003, 0x0000, 0x0c67, 0x0c6c, 0x0003, 0x0043, 0x0f98, - // Entry 2D500 - 2D53F - 0x0fb0, 0x0fc2, 0x0002, 0x0c6f, 0x0c77, 0x0006, 0x0043, 0x0fe9, - 0x0fd5, 0xffff, 0xffff, 0x0fe9, 0x0fd5, 0x0006, 0x0043, 0x1047, - 0x0ffe, 0xffff, 0xffff, 0x1016, 0x102f, 0x0003, 0x0000, 0x0c83, - 0x0c88, 0x0003, 0x0043, 0x1060, 0x1072, 0x107e, 0x0002, 0x0c8b, - 0x0c93, 0x0006, 0x0043, 0x0fe9, 0x0fd5, 0xffff, 0xffff, 0x0fe9, - 0x0fd5, 0x0006, 0x0043, 0x1047, 0x0ffe, 0xffff, 0xffff, 0x1016, - 0x102f, 0x0003, 0x0000, 0x0c9f, 0x0ca4, 0x0003, 0x0043, 0x1060, - 0x1072, 0x107e, 0x0002, 0x0ca7, 0x0caf, 0x0006, 0x0043, 0x0fe9, - // Entry 2D540 - 2D57F - 0x0fd5, 0xffff, 0xffff, 0x0fe9, 0x0fd5, 0x0006, 0x0043, 0x1047, - 0x0ffe, 0xffff, 0xffff, 0x1016, 0x102f, 0x0003, 0x0000, 0x0cbb, - 0x0cc0, 0x0003, 0x0043, 0x108b, 0x10a4, 0x10b7, 0x0002, 0x0cc3, - 0x0ccb, 0x0006, 0x0043, 0x10e0, 0x10cb, 0xffff, 0xffff, 0x10e0, - 0x10cb, 0x0006, 0x0043, 0x1142, 0x10f6, 0xffff, 0xffff, 0x110f, - 0x1129, 0x0003, 0x0000, 0x0cd7, 0x0cdc, 0x0003, 0x0043, 0x115c, - 0x116f, 0x117c, 0x0002, 0x0cdf, 0x0ce7, 0x0006, 0x0043, 0x10e0, - 0x10cb, 0xffff, 0xffff, 0x10e0, 0x10cb, 0x0006, 0x0043, 0x1142, - // Entry 2D580 - 2D5BF - 0x10f6, 0xffff, 0xffff, 0x110f, 0x1129, 0x0003, 0x0000, 0x0cf3, - 0x0cf8, 0x0003, 0x0043, 0x115c, 0x116f, 0x117c, 0x0002, 0x0cfb, - 0x0d03, 0x0006, 0x0043, 0x10e0, 0x10cb, 0xffff, 0xffff, 0x10e0, - 0x10cb, 0x0006, 0x0043, 0x1142, 0x10f6, 0xffff, 0xffff, 0x110f, - 0x1129, 0x0001, 0x0d0d, 0x0001, 0x0043, 0x118a, 0x0003, 0x0d14, - 0x0d17, 0x0d1b, 0x0001, 0x0043, 0x11a1, 0x0002, 0x0043, 0xffff, - 0x11a9, 0x0002, 0x0d1e, 0x0d26, 0x0006, 0x0043, 0x11c8, 0x11b8, - 0xffff, 0xffff, 0x11c8, 0x11b8, 0x0006, 0x0043, 0x1214, 0x11d8, - // Entry 2D5C0 - 2D5FF - 0xffff, 0xffff, 0x11ec, 0x1200, 0x0003, 0x0d32, 0x0000, 0x0d35, - 0x0001, 0x0043, 0x1228, 0x0002, 0x0d38, 0x0d40, 0x0006, 0x0043, - 0x122d, 0x122d, 0xffff, 0xffff, 0x122d, 0x122d, 0x0006, 0x0043, - 0x1239, 0x1239, 0xffff, 0xffff, 0x1239, 0x1239, 0x0003, 0x0d4c, - 0x0000, 0x0d4f, 0x0001, 0x0000, 0x2143, 0x0002, 0x0d52, 0x0d5a, - 0x0006, 0x0043, 0x122d, 0x122d, 0xffff, 0xffff, 0x122d, 0x122d, - 0x0006, 0x0043, 0x1239, 0x1239, 0xffff, 0xffff, 0x1239, 0x1239, - 0x0003, 0x0d66, 0x0d69, 0x0d6d, 0x0001, 0x0043, 0x1249, 0x0002, - // Entry 2D600 - 2D63F - 0x0043, 0xffff, 0x1251, 0x0002, 0x0d70, 0x0d78, 0x0006, 0x0043, - 0x126f, 0x125f, 0xffff, 0xffff, 0x126f, 0x125f, 0x0006, 0x0043, - 0x12ba, 0x1280, 0xffff, 0xffff, 0x1293, 0x12a6, 0x0003, 0x0d84, - 0x0000, 0x0d87, 0x0001, 0x0001, 0x075a, 0x0002, 0x0d8a, 0x0d92, - 0x0006, 0x0043, 0x12cf, 0x12cf, 0xffff, 0xffff, 0x12cf, 0x12cf, - 0x0006, 0x0043, 0x12db, 0x12db, 0xffff, 0xffff, 0x12db, 0x12db, - 0x0003, 0x0d9e, 0x0000, 0x0da1, 0x0001, 0x0001, 0x075a, 0x0002, - 0x0da4, 0x0dac, 0x0006, 0x0043, 0x12cf, 0x12cf, 0xffff, 0xffff, - // Entry 2D640 - 2D67F - 0x12cf, 0x12cf, 0x0006, 0x0043, 0x12db, 0x12db, 0xffff, 0xffff, - 0x12db, 0x12db, 0x0003, 0x0db8, 0x0dbb, 0x0dbf, 0x0001, 0x0043, - 0x12eb, 0x0002, 0x0043, 0xffff, 0x12f4, 0x0002, 0x0dc2, 0x0dca, - 0x0006, 0x0043, 0x130b, 0x12fa, 0xffff, 0xffff, 0x130b, 0x12fa, - 0x0006, 0x0043, 0x135b, 0x131e, 0xffff, 0xffff, 0x1332, 0x1346, - 0x0003, 0x0dd6, 0x0000, 0x0dd9, 0x0001, 0x0001, 0x07d3, 0x0002, - 0x0ddc, 0x0de4, 0x0006, 0x0043, 0x1372, 0x1372, 0xffff, 0xffff, - 0x1372, 0x1372, 0x0006, 0x0043, 0x137e, 0x137e, 0xffff, 0xffff, - // Entry 2D680 - 2D6BF - 0x137e, 0x137e, 0x0003, 0x0df0, 0x0000, 0x0df3, 0x0001, 0x0000, - 0x2002, 0x0002, 0x0df6, 0x0dfe, 0x0006, 0x0043, 0x138e, 0x138e, - 0xffff, 0xffff, 0x138e, 0x138e, 0x0006, 0x0043, 0x1397, 0x1397, - 0xffff, 0xffff, 0x1397, 0x1397, 0x0001, 0x0e08, 0x0001, 0x0043, - 0x13a4, 0x0004, 0x0e10, 0x0e15, 0x0e1a, 0x0e29, 0x0003, 0x001c, - 0x0baf, 0x2173, 0x217a, 0x0003, 0x0043, 0x13b1, 0x13bd, 0x13d1, - 0x0002, 0x0000, 0x0e1d, 0x0003, 0x0000, 0x0e24, 0x0e21, 0x0001, - 0x0043, 0x13e5, 0x0003, 0x0043, 0xffff, 0x1404, 0x141e, 0x0002, - // Entry 2D6C0 - 2D6FF - 0x0000, 0x0e2c, 0x0003, 0x0e30, 0x0f70, 0x0ed0, 0x009e, 0x0043, - 0xffff, 0xffff, 0xffff, 0xffff, 0x14c3, 0x1518, 0x1595, 0x15d8, - 0x164b, 0x16bb, 0x172e, 0x17c2, 0x1805, 0x18b6, 0x18f6, 0x193c, - 0x199a, 0x19e0, 0x1a1d, 0x1a87, 0x1b09, 0x1b64, 0x1bc5, 0x1c14, - 0x1c60, 0xffff, 0xffff, 0x1cc8, 0xffff, 0x1d2b, 0xffff, 0x1da3, - 0x1de0, 0x1e1d, 0x1e5a, 0xffff, 0xffff, 0x1ece, 0x1f14, 0x1f61, - 0xffff, 0xffff, 0xffff, 0x1fd6, 0xffff, 0x2035, 0x208a, 0xffff, - 0x20f9, 0x214e, 0x21a4, 0xffff, 0xffff, 0xffff, 0xffff, 0x2247, - // Entry 2D700 - 2D73F - 0xffff, 0xffff, 0x22ae, 0x230c, 0xffff, 0xffff, 0x23a5, 0x23fe, - 0x243e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2502, - 0x2539, 0x2579, 0x25b9, 0x25fc, 0xffff, 0xffff, 0x26a6, 0xffff, - 0x26f6, 0xffff, 0xffff, 0x2775, 0xffff, 0x2805, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2892, 0xffff, 0x28e9, 0x295f, 0x29d5, 0x2a1e, - 0xffff, 0xffff, 0xffff, 0x2a86, 0x2aed, 0x2b51, 0xffff, 0xffff, - 0x2bc4, 0x2c48, 0x2c94, 0x2ccb, 0xffff, 0xffff, 0x2d3c, 0x2d85, - 0x2db9, 0xffff, 0x2e11, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2D740 - 2D77F - 0x2f0e, 0x2f51, 0x2f8e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3049, 0xffff, 0xffff, 0x30b3, 0xffff, 0x30fa, - 0xffff, 0x315a, 0x31a0, 0x31e9, 0xffff, 0x3238, 0x3284, 0xffff, - 0xffff, 0xffff, 0x3306, 0x3346, 0xffff, 0xffff, 0x1435, 0x1558, - 0x183f, 0x1876, 0xffff, 0xffff, 0x27b8, 0x2ea9, 0x009e, 0x0043, - 0x146b, 0x147e, 0x1498, 0x14ad, 0x14da, 0x1528, 0x15a6, 0x15f9, - 0x166b, 0x16dc, 0x175a, 0x17d3, 0x1813, 0x18c6, 0x1908, 0x1956, - 0x19ac, 0x19ef, 0x1a3b, 0x1aad, 0x1b22, 0x1b7f, 0x1bda, 0x1c28, - // Entry 2D780 - 2D7BF - 0x1c73, 0x1ca9, 0x1cb7, 0x1cda, 0x1d0e, 0x1d44, 0x1d94, 0x1db2, - 0x1def, 0x1e2c, 0x1e6d, 0x1ea3, 0x1eb9, 0x1ee0, 0x1f26, 0x1f6e, - 0x1f98, 0x1fa7, 0x1fc2, 0x1feb, 0x2025, 0x204c, 0x209f, 0x20d9, - 0x2110, 0x2165, 0x21b3, 0x21e1, 0x21fd, 0x2227, 0x2238, 0x2257, - 0x2287, 0x229d, 0x22c8, 0x2328, 0x237d, 0x2396, 0x23bc, 0x240e, - 0x244b, 0x2475, 0x2484, 0x249d, 0x24b0, 0x24ce, 0x24e7, 0x250f, - 0x2549, 0x2589, 0x25ca, 0x261e, 0x2672, 0x268b, 0x26b6, 0x26e6, - 0x270a, 0x2742, 0x2762, 0x2786, 0x27ef, 0x2815, 0x2845, 0x2857, - // Entry 2D7C0 - 2D7FF - 0x2867, 0x287c, 0x28a5, 0x28db, 0x290b, 0x2981, 0x29e8, 0x2a2d, - 0x2a5b, 0x2a6b, 0x2a78, 0x2aa3, 0x2b09, 0x2b66, 0x2ba0, 0x2bae, - 0x2be0, 0x2c5c, 0x2ca1, 0x2cdc, 0x2d0e, 0x2d1b, 0x2d4f, 0x2d91, - 0x2dca, 0x2dfc, 0x2e2e, 0x2e78, 0x2e88, 0x2e98, 0x2eef, 0x2eff, - 0x2f1f, 0x2f60, 0x2f9b, 0x2fc5, 0x2fd7, 0x2fe9, 0x3000, 0x301b, - 0x302b, 0x3039, 0x305b, 0x308f, 0x30a4, 0x30c1, 0x30ed, 0x3110, - 0x314c, 0x316c, 0x31b3, 0x31f8, 0x3226, 0x324c, 0x3296, 0x32ca, - 0x32d9, 0x32ec, 0x3316, 0x335c, 0x2370, 0x2c28, 0x1440, 0x1567, - // Entry 2D800 - 2D83F - 0x184c, 0x1886, 0x1d86, 0x2754, 0x27c5, 0x2ebb, 0x009e, 0x0043, - 0xffff, 0xffff, 0xffff, 0xffff, 0x14f9, 0x1540, 0x15bf, 0x1622, - 0x1693, 0x1705, 0x178e, 0x17ec, 0x1829, 0x18de, 0x1922, 0x1978, - 0x19c6, 0x1a06, 0x1a61, 0x1adb, 0x1b43, 0x1ba2, 0x1bf7, 0x1c44, - 0x1c8e, 0xffff, 0xffff, 0x1cf4, 0xffff, 0x1d65, 0xffff, 0x1dc9, - 0x1e06, 0x1e43, 0x1e88, 0xffff, 0xffff, 0x1efa, 0x1f40, 0x1f83, - 0xffff, 0xffff, 0xffff, 0x2008, 0xffff, 0x206b, 0x20bc, 0xffff, - 0x212f, 0x2185, 0x21ca, 0xffff, 0xffff, 0xffff, 0xffff, 0x226f, - // Entry 2D840 - 2D87F - 0xffff, 0xffff, 0x22ea, 0x234c, 0xffff, 0xffff, 0x23dd, 0x2426, - 0x2460, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2524, - 0x2561, 0x25a1, 0x25e3, 0x2648, 0xffff, 0xffff, 0x26ce, 0xffff, - 0x2726, 0xffff, 0xffff, 0x279f, 0xffff, 0x282d, 0xffff, 0xffff, - 0xffff, 0xffff, 0x28c0, 0xffff, 0x2935, 0x29ab, 0x2a03, 0x2a44, - 0xffff, 0xffff, 0xffff, 0x2ac8, 0x2b2d, 0x2b83, 0xffff, 0xffff, - 0x2c04, 0x2c78, 0x2cb6, 0x2cf5, 0xffff, 0xffff, 0x2d6a, 0x2da5, - 0x2de3, 0xffff, 0x2e53, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2D880 - 2D8BF - 0x2f38, 0x2f77, 0x2fb0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3075, 0xffff, 0xffff, 0x30d7, 0xffff, 0x312e, - 0xffff, 0x3186, 0x31ce, 0x320f, 0xffff, 0x3268, 0x32b0, 0xffff, - 0xffff, 0xffff, 0x332e, 0x337a, 0xffff, 0xffff, 0x1458, 0x157e, - 0x1861, 0x189e, 0xffff, 0xffff, 0x27da, 0x2ed5, 0x0002, 0x0003, - 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - // Entry 2D8C0 - 2D8FF - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, - 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0044, 0xffff, 0x0000, - 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0021, - 0x0025, 0x0029, 0x002d, 0x000d, 0x0044, 0xffff, 0x0031, 0x0038, - 0x0040, 0x0048, 0x0050, 0x005d, 0x0065, 0x0075, 0x0080, 0x008a, - 0x0093, 0x00a0, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, - // Entry 2D900 - 2D93F - 0x24fb, 0x2994, 0x2994, 0x297a, 0x2994, 0x2994, 0x25bc, 0x2994, - 0x2994, 0x2994, 0x25bc, 0x24fb, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0044, 0x0010, 0x00a7, 0x00ab, - 0x00af, 0x00b3, 0x00b7, 0x00bb, 0x0007, 0x0044, 0x00bf, 0x00c7, - 0x00ce, 0x00d7, 0x00df, 0x00e6, 0x00ee, 0x0002, 0x0000, 0x0082, - 0x0007, 0x0000, 0x2994, 0x297e, 0x297e, 0x297e, 0x297e, 0x297e, - 0x2994, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, - 0x0044, 0xffff, 0x00f6, 0x00f9, 0x00fc, 0x00ff, 0x0005, 0x0044, - // Entry 2D940 - 2D97F - 0xffff, 0x0102, 0x010a, 0x0112, 0x011a, 0x0001, 0x00a1, 0x0003, - 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0044, - 0x0122, 0x0001, 0x0044, 0x0128, 0x0002, 0x00b1, 0x00b4, 0x0001, - 0x0044, 0x0122, 0x0001, 0x0044, 0x0128, 0x0003, 0x00c1, 0x0000, - 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0044, 0x012f, 0x0144, 0x0001, - 0x00c3, 0x0002, 0x0044, 0x0159, 0x0163, 0x0004, 0x00d5, 0x00cf, - 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, - // Entry 2D980 - 2D9BF - 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2D9C0 - 2D9FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, - 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, - 0x0001, 0x012c, 0x0001, 0x0044, 0x016e, 0x0001, 0x0131, 0x0001, - 0x0044, 0x0178, 0x0001, 0x0136, 0x0001, 0x0044, 0x0181, 0x0001, - 0x013b, 0x0001, 0x0044, 0x00ee, 0x0002, 0x0141, 0x0144, 0x0001, - 0x0044, 0x0188, 0x0003, 0x0044, 0x018f, 0x0198, 0x019d, 0x0001, - 0x014b, 0x0001, 0x0044, 0x01a4, 0x0001, 0x0150, 0x0001, 0x0044, - 0x01b7, 0x0001, 0x0155, 0x0001, 0x0044, 0x01c9, 0x0001, 0x015a, - // Entry 2DA00 - 2DA3F - 0x0001, 0x0044, 0x01ce, 0x0001, 0x015f, 0x0001, 0x0044, 0x01d6, - 0x0001, 0x0164, 0x0001, 0x0044, 0x01e2, 0x0002, 0x0003, 0x00e9, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, - 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - // Entry 2DA40 - 2DA7F - 0x0036, 0x0000, 0x0045, 0x000d, 0x0044, 0xffff, 0x01e9, 0x01ed, - 0x01f1, 0x01f5, 0x01f9, 0x01fd, 0x0201, 0x0205, 0x0209, 0x020d, - 0x0211, 0x0215, 0x000d, 0x0044, 0xffff, 0x0219, 0x0228, 0x0236, - 0x0243, 0x0255, 0x0263, 0x0273, 0x0283, 0x0291, 0x02a0, 0x02ad, - 0x02bf, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x24fb, - 0x223e, 0x297c, 0x297e, 0x24f9, 0x382e, 0x24f9, 0x24f9, 0x24fb, - 0x255c, 0x24fb, 0x255c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, - 0x0000, 0x0076, 0x0007, 0x0044, 0x02d5, 0x02d9, 0x02dd, 0x02e1, - // Entry 2DA80 - 2DABF - 0x02e5, 0x02e9, 0x02ed, 0x0007, 0x0044, 0x02f1, 0x02f9, 0x0303, - 0x030e, 0x0318, 0x0327, 0x0332, 0x0002, 0x0000, 0x0082, 0x0007, - 0x0000, 0x2483, 0x2159, 0x2992, 0x2992, 0x2992, 0x2992, 0x297e, - 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0044, - 0xffff, 0x0338, 0x033d, 0x0342, 0x0347, 0x0005, 0x0044, 0xffff, - 0x034c, 0x035a, 0x0368, 0x0376, 0x0001, 0x00a1, 0x0003, 0x00a5, - 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0044, 0x0384, - 0x0001, 0x0044, 0x0387, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0044, - // Entry 2DAC0 - 2DAFF - 0x0384, 0x0001, 0x0044, 0x0387, 0x0003, 0x00c1, 0x0000, 0x00bb, - 0x0001, 0x00bd, 0x0002, 0x0044, 0x038a, 0x039d, 0x0001, 0x00c3, - 0x0002, 0x0009, 0x0078, 0x5463, 0x0004, 0x00d5, 0x00cf, 0x00cc, - 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, - 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, - 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2DB00 - 2DB3F - 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, - 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, - 0x012c, 0x0001, 0x0044, 0x03af, 0x0001, 0x0131, 0x0001, 0x0044, - // Entry 2DB40 - 2DB7F - 0x03b5, 0x0001, 0x0136, 0x0001, 0x0044, 0x03ba, 0x0001, 0x013b, - 0x0001, 0x000a, 0x00dd, 0x0002, 0x0141, 0x0144, 0x0001, 0x0044, - 0x03be, 0x0003, 0x0044, 0x03c8, 0x03ce, 0x03d6, 0x0001, 0x014b, - 0x0001, 0x0044, 0x03db, 0x0001, 0x0150, 0x0001, 0x0044, 0x03ea, - 0x0001, 0x0155, 0x0001, 0x0044, 0x0400, 0x0001, 0x015a, 0x0001, - 0x0044, 0x0404, 0x0001, 0x015f, 0x0001, 0x0044, 0x040b, 0x0001, - 0x0164, 0x0001, 0x0044, 0x041b, 0x0002, 0x0003, 0x00e9, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - // Entry 2DB80 - 2DBBF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, - 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, - 0x2246, 0x2386, 0x224e, 0x22d4, 0x22d8, 0x22dc, 0x234a, 0x22e0, - 0x21e2, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x238a, 0x067d, - // Entry 2DBC0 - 2DBFF - 0x2386, 0x2390, 0x2395, 0x239b, 0x23a2, 0x23ab, 0x23b2, 0x23ba, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, - 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, - 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x0044, 0x0423, 0x0426, 0x0429, 0x042c, 0x042f, - 0x0432, 0x0435, 0x0007, 0x0044, 0x0438, 0x0441, 0x044a, 0x0452, - 0x045b, 0x046a, 0x047a, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - 0x298e, 0x297a, 0x2992, 0x2159, 0x2992, 0x298c, 0x298e, 0x0001, - // Entry 2DC00 - 2DC3F - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0044, 0xffff, 0x0483, - 0x0490, 0x049f, 0x04ae, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, - 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x001c, 0x0494, 0x0001, - 0x001c, 0x0499, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x001c, 0x0494, - 0x0001, 0x001c, 0x0499, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, - 0x00bd, 0x0002, 0x0044, 0x04bc, 0x04d0, 0x0001, 0x00c3, 0x0002, - 0x0009, 0x0078, 0x5463, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, - // Entry 2DC40 - 2DC7F - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, - 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, - 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, - 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2DC80 - 2DCBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, - 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, - 0x0001, 0x0044, 0x04e4, 0x0001, 0x0131, 0x0001, 0x0044, 0x04ec, - 0x0001, 0x0136, 0x0001, 0x0019, 0x01db, 0x0001, 0x013b, 0x0001, - 0x0044, 0x04f3, 0x0002, 0x0141, 0x0144, 0x0001, 0x0044, 0x04fa, - 0x0003, 0x0044, 0x0501, 0x0509, 0x050e, 0x0001, 0x014b, 0x0001, - // Entry 2DCC0 - 2DCFF - 0x0044, 0x0515, 0x0001, 0x0150, 0x0001, 0x0044, 0x051d, 0x0001, - 0x0155, 0x0001, 0x0044, 0x0529, 0x0001, 0x015a, 0x0001, 0x0044, - 0x052e, 0x0001, 0x015f, 0x0001, 0x0009, 0x030c, 0x0001, 0x0164, - 0x0001, 0x0044, 0x0536, 0x0003, 0x0004, 0x0283, 0x06b9, 0x000b, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, - 0x0254, 0x0000, 0x026c, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, - 0x0024, 0x0001, 0x0044, 0x053e, 0x0001, 0x0044, 0x0558, 0x0001, - // Entry 2DD00 - 2DD3F - 0x0044, 0x056c, 0x0001, 0x001e, 0x1a8e, 0x0004, 0x0038, 0x0032, - 0x002f, 0x0035, 0x0001, 0x0044, 0x057f, 0x0001, 0x0044, 0x057f, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0044, - 0x00a9, 0x0100, 0x0135, 0x0206, 0x0221, 0x0232, 0x0243, 0x0002, - 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, 0x0025, - 0xffff, 0x02bd, 0x37f0, 0x37f6, 0x37fc, 0x3801, 0x3807, 0x380d, - 0x3813, 0x3818, 0x381e, 0x3823, 0x3828, 0x000d, 0x0000, 0xffff, - 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, - // Entry 2DD40 - 2DD7F - 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0044, 0xffff, 0x0590, - 0x059a, 0x05a5, 0x05ab, 0x05b4, 0x05ba, 0x05c2, 0x05ca, 0x05d2, - 0x05dd, 0x05e6, 0x05f0, 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, - 0x0025, 0xffff, 0x02bd, 0x37f0, 0x382d, 0x37fc, 0x3833, 0x3807, - 0x380d, 0x3813, 0x3818, 0x381e, 0x3823, 0x3828, 0x000d, 0x0000, - 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, - 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0044, 0xffff, - 0x0590, 0x059a, 0x05fa, 0x05ab, 0x0600, 0x05ba, 0x05c2, 0x05ca, - // Entry 2DD80 - 2DDBF - 0x05d2, 0x05dd, 0x05e6, 0x05f0, 0x0002, 0x00ac, 0x00d6, 0x0005, - 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, 0x0007, 0x0044, 0x0606, - 0x060e, 0x0615, 0x061b, 0x0623, 0x062c, 0x0634, 0x0007, 0x0000, - 0x298e, 0x255c, 0x2990, 0x2992, 0x24fb, 0x255c, 0x298e, 0x0007, - 0x0044, 0x063b, 0x063e, 0x0641, 0x0644, 0x0647, 0x064a, 0x064d, - 0x0007, 0x0044, 0x0650, 0x065b, 0x0665, 0x066e, 0x0679, 0x0685, - 0x0690, 0x0005, 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, - 0x0044, 0x069a, 0x06a2, 0x06a9, 0x06af, 0x06b7, 0x06c0, 0x06c8, - // Entry 2DDC0 - 2DDFF - 0x0007, 0x0000, 0x298e, 0x255c, 0x2990, 0x2992, 0x24fb, 0x255c, - 0x298e, 0x0007, 0x0044, 0x063b, 0x063e, 0x0641, 0x0644, 0x0647, - 0x064a, 0x064d, 0x0007, 0x0044, 0x06cf, 0x06da, 0x06e4, 0x06ed, - 0x06f8, 0x0704, 0x070f, 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, - 0x010e, 0x0115, 0x0005, 0x0044, 0xffff, 0x0719, 0x0722, 0x072b, - 0x0734, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, - 0x0005, 0x0044, 0xffff, 0x073d, 0x074b, 0x0759, 0x0767, 0x0003, - 0x0120, 0x0127, 0x012e, 0x0005, 0x0044, 0xffff, 0x0719, 0x0722, - // Entry 2DE00 - 2DE3F - 0x072b, 0x0734, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, - 0x0139, 0x0005, 0x0044, 0xffff, 0x073d, 0x074b, 0x0759, 0x0767, - 0x0002, 0x0138, 0x019f, 0x0003, 0x013c, 0x015d, 0x017e, 0x0008, - 0x0148, 0x014e, 0x0145, 0x0151, 0x0154, 0x0157, 0x015a, 0x014b, - 0x0001, 0x0044, 0x0775, 0x0001, 0x0044, 0x077f, 0x0001, 0x0044, - 0x0789, 0x0001, 0x0044, 0x078f, 0x0001, 0x0044, 0x0796, 0x0001, - 0x0044, 0x079f, 0x0001, 0x0044, 0x07a9, 0x0001, 0x0044, 0x07b1, - 0x0008, 0x0169, 0x016f, 0x0166, 0x0172, 0x0175, 0x0178, 0x017b, - // Entry 2DE40 - 2DE7F - 0x016c, 0x0001, 0x0044, 0x0775, 0x0001, 0x0044, 0x077f, 0x0001, - 0x0044, 0x0789, 0x0001, 0x0044, 0x078f, 0x0001, 0x0044, 0x0796, - 0x0001, 0x0044, 0x07b8, 0x0001, 0x0044, 0x07a9, 0x0001, 0x0044, - 0x07b1, 0x0008, 0x018a, 0x0190, 0x0187, 0x0193, 0x0196, 0x0199, - 0x019c, 0x018d, 0x0001, 0x0044, 0x0775, 0x0001, 0x0044, 0x07c6, - 0x0001, 0x0044, 0x07d7, 0x0001, 0x0044, 0x07b8, 0x0001, 0x0044, - 0x0796, 0x0001, 0x0044, 0x07b8, 0x0001, 0x0044, 0x07a9, 0x0001, - 0x0044, 0x07b1, 0x0003, 0x01a3, 0x01c4, 0x01e5, 0x0008, 0x01af, - // Entry 2DE80 - 2DEBF - 0x01b5, 0x01ac, 0x01b8, 0x01bb, 0x01be, 0x01c1, 0x01b2, 0x0001, - 0x0044, 0x07e5, 0x0001, 0x0044, 0x077f, 0x0001, 0x0044, 0x0789, - 0x0001, 0x0044, 0x079f, 0x0001, 0x0044, 0x07ee, 0x0001, 0x0044, - 0x07f4, 0x0001, 0x0044, 0x0801, 0x0001, 0x0044, 0x0808, 0x0008, - 0x01d0, 0x01d6, 0x01cd, 0x01d9, 0x01dc, 0x01df, 0x01e2, 0x01d3, - 0x0001, 0x0044, 0x07e5, 0x0001, 0x0044, 0x077f, 0x0001, 0x0044, - 0x0789, 0x0001, 0x0044, 0x078f, 0x0001, 0x0044, 0x07ee, 0x0001, - 0x0044, 0x079f, 0x0001, 0x0044, 0x0801, 0x0001, 0x0044, 0x0808, - // Entry 2DEC0 - 2DEFF - 0x0008, 0x01f1, 0x01f7, 0x01ee, 0x01fa, 0x01fd, 0x0200, 0x0203, - 0x01f4, 0x0001, 0x0044, 0x07e5, 0x0001, 0x0044, 0x080e, 0x0001, - 0x0044, 0x081e, 0x0001, 0x0044, 0x07f4, 0x0001, 0x0044, 0x07ee, - 0x0001, 0x0044, 0x07f4, 0x0001, 0x0044, 0x0801, 0x0001, 0x0044, - 0x0808, 0x0003, 0x0210, 0x0216, 0x020a, 0x0001, 0x020c, 0x0002, - 0x0044, 0x082b, 0x083d, 0x0001, 0x0212, 0x0002, 0x0044, 0x0849, - 0x0851, 0x0002, 0x0219, 0x021d, 0x0002, 0x0044, 0x0849, 0x0851, - 0x0002, 0x0044, 0x0857, 0x085c, 0x0004, 0x022f, 0x0229, 0x0226, - // Entry 2DF00 - 2DF3F - 0x022c, 0x0001, 0x0044, 0x0860, 0x0001, 0x0044, 0x0878, 0x0001, - 0x0044, 0x088a, 0x0001, 0x0007, 0x0277, 0x0004, 0x0240, 0x023a, - 0x0237, 0x023d, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0251, - 0x024b, 0x0248, 0x024e, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0256, 0x0001, 0x0258, 0x0003, 0x0000, 0x0000, 0x025c, 0x000e, - 0x0044, 0x08d2, 0x089b, 0x08a2, 0x08ab, 0x08b4, 0x08bb, 0x08c3, - // Entry 2DF40 - 2DF7F - 0x08cc, 0x08db, 0x08e2, 0x08e8, 0x08ef, 0x08f6, 0x08fa, 0x0001, - 0x026e, 0x0001, 0x0270, 0x0003, 0x0000, 0x0000, 0x0274, 0x000d, - 0x0044, 0xffff, 0x0900, 0x0909, 0x0910, 0x0919, 0x0922, 0x0930, - 0x093e, 0x0947, 0x094f, 0x0959, 0x0962, 0x096e, 0x0040, 0x02c4, - 0x0000, 0x0000, 0x02c9, 0x02e2, 0x02f6, 0x030a, 0x0323, 0x0337, - 0x034b, 0x0364, 0x0378, 0x038c, 0x03a9, 0x03c1, 0x0000, 0x0000, - 0x0000, 0x03d9, 0x03f4, 0x0408, 0x0000, 0x0000, 0x0000, 0x041c, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0421, 0x0437, 0x044d, - // Entry 2DF80 - 2DFBF - 0x0463, 0x0479, 0x048f, 0x04a5, 0x04bb, 0x04d1, 0x04e7, 0x04fd, - 0x0513, 0x0529, 0x053f, 0x0555, 0x056b, 0x0581, 0x0597, 0x05ad, - 0x05c3, 0x05d9, 0x0000, 0x05ef, 0x0000, 0x05f4, 0x060c, 0x0620, - 0x0634, 0x064c, 0x0660, 0x0674, 0x068c, 0x06a0, 0x06b4, 0x0001, - 0x02c6, 0x0001, 0x0044, 0x097c, 0x0003, 0x02cd, 0x02d0, 0x02d5, - 0x0001, 0x0044, 0x0981, 0x0003, 0x0044, 0x0986, 0x099a, 0x09a7, - 0x0002, 0x02d8, 0x02dd, 0x0003, 0x0044, 0x09b8, 0x09c8, 0x09b8, - 0x0003, 0x0044, 0x09d6, 0x09e7, 0x09d6, 0x0003, 0x02e6, 0x0000, - // Entry 2DFC0 - 2DFFF - 0x02e9, 0x0001, 0x000d, 0x039d, 0x0002, 0x02ec, 0x02f1, 0x0003, - 0x0044, 0x09f6, 0x09f6, 0x09f6, 0x0003, 0x0044, 0x0a02, 0x0a02, - 0x0a02, 0x0003, 0x02fa, 0x0000, 0x02fd, 0x0001, 0x000d, 0x039d, - 0x0002, 0x0300, 0x0305, 0x0003, 0x0044, 0x09f6, 0x09f6, 0x09f6, - 0x0003, 0x0044, 0x0a02, 0x0a02, 0x0a02, 0x0003, 0x030e, 0x0311, - 0x0316, 0x0001, 0x0044, 0x0a0f, 0x0003, 0x0044, 0x0a1a, 0x0a30, - 0x0a40, 0x0002, 0x0319, 0x031e, 0x0003, 0x0044, 0x0a55, 0x0a6d, - 0x0a55, 0x0003, 0x0044, 0x0a83, 0x0a9c, 0x0a83, 0x0003, 0x0327, - // Entry 2E000 - 2E03F - 0x0000, 0x032a, 0x0001, 0x0044, 0x0ab3, 0x0002, 0x032d, 0x0332, - 0x0003, 0x0044, 0x0ab8, 0x0ab8, 0x0ab8, 0x0003, 0x0044, 0x0ac7, - 0x0ac7, 0x0ac7, 0x0003, 0x033b, 0x0000, 0x033e, 0x0001, 0x0044, - 0x0ab3, 0x0002, 0x0341, 0x0346, 0x0003, 0x0044, 0x0ab8, 0x0ab8, - 0x0ab8, 0x0003, 0x0044, 0x0ac7, 0x0ac7, 0x0ac7, 0x0003, 0x034f, - 0x0352, 0x0357, 0x0001, 0x0044, 0x0ad7, 0x0003, 0x0044, 0x0ae0, - 0x0af7, 0x0b07, 0x0002, 0x035a, 0x035f, 0x0003, 0x0044, 0x0b1b, - 0x0b2f, 0x0b1b, 0x0003, 0x0044, 0x0b41, 0x0b56, 0x0b41, 0x0003, - // Entry 2E040 - 2E07F - 0x0368, 0x0000, 0x036b, 0x0001, 0x0044, 0x0b69, 0x0002, 0x036e, - 0x0373, 0x0003, 0x0044, 0x0b6f, 0x0b6f, 0x0b6f, 0x0003, 0x0044, - 0x0b7e, 0x0b7e, 0x0b7e, 0x0003, 0x037c, 0x0000, 0x037f, 0x0001, - 0x0044, 0x0b69, 0x0002, 0x0382, 0x0387, 0x0003, 0x0044, 0x0b6f, - 0x0b6f, 0x0b6f, 0x0003, 0x0044, 0x0b7e, 0x0b7e, 0x0b7e, 0x0004, - 0x0391, 0x0394, 0x0399, 0x03a6, 0x0001, 0x0044, 0x0b8e, 0x0003, - 0x0044, 0x0b97, 0x0baf, 0x0bc0, 0x0002, 0x039c, 0x03a1, 0x0003, - 0x0044, 0x0bd5, 0x0be9, 0x0bd5, 0x0003, 0x0044, 0x0bfc, 0x0c11, - // Entry 2E080 - 2E0BF - 0x0bfc, 0x0001, 0x0044, 0x0c25, 0x0004, 0x03ae, 0x0000, 0x03b1, - 0x03be, 0x0001, 0x0044, 0x0c33, 0x0002, 0x03b4, 0x03b9, 0x0003, - 0x0044, 0x0c38, 0x0c38, 0x0c38, 0x0003, 0x0044, 0x0c46, 0x0c46, - 0x0c46, 0x0001, 0x0044, 0x0c25, 0x0004, 0x03c6, 0x0000, 0x03c9, - 0x03d6, 0x0001, 0x0044, 0x0c33, 0x0002, 0x03cc, 0x03d1, 0x0003, - 0x0044, 0x0c38, 0x0c38, 0x0c38, 0x0003, 0x0044, 0x0c46, 0x0c46, - 0x0c46, 0x0001, 0x0044, 0x0c25, 0x0003, 0x03dd, 0x03e0, 0x03e7, - 0x0001, 0x0043, 0x0693, 0x0005, 0x0044, 0x0c5e, 0x0c64, 0x0c6c, - // Entry 2E0C0 - 2E0FF - 0x0c55, 0x0c71, 0x0002, 0x03ea, 0x03ef, 0x0003, 0x0044, 0x0c78, - 0x0c89, 0x0c78, 0x0003, 0x0044, 0x0c99, 0x0cab, 0x0c99, 0x0003, - 0x03f8, 0x0000, 0x03fb, 0x0001, 0x0029, 0x008f, 0x0002, 0x03fe, - 0x0403, 0x0003, 0x0044, 0x0cbc, 0x0cc8, 0x0cbc, 0x0003, 0x0044, - 0x0cd5, 0x0ce2, 0x0cd5, 0x0003, 0x040c, 0x0000, 0x040f, 0x0001, - 0x0029, 0x008f, 0x0002, 0x0412, 0x0417, 0x0003, 0x0044, 0x0cbc, - 0x0cc8, 0x0cbc, 0x0003, 0x0044, 0x0cd5, 0x0ce2, 0x0cd5, 0x0001, - 0x041e, 0x0001, 0x0044, 0x0cf0, 0x0003, 0x0000, 0x0425, 0x042a, - // Entry 2E100 - 2E13F - 0x0003, 0x0044, 0x0d00, 0x0d1a, 0x0d2d, 0x0002, 0x042d, 0x0432, - 0x0003, 0x0044, 0x0d44, 0x0d5a, 0x0d44, 0x0003, 0x0044, 0x0d6f, - 0x0d86, 0x0d6f, 0x0003, 0x0000, 0x043b, 0x0440, 0x0003, 0x0044, - 0x0d9c, 0x0da9, 0x0db8, 0x0002, 0x0443, 0x0448, 0x0003, 0x0044, - 0x0d44, 0x0d5a, 0x0d44, 0x0003, 0x0044, 0x0d6f, 0x0d86, 0x0d6f, - 0x0003, 0x0000, 0x0451, 0x0456, 0x0003, 0x0044, 0x0d9c, 0x0da9, - 0x0db8, 0x0002, 0x0459, 0x045e, 0x0003, 0x0044, 0x0d44, 0x0d5a, - 0x0d44, 0x0003, 0x0044, 0x0d6f, 0x0d86, 0x0d6f, 0x0003, 0x0000, - // Entry 2E140 - 2E17F - 0x0467, 0x046c, 0x0003, 0x0044, 0x0dc6, 0x0ddf, 0x0df1, 0x0002, - 0x046f, 0x0474, 0x0003, 0x0044, 0x0e07, 0x0e1c, 0x0e07, 0x0003, - 0x0044, 0x0e30, 0x0e46, 0x0e30, 0x0003, 0x0000, 0x047d, 0x0482, - 0x0003, 0x0044, 0x0e5b, 0x0e67, 0x0e75, 0x0002, 0x0485, 0x048a, - 0x0003, 0x0044, 0x0e07, 0x0e1c, 0x0e07, 0x0003, 0x0044, 0x0e30, - 0x0e46, 0x0e30, 0x0003, 0x0000, 0x0493, 0x0498, 0x0003, 0x0044, - 0x0e5b, 0x0e67, 0x0e75, 0x0002, 0x049b, 0x04a0, 0x0003, 0x0044, - 0x0e07, 0x0e1c, 0x0e07, 0x0003, 0x0044, 0x0e30, 0x0e46, 0x0e30, - // Entry 2E180 - 2E1BF - 0x0003, 0x0000, 0x04a9, 0x04ae, 0x0003, 0x0044, 0x0e82, 0x0e9a, - 0x0eab, 0x0002, 0x04b1, 0x04b6, 0x0003, 0x0044, 0x0ec0, 0x0ed4, - 0x0ec0, 0x0003, 0x0044, 0x0ee7, 0x0efc, 0x0ee7, 0x0003, 0x0000, - 0x04bf, 0x04c4, 0x0003, 0x0044, 0x0f10, 0x0f1b, 0x0f28, 0x0002, - 0x04c7, 0x04cc, 0x0003, 0x0044, 0x0ec0, 0x0ed4, 0x0ec0, 0x0003, - 0x0044, 0x0ee7, 0x0efc, 0x0ee7, 0x0003, 0x0000, 0x04d5, 0x04da, - 0x0003, 0x0044, 0x0f10, 0x0f1b, 0x0f28, 0x0002, 0x04dd, 0x04e2, - 0x0003, 0x0044, 0x0ec0, 0x0ed4, 0x0ec0, 0x0003, 0x0044, 0x0ee7, - // Entry 2E1C0 - 2E1FF - 0x0efc, 0x0ee7, 0x0003, 0x0000, 0x04eb, 0x04f0, 0x0003, 0x0044, - 0x0f34, 0x0f4e, 0x0f61, 0x0002, 0x04f3, 0x04f8, 0x0003, 0x0044, - 0x0f78, 0x0f8e, 0x0f78, 0x0003, 0x0044, 0x0fa3, 0x0fba, 0x0fa3, - 0x0003, 0x0000, 0x0501, 0x0506, 0x0003, 0x0044, 0x0fd0, 0x0fdd, - 0x0fec, 0x0002, 0x0509, 0x050e, 0x0003, 0x0044, 0x0f78, 0x0f8e, - 0x0f78, 0x0003, 0x0044, 0x0fa3, 0x0fba, 0x0fa3, 0x0003, 0x0000, - 0x0517, 0x051c, 0x0003, 0x0044, 0x0fd0, 0x0fdd, 0x0fec, 0x0002, - 0x051f, 0x0524, 0x0003, 0x0044, 0x0f78, 0x0f8e, 0x0f78, 0x0003, - // Entry 2E200 - 2E23F - 0x0044, 0x0fa3, 0x0fba, 0x0fa3, 0x0003, 0x0000, 0x052d, 0x0532, - 0x0003, 0x0044, 0x0ffa, 0x1015, 0x1029, 0x0002, 0x0535, 0x053a, - 0x0003, 0x0044, 0x1041, 0x1058, 0x1041, 0x0003, 0x0044, 0x106e, - 0x1086, 0x106e, 0x0003, 0x0000, 0x0543, 0x0548, 0x0003, 0x0044, - 0x109d, 0x10ab, 0x10bb, 0x0002, 0x054b, 0x0550, 0x0003, 0x0044, - 0x1041, 0x1058, 0x1041, 0x0003, 0x0044, 0x106e, 0x1086, 0x106e, - 0x0003, 0x0000, 0x0559, 0x055e, 0x0003, 0x0044, 0x109d, 0x10ab, - 0x10bb, 0x0002, 0x0561, 0x0566, 0x0003, 0x0044, 0x1041, 0x1058, - // Entry 2E240 - 2E27F - 0x1041, 0x0003, 0x0044, 0x106e, 0x1086, 0x106e, 0x0003, 0x0000, - 0x056f, 0x0574, 0x0003, 0x0044, 0x10ca, 0x10e4, 0x10f7, 0x0002, - 0x0577, 0x057c, 0x0003, 0x0044, 0x110e, 0x1124, 0x110e, 0x0003, - 0x0044, 0x1139, 0x1150, 0x1139, 0x0003, 0x0000, 0x0585, 0x058a, - 0x0003, 0x0044, 0x1166, 0x1173, 0x1182, 0x0002, 0x058d, 0x0592, - 0x0003, 0x0044, 0x110e, 0x1124, 0x110e, 0x0003, 0x0044, 0x1139, - 0x1150, 0x1139, 0x0003, 0x0000, 0x059b, 0x05a0, 0x0003, 0x0044, - 0x1166, 0x1173, 0x1182, 0x0002, 0x05a3, 0x05a8, 0x0003, 0x0044, - // Entry 2E280 - 2E2BF - 0x110e, 0x1124, 0x110e, 0x0003, 0x0044, 0x1139, 0x1150, 0x1139, - 0x0003, 0x0000, 0x05b1, 0x05b6, 0x0003, 0x0044, 0x1190, 0x11a9, - 0x11bb, 0x0002, 0x05b9, 0x05be, 0x0003, 0x0044, 0x11d1, 0x11e6, - 0x11d1, 0x0003, 0x0044, 0x11fa, 0x1210, 0x11fa, 0x0003, 0x0000, - 0x05c7, 0x05cc, 0x0003, 0x0044, 0x1225, 0x1231, 0x123f, 0x0002, - 0x05cf, 0x05d4, 0x0003, 0x0044, 0x11d1, 0x11e6, 0x11d1, 0x0003, - 0x0044, 0x11fa, 0x1210, 0x11fa, 0x0003, 0x0000, 0x05dd, 0x05e2, - 0x0003, 0x0044, 0x1225, 0x1231, 0x123f, 0x0002, 0x05e5, 0x05ea, - // Entry 2E2C0 - 2E2FF - 0x0003, 0x0044, 0x11d1, 0x11e6, 0x11d1, 0x0003, 0x0044, 0x11fa, - 0x1210, 0x11fa, 0x0001, 0x05f1, 0x0001, 0x0044, 0x124c, 0x0003, - 0x05f8, 0x05fb, 0x05ff, 0x0001, 0x0044, 0x126b, 0x0002, 0x0044, - 0xffff, 0x1273, 0x0002, 0x0602, 0x0607, 0x0003, 0x0044, 0x1282, - 0x1294, 0x1282, 0x0003, 0x0044, 0x12a5, 0x12b8, 0x12a5, 0x0003, - 0x0610, 0x0000, 0x0613, 0x0001, 0x0044, 0x12ca, 0x0002, 0x0616, - 0x061b, 0x0003, 0x0044, 0x12ce, 0x12ce, 0x12ce, 0x0003, 0x0044, - 0x12dc, 0x12dc, 0x12dc, 0x0003, 0x0624, 0x0000, 0x0627, 0x0001, - // Entry 2E300 - 2E33F - 0x0000, 0x2143, 0x0002, 0x062a, 0x062f, 0x0003, 0x0044, 0x12eb, - 0x12eb, 0x12eb, 0x0003, 0x0044, 0x12f6, 0x12f6, 0x12f6, 0x0003, - 0x0638, 0x063b, 0x063f, 0x0001, 0x0044, 0x1302, 0x0002, 0x0044, - 0xffff, 0x130b, 0x0002, 0x0642, 0x0647, 0x0003, 0x0044, 0x131b, - 0x132e, 0x131b, 0x0003, 0x0044, 0x1340, 0x1354, 0x1340, 0x0003, - 0x0650, 0x0000, 0x0653, 0x0001, 0x0001, 0x075a, 0x0002, 0x0656, - 0x065b, 0x0003, 0x0044, 0x1367, 0x1367, 0x1367, 0x0003, 0x0044, - 0x1375, 0x1375, 0x1375, 0x0003, 0x0664, 0x0000, 0x0667, 0x0001, - // Entry 2E340 - 2E37F - 0x0041, 0x092f, 0x0002, 0x066a, 0x066f, 0x0003, 0x0044, 0x1384, - 0x1391, 0x1384, 0x0003, 0x0044, 0x139f, 0x139f, 0x139f, 0x0003, - 0x0678, 0x067b, 0x067f, 0x0001, 0x0044, 0x13ae, 0x0002, 0x0044, - 0xffff, 0x13b7, 0x0002, 0x0682, 0x0687, 0x0003, 0x0044, 0x13bd, - 0x13d0, 0x13bd, 0x0003, 0x0044, 0x13e2, 0x13f6, 0x13e2, 0x0003, - 0x0690, 0x0000, 0x0693, 0x0001, 0x0001, 0x07d3, 0x0002, 0x0696, - 0x069b, 0x0003, 0x0044, 0x1409, 0x1409, 0x1409, 0x0003, 0x0044, - 0x1417, 0x1417, 0x1417, 0x0003, 0x06a4, 0x0000, 0x06a7, 0x0001, - // Entry 2E380 - 2E3BF - 0x0000, 0x2002, 0x0002, 0x06aa, 0x06af, 0x0003, 0x0044, 0x1426, - 0x1426, 0x1426, 0x0003, 0x0044, 0x1432, 0x143f, 0x1432, 0x0001, - 0x06b6, 0x0001, 0x0044, 0x144b, 0x0004, 0x06be, 0x06c3, 0x06c8, - 0x06d7, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0044, - 0x1457, 0x1468, 0x147b, 0x0002, 0x0000, 0x06cb, 0x0003, 0x0000, - 0x06d2, 0x06cf, 0x0001, 0x0044, 0x1490, 0x0003, 0x0044, 0xffff, - 0x14b2, 0x14d0, 0x0002, 0x08a0, 0x06da, 0x0003, 0x0774, 0x080a, - 0x06de, 0x0094, 0x0044, 0x14e5, 0x14f9, 0x1510, 0x1526, 0x1558, - // Entry 2E3C0 - 2E3FF - 0x15a0, 0x15dc, 0x161b, 0x165d, 0x1696, 0x16d2, 0x171a, 0x1754, - 0x1796, 0x17e9, 0x1834, 0x1884, 0x18c6, 0x1916, 0x198a, 0x1a03, - 0x1a65, 0x1ac0, 0x1b0c, 0x1b50, 0x1b85, 0x1b94, 0x1bb7, 0x1bea, - 0x1c16, 0x1c47, 0x1c6c, 0x1ca7, 0x1ce0, 0x1d1e, 0x1d53, 0x1d6b, - 0x1d99, 0x1dda, 0x1e15, 0x1e3c, 0x1e4b, 0x1e5f, 0x1e8a, 0x1ec5, - 0x1eeb, 0x1f3b, 0x1f74, 0x1fa9, 0x1fff, 0x2059, 0x2082, 0x2099, - 0x20d1, 0x20e0, 0x2102, 0x212f, 0x2143, 0x216b, 0x21c1, 0x21fe, - 0x2214, 0x2239, 0x2284, 0x22c0, 0x22e9, 0x22fe, 0x2314, 0x2326, - // Entry 2E400 - 2E43F - 0x2341, 0x235b, 0x2382, 0x23bd, 0x23fc, 0x243a, 0x2489, 0x24dc, - 0x24f6, 0x251d, 0x2548, 0x2569, 0x25a0, 0x25b4, 0x25dd, 0x261a, - 0x2640, 0x266f, 0x2680, 0x2692, 0x26a7, 0x26ce, 0x2701, 0x272d, - 0x27a1, 0x2814, 0x2856, 0x2883, 0x2891, 0x289d, 0x28c2, 0x2911, - 0x295e, 0x2999, 0x29a4, 0x29d5, 0x2a2e, 0x2a72, 0x2aad, 0x2ae0, - 0x2aec, 0x2b16, 0x2b52, 0x2b87, 0x2bb6, 0x2be8, 0x2c33, 0x2c44, - 0x2c52, 0x2c62, 0x2c72, 0x2c91, 0x2cd0, 0x2d07, 0x2d2e, 0x2d43, - 0x2d55, 0x2d6a, 0x2d84, 0x2d94, 0x2da1, 0x2dba, 0x2de3, 0x2df9, - // Entry 2E440 - 2E47F - 0x2e14, 0x2e3d, 0x2e61, 0x2e9c, 0x2eb9, 0x2efc, 0x2f41, 0x2f6c, - 0x2f92, 0x2fdb, 0x300e, 0x301d, 0x302f, 0x3058, 0x309d, 0x0094, - 0x0044, 0xffff, 0xffff, 0xffff, 0xffff, 0x1543, 0x1591, 0x15cd, - 0x1609, 0x164e, 0x168a, 0x16bd, 0x170b, 0x1747, 0x177d, 0x17d7, - 0x181c, 0x1873, 0x18b5, 0x18f7, 0x1963, 0x19e7, 0x1a4a, 0x1aaa, - 0x1afb, 0x1b3d, 0xffff, 0xffff, 0x1ba5, 0xffff, 0x1c05, 0xffff, - 0x1c5d, 0x1c99, 0x1cd2, 0x1d0b, 0xffff, 0xffff, 0x1d88, 0x1dca, - 0x1e09, 0xffff, 0xffff, 0xffff, 0x1e74, 0xffff, 0x1ed5, 0x1f26, - // Entry 2E480 - 2E4BF - 0xffff, 0x1f95, 0x1fe0, 0x204c, 0xffff, 0xffff, 0xffff, 0xffff, - 0x20f3, 0xffff, 0xffff, 0x2153, 0x21aa, 0xffff, 0xffff, 0x2223, - 0x2274, 0x22b3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2374, 0x23ad, 0x23ec, 0x242b, 0x2467, 0xffff, 0xffff, 0x250f, - 0xffff, 0x2555, 0xffff, 0xffff, 0x25c6, 0xffff, 0x2630, 0xffff, - 0xffff, 0xffff, 0xffff, 0x26bc, 0xffff, 0x270f, 0x2778, 0x2802, - 0x2847, 0xffff, 0xffff, 0xffff, 0x28ac, 0x28fd, 0x2948, 0xffff, - 0xffff, 0x29ba, 0x2a1a, 0x2a65, 0x2a9b, 0xffff, 0xffff, 0x2b05, - // Entry 2E4C0 - 2E4FF - 0x2b47, 0x2b77, 0xffff, 0x2bca, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2c80, 0x2cc2, 0x2cfb, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2dad, 0xffff, 0xffff, 0x2e07, 0xffff, - 0x2e4b, 0xffff, 0x2ea9, 0x2ee8, 0x2f33, 0xffff, 0x2f7e, 0x2fc9, - 0xffff, 0xffff, 0xffff, 0x3048, 0x3087, 0x0094, 0x0044, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1574, 0x15b6, 0x15f2, 0x1634, 0x1673, - 0x16a9, 0x16ee, 0x1730, 0x1768, 0x17b6, 0x1802, 0x1853, 0x189c, - 0x18de, 0x193c, 0x19b8, 0x1a26, 0x1a87, 0x1add, 0x1b24, 0x1b6a, - // Entry 2E500 - 2E53F - 0xffff, 0xffff, 0x1bd0, 0xffff, 0x1c2e, 0xffff, 0x1c82, 0x1cbc, - 0x1cf5, 0x1d38, 0xffff, 0xffff, 0x1db1, 0x1df1, 0x1e28, 0xffff, - 0xffff, 0xffff, 0x1ea7, 0xffff, 0x1f08, 0x1f57, 0xffff, 0x1fc4, - 0x2025, 0x206d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2118, 0xffff, - 0xffff, 0x218a, 0x21df, 0xffff, 0xffff, 0x2256, 0x229b, 0x22d4, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2397, 0x23d4, - 0x2413, 0x2450, 0x24b2, 0xffff, 0xffff, 0x2532, 0xffff, 0x2584, - 0xffff, 0xffff, 0x25fb, 0xffff, 0x2657, 0xffff, 0xffff, 0xffff, - // Entry 2E540 - 2E57F - 0xffff, 0x26e7, 0xffff, 0x2752, 0x27d1, 0x282d, 0x286c, 0xffff, - 0xffff, 0xffff, 0x28df, 0x292c, 0x297b, 0xffff, 0xffff, 0x29f7, - 0x2a49, 0x2a86, 0x2ac6, 0xffff, 0xffff, 0x2b2e, 0x2b64, 0x2b9e, - 0xffff, 0x2c0d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2ca9, - 0x2ce5, 0x2d1a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2dce, 0xffff, 0xffff, 0x2e28, 0xffff, 0x2e7e, 0xffff, - 0x2ed0, 0x2f17, 0x2f56, 0xffff, 0x2fad, 0x2ff4, 0xffff, 0xffff, - 0xffff, 0x306f, 0x30ba, 0x0003, 0x08a4, 0x090a, 0x08d7, 0x0031, - // Entry 2E580 - 2E5BF - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, - 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2E5C0 - 2E5FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x13df, 0x0031, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2E600 - 2E63F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, - 0x0002, 0x0003, 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, - 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, - // Entry 2E640 - 2E67F - 0x0053, 0x0078, 0x008c, 0x00a4, 0x00b4, 0x00c5, 0x0000, 0x0001, - 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x0045, 0xffff, - 0x0000, 0x0004, 0x0009, 0x000f, 0x0013, 0x0018, 0x001c, 0x0021, - 0x0028, 0x002d, 0x0032, 0x0039, 0x000d, 0x0045, 0xffff, 0x0040, - 0x004b, 0x0051, 0x0064, 0x007f, 0x009b, 0x00a8, 0x00b4, 0x00cb, - 0x00d4, 0x00dd, 0x00e9, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, - 0x0000, 0x0063, 0x0007, 0x0005, 0x06b6, 0x06ba, 0x06be, 0x06c2, - 0x23c2, 0x2322, 0x06ce, 0x0007, 0x0045, 0x00f7, 0x0102, 0x010c, - // Entry 2E680 - 2E6BF - 0x0113, 0x011e, 0x0128, 0x012f, 0x0002, 0x0000, 0x006f, 0x0007, - 0x0000, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0033, - 0x0001, 0x007a, 0x0003, 0x007e, 0x0000, 0x0085, 0x0005, 0x002b, - 0xffff, 0x00de, 0x00e1, 0x00e4, 0x00e7, 0x0005, 0x0045, 0xffff, - 0x0139, 0x0141, 0x0149, 0x0151, 0x0001, 0x008e, 0x0003, 0x0092, - 0x0000, 0x009b, 0x0002, 0x0095, 0x0098, 0x0001, 0x0045, 0x0159, - 0x0001, 0x0045, 0x0166, 0x0002, 0x009e, 0x00a1, 0x0001, 0x0045, - 0x0159, 0x0001, 0x0045, 0x0166, 0x0003, 0x00ae, 0x0000, 0x00a8, - // Entry 2E6C0 - 2E6FF - 0x0001, 0x00aa, 0x0002, 0x0045, 0x0170, 0x0181, 0x0001, 0x00b0, - 0x0002, 0x0037, 0x03ce, 0x2008, 0x0004, 0x00c2, 0x00bc, 0x00b9, - 0x00bf, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00d3, 0x00cd, - 0x00ca, 0x00d0, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0117, - 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0121, 0x0000, 0x0000, 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2E700 - 2E73F - 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0136, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x013b, 0x0000, 0x0140, 0x0000, 0x0000, - 0x0145, 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, 0x014f, 0x0001, - 0x0119, 0x0001, 0x0045, 0x0191, 0x0001, 0x011e, 0x0001, 0x0045, - 0x019b, 0x0001, 0x0123, 0x0001, 0x0045, 0x01a4, 0x0001, 0x0128, - // Entry 2E740 - 2E77F - 0x0001, 0x0045, 0x01ad, 0x0002, 0x012e, 0x0131, 0x0001, 0x0045, - 0x01b5, 0x0003, 0x0045, 0x01c3, 0x01ca, 0x01d2, 0x0001, 0x0138, - 0x0001, 0x0045, 0x01df, 0x0001, 0x013d, 0x0001, 0x0045, 0x01f5, - 0x0001, 0x0142, 0x0001, 0x0045, 0x020c, 0x0001, 0x0147, 0x0001, - 0x0045, 0x0216, 0x0001, 0x014c, 0x0001, 0x0009, 0x030c, 0x0001, - 0x0151, 0x0001, 0x0045, 0x0222, 0x0002, 0x0003, 0x00e2, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - // Entry 2E780 - 2E7BF - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x0098, 0x00b0, - 0x00c0, 0x00d1, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0045, 0xffff, 0x0237, 0x023b, 0x023f, - 0x0243, 0x0248, 0x024e, 0x0252, 0x0256, 0x025a, 0x025e, 0x0262, - 0x0266, 0x000d, 0x0045, 0xffff, 0x026a, 0x0273, 0x027e, 0x0284, - 0x028c, 0x0292, 0x0298, 0x02a0, 0x02a7, 0x02b0, 0x02b8, 0x02c0, - // Entry 2E7C0 - 2E7FF - 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, - 0x297a, 0x2977, 0x297a, 0x297e, 0x297e, 0x2980, 0x298e, 0x2990, - 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x0045, 0x02c8, 0x02cc, 0x02d0, 0x02d4, 0x02d8, - 0x02dc, 0x02e0, 0x0007, 0x0019, 0x0128, 0x246c, 0x2475, 0x247b, - 0x2483, 0x2488, 0x248f, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - 0x25bc, 0x297a, 0x2159, 0x2159, 0x2159, 0x2159, 0x2483, 0x0001, - 0x008d, 0x0003, 0x0000, 0x0000, 0x0091, 0x0005, 0x0045, 0xffff, - // Entry 2E800 - 2E83F - 0x02e4, 0x02f6, 0x030a, 0x031e, 0x0001, 0x009a, 0x0003, 0x009e, - 0x0000, 0x00a7, 0x0002, 0x00a1, 0x00a4, 0x0001, 0x0045, 0x032f, - 0x0001, 0x0045, 0x0333, 0x0002, 0x00aa, 0x00ad, 0x0001, 0x0045, - 0x032f, 0x0001, 0x0045, 0x0333, 0x0003, 0x00ba, 0x0000, 0x00b4, - 0x0001, 0x00b6, 0x0002, 0x0045, 0x0337, 0x0348, 0x0001, 0x00bc, - 0x0002, 0x0019, 0x01ce, 0x2498, 0x0004, 0x00ce, 0x00c8, 0x00c5, - 0x00cb, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00df, 0x00d9, - // Entry 2E840 - 2E87F - 0x00d6, 0x00dc, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0123, - 0x0000, 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x012d, 0x0000, 0x0000, 0x0132, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0137, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0142, - 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 2E880 - 2E8BF - 0x0000, 0x0000, 0x0000, 0x0147, 0x0000, 0x014c, 0x0000, 0x0000, - 0x0151, 0x0000, 0x0000, 0x0156, 0x0000, 0x0000, 0x015b, 0x0001, - 0x0125, 0x0001, 0x0045, 0x0359, 0x0001, 0x012a, 0x0001, 0x0005, - 0x0787, 0x0001, 0x012f, 0x0001, 0x0019, 0x01db, 0x0001, 0x0134, - 0x0001, 0x0019, 0x0128, 0x0002, 0x013a, 0x013d, 0x0001, 0x0045, - 0x0360, 0x0003, 0x0019, 0x01eb, 0x249b, 0x24a1, 0x0001, 0x0144, - 0x0001, 0x0045, 0x0367, 0x0001, 0x0149, 0x0001, 0x0019, 0x01e1, - 0x0001, 0x014e, 0x0001, 0x0045, 0x0379, 0x0001, 0x0153, 0x0001, - // Entry 2E8C0 - 2E8FF - 0x0045, 0x0380, 0x0001, 0x0158, 0x0001, 0x0009, 0x00ba, 0x0001, - 0x015d, 0x0001, 0x0045, 0x0388, 0x0002, 0x0003, 0x00d1, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, - 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, - 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x0000, 0x009f, - 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - // Entry 2E900 - 2E93F - 0x0000, 0x0045, 0x000d, 0x000a, 0xffff, 0x0000, 0x5dc3, 0x5dc7, - 0x5dcb, 0x5dcf, 0x5dd2, 0x5dd6, 0x5dda, 0x5dde, 0x5de2, 0x5de6, - 0x5dea, 0x000d, 0x0045, 0xffff, 0x0399, 0x03a0, 0x03a8, 0x03ad, - 0x03b3, 0x03b6, 0x03ba, 0x03c0, 0x03c4, 0x03cb, 0x03d1, 0x03d7, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2004, 0x2006, - 0x1f9a, 0x1f9c, 0x1f9a, 0x2004, 0x2004, 0x1f98, 0x2002, 0x1f98, - 0x1f96, 0x2008, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x0045, 0x03dd, 0x03e1, 0x03e5, 0x03e9, 0x03ed, - // Entry 2E940 - 2E97F - 0x03f0, 0x03f4, 0x0007, 0x0045, 0x03f8, 0x03ff, 0x0405, 0x040b, - 0x0414, 0x0419, 0x0422, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - 0x2008, 0x200a, 0x1f9a, 0x1f9a, 0x2004, 0x1f94, 0x2002, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x001c, 0xffff, - 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0045, 0xffff, 0x0428, - 0x0432, 0x043d, 0x0448, 0x0003, 0x00a9, 0x0000, 0x00a3, 0x0001, - 0x00a5, 0x0002, 0x0045, 0x0453, 0x0463, 0x0001, 0x00ab, 0x0002, - 0x0045, 0x0473, 0x047b, 0x0004, 0x00bd, 0x00b7, 0x00b4, 0x00ba, - // Entry 2E980 - 2E9BF - 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, - 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00ce, 0x00c8, 0x00c5, - 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0112, 0x0000, - 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, - 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2E9C0 - 2E9FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0136, 0x0000, 0x013b, 0x0000, 0x0000, 0x0140, - 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0001, 0x0114, - 0x0001, 0x0045, 0x0483, 0x0001, 0x0119, 0x0001, 0x0045, 0x0489, - 0x0001, 0x011e, 0x0001, 0x0045, 0x048e, 0x0001, 0x0123, 0x0001, - 0x0045, 0x0492, 0x0002, 0x0129, 0x012c, 0x0001, 0x0045, 0x0499, - 0x0003, 0x0045, 0x049e, 0x04a2, 0x04a8, 0x0001, 0x0133, 0x0001, - // Entry 2EA00 - 2EA3F - 0x0045, 0x04ae, 0x0001, 0x0138, 0x0001, 0x0045, 0x04bc, 0x0001, - 0x013d, 0x0001, 0x0045, 0x04d0, 0x0001, 0x0142, 0x0001, 0x0045, - 0x04d4, 0x0001, 0x0147, 0x0001, 0x0045, 0x04da, 0x0001, 0x014c, - 0x0001, 0x0045, 0x04e1, 0x0002, 0x0003, 0x01a5, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, - 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0000, - // Entry 2EA40 - 2EA7F - 0x236f, 0x0008, 0x002f, 0x0094, 0x00eb, 0x0120, 0x0158, 0x0172, - 0x0183, 0x0194, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, 0x0045, - 0x0054, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, 0x2246, - 0x23c6, 0x23ca, 0x23ce, 0x23d2, 0x22dc, 0x234a, 0x22e0, 0x21e2, - 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, - 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, - 0x0045, 0xffff, 0x04ee, 0x04f6, 0x04ff, 0x0506, 0x050d, 0x0511, - 0x0516, 0x051c, 0x0526, 0x0530, 0x0538, 0x0541, 0x0003, 0x0067, - // Entry 2EA80 - 2EABF - 0x0076, 0x0085, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, - 0x2246, 0x23d6, 0x23ca, 0x23ce, 0x23d2, 0x22dc, 0x234a, 0x22e0, - 0x21e2, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, - 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, - 0x000d, 0x0045, 0xffff, 0x04ee, 0x04f6, 0x04ff, 0x0506, 0x054a, - 0x0511, 0x0516, 0x051c, 0x0526, 0x0530, 0x0538, 0x0541, 0x0002, - 0x0097, 0x00c1, 0x0005, 0x009d, 0x00a6, 0x00b8, 0x0000, 0x00af, - 0x0007, 0x0045, 0x054e, 0x0553, 0x0559, 0x055d, 0x0562, 0x0567, - // Entry 2EAC0 - 2EAFF - 0x056b, 0x0007, 0x0000, 0x2980, 0x2980, 0x2992, 0x2980, 0x2980, - 0x22db, 0x2980, 0x0007, 0x0045, 0x054e, 0x0553, 0x0559, 0x055d, - 0x0562, 0x0567, 0x056b, 0x0007, 0x0045, 0x0570, 0x0578, 0x0584, - 0x058b, 0x0594, 0x059e, 0x05a3, 0x0005, 0x00c7, 0x00d0, 0x00e2, - 0x0000, 0x00d9, 0x0007, 0x0045, 0x054e, 0x0553, 0x0559, 0x055d, - 0x0562, 0x0567, 0x056b, 0x0007, 0x0000, 0x2980, 0x2980, 0x2992, - 0x2980, 0x2980, 0x22db, 0x2980, 0x0007, 0x0045, 0x054e, 0x0553, - 0x0559, 0x055d, 0x0562, 0x0567, 0x056b, 0x0007, 0x0045, 0x0570, - // Entry 2EB00 - 2EB3F - 0x0578, 0x0584, 0x058b, 0x0594, 0x059e, 0x05a3, 0x0002, 0x00ee, - 0x0107, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x001c, 0xffff, - 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0045, 0xffff, 0x05ac, 0x05c1, - 0x05d4, 0x05e8, 0x0003, 0x010b, 0x0112, 0x0119, 0x0005, 0x001c, - 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0045, 0xffff, 0x05ac, - 0x05c1, 0x05d4, 0x05e8, 0x0002, 0x0123, 0x0139, 0x0003, 0x0127, - // Entry 2EB40 - 2EB7F - 0x0000, 0x0130, 0x0002, 0x012a, 0x012d, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0002, 0x0133, 0x0136, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x013d, 0x0146, 0x014f, - 0x0002, 0x0140, 0x0143, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0002, 0x0149, 0x014c, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x0152, 0x0155, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0003, 0x0167, 0x0000, 0x015c, 0x0002, - 0x015f, 0x0163, 0x0002, 0x0045, 0x05fd, 0x060b, 0x0002, 0x0000, - // Entry 2EB80 - 2EBBF - 0x04f5, 0x04f9, 0x0002, 0x016a, 0x016e, 0x0002, 0x0009, 0x0078, - 0x5463, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0180, 0x017a, - 0x0177, 0x017d, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x0191, - 0x018b, 0x0188, 0x018e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x01a2, 0x019c, 0x0199, 0x019f, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 2EBC0 - 2EBFF - 0x003d, 0x01e3, 0x0000, 0x0000, 0x01e8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01ed, 0x0000, 0x0000, 0x01f2, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01f7, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0202, 0x0000, 0x0207, - 0x0000, 0x0000, 0x020c, 0x0000, 0x0000, 0x0211, 0x0001, 0x01e5, - // Entry 2EC00 - 2EC3F - 0x0001, 0x0000, 0x1a35, 0x0001, 0x01ea, 0x0001, 0x0045, 0x0619, - 0x0001, 0x01ef, 0x0001, 0x0045, 0x061f, 0x0001, 0x01f4, 0x0001, - 0x0045, 0x0626, 0x0002, 0x01fa, 0x01fd, 0x0001, 0x0045, 0x0631, - 0x0003, 0x0045, 0x0637, 0x063d, 0x0642, 0x0001, 0x0204, 0x0001, - 0x0007, 0x07cc, 0x0001, 0x0209, 0x0001, 0x0037, 0x0bf8, 0x0001, - 0x020e, 0x0001, 0x0045, 0x064d, 0x0001, 0x0213, 0x0001, 0x0045, - 0x0655, 0x0002, 0x0003, 0x00d5, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, - // Entry 2EC40 - 2EC7F - 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, - 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, - 0x002f, 0x0066, 0x0000, 0x008b, 0x00a3, 0x00b3, 0x00c4, 0x0000, - 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, - 0x0045, 0xffff, 0x065e, 0x0662, 0x0666, 0x066a, 0x066e, 0x0672, - 0x0676, 0x067a, 0x067e, 0x0682, 0x0686, 0x068a, 0x000d, 0x0045, - 0xffff, 0x068e, 0x069e, 0x06af, 0x06c0, 0x06d3, 0x06e5, 0x06fd, - // Entry 2EC80 - 2ECBF - 0x070b, 0x0719, 0x0727, 0x0735, 0x074b, 0x0002, 0x0000, 0x0057, - 0x000d, 0x0000, 0xffff, 0x25bc, 0x382e, 0x223e, 0x24fb, 0x2992, - 0x297a, 0x298e, 0x297e, 0x2992, 0x25bc, 0x297a, 0x23db, 0x0002, - 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0045, - 0x0676, 0x0765, 0x0769, 0x076d, 0x0771, 0x0775, 0x0779, 0x0007, - 0x0045, 0x077d, 0x0784, 0x078d, 0x0795, 0x079e, 0x07a8, 0x07af, - 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x298e, 0x2483, 0x2483, - 0x2483, 0x2980, 0x2055, 0x2483, 0x0001, 0x008d, 0x0003, 0x0091, - // Entry 2ECC0 - 2ECFF - 0x0000, 0x009a, 0x0002, 0x0094, 0x0097, 0x0001, 0x0045, 0x07b8, - 0x0001, 0x0045, 0x07c1, 0x0002, 0x009d, 0x00a0, 0x0001, 0x0045, - 0x07b8, 0x0001, 0x0045, 0x07c1, 0x0003, 0x00ad, 0x0000, 0x00a7, - 0x0001, 0x00a9, 0x0002, 0x0045, 0x07ce, 0x07dc, 0x0001, 0x00af, - 0x0002, 0x0045, 0x07e7, 0x07ea, 0x0004, 0x00c1, 0x00bb, 0x00b8, - 0x00be, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00d2, 0x00cc, - 0x00c9, 0x00cf, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - // Entry 2ED00 - 2ED3F - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x003d, 0x0113, - 0x0000, 0x0000, 0x0118, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x011d, 0x0000, 0x0000, 0x0122, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0132, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0137, 0x0000, 0x0000, - // Entry 2ED40 - 2ED7F - 0x013c, 0x0000, 0x0000, 0x0141, 0x0001, 0x0115, 0x0001, 0x0045, - 0x07ed, 0x0001, 0x011a, 0x0001, 0x0045, 0x07f7, 0x0001, 0x011f, - 0x0001, 0x0045, 0x07fc, 0x0001, 0x0124, 0x0001, 0x0045, 0x0802, - 0x0002, 0x012a, 0x012d, 0x0001, 0x0045, 0x080e, 0x0003, 0x0045, - 0x0815, 0x081f, 0x0828, 0x0001, 0x0134, 0x0001, 0x0045, 0x0831, - 0x0001, 0x0139, 0x0001, 0x0045, 0x084a, 0x0001, 0x013e, 0x0001, - 0x0045, 0x084f, 0x0001, 0x0143, 0x0001, 0x0045, 0x0857, 0x0003, - 0x0004, 0x0150, 0x0210, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 2ED80 - 2EDBF - 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, - 0x001b, 0x0021, 0x0001, 0x0002, 0x028a, 0x0001, 0x0000, 0x049a, - 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, - 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0041, 0x00a6, 0x0000, 0x00fd, 0x0115, 0x011d, 0x012e, 0x013f, - 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, - // Entry 2EDC0 - 2EDFF - 0x0045, 0xffff, 0x0860, 0x0868, 0x0876, 0x0887, 0x0896, 0x08a0, - 0x08b0, 0x08c4, 0x08d1, 0x08db, 0x08ea, 0x08f4, 0x000d, 0x0044, - 0xffff, 0x00f6, 0x30d8, 0x00fc, 0x30db, 0x30de, 0x30e1, 0x30e4, - 0x30e7, 0x30ea, 0x30ed, 0x30f0, 0x30f3, 0x000d, 0x0045, 0xffff, - 0x0902, 0x0868, 0x0876, 0x0887, 0x0896, 0x08a0, 0x08b0, 0x08c4, - 0x08d1, 0x08db, 0x08ea, 0x08f4, 0x0003, 0x0079, 0x0088, 0x0097, - 0x000d, 0x0045, 0xffff, 0x0860, 0x0868, 0x0876, 0x0887, 0x0896, - 0x08a0, 0x08b0, 0x08c4, 0x08d1, 0x08db, 0x08ea, 0x08f4, 0x000d, - // Entry 2EE00 - 2EE3F - 0x0044, 0xffff, 0x00f6, 0x30d8, 0x00fc, 0x30db, 0x30de, 0x30e1, - 0x30e4, 0x30e7, 0x30ea, 0x30ed, 0x30f0, 0x30f3, 0x000d, 0x0045, - 0xffff, 0x0902, 0x0868, 0x0876, 0x0887, 0x0896, 0x08a0, 0x08b0, - 0x08c4, 0x08d1, 0x08db, 0x08ea, 0x08f4, 0x0002, 0x00a9, 0x00d3, - 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0045, - 0x0910, 0x0917, 0x091e, 0x0925, 0x092c, 0x0933, 0x093a, 0x0007, - 0x0017, 0x0177, 0x298e, 0x017d, 0x0180, 0x2991, 0x2994, 0x2997, - 0x0007, 0x0000, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - // Entry 2EE40 - 2EE7F - 0x003f, 0x0007, 0x0045, 0x0910, 0x0917, 0x091e, 0x0925, 0x092c, - 0x0933, 0x093a, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, - 0x0007, 0x0045, 0x0910, 0x0917, 0x091e, 0x0925, 0x092c, 0x0933, - 0x093a, 0x0007, 0x0017, 0x0177, 0x298e, 0x017d, 0x0180, 0x2991, - 0x2994, 0x2997, 0x0007, 0x0000, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0007, 0x0045, 0x0910, 0x0917, 0x091e, - 0x0925, 0x092c, 0x0933, 0x093a, 0x0001, 0x00ff, 0x0003, 0x0103, - 0x0000, 0x010c, 0x0002, 0x0106, 0x0109, 0x0001, 0x0000, 0x04ef, - // Entry 2EE80 - 2EEBF - 0x0001, 0x0000, 0x04f2, 0x0002, 0x010f, 0x0112, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0117, 0x0001, 0x0119, - 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x012b, 0x0125, 0x0122, - 0x0128, 0x0001, 0x0002, 0x043a, 0x0001, 0x0000, 0x050b, 0x0001, - 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x013c, 0x0136, - 0x0133, 0x0139, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x014d, - 0x0147, 0x0144, 0x014a, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry 2EEC0 - 2EEFF - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, - 0x0191, 0x0000, 0x0000, 0x0196, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x019b, 0x0000, 0x0000, 0x01ad, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x01cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x01d0, 0x0000, 0x01d5, 0x0000, - // Entry 2EF00 - 2EF3F - 0x0000, 0x01e7, 0x0000, 0x0000, 0x01f9, 0x0000, 0x0000, 0x020b, - 0x0001, 0x0193, 0x0001, 0x0000, 0x1a35, 0x0001, 0x0198, 0x0001, - 0x0045, 0x0941, 0x0003, 0x019f, 0x0000, 0x01a2, 0x0001, 0x0045, - 0x0948, 0x0002, 0x01a5, 0x01a9, 0x0002, 0x0000, 0x1ace, 0x1ace, - 0x0002, 0x0000, 0x1ad5, 0x1ad5, 0x0001, 0x01af, 0x0001, 0x0045, - 0x094e, 0x0003, 0x01b6, 0x01b9, 0x01c0, 0x0001, 0x0045, 0x0953, - 0x0005, 0x0045, 0x0959, 0x0960, 0x096c, 0xffff, 0x0970, 0x0002, - 0x01c3, 0x01c7, 0x0002, 0x0000, 0x1b48, 0x1b48, 0x0002, 0x0000, - // Entry 2EF40 - 2EF7F - 0x1b4f, 0x1b4f, 0x0001, 0x01cd, 0x0001, 0x0045, 0x0978, 0x0001, - 0x01d2, 0x0001, 0x0000, 0x1d5d, 0x0003, 0x01d9, 0x0000, 0x01dc, - 0x0001, 0x0000, 0x1d67, 0x0002, 0x01df, 0x01e3, 0x0002, 0x0000, - 0x1d76, 0x1d76, 0x0002, 0x0000, 0x1d7d, 0x1d7d, 0x0003, 0x01eb, - 0x0000, 0x01ee, 0x0001, 0x0000, 0x1d84, 0x0002, 0x01f1, 0x01f5, - 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, - 0x0003, 0x01fd, 0x0000, 0x0200, 0x0001, 0x0000, 0x1da9, 0x0002, - 0x0203, 0x0207, 0x0002, 0x0026, 0x00bf, 0x00bf, 0x0002, 0x0000, - // Entry 2EF80 - 2EFBF - 0x1dbb, 0x1dbb, 0x0001, 0x020d, 0x0001, 0x0000, 0x1dc2, 0x0004, - 0x0215, 0x021a, 0x0000, 0x0000, 0x0003, 0x0000, 0x1dc7, 0x3839, - 0x3840, 0x0001, 0x0000, 0x1de0, 0x0003, 0x0004, 0x0268, 0x0670, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0045, 0x0987, 0x0001, 0x0045, 0x099f, 0x0001, 0x0045, 0x09b1, - 0x0001, 0x0045, 0x09ba, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - // Entry 2EFC0 - 2EFFF - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, - 0x0132, 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0045, 0xffff, 0x09c7, - 0x09cf, 0x09d7, 0x09df, 0x09e7, 0x09ee, 0x09f6, 0x09fe, 0x0a06, - 0x0a10, 0x0a18, 0x0a22, 0x000d, 0x000e, 0xffff, 0x01e4, 0x01e7, - 0x01ea, 0x01ed, 0x01ea, 0x01e4, 0x01e4, 0x01ed, 0x01f0, 0x01f3, - 0x01f6, 0x01f9, 0x000d, 0x0045, 0xffff, 0x0a2a, 0x0a39, 0x0a4a, - // Entry 2F000 - 2F03F - 0x0a53, 0x09e7, 0x0a5e, 0x0a67, 0x0a70, 0x0a7d, 0x0a90, 0x0aa1, - 0x0ab0, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0045, 0xffff, - 0x09c7, 0x09cf, 0x09d7, 0x09df, 0x09e7, 0x09ee, 0x09f6, 0x09fe, - 0x0a06, 0x0a10, 0x0a18, 0x0a22, 0x000d, 0x000e, 0xffff, 0x01e4, - 0x01e7, 0x01ea, 0x01ed, 0x01ea, 0x01e4, 0x01e4, 0x01ed, 0x01f0, - 0x01f3, 0x01f6, 0x01f9, 0x000d, 0x0045, 0xffff, 0x0a2a, 0x0a39, - 0x0a4a, 0x0a53, 0x09e7, 0x0a5e, 0x0a67, 0x0a70, 0x0a7d, 0x0a90, - 0x0aa1, 0x0ab0, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, - // Entry 2F040 - 2F07F - 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0045, 0x0ac1, 0x0ac9, 0x0ad1, - 0x0ad7, 0x0adf, 0x0ae7, 0x0aef, 0x0007, 0x000e, 0x01f6, 0x0292, - 0x2025, 0x01f0, 0x0298, 0x0292, 0x01f0, 0x0007, 0x0045, 0x0ac1, - 0x0ac9, 0x0af7, 0x0ad7, 0x0adf, 0x0ae7, 0x0aef, 0x0007, 0x0045, - 0x0aff, 0x0b0c, 0x0b21, 0x0b30, 0x0b3b, 0x0b4c, 0x0b57, 0x0005, - 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0045, 0x0ac1, - 0x0ac9, 0x0af7, 0x0ad7, 0x0adf, 0x0ae7, 0x0aef, 0x0007, 0x000e, - 0x01f6, 0x0292, 0x2025, 0x01f0, 0x0298, 0x0292, 0x01f0, 0x0007, - // Entry 2F080 - 2F0BF - 0x0045, 0x0ac1, 0x0ac9, 0x0af7, 0x0ad7, 0x0adf, 0x0ae7, 0x0aef, - 0x0007, 0x0045, 0x0aff, 0x0b0c, 0x0b21, 0x0b30, 0x0b3b, 0x0b4c, - 0x0b57, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, - 0x0005, 0x0045, 0xffff, 0x0b64, 0x0b72, 0x0b80, 0x0b8e, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0045, - 0xffff, 0x0b9c, 0x0bba, 0x0bda, 0x0bfa, 0x0003, 0x011d, 0x0124, - 0x012b, 0x0005, 0x0045, 0xffff, 0x0b64, 0x0b72, 0x0b80, 0x0b8e, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - // Entry 2F0C0 - 2F0FF - 0x0045, 0xffff, 0x0b9c, 0x0bba, 0x0bda, 0x0bfa, 0x0002, 0x0135, - 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, 0x014c, - 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, 0x0001, - 0x0045, 0x0c1e, 0x0001, 0x0045, 0x0c2b, 0x0001, 0x0045, 0x0c39, - 0x0001, 0x0045, 0x0c4a, 0x0001, 0x0045, 0x0c54, 0x0001, 0x0045, - 0x0c2b, 0x0001, 0x0045, 0x0c4a, 0x0001, 0x0045, 0x0c61, 0x0001, - 0x0045, 0x0c70, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, 0x017a, - 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, 0x0045, 0x0c79, 0x0001, - // Entry 2F100 - 2F13F - 0x0045, 0x0c2b, 0x0001, 0x0045, 0x0c83, 0x0001, 0x0045, 0x0c4a, - 0x0001, 0x0045, 0x0c8d, 0x0001, 0x0045, 0x0c2b, 0x0001, 0x0045, - 0x0c4a, 0x0001, 0x0045, 0x0c96, 0x0001, 0x0045, 0x0c70, 0x0009, - 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, 0x0193, - 0x019c, 0x0001, 0x0045, 0x0c1e, 0x0001, 0x0045, 0x0c9e, 0x0001, - 0x0045, 0x0c39, 0x0001, 0x0045, 0x0cb3, 0x0001, 0x0045, 0x0c54, - 0x0001, 0x0045, 0x0c9e, 0x0001, 0x0045, 0x0cb3, 0x0001, 0x0045, - 0x0c61, 0x0001, 0x0045, 0x0cc4, 0x0003, 0x01ac, 0x01d1, 0x01f6, - // Entry 2F140 - 2F17F - 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, 0x01ce, - 0x01bc, 0x01c5, 0x0001, 0x0045, 0x0c1e, 0x0001, 0x0045, 0x0c2b, - 0x0001, 0x0045, 0x0c39, 0x0001, 0x0045, 0x0c4a, 0x0001, 0x0045, - 0x0c54, 0x0001, 0x0045, 0x0c2b, 0x0001, 0x0045, 0x0c4a, 0x0001, - 0x0045, 0x0c61, 0x0001, 0x0045, 0x0cc4, 0x0009, 0x01de, 0x01e4, - 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, 0x0001, - 0x0045, 0x0c1e, 0x0001, 0x0045, 0x0c2b, 0x0001, 0x0045, 0x0cd6, - 0x0001, 0x0045, 0x0c4a, 0x0001, 0x0045, 0x0c54, 0x0001, 0x0045, - // Entry 2F180 - 2F1BF - 0x0c9e, 0x0001, 0x0045, 0x0cb3, 0x0001, 0x0045, 0x0c61, 0x0001, - 0x0045, 0x0cc4, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, 0x0212, - 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, 0x0045, 0x0ce3, 0x0001, - 0x0045, 0x0c9e, 0x0001, 0x0045, 0x0c39, 0x0001, 0x0045, 0x0cb3, - 0x0001, 0x0045, 0x0c54, 0x0001, 0x0045, 0x0c9e, 0x0001, 0x0045, - 0x0cb3, 0x0001, 0x0045, 0x0c61, 0x0001, 0x0045, 0x0cc4, 0x0003, - 0x0225, 0x022f, 0x021f, 0x0001, 0x0221, 0x0002, 0x0045, 0x0cf5, - 0x0d12, 0x0002, 0x0228, 0x022c, 0x0002, 0x0009, 0x064e, 0x5466, - // Entry 2F1C0 - 2F1FF - 0x0001, 0x0045, 0x0d2b, 0x0001, 0x0231, 0x0002, 0x0009, 0x064e, - 0x5466, 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, 0x0001, - 0x001d, 0x0001, 0x0001, 0x002d, 0x0001, 0x0045, 0x0d38, 0x0001, - 0x0045, 0x0d3f, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x0265, 0x025f, 0x025c, 0x0262, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02a9, 0x0000, 0x0000, - // Entry 2F200 - 2F23F - 0x02ae, 0x02c5, 0x02dc, 0x02f3, 0x030a, 0x031c, 0x032e, 0x0345, - 0x035c, 0x0373, 0x038e, 0x03a9, 0x0000, 0x0000, 0x0000, 0x03c4, - 0x03dd, 0x03f6, 0x0000, 0x0000, 0x0000, 0x040f, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0414, 0x0428, 0x043c, 0x0450, 0x0464, - 0x0478, 0x048c, 0x04a0, 0x04b4, 0x04c8, 0x04dc, 0x04f0, 0x0504, - 0x0518, 0x052c, 0x0540, 0x0554, 0x0568, 0x057c, 0x0590, 0x05a4, - 0x0000, 0x05b8, 0x0000, 0x05bd, 0x05d3, 0x05e5, 0x05f7, 0x060d, - 0x061f, 0x0631, 0x0647, 0x0659, 0x066b, 0x0001, 0x02ab, 0x0001, - // Entry 2F240 - 2F27F - 0x0009, 0x0877, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x0009, - 0x087e, 0x0003, 0x0045, 0x0d47, 0x0d65, 0x0d7b, 0x0002, 0x02bd, - 0x02c1, 0x0002, 0x000e, 0x2028, 0x1e65, 0x0002, 0x0045, 0x0db3, - 0x0d99, 0x0003, 0x02c9, 0x02cc, 0x02d1, 0x0001, 0x0045, 0x0dcd, - 0x0003, 0x0045, 0x0d47, 0x0d65, 0x0d7b, 0x0002, 0x02d4, 0x02d8, - 0x0002, 0x000e, 0x2028, 0x1e65, 0x0002, 0x0045, 0x0db3, 0x0d99, - 0x0003, 0x02e0, 0x02e3, 0x02e8, 0x0001, 0x0045, 0x0dcd, 0x0003, - 0x0045, 0x0d47, 0x0d65, 0x0d7b, 0x0002, 0x02eb, 0x02ef, 0x0002, - // Entry 2F280 - 2F2BF - 0x000e, 0x2028, 0x2028, 0x0002, 0x0045, 0x0db3, 0x0db3, 0x0003, - 0x02f7, 0x02fa, 0x02ff, 0x0001, 0x0045, 0x0dd5, 0x0003, 0x0045, - 0x0dea, 0x0e14, 0x0e30, 0x0002, 0x0302, 0x0306, 0x0002, 0x0045, - 0x0e74, 0x0e56, 0x0002, 0x0045, 0x0eb4, 0x0e92, 0x0003, 0x030e, - 0x0000, 0x0311, 0x0001, 0x0045, 0x0ed6, 0x0002, 0x0314, 0x0318, - 0x0002, 0x0045, 0x0e74, 0x0ee4, 0x0002, 0x0045, 0x0eb4, 0x0efb, - 0x0003, 0x0320, 0x0000, 0x0323, 0x0001, 0x0045, 0x0ed6, 0x0002, - 0x0326, 0x032a, 0x0002, 0x0045, 0x0e74, 0x0e74, 0x0002, 0x0045, - // Entry 2F2C0 - 2F2FF - 0x0eb4, 0x0eb4, 0x0003, 0x0332, 0x0335, 0x033a, 0x0001, 0x0009, - 0x0b35, 0x0003, 0x0045, 0x0f16, 0x0f32, 0x0f46, 0x0002, 0x033d, - 0x0341, 0x0002, 0x000e, 0x1f3d, 0x1f13, 0x0002, 0x0045, 0x0f7a, - 0x0f62, 0x0003, 0x0349, 0x034c, 0x0351, 0x0001, 0x0008, 0x0e09, - 0x0003, 0x0045, 0x0f16, 0x0f32, 0x0f46, 0x0002, 0x0354, 0x0358, - 0x0002, 0x000e, 0x1f3d, 0x1f13, 0x0002, 0x0045, 0x0f7a, 0x0f62, - 0x0003, 0x0360, 0x0363, 0x0368, 0x0001, 0x0008, 0x0e09, 0x0003, - 0x0045, 0x0f16, 0x0f32, 0x0f46, 0x0002, 0x036b, 0x036f, 0x0002, - // Entry 2F300 - 2F33F - 0x000e, 0x1f3d, 0x1f13, 0x0002, 0x0045, 0x0f7a, 0x0f62, 0x0004, - 0x0378, 0x037b, 0x0380, 0x038b, 0x0001, 0x0045, 0x0aff, 0x0003, - 0x0045, 0x0f94, 0x0fb4, 0x0fcc, 0x0002, 0x0383, 0x0387, 0x0002, - 0x0045, 0x1004, 0x0fec, 0x0002, 0x0045, 0x1038, 0x101c, 0x0001, - 0x0045, 0x1054, 0x0004, 0x0393, 0x0396, 0x039b, 0x03a6, 0x0001, - 0x0045, 0x1067, 0x0003, 0x0045, 0x0f94, 0x0fb4, 0x0fcc, 0x0002, - 0x039e, 0x03a2, 0x0002, 0x0045, 0x1004, 0x0fec, 0x0002, 0x0045, - 0x1038, 0x101c, 0x0001, 0x0045, 0x1054, 0x0004, 0x03ae, 0x03b1, - // Entry 2F340 - 2F37F - 0x03b6, 0x03c1, 0x0001, 0x0045, 0x1067, 0x0003, 0x0045, 0x0f94, - 0x0fb4, 0x0fcc, 0x0002, 0x03b9, 0x03bd, 0x0002, 0x0045, 0x1004, - 0x0fec, 0x0002, 0x0045, 0x1038, 0x101c, 0x0001, 0x0045, 0x1054, - 0x0003, 0x03c8, 0x03cb, 0x03d2, 0x0001, 0x0009, 0x0e55, 0x0005, - 0x0045, 0x107e, 0x1089, 0x1094, 0x106f, 0x109d, 0x0002, 0x03d5, - 0x03d9, 0x0002, 0x0045, 0x10bc, 0x10ac, 0x0002, 0x0045, 0x10e2, - 0x10ce, 0x0003, 0x03e1, 0x03e4, 0x03eb, 0x0001, 0x0009, 0x0e55, - 0x0005, 0x0045, 0x107e, 0x1089, 0x1094, 0x106f, 0x109d, 0x0002, - // Entry 2F380 - 2F3BF - 0x03ee, 0x03f2, 0x0002, 0x0045, 0x10bc, 0x10ac, 0x0002, 0x0045, - 0x10e2, 0x10ce, 0x0003, 0x03fa, 0x03fd, 0x0404, 0x0001, 0x0009, - 0x0e55, 0x0005, 0x0045, 0x107e, 0x1089, 0x1094, 0x106f, 0x109d, - 0x0002, 0x0407, 0x040b, 0x0002, 0x0045, 0x10bc, 0x10ac, 0x0002, - 0x0045, 0x10e2, 0x10ce, 0x0001, 0x0411, 0x0001, 0x0045, 0x10f8, - 0x0003, 0x0000, 0x0418, 0x041d, 0x0003, 0x0045, 0x1115, 0x1133, - 0x1149, 0x0002, 0x0420, 0x0424, 0x0002, 0x0045, 0x117d, 0x1167, - 0x0002, 0x0045, 0x11ad, 0x1193, 0x0003, 0x0000, 0x042c, 0x0431, - // Entry 2F3C0 - 2F3FF - 0x0003, 0x0045, 0x1115, 0x1133, 0x1149, 0x0002, 0x0434, 0x0438, - 0x0002, 0x0045, 0x117d, 0x1167, 0x0002, 0x0045, 0x11ad, 0x1193, - 0x0003, 0x0000, 0x0440, 0x0445, 0x0003, 0x0045, 0x1115, 0x1133, - 0x1149, 0x0002, 0x0448, 0x044c, 0x0002, 0x0045, 0x117d, 0x1167, - 0x0002, 0x0045, 0x11ad, 0x1193, 0x0003, 0x0000, 0x0454, 0x0459, - 0x0003, 0x0045, 0x11c7, 0x11ed, 0x120b, 0x0002, 0x045c, 0x0460, - 0x0002, 0x0045, 0x124f, 0x1231, 0x0002, 0x0045, 0x1291, 0x126f, - 0x0003, 0x0000, 0x0468, 0x046d, 0x0003, 0x0045, 0x11c7, 0x11ed, - // Entry 2F400 - 2F43F - 0x120b, 0x0002, 0x0470, 0x0474, 0x0002, 0x0045, 0x124f, 0x1231, - 0x0002, 0x0045, 0x1291, 0x126f, 0x0003, 0x0000, 0x047c, 0x0481, - 0x0003, 0x0045, 0x11c7, 0x11ed, 0x120b, 0x0002, 0x0484, 0x0488, - 0x0002, 0x0045, 0x124f, 0x1231, 0x0002, 0x0045, 0x1291, 0x126f, - 0x0003, 0x0000, 0x0490, 0x0495, 0x0003, 0x0045, 0x12b5, 0x12d5, - 0x12ed, 0x0002, 0x0498, 0x049c, 0x0002, 0x0045, 0x1325, 0x130d, - 0x0002, 0x0045, 0x135b, 0x133f, 0x0003, 0x0000, 0x04a4, 0x04a9, - 0x0003, 0x0045, 0x1379, 0x12d5, 0x12ed, 0x0002, 0x04ac, 0x04b0, - // Entry 2F440 - 2F47F - 0x0002, 0x0045, 0x1325, 0x130d, 0x0002, 0x0045, 0x135b, 0x133f, - 0x0003, 0x0000, 0x04b8, 0x04bd, 0x0003, 0x0045, 0x12b5, 0x12d5, - 0x12ed, 0x0002, 0x04c0, 0x04c4, 0x0002, 0x0045, 0x1325, 0x130d, - 0x0002, 0x0045, 0x135b, 0x133f, 0x0003, 0x0000, 0x04cc, 0x04d1, - 0x0003, 0x0045, 0x1387, 0x13a3, 0x13b7, 0x0002, 0x04d4, 0x04d8, - 0x0002, 0x0045, 0x13e7, 0x13d3, 0x0002, 0x0045, 0x1413, 0x13fb, - 0x0003, 0x0000, 0x04e0, 0x04e5, 0x0003, 0x0045, 0x1387, 0x13a3, - 0x13b7, 0x0002, 0x04e8, 0x04ec, 0x0002, 0x0045, 0x13e7, 0x13d3, - // Entry 2F480 - 2F4BF - 0x0002, 0x0045, 0x1413, 0x13fb, 0x0003, 0x0000, 0x04f4, 0x04f9, - 0x0003, 0x0045, 0x1387, 0x13a3, 0x13b7, 0x0002, 0x04fc, 0x0500, - 0x0002, 0x0045, 0x13e7, 0x13d3, 0x0002, 0x0045, 0x1413, 0x13fb, - 0x0003, 0x0000, 0x0508, 0x050d, 0x0003, 0x0045, 0x142b, 0x144d, - 0x1467, 0x0002, 0x0510, 0x0514, 0x0002, 0x0045, 0x14a3, 0x1489, - 0x0002, 0x0045, 0x14dd, 0x14bf, 0x0003, 0x0000, 0x051c, 0x0521, - 0x0003, 0x0045, 0x142b, 0x144d, 0x1467, 0x0002, 0x0524, 0x0528, - 0x0002, 0x0045, 0x14a3, 0x1489, 0x0002, 0x0045, 0x14dd, 0x14bf, - // Entry 2F4C0 - 2F4FF - 0x0003, 0x0000, 0x0530, 0x0535, 0x0003, 0x0045, 0x142b, 0x144d, - 0x1467, 0x0002, 0x0538, 0x053c, 0x0002, 0x0045, 0x14a3, 0x1489, - 0x0002, 0x0045, 0x14dd, 0x14bf, 0x0003, 0x0000, 0x0544, 0x0549, - 0x0003, 0x0045, 0x14fd, 0x1519, 0x152d, 0x0002, 0x054c, 0x0550, - 0x0002, 0x0045, 0x155d, 0x1549, 0x0002, 0x0045, 0x1573, 0x1573, - 0x0003, 0x0000, 0x0558, 0x055d, 0x0003, 0x0045, 0x14fd, 0x1519, - 0x152d, 0x0002, 0x0560, 0x0564, 0x0002, 0x0045, 0x155d, 0x1549, - 0x0002, 0x0045, 0x1573, 0x1573, 0x0003, 0x0000, 0x056c, 0x0571, - // Entry 2F500 - 2F53F - 0x0003, 0x0045, 0x14fd, 0x1519, 0x152d, 0x0002, 0x0574, 0x0578, - 0x0002, 0x0045, 0x155d, 0x1549, 0x0002, 0x0045, 0x1573, 0x1573, - 0x0003, 0x0000, 0x0580, 0x0585, 0x0003, 0x0045, 0x158d, 0x15ab, - 0x15c1, 0x0002, 0x0588, 0x058c, 0x0002, 0x0045, 0x15f5, 0x15df, - 0x0002, 0x0045, 0x1625, 0x160b, 0x0003, 0x0000, 0x0594, 0x0599, - 0x0003, 0x0045, 0x158d, 0x15ab, 0x15c1, 0x0002, 0x059c, 0x05a0, - 0x0002, 0x0045, 0x15f5, 0x15df, 0x0002, 0x0045, 0x1625, 0x160b, - 0x0003, 0x0000, 0x05a8, 0x05ad, 0x0003, 0x0045, 0x158d, 0x15ab, - // Entry 2F540 - 2F57F - 0x15c1, 0x0002, 0x05b0, 0x05b4, 0x0002, 0x0045, 0x15f5, 0x15df, - 0x0002, 0x0045, 0x1625, 0x160b, 0x0001, 0x05ba, 0x0001, 0x0045, - 0x163f, 0x0003, 0x05c1, 0x05c4, 0x05c8, 0x0001, 0x0009, 0x17ad, - 0x0002, 0x0045, 0xffff, 0x1665, 0x0002, 0x05cb, 0x05cf, 0x0002, - 0x0045, 0x1680, 0x1670, 0x0002, 0x0045, 0x16a6, 0x1692, 0x0003, - 0x05d7, 0x0000, 0x05da, 0x0001, 0x0009, 0x17ad, 0x0002, 0x05dd, - 0x05e1, 0x0002, 0x0045, 0x1680, 0x1670, 0x0002, 0x0045, 0x16a6, - 0x1692, 0x0003, 0x05e9, 0x0000, 0x05ec, 0x0001, 0x0009, 0x17ad, - // Entry 2F580 - 2F5BF - 0x0002, 0x05ef, 0x05f3, 0x0002, 0x0045, 0x1680, 0x1670, 0x0002, - 0x0045, 0x16a6, 0x1692, 0x0003, 0x05fb, 0x05fe, 0x0602, 0x0001, - 0x0009, 0x185b, 0x0002, 0x0045, 0xffff, 0x16bc, 0x0002, 0x0605, - 0x0609, 0x0002, 0x000f, 0x3ba7, 0x01a1, 0x0002, 0x0045, 0x16ec, - 0x16d2, 0x0003, 0x0611, 0x0000, 0x0614, 0x0001, 0x0011, 0x0ce0, - 0x0002, 0x0617, 0x061b, 0x0002, 0x000f, 0x3ba7, 0x01a1, 0x0002, - 0x0045, 0x16ec, 0x16d2, 0x0003, 0x0623, 0x0000, 0x0626, 0x0001, - 0x0011, 0x0ce0, 0x0002, 0x0629, 0x062d, 0x0002, 0x000f, 0x3ba7, - // Entry 2F5C0 - 2F5FF - 0x01a1, 0x0002, 0x0045, 0x16ec, 0x16d2, 0x0003, 0x0635, 0x0638, - 0x063c, 0x0001, 0x0008, 0x1ca4, 0x0002, 0x0009, 0xffff, 0x1940, - 0x0002, 0x063f, 0x0643, 0x0002, 0x0045, 0x171e, 0x1706, 0x0002, - 0x0045, 0x1752, 0x1736, 0x0003, 0x064b, 0x0000, 0x064e, 0x0001, - 0x0011, 0x0d52, 0x0002, 0x0651, 0x0655, 0x0002, 0x0045, 0x171e, - 0x1706, 0x0002, 0x0045, 0x1752, 0x1736, 0x0003, 0x065d, 0x0000, - 0x0660, 0x0001, 0x0011, 0x0d52, 0x0002, 0x0663, 0x0667, 0x0002, - 0x0045, 0x171e, 0x1706, 0x0002, 0x0045, 0x1752, 0x1736, 0x0001, - // Entry 2F600 - 2F63F - 0x066d, 0x0001, 0x0045, 0x176e, 0x0004, 0x0675, 0x067a, 0x067f, - 0x068e, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0045, - 0x178a, 0x179e, 0x17a7, 0x0002, 0x0000, 0x0682, 0x0003, 0x0000, - 0x0689, 0x0686, 0x0001, 0x0045, 0x17b0, 0x0003, 0x0045, 0xffff, - 0x17eb, 0x1814, 0x0002, 0x0860, 0x0691, 0x0003, 0x0695, 0x07c7, - 0x072e, 0x0097, 0x000f, 0xffff, 0xffff, 0xffff, 0xffff, 0x3c7e, - 0x3cef, 0x3d3e, 0x3d8d, 0x065e, 0x06e1, 0x0770, 0x3e24, 0x3e75, - 0x3ec0, 0x3f09, 0x3f64, 0x3fdd, 0x4034, 0x4085, 0x410a, 0x41b3, - // Entry 2F640 - 2F67F - 0x4230, 0x42ad, 0x430c, 0x435b, 0xffff, 0xffff, 0x43f2, 0xffff, - 0x447d, 0xffff, 0x4501, 0x454c, 0x4593, 0x45da, 0xffff, 0xffff, - 0x4699, 0x46f4, 0x475d, 0xffff, 0xffff, 0xffff, 0x4813, 0xffff, - 0x48b7, 0x18eb, 0xffff, 0x199e, 0x4944, 0x49cd, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4a84, 0xffff, 0xffff, 0x4b33, 0x4ba8, 0xffff, - 0xffff, 0x4c72, 0x4d01, 0x4d5a, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4ea9, 0x4ef0, 0x4f43, 0x4f92, 0xffff, 0xffff, - 0xffff, 0x504d, 0xffff, 0x50b7, 0xffff, 0xffff, 0x516b, 0xffff, - // Entry 2F680 - 2F6BF - 0x51f0, 0xffff, 0xffff, 0xffff, 0xffff, 0x52d6, 0xffff, 0x534c, - 0x53d5, 0x545a, 0x54b7, 0xffff, 0xffff, 0xffff, 0x555b, 0x55cc, - 0x5629, 0xffff, 0xffff, 0x56d7, 0x5752, 0x57b5, 0x57fc, 0xffff, - 0xffff, 0x58a1, 0x58f8, 0x593f, 0xffff, 0x59c6, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x5ad5, 0x335e, 0x5b28, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5c6e, 0xffff, 0xffff, - 0x5d01, 0xffff, 0x5d65, 0xffff, 0x5de9, 0x5e3c, 0x5e9b, 0xffff, - 0x5f11, 0x5f74, 0xffff, 0xffff, 0xffff, 0x6041, 0x6094, 0xffff, - // Entry 2F6C0 - 2F6FF - 0xffff, 0x02ab, 0x0097, 0x000f, 0x3bbd, 0x3be2, 0x3c0e, 0x3c3c, - 0x3cac, 0x3d0c, 0x3d5b, 0x3dce, 0x0678, 0x06ff, 0x078e, 0x3e42, - 0x3e90, 0x3eda, 0x3f2c, 0x3f96, 0x3ffe, 0x4052, 0x40bd, 0x4154, - 0x41e7, 0x4264, 0x42d2, 0x4329, 0x437e, 0x43b6, 0x43d1, 0x4415, - 0x444d, 0x44a6, 0x44e4, 0x451c, 0x4565, 0x45ac, 0x45fd, 0x4635, - 0x4665, 0x46bc, 0x471e, 0x4776, 0x47a4, 0x47c1, 0x47e9, 0x484b, - 0x4898, 0x48df, 0x1915, 0x491c, 0x19c8, 0x497e, 0x49e6, 0x4a14, - 0x1bb1, 0x4a46, 0x4a69, 0x4aa3, 0x4ad7, 0x4b09, 0x4b63, 0x4bd8, - // Entry 2F700 - 2F73F - 0x4c1d, 0x4c53, 0x4caf, 0x4d23, 0x4d73, 0x4da1, 0x4dbe, 0x4de8, - 0x4e09, 0x4e41, 0x4e75, 0x4ec2, 0x4f0f, 0x4f60, 0x4fb3, 0xffff, - 0x4fe9, 0x501b, 0x506a, 0x509c, 0x50de, 0x511a, 0x513d, 0x518b, - 0x51c0, 0x520f, 0x5243, 0x5264, 0x5283, 0x52a4, 0x52f9, 0x5331, - 0x5386, 0x540d, 0x547e, 0x54d4, 0x5506, 0x5525, 0x5540, 0x5589, - 0x55f0, 0x5650, 0x568c, 0x56a5, 0x570a, 0x5779, 0x57ce, 0x581d, - 0x5853, 0x586e, 0x58c2, 0x5911, 0x5960, 0x5996, 0x59ff, 0x5a48, - 0x5a67, 0x5a84, 0x5a97, 0x5ab8, 0x5af4, 0x3376, 0x5b43, 0x5b73, - // Entry 2F740 - 2F77F - 0x5b92, 0x5bb3, 0x5beb, 0x5c15, 0x5c34, 0x5c51, 0x5c8b, 0x5cbd, - 0x5ce2, 0x5d1c, 0x5d4c, 0x5d8e, 0x5dcc, 0x5e08, 0x5e61, 0x5eba, - 0x5eee, 0x5f38, 0x5f97, 0x5fcf, 0x5fec, 0x6016, 0x6060, 0x60bd, - 0xffff, 0xffff, 0x02bf, 0x0097, 0x0045, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1876, 0x18c7, 0x1907, 0x1947, 0x1988, 0x19c5, 0x1a06, - 0x1a47, 0x1a70, 0x1a96, 0x1ad3, 0x1b19, 0x1b6e, 0x1b9a, 0x1bdb, - 0x1c36, 0x1ca3, 0x1cfa, 0x1d51, 0x1d81, 0x1da9, 0xffff, 0xffff, - 0x1dd7, 0xffff, 0x1e1d, 0xffff, 0x1e51, 0x1e8f, 0x1ecb, 0x1f07, - // Entry 2F780 - 2F7BF - 0xffff, 0xffff, 0x1f35, 0x1f7b, 0x1fb0, 0xffff, 0xffff, 0xffff, - 0x1fec, 0xffff, 0x202f, 0x2062, 0xffff, 0x2097, 0x20cc, 0x2129, - 0xffff, 0xffff, 0xffff, 0xffff, 0x214d, 0xffff, 0xffff, 0x2177, - 0x21ca, 0xffff, 0xffff, 0x221d, 0x227d, 0x22aa, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x22ce, 0x230a, 0x2334, 0x2374, - 0xffff, 0xffff, 0xffff, 0x23b8, 0xffff, 0x23f8, 0xffff, 0xffff, - 0x242a, 0xffff, 0x246d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2497, - 0xffff, 0x24dd, 0x253a, 0x257d, 0x25ac, 0xffff, 0xffff, 0xffff, - // Entry 2F7C0 - 2F7FF - 0x25ec, 0x2625, 0x266c, 0xffff, 0xffff, 0x26b6, 0x270c, 0x273e, - 0x2762, 0xffff, 0xffff, 0x278e, 0x27d2, 0x280e, 0xffff, 0x283a, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2891, 0x28bb, 0x28f6, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x291c, - 0xffff, 0xffff, 0x295c, 0xffff, 0x2982, 0xffff, 0x29b6, 0x29f8, - 0x2a28, 0xffff, 0x2a52, 0x2a84, 0xffff, 0xffff, 0xffff, 0x2aca, - 0x2af4, 0xffff, 0xffff, 0x183f, 0x0003, 0x0864, 0x08ca, 0x0897, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2F800 - 2F83F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, - 0x1351, 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2F840 - 2F87F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0x0031, 0x0006, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 2F880 - 2F8BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, - 0x13e3, 0x0003, 0x0004, 0x030b, 0x0713, 0x000b, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, 0x0000, 0x02a1, - 0x02d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, - 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, 0x0024, 0x0001, - 0x0046, 0x0000, 0x0001, 0x0046, 0x0012, 0x0001, 0x0046, 0x001e, - 0x0001, 0x0000, 0x04af, 0x0004, 0x0038, 0x0032, 0x002f, 0x0035, - // Entry 2F8C0 - 2F8FF - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0044, 0x00a9, 0x0100, - 0x0135, 0x0254, 0x026e, 0x027f, 0x0290, 0x0002, 0x0047, 0x0078, - 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, 0x0046, 0xffff, 0x0029, - 0x0033, 0x0046, 0x0050, 0x0060, 0x006d, 0x0077, 0x0084, 0x008b, - 0x00a4, 0x00b4, 0x00be, 0x000d, 0x0046, 0xffff, 0x00cb, 0x00cf, - 0x00d3, 0x00da, 0x00de, 0x006d, 0x00e5, 0x00ec, 0x00f0, 0x00f7, - 0x00fb, 0x00ff, 0x000d, 0x0046, 0xffff, 0x0106, 0x0119, 0x0135, - // Entry 2F900 - 2F93F - 0x014b, 0x0060, 0x006d, 0x0077, 0x015e, 0x0177, 0x0196, 0x01af, - 0x01bf, 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, 0x0046, 0xffff, - 0x0029, 0x0033, 0x0046, 0x0050, 0x0060, 0x006d, 0x0077, 0x0084, - 0x008b, 0x00a4, 0x00b4, 0x00be, 0x000d, 0x0046, 0xffff, 0x00cb, - 0x01d2, 0x00d3, 0x00da, 0x00de, 0x006d, 0x00e5, 0x00ec, 0x00f0, - 0x00f7, 0x00fb, 0x00ff, 0x000d, 0x0046, 0xffff, 0x0106, 0x0119, - 0x0135, 0x014b, 0x0060, 0x006d, 0x0077, 0x015e, 0x0177, 0x0196, - 0x01af, 0x01bf, 0x0002, 0x00ac, 0x00d6, 0x0005, 0x00b2, 0x00bb, - // Entry 2F940 - 2F97F - 0x00cd, 0x0000, 0x00c4, 0x0007, 0x0046, 0x01d9, 0x01e6, 0x01f9, - 0x0209, 0x0216, 0x0229, 0x023c, 0x0007, 0x0046, 0x0246, 0x024a, - 0x0251, 0x0258, 0x025f, 0x026c, 0x0273, 0x0007, 0x0046, 0x0277, - 0x024a, 0x0251, 0x0258, 0x025f, 0x026c, 0x0273, 0x0007, 0x0046, - 0x027e, 0x029a, 0x02bc, 0x02d8, 0x02f4, 0x0313, 0x0338, 0x0005, - 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, 0x0046, 0x01d9, - 0x01e6, 0x01f9, 0x0209, 0x0216, 0x0229, 0x023c, 0x0007, 0x0046, - 0x0277, 0x024a, 0x0251, 0x0258, 0x025f, 0x026c, 0x0273, 0x0007, - // Entry 2F980 - 2F9BF - 0x0046, 0x0277, 0x024a, 0x0251, 0x0258, 0x025f, 0x026c, 0x0273, - 0x0007, 0x0046, 0x027e, 0x029a, 0x0354, 0x02d8, 0x02f4, 0x0313, - 0x0338, 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, 0x010e, 0x0115, - 0x0005, 0x0046, 0xffff, 0x0373, 0x0393, 0x03b3, 0x03d6, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0046, - 0xffff, 0x0373, 0x0393, 0x03b3, 0x03d6, 0x0003, 0x0120, 0x0127, - 0x012e, 0x0005, 0x0046, 0xffff, 0x0373, 0x0393, 0x03b3, 0x03d6, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - // Entry 2F9C0 - 2F9FF - 0x0046, 0xffff, 0x0373, 0x0393, 0x03b3, 0x03d6, 0x0002, 0x0138, - 0x01c6, 0x0003, 0x013c, 0x016a, 0x0198, 0x000c, 0x014c, 0x0152, - 0x0149, 0x0155, 0x015b, 0x0161, 0x0167, 0x014f, 0x0158, 0x015e, - 0x0000, 0x0164, 0x0001, 0x0046, 0x03f3, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0046, 0x0415, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0046, - 0x0422, 0x0001, 0x0046, 0x043b, 0x0001, 0x0046, 0x044e, 0x0001, - 0x0046, 0x046d, 0x0001, 0x0046, 0x0492, 0x0001, 0x0046, 0x04b1, - 0x0001, 0x0046, 0x04c4, 0x000c, 0x017a, 0x0180, 0x0177, 0x0183, - // Entry 2FA00 - 2FA3F - 0x0189, 0x018f, 0x0195, 0x017d, 0x0186, 0x018c, 0x0000, 0x0192, - 0x0001, 0x0046, 0x04d7, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0046, - 0x0415, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0046, 0x0422, 0x0001, - 0x0046, 0x043b, 0x0001, 0x0046, 0x04db, 0x0001, 0x0046, 0x04ee, - 0x0001, 0x0046, 0x0501, 0x0001, 0x0046, 0x04b1, 0x0001, 0x0046, - 0x04c4, 0x000c, 0x01a8, 0x01ae, 0x01a5, 0x01b1, 0x01b7, 0x01bd, - 0x01c3, 0x01ab, 0x01b4, 0x01ba, 0x0000, 0x01c0, 0x0001, 0x0046, - 0x03f3, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0046, 0x0415, 0x0001, - // Entry 2FA40 - 2FA7F - 0x0000, 0x04f2, 0x0001, 0x0046, 0x0422, 0x0001, 0x0046, 0x043b, - 0x0001, 0x0046, 0x044e, 0x0001, 0x0046, 0x046d, 0x0001, 0x0046, - 0x0492, 0x0001, 0x0046, 0x04b1, 0x0001, 0x0046, 0x04c4, 0x0003, - 0x01ca, 0x01f8, 0x0226, 0x000c, 0x01da, 0x01e0, 0x01d7, 0x01e3, - 0x01e9, 0x01ef, 0x01f5, 0x01dd, 0x01e6, 0x01ec, 0x0000, 0x01f2, - 0x0001, 0x0046, 0x03f3, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0046, - 0x0415, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0046, 0x0422, 0x0001, - 0x0046, 0x043b, 0x0001, 0x0046, 0x044e, 0x0001, 0x0046, 0x046d, - // Entry 2FA80 - 2FABF - 0x0001, 0x0046, 0x0492, 0x0001, 0x0046, 0x04b1, 0x0001, 0x0046, - 0x04c4, 0x000c, 0x0208, 0x020e, 0x0205, 0x0211, 0x0217, 0x021d, - 0x0223, 0x020b, 0x0214, 0x021a, 0x0000, 0x0220, 0x0001, 0x0046, - 0x03f3, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0046, 0x0415, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x0046, 0x0422, 0x0001, 0x0046, 0x043b, - 0x0001, 0x0046, 0x044e, 0x0001, 0x0046, 0x046d, 0x0001, 0x0046, - 0x0492, 0x0001, 0x0046, 0x04b1, 0x0001, 0x0046, 0x04c4, 0x000c, - 0x0236, 0x023c, 0x0233, 0x023f, 0x0245, 0x024b, 0x0251, 0x0239, - // Entry 2FAC0 - 2FAFF - 0x0242, 0x0248, 0x0000, 0x024e, 0x0001, 0x0046, 0x03f3, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0046, 0x0415, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x0046, 0x0422, 0x0001, 0x0046, 0x043b, 0x0001, 0x0046, - 0x044e, 0x0001, 0x0046, 0x046d, 0x0001, 0x0046, 0x0492, 0x0001, - 0x0046, 0x04b1, 0x0001, 0x0046, 0x04c4, 0x0003, 0x0263, 0x0000, - 0x0258, 0x0002, 0x025b, 0x025f, 0x0002, 0x0046, 0x0508, 0x0556, - 0x0002, 0x0046, 0x0543, 0x0579, 0x0002, 0x0266, 0x026a, 0x0002, - 0x0046, 0x0585, 0x05aa, 0x0002, 0x0046, 0x059a, 0x05b4, 0x0004, - // Entry 2FB00 - 2FB3F - 0x027c, 0x0276, 0x0273, 0x0279, 0x0001, 0x0046, 0x05be, 0x0001, - 0x0046, 0x05ce, 0x0001, 0x0046, 0x05d8, 0x0001, 0x0000, 0x237b, - 0x0004, 0x028d, 0x0287, 0x0284, 0x028a, 0x0001, 0x0002, 0x0453, - 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, - 0x0478, 0x0004, 0x029e, 0x0298, 0x0295, 0x029b, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0005, 0x02a7, 0x0000, 0x0000, 0x0000, 0x02cf, - 0x0002, 0x02aa, 0x02bd, 0x0003, 0x0000, 0x0000, 0x02ae, 0x000d, - // Entry 2FB40 - 2FB7F - 0x0046, 0xffff, 0x05e1, 0x05f4, 0x0607, 0x0620, 0x0630, 0x0646, - 0x0662, 0x0678, 0x0694, 0x06b0, 0x06bd, 0x06ca, 0x0002, 0x0000, - 0x02c0, 0x000d, 0x0046, 0xffff, 0x06dd, 0x0501, 0x06e4, 0x06f1, - 0x06f5, 0x0702, 0x06f1, 0x0709, 0x00d3, 0x0710, 0x00d3, 0x00cf, - 0x0001, 0x02d1, 0x0001, 0x02d3, 0x0001, 0x0046, 0x0717, 0x0005, - 0x02dc, 0x0000, 0x0000, 0x0000, 0x0304, 0x0002, 0x02df, 0x02f2, - 0x0003, 0x0000, 0x0000, 0x02e3, 0x000d, 0x0046, 0xffff, 0x071e, - 0x072e, 0x0738, 0x075b, 0x077b, 0x079e, 0x07be, 0x07cb, 0x07db, - // Entry 2FB80 - 2FBBF - 0x07eb, 0x07fe, 0x0815, 0x0002, 0x0000, 0x02f5, 0x000d, 0x0046, - 0xffff, 0x082f, 0x0836, 0x083a, 0x083a, 0x00cb, 0x00cb, 0x083a, - 0x0273, 0x083a, 0x0273, 0x083e, 0x083e, 0x0001, 0x0306, 0x0001, - 0x0308, 0x0001, 0x0046, 0x0845, 0x0040, 0x034c, 0x0000, 0x0000, - 0x0351, 0x0368, 0x037f, 0x0396, 0x03ad, 0x03bf, 0x03d1, 0x03e8, - 0x03ff, 0x0416, 0x0431, 0x044c, 0x0000, 0x0000, 0x0000, 0x0467, - 0x0480, 0x0499, 0x0000, 0x0000, 0x0000, 0x04b2, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x04b7, 0x04cb, 0x04df, 0x04f3, 0x0507, - // Entry 2FBC0 - 2FBFF - 0x051b, 0x052f, 0x0543, 0x0557, 0x056b, 0x057f, 0x0593, 0x05a7, - 0x05bb, 0x05cf, 0x05e3, 0x05f7, 0x060b, 0x061f, 0x0633, 0x0647, - 0x0000, 0x065b, 0x0000, 0x0660, 0x0676, 0x0688, 0x069a, 0x06b0, - 0x06c2, 0x06d4, 0x06ea, 0x06fc, 0x070e, 0x0001, 0x034e, 0x0001, - 0x0046, 0x0852, 0x0003, 0x0355, 0x0358, 0x035d, 0x0001, 0x0046, - 0x086b, 0x0003, 0x0046, 0x0878, 0x0898, 0x08ac, 0x0002, 0x0360, - 0x0364, 0x0002, 0x0046, 0x08cb, 0x08cb, 0x0002, 0x0046, 0x08e8, - 0x08e8, 0x0003, 0x036c, 0x036f, 0x0374, 0x0001, 0x0046, 0x090c, - // Entry 2FC00 - 2FC3F - 0x0003, 0x0046, 0x0878, 0x0898, 0x08ac, 0x0002, 0x0377, 0x037b, - 0x0002, 0x0046, 0x08cb, 0x08cb, 0x0002, 0x0046, 0x08e8, 0x08e8, - 0x0003, 0x0383, 0x0386, 0x038b, 0x0001, 0x0046, 0x090c, 0x0003, - 0x0046, 0x0878, 0x0898, 0x08ac, 0x0002, 0x038e, 0x0392, 0x0002, - 0x0046, 0x08cb, 0x08cb, 0x0002, 0x0046, 0x08e8, 0x08e8, 0x0003, - 0x039a, 0x039d, 0x03a2, 0x0001, 0x0046, 0x0911, 0x0003, 0x0046, - 0x091e, 0x093e, 0x094f, 0x0002, 0x03a5, 0x03a9, 0x0002, 0x0046, - 0x096f, 0x096f, 0x0002, 0x0046, 0x098c, 0x098c, 0x0003, 0x03b1, - // Entry 2FC40 - 2FC7F - 0x0000, 0x03b4, 0x0001, 0x0046, 0x0911, 0x0002, 0x03b7, 0x03bb, - 0x0002, 0x0046, 0x096f, 0x096f, 0x0002, 0x0046, 0x098c, 0x098c, - 0x0003, 0x03c3, 0x0000, 0x03c6, 0x0001, 0x0046, 0x0911, 0x0002, - 0x03c9, 0x03cd, 0x0002, 0x0046, 0x096f, 0x096f, 0x0002, 0x0046, - 0x098c, 0x098c, 0x0003, 0x03d5, 0x03d8, 0x03dd, 0x0001, 0x0046, - 0x09b0, 0x0003, 0x0046, 0x09bd, 0x09dd, 0x09ee, 0x0002, 0x03e0, - 0x03e4, 0x0002, 0x0046, 0x0a0e, 0x0a0e, 0x0002, 0x0046, 0x0a2b, - 0x0a2b, 0x0003, 0x03ec, 0x03ef, 0x03f4, 0x0001, 0x0046, 0x0a4f, - // Entry 2FC80 - 2FCBF - 0x0003, 0x0046, 0x09bd, 0x09dd, 0x09ee, 0x0002, 0x03f7, 0x03fb, - 0x0002, 0x0046, 0x0a0e, 0x0a0e, 0x0002, 0x0046, 0x0a2b, 0x0a2b, - 0x0003, 0x0403, 0x0406, 0x040b, 0x0001, 0x0046, 0x0a4f, 0x0003, - 0x0046, 0x09bd, 0x09dd, 0x09ee, 0x0002, 0x040e, 0x0412, 0x0002, - 0x0046, 0x0a0e, 0x0a0e, 0x0002, 0x0046, 0x0a2b, 0x0a2b, 0x0004, - 0x041b, 0x041e, 0x0423, 0x042e, 0x0001, 0x0046, 0x0a57, 0x0003, - 0x0046, 0x0a64, 0x0a87, 0x0a98, 0x0002, 0x0426, 0x042a, 0x0002, - 0x0046, 0x0ab8, 0x0ab8, 0x0002, 0x0046, 0x0ad2, 0x0ad2, 0x0001, - // Entry 2FCC0 - 2FCFF - 0x0046, 0x0af6, 0x0004, 0x0436, 0x0439, 0x043e, 0x0449, 0x0001, - 0x0046, 0x0b1a, 0x0003, 0x0046, 0x0a64, 0x0a87, 0x0a98, 0x0002, - 0x0441, 0x0445, 0x0002, 0x0046, 0x0ab8, 0x0ab8, 0x0002, 0x0046, - 0x0ad2, 0x0ad2, 0x0001, 0x0046, 0x0af6, 0x0004, 0x0451, 0x0454, - 0x0459, 0x0464, 0x0001, 0x0046, 0x0b1a, 0x0003, 0x0046, 0x0a64, - 0x0a87, 0x0a98, 0x0002, 0x045c, 0x0460, 0x0002, 0x0046, 0x0ab8, - 0x0ab8, 0x0002, 0x0046, 0x0ad2, 0x0ad2, 0x0001, 0x0046, 0x0af6, - 0x0003, 0x046b, 0x046e, 0x0475, 0x0001, 0x0046, 0x0b1f, 0x0005, - // Entry 2FD00 - 2FD3F - 0x0046, 0x0b54, 0x0b67, 0x0b77, 0x0b2f, 0x0b84, 0x0002, 0x0478, - 0x047c, 0x0002, 0x0046, 0x0ba0, 0x0ba0, 0x0002, 0x0046, 0x0bc0, - 0x0bc0, 0x0003, 0x0484, 0x0487, 0x048e, 0x0001, 0x0046, 0x0b1f, - 0x0005, 0x0046, 0x0b54, 0x0b67, 0x0b77, 0x0b2f, 0x0b84, 0x0002, - 0x0491, 0x0495, 0x0002, 0x0046, 0x0ba0, 0x0ba0, 0x0002, 0x0046, - 0x0bc0, 0x0bc0, 0x0003, 0x049d, 0x04a0, 0x04a7, 0x0001, 0x0046, - 0x0b1f, 0x0005, 0x0046, 0x0b54, 0x0b67, 0x0b77, 0x0b2f, 0x0b84, - 0x0002, 0x04aa, 0x04ae, 0x0002, 0x0046, 0x0ba0, 0x0ba0, 0x0002, - // Entry 2FD40 - 2FD7F - 0x0046, 0x0bc0, 0x0bc0, 0x0001, 0x04b4, 0x0001, 0x0046, 0x0be7, - 0x0003, 0x0000, 0x04bb, 0x04c0, 0x0003, 0x0046, 0x0c10, 0x0c3c, - 0x0c59, 0x0002, 0x04c3, 0x04c7, 0x0002, 0x0046, 0x0c85, 0x0c85, - 0x0002, 0x0046, 0x0cab, 0x0cab, 0x0003, 0x0000, 0x04cf, 0x04d4, - 0x0003, 0x0046, 0x0cdb, 0x0cfb, 0x0d0c, 0x0002, 0x04d7, 0x04db, - 0x0002, 0x0046, 0x0c85, 0x0c85, 0x0002, 0x0046, 0x0cab, 0x0cab, - 0x0003, 0x0000, 0x04e3, 0x04e8, 0x0003, 0x0046, 0x0cdb, 0x0cfb, - 0x0d0c, 0x0002, 0x04eb, 0x04ef, 0x0002, 0x0046, 0x0c85, 0x0c85, - // Entry 2FD80 - 2FDBF - 0x0002, 0x0046, 0x0cab, 0x0cab, 0x0003, 0x0000, 0x04f7, 0x04fc, - 0x0003, 0x0046, 0x0d2c, 0x0d5e, 0x0d81, 0x0002, 0x04ff, 0x0503, - 0x0002, 0x0046, 0x0db3, 0x0db3, 0x0002, 0x0046, 0x0ddf, 0x0ddf, - 0x0003, 0x0000, 0x050b, 0x0510, 0x0003, 0x0046, 0x0e15, 0x0e3b, - 0x0e52, 0x0002, 0x0513, 0x0517, 0x0002, 0x0046, 0x0db3, 0x0db3, - 0x0002, 0x0046, 0x0ddf, 0x0ddf, 0x0003, 0x0000, 0x051f, 0x0524, - 0x0003, 0x0046, 0x0e15, 0x0e3b, 0x0e52, 0x0002, 0x0527, 0x052b, - 0x0002, 0x0046, 0x0db3, 0x0db3, 0x0002, 0x0046, 0x0ddf, 0x0ddf, - // Entry 2FDC0 - 2FDFF - 0x0003, 0x0000, 0x0533, 0x0538, 0x0003, 0x0046, 0x0e78, 0x0ea7, - 0x0ec7, 0x0002, 0x053b, 0x053f, 0x0002, 0x0046, 0x0ef6, 0x0ef6, - 0x0002, 0x0046, 0x0f1f, 0x0f1f, 0x0003, 0x0000, 0x0547, 0x054c, - 0x0003, 0x0046, 0x0f52, 0x0f75, 0x0f89, 0x0002, 0x054f, 0x0553, - 0x0002, 0x0046, 0x0ef6, 0x0ef6, 0x0002, 0x0046, 0x0f1f, 0x0f1f, - 0x0003, 0x0000, 0x055b, 0x0560, 0x0003, 0x0046, 0x0f52, 0x0f75, - 0x0f89, 0x0002, 0x0563, 0x0567, 0x0002, 0x0046, 0x0ef6, 0x0ef6, - 0x0002, 0x0046, 0x0f1f, 0x0f1f, 0x0003, 0x0000, 0x056f, 0x0574, - // Entry 2FE00 - 2FE3F - 0x0003, 0x0046, 0x0fac, 0x0fd8, 0x0ff5, 0x0002, 0x0577, 0x057b, - 0x0002, 0x0046, 0x1021, 0x1021, 0x0002, 0x0046, 0x1047, 0x1047, - 0x0003, 0x0000, 0x0583, 0x0588, 0x0003, 0x0046, 0x1077, 0x1097, - 0x10a8, 0x0002, 0x058b, 0x058f, 0x0002, 0x0046, 0x1021, 0x1021, - 0x0002, 0x0046, 0x1047, 0x1047, 0x0003, 0x0000, 0x0597, 0x059c, - 0x0003, 0x0046, 0x1077, 0x1097, 0x10a8, 0x0002, 0x059f, 0x05a3, - 0x0002, 0x0046, 0x1021, 0x1021, 0x0002, 0x0046, 0x1047, 0x1047, - 0x0003, 0x0000, 0x05ab, 0x05b0, 0x0003, 0x0046, 0x10c8, 0x10f7, - // Entry 2FE40 - 2FE7F - 0x1117, 0x0002, 0x05b3, 0x05b7, 0x0002, 0x0046, 0x1146, 0x1146, - 0x0002, 0x0046, 0x116f, 0x116f, 0x0003, 0x0000, 0x05bf, 0x05c4, - 0x0003, 0x0046, 0x11a2, 0x11c8, 0x11df, 0x0002, 0x05c7, 0x05cb, - 0x0002, 0x0046, 0x1146, 0x1146, 0x0002, 0x0046, 0x116f, 0x116f, - 0x0003, 0x0000, 0x05d3, 0x05d8, 0x0003, 0x0046, 0x11a2, 0x11c8, - 0x11df, 0x0002, 0x05db, 0x05df, 0x0002, 0x0046, 0x1146, 0x1146, - 0x0002, 0x0046, 0x116f, 0x116f, 0x0003, 0x0000, 0x05e7, 0x05ec, - 0x0003, 0x0046, 0x1205, 0x123a, 0x1260, 0x0002, 0x05ef, 0x05f3, - // Entry 2FE80 - 2FEBF - 0x0002, 0x0046, 0x1295, 0x1295, 0x0002, 0x0046, 0x12c4, 0x12c4, - 0x0003, 0x0000, 0x05fb, 0x0600, 0x0003, 0x0046, 0x12fd, 0x1323, - 0x133a, 0x0002, 0x0603, 0x0607, 0x0002, 0x0046, 0x1295, 0x1295, - 0x0002, 0x0046, 0x12c4, 0x12c4, 0x0003, 0x0000, 0x060f, 0x0614, - 0x0003, 0x0046, 0x12fd, 0x1323, 0x133a, 0x0002, 0x0617, 0x061b, - 0x0002, 0x0046, 0x1295, 0x1295, 0x0002, 0x0046, 0x12c4, 0x12c4, - 0x0003, 0x0000, 0x0623, 0x0628, 0x0003, 0x0046, 0x1360, 0x138c, - 0x13a9, 0x0002, 0x062b, 0x062f, 0x0002, 0x0046, 0x13d5, 0x13d5, - // Entry 2FEC0 - 2FEFF - 0x0002, 0x0046, 0x13fb, 0x13fb, 0x0003, 0x0000, 0x0637, 0x063c, - 0x0003, 0x0046, 0x142b, 0x1448, 0x1456, 0x0002, 0x063f, 0x0643, - 0x0002, 0x0046, 0x13d5, 0x13d5, 0x0002, 0x0046, 0x13fb, 0x13fb, - 0x0003, 0x0000, 0x064b, 0x0650, 0x0003, 0x0046, 0x142b, 0x1448, - 0x1456, 0x0002, 0x0653, 0x0657, 0x0002, 0x0046, 0x13d5, 0x13d5, - 0x0002, 0x0046, 0x13fb, 0x13fb, 0x0001, 0x065d, 0x0001, 0x0007, - 0x07cc, 0x0003, 0x0664, 0x0667, 0x066b, 0x0001, 0x0046, 0x1473, - 0x0002, 0x0046, 0xffff, 0x148c, 0x0002, 0x066e, 0x0672, 0x0002, - // Entry 2FF00 - 2FF3F - 0x0046, 0x14af, 0x14af, 0x0002, 0x0046, 0x14d2, 0x14d2, 0x0003, - 0x067a, 0x0000, 0x067d, 0x0001, 0x0046, 0x1502, 0x0002, 0x0680, - 0x0684, 0x0002, 0x0046, 0x14af, 0x14af, 0x0002, 0x0046, 0x14d2, - 0x14d2, 0x0003, 0x068c, 0x0000, 0x068f, 0x0001, 0x0046, 0x1502, - 0x0002, 0x0692, 0x0696, 0x0002, 0x0046, 0x14af, 0x14af, 0x0002, - 0x0046, 0x14d2, 0x14d2, 0x0003, 0x069e, 0x06a1, 0x06a5, 0x0001, - 0x0046, 0x1507, 0x0002, 0x0046, 0xffff, 0x1520, 0x0002, 0x06a8, - 0x06ac, 0x0002, 0x0046, 0x1540, 0x1540, 0x0002, 0x0046, 0x1560, - // Entry 2FF40 - 2FF7F - 0x1560, 0x0003, 0x06b4, 0x0000, 0x06b7, 0x0001, 0x0046, 0x1590, - 0x0002, 0x06ba, 0x06be, 0x0002, 0x0046, 0x1540, 0x1540, 0x0002, - 0x0046, 0x1560, 0x1560, 0x0003, 0x06c6, 0x0000, 0x06c9, 0x0001, - 0x0046, 0x1590, 0x0002, 0x06cc, 0x06d0, 0x0002, 0x0046, 0x1540, - 0x1540, 0x0002, 0x0046, 0x1560, 0x1560, 0x0003, 0x06d8, 0x06db, - 0x06df, 0x0001, 0x0046, 0x1598, 0x0002, 0x0046, 0xffff, 0x15b1, - 0x0002, 0x06e2, 0x06e6, 0x0002, 0x0046, 0x15c4, 0x15c4, 0x0002, - 0x0046, 0x15e4, 0x15e4, 0x0003, 0x06ee, 0x0000, 0x06f1, 0x0001, - // Entry 2FF80 - 2FFBF - 0x0046, 0x1614, 0x0002, 0x06f4, 0x06f8, 0x0002, 0x0046, 0x15c4, - 0x15c4, 0x0002, 0x0046, 0x15e4, 0x15e4, 0x0003, 0x0700, 0x0000, - 0x0703, 0x0001, 0x0046, 0x1614, 0x0002, 0x0706, 0x070a, 0x0002, - 0x0046, 0x15c4, 0x15c4, 0x0002, 0x0046, 0x15e4, 0x15e4, 0x0001, - 0x0710, 0x0001, 0x0046, 0x161c, 0x0004, 0x0718, 0x071d, 0x0722, - 0x0731, 0x0003, 0x0000, 0x1dc7, 0x3844, 0x385b, 0x0003, 0x0046, - 0x1633, 0x1644, 0x166e, 0x0002, 0x0000, 0x0725, 0x0003, 0x0000, - 0x072c, 0x0729, 0x0001, 0x0046, 0x16a4, 0x0003, 0x0046, 0xffff, - // Entry 2FFC0 - 2FFFF - 0x16f5, 0x1743, 0x0002, 0x0918, 0x0734, 0x0003, 0x0738, 0x0878, - 0x07d8, 0x009e, 0x0046, 0xffff, 0xffff, 0xffff, 0xffff, 0x1930, - 0x1a3d, 0x1b79, 0x1c17, 0x1d4b, 0x1e7f, 0x1faa, 0x20d5, 0x2176, - 0x2344, 0x23eb, 0x24a4, 0x25b1, 0x2661, 0x2747, 0x2851, 0x29b2, - 0x2ac5, 0x2bea, 0x2ca3, 0x2d4a, 0xffff, 0xffff, 0x2e5b, 0xffff, - 0x2f53, 0xffff, 0x305a, 0x3101, 0x3196, 0x3219, 0xffff, 0xffff, - 0x335f, 0x340f, 0x3511, 0xffff, 0xffff, 0xffff, 0x363f, 0xffff, - 0x374b, 0x3843, 0xffff, 0x398f, 0x3a9c, 0x3bc4, 0xffff, 0xffff, - // Entry 30000 - 3003F - 0xffff, 0xffff, 0x3d31, 0xffff, 0xffff, 0x3e68, 0x3f75, 0xffff, - 0xffff, 0x412f, 0x4206, 0x42d1, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x44d3, 0x455f, 0x4612, 0x46c2, 0x4760, 0xffff, - 0xffff, 0x4939, 0xffff, 0x49f4, 0xffff, 0xffff, 0x4b74, 0xffff, - 0x4cec, 0xffff, 0xffff, 0xffff, 0xffff, 0x4e38, 0xffff, 0x4f14, - 0x5063, 0x5161, 0x521d, 0xffff, 0xffff, 0xffff, 0x532a, 0x5413, - 0x54de, 0xffff, 0xffff, 0x5641, 0x5791, 0x587d, 0x593f, 0xffff, - 0xffff, 0x5a70, 0x5b20, 0x5bb5, 0xffff, 0x5cb9, 0xffff, 0xffff, - // Entry 30040 - 3007F - 0xffff, 0xffff, 0xffff, 0x5f6a, 0x6011, 0x60a0, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x627e, 0xffff, 0xffff, - 0x6392, 0xffff, 0x6447, 0xffff, 0x6571, 0x6621, 0x6719, 0xffff, - 0x67f2, 0x68f3, 0xffff, 0xffff, 0xffff, 0x6a72, 0x6b3d, 0xffff, - 0xffff, 0x1785, 0x1ae1, 0x2202, 0x229a, 0xffff, 0xffff, 0x4c30, - 0x5e74, 0x009e, 0x0046, 0x182f, 0x1864, 0x1897, 0x18d3, 0x1972, - 0x1a60, 0x1b96, 0x1c69, 0x1d9d, 0x1ece, 0x1ff9, 0x20f5, 0x2190, - 0x2367, 0x2411, 0x24e6, 0x25d4, 0x2699, 0x2789, 0x28b2, 0x29f7, - // Entry 30080 - 300BF - 0x2b10, 0x2c10, 0x2cc3, 0x2d76, 0x2e15, 0x2e38, 0x2e81, 0x2f14, - 0x2f7d, 0x3018, 0x307a, 0x311b, 0x31ad, 0x3245, 0x32e1, 0x3320, - 0x3382, 0x3448, 0x352e, 0x35a6, 0x35c6, 0x360c, 0x3675, 0x3728, - 0x3787, 0x387f, 0x393b, 0x39d1, 0x3ae7, 0x3bde, 0x3c59, 0x3c89, - 0x3cdf, 0x3d0b, 0x3d57, 0x3dea, 0x3e2f, 0x3eaa, 0x3fbd, 0x40d6, - 0x4115, 0x4162, 0x4232, 0x42eb, 0x4366, 0x43ae, 0x43ed, 0x4410, - 0x4449, 0x448b, 0x44ed, 0x4582, 0x4638, 0x46e2, 0x47ba, 0x48af, - 0x48f1, 0x4959, 0x49d7, 0x4a35, 0x4afe, 0x4b44, 0x4b9e, 0x4cb6, - // Entry 300C0 - 300FF - 0x4d09, 0x4d8a, 0x4daa, 0x4ddc, 0x4e02, 0x4e61, 0x4efa, 0x4f6e, - 0x50a2, 0x5188, 0x523d, 0x52c7, 0x52ed, 0x5307, 0x5360, 0x5442, - 0x551f, 0x55df, 0x55ff, 0x567e, 0x57c9, 0x58a6, 0x596e, 0x5a13, - 0x5a30, 0x5a93, 0x5b3a, 0x5bde, 0x5c77, 0x5d0c, 0x5df0, 0x5e19, - 0x5e3f, 0x5f27, 0x5f4d, 0x5f8a, 0x602b, 0x60ba, 0x6138, 0x615b, - 0x61a9, 0x61df, 0x621b, 0x6244, 0x625e, 0x62a7, 0x6337, 0x636c, - 0x63ac, 0x6427, 0x6488, 0x6551, 0x6594, 0x665c, 0x673c, 0x67c9, - 0x6830, 0x6922, 0x69c7, 0x69f3, 0x6a26, 0x6a9e, 0x6b7b, 0x4094, - // Entry 30100 - 3013F - 0x573f, 0x17a8, 0x1afe, 0x221f, 0x22bd, 0xffff, 0x4b2a, 0x4c47, - 0x5e9a, 0x009e, 0x0046, 0xffff, 0xffff, 0xffff, 0xffff, 0x19d9, - 0x1aa5, 0x1bd8, 0x1ce0, 0x1e14, 0x1f42, 0x206d, 0x213a, 0x21cf, - 0x23af, 0x245c, 0x254d, 0x261c, 0x26f6, 0x27f3, 0x2938, 0x2a64, - 0x2b83, 0x2c5b, 0x2d08, 0x2dc7, 0xffff, 0xffff, 0x2ecc, 0xffff, - 0x2fcc, 0xffff, 0x30bf, 0x315a, 0x31e9, 0x3296, 0xffff, 0xffff, - 0x33ca, 0x34a6, 0x3570, 0xffff, 0xffff, 0xffff, 0x36d0, 0xffff, - 0x37e8, 0x38e0, 0xffff, 0x3a38, 0x3b57, 0x3c1d, 0xffff, 0xffff, - // Entry 30140 - 3017F - 0xffff, 0xffff, 0x3da2, 0xffff, 0xffff, 0x3f11, 0x402a, 0xffff, - 0xffff, 0x41ba, 0x4283, 0x432a, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x452c, 0x45ca, 0x4683, 0x4727, 0x4839, 0xffff, - 0xffff, 0x499e, 0xffff, 0x4a9b, 0xffff, 0xffff, 0x4bed, 0xffff, - 0x4d4b, 0xffff, 0xffff, 0xffff, 0xffff, 0x4eaf, 0xffff, 0x4ff0, - 0x5109, 0x51d4, 0x5282, 0xffff, 0xffff, 0xffff, 0x53bb, 0x5496, - 0x5585, 0xffff, 0xffff, 0x56e0, 0x5823, 0x58f4, 0x59c2, 0xffff, - 0xffff, 0x5adb, 0x5b79, 0x5c2c, 0xffff, 0x5d84, 0xffff, 0xffff, - // Entry 30180 - 301BF - 0xffff, 0xffff, 0xffff, 0x5fcf, 0x606a, 0x60f9, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x62f5, 0xffff, 0xffff, - 0x63eb, 0xffff, 0x64ee, 0xffff, 0x65dc, 0x66bc, 0x6784, 0xffff, - 0x6893, 0x6976, 0xffff, 0xffff, 0xffff, 0x6aef, 0x6bde, 0xffff, - 0xffff, 0x17f0, 0x1b40, 0x2261, 0x2305, 0xffff, 0xffff, 0x4c83, - 0x5ee5, 0x0003, 0x0000, 0x0000, 0x091c, 0x0042, 0x000b, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 301C0 - 301FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0000, 0x0003, 0x0004, 0x0256, 0x0632, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, - // Entry 30200 - 3023F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, - 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0047, 0x0000, 0x0001, - 0x0047, 0x0024, 0x0001, 0x0047, 0x0042, 0x0001, 0x0000, 0x051c, - 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, - 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0203, 0x0223, - 0x0234, 0x0245, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, - 0x0066, 0x000d, 0x0047, 0xffff, 0x0049, 0x0055, 0x0061, 0x006d, - // Entry 30240 - 3027F - 0x0079, 0x0085, 0x0091, 0x009d, 0x00a9, 0x00b5, 0x00c2, 0x00cf, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - 0x0047, 0xffff, 0x00dc, 0x00f6, 0x0112, 0x0130, 0x014e, 0x0168, - 0x0186, 0x01a0, 0x01bc, 0x01d4, 0x01f0, 0x0215, 0x0003, 0x0079, - 0x0088, 0x0097, 0x000d, 0x0047, 0xffff, 0x0049, 0x0055, 0x0061, - 0x006d, 0x0079, 0x0085, 0x0091, 0x009d, 0x00a9, 0x00b5, 0x00c2, - 0x00cf, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - // Entry 30280 - 302BF - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x000d, 0x0047, 0xffff, 0x00dc, 0x00f6, 0x0112, 0x0130, 0x014e, - 0x0168, 0x0186, 0x01a0, 0x01bc, 0x01d4, 0x01f0, 0x0215, 0x0002, - 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, - 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, 0x024b, 0x0250, 0x0255, - 0x025a, 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, 0x024b, 0x0250, - 0x0255, 0x025a, 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, 0x024b, - 0x0250, 0x0255, 0x025a, 0x0007, 0x0047, 0x025f, 0x0266, 0x0271, - // Entry 302C0 - 302FF - 0x027e, 0x028b, 0x0296, 0x02a3, 0x0005, 0x00d9, 0x00e2, 0x00f4, - 0x0000, 0x00eb, 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, 0x024b, - 0x0250, 0x0255, 0x025a, 0x0007, 0x0047, 0x023c, 0x0241, 0x0246, - 0x024b, 0x0250, 0x0255, 0x025a, 0x0007, 0x0047, 0x023c, 0x0241, - 0x0246, 0x024b, 0x0250, 0x0255, 0x025a, 0x0007, 0x0047, 0x025f, - 0x0266, 0x0271, 0x027e, 0x028b, 0x0296, 0x02a3, 0x0002, 0x0100, - 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0047, 0xffff, - 0x02ae, 0x02b2, 0x02b6, 0x02ba, 0x0005, 0x0000, 0xffff, 0x0033, - // Entry 30300 - 3033F - 0x0035, 0x0037, 0x2335, 0x0005, 0x0047, 0xffff, 0x02be, 0x02d0, - 0x02e2, 0x02f4, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0047, - 0xffff, 0x02ae, 0x02b2, 0x02b6, 0x02ba, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0047, 0xffff, 0x02be, - 0x02d0, 0x02e2, 0x02f4, 0x0002, 0x0135, 0x019c, 0x0003, 0x0139, - 0x015a, 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, 0x014e, 0x0151, - 0x0154, 0x0157, 0x0148, 0x0001, 0x0047, 0x0306, 0x0001, 0x0047, - 0x0318, 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, 0x032b, 0x0001, - // Entry 30340 - 3037F - 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, 0x0344, - 0x0001, 0x0047, 0x034d, 0x0008, 0x0166, 0x016c, 0x0163, 0x016f, - 0x0172, 0x0175, 0x0178, 0x0169, 0x0001, 0x0047, 0x0306, 0x0001, - 0x0047, 0x0356, 0x0001, 0x0047, 0x035b, 0x0001, 0x0047, 0x0360, - 0x0001, 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, - 0x0344, 0x0001, 0x0047, 0x034d, 0x0008, 0x0187, 0x018d, 0x0184, - 0x0190, 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, 0x0047, 0x0306, - 0x0001, 0x0047, 0x0365, 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, - // Entry 30380 - 303BF - 0x036b, 0x0001, 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, - 0x0047, 0x0344, 0x0001, 0x0047, 0x034d, 0x0003, 0x01a0, 0x01c1, - 0x01e2, 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, 0x01b8, 0x01bb, - 0x01be, 0x01af, 0x0001, 0x0047, 0x0306, 0x0001, 0x0047, 0x0318, - 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, 0x032b, 0x0001, 0x0047, - 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, 0x0344, 0x0001, - 0x0047, 0x034d, 0x0008, 0x01cd, 0x01d3, 0x01ca, 0x01d6, 0x01d9, - 0x01dc, 0x01df, 0x01d0, 0x0001, 0x0047, 0x0306, 0x0001, 0x0047, - // Entry 303C0 - 303FF - 0x0318, 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, 0x032b, 0x0001, - 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, 0x0344, - 0x0001, 0x0047, 0x034d, 0x0008, 0x01ee, 0x01f4, 0x01eb, 0x01f7, - 0x01fa, 0x01fd, 0x0200, 0x01f1, 0x0001, 0x0047, 0x0306, 0x0001, - 0x0047, 0x0318, 0x0001, 0x0047, 0x031d, 0x0001, 0x0047, 0x032b, - 0x0001, 0x0047, 0x0330, 0x0001, 0x0047, 0x033b, 0x0001, 0x0047, - 0x0344, 0x0001, 0x0047, 0x034d, 0x0003, 0x0212, 0x021d, 0x0207, - 0x0002, 0x020a, 0x020e, 0x0002, 0x0047, 0x0371, 0x039b, 0x0002, - // Entry 30400 - 3043F - 0x0047, 0x0394, 0x03b3, 0x0002, 0x0215, 0x0219, 0x0002, 0x0047, - 0x03b8, 0x03c1, 0x0002, 0x0047, 0x0394, 0x03b3, 0x0001, 0x021f, - 0x0002, 0x0047, 0x03c8, 0x03cf, 0x0004, 0x0231, 0x022b, 0x0228, - 0x022e, 0x0001, 0x0047, 0x03d4, 0x0001, 0x0047, 0x03f7, 0x0001, - 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x0242, 0x023c, - 0x0239, 0x023f, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0253, - 0x024d, 0x024a, 0x0250, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry 30440 - 3047F - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0040, - 0x0297, 0x0000, 0x0000, 0x029c, 0x02b3, 0x02c5, 0x02d7, 0x02ee, - 0x0300, 0x0312, 0x0329, 0x033b, 0x034d, 0x0368, 0x037e, 0x0000, - 0x0000, 0x0000, 0x0394, 0x03ad, 0x03bf, 0x0000, 0x0000, 0x0000, - 0x03d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d6, 0x03ea, - 0x03fe, 0x0412, 0x0426, 0x043a, 0x044e, 0x0462, 0x0476, 0x048a, - 0x049e, 0x04b2, 0x04c6, 0x04da, 0x04ee, 0x0502, 0x0516, 0x052a, - 0x053e, 0x0552, 0x0566, 0x0000, 0x057a, 0x0000, 0x057f, 0x0595, - // Entry 30480 - 304BF - 0x05a7, 0x05b9, 0x05cf, 0x05e1, 0x05f3, 0x0609, 0x061b, 0x062d, - 0x0001, 0x0299, 0x0001, 0x0047, 0x041e, 0x0003, 0x02a0, 0x02a3, - 0x02a8, 0x0001, 0x0047, 0x0427, 0x0003, 0x0047, 0x042e, 0x0446, - 0x0454, 0x0002, 0x02ab, 0x02af, 0x0002, 0x0047, 0x0464, 0x0464, - 0x0002, 0x0047, 0x0480, 0x0480, 0x0003, 0x02b7, 0x0000, 0x02ba, - 0x0001, 0x0047, 0x0427, 0x0002, 0x02bd, 0x02c1, 0x0002, 0x0047, - 0x0464, 0x0464, 0x0002, 0x0047, 0x0480, 0x0480, 0x0003, 0x02c9, - 0x0000, 0x02cc, 0x0001, 0x0047, 0x0427, 0x0002, 0x02cf, 0x02d3, - // Entry 304C0 - 304FF - 0x0002, 0x0047, 0x049a, 0x049a, 0x0002, 0x0047, 0x04a8, 0x04a8, - 0x0003, 0x02db, 0x02de, 0x02e3, 0x0001, 0x0047, 0x04c0, 0x0003, - 0x0047, 0x04cd, 0x04eb, 0x04ff, 0x0002, 0x02e6, 0x02ea, 0x0002, - 0x0047, 0x051f, 0x051f, 0x0002, 0x0047, 0x053d, 0x053d, 0x0003, - 0x02f2, 0x0000, 0x02f5, 0x0001, 0x0047, 0x04c0, 0x0002, 0x02f8, - 0x02fc, 0x0002, 0x0047, 0x051f, 0x051f, 0x0002, 0x0047, 0x053d, - 0x053d, 0x0003, 0x0304, 0x0000, 0x0307, 0x0001, 0x0047, 0x04c0, - 0x0002, 0x030a, 0x030e, 0x0002, 0x0047, 0x051f, 0x051f, 0x0002, - // Entry 30500 - 3053F - 0x0047, 0x053d, 0x053d, 0x0003, 0x0316, 0x0319, 0x031e, 0x0001, - 0x0047, 0x0559, 0x0003, 0x0047, 0x0560, 0x0578, 0x0586, 0x0002, - 0x0321, 0x0325, 0x0002, 0x0047, 0x0596, 0x0596, 0x0002, 0x0047, - 0x05b0, 0x05b0, 0x0003, 0x032d, 0x0000, 0x0330, 0x0001, 0x0047, - 0x0559, 0x0002, 0x0333, 0x0337, 0x0002, 0x0047, 0x0596, 0x0596, - 0x0002, 0x0047, 0x05b0, 0x05b0, 0x0003, 0x033f, 0x0000, 0x0342, - 0x0001, 0x0047, 0x0559, 0x0002, 0x0345, 0x0349, 0x0002, 0x0047, - 0x05c8, 0x05c8, 0x0002, 0x0047, 0x05b0, 0x05b0, 0x0004, 0x0352, - // Entry 30540 - 3057F - 0x0355, 0x035a, 0x0365, 0x0001, 0x0047, 0x05d6, 0x0003, 0x0047, - 0x05ec, 0x0613, 0x0630, 0x0002, 0x035d, 0x0361, 0x0002, 0x0047, - 0x064f, 0x064f, 0x0002, 0x0047, 0x0669, 0x0669, 0x0001, 0x0047, - 0x0681, 0x0004, 0x036d, 0x0000, 0x0370, 0x037b, 0x0001, 0x0047, - 0x06a2, 0x0002, 0x0373, 0x0377, 0x0002, 0x0047, 0x064f, 0x064f, - 0x0002, 0x0047, 0x0669, 0x0669, 0x0001, 0x0047, 0x0681, 0x0004, - 0x0383, 0x0000, 0x0386, 0x0391, 0x0001, 0x0047, 0x06a2, 0x0002, - 0x0389, 0x038d, 0x0002, 0x0047, 0x064f, 0x064f, 0x0002, 0x0047, - // Entry 30580 - 305BF - 0x0669, 0x0669, 0x0001, 0x0047, 0x0681, 0x0003, 0x0398, 0x039b, - 0x03a2, 0x0001, 0x0047, 0x033b, 0x0005, 0x0047, 0x06b7, 0x06c6, - 0x06d5, 0x06a6, 0x06e4, 0x0002, 0x03a5, 0x03a9, 0x0002, 0x0047, - 0x06f5, 0x06f5, 0x0002, 0x0047, 0x0711, 0x0711, 0x0003, 0x03b1, - 0x0000, 0x03b4, 0x0001, 0x0047, 0x033b, 0x0002, 0x03b7, 0x03bb, - 0x0002, 0x0047, 0x072b, 0x072b, 0x0002, 0x0047, 0x0711, 0x0711, - 0x0003, 0x03c3, 0x0000, 0x03c6, 0x0001, 0x0047, 0x033b, 0x0002, - 0x03c9, 0x03cd, 0x0002, 0x0047, 0x072b, 0x072b, 0x0002, 0x0047, - // Entry 305C0 - 305FF - 0x0711, 0x0711, 0x0001, 0x03d3, 0x0001, 0x0047, 0x073a, 0x0003, - 0x0000, 0x03da, 0x03df, 0x0003, 0x0047, 0x0745, 0x0768, 0x0781, - 0x0002, 0x03e2, 0x03e6, 0x0002, 0x0047, 0x079c, 0x079c, 0x0002, - 0x0047, 0x07b4, 0x07b4, 0x0003, 0x0000, 0x03ee, 0x03f3, 0x0003, - 0x0047, 0x07d9, 0x07f2, 0x0801, 0x0002, 0x03f6, 0x03fa, 0x0002, - 0x0047, 0x079c, 0x079c, 0x0002, 0x0047, 0x07b4, 0x07b4, 0x0003, - 0x0000, 0x0402, 0x0407, 0x0003, 0x0047, 0x07d9, 0x0812, 0x0801, - 0x0002, 0x040a, 0x040e, 0x0002, 0x0047, 0x079c, 0x079c, 0x0002, - // Entry 30600 - 3063F - 0x0047, 0x07b4, 0x07b4, 0x0003, 0x0000, 0x0416, 0x041b, 0x0003, - 0x0047, 0x0820, 0x0847, 0x0864, 0x0002, 0x041e, 0x0422, 0x0002, - 0x0047, 0x0883, 0x0883, 0x0002, 0x0047, 0x089f, 0x089f, 0x0003, - 0x0000, 0x042a, 0x042f, 0x0003, 0x0047, 0x08c8, 0x0847, 0x0864, - 0x0002, 0x0432, 0x0436, 0x0002, 0x0047, 0x0883, 0x0883, 0x0002, - 0x0047, 0x089f, 0x089f, 0x0003, 0x0000, 0x043e, 0x0443, 0x0003, - 0x0047, 0x08c8, 0x08e4, 0x08f6, 0x0002, 0x0446, 0x044a, 0x0002, - 0x0047, 0x0883, 0x0883, 0x0002, 0x0047, 0x089f, 0x089f, 0x0003, - // Entry 30640 - 3067F - 0x0000, 0x0452, 0x0457, 0x0003, 0x0047, 0x090a, 0x0933, 0x0952, - 0x0002, 0x045a, 0x045e, 0x0002, 0x0047, 0x0973, 0x0973, 0x0002, - 0x0047, 0x0991, 0x0991, 0x0003, 0x0000, 0x0466, 0x046b, 0x0003, - 0x0047, 0x09bc, 0x09da, 0x09ee, 0x0002, 0x046e, 0x0472, 0x0002, - 0x0047, 0x0973, 0x0973, 0x0002, 0x0047, 0x0991, 0x0991, 0x0003, - 0x0000, 0x047a, 0x047f, 0x0003, 0x0047, 0x09bc, 0x09da, 0x09ee, - 0x0002, 0x0482, 0x0486, 0x0002, 0x0047, 0x0973, 0x0973, 0x0002, - 0x0047, 0x0991, 0x0991, 0x0003, 0x0000, 0x048e, 0x0493, 0x0003, - // Entry 30680 - 306BF - 0x0047, 0x0a04, 0x0a2d, 0x0a4c, 0x0002, 0x0496, 0x049a, 0x0002, - 0x0047, 0x0a6d, 0x0a6d, 0x0002, 0x0047, 0x0a8b, 0x0a8b, 0x0003, - 0x0000, 0x04a2, 0x04a7, 0x0003, 0x0047, 0x0ab6, 0x0ad4, 0x0ae8, - 0x0002, 0x04aa, 0x04ae, 0x0002, 0x0047, 0x0a6d, 0x0a6d, 0x0002, - 0x0047, 0x0a8b, 0x0a8b, 0x0003, 0x0000, 0x04b6, 0x04bb, 0x0003, - 0x0047, 0x0afe, 0x0b14, 0x0b20, 0x0002, 0x04be, 0x04c2, 0x0002, - 0x0047, 0x0a6d, 0x0a6d, 0x0002, 0x0047, 0x0a8b, 0x0a8b, 0x0003, - 0x0000, 0x04ca, 0x04cf, 0x0003, 0x0047, 0x0b2e, 0x0b55, 0x0b72, - // Entry 306C0 - 306FF - 0x0002, 0x04d2, 0x04d6, 0x0002, 0x0047, 0x0b91, 0x0b91, 0x0002, - 0x0047, 0x0bad, 0x0bad, 0x0003, 0x0000, 0x04de, 0x04e3, 0x0003, - 0x0047, 0x0bd6, 0x0bf2, 0x0c04, 0x0002, 0x04e6, 0x04ea, 0x0002, - 0x0047, 0x0b91, 0x0b91, 0x0002, 0x0047, 0x0bad, 0x0bad, 0x0003, - 0x0000, 0x04f2, 0x04f7, 0x0003, 0x0047, 0x0c18, 0x0c2e, 0x0c3a, - 0x0002, 0x04fa, 0x04fe, 0x0002, 0x0047, 0x0b91, 0x0b91, 0x0002, - 0x0047, 0x0bad, 0x0bad, 0x0003, 0x0000, 0x0506, 0x050b, 0x0003, - 0x0047, 0x0c48, 0x0c71, 0x0c90, 0x0002, 0x050e, 0x0512, 0x0002, - // Entry 30700 - 3073F - 0x0047, 0x0cb1, 0x0cb1, 0x0002, 0x0047, 0x0ccf, 0x0ccf, 0x0003, - 0x0000, 0x051a, 0x051f, 0x0003, 0x0047, 0x0c48, 0x0c71, 0x0c90, - 0x0002, 0x0522, 0x0526, 0x0002, 0x0047, 0x0cb1, 0x0cb1, 0x0002, - 0x0047, 0x0ccf, 0x0ccf, 0x0003, 0x0000, 0x052e, 0x0533, 0x0003, - 0x0047, 0x0c48, 0x0c71, 0x0c90, 0x0002, 0x0536, 0x053a, 0x0002, - 0x0047, 0x0cb1, 0x0cb1, 0x0002, 0x0047, 0x0ccf, 0x0ccf, 0x0003, - 0x0000, 0x0542, 0x0547, 0x0003, 0x0047, 0x0cfa, 0x0d21, 0x0d3e, - 0x0002, 0x054a, 0x054e, 0x0002, 0x0047, 0x0d5d, 0x0d5d, 0x0002, - // Entry 30740 - 3077F - 0x0047, 0x0d79, 0x0d79, 0x0003, 0x0000, 0x0556, 0x055b, 0x0003, - 0x0047, 0x0da2, 0x0dbe, 0x0dd0, 0x0002, 0x055e, 0x0562, 0x0002, - 0x0047, 0x0d5d, 0x0d5d, 0x0002, 0x0047, 0x0d79, 0x0d79, 0x0003, - 0x0000, 0x056a, 0x056f, 0x0003, 0x0047, 0x0da2, 0x0dbe, 0x0dd0, - 0x0002, 0x0572, 0x0576, 0x0002, 0x0047, 0x0d5d, 0x0d5d, 0x0002, - 0x0047, 0x0d79, 0x0d79, 0x0001, 0x057c, 0x0001, 0x0047, 0x0de4, - 0x0003, 0x0583, 0x0586, 0x058a, 0x0001, 0x0047, 0x0df2, 0x0002, - 0x0047, 0xffff, 0x0df9, 0x0002, 0x058d, 0x0591, 0x0002, 0x0047, - // Entry 30780 - 307BF - 0x0e07, 0x0e07, 0x0002, 0x0047, 0x0e23, 0x0e23, 0x0003, 0x0599, - 0x0000, 0x059c, 0x0001, 0x0047, 0x0e3d, 0x0002, 0x059f, 0x05a3, - 0x0002, 0x0047, 0x0e41, 0x0e41, 0x0002, 0x0047, 0x0e54, 0x0e54, - 0x0003, 0x05ab, 0x0000, 0x05ae, 0x0001, 0x0047, 0x0e3d, 0x0002, - 0x05b1, 0x05b5, 0x0002, 0x0047, 0x0e41, 0x0e41, 0x0002, 0x0047, - 0x0e54, 0x0e54, 0x0003, 0x05bd, 0x05c0, 0x05c4, 0x0001, 0x000f, - 0x0182, 0x0002, 0x0047, 0xffff, 0x0e65, 0x0002, 0x05c7, 0x05cb, - 0x0002, 0x0047, 0x0e77, 0x0e77, 0x0002, 0x0047, 0x0e95, 0x0e95, - // Entry 307C0 - 307FF - 0x0003, 0x05d3, 0x0000, 0x05d6, 0x0001, 0x0011, 0x0ce0, 0x0002, - 0x05d9, 0x05dd, 0x0002, 0x0047, 0x0eb1, 0x0eb1, 0x0002, 0x0047, - 0x0ec8, 0x0ec8, 0x0003, 0x05e5, 0x0000, 0x05e8, 0x0001, 0x0011, - 0x0ce0, 0x0002, 0x05eb, 0x05ef, 0x0002, 0x0047, 0x0eb1, 0x0eb1, - 0x0002, 0x0047, 0x0ec8, 0x0ec8, 0x0003, 0x05f7, 0x05fa, 0x05fe, - 0x0001, 0x000f, 0x01e5, 0x0002, 0x0047, 0xffff, 0x0edd, 0x0002, - 0x0601, 0x0605, 0x0002, 0x0047, 0x0ee6, 0x0ee6, 0x0002, 0x0047, - 0x0f06, 0x0f06, 0x0003, 0x060d, 0x0000, 0x0610, 0x0001, 0x0011, - // Entry 30800 - 3083F - 0x0d52, 0x0002, 0x0613, 0x0617, 0x0002, 0x0047, 0x0f24, 0x0f24, - 0x0002, 0x0047, 0x0f3b, 0x0f3b, 0x0003, 0x061f, 0x0000, 0x0622, - 0x0001, 0x0011, 0x0d52, 0x0002, 0x0625, 0x0629, 0x0002, 0x0047, - 0x0f24, 0x0f24, 0x0002, 0x0047, 0x0f3b, 0x0f3b, 0x0001, 0x062f, - 0x0001, 0x0047, 0x0f50, 0x0004, 0x0637, 0x063c, 0x0641, 0x0650, - 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0047, 0x0f64, - 0x0f78, 0x0f81, 0x0002, 0x0000, 0x0644, 0x0003, 0x0000, 0x064b, - 0x0648, 0x0001, 0x0047, 0x0f8a, 0x0003, 0x0047, 0xffff, 0x0fbc, - // Entry 30840 - 3087F - 0x0fdf, 0x0002, 0x0000, 0x0653, 0x0003, 0x06ed, 0x0783, 0x0657, - 0x0094, 0x0047, 0x1008, 0x1026, 0x1045, 0x1066, 0x10bf, 0x113b, - 0x119b, 0x11ef, 0x1242, 0x12a8, 0x1307, 0xffff, 0x137b, 0x13d9, - 0x1435, 0x14aa, 0x152a, 0x158c, 0x15f9, 0x1696, 0x174f, 0x17f6, - 0x189a, 0x1904, 0x1966, 0x19c0, 0x19d4, 0x1a06, 0x1a54, 0x1aa0, - 0x1af8, 0x1b2c, 0x1b86, 0x1bde, 0x1c46, 0x1ca4, 0x1cc5, 0x1cfa, - 0x1d5f, 0x1dcc, 0x1e0a, 0x1e22, 0x1e4a, 0x1e8a, 0x1ee6, 0x1f1d, - 0x1f90, 0x1fe8, 0x2035, 0x20c4, 0x2154, 0x219e, 0x21c9, 0x2202, - // Entry 30880 - 308BF - 0x2220, 0x2252, 0x2298, 0x22b9, 0x2307, 0x2394, 0x2400, 0x2429, - 0x2466, 0x24e1, 0x254d, 0x258f, 0x25ab, 0x25d4, 0x2608, 0x262b, - 0x2650, 0x268b, 0x26e3, 0x274b, 0x27ab, 0xffff, 0x27e9, 0x280e, - 0x2853, 0x28a5, 0x28e1, 0x293f, 0x295d, 0x2997, 0x29ef, 0x2a2a, - 0x2a74, 0x2a8c, 0x2aa8, 0x2ac4, 0x2b05, 0x2b57, 0x2b9d, 0x2c4b, - 0x2cef, 0x2d69, 0x2dbb, 0x2dd5, 0x2def, 0x2e28, 0x2ead, 0x2f2e, - 0x2f92, 0x2faa, 0x2ffd, 0x309f, 0x3117, 0x3177, 0x31c5, 0x31df, - 0x3223, 0x3289, 0x32ed, 0x333b, 0x3389, 0x3405, 0x3421, 0x343d, - // Entry 308C0 - 308FF - 0x3455, 0x346d, 0x34a1, 0xffff, 0x3505, 0x3553, 0x356d, 0x3589, - 0x35b2, 0x35d3, 0x35ed, 0x3605, 0x3635, 0x367b, 0x3699, 0x36d1, - 0x371f, 0x3757, 0x37b5, 0x37e9, 0x3851, 0x38c5, 0x391b, 0x395d, - 0x39dd, 0x3a33, 0x3a4d, 0x3a68, 0x3aaa, 0x3b12, 0x0094, 0x0047, - 0xffff, 0xffff, 0xffff, 0xffff, 0x109a, 0x1123, 0x1185, 0x11e1, - 0x1225, 0x1296, 0x12e6, 0xffff, 0x1363, 0x13c5, 0x141b, 0x1483, - 0x1512, 0x1574, 0x15d6, 0x1659, 0x172a, 0x17cd, 0x187c, 0x18f0, - 0x1946, 0xffff, 0xffff, 0x19ec, 0xffff, 0x1a81, 0xffff, 0x1b16, - // Entry 30900 - 3093F - 0x1b72, 0x1bc8, 0x1c24, 0xffff, 0xffff, 0x1ce2, 0x1d44, 0x1dba, - 0xffff, 0xffff, 0xffff, 0x1e69, 0xffff, 0x1f00, 0x1f71, 0xffff, - 0x2012, 0x2095, 0x213c, 0xffff, 0xffff, 0xffff, 0xffff, 0x223c, - 0xffff, 0xffff, 0x22e2, 0x236b, 0xffff, 0xffff, 0x2445, 0x24c2, - 0x2539, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2679, - 0x26c9, 0x2731, 0x2799, 0xffff, 0xffff, 0xffff, 0x2837, 0xffff, - 0x28bf, 0xffff, 0xffff, 0x2978, 0xffff, 0x2a12, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2ae9, 0xffff, 0x2b6d, 0x2c17, 0x2ccd, 0x2d4d, - // Entry 30940 - 3097F - 0xffff, 0xffff, 0xffff, 0x2e03, 0x2e8c, 0x2f09, 0xffff, 0xffff, - 0x2fcb, 0x307b, 0x3101, 0x315d, 0xffff, 0xffff, 0x3209, 0x3271, - 0x32d3, 0xffff, 0x335a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3489, 0xffff, 0x34eb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x361f, 0xffff, 0xffff, 0x36b7, 0xffff, 0x3735, - 0xffff, 0x37d1, 0x3833, 0x38a7, 0xffff, 0x3939, 0x39bf, 0xffff, - 0xffff, 0xffff, 0x3a96, 0x3aec, 0x0094, 0x0047, 0xffff, 0xffff, - 0xffff, 0xffff, 0x10f5, 0x1164, 0x11c2, 0x120e, 0x1270, 0x12cb, - // Entry 30980 - 309BF - 0x1339, 0xffff, 0x13a4, 0x13fe, 0x1460, 0x14e2, 0x1553, 0x15b5, - 0x162d, 0x16e4, 0x1792, 0x183d, 0x18c9, 0x1929, 0x1997, 0xffff, - 0xffff, 0x1a31, 0xffff, 0x1ad0, 0xffff, 0x1b53, 0x1bab, 0x1c05, - 0x1c79, 0xffff, 0xffff, 0x1d23, 0x1d8b, 0x1def, 0xffff, 0xffff, - 0xffff, 0x1ebc, 0xffff, 0x1f4b, 0x1fc0, 0xffff, 0x2069, 0x2104, - 0x217d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2279, 0xffff, 0xffff, - 0x233d, 0x23ce, 0xffff, 0xffff, 0x2498, 0x2511, 0x2572, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x26ae, 0x270e, 0x2776, - // Entry 309C0 - 309FF - 0x27ce, 0xffff, 0xffff, 0xffff, 0x2880, 0xffff, 0x2914, 0xffff, - 0xffff, 0x29c7, 0xffff, 0x2a53, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2b32, 0xffff, 0x2bde, 0x2c90, 0x2d22, 0x2d96, 0xffff, 0xffff, - 0xffff, 0x2e5e, 0x2edf, 0x2f64, 0xffff, 0xffff, 0x3040, 0x30d4, - 0x313e, 0x31a2, 0xffff, 0xffff, 0x324e, 0x32b2, 0x3318, 0xffff, - 0x33cd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x34ca, 0xffff, - 0x3530, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x365c, 0xffff, 0xffff, 0x36fc, 0xffff, 0x378a, 0xffff, 0x3812, - // Entry 30A00 - 30A3F - 0x3880, 0x38f4, 0xffff, 0x3992, 0x3a0c, 0xffff, 0xffff, 0xffff, - 0x3acf, 0x3b49, 0x0003, 0x0004, 0x028c, 0x068e, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, - 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x018e, - 0x0001, 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0000, - 0x236f, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0048, - 0x0000, 0x0001, 0x0048, 0x0000, 0x0001, 0x0005, 0x0846, 0x0001, - // Entry 30A40 - 30A7F - 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x023f, - 0x0259, 0x026a, 0x027b, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, - 0x0057, 0x0066, 0x000d, 0x0048, 0xffff, 0x0018, 0x0025, 0x0038, - 0x0048, 0x0058, 0x005f, 0x0069, 0x0076, 0x007d, 0x0090, 0x00a0, - 0x00b6, 0x000d, 0x0048, 0xffff, 0x00c6, 0x00cd, 0x00d4, 0x00db, - 0x0058, 0x00df, 0x00e6, 0x00ed, 0x00f1, 0x00ed, 0x00f5, 0x00fc, - 0x000d, 0x003d, 0xffff, 0x0037, 0x0050, 0x343b, 0x007f, 0x344b, - 0x3452, 0x345c, 0x3469, 0x3479, 0x3492, 0x00f2, 0x010e, 0x0003, - // Entry 30A80 - 30ABF - 0x0079, 0x0088, 0x0097, 0x000d, 0x0048, 0xffff, 0x0018, 0x0025, - 0x0103, 0x0048, 0x0113, 0x011a, 0x0124, 0x0076, 0x007d, 0x0090, - 0x00a0, 0x00b6, 0x000d, 0x0048, 0xffff, 0x00c6, 0x00cd, 0x00d4, - 0x00db, 0x0113, 0x00df, 0x00e6, 0x00ed, 0x00f1, 0x00ed, 0x00f5, - 0x00fc, 0x000d, 0x003d, 0xffff, 0x0037, 0x0050, 0x34a8, 0x007f, - 0x34b8, 0x34bf, 0x34c9, 0x3469, 0x3479, 0x3492, 0x00f2, 0x010e, - 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, - 0x00c1, 0x0007, 0x002c, 0x0246, 0x0250, 0x22d9, 0x0267, 0x0271, - // Entry 30AC0 - 30AFF - 0x027e, 0x028e, 0x0007, 0x000c, 0x0246, 0x4e4f, 0x024e, 0x0255, - 0x4e56, 0x4e5d, 0x4e64, 0x0007, 0x000c, 0x0246, 0x4e4f, 0x024e, - 0x0255, 0x4e56, 0x4e5d, 0x4e64, 0x0007, 0x002c, 0x0298, 0x22e6, - 0x22f9, 0x230f, 0x2322, 0x2338, 0x2351, 0x0005, 0x00d9, 0x00e2, - 0x00f4, 0x0000, 0x00eb, 0x0007, 0x002c, 0x0246, 0x0250, 0x22d9, - 0x0267, 0x0271, 0x027e, 0x028e, 0x0007, 0x000c, 0x0246, 0x4e4f, - 0x024e, 0x0255, 0x4e56, 0x4e5d, 0x4e64, 0x0007, 0x000c, 0x0246, - 0x4e4f, 0x024e, 0x0255, 0x4e56, 0x4e5d, 0x4e64, 0x0007, 0x002c, - // Entry 30B00 - 30B3F - 0x0298, 0x22e6, 0x22f9, 0x230f, 0x2322, 0x2338, 0x2351, 0x0002, - 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0048, - 0xffff, 0x0131, 0x013b, 0x0145, 0x014f, 0x0005, 0x0048, 0xffff, - 0x0159, 0x015d, 0x0161, 0x0165, 0x0005, 0x0048, 0xffff, 0x0169, - 0x018c, 0x01b5, 0x01d8, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, - 0x0048, 0xffff, 0x0131, 0x013b, 0x0145, 0x014f, 0x0005, 0x0048, - 0xffff, 0x0159, 0x015d, 0x0161, 0x0165, 0x0005, 0x0048, 0xffff, - 0x0169, 0x018c, 0x01b5, 0x01d8, 0x0002, 0x0135, 0x01ba, 0x0003, - // Entry 30B40 - 30B7F - 0x0139, 0x0164, 0x018f, 0x000c, 0x0149, 0x014f, 0x0146, 0x0152, - 0x0158, 0x015b, 0x0161, 0x014c, 0x0155, 0x0000, 0x0000, 0x015e, - 0x0001, 0x0048, 0x01fe, 0x0001, 0x003d, 0x01bb, 0x0001, 0x0048, - 0x021a, 0x0001, 0x0048, 0x0233, 0x0001, 0x0048, 0x023c, 0x0001, - 0x0048, 0x0249, 0x0001, 0x0048, 0x0256, 0x0001, 0x0048, 0x0266, - 0x0001, 0x0048, 0x0282, 0x0001, 0x0048, 0x0298, 0x000c, 0x0174, - 0x017a, 0x0171, 0x017d, 0x0183, 0x0186, 0x018c, 0x0177, 0x0180, - 0x0000, 0x0000, 0x0189, 0x0001, 0x0048, 0x02a8, 0x0001, 0x0048, - // Entry 30B80 - 30BBF - 0x00f1, 0x0001, 0x0048, 0x02b4, 0x0001, 0x0048, 0x02bb, 0x0001, - 0x0048, 0x02c2, 0x0001, 0x0048, 0x00f1, 0x0001, 0x0048, 0x02b4, - 0x0001, 0x0048, 0x02bb, 0x0001, 0x0048, 0x02c6, 0x0001, 0x0048, - 0x02cd, 0x000c, 0x019f, 0x01a5, 0x019c, 0x01a8, 0x01ae, 0x01b1, - 0x01b7, 0x01a2, 0x01ab, 0x0000, 0x0000, 0x01b4, 0x0001, 0x0048, - 0x01fe, 0x0001, 0x003d, 0x01bb, 0x0001, 0x0048, 0x021a, 0x0001, - 0x0048, 0x0233, 0x0001, 0x0048, 0x023c, 0x0001, 0x0048, 0x0249, - 0x0001, 0x0048, 0x0256, 0x0001, 0x0048, 0x0266, 0x0001, 0x0048, - // Entry 30BC0 - 30BFF - 0x0282, 0x0001, 0x0048, 0x0298, 0x0003, 0x01be, 0x01e9, 0x0214, - 0x000c, 0x01ce, 0x01d4, 0x01cb, 0x01d7, 0x01dd, 0x01e0, 0x01e6, - 0x01d1, 0x01da, 0x0000, 0x0000, 0x01e3, 0x0001, 0x0048, 0x01fe, - 0x0001, 0x003d, 0x01bb, 0x0001, 0x0048, 0x021a, 0x0001, 0x0048, - 0x0233, 0x0001, 0x0048, 0x023c, 0x0001, 0x0048, 0x0249, 0x0001, - 0x0048, 0x0256, 0x0001, 0x0048, 0x0266, 0x0001, 0x0048, 0x0282, - 0x0001, 0x0048, 0x0298, 0x000c, 0x01f9, 0x01ff, 0x01f6, 0x0202, - 0x0208, 0x020b, 0x0211, 0x01fc, 0x0205, 0x0000, 0x0000, 0x020e, - // Entry 30C00 - 30C3F - 0x0001, 0x0048, 0x02a8, 0x0001, 0x003d, 0x01bb, 0x0001, 0x000c, - 0x4e3d, 0x0001, 0x0048, 0x0233, 0x0001, 0x0048, 0x02c2, 0x0001, - 0x0048, 0x00f1, 0x0001, 0x0048, 0x02b4, 0x0001, 0x0048, 0x02bb, - 0x0001, 0x0048, 0x02c6, 0x0001, 0x0048, 0x0298, 0x000c, 0x0224, - 0x022a, 0x0221, 0x022d, 0x0233, 0x0236, 0x023c, 0x0227, 0x0230, - 0x0000, 0x0000, 0x0239, 0x0001, 0x0048, 0x01fe, 0x0001, 0x003d, - 0x01bb, 0x0001, 0x0048, 0x021a, 0x0001, 0x0048, 0x0233, 0x0001, - 0x0048, 0x023c, 0x0001, 0x0048, 0x0249, 0x0001, 0x0048, 0x0256, - // Entry 30C40 - 30C7F - 0x0001, 0x0048, 0x0266, 0x0001, 0x0048, 0x0282, 0x0001, 0x0048, - 0x0298, 0x0003, 0x024e, 0x0000, 0x0243, 0x0002, 0x0246, 0x024a, - 0x0002, 0x0048, 0x02d4, 0x0319, 0x0002, 0x0048, 0x02f6, 0x032c, - 0x0002, 0x0251, 0x0255, 0x0002, 0x0048, 0x034b, 0x0379, 0x0002, - 0x0048, 0x035d, 0x0383, 0x0004, 0x0267, 0x0261, 0x025e, 0x0264, - 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, - 0x01f2, 0x0001, 0x0000, 0x237b, 0x0004, 0x0278, 0x0272, 0x026f, - 0x0275, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, - // Entry 30C80 - 30CBF - 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0289, 0x0283, - 0x0280, 0x0286, 0x0001, 0x0048, 0x0399, 0x0001, 0x0048, 0x0399, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x02cd, - 0x0000, 0x0000, 0x02d2, 0x02e9, 0x0300, 0x0317, 0x032e, 0x0345, - 0x035c, 0x0373, 0x038a, 0x03a1, 0x03bc, 0x03d7, 0x0000, 0x0000, - 0x0000, 0x03f2, 0x0409, 0x041b, 0x0000, 0x0000, 0x0000, 0x042d, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0432, 0x0446, 0x045a, - 0x046e, 0x0482, 0x0496, 0x04aa, 0x04be, 0x04d2, 0x04e6, 0x04fa, - // Entry 30CC0 - 30CFF - 0x050e, 0x0522, 0x0536, 0x054a, 0x055e, 0x0572, 0x0586, 0x059a, - 0x05ae, 0x05c2, 0x0000, 0x05d6, 0x0000, 0x05db, 0x05f1, 0x0603, - 0x0615, 0x062b, 0x063d, 0x064f, 0x0665, 0x0677, 0x0689, 0x0001, - 0x02cf, 0x0001, 0x002d, 0x00de, 0x0003, 0x02d6, 0x02d9, 0x02de, - 0x0001, 0x002d, 0x00e8, 0x0003, 0x0048, 0x03ae, 0x03cb, 0x03df, - 0x0002, 0x02e1, 0x02e5, 0x0002, 0x0048, 0x041f, 0x03fc, 0x0002, - 0x0048, 0x046b, 0x0445, 0x0003, 0x02ed, 0x02f0, 0x02f5, 0x0001, - 0x002d, 0x00e8, 0x0003, 0x0048, 0x03ae, 0x03cb, 0x03df, 0x0002, - // Entry 30D00 - 30D3F - 0x02f8, 0x02fc, 0x0002, 0x0048, 0x041f, 0x03fc, 0x0002, 0x0048, - 0x046b, 0x0445, 0x0003, 0x0304, 0x0307, 0x030c, 0x0001, 0x002d, - 0x00e8, 0x0003, 0x0048, 0x03ae, 0x03cb, 0x03df, 0x0002, 0x030f, - 0x0313, 0x0002, 0x0048, 0x0494, 0x0494, 0x0002, 0x0048, 0x04a6, - 0x04a6, 0x0003, 0x031b, 0x031e, 0x0323, 0x0001, 0x002d, 0x0179, - 0x0003, 0x0048, 0x04b8, 0x04db, 0x04f5, 0x0002, 0x0326, 0x032a, - 0x0002, 0x0048, 0x053e, 0x0518, 0x0002, 0x0048, 0x0590, 0x0567, - 0x0003, 0x0332, 0x0335, 0x033a, 0x0001, 0x002d, 0x0179, 0x0003, - // Entry 30D40 - 30D7F - 0x0048, 0x04b8, 0x04db, 0x04f5, 0x0002, 0x033d, 0x0341, 0x0002, - 0x0048, 0x053e, 0x0518, 0x0002, 0x0048, 0x0590, 0x0567, 0x0003, - 0x0349, 0x034c, 0x0351, 0x0001, 0x002d, 0x0179, 0x0003, 0x0048, - 0x04b8, 0x04db, 0x04f5, 0x0002, 0x0354, 0x0358, 0x0002, 0x0048, - 0x053e, 0x0518, 0x0002, 0x0048, 0x0590, 0x0567, 0x0003, 0x0360, - 0x0363, 0x0368, 0x0001, 0x0048, 0x05bc, 0x0003, 0x0048, 0x05cc, - 0x05ec, 0x0603, 0x0002, 0x036b, 0x036f, 0x0002, 0x0048, 0x064c, - 0x0623, 0x0002, 0x0048, 0x06a4, 0x0678, 0x0003, 0x0377, 0x037a, - // Entry 30D80 - 30DBF - 0x037f, 0x0001, 0x0048, 0x05bc, 0x0003, 0x0048, 0x05cc, 0x05ec, - 0x0603, 0x0002, 0x0382, 0x0386, 0x0002, 0x0048, 0x0623, 0x0623, - 0x0002, 0x0048, 0x0678, 0x0678, 0x0003, 0x038e, 0x0391, 0x0396, - 0x0001, 0x0048, 0x05bc, 0x0003, 0x0048, 0x05cc, 0x05ec, 0x0603, - 0x0002, 0x0399, 0x039d, 0x0002, 0x0048, 0x064c, 0x0623, 0x0002, - 0x0048, 0x06a4, 0x0678, 0x0004, 0x03a6, 0x03a9, 0x03ae, 0x03b9, - 0x0001, 0x0048, 0x06d3, 0x0003, 0x0048, 0x06e3, 0x0703, 0x071a, - 0x0002, 0x03b1, 0x03b5, 0x0002, 0x0048, 0x0763, 0x073a, 0x0002, - // Entry 30DC0 - 30DFF - 0x0048, 0x07bb, 0x078f, 0x0001, 0x0048, 0x07ea, 0x0004, 0x03c1, - 0x03c4, 0x03c9, 0x03d4, 0x0001, 0x0048, 0x06d3, 0x0003, 0x0048, - 0x06e3, 0x0703, 0x071a, 0x0002, 0x03cc, 0x03d0, 0x0002, 0x0048, - 0x0763, 0x073a, 0x0002, 0x0048, 0x07bb, 0x078f, 0x0001, 0x0048, - 0x07ea, 0x0004, 0x03dc, 0x03df, 0x03e4, 0x03ef, 0x0001, 0x0048, - 0x06d3, 0x0003, 0x0048, 0x06e3, 0x0703, 0x071a, 0x0002, 0x03e7, - 0x03eb, 0x0002, 0x0048, 0x0763, 0x073a, 0x0002, 0x0048, 0x07bb, - 0x078f, 0x0001, 0x0048, 0x07ea, 0x0003, 0x03f6, 0x03f9, 0x03fe, - // Entry 30E00 - 30E3F - 0x0001, 0x0048, 0x0805, 0x0003, 0x0048, 0x0812, 0x081c, 0x0823, - 0x0002, 0x0401, 0x0405, 0x0002, 0x0048, 0x0856, 0x0833, 0x0002, - 0x0048, 0x08a2, 0x087c, 0x0003, 0x040d, 0x0000, 0x0410, 0x0001, - 0x0048, 0x0805, 0x0002, 0x0413, 0x0417, 0x0002, 0x0048, 0x0856, - 0x0833, 0x0002, 0x0048, 0x08a2, 0x087c, 0x0003, 0x041f, 0x0000, - 0x0422, 0x0001, 0x0048, 0x0805, 0x0002, 0x0425, 0x0429, 0x0002, - 0x0048, 0x0856, 0x0833, 0x0002, 0x0048, 0x08a2, 0x087c, 0x0001, - 0x042f, 0x0001, 0x0048, 0x08cb, 0x0003, 0x0000, 0x0436, 0x043b, - // Entry 30E40 - 30E7F - 0x0003, 0x0048, 0x08f4, 0x0917, 0x0931, 0x0002, 0x043e, 0x0442, - 0x0002, 0x0048, 0x0981, 0x0954, 0x0002, 0x0048, 0x09d5, 0x09ab, - 0x0003, 0x0000, 0x044a, 0x044f, 0x0003, 0x0048, 0x09fc, 0x0a17, - 0x0a29, 0x0002, 0x0452, 0x0456, 0x0002, 0x0048, 0x0a80, 0x0a44, - 0x0002, 0x0048, 0x0ae8, 0x0abf, 0x0003, 0x0000, 0x045e, 0x0463, - 0x0003, 0x0048, 0x0b17, 0x0b2b, 0x0b36, 0x0002, 0x0466, 0x046a, - 0x0002, 0x0048, 0x0954, 0x0954, 0x0002, 0x0048, 0x0ae8, 0x0abf, - 0x0003, 0x0000, 0x0472, 0x0477, 0x0003, 0x0048, 0x0b4a, 0x0b6d, - // Entry 30E80 - 30EBF - 0x0b87, 0x0002, 0x047a, 0x047e, 0x0002, 0x0048, 0x0baa, 0x0baa, - 0x0002, 0x0048, 0x0c00, 0x0bd7, 0x0003, 0x0000, 0x0486, 0x048b, - 0x0003, 0x0048, 0x0c2f, 0x0c4a, 0x0c5c, 0x0002, 0x048e, 0x0492, - 0x0002, 0x0048, 0x0c77, 0x0baa, 0x0002, 0x0048, 0x0c00, 0x0ca1, - 0x0003, 0x0000, 0x049a, 0x049f, 0x0003, 0x0048, 0x0ccd, 0x0ce4, - 0x0cf2, 0x0002, 0x04a2, 0x04a6, 0x0002, 0x0048, 0x0d45, 0x0d09, - 0x0002, 0x0048, 0x0c00, 0x0ca1, 0x0003, 0x0000, 0x04ae, 0x04b3, - 0x0003, 0x0048, 0x0d84, 0x0daa, 0x0dc7, 0x0002, 0x04b6, 0x04ba, - // Entry 30EC0 - 30EFF - 0x0002, 0x0048, 0x0e1d, 0x0ded, 0x0002, 0x0048, 0x0e76, 0x0e4a, - 0x0003, 0x0000, 0x04c2, 0x04c7, 0x0003, 0x0048, 0x0ea8, 0x0ec6, - 0x0edb, 0x0002, 0x04ca, 0x04ce, 0x0002, 0x0048, 0x0f35, 0x0ef9, - 0x0002, 0x0048, 0x0e76, 0x0f77, 0x0003, 0x0000, 0x04d6, 0x04db, - 0x0003, 0x0048, 0x0fa6, 0x0fbd, 0x0fcb, 0x0002, 0x04de, 0x04e2, - 0x0002, 0x0048, 0x0f35, 0x0fe2, 0x0002, 0x0048, 0x0e76, 0x0e4a, - 0x0003, 0x0000, 0x04ea, 0x04ef, 0x0003, 0x0048, 0x1021, 0x1044, - 0x105e, 0x0002, 0x04f2, 0x04f6, 0x0002, 0x0048, 0x10ae, 0x1081, - // Entry 30F00 - 30F3F - 0x0002, 0x0048, 0x1101, 0x10d8, 0x0003, 0x0000, 0x04fe, 0x0503, - 0x0003, 0x0048, 0x1130, 0x114b, 0x115d, 0x0002, 0x0506, 0x050a, - 0x0002, 0x0048, 0x10ae, 0x10ae, 0x0002, 0x0048, 0x1101, 0x10d8, - 0x0003, 0x0000, 0x0512, 0x0517, 0x0003, 0x0048, 0x1178, 0x118f, - 0x119d, 0x0002, 0x051a, 0x051e, 0x0002, 0x0048, 0x10ae, 0x1081, - 0x0002, 0x0048, 0x1101, 0x10d8, 0x0003, 0x0000, 0x0526, 0x052b, - 0x0003, 0x0048, 0x11b4, 0x11da, 0x11f7, 0x0002, 0x052e, 0x0532, - 0x0002, 0x0048, 0x124d, 0x121d, 0x0002, 0x0048, 0x12a6, 0x127a, - // Entry 30F40 - 30F7F - 0x0003, 0x0000, 0x053a, 0x053f, 0x0003, 0x0048, 0x12d8, 0x12f6, - 0x130b, 0x0002, 0x0542, 0x0546, 0x0002, 0x0048, 0x124d, 0x121d, - 0x0002, 0x0048, 0x12a6, 0x127a, 0x0003, 0x0000, 0x054e, 0x0553, - 0x0003, 0x0048, 0x1329, 0x1340, 0x134e, 0x0002, 0x0556, 0x055a, - 0x0002, 0x0048, 0x124d, 0x121d, 0x0002, 0x0048, 0x12a6, 0x127a, - 0x0003, 0x0000, 0x0562, 0x0567, 0x0003, 0x0048, 0x1365, 0x138e, - 0x13ae, 0x0002, 0x056a, 0x056e, 0x0002, 0x0048, 0x140a, 0x13d7, - 0x0002, 0x0048, 0x1469, 0x143a, 0x0003, 0x0000, 0x0576, 0x057b, - // Entry 30F80 - 30FBF - 0x0003, 0x0048, 0x149e, 0x14bf, 0x14d7, 0x0002, 0x057e, 0x0582, - 0x0002, 0x0048, 0x140a, 0x13d7, 0x0002, 0x0048, 0x1469, 0x143a, - 0x0003, 0x0000, 0x058a, 0x058f, 0x0003, 0x0048, 0x14f8, 0x150f, - 0x151d, 0x0002, 0x0592, 0x0596, 0x0002, 0x0048, 0x140a, 0x13d7, - 0x0002, 0x0048, 0x1469, 0x143a, 0x0003, 0x0000, 0x059e, 0x05a3, - 0x0003, 0x0048, 0x1534, 0x1557, 0x1571, 0x0002, 0x05a6, 0x05aa, - 0x0002, 0x0048, 0x15c1, 0x1594, 0x0002, 0x0048, 0x1614, 0x15eb, - 0x0003, 0x0000, 0x05b2, 0x05b7, 0x0003, 0x0048, 0x1643, 0x165e, - // Entry 30FC0 - 30FFF - 0x1670, 0x0002, 0x05ba, 0x05be, 0x0002, 0x0048, 0x16b5, 0x168b, - 0x0002, 0x0048, 0x1706, 0x16dc, 0x0003, 0x0000, 0x05c6, 0x05cb, - 0x0003, 0x0048, 0x172d, 0x1741, 0x174c, 0x0002, 0x05ce, 0x05d2, - 0x0002, 0x0048, 0x16b5, 0x168b, 0x0002, 0x0048, 0x1706, 0x16dc, - 0x0001, 0x05d8, 0x0001, 0x0048, 0x1760, 0x0003, 0x05df, 0x05e2, - 0x05e6, 0x0001, 0x0048, 0x1777, 0x0002, 0x0048, 0xffff, 0x1781, - 0x0002, 0x05e9, 0x05ed, 0x0002, 0x0048, 0x17b1, 0x1791, 0x0002, - 0x0048, 0x17f7, 0x17d4, 0x0003, 0x05f5, 0x0000, 0x05f8, 0x0001, - // Entry 31000 - 3103F - 0x0048, 0x1777, 0x0002, 0x05fb, 0x05ff, 0x0002, 0x0048, 0x17b1, - 0x1791, 0x0002, 0x0048, 0x17f7, 0x17d4, 0x0003, 0x0607, 0x0000, - 0x060a, 0x0001, 0x0048, 0x1777, 0x0002, 0x060d, 0x0611, 0x0002, - 0x0048, 0x17b1, 0x1791, 0x0002, 0x0048, 0x17f7, 0x17d4, 0x0003, - 0x0619, 0x061c, 0x0620, 0x0001, 0x0048, 0x181d, 0x0002, 0x0048, - 0xffff, 0x182d, 0x0002, 0x0623, 0x0627, 0x0002, 0x0048, 0x1870, - 0x184a, 0x0002, 0x0048, 0x18c2, 0x1899, 0x0003, 0x062f, 0x0000, - 0x0632, 0x0001, 0x002d, 0x0c85, 0x0002, 0x0635, 0x0639, 0x0002, - // Entry 31040 - 3107F - 0x0048, 0x18ee, 0x18ee, 0x0002, 0x0048, 0x1910, 0x1910, 0x0003, - 0x0641, 0x0000, 0x0644, 0x0001, 0x002d, 0x0c85, 0x0002, 0x0647, - 0x064b, 0x0002, 0x0048, 0x18ee, 0x18ee, 0x0002, 0x0048, 0x1910, - 0x1910, 0x0003, 0x0653, 0x0656, 0x065a, 0x0001, 0x0048, 0x1935, - 0x0002, 0x0048, 0xffff, 0x1945, 0x0002, 0x065d, 0x0661, 0x0002, - 0x0048, 0x197b, 0x1955, 0x0002, 0x0048, 0x19cd, 0x19a4, 0x0003, - 0x0669, 0x0000, 0x066c, 0x0001, 0x002d, 0x0d12, 0x0002, 0x066f, - 0x0673, 0x0002, 0x0048, 0x19f9, 0x19f9, 0x0002, 0x0048, 0x1a15, - // Entry 31080 - 310BF - 0x1a15, 0x0003, 0x067b, 0x0000, 0x067e, 0x0001, 0x002d, 0x0d12, - 0x0002, 0x0681, 0x0685, 0x0002, 0x0048, 0x19f9, 0x19f9, 0x0002, - 0x0048, 0x1a15, 0x1a15, 0x0001, 0x068b, 0x0001, 0x0048, 0x1a34, - 0x0004, 0x0693, 0x0698, 0x069d, 0x06a8, 0x0003, 0x0000, 0x1dc7, - 0x3877, 0x3880, 0x0003, 0x0048, 0x1a54, 0x1a62, 0x1a92, 0x0002, - 0x0000, 0x06a0, 0x0002, 0x0000, 0x06a3, 0x0003, 0x0048, 0xffff, - 0x1ab3, 0x1ae9, 0x0002, 0x088f, 0x06ab, 0x0003, 0x06af, 0x07ef, - 0x074f, 0x009e, 0x0048, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c4c, - // Entry 310C0 - 310FF - 0x1d0e, 0x1e3a, 0x1ec9, 0x1f67, 0x200e, 0x20a3, 0x2138, 0x21c9, - 0x2395, 0x242a, 0x24ce, 0x25b4, 0x264f, 0x26ed, 0x27cd, 0x28e6, - 0x29cf, 0x2ac1, 0x2b53, 0x2be5, 0xffff, 0xffff, 0x2cc3, 0xffff, - 0x2da0, 0xffff, 0x2e77, 0x2ef1, 0x2f5f, 0x2fd9, 0xffff, 0xffff, - 0x30c5, 0x3157, 0x31f0, 0xffff, 0xffff, 0xffff, 0x3308, 0xffff, - 0x33c0, 0x3482, 0xffff, 0x3590, 0x365b, 0x3702, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3842, 0xffff, 0xffff, 0x3937, 0x39f9, 0xffff, - 0xffff, 0x3b31, 0x3bdb, 0x3c70, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 31100 - 3113F - 0xffff, 0xffff, 0x3e38, 0x3eb2, 0x3f4d, 0x3fd8, 0x4052, 0xffff, - 0xffff, 0x4212, 0xffff, 0x42be, 0xffff, 0xffff, 0x43f3, 0xffff, - 0x4546, 0xffff, 0xffff, 0xffff, 0xffff, 0x4659, 0xffff, 0x46f0, - 0x47c7, 0x48a7, 0x4945, 0xffff, 0xffff, 0xffff, 0x4a19, 0x4ae4, - 0x4b8b, 0xffff, 0xffff, 0x4c91, 0x4dba, 0x4e79, 0x4ef9, 0xffff, - 0xffff, 0x4fdf, 0x5071, 0x50df, 0xffff, 0x51a1, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x5418, 0x548f, 0x5514, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x56aa, 0xffff, 0xffff, - // Entry 31140 - 3117F - 0x5779, 0xffff, 0x5804, 0xffff, 0x58e9, 0x5972, 0x5a1f, 0xffff, - 0x5ad4, 0x5b93, 0xffff, 0xffff, 0xffff, 0x5ccd, 0x5d5f, 0xffff, - 0xffff, 0x1b16, 0x1da3, 0x224c, 0x22ec, 0xffff, 0xffff, 0x449d, - 0x531d, 0x009e, 0x0048, 0x1b7a, 0x1ba6, 0x1bd6, 0x1c06, 0x1c7f, - 0x1d2e, 0x1e5a, 0x1eec, 0x1f8d, 0x202e, 0x20c3, 0x2158, 0x21e3, - 0x23b5, 0x2453, 0x250d, 0x25da, 0x2672, 0x2726, 0x2819, 0x2922, - 0x2a0e, 0x2ae4, 0x2b76, 0x2c0b, 0x2c80, 0x2c9a, 0x2cec, 0x2d67, - 0x2dca, 0x2e47, 0x2e8e, 0x2f08, 0x2f76, 0x2fff, 0x3074, 0x309e, - // Entry 31180 - 311BF - 0x30e8, 0x3178, 0x320d, 0x327c, 0x329c, 0x32de, 0x332c, 0x339d, - 0x33f3, 0x34b5, 0x3544, 0x35c6, 0x3685, 0x3719, 0x3770, 0x379d, - 0x37f9, 0x381f, 0x3865, 0x38d4, 0x3904, 0x396a, 0x3a2f, 0x3aed, - 0x3b17, 0x3b58, 0x3bff, 0x3c90, 0x3cf9, 0x3d29, 0x3d55, 0x3d7b, - 0x3db4, 0x3df9, 0x3e4f, 0x3ed8, 0x3f63, 0x3fef, 0x40b0, 0x41a3, - 0x41d9, 0x422f, 0x429e, 0x42f6, 0x438f, 0x43cf, 0x441a, 0x4519, - 0x4563, 0x45c6, 0x45e6, 0x4603, 0x462f, 0x4676, 0x46d9, 0x4726, - 0x4800, 0x48ce, 0x4962, 0x49c5, 0x49e8, 0x49ff, 0x4a4f, 0x4b0a, - // Entry 311C0 - 311FF - 0x4bbb, 0x4c50, 0x4c6a, 0x4cd4, 0x4dec, 0x4e96, 0x4f1f, 0x4f94, - 0x4fab, 0x5002, 0x5088, 0x5102, 0x5171, 0x51eb, 0x52b4, 0x52d7, - 0x52f4, 0x53d8, 0x53fb, 0x5432, 0x54a9, 0x552e, 0x5597, 0x55b7, - 0x55ed, 0x561a, 0x5650, 0x5670, 0x568d, 0x56c4, 0x572d, 0x5759, - 0x5793, 0x57f0, 0x5839, 0x58cc, 0x5909, 0x599e, 0x5a3f, 0x5aa8, - 0x5b06, 0x5bc5, 0x5c52, 0x5c78, 0x5c96, 0x5cf0, 0x5d8b, 0x3ac4, - 0x4d83, 0x1b2a, 0x1dc3, 0x226f, 0x2312, 0xffff, 0x43b8, 0x44b4, - 0x5349, 0x009e, 0x0048, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cc5, - // Entry 31200 - 3123F - 0x1d61, 0x1e90, 0x1f22, 0x1fc6, 0x2061, 0x20f6, 0x2187, 0x2210, - 0x23e8, 0x248f, 0x255f, 0x2613, 0x26a8, 0x2772, 0x2878, 0x2971, - 0x2a60, 0x2b1a, 0x2bac, 0x2c44, 0xffff, 0xffff, 0x2d28, 0xffff, - 0x2e07, 0xffff, 0x2eb8, 0x2f32, 0x2fa0, 0x3038, 0xffff, 0xffff, - 0x311e, 0x31ac, 0x323d, 0xffff, 0xffff, 0xffff, 0x3363, 0xffff, - 0x3439, 0x34fb, 0xffff, 0x360f, 0x36c2, 0x3743, 0xffff, 0xffff, - 0xffff, 0xffff, 0x389b, 0xffff, 0xffff, 0x39b0, 0x3a78, 0xffff, - 0xffff, 0x3b92, 0x3c36, 0x3cc3, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 31240 - 3127F - 0xffff, 0xffff, 0x3e79, 0x3f11, 0x3f96, 0x4019, 0x4120, 0xffff, - 0xffff, 0x425f, 0xffff, 0x4341, 0xffff, 0xffff, 0x4454, 0xffff, - 0x4593, 0xffff, 0xffff, 0xffff, 0xffff, 0x46a6, 0xffff, 0x476f, - 0x484c, 0x4908, 0x4992, 0xffff, 0xffff, 0xffff, 0x4a98, 0x4b43, - 0x4bfe, 0xffff, 0xffff, 0x4d2a, 0x4e31, 0x4ec6, 0x4f58, 0xffff, - 0xffff, 0x5038, 0x50b2, 0x5138, 0xffff, 0x5248, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x545f, 0x54d5, 0x555b, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x56f1, 0xffff, 0xffff, - // Entry 31280 - 312BF - 0x57c0, 0xffff, 0x5881, 0xffff, 0x593c, 0x59dd, 0x5a72, 0xffff, - 0x5b4b, 0x5c0a, 0xffff, 0xffff, 0xffff, 0x5d26, 0x5dca, 0xffff, - 0xffff, 0x1b50, 0x1df5, 0x22a4, 0x234a, 0xffff, 0xffff, 0x44dd, - 0x5387, 0x0003, 0x0000, 0x0000, 0x0893, 0x0042, 0x000b, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 312C0 - 312FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0000, 0x0003, 0x0004, 0x0301, 0x06b9, 0x0012, 0x0017, 0x0024, - 0x0000, 0x0000, 0x0000, 0x0000, 0x00a1, 0x00cc, 0x0000, 0x0000, - 0x02ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x02db, 0x0000, 0x02f3, - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, - // Entry 31300 - 3133F - 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0006, 0x002b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0090, 0x0002, 0x002e, 0x005f, 0x0003, - 0x0032, 0x0041, 0x0050, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, - 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x23da, 0x22dc, 0x234a, - 0x22e0, 0x23de, 0x000d, 0x0049, 0xffff, 0x0000, 0x0003, 0x0006, - 0x0009, 0x000c, 0x000f, 0x0012, 0x0015, 0x0018, 0x001b, 0x001e, - 0x0021, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x22d0, 0x2260, - 0x2386, 0x224e, 0x2395, 0x23e2, 0x23e7, 0x23f1, 0x23f9, 0x2402, - // Entry 31340 - 3137F - 0x0003, 0x0063, 0x0072, 0x0081, 0x000d, 0x0005, 0xffff, 0x0636, - 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x23da, 0x22dc, - 0x234a, 0x22e0, 0x23de, 0x000d, 0x0049, 0xffff, 0x0000, 0x0024, - 0x0006, 0x0009, 0x000c, 0x000f, 0x0012, 0x0015, 0x0018, 0x001b, - 0x001e, 0x0021, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x22d0, - 0x2260, 0x2386, 0x224e, 0x2395, 0x23e2, 0x23e7, 0x23f1, 0x23f9, - 0x2402, 0x0004, 0x009e, 0x0098, 0x0095, 0x009b, 0x0001, 0x0032, - 0x00df, 0x0001, 0x0032, 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, - // Entry 31380 - 313BF - 0x0032, 0x0100, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00aa, 0x0000, 0x00bb, 0x0004, 0x00b8, 0x00b2, 0x00af, 0x00b5, - 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0010, - 0x02f4, 0x0001, 0x001c, 0x04b3, 0x0004, 0x00c9, 0x00c3, 0x00c0, - 0x00c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x00d5, 0x013a, - 0x0191, 0x01c6, 0x028b, 0x029b, 0x02ac, 0x02bd, 0x0002, 0x00d8, - 0x0109, 0x0003, 0x00dc, 0x00eb, 0x00fa, 0x000d, 0x0005, 0xffff, - // Entry 313C0 - 313FF - 0x0636, 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x23da, - 0x22dc, 0x234a, 0x22e0, 0x23de, 0x000d, 0x0000, 0xffff, 0x2483, - 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2990, 0x298e, - 0x2990, 0x297e, 0x297c, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, - 0x22d0, 0x2260, 0x2386, 0x224e, 0x2395, 0x23e2, 0x23e7, 0x23f1, - 0x23f9, 0x2402, 0x0003, 0x010d, 0x011c, 0x012b, 0x000d, 0x0005, - 0xffff, 0x0636, 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, - 0x23da, 0x22dc, 0x234a, 0x22e0, 0x23de, 0x000d, 0x0000, 0xffff, - // Entry 31400 - 3143F - 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2990, - 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0005, 0xffff, 0x0666, - 0x066e, 0x22d0, 0x2260, 0x2386, 0x224e, 0x2395, 0x23e2, 0x23e7, - 0x23f1, 0x23f9, 0x2402, 0x0002, 0x013d, 0x0167, 0x0005, 0x0143, - 0x014c, 0x015e, 0x0000, 0x0155, 0x0007, 0x0049, 0x0027, 0x002b, - 0x002f, 0x0033, 0x0037, 0x003b, 0x003f, 0x0007, 0x0000, 0x2980, - 0x2055, 0x298e, 0x223e, 0x25bc, 0x2483, 0x298e, 0x0007, 0x0049, - 0x0043, 0x0046, 0x0049, 0x004c, 0x004f, 0x000f, 0x0052, 0x0007, - // Entry 31440 - 3147F - 0x0049, 0x0055, 0x005a, 0x0060, 0x0067, 0x006c, 0x0073, 0x007a, - 0x0005, 0x016d, 0x0176, 0x0188, 0x0000, 0x017f, 0x0007, 0x0049, - 0x0027, 0x002b, 0x002f, 0x0033, 0x0037, 0x003b, 0x003f, 0x0007, - 0x0000, 0x2980, 0x2055, 0x298e, 0x223e, 0x25bc, 0x2483, 0x298e, - 0x0007, 0x0049, 0x0043, 0x0046, 0x0049, 0x004c, 0x004f, 0x000f, - 0x0052, 0x0007, 0x0049, 0x0055, 0x005a, 0x0060, 0x0067, 0x006c, - 0x0073, 0x007a, 0x0002, 0x0194, 0x01ad, 0x0003, 0x0198, 0x019f, - 0x01a6, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, 0x01b0, - // Entry 31480 - 314BF - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x0049, 0xffff, 0x0080, 0x008d, 0x0097, 0x00a1, 0x0003, 0x01b1, - 0x01b8, 0x01bf, 0x0005, 0x0039, 0xffff, 0x01a7, 0x01aa, 0x01ad, - 0x01b0, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0049, 0xffff, 0x0080, 0x008d, 0x0097, 0x00a1, 0x0002, - 0x01c9, 0x022a, 0x0003, 0x01cd, 0x01ec, 0x020b, 0x0009, 0x01d7, - 0x01da, 0x0000, 0x01dd, 0x01e3, 0x01e6, 0x01e9, 0x0000, 0x01e0, - 0x0001, 0x0049, 0x00ab, 0x0001, 0x0049, 0x00ae, 0x0001, 0x0032, - // Entry 314C0 - 314FF - 0x01a6, 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, - 0x0049, 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0009, 0x01f6, 0x01f9, - 0x0000, 0x01fc, 0x0202, 0x0205, 0x0208, 0x0000, 0x01ff, 0x0001, - 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0032, 0x01a6, - 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, 0x0049, - 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0009, 0x0215, 0x0218, 0x0000, - 0x021b, 0x0221, 0x0224, 0x0227, 0x0000, 0x021e, 0x0001, 0x0049, - 0x00ab, 0x0001, 0x0049, 0x00ae, 0x0001, 0x0032, 0x01a6, 0x0001, - // Entry 31500 - 3153F - 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, 0x0049, 0x00b2, - 0x0001, 0x0032, 0x01b6, 0x0003, 0x022e, 0x024d, 0x026c, 0x0009, - 0x0238, 0x023b, 0x0000, 0x023e, 0x0244, 0x0247, 0x024a, 0x0000, - 0x0241, 0x0001, 0x0049, 0x00ab, 0x0001, 0x0049, 0x00ae, 0x0001, - 0x0032, 0x018d, 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, - 0x0001, 0x0049, 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0009, 0x0257, - 0x025a, 0x0000, 0x025d, 0x0263, 0x0266, 0x0269, 0x0000, 0x0260, - 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0032, - // Entry 31540 - 3157F - 0x01a6, 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, - 0x0049, 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0009, 0x0276, 0x0279, - 0x0000, 0x027c, 0x0282, 0x0285, 0x0288, 0x0000, 0x027f, 0x0001, - 0x0049, 0x00ab, 0x0001, 0x0049, 0x00ae, 0x0001, 0x0032, 0x018d, - 0x0001, 0x0032, 0x01a6, 0x0001, 0x0032, 0x019a, 0x0001, 0x0049, - 0x00b2, 0x0001, 0x0032, 0x01b6, 0x0003, 0x0295, 0x0000, 0x028f, - 0x0001, 0x0291, 0x0002, 0x0049, 0x00b9, 0x00be, 0x0001, 0x0297, - 0x0002, 0x0049, 0x00b9, 0x00be, 0x0004, 0x02a9, 0x02a3, 0x02a0, - // Entry 31580 - 315BF - 0x02a6, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x001c, 0x04c7, 0x0004, 0x02ba, 0x02b4, - 0x02b1, 0x02b7, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x02cb, - 0x02c5, 0x02c2, 0x02c8, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x02d4, 0x0001, 0x02d6, 0x0001, - 0x02d8, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, - // Entry 315C0 - 315FF - 0x0000, 0x0000, 0x02e2, 0x0004, 0x02f0, 0x02ea, 0x02e7, 0x02ed, - 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0010, - 0x02f4, 0x0001, 0x001c, 0x04b3, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x02f9, 0x0001, 0x02fb, 0x0001, 0x02fd, 0x0002, 0x0000, - 0x1a20, 0x3886, 0x0040, 0x0342, 0x0000, 0x0000, 0x0347, 0x035c, - 0x0371, 0x0386, 0x039b, 0x03b0, 0x03c5, 0x03da, 0x03ef, 0x0404, - 0x041d, 0x0436, 0x0000, 0x0000, 0x0000, 0x044f, 0x0466, 0x047d, - 0x0000, 0x0000, 0x0000, 0x0494, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 31600 - 3163F - 0x0000, 0x0499, 0x04ab, 0x04bd, 0x04cf, 0x04e1, 0x04f3, 0x0505, - 0x0517, 0x0529, 0x053b, 0x054d, 0x055f, 0x0571, 0x0583, 0x0595, - 0x05a7, 0x05b9, 0x05cb, 0x05dd, 0x05ef, 0x0601, 0x0000, 0x0613, - 0x0000, 0x0618, 0x062c, 0x063c, 0x064c, 0x0660, 0x0670, 0x0680, - 0x0694, 0x06a4, 0x06b4, 0x0001, 0x0344, 0x0001, 0x0000, 0x1a35, - 0x0003, 0x034b, 0x034e, 0x0353, 0x0001, 0x0032, 0x020e, 0x0003, - 0x0032, 0x0214, 0x021f, 0x0229, 0x0002, 0x0356, 0x0359, 0x0001, - 0x0049, 0x00c1, 0x0001, 0x0049, 0x00d0, 0x0003, 0x0360, 0x0363, - // Entry 31640 - 3167F - 0x0368, 0x0001, 0x0049, 0x00df, 0x0003, 0x0049, 0x00e3, 0x00ed, - 0x00f5, 0x0002, 0x036b, 0x036e, 0x0001, 0x0049, 0x00ff, 0x0001, - 0x0032, 0x026a, 0x0003, 0x0375, 0x0378, 0x037d, 0x0001, 0x0049, - 0x00df, 0x0003, 0x0049, 0x00e3, 0x00ed, 0x00f5, 0x0002, 0x0380, - 0x0383, 0x0001, 0x0049, 0x00ff, 0x0001, 0x0032, 0x026a, 0x0003, - 0x038a, 0x038d, 0x0392, 0x0001, 0x0049, 0x010d, 0x0003, 0x0049, - 0x0118, 0x0128, 0x0137, 0x0002, 0x0395, 0x0398, 0x0001, 0x0049, - 0x014d, 0x0001, 0x0049, 0x0162, 0x0003, 0x039f, 0x03a2, 0x03a7, - // Entry 31680 - 316BF - 0x0001, 0x0049, 0x0176, 0x0003, 0x0049, 0x017b, 0x0186, 0x018f, - 0x0002, 0x03aa, 0x03ad, 0x0001, 0x0049, 0x019f, 0x0001, 0x0049, - 0x0162, 0x0003, 0x03b4, 0x03b7, 0x03bc, 0x0001, 0x0049, 0x0176, - 0x0003, 0x0049, 0x017b, 0x0186, 0x018f, 0x0002, 0x03bf, 0x03c2, - 0x0001, 0x0049, 0x019f, 0x0001, 0x0049, 0x0162, 0x0003, 0x03c9, - 0x03cc, 0x03d1, 0x0001, 0x0032, 0x031e, 0x0003, 0x0032, 0x0324, - 0x032f, 0x271d, 0x0002, 0x03d4, 0x03d7, 0x0001, 0x0049, 0x01b2, - 0x0001, 0x0049, 0x01c2, 0x0003, 0x03de, 0x03e1, 0x03e6, 0x0001, - // Entry 316C0 - 316FF - 0x0049, 0x01d1, 0x0003, 0x0049, 0x01d5, 0x01de, 0x01e6, 0x0002, - 0x03e9, 0x03ec, 0x0001, 0x0032, 0x0373, 0x0001, 0x0032, 0x037f, - 0x0003, 0x03f3, 0x03f6, 0x03fb, 0x0001, 0x0049, 0x01d1, 0x0003, - 0x0049, 0x01d5, 0x01de, 0x01e6, 0x0002, 0x03fe, 0x0401, 0x0001, - 0x0032, 0x0373, 0x0001, 0x0049, 0x01c2, 0x0004, 0x0409, 0x040c, - 0x0411, 0x041a, 0x0001, 0x0032, 0x012e, 0x0003, 0x0032, 0x03a0, - 0x03ac, 0x03b7, 0x0002, 0x0414, 0x0417, 0x0001, 0x0049, 0x01f0, - 0x0001, 0x0049, 0x0201, 0x0001, 0x0032, 0x03ea, 0x0004, 0x0422, - // Entry 31700 - 3173F - 0x0425, 0x042a, 0x0433, 0x0001, 0x0049, 0x0211, 0x0003, 0x0049, - 0x0215, 0x021f, 0x0227, 0x0002, 0x042d, 0x0430, 0x0001, 0x0049, - 0x0231, 0x0001, 0x0049, 0x023d, 0x0001, 0x0032, 0x03ea, 0x0004, - 0x043b, 0x043e, 0x0443, 0x044c, 0x0001, 0x0049, 0x0211, 0x0003, - 0x0049, 0x0215, 0x021f, 0x0227, 0x0002, 0x0446, 0x0449, 0x0001, - 0x0049, 0x0231, 0x0001, 0x0049, 0x023d, 0x0001, 0x0032, 0x03ea, - 0x0003, 0x0453, 0x0456, 0x045d, 0x0001, 0x0032, 0x043d, 0x0005, - 0x0049, 0x0253, 0x025b, 0x0264, 0x024a, 0x0269, 0x0002, 0x0460, - // Entry 31740 - 3177F - 0x0463, 0x0001, 0x0049, 0x026e, 0x0001, 0x0049, 0x027d, 0x0003, - 0x046a, 0x046d, 0x0474, 0x0001, 0x0049, 0x028b, 0x0005, 0x0049, - 0x0290, 0x025b, 0x0264, 0x024a, 0x0269, 0x0002, 0x0477, 0x047a, - 0x0001, 0x0049, 0x0296, 0x0001, 0x0049, 0x027d, 0x0003, 0x0481, - 0x0484, 0x048b, 0x0001, 0x0049, 0x028b, 0x0005, 0x0049, 0x0290, - 0x025b, 0x0264, 0x024a, 0x0269, 0x0002, 0x048e, 0x0491, 0x0001, - 0x0049, 0x0296, 0x0001, 0x0049, 0x027d, 0x0001, 0x0496, 0x0001, - 0x0049, 0x02a3, 0x0003, 0x0000, 0x049d, 0x04a2, 0x0003, 0x0049, - // Entry 31780 - 317BF - 0x02b5, 0x02bf, 0x02c8, 0x0002, 0x04a5, 0x04a8, 0x0001, 0x0049, - 0x02d3, 0x0001, 0x0049, 0x02e1, 0x0003, 0x0000, 0x04af, 0x04b4, - 0x0003, 0x0049, 0x02f4, 0x02fd, 0x0305, 0x0002, 0x04b7, 0x04ba, - 0x0001, 0x0049, 0x02d3, 0x0001, 0x0049, 0x02e1, 0x0003, 0x0000, - 0x04c1, 0x04c6, 0x0003, 0x0049, 0x030f, 0x0318, 0x0320, 0x0002, - 0x04c9, 0x04cc, 0x0001, 0x0049, 0x02d3, 0x0001, 0x0049, 0x02e1, - 0x0003, 0x0000, 0x04d3, 0x04d8, 0x0003, 0x0049, 0x032a, 0x0335, - 0x033f, 0x0002, 0x04db, 0x04de, 0x0001, 0x0049, 0x034b, 0x0001, - // Entry 317C0 - 317FF - 0x0049, 0x035a, 0x0003, 0x0000, 0x04e5, 0x04ea, 0x0003, 0x0049, - 0x036e, 0x0377, 0x037f, 0x0002, 0x04ed, 0x04f0, 0x0001, 0x0049, - 0x034b, 0x0001, 0x0049, 0x035a, 0x0003, 0x0000, 0x04f7, 0x04fc, - 0x0003, 0x0049, 0x036e, 0x0377, 0x037f, 0x0002, 0x04ff, 0x0502, - 0x0001, 0x0049, 0x034b, 0x0001, 0x0049, 0x035a, 0x0003, 0x0000, - 0x0509, 0x050e, 0x0003, 0x0032, 0x0609, 0x0615, 0x2729, 0x0002, - 0x0511, 0x0514, 0x0001, 0x0049, 0x0389, 0x0001, 0x0049, 0x0399, - 0x0003, 0x0000, 0x051b, 0x0520, 0x0003, 0x0049, 0x03ae, 0x03b7, - // Entry 31800 - 3183F - 0x03bf, 0x0002, 0x0523, 0x0526, 0x0001, 0x0049, 0x0389, 0x0001, - 0x0049, 0x0399, 0x0003, 0x0000, 0x052d, 0x0532, 0x0003, 0x0049, - 0x03ae, 0x03b7, 0x03bf, 0x0002, 0x0535, 0x0538, 0x0001, 0x0049, - 0x0389, 0x0001, 0x0049, 0x0399, 0x0003, 0x0000, 0x053f, 0x0544, - 0x0003, 0x0032, 0x06a5, 0x06af, 0x2736, 0x0002, 0x0547, 0x054a, - 0x0001, 0x0049, 0x03c9, 0x0001, 0x0049, 0x03d7, 0x0003, 0x0000, - 0x0551, 0x0556, 0x0003, 0x0049, 0x03ea, 0x03f3, 0x03fb, 0x0002, - 0x0559, 0x055c, 0x0001, 0x0049, 0x03c9, 0x0001, 0x0049, 0x03d7, - // Entry 31840 - 3187F - 0x0003, 0x0000, 0x0563, 0x0568, 0x0003, 0x0049, 0x03ea, 0x03f3, - 0x03fb, 0x0002, 0x056b, 0x056e, 0x0001, 0x0049, 0x03c9, 0x0001, - 0x0049, 0x03d7, 0x0003, 0x0000, 0x0575, 0x057a, 0x0003, 0x0049, - 0x0405, 0x0411, 0x041c, 0x0002, 0x057d, 0x0580, 0x0001, 0x0049, - 0x0429, 0x0001, 0x0049, 0x0439, 0x0003, 0x0000, 0x0587, 0x058c, - 0x0003, 0x0049, 0x044e, 0x0457, 0x045f, 0x0002, 0x058f, 0x0592, - 0x0001, 0x0049, 0x0429, 0x0001, 0x0049, 0x0439, 0x0003, 0x0000, - 0x0599, 0x059e, 0x0003, 0x0049, 0x044e, 0x0457, 0x045f, 0x0002, - // Entry 31880 - 318BF - 0x05a1, 0x05a4, 0x0001, 0x0049, 0x0429, 0x0001, 0x0049, 0x0439, - 0x0003, 0x0000, 0x05ab, 0x05b0, 0x0003, 0x0049, 0x0469, 0x0475, - 0x0480, 0x0002, 0x05b3, 0x05b6, 0x0001, 0x0049, 0x048d, 0x0001, - 0x0049, 0x049d, 0x0003, 0x0000, 0x05bd, 0x05c2, 0x0003, 0x0049, - 0x04b2, 0x04bb, 0x04c3, 0x0002, 0x05c5, 0x05c8, 0x0001, 0x0049, - 0x048d, 0x0001, 0x0049, 0x049d, 0x0003, 0x0000, 0x05cf, 0x05d4, - 0x0003, 0x0049, 0x04b2, 0x04bb, 0x04c3, 0x0002, 0x05d7, 0x05da, - 0x0001, 0x0049, 0x048d, 0x0001, 0x0049, 0x049d, 0x0003, 0x0000, - // Entry 318C0 - 318FF - 0x05e1, 0x05e6, 0x0003, 0x0032, 0x0865, 0x0870, 0x2741, 0x0002, - 0x05e9, 0x05ec, 0x0001, 0x0049, 0x04cd, 0x0001, 0x0049, 0x04dc, - 0x0003, 0x0000, 0x05f3, 0x05f8, 0x0003, 0x0049, 0x04f0, 0x04f9, - 0x0501, 0x0002, 0x05fb, 0x05fe, 0x0001, 0x0049, 0x04cd, 0x0001, - 0x0049, 0x04dc, 0x0003, 0x0000, 0x0605, 0x060a, 0x0003, 0x0049, - 0x04f0, 0x04f9, 0x0501, 0x0002, 0x060d, 0x0610, 0x0001, 0x0049, - 0x04cd, 0x0001, 0x0049, 0x04dc, 0x0001, 0x0615, 0x0001, 0x0049, - 0x050b, 0x0003, 0x061c, 0x061f, 0x0623, 0x0001, 0x0032, 0x08fc, - // Entry 31900 - 3193F - 0x0002, 0x0032, 0xffff, 0x0900, 0x0002, 0x0626, 0x0629, 0x0001, - 0x0049, 0x0512, 0x0001, 0x0032, 0x092c, 0x0003, 0x0630, 0x0000, - 0x0633, 0x0001, 0x0032, 0x0928, 0x0002, 0x0636, 0x0639, 0x0001, - 0x0049, 0x0520, 0x0001, 0x0032, 0x092c, 0x0003, 0x0640, 0x0000, - 0x0643, 0x0001, 0x0032, 0x0928, 0x0002, 0x0646, 0x0649, 0x0001, - 0x0049, 0x0520, 0x0001, 0x0032, 0x092c, 0x0003, 0x0650, 0x0653, - 0x0657, 0x0001, 0x0045, 0x04d4, 0x0002, 0x0049, 0xffff, 0x052c, - 0x0002, 0x065a, 0x065d, 0x0001, 0x0049, 0x053b, 0x0001, 0x0049, - // Entry 31940 - 3197F - 0x054b, 0x0003, 0x0664, 0x0000, 0x0667, 0x0001, 0x0041, 0x092f, - 0x0002, 0x066a, 0x066d, 0x0001, 0x0049, 0x055a, 0x0001, 0x0049, - 0x0566, 0x0003, 0x0674, 0x0000, 0x0677, 0x0001, 0x0041, 0x092f, - 0x0002, 0x067a, 0x067d, 0x0001, 0x0049, 0x055a, 0x0001, 0x0049, - 0x0566, 0x0003, 0x0684, 0x0687, 0x068b, 0x0001, 0x0007, 0x07d2, - 0x0002, 0x0032, 0xffff, 0x09b5, 0x0002, 0x068e, 0x0691, 0x0001, - 0x0049, 0x00c1, 0x0001, 0x0049, 0x0573, 0x0003, 0x0698, 0x0000, - 0x069b, 0x0001, 0x0007, 0x0802, 0x0002, 0x069e, 0x06a1, 0x0001, - // Entry 31980 - 319BF - 0x0049, 0x0581, 0x0001, 0x0049, 0x0573, 0x0003, 0x06a8, 0x0000, - 0x06ab, 0x0001, 0x0007, 0x0802, 0x0002, 0x06ae, 0x06b1, 0x0001, - 0x0049, 0x0581, 0x0001, 0x0049, 0x0573, 0x0001, 0x06b6, 0x0001, - 0x0049, 0x058e, 0x0004, 0x06be, 0x06c3, 0x06c8, 0x06d7, 0x0003, - 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0032, 0x0a1d, 0x274d, - 0x275d, 0x0002, 0x0000, 0x06cb, 0x0003, 0x0000, 0x06d2, 0x06cf, - 0x0001, 0x0049, 0x0598, 0x0003, 0x0049, 0xffff, 0x05b0, 0x05ca, - 0x0002, 0x08a0, 0x06da, 0x0003, 0x0774, 0x080a, 0x06de, 0x0094, - // Entry 319C0 - 319FF - 0x0049, 0x05e4, 0x05f6, 0x060a, 0x061d, 0x0639, 0x0653, 0x0667, - 0x067b, 0x068e, 0x06a1, 0x06ba, 0x06cf, 0x06e3, 0x06f7, 0x0709, - 0x0720, 0x073d, 0x0752, 0x0768, 0x0786, 0x07aa, 0x07c7, 0x07e4, - 0x07fc, 0x0810, 0x0828, 0x0835, 0x0843, 0x0859, 0x0871, 0x088c, - 0x08a2, 0x08b7, 0x08ca, 0x08dd, 0x08f5, 0x090b, 0x0921, 0x0937, - 0x0953, 0x0965, 0x0971, 0x098a, 0x099c, 0x09b6, 0x09c4, 0x09df, - 0x09f9, 0x0a12, 0x0a2c, 0x0a4c, 0x0a5e, 0x0a74, 0x0a99, 0x0aa9, - 0x0ab7, 0x0acc, 0x0ae4, 0x0af8, 0x0b15, 0x0b32, 0x0b3e, 0x0b4b, - // Entry 31A00 - 31A3F - 0x0b68, 0x0b7f, 0x0b91, 0x0ba4, 0x0bb7, 0x0bc7, 0x0bde, 0x0bf4, - 0x0c0a, 0x0c1c, 0x0c31, 0x0c45, 0x0c58, 0x0c7e, 0x0c95, 0x0cac, - 0x0cbf, 0x0ccc, 0x0ce5, 0x0cf5, 0x0d0a, 0x0d21, 0x0d37, 0x0d4c, - 0x0d5b, 0x0d6a, 0x0d7a, 0x0d93, 0x0daa, 0x0db7, 0x0dd6, 0x0df2, - 0x0e0a, 0x0e1e, 0x0e2c, 0x0e38, 0x0e44, 0x0e5f, 0x0e78, 0x0e92, - 0x0e9d, 0x0eb5, 0x0ed6, 0x0eef, 0x0f01, 0x0f17, 0x0f23, 0x0f3a, - 0x0f50, 0x0f62, 0x0f78, 0x0f90, 0x0fb7, 0x0fc6, 0x0fd3, 0x0fe3, - 0x0ff1, 0x0fff, 0x1015, 0x1029, 0x103c, 0x104d, 0x1064, 0x107c, - // Entry 31A40 - 31A7F - 0x1092, 0x10a1, 0x10ad, 0x10ba, 0x10ce, 0x10df, 0x10ed, 0x1100, - 0x110c, 0x1126, 0x1133, 0x1148, 0x1160, 0x1175, 0x1185, 0x119e, - 0x11b5, 0x11c2, 0x11d3, 0x11eb, 0x1200, 0x0094, 0x0032, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0b28, 0x0b75, 0x0beb, 0x2781, 0x0c61, - 0x27b2, 0x0ce0, 0x0d1e, 0x0d59, 0x0e01, 0x0e36, 0x2817, 0x0ee5, - 0x0f23, 0x2864, 0x0fbd, 0x28bb, 0x28ed, 0x10d4, 0x111b, 0x1156, - 0xffff, 0xffff, 0x291f, 0xffff, 0x120b, 0xffff, 0x127e, 0x295d, - 0x2981, 0x1332, 0xffff, 0xffff, 0x299f, 0x29c9, 0x2a07, 0xffff, - // Entry 31A80 - 31ABF - 0xffff, 0xffff, 0x2a23, 0xffff, 0x2a55, 0x2a89, 0xffff, 0x2abb, - 0x15ec, 0x164b, 0xffff, 0xffff, 0xffff, 0xffff, 0x16e0, 0xffff, - 0xffff, 0x1745, 0x179b, 0xffff, 0xffff, 0x181d, 0x1873, 0x18b7, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x196e, 0x19a3, - 0x19e1, 0x2b2d, 0x2b4b, 0xffff, 0xffff, 0x1af6, 0xffff, 0x1b3b, - 0xffff, 0xffff, 0x1bb1, 0xffff, 0x1c47, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1cc7, 0xffff, 0x2b92, 0x2bc8, 0x1dcd, 0x2bf8, 0xffff, - 0xffff, 0xffff, 0x2c1e, 0x2c52, 0x1f18, 0xffff, 0xffff, 0x1f88, - // Entry 31AC0 - 31AFF - 0x2003, 0x204d, 0x2082, 0xffff, 0xffff, 0x20e2, 0x2123, 0x2158, - 0xffff, 0x21b1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22b1, - 0x22f2, 0x232d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x23e4, 0xffff, 0xffff, 0x243e, 0xffff, 0x2482, 0xffff, - 0x24dc, 0x251a, 0x2561, 0xffff, 0x25af, 0x25f9, 0xffff, 0xffff, - 0xffff, 0x2677, 0x26b5, 0x0094, 0x0032, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0b56, 0x276e, 0x0c0d, 0x278d, 0x27a0, 0x27c4, 0x27e1, - 0x0d40, 0x27f5, 0x2806, 0x0e5e, 0x282d, 0x0f09, 0x284f, 0x287b, - // Entry 31B00 - 31B3F - 0x2898, 0x28d1, 0x2903, 0x10fe, 0x113d, 0x1180, 0xffff, 0xffff, - 0x292e, 0xffff, 0x123b, 0xffff, 0x2949, 0x2969, 0x298d, 0x135c, - 0xffff, 0xffff, 0x29ae, 0x29de, 0x2a12, 0xffff, 0xffff, 0xffff, - 0x2a36, 0xffff, 0x2a69, 0x2a9c, 0xffff, 0x2ace, 0x1626, 0x1669, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1704, 0xffff, 0xffff, 0x1779, - 0x17cf, 0xffff, 0xffff, 0x2aed, 0x189b, 0x18d5, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2b09, 0x19c7, 0x2b1a, 0x2b39, - 0x1a9d, 0xffff, 0xffff, 0x2b6a, 0xffff, 0x1b67, 0xffff, 0xffff, - // Entry 31B40 - 31B7F - 0x2b7c, 0xffff, 0x1c6b, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cef, - 0xffff, 0x2baa, 0x2bdd, 0x1df7, 0x2c05, 0xffff, 0xffff, 0xffff, - 0x2c32, 0x2c64, 0x2c7c, 0xffff, 0xffff, 0x1fc4, 0x202f, 0x206b, - 0x20a8, 0xffff, 0xffff, 0x2108, 0x2141, 0x217e, 0xffff, 0x2c95, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22d7, 0x2314, 0x234d, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2cbb, - 0xffff, 0xffff, 0x245e, 0xffff, 0x24b0, 0xffff, 0x2500, 0x2544, - 0x2585, 0xffff, 0x25db, 0x2621, 0xffff, 0xffff, 0xffff, 0x269b, - // Entry 31B80 - 31BBF - 0x26e5, 0x0003, 0x0000, 0x0000, 0x08a4, 0x007d, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 31BC0 - 31BFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04a6, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 31C00 - 31C3F - 0xffff, 0xffff, 0xffff, 0x0584, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0019, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0003, 0x0000, - 0x0000, 0x0016, 0x0001, 0x0000, 0x1e0b, 0x0006, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0020, 0x0003, 0x0000, 0x0000, 0x0024, - 0x0001, 0x0001, 0x002d, 0x0003, 0x0004, 0x01af, 0x026f, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x002c, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - // Entry 31C40 - 31C7F - 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0049, - 0x121b, 0x0001, 0x0049, 0x1234, 0x0001, 0x0000, 0x1e17, 0x0001, - 0x0002, 0x04f7, 0x0001, 0x0029, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0035, 0x009a, 0x00f1, 0x0126, 0x0167, 0x017c, 0x018d, 0x019e, - 0x0002, 0x0038, 0x0069, 0x0003, 0x003c, 0x004b, 0x005a, 0x000d, - 0x0005, 0xffff, 0x0636, 0x240b, 0x236e, 0x2246, 0x240f, 0x2413, - 0x2418, 0x241c, 0x232e, 0x2420, 0x22e0, 0x2424, 0x000d, 0x0000, - 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x388d, 0x2994, - // Entry 31C80 - 31CBF - 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0049, 0xffff, - 0x1247, 0x124e, 0x1253, 0x1259, 0x125f, 0x1265, 0x126c, 0x1272, - 0x127a, 0x1284, 0x128c, 0x1295, 0x0003, 0x006d, 0x007c, 0x008b, - 0x000d, 0x0005, 0xffff, 0x0636, 0x240b, 0x236e, 0x2246, 0x240f, - 0x2413, 0x2418, 0x241c, 0x232e, 0x2420, 0x22e0, 0x2424, 0x000d, - 0x0049, 0xffff, 0x0000, 0x129f, 0x12a2, 0x0009, 0x12a5, 0x12a8, - 0x12ac, 0x12af, 0x12b2, 0x12b5, 0x001e, 0x12b8, 0x000d, 0x0049, - 0xffff, 0x1247, 0x124e, 0x1253, 0x1259, 0x125f, 0x1265, 0x126c, - // Entry 31CC0 - 31CFF - 0x1272, 0x127a, 0x1284, 0x128c, 0x1295, 0x0002, 0x009d, 0x00c7, - 0x0005, 0x00a3, 0x00ac, 0x00be, 0x0000, 0x00b5, 0x0007, 0x0049, - 0x12bc, 0x12c1, 0x12c5, 0x12c9, 0x12cd, 0x12d2, 0x12d7, 0x0007, - 0x0049, 0x12db, 0x12df, 0x12e1, 0x12e4, 0x12e7, 0x12eb, 0x12ef, - 0x0007, 0x0049, 0x12bc, 0x12c1, 0x12c5, 0x12c9, 0x12cd, 0x12d2, - 0x12d7, 0x0007, 0x0049, 0x12f2, 0x12fb, 0x1304, 0x130e, 0x1318, - 0x1322, 0x132e, 0x0005, 0x00cd, 0x00d6, 0x00e8, 0x0000, 0x00df, - 0x0007, 0x0049, 0x12bc, 0x12c1, 0x12c5, 0x12c9, 0x12cd, 0x12d2, - // Entry 31D00 - 31D3F - 0x12d7, 0x0007, 0x0049, 0x12db, 0x1336, 0x12e1, 0x12e4, 0x12e7, - 0x12eb, 0x12ef, 0x0007, 0x0049, 0x12bc, 0x12c1, 0x12c5, 0x12c9, - 0x12cd, 0x12d2, 0x12d7, 0x0007, 0x0049, 0x12f2, 0x12fb, 0x1304, - 0x130e, 0x1318, 0x1322, 0x132e, 0x0002, 0x00f4, 0x010d, 0x0003, - 0x00f8, 0x00ff, 0x0106, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, - 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0049, 0xffff, 0x1339, 0x1343, 0x134d, 0x1357, - 0x0003, 0x0111, 0x0118, 0x011f, 0x0005, 0x0000, 0xffff, 0x1f17, - // Entry 31D40 - 31D7F - 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0049, 0xffff, 0x1339, 0x1343, 0x134d, - 0x1357, 0x0002, 0x0129, 0x0148, 0x0003, 0x012d, 0x0136, 0x013f, - 0x0002, 0x0130, 0x0133, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0002, 0x0139, 0x013c, 0x0001, 0x0000, 0x2337, 0x0001, - 0x0000, 0x233a, 0x0002, 0x0142, 0x0145, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0003, 0x014c, 0x0155, 0x015e, 0x0002, - 0x014f, 0x0152, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - // Entry 31D80 - 31DBF - 0x0002, 0x0158, 0x015b, 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, - 0x233a, 0x0002, 0x0161, 0x0164, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0003, 0x0171, 0x0000, 0x016b, 0x0001, 0x016d, - 0x0002, 0x0049, 0x1364, 0x1371, 0x0002, 0x0174, 0x0178, 0x0002, - 0x0049, 0x137d, 0x1384, 0x0002, 0x0049, 0x1380, 0x1387, 0x0004, - 0x018a, 0x0184, 0x0181, 0x0187, 0x0001, 0x0049, 0x138a, 0x0001, - 0x0049, 0x13a1, 0x0001, 0x0001, 0x0037, 0x0001, 0x0002, 0x0860, - 0x0004, 0x019b, 0x0195, 0x0192, 0x0198, 0x0001, 0x0000, 0x0524, - // Entry 31DC0 - 31DFF - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0004, 0x01ac, 0x01a6, 0x01a3, 0x01a9, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0040, 0x01f0, 0x0000, 0x0000, 0x01f5, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x020c, 0x0000, 0x0000, 0x0217, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0222, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x022d, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0232, 0x0000, 0x0000, 0x023a, 0x0000, 0x0000, 0x0000, - // Entry 31E00 - 31E3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0242, - 0x0000, 0x0247, 0x0000, 0x0000, 0x024c, 0x0251, 0x0256, 0x025b, - 0x0260, 0x0265, 0x026a, 0x0001, 0x01f2, 0x0001, 0x0049, 0x13b2, - 0x0003, 0x01f9, 0x01fc, 0x0201, 0x0001, 0x0049, 0x13b8, 0x0003, - 0x0049, 0x13bd, 0x13d2, 0x13de, 0x0002, 0x0000, 0x0204, 0x0006, - 0x0049, 0x13fd, 0x13f0, 0xffff, 0xffff, 0x13fd, 0x13fd, 0x0002, - 0x020f, 0x0212, 0x0001, 0x0049, 0x140a, 0x0003, 0x0049, 0x1410, - // Entry 31E40 - 31E7F - 0x1424, 0x1431, 0x0002, 0x021a, 0x021d, 0x0001, 0x0049, 0x1445, - 0x0003, 0x0049, 0x144e, 0x1467, 0x1477, 0x0002, 0x0225, 0x0228, - 0x0001, 0x0049, 0x003b, 0x0003, 0x0049, 0x148d, 0x1497, 0x149d, - 0x0001, 0x022f, 0x0001, 0x0049, 0x14a4, 0x0002, 0x0000, 0x0235, - 0x0003, 0x0049, 0x14b5, 0x14c9, 0x14d6, 0x0002, 0x0000, 0x023d, - 0x0003, 0x0049, 0x14e7, 0x14fb, 0x1508, 0x0001, 0x0244, 0x0001, - 0x0049, 0x1519, 0x0001, 0x0249, 0x0001, 0x0049, 0x151f, 0x0001, - 0x024e, 0x0001, 0x0049, 0x1527, 0x0001, 0x0253, 0x0001, 0x0001, - // Entry 31E80 - 31EBF - 0x075a, 0x0001, 0x0258, 0x0001, 0x0000, 0x1f9a, 0x0001, 0x025d, - 0x0001, 0x0049, 0x152e, 0x0001, 0x0262, 0x0001, 0x0001, 0x07d3, - 0x0001, 0x0267, 0x0001, 0x0000, 0x2002, 0x0001, 0x026c, 0x0001, - 0x0049, 0x1536, 0x0004, 0x0274, 0x0279, 0x0000, 0x027e, 0x0003, - 0x0000, 0x1dc7, 0x3839, 0x3840, 0x0003, 0x0049, 0x153c, 0x154b, - 0x1554, 0x0002, 0x0315, 0x0281, 0x0003, 0x0285, 0x02e5, 0x02b5, - 0x002e, 0x0049, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 31EC0 - 31EFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1566, - 0x002e, 0x0049, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 31F00 - 31F3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x157d, - 0x002e, 0x0049, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x159d, - // Entry 31F40 - 31F7F - 0x0003, 0x0319, 0x0388, 0x034c, 0x0031, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0x003a, - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 31F80 - 31FBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, - 0xffff, 0x27cb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x27cf, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 31FC0 - 31FFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, 0x0002, 0x0003, - 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - // Entry 32000 - 3203F - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, - 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0049, 0xffff, 0x15bd, - 0x15c1, 0x15c5, 0x15c9, 0x15cd, 0x15d1, 0x15d5, 0x15d9, 0x15dd, - 0x15e1, 0x15e5, 0x15e9, 0x000d, 0x0049, 0xffff, 0x15ed, 0x15f6, - 0x1604, 0x160f, 0x161b, 0x162e, 0x1641, 0x1651, 0x165b, 0x1669, - 0x1676, 0x1683, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, - // Entry 32040 - 3207F - 0x2990, 0x2980, 0x2055, 0x298c, 0x297c, 0x24f9, 0x2994, 0x297a, - 0x214e, 0x382e, 0x2159, 0x23db, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0049, 0x168d, 0x1691, 0x1695, - 0x1699, 0x169d, 0x16a1, 0x16a5, 0x0007, 0x0049, 0x16a9, 0x16b5, - 0x16c0, 0x16cc, 0x16d5, 0x16e4, 0x16ee, 0x0002, 0x0000, 0x0082, - 0x0007, 0x0000, 0x23db, 0x2994, 0x22db, 0x2990, 0x2980, 0x2281, - 0x214e, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, - 0x0033, 0xffff, 0x03f3, 0x03f6, 0x03f9, 0x03fc, 0x0005, 0x0049, - // Entry 32080 - 320BF - 0xffff, 0x16fa, 0x1717, 0x1738, 0x1759, 0x0001, 0x00a1, 0x0003, - 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0049, - 0x177b, 0x0001, 0x0049, 0x1781, 0x0002, 0x00b1, 0x00b4, 0x0001, - 0x0049, 0x177b, 0x0001, 0x0049, 0x1781, 0x0003, 0x00c1, 0x0000, - 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0049, 0x1787, 0x1795, 0x0001, - 0x00c3, 0x0002, 0x0016, 0x01fb, 0x2c49, 0x0004, 0x00d5, 0x00cf, - 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, - // Entry 320C0 - 320FF - 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 32100 - 3213F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, - 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, - 0x0001, 0x012c, 0x0001, 0x0049, 0x17a0, 0x0001, 0x0131, 0x0001, - 0x0049, 0x17ad, 0x0001, 0x0136, 0x0001, 0x0049, 0x17b2, 0x0001, - 0x013b, 0x0001, 0x0049, 0x17b7, 0x0002, 0x0141, 0x0144, 0x0001, - 0x0049, 0x17bc, 0x0003, 0x0049, 0x17ce, 0x17d5, 0x17e1, 0x0001, - 0x014b, 0x0001, 0x0049, 0x17ec, 0x0001, 0x0150, 0x0001, 0x0049, - 0x17f9, 0x0001, 0x0155, 0x0001, 0x0049, 0x1803, 0x0001, 0x015a, - // Entry 32140 - 3217F - 0x0001, 0x0049, 0x1817, 0x0001, 0x015f, 0x0001, 0x0049, 0x1832, - 0x0003, 0x0004, 0x0250, 0x05dc, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, - 0x001e, 0x001b, 0x0021, 0x0001, 0x0049, 0x1841, 0x0001, 0x0049, - 0x1852, 0x0001, 0x0007, 0x001d, 0x0001, 0x0049, 0x185e, 0x0004, - 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 32180 - 321BF - 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0203, 0x021d, 0x022e, - 0x023f, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, - 0x000d, 0x0049, 0xffff, 0x186d, 0x1877, 0x187e, 0x1888, 0x188c, - 0x1893, 0x18a0, 0x18a7, 0x18ab, 0x18b5, 0x18c5, 0x18cf, 0x000d, - 0x0049, 0xffff, 0x18d6, 0x18da, 0x18de, 0x1888, 0x18de, 0x18d6, - 0x18d6, 0x18a7, 0x18e2, 0x18e6, 0x18ea, 0x18ee, 0x000d, 0x0049, - 0xffff, 0x18f2, 0x190b, 0x187e, 0x192a, 0x188c, 0x1893, 0x1937, - 0x194d, 0x195d, 0x1976, 0x1995, 0x19ae, 0x0003, 0x0079, 0x0088, - // Entry 321C0 - 321FF - 0x0097, 0x000d, 0x0049, 0xffff, 0x186d, 0x1877, 0x187e, 0x1888, - 0x188c, 0x1893, 0x18a0, 0x18a7, 0x18ab, 0x18b5, 0x18c5, 0x18cf, - 0x000d, 0x0049, 0xffff, 0x18d6, 0x18da, 0x18de, 0x1888, 0x18de, - 0x18d6, 0x18d6, 0x18a7, 0x18e2, 0x18e6, 0x18ea, 0x18ee, 0x000d, - 0x0049, 0xffff, 0x18f2, 0x190b, 0x187e, 0x192a, 0x188c, 0x1893, - 0x1937, 0x194d, 0x195d, 0x1976, 0x1995, 0x19ae, 0x0002, 0x00a9, - 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, - 0x0049, 0x19c4, 0x19e0, 0x19f6, 0x1a09, 0x1a22, 0x1a3b, 0x1a4e, - // Entry 32200 - 3223F - 0x0007, 0x0049, 0x1a58, 0x1a58, 0x18e6, 0x1a5c, 0x1a60, 0x1a64, - 0x18e2, 0x0007, 0x0049, 0x19c4, 0x19e0, 0x19f6, 0x1a09, 0x1a22, - 0x1a3b, 0x1a4e, 0x0007, 0x0049, 0x19c4, 0x19e0, 0x19f6, 0x1a09, - 0x1a22, 0x1a3b, 0x1a4e, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, - 0x00eb, 0x0007, 0x0049, 0x19c4, 0x19e0, 0x19f6, 0x1a09, 0x1a22, - 0x1a3b, 0x1a4e, 0x0007, 0x0049, 0x1a58, 0x1a58, 0x18e6, 0x1a5c, - 0x1a60, 0x1a64, 0x18e2, 0x0007, 0x0049, 0x19c4, 0x19e0, 0x19f6, - 0x1a09, 0x1a22, 0x1a3b, 0x1a4e, 0x0007, 0x0049, 0x19c4, 0x19e0, - // Entry 32240 - 3227F - 0x19f6, 0x1a09, 0x1a22, 0x1a3b, 0x1a4e, 0x0002, 0x0100, 0x0119, - 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0049, 0xffff, 0x1a68, - 0x1a8b, 0x1ab4, 0x1ada, 0x0005, 0x0049, 0xffff, 0x1b06, 0x1b0a, - 0x1a58, 0x18e2, 0x0005, 0x0049, 0xffff, 0x1a68, 0x1a8b, 0x1ab4, - 0x1ada, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0049, 0xffff, - 0x1a68, 0x1a8b, 0x1ab4, 0x1ada, 0x0005, 0x0049, 0xffff, 0x1b06, - 0x1b0a, 0x1a58, 0x18e2, 0x0005, 0x0049, 0xffff, 0x1a68, 0x1a8b, - 0x1ab4, 0x1ada, 0x0002, 0x0135, 0x019c, 0x0003, 0x0139, 0x015a, - // Entry 32280 - 322BF - 0x017b, 0x0008, 0x0145, 0x014b, 0x0142, 0x014e, 0x0151, 0x0154, - 0x0157, 0x0148, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, 0x1b33, - 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, 0x0049, - 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, 0x0001, - 0x0049, 0x1b7c, 0x0008, 0x0166, 0x016c, 0x0163, 0x016f, 0x0172, - 0x0175, 0x0178, 0x0169, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, - 0x1b33, 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, - 0x0049, 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, - // Entry 322C0 - 322FF - 0x0001, 0x0049, 0x1b7c, 0x0008, 0x0187, 0x018d, 0x0184, 0x0190, - 0x0193, 0x0196, 0x0199, 0x018a, 0x0001, 0x0049, 0x1b11, 0x0001, - 0x0049, 0x1b33, 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, - 0x0001, 0x0049, 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, - 0x1b5f, 0x0001, 0x0049, 0x1b7c, 0x0003, 0x01a0, 0x01c1, 0x01e2, - 0x0008, 0x01ac, 0x01b2, 0x01a9, 0x01b5, 0x01b8, 0x01bb, 0x01be, - 0x01af, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, 0x1b33, 0x0001, - 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, 0x0049, 0x1b33, - // Entry 32300 - 3233F - 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, 0x0001, 0x0049, - 0x1b7c, 0x0008, 0x01cd, 0x01d3, 0x01ca, 0x01d6, 0x01d9, 0x01dc, - 0x01df, 0x01d0, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, 0x1b33, - 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, 0x0049, - 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, 0x0001, - 0x0049, 0x1b7c, 0x0008, 0x01ee, 0x01f4, 0x01eb, 0x01f7, 0x01fa, - 0x01fd, 0x0200, 0x01f1, 0x0001, 0x0049, 0x1b11, 0x0001, 0x0049, - 0x1b33, 0x0001, 0x0049, 0x1b43, 0x0001, 0x0049, 0x1b5f, 0x0001, - // Entry 32340 - 3237F - 0x0049, 0x1b33, 0x0001, 0x0049, 0x1b69, 0x0001, 0x0049, 0x1b5f, - 0x0001, 0x0049, 0x1b7c, 0x0003, 0x0212, 0x0000, 0x0207, 0x0002, - 0x020a, 0x020e, 0x0002, 0x0049, 0x1b80, 0x1bfa, 0x0002, 0x0049, - 0x1bbb, 0x1c13, 0x0002, 0x0215, 0x0219, 0x0002, 0x0049, 0x1c2c, - 0x1c4f, 0x0002, 0x0049, 0x1c39, 0x1c5c, 0x0004, 0x022b, 0x0225, - 0x0222, 0x0228, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x001e, 0x0206, 0x0004, 0x023c, - 0x0236, 0x0233, 0x0239, 0x0001, 0x0049, 0x1c6c, 0x0001, 0x0049, - // Entry 32380 - 323BF - 0x1c7a, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x024d, 0x0247, 0x0244, 0x024a, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0040, 0x0291, 0x0000, 0x0000, 0x0296, 0x02ab, 0x02bb, 0x02cb, - 0x02e0, 0x02f5, 0x030a, 0x031f, 0x032f, 0x033f, 0x0358, 0x036c, - 0x0000, 0x0000, 0x0000, 0x0380, 0x0397, 0x03a7, 0x0000, 0x0000, - 0x0000, 0x03b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03bc, - 0x03ce, 0x03e0, 0x03f2, 0x0404, 0x0416, 0x0428, 0x043a, 0x044c, - // Entry 323C0 - 323FF - 0x045e, 0x0470, 0x0482, 0x0494, 0x04a6, 0x04b8, 0x04ca, 0x04dc, - 0x04ee, 0x0500, 0x0512, 0x0524, 0x0000, 0x0536, 0x0000, 0x053b, - 0x054f, 0x055f, 0x056f, 0x0583, 0x0593, 0x05a3, 0x05b7, 0x05c7, - 0x05d7, 0x0001, 0x0293, 0x0001, 0x0049, 0x1c85, 0x0003, 0x029a, - 0x029d, 0x02a2, 0x0001, 0x0049, 0x1c92, 0x0003, 0x0049, 0x1c9f, - 0x1cb8, 0x1cce, 0x0002, 0x02a5, 0x02a8, 0x0001, 0x0049, 0x1ced, - 0x0001, 0x0049, 0x1d10, 0x0003, 0x02af, 0x0000, 0x02b2, 0x0001, - 0x0049, 0x1c92, 0x0002, 0x02b5, 0x02b8, 0x0001, 0x0049, 0x1ced, - // Entry 32400 - 3243F - 0x0001, 0x0049, 0x1d10, 0x0003, 0x02bf, 0x0000, 0x02c2, 0x0001, - 0x0049, 0x1c92, 0x0002, 0x02c5, 0x02c8, 0x0001, 0x0049, 0x1ced, - 0x0001, 0x0049, 0x1d10, 0x0003, 0x02cf, 0x02d2, 0x02d7, 0x0001, - 0x0049, 0x1d43, 0x0003, 0x0049, 0x1d5c, 0x1d97, 0x1dba, 0x0002, - 0x02da, 0x02dd, 0x0001, 0x0049, 0x1de6, 0x0001, 0x0049, 0x1e1f, - 0x0003, 0x02e4, 0x02e7, 0x02ec, 0x0001, 0x0049, 0x1d43, 0x0003, - 0x0049, 0x1e80, 0x1eb7, 0x1ed9, 0x0002, 0x02ef, 0x02f2, 0x0001, - 0x0049, 0x1f13, 0x0001, 0x0049, 0x1e1f, 0x0003, 0x02f9, 0x02fc, - // Entry 32440 - 3247F - 0x0301, 0x0001, 0x0049, 0x1d43, 0x0003, 0x0049, 0x1e80, 0x1eb7, - 0x1ed9, 0x0002, 0x0304, 0x0307, 0x0001, 0x0049, 0x1f13, 0x0001, - 0x0049, 0x1e1f, 0x0003, 0x030e, 0x0311, 0x0316, 0x0001, 0x0049, - 0x1f52, 0x0003, 0x0049, 0x1f56, 0x1f7b, 0x1f88, 0x0002, 0x0319, - 0x031c, 0x0001, 0x0049, 0x1f9e, 0x0001, 0x0049, 0x1fb8, 0x0003, - 0x0323, 0x0000, 0x0326, 0x0001, 0x0049, 0x1f52, 0x0002, 0x0329, - 0x032c, 0x0001, 0x0049, 0x1f9e, 0x0001, 0x0049, 0x1fb8, 0x0003, - 0x0333, 0x0000, 0x0336, 0x0001, 0x0049, 0x1f52, 0x0002, 0x0339, - // Entry 32480 - 324BF - 0x033c, 0x0001, 0x0049, 0x1f9e, 0x0001, 0x0049, 0x1fb8, 0x0004, - 0x0344, 0x0347, 0x034c, 0x0355, 0x0001, 0x0049, 0x1fe2, 0x0003, - 0x004a, 0x0000, 0x003e, 0x0064, 0x0002, 0x034f, 0x0352, 0x0001, - 0x004a, 0x0093, 0x0001, 0x004a, 0x00b3, 0x0001, 0x004a, 0x00e3, - 0x0004, 0x035d, 0x0000, 0x0360, 0x0369, 0x0001, 0x0049, 0x1fe2, - 0x0002, 0x0363, 0x0366, 0x0001, 0x004a, 0x0093, 0x0001, 0x004a, - 0x00b3, 0x0001, 0x004a, 0x00e3, 0x0004, 0x0371, 0x0000, 0x0374, - 0x037d, 0x0001, 0x0049, 0x1fe2, 0x0002, 0x0377, 0x037a, 0x0001, - // Entry 324C0 - 324FF - 0x004a, 0x0093, 0x0001, 0x004a, 0x00b3, 0x0001, 0x004a, 0x00e3, - 0x0003, 0x0384, 0x0387, 0x038e, 0x0001, 0x004a, 0x011f, 0x0005, - 0x004a, 0x013f, 0x014f, 0x015c, 0x0129, 0x0175, 0x0002, 0x0391, - 0x0394, 0x0001, 0x004a, 0x018e, 0x0001, 0x004a, 0x01ae, 0x0003, - 0x039b, 0x0000, 0x039e, 0x0001, 0x004a, 0x011f, 0x0002, 0x03a1, - 0x03a4, 0x0001, 0x004a, 0x018e, 0x0001, 0x004a, 0x01ae, 0x0003, - 0x03ab, 0x0000, 0x03ae, 0x0001, 0x004a, 0x011f, 0x0002, 0x03b1, - 0x03b4, 0x0001, 0x004a, 0x018e, 0x0001, 0x004a, 0x01ae, 0x0001, - // Entry 32500 - 3253F - 0x03b9, 0x0001, 0x004a, 0x01de, 0x0003, 0x0000, 0x03c0, 0x03c5, - 0x0003, 0x004a, 0x01e8, 0x022f, 0x0257, 0x0002, 0x03c8, 0x03cb, - 0x0001, 0x004a, 0x028f, 0x0001, 0x004a, 0x02cb, 0x0003, 0x0000, - 0x03d2, 0x03d7, 0x0003, 0x004a, 0x01e8, 0x022f, 0x0257, 0x0002, - 0x03da, 0x03dd, 0x0001, 0x004a, 0x028f, 0x0001, 0x004a, 0x02cb, - 0x0003, 0x0000, 0x03e4, 0x03e9, 0x0003, 0x004a, 0x01e8, 0x022f, - 0x0257, 0x0002, 0x03ec, 0x03ef, 0x0001, 0x004a, 0x028f, 0x0001, - 0x004a, 0x02cb, 0x0003, 0x0000, 0x03f6, 0x03fb, 0x0003, 0x004a, - // Entry 32540 - 3257F - 0x0317, 0x0358, 0x037a, 0x0002, 0x03fe, 0x0401, 0x0001, 0x004a, - 0x03ac, 0x0001, 0x004a, 0x03e2, 0x0003, 0x0000, 0x0408, 0x040d, - 0x0003, 0x004a, 0x0317, 0x0358, 0x037a, 0x0002, 0x0410, 0x0413, - 0x0001, 0x004a, 0x03ac, 0x0001, 0x004a, 0x03e2, 0x0003, 0x0000, - 0x041a, 0x041f, 0x0003, 0x004a, 0x0317, 0x0358, 0x037a, 0x0002, - 0x0422, 0x0425, 0x0001, 0x004a, 0x03ac, 0x0001, 0x004a, 0x03e2, - 0x0003, 0x0000, 0x042c, 0x0431, 0x0003, 0x004a, 0x0428, 0x0466, - 0x0485, 0x0002, 0x0434, 0x0437, 0x0001, 0x004a, 0x04b4, 0x0001, - // Entry 32580 - 325BF - 0x004a, 0x04e7, 0x0003, 0x0000, 0x043e, 0x0443, 0x0003, 0x004a, - 0x0428, 0x0466, 0x0485, 0x0002, 0x0446, 0x0449, 0x0001, 0x004a, - 0x04b4, 0x0001, 0x004a, 0x04e7, 0x0003, 0x0000, 0x0450, 0x0455, - 0x0003, 0x004a, 0x0428, 0x0466, 0x0485, 0x0002, 0x0458, 0x045b, - 0x0001, 0x004a, 0x04b4, 0x0001, 0x004a, 0x04e7, 0x0003, 0x0000, - 0x0462, 0x0467, 0x0003, 0x004a, 0x052a, 0x056e, 0x0593, 0x0002, - 0x046a, 0x046d, 0x0001, 0x004a, 0x05c8, 0x0001, 0x004a, 0x0601, - 0x0003, 0x0000, 0x0474, 0x0479, 0x0003, 0x004a, 0x052a, 0x056e, - // Entry 325C0 - 325FF - 0x0593, 0x0002, 0x047c, 0x047f, 0x0001, 0x004a, 0x05c8, 0x0001, - 0x004a, 0x0601, 0x0003, 0x0000, 0x0486, 0x048b, 0x0003, 0x004a, - 0x052a, 0x056e, 0x0593, 0x0002, 0x048e, 0x0491, 0x0001, 0x004a, - 0x05c8, 0x0001, 0x004a, 0x0601, 0x0003, 0x0000, 0x0498, 0x049d, - 0x0003, 0x004a, 0x064a, 0x068e, 0x06b3, 0x0002, 0x04a0, 0x04a3, - 0x0001, 0x004a, 0x06e8, 0x0001, 0x004a, 0x0721, 0x0003, 0x0000, - 0x04aa, 0x04af, 0x0003, 0x004a, 0x064a, 0x068e, 0x06b3, 0x0002, - 0x04b2, 0x04b5, 0x0001, 0x004a, 0x06e8, 0x0001, 0x004a, 0x0721, - // Entry 32600 - 3263F - 0x0003, 0x0000, 0x04bc, 0x04c1, 0x0003, 0x004a, 0x064a, 0x068e, - 0x06b3, 0x0002, 0x04c4, 0x04c7, 0x0001, 0x004a, 0x06e8, 0x0001, - 0x004a, 0x0721, 0x0003, 0x0000, 0x04ce, 0x04d3, 0x0003, 0x004a, - 0x076a, 0x07a8, 0x07c7, 0x0002, 0x04d6, 0x04d9, 0x0001, 0x004a, - 0x07f6, 0x0001, 0x004a, 0x0829, 0x0003, 0x0000, 0x04e0, 0x04e5, - 0x0003, 0x004a, 0x076a, 0x07a8, 0x07c7, 0x0002, 0x04e8, 0x04eb, - 0x0001, 0x004a, 0x07f6, 0x0001, 0x004a, 0x0829, 0x0003, 0x0000, - 0x04f2, 0x04f7, 0x0003, 0x004a, 0x076a, 0x07a8, 0x07c7, 0x0002, - // Entry 32640 - 3267F - 0x04fa, 0x04fd, 0x0001, 0x004a, 0x07f6, 0x0001, 0x004a, 0x0829, - 0x0003, 0x0000, 0x0504, 0x0509, 0x0003, 0x004a, 0x087e, 0x08b3, - 0x08c9, 0x0002, 0x050c, 0x050f, 0x0001, 0x004a, 0x08ef, 0x0001, - 0x004a, 0x0919, 0x0003, 0x0000, 0x0516, 0x051b, 0x0003, 0x004a, - 0x087e, 0x08b3, 0x08c9, 0x0002, 0x051e, 0x0521, 0x0001, 0x004a, - 0x08ef, 0x0001, 0x004a, 0x0919, 0x0003, 0x0000, 0x0528, 0x052d, - 0x0003, 0x004a, 0x087e, 0x08b3, 0x08c9, 0x0002, 0x0530, 0x0533, - 0x0001, 0x004a, 0x08ef, 0x0001, 0x004a, 0x0919, 0x0001, 0x0538, - // Entry 32680 - 326BF - 0x0001, 0x004a, 0x0965, 0x0003, 0x053f, 0x0542, 0x0546, 0x0001, - 0x004a, 0x097f, 0x0002, 0x004a, 0xffff, 0x098c, 0x0002, 0x0549, - 0x054c, 0x0001, 0x004a, 0x09a2, 0x0001, 0x004a, 0x09c5, 0x0003, - 0x0553, 0x0000, 0x0556, 0x0001, 0x004a, 0x097f, 0x0002, 0x0559, - 0x055c, 0x0001, 0x004a, 0x09a2, 0x0001, 0x004a, 0x09c5, 0x0003, - 0x0563, 0x0000, 0x0566, 0x0001, 0x004a, 0x097f, 0x0002, 0x0569, - 0x056c, 0x0001, 0x004a, 0x09a2, 0x0001, 0x004a, 0x09c5, 0x0003, - 0x0573, 0x0576, 0x057a, 0x0001, 0x004a, 0x09f8, 0x0002, 0x004a, - // Entry 326C0 - 326FF - 0xffff, 0x0a08, 0x0002, 0x057d, 0x0580, 0x0001, 0x004a, 0x0a1b, - 0x0001, 0x004a, 0x0a41, 0x0003, 0x0587, 0x0000, 0x058a, 0x0001, - 0x004a, 0x09f8, 0x0002, 0x058d, 0x0590, 0x0001, 0x004a, 0x0a1b, - 0x0001, 0x004a, 0x0a41, 0x0003, 0x0597, 0x0000, 0x059a, 0x0001, - 0x004a, 0x09f8, 0x0002, 0x059d, 0x05a0, 0x0001, 0x004a, 0x0a1b, - 0x0001, 0x004a, 0x0a41, 0x0003, 0x05a7, 0x05aa, 0x05ae, 0x0001, - 0x004a, 0x0a77, 0x0002, 0x004a, 0xffff, 0x0a8d, 0x0002, 0x05b1, - 0x05b4, 0x0001, 0x004a, 0x0a97, 0x0001, 0x004a, 0x0ac3, 0x0003, - // Entry 32700 - 3273F - 0x05bb, 0x0000, 0x05be, 0x0001, 0x004a, 0x0a77, 0x0002, 0x05c1, - 0x05c4, 0x0001, 0x004a, 0x0a97, 0x0001, 0x004a, 0x0ac3, 0x0003, - 0x05cb, 0x0000, 0x05ce, 0x0001, 0x004a, 0x0a77, 0x0002, 0x05d1, - 0x05d4, 0x0001, 0x004a, 0x0a97, 0x0001, 0x004a, 0x0ac3, 0x0001, - 0x05d9, 0x0001, 0x004a, 0x0aff, 0x0004, 0x05e1, 0x05e6, 0x05eb, - 0x05fa, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3890, 0x0003, 0x004a, - 0x0b0c, 0x0b23, 0x0b5f, 0x0002, 0x0000, 0x05ee, 0x0003, 0x0000, - 0x05f5, 0x05f2, 0x0001, 0x004a, 0x0b85, 0x0003, 0x004a, 0xffff, - // Entry 32740 - 3277F - 0x0bd9, 0x0c16, 0x0002, 0x0000, 0x05fd, 0x0003, 0x06a0, 0x073f, - 0x0601, 0x009d, 0x004a, 0x0c5c, 0x0c97, 0x0cc9, 0x0cfe, 0x0d6b, - 0x0e2b, 0x0ede, 0x0faa, 0x10e3, 0x1225, 0x135e, 0xffff, 0x144e, - 0x14de, 0x1587, 0x1666, 0x1756, 0x1817, 0x1900, 0x1a2a, 0x1b56, - 0x1c41, 0x1d14, 0x1dde, 0x1eab, 0x1f4c, 0x1f6f, 0x1fcd, 0x203e, - 0x20af, 0x213a, 0x2190, 0x2226, 0x22b4, 0x2356, 0x23e8, 0x2425, - 0x248e, 0x254e, 0x2615, 0x269b, 0x26c0, 0x270a, 0x2770, 0x27fc, - 0x2868, 0x2943, 0x29cc, 0x2a59, 0x2b29, 0x2bf8, 0x2c60, 0x2ca2, - // Entry 32780 - 327BF - 0x2d16, 0x2d50, 0x2dab, 0x2e34, 0x2e74, 0x2eed, 0x2fdc, 0x3091, - 0x30c3, 0x3143, 0x324b, 0x32f9, 0x3367, 0x339f, 0x33e1, 0x3425, - 0x347f, 0x34dc, 0x355f, 0x35f5, 0x3698, 0x3732, 0xffff, 0x379d, - 0x37db, 0x384a, 0x38cd, 0x3938, 0x39d0, 0x3a34, 0x3aa5, 0x3bca, - 0x3c36, 0x3cb0, 0x3cdc, 0x3d0e, 0x3d3f, 0x3dab, 0x3e2e, 0x3eaa, - 0x3fc4, 0x40b0, 0x4149, 0x41c5, 0x41eb, 0x4210, 0x427f, 0x4364, - 0x441f, 0x44c3, 0x44e8, 0x457a, 0x4685, 0x475d, 0x480c, 0x488f, - 0x48b5, 0x491f, 0x49bf, 0x4a5c, 0x4ae5, 0x4b7a, 0x4c60, 0x4c92, - // Entry 327C0 - 327FF - 0x4cc0, 0x4cec, 0x4d12, 0x4d63, 0xffff, 0x4e04, 0x4e80, 0x4ea6, - 0x4ed2, 0x4f18, 0x4f59, 0x4f87, 0x4fac, 0x4ff7, 0x506e, 0x50a9, - 0x50fa, 0x5168, 0x51cb, 0x5272, 0x52c3, 0x5372, 0x542f, 0x54a3, - 0x551c, 0x5600, 0x5692, 0x56c3, 0x56fa, 0x5776, 0x5839, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a02, 0x3b59, - 0x009d, 0x004a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d33, 0x0e00, - 0x0eb5, 0x0f54, 0x108a, 0x11c9, 0x1311, 0xffff, 0x142c, 0x14b8, - 0x154f, 0x161b, 0x1721, 0x17e5, 0x18af, 0x19c7, 0x1b15, 0x1bfd, - // Entry 32800 - 3283F - 0x1cdc, 0x1da9, 0x1e6d, 0xffff, 0xffff, 0x1fa7, 0xffff, 0x207c, - 0xffff, 0x2168, 0x2203, 0x2291, 0x231f, 0xffff, 0xffff, 0x245f, - 0x2511, 0x25ec, 0xffff, 0xffff, 0xffff, 0x273c, 0xffff, 0x2828, - 0x2911, 0xffff, 0x2a24, 0x2ae8, 0x2bd6, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2d79, 0xffff, 0xffff, 0x2eaf, 0x2f9a, 0xffff, 0xffff, - 0x30f2, 0x3219, 0x32d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x353c, 0x35ca, 0x366f, 0x370f, 0xffff, 0xffff, 0xffff, - 0x381b, 0xffff, 0x38fe, 0xffff, 0xffff, 0x3a71, 0xffff, 0x3c0b, - // Entry 32840 - 3287F - 0xffff, 0xffff, 0xffff, 0xffff, 0x3d7c, 0xffff, 0x3e59, 0x3f80, - 0x4082, 0x4130, 0xffff, 0xffff, 0xffff, 0x4233, 0x4335, 0x43e7, - 0xffff, 0xffff, 0x4528, 0x4642, 0x472f, 0x47dd, 0xffff, 0xffff, - 0x48f3, 0x499c, 0x4a2a, 0xffff, 0x4b22, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4d3a, 0xffff, 0x4dd9, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x4fce, 0xffff, 0xffff, 0x50d5, - 0xffff, 0x518a, 0xffff, 0x529a, 0x533a, 0x5407, 0xffff, 0x54d8, - 0x55c9, 0xffff, 0xffff, 0xffff, 0x5748, 0x57f6, 0xffff, 0xffff, - // Entry 32880 - 328BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3b33, 0x009d, - 0x004a, 0xffff, 0xffff, 0xffff, 0xffff, 0x0db2, 0x0e65, 0x0f16, - 0x100f, 0x114b, 0x1290, 0x13ba, 0xffff, 0x147f, 0x1513, 0x15ce, - 0x16c0, 0x179a, 0x1858, 0x1960, 0x1a9c, 0x1ba6, 0x1c94, 0x1d5b, - 0x1e22, 0x1ef8, 0xffff, 0xffff, 0x2002, 0xffff, 0x20f1, 0xffff, - 0x21c7, 0x2258, 0x22e6, 0x239c, 0xffff, 0xffff, 0x24cc, 0x259a, - 0x264d, 0xffff, 0xffff, 0xffff, 0x27b3, 0xffff, 0x28b9, 0x2984, - 0xffff, 0x2a9d, 0x2b7c, 0x2c29, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 328C0 - 328FF - 0x2dec, 0xffff, 0xffff, 0x2f3a, 0x302d, 0xffff, 0xffff, 0x31a3, - 0x328c, 0x332d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3591, 0x362f, 0x36d0, 0x3764, 0xffff, 0xffff, 0xffff, 0x3888, - 0xffff, 0x3981, 0xffff, 0xffff, 0x3ae8, 0xffff, 0x3c70, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3de9, 0xffff, 0x3f0a, 0x4018, 0x40ed, - 0x4183, 0xffff, 0xffff, 0xffff, 0x42d7, 0x43a2, 0x4466, 0xffff, - 0xffff, 0x45db, 0x46d7, 0x479a, 0x484a, 0xffff, 0xffff, 0x495a, - 0x49f1, 0x4a9d, 0xffff, 0x4be1, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 32900 - 3293F - 0xffff, 0x4d9a, 0xffff, 0x4e3e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x502f, 0xffff, 0xffff, 0x512e, 0xffff, - 0x521b, 0xffff, 0x52fb, 0x53b9, 0x5466, 0xffff, 0x556f, 0x5646, - 0xffff, 0xffff, 0xffff, 0x57b3, 0x588b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3b8e, 0x0003, 0x0004, - 0x0074, 0x0305, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000d, 0x0005, 0x0013, 0x0000, 0x0000, 0x0000, - 0x005a, 0x0002, 0x0016, 0x0038, 0x0003, 0x001a, 0x0000, 0x0029, - // Entry 32940 - 3297F - 0x000d, 0x0021, 0xffff, 0x03d0, 0x03dd, 0x36ce, 0x0355, 0x03e8, - 0x0367, 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x000d, - 0x0021, 0xffff, 0x03d0, 0x03dd, 0x36ce, 0x0355, 0x03e8, 0x0367, - 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, 0x0003, 0x003c, - 0x0000, 0x004b, 0x000d, 0x0021, 0xffff, 0x03d0, 0x03dd, 0x36ce, - 0x0355, 0x03e8, 0x0367, 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, - 0x03ab, 0x000d, 0x0021, 0xffff, 0x03d0, 0x03dd, 0x36ce, 0x0355, - 0x03e8, 0x0367, 0x03ed, 0x037d, 0x0384, 0x0393, 0x039e, 0x03ab, - // Entry 32980 - 329BF - 0x0003, 0x0069, 0x0000, 0x005e, 0x0002, 0x0061, 0x0065, 0x0002, - 0x004b, 0x0000, 0x0031, 0x0002, 0x004b, 0x0012, 0x0043, 0x0002, - 0x006c, 0x0070, 0x0002, 0x004b, 0x0050, 0x005d, 0x0002, 0x004b, - 0x0056, 0x0061, 0x0040, 0x00b5, 0x0000, 0x0000, 0x00ba, 0x00cf, - 0x00df, 0x00ef, 0x00ff, 0x010f, 0x011f, 0x0134, 0x0144, 0x0154, - 0x0169, 0x0179, 0x0000, 0x0000, 0x0000, 0x0189, 0x019e, 0x01ae, - 0x0000, 0x0000, 0x0000, 0x01be, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x01c3, 0x01cb, 0x01d3, 0x01db, 0x01e3, 0x01eb, 0x01f3, - // Entry 329C0 - 329FF - 0x01fb, 0x0203, 0x020b, 0x0213, 0x021b, 0x0223, 0x022b, 0x0233, - 0x023b, 0x0243, 0x024b, 0x0253, 0x025b, 0x0263, 0x0000, 0x026b, - 0x0000, 0x0270, 0x0280, 0x0290, 0x02a0, 0x02b0, 0x02c0, 0x02d0, - 0x02e0, 0x02f0, 0x0300, 0x0001, 0x00b7, 0x0001, 0x004b, 0x0064, - 0x0003, 0x00be, 0x00c1, 0x00c6, 0x0001, 0x0021, 0x0765, 0x0003, - 0x004b, 0x006f, 0x007c, 0x0087, 0x0002, 0x00c9, 0x00cc, 0x0001, - 0x004b, 0x0097, 0x0001, 0x0021, 0x07ad, 0x0003, 0x00d3, 0x0000, - 0x00d6, 0x0001, 0x0021, 0x0765, 0x0002, 0x00d9, 0x00dc, 0x0001, - // Entry 32A00 - 32A3F - 0x004b, 0x0097, 0x0001, 0x0021, 0x07ad, 0x0003, 0x00e3, 0x0000, - 0x00e6, 0x0001, 0x0021, 0x0765, 0x0002, 0x00e9, 0x00ec, 0x0001, - 0x004b, 0x0097, 0x0001, 0x0021, 0x07ad, 0x0003, 0x00f3, 0x0000, - 0x00f6, 0x0001, 0x004b, 0x00a9, 0x0002, 0x00f9, 0x00fc, 0x0001, - 0x004b, 0x00b0, 0x0001, 0x004b, 0x00c2, 0x0003, 0x0103, 0x0000, - 0x0106, 0x0001, 0x004b, 0x00a9, 0x0002, 0x0109, 0x010c, 0x0001, - 0x004b, 0x00b0, 0x0001, 0x004b, 0x00c2, 0x0003, 0x0113, 0x0000, - 0x0116, 0x0001, 0x004b, 0x00a9, 0x0002, 0x0119, 0x011c, 0x0001, - // Entry 32A40 - 32A7F - 0x004b, 0x00b0, 0x0001, 0x004b, 0x00c2, 0x0003, 0x0123, 0x0126, - 0x012b, 0x0001, 0x0021, 0x0860, 0x0003, 0x004b, 0x00d4, 0x00e2, - 0x00f0, 0x0002, 0x012e, 0x0131, 0x0001, 0x004b, 0x0100, 0x0001, - 0x0021, 0x08ab, 0x0003, 0x0138, 0x0000, 0x013b, 0x0001, 0x0021, - 0x0860, 0x0002, 0x013e, 0x0141, 0x0001, 0x004b, 0x0100, 0x0001, - 0x0021, 0x08ab, 0x0003, 0x0148, 0x0000, 0x014b, 0x0001, 0x0021, - 0x0860, 0x0002, 0x014e, 0x0151, 0x0001, 0x004b, 0x0100, 0x0001, - 0x0021, 0x08ab, 0x0003, 0x0158, 0x015b, 0x0160, 0x0001, 0x0021, - // Entry 32A80 - 32ABF - 0x08cb, 0x0003, 0x004b, 0x0112, 0x0124, 0x0134, 0x0002, 0x0163, - 0x0166, 0x0001, 0x004b, 0x0146, 0x0001, 0x0021, 0x0924, 0x0003, - 0x016d, 0x0000, 0x0170, 0x0001, 0x0021, 0x08cb, 0x0002, 0x0173, - 0x0176, 0x0001, 0x004b, 0x0146, 0x0001, 0x0021, 0x0924, 0x0003, - 0x017d, 0x0000, 0x0180, 0x0001, 0x0021, 0x08cb, 0x0002, 0x0183, - 0x0186, 0x0001, 0x004b, 0x0146, 0x0001, 0x0021, 0x0924, 0x0003, - 0x018d, 0x0190, 0x0195, 0x0001, 0x0021, 0x0947, 0x0003, 0x0021, - 0x095b, 0x36d7, 0x36e4, 0x0002, 0x0198, 0x019b, 0x0001, 0x004b, - // Entry 32AC0 - 32AFF - 0x015a, 0x0001, 0x0021, 0x099c, 0x0003, 0x01a2, 0x0000, 0x01a5, - 0x0001, 0x0021, 0x0947, 0x0002, 0x01a8, 0x01ab, 0x0001, 0x004b, - 0x015a, 0x0001, 0x0021, 0x099c, 0x0003, 0x01b2, 0x0000, 0x01b5, - 0x0001, 0x0021, 0x0947, 0x0002, 0x01b8, 0x01bb, 0x0001, 0x004b, - 0x015a, 0x0001, 0x0021, 0x099c, 0x0001, 0x01c0, 0x0001, 0x004b, - 0x016c, 0x0002, 0x0000, 0x01c6, 0x0003, 0x004b, 0x0183, 0x0199, - 0x01ad, 0x0002, 0x0000, 0x01ce, 0x0003, 0x004b, 0x01c3, 0x0199, - 0x01d7, 0x0002, 0x0000, 0x01d6, 0x0003, 0x004b, 0x0183, 0x0199, - // Entry 32B00 - 32B3F - 0x01ad, 0x0002, 0x0000, 0x01de, 0x0003, 0x004b, 0x01eb, 0x0201, - 0x0215, 0x0002, 0x0000, 0x01e6, 0x0003, 0x004b, 0x01eb, 0x0201, - 0x0215, 0x0002, 0x0000, 0x01ee, 0x0003, 0x004b, 0x01eb, 0x0201, - 0x0215, 0x0002, 0x0000, 0x01f6, 0x0003, 0x004b, 0x022b, 0x0244, - 0x025b, 0x0002, 0x0000, 0x01fe, 0x0003, 0x004b, 0x022b, 0x0244, - 0x025b, 0x0002, 0x0000, 0x0206, 0x0003, 0x004b, 0x022b, 0x0244, - 0x025b, 0x0002, 0x0000, 0x020e, 0x0003, 0x004b, 0x0274, 0x028c, - 0x02a2, 0x0002, 0x0000, 0x0216, 0x0003, 0x004b, 0x0274, 0x028c, - // Entry 32B40 - 32B7F - 0x02a2, 0x0002, 0x0000, 0x021e, 0x0003, 0x004b, 0x0274, 0x028c, - 0x02a2, 0x0002, 0x0000, 0x0226, 0x0003, 0x004b, 0x02ba, 0x02d2, - 0x02e8, 0x0002, 0x0000, 0x022e, 0x0003, 0x004b, 0x02ba, 0x02d2, - 0x02e8, 0x0002, 0x0000, 0x0236, 0x0003, 0x004b, 0x02ba, 0x02d2, - 0x02e8, 0x0002, 0x0000, 0x023e, 0x0003, 0x004b, 0x0300, 0x0312, - 0x0322, 0x0002, 0x0000, 0x0246, 0x0003, 0x004b, 0x0300, 0x0312, - 0x0322, 0x0002, 0x0000, 0x024e, 0x0003, 0x004b, 0x0300, 0x0312, - 0x0322, 0x0002, 0x0000, 0x0256, 0x0003, 0x004b, 0x0334, 0x0346, - // Entry 32B80 - 32BBF - 0x0356, 0x0002, 0x0000, 0x025e, 0x0003, 0x004b, 0x0334, 0x0346, - 0x0356, 0x0002, 0x0000, 0x0266, 0x0003, 0x004b, 0x0334, 0x0346, - 0x0356, 0x0001, 0x026d, 0x0001, 0x004b, 0x0368, 0x0003, 0x0274, - 0x0000, 0x0277, 0x0001, 0x004b, 0x037a, 0x0002, 0x027a, 0x027d, - 0x0001, 0x004b, 0x0385, 0x0001, 0x004b, 0x039b, 0x0003, 0x0284, - 0x0000, 0x0287, 0x0001, 0x0021, 0x0d3f, 0x0002, 0x028a, 0x028d, - 0x0001, 0x004b, 0x03b1, 0x0001, 0x0021, 0x0d6e, 0x0003, 0x0294, - 0x0000, 0x0297, 0x0001, 0x0021, 0x0d3f, 0x0002, 0x029a, 0x029d, - // Entry 32BC0 - 32BFF - 0x0001, 0x004b, 0x03b1, 0x0001, 0x0021, 0x0d6e, 0x0003, 0x02a4, - 0x0000, 0x02a7, 0x0001, 0x0021, 0x0d82, 0x0002, 0x02aa, 0x02ad, - 0x0001, 0x004b, 0x03c5, 0x0001, 0x004b, 0x03db, 0x0003, 0x02b4, - 0x0000, 0x02b7, 0x0001, 0x004b, 0x03ef, 0x0002, 0x02ba, 0x02bd, - 0x0001, 0x004b, 0x03f8, 0x0001, 0x004b, 0x03db, 0x0003, 0x02c4, - 0x0000, 0x02c7, 0x0001, 0x004b, 0x03ef, 0x0002, 0x02ca, 0x02cd, - 0x0001, 0x004b, 0x03f8, 0x0001, 0x004b, 0x03db, 0x0003, 0x02d4, - 0x0000, 0x02d7, 0x0001, 0x0021, 0x0dcd, 0x0002, 0x02da, 0x02dd, - // Entry 32C00 - 32C3F - 0x0001, 0x004b, 0x040c, 0x0001, 0x0021, 0x0df9, 0x0003, 0x02e4, - 0x0000, 0x02e7, 0x0001, 0x0021, 0x0dcd, 0x0002, 0x02ea, 0x02ed, - 0x0001, 0x004b, 0x040c, 0x0001, 0x0021, 0x0df9, 0x0003, 0x02f4, - 0x0000, 0x02f7, 0x0001, 0x0021, 0x0dcd, 0x0002, 0x02fa, 0x02fd, - 0x0001, 0x004b, 0x040c, 0x0001, 0x0021, 0x0df9, 0x0001, 0x0302, - 0x0001, 0x004b, 0x0422, 0x0004, 0x030a, 0x030f, 0x0000, 0x0000, - 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3890, 0x0003, 0x0000, 0x1de0, - 0x3894, 0x389d, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, - // Entry 32C40 - 32C7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, - 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, - 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, - 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x236e, 0x2246, 0x2429, - 0x224e, 0x22d4, 0x2112, 0x22dc, 0x211a, 0x22e0, 0x0662, 0x000d, - // Entry 32C80 - 32CBF - 0x004b, 0xffff, 0x0438, 0x0441, 0x044f, 0x045d, 0x046b, 0x0477, - 0x0481, 0x048c, 0x049f, 0x04b4, 0x04c3, 0x04cf, 0x0002, 0x0000, - 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, - 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, - 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, - 0x0040, 0x02d8, 0x25d6, 0x25d9, 0x25dc, 0x25df, 0x25e2, 0x25e5, - 0x0007, 0x004b, 0x04df, 0x04eb, 0x04f7, 0x0504, 0x0511, 0x0520, - 0x052d, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x298e, 0x297a, - // Entry 32CC0 - 32CFF - 0x214e, 0x2159, 0x297c, 0x298c, 0x2980, 0x0001, 0x008d, 0x0003, - 0x0091, 0x0000, 0x0098, 0x0005, 0x004b, 0xffff, 0x053b, 0x053f, - 0x0543, 0x0547, 0x0005, 0x004b, 0xffff, 0x054b, 0x0558, 0x0567, - 0x0576, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, - 0x00a8, 0x00ab, 0x0001, 0x004b, 0x0585, 0x0001, 0x004b, 0x058e, - 0x0002, 0x00b1, 0x00b4, 0x0001, 0x004b, 0x0585, 0x0001, 0x004b, - 0x058e, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, - 0x004b, 0x0595, 0x05a4, 0x0001, 0x00c3, 0x0002, 0x0009, 0x0078, - // Entry 32D00 - 32D3F - 0x5463, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, - 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, - 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, - 0x0001, 0x0002, 0x0478, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, - 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x0000, 0x0000, - // Entry 32D40 - 32D7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, - 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, 0x0001, 0x004b, - 0x05b6, 0x0001, 0x0131, 0x0001, 0x004b, 0x05c1, 0x0001, 0x0136, - 0x0001, 0x004b, 0x05c7, 0x0001, 0x013b, 0x0001, 0x004b, 0x05cf, - 0x0002, 0x0141, 0x0144, 0x0001, 0x004b, 0x05d6, 0x0003, 0x0000, - // Entry 32D80 - 32DBF - 0x1b2f, 0x38a6, 0x1b3f, 0x0001, 0x014b, 0x0001, 0x004b, 0x05dc, - 0x0001, 0x0150, 0x0001, 0x004b, 0x05e9, 0x0001, 0x0155, 0x0001, - 0x004b, 0x05f6, 0x0001, 0x015a, 0x0001, 0x004b, 0x05fb, 0x0001, - 0x015f, 0x0001, 0x004b, 0x0600, 0x0001, 0x0164, 0x0001, 0x004b, - 0x0608, 0x0003, 0x0004, 0x0890, 0x0c91, 0x0012, 0x0017, 0x0027, - 0x010b, 0x0000, 0x0195, 0x021f, 0x0238, 0x0263, 0x0490, 0x050b, - 0x058c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0601, 0x07fe, 0x087f, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, - // Entry 32DC0 - 32DFF - 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, 0x0000, 0x0000, - 0x000a, 0x0032, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e9, 0x0000, - 0x00fa, 0x005a, 0x006e, 0x0002, 0x0035, 0x0048, 0x0003, 0x0000, - 0x0000, 0x0039, 0x000d, 0x0000, 0xffff, 0x0003, 0x0007, 0x000b, - 0x000f, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x0027, 0x002b, - 0x002f, 0x0002, 0x0000, 0x004b, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x0003, 0x005e, 0x0069, 0x0063, 0x0003, - // Entry 32E00 - 32E3F - 0x0000, 0x004e, 0x0055, 0x004e, 0x0004, 0x0000, 0xffff, 0xffff, - 0xffff, 0x004e, 0x0003, 0x0000, 0x004e, 0x0055, 0x004e, 0x0005, - 0x0074, 0x0000, 0x0000, 0x0087, 0x00a6, 0x0001, 0x0076, 0x0001, - 0x0078, 0x000d, 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, - 0x006a, 0x2a54, 0x25d6, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, - 0x0001, 0x0089, 0x0001, 0x008b, 0x0019, 0x004b, 0xffff, 0x0616, - 0x0620, 0x0629, 0x063a, 0x0648, 0x0656, 0x065f, 0x066b, 0x0676, - 0x0681, 0x068f, 0x069b, 0x06a6, 0x06b1, 0x06bc, 0x06c6, 0x06d5, - // Entry 32E40 - 32E7F - 0x06de, 0x06ec, 0x06f8, 0x0702, 0x070b, 0x0719, 0x0725, 0x0001, - 0x00a8, 0x0001, 0x00aa, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, - 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, - 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, - 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, - 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, - 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, - 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, - // Entry 32E80 - 32EBF - 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, - 0x0389, 0x0390, 0x0004, 0x00f7, 0x00f1, 0x00ee, 0x00f4, 0x0001, - 0x004b, 0x0730, 0x0001, 0x004b, 0x0742, 0x0001, 0x004b, 0x074f, - 0x0001, 0x004b, 0x0758, 0x0004, 0x0108, 0x0102, 0x00ff, 0x0105, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0114, 0x0000, 0x0000, - 0x0000, 0x017f, 0x0000, 0x0000, 0x9006, 0x0002, 0x0117, 0x014b, - 0x0003, 0x011b, 0x012b, 0x013b, 0x000e, 0x0025, 0xffff, 0x00e8, - // Entry 32EC0 - 32EFF - 0x3839, 0x383e, 0x3844, 0x384a, 0x384f, 0x3856, 0x385f, 0x016f, - 0x3869, 0x386f, 0x3874, 0x387a, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0025, 0xffff, 0x00e8, - 0x3839, 0x383e, 0x3844, 0x384a, 0x384f, 0x3856, 0x385f, 0x016f, - 0x3869, 0x386f, 0x3874, 0x387a, 0x0003, 0x014f, 0x015f, 0x016f, - 0x000e, 0x0025, 0xffff, 0x00e8, 0x3839, 0x383e, 0x3844, 0x384a, - 0x384f, 0x3856, 0x385f, 0x016f, 0x3869, 0x386f, 0x3874, 0x387a, - // Entry 32F00 - 32F3F - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, - 0x000e, 0x0025, 0xffff, 0x00e8, 0x3839, 0x383e, 0x3844, 0x384a, - 0x384f, 0x3856, 0x385f, 0x016f, 0x3869, 0x386f, 0x3874, 0x387a, - 0x0003, 0x0189, 0x018f, 0x0183, 0x0001, 0x0185, 0x0002, 0x004b, - 0x075e, 0x076b, 0x0001, 0x018b, 0x0002, 0x004b, 0x0778, 0x0780, - 0x0001, 0x0191, 0x0002, 0x004b, 0x0788, 0x078c, 0x0008, 0x019e, - 0x0000, 0x0000, 0x0000, 0x0209, 0x0000, 0x0000, 0x9006, 0x0002, - // Entry 32F40 - 32F7F - 0x01a1, 0x01d5, 0x0003, 0x01a5, 0x01b5, 0x01c5, 0x000e, 0x004b, - 0xffff, 0x0790, 0x0799, 0x07a0, 0x07a6, 0x07ad, 0x07b1, 0x07b9, - 0x07c1, 0x07c8, 0x07cf, 0x07d4, 0x07da, 0x07e2, 0x000e, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x004b, - 0xffff, 0x0790, 0x0799, 0x07a0, 0x07a6, 0x07ad, 0x07b1, 0x07b9, - 0x07c1, 0x07c8, 0x07cf, 0x07d4, 0x07da, 0x07e2, 0x0003, 0x01d9, - 0x01e9, 0x01f9, 0x000e, 0x004b, 0xffff, 0x0790, 0x0799, 0x07a0, - // Entry 32F80 - 32FBF - 0x07a6, 0x07ad, 0x07b1, 0x07b9, 0x07c1, 0x07c8, 0x07cf, 0x07d4, - 0x07da, 0x07e2, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x0422, 0x000e, 0x004b, 0xffff, 0x0790, 0x0799, 0x07a0, - 0x07a6, 0x07ad, 0x07b1, 0x07b9, 0x07c1, 0x07c8, 0x07cf, 0x07d4, - 0x07da, 0x07e2, 0x0003, 0x0213, 0x0219, 0x020d, 0x0001, 0x020f, - 0x0002, 0x004b, 0x075e, 0x076b, 0x0001, 0x0215, 0x0002, 0x004b, - 0x0778, 0x0780, 0x0001, 0x021b, 0x0002, 0x004b, 0x0788, 0x078c, - // Entry 32FC0 - 32FFF - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0225, 0x0003, 0x022e, - 0x0233, 0x0229, 0x0001, 0x022b, 0x0001, 0x004b, 0x075e, 0x0001, - 0x0230, 0x0001, 0x004b, 0x0778, 0x0001, 0x0235, 0x0001, 0x004b, - 0x0788, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0241, - 0x0000, 0x0252, 0x0004, 0x024f, 0x0249, 0x0246, 0x024c, 0x0001, - 0x0013, 0x0466, 0x0001, 0x0013, 0x0477, 0x0001, 0x0015, 0x0000, - 0x0001, 0x0008, 0x0627, 0x0004, 0x0260, 0x025a, 0x0257, 0x025d, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry 33000 - 3303F - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x026c, 0x02d1, 0x0328, - 0x035d, 0x0434, 0x0459, 0x046a, 0x047f, 0x0002, 0x026f, 0x02a0, - 0x0003, 0x0273, 0x0282, 0x0291, 0x000d, 0x0015, 0xffff, 0x000b, - 0x23dd, 0x241d, 0x2439, 0x243e, 0x2383, 0x2388, 0x2442, 0x238d, - 0x2447, 0x244c, 0x2397, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, - 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, - 0x297e, 0x297c, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, 0x32c8, - 0x009d, 0x32cd, 0x32d1, 0x32d6, 0x3201, 0x32db, 0x315b, 0x32e5, - // Entry 33040 - 3307F - 0x32ee, 0x0003, 0x02a4, 0x02b3, 0x02c2, 0x000d, 0x000d, 0xffff, - 0x0059, 0x32b8, 0x32f7, 0x32c0, 0x32cd, 0x3230, 0x3234, 0x3238, - 0x32fb, 0x32ff, 0x3303, 0x3307, 0x000d, 0x0000, 0xffff, 0x2483, - 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, - 0x2990, 0x297e, 0x297c, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, - 0x32c8, 0x009d, 0x32cd, 0x32d1, 0x32d6, 0x3201, 0x32db, 0x315b, - 0x32e5, 0x32ee, 0x0002, 0x02d4, 0x02fe, 0x0005, 0x02da, 0x02e3, - 0x02f5, 0x0000, 0x02ec, 0x0007, 0x0015, 0x004a, 0x0050, 0x0055, - // Entry 33080 - 330BF - 0x005a, 0x005f, 0x0064, 0x0069, 0x0007, 0x0000, 0x298e, 0x297a, - 0x38ae, 0x2990, 0x38ae, 0x298c, 0x2994, 0x0007, 0x004b, 0x07ea, - 0x07ef, 0x07f3, 0x07f7, 0x07fb, 0x07ff, 0x0803, 0x0007, 0x0015, - 0x0086, 0x008e, 0x0095, 0x009d, 0x00a4, 0x00ac, 0x00b3, 0x0005, - 0x0304, 0x030d, 0x031f, 0x0000, 0x0316, 0x0007, 0x0015, 0x004a, - 0x0050, 0x0055, 0x005a, 0x005f, 0x0064, 0x0069, 0x0007, 0x0000, - 0x298e, 0x297a, 0x38ae, 0x2990, 0x38ae, 0x298c, 0x2994, 0x0007, - 0x004b, 0x07ea, 0x07ef, 0x07f3, 0x07f7, 0x07fb, 0x07ff, 0x0803, - // Entry 330C0 - 330FF - 0x0007, 0x0015, 0x0086, 0x008e, 0x0095, 0x009d, 0x00a4, 0x00ac, - 0x00b3, 0x0002, 0x032b, 0x0344, 0x0003, 0x032f, 0x0336, 0x033d, - 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, - 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0015, - 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0003, 0x0348, 0x034f, - 0x0356, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, - 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, - 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, 0x0002, 0x0360, - // Entry 33100 - 3313F - 0x03ca, 0x0003, 0x0364, 0x0386, 0x03a8, 0x0009, 0x0371, 0x0374, - 0x036e, 0x0377, 0x037d, 0x0380, 0x0383, 0x0000, 0x037a, 0x0001, - 0x004b, 0x0808, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, - 0x0001, 0x0033, 0x04b6, 0x0001, 0x004b, 0x080e, 0x0001, 0x004b, - 0x0814, 0x0001, 0x004b, 0x081c, 0x0001, 0x004b, 0x0822, 0x0009, - 0x0393, 0x0396, 0x0390, 0x0399, 0x039f, 0x03a2, 0x03a5, 0x0000, - 0x039c, 0x0001, 0x0033, 0x047c, 0x0001, 0x0000, 0x1f9c, 0x0001, - 0x0000, 0x21ec, 0x0001, 0x004b, 0x0827, 0x0001, 0x004b, 0x082b, - // Entry 33140 - 3317F - 0x0001, 0x004b, 0x082f, 0x0001, 0x000d, 0x043e, 0x0001, 0x004b, - 0x0833, 0x0009, 0x03b5, 0x03b8, 0x03b2, 0x03bb, 0x03c1, 0x03c4, - 0x03c7, 0x0000, 0x03be, 0x0001, 0x004b, 0x0837, 0x0001, 0x001c, - 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x004b, 0x083f, 0x0001, - 0x004b, 0x0848, 0x0001, 0x004b, 0x0854, 0x0001, 0x004b, 0x0862, - 0x0001, 0x004b, 0x086a, 0x0003, 0x03ce, 0x03f0, 0x0412, 0x0009, - 0x03db, 0x03de, 0x03d8, 0x03e1, 0x03e7, 0x03ea, 0x03ed, 0x0000, - 0x03e4, 0x0001, 0x004b, 0x0808, 0x0001, 0x001c, 0x0494, 0x0001, - // Entry 33180 - 331BF - 0x001c, 0x0499, 0x0001, 0x0033, 0x04b6, 0x0001, 0x004b, 0x080e, - 0x0001, 0x004b, 0x0814, 0x0001, 0x004b, 0x081c, 0x0001, 0x004b, - 0x0822, 0x0009, 0x03fd, 0x0400, 0x03fa, 0x0403, 0x0409, 0x040c, - 0x040f, 0x0000, 0x0406, 0x0001, 0x0033, 0x047c, 0x0001, 0x001c, - 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x004b, 0x0827, 0x0001, - 0x004b, 0x082b, 0x0001, 0x004b, 0x082f, 0x0001, 0x000d, 0x043e, - 0x0001, 0x004b, 0x0833, 0x0009, 0x041f, 0x0422, 0x041c, 0x0425, - 0x042b, 0x042e, 0x0431, 0x0000, 0x0428, 0x0001, 0x004b, 0x0837, - // Entry 331C0 - 331FF - 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x0026, - 0x17df, 0x0001, 0x0015, 0x0174, 0x0001, 0x004b, 0x0871, 0x0001, - 0x004b, 0x081c, 0x0001, 0x004b, 0x0822, 0x0003, 0x0443, 0x044e, - 0x0438, 0x0002, 0x043b, 0x043f, 0x0002, 0x004b, 0x087d, 0x08a0, - 0x0002, 0x004b, 0x088a, 0x08ae, 0x0002, 0x0446, 0x044a, 0x0002, - 0x0015, 0x0194, 0x01b8, 0x0002, 0x004b, 0x08c5, 0x08ca, 0x0002, - 0x0451, 0x0455, 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x004b, - 0x08c5, 0x08cf, 0x0004, 0x0467, 0x0461, 0x045e, 0x0464, 0x0001, - // Entry 33200 - 3323F - 0x0013, 0x06a2, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, - 0x0001, 0x0016, 0x0470, 0x0004, 0x047b, 0x0473, 0x046f, 0x0477, - 0x0002, 0x0000, 0x0524, 0x38b0, 0x0002, 0x0000, 0x0532, 0x38be, - 0x0002, 0x0000, 0x053d, 0x38c9, 0x0002, 0x0000, 0x0546, 0x38d2, - 0x0004, 0x048d, 0x0487, 0x0484, 0x048a, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0015, 0x0238, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0008, 0x0499, 0x0000, 0x0000, 0x0000, 0x0504, 0x0000, - 0x0000, 0x9006, 0x0002, 0x049c, 0x04d0, 0x0003, 0x04a0, 0x04b0, - // Entry 33240 - 3327F - 0x04c0, 0x000e, 0x004b, 0x0902, 0x08d3, 0x08da, 0x08e2, 0x08e9, - 0x08ef, 0x08f6, 0x08fd, 0x090a, 0x0910, 0x0915, 0x091b, 0x0921, - 0x0924, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x0422, 0x000e, 0x004b, 0x0902, 0x08d3, 0x08da, 0x08e2, 0x08e9, - 0x08ef, 0x08f6, 0x08fd, 0x090a, 0x0910, 0x0915, 0x091b, 0x0921, - 0x0924, 0x0003, 0x04d4, 0x04e4, 0x04f4, 0x000e, 0x004b, 0x0902, - 0x08d3, 0x08da, 0x08e2, 0x08e9, 0x08ef, 0x08f6, 0x08fd, 0x090a, - // Entry 33280 - 332BF - 0x0910, 0x0915, 0x091b, 0x0921, 0x0924, 0x000e, 0x0000, 0x003f, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x004b, 0x0902, - 0x08d3, 0x08da, 0x08e2, 0x08e9, 0x08ef, 0x08f6, 0x08fd, 0x090a, - 0x0910, 0x0915, 0x091b, 0x0921, 0x0924, 0x0001, 0x0506, 0x0001, - 0x0508, 0x0001, 0x0000, 0x04ef, 0x0008, 0x0514, 0x0000, 0x0000, - 0x0000, 0x0579, 0x0000, 0x0000, 0x9006, 0x0002, 0x0517, 0x0548, - 0x0003, 0x051b, 0x052a, 0x0539, 0x000d, 0x0025, 0xffff, 0x0557, - // Entry 332C0 - 332FF - 0x3880, 0x3889, 0x3892, 0x3899, 0x38a1, 0x38a8, 0x38af, 0x38b7, - 0x38c2, 0x38c8, 0x38ce, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, - 0x3871, 0x3874, 0x000d, 0x0025, 0xffff, 0x0557, 0x3880, 0x3889, - 0x3892, 0x3899, 0x38a1, 0x38a8, 0x38af, 0x38b7, 0x38c2, 0x38c8, - 0x38ce, 0x0003, 0x054c, 0x055b, 0x056a, 0x000d, 0x0025, 0xffff, - 0x0557, 0x3880, 0x3889, 0x3892, 0x3899, 0x38a1, 0x38a8, 0x38af, - 0x38b7, 0x38c2, 0x38c8, 0x38ce, 0x000d, 0x0000, 0xffff, 0x0033, - // Entry 33300 - 3333F - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x000d, 0x0025, 0xffff, 0x0557, 0x3880, - 0x3889, 0x3892, 0x3899, 0x38a1, 0x38a8, 0x38af, 0x38b7, 0x38c2, - 0x38c8, 0x38ce, 0x0003, 0x0582, 0x0587, 0x057d, 0x0001, 0x057f, - 0x0001, 0x004b, 0x0929, 0x0001, 0x0584, 0x0001, 0x004b, 0x0929, - 0x0001, 0x0589, 0x0001, 0x004b, 0x0929, 0x0008, 0x0595, 0x0000, - 0x0000, 0x0000, 0x05fa, 0x0000, 0x0000, 0x9006, 0x0002, 0x0598, - 0x05c9, 0x0003, 0x059c, 0x05ab, 0x05ba, 0x000d, 0x000d, 0xffff, - // Entry 33340 - 3337F - 0x021e, 0x330b, 0x3310, 0x3317, 0x331f, 0x3326, 0x332e, 0x3333, - 0x3338, 0x333d, 0x3343, 0x334d, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x000d, 0x0022, 0xffff, 0x089e, 0x2ff5, - 0x2ffb, 0x3004, 0x300e, 0x3017, 0x3021, 0x3027, 0x3030, 0x3038, - 0x3040, 0x304f, 0x0003, 0x05cd, 0x05dc, 0x05eb, 0x000d, 0x000d, - 0xffff, 0x021e, 0x330b, 0x3310, 0x3317, 0x331f, 0x3326, 0x332e, - 0x3333, 0x3338, 0x333d, 0x3343, 0x3357, 0x000d, 0x0000, 0xffff, - // Entry 33380 - 333BF - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0022, 0xffff, 0x089e, - 0x2ff5, 0x2ffb, 0x3004, 0x300e, 0x3017, 0x3021, 0x3027, 0x3030, - 0x3038, 0x3040, 0x304f, 0x0001, 0x05fc, 0x0001, 0x05fe, 0x0001, - 0x0000, 0x06c8, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x060a, - 0x07ed, 0x0000, 0x9006, 0x0002, 0x060d, 0x06fd, 0x0001, 0x060f, - 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, - 0x073e, 0x0750, 0x0762, 0x0775, 0x0787, 0x2074, 0x208d, 0x20a7, - // Entry 333C0 - 333FF - 0x20bf, 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, 0x086a, 0x087d, - 0x0891, 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, 0x0900, 0x0914, - 0x0926, 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, 0x0999, 0x09ae, - 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, 0x0a33, 0x0a46, - 0x0a58, 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, - 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, - 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x0c23, 0x0c37, - 0x0c4c, 0x0c60, 0x0c74, 0x0c89, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, - // Entry 33400 - 3343F - 0x210f, 0x0d07, 0x0d1c, 0x0d33, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, - 0x0d9c, 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, 0x0e19, 0x0e2e, - 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, 0x0ec1, 0x0ed4, - 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, 0x0f64, 0x0f7a, - 0x0f8f, 0x0fa4, 0x0fba, 0x0fd1, 0x0fe6, 0x0ffd, 0x1012, 0x1028, - 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, 0x10a2, 0x10b8, 0x10cf, - 0x10e3, 0x10fa, 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, - 0x118d, 0x11a3, 0x11ba, 0x11d0, 0x11e7, 0x11fb, 0x120f, 0x1224, - // Entry 33440 - 3347F - 0x1238, 0x124d, 0x1262, 0x1276, 0x128b, 0x12a0, 0x12b5, 0x12ca, - 0x12df, 0x12f3, 0x1308, 0x131f, 0x1335, 0x134b, 0x1360, 0x1374, - 0x1388, 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, - 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, - 0x14de, 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, - 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, - 0x1638, 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x16cc, - 0x16e0, 0x16f7, 0x170c, 0x1720, 0x1734, 0x174a, 0x175e, 0x1773, - // Entry 33480 - 334BF - 0x1787, 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, - 0x1832, 0x1847, 0x185e, 0x1874, 0x1888, 0x189e, 0x18b3, 0x18c8, - 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, 0x1956, 0x196d, - 0x1983, 0x1997, 0x2915, 0x291b, 0x2923, 0x292a, 0x0001, 0x06ff, - 0x00ec, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 334C0 - 334FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 33500 - 3353F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 33540 - 3357F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 33580 - 335BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x297a, 0x38ae, 0x298e, 0x38d8, 0x0004, 0x07fb, - 0x07f5, 0x07f2, 0x07f8, 0x0001, 0x0013, 0x0466, 0x0001, 0x0013, - 0x0477, 0x0001, 0x0015, 0x0000, 0x0001, 0x004b, 0x092e, 0x0008, - 0x0807, 0x0000, 0x0000, 0x0000, 0x086c, 0x0000, 0x0000, 0x9006, - 0x0002, 0x080a, 0x083b, 0x0003, 0x080e, 0x081d, 0x082c, 0x000d, - 0x004b, 0xffff, 0x0936, 0x0940, 0x094c, 0x0954, 0x0958, 0x095f, - 0x0969, 0x096e, 0x0973, 0x0978, 0x097c, 0x0983, 0x000d, 0x0000, - // Entry 335C0 - 335FF - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x004b, 0xffff, - 0x0936, 0x0940, 0x094c, 0x0954, 0x0958, 0x095f, 0x0969, 0x096e, - 0x0973, 0x0978, 0x097c, 0x0983, 0x0003, 0x083f, 0x084e, 0x085d, - 0x000d, 0x004b, 0xffff, 0x0936, 0x0940, 0x094c, 0x0954, 0x0958, - 0x095f, 0x0969, 0x096e, 0x0973, 0x0978, 0x097c, 0x0983, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x004b, - // Entry 33600 - 3363F - 0xffff, 0x0936, 0x0940, 0x094c, 0x0954, 0x0958, 0x095f, 0x0969, - 0x096e, 0x0973, 0x0978, 0x097c, 0x0983, 0x0003, 0x0875, 0x087a, - 0x0870, 0x0001, 0x0872, 0x0001, 0x0000, 0x1a1d, 0x0001, 0x0877, - 0x0001, 0x0000, 0x1a1d, 0x0001, 0x087c, 0x0001, 0x0000, 0x1a1d, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0888, 0x0000, 0x0000, - 0x9006, 0x0001, 0x088a, 0x0001, 0x088c, 0x0002, 0x0000, 0x1a20, - 0x2a4a, 0x0040, 0x08d1, 0x0000, 0x0000, 0x08d6, 0x08ed, 0x08ff, - 0x0911, 0x0928, 0x093f, 0x0956, 0x096d, 0x0984, 0x099b, 0x09b6, - // Entry 33640 - 3367F - 0x09d1, 0x0000, 0x0000, 0x0000, 0x09ec, 0x0a05, 0x0a1e, 0x0000, - 0x0000, 0x0000, 0x0a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0a35, 0x0a49, 0x0a5d, 0x0a71, 0x0a85, 0x0a99, 0x0aad, 0x0ac1, - 0x0ad5, 0x0ae9, 0x0afd, 0x0b11, 0x0b25, 0x0b39, 0x0b4d, 0x0b61, - 0x0b75, 0x0b89, 0x0b9d, 0x0bb1, 0x0bc5, 0x0000, 0x0bd9, 0x0000, - 0x0bde, 0x0bf4, 0x0c06, 0x0c18, 0x0c2e, 0x0c40, 0x0c52, 0x0c68, - 0x0c7a, 0x0c8c, 0x0001, 0x08d3, 0x0001, 0x004b, 0x098a, 0x0003, - 0x08da, 0x08dd, 0x08e2, 0x0001, 0x0015, 0x024b, 0x0003, 0x004b, - // Entry 33680 - 336BF - 0x0994, 0x099b, 0x09a1, 0x0002, 0x08e5, 0x08e9, 0x0002, 0x0015, - 0x026b, 0x026b, 0x0002, 0x0015, 0x0276, 0x0276, 0x0003, 0x08f1, - 0x0000, 0x08f4, 0x0001, 0x0015, 0x024b, 0x0002, 0x08f7, 0x08fb, - 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, 0x0015, 0x0276, 0x0276, - 0x0003, 0x0903, 0x0000, 0x0906, 0x0001, 0x0015, 0x024b, 0x0002, - 0x0909, 0x090d, 0x0002, 0x004b, 0x09ab, 0x09ab, 0x0002, 0x004b, - 0x09b4, 0x09b4, 0x0003, 0x0915, 0x0918, 0x091d, 0x0001, 0x000d, - 0x03b7, 0x0003, 0x004b, 0x09bf, 0x09cf, 0x09df, 0x0002, 0x0920, - // Entry 336C0 - 336FF - 0x0924, 0x0002, 0x0015, 0x02c3, 0x02b4, 0x0002, 0x0015, 0x02ea, - 0x02d4, 0x0003, 0x092c, 0x092f, 0x0934, 0x0001, 0x000d, 0x043e, - 0x0003, 0x004b, 0x09ed, 0x09f9, 0x0a03, 0x0002, 0x0937, 0x093b, - 0x0002, 0x004b, 0x0a0d, 0x0a0d, 0x0002, 0x004b, 0x0a18, 0x0a18, - 0x0003, 0x0943, 0x0946, 0x094b, 0x0001, 0x000d, 0x043e, 0x0003, - 0x004b, 0x09ed, 0x09f9, 0x0a03, 0x0002, 0x094e, 0x0952, 0x0002, - 0x002e, 0x156e, 0x156e, 0x0002, 0x004b, 0x0a2a, 0x0a2a, 0x0003, - 0x095a, 0x095d, 0x0962, 0x0001, 0x0015, 0x0349, 0x0003, 0x004b, - // Entry 33700 - 3373F - 0x0a35, 0x0a44, 0x0a53, 0x0002, 0x0965, 0x0969, 0x0002, 0x0015, - 0x0387, 0x0379, 0x0002, 0x0015, 0x03ac, 0x0397, 0x0003, 0x0971, - 0x0974, 0x0979, 0x0001, 0x004b, 0x0a60, 0x0003, 0x004b, 0x0a65, - 0x0a71, 0x0a7b, 0x0002, 0x097c, 0x0980, 0x0002, 0x0015, 0x03e3, - 0x03e3, 0x0002, 0x0015, 0x03fa, 0x03fa, 0x0003, 0x0988, 0x098b, - 0x0990, 0x0001, 0x0001, 0x017d, 0x0003, 0x004b, 0x0a65, 0x0a71, - 0x0a7b, 0x0002, 0x0993, 0x0997, 0x0002, 0x004b, 0x0a85, 0x0a85, - 0x0002, 0x004b, 0x0a8e, 0x0a8e, 0x0004, 0x09a0, 0x09a3, 0x09a8, - // Entry 33740 - 3377F - 0x09b3, 0x0001, 0x004b, 0x0a97, 0x0003, 0x004b, 0x0a9b, 0x0aa7, - 0x0ab2, 0x0002, 0x09ab, 0x09af, 0x0002, 0x004b, 0x0ac7, 0x0abc, - 0x0002, 0x004b, 0x0ae5, 0x0ad3, 0x0001, 0x004b, 0x0af8, 0x0004, - 0x09bb, 0x09be, 0x09c3, 0x09ce, 0x0001, 0x004b, 0x0a97, 0x0003, - 0x004b, 0x0a9b, 0x0aa7, 0x0ab2, 0x0002, 0x09c6, 0x09ca, 0x0002, - 0x004b, 0x0b01, 0x0b01, 0x0002, 0x004b, 0x0b0b, 0x0b0b, 0x0001, - 0x004b, 0x0af8, 0x0004, 0x09d6, 0x09d9, 0x09de, 0x09e9, 0x0001, - 0x0001, 0x071d, 0x0003, 0x004b, 0x0a9b, 0x0aa7, 0x0ab2, 0x0002, - // Entry 33780 - 337BF - 0x09e1, 0x09e5, 0x0002, 0x0028, 0x0c5b, 0x0c5b, 0x0002, 0x0028, - 0x0c63, 0x0c63, 0x0001, 0x004b, 0x0b1c, 0x0003, 0x09f0, 0x09f3, - 0x09fa, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, 0x04a0, - 0x04a6, 0x048e, 0x04af, 0x0002, 0x09fd, 0x0a01, 0x0002, 0x004b, - 0x0b23, 0x0b23, 0x0002, 0x004b, 0x0b30, 0x0b30, 0x0003, 0x0a09, - 0x0a0c, 0x0a13, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, - 0x04a0, 0x04a6, 0x048e, 0x04af, 0x0002, 0x0a16, 0x0a1a, 0x0002, - 0x004b, 0x0b44, 0x0b44, 0x0002, 0x004b, 0x0b4e, 0x0b4e, 0x0003, - // Entry 337C0 - 337FF - 0x0a22, 0x0000, 0x0a25, 0x0001, 0x0029, 0x008f, 0x0002, 0x0a28, - 0x0a2c, 0x0002, 0x004b, 0x0b5f, 0x0b5f, 0x0002, 0x004b, 0x0b67, - 0x0b67, 0x0001, 0x0a32, 0x0001, 0x004b, 0x0b6f, 0x0003, 0x0000, - 0x0a39, 0x0a3e, 0x0003, 0x004b, 0x0b76, 0x0b87, 0x0b9a, 0x0002, - 0x0a41, 0x0a45, 0x0002, 0x0015, 0x2451, 0x0529, 0x0002, 0x0015, - 0x2462, 0x0548, 0x0003, 0x0000, 0x0a4d, 0x0a52, 0x0003, 0x004b, - 0x0bac, 0x0bb7, 0x0bc3, 0x0002, 0x0a55, 0x0a59, 0x0002, 0x004b, - 0x0bcf, 0x0bcf, 0x0002, 0x004b, 0x0bdc, 0x0bdc, 0x0003, 0x0000, - // Entry 33800 - 3383F - 0x0a61, 0x0a66, 0x0003, 0x004b, 0x0bf0, 0x0bfa, 0x0c05, 0x0002, - 0x0a69, 0x0a6d, 0x0002, 0x004b, 0x0c10, 0x0c10, 0x0002, 0x004b, - 0x0c1c, 0x0c1c, 0x0003, 0x0000, 0x0a75, 0x0a7a, 0x0003, 0x004b, - 0x0c2f, 0x0c3f, 0x0c51, 0x0002, 0x0a7d, 0x0a81, 0x0002, 0x0015, - 0x247a, 0x05e1, 0x0002, 0x0015, 0x248a, 0x05fe, 0x0003, 0x0000, - 0x0a89, 0x0a8e, 0x0003, 0x004b, 0x0c62, 0x0c6c, 0x0c77, 0x0002, - 0x0a91, 0x0a95, 0x0002, 0x004b, 0x0c82, 0x0c82, 0x0002, 0x004b, - 0x0c8e, 0x0c8e, 0x0003, 0x0000, 0x0a9d, 0x0aa2, 0x0003, 0x004b, - // Entry 33840 - 3387F - 0x0ca1, 0x0caa, 0x0cb4, 0x0002, 0x0aa5, 0x0aa9, 0x0002, 0x004b, - 0x0cbe, 0x0cbe, 0x0002, 0x004b, 0x0cc9, 0x0cc9, 0x0003, 0x0000, - 0x0ab1, 0x0ab6, 0x0003, 0x004b, 0x0cdb, 0x0cec, 0x0cff, 0x0002, - 0x0ab9, 0x0abd, 0x0002, 0x0015, 0x24a1, 0x0692, 0x0002, 0x0015, - 0x24b2, 0x06b1, 0x0003, 0x0000, 0x0ac5, 0x0aca, 0x0003, 0x004b, - 0x0d11, 0x0d1b, 0x0d26, 0x0002, 0x0acd, 0x0ad1, 0x0002, 0x004b, - 0x0d31, 0x0d31, 0x0002, 0x004b, 0x0d3d, 0x0d3d, 0x0003, 0x0000, - 0x0ad9, 0x0ade, 0x0003, 0x004b, 0x0d50, 0x0d59, 0x0d63, 0x0002, - // Entry 33880 - 338BF - 0x0ae1, 0x0ae5, 0x0002, 0x004b, 0x0d6d, 0x0d6d, 0x0002, 0x004b, - 0x0d78, 0x0d78, 0x0003, 0x0000, 0x0aed, 0x0af2, 0x0003, 0x004b, - 0x0d8a, 0x0d9a, 0x0dac, 0x0002, 0x0af5, 0x0af9, 0x0002, 0x0015, - 0x24ca, 0x0744, 0x0002, 0x0015, 0x24da, 0x0761, 0x0003, 0x0000, - 0x0b01, 0x0b06, 0x0003, 0x004b, 0x0dbd, 0x0dc7, 0x0dd2, 0x0002, - 0x0b09, 0x0b0d, 0x0002, 0x004b, 0x0ddd, 0x0ddd, 0x0002, 0x004b, - 0x0de9, 0x0de9, 0x0003, 0x0000, 0x0b15, 0x0b1a, 0x0003, 0x004b, - 0x0dfc, 0x0e05, 0x0e0f, 0x0002, 0x0b1d, 0x0b21, 0x0002, 0x004b, - // Entry 338C0 - 338FF - 0x0e19, 0x0e19, 0x0002, 0x004b, 0x0e24, 0x0e24, 0x0003, 0x0000, - 0x0b29, 0x0b2e, 0x0003, 0x004b, 0x0e36, 0x0e47, 0x0e5a, 0x0002, - 0x0b31, 0x0b35, 0x0002, 0x0015, 0x24f1, 0x07f5, 0x0002, 0x0015, - 0x2502, 0x0814, 0x0003, 0x0000, 0x0b3d, 0x0b42, 0x0003, 0x004b, - 0x0e6c, 0x0e76, 0x0e81, 0x0002, 0x0b45, 0x0b49, 0x0002, 0x004b, - 0x0e8c, 0x0e8c, 0x0002, 0x004b, 0x0e98, 0x0e98, 0x0003, 0x0000, - 0x0b51, 0x0b56, 0x0003, 0x004b, 0x0eab, 0x0eb4, 0x0ebe, 0x0002, - 0x0b59, 0x0b5d, 0x0002, 0x004b, 0x0ec8, 0x0ec8, 0x0002, 0x004b, - // Entry 33900 - 3393F - 0x0ed3, 0x0ed3, 0x0003, 0x0000, 0x0b65, 0x0b6a, 0x0003, 0x004b, - 0x0ee5, 0x0ef5, 0x0f07, 0x0002, 0x0b6d, 0x0b71, 0x0002, 0x0015, - 0x251a, 0x08a7, 0x0002, 0x0015, 0x252a, 0x08c4, 0x0003, 0x0000, - 0x0b79, 0x0b7e, 0x0003, 0x004b, 0x0f18, 0x0f22, 0x0f2d, 0x0002, - 0x0b81, 0x0b85, 0x0002, 0x004b, 0x0f38, 0x0f38, 0x0002, 0x004b, - 0x0f44, 0x0f44, 0x0003, 0x0000, 0x0b8d, 0x0b92, 0x0003, 0x004b, - 0x0f57, 0x0f60, 0x0f6a, 0x0002, 0x0b95, 0x0b99, 0x0002, 0x004b, - 0x0f74, 0x0f74, 0x0002, 0x004b, 0x0f7f, 0x0f7f, 0x0003, 0x0000, - // Entry 33940 - 3397F - 0x0ba1, 0x0ba6, 0x0003, 0x004b, 0x0f91, 0x0fa2, 0x0fb5, 0x0002, - 0x0ba9, 0x0bad, 0x0002, 0x0015, 0x2541, 0x0958, 0x0002, 0x0015, - 0x2552, 0x0977, 0x0003, 0x0000, 0x0bb5, 0x0bba, 0x0003, 0x004b, - 0x0fc7, 0x0fd2, 0x0fde, 0x0002, 0x0bbd, 0x0bc1, 0x0002, 0x004b, - 0x0fea, 0x0fea, 0x0002, 0x004b, 0x0ff7, 0x0ff7, 0x0003, 0x0000, - 0x0bc9, 0x0bce, 0x0003, 0x004b, 0x100b, 0x1015, 0x1020, 0x0002, - 0x0bd1, 0x0bd5, 0x0002, 0x004b, 0x102b, 0x102b, 0x0002, 0x004b, - 0x1037, 0x1037, 0x0001, 0x0bdb, 0x0001, 0x001e, 0x002c, 0x0003, - // Entry 33980 - 339BF - 0x0be2, 0x0be5, 0x0be9, 0x0001, 0x0015, 0x09e9, 0x0002, 0x004b, - 0xffff, 0x104a, 0x0002, 0x0bec, 0x0bf0, 0x0002, 0x0015, 0x0a0e, - 0x0a02, 0x0002, 0x0015, 0x0a2e, 0x0a1b, 0x0003, 0x0bf8, 0x0000, - 0x0bfb, 0x0001, 0x0000, 0x2000, 0x0002, 0x0bfe, 0x0c02, 0x0002, - 0x004b, 0x1056, 0x1056, 0x0002, 0x004b, 0x105f, 0x105f, 0x0003, - 0x0c0a, 0x0000, 0x0c0d, 0x0001, 0x0000, 0x2000, 0x0002, 0x0c10, - 0x0c14, 0x0002, 0x004b, 0x106f, 0x106f, 0x0002, 0x004b, 0x1076, - 0x1076, 0x0003, 0x0c1c, 0x0c1f, 0x0c23, 0x0001, 0x004b, 0x107d, - // Entry 339C0 - 339FF - 0x0002, 0x004b, 0xffff, 0x1084, 0x0002, 0x0c26, 0x0c2a, 0x0002, - 0x004b, 0x10a1, 0x1093, 0x0002, 0x004b, 0x10c6, 0x10b1, 0x0003, - 0x0c32, 0x0000, 0x0c35, 0x0001, 0x0041, 0x092f, 0x0002, 0x0c38, - 0x0c3c, 0x0002, 0x004b, 0x10dd, 0x10dd, 0x0002, 0x004b, 0x10e8, - 0x10e8, 0x0003, 0x0c44, 0x0000, 0x0c47, 0x0001, 0x0000, 0x1f9a, - 0x0002, 0x0c4a, 0x0c4e, 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, - 0x0025, 0x11bf, 0x11bf, 0x0003, 0x0c56, 0x0c59, 0x0c5d, 0x0001, - 0x0015, 0x0ad8, 0x0002, 0x004b, 0xffff, 0x10fa, 0x0002, 0x0c60, - // Entry 33A00 - 33A3F - 0x0c64, 0x0002, 0x0015, 0x0af0, 0x0ae2, 0x0002, 0x0015, 0x0b15, - 0x0b00, 0x0003, 0x0c6c, 0x0000, 0x0c6f, 0x0001, 0x001f, 0x027b, - 0x0002, 0x0c72, 0x0c76, 0x0002, 0x004b, 0x10fe, 0x10fe, 0x0002, - 0x004b, 0x1109, 0x1109, 0x0003, 0x0c7e, 0x0000, 0x0c81, 0x0001, - 0x0000, 0x2002, 0x0002, 0x0c84, 0x0c88, 0x0002, 0x0026, 0x00bf, - 0x00bf, 0x0002, 0x0000, 0x1dbb, 0x1dbb, 0x0001, 0x0c8e, 0x0001, - 0x004b, 0x111b, 0x0004, 0x0c96, 0x0c9b, 0x0ca0, 0x0caf, 0x0003, - 0x0000, 0x1dc7, 0x3839, 0x3890, 0x0003, 0x004b, 0x1124, 0x1135, - // Entry 33A40 - 33A7F - 0x1147, 0x0002, 0x0000, 0x0ca3, 0x0003, 0x0000, 0x0caa, 0x0ca7, - 0x0001, 0x004b, 0x1159, 0x0003, 0x004b, 0xffff, 0x1171, 0x1183, - 0x0002, 0x0e96, 0x0cb2, 0x0003, 0x0cb6, 0x0df6, 0x0d56, 0x009e, - 0x0015, 0xffff, 0xffff, 0xffff, 0xffff, 0x256a, 0x257c, 0x2589, - 0x259f, 0x25c6, 0x25f2, 0x2615, 0x2647, 0x265c, 0x266e, 0x267a, - 0x2689, 0x269c, 0x26a8, 0x26c0, 0x26d5, 0x26ef, 0x2701, 0x2713, - 0x2726, 0x2732, 0xffff, 0xffff, 0x2744, 0xffff, 0x275a, 0xffff, - 0x2772, 0x2787, 0x2794, 0x27a1, 0xffff, 0xffff, 0x27ba, 0x27ca, - // Entry 33A80 - 33ABF - 0x27e2, 0xffff, 0xffff, 0xffff, 0x27ee, 0xffff, 0x2806, 0x281b, - 0xffff, 0x282d, 0x283f, 0x285c, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2869, 0xffff, 0xffff, 0x2876, 0x288a, 0xffff, 0xffff, 0x289e, - 0x28be, 0x28d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x28e7, 0x28f2, 0x2907, 0x2914, 0x2920, 0xffff, 0xffff, 0x2949, - 0xffff, 0x2956, 0xffff, 0xffff, 0x296f, 0xffff, 0x2995, 0xffff, - 0xffff, 0xffff, 0xffff, 0x29aa, 0xffff, 0x29b8, 0x29d9, 0x2a07, - 0x2a1f, 0xffff, 0xffff, 0xffff, 0x2a33, 0x2a41, 0x2a52, 0xffff, - // Entry 33AC0 - 33AFF - 0xffff, 0x2a6c, 0x2a8d, 0x2aa6, 0x2ab8, 0xffff, 0xffff, 0x2ac7, - 0x2ad8, 0x2ae5, 0xffff, 0x2af4, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2b1a, 0x2b30, 0x2b45, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2b52, 0xffff, 0xffff, 0x2b66, 0xffff, - 0x2b73, 0xffff, 0x2b81, 0x2b91, 0x2b9e, 0xffff, 0x2bac, 0x2bc5, - 0xffff, 0xffff, 0xffff, 0x2bdc, 0x2bf1, 0xffff, 0xffff, 0x0b8e, - 0x0c69, 0x0de0, 0x0e0a, 0xffff, 0xffff, 0x298b, 0x1f84, 0x009e, - 0x004b, 0x11b0, 0x11bd, 0x11d2, 0x11e4, 0x11f6, 0x1226, 0x1272, - // Entry 33B00 - 33B3F - 0x12a0, 0x12f0, 0x134a, 0x1392, 0x13f8, 0x142e, 0x149e, 0x14c4, - 0x14ee, 0x1520, 0x1544, 0x1582, 0x15b8, 0x15f8, 0x1628, 0x1658, - 0x168a, 0x16ae, 0x16de, 0x16eb, 0x16fa, 0x1728, 0x1747, 0x1783, - 0x1799, 0x17c5, 0x17eb, 0x1811, 0x1845, 0x1860, 0x1879, 0x18a5, - 0x18dc, 0x1900, 0x1913, 0x1933, 0x1946, 0x1978, 0x1989, 0x19bf, - 0x19ef, 0x1a07, 0x1a37, 0x1a73, 0x1a99, 0x1ab4, 0x1adc, 0x1afa, - 0x1b0f, 0x1b35, 0x1b50, 0x1b64, 0x1b98, 0x1bd5, 0x1bee, 0x1bfa, - 0x1c3c, 0x1c6a, 0x1c92, 0x1c9d, 0x1cb5, 0x1cc6, 0x1cdc, 0x1cef, - // Entry 33B40 - 33B7F - 0x1d02, 0x1d24, 0x1d50, 0x1d76, 0x1d9a, 0x1df8, 0x1e0d, 0x1e22, - 0x1e48, 0x1e5c, 0x1e90, 0x1ea8, 0x1ec1, 0x1f1f, 0x1f3a, 0x1f66, - 0x1f74, 0x1f82, 0x1f9f, 0x1fbb, 0x1fe3, 0x1ff7, 0x203b, 0x2099, - 0x20cb, 0x20f5, 0x2103, 0x210f, 0x211b, 0x2143, 0x2171, 0x21a7, - 0x21b9, 0x21d2, 0x2229, 0x225d, 0x2283, 0x22ad, 0x22ba, 0x22c7, - 0x22f5, 0x231b, 0x2345, 0x2360, 0x23ae, 0x23c4, 0x23d9, 0x241c, - 0x2432, 0x2447, 0x2475, 0x24ab, 0x24d1, 0x24e1, 0x24f0, 0x250b, - 0x2525, 0x2533, 0x2546, 0x2553, 0x257d, 0x258c, 0x25a1, 0x25c7, - // Entry 33B80 - 33BBF - 0x25e0, 0x2608, 0x2614, 0x2640, 0x2666, 0x268e, 0x269f, 0x26d3, - 0x2703, 0x2717, 0x2730, 0x2755, 0x2781, 0x1bcc, 0x2216, 0x1192, - 0x124c, 0x1454, 0x1478, 0x1779, 0x1e9e, 0x1efb, 0x23f0, 0x009e, - 0x004b, 0xffff, 0xffff, 0xffff, 0xffff, 0x120e, 0x1239, 0x1289, - 0x12c8, 0x131d, 0x136e, 0x13c5, 0x1413, 0x1441, 0x14b2, 0x14d9, - 0x1507, 0x1532, 0x1564, 0x159d, 0x15d8, 0x1610, 0x1640, 0x1671, - 0x169c, 0x16c6, 0xffff, 0xffff, 0x1711, 0xffff, 0x1760, 0xffff, - 0x17af, 0x17d8, 0x17fe, 0x182b, 0xffff, 0xffff, 0x188f, 0x18be, - // Entry 33BC0 - 33BFF - 0x18ee, 0xffff, 0xffff, 0xffff, 0x195f, 0xffff, 0x19a4, 0x19d7, - 0xffff, 0x1a1f, 0x1a55, 0x1a86, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1b22, 0xffff, 0xffff, 0x1b7e, 0x1bb2, 0xffff, 0xffff, 0x1c1b, - 0x1c53, 0x1c7e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1d13, 0x1d3a, 0x1d63, 0x1d88, 0x1dc9, 0xffff, 0xffff, 0x1e35, - 0xffff, 0x1e76, 0xffff, 0xffff, 0x1ede, 0xffff, 0x1f50, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1fcf, 0xffff, 0x2019, 0x206a, 0x20b2, - 0x20e0, 0xffff, 0xffff, 0xffff, 0x212f, 0x215a, 0x218c, 0xffff, - // Entry 33C00 - 33C3F - 0xffff, 0x21f4, 0x2243, 0x2270, 0x2298, 0xffff, 0xffff, 0x22de, - 0x2308, 0x2330, 0xffff, 0x2387, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x245e, 0x2490, 0x24be, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2568, 0xffff, 0xffff, 0x25b4, 0xffff, - 0x25f4, 0xffff, 0x262a, 0x2653, 0x267a, 0xffff, 0x26b9, 0x26eb, - 0xffff, 0xffff, 0xffff, 0x276b, 0x279d, 0xffff, 0xffff, 0x11a1, - 0x1260, 0x1467, 0x148c, 0xffff, 0xffff, 0x1f0e, 0x2407, 0x0003, - 0x0e9a, 0x0f1c, 0x0edb, 0x003f, 0x0006, 0xffff, 0xffff, 0xffff, - // Entry 33C40 - 33C7F - 0xffff, 0xffff, 0x06eb, 0xffff, 0x07ec, 0x0861, 0x08f1, 0x0975, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c14, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2798, 0x003f, 0x0006, 0xffff, 0xffff, - // Entry 33C80 - 33CBF - 0xffff, 0xffff, 0xffff, 0x06ef, 0xffff, 0x07ef, 0x0864, 0x2780, - 0x0978, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c17, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27d3, - 0xffff, 0xffff, 0xffff, 0xffff, 0x16e6, 0x003f, 0x0006, 0xffff, - // Entry 33CC0 - 33CFF - 0xffff, 0xffff, 0xffff, 0xffff, 0x06f4, 0xffff, 0x07f3, 0x0868, - 0x2784, 0x097c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0c1b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x16eb, 0x0002, 0x0003, - // Entry 33D00 - 33D3F - 0x00d1, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, - 0x0000, 0x009f, 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x004c, 0xffff, 0x0000, - 0x0004, 0x0009, 0x000d, 0x0011, 0x0015, 0x001a, 0x001e, 0x0022, - // Entry 33D40 - 33D7F - 0x0027, 0x002b, 0x002f, 0x000d, 0x004c, 0xffff, 0x0034, 0x003f, - 0x0049, 0x0053, 0x005a, 0x0065, 0x006f, 0x0079, 0x0084, 0x008d, - 0x0094, 0x009a, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, - 0x22db, 0x297e, 0x297a, 0x297a, 0x297e, 0x297e, 0x297e, 0x297e, - 0x297a, 0x297a, 0x2994, 0x297a, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0040, 0x02d8, 0x25e9, 0x25ed, - 0x25f1, 0x25f5, 0x25f9, 0x25fd, 0x0007, 0x004c, 0x00a4, 0x00aa, - 0x00b0, 0x00b7, 0x00c0, 0x00c5, 0x00cd, 0x0002, 0x0000, 0x0082, - // Entry 33D80 - 33DBF - 0x0007, 0x0000, 0x298e, 0x297a, 0x298e, 0x298e, 0x298e, 0x298e, - 0x297a, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, - 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x004c, - 0xffff, 0x00d6, 0x00dd, 0x00e4, 0x00eb, 0x0003, 0x00a9, 0x0000, - 0x00a3, 0x0001, 0x00a5, 0x0002, 0x004c, 0x00f2, 0x0105, 0x0001, - 0x00ab, 0x0002, 0x0009, 0x0078, 0x5463, 0x0004, 0x00bd, 0x00b7, - 0x00b4, 0x00ba, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00ce, - // Entry 33DC0 - 33DFF - 0x00c8, 0x00c5, 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x0000, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0117, 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x012c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 33E00 - 33E3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, - 0x0000, 0x0136, 0x0000, 0x0000, 0x013b, 0x0000, 0x0000, 0x0140, - 0x0001, 0x0114, 0x0001, 0x004c, 0x0115, 0x0001, 0x0119, 0x0001, - 0x004c, 0x011d, 0x0001, 0x011e, 0x0001, 0x004c, 0x0129, 0x0002, - 0x0124, 0x0127, 0x0001, 0x004c, 0x012f, 0x0003, 0x004c, 0x0136, - 0x013c, 0x0144, 0x0001, 0x012e, 0x0001, 0x004c, 0x014b, 0x0001, - 0x0133, 0x0001, 0x004c, 0x0159, 0x0001, 0x0138, 0x0001, 0x004c, - 0x015f, 0x0001, 0x013d, 0x0001, 0x004c, 0x0167, 0x0001, 0x0142, - // Entry 33E40 - 33E7F - 0x0001, 0x004c, 0x0170, 0x0003, 0x0004, 0x018c, 0x0271, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x004c, - 0x017a, 0x0001, 0x0013, 0x0477, 0x0001, 0x0015, 0x0000, 0x0001, - 0x004c, 0x0191, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00e7, 0x011c, - // Entry 33E80 - 33EBF - 0x0134, 0x0159, 0x016a, 0x017b, 0x0002, 0x0044, 0x0075, 0x0003, - 0x0048, 0x0057, 0x0066, 0x000d, 0x0000, 0xffff, 0x1e22, 0x2a15, - 0x38da, 0x2347, 0x29e9, 0x38e0, 0x38e5, 0x2350, 0x2355, 0x2a02, - 0x2a07, 0x2a0c, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, - 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, - 0x297c, 0x000d, 0x004c, 0xffff, 0x019f, 0x01a7, 0x01b0, 0x01b6, - 0x01bc, 0x01c0, 0x01c5, 0x01ca, 0x01d1, 0x01db, 0x01e3, 0x01ec, - 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0000, 0xffff, 0x1e22, - // Entry 33EC0 - 33EFF - 0x2a15, 0x38ea, 0x2347, 0x38f0, 0x38f4, 0x38f9, 0x2350, 0x2355, - 0x2a02, 0x2a07, 0x2a0c, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, - 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, - 0x297e, 0x297c, 0x000d, 0x004c, 0xffff, 0x019f, 0x01a7, 0x01f5, - 0x01b6, 0x01fb, 0x01ff, 0x0204, 0x01ca, 0x01d1, 0x01db, 0x01e3, - 0x01ec, 0x0002, 0x00a9, 0x00c8, 0x0003, 0x00ad, 0x00b6, 0x00bf, - 0x0007, 0x004c, 0x0209, 0x020e, 0x0212, 0x0216, 0x021a, 0x021e, - 0x0222, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x297a, 0x297c, - // Entry 33F00 - 33F3F - 0x298c, 0x298e, 0x0007, 0x004c, 0x0226, 0x022f, 0x0237, 0x0240, - 0x024b, 0x0256, 0x025e, 0x0003, 0x00cc, 0x00d5, 0x00de, 0x0007, - 0x004c, 0x0209, 0x020e, 0x0212, 0x0216, 0x021a, 0x021e, 0x0222, - 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x297a, 0x297c, 0x298c, - 0x298e, 0x0007, 0x004c, 0x0226, 0x022f, 0x0237, 0x0240, 0x024b, - 0x0256, 0x025e, 0x0002, 0x00ea, 0x0103, 0x0003, 0x00ee, 0x00f5, - 0x00fc, 0x0005, 0x004c, 0xffff, 0x0269, 0x026d, 0x0271, 0x0275, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, - // Entry 33F40 - 33F7F - 0x004c, 0xffff, 0x0279, 0x0285, 0x0291, 0x029d, 0x0003, 0x0107, - 0x010e, 0x0115, 0x0005, 0x004c, 0xffff, 0x02a9, 0x02ae, 0x02b4, - 0x02bb, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, - 0x0005, 0x004c, 0xffff, 0x0279, 0x0285, 0x0291, 0x029d, 0x0001, - 0x011e, 0x0003, 0x0122, 0x0000, 0x012b, 0x0002, 0x0125, 0x0128, - 0x0001, 0x004c, 0x02c1, 0x0001, 0x004c, 0x02c4, 0x0002, 0x012e, - 0x0131, 0x0001, 0x004c, 0x02c1, 0x0001, 0x004c, 0x02c4, 0x0003, - 0x0143, 0x014e, 0x0138, 0x0002, 0x013b, 0x013f, 0x0002, 0x004c, - // Entry 33F80 - 33FBF - 0x02c7, 0x02e3, 0x0002, 0x004c, 0x02d5, 0x02ef, 0x0002, 0x0146, - 0x014a, 0x0002, 0x004c, 0x02ff, 0x030d, 0x0002, 0x004c, 0x0306, - 0x0314, 0x0002, 0x0151, 0x0155, 0x0002, 0x003e, 0x060b, 0x060e, - 0x0002, 0x004c, 0x031b, 0x031f, 0x0004, 0x0167, 0x0161, 0x015e, - 0x0164, 0x0001, 0x004c, 0x0323, 0x0001, 0x0013, 0x06b1, 0x0001, - 0x0015, 0x0207, 0x0001, 0x0008, 0x09eb, 0x0004, 0x0178, 0x0172, - 0x016f, 0x0175, 0x0001, 0x004c, 0x0338, 0x0001, 0x004c, 0x034f, - 0x0001, 0x004c, 0x0363, 0x0001, 0x004c, 0x0373, 0x0004, 0x0189, - // Entry 33FC0 - 33FFF - 0x0183, 0x0180, 0x0186, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, - 0x01cd, 0x0000, 0x0000, 0x01d2, 0x01dd, 0x01e2, 0x01e7, 0x01ec, - 0x01f1, 0x01f6, 0x0201, 0x0206, 0x020b, 0x0216, 0x021b, 0x0000, - 0x0000, 0x0000, 0x0220, 0x022b, 0x0230, 0x0000, 0x0000, 0x0000, - 0x0235, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 34000 - 3403F - 0x0000, 0x0000, 0x0000, 0x0000, 0x023a, 0x0000, 0x023f, 0x0244, - 0x0249, 0x024e, 0x0253, 0x0258, 0x025d, 0x0262, 0x0267, 0x026c, - 0x0001, 0x01cf, 0x0001, 0x004c, 0x037e, 0x0002, 0x01d5, 0x01d8, - 0x0001, 0x003e, 0x0637, 0x0003, 0x004c, 0x0383, 0x0391, 0x039a, - 0x0001, 0x01df, 0x0001, 0x003e, 0x06b1, 0x0001, 0x01e4, 0x0001, - 0x003e, 0x06b1, 0x0001, 0x01e9, 0x0001, 0x004c, 0x03a7, 0x0001, - 0x01ee, 0x0001, 0x0016, 0x055d, 0x0001, 0x01f3, 0x0001, 0x003e, - 0x06bd, 0x0002, 0x01f9, 0x01fc, 0x0001, 0x004c, 0x03b0, 0x0003, - // Entry 34040 - 3407F - 0x004c, 0x03b6, 0x03c5, 0x03d1, 0x0001, 0x0203, 0x0001, 0x001c, - 0x010c, 0x0001, 0x0208, 0x0001, 0x001c, 0x010c, 0x0002, 0x020e, - 0x0211, 0x0001, 0x0000, 0x1adc, 0x0003, 0x004c, 0x03df, 0x03ed, - 0x03f8, 0x0001, 0x0218, 0x0001, 0x004c, 0x0405, 0x0001, 0x021d, - 0x0001, 0x004c, 0x0405, 0x0002, 0x0223, 0x0226, 0x0001, 0x0040, - 0x05ab, 0x0003, 0x004c, 0x0409, 0x0412, 0x041a, 0x0001, 0x022d, - 0x0001, 0x0040, 0x05ab, 0x0001, 0x0232, 0x0001, 0x003e, 0x0747, - 0x0001, 0x0237, 0x0001, 0x004c, 0x0421, 0x0001, 0x023c, 0x0001, - // Entry 34080 - 340BF - 0x004c, 0x042a, 0x0001, 0x0241, 0x0001, 0x004c, 0x0432, 0x0001, - 0x0246, 0x0001, 0x0040, 0x0a03, 0x0001, 0x024b, 0x0001, 0x0000, - 0x2143, 0x0001, 0x0250, 0x0001, 0x004c, 0x0439, 0x0001, 0x0255, - 0x0001, 0x0016, 0x0f87, 0x0001, 0x025a, 0x0001, 0x0001, 0x075a, - 0x0001, 0x025f, 0x0001, 0x004c, 0x0440, 0x0001, 0x0264, 0x0001, - 0x0016, 0x0ffe, 0x0001, 0x0269, 0x0001, 0x0000, 0x2002, 0x0001, - 0x026e, 0x0001, 0x004c, 0x0447, 0x0004, 0x0276, 0x027b, 0x0000, - 0x0280, 0x0003, 0x0008, 0x1d98, 0x4f2a, 0x4f31, 0x0003, 0x004c, - // Entry 340C0 - 340FF - 0x0452, 0x045b, 0x046a, 0x0002, 0x0000, 0x0283, 0x0003, 0x02e9, - 0x034b, 0x0287, 0x0060, 0x004c, 0xffff, 0x047b, 0x0494, 0x04a9, - 0x04d5, 0xffff, 0xffff, 0x052c, 0x0598, 0x05fd, 0x0661, 0xffff, - 0xffff, 0x06bb, 0xffff, 0xffff, 0xffff, 0x0704, 0x076b, 0x07c8, - 0x0825, 0x0872, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x08b5, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x08f3, 0x094b, 0xffff, 0x099b, 0xffff, 0xffff, 0xffff, - // Entry 34100 - 3413F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x09d5, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x09eb, 0xffff, 0x09f7, - 0x0a10, 0x0a28, 0x0a3c, 0xffff, 0xffff, 0x0a5c, 0x0a91, 0xffff, - 0xffff, 0xffff, 0x0acd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0b07, 0x0060, 0x004c, 0xffff, 0xffff, - 0xffff, 0xffff, 0x04c0, 0xffff, 0xffff, 0x050d, 0x057a, 0x05e2, - 0x0643, 0xffff, 0xffff, 0x06ad, 0xffff, 0xffff, 0xffff, 0x06e5, - // Entry 34140 - 3417F - 0x0752, 0x07ab, 0x0810, 0x085d, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x08aa, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x08d9, 0x0935, 0xffff, 0x0985, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a50, - 0x0a82, 0xffff, 0xffff, 0xffff, 0x0abd, 0xffff, 0xffff, 0xffff, - // Entry 34180 - 341BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0afb, 0x0060, 0x004c, - 0xffff, 0xffff, 0xffff, 0xffff, 0x04f2, 0xffff, 0xffff, 0x0554, - 0x05be, 0x0621, 0x0688, 0xffff, 0xffff, 0x06d1, 0xffff, 0xffff, - 0xffff, 0x072c, 0x078c, 0x07ed, 0x0842, 0x088f, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x08c8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0915, 0x0969, 0xffff, - // Entry 341C0 - 341FF - 0x09b9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0a70, 0x0aa8, 0xffff, 0xffff, 0xffff, 0x0ae5, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0b1b, - 0x0003, 0x0004, 0x0287, 0x0663, 0x000a, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000f, 0x003a, 0x0000, 0x0270, 0x0008, - // Entry 34200 - 3423F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, 0x0029, - 0x0004, 0x0026, 0x0020, 0x001d, 0x0023, 0x0001, 0x0000, 0x0489, - 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, - 0x04af, 0x0004, 0x0037, 0x0031, 0x002e, 0x0034, 0x0001, 0x004c, - 0x0b2d, 0x0001, 0x004c, 0x0b2d, 0x0001, 0x004c, 0x0b3a, 0x0001, - 0x004c, 0x0b3a, 0x0008, 0x0043, 0x00a8, 0x00ff, 0x0134, 0x0223, - 0x023d, 0x024e, 0x025f, 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, - 0x0059, 0x0068, 0x000d, 0x002c, 0xffff, 0x01b7, 0x2364, 0x2380, - // Entry 34240 - 3427F - 0x2390, 0x23a3, 0x23aa, 0x01da, 0x23b4, 0x23c4, 0x23e3, 0x23f9, - 0x2412, 0x000d, 0x0048, 0xffff, 0x0159, 0x015d, 0x0161, 0x0165, - 0x5e0c, 0x5e10, 0x5e14, 0x5e18, 0x5e1c, 0x5e20, 0x5e27, 0x5e2e, - 0x000d, 0x002c, 0xffff, 0x01b7, 0x2364, 0x2380, 0x2390, 0x0158, - 0x23aa, 0x01da, 0x23b4, 0x23c4, 0x23e3, 0x23f9, 0x2412, 0x0003, - 0x007b, 0x008a, 0x0099, 0x000d, 0x002c, 0xffff, 0x01b7, 0x2364, - 0x2380, 0x2390, 0x23a3, 0x23aa, 0x01da, 0x23b4, 0x23c4, 0x23e3, - 0x23f9, 0x2412, 0x000d, 0x0048, 0xffff, 0x0159, 0x015d, 0x0161, - // Entry 34280 - 342BF - 0x0165, 0x5e0c, 0x5e10, 0x5e14, 0x5e18, 0x5e1c, 0x5e20, 0x5e27, - 0x5e2e, 0x000d, 0x002c, 0xffff, 0x01b7, 0x2364, 0x2380, 0x2390, - 0x23a3, 0x23aa, 0x01da, 0x23b4, 0x23c4, 0x23e3, 0x23f9, 0x2412, - 0x0002, 0x00ab, 0x00d5, 0x0005, 0x00b1, 0x00ba, 0x00cc, 0x0000, - 0x00c3, 0x0007, 0x004c, 0x0b42, 0x0b4c, 0x0b56, 0x0b66, 0x0b70, - 0x0b7d, 0x0b8d, 0x0007, 0x000c, 0x0143, 0x4e4f, 0x4e3d, 0x0255, - 0x025c, 0x4e5d, 0x4e64, 0x0007, 0x004c, 0x0b42, 0x0b4c, 0x0b56, - 0x0b66, 0x0b70, 0x0b7d, 0x0b8d, 0x0007, 0x004c, 0x0b97, 0x0baa, - // Entry 342C0 - 342FF - 0x0bbd, 0x0bd6, 0x0be9, 0x0bff, 0x0c18, 0x0005, 0x00db, 0x00e4, - 0x00f6, 0x0000, 0x00ed, 0x0007, 0x004c, 0x0b42, 0x0b4c, 0x0b56, - 0x0b66, 0x0b70, 0x0b7d, 0x0b8d, 0x0007, 0x000c, 0x0143, 0x4e4f, - 0x4e3d, 0x0255, 0x025c, 0x4e5d, 0x4e64, 0x0007, 0x004c, 0x0b42, - 0x0b4c, 0x0b56, 0x0b66, 0x0b70, 0x0b7d, 0x0b8d, 0x0007, 0x004c, - 0x0b97, 0x0baa, 0x0bbd, 0x0bd6, 0x0be9, 0x0bff, 0x0c18, 0x0002, - 0x0102, 0x011b, 0x0003, 0x0106, 0x010d, 0x0114, 0x0005, 0x004c, - 0xffff, 0x0c2b, 0x0c48, 0x0c68, 0x0c88, 0x0005, 0x0048, 0xffff, - // Entry 34300 - 3433F - 0x0159, 0x015d, 0x0161, 0x0165, 0x0005, 0x004c, 0xffff, 0x0c2b, - 0x0c48, 0x0c68, 0x0c88, 0x0003, 0x011f, 0x0126, 0x012d, 0x0005, - 0x004c, 0xffff, 0x0c2b, 0x0c48, 0x0c68, 0x0c88, 0x0005, 0x0048, - 0xffff, 0x0159, 0x015d, 0x0161, 0x0165, 0x0005, 0x004c, 0xffff, - 0x0c2b, 0x0c48, 0x0c68, 0x0c88, 0x0002, 0x0137, 0x01ad, 0x0003, - 0x013b, 0x0161, 0x0187, 0x000a, 0x0149, 0x014f, 0x0146, 0x0152, - 0x0155, 0x015b, 0x015e, 0x014c, 0x0000, 0x0158, 0x0001, 0x004c, - 0x0ca2, 0x0001, 0x002c, 0x03ee, 0x0001, 0x0048, 0x021a, 0x0001, - // Entry 34340 - 3437F - 0x002c, 0x040a, 0x0001, 0x004c, 0x0cb8, 0x0001, 0x004c, 0x0cc8, - 0x0001, 0x004c, 0x0cde, 0x0001, 0x004c, 0x0ceb, 0x0001, 0x002c, - 0x0437, 0x000a, 0x016f, 0x0175, 0x016c, 0x0178, 0x017b, 0x0181, - 0x0184, 0x0172, 0x0000, 0x017e, 0x0001, 0x004c, 0x0ca2, 0x0001, - 0x002c, 0x03ee, 0x0001, 0x0048, 0x021a, 0x0001, 0x002c, 0x040a, - 0x0001, 0x004c, 0x0cb8, 0x0001, 0x004c, 0x0cc8, 0x0001, 0x004c, - 0x0cde, 0x0001, 0x004c, 0x0ceb, 0x0001, 0x002c, 0x0437, 0x000a, - 0x0195, 0x019b, 0x0192, 0x019e, 0x01a1, 0x01a7, 0x01aa, 0x0198, - // Entry 34380 - 343BF - 0x0000, 0x01a4, 0x0001, 0x004c, 0x0ca2, 0x0001, 0x002c, 0x03ee, - 0x0001, 0x0048, 0x021a, 0x0001, 0x002c, 0x040a, 0x0001, 0x004c, - 0x0cb8, 0x0001, 0x004c, 0x0cc8, 0x0001, 0x004c, 0x0cde, 0x0001, - 0x004c, 0x0ceb, 0x0001, 0x002c, 0x0437, 0x0003, 0x01b1, 0x01d7, - 0x01fd, 0x000a, 0x01bf, 0x01c5, 0x01bc, 0x01c8, 0x01cb, 0x01d1, - 0x01d4, 0x01c2, 0x0000, 0x01ce, 0x0001, 0x004c, 0x0ca2, 0x0001, - 0x002c, 0x03ee, 0x0001, 0x0048, 0x021a, 0x0001, 0x002c, 0x040a, - 0x0001, 0x004c, 0x0cb8, 0x0001, 0x004c, 0x0cc8, 0x0001, 0x004c, - // Entry 343C0 - 343FF - 0x0cde, 0x0001, 0x004c, 0x0ceb, 0x0001, 0x002c, 0x0437, 0x000a, - 0x01e5, 0x01eb, 0x01e2, 0x01ee, 0x01f1, 0x01f7, 0x01fa, 0x01e8, - 0x0000, 0x01f4, 0x0001, 0x004c, 0x0ca2, 0x0001, 0x002c, 0x03ee, - 0x0001, 0x0048, 0x021a, 0x0001, 0x002c, 0x040a, 0x0001, 0x004c, - 0x0cb8, 0x0001, 0x004c, 0x0cc8, 0x0001, 0x004c, 0x0cde, 0x0001, - 0x004c, 0x0ceb, 0x0001, 0x002c, 0x0437, 0x000a, 0x020b, 0x0211, - 0x0208, 0x0214, 0x0217, 0x021d, 0x0220, 0x020e, 0x0000, 0x021a, - 0x0001, 0x004c, 0x0ca2, 0x0001, 0x002c, 0x03ee, 0x0001, 0x0048, - // Entry 34400 - 3443F - 0x021a, 0x0001, 0x002c, 0x040a, 0x0001, 0x004c, 0x0cb8, 0x0001, - 0x004c, 0x0cc8, 0x0001, 0x004c, 0x0cde, 0x0001, 0x004c, 0x0ceb, - 0x0001, 0x002c, 0x0437, 0x0003, 0x0232, 0x0000, 0x0227, 0x0002, - 0x022a, 0x022e, 0x0002, 0x004c, 0x0cfe, 0x0d37, 0x0002, 0x004c, - 0x0d18, 0x0d41, 0x0002, 0x0235, 0x0239, 0x0002, 0x004c, 0x0cfe, - 0x0d37, 0x0002, 0x004c, 0x0d18, 0x0d41, 0x0004, 0x024b, 0x0245, - 0x0242, 0x0248, 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, - 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x025c, - // Entry 34440 - 3447F - 0x0256, 0x0253, 0x0259, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x026d, 0x0267, 0x0264, 0x026a, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0272, 0x0001, 0x0274, 0x0003, 0x0000, 0x0000, 0x0278, - 0x000d, 0x002c, 0xffff, 0x04e4, 0x242b, 0x2435, 0x2442, 0x244f, - 0x2459, 0x2466, 0x247c, 0x248c, 0x058f, 0x2496, 0x24a6, 0x0040, - 0x02c8, 0x0000, 0x0000, 0x02cd, 0x02e4, 0x02f6, 0x0308, 0x031f, - // Entry 34480 - 344BF - 0x0331, 0x0343, 0x035a, 0x036c, 0x037e, 0x0399, 0x03af, 0x0000, - 0x0000, 0x0000, 0x03c5, 0x03de, 0x03f0, 0x0000, 0x0000, 0x0000, - 0x0402, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0407, 0x041b, - 0x042f, 0x0443, 0x0457, 0x046b, 0x047f, 0x0493, 0x04a7, 0x04bb, - 0x04cf, 0x04e3, 0x04f7, 0x050b, 0x051f, 0x0533, 0x0547, 0x055b, - 0x056f, 0x0583, 0x0597, 0x0000, 0x05ab, 0x0000, 0x05b0, 0x05c6, - 0x05d8, 0x05ea, 0x0600, 0x0612, 0x0624, 0x063a, 0x064c, 0x065e, - 0x0001, 0x02ca, 0x0001, 0x0048, 0x0812, 0x0003, 0x02d1, 0x02d4, - // Entry 344C0 - 344FF - 0x02d9, 0x0001, 0x002d, 0x00e8, 0x0003, 0x004c, 0x0d55, 0x0d69, - 0x0d7d, 0x0002, 0x02dc, 0x02e0, 0x0002, 0x004c, 0x0d9a, 0x0d9a, - 0x0002, 0x004c, 0x0db1, 0x0db1, 0x0003, 0x02e8, 0x0000, 0x02eb, - 0x0001, 0x004c, 0x0dcc, 0x0002, 0x02ee, 0x02f2, 0x0002, 0x004c, - 0x0d9a, 0x0d9a, 0x0002, 0x004c, 0x0db1, 0x0db1, 0x0003, 0x02fa, - 0x0000, 0x02fd, 0x0001, 0x004c, 0x0dcc, 0x0002, 0x0300, 0x0304, - 0x0002, 0x004c, 0x0d9a, 0x0d9a, 0x0002, 0x004c, 0x0db1, 0x0db1, - 0x0003, 0x030c, 0x030f, 0x0314, 0x0001, 0x004c, 0x0dd9, 0x0003, - // Entry 34500 - 3453F - 0x004c, 0x0de6, 0x0e09, 0x0e1d, 0x0002, 0x0317, 0x031b, 0x0002, - 0x004c, 0x0e52, 0x0e3a, 0x0002, 0x004c, 0x0e68, 0x0e68, 0x0003, - 0x0323, 0x0000, 0x0326, 0x0001, 0x004c, 0x0dd9, 0x0002, 0x0329, - 0x032d, 0x0002, 0x004c, 0x0e52, 0x0e52, 0x0002, 0x004c, 0x0e68, - 0x0e68, 0x0003, 0x0335, 0x0000, 0x0338, 0x0001, 0x004c, 0x0dd9, - 0x0002, 0x033b, 0x033f, 0x0002, 0x004c, 0x0e52, 0x0e52, 0x0002, - 0x004c, 0x0e68, 0x0e68, 0x0003, 0x0347, 0x034a, 0x034f, 0x0001, - 0x0048, 0x05bc, 0x0003, 0x004c, 0x0e82, 0x0e99, 0x0eb0, 0x0002, - // Entry 34540 - 3457F - 0x0352, 0x0356, 0x0002, 0x004c, 0x0ed0, 0x0ed0, 0x0002, 0x004c, - 0x0eea, 0x0eea, 0x0003, 0x035e, 0x0000, 0x0361, 0x0001, 0x0048, - 0x05bc, 0x0002, 0x0364, 0x0368, 0x0002, 0x004c, 0x0ed0, 0x0ed0, - 0x0002, 0x004c, 0x0eea, 0x0eea, 0x0003, 0x0370, 0x0000, 0x0373, - 0x0001, 0x0048, 0x05bc, 0x0002, 0x0376, 0x037a, 0x0002, 0x004c, - 0x0ed0, 0x0ed0, 0x0002, 0x004c, 0x0eea, 0x0eea, 0x0004, 0x0383, - 0x0386, 0x038b, 0x0396, 0x0001, 0x004c, 0x0f0e, 0x0003, 0x004c, - 0x0f1e, 0x0f35, 0x0f4c, 0x0002, 0x038e, 0x0392, 0x0002, 0x004c, - // Entry 34580 - 345BF - 0x0f69, 0x0f69, 0x0002, 0x004c, 0x0f83, 0x0f83, 0x0001, 0x004c, - 0x0fa7, 0x0004, 0x039e, 0x0000, 0x03a1, 0x03ac, 0x0001, 0x004c, - 0x0f0e, 0x0002, 0x03a4, 0x03a8, 0x0002, 0x004c, 0x0f69, 0x0f69, - 0x0002, 0x004c, 0x0f83, 0x0f83, 0x0001, 0x004c, 0x0fc1, 0x0004, - 0x03b4, 0x0000, 0x03b7, 0x03c2, 0x0001, 0x004c, 0x0f0e, 0x0002, - 0x03ba, 0x03be, 0x0002, 0x004c, 0x0f69, 0x0f69, 0x0002, 0x004c, - 0x0f83, 0x0f83, 0x0001, 0x004c, 0x0fc1, 0x0003, 0x03c9, 0x03cc, - 0x03d3, 0x0001, 0x004c, 0x0fdc, 0x0005, 0x004c, 0x0ff6, 0x1003, - // Entry 345C0 - 345FF - 0x100a, 0x0fe6, 0x1017, 0x0002, 0x03d6, 0x03da, 0x0002, 0x004c, - 0x1027, 0x1027, 0x0002, 0x004c, 0x103b, 0x103b, 0x0003, 0x03e2, - 0x0000, 0x03e5, 0x0001, 0x004c, 0x0fdc, 0x0002, 0x03e8, 0x03ec, - 0x0002, 0x004c, 0x1027, 0x1027, 0x0002, 0x004c, 0x103b, 0x103b, - 0x0003, 0x03f4, 0x0000, 0x03f7, 0x0001, 0x004c, 0x0fdc, 0x0002, - 0x03fa, 0x03fe, 0x0002, 0x004c, 0x1027, 0x1027, 0x0002, 0x004c, - 0x103b, 0x103b, 0x0001, 0x0404, 0x0001, 0x004c, 0x1059, 0x0003, - 0x0000, 0x040b, 0x0410, 0x0003, 0x004c, 0x1079, 0x1093, 0x10ad, - // Entry 34600 - 3463F - 0x0002, 0x0413, 0x0417, 0x0002, 0x004c, 0x10ed, 0x10d0, 0x0002, - 0x004c, 0x1139, 0x1113, 0x0003, 0x0000, 0x041f, 0x0424, 0x0003, - 0x004c, 0x1079, 0x1093, 0x10ad, 0x0002, 0x0427, 0x042b, 0x0002, - 0x004c, 0x10ed, 0x10ed, 0x0002, 0x004c, 0x1139, 0x1139, 0x0003, - 0x0000, 0x0433, 0x0438, 0x0003, 0x004c, 0x1079, 0x1093, 0x10ad, - 0x0002, 0x043b, 0x043f, 0x0002, 0x004c, 0x10ed, 0x10ed, 0x0002, - 0x004c, 0x1139, 0x1139, 0x0003, 0x0000, 0x0447, 0x044c, 0x0003, - 0x004c, 0x1169, 0x1183, 0x119d, 0x0002, 0x044f, 0x0453, 0x0002, - // Entry 34640 - 3467F - 0x004c, 0x11e6, 0x11c0, 0x0002, 0x004c, 0x11e6, 0x11e6, 0x0003, - 0x0000, 0x045b, 0x0460, 0x0003, 0x004c, 0x1169, 0x1183, 0x119d, - 0x0002, 0x0463, 0x0467, 0x0002, 0x004c, 0x11e6, 0x11e6, 0x0002, - 0x004c, 0x120b, 0x120b, 0x0003, 0x0000, 0x046f, 0x0474, 0x0003, - 0x004c, 0x1169, 0x1183, 0x119d, 0x0002, 0x0477, 0x047b, 0x0002, - 0x004c, 0x11e6, 0x11e6, 0x0002, 0x004c, 0x120b, 0x120b, 0x0003, - 0x0000, 0x0483, 0x0488, 0x0003, 0x004c, 0x123a, 0x1257, 0x1274, - 0x0002, 0x048b, 0x048f, 0x0002, 0x004c, 0x12b9, 0x129a, 0x0002, - // Entry 34680 - 346BF - 0x004c, 0x130b, 0x12e2, 0x0003, 0x0000, 0x0497, 0x049c, 0x0003, - 0x004c, 0x123a, 0x1257, 0x1274, 0x0002, 0x049f, 0x04a3, 0x0002, - 0x004c, 0x12b9, 0x12b9, 0x0002, 0x004c, 0x1335, 0x130b, 0x0003, - 0x0000, 0x04ab, 0x04b0, 0x0003, 0x004c, 0x123a, 0x1257, 0x1274, - 0x0002, 0x04b3, 0x04b7, 0x0002, 0x004c, 0x12b9, 0x12b9, 0x0002, - 0x004c, 0x1335, 0x1335, 0x0003, 0x0000, 0x04bf, 0x04c4, 0x0003, - 0x004c, 0x1368, 0x1382, 0x139c, 0x0002, 0x04c7, 0x04cb, 0x0002, - 0x004c, 0x13dc, 0x13bf, 0x0002, 0x004c, 0x142e, 0x1408, 0x0003, - // Entry 346C0 - 346FF - 0x0000, 0x04d3, 0x04d8, 0x0003, 0x004c, 0x1368, 0x1382, 0x139c, - 0x0002, 0x04db, 0x04df, 0x0002, 0x004c, 0x1483, 0x145d, 0x0002, - 0x004c, 0x142e, 0x142e, 0x0003, 0x0000, 0x04e7, 0x04ec, 0x0003, - 0x004c, 0x1368, 0x1382, 0x139c, 0x0002, 0x04ef, 0x04f3, 0x0002, - 0x004c, 0x1483, 0x1483, 0x0002, 0x004c, 0x142e, 0x142e, 0x0003, - 0x0000, 0x04fb, 0x0500, 0x0003, 0x004c, 0x14a8, 0x14c5, 0x14e2, - 0x0002, 0x0503, 0x0507, 0x0002, 0x004c, 0x1508, 0x1508, 0x0002, - 0x004c, 0x1559, 0x1530, 0x0003, 0x0000, 0x050f, 0x0514, 0x0003, - // Entry 34700 - 3473F - 0x004c, 0x14a8, 0x14c5, 0x14e2, 0x0002, 0x0517, 0x051b, 0x0002, - 0x004c, 0x1508, 0x1508, 0x0002, 0x004c, 0x1559, 0x1559, 0x0003, - 0x0000, 0x0523, 0x0528, 0x0003, 0x004c, 0x14a8, 0x14c5, 0x14e2, - 0x0002, 0x052b, 0x052f, 0x0002, 0x004c, 0x1508, 0x1508, 0x0002, - 0x004c, 0x1559, 0x1559, 0x0003, 0x0000, 0x0537, 0x053c, 0x0003, - 0x004c, 0x158b, 0x15ab, 0x15cb, 0x0002, 0x053f, 0x0543, 0x0002, - 0x004c, 0x1616, 0x15f4, 0x0002, 0x004c, 0x166d, 0x1641, 0x0003, - 0x0000, 0x054b, 0x0550, 0x0003, 0x004c, 0x158b, 0x15ab, 0x15cb, - // Entry 34740 - 3477F - 0x0002, 0x0553, 0x0557, 0x0002, 0x004c, 0x1616, 0x1616, 0x0002, - 0x004c, 0x166d, 0x166d, 0x0003, 0x0000, 0x055f, 0x0564, 0x0003, - 0x004c, 0x158b, 0x15ab, 0x15cb, 0x0002, 0x0567, 0x056b, 0x0002, - 0x004c, 0x1616, 0x1616, 0x0002, 0x004c, 0x166d, 0x166d, 0x0003, - 0x0000, 0x0573, 0x0578, 0x0003, 0x004c, 0x16a2, 0x16bc, 0x16d6, - 0x0002, 0x057b, 0x057f, 0x0002, 0x004c, 0x1715, 0x16f9, 0x0002, - 0x004c, 0x1760, 0x173a, 0x0003, 0x0000, 0x0587, 0x058c, 0x0003, - 0x004c, 0x16a2, 0x16bc, 0x16d6, 0x0002, 0x058f, 0x0593, 0x0002, - // Entry 34780 - 347BF - 0x004c, 0x1715, 0x1715, 0x0002, 0x004c, 0x1760, 0x1760, 0x0003, - 0x0000, 0x059b, 0x05a0, 0x0003, 0x004c, 0x16a2, 0x16bc, 0x16d6, - 0x0002, 0x05a3, 0x05a7, 0x0002, 0x004c, 0x1715, 0x1715, 0x0002, - 0x004c, 0x1760, 0x1760, 0x0001, 0x05ad, 0x0001, 0x004c, 0x178f, - 0x0003, 0x05b4, 0x05b7, 0x05bb, 0x0001, 0x004c, 0x17c3, 0x0002, - 0x004c, 0xffff, 0x17d3, 0x0002, 0x05be, 0x05c2, 0x0002, 0x004c, - 0x17ea, 0x17ea, 0x0002, 0x004c, 0x1804, 0x1804, 0x0003, 0x05ca, - 0x0000, 0x05cd, 0x0001, 0x004c, 0x17c3, 0x0002, 0x05d0, 0x05d4, - // Entry 347C0 - 347FF - 0x0002, 0x004c, 0x17ea, 0x17ea, 0x0002, 0x004c, 0x1804, 0x1804, - 0x0003, 0x05dc, 0x0000, 0x05df, 0x0001, 0x004c, 0x17c3, 0x0002, - 0x05e2, 0x05e6, 0x0002, 0x004c, 0x17ea, 0x17ea, 0x0002, 0x004c, - 0x1804, 0x1804, 0x0003, 0x05ee, 0x05f1, 0x05f5, 0x0001, 0x004c, - 0x1828, 0x0002, 0x004c, 0xffff, 0x1838, 0x0002, 0x05f8, 0x05fc, - 0x0002, 0x004c, 0x1858, 0x1858, 0x0002, 0x004c, 0x1872, 0x1872, - 0x0003, 0x0604, 0x0000, 0x0607, 0x0001, 0x004c, 0x1828, 0x0002, - 0x060a, 0x060e, 0x0002, 0x004c, 0x1858, 0x1858, 0x0002, 0x004c, - // Entry 34800 - 3483F - 0x1872, 0x1872, 0x0003, 0x0616, 0x0000, 0x0619, 0x0001, 0x004c, - 0x1828, 0x0002, 0x061c, 0x0620, 0x0002, 0x004c, 0x1858, 0x1858, - 0x0002, 0x004c, 0x1872, 0x1872, 0x0003, 0x0628, 0x062b, 0x062f, - 0x0001, 0x004c, 0x1896, 0x0002, 0x002d, 0xffff, 0x0ccc, 0x0002, - 0x0632, 0x0636, 0x0002, 0x004c, 0x18ac, 0x18ac, 0x0002, 0x004c, - 0x18cc, 0x18cc, 0x0003, 0x063e, 0x0000, 0x0641, 0x0001, 0x004c, - 0x1896, 0x0002, 0x0644, 0x0648, 0x0002, 0x004c, 0x18ac, 0x18ac, - 0x0002, 0x004c, 0x18cc, 0x18cc, 0x0003, 0x0650, 0x0000, 0x0653, - // Entry 34840 - 3487F - 0x0001, 0x004c, 0x1896, 0x0002, 0x0656, 0x065a, 0x0002, 0x004c, - 0x18ac, 0x18ac, 0x0002, 0x004c, 0x18cc, 0x18cc, 0x0001, 0x0660, - 0x0001, 0x002d, 0x0d49, 0x0004, 0x0668, 0x066d, 0x0672, 0x0681, - 0x0003, 0x0000, 0x1dc7, 0x3839, 0x38fe, 0x0003, 0x002d, 0x0d69, - 0x502a, 0x5035, 0x0002, 0x0000, 0x0675, 0x0003, 0x0000, 0x067c, - 0x0679, 0x0001, 0x004c, 0x18f6, 0x0003, 0x004c, 0xffff, 0x1926, - 0x196b, 0x0002, 0x0000, 0x0684, 0x0003, 0x071e, 0x07b4, 0x0688, - 0x0094, 0x004c, 0x1992, 0x19be, 0x19fa, 0x1a2d, 0x1a93, 0x1b4e, - // Entry 34880 - 348BF - 0x1bc8, 0x1c54, 0x1cd7, 0x1d48, 0x1dc2, 0xffff, 0x1e42, 0x1ea7, - 0x1f18, 0x1fdb, 0x20b1, 0x2158, 0x220c, 0x2314, 0x2429, 0x2503, - 0x25c4, 0x265c, 0x26f4, 0x2772, 0x278f, 0x27db, 0x285f, 0x28bf, - 0x2939, 0x2983, 0x29e8, 0x2a5c, 0x2ac4, 0x2b42, 0x2b72, 0x2bc5, - 0x2c70, 0x2d11, 0x2d71, 0x2d8b, 0x2dcb, 0x2e1f, 0x2e90, 0x2ef2, - 0x2fd8, 0x3076, 0x30ec, 0x31b3, 0x326e, 0x32ce, 0x3301, 0x335a, - 0x3383, 0x33cc, 0x343e, 0x346e, 0x34e3, 0x35f0, 0x36b8, 0x36dc, - 0x3726, 0x37b1, 0x382b, 0x3891, 0x38bb, 0x38eb, 0x3914, 0x395c, - // Entry 348C0 - 348FF - 0x399b, 0x39f7, 0x3a6e, 0x3b0f, 0x3b7d, 0xffff, 0x3bcb, 0x3c04, - 0x3c60, 0x3cc0, 0x3d0c, 0x3d9c, 0x3dc8, 0x3e10, 0x3e72, 0x3ec2, - 0x3f34, 0x3f54, 0x3f7a, 0x3f9d, 0x3fe4, 0x4050, 0x40b0, 0x41a1, - 0x4260, 0x42fa, 0x4360, 0x4383, 0x439d, 0x43f0, 0x44c0, 0x4582, - 0x461b, 0x4632, 0x46a8, 0x4798, 0x484b, 0x48e0, 0x4964, 0x497e, - 0x49d5, 0x4a64, 0x4ae7, 0x4b5f, 0x4be2, 0x4ca8, 0x4cc8, 0x4ce5, - 0x4d08, 0x4d2b, 0x4d68, 0xffff, 0x4df4, 0x4e42, 0x4e6b, 0x4e9b, - 0x4ec8, 0x4efb, 0x4f1e, 0x4f3b, 0x4f75, 0x4fc9, 0x4ff2, 0x502c, - // Entry 34900 - 3493F - 0x5092, 0x50de, 0x5187, 0x51c4, 0x5265, 0x5315, 0x5387, 0x53e5, - 0x54a7, 0x5531, 0x5551, 0x5572, 0x55c6, 0x566a, 0x0094, 0x004c, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1a60, 0x1b2b, 0x1bae, 0x1c2e, - 0x1cba, 0x1d2b, 0x1d9c, 0xffff, 0x1e28, 0x1e90, 0x1eef, 0x1f9c, - 0x208b, 0x212f, 0x21c4, 0x22b6, 0x23ea, 0x24c1, 0x25a1, 0x263c, - 0x26ce, 0xffff, 0xffff, 0x27b2, 0xffff, 0x289b, 0xffff, 0x2969, - 0x29d1, 0x2a48, 0x2a9e, 0xffff, 0xffff, 0x2b99, 0x2c4f, 0x2cee, - 0xffff, 0xffff, 0xffff, 0x2df8, 0xffff, 0x2eb3, 0x2fa2, 0xffff, - // Entry 34940 - 3497F - 0x30b3, 0x317a, 0x3257, 0xffff, 0xffff, 0xffff, 0xffff, 0x33ac, - 0xffff, 0xffff, 0x349b, 0x35a5, 0xffff, 0xffff, 0x36f9, 0x379a, - 0x3811, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x39dd, - 0x3a45, 0x3af2, 0x3b63, 0xffff, 0xffff, 0xffff, 0x3c3d, 0xffff, - 0x3cdd, 0xffff, 0xffff, 0x3dec, 0xffff, 0x3ea2, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3fc7, 0xffff, 0x406a, 0x4162, 0x4239, 0x42e0, - 0xffff, 0xffff, 0xffff, 0x43ba, 0x448e, 0x453e, 0xffff, 0xffff, - 0x4662, 0x4766, 0x482e, 0x48b7, 0xffff, 0xffff, 0x49b2, 0x4a4d, - // Entry 34980 - 349BF - 0x4ac4, 0xffff, 0x4b8c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x4d48, 0xffff, 0x4dda, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4f58, 0xffff, 0xffff, 0x5012, 0xffff, 0x50a9, - 0xffff, 0x51a4, 0x5236, 0x52f5, 0xffff, 0x53b3, 0x547b, 0xffff, - 0xffff, 0xffff, 0x55a6, 0x5638, 0x0094, 0x004c, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1ad3, 0x1b7e, 0x1bef, 0x1c87, 0x1d01, 0x1d72, - 0x1df5, 0xffff, 0x1e69, 0x1ecb, 0x1f4e, 0x2027, 0x20e4, 0x218e, - 0x2261, 0x237f, 0x2475, 0x2552, 0x25f4, 0x2689, 0x2727, 0xffff, - // Entry 349C0 - 349FF - 0xffff, 0x2811, 0xffff, 0x28f0, 0xffff, 0x29aa, 0x2a0c, 0x2a7d, - 0x2af7, 0xffff, 0xffff, 0x2bfe, 0x2c9e, 0x2d41, 0xffff, 0xffff, - 0xffff, 0x2e53, 0xffff, 0x2f3e, 0x301b, 0xffff, 0x3132, 0x31f9, - 0x3292, 0xffff, 0xffff, 0xffff, 0xffff, 0x33f9, 0xffff, 0xffff, - 0x3538, 0x3648, 0xffff, 0xffff, 0x3760, 0x37d5, 0x3852, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a1e, 0x3aa4, 0x3b39, - 0x3ba4, 0xffff, 0xffff, 0xffff, 0x3c90, 0xffff, 0x3d48, 0xffff, - 0xffff, 0x3e41, 0xffff, 0x3eef, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 34A00 - 34A3F - 0x400e, 0xffff, 0x4109, 0x41ed, 0x4294, 0x4321, 0xffff, 0xffff, - 0xffff, 0x4433, 0x44ff, 0x45d0, 0xffff, 0xffff, 0x46fb, 0x47d7, - 0x4875, 0x4916, 0xffff, 0xffff, 0x4a05, 0x4a88, 0x4b17, 0xffff, - 0x4c45, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4d95, 0xffff, - 0x4e1b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x4f9f, 0xffff, 0xffff, 0x5053, 0xffff, 0x5120, 0xffff, 0x51f1, - 0x52a1, 0x5342, 0xffff, 0x5424, 0x54e0, 0xffff, 0xffff, 0xffff, - 0x55f3, 0x56a9, 0x0003, 0x0004, 0x0000, 0x0026, 0x0008, 0x0000, - // Entry 34A40 - 34A7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0007, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0002, 0x0453, 0x0001, - 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, - 0x0004, 0x0000, 0x0000, 0x0000, 0x002b, 0x0001, 0x002d, 0x0003, - 0x0000, 0x0000, 0x0031, 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 34A80 - 34ABF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0003, - 0x0004, 0x07c7, 0x0be1, 0x0012, 0x0017, 0x0038, 0x013e, 0x0000, - 0x01c8, 0x0000, 0x025e, 0x0289, 0x0494, 0x051e, 0x0590, 0x0000, - // Entry 34AC0 - 34AFF - 0x0000, 0x0000, 0x0000, 0x0616, 0x0733, 0x07a5, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, - 0x0022, 0x0001, 0x0024, 0x0001, 0x0000, 0x0000, 0x0004, 0x0035, - 0x002f, 0x002c, 0x0032, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x000a, - 0x0043, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, 0x0000, 0x012d, - 0x007a, 0x008d, 0x0002, 0x0046, 0x0068, 0x0003, 0x004a, 0x0000, - 0x0059, 0x000d, 0x004d, 0xffff, 0x0000, 0x0006, 0x000c, 0x0012, - // Entry 34B00 - 34B3F - 0x0018, 0x001e, 0x0024, 0x002a, 0x0030, 0x0036, 0x003d, 0x0044, - 0x000d, 0x004d, 0xffff, 0x004b, 0x0053, 0x005b, 0x0063, 0x006b, - 0x0073, 0x007b, 0x0083, 0x008b, 0x0093, 0x009c, 0x00a5, 0x0002, - 0x0000, 0x006b, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x0003, 0x007e, 0x0089, 0x0083, 0x0003, 0x0000, 0xffff, - 0xffff, 0x004e, 0x0004, 0x0000, 0xffff, 0xffff, 0xffff, 0x004e, - 0x0002, 0x0000, 0xffff, 0x0055, 0x0006, 0x0094, 0x0000, 0x0000, - // Entry 34B40 - 34B7F - 0x00a7, 0x00c6, 0x0109, 0x0001, 0x0096, 0x0001, 0x0098, 0x000d, - 0x0000, 0xffff, 0x005a, 0x005d, 0x0062, 0x0066, 0x006a, 0x2a54, - 0x25d6, 0x0075, 0x0079, 0x007e, 0x2226, 0x0085, 0x0001, 0x00a9, - 0x0001, 0x00ab, 0x0019, 0x004d, 0xffff, 0x00ae, 0x00c1, 0x00cc, - 0x00de, 0x00e8, 0x00f8, 0x0102, 0x0115, 0x011f, 0x012b, 0x0135, - 0x013a, 0x013f, 0x0153, 0x0166, 0x0171, 0x017c, 0x0187, 0x0194, - 0x01a8, 0x01b6, 0x01c3, 0x01ce, 0x01d3, 0x0001, 0x00c8, 0x0001, - 0x00ca, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, 0x01cc, 0x01d5, - // Entry 34B80 - 34BBF - 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, 0x020d, 0x0214, - 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, 0x024c, 0x0253, - 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, 0x028a, 0x0293, - 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, 0x02cc, 0x02d2, - 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, 0x0309, 0x0311, - 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, 0x0349, 0x0351, - 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, 0x0389, 0x0390, - 0x0001, 0x010b, 0x0001, 0x010d, 0x000d, 0x001b, 0xffff, 0x00cd, - // Entry 34BC0 - 34BFF - 0x27d9, 0x27dc, 0x27e3, 0x27ea, 0x27f0, 0x27f6, 0x27fc, 0x2801, - 0x2805, 0x27cb, 0x280a, 0x0004, 0x012a, 0x0124, 0x0121, 0x0127, - 0x0001, 0x0025, 0x00da, 0x0001, 0x0010, 0x0026, 0x0001, 0x0010, - 0x002f, 0x0001, 0x001e, 0x0206, 0x0004, 0x013b, 0x0135, 0x0132, - 0x0138, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0147, 0x0000, - 0x0000, 0x0000, 0x01b2, 0x0000, 0x0000, 0x9006, 0x0002, 0x014a, - 0x017e, 0x0003, 0x014e, 0x015e, 0x016e, 0x000e, 0x0026, 0xffff, - // Entry 34C00 - 34C3F - 0x12e5, 0x12e9, 0x12ef, 0x12f5, 0x12fc, 0x3510, 0x3517, 0x1312, - 0x3520, 0x1325, 0x132f, 0x1334, 0x133a, 0x000e, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0026, 0xffff, - 0x12e5, 0x12e9, 0x12ef, 0x12f5, 0x12fc, 0x3510, 0x3517, 0x1312, - 0x3520, 0x1325, 0x132f, 0x1334, 0x133a, 0x0003, 0x0182, 0x0192, - 0x01a2, 0x000e, 0x0026, 0xffff, 0x12e5, 0x12e9, 0x12ef, 0x12f5, - 0x12fc, 0x3510, 0x3517, 0x1312, 0x3520, 0x1325, 0x132f, 0x1334, - // Entry 34C40 - 34C7F - 0x133a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x0422, 0x000e, 0x0026, 0xffff, 0x12e5, 0x12e9, 0x12ef, 0x12f5, - 0x12fc, 0x3510, 0x3517, 0x1312, 0x3520, 0x1325, 0x132f, 0x1334, - 0x133a, 0x0003, 0x01bc, 0x01c2, 0x01b6, 0x0001, 0x01b8, 0x0002, - 0x0000, 0x0425, 0x042a, 0x0001, 0x01be, 0x0002, 0x0000, 0x0425, - 0x042a, 0x0001, 0x01c4, 0x0002, 0x0000, 0x0425, 0x042a, 0x0008, - 0x01d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x023c, 0x0000, 0x024d, - // Entry 34C80 - 34CBF - 0x0002, 0x01d4, 0x0208, 0x0003, 0x01d8, 0x01e8, 0x01f8, 0x000e, - 0x0026, 0xffff, 0x133f, 0x134b, 0x3528, 0x352e, 0x135f, 0x1366, - 0x136f, 0x1378, 0x3535, 0x1387, 0x353c, 0x1393, 0x139b, 0x000e, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, - 0x0026, 0xffff, 0x133f, 0x134b, 0x3528, 0x352e, 0x135f, 0x1366, - 0x136f, 0x1378, 0x3535, 0x1387, 0x353c, 0x1393, 0x139b, 0x0003, - 0x020c, 0x021c, 0x022c, 0x000e, 0x0026, 0xffff, 0x133f, 0x134b, - // Entry 34CC0 - 34CFF - 0x3528, 0x352e, 0x135f, 0x1366, 0x136f, 0x1378, 0x3535, 0x1387, - 0x353c, 0x1393, 0x139b, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, - 0x3871, 0x3874, 0x0422, 0x000e, 0x0026, 0xffff, 0x133f, 0x134b, - 0x3528, 0x352e, 0x135f, 0x1366, 0x136f, 0x1378, 0x3535, 0x1387, - 0x353c, 0x1393, 0x139b, 0x0004, 0x024a, 0x0244, 0x0241, 0x0247, - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0026, 0x1181, 0x0004, 0x025b, 0x0255, 0x0252, - // Entry 34D00 - 34D3F - 0x0258, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0267, 0x0000, 0x0278, 0x0004, 0x0275, - 0x026f, 0x026c, 0x0272, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0004, - 0x0286, 0x0280, 0x027d, 0x0283, 0x0001, 0x0026, 0x14d4, 0x0001, - 0x0026, 0x14d4, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0292, 0x02f7, 0x034e, 0x0383, 0x043c, 0x0461, 0x0472, - // Entry 34D40 - 34D7F - 0x0483, 0x0002, 0x0295, 0x02c6, 0x0003, 0x0299, 0x02a8, 0x02b7, - 0x000d, 0x0015, 0xffff, 0x000b, 0x23dd, 0x2c0c, 0x2439, 0x2c11, - 0x2383, 0x2388, 0x2442, 0x238d, 0x2447, 0x244c, 0x2c15, 0x000d, - 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, - 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0039, - 0xffff, 0x00e5, 0x00ed, 0x70c9, 0x70cf, 0x70d5, 0x70d9, 0x70de, - 0x70e3, 0x70ec, 0x70f6, 0x70fe, 0x7107, 0x0003, 0x02ca, 0x02d9, - 0x02e8, 0x000d, 0x0015, 0xffff, 0x000b, 0x23dd, 0x2c0c, 0x2439, - // Entry 34D80 - 34DBF - 0x2c1a, 0x2383, 0x2388, 0x2442, 0x238d, 0x2447, 0x244c, 0x2c15, - 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, - 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, - 0x0039, 0xffff, 0x00e5, 0x00ed, 0x70c9, 0x70cf, 0x7110, 0x70d9, - 0x70de, 0x70e3, 0x70ec, 0x70f6, 0x70fe, 0x7107, 0x0002, 0x02fa, - 0x0324, 0x0005, 0x0300, 0x0309, 0x031b, 0x0000, 0x0312, 0x0007, - 0x004d, 0x01d8, 0x01db, 0x01de, 0x01e1, 0x01e4, 0x01e7, 0x01ea, - 0x0007, 0x0000, 0x22db, 0x297a, 0x297c, 0x2159, 0x297c, 0x2485, - // Entry 34DC0 - 34DFF - 0x22db, 0x0007, 0x004d, 0x01d8, 0x01db, 0x01de, 0x01e1, 0x01e4, - 0x01e7, 0x01ea, 0x0007, 0x004d, 0x01ed, 0x01f4, 0x01fc, 0x0204, - 0x020d, 0x0217, 0x021f, 0x0005, 0x032a, 0x0333, 0x0345, 0x0000, - 0x033c, 0x0007, 0x004d, 0x01d8, 0x01db, 0x01de, 0x01e1, 0x01e4, - 0x01e7, 0x01ea, 0x0007, 0x0000, 0x22db, 0x297a, 0x297c, 0x2159, - 0x297c, 0x2485, 0x22db, 0x0007, 0x004d, 0x01d8, 0x01db, 0x01de, - 0x01e1, 0x01e4, 0x01e7, 0x01ea, 0x0007, 0x004d, 0x01ed, 0x01f4, - 0x01fc, 0x0204, 0x020d, 0x0217, 0x021f, 0x0002, 0x0351, 0x036a, - // Entry 34E00 - 34E3F - 0x0003, 0x0355, 0x035c, 0x0363, 0x0005, 0x0000, 0xffff, 0x1f17, - 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x004d, 0xffff, 0x0228, 0x0234, 0x0240, - 0x024c, 0x0003, 0x036e, 0x0375, 0x037c, 0x0005, 0x0000, 0xffff, - 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x004d, 0xffff, 0x0228, 0x0234, - 0x0240, 0x024c, 0x0002, 0x0386, 0x03e1, 0x0003, 0x038a, 0x03a7, - 0x03c4, 0x0007, 0x0395, 0x0398, 0x0392, 0x039b, 0x039e, 0x03a1, - // Entry 34E40 - 34E7F - 0x03a4, 0x0001, 0x004d, 0x0258, 0x0001, 0x001c, 0x0494, 0x0001, - 0x001c, 0x0499, 0x0001, 0x004d, 0x0264, 0x0001, 0x0000, 0x1fa5, - 0x0001, 0x004d, 0x026c, 0x0001, 0x004d, 0x0272, 0x0007, 0x03b2, - 0x03b5, 0x03af, 0x03b8, 0x03bb, 0x03be, 0x03c1, 0x0001, 0x004d, - 0x0258, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, - 0x004d, 0x0278, 0x0001, 0x004d, 0x0286, 0x0001, 0x004d, 0x0293, - 0x0001, 0x004d, 0x029f, 0x0007, 0x03cf, 0x03d2, 0x03cc, 0x03d5, - 0x03d8, 0x03db, 0x03de, 0x0001, 0x004d, 0x0258, 0x0001, 0x001c, - // Entry 34E80 - 34EBF - 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x004d, 0x0278, 0x0001, - 0x004d, 0x0286, 0x0001, 0x004d, 0x0293, 0x0001, 0x004d, 0x029f, - 0x0003, 0x03e5, 0x0402, 0x041f, 0x0007, 0x03f0, 0x03f3, 0x03ed, - 0x03f6, 0x03f9, 0x03fc, 0x03ff, 0x0001, 0x004d, 0x0258, 0x0001, - 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, 0x004d, 0x0264, - 0x0001, 0x0000, 0x1fa5, 0x0001, 0x004d, 0x026c, 0x0001, 0x004d, - 0x0272, 0x0007, 0x040d, 0x0410, 0x040a, 0x0413, 0x0416, 0x0419, - 0x041c, 0x0001, 0x004d, 0x0258, 0x0001, 0x001c, 0x0494, 0x0001, - // Entry 34EC0 - 34EFF - 0x001c, 0x0499, 0x0001, 0x004d, 0x0264, 0x0001, 0x0000, 0x1fa5, - 0x0001, 0x004d, 0x026c, 0x0001, 0x004d, 0x0272, 0x0007, 0x042a, - 0x042d, 0x0427, 0x0430, 0x0433, 0x0436, 0x0439, 0x0001, 0x004d, - 0x0258, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0001, - 0x004d, 0x0264, 0x0001, 0x0000, 0x1fa5, 0x0001, 0x004d, 0x026c, - 0x0001, 0x004d, 0x0272, 0x0003, 0x044b, 0x0456, 0x0440, 0x0002, - 0x0443, 0x0447, 0x0002, 0x0000, 0x1fb5, 0x3902, 0x0002, 0x004d, - 0x02ab, 0x02c5, 0x0002, 0x044e, 0x0452, 0x0002, 0x004c, 0x02ff, - // Entry 34F00 - 34F3F - 0x030d, 0x0002, 0x0001, 0x0005, 0x203d, 0x0002, 0x0459, 0x045d, - 0x0002, 0x0001, 0x0000, 0x000c, 0x0002, 0x0001, 0x0016, 0x2042, - 0x0004, 0x046f, 0x0469, 0x0466, 0x046c, 0x0001, 0x0001, 0x1fa2, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x001e, - 0x0206, 0x0004, 0x0480, 0x047a, 0x0477, 0x047d, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x0491, 0x048b, 0x0488, 0x048e, 0x0001, - 0x0026, 0x14d4, 0x0001, 0x0026, 0x14d4, 0x0001, 0x0000, 0x03c6, - // Entry 34F40 - 34F7F - 0x0001, 0x0000, 0x03c6, 0x0006, 0x049b, 0x0000, 0x0000, 0x0000, - 0x0506, 0x050d, 0x0002, 0x049e, 0x04d2, 0x0003, 0x04a2, 0x04b2, - 0x04c2, 0x000e, 0x0026, 0x1512, 0x14e1, 0x14e9, 0x3542, 0x3549, - 0x14ff, 0x1506, 0x354f, 0x3554, 0x151f, 0x355a, 0x152a, 0x3560, - 0x1535, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x0422, 0x000e, 0x0026, 0x1512, 0x14e1, 0x14e9, 0x3542, 0x3549, - 0x14ff, 0x1506, 0x354f, 0x3554, 0x151f, 0x355a, 0x152a, 0x3560, - // Entry 34F80 - 34FBF - 0x1535, 0x0003, 0x04d6, 0x04e6, 0x04f6, 0x000e, 0x0026, 0x1512, - 0x14e1, 0x14e9, 0x3542, 0x3549, 0x14ff, 0x1506, 0x354f, 0x3554, - 0x151f, 0x355a, 0x152a, 0x3560, 0x1535, 0x000e, 0x0000, 0x003f, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0026, 0x1512, - 0x14e1, 0x14e9, 0x3542, 0x3549, 0x14ff, 0x1506, 0x354f, 0x3554, - 0x151f, 0x355a, 0x152a, 0x3560, 0x1535, 0x0001, 0x0508, 0x0001, - 0x050a, 0x0001, 0x0000, 0x04ef, 0x0004, 0x051b, 0x0515, 0x0512, - // Entry 34FC0 - 34FFF - 0x0518, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0005, 0x0524, 0x0000, - 0x0000, 0x0000, 0x0589, 0x0002, 0x0527, 0x0558, 0x0003, 0x052b, - 0x053a, 0x0549, 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, - 0x24ac, 0x24b6, 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, - 0x24eb, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, 0x24b6, - // Entry 35000 - 3503F - 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, 0x0003, - 0x055c, 0x056b, 0x057a, 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, - 0x24a3, 0x24ac, 0x24b6, 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, - 0x24e4, 0x24eb, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x000d, 0x0000, 0xffff, 0x05a2, 0x2499, 0x24a3, 0x24ac, - 0x24b6, 0x24c0, 0x24cc, 0x24d4, 0x05e1, 0x24dd, 0x24e4, 0x24eb, - 0x0001, 0x058b, 0x0001, 0x058d, 0x0001, 0x0025, 0x05c0, 0x0008, - // Entry 35040 - 3507F - 0x0599, 0x0000, 0x0000, 0x0000, 0x05fe, 0x0605, 0x0000, 0x9006, - 0x0002, 0x059c, 0x05cd, 0x0003, 0x05a0, 0x05af, 0x05be, 0x000d, - 0x0026, 0xffff, 0x153c, 0x3563, 0x3568, 0x356f, 0x1556, 0x155e, - 0x3577, 0x156c, 0x357c, 0x1576, 0x157c, 0x1586, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0026, 0xffff, - 0x1590, 0x3581, 0x15a0, 0x15b0, 0x15c1, 0x15d1, 0x3587, 0x15e8, - 0x358d, 0x15fa, 0x1601, 0x1610, 0x0003, 0x05d1, 0x05e0, 0x05ef, - // Entry 35080 - 350BF - 0x000d, 0x0026, 0xffff, 0x153c, 0x3563, 0x3568, 0x356f, 0x1556, - 0x155e, 0x3577, 0x156c, 0x357c, 0x1576, 0x157c, 0x1586, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0026, - 0xffff, 0x1590, 0x3581, 0x15a0, 0x15b0, 0x15c1, 0x15d1, 0x3587, - 0x15e8, 0x358d, 0x15fa, 0x1601, 0x1610, 0x0001, 0x0600, 0x0001, - 0x0602, 0x0001, 0x0026, 0x161d, 0x0004, 0x0613, 0x060d, 0x060a, - 0x0610, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, - // Entry 350C0 - 350FF - 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x061f, 0x0711, 0x0000, 0x0722, 0x0001, 0x0621, - 0x0001, 0x0623, 0x00ec, 0x0000, 0x06cb, 0x06dd, 0x06f1, 0x0705, - 0x0719, 0x072c, 0x073e, 0x0750, 0x0762, 0x0775, 0x0787, 0x2074, - 0x208d, 0x20a7, 0x20bf, 0x20d7, 0x081e, 0x20ed, 0x0843, 0x0857, - 0x086a, 0x087d, 0x0891, 0x08a3, 0x08b5, 0x08c7, 0x20fe, 0x08ed, - 0x0900, 0x0914, 0x0926, 0x093a, 0x094e, 0x095f, 0x0972, 0x0985, - 0x0999, 0x09ae, 0x09c2, 0x09d3, 0x09e6, 0x09f7, 0x0a0b, 0x0a20, - // Entry 35100 - 3513F - 0x0a33, 0x0a46, 0x0a58, 0x0a6a, 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, - 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, 0x0b1e, 0x0b32, 0x0b48, 0x0b60, - 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, - 0x0c23, 0x0c37, 0x0c4c, 0x26dd, 0x0c74, 0x26f0, 0x0c9f, 0x0cb3, - 0x0cc8, 0x0cdd, 0x210f, 0x0d07, 0x2707, 0x271a, 0x0d47, 0x0d5b, - 0x0d6f, 0x0d85, 0x272d, 0x0db0, 0x0dc3, 0x0dd7, 0x0def, 0x0e04, - 0x0e19, 0x2755, 0x0e43, 0x0e57, 0x0e6d, 0x0e80, 0x0e96, 0x0eaa, - 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, 0x0f12, 0x0f26, 0x0f39, 0x0f50, - // Entry 35140 - 3517F - 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, 0x2793, 0x27a6, 0x0fe6, 0x0ffd, - 0x27bc, 0x1028, 0x103c, 0x1051, 0x1066, 0x107a, 0x108e, 0x27d3, - 0x10b8, 0x10cf, 0x10e3, 0x2122, 0x1110, 0x1124, 0x1139, 0x114d, - 0x1163, 0x1178, 0x118d, 0x27e9, 0x11ba, 0x27fc, 0x11e7, 0x11fb, - 0x120f, 0x1224, 0x1238, 0x124d, 0x1262, 0x1276, 0x280f, 0x12a0, - 0x12b5, 0x12ca, 0x12df, 0x2823, 0x1308, 0x2839, 0x1335, 0x134b, - 0x2454, 0x1374, 0x1388, 0x139e, 0x13b4, 0x13ca, 0x13e0, 0x13f4, - 0x140b, 0x141f, 0x1435, 0x144b, 0x145f, 0x1473, 0x1489, 0x149c, - // Entry 35180 - 351BF - 0x14b3, 0x14c8, 0x284e, 0x14f5, 0x150b, 0x1522, 0x1538, 0x154f, - 0x1565, 0x157b, 0x158f, 0x15a4, 0x15bb, 0x15d0, 0x15e4, 0x15f8, - 0x160d, 0x1621, 0x2861, 0x164d, 0x1661, 0x1676, 0x168a, 0x16a0, - 0x16b6, 0x2876, 0x288a, 0x16f7, 0x170c, 0x289d, 0x28b2, 0x174a, - 0x175e, 0x1773, 0x28c9, 0x179b, 0x17b1, 0x17c7, 0x17db, 0x17f2, - 0x1808, 0x181d, 0x1832, 0x28dd, 0x2468, 0x1874, 0x28f0, 0x189e, - 0x18b3, 0x18c8, 0x18dd, 0x18f1, 0x1906, 0x191b, 0x192f, 0x1942, - 0x2902, 0x196d, 0x1983, 0x1997, 0x2915, 0x291b, 0x2923, 0x292a, - // Entry 351C0 - 351FF - 0x0004, 0x071f, 0x0719, 0x0716, 0x071c, 0x0001, 0x0001, 0x1f7d, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0026, - 0x1181, 0x0004, 0x0730, 0x072a, 0x0727, 0x072d, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0005, 0x0739, 0x0000, 0x0000, 0x0000, 0x079e, - 0x0002, 0x073c, 0x076d, 0x0003, 0x0740, 0x074f, 0x075e, 0x000d, - 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, - 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x000d, 0x0000, - // Entry 35200 - 3523F - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, - 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, 0x1a01, - 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0003, 0x0771, 0x0780, 0x078f, - 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, - 0x19f2, 0x19fc, 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, - // Entry 35240 - 3527F - 0xffff, 0x19c9, 0x19d3, 0x19df, 0x19e7, 0x19eb, 0x19f2, 0x19fc, - 0x1a01, 0x1a06, 0x1a0b, 0x1a0f, 0x1a16, 0x0001, 0x07a0, 0x0001, - 0x07a2, 0x0001, 0x0000, 0x1a1d, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x07ae, 0x07b6, 0x0000, 0x9006, 0x0001, 0x07b0, 0x0001, - 0x07b2, 0x0002, 0x004d, 0x02d8, 0x02e4, 0x0004, 0x07c4, 0x07be, - 0x07bb, 0x07c1, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0026, 0x1181, 0x0040, 0x0808, - 0x0000, 0x0000, 0x080d, 0x0824, 0x083b, 0x0852, 0x0869, 0x0880, - // Entry 35280 - 352BF - 0x0897, 0x08ae, 0x08c5, 0x08dc, 0x08f7, 0x0912, 0x0000, 0x0000, - 0x0000, 0x092d, 0x0946, 0x095f, 0x0000, 0x0000, 0x0000, 0x0978, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x097d, 0x0991, 0x09a5, - 0x09b9, 0x09cd, 0x09e1, 0x09f5, 0x0a09, 0x0a1d, 0x0a31, 0x0a45, - 0x0a59, 0x0a6d, 0x0a81, 0x0a95, 0x0aa9, 0x0abd, 0x0ad1, 0x0ae5, - 0x0af9, 0x0b0d, 0x0000, 0x0b21, 0x0000, 0x0b26, 0x0b3c, 0x0b4e, - 0x0b60, 0x0b76, 0x0b88, 0x0b9a, 0x0bb0, 0x0bc6, 0x0bdc, 0x0001, - 0x080a, 0x0001, 0x004d, 0x02eb, 0x0003, 0x0811, 0x0814, 0x0819, - // Entry 352C0 - 352FF - 0x0001, 0x0001, 0x0044, 0x0003, 0x004d, 0x02f4, 0x02ff, 0x0308, - 0x0002, 0x081c, 0x0820, 0x0002, 0x004d, 0x0315, 0x0315, 0x0002, - 0x004d, 0x0323, 0x0323, 0x0003, 0x0828, 0x082b, 0x0830, 0x0001, - 0x004d, 0x0334, 0x0003, 0x004d, 0x02f4, 0x02ff, 0x0308, 0x0002, - 0x0833, 0x0837, 0x0002, 0x004d, 0x0315, 0x0315, 0x0002, 0x004d, - 0x0323, 0x0323, 0x0003, 0x083f, 0x0842, 0x0847, 0x0001, 0x004d, - 0x0334, 0x0003, 0x004d, 0x02f4, 0x02ff, 0x0308, 0x0002, 0x084a, - 0x084e, 0x0002, 0x004d, 0x0315, 0x0315, 0x0002, 0x004d, 0x0323, - // Entry 35300 - 3533F - 0x0323, 0x0003, 0x0856, 0x0859, 0x085e, 0x0001, 0x0001, 0x0091, - 0x0003, 0x004d, 0x0337, 0x0346, 0x0353, 0x0002, 0x0861, 0x0865, - 0x0002, 0x004d, 0x0376, 0x0364, 0x0002, 0x004d, 0x039e, 0x0389, - 0x0003, 0x086d, 0x0870, 0x0875, 0x0001, 0x0001, 0x0091, 0x0003, - 0x004d, 0x0337, 0x0346, 0x0353, 0x0002, 0x0878, 0x087c, 0x0002, - 0x004d, 0x0376, 0x0364, 0x0002, 0x004d, 0x039e, 0x0389, 0x0003, - 0x0884, 0x0887, 0x088c, 0x0001, 0x0001, 0x0091, 0x0003, 0x004d, - 0x0337, 0x0346, 0x0353, 0x0002, 0x088f, 0x0893, 0x0002, 0x004d, - // Entry 35340 - 3537F - 0x0376, 0x0364, 0x0002, 0x004d, 0x039e, 0x0389, 0x0003, 0x089b, - 0x089e, 0x08a3, 0x0001, 0x0001, 0x011b, 0x0003, 0x004d, 0x03b4, - 0x03c1, 0x03cc, 0x0002, 0x08a6, 0x08aa, 0x0002, 0x004d, 0x03ea, - 0x03db, 0x0002, 0x004d, 0x040d, 0x03fb, 0x0003, 0x08b2, 0x08b5, - 0x08ba, 0x0001, 0x004d, 0x0421, 0x0003, 0x004d, 0x03b4, 0x03c1, - 0x03cc, 0x0002, 0x08bd, 0x08c1, 0x0002, 0x004d, 0x03ea, 0x03db, - 0x0002, 0x004d, 0x040d, 0x03fb, 0x0003, 0x08c9, 0x08cc, 0x08d1, - 0x0001, 0x004d, 0x0421, 0x0003, 0x004d, 0x03b4, 0x03c1, 0x03cc, - // Entry 35380 - 353BF - 0x0002, 0x08d4, 0x08d8, 0x0002, 0x004d, 0x03ea, 0x03db, 0x0002, - 0x004d, 0x040d, 0x03fb, 0x0004, 0x08e1, 0x08e4, 0x08e9, 0x08f4, - 0x0001, 0x0001, 0x019c, 0x0003, 0x004d, 0x0425, 0x0431, 0x043b, - 0x0002, 0x08ec, 0x08f0, 0x0002, 0x004d, 0x0457, 0x0449, 0x0002, - 0x004d, 0x0477, 0x0466, 0x0001, 0x004d, 0x0489, 0x0004, 0x08fc, - 0x08ff, 0x0904, 0x090f, 0x0001, 0x001c, 0x0079, 0x0003, 0x004d, - 0x0425, 0x0431, 0x043b, 0x0002, 0x0907, 0x090b, 0x0002, 0x004d, - 0x0457, 0x0449, 0x0002, 0x004d, 0x0477, 0x0466, 0x0001, 0x004d, - // Entry 353C0 - 353FF - 0x0489, 0x0004, 0x0917, 0x091a, 0x091f, 0x092a, 0x0001, 0x001c, - 0x0079, 0x0003, 0x004d, 0x0425, 0x0431, 0x043b, 0x0002, 0x0922, - 0x0926, 0x0002, 0x004d, 0x0457, 0x0449, 0x0002, 0x004d, 0x0477, - 0x0466, 0x0001, 0x004d, 0x0489, 0x0003, 0x0931, 0x0934, 0x093b, - 0x0001, 0x0001, 0x0230, 0x0005, 0x0026, 0x17ce, 0x17d7, 0x3595, - 0x17c2, 0x359c, 0x0002, 0x093e, 0x0942, 0x0002, 0x004d, 0x04a6, - 0x0499, 0x0002, 0x004d, 0x04c5, 0x04b5, 0x0003, 0x094a, 0x094d, - 0x0954, 0x0001, 0x0001, 0x0230, 0x0005, 0x0026, 0x17ce, 0x17d7, - // Entry 35400 - 3543F - 0x3595, 0x17c2, 0x359c, 0x0002, 0x0957, 0x095b, 0x0002, 0x004d, - 0x04d7, 0x0499, 0x0002, 0x004d, 0x04e4, 0x04b5, 0x0003, 0x0963, - 0x0966, 0x096d, 0x0001, 0x0001, 0x0230, 0x0005, 0x0026, 0x17ce, - 0x17d7, 0x3595, 0x17c2, 0x359c, 0x0002, 0x0970, 0x0974, 0x0002, - 0x004d, 0x04d7, 0x0499, 0x0002, 0x004d, 0x04e4, 0x04b5, 0x0001, - 0x097a, 0x0001, 0x004d, 0x04f4, 0x0003, 0x0000, 0x0981, 0x0986, - 0x0003, 0x004d, 0x0504, 0x0515, 0x0521, 0x0002, 0x0989, 0x098d, - 0x0002, 0x004d, 0x0546, 0x0536, 0x0002, 0x004d, 0x056b, 0x0558, - // Entry 35440 - 3547F - 0x0003, 0x0000, 0x0995, 0x099a, 0x0003, 0x004d, 0x0580, 0x058f, - 0x0599, 0x0002, 0x099d, 0x09a1, 0x0002, 0x004d, 0x05ac, 0x05ac, - 0x0002, 0x004d, 0x05ba, 0x05ba, 0x0003, 0x0000, 0x09a9, 0x09ae, - 0x0003, 0x004d, 0x05cb, 0x05d8, 0x05e0, 0x0002, 0x09b1, 0x09b5, - 0x0002, 0x004d, 0x05f1, 0x05f1, 0x0002, 0x004d, 0x05fd, 0x05fd, - 0x0003, 0x0000, 0x09bd, 0x09c2, 0x0003, 0x004d, 0x060c, 0x061e, - 0x062b, 0x0002, 0x09c5, 0x09c9, 0x0002, 0x004d, 0x0652, 0x0641, - 0x0002, 0x004d, 0x0679, 0x0665, 0x0003, 0x0000, 0x09d1, 0x09d6, - // Entry 35480 - 354BF - 0x0003, 0x004d, 0x068f, 0x069f, 0x06aa, 0x0002, 0x09d9, 0x09dd, - 0x0002, 0x004d, 0x06be, 0x06be, 0x0002, 0x004d, 0x06cd, 0x06cd, - 0x0003, 0x0000, 0x09e5, 0x09ea, 0x0003, 0x004d, 0x06df, 0x06ec, - 0x06f4, 0x0002, 0x09ed, 0x09f1, 0x0002, 0x004d, 0x0705, 0x0705, - 0x0002, 0x004d, 0x0711, 0x0711, 0x0003, 0x0000, 0x09f9, 0x09fe, - 0x0003, 0x004d, 0x0720, 0x0732, 0x073f, 0x0002, 0x0a01, 0x0a05, - 0x0002, 0x004d, 0x0766, 0x0755, 0x0002, 0x004d, 0x078d, 0x0779, - 0x0003, 0x0000, 0x0a0d, 0x0a12, 0x0003, 0x004d, 0x07a3, 0x07b3, - // Entry 354C0 - 354FF - 0x07be, 0x0002, 0x0a15, 0x0a19, 0x0002, 0x004d, 0x07d2, 0x07d2, - 0x0002, 0x004d, 0x07e1, 0x07e1, 0x0003, 0x0000, 0x0a21, 0x0a26, - 0x0003, 0x004d, 0x07f3, 0x0800, 0x0808, 0x0002, 0x0a29, 0x0a2d, - 0x0002, 0x004d, 0x0819, 0x0819, 0x0002, 0x004d, 0x0825, 0x0825, - 0x0003, 0x0000, 0x0a35, 0x0a3a, 0x0003, 0x004d, 0x0834, 0x0847, - 0x0855, 0x0002, 0x0a3d, 0x0a41, 0x0002, 0x004d, 0x087e, 0x086c, - 0x0002, 0x004d, 0x08a7, 0x0892, 0x0003, 0x0000, 0x0a49, 0x0a4e, - 0x0003, 0x004d, 0x08be, 0x08cf, 0x08db, 0x0002, 0x0a51, 0x0a55, - // Entry 35500 - 3553F - 0x0002, 0x004d, 0x08f0, 0x08f0, 0x0002, 0x004d, 0x0900, 0x0900, - 0x0003, 0x0000, 0x0a5d, 0x0a62, 0x0003, 0x004d, 0x0913, 0x0920, - 0x0928, 0x0002, 0x0a65, 0x0a69, 0x0002, 0x004d, 0x0939, 0x0939, - 0x0002, 0x004d, 0x0945, 0x0945, 0x0003, 0x0000, 0x0a71, 0x0a76, - 0x0003, 0x004d, 0x0954, 0x0968, 0x0977, 0x0002, 0x0a79, 0x0a7d, - 0x0002, 0x004d, 0x09a2, 0x098f, 0x0002, 0x004d, 0x09cd, 0x09b7, - 0x0003, 0x0000, 0x0a85, 0x0a8a, 0x0003, 0x004d, 0x09e5, 0x09f7, - 0x0a04, 0x0002, 0x0a8d, 0x0a91, 0x0002, 0x004d, 0x0a1a, 0x0a1a, - // Entry 35540 - 3557F - 0x0002, 0x004d, 0x0a2b, 0x0a2b, 0x0003, 0x0000, 0x0a99, 0x0a9e, - 0x0003, 0x004d, 0x0a3f, 0x0a4c, 0x0a54, 0x0002, 0x0aa1, 0x0aa5, - 0x0002, 0x004d, 0x0a65, 0x0a65, 0x0002, 0x004d, 0x0a71, 0x0a71, - 0x0003, 0x0000, 0x0aad, 0x0ab2, 0x0003, 0x004d, 0x0a80, 0x0a92, - 0x0a9f, 0x0002, 0x0ab5, 0x0ab9, 0x0002, 0x004d, 0x0ac6, 0x0ab5, - 0x0002, 0x004d, 0x0aed, 0x0ad9, 0x0003, 0x0000, 0x0ac1, 0x0ac6, - 0x0003, 0x004d, 0x0b03, 0x0b13, 0x0b1e, 0x0002, 0x0ac9, 0x0acd, - 0x0002, 0x004d, 0x0b32, 0x0b32, 0x0002, 0x004d, 0x0b41, 0x0b41, - // Entry 35580 - 355BF - 0x0003, 0x0000, 0x0ad5, 0x0ada, 0x0003, 0x004d, 0x0b53, 0x0b60, - 0x0b68, 0x0002, 0x0add, 0x0ae1, 0x0002, 0x004d, 0x0b79, 0x0b79, - 0x0002, 0x004d, 0x0b85, 0x0b85, 0x0003, 0x0000, 0x0ae9, 0x0aee, - 0x0003, 0x004d, 0x0b94, 0x0ba7, 0x0bb5, 0x0002, 0x0af1, 0x0af5, - 0x0002, 0x004d, 0x0bde, 0x0bcc, 0x0002, 0x004d, 0x0c07, 0x0bf2, - 0x0003, 0x0000, 0x0afd, 0x0b02, 0x0003, 0x004d, 0x0c1e, 0x0c2f, - 0x0c3b, 0x0002, 0x0b05, 0x0b09, 0x0002, 0x004d, 0x0c50, 0x0c50, - 0x0002, 0x004d, 0x0c60, 0x0c60, 0x0003, 0x0000, 0x0b11, 0x0b16, - // Entry 355C0 - 355FF - 0x0003, 0x004d, 0x0c73, 0x0c80, 0x0c88, 0x0002, 0x0b19, 0x0b1d, - 0x0002, 0x004d, 0x0c99, 0x0c99, 0x0002, 0x004d, 0x0ca5, 0x0ca5, - 0x0001, 0x0b23, 0x0001, 0x004d, 0x0cb4, 0x0003, 0x0b2a, 0x0b2d, - 0x0b31, 0x0001, 0x0001, 0x06f2, 0x0002, 0x004d, 0xffff, 0x0cbc, - 0x0002, 0x0b34, 0x0b38, 0x0002, 0x004d, 0x0ccb, 0x0ccb, 0x0002, - 0x004d, 0x0cd8, 0x0cd8, 0x0003, 0x0b40, 0x0000, 0x0b43, 0x0001, - 0x0001, 0x06f2, 0x0002, 0x0b46, 0x0b4a, 0x0002, 0x004d, 0x0ccb, - 0x0ccb, 0x0002, 0x004d, 0x0cd8, 0x0cd8, 0x0003, 0x0b52, 0x0000, - // Entry 35600 - 3563F - 0x0b55, 0x0001, 0x0001, 0x06f2, 0x0002, 0x0b58, 0x0b5c, 0x0002, - 0x004d, 0x0ccb, 0x0ccb, 0x0002, 0x004d, 0x0cd8, 0x0cd8, 0x0003, - 0x0b64, 0x0b67, 0x0b6b, 0x0001, 0x0001, 0x0720, 0x0002, 0x004d, - 0xffff, 0x0ce8, 0x0002, 0x0b6e, 0x0b72, 0x0002, 0x004d, 0x0d0a, - 0x0cfa, 0x0002, 0x004d, 0x0d2e, 0x0d1b, 0x0003, 0x0b7a, 0x0000, - 0x0b7d, 0x0001, 0x0041, 0x092f, 0x0002, 0x0b80, 0x0b84, 0x0002, - 0x004d, 0x0d42, 0x0d42, 0x0002, 0x004d, 0x0d50, 0x0d50, 0x0003, - 0x0b8c, 0x0000, 0x0b8f, 0x0001, 0x0041, 0x092f, 0x0002, 0x0b92, - // Entry 35640 - 3567F - 0x0b96, 0x0002, 0x004d, 0x0d42, 0x0d42, 0x0002, 0x004d, 0x0d50, - 0x0d50, 0x0003, 0x0b9e, 0x0ba1, 0x0ba5, 0x0001, 0x0025, 0x11c8, - 0x0002, 0x0015, 0xffff, 0x0adf, 0x0002, 0x0ba8, 0x0bac, 0x0002, - 0x004d, 0x0d72, 0x0d61, 0x0002, 0x004d, 0x0d98, 0x0d84, 0x0003, - 0x0bb4, 0x0bb7, 0x0bbb, 0x0001, 0x001c, 0x00c0, 0x0002, 0x0015, - 0xffff, 0x0adf, 0x0002, 0x0bbe, 0x0bc2, 0x0002, 0x004d, 0x0dad, - 0x0dad, 0x0002, 0x004d, 0x0dbb, 0x0dbb, 0x0003, 0x0bca, 0x0bcd, - 0x0bd1, 0x0001, 0x0000, 0x2002, 0x0002, 0x0015, 0xffff, 0x0adf, - // Entry 35680 - 356BF - 0x0002, 0x0bd4, 0x0bd8, 0x0002, 0x004d, 0x0dad, 0x0dad, 0x0002, - 0x004d, 0x0dbb, 0x0dbb, 0x0001, 0x0bde, 0x0001, 0x004d, 0x0dcc, - 0x0004, 0x0be6, 0x0beb, 0x0bf0, 0x0c15, 0x0003, 0x0000, 0x1dc7, - 0x3839, 0x38fe, 0x0003, 0x004d, 0x0dd5, 0x0dde, 0x0dec, 0x0002, - 0x0bff, 0x0bf3, 0x0003, 0x0000, 0x0bfa, 0x0bf7, 0x0001, 0x004d, - 0x0dfe, 0x0003, 0x004d, 0xffff, 0x0e19, 0x0e2a, 0x0003, 0x0c03, - 0x0c0f, 0x0c09, 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, - 0x0004, 0x0006, 0xffff, 0xffff, 0xffff, 0x05a4, 0x0004, 0x0028, - // Entry 356C0 - 356FF - 0xffff, 0xffff, 0xffff, 0x0e48, 0x0002, 0x0dfc, 0x0c18, 0x0003, - 0x0c1c, 0x0d5c, 0x0cbc, 0x009e, 0x004d, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0eb8, 0x0f05, 0x0f6f, 0x0fa4, 0x0fd9, 0x100e, 0x1046, - 0x107b, 0x10ad, 0x113d, 0x1178, 0x11b9, 0x1209, 0x1241, 0x1279, - 0x12d2, 0x134c, 0x139f, 0x13f2, 0x143f, 0x1471, 0xffff, 0xffff, - 0x14cc, 0xffff, 0x151e, 0xffff, 0x157e, 0x15b3, 0x15ee, 0x1623, - 0xffff, 0xffff, 0x168e, 0x16d2, 0x171c, 0xffff, 0xffff, 0xffff, - 0x178a, 0xffff, 0x17e0, 0x182d, 0xffff, 0x1893, 0x18da, 0x192a, - // Entry 35700 - 3573F - 0xffff, 0xffff, 0xffff, 0xffff, 0x19c9, 0xffff, 0xffff, 0x1a30, - 0x1a80, 0xffff, 0xffff, 0x1b07, 0x1b5d, 0x1b9b, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1c43, 0x1c78, 0x1cb0, 0x1cf4, - 0x1d29, 0xffff, 0xffff, 0x1dba, 0xffff, 0x1e03, 0xffff, 0xffff, - 0x1e73, 0xffff, 0x1f16, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f9a, - 0xffff, 0x1fea, 0x2046, 0x209c, 0x20dd, 0xffff, 0xffff, 0xffff, - 0x213d, 0x2193, 0x21e0, 0xffff, 0xffff, 0x2245, 0x22b8, 0x22f9, - 0x2325, 0xffff, 0xffff, 0x238e, 0x23d5, 0x2410, 0xffff, 0x2463, - // Entry 35740 - 3577F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2555, 0x258d, 0x25bf, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x267a, - 0xffff, 0xffff, 0x26d2, 0xffff, 0x271a, 0xffff, 0x2769, 0x27ad, - 0x27e8, 0xffff, 0x283e, 0x287f, 0xffff, 0xffff, 0xffff, 0x28f1, - 0x2929, 0xffff, 0xffff, 0x0e3a, 0x0f37, 0x10d9, 0x1108, 0xffff, - 0xffff, 0x1ec9, 0x24fd, 0x009e, 0x004d, 0x0e66, 0x0e75, 0x0e8e, - 0x0ea3, 0x0ecd, 0x0f11, 0x0f7c, 0x0fb1, 0x0fe6, 0x101c, 0x1053, - 0x1087, 0x10b7, 0x114c, 0x1189, 0x11cf, 0x1217, 0x124f, 0x1292, - // Entry 35780 - 357BF - 0x12f6, 0x1363, 0x13b6, 0x1407, 0x144b, 0x1480, 0x14ac, 0x14bb, - 0x14de, 0x1510, 0x1531, 0x1570, 0x158b, 0x15c2, 0x15fb, 0x1634, - 0x1664, 0x167b, 0x16a0, 0x16e4, 0x172a, 0x1754, 0x175f, 0x1777, - 0x179c, 0x17ce, 0x17f5, 0x1840, 0x1874, 0x18a6, 0x18f0, 0x1938, - 0x1962, 0x1976, 0x199d, 0x19b4, 0x19d9, 0x1a07, 0x1a1c, 0x1a46, - 0x1a96, 0x1ae6, 0x1af9, 0x1b1f, 0x1b6d, 0x1ba5, 0x1bc7, 0x1bd4, - 0x1be9, 0x1bfa, 0x1c15, 0x1c2c, 0x1c50, 0x1c86, 0x1cc2, 0x1d01, - 0x1d48, 0x1d94, 0x1da7, 0x1dc9, 0x1df5, 0x1e14, 0x1e44, 0x1e60, - // Entry 357C0 - 357FF - 0x1e8b, 0x1efe, 0x1f23, 0x1f4b, 0x1f5c, 0x1f6d, 0x1f84, 0x1fac, - 0x1fde, 0x2004, 0x205e, 0x20ad, 0x20e9, 0x210f, 0x211f, 0x212f, - 0x2155, 0x21a8, 0x21f2, 0x2224, 0x2230, 0x225e, 0x22c9, 0x2303, - 0x2336, 0x2366, 0x2373, 0x23a1, 0x23e4, 0x2420, 0x244e, 0x2481, - 0x24cb, 0x24e1, 0x24ee, 0x2538, 0x2548, 0x2563, 0x2599, 0x25ce, - 0x25fa, 0x2609, 0x2623, 0x2639, 0x264e, 0x265e, 0x2669, 0x2686, - 0x26ac, 0x26bc, 0x26e1, 0x270d, 0x272a, 0x2758, 0x277b, 0x27bc, - 0x27fa, 0x282c, 0x284f, 0x288e, 0x28ba, 0x28c6, 0x28d9, 0x28ff, - // Entry 35800 - 3583F - 0x293e, 0x1ad0, 0x229e, 0x0e44, 0x0f45, 0x10e4, 0x1115, 0x1565, - 0x1e55, 0x1ed6, 0x250c, 0x009e, 0x004d, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0eeb, 0x0f26, 0x0f92, 0x0fc7, 0x0ffc, 0x1033, 0x1069, - 0x109c, 0x10ca, 0x1164, 0x11a3, 0x11ee, 0x122e, 0x1266, 0x12b4, - 0x1323, 0x1383, 0x13d6, 0x1425, 0x1460, 0x1498, 0xffff, 0xffff, - 0x14f9, 0xffff, 0x154d, 0xffff, 0x15a1, 0x15da, 0x1611, 0x164e, - 0xffff, 0xffff, 0x16bb, 0x16ff, 0x1741, 0xffff, 0xffff, 0xffff, - 0x17b7, 0xffff, 0x1813, 0x185c, 0xffff, 0x18c2, 0x190f, 0x194f, - // Entry 35840 - 3587F - 0xffff, 0xffff, 0xffff, 0xffff, 0x19f2, 0xffff, 0xffff, 0x1a65, - 0x1ab5, 0xffff, 0xffff, 0x1b40, 0x1b86, 0x1bb8, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1c66, 0x1c9d, 0x1cdd, 0x1d17, - 0x1d70, 0xffff, 0xffff, 0x1de1, 0xffff, 0x1e2e, 0xffff, 0xffff, - 0x1eac, 0xffff, 0x1f39, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fc7, - 0xffff, 0x2027, 0x207f, 0x20c7, 0x20fe, 0xffff, 0xffff, 0xffff, - 0x2176, 0x21c6, 0x220d, 0xffff, 0xffff, 0x2280, 0x22e3, 0x2316, - 0x2350, 0xffff, 0xffff, 0x23bd, 0x23fc, 0x2439, 0xffff, 0x24a8, - // Entry 35880 - 358BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x257a, 0x25ae, 0x25e6, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x269b, - 0xffff, 0xffff, 0x26f9, 0xffff, 0x2743, 0xffff, 0x2796, 0x27d4, - 0x2815, 0xffff, 0x2869, 0x28a6, 0xffff, 0xffff, 0xffff, 0x2916, - 0x295c, 0xffff, 0xffff, 0x0e57, 0x0f5c, 0x10f8, 0x112b, 0xffff, - 0xffff, 0x1eec, 0x2524, 0x0003, 0x0e00, 0x0e66, 0x0e33, 0x0031, - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 358C0 - 358FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, - 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 35900 - 3593F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 35940 - 3597F - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, 0x0019, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0014, 0x0000, 0x0000, 0x0001, 0x0016, 0x0001, 0x001e, - 0x0218, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0022, - 0x0000, 0x0000, 0x0001, 0x0024, 0x0001, 0x001c, 0x04c7, 0x0003, - 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, - 0x0001, 0x000b, 0x0003, 0x0000, 0x0000, 0x000f, 0x0080, 0x004e, - // Entry 35980 - 359BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 359C0 - 359FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, - // Entry 35A00 - 35A3F - 0x0002, 0x0003, 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, - 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, - 0x0053, 0x0078, 0x008c, 0x00a4, 0x00b4, 0x00c5, 0x0000, 0x0001, - 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x004e, 0xffff, - 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, - // Entry 35A40 - 35A7F - 0x0024, 0x0028, 0x002d, 0x0032, 0x000d, 0x004e, 0xffff, 0x0037, - 0x0047, 0x0054, 0x0061, 0x006d, 0x007a, 0x0088, 0x009b, 0x00a9, - 0x00b9, 0x00c4, 0x00d6, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, - 0x0000, 0x0063, 0x0007, 0x0021, 0x00d9, 0x00e0, 0x00e7, 0x00eb, - 0x00ef, 0x36ef, 0x36f3, 0x0007, 0x0021, 0x00fd, 0x36f7, 0x3701, - 0x3717, 0x372e, 0x3744, 0x3757, 0x0002, 0x0000, 0x006f, 0x0007, - 0x0000, 0x2002, 0x1f9a, 0x2002, 0x2002, 0x2002, 0x1f9a, 0x2002, - 0x0001, 0x007a, 0x0003, 0x007e, 0x0000, 0x0085, 0x0005, 0x001c, - // Entry 35A80 - 35ABF - 0xffff, 0x13ba, 0x13bd, 0x13c0, 0x13c3, 0x0005, 0x004e, 0xffff, - 0x00e0, 0x00ed, 0x00fa, 0x0107, 0x0001, 0x008e, 0x0003, 0x0092, - 0x0000, 0x009b, 0x0002, 0x0095, 0x0098, 0x0001, 0x004e, 0x0113, - 0x0001, 0x004e, 0x0119, 0x0002, 0x009e, 0x00a1, 0x0001, 0x004e, - 0x0113, 0x0001, 0x004e, 0x0119, 0x0003, 0x00ae, 0x0000, 0x00a8, - 0x0001, 0x00aa, 0x0002, 0x004e, 0x011f, 0x012c, 0x0001, 0x00b0, - 0x0002, 0x004e, 0x0138, 0x013b, 0x0004, 0x00c2, 0x00bc, 0x00b9, - 0x00bf, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, - // Entry 35AC0 - 35AFF - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00d3, 0x00cd, - 0x00ca, 0x00d0, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0117, - 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0121, 0x0000, 0x0000, 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 35B00 - 35B3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0136, 0x0000, 0x013b, 0x0000, 0x0000, - 0x0140, 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0001, - 0x0119, 0x0001, 0x004e, 0x013e, 0x0001, 0x011e, 0x0001, 0x004e, - 0x014c, 0x0001, 0x0123, 0x0001, 0x004e, 0x0151, 0x0001, 0x0128, - 0x0001, 0x0021, 0x0235, 0x0002, 0x012e, 0x0131, 0x0001, 0x004e, - 0x0158, 0x0003, 0x004e, 0x015d, 0x0165, 0x016a, 0x0001, 0x0138, - 0x0001, 0x004e, 0x0173, 0x0001, 0x013d, 0x0001, 0x004e, 0x018d, - // Entry 35B40 - 35B7F - 0x0001, 0x0142, 0x0001, 0x004e, 0x0193, 0x0001, 0x0147, 0x0001, - 0x004e, 0x019b, 0x0001, 0x014c, 0x0001, 0x004e, 0x01a2, 0x0003, - 0x0004, 0x01cf, 0x02f4, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, - 0x001b, 0x0021, 0x0001, 0x0013, 0x0466, 0x0001, 0x0013, 0x0477, - 0x0001, 0x0015, 0x0000, 0x0001, 0x0008, 0x0627, 0x0004, 0x0035, - 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry 35B80 - 35BBF - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0173, 0x0198, 0x01a9, 0x01be, - 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, - 0x0015, 0xffff, 0x000b, 0x23dd, 0x2c1e, 0x2439, 0x2c23, 0x2c27, - 0x2c2c, 0x2442, 0x238d, 0x2447, 0x244c, 0x2397, 0x000d, 0x0000, - 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, - 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x000d, 0xffff, - 0x0089, 0x0090, 0x3361, 0x3366, 0x336c, 0x3370, 0x3375, 0x3201, - // Entry 35BC0 - 35BFF - 0x337a, 0x3384, 0x338c, 0x32ee, 0x0003, 0x0079, 0x0088, 0x0097, - 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x32f7, 0x32c0, 0x336c, - 0x3230, 0x3234, 0x3238, 0x32fb, 0x32ff, 0x3303, 0x3307, 0x000d, - 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, - 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x000d, - 0xffff, 0x0089, 0x0090, 0x3361, 0x3366, 0x336c, 0x3370, 0x3375, - 0x3201, 0x337a, 0x3384, 0x338c, 0x32ee, 0x0002, 0x00a9, 0x00d3, - 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x004b, - // Entry 35C00 - 35C3F - 0x07ea, 0x27b9, 0x27be, 0x07f7, 0x07fb, 0x07ff, 0x27c2, 0x0007, - 0x0000, 0x298e, 0x297a, 0x38ae, 0x2990, 0x38ae, 0x298c, 0x2994, - 0x0007, 0x004b, 0x07ea, 0x27b9, 0x27be, 0x07f7, 0x07fb, 0x07ff, - 0x27c2, 0x0007, 0x0015, 0x0086, 0x2c31, 0x2c39, 0x009d, 0x00a4, - 0x00ac, 0x2c40, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, - 0x0007, 0x0015, 0x00bb, 0x2c48, 0x2c4d, 0x00c8, 0x00cc, 0x00d0, - 0x2c51, 0x0007, 0x0000, 0x298e, 0x297a, 0x38ae, 0x2990, 0x38ae, - 0x298c, 0x2994, 0x0007, 0x004b, 0x07ea, 0x27b9, 0x27be, 0x07f7, - // Entry 35C40 - 35C7F - 0x07fb, 0x07ff, 0x27c2, 0x0007, 0x0015, 0x0086, 0x2c31, 0x2c39, - 0x009d, 0x00a4, 0x00ac, 0x2c40, 0x0002, 0x0100, 0x0119, 0x0003, - 0x0104, 0x010b, 0x0112, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, - 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, 0x011a, - 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0000, 0xffff, 0x1f17, - 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0015, 0xffff, 0x00f9, 0x0104, 0x010f, - // Entry 35C80 - 35CBF - 0x011a, 0x0002, 0x0135, 0x0154, 0x0003, 0x0139, 0x0142, 0x014b, - 0x0002, 0x013c, 0x013f, 0x0001, 0x004e, 0x01b0, 0x0001, 0x004e, - 0x01b5, 0x0002, 0x0145, 0x0148, 0x0001, 0x004e, 0x01b0, 0x0001, - 0x004e, 0x01b5, 0x0002, 0x014e, 0x0151, 0x0001, 0x0015, 0x0174, - 0x0001, 0x004b, 0x0871, 0x0003, 0x0158, 0x0161, 0x016a, 0x0002, - 0x015b, 0x015e, 0x0001, 0x004e, 0x01b0, 0x0001, 0x004e, 0x01b5, - 0x0002, 0x0164, 0x0167, 0x0001, 0x004e, 0x01b0, 0x0001, 0x004e, - 0x01b5, 0x0002, 0x016d, 0x0170, 0x0001, 0x004e, 0x01b0, 0x0001, - // Entry 35CC0 - 35CFF - 0x004e, 0x01b5, 0x0003, 0x0182, 0x018d, 0x0177, 0x0002, 0x017a, - 0x017e, 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x0015, 0x01d7, - 0x01de, 0x0002, 0x0185, 0x0189, 0x0002, 0x0015, 0x0194, 0x01b8, - 0x0002, 0x0015, 0x01d7, 0x01de, 0x0002, 0x0190, 0x0194, 0x0002, - 0x0015, 0x0194, 0x01b8, 0x0002, 0x0015, 0x01e7, 0x01ef, 0x0004, - 0x01a6, 0x01a0, 0x019d, 0x01a3, 0x0001, 0x0013, 0x06a2, 0x0001, - 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, 0x0001, 0x0016, 0x0470, - 0x0004, 0x01ba, 0x01b2, 0x01ae, 0x01b6, 0x0002, 0x004e, 0x01ba, - // Entry 35D00 - 35D3F - 0x01ce, 0x0002, 0x0000, 0x0532, 0x38be, 0x0002, 0x0000, 0x053d, - 0x38c9, 0x0002, 0x0000, 0x0546, 0x38d2, 0x0004, 0x01cc, 0x01c6, - 0x01c3, 0x01c9, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0015, 0x0238, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x0210, - 0x0000, 0x0000, 0x0215, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x022c, 0x0000, 0x0000, 0x0243, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x025e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0277, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x027c, 0x0000, 0x0000, - // Entry 35D40 - 35D7F - 0x0284, 0x0000, 0x0000, 0x028c, 0x0000, 0x0000, 0x0294, 0x0000, - 0x0000, 0x029c, 0x0000, 0x0000, 0x02a4, 0x0000, 0x0000, 0x02ac, - 0x0000, 0x0000, 0x0000, 0x02b4, 0x0000, 0x02b9, 0x0000, 0x0000, - 0x02cb, 0x0000, 0x0000, 0x02dd, 0x0000, 0x0000, 0x02ef, 0x0001, - 0x0212, 0x0001, 0x0015, 0x0246, 0x0003, 0x0219, 0x021c, 0x0221, - 0x0001, 0x0015, 0x024b, 0x0003, 0x004b, 0x0994, 0x27c6, 0x09a1, - 0x0002, 0x0224, 0x0228, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, - 0x0015, 0x0276, 0x0276, 0x0003, 0x0230, 0x0233, 0x0238, 0x0001, - // Entry 35D80 - 35DBF - 0x004e, 0x01e2, 0x0003, 0x004e, 0x01e9, 0x01f8, 0x0205, 0x0002, - 0x023b, 0x023f, 0x0002, 0x0015, 0x0387, 0x0379, 0x0002, 0x0015, - 0x03ac, 0x0397, 0x0004, 0x0248, 0x024b, 0x0250, 0x025b, 0x0001, - 0x004e, 0x0212, 0x0003, 0x004b, 0x0a9b, 0x27d0, 0x0ab2, 0x0002, - 0x0253, 0x0257, 0x0002, 0x004b, 0x0ac7, 0x0abc, 0x0002, 0x004b, - 0x0ae5, 0x0ad3, 0x0001, 0x004e, 0x0217, 0x0003, 0x0262, 0x0265, - 0x026c, 0x0001, 0x0001, 0x0230, 0x0005, 0x0015, 0x0499, 0x04a0, - 0x2c55, 0x048e, 0x2c5e, 0x0002, 0x026f, 0x0273, 0x0002, 0x004b, - // Entry 35DC0 - 35DFF - 0x0b23, 0x0b23, 0x0002, 0x004b, 0x0b30, 0x0b30, 0x0001, 0x0279, - 0x0001, 0x004e, 0x0224, 0x0002, 0x0000, 0x027f, 0x0003, 0x004e, - 0x022c, 0x0241, 0x0254, 0x0002, 0x0000, 0x0287, 0x0003, 0x004e, - 0x0267, 0x027c, 0x028f, 0x0002, 0x0000, 0x028f, 0x0003, 0x004e, - 0x02a2, 0x02b6, 0x02c8, 0x0002, 0x0000, 0x0297, 0x0003, 0x004e, - 0x02da, 0x02ee, 0x0300, 0x0002, 0x0000, 0x029f, 0x0003, 0x004e, - 0x0313, 0x0328, 0x033b, 0x0002, 0x0000, 0x02a7, 0x0003, 0x004e, - 0x034e, 0x0362, 0x0374, 0x0002, 0x0000, 0x02af, 0x0003, 0x004e, - // Entry 35E00 - 35E3F - 0x0386, 0x039b, 0x03ae, 0x0001, 0x02b6, 0x0001, 0x004e, 0x03c1, - 0x0003, 0x02bd, 0x0000, 0x02c0, 0x0001, 0x0015, 0x09e9, 0x0002, - 0x02c3, 0x02c7, 0x0002, 0x0015, 0x0a0e, 0x0a02, 0x0002, 0x0015, - 0x0a2e, 0x0a1b, 0x0003, 0x02cf, 0x0000, 0x02d2, 0x0001, 0x004b, - 0x107d, 0x0002, 0x02d5, 0x02d9, 0x0002, 0x004b, 0x10a1, 0x1093, - 0x0002, 0x004b, 0x10c6, 0x10b1, 0x0003, 0x02e1, 0x0000, 0x02e4, - 0x0001, 0x0015, 0x0ad8, 0x0002, 0x02e7, 0x02eb, 0x0002, 0x0015, - 0x0af0, 0x0ae2, 0x0002, 0x0015, 0x0b15, 0x0b00, 0x0001, 0x02f1, - // Entry 35E40 - 35E7F - 0x0001, 0x004e, 0x03cf, 0x0004, 0x02f9, 0x0000, 0x0000, 0x02fd, - 0x0002, 0x0000, 0x1dc7, 0x3839, 0x0002, 0x03a6, 0x0300, 0x0003, - 0x0340, 0x0373, 0x0304, 0x003a, 0x004b, 0xffff, 0x11bd, 0x27da, - 0x11e4, 0x27ec, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2806, - 0x2823, 0x2845, 0x285f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 35E80 - 35EBF - 0xffff, 0xffff, 0x2879, 0x2896, 0x28b0, 0x28bf, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28d9, 0x0031, - 0x0015, 0xffff, 0xffff, 0xffff, 0xffff, 0x256a, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x26c0, 0x26d5, 0x2c6b, 0x2701, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2806, 0x2c7d, - // Entry 35EC0 - 35EFF - 0xffff, 0x282d, 0x0031, 0x004e, 0xffff, 0xffff, 0xffff, 0xffff, - 0x03d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03ec, 0x0407, - 0x0427, 0x043f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0457, 0x0472, 0xffff, 0x048a, 0x0003, 0x03aa, 0x0419, - 0x03dd, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 35F00 - 35F3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x12ea, 0x1351, 0xffff, 0x27cb, 0x003a, 0x0006, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 35F40 - 35F7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27d7, - 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 35F80 - 35FBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, - 0x1355, 0xffff, 0x13e3, 0x0002, 0x0003, 0x0108, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0030, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0026, - 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x004e, 0x04a2, - 0x0001, 0x004e, 0x04c5, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x001c, - // Entry 35FC0 - 35FFF - 0x14e1, 0x0003, 0x0000, 0x002d, 0x002a, 0x0001, 0x004c, 0x0b3a, - 0x0001, 0x0005, 0x0846, 0x0008, 0x0039, 0x0080, 0x0000, 0x00c5, - 0x00dd, 0x00ed, 0x0000, 0x00fe, 0x0002, 0x003c, 0x005e, 0x0003, - 0x0040, 0x0000, 0x004f, 0x000d, 0x004e, 0xffff, 0x04e1, 0x04f7, - 0x0509, 0x051b, 0x0526, 0x053a, 0x054a, 0x0568, 0x0576, 0x058c, - 0x05a2, 0x05b1, 0x000d, 0x004e, 0xffff, 0x04e1, 0x04f7, 0x0509, - 0x051b, 0x0526, 0x053a, 0x054a, 0x0568, 0x0576, 0x058c, 0x05a2, - 0x05b1, 0x0003, 0x0062, 0x0000, 0x0071, 0x000d, 0x004e, 0xffff, - // Entry 36000 - 3603F - 0x04e1, 0x04f7, 0x0509, 0x051b, 0x0526, 0x053a, 0x054a, 0x0568, - 0x0576, 0x058c, 0x05a2, 0x05b1, 0x000d, 0x004e, 0xffff, 0x04e1, - 0x04f7, 0x0509, 0x051b, 0x0526, 0x053a, 0x054a, 0x0568, 0x0576, - 0x058c, 0x05a2, 0x05b1, 0x0002, 0x0083, 0x00a4, 0x0005, 0x0089, - 0x0000, 0x009b, 0x0000, 0x0092, 0x0007, 0x004e, 0x05bb, 0x05d2, - 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0007, 0x004e, 0x05bb, - 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0007, 0x004e, - 0x05bb, 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0005, - // Entry 36040 - 3607F - 0x00aa, 0x0000, 0x00bc, 0x0000, 0x00b3, 0x0007, 0x004e, 0x05bb, - 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0007, 0x004e, - 0x05bb, 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, 0x0007, - 0x004e, 0x05bb, 0x05d2, 0x05e1, 0x05fd, 0x0613, 0x0635, 0x064a, - 0x0001, 0x00c7, 0x0003, 0x00cb, 0x0000, 0x00d4, 0x0002, 0x00ce, - 0x00d1, 0x0001, 0x004e, 0x0659, 0x0001, 0x004e, 0x0666, 0x0002, - 0x00d7, 0x00da, 0x0001, 0x004e, 0x0659, 0x0001, 0x004e, 0x0666, - 0x0003, 0x00e7, 0x0000, 0x00e1, 0x0001, 0x00e3, 0x0002, 0x004e, - // Entry 36080 - 360BF - 0x0671, 0x0681, 0x0001, 0x00e9, 0x0002, 0x004e, 0x0698, 0x069f, - 0x0004, 0x00fb, 0x00f5, 0x00f2, 0x00f8, 0x0001, 0x004e, 0x06a8, - 0x0001, 0x004e, 0x06c9, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0014, - 0x146e, 0x0003, 0x0000, 0x0105, 0x0102, 0x0001, 0x004c, 0x0b3a, - 0x0001, 0x0005, 0x0846, 0x0037, 0x0140, 0x0000, 0x0000, 0x0145, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014a, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0155, 0x0000, 0x0000, 0x0000, - // Entry 360C0 - 360FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x015a, 0x0001, 0x0142, 0x0001, 0x004e, 0x06e3, - 0x0001, 0x0147, 0x0001, 0x004e, 0x06f2, 0x0002, 0x014d, 0x0150, - 0x0001, 0x004e, 0x06f9, 0x0003, 0x004e, 0x0702, 0x071c, 0x072a, - 0x0001, 0x0157, 0x0001, 0x004e, 0x0743, 0x0001, 0x015c, 0x0001, - 0x004e, 0x0750, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, - // Entry 36100 - 3613F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x001c, 0x04b3, - 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, - 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, - 0x000d, 0x004e, 0xffff, 0x075d, 0x0762, 0x0767, 0x0772, 0x0777, - 0x077c, 0x0780, 0x0784, 0x0789, 0x078f, 0x0793, 0x0797, 0x000d, - // Entry 36140 - 3617F - 0x004e, 0xffff, 0x079b, 0x0762, 0x07aa, 0x0772, 0x07b7, 0x07bd, - 0x07c6, 0x07d3, 0x07dd, 0x07e4, 0x0793, 0x07ea, 0x0002, 0x0000, - 0x0057, 0x000d, 0x0000, 0xffff, 0x38ae, 0x255c, 0x297c, 0x2281, - 0x297c, 0x25bc, 0x255c, 0x38ae, 0x38ae, 0x2994, 0x25bc, 0x38ae, - 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, - 0x004e, 0x07fd, 0x0803, 0x0808, 0x080d, 0x0815, 0x081c, 0x0823, - 0x0007, 0x004e, 0x082b, 0x0838, 0x0843, 0x084f, 0x085e, 0x086c, - 0x087a, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x24fb, 0x2483, - // Entry 36180 - 361BF - 0x223e, 0x297c, 0x390e, 0x297c, 0x24f9, 0x0001, 0x008d, 0x0003, - 0x0091, 0x0000, 0x0098, 0x0005, 0x002b, 0xffff, 0x0536, 0x0539, - 0x053c, 0x053f, 0x0005, 0x004e, 0xffff, 0x0889, 0x089f, 0x08b6, - 0x08d5, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, - 0x00a8, 0x00ab, 0x0001, 0x004e, 0x08f1, 0x0001, 0x004e, 0x08f4, - 0x0002, 0x00b1, 0x00b4, 0x0001, 0x004e, 0x08f1, 0x0001, 0x004e, - 0x08f4, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, - 0x004e, 0x08f8, 0x090c, 0x0001, 0x00c3, 0x0002, 0x0037, 0x0609, - // Entry 361C0 - 361FF - 0x200b, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0001, - 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x001c, 0x04c0, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, - 0x004e, 0x091b, 0x0001, 0x004e, 0x092a, 0x0001, 0x0002, 0x046e, - 0x0001, 0x0002, 0x0478, 0x003d, 0x0127, 0x0000, 0x0000, 0x012c, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, - 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0146, 0x0000, 0x0000, 0x0000, - // Entry 36200 - 3623F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x014b, 0x0000, 0x0000, 0x0150, 0x0000, 0x0000, - 0x0155, 0x0001, 0x0129, 0x0001, 0x004e, 0x0936, 0x0001, 0x012e, - 0x0001, 0x004e, 0x0947, 0x0001, 0x0133, 0x0001, 0x004e, 0x0780, - 0x0001, 0x0138, 0x0001, 0x004e, 0x094f, 0x0002, 0x013e, 0x0141, - 0x0001, 0x004e, 0x07fd, 0x0003, 0x004e, 0x0955, 0x0959, 0x095f, - // Entry 36240 - 3627F - 0x0001, 0x0148, 0x0001, 0x004e, 0x0964, 0x0001, 0x014d, 0x0001, - 0x004e, 0x0970, 0x0001, 0x0152, 0x0001, 0x0045, 0x04d4, 0x0001, - 0x0157, 0x0001, 0x004e, 0x0976, 0x0002, 0x0003, 0x00d1, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x0000, 0x009f, - // Entry 36280 - 362BF - 0x00af, 0x00c0, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0012, 0xffff, 0x0000, 0x0004, 0x0008, - 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, - 0x002c, 0x000d, 0x0012, 0xffff, 0x0030, 0x003c, 0x0047, 0x0053, - 0x005c, 0x0068, 0x0074, 0x0081, 0x008d, 0x0098, 0x00a2, 0x00b5, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, - 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, - 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - // Entry 362C0 - 362FF - 0x0076, 0x0007, 0x0012, 0x00c8, 0x00cc, 0x00d0, 0x00d4, 0x00d8, - 0x46a1, 0x00e0, 0x0007, 0x0012, 0x00e4, 0x00ea, 0x00f6, 0x0101, - 0x010d, 0x0116, 0x0122, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - 0x298e, 0x25bc, 0x223e, 0x298e, 0x297e, 0x38ae, 0x297a, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, 0xffff, - 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0012, 0xffff, 0x012e, - 0x0136, 0x013e, 0x0146, 0x0003, 0x00a9, 0x0000, 0x00a3, 0x0001, - 0x00a5, 0x0002, 0x0012, 0x014e, 0x0162, 0x0001, 0x00ab, 0x0002, - // Entry 36300 - 3633F - 0x0009, 0x0078, 0x5463, 0x0004, 0x00bd, 0x00b7, 0x00b4, 0x00ba, - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00ce, 0x00c8, 0x00c5, - 0x00cb, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0112, 0x0000, - 0x0000, 0x0117, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011c, - 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0131, 0x0000, - // Entry 36340 - 3637F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0136, 0x0000, 0x013b, 0x0000, 0x0000, 0x0140, - 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0001, 0x0114, - 0x0001, 0x0012, 0x0173, 0x0001, 0x0119, 0x0001, 0x0012, 0x017b, - 0x0001, 0x011e, 0x0001, 0x0012, 0x0182, 0x0001, 0x0123, 0x0001, - 0x0012, 0x0189, 0x0002, 0x0129, 0x012c, 0x0001, 0x0012, 0x0190, - // Entry 36380 - 363BF - 0x0003, 0x0012, 0x0198, 0x01a4, 0x01ad, 0x0001, 0x0133, 0x0001, - 0x0012, 0x01b9, 0x0001, 0x0138, 0x0001, 0x0012, 0x01ce, 0x0001, - 0x013d, 0x0001, 0x0012, 0x01e1, 0x0001, 0x0142, 0x0001, 0x0012, - 0x01e8, 0x0001, 0x0147, 0x0001, 0x0012, 0x01f1, 0x0001, 0x014c, - 0x0001, 0x004e, 0x0980, 0x0003, 0x0004, 0x0000, 0x0197, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x000c, - // Entry 363C0 - 363FF - 0x0000, 0x0001, 0x0000, 0x1e0b, 0x0001, 0x001c, 0x0437, 0x0001, - 0x001c, 0x14e1, 0x0008, 0x0030, 0x0095, 0x00e3, 0x0118, 0x0150, - 0x0164, 0x0175, 0x0186, 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, - 0x0046, 0x0055, 0x000d, 0x004e, 0xffff, 0x098b, 0x098f, 0x0993, - 0x0997, 0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, 0x09b3, - 0x09b7, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, - 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, - 0x000d, 0x004e, 0xffff, 0x09bb, 0x09c3, 0x09cf, 0x09db, 0x09e0, - // Entry 36400 - 3643F - 0x09e7, 0x09f2, 0x09fd, 0x0a05, 0x0a0e, 0x0a1b, 0x0a23, 0x0003, - 0x0068, 0x0077, 0x0086, 0x000d, 0x004e, 0xffff, 0x098b, 0x098f, - 0x0993, 0x0997, 0x099b, 0x099f, 0x09a3, 0x09a7, 0x09ab, 0x09af, - 0x09b3, 0x09b7, 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, - 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, - 0x297c, 0x000d, 0x004e, 0xffff, 0x09bb, 0x09c3, 0x09cf, 0x09db, - 0x09e0, 0x09e7, 0x09f2, 0x09fd, 0x0a05, 0x0a0e, 0x0a1b, 0x0a23, - 0x0002, 0x0098, 0x00b9, 0x0005, 0x009e, 0x0000, 0x00b0, 0x0000, - // Entry 36440 - 3647F - 0x00a7, 0x0007, 0x004e, 0x0a2a, 0x0a2e, 0x0a32, 0x0a36, 0x0a3a, - 0x0a3e, 0x0a42, 0x0007, 0x004e, 0x0a2a, 0x0a2e, 0x0a32, 0x0a36, - 0x0a3a, 0x0a3e, 0x0a42, 0x0007, 0x004e, 0x0a46, 0x0a4e, 0x0a56, - 0x0a5e, 0x0a65, 0x0a6d, 0x0a75, 0x0005, 0x00bf, 0x00c8, 0x00da, - 0x0000, 0x00d1, 0x0007, 0x004e, 0x0a2a, 0x0a2e, 0x0a32, 0x0a36, - 0x0a3a, 0x0a3e, 0x0a42, 0x0007, 0x0000, 0x298e, 0x297a, 0x38ae, - 0x2159, 0x38ae, 0x298c, 0x298e, 0x0007, 0x004e, 0x0a2a, 0x0a2e, - 0x0a32, 0x0a36, 0x0a3a, 0x0a3e, 0x0a42, 0x0007, 0x004e, 0x0a46, - // Entry 36480 - 364BF - 0x0a4e, 0x0a56, 0x0a5e, 0x0a65, 0x0a6d, 0x0a75, 0x0002, 0x00e6, - 0x00ff, 0x0003, 0x00ea, 0x00f1, 0x00f8, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x0a7d, 0x0a88, - 0x0a93, 0x0a9e, 0x0003, 0x0103, 0x010a, 0x0111, 0x0005, 0x0000, - 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x0a7d, - 0x0a88, 0x0a93, 0x0a9e, 0x0002, 0x011b, 0x0131, 0x0003, 0x011f, - // Entry 364C0 - 364FF - 0x0000, 0x0128, 0x0002, 0x0122, 0x0125, 0x0001, 0x004e, 0x0aa9, - 0x0001, 0x004e, 0x0aac, 0x0002, 0x012b, 0x012e, 0x0001, 0x004e, - 0x0aa9, 0x0001, 0x004e, 0x0aac, 0x0003, 0x0135, 0x013e, 0x0147, - 0x0002, 0x0138, 0x013b, 0x0001, 0x004e, 0x0aa9, 0x0001, 0x004e, - 0x0aac, 0x0002, 0x0141, 0x0144, 0x0001, 0x004e, 0x0aa9, 0x0001, - 0x004e, 0x0aac, 0x0002, 0x014a, 0x014d, 0x0001, 0x004e, 0x0aa9, - 0x0001, 0x004e, 0x0aac, 0x0003, 0x015e, 0x0000, 0x0154, 0x0002, - 0x0157, 0x015a, 0x0001, 0x004e, 0x0aaf, 0x0002, 0x0000, 0x04f5, - // Entry 36500 - 3653F - 0x04f9, 0x0001, 0x0160, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, - 0x0172, 0x016c, 0x0169, 0x016f, 0x0001, 0x000c, 0x03c9, 0x0001, - 0x0001, 0x002d, 0x0001, 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, - 0x0004, 0x0183, 0x017d, 0x017a, 0x0180, 0x0001, 0x0002, 0x0453, - 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, - 0x0478, 0x0004, 0x0194, 0x018e, 0x018b, 0x0191, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0004, 0x019c, 0x0000, 0x0000, 0x0000, 0x0002, - // Entry 36540 - 3657F - 0x0000, 0x1dc7, 0x3839, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0013, - 0x0028, 0x0037, 0x0000, 0x0042, 0x0000, 0x004e, 0x0002, 0x0000, - 0x0016, 0x0002, 0x0000, 0x0019, 0x000d, 0x0000, 0xffff, 0x2980, - 0x2281, 0x24f9, 0x214e, 0x24fb, 0x2159, 0x2980, 0x38d8, 0x298c, - 0x2990, 0x298e, 0x297a, 0x0002, 0x0000, 0x002b, 0x0002, 0x0000, - 0x002e, 0x0007, 0x0000, 0x297c, 0x2159, 0x3911, 0x223e, 0x25bc, - 0x2483, 0x298e, 0x0001, 0x0039, 0x0001, 0x003b, 0x0005, 0x0000, - // Entry 36580 - 365BF - 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0001, 0x0044, 0x0002, - 0x0047, 0x004a, 0x0001, 0x004e, 0x0ac0, 0x0002, 0x0000, 0x04f5, - 0x3913, 0x0004, 0x005c, 0x0056, 0x0053, 0x0059, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, 0x00f7, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, - 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0005, 0x0625, - // Entry 365C0 - 365FF - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0005, - 0x01b6, 0x0008, 0x0030, 0x0086, 0x0000, 0x00b4, 0x0000, 0x00d5, - 0x00e6, 0x0000, 0x0002, 0x0033, 0x0055, 0x0003, 0x0037, 0x0000, - 0x0046, 0x000d, 0x004e, 0xffff, 0x0ac3, 0x0ad9, 0x0aef, 0x0b05, - 0x0b18, 0x0b1f, 0x0b29, 0x0b39, 0x0b49, 0x0b68, 0x0b7e, 0x0b94, - 0x000d, 0x004e, 0xffff, 0x0ac3, 0x0ad9, 0x0aef, 0x0b05, 0x0b18, - 0x0b1f, 0x0b29, 0x0b39, 0x0b49, 0x0b68, 0x0b7e, 0x0b94, 0x0003, - 0x0059, 0x0068, 0x0077, 0x000d, 0x004e, 0xffff, 0x0ac3, 0x0ad9, - // Entry 36600 - 3663F - 0x0aef, 0x0b05, 0x0b18, 0x0b1f, 0x0b29, 0x0b39, 0x0b49, 0x0b68, - 0x0b7e, 0x0b94, 0x000d, 0x004e, 0xffff, 0x0bad, 0x0bb4, 0x0bbb, - 0x0bc2, 0x0b18, 0x0bc6, 0x0bc6, 0x0bc2, 0x0bcd, 0x0bc2, 0x0bd4, - 0x0bd8, 0x000d, 0x004e, 0xffff, 0x0ac3, 0x0ad9, 0x0aef, 0x0b05, - 0x0b18, 0x0b1f, 0x0b29, 0x0b39, 0x0b49, 0x0b68, 0x0b7e, 0x0b94, - 0x0002, 0x0089, 0x009f, 0x0003, 0x008d, 0x0000, 0x0096, 0x0007, - 0x004e, 0x0bdf, 0x0be9, 0x0bf3, 0x0c03, 0x0c0d, 0x0c1a, 0x0c2a, - 0x0007, 0x004e, 0x0c34, 0x0c47, 0x0c5a, 0x0c73, 0x0c86, 0x0c9c, - // Entry 36640 - 3667F - 0x0cb5, 0x0002, 0x00a2, 0x00ab, 0x0007, 0x004e, 0x0bdf, 0x0be9, - 0x0bf3, 0x0c03, 0x0c0d, 0x0c1a, 0x0c2a, 0x0007, 0x004e, 0x0cc8, - 0x0ccc, 0x0cd3, 0x0cd7, 0x0cde, 0x0ce5, 0x0cec, 0x0001, 0x00b6, - 0x0003, 0x00ba, 0x00c3, 0x00cc, 0x0002, 0x00bd, 0x00c0, 0x0001, - 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0002, 0x00c6, 0x00c9, - 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0002, 0x00cf, - 0x00d2, 0x0001, 0x0000, 0x2337, 0x0001, 0x0000, 0x233a, 0x0004, - 0x00e3, 0x00dd, 0x00da, 0x00e0, 0x0001, 0x0005, 0x0773, 0x0001, - // Entry 36680 - 366BF - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x003d, 0x0217, - 0x0004, 0x00f4, 0x00ee, 0x00eb, 0x00f1, 0x0001, 0x0002, 0x0453, - 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, - 0x0478, 0x0004, 0x0000, 0x0000, 0x0000, 0x00fc, 0x0002, 0x013b, - 0x00ff, 0x0003, 0x0000, 0x0000, 0x0103, 0x0036, 0x004e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 366C0 - 366FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0cf0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0d35, 0x0003, 0x0000, 0x0000, - 0x013f, 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 36700 - 3673F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0003, 0x0004, 0x016f, - 0x0217, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, - // Entry 36740 - 3677F - 0x0001, 0x004e, 0x0d5e, 0x0001, 0x004e, 0x0d77, 0x0001, 0x004e, - 0x0d8a, 0x0001, 0x0013, 0x048d, 0x0004, 0x0035, 0x002f, 0x002c, - 0x0032, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, - 0x00e7, 0x011c, 0x0134, 0x013c, 0x014d, 0x015e, 0x0002, 0x0044, - 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x003e, 0xffff, - 0x0e23, 0x1fef, 0x1ff7, 0x1fff, 0x2007, 0x2010, 0x2019, 0x2022, - 0x0e62, 0x202a, 0x0e72, 0x2032, 0x000d, 0x003e, 0xffff, 0x0e82, - // Entry 36780 - 367BF - 0x0e85, 0x0e88, 0x0e8b, 0x0e88, 0x203a, 0x203a, 0x0e8b, 0x0e91, - 0x0e94, 0x0e97, 0x203d, 0x000d, 0x004e, 0xffff, 0x0d9c, 0x0da9, - 0x0db8, 0x0dc9, 0x0dd6, 0x0ddf, 0x0de8, 0x0df1, 0x0e00, 0x0e11, - 0x0e20, 0x0e2d, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x004e, - 0xffff, 0x0e3c, 0x0e44, 0x0e4e, 0x0e58, 0x0e60, 0x0e67, 0x0e70, - 0x0e79, 0x0e81, 0x0e8b, 0x0e93, 0x0e9d, 0x000d, 0x003e, 0xffff, - 0x0e82, 0x0e85, 0x0e88, 0x0e8b, 0x0e88, 0x203a, 0x203a, 0x0e8b, - 0x0e91, 0x0e94, 0x0e97, 0x203d, 0x000d, 0x003e, 0xffff, 0x0ef1, - // Entry 367C0 - 367FF - 0x0efe, 0x2040, 0x0f16, 0x204d, 0x2054, 0x205d, 0x0f35, 0x0f42, - 0x0f53, 0x0f62, 0x0f6f, 0x0002, 0x00a9, 0x00c8, 0x0003, 0x00ad, - 0x00b6, 0x00bf, 0x0007, 0x004e, 0x0ea5, 0x0eac, 0x0eb3, 0x0eba, - 0x0ec1, 0x0ec8, 0x0ecf, 0x0007, 0x004e, 0x0ed6, 0x0ed9, 0x0edc, - 0x0edf, 0x0ee2, 0x0ee5, 0x0ee8, 0x0007, 0x004e, 0x0eeb, 0x0efe, - 0x0f11, 0x0f1e, 0x0f2f, 0x0f40, 0x0f53, 0x0003, 0x00cc, 0x00d5, - 0x00de, 0x0007, 0x004e, 0x0f5e, 0x0f65, 0x0f6c, 0x0f73, 0x0f7a, - 0x0f81, 0x0f88, 0x0007, 0x004e, 0x0ed6, 0x0ed9, 0x0edc, 0x0edf, - // Entry 36800 - 3683F - 0x0ee2, 0x0ee5, 0x0ee8, 0x0007, 0x004e, 0x0f8f, 0x0fa2, 0x0fb5, - 0x0fc2, 0x0fd3, 0x0fe4, 0x0ff7, 0x0002, 0x00ea, 0x0103, 0x0003, - 0x00ee, 0x00f5, 0x00fc, 0x0005, 0x004e, 0xffff, 0x1002, 0x100f, - 0x101c, 0x1029, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x004e, 0xffff, 0x1036, 0x104c, 0x1062, 0x1078, - 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, 0x004e, 0xffff, 0x1002, - 0x100f, 0x101c, 0x1029, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x1036, 0x104c, 0x1062, - // Entry 36840 - 3687F - 0x1078, 0x0001, 0x011e, 0x0003, 0x0122, 0x0000, 0x012b, 0x0002, - 0x0125, 0x0128, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - 0x0002, 0x012e, 0x0131, 0x0001, 0x004e, 0x108e, 0x0001, 0x004e, - 0x10ac, 0x0001, 0x0136, 0x0001, 0x0138, 0x0002, 0x004e, 0x10ca, - 0x10d4, 0x0004, 0x014a, 0x0144, 0x0141, 0x0147, 0x0001, 0x004e, - 0x10db, 0x0001, 0x004e, 0x10f2, 0x0001, 0x004e, 0x1103, 0x0001, - 0x0007, 0x0277, 0x0004, 0x015b, 0x0155, 0x0152, 0x0158, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - // Entry 36880 - 368BF - 0x0001, 0x0000, 0x0546, 0x0004, 0x016c, 0x0166, 0x0163, 0x0169, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, 0x01b0, 0x0000, 0x0000, - 0x01b5, 0x0000, 0x0000, 0x01ba, 0x01bf, 0x01c4, 0x01c9, 0x0000, - 0x0000, 0x01ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01d3, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ec, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 368C0 - 368FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x01f1, 0x0000, 0x01f6, 0x0000, 0x0000, 0x0208, 0x0000, - 0x0000, 0x020d, 0x0000, 0x0000, 0x0212, 0x0001, 0x01b2, 0x0001, - 0x004e, 0x1113, 0x0001, 0x01b7, 0x0001, 0x004e, 0x111a, 0x0001, - 0x01bc, 0x0001, 0x0008, 0x0b3d, 0x0001, 0x01c1, 0x0001, 0x0008, - 0x0ca5, 0x0001, 0x01c6, 0x0001, 0x0008, 0x0ca5, 0x0001, 0x01cb, - 0x0001, 0x004e, 0x111f, 0x0001, 0x01d0, 0x0001, 0x004e, 0x1126, - 0x0003, 0x01d7, 0x01da, 0x01e1, 0x0001, 0x004e, 0x1133, 0x0005, - // Entry 36900 - 3693F - 0x004e, 0x114d, 0x1156, 0x115f, 0x113a, 0x1166, 0x0002, 0x01e4, - 0x01e8, 0x0002, 0x004e, 0x1175, 0x1175, 0x0002, 0x004e, 0x11a5, - 0x118d, 0x0001, 0x01ee, 0x0001, 0x004e, 0x11bd, 0x0001, 0x01f3, - 0x0001, 0x004e, 0x11d5, 0x0003, 0x01fa, 0x0000, 0x01fd, 0x0001, - 0x004e, 0x11eb, 0x0002, 0x0200, 0x0204, 0x0002, 0x004e, 0x11f6, - 0x11f6, 0x0002, 0x004e, 0x1212, 0x1212, 0x0001, 0x020a, 0x0001, - 0x004e, 0x122e, 0x0001, 0x020f, 0x0001, 0x004e, 0x1239, 0x0001, - 0x0214, 0x0001, 0x004e, 0x1246, 0x0004, 0x021c, 0x0221, 0x0000, - // Entry 36940 - 3697F - 0x0224, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3916, 0x0001, 0x004e, - 0x1260, 0x0002, 0x0000, 0x0227, 0x0003, 0x022b, 0x02ef, 0x028d, - 0x0060, 0x004e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1271, - // Entry 36980 - 369BF - 0x1330, 0xffff, 0x13dd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x149c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1565, 0x0060, 0x004e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 369C0 - 369FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12a4, 0x135d, 0xffff, 0x1410, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x14c2, 0xffff, 0x1534, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 36A00 - 36A3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1583, 0x0060, 0x004e, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 36A40 - 36A7F - 0xffff, 0xffff, 0xffff, 0x12ec, 0x139f, 0xffff, 0x1458, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x14fd, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x15b6, 0x0003, 0x0004, - 0x02b7, 0x06b9, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 36A80 - 36ABF - 0x0000, 0x000f, 0x003a, 0x0000, 0x0245, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0018, 0x0000, 0x0029, 0x0004, 0x0026, - 0x0020, 0x001d, 0x0023, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, - 0x0037, 0x0031, 0x002e, 0x0034, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0008, 0x0043, 0x00a8, 0x00ff, 0x0134, 0x01ed, 0x0212, 0x0223, - 0x0234, 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, - // Entry 36AC0 - 36AFF - 0x000d, 0x004e, 0xffff, 0x15e5, 0x15ec, 0x15f6, 0x1603, 0x1613, - 0x161a, 0x1624, 0x1631, 0x1638, 0x1642, 0x164f, 0x1659, 0x000d, - 0x004e, 0xffff, 0x1663, 0x1667, 0x166e, 0x1675, 0x1679, 0x167d, - 0x1684, 0x1675, 0x168b, 0x1675, 0x168f, 0x1693, 0x000d, 0x004e, - 0xffff, 0x1697, 0x16a7, 0x15f6, 0x16ba, 0x1613, 0x161a, 0x16cd, - 0x16dd, 0x16ea, 0x16fa, 0x170d, 0x171d, 0x0003, 0x007b, 0x008a, - 0x0099, 0x000d, 0x004e, 0xffff, 0x15e5, 0x15ec, 0x15f6, 0x1603, - 0x1613, 0x161a, 0x1624, 0x1631, 0x1638, 0x1642, 0x164f, 0x1659, - // Entry 36B00 - 36B3F - 0x000d, 0x004e, 0xffff, 0x1663, 0x1667, 0x166e, 0x1675, 0x1679, - 0x167d, 0x1684, 0x1675, 0x168b, 0x1675, 0x168f, 0x1693, 0x000d, - 0x004e, 0xffff, 0x1697, 0x16a7, 0x15f6, 0x16ba, 0x1613, 0x161a, - 0x16cd, 0x16dd, 0x16ea, 0x16fa, 0x170d, 0x171d, 0x0002, 0x00ab, - 0x00d5, 0x0005, 0x00b1, 0x00ba, 0x00cc, 0x0000, 0x00c3, 0x0007, - 0x004e, 0x172d, 0x1734, 0x173e, 0x174b, 0x1758, 0x1762, 0x1775, - 0x0007, 0x004e, 0x178b, 0x178f, 0x1796, 0x179d, 0x17a7, 0x17ae, - 0x17bb, 0x0007, 0x004e, 0x172d, 0x1734, 0x17c2, 0x174b, 0x1758, - // Entry 36B40 - 36B7F - 0x17cc, 0x17dc, 0x0007, 0x004e, 0x17ec, 0x17fc, 0x180f, 0x1825, - 0x183b, 0x184e, 0x186a, 0x0005, 0x00db, 0x00e4, 0x00f6, 0x0000, - 0x00ed, 0x0007, 0x004e, 0x172d, 0x1734, 0x173e, 0x174b, 0x1758, - 0x1762, 0x1775, 0x0007, 0x004e, 0x178b, 0x178f, 0x1796, 0x179d, - 0x17a7, 0x17ae, 0x17bb, 0x0007, 0x004e, 0x172d, 0x1734, 0x17c2, - 0x174b, 0x1758, 0x17cc, 0x17dc, 0x0007, 0x004e, 0x17ec, 0x17fc, - 0x180f, 0x1825, 0x183b, 0x184e, 0x186a, 0x0002, 0x0102, 0x011b, - 0x0003, 0x0106, 0x010d, 0x0114, 0x0005, 0x004e, 0xffff, 0x1889, - // Entry 36B80 - 36BBF - 0x189d, 0x18b1, 0x18c5, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x18d9, 0x18fc, 0x191c, - 0x193c, 0x0003, 0x011f, 0x0126, 0x012d, 0x0005, 0x004e, 0xffff, - 0x1889, 0x189d, 0x18b1, 0x18c5, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x004e, 0xffff, 0x18d9, 0x18fc, - 0x191c, 0x193c, 0x0002, 0x0137, 0x0192, 0x0003, 0x013b, 0x0158, - 0x0175, 0x0007, 0x0146, 0x0149, 0x0143, 0x014c, 0x014f, 0x0152, - 0x0155, 0x0001, 0x004e, 0x195c, 0x0001, 0x004e, 0x1973, 0x0001, - // Entry 36BC0 - 36BFF - 0x004e, 0x1982, 0x0001, 0x004e, 0x1991, 0x0001, 0x004e, 0x19a1, - 0x0001, 0x004e, 0x19b7, 0x0001, 0x004e, 0x19ca, 0x0007, 0x0163, - 0x0166, 0x0160, 0x0169, 0x016c, 0x016f, 0x0172, 0x0001, 0x004e, - 0x195c, 0x0001, 0x004e, 0x19da, 0x0001, 0x004e, 0x19df, 0x0001, - 0x004e, 0x1991, 0x0001, 0x004e, 0x19a1, 0x0001, 0x004e, 0x19b7, - 0x0001, 0x004e, 0x19ca, 0x0007, 0x0180, 0x0183, 0x017d, 0x0186, - 0x0189, 0x018c, 0x018f, 0x0001, 0x004e, 0x195c, 0x0001, 0x004e, - 0x1973, 0x0001, 0x004e, 0x1982, 0x0001, 0x004e, 0x1991, 0x0001, - // Entry 36C00 - 36C3F - 0x004e, 0x19a1, 0x0001, 0x004e, 0x19b7, 0x0001, 0x004e, 0x19ca, - 0x0003, 0x0196, 0x01b3, 0x01d0, 0x0007, 0x01a1, 0x01a4, 0x019e, - 0x01a7, 0x01aa, 0x01ad, 0x01b0, 0x0001, 0x004e, 0x195c, 0x0001, - 0x004e, 0x1973, 0x0001, 0x004e, 0x1982, 0x0001, 0x004e, 0x1991, - 0x0001, 0x004e, 0x19a1, 0x0001, 0x004e, 0x19b7, 0x0001, 0x004e, - 0x19ca, 0x0007, 0x01be, 0x01c1, 0x01bb, 0x01c4, 0x01c7, 0x01ca, - 0x01cd, 0x0001, 0x004e, 0x195c, 0x0001, 0x004e, 0x1973, 0x0001, - 0x004e, 0x1982, 0x0001, 0x004e, 0x1991, 0x0001, 0x004e, 0x19a1, - // Entry 36C40 - 36C7F - 0x0001, 0x004e, 0x19b7, 0x0001, 0x004e, 0x19ca, 0x0007, 0x01db, - 0x01de, 0x01d8, 0x01e1, 0x01e4, 0x01e7, 0x01ea, 0x0001, 0x004e, - 0x195c, 0x0001, 0x004e, 0x1973, 0x0001, 0x004e, 0x1982, 0x0001, - 0x004e, 0x1991, 0x0001, 0x004e, 0x19a1, 0x0001, 0x004e, 0x19e7, - 0x0001, 0x004e, 0x19f4, 0x0003, 0x01fc, 0x0207, 0x01f1, 0x0002, - 0x01f4, 0x01f8, 0x0002, 0x004e, 0x19fe, 0x1a3f, 0x0002, 0x004e, - 0x1a18, 0x1a56, 0x0002, 0x01ff, 0x0203, 0x0002, 0x004e, 0x1a70, - 0x1a92, 0x0002, 0x004e, 0x1a7d, 0x1a9c, 0x0002, 0x020a, 0x020e, - // Entry 36C80 - 36CBF - 0x0002, 0x004e, 0x1aa9, 0x1a92, 0x0002, 0x004e, 0x1ab5, 0x1ac8, - 0x0004, 0x0220, 0x021a, 0x0217, 0x021d, 0x0001, 0x0005, 0x0773, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0000, - 0x237b, 0x0004, 0x0231, 0x022b, 0x0228, 0x022e, 0x0001, 0x0002, - 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, - 0x0002, 0x0478, 0x0004, 0x0242, 0x023c, 0x0239, 0x023f, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0005, 0x024b, 0x0000, 0x0000, 0x0000, - // Entry 36CC0 - 36CFF - 0x02b0, 0x0002, 0x024e, 0x027f, 0x0003, 0x0252, 0x0261, 0x0270, - 0x000d, 0x004e, 0xffff, 0x1ad4, 0x1ade, 0x1aee, 0x1af8, 0x1b02, - 0x1b0f, 0x1b1f, 0x1b2c, 0x1b39, 0x1b46, 0x1b50, 0x1b5a, 0x000d, - 0x004e, 0xffff, 0x1b67, 0x1b6b, 0x1b6f, 0x1b73, 0x1b77, 0x1b7b, - 0x1b7f, 0x1b83, 0x1b87, 0x1b8b, 0x1b92, 0x1b99, 0x000d, 0x004e, - 0xffff, 0x1ad4, 0x1ade, 0x1aee, 0x1af8, 0x1b02, 0x1b0f, 0x1b1f, - 0x1b2c, 0x1b39, 0x1b46, 0x1b50, 0x1b5a, 0x0003, 0x0283, 0x0292, - 0x02a1, 0x000d, 0x004e, 0xffff, 0x1ad4, 0x1ade, 0x1aee, 0x1af8, - // Entry 36D00 - 36D3F - 0x1b02, 0x1b0f, 0x1b1f, 0x1b2c, 0x1b39, 0x1b46, 0x1b50, 0x1b5a, - 0x000d, 0x004e, 0xffff, 0x1b67, 0x1b6b, 0x1b6f, 0x1b73, 0x1b77, - 0x1b7b, 0x1b7f, 0x1b83, 0x1b87, 0x1b8b, 0x1b92, 0x1b99, 0x000d, - 0x004e, 0xffff, 0x1ad4, 0x1ade, 0x1aee, 0x1af8, 0x1b02, 0x1b0f, - 0x1b1f, 0x1b2c, 0x1b39, 0x1b46, 0x1b50, 0x1b5a, 0x0001, 0x02b2, - 0x0001, 0x02b4, 0x0001, 0x004e, 0x1ba0, 0x0040, 0x02f8, 0x0000, - 0x0000, 0x02fd, 0x0314, 0x032b, 0x0342, 0x0359, 0x0370, 0x0387, - 0x039e, 0x03b5, 0x03cc, 0x03e7, 0x0402, 0x0000, 0x0000, 0x0000, - // Entry 36D40 - 36D7F - 0x041d, 0x0434, 0x0446, 0x0000, 0x0000, 0x0000, 0x0458, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x045d, 0x0471, 0x0485, 0x0499, - 0x04ad, 0x04c1, 0x04d5, 0x04e9, 0x04fd, 0x0511, 0x0525, 0x0539, - 0x054d, 0x0561, 0x0575, 0x0589, 0x059d, 0x05b1, 0x05c5, 0x05d9, - 0x05ed, 0x0000, 0x0601, 0x0000, 0x0606, 0x061c, 0x062e, 0x0640, - 0x0656, 0x0668, 0x067a, 0x0690, 0x06a2, 0x06b4, 0x0001, 0x02fa, - 0x0001, 0x004e, 0x1bad, 0x0003, 0x0301, 0x0304, 0x0309, 0x0001, - 0x004e, 0x1bba, 0x0003, 0x004e, 0x1bc4, 0x1bde, 0x1bef, 0x0002, - // Entry 36D80 - 36DBF - 0x030c, 0x0310, 0x0002, 0x004e, 0x1c21, 0x1c06, 0x0002, 0x004e, - 0x1c42, 0x1c42, 0x0003, 0x0318, 0x031b, 0x0320, 0x0001, 0x004e, - 0x1bba, 0x0003, 0x004e, 0x1bc4, 0x1bde, 0x1bef, 0x0002, 0x0323, - 0x0327, 0x0002, 0x004e, 0x1c21, 0x1c06, 0x0002, 0x004e, 0x1c42, - 0x1c42, 0x0003, 0x032f, 0x0332, 0x0337, 0x0001, 0x004e, 0x1bba, - 0x0003, 0x004e, 0x1bc4, 0x1bde, 0x1bef, 0x0002, 0x033a, 0x033e, - 0x0002, 0x004e, 0x1c21, 0x1c06, 0x0002, 0x004e, 0x1c42, 0x1c42, - 0x0003, 0x0346, 0x0349, 0x034e, 0x0001, 0x004e, 0x1c63, 0x0003, - // Entry 36DC0 - 36DFF - 0x004e, 0x1c76, 0x1c99, 0x1cb3, 0x0002, 0x0351, 0x0355, 0x0002, - 0x004e, 0x1cf7, 0x1cd3, 0x0002, 0x004e, 0x1d4b, 0x1d21, 0x0003, - 0x035d, 0x0360, 0x0365, 0x0001, 0x004e, 0x1c63, 0x0003, 0x004e, - 0x1c76, 0x1d7b, 0x1cb3, 0x0002, 0x0368, 0x036c, 0x0002, 0x004e, - 0x1cf7, 0x1cd3, 0x0002, 0x004e, 0x1d4b, 0x1d21, 0x0003, 0x0374, - 0x0377, 0x037c, 0x0001, 0x004e, 0x1c63, 0x0003, 0x004e, 0x1c76, - 0x1d7b, 0x1cb3, 0x0002, 0x037f, 0x0383, 0x0002, 0x004e, 0x1cf7, - 0x1cf7, 0x0002, 0x004e, 0x1d4b, 0x1d4b, 0x0003, 0x038b, 0x038e, - // Entry 36E00 - 36E3F - 0x0393, 0x0001, 0x004e, 0x1d95, 0x0003, 0x004e, 0x1da5, 0x1dc5, - 0x1ddc, 0x0002, 0x0396, 0x039a, 0x0002, 0x004e, 0x1e1a, 0x1df9, - 0x0002, 0x004e, 0x1e68, 0x1e41, 0x0003, 0x03a2, 0x03a5, 0x03aa, - 0x0001, 0x004e, 0x1d95, 0x0003, 0x004e, 0x1da5, 0x1dc5, 0x1ddc, - 0x0002, 0x03ad, 0x03b1, 0x0002, 0x004e, 0x1e1a, 0x1df9, 0x0002, - 0x004e, 0x1e68, 0x1e41, 0x0003, 0x03b9, 0x03bc, 0x03c1, 0x0001, - 0x004e, 0x1d95, 0x0003, 0x004e, 0x1da5, 0x1dc5, 0x1ddc, 0x0002, - 0x03c4, 0x03c8, 0x0002, 0x004e, 0x1e1a, 0x1df9, 0x0002, 0x004e, - // Entry 36E40 - 36E7F - 0x1e68, 0x1e41, 0x0004, 0x03d1, 0x03d4, 0x03d9, 0x03e4, 0x0001, - 0x004e, 0x1e8f, 0x0003, 0x004e, 0x1e9f, 0x1ebf, 0x1ed6, 0x0002, - 0x03dc, 0x03e0, 0x0002, 0x004e, 0x1f14, 0x1ef3, 0x0002, 0x004e, - 0x1f62, 0x1f3b, 0x0001, 0x004e, 0x1f89, 0x0004, 0x03ec, 0x03ef, - 0x03f4, 0x03ff, 0x0001, 0x004e, 0x1e8f, 0x0003, 0x004e, 0x1e9f, - 0x1ebf, 0x1ed6, 0x0002, 0x03f7, 0x03fb, 0x0002, 0x004e, 0x1f14, - 0x1ef3, 0x0002, 0x004e, 0x1f62, 0x1f3b, 0x0001, 0x004e, 0x1f89, - 0x0004, 0x0407, 0x040a, 0x040f, 0x041a, 0x0001, 0x004e, 0x1e8f, - // Entry 36E80 - 36EBF - 0x0003, 0x004e, 0x1e9f, 0x1ebf, 0x1ed6, 0x0002, 0x0412, 0x0416, - 0x0002, 0x004e, 0x1f14, 0x1ef3, 0x0002, 0x004e, 0x1f62, 0x1f3b, - 0x0001, 0x004e, 0x1f89, 0x0003, 0x0421, 0x0424, 0x0429, 0x0001, - 0x004e, 0x1fa4, 0x0003, 0x004e, 0x1fae, 0x1fce, 0x1fd8, 0x0002, - 0x042c, 0x0430, 0x0002, 0x004f, 0x001b, 0x0000, 0x0002, 0x004f, - 0x003c, 0x003c, 0x0003, 0x0438, 0x0000, 0x043b, 0x0001, 0x004e, - 0x1fa4, 0x0002, 0x043e, 0x0442, 0x0002, 0x004f, 0x001b, 0x0000, - 0x0002, 0x004f, 0x003c, 0x003c, 0x0003, 0x044a, 0x0000, 0x044d, - // Entry 36EC0 - 36EFF - 0x0001, 0x004e, 0x1fa4, 0x0002, 0x0450, 0x0454, 0x0002, 0x004f, - 0x001b, 0x0000, 0x0002, 0x004f, 0x003c, 0x003c, 0x0001, 0x045a, - 0x0001, 0x004f, 0x005d, 0x0003, 0x0000, 0x0461, 0x0466, 0x0003, - 0x004f, 0x007e, 0x009e, 0x00b5, 0x0002, 0x0469, 0x046d, 0x0002, - 0x004f, 0x00f3, 0x00d2, 0x0002, 0x004f, 0x011a, 0x011a, 0x0003, - 0x0000, 0x0475, 0x047a, 0x0003, 0x004f, 0x0141, 0x0158, 0x0166, - 0x0002, 0x047d, 0x0481, 0x0002, 0x004f, 0x00f3, 0x00f3, 0x0002, - 0x004f, 0x011a, 0x011a, 0x0003, 0x0000, 0x0489, 0x048e, 0x0003, - // Entry 36F00 - 36F3F - 0x004f, 0x0141, 0x0158, 0x0166, 0x0002, 0x0491, 0x0495, 0x0002, - 0x004f, 0x00f3, 0x00f3, 0x0002, 0x004f, 0x011a, 0x011a, 0x0003, - 0x0000, 0x049d, 0x04a2, 0x0003, 0x004f, 0x017a, 0x019d, 0x01b7, - 0x0002, 0x04a5, 0x04a9, 0x0002, 0x004f, 0x01fb, 0x01d7, 0x0002, - 0x004f, 0x0225, 0x0225, 0x0003, 0x0000, 0x04b1, 0x04b6, 0x0003, - 0x004f, 0x024f, 0x0269, 0x027a, 0x0002, 0x04b9, 0x04bd, 0x0002, - 0x004f, 0x01fb, 0x01fb, 0x0002, 0x004f, 0x0225, 0x0225, 0x0003, - 0x0000, 0x04c5, 0x04ca, 0x0003, 0x004f, 0x024f, 0x0269, 0x027a, - // Entry 36F40 - 36F7F - 0x0002, 0x04cd, 0x04d1, 0x0002, 0x004f, 0x01fb, 0x01fb, 0x0002, - 0x004f, 0x0225, 0x0225, 0x0003, 0x0000, 0x04d9, 0x04de, 0x0003, - 0x004f, 0x0291, 0x02b7, 0x02d4, 0x0002, 0x04e1, 0x04e5, 0x0002, - 0x004f, 0x031e, 0x02f7, 0x0002, 0x004f, 0x034b, 0x034b, 0x0003, - 0x0000, 0x04ed, 0x04f2, 0x0003, 0x004f, 0x0378, 0x0395, 0x03a9, - 0x0002, 0x04f5, 0x04f9, 0x0002, 0x004f, 0x031e, 0x031e, 0x0002, - 0x004f, 0x034b, 0x034b, 0x0003, 0x0000, 0x0501, 0x0506, 0x0003, - 0x004f, 0x0378, 0x0395, 0x03a9, 0x0002, 0x0509, 0x050d, 0x0002, - // Entry 36F80 - 36FBF - 0x004f, 0x031e, 0x031e, 0x0002, 0x004f, 0x034b, 0x034b, 0x0003, - 0x0000, 0x0515, 0x051a, 0x0003, 0x004f, 0x03c3, 0x03e9, 0x0406, - 0x0002, 0x051d, 0x0521, 0x0002, 0x004f, 0x0450, 0x0429, 0x0002, - 0x004f, 0x047d, 0x047d, 0x0003, 0x0000, 0x0529, 0x052e, 0x0003, - 0x004f, 0x04aa, 0x04c7, 0x04db, 0x0002, 0x0531, 0x0535, 0x0002, - 0x004f, 0x0450, 0x0450, 0x0002, 0x004f, 0x047d, 0x047d, 0x0003, - 0x0000, 0x053d, 0x0542, 0x0003, 0x004f, 0x04aa, 0x04c7, 0x04db, - 0x0002, 0x0545, 0x0549, 0x0002, 0x004f, 0x0450, 0x0450, 0x0002, - // Entry 36FC0 - 36FFF - 0x004f, 0x047d, 0x047d, 0x0003, 0x0000, 0x0551, 0x0556, 0x0003, - 0x004f, 0x04f5, 0x0518, 0x0532, 0x0002, 0x0559, 0x055d, 0x0002, - 0x004f, 0x0576, 0x0552, 0x0002, 0x004f, 0x05a0, 0x05a0, 0x0003, - 0x0000, 0x0565, 0x056a, 0x0003, 0x004f, 0x05ca, 0x05e4, 0x05f5, - 0x0002, 0x056d, 0x0571, 0x0002, 0x004f, 0x0576, 0x0576, 0x0002, - 0x004f, 0x05a0, 0x05a0, 0x0003, 0x0000, 0x0579, 0x057e, 0x0003, - 0x004f, 0x05ca, 0x05e4, 0x05f5, 0x0002, 0x0581, 0x0585, 0x0002, - 0x004f, 0x0576, 0x0576, 0x0002, 0x004f, 0x05a0, 0x05a0, 0x0003, - // Entry 37000 - 3703F - 0x0000, 0x058d, 0x0592, 0x0003, 0x004f, 0x060c, 0x0638, 0x065b, - 0x0002, 0x0595, 0x0599, 0x0002, 0x004f, 0x06b1, 0x0684, 0x0002, - 0x004f, 0x06e4, 0x06e4, 0x0003, 0x0000, 0x05a1, 0x05a6, 0x0003, - 0x004f, 0x0717, 0x073a, 0x0754, 0x0002, 0x05a9, 0x05ad, 0x0002, - 0x004f, 0x06b1, 0x06b1, 0x0002, 0x004f, 0x06e4, 0x06e4, 0x0003, - 0x0000, 0x05b5, 0x05ba, 0x0003, 0x004f, 0x0774, 0x0791, 0x07a5, - 0x0002, 0x05bd, 0x05c1, 0x0002, 0x004f, 0x06b1, 0x06b1, 0x0002, - 0x004f, 0x06e4, 0x06e4, 0x0003, 0x0000, 0x05c9, 0x05ce, 0x0003, - // Entry 37040 - 3707F - 0x004f, 0x07bf, 0x07ee, 0x0814, 0x0002, 0x05d1, 0x05d5, 0x0002, - 0x004f, 0x0870, 0x0840, 0x0002, 0x004f, 0x08a6, 0x08a6, 0x0003, - 0x0000, 0x05dd, 0x05e2, 0x0003, 0x004f, 0x08dc, 0x0902, 0x091f, - 0x0002, 0x05e5, 0x05e9, 0x0002, 0x004f, 0x0870, 0x0870, 0x0002, - 0x004f, 0x08a6, 0x08a6, 0x0003, 0x0000, 0x05f1, 0x05f6, 0x0003, - 0x004f, 0x0942, 0x0962, 0x0979, 0x0002, 0x05f9, 0x05fd, 0x0002, - 0x004f, 0x0870, 0x0870, 0x0002, 0x004f, 0x08a6, 0x08a6, 0x0001, - 0x0603, 0x0001, 0x004f, 0x0996, 0x0003, 0x060a, 0x060d, 0x0611, - // Entry 37080 - 370BF - 0x0001, 0x004f, 0x09b4, 0x0002, 0x004f, 0xffff, 0x09c1, 0x0002, - 0x0614, 0x0618, 0x0002, 0x004f, 0x09f3, 0x09d5, 0x0002, 0x004f, - 0x0a3b, 0x0a17, 0x0003, 0x0620, 0x0000, 0x0623, 0x0001, 0x004f, - 0x09b4, 0x0002, 0x0626, 0x062a, 0x0002, 0x004f, 0x09f3, 0x09d5, - 0x0002, 0x004f, 0x0a3b, 0x0a17, 0x0003, 0x0632, 0x0000, 0x0635, - 0x0001, 0x004f, 0x0a5f, 0x0002, 0x0638, 0x063c, 0x0002, 0x004f, - 0x09f3, 0x09d5, 0x0002, 0x004f, 0x0a3b, 0x0a17, 0x0003, 0x0644, - 0x0647, 0x064b, 0x0001, 0x004f, 0x0a66, 0x0002, 0x004f, 0xffff, - // Entry 370C0 - 370FF - 0x0a73, 0x0002, 0x064e, 0x0652, 0x0002, 0x004f, 0x0aa5, 0x0a87, - 0x0002, 0x004f, 0x0ac9, 0x0ac9, 0x0003, 0x065a, 0x0000, 0x065d, - 0x0001, 0x004f, 0x0a66, 0x0002, 0x0660, 0x0664, 0x0002, 0x004f, - 0x0aa5, 0x0a87, 0x0002, 0x004f, 0x0ac9, 0x0ac9, 0x0003, 0x066c, - 0x0000, 0x066f, 0x0001, 0x004f, 0x0a66, 0x0002, 0x0672, 0x0676, - 0x0002, 0x004f, 0x0aa5, 0x0a87, 0x0002, 0x004f, 0x0ac9, 0x0ac9, - 0x0003, 0x067e, 0x0681, 0x0685, 0x0001, 0x004f, 0x0aed, 0x0002, - 0x004f, 0xffff, 0x0afd, 0x0002, 0x0688, 0x068c, 0x0002, 0x004f, - // Entry 37100 - 3713F - 0x0b28, 0x0b07, 0x0002, 0x004f, 0x0b4f, 0x0b4f, 0x0003, 0x0694, - 0x0000, 0x0697, 0x0001, 0x004f, 0x0aed, 0x0002, 0x069a, 0x069e, - 0x0002, 0x004f, 0x0b28, 0x0b07, 0x0002, 0x004f, 0x0b4f, 0x0b4f, - 0x0003, 0x06a6, 0x0000, 0x06a9, 0x0001, 0x004f, 0x0aed, 0x0002, - 0x06ac, 0x06b0, 0x0002, 0x004f, 0x0b28, 0x0b07, 0x0002, 0x004f, - 0x0b4f, 0x0b4f, 0x0001, 0x06b6, 0x0001, 0x004f, 0x0b76, 0x0004, - 0x06be, 0x06c3, 0x06c8, 0x06d3, 0x0003, 0x0000, 0x1dc7, 0x3839, - 0x3916, 0x0003, 0x004f, 0x0b96, 0x0ba7, 0x0bce, 0x0002, 0x0000, - // Entry 37140 - 3717F - 0x06cb, 0x0002, 0x0000, 0x06ce, 0x0003, 0x004f, 0xffff, 0x0bef, - 0x0c2f, 0x0002, 0x08ba, 0x06d6, 0x0003, 0x077a, 0x081a, 0x06da, - 0x009e, 0x004f, 0x0c5f, 0x0c8e, 0x0cc1, 0x0cf1, 0x0d64, 0x0e0e, - 0x0f1e, 0x0fcb, 0x10b7, 0x11a3, 0x129b, 0xffff, 0x1367, 0x14dd, - 0x155d, 0x1609, 0x16c2, 0x1758, 0x1809, 0x18fc, 0x19fc, 0x1ad6, - 0x1ba0, 0x1c42, 0x1cd5, 0x1d51, 0x1d6e, 0x1dbd, 0x1e3f, 0x1e99, - 0x1f1f, 0x1f69, 0x1fdd, 0x2052, 0x20cc, 0x2142, 0x2178, 0x21c8, - 0x2265, 0x2310, 0x2370, 0x238d, 0x23c9, 0x2423, 0x24a7, 0x24f1, - // Entry 37180 - 371BF - 0x2596, 0x261a, 0x267e, 0x273e, 0x2800, 0x286a, 0x289a, 0x28ed, - 0x2913, 0x2956, 0x29c0, 0x29f3, 0x2a5c, 0x2b31, 0x2be7, 0x2c11, - 0x2c6a, 0x2d29, 0x2dbb, 0x2e19, 0x2e46, 0x2e79, 0x2ea2, 0x2edb, - 0x2f17, 0x2f6d, 0x2fea, 0x307d, 0x3103, 0xffff, 0x315d, 0x3199, - 0x31f5, 0x325b, 0x32aa, 0x3338, 0x337b, 0x33cf, 0x34bb, 0x3514, - 0x357e, 0x35a1, 0x35c1, 0x35e7, 0x363d, 0x36ad, 0x3707, 0x37e6, - 0x38a2, 0x3931, 0x3995, 0x39b8, 0x39d5, 0x3a25, 0x3ae1, 0x3b91, - 0x3c1b, 0x3c32, 0x3ca5, 0x3dc1, 0x3e63, 0x3ee7, 0x3f5d, 0x3f77, - // Entry 371C0 - 371FF - 0x3fce, 0x4058, 0x40dc, 0x4152, 0x41cc, 0x4280, 0x42a3, 0x42c3, - 0x4391, 0x43b7, 0x43f4, 0xffff, 0x4475, 0x44d5, 0x44f5, 0x452b, - 0x4561, 0x4591, 0x45b4, 0x45d1, 0x460b, 0x4665, 0x4691, 0x46d1, - 0x4735, 0x477e, 0x480c, 0x484c, 0x48e5, 0x4990, 0x4a00, 0x4a58, - 0x4b06, 0x4b88, 0x4ba8, 0x4bd2, 0x4c2c, 0x4cc2, 0x2bcd, 0x3d4f, - 0xffff, 0x0e94, 0x13de, 0x145f, 0x1f05, 0x3361, 0x345d, 0x4315, - 0x009e, 0x004f, 0xffff, 0xffff, 0xffff, 0xffff, 0x0d34, 0x0dee, - 0x0efe, 0x0f88, 0x1077, 0x115d, 0x1255, 0xffff, 0x134d, 0x14c3, - // Entry 37200 - 3723F - 0x1537, 0x15d3, 0x169f, 0x1732, 0x17ca, 0x18ad, 0x19c0, 0x1a9a, - 0x1b74, 0x1c22, 0x1cac, 0xffff, 0xffff, 0x1d91, 0xffff, 0x1e78, - 0xffff, 0x1f4f, 0x1fc3, 0x203b, 0x20a6, 0xffff, 0xffff, 0x21a5, - 0x2238, 0x22f3, 0xffff, 0xffff, 0xffff, 0x23f6, 0xffff, 0x24ca, - 0x2569, 0xffff, 0x2651, 0x2702, 0x27e0, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2936, 0xffff, 0xffff, 0x2a23, 0x2af8, 0xffff, 0xffff, - 0x2c31, 0x2d02, 0x2da1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2f53, 0x2fc7, 0x305a, 0x30e9, 0xffff, 0xffff, 0xffff, - // Entry 37240 - 3727F - 0x31d5, 0xffff, 0x3278, 0xffff, 0xffff, 0x33a8, 0xffff, 0x34f4, - 0xffff, 0xffff, 0xffff, 0xffff, 0x361a, 0xffff, 0x36c7, 0x37ad, - 0x387e, 0x3914, 0xffff, 0xffff, 0xffff, 0x39f2, 0x3ab5, 0x3b5f, - 0xffff, 0xffff, 0x3c65, 0x3d92, 0x3e49, 0x3ec1, 0xffff, 0xffff, - 0x3fab, 0x403e, 0x40b6, 0xffff, 0x4185, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x43d7, 0xffff, 0x4458, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x45f1, 0xffff, 0xffff, 0x46b4, - 0xffff, 0x474c, 0xffff, 0x482c, 0x48b6, 0x496d, 0xffff, 0x4a2c, - // Entry 37280 - 372BF - 0x4ada, 0xffff, 0xffff, 0xffff, 0x4c0c, 0x4c96, 0xffff, 0xffff, - 0xffff, 0x0e74, 0x13c1, 0x1442, 0xffff, 0xffff, 0x3443, 0x42ec, - 0x009e, 0x004f, 0xffff, 0xffff, 0xffff, 0xffff, 0x0da4, 0x0e3e, - 0x0f4e, 0x101e, 0x1107, 0x11f9, 0x12f1, 0xffff, 0x1391, 0x1507, - 0x1593, 0x164f, 0x16f5, 0x178e, 0x1858, 0x195b, 0x1a48, 0x1b22, - 0x1bdc, 0x1c72, 0x1d0e, 0xffff, 0xffff, 0x1df9, 0xffff, 0x1eca, - 0xffff, 0x1f93, 0x2007, 0x2079, 0x2102, 0xffff, 0xffff, 0x21fb, - 0x22a2, 0x233d, 0xffff, 0xffff, 0xffff, 0x2460, 0xffff, 0x2528, - // Entry 372C0 - 372FF - 0x25d3, 0xffff, 0x26bb, 0x278a, 0x2830, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2986, 0xffff, 0xffff, 0x2aa5, 0x2b7a, 0xffff, 0xffff, - 0x2cb3, 0x2d60, 0x2de5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2f97, 0x301d, 0x30b0, 0x312d, 0xffff, 0xffff, 0xffff, - 0x3225, 0xffff, 0x32ec, 0xffff, 0xffff, 0x3406, 0xffff, 0x3544, - 0xffff, 0xffff, 0xffff, 0xffff, 0x3670, 0xffff, 0x3757, 0x382f, - 0x38d6, 0x395e, 0xffff, 0xffff, 0xffff, 0x3a68, 0x3b1d, 0x3bd3, - 0xffff, 0xffff, 0x3cf5, 0x3e00, 0x3e8d, 0x3f1d, 0xffff, 0xffff, - // Entry 37300 - 3733F - 0x4001, 0x4082, 0x4112, 0xffff, 0x4223, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x4421, 0xffff, 0x44a2, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x4635, 0xffff, 0xffff, 0x46fe, - 0xffff, 0x47c0, 0xffff, 0x487c, 0x4924, 0x49c3, 0xffff, 0x4a94, - 0x4b42, 0xffff, 0xffff, 0xffff, 0x4c5c, 0x4cfe, 0xffff, 0xffff, - 0xffff, 0x0ec4, 0x140b, 0x148c, 0xffff, 0xffff, 0x3487, 0x434e, - 0x0003, 0x0000, 0x0000, 0x08be, 0x0042, 0x000b, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 37340 - 3737F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, - 0x0002, 0x0003, 0x0092, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 37380 - 373BF - 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, - 0x001a, 0x0020, 0x0001, 0x0010, 0x0003, 0x0001, 0x0001, 0x1f8d, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, - 0x0044, 0x0053, 0x0000, 0x0060, 0x0070, 0x0081, 0x0000, 0x0001, - 0x0031, 0x0003, 0x0000, 0x0000, 0x0035, 0x000d, 0x0022, 0xffff, - 0x0000, 0x305d, 0x0018, 0x3068, 0x3073, 0x0031, 0x3078, 0x3085, - 0x308e, 0x0059, 0x3099, 0x30a4, 0x0001, 0x0046, 0x0003, 0x0000, - // Entry 373C0 - 373FF - 0x0000, 0x004a, 0x0007, 0x0050, 0x0000, 0x000b, 0x0012, 0x001b, - 0x0024, 0x0031, 0x003a, 0x0001, 0x0055, 0x0003, 0x0000, 0x0000, - 0x0059, 0x0005, 0x0050, 0xffff, 0x0043, 0x005b, 0x0071, 0x0087, - 0x0003, 0x006a, 0x0000, 0x0064, 0x0001, 0x0066, 0x0002, 0x0050, - 0x009f, 0x00b0, 0x0001, 0x006c, 0x0002, 0x0050, 0x009f, 0x00b0, - 0x0004, 0x007e, 0x0078, 0x0075, 0x007b, 0x0001, 0x0001, 0x001d, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, - 0x0860, 0x0004, 0x008f, 0x0089, 0x0086, 0x008c, 0x0001, 0x0002, - // Entry 37400 - 3743F - 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, - 0x0002, 0x0478, 0x0040, 0x0000, 0x0000, 0x0000, 0x00d3, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x00d8, 0x0000, 0x0000, 0x00dd, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e2, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00e7, 0x0000, 0x0000, 0x0000, 0x0000, - 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 37440 - 3747F - 0x0000, 0x00ec, 0x0000, 0x0000, 0x00f1, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x00f6, 0x0001, 0x00d5, 0x0001, 0x0050, 0x00b5, - 0x0001, 0x00da, 0x0001, 0x0050, 0x00be, 0x0001, 0x00df, 0x0001, - 0x0050, 0x003a, 0x0001, 0x00e4, 0x0001, 0x0050, 0x00c9, 0x0001, - 0x00e9, 0x0001, 0x0050, 0x00d0, 0x0001, 0x00ee, 0x0001, 0x0050, - 0x00e3, 0x0001, 0x00f3, 0x0001, 0x0050, 0x00ee, 0x0001, 0x00f8, - 0x0001, 0x0050, 0x00f5, 0x0003, 0x0004, 0x04db, 0x0a29, 0x0012, - 0x0017, 0x0024, 0x0082, 0x0000, 0x00ce, 0x0000, 0x011a, 0x0145, - // Entry 37480 - 374BF - 0x0370, 0x03bd, 0x0405, 0x0000, 0x0000, 0x0000, 0x0000, 0x045d, - 0x0475, 0x04cd, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, - 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0006, - 0x002b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0071, 0x0002, 0x002e, - 0x004f, 0x0002, 0x0031, 0x0040, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, - // Entry 374C0 - 374FF - 0x3871, 0x3874, 0x0003, 0x0053, 0x0000, 0x0062, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x0004, 0x007f, 0x0079, 0x0076, - 0x007c, 0x0001, 0x0050, 0x00fc, 0x0001, 0x0010, 0x0026, 0x0001, - 0x0010, 0x002f, 0x0001, 0x0016, 0x0470, 0x0001, 0x0084, 0x0002, - 0x0087, 0x00aa, 0x0002, 0x008a, 0x009a, 0x000e, 0x0000, 0xffff, - // Entry 37500 - 3753F - 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x391a, 0x3921, 0x03f9, - 0x392a, 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x0003, 0x00ae, 0x0000, - 0x00be, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, - 0x03e4, 0x391a, 0x3921, 0x03f9, 0x392a, 0x040b, 0x0411, 0x0416, - 0x041c, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, - 0x03e4, 0x391a, 0x3921, 0x03f9, 0x392a, 0x040b, 0x0411, 0x0416, - // Entry 37540 - 3757F - 0x041c, 0x0001, 0x00d0, 0x0002, 0x00d3, 0x00f6, 0x0002, 0x00d6, - 0x00e6, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x3932, 0x3938, - 0x044c, 0x0450, 0x0458, 0x0460, 0x393f, 0x046e, 0x3946, 0x0479, - 0x0481, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x0422, 0x0003, 0x00fa, 0x0000, 0x010a, 0x000e, 0x0000, 0xffff, - 0x042f, 0x0438, 0x3932, 0x3938, 0x044c, 0x0450, 0x0458, 0x0460, - 0x393f, 0x046e, 0x3946, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, - // Entry 37580 - 375BF - 0x042f, 0x0438, 0x3932, 0x3938, 0x044c, 0x0450, 0x0458, 0x0460, - 0x393f, 0x046e, 0x3946, 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0123, 0x0000, 0x0134, 0x0004, 0x0131, - 0x012b, 0x0128, 0x012e, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0016, 0x02aa, 0x0004, - 0x0142, 0x013c, 0x0139, 0x013f, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0008, 0x014e, 0x01b3, 0x020a, 0x023f, 0x0328, 0x033d, 0x034e, - // Entry 375C0 - 375FF - 0x035f, 0x0002, 0x0151, 0x0182, 0x0003, 0x0155, 0x0164, 0x0173, - 0x000d, 0x0050, 0xffff, 0x010b, 0x010f, 0x0113, 0x0117, 0x011b, - 0x011f, 0x0123, 0x0127, 0x012b, 0x012f, 0x0134, 0x0138, 0x000d, - 0x0000, 0xffff, 0x2002, 0x200a, 0x1f9a, 0x1ffe, 0x1f9a, 0x200c, - 0x200a, 0x2002, 0x22df, 0x21ec, 0x200a, 0x200e, 0x000d, 0x0050, - 0xffff, 0x013c, 0x0145, 0x014c, 0x0152, 0x015b, 0x0160, 0x0168, - 0x016e, 0x0177, 0x0181, 0x018f, 0x0199, 0x0003, 0x0186, 0x0195, - 0x01a4, 0x000d, 0x0050, 0xffff, 0x010b, 0x010f, 0x0113, 0x0117, - // Entry 37600 - 3763F - 0x011b, 0x011f, 0x0123, 0x0127, 0x012b, 0x012f, 0x0134, 0x0138, - 0x000d, 0x0000, 0xffff, 0x298e, 0x2994, 0x297a, 0x25bc, 0x297a, - 0x24fb, 0x2994, 0x298e, 0x2159, 0x255c, 0x2994, 0x2281, 0x000d, - 0x0050, 0xffff, 0x01a1, 0x01aa, 0x01af, 0x01b6, 0x011b, 0x01c0, - 0x01c9, 0x01d0, 0x01da, 0x01e4, 0x01f1, 0x01fa, 0x0002, 0x01b6, - 0x01e0, 0x0005, 0x01bc, 0x01c5, 0x01d7, 0x0000, 0x01ce, 0x0007, - 0x0050, 0x0204, 0x020b, 0x0210, 0x0214, 0x0219, 0x021e, 0x0222, - 0x0007, 0x0000, 0x1f96, 0x21ec, 0x22df, 0x394c, 0x200c, 0x21ec, - // Entry 37640 - 3767F - 0x2002, 0x0007, 0x0050, 0x0227, 0x022b, 0x022f, 0x0233, 0x0238, - 0x023c, 0x0241, 0x0007, 0x0050, 0x0245, 0x024f, 0x025d, 0x0264, - 0x026b, 0x0274, 0x027c, 0x0005, 0x01e6, 0x01ef, 0x0201, 0x0000, - 0x01f8, 0x0007, 0x0050, 0x0204, 0x020b, 0x0210, 0x0214, 0x0219, - 0x021e, 0x0222, 0x0007, 0x0000, 0x297e, 0x255c, 0x2159, 0x394f, - 0x24fb, 0x255c, 0x298e, 0x0007, 0x0050, 0x0227, 0x022b, 0x022f, - 0x0233, 0x0238, 0x023c, 0x0241, 0x0007, 0x0050, 0x0245, 0x024f, - 0x025d, 0x0264, 0x026b, 0x0274, 0x027c, 0x0002, 0x020d, 0x0226, - // Entry 37680 - 376BF - 0x0003, 0x0211, 0x0218, 0x021f, 0x0005, 0x0050, 0xffff, 0x0283, - 0x0289, 0x0290, 0x0298, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0050, 0xffff, 0x029f, 0x02aa, 0x02b6, - 0x02c3, 0x0003, 0x022a, 0x0231, 0x0238, 0x0005, 0x0050, 0xffff, - 0x0283, 0x0289, 0x0290, 0x0298, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0050, 0xffff, 0x029f, 0x02aa, - 0x02b6, 0x02c3, 0x0002, 0x0242, 0x02b5, 0x0003, 0x0246, 0x026b, - 0x0290, 0x0009, 0x0253, 0x0259, 0x0250, 0x025c, 0x0262, 0x0265, - // Entry 376C0 - 376FF - 0x0268, 0x0256, 0x025f, 0x0001, 0x0050, 0x02cf, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0050, 0x02db, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x0050, 0x02e7, 0x0001, 0x0050, 0x02ec, 0x0001, 0x0050, 0x02fd, - 0x0001, 0x0050, 0x030a, 0x0001, 0x0050, 0x0314, 0x0009, 0x0278, - 0x027e, 0x0275, 0x0281, 0x0287, 0x028a, 0x028d, 0x027b, 0x0284, - 0x0001, 0x0050, 0x031b, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0050, - 0x0325, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0050, 0x02e7, 0x0001, - 0x0050, 0x032d, 0x0001, 0x0050, 0x0339, 0x0001, 0x0050, 0x0342, - // Entry 37700 - 3773F - 0x0001, 0x0050, 0x0314, 0x0009, 0x029d, 0x02a3, 0x029a, 0x02a6, - 0x02ac, 0x02af, 0x02b2, 0x02a0, 0x02a9, 0x0001, 0x0050, 0x02cf, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0050, 0x02db, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x0050, 0x02e7, 0x0001, 0x0050, 0x02ec, 0x0001, - 0x0050, 0x02fd, 0x0001, 0x0050, 0x030a, 0x0001, 0x0050, 0x0314, - 0x0003, 0x02b9, 0x02de, 0x0303, 0x0009, 0x02c6, 0x02cc, 0x02c3, - 0x02cf, 0x02d5, 0x02d8, 0x02db, 0x02c9, 0x02d2, 0x0001, 0x0050, - 0x0349, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0050, 0x0352, 0x0001, - // Entry 37740 - 3777F - 0x0000, 0x04f2, 0x0001, 0x0050, 0x02e7, 0x0001, 0x0050, 0x035c, - 0x0001, 0x0050, 0x036b, 0x0001, 0x0050, 0x0377, 0x0001, 0x0013, - 0x067f, 0x0009, 0x02eb, 0x02f1, 0x02e8, 0x02f4, 0x02fa, 0x02fd, - 0x0300, 0x02ee, 0x02f7, 0x0001, 0x0050, 0x0380, 0x0001, 0x0000, - 0x1f9c, 0x0001, 0x0050, 0x0388, 0x0001, 0x0000, 0x21ec, 0x0001, - 0x0050, 0x02e7, 0x0001, 0x0050, 0x038e, 0x0001, 0x0050, 0x0399, - 0x0001, 0x0050, 0x0342, 0x0001, 0x0013, 0x067f, 0x0009, 0x0310, - 0x0316, 0x030d, 0x0319, 0x031f, 0x0322, 0x0325, 0x0313, 0x031c, - // Entry 37780 - 377BF - 0x0001, 0x0050, 0x0349, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0050, - 0x0352, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0050, 0x02e7, 0x0001, - 0x0050, 0x035c, 0x0001, 0x0050, 0x036b, 0x0001, 0x0050, 0x0377, - 0x0001, 0x0013, 0x067f, 0x0003, 0x0337, 0x0000, 0x032c, 0x0002, - 0x032f, 0x0333, 0x0002, 0x0050, 0x03a1, 0x03ba, 0x0002, 0x0050, - 0x03b3, 0x03c5, 0x0001, 0x0339, 0x0002, 0x0050, 0x03b3, 0x03c5, - 0x0004, 0x034b, 0x0345, 0x0342, 0x0348, 0x0001, 0x0005, 0x0773, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0016, - // Entry 377C0 - 377FF - 0x0470, 0x0004, 0x035c, 0x0356, 0x0353, 0x0359, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x036d, 0x0367, 0x0364, 0x036a, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0372, 0x0002, 0x0375, 0x0399, - 0x0003, 0x0379, 0x0000, 0x0389, 0x000e, 0x0050, 0x03f9, 0x03ca, - 0x03d1, 0x03da, 0x03e1, 0x03e7, 0x03ed, 0x03f4, 0x0401, 0x0407, - 0x040c, 0x0412, 0x0418, 0x041b, 0x000e, 0x0050, 0x03f9, 0x03ca, - // Entry 37800 - 3783F - 0x03d1, 0x03da, 0x03e1, 0x03e7, 0x03ed, 0x03f4, 0x0401, 0x0407, - 0x040c, 0x0412, 0x0418, 0x041b, 0x0003, 0x039d, 0x0000, 0x03ad, - 0x000e, 0x0050, 0x03f9, 0x03ca, 0x03d1, 0x03da, 0x03e1, 0x03e7, - 0x03ed, 0x03f4, 0x0401, 0x0407, 0x040c, 0x0412, 0x0418, 0x041b, - 0x000e, 0x0050, 0x03f9, 0x03ca, 0x03d1, 0x03da, 0x03e1, 0x03e7, - 0x03ed, 0x03f4, 0x0401, 0x0407, 0x040c, 0x0412, 0x0418, 0x041b, - 0x0001, 0x03bf, 0x0002, 0x03c2, 0x03e3, 0x0002, 0x03c5, 0x03d4, - 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, - // Entry 37840 - 3787F - 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0003, 0x03e7, - 0x0000, 0x03f6, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, - 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, - 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, - 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, 0x05f2, 0x05f8, - 0x0001, 0x0407, 0x0002, 0x040a, 0x043b, 0x0003, 0x040e, 0x041d, - // Entry 37880 - 378BF - 0x042c, 0x000d, 0x0000, 0xffff, 0x0606, 0x3952, 0x3957, 0x395e, - 0x3966, 0x396e, 0x3977, 0x397b, 0x3980, 0x3985, 0x398b, 0x3994, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - 0x0000, 0xffff, 0x0657, 0x399d, 0x0666, 0x066f, 0x39a3, 0x39ae, - 0x39ba, 0x39c2, 0x39c9, 0x39d1, 0x39d9, 0x39e4, 0x0003, 0x043f, - 0x0000, 0x044e, 0x000d, 0x0000, 0xffff, 0x0606, 0x3952, 0x3957, - 0x395e, 0x3966, 0x396e, 0x3977, 0x397b, 0x3980, 0x3985, 0x398b, - // Entry 378C0 - 378FF - 0x3994, 0x000d, 0x0000, 0xffff, 0x0657, 0x399d, 0x0666, 0x066f, - 0x39a3, 0x39ae, 0x39ba, 0x39c2, 0x39c9, 0x39d1, 0x39d9, 0x39e4, - 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0464, 0x0004, - 0x0472, 0x046c, 0x0469, 0x046f, 0x0001, 0x0005, 0x0625, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0016, 0x02aa, - 0x0001, 0x0477, 0x0002, 0x047a, 0x04ab, 0x0003, 0x047e, 0x048d, - 0x049c, 0x000d, 0x0050, 0xffff, 0x0420, 0x042a, 0x0436, 0x043f, - 0x0443, 0x044b, 0x0455, 0x045a, 0x0461, 0x0467, 0x046c, 0x0473, - // Entry 37900 - 3793F - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - 0x0050, 0xffff, 0x0420, 0x042a, 0x0436, 0x043f, 0x0443, 0x044b, - 0x0455, 0x045a, 0x0461, 0x0467, 0x046c, 0x0473, 0x0003, 0x04af, - 0x0000, 0x04be, 0x000d, 0x0050, 0xffff, 0x0420, 0x042a, 0x0436, - 0x043f, 0x0443, 0x044b, 0x0455, 0x045a, 0x0461, 0x0467, 0x046c, - 0x0473, 0x000d, 0x0050, 0xffff, 0x0420, 0x042a, 0x0436, 0x043f, - 0x0443, 0x044b, 0x0455, 0x045a, 0x0461, 0x0467, 0x046c, 0x0473, - // Entry 37940 - 3797F - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x04d3, 0x0001, 0x04d5, - 0x0001, 0x04d7, 0x0002, 0x0050, 0x047a, 0x0484, 0x0040, 0x051c, - 0x0000, 0x0000, 0x0521, 0x0540, 0x055a, 0x0574, 0x0593, 0x05b2, - 0x05d1, 0x05f0, 0x060a, 0x0624, 0x0647, 0x0665, 0x0000, 0x0000, - 0x0000, 0x0683, 0x06a4, 0x06be, 0x0000, 0x0000, 0x0000, 0x06d8, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x06dd, 0x06f9, 0x0715, - 0x0731, 0x074d, 0x0769, 0x0785, 0x07a1, 0x07bd, 0x07d9, 0x07f5, - 0x0811, 0x082d, 0x0849, 0x0865, 0x0881, 0x089d, 0x08b9, 0x08d5, - // Entry 37980 - 379BF - 0x08f1, 0x090d, 0x0000, 0x0929, 0x0000, 0x092e, 0x094c, 0x0966, - 0x0980, 0x099e, 0x09b8, 0x09d2, 0x09f0, 0x0a0a, 0x0a24, 0x0001, - 0x051e, 0x0001, 0x0001, 0x0040, 0x0003, 0x0525, 0x0528, 0x052d, - 0x0001, 0x0013, 0x06e7, 0x0003, 0x0050, 0x0488, 0x0498, 0x04a3, - 0x0002, 0x0530, 0x0538, 0x0006, 0x0013, 0x0727, 0x0710, 0xffff, - 0xffff, 0x3106, 0x3112, 0x0006, 0x0050, 0x04dd, 0x04b5, 0xffff, - 0xffff, 0x04c2, 0x04d0, 0x0003, 0x0544, 0x0000, 0x0547, 0x0001, - 0x0013, 0x062a, 0x0002, 0x054a, 0x0552, 0x0006, 0x0013, 0x0727, - // Entry 379C0 - 379FF - 0x0710, 0xffff, 0xffff, 0x3106, 0x3112, 0x0006, 0x0050, 0x04dd, - 0x04b5, 0xffff, 0xffff, 0x04c2, 0x04d0, 0x0003, 0x055e, 0x0000, - 0x0561, 0x0001, 0x0013, 0x062a, 0x0002, 0x0564, 0x056c, 0x0006, - 0x0013, 0x0727, 0x0710, 0xffff, 0xffff, 0x3106, 0x3112, 0x0006, - 0x0050, 0x04dd, 0x04b5, 0xffff, 0xffff, 0x04c2, 0x04d0, 0x0003, - 0x0578, 0x057b, 0x0580, 0x0001, 0x0050, 0x04eb, 0x0003, 0x0050, - 0x04f4, 0x0508, 0x0517, 0x0002, 0x0583, 0x058b, 0x0006, 0x0050, - 0x0561, 0x052d, 0xffff, 0xffff, 0x053d, 0x054e, 0x0006, 0x0050, - // Entry 37A00 - 37A3F - 0x05ac, 0x0572, 0xffff, 0xffff, 0x0584, 0x0597, 0x0003, 0x0597, - 0x059a, 0x059f, 0x0001, 0x0001, 0x0117, 0x0003, 0x0050, 0x04f4, - 0x0508, 0x0517, 0x0002, 0x05a2, 0x05aa, 0x0006, 0x0017, 0x0518, - 0x0518, 0xffff, 0xffff, 0x0518, 0x0518, 0x0006, 0x0050, 0x05bf, - 0x05bf, 0xffff, 0xffff, 0x05bf, 0x05bf, 0x0003, 0x05b6, 0x05b9, - 0x05be, 0x0001, 0x0001, 0x0117, 0x0003, 0x0050, 0x04f4, 0x0508, - 0x0517, 0x0002, 0x05c1, 0x05c9, 0x0006, 0x0050, 0x05cc, 0x05cc, - 0xffff, 0xffff, 0x05cc, 0x05cc, 0x0006, 0x0050, 0x05d5, 0x05d5, - // Entry 37A40 - 37A7F - 0xffff, 0xffff, 0x05d5, 0x05d5, 0x0003, 0x05d5, 0x05d8, 0x05dd, - 0x0001, 0x0050, 0x05e0, 0x0003, 0x0050, 0x05e9, 0x05fe, 0x060e, - 0x0002, 0x05e0, 0x05e8, 0x0006, 0x0050, 0x0657, 0x0625, 0xffff, - 0xffff, 0x0635, 0x0646, 0x0006, 0x0050, 0x06a0, 0x0668, 0xffff, - 0xffff, 0x067a, 0x068d, 0x0003, 0x05f4, 0x0000, 0x05f7, 0x0001, - 0x0050, 0x06b3, 0x0002, 0x05fa, 0x0602, 0x0006, 0x0050, 0x06b9, - 0x06b9, 0xffff, 0xffff, 0x06b9, 0x06b9, 0x0006, 0x0050, 0x06c6, - 0x06c6, 0xffff, 0xffff, 0x06c6, 0x06c6, 0x0003, 0x060e, 0x0000, - // Entry 37A80 - 37ABF - 0x0611, 0x0001, 0x0050, 0x06d5, 0x0002, 0x0614, 0x061c, 0x0006, - 0x0050, 0x06d8, 0x06d8, 0xffff, 0xffff, 0x06d8, 0x06d8, 0x0006, - 0x0050, 0x06e3, 0x06e3, 0xffff, 0xffff, 0x06e3, 0x06e3, 0x0004, - 0x0629, 0x062c, 0x0631, 0x0644, 0x0001, 0x0050, 0x06f0, 0x0003, - 0x0050, 0x06f9, 0x070d, 0x071c, 0x0002, 0x0634, 0x063c, 0x0006, - 0x0050, 0x0761, 0x0732, 0xffff, 0xffff, 0x0742, 0x0752, 0x0006, - 0x0050, 0x07a6, 0x0771, 0xffff, 0xffff, 0x0783, 0x0795, 0x0001, - 0x0050, 0x07b8, 0x0004, 0x064c, 0x0000, 0x064f, 0x0662, 0x0001, - // Entry 37AC0 - 37AFF - 0x0050, 0x07c5, 0x0002, 0x0652, 0x065a, 0x0006, 0x0050, 0x07d8, - 0x07cb, 0xffff, 0xffff, 0x07d8, 0x07d8, 0x0006, 0x0050, 0x07f3, - 0x07e4, 0xffff, 0xffff, 0x07f3, 0x07f3, 0x0001, 0x0050, 0x07b8, - 0x0004, 0x066a, 0x0000, 0x066d, 0x0680, 0x0001, 0x0050, 0x07c5, - 0x0002, 0x0670, 0x0678, 0x0006, 0x0050, 0x07d8, 0x07cb, 0xffff, - 0xffff, 0x07d8, 0x07d8, 0x0006, 0x0050, 0x07f3, 0x07e4, 0xffff, - 0xffff, 0x07f3, 0x07f3, 0x0001, 0x0050, 0x07b8, 0x0003, 0x0687, - 0x068a, 0x0691, 0x0001, 0x0050, 0x0801, 0x0005, 0x0050, 0x0815, - // Entry 37B00 - 37B3F - 0x081d, 0x0825, 0x0808, 0x082b, 0x0002, 0x0694, 0x069c, 0x0006, - 0x0050, 0x084d, 0x0834, 0xffff, 0xffff, 0x0842, 0x0842, 0x0006, - 0x0050, 0x0876, 0x0859, 0xffff, 0xffff, 0x0869, 0x0869, 0x0003, - 0x06a8, 0x0000, 0x06ab, 0x0001, 0x0050, 0x0801, 0x0002, 0x06ae, - 0x06b6, 0x0006, 0x0050, 0x084d, 0x0834, 0xffff, 0xffff, 0x0842, - 0x0842, 0x0006, 0x0050, 0x0876, 0x0859, 0xffff, 0xffff, 0x0869, - 0x0869, 0x0003, 0x06c2, 0x0000, 0x06c5, 0x0001, 0x0050, 0x0801, - 0x0002, 0x06c8, 0x06d0, 0x0006, 0x0050, 0x084d, 0x0834, 0xffff, - // Entry 37B40 - 37B7F - 0xffff, 0x0842, 0x0842, 0x0006, 0x0050, 0x0876, 0x0859, 0xffff, - 0xffff, 0x0869, 0x0869, 0x0001, 0x06da, 0x0001, 0x0050, 0x0884, - 0x0003, 0x0000, 0x06e1, 0x06e6, 0x0003, 0x0050, 0x0894, 0x08aa, - 0x08bb, 0x0002, 0x06e9, 0x06f1, 0x0006, 0x0050, 0x0906, 0x08d3, - 0xffff, 0xffff, 0x08e5, 0x08f6, 0x0006, 0x0050, 0x0950, 0x0917, - 0xffff, 0xffff, 0x092b, 0x093e, 0x0003, 0x0000, 0x06fd, 0x0702, - 0x0003, 0x0050, 0x0894, 0x08aa, 0x08bb, 0x0002, 0x0705, 0x070d, - 0x0006, 0x0050, 0x0906, 0x08d3, 0xffff, 0xffff, 0x08e5, 0x08f6, - // Entry 37B80 - 37BBF - 0x0006, 0x0050, 0x0950, 0x0917, 0xffff, 0xffff, 0x092b, 0x093e, - 0x0003, 0x0000, 0x0719, 0x071e, 0x0003, 0x0050, 0x0894, 0x08aa, - 0x08bb, 0x0002, 0x0721, 0x0729, 0x0006, 0x0050, 0x0906, 0x08d3, - 0xffff, 0xffff, 0x08e5, 0x08f6, 0x0006, 0x0050, 0x0950, 0x0917, - 0xffff, 0xffff, 0x092b, 0x093e, 0x0003, 0x0000, 0x0735, 0x073a, - 0x0003, 0x0050, 0x0963, 0x097b, 0x098f, 0x0002, 0x073d, 0x0745, - 0x0006, 0x0050, 0x09ea, 0x09a9, 0xffff, 0xffff, 0x09be, 0x09d3, - 0x0006, 0x0050, 0x0a46, 0x09ff, 0xffff, 0xffff, 0x0a16, 0x0a2d, - // Entry 37BC0 - 37BFF - 0x0003, 0x0000, 0x0751, 0x0756, 0x0003, 0x0050, 0x0963, 0x097b, - 0x098f, 0x0002, 0x0759, 0x0761, 0x0006, 0x0050, 0x09ea, 0x09a9, - 0xffff, 0xffff, 0x09be, 0x09d3, 0x0006, 0x0050, 0x0a46, 0x09ff, - 0xffff, 0xffff, 0x0a16, 0x0a2d, 0x0003, 0x0000, 0x076d, 0x0772, - 0x0003, 0x0050, 0x0963, 0x097b, 0x098f, 0x0002, 0x0775, 0x077d, - 0x0006, 0x0050, 0x09ea, 0x09a9, 0xffff, 0xffff, 0x09be, 0x09d3, - 0x0006, 0x0050, 0x0a46, 0x09ff, 0xffff, 0xffff, 0x0a16, 0x0a2d, - 0x0003, 0x0000, 0x0789, 0x078e, 0x0003, 0x0050, 0x0a5d, 0x0a6e, - // Entry 37C00 - 37C3F - 0x0a7b, 0x0002, 0x0791, 0x0799, 0x0006, 0x0050, 0x0aba, 0x0a8e, - 0xffff, 0xffff, 0x0a9c, 0x0aaa, 0x0006, 0x0050, 0x0afa, 0x0ac8, - 0xffff, 0xffff, 0x0ad8, 0x0ae8, 0x0003, 0x0000, 0x07a5, 0x07aa, - 0x0003, 0x0050, 0x0a5d, 0x0a6e, 0x0a7b, 0x0002, 0x07ad, 0x07b5, - 0x0006, 0x0050, 0x0aba, 0x0a8e, 0xffff, 0xffff, 0x0a9c, 0x0aaa, - 0x0006, 0x0050, 0x0afa, 0x0ac8, 0xffff, 0xffff, 0x0ad8, 0x0ae8, - 0x0003, 0x0000, 0x07c1, 0x07c6, 0x0003, 0x0050, 0x0a5d, 0x0a6e, - 0x0a7b, 0x0002, 0x07c9, 0x07d1, 0x0006, 0x0050, 0x0aba, 0x0a8e, - // Entry 37C40 - 37C7F - 0xffff, 0xffff, 0x0a9c, 0x0aaa, 0x0006, 0x0050, 0x0afa, 0x0ac8, - 0xffff, 0xffff, 0x0ad8, 0x0ae8, 0x0003, 0x0000, 0x07dd, 0x07e2, - 0x0003, 0x0050, 0x0b0a, 0x0b1d, 0x0b2b, 0x0002, 0x07e5, 0x07ed, - 0x0006, 0x0050, 0x0b4f, 0x0b40, 0xffff, 0xffff, 0x0b4f, 0x0b5d, - 0x0006, 0x0050, 0x0b7c, 0x0b6b, 0xffff, 0xffff, 0x0b7c, 0x0b8c, - 0x0003, 0x0000, 0x07f9, 0x07fe, 0x0003, 0x0050, 0x0b0a, 0x0b1d, - 0x0b2b, 0x0002, 0x0801, 0x0809, 0x0006, 0x0050, 0x0b4f, 0x0b40, - 0xffff, 0xffff, 0x0b4f, 0x0b5d, 0x0006, 0x0050, 0x0b7c, 0x0b6b, - // Entry 37C80 - 37CBF - 0xffff, 0xffff, 0x0b7c, 0x0b8c, 0x0003, 0x0000, 0x0815, 0x081a, - 0x0003, 0x0050, 0x0b0a, 0x0b1d, 0x0b2b, 0x0002, 0x081d, 0x0825, - 0x0006, 0x0050, 0x0b4f, 0x0b40, 0xffff, 0xffff, 0x0b4f, 0x0b5d, - 0x0006, 0x0050, 0x0b7c, 0x0b6b, 0xffff, 0xffff, 0x0b7c, 0x0b8c, - 0x0003, 0x0000, 0x0831, 0x0836, 0x0003, 0x0050, 0x0b9c, 0x0baf, - 0x0bbe, 0x0002, 0x0839, 0x0841, 0x0006, 0x0050, 0x0c05, 0x0bd3, - 0xffff, 0xffff, 0x0be3, 0x0bf3, 0x0006, 0x0050, 0x0c4d, 0x0c15, - 0xffff, 0xffff, 0x0c27, 0x0c39, 0x0003, 0x0000, 0x084d, 0x0852, - // Entry 37CC0 - 37CFF - 0x0003, 0x0050, 0x0b9c, 0x0baf, 0x0bbe, 0x0002, 0x0855, 0x085d, - 0x0006, 0x0050, 0x0c05, 0x0bd3, 0xffff, 0xffff, 0x0be3, 0x0bf3, - 0x0006, 0x0050, 0x0c4d, 0x0c15, 0xffff, 0xffff, 0x0c27, 0x0c39, - 0x0003, 0x0000, 0x0869, 0x086e, 0x0003, 0x0050, 0x0b9c, 0x0baf, - 0x0bbe, 0x0002, 0x0871, 0x0879, 0x0006, 0x0050, 0x0c05, 0x0bd3, - 0xffff, 0xffff, 0x0be3, 0x0bf3, 0x0006, 0x0050, 0x0c4d, 0x0c15, - 0xffff, 0xffff, 0x0c27, 0x0c39, 0x0003, 0x0000, 0x0885, 0x088a, - 0x0003, 0x0050, 0x0c5f, 0x0c71, 0x0c7f, 0x0002, 0x088d, 0x0895, - // Entry 37D00 - 37D3F - 0x0006, 0x0050, 0x0cc2, 0x0c93, 0xffff, 0xffff, 0x0ca2, 0x0cb1, - 0x0006, 0x0050, 0x0d06, 0x0cd1, 0xffff, 0xffff, 0x0ce2, 0x0cf3, - 0x0003, 0x0000, 0x08a1, 0x08a6, 0x0003, 0x0050, 0x0c5f, 0x0c71, - 0x0c7f, 0x0002, 0x08a9, 0x08b1, 0x0006, 0x0050, 0x0cc2, 0x0c93, - 0xffff, 0xffff, 0x0ca2, 0x0cb1, 0x0006, 0x0050, 0x0d06, 0x0cd1, - 0xffff, 0xffff, 0x0ce2, 0x0cf3, 0x0003, 0x0000, 0x08bd, 0x08c2, - 0x0003, 0x0050, 0x0c5f, 0x0c71, 0x0c7f, 0x0002, 0x08c5, 0x08cd, - 0x0006, 0x0050, 0x0cc2, 0x0c93, 0xffff, 0xffff, 0x0ca2, 0x0cb1, - // Entry 37D40 - 37D7F - 0x0006, 0x0050, 0x0d06, 0x0cd1, 0xffff, 0xffff, 0x0ce2, 0x0cf3, - 0x0003, 0x0000, 0x08d9, 0x08de, 0x0003, 0x0050, 0x0d17, 0x0d2a, - 0x0d38, 0x0002, 0x08e1, 0x08e9, 0x0006, 0x0050, 0x0d5c, 0x0d4d, - 0xffff, 0xffff, 0x0d5c, 0x0d6a, 0x0006, 0x0050, 0x0d89, 0x0d78, - 0xffff, 0xffff, 0x0d89, 0x0d99, 0x0003, 0x0000, 0x08f5, 0x08fa, - 0x0003, 0x0050, 0x0d17, 0x0d2a, 0x0d38, 0x0002, 0x08fd, 0x0905, - 0x0006, 0x0050, 0x0d5c, 0x0d4d, 0xffff, 0xffff, 0x0d5c, 0x0d6a, - 0x0006, 0x0050, 0x0d89, 0x0d78, 0xffff, 0xffff, 0x0d89, 0x0d99, - // Entry 37D80 - 37DBF - 0x0003, 0x0000, 0x0911, 0x0916, 0x0003, 0x0050, 0x0d17, 0x0d2a, - 0x0d38, 0x0002, 0x0919, 0x0921, 0x0006, 0x0050, 0x0d5c, 0x0d4d, - 0xffff, 0xffff, 0x0d5c, 0x0d6a, 0x0006, 0x0050, 0x0d89, 0x0d78, - 0xffff, 0xffff, 0x0d89, 0x0d99, 0x0001, 0x092b, 0x0001, 0x0050, - 0x0da9, 0x0003, 0x0932, 0x0935, 0x0939, 0x0001, 0x0050, 0x0dc9, - 0x0002, 0x0050, 0xffff, 0x0dd1, 0x0002, 0x093c, 0x0944, 0x0006, - 0x0050, 0x0dec, 0x0ddc, 0xffff, 0xffff, 0x0dec, 0x0dfb, 0x0006, - 0x0050, 0x0e1b, 0x0e09, 0xffff, 0xffff, 0x0e1b, 0x0e2c, 0x0003, - // Entry 37DC0 - 37DFF - 0x0950, 0x0000, 0x0953, 0x0001, 0x0050, 0x0e3c, 0x0002, 0x0956, - 0x095e, 0x0006, 0x0050, 0x0e42, 0x0e42, 0xffff, 0xffff, 0x0e42, - 0x0e42, 0x0006, 0x0050, 0x0e4f, 0x0e4f, 0xffff, 0xffff, 0x0e4f, - 0x0e4f, 0x0003, 0x096a, 0x0000, 0x096d, 0x0001, 0x000d, 0x039d, - 0x0002, 0x0970, 0x0978, 0x0006, 0x000d, 0x03a0, 0x03a0, 0xffff, - 0xffff, 0x03a0, 0x03a0, 0x0006, 0x0050, 0x0e5e, 0x0e5e, 0xffff, - 0xffff, 0x0e5e, 0x0e5e, 0x0003, 0x0984, 0x0987, 0x098b, 0x0001, - 0x000d, 0x0bf5, 0x0002, 0x0050, 0xffff, 0x0e6a, 0x0002, 0x098e, - // Entry 37E00 - 37E3F - 0x0996, 0x0006, 0x0050, 0x0e83, 0x0e74, 0xffff, 0xffff, 0x0e83, - 0x0e91, 0x0006, 0x0050, 0x0eaf, 0x0e9e, 0xffff, 0xffff, 0x0eaf, - 0x0ebf, 0x0003, 0x09a2, 0x0000, 0x09a5, 0x0001, 0x0041, 0x092f, - 0x0002, 0x09a8, 0x09b0, 0x0006, 0x0013, 0x0f75, 0x0f75, 0xffff, - 0xffff, 0x0f75, 0x0f75, 0x0006, 0x0050, 0x0ece, 0x0ece, 0xffff, - 0xffff, 0x0ece, 0x0ece, 0x0003, 0x09bc, 0x0000, 0x09bf, 0x0001, - 0x0041, 0x092f, 0x0002, 0x09c2, 0x09ca, 0x0006, 0x0013, 0x0f75, - 0x0f75, 0xffff, 0xffff, 0x0f75, 0x0f75, 0x0006, 0x0050, 0x0ece, - // Entry 37E40 - 37E7F - 0x0ece, 0xffff, 0xffff, 0x0ece, 0x0ece, 0x0003, 0x09d6, 0x09d9, - 0x09dd, 0x0001, 0x000d, 0x0c7f, 0x0002, 0x0050, 0xffff, 0x0edb, - 0x0002, 0x09e0, 0x09e8, 0x0006, 0x0050, 0x0ef1, 0x0ee1, 0xffff, - 0xffff, 0x0ef1, 0x0f00, 0x0006, 0x0050, 0x0f20, 0x0f0e, 0xffff, - 0xffff, 0x0f20, 0x0f31, 0x0003, 0x09f4, 0x0000, 0x09f7, 0x0001, - 0x0001, 0x07d3, 0x0002, 0x09fa, 0x0a02, 0x0006, 0x000d, 0x0cef, - 0x0cef, 0xffff, 0xffff, 0x0cef, 0x0cef, 0x0006, 0x0050, 0x0f41, - 0x0f41, 0xffff, 0xffff, 0x0f41, 0x0f41, 0x0003, 0x0a0e, 0x0000, - // Entry 37E80 - 37EBF - 0x0a11, 0x0001, 0x0000, 0x2002, 0x0002, 0x0a14, 0x0a1c, 0x0006, - 0x0013, 0x0fcd, 0x0fcd, 0xffff, 0xffff, 0x0fcd, 0x0fcd, 0x0006, - 0x0050, 0x0f4f, 0x0f4f, 0xffff, 0xffff, 0x0f4f, 0x0f4f, 0x0001, - 0x0a26, 0x0001, 0x0050, 0x0f5a, 0x0004, 0x0a2e, 0x0a33, 0x0a38, - 0x0a47, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3916, 0x0003, 0x0050, - 0x0f69, 0x0f73, 0x0f84, 0x0002, 0x0000, 0x0a3b, 0x0003, 0x0000, - 0x0a42, 0x0a3f, 0x0001, 0x0050, 0x0f9b, 0x0003, 0x0050, 0xffff, - 0x0fb9, 0x0fce, 0x0002, 0x0c10, 0x0a4a, 0x0003, 0x0ae4, 0x0b7a, - // Entry 37EC0 - 37EFF - 0x0a4e, 0x0094, 0x0050, 0x0fe4, 0x0fef, 0x1009, 0x1023, 0x1059, - 0x10a6, 0x10e4, 0x1131, 0x1194, 0x11e9, 0x1225, 0x1263, 0x1292, - 0x12cf, 0x131f, 0x1367, 0x13b7, 0x13f7, 0x1444, 0x14b1, 0x1528, - 0x158b, 0x15e0, 0x1620, 0x1657, 0x168d, 0x1694, 0x16a6, 0x16da, - 0x1707, 0x175d, 0x176e, 0x17a4, 0x17d6, 0x180d, 0x1843, 0x185c, - 0x1874, 0x18b2, 0x18ef, 0x1919, 0x191f, 0x1932, 0x1953, 0x1997, - 0x19b8, 0x1a15, 0x1a59, 0x1a92, 0x1ae0, 0x1b1b, 0x1b49, 0x1b5a, - 0x1b8a, 0x1b94, 0x1ba3, 0x1bd1, 0x1be0, 0x1c06, 0x1c65, 0x1caf, - // Entry 37F00 - 37F3F - 0x1cbd, 0x1cd2, 0x1d17, 0x1d4f, 0x1d7b, 0x1d89, 0x1d98, 0x1daa, - 0x1dbe, 0x1dd2, 0x1deb, 0x1e1c, 0x1e51, 0x1e87, 0x1ed6, 0x1f26, - 0x1f3a, 0x1f54, 0x1f80, 0x1f93, 0x1fcb, 0x1fd5, 0x1ffe, 0x2032, - 0x2044, 0x2074, 0x207c, 0x2085, 0x208d, 0x20a7, 0x20db, 0x20fd, - 0x216c, 0x21bc, 0x2204, 0x2236, 0x223d, 0x2243, 0x2258, 0x22a4, - 0x22f0, 0x2330, 0x2335, 0x2351, 0x23a5, 0x23e2, 0x2415, 0x2447, - 0x244d, 0x2468, 0x249f, 0x24d2, 0x2504, 0x2523, 0x2573, 0x257c, - 0x2584, 0x258e, 0x2596, 0x25a7, 0x25e5, 0x2615, 0x2641, 0x2649, - // Entry 37F40 - 37F7F - 0x2652, 0x2661, 0x2675, 0x267d, 0x2683, 0x2691, 0x26bf, 0x26cc, - 0x26da, 0x2706, 0x2719, 0x2753, 0x2762, 0x279d, 0x27db, 0x280b, - 0x2822, 0x2867, 0x289d, 0x28a4, 0x28a9, 0x28c0, 0x28fc, 0x0094, - 0x0050, 0xffff, 0xffff, 0xffff, 0xffff, 0x103f, 0x109f, 0x10d4, - 0x1116, 0x1179, 0x11dc, 0x1215, 0x1257, 0x128d, 0x12bc, 0x1315, - 0x1353, 0x13af, 0x13e7, 0x1429, 0x148c, 0x150d, 0x1570, 0x15d3, - 0x161a, 0x164c, 0xffff, 0xffff, 0x169c, 0xffff, 0x16ec, 0xffff, - 0x1766, 0x179e, 0x17d0, 0x1802, 0xffff, 0xffff, 0x186b, 0x18a6, - // Entry 37F80 - 37FBF - 0x18ea, 0xffff, 0xffff, 0xffff, 0x1941, 0xffff, 0x199f, 0x19fc, - 0xffff, 0x1a79, 0x1ad6, 0x1b14, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1b9c, 0xffff, 0xffff, 0x1bf1, 0x1c50, 0xffff, 0xffff, 0x1cc4, - 0x1d0e, 0x1d49, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1de6, 0x1e15, 0x1e4a, 0x1e7f, 0x1eb7, 0xffff, 0xffff, 0x1f4e, - 0xffff, 0x1f87, 0xffff, 0xffff, 0x1ff4, 0xffff, 0x203c, 0xffff, - 0xffff, 0xffff, 0xffff, 0x209d, 0xffff, 0x20e2, 0x2153, 0x21b0, - 0x21f4, 0xffff, 0xffff, 0xffff, 0x2249, 0x2296, 0x22e0, 0xffff, - // Entry 37FC0 - 37FFF - 0xffff, 0x233d, 0x2399, 0x23dd, 0x240c, 0xffff, 0xffff, 0x245f, - 0x249a, 0x24c9, 0xffff, 0x250b, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x259e, 0x25d9, 0x260f, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x268a, 0xffff, 0xffff, 0x26d4, 0xffff, - 0x270c, 0xffff, 0x275a, 0x2792, 0x27d3, 0xffff, 0x2815, 0x285c, - 0xffff, 0xffff, 0xffff, 0x28b9, 0x28ee, 0x0094, 0x0050, 0xffff, - 0xffff, 0xffff, 0xffff, 0x107f, 0x10c0, 0x1100, 0x1158, 0x11bb, - 0x1202, 0x1241, 0x127b, 0x12aa, 0x12f5, 0x133c, 0x138e, 0x13d2, - // Entry 38000 - 3803F - 0x1413, 0x146b, 0x14e2, 0x154f, 0x15b2, 0x1600, 0x1639, 0x1675, - 0xffff, 0xffff, 0x16c3, 0xffff, 0x1735, 0xffff, 0x1789, 0x17bd, - 0x17ef, 0x182b, 0xffff, 0xffff, 0x1890, 0x18d1, 0x1907, 0xffff, - 0xffff, 0xffff, 0x1978, 0xffff, 0x19dd, 0x1a3a, 0xffff, 0x1ab7, - 0x1afd, 0x1b35, 0xffff, 0xffff, 0xffff, 0xffff, 0x1bbd, 0xffff, - 0xffff, 0x1c2e, 0x1c8d, 0xffff, 0xffff, 0x1cf3, 0x1d33, 0x1d68, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e03, 0x1e36, - 0x1e6b, 0x1ea2, 0x1f01, 0xffff, 0xffff, 0x1f6d, 0xffff, 0x1fb2, - // Entry 38040 - 3807F - 0xffff, 0xffff, 0x201b, 0xffff, 0x205f, 0xffff, 0xffff, 0xffff, - 0xffff, 0x20c4, 0xffff, 0x212b, 0x2191, 0x21db, 0x2220, 0xffff, - 0xffff, 0xffff, 0x227a, 0x22c5, 0x2313, 0xffff, 0xffff, 0x2378, - 0x23c4, 0x23fa, 0x2431, 0xffff, 0xffff, 0x2484, 0x24b7, 0x24ee, - 0xffff, 0x254e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x25c3, - 0x25fd, 0x262e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x26ab, 0xffff, 0xffff, 0x26f3, 0xffff, 0x2739, 0xffff, - 0x277d, 0x27bb, 0x27f6, 0xffff, 0x2842, 0x2885, 0xffff, 0xffff, - // Entry 38080 - 380BF - 0xffff, 0x28da, 0x291d, 0x0003, 0x0c14, 0x0c7a, 0x0c47, 0x0031, - 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x12ea, 0x1351, - 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 380C0 - 380FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x12ea, 0x1351, 0xffff, 0x27cb, 0x0031, 0x0006, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 38100 - 3813F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x12ee, 0x1355, 0xffff, 0x13e3, - 0x0003, 0x0004, 0x016f, 0x0248, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, - 0x001e, 0x001b, 0x0021, 0x0001, 0x0051, 0x0000, 0x0001, 0x0051, - // Entry 38140 - 3817F - 0x001b, 0x0001, 0x0051, 0x0030, 0x0001, 0x001e, 0x1a8e, 0x0004, - 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0041, 0x00a6, 0x00e7, 0x011c, 0x0134, 0x013c, 0x014d, - 0x015e, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, - 0x000d, 0x0051, 0xffff, 0x0040, 0x0044, 0x0048, 0x004d, 0x0051, - 0x0055, 0x005a, 0x005f, 0x0063, 0x0067, 0x006b, 0x006f, 0x000d, - 0x0000, 0xffff, 0x223e, 0x2159, 0x255c, 0x298e, 0x22db, 0x298e, - // Entry 38180 - 381BF - 0x2994, 0x297c, 0x298e, 0x298e, 0x2994, 0x298e, 0x000d, 0x0051, - 0xffff, 0x0073, 0x0078, 0x0082, 0x0089, 0x0090, 0x0098, 0x00a1, - 0x00a7, 0x00ae, 0x00b6, 0x00bf, 0x00ca, 0x0003, 0x0079, 0x0088, - 0x0097, 0x000d, 0x0051, 0xffff, 0x0040, 0x0044, 0x0048, 0x004d, - 0x0051, 0x0055, 0x005a, 0x005f, 0x0063, 0x0067, 0x006b, 0x006f, - 0x000d, 0x0000, 0xffff, 0x223e, 0x2159, 0x255c, 0x298e, 0x22db, - 0x298e, 0x2994, 0x297c, 0x298e, 0x298e, 0x2994, 0x298e, 0x000d, - 0x0051, 0xffff, 0x0073, 0x0078, 0x0082, 0x0089, 0x0090, 0x0098, - // Entry 381C0 - 381FF - 0x00a1, 0x00a7, 0x00ae, 0x00b6, 0x00bf, 0x00ca, 0x0002, 0x00a9, - 0x00c8, 0x0003, 0x00ad, 0x00b6, 0x00bf, 0x0007, 0x0051, 0x00d2, - 0x00d6, 0x00da, 0x00de, 0x00e2, 0x00e6, 0x00eb, 0x0007, 0x0000, - 0x297e, 0x255c, 0x2159, 0x255c, 0x25bc, 0x255c, 0x298e, 0x0007, - 0x0051, 0x00ef, 0x00f7, 0x0101, 0x010c, 0x0119, 0x0124, 0x012e, - 0x0003, 0x00cc, 0x00d5, 0x00de, 0x0007, 0x0051, 0x00d2, 0x00d6, - 0x00da, 0x00de, 0x00e2, 0x00e6, 0x00eb, 0x0007, 0x0000, 0x297e, - 0x255c, 0x2159, 0x255c, 0x25bc, 0x255c, 0x298e, 0x0007, 0x0051, - // Entry 38200 - 3823F - 0x00ef, 0x00f7, 0x0101, 0x010c, 0x0119, 0x0124, 0x012e, 0x0002, - 0x00ea, 0x0103, 0x0003, 0x00ee, 0x00f5, 0x00fc, 0x0005, 0x0051, - 0xffff, 0x0138, 0x013e, 0x0144, 0x014a, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0051, 0xffff, 0x0150, - 0x015c, 0x0168, 0x0174, 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, - 0x0051, 0xffff, 0x0180, 0x0189, 0x0192, 0x019b, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0051, 0xffff, - 0x0150, 0x015c, 0x0168, 0x0174, 0x0001, 0x011e, 0x0003, 0x0122, - // Entry 38240 - 3827F - 0x0000, 0x012b, 0x0002, 0x0125, 0x0128, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0002, 0x012e, 0x0131, 0x0001, 0x0051, - 0x01a4, 0x0001, 0x0051, 0x01b0, 0x0001, 0x0136, 0x0001, 0x0138, - 0x0002, 0x0009, 0x0078, 0x5463, 0x0004, 0x014a, 0x0144, 0x0141, - 0x0147, 0x0001, 0x0051, 0x01bf, 0x0001, 0x0051, 0x01d8, 0x0001, - 0x0051, 0x01eb, 0x0001, 0x0007, 0x0277, 0x0004, 0x015b, 0x0155, - 0x0152, 0x0158, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x016c, - // Entry 38280 - 382BF - 0x0166, 0x0163, 0x0169, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, - 0x01b0, 0x0000, 0x0000, 0x01b5, 0x01c0, 0x01c5, 0x01ca, 0x01cf, - 0x01d4, 0x01d9, 0x01de, 0x01e3, 0x01e8, 0x01ed, 0x01f2, 0x0000, - 0x0000, 0x0000, 0x01f7, 0x0202, 0x0207, 0x0000, 0x0000, 0x0000, - 0x020c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 382C0 - 382FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0211, 0x0000, 0x0216, 0x021b, - 0x0220, 0x0225, 0x022a, 0x022f, 0x0234, 0x0239, 0x023e, 0x0243, - 0x0001, 0x01b2, 0x0001, 0x0044, 0x097c, 0x0002, 0x01b8, 0x01bb, - 0x0001, 0x0051, 0x01f9, 0x0003, 0x0051, 0x0200, 0x0212, 0x021c, - 0x0001, 0x01c2, 0x0001, 0x0029, 0x0080, 0x0001, 0x01c7, 0x0001, - 0x0029, 0x0080, 0x0001, 0x01cc, 0x0001, 0x0051, 0x0226, 0x0001, - 0x01d1, 0x0001, 0x0051, 0x022f, 0x0001, 0x01d6, 0x0001, 0x0051, - 0x022f, 0x0001, 0x01db, 0x0001, 0x0051, 0x0235, 0x0001, 0x01e0, - // Entry 38300 - 3833F - 0x0001, 0x0051, 0x023c, 0x0001, 0x01e5, 0x0001, 0x0051, 0x023c, - 0x0001, 0x01ea, 0x0001, 0x0051, 0x0241, 0x0001, 0x01ef, 0x0001, - 0x0051, 0x024a, 0x0001, 0x01f4, 0x0001, 0x0051, 0x024a, 0x0002, - 0x01fa, 0x01fd, 0x0001, 0x0051, 0x024f, 0x0003, 0x0051, 0x0256, - 0x025d, 0x01a4, 0x0001, 0x0204, 0x0001, 0x0029, 0x008f, 0x0001, - 0x0209, 0x0001, 0x0029, 0x008f, 0x0001, 0x020e, 0x0001, 0x0051, - 0x0269, 0x0001, 0x0213, 0x0001, 0x0051, 0x027a, 0x0001, 0x0218, - 0x0001, 0x0051, 0x0297, 0x0001, 0x021d, 0x0001, 0x0044, 0x12ca, - // Entry 38340 - 3837F - 0x0001, 0x0222, 0x0001, 0x0044, 0x12ca, 0x0001, 0x0227, 0x0001, - 0x0051, 0x029f, 0x0001, 0x022c, 0x0001, 0x0001, 0x075a, 0x0001, - 0x0231, 0x0001, 0x0001, 0x075a, 0x0001, 0x0236, 0x0001, 0x0051, - 0x02a7, 0x0001, 0x023b, 0x0001, 0x0001, 0x07d3, 0x0001, 0x0240, - 0x0001, 0x0001, 0x07d3, 0x0001, 0x0245, 0x0001, 0x0051, 0x02b0, - 0x0004, 0x024d, 0x0252, 0x0000, 0x0257, 0x0003, 0x0000, 0x1dc7, - 0x3839, 0x3916, 0x0003, 0x0051, 0x02bc, 0x02c8, 0x02db, 0x0002, - 0x0000, 0x025a, 0x0003, 0x025e, 0x02cd, 0x0291, 0x0031, 0x0051, - // Entry 38380 - 383BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x02ef, - 0x0352, 0x03b5, 0x040f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0475, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04bd, 0x051d, 0xffff, - 0x057d, 0x003a, 0x0051, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x030b, 0x036e, 0x03ce, 0x042c, 0xffff, 0xffff, - // Entry 383C0 - 383FF - 0xffff, 0xffff, 0xffff, 0xffff, 0x0488, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x04d8, 0x0538, 0xffff, 0x0599, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x05e0, 0x0031, 0x0051, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x032f, 0x0392, - 0x03ef, 0x0451, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 38400 - 3843F - 0x04a3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x04fb, 0x055b, 0xffff, 0x05bd, - 0x0003, 0x0004, 0x0000, 0x01e5, 0x0011, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0030, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x019c, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x001f, 0x0000, 0x0000, 0x0004, - // Entry 38440 - 3847F - 0x002d, 0x0027, 0x0024, 0x002a, 0x0001, 0x0051, 0x05f1, 0x0001, - 0x0051, 0x0607, 0x0001, 0x0000, 0x04a5, 0x0001, 0x0051, 0x0618, - 0x0008, 0x0039, 0x009e, 0x00e3, 0x0118, 0x0159, 0x0169, 0x017a, - 0x018b, 0x0002, 0x003c, 0x006d, 0x0003, 0x0040, 0x004f, 0x005e, - 0x000d, 0x0051, 0xffff, 0x0624, 0x062f, 0x063c, 0x0645, 0x0650, - 0x0655, 0x065c, 0x0667, 0x0670, 0x067d, 0x068a, 0x0695, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0051, - // Entry 38480 - 384BF - 0xffff, 0x0624, 0x062f, 0x063c, 0x0645, 0x0650, 0x0655, 0x065c, - 0x0667, 0x0670, 0x067d, 0x068a, 0x0695, 0x0003, 0x0071, 0x0080, - 0x008f, 0x000d, 0x0051, 0xffff, 0x0624, 0x062f, 0x063c, 0x0645, - 0x0650, 0x0655, 0x065c, 0x0667, 0x0670, 0x067d, 0x068a, 0x0695, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - 0x0051, 0xffff, 0x0624, 0x062f, 0x063c, 0x0645, 0x0650, 0x0655, - 0x065c, 0x0667, 0x0670, 0x067d, 0x068a, 0x0695, 0x0002, 0x00a1, - // Entry 384C0 - 384FF - 0x00c2, 0x0005, 0x00a7, 0x0000, 0x00b9, 0x0000, 0x00b0, 0x0007, - 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, 0x044b, - 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, - 0x044b, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, - 0x0442, 0x044b, 0x0005, 0x00c8, 0x0000, 0x00da, 0x0000, 0x00d1, - 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, 0x0442, - 0x044b, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, - 0x0442, 0x044b, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, - // Entry 38500 - 3853F - 0x0433, 0x0442, 0x044b, 0x0002, 0x00e6, 0x00ff, 0x0003, 0x00ea, - 0x00f1, 0x00f8, 0x0005, 0x0051, 0xffff, 0x06a0, 0x06b4, 0x06c4, - 0x06d4, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0051, 0xffff, 0x06a0, 0x06b4, 0x06c4, 0x06d4, 0x0003, - 0x0103, 0x010a, 0x0111, 0x0005, 0x0051, 0xffff, 0x06a0, 0x06b4, - 0x06c4, 0x06d4, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0051, 0xffff, 0x06a0, 0x06b4, 0x06c4, 0x06d4, - 0x0002, 0x011b, 0x013a, 0x0003, 0x011f, 0x0128, 0x0131, 0x0002, - // Entry 38540 - 3857F - 0x0122, 0x0125, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, 0x06eb, - 0x0002, 0x012b, 0x012e, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, - 0x06eb, 0x0002, 0x0134, 0x0137, 0x0001, 0x0051, 0x06e4, 0x0001, - 0x0051, 0x06eb, 0x0003, 0x013e, 0x0147, 0x0150, 0x0002, 0x0141, - 0x0144, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, 0x06eb, 0x0002, - 0x014a, 0x014d, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, 0x06eb, - 0x0002, 0x0153, 0x0156, 0x0001, 0x0051, 0x06e4, 0x0001, 0x0051, - 0x06eb, 0x0003, 0x0163, 0x0000, 0x015d, 0x0001, 0x015f, 0x0002, - // Entry 38580 - 385BF - 0x0051, 0x06f2, 0x0716, 0x0001, 0x0165, 0x0002, 0x0051, 0x073a, - 0x0757, 0x0004, 0x0177, 0x0171, 0x016e, 0x0174, 0x0001, 0x0051, - 0x075b, 0x0001, 0x0051, 0x076f, 0x0001, 0x0000, 0x0514, 0x0001, - 0x0021, 0x05f2, 0x0004, 0x0188, 0x0182, 0x017f, 0x0185, 0x0001, - 0x001c, 0x14d2, 0x0001, 0x0021, 0x05f8, 0x0001, 0x0005, 0x0099, - 0x0001, 0x0005, 0x00a1, 0x0004, 0x0199, 0x0193, 0x0190, 0x0196, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x019e, 0x0002, 0x01a1, - // Entry 385C0 - 385FF - 0x01c3, 0x0003, 0x01a5, 0x0000, 0x01b4, 0x000d, 0x0051, 0xffff, - 0x077e, 0x0785, 0x078e, 0x079d, 0x07a8, 0x07b1, 0x07b8, 0x07bf, - 0x07c6, 0x07d1, 0x07de, 0x07eb, 0x000d, 0x0051, 0xffff, 0x077e, - 0x0785, 0x078e, 0x079d, 0x07a8, 0x07b1, 0x07b8, 0x07bf, 0x07c6, - 0x07d1, 0x07de, 0x07eb, 0x0003, 0x01c7, 0x0000, 0x01d6, 0x000d, - 0x0051, 0xffff, 0x077e, 0x0785, 0x078e, 0x079d, 0x07a8, 0x07b1, - 0x07b8, 0x07bf, 0x07c6, 0x07d1, 0x07de, 0x07eb, 0x000d, 0x0051, - 0xffff, 0x077e, 0x0785, 0x078e, 0x079d, 0x07a8, 0x07b1, 0x07b8, - // Entry 38600 - 3863F - 0x07bf, 0x07c6, 0x07d1, 0x07de, 0x07eb, 0x0004, 0x0000, 0x01ea, - 0x0000, 0x01ed, 0x0001, 0x0051, 0x07f0, 0x0002, 0x0000, 0x01f0, - 0x0003, 0x01f4, 0x0328, 0x028e, 0x0098, 0x0051, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 38640 - 3867F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x081c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 38680 - 386BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0803, 0x0098, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 386C0 - 386FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x217e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x21db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 38700 - 3873F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 38740 - 3877F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0x0098, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x21ad, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 38780 - 387BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 387C0 - 387FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0x0003, 0x0004, 0x048c, 0x0868, 0x0012, 0x0017, - 0x0024, 0x00a1, 0x0000, 0x00ed, 0x0000, 0x0139, 0x0164, 0x037c, - 0x03c9, 0x0411, 0x0000, 0x0000, 0x0000, 0x0000, 0x041e, 0x0436, - 0x047e, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, - // Entry 38800 - 3883F - 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0006, 0x002b, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0090, 0x0002, 0x002e, 0x005f, - 0x0003, 0x0032, 0x0041, 0x0050, 0x000d, 0x0051, 0xffff, 0x083d, - 0x0844, 0x084b, 0x0852, 0x0859, 0x0860, 0x0867, 0x086e, 0x0875, - 0x087c, 0x0884, 0x088c, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, - 0x3871, 0x3874, 0x000d, 0x0051, 0xffff, 0x083d, 0x0844, 0x084b, - 0x0852, 0x0859, 0x0860, 0x0867, 0x086e, 0x0875, 0x087c, 0x0884, - // Entry 38840 - 3887F - 0x088c, 0x0003, 0x0063, 0x0072, 0x0081, 0x000d, 0x0051, 0xffff, - 0x083d, 0x0844, 0x084b, 0x0852, 0x0859, 0x0860, 0x0867, 0x086e, - 0x0875, 0x087c, 0x0884, 0x088c, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x000d, 0x0051, 0xffff, 0x083d, 0x0844, - 0x084b, 0x0852, 0x0859, 0x0860, 0x0867, 0x086e, 0x0875, 0x087c, - 0x0884, 0x088c, 0x0004, 0x009e, 0x0098, 0x0095, 0x009b, 0x0001, - 0x0051, 0x0894, 0x0001, 0x0051, 0x08ad, 0x0001, 0x0051, 0x08c0, - // Entry 38880 - 388BF - 0x0001, 0x0014, 0x146e, 0x0001, 0x00a3, 0x0002, 0x00a6, 0x00c9, - 0x0002, 0x00a9, 0x00b9, 0x000e, 0x0000, 0xffff, 0x03ce, 0x03d3, - 0x03d8, 0x03de, 0x03e4, 0x391a, 0x3921, 0x03f9, 0x392a, 0x040b, - 0x0411, 0x0416, 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, - 0x3871, 0x3874, 0x0422, 0x0003, 0x00cd, 0x0000, 0x00dd, 0x000e, - 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x391a, - 0x3921, 0x03f9, 0x392a, 0x040b, 0x0411, 0x0416, 0x041c, 0x000e, - // Entry 388C0 - 388FF - 0x0000, 0xffff, 0x03ce, 0x03d3, 0x03d8, 0x03de, 0x03e4, 0x391a, - 0x3921, 0x03f9, 0x392a, 0x040b, 0x0411, 0x0416, 0x041c, 0x0001, - 0x00ef, 0x0002, 0x00f2, 0x0115, 0x0002, 0x00f5, 0x0105, 0x000e, - 0x0000, 0xffff, 0x042f, 0x0438, 0x3932, 0x3938, 0x044c, 0x0450, - 0x0458, 0x0460, 0x393f, 0x046e, 0x3946, 0x0479, 0x0481, 0x000e, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x0003, - 0x0119, 0x0000, 0x0129, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, - // Entry 38900 - 3893F - 0x3932, 0x3938, 0x044c, 0x0450, 0x0458, 0x0460, 0x393f, 0x046e, - 0x3946, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, - 0x3932, 0x3938, 0x044c, 0x0450, 0x0458, 0x0460, 0x393f, 0x046e, - 0x3946, 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0142, 0x0000, 0x0153, 0x0004, 0x0150, 0x014a, 0x0147, - 0x014d, 0x0001, 0x001c, 0x128b, 0x0001, 0x001c, 0x12a6, 0x0001, - 0x0010, 0x02f4, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0161, 0x015b, - 0x0158, 0x015e, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 38940 - 3897F - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x016d, - 0x01d2, 0x0229, 0x025e, 0x032f, 0x0349, 0x035a, 0x036b, 0x0002, - 0x0170, 0x01a1, 0x0003, 0x0174, 0x0183, 0x0192, 0x000d, 0x000d, - 0xffff, 0x0059, 0x3395, 0x3399, 0x339d, 0x336c, 0x3230, 0x3234, - 0x33a1, 0x33a5, 0x33a9, 0x3303, 0x33ad, 0x000d, 0x0000, 0xffff, - 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, - 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0051, 0xffff, 0x08c8, - 0x08d0, 0x08da, 0x08e1, 0x08e7, 0x08ec, 0x08f2, 0x08f8, 0x08ff, - // Entry 38980 - 389BF - 0x0908, 0x0910, 0x0919, 0x0003, 0x01a5, 0x01b4, 0x01c3, 0x000d, - 0x000d, 0xffff, 0x0059, 0x3395, 0x3399, 0x339d, 0x336c, 0x3230, - 0x3234, 0x33a1, 0x33a5, 0x33a9, 0x3303, 0x33ad, 0x000d, 0x0000, - 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, - 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0051, 0xffff, - 0x08c8, 0x08d0, 0x08da, 0x08e1, 0x08e7, 0x08ec, 0x08f2, 0x08f8, - 0x08ff, 0x0908, 0x0910, 0x0919, 0x0002, 0x01d5, 0x01ff, 0x0005, - 0x01db, 0x01e4, 0x01f6, 0x0000, 0x01ed, 0x0007, 0x0005, 0x123c, - // Entry 389C0 - 389FF - 0x242d, 0x2431, 0x2435, 0x2439, 0x243d, 0x1251, 0x0007, 0x0000, - 0x297c, 0x298e, 0x38ae, 0x3911, 0x3911, 0x298e, 0x298e, 0x0007, - 0x0005, 0x123c, 0x242d, 0x2431, 0x2435, 0x2439, 0x243d, 0x1251, - 0x0007, 0x001c, 0x1383, 0x21f1, 0x21ff, 0x220c, 0x2219, 0x2226, - 0x13b2, 0x0005, 0x0205, 0x020e, 0x0220, 0x0000, 0x0217, 0x0007, - 0x0005, 0x123c, 0x242d, 0x2431, 0x2435, 0x2439, 0x243d, 0x1251, - 0x0007, 0x0000, 0x297c, 0x298e, 0x38ae, 0x3911, 0x3911, 0x298e, - 0x298e, 0x0007, 0x0005, 0x123c, 0x242d, 0x2431, 0x2435, 0x2439, - // Entry 38A00 - 38A3F - 0x243d, 0x1251, 0x0007, 0x001c, 0x1383, 0x21f1, 0x21ff, 0x220c, - 0x2219, 0x2226, 0x13b2, 0x0002, 0x022c, 0x0245, 0x0003, 0x0230, - 0x0237, 0x023e, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, 0x13c0, - 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0034, 0xffff, 0x00be, 0x00cc, 0x00da, 0x00e8, 0x0003, - 0x0249, 0x0250, 0x0257, 0x0005, 0x001c, 0xffff, 0x13ba, 0x13bd, - 0x13c0, 0x13c3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0034, 0xffff, 0x00be, 0x00cc, 0x00da, 0x00e8, - // Entry 38A40 - 38A7F - 0x0002, 0x0261, 0x02c8, 0x0003, 0x0265, 0x0286, 0x02a7, 0x0008, - 0x0271, 0x0277, 0x026e, 0x027a, 0x027d, 0x0280, 0x0283, 0x0274, - 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0051, - 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0936, 0x0001, - 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, 0x0001, 0x0029, 0x0202, - 0x0008, 0x0292, 0x0298, 0x028f, 0x029b, 0x029e, 0x02a1, 0x02a4, - 0x0295, 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0051, 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0936, - // Entry 38A80 - 38ABF - 0x0001, 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, 0x0001, 0x0029, - 0x0202, 0x0008, 0x02b3, 0x02b9, 0x02b0, 0x02bc, 0x02bf, 0x02c2, - 0x02c5, 0x02b6, 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0051, 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, - 0x0936, 0x0001, 0x0029, 0x0226, 0x0001, 0x0029, 0x01f9, 0x0001, - 0x0029, 0x0202, 0x0003, 0x02cc, 0x02ed, 0x030e, 0x0008, 0x02d8, - 0x02de, 0x02d5, 0x02e1, 0x02e4, 0x02e7, 0x02ea, 0x02db, 0x0001, - 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0051, 0x092d, - // Entry 38AC0 - 38AFF - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0940, 0x0001, 0x0005, - 0x130a, 0x0001, 0x0029, 0x0241, 0x0001, 0x001c, 0x1436, 0x0008, - 0x02f9, 0x02ff, 0x02f6, 0x0302, 0x0305, 0x0308, 0x030b, 0x02fc, - 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0051, - 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0940, 0x0001, - 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, 0x0001, 0x001c, 0x1436, - 0x0008, 0x031a, 0x0320, 0x0317, 0x0323, 0x0326, 0x0329, 0x032c, - 0x031d, 0x0001, 0x0051, 0x0922, 0x0001, 0x0000, 0x04ef, 0x0001, - // Entry 38B00 - 38B3F - 0x0051, 0x092d, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0051, 0x0940, - 0x0001, 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, 0x0001, 0x001c, - 0x1436, 0x0003, 0x033e, 0x0000, 0x0333, 0x0002, 0x0336, 0x033a, - 0x0002, 0x001c, 0x1446, 0x2232, 0x0002, 0x0051, 0x0947, 0x095a, - 0x0002, 0x0341, 0x0345, 0x0002, 0x0029, 0x0269, 0x0275, 0x0002, - 0x0010, 0x02ea, 0x02f1, 0x0004, 0x0357, 0x0351, 0x034e, 0x0354, - 0x0001, 0x001c, 0x14a6, 0x0001, 0x001c, 0x14bf, 0x0001, 0x0029, - 0x027f, 0x0001, 0x0002, 0x0860, 0x0004, 0x0368, 0x0362, 0x035f, - // Entry 38B40 - 38B7F - 0x0365, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0379, 0x0373, - 0x0370, 0x0376, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x037e, - 0x0002, 0x0381, 0x03a5, 0x0003, 0x0385, 0x0000, 0x0395, 0x000e, - 0x0000, 0x3a0d, 0x054c, 0x0553, 0x39f4, 0x39fb, 0x0568, 0x3a01, - 0x3a08, 0x3a15, 0x2600, 0x3a1b, 0x3a21, 0x3a27, 0x3a2a, 0x000e, - 0x0000, 0x3a0d, 0x054c, 0x0553, 0x39f4, 0x39fb, 0x0568, 0x3a01, - // Entry 38B80 - 38BBF - 0x3a08, 0x3a15, 0x2600, 0x3a1b, 0x3a21, 0x3a27, 0x3a2a, 0x0003, - 0x03a9, 0x0000, 0x03b9, 0x000e, 0x0000, 0x3a0d, 0x054c, 0x0553, - 0x39f4, 0x39fb, 0x0568, 0x3a01, 0x3a08, 0x3a15, 0x2600, 0x3a1b, - 0x3a21, 0x3a27, 0x3a2a, 0x000e, 0x0000, 0x3a0d, 0x054c, 0x0553, - 0x39f4, 0x39fb, 0x0568, 0x3a01, 0x3a08, 0x3a15, 0x2600, 0x3a1b, - 0x3a21, 0x3a27, 0x3a2a, 0x0001, 0x03cb, 0x0002, 0x03ce, 0x03ef, - 0x0002, 0x03d1, 0x03e0, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, - 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, 0x05ec, - // Entry 38BC0 - 38BFF - 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x0003, 0x03f3, 0x0000, 0x0402, 0x000d, 0x0000, 0xffff, - 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, - 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, - 0x05aa, 0x05b3, 0x05bc, 0x05c3, 0x05cb, 0x05d2, 0x05d9, 0x05e1, - 0x05ec, 0x05f2, 0x05f8, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0417, 0x0001, 0x0419, 0x0001, 0x041b, 0x0001, 0x0000, 0x06c8, - // Entry 38C00 - 38C3F - 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0425, 0x0004, - 0x0433, 0x042d, 0x042a, 0x0430, 0x0001, 0x001c, 0x128b, 0x0001, - 0x001c, 0x12a6, 0x0001, 0x0010, 0x02f4, 0x0001, 0x001c, 0x14e1, - 0x0001, 0x0438, 0x0002, 0x043b, 0x045c, 0x0002, 0x043e, 0x044d, - 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x3a2f, 0x19eb, - 0x19f2, 0x3a33, 0x1a01, 0x1a06, 0x1a0b, 0x3a38, 0x3a3f, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0003, 0x0460, - // Entry 38C40 - 38C7F - 0x0000, 0x046f, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, - 0x3a2f, 0x19eb, 0x19f2, 0x3a33, 0x1a01, 0x1a06, 0x1a0b, 0x3a38, - 0x3a3f, 0x000d, 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x3a2f, - 0x19eb, 0x19f2, 0x3a33, 0x1a01, 0x1a06, 0x1a0b, 0x3a38, 0x3a3f, - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0484, 0x0001, 0x0486, - 0x0001, 0x0488, 0x0002, 0x0051, 0x0964, 0x0974, 0x0040, 0x04cd, - 0x0000, 0x0000, 0x04d2, 0x04e9, 0x04fb, 0x050d, 0x0524, 0x0536, - 0x0548, 0x055f, 0x0571, 0x0583, 0x059e, 0x05b4, 0x0000, 0x0000, - // Entry 38C80 - 38CBF - 0x0000, 0x05ca, 0x05e3, 0x05f5, 0x0000, 0x0000, 0x0000, 0x0607, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x0620, 0x0634, - 0x0648, 0x065c, 0x0670, 0x0684, 0x0698, 0x06ac, 0x06c0, 0x06d4, - 0x06e8, 0x06fc, 0x0710, 0x0724, 0x0738, 0x074c, 0x0760, 0x0774, - 0x0788, 0x079c, 0x0000, 0x07b0, 0x0000, 0x07b5, 0x07cb, 0x07dd, - 0x07ef, 0x0805, 0x0817, 0x0829, 0x083f, 0x0851, 0x0863, 0x0001, - 0x04cf, 0x0001, 0x0001, 0x0040, 0x0003, 0x04d6, 0x04d9, 0x04de, - 0x0001, 0x0029, 0x02a7, 0x0003, 0x0051, 0x097b, 0x0987, 0x0990, - // Entry 38CC0 - 38CFF - 0x0002, 0x04e1, 0x04e5, 0x0002, 0x0051, 0x09a8, 0x099d, 0x0002, - 0x0051, 0x09c0, 0x09b4, 0x0003, 0x04ed, 0x0000, 0x04f0, 0x0001, - 0x0029, 0x02a7, 0x0002, 0x04f3, 0x04f7, 0x0002, 0x0051, 0x09a8, - 0x099d, 0x0002, 0x0051, 0x09c0, 0x09b4, 0x0003, 0x04ff, 0x0000, - 0x0502, 0x0001, 0x0029, 0x02a7, 0x0002, 0x0505, 0x0509, 0x0002, - 0x0051, 0x09d6, 0x09cd, 0x0002, 0x0051, 0x09e9, 0x09e0, 0x0003, - 0x0511, 0x0514, 0x0519, 0x0001, 0x0005, 0x1c6d, 0x0003, 0x0051, - 0x09f3, 0x0a05, 0x0a14, 0x0002, 0x051c, 0x0520, 0x0002, 0x0051, - // Entry 38D00 - 38D3F - 0x0a38, 0x0a27, 0x0002, 0x0051, 0x0a5c, 0x0a4a, 0x0003, 0x0528, - 0x0000, 0x052b, 0x0001, 0x000b, 0x0c78, 0x0002, 0x052e, 0x0532, - 0x0002, 0x0051, 0x0a7c, 0x0a6f, 0x0002, 0x0051, 0x0a98, 0x0a8a, - 0x0003, 0x053a, 0x0000, 0x053d, 0x0001, 0x000b, 0x0c78, 0x0002, - 0x0540, 0x0544, 0x0002, 0x000b, 0x2780, 0x0c9c, 0x0002, 0x000b, - 0x278c, 0x0ca7, 0x0003, 0x054c, 0x054f, 0x0554, 0x0001, 0x0026, - 0x0e43, 0x0003, 0x0051, 0x0aa7, 0x0ab4, 0x0abe, 0x0002, 0x0557, - 0x055b, 0x0002, 0x0051, 0x0ad8, 0x0acc, 0x0002, 0x0051, 0x0af2, - // Entry 38D40 - 38D7F - 0x0ae5, 0x0003, 0x0563, 0x0000, 0x0566, 0x0001, 0x0026, 0x0e43, - 0x0002, 0x0569, 0x056d, 0x0002, 0x0051, 0x0ad8, 0x0acc, 0x0002, - 0x0051, 0x0af2, 0x0ae5, 0x0003, 0x0575, 0x0000, 0x0578, 0x0001, - 0x0026, 0x0e43, 0x0002, 0x057b, 0x057f, 0x0002, 0x0051, 0x0b0a, - 0x0b00, 0x0002, 0x0051, 0x0b1f, 0x0b15, 0x0004, 0x0588, 0x058b, - 0x0590, 0x059b, 0x0001, 0x001c, 0x16c6, 0x0003, 0x0051, 0x0b2a, - 0x0b39, 0x0b45, 0x0002, 0x0593, 0x0597, 0x0002, 0x0051, 0x0b63, - 0x0b55, 0x0002, 0x0051, 0x0b81, 0x0b72, 0x0001, 0x0051, 0x0b91, - // Entry 38D80 - 38DBF - 0x0004, 0x05a3, 0x0000, 0x05a6, 0x05b1, 0x0001, 0x001c, 0x175b, - 0x0002, 0x05a9, 0x05ad, 0x0002, 0x0051, 0x0ba1, 0x0ba1, 0x0002, - 0x0051, 0x0bad, 0x0bad, 0x0001, 0x0051, 0x0b91, 0x0004, 0x05b9, - 0x0000, 0x05bc, 0x05c7, 0x0001, 0x001c, 0x175b, 0x0002, 0x05bf, - 0x05c3, 0x0002, 0x001e, 0x03f1, 0x03f1, 0x0002, 0x001e, 0x03fb, - 0x03fb, 0x0001, 0x0051, 0x0b91, 0x0003, 0x05ce, 0x05d1, 0x05d8, - 0x0001, 0x0010, 0x05f5, 0x0005, 0x0051, 0x0bc4, 0x0bca, 0x0bcf, - 0x0bba, 0x0bd7, 0x0002, 0x05db, 0x05df, 0x0002, 0x0051, 0x0bf4, - // Entry 38DC0 - 38DFF - 0x0be9, 0x0002, 0x0051, 0x0c0c, 0x0c00, 0x0003, 0x05e7, 0x0000, - 0x05ea, 0x0001, 0x0010, 0x05f5, 0x0002, 0x05ed, 0x05f1, 0x0002, - 0x0051, 0x0bf4, 0x0be9, 0x0002, 0x0051, 0x0c0c, 0x0c00, 0x0003, - 0x05f9, 0x0000, 0x05fc, 0x0001, 0x0010, 0x05f5, 0x0002, 0x05ff, - 0x0603, 0x0002, 0x0051, 0x0c22, 0x0c19, 0x0002, 0x0051, 0x0c35, - 0x0c2c, 0x0001, 0x0609, 0x0001, 0x0051, 0x0c3f, 0x0003, 0x0000, - 0x0610, 0x0615, 0x0003, 0x0051, 0x0c4d, 0x0c5d, 0x0c6a, 0x0002, - 0x0618, 0x061c, 0x0002, 0x0051, 0x0c8a, 0x0c7b, 0x0002, 0x0051, - // Entry 38E00 - 38E3F - 0x0caa, 0x0c9a, 0x0003, 0x0000, 0x0624, 0x0629, 0x0003, 0x0051, - 0x0cbb, 0x0cc8, 0x0cd2, 0x0002, 0x062c, 0x0630, 0x0002, 0x0051, - 0x0c8a, 0x0c8a, 0x0002, 0x0051, 0x0caa, 0x0caa, 0x0003, 0x0000, - 0x0638, 0x063d, 0x0003, 0x0051, 0x0cbb, 0x0cc8, 0x0cd2, 0x0002, - 0x0640, 0x0644, 0x0002, 0x0051, 0x0c8a, 0x0c8a, 0x0002, 0x0051, - 0x0caa, 0x0caa, 0x0003, 0x0000, 0x064c, 0x0651, 0x0003, 0x0051, - 0x0ce0, 0x0cf6, 0x0d09, 0x0002, 0x0654, 0x0658, 0x0002, 0x0051, - 0x0d35, 0x0d20, 0x0002, 0x0051, 0x0d62, 0x0d4c, 0x0003, 0x0000, - // Entry 38E40 - 38E7F - 0x0660, 0x0665, 0x0003, 0x0051, 0x0d7a, 0x0d87, 0x0d91, 0x0002, - 0x0668, 0x066c, 0x0002, 0x0051, 0x0d35, 0x0d35, 0x0002, 0x0051, - 0x0d62, 0x0d62, 0x0003, 0x0000, 0x0674, 0x0679, 0x0003, 0x0051, - 0x0d7a, 0x0d87, 0x0d91, 0x0002, 0x067c, 0x0680, 0x0002, 0x0051, - 0x0d35, 0x0d35, 0x0002, 0x0051, 0x0d62, 0x0d62, 0x0003, 0x0000, - 0x0688, 0x068d, 0x0003, 0x0051, 0x0d9f, 0x0db4, 0x0dc6, 0x0002, - 0x0690, 0x0694, 0x0002, 0x0051, 0x0df0, 0x0ddc, 0x0002, 0x0051, - 0x0e1b, 0x0e06, 0x0003, 0x0000, 0x069c, 0x06a1, 0x0003, 0x0051, - // Entry 38E80 - 38EBF - 0x0e32, 0x0e3f, 0x0e49, 0x0002, 0x06a4, 0x06a8, 0x0002, 0x0051, - 0x0df0, 0x0df0, 0x0002, 0x0051, 0x0e1b, 0x0e1b, 0x0003, 0x0000, - 0x06b0, 0x06b5, 0x0003, 0x0051, 0x0e32, 0x0e3f, 0x0e49, 0x0002, - 0x06b8, 0x06bc, 0x0002, 0x0051, 0x0df0, 0x0df0, 0x0002, 0x0051, - 0x0e1b, 0x0e1b, 0x0003, 0x0000, 0x06c4, 0x06c9, 0x0003, 0x0051, - 0x0e57, 0x0e6c, 0x0e7e, 0x0002, 0x06cc, 0x06d0, 0x0002, 0x0051, - 0x0e94, 0x0e94, 0x0002, 0x0051, 0x0eaa, 0x0eaa, 0x0003, 0x0000, - 0x06d8, 0x06dd, 0x0003, 0x0051, 0x0ec1, 0x0ece, 0x0ed8, 0x0002, - // Entry 38EC0 - 38EFF - 0x06e0, 0x06e4, 0x0002, 0x0051, 0x0e94, 0x0e94, 0x0002, 0x0051, - 0x0eaa, 0x0eaa, 0x0003, 0x0000, 0x06ec, 0x06f1, 0x0003, 0x0051, - 0x0ec1, 0x0ece, 0x0ed8, 0x0002, 0x06f4, 0x06f8, 0x0002, 0x0051, - 0x0e94, 0x0e94, 0x0002, 0x0051, 0x0eaa, 0x0eaa, 0x0003, 0x0000, - 0x0700, 0x0705, 0x0003, 0x0051, 0x0ee6, 0x0efb, 0x0f0d, 0x0002, - 0x0708, 0x070c, 0x0002, 0x0051, 0x0f23, 0x0f23, 0x0002, 0x0051, - 0x0f39, 0x0f39, 0x0003, 0x0000, 0x0714, 0x0719, 0x0003, 0x0051, - 0x0f50, 0x0f5d, 0x0f67, 0x0002, 0x071c, 0x0720, 0x0002, 0x0051, - // Entry 38F00 - 38F3F - 0x0f23, 0x0f23, 0x0002, 0x0051, 0x0f39, 0x0f39, 0x0003, 0x0000, - 0x0728, 0x072d, 0x0003, 0x0051, 0x0f50, 0x0f5d, 0x0f67, 0x0002, - 0x0730, 0x0734, 0x0002, 0x0051, 0x0f23, 0x0f23, 0x0002, 0x0051, - 0x0f39, 0x0f39, 0x0003, 0x0000, 0x073c, 0x0741, 0x0003, 0x0051, - 0x0f72, 0x0f86, 0x0f97, 0x0002, 0x0744, 0x0748, 0x0002, 0x0051, - 0x0fac, 0x0fac, 0x0002, 0x0051, 0x0fc1, 0x0fc1, 0x0003, 0x0000, - 0x0750, 0x0755, 0x0003, 0x0051, 0x0fd7, 0x0fe4, 0x0fee, 0x0002, - 0x0758, 0x075c, 0x0002, 0x0051, 0x0fac, 0x0fac, 0x0002, 0x0051, - // Entry 38F40 - 38F7F - 0x0fc1, 0x0fc1, 0x0003, 0x0000, 0x0764, 0x0769, 0x0003, 0x0051, - 0x0fd7, 0x0fe4, 0x0fee, 0x0002, 0x076c, 0x0770, 0x0002, 0x0051, - 0x0fac, 0x0fac, 0x0002, 0x0051, 0x0fc1, 0x0fc1, 0x0003, 0x0000, - 0x0778, 0x077d, 0x0003, 0x0051, 0x0ffc, 0x100c, 0x1019, 0x0002, - 0x0780, 0x0784, 0x0002, 0x0051, 0x1039, 0x102a, 0x0002, 0x0051, - 0x1059, 0x1049, 0x0003, 0x0000, 0x078c, 0x0791, 0x0003, 0x0051, - 0x106a, 0x1078, 0x1083, 0x0002, 0x0794, 0x0798, 0x0002, 0x0051, - 0x1039, 0x1039, 0x0002, 0x0051, 0x1059, 0x1059, 0x0003, 0x0000, - // Entry 38F80 - 38FBF - 0x07a0, 0x07a5, 0x0003, 0x0051, 0x106a, 0x1078, 0x1083, 0x0002, - 0x07a8, 0x07ac, 0x0002, 0x0051, 0x1039, 0x1039, 0x0002, 0x0051, - 0x1059, 0x1059, 0x0001, 0x07b2, 0x0001, 0x0007, 0x07cc, 0x0003, - 0x07b9, 0x07bc, 0x07c0, 0x0001, 0x0006, 0x03db, 0x0002, 0x0006, - 0xffff, 0x03e0, 0x0002, 0x07c3, 0x07c7, 0x0002, 0x0051, 0x109e, - 0x1092, 0x0002, 0x0051, 0x10b8, 0x10ab, 0x0003, 0x07cf, 0x0000, - 0x07d2, 0x0001, 0x0000, 0x2143, 0x0002, 0x07d5, 0x07d9, 0x0002, - 0x0051, 0x10c6, 0x10c6, 0x0002, 0x0051, 0x10cf, 0x10cf, 0x0003, - // Entry 38FC0 - 38FFF - 0x07e1, 0x0000, 0x07e4, 0x0001, 0x0000, 0x2143, 0x0002, 0x07e7, - 0x07eb, 0x0002, 0x0000, 0x1d76, 0x1d76, 0x0002, 0x0000, 0x1d7d, - 0x1d7d, 0x0003, 0x07f3, 0x07f6, 0x07fa, 0x0001, 0x001c, 0x0b08, - 0x0002, 0x001c, 0xffff, 0x1f10, 0x0002, 0x07fd, 0x0801, 0x0002, - 0x0051, 0x10e7, 0x10d9, 0x0002, 0x0051, 0x1105, 0x10f6, 0x0003, - 0x0809, 0x0000, 0x080c, 0x0001, 0x0001, 0x075a, 0x0002, 0x080f, - 0x0813, 0x0002, 0x0051, 0x1121, 0x1115, 0x0002, 0x0051, 0x113b, - 0x112e, 0x0003, 0x081b, 0x0000, 0x081e, 0x0001, 0x0000, 0x1f9a, - // Entry 39000 - 3903F - 0x0002, 0x0821, 0x0825, 0x0002, 0x0000, 0x1ace, 0x1ace, 0x0002, - 0x0000, 0x1ad5, 0x1ad5, 0x0003, 0x082d, 0x0830, 0x0834, 0x0001, - 0x001c, 0x1f87, 0x0002, 0x0006, 0xffff, 0x04b8, 0x0002, 0x0837, - 0x083b, 0x0002, 0x0051, 0x1158, 0x1149, 0x0002, 0x0051, 0x1178, - 0x1168, 0x0003, 0x0843, 0x0000, 0x0846, 0x0001, 0x001e, 0x0171, - 0x0002, 0x0849, 0x084d, 0x0002, 0x0051, 0x1195, 0x1189, 0x0002, - 0x0051, 0x11a2, 0x11a2, 0x0003, 0x0855, 0x0000, 0x0858, 0x0001, - 0x0000, 0x2002, 0x0002, 0x085b, 0x085f, 0x0002, 0x0026, 0x00bf, - // Entry 39040 - 3907F - 0x00bf, 0x0002, 0x0000, 0x1dbb, 0x1dbb, 0x0001, 0x0865, 0x0001, - 0x0051, 0x11af, 0x0004, 0x086d, 0x0872, 0x0877, 0x0886, 0x0003, - 0x0000, 0x1dc7, 0x3839, 0x3916, 0x0003, 0x0051, 0x11bd, 0x11ca, - 0x11d3, 0x0002, 0x0000, 0x087a, 0x0003, 0x0000, 0x0881, 0x087e, - 0x0001, 0x0029, 0x0a1c, 0x0003, 0x0051, 0xffff, 0x11dc, 0x11fa, - 0x0002, 0x0a6d, 0x0889, 0x0003, 0x088d, 0x09cd, 0x092d, 0x009e, - 0x0051, 0xffff, 0xffff, 0xffff, 0xffff, 0x12c8, 0x1334, 0x13ca, - 0x141b, 0x1460, 0x14a8, 0x14f9, 0x154d, 0x1598, 0x1670, 0x16be, - // Entry 39080 - 390BF - 0x1712, 0x1784, 0x17d5, 0x182c, 0x189b, 0x1925, 0x1997, 0x1a0c, - 0x1a69, 0x1aba, 0xffff, 0xffff, 0x1b39, 0xffff, 0x1bab, 0xffff, - 0x1c17, 0x1c65, 0x1cad, 0x1cf5, 0xffff, 0xffff, 0x1d7f, 0x1dd3, - 0x1e32, 0xffff, 0xffff, 0xffff, 0x1ec0, 0xffff, 0x1f3a, 0x1f9d, - 0xffff, 0x2025, 0x208e, 0x20f4, 0xffff, 0xffff, 0xffff, 0xffff, - 0x21ab, 0xffff, 0xffff, 0x223b, 0x22b0, 0xffff, 0xffff, 0x2369, - 0x23e4, 0x2438, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2529, 0x256e, 0x25bc, 0x2607, 0x2652, 0xffff, 0xffff, 0x2718, - // Entry 390C0 - 390FF - 0xffff, 0x2776, 0xffff, 0xffff, 0x2813, 0xffff, 0x28ca, 0xffff, - 0xffff, 0xffff, 0xffff, 0x297c, 0xffff, 0x29f8, 0x2a6a, 0x2adf, - 0x2b36, 0xffff, 0xffff, 0xffff, 0x2bb9, 0x2c1f, 0x2c82, 0xffff, - 0xffff, 0x2d03, 0x2d99, 0x2df3, 0x2e38, 0xffff, 0xffff, 0x2ebf, - 0x2f10, 0x2f55, 0xffff, 0x2fc6, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3106, 0x3157, 0x31a2, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3297, 0xffff, 0xffff, 0x330f, 0xffff, - 0x3369, 0xffff, 0x33df, 0x342d, 0x348a, 0xffff, 0x34ee, 0x3548, - // Entry 39100 - 3913F - 0xffff, 0xffff, 0xffff, 0x35e6, 0x3634, 0xffff, 0xffff, 0x1216, - 0x137f, 0x15dd, 0x1625, 0xffff, 0xffff, 0x2867, 0x3082, 0x009e, - 0x0051, 0x125b, 0x1274, 0x1290, 0x12ad, 0x12e6, 0x1347, 0x13df, - 0x142c, 0x1472, 0x14bd, 0x150f, 0x1560, 0x15a9, 0x1684, 0x16d4, - 0x1732, 0x1799, 0x17ec, 0x184b, 0x18c3, 0x1945, 0x19b8, 0x1a25, - 0x1a7e, 0x1ad1, 0x1b11, 0x1b24, 0x1b4f, 0x1b8d, 0x1bc2, 0x1c02, - 0x1c2b, 0x1c77, 0x1cbf, 0x1d0c, 0x1d4c, 0x1d67, 0x1d95, 0x1deb, - 0x1e43, 0x1e77, 0x1e89, 0x1ea8, 0x1edc, 0x1f26, 0x1f55, 0x1fb9, - // Entry 39140 - 3917F - 0x2003, 0x2042, 0x20aa, 0x2105, 0x2139, 0x2155, 0x2180, 0x2197, - 0x21c0, 0x21fc, 0x2218, 0x225c, 0x22d3, 0x2344, 0x2356, 0x238c, - 0x23fa, 0x2449, 0x247d, 0x2498, 0x24b3, 0x24c9, 0x24e8, 0x2508, - 0x253a, 0x2582, 0x25cf, 0x261a, 0x2677, 0x26d3, 0x26f5, 0x272b, - 0x2763, 0x278e, 0x27d0, 0x27fb, 0x2829, 0x28af, 0x28de, 0x2918, - 0x292d, 0x2949, 0x2960, 0x2999, 0x29e5, 0x2a18, 0x2a8b, 0x2af6, - 0x2b49, 0x2b81, 0x2b95, 0x2ba7, 0x2bd5, 0x2c3a, 0x2c99, 0x2cd9, - 0x2cea, 0x2d23, 0x2db1, 0x2e04, 0x2e4f, 0x2e8f, 0x2ea1, 0x2ed4, - // Entry 39180 - 391BF - 0x2f21, 0x2f6c, 0x2fac, 0x2fea, 0x3044, 0x3059, 0x306c, 0x30d6, - 0x30f2, 0x311b, 0x316a, 0x31b4, 0x31ea, 0x3208, 0x3226, 0x3242, - 0x325e, 0x3273, 0x3285, 0x32aa, 0x32e2, 0x32fb, 0x3321, 0x3357, - 0x3384, 0x33cc, 0x33f3, 0x3446, 0x349e, 0x34d8, 0x3506, 0x355f, - 0x359f, 0x35b2, 0x35ca, 0x35fa, 0x364e, 0x232b, 0x2d75, 0x1227, - 0x1392, 0x15ef, 0x1638, 0xffff, 0x27e9, 0x2879, 0x3098, 0x009e, - 0x0051, 0xffff, 0xffff, 0xffff, 0xffff, 0x130c, 0x1362, 0x13fc, - 0x1445, 0x148c, 0x14da, 0x152d, 0x157b, 0x15c2, 0x16a0, 0x16f2, - // Entry 391C0 - 391FF - 0x175a, 0x17b6, 0x180b, 0x1872, 0x18f3, 0x196d, 0x19e1, 0x1a46, - 0x1a9b, 0x1af0, 0xffff, 0xffff, 0x1b6d, 0xffff, 0x1be1, 0xffff, - 0x1c47, 0x1c91, 0x1cd9, 0x1d2b, 0xffff, 0xffff, 0x1db3, 0x1e0b, - 0x1e5c, 0xffff, 0xffff, 0xffff, 0x1f00, 0xffff, 0x1f78, 0x1fdd, - 0xffff, 0x2067, 0x20ce, 0x211e, 0xffff, 0xffff, 0xffff, 0xffff, - 0x21dd, 0xffff, 0xffff, 0x2285, 0x22fe, 0xffff, 0xffff, 0x23b7, - 0x2418, 0x2462, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2553, 0x259e, 0x25ea, 0x2635, 0x26a4, 0xffff, 0xffff, 0x2746, - // Entry 39200 - 3923F - 0xffff, 0x27ae, 0xffff, 0xffff, 0x2847, 0xffff, 0x28fa, 0xffff, - 0xffff, 0xffff, 0xffff, 0x29be, 0xffff, 0x2a40, 0x2ab4, 0x2b15, - 0x2b64, 0xffff, 0xffff, 0xffff, 0x2bf9, 0x2c5d, 0x2cb8, 0xffff, - 0xffff, 0x2d4b, 0x2dd1, 0x2e1d, 0x2e6e, 0xffff, 0xffff, 0x2ef1, - 0x2f3a, 0x2f8b, 0xffff, 0x3016, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3138, 0x3185, 0x31ce, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x32c5, 0xffff, 0xffff, 0x333b, 0xffff, - 0x33a7, 0xffff, 0x340f, 0x3467, 0x34ba, 0xffff, 0x3526, 0x357e, - // Entry 39240 - 3927F - 0xffff, 0xffff, 0xffff, 0x3616, 0x3670, 0xffff, 0xffff, 0x1240, - 0x13ad, 0x1609, 0x1653, 0xffff, 0xffff, 0x2893, 0x30b6, 0x0003, - 0x0a71, 0x0ba3, 0x0b0a, 0x0097, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2243, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x224c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39280 - 392BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 392C0 - 392FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x01ea, 0x0097, 0x001c, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2243, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39300 - 3933F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x224c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39340 - 3937F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39380 - 393BF - 0xffff, 0xffff, 0xffff, 0xffff, 0x01ea, 0x0097, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2247, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2250, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 393C0 - 393FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39400 - 3943F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x01ee, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - 0x000b, 0x0003, 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39440 - 3947F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, - 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39480 - 394BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 394C0 - 394FF - 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - 0x000b, 0x0003, 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39500 - 3953F - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, - 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, - // Entry 39540 - 3957F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - 0x000b, 0x0003, 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, - // Entry 39580 - 395BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, - 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 395C0 - 395FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, - // Entry 39600 - 3963F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0004, - 0x0000, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000d, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0000, 0x0000, 0x0000, - // Entry 39640 - 3967F - 0x002b, 0x0001, 0x002d, 0x0003, 0x0031, 0x0097, 0x0064, 0x0031, - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, - 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39680 - 396BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 396C0 - 396FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, - 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0009, 0x0001, 0x000b, 0x0003, 0x000f, 0x0075, 0x0042, 0x0031, - 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39700 - 3973F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, - 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39740 - 3977F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39780 - 397BF - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, - 0x0003, 0x0004, 0x015f, 0x03d1, 0x0012, 0x0017, 0x0023, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0057, 0x0076, 0x012f, 0x0000, 0x013b, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0147, 0x0000, 0x0153, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001e, 0x0001, 0x0020, - 0x0001, 0x0010, 0x004c, 0x0006, 0x002a, 0x0000, 0x0000, 0x0000, - 0x0000, 0x004f, 0x0002, 0x002d, 0x003e, 0x0001, 0x002f, 0x000d, - 0x0044, 0xffff, 0x00f6, 0x00f9, 0x00fc, 0x00ff, 0x30f6, 0x30f9, - // Entry 397C0 - 397FF - 0x30fc, 0x30ff, 0x3102, 0x3105, 0x3109, 0x310d, 0x0001, 0x0040, - 0x000d, 0x0044, 0xffff, 0x00f6, 0x00f9, 0x00fc, 0x00ff, 0x30f6, - 0x30f9, 0x30fc, 0x30ff, 0x3102, 0x3105, 0x3109, 0x310d, 0x0004, - 0x0000, 0x0000, 0x0000, 0x0054, 0x0001, 0x0052, 0x0000, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x0000, 0x0065, - 0x0001, 0x0062, 0x0001, 0x0010, 0x004c, 0x0004, 0x0073, 0x006d, - 0x006a, 0x0070, 0x0001, 0x0052, 0x0012, 0x0001, 0x0052, 0x0012, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0000, - // Entry 39800 - 3983F - 0x007f, 0x0098, 0x00b1, 0x010a, 0x0113, 0x0000, 0x011e, 0x0002, - 0x0082, 0x008d, 0x0001, 0x0084, 0x0007, 0x001c, 0x1383, 0x2255, - 0x225d, 0x2264, 0x226b, 0x2272, 0x13b2, 0x0001, 0x008f, 0x0007, - 0x001c, 0x1383, 0x2255, 0x225d, 0x2264, 0x226b, 0x2272, 0x13b2, - 0x0002, 0x009b, 0x00a6, 0x0003, 0x0000, 0x0000, 0x009f, 0x0005, - 0x0029, 0xffff, 0x01bd, 0x01cc, 0x01db, 0x01ea, 0x0003, 0x0000, - 0x0000, 0x00aa, 0x0005, 0x0029, 0xffff, 0x01bd, 0x01cc, 0x01db, - 0x01ea, 0x0002, 0x00b4, 0x00eb, 0x0003, 0x00b8, 0x00c1, 0x00e2, - // Entry 39840 - 3987F - 0x0002, 0x00bb, 0x00be, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, - 0x0499, 0x0008, 0x00cd, 0x00d3, 0x00ca, 0x00d6, 0x00d9, 0x00dc, - 0x00df, 0x00d0, 0x0001, 0x0051, 0x0922, 0x0001, 0x001c, 0x0494, - 0x0001, 0x0051, 0x092d, 0x0001, 0x001c, 0x0499, 0x0001, 0x0051, - 0x0940, 0x0001, 0x0005, 0x130a, 0x0001, 0x0029, 0x0241, 0x0001, - 0x001c, 0x1436, 0x0002, 0x00e5, 0x00e8, 0x0001, 0x0051, 0x0936, - 0x0001, 0x0029, 0x0226, 0x0003, 0x00ef, 0x00f8, 0x0101, 0x0002, - 0x00f2, 0x00f5, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, - // Entry 39880 - 398BF - 0x0002, 0x00fb, 0x00fe, 0x0001, 0x001c, 0x0494, 0x0001, 0x001c, - 0x0499, 0x0002, 0x0104, 0x0107, 0x0001, 0x0051, 0x0940, 0x0001, - 0x0005, 0x130a, 0x0001, 0x010c, 0x0002, 0x0000, 0x010f, 0x0002, - 0x0029, 0x026e, 0x027a, 0x0004, 0x011b, 0x0000, 0x0000, 0x0118, - 0x0001, 0x0002, 0x0860, 0x0001, 0x0014, 0x146e, 0x0004, 0x012c, - 0x0126, 0x0123, 0x0129, 0x0001, 0x0052, 0x0012, 0x0001, 0x0052, - 0x0012, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0136, 0x0001, 0x0138, - // Entry 398C0 - 398FF - 0x0001, 0x0010, 0x004c, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0142, 0x0001, 0x0144, 0x0001, 0x0010, 0x004c, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0001, 0x0150, - 0x0001, 0x0010, 0x004c, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x015a, 0x0001, 0x015c, 0x0001, 0x0010, 0x004c, 0x003e, - 0x0000, 0x0000, 0x0000, 0x019e, 0x01a8, 0x0000, 0x01b2, 0x01c1, - 0x01d5, 0x01e9, 0x01f3, 0x0000, 0x01fd, 0x0207, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0215, 0x021f, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 39900 - 3993F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0229, 0x0233, - 0x0242, 0x0251, 0x025b, 0x026f, 0x027e, 0x0288, 0x029c, 0x02ab, - 0x02ba, 0x02ce, 0x02dd, 0x02ec, 0x0300, 0x0314, 0x0323, 0x0337, - 0x0346, 0x0350, 0x0364, 0x0000, 0x0000, 0x0000, 0x0373, 0x037d, - 0x0000, 0x0387, 0x0391, 0x03a3, 0x03b5, 0x03bf, 0x0003, 0x0000, - 0x0000, 0x01a2, 0x0001, 0x01a4, 0x0002, 0x0052, 0x0032, 0x0020, - 0x0003, 0x0000, 0x0000, 0x01ac, 0x0001, 0x01ae, 0x0002, 0x0052, - 0x0032, 0x0020, 0x0003, 0x0000, 0x01b6, 0x01bb, 0x0003, 0x0052, - // Entry 39940 - 3997F - 0x0045, 0x0057, 0x0066, 0x0001, 0x01bd, 0x0002, 0x001c, 0x15df, - 0x15c7, 0x0003, 0x0000, 0x01c5, 0x01ca, 0x0003, 0x0052, 0x0079, - 0x0087, 0x0092, 0x0002, 0x01cd, 0x01d1, 0x0002, 0x001c, 0x161f, - 0x161f, 0x0002, 0x0051, 0x0a8a, 0x0a8a, 0x0003, 0x0000, 0x01d9, - 0x01de, 0x0003, 0x0052, 0x0079, 0x0087, 0x0092, 0x0002, 0x01e1, - 0x01e5, 0x0002, 0x000b, 0x0c9c, 0x0c9c, 0x0002, 0x000b, 0x0ca7, - 0x0ca7, 0x0003, 0x0000, 0x0000, 0x01ed, 0x0001, 0x01ef, 0x0002, - 0x0052, 0x00b4, 0x00a1, 0x0003, 0x0000, 0x0000, 0x01f7, 0x0001, - // Entry 39980 - 399BF - 0x01f9, 0x0002, 0x0052, 0x00b4, 0x00a1, 0x0003, 0x0000, 0x0000, - 0x0201, 0x0001, 0x0203, 0x0002, 0x001c, 0x1712, 0x16fd, 0x0004, - 0x0000, 0x0000, 0x020c, 0x0212, 0x0001, 0x020e, 0x0002, 0x001c, - 0x1760, 0x1760, 0x0001, 0x0052, 0x00c8, 0x0003, 0x0000, 0x0000, - 0x0219, 0x0001, 0x021b, 0x0002, 0x0052, 0x00e8, 0x00d6, 0x0003, - 0x0000, 0x0000, 0x0223, 0x0001, 0x0225, 0x0002, 0x0052, 0x00e8, - 0x00d6, 0x0003, 0x0000, 0x0000, 0x022d, 0x0001, 0x022f, 0x0002, - 0x001c, 0x1859, 0x1843, 0x0003, 0x0000, 0x0237, 0x023c, 0x0003, - // Entry 399C0 - 399FF - 0x0051, 0x0c4d, 0x0c5d, 0x0c6a, 0x0001, 0x023e, 0x0002, 0x001c, - 0x1859, 0x1843, 0x0003, 0x0000, 0x0000, 0x0246, 0x0002, 0x0249, - 0x024d, 0x0002, 0x001c, 0x18bd, 0x18bd, 0x0002, 0x0052, 0x00fb, - 0x00fb, 0x0003, 0x0000, 0x0000, 0x0255, 0x0001, 0x0257, 0x0002, - 0x0052, 0x0124, 0x0108, 0x0003, 0x0000, 0x025f, 0x0264, 0x0003, - 0x0052, 0x0142, 0x0152, 0x015f, 0x0002, 0x0267, 0x026b, 0x0002, - 0x0052, 0x0186, 0x0170, 0x0002, 0x0052, 0x01ad, 0x019d, 0x0003, - 0x0000, 0x0000, 0x0273, 0x0002, 0x0276, 0x027a, 0x0002, 0x001e, - // Entry 39A00 - 39A3F - 0x0176, 0x0176, 0x0002, 0x0051, 0x11a2, 0x11a2, 0x0003, 0x0000, - 0x0000, 0x0282, 0x0001, 0x0284, 0x0002, 0x0052, 0x01d9, 0x01be, - 0x0003, 0x0000, 0x028c, 0x0291, 0x0003, 0x0052, 0x01f6, 0x0205, - 0x0211, 0x0002, 0x0294, 0x0298, 0x0002, 0x0052, 0x0236, 0x0221, - 0x0002, 0x0052, 0x025b, 0x024c, 0x0003, 0x0000, 0x0000, 0x02a0, - 0x0002, 0x02a3, 0x02a7, 0x0002, 0x0052, 0x026b, 0x026b, 0x0002, - 0x0052, 0x027e, 0x027e, 0x0003, 0x0000, 0x0000, 0x02af, 0x0002, - 0x02b2, 0x02b6, 0x0002, 0x0052, 0x02a6, 0x028b, 0x0002, 0x0052, - // Entry 39A40 - 39A7F - 0x02d8, 0x02c3, 0x0003, 0x0000, 0x02be, 0x02c3, 0x0003, 0x0052, - 0x02ef, 0x02fe, 0x030a, 0x0002, 0x02c6, 0x02ca, 0x0002, 0x0052, - 0x02a6, 0x028b, 0x0002, 0x0052, 0x02d8, 0x02c3, 0x0003, 0x0000, - 0x0000, 0x02d2, 0x0002, 0x02d5, 0x02d9, 0x0002, 0x0052, 0x031a, - 0x031a, 0x0002, 0x0052, 0x032d, 0x032d, 0x0003, 0x0000, 0x0000, - 0x02e1, 0x0002, 0x02e4, 0x02e8, 0x0002, 0x0052, 0x0355, 0x033a, - 0x0002, 0x0052, 0x0387, 0x0372, 0x0003, 0x0000, 0x02f0, 0x02f5, - 0x0003, 0x0052, 0x039e, 0x03ad, 0x03b9, 0x0002, 0x02f8, 0x02fc, - // Entry 39A80 - 39ABF - 0x0002, 0x0052, 0x03de, 0x03c9, 0x0002, 0x0052, 0x0403, 0x03f4, - 0x0003, 0x0000, 0x0304, 0x0309, 0x0003, 0x0051, 0x0f50, 0x0f5d, - 0x3694, 0x0002, 0x030c, 0x0310, 0x0002, 0x0052, 0x0413, 0x0413, - 0x0002, 0x0052, 0x0426, 0x0426, 0x0003, 0x0000, 0x0000, 0x0318, - 0x0002, 0x031b, 0x031f, 0x0002, 0x0052, 0x044d, 0x0433, 0x0002, - 0x0052, 0x047d, 0x0469, 0x0003, 0x0000, 0x0327, 0x032c, 0x0003, - 0x0052, 0x0493, 0x04a1, 0x04ac, 0x0002, 0x032f, 0x0333, 0x0002, - 0x0052, 0x04cf, 0x04bb, 0x0002, 0x0052, 0x04f2, 0x04e4, 0x0003, - // Entry 39AC0 - 39AFF - 0x0000, 0x0000, 0x033b, 0x0002, 0x033e, 0x0342, 0x0002, 0x0052, - 0x0501, 0x0501, 0x0002, 0x0052, 0x0514, 0x0514, 0x0003, 0x0000, - 0x0000, 0x034a, 0x0001, 0x034c, 0x0002, 0x001c, 0x1de6, 0x1dd0, - 0x0003, 0x0000, 0x0354, 0x0359, 0x0003, 0x0051, 0x0ffc, 0x100c, - 0x1019, 0x0002, 0x035c, 0x0360, 0x0002, 0x001c, 0x1de6, 0x1dd0, - 0x0002, 0x0051, 0x1059, 0x1049, 0x0003, 0x0000, 0x0000, 0x0368, - 0x0002, 0x036b, 0x036f, 0x0002, 0x001c, 0x1e4d, 0x1e4d, 0x0002, - 0x0052, 0x0521, 0x0521, 0x0003, 0x0000, 0x0000, 0x0377, 0x0001, - // Entry 39B00 - 39B3F - 0x0379, 0x0002, 0x001c, 0x1ec4, 0x1eb1, 0x0003, 0x0000, 0x0000, - 0x0381, 0x0001, 0x0383, 0x0002, 0x001c, 0x1ef5, 0x1ef5, 0x0003, - 0x0000, 0x0000, 0x038b, 0x0001, 0x038d, 0x0002, 0x001c, 0x1f31, - 0x1f1c, 0x0003, 0x0395, 0x0000, 0x0398, 0x0001, 0x0041, 0x092f, - 0x0002, 0x039b, 0x039f, 0x0002, 0x001c, 0x1f68, 0x1f68, 0x0002, - 0x0052, 0x052f, 0x052f, 0x0003, 0x03a7, 0x0000, 0x03aa, 0x0001, - 0x0041, 0x092f, 0x0002, 0x03ad, 0x03b1, 0x0002, 0x0000, 0x1d97, - 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, 0x0003, 0x0000, 0x0000, - // Entry 39B40 - 39B7F - 0x03b9, 0x0001, 0x03bb, 0x0002, 0x001c, 0x1fab, 0x1f95, 0x0003, - 0x03c3, 0x0000, 0x03c6, 0x0001, 0x0000, 0x2002, 0x0002, 0x03c9, - 0x03cd, 0x0002, 0x001c, 0x1fe5, 0x1fe5, 0x0002, 0x0052, 0x053b, - 0x053b, 0x0004, 0x0000, 0x03d6, 0x03db, 0x03e6, 0x0003, 0x0006, - 0x053b, 0x27db, 0x27db, 0x0002, 0x0000, 0x03de, 0x0002, 0x0000, - 0x03e1, 0x0003, 0x0052, 0xffff, 0x0545, 0x055f, 0x0002, 0x05cd, - 0x03e9, 0x0003, 0x03ed, 0x052d, 0x048d, 0x009e, 0x0052, 0xffff, - 0xffff, 0xffff, 0xffff, 0x060f, 0x066f, 0x06ed, 0x0732, 0x076b, - // Entry 39B80 - 39BBF - 0x07a7, 0x07ec, 0x0834, 0x0873, 0x0927, 0x0969, 0x09b1, 0x0a17, - 0x0a5c, 0x0aa7, 0x0b0a, 0x0b8b, 0x0bf1, 0x0c5a, 0x0ca8, 0x0ced, - 0xffff, 0xffff, 0x0d58, 0xffff, 0x0dba, 0xffff, 0x0e1e, 0x0e60, - 0x0e9c, 0x0ed8, 0xffff, 0xffff, 0x0f4e, 0x0f96, 0x0fe4, 0xffff, - 0xffff, 0xffff, 0x105a, 0xffff, 0x10c4, 0x111b, 0xffff, 0x1195, - 0x11f2, 0x124c, 0xffff, 0xffff, 0xffff, 0xffff, 0x12f3, 0xffff, - 0xffff, 0x1361, 0x13cd, 0xffff, 0xffff, 0x1476, 0x14d0, 0x1518, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x15e5, 0x1621, - // Entry 39BC0 - 39BFF - 0x1663, 0x16a2, 0x16e1, 0xffff, 0xffff, 0x1793, 0xffff, 0x17e1, - 0xffff, 0xffff, 0x186a, 0xffff, 0x1905, 0xffff, 0xffff, 0xffff, - 0xffff, 0x199b, 0xffff, 0x19f2, 0x1a58, 0x1abb, 0x1b06, 0xffff, - 0xffff, 0xffff, 0x1b74, 0x1bce, 0x1c25, 0xffff, 0xffff, 0x1c92, - 0x1d18, 0x1d66, 0x1d9f, 0xffff, 0xffff, 0x1e12, 0x1e57, 0x1e90, - 0xffff, 0x1ef1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ffb, - 0x2040, 0x207f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2145, 0xffff, 0xffff, 0x21a9, 0xffff, 0x21f3, 0xffff, - // Entry 39C00 - 39C3F - 0x225c, 0x229e, 0x22ef, 0xffff, 0x2343, 0x2391, 0xffff, 0xffff, - 0xffff, 0x2415, 0x2457, 0xffff, 0xffff, 0x0579, 0x06ae, 0x08ac, - 0x08e8, 0xffff, 0xffff, 0x18b2, 0x1f92, 0x009e, 0x0052, 0x05b2, - 0x05c7, 0x05df, 0x05f8, 0x0629, 0x067e, 0x06fe, 0x073f, 0x0779, - 0x07b8, 0x07fe, 0x0843, 0x0880, 0x0937, 0x097b, 0x09cd, 0x0a28, - 0x0a6f, 0x0ac2, 0x0b2f, 0x0ba7, 0x0c0e, 0x0c6e, 0x0cb9, 0x0d00, - 0x0d38, 0x0d47, 0x0d6a, 0x0da0, 0x0dcd, 0x0e05, 0x0e2e, 0x0e6e, - 0x0eaa, 0x0eeb, 0x0f23, 0x0f39, 0x0f60, 0x0faa, 0x0ff1, 0x101d, - // Entry 39C40 - 39C7F - 0x102b, 0x1046, 0x1072, 0x10b4, 0x10db, 0x1133, 0x1175, 0x11ae, - 0x120a, 0x1259, 0x1285, 0x129d, 0x12cf, 0x12e3, 0x1304, 0x1338, - 0x134f, 0x137f, 0x13ec, 0x1451, 0x1467, 0x148e, 0x14e2, 0x1525, - 0x1551, 0x1568, 0x157f, 0x1591, 0x15ac, 0x15c8, 0x15f3, 0x1631, - 0x1672, 0x16b1, 0x1702, 0x1756, 0x1774, 0x17a2, 0x17d2, 0x17f5, - 0x182f, 0x1856, 0x187c, 0x18ee, 0x1915, 0x1947, 0x1958, 0x196a, - 0x1983, 0x19ad, 0x19e3, 0x1a0e, 0x1a73, 0x1ace, 0x1b16, 0x1b48, - 0x1b58, 0x1b66, 0x1b8c, 0x1be5, 0x1c38, 0x1c70, 0x1c7d, 0x1cae, - // Entry 39C80 - 39CBF - 0x1d2c, 0x1d73, 0x1db2, 0x1dea, 0x1df8, 0x1e23, 0x1e64, 0x1ea3, - 0x1edb, 0x1f10, 0x1f60, 0x1f71, 0x1f80, 0x1fda, 0x1feb, 0x200c, - 0x204f, 0x208d, 0x20bb, 0x20ce, 0x20e8, 0x2100, 0x2118, 0x2129, - 0x2137, 0x2154, 0x2184, 0x2199, 0x21b7, 0x21e5, 0x220b, 0x224d, - 0x226c, 0x22b3, 0x22ff, 0x2331, 0x2357, 0x23a4, 0x23dc, 0x23eb, - 0x23fd, 0x2425, 0x246d, 0x143c, 0x1cf8, 0x0586, 0x06bd, 0x08ba, - 0x08f7, 0xffff, 0x1844, 0x18c0, 0x1fa4, 0x009e, 0x0052, 0xffff, - 0xffff, 0xffff, 0xffff, 0x064b, 0x0695, 0x0717, 0x0754, 0x078f, - // Entry 39CC0 - 39CFF - 0x07d1, 0x0818, 0x085a, 0x0895, 0x094f, 0x0995, 0x09f1, 0x0a41, - 0x0a8a, 0x0ae5, 0x0b5c, 0x0bcb, 0x0c33, 0x0c8a, 0x0cd2, 0x0d1b, - 0xffff, 0xffff, 0x0d84, 0xffff, 0x0de8, 0xffff, 0x0e46, 0x0e84, - 0x0ec0, 0x0f06, 0xffff, 0xffff, 0x0f7a, 0x0fc6, 0x1006, 0xffff, - 0xffff, 0xffff, 0x1092, 0xffff, 0x10fa, 0x1153, 0xffff, 0x11cf, - 0x122a, 0x126e, 0xffff, 0xffff, 0xffff, 0xffff, 0x131d, 0xffff, - 0xffff, 0x13a5, 0x1413, 0xffff, 0xffff, 0x14ae, 0x14fc, 0x153a, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1609, 0x1649, - // Entry 39D00 - 39D3F - 0x1689, 0x16c8, 0x172b, 0xffff, 0xffff, 0x17b9, 0xffff, 0x1811, - 0xffff, 0xffff, 0x1896, 0xffff, 0x192d, 0xffff, 0xffff, 0xffff, - 0xffff, 0x19c7, 0xffff, 0x1a32, 0x1a96, 0x1ae9, 0x1b2e, 0xffff, - 0xffff, 0xffff, 0x1bac, 0x1c04, 0x1c53, 0xffff, 0xffff, 0x1cd2, - 0x1d48, 0x1d88, 0x1dcd, 0xffff, 0xffff, 0x1e3c, 0x1e79, 0x1ebe, - 0xffff, 0x1f37, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2025, - 0x2066, 0x20a3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x216b, 0xffff, 0xffff, 0x21cd, 0xffff, 0x222b, 0xffff, - // Entry 39D40 - 39D7F - 0x2284, 0x22d0, 0x2317, 0xffff, 0x2373, 0x23bf, 0xffff, 0xffff, - 0xffff, 0x243d, 0x248b, 0xffff, 0xffff, 0x059b, 0x06d4, 0x08d0, - 0x090e, 0xffff, 0xffff, 0x18d6, 0x1fbe, 0x0003, 0x05d1, 0x0703, - 0x066a, 0x0097, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2278, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39D80 - 39DBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2283, 0x228c, 0xffff, 0x2295, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39DC0 - 39DFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x00db, 0x0097, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39E00 - 39E3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2278, 0xffff, 0xffff, 0xffff, 0x00db, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39E40 - 39E7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39E80 - 39EBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0x0097, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x227d, 0xffff, 0xffff, 0xffff, - 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2287, 0x2290, 0xffff, 0x2299, 0xffff, 0xffff, - // Entry 39EC0 - 39EFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39F00 - 39F3F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x00db, 0x0003, 0x0000, 0x0000, 0x0004, - 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, - 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39F40 - 39F7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - // Entry 39F80 - 39FBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, - 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 39FC0 - 39FFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0000, 0x0000, 0x0004, - 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, - 0x000f, 0x0075, 0x0042, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A000 - 3A03F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, 0x00db, 0x0031, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00db, 0x00db, 0xffff, - // Entry 3A040 - 3A07F - 0x00db, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x00db, 0x00db, 0xffff, 0x00db, 0x0003, 0x0004, 0x0000, 0x019b, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3A080 - 3A0BF - 0x000d, 0x0008, 0x0016, 0x007b, 0x00d2, 0x0107, 0x0148, 0x0168, - 0x0179, 0x018a, 0x0002, 0x0019, 0x004a, 0x0003, 0x001d, 0x002c, - 0x003b, 0x000d, 0x0053, 0xffff, 0x0000, 0x0004, 0x0008, 0x000c, - 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, 0x002c, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - 0x0053, 0xffff, 0x0030, 0x003c, 0x0048, 0x0055, 0x005c, 0x0064, - 0x006f, 0x007a, 0x0087, 0x0091, 0x009a, 0x00a5, 0x0003, 0x004e, - // Entry 3A0C0 - 3A0FF - 0x005d, 0x006c, 0x000d, 0x0053, 0xffff, 0x0000, 0x0004, 0x0008, - 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, - 0x002c, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x000d, 0x0053, 0xffff, 0x0030, 0x003c, 0x0048, 0x0055, 0x005c, - 0x0064, 0x006f, 0x007a, 0x0087, 0x0091, 0x009a, 0x00a5, 0x0002, - 0x007e, 0x00a8, 0x0005, 0x0084, 0x008d, 0x009f, 0x0000, 0x0096, - 0x0007, 0x0053, 0x00b1, 0x00b5, 0x00b9, 0x00bd, 0x00c2, 0x00c6, - // Entry 3A100 - 3A13F - 0x00ca, 0x0007, 0x0000, 0x297c, 0x2994, 0x297a, 0x2068, 0x2483, - 0x2485, 0x298e, 0x0007, 0x0053, 0x00b1, 0x00b5, 0x00b9, 0x00bd, - 0x00c2, 0x00c6, 0x00ca, 0x0007, 0x0029, 0x018f, 0x2cce, 0x0197, - 0x2cd4, 0x2cdf, 0x2ce6, 0x01b5, 0x0005, 0x00ae, 0x00b7, 0x00c9, - 0x0000, 0x00c0, 0x0007, 0x0053, 0x00b1, 0x00b5, 0x00b9, 0x00bd, - 0x00c2, 0x00c6, 0x00ca, 0x0007, 0x0000, 0x297c, 0x2994, 0x297a, - 0x2068, 0x2483, 0x2485, 0x298e, 0x0007, 0x0053, 0x00b1, 0x00b5, - 0x00b9, 0x00bd, 0x00c2, 0x00c6, 0x00ca, 0x0007, 0x0029, 0x018f, - // Entry 3A140 - 3A17F - 0x2cce, 0x0197, 0x2cd4, 0x2cdf, 0x2ce6, 0x01b5, 0x0002, 0x00d5, - 0x00ee, 0x0003, 0x00d9, 0x00e0, 0x00e7, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, - 0x3833, 0x3836, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0000, - 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, - 0x3830, 0x3833, 0x3836, 0x0002, 0x010a, 0x0129, 0x0003, 0x010e, - // Entry 3A180 - 3A1BF - 0x0117, 0x0120, 0x0002, 0x0111, 0x0114, 0x0001, 0x001c, 0x0494, - 0x0001, 0x001c, 0x0499, 0x0002, 0x011a, 0x011d, 0x0001, 0x001c, - 0x0494, 0x0001, 0x001c, 0x0499, 0x0002, 0x0123, 0x0126, 0x0001, - 0x001c, 0x0494, 0x0001, 0x001c, 0x0499, 0x0003, 0x012d, 0x0136, - 0x013f, 0x0002, 0x0130, 0x0133, 0x0001, 0x001c, 0x0494, 0x0001, - 0x001c, 0x0499, 0x0002, 0x0139, 0x013c, 0x0001, 0x001c, 0x0494, - 0x0001, 0x001c, 0x0499, 0x0002, 0x0142, 0x0145, 0x0001, 0x001c, - 0x0494, 0x0001, 0x001c, 0x0499, 0x0003, 0x0157, 0x0162, 0x014c, - // Entry 3A1C0 - 3A1FF - 0x0002, 0x014f, 0x0153, 0x0002, 0x0000, 0x04f5, 0x3a46, 0x0002, - 0x0000, 0xffff, 0x04f9, 0x0002, 0x015a, 0x015e, 0x0002, 0x0000, - 0x04f5, 0x3a46, 0x0002, 0x0000, 0xffff, 0x04f9, 0x0001, 0x0164, - 0x0002, 0x0010, 0xffff, 0x02ee, 0x0004, 0x0176, 0x0170, 0x016d, - 0x0173, 0x0001, 0x0005, 0x04d2, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x0187, 0x0181, - 0x017e, 0x0184, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0198, - // Entry 3A200 - 3A23F - 0x0192, 0x018f, 0x0195, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0019, - 0x0347, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0004, - 0x0000, 0x0000, 0x0000, 0x01a0, 0x0001, 0x01a2, 0x0003, 0x01a6, - 0x028a, 0x0218, 0x0070, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A240 - 3A27F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A280 - 3A2BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1877, 0x0070, 0x001e, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A2C0 - 3A2FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1877, 0x0070, 0x001e, - // Entry 3A300 - 3A33F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A340 - 3A37F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x187b, - 0x0003, 0x0000, 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, - 0x0009, 0x0001, 0x000b, 0x0003, 0x0081, 0x00f3, 0x000f, 0x0070, - // Entry 3A380 - 3A3BF - 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x01b8, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A3C0 - 3A3FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x202e, 0x0070, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A400 - 3A43F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A440 - 3A47F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x00db, 0x0070, 0x001e, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A480 - 3A4BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A4C0 - 3A4FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x202e, 0x0003, 0x0000, 0x0000, - 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, - 0x0003, 0x0081, 0x00f3, 0x000f, 0x0070, 0x001e, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A500 - 3A53F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x02b8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A540 - 3A57F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x202e, 0x0070, 0x001e, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A580 - 3A5BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A5C0 - 3A5FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x202e, - 0x0070, 0x001e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3A600 - 3A63F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x202e, 0x0003, 0x0004, 0x01af, 0x022f, 0x0008, 0x0000, - // Entry 3A640 - 3A67F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, - 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0053, 0x00ce, - 0x0001, 0x0053, 0x00ea, 0x0001, 0x0005, 0x01ac, 0x0001, 0x0026, - 0x1181, 0x0008, 0x0030, 0x0095, 0x00ec, 0x0121, 0x0162, 0x017c, - 0x018d, 0x019e, 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, 0x0046, - 0x0055, 0x000d, 0x0053, 0xffff, 0x00fa, 0x0101, 0x0107, 0x010c, - 0x0111, 0x0116, 0x011d, 0x0122, 0x0128, 0x012e, 0x0133, 0x0138, - // Entry 3A680 - 3A6BF - 0x000d, 0x0000, 0xffff, 0x298e, 0x298c, 0x297a, 0x2980, 0x297a, - 0x22db, 0x298c, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, - 0x0053, 0xffff, 0x013d, 0x0145, 0x0107, 0x014c, 0x0111, 0x0153, - 0x015d, 0x0122, 0x0165, 0x016f, 0x0177, 0x0180, 0x0003, 0x0068, - 0x0077, 0x0086, 0x000d, 0x0053, 0xffff, 0x00fa, 0x0101, 0x0107, - 0x010c, 0x0111, 0x0116, 0x011d, 0x0122, 0x0128, 0x012e, 0x0133, - 0x0138, 0x000d, 0x0000, 0xffff, 0x298e, 0x298c, 0x297a, 0x2980, - 0x297a, 0x22db, 0x298c, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, - // Entry 3A6C0 - 3A6FF - 0x000d, 0x0053, 0xffff, 0x013d, 0x0145, 0x0107, 0x014c, 0x0111, - 0x0153, 0x015d, 0x0122, 0x0165, 0x016f, 0x0177, 0x0180, 0x0002, - 0x0098, 0x00c2, 0x0005, 0x009e, 0x00a7, 0x00b9, 0x0000, 0x00b0, - 0x0007, 0x0037, 0x06eb, 0x200f, 0x2013, 0x2016, 0x2019, 0x201d, - 0x2020, 0x0007, 0x0000, 0x297c, 0x2281, 0x297a, 0x297a, 0x2281, - 0x2485, 0x298e, 0x0007, 0x0037, 0x06eb, 0x200f, 0x2013, 0x2016, - 0x2019, 0x201d, 0x2020, 0x0007, 0x0053, 0x0189, 0x0192, 0x019c, - 0x01a2, 0x01aa, 0x01b2, 0x01bb, 0x0005, 0x00c8, 0x00d1, 0x00e3, - // Entry 3A700 - 3A73F - 0x0000, 0x00da, 0x0007, 0x0037, 0x06eb, 0x200f, 0x2013, 0x2016, - 0x2019, 0x201d, 0x2020, 0x0007, 0x0000, 0x297c, 0x2281, 0x297a, - 0x297a, 0x2281, 0x2485, 0x298e, 0x0007, 0x0037, 0x06eb, 0x200f, - 0x2013, 0x2016, 0x2019, 0x201d, 0x2020, 0x0007, 0x0053, 0x0189, - 0x0192, 0x019c, 0x01a2, 0x01aa, 0x01b2, 0x01bb, 0x0002, 0x00ef, - 0x0108, 0x0003, 0x00f3, 0x00fa, 0x0101, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0053, 0xffff, 0x01c1, 0x01cc, - // Entry 3A740 - 3A77F - 0x01d7, 0x01e2, 0x0003, 0x010c, 0x0113, 0x011a, 0x0005, 0x0000, - 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0053, 0xffff, 0x01c1, - 0x01cc, 0x01d7, 0x01e2, 0x0002, 0x0124, 0x0143, 0x0003, 0x0128, - 0x0131, 0x013a, 0x0002, 0x012b, 0x012e, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0002, 0x0134, 0x0137, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x013d, 0x0140, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0147, 0x0150, - // Entry 3A780 - 3A7BF - 0x0159, 0x0002, 0x014a, 0x014d, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x0153, 0x0156, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0002, 0x015c, 0x015f, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0171, 0x0000, 0x0166, - 0x0002, 0x0169, 0x016d, 0x0002, 0x0053, 0x01ed, 0x01fb, 0x0002, - 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0174, 0x0178, 0x0002, 0x0053, - 0x020b, 0x0213, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x018a, - 0x0184, 0x0181, 0x0187, 0x0001, 0x0053, 0x021a, 0x0001, 0x0053, - // Entry 3A7C0 - 3A7FF - 0x0234, 0x0001, 0x0005, 0x04ec, 0x0001, 0x001e, 0x0206, 0x0004, - 0x019b, 0x0195, 0x0192, 0x0198, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x01ac, 0x01a6, 0x01a3, 0x01a9, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0040, 0x01f0, 0x0000, 0x0000, 0x01f5, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01fa, 0x0000, 0x0000, 0x01ff, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0204, 0x0000, 0x0000, 0x0000, - // Entry 3A800 - 3A83F - 0x0000, 0x0000, 0x0211, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0216, 0x0000, - 0x021b, 0x0000, 0x0000, 0x0220, 0x0000, 0x0000, 0x0225, 0x0000, - 0x0000, 0x022a, 0x0001, 0x01f2, 0x0001, 0x0053, 0x0242, 0x0001, - 0x01f7, 0x0001, 0x0053, 0x0248, 0x0001, 0x01fc, 0x0001, 0x0053, - 0x024c, 0x0001, 0x0201, 0x0001, 0x0053, 0x0251, 0x0002, 0x0207, - // Entry 3A840 - 3A87F - 0x020a, 0x0001, 0x0016, 0x06ae, 0x0005, 0x0053, 0x025e, 0x0262, - 0x0265, 0x0256, 0x026c, 0x0001, 0x0213, 0x0001, 0x0053, 0x0276, - 0x0001, 0x0218, 0x0001, 0x0053, 0x0285, 0x0001, 0x021d, 0x0001, - 0x0053, 0x0294, 0x0001, 0x0222, 0x0001, 0x000d, 0x0bf5, 0x0001, - 0x0227, 0x0001, 0x0053, 0x0298, 0x0001, 0x022c, 0x0001, 0x0053, - 0x02a0, 0x0004, 0x0234, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, - 0x1dc7, 0x3839, 0x0002, 0x0003, 0x00c9, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, - // Entry 3A880 - 3A8BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, 0x236f, - 0x0008, 0x002f, 0x0053, 0x006b, 0x007f, 0x0097, 0x00a7, 0x00b8, - 0x0000, 0x0001, 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, - 0x0053, 0xffff, 0x02af, 0x02b4, 0x02b9, 0x02be, 0x02c3, 0x02c8, - 0x02cd, 0x02d2, 0x02d7, 0x02dc, 0x02e1, 0x02e6, 0x000d, 0x0053, - 0xffff, 0x02eb, 0x02f1, 0x02fa, 0x0304, 0x030e, 0x0315, 0x031d, - // Entry 3A8C0 - 3A8FF - 0x0326, 0x0331, 0x033a, 0x0343, 0x034c, 0x0001, 0x0055, 0x0003, - 0x0059, 0x0000, 0x0062, 0x0007, 0x0053, 0x0355, 0x0359, 0x035e, - 0x0363, 0x0368, 0x036d, 0x0372, 0x0007, 0x0053, 0x0377, 0x0384, - 0x0390, 0x039d, 0x03aa, 0x03b5, 0x03c2, 0x0001, 0x006d, 0x0003, - 0x0071, 0x0000, 0x0078, 0x0005, 0x0053, 0xffff, 0x03d2, 0x03d5, - 0x03d8, 0x03db, 0x0005, 0x0053, 0xffff, 0x03de, 0x03f8, 0x0413, - 0x042e, 0x0001, 0x0081, 0x0003, 0x0085, 0x0000, 0x008e, 0x0002, - 0x0088, 0x008b, 0x0001, 0x0053, 0x0447, 0x0001, 0x0053, 0x044d, - // Entry 3A900 - 3A93F - 0x0002, 0x0091, 0x0094, 0x0001, 0x0053, 0x0447, 0x0001, 0x0053, - 0x044d, 0x0003, 0x00a1, 0x0000, 0x009b, 0x0001, 0x009d, 0x0002, - 0x0053, 0x0453, 0x0461, 0x0001, 0x00a3, 0x0002, 0x0053, 0x046f, - 0x0475, 0x0004, 0x00b5, 0x00af, 0x00ac, 0x00b2, 0x0001, 0x0001, - 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0002, 0x01fb, 0x0004, 0x00c6, 0x00c0, 0x00bd, 0x00c3, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0040, 0x010a, 0x0000, 0x0000, 0x010f, - // Entry 3A940 - 3A97F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0114, 0x0000, 0x0000, - 0x0119, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011e, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0129, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x012e, 0x0000, 0x0133, 0x0000, 0x0000, 0x0138, 0x0000, 0x0000, - 0x013d, 0x0000, 0x0000, 0x0142, 0x0001, 0x010c, 0x0001, 0x0053, - // Entry 3A980 - 3A9BF - 0x047a, 0x0001, 0x0111, 0x0001, 0x0009, 0x0085, 0x0001, 0x0116, - 0x0001, 0x0053, 0x0480, 0x0001, 0x011b, 0x0001, 0x0053, 0x0487, - 0x0002, 0x0121, 0x0124, 0x0001, 0x0053, 0x0495, 0x0003, 0x0053, - 0x049b, 0x04a8, 0x04b1, 0x0001, 0x012b, 0x0001, 0x0053, 0x04be, - 0x0001, 0x0130, 0x0001, 0x0053, 0x04d0, 0x0001, 0x0135, 0x0001, - 0x0053, 0x04d8, 0x0001, 0x013a, 0x0001, 0x0053, 0x04de, 0x0001, - 0x013f, 0x0001, 0x0053, 0x04e6, 0x0001, 0x0144, 0x0001, 0x0053, - 0x04ef, 0x0003, 0x0004, 0x0339, 0x082d, 0x000b, 0x0010, 0x0024, - // Entry 3A9C0 - 3A9FF - 0x006c, 0x0000, 0x0084, 0x0000, 0x009c, 0x00c7, 0x02df, 0x0000, - 0x032c, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0003, - 0x001f, 0x0000, 0x001a, 0x0001, 0x001c, 0x0001, 0x0053, 0x0501, - 0x0001, 0x0021, 0x0001, 0x0053, 0x050e, 0x0001, 0x0026, 0x0002, - 0x0029, 0x004a, 0x0002, 0x002c, 0x003b, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - // Entry 3AA00 - 3AA3F - 0x386e, 0x3871, 0x3874, 0x0003, 0x004e, 0x0000, 0x005d, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0001, 0x006e, 0x0001, - 0x0070, 0x0003, 0x0000, 0x0000, 0x0074, 0x000e, 0x0000, 0xffff, - 0x03ce, 0x03d3, 0x3a4b, 0x03de, 0x03e4, 0x391a, 0x3921, 0x03f9, - 0x392a, 0x040b, 0x0411, 0x3a52, 0x3a59, 0x0001, 0x0086, 0x0001, - // Entry 3AA40 - 3AA7F - 0x0088, 0x0003, 0x0000, 0x0000, 0x008c, 0x000e, 0x004b, 0xffff, - 0x0790, 0x28ed, 0x07a0, 0x07a6, 0x28f4, 0x07b1, 0x07b9, 0x07c1, - 0x07c8, 0x07cf, 0x07d4, 0x28f8, 0x07e2, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00a5, 0x0000, 0x00b6, 0x0004, 0x00b3, - 0x00ad, 0x00aa, 0x00b0, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0016, 0x02aa, 0x0001, 0x001e, 0x1a8e, 0x0004, - 0x00c4, 0x00be, 0x00bb, 0x00c1, 0x0001, 0x0053, 0x0513, 0x0001, - 0x0053, 0x0513, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - // Entry 3AA80 - 3AABF - 0x0008, 0x00d0, 0x0135, 0x018c, 0x01c1, 0x0292, 0x02ac, 0x02bd, - 0x02ce, 0x0002, 0x00d3, 0x0104, 0x0003, 0x00d7, 0x00e6, 0x00f5, - 0x000d, 0x0053, 0xffff, 0x0520, 0x0525, 0x052a, 0x052f, 0x0534, - 0x0538, 0x053d, 0x0542, 0x0547, 0x012e, 0x0133, 0x0138, 0x000d, - 0x0000, 0xffff, 0x2055, 0x298c, 0x297a, 0x2980, 0x297a, 0x2055, - 0x2055, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, 0x0053, - 0xffff, 0x054d, 0x0556, 0x0560, 0x0567, 0x0534, 0x056f, 0x0575, - 0x057b, 0x0582, 0x058d, 0x0597, 0x05a1, 0x0003, 0x0108, 0x0117, - // Entry 3AAC0 - 3AAFF - 0x0126, 0x000d, 0x0053, 0xffff, 0x0520, 0x0525, 0x052a, 0x052f, - 0x0534, 0x0538, 0x053d, 0x0542, 0x0547, 0x012e, 0x0133, 0x0138, - 0x000d, 0x0000, 0xffff, 0x2055, 0x298c, 0x297a, 0x2980, 0x297a, - 0x2055, 0x2055, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x000d, - 0x0053, 0xffff, 0x054d, 0x0556, 0x0560, 0x0567, 0x0534, 0x056f, - 0x0575, 0x057b, 0x0582, 0x058d, 0x0597, 0x05a1, 0x0002, 0x0138, - 0x0162, 0x0005, 0x013e, 0x0147, 0x0159, 0x0000, 0x0150, 0x0007, - 0x0053, 0x05ab, 0x05b0, 0x052a, 0x05b5, 0x05ba, 0x05be, 0x05c3, - // Entry 3AB00 - 3AB3F - 0x0007, 0x0000, 0x297c, 0x2994, 0x297a, 0x297a, 0x2483, 0x2485, - 0x298e, 0x0007, 0x0030, 0x0169, 0x25a2, 0x25a6, 0x25aa, 0x25ae, - 0x25b2, 0x25b6, 0x0007, 0x0053, 0x05c9, 0x05d3, 0x05d8, 0x05df, - 0x05e8, 0x05ec, 0x05f3, 0x0005, 0x0168, 0x0171, 0x0183, 0x0000, - 0x017a, 0x0007, 0x0053, 0x05ab, 0x05b0, 0x052a, 0x05b5, 0x05e8, - 0x05be, 0x05c3, 0x0007, 0x0000, 0x297c, 0x2994, 0x297a, 0x297a, - 0x2483, 0x2485, 0x298e, 0x0007, 0x0030, 0x0169, 0x25a2, 0x25a6, - 0x25aa, 0x25bb, 0x25b2, 0x25b6, 0x0007, 0x0053, 0x05c9, 0x05d3, - // Entry 3AB40 - 3AB7F - 0x05d8, 0x05df, 0x05fe, 0x05ec, 0x05f3, 0x0002, 0x018f, 0x01a8, - 0x0003, 0x0193, 0x019a, 0x01a1, 0x0005, 0x0053, 0xffff, 0x0602, - 0x060a, 0x0613, 0x061d, 0x0005, 0x0000, 0xffff, 0x2055, 0x2982, - 0x2985, 0x2989, 0x0005, 0x0053, 0xffff, 0x0626, 0x0633, 0x0648, - 0x065e, 0x0003, 0x01ac, 0x01b3, 0x01ba, 0x0005, 0x0053, 0xffff, - 0x0602, 0x060a, 0x0613, 0x061d, 0x0005, 0x0000, 0xffff, 0x2055, - 0x2982, 0x2985, 0x2989, 0x0005, 0x0053, 0xffff, 0x0626, 0x0633, - 0x0648, 0x065e, 0x0002, 0x01c4, 0x022b, 0x0003, 0x01c8, 0x01e9, - // Entry 3AB80 - 3ABBF - 0x020a, 0x0008, 0x01d4, 0x01da, 0x01d1, 0x01dd, 0x01e0, 0x01e3, - 0x01e6, 0x01d7, 0x0001, 0x0053, 0x0673, 0x0001, 0x001c, 0x0494, - 0x0001, 0x0053, 0x0682, 0x0001, 0x001c, 0x0499, 0x0001, 0x0053, - 0x068a, 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, 0x06a2, 0x0001, - 0x0053, 0x06a8, 0x0008, 0x01f5, 0x01fb, 0x01f2, 0x01fe, 0x0201, - 0x0204, 0x0207, 0x01f8, 0x0001, 0x0053, 0x0673, 0x0001, 0x001c, - 0x0494, 0x0001, 0x0053, 0x0682, 0x0001, 0x001c, 0x0499, 0x0001, - 0x0053, 0x06b0, 0x0001, 0x0053, 0x06bc, 0x0001, 0x0053, 0x06a2, - // Entry 3ABC0 - 3ABFF - 0x0001, 0x0053, 0x06a8, 0x0008, 0x0216, 0x021c, 0x0213, 0x021f, - 0x0222, 0x0225, 0x0228, 0x0219, 0x0001, 0x0053, 0x06ca, 0x0001, - 0x001c, 0x0494, 0x0001, 0x0053, 0x06dc, 0x0001, 0x001c, 0x0499, - 0x0001, 0x0053, 0x068a, 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, - 0x06a2, 0x0001, 0x0053, 0x06a8, 0x0003, 0x022f, 0x0250, 0x0271, - 0x0008, 0x023b, 0x0241, 0x0238, 0x0244, 0x0247, 0x024a, 0x024d, - 0x023e, 0x0001, 0x0053, 0x0673, 0x0001, 0x001c, 0x0494, 0x0001, - 0x0053, 0x0682, 0x0001, 0x001c, 0x0499, 0x0001, 0x0053, 0x068a, - // Entry 3AC00 - 3AC3F - 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, 0x06a2, 0x0001, 0x0053, - 0x06a8, 0x0008, 0x025c, 0x0262, 0x0259, 0x0265, 0x0268, 0x026b, - 0x026e, 0x025f, 0x0001, 0x0053, 0x0673, 0x0001, 0x001c, 0x0494, - 0x0001, 0x0053, 0x0682, 0x0001, 0x001c, 0x0499, 0x0001, 0x0053, - 0x068a, 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, 0x06a2, 0x0001, - 0x0053, 0x06a8, 0x0008, 0x027d, 0x0283, 0x027a, 0x0286, 0x0289, - 0x028c, 0x028f, 0x0280, 0x0001, 0x0053, 0x06ca, 0x0001, 0x001c, - 0x0494, 0x0001, 0x0053, 0x06dc, 0x0001, 0x001c, 0x0499, 0x0001, - // Entry 3AC40 - 3AC7F - 0x0053, 0x068a, 0x0001, 0x0053, 0x0695, 0x0001, 0x0053, 0x06a2, - 0x0001, 0x0053, 0x06a8, 0x0003, 0x02a1, 0x0000, 0x0296, 0x0002, - 0x0299, 0x029d, 0x0002, 0x0053, 0x06e7, 0x0712, 0x0002, 0x0053, - 0x06fb, 0x0720, 0x0002, 0x02a4, 0x02a8, 0x0002, 0x0053, 0x072d, - 0x073b, 0x0002, 0x0053, 0x0734, 0x0741, 0x0004, 0x02ba, 0x02b4, - 0x02b1, 0x02b7, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0016, 0x0470, 0x0004, 0x02cb, - 0x02c5, 0x02c2, 0x02c8, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - // Entry 3AC80 - 3ACBF - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x02dc, 0x02d6, 0x02d3, 0x02d9, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0001, 0x02e1, 0x0002, 0x02e4, 0x0308, 0x0003, 0x02e8, 0x0000, - 0x02f8, 0x000e, 0x0053, 0x0776, 0x0746, 0x074e, 0x0756, 0x075d, - 0x0763, 0x076a, 0x0771, 0x077e, 0x0784, 0x0789, 0x078f, 0x0796, - 0x0799, 0x000e, 0x0053, 0x0776, 0x0746, 0x074e, 0x0756, 0x075d, - 0x0763, 0x076a, 0x0771, 0x077e, 0x0784, 0x0789, 0x078f, 0x0796, - // Entry 3ACC0 - 3ACFF - 0x0799, 0x0003, 0x030c, 0x0000, 0x031c, 0x000e, 0x0053, 0x0776, - 0x0746, 0x074e, 0x0756, 0x075d, 0x0763, 0x076a, 0x0771, 0x077e, - 0x0784, 0x0789, 0x078f, 0x0796, 0x0799, 0x000e, 0x0053, 0x0776, - 0x0746, 0x074e, 0x0756, 0x075d, 0x0763, 0x076a, 0x0771, 0x077e, - 0x0784, 0x0789, 0x078f, 0x0796, 0x0799, 0x0005, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0332, 0x0001, 0x0334, 0x0001, 0x0336, 0x0001, - 0x0000, 0x06c8, 0x0040, 0x037a, 0x0000, 0x0000, 0x037f, 0x039c, - 0x03b4, 0x03cc, 0x03e9, 0x0406, 0x0423, 0x0440, 0x0458, 0x0470, - // Entry 3AD00 - 3AD3F - 0x0491, 0x04ad, 0x0000, 0x0000, 0x0000, 0x04c9, 0x04e8, 0x0500, - 0x0000, 0x0000, 0x0000, 0x0518, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x051d, 0x0537, 0x0551, 0x056b, 0x0585, 0x059f, 0x05b9, - 0x05d3, 0x05ed, 0x0607, 0x0621, 0x063b, 0x0655, 0x066f, 0x0689, - 0x06a3, 0x06bd, 0x06d7, 0x06f1, 0x070b, 0x0725, 0x0000, 0x073f, - 0x0000, 0x0744, 0x0760, 0x0778, 0x0790, 0x07ac, 0x07c4, 0x07dc, - 0x07f8, 0x0810, 0x0828, 0x0001, 0x037c, 0x0001, 0x0053, 0x079e, - 0x0003, 0x0383, 0x0386, 0x038b, 0x0001, 0x0043, 0x054a, 0x0003, - // Entry 3AD40 - 3AD7F - 0x0053, 0x07a3, 0x07af, 0x07bb, 0x0002, 0x038e, 0x0395, 0x0005, - 0x0053, 0x07e2, 0x07c7, 0xffff, 0xffff, 0x07d4, 0x0005, 0x0053, - 0x080c, 0x07f3, 0xffff, 0xffff, 0x07ff, 0x0003, 0x03a0, 0x0000, - 0x03a3, 0x0001, 0x0043, 0x054a, 0x0002, 0x03a6, 0x03ad, 0x0005, - 0x0053, 0x07d4, 0x07c7, 0xffff, 0xffff, 0x07d4, 0x0005, 0x0053, - 0x080c, 0x07f3, 0xffff, 0xffff, 0x07ff, 0x0003, 0x03b8, 0x0000, - 0x03bb, 0x0001, 0x0043, 0x054a, 0x0002, 0x03be, 0x03c5, 0x0005, - 0x0053, 0x0824, 0x081c, 0xffff, 0xffff, 0x0824, 0x0005, 0x0053, - // Entry 3AD80 - 3ADBF - 0x0835, 0x082d, 0xffff, 0xffff, 0x0835, 0x0003, 0x03d0, 0x03d3, - 0x03d8, 0x0001, 0x0053, 0x083e, 0x0003, 0x0053, 0x0848, 0x085a, - 0x086c, 0x0002, 0x03db, 0x03e2, 0x0005, 0x0053, 0x08a6, 0x087e, - 0xffff, 0xffff, 0x0892, 0x0005, 0x0053, 0x08e3, 0x08bd, 0xffff, - 0xffff, 0x08d0, 0x0003, 0x03ed, 0x03f0, 0x03f5, 0x0001, 0x000b, - 0x0c78, 0x0003, 0x0053, 0x08f9, 0x0906, 0x0913, 0x0002, 0x03f8, - 0x03ff, 0x0005, 0x0053, 0x0920, 0x0920, 0xffff, 0xffff, 0x0920, - 0x0005, 0x0053, 0x0930, 0x0930, 0xffff, 0xffff, 0x0930, 0x0003, - // Entry 3ADC0 - 3ADFF - 0x040a, 0x040d, 0x0412, 0x0001, 0x000b, 0x0c78, 0x0003, 0x0053, - 0x08f9, 0x0906, 0x0913, 0x0002, 0x0415, 0x041c, 0x0005, 0x000b, - 0x0c9c, 0x0c9c, 0xffff, 0xffff, 0x0c9c, 0x0005, 0x000b, 0x0ca7, - 0x0ca7, 0xffff, 0xffff, 0x0ca7, 0x0003, 0x0427, 0x042a, 0x042f, - 0x0001, 0x0053, 0x093f, 0x0003, 0x0053, 0x0945, 0x0953, 0x0960, - 0x0002, 0x0432, 0x0439, 0x0005, 0x0053, 0x098d, 0x096e, 0xffff, - 0xffff, 0x097e, 0x0005, 0x0053, 0x09bc, 0x099f, 0xffff, 0xffff, - 0x09ae, 0x0003, 0x0444, 0x0000, 0x0447, 0x0001, 0x0053, 0x093f, - // Entry 3AE00 - 3AE3F - 0x0002, 0x044a, 0x0451, 0x0005, 0x0053, 0x097e, 0x096e, 0xffff, - 0xffff, 0x097e, 0x0005, 0x0053, 0x09ae, 0x099f, 0xffff, 0xffff, - 0x09ae, 0x0003, 0x045c, 0x0000, 0x045f, 0x0001, 0x0053, 0x093f, - 0x0002, 0x0462, 0x0469, 0x0005, 0x0053, 0x09d8, 0x09cd, 0xffff, - 0xffff, 0x09d8, 0x0005, 0x0053, 0x09ed, 0x09e2, 0xffff, 0xffff, - 0x09ed, 0x0004, 0x0475, 0x0478, 0x047d, 0x048e, 0x0001, 0x0053, - 0x09f7, 0x0003, 0x0053, 0x0a05, 0x0a1b, 0x0a30, 0x0002, 0x0480, - 0x0487, 0x0005, 0x0053, 0x0a75, 0x0a46, 0xffff, 0xffff, 0x0a5e, - // Entry 3AE40 - 3AE7F - 0x0005, 0x0053, 0x0abc, 0x0a8f, 0xffff, 0xffff, 0x0aa6, 0x0001, - 0x0053, 0x0ad5, 0x0004, 0x0496, 0x0000, 0x0499, 0x04aa, 0x0001, - 0x0053, 0x0ae9, 0x0002, 0x049c, 0x04a3, 0x0005, 0x0053, 0x0af0, - 0x0af0, 0xffff, 0xffff, 0x0af0, 0x0005, 0x0053, 0x0b01, 0x0b01, - 0xffff, 0xffff, 0x0b01, 0x0001, 0x0053, 0x0b11, 0x0004, 0x04b2, - 0x0000, 0x04b5, 0x04c6, 0x0001, 0x0053, 0x0ae9, 0x0002, 0x04b8, - 0x04bf, 0x0005, 0x0053, 0x0b1f, 0x0b1f, 0xffff, 0xffff, 0x0b1f, - 0x0005, 0x0053, 0x0b2b, 0x0b2b, 0xffff, 0xffff, 0x0b2b, 0x0001, - // Entry 3AE80 - 3AEBF - 0x0053, 0x0b11, 0x0003, 0x04cd, 0x04d0, 0x04d7, 0x0001, 0x0000, - 0x005a, 0x0005, 0x0053, 0x0b43, 0x0b48, 0x0b4c, 0x0b37, 0x0b53, - 0x0002, 0x04da, 0x04e1, 0x0005, 0x0053, 0x0b79, 0x0b5d, 0xffff, - 0xffff, 0x0b6a, 0x0005, 0x0053, 0x0ba5, 0x0b8b, 0xffff, 0xffff, - 0x0b97, 0x0003, 0x04ec, 0x0000, 0x04ef, 0x0001, 0x0000, 0x005a, - 0x0002, 0x04f2, 0x04f9, 0x0005, 0x0053, 0x0b6a, 0x0b5d, 0xffff, - 0xffff, 0x0b6a, 0x0005, 0x0053, 0x0b97, 0x0b8b, 0xffff, 0xffff, - 0x0b97, 0x0003, 0x0504, 0x0000, 0x0507, 0x0001, 0x0000, 0x005a, - // Entry 3AEC0 - 3AEFF - 0x0002, 0x050a, 0x0511, 0x0005, 0x0053, 0x0bbe, 0x0bb6, 0xffff, - 0xffff, 0x0bbe, 0x0005, 0x0053, 0x0bd0, 0x0bc8, 0xffff, 0xffff, - 0x0bd0, 0x0001, 0x051a, 0x0001, 0x0053, 0x0bda, 0x0003, 0x0000, - 0x0521, 0x0526, 0x0003, 0x0053, 0x0bed, 0x0bff, 0x0c10, 0x0002, - 0x0529, 0x0530, 0x0005, 0x0053, 0x0c67, 0x0c22, 0xffff, 0xffff, - 0x0c45, 0x0005, 0x0053, 0x0ccf, 0x0c8c, 0xffff, 0xffff, 0x0cae, - 0x0003, 0x0000, 0x053b, 0x0540, 0x0003, 0x0053, 0x0cf3, 0x0d01, - 0x0d0e, 0x0002, 0x0543, 0x054a, 0x0005, 0x0053, 0x0d1c, 0x0d1c, - // Entry 3AF00 - 3AF3F - 0xffff, 0xffff, 0x0d1c, 0x0005, 0x0053, 0x0d38, 0x0d38, 0xffff, - 0xffff, 0x0d38, 0x0003, 0x0000, 0x0555, 0x055a, 0x0003, 0x0053, - 0x0d53, 0x0d60, 0x0d6c, 0x0002, 0x055d, 0x0564, 0x0005, 0x0053, - 0x0d79, 0x0d79, 0xffff, 0xffff, 0x0d79, 0x0005, 0x0053, 0x0d89, - 0x0d89, 0xffff, 0xffff, 0x0d89, 0x0003, 0x0000, 0x056f, 0x0574, - 0x0003, 0x0053, 0x0d99, 0x0da8, 0x0db6, 0x0002, 0x0577, 0x057e, - 0x0005, 0x0053, 0x0e00, 0x0dc5, 0xffff, 0xffff, 0x0de3, 0x0005, - 0x0053, 0x0e59, 0x0e20, 0xffff, 0xffff, 0x0e3d, 0x0003, 0x0000, - // Entry 3AF40 - 3AF7F - 0x0589, 0x058e, 0x0003, 0x0053, 0x0e78, 0x0e86, 0x0e93, 0x0002, - 0x0591, 0x0598, 0x0005, 0x0053, 0x0ea1, 0x0ea1, 0xffff, 0xffff, - 0x0ea1, 0x0005, 0x0053, 0x0eb8, 0x0eb8, 0xffff, 0xffff, 0x0eb8, - 0x0003, 0x0000, 0x05a3, 0x05a8, 0x0003, 0x0053, 0x0ece, 0x0edb, - 0x0ee7, 0x0002, 0x05ab, 0x05b2, 0x0005, 0x0053, 0x0ef4, 0x0ef4, - 0xffff, 0xffff, 0x0ef4, 0x0005, 0x0053, 0x0f04, 0x0f04, 0xffff, - 0xffff, 0x0f04, 0x0003, 0x0000, 0x05bd, 0x05c2, 0x0003, 0x0053, - 0x0f14, 0x0f25, 0x0f35, 0x0002, 0x05c5, 0x05cc, 0x0005, 0x0053, - // Entry 3AF80 - 3AFBF - 0x0f85, 0x0f46, 0xffff, 0xffff, 0x0f66, 0x0005, 0x0053, 0x0fe4, - 0x0fa7, 0xffff, 0xffff, 0x0fc6, 0x0003, 0x0000, 0x05d7, 0x05dc, - 0x0003, 0x0053, 0x1005, 0x1013, 0x1020, 0x0002, 0x05df, 0x05e6, - 0x0005, 0x0053, 0x102e, 0x102e, 0xffff, 0xffff, 0x102e, 0x0005, - 0x0053, 0x1047, 0x1047, 0xffff, 0xffff, 0x1047, 0x0003, 0x0000, - 0x05f1, 0x05f6, 0x0003, 0x0053, 0x105f, 0x106c, 0x1078, 0x0002, - 0x05f9, 0x0600, 0x0005, 0x0053, 0x1085, 0x1085, 0xffff, 0xffff, - 0x1085, 0x0005, 0x0053, 0x1095, 0x1095, 0xffff, 0xffff, 0x1095, - // Entry 3AFC0 - 3AFFF - 0x0003, 0x0000, 0x060b, 0x0610, 0x0003, 0x0053, 0x10a5, 0x10b8, - 0x10ca, 0x0002, 0x0613, 0x061a, 0x0005, 0x0053, 0x1120, 0x10dd, - 0xffff, 0xffff, 0x10ff, 0x0005, 0x0053, 0x1185, 0x1144, 0xffff, - 0xffff, 0x1165, 0x0003, 0x0000, 0x0625, 0x062a, 0x0003, 0x0053, - 0x11a8, 0x11b6, 0x11c3, 0x0002, 0x062d, 0x0634, 0x0005, 0x0053, - 0x11d1, 0x11d1, 0xffff, 0xffff, 0x11d1, 0x0005, 0x0053, 0x11ec, - 0x11ec, 0xffff, 0xffff, 0x11ec, 0x0003, 0x0000, 0x063f, 0x0644, - 0x0003, 0x0053, 0x1206, 0x1213, 0x121f, 0x0002, 0x0647, 0x064e, - // Entry 3B000 - 3B03F - 0x0005, 0x0053, 0x122c, 0x122c, 0xffff, 0xffff, 0x122c, 0x0005, - 0x0053, 0x123c, 0x123c, 0xffff, 0xffff, 0x123c, 0x0003, 0x0000, - 0x0659, 0x065e, 0x0003, 0x0053, 0x124c, 0x125a, 0x1267, 0x0002, - 0x0661, 0x0668, 0x0005, 0x0053, 0x12ae, 0x1275, 0xffff, 0xffff, - 0x1292, 0x0005, 0x0053, 0x1304, 0x12cd, 0xffff, 0xffff, 0x12e9, - 0x0003, 0x0000, 0x0673, 0x0678, 0x0003, 0x0053, 0x1322, 0x132f, - 0x1267, 0x0002, 0x067b, 0x0682, 0x0005, 0x0053, 0x133b, 0x133b, - 0xffff, 0xffff, 0x133b, 0x0005, 0x0053, 0x1351, 0x1351, 0xffff, - // Entry 3B040 - 3B07F - 0xffff, 0x1351, 0x0003, 0x0000, 0x068d, 0x0692, 0x0003, 0x0053, - 0x1366, 0x1373, 0x137f, 0x0002, 0x0695, 0x069c, 0x0005, 0x0053, - 0x138c, 0x138c, 0xffff, 0xffff, 0x138c, 0x0005, 0x0053, 0x139c, - 0x139c, 0xffff, 0xffff, 0x139c, 0x0003, 0x0000, 0x06a7, 0x06ac, - 0x0003, 0x0053, 0x13ac, 0x13bd, 0x13cd, 0x0002, 0x06af, 0x06b6, - 0x0005, 0x0053, 0x141d, 0x13de, 0xffff, 0xffff, 0x13fe, 0x0005, - 0x0053, 0x147c, 0x143f, 0xffff, 0xffff, 0x145e, 0x0003, 0x0000, - 0x06c1, 0x06c6, 0x0003, 0x0053, 0x149d, 0x14ab, 0x14b8, 0x0002, - // Entry 3B080 - 3B0BF - 0x06c9, 0x06d0, 0x0005, 0x0053, 0x14c6, 0x14c6, 0xffff, 0xffff, - 0x14c6, 0x0005, 0x0053, 0x14df, 0x14df, 0xffff, 0xffff, 0x14df, - 0x0003, 0x0000, 0x06db, 0x06e0, 0x0003, 0x0053, 0x14f7, 0x1504, - 0x1510, 0x0002, 0x06e3, 0x06ea, 0x0005, 0x0053, 0x151d, 0x151d, - 0xffff, 0xffff, 0x151d, 0x0005, 0x0053, 0x152d, 0x152d, 0xffff, - 0xffff, 0x152d, 0x0003, 0x0000, 0x06f5, 0x06fa, 0x0003, 0x0053, - 0x153d, 0x1550, 0x1562, 0x0002, 0x06fd, 0x0704, 0x0005, 0x0053, - 0x15bc, 0x1575, 0xffff, 0xffff, 0x1599, 0x0005, 0x0053, 0x1627, - // Entry 3B0C0 - 3B0FF - 0x15e2, 0xffff, 0xffff, 0x1605, 0x0003, 0x0000, 0x070f, 0x0714, - 0x0003, 0x0053, 0x164c, 0x165b, 0x1669, 0x0002, 0x0717, 0x071e, - 0x0005, 0x0053, 0x1678, 0x1678, 0xffff, 0xffff, 0x1678, 0x0005, - 0x0053, 0x1695, 0x1695, 0xffff, 0xffff, 0x1695, 0x0003, 0x0000, - 0x0729, 0x072e, 0x0003, 0x0053, 0x16b1, 0x16bf, 0x16cc, 0x0002, - 0x0731, 0x0738, 0x0005, 0x0053, 0x16da, 0x16da, 0xffff, 0xffff, - 0x16da, 0x0005, 0x0053, 0x16eb, 0x16eb, 0xffff, 0xffff, 0x16eb, - 0x0001, 0x0741, 0x0001, 0x0053, 0x16fc, 0x0003, 0x0748, 0x074b, - // Entry 3B100 - 3B13F - 0x074f, 0x0001, 0x0053, 0x1705, 0x0002, 0x0053, 0xffff, 0x170a, - 0x0002, 0x0752, 0x0759, 0x0005, 0x0053, 0x1733, 0x1716, 0xffff, - 0xffff, 0x1725, 0x0005, 0x0053, 0x175f, 0x1744, 0xffff, 0xffff, - 0x1752, 0x0003, 0x0764, 0x0000, 0x0767, 0x0001, 0x0000, 0x2143, - 0x0002, 0x076a, 0x0771, 0x0005, 0x0053, 0x176f, 0x176f, 0xffff, - 0xffff, 0x176f, 0x0005, 0x0053, 0x177b, 0x177b, 0xffff, 0xffff, - 0x177b, 0x0003, 0x077c, 0x0000, 0x077f, 0x0001, 0x0000, 0x2143, - 0x0002, 0x0782, 0x0789, 0x0005, 0x0000, 0x1d76, 0x1d76, 0xffff, - // Entry 3B140 - 3B17F - 0xffff, 0x1d76, 0x0005, 0x0000, 0x1d7d, 0x1d7d, 0xffff, 0xffff, - 0x1d7d, 0x0003, 0x0794, 0x0797, 0x079b, 0x0001, 0x0010, 0x0b77, - 0x0002, 0x0053, 0xffff, 0x1786, 0x0002, 0x079e, 0x07a5, 0x0005, - 0x0053, 0x17b6, 0x1795, 0xffff, 0xffff, 0x17a5, 0x0005, 0x0053, - 0x17e9, 0x17ca, 0xffff, 0xffff, 0x17d9, 0x0003, 0x07b0, 0x0000, - 0x07b3, 0x0001, 0x0001, 0x075a, 0x0002, 0x07b6, 0x07bd, 0x0005, - 0x0053, 0x17fc, 0x17fc, 0xffff, 0xffff, 0x17fc, 0x0005, 0x0053, - 0x180b, 0x180b, 0xffff, 0xffff, 0x180b, 0x0003, 0x07c8, 0x0000, - // Entry 3B180 - 3B1BF - 0x07cb, 0x0001, 0x0000, 0x1f9a, 0x0002, 0x07ce, 0x07d5, 0x0005, - 0x0000, 0x1ace, 0x1ace, 0xffff, 0xffff, 0x1ace, 0x0005, 0x0000, - 0x1ad5, 0x1ad5, 0xffff, 0xffff, 0x1ad5, 0x0003, 0x07e0, 0x07e3, - 0x07e7, 0x0001, 0x0053, 0x1819, 0x0002, 0x0053, 0xffff, 0x1822, - 0x0002, 0x07ea, 0x07f1, 0x0005, 0x0053, 0x184c, 0x1827, 0xffff, - 0xffff, 0x183a, 0x0005, 0x0053, 0x1884, 0x1861, 0xffff, 0xffff, - 0x1873, 0x0003, 0x07fc, 0x0000, 0x07ff, 0x0001, 0x001b, 0x0a96, - 0x0002, 0x0802, 0x0809, 0x0005, 0x0053, 0x1898, 0x1898, 0xffff, - // Entry 3B1C0 - 3B1FF - 0xffff, 0x1898, 0x0005, 0x0053, 0x18a7, 0x18a7, 0xffff, 0xffff, - 0x18a7, 0x0003, 0x0814, 0x0000, 0x0817, 0x0001, 0x0000, 0x2002, - 0x0002, 0x081a, 0x0821, 0x0005, 0x0026, 0x00bf, 0x00bf, 0xffff, - 0xffff, 0x00bf, 0x0005, 0x0000, 0x1dbb, 0x1dbb, 0xffff, 0xffff, - 0x1dbb, 0x0001, 0x082a, 0x0001, 0x0053, 0x18b5, 0x0004, 0x0832, - 0x0837, 0x083c, 0x084b, 0x0003, 0x0000, 0x1dc7, 0x3839, 0x3916, - 0x0003, 0x0053, 0x18be, 0x18ca, 0x18df, 0x0002, 0x0000, 0x083f, - 0x0003, 0x0000, 0x0846, 0x0843, 0x0001, 0x0053, 0x18f4, 0x0003, - // Entry 3B200 - 3B23F - 0x0053, 0xffff, 0x190f, 0x1927, 0x0002, 0x0a26, 0x084e, 0x0003, - 0x0852, 0x098a, 0x08ee, 0x009a, 0x0053, 0xffff, 0xffff, 0xffff, - 0xffff, 0x19c2, 0x1a20, 0x1a92, 0x1ad5, 0x1b41, 0x1bb0, 0x1c2f, - 0x1cac, 0x1ceb, 0x1d97, 0x1dca, 0x1e0d, 0x1e74, 0x1eb1, 0x1f31, - 0x1f8f, 0x200e, 0x206f, 0x20d6, 0x2128, 0x2164, 0xffff, 0xffff, - 0x21cb, 0xffff, 0x2225, 0xffff, 0x2284, 0x22c6, 0x2302, 0x2339, - 0xffff, 0xffff, 0x23b1, 0x23f1, 0x2440, 0xffff, 0xffff, 0xffff, - 0x24b2, 0xffff, 0x251f, 0x2574, 0xffff, 0x25e4, 0x2636, 0x2696, - // Entry 3B240 - 3B27F - 0xffff, 0xffff, 0xffff, 0xffff, 0x273f, 0xffff, 0xffff, 0x27a4, - 0x2808, 0xffff, 0xffff, 0x2899, 0x28f3, 0x293b, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x29e8, 0x2a25, 0x2a67, 0x2aaa, - 0x2ae7, 0xffff, 0xffff, 0x2b93, 0xffff, 0x2bd9, 0xffff, 0xffff, - 0x2c52, 0xffff, 0x2cac, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d3d, - 0xffff, 0x2d94, 0x2dfb, 0x2e62, 0x2ead, 0xffff, 0xffff, 0xffff, - 0x2f16, 0x2f65, 0x2fb1, 0xffff, 0xffff, 0x3025, 0x308b, 0x30d9, - 0x3112, 0xffff, 0xffff, 0x3183, 0x31c8, 0x3201, 0xffff, 0x325c, - // Entry 3B280 - 3B2BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3326, 0x3368, 0x33a7, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x345f, - 0xffff, 0xffff, 0x34c2, 0xffff, 0x350c, 0xffff, 0x356c, 0x35b2, - 0x35fd, 0xffff, 0x364e, 0x369c, 0xffff, 0xffff, 0xffff, 0x371e, - 0x3760, 0xffff, 0xffff, 0x193f, 0x1a5f, 0x1d24, 0x1d5c, 0x009a, - 0x0053, 0x196c, 0x197f, 0x1994, 0x19aa, 0x19da, 0x1a2f, 0x1aa1, - 0x1af3, 0x1b60, 0x1bd1, 0x1c50, 0x1cbb, 0x1cf8, 0x1da2, 0x1dd9, - 0x1e28, 0x1e81, 0x1ed3, 0x1f49, 0x1fb2, 0x2027, 0x208a, 0x20ea, - // Entry 3B2C0 - 3B2FF - 0x2136, 0x2177, 0x21af, 0x21be, 0x21d9, 0x220b, 0x2239, 0x2273, - 0x2294, 0x22d4, 0x230d, 0x234c, 0x2384, 0x239d, 0x23bf, 0x2404, - 0x244a, 0x2474, 0x2482, 0x249d, 0x24cb, 0x250f, 0x2534, 0x2587, - 0x25c3, 0x25f8, 0x2650, 0x26a3, 0x26cf, 0x26e8, 0x271d, 0x272f, - 0x274c, 0x277c, 0x2792, 0x27be, 0x2824, 0x2872, 0x288a, 0x28b1, - 0x2905, 0x2948, 0x2974, 0x297f, 0x2994, 0x29a3, 0x29bb, 0x29d1, - 0x29f5, 0x2a35, 0x2a76, 0x2ab7, 0x2b08, 0x2b5c, 0x2b77, 0x2b9e, - 0x2bca, 0x2bed, 0x2c27, 0x2c3c, 0x2c64, 0x2c9a, 0x2cbc, 0x2cee, - // Entry 3B300 - 3B33F - 0x2cff, 0x2d0f, 0x2d26, 0x2d4f, 0x2d85, 0x2daf, 0x2e16, 0x2e75, - 0x2eba, 0x2eea, 0x2efa, 0x2f08, 0x2f29, 0x2f77, 0x2fc6, 0x3002, - 0x300f, 0x3041, 0x309f, 0x30e6, 0x3123, 0x315b, 0x3169, 0x3194, - 0x31d5, 0x3212, 0x3246, 0x327e, 0x32d4, 0x32e5, 0x32f4, 0x3306, - 0x3316, 0x3336, 0x3377, 0x33b5, 0x33e3, 0x33f6, 0x3408, 0x341e, - 0x3432, 0x3442, 0x3450, 0x346e, 0x349e, 0x34b2, 0x34d0, 0x34fe, - 0x3521, 0x355d, 0x357c, 0x35c5, 0x360d, 0x363f, 0x3662, 0x36ae, - 0x36e4, 0x36f3, 0x3704, 0x372e, 0x3775, 0xffff, 0xffff, 0x1948, - // Entry 3B340 - 3B37F - 0x1a6a, 0x1d2e, 0x1d67, 0x009a, 0x0053, 0xffff, 0xffff, 0xffff, - 0xffff, 0x19fd, 0x1a47, 0x1abb, 0x1b1a, 0x1b88, 0x1c00, 0x1c7e, - 0x1cd3, 0x1d0e, 0x1db6, 0x1df3, 0x1e4e, 0x1e99, 0x1f02, 0x1f6c, - 0x1fe0, 0x204b, 0x20b0, 0x2109, 0x214d, 0x2193, 0xffff, 0xffff, - 0x21f2, 0xffff, 0x2256, 0xffff, 0x22ad, 0x22eb, 0x2323, 0x2368, - 0xffff, 0xffff, 0x23d8, 0x2422, 0x245f, 0xffff, 0xffff, 0xffff, - 0x24ed, 0xffff, 0x2554, 0x25a5, 0xffff, 0x2617, 0x2673, 0x26b9, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2764, 0xffff, 0xffff, 0x27e3, - // Entry 3B380 - 3B3BF - 0x284b, 0xffff, 0xffff, 0x28d2, 0x2920, 0x295e, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2a0d, 0x2a4e, 0x2a90, 0x2acf, - 0x2b32, 0xffff, 0xffff, 0x2bb4, 0xffff, 0x2c0a, 0xffff, 0xffff, - 0x2c7f, 0xffff, 0x2cd5, 0xffff, 0xffff, 0xffff, 0xffff, 0x2d6a, - 0xffff, 0x2dd5, 0x2e3c, 0x2e91, 0x2ed2, 0xffff, 0xffff, 0xffff, - 0x2f47, 0x2f94, 0x2fe4, 0xffff, 0xffff, 0x3066, 0x30bc, 0x30fc, - 0x313f, 0xffff, 0xffff, 0x31ae, 0x31eb, 0x322c, 0xffff, 0x32a9, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x334f, 0x338f, 0x33cc, - // Entry 3B3C0 - 3B3FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3486, - 0xffff, 0xffff, 0x34e7, 0xffff, 0x353f, 0xffff, 0x3597, 0x35e1, - 0x3626, 0xffff, 0x367f, 0x36c9, 0xffff, 0xffff, 0xffff, 0x3747, - 0x3793, 0xffff, 0xffff, 0x195a, 0x1a7e, 0x1d41, 0x1d7b, 0x0003, - 0x0a2a, 0x0a99, 0x0a5d, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3B400 - 3B43F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0x003a, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3B440 - 3B47F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, - 0x2295, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x229e, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3B480 - 3B4BF - 0xffff, 0x2287, 0x2290, 0xffff, 0x2299, 0x0001, 0x0002, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, - 0x0005, 0x0000, 0x0011, 0x0056, 0x007d, 0x00e1, 0x0002, 0x0014, - 0x0035, 0x0005, 0x001a, 0x0023, 0x0000, 0x0000, 0x002c, 0x0007, - 0x0054, 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, - 0x0007, 0x0000, 0x297c, 0x2994, 0x3a62, 0x3a65, 0x2483, 0x2485, - 0x298e, 0x0007, 0x003e, 0x0d08, 0x2066, 0x2069, 0x206c, 0x206f, - 0x2072, 0x2075, 0x0005, 0x003b, 0x0044, 0x0000, 0x0000, 0x004d, - // Entry 3B4C0 - 3B4FF - 0x0007, 0x0054, 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, - 0x0018, 0x0007, 0x0000, 0x297c, 0x2994, 0x3a68, 0x3a6b, 0x2483, - 0x2485, 0x298e, 0x0007, 0x003e, 0x0d08, 0x2066, 0x2079, 0x207c, - 0x206f, 0x2072, 0x2075, 0x0002, 0x0059, 0x006b, 0x0003, 0x005d, - 0x0000, 0x0064, 0x0005, 0x0054, 0xffff, 0x001d, 0x0025, 0x002d, - 0x0035, 0x0005, 0x0054, 0xffff, 0x003d, 0x004a, 0x0057, 0x0064, - 0x0003, 0x006f, 0x0000, 0x0076, 0x0005, 0x0054, 0xffff, 0x0071, - 0x0079, 0x0081, 0x0089, 0x0005, 0x0054, 0xffff, 0x0091, 0x009e, - // Entry 3B500 - 3B53F - 0x00ab, 0x00b8, 0x0002, 0x0080, 0x00ba, 0x0003, 0x0000, 0x0084, - 0x009f, 0x0008, 0x0000, 0x0000, 0x008d, 0x0093, 0x0096, 0x0099, - 0x009c, 0x0090, 0x0001, 0x0053, 0x0673, 0x0001, 0x0053, 0x0682, - 0x0001, 0x0053, 0x06b0, 0x0001, 0x0053, 0x06bc, 0x0001, 0x0054, - 0x00c5, 0x0001, 0x0054, 0x00cc, 0x0008, 0x0000, 0x0000, 0x00a8, - 0x00ae, 0x00b1, 0x00b4, 0x00b7, 0x00ab, 0x0001, 0x0053, 0x0673, - 0x0001, 0x0053, 0x0682, 0x0001, 0x0053, 0x068a, 0x0001, 0x0053, - 0x0695, 0x0001, 0x0053, 0x06a2, 0x0001, 0x0053, 0x06a8, 0x0003, - // Entry 3B540 - 3B57F - 0x0000, 0x00be, 0x00d2, 0x0007, 0x0000, 0x0000, 0x0000, 0x00c6, - 0x00c9, 0x00cc, 0x00cf, 0x0001, 0x0053, 0x06b0, 0x0001, 0x0053, - 0x06bc, 0x0001, 0x0054, 0x00c5, 0x0001, 0x0054, 0x00cc, 0x0008, - 0x0000, 0x0000, 0x00db, 0x0000, 0x0000, 0x0000, 0x0000, 0x00de, - 0x0001, 0x0053, 0x0673, 0x0001, 0x0053, 0x0682, 0x0001, 0x00e3, - 0x0002, 0x0000, 0x00e6, 0x0001, 0x0054, 0x00d3, 0x0002, 0x0003, - 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3B580 - 3B5BF - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, - 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0044, 0xffff, 0x00f6, - 0x00f9, 0x00fc, 0x00ff, 0x30f6, 0x30f9, 0x30fc, 0x30ff, 0x3102, - 0x3105, 0x3109, 0x310d, 0x000d, 0x0054, 0xffff, 0x00db, 0x00eb, - 0x00fa, 0x010a, 0x0119, 0x0127, 0x0135, 0x0143, 0x0151, 0x015f, - // Entry 3B5C0 - 3B5FF - 0x016e, 0x0185, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, - 0x25bc, 0x25bc, 0x25bc, 0x25bc, 0x38ae, 0x298e, 0x298e, 0x297e, - 0x38ae, 0x2055, 0x2055, 0x2055, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0054, 0x019d, 0x01a1, 0x01a5, - 0x01a9, 0x01ae, 0x01b2, 0x01b6, 0x0007, 0x0054, 0x01ba, 0x01c4, - 0x01ce, 0x01d7, 0x01e1, 0x01ea, 0x01f1, 0x0002, 0x0000, 0x0082, - 0x0007, 0x0000, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0033, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, - // Entry 3B600 - 3B63F - 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0054, - 0xffff, 0x01fb, 0x020a, 0x0218, 0x0227, 0x0001, 0x00a1, 0x0003, - 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0054, - 0x0235, 0x0001, 0x0054, 0x0240, 0x0002, 0x00b1, 0x00b4, 0x0001, - 0x0054, 0x0235, 0x0001, 0x0054, 0x0240, 0x0003, 0x00c1, 0x0000, - 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0054, 0x0248, 0x0258, 0x0001, - 0x00c3, 0x0002, 0x0005, 0x076d, 0x0770, 0x0004, 0x00d5, 0x00cf, - 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, - // Entry 3B640 - 3B67F - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, - 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3B680 - 3B6BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, - 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, - 0x0001, 0x012c, 0x0001, 0x0036, 0x0381, 0x0001, 0x0131, 0x0001, - 0x0054, 0x0268, 0x0001, 0x0136, 0x0001, 0x0019, 0x01db, 0x0001, - 0x013b, 0x0001, 0x0054, 0x026e, 0x0002, 0x0141, 0x0144, 0x0001, - 0x0036, 0x0393, 0x0003, 0x0054, 0x0274, 0x0279, 0x027e, 0x0001, - 0x014b, 0x0001, 0x0054, 0x0287, 0x0001, 0x0150, 0x0001, 0x0054, - // Entry 3B6C0 - 3B6FF - 0x0295, 0x0001, 0x0155, 0x0001, 0x0044, 0x0529, 0x0001, 0x015a, - 0x0001, 0x0005, 0x07d4, 0x0001, 0x015f, 0x0001, 0x0009, 0x030c, - 0x0001, 0x0164, 0x0001, 0x0036, 0x03bd, 0x0003, 0x0004, 0x05dd, - 0x0b2b, 0x0012, 0x0017, 0x0024, 0x0084, 0x0000, 0x00e1, 0x0000, - 0x013e, 0x0169, 0x0382, 0x03cf, 0x0427, 0x0000, 0x0000, 0x0000, - 0x0000, 0x047f, 0x0577, 0x05cf, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, - 0x0000, 0x0008, 0x002d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0073, - // Entry 3B700 - 3B73F - 0x0000, 0x0000, 0x0002, 0x0030, 0x0051, 0x0002, 0x0033, 0x0042, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0003, 0x0055, - 0x0000, 0x0064, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - // Entry 3B740 - 3B77F - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x0004, 0x0081, 0x007b, 0x0078, 0x007e, 0x0001, 0x0050, 0x00fc, - 0x0001, 0x0010, 0x0026, 0x0001, 0x0016, 0x02a2, 0x0001, 0x0016, - 0x0470, 0x0001, 0x0086, 0x0002, 0x0089, 0x00bd, 0x0003, 0x008d, - 0x009d, 0x00ad, 0x000e, 0x0054, 0xffff, 0x029c, 0x02a3, 0x02ac, - 0x02b7, 0x02c2, 0x02cb, 0x02d6, 0x02e7, 0x02f6, 0x0303, 0x030e, - 0x0317, 0x0322, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - // Entry 3B780 - 3B7BF - 0x3874, 0x0422, 0x000e, 0x0054, 0xffff, 0x029c, 0x02a3, 0x02ac, - 0x02b7, 0x02c2, 0x02cb, 0x02d6, 0x02e7, 0x02f6, 0x0303, 0x030e, - 0x0317, 0x0322, 0x0003, 0x00c1, 0x0000, 0x00d1, 0x000e, 0x0054, - 0xffff, 0x029c, 0x02a3, 0x02ac, 0x02b7, 0x02c2, 0x02cb, 0x02d6, - 0x02e7, 0x02f6, 0x0303, 0x030e, 0x0317, 0x0322, 0x000e, 0x0054, - 0xffff, 0x029c, 0x02a3, 0x02ac, 0x02b7, 0x02c2, 0x02cb, 0x02d6, - 0x02e7, 0x02f6, 0x0303, 0x030e, 0x0317, 0x0322, 0x0001, 0x00e3, - 0x0002, 0x00e6, 0x011a, 0x0003, 0x00ea, 0x00fa, 0x010a, 0x000e, - // Entry 3B7C0 - 3B7FF - 0x000e, 0xffff, 0x0098, 0x00a9, 0x00b6, 0x00c1, 0x00ce, 0x203e, - 0x204b, 0x205a, 0x0100, 0x2067, 0x2070, 0x207b, 0x2088, 0x000e, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, - 0x000e, 0xffff, 0x0098, 0x00a9, 0x00b6, 0x00c1, 0x00ce, 0x203e, - 0x204b, 0x205a, 0x0100, 0x2067, 0x2070, 0x207b, 0x2088, 0x0003, - 0x011e, 0x0000, 0x012e, 0x000e, 0x000e, 0xffff, 0x0098, 0x00a9, - 0x00b6, 0x00c1, 0x00ce, 0x203e, 0x204b, 0x205a, 0x0100, 0x2067, - // Entry 3B800 - 3B83F - 0x2070, 0x207b, 0x2088, 0x000e, 0x000e, 0xffff, 0x0098, 0x00a9, - 0x00b6, 0x00c1, 0x00ce, 0x203e, 0x204b, 0x205a, 0x0100, 0x2067, - 0x2070, 0x207b, 0x2088, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0147, 0x0000, 0x0158, 0x0004, 0x0155, 0x014f, 0x014c, - 0x0152, 0x0001, 0x0009, 0x0323, 0x0001, 0x0009, 0x033a, 0x0001, - 0x0054, 0x032b, 0x0001, 0x0016, 0x02aa, 0x0004, 0x0166, 0x0160, - 0x015d, 0x0163, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0172, - // Entry 3B840 - 3B87F - 0x01d7, 0x022e, 0x0263, 0x0334, 0x034f, 0x0360, 0x0371, 0x0002, - 0x0175, 0x01a6, 0x0003, 0x0179, 0x0188, 0x0197, 0x000d, 0x003e, - 0xffff, 0x0e23, 0x207f, 0x1ff7, 0x1fff, 0x2089, 0x0e4a, 0x0e52, - 0x2022, 0x2090, 0x202a, 0x209a, 0x2032, 0x000d, 0x003e, 0xffff, - 0x0e82, 0x0e85, 0x20a4, 0x0e8b, 0x20a4, 0x203a, 0x203a, 0x0e8b, - 0x20a7, 0x0e94, 0x0e97, 0x20aa, 0x000d, 0x0054, 0xffff, 0x033b, - 0x0348, 0x0357, 0x0362, 0x036f, 0x0376, 0x037f, 0x0388, 0x0397, - 0x03a8, 0x03b7, 0x03c4, 0x0003, 0x01aa, 0x01b9, 0x01c8, 0x000d, - // Entry 3B880 - 3B8BF - 0x003e, 0xffff, 0x0e23, 0x207f, 0x20ad, 0x1fff, 0x20b6, 0x20bd, - 0x20c6, 0x2022, 0x2090, 0x202a, 0x209a, 0x2032, 0x000d, 0x003e, - 0xffff, 0x0e82, 0x0e85, 0x20a4, 0x0e8b, 0x20a4, 0x203a, 0x203a, - 0x0e8b, 0x20a7, 0x0e94, 0x0e97, 0x20aa, 0x000d, 0x0011, 0xffff, - 0x0054, 0x0061, 0x38ff, 0x0079, 0x3908, 0x390f, 0x3918, 0x3921, - 0x00a5, 0x00b6, 0x00c5, 0x00d2, 0x0002, 0x01da, 0x0204, 0x0005, - 0x01e0, 0x01e9, 0x01fb, 0x0000, 0x01f2, 0x0007, 0x0054, 0x03d3, - 0x03d8, 0x03dd, 0x03e2, 0x03e7, 0x03ec, 0x03f1, 0x0007, 0x0054, - // Entry 3B8C0 - 3B8FF - 0x03d3, 0x03d8, 0x03dd, 0x03e2, 0x03e7, 0x03ec, 0x03f1, 0x0007, - 0x0054, 0x03d3, 0x03d8, 0x03dd, 0x03e2, 0x03e7, 0x03ec, 0x03f1, - 0x0007, 0x0054, 0x03f6, 0x040d, 0x0424, 0x0433, 0x043e, 0x044d, - 0x045c, 0x0005, 0x020a, 0x0213, 0x0225, 0x0000, 0x021c, 0x0007, - 0x0054, 0x03d3, 0x03d8, 0x03dd, 0x03e2, 0x03e7, 0x03ec, 0x03f1, - 0x0007, 0x0014, 0x02b6, 0x02b3, 0x02b6, 0x37f3, 0x02b9, 0x02b3, - 0x37f3, 0x0007, 0x0054, 0x03d3, 0x03d8, 0x03dd, 0x03e2, 0x03e7, - 0x03ec, 0x03f1, 0x0007, 0x0054, 0x03f6, 0x040d, 0x0424, 0x0433, - // Entry 3B900 - 3B93F - 0x043e, 0x044d, 0x045c, 0x0002, 0x0231, 0x024a, 0x0003, 0x0235, - 0x023c, 0x0243, 0x0005, 0x0054, 0xffff, 0x046b, 0x0476, 0x0481, - 0x048c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0054, 0xffff, 0x0497, 0x04ab, 0x04bf, 0x04d3, 0x0003, - 0x024e, 0x0255, 0x025c, 0x0005, 0x0054, 0xffff, 0x046b, 0x0476, - 0x0481, 0x048c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0054, 0xffff, 0x0497, 0x04ab, 0x04bf, 0x04d3, - 0x0002, 0x0266, 0x02cd, 0x0003, 0x026a, 0x028b, 0x02ac, 0x0008, - // Entry 3B940 - 3B97F - 0x0276, 0x027c, 0x0273, 0x027f, 0x0282, 0x0285, 0x0288, 0x0279, - 0x0001, 0x0045, 0x0c79, 0x0001, 0x0014, 0x0406, 0x0001, 0x0054, - 0x04e7, 0x0001, 0x0014, 0x040b, 0x0001, 0x0054, 0x04f1, 0x0001, - 0x0054, 0x04fa, 0x0001, 0x0054, 0x0501, 0x0001, 0x0054, 0x050e, - 0x0008, 0x0297, 0x029d, 0x0294, 0x02a0, 0x02a3, 0x02a6, 0x02a9, - 0x029a, 0x0001, 0x0045, 0x0c79, 0x0001, 0x0014, 0x0406, 0x0001, - 0x0054, 0x04e7, 0x0001, 0x0014, 0x040b, 0x0001, 0x0054, 0x04f1, - 0x0001, 0x0054, 0x04fa, 0x0001, 0x0054, 0x0501, 0x0001, 0x0054, - // Entry 3B980 - 3B9BF - 0x050e, 0x0008, 0x02b8, 0x02be, 0x02b5, 0x02c1, 0x02c4, 0x02c7, - 0x02ca, 0x02bb, 0x0001, 0x0054, 0x0517, 0x0001, 0x0014, 0x0406, - 0x0001, 0x0054, 0x0526, 0x0001, 0x0014, 0x040b, 0x0001, 0x0054, - 0x04f1, 0x0001, 0x0054, 0x04fa, 0x0001, 0x0054, 0x0501, 0x0001, - 0x0054, 0x050e, 0x0003, 0x02d1, 0x02f2, 0x0313, 0x0008, 0x02dd, - 0x02e3, 0x02da, 0x02e6, 0x02e9, 0x02ec, 0x02ef, 0x02e0, 0x0001, - 0x0045, 0x0c79, 0x0001, 0x0014, 0x0406, 0x0001, 0x0054, 0x04e7, - 0x0001, 0x0014, 0x040b, 0x0001, 0x0045, 0x0c8d, 0x0001, 0x0054, - // Entry 3B9C0 - 3B9FF - 0x0535, 0x0001, 0x0045, 0x0c96, 0x0001, 0x0054, 0x053e, 0x0008, - 0x02fe, 0x0304, 0x02fb, 0x0307, 0x030a, 0x030d, 0x0310, 0x0301, - 0x0001, 0x0045, 0x0c79, 0x0001, 0x0014, 0x0406, 0x0001, 0x0054, - 0x04e7, 0x0001, 0x0014, 0x040b, 0x0001, 0x0045, 0x0c8d, 0x0001, - 0x0054, 0x0535, 0x0001, 0x0045, 0x0c96, 0x0001, 0x0054, 0x053e, - 0x0008, 0x031f, 0x0325, 0x031c, 0x0328, 0x032b, 0x032e, 0x0331, - 0x0322, 0x0001, 0x0054, 0x0517, 0x0001, 0x0014, 0x0406, 0x0001, - 0x0054, 0x0526, 0x0001, 0x0014, 0x040b, 0x0001, 0x0045, 0x0c8d, - // Entry 3BA00 - 3BA3F - 0x0001, 0x0054, 0x0535, 0x0001, 0x0054, 0x0547, 0x0001, 0x0054, - 0x053e, 0x0003, 0x0343, 0x0349, 0x0338, 0x0002, 0x033b, 0x033f, - 0x0002, 0x0054, 0x0552, 0x0592, 0x0002, 0x0054, 0x057b, 0x05bb, - 0x0001, 0x0345, 0x0002, 0x0054, 0x05cd, 0x05da, 0x0001, 0x034b, - 0x0002, 0x0054, 0x05e2, 0x05ee, 0x0004, 0x035d, 0x0357, 0x0354, - 0x035a, 0x0001, 0x0008, 0x09c0, 0x0001, 0x0008, 0x09d5, 0x0001, - 0x0054, 0x05f5, 0x0001, 0x0016, 0x0470, 0x0004, 0x036e, 0x0368, - 0x0365, 0x036b, 0x0001, 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, - // Entry 3BA40 - 3BA7F - 0x0001, 0x0005, 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x037f, - 0x0379, 0x0376, 0x037c, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0384, 0x0002, 0x0387, 0x03ab, 0x0003, 0x038b, 0x0000, 0x039b, - 0x000e, 0x0054, 0x0654, 0x0603, 0x0610, 0x061d, 0x062a, 0x0635, - 0x0640, 0x064b, 0x0660, 0x066b, 0x0672, 0x067d, 0x068a, 0x068f, - 0x000e, 0x0054, 0x0654, 0x0603, 0x0610, 0x061d, 0x062a, 0x0635, - 0x0640, 0x064b, 0x0660, 0x066b, 0x0672, 0x067d, 0x068a, 0x068f, - // Entry 3BA80 - 3BABF - 0x0003, 0x03af, 0x0000, 0x03bf, 0x000e, 0x0054, 0x0654, 0x0603, - 0x0610, 0x061d, 0x062a, 0x0635, 0x0640, 0x064b, 0x0660, 0x066b, - 0x0672, 0x067d, 0x068a, 0x068f, 0x000e, 0x0054, 0x0654, 0x0603, - 0x0610, 0x061d, 0x062a, 0x0635, 0x0640, 0x064b, 0x0660, 0x066b, - 0x0672, 0x067d, 0x068a, 0x068f, 0x0001, 0x03d1, 0x0002, 0x03d4, - 0x0405, 0x0003, 0x03d8, 0x03e7, 0x03f6, 0x000d, 0x0054, 0xffff, - 0x0698, 0x06a5, 0x06b6, 0x06c7, 0x06d4, 0x06e3, 0x06f0, 0x06fd, - 0x070c, 0x0721, 0x072c, 0x0737, 0x000d, 0x0000, 0xffff, 0x0033, - // Entry 3BAC0 - 3BAFF - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x000d, 0x0054, 0xffff, 0x0698, 0x06a5, - 0x06b6, 0x06c7, 0x06d4, 0x06e3, 0x06f0, 0x06fd, 0x070c, 0x0721, - 0x072c, 0x0737, 0x0003, 0x0409, 0x0000, 0x0418, 0x000d, 0x0054, - 0xffff, 0x0698, 0x06a5, 0x06b6, 0x06c7, 0x06d4, 0x06e3, 0x06f0, - 0x06fd, 0x070c, 0x0721, 0x072c, 0x0737, 0x000d, 0x0054, 0xffff, - 0x0698, 0x06a5, 0x06b6, 0x06c7, 0x06d4, 0x06e3, 0x06f0, 0x06fd, - 0x070c, 0x0721, 0x072c, 0x0737, 0x0001, 0x0429, 0x0002, 0x042c, - // Entry 3BB00 - 3BB3F - 0x045d, 0x0003, 0x0430, 0x043f, 0x044e, 0x000d, 0x0054, 0xffff, - 0x0748, 0x0759, 0x0764, 0x0781, 0x079a, 0x07bb, 0x07d8, 0x07e5, - 0x07f2, 0x0801, 0x0810, 0x0824, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x000d, 0x0054, 0xffff, 0x0748, 0x0759, - 0x0764, 0x0781, 0x079a, 0x07bb, 0x07d8, 0x07e5, 0x07f2, 0x0801, - 0x0810, 0x0824, 0x0003, 0x0461, 0x0000, 0x0470, 0x000d, 0x0054, - 0xffff, 0x0748, 0x0759, 0x0764, 0x0781, 0x079a, 0x07bb, 0x07d8, - // Entry 3BB40 - 3BB7F - 0x07e5, 0x07f2, 0x0801, 0x0810, 0x0824, 0x000d, 0x0054, 0xffff, - 0x0748, 0x0759, 0x0764, 0x0781, 0x079a, 0x07bb, 0x07d8, 0x07e5, - 0x07f2, 0x0801, 0x0810, 0x0824, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0485, 0x0001, 0x0487, 0x0001, 0x0489, 0x00ec, 0x0054, - 0x083a, 0x085c, 0x0880, 0x08a4, 0x08c4, 0x08e6, 0x0906, 0x0926, - 0x0948, 0x0966, 0x098a, 0x09ae, 0x09d2, 0x09ff, 0x0a2c, 0x0a59, - 0x0a84, 0x0aa4, 0x0ac6, 0x0aea, 0x0b0c, 0x0b2e, 0x0b52, 0x0b72, - 0x0b92, 0x0bb6, 0x0bd8, 0x0bfc, 0x0c1e, 0x0c42, 0x0c64, 0x0c88, - // Entry 3BB80 - 3BBBF - 0x0cac, 0x0ccc, 0x0cee, 0x0d12, 0x0d36, 0x0d5e, 0x0d84, 0x0da2, - 0x0dc2, 0x0de2, 0x0e08, 0x0e2c, 0x0e52, 0x0e76, 0x0e98, 0x0eba, - 0x0eda, 0x0efa, 0x0f1e, 0x0f42, 0x0f63, 0x0f87, 0x0fa9, 0x0fcf, - 0x0ff3, 0x1019, 0x103d, 0x1063, 0x1085, 0x10ab, 0x10cd, 0x10f1, - 0x1115, 0x113d, 0x115f, 0x1181, 0x11a7, 0x11c9, 0x11ed, 0x1213, - 0x1235, 0x1257, 0x127d, 0x129f, 0x12c3, 0x12e5, 0x130b, 0x1331, - 0x1353, 0x1379, 0x139b, 0x13c1, 0x13e7, 0x140b, 0x142d, 0x144f, - 0x1473, 0x1497, 0x14b9, 0x14db, 0x1501, 0x1525, 0x1549, 0x156f, - // Entry 3BBC0 - 3BBFF - 0x1595, 0x15b5, 0x15d9, 0x15fd, 0x1623, 0x1643, 0x1665, 0x1689, - 0x16ad, 0x16cd, 0x16f1, 0x1719, 0x173f, 0x1763, 0x1787, 0x17ad, - 0x17d1, 0x17f7, 0x181b, 0x1843, 0x1867, 0x1889, 0x18ab, 0x18d1, - 0x18f7, 0x191b, 0x193f, 0x1963, 0x198b, 0x19b3, 0x19d7, 0x19ff, - 0x1a21, 0x1a47, 0x1a6d, 0x1a91, 0x1ab5, 0x1ad9, 0x1afb, 0x1b1f, - 0x1b43, 0x1b65, 0x1b8b, 0x1bb1, 0x1bd3, 0x1bf3, 0x1c17, 0x1c39, - 0x1c5f, 0x1c83, 0x1cab, 0x1ccf, 0x1cef, 0x1d11, 0x1d35, 0x1d57, - 0x1d7b, 0x1d9d, 0x1dc3, 0x1deb, 0x1e0f, 0x1e33, 0x1e57, 0x1e7d, - // Entry 3BC00 - 3BC3F - 0x1ea1, 0x1ec9, 0x1eed, 0x1f13, 0x1f39, 0x1f5b, 0x1f7f, 0x1fa7, - 0x1fcb, 0x1feb, 0x2013, 0x2033, 0x2055, 0x2077, 0x209d, 0x20c3, - 0x20e9, 0x210f, 0x2131, 0x2157, 0x217b, 0x219f, 0x21c1, 0x21e7, - 0x2209, 0x222f, 0x2251, 0x2275, 0x2297, 0x22bb, 0x22e1, 0x2307, - 0x232b, 0x2351, 0x2375, 0x2399, 0x23c1, 0x23e5, 0x2409, 0x242f, - 0x2451, 0x2475, 0x2493, 0x24bb, 0x24e1, 0x2507, 0x2529, 0x254d, - 0x2571, 0x2599, 0x25bb, 0x25e1, 0x2603, 0x2629, 0x264d, 0x266f, - 0x2695, 0x26bb, 0x26df, 0x2703, 0x2729, 0x274f, 0x2771, 0x2795, - // Entry 3BC40 - 3BC7F - 0x27bb, 0x27df, 0x2801, 0x2823, 0x2847, 0x286d, 0x2891, 0x28b7, - 0x28d9, 0x28f1, 0x2909, 0x2914, 0x0001, 0x0579, 0x0002, 0x057c, - 0x05ad, 0x0003, 0x0580, 0x058f, 0x059e, 0x000d, 0x0055, 0xffff, - 0x0000, 0x0013, 0x0028, 0x0035, 0x003c, 0x0049, 0x005a, 0x0063, - 0x006c, 0x0075, 0x007c, 0x0089, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x000d, 0x0055, 0xffff, 0x0000, 0x0013, - 0x0028, 0x0035, 0x003c, 0x0049, 0x005a, 0x0063, 0x006c, 0x0075, - // Entry 3BC80 - 3BCBF - 0x007c, 0x0089, 0x0003, 0x05b1, 0x0000, 0x05c0, 0x000d, 0x0055, - 0xffff, 0x0000, 0x0013, 0x0028, 0x0035, 0x003c, 0x0049, 0x005a, - 0x0063, 0x006c, 0x0075, 0x007c, 0x0089, 0x000d, 0x0055, 0xffff, - 0x0000, 0x0013, 0x0028, 0x0035, 0x003c, 0x0049, 0x005a, 0x0063, - 0x006c, 0x0075, 0x007c, 0x0089, 0x0005, 0x0000, 0x0000, 0x0000, - 0x0000, 0x05d5, 0x0001, 0x05d7, 0x0001, 0x05d9, 0x0002, 0x0000, - 0x1a20, 0x3a6e, 0x0040, 0x061e, 0x0000, 0x0000, 0x0623, 0x0642, - 0x065c, 0x0676, 0x0695, 0x06b4, 0x06d3, 0x06f2, 0x070c, 0x0726, - // Entry 3BCC0 - 3BCFF - 0x0749, 0x0767, 0x0000, 0x0000, 0x0000, 0x0785, 0x07a6, 0x07c0, - 0x0000, 0x0000, 0x0000, 0x07da, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x07df, 0x07fb, 0x0817, 0x0833, 0x084f, 0x086b, 0x0887, - 0x08a3, 0x08bf, 0x08db, 0x08f7, 0x0913, 0x092f, 0x094b, 0x0967, - 0x0983, 0x099f, 0x09bb, 0x09d7, 0x09f3, 0x0a0f, 0x0000, 0x0a2b, - 0x0000, 0x0a30, 0x0a4e, 0x0a68, 0x0a82, 0x0aa0, 0x0aba, 0x0ad4, - 0x0af2, 0x0b0c, 0x0b26, 0x0001, 0x0620, 0x0001, 0x0008, 0x0a02, - 0x0003, 0x0627, 0x062a, 0x062f, 0x0001, 0x0008, 0x0a09, 0x0003, - // Entry 3BD00 - 3BD3F - 0x0055, 0x0096, 0x00b1, 0x00c6, 0x0002, 0x0632, 0x063a, 0x0006, - 0x0055, 0x00fb, 0x00e5, 0xffff, 0xffff, 0x00fb, 0x0113, 0x0006, - 0x0055, 0x013f, 0x0129, 0xffff, 0xffff, 0x013f, 0x0157, 0x0003, - 0x0646, 0x0000, 0x0649, 0x0001, 0x0008, 0x0b17, 0x0002, 0x064c, - 0x0654, 0x0006, 0x0055, 0x016d, 0x016d, 0xffff, 0xffff, 0x016d, - 0x0180, 0x0006, 0x0055, 0x0193, 0x0193, 0xffff, 0xffff, 0x0193, - 0x01a6, 0x0003, 0x0660, 0x0000, 0x0663, 0x0001, 0x0008, 0x0b17, - 0x0002, 0x0666, 0x066e, 0x0006, 0x0055, 0x01b9, 0x01b9, 0xffff, - // Entry 3BD40 - 3BD7F - 0xffff, 0x01b9, 0x01c2, 0x0006, 0x0055, 0x01cb, 0x01cb, 0xffff, - 0xffff, 0x01cb, 0x01d4, 0x0003, 0x067a, 0x067d, 0x0682, 0x0001, - 0x0008, 0x0b3d, 0x0003, 0x0055, 0x01dd, 0x0200, 0x0223, 0x0002, - 0x0685, 0x068d, 0x0006, 0x0055, 0x0268, 0x024a, 0xffff, 0xffff, - 0x0268, 0x0288, 0x0006, 0x0055, 0x02c8, 0x02aa, 0xffff, 0xffff, - 0x02c8, 0x02e8, 0x0003, 0x0699, 0x069c, 0x06a1, 0x0001, 0x0008, - 0x0ca5, 0x0003, 0x0055, 0x030a, 0x0323, 0x0338, 0x0002, 0x06a4, - 0x06ac, 0x0006, 0x0055, 0x0351, 0x0351, 0xffff, 0xffff, 0x0351, - // Entry 3BD80 - 3BDBF - 0x0351, 0x0006, 0x0055, 0x0366, 0x0366, 0xffff, 0xffff, 0x0366, - 0x0366, 0x0003, 0x06b8, 0x06bb, 0x06c0, 0x0001, 0x0008, 0x0ca5, - 0x0003, 0x0055, 0x037b, 0x038b, 0x0399, 0x0002, 0x06c3, 0x06cb, - 0x0006, 0x0055, 0x03a9, 0x03a9, 0xffff, 0xffff, 0x03a9, 0x03a9, - 0x0006, 0x0055, 0x03b4, 0x03b4, 0xffff, 0xffff, 0x03b4, 0x03b4, - 0x0003, 0x06d7, 0x06da, 0x06df, 0x0001, 0x0008, 0x0cd1, 0x0003, - 0x0055, 0x03bf, 0x03de, 0x03f7, 0x0002, 0x06e2, 0x06ea, 0x0006, - 0x0055, 0x0434, 0x041a, 0xffff, 0xffff, 0x0434, 0x0450, 0x0006, - // Entry 3BDC0 - 3BDFF - 0x0055, 0x0488, 0x046e, 0xffff, 0xffff, 0x0488, 0x04a4, 0x0003, - 0x06f6, 0x0000, 0x06f9, 0x0001, 0x0008, 0x0e09, 0x0002, 0x06fc, - 0x0704, 0x0006, 0x0055, 0x04c2, 0x04c2, 0xffff, 0xffff, 0x04c2, - 0x04c2, 0x0006, 0x0055, 0x04d9, 0x04d9, 0xffff, 0xffff, 0x04d9, - 0x04d9, 0x0003, 0x0710, 0x0000, 0x0713, 0x0001, 0x0008, 0x0e09, - 0x0002, 0x0716, 0x071e, 0x0006, 0x0055, 0x04f0, 0x04f0, 0xffff, - 0xffff, 0x04f0, 0x04f0, 0x0006, 0x0055, 0x04fd, 0x04fd, 0xffff, - 0xffff, 0x04fd, 0x04fd, 0x0004, 0x072b, 0x072e, 0x0733, 0x0746, - // Entry 3BE00 - 3BE3F - 0x0001, 0x0009, 0x0458, 0x0003, 0x0055, 0x050a, 0x052b, 0x0546, - 0x0002, 0x0736, 0x073e, 0x0006, 0x0055, 0x0587, 0x056b, 0xffff, - 0xffff, 0x0587, 0x05a3, 0x0006, 0x0055, 0x05db, 0x05bf, 0xffff, - 0xffff, 0x05db, 0x05f7, 0x0001, 0x0055, 0x0613, 0x0004, 0x074e, - 0x0000, 0x0751, 0x0764, 0x0001, 0x0045, 0x0ac1, 0x0002, 0x0754, - 0x075c, 0x0006, 0x0055, 0x0629, 0x0629, 0xffff, 0xffff, 0x0629, - 0x0629, 0x0006, 0x0055, 0x0640, 0x0640, 0xffff, 0xffff, 0x0640, - 0x0640, 0x0001, 0x0055, 0x0657, 0x0004, 0x076c, 0x0000, 0x076f, - // Entry 3BE40 - 3BE7F - 0x0782, 0x0001, 0x0045, 0x0ac1, 0x0002, 0x0772, 0x077a, 0x0006, - 0x0055, 0x0668, 0x0668, 0xffff, 0xffff, 0x0668, 0x0668, 0x0006, - 0x0055, 0x0675, 0x0675, 0xffff, 0xffff, 0x0675, 0x0675, 0x0001, - 0x0055, 0x0657, 0x0003, 0x0789, 0x078c, 0x0793, 0x0001, 0x0054, - 0x0535, 0x0005, 0x0055, 0x0695, 0x06a0, 0x06af, 0x0682, 0x06bc, - 0x0002, 0x0796, 0x079e, 0x0006, 0x0055, 0x06eb, 0x06d3, 0xffff, - 0xffff, 0x06eb, 0x0701, 0x0006, 0x0055, 0x0731, 0x0719, 0xffff, - 0xffff, 0x0731, 0x0747, 0x0003, 0x07aa, 0x0000, 0x07ad, 0x0001, - // Entry 3BE80 - 3BEBF - 0x0055, 0x075f, 0x0002, 0x07b0, 0x07b8, 0x0006, 0x0055, 0x0778, - 0x0765, 0xffff, 0xffff, 0x0778, 0x0778, 0x0006, 0x0055, 0x07a1, - 0x078d, 0xffff, 0xffff, 0x07a1, 0x07a1, 0x0003, 0x07c4, 0x0000, - 0x07c7, 0x0001, 0x0055, 0x075f, 0x0002, 0x07ca, 0x07d2, 0x0006, - 0x0055, 0x07b6, 0x07b6, 0xffff, 0xffff, 0x07b6, 0x07b6, 0x0006, - 0x0055, 0x07bf, 0x07bf, 0xffff, 0xffff, 0x07bf, 0x07bf, 0x0001, - 0x07dc, 0x0001, 0x0055, 0x07c8, 0x0003, 0x0000, 0x07e3, 0x07e8, - 0x0003, 0x0055, 0x07de, 0x0807, 0x0828, 0x0002, 0x07eb, 0x07f3, - // Entry 3BEC0 - 3BEFF - 0x0006, 0x0055, 0x087b, 0x0855, 0xffff, 0xffff, 0x087b, 0x08a1, - 0x0006, 0x0055, 0x08ed, 0x08c7, 0xffff, 0xffff, 0x08ed, 0x0913, - 0x0003, 0x0000, 0x07ff, 0x0804, 0x0003, 0x0055, 0x0939, 0x094c, - 0x095c, 0x0002, 0x0807, 0x080f, 0x0006, 0x0055, 0x096f, 0x096f, - 0xffff, 0xffff, 0x096f, 0x096f, 0x0006, 0x0055, 0x0984, 0x0984, - 0xffff, 0xffff, 0x0984, 0x0984, 0x0003, 0x0000, 0x081b, 0x0820, - 0x0003, 0x0055, 0x0939, 0x094c, 0x095c, 0x0002, 0x0823, 0x082b, - 0x0006, 0x0055, 0x0999, 0x0999, 0xffff, 0xffff, 0x0999, 0x0999, - // Entry 3BF00 - 3BF3F - 0x0006, 0x0055, 0x09a4, 0x09a4, 0xffff, 0xffff, 0x09a4, 0x09a4, - 0x0003, 0x0000, 0x0837, 0x083c, 0x0003, 0x0055, 0x09af, 0x09d8, - 0x09fb, 0x0002, 0x083f, 0x0847, 0x0006, 0x0055, 0x0a4e, 0x0a28, - 0xffff, 0xffff, 0x0a4e, 0x0a76, 0x0006, 0x0055, 0x0ac6, 0x0aa0, - 0xffff, 0xffff, 0x0ac6, 0x0aee, 0x0003, 0x0000, 0x0853, 0x0858, - 0x0003, 0x0055, 0x0b18, 0x0b2b, 0x0b3d, 0x0002, 0x085b, 0x0863, - 0x0006, 0x0055, 0x0b50, 0x0b50, 0xffff, 0xffff, 0x0b50, 0x0b50, - 0x0006, 0x0055, 0x0b65, 0x0b65, 0xffff, 0xffff, 0x0b65, 0x0b65, - // Entry 3BF40 - 3BF7F - 0x0003, 0x0000, 0x086f, 0x0874, 0x0003, 0x0055, 0x0b18, 0x0b2b, - 0x0b3d, 0x0002, 0x0877, 0x087f, 0x0006, 0x0055, 0x0b7a, 0x0b7a, - 0xffff, 0xffff, 0x0b7a, 0x0b7a, 0x0006, 0x0055, 0x0b85, 0x0b85, - 0xffff, 0xffff, 0x0b85, 0x0b85, 0x0003, 0x0000, 0x088b, 0x0890, - 0x0003, 0x0055, 0x0b90, 0x0bb1, 0x0bcc, 0x0002, 0x0893, 0x089b, - 0x0006, 0x0055, 0x0c0f, 0x0bf1, 0xffff, 0xffff, 0x0c0f, 0x0c2f, - 0x0006, 0x0055, 0x0c6f, 0x0c51, 0xffff, 0xffff, 0x0c6f, 0x0c8f, - 0x0003, 0x0000, 0x08a7, 0x08ac, 0x0003, 0x0055, 0x0cb1, 0x0cc4, - // Entry 3BF80 - 3BFBF - 0x0cd6, 0x0002, 0x08af, 0x08b7, 0x0006, 0x0055, 0x0ce9, 0x0ce9, - 0xffff, 0xffff, 0x0ce9, 0x0ce9, 0x0006, 0x0055, 0x0cfe, 0x0cfe, - 0xffff, 0xffff, 0x0cfe, 0x0cfe, 0x0003, 0x0000, 0x08c3, 0x08c8, - 0x0003, 0x0055, 0x0cb1, 0x0cc4, 0x0cd6, 0x0002, 0x08cb, 0x08d3, - 0x0006, 0x0055, 0x0d13, 0x0d13, 0xffff, 0xffff, 0x0d13, 0x0d13, - 0x0006, 0x0055, 0x0d1e, 0x0d1e, 0xffff, 0xffff, 0x0d1e, 0x0d1e, - 0x0003, 0x0000, 0x08df, 0x08e4, 0x0003, 0x0055, 0x0d29, 0x0d46, - 0x0d5b, 0x0002, 0x08e7, 0x08ef, 0x0006, 0x0055, 0x0d96, 0x0d7c, - // Entry 3BFC0 - 3BFFF - 0xffff, 0xffff, 0x0d96, 0x0db0, 0x0006, 0x0055, 0x0de2, 0x0dc8, - 0xffff, 0xffff, 0x0de2, 0x0dfc, 0x0003, 0x0000, 0x08fb, 0x0900, - 0x0003, 0x0055, 0x0e14, 0x0e27, 0x0e37, 0x0002, 0x0903, 0x090b, - 0x0006, 0x0055, 0x0e4a, 0x0e4a, 0xffff, 0xffff, 0x0e4a, 0x0e4a, - 0x0006, 0x0055, 0x0e5f, 0x0e5f, 0xffff, 0xffff, 0x0e5f, 0x0e5f, - 0x0003, 0x0000, 0x0917, 0x091c, 0x0003, 0x0055, 0x0e14, 0x0e27, - 0x0e37, 0x0002, 0x091f, 0x0927, 0x0006, 0x0055, 0x0e74, 0x0e74, - 0xffff, 0xffff, 0x0e74, 0x0e74, 0x0006, 0x0055, 0x0e7f, 0x0e7f, - // Entry 3C000 - 3C03F - 0xffff, 0xffff, 0x0e7f, 0x0e7f, 0x0003, 0x0000, 0x0933, 0x0938, - 0x0003, 0x0055, 0x0e8a, 0x0eab, 0x0ec6, 0x0002, 0x093b, 0x0943, - 0x0006, 0x0055, 0x0f09, 0x0eeb, 0xffff, 0xffff, 0x0f09, 0x0f29, - 0x0006, 0x0055, 0x0f69, 0x0f4b, 0xffff, 0xffff, 0x0f69, 0x0f89, - 0x0003, 0x0000, 0x094f, 0x0954, 0x0003, 0x0055, 0x0fab, 0x0fbe, - 0x0fd0, 0x0002, 0x0957, 0x095f, 0x0006, 0x0055, 0x0fe3, 0x0fe3, - 0xffff, 0xffff, 0x0fe3, 0x0fe3, 0x0006, 0x0055, 0x0ff8, 0x0ff8, - 0xffff, 0xffff, 0x0ff8, 0x0ff8, 0x0003, 0x0000, 0x096b, 0x0970, - // Entry 3C040 - 3C07F - 0x0003, 0x0055, 0x0fab, 0x0fbe, 0x0fd0, 0x0002, 0x0973, 0x097b, - 0x0006, 0x0055, 0x100d, 0x100d, 0xffff, 0xffff, 0x100d, 0x100d, - 0x0006, 0x0055, 0x1018, 0x1018, 0xffff, 0xffff, 0x1018, 0x1018, - 0x0003, 0x0000, 0x0987, 0x098c, 0x0003, 0x0055, 0x1023, 0x1044, - 0x105d, 0x0002, 0x098f, 0x0997, 0x0006, 0x0055, 0x10a0, 0x1082, - 0xffff, 0xffff, 0x10a0, 0x10be, 0x0006, 0x0055, 0x10f8, 0x10da, - 0xffff, 0xffff, 0x10f8, 0x1116, 0x0003, 0x0000, 0x09a3, 0x09a8, - 0x0003, 0x0055, 0x1132, 0x1145, 0x1155, 0x0002, 0x09ab, 0x09b3, - // Entry 3C080 - 3C0BF - 0x0006, 0x0055, 0x1168, 0x1168, 0xffff, 0xffff, 0x1168, 0x1168, - 0x0006, 0x0055, 0x117d, 0x117d, 0xffff, 0xffff, 0x117d, 0x117d, - 0x0003, 0x0000, 0x09bf, 0x09c4, 0x0003, 0x0055, 0x1132, 0x1145, - 0x1155, 0x0002, 0x09c7, 0x09cf, 0x0006, 0x0055, 0x1192, 0x1192, - 0xffff, 0xffff, 0x1192, 0x1192, 0x0006, 0x0055, 0x119d, 0x119d, - 0xffff, 0xffff, 0x119d, 0x119d, 0x0003, 0x0000, 0x09db, 0x09e0, - 0x0003, 0x0055, 0x11a8, 0x11c9, 0x11e2, 0x0002, 0x09e3, 0x09eb, - 0x0006, 0x0055, 0x1225, 0x1207, 0xffff, 0xffff, 0x1225, 0x1243, - // Entry 3C0C0 - 3C0FF - 0x0006, 0x0055, 0x127d, 0x125f, 0xffff, 0xffff, 0x127d, 0x129b, - 0x0003, 0x0000, 0x09f7, 0x09fc, 0x0003, 0x0055, 0x12b7, 0x12ca, - 0x12da, 0x0002, 0x09ff, 0x0a07, 0x0006, 0x0055, 0x12ed, 0x12ed, - 0xffff, 0xffff, 0x12ed, 0x12ed, 0x0006, 0x0055, 0x1302, 0x1302, - 0xffff, 0xffff, 0x1302, 0x1302, 0x0003, 0x0000, 0x0a13, 0x0a18, - 0x0003, 0x0055, 0x12b7, 0x12ca, 0x12da, 0x0002, 0x0a1b, 0x0a23, - 0x0006, 0x0055, 0x1317, 0x1317, 0xffff, 0xffff, 0x1317, 0x1317, - 0x0006, 0x0055, 0x1322, 0x1322, 0xffff, 0xffff, 0x1322, 0x1322, - // Entry 3C100 - 3C13F - 0x0001, 0x0a2d, 0x0001, 0x0014, 0x0531, 0x0003, 0x0a34, 0x0a37, - 0x0a3b, 0x0001, 0x0009, 0x17ad, 0x0002, 0x0055, 0xffff, 0x132d, - 0x0002, 0x0a3e, 0x0a46, 0x0006, 0x0055, 0x1358, 0x1342, 0xffff, - 0xffff, 0x1358, 0x1370, 0x0006, 0x0055, 0x13a0, 0x138a, 0xffff, - 0xffff, 0x13a0, 0x13b8, 0x0003, 0x0a52, 0x0000, 0x0a55, 0x0001, - 0x0055, 0x13d2, 0x0002, 0x0a58, 0x0a60, 0x0006, 0x0055, 0x13ea, - 0x13d6, 0xffff, 0xffff, 0x13ea, 0x13ea, 0x0006, 0x0055, 0x1411, - 0x13fd, 0xffff, 0xffff, 0x1411, 0x1411, 0x0003, 0x0a6c, 0x0000, - // Entry 3C140 - 3C17F - 0x0a6f, 0x0001, 0x000e, 0x0298, 0x0002, 0x0a72, 0x0a7a, 0x0006, - 0x0055, 0x1424, 0x1424, 0xffff, 0xffff, 0x1424, 0x1424, 0x0006, - 0x0055, 0x142d, 0x142d, 0xffff, 0xffff, 0x142d, 0x142d, 0x0003, - 0x0a86, 0x0a89, 0x0a8d, 0x0001, 0x0009, 0x185b, 0x0002, 0x0055, - 0xffff, 0x1436, 0x0002, 0x0a90, 0x0a98, 0x0006, 0x0055, 0x1469, - 0x144d, 0xffff, 0xffff, 0x1469, 0x1485, 0x0006, 0x0055, 0x14bb, - 0x149f, 0xffff, 0xffff, 0x14bb, 0x14d7, 0x0003, 0x0aa4, 0x0000, - 0x0aa7, 0x0001, 0x0011, 0x0ce0, 0x0002, 0x0aaa, 0x0ab2, 0x0006, - // Entry 3C180 - 3C1BF - 0x0055, 0x14f1, 0x14f1, 0xffff, 0xffff, 0x14f1, 0x14f1, 0x0006, - 0x0055, 0x1508, 0x1508, 0xffff, 0xffff, 0x1508, 0x1508, 0x0003, - 0x0abe, 0x0000, 0x0ac1, 0x0001, 0x0009, 0x18ed, 0x0002, 0x0ac4, - 0x0acc, 0x0006, 0x0055, 0x151f, 0x151f, 0xffff, 0xffff, 0x151f, - 0x151f, 0x0006, 0x0055, 0x152c, 0x152c, 0xffff, 0xffff, 0x152c, - 0x152c, 0x0003, 0x0ad8, 0x0adb, 0x0adf, 0x0001, 0x0008, 0x1ca4, - 0x0002, 0x0055, 0xffff, 0x1539, 0x0002, 0x0ae2, 0x0aea, 0x0006, - 0x0055, 0x1564, 0x1546, 0xffff, 0xffff, 0x1564, 0x1582, 0x0006, - // Entry 3C1C0 - 3C1FF - 0x0055, 0x15bc, 0x159e, 0xffff, 0xffff, 0x15bc, 0x15da, 0x0003, - 0x0af6, 0x0000, 0x0af9, 0x0001, 0x0011, 0x0d52, 0x0002, 0x0afc, - 0x0b04, 0x0006, 0x0055, 0x15f6, 0x15f6, 0xffff, 0xffff, 0x15f6, - 0x15f6, 0x0006, 0x0055, 0x160e, 0x160e, 0xffff, 0xffff, 0x160e, - 0x160e, 0x0003, 0x0b10, 0x0000, 0x0b13, 0x0001, 0x000e, 0x01f0, - 0x0002, 0x0b16, 0x0b1e, 0x0006, 0x0055, 0x1625, 0x1625, 0xffff, - 0xffff, 0x1625, 0x1625, 0x0006, 0x0055, 0x1632, 0x1632, 0xffff, - 0xffff, 0x1632, 0x1632, 0x0001, 0x0b28, 0x0001, 0x0055, 0x163f, - // Entry 3C200 - 3C23F - 0x0004, 0x0b30, 0x0b35, 0x0b3a, 0x0b49, 0x0003, 0x0000, 0x1dc7, - 0x3839, 0x3a75, 0x0003, 0x0000, 0x1de0, 0x3a79, 0x3a82, 0x0002, - 0x0000, 0x0b3d, 0x0003, 0x0000, 0x0b44, 0x0b41, 0x0001, 0x0055, - 0x1657, 0x0003, 0x0055, 0xffff, 0x1696, 0x16cc, 0x0002, 0x0000, - 0x0b4c, 0x0003, 0x0b50, 0x0c90, 0x0bf0, 0x009e, 0x0055, 0xffff, - 0xffff, 0xffff, 0xffff, 0x17d1, 0x1867, 0x193f, 0x19ae, 0x1a5c, - 0x1afe, 0x1b85, 0x1c1b, 0x1c92, 0x1dbc, 0x1e5e, 0x1ed3, 0x1f7b, - 0x1fe4, 0x207a, 0x2134, 0x222d, 0x22db, 0x2383, 0x2404, 0x248b, - // Entry 3C240 - 3C27F - 0xffff, 0xffff, 0x251a, 0xffff, 0x25ab, 0xffff, 0x263d, 0x269a, - 0x26f1, 0x274e, 0xffff, 0xffff, 0x27f7, 0x2866, 0x28f2, 0xffff, - 0xffff, 0xffff, 0x2991, 0xffff, 0x2a0f, 0x2ab7, 0xffff, 0x2b6d, - 0x2c03, 0x2ca2, 0xffff, 0xffff, 0xffff, 0xffff, 0x2daa, 0xffff, - 0xffff, 0x2e56, 0x2f08, 0xffff, 0xffff, 0x2fec, 0x309d, 0x3106, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x320d, 0x3264, - 0x32cd, 0x3336, 0x3399, 0xffff, 0xffff, 0x34af, 0xffff, 0x3519, - 0xffff, 0xffff, 0x35c8, 0xffff, 0x36a2, 0xffff, 0xffff, 0xffff, - // Entry 3C280 - 3C2BF - 0xffff, 0x376e, 0xffff, 0x37ea, 0x38d4, 0x39b5, 0x3a2d, 0xffff, - 0xffff, 0xffff, 0x3ab3, 0x3b49, 0x3bd9, 0xffff, 0xffff, 0x3c78, - 0x3d51, 0x3dd2, 0x3e29, 0xffff, 0xffff, 0x3eca, 0x3f39, 0x3f90, - 0xffff, 0x401a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x417b, - 0x41e4, 0x425f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x4354, 0xffff, 0xffff, 0x43e3, 0xffff, 0x4449, 0xffff, - 0x44cb, 0x4534, 0x45af, 0xffff, 0x462b, 0x46ac, 0xffff, 0xffff, - 0xffff, 0x4754, 0x47b7, 0xffff, 0xffff, 0x1700, 0x18ca, 0x1ce9, - // Entry 3C2C0 - 3C2FF - 0x1d50, 0xffff, 0xffff, 0x3634, 0x40e7, 0x009e, 0x0055, 0x1760, - 0x1775, 0x1799, 0x17b9, 0x17ef, 0x1874, 0x1950, 0x19d4, 0x1a7e, - 0x1b1f, 0x1bab, 0x1c3a, 0x1c9b, 0x1dde, 0x1e71, 0x1ef7, 0x1f8a, - 0x200a, 0x20a4, 0x217b, 0x2253, 0x22ff, 0x239a, 0x241d, 0x249e, - 0x2500, 0x250b, 0x252b, 0x2589, 0x25bf, 0x262e, 0x2648, 0x26a3, - 0x26fc, 0x2761, 0x27c3, 0x27dc, 0x2808, 0x287e, 0x28fb, 0x2949, - 0x2956, 0x2973, 0x29a2, 0x2a00, 0x2a33, 0x2ad7, 0x2b53, 0x2b8b, - 0x2c24, 0x2cad, 0x2cff, 0x2d23, 0x2d7a, 0x2d9d, 0x2db7, 0x2e0d, - // Entry 3C300 - 3C33F - 0x2e26, 0x2e7e, 0x2f2e, 0x2fbf, 0x2fdf, 0x301b, 0x30ac, 0x310f, - 0x315d, 0x3168, 0x3186, 0x3199, 0x31c3, 0x31e9, 0x3216, 0x3273, - 0x32dc, 0x3343, 0x33c9, 0x3465, 0x348b, 0x34ba, 0x350c, 0x352e, - 0x3594, 0x35b7, 0x35d8, 0x3691, 0x36b1, 0x370b, 0x371c, 0x372d, - 0x374a, 0x377f, 0x37dd, 0x382c, 0x3913, 0x39c9, 0x3a3a, 0x3a90, - 0x3a9d, 0x3aa8, 0x3ad1, 0x3b65, 0x3bf2, 0x3c60, 0x3c69, 0x3c9d, - 0x3d68, 0x3ddb, 0x3e3a, 0x3e98, 0x3ea3, 0x3edb, 0x3f42, 0x3fa3, - 0x4005, 0x403c, 0x40bc, 0x40cb, 0x40d8, 0x415f, 0x416e, 0x418a, - // Entry 3C340 - 3C37F - 0x41ff, 0x426a, 0x42bc, 0x42e2, 0x42f3, 0x4317, 0x4331, 0x4340, - 0x4349, 0x4363, 0x43bd, 0x43d4, 0x43ee, 0x4440, 0x445c, 0x44be, - 0x44da, 0x4549, 0x45be, 0x4618, 0x4642, 0x46bf, 0x4721, 0x472e, - 0x4737, 0x4761, 0x47d0, 0x2fb6, 0x3d23, 0x1714, 0x18e5, 0x1cff, - 0x1d68, 0x2623, 0x35a5, 0x363f, 0x40fb, 0x009e, 0x0055, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1830, 0x18a4, 0x1984, 0x1a1d, 0x1ac3, - 0x1b57, 0x1be8, 0x1c6b, 0x1cc7, 0x1e23, 0x1ea7, 0x1f3e, 0x1fbc, - 0x2047, 0x20f1, 0x21d9, 0x229c, 0x2346, 0x23d4, 0x2459, 0x24d4, - // Entry 3C380 - 3C3BF - 0xffff, 0xffff, 0x255f, 0xffff, 0x25f6, 0xffff, 0x2676, 0x26cf, - 0x272a, 0x2797, 0xffff, 0xffff, 0x283c, 0x28b9, 0x2927, 0xffff, - 0xffff, 0xffff, 0x29d6, 0xffff, 0x2a7a, 0x2b1a, 0xffff, 0x2bcc, - 0x2c68, 0x2cdb, 0xffff, 0xffff, 0xffff, 0xffff, 0x2de7, 0xffff, - 0xffff, 0x2ec7, 0x2f77, 0xffff, 0xffff, 0x3061, 0x30de, 0x313b, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3242, 0x32a5, - 0x330e, 0x3373, 0x341c, 0xffff, 0xffff, 0x34e8, 0xffff, 0x3566, - 0xffff, 0xffff, 0x360b, 0xffff, 0x36e3, 0xffff, 0xffff, 0xffff, - // Entry 3C3C0 - 3C3FF - 0xffff, 0x37b3, 0xffff, 0x3885, 0x3969, 0x3a00, 0x3a6a, 0xffff, - 0xffff, 0xffff, 0x3b12, 0x3ba4, 0x3c2e, 0xffff, 0xffff, 0x3ce5, - 0x3da2, 0x3e07, 0x3e6e, 0xffff, 0xffff, 0x3f0f, 0x3f6e, 0x3fd9, - 0xffff, 0x4081, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x41bc, - 0x4234, 0x4298, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x4395, 0xffff, 0xffff, 0x441c, 0xffff, 0x4492, 0xffff, - 0x450c, 0x4581, 0x45f0, 0xffff, 0x467c, 0x46f5, 0xffff, 0xffff, - 0xffff, 0x4791, 0x480c, 0xffff, 0xffff, 0x173f, 0x1917, 0x1d2d, - // Entry 3C400 - 3C43F - 0x1d97, 0xffff, 0xffff, 0x366d, 0x4132, 0x0001, 0x0002, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0025, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, - 0x0000, 0x0004, 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0008, 0x0000, 0x0000, 0x0000, 0x002e, 0x0000, - 0x0000, 0x0087, 0x0000, 0x0002, 0x0031, 0x0068, 0x0003, 0x0035, - 0x003e, 0x005f, 0x0002, 0x0038, 0x003b, 0x0001, 0x0000, 0x04ef, - // Entry 3C440 - 3C47F - 0x0001, 0x0000, 0x04f2, 0x0008, 0x004a, 0x0050, 0x0047, 0x0053, - 0x0056, 0x0059, 0x005c, 0x004d, 0x0001, 0x0045, 0x0c79, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0054, 0x04e7, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x0054, 0x04f1, 0x0001, 0x0054, 0x04fa, 0x0001, 0x0045, - 0x0c96, 0x0001, 0x0054, 0x050e, 0x0002, 0x0062, 0x0065, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x006c, 0x0075, - 0x007e, 0x0002, 0x006f, 0x0072, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x0078, 0x007b, 0x0001, 0x0000, 0x04ef, - // Entry 3C480 - 3C4BF - 0x0001, 0x0000, 0x04f2, 0x0002, 0x0081, 0x0084, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0004, 0x0095, 0x008f, 0x008c, - 0x0092, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0004, 0x0000, - 0x01a3, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x0025, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0014, 0x0004, 0x0022, 0x001c, 0x0019, 0x001f, 0x0001, 0x0002, - 0x028a, 0x0001, 0x0000, 0x049a, 0x0001, 0x0000, 0x04a5, 0x0001, - // Entry 3C4C0 - 3C4FF - 0x0002, 0x029c, 0x0008, 0x002e, 0x0093, 0x00ea, 0x011f, 0x0160, - 0x0170, 0x0181, 0x0192, 0x0002, 0x0031, 0x0062, 0x0003, 0x0035, - 0x0044, 0x0053, 0x000d, 0x0056, 0xffff, 0x0000, 0x0005, 0x000a, - 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, 0x0028, 0x002d, 0x0032, - 0x0037, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x000d, 0x0056, 0xffff, 0x003c, 0x0045, 0x0051, 0x0059, 0x005e, - 0x0068, 0x006f, 0x0078, 0x007f, 0x0085, 0x008e, 0x0099, 0x0003, - // Entry 3C500 - 3C53F - 0x0066, 0x0075, 0x0084, 0x000d, 0x0056, 0xffff, 0x0000, 0x0005, - 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, 0x0028, 0x002d, - 0x0032, 0x0037, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x000d, 0x0056, 0xffff, 0x003c, 0x0045, 0x0051, 0x0059, - 0x005e, 0x0068, 0x006f, 0x0078, 0x007f, 0x0085, 0x008e, 0x0099, - 0x0002, 0x0096, 0x00c0, 0x0005, 0x009c, 0x00a5, 0x00b7, 0x0000, - 0x00ae, 0x0007, 0x0056, 0x00a1, 0x00a6, 0x00ab, 0x00b0, 0x0023, - // Entry 3C540 - 3C57F - 0x00b5, 0x00ba, 0x0007, 0x0000, 0x298e, 0x297a, 0x38ae, 0x2159, - 0x38ae, 0x298c, 0x298e, 0x0007, 0x0056, 0x00a1, 0x00a6, 0x00ab, - 0x00b0, 0x0023, 0x00b5, 0x00ba, 0x0007, 0x0056, 0x00bf, 0x00cb, - 0x00d6, 0x00e2, 0x00ee, 0x00f8, 0x0104, 0x0005, 0x00c6, 0x00cf, - 0x00e1, 0x0000, 0x00d8, 0x0007, 0x0056, 0x00a1, 0x00a6, 0x00ab, - 0x00b0, 0x0023, 0x00b5, 0x00ba, 0x0007, 0x0000, 0x298e, 0x297a, - 0x38ae, 0x2159, 0x38ae, 0x298c, 0x298e, 0x0007, 0x0056, 0x00a1, - 0x00a6, 0x00ab, 0x00b0, 0x0023, 0x00b5, 0x00ba, 0x0007, 0x0056, - // Entry 3C580 - 3C5BF - 0x00bf, 0x00cb, 0x00d6, 0x00e2, 0x00ee, 0x00f8, 0x0104, 0x0002, - 0x00ed, 0x0106, 0x0003, 0x00f1, 0x00f8, 0x00ff, 0x0005, 0x0053, - 0xffff, 0x03d2, 0x03d5, 0x03d8, 0x03db, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0056, 0xffff, 0x0113, - 0x0127, 0x013c, 0x0151, 0x0003, 0x010a, 0x0111, 0x0118, 0x0005, - 0x0053, 0xffff, 0x03d2, 0x03d5, 0x03d8, 0x03db, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0056, 0xffff, - 0x0113, 0x0127, 0x013c, 0x0151, 0x0002, 0x0122, 0x0141, 0x0003, - // Entry 3C5C0 - 3C5FF - 0x0126, 0x012f, 0x0138, 0x0002, 0x0129, 0x012c, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x0132, 0x0135, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x013b, 0x013e, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x0145, - 0x014e, 0x0157, 0x0002, 0x0148, 0x014b, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0002, 0x0151, 0x0154, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x015a, 0x015d, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0003, 0x016a, 0x0000, - // Entry 3C600 - 3C63F - 0x0164, 0x0001, 0x0166, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0001, - 0x016c, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x017e, 0x0178, - 0x0175, 0x017b, 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, - 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x018f, - 0x0189, 0x0186, 0x018c, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x01a0, 0x019a, 0x0197, 0x019d, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 3C640 - 3C67F - 0x0004, 0x01a8, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x1dc7, - 0x3839, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, - 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, - 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, - 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, - // Entry 3C680 - 3C6BF - 0x0005, 0xffff, 0x0636, 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, - 0x22d4, 0x22d8, 0x22dc, 0x234a, 0x22e0, 0x21e2, 0x000d, 0x0005, - 0xffff, 0x0666, 0x066e, 0x2441, 0x22ea, 0x2386, 0x22f2, 0x22f8, - 0x22ff, 0x2447, 0x23ab, 0x2450, 0x23ba, 0x0002, 0x0000, 0x0057, - 0x000d, 0x0000, 0xffff, 0x2483, 0x298c, 0x297a, 0x2980, 0x297a, - 0x2483, 0x2483, 0x2980, 0x298e, 0x2990, 0x297e, 0x297c, 0x0002, - 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, 0x0007, 0x0005, - 0x06b6, 0x2458, 0x245c, 0x2460, 0x2464, 0x2468, 0x246c, 0x0007, - // Entry 3C6C0 - 3C6FF - 0x0036, 0x0313, 0x031d, 0x67ca, 0x032f, 0x67d2, 0x67db, 0x67e2, - 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, 0x2483, 0x2483, 0x2483, - 0x2483, 0x2980, 0x2055, 0x2483, 0x0001, 0x008d, 0x0003, 0x0091, - 0x0000, 0x0098, 0x0005, 0x0005, 0xffff, 0x070e, 0x0711, 0x0714, - 0x0717, 0x0005, 0x0005, 0xffff, 0x071a, 0x0721, 0x0728, 0x072f, - 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, - 0x00ab, 0x0001, 0x0036, 0x0351, 0x0001, 0x0036, 0x0357, 0x0002, - 0x00b1, 0x00b4, 0x0001, 0x0036, 0x0351, 0x0001, 0x0036, 0x0357, - // Entry 3C700 - 3C73F - 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0036, - 0x0361, 0x0371, 0x0001, 0x00c3, 0x0002, 0x0016, 0x01fb, 0x01fe, - 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, 0x0005, 0x0773, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, - 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, - // Entry 3C740 - 3C77F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, - 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, - 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, 0x0001, 0x0036, 0x0381, - 0x0001, 0x0131, 0x0001, 0x0036, 0x0387, 0x0001, 0x0136, 0x0001, - // Entry 3C780 - 3C7BF - 0x0016, 0x0207, 0x0001, 0x013b, 0x0001, 0x0036, 0x038c, 0x0002, - 0x0141, 0x0144, 0x0001, 0x0036, 0x0393, 0x0003, 0x0036, 0x0399, - 0x039e, 0x03a2, 0x0001, 0x014b, 0x0001, 0x0036, 0x03a8, 0x0001, - 0x0150, 0x0001, 0x0009, 0x0308, 0x0001, 0x0155, 0x0001, 0x0036, - 0x03b5, 0x0001, 0x015a, 0x0001, 0x0009, 0x030c, 0x0001, 0x015f, - 0x0001, 0x0036, 0x03bd, 0x0003, 0x0004, 0x01c0, 0x046c, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, - // Entry 3C7C0 - 3C7FF - 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0056, - 0x0164, 0x0001, 0x0046, 0x0012, 0x0001, 0x0046, 0x001e, 0x0001, - 0x0056, 0x0189, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, - 0x0173, 0x018d, 0x019e, 0x01af, 0x0002, 0x0044, 0x0075, 0x0003, - 0x0048, 0x0057, 0x0066, 0x000d, 0x0056, 0xffff, 0x0196, 0x019f, - 0x01a8, 0x01af, 0x01b6, 0x01bd, 0x01c4, 0x01cb, 0x01d2, 0x01d9, - // Entry 3C800 - 3C83F - 0x01e0, 0x01e7, 0x000d, 0x0037, 0xffff, 0x13d7, 0x2023, 0x2026, - 0x2029, 0x202c, 0x1597, 0x2023, 0x202f, 0x1597, 0x202f, 0x2032, - 0x202f, 0x000d, 0x0056, 0xffff, 0x01ee, 0x0201, 0x0210, 0x0226, - 0x023a, 0x024a, 0x025a, 0x0268, 0x0282, 0x029a, 0x02ab, 0x02bc, - 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0056, 0xffff, 0x0196, - 0x019f, 0x01a8, 0x01af, 0x01b6, 0x01bd, 0x01c4, 0x01cb, 0x01d2, - 0x01d9, 0x01e0, 0x01e7, 0x000d, 0x0037, 0xffff, 0x13d7, 0x2023, - 0x2026, 0x2029, 0x202c, 0x1597, 0x2023, 0x202f, 0x1597, 0x202f, - // Entry 3C840 - 3C87F - 0x2032, 0x202f, 0x000d, 0x0056, 0xffff, 0x02cd, 0x02e0, 0x02ef, - 0x0305, 0x0319, 0x0327, 0x0335, 0x0341, 0x0359, 0x036f, 0x0380, - 0x02bc, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, - 0x0000, 0x00c1, 0x0007, 0x0056, 0x0391, 0x0396, 0x039b, 0x03a0, - 0x03a5, 0x03aa, 0x03af, 0x0007, 0x0037, 0x1597, 0x1597, 0x2023, - 0x2032, 0x2035, 0x1597, 0x2032, 0x0007, 0x0056, 0x0391, 0x0396, - 0x039b, 0x03a0, 0x03a5, 0x03aa, 0x03af, 0x0007, 0x0056, 0x03b4, - 0x03cd, 0x03e6, 0x03ff, 0x040c, 0x041b, 0x042c, 0x0005, 0x00d9, - // Entry 3C880 - 3C8BF - 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0056, 0x0391, 0x0396, - 0x039b, 0x03a0, 0x03a5, 0x03aa, 0x03af, 0x0007, 0x0037, 0x1597, - 0x1597, 0x2023, 0x2032, 0x2035, 0x1597, 0x2032, 0x0007, 0x0056, - 0x0391, 0x0396, 0x039b, 0x03a0, 0x03a5, 0x03aa, 0x03af, 0x0007, - 0x0056, 0x03b4, 0x03cd, 0x03e6, 0x03ff, 0x040c, 0x041b, 0x042c, - 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, - 0x0056, 0xffff, 0x043b, 0x0447, 0x0451, 0x045b, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0056, 0xffff, - // Entry 3C8C0 - 3C8FF - 0x0465, 0x047f, 0x0497, 0x04af, 0x0003, 0x011d, 0x0124, 0x012b, - 0x0005, 0x0056, 0xffff, 0x043b, 0x0447, 0x0451, 0x045b, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0056, - 0xffff, 0x0465, 0x047f, 0x0497, 0x04af, 0x0002, 0x0135, 0x0154, - 0x0003, 0x0139, 0x0142, 0x014b, 0x0002, 0x013c, 0x013f, 0x0001, - 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0002, 0x0145, 0x0148, - 0x0001, 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0002, 0x014e, - 0x0151, 0x0001, 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0003, - // Entry 3C900 - 3C93F - 0x0158, 0x0161, 0x016a, 0x0002, 0x015b, 0x015e, 0x0001, 0x0056, - 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0002, 0x0164, 0x0167, 0x0001, - 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0002, 0x016d, 0x0170, - 0x0001, 0x0056, 0x04c7, 0x0001, 0x0056, 0x04cc, 0x0003, 0x0182, - 0x0000, 0x0177, 0x0002, 0x017a, 0x017e, 0x0002, 0x0056, 0x04d1, - 0x0506, 0x0002, 0x0056, 0x04dd, 0x050d, 0x0002, 0x0185, 0x0189, - 0x0002, 0x0056, 0x04d1, 0x0506, 0x0002, 0x0000, 0x04f5, 0x04f9, - 0x0004, 0x019b, 0x0195, 0x0192, 0x0198, 0x0001, 0x0056, 0x0529, - // Entry 3C940 - 3C97F - 0x0001, 0x0046, 0x05ce, 0x0001, 0x0046, 0x05d8, 0x0001, 0x001f, - 0x1e54, 0x0004, 0x01ac, 0x01a6, 0x01a3, 0x01a9, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x01bd, 0x01b7, 0x01b4, 0x01ba, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0040, 0x0201, 0x0000, 0x0000, 0x0206, - 0x0000, 0x0000, 0x021b, 0x0230, 0x0240, 0x0250, 0x0000, 0x0000, - 0x0265, 0x027e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0286, 0x0000, - // Entry 3C980 - 3C9BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x029d, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x02a2, 0x02b4, 0x02c6, 0x02d8, 0x02ea, 0x02fc, - 0x030e, 0x0320, 0x0332, 0x0344, 0x0356, 0x0368, 0x037a, 0x038c, - 0x039e, 0x03b0, 0x03c2, 0x03d4, 0x03e6, 0x03f8, 0x040a, 0x0000, - 0x041c, 0x0000, 0x0421, 0x0000, 0x0000, 0x0435, 0x0000, 0x0000, - 0x0449, 0x045d, 0x0000, 0x0467, 0x0001, 0x0203, 0x0001, 0x0056, - 0x054c, 0x0003, 0x020a, 0x020d, 0x0212, 0x0001, 0x0056, 0x0555, - 0x0003, 0x0056, 0x055c, 0x056d, 0x0578, 0x0002, 0x0215, 0x0218, - // Entry 3C9C0 - 3C9FF - 0x0001, 0x0056, 0x0583, 0x0001, 0x0056, 0x0596, 0x0003, 0x021f, - 0x0222, 0x0227, 0x0001, 0x0056, 0x05bd, 0x0003, 0x0056, 0x05cc, - 0x05ec, 0x0604, 0x0002, 0x022a, 0x022d, 0x0001, 0x0056, 0x0622, - 0x0001, 0x0056, 0x0641, 0x0003, 0x0234, 0x0000, 0x0237, 0x0001, - 0x0056, 0x0674, 0x0002, 0x023a, 0x023d, 0x0001, 0x0056, 0x0622, - 0x0001, 0x0056, 0x067c, 0x0003, 0x0244, 0x0000, 0x0247, 0x0001, - 0x0056, 0x0674, 0x0002, 0x024a, 0x024d, 0x0001, 0x0056, 0x0622, - 0x0001, 0x0056, 0x067c, 0x0003, 0x0254, 0x0257, 0x025c, 0x0001, - // Entry 3CA00 - 3CA3F - 0x0056, 0x06a4, 0x0003, 0x0056, 0x06a9, 0x06bb, 0x06c5, 0x0002, - 0x025f, 0x0262, 0x0001, 0x0056, 0x06db, 0x0001, 0x0056, 0x06ec, - 0x0004, 0x026a, 0x026d, 0x0272, 0x027b, 0x0001, 0x0056, 0x0711, - 0x0003, 0x0056, 0x0720, 0x073c, 0x0750, 0x0002, 0x0275, 0x0278, - 0x0001, 0x0056, 0x076a, 0x0001, 0x0056, 0x0785, 0x0001, 0x0056, - 0x07b4, 0x0004, 0x0000, 0x0000, 0x0000, 0x0283, 0x0001, 0x0056, - 0x07b4, 0x0003, 0x028a, 0x028d, 0x0294, 0x0001, 0x0056, 0x07cb, - 0x0005, 0x0056, 0x07e8, 0x07f7, 0x0802, 0x07d2, 0x080f, 0x0002, - // Entry 3CA40 - 3CA7F - 0x0297, 0x029a, 0x0001, 0x0056, 0x081a, 0x0001, 0x0056, 0x082d, - 0x0001, 0x029f, 0x0001, 0x0056, 0x0854, 0x0003, 0x0000, 0x02a6, - 0x02ab, 0x0003, 0x0056, 0x086c, 0x0892, 0x08b0, 0x0002, 0x02ae, - 0x02b1, 0x0001, 0x0056, 0x08d4, 0x0001, 0x0056, 0x08f7, 0x0003, - 0x0000, 0x02b8, 0x02bd, 0x0003, 0x0056, 0x0930, 0x0943, 0x094e, - 0x0002, 0x02c0, 0x02c3, 0x0001, 0x0056, 0x08d4, 0x0001, 0x0056, - 0x095f, 0x0003, 0x0000, 0x02ca, 0x02cf, 0x0003, 0x0056, 0x0930, - 0x0943, 0x094e, 0x0002, 0x02d2, 0x02d5, 0x0001, 0x0056, 0x08d4, - // Entry 3CA80 - 3CABF - 0x0001, 0x0056, 0x095f, 0x0003, 0x0000, 0x02dc, 0x02e1, 0x0003, - 0x0056, 0x0985, 0x09ab, 0x09c9, 0x0002, 0x02e4, 0x02e7, 0x0001, - 0x0056, 0x09ed, 0x0001, 0x0056, 0x0a12, 0x0003, 0x0000, 0x02ee, - 0x02f3, 0x0003, 0x0056, 0x0a4b, 0x0a5e, 0x0a69, 0x0002, 0x02f6, - 0x02f9, 0x0001, 0x0056, 0x09ed, 0x0001, 0x0056, 0x0a7a, 0x0003, - 0x0000, 0x0300, 0x0305, 0x0003, 0x0056, 0x0a4b, 0x0a5e, 0x0a69, - 0x0002, 0x0308, 0x030b, 0x0001, 0x0056, 0x09ed, 0x0001, 0x0056, - 0x0a7a, 0x0003, 0x0000, 0x0312, 0x0317, 0x0003, 0x0056, 0x0aa0, - // Entry 3CAC0 - 3CAFF - 0x0ac6, 0x0ae4, 0x0002, 0x031a, 0x031d, 0x0001, 0x0056, 0x0b08, - 0x0001, 0x0056, 0x0b2d, 0x0003, 0x0000, 0x0324, 0x0329, 0x0003, - 0x0056, 0x0b66, 0x0b79, 0x0b84, 0x0002, 0x032c, 0x032f, 0x0001, - 0x0056, 0x0b08, 0x0001, 0x0056, 0x0b95, 0x0003, 0x0000, 0x0336, - 0x033b, 0x0003, 0x0056, 0x0b66, 0x0b79, 0x0b84, 0x0002, 0x033e, - 0x0341, 0x0001, 0x0056, 0x0b08, 0x0001, 0x0056, 0x0b95, 0x0003, - 0x0000, 0x0348, 0x034d, 0x0003, 0x0056, 0x0bbb, 0x0bd5, 0x0be7, - 0x0002, 0x0350, 0x0353, 0x0001, 0x0056, 0x0bff, 0x0001, 0x0056, - // Entry 3CB00 - 3CB3F - 0x0c16, 0x0003, 0x0000, 0x035a, 0x035f, 0x0003, 0x0056, 0x0c43, - 0x0c56, 0x0c61, 0x0002, 0x0362, 0x0365, 0x0001, 0x0056, 0x0bff, - 0x0001, 0x0056, 0x0c72, 0x0003, 0x0000, 0x036c, 0x0371, 0x0003, - 0x0056, 0x0c43, 0x0c56, 0x0c61, 0x0002, 0x0374, 0x0377, 0x0001, - 0x0056, 0x0bff, 0x0001, 0x0056, 0x0c72, 0x0003, 0x0000, 0x037e, - 0x0383, 0x0003, 0x0056, 0x0c98, 0x0cb4, 0x0cc8, 0x0002, 0x0386, - 0x0389, 0x0001, 0x0056, 0x0ce2, 0x0001, 0x0056, 0x0cfd, 0x0003, - 0x0000, 0x0390, 0x0395, 0x0003, 0x0056, 0x0d2c, 0x0d3f, 0x0d4a, - // Entry 3CB40 - 3CB7F - 0x0002, 0x0398, 0x039b, 0x0001, 0x0056, 0x0ce2, 0x0001, 0x0056, - 0x0d5b, 0x0003, 0x0000, 0x03a2, 0x03a7, 0x0003, 0x0056, 0x0d2c, - 0x0d3f, 0x0d4a, 0x0002, 0x03aa, 0x03ad, 0x0001, 0x0056, 0x0ce2, - 0x0001, 0x0056, 0x0d5b, 0x0003, 0x0000, 0x03b4, 0x03b9, 0x0003, - 0x0056, 0x0d81, 0x0d9f, 0x0db5, 0x0002, 0x03bc, 0x03bf, 0x0001, - 0x0056, 0x0dd1, 0x0001, 0x0056, 0x0dec, 0x0003, 0x0000, 0x03c6, - 0x03cb, 0x0003, 0x0056, 0x0e1d, 0x0e30, 0x0e3b, 0x0002, 0x03ce, - 0x03d1, 0x0001, 0x0056, 0x0dd1, 0x0001, 0x0056, 0x0e4c, 0x0003, - // Entry 3CB80 - 3CBBF - 0x0000, 0x03d8, 0x03dd, 0x0003, 0x0056, 0x0e1d, 0x0e30, 0x0e3b, - 0x0002, 0x03e0, 0x03e3, 0x0001, 0x0056, 0x0dd1, 0x0001, 0x0056, - 0x0e4c, 0x0003, 0x0000, 0x03ea, 0x03ef, 0x0003, 0x0056, 0x0e72, - 0x0e8e, 0x0ea2, 0x0002, 0x03f2, 0x03f5, 0x0001, 0x0056, 0x0ebc, - 0x0001, 0x0056, 0x0ed5, 0x0003, 0x0000, 0x03fc, 0x0401, 0x0003, - 0x0056, 0x0f04, 0x0f17, 0x0f22, 0x0002, 0x0404, 0x0407, 0x0001, - 0x0056, 0x0ebc, 0x0001, 0x0056, 0x0f33, 0x0003, 0x0000, 0x040e, - 0x0413, 0x0003, 0x0056, 0x0f04, 0x0f17, 0x0f22, 0x0002, 0x0416, - // Entry 3CBC0 - 3CBFF - 0x0419, 0x0001, 0x0056, 0x0ebc, 0x0001, 0x0056, 0x0f33, 0x0001, - 0x041e, 0x0001, 0x0056, 0x0f59, 0x0003, 0x0425, 0x0428, 0x042c, - 0x0001, 0x0056, 0x0f63, 0x0002, 0x0056, 0xffff, 0x0f6c, 0x0002, - 0x042f, 0x0432, 0x0001, 0x0056, 0x0f7e, 0x0001, 0x0056, 0x0f93, - 0x0003, 0x0439, 0x043c, 0x0440, 0x0001, 0x0056, 0x0fbc, 0x0002, - 0x0056, 0xffff, 0x0fcb, 0x0002, 0x0443, 0x0446, 0x0001, 0x0056, - 0x0fe3, 0x0001, 0x0056, 0x0ffe, 0x0003, 0x044d, 0x0450, 0x0454, - 0x0001, 0x0056, 0x102d, 0x0002, 0x0056, 0xffff, 0x103e, 0x0002, - // Entry 3CC00 - 3CC3F - 0x0457, 0x045a, 0x0001, 0x0056, 0x104d, 0x0001, 0x0056, 0x106a, - 0x0003, 0x0000, 0x0000, 0x0461, 0x0002, 0x0000, 0x0464, 0x0001, - 0x0056, 0x109b, 0x0001, 0x0469, 0x0001, 0x0056, 0x10c3, 0x0004, - 0x0000, 0x0000, 0x0000, 0x0471, 0x0002, 0x0000, 0x0474, 0x0003, - 0x0478, 0x05a4, 0x050e, 0x0094, 0x0056, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x10db, 0xffff, 0xffff, 0x1131, 0xffff, 0x118d, - 0xffff, 0x1216, 0x129f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3CC40 - 3CC7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x132e, 0x1384, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x13f2, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x147d, 0xffff, 0xffff, 0x14d3, - 0xffff, 0xffff, 0xffff, 0x158b, 0xffff, 0x15e7, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1685, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3CC80 - 3CCBF - 0xffff, 0xffff, 0xffff, 0x16ed, 0x1764, 0xffff, 0xffff, 0xffff, - 0xffff, 0x17c6, 0xffff, 0xffff, 0xffff, 0xffff, 0x1845, 0x18cb, - 0x1927, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1995, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x19fd, 0x1a83, 0xffff, 0xffff, 0xffff, 0x1af1, - 0x1b65, 0x0094, 0x0056, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3CCC0 - 3CCFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x10ef, 0xffff, 0xffff, 0x1147, 0xffff, 0x11b2, 0xffff, 0x123b, - 0x12c6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1342, 0x13a0, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x140c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x145a, 0xffff, 0xffff, 0xffff, - // Entry 3CD00 - 3CD3F - 0xffff, 0xffff, 0x1491, 0xffff, 0xffff, 0x14ed, 0xffff, 0x153b, - 0x1562, 0x15a1, 0xffff, 0x1609, 0x1667, 0xffff, 0xffff, 0xffff, - 0x169f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x170c, 0x177c, 0xffff, 0xffff, 0xffff, 0xffff, 0x17e9, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1869, 0x18e1, 0x1943, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x19af, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3CD40 - 3CD7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1a1d, 0x1a9f, 0xffff, 0xffff, 0xffff, 0x1b0f, 0x1b87, 0x0094, - 0x0056, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x110e, 0xffff, - 0xffff, 0x1168, 0xffff, 0x11e2, 0xffff, 0x126b, 0x12f8, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1361, 0x13c7, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3CD80 - 3CDBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1431, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x14b0, 0xffff, 0xffff, 0x1512, 0xffff, 0xffff, 0xffff, 0x15c2, - 0xffff, 0x1636, 0xffff, 0xffff, 0xffff, 0xffff, 0x16c4, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1736, - 0x179f, 0xffff, 0xffff, 0xffff, 0xffff, 0x1815, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1898, 0x1902, 0x196a, 0xffff, 0xffff, 0xffff, - // Entry 3CDC0 - 3CDFF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x19d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1a4e, 0x1ac6, - 0xffff, 0xffff, 0xffff, 0x1b38, 0x1bb4, 0x0002, 0x0003, 0x00e9, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - // Entry 3CE00 - 3CE3F - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, - 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - 0x0036, 0x0000, 0x0045, 0x000d, 0x0056, 0xffff, 0x1be5, 0x1be9, - 0x1bed, 0x1bf1, 0x1bf5, 0x1bf9, 0x1bfd, 0x1c01, 0x1c05, 0x1c09, - 0x1c0d, 0x1c11, 0x000d, 0x0056, 0xffff, 0x1c15, 0x1c21, 0x1c2f, - 0x1c3d, 0x1c4f, 0x1c5c, 0x1c68, 0x1c75, 0x1c83, 0x1c90, 0x1c9e, - 0x1cb0, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2990, - // Entry 3CE40 - 3CE7F - 0x2159, 0x2990, 0x2990, 0x2055, 0x2055, 0x298e, 0x2055, 0x298e, - 0x38ae, 0x38ae, 0x38ae, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, - 0x0000, 0x0076, 0x0007, 0x0056, 0x1cc4, 0x1cc8, 0x1bf1, 0x1ccc, - 0x1bf9, 0x1bfd, 0x1cd0, 0x0007, 0x0056, 0x1cd4, 0x1ce2, 0x1cf1, - 0x1d05, 0x1d14, 0x1d22, 0x1d31, 0x0002, 0x0000, 0x0082, 0x0007, - 0x0000, 0x2980, 0x25bc, 0x2990, 0x2055, 0x2055, 0x298e, 0x25bc, - 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0005, - 0xffff, 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0005, 0xffff, - // Entry 3CE80 - 3CEBF - 0x071a, 0x0721, 0x0728, 0x072f, 0x0001, 0x00a1, 0x0003, 0x00a5, - 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0056, 0x1d3f, - 0x0001, 0x0056, 0x1d47, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0056, - 0x1d3f, 0x0001, 0x0056, 0x1d47, 0x0003, 0x00c1, 0x0000, 0x00bb, - 0x0001, 0x00bd, 0x0002, 0x0056, 0x1d4d, 0x1d5e, 0x0001, 0x00c3, - 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0004, 0x00d5, 0x00cf, 0x00cc, - 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, - // Entry 3CEC0 - 3CEFF - 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, - 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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 3CF00 - 3CF3F - 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, - 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, - 0x012c, 0x0001, 0x0056, 0x1d6f, 0x0001, 0x0131, 0x0001, 0x0056, - 0x1d77, 0x0001, 0x0136, 0x0001, 0x0056, 0x1d7c, 0x0001, 0x013b, - 0x0001, 0x0056, 0x1d81, 0x0002, 0x0141, 0x0144, 0x0001, 0x0056, - 0x1d8c, 0x0003, 0x0056, 0x1d92, 0x1d9b, 0x1d9f, 0x0001, 0x014b, - 0x0001, 0x0056, 0x1da7, 0x0001, 0x0150, 0x0001, 0x0056, 0x1dad, - 0x0001, 0x0155, 0x0001, 0x0056, 0x1db2, 0x0001, 0x015a, 0x0001, - // Entry 3CF40 - 3CF7F - 0x0056, 0x1dba, 0x0001, 0x015f, 0x0001, 0x0016, 0x022e, 0x0002, - 0x0003, 0x00d6, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, - 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0053, - 0x0078, 0x008c, 0x00a4, 0x00b4, 0x00c5, 0x0000, 0x0001, 0x0031, - 0x0003, 0x0035, 0x0000, 0x0044, 0x000d, 0x0056, 0xffff, 0x1dc3, - // Entry 3CF80 - 3CFBF - 0x1dc7, 0x1dcb, 0x1dcf, 0x1dd3, 0x1dd7, 0x1ddb, 0x1ddf, 0x1de3, - 0x1de7, 0x1deb, 0x1def, 0x000d, 0x0056, 0xffff, 0x1df3, 0x1e00, - 0x1e08, 0x1e11, 0x1e17, 0x1e27, 0x1e2f, 0x1e39, 0x1e42, 0x1e4b, - 0x1e51, 0x1e60, 0x0002, 0x0056, 0x006c, 0x0003, 0x005a, 0x0000, - 0x0063, 0x0007, 0x0009, 0x01f0, 0x546d, 0x5471, 0x5475, 0x5479, - 0x547d, 0x5481, 0x0007, 0x0056, 0x1e68, 0x1e70, 0x1e79, 0x1e81, - 0x1e8a, 0x1e94, 0x1e9b, 0x0002, 0x0000, 0x006f, 0x0007, 0x0000, - 0x297a, 0x2483, 0x2483, 0x2483, 0x2980, 0x2055, 0x2483, 0x0001, - // Entry 3CFC0 - 3CFFF - 0x007a, 0x0003, 0x007e, 0x0000, 0x0085, 0x0005, 0x0009, 0xffff, - 0x025a, 0x025d, 0x0260, 0x0263, 0x0005, 0x0009, 0xffff, 0x0266, - 0x026d, 0x0274, 0x027b, 0x0001, 0x008e, 0x0003, 0x0092, 0x0000, - 0x009b, 0x0002, 0x0095, 0x0098, 0x0001, 0x0056, 0x1ea4, 0x0001, - 0x0056, 0x1eae, 0x0002, 0x009e, 0x00a1, 0x0001, 0x0056, 0x1ea4, - 0x0001, 0x0056, 0x1eae, 0x0003, 0x00ae, 0x0000, 0x00a8, 0x0001, - 0x00aa, 0x0002, 0x0056, 0x1eb8, 0x1ecb, 0x0001, 0x00b0, 0x0002, - 0x0002, 0x0434, 0x4c2b, 0x0004, 0x00c2, 0x00bc, 0x00b9, 0x00bf, - // Entry 3D000 - 3D03F - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00d3, 0x00cd, 0x00ca, - 0x00d0, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x0117, 0x0000, - 0x0000, 0x011c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0121, - 0x0000, 0x0000, 0x0126, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0136, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3D040 - 3D07F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013b, 0x0000, 0x0140, 0x0000, 0x0000, 0x0145, - 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, 0x014f, 0x0001, 0x0119, - 0x0001, 0x0056, 0x1edf, 0x0001, 0x011e, 0x0001, 0x0056, 0x1eec, - 0x0001, 0x0123, 0x0001, 0x0056, 0x1ef3, 0x0001, 0x0128, 0x0001, - 0x0056, 0x1ef9, 0x0002, 0x012e, 0x0131, 0x0001, 0x0056, 0x1f01, - 0x0003, 0x0056, 0x1f08, 0x1f0e, 0x1f1a, 0x0001, 0x0138, 0x0001, - // Entry 3D080 - 3D0BF - 0x0056, 0x1f24, 0x0001, 0x013d, 0x0001, 0x0056, 0x1f37, 0x0001, - 0x0142, 0x0001, 0x0056, 0x1f4b, 0x0001, 0x0147, 0x0001, 0x0056, - 0x1db2, 0x0001, 0x014c, 0x0001, 0x0056, 0x1f53, 0x0001, 0x0151, - 0x0001, 0x0056, 0x1f5c, 0x0003, 0x0004, 0x019c, 0x0296, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0008, 0x0016, 0x007b, 0x00d2, 0x0107, 0x0148, 0x0169, 0x017a, - 0x018b, 0x0002, 0x0019, 0x004a, 0x0003, 0x001d, 0x002c, 0x003b, - 0x000d, 0x0056, 0xffff, 0x1f6f, 0x1f76, 0x1f7b, 0x1f80, 0x1f84, - // Entry 3D0C0 - 3D0FF - 0x1f89, 0x1f8e, 0x1f93, 0x1f98, 0x1f9f, 0x1fa4, 0x1faa, 0x000d, - 0x0000, 0xffff, 0x2990, 0x2281, 0x297e, 0x24fb, 0x297a, 0x2281, - 0x298e, 0x24f9, 0x21e9, 0x2281, 0x298e, 0x2483, 0x000d, 0x0056, - 0xffff, 0x1faf, 0x1fc0, 0x1fcd, 0x1fdb, 0x1fe8, 0x1ff5, 0x2002, - 0x2010, 0x201c, 0x202a, 0x2038, 0x2046, 0x0003, 0x004e, 0x005d, - 0x006c, 0x000d, 0x0056, 0xffff, 0x1f6f, 0x1f76, 0x1f7b, 0x1f80, - 0x1f84, 0x1f89, 0x1f8e, 0x1f93, 0x1f98, 0x1f9f, 0x1fa4, 0x1faa, - 0x000d, 0x0000, 0xffff, 0x2990, 0x2281, 0x297e, 0x24fb, 0x297a, - // Entry 3D100 - 3D13F - 0x2281, 0x298e, 0x24f9, 0x21e9, 0x2281, 0x298e, 0x2483, 0x000d, - 0x0056, 0xffff, 0x1faf, 0x1fc0, 0x1fcd, 0x1fdb, 0x1fe8, 0x1ff5, - 0x2002, 0x2010, 0x201c, 0x202a, 0x2038, 0x2046, 0x0002, 0x007e, - 0x00a8, 0x0005, 0x0084, 0x008d, 0x009f, 0x0000, 0x0096, 0x0007, - 0x0057, 0x0000, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, - 0x0007, 0x0000, 0x298e, 0x2485, 0x297a, 0x2281, 0x297c, 0x24f9, - 0x2994, 0x0007, 0x0057, 0x0000, 0x0005, 0x000a, 0x000f, 0x0014, - 0x0019, 0x001e, 0x0007, 0x0057, 0x0023, 0x002f, 0x003a, 0x0048, - // Entry 3D140 - 3D17F - 0x0054, 0x005e, 0x0068, 0x0005, 0x00ae, 0x00b7, 0x00c9, 0x0000, - 0x00c0, 0x0007, 0x0057, 0x0000, 0x0005, 0x000a, 0x000f, 0x0014, - 0x0019, 0x001e, 0x0007, 0x0000, 0x298e, 0x2485, 0x297a, 0x2281, - 0x297c, 0x24f9, 0x2994, 0x0007, 0x0057, 0x0000, 0x0005, 0x000a, - 0x000f, 0x0014, 0x0019, 0x001e, 0x0007, 0x0057, 0x0023, 0x002f, - 0x003a, 0x0048, 0x0054, 0x005e, 0x0068, 0x0002, 0x00d5, 0x00ee, - 0x0003, 0x00d9, 0x00e0, 0x00e7, 0x0005, 0x0000, 0xffff, 0x04e3, - 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - // Entry 3D180 - 3D1BF - 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, - 0x3836, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, - 0x3833, 0x3836, 0x0002, 0x010a, 0x0129, 0x0003, 0x010e, 0x0117, - 0x0120, 0x0002, 0x0111, 0x0114, 0x0001, 0x0057, 0x0073, 0x0001, - 0x0053, 0x050e, 0x0002, 0x011a, 0x011d, 0x0001, 0x0057, 0x0073, - 0x0001, 0x0053, 0x050e, 0x0002, 0x0123, 0x0126, 0x0001, 0x0057, - // Entry 3D1C0 - 3D1FF - 0x0078, 0x0001, 0x0057, 0x0085, 0x0003, 0x012d, 0x0136, 0x013f, - 0x0002, 0x0130, 0x0133, 0x0001, 0x0057, 0x0073, 0x0001, 0x0053, - 0x050e, 0x0002, 0x0139, 0x013c, 0x0001, 0x0057, 0x0073, 0x0001, - 0x0053, 0x050e, 0x0002, 0x0142, 0x0145, 0x0001, 0x0057, 0x0093, - 0x0001, 0x0057, 0x009f, 0x0003, 0x0157, 0x0162, 0x014c, 0x0002, - 0x014f, 0x0153, 0x0002, 0x0057, 0x00ac, 0x00bc, 0x0002, 0x0000, - 0x04f5, 0x04f9, 0x0002, 0x015a, 0x015e, 0x0002, 0x0057, 0x00cf, - 0x00d5, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0000, 0x0165, - // Entry 3D200 - 3D23F - 0x0002, 0x0057, 0x00db, 0x00e0, 0x0004, 0x0177, 0x0171, 0x016e, - 0x0174, 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, - 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x0188, 0x0182, - 0x017f, 0x0185, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0199, - 0x0193, 0x0190, 0x0196, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, - 0x01dd, 0x0000, 0x0000, 0x01e2, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3D240 - 3D27F - 0x0000, 0x01f8, 0x0000, 0x0000, 0x020e, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0224, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0246, 0x0000, 0x024b, 0x0000, - 0x0000, 0x0261, 0x0000, 0x0000, 0x0277, 0x0000, 0x0000, 0x0291, - 0x0001, 0x01df, 0x0001, 0x0030, 0x03b7, 0x0003, 0x01e6, 0x0000, - // Entry 3D280 - 3D2BF - 0x01e9, 0x0001, 0x0057, 0x00e4, 0x0002, 0x01ec, 0x01f2, 0x0004, - 0x0057, 0x0100, 0x00eb, 0xffff, 0x0100, 0x0004, 0x0057, 0x0126, - 0x0116, 0xffff, 0x0126, 0x0003, 0x01fc, 0x0000, 0x01ff, 0x0001, - 0x0057, 0x0137, 0x0002, 0x0202, 0x0208, 0x0004, 0x0057, 0x013e, - 0x013e, 0xffff, 0x013e, 0x0004, 0x0057, 0x0159, 0x0159, 0xffff, - 0x0159, 0x0003, 0x0212, 0x0000, 0x0215, 0x0001, 0x0057, 0x016f, - 0x0002, 0x0218, 0x021e, 0x0004, 0x0057, 0x018c, 0x0177, 0xffff, - 0x018c, 0x0004, 0x0057, 0x01b2, 0x01a2, 0xffff, 0x01b2, 0x0003, - // Entry 3D2C0 - 3D2FF - 0x0228, 0x022b, 0x0232, 0x0001, 0x0057, 0x01c3, 0x0005, 0x0057, - 0x01d7, 0x01dc, 0x01e1, 0x01ca, 0x01e8, 0x0002, 0x0235, 0x023b, - 0x0004, 0x0057, 0x0226, 0x01f7, 0xffff, 0x020e, 0x0004, 0x0057, - 0x0250, 0x023e, 0xffff, 0x0250, 0x0001, 0x0243, 0x0001, 0x0057, - 0x0263, 0x0001, 0x0248, 0x0001, 0x0057, 0x0271, 0x0003, 0x024f, - 0x0000, 0x0252, 0x0001, 0x0057, 0x0285, 0x0002, 0x0255, 0x025b, - 0x0004, 0x0057, 0x02a2, 0x028c, 0xffff, 0x02a2, 0x0004, 0x0057, - 0x02ca, 0x02b9, 0xffff, 0x02ca, 0x0003, 0x0265, 0x0000, 0x0268, - // Entry 3D300 - 3D33F - 0x0001, 0x0057, 0x02dc, 0x0002, 0x026b, 0x0271, 0x0004, 0x0057, - 0x02fc, 0x02e5, 0xffff, 0x02fc, 0x0004, 0x0057, 0x0326, 0x0314, - 0xffff, 0x0326, 0x0003, 0x027b, 0x027e, 0x0282, 0x0001, 0x000d, - 0x0c7f, 0x0002, 0x0057, 0xffff, 0x0339, 0x0002, 0x0285, 0x028b, - 0x0004, 0x0057, 0x0353, 0x033c, 0xffff, 0x0353, 0x0004, 0x0057, - 0x037d, 0x036b, 0xffff, 0x037d, 0x0001, 0x0293, 0x0001, 0x0057, - 0x0390, 0x0004, 0x029b, 0x02a0, 0x0000, 0x02a5, 0x0003, 0x001c, - 0x0baf, 0x22a2, 0x22a9, 0x0003, 0x0057, 0x039d, 0x03a7, 0x03b7, - // Entry 3D340 - 3D37F - 0x0002, 0x03d2, 0x02a8, 0x0003, 0x02ac, 0x0370, 0x030e, 0x0060, - 0x0057, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x03cb, 0x041a, - 0xffff, 0x046c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3D380 - 3D3BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x04d2, 0x0060, 0x0057, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3D3C0 - 3D3FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x03e0, 0x0430, 0xffff, 0x0481, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x04bb, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3D400 - 3D43F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x04df, 0x0060, 0x0057, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x03ff, 0x0450, 0xffff, 0x04a0, 0xffff, 0xffff, - // Entry 3D440 - 3D47F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x04f6, 0x0003, 0x03d6, 0x0445, - 0x0409, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3D480 - 3D4BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2283, 0x228c, 0xffff, 0x2295, 0x003a, 0x001c, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3D4C0 - 3D4FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22ad, - 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3D500 - 3D53F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2287, - 0x2290, 0xffff, 0x2299, 0x0003, 0x0004, 0x0035, 0x0088, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0002, 0x0000, 0x0010, 0x0002, 0x0013, 0x0029, 0x0003, 0x0000, - 0x0017, 0x0020, 0x0007, 0x0000, 0x298e, 0x297a, 0x297c, 0x2281, - 0x297c, 0x24f9, 0x2994, 0x0007, 0x0057, 0x0023, 0x0509, 0x0515, - 0x0524, 0x052f, 0x053a, 0x0545, 0x0002, 0x0000, 0x002c, 0x0007, - // Entry 3D540 - 3D57F - 0x0000, 0x298e, 0x297a, 0x297c, 0x2281, 0x297c, 0x24f9, 0x2994, - 0x0019, 0x004f, 0x0000, 0x0000, 0x0054, 0x006f, 0x0074, 0x0079, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x007e, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0083, 0x0001, 0x0051, 0x0001, 0x0057, 0x0551, 0x0003, - 0x0058, 0x005b, 0x0060, 0x0001, 0x0057, 0x055a, 0x0003, 0x0057, - 0x0560, 0x056c, 0x0576, 0x0002, 0x0063, 0x0069, 0x0004, 0x0057, - 0x0583, 0x0583, 0xffff, 0x0583, 0x0004, 0x0057, 0x0592, 0x0592, - // Entry 3D580 - 3D5BF - 0xffff, 0x0592, 0x0001, 0x0071, 0x0001, 0x0001, 0x008e, 0x0001, - 0x0076, 0x0001, 0x0001, 0x008e, 0x0001, 0x007b, 0x0001, 0x0057, - 0x05a1, 0x0001, 0x0080, 0x0001, 0x0057, 0x05b2, 0x0001, 0x0085, - 0x0001, 0x0057, 0x05b9, 0x0004, 0x008d, 0x0000, 0x0000, 0x0000, - 0x0003, 0x001c, 0xffff, 0xffff, 0x22ad, 0x0002, 0x0003, 0x00bd, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - // Entry 3D5C0 - 3D5FF - 0x001c, 0x128b, 0x0001, 0x001c, 0x12a6, 0x0001, 0x0029, 0x001b, - 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x0000, 0x0000, - 0x008b, 0x009b, 0x00ac, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - 0x0036, 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x2470, - 0x2474, 0x2326, 0x2478, 0x224e, 0x22d4, 0x2112, 0x232e, 0x2332, - 0x22e0, 0x0662, 0x000d, 0x0057, 0xffff, 0x05c6, 0x05ce, 0x05d7, - 0x05dd, 0x05e3, 0x05e8, 0x05ee, 0x05f4, 0x05fc, 0x0605, 0x060c, - 0x0615, 0x0002, 0x0000, 0x0057, 0x000d, 0x0000, 0xffff, 0x2483, - // Entry 3D600 - 3D63F - 0x298c, 0x297a, 0x2980, 0x297a, 0x2483, 0x2483, 0x2980, 0x298e, - 0x2990, 0x297e, 0x297c, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, - 0x0000, 0x0076, 0x0007, 0x0018, 0x02ce, 0x4a3f, 0x4a43, 0x4a47, - 0x4a4b, 0x4a4f, 0x4a53, 0x0007, 0x0057, 0x061e, 0x0626, 0x062e, - 0x0636, 0x063e, 0x0645, 0x064e, 0x0002, 0x0000, 0x0082, 0x0007, - 0x0000, 0x297c, 0x255c, 0x24fb, 0x38ae, 0x297e, 0x298e, 0x298e, - 0x0003, 0x0095, 0x0000, 0x008f, 0x0001, 0x0091, 0x0002, 0x0057, - 0x0655, 0x0665, 0x0001, 0x0097, 0x0002, 0x0057, 0x0671, 0x0674, - // Entry 3D640 - 3D67F - 0x0004, 0x00a9, 0x00a3, 0x00a0, 0x00a6, 0x0001, 0x001c, 0x14a6, - 0x0001, 0x001c, 0x14bf, 0x0001, 0x0029, 0x027f, 0x0001, 0x0002, - 0x01fb, 0x0004, 0x00ba, 0x00b4, 0x00b1, 0x00b7, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x003d, 0x0000, 0x0000, 0x0000, 0x00fb, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0105, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3D680 - 3D6BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0110, 0x0000, 0x0000, 0x0115, 0x0000, 0x0000, 0x011a, - 0x0001, 0x00fd, 0x0001, 0x0057, 0x0677, 0x0001, 0x0102, 0x0001, - 0x0041, 0x0111, 0x0002, 0x0108, 0x010b, 0x0001, 0x0057, 0x067d, - 0x0003, 0x0057, 0x0684, 0x0689, 0x068e, 0x0001, 0x0112, 0x0001, - 0x0057, 0x0697, 0x0001, 0x0117, 0x0001, 0x001e, 0x02a9, 0x0001, - // Entry 3D6C0 - 3D6FF - 0x011c, 0x0001, 0x001e, 0x02b0, 0x0002, 0x0003, 0x00e9, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, - 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, - 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, - 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0017, 0xffff, 0x00ac, 0x00b1, 0x299a, - // Entry 3D700 - 3D73F - 0x00b9, 0x299e, 0x00c0, 0x00c5, 0x2930, 0x00cd, 0x29a1, 0x00d1, - 0x00d5, 0x000d, 0x0017, 0xffff, 0x00d9, 0x00e2, 0x00ec, 0x00f2, - 0x299e, 0x00f9, 0x0101, 0x2930, 0x0108, 0x0112, 0x011b, 0x0125, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x012f, 0x29a5, - 0x29a7, 0x29a9, 0x29a7, 0x012f, 0x012f, 0x29ab, 0x29ad, 0x29af, - 0x29b1, 0x29b3, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x0009, 0x5479, 0x5485, 0x5489, 0x548d, 0x5491, - 0x5495, 0x5499, 0x0007, 0x0017, 0x0142, 0x0149, 0x0150, 0x0159, - // Entry 3D740 - 3D77F - 0x2955, 0x0169, 0x0170, 0x0002, 0x0000, 0x0082, 0x0007, 0x0000, - 0x38d8, 0x38ae, 0x38ae, 0x2994, 0x2994, 0x2994, 0x3a8b, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0017, 0xffff, - 0x0177, 0x298e, 0x017d, 0x0180, 0x0005, 0x0017, 0xffff, 0x0183, - 0x018c, 0x0195, 0x019e, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, - 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0037, 0x1182, 0x0001, - 0x0037, 0x1189, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0037, 0x1182, - 0x0001, 0x0037, 0x1189, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, - // Entry 3D780 - 3D7BF - 0x00bd, 0x0002, 0x0017, 0x01bb, 0x01c5, 0x0001, 0x00c3, 0x0002, - 0x0017, 0x01d2, 0x01d5, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, - 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, - 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, - 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, - 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, - 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3D7C0 - 3D7FF - 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, - 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, - 0x0001, 0x0017, 0x01d8, 0x0001, 0x0131, 0x0001, 0x0017, 0x01de, - 0x0001, 0x0136, 0x0001, 0x0017, 0x01e4, 0x0001, 0x013b, 0x0001, - // Entry 3D800 - 3D83F - 0x0017, 0x01ea, 0x0002, 0x0141, 0x0144, 0x0001, 0x0017, 0x01ef, - 0x0003, 0x0023, 0x0066, 0x2a59, 0x2a5e, 0x0001, 0x014b, 0x0001, - 0x0037, 0x1196, 0x0001, 0x0150, 0x0001, 0x0017, 0x021a, 0x0001, - 0x0155, 0x0001, 0x0017, 0x0220, 0x0001, 0x015a, 0x0001, 0x0017, - 0x0227, 0x0001, 0x015f, 0x0001, 0x0017, 0x022c, 0x0002, 0x0003, - 0x00e9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - // Entry 3D840 - 3D87F - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1fc1, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, - 0x009f, 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0057, 0xffff, 0x069c, - 0x06a0, 0x06a4, 0x06a9, 0x06ad, 0x06b2, 0x06b7, 0x06bb, 0x06c0, - 0x06c4, 0x06c8, 0x06cc, 0x000d, 0x0057, 0xffff, 0x06d0, 0x06d7, - 0x06e2, 0x06eb, 0x06f3, 0x06fd, 0x0704, 0x070b, 0x0715, 0x071b, - 0x0724, 0x0730, 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, - // Entry 3D880 - 3D8BF - 0x29b1, 0x29a5, 0x29a7, 0x29b1, 0x29b5, 0x29a5, 0x29b7, 0x29b9, - 0x29a7, 0x29b1, 0x29b1, 0x29b9, 0x0002, 0x0069, 0x007f, 0x0003, - 0x006d, 0x0000, 0x0076, 0x0007, 0x0057, 0x0738, 0x073c, 0x0740, - 0x0744, 0x0748, 0x074c, 0x0751, 0x0007, 0x0057, 0x0756, 0x0761, - 0x076d, 0x0779, 0x0787, 0x0793, 0x079d, 0x0002, 0x0000, 0x0082, - 0x0007, 0x0017, 0x29b9, 0x29bb, 0x29bd, 0x29bb, 0x29b9, 0x29bf, - 0x29c1, 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, - 0x0057, 0xffff, 0x07a6, 0x07ad, 0x07b4, 0x07bb, 0x0005, 0x0057, - // Entry 3D8C0 - 3D8FF - 0xffff, 0x07c2, 0x07d4, 0x07e6, 0x07f8, 0x0001, 0x00a1, 0x0003, - 0x00a5, 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0057, - 0x080c, 0x0001, 0x0057, 0x080f, 0x0002, 0x00b1, 0x00b4, 0x0001, - 0x0057, 0x080c, 0x0001, 0x0057, 0x080f, 0x0003, 0x00c1, 0x0000, - 0x00bb, 0x0001, 0x00bd, 0x0002, 0x0057, 0x0812, 0x0823, 0x0001, - 0x00c3, 0x0002, 0x0057, 0x0838, 0x083c, 0x0004, 0x00d5, 0x00cf, - 0x00cc, 0x00d2, 0x0001, 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, - // Entry 3D900 - 3D93F - 0x00e0, 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, - 0x012a, 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3D940 - 3D97F - 0x0000, 0x0000, 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, - 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, - 0x0001, 0x012c, 0x0001, 0x0057, 0x0840, 0x0001, 0x0131, 0x0001, - 0x0057, 0x084b, 0x0001, 0x0136, 0x0001, 0x0057, 0x0850, 0x0001, - 0x013b, 0x0001, 0x0057, 0x0854, 0x0002, 0x0141, 0x0144, 0x0001, - 0x0057, 0x085c, 0x0003, 0x0057, 0x0860, 0x0867, 0x086e, 0x0001, - 0x014b, 0x0001, 0x0057, 0x0879, 0x0001, 0x0150, 0x0001, 0x0057, - 0x0880, 0x0001, 0x0155, 0x0001, 0x0057, 0x0887, 0x0001, 0x015a, - // Entry 3D980 - 3D9BF - 0x0001, 0x0057, 0x088f, 0x0001, 0x015f, 0x0001, 0x0057, 0x089e, - 0x0001, 0x0164, 0x0001, 0x0057, 0x08ad, 0x0002, 0x0003, 0x00cb, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, - 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x007e, 0x0092, - 0x00aa, 0x00ba, 0x0000, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - // Entry 3D9C0 - 3D9FF - 0x0036, 0x0000, 0x0045, 0x000d, 0x0057, 0xffff, 0x08b9, 0x08c3, - 0x08cd, 0x08d7, 0x08e1, 0x08eb, 0x08f5, 0x08ff, 0x0909, 0x0913, - 0x091d, 0x0927, 0x000d, 0x0057, 0xffff, 0x0931, 0x0944, 0x0954, - 0x0961, 0x0971, 0x0981, 0x0991, 0x09a4, 0x09b1, 0x09ca, 0x09da, - 0x09f3, 0x0002, 0x0000, 0x0057, 0x000d, 0x0057, 0xffff, 0x0a0c, - 0x0a10, 0x0a14, 0x0a0c, 0x0a14, 0x0a18, 0x0a18, 0x0a1c, 0x0a20, - 0x0a24, 0x0a28, 0x0a2c, 0x0001, 0x0068, 0x0003, 0x006c, 0x0000, - 0x0075, 0x0007, 0x0057, 0x0a30, 0x0a3a, 0x0a44, 0x0a4e, 0x0a58, - // Entry 3DA00 - 3DA3F - 0x0a62, 0x0a6f, 0x0007, 0x0057, 0x0a7c, 0x0a8f, 0x0a9f, 0x0ab2, - 0x0ac2, 0x0ad2, 0x0ae5, 0x0001, 0x0080, 0x0003, 0x0084, 0x0000, - 0x008b, 0x0005, 0x0057, 0xffff, 0x0afb, 0x0b04, 0x0b0d, 0x0b16, - 0x0005, 0x0057, 0xffff, 0x0b1f, 0x0b3a, 0x0b55, 0x0b70, 0x0001, - 0x0094, 0x0003, 0x0098, 0x0000, 0x00a1, 0x0002, 0x009b, 0x009e, - 0x0001, 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0002, 0x00a4, - 0x00a7, 0x0001, 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0003, - 0x00b4, 0x0000, 0x00ae, 0x0001, 0x00b0, 0x0002, 0x0057, 0x0bb7, - // Entry 3DA40 - 3DA7F - 0x0bd2, 0x0001, 0x00b6, 0x0002, 0x0057, 0x0bf3, 0x0bfd, 0x0004, - 0x00c8, 0x00c2, 0x00bf, 0x00c5, 0x0001, 0x0001, 0x1fa2, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, - 0x0040, 0x010c, 0x0000, 0x0000, 0x0111, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0116, 0x0000, 0x0000, 0x011b, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0120, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3DA80 - 3DABF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0130, 0x0000, 0x0135, - 0x0000, 0x0000, 0x013a, 0x0000, 0x0000, 0x013f, 0x0000, 0x0000, - 0x0144, 0x0001, 0x010e, 0x0001, 0x0057, 0x0c07, 0x0001, 0x0113, - 0x0001, 0x0057, 0x0c17, 0x0001, 0x0118, 0x0001, 0x0057, 0x0c2d, - 0x0001, 0x011d, 0x0001, 0x0057, 0x0c3d, 0x0002, 0x0123, 0x0126, - 0x0001, 0x0057, 0x0c53, 0x0003, 0x0057, 0x0c5d, 0x0c6d, 0x0c7a, - 0x0001, 0x012d, 0x0001, 0x0057, 0x0c8a, 0x0001, 0x0132, 0x0001, - // Entry 3DAC0 - 3DAFF - 0x0057, 0x0cae, 0x0001, 0x0137, 0x0001, 0x0057, 0x0cf9, 0x0001, - 0x013c, 0x0001, 0x0057, 0x0d0f, 0x0001, 0x0141, 0x0001, 0x0057, - 0x0d25, 0x0001, 0x0146, 0x0001, 0x0057, 0x0d38, 0x0002, 0x0003, - 0x00cb, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1fc1, 0x0001, 0x0000, 0x236f, 0x0008, 0x002f, 0x0066, 0x007e, - // Entry 3DB00 - 3DB3F - 0x0092, 0x00aa, 0x00ba, 0x0000, 0x0000, 0x0002, 0x0032, 0x0054, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0057, 0xffff, 0x0d5c, - 0x0d60, 0x0d66, 0x0d6c, 0x0d70, 0x0d74, 0x0d78, 0x0d7c, 0x0d81, - 0x0d85, 0x0d89, 0x0d8d, 0x000d, 0x0057, 0xffff, 0x0d91, 0x0d98, - 0x0da2, 0x0dab, 0x0db1, 0x0db7, 0x0dbd, 0x0dc4, 0x0dca, 0x0dd3, - 0x0dd9, 0x0de2, 0x0002, 0x0000, 0x0057, 0x000d, 0x0057, 0xffff, - 0x0deb, 0x0ded, 0x0def, 0x0deb, 0x0def, 0x0df1, 0x0df1, 0x0df3, - 0x0df6, 0x0df8, 0x0dfa, 0x0dfc, 0x0001, 0x0068, 0x0003, 0x006c, - // Entry 3DB40 - 3DB7F - 0x0000, 0x0075, 0x0007, 0x0057, 0x0dfe, 0x0e02, 0x0e06, 0x0e0a, - 0x0e10, 0x0e14, 0x0e19, 0x0007, 0x0057, 0x0e20, 0x0e27, 0x0e2d, - 0x0e34, 0x0e3c, 0x0e42, 0x0e4a, 0x0001, 0x0080, 0x0003, 0x0084, - 0x0000, 0x008b, 0x0005, 0x0057, 0xffff, 0x0e54, 0x0e59, 0x0e5e, - 0x0e63, 0x0005, 0x0057, 0xffff, 0x0e68, 0x0e77, 0x0e86, 0x0e95, - 0x0001, 0x0094, 0x0003, 0x0098, 0x0000, 0x00a1, 0x0002, 0x009b, - 0x009e, 0x0001, 0x0057, 0x0ea4, 0x0001, 0x0057, 0x0eab, 0x0002, - 0x00a4, 0x00a7, 0x0001, 0x0057, 0x0ea4, 0x0001, 0x0057, 0x0eab, - // Entry 3DB80 - 3DBBF - 0x0003, 0x00b4, 0x0000, 0x00ae, 0x0001, 0x00b0, 0x0002, 0x0057, - 0x0eb5, 0x0ec1, 0x0001, 0x00b6, 0x0002, 0x0057, 0x0ecf, 0x0ed4, - 0x0004, 0x00c8, 0x00c2, 0x00bf, 0x00c5, 0x0001, 0x0001, 0x1fa2, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, - 0x01fb, 0x0040, 0x010c, 0x0000, 0x0000, 0x0111, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0116, 0x0000, 0x0000, 0x011b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0120, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3DBC0 - 3DBFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0130, 0x0000, - 0x0135, 0x0000, 0x0000, 0x013a, 0x0000, 0x0000, 0x013f, 0x0000, - 0x0000, 0x0144, 0x0001, 0x010e, 0x0001, 0x0057, 0x0ed9, 0x0001, - 0x0113, 0x0001, 0x0057, 0x0edf, 0x0001, 0x0118, 0x0001, 0x0057, - 0x0ee8, 0x0001, 0x011d, 0x0001, 0x0057, 0x0eee, 0x0002, 0x0123, - 0x0126, 0x0001, 0x0057, 0x0ef6, 0x0003, 0x0057, 0x0efa, 0x0f02, - // Entry 3DC00 - 3DC3F - 0x0f07, 0x0001, 0x012d, 0x0001, 0x0057, 0x0f0d, 0x0001, 0x0132, - 0x0001, 0x0057, 0x0f1b, 0x0001, 0x0137, 0x0001, 0x0057, 0x0f3b, - 0x0001, 0x013c, 0x0001, 0x0057, 0x0f43, 0x0001, 0x0141, 0x0001, - 0x0057, 0x0f4b, 0x0001, 0x0146, 0x0001, 0x0057, 0x0f52, 0x0003, - 0x0004, 0x0286, 0x068a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, - 0x001b, 0x0021, 0x0001, 0x0000, 0x0489, 0x0001, 0x0000, 0x049a, - // Entry 3DC40 - 3DC7F - 0x0001, 0x0000, 0x04a5, 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, - 0x002f, 0x002c, 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0239, 0x0253, 0x0264, 0x0275, - 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, - 0x0057, 0xffff, 0x0f62, 0x0f69, 0x0f73, 0x0f86, 0x0f9f, 0x0fac, - 0x0fb9, 0x0fc6, 0x0fd0, 0x0fdd, 0x0fe7, 0x0ff4, 0x000d, 0x0057, - 0xffff, 0x1001, 0x1005, 0x100c, 0x1013, 0x1017, 0x101e, 0x101e, - // Entry 3DC80 - 3DCBF - 0x1013, 0x1025, 0x102c, 0x1030, 0x1037, 0x000d, 0x0057, 0xffff, - 0x103e, 0x1051, 0x0f73, 0x0f86, 0x0f9f, 0x0fac, 0x0fb9, 0x106a, - 0x1080, 0x10a2, 0x10bb, 0x10d7, 0x0003, 0x0079, 0x0088, 0x0097, - 0x000d, 0x0057, 0xffff, 0x0f62, 0x0f69, 0x10f3, 0x0f86, 0x0f9f, - 0x0fac, 0x0fb9, 0x0fc6, 0x0fd0, 0x0fdd, 0x0fe7, 0x0ff4, 0x000d, - 0x0057, 0xffff, 0x1001, 0x1005, 0x100c, 0x1013, 0x1017, 0x101e, - 0x101e, 0x1013, 0x1025, 0x102c, 0x1030, 0x1037, 0x000d, 0x0057, - 0xffff, 0x103e, 0x1051, 0x0f73, 0x0f86, 0x0f9f, 0x0fac, 0x0fb9, - // Entry 3DCC0 - 3DCFF - 0x106a, 0x1080, 0x10a2, 0x10bb, 0x10d7, 0x0002, 0x00a9, 0x00d3, - 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0057, - 0x1100, 0x1110, 0x1120, 0x112a, 0x113a, 0x1150, 0x115d, 0x0007, - 0x0057, 0x1167, 0x116b, 0x1013, 0x116f, 0x1173, 0x1180, 0x1187, - 0x0007, 0x0057, 0x118e, 0x1198, 0x11a2, 0x11a9, 0x11b3, 0x1150, - 0x115d, 0x0007, 0x0057, 0x1100, 0x1110, 0x11c3, 0x112a, 0x11df, - 0x120a, 0x1223, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, - 0x0007, 0x0057, 0x1100, 0x1110, 0x1120, 0x112a, 0x113a, 0x1150, - // Entry 3DD00 - 3DD3F - 0x115d, 0x0007, 0x0057, 0x1167, 0x116b, 0x1013, 0x116f, 0x1173, - 0x1180, 0x1187, 0x0007, 0x0057, 0x118e, 0x1198, 0x11a2, 0x11a9, - 0x11b3, 0x1150, 0x115d, 0x0007, 0x0057, 0x1100, 0x1110, 0x11c3, - 0x112a, 0x11df, 0x120a, 0x1223, 0x0002, 0x0100, 0x0119, 0x0003, - 0x0104, 0x010b, 0x0112, 0x0005, 0x0057, 0xffff, 0x123f, 0x124e, - 0x125d, 0x126c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0057, 0xffff, 0x127b, 0x129a, 0x12b9, 0x12d8, - 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0057, 0xffff, 0x123f, - // Entry 3DD40 - 3DD7F - 0x124e, 0x125d, 0x126c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0057, 0xffff, 0x127b, 0x129a, 0x12b9, - 0x12d8, 0x0002, 0x0135, 0x01b7, 0x0003, 0x0139, 0x0163, 0x018d, - 0x000b, 0x0148, 0x014e, 0x0145, 0x0151, 0x0157, 0x015a, 0x015d, - 0x014b, 0x0154, 0x0000, 0x0160, 0x0001, 0x0057, 0x12f7, 0x0001, - 0x0057, 0x130a, 0x0001, 0x0057, 0x1316, 0x0001, 0x0057, 0x1335, - 0x0001, 0x0057, 0x133e, 0x0001, 0x0057, 0x1351, 0x0001, 0x0057, - 0x135b, 0x0001, 0x0057, 0x1368, 0x0001, 0x0057, 0x1372, 0x0001, - // Entry 3DD80 - 3DDBF - 0x0057, 0x1379, 0x000b, 0x0172, 0x0178, 0x016f, 0x017b, 0x0181, - 0x0184, 0x0187, 0x0175, 0x017e, 0x0000, 0x018a, 0x0001, 0x0057, - 0x1017, 0x0001, 0x0057, 0x1005, 0x0001, 0x0057, 0x1399, 0x0001, - 0x0057, 0x139d, 0x0001, 0x0057, 0x13a1, 0x0001, 0x0057, 0x13a8, - 0x0001, 0x0057, 0x13ac, 0x0001, 0x0057, 0x13b0, 0x0001, 0x0057, - 0x1372, 0x0001, 0x0057, 0x1017, 0x000b, 0x019c, 0x01a2, 0x0199, - 0x01a5, 0x01ab, 0x01ae, 0x01b1, 0x019f, 0x01a8, 0x0000, 0x01b4, - 0x0001, 0x0057, 0x12f7, 0x0001, 0x0057, 0x130a, 0x0001, 0x0057, - // Entry 3DDC0 - 3DDFF - 0x1316, 0x0001, 0x0057, 0x1335, 0x0001, 0x0057, 0x133e, 0x0001, - 0x0057, 0x1351, 0x0001, 0x0057, 0x135b, 0x0001, 0x0057, 0x1368, - 0x0001, 0x0057, 0x1372, 0x0001, 0x0057, 0x1379, 0x0003, 0x01bb, - 0x01e5, 0x020f, 0x000b, 0x01ca, 0x01d0, 0x01c7, 0x01d3, 0x01d9, - 0x01dc, 0x01df, 0x01cd, 0x01d6, 0x0000, 0x01e2, 0x0001, 0x0057, - 0x12f7, 0x0001, 0x0057, 0x130a, 0x0001, 0x0057, 0x1316, 0x0001, - 0x0057, 0x1335, 0x0001, 0x0057, 0x133e, 0x0001, 0x0057, 0x1351, - 0x0001, 0x0057, 0x135b, 0x0001, 0x0057, 0x1368, 0x0001, 0x0057, - // Entry 3DE00 - 3DE3F - 0x1372, 0x0001, 0x0057, 0x1379, 0x000b, 0x01f4, 0x01fa, 0x01f1, - 0x01fd, 0x0203, 0x0206, 0x0209, 0x01f7, 0x0200, 0x0000, 0x020c, - 0x0001, 0x0057, 0x12f7, 0x0001, 0x0057, 0x130a, 0x0001, 0x0057, - 0x1316, 0x0001, 0x0057, 0x1335, 0x0001, 0x0057, 0x133e, 0x0001, - 0x0057, 0x1351, 0x0001, 0x0057, 0x135b, 0x0001, 0x0057, 0x1368, - 0x0001, 0x0057, 0x1372, 0x0001, 0x0057, 0x1379, 0x000b, 0x021e, - 0x0224, 0x021b, 0x0227, 0x022d, 0x0230, 0x0233, 0x0221, 0x022a, - 0x0000, 0x0236, 0x0001, 0x0057, 0x12f7, 0x0001, 0x0057, 0x130a, - // Entry 3DE40 - 3DE7F - 0x0001, 0x0057, 0x1316, 0x0001, 0x0057, 0x1335, 0x0001, 0x0057, - 0x133e, 0x0001, 0x0057, 0x1351, 0x0001, 0x0057, 0x135b, 0x0001, - 0x0057, 0x1368, 0x0001, 0x0057, 0x1372, 0x0001, 0x0057, 0x1379, - 0x0003, 0x0248, 0x0000, 0x023d, 0x0002, 0x0240, 0x0244, 0x0002, - 0x0057, 0x13b4, 0x1407, 0x0002, 0x0057, 0x13e0, 0x1430, 0x0002, - 0x024b, 0x024f, 0x0002, 0x0057, 0x144a, 0x146f, 0x0002, 0x0057, - 0x1462, 0x1484, 0x0004, 0x0261, 0x025b, 0x0258, 0x025e, 0x0001, - 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, 0x0001, 0x0000, 0x0514, - // Entry 3DE80 - 3DEBF - 0x0001, 0x0000, 0x051c, 0x0004, 0x0272, 0x026c, 0x0269, 0x026f, - 0x0001, 0x0000, 0x38b0, 0x0001, 0x0000, 0x38be, 0x0001, 0x0000, - 0x38c9, 0x0001, 0x0000, 0x38d2, 0x0004, 0x0283, 0x027d, 0x027a, - 0x0280, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02c7, 0x0000, - 0x0000, 0x02cc, 0x02e3, 0x02fa, 0x0311, 0x0328, 0x033f, 0x0356, - 0x036d, 0x0384, 0x039b, 0x03b6, 0x03d1, 0x0000, 0x0000, 0x0000, - 0x03ec, 0x0405, 0x0417, 0x0000, 0x0000, 0x0000, 0x0429, 0x0000, - // Entry 3DEC0 - 3DEFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x042e, 0x0442, 0x0456, 0x046a, - 0x047e, 0x0492, 0x04a6, 0x04ba, 0x04ce, 0x04e2, 0x04f6, 0x050a, - 0x051e, 0x0532, 0x0546, 0x055a, 0x056e, 0x0582, 0x0596, 0x05aa, - 0x05be, 0x0000, 0x05d2, 0x0000, 0x05d7, 0x05ed, 0x05ff, 0x0611, - 0x0627, 0x0639, 0x064b, 0x0661, 0x0673, 0x0685, 0x0001, 0x02c9, - 0x0001, 0x0057, 0x1492, 0x0003, 0x02d0, 0x02d3, 0x02d8, 0x0001, - 0x0057, 0x149f, 0x0003, 0x0057, 0x14af, 0x14cc, 0x14e0, 0x0002, - 0x02db, 0x02df, 0x0002, 0x0057, 0x14f4, 0x14f4, 0x0002, 0x0057, - // Entry 3DF00 - 3DF3F - 0x150e, 0x150e, 0x0003, 0x02e7, 0x02ea, 0x02ef, 0x0001, 0x0057, - 0x152c, 0x0003, 0x0057, 0x14af, 0x14cc, 0x14e0, 0x0002, 0x02f2, - 0x02f6, 0x0002, 0x0057, 0x14f4, 0x14f4, 0x0002, 0x0057, 0x150e, - 0x150e, 0x0003, 0x02fe, 0x0301, 0x0306, 0x0001, 0x0057, 0x152c, - 0x0003, 0x0057, 0x14af, 0x14cc, 0x14e0, 0x0002, 0x0309, 0x030d, - 0x0002, 0x0057, 0x14f4, 0x14f4, 0x0002, 0x0057, 0x150e, 0x150e, - 0x0003, 0x0315, 0x0318, 0x031d, 0x0001, 0x0057, 0x1537, 0x0003, - 0x0057, 0x154d, 0x1576, 0x1596, 0x0002, 0x0320, 0x0324, 0x0002, - // Entry 3DF40 - 3DF7F - 0x0057, 0x15b6, 0x15b6, 0x0002, 0x0057, 0x15d9, 0x15d9, 0x0003, - 0x032c, 0x032f, 0x0334, 0x0001, 0x0057, 0x1600, 0x0003, 0x0057, - 0x160e, 0x162f, 0x1647, 0x0002, 0x0337, 0x033b, 0x0002, 0x0057, - 0x165f, 0x165f, 0x0002, 0x0057, 0x167d, 0x167d, 0x0003, 0x0343, - 0x0346, 0x034b, 0x0001, 0x0057, 0x1600, 0x0003, 0x0057, 0x160e, - 0x162f, 0x1647, 0x0002, 0x034e, 0x0352, 0x0002, 0x0057, 0x165f, - 0x165f, 0x0002, 0x0057, 0x167d, 0x167d, 0x0003, 0x035a, 0x035d, - 0x0362, 0x0001, 0x0057, 0x169f, 0x0003, 0x0057, 0x16ac, 0x16cc, - // Entry 3DF80 - 3DFBF - 0x16e3, 0x0002, 0x0365, 0x0369, 0x0002, 0x0057, 0x16fa, 0x16fa, - 0x0002, 0x0057, 0x1714, 0x1714, 0x0003, 0x0371, 0x0374, 0x0379, - 0x0001, 0x0057, 0x1732, 0x0003, 0x0057, 0x173d, 0x175b, 0x1770, - 0x0002, 0x037c, 0x0380, 0x0002, 0x0057, 0x16fa, 0x16fa, 0x0002, - 0x0057, 0x1714, 0x1714, 0x0003, 0x0388, 0x038b, 0x0390, 0x0001, - 0x0057, 0x1732, 0x0003, 0x0057, 0x173d, 0x175b, 0x1770, 0x0002, - 0x0393, 0x0397, 0x0002, 0x0057, 0x16fa, 0x16fa, 0x0002, 0x0057, - 0x1714, 0x1714, 0x0004, 0x03a0, 0x03a3, 0x03a8, 0x03b3, 0x0001, - // Entry 3DFC0 - 3DFFF - 0x0057, 0x1785, 0x0003, 0x0057, 0x1792, 0x17b2, 0x17c9, 0x0002, - 0x03ab, 0x03af, 0x0002, 0x0057, 0x17e0, 0x17e0, 0x0002, 0x0057, - 0x17fa, 0x17fa, 0x0001, 0x0057, 0x1818, 0x0004, 0x03bb, 0x03be, - 0x03c3, 0x03ce, 0x0001, 0x0057, 0x1836, 0x0003, 0x0057, 0x1841, - 0x185f, 0x1874, 0x0002, 0x03c6, 0x03ca, 0x0002, 0x0057, 0x17e0, - 0x17e0, 0x0002, 0x0057, 0x17fa, 0x17fa, 0x0001, 0x0057, 0x1818, - 0x0004, 0x03d6, 0x03d9, 0x03de, 0x03e9, 0x0001, 0x0057, 0x1836, - 0x0003, 0x0057, 0x1841, 0x185f, 0x1874, 0x0002, 0x03e1, 0x03e5, - // Entry 3E000 - 3E03F - 0x0002, 0x0057, 0x17e0, 0x17e0, 0x0002, 0x0057, 0x17fa, 0x17fa, - 0x0001, 0x0057, 0x1818, 0x0003, 0x03f0, 0x03f3, 0x03fa, 0x0001, - 0x0057, 0x1889, 0x0005, 0x0057, 0x18a9, 0x18b3, 0x18ba, 0x1896, - 0x18c4, 0x0002, 0x03fd, 0x0401, 0x0002, 0x0057, 0x18da, 0x18da, - 0x0002, 0x0057, 0x18ee, 0x18ee, 0x0003, 0x0409, 0x0000, 0x040c, - 0x0001, 0x0057, 0x1889, 0x0002, 0x040f, 0x0413, 0x0002, 0x0057, - 0x18da, 0x18da, 0x0002, 0x0057, 0x18ee, 0x18ee, 0x0003, 0x041b, - 0x0000, 0x041e, 0x0001, 0x0057, 0x1889, 0x0002, 0x0421, 0x0425, - // Entry 3E040 - 3E07F - 0x0002, 0x0057, 0x18da, 0x18da, 0x0002, 0x0057, 0x18ee, 0x18ee, - 0x0001, 0x042b, 0x0001, 0x0057, 0x190c, 0x0003, 0x0000, 0x0432, - 0x0437, 0x0003, 0x0057, 0x1929, 0x194c, 0x1963, 0x0002, 0x043a, - 0x043e, 0x0002, 0x0057, 0x19a0, 0x197d, 0x0002, 0x0057, 0x19f1, - 0x19ca, 0x0003, 0x0000, 0x0446, 0x044b, 0x0003, 0x0057, 0x1929, - 0x194c, 0x1963, 0x0002, 0x044e, 0x0452, 0x0002, 0x0057, 0x19a0, - 0x19a0, 0x0002, 0x0057, 0x19f1, 0x19f1, 0x0003, 0x0000, 0x045a, - 0x045f, 0x0003, 0x0057, 0x1929, 0x194c, 0x1963, 0x0002, 0x0462, - // Entry 3E080 - 3E0BF - 0x0466, 0x0002, 0x0057, 0x19a0, 0x19a0, 0x0002, 0x0057, 0x19f1, - 0x19f1, 0x0003, 0x0000, 0x046e, 0x0473, 0x0003, 0x0057, 0x1a1f, - 0x1a42, 0x1a59, 0x0002, 0x0476, 0x047a, 0x0002, 0x0057, 0x1a96, - 0x1a73, 0x0002, 0x0057, 0x1ae7, 0x1ac0, 0x0003, 0x0000, 0x0482, - 0x0487, 0x0003, 0x0057, 0x1a1f, 0x1a42, 0x1a59, 0x0002, 0x048a, - 0x048e, 0x0002, 0x0057, 0x1a96, 0x1a96, 0x0002, 0x0057, 0x1ae7, - 0x1ae7, 0x0003, 0x0000, 0x0496, 0x049b, 0x0003, 0x0057, 0x1a1f, - 0x1a42, 0x1a59, 0x0002, 0x049e, 0x04a2, 0x0002, 0x0057, 0x1a96, - // Entry 3E0C0 - 3E0FF - 0x1a96, 0x0002, 0x0057, 0x1ae7, 0x1ae7, 0x0003, 0x0000, 0x04aa, - 0x04af, 0x0003, 0x0057, 0x1b15, 0x1b44, 0x1b67, 0x0002, 0x04b2, - 0x04b6, 0x0002, 0x0057, 0x1bbc, 0x1b8d, 0x0002, 0x0057, 0x1c25, - 0x1bf2, 0x0003, 0x0000, 0x04be, 0x04c3, 0x0003, 0x0057, 0x1b15, - 0x1b44, 0x1b67, 0x0002, 0x04c6, 0x04ca, 0x0002, 0x0057, 0x1bbc, - 0x1bbc, 0x0002, 0x0057, 0x1c25, 0x1c25, 0x0003, 0x0000, 0x04d2, - 0x04d7, 0x0003, 0x0057, 0x1b15, 0x1b44, 0x1b67, 0x0002, 0x04da, - 0x04de, 0x0002, 0x0057, 0x1bbc, 0x1bbc, 0x0002, 0x0057, 0x1c25, - // Entry 3E100 - 3E13F - 0x1c25, 0x0003, 0x0000, 0x04e6, 0x04eb, 0x0003, 0x0057, 0x1c5f, - 0x1c82, 0x1c99, 0x0002, 0x04ee, 0x04f2, 0x0002, 0x0057, 0x1cd6, - 0x1cb3, 0x0002, 0x0057, 0x1d27, 0x1d00, 0x0003, 0x0000, 0x04fa, - 0x04ff, 0x0003, 0x0057, 0x1c5f, 0x1c82, 0x1c99, 0x0002, 0x0502, - 0x0506, 0x0002, 0x0057, 0x1cd6, 0x1cd6, 0x0002, 0x0057, 0x1d27, - 0x1d27, 0x0003, 0x0000, 0x050e, 0x0513, 0x0003, 0x0057, 0x1c5f, - 0x1c82, 0x1c99, 0x0002, 0x0516, 0x051a, 0x0002, 0x0057, 0x1cd6, - 0x1cd6, 0x0002, 0x0057, 0x1d27, 0x1d27, 0x0003, 0x0000, 0x0522, - // Entry 3E140 - 3E17F - 0x0527, 0x0003, 0x0057, 0x1d55, 0x1d93, 0x1dc5, 0x0002, 0x052a, - 0x052e, 0x0002, 0x0057, 0x1e38, 0x1dfa, 0x0002, 0x0057, 0x1ebf, - 0x1e7d, 0x0003, 0x0000, 0x0536, 0x053b, 0x0003, 0x0057, 0x1d55, - 0x1d93, 0x1dc5, 0x0002, 0x053e, 0x0542, 0x0002, 0x0057, 0x1e38, - 0x1e38, 0x0002, 0x0057, 0x1ebf, 0x1ebf, 0x0003, 0x0000, 0x054a, - 0x054f, 0x0003, 0x0057, 0x1d55, 0x1d93, 0x1dc5, 0x0002, 0x0552, - 0x0556, 0x0002, 0x0057, 0x1e38, 0x1e38, 0x0002, 0x0057, 0x1ebf, - 0x1ebf, 0x0003, 0x0000, 0x055e, 0x0563, 0x0003, 0x0057, 0x1f08, - // Entry 3E180 - 3E1BF - 0x1f34, 0x1f54, 0x0002, 0x0566, 0x056a, 0x0002, 0x0057, 0x1fa1, - 0x1f77, 0x0002, 0x0057, 0x1fff, 0x1fd2, 0x0003, 0x0000, 0x0572, - 0x0577, 0x0003, 0x0057, 0x1f08, 0x1f34, 0x1f54, 0x0002, 0x057a, - 0x057e, 0x0002, 0x0057, 0x1fa1, 0x1fa1, 0x0002, 0x0057, 0x1fff, - 0x1fff, 0x0003, 0x0000, 0x0586, 0x058b, 0x0003, 0x0057, 0x1f08, - 0x1f34, 0x1f54, 0x0002, 0x058e, 0x0592, 0x0002, 0x0057, 0x1fa1, - 0x1fa1, 0x0002, 0x0057, 0x1fff, 0x1fff, 0x0003, 0x0000, 0x059a, - 0x059f, 0x0003, 0x0058, 0x0000, 0x002f, 0x0052, 0x0002, 0x05a2, - // Entry 3E1C0 - 3E1FF - 0x05a6, 0x0002, 0x0058, 0x00a6, 0x0078, 0x0002, 0x0058, 0x010e, - 0x00dd, 0x0003, 0x0000, 0x05ae, 0x05b3, 0x0003, 0x0058, 0x0000, - 0x002f, 0x0052, 0x0002, 0x05b6, 0x05ba, 0x0002, 0x0058, 0x00a6, - 0x00a6, 0x0002, 0x0058, 0x010e, 0x010e, 0x0003, 0x0000, 0x05c2, - 0x05c7, 0x0003, 0x0058, 0x0000, 0x002f, 0x0052, 0x0002, 0x05ca, - 0x05ce, 0x0002, 0x0058, 0x00a6, 0x00a6, 0x0002, 0x0058, 0x010e, - 0x010e, 0x0001, 0x05d4, 0x0001, 0x0058, 0x0148, 0x0003, 0x05db, - 0x05de, 0x05e2, 0x0001, 0x0058, 0x015b, 0x0002, 0x0058, 0xffff, - // Entry 3E200 - 3E23F - 0x0165, 0x0002, 0x05e5, 0x05e9, 0x0002, 0x0058, 0x0179, 0x0179, - 0x0002, 0x0058, 0x0193, 0x0193, 0x0003, 0x05f1, 0x0000, 0x05f4, - 0x0001, 0x0058, 0x015b, 0x0002, 0x05f7, 0x05fb, 0x0002, 0x0058, - 0x0179, 0x0179, 0x0002, 0x0058, 0x0193, 0x0193, 0x0003, 0x0603, - 0x0000, 0x0606, 0x0001, 0x0058, 0x01b1, 0x0002, 0x0609, 0x060d, - 0x0002, 0x0058, 0x0179, 0x0179, 0x0002, 0x0058, 0x0193, 0x0193, - 0x0003, 0x0615, 0x0618, 0x061c, 0x0001, 0x0058, 0x01b8, 0x0002, - 0x0058, 0xffff, 0x01d4, 0x0002, 0x061f, 0x0623, 0x0002, 0x0058, - // Entry 3E240 - 3E27F - 0x01fa, 0x01fa, 0x0002, 0x0058, 0x0223, 0x0223, 0x0003, 0x062b, - 0x0000, 0x062e, 0x0001, 0x0058, 0x0250, 0x0002, 0x0631, 0x0635, - 0x0002, 0x0058, 0x01fa, 0x01fa, 0x0002, 0x0058, 0x0223, 0x0223, - 0x0003, 0x063d, 0x0000, 0x0640, 0x0001, 0x0058, 0x025e, 0x0002, - 0x0643, 0x0647, 0x0002, 0x0058, 0x01fa, 0x01fa, 0x0002, 0x0058, - 0x0223, 0x0223, 0x0003, 0x064f, 0x0652, 0x0656, 0x0001, 0x0058, - 0x0265, 0x0002, 0x0058, 0xffff, 0x0278, 0x0002, 0x0659, 0x065d, - 0x0002, 0x0058, 0x0285, 0x0285, 0x0002, 0x0058, 0x02a5, 0x02a5, - // Entry 3E280 - 3E2BF - 0x0003, 0x0665, 0x0000, 0x0668, 0x0001, 0x0058, 0x02c9, 0x0002, - 0x066b, 0x066f, 0x0002, 0x0058, 0x0285, 0x0285, 0x0002, 0x0058, - 0x02a5, 0x02a5, 0x0003, 0x0677, 0x0000, 0x067a, 0x0001, 0x0058, - 0x02d4, 0x0002, 0x067d, 0x0681, 0x0002, 0x0058, 0x0285, 0x0285, - 0x0002, 0x0058, 0x02a5, 0x02a5, 0x0001, 0x0687, 0x0001, 0x0058, - 0x02d8, 0x0004, 0x068f, 0x0694, 0x0699, 0x06a4, 0x0003, 0x0008, - 0x1d98, 0x4f35, 0x4f51, 0x0003, 0x0058, 0x02f2, 0x0306, 0x0333, - 0x0002, 0x0000, 0x069c, 0x0002, 0x0000, 0x069f, 0x0003, 0x0058, - // Entry 3E2C0 - 3E2FF - 0xffff, 0x0357, 0x039c, 0x0002, 0x0000, 0x06a7, 0x0003, 0x0749, - 0x07df, 0x06ab, 0x009c, 0x0058, 0x03d8, 0x040a, 0x044c, 0x0494, - 0x0512, 0x05d9, 0x066e, 0x072c, 0x083f, 0x0955, 0x0a62, 0xffff, - 0x0b4f, 0x0bcc, 0x0c5b, 0x0d1e, 0x0dee, 0x0ea1, 0x0f7c, 0x1083, - 0x11b3, 0x12c6, 0x13ae, 0x1461, 0x14ff, 0x1577, 0x1597, 0x15e6, - 0x1658, 0x16c3, 0x173b, 0x177b, 0x17f5, 0x186f, 0x18f5, 0x1982, - 0x19c1, 0x1a23, 0x1ad4, 0x1b8a, 0x1c05, 0x1c28, 0x1c6d, 0x1cdc, - 0x1d68, 0x1dca, 0x1ea4, 0x1f4b, 0x1fcd, 0x209e, 0x2159, 0x21bc, - // Entry 3E300 - 3E33F - 0x21ec, 0x2257, 0x227d, 0x22d8, 0x235f, 0x239b, 0x2425, 0x2523, - 0x25cd, 0x25ed, 0x264c, 0x271c, 0x27ae, 0x281d, 0x2849, 0x287f, - 0x28a8, 0x28f3, 0x2944, 0x29a9, 0x2a2f, 0x2ae5, 0x2b74, 0xffff, - 0x2bce, 0x2c10, 0x2c72, 0x2ce4, 0x2d48, 0x2df3, 0x2e52, 0x2eb2, - 0x2f2f, 0x2f8e, 0x2ffd, 0x302c, 0x305b, 0x308d, 0x30e6, 0x3152, - 0x31ab, 0x327c, 0x3359, 0x3408, 0x347d, 0x34a9, 0x34cc, 0x3525, - 0x35e9, 0x3690, 0x3729, 0x3746, 0x37cb, 0x38c1, 0x3980, 0x3a21, - 0x3a9f, 0x3abf, 0x3b28, 0x3bb7, 0x3c3d, 0x3cb2, 0x3d38, 0x3dfb, - // Entry 3E340 - 3E37F - 0x3e2a, 0x3e4a, 0x3e7c, 0x3ea8, 0x3eee, 0xffff, 0x3f80, 0x3fef, - 0x4018, 0x4047, 0x407d, 0x40b0, 0x40d6, 0x40f9, 0x413f, 0x41a5, - 0x41d4, 0x421d, 0x4286, 0x42de, 0x437d, 0x43c6, 0x446d, 0x4523, - 0x458f, 0x45f6, 0x46c7, 0x4760, 0x4789, 0x47b6, 0x481f, 0x48db, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e25, - 0x0094, 0x0058, 0xffff, 0xffff, 0xffff, 0xffff, 0x04d3, 0x05b6, - 0x0648, 0x06e0, 0x07ed, 0x090c, 0x0a10, 0xffff, 0x0b2f, 0x0bac, - 0x0c2c, 0x0cdf, 0x0dc2, 0x0e6f, 0x0f2e, 0x1025, 0x115f, 0x127b, - // Entry 3E380 - 3E3BF - 0x137c, 0x143b, 0x14d6, 0xffff, 0xffff, 0x15c0, 0xffff, 0x169a, - 0xffff, 0x175b, 0x17d8, 0x1855, 0x18c3, 0xffff, 0xffff, 0x19f4, - 0x1aa7, 0x1b61, 0xffff, 0xffff, 0xffff, 0x1ca9, 0xffff, 0x1d91, - 0x1e65, 0xffff, 0x1f97, 0x2062, 0x213c, 0xffff, 0xffff, 0xffff, - 0xffff, 0x22a9, 0xffff, 0xffff, 0x23da, 0x24e1, 0xffff, 0xffff, - 0x260a, 0x26f9, 0x278b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x298c, 0x29fd, 0x2abc, 0x2b57, 0xffff, 0xffff, 0xffff, - 0x2c49, 0xffff, 0x2d07, 0xffff, 0xffff, 0x2e82, 0xffff, 0x2f6b, - // Entry 3E3C0 - 3E3FF - 0xffff, 0xffff, 0xffff, 0xffff, 0x30c3, 0xffff, 0x3178, 0x323a, - 0x3329, 0x33e2, 0xffff, 0xffff, 0xffff, 0x34ec, 0x35c0, 0x3658, - 0xffff, 0xffff, 0x377f, 0x3889, 0x395a, 0x39f5, 0xffff, 0xffff, - 0x3b02, 0x3b9a, 0x3c17, 0xffff, 0x3ceb, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3ecb, 0xffff, 0x3f5d, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x411c, 0xffff, 0xffff, 0x41fd, - 0xffff, 0x42a3, 0xffff, 0x43a0, 0x4438, 0x4500, 0xffff, 0x45be, - 0x468f, 0xffff, 0xffff, 0xffff, 0x47f3, 0x48a0, 0x0094, 0x0058, - // Entry 3E400 - 3E43F - 0xffff, 0xffff, 0xffff, 0xffff, 0x0561, 0x060c, 0x06a4, 0x0788, - 0x08a1, 0x09ae, 0x0ac4, 0xffff, 0x0b7f, 0x0bfc, 0x0c9a, 0x0d6d, - 0x0e2a, 0x0ee3, 0x0fc7, 0x10f1, 0x1217, 0x1321, 0x13f0, 0x1497, - 0x1538, 0xffff, 0xffff, 0x161c, 0xffff, 0x16fc, 0xffff, 0x17ab, - 0x1822, 0x1899, 0x1937, 0xffff, 0xffff, 0x1a62, 0x1b11, 0x1bc3, - 0xffff, 0xffff, 0xffff, 0x1d1f, 0xffff, 0x1e13, 0x1ef3, 0xffff, - 0x2013, 0x20ea, 0x2186, 0xffff, 0xffff, 0xffff, 0xffff, 0x2317, - 0xffff, 0xffff, 0x2480, 0x2575, 0xffff, 0xffff, 0x269e, 0x274f, - // Entry 3E440 - 3E47F - 0x27e1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x29d6, - 0x2a71, 0x2b1e, 0x2ba1, 0xffff, 0xffff, 0xffff, 0x2cab, 0xffff, - 0x2d99, 0xffff, 0xffff, 0x2ef2, 0xffff, 0x2fc1, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3119, 0xffff, 0x31ee, 0x32ce, 0x3399, 0x343e, - 0xffff, 0xffff, 0xffff, 0x356e, 0x3622, 0x36d8, 0xffff, 0xffff, - 0x3827, 0x3909, 0x39b6, 0x3a5d, 0xffff, 0xffff, 0x3b5e, 0x3be4, - 0x3c73, 0xffff, 0x3d95, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3f21, 0xffff, 0x3fb3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3E480 - 3E4BF - 0xffff, 0xffff, 0x4172, 0xffff, 0xffff, 0x424d, 0xffff, 0x4329, - 0xffff, 0x43fc, 0x44b2, 0x4556, 0xffff, 0x463e, 0x470f, 0xffff, - 0xffff, 0xffff, 0x485b, 0x4926, 0x0003, 0x0004, 0x0268, 0x07b6, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0059, 0x0000, 0x0001, 0x0013, 0x0483, 0x0001, 0x0013, 0x0483, - 0x0001, 0x0008, 0x062f, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - // Entry 3E4C0 - 3E4FF - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0041, 0x00a6, 0x00fd, - 0x0132, 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x000d, 0xffff, 0x0059, - 0x32b8, 0x3399, 0x32c0, 0x33b1, 0x33b6, 0x33bb, 0x3238, 0x32fb, - 0x32ff, 0x3303, 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, - 0x3a8d, 0x1f9c, 0x3a8d, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, - 0x3a8f, 0x3a91, 0x000d, 0x0059, 0xffff, 0x0010, 0x0019, 0x0023, - // Entry 3E500 - 3E53F - 0x0029, 0x0031, 0x0037, 0x003d, 0x0043, 0x004b, 0x0055, 0x005e, - 0x0067, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x000d, 0xffff, - 0x0059, 0x32b8, 0x3399, 0x32c0, 0x33b1, 0x33b6, 0x33bb, 0x3238, - 0x32fb, 0x32ff, 0x3303, 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, - 0x2006, 0x3a8d, 0x1f9c, 0x3a8d, 0x214a, 0x214a, 0x1f9c, 0x2002, - 0x1f98, 0x3a8f, 0x3a91, 0x000d, 0x0030, 0xffff, 0x003b, 0x0043, - 0x25bf, 0x25c5, 0x25cc, 0x25d1, 0x25d6, 0x25db, 0x25e2, 0x25ec, - 0x25f5, 0x25fe, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, - // Entry 3E540 - 3E57F - 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0013, 0x0587, 0x058a, 0x311d, - 0x3120, 0x3123, 0x3127, 0x312a, 0x0007, 0x0000, 0x3a8f, 0x21ec, - 0x2010, 0x2002, 0x2590, 0x21ec, 0x2002, 0x0007, 0x0013, 0x0587, - 0x058a, 0x311d, 0x3120, 0x3123, 0x3127, 0x312a, 0x0007, 0x0059, - 0x0070, 0x0078, 0x0081, 0x0088, 0x008f, 0x0098, 0x009f, 0x0005, - 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0013, 0x0587, - 0x058a, 0x311d, 0x3120, 0x3123, 0x3127, 0x312a, 0x0007, 0x0000, - 0x3a8f, 0x21ec, 0x2010, 0x2002, 0x2590, 0x21ec, 0x2002, 0x0007, - // Entry 3E580 - 3E5BF - 0x0013, 0x0587, 0x058a, 0x311d, 0x3120, 0x3123, 0x3127, 0x312a, - 0x0007, 0x0059, 0x0070, 0x0078, 0x0081, 0x0088, 0x008f, 0x0098, - 0x009f, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0059, - 0xffff, 0x00a6, 0x00b4, 0x00c2, 0x00d0, 0x0003, 0x011d, 0x0124, - 0x012b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - // Entry 3E5C0 - 3E5FF - 0x0059, 0xffff, 0x00a6, 0x00b4, 0x00c2, 0x00d0, 0x0002, 0x0135, - 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, 0x014c, - 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, 0x0001, - 0x0059, 0x00de, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0059, 0x00e6, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0013, 0x0657, 0x0001, 0x0059, - 0x00ed, 0x0001, 0x0059, 0x00f4, 0x0001, 0x0013, 0x0671, 0x0001, - 0x0013, 0x0678, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, 0x017a, - 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, 0x0059, 0x00de, 0x0001, - // Entry 3E600 - 3E63F - 0x0000, 0x04ef, 0x0001, 0x0059, 0x00fb, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x0013, 0x0657, 0x0001, 0x0013, 0x061b, 0x0001, 0x002f, - 0x004f, 0x0001, 0x0013, 0x062d, 0x0001, 0x0013, 0x0633, 0x0009, - 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, 0x0193, - 0x019c, 0x0001, 0x0059, 0x0100, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0059, 0x010a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0013, 0x0657, - 0x0001, 0x0059, 0x0115, 0x0001, 0x0059, 0x0120, 0x0001, 0x0013, - 0x0671, 0x0001, 0x0013, 0x0678, 0x0003, 0x01ac, 0x01d1, 0x01f6, - // Entry 3E640 - 3E67F - 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, 0x01ce, - 0x01bc, 0x01c5, 0x0001, 0x0059, 0x012b, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0013, 0x0620, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0013, - 0x0657, 0x0001, 0x0059, 0x00ed, 0x0001, 0x0059, 0x00f4, 0x0001, - 0x0013, 0x0671, 0x0001, 0x0013, 0x067f, 0x0009, 0x01de, 0x01e4, - 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, 0x0001, - 0x0059, 0x012b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0013, 0x0620, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0013, 0x0657, 0x0001, 0x0013, - // Entry 3E680 - 3E6BF - 0x061b, 0x0001, 0x002f, 0x004f, 0x0001, 0x0013, 0x062d, 0x0001, - 0x0013, 0x067f, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, 0x0212, - 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, 0x0059, 0x0131, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0059, 0x0138, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x0013, 0x0657, 0x0001, 0x0059, 0x0141, 0x0001, 0x0059, - 0x014c, 0x0001, 0x0013, 0x0671, 0x0001, 0x0013, 0x067f, 0x0003, - 0x022a, 0x0000, 0x021f, 0x0002, 0x0222, 0x0226, 0x0002, 0x0059, - 0x0157, 0x017d, 0x0002, 0x0059, 0x0164, 0x0189, 0x0002, 0x022d, - // Entry 3E6C0 - 3E6FF - 0x0231, 0x0002, 0x0059, 0x019c, 0x01b0, 0x0002, 0x0059, 0x01a5, - 0x01b7, 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, 0x0016, - 0x0460, 0x0001, 0x0013, 0x06b1, 0x0001, 0x0013, 0x0357, 0x0001, - 0x0013, 0x0357, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, 0x0001, - 0x0005, 0x0082, 0x0001, 0x0005, 0x008f, 0x0001, 0x0005, 0x0099, - 0x0001, 0x0005, 0x00a1, 0x0004, 0x0265, 0x025f, 0x025c, 0x0262, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02a9, 0x0000, 0x0000, - // Entry 3E700 - 3E73F - 0x02ae, 0x02cd, 0x02e7, 0x0301, 0x0320, 0x033f, 0x035e, 0x037d, - 0x0397, 0x03b1, 0x03d4, 0x03f2, 0x0000, 0x0000, 0x0000, 0x0410, - 0x0431, 0x044b, 0x0000, 0x0000, 0x0000, 0x0465, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x046a, 0x0486, 0x04a2, 0x04be, 0x04da, - 0x04f6, 0x0512, 0x052e, 0x054a, 0x0566, 0x0582, 0x059e, 0x05ba, - 0x05d6, 0x05f2, 0x060e, 0x062a, 0x0646, 0x0662, 0x067e, 0x069a, - 0x0000, 0x06b6, 0x0000, 0x06bb, 0x06d9, 0x06f3, 0x070d, 0x072b, - 0x0745, 0x075f, 0x077d, 0x0797, 0x07b1, 0x0001, 0x02ab, 0x0001, - // Entry 3E740 - 3E77F - 0x0013, 0x06dc, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x0013, - 0x06e7, 0x0003, 0x0013, 0x06eb, 0x06f7, 0x312d, 0x0002, 0x02bd, - 0x02c5, 0x0006, 0x0059, 0x01dd, 0x01bd, 0xffff, 0xffff, 0x01c7, - 0x01d2, 0x0006, 0x0059, 0x01f8, 0x01e9, 0xffff, 0xffff, 0x01f8, - 0x0207, 0x0003, 0x02d1, 0x0000, 0x02d4, 0x0001, 0x0013, 0x062a, - 0x0002, 0x02d7, 0x02df, 0x0006, 0x0059, 0x0215, 0x0215, 0xffff, - 0xffff, 0x0215, 0x0215, 0x0006, 0x0059, 0x021e, 0x021e, 0xffff, - 0xffff, 0x021e, 0x021e, 0x0003, 0x02eb, 0x0000, 0x02ee, 0x0001, - // Entry 3E780 - 3E7BF - 0x0013, 0x062a, 0x0002, 0x02f1, 0x02f9, 0x0006, 0x0059, 0x0215, - 0x0215, 0xffff, 0xffff, 0x0215, 0x0215, 0x0006, 0x0059, 0x021e, - 0x021e, 0xffff, 0xffff, 0x021e, 0x021e, 0x0003, 0x0305, 0x0308, - 0x030d, 0x0001, 0x0059, 0x022a, 0x0003, 0x0059, 0x0235, 0x0248, - 0x0259, 0x0002, 0x0310, 0x0318, 0x0006, 0x0059, 0x02a1, 0x026c, - 0xffff, 0xffff, 0x027d, 0x028f, 0x0006, 0x0059, 0x02ca, 0x02b4, - 0xffff, 0xffff, 0x02ca, 0x02e0, 0x0003, 0x0324, 0x0327, 0x032c, - 0x0001, 0x0000, 0x3911, 0x0003, 0x0059, 0x02f5, 0x0307, 0x0317, - // Entry 3E7C0 - 3E7FF - 0x0002, 0x032f, 0x0337, 0x0006, 0x0059, 0x0329, 0x0329, 0xffff, - 0xffff, 0x0329, 0x0329, 0x0006, 0x0059, 0x0339, 0x0339, 0xffff, - 0xffff, 0x0339, 0x0339, 0x0003, 0x0343, 0x0346, 0x034b, 0x0001, - 0x0000, 0x3911, 0x0003, 0x0059, 0x02f5, 0x0307, 0x0317, 0x0002, - 0x034e, 0x0356, 0x0006, 0x0059, 0x0329, 0x0329, 0xffff, 0xffff, - 0x0329, 0x0329, 0x0006, 0x0059, 0x0339, 0x0339, 0xffff, 0xffff, - 0x0339, 0x0339, 0x0003, 0x0362, 0x0365, 0x036a, 0x0001, 0x0059, - 0x034c, 0x0003, 0x0059, 0x0353, 0x0362, 0x036f, 0x0002, 0x036d, - // Entry 3E800 - 3E83F - 0x0375, 0x0006, 0x0059, 0x03a7, 0x037e, 0xffff, 0xffff, 0x038b, - 0x0399, 0x0006, 0x0059, 0x03c8, 0x03b6, 0xffff, 0xffff, 0x03c8, - 0x03da, 0x0003, 0x0381, 0x0000, 0x0384, 0x0001, 0x0059, 0x03eb, - 0x0002, 0x0387, 0x038f, 0x0006, 0x0059, 0x03f0, 0x03f0, 0xffff, - 0xffff, 0x03f0, 0x03f0, 0x0006, 0x0059, 0x03fb, 0x03fb, 0xffff, - 0xffff, 0x03fb, 0x03fb, 0x0003, 0x039b, 0x0000, 0x039e, 0x0001, - 0x0059, 0x03eb, 0x0002, 0x03a1, 0x03a9, 0x0006, 0x0059, 0x03f0, - 0x03f0, 0xffff, 0xffff, 0x03f0, 0x03f0, 0x0006, 0x0059, 0x03fb, - // Entry 3E840 - 3E87F - 0x03fb, 0xffff, 0xffff, 0x03fb, 0x03fb, 0x0004, 0x03b6, 0x03b9, - 0x03be, 0x03d1, 0x0001, 0x0059, 0x0409, 0x0003, 0x0059, 0x0413, - 0x0425, 0x0435, 0x0002, 0x03c1, 0x03c9, 0x0006, 0x0059, 0x0476, - 0x0447, 0xffff, 0xffff, 0x0457, 0x0466, 0x0006, 0x0059, 0x049b, - 0x0487, 0xffff, 0xffff, 0x049b, 0x04b0, 0x0001, 0x0059, 0x04c3, - 0x0004, 0x03d9, 0x0000, 0x03dc, 0x03ef, 0x0001, 0x0059, 0x04d6, - 0x0002, 0x03df, 0x03e7, 0x0006, 0x0059, 0x04dd, 0x04dd, 0xffff, - 0xffff, 0x04dd, 0x04dd, 0x0006, 0x0059, 0x04ea, 0x04ea, 0xffff, - // Entry 3E880 - 3E8BF - 0xffff, 0x04ea, 0x04ea, 0x0001, 0x0059, 0x04fa, 0x0004, 0x03f7, - 0x0000, 0x03fa, 0x040d, 0x0001, 0x0059, 0x04d6, 0x0002, 0x03fd, - 0x0405, 0x0006, 0x0059, 0x04dd, 0x04dd, 0xffff, 0xffff, 0x04dd, - 0x04dd, 0x0006, 0x0059, 0x04ea, 0x04ea, 0xffff, 0xffff, 0x04ea, - 0x04ea, 0x0001, 0x0059, 0x04fa, 0x0003, 0x0414, 0x0417, 0x041e, - 0x0001, 0x0059, 0x050a, 0x0005, 0x0059, 0x051b, 0x0522, 0x0527, - 0x050f, 0x052e, 0x0002, 0x0421, 0x0429, 0x0006, 0x0059, 0x0557, - 0x0537, 0xffff, 0xffff, 0x0542, 0x054c, 0x0006, 0x0059, 0x0571, - // Entry 3E8C0 - 3E8FF - 0x0562, 0xffff, 0xffff, 0x0571, 0x0581, 0x0003, 0x0435, 0x0000, - 0x0438, 0x0001, 0x0029, 0x008f, 0x0002, 0x043b, 0x0443, 0x0006, - 0x0059, 0x058f, 0x058f, 0xffff, 0xffff, 0x058f, 0x058f, 0x0006, - 0x0059, 0x0598, 0x0598, 0xffff, 0xffff, 0x0598, 0x0598, 0x0003, - 0x044f, 0x0000, 0x0452, 0x0001, 0x0029, 0x008f, 0x0002, 0x0455, - 0x045d, 0x0006, 0x0059, 0x058f, 0x058f, 0xffff, 0xffff, 0x058f, - 0x058f, 0x0006, 0x0059, 0x0598, 0x0598, 0xffff, 0xffff, 0x0598, - 0x0598, 0x0001, 0x0467, 0x0001, 0x0059, 0x05a4, 0x0003, 0x0000, - // Entry 3E900 - 3E93F - 0x046e, 0x0473, 0x0003, 0x0059, 0x05b3, 0x05c3, 0x05d1, 0x0002, - 0x0476, 0x047e, 0x0006, 0x0059, 0x05fc, 0x05e1, 0xffff, 0xffff, - 0x05ef, 0x05ef, 0x0006, 0x0059, 0x061c, 0x060a, 0xffff, 0xffff, - 0x061c, 0x062f, 0x0003, 0x0000, 0x048a, 0x048f, 0x0003, 0x0059, - 0x063f, 0x064c, 0x0657, 0x0002, 0x0492, 0x049a, 0x0006, 0x0059, - 0x0664, 0x0664, 0xffff, 0xffff, 0x0664, 0x0664, 0x0006, 0x0059, - 0x066f, 0x066f, 0xffff, 0xffff, 0x066f, 0x066f, 0x0003, 0x0000, - 0x04a6, 0x04ab, 0x0003, 0x0059, 0x067d, 0x0689, 0x0693, 0x0002, - // Entry 3E940 - 3E97F - 0x04ae, 0x04b6, 0x0006, 0x0059, 0x069f, 0x069f, 0xffff, 0xffff, - 0x069f, 0x069f, 0x0006, 0x0059, 0x06a9, 0x06a9, 0xffff, 0xffff, - 0x06a9, 0x06a9, 0x0003, 0x0000, 0x04c2, 0x04c7, 0x0003, 0x0059, - 0x06b6, 0x06c7, 0x06d6, 0x0002, 0x04ca, 0x04d2, 0x0006, 0x0059, - 0x0714, 0x06e7, 0xffff, 0xffff, 0x06f6, 0x0705, 0x0006, 0x0059, - 0x0737, 0x0724, 0xffff, 0xffff, 0x0737, 0x074b, 0x0003, 0x0000, - 0x04de, 0x04e3, 0x0003, 0x0059, 0x075d, 0x076b, 0x0777, 0x0002, - 0x04e6, 0x04ee, 0x0006, 0x0059, 0x0785, 0x0785, 0xffff, 0xffff, - // Entry 3E980 - 3E9BF - 0x0785, 0x0785, 0x0006, 0x0059, 0x0791, 0x0791, 0xffff, 0xffff, - 0x0791, 0x0791, 0x0003, 0x0000, 0x04fa, 0x04ff, 0x0003, 0x0059, - 0x07a0, 0x07ac, 0x07b6, 0x0002, 0x0502, 0x050a, 0x0006, 0x0059, - 0x07c2, 0x07c2, 0xffff, 0xffff, 0x07c2, 0x07c2, 0x0006, 0x0059, - 0x07cc, 0x07cc, 0xffff, 0xffff, 0x07cc, 0x07cc, 0x0003, 0x0000, - 0x0516, 0x051b, 0x0003, 0x0059, 0x07d9, 0x07e8, 0x07f5, 0x0002, - 0x051e, 0x0526, 0x0006, 0x0059, 0x082b, 0x0804, 0xffff, 0xffff, - 0x0811, 0x081e, 0x0006, 0x0059, 0x084a, 0x0839, 0xffff, 0xffff, - // Entry 3E9C0 - 3E9FF - 0x084a, 0x085c, 0x0003, 0x0000, 0x0532, 0x0537, 0x0003, 0x0059, - 0x086c, 0x087a, 0x0886, 0x0002, 0x053a, 0x0542, 0x0006, 0x0059, - 0x0894, 0x0894, 0xffff, 0xffff, 0x0894, 0x0894, 0x0006, 0x0059, - 0x08a0, 0x08a0, 0xffff, 0xffff, 0x08a0, 0x08a0, 0x0003, 0x0000, - 0x054e, 0x0553, 0x0003, 0x0059, 0x08af, 0x08bb, 0x08c5, 0x0002, - 0x0556, 0x055e, 0x0006, 0x0059, 0x08d1, 0x08d1, 0xffff, 0xffff, - 0x08d1, 0x08d1, 0x0006, 0x0059, 0x08db, 0x08db, 0xffff, 0xffff, - 0x08db, 0x08db, 0x0003, 0x0000, 0x056a, 0x056f, 0x0003, 0x0059, - // Entry 3EA00 - 3EA3F - 0x08e8, 0x08f7, 0x0904, 0x0002, 0x0572, 0x057a, 0x0006, 0x0059, - 0x092d, 0x0913, 0xffff, 0xffff, 0x0920, 0x0920, 0x0006, 0x0059, - 0x094b, 0x093a, 0xffff, 0xffff, 0x094b, 0x095d, 0x0003, 0x0000, - 0x0586, 0x058b, 0x0003, 0x0059, 0x096d, 0x097a, 0x0985, 0x0002, - 0x058e, 0x0596, 0x0006, 0x0059, 0x0992, 0x0992, 0xffff, 0xffff, - 0x0992, 0x0992, 0x0006, 0x0059, 0x099d, 0x099d, 0xffff, 0xffff, - 0x099d, 0x099d, 0x0003, 0x0000, 0x05a2, 0x05a7, 0x0003, 0x0059, - 0x09ab, 0x09b7, 0x09c1, 0x0002, 0x05aa, 0x05b2, 0x0006, 0x0059, - // Entry 3EA40 - 3EA7F - 0x09cd, 0x09cd, 0xffff, 0xffff, 0x09cd, 0x09cd, 0x0006, 0x0059, - 0x09d7, 0x09d7, 0xffff, 0xffff, 0x09d7, 0x09d7, 0x0003, 0x0000, - 0x05be, 0x05c3, 0x0003, 0x0059, 0x09e4, 0x09f5, 0x0a04, 0x0002, - 0x05c6, 0x05ce, 0x0006, 0x0059, 0x0a42, 0x0a15, 0xffff, 0xffff, - 0x0a24, 0x0a33, 0x0006, 0x0059, 0x0a65, 0x0a52, 0xffff, 0xffff, - 0x0a65, 0x0a79, 0x0003, 0x0000, 0x05da, 0x05df, 0x0003, 0x0059, - 0x0a8b, 0x0a98, 0x0aa3, 0x0002, 0x05e2, 0x05ea, 0x0006, 0x0059, - 0x0ab0, 0x0ab0, 0xffff, 0xffff, 0x0ab0, 0x0ab0, 0x0006, 0x0059, - // Entry 3EA80 - 3EABF - 0x0abb, 0x0abb, 0xffff, 0xffff, 0x0abb, 0x0abb, 0x0003, 0x0000, - 0x05f6, 0x05fb, 0x0003, 0x0059, 0x0a8b, 0x0a98, 0x0aa3, 0x0002, - 0x05fe, 0x0606, 0x0006, 0x0059, 0x0ab0, 0x0ab0, 0xffff, 0xffff, - 0x0ab0, 0x0ab0, 0x0006, 0x0059, 0x0abb, 0x0abb, 0xffff, 0xffff, - 0x0abb, 0x0abb, 0x0003, 0x0000, 0x0612, 0x0617, 0x0003, 0x0059, - 0x0ac9, 0x0ad8, 0x0ae5, 0x0002, 0x061a, 0x0622, 0x0006, 0x0059, - 0x0b1b, 0x0af4, 0xffff, 0xffff, 0x0b01, 0x0b0e, 0x0006, 0x0059, - 0x0b3a, 0x0b29, 0xffff, 0xffff, 0x0b3a, 0x0b4c, 0x0003, 0x0000, - // Entry 3EAC0 - 3EAFF - 0x062e, 0x0633, 0x0003, 0x0059, 0x0b5c, 0x0b68, 0x0b72, 0x0002, - 0x0636, 0x063e, 0x0006, 0x0059, 0x0b7e, 0x0b7e, 0xffff, 0xffff, - 0x0b7e, 0x0b7e, 0x0006, 0x0059, 0x0b88, 0x0b88, 0xffff, 0xffff, - 0x0b88, 0x0b88, 0x0003, 0x0000, 0x064a, 0x064f, 0x0003, 0x0059, - 0x0b5c, 0x0b68, 0x0b72, 0x0002, 0x0652, 0x065a, 0x0006, 0x0059, - 0x0b7e, 0x0b7e, 0xffff, 0xffff, 0x0b7e, 0x0b7e, 0x0006, 0x0059, - 0x0b88, 0x0b88, 0xffff, 0xffff, 0x0b88, 0x0b88, 0x0003, 0x0000, - 0x0666, 0x066b, 0x0003, 0x0059, 0x0b95, 0x0ba4, 0x0bb1, 0x0002, - // Entry 3EB00 - 3EB3F - 0x066e, 0x0676, 0x0006, 0x0059, 0x0bda, 0x0bc0, 0xffff, 0xffff, - 0x0bcd, 0x0bcd, 0x0006, 0x0059, 0x0bf8, 0x0be7, 0xffff, 0xffff, - 0x0bf8, 0x0c0a, 0x0003, 0x0000, 0x0682, 0x0687, 0x0003, 0x0059, - 0x0c1a, 0x0c26, 0x0c30, 0x0002, 0x068a, 0x0692, 0x0006, 0x0059, - 0x0c3c, 0x0c3c, 0xffff, 0xffff, 0x0c3c, 0x0c3c, 0x0006, 0x0059, - 0x0c46, 0x0c46, 0xffff, 0xffff, 0x0c46, 0x0c46, 0x0003, 0x0000, - 0x069e, 0x06a3, 0x0003, 0x0059, 0x0c1a, 0x0c26, 0x0c30, 0x0002, - 0x06a6, 0x06ae, 0x0006, 0x0059, 0x0c3c, 0x0c3c, 0xffff, 0xffff, - // Entry 3EB40 - 3EB7F - 0x0c3c, 0x0c3c, 0x0006, 0x0059, 0x0c46, 0x0c46, 0xffff, 0xffff, - 0x0c46, 0x0c46, 0x0001, 0x06b8, 0x0001, 0x0059, 0x0c53, 0x0003, - 0x06bf, 0x06c2, 0x06c6, 0x0001, 0x0013, 0x0eac, 0x0002, 0x0059, - 0xffff, 0x0c5f, 0x0002, 0x06c9, 0x06d1, 0x0006, 0x0059, 0x0c88, - 0x0c6e, 0xffff, 0xffff, 0x0c7b, 0x0c7b, 0x0006, 0x0059, 0x0ca6, - 0x0c95, 0xffff, 0xffff, 0x0ca6, 0x0c95, 0x0003, 0x06dd, 0x0000, - 0x06e0, 0x0001, 0x0000, 0x2143, 0x0002, 0x06e3, 0x06eb, 0x0006, - 0x0059, 0x0cb8, 0x0cb8, 0xffff, 0xffff, 0x0cb8, 0x0cb8, 0x0006, - // Entry 3EB80 - 3EBBF - 0x0059, 0x0cc0, 0x0cc0, 0xffff, 0xffff, 0x0cc0, 0x0cc0, 0x0003, - 0x06f7, 0x0000, 0x06fa, 0x0001, 0x0000, 0x2143, 0x0002, 0x06fd, - 0x0705, 0x0006, 0x0059, 0x0cb8, 0x0cb8, 0xffff, 0xffff, 0x0cb8, - 0x0cb8, 0x0006, 0x0059, 0x0cc0, 0x0cc0, 0xffff, 0xffff, 0x0cc0, - 0x0cc0, 0x0003, 0x0711, 0x0714, 0x0718, 0x0001, 0x0059, 0x0ccb, - 0x0002, 0x0059, 0xffff, 0x0cd3, 0x0002, 0x071b, 0x0723, 0x0006, - 0x0059, 0x0cff, 0x0ce3, 0xffff, 0xffff, 0x0cf1, 0x0cf1, 0x0006, - 0x0059, 0x0d1e, 0x0d0c, 0xffff, 0xffff, 0x0d1e, 0x0d31, 0x0003, - // Entry 3EBC0 - 3EBFF - 0x072f, 0x0000, 0x0732, 0x0001, 0x0041, 0x092f, 0x0002, 0x0735, - 0x073d, 0x0006, 0x0059, 0x0d42, 0x0d42, 0xffff, 0xffff, 0x0d42, - 0x0d42, 0x0006, 0x0059, 0x0d4c, 0x0d4c, 0xffff, 0xffff, 0x0d4c, - 0x0d4c, 0x0003, 0x0749, 0x0000, 0x074c, 0x0001, 0x0041, 0x092f, - 0x0002, 0x074f, 0x0757, 0x0006, 0x0059, 0x0d42, 0x0d42, 0xffff, - 0xffff, 0x0d42, 0x0d42, 0x0006, 0x0059, 0x0d4c, 0x0d4c, 0xffff, - 0xffff, 0x0d4c, 0x0d4c, 0x0003, 0x0763, 0x0766, 0x076a, 0x0001, - 0x000d, 0x0c7f, 0x0002, 0x0050, 0xffff, 0x0edb, 0x0002, 0x076d, - // Entry 3EC00 - 3EC3F - 0x0775, 0x0006, 0x0059, 0x0d75, 0x0d59, 0xffff, 0xffff, 0x0d67, - 0x0d67, 0x0006, 0x0059, 0x0d95, 0x0d83, 0xffff, 0xffff, 0x0d95, - 0x0da8, 0x0003, 0x0781, 0x0000, 0x0784, 0x0001, 0x0000, 0x2002, - 0x0002, 0x0787, 0x078f, 0x0006, 0x0059, 0x0db9, 0x0db9, 0xffff, - 0xffff, 0x0db9, 0x0db9, 0x0006, 0x0059, 0x0dc1, 0x0dc1, 0xffff, - 0xffff, 0x0dc1, 0x0dc1, 0x0003, 0x079b, 0x0000, 0x079e, 0x0001, - 0x0000, 0x2002, 0x0002, 0x07a1, 0x07a9, 0x0006, 0x0059, 0x0db9, - 0x0db9, 0xffff, 0xffff, 0x0db9, 0x0db9, 0x0006, 0x0059, 0x0dc1, - // Entry 3EC40 - 3EC7F - 0x0dc1, 0xffff, 0xffff, 0x0dc1, 0x0dc1, 0x0001, 0x07b3, 0x0001, - 0x0013, 0x0fe2, 0x0004, 0x07bb, 0x07c0, 0x07c5, 0x07d4, 0x0003, - 0x0000, 0x1dc7, 0x3839, 0x3a93, 0x0003, 0x0059, 0x0dcc, 0x0de0, - 0x0de9, 0x0002, 0x0000, 0x07c8, 0x0003, 0x0000, 0x07cf, 0x07cc, - 0x0001, 0x0059, 0x0df2, 0x0003, 0x0059, 0xffff, 0x0e0e, 0x0e23, - 0x0002, 0x099d, 0x07d7, 0x0003, 0x0871, 0x0907, 0x07db, 0x0094, - 0x0059, 0x0e3c, 0x0e4b, 0x0e5f, 0x0e75, 0x0e9c, 0x0eea, 0x0f2e, - 0x0f82, 0x0ff6, 0x1067, 0x10d7, 0x113f, 0x1181, 0x11bf, 0x1201, - // Entry 3EC80 - 3ECBF - 0x1252, 0x12a7, 0x12ea, 0x1337, 0x139a, 0x1409, 0x1467, 0x14c1, - 0x150f, 0x1553, 0x158f, 0x159f, 0x15c1, 0x15f5, 0x1616, 0x164c, - 0x167b, 0x16bf, 0x16fd, 0x1741, 0x177d, 0x1797, 0x17c3, 0x1814, - 0x1869, 0x189b, 0x18b2, 0x18d4, 0x1908, 0x1956, 0x197d, 0x19d2, - 0x1a14, 0x1a37, 0x1a89, 0x1ad2, 0x1b08, 0x1b22, 0x1b58, 0x1b69, - 0x1b8a, 0x1bbe, 0x1bda, 0x1c03, 0x1c58, 0x1c96, 0x1cbb, 0x1ce2, - 0x1d37, 0x1d7c, 0x1dae, 0x1dbc, 0x1dd2, 0x1de4, 0x1dfb, 0x1e14, - 0x1e3a, 0x1e79, 0x1ebb, 0x1efe, 0x1f4f, 0x1fa5, 0x1fc1, 0x1fec, - // Entry 3ECC0 - 3ECFF - 0x2020, 0x2043, 0x207d, 0x208d, 0x20c1, 0x2105, 0x212d, 0x2163, - 0x2175, 0x2185, 0x2195, 0x21c5, 0x21ff, 0x2235, 0x22a0, 0x22fe, - 0x234a, 0x237e, 0x238f, 0x239e, 0x23c2, 0x2415, 0x2469, 0x24a9, - 0x24b8, 0x24ed, 0x255e, 0x25a4, 0x25e2, 0x261a, 0x2629, 0x2653, - 0x269b, 0x26e0, 0x2716, 0x274a, 0x2790, 0x27ad, 0x27bc, 0x27d0, - 0x27e2, 0x280c, 0x2853, 0x2894, 0x28c6, 0x28d7, 0x28f6, 0x2914, - 0x2929, 0x293a, 0x294e, 0x296f, 0x29a7, 0x29b7, 0x29d7, 0x2a09, - 0x2a29, 0x2a5f, 0x2a7f, 0x2ac3, 0x2b03, 0x2b37, 0x2b5d, 0x2bac, - // Entry 3ED00 - 3ED3F - 0x2be6, 0x2bfa, 0x2c0c, 0x2c39, 0x2c81, 0x0094, 0x0059, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0e87, 0x0eda, 0x0f1e, 0x0f62, 0x0fd6, - 0x104a, 0x10b5, 0x112f, 0x1173, 0x11b1, 0x11ef, 0x1239, 0x1298, - 0x12d9, 0x1320, 0x1379, 0x13f0, 0x144f, 0x14ab, 0x1501, 0x153f, - 0xffff, 0xffff, 0x15b1, 0xffff, 0x1605, 0xffff, 0x166a, 0x16b1, - 0x16ef, 0x172d, 0xffff, 0xffff, 0x17b1, 0x17fb, 0x185a, 0xffff, - 0xffff, 0xffff, 0x18eb, 0xffff, 0x1968, 0x19bb, 0xffff, 0x1a21, - 0x1a77, 0x1ac1, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b7a, 0xffff, - // Entry 3ED40 - 3ED7F - 0xffff, 0x1bed, 0x1c43, 0xffff, 0xffff, 0x1cca, 0x1d26, 0x1d6d, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e2c, 0x1e6a, - 0x1eab, 0x1eef, 0x1f30, 0xffff, 0xffff, 0x1fdc, 0xffff, 0x2030, - 0xffff, 0xffff, 0x20a9, 0xffff, 0x211c, 0xffff, 0xffff, 0xffff, - 0xffff, 0x21b2, 0xffff, 0x2217, 0x2285, 0x22ea, 0x233a, 0xffff, - 0xffff, 0xffff, 0x23ad, 0x2400, 0x2453, 0xffff, 0xffff, 0x24c8, - 0x254b, 0x2598, 0x25d0, 0xffff, 0xffff, 0x2641, 0x268b, 0x26cf, - 0xffff, 0x2731, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27fa, - // Entry 3ED80 - 3EDBF - 0x2844, 0x2885, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x295d, 0xffff, 0xffff, 0x29c8, 0xffff, 0x2a18, 0xffff, - 0x2a6e, 0x2ab5, 0x2af3, 0xffff, 0x2b49, 0x2b99, 0xffff, 0xffff, - 0xffff, 0x2c2a, 0x2c6b, 0x0094, 0x0059, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0ebe, 0x0f07, 0x0f4b, 0x0faf, 0x1023, 0x1091, 0x1106, - 0x115c, 0x119c, 0x11da, 0x1220, 0x1278, 0x12c3, 0x1308, 0x135b, - 0x13c8, 0x142f, 0x148c, 0x14e4, 0x152a, 0x1574, 0xffff, 0xffff, - 0x15de, 0xffff, 0x1634, 0xffff, 0x1699, 0x16da, 0x1718, 0x1762, - // Entry 3EDC0 - 3EDFF - 0xffff, 0xffff, 0x17e2, 0x183a, 0x1885, 0xffff, 0xffff, 0xffff, - 0x1932, 0xffff, 0x199f, 0x19f6, 0xffff, 0x1a5a, 0x1aa8, 0x1af0, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1ba7, 0xffff, 0xffff, 0x1c26, - 0x1c7a, 0xffff, 0xffff, 0x1d07, 0x1d55, 0x1d98, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1e55, 0x1e95, 0x1ed8, 0x1f1a, - 0x1f7b, 0xffff, 0xffff, 0x2009, 0xffff, 0x2063, 0xffff, 0xffff, - 0x20e6, 0xffff, 0x214b, 0xffff, 0xffff, 0xffff, 0xffff, 0x21e5, - 0xffff, 0x2260, 0x22c8, 0x231f, 0x2367, 0xffff, 0xffff, 0xffff, - // Entry 3EE00 - 3EE3F - 0x23e4, 0x2437, 0x248c, 0xffff, 0xffff, 0x251f, 0x257e, 0x25bd, - 0x2601, 0xffff, 0xffff, 0x2672, 0x26b8, 0x26fe, 0xffff, 0x2770, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x282b, 0x286f, 0x28b0, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x298e, - 0xffff, 0xffff, 0x29f3, 0xffff, 0x2a47, 0xffff, 0x2a9d, 0x2ade, - 0x2b20, 0xffff, 0x2b7e, 0x2bcc, 0xffff, 0xffff, 0xffff, 0x2c55, - 0x2ca4, 0x0003, 0x09a1, 0x0a01, 0x09d1, 0x002e, 0x0013, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3EE40 - 3EE7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1cfe, 0x002e, 0x0013, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3EE80 - 3EEBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1cfe, 0x002e, 0x0013, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3EEC0 - 3EEFF - 0xffff, 0xffff, 0xffff, 0xffff, 0x1d03, 0x0003, 0x0004, 0x0268, - 0x075c, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, - 0x0001, 0x0024, 0x0000, 0x0001, 0x005a, 0x0000, 0x0001, 0x0015, - 0x0000, 0x0001, 0x005a, 0x000d, 0x0004, 0x0035, 0x002f, 0x002c, - 0x0032, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, - // Entry 3EF00 - 3EF3F - 0x00fd, 0x0132, 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, - 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0015, 0xffff, - 0x000b, 0x2c8f, 0x2c94, 0x2c99, 0x2c9e, 0x2383, 0x2388, 0x2ca2, - 0x238d, 0x2447, 0x2ca7, 0x2cac, 0x000d, 0x0000, 0xffff, 0x214a, - 0x2006, 0x3a8d, 0x1f9c, 0x3a8d, 0x214a, 0x214a, 0x1f9c, 0x2002, - 0x1f98, 0x3a8f, 0x3a91, 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, - 0x33c0, 0x3366, 0x33c6, 0x3192, 0x3198, 0x00ad, 0x33ca, 0x3384, - 0x33d4, 0x33dd, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0015, - // Entry 3EF40 - 3EF7F - 0xffff, 0x000b, 0x2c8f, 0x2c94, 0x2c99, 0x2cb1, 0x2383, 0x2388, - 0x2ca2, 0x238d, 0x2447, 0x2ca7, 0x2cac, 0x000d, 0x0000, 0xffff, - 0x214a, 0x2006, 0x3a8d, 0x1f9c, 0x3a8d, 0x214a, 0x214a, 0x1f9c, - 0x2002, 0x1f98, 0x3a8f, 0x3a91, 0x000d, 0x000d, 0xffff, 0x0089, - 0x0090, 0x33c0, 0x3366, 0x33e6, 0x3192, 0x3198, 0x00ad, 0x33ca, - 0x3384, 0x33d4, 0x33dd, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, - 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0044, 0x0c33, 0x3111, - 0x3116, 0x311b, 0x3120, 0x3126, 0x312b, 0x0007, 0x0000, 0x3a8f, - // Entry 3EF80 - 3EFBF - 0x21ec, 0x2000, 0x2002, 0x21ee, 0x21ec, 0x2002, 0x0007, 0x0044, - 0x0c33, 0x3111, 0x3116, 0x311b, 0x3120, 0x3126, 0x312b, 0x0007, - 0x005a, 0x001d, 0x0025, 0x0030, 0x0036, 0x003c, 0x0045, 0x004b, - 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0044, - 0x0c33, 0x3111, 0x3116, 0x311b, 0x3120, 0x3126, 0x312b, 0x0007, - 0x0000, 0x3a8f, 0x21ec, 0x2000, 0x2002, 0x21ee, 0x21ec, 0x2002, - 0x0007, 0x0044, 0x0c33, 0x3111, 0x3116, 0x311b, 0x3120, 0x3126, - 0x312b, 0x0007, 0x005a, 0x001d, 0x0025, 0x0030, 0x0036, 0x003c, - // Entry 3EFC0 - 3EFFF - 0x0045, 0x004b, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, - 0x0112, 0x0005, 0x005a, 0xffff, 0x0052, 0x005b, 0x0064, 0x006d, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x005a, 0xffff, 0x0076, 0x0085, 0x0094, 0x00a3, 0x0003, 0x011d, - 0x0124, 0x012b, 0x0005, 0x005a, 0xffff, 0x0052, 0x005b, 0x0064, - 0x006d, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x005a, 0xffff, 0x0076, 0x0085, 0x0094, 0x00a3, 0x0002, - 0x0135, 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, - // Entry 3F000 - 3F03F - 0x014c, 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, - 0x0001, 0x005a, 0x00b2, 0x0001, 0x0013, 0x061b, 0x0001, 0x005a, - 0x00b9, 0x0001, 0x002f, 0x004f, 0x0001, 0x005a, 0x00c0, 0x0001, - 0x0013, 0x061b, 0x0001, 0x002f, 0x004f, 0x0001, 0x005a, 0x00c6, - 0x0001, 0x005a, 0x00cd, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, - 0x017a, 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, 0x005a, 0x00d2, - 0x0001, 0x0000, 0x3a91, 0x0001, 0x005a, 0x00d8, 0x0001, 0x0000, - 0x21ec, 0x0001, 0x005a, 0x00de, 0x0001, 0x0000, 0x3a91, 0x0001, - // Entry 3F040 - 3F07F - 0x0000, 0x21ec, 0x0001, 0x005a, 0x00e1, 0x0001, 0x0013, 0x058a, - 0x0009, 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, - 0x0193, 0x019c, 0x0001, 0x005a, 0x00e4, 0x0001, 0x0013, 0x061b, - 0x0001, 0x005a, 0x00ee, 0x0001, 0x002f, 0x004f, 0x0001, 0x005a, - 0x00f6, 0x0001, 0x005a, 0x00fe, 0x0001, 0x005a, 0x0107, 0x0001, - 0x005a, 0x0110, 0x0001, 0x005a, 0x0118, 0x0003, 0x01ac, 0x01d1, - 0x01f6, 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, - 0x01ce, 0x01bc, 0x01c5, 0x0001, 0x0059, 0x012b, 0x0001, 0x0013, - // Entry 3F080 - 3F0BF - 0x061b, 0x0001, 0x005a, 0x0120, 0x0001, 0x002f, 0x004f, 0x0001, - 0x005a, 0x0126, 0x0001, 0x0013, 0x061b, 0x0001, 0x002f, 0x004f, - 0x0001, 0x005a, 0x00c6, 0x0001, 0x005a, 0x00cd, 0x0009, 0x01de, - 0x01e4, 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, - 0x0001, 0x005a, 0x00d2, 0x0001, 0x0000, 0x3a91, 0x0001, 0x005a, - 0x00d8, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0000, 0x214a, 0x0001, - 0x0000, 0x3a91, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0000, 0x1f94, - 0x0001, 0x0000, 0x3a8f, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, - // Entry 3F0C0 - 3F0FF - 0x0212, 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, 0x005a, 0x012b, - 0x0001, 0x005a, 0x0133, 0x0001, 0x005a, 0x013c, 0x0001, 0x005a, - 0x0143, 0x0001, 0x0050, 0x0825, 0x0001, 0x005a, 0x0133, 0x0001, - 0x005a, 0x0143, 0x0001, 0x0013, 0x0671, 0x0001, 0x005a, 0x00cd, - 0x0003, 0x022a, 0x0000, 0x021f, 0x0002, 0x0222, 0x0226, 0x0002, - 0x005a, 0x014c, 0x0170, 0x0002, 0x005a, 0x015b, 0x017c, 0x0002, - 0x022d, 0x0231, 0x0002, 0x002e, 0x0198, 0x38bd, 0x0002, 0x005a, - 0x018e, 0x019a, 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, - // Entry 3F100 - 3F13F - 0x005a, 0x01a5, 0x0001, 0x005a, 0x01b6, 0x0001, 0x0015, 0x0207, - 0x0001, 0x005a, 0x01c1, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0265, 0x025f, 0x025c, - 0x0262, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02a9, 0x0000, - 0x0000, 0x02ae, 0x02cb, 0x02e3, 0x02fb, 0x0318, 0x0335, 0x0352, - 0x036f, 0x0387, 0x039f, 0x03c0, 0x03dc, 0x0000, 0x0000, 0x0000, - // Entry 3F140 - 3F17F - 0x03f8, 0x0417, 0x042f, 0x0000, 0x0000, 0x0000, 0x0447, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x044c, 0x0466, 0x0480, 0x049a, - 0x04b4, 0x04ce, 0x04e8, 0x0502, 0x051c, 0x0536, 0x0550, 0x056a, - 0x0584, 0x059e, 0x05b8, 0x05d2, 0x05ec, 0x0606, 0x0620, 0x063a, - 0x0654, 0x0000, 0x066e, 0x0000, 0x0673, 0x068f, 0x06a7, 0x06bf, - 0x06db, 0x06f3, 0x070b, 0x0727, 0x073f, 0x0757, 0x0001, 0x02ab, - 0x0001, 0x002f, 0x00f7, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, - 0x005a, 0x01cb, 0x0003, 0x005a, 0x01d0, 0x01d5, 0x01db, 0x0002, - // Entry 3F180 - 3F1BF - 0x02bd, 0x02c4, 0x0005, 0x005a, 0x0214, 0x01ea, 0xffff, 0x01f8, - 0x0206, 0x0005, 0x005a, 0x0240, 0x0221, 0xffff, 0x0230, 0x0240, - 0x0003, 0x02cf, 0x0000, 0x02d2, 0x0001, 0x005a, 0x01cb, 0x0002, - 0x02d5, 0x02dc, 0x0005, 0x005a, 0x0214, 0x01ea, 0xffff, 0x01f8, - 0x0206, 0x0005, 0x005a, 0x0240, 0x0221, 0xffff, 0x0230, 0x0240, - 0x0003, 0x02e7, 0x0000, 0x02ea, 0x0001, 0x005a, 0x01cb, 0x0002, - 0x02ed, 0x02f4, 0x0005, 0x005a, 0x0214, 0x01ea, 0xffff, 0x01f8, - 0x0206, 0x0005, 0x005a, 0x0240, 0x0221, 0xffff, 0x0230, 0x0240, - // Entry 3F1C0 - 3F1FF - 0x0003, 0x02ff, 0x0302, 0x0307, 0x0001, 0x005a, 0x024e, 0x0003, - 0x005a, 0x025a, 0x026d, 0x027c, 0x0002, 0x030a, 0x0311, 0x0005, - 0x005a, 0x02d1, 0x0292, 0xffff, 0x02a7, 0x02bc, 0x0005, 0x005a, - 0x0313, 0x02e6, 0xffff, 0x02fc, 0x0313, 0x0003, 0x031c, 0x031f, - 0x0324, 0x0001, 0x005a, 0x0328, 0x0003, 0x005a, 0x025a, 0x026d, - 0x027c, 0x0002, 0x0327, 0x032e, 0x0005, 0x005a, 0x0331, 0x0331, - 0xffff, 0x0331, 0x0331, 0x0005, 0x005a, 0x0343, 0x0343, 0xffff, - 0x0343, 0x0343, 0x0003, 0x0339, 0x033c, 0x0341, 0x0001, 0x005a, - // Entry 3F200 - 3F23F - 0x0355, 0x0003, 0x005a, 0x025a, 0x026d, 0x027c, 0x0002, 0x0344, - 0x034b, 0x0005, 0x005a, 0x035c, 0x035c, 0xffff, 0x035c, 0x035c, - 0x0005, 0x005a, 0x036c, 0x036c, 0xffff, 0x036c, 0x036c, 0x0003, - 0x0356, 0x0359, 0x035e, 0x0001, 0x005a, 0x037c, 0x0003, 0x005a, - 0x0382, 0x0392, 0x039b, 0x0002, 0x0361, 0x0368, 0x0005, 0x005a, - 0x03da, 0x03ab, 0xffff, 0x03ba, 0x03ca, 0x0005, 0x005a, 0x040e, - 0x03eb, 0xffff, 0x03fc, 0x040e, 0x0003, 0x0373, 0x0000, 0x0376, - 0x0001, 0x0059, 0x03eb, 0x0002, 0x0379, 0x0380, 0x0005, 0x005a, - // Entry 3F240 - 3F27F - 0x041e, 0x041e, 0xffff, 0x041e, 0x03ca, 0x0005, 0x0059, 0x03fb, - 0x03fb, 0xffff, 0x03fb, 0x03fb, 0x0003, 0x038b, 0x0000, 0x038e, - 0x0001, 0x0059, 0x03eb, 0x0002, 0x0391, 0x0398, 0x0005, 0x005a, - 0x041e, 0x041e, 0xffff, 0x041e, 0x041e, 0x0005, 0x0059, 0x03fb, - 0x03fb, 0xffff, 0x03fb, 0x03fb, 0x0004, 0x03a4, 0x03a7, 0x03ac, - 0x03bd, 0x0001, 0x005a, 0x042c, 0x0003, 0x005a, 0x0432, 0x0442, - 0x044b, 0x0002, 0x03af, 0x03b6, 0x0005, 0x005a, 0x0488, 0x045b, - 0xffff, 0x046a, 0x0479, 0x0005, 0x005a, 0x04b9, 0x0498, 0xffff, - // Entry 3F280 - 3F2BF - 0x04a8, 0x04b9, 0x0001, 0x005a, 0x04c8, 0x0004, 0x03c5, 0x0000, - 0x03c8, 0x03d9, 0x0001, 0x005a, 0x04d4, 0x0002, 0x03cb, 0x03d2, - 0x0005, 0x005a, 0x04d9, 0x04d9, 0xffff, 0x04d9, 0x04d9, 0x0005, - 0x005a, 0x04e7, 0x04e7, 0xffff, 0x04e7, 0x04e7, 0x0001, 0x005a, - 0x04c8, 0x0004, 0x03e1, 0x0000, 0x03e4, 0x03f5, 0x0001, 0x005a, - 0x04d4, 0x0002, 0x03e7, 0x03ee, 0x0005, 0x005a, 0x04d9, 0x04d9, - 0xffff, 0x04d9, 0x04d9, 0x0005, 0x005a, 0x04e7, 0x04e7, 0xffff, - 0x04e7, 0x04e7, 0x0001, 0x005a, 0x04c8, 0x0003, 0x03fc, 0x03ff, - // Entry 3F2C0 - 3F2FF - 0x0406, 0x0001, 0x000d, 0x05d4, 0x0005, 0x005a, 0x0507, 0x050f, - 0x0515, 0x04f5, 0x051b, 0x0002, 0x0409, 0x0410, 0x0005, 0x005a, - 0x0545, 0x0529, 0xffff, 0x0536, 0x0545, 0x0005, 0x005a, 0x0573, - 0x0552, 0xffff, 0x0562, 0x0573, 0x0003, 0x041b, 0x0000, 0x041e, - 0x0001, 0x000d, 0x05d4, 0x0002, 0x0421, 0x0428, 0x0005, 0x005a, - 0x0545, 0x0529, 0xffff, 0x0536, 0x0545, 0x0005, 0x005a, 0x0573, - 0x0552, 0xffff, 0x0562, 0x0573, 0x0003, 0x0433, 0x0000, 0x0436, - 0x0001, 0x000d, 0x05d4, 0x0002, 0x0439, 0x0440, 0x0005, 0x005a, - // Entry 3F300 - 3F33F - 0x0545, 0x0529, 0xffff, 0x0536, 0x0545, 0x0005, 0x005a, 0x0573, - 0x0552, 0xffff, 0x0562, 0x0573, 0x0001, 0x0449, 0x0001, 0x005a, - 0x0582, 0x0003, 0x0000, 0x0450, 0x0455, 0x0003, 0x005a, 0x058e, - 0x05a0, 0x05ab, 0x0002, 0x0458, 0x045f, 0x0005, 0x005a, 0x05f0, - 0x05bd, 0xffff, 0x05ce, 0x05df, 0x0005, 0x005a, 0x0624, 0x0600, - 0xffff, 0x0611, 0x0624, 0x0003, 0x0000, 0x046a, 0x046f, 0x0003, - 0x005a, 0x0637, 0x0646, 0x064e, 0x0002, 0x0472, 0x0479, 0x0005, - 0x005a, 0x05f0, 0x05bd, 0xffff, 0x05ce, 0x05df, 0x0005, 0x005a, - // Entry 3F340 - 3F37F - 0x0624, 0x0600, 0xffff, 0x0611, 0x0624, 0x0003, 0x0000, 0x0484, - 0x0489, 0x0003, 0x005a, 0x065d, 0x0646, 0x066a, 0x0002, 0x048c, - 0x0493, 0x0005, 0x005a, 0x05f0, 0x05bd, 0xffff, 0x05ce, 0x05df, - 0x0005, 0x005a, 0x0624, 0x0600, 0xffff, 0x0611, 0x0624, 0x0003, - 0x0000, 0x049e, 0x04a3, 0x0003, 0x005a, 0x0675, 0x068a, 0x0698, - 0x0002, 0x04a6, 0x04ad, 0x0005, 0x005a, 0x06e9, 0x06ad, 0xffff, - 0x06c1, 0x06d5, 0x0005, 0x005a, 0x0729, 0x06fe, 0xffff, 0x0713, - 0x0729, 0x0003, 0x0000, 0x04b8, 0x04bd, 0x0003, 0x005a, 0x073d, - // Entry 3F380 - 3F3BF - 0x074c, 0x0754, 0x0002, 0x04c0, 0x04c7, 0x0005, 0x005a, 0x06e9, - 0x06ad, 0xffff, 0x06c1, 0x06d5, 0x0005, 0x005a, 0x0729, 0x06fe, - 0xffff, 0x0713, 0x0729, 0x0003, 0x0000, 0x04d2, 0x04d7, 0x0003, - 0x005a, 0x0763, 0x074c, 0x0770, 0x0002, 0x04da, 0x04e1, 0x0005, - 0x005a, 0x06e9, 0x06ad, 0xffff, 0x06c1, 0x06d5, 0x0005, 0x005a, - 0x0729, 0x06fe, 0xffff, 0x0713, 0x0729, 0x0003, 0x0000, 0x04ec, - 0x04f1, 0x0003, 0x005a, 0x077b, 0x078b, 0x0794, 0x0002, 0x04f4, - 0x04fb, 0x0005, 0x005a, 0x07d1, 0x07a4, 0xffff, 0x07b3, 0x07c2, - // Entry 3F3C0 - 3F3FF - 0x0005, 0x005a, 0x0802, 0x07e1, 0xffff, 0x07f1, 0x0802, 0x0003, - 0x0000, 0x0506, 0x050b, 0x0003, 0x005a, 0x0811, 0x0820, 0x0828, - 0x0002, 0x050e, 0x0515, 0x0005, 0x005a, 0x07d1, 0x07a4, 0xffff, - 0x07b3, 0x07c2, 0x0005, 0x005a, 0x0802, 0x07e1, 0xffff, 0x07f1, - 0x0802, 0x0003, 0x0000, 0x0520, 0x0525, 0x0003, 0x005a, 0x0837, - 0x0820, 0x0844, 0x0002, 0x0528, 0x052f, 0x0005, 0x005a, 0x07d1, - 0x07a4, 0xffff, 0x07b3, 0x07c2, 0x0005, 0x005a, 0x0802, 0x07e1, - 0xffff, 0x07f1, 0x0802, 0x0003, 0x0000, 0x053a, 0x053f, 0x0003, - // Entry 3F400 - 3F43F - 0x005a, 0x084f, 0x085f, 0x0868, 0x0002, 0x0542, 0x0549, 0x0005, - 0x005a, 0x08a5, 0x0878, 0xffff, 0x0887, 0x0896, 0x0005, 0x005a, - 0x08d3, 0x08b3, 0xffff, 0x08c2, 0x08d3, 0x0003, 0x0000, 0x0554, - 0x0559, 0x0003, 0x005a, 0x08e4, 0x08f3, 0x08fb, 0x0002, 0x055c, - 0x0563, 0x0005, 0x005a, 0x08a5, 0x0878, 0xffff, 0x0887, 0x0896, - 0x0005, 0x005a, 0x08d3, 0x08b3, 0xffff, 0x08c2, 0x08d3, 0x0003, - 0x0000, 0x056e, 0x0573, 0x0003, 0x005a, 0x090a, 0x08f3, 0x0917, - 0x0002, 0x0576, 0x057d, 0x0005, 0x005a, 0x08a5, 0x0878, 0xffff, - // Entry 3F440 - 3F47F - 0x0887, 0x0896, 0x0005, 0x005a, 0x08d3, 0x08b3, 0xffff, 0x08c2, - 0x08d3, 0x0003, 0x0000, 0x0588, 0x058d, 0x0003, 0x005a, 0x0922, - 0x0935, 0x0941, 0x0002, 0x0590, 0x0597, 0x0005, 0x005a, 0x098a, - 0x0954, 0xffff, 0x0966, 0x0978, 0x0005, 0x005a, 0x09c4, 0x099d, - 0xffff, 0x09b0, 0x09c4, 0x0003, 0x0000, 0x05a2, 0x05a7, 0x0003, - 0x005a, 0x09d6, 0x09e6, 0x09ef, 0x0002, 0x05aa, 0x05b1, 0x0005, - 0x005a, 0x098a, 0x0954, 0xffff, 0x0966, 0x0978, 0x0005, 0x005a, - 0x09c4, 0x099d, 0xffff, 0x09b0, 0x09c4, 0x0003, 0x0000, 0x05bc, - // Entry 3F480 - 3F4BF - 0x05c1, 0x0003, 0x005a, 0x09ff, 0x09e6, 0x0a0d, 0x0002, 0x05c4, - 0x05cb, 0x0005, 0x005a, 0x098a, 0x0954, 0xffff, 0x0966, 0x0978, - 0x0005, 0x005a, 0x09c4, 0x099d, 0xffff, 0x09b0, 0x09c4, 0x0003, - 0x0000, 0x05d6, 0x05db, 0x0003, 0x005a, 0x0a19, 0x0a29, 0x0a32, - 0x0002, 0x05de, 0x05e5, 0x0005, 0x005a, 0x0a6f, 0x0a42, 0xffff, - 0x0a51, 0x0a60, 0x0005, 0x005a, 0x0aa0, 0x0a7f, 0xffff, 0x0a8f, - 0x0aa0, 0x0003, 0x0000, 0x05f0, 0x05f5, 0x0003, 0x005a, 0x0aaf, - 0x0abe, 0x0ac6, 0x0002, 0x05f8, 0x05ff, 0x0005, 0x005a, 0x0a6f, - // Entry 3F4C0 - 3F4FF - 0x0a42, 0xffff, 0x0a51, 0x0a60, 0x0005, 0x005a, 0x0aa0, 0x0a7f, - 0xffff, 0x0a8f, 0x0aa0, 0x0003, 0x0000, 0x060a, 0x060f, 0x0003, - 0x005a, 0x0ad5, 0x0abe, 0x0ae2, 0x0002, 0x0612, 0x0619, 0x0005, - 0x005a, 0x0a6f, 0x0a42, 0xffff, 0x0a51, 0x0a60, 0x0005, 0x005a, - 0x0aa0, 0x0a7f, 0xffff, 0x0a8f, 0x0aa0, 0x0003, 0x0000, 0x0624, - 0x0629, 0x0003, 0x005a, 0x0aed, 0x0afe, 0x0b08, 0x0002, 0x062c, - 0x0633, 0x0005, 0x005a, 0x0b49, 0x0b19, 0xffff, 0x0b29, 0x0b39, - 0x0005, 0x005a, 0x0b7a, 0x0b58, 0xffff, 0x0b68, 0x0b7a, 0x0003, - // Entry 3F500 - 3F53F - 0x0000, 0x063e, 0x0643, 0x0003, 0x005a, 0x0b8c, 0x0b9b, 0x0ba3, - 0x0002, 0x0646, 0x064d, 0x0005, 0x005a, 0x0b49, 0x0b19, 0xffff, - 0x0b29, 0x0b39, 0x0005, 0x005a, 0x0b7a, 0x0b58, 0xffff, 0x0b68, - 0x0b7a, 0x0003, 0x0000, 0x0658, 0x065d, 0x0003, 0x005a, 0x0bb2, - 0x0b9b, 0x0bbf, 0x0002, 0x0660, 0x0667, 0x0005, 0x005a, 0x0b49, - 0x0b19, 0xffff, 0x0b29, 0x0b39, 0x0005, 0x005a, 0x0b7a, 0x0b58, - 0xffff, 0x0b68, 0x0b7a, 0x0001, 0x0670, 0x0001, 0x005a, 0x0bca, - 0x0003, 0x0677, 0x067a, 0x067e, 0x0001, 0x0053, 0x0294, 0x0002, - // Entry 3F540 - 3F57F - 0x005a, 0xffff, 0x0bd2, 0x0002, 0x0681, 0x0688, 0x0005, 0x005a, - 0x0c03, 0x0bdc, 0xffff, 0x0be9, 0x0bf6, 0x0005, 0x005a, 0x0c2b, - 0x0c0f, 0xffff, 0x0c1c, 0x0c2b, 0x0003, 0x0693, 0x0000, 0x0696, - 0x0001, 0x0053, 0x0294, 0x0002, 0x0699, 0x06a0, 0x0005, 0x005a, - 0x0c03, 0x0bdc, 0xffff, 0x0be9, 0x0bf6, 0x0005, 0x005a, 0x0c2b, - 0x0c0f, 0xffff, 0x0c1c, 0x0c2b, 0x0003, 0x06ab, 0x0000, 0x06ae, - 0x0001, 0x0000, 0x2143, 0x0002, 0x06b1, 0x06b8, 0x0005, 0x005a, - 0x0c3a, 0x0c3a, 0xffff, 0x0c3a, 0x0c3a, 0x0005, 0x0059, 0x0cc0, - // Entry 3F580 - 3F5BF - 0x0cc0, 0xffff, 0x0cc0, 0x0cc0, 0x0003, 0x06c3, 0x06c6, 0x06ca, - 0x0001, 0x000d, 0x0bf5, 0x0002, 0x005a, 0xffff, 0x0c45, 0x0002, - 0x06cd, 0x06d4, 0x0005, 0x005a, 0x0c7f, 0x0c4f, 0xffff, 0x0c5f, - 0x0c6f, 0x0005, 0x005a, 0x0cb0, 0x0c8e, 0xffff, 0x0c9e, 0x0cb0, - 0x0003, 0x06df, 0x0000, 0x06e2, 0x0001, 0x0001, 0x075a, 0x0002, - 0x06e5, 0x06ec, 0x0005, 0x005a, 0x0cc2, 0x0cc2, 0xffff, 0x0cc2, - 0x0cc2, 0x0005, 0x005a, 0x0cd0, 0x0cd0, 0xffff, 0x0cd0, 0x0cd0, - 0x0003, 0x06f7, 0x0000, 0x06fa, 0x0001, 0x0041, 0x092f, 0x0002, - // Entry 3F5C0 - 3F5FF - 0x06fd, 0x0704, 0x0005, 0x005a, 0x0cde, 0x0cde, 0xffff, 0x0cde, - 0x0cde, 0x0005, 0x0059, 0x0d4c, 0x0d4c, 0xffff, 0x0d4c, 0x0d4c, - 0x0003, 0x070f, 0x0712, 0x0716, 0x0001, 0x000d, 0x0c7f, 0x0002, - 0x005a, 0xffff, 0x0ceb, 0x0002, 0x0719, 0x0720, 0x0005, 0x005a, - 0x0d23, 0x0cf0, 0xffff, 0x0d01, 0x0d12, 0x0005, 0x005a, 0x0d57, - 0x0d33, 0xffff, 0x0d44, 0x0d57, 0x0003, 0x072b, 0x0000, 0x072e, - 0x0001, 0x0001, 0x07d3, 0x0002, 0x0731, 0x0738, 0x0005, 0x005a, - 0x0d6a, 0x0d6a, 0xffff, 0x0d6a, 0x0d6a, 0x0005, 0x0059, 0x0dc1, - // Entry 3F600 - 3F63F - 0x0dc1, 0xffff, 0x0dc1, 0x0dc1, 0x0003, 0x0743, 0x0000, 0x0746, - 0x0001, 0x0000, 0x2002, 0x0002, 0x0749, 0x0750, 0x0005, 0x005a, - 0x0d6a, 0x0d6a, 0xffff, 0x0d6a, 0x0d6a, 0x0005, 0x0059, 0x0dc1, - 0x0dc1, 0xffff, 0x0dc1, 0x0dc1, 0x0001, 0x0759, 0x0001, 0x005a, - 0x0d75, 0x0004, 0x0761, 0x0766, 0x076b, 0x077a, 0x0003, 0x0008, - 0x1d98, 0x4f6a, 0x4f71, 0x0003, 0x005a, 0x0d82, 0x0d8b, 0x0d9c, - 0x0002, 0x0000, 0x076e, 0x0003, 0x0000, 0x0775, 0x0772, 0x0001, - 0x005a, 0x0db0, 0x0003, 0x005a, 0xffff, 0x0dce, 0x0de5, 0x0002, - // Entry 3F640 - 3F67F - 0x0000, 0x077d, 0x0003, 0x0817, 0x08ad, 0x0781, 0x0094, 0x005a, - 0x0dfb, 0x0e0e, 0x0e25, 0x0e3a, 0x0e63, 0x0eae, 0x0eec, 0x0f2c, - 0x0f6a, 0x0fa3, 0x0fde, 0x1020, 0x105c, 0x1092, 0x10d0, 0x111e, - 0x1171, 0x11af, 0x11fa, 0x1263, 0x12d2, 0x132d, 0x1385, 0x13cf, - 0x140e, 0x1445, 0x1453, 0x1472, 0x14a3, 0x14c2, 0x14f5, 0x151e, - 0x155c, 0x1597, 0x15d9, 0x1612, 0x1628, 0x164e, 0x1697, 0x16e7, - 0x1716, 0x1722, 0x173b, 0x1768, 0x17ab, 0x17d0, 0x1822, 0x185f, - 0x1891, 0x18e8, 0x193f, 0x1972, 0x198a, 0x19b0, 0x19c0, 0x19df, - // Entry 3F680 - 3F6BF - 0x1a10, 0x1a27, 0x1a58, 0x1ab3, 0x1af6, 0x1b0f, 0x1b35, 0x1b87, - 0x1bc9, 0x1bf6, 0x1c0f, 0x1c25, 0x1c37, 0x1c52, 0x1c6c, 0x1c93, - 0x1cce, 0x1d0c, 0x1d4b, 0x1d98, 0x1de7, 0x1e01, 0x1e29, 0x1e58, - 0x1e7a, 0x1eb1, 0x1ec5, 0x1ef1, 0x1f2e, 0x1f50, 0x1f83, 0x1f93, - 0x1fa2, 0x1fb7, 0x1fe0, 0x2015, 0x2040, 0x20a4, 0x20fb, 0x2141, - 0x2172, 0x2182, 0x2191, 0x21b5, 0x2207, 0x2255, 0x2292, 0x22a0, - 0x22d2, 0x232d, 0x236f, 0x23a9, 0x23de, 0x23ec, 0x240c, 0x244f, - 0x248e, 0x24c1, 0x24f5, 0x2546, 0x2557, 0x2565, 0x2577, 0x2587, - // Entry 3F6C0 - 3F6FF - 0x25a6, 0x25e7, 0x2625, 0x2656, 0x2666, 0x2682, 0x2699, 0x26af, - 0x26bf, 0x26cb, 0x26ea, 0x271b, 0x2730, 0x274f, 0x2780, 0x27a6, - 0x27e3, 0x2803, 0x2849, 0x2893, 0x28c8, 0x28ed, 0x293a, 0x2971, - 0x2980, 0x2990, 0x29b5, 0x29fa, 0x0094, 0x005a, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0e4e, 0x0ea0, 0x0edd, 0x0f1d, 0x0f5d, 0x0f97, - 0x0fce, 0x1011, 0x1051, 0x1085, 0x10bf, 0x1105, 0x1163, 0x11a0, - 0x11e0, 0x1241, 0x12ba, 0x1315, 0x1370, 0x13c2, 0x13fc, 0xffff, - 0xffff, 0x1463, 0xffff, 0x14b2, 0xffff, 0x150f, 0x154f, 0x1589, - // Entry 3F700 - 3F73F - 0x15c6, 0xffff, 0xffff, 0x163d, 0x1683, 0x16d9, 0xffff, 0xffff, - 0xffff, 0x1750, 0xffff, 0x17bb, 0x180d, 0xffff, 0x187c, 0x18ce, - 0x192f, 0xffff, 0xffff, 0xffff, 0xffff, 0x19d0, 0xffff, 0xffff, - 0x1a40, 0x1a9b, 0xffff, 0xffff, 0x1b1e, 0x1b76, 0x1bbc, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c86, 0x1cc0, 0x1cfd, - 0x1d3d, 0x1d7a, 0xffff, 0xffff, 0x1e1b, 0xffff, 0x1e68, 0xffff, - 0xffff, 0x1edc, 0xffff, 0x1f40, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1fcf, 0xffff, 0x2024, 0x208b, 0x20e9, 0x2132, 0xffff, 0xffff, - // Entry 3F740 - 3F77F - 0xffff, 0x219f, 0x21f4, 0x2240, 0xffff, 0xffff, 0x22b7, 0x231b, - 0x2364, 0x2398, 0xffff, 0xffff, 0x23fb, 0x2441, 0x247e, 0xffff, - 0x24d6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2596, 0x25d9, - 0x2616, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x26db, 0xffff, 0xffff, 0x2740, 0xffff, 0x2791, 0xffff, 0x27f3, - 0x2836, 0x2882, 0xffff, 0x28d9, 0x2928, 0xffff, 0xffff, 0xffff, - 0x29a7, 0x29e4, 0x0094, 0x005a, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0e83, 0x0ec7, 0x0f06, 0x0f46, 0x0f82, 0x0fba, 0x0ff9, 0x103a, - // Entry 3F780 - 3F7BF - 0x1072, 0x10aa, 0x10ec, 0x1142, 0x118a, 0x11c9, 0x121f, 0x1290, - 0x12f5, 0x1350, 0x13a5, 0x13e7, 0x142b, 0xffff, 0xffff, 0x148c, - 0xffff, 0x14dd, 0xffff, 0x1538, 0x1574, 0x15b0, 0x15f7, 0xffff, - 0xffff, 0x166a, 0x16b6, 0x1700, 0xffff, 0xffff, 0xffff, 0x178b, - 0xffff, 0x17f0, 0x1842, 0xffff, 0x18b1, 0x190d, 0x195a, 0xffff, - 0xffff, 0xffff, 0xffff, 0x19f9, 0xffff, 0xffff, 0x1a7b, 0x1ad6, - 0xffff, 0xffff, 0x1b57, 0x1ba3, 0x1be1, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1cab, 0x1ce7, 0x1d26, 0x1d64, 0x1dc1, - // Entry 3F7C0 - 3F7FF - 0xffff, 0xffff, 0x1e42, 0xffff, 0x1e97, 0xffff, 0xffff, 0x1f11, - 0xffff, 0x1f6b, 0xffff, 0xffff, 0xffff, 0xffff, 0x1ffc, 0xffff, - 0x2067, 0x20c8, 0x2118, 0x215b, 0xffff, 0xffff, 0xffff, 0x21d6, - 0x2225, 0x2275, 0xffff, 0xffff, 0x22f8, 0x234a, 0x2385, 0x23c5, - 0xffff, 0xffff, 0x2428, 0x2468, 0x24a9, 0xffff, 0x251f, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x25c1, 0x2600, 0x263f, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2704, 0xffff, - 0xffff, 0x2769, 0xffff, 0x27c6, 0xffff, 0x281e, 0x2867, 0x28af, - // Entry 3F800 - 3F83F - 0xffff, 0x290c, 0x2957, 0xffff, 0xffff, 0xffff, 0x29ce, 0x2a1b, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, 0x0036, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0014, 0x0000, 0x0025, 0x0004, 0x0022, 0x001c, 0x0019, - 0x001f, 0x0001, 0x005b, 0x0000, 0x0001, 0x005b, 0x0011, 0x0001, - 0x0008, 0x0627, 0x0001, 0x0008, 0x062f, 0x0004, 0x0033, 0x002d, - 0x002a, 0x0030, 0x0001, 0x005b, 0x001d, 0x0001, 0x005b, 0x001d, - 0x0001, 0x005b, 0x001d, 0x0001, 0x0000, 0x03c6, 0x0008, 0x003f, - // Entry 3F840 - 3F87F - 0x00a4, 0x00fb, 0x0130, 0x0171, 0x018b, 0x019c, 0x01ad, 0x0002, - 0x0042, 0x0073, 0x0003, 0x0046, 0x0055, 0x0064, 0x000d, 0x005b, - 0xffff, 0x002b, 0x0031, 0x0038, 0x0041, 0x004a, 0x0050, 0x0055, - 0x005c, 0x0062, 0x006b, 0x0074, 0x007c, 0x000d, 0x0017, 0xffff, - 0x29ab, 0x29b9, 0x29c3, 0x29c6, 0x29c8, 0x29b9, 0x29bb, 0x29bf, - 0x29ca, 0x29cd, 0x29bb, 0x29cf, 0x000d, 0x005b, 0xffff, 0x0084, - 0x0096, 0x00a4, 0x00b4, 0x00c4, 0x00d1, 0x00dd, 0x00eb, 0x00f8, - 0x0108, 0x0118, 0x0127, 0x0003, 0x0077, 0x0086, 0x0095, 0x000d, - // Entry 3F880 - 3F8BF - 0x005b, 0xffff, 0x002b, 0x0031, 0x0038, 0x0041, 0x004a, 0x0050, - 0x0055, 0x005c, 0x0062, 0x006b, 0x0074, 0x007c, 0x000d, 0x0017, - 0xffff, 0x29ab, 0x29b9, 0x29c3, 0x29c6, 0x29c8, 0x29b9, 0x29bb, - 0x29bf, 0x29ca, 0x29cd, 0x29bb, 0x29cf, 0x000d, 0x005b, 0xffff, - 0x0084, 0x0096, 0x00a4, 0x00b4, 0x00c4, 0x00d1, 0x00dd, 0x00eb, - 0x00f8, 0x0108, 0x0118, 0x0127, 0x0002, 0x00a7, 0x00d1, 0x0005, - 0x00ad, 0x00b6, 0x00c8, 0x0000, 0x00bf, 0x0007, 0x005b, 0x0136, - 0x013a, 0x013e, 0x0142, 0x0146, 0x014a, 0x014f, 0x0007, 0x0000, - // Entry 3F8C0 - 3F8FF - 0x21ec, 0x3a97, 0x3a99, 0x3a9b, 0x3a9d, 0x3a97, 0x3a9f, 0x0007, - 0x005b, 0x0154, 0x0157, 0x015a, 0x015d, 0x0160, 0x0163, 0x0167, - 0x0007, 0x005b, 0x016b, 0x0176, 0x0182, 0x018e, 0x0196, 0x01a1, - 0x01af, 0x0005, 0x00d7, 0x00e0, 0x00f2, 0x0000, 0x00e9, 0x0007, - 0x005b, 0x0136, 0x013a, 0x013e, 0x0142, 0x0146, 0x014a, 0x014f, - 0x0007, 0x0017, 0x29bb, 0x29d1, 0x29d3, 0x29d5, 0x29d3, 0x29a5, - 0x29bb, 0x0007, 0x005b, 0x0154, 0x0157, 0x015a, 0x015d, 0x0160, - 0x0163, 0x0167, 0x0007, 0x005b, 0x01b9, 0x01c3, 0x01ce, 0x01d9, - // Entry 3F900 - 3F93F - 0x01e2, 0x01ee, 0x01fb, 0x0002, 0x00fe, 0x0117, 0x0003, 0x0102, - 0x0109, 0x0110, 0x0005, 0x005b, 0xffff, 0x0206, 0x0211, 0x021c, - 0x0227, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x005b, 0xffff, 0x0232, 0x0242, 0x0252, 0x0262, 0x0003, - 0x011b, 0x0122, 0x0129, 0x0005, 0x005b, 0xffff, 0x0206, 0x0211, - 0x021c, 0x0227, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x005b, 0xffff, 0x0232, 0x0242, 0x0252, 0x0262, - 0x0002, 0x0133, 0x0152, 0x0003, 0x0137, 0x0140, 0x0149, 0x0002, - // Entry 3F940 - 3F97F - 0x013a, 0x013d, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, 0x0272, - 0x0002, 0x0143, 0x0146, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, - 0x0272, 0x0002, 0x014c, 0x014f, 0x0001, 0x0022, 0x05cb, 0x0001, - 0x005b, 0x0272, 0x0003, 0x0156, 0x015f, 0x0168, 0x0002, 0x0159, - 0x015c, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, 0x0272, 0x0002, - 0x0162, 0x0165, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, 0x0272, - 0x0002, 0x016b, 0x016e, 0x0001, 0x0022, 0x05cb, 0x0001, 0x005b, - 0x0272, 0x0003, 0x0180, 0x0000, 0x0175, 0x0002, 0x0178, 0x017c, - // Entry 3F980 - 3F9BF - 0x0002, 0x005b, 0x0276, 0x02ac, 0x0002, 0x005b, 0x028d, 0x02c3, - 0x0002, 0x0183, 0x0187, 0x0002, 0x005b, 0x02e2, 0x02ee, 0x0002, - 0x005b, 0x02e7, 0x02f3, 0x0004, 0x0199, 0x0193, 0x0190, 0x0196, - 0x0001, 0x005b, 0x02fa, 0x0001, 0x005b, 0x030a, 0x0001, 0x005b, - 0x0314, 0x0001, 0x0017, 0x03cc, 0x0004, 0x01aa, 0x01a4, 0x01a1, - 0x01a7, 0x0001, 0x001c, 0x045a, 0x0001, 0x001c, 0x0467, 0x0001, - 0x001c, 0x0471, 0x0001, 0x001c, 0x0479, 0x0004, 0x01bb, 0x01b5, - 0x01b2, 0x01b8, 0x0001, 0x005b, 0x001d, 0x0001, 0x005b, 0x001d, - // Entry 3F9C0 - 3F9FF - 0x0001, 0x005b, 0x001d, 0x0001, 0x0000, 0x03c6, 0x0002, 0x0003, - 0x01ba, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x0037, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0015, 0x0000, 0x0026, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, - 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0034, 0x002e, 0x002b, - 0x0031, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0040, 0x00a5, - // Entry 3FA00 - 3FA3F - 0x00fc, 0x0131, 0x0172, 0x0187, 0x0198, 0x01a9, 0x0002, 0x0043, - 0x0074, 0x0003, 0x0047, 0x0056, 0x0065, 0x000d, 0x005b, 0xffff, - 0x031d, 0x0321, 0x0325, 0x0329, 0x032d, 0x0331, 0x0335, 0x0339, - 0x033d, 0x0341, 0x0345, 0x0349, 0x000d, 0x0017, 0xffff, 0x29b1, - 0x29d7, 0x29d7, 0x29d7, 0x29c6, 0x29c6, 0x29c6, 0x29b1, 0x29d9, - 0x29d9, 0x29d1, 0x29db, 0x000d, 0x005b, 0xffff, 0x034d, 0x0353, - 0x035b, 0x0362, 0x036b, 0x0374, 0x037c, 0x0387, 0x0393, 0x039b, - 0x03a4, 0x03ab, 0x0003, 0x0078, 0x0087, 0x0096, 0x000d, 0x005b, - // Entry 3FA40 - 3FA7F - 0xffff, 0x031d, 0x0321, 0x0325, 0x0329, 0x032d, 0x0331, 0x0335, - 0x0339, 0x033d, 0x0341, 0x0345, 0x0349, 0x000d, 0x0017, 0xffff, - 0x29b1, 0x29d7, 0x29d7, 0x29d7, 0x29c6, 0x29c6, 0x29c6, 0x29b1, - 0x29d9, 0x29d9, 0x29d1, 0x29db, 0x000d, 0x005b, 0xffff, 0x034d, - 0x0353, 0x035b, 0x0362, 0x036b, 0x0374, 0x037c, 0x0387, 0x0393, - 0x039b, 0x03a4, 0x03ab, 0x0002, 0x00a8, 0x00d2, 0x0005, 0x00ae, - 0x00b7, 0x00c9, 0x0000, 0x00c0, 0x0007, 0x005b, 0x03b1, 0x03b5, - 0x03b9, 0x03bd, 0x03c1, 0x03c5, 0x03c9, 0x0007, 0x0017, 0x29bb, - // Entry 3FA80 - 3FABF - 0x29d1, 0x29c6, 0x29c6, 0x29c6, 0x29c6, 0x29d1, 0x0007, 0x0044, - 0x063b, 0x3130, 0x3133, 0x3136, 0x3139, 0x313c, 0x313f, 0x0007, - 0x005b, 0x03cd, 0x03d4, 0x03dc, 0x03e4, 0x03ec, 0x03f2, 0x03fb, - 0x0005, 0x00d8, 0x00e1, 0x00f3, 0x0000, 0x00ea, 0x0007, 0x005b, - 0x03b1, 0x03b5, 0x03b9, 0x03bd, 0x03c1, 0x03c5, 0x03c9, 0x0007, - 0x0017, 0x29bb, 0x29d1, 0x29c6, 0x29c6, 0x29c6, 0x29c6, 0x29d1, - 0x0007, 0x0044, 0x063b, 0x3130, 0x3133, 0x3136, 0x3139, 0x313c, - 0x313f, 0x0007, 0x005b, 0x03cd, 0x03d4, 0x03dc, 0x03e4, 0x03ec, - // Entry 3FAC0 - 3FAFF - 0x03f2, 0x03fb, 0x0002, 0x00ff, 0x0118, 0x0003, 0x0103, 0x010a, - 0x0111, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x004c, 0xffff, 0x00d6, 0x00dd, 0x00e4, 0x00eb, 0x0003, 0x011c, - 0x0123, 0x012a, 0x0005, 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, - 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x004c, 0xffff, 0x00d6, 0x00dd, 0x00e4, 0x00eb, 0x0002, - 0x0134, 0x0153, 0x0003, 0x0138, 0x0141, 0x014a, 0x0002, 0x013b, - // Entry 3FB00 - 3FB3F - 0x013e, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, - 0x0144, 0x0147, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, - 0x0002, 0x014d, 0x0150, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0003, 0x0157, 0x0160, 0x0169, 0x0002, 0x015a, 0x015d, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, 0x0163, - 0x0166, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, - 0x016c, 0x016f, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - 0x0003, 0x017c, 0x0000, 0x0176, 0x0001, 0x0178, 0x0002, 0x005b, - // Entry 3FB40 - 3FB7F - 0x0404, 0x0416, 0x0002, 0x017f, 0x0183, 0x0002, 0x0009, 0x0078, - 0x549d, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x0195, 0x018f, - 0x018c, 0x0192, 0x0001, 0x0000, 0x04fc, 0x0001, 0x0000, 0x050b, - 0x0001, 0x0000, 0x0514, 0x0001, 0x0000, 0x051c, 0x0004, 0x01a6, - 0x01a0, 0x019d, 0x01a3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x01b7, 0x01b1, 0x01ae, 0x01b4, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - // Entry 3FB80 - 3FBBF - 0x0040, 0x01fb, 0x0000, 0x0000, 0x0200, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0205, 0x0000, 0x0000, 0x020a, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x020f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x021a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x021f, - 0x0000, 0x0000, 0x0224, 0x0000, 0x0000, 0x0229, 0x0000, 0x0000, - // Entry 3FBC0 - 3FBFF - 0x022e, 0x0001, 0x01fd, 0x0001, 0x005b, 0x042a, 0x0001, 0x0202, - 0x0001, 0x005b, 0x0431, 0x0001, 0x0207, 0x0001, 0x0009, 0x02be, - 0x0001, 0x020c, 0x0001, 0x005b, 0x0436, 0x0002, 0x0212, 0x0215, - 0x0001, 0x005b, 0x043c, 0x0003, 0x005b, 0x0441, 0x0448, 0x044e, - 0x0001, 0x021c, 0x0001, 0x005b, 0x0457, 0x0001, 0x0221, 0x0001, - 0x002b, 0x0482, 0x0001, 0x0226, 0x0001, 0x0009, 0x00b3, 0x0001, - 0x022b, 0x0001, 0x0009, 0x00ba, 0x0001, 0x0230, 0x0001, 0x005b, - 0x0464, 0x0003, 0x0004, 0x0155, 0x035e, 0x0008, 0x0000, 0x0000, - // Entry 3FC00 - 3FC3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, - 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x005b, 0x046a, 0x0001, - 0x0000, 0x1e0b, 0x0001, 0x001c, 0x0437, 0x0001, 0x001c, 0x14e1, - 0x0008, 0x0030, 0x0076, 0x00c4, 0x00eb, 0x0123, 0x0133, 0x0144, - 0x0000, 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, 0x0046, 0x0055, - 0x000d, 0x005b, 0xffff, 0x047d, 0x0481, 0x0485, 0x0489, 0x048d, - 0x0491, 0x0495, 0x0499, 0x049d, 0x04a1, 0x04a5, 0x04a9, 0x000d, - // Entry 3FC40 - 3FC7F - 0x0017, 0xffff, 0x29d7, 0x29dd, 0x29bb, 0x29a9, 0x29bb, 0x29dd, - 0x29d3, 0x29bb, 0x29bb, 0x29d3, 0x29d7, 0x29dd, 0x000d, 0x005b, - 0xffff, 0x04ad, 0x04bb, 0x04c8, 0x04d8, 0x04e5, 0x04f3, 0x0500, - 0x050f, 0x051f, 0x052f, 0x053d, 0x0553, 0x0002, 0x0000, 0x0067, - 0x000d, 0x0017, 0xffff, 0x29d7, 0x29dd, 0x29bb, 0x29a9, 0x29bb, - 0x29dd, 0x29d3, 0x29bb, 0x29bb, 0x29d3, 0x29d7, 0x29dd, 0x0002, - 0x0079, 0x00a3, 0x0005, 0x007f, 0x0088, 0x009a, 0x0000, 0x0091, - 0x0007, 0x005b, 0x056a, 0x056e, 0x0572, 0x0576, 0x057a, 0x057e, - // Entry 3FC80 - 3FCBF - 0x0582, 0x0007, 0x0017, 0x29a9, 0x29df, 0x29d3, 0x29a9, 0x29e1, - 0x29cf, 0x29bb, 0x0007, 0x005b, 0x056a, 0x056e, 0x0572, 0x0576, - 0x057a, 0x057e, 0x0582, 0x0007, 0x005b, 0x0586, 0x058b, 0x0592, - 0x059a, 0x05a1, 0x05a9, 0x05af, 0x0005, 0x0000, 0x00a9, 0x00bb, - 0x0000, 0x00b2, 0x0007, 0x0017, 0x29a9, 0x29df, 0x29d3, 0x29a9, - 0x29e1, 0x29cf, 0x29bb, 0x0007, 0x005b, 0x056a, 0x056e, 0x0572, - 0x0576, 0x057a, 0x057e, 0x0582, 0x0007, 0x005b, 0x0586, 0x058b, - 0x0592, 0x059a, 0x05a1, 0x05a9, 0x05af, 0x0002, 0x00c7, 0x00e0, - // Entry 3FCC0 - 3FCFF - 0x0003, 0x00cb, 0x00d2, 0x00d9, 0x0005, 0x0005, 0xffff, 0x070e, - 0x0711, 0x0714, 0x0717, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x005b, 0xffff, 0x05b5, 0x05c1, 0x05cd, - 0x05d9, 0x0003, 0x0000, 0x0000, 0x00e4, 0x0005, 0x005b, 0xffff, - 0x05b5, 0x05c1, 0x05cd, 0x05d9, 0x0002, 0x00ee, 0x010d, 0x0003, - 0x00f2, 0x00fb, 0x0104, 0x0002, 0x00f5, 0x00f8, 0x0001, 0x0028, - 0x07cc, 0x0001, 0x005b, 0x05e5, 0x0002, 0x00fe, 0x0101, 0x0001, - 0x0028, 0x07cc, 0x0001, 0x005b, 0x05e5, 0x0002, 0x0107, 0x010a, - // Entry 3FD00 - 3FD3F - 0x0001, 0x0028, 0x07cc, 0x0001, 0x005b, 0x05e5, 0x0003, 0x0111, - 0x0000, 0x011a, 0x0002, 0x0114, 0x0117, 0x0001, 0x0028, 0x07cc, - 0x0001, 0x005b, 0x05e5, 0x0002, 0x011d, 0x0120, 0x0001, 0x0028, - 0x07cc, 0x0001, 0x005b, 0x05e5, 0x0003, 0x012d, 0x0000, 0x0127, - 0x0001, 0x0129, 0x0002, 0x005b, 0x05e9, 0x05ec, 0x0001, 0x012f, - 0x0002, 0x005b, 0x05e9, 0x05ec, 0x0004, 0x0141, 0x013b, 0x0138, - 0x013e, 0x0001, 0x005b, 0x05ef, 0x0001, 0x0001, 0x002d, 0x0001, - 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, 0x0004, 0x0152, 0x014c, - // Entry 3FD40 - 3FD7F - 0x0149, 0x014f, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0040, 0x0196, - 0x0000, 0x0000, 0x019b, 0x01ad, 0x01bc, 0x01cb, 0x01dd, 0x01ec, - 0x01fb, 0x020d, 0x021c, 0x022b, 0x0241, 0x0254, 0x0000, 0x0000, - 0x0000, 0x0267, 0x027e, 0x0290, 0x0000, 0x0000, 0x0000, 0x029f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02a4, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 3FD80 - 3FDBF - 0x0000, 0x0000, 0x0000, 0x02b8, 0x0000, 0x02bd, 0x02d3, 0x02e2, - 0x02f1, 0x0307, 0x0316, 0x0325, 0x033b, 0x034a, 0x0359, 0x0001, - 0x0198, 0x0001, 0x0000, 0x1a35, 0x0003, 0x019f, 0x0000, 0x01a2, - 0x0001, 0x0000, 0x1a39, 0x0002, 0x01a5, 0x01a9, 0x0002, 0x0000, - 0x1a5c, 0x1a5c, 0x0002, 0x0000, 0x1a63, 0x1a63, 0x0003, 0x0000, - 0x0000, 0x01b1, 0x0002, 0x01b4, 0x01b8, 0x0002, 0x0000, 0x1a5c, - 0x1a5c, 0x0002, 0x0000, 0x1a63, 0x1a63, 0x0003, 0x0000, 0x0000, - 0x01c0, 0x0002, 0x01c3, 0x01c7, 0x0002, 0x0000, 0x1a5c, 0x1a5c, - // Entry 3FDC0 - 3FDFF - 0x0002, 0x0000, 0x1a63, 0x1a63, 0x0003, 0x01cf, 0x0000, 0x01d2, - 0x0001, 0x0000, 0x1a6a, 0x0002, 0x01d5, 0x01d9, 0x0002, 0x0000, - 0x1a99, 0x1a99, 0x0002, 0x0000, 0x1aa0, 0x1aa0, 0x0003, 0x0000, - 0x0000, 0x01e1, 0x0002, 0x01e4, 0x01e8, 0x0002, 0x0000, 0x1a99, - 0x1a99, 0x0002, 0x0000, 0x1aa0, 0x1aa0, 0x0003, 0x0000, 0x0000, - 0x01f0, 0x0002, 0x01f3, 0x01f7, 0x0002, 0x0000, 0x1a99, 0x1a99, - 0x0002, 0x0000, 0x1aa0, 0x1aa0, 0x0003, 0x01ff, 0x0000, 0x0202, - 0x0001, 0x0000, 0x1aa7, 0x0002, 0x0205, 0x0209, 0x0002, 0x0000, - // Entry 3FE00 - 3FE3F - 0x1ace, 0x1ace, 0x0002, 0x0000, 0x1ad5, 0x1ad5, 0x0003, 0x0000, - 0x0000, 0x0211, 0x0002, 0x0214, 0x0218, 0x0002, 0x0000, 0x1ace, - 0x1ace, 0x0002, 0x0000, 0x1ad5, 0x1ad5, 0x0003, 0x0000, 0x0000, - 0x0220, 0x0002, 0x0223, 0x0227, 0x0002, 0x0000, 0x1ace, 0x1ace, - 0x0002, 0x0000, 0x1ad5, 0x1ad5, 0x0004, 0x0230, 0x0000, 0x0233, - 0x023e, 0x0001, 0x0000, 0x1adc, 0x0002, 0x0236, 0x023a, 0x0002, - 0x0000, 0x1aff, 0x1aff, 0x0002, 0x0000, 0x1b06, 0x1b06, 0x0001, - 0x0000, 0x1b0d, 0x0004, 0x0000, 0x0000, 0x0246, 0x0251, 0x0002, - // Entry 3FE40 - 3FE7F - 0x0249, 0x024d, 0x0002, 0x0000, 0x1aff, 0x1aff, 0x0002, 0x0000, - 0x1b06, 0x1b06, 0x0001, 0x0000, 0x1b0d, 0x0004, 0x0000, 0x0000, - 0x0259, 0x0264, 0x0002, 0x025c, 0x0260, 0x0002, 0x0000, 0x1aff, - 0x1aff, 0x0002, 0x0000, 0x1b06, 0x1b06, 0x0001, 0x0000, 0x1b0d, - 0x0003, 0x026b, 0x026e, 0x0273, 0x0001, 0x0000, 0x1b2b, 0x0003, - 0x005b, 0x0600, 0x0607, 0x060e, 0x0002, 0x0276, 0x027a, 0x0002, - 0x0000, 0x1b48, 0x1b48, 0x0002, 0x0000, 0x1b4f, 0x1b4f, 0x0003, - 0x0282, 0x0000, 0x0285, 0x0001, 0x0000, 0x1b2b, 0x0002, 0x0288, - // Entry 3FE80 - 3FEBF - 0x028c, 0x0002, 0x0000, 0x1b48, 0x1b48, 0x0002, 0x0000, 0x1b4f, - 0x1b4f, 0x0003, 0x0000, 0x0000, 0x0294, 0x0002, 0x0297, 0x029b, - 0x0002, 0x0000, 0x1b48, 0x1b48, 0x0002, 0x0000, 0x1b4f, 0x1b4f, - 0x0001, 0x02a1, 0x0001, 0x0000, 0x1b62, 0x0003, 0x0000, 0x02a8, - 0x02ad, 0x0003, 0x0000, 0x1b83, 0x1b8f, 0x1b9b, 0x0002, 0x02b0, - 0x02b4, 0x0002, 0x0000, 0x1ba7, 0x1ba7, 0x0002, 0x0000, 0x1bb4, - 0x1bb4, 0x0001, 0x02ba, 0x0001, 0x0000, 0x1d5d, 0x0003, 0x02c1, - 0x02c4, 0x02c8, 0x0001, 0x0000, 0x1d67, 0x0002, 0x0000, 0xffff, - // Entry 3FEC0 - 3FEFF - 0x1d6c, 0x0002, 0x02cb, 0x02cf, 0x0002, 0x0000, 0x1d76, 0x1d76, - 0x0002, 0x0000, 0x1d7d, 0x1d7d, 0x0003, 0x0000, 0x0000, 0x02d7, - 0x0002, 0x02da, 0x02de, 0x0002, 0x0000, 0x1d76, 0x1d76, 0x0002, - 0x0000, 0x1d7d, 0x1d7d, 0x0003, 0x0000, 0x0000, 0x02e6, 0x0002, - 0x02e9, 0x02ed, 0x0002, 0x0000, 0x1d76, 0x1d76, 0x0002, 0x0000, - 0x1d7d, 0x1d7d, 0x0003, 0x02f5, 0x02f8, 0x02fc, 0x0001, 0x0000, - 0x1d84, 0x0002, 0x0000, 0xffff, 0x1d8b, 0x0002, 0x02ff, 0x0303, - 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, - // Entry 3FF00 - 3FF3F - 0x0003, 0x0000, 0x0000, 0x030b, 0x0002, 0x030e, 0x0312, 0x0002, - 0x0000, 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, 0x0003, - 0x0000, 0x0000, 0x031a, 0x0002, 0x031d, 0x0321, 0x0002, 0x0000, - 0x1d97, 0x1d97, 0x0002, 0x0025, 0x11bf, 0x11bf, 0x0003, 0x0329, - 0x032c, 0x0330, 0x0001, 0x0000, 0x1da9, 0x0002, 0x000d, 0xffff, - 0x3182, 0x0002, 0x0333, 0x0337, 0x0002, 0x0026, 0x00bf, 0x00bf, - 0x0002, 0x0000, 0x1dbb, 0x1dbb, 0x0003, 0x0000, 0x0000, 0x033f, - 0x0002, 0x0342, 0x0346, 0x0002, 0x0026, 0x00bf, 0x00bf, 0x0002, - // Entry 3FF40 - 3FF7F - 0x0000, 0x1dbb, 0x1dbb, 0x0003, 0x0000, 0x0000, 0x034e, 0x0002, - 0x0351, 0x0355, 0x0002, 0x0026, 0x00bf, 0x00bf, 0x0002, 0x0000, - 0x1dbb, 0x1dbb, 0x0001, 0x035b, 0x0001, 0x0000, 0x1dc2, 0x0004, - 0x0000, 0x0000, 0x0000, 0x0363, 0x0002, 0x0000, 0x0366, 0x0003, - 0x036a, 0x03ca, 0x0392, 0x0026, 0x005b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3FF80 - 3FFBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0614, 0x0036, 0x005b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0626, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 3FFC0 - 3FFFF - 0xffff, 0xffff, 0x0664, 0x0026, 0x005b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0648, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, - // Entry 40000 - 4003F - 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, - 0x0004, 0x0273, 0x064d, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, - 0x001b, 0x0021, 0x0001, 0x005b, 0x0676, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0008, 0x062f, 0x0004, 0x0035, - 0x002f, 0x002c, 0x0032, 0x0001, 0x005b, 0x0686, 0x0001, 0x005b, - // Entry 40040 - 4007F - 0x0686, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, - 0x0041, 0x00a6, 0x00fd, 0x0132, 0x021b, 0x0240, 0x0251, 0x0262, - 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, - 0x000d, 0xffff, 0x0059, 0x33ea, 0x3399, 0x33ee, 0x33f2, 0x33f6, - 0x33fa, 0x33fe, 0x3402, 0x3406, 0x340a, 0x340f, 0x000d, 0x0000, - 0xffff, 0x214a, 0x2002, 0x3a8d, 0x21ec, 0x3a8d, 0x3aa1, 0x3aa3, - 0x200e, 0x2002, 0x2000, 0x3a8f, 0x3a91, 0x000d, 0x005b, 0xffff, - 0x0694, 0x069a, 0x06a1, 0x06a6, 0x06ac, 0x06b0, 0x06b8, 0x06bf, - // Entry 40080 - 400BF - 0x06c5, 0x06cd, 0x06d3, 0x06db, 0x0003, 0x0079, 0x0088, 0x0097, - 0x000d, 0x0005, 0xffff, 0x0636, 0x247c, 0x2480, 0x2484, 0x2488, - 0x248c, 0x2490, 0x2494, 0x2498, 0x249c, 0x24a0, 0x24a5, 0x000d, - 0x0017, 0xffff, 0x29cf, 0x29bb, 0x29d1, 0x29bf, 0x29d1, 0x29e4, - 0x29d7, 0x29d9, 0x29bb, 0x29d3, 0x29b1, 0x29b3, 0x000d, 0x005b, - 0xffff, 0x06e3, 0x06e9, 0x06f0, 0x06f5, 0x06fb, 0x06ff, 0x0707, - 0x070e, 0x0714, 0x071c, 0x0722, 0x072a, 0x0002, 0x00a9, 0x00d3, - 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, 0x005b, - // Entry 400C0 - 400FF - 0x0732, 0x0736, 0x073b, 0x073f, 0x0744, 0x0748, 0x074c, 0x0007, - 0x0017, 0x29b3, 0x29e6, 0x29d1, 0x29d1, 0x29e8, 0x29bf, 0x29bb, - 0x0007, 0x005b, 0x0732, 0x0736, 0x073b, 0x073f, 0x0744, 0x0748, - 0x074c, 0x0007, 0x005b, 0x0750, 0x0757, 0x0760, 0x0769, 0x0775, - 0x077d, 0x0786, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, - 0x0007, 0x005b, 0x0732, 0x0736, 0x073b, 0x073f, 0x0744, 0x0748, - 0x074c, 0x0007, 0x0017, 0x29b3, 0x29e6, 0x29d1, 0x29d1, 0x29e8, - 0x29bf, 0x29bb, 0x0007, 0x005b, 0x0732, 0x0736, 0x073b, 0x073f, - // Entry 40100 - 4013F - 0x0744, 0x0748, 0x074c, 0x0007, 0x005b, 0x0790, 0x0797, 0x07a0, - 0x07a9, 0x07b5, 0x07bd, 0x07c6, 0x0002, 0x0100, 0x0119, 0x0003, - 0x0104, 0x010b, 0x0112, 0x0005, 0x005b, 0xffff, 0x07d0, 0x07dc, - 0x07e9, 0x07f7, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x005b, 0xffff, 0x0804, 0x0816, 0x0828, 0x083b, - 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x005b, 0xffff, 0x084f, - 0x085b, 0x0868, 0x0876, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x005b, 0xffff, 0x0883, 0x0895, 0x08a7, - // Entry 40140 - 4017F - 0x08b9, 0x0002, 0x0135, 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, - 0x0009, 0x0146, 0x014c, 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, - 0x0149, 0x0152, 0x0001, 0x005b, 0x08c9, 0x0001, 0x005b, 0x08d5, - 0x0001, 0x005b, 0x08e1, 0x0001, 0x005b, 0x08ed, 0x0001, 0x005b, - 0x08f8, 0x0001, 0x005b, 0x08d5, 0x0001, 0x005b, 0x08ed, 0x0001, - 0x005b, 0x0905, 0x0001, 0x005b, 0x0911, 0x0009, 0x016b, 0x0171, - 0x0168, 0x0174, 0x017a, 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, - 0x005b, 0x08c9, 0x0001, 0x005b, 0x08d5, 0x0001, 0x005b, 0x08e1, - // Entry 40180 - 401BF - 0x0001, 0x005b, 0x08ed, 0x0001, 0x005b, 0x08f8, 0x0001, 0x005b, - 0x08d5, 0x0001, 0x005b, 0x08ed, 0x0001, 0x005b, 0x0905, 0x0001, - 0x005b, 0x0911, 0x0009, 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, - 0x01a2, 0x01a5, 0x0193, 0x019c, 0x0001, 0x005b, 0x08c9, 0x0001, - 0x005b, 0x08d5, 0x0001, 0x005b, 0x08e1, 0x0001, 0x005b, 0x08ed, - 0x0001, 0x005b, 0x08f8, 0x0001, 0x005b, 0x08d5, 0x0001, 0x005b, - 0x08ed, 0x0001, 0x005b, 0x0905, 0x0001, 0x005b, 0x0911, 0x0003, - 0x01ac, 0x01d1, 0x01f6, 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, - // Entry 401C0 - 401FF - 0x01c8, 0x01cb, 0x01ce, 0x01bc, 0x01c5, 0x0001, 0x005b, 0x091a, - 0x0001, 0x005b, 0x0923, 0x0001, 0x005b, 0x092c, 0x0001, 0x005b, - 0x0935, 0x0001, 0x005b, 0x093d, 0x0001, 0x005b, 0x0923, 0x0001, - 0x005b, 0x0935, 0x0001, 0x005b, 0x0946, 0x0001, 0x005b, 0x094f, - 0x0009, 0x01de, 0x01e4, 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, - 0x01e1, 0x01ea, 0x0001, 0x005b, 0x091a, 0x0001, 0x005b, 0x0923, - 0x0001, 0x005b, 0x092c, 0x0001, 0x005b, 0x0935, 0x0001, 0x005b, - 0x093d, 0x0001, 0x005b, 0x0923, 0x0001, 0x005b, 0x0935, 0x0001, - // Entry 40200 - 4023F - 0x005b, 0x0946, 0x0001, 0x005b, 0x094f, 0x0009, 0x0203, 0x0209, - 0x0200, 0x020c, 0x0212, 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, - 0x005b, 0x091a, 0x0001, 0x005b, 0x0923, 0x0001, 0x005b, 0x092c, - 0x0001, 0x005b, 0x0935, 0x0001, 0x005b, 0x093d, 0x0001, 0x005b, - 0x0923, 0x0001, 0x005b, 0x0935, 0x0001, 0x005b, 0x0946, 0x0001, - 0x005b, 0x094f, 0x0003, 0x022a, 0x0235, 0x021f, 0x0002, 0x0222, - 0x0226, 0x0002, 0x005b, 0x0955, 0x0974, 0x0002, 0x005b, 0x0963, - 0x0982, 0x0002, 0x022d, 0x0231, 0x0002, 0x005b, 0x098e, 0x099a, - // Entry 40240 - 4027F - 0x0002, 0x005b, 0x0993, 0x09a0, 0x0002, 0x0238, 0x023c, 0x0002, - 0x005b, 0x098e, 0x099a, 0x0002, 0x005b, 0x0993, 0x09a0, 0x0004, - 0x024e, 0x0248, 0x0245, 0x024b, 0x0001, 0x0005, 0x0773, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0008, 0x0620, - 0x0004, 0x025f, 0x0259, 0x0256, 0x025c, 0x0001, 0x005b, 0x09a5, - 0x0001, 0x005b, 0x09b5, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, - 0x0478, 0x0004, 0x0270, 0x026a, 0x0267, 0x026d, 0x0001, 0x005b, - 0x0686, 0x0001, 0x005b, 0x0686, 0x0001, 0x0005, 0x0846, 0x0001, - // Entry 40280 - 402BF - 0x0005, 0x0846, 0x0040, 0x02b4, 0x0000, 0x0000, 0x02b9, 0x02d0, - 0x02e2, 0x02f4, 0x030b, 0x031d, 0x032f, 0x0346, 0x0358, 0x036a, - 0x0385, 0x039b, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03c8, 0x03da, - 0x0000, 0x0000, 0x0000, 0x03ec, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x03f1, 0x0405, 0x0419, 0x042d, 0x0441, 0x0455, 0x0469, - 0x047d, 0x0491, 0x04a5, 0x04b9, 0x04cd, 0x04e1, 0x04f5, 0x0509, - 0x051d, 0x0531, 0x0545, 0x0559, 0x056d, 0x0581, 0x0000, 0x0595, - 0x0000, 0x059a, 0x05b0, 0x05c2, 0x05d4, 0x05ea, 0x05fc, 0x060e, - // Entry 402C0 - 402FF - 0x0624, 0x0636, 0x0648, 0x0001, 0x02b6, 0x0001, 0x005b, 0x09c2, - 0x0003, 0x02bd, 0x02c0, 0x02c5, 0x0001, 0x005b, 0x09c7, 0x0003, - 0x005b, 0x09cb, 0x09da, 0x09e5, 0x0002, 0x02c8, 0x02cc, 0x0002, - 0x005b, 0x0a04, 0x09f7, 0x0002, 0x005b, 0x0a27, 0x0a15, 0x0003, - 0x02d4, 0x0000, 0x02d7, 0x0001, 0x005b, 0x09c7, 0x0002, 0x02da, - 0x02de, 0x0002, 0x005b, 0x0a04, 0x09f7, 0x0002, 0x005b, 0x0a27, - 0x0a15, 0x0003, 0x02e6, 0x0000, 0x02e9, 0x0001, 0x005b, 0x09c7, - 0x0002, 0x02ec, 0x02f0, 0x0002, 0x005b, 0x0a04, 0x09f7, 0x0002, - // Entry 40300 - 4033F - 0x005b, 0x0a27, 0x0a15, 0x0003, 0x02f8, 0x02fb, 0x0300, 0x0001, - 0x005b, 0x0a3a, 0x0003, 0x005b, 0x0a43, 0x0a57, 0x0a67, 0x0002, - 0x0303, 0x0307, 0x0002, 0x005b, 0x0a90, 0x0a7e, 0x0002, 0x005b, - 0x0abc, 0x0aa5, 0x0003, 0x030f, 0x0000, 0x0312, 0x0001, 0x005b, - 0x0a3a, 0x0002, 0x0315, 0x0319, 0x0002, 0x005b, 0x0a90, 0x0a7e, - 0x0002, 0x005b, 0x0abc, 0x0aa5, 0x0003, 0x0321, 0x0000, 0x0324, - 0x0001, 0x005b, 0x0a3a, 0x0002, 0x0327, 0x032b, 0x0002, 0x005b, - 0x0a90, 0x0a7e, 0x0002, 0x005b, 0x0abc, 0x0aa5, 0x0003, 0x0333, - // Entry 40340 - 4037F - 0x0336, 0x033b, 0x0001, 0x005b, 0x0ad5, 0x0003, 0x005b, 0x0ada, - 0x0aea, 0x0af6, 0x0002, 0x033e, 0x0342, 0x0002, 0x005b, 0x0b17, - 0x0b09, 0x0002, 0x005b, 0x0b26, 0x0b26, 0x0003, 0x034a, 0x0000, - 0x034d, 0x0001, 0x005b, 0x0ad5, 0x0002, 0x0350, 0x0354, 0x0002, - 0x005b, 0x0b17, 0x0b09, 0x0002, 0x005b, 0x0b26, 0x0b26, 0x0003, - 0x035c, 0x0000, 0x035f, 0x0001, 0x005b, 0x0ad5, 0x0002, 0x0362, - 0x0366, 0x0002, 0x005b, 0x0b17, 0x0b09, 0x0002, 0x005b, 0x0b26, - 0x0b26, 0x0004, 0x036f, 0x0372, 0x0377, 0x0382, 0x0001, 0x005b, - // Entry 40380 - 403BF - 0x0b39, 0x0003, 0x005b, 0x0b3f, 0x0b4f, 0x0b5c, 0x0002, 0x037a, - 0x037e, 0x0002, 0x005b, 0x0b7b, 0x0b6e, 0x0002, 0x005b, 0x0b8b, - 0x0b8b, 0x0001, 0x005b, 0x0b9f, 0x0004, 0x038a, 0x0000, 0x038d, - 0x0398, 0x0001, 0x005b, 0x0b39, 0x0002, 0x0390, 0x0394, 0x0002, - 0x005b, 0x0b7b, 0x0b6e, 0x0002, 0x005b, 0x0b8b, 0x0b8b, 0x0001, - 0x005b, 0x0b9f, 0x0004, 0x03a0, 0x0000, 0x03a3, 0x03ae, 0x0001, - 0x005b, 0x0b39, 0x0002, 0x03a6, 0x03aa, 0x0002, 0x005b, 0x0b7b, - 0x0b6e, 0x0002, 0x005b, 0x0b8b, 0x0b8b, 0x0001, 0x005b, 0x0b9f, - // Entry 403C0 - 403FF - 0x0003, 0x03b5, 0x03b8, 0x03bd, 0x0001, 0x005b, 0x0baa, 0x0003, - 0x005b, 0x0bb0, 0x0bb4, 0x0bb8, 0x0002, 0x03c0, 0x03c4, 0x0002, - 0x005b, 0x0bcc, 0x0bbf, 0x0002, 0x005b, 0x0bdc, 0x0bdc, 0x0003, - 0x03cc, 0x0000, 0x03cf, 0x0001, 0x005b, 0x0baa, 0x0002, 0x03d2, - 0x03d6, 0x0002, 0x005b, 0x0bcc, 0x0bbf, 0x0002, 0x005b, 0x0bdc, - 0x0bdc, 0x0003, 0x03de, 0x0000, 0x03e1, 0x0001, 0x005b, 0x0baa, - 0x0002, 0x03e4, 0x03e8, 0x0002, 0x005b, 0x0bcc, 0x0bbf, 0x0002, - 0x005b, 0x0bdc, 0x0bdc, 0x0001, 0x03ee, 0x0001, 0x005b, 0x0bf0, - // Entry 40400 - 4043F - 0x0003, 0x0000, 0x03f5, 0x03fa, 0x0003, 0x005b, 0x0bff, 0x0c14, - 0x0c24, 0x0002, 0x03fd, 0x0401, 0x0002, 0x005b, 0x0c4d, 0x0c3b, - 0x0002, 0x005b, 0x0c79, 0x0c61, 0x0003, 0x0000, 0x0409, 0x040e, - 0x0003, 0x005b, 0x0bff, 0x0c14, 0x0c24, 0x0002, 0x0411, 0x0415, - 0x0002, 0x005b, 0x0c4d, 0x0c3b, 0x0002, 0x005b, 0x0c79, 0x0c61, - 0x0003, 0x0000, 0x041d, 0x0422, 0x0003, 0x005b, 0x0bff, 0x0c14, - 0x0c24, 0x0002, 0x0425, 0x0429, 0x0002, 0x005b, 0x0c4d, 0x0c3b, - 0x0002, 0x005b, 0x0c79, 0x0c61, 0x0003, 0x0000, 0x0431, 0x0436, - // Entry 40440 - 4047F - 0x0003, 0x005b, 0x0c93, 0x0ca8, 0x0cba, 0x0002, 0x0439, 0x043d, - 0x0002, 0x005b, 0x0ce3, 0x0cd1, 0x0002, 0x005b, 0x0d0f, 0x0cf7, - 0x0003, 0x0000, 0x0445, 0x044a, 0x0003, 0x005b, 0x0c93, 0x0ca8, - 0x0cba, 0x0002, 0x044d, 0x0451, 0x0002, 0x005b, 0x0ce3, 0x0cd1, - 0x0002, 0x005b, 0x0d0f, 0x0cf7, 0x0003, 0x0000, 0x0459, 0x045e, - 0x0003, 0x005b, 0x0c93, 0x0ca8, 0x0cba, 0x0002, 0x0461, 0x0465, - 0x0002, 0x005b, 0x0ce3, 0x0cd1, 0x0002, 0x005b, 0x0d0f, 0x0cf7, - 0x0003, 0x0000, 0x046d, 0x0472, 0x0003, 0x005b, 0x0d29, 0x0d3e, - // Entry 40480 - 404BF - 0x0d50, 0x0002, 0x0475, 0x0479, 0x0002, 0x005b, 0x0d79, 0x0d67, - 0x0002, 0x005b, 0x0da5, 0x0d8d, 0x0003, 0x0000, 0x0481, 0x0486, - 0x0003, 0x005b, 0x0d29, 0x0d3e, 0x0d50, 0x0002, 0x0489, 0x048d, - 0x0002, 0x005b, 0x0d79, 0x0d67, 0x0002, 0x005b, 0x0da5, 0x0d8d, - 0x0003, 0x0000, 0x0495, 0x049a, 0x0003, 0x005b, 0x0d29, 0x0d3e, - 0x0d50, 0x0002, 0x049d, 0x04a1, 0x0002, 0x005b, 0x0d79, 0x0d67, - 0x0002, 0x005b, 0x0da5, 0x0d8d, 0x0003, 0x0000, 0x04a9, 0x04ae, - 0x0003, 0x005b, 0x0dbf, 0x0dd7, 0x0dec, 0x0002, 0x04b1, 0x04b5, - // Entry 404C0 - 404FF - 0x0002, 0x005b, 0x0e1b, 0x0e06, 0x0002, 0x005b, 0x0e4d, 0x0e32, - 0x0003, 0x0000, 0x04bd, 0x04c2, 0x0003, 0x005b, 0x0dbf, 0x0dd7, - 0x0dec, 0x0002, 0x04c5, 0x04c9, 0x0002, 0x005b, 0x0e1b, 0x0e06, - 0x0002, 0x005b, 0x0e4d, 0x0e32, 0x0003, 0x0000, 0x04d1, 0x04d6, - 0x0003, 0x005b, 0x0dbf, 0x0dd7, 0x0dec, 0x0002, 0x04d9, 0x04dd, - 0x0002, 0x005b, 0x0e1b, 0x0e06, 0x0002, 0x005b, 0x0e4d, 0x0e32, - 0x0003, 0x0000, 0x04e5, 0x04ea, 0x0003, 0x005b, 0x0e6a, 0x0e7e, - 0x0e8f, 0x0002, 0x04ed, 0x04f1, 0x0002, 0x005b, 0x0eb7, 0x0ea5, - // Entry 40500 - 4053F - 0x0002, 0x005b, 0x0ee3, 0x0ecb, 0x0003, 0x0000, 0x04f9, 0x04fe, - 0x0003, 0x005b, 0x0e6a, 0x0e7e, 0x0e8f, 0x0002, 0x0501, 0x0505, - 0x0002, 0x005b, 0x0eb7, 0x0ea5, 0x0002, 0x005b, 0x0ee3, 0x0ecb, - 0x0003, 0x0000, 0x050d, 0x0512, 0x0003, 0x005b, 0x0e6a, 0x0e7e, - 0x0e8f, 0x0002, 0x0515, 0x0519, 0x0002, 0x005b, 0x0eb7, 0x0ea5, - 0x0002, 0x005b, 0x0ee3, 0x0ecb, 0x0003, 0x0000, 0x0521, 0x0526, - 0x0003, 0x005b, 0x0efd, 0x0f12, 0x0f24, 0x0002, 0x0529, 0x052d, - 0x0002, 0x005b, 0x0f4e, 0x0f3b, 0x0002, 0x005b, 0x0f7c, 0x0f63, - // Entry 40540 - 4057F - 0x0003, 0x0000, 0x0535, 0x053a, 0x0003, 0x005b, 0x0efd, 0x0f12, - 0x0f24, 0x0002, 0x053d, 0x0541, 0x0002, 0x005b, 0x0f4e, 0x0f3b, - 0x0002, 0x005b, 0x0f7c, 0x0f63, 0x0003, 0x0000, 0x0549, 0x054e, - 0x0003, 0x005b, 0x0efd, 0x0f12, 0x0f24, 0x0002, 0x0551, 0x0555, - 0x0002, 0x005b, 0x0f4e, 0x0f3b, 0x0002, 0x005b, 0x0f7c, 0x0f63, - 0x0003, 0x0000, 0x055d, 0x0562, 0x0003, 0x005b, 0x0f97, 0x0fad, - 0x0fc0, 0x0002, 0x0565, 0x0569, 0x0002, 0x005b, 0x0feb, 0x0fd8, - 0x0002, 0x005b, 0x1019, 0x1000, 0x0003, 0x0000, 0x0571, 0x0576, - // Entry 40580 - 405BF - 0x0003, 0x005b, 0x0f97, 0x0fad, 0x0fc0, 0x0002, 0x0579, 0x057d, - 0x0002, 0x005b, 0x0feb, 0x0fd8, 0x0002, 0x005b, 0x1019, 0x1000, - 0x0003, 0x0000, 0x0585, 0x058a, 0x0003, 0x005b, 0x0f97, 0x0fad, - 0x0fc0, 0x0002, 0x058d, 0x0591, 0x0002, 0x005b, 0x0feb, 0x0fd8, - 0x0002, 0x005b, 0x1019, 0x1000, 0x0001, 0x0597, 0x0001, 0x005b, - 0x1034, 0x0003, 0x059e, 0x05a1, 0x05a5, 0x0001, 0x005b, 0x1045, - 0x0002, 0x005b, 0xffff, 0x104a, 0x0002, 0x05a8, 0x05ac, 0x0002, - 0x005b, 0x1062, 0x1056, 0x0002, 0x005b, 0x1071, 0x1071, 0x0003, - // Entry 405C0 - 405FF - 0x05b4, 0x0000, 0x05b7, 0x0001, 0x005b, 0x1045, 0x0002, 0x05ba, - 0x05be, 0x0002, 0x005b, 0x1062, 0x1056, 0x0002, 0x005b, 0x1071, - 0x1071, 0x0003, 0x05c6, 0x0000, 0x05c9, 0x0001, 0x005b, 0x1045, - 0x0002, 0x05cc, 0x05d0, 0x0002, 0x005b, 0x1062, 0x1056, 0x0002, - 0x005b, 0x1071, 0x1071, 0x0003, 0x05d8, 0x05db, 0x05df, 0x0001, - 0x005b, 0x1084, 0x0002, 0x005b, 0xffff, 0x108c, 0x0002, 0x05e2, - 0x05e6, 0x0002, 0x005b, 0x10aa, 0x109b, 0x0002, 0x005b, 0x10d1, - 0x10bb, 0x0003, 0x05ee, 0x0000, 0x05f1, 0x0001, 0x0001, 0x075a, - // Entry 40600 - 4063F - 0x0002, 0x05f4, 0x05f8, 0x0002, 0x005b, 0x10e6, 0x10e6, 0x0002, - 0x005b, 0x10f3, 0x10f3, 0x0003, 0x0600, 0x0000, 0x0603, 0x0001, - 0x0001, 0x075a, 0x0002, 0x0606, 0x060a, 0x0002, 0x005b, 0x10e6, - 0x10e6, 0x0002, 0x005b, 0x10f3, 0x10f3, 0x0003, 0x0612, 0x0615, - 0x0619, 0x0001, 0x005b, 0x1106, 0x0002, 0x005b, 0xffff, 0x110f, - 0x0002, 0x061c, 0x0620, 0x0002, 0x005b, 0x1124, 0x1114, 0x0002, - 0x005b, 0x114d, 0x1136, 0x0003, 0x0628, 0x0000, 0x062b, 0x0001, - 0x0001, 0x07d3, 0x0002, 0x062e, 0x0632, 0x0002, 0x005b, 0x1163, - // Entry 40640 - 4067F - 0x1163, 0x0002, 0x005b, 0x1170, 0x1170, 0x0003, 0x063a, 0x0000, - 0x063d, 0x0001, 0x0001, 0x07d3, 0x0002, 0x0640, 0x0644, 0x0002, - 0x005b, 0x1163, 0x1163, 0x0002, 0x005b, 0x1170, 0x1170, 0x0001, - 0x064a, 0x0001, 0x005b, 0x1183, 0x0004, 0x0652, 0x0657, 0x065c, - 0x066b, 0x0003, 0x0000, 0x1dc7, 0x3aa5, 0x3abb, 0x0003, 0x005b, - 0x118e, 0x1197, 0x11a7, 0x0002, 0x0000, 0x065f, 0x0003, 0x0000, - 0x0666, 0x0663, 0x0001, 0x005b, 0x11ba, 0x0003, 0x005b, 0xffff, - 0x11d6, 0x11eb, 0x0002, 0x0000, 0x066e, 0x0003, 0x0672, 0x07b2, - // Entry 40680 - 406BF - 0x0712, 0x009e, 0x005b, 0xffff, 0xffff, 0xffff, 0xffff, 0x12b2, - 0x1317, 0x1391, 0x13d2, 0x142b, 0x1481, 0x14e9, 0x156c, 0x15aa, - 0x1652, 0x1681, 0x16cb, 0x173c, 0x177d, 0x17c1, 0x1823, 0x18ac, - 0x190b, 0x1979, 0x19c6, 0x1a01, 0xffff, 0xffff, 0x1a69, 0xffff, - 0x1ac3, 0xffff, 0x1b3b, 0x1b76, 0x1bab, 0x1be3, 0xffff, 0xffff, - 0x1c63, 0x1ca7, 0x1cee, 0xffff, 0xffff, 0xffff, 0x1d64, 0xffff, - 0x1dd9, 0x1e32, 0xffff, 0x1eab, 0x1f10, 0x1f66, 0xffff, 0xffff, - 0xffff, 0xffff, 0x200a, 0xffff, 0xffff, 0x2087, 0x20e6, 0xffff, - // Entry 406C0 - 406FF - 0xffff, 0x217e, 0x21e6, 0x222d, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x22f7, 0x232f, 0x2370, 0x23ae, 0x23ef, 0xffff, - 0xffff, 0x249c, 0xffff, 0x24df, 0xffff, 0xffff, 0x2573, 0xffff, - 0x2606, 0xffff, 0xffff, 0xffff, 0xffff, 0x2697, 0xffff, 0x26ed, - 0x2761, 0x27e4, 0x282e, 0xffff, 0xffff, 0xffff, 0x2896, 0x28f2, - 0x2948, 0xffff, 0xffff, 0x29ed, 0x2a79, 0x2ac6, 0x2afe, 0xffff, - 0xffff, 0x2b6b, 0x2bac, 0x2be7, 0xffff, 0x2c40, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2d3d, 0x2d7e, 0x2dbc, 0xffff, 0xffff, - // Entry 40700 - 4073F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e6f, 0xffff, 0xffff, - 0x2ecd, 0xffff, 0x2f15, 0xffff, 0x2f75, 0x2fb3, 0x2ffd, 0xffff, - 0x3053, 0x30a0, 0xffff, 0xffff, 0xffff, 0x3126, 0x3167, 0xffff, - 0xffff, 0x1206, 0x1356, 0x15df, 0x1617, 0xffff, 0xffff, 0x25b7, - 0x2cd9, 0x009e, 0x005b, 0x1250, 0x1263, 0x127b, 0x1292, 0x12ce, - 0x1326, 0x13a1, 0x13ea, 0x1442, 0x149e, 0x150f, 0x157b, 0x15b6, - 0x165c, 0x1694, 0x16eb, 0x174c, 0x178e, 0x17dc, 0x184b, 0x18c6, - 0x192a, 0x198d, 0x19d4, 0x1a14, 0x1a4b, 0x1a59, 0x1a79, 0x1aaa, - // Entry 40740 - 4077F - 0x1adc, 0x1b2c, 0x1b49, 0x1b82, 0x1bb8, 0x1bf6, 0x1c2d, 0x1c4f, - 0x1c74, 0x1cb9, 0x1cfb, 0x1d26, 0x1d35, 0x1d4f, 0x1d80, 0x1dc9, - 0x1df1, 0x1e49, 0x1e88, 0x1ec7, 0x1f27, 0x1f73, 0x1f9e, 0x1fb7, - 0x1fe8, 0x1ffa, 0x201c, 0x2051, 0x2067, 0x20a1, 0x2105, 0x2161, - 0x216e, 0x219b, 0x21f8, 0x223a, 0x2265, 0x227d, 0x2292, 0x22a3, - 0x22be, 0x22d8, 0x2304, 0x233f, 0x237f, 0x23be, 0x2410, 0x2463, - 0x247d, 0x24a8, 0x24d1, 0x24f3, 0x252c, 0x254d, 0x2584, 0x25ef, - 0x2616, 0x2647, 0x2658, 0x2667, 0x267e, 0x26a9, 0x26de, 0x270e, - // Entry 40780 - 407BF - 0x2787, 0x27f7, 0x283c, 0x2869, 0x2879, 0x2888, 0x28af, 0x2909, - 0x296d, 0x29c8, 0x29d6, 0x2a09, 0x2a8d, 0x2ad3, 0x2b0f, 0x2b42, - 0x2b4f, 0x2b7b, 0x2bba, 0x2bf8, 0x2c2b, 0x2c5e, 0x2cab, 0x2cbb, - 0x2cca, 0x2d1d, 0x2d2d, 0x2d4d, 0x2d8d, 0x2dc9, 0x2df4, 0x2e04, - 0x2e15, 0x2e2b, 0x2e44, 0x2e54, 0x2e61, 0x2e7d, 0x2eaa, 0x2ebe, - 0x2edb, 0x2f08, 0x2f2a, 0x2f65, 0x2f84, 0x2fc6, 0x300e, 0x3041, - 0x3067, 0x30b2, 0x30e7, 0x30f6, 0x310a, 0x3136, 0x317c, 0x2154, - 0x2a52, 0x1219, 0x1364, 0x15ec, 0x1625, 0x1b1f, 0x253e, 0x25c4, - // Entry 407C0 - 407FF - 0x2cea, 0x009e, 0x005b, 0xffff, 0xffff, 0xffff, 0xffff, 0x12f4, - 0x133f, 0x13bb, 0x140c, 0x1463, 0x14c5, 0x153f, 0x1594, 0x15cc, - 0x1670, 0x16b1, 0x1715, 0x1766, 0x17a9, 0x1801, 0x187d, 0x18ea, - 0x1953, 0x19ab, 0x19ec, 0x1a31, 0xffff, 0xffff, 0x1a93, 0xffff, - 0x1aff, 0xffff, 0x1b61, 0x1b98, 0x1bcf, 0x1c13, 0xffff, 0xffff, - 0x1c8f, 0x1cd5, 0x1d12, 0xffff, 0xffff, 0xffff, 0x1da6, 0xffff, - 0x1e13, 0x1e6a, 0xffff, 0x1eed, 0x1f48, 0x1f8a, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2038, 0xffff, 0xffff, 0x20c5, 0x212e, 0xffff, - // Entry 40800 - 4083F - 0xffff, 0x21c2, 0x2214, 0x2251, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x231b, 0x2359, 0x2398, 0x23d8, 0x243b, 0xffff, - 0xffff, 0x24be, 0xffff, 0x2511, 0xffff, 0xffff, 0x259f, 0xffff, - 0x2630, 0xffff, 0xffff, 0xffff, 0xffff, 0x26c5, 0xffff, 0x2739, - 0x27b7, 0x2814, 0x2854, 0xffff, 0xffff, 0xffff, 0x28d2, 0x292a, - 0x299c, 0xffff, 0xffff, 0x2a2f, 0x2aab, 0x2aea, 0x2b2a, 0xffff, - 0xffff, 0x2b95, 0x2bd2, 0x2c13, 0xffff, 0x2c86, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2d67, 0x2da6, 0x2de0, 0xffff, 0xffff, - // Entry 40840 - 4087F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2e95, 0xffff, 0xffff, - 0x2ef3, 0xffff, 0x2f49, 0xffff, 0x2f9d, 0x2fe3, 0x3029, 0xffff, - 0x3085, 0x30ce, 0xffff, 0xffff, 0xffff, 0x3150, 0x319b, 0xffff, - 0xffff, 0x1236, 0x137c, 0x1603, 0x163d, 0xffff, 0xffff, 0x25db, - 0x2d05, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, - 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - // Entry 40880 - 408BF - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0001, 0x0002, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, - 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, - 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0003, 0x0004, 0x044c, 0x0940, 0x0012, 0x0017, 0x0000, - 0x0024, 0x0000, 0x003c, 0x0000, 0x0054, 0x007f, 0x0293, 0x02ab, - 0x02cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0312, 0x041c, 0x043e, - // Entry 408C0 - 408FF - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, 0x001f, - 0x0001, 0x0021, 0x0001, 0x000e, 0x0000, 0x0001, 0x0026, 0x0001, - 0x0028, 0x0003, 0x0000, 0x0000, 0x002c, 0x000e, 0x000e, 0xffff, - 0x0005, 0x000e, 0x0017, 0x0022, 0x002d, 0x2099, 0x20a4, 0x0052, - 0x0063, 0x0070, 0x007b, 0x0084, 0x20b5, 0x0001, 0x003e, 0x0001, - 0x0040, 0x0003, 0x0000, 0x0000, 0x0044, 0x000e, 0x000e, 0xffff, - 0x0098, 0x00a9, 0x00b6, 0x00c1, 0x00ce, 0x00d5, 0x00e4, 0x00f3, - 0x0100, 0x010d, 0x0116, 0x0121, 0x012e, 0x0008, 0x0000, 0x0000, - // Entry 40900 - 4093F - 0x0000, 0x0000, 0x0000, 0x005d, 0x0000, 0x006e, 0x0004, 0x006b, - 0x0065, 0x0062, 0x0068, 0x0001, 0x002e, 0x0015, 0x0001, 0x002e, - 0x0028, 0x0001, 0x005c, 0x0000, 0x0001, 0x000e, 0x013d, 0x0004, - 0x007c, 0x0076, 0x0073, 0x0079, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0088, 0x00ed, 0x0144, 0x0179, 0x024a, 0x0260, 0x0271, - 0x0282, 0x0002, 0x008b, 0x00bc, 0x0003, 0x008f, 0x009e, 0x00ad, - 0x000d, 0x0008, 0xffff, 0x0000, 0x4eb3, 0x4f75, 0x4f7c, 0x4f83, - // Entry 40940 - 4097F - 0x4ec8, 0x4ecf, 0x4f8a, 0x4edd, 0x4f91, 0x4eeb, 0x4ef2, 0x000d, - 0x000e, 0xffff, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01ea, 0x01e4, - 0x01e4, 0x01ed, 0x01f0, 0x01f3, 0x01f6, 0x01f9, 0x000d, 0x000e, - 0xffff, 0x014a, 0x0157, 0x20be, 0x20c7, 0x20d2, 0x20d9, 0x20e0, - 0x20e7, 0x01a0, 0x01b3, 0x01c2, 0x01d3, 0x0003, 0x00c0, 0x00cf, - 0x00de, 0x000d, 0x0008, 0xffff, 0x0000, 0x4eb3, 0x4f75, 0x4f7c, - 0x4f98, 0x4f9f, 0x4fa6, 0x4f8a, 0x4edd, 0x4f91, 0x4eeb, 0x4ef2, - 0x000d, 0x000e, 0xffff, 0x01e4, 0x01e7, 0x01ea, 0x01ed, 0x01ea, - // Entry 40980 - 409BF - 0x01e4, 0x01e4, 0x01ed, 0x01f0, 0x01f3, 0x01f6, 0x01f9, 0x000d, - 0x000e, 0xffff, 0x014a, 0x0157, 0x20be, 0x20c7, 0x20f4, 0x20fb, - 0x2102, 0x20e7, 0x01a0, 0x01b3, 0x01c2, 0x01d3, 0x0002, 0x00f0, - 0x011a, 0x0005, 0x00f6, 0x00ff, 0x0111, 0x0000, 0x0108, 0x0007, - 0x000e, 0x01fc, 0x0203, 0x020a, 0x2109, 0x0218, 0x021f, 0x0226, - 0x0007, 0x000e, 0x01f6, 0x0292, 0x0295, 0x01f0, 0x0298, 0x0292, - 0x01f0, 0x0007, 0x005c, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, - 0x0023, 0x0028, 0x0007, 0x000e, 0x022d, 0x023a, 0x024d, 0x2110, - // Entry 409C0 - 409FF - 0x0269, 0x027a, 0x0285, 0x0005, 0x0120, 0x0129, 0x013b, 0x0000, - 0x0132, 0x0007, 0x000e, 0x01fc, 0x0203, 0x020a, 0x2109, 0x0218, - 0x021f, 0x0226, 0x0007, 0x000e, 0x01f6, 0x0292, 0x0295, 0x01f0, - 0x0298, 0x0292, 0x01f0, 0x0007, 0x005c, 0x000a, 0x000f, 0x0014, - 0x0019, 0x001e, 0x0023, 0x0028, 0x0007, 0x000e, 0x022d, 0x023a, - 0x024d, 0x2110, 0x0269, 0x027a, 0x0285, 0x0002, 0x0147, 0x0160, - 0x0003, 0x014b, 0x0152, 0x0159, 0x0005, 0x000e, 0xffff, 0x029b, - 0x029f, 0x02a3, 0x02a7, 0x0005, 0x000d, 0xffff, 0x0130, 0x0133, - // Entry 40A00 - 40A3F - 0x0136, 0x0139, 0x0005, 0x005c, 0xffff, 0x002d, 0x0045, 0x005f, - 0x0079, 0x0003, 0x0164, 0x016b, 0x0172, 0x0005, 0x000e, 0xffff, - 0x029b, 0x029f, 0x02a3, 0x02a7, 0x0005, 0x000d, 0xffff, 0x0130, - 0x0133, 0x0136, 0x0139, 0x0005, 0x005c, 0xffff, 0x002d, 0x0045, - 0x005f, 0x0079, 0x0002, 0x017c, 0x01e3, 0x0003, 0x0180, 0x01a1, - 0x01c2, 0x0008, 0x018c, 0x0192, 0x0189, 0x0195, 0x0198, 0x019b, - 0x019e, 0x018f, 0x0001, 0x005c, 0x0097, 0x0001, 0x000e, 0x032d, - 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, - // Entry 40A40 - 40A7F - 0x00bd, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x00ca, 0x0001, - 0x005c, 0x00d5, 0x0008, 0x01ad, 0x01b3, 0x01aa, 0x01b6, 0x01b9, - 0x01bc, 0x01bf, 0x01b0, 0x0001, 0x005c, 0x00de, 0x0001, 0x0000, - 0x1f9c, 0x0001, 0x005c, 0x00ec, 0x0001, 0x0000, 0x21ec, 0x0001, - 0x005c, 0x00fa, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x00ca, - 0x0001, 0x005c, 0x00d5, 0x0008, 0x01ce, 0x01d4, 0x01cb, 0x01d7, - 0x01da, 0x01dd, 0x01e0, 0x01d1, 0x0001, 0x005c, 0x0097, 0x0001, - 0x000e, 0x032d, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, - // Entry 40A80 - 40ABF - 0x0001, 0x005c, 0x00bd, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, - 0x00ca, 0x0001, 0x005c, 0x00d5, 0x0003, 0x01e7, 0x0208, 0x0229, - 0x0008, 0x01f3, 0x01f9, 0x01f0, 0x01fc, 0x01ff, 0x0202, 0x0205, - 0x01f6, 0x0001, 0x005c, 0x0097, 0x0001, 0x000e, 0x032d, 0x0001, - 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x0107, - 0x0001, 0x000e, 0x033f, 0x0001, 0x005c, 0x0112, 0x0001, 0x005c, - 0x011b, 0x0008, 0x0214, 0x021a, 0x0211, 0x021d, 0x0220, 0x0223, - 0x0226, 0x0217, 0x0001, 0x005c, 0x0097, 0x0001, 0x000e, 0x032d, - // Entry 40AC0 - 40AFF - 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, - 0x00bd, 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x00ca, 0x0001, - 0x005c, 0x00d5, 0x0008, 0x0235, 0x023b, 0x0232, 0x023e, 0x0241, - 0x0244, 0x0247, 0x0238, 0x0001, 0x005c, 0x0097, 0x0001, 0x000e, - 0x032d, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x00ad, 0x0001, - 0x005c, 0x0107, 0x0001, 0x000e, 0x033f, 0x0001, 0x005c, 0x0112, - 0x0001, 0x005c, 0x011b, 0x0003, 0x0254, 0x025a, 0x024e, 0x0001, - 0x0250, 0x0002, 0x005c, 0x0122, 0x0139, 0x0001, 0x0256, 0x0002, - // Entry 40B00 - 40B3F - 0x000e, 0x0375, 0x0381, 0x0001, 0x025c, 0x0002, 0x000e, 0x0389, - 0x211b, 0x0004, 0x026e, 0x0268, 0x0265, 0x026b, 0x0001, 0x000e, - 0x039a, 0x0001, 0x000e, 0x03ac, 0x0001, 0x000e, 0x03b8, 0x0001, - 0x000d, 0x0216, 0x0004, 0x027f, 0x0279, 0x0276, 0x027c, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x0290, 0x028a, 0x0287, 0x028d, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0295, 0x0001, 0x0297, - // Entry 40B40 - 40B7F - 0x0003, 0x0000, 0x0000, 0x029b, 0x000e, 0x000e, 0x2166, 0x03c1, - 0x2122, 0x212f, 0x213c, 0x2147, 0x2152, 0x215d, 0x2172, 0x0427, - 0x217d, 0x043b, 0x2188, 0x044b, 0x0005, 0x02b1, 0x0000, 0x0000, - 0x0000, 0x02c6, 0x0001, 0x02b3, 0x0003, 0x0000, 0x0000, 0x02b7, - 0x000d, 0x000e, 0xffff, 0x0454, 0x0461, 0x0470, 0x047f, 0x218d, - 0x0499, 0x04a4, 0x219c, 0x04c0, 0x21ab, 0x04dc, 0x04e5, 0x0001, - 0x02c8, 0x0001, 0x02ca, 0x0001, 0x000e, 0x04f4, 0x0005, 0x02d3, - 0x0000, 0x0000, 0x0000, 0x030b, 0x0002, 0x02d6, 0x02f8, 0x0003, - // Entry 40B80 - 40BBF - 0x02da, 0x0000, 0x02e9, 0x000d, 0x000e, 0xffff, 0x04fd, 0x0505, - 0x050d, 0x0517, 0x0521, 0x052b, 0x0535, 0x053d, 0x0543, 0x054b, - 0x0551, 0x055c, 0x000d, 0x000e, 0xffff, 0x0567, 0x21b6, 0x0581, - 0x058e, 0x059c, 0x05ab, 0x05bb, 0x05c6, 0x21c1, 0x05e2, 0x05ed, - 0x0601, 0x0003, 0x0000, 0x0000, 0x02fc, 0x000d, 0x000e, 0xffff, - 0x0613, 0x0622, 0x062d, 0x0638, 0x0643, 0x0652, 0x0661, 0x05c6, - 0x066c, 0x067b, 0x0686, 0x0696, 0x0001, 0x030d, 0x0001, 0x030f, - 0x0001, 0x000e, 0x06a6, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40BC0 - 40BFF - 0x0319, 0x040b, 0x0001, 0x031b, 0x0001, 0x031d, 0x00ec, 0x000e, - 0x06ab, 0x06c2, 0x06db, 0x06f4, 0x0709, 0x0720, 0x0737, 0x074c, - 0x0763, 0x0778, 0x078f, 0x07a8, 0x07ca, 0x07ea, 0x080a, 0x082a, - 0x084a, 0x085f, 0x0873, 0x088e, 0x08a5, 0x08bc, 0x08d3, 0x08e8, - 0x08fd, 0x0912, 0x0929, 0x0940, 0x0957, 0x0970, 0x0985, 0x099e, - 0x09b5, 0x09ca, 0x09df, 0x09f6, 0x0a0f, 0x0a2c, 0x0a47, 0x0a5a, - 0x0a6f, 0x0a82, 0x0a9d, 0x0ab3, 0x0aca, 0x0ae3, 0x0afa, 0x0b0f, - 0x0b23, 0x0b38, 0x0b53, 0x0b6c, 0x0b82, 0x0b9b, 0x0bb2, 0x0bcb, - // Entry 40C00 - 40C3F - 0x0be2, 0x0bf9, 0x0c12, 0x0c2f, 0x0c48, 0x0c65, 0x0c7c, 0x0c95, - 0x0cae, 0x0ccb, 0x0ce4, 0x0cfb, 0x0d18, 0x0d2f, 0x0d48, 0x0d61, - 0x0d78, 0x0d8f, 0x0daa, 0x0dc1, 0x0dd8, 0x0def, 0x0e08, 0x0e20, - 0x0e39, 0x0e51, 0x0e68, 0x0e81, 0x0e9a, 0x0eb3, 0x0ecc, 0x0ee3, - 0x0efa, 0x0f11, 0x0f28, 0x0f41, 0x0f5c, 0x0f75, 0x0f8e, 0x0fa7, - 0x0fc4, 0x0fd9, 0x0ff2, 0x100b, 0x1023, 0x1038, 0x104f, 0x1068, - 0x107f, 0x1096, 0x10ad, 0x10cc, 0x10e5, 0x1100, 0x1117, 0x1130, - 0x114b, 0x1163, 0x117c, 0x119b, 0x11b4, 0x11cd, 0x11e0, 0x11f9, - // Entry 40C40 - 40C7F - 0x1214, 0x122d, 0x1246, 0x125d, 0x127a, 0x1299, 0x12b2, 0x12d1, - 0x12e5, 0x12fc, 0x1317, 0x132e, 0x1347, 0x1360, 0x1377, 0x1390, - 0x13a6, 0x13bd, 0x13d5, 0x13ee, 0x1405, 0x1418, 0x1431, 0x1448, - 0x1463, 0x147c, 0x1497, 0x14b0, 0x14c5, 0x14dc, 0x14f5, 0x150c, - 0x1527, 0x153e, 0x1559, 0x1576, 0x158f, 0x15a6, 0x15bf, 0x15da, - 0x15f3, 0x1610, 0x1627, 0x163e, 0x165b, 0x1672, 0x168b, 0x16a8, - 0x16c1, 0x16d4, 0x16f1, 0x1706, 0x171d, 0x1736, 0x1753, 0x176b, - 0x1786, 0x17a3, 0x17ba, 0x17d5, 0x17ee, 0x1807, 0x181e, 0x1839, - // Entry 40C80 - 40CBF - 0x1852, 0x186d, 0x1884, 0x189d, 0x18b4, 0x18cd, 0x18ea, 0x1905, - 0x191c, 0x1937, 0x1950, 0x1969, 0x1986, 0x199f, 0x19b8, 0x19d0, - 0x19e7, 0x1a00, 0x1a13, 0x1a32, 0x1a49, 0x1a64, 0x1a7b, 0x1a94, - 0x1aad, 0x1aca, 0x1ae1, 0x1afc, 0x1b15, 0x1b30, 0x1b49, 0x1b62, - 0x1b7a, 0x1b97, 0x1bb0, 0x1bc6, 0x1be1, 0x1bfc, 0x1c15, 0x1c2e, - 0x1c49, 0x1c62, 0x1c79, 0x1c90, 0x1ca9, 0x1cc1, 0x1cdc, 0x1cf5, - 0x1d0e, 0x1d19, 0x1d24, 0x1d2d, 0x0004, 0x0419, 0x0413, 0x0410, - 0x0416, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, 0x0001, - // Entry 40CC0 - 40CFF - 0x000c, 0x001e, 0x0001, 0x000e, 0x1d3a, 0x0005, 0x0422, 0x0000, - 0x0000, 0x0000, 0x0437, 0x0001, 0x0424, 0x0003, 0x0000, 0x0000, - 0x0428, 0x000d, 0x000e, 0xffff, 0x1d43, 0x21d0, 0x1d6b, 0x21e5, - 0x21ec, 0x1d8c, 0x21f9, 0x2202, 0x1daf, 0x1db8, 0x220b, 0x1dcc, - 0x0001, 0x0439, 0x0001, 0x043b, 0x0001, 0x000e, 0x1dd9, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0444, 0x0001, 0x0446, 0x0001, - 0x0448, 0x0002, 0x000e, 0x1dde, 0x1dea, 0x0040, 0x048d, 0x0000, - 0x0000, 0x0492, 0x04af, 0x04c7, 0x04df, 0x04fc, 0x0519, 0x0536, - // Entry 40D00 - 40D3F - 0x0553, 0x056b, 0x0583, 0x05a4, 0x05c0, 0x0000, 0x0000, 0x0000, - 0x05dc, 0x05fb, 0x0613, 0x0000, 0x0000, 0x0000, 0x062b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0630, 0x064a, 0x0664, 0x067e, - 0x0698, 0x06b2, 0x06cc, 0x06e6, 0x0700, 0x071a, 0x0734, 0x074e, - 0x0768, 0x0782, 0x079c, 0x07b6, 0x07d0, 0x07ea, 0x0804, 0x081e, - 0x0838, 0x0000, 0x0852, 0x0000, 0x0857, 0x0873, 0x088b, 0x08a3, - 0x08bf, 0x08d7, 0x08ef, 0x090b, 0x0923, 0x093b, 0x0001, 0x048f, - 0x0001, 0x0009, 0x0877, 0x0003, 0x0496, 0x0499, 0x049e, 0x0001, - // Entry 40D40 - 40D7F - 0x0009, 0x087e, 0x0003, 0x005c, 0x0149, 0x0163, 0x0177, 0x0002, - 0x04a1, 0x04a8, 0x0005, 0x000e, 0x1e65, 0x1e39, 0xffff, 0xffff, - 0x1e4f, 0x0005, 0x000e, 0x1eab, 0x1e93, 0xffff, 0xffff, 0x1e93, - 0x0003, 0x04b3, 0x0000, 0x04b6, 0x0001, 0x0045, 0x0dcd, 0x0002, - 0x04b9, 0x04c0, 0x0005, 0x005c, 0x0193, 0x0193, 0xffff, 0xffff, - 0x0193, 0x0005, 0x005c, 0x01a4, 0x01a4, 0xffff, 0xffff, 0x01a4, - 0x0003, 0x04cb, 0x0000, 0x04ce, 0x0001, 0x0008, 0x0b17, 0x0002, - 0x04d1, 0x04d8, 0x0005, 0x005c, 0x01b7, 0x01b7, 0xffff, 0xffff, - // Entry 40D80 - 40DBF - 0x01b7, 0x0005, 0x005c, 0x01c4, 0x01c4, 0xffff, 0xffff, 0x01c4, - 0x0003, 0x04e3, 0x04e6, 0x04eb, 0x0001, 0x0008, 0x0b3d, 0x0003, - 0x005c, 0x01d3, 0x01f3, 0x020d, 0x0002, 0x04ee, 0x04f5, 0x0005, - 0x005c, 0x0247, 0x022f, 0xffff, 0xffff, 0x0247, 0x0005, 0x005c, - 0x0261, 0x0261, 0xffff, 0xffff, 0x0261, 0x0003, 0x0500, 0x0503, - 0x0508, 0x0001, 0x0008, 0x0ca5, 0x0003, 0x005c, 0x01d3, 0x01f3, - 0x020d, 0x0002, 0x050b, 0x0512, 0x0005, 0x005c, 0x027d, 0x027d, - 0xffff, 0xffff, 0x027d, 0x0005, 0x005c, 0x028c, 0x028c, 0xffff, - // Entry 40DC0 - 40DFF - 0xffff, 0x028c, 0x0003, 0x051d, 0x0520, 0x0525, 0x0001, 0x0008, - 0x0ca5, 0x0003, 0x005c, 0x01d3, 0x01f3, 0x020d, 0x0002, 0x0528, - 0x052f, 0x0005, 0x005c, 0x027d, 0x027d, 0xffff, 0xffff, 0x027d, - 0x0005, 0x005c, 0x028c, 0x028c, 0xffff, 0xffff, 0x028c, 0x0003, - 0x053a, 0x053d, 0x0542, 0x0001, 0x0009, 0x0b35, 0x0003, 0x005c, - 0x029d, 0x02b9, 0x02cf, 0x0002, 0x0545, 0x054c, 0x0005, 0x000e, - 0x1f3d, 0x1f13, 0xffff, 0xffff, 0x1f27, 0x0005, 0x000e, 0x1f81, - 0x1f69, 0xffff, 0xffff, 0x1f69, 0x0003, 0x0557, 0x0000, 0x055a, - // Entry 40E00 - 40E3F - 0x0001, 0x0008, 0x0e09, 0x0002, 0x055d, 0x0564, 0x0005, 0x005c, - 0x02ed, 0x02ed, 0xffff, 0xffff, 0x02ed, 0x0005, 0x005c, 0x02fe, - 0x02fe, 0xffff, 0xffff, 0x02fe, 0x0003, 0x056f, 0x0000, 0x0572, - 0x0001, 0x003f, 0x002e, 0x0002, 0x0575, 0x057c, 0x0005, 0x005c, - 0x0311, 0x0311, 0xffff, 0xffff, 0x0311, 0x0005, 0x005c, 0x031e, - 0x031e, 0xffff, 0xffff, 0x031e, 0x0004, 0x0588, 0x058b, 0x0590, - 0x05a1, 0x0001, 0x000e, 0x022d, 0x0003, 0x005c, 0x032d, 0x0347, - 0x035b, 0x0002, 0x0593, 0x059a, 0x0005, 0x000e, 0x200f, 0x1fe3, - // Entry 40E40 - 40E7F - 0xffff, 0xffff, 0x1ff9, 0x0005, 0x000f, 0x0030, 0x0018, 0xffff, - 0xffff, 0x0018, 0x0001, 0x005c, 0x0377, 0x0004, 0x05a9, 0x0000, - 0x05ac, 0x05bd, 0x0001, 0x0045, 0x0ac1, 0x0002, 0x05af, 0x05b6, - 0x0005, 0x005c, 0x039f, 0x039f, 0xffff, 0xffff, 0x039f, 0x0005, - 0x005c, 0x03b0, 0x03b0, 0xffff, 0xffff, 0x03b0, 0x0001, 0x005c, - 0x0377, 0x0004, 0x05c5, 0x0000, 0x05c8, 0x05d9, 0x0001, 0x005c, - 0x03c3, 0x0002, 0x05cb, 0x05d2, 0x0005, 0x005c, 0x03c7, 0x03c7, - 0xffff, 0xffff, 0x03c7, 0x0005, 0x005c, 0x03d4, 0x03d4, 0xffff, - // Entry 40E80 - 40EBF - 0xffff, 0x03d4, 0x0001, 0x005c, 0x0377, 0x0003, 0x05e0, 0x05e3, - 0x05ea, 0x0001, 0x000f, 0x0048, 0x0005, 0x000f, 0x0060, 0x0069, - 0x0074, 0x004f, 0x007f, 0x0002, 0x05ed, 0x05f4, 0x0005, 0x000f, - 0x00a4, 0x0094, 0xffff, 0xffff, 0x00a4, 0x0005, 0x000f, 0x00c8, - 0x00c8, 0xffff, 0xffff, 0x00c8, 0x0003, 0x05ff, 0x0000, 0x0602, - 0x0001, 0x0008, 0x10aa, 0x0002, 0x0605, 0x060c, 0x0005, 0x005c, - 0x03e3, 0x03e3, 0xffff, 0xffff, 0x03e3, 0x0005, 0x005c, 0x03f0, - 0x03f0, 0xffff, 0xffff, 0x03f0, 0x0003, 0x0617, 0x0000, 0x061a, - // Entry 40EC0 - 40EFF - 0x0001, 0x0008, 0x10aa, 0x0002, 0x061d, 0x0624, 0x0005, 0x005c, - 0x03e3, 0x03e3, 0xffff, 0xffff, 0x03e3, 0x0005, 0x005c, 0x03f0, - 0x03f0, 0xffff, 0xffff, 0x03f0, 0x0001, 0x062d, 0x0001, 0x000f, - 0x00dc, 0x0003, 0x0000, 0x0634, 0x0639, 0x0003, 0x005c, 0x032d, - 0x03ff, 0x035b, 0x0002, 0x063c, 0x0643, 0x0005, 0x000e, 0x200f, - 0x1fe3, 0xffff, 0xffff, 0x1ff9, 0x0005, 0x000f, 0x0030, 0x0018, - 0xffff, 0xffff, 0x0018, 0x0003, 0x0000, 0x064e, 0x0653, 0x0003, - 0x005c, 0x040f, 0x0423, 0x042d, 0x0002, 0x0656, 0x065d, 0x0005, - // Entry 40F00 - 40F3F - 0x000e, 0x200f, 0x1fe3, 0xffff, 0xffff, 0x1ff9, 0x0005, 0x000f, - 0x0030, 0x0018, 0xffff, 0xffff, 0x0018, 0x0003, 0x0000, 0x0668, - 0x066d, 0x0003, 0x005c, 0x040f, 0x0423, 0x042d, 0x0002, 0x0670, - 0x0677, 0x0005, 0x000e, 0x200f, 0x1fe3, 0xffff, 0xffff, 0x1ff9, - 0x0005, 0x000f, 0x0030, 0x0018, 0xffff, 0xffff, 0x0018, 0x0003, - 0x0000, 0x0682, 0x0687, 0x0003, 0x005c, 0x0443, 0x0465, 0x047b, - 0x0002, 0x068a, 0x0691, 0x0005, 0x005c, 0x04d7, 0x049f, 0xffff, - 0xffff, 0x04bb, 0x0005, 0x005c, 0x0513, 0x04f5, 0xffff, 0xffff, - // Entry 40F40 - 40F7F - 0x04f5, 0x0003, 0x0000, 0x069c, 0x06a1, 0x0003, 0x005c, 0x0533, - 0x0549, 0x0553, 0x0002, 0x06a4, 0x06ab, 0x0005, 0x005c, 0x04d7, - 0x049f, 0xffff, 0xffff, 0x04bb, 0x0005, 0x005c, 0x0513, 0x04f5, - 0xffff, 0xffff, 0x04f5, 0x0003, 0x0000, 0x06b6, 0x06bb, 0x0003, - 0x005c, 0x0533, 0x0549, 0x0553, 0x0002, 0x06be, 0x06c5, 0x0005, - 0x005c, 0x04d7, 0x049f, 0xffff, 0xffff, 0x056b, 0x0005, 0x005c, - 0x0513, 0x04f5, 0xffff, 0xffff, 0x04f5, 0x0003, 0x0000, 0x06d0, - 0x06d5, 0x0003, 0x005c, 0x0586, 0x05a2, 0x05b2, 0x0002, 0x06d8, - // Entry 40F80 - 40FBF - 0x06df, 0x0005, 0x005c, 0x05fc, 0x05d0, 0xffff, 0xffff, 0x05e6, - 0x0005, 0x005c, 0x062c, 0x0614, 0xffff, 0xffff, 0x0614, 0x0003, - 0x0000, 0x06ea, 0x06ef, 0x0003, 0x005c, 0x0646, 0x065c, 0x0666, - 0x0002, 0x06f2, 0x06f9, 0x0005, 0x005c, 0x05fc, 0x05d0, 0xffff, - 0xffff, 0x05e6, 0x0005, 0x005c, 0x062c, 0x0614, 0xffff, 0xffff, - 0x0614, 0x0003, 0x0000, 0x0704, 0x0709, 0x0003, 0x005c, 0x0646, - 0x065c, 0x0666, 0x0002, 0x070c, 0x0713, 0x0005, 0x005c, 0x05fc, - 0x05d0, 0xffff, 0xffff, 0x05e6, 0x0005, 0x005c, 0x062c, 0x0614, - // Entry 40FC0 - 40FFF - 0xffff, 0xffff, 0x0614, 0x0003, 0x0000, 0x071e, 0x0723, 0x0003, - 0x005c, 0x067e, 0x0696, 0x06a4, 0x0002, 0x0726, 0x072d, 0x0005, - 0x005c, 0x06e6, 0x06be, 0xffff, 0xffff, 0x06d2, 0x0005, 0x005c, - 0x0710, 0x06fa, 0xffff, 0xffff, 0x06fa, 0x0003, 0x0000, 0x0738, - 0x073d, 0x0003, 0x005c, 0x0726, 0x073a, 0x0744, 0x0002, 0x0740, - 0x0747, 0x0005, 0x005c, 0x06e6, 0x06be, 0xffff, 0xffff, 0x06d2, - 0x0005, 0x005c, 0x0710, 0x06fa, 0xffff, 0xffff, 0x06fa, 0x0003, - 0x0000, 0x0752, 0x0757, 0x0003, 0x005c, 0x0726, 0x073a, 0x0744, - // Entry 41000 - 4103F - 0x0002, 0x075a, 0x0761, 0x0005, 0x005c, 0x06e6, 0x06be, 0xffff, - 0xffff, 0x06d2, 0x0005, 0x005c, 0x0710, 0x06fa, 0xffff, 0xffff, - 0x06fa, 0x0003, 0x0000, 0x076c, 0x0771, 0x0003, 0x005c, 0x075a, - 0x077a, 0x078e, 0x0002, 0x0774, 0x077b, 0x0005, 0x005c, 0x07e4, - 0x07b0, 0xffff, 0xffff, 0x07ca, 0x0005, 0x005c, 0x081c, 0x0800, - 0xffff, 0xffff, 0x0800, 0x0003, 0x0000, 0x0786, 0x078b, 0x0003, - 0x005c, 0x083a, 0x0850, 0x085a, 0x0002, 0x078e, 0x0795, 0x0005, - 0x005c, 0x07e4, 0x07b0, 0xffff, 0xffff, 0x07ca, 0x0005, 0x005c, - // Entry 41040 - 4107F - 0x081c, 0x0800, 0xffff, 0xffff, 0x0800, 0x0003, 0x0000, 0x07a0, - 0x07a5, 0x0003, 0x005c, 0x083a, 0x0850, 0x085a, 0x0002, 0x07a8, - 0x07af, 0x0005, 0x005c, 0x07e4, 0x07b0, 0xffff, 0xffff, 0x07ca, - 0x0005, 0x005c, 0x081c, 0x0800, 0xffff, 0xffff, 0x0800, 0x0003, - 0x0000, 0x07ba, 0x07bf, 0x0003, 0x005c, 0x0872, 0x088c, 0x089a, - 0x0002, 0x07c2, 0x07c9, 0x0005, 0x005c, 0x08de, 0x08b6, 0xffff, - 0xffff, 0x08ca, 0x0005, 0x005c, 0x090a, 0x08f4, 0xffff, 0xffff, - 0x08f4, 0x0003, 0x0000, 0x07d4, 0x07d9, 0x0003, 0x005c, 0x0922, - // Entry 41080 - 410BF - 0x0938, 0x0942, 0x0002, 0x07dc, 0x07e3, 0x0005, 0x005c, 0x08de, - 0x08b6, 0xffff, 0xffff, 0x08ca, 0x0005, 0x005c, 0x090a, 0x08f4, - 0xffff, 0xffff, 0x08f4, 0x0003, 0x0000, 0x07ee, 0x07f3, 0x0003, - 0x005c, 0x0922, 0x0938, 0x0942, 0x0002, 0x07f6, 0x07fd, 0x0005, - 0x005c, 0x08de, 0x08b6, 0xffff, 0xffff, 0x08ca, 0x0005, 0x005c, - 0x090a, 0x08f4, 0xffff, 0xffff, 0x08f4, 0x0003, 0x0000, 0x0808, - 0x080d, 0x0003, 0x005c, 0x095a, 0x0974, 0x0984, 0x0002, 0x0810, - 0x0817, 0x0005, 0x005c, 0x09cc, 0x09a0, 0xffff, 0xffff, 0x09b6, - // Entry 410C0 - 410FF - 0x0005, 0x005c, 0x09fa, 0x09e2, 0xffff, 0xffff, 0x09e2, 0x0003, - 0x0000, 0x0822, 0x0827, 0x0003, 0x005c, 0x0a12, 0x0a26, 0x0a30, - 0x0002, 0x082a, 0x0831, 0x0005, 0x005c, 0x09cc, 0x09a0, 0xffff, - 0xffff, 0x09b6, 0x0005, 0x005c, 0x09fa, 0x09e2, 0xffff, 0xffff, - 0x09e2, 0x0003, 0x0000, 0x083c, 0x0841, 0x0003, 0x005c, 0x0a12, - 0x0a26, 0x0a30, 0x0002, 0x0844, 0x084b, 0x0005, 0x005c, 0x09cc, - 0x09a0, 0xffff, 0xffff, 0x09b6, 0x0005, 0x005c, 0x09fa, 0x09e2, - 0xffff, 0xffff, 0x09e2, 0x0001, 0x0854, 0x0001, 0x005c, 0x0a46, - // Entry 41100 - 4113F - 0x0003, 0x085b, 0x085e, 0x0862, 0x0001, 0x005c, 0x0a68, 0x0002, - 0x005c, 0xffff, 0x0a6f, 0x0002, 0x0865, 0x086c, 0x0005, 0x000f, - 0x0136, 0x0114, 0xffff, 0xffff, 0x0124, 0x0005, 0x000f, 0x016e, - 0x015a, 0xffff, 0xffff, 0x015a, 0x0003, 0x0877, 0x0000, 0x087a, - 0x0001, 0x0055, 0x13d2, 0x0002, 0x087d, 0x0884, 0x0005, 0x005c, - 0x0a81, 0x0a81, 0xffff, 0xffff, 0x0a81, 0x0005, 0x005c, 0x0a8e, - 0x0a8e, 0xffff, 0xffff, 0x0a8e, 0x0003, 0x088f, 0x0000, 0x0892, - 0x0001, 0x0055, 0x13d2, 0x0002, 0x0895, 0x089c, 0x0005, 0x005c, - // Entry 41140 - 4117F - 0x0a81, 0x0a81, 0xffff, 0xffff, 0x0a81, 0x0005, 0x005c, 0x0a8e, - 0x0a8e, 0xffff, 0xffff, 0x0a8e, 0x0003, 0x08a7, 0x08aa, 0x08ae, - 0x0001, 0x000f, 0x0182, 0x0002, 0x005c, 0xffff, 0x0a9d, 0x0002, - 0x08b1, 0x08b8, 0x0005, 0x000f, 0x01a1, 0x018d, 0xffff, 0xffff, - 0x01a1, 0x0005, 0x000f, 0x01cd, 0x01cd, 0xffff, 0xffff, 0x01cd, - 0x0003, 0x08c3, 0x0000, 0x08c6, 0x0001, 0x0011, 0x0ce0, 0x0002, - 0x08c9, 0x08d0, 0x0005, 0x005c, 0x0ab3, 0x0ab3, 0xffff, 0xffff, - 0x0ab3, 0x0005, 0x005c, 0x0ac4, 0x0ac4, 0xffff, 0xffff, 0x0ac4, - // Entry 41180 - 411BF - 0x0003, 0x08db, 0x0000, 0x08de, 0x0001, 0x0011, 0x0ce0, 0x0002, - 0x08e1, 0x08e8, 0x0005, 0x005c, 0x0ab3, 0x0ab3, 0xffff, 0xffff, - 0x0ab3, 0x0005, 0x005c, 0x0ac4, 0x0ac4, 0xffff, 0xffff, 0x0ac4, - 0x0003, 0x08f3, 0x08f6, 0x08fa, 0x0001, 0x000f, 0x01e5, 0x0002, - 0x005c, 0xffff, 0x0ad7, 0x0002, 0x08fd, 0x0904, 0x0005, 0x005c, - 0x0b10, 0x0ae0, 0xffff, 0xffff, 0x0af8, 0x0005, 0x000f, 0x026a, - 0x0250, 0xffff, 0xffff, 0x0250, 0x0003, 0x090f, 0x0000, 0x0912, - 0x0001, 0x0011, 0x0d52, 0x0002, 0x0915, 0x091c, 0x0005, 0x005c, - // Entry 411C0 - 411FF - 0x0b28, 0x0b28, 0xffff, 0xffff, 0x0b28, 0x0005, 0x005c, 0x0b39, - 0x0b39, 0xffff, 0xffff, 0x0b39, 0x0003, 0x0927, 0x0000, 0x092a, - 0x0001, 0x005c, 0x0b4c, 0x0002, 0x092d, 0x0934, 0x0005, 0x005c, - 0x0b50, 0x0b50, 0xffff, 0xffff, 0x0b50, 0x0005, 0x005c, 0x0b5d, - 0x0b5d, 0xffff, 0xffff, 0x0b5d, 0x0001, 0x093d, 0x0001, 0x0045, - 0x176e, 0x0004, 0x0945, 0x094a, 0x094f, 0x095e, 0x0003, 0x0000, - 0x1dc7, 0x3acc, 0x3ad3, 0x0003, 0x0000, 0x1de0, 0x3ad7, 0x3af2, - 0x0002, 0x0000, 0x0952, 0x0003, 0x0000, 0x0959, 0x0956, 0x0001, - // Entry 41200 - 4123F - 0x005c, 0x0b6c, 0x0003, 0x005c, 0xffff, 0x0ba7, 0x0be5, 0x0002, - 0x0b45, 0x0961, 0x0003, 0x0965, 0x0aa5, 0x0a05, 0x009e, 0x000f, - 0xffff, 0xffff, 0xffff, 0xffff, 0x03bd, 0x611b, 0x0552, 0x618f, - 0x6266, 0x6331, 0x6408, 0x07ff, 0x64df, 0x0982, 0x0a11, 0x0aa0, - 0x6556, 0x4034, 0x0c6c, 0x0d46, 0x0e4d, 0x0f1b, 0x0fe9, 0x107e, - 0x10f5, 0xffff, 0xffff, 0x11b6, 0xffff, 0x6623, 0xffff, 0x1323, - 0x139a, 0x140b, 0x1482, 0xffff, 0xffff, 0x156a, 0x15f9, 0x16a6, - 0xffff, 0xffff, 0xffff, 0x177a, 0xffff, 0x183e, 0x18eb, 0xffff, - // Entry 41240 - 4127F - 0x199e, 0x1a51, 0x1b13, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c2e, - 0xffff, 0xffff, 0x1cff, 0x1db5, 0xffff, 0xffff, 0x1ec4, 0x1f80, - 0x200f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2197, - 0x2208, 0x2285, 0x2314, 0x239d, 0xffff, 0xffff, 0x6827, 0xffff, - 0x2582, 0xffff, 0xffff, 0x267b, 0xffff, 0x2798, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2892, 0xffff, 0x6919, 0x69e2, 0x293d, 0x29cf, - 0xffff, 0xffff, 0xffff, 0x2a94, 0x2b44, 0x2bdc, 0xffff, 0xffff, - 0x2cb2, 0x2dad, 0x2e48, 0x2eb9, 0xffff, 0xffff, 0x2f86, 0x300f, - // Entry 41280 - 412BF - 0x3080, 0xffff, 0x312e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x32db, 0x335e, 0x33db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x6b14, 0xffff, 0xffff, 0x35ea, 0xffff, 0x3675, - 0xffff, 0x372e, 0x37b1, 0x3846, 0xffff, 0x38e7, 0x3982, 0xffff, - 0xffff, 0xffff, 0x3a7d, 0x3b00, 0xffff, 0xffff, 0x02ab, 0x04d5, - 0x087c, 0x08ff, 0xffff, 0xffff, 0x2701, 0x321a, 0x009e, 0x000f, - 0x60fb, 0x0342, 0x036f, 0x0398, 0x03e6, 0x6128, 0x056a, 0x61cc, - 0x629f, 0x636e, 0x6445, 0x0817, 0x64f5, 0x09a0, 0x0a2f, 0x0acd, - // Entry 412C0 - 412FF - 0x6574, 0x4052, 0x0ca3, 0x0d8c, 0x0e80, 0x0f4e, 0x1009, 0x1094, - 0x1113, 0x1184, 0x119a, 0x11d4, 0x1245, 0x6652, 0x130b, 0x1339, - 0x13ae, 0x141f, 0x14a0, 0x66e5, 0x1538, 0x1588, 0x161e, 0x16ba, - 0x1717, 0x172f, 0x1755, 0x17a1, 0x1824, 0x1866, 0x1915, 0x670c, - 0x19c8, 0x1a80, 0x1b27, 0x1b84, 0x1bb1, 0x1bf4, 0x672d, 0x1c48, - 0x1cb1, 0x6747, 0x1d2a, 0x1de0, 0x6773, 0x1eaa, 0x1ef1, 0x1f9d, - 0x2023, 0x2080, 0x20b1, 0x20de, 0x20fa, 0x2131, 0x2164, 0x21ab, - 0x2220, 0x22a3, 0x2330, 0x23d8, 0x2481, 0x24b4, 0x24ff, 0x256c, - // Entry 41300 - 4133F - 0x25a4, 0x6843, 0x6861, 0x2696, 0x68b8, 0x27b2, 0x2819, 0x2835, - 0x284f, 0x2867, 0x28b2, 0x2927, 0x6943, 0x6a02, 0x295c, 0x29e7, - 0x2a4c, 0x2a68, 0x2a7e, 0x2abd, 0x2b65, 0x2bfe, 0x2c77, 0x2c8b, - 0x2ce0, 0x2dcf, 0x2e5c, 0x2ed5, 0x2f42, 0x2f58, 0x2fa2, 0x3023, - 0x309c, 0x3109, 0x315b, 0x31e8, 0x6ada, 0x6af2, 0x32a9, 0x32c3, - 0x32f5, 0x3376, 0x33f1, 0x3452, 0x346c, 0x349d, 0x34ca, 0x34ef, - 0x3509, 0x351d, 0x6b2c, 0x35b0, 0x35d0, 0x3600, 0x6b7c, 0x3699, - 0x3716, 0x3748, 0x37d1, 0x3860, 0x38c9, 0x3909, 0x39a0, 0x3a11, - // Entry 41340 - 4137F - 0x3a29, 0x3a4a, 0x3a97, 0x3b26, 0x1e6b, 0x2d71, 0x02bf, 0x04ed, - 0x0896, 0x0919, 0xffff, 0x263d, 0x2717, 0x3238, 0x009e, 0x000f, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0424, 0x6156, 0x0597, 0x621e, - 0x62ed, 0x63c0, 0x6497, 0x0844, 0x6520, 0x09d3, 0x0a62, 0x0b0f, - 0x65a7, 0x65e5, 0x0cef, 0x0de7, 0x0ec8, 0x0f96, 0x103e, 0x10bf, - 0x1146, 0xffff, 0xffff, 0x1207, 0xffff, 0x6696, 0xffff, 0x1364, - 0x13d7, 0x144e, 0x14d3, 0xffff, 0xffff, 0x15bb, 0x1658, 0x16e3, - 0xffff, 0xffff, 0xffff, 0x17dd, 0xffff, 0x18a3, 0x1954, 0xffff, - // Entry 41380 - 413BF - 0x1a07, 0x1ac4, 0x1b50, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c77, - 0xffff, 0xffff, 0x1d6a, 0x1e20, 0xffff, 0xffff, 0x1f33, 0x678f, - 0x204c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x21d4, - 0x224d, 0x22d6, 0x2361, 0x67cc, 0xffff, 0xffff, 0x2530, 0xffff, - 0x25db, 0xffff, 0xffff, 0x26c6, 0xffff, 0x68df, 0xffff, 0xffff, - 0xffff, 0xffff, 0x28e7, 0xffff, 0x698d, 0x6a42, 0x2990, 0x2a14, - 0xffff, 0xffff, 0xffff, 0x2afb, 0x2b9b, 0x2c35, 0xffff, 0xffff, - 0x2d23, 0x2e06, 0x2e85, 0x2f06, 0xffff, 0xffff, 0x2fd3, 0x304c, - // Entry 413C0 - 413FF - 0x30cd, 0xffff, 0x6a8d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3324, 0x33a3, 0x341c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x6b59, 0xffff, 0xffff, 0x362b, 0xffff, 0x36d2, - 0xffff, 0x3777, 0x3806, 0x388f, 0xffff, 0x3940, 0x39d3, 0xffff, - 0xffff, 0xffff, 0x3ac6, 0x3b61, 0xffff, 0xffff, 0x02e8, 0x051a, - 0x08c5, 0x0948, 0xffff, 0xffff, 0x6882, 0x326b, 0x0003, 0x0b49, - 0x0bb8, 0x0b7c, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 41400 - 4143F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0x003a, 0x001c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 41440 - 4147F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x22b1, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 41480 - 414BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2287, 0x2290, 0xffff, 0x2299, 0x0001, 0x0002, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, 0x001d, 0x0042, 0x0000, 0x0071, 0x00dc, 0x0000, 0x0000, - 0x0000, 0x0002, 0x0020, 0x0031, 0x0001, 0x0022, 0x000d, 0x0045, - 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, 0x2b41, 0x2b48, 0x2b4f, - // Entry 414C0 - 414FF - 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, 0x0001, 0x0033, 0x000d, - 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, 0x2b41, 0x2b48, - 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, 0x0002, 0x0045, - 0x005b, 0x0003, 0x0049, 0x0000, 0x0052, 0x0007, 0x0045, 0x0ac1, - 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, 0x0007, 0x005c, - 0x0c10, 0x0c1f, 0x0c32, 0x0c3f, 0x0c4e, 0x0c5f, 0x0c6a, 0x0003, - 0x005f, 0x0000, 0x0068, 0x0007, 0x0045, 0x0ac1, 0x0ac9, 0x2b76, - 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, 0x0007, 0x005c, 0x0c10, 0x0c1f, - // Entry 41500 - 4153F - 0x0c32, 0x0c3f, 0x0c4e, 0x0c5f, 0x0c6a, 0x0002, 0x0074, 0x00bd, - 0x0003, 0x0078, 0x0099, 0x00b4, 0x0008, 0x0084, 0x008a, 0x0081, - 0x008d, 0x0090, 0x0093, 0x0096, 0x0087, 0x0001, 0x005c, 0x0097, - 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, - 0x00ad, 0x0001, 0x005c, 0x0107, 0x0001, 0x005c, 0x0c8d, 0x0001, - 0x005c, 0x0112, 0x0001, 0x005c, 0x00d5, 0x0008, 0x0000, 0x0000, - 0x00a2, 0x00a8, 0x00ab, 0x00ae, 0x00b1, 0x00a5, 0x0001, 0x005c, - 0x0097, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, 0x0107, 0x0001, - // Entry 41540 - 4157F - 0x005c, 0x0c8d, 0x0001, 0x005c, 0x0112, 0x0001, 0x005c, 0x011b, - 0x0002, 0x00b7, 0x00ba, 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, - 0x00ad, 0x0003, 0x00c1, 0x00ca, 0x00d3, 0x0002, 0x00c4, 0x00c7, - 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00ad, 0x0002, 0x00cd, - 0x00d0, 0x0001, 0x000e, 0x01ed, 0x0001, 0x0000, 0x21ec, 0x0002, - 0x00d6, 0x00d9, 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00ad, - 0x0003, 0x0000, 0x0000, 0x00e0, 0x0002, 0x00e3, 0x00e6, 0x0001, - 0x005c, 0x0c9a, 0x0002, 0x005c, 0xffff, 0x0139, 0x0001, 0x0002, - // Entry 41580 - 415BF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, - 0x0014, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0008, 0x001d, 0x0042, 0x0000, 0x0071, 0x00dc, - 0x0000, 0x0000, 0x0000, 0x0002, 0x0020, 0x0031, 0x0001, 0x0022, - 0x000d, 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, 0x2b41, - 0x2b48, 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, 0x0001, - 0x0033, 0x000d, 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, - 0x2b41, 0x2b48, 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, - // Entry 415C0 - 415FF - 0x0002, 0x0045, 0x005b, 0x0003, 0x0049, 0x0000, 0x0052, 0x0007, - 0x0045, 0x0ac1, 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, - 0x0007, 0x005c, 0x0c10, 0x0c1f, 0x0c32, 0x0c3f, 0x0c4e, 0x0c5f, - 0x0c6a, 0x0003, 0x005f, 0x0000, 0x0068, 0x0007, 0x0045, 0x0ac1, - 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, 0x0007, 0x005c, - 0x0c10, 0x0c1f, 0x0c32, 0x0c3f, 0x0c4e, 0x0c5f, 0x0c6a, 0x0002, - 0x0074, 0x00bd, 0x0003, 0x0078, 0x0099, 0x00b4, 0x0008, 0x0084, - 0x008a, 0x0081, 0x008d, 0x0090, 0x0093, 0x0096, 0x0087, 0x0001, - // Entry 41600 - 4163F - 0x005c, 0x0097, 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00a2, - 0x0001, 0x005c, 0x00ad, 0x0001, 0x005c, 0x0107, 0x0001, 0x005c, - 0x0c8d, 0x0001, 0x005c, 0x0112, 0x0001, 0x005c, 0x00d5, 0x0008, - 0x0000, 0x0000, 0x00a2, 0x00a8, 0x00ab, 0x00ae, 0x00b1, 0x00a5, - 0x0001, 0x005c, 0x0097, 0x0001, 0x005c, 0x00a2, 0x0001, 0x005c, - 0x0107, 0x0001, 0x005c, 0x0c8d, 0x0001, 0x005c, 0x0112, 0x0001, - 0x005c, 0x011b, 0x0002, 0x00b7, 0x00ba, 0x0001, 0x005c, 0x0c77, - 0x0001, 0x005c, 0x00ad, 0x0003, 0x00c1, 0x00ca, 0x00d3, 0x0002, - // Entry 41640 - 4167F - 0x00c4, 0x00c7, 0x0001, 0x005c, 0x0c77, 0x0001, 0x005c, 0x00ad, - 0x0002, 0x00cd, 0x00d0, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, - 0x21ec, 0x0002, 0x00d6, 0x00d9, 0x0001, 0x005c, 0x0c77, 0x0001, - 0x005c, 0x00ad, 0x0003, 0x0000, 0x0000, 0x00e0, 0x0001, 0x00e2, - 0x0001, 0x005c, 0x0c9a, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, - 0x0019, 0x003e, 0x0000, 0x0057, 0x0002, 0x001c, 0x002d, 0x0001, - // Entry 41680 - 416BF - 0x001e, 0x000d, 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, 0x2b39, - 0x2b41, 0x2b48, 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, 0x2b6e, - 0x0001, 0x002f, 0x000d, 0x0045, 0xffff, 0x09c7, 0x2b28, 0x2b30, - 0x2b39, 0x2b41, 0x2b48, 0x2b4f, 0x2b56, 0x0a06, 0x2b5e, 0x2b66, - 0x2b6e, 0x0002, 0x0041, 0x004c, 0x0001, 0x0043, 0x0007, 0x0045, - 0x0ac1, 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, 0x0ae7, 0x2b82, 0x0001, - 0x004e, 0x0007, 0x0045, 0x0ac1, 0x0ac9, 0x2b76, 0x2b7c, 0x0adf, - 0x0ae7, 0x2b82, 0x0002, 0x005a, 0x0093, 0x0002, 0x005d, 0x0078, - // Entry 416C0 - 416FF - 0x0008, 0x0000, 0x0000, 0x0066, 0x006c, 0x006f, 0x0072, 0x0075, - 0x0069, 0x0001, 0x005c, 0x0097, 0x0001, 0x005c, 0x00a2, 0x0001, - 0x005c, 0x0107, 0x0001, 0x005c, 0x0c8d, 0x0001, 0x005c, 0x00ca, - 0x0001, 0x005c, 0x00d5, 0x0008, 0x0000, 0x0000, 0x0081, 0x0087, - 0x008a, 0x008d, 0x0090, 0x0084, 0x0001, 0x005c, 0x0097, 0x0001, - 0x005c, 0x00a2, 0x0001, 0x005c, 0x0107, 0x0001, 0x005c, 0x0c8d, - 0x0001, 0x005c, 0x0112, 0x0001, 0x005c, 0x011b, 0x0002, 0x0000, - 0x0096, 0x0002, 0x0099, 0x009c, 0x0001, 0x0000, 0x1f9c, 0x0001, - // Entry 41700 - 4173F - 0x0000, 0x21ec, 0x0003, 0x0004, 0x044c, 0x0940, 0x0012, 0x0017, - 0x0000, 0x0024, 0x0000, 0x003c, 0x0000, 0x0054, 0x007f, 0x0293, - 0x02ab, 0x02cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0312, 0x041c, - 0x043e, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0001, - 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, 0x0001, 0x0026, - 0x0001, 0x0028, 0x0003, 0x0000, 0x0000, 0x002c, 0x000e, 0x005c, - 0xffff, 0x0cb5, 0x0cba, 0x0cbf, 0x0cc5, 0x0ccb, 0x0cd0, 0x0cd7, - 0x0ce0, 0x0ce9, 0x0cf1, 0x0cf7, 0x0cfc, 0x0d02, 0x0001, 0x003e, - // Entry 41740 - 4177F - 0x0001, 0x0040, 0x0003, 0x0000, 0x0000, 0x0044, 0x000e, 0x0000, - 0xffff, 0x042f, 0x0438, 0x3932, 0x3938, 0x044c, 0x3b17, 0x0458, - 0x0460, 0x393f, 0x046e, 0x3946, 0x3b1f, 0x0481, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x005d, 0x0000, 0x006e, 0x0004, - 0x006b, 0x0065, 0x0062, 0x0068, 0x0001, 0x002e, 0x0015, 0x0001, - 0x002e, 0x0028, 0x0001, 0x005c, 0x0000, 0x0001, 0x000e, 0x013d, - 0x0004, 0x007c, 0x0076, 0x0073, 0x0079, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry 41780 - 417BF - 0x03c6, 0x0008, 0x0088, 0x00ed, 0x0144, 0x0179, 0x024a, 0x0260, - 0x0271, 0x0282, 0x0002, 0x008b, 0x00bc, 0x0003, 0x008f, 0x009e, - 0x00ad, 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x3399, 0x32c0, - 0x3413, 0x3230, 0x3234, 0x0075, 0x32fb, 0x32ff, 0x3303, 0x0085, - 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, 0x3a8d, 0x1f9c, 0x3a8d, - 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x3a8f, 0x3a91, 0x000d, - 0x000d, 0xffff, 0x0089, 0x0090, 0x0098, 0x3366, 0x3413, 0x3230, - 0x3234, 0x00ad, 0x00b4, 0x00be, 0x00c6, 0x00cf, 0x0003, 0x00c0, - // Entry 417C0 - 417FF - 0x00cf, 0x00de, 0x000d, 0x000d, 0xffff, 0x0059, 0x32b8, 0x3399, - 0x32c0, 0x3413, 0x3230, 0x3234, 0x0075, 0x32fb, 0x32ff, 0x3303, - 0x0085, 0x000d, 0x0000, 0xffff, 0x214a, 0x2006, 0x3a8d, 0x1f9c, - 0x3a8d, 0x214a, 0x214a, 0x1f9c, 0x2002, 0x1f98, 0x3a8f, 0x3a91, - 0x000d, 0x000d, 0xffff, 0x0089, 0x0090, 0x0098, 0x3366, 0x3413, - 0x3230, 0x3234, 0x00ad, 0x00b4, 0x00be, 0x00c6, 0x00cf, 0x0002, - 0x00f0, 0x011a, 0x0005, 0x00f6, 0x00ff, 0x0111, 0x0000, 0x0108, - 0x0007, 0x000d, 0x00d8, 0x3417, 0x00e0, 0x341b, 0x00e8, 0x00ed, - // Entry 41800 - 4183F - 0x00f1, 0x0007, 0x0000, 0x3a8f, 0x21ec, 0x2010, 0x2002, 0x21ee, - 0x21ec, 0x2002, 0x0007, 0x0013, 0x0587, 0x058a, 0x311d, 0x3139, - 0x313c, 0x3140, 0x3143, 0x0007, 0x005a, 0x001d, 0x2a39, 0x2a44, - 0x0036, 0x2a4b, 0x2a55, 0x2a5b, 0x0005, 0x0120, 0x0129, 0x013b, - 0x0000, 0x0132, 0x0007, 0x000d, 0x00d8, 0x3417, 0x00e0, 0x341b, - 0x00e8, 0x00ed, 0x00f1, 0x0007, 0x0000, 0x3a8f, 0x21ec, 0x2010, - 0x2002, 0x21ee, 0x21ec, 0x2002, 0x0007, 0x0013, 0x0587, 0x058a, - 0x311d, 0x3139, 0x313c, 0x3140, 0x3143, 0x0007, 0x005a, 0x001d, - // Entry 41840 - 4187F - 0x2a39, 0x2a44, 0x0036, 0x2a4b, 0x2a55, 0x2a5b, 0x0002, 0x0147, - 0x0160, 0x0003, 0x014b, 0x0152, 0x0159, 0x0005, 0x0000, 0xffff, - 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x000d, 0xffff, 0x0130, - 0x0133, 0x0136, 0x0139, 0x0005, 0x005c, 0xffff, 0x0d07, 0x0d14, - 0x0d22, 0x0d31, 0x0003, 0x0164, 0x016b, 0x0172, 0x0005, 0x0000, - 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x000d, 0xffff, - 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x005c, 0xffff, 0x0d07, - 0x0d14, 0x0d22, 0x0d31, 0x0002, 0x017c, 0x01e3, 0x0003, 0x0180, - // Entry 41880 - 418BF - 0x01a1, 0x01c2, 0x0008, 0x018c, 0x0192, 0x0189, 0x0195, 0x0198, - 0x019b, 0x019e, 0x018f, 0x0001, 0x000d, 0x0177, 0x0001, 0x005c, - 0x0d42, 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, 0x0d4c, 0x0001, - 0x000d, 0x0197, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x005c, 0x0d55, - 0x0001, 0x002e, 0x0176, 0x0008, 0x01ad, 0x01b3, 0x01aa, 0x01b6, - 0x01b9, 0x01bc, 0x01bf, 0x01b0, 0x0001, 0x005c, 0x0d5c, 0x0001, - 0x0000, 0x1f9c, 0x0001, 0x005c, 0x0d65, 0x0001, 0x0000, 0x21ec, - 0x0001, 0x005c, 0x0d6d, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x005c, - // Entry 418C0 - 418FF - 0x0d55, 0x0001, 0x002e, 0x0176, 0x0008, 0x01ce, 0x01d4, 0x01cb, - 0x01d7, 0x01da, 0x01dd, 0x01e0, 0x01d1, 0x0001, 0x000d, 0x0177, - 0x0001, 0x005c, 0x0d42, 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, - 0x0d4c, 0x0001, 0x000d, 0x0197, 0x0001, 0x005c, 0x0d4c, 0x0001, - 0x005c, 0x0d55, 0x0001, 0x002e, 0x0176, 0x0003, 0x01e7, 0x0208, - 0x0229, 0x0008, 0x01f3, 0x01f9, 0x01f0, 0x01fc, 0x01ff, 0x0202, - 0x0205, 0x01f6, 0x0001, 0x000d, 0x0177, 0x0001, 0x005c, 0x0d42, - 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x0050, - // Entry 41900 - 4193F - 0x0825, 0x0001, 0x000d, 0x018f, 0x0001, 0x005c, 0x0d74, 0x0001, - 0x005c, 0x0d7a, 0x0008, 0x0214, 0x021a, 0x0211, 0x021d, 0x0220, - 0x0223, 0x0226, 0x0217, 0x0001, 0x000d, 0x0177, 0x0001, 0x005c, - 0x0d42, 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, 0x0d4c, 0x0001, - 0x000d, 0x0197, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x005c, 0x0d55, - 0x0001, 0x002e, 0x0176, 0x0008, 0x0235, 0x023b, 0x0232, 0x023e, - 0x0241, 0x0244, 0x0247, 0x0238, 0x0001, 0x000d, 0x0177, 0x0001, - 0x005c, 0x0d42, 0x0001, 0x000d, 0x0189, 0x0001, 0x005c, 0x0d4c, - // Entry 41940 - 4197F - 0x0001, 0x0050, 0x0825, 0x0001, 0x000d, 0x018f, 0x0001, 0x005c, - 0x0d74, 0x0001, 0x005c, 0x0d7a, 0x0003, 0x0254, 0x025a, 0x024e, - 0x0001, 0x0250, 0x0002, 0x005c, 0x0d7f, 0x0d8c, 0x0001, 0x0256, - 0x0002, 0x000d, 0x01d5, 0x341f, 0x0001, 0x025c, 0x0002, 0x0050, - 0x03b3, 0x03c5, 0x0004, 0x026e, 0x0268, 0x0265, 0x026b, 0x0001, - 0x000e, 0x039a, 0x0001, 0x000e, 0x03ac, 0x0001, 0x000e, 0x03b8, - 0x0001, 0x000d, 0x0216, 0x0004, 0x027f, 0x0279, 0x0276, 0x027c, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - // Entry 41980 - 419BF - 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x0290, 0x028a, 0x0287, - 0x028d, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0295, 0x0001, - 0x0297, 0x0003, 0x0000, 0x0000, 0x029b, 0x000e, 0x005c, 0x0dc4, - 0x0d95, 0x0d9c, 0x0da4, 0x0dab, 0x0db1, 0x0db8, 0x0dbf, 0x0dcc, - 0x0dd2, 0x0dd7, 0x0ddd, 0x0de3, 0x0de6, 0x0005, 0x02b1, 0x0000, - 0x0000, 0x0000, 0x02c6, 0x0001, 0x02b3, 0x0003, 0x0000, 0x0000, - 0x02b7, 0x000d, 0x005c, 0xffff, 0x0deb, 0x0df3, 0x0dfb, 0x0e03, - // Entry 419C0 - 419FF - 0x0e09, 0x0e11, 0x0e17, 0x0e1e, 0x0e26, 0x0e2f, 0x0e35, 0x0e3a, - 0x0001, 0x02c8, 0x0001, 0x02ca, 0x0001, 0x0025, 0x05c0, 0x0005, - 0x02d3, 0x0000, 0x0000, 0x0000, 0x030b, 0x0002, 0x02d6, 0x02f8, - 0x0003, 0x02da, 0x0000, 0x02e9, 0x000d, 0x0000, 0xffff, 0x0606, - 0x3952, 0x3b26, 0x3b2d, 0x3b34, 0x3b3d, 0x3b46, 0x3b4d, 0x3980, - 0x3b52, 0x3b57, 0x3b5e, 0x000d, 0x005c, 0xffff, 0x0e42, 0x0e4a, - 0x0e50, 0x0e59, 0x0e63, 0x0e6c, 0x0e76, 0x0e7d, 0x0e86, 0x0e8e, - 0x0e95, 0x0ea2, 0x0003, 0x0000, 0x0000, 0x02fc, 0x000d, 0x005c, - // Entry 41A00 - 41A3F - 0xffff, 0x0eae, 0x0eb6, 0x0ebc, 0x0ec3, 0x0eca, 0x0ed5, 0x0ee0, - 0x0e7d, 0x0ee8, 0x0ef0, 0x0ef7, 0x0f00, 0x0001, 0x030d, 0x0001, - 0x030f, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0319, 0x040b, 0x0001, 0x031b, 0x0001, 0x031d, 0x00ec, - 0x0000, 0x06cb, 0x2a5a, 0x2a6e, 0x2a81, 0x2a94, 0x072c, 0x2aa6, - 0x0750, 0x2ab7, 0x0775, 0x2ac8, 0x3b65, 0x3b7c, 0x3b93, 0x3baa, - 0x3bc1, 0x2b58, 0x3bd8, 0x2b7b, 0x2b8f, 0x2ba1, 0x2bb3, 0x2bc6, - 0x2bd8, 0x08b5, 0x2649, 0x2be9, 0x2bfb, 0x266e, 0x2c0d, 0x2c1f, - // Entry 41A40 - 41A7F - 0x2c32, 0x3be8, 0x2c45, 0x2c57, 0x2c6a, 0x2c7d, 0x09ae, 0x2c92, - 0x2ca2, 0x2cb3, 0x09f7, 0x26a9, 0x2cd6, 0x0a33, 0x0a46, 0x2ce8, - 0x26ba, 0x0a7b, 0x2d0b, 0x2d20, 0x2d34, 0x2d47, 0x2d5b, 0x2d6f, - 0x3bfa, 0x0b1e, 0x2daf, 0x2dc4, 0x2ddb, 0x0b77, 0x2df0, 0x3c0e, - 0x2e04, 0x3c23, 0x2e30, 0x2e44, 0x2e58, 0x3c3a, 0x2e81, 0x3c4e, - 0x26dd, 0x2eab, 0x2ebf, 0x2ed5, 0x3c63, 0x2efe, 0x2f12, 0x210f, - 0x2f26, 0x3c78, 0x271a, 0x3c8c, 0x3ca1, 0x2f7b, 0x3cb6, 0x272d, - 0x3ccc, 0x3ce0, 0x2fcf, 0x2fe3, 0x0e04, 0x2ff7, 0x2755, 0x3cf4, - // Entry 41A80 - 41ABF - 0x3021, 0x3037, 0x3049, 0x0e96, 0x2769, 0x3073, 0x3085, 0x0ee9, - 0x3d09, 0x30af, 0x3d1e, 0x30d7, 0x3d32, 0x3104, 0x3d47, 0x312f, - 0x3143, 0x2793, 0x316d, 0x3182, 0x3199, 0x31ad, 0x3d5c, 0x3d6e, - 0x1051, 0x1066, 0x107a, 0x3d83, 0x27d3, 0x31fe, 0x10cf, 0x3215, - 0x3d97, 0x1110, 0x1124, 0x3da8, 0x326a, 0x327f, 0x3293, 0x32a7, - 0x3dbc, 0x32d0, 0x27fc, 0x3dce, 0x330f, 0x3322, 0x1224, 0x3334, - 0x124d, 0x1262, 0x3de3, 0x280f, 0x335f, 0x3372, 0x3386, 0x3df9, - 0x3e0d, 0x33c6, 0x2839, 0x1335, 0x33db, 0x33ef, 0x1374, 0x3402, - // Entry 41AC0 - 41AFF - 0x3417, 0x13b4, 0x3e23, 0x13e0, 0x3457, 0x346d, 0x3480, 0x1435, - 0x144b, 0x3495, 0x1473, 0x34a6, 0x34b8, 0x34cd, 0x14c8, 0x284e, - 0x34f6, 0x350b, 0x3521, 0x3535, 0x354b, 0x3560, 0x3575, 0x158f, - 0x3588, 0x15bb, 0x359d, 0x15e4, 0x35b0, 0x160d, 0x35c4, 0x2861, - 0x3e37, 0x1661, 0x1676, 0x35ef, 0x16a0, 0x3604, 0x3619, 0x288a, - 0x3642, 0x170c, 0x3656, 0x3668, 0x174a, 0x175e, 0x3695, 0x36a8, - 0x3e4b, 0x17b1, 0x36d2, 0x36e5, 0x36fb, 0x1808, 0x370f, 0x3723, - 0x28dd, 0x374c, 0x3762, 0x28f0, 0x189e, 0x18b3, 0x378a, 0x18dd, - // Entry 41B00 - 41B3F - 0x18f1, 0x379e, 0x37b2, 0x192f, 0x1942, 0x2902, 0x37da, 0x3e5f, - 0x3805, 0x3e74, 0x3821, 0x3828, 0x3e7b, 0x0004, 0x0419, 0x0413, - 0x0410, 0x0416, 0x0001, 0x000c, 0x0000, 0x0001, 0x000c, 0x0012, - 0x0001, 0x000c, 0x001e, 0x0001, 0x000e, 0x1d3a, 0x0005, 0x0422, - 0x0000, 0x0000, 0x0000, 0x0437, 0x0001, 0x0424, 0x0003, 0x0000, - 0x0000, 0x0428, 0x000d, 0x005c, 0xffff, 0x0f0b, 0x0f15, 0x0f21, - 0x0f28, 0x0f2c, 0x0f33, 0x0f3d, 0x0f42, 0x0f47, 0x0f4c, 0x0f50, - 0x0f57, 0x0001, 0x0439, 0x0001, 0x043b, 0x0001, 0x0000, 0x1a1d, - // Entry 41B40 - 41B7F - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0444, 0x0001, 0x0446, - 0x0001, 0x0448, 0x0002, 0x005c, 0x0f5e, 0x0f65, 0x0040, 0x048d, - 0x0000, 0x0000, 0x0492, 0x04af, 0x04c7, 0x04df, 0x04fc, 0x0519, - 0x0536, 0x0553, 0x056b, 0x0583, 0x05a4, 0x05c0, 0x0000, 0x0000, - 0x0000, 0x05dc, 0x05fb, 0x0613, 0x0000, 0x0000, 0x0000, 0x062b, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0630, 0x064a, 0x0664, - 0x067e, 0x0698, 0x06b2, 0x06cc, 0x06e6, 0x0700, 0x071a, 0x0734, - 0x074e, 0x0768, 0x0782, 0x079c, 0x07b6, 0x07d0, 0x07ea, 0x0804, - // Entry 41B80 - 41BBF - 0x081e, 0x0838, 0x0000, 0x0852, 0x0000, 0x0857, 0x0873, 0x088b, - 0x08a3, 0x08bf, 0x08d7, 0x08ef, 0x090b, 0x0923, 0x093b, 0x0001, - 0x048f, 0x0001, 0x0001, 0x0040, 0x0003, 0x0496, 0x0499, 0x049e, - 0x0001, 0x000d, 0x02ee, 0x0003, 0x000d, 0x02f5, 0x0304, 0x3425, - 0x0002, 0x04a1, 0x04a8, 0x0005, 0x000d, 0x033c, 0x0320, 0xffff, - 0xffff, 0x032e, 0x0005, 0x005c, 0x0f77, 0x0f68, 0xffff, 0xffff, - 0x0f68, 0x0003, 0x04b3, 0x0000, 0x04b6, 0x0001, 0x000d, 0x037d, - 0x0002, 0x04b9, 0x04c0, 0x0005, 0x000d, 0x0382, 0x0382, 0xffff, - // Entry 41BC0 - 41BFF - 0xffff, 0x0382, 0x0005, 0x005c, 0x0f86, 0x0f86, 0xffff, 0xffff, - 0x0f86, 0x0003, 0x04cb, 0x0000, 0x04ce, 0x0001, 0x000d, 0x039d, - 0x0002, 0x04d1, 0x04d8, 0x0005, 0x000d, 0x03a0, 0x03a0, 0xffff, - 0xffff, 0x03a0, 0x0005, 0x005c, 0x0f93, 0x0f93, 0xffff, 0xffff, - 0x0f93, 0x0003, 0x04e3, 0x04e6, 0x04eb, 0x0001, 0x000d, 0x03b7, - 0x0003, 0x005c, 0x0f9e, 0x0fb0, 0x0fbe, 0x0002, 0x04ee, 0x04f5, - 0x0005, 0x000d, 0x0400, 0x03f1, 0xffff, 0xffff, 0x0400, 0x0005, - 0x005c, 0x0fd1, 0x0fd1, 0xffff, 0xffff, 0x0fd1, 0x0003, 0x0500, - // Entry 41C00 - 41C3F - 0x0503, 0x0508, 0x0001, 0x000d, 0x043e, 0x0003, 0x005c, 0x0f9e, - 0x0fb0, 0x0fbe, 0x0002, 0x050b, 0x0512, 0x0005, 0x000d, 0x0442, - 0x0442, 0xffff, 0xffff, 0x0442, 0x0005, 0x005c, 0x0fe2, 0x0fe2, - 0xffff, 0xffff, 0x0fe2, 0x0003, 0x051d, 0x0520, 0x0525, 0x0001, - 0x000d, 0x043e, 0x0003, 0x005c, 0x0f9e, 0x0fb0, 0x0fbe, 0x0002, - 0x0528, 0x052f, 0x0005, 0x000d, 0x0442, 0x0442, 0xffff, 0xffff, - 0x0442, 0x0005, 0x005c, 0x0fe2, 0x0fe2, 0xffff, 0xffff, 0x0fe2, - 0x0003, 0x053a, 0x053d, 0x0542, 0x0001, 0x005a, 0x037c, 0x0003, - // Entry 41C40 - 41C7F - 0x005c, 0x0fee, 0x0ffe, 0x100a, 0x0002, 0x0545, 0x054c, 0x0005, - 0x005c, 0x1036, 0x101b, 0xffff, 0xffff, 0x1028, 0x0005, 0x005c, - 0x1053, 0x1044, 0xffff, 0xffff, 0x1044, 0x0003, 0x0557, 0x0000, - 0x055a, 0x0001, 0x0059, 0x03eb, 0x0002, 0x055d, 0x0564, 0x0005, - 0x005c, 0x1062, 0x1062, 0xffff, 0xffff, 0x1062, 0x0005, 0x005c, - 0x106e, 0x106e, 0xffff, 0xffff, 0x106e, 0x0003, 0x056f, 0x0000, - 0x0572, 0x0001, 0x0029, 0x0080, 0x0002, 0x0575, 0x057c, 0x0005, - 0x005c, 0x107b, 0x107b, 0xffff, 0xffff, 0x107b, 0x0005, 0x005c, - // Entry 41C80 - 41CBF - 0x1085, 0x1085, 0xffff, 0xffff, 0x1085, 0x0004, 0x0588, 0x058b, - 0x0590, 0x05a1, 0x0001, 0x005a, 0x001d, 0x0003, 0x005c, 0x1090, - 0x10a0, 0x10ac, 0x0002, 0x0593, 0x059a, 0x0005, 0x005c, 0x10db, - 0x10bd, 0xffff, 0xffff, 0x10cc, 0x0005, 0x005c, 0x10fa, 0x10ea, - 0xffff, 0xffff, 0x10ea, 0x0001, 0x005c, 0x110a, 0x0004, 0x05a9, - 0x0000, 0x05ac, 0x05bd, 0x0001, 0x0044, 0x0c33, 0x0002, 0x05af, - 0x05b6, 0x0005, 0x005c, 0x1125, 0x1125, 0xffff, 0xffff, 0x1125, - 0x0005, 0x005c, 0x1131, 0x1131, 0xffff, 0xffff, 0x1131, 0x0001, - // Entry 41CC0 - 41CFF - 0x005c, 0x110a, 0x0004, 0x05c5, 0x0000, 0x05c8, 0x05d9, 0x0001, - 0x0029, 0x008c, 0x0002, 0x05cb, 0x05d2, 0x0005, 0x005c, 0x113e, - 0x113e, 0xffff, 0xffff, 0x113e, 0x0005, 0x005c, 0x1148, 0x1148, - 0xffff, 0xffff, 0x1148, 0x0001, 0x005c, 0x110a, 0x0003, 0x05e0, - 0x05e3, 0x05ea, 0x0001, 0x000d, 0x05d4, 0x0005, 0x005c, 0x115d, - 0x1163, 0x1169, 0x1153, 0x116f, 0x0002, 0x05ed, 0x05f4, 0x0005, - 0x000d, 0x060c, 0x0601, 0xffff, 0xffff, 0x060c, 0x0005, 0x005c, - 0x117a, 0x117a, 0xffff, 0xffff, 0x117a, 0x0003, 0x05ff, 0x0000, - // Entry 41D00 - 41D3F - 0x0602, 0x0001, 0x0029, 0x008f, 0x0002, 0x0605, 0x060c, 0x0005, - 0x000d, 0x0635, 0x0635, 0xffff, 0xffff, 0x0635, 0x0005, 0x005c, - 0x1187, 0x1187, 0xffff, 0xffff, 0x1187, 0x0003, 0x0617, 0x0000, - 0x061a, 0x0001, 0x0029, 0x008f, 0x0002, 0x061d, 0x0624, 0x0005, - 0x000d, 0x0635, 0x0635, 0xffff, 0xffff, 0x0635, 0x0005, 0x005c, - 0x1187, 0x1187, 0xffff, 0xffff, 0x1187, 0x0001, 0x062d, 0x0001, - 0x005c, 0x1192, 0x0003, 0x0000, 0x0634, 0x0639, 0x0003, 0x005c, - 0x1090, 0x11a0, 0x10ac, 0x0002, 0x063c, 0x0643, 0x0005, 0x005c, - // Entry 41D40 - 41D7F - 0x10db, 0x10bd, 0xffff, 0xffff, 0x10cc, 0x0005, 0x005c, 0x10fa, - 0x10ea, 0xffff, 0xffff, 0x10ea, 0x0003, 0x0000, 0x064e, 0x0653, - 0x0003, 0x005c, 0x11aa, 0x11b6, 0x11bc, 0x0002, 0x0656, 0x065d, - 0x0005, 0x005c, 0x10db, 0x10bd, 0xffff, 0xffff, 0x10cc, 0x0005, - 0x005c, 0x10fa, 0x10ea, 0xffff, 0xffff, 0x10ea, 0x0003, 0x0000, - 0x0668, 0x066d, 0x0003, 0x005c, 0x11aa, 0x11b6, 0x11bc, 0x0002, - 0x0670, 0x0677, 0x0005, 0x005c, 0x10db, 0x10bd, 0xffff, 0xffff, - 0x10cc, 0x0005, 0x005c, 0x10fa, 0x10ea, 0xffff, 0xffff, 0x10ea, - // Entry 41D80 - 41DBF - 0x0003, 0x0000, 0x0682, 0x0687, 0x0003, 0x005c, 0x11c9, 0x11dd, - 0x11ea, 0x0002, 0x068a, 0x0691, 0x0005, 0x005c, 0x1223, 0x11ff, - 0xffff, 0xffff, 0x1211, 0x0005, 0x005c, 0x1249, 0x1236, 0xffff, - 0xffff, 0x1236, 0x0003, 0x0000, 0x069c, 0x06a1, 0x0003, 0x005c, - 0x125d, 0x126a, 0x1270, 0x0002, 0x06a4, 0x06ab, 0x0005, 0x005c, - 0x1223, 0x11ff, 0xffff, 0xffff, 0x1211, 0x0005, 0x005c, 0x1249, - 0x1236, 0xffff, 0xffff, 0x1236, 0x0003, 0x0000, 0x06b6, 0x06bb, - 0x0003, 0x005c, 0x125d, 0x126a, 0x1270, 0x0002, 0x06be, 0x06c5, - // Entry 41DC0 - 41DFF - 0x0005, 0x005c, 0x1223, 0x11ff, 0xffff, 0xffff, 0x1211, 0x0005, - 0x005c, 0x1249, 0x1236, 0xffff, 0xffff, 0x1236, 0x0003, 0x0000, - 0x06d0, 0x06d5, 0x0003, 0x005c, 0x127e, 0x128e, 0x1297, 0x0002, - 0x06d8, 0x06df, 0x0005, 0x000d, 0x083e, 0x0822, 0xffff, 0xffff, - 0x0830, 0x0005, 0x005c, 0x12b7, 0x12a8, 0xffff, 0xffff, 0x12a8, - 0x0003, 0x0000, 0x06ea, 0x06ef, 0x0003, 0x005c, 0x12c7, 0x12d4, - 0x12da, 0x0002, 0x06f2, 0x06f9, 0x0005, 0x000d, 0x083e, 0x0822, - 0xffff, 0xffff, 0x0830, 0x0005, 0x005c, 0x12b7, 0x12a8, 0xffff, - // Entry 41E00 - 41E3F - 0xffff, 0x12a8, 0x0003, 0x0000, 0x0704, 0x0709, 0x0003, 0x005c, - 0x12c7, 0x12d4, 0x12da, 0x0002, 0x070c, 0x0713, 0x0005, 0x000d, - 0x083e, 0x0822, 0xffff, 0xffff, 0x0830, 0x0005, 0x005c, 0x12b7, - 0x12a8, 0xffff, 0xffff, 0x12a8, 0x0003, 0x0000, 0x071e, 0x0723, - 0x0003, 0x005c, 0x12e8, 0x12f6, 0x12fe, 0x0002, 0x0726, 0x072d, - 0x0005, 0x005c, 0x1327, 0x130d, 0xffff, 0xffff, 0x131a, 0x0005, - 0x005c, 0x1342, 0x1334, 0xffff, 0xffff, 0x1334, 0x0003, 0x0000, - 0x0738, 0x073d, 0x0003, 0x005c, 0x1350, 0x135c, 0x1362, 0x0002, - // Entry 41E40 - 41E7F - 0x0740, 0x0747, 0x0005, 0x005c, 0x1327, 0x130d, 0xffff, 0xffff, - 0x131a, 0x0005, 0x005c, 0x1342, 0x1334, 0xffff, 0xffff, 0x1334, - 0x0003, 0x0000, 0x0752, 0x0757, 0x0003, 0x005c, 0x1350, 0x135c, - 0x1362, 0x0002, 0x075a, 0x0761, 0x0005, 0x005c, 0x1327, 0x130d, - 0xffff, 0xffff, 0x131a, 0x0005, 0x005c, 0x1342, 0x1334, 0xffff, - 0xffff, 0x1334, 0x0003, 0x0000, 0x076c, 0x0771, 0x0003, 0x005c, - 0x136f, 0x1382, 0x138e, 0x0002, 0x0774, 0x077b, 0x0005, 0x000d, - 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, 0x005c, 0x13b4, - // Entry 41E80 - 41EBF - 0x13a2, 0xffff, 0xffff, 0x13a2, 0x0003, 0x0000, 0x0786, 0x078b, - 0x0003, 0x005c, 0x13c7, 0x13d5, 0x13dc, 0x0002, 0x078e, 0x0795, - 0x0005, 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, 0x09a3, 0x0005, - 0x005c, 0x13b4, 0x13a2, 0xffff, 0xffff, 0x13a2, 0x0003, 0x0000, - 0x07a0, 0x07a5, 0x0003, 0x005c, 0x13c7, 0x13d5, 0x13dc, 0x0002, - 0x07a8, 0x07af, 0x0005, 0x000d, 0x09b4, 0x0992, 0xffff, 0xffff, - 0x09a3, 0x0005, 0x005c, 0x13b4, 0x13a2, 0xffff, 0xffff, 0x13a2, - 0x0003, 0x0000, 0x07ba, 0x07bf, 0x0003, 0x005c, 0x13eb, 0x13fa, - // Entry 41EC0 - 41EFF - 0x1402, 0x0002, 0x07c2, 0x07c9, 0x0005, 0x000d, 0x0a6f, 0x0a55, - 0xffff, 0xffff, 0x0a62, 0x0005, 0x005c, 0x1420, 0x1412, 0xffff, - 0xffff, 0x1412, 0x0003, 0x0000, 0x07d4, 0x07d9, 0x0003, 0x005c, - 0x142f, 0x143c, 0x1442, 0x0002, 0x07dc, 0x07e3, 0x0005, 0x000d, - 0x0a6f, 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, 0x005c, 0x1420, - 0x1412, 0xffff, 0xffff, 0x1412, 0x0003, 0x0000, 0x07ee, 0x07f3, - 0x0003, 0x005c, 0x142f, 0x143c, 0x1442, 0x0002, 0x07f6, 0x07fd, - 0x0005, 0x000d, 0x0a6f, 0x0a55, 0xffff, 0xffff, 0x0a62, 0x0005, - // Entry 41F00 - 41F3F - 0x005c, 0x1420, 0x1412, 0xffff, 0xffff, 0x1412, 0x0003, 0x0000, - 0x0808, 0x080d, 0x0003, 0x005c, 0x1450, 0x145f, 0x1468, 0x0002, - 0x0810, 0x0817, 0x0005, 0x000d, 0x0b1b, 0x0aff, 0xffff, 0xffff, - 0x0b0d, 0x0005, 0x005c, 0x1487, 0x1478, 0xffff, 0xffff, 0x1478, - 0x0003, 0x0000, 0x0822, 0x0827, 0x0003, 0x005c, 0x1496, 0x14a2, - 0x14a8, 0x0002, 0x082a, 0x0831, 0x0005, 0x000d, 0x0b1b, 0x0aff, - 0xffff, 0xffff, 0x0b0d, 0x0005, 0x005c, 0x1487, 0x1478, 0xffff, - 0xffff, 0x1478, 0x0003, 0x0000, 0x083c, 0x0841, 0x0003, 0x005c, - // Entry 41F40 - 41F7F - 0x1496, 0x14a2, 0x14a8, 0x0002, 0x0844, 0x084b, 0x0005, 0x000d, - 0x0b1b, 0x0aff, 0xffff, 0xffff, 0x0b0d, 0x0005, 0x005c, 0x1487, - 0x1478, 0xffff, 0xffff, 0x1478, 0x0001, 0x0854, 0x0001, 0x005c, - 0x14b5, 0x0003, 0x085b, 0x085e, 0x0862, 0x0001, 0x000d, 0x0b99, - 0x0002, 0x005c, 0xffff, 0x14c8, 0x0002, 0x0865, 0x086c, 0x0005, - 0x000d, 0x0bbd, 0x0ba6, 0xffff, 0xffff, 0x0bb1, 0x0005, 0x005c, - 0x14df, 0x14d2, 0xffff, 0xffff, 0x14d2, 0x0003, 0x0877, 0x0000, - 0x087a, 0x0001, 0x005c, 0x14ec, 0x0002, 0x087d, 0x0884, 0x0005, - // Entry 41F80 - 41FBF - 0x005c, 0x14f0, 0x14f0, 0xffff, 0xffff, 0x14f0, 0x0005, 0x005c, - 0x14fb, 0x14fb, 0xffff, 0xffff, 0x14fb, 0x0003, 0x088f, 0x0000, - 0x0892, 0x0001, 0x005c, 0x14ec, 0x0002, 0x0895, 0x089c, 0x0005, - 0x005c, 0x14f0, 0x14f0, 0xffff, 0xffff, 0x14f0, 0x0005, 0x005c, - 0x14fb, 0x14fb, 0xffff, 0xffff, 0x14fb, 0x0003, 0x08a7, 0x08aa, - 0x08ae, 0x0001, 0x0010, 0x0b77, 0x0002, 0x005c, 0xffff, 0x1507, - 0x0002, 0x08b1, 0x08b8, 0x0005, 0x0050, 0x2938, 0x0e91, 0xffff, - 0xffff, 0x2938, 0x0005, 0x005c, 0x1513, 0x1513, 0xffff, 0xffff, - // Entry 41FC0 - 41FFF - 0x1513, 0x0003, 0x08c3, 0x0000, 0x08c6, 0x0001, 0x0001, 0x075a, - 0x0002, 0x08c9, 0x08d0, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, - 0xffff, 0x0c64, 0x0005, 0x005c, 0x1522, 0x1522, 0xffff, 0xffff, - 0x1522, 0x0003, 0x08db, 0x0000, 0x08de, 0x0001, 0x0001, 0x075a, - 0x0002, 0x08e1, 0x08e8, 0x0005, 0x000d, 0x0c64, 0x0c64, 0xffff, - 0xffff, 0x0c64, 0x0005, 0x005c, 0x1522, 0x1522, 0xffff, 0xffff, - 0x1522, 0x0003, 0x08f3, 0x08f6, 0x08fa, 0x0001, 0x0015, 0x0ad8, - 0x0002, 0x000d, 0xffff, 0x0c87, 0x0002, 0x08fd, 0x0904, 0x0005, - // Entry 42000 - 4203F - 0x000d, 0x0caa, 0x0c8c, 0xffff, 0xffff, 0x0c9b, 0x0005, 0x005c, - 0x153f, 0x152f, 0xffff, 0xffff, 0x152f, 0x0003, 0x090f, 0x0000, - 0x0912, 0x0001, 0x0001, 0x07d3, 0x0002, 0x0915, 0x091c, 0x0005, - 0x000d, 0x0cef, 0x0cef, 0xffff, 0xffff, 0x0cef, 0x0005, 0x005c, - 0x154f, 0x154f, 0xffff, 0xffff, 0x154f, 0x0003, 0x0927, 0x0000, - 0x092a, 0x0001, 0x0029, 0x0086, 0x0002, 0x092d, 0x0934, 0x0005, - 0x005c, 0x155c, 0x155c, 0xffff, 0xffff, 0x155c, 0x0005, 0x005c, - 0x1566, 0x1566, 0xffff, 0xffff, 0x1566, 0x0001, 0x093d, 0x0001, - // Entry 42040 - 4207F - 0x000d, 0x0d0a, 0x0004, 0x0945, 0x094a, 0x094f, 0x095e, 0x0003, - 0x0000, 0x1dc7, 0x3acc, 0x3e82, 0x0003, 0x0000, 0x1de0, 0x3e86, - 0x3e98, 0x0002, 0x0000, 0x0952, 0x0003, 0x0000, 0x0959, 0x0956, - 0x0001, 0x005c, 0x1571, 0x0003, 0x005c, 0xffff, 0x1590, 0x15b4, - 0x0002, 0x0b45, 0x0961, 0x0003, 0x0965, 0x0aa5, 0x0a05, 0x009e, - 0x005c, 0xffff, 0xffff, 0xffff, 0xffff, 0x1663, 0x16c7, 0x1752, - 0x1798, 0x180d, 0x187f, 0x18f4, 0x196c, 0x19b2, 0x1a87, 0x1ad6, - 0x1b25, 0x1b8c, 0x1bdb, 0x1c2a, 0x1ca0, 0x1d2e, 0x1da1, 0x1e11, - // Entry 42080 - 420BF - 0x1e69, 0x1eac, 0xffff, 0xffff, 0x1f19, 0xffff, 0x1f7f, 0xffff, - 0x1ff7, 0x203d, 0x2080, 0x20c3, 0xffff, 0xffff, 0x2148, 0x2197, - 0x21f7, 0xffff, 0xffff, 0xffff, 0x226f, 0xffff, 0x22e1, 0x2342, - 0xffff, 0x23b9, 0x241a, 0x2484, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2526, 0xffff, 0xffff, 0x259e, 0x2605, 0xffff, 0xffff, 0x269c, - 0x2703, 0x2752, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2827, 0x2867, 0x28ad, 0x28fc, 0x2948, 0xffff, 0xffff, 0x29fe, - 0xffff, 0x2a57, 0xffff, 0xffff, 0x2adf, 0xffff, 0x2b83, 0xffff, - // Entry 420C0 - 420FF - 0xffff, 0xffff, 0xffff, 0x2c0e, 0xffff, 0x2c6c, 0x2cd9, 0x2d3a, - 0x2d8c, 0xffff, 0xffff, 0xffff, 0x2df9, 0x2e5a, 0x2eaf, 0xffff, - 0xffff, 0x2f27, 0x2fb4, 0x3009, 0x3049, 0xffff, 0xffff, 0x30ba, - 0x3106, 0x3146, 0xffff, 0x31a6, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x32a8, 0x32f1, 0x3337, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x33fb, 0xffff, 0xffff, 0x3455, 0xffff, - 0x34a4, 0xffff, 0x3509, 0x3552, 0x35a4, 0xffff, 0x35fd, 0x3652, - 0xffff, 0xffff, 0xffff, 0x36dc, 0x3725, 0xffff, 0xffff, 0x15cb, - // Entry 42100 - 4213F - 0x170c, 0x19f5, 0x1a3e, 0xffff, 0xffff, 0x2b2b, 0x323e, 0x009e, - 0x005c, 0x160b, 0x161c, 0x1635, 0x164d, 0x167a, 0x16cf, 0x175f, - 0x17b9, 0x182d, 0x18a0, 0x1916, 0x1979, 0x19be, 0x1a97, 0x1ae6, - 0x1b3d, 0x1b9c, 0x1beb, 0x1c47, 0x1cc5, 0x1d4a, 0x1dbc, 0x1e24, - 0x1e75, 0x1ebd, 0x1efe, 0x1f0a, 0x1f29, 0x1f68, 0x1f98, 0x1fe9, - 0x2004, 0x2049, 0x208b, 0x20d4, 0x2115, 0x212c, 0x2158, 0x21ab, - 0x2202, 0x2237, 0x2244, 0x225a, 0x2286, 0x22d3, 0x22f7, 0x2359, - 0x23a6, 0x23cf, 0x2433, 0x2491, 0x24ca, 0x24e2, 0x2508, 0x2518, - // Entry 42140 - 4217F - 0x2534, 0x256f, 0x2584, 0x25b6, 0x261c, 0x267f, 0x268e, 0x26b4, - 0x2713, 0x275d, 0x2792, 0x27ac, 0x27c4, 0x27d3, 0x27f0, 0x280c, - 0x2832, 0x2874, 0x28bd, 0x290b, 0x2968, 0x29c7, 0x29e3, 0x2a0d, - 0x2a4a, 0x2a69, 0x2aac, 0x2acd, 0x2aee, 0x2b6e, 0x2b91, 0x2bcc, - 0x2bdb, 0x2be9, 0x2bf6, 0x2c1f, 0x2c60, 0x2c82, 0x2ceb, 0x2d4b, - 0x2d99, 0x2dd2, 0x2de1, 0x2ded, 0x2e0f, 0x2e6c, 0x2ec2, 0x2f07, - 0x2f12, 0x2f41, 0x2fc6, 0x3014, 0x3058, 0x3095, 0x30a1, 0x30c9, - 0x3111, 0x3155, 0x3192, 0x31bf, 0x3210, 0x321e, 0x322b, 0x328d, - // Entry 42180 - 421BF - 0x329b, 0x32b6, 0x32fe, 0x3343, 0x337a, 0x3389, 0x33a3, 0x33bb, - 0x33d4, 0x33e2, 0x33ee, 0x3408, 0x3434, 0x3447, 0x3461, 0x3498, - 0x34b7, 0x34fc, 0x3517, 0x3563, 0x35b2, 0x35ed, 0x360f, 0x3662, - 0x36a1, 0x36ae, 0x36c0, 0x36ea, 0x3739, 0x2669, 0x2f94, 0x15d6, - 0x1719, 0x1a03, 0x1a4c, 0xffff, 0x2abc, 0x2b37, 0x324e, 0x009e, - 0x005c, 0xffff, 0xffff, 0xffff, 0xffff, 0x169c, 0x16e9, 0x1777, - 0x17e5, 0x1858, 0x18cc, 0x1943, 0x1991, 0x19d5, 0x1ab2, 0x1b01, - 0x1b60, 0x1bb7, 0x1c06, 0x1c6f, 0x1cf5, 0x1d71, 0x1de2, 0x1e42, - // Entry 421C0 - 421FF - 0x1e8c, 0x1ed9, 0xffff, 0xffff, 0x1f44, 0xffff, 0x1fbc, 0xffff, - 0x201c, 0x2060, 0x20a4, 0x20f0, 0xffff, 0xffff, 0x2173, 0x21ca, - 0x2218, 0xffff, 0xffff, 0xffff, 0x22a8, 0xffff, 0x2318, 0x237b, - 0xffff, 0x23f0, 0x2457, 0x24a9, 0xffff, 0xffff, 0xffff, 0xffff, - 0x254d, 0xffff, 0xffff, 0x25d9, 0x263e, 0xffff, 0xffff, 0x26d7, - 0x272e, 0x2773, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2848, 0x288c, 0x28d8, 0x2925, 0x2993, 0xffff, 0xffff, 0x2a27, - 0xffff, 0x2a86, 0xffff, 0xffff, 0x2b08, 0xffff, 0x2baa, 0xffff, - // Entry 42200 - 4223F - 0xffff, 0xffff, 0xffff, 0x2c3b, 0xffff, 0x2ca9, 0x2d0e, 0x2d67, - 0x2db1, 0xffff, 0xffff, 0xffff, 0x2e30, 0x2e89, 0x2ee0, 0xffff, - 0xffff, 0x2f66, 0x2fe3, 0x302a, 0x3072, 0xffff, 0xffff, 0x30e3, - 0x3127, 0x316f, 0xffff, 0x31e3, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x32cf, 0x3316, 0x335a, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3420, 0xffff, 0xffff, 0x3478, 0xffff, - 0x34d5, 0xffff, 0x3530, 0x357f, 0x35cb, 0xffff, 0x362c, 0x367d, - 0xffff, 0xffff, 0xffff, 0x3703, 0x3758, 0xffff, 0xffff, 0x15ec, - // Entry 42240 - 4227F - 0x1731, 0x1a1c, 0x1a65, 0xffff, 0xffff, 0x2b4e, 0x3269, 0x0003, - 0x0b49, 0x0bb8, 0x0b7c, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, 0x2295, 0x003a, 0x001c, - // Entry 42280 - 422BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, - 0x2295, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x22b5, 0x0031, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 422C0 - 422FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2287, 0x2290, 0xffff, 0x2299, 0x0001, 0x0002, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 42300 - 4233F - 0x0000, 0x0008, 0x001d, 0x0042, 0x0000, 0x0071, 0x00dc, 0x0000, - 0x0000, 0x0000, 0x0002, 0x0020, 0x0031, 0x0001, 0x0022, 0x000d, - 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, 0x2c99, 0x2cba, 0x2cbe, - 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, 0x2cac, 0x0001, 0x0033, - 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, 0x2c99, 0x2cba, - 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, 0x2cac, 0x0002, - 0x0045, 0x005b, 0x0003, 0x0049, 0x0000, 0x0052, 0x0007, 0x0044, - 0x0c33, 0x3111, 0x3142, 0x3146, 0x3120, 0x3126, 0x314a, 0x0007, - // Entry 42340 - 4237F - 0x000d, 0x00f5, 0x3435, 0x3440, 0x0111, 0x3447, 0x3451, 0x3457, - 0x0003, 0x005f, 0x0000, 0x0068, 0x0007, 0x0044, 0x0c33, 0x3111, - 0x3142, 0x3146, 0x3120, 0x3126, 0x314a, 0x0007, 0x000d, 0x00f5, - 0x3435, 0x3440, 0x0111, 0x3447, 0x3451, 0x3457, 0x0002, 0x0074, - 0x00bd, 0x0003, 0x0078, 0x0099, 0x00b4, 0x0008, 0x0084, 0x008a, - 0x0081, 0x008d, 0x0090, 0x0093, 0x0096, 0x0087, 0x0001, 0x000d, - 0x0177, 0x0001, 0x005d, 0x0000, 0x0001, 0x000d, 0x0189, 0x0001, - 0x005c, 0x0d4c, 0x0001, 0x0050, 0x0825, 0x0001, 0x005d, 0x000c, - // Entry 42380 - 423BF - 0x0001, 0x005c, 0x0d74, 0x0001, 0x002e, 0x0176, 0x0008, 0x0000, - 0x0000, 0x00a2, 0x00a8, 0x00ab, 0x00ae, 0x00b1, 0x00a5, 0x0001, - 0x000d, 0x0177, 0x0001, 0x000d, 0x0189, 0x0001, 0x0050, 0x0825, - 0x0001, 0x005d, 0x000c, 0x0001, 0x005c, 0x0d74, 0x0001, 0x005c, - 0x0d7a, 0x0002, 0x00b7, 0x00ba, 0x0001, 0x005d, 0x0000, 0x0001, - 0x005c, 0x0d4c, 0x0003, 0x00c1, 0x00ca, 0x00d3, 0x0002, 0x00c4, - 0x00c7, 0x0001, 0x005d, 0x0000, 0x0001, 0x005c, 0x0d4c, 0x0002, - 0x00cd, 0x00d0, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, - // Entry 423C0 - 423FF - 0x0002, 0x00d6, 0x00d9, 0x0001, 0x005d, 0x0000, 0x0001, 0x005c, - 0x0d4c, 0x0003, 0x0000, 0x0000, 0x00e0, 0x0002, 0x00e3, 0x00e6, - 0x0001, 0x000d, 0x01bd, 0x0002, 0x005c, 0xffff, 0x0d8c, 0x0001, - 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000b, 0x0014, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0008, 0x001d, 0x0042, 0x0000, 0x0071, - 0x00dc, 0x0000, 0x0000, 0x0000, 0x0002, 0x0020, 0x0031, 0x0001, - 0x0022, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, 0x2c99, - // Entry 42400 - 4243F - 0x2cba, 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, 0x2cac, - 0x0001, 0x0033, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, - 0x2c99, 0x2cba, 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, - 0x2cac, 0x0002, 0x0045, 0x005b, 0x0003, 0x0049, 0x0000, 0x0052, - 0x0007, 0x0044, 0x0c33, 0x3111, 0x3142, 0x3146, 0x3120, 0x3126, - 0x314a, 0x0007, 0x000d, 0x00f5, 0x3435, 0x3440, 0x0111, 0x3447, - 0x3451, 0x3457, 0x0003, 0x005f, 0x0000, 0x0068, 0x0007, 0x0044, - 0x0c33, 0x3111, 0x3142, 0x3146, 0x3120, 0x3126, 0x314a, 0x0007, - // Entry 42440 - 4247F - 0x000d, 0x00f5, 0x3435, 0x3440, 0x0111, 0x3447, 0x3451, 0x3457, - 0x0002, 0x0074, 0x00bd, 0x0003, 0x0078, 0x0099, 0x00b4, 0x0008, - 0x0084, 0x008a, 0x0081, 0x008d, 0x0090, 0x0093, 0x0096, 0x0087, - 0x0001, 0x000d, 0x0177, 0x0001, 0x005d, 0x0000, 0x0001, 0x000d, - 0x0189, 0x0001, 0x005c, 0x0d4c, 0x0001, 0x0050, 0x0825, 0x0001, - 0x005d, 0x000c, 0x0001, 0x005c, 0x0d74, 0x0001, 0x002e, 0x0176, - 0x0008, 0x0000, 0x0000, 0x00a2, 0x00a8, 0x00ab, 0x00ae, 0x00b1, - 0x00a5, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x0189, 0x0001, - // Entry 42480 - 424BF - 0x0050, 0x0825, 0x0001, 0x005d, 0x000c, 0x0001, 0x005c, 0x0d74, - 0x0001, 0x005c, 0x0d7a, 0x0002, 0x00b7, 0x00ba, 0x0001, 0x005d, - 0x0000, 0x0001, 0x005c, 0x0d4c, 0x0003, 0x00c1, 0x00ca, 0x00d3, - 0x0002, 0x00c4, 0x00c7, 0x0001, 0x005d, 0x0000, 0x0001, 0x005c, - 0x0d4c, 0x0002, 0x00cd, 0x00d0, 0x0001, 0x0000, 0x1f9c, 0x0001, - 0x0000, 0x21ec, 0x0002, 0x00d6, 0x00d9, 0x0001, 0x005d, 0x0000, - 0x0001, 0x005c, 0x0d4c, 0x0003, 0x0000, 0x0000, 0x00e0, 0x0001, - 0x00e2, 0x0001, 0x000d, 0x01bd, 0x0001, 0x0002, 0x0008, 0x0000, - // Entry 424C0 - 424FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0014, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0004, 0x0019, 0x003e, 0x0000, 0x0057, 0x0002, 0x001c, 0x002d, - 0x0001, 0x001e, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2cb5, - 0x2c99, 0x2cba, 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, 0x2ca7, - 0x2cac, 0x0001, 0x002f, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, - 0x2cb5, 0x2c99, 0x2cba, 0x2cbe, 0x2cc2, 0x2ca2, 0x2cc6, 0x2447, - 0x2ca7, 0x2cac, 0x0002, 0x0041, 0x004c, 0x0001, 0x0043, 0x0007, - // Entry 42500 - 4253F - 0x0044, 0x0c33, 0x3111, 0x3142, 0x3146, 0x3120, 0x3126, 0x314a, - 0x0001, 0x004e, 0x0007, 0x0044, 0x0c33, 0x3111, 0x3142, 0x3146, - 0x3120, 0x3126, 0x314a, 0x0002, 0x005a, 0x0093, 0x0002, 0x005d, - 0x0078, 0x0008, 0x0000, 0x0000, 0x0066, 0x006c, 0x006f, 0x0072, - 0x0075, 0x0069, 0x0001, 0x000d, 0x0177, 0x0001, 0x000d, 0x0189, - 0x0001, 0x0050, 0x0825, 0x0001, 0x005d, 0x000c, 0x0001, 0x005c, - 0x0d55, 0x0001, 0x002e, 0x0176, 0x0008, 0x0000, 0x0000, 0x0081, - 0x0087, 0x008a, 0x008d, 0x0090, 0x0084, 0x0001, 0x000d, 0x0177, - // Entry 42540 - 4257F - 0x0001, 0x000d, 0x0189, 0x0001, 0x0050, 0x0825, 0x0001, 0x005d, - 0x000c, 0x0001, 0x005c, 0x0d74, 0x0001, 0x005c, 0x0d7a, 0x0002, - 0x0000, 0x0096, 0x0002, 0x0099, 0x009c, 0x0001, 0x0000, 0x1f9c, - 0x0001, 0x0000, 0x21ec, 0x0003, 0x0004, 0x05ea, 0x0a14, 0x0012, - 0x0017, 0x0027, 0x003e, 0x008b, 0x00df, 0x0000, 0x012c, 0x0157, - 0x0384, 0x03df, 0x043d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0476, - 0x0582, 0x05d9, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, - 0x0000, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, - // Entry 42580 - 425BF - 0x0000, 0x0000, 0x0001, 0x0029, 0x0001, 0x002b, 0x0003, 0x0000, - 0x0000, 0x002f, 0x000d, 0x005d, 0xffff, 0x0014, 0x0025, 0x0034, - 0x0044, 0x0055, 0x0064, 0x0075, 0x0085, 0x0097, 0x00a7, 0x00b7, - 0x00c6, 0x0001, 0x0040, 0x0002, 0x0043, 0x0067, 0x0003, 0x0047, - 0x0000, 0x0057, 0x000e, 0x0025, 0xffff, 0x00e8, 0x0137, 0x013e, - 0x3844, 0x014c, 0x0153, 0x015b, 0x0165, 0x016f, 0x0177, 0x0182, - 0x0188, 0x018e, 0x000e, 0x0025, 0xffff, 0x00e8, 0x0137, 0x013e, - 0x3844, 0x014c, 0x0153, 0x015b, 0x0165, 0x016f, 0x0177, 0x0182, - // Entry 425C0 - 425FF - 0x0188, 0x018e, 0x0003, 0x006b, 0x0000, 0x007b, 0x000e, 0x0000, - 0xffff, 0x03ce, 0x3eae, 0x3eb5, 0x3ebd, 0x3ec3, 0x3eca, 0x3ed2, - 0x3edc, 0x392a, 0x3ee6, 0x3ef1, 0x3ef7, 0x3efd, 0x000e, 0x0000, - 0xffff, 0x03ce, 0x3eae, 0x3eb5, 0x3ebd, 0x3ec3, 0x3eca, 0x3ed2, - 0x3edc, 0x392a, 0x3ee6, 0x3ef1, 0x3ef7, 0x3efd, 0x000a, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0096, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x009c, 0x0001, - 0x009e, 0x0001, 0x00a0, 0x003d, 0x0000, 0xffff, 0x01bd, 0x01c4, - // Entry 42600 - 4263F - 0x01cc, 0x01d5, 0x01de, 0x01e6, 0x01ec, 0x01f4, 0x01fc, 0x0205, - 0x020d, 0x0214, 0x021b, 0x0223, 0x022d, 0x0234, 0x023b, 0x0245, - 0x024c, 0x0253, 0x025b, 0x0264, 0x026b, 0x0273, 0x027c, 0x0282, - 0x028a, 0x0293, 0x029b, 0x02a4, 0x02ab, 0x02b2, 0x02b9, 0x02c3, - 0x02cc, 0x02d2, 0x02d9, 0x02e1, 0x02ea, 0x02f2, 0x02fa, 0x0303, - 0x0309, 0x0311, 0x031a, 0x0322, 0x0329, 0x0331, 0x0339, 0x0340, - 0x0349, 0x0351, 0x0358, 0x0362, 0x036a, 0x0370, 0x0377, 0x0381, - 0x0389, 0x0390, 0x0001, 0x00e1, 0x0002, 0x00e4, 0x0108, 0x0003, - // Entry 42640 - 4267F - 0x00e8, 0x0000, 0x00f8, 0x000e, 0x0025, 0xffff, 0x020e, 0x021a, - 0x38d7, 0x0227, 0x38dd, 0x022f, 0x0238, 0x0241, 0x0249, 0x0251, - 0x0258, 0x025f, 0x0268, 0x000e, 0x0025, 0xffff, 0x020e, 0x021a, - 0x38d7, 0x0227, 0x38dd, 0x022f, 0x0238, 0x0241, 0x0249, 0x0251, - 0x0258, 0x025f, 0x0268, 0x0003, 0x010c, 0x0000, 0x011c, 0x000e, - 0x0026, 0xffff, 0x133f, 0x134b, 0x35a7, 0x35ad, 0x35b5, 0x1366, - 0x136f, 0x1378, 0x35b9, 0x35c1, 0x35c8, 0x35cf, 0x35d8, 0x000e, - 0x0026, 0xffff, 0x133f, 0x134b, 0x35a7, 0x35ad, 0x35b5, 0x1366, - // Entry 42680 - 426BF - 0x136f, 0x1378, 0x35b9, 0x35c1, 0x35c8, 0x35cf, 0x35d8, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0135, 0x0000, 0x0146, - 0x0004, 0x0143, 0x013d, 0x013a, 0x0140, 0x0001, 0x0001, 0x1f7d, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x001c, - 0x04e0, 0x0004, 0x0154, 0x014e, 0x014b, 0x0151, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0008, 0x0160, 0x01c5, 0x021c, 0x0251, 0x0328, - 0x034d, 0x035e, 0x0373, 0x0002, 0x0163, 0x0194, 0x0003, 0x0167, - // Entry 426C0 - 426FF - 0x0176, 0x0185, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, 0x2ccc, - 0x2c99, 0x2cba, 0x2cd1, 0x2cd6, 0x2cdb, 0x238d, 0x2447, 0x2ca7, - 0x2cac, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29a5, 0x29d1, 0x29a9, - 0x29d1, 0x29cf, 0x29cf, 0x29a9, 0x29bb, 0x29af, 0x29b1, 0x29b3, - 0x000d, 0x0039, 0xffff, 0x00e5, 0x00ed, 0x7114, 0x7119, 0x711f, - 0x7123, 0x7128, 0x712d, 0x7135, 0x713f, 0x7147, 0x7150, 0x0003, - 0x0198, 0x01a7, 0x01b6, 0x000d, 0x0015, 0xffff, 0x000b, 0x2c8f, - 0x2ce0, 0x2c99, 0x2ce5, 0x2ce9, 0x2cee, 0x2cdb, 0x238d, 0x2447, - // Entry 42700 - 4273F - 0x2ca7, 0x2cac, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29a5, 0x29d1, - 0x29a9, 0x29d1, 0x29cf, 0x29cf, 0x29a9, 0x29bb, 0x29af, 0x29b1, - 0x29b3, 0x000d, 0x0039, 0xffff, 0x00e5, 0x00ed, 0x7159, 0x7119, - 0x715e, 0x7162, 0x7167, 0x712d, 0x7135, 0x713f, 0x7147, 0x7150, - 0x0002, 0x01c8, 0x01f2, 0x0005, 0x01ce, 0x01d7, 0x01e9, 0x0000, - 0x01e0, 0x0007, 0x005d, 0x00d6, 0x00db, 0x00e0, 0x00e4, 0x00e8, - 0x00ed, 0x00f1, 0x0007, 0x0017, 0x29bb, 0x29d1, 0x29d3, 0x29af, - 0x29d3, 0x29a5, 0x29dd, 0x0007, 0x005d, 0x00f6, 0x00fa, 0x00fe, - // Entry 42740 - 4277F - 0x0101, 0x0104, 0x0107, 0x010a, 0x0007, 0x005d, 0x010e, 0x0116, - 0x011e, 0x0125, 0x012c, 0x0134, 0x013b, 0x0005, 0x01f8, 0x0201, - 0x0213, 0x0000, 0x020a, 0x0007, 0x005d, 0x00d6, 0x00db, 0x00e0, - 0x00e4, 0x00e8, 0x00ed, 0x00f1, 0x0007, 0x0017, 0x29bb, 0x29d1, - 0x29d3, 0x29af, 0x29d3, 0x29a5, 0x29dd, 0x0007, 0x005d, 0x00f6, - 0x00fa, 0x00fe, 0x0101, 0x0104, 0x0107, 0x010a, 0x0007, 0x005d, - 0x010e, 0x0116, 0x011e, 0x0125, 0x012c, 0x0134, 0x013b, 0x0002, - 0x021f, 0x0238, 0x0003, 0x0223, 0x022a, 0x0231, 0x0005, 0x0000, - // Entry 42780 - 427BF - 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x005d, 0xffff, 0x0143, - 0x0151, 0x015f, 0x016d, 0x0003, 0x023c, 0x0243, 0x024a, 0x0005, - 0x0000, 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x005d, 0xffff, - 0x0143, 0x0151, 0x015f, 0x016d, 0x0002, 0x0254, 0x02be, 0x0003, - 0x0258, 0x027a, 0x029c, 0x0009, 0x0265, 0x0268, 0x0262, 0x026b, - 0x0271, 0x0274, 0x0277, 0x0000, 0x026e, 0x0001, 0x004b, 0x0837, - // Entry 427C0 - 427FF - 0x0001, 0x005d, 0x017b, 0x0001, 0x005d, 0x017e, 0x0001, 0x005d, - 0x0181, 0x0001, 0x005d, 0x018b, 0x0001, 0x005d, 0x0196, 0x0001, - 0x005d, 0x01a2, 0x0001, 0x005d, 0x01af, 0x0009, 0x0287, 0x028a, - 0x0284, 0x028d, 0x0293, 0x0296, 0x0299, 0x0000, 0x0290, 0x0001, - 0x004b, 0x0808, 0x0001, 0x005d, 0x017b, 0x0001, 0x005d, 0x017e, - 0x0001, 0x005d, 0x0181, 0x0001, 0x005d, 0x018b, 0x0001, 0x005d, - 0x0196, 0x0001, 0x005d, 0x01a2, 0x0001, 0x005d, 0x01af, 0x0009, - 0x02a9, 0x02ac, 0x02a6, 0x02af, 0x02b5, 0x02b8, 0x02bb, 0x0000, - // Entry 42800 - 4283F - 0x02b2, 0x0001, 0x004b, 0x0837, 0x0001, 0x005d, 0x017b, 0x0001, - 0x005d, 0x017e, 0x0001, 0x005d, 0x01ba, 0x0001, 0x005d, 0x01c7, - 0x0001, 0x005d, 0x01d8, 0x0001, 0x005d, 0x01a2, 0x0001, 0x005d, - 0x01af, 0x0003, 0x02c2, 0x02e4, 0x0306, 0x0009, 0x02cf, 0x02d2, - 0x02cc, 0x02d5, 0x02db, 0x02de, 0x02e1, 0x0000, 0x02d8, 0x0001, - 0x004b, 0x0837, 0x0001, 0x004e, 0x01b0, 0x0001, 0x004e, 0x01b5, - 0x0001, 0x005d, 0x01ea, 0x0001, 0x005d, 0x01f1, 0x0001, 0x005d, - 0x01f8, 0x0001, 0x005d, 0x0200, 0x0001, 0x004b, 0x0822, 0x0009, - // Entry 42840 - 4287F - 0x02f1, 0x02f4, 0x02ee, 0x02f7, 0x02fd, 0x0300, 0x0303, 0x0000, - 0x02fa, 0x0001, 0x004b, 0x0808, 0x0001, 0x005d, 0x017b, 0x0001, - 0x005d, 0x017e, 0x0001, 0x0033, 0x04b6, 0x0001, 0x005d, 0x01f1, - 0x0001, 0x005d, 0x01f8, 0x0001, 0x005d, 0x0200, 0x0001, 0x004b, - 0x0822, 0x0009, 0x0313, 0x0316, 0x0310, 0x0319, 0x031f, 0x0322, - 0x0325, 0x0000, 0x031c, 0x0001, 0x004b, 0x0837, 0x0001, 0x005d, - 0x0207, 0x0001, 0x0015, 0x017e, 0x0001, 0x005d, 0x01ea, 0x0001, - 0x005d, 0x0207, 0x0001, 0x0015, 0x017e, 0x0001, 0x005d, 0x0200, - // Entry 42880 - 428BF - 0x0001, 0x004b, 0x0822, 0x0003, 0x0337, 0x0342, 0x032c, 0x0002, - 0x032f, 0x0333, 0x0002, 0x005d, 0x0212, 0x0242, 0x0002, 0x005d, - 0x0220, 0x0250, 0x0002, 0x033a, 0x033e, 0x0002, 0x0015, 0x0194, - 0x01b8, 0x0002, 0x0015, 0x01d7, 0x01de, 0x0002, 0x0345, 0x0349, - 0x0002, 0x0015, 0x0194, 0x01b8, 0x0002, 0x0015, 0x01e7, 0x01ef, - 0x0004, 0x035b, 0x0355, 0x0352, 0x0358, 0x0001, 0x0001, 0x1fa2, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0000, - 0x051c, 0x0004, 0x036f, 0x0367, 0x0363, 0x036b, 0x0002, 0x004e, - // Entry 428C0 - 428FF - 0x01ba, 0x01ce, 0x0002, 0x0000, 0x0532, 0x38be, 0x0002, 0x0000, - 0x053d, 0x38c9, 0x0002, 0x0000, 0x0546, 0x38d2, 0x0004, 0x0381, - 0x037b, 0x0378, 0x037e, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x038d, 0x0000, 0x0000, 0x0000, 0x03d8, 0x0000, 0x0000, 0x9006, - 0x0002, 0x0390, 0x03b4, 0x0003, 0x0394, 0x0000, 0x03a4, 0x000e, - 0x005d, 0x02a2, 0x026c, 0x0274, 0x027d, 0x0285, 0x028c, 0x0294, - 0x029c, 0x02ab, 0x02b2, 0x02b9, 0x02c0, 0x02c8, 0x02cb, 0x000e, - // Entry 42900 - 4293F - 0x005d, 0x02a2, 0x026c, 0x0274, 0x027d, 0x0285, 0x028c, 0x0294, - 0x029c, 0x02ab, 0x02b2, 0x02b9, 0x02c0, 0x02c8, 0x02cb, 0x0003, - 0x03b8, 0x0000, 0x03c8, 0x000e, 0x005d, 0x0307, 0x02d1, 0x02d9, - 0x02e2, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0310, 0x0317, 0x031e, - 0x0325, 0x032d, 0x0330, 0x000e, 0x005d, 0x0307, 0x02d1, 0x02d9, - 0x02e2, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0310, 0x0317, 0x031e, - 0x0325, 0x032d, 0x0330, 0x0001, 0x03da, 0x0001, 0x03dc, 0x0001, - 0x0000, 0x04ef, 0x0008, 0x03e8, 0x0000, 0x0000, 0x0000, 0x042f, - // Entry 42940 - 4297F - 0x0000, 0x0000, 0x9006, 0x0002, 0x03eb, 0x040d, 0x0003, 0x03ef, - 0x0000, 0x03fe, 0x000d, 0x0025, 0xffff, 0x0557, 0x055f, 0x0569, - 0x0573, 0x057d, 0x0587, 0x0592, 0x059a, 0x05a2, 0x05b1, 0x054a, - 0x05b7, 0x000d, 0x0025, 0xffff, 0x0557, 0x055f, 0x0569, 0x0573, - 0x057d, 0x0587, 0x0592, 0x059a, 0x05a2, 0x05b1, 0x054a, 0x05b7, - 0x0003, 0x0411, 0x0000, 0x0420, 0x000d, 0x0000, 0xffff, 0x05a2, - 0x3f05, 0x3f0f, 0x3f19, 0x3f23, 0x3f2d, 0x3f38, 0x3f40, 0x3f48, - 0x3f57, 0x3f5d, 0x3f63, 0x000d, 0x0000, 0xffff, 0x05a2, 0x3f05, - // Entry 42980 - 429BF - 0x3f0f, 0x3f19, 0x3f23, 0x3f2d, 0x3f38, 0x3f40, 0x3f48, 0x3f57, - 0x3f5d, 0x3f63, 0x0003, 0x0438, 0x0000, 0x0433, 0x0001, 0x0435, - 0x0001, 0x005d, 0x0336, 0x0001, 0x043a, 0x0001, 0x0025, 0x05c0, - 0x0008, 0x0446, 0x0000, 0x0000, 0x0000, 0x046f, 0x0000, 0x0000, - 0x9006, 0x0002, 0x0449, 0x045c, 0x0003, 0x0000, 0x0000, 0x044d, - 0x000d, 0x0022, 0xffff, 0x089e, 0x2ff5, 0x08ad, 0x08be, 0x30af, - 0x30bc, 0x3021, 0x30cc, 0x3030, 0x3038, 0x30d6, 0x30e4, 0x0003, - 0x0000, 0x0000, 0x0460, 0x000d, 0x0000, 0xffff, 0x0657, 0x3f6c, - // Entry 429C0 - 429FF - 0x3f72, 0x3f83, 0x3f94, 0x3fa1, 0x3fb1, 0x3fb7, 0x3fc1, 0x06a3, - 0x3fc9, 0x3fd7, 0x0001, 0x0471, 0x0001, 0x0473, 0x0001, 0x0000, - 0x06c8, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x047f, 0x0000, - 0x0000, 0x0571, 0x0001, 0x0481, 0x0001, 0x0483, 0x00ec, 0x0000, - 0x06cb, 0x06dd, 0x06f1, 0x0705, 0x0719, 0x072c, 0x073e, 0x0750, - 0x0762, 0x0775, 0x23dd, 0x3fe3, 0x3ffe, 0x401a, 0x4034, 0x0806, - 0x081e, 0x0830, 0x0843, 0x0857, 0x086a, 0x087d, 0x0891, 0x08a3, - 0x08b5, 0x2649, 0x265b, 0x08ed, 0x266e, 0x0914, 0x2681, 0x093a, - // Entry 42A00 - 42A3F - 0x094e, 0x095f, 0x2695, 0x0985, 0x0999, 0x09ae, 0x09c2, 0x09d3, - 0x09e6, 0x09f7, 0x2cc3, 0x0a20, 0x0a33, 0x0a46, 0x0a58, 0x2cf9, - 0x0a7b, 0x0a8c, 0x0aa2, 0x0ab7, 0x0acc, 0x0ae1, 0x0af6, 0x0b0b, - 0x0b1e, 0x0b32, 0x0b48, 0x0b60, 0x0b77, 0x0b8d, 0x0ba2, 0x0bb6, - 0x0bcb, 0x0be1, 0x0bf6, 0x0c0b, 0x26ca, 0x0c37, 0x0c4c, 0x26dd, - 0x0c74, 0x26f0, 0x0c9f, 0x0cb3, 0x0cc8, 0x0cdd, 0x0cf2, 0x0d07, - 0x2f3a, 0x271a, 0x0d47, 0x0d5b, 0x0d6f, 0x0d85, 0x272d, 0x0db0, - 0x0dc3, 0x2740, 0x0def, 0x0e04, 0x0e19, 0x2755, 0x0e43, 0x0e57, - // Entry 42A40 - 42A7F - 0x0e6d, 0x0e80, 0x0e96, 0x305e, 0x0ec1, 0x0ed4, 0x0ee9, 0x0efd, - 0x0f12, 0x0f26, 0x277c, 0x0f50, 0x0f64, 0x0f7a, 0x0f8f, 0x0fa4, - 0x3158, 0x27a6, 0x0fe6, 0x0ffd, 0x27bc, 0x1028, 0x103c, 0x1051, - 0x1066, 0x107a, 0x108e, 0x27d3, 0x10b8, 0x10cf, 0x10e3, 0x404e, - 0x1110, 0x1124, 0x1139, 0x114d, 0x1163, 0x1178, 0x118d, 0x4062, - 0x11ba, 0x32e4, 0x11e7, 0x11fb, 0x120f, 0x1224, 0x1238, 0x124d, - 0x1262, 0x1276, 0x280f, 0x12a0, 0x12b5, 0x12ca, 0x12df, 0x2823, - 0x1308, 0x2839, 0x1335, 0x134b, 0x2454, 0x1374, 0x1388, 0x139e, - // Entry 42A80 - 42ABF - 0x13b4, 0x13ca, 0x13e0, 0x13f4, 0x140b, 0x141f, 0x1435, 0x144b, - 0x145f, 0x1473, 0x1489, 0x149c, 0x14b3, 0x14c8, 0x34e1, 0x14f5, - 0x150b, 0x1522, 0x1538, 0x154f, 0x1565, 0x157b, 0x158f, 0x15a4, - 0x15bb, 0x15d0, 0x15e4, 0x15f8, 0x160d, 0x1621, 0x2861, 0x164d, - 0x1661, 0x1676, 0x168a, 0x16a0, 0x16b6, 0x2876, 0x362d, 0x16f7, - 0x170c, 0x289d, 0x28b2, 0x174a, 0x175e, 0x1773, 0x28c9, 0x179b, - 0x17b1, 0x17c7, 0x17db, 0x17f2, 0x1808, 0x181d, 0x1832, 0x3737, - 0x2468, 0x1874, 0x3776, 0x189e, 0x18b3, 0x18c8, 0x18dd, 0x18f1, - // Entry 42AC0 - 42AFF - 0x1906, 0x191b, 0x192f, 0x1942, 0x37c5, 0x196d, 0x1983, 0x1997, - 0x2915, 0x291b, 0x2923, 0x292a, 0x0004, 0x057f, 0x0579, 0x0576, - 0x057c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x058b, 0x0000, - 0x0000, 0x0000, 0x05d2, 0x0000, 0x0000, 0x9006, 0x0002, 0x058e, - 0x05b0, 0x0003, 0x0592, 0x0000, 0x05a1, 0x000d, 0x004b, 0xffff, - 0x0936, 0x0940, 0x28ff, 0x0954, 0x2908, 0x095f, 0x0969, 0x2910, - 0x2917, 0x0978, 0x097c, 0x0983, 0x000d, 0x004b, 0xffff, 0x0936, - // Entry 42B00 - 42B3F - 0x0940, 0x28ff, 0x0954, 0x2908, 0x095f, 0x0969, 0x2910, 0x2917, - 0x0978, 0x097c, 0x0983, 0x0003, 0x05b4, 0x0000, 0x05c3, 0x000d, - 0x0000, 0xffff, 0x19c9, 0x19d3, 0x4077, 0x4080, 0x4084, 0x19f2, - 0x408c, 0x4091, 0x4098, 0x1a0b, 0x409e, 0x40a5, 0x000d, 0x0000, - 0xffff, 0x19c9, 0x19d3, 0x4077, 0x4080, 0x4084, 0x19f2, 0x408c, - 0x4091, 0x4098, 0x1a0b, 0x409e, 0x40a5, 0x0001, 0x05d4, 0x0001, - 0x05d6, 0x0001, 0x0000, 0x1a1d, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x05e2, 0x0000, 0x0000, 0x9006, 0x0001, 0x05e4, 0x0001, - // Entry 42B40 - 42B7F - 0x05e6, 0x0002, 0x005d, 0x0340, 0x034b, 0x0040, 0x062b, 0x0000, - 0x0000, 0x0630, 0x0647, 0x065e, 0x0675, 0x068c, 0x06a3, 0x06ba, - 0x06d1, 0x06e8, 0x06ff, 0x071a, 0x0735, 0x0000, 0x0000, 0x0000, - 0x0750, 0x0769, 0x0782, 0x0000, 0x0000, 0x0000, 0x079b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x07a0, 0x07b4, 0x07c8, 0x07dc, - 0x07f0, 0x0804, 0x0818, 0x082c, 0x0840, 0x0854, 0x0868, 0x087c, - 0x0890, 0x08a4, 0x08b8, 0x08cc, 0x08e0, 0x08f4, 0x0908, 0x091c, - 0x0930, 0x0000, 0x0944, 0x0000, 0x0949, 0x095f, 0x0975, 0x098b, - // Entry 42B80 - 42BBF - 0x09a1, 0x09b7, 0x09cd, 0x09e3, 0x09f9, 0x0a0f, 0x0001, 0x062d, - 0x0001, 0x0001, 0x0040, 0x0003, 0x0634, 0x0637, 0x063c, 0x0001, - 0x0015, 0x024b, 0x0003, 0x005d, 0x0350, 0x0357, 0x035d, 0x0002, - 0x063f, 0x0643, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, 0x005d, - 0x0368, 0x0368, 0x0003, 0x064b, 0x064e, 0x0653, 0x0001, 0x0015, - 0x024b, 0x0003, 0x005d, 0x0350, 0x0357, 0x035d, 0x0002, 0x0656, - 0x065a, 0x0002, 0x0015, 0x026b, 0x026b, 0x0002, 0x005d, 0x0368, - 0x0368, 0x0003, 0x0662, 0x0665, 0x066a, 0x0001, 0x0015, 0x024b, - // Entry 42BC0 - 42BFF - 0x0003, 0x005d, 0x0350, 0x0357, 0x035d, 0x0002, 0x066d, 0x0671, - 0x0002, 0x004b, 0x09ab, 0x09ab, 0x0002, 0x005d, 0x037b, 0x037b, - 0x0003, 0x0679, 0x067c, 0x0681, 0x0001, 0x000d, 0x03b7, 0x0003, - 0x005d, 0x0386, 0x0397, 0x03a5, 0x0002, 0x0684, 0x0688, 0x0002, - 0x0015, 0x02b4, 0x02b4, 0x0002, 0x005d, 0x03b4, 0x03b4, 0x0003, - 0x0690, 0x0693, 0x0698, 0x0001, 0x000d, 0x043e, 0x0003, 0x005d, - 0x03cb, 0x03d6, 0x03e0, 0x0002, 0x069b, 0x069f, 0x0002, 0x004b, - 0x0a0d, 0x0a0d, 0x0002, 0x005d, 0x03eb, 0x03eb, 0x0003, 0x06a7, - // Entry 42C00 - 42C3F - 0x06aa, 0x06af, 0x0001, 0x000d, 0x043e, 0x0003, 0x005d, 0x03cb, - 0x03d6, 0x03e0, 0x0002, 0x06b2, 0x06b6, 0x0002, 0x002e, 0x156e, - 0x156e, 0x0002, 0x005d, 0x03fe, 0x03fe, 0x0003, 0x06be, 0x06c1, - 0x06c6, 0x0001, 0x004e, 0x01e2, 0x0003, 0x005d, 0x0408, 0x0418, - 0x0425, 0x0002, 0x06c9, 0x06cd, 0x0002, 0x005d, 0x0441, 0x0433, - 0x0002, 0x005d, 0x0467, 0x0451, 0x0003, 0x06d5, 0x06d8, 0x06dd, - 0x0001, 0x0000, 0x3a8d, 0x0003, 0x005d, 0x047f, 0x048c, 0x0498, - 0x0002, 0x06e0, 0x06e4, 0x0002, 0x005d, 0x04a5, 0x04a5, 0x0002, - // Entry 42C40 - 42C7F - 0x005d, 0x04b2, 0x04b2, 0x0003, 0x06ec, 0x06ef, 0x06f4, 0x0001, - 0x005d, 0x00db, 0x0003, 0x005d, 0x047f, 0x048c, 0x0498, 0x0002, - 0x06f7, 0x06fb, 0x0002, 0x005d, 0x04c7, 0x04c7, 0x0002, 0x005d, - 0x04d2, 0x04d2, 0x0004, 0x0704, 0x0707, 0x070c, 0x0717, 0x0001, - 0x005d, 0x04de, 0x0003, 0x005d, 0x04e4, 0x04f2, 0x04fe, 0x0002, - 0x070f, 0x0713, 0x0002, 0x005d, 0x0518, 0x050b, 0x0002, 0x005d, - 0x053b, 0x0526, 0x0001, 0x005d, 0x0551, 0x0004, 0x071f, 0x0722, - 0x0727, 0x0732, 0x0001, 0x0000, 0x1f94, 0x0003, 0x005d, 0x0561, - // Entry 42C80 - 42CBF - 0x056b, 0x0574, 0x0002, 0x072a, 0x072e, 0x0002, 0x005d, 0x057e, - 0x057e, 0x0002, 0x005d, 0x0588, 0x0588, 0x0001, 0x005d, 0x0551, - 0x0004, 0x073a, 0x073d, 0x0742, 0x074d, 0x0001, 0x0000, 0x1f94, - 0x0003, 0x005d, 0x0561, 0x056b, 0x0574, 0x0002, 0x0745, 0x0749, - 0x0002, 0x005d, 0x059a, 0x059a, 0x0002, 0x005d, 0x05a2, 0x05a2, - 0x0001, 0x005d, 0x0551, 0x0003, 0x0754, 0x0757, 0x075e, 0x0001, - 0x0051, 0x005f, 0x0005, 0x005d, 0x05b7, 0x05be, 0x05c4, 0x05ab, - 0x05cd, 0x0002, 0x0761, 0x0765, 0x0002, 0x0015, 0x2cf3, 0x04bc, - // Entry 42CC0 - 42CFF - 0x0002, 0x005d, 0x05ee, 0x05db, 0x0003, 0x076d, 0x0770, 0x0777, - 0x0001, 0x0051, 0x005f, 0x0005, 0x005d, 0x05b7, 0x05be, 0x05c4, - 0x05ab, 0x05cd, 0x0002, 0x077a, 0x077e, 0x0002, 0x005d, 0x0603, - 0x0603, 0x0002, 0x005d, 0x061d, 0x060c, 0x0003, 0x0786, 0x0789, - 0x0790, 0x0001, 0x0051, 0x005f, 0x0005, 0x005d, 0x05b7, 0x05be, - 0x05c4, 0x05ab, 0x05cd, 0x0002, 0x0793, 0x0797, 0x0002, 0x0000, - 0x1b48, 0x1b48, 0x0002, 0x005d, 0x0630, 0x0630, 0x0001, 0x079d, - 0x0001, 0x005d, 0x0639, 0x0003, 0x0000, 0x07a4, 0x07a9, 0x0003, - // Entry 42D00 - 42D3F - 0x005d, 0x0642, 0x0658, 0x066c, 0x0002, 0x07ac, 0x07b0, 0x0002, - 0x005d, 0x0690, 0x0681, 0x0002, 0x005d, 0x06b8, 0x06a1, 0x0003, - 0x0000, 0x07b8, 0x07bd, 0x0003, 0x005d, 0x06d1, 0x06e5, 0x06f7, - 0x0002, 0x07c0, 0x07c4, 0x0002, 0x005d, 0x070a, 0x070a, 0x0002, - 0x005d, 0x0717, 0x0717, 0x0003, 0x0000, 0x07cc, 0x07d1, 0x0003, - 0x005d, 0x072a, 0x0737, 0x0743, 0x0002, 0x07d4, 0x07d8, 0x0002, - 0x005d, 0x0750, 0x0750, 0x0002, 0x005d, 0x075a, 0x075a, 0x0003, - 0x0000, 0x07e0, 0x07e5, 0x0003, 0x005d, 0x0766, 0x077c, 0x0790, - // Entry 42D40 - 42D7F - 0x0002, 0x07e8, 0x07ec, 0x0002, 0x005d, 0x07b4, 0x07a5, 0x0002, - 0x005d, 0x07dc, 0x07c5, 0x0003, 0x0000, 0x07f4, 0x07f9, 0x0003, - 0x005d, 0x07f5, 0x0809, 0x081b, 0x0002, 0x07fc, 0x0800, 0x0002, - 0x005d, 0x082e, 0x082e, 0x0002, 0x005d, 0x083c, 0x083c, 0x0003, - 0x0000, 0x0808, 0x080d, 0x0003, 0x005d, 0x047f, 0x048c, 0x0498, - 0x0002, 0x0810, 0x0814, 0x0002, 0x005d, 0x0850, 0x0850, 0x0002, - 0x005d, 0x085a, 0x085a, 0x0003, 0x0000, 0x081c, 0x0821, 0x0003, - 0x005d, 0x0867, 0x087c, 0x088f, 0x0002, 0x0824, 0x0828, 0x0002, - // Entry 42D80 - 42DBF - 0x005d, 0x08b1, 0x08a3, 0x0002, 0x005d, 0x08d7, 0x08c1, 0x0003, - 0x0000, 0x0830, 0x0835, 0x0003, 0x005d, 0x08ef, 0x0902, 0x0913, - 0x0002, 0x0838, 0x083c, 0x0002, 0x005d, 0x0925, 0x0925, 0x0002, - 0x005d, 0x0931, 0x0931, 0x0003, 0x0000, 0x0844, 0x0849, 0x0003, - 0x005d, 0x0943, 0x094f, 0x095a, 0x0002, 0x084c, 0x0850, 0x0002, - 0x005d, 0x0966, 0x0966, 0x0002, 0x005d, 0x096f, 0x096f, 0x0003, - 0x0000, 0x0858, 0x085d, 0x0003, 0x005d, 0x097a, 0x098f, 0x09a2, - 0x0002, 0x0860, 0x0864, 0x0002, 0x0015, 0x2d00, 0x0744, 0x0002, - // Entry 42DC0 - 42DFF - 0x005d, 0x09cc, 0x09b6, 0x0003, 0x0000, 0x086c, 0x0871, 0x0003, - 0x005d, 0x09e4, 0x09f7, 0x0a08, 0x0002, 0x0874, 0x0878, 0x0002, - 0x004b, 0x0ddd, 0x0ddd, 0x0002, 0x005d, 0x0a1a, 0x0a1a, 0x0003, - 0x0000, 0x0880, 0x0885, 0x0003, 0x005d, 0x0a2c, 0x0a38, 0x0a43, - 0x0002, 0x0888, 0x088c, 0x0002, 0x005d, 0x0a4f, 0x0a4f, 0x0002, - 0x005d, 0x0a58, 0x0a58, 0x0003, 0x0000, 0x0894, 0x0899, 0x0003, - 0x005d, 0x0a63, 0x0a79, 0x0a8d, 0x0002, 0x089c, 0x08a0, 0x0002, - 0x0015, 0x2d10, 0x07f5, 0x0002, 0x005d, 0x0ab9, 0x0aa2, 0x0003, - // Entry 42E00 - 42E3F - 0x0000, 0x08a8, 0x08ad, 0x0003, 0x005d, 0x0ad2, 0x0ae6, 0x0af8, - 0x0002, 0x08b0, 0x08b4, 0x0002, 0x005d, 0x0b0b, 0x0b0b, 0x0002, - 0x005d, 0x0b18, 0x0b18, 0x0003, 0x0000, 0x08bc, 0x08c1, 0x0003, - 0x005d, 0x0b2b, 0x0b38, 0x0b44, 0x0002, 0x08c4, 0x08c8, 0x0002, - 0x005d, 0x0b51, 0x0b51, 0x0002, 0x005d, 0x0b5b, 0x0b5b, 0x0003, - 0x0000, 0x08d0, 0x08d5, 0x0003, 0x005d, 0x0b67, 0x0b7c, 0x0b8f, - 0x0002, 0x08d8, 0x08dc, 0x0002, 0x0015, 0x2d21, 0x08a7, 0x0002, - 0x005d, 0x0bb9, 0x0ba3, 0x0003, 0x0000, 0x08e4, 0x08e9, 0x0003, - // Entry 42E40 - 42E7F - 0x005d, 0x0bd1, 0x0be4, 0x0bf5, 0x0002, 0x08ec, 0x08f0, 0x0002, - 0x004b, 0x0f38, 0x0f38, 0x0002, 0x005d, 0x0c19, 0x0c07, 0x0003, - 0x0000, 0x08f8, 0x08fd, 0x0003, 0x005d, 0x0c2c, 0x0c38, 0x0c43, - 0x0002, 0x0900, 0x0904, 0x0002, 0x005d, 0x0c4f, 0x0c4f, 0x0002, - 0x005d, 0x0c58, 0x0c58, 0x0003, 0x0000, 0x090c, 0x0911, 0x0003, - 0x005d, 0x0c63, 0x0c79, 0x0c8d, 0x0002, 0x0914, 0x0918, 0x0002, - 0x005d, 0x0cb1, 0x0ca2, 0x0002, 0x005d, 0x0cd9, 0x0cc2, 0x0003, - 0x0000, 0x0920, 0x0925, 0x0003, 0x005d, 0x0cf2, 0x0d06, 0x0d18, - // Entry 42E80 - 42EBF - 0x0002, 0x0928, 0x092c, 0x0002, 0x005d, 0x0d2b, 0x0d2b, 0x0002, - 0x005d, 0x0d38, 0x0d38, 0x0003, 0x0000, 0x0934, 0x0939, 0x0003, - 0x005d, 0x0d4b, 0x0d58, 0x0d64, 0x0002, 0x093c, 0x0940, 0x0002, - 0x005d, 0x0d71, 0x0d71, 0x0002, 0x005d, 0x0d7b, 0x0d7b, 0x0001, - 0x0946, 0x0001, 0x005d, 0x0d87, 0x0003, 0x094d, 0x0950, 0x0954, - 0x0001, 0x005d, 0x0d8d, 0x0002, 0x005d, 0xffff, 0x0d93, 0x0002, - 0x0957, 0x095b, 0x0002, 0x005d, 0x0dac, 0x0d9f, 0x0002, 0x005d, - 0x0dcf, 0x0dba, 0x0003, 0x0963, 0x0966, 0x096a, 0x0001, 0x005d, - // Entry 42EC0 - 42EFF - 0x0de5, 0x0002, 0x005d, 0xffff, 0x0d93, 0x0002, 0x096d, 0x0971, - 0x0002, 0x005d, 0x0de9, 0x0de9, 0x0002, 0x005d, 0x0df4, 0x0df4, - 0x0003, 0x0979, 0x097c, 0x0980, 0x0001, 0x0000, 0x2143, 0x0002, - 0x005d, 0xffff, 0x0d93, 0x0002, 0x0983, 0x0987, 0x0002, 0x0000, - 0x1d76, 0x1d76, 0x0002, 0x005d, 0x0e07, 0x0e07, 0x0003, 0x098f, - 0x0992, 0x0996, 0x0001, 0x0010, 0x0b77, 0x0002, 0x005d, 0xffff, - 0x0e10, 0x0002, 0x0999, 0x099d, 0x0002, 0x0015, 0x2d31, 0x0a65, - 0x0002, 0x005d, 0x0e31, 0x0e1c, 0x0003, 0x09a5, 0x09a8, 0x09ac, - // Entry 42F00 - 42F3F - 0x0001, 0x0041, 0x092f, 0x0002, 0x005d, 0xffff, 0x0e10, 0x0002, - 0x09af, 0x09b3, 0x0002, 0x005d, 0x0e48, 0x0e48, 0x0002, 0x005d, - 0x0e54, 0x0e54, 0x0003, 0x09bb, 0x09be, 0x09c2, 0x0001, 0x0000, - 0x3a8d, 0x0002, 0x005d, 0xffff, 0x0e10, 0x0002, 0x09c5, 0x09c9, - 0x0002, 0x0000, 0x1d97, 0x1d97, 0x0002, 0x005d, 0x0e68, 0x0e68, - 0x0003, 0x09d1, 0x09d4, 0x09d8, 0x0001, 0x0015, 0x0ad8, 0x0002, - 0x0015, 0xffff, 0x0adf, 0x0002, 0x09db, 0x09df, 0x0002, 0x0015, - 0x0af0, 0x0ae2, 0x0002, 0x005d, 0x0e89, 0x0e73, 0x0003, 0x09e7, - // Entry 42F40 - 42F7F - 0x09ea, 0x09ee, 0x0001, 0x001f, 0x027b, 0x0002, 0x0015, 0xffff, - 0x0adf, 0x0002, 0x09f1, 0x09f5, 0x0002, 0x005d, 0x0ead, 0x0ea1, - 0x0002, 0x005d, 0x0eb8, 0x0eb8, 0x0003, 0x09fd, 0x0a00, 0x0a04, - 0x0001, 0x0000, 0x2002, 0x0002, 0x0015, 0xffff, 0x0adf, 0x0002, - 0x0a07, 0x0a0b, 0x0002, 0x0026, 0x00bf, 0x00bf, 0x0002, 0x005d, - 0x0ecc, 0x0ecc, 0x0001, 0x0a11, 0x0001, 0x005d, 0x0ed5, 0x0004, - 0x0a19, 0x0a1e, 0x0a23, 0x0a48, 0x0003, 0x001c, 0x0baf, 0x22b9, - 0x22b5, 0x0003, 0x005d, 0x0edd, 0x0ee4, 0x0ef4, 0x0002, 0x0a32, - // Entry 42F80 - 42FBF - 0x0a26, 0x0003, 0x0000, 0x0a2d, 0x0a2a, 0x0001, 0x005d, 0x0f04, - 0x0003, 0x005d, 0xffff, 0x0f1f, 0x0f32, 0x0003, 0x0a36, 0x0a42, - 0x0a3c, 0x0004, 0x005d, 0xffff, 0xffff, 0xffff, 0x0f46, 0x0004, - 0x005d, 0xffff, 0xffff, 0xffff, 0x0f52, 0x0004, 0x005d, 0xffff, - 0xffff, 0xffff, 0x0f64, 0x0002, 0x0c2f, 0x0a4b, 0x0003, 0x0a4f, - 0x0b8f, 0x0aef, 0x009e, 0x005d, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1006, 0x104b, 0x10a3, 0x10d7, 0x1131, 0x1182, 0x11cb, 0x121f, - 0x1249, 0x12c5, 0x1304, 0x1349, 0x1391, 0x13c4, 0x141b, 0x1469, - // Entry 42FC0 - 42FFF - 0x14c6, 0x150b, 0x1553, 0x1598, 0x15c8, 0xffff, 0xffff, 0x1626, - 0xffff, 0x1664, 0xffff, 0x16b0, 0x16e1, 0x1714, 0x1747, 0xffff, - 0xffff, 0x17a0, 0x17dc, 0x1818, 0xffff, 0xffff, 0xffff, 0x1879, - 0xffff, 0x18bd, 0x1908, 0xffff, 0x1959, 0x199e, 0x19e9, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1a5a, 0xffff, 0xffff, 0x1aa6, 0x1af1, - 0xffff, 0xffff, 0x0f46, 0x1b8b, 0x1bbf, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1c66, 0x1c93, 0x1cc4, 0x1cfa, 0x1d2a, - 0xffff, 0xffff, 0x1d86, 0xffff, 0x1dc3, 0xffff, 0xffff, 0x1e2b, - // Entry 43000 - 4303F - 0xffff, 0x1e96, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f04, 0xffff, - 0x1f45, 0x1f96, 0x1ff4, 0x2031, 0xffff, 0xffff, 0xffff, 0x2085, - 0x20cb, 0x210a, 0xffff, 0xffff, 0x2162, 0x21cb, 0x2208, 0x2230, - 0xffff, 0xffff, 0x2288, 0x22c7, 0x22fa, 0xffff, 0x2340, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x240e, 0x2442, 0x246c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x24fd, 0xffff, - 0xffff, 0x2546, 0xffff, 0x257a, 0xffff, 0x25ba, 0x25f6, 0x2629, - 0xffff, 0x266b, 0x26a8, 0xffff, 0xffff, 0xffff, 0x2717, 0x2748, - // Entry 43040 - 4307F - 0xffff, 0xffff, 0x0f76, 0x1079, 0x1271, 0x1298, 0xffff, 0xffff, - 0x1e62, 0x23c4, 0x009e, 0x005d, 0x0fc1, 0x0fce, 0x0fe3, 0x0ff5, - 0x1019, 0x1055, 0x10af, 0x10f1, 0x1148, 0x1195, 0x11e3, 0x1229, - 0x1251, 0x12d6, 0x1317, 0x135d, 0x139e, 0x13dd, 0x1431, 0x1484, - 0x14d9, 0x151f, 0x1566, 0x15a4, 0x15da, 0x160a, 0x1617, 0x1632, - 0x165a, 0x1671, 0x16a4, 0x16bb, 0x16ee, 0x1721, 0x1755, 0x1781, - 0x178d, 0x17b0, 0x17ec, 0x1824, 0x1848, 0x1851, 0x1868, 0x1884, - 0x18ac, 0x18d2, 0x191a, 0x194a, 0x196c, 0x19b3, 0x19f1, 0x1a11, - // Entry 43080 - 430BF - 0x1a23, 0x1a41, 0x1a4f, 0x1a67, 0x1a8d, 0x1a99, 0x1abb, 0x1b07, - 0x1b47, 0x1b59, 0x1b63, 0x1b97, 0x1bc8, 0x1bea, 0x1bf5, 0x1c18, - 0x1c29, 0x1c3f, 0x1c52, 0x1c71, 0x1c9e, 0x1cd2, 0x1d06, 0x1d37, - 0x1d5d, 0x1d71, 0x1d93, 0x1db9, 0x1dd2, 0x1e00, 0x1e1b, 0x1e38, - 0x1e89, 0x1ea1, 0x1ec7, 0x1ed5, 0x1ee3, 0x1ef0, 0x1f11, 0x1f3b, - 0x1f5c, 0x1fae, 0x2003, 0x203b, 0x205f, 0x206d, 0x2076, 0x2097, - 0x20dc, 0x211a, 0x214a, 0x2152, 0x2179, 0x21da, 0x2210, 0x223f, - 0x2269, 0x2272, 0x2299, 0x22d4, 0x2309, 0x2333, 0x235b, 0x23a1, - // Entry 430C0 - 430FF - 0x23ad, 0x23b7, 0x23f7, 0x2403, 0x241a, 0x244c, 0x2479, 0x249f, - 0x24af, 0x24bc, 0x24cf, 0x24df, 0x24ea, 0x24f3, 0x2507, 0x252b, - 0x253b, 0x254f, 0x2571, 0x2588, 0x25b0, 0x25ca, 0x2603, 0x2634, - 0x265a, 0x267a, 0x26b5, 0x26df, 0x26e9, 0x26f9, 0x2722, 0x2759, - 0x1b3f, 0x21b7, 0x0f8b, 0x1083, 0x127a, 0x12a3, 0x169b, 0x1e0e, - 0x1e6b, 0x23d1, 0x009e, 0x005d, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1032, 0x1067, 0x10c3, 0x1111, 0x1165, 0x11b0, 0x1201, 0x1239, - 0x1261, 0x12ed, 0x1330, 0x1377, 0x13b1, 0x13fc, 0x144d, 0x14a5, - // Entry 43100 - 4313F - 0x14f2, 0x1539, 0x157f, 0x15b6, 0x15f2, 0xffff, 0xffff, 0x1646, - 0xffff, 0x1686, 0xffff, 0x16ce, 0x1701, 0x1734, 0x176b, 0xffff, - 0xffff, 0x17c6, 0x1802, 0x1836, 0xffff, 0xffff, 0xffff, 0x1898, - 0xffff, 0x18ed, 0x1932, 0xffff, 0x1985, 0x19ce, 0x1a01, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1a7a, 0xffff, 0xffff, 0x1ad6, 0x1b23, - 0xffff, 0xffff, 0x1b77, 0x1bab, 0x1bd9, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1c82, 0x1cb1, 0x1ce6, 0x1d18, 0x1d4a, - 0xffff, 0xffff, 0x1da6, 0xffff, 0x1de9, 0xffff, 0xffff, 0x1e4d, - // Entry 43140 - 4317F - 0xffff, 0x1eb4, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f26, 0xffff, - 0x1f79, 0x1fd1, 0x201a, 0x204d, 0xffff, 0xffff, 0xffff, 0x20b1, - 0x20f3, 0x2132, 0xffff, 0xffff, 0x2198, 0x21f1, 0x2220, 0x2254, - 0xffff, 0xffff, 0x22b0, 0x22e7, 0x231e, 0xffff, 0x237e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x242e, 0x245c, 0x248c, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2519, 0xffff, - 0xffff, 0x2560, 0xffff, 0x259c, 0xffff, 0x25e0, 0x2616, 0x2647, - 0xffff, 0x2691, 0x26ca, 0xffff, 0xffff, 0xffff, 0x2735, 0x2772, - // Entry 43180 - 431BF - 0xffff, 0xffff, 0x0fa6, 0x1093, 0x1289, 0x12b4, 0xffff, 0xffff, - 0x1e7a, 0x23e4, 0x0003, 0x0c33, 0x0ca2, 0x0c66, 0x0031, 0x001c, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2283, 0x228c, 0xffff, - // Entry 431C0 - 431FF - 0x2295, 0x003a, 0x001c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2283, 0x228c, 0xffff, 0x2295, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x22b5, 0x0031, 0x001c, 0xffff, - // Entry 43200 - 4323F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2287, 0x2290, 0xffff, 0x2299, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0006, 0x0000, 0x0000, 0x0012, 0x0000, - // Entry 43240 - 4327F - 0x0000, 0x0027, 0x0002, 0x0015, 0x001e, 0x0001, 0x0017, 0x0005, - 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0001, 0x0020, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0001, - 0x0029, 0x0001, 0x0005, 0x04ec, 0x0003, 0x0004, 0x0268, 0x0644, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - // Entry 43280 - 432BF - 0x0001, 0x0002, 0x04f7, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, - 0x0132, 0x021b, 0x0235, 0x0246, 0x0257, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0005, 0xffff, 0x0636, - 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x22d8, 0x22dc, - 0x24a9, 0x22e0, 0x21e2, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29a5, - 0x29d1, 0x29a9, 0x29d1, 0x29cf, 0x29cf, 0x29a9, 0x29bb, 0x29af, - // Entry 432C0 - 432FF - 0x29b1, 0x29b3, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x2441, - 0x067d, 0x2386, 0x24ad, 0x2395, 0x239b, 0x2447, 0x23ab, 0x2450, - 0x23ba, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0005, 0xffff, - 0x0636, 0x22cc, 0x22d0, 0x2246, 0x2386, 0x224e, 0x22d4, 0x22d8, - 0x22dc, 0x24a9, 0x22e0, 0x21e2, 0x000d, 0x0017, 0xffff, 0x29cf, - 0x29a5, 0x29d1, 0x29a9, 0x29d1, 0x29cf, 0x29cf, 0x29a9, 0x29bb, - 0x29af, 0x29b1, 0x29b3, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, - 0x2441, 0x067d, 0x2386, 0x24ad, 0x2395, 0x239b, 0x2447, 0x23ab, - // Entry 43300 - 4333F - 0x2450, 0x23ba, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, - 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0005, 0x06d2, 0x24b2, 0x24bb, - 0x24c3, 0x24cc, 0x24d5, 0x24dc, 0x0007, 0x0017, 0x29bb, 0x29d1, - 0x29d3, 0x29d5, 0x29d3, 0x29a5, 0x29bb, 0x0007, 0x0005, 0x06d2, - 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, 0x24dc, 0x0007, 0x0005, - 0x06d2, 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, 0x24dc, 0x0005, - 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0005, 0x06d2, - 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, 0x24dc, 0x0007, 0x0017, - // Entry 43340 - 4337F - 0x29bb, 0x29d1, 0x29d3, 0x29d5, 0x29d3, 0x29a5, 0x29bb, 0x0007, - 0x0005, 0x06d2, 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, 0x24dc, - 0x0007, 0x0005, 0x06d2, 0x24b2, 0x24bb, 0x24c3, 0x24cc, 0x24d5, - 0x24dc, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, - 0x0005, 0x005e, 0xffff, 0x0000, 0x000a, 0x0014, 0x001e, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x005e, - 0xffff, 0x0000, 0x000a, 0x0014, 0x001e, 0x0003, 0x011d, 0x0124, - 0x012b, 0x0005, 0x005e, 0xffff, 0x0000, 0x000a, 0x0014, 0x001e, - // Entry 43380 - 433BF - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x005e, 0xffff, 0x0000, 0x000a, 0x0014, 0x001e, 0x0002, 0x0135, - 0x01a8, 0x0003, 0x0139, 0x015e, 0x0183, 0x0009, 0x0146, 0x014c, - 0x0143, 0x014f, 0x0155, 0x0158, 0x015b, 0x0149, 0x0152, 0x0001, - 0x005e, 0x0028, 0x0001, 0x0000, 0x04ef, 0x0001, 0x005e, 0x003a, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x005e, 0x004d, 0x0001, 0x005e, - 0x0056, 0x0001, 0x005e, 0x005e, 0x0001, 0x005e, 0x0065, 0x0001, - 0x005e, 0x006b, 0x0009, 0x016b, 0x0171, 0x0168, 0x0174, 0x017a, - // Entry 433C0 - 433FF - 0x017d, 0x0180, 0x016e, 0x0177, 0x0001, 0x005e, 0x0028, 0x0001, - 0x0000, 0x2337, 0x0001, 0x005e, 0x003a, 0x0001, 0x0000, 0x233a, - 0x0001, 0x005e, 0x004d, 0x0001, 0x005e, 0x0056, 0x0001, 0x005e, - 0x005e, 0x0001, 0x005e, 0x0065, 0x0001, 0x005e, 0x006b, 0x0009, - 0x0190, 0x0196, 0x018d, 0x0199, 0x019f, 0x01a2, 0x01a5, 0x0193, - 0x019c, 0x0001, 0x005e, 0x0028, 0x0001, 0x005e, 0x0071, 0x0001, - 0x005e, 0x003a, 0x0001, 0x005e, 0x0079, 0x0001, 0x005e, 0x004d, - 0x0001, 0x005e, 0x0056, 0x0001, 0x005e, 0x005e, 0x0001, 0x005e, - // Entry 43400 - 4343F - 0x0065, 0x0001, 0x005e, 0x006b, 0x0003, 0x01ac, 0x01d1, 0x01f6, - 0x0009, 0x01b9, 0x01bf, 0x01b6, 0x01c2, 0x01c8, 0x01cb, 0x01ce, - 0x01bc, 0x01c5, 0x0001, 0x005e, 0x0028, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x005e, 0x003a, 0x0001, 0x0000, 0x04f2, 0x0001, 0x005e, - 0x004d, 0x0001, 0x005e, 0x0056, 0x0001, 0x005e, 0x005e, 0x0001, - 0x005e, 0x0065, 0x0001, 0x005e, 0x006b, 0x0009, 0x01de, 0x01e4, - 0x01db, 0x01e7, 0x01ed, 0x01f0, 0x01f3, 0x01e1, 0x01ea, 0x0001, - 0x005e, 0x0028, 0x0001, 0x0000, 0x2337, 0x0001, 0x005e, 0x003a, - // Entry 43440 - 4347F - 0x0001, 0x0000, 0x233a, 0x0001, 0x005e, 0x004d, 0x0001, 0x005e, - 0x0056, 0x0001, 0x005e, 0x005e, 0x0001, 0x005e, 0x0065, 0x0001, - 0x005e, 0x006b, 0x0009, 0x0203, 0x0209, 0x0200, 0x020c, 0x0212, - 0x0215, 0x0218, 0x0206, 0x020f, 0x0001, 0x005e, 0x0028, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x005e, 0x003a, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x005e, 0x004d, 0x0001, 0x005e, 0x0056, 0x0001, 0x005e, - 0x005e, 0x0001, 0x005e, 0x0065, 0x0001, 0x005e, 0x006b, 0x0003, - 0x022a, 0x0000, 0x021f, 0x0002, 0x0222, 0x0226, 0x0002, 0x0016, - // Entry 43480 - 434BF - 0x01db, 0x01eb, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x022d, - 0x0231, 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0002, 0x0000, 0x04f5, - 0x04f9, 0x0004, 0x0243, 0x023d, 0x023a, 0x0240, 0x0001, 0x0005, - 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0002, 0x0860, 0x0004, 0x0254, 0x024e, 0x024b, 0x0251, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x0265, 0x025f, 0x025c, 0x0262, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry 434C0 - 434FF - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0040, 0x02a9, 0x0000, 0x0000, - 0x02ae, 0x02c5, 0x02d7, 0x02e9, 0x0300, 0x0312, 0x0324, 0x033b, - 0x034d, 0x035f, 0x037a, 0x0390, 0x0000, 0x0000, 0x0000, 0x03a6, - 0x03bf, 0x03d1, 0x0000, 0x0000, 0x0000, 0x03e3, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x03e8, 0x03fc, 0x0410, 0x0424, 0x0438, - 0x044c, 0x0460, 0x0474, 0x0488, 0x049c, 0x04b0, 0x04c4, 0x04d8, - 0x04ec, 0x0500, 0x0514, 0x0528, 0x053c, 0x0550, 0x0564, 0x0578, - 0x0000, 0x058c, 0x0000, 0x0591, 0x05a7, 0x05b9, 0x05cb, 0x05e1, - // Entry 43500 - 4353F - 0x05f3, 0x0605, 0x061b, 0x062d, 0x063f, 0x0001, 0x02ab, 0x0001, - 0x005e, 0x0080, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x005e, - 0x0085, 0x0003, 0x005e, 0x008b, 0x009a, 0x00a4, 0x0002, 0x02bd, - 0x02c1, 0x0002, 0x005e, 0x00c2, 0x00af, 0x0002, 0x005e, 0x00e8, - 0x00d5, 0x0003, 0x02c9, 0x0000, 0x02cc, 0x0001, 0x005e, 0x0085, - 0x0002, 0x02cf, 0x02d3, 0x0002, 0x005e, 0x00c2, 0x00af, 0x0002, - 0x005e, 0x00e8, 0x00d5, 0x0003, 0x02db, 0x0000, 0x02de, 0x0001, - 0x005e, 0x0085, 0x0002, 0x02e1, 0x02e5, 0x0002, 0x005e, 0x00c2, - // Entry 43540 - 4357F - 0x00af, 0x0002, 0x005e, 0x00e8, 0x00d5, 0x0003, 0x02ed, 0x02f0, - 0x02f5, 0x0001, 0x005e, 0x00fc, 0x0003, 0x005e, 0x0101, 0x0119, - 0x012b, 0x0002, 0x02f8, 0x02fc, 0x0002, 0x005e, 0x0144, 0x0144, - 0x0002, 0x005e, 0x0169, 0x0156, 0x0003, 0x0304, 0x0000, 0x0307, - 0x0001, 0x005e, 0x00fc, 0x0002, 0x030a, 0x030e, 0x0002, 0x005e, - 0x0144, 0x0144, 0x0002, 0x005e, 0x0169, 0x0156, 0x0003, 0x0316, - 0x0000, 0x0319, 0x0001, 0x005e, 0x00fc, 0x0002, 0x031c, 0x0320, - 0x0002, 0x005e, 0x0144, 0x0144, 0x0002, 0x005e, 0x0169, 0x0156, - // Entry 43580 - 435BF - 0x0003, 0x0328, 0x032b, 0x0330, 0x0001, 0x005e, 0x017d, 0x0003, - 0x005e, 0x0183, 0x0192, 0x019c, 0x0002, 0x0333, 0x0337, 0x0002, - 0x005e, 0x01ba, 0x01a7, 0x0002, 0x005e, 0x01e0, 0x01cd, 0x0003, - 0x033f, 0x0000, 0x0342, 0x0001, 0x005e, 0x017d, 0x0002, 0x0345, - 0x0349, 0x0002, 0x005e, 0x01ba, 0x01a7, 0x0002, 0x005e, 0x01e0, - 0x01cd, 0x0003, 0x0351, 0x0000, 0x0354, 0x0001, 0x005e, 0x017d, - 0x0002, 0x0357, 0x035b, 0x0002, 0x005e, 0x01ba, 0x01a7, 0x0002, - 0x005e, 0x01e0, 0x01cd, 0x0004, 0x0364, 0x0367, 0x036c, 0x0377, - // Entry 435C0 - 435FF - 0x0001, 0x005e, 0x01f4, 0x0003, 0x005e, 0x01f9, 0x0208, 0x0211, - 0x0002, 0x036f, 0x0373, 0x0002, 0x005e, 0x021c, 0x021c, 0x0002, - 0x005e, 0x0241, 0x022e, 0x0001, 0x005e, 0x0255, 0x0004, 0x037f, - 0x0000, 0x0382, 0x038d, 0x0001, 0x005e, 0x01f4, 0x0002, 0x0385, - 0x0389, 0x0002, 0x005e, 0x021c, 0x021c, 0x0002, 0x005e, 0x0241, - 0x022e, 0x0001, 0x005e, 0x0255, 0x0004, 0x0395, 0x0000, 0x0398, - 0x03a3, 0x0001, 0x005e, 0x01f4, 0x0002, 0x039b, 0x039f, 0x0002, - 0x005e, 0x021c, 0x021c, 0x0002, 0x005e, 0x0241, 0x022e, 0x0001, - // Entry 43600 - 4363F - 0x005e, 0x0255, 0x0003, 0x03aa, 0x03ad, 0x03b4, 0x0001, 0x005e, - 0x0261, 0x0005, 0x005e, 0x026b, 0x0270, 0x0274, 0x0266, 0x027a, - 0x0002, 0x03b7, 0x03bb, 0x0002, 0x005e, 0x0286, 0x0286, 0x0002, - 0x005e, 0x02ab, 0x0298, 0x0003, 0x03c3, 0x0000, 0x03c6, 0x0001, - 0x005e, 0x0261, 0x0002, 0x03c9, 0x03cd, 0x0002, 0x005e, 0x0286, - 0x0286, 0x0002, 0x005e, 0x02ab, 0x0298, 0x0003, 0x03d5, 0x0000, - 0x03d8, 0x0001, 0x005e, 0x0261, 0x0002, 0x03db, 0x03df, 0x0002, - 0x005e, 0x0286, 0x0286, 0x0002, 0x005e, 0x02ab, 0x0298, 0x0001, - // Entry 43640 - 4367F - 0x03e5, 0x0001, 0x005e, 0x02bf, 0x0003, 0x0000, 0x03ec, 0x03f1, - 0x0003, 0x005e, 0x02cc, 0x02df, 0x02ec, 0x0002, 0x03f4, 0x03f8, - 0x0002, 0x005e, 0x02fb, 0x02fb, 0x0002, 0x005e, 0x0328, 0x0311, - 0x0003, 0x0000, 0x0400, 0x0405, 0x0003, 0x005e, 0x02cc, 0x02df, - 0x02ec, 0x0002, 0x0408, 0x040c, 0x0002, 0x005e, 0x02fb, 0x02fb, - 0x0002, 0x005e, 0x0328, 0x0311, 0x0003, 0x0000, 0x0414, 0x0419, - 0x0003, 0x005e, 0x02cc, 0x02df, 0x02ec, 0x0002, 0x041c, 0x0420, - 0x0002, 0x005e, 0x02fb, 0x02fb, 0x0002, 0x005e, 0x0328, 0x0311, - // Entry 43680 - 436BF - 0x0003, 0x0000, 0x0428, 0x042d, 0x0003, 0x005e, 0x0340, 0x0353, - 0x0360, 0x0002, 0x0430, 0x0434, 0x0002, 0x005e, 0x036f, 0x036f, - 0x0002, 0x005e, 0x039c, 0x0385, 0x0003, 0x0000, 0x043c, 0x0441, - 0x0003, 0x005e, 0x0340, 0x0353, 0x0360, 0x0002, 0x0444, 0x0448, - 0x0002, 0x005e, 0x036f, 0x036f, 0x0002, 0x005e, 0x039c, 0x0385, - 0x0003, 0x0000, 0x0450, 0x0455, 0x0003, 0x005e, 0x0340, 0x0353, - 0x0360, 0x0002, 0x0458, 0x045c, 0x0002, 0x005e, 0x036f, 0x036f, - 0x0002, 0x005e, 0x039c, 0x0385, 0x0003, 0x0000, 0x0464, 0x0469, - // Entry 436C0 - 436FF - 0x0003, 0x005e, 0x03b4, 0x03c6, 0x03d2, 0x0002, 0x046c, 0x0470, - 0x0002, 0x005e, 0x03e0, 0x03e0, 0x0002, 0x005e, 0x040b, 0x03f5, - 0x0003, 0x0000, 0x0478, 0x047d, 0x0003, 0x005e, 0x03b4, 0x03c6, - 0x03d2, 0x0002, 0x0480, 0x0484, 0x0002, 0x005e, 0x03e0, 0x03e0, - 0x0002, 0x005e, 0x040b, 0x03f5, 0x0003, 0x0000, 0x048c, 0x0491, - 0x0003, 0x005e, 0x03b4, 0x03c6, 0x03d2, 0x0002, 0x0494, 0x0498, - 0x0002, 0x005e, 0x03e0, 0x03e0, 0x0002, 0x005e, 0x040b, 0x03f5, - 0x0003, 0x0000, 0x04a0, 0x04a5, 0x0003, 0x005e, 0x0422, 0x0435, - // Entry 43700 - 4373F - 0x0442, 0x0002, 0x04a8, 0x04ac, 0x0002, 0x005e, 0x0451, 0x0451, - 0x0002, 0x005e, 0x047e, 0x0467, 0x0003, 0x0000, 0x04b4, 0x04b9, - 0x0003, 0x005e, 0x0422, 0x0435, 0x0442, 0x0002, 0x04bc, 0x04c0, - 0x0002, 0x005e, 0x0451, 0x0451, 0x0002, 0x005e, 0x047e, 0x0467, - 0x0003, 0x0000, 0x04c8, 0x04cd, 0x0003, 0x005e, 0x0422, 0x0435, - 0x0442, 0x0002, 0x04d0, 0x04d4, 0x0002, 0x005e, 0x0451, 0x0451, - 0x0002, 0x005e, 0x047e, 0x0467, 0x0003, 0x0000, 0x04dc, 0x04e1, - 0x0003, 0x005e, 0x0496, 0x04a9, 0x04b6, 0x0002, 0x04e4, 0x04e8, - // Entry 43740 - 4377F - 0x0002, 0x005e, 0x04c5, 0x04c5, 0x0002, 0x005e, 0x04f2, 0x04db, - 0x0003, 0x0000, 0x04f0, 0x04f5, 0x0003, 0x005e, 0x0496, 0x04a9, - 0x04b6, 0x0002, 0x04f8, 0x04fc, 0x0002, 0x005e, 0x04c5, 0x04c5, - 0x0002, 0x005e, 0x04f2, 0x04db, 0x0003, 0x0000, 0x0504, 0x0509, - 0x0003, 0x005e, 0x0496, 0x04a9, 0x04b6, 0x0002, 0x050c, 0x0510, - 0x0002, 0x005e, 0x04c5, 0x04c5, 0x0002, 0x005e, 0x04f2, 0x04db, - 0x0003, 0x0000, 0x0518, 0x051d, 0x0003, 0x005e, 0x050a, 0x051b, - 0x0526, 0x0002, 0x0520, 0x0524, 0x0002, 0x005e, 0x0533, 0x0533, - // Entry 43780 - 437BF - 0x0002, 0x005e, 0x055c, 0x0547, 0x0003, 0x0000, 0x052c, 0x0531, - 0x0003, 0x005e, 0x050a, 0x051b, 0x0526, 0x0002, 0x0534, 0x0538, - 0x0002, 0x005e, 0x0533, 0x0533, 0x0002, 0x005e, 0x055c, 0x0547, - 0x0003, 0x0000, 0x0540, 0x0545, 0x0003, 0x005e, 0x050a, 0x051b, - 0x0526, 0x0002, 0x0548, 0x054c, 0x0002, 0x005e, 0x0533, 0x0533, - 0x0002, 0x005e, 0x055c, 0x0547, 0x0003, 0x0000, 0x0554, 0x0559, - 0x0003, 0x005e, 0x0572, 0x0585, 0x0592, 0x0002, 0x055c, 0x0560, - 0x0002, 0x005e, 0x05a1, 0x05a1, 0x0002, 0x005e, 0x05ce, 0x05b7, - // Entry 437C0 - 437FF - 0x0003, 0x0000, 0x0568, 0x056d, 0x0003, 0x005e, 0x0572, 0x0585, - 0x0592, 0x0002, 0x0570, 0x0574, 0x0002, 0x005e, 0x05a1, 0x05a1, - 0x0002, 0x005e, 0x05ce, 0x05b7, 0x0003, 0x0000, 0x057c, 0x0581, - 0x0003, 0x005e, 0x0572, 0x0585, 0x0592, 0x0002, 0x0584, 0x0588, - 0x0002, 0x005e, 0x05a1, 0x05a1, 0x0002, 0x005e, 0x05ce, 0x05b7, - 0x0001, 0x058e, 0x0001, 0x0007, 0x07cc, 0x0003, 0x0595, 0x0598, - 0x059c, 0x0001, 0x0044, 0x0400, 0x0002, 0x005e, 0xffff, 0x05e6, - 0x0002, 0x059f, 0x05a3, 0x0002, 0x005e, 0x05ee, 0x05ee, 0x0002, - // Entry 43800 - 4383F - 0x005e, 0x0611, 0x05ff, 0x0003, 0x05ab, 0x0000, 0x05ae, 0x0001, - 0x0044, 0x0400, 0x0002, 0x05b1, 0x05b5, 0x0002, 0x005e, 0x05ee, - 0x05ee, 0x0002, 0x005e, 0x0611, 0x05ff, 0x0003, 0x05bd, 0x0000, - 0x05c0, 0x0001, 0x0044, 0x0400, 0x0002, 0x05c3, 0x05c7, 0x0002, - 0x005e, 0x05ee, 0x05ee, 0x0002, 0x005e, 0x0636, 0x0624, 0x0003, - 0x05cf, 0x05d2, 0x05d6, 0x0001, 0x0044, 0x0404, 0x0002, 0x005e, - 0xffff, 0x0649, 0x0002, 0x05d9, 0x05dd, 0x0002, 0x005e, 0x0654, - 0x0654, 0x0002, 0x005e, 0x067d, 0x0668, 0x0003, 0x05e5, 0x0000, - // Entry 43840 - 4387F - 0x05e8, 0x0001, 0x005e, 0x0693, 0x0002, 0x05eb, 0x05ef, 0x0002, - 0x005e, 0x0654, 0x0654, 0x0002, 0x005e, 0x067d, 0x0668, 0x0003, - 0x05f7, 0x0000, 0x05fa, 0x0001, 0x005e, 0x0693, 0x0002, 0x05fd, - 0x0601, 0x0002, 0x005e, 0x0654, 0x0654, 0x0002, 0x005e, 0x067d, - 0x0668, 0x0003, 0x0609, 0x060c, 0x0610, 0x0001, 0x005e, 0x0697, - 0x0002, 0x005e, 0xffff, 0x069f, 0x0002, 0x0613, 0x0617, 0x0002, - 0x005e, 0x06a9, 0x06a9, 0x0002, 0x005e, 0x06d4, 0x06be, 0x0003, - 0x061f, 0x0000, 0x0622, 0x0001, 0x001f, 0x027b, 0x0002, 0x0625, - // Entry 43880 - 438BF - 0x0629, 0x0002, 0x005e, 0x06a9, 0x06a9, 0x0002, 0x005e, 0x0701, - 0x06eb, 0x0003, 0x0631, 0x0000, 0x0634, 0x0001, 0x001f, 0x027b, - 0x0002, 0x0637, 0x063b, 0x0002, 0x005e, 0x06a9, 0x06a9, 0x0002, - 0x005e, 0x0701, 0x06eb, 0x0001, 0x0641, 0x0001, 0x005e, 0x0718, - 0x0004, 0x0649, 0x064e, 0x0653, 0x065e, 0x0003, 0x0000, 0x1dc7, - 0x40ac, 0x40b4, 0x0003, 0x005e, 0x0724, 0x072f, 0x0744, 0x0002, - 0x0000, 0x0656, 0x0002, 0x0000, 0x0659, 0x0003, 0x005e, 0xffff, - 0x075a, 0x077e, 0x0002, 0x0000, 0x0661, 0x0003, 0x06fb, 0x0791, - // Entry 438C0 - 438FF - 0x0665, 0x0094, 0x005e, 0x07a1, 0x07b4, 0x07ca, 0x07e2, 0x0817, - 0x0872, 0x08b1, 0x08f6, 0x0934, 0x097b, 0x09c0, 0x0a03, 0x0a42, - 0x0a7c, 0x0abf, 0x0b1d, 0x0b84, 0x0bcd, 0x0c1d, 0x0c87, 0x0d00, - 0x0d6b, 0x0dc7, 0x0e17, 0x0e5f, 0x0e9d, 0x0eab, 0x0eca, 0x0f07, - 0x0f32, 0x0f73, 0x0f9a, 0x0fd7, 0x101c, 0x105c, 0x109a, 0x10b6, - 0x10de, 0x1132, 0x1187, 0x11b4, 0x11c1, 0x11db, 0x120b, 0x1257, - 0x127b, 0x12da, 0x132a, 0x136a, 0x13d5, 0x1431, 0x1463, 0x147d, - 0x14a5, 0x14b6, 0x14d2, 0x1506, 0x1520, 0x154c, 0x15ba, 0x160d, - // Entry 43900 - 4393F - 0x1621, 0x1646, 0x169a, 0x16e2, 0x1714, 0x1729, 0x173d, 0x174e, - 0x1767, 0x1786, 0x17b1, 0x17ea, 0x1834, 0x1871, 0x18bd, 0x1914, - 0x1930, 0x1959, 0x1985, 0x19a6, 0x19e8, 0x19f9, 0x1a21, 0x1a55, - 0x1a80, 0x1abb, 0x1acb, 0x1adb, 0x1aec, 0x1b18, 0x1b57, 0x1b87, - 0x1bf7, 0x1c52, 0x1c9e, 0x1cd7, 0x1ce6, 0x1cf3, 0x1d15, 0x1d6c, - 0x1db8, 0x1df5, 0x1e01, 0x1e36, 0x1e99, 0x1ee8, 0x1f2d, 0x1f67, - 0x1f74, 0x1f9c, 0x1fe5, 0x202b, 0x2067, 0x20a1, 0x20f6, 0x2106, - 0x2114, 0x2125, 0x2134, 0x2153, 0x219e, 0x21de, 0x2212, 0x2225, - // Entry 43940 - 4397F - 0x223e, 0x2258, 0x226c, 0x227c, 0x2289, 0x22a5, 0x22d3, 0x22e5, - 0x2301, 0x2335, 0x2356, 0x239b, 0x23b8, 0x2405, 0x2455, 0x248d, - 0x24b1, 0x2505, 0x2544, 0x2552, 0x2569, 0x2590, 0x25e0, 0x0094, - 0x005e, 0xffff, 0xffff, 0xffff, 0xffff, 0x07ff, 0x0864, 0x08a3, - 0x08ea, 0x0923, 0x096b, 0x09b0, 0x09f5, 0x0a36, 0x0a6c, 0x0aae, - 0x0afe, 0x0b75, 0x0bbc, 0x0c04, 0x0c61, 0x0ce5, 0x0d50, 0x0db3, - 0x0e09, 0x0e4d, 0xffff, 0xffff, 0x0eba, 0xffff, 0x0f20, 0xffff, - 0x0f8b, 0x0fca, 0x100e, 0x104a, 0xffff, 0xffff, 0x10ce, 0x111b, - // Entry 43980 - 439BF - 0x117b, 0xffff, 0xffff, 0xffff, 0x11f2, 0xffff, 0x1266, 0x12bf, - 0xffff, 0x134f, 0x13ba, 0x1425, 0xffff, 0xffff, 0xffff, 0xffff, - 0x14c5, 0xffff, 0xffff, 0x1531, 0x159f, 0xffff, 0xffff, 0x162f, - 0x1689, 0x16d6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x17a5, 0x17db, 0x1825, 0x1864, 0x189d, 0xffff, 0xffff, 0x194c, - 0xffff, 0x1993, 0xffff, 0xffff, 0x1a10, 0xffff, 0x1a71, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1b07, 0xffff, 0x1b65, 0x1bdd, 0x1c40, - 0x1c90, 0xffff, 0xffff, 0xffff, 0x1d00, 0x1d59, 0x1da4, 0xffff, - // Entry 439C0 - 439FF - 0xffff, 0x1e1b, 0x1e86, 0x1edc, 0x1f1d, 0xffff, 0xffff, 0x1f8c, - 0x1fd9, 0x201a, 0xffff, 0x2081, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2143, 0x2190, 0x21d1, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2297, 0xffff, 0xffff, 0x22f4, 0xffff, - 0x2342, 0xffff, 0x23a9, 0x23f3, 0x2446, 0xffff, 0x249e, 0x24f4, - 0xffff, 0xffff, 0xffff, 0x2581, 0x25cb, 0x0094, 0x005e, 0xffff, - 0xffff, 0xffff, 0xffff, 0x083a, 0x088b, 0x08ca, 0x090d, 0x0950, - 0x0996, 0x09db, 0x0a1c, 0x0a56, 0x0a94, 0x0adb, 0x0b44, 0x0b9b, - // Entry 43A00 - 43A3F - 0x0be9, 0x0c3e, 0x0cb5, 0x0d27, 0x0d8e, 0x0de3, 0x0e2d, 0x0e79, - 0xffff, 0xffff, 0x0ee5, 0xffff, 0x0f4f, 0xffff, 0x0fb1, 0x0fef, - 0x1032, 0x1076, 0xffff, 0xffff, 0x10f9, 0x1151, 0x119e, 0xffff, - 0xffff, 0xffff, 0x122c, 0xffff, 0x1298, 0x12fd, 0xffff, 0x138d, - 0x13f8, 0x1445, 0xffff, 0xffff, 0xffff, 0xffff, 0x14e7, 0xffff, - 0xffff, 0x1572, 0x15e0, 0xffff, 0xffff, 0x1668, 0x16b3, 0x16f6, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x17c5, 0x1804, - 0x184b, 0x1886, 0x18e8, 0xffff, 0xffff, 0x196e, 0xffff, 0x19c3, - // Entry 43A40 - 43A7F - 0xffff, 0xffff, 0x1a3a, 0xffff, 0x1a9a, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1b34, 0xffff, 0x1bb1, 0x1c1c, 0x1c6c, 0x1cb7, 0xffff, - 0xffff, 0xffff, 0x1d32, 0x1d87, 0x1dd7, 0xffff, 0xffff, 0x1e59, - 0x1eb7, 0x1eff, 0x1f45, 0xffff, 0xffff, 0x1fb7, 0x1ffc, 0x2044, - 0xffff, 0x20cc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x216e, - 0x21b7, 0x21f3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x22bb, 0xffff, 0xffff, 0x2316, 0xffff, 0x2375, 0xffff, - 0x23d2, 0x2422, 0x246c, 0xffff, 0x24cf, 0x2521, 0xffff, 0xffff, - // Entry 43A80 - 43ABF - 0xffff, 0x25aa, 0x2600, 0x0002, 0x0003, 0x0014, 0x0007, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0040, - 0x0055, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x005a, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x005f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 43AC0 - 43AFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0064, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0069, - 0x0001, 0x0057, 0x0001, 0x005f, 0x0000, 0x0001, 0x005c, 0x0001, - 0x0016, 0x020c, 0x0001, 0x0061, 0x0001, 0x005f, 0x0007, 0x0001, - 0x0066, 0x0001, 0x005f, 0x0014, 0x0001, 0x006b, 0x0001, 0x0016, - 0x022e, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000b, 0x0025, 0x0008, 0x0000, 0x0000, 0x0000, - // Entry 43B00 - 43B3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0004, 0x0022, 0x001c, - 0x0019, 0x001f, 0x0001, 0x005f, 0x0021, 0x0001, 0x005f, 0x0021, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0008, 0x0000, - 0x0000, 0x0000, 0x002e, 0x0000, 0x0000, 0x0000, 0x004a, 0x0002, - 0x0031, 0x003e, 0x0003, 0x0000, 0x0000, 0x0035, 0x0002, 0x0038, - 0x003b, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0002, - 0x0000, 0x0041, 0x0002, 0x0044, 0x0047, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0004, 0x0058, 0x0052, 0x004f, 0x0055, - // Entry 43B40 - 43B7F - 0x0001, 0x005f, 0x0021, 0x0001, 0x005f, 0x0021, 0x0001, 0x0005, - 0x0846, 0x0001, 0x0005, 0x0846, 0x0003, 0x0004, 0x031b, 0x072d, - 0x0008, 0x0000, 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, 0x008a, - 0x00b5, 0x0006, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0079, - 0x0002, 0x0017, 0x0048, 0x0003, 0x001b, 0x002a, 0x0039, 0x000d, - 0x005f, 0xffff, 0x002f, 0x0037, 0x003f, 0x0047, 0x004f, 0x0057, - 0x005f, 0x0067, 0x006f, 0x0077, 0x0080, 0x0089, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - // Entry 43B80 - 43BBF - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x005f, 0xffff, - 0x0092, 0x00a3, 0x00b4, 0x00c5, 0x00d6, 0x00e7, 0x00f8, 0x0109, - 0x011a, 0x012b, 0x013d, 0x014f, 0x0003, 0x004c, 0x005b, 0x006a, - 0x000d, 0x005f, 0xffff, 0x002f, 0x0037, 0x003f, 0x0047, 0x004f, - 0x0057, 0x005f, 0x0067, 0x006f, 0x0077, 0x0080, 0x0089, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x005f, - 0xffff, 0x0092, 0x00a3, 0x00b4, 0x00c5, 0x00d6, 0x00e7, 0x00f8, - // Entry 43BC0 - 43BFF - 0x0109, 0x011a, 0x012b, 0x013d, 0x014f, 0x0004, 0x0087, 0x0081, - 0x007e, 0x0084, 0x0001, 0x0043, 0x03ee, 0x0001, 0x005f, 0x0161, - 0x0001, 0x005f, 0x016b, 0x0001, 0x0005, 0x04ec, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0093, 0x0000, 0x00a4, 0x0004, - 0x00a1, 0x009b, 0x0098, 0x009e, 0x0001, 0x0005, 0x018e, 0x0001, - 0x0005, 0x01a0, 0x0001, 0x0001, 0x1fc1, 0x0001, 0x0000, 0x236f, - 0x0004, 0x00b2, 0x00ac, 0x00a9, 0x00af, 0x0001, 0x005f, 0x0174, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - // Entry 43C00 - 43C3F - 0x0846, 0x0008, 0x00be, 0x0123, 0x017a, 0x01af, 0x02ce, 0x02e8, - 0x02f9, 0x030a, 0x0002, 0x00c1, 0x00f2, 0x0003, 0x00c5, 0x00d4, - 0x00e3, 0x000d, 0x005f, 0xffff, 0x018c, 0x0194, 0x01a2, 0x01b0, - 0x01bb, 0x01c2, 0x01cf, 0x01dc, 0x01e4, 0x01f2, 0x01fd, 0x0205, - 0x000d, 0x005f, 0xffff, 0x0210, 0x0214, 0x021b, 0x0222, 0x01bb, - 0x0226, 0x0226, 0x022d, 0x0231, 0x0238, 0x023c, 0x0240, 0x000d, - 0x005f, 0xffff, 0x0247, 0x0257, 0x0270, 0x0283, 0x01bb, 0x01c2, - 0x01cf, 0x0296, 0x02a9, 0x02c8, 0x02e1, 0x02f7, 0x0003, 0x00f6, - // Entry 43C40 - 43C7F - 0x0105, 0x0114, 0x000d, 0x005f, 0xffff, 0x018c, 0x0194, 0x01a2, - 0x01b0, 0x01bb, 0x01c2, 0x01cf, 0x01dc, 0x01e4, 0x01f2, 0x01fd, - 0x0205, 0x000d, 0x005f, 0xffff, 0x0210, 0x0214, 0x021b, 0x0222, - 0x01bb, 0x0226, 0x0226, 0x022d, 0x0231, 0x0238, 0x023c, 0x0240, - 0x000d, 0x005f, 0xffff, 0x0247, 0x0257, 0x0270, 0x0283, 0x01bb, - 0x01c2, 0x01cf, 0x0296, 0x02a9, 0x02c8, 0x02e1, 0x02f7, 0x0002, - 0x0126, 0x0150, 0x0005, 0x012c, 0x0135, 0x0147, 0x0000, 0x013e, - 0x0007, 0x005f, 0x0310, 0x031e, 0x032c, 0x033a, 0x0345, 0x0353, - // Entry 43C80 - 43CBF - 0x0361, 0x0007, 0x005f, 0x036b, 0x0372, 0x0231, 0x0379, 0x0380, - 0x0387, 0x038e, 0x0007, 0x005f, 0x036b, 0x0372, 0x0231, 0x0379, - 0x0380, 0x0387, 0x038e, 0x0007, 0x005f, 0x0392, 0x03a5, 0x03bb, - 0x03d4, 0x03e4, 0x03fa, 0x0361, 0x0005, 0x0156, 0x015f, 0x0171, - 0x0000, 0x0168, 0x0007, 0x005f, 0x0310, 0x031e, 0x032c, 0x033a, - 0x0345, 0x0353, 0x0361, 0x0007, 0x005f, 0x036b, 0x0372, 0x0231, - 0x0379, 0x0380, 0x0387, 0x038e, 0x0007, 0x005f, 0x036b, 0x0372, - 0x0231, 0x0379, 0x0380, 0x0387, 0x038e, 0x0007, 0x005f, 0x0392, - // Entry 43CC0 - 43CFF - 0x03a5, 0x03bb, 0x03d4, 0x03e4, 0x03fa, 0x0361, 0x0002, 0x017d, - 0x0196, 0x0003, 0x0181, 0x0188, 0x018f, 0x0005, 0x005f, 0xffff, - 0x040d, 0x041c, 0x042b, 0x043a, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x005f, 0xffff, 0x0449, 0x0478, - 0x04aa, 0x04dc, 0x0003, 0x019a, 0x01a1, 0x01a8, 0x0005, 0x005f, - 0xffff, 0x040d, 0x041c, 0x042b, 0x043a, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x005f, 0xffff, 0x0449, - 0x0478, 0x04aa, 0x04dc, 0x0002, 0x01b2, 0x0240, 0x0003, 0x01b6, - // Entry 43D00 - 43D3F - 0x01e4, 0x0212, 0x000c, 0x01c6, 0x01cc, 0x01c3, 0x01cf, 0x01d5, - 0x01db, 0x01e1, 0x01c9, 0x01d2, 0x01d8, 0x0000, 0x01de, 0x0001, - 0x005f, 0x050e, 0x0001, 0x005f, 0x0527, 0x0001, 0x005f, 0x0540, - 0x0001, 0x005f, 0x0556, 0x0001, 0x005f, 0x056f, 0x0001, 0x005f, - 0x0585, 0x0001, 0x005f, 0x0592, 0x0001, 0x005f, 0x0556, 0x0001, - 0x005f, 0x05a5, 0x0001, 0x005f, 0x05b2, 0x0001, 0x005f, 0x05cf, - 0x000c, 0x01f4, 0x01fa, 0x01f1, 0x01fd, 0x0203, 0x0209, 0x020f, - 0x01f7, 0x0200, 0x0206, 0x0000, 0x020c, 0x0001, 0x005f, 0x05dc, - // Entry 43D40 - 43D7F - 0x0001, 0x005f, 0x05e7, 0x0001, 0x005f, 0x05f2, 0x0001, 0x005f, - 0x05fd, 0x0001, 0x005f, 0x0608, 0x0001, 0x005f, 0x0613, 0x0001, - 0x005f, 0x061b, 0x0001, 0x005f, 0x0626, 0x0001, 0x005f, 0x0634, - 0x0001, 0x005f, 0x063c, 0x0001, 0x005f, 0x0654, 0x000c, 0x0222, - 0x0228, 0x021f, 0x022b, 0x0231, 0x0237, 0x023d, 0x0225, 0x022e, - 0x0234, 0x0000, 0x023a, 0x0001, 0x005f, 0x050e, 0x0001, 0x005f, - 0x0527, 0x0001, 0x005f, 0x0540, 0x0001, 0x005f, 0x0556, 0x0001, - 0x005f, 0x056f, 0x0001, 0x005f, 0x0585, 0x0001, 0x005f, 0x0592, - // Entry 43D80 - 43DBF - 0x0001, 0x005f, 0x0556, 0x0001, 0x005f, 0x05a5, 0x0001, 0x005f, - 0x05b2, 0x0001, 0x005f, 0x05cf, 0x0003, 0x0244, 0x0272, 0x02a0, - 0x000c, 0x0254, 0x025a, 0x0251, 0x025d, 0x0263, 0x0269, 0x026f, - 0x0257, 0x0260, 0x0266, 0x0000, 0x026c, 0x0001, 0x005f, 0x050e, - 0x0001, 0x005f, 0x0527, 0x0001, 0x005f, 0x0540, 0x0001, 0x005f, - 0x0556, 0x0001, 0x005f, 0x056f, 0x0001, 0x005f, 0x0585, 0x0001, - 0x005f, 0x0592, 0x0001, 0x005f, 0x0556, 0x0001, 0x005f, 0x05a5, - 0x0001, 0x005f, 0x05b2, 0x0001, 0x005f, 0x05cf, 0x000c, 0x0282, - // Entry 43DC0 - 43DFF - 0x0288, 0x027f, 0x028b, 0x0291, 0x0297, 0x029d, 0x0285, 0x028e, - 0x0294, 0x0000, 0x029a, 0x0001, 0x005f, 0x05dc, 0x0001, 0x005f, - 0x05e7, 0x0001, 0x005f, 0x05f2, 0x0001, 0x005f, 0x05fd, 0x0001, - 0x005f, 0x0608, 0x0001, 0x005f, 0x0613, 0x0001, 0x005f, 0x061b, - 0x0001, 0x005f, 0x0626, 0x0001, 0x005f, 0x0634, 0x0001, 0x005f, - 0x063c, 0x0001, 0x005f, 0x065c, 0x000c, 0x02b0, 0x02b6, 0x02ad, - 0x02b9, 0x02bf, 0x02c5, 0x02cb, 0x02b3, 0x02bc, 0x02c2, 0x0000, - 0x02c8, 0x0001, 0x005f, 0x050e, 0x0001, 0x005f, 0x0527, 0x0001, - // Entry 43E00 - 43E3F - 0x005f, 0x0540, 0x0001, 0x005f, 0x0556, 0x0001, 0x005f, 0x056f, - 0x0001, 0x005f, 0x0585, 0x0001, 0x005f, 0x0592, 0x0001, 0x005f, - 0x0556, 0x0001, 0x005f, 0x05a5, 0x0001, 0x005f, 0x05b2, 0x0001, - 0x005f, 0x05cf, 0x0003, 0x02dd, 0x0000, 0x02d2, 0x0002, 0x02d5, - 0x02d9, 0x0002, 0x005f, 0x0661, 0x06ab, 0x0002, 0x005f, 0x0699, - 0x06ce, 0x0002, 0x02e0, 0x02e4, 0x0002, 0x005f, 0x06d9, 0x06e8, - 0x0002, 0x005f, 0x0699, 0x06ce, 0x0004, 0x02f6, 0x02f0, 0x02ed, - 0x02f3, 0x0001, 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, - // Entry 43E40 - 43E7F - 0x0002, 0x01f2, 0x0001, 0x0000, 0x237b, 0x0004, 0x0307, 0x0301, - 0x02fe, 0x0304, 0x0001, 0x005f, 0x06f7, 0x0001, 0x005f, 0x0706, - 0x0001, 0x003b, 0x0587, 0x0001, 0x003b, 0x0591, 0x0004, 0x0318, - 0x0312, 0x030f, 0x0315, 0x0001, 0x005f, 0x0712, 0x0001, 0x005f, - 0x0712, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0040, - 0x035c, 0x0000, 0x0000, 0x0361, 0x0378, 0x038f, 0x03a6, 0x03bd, - 0x03d4, 0x03eb, 0x0402, 0x0419, 0x0430, 0x044b, 0x0466, 0x0000, - 0x0000, 0x0000, 0x0481, 0x049a, 0x04b3, 0x0000, 0x0000, 0x0000, - // Entry 43E80 - 43EBF - 0x04cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x04d1, 0x04e5, - 0x04f9, 0x050d, 0x0521, 0x0535, 0x0549, 0x055d, 0x0571, 0x0585, - 0x0599, 0x05ad, 0x05c1, 0x05d5, 0x05e9, 0x05fd, 0x0611, 0x0625, - 0x0639, 0x064d, 0x0661, 0x0000, 0x0675, 0x0000, 0x067a, 0x0690, - 0x06a2, 0x06b4, 0x06ca, 0x06dc, 0x06ee, 0x0704, 0x0716, 0x0728, - 0x0001, 0x035e, 0x0001, 0x005f, 0x0730, 0x0003, 0x0365, 0x0368, - 0x036d, 0x0001, 0x005f, 0x0740, 0x0003, 0x005f, 0x0750, 0x0770, - 0x078d, 0x0002, 0x0370, 0x0374, 0x0002, 0x005f, 0x07ca, 0x07b0, - // Entry 43EC0 - 43EFF - 0x0002, 0x005f, 0x081a, 0x07ed, 0x0003, 0x037c, 0x037f, 0x0384, - 0x0001, 0x005f, 0x0740, 0x0003, 0x005f, 0x0750, 0x0770, 0x078d, - 0x0002, 0x0387, 0x038b, 0x0002, 0x005f, 0x07ca, 0x07b0, 0x0002, - 0x005f, 0x081a, 0x07ed, 0x0003, 0x0393, 0x0396, 0x039b, 0x0001, - 0x005f, 0x0850, 0x0003, 0x005f, 0x0750, 0x0770, 0x078d, 0x0002, - 0x039e, 0x03a2, 0x0002, 0x005f, 0x0855, 0x0855, 0x0002, 0x005f, - 0x085e, 0x085e, 0x0003, 0x03aa, 0x03ad, 0x03b2, 0x0001, 0x005f, - 0x0874, 0x0003, 0x005f, 0x088d, 0x08b6, 0x08dc, 0x0002, 0x03b5, - // Entry 43F00 - 43F3F - 0x03b9, 0x0002, 0x005f, 0x092c, 0x0908, 0x0002, 0x005f, 0x098e, - 0x0958, 0x0003, 0x03c1, 0x03c4, 0x03c9, 0x0001, 0x005f, 0x09cd, - 0x0003, 0x005f, 0x09db, 0x08b6, 0x08dc, 0x0002, 0x03cc, 0x03d0, - 0x0002, 0x005f, 0x0a04, 0x0a04, 0x0002, 0x005f, 0x0a16, 0x0a16, - 0x0003, 0x03d8, 0x03db, 0x03e0, 0x0001, 0x005f, 0x0613, 0x0003, - 0x005f, 0x09db, 0x08b6, 0x08dc, 0x0002, 0x03e3, 0x03e7, 0x0002, - 0x005f, 0x0a35, 0x0a35, 0x0002, 0x005f, 0x0a41, 0x0a41, 0x0003, - 0x03ef, 0x03f2, 0x03f7, 0x0001, 0x005f, 0x0a5a, 0x0003, 0x005f, - // Entry 43F40 - 43F7F - 0x0a6a, 0x0a8a, 0x0aa7, 0x0002, 0x03fa, 0x03fe, 0x0002, 0x005f, - 0x0aea, 0x0aca, 0x0002, 0x005f, 0x0b40, 0x0b0d, 0x0003, 0x0406, - 0x0409, 0x040e, 0x0001, 0x005f, 0x0b76, 0x0003, 0x005f, 0x0a6a, - 0x0a8a, 0x0aa7, 0x0002, 0x0411, 0x0415, 0x0002, 0x005f, 0x0b81, - 0x0b81, 0x0002, 0x005f, 0x0b90, 0x0b90, 0x0003, 0x041d, 0x0420, - 0x0425, 0x0001, 0x005f, 0x0634, 0x0003, 0x005f, 0x0a6a, 0x0a8a, - 0x0aa7, 0x0002, 0x0428, 0x042c, 0x0002, 0x005f, 0x0bac, 0x0bac, - 0x0002, 0x005f, 0x0bb8, 0x0bb8, 0x0004, 0x0435, 0x0438, 0x043d, - // Entry 43F80 - 43FBF - 0x0448, 0x0001, 0x005f, 0x0bd1, 0x0003, 0x005f, 0x0be1, 0x0c01, - 0x0c1e, 0x0002, 0x0440, 0x0444, 0x0002, 0x005f, 0x0c61, 0x0c41, - 0x0002, 0x005f, 0x0cbd, 0x0c84, 0x0001, 0x005f, 0x0cf3, 0x0004, - 0x0450, 0x0453, 0x0458, 0x0463, 0x0001, 0x005f, 0x0bd1, 0x0003, - 0x005f, 0x0be1, 0x0c01, 0x0c1e, 0x0002, 0x045b, 0x045f, 0x0002, - 0x005f, 0x0d12, 0x0d12, 0x0002, 0x005f, 0x0d21, 0x0d21, 0x0001, - 0x005f, 0x0cf3, 0x0004, 0x046b, 0x046e, 0x0473, 0x047e, 0x0001, - 0x005f, 0x0d3d, 0x0003, 0x005f, 0x0be1, 0x0c01, 0x0c1e, 0x0002, - // Entry 43FC0 - 43FFF - 0x0476, 0x047a, 0x0002, 0x005f, 0x0d45, 0x0d45, 0x0002, 0x005f, - 0x0d51, 0x0d51, 0x0001, 0x005f, 0x0cf3, 0x0003, 0x0485, 0x0488, - 0x048f, 0x0001, 0x005f, 0x0d6a, 0x0005, 0x005f, 0x0da7, 0x0dba, - 0x0dca, 0x0d77, 0x0dd7, 0x0002, 0x0492, 0x0496, 0x0002, 0x005f, - 0x0e11, 0x0dfa, 0x0002, 0x005f, 0x0e5b, 0x0e31, 0x0003, 0x049e, - 0x04a1, 0x04a8, 0x0001, 0x005f, 0x0d6a, 0x0005, 0x005f, 0x0da7, - 0x0dba, 0x0dca, 0x0d77, 0x0dd7, 0x0002, 0x04ab, 0x04af, 0x0002, - 0x005f, 0x0e11, 0x0dfa, 0x0002, 0x005f, 0x0e5b, 0x0e31, 0x0003, - // Entry 44000 - 4403F - 0x04b7, 0x04ba, 0x04c1, 0x0001, 0x005f, 0x0e8e, 0x0005, 0x005f, - 0x0da7, 0x0dba, 0x0dca, 0x0d77, 0x0dd7, 0x0002, 0x04c4, 0x04c8, - 0x0002, 0x005f, 0x0e96, 0x0e96, 0x0002, 0x005f, 0x0ea2, 0x0ea2, - 0x0001, 0x04ce, 0x0001, 0x005f, 0x0ebb, 0x0003, 0x0000, 0x04d5, - 0x04da, 0x0003, 0x005f, 0x0ee4, 0x0f07, 0x0f27, 0x0002, 0x04dd, - 0x04e1, 0x0002, 0x005f, 0x0f6a, 0x0f4d, 0x0002, 0x005f, 0x0fc6, - 0x0f90, 0x0003, 0x0000, 0x04e9, 0x04ee, 0x0003, 0x005f, 0x1005, - 0x1023, 0x103e, 0x0002, 0x04f1, 0x04f5, 0x0002, 0x005f, 0x105f, - // Entry 44040 - 4407F - 0x105f, 0x0002, 0x005f, 0x1071, 0x1071, 0x0003, 0x0000, 0x04fd, - 0x0502, 0x0003, 0x005f, 0x1090, 0x10a8, 0x10bd, 0x0002, 0x0505, - 0x0509, 0x0002, 0x005f, 0x10d8, 0x10d8, 0x0002, 0x005f, 0x10e4, - 0x10e4, 0x0003, 0x0000, 0x0511, 0x0516, 0x0003, 0x005f, 0x10fd, - 0x1123, 0x1146, 0x0002, 0x0519, 0x051d, 0x0002, 0x005f, 0x118f, - 0x116f, 0x0002, 0x005f, 0x11eb, 0x11b8, 0x0003, 0x0000, 0x0525, - 0x052a, 0x0003, 0x005f, 0x1227, 0x1245, 0x1260, 0x0002, 0x052d, - 0x0531, 0x0002, 0x005f, 0x1281, 0x1281, 0x0002, 0x005f, 0x1293, - // Entry 44080 - 440BF - 0x1293, 0x0003, 0x0000, 0x0539, 0x053e, 0x0003, 0x005f, 0x1227, - 0x1245, 0x1260, 0x0002, 0x0541, 0x0545, 0x0002, 0x005f, 0x1281, - 0x1281, 0x0002, 0x005f, 0x1293, 0x1293, 0x0003, 0x0000, 0x054d, - 0x0552, 0x0003, 0x005f, 0x12b2, 0x12db, 0x1301, 0x0002, 0x0555, - 0x0559, 0x0002, 0x005f, 0x1350, 0x132d, 0x0002, 0x005f, 0x13ac, - 0x137c, 0x0003, 0x0000, 0x0561, 0x0566, 0x0003, 0x005f, 0x13e5, - 0x1403, 0x141e, 0x0002, 0x0569, 0x056d, 0x0002, 0x005f, 0x143f, - 0x143f, 0x0002, 0x005f, 0x1451, 0x1451, 0x0003, 0x0000, 0x0575, - // Entry 440C0 - 440FF - 0x057a, 0x0003, 0x005f, 0x13e5, 0x1403, 0x141e, 0x0002, 0x057d, - 0x0581, 0x0002, 0x005f, 0x1350, 0x143f, 0x0002, 0x005f, 0x1490, - 0x1451, 0x0003, 0x0000, 0x0589, 0x058e, 0x0003, 0x005f, 0x14b5, - 0x14d5, 0x14f2, 0x0002, 0x0591, 0x0595, 0x0002, 0x005f, 0x152f, - 0x1515, 0x0002, 0x005f, 0x157f, 0x1552, 0x0003, 0x0000, 0x059d, - 0x05a2, 0x0003, 0x005f, 0x15b5, 0x15d0, 0x15e8, 0x0002, 0x05a5, - 0x05a9, 0x0002, 0x005f, 0x1606, 0x1606, 0x0002, 0x005f, 0x157f, - 0x157f, 0x0003, 0x0000, 0x05b1, 0x05b6, 0x0003, 0x005f, 0x15b5, - // Entry 44100 - 4413F - 0x15d0, 0x15e8, 0x0002, 0x05b9, 0x05bd, 0x0002, 0x005f, 0x1606, - 0x1606, 0x0002, 0x005f, 0x1615, 0x1615, 0x0003, 0x0000, 0x05c5, - 0x05ca, 0x0003, 0x005f, 0x1631, 0x1657, 0x167a, 0x0002, 0x05cd, - 0x05d1, 0x0002, 0x005f, 0x16c3, 0x16a3, 0x0002, 0x005f, 0x171f, - 0x16ec, 0x0003, 0x0000, 0x05d9, 0x05de, 0x0003, 0x005f, 0x175b, - 0x1779, 0x1794, 0x0002, 0x05e1, 0x05e5, 0x0002, 0x005f, 0x17b5, - 0x17b5, 0x0002, 0x005f, 0x17c7, 0x17c7, 0x0003, 0x0000, 0x05ed, - 0x05f2, 0x0003, 0x005f, 0x175b, 0x1779, 0x1794, 0x0002, 0x05f5, - // Entry 44140 - 4417F - 0x05f9, 0x0002, 0x005f, 0x17b5, 0x17b5, 0x0002, 0x005f, 0x17c7, - 0x17c7, 0x0003, 0x0000, 0x0601, 0x0606, 0x0003, 0x005f, 0x17e6, - 0x1809, 0x1829, 0x0002, 0x0609, 0x060d, 0x0002, 0x005f, 0x1872, - 0x184f, 0x0002, 0x005f, 0x18c8, 0x1898, 0x0003, 0x0000, 0x0615, - 0x061a, 0x0003, 0x005f, 0x1901, 0x191f, 0x193a, 0x0002, 0x061d, - 0x0621, 0x0002, 0x005f, 0x195b, 0x195b, 0x0002, 0x005f, 0x196d, - 0x196d, 0x0003, 0x0000, 0x0629, 0x062e, 0x0003, 0x005f, 0x1901, - 0x191f, 0x193a, 0x0002, 0x0631, 0x0635, 0x0002, 0x005f, 0x195b, - // Entry 44180 - 441BF - 0x195b, 0x0002, 0x005f, 0x196d, 0x196d, 0x0003, 0x0000, 0x063d, - 0x0642, 0x0003, 0x005f, 0x198c, 0x19a6, 0x19bd, 0x0002, 0x0645, - 0x0649, 0x0002, 0x005f, 0x19f4, 0x19da, 0x0002, 0x005f, 0x1a38, - 0x1a11, 0x0003, 0x0000, 0x0651, 0x0656, 0x0003, 0x005f, 0x198c, - 0x19a6, 0x19bd, 0x0002, 0x0659, 0x065d, 0x0002, 0x005f, 0x1a68, - 0x1a68, 0x0002, 0x005f, 0x1a77, 0x1a77, 0x0003, 0x0000, 0x0665, - 0x066a, 0x0003, 0x005f, 0x198c, 0x19a6, 0x19bd, 0x0002, 0x066d, - 0x0671, 0x0002, 0x005f, 0x1a68, 0x1a68, 0x0002, 0x005f, 0x1a77, - // Entry 441C0 - 441FF - 0x1a77, 0x0001, 0x0677, 0x0001, 0x005f, 0x1a93, 0x0003, 0x067e, - 0x0681, 0x0685, 0x0001, 0x005f, 0x1ac5, 0x0002, 0x005f, 0xffff, - 0x1acf, 0x0002, 0x0688, 0x068c, 0x0002, 0x005f, 0x1b0b, 0x1b0b, - 0x0002, 0x005f, 0x1b34, 0x1b34, 0x0003, 0x0694, 0x0000, 0x0697, - 0x0001, 0x005f, 0x1b5e, 0x0002, 0x069a, 0x069e, 0x0002, 0x005f, - 0x1b69, 0x1b69, 0x0002, 0x005f, 0x1b78, 0x1b78, 0x0003, 0x06a6, - 0x0000, 0x06a9, 0x0001, 0x005f, 0x1b94, 0x0002, 0x06ac, 0x06b0, - 0x0002, 0x005f, 0x1b99, 0x1b99, 0x0002, 0x005f, 0x1ba2, 0x1ba2, - // Entry 44200 - 4423F - 0x0003, 0x06b8, 0x06bb, 0x06bf, 0x0001, 0x005f, 0x1bb8, 0x0002, - 0x005f, 0xffff, 0x1bce, 0x0002, 0x06c2, 0x06c6, 0x0002, 0x005f, - 0x1c2d, 0x1c07, 0x0002, 0x005f, 0x1c8f, 0x1c56, 0x0003, 0x06ce, - 0x0000, 0x06d1, 0x0001, 0x005f, 0x1ccb, 0x0002, 0x06d4, 0x06d8, - 0x0002, 0x005f, 0x1cd9, 0x1cd9, 0x0002, 0x005f, 0x1ceb, 0x1ceb, - 0x0003, 0x06e0, 0x0000, 0x06e3, 0x0001, 0x005f, 0x1ccb, 0x0002, - 0x06e6, 0x06ea, 0x0002, 0x005f, 0x1d0a, 0x1d0a, 0x0002, 0x005f, - 0x1d16, 0x1d16, 0x0003, 0x06f2, 0x06f5, 0x06f9, 0x0001, 0x005f, - // Entry 44240 - 4427F - 0x1d2f, 0x0002, 0x005f, 0xffff, 0x1d42, 0x0002, 0x06fc, 0x0700, - 0x0002, 0x005f, 0x1d7b, 0x1d58, 0x0002, 0x005f, 0x1dd1, 0x1da1, - 0x0003, 0x0708, 0x0000, 0x070b, 0x0001, 0x005f, 0x1e0a, 0x0002, - 0x070e, 0x0712, 0x0002, 0x005f, 0x1e18, 0x1e18, 0x0002, 0x005f, - 0x1e2a, 0x1e2a, 0x0003, 0x071a, 0x0000, 0x071d, 0x0001, 0x005f, - 0x1e49, 0x0002, 0x0720, 0x0724, 0x0002, 0x005f, 0x1e51, 0x1e51, - 0x0002, 0x005f, 0x1e5d, 0x1e5d, 0x0001, 0x072a, 0x0001, 0x005f, - 0x1e76, 0x0004, 0x0732, 0x0737, 0x073c, 0x0747, 0x0003, 0x0000, - // Entry 44280 - 442BF - 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x005f, 0x1e96, 0x1eaa, 0x1ed1, - 0x0002, 0x0000, 0x073f, 0x0002, 0x0000, 0x0742, 0x0003, 0x005f, - 0xffff, 0x1efb, 0x1f37, 0x0002, 0x092e, 0x074a, 0x0003, 0x074e, - 0x088e, 0x07ee, 0x009e, 0x005f, 0xffff, 0xffff, 0xffff, 0xffff, - 0x20f5, 0x21de, 0x22ff, 0x2394, 0x2426, 0x24e5, 0x2592, 0x262d, - 0x26b6, 0x2839, 0x28cb, 0x2984, 0x2a9a, 0x2b38, 0x2bf7, 0x2cf2, - 0x2e50, 0x2f78, 0x3097, 0x3147, 0x31d6, 0xffff, 0xffff, 0x32b7, - 0xffff, 0x33a9, 0xffff, 0x3495, 0x3530, 0x35aa, 0x3621, 0xffff, - // Entry 442C0 - 442FF - 0xffff, 0x3752, 0x37f9, 0x38bf, 0xffff, 0xffff, 0xffff, 0x39f9, - 0xffff, 0x3ad5, 0x3bac, 0xffff, 0x3cf9, 0x3df4, 0x3eef, 0xffff, - 0xffff, 0xffff, 0xffff, 0x4069, 0xffff, 0xffff, 0x418b, 0x428f, - 0xffff, 0xffff, 0x4407, 0x44db, 0x4579, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x4790, 0x4819, 0x48d2, 0x496d, 0x4a08, - 0xffff, 0xffff, 0x4bc6, 0xffff, 0x4c72, 0xffff, 0xffff, 0x4dd7, - 0xffff, 0x4f52, 0xffff, 0xffff, 0xffff, 0xffff, 0x509e, 0xffff, - 0x5165, 0x5254, 0x5343, 0x53ed, 0xffff, 0xffff, 0xffff, 0x54e5, - // Entry 44300 - 4433F - 0x55b3, 0x567b, 0xffff, 0xffff, 0x57cf, 0x5925, 0x59f9, 0x5a8e, - 0xffff, 0xffff, 0x5b9e, 0x5c33, 0x5cad, 0xffff, 0x5d9f, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x605f, 0x60eb, 0x6156, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6331, 0xffff, - 0xffff, 0x6424, 0xffff, 0x64cd, 0xffff, 0x65d6, 0x666b, 0x6736, - 0xffff, 0x6806, 0x68da, 0xffff, 0xffff, 0xffff, 0x6a44, 0x6aeb, - 0xffff, 0xffff, 0x1f6d, 0x2279, 0x273f, 0x27b3, 0xffff, 0xffff, - 0x4e90, 0x5f6f, 0x009e, 0x005f, 0x1fe1, 0x201c, 0x205e, 0x20a3, - // Entry 44340 - 4437F - 0x2137, 0x2204, 0x2325, 0x23b7, 0x2458, 0x2511, 0x25b8, 0x2650, - 0x26d6, 0x285c, 0x28fd, 0x29d5, 0x2ac3, 0x2b6a, 0x2c39, 0x2d59, - 0x2ea1, 0x2fc6, 0x30c6, 0x316a, 0x31fc, 0x326b, 0x328e, 0x32e6, - 0x3367, 0x33d9, 0x345c, 0x34bb, 0x354d, 0x35c4, 0x3653, 0x36da, - 0x3719, 0x377e, 0x382c, 0x38e2, 0x3951, 0x3974, 0x39c0, 0x3a29, - 0x3aac, 0x3b11, 0x3bf7, 0x3cb0, 0x3d41, 0x3e3c, 0x3f0f, 0x3f72, - 0x3fab, 0x4017, 0x403d, 0x4092, 0x4107, 0x4149, 0x41d6, 0x42d7, - 0x43ab, 0x43e7, 0x4440, 0x4504, 0x459c, 0x4605, 0x463e, 0x4686, - // Entry 44380 - 443BF - 0x46af, 0x46f1, 0x4742, 0x47b0, 0x484b, 0x48f8, 0x4993, 0x4a6b, - 0x4b45, 0x4b87, 0x4be6, 0x4c4f, 0x4cb0, 0x4d4f, 0x4da4, 0x4e07, - 0x4f16, 0x4f72, 0x4fd5, 0x4ff8, 0x502d, 0x5062, 0x50ca, 0x5145, - 0x51a7, 0x5296, 0x5370, 0x5410, 0x5479, 0x54a5, 0x54c5, 0x551e, - 0x55e8, 0x56c2, 0x5779, 0x5796, 0x581b, 0x5960, 0x5a1f, 0x5abd, - 0x5b3e, 0x5b5e, 0x5bc4, 0x5c50, 0x5cdc, 0x5d5d, 0x5dff, 0x5ee8, - 0x5f1d, 0x5f40, 0x6010, 0x603c, 0x6082, 0x6108, 0x6176, 0x61df, - 0x6208, 0x6250, 0x6289, 0x62c5, 0x62ee, 0x6311, 0x6354, 0x63c3, - // Entry 443C0 - 443FF - 0x63f5, 0x6447, 0x64b0, 0x650e, 0x65b3, 0x65fc, 0x66a3, 0x6762, - 0x67dd, 0x6841, 0x690f, 0x699c, 0x69c5, 0x69ef, 0x6a70, 0x6b29, - 0x438a, 0x58dc, 0x1f8d, 0x229f, 0x275f, 0x27d9, 0xffff, 0x4d84, - 0x4eb6, 0x5f9e, 0x009e, 0x005f, 0xffff, 0xffff, 0xffff, 0xffff, - 0x218f, 0x2240, 0x2361, 0x23f0, 0x24a0, 0x2553, 0x25f4, 0x2680, - 0x270c, 0x2895, 0x2945, 0x2a3c, 0x2b02, 0x2bb2, 0x2c97, 0x2dd6, - 0x2f0e, 0x3030, 0x310b, 0x31a3, 0x3238, 0xffff, 0xffff, 0x332b, - 0xffff, 0x341f, 0xffff, 0x34f7, 0x3580, 0x35f4, 0x369b, 0xffff, - // Entry 44400 - 4443F - 0xffff, 0x37c0, 0x3875, 0x391b, 0xffff, 0xffff, 0xffff, 0x3a6f, - 0xffff, 0x3b63, 0x3c58, 0xffff, 0x3d9f, 0x3e9a, 0x3f45, 0xffff, - 0xffff, 0xffff, 0xffff, 0x40d1, 0xffff, 0xffff, 0x4237, 0x4335, - 0xffff, 0xffff, 0x448f, 0x4543, 0x45d5, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x47e6, 0x4893, 0x4934, 0x49cf, 0x4ad5, - 0xffff, 0xffff, 0x4c1c, 0xffff, 0x4d04, 0xffff, 0xffff, 0x4e4d, - 0xffff, 0x4fa8, 0xffff, 0xffff, 0xffff, 0xffff, 0x510c, 0xffff, - 0x51ff, 0x52ee, 0x53b3, 0x5449, 0xffff, 0xffff, 0xffff, 0x556d, - // Entry 44440 - 4447F - 0x5633, 0x571f, 0xffff, 0xffff, 0x5880, 0x59b1, 0x5a5b, 0x5b02, - 0xffff, 0xffff, 0x5c00, 0x5c83, 0x5d21, 0xffff, 0x5e75, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x60bb, 0x612c, 0x61ac, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x638d, 0xffff, - 0xffff, 0x6480, 0xffff, 0x6565, 0xffff, 0x6638, 0x66f1, 0x67a4, - 0xffff, 0x6892, 0x695a, 0xffff, 0xffff, 0xffff, 0x6ab2, 0x6b7d, - 0xffff, 0xffff, 0x1fb4, 0x22cc, 0x2786, 0x2806, 0xffff, 0xffff, - 0x4ee3, 0x5fd4, 0x0003, 0x0000, 0x0000, 0x0932, 0x0042, 0x000b, - // Entry 44480 - 444BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 444C0 - 444FF - 0xffff, 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, - 0x0018, 0x001e, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0003, 0x0000, - 0x0000, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, - 0x000b, 0x0003, 0x0000, 0x0000, 0x000f, 0x007d, 0x001e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 44500 - 4453F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x202e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 44540 - 4457F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2038, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x203c, 0x0003, 0x0000, 0x0000, 0x0004, - 0x0004, 0x0000, 0x0000, 0x0000, 0x0009, 0x0001, 0x000b, 0x0003, - // Entry 44580 - 445BF - 0x0000, 0x0000, 0x000f, 0x007d, 0x001e, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 445C0 - 445FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x202e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2038, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 44600 - 4463F - 0xffff, 0x203c, 0x0003, 0x0004, 0x0274, 0x0672, 0x000b, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, 0x0000, - 0x023b, 0x025d, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0019, 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, 0x0024, - 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, - 0x1f98, 0x0001, 0x001e, 0x01bc, 0x0004, 0x0038, 0x0032, 0x002f, - 0x0035, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0044, 0x00a9, - // Entry 44640 - 4467F - 0x0100, 0x0135, 0x01ee, 0x0208, 0x0219, 0x022a, 0x0002, 0x0047, - 0x0078, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, 0x0060, 0xffff, - 0x0000, 0x0007, 0x0017, 0x002a, 0x003a, 0x0041, 0x004e, 0x005b, - 0x0062, 0x0078, 0x0088, 0x0092, 0x000d, 0x0060, 0xffff, 0x00a2, - 0x00a6, 0x00ad, 0x00b4, 0x003a, 0x00b8, 0x00bf, 0x00c6, 0x00ca, - 0x00d1, 0x00d5, 0x00d9, 0x000d, 0x0060, 0xffff, 0x00e0, 0x00f0, - 0x0017, 0x0109, 0x003a, 0x0041, 0x004e, 0x011f, 0x0132, 0x0151, - 0x016a, 0x017d, 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, 0x0060, - // Entry 44680 - 446BF - 0xffff, 0x0000, 0x0007, 0x0017, 0x002a, 0x003a, 0x0041, 0x004e, - 0x011f, 0x0062, 0x0078, 0x0088, 0x0092, 0x000d, 0x0060, 0xffff, - 0x00a2, 0x00a6, 0x00ad, 0x00b4, 0x003a, 0x00b8, 0x00bf, 0x00c6, - 0x00ca, 0x00d1, 0x00d5, 0x00d9, 0x000d, 0x0060, 0xffff, 0x00e0, - 0x00f0, 0x0017, 0x0109, 0x003a, 0x0041, 0x004e, 0x011f, 0x0132, - 0x0151, 0x016a, 0x017d, 0x0002, 0x00ac, 0x00d6, 0x0005, 0x00b2, - 0x00bb, 0x00cd, 0x0000, 0x00c4, 0x0007, 0x0060, 0x0196, 0x01a0, - 0x01aa, 0x01b7, 0x01c1, 0x01ce, 0x01de, 0x0007, 0x0060, 0x00c6, - // Entry 446C0 - 446FF - 0x01e8, 0x01ef, 0x01f3, 0x01fa, 0x0201, 0x0208, 0x0007, 0x0060, - 0x0196, 0x01a0, 0x020c, 0x01b7, 0x01c1, 0x01ce, 0x01de, 0x0007, - 0x0060, 0x0213, 0x0229, 0x023f, 0x0258, 0x026e, 0x0287, 0x02a3, - 0x0005, 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, 0x0060, - 0x0196, 0x01a0, 0x01aa, 0x01b7, 0x01c1, 0x01ce, 0x01de, 0x0007, - 0x0060, 0x00c6, 0x01e8, 0x01ef, 0x01f3, 0x01fa, 0x0201, 0x0208, - 0x0007, 0x0060, 0x0196, 0x01a0, 0x020c, 0x01b7, 0x01c1, 0x01ce, - 0x01de, 0x0007, 0x0060, 0x0213, 0x0229, 0x023f, 0x0258, 0x026e, - // Entry 44700 - 4473F - 0x0287, 0x02a3, 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, 0x010e, - 0x0115, 0x0005, 0x0060, 0xffff, 0x02b9, 0x02c7, 0x02d5, 0x02e3, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x0060, 0xffff, 0x02f1, 0x030f, 0x032d, 0x034b, 0x0003, 0x0120, - 0x0127, 0x012e, 0x0005, 0x0060, 0xffff, 0x02b9, 0x02c7, 0x02d5, - 0x02e3, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x0060, 0xffff, 0x0369, 0x0398, 0x03c7, 0x03f3, 0x0002, - 0x0138, 0x0193, 0x0003, 0x013c, 0x0159, 0x0176, 0x0007, 0x0147, - // Entry 44740 - 4477F - 0x014a, 0x0144, 0x014d, 0x0150, 0x0153, 0x0156, 0x0001, 0x0060, - 0x0425, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x0060, 0x0444, 0x0001, 0x0060, 0x0451, 0x0001, 0x0060, 0x046d, - 0x0001, 0x0060, 0x0486, 0x0007, 0x0164, 0x0167, 0x0161, 0x016a, - 0x016d, 0x0170, 0x0173, 0x0001, 0x0060, 0x0425, 0x0001, 0x0060, - 0x0499, 0x0001, 0x0060, 0x049d, 0x0001, 0x0060, 0x0444, 0x0001, - 0x0060, 0x0451, 0x0001, 0x0060, 0x046d, 0x0001, 0x0060, 0x0486, - 0x0007, 0x0181, 0x0184, 0x017e, 0x0187, 0x018a, 0x018d, 0x0190, - // Entry 44780 - 447BF - 0x0001, 0x0060, 0x0425, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0001, 0x0060, 0x0444, 0x0001, 0x0060, 0x0451, 0x0001, - 0x0060, 0x046d, 0x0001, 0x0060, 0x0486, 0x0003, 0x0197, 0x01b4, - 0x01d1, 0x0007, 0x01a2, 0x01a5, 0x019f, 0x01a8, 0x01ab, 0x01ae, - 0x01b1, 0x0001, 0x0060, 0x0425, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0001, 0x0060, 0x0444, 0x0001, 0x0060, 0x0451, - 0x0001, 0x0060, 0x046d, 0x0001, 0x0060, 0x0486, 0x0007, 0x01bf, - 0x01c2, 0x01bc, 0x01c5, 0x01c8, 0x01cb, 0x01ce, 0x0001, 0x0060, - // Entry 447C0 - 447FF - 0x0425, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, - 0x0060, 0x0444, 0x0001, 0x0060, 0x0451, 0x0001, 0x0060, 0x046d, - 0x0001, 0x0060, 0x0486, 0x0007, 0x01dc, 0x01df, 0x01d9, 0x01e2, - 0x01e5, 0x01e8, 0x01eb, 0x0001, 0x0060, 0x0425, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0060, 0x0444, 0x0001, - 0x0060, 0x0451, 0x0001, 0x0060, 0x046d, 0x0001, 0x0060, 0x0486, - 0x0003, 0x01fd, 0x0000, 0x01f2, 0x0002, 0x01f5, 0x01f9, 0x0002, - 0x0060, 0x04a4, 0x0512, 0x0002, 0x0060, 0x04d0, 0x0535, 0x0002, - // Entry 44800 - 4483F - 0x0200, 0x0204, 0x0002, 0x0060, 0x0558, 0x056b, 0x0002, 0x0000, - 0x04f5, 0x04f9, 0x0004, 0x0216, 0x0210, 0x020d, 0x0213, 0x0001, - 0x0060, 0x057b, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, 0x01f2, - 0x0001, 0x001e, 0x0206, 0x0004, 0x0227, 0x0221, 0x021e, 0x0224, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0238, 0x0232, 0x022f, - 0x0235, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0241, 0x0000, - // Entry 44840 - 4487F - 0x0000, 0x0000, 0x0256, 0x0001, 0x0243, 0x0003, 0x0000, 0x0000, - 0x0247, 0x000d, 0x0060, 0xffff, 0x058b, 0x059e, 0x05b1, 0x05ca, - 0x05da, 0x05f0, 0x0609, 0x0622, 0x063b, 0x0657, 0x066a, 0x0677, - 0x0001, 0x0258, 0x0001, 0x025a, 0x0001, 0x0060, 0x068d, 0x0001, - 0x025f, 0x0001, 0x0261, 0x0003, 0x0000, 0x0000, 0x0265, 0x000d, - 0x0000, 0xffff, 0x0657, 0x3f6c, 0x40bf, 0x40c8, 0x40d2, 0x40db, - 0x3fb1, 0x0692, 0x3fc1, 0x06a3, 0x06ab, 0x06ba, 0x0040, 0x02b5, - 0x0000, 0x0000, 0x02ba, 0x02d1, 0x02e3, 0x02f5, 0x030c, 0x031e, - // Entry 44880 - 448BF - 0x0330, 0x0347, 0x035e, 0x0375, 0x0390, 0x03ab, 0x0000, 0x0000, - 0x0000, 0x03c6, 0x03df, 0x03f8, 0x0000, 0x0000, 0x0000, 0x0411, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0416, 0x042a, 0x043e, - 0x0452, 0x0466, 0x047a, 0x048e, 0x04a2, 0x04b6, 0x04ca, 0x04de, - 0x04f2, 0x0506, 0x051a, 0x052e, 0x0542, 0x0556, 0x056a, 0x057e, - 0x0592, 0x05a6, 0x0000, 0x05ba, 0x0000, 0x05bf, 0x05d5, 0x05e7, - 0x05f9, 0x060f, 0x0621, 0x0633, 0x0649, 0x065b, 0x066d, 0x0001, - 0x02b7, 0x0001, 0x0060, 0x0694, 0x0003, 0x02be, 0x02c1, 0x02c6, - // Entry 448C0 - 448FF - 0x0001, 0x0060, 0x06af, 0x0003, 0x0060, 0x06c8, 0x06e8, 0x0705, - 0x0002, 0x02c9, 0x02cd, 0x0002, 0x0060, 0x0754, 0x0731, 0x0002, - 0x0060, 0x07ad, 0x077d, 0x0003, 0x02d5, 0x0000, 0x02d8, 0x0001, - 0x0060, 0x07e0, 0x0002, 0x02db, 0x02df, 0x0002, 0x0060, 0x07e8, - 0x07e8, 0x0002, 0x0060, 0x07fa, 0x07fa, 0x0003, 0x02e7, 0x0000, - 0x02ea, 0x0001, 0x0060, 0x07e0, 0x0002, 0x02ed, 0x02f1, 0x0002, - 0x0060, 0x07e8, 0x07e8, 0x0002, 0x0060, 0x07fa, 0x07fa, 0x0003, - 0x02f9, 0x02fc, 0x0301, 0x0001, 0x0060, 0x0819, 0x0003, 0x0060, - // Entry 44900 - 4493F - 0x0838, 0x085e, 0x0881, 0x0002, 0x0304, 0x0308, 0x0002, 0x0060, - 0x08dc, 0x08b3, 0x0002, 0x0060, 0x0941, 0x090b, 0x0003, 0x0310, - 0x0000, 0x0313, 0x0001, 0x0060, 0x097a, 0x0002, 0x0316, 0x031a, - 0x0002, 0x0060, 0x09a6, 0x0988, 0x0002, 0x0060, 0x09ca, 0x09ca, - 0x0003, 0x0322, 0x0000, 0x0325, 0x0001, 0x0060, 0x097a, 0x0002, - 0x0328, 0x032c, 0x0002, 0x0060, 0x09a6, 0x0988, 0x0002, 0x0060, - 0x09ca, 0x09ca, 0x0003, 0x0334, 0x0337, 0x033c, 0x0001, 0x0060, - 0x09f5, 0x0003, 0x0060, 0x09ff, 0x0a10, 0x0a1e, 0x0002, 0x033f, - // Entry 44940 - 4497F - 0x0343, 0x0002, 0x0060, 0x0a4f, 0x0a3b, 0x0002, 0x0060, 0x0a8a, - 0x0a69, 0x0003, 0x034b, 0x034e, 0x0353, 0x0001, 0x0060, 0x09f5, - 0x0003, 0x0060, 0x09ff, 0x0a10, 0x0a1e, 0x0002, 0x0356, 0x035a, - 0x0002, 0x0060, 0x0a4f, 0x0a3b, 0x0002, 0x0060, 0x0a8a, 0x0a69, - 0x0003, 0x0362, 0x0365, 0x036a, 0x0001, 0x0060, 0x0aae, 0x0003, - 0x0060, 0x09ff, 0x0a10, 0x0a1e, 0x0002, 0x036d, 0x0371, 0x0002, - 0x0060, 0x0a4f, 0x0a3b, 0x0002, 0x0060, 0x0a8a, 0x0a69, 0x0004, - 0x037a, 0x037d, 0x0382, 0x038d, 0x0001, 0x0060, 0x0ab5, 0x0003, - // Entry 44980 - 449BF - 0x0060, 0x0ac5, 0x0ad9, 0x0aea, 0x0002, 0x0385, 0x0389, 0x0002, - 0x0060, 0x0b21, 0x0b0a, 0x0002, 0x0060, 0x0b62, 0x0b3e, 0x0001, - 0x0060, 0x0b89, 0x0004, 0x0395, 0x0398, 0x039d, 0x03a8, 0x0001, - 0x0060, 0x0ab5, 0x0003, 0x0060, 0x0ac5, 0x0ad9, 0x0aea, 0x0002, - 0x03a0, 0x03a4, 0x0002, 0x0060, 0x0b21, 0x0b0a, 0x0002, 0x0060, - 0x0b62, 0x0b3e, 0x0001, 0x0060, 0x0b89, 0x0004, 0x03b0, 0x03b3, - 0x03b8, 0x03c3, 0x0001, 0x0060, 0x0b9a, 0x0003, 0x0060, 0x0ac5, - 0x0ad9, 0x0aea, 0x0002, 0x03bb, 0x03bf, 0x0002, 0x0060, 0x0b21, - // Entry 449C0 - 449FF - 0x0b0a, 0x0002, 0x0060, 0x0b62, 0x0b3e, 0x0001, 0x0060, 0x0b89, - 0x0003, 0x03ca, 0x03cd, 0x03d4, 0x0001, 0x0060, 0x0ba1, 0x0005, - 0x0060, 0x0bbe, 0x0bce, 0x0bdf, 0x0bae, 0x0bec, 0x0002, 0x03d7, - 0x03db, 0x0002, 0x0060, 0x0c1c, 0x0c05, 0x0002, 0x0060, 0x0c5d, - 0x0c39, 0x0003, 0x03e3, 0x03e6, 0x03ed, 0x0001, 0x0060, 0x0ba1, - 0x0005, 0x0060, 0x0bbe, 0x0bce, 0x0bdf, 0x0bae, 0x0bec, 0x0002, - 0x03f0, 0x03f4, 0x0002, 0x0060, 0x0c1c, 0x0c05, 0x0002, 0x0060, - 0x0c5d, 0x0c39, 0x0003, 0x03fc, 0x03ff, 0x0406, 0x0001, 0x0060, - // Entry 44A00 - 44A3F - 0x0c84, 0x0005, 0x0060, 0x0bbe, 0x0bce, 0x0bdf, 0x0bae, 0x0bec, - 0x0002, 0x0409, 0x040d, 0x0002, 0x0060, 0x0c1c, 0x0c8b, 0x0002, - 0x0060, 0x0c5d, 0x0c5d, 0x0001, 0x0413, 0x0001, 0x0060, 0x0c9d, - 0x0003, 0x0000, 0x041a, 0x041f, 0x0003, 0x0060, 0x0cbd, 0x0cda, - 0x0cf4, 0x0002, 0x0422, 0x0426, 0x0002, 0x0060, 0x0d3d, 0x0d1d, - 0x0002, 0x0060, 0x0d63, 0x0d63, 0x0003, 0x0000, 0x042e, 0x0433, - 0x0003, 0x0060, 0x0d93, 0x0da5, 0x0db4, 0x0002, 0x0436, 0x043a, - 0x0002, 0x0060, 0x0d3d, 0x0d3d, 0x0002, 0x0060, 0x0d63, 0x0d63, - // Entry 44A40 - 44A7F - 0x0003, 0x0000, 0x0442, 0x0447, 0x0003, 0x0060, 0x0dd2, 0x0ddd, - 0x0de5, 0x0002, 0x044a, 0x044e, 0x0002, 0x0060, 0x0d3d, 0x0d3d, - 0x0002, 0x0060, 0x0d63, 0x0d63, 0x0003, 0x0000, 0x0456, 0x045b, - 0x0003, 0x0060, 0x0dfc, 0x0e19, 0x0e33, 0x0002, 0x045e, 0x0462, - 0x0002, 0x0060, 0x0e7c, 0x0e5c, 0x0002, 0x0060, 0x0ecc, 0x0e9f, - 0x0003, 0x0000, 0x046a, 0x046f, 0x0003, 0x0060, 0x0efc, 0x0f0e, - 0x0f1d, 0x0002, 0x0472, 0x0476, 0x0002, 0x0060, 0x0e7c, 0x0e7c, - 0x0002, 0x0060, 0x0ecc, 0x0ecc, 0x0003, 0x0000, 0x047e, 0x0483, - // Entry 44A80 - 44ABF - 0x0003, 0x0060, 0x0f3b, 0x0f49, 0x0f54, 0x0002, 0x0486, 0x048a, - 0x0002, 0x0060, 0x0e7c, 0x0e7c, 0x0002, 0x0060, 0x0ecc, 0x0ecc, - 0x0003, 0x0000, 0x0492, 0x0497, 0x0003, 0x0060, 0x0f6e, 0x0f8e, - 0x0fab, 0x0002, 0x049a, 0x049e, 0x0002, 0x0060, 0x0ffa, 0x0fd7, - 0x0002, 0x0060, 0x1050, 0x1020, 0x0003, 0x0000, 0x04a6, 0x04ab, - 0x0003, 0x0060, 0x1083, 0x1098, 0x10aa, 0x0002, 0x04ae, 0x04b2, - 0x0002, 0x0060, 0x0ffa, 0x0ffa, 0x0002, 0x0060, 0x1050, 0x1050, - 0x0003, 0x0000, 0x04ba, 0x04bf, 0x0003, 0x0060, 0x10cb, 0x10d9, - // Entry 44AC0 - 44AFF - 0x10e4, 0x0002, 0x04c2, 0x04c6, 0x0002, 0x0060, 0x0ffa, 0x0ffa, - 0x0002, 0x0060, 0x1050, 0x1050, 0x0003, 0x0000, 0x04ce, 0x04d3, - 0x0003, 0x0060, 0x10fe, 0x111b, 0x1135, 0x0002, 0x04d6, 0x04da, - 0x0002, 0x0060, 0x117e, 0x115e, 0x0002, 0x0060, 0x11ce, 0x11a1, - 0x0003, 0x0000, 0x04e2, 0x04e7, 0x0003, 0x0060, 0x11fe, 0x1210, - 0x121f, 0x0002, 0x04ea, 0x04ee, 0x0002, 0x0060, 0x117e, 0x117e, - 0x0002, 0x0060, 0x11ce, 0x11ce, 0x0003, 0x0000, 0x04f6, 0x04fb, - 0x0003, 0x0060, 0x123d, 0x124b, 0x1256, 0x0002, 0x04fe, 0x0502, - // Entry 44B00 - 44B3F - 0x0002, 0x0060, 0x117e, 0x117e, 0x0002, 0x0060, 0x11ce, 0x11ce, - 0x0003, 0x0000, 0x050a, 0x050f, 0x0003, 0x0060, 0x1270, 0x1290, - 0x12ad, 0x0002, 0x0512, 0x0516, 0x0002, 0x0060, 0x12fc, 0x12d9, - 0x0002, 0x0060, 0x1352, 0x1322, 0x0003, 0x0000, 0x051e, 0x0523, - 0x0003, 0x0060, 0x1385, 0x139a, 0x13ac, 0x0002, 0x0526, 0x052a, - 0x0002, 0x0060, 0x12fc, 0x12fc, 0x0002, 0x0060, 0x1352, 0x1352, - 0x0003, 0x0000, 0x0532, 0x0537, 0x0003, 0x0060, 0x13cd, 0x13db, - 0x13e6, 0x0002, 0x053a, 0x053e, 0x0002, 0x0060, 0x12fc, 0x12fc, - // Entry 44B40 - 44B7F - 0x0002, 0x0060, 0x1352, 0x1352, 0x0003, 0x0000, 0x0546, 0x054b, - 0x0003, 0x0060, 0x1400, 0x1423, 0x1443, 0x0002, 0x054e, 0x0552, - 0x0002, 0x0060, 0x1498, 0x1472, 0x0002, 0x0060, 0x14f4, 0x14c1, - 0x0003, 0x0000, 0x055a, 0x055f, 0x0003, 0x0060, 0x152a, 0x1542, - 0x1557, 0x0002, 0x0562, 0x0566, 0x0002, 0x0060, 0x1498, 0x1498, - 0x0002, 0x0060, 0x14f4, 0x14f4, 0x0003, 0x0000, 0x056e, 0x0573, - 0x0003, 0x0060, 0x157b, 0x1589, 0x1594, 0x0002, 0x0576, 0x057a, - 0x0002, 0x0060, 0x1498, 0x1498, 0x0002, 0x0060, 0x14f4, 0x14f4, - // Entry 44B80 - 44BBF - 0x0003, 0x0000, 0x0582, 0x0587, 0x0003, 0x0060, 0x15ae, 0x15cb, - 0x15e5, 0x0002, 0x058a, 0x058e, 0x0002, 0x0060, 0x162e, 0x160e, - 0x0002, 0x0060, 0x167e, 0x1651, 0x0003, 0x0000, 0x0596, 0x059b, - 0x0003, 0x0060, 0x16ae, 0x16c0, 0x16cf, 0x0002, 0x059e, 0x05a2, - 0x0002, 0x0060, 0x162e, 0x162e, 0x0002, 0x0060, 0x167e, 0x167e, - 0x0003, 0x0000, 0x05aa, 0x05af, 0x0003, 0x0060, 0x16ed, 0x16f8, - 0x1700, 0x0002, 0x05b2, 0x05b6, 0x0002, 0x0060, 0x162e, 0x162e, - 0x0002, 0x0060, 0x167e, 0x167e, 0x0001, 0x05bc, 0x0001, 0x0007, - // Entry 44BC0 - 44BFF - 0x07cc, 0x0003, 0x05c3, 0x05c6, 0x05ca, 0x0001, 0x0060, 0x1717, - 0x0002, 0x0060, 0xffff, 0x1721, 0x0002, 0x05cd, 0x05d1, 0x0002, - 0x0060, 0x1743, 0x172f, 0x0002, 0x0060, 0x177e, 0x175d, 0x0003, - 0x05d9, 0x0000, 0x05dc, 0x0001, 0x0060, 0x17a2, 0x0002, 0x05df, - 0x05e3, 0x0002, 0x0060, 0x17aa, 0x17aa, 0x0002, 0x0060, 0x17bc, - 0x17bc, 0x0003, 0x05eb, 0x0000, 0x05ee, 0x0001, 0x0060, 0x17db, - 0x0002, 0x05f1, 0x05f5, 0x0002, 0x0060, 0x17aa, 0x17aa, 0x0002, - 0x0060, 0x17bc, 0x175d, 0x0003, 0x05fd, 0x0600, 0x0604, 0x0001, - // Entry 44C00 - 44C3F - 0x0060, 0x17e2, 0x0002, 0x0060, 0xffff, 0x17f8, 0x0002, 0x0607, - 0x060b, 0x0002, 0x0060, 0x182c, 0x180f, 0x0002, 0x0060, 0x1879, - 0x184f, 0x0003, 0x0613, 0x0000, 0x0616, 0x0001, 0x0060, 0x18a6, - 0x0002, 0x0619, 0x061d, 0x0002, 0x0060, 0x18b4, 0x18b4, 0x0002, - 0x0060, 0x18cc, 0x18cc, 0x0003, 0x0625, 0x0000, 0x0628, 0x0001, - 0x0060, 0x18f1, 0x0002, 0x062b, 0x062f, 0x0002, 0x0060, 0x18f8, - 0x18f8, 0x0002, 0x0060, 0x1904, 0x1904, 0x0003, 0x0637, 0x063a, - 0x063e, 0x0001, 0x0060, 0x1910, 0x0002, 0x0060, 0xffff, 0x1920, - // Entry 44C40 - 44C7F - 0x0002, 0x0641, 0x0645, 0x0002, 0x0060, 0x1956, 0x193c, 0x0002, - 0x0060, 0x199a, 0x1973, 0x0003, 0x064d, 0x0000, 0x0650, 0x0001, - 0x0060, 0x19c4, 0x0002, 0x0653, 0x0657, 0x0002, 0x0060, 0x19cf, - 0x19cf, 0x0002, 0x0060, 0x19e5, 0x19e5, 0x0003, 0x065f, 0x0000, - 0x0662, 0x0001, 0x0060, 0x19c4, 0x0002, 0x0665, 0x0669, 0x0002, - 0x0060, 0x19cf, 0x1a07, 0x0002, 0x0060, 0x19e5, 0x1973, 0x0001, - 0x066f, 0x0001, 0x0060, 0x1a13, 0x0004, 0x0677, 0x067c, 0x0681, - 0x068c, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0060, - // Entry 44C80 - 44CBF - 0x1a2d, 0x1a3e, 0x1a5c, 0x0002, 0x0000, 0x0684, 0x0002, 0x0000, - 0x0687, 0x0003, 0x0060, 0xffff, 0x1a89, 0x1abf, 0x0002, 0x0873, - 0x068f, 0x0003, 0x0693, 0x07d3, 0x0733, 0x009e, 0x0060, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1c68, 0x1d36, 0x1e5d, 0x1ef2, 0x1f72, - 0x1ffb, 0x209f, 0x2131, 0x21cf, 0x2379, 0x242d, 0x24dd, 0x25c6, - 0x266d, 0x271a, 0x2800, 0x2925, 0x2a14, 0x2b09, 0x2bb9, 0x2c4e, - 0xffff, 0xffff, 0x2d44, 0xffff, 0x2e2d, 0xffff, 0x2f1f, 0x2fb8, - 0x3032, 0x30c2, 0xffff, 0xffff, 0x31e1, 0x327f, 0x3336, 0xffff, - // Entry 44CC0 - 44CFF - 0xffff, 0xffff, 0x3460, 0xffff, 0x3539, 0x362b, 0xffff, 0x3757, - 0x3837, 0x3929, 0xffff, 0xffff, 0xffff, 0xffff, 0x3a93, 0xffff, - 0xffff, 0x3ba6, 0x3cb3, 0xffff, 0xffff, 0x3e52, 0x3f48, 0x3fe6, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x41b8, 0x4251, - 0x4313, 0x43d0, 0x4469, 0xffff, 0xffff, 0x4651, 0xffff, 0x4722, - 0xffff, 0xffff, 0x487e, 0xffff, 0x49ea, 0xffff, 0xffff, 0xffff, - 0xffff, 0x4b27, 0xffff, 0x4bdf, 0x4cb3, 0x4d99, 0x4e43, 0xffff, - 0xffff, 0xffff, 0x4f2f, 0x5006, 0x50e7, 0xffff, 0xffff, 0x521a, - // Entry 44D00 - 44D3F - 0x5367, 0x543b, 0x54d0, 0xffff, 0xffff, 0x55e0, 0x5675, 0x56ef, - 0xffff, 0x57d5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5a98, - 0x5b2d, 0x5bb0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x5d6a, 0xffff, 0xffff, 0x5e4c, 0xffff, 0x5ee6, 0xffff, - 0x5fec, 0x6081, 0x614c, 0xffff, 0x61f5, 0x62c9, 0xffff, 0xffff, - 0xffff, 0x641b, 0x64cb, 0xffff, 0xffff, 0x1af8, 0x1dc8, 0x224f, - 0x22e4, 0xffff, 0xffff, 0x492e, 0x599f, 0x009e, 0x0060, 0x1b72, - 0x1ba4, 0x1be0, 0x1c16, 0x1c9e, 0x1d59, 0x1e80, 0x1f0f, 0x1f92, - // Entry 44D40 - 44D7F - 0x2024, 0x20c2, 0x2151, 0x21ec, 0x239f, 0x2459, 0x251c, 0x25ef, - 0x2699, 0x2759, 0x2855, 0x2967, 0x2a56, 0x2b35, 0x2bdc, 0x2c7a, - 0x2cfe, 0x2d1e, 0x2d70, 0x2df4, 0x2e5a, 0x2ee0, 0x2f3c, 0x2fd2, - 0x304c, 0x30f1, 0x317b, 0x31b1, 0x3207, 0x32a9, 0x3356, 0x33bf, - 0x33df, 0x342d, 0x348d, 0x3513, 0x357b, 0x3667, 0x370b, 0x3793, - 0x3879, 0x3943, 0x39a3, 0x39d6, 0x3a41, 0x3a6d, 0x3ab9, 0x3b31, - 0x3b6a, 0x3bf1, 0x3cfe, 0x3dfc, 0x3e35, 0x3e8e, 0x3f6e, 0x4006, - 0x4072, 0x4095, 0x40cf, 0x40f5, 0x413a, 0x4179, 0x41d5, 0x4283, - // Entry 44D80 - 44DBF - 0x433c, 0x43ed, 0x44d2, 0x45d0, 0x4612, 0x4674, 0x46fc, 0x4760, - 0x4808, 0x4854, 0x48ab, 0x49b1, 0x4a0a, 0x4a76, 0x4a99, 0x4ac2, - 0x4af4, 0x4b4a, 0x4bbc, 0x4c18, 0x4cf2, 0x4dc3, 0x4e63, 0x4ecf, - 0x4ef5, 0x4f0f, 0x4f68, 0x503b, 0x5126, 0x51cd, 0x51e7, 0x5263, - 0x539f, 0x545e, 0x54fc, 0x5580, 0x55a0, 0x5603, 0x568f, 0x571b, - 0x579f, 0x583a, 0x592a, 0x5953, 0x5973, 0x5a4f, 0x5a78, 0x5abb, - 0x5b4a, 0x5bcd, 0x5c33, 0x5c59, 0x5c9b, 0x5cce, 0x5d07, 0x5d2d, - 0x5d4d, 0x5d84, 0x5df7, 0x5e26, 0x5e69, 0x5ecf, 0x5f24, 0x5fcc, - // Entry 44DC0 - 44DFF - 0x600f, 0x60b6, 0x6169, 0x61cf, 0x622d, 0x62fb, 0x638b, 0x63b1, - 0x63d8, 0x6447, 0x6503, 0x3dc0, 0x5321, 0x1b12, 0x1deb, 0x2272, - 0x2307, 0xffff, 0x483a, 0x494b, 0x59cb, 0x009e, 0x0060, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1cf0, 0x1d98, 0x1ebf, 0x1f48, 0x1fce, - 0x2069, 0x2101, 0x2196, 0x2225, 0x23e1, 0x24a1, 0x2577, 0x2634, - 0x26e1, 0x27b4, 0x28c3, 0x29c5, 0x2ab7, 0x2b7d, 0x2c1b, 0x2cc2, - 0xffff, 0xffff, 0x2db8, 0xffff, 0x2ea3, 0xffff, 0x2f75, 0x3008, - 0x3082, 0x313c, 0xffff, 0xffff, 0x3249, 0x32ef, 0x3392, 0xffff, - // Entry 44E00 - 44E3F - 0xffff, 0xffff, 0x34d6, 0xffff, 0x35d9, 0x36bf, 0xffff, 0x37eb, - 0x38d7, 0x3979, 0xffff, 0xffff, 0xffff, 0xffff, 0x3afb, 0xffff, - 0xffff, 0x3c58, 0x3d65, 0xffff, 0xffff, 0x3ee6, 0x3fb0, 0x4042, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x420e, 0x42d1, - 0x4381, 0x4426, 0x4557, 0xffff, 0xffff, 0x46b3, 0xffff, 0x47ba, - 0xffff, 0xffff, 0x48f4, 0xffff, 0x4a46, 0xffff, 0xffff, 0xffff, - 0xffff, 0x4b89, 0xffff, 0x4c6d, 0x4d4d, 0x4e09, 0x4e9f, 0xffff, - 0xffff, 0xffff, 0x4fbd, 0x508c, 0x5181, 0xffff, 0xffff, 0x52c8, - // Entry 44E40 - 44E7F - 0x53f3, 0x549d, 0x5544, 0xffff, 0xffff, 0x5642, 0x56c5, 0x5763, - 0xffff, 0x58bb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5afa, - 0x5b83, 0x5c06, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x5dba, 0xffff, 0xffff, 0x5ea2, 0xffff, 0x5f7e, 0xffff, - 0x604e, 0x6107, 0x61a2, 0xffff, 0x6281, 0x6349, 0xffff, 0xffff, - 0xffff, 0x648f, 0x6557, 0xffff, 0xffff, 0x1b48, 0x1e2a, 0x22b1, - 0x2346, 0xffff, 0xffff, 0x4984, 0x5a13, 0x0003, 0x0000, 0x0000, - 0x0877, 0x0042, 0x000b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 44E80 - 44EBF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0002, 0x0003, 0x00e9, - // Entry 44EC0 - 44EFF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, - 0x00b7, 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - 0x0036, 0x0000, 0x0045, 0x000d, 0x0045, 0xffff, 0x0666, 0x2b8a, - 0x065e, 0x2b8e, 0x2b92, 0x2b96, 0x2b9a, 0x2b9e, 0x2ba2, 0x2ba6, - // Entry 44F00 - 44F3F - 0x2baa, 0x2bae, 0x000d, 0x0061, 0xffff, 0x0000, 0x0006, 0x000b, - 0x0015, 0x0020, 0x0027, 0x003a, 0x0040, 0x0047, 0x0053, 0x005a, - 0x0061, 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x29cd, - 0x29d1, 0x29d7, 0x29b3, 0x29d1, 0x29d1, 0x29cf, 0x29bf, 0x29bb, - 0x29d3, 0x29dd, 0x29bf, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, - 0x0000, 0x0076, 0x0007, 0x0049, 0x003b, 0x1fec, 0x1ff0, 0x1ff4, - 0x1ff8, 0x1ffc, 0x2000, 0x0007, 0x0061, 0x0066, 0x0070, 0x007c, - 0x0084, 0x008c, 0x0099, 0x00a2, 0x0002, 0x0000, 0x0082, 0x0007, - // Entry 44F40 - 44F7F - 0x0017, 0x29cf, 0x29b5, 0x29a9, 0x29ab, 0x29ab, 0x29d7, 0x29bb, - 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, - 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0061, 0xffff, - 0x00ad, 0x00b8, 0x00c4, 0x00d0, 0x0001, 0x00a1, 0x0003, 0x00a5, - 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0061, 0x00e1, - 0x0001, 0x0061, 0x00eb, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0061, - 0x00e1, 0x0001, 0x0061, 0x00eb, 0x0003, 0x00c1, 0x0000, 0x00bb, - 0x0001, 0x00bd, 0x0002, 0x0056, 0x1d4d, 0x1d5e, 0x0001, 0x00c3, - // Entry 44F80 - 44FBF - 0x0002, 0x0016, 0x01fb, 0x01fe, 0x0004, 0x00d5, 0x00cf, 0x00cc, - 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, - 0x00dd, 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, - 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, - 0x0000, 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0134, 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 44FC0 - 44FFF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, - 0x0153, 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, - 0x012c, 0x0001, 0x0061, 0x00f2, 0x0001, 0x0131, 0x0001, 0x0061, - 0x00f7, 0x0001, 0x0136, 0x0001, 0x0061, 0x00fc, 0x0001, 0x013b, - 0x0001, 0x0061, 0x0101, 0x0002, 0x0141, 0x0144, 0x0001, 0x0061, - // Entry 45000 - 4503F - 0x0107, 0x0003, 0x0061, 0x010e, 0x0113, 0x0118, 0x0001, 0x014b, - 0x0001, 0x0061, 0x011c, 0x0001, 0x0150, 0x0001, 0x0061, 0x0122, - 0x0001, 0x0155, 0x0001, 0x0056, 0x1db2, 0x0001, 0x015a, 0x0001, - 0x0061, 0x0127, 0x0001, 0x015f, 0x0001, 0x0016, 0x022e, 0x0003, - 0x0004, 0x08c7, 0x0c75, 0x0012, 0x0017, 0x003f, 0x0138, 0x01a5, - 0x0296, 0x0000, 0x0303, 0x032e, 0x058d, 0x0617, 0x0689, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0716, 0x0833, 0x08a5, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0020, 0x002e, 0x0000, 0x9006, 0x0003, - // Entry 45040 - 4507F - 0x0029, 0x0000, 0x0024, 0x0001, 0x0026, 0x0001, 0x0061, 0x0130, - 0x0001, 0x002b, 0x0001, 0x0061, 0x014f, 0x0004, 0x003c, 0x0036, - 0x0033, 0x0039, 0x0001, 0x0061, 0x0158, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0000, 0x237b, 0x000a, 0x004a, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0127, 0x0000, 0x0000, 0x0000, - 0x00af, 0x0002, 0x004d, 0x007e, 0x0003, 0x0051, 0x0060, 0x006f, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - // Entry 45080 - 450BF - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0003, 0x0082, 0x0091, - 0x00a0, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - // Entry 450C0 - 450FF - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0006, 0x00b6, - 0x0000, 0x0000, 0x00c9, 0x00d1, 0x0114, 0x0001, 0x00b8, 0x0001, - 0x00ba, 0x000d, 0x0061, 0xffff, 0x0171, 0x017e, 0x018b, 0x0198, - 0x01a8, 0x01b5, 0x01c2, 0x01cc, 0x01d9, 0x01e6, 0x01f6, 0x01fd, - 0x0001, 0x00cb, 0x0001, 0x00cd, 0x0002, 0x0061, 0xffff, 0x020a, - 0x0001, 0x00d3, 0x0001, 0x00d5, 0x003d, 0x0061, 0xffff, 0x021d, - 0x0239, 0x024f, 0x0268, 0x0281, 0x0297, 0x02ad, 0x02c3, 0x02d9, - // Entry 45100 - 4513F - 0x02f5, 0x0314, 0x032a, 0x0340, 0x035f, 0x0375, 0x038b, 0x03a4, - 0x03bd, 0x03d3, 0x03ec, 0x0405, 0x0421, 0x043a, 0x044d, 0x0463, - 0x0479, 0x048f, 0x04a8, 0x04c1, 0x04dd, 0x04f3, 0x050c, 0x0522, - 0x053b, 0x0554, 0x0564, 0x057a, 0x0593, 0x05a9, 0x05c5, 0x05e1, - 0x05fd, 0x0613, 0x0629, 0x063f, 0x0655, 0x066e, 0x0681, 0x0697, - 0x06b3, 0x06cf, 0x06eb, 0x0704, 0x071d, 0x0733, 0x0746, 0x075c, - 0x0775, 0x078e, 0x07a4, 0x0001, 0x0116, 0x0001, 0x0118, 0x000d, - 0x0061, 0xffff, 0x07bd, 0x07c7, 0x07d1, 0x07de, 0x07f4, 0x0804, - // Entry 45140 - 4517F - 0x080b, 0x0815, 0x081f, 0x0829, 0x0845, 0x0855, 0x0004, 0x0135, - 0x012f, 0x012c, 0x0132, 0x0001, 0x0061, 0x085f, 0x0001, 0x0032, - 0x00ef, 0x0001, 0x0032, 0x00f8, 0x0001, 0x0032, 0x0100, 0x0001, - 0x013a, 0x0002, 0x013d, 0x0171, 0x0003, 0x0141, 0x0151, 0x0161, - 0x000e, 0x0061, 0xffff, 0x086e, 0x087e, 0x088b, 0x08a1, 0x08b1, - 0x08be, 0x08d7, 0x08f0, 0x090c, 0x0922, 0x0935, 0x0945, 0x0955, - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, - // Entry 45180 - 451BF - 0x000e, 0x0061, 0xffff, 0x086e, 0x087e, 0x088b, 0x08a1, 0x08b1, - 0x08be, 0x08d7, 0x08f0, 0x090c, 0x0922, 0x0935, 0x0945, 0x0955, - 0x0003, 0x0175, 0x0185, 0x0195, 0x000e, 0x0061, 0xffff, 0x086e, - 0x087e, 0x088b, 0x08a1, 0x08b1, 0x08be, 0x08d7, 0x08f0, 0x090c, - 0x0922, 0x0935, 0x0945, 0x0955, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0061, 0xffff, 0x086e, - 0x087e, 0x088b, 0x08a1, 0x08b1, 0x08be, 0x08d7, 0x08f0, 0x090c, - // Entry 451C0 - 451FF - 0x0922, 0x0935, 0x0945, 0x0955, 0x000a, 0x01b0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0285, 0x0000, 0x0000, 0x0000, 0x0215, 0x0002, - 0x01b3, 0x01e4, 0x0003, 0x01b7, 0x01c6, 0x01d5, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, - // Entry 45200 - 4523F - 0x386e, 0x3871, 0x3874, 0x0003, 0x01e8, 0x01f7, 0x0206, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, - 0x2396, 0x386e, 0x3871, 0x3874, 0x0006, 0x021c, 0x0000, 0x0000, - 0x0000, 0x022f, 0x0272, 0x0001, 0x021e, 0x0001, 0x0220, 0x000d, - // Entry 45240 - 4527F - 0x0061, 0xffff, 0x0171, 0x017e, 0x018b, 0x0198, 0x01a8, 0x01b5, - 0x01c2, 0x01cc, 0x01d9, 0x01e6, 0x01f6, 0x01fd, 0x0001, 0x0231, - 0x0001, 0x0233, 0x003d, 0x0061, 0xffff, 0x021d, 0x0239, 0x024f, - 0x0268, 0x0281, 0x0297, 0x02ad, 0x02c3, 0x02d9, 0x02f5, 0x0314, - 0x032a, 0x0340, 0x035f, 0x0375, 0x038b, 0x03a4, 0x03bd, 0x03d3, - 0x03ec, 0x0405, 0x0421, 0x043a, 0x044d, 0x0463, 0x0479, 0x048f, - 0x04a8, 0x04c1, 0x04dd, 0x04f3, 0x050c, 0x0522, 0x053b, 0x0554, - 0x0564, 0x057a, 0x0593, 0x05a9, 0x05c5, 0x05e1, 0x05fd, 0x0613, - // Entry 45280 - 452BF - 0x0629, 0x063f, 0x0655, 0x066e, 0x0681, 0x0697, 0x06b3, 0x06cf, - 0x06eb, 0x0704, 0x071d, 0x0733, 0x0746, 0x075c, 0x0775, 0x078e, - 0x07a4, 0x0001, 0x0274, 0x0001, 0x0276, 0x000d, 0x0061, 0xffff, - 0x07bd, 0x07c7, 0x07d1, 0x07de, 0x07f4, 0x0804, 0x080b, 0x0815, - 0x081f, 0x0829, 0x0845, 0x0855, 0x0004, 0x0293, 0x028d, 0x028a, - 0x0290, 0x0001, 0x0061, 0x085f, 0x0001, 0x0032, 0x00ef, 0x0001, - 0x0032, 0x00f8, 0x0001, 0x0032, 0x0100, 0x0001, 0x0298, 0x0002, - 0x029b, 0x02cf, 0x0003, 0x029f, 0x02af, 0x02bf, 0x000e, 0x0061, - // Entry 452C0 - 452FF - 0xffff, 0x0962, 0x097e, 0x0991, 0x09a4, 0x09ba, 0x09ca, 0x09e0, - 0x09f6, 0x0a0f, 0x0a22, 0x0a2f, 0x0a3f, 0x0a4f, 0x000e, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0061, - 0xffff, 0x0962, 0x097e, 0x0991, 0x09a4, 0x09ba, 0x09ca, 0x09e0, - 0x09f6, 0x0a0f, 0x0a22, 0x0a2f, 0x0a3f, 0x0a4f, 0x0003, 0x02d3, - 0x02e3, 0x02f3, 0x000e, 0x0061, 0xffff, 0x0962, 0x097e, 0x0991, - 0x09a4, 0x09ba, 0x09ca, 0x09e0, 0x09f6, 0x0a0f, 0x0a22, 0x0a2f, - // Entry 45300 - 4533F - 0x0a3f, 0x0a4f, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x0422, 0x000e, 0x0061, 0xffff, 0x0962, 0x097e, 0x0991, - 0x09a4, 0x09ba, 0x09ca, 0x09e0, 0x09f6, 0x0a0f, 0x0a22, 0x0a2f, - 0x0a3f, 0x0a4f, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x030c, 0x0000, 0x031d, 0x0004, 0x031a, 0x0314, 0x0311, 0x0317, - 0x0001, 0x0061, 0x0158, 0x0001, 0x0061, 0x0a65, 0x0001, 0x0061, - 0x0a70, 0x0001, 0x0010, 0x004c, 0x0004, 0x032b, 0x0325, 0x0322, - // Entry 45340 - 4537F - 0x0328, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0337, 0x039c, - 0x03f3, 0x0428, 0x0535, 0x055a, 0x056b, 0x057c, 0x0002, 0x033a, - 0x036b, 0x0003, 0x033e, 0x034d, 0x035c, 0x000d, 0x0061, 0xffff, - 0x0a7a, 0x0a83, 0x0a8c, 0x0a98, 0x0aa4, 0x0aad, 0x0ab9, 0x0ac2, - 0x0acb, 0x0ad4, 0x0add, 0x0ae6, 0x000d, 0x0061, 0xffff, 0x0a7a, - 0x0a83, 0x0a8c, 0x0a98, 0x0aa4, 0x0aad, 0x0ab9, 0x0ac2, 0x0acb, - 0x0ad4, 0x0add, 0x0ae6, 0x000d, 0x0061, 0xffff, 0x0aef, 0x0b02, - // Entry 45380 - 453BF - 0x0b21, 0x0b34, 0x0b47, 0x0b5d, 0x0b76, 0x0b8c, 0x0ba2, 0x0bb8, - 0x0bcb, 0x0be7, 0x0003, 0x036f, 0x037e, 0x038d, 0x000d, 0x0061, - 0xffff, 0x0a7a, 0x0a83, 0x0a8c, 0x0a98, 0x0aa4, 0x0aad, 0x0ab9, - 0x0ac2, 0x0acb, 0x0ad4, 0x0add, 0x0ae6, 0x000d, 0x0061, 0xffff, - 0x0a7a, 0x0a83, 0x0a8c, 0x0a98, 0x0aa4, 0x0aad, 0x0ab9, 0x0ac2, - 0x0acb, 0x0ad4, 0x0add, 0x0ae6, 0x000d, 0x0061, 0xffff, 0x0aef, - 0x0b02, 0x0b21, 0x0b34, 0x0b47, 0x0b5d, 0x0b76, 0x0b8c, 0x0ba2, - 0x0bb8, 0x0bcb, 0x0be7, 0x0002, 0x039f, 0x03c9, 0x0005, 0x03a5, - // Entry 453C0 - 453FF - 0x03ae, 0x03c0, 0x0000, 0x03b7, 0x0007, 0x0061, 0x0bfd, 0x0c05, - 0x0c0a, 0x0c0f, 0x0c14, 0x0c1c, 0x0c21, 0x0007, 0x0061, 0x0c26, - 0x0c2d, 0x0c31, 0x0c35, 0x0c39, 0x0c40, 0x0c44, 0x0007, 0x0061, - 0x0bfd, 0x0c05, 0x0c0a, 0x0c0f, 0x0c14, 0x0c1c, 0x0c21, 0x0007, - 0x0061, 0x0c48, 0x0c67, 0x0c83, 0x0c9f, 0x0cb2, 0x0cd4, 0x0ced, - 0x0005, 0x03cf, 0x03d8, 0x03ea, 0x0000, 0x03e1, 0x0007, 0x0061, - 0x0bfd, 0x0c05, 0x0c0a, 0x0c0f, 0x0c14, 0x0c1c, 0x0c21, 0x0007, - 0x0061, 0x0c26, 0x0c2d, 0x0c31, 0x0c35, 0x0c39, 0x0c40, 0x0c44, - // Entry 45400 - 4543F - 0x0007, 0x0061, 0x0bfd, 0x0c05, 0x0c0a, 0x0c0f, 0x0c14, 0x0c1c, - 0x0c21, 0x0007, 0x0061, 0x0c48, 0x0c67, 0x0c83, 0x0c9f, 0x0cb2, - 0x0cd4, 0x0ced, 0x0002, 0x03f6, 0x040f, 0x0003, 0x03fa, 0x0401, - 0x0408, 0x0005, 0x0061, 0xffff, 0x0d06, 0x0d1b, 0x0d30, 0x0d45, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x0061, 0xffff, 0x0d06, 0x0d1b, 0x0d30, 0x0d45, 0x0003, 0x0413, - 0x041a, 0x0421, 0x0005, 0x0061, 0xffff, 0x0d06, 0x0d1b, 0x0d30, - 0x0d45, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - // Entry 45440 - 4547F - 0x0005, 0x0061, 0xffff, 0x0d06, 0x0d1b, 0x0d30, 0x0d45, 0x0002, - 0x042b, 0x04b0, 0x0003, 0x042f, 0x045a, 0x0485, 0x000c, 0x043f, - 0x0445, 0x043c, 0x0448, 0x044b, 0x0451, 0x0457, 0x0442, 0x0000, - 0x044e, 0x0000, 0x0454, 0x0001, 0x0061, 0x0d5a, 0x0001, 0x0061, - 0x0d76, 0x0001, 0x0061, 0x0d95, 0x0001, 0x0061, 0x0da8, 0x0001, - 0x0061, 0x0dc7, 0x0001, 0x0061, 0x0de3, 0x0001, 0x0061, 0x0dff, - 0x0001, 0x0061, 0x0e0c, 0x0001, 0x0061, 0x0e28, 0x0001, 0x0061, - 0x0e32, 0x000c, 0x046a, 0x0470, 0x0467, 0x0473, 0x0476, 0x047c, - // Entry 45480 - 454BF - 0x0482, 0x046d, 0x0000, 0x0479, 0x0000, 0x047f, 0x0001, 0x0061, - 0x0d5a, 0x0001, 0x0000, 0x1f9c, 0x0001, 0x0000, 0x3a8f, 0x0001, - 0x0000, 0x21ec, 0x0001, 0x0061, 0x0e48, 0x0001, 0x0061, 0x0d95, - 0x0001, 0x0061, 0x0dff, 0x0001, 0x0061, 0x0e55, 0x0001, 0x0061, - 0x0e28, 0x0001, 0x0061, 0x0e32, 0x000c, 0x0495, 0x049b, 0x0492, - 0x049e, 0x04a1, 0x04a7, 0x04ad, 0x0498, 0x0000, 0x04a4, 0x0000, - 0x04aa, 0x0001, 0x0061, 0x0d5a, 0x0001, 0x0061, 0x0d76, 0x0001, - 0x0061, 0x0d95, 0x0001, 0x0061, 0x0da8, 0x0001, 0x0061, 0x0dc7, - // Entry 454C0 - 454FF - 0x0001, 0x0061, 0x0de3, 0x0001, 0x0061, 0x0dff, 0x0001, 0x0061, - 0x0e0c, 0x0001, 0x0061, 0x0e28, 0x0001, 0x0061, 0x0e32, 0x0003, - 0x04b4, 0x04df, 0x050a, 0x000c, 0x04c4, 0x04ca, 0x04c1, 0x04cd, - 0x04d0, 0x04d6, 0x04dc, 0x04c7, 0x0000, 0x04d3, 0x0000, 0x04d9, - 0x0001, 0x0061, 0x0d5a, 0x0001, 0x0061, 0x0d76, 0x0001, 0x0061, - 0x0d95, 0x0001, 0x0061, 0x0da8, 0x0001, 0x0061, 0x0dc7, 0x0001, - 0x0061, 0x0de3, 0x0001, 0x0061, 0x0dff, 0x0001, 0x0061, 0x0e0c, - 0x0001, 0x0061, 0x0e28, 0x0001, 0x0061, 0x0e32, 0x000c, 0x04ef, - // Entry 45500 - 4553F - 0x04f5, 0x04ec, 0x04f8, 0x04fb, 0x0501, 0x0507, 0x04f2, 0x0000, - 0x04fe, 0x0000, 0x0504, 0x0001, 0x0061, 0x0d5a, 0x0001, 0x0061, - 0x0d76, 0x0001, 0x0061, 0x0d95, 0x0001, 0x0061, 0x0da8, 0x0001, - 0x0061, 0x0e48, 0x0001, 0x0061, 0x0e62, 0x0001, 0x0061, 0x0dff, - 0x0001, 0x0061, 0x0e55, 0x0001, 0x0061, 0x0e28, 0x0001, 0x0061, - 0x0e32, 0x000c, 0x051a, 0x0520, 0x0517, 0x0523, 0x0526, 0x052c, - 0x0532, 0x051d, 0x0000, 0x0529, 0x0000, 0x052f, 0x0001, 0x0061, - 0x0d5a, 0x0001, 0x0061, 0x0d76, 0x0001, 0x0061, 0x0d95, 0x0001, - // Entry 45540 - 4557F - 0x0061, 0x0da8, 0x0001, 0x0061, 0x0dc7, 0x0001, 0x0061, 0x0de3, - 0x0001, 0x0061, 0x0dff, 0x0001, 0x0061, 0x0e0c, 0x0001, 0x0061, - 0x0e28, 0x0001, 0x0061, 0x0e32, 0x0003, 0x0544, 0x054f, 0x0539, - 0x0002, 0x053c, 0x0540, 0x0002, 0x0061, 0x0e81, 0x0ee6, 0x0002, - 0x0061, 0x0eb8, 0x0f0b, 0x0002, 0x0547, 0x054b, 0x0002, 0x0061, - 0x0f2d, 0x0f56, 0x0002, 0x0061, 0x0f49, 0x0f5f, 0x0002, 0x0552, - 0x0556, 0x0002, 0x0061, 0x0f68, 0x0f56, 0x0002, 0x0061, 0x0f49, - 0x0f5f, 0x0004, 0x0568, 0x0562, 0x055f, 0x0565, 0x0001, 0x0061, - // Entry 45580 - 455BF - 0x0158, 0x0001, 0x0061, 0x0a65, 0x0001, 0x0001, 0x1fb9, 0x0001, - 0x0000, 0x237b, 0x0004, 0x0579, 0x0573, 0x0570, 0x0576, 0x0001, - 0x0061, 0x0f7e, 0x0001, 0x0061, 0x0fbe, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x058a, 0x0584, 0x0581, 0x0587, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, 0x0594, 0x0000, 0x0000, - 0x0000, 0x05ff, 0x0606, 0x0002, 0x0597, 0x05cb, 0x0003, 0x059b, - 0x05ab, 0x05bb, 0x000e, 0x0061, 0x1076, 0x0ffb, 0x100b, 0x101b, - // Entry 455C0 - 455FF - 0x102e, 0x103e, 0x104e, 0x1063, 0x108c, 0x109f, 0x10b2, 0x10c2, - 0x10d2, 0x10dc, 0x000e, 0x0000, 0x003f, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x0422, 0x000e, 0x0061, 0x1076, 0x0ffb, 0x100b, 0x101b, - 0x102e, 0x103e, 0x104e, 0x1063, 0x108c, 0x109f, 0x10b2, 0x10c2, - 0x10d2, 0x10dc, 0x0003, 0x05cf, 0x05df, 0x05ef, 0x000e, 0x0061, - 0x1076, 0x0ffb, 0x100b, 0x101b, 0x102e, 0x103e, 0x104e, 0x1063, - 0x108c, 0x109f, 0x10b2, 0x10c2, 0x10d2, 0x10dc, 0x000e, 0x0000, - // Entry 45600 - 4563F - 0x003f, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x0422, 0x000e, 0x0061, - 0x1076, 0x0ffb, 0x100b, 0x101b, 0x102e, 0x103e, 0x104e, 0x1063, - 0x108c, 0x109f, 0x10b2, 0x10c2, 0x10d2, 0x10dc, 0x0001, 0x0601, - 0x0001, 0x0603, 0x0001, 0x0061, 0x10ef, 0x0004, 0x0614, 0x060e, - 0x060b, 0x0611, 0x0001, 0x0061, 0x0158, 0x0001, 0x0061, 0x0a65, - 0x0001, 0x0061, 0x0a70, 0x0001, 0x0010, 0x004c, 0x0005, 0x061d, - 0x0000, 0x0000, 0x0000, 0x0682, 0x0002, 0x0620, 0x0651, 0x0003, - // Entry 45640 - 4567F - 0x0624, 0x0633, 0x0642, 0x000d, 0x0061, 0xffff, 0x10f8, 0x1108, - 0x111b, 0x112b, 0x113b, 0x114b, 0x115b, 0x1171, 0x1187, 0x119d, - 0x11ad, 0x11ba, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x000d, 0x0061, 0xffff, 0x10f8, 0x1108, 0x111b, 0x112b, - 0x113b, 0x114b, 0x115b, 0x1171, 0x1187, 0x119d, 0x11ad, 0x11ba, - 0x0003, 0x0655, 0x0664, 0x0673, 0x000d, 0x0061, 0xffff, 0x10f8, - 0x1108, 0x111b, 0x112b, 0x113b, 0x114b, 0x115b, 0x1171, 0x1187, - // Entry 45680 - 456BF - 0x119d, 0x11ad, 0x11ba, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, - 0x3871, 0x3874, 0x000d, 0x0061, 0xffff, 0x10f8, 0x1108, 0x111b, - 0x112b, 0x113b, 0x114b, 0x115b, 0x1171, 0x1187, 0x119d, 0x11ad, - 0x11ba, 0x0001, 0x0684, 0x0001, 0x0686, 0x0001, 0x0061, 0x11cd, - 0x0008, 0x0692, 0x0000, 0x0000, 0x0000, 0x06f7, 0x0705, 0x0000, - 0x9006, 0x0002, 0x0695, 0x06c6, 0x0003, 0x0699, 0x06a8, 0x06b7, - 0x000d, 0x0061, 0xffff, 0x11d6, 0x11e7, 0x11f5, 0x1204, 0x1214, - // Entry 456C0 - 456FF - 0x1229, 0x123f, 0x124d, 0x125b, 0x126f, 0x127d, 0x1294, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0061, - 0xffff, 0x12a8, 0x12c4, 0x11f5, 0x1204, 0x1214, 0x1229, 0x12d7, - 0x12e7, 0x12fd, 0x1313, 0x1326, 0x1348, 0x0003, 0x06ca, 0x06d9, - 0x06e8, 0x000d, 0x0061, 0xffff, 0x11d6, 0x11e7, 0x11f5, 0x1204, - 0x1214, 0x1229, 0x123f, 0x124d, 0x125b, 0x126f, 0x127d, 0x1294, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - // Entry 45700 - 4573F - 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, - 0x0061, 0xffff, 0x12a8, 0x12c4, 0x11f5, 0x1204, 0x1214, 0x1229, - 0x12d7, 0x12e7, 0x12fd, 0x1313, 0x1326, 0x1348, 0x0003, 0x0700, - 0x0000, 0x06fb, 0x0001, 0x06fd, 0x0001, 0x0061, 0x1367, 0x0001, - 0x0702, 0x0001, 0x0061, 0x1395, 0x0004, 0x0713, 0x070d, 0x070a, - 0x0710, 0x0001, 0x0061, 0x0158, 0x0001, 0x0061, 0x0a65, 0x0001, - 0x0061, 0x0a70, 0x0001, 0x0010, 0x004c, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x071f, 0x0811, 0x0000, 0x0822, 0x0001, 0x0721, - // Entry 45740 - 4577F - 0x0001, 0x0723, 0x00ec, 0x0061, 0x139e, 0x13bd, 0x13dc, 0x13fb, - 0x1414, 0x1433, 0x144f, 0x1468, 0x1481, 0x149a, 0x14b6, 0x14de, - 0x1514, 0x1547, 0x157a, 0x15b3, 0x15e0, 0x15f9, 0x1618, 0x1646, - 0x1665, 0x1681, 0x16a0, 0x16b9, 0x16d2, 0x16ee, 0x1710, 0x1732, - 0x174e, 0x176d, 0x1789, 0x17ae, 0x17cd, 0x17ec, 0x180b, 0x1824, - 0x184c, 0x187a, 0x18a2, 0x18bb, 0x18d4, 0x18f0, 0x1918, 0x193d, - 0x195c, 0x1981, 0x199d, 0x19b9, 0x19d8, 0x19f1, 0x1a19, 0x1a3b, - 0x1a55, 0x1a73, 0x1a8e, 0x1aaf, 0x1acd, 0x1aeb, 0x1b0c, 0x1b36, - // Entry 45780 - 457BF - 0x1b54, 0x1b7b, 0x1b96, 0x1bb7, 0x1bd2, 0x1bfc, 0x1c20, 0x1c3b, - 0x1c65, 0x1c83, 0x1ca7, 0x1cc5, 0x1ce3, 0x1cfe, 0x1d22, 0x1d3d, - 0x1d58, 0x1d73, 0x1d97, 0x1db8, 0x1dd6, 0x1df7, 0x1e18, 0x1e39, - 0x1e5a, 0x1e7b, 0x1e96, 0x1eba, 0x1ed5, 0x1ef0, 0x1f11, 0x1f32, - 0x1f50, 0x1f6e, 0x1f92, 0x1fad, 0x1fd7, 0x1ff2, 0x2010, 0x202e, - 0x204f, 0x206a, 0x2088, 0x20ac, 0x20c7, 0x20e2, 0x20fd, 0x212d, - 0x214b, 0x216f, 0x218a, 0x21ae, 0x21d2, 0x21f3, 0x2214, 0x2244, - 0x2265, 0x2283, 0x229e, 0x22c2, 0x22e6, 0x2304, 0x2322, 0x233d, - // Entry 457C0 - 457FF - 0x2364, 0x2391, 0x23ac, 0x23d9, 0x23fa, 0x2418, 0x243c, 0x2457, - 0x2478, 0x2499, 0x24b4, 0x24d5, 0x24f3, 0x250e, 0x252c, 0x254d, - 0x256b, 0x2586, 0x25a4, 0x25c2, 0x25e9, 0x260a, 0x262e, 0x264f, - 0x266a, 0x2685, 0x26a3, 0x26c4, 0x26ee, 0x2709, 0x272d, 0x2757, - 0x2778, 0x2799, 0x27c0, 0x27e4, 0x27ff, 0x2829, 0x2847, 0x2868, - 0x2892, 0x28ad, 0x28ce, 0x28f2, 0x290d, 0x2928, 0x294c, 0x2967, - 0x2982, 0x29a6, 0x29c7, 0x29e8, 0x2a0c, 0x2a39, 0x2a54, 0x2a78, - 0x2a96, 0x2ab4, 0x2ad2, 0x2af0, 0x2b14, 0x2b3e, 0x2b59, 0x2b77, - // Entry 45800 - 4583F - 0x2b92, 0x2bb3, 0x2be0, 0x2c01, 0x2c1c, 0x2c40, 0x2c61, 0x2c82, - 0x2ca9, 0x2cc4, 0x2ce5, 0x2d03, 0x2d1e, 0x2d3c, 0x2d57, 0x2d81, - 0x2d9f, 0x2dc0, 0x2de1, 0x2e02, 0x2e26, 0x2e50, 0x2e6b, 0x2e8f, - 0x2eb3, 0x2ed7, 0x2ef5, 0x2f1f, 0x2f43, 0x2f6d, 0x2f88, 0x2fa6, - 0x2fc7, 0x2fe5, 0x3009, 0x3027, 0x3045, 0x3066, 0x3081, 0x309c, - 0x30ba, 0x30de, 0x30ff, 0x3120, 0x313b, 0x3148, 0x315b, 0x3168, - 0x0004, 0x081f, 0x0819, 0x0816, 0x081c, 0x0001, 0x0062, 0x0000, - 0x0001, 0x0062, 0x0028, 0x0001, 0x0061, 0x0a70, 0x0001, 0x001c, - // Entry 45840 - 4587F - 0x12bb, 0x0004, 0x0830, 0x082a, 0x0827, 0x082d, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0005, 0x0839, 0x0000, 0x0000, 0x0000, 0x089e, - 0x0002, 0x083c, 0x086d, 0x0003, 0x0840, 0x084f, 0x085e, 0x000d, - 0x0062, 0xffff, 0x0039, 0x005b, 0x0083, 0x0099, 0x00a9, 0x00bf, - 0x00db, 0x00eb, 0x00fb, 0x010e, 0x011b, 0x0131, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, 0x003f, - 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0062, 0xffff, - // Entry 45880 - 458BF - 0x0039, 0x005b, 0x0083, 0x0099, 0x00a9, 0x00bf, 0x00db, 0x00eb, - 0x00fb, 0x010e, 0x011b, 0x0131, 0x0003, 0x0871, 0x0880, 0x088f, - 0x000d, 0x0062, 0xffff, 0x0039, 0x005b, 0x0083, 0x0099, 0x00a9, - 0x00bf, 0x00db, 0x00eb, 0x00fb, 0x010e, 0x011b, 0x0131, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x003d, - 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, 0x000d, 0x0062, - 0xffff, 0x0039, 0x005b, 0x0083, 0x0099, 0x00a9, 0x00bf, 0x00db, - 0x00eb, 0x00fb, 0x010e, 0x011b, 0x0131, 0x0001, 0x08a0, 0x0001, - // Entry 458C0 - 458FF - 0x08a2, 0x0001, 0x0062, 0x014a, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x08ae, 0x08b6, 0x0000, 0x9006, 0x0001, 0x08b0, 0x0001, - 0x08b2, 0x0002, 0x0062, 0x016c, 0x0194, 0x0004, 0x08c4, 0x08be, - 0x08bb, 0x08c1, 0x0001, 0x0062, 0x0000, 0x0001, 0x0062, 0x0028, - 0x0001, 0x0061, 0x0a70, 0x0001, 0x0010, 0x004c, 0x0040, 0x0908, - 0x0000, 0x0000, 0x090d, 0x0922, 0x0937, 0x094c, 0x0961, 0x0971, - 0x0981, 0x0996, 0x09ab, 0x09c0, 0x09d9, 0x09f2, 0x0000, 0x0000, - 0x0000, 0x0a0b, 0x0a22, 0x0a39, 0x0000, 0x0000, 0x0000, 0x0a50, - // Entry 45900 - 4593F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a55, 0x0a67, 0x0a79, - 0x0a8b, 0x0a9d, 0x0aaf, 0x0ac1, 0x0ad3, 0x0ae5, 0x0af7, 0x0b09, - 0x0b1b, 0x0b2d, 0x0b3f, 0x0b51, 0x0b63, 0x0b75, 0x0b87, 0x0b99, - 0x0bab, 0x0bbd, 0x0000, 0x0bcf, 0x0000, 0x0bd4, 0x0be8, 0x0bf8, - 0x0c08, 0x0c1c, 0x0c2c, 0x0c3c, 0x0c50, 0x0c60, 0x0c70, 0x0001, - 0x090a, 0x0001, 0x0062, 0x01aa, 0x0003, 0x0911, 0x0914, 0x0919, - 0x0001, 0x0062, 0x01b7, 0x0003, 0x0062, 0x01be, 0x01da, 0x01ea, - 0x0002, 0x091c, 0x091f, 0x0001, 0x0062, 0x01fd, 0x0001, 0x0062, - // Entry 45940 - 4597F - 0x0218, 0x0003, 0x0926, 0x0929, 0x092e, 0x0001, 0x0062, 0x01b7, - 0x0003, 0x0062, 0x01be, 0x01da, 0x01ea, 0x0002, 0x0931, 0x0934, - 0x0001, 0x0062, 0x0238, 0x0001, 0x0062, 0x0218, 0x0003, 0x093b, - 0x093e, 0x0943, 0x0001, 0x0062, 0x01b7, 0x0003, 0x0062, 0x01be, - 0x01da, 0x01ea, 0x0002, 0x0946, 0x0949, 0x0001, 0x0062, 0x0238, - 0x0001, 0x0062, 0x0218, 0x0003, 0x0950, 0x0953, 0x0958, 0x0001, - 0x0062, 0x024a, 0x0003, 0x0062, 0x025d, 0x0285, 0x02a1, 0x0002, - 0x095b, 0x095e, 0x0001, 0x0062, 0x02c0, 0x0001, 0x0062, 0x02e7, - // Entry 45980 - 459BF - 0x0003, 0x0965, 0x0000, 0x0968, 0x0001, 0x0062, 0x024a, 0x0002, - 0x096b, 0x096e, 0x0001, 0x0062, 0x0313, 0x0001, 0x0062, 0x02e7, - 0x0003, 0x0975, 0x0000, 0x0978, 0x0001, 0x0062, 0x024a, 0x0002, - 0x097b, 0x097e, 0x0001, 0x0062, 0x0313, 0x0001, 0x0062, 0x02e7, - 0x0003, 0x0985, 0x0988, 0x098d, 0x0001, 0x0062, 0x0331, 0x0003, - 0x0062, 0x0341, 0x0366, 0x037f, 0x0002, 0x0990, 0x0993, 0x0001, - 0x0062, 0x039b, 0x0001, 0x0062, 0x03bf, 0x0003, 0x099a, 0x099d, - 0x09a2, 0x0001, 0x0062, 0x0331, 0x0003, 0x0062, 0x0341, 0x0366, - // Entry 459C0 - 459FF - 0x037f, 0x0002, 0x09a5, 0x09a8, 0x0001, 0x0062, 0x03ee, 0x0001, - 0x0062, 0x0409, 0x0003, 0x09af, 0x09b2, 0x09b7, 0x0001, 0x0062, - 0x0331, 0x0003, 0x0062, 0x0341, 0x0366, 0x037f, 0x0002, 0x09ba, - 0x09bd, 0x0001, 0x0062, 0x03ee, 0x0001, 0x0062, 0x0409, 0x0004, - 0x09c5, 0x09c8, 0x09cd, 0x09d6, 0x0001, 0x0062, 0x0432, 0x0003, - 0x0062, 0x0448, 0x0473, 0x0492, 0x0002, 0x09d0, 0x09d3, 0x0001, - 0x0062, 0x04b4, 0x0001, 0x0062, 0x04de, 0x0001, 0x0062, 0x0513, - 0x0004, 0x09de, 0x09e1, 0x09e6, 0x09ef, 0x0001, 0x0062, 0x0432, - // Entry 45A00 - 45A3F - 0x0003, 0x0062, 0x0448, 0x0473, 0x0492, 0x0002, 0x09e9, 0x09ec, - 0x0001, 0x0062, 0x055c, 0x0001, 0x0062, 0x057d, 0x0001, 0x0062, - 0x0513, 0x0004, 0x09f7, 0x09fa, 0x09ff, 0x0a08, 0x0001, 0x0062, - 0x0432, 0x0003, 0x0062, 0x0448, 0x0473, 0x0492, 0x0002, 0x0a02, - 0x0a05, 0x0001, 0x0062, 0x055c, 0x0001, 0x0062, 0x057d, 0x0001, - 0x0062, 0x0513, 0x0003, 0x0a0f, 0x0a12, 0x0a19, 0x0001, 0x0062, - 0x05ac, 0x0005, 0x0062, 0x05d8, 0x05f1, 0x0604, 0x05b6, 0x061d, - 0x0002, 0x0a1c, 0x0a1f, 0x0001, 0x0062, 0x0636, 0x0001, 0x0062, - // Entry 45A40 - 45A7F - 0x0654, 0x0003, 0x0a26, 0x0a29, 0x0a30, 0x0001, 0x0062, 0x05ac, - 0x0005, 0x0062, 0x05d8, 0x05f1, 0x0604, 0x05b6, 0x061d, 0x0002, - 0x0a33, 0x0a36, 0x0001, 0x0062, 0x067d, 0x0001, 0x0062, 0x0692, - 0x0003, 0x0a3d, 0x0a40, 0x0a47, 0x0001, 0x0062, 0x05ac, 0x0005, - 0x0062, 0x05d8, 0x05f1, 0x0604, 0x05b6, 0x061d, 0x0002, 0x0a4a, - 0x0a4d, 0x0001, 0x0062, 0x067d, 0x0001, 0x0062, 0x0692, 0x0001, - 0x0a52, 0x0001, 0x0062, 0x06b5, 0x0003, 0x0000, 0x0a59, 0x0a5e, - 0x0003, 0x0062, 0x06da, 0x070e, 0x0736, 0x0002, 0x0a61, 0x0a64, - // Entry 45A80 - 45ABF - 0x0001, 0x0062, 0x0761, 0x0001, 0x0062, 0x07a9, 0x0003, 0x0000, - 0x0a6b, 0x0a70, 0x0003, 0x0062, 0x06da, 0x070e, 0x0736, 0x0002, - 0x0a73, 0x0a76, 0x0001, 0x0062, 0x0761, 0x0001, 0x0062, 0x07a9, - 0x0003, 0x0000, 0x0a7d, 0x0a82, 0x0003, 0x0062, 0x06da, 0x070e, - 0x0736, 0x0002, 0x0a85, 0x0a88, 0x0001, 0x0062, 0x0761, 0x0001, - 0x0062, 0x07a9, 0x0003, 0x0000, 0x0a8f, 0x0a94, 0x0003, 0x0062, - 0x0806, 0x082e, 0x084a, 0x0002, 0x0a97, 0x0a9a, 0x0001, 0x0062, - 0x0869, 0x0001, 0x0062, 0x0890, 0x0003, 0x0000, 0x0aa1, 0x0aa6, - // Entry 45AC0 - 45AFF - 0x0003, 0x0062, 0x0806, 0x082e, 0x084a, 0x0002, 0x0aa9, 0x0aac, - 0x0001, 0x0062, 0x08bc, 0x0001, 0x0062, 0x0890, 0x0003, 0x0000, - 0x0ab3, 0x0ab8, 0x0003, 0x0062, 0x08dd, 0x082e, 0x084a, 0x0002, - 0x0abb, 0x0abe, 0x0001, 0x0062, 0x08bc, 0x0001, 0x0062, 0x0890, - 0x0003, 0x0000, 0x0ac5, 0x0aca, 0x0003, 0x0062, 0x090b, 0x0933, - 0x094f, 0x0002, 0x0acd, 0x0ad0, 0x0001, 0x0062, 0x096e, 0x0001, - 0x0062, 0x0995, 0x0003, 0x0000, 0x0ad7, 0x0adc, 0x0003, 0x0062, - 0x090b, 0x0933, 0x094f, 0x0002, 0x0adf, 0x0ae2, 0x0001, 0x0062, - // Entry 45B00 - 45B3F - 0x09c1, 0x0001, 0x0062, 0x0995, 0x0003, 0x0000, 0x0ae9, 0x0aee, - 0x0003, 0x0062, 0x09e2, 0x0933, 0x094f, 0x0002, 0x0af1, 0x0af4, - 0x0001, 0x0062, 0x09c1, 0x0001, 0x0062, 0x0995, 0x0003, 0x0000, - 0x0afb, 0x0b00, 0x0003, 0x0062, 0x0a10, 0x0a2f, 0x0a42, 0x0002, - 0x0b03, 0x0b06, 0x0001, 0x0062, 0x0a58, 0x0001, 0x0062, 0x0a76, - 0x0003, 0x0000, 0x0b0d, 0x0b12, 0x0003, 0x0062, 0x0a10, 0x0a2f, - 0x0a42, 0x0002, 0x0b15, 0x0b18, 0x0001, 0x0062, 0x0a99, 0x0001, - 0x0062, 0x0a76, 0x0003, 0x0000, 0x0b1f, 0x0b24, 0x0003, 0x0062, - // Entry 45B40 - 45B7F - 0x0ab1, 0x0a2f, 0x0a42, 0x0002, 0x0b27, 0x0b2a, 0x0001, 0x0062, - 0x0a58, 0x0001, 0x0062, 0x0a76, 0x0003, 0x0000, 0x0b31, 0x0b36, - 0x0003, 0x0062, 0x0ad6, 0x0afb, 0x0b14, 0x0002, 0x0b39, 0x0b3c, - 0x0001, 0x0062, 0x0b30, 0x0001, 0x0062, 0x0b54, 0x0003, 0x0000, - 0x0b43, 0x0b48, 0x0003, 0x0062, 0x0ad6, 0x0afb, 0x0b14, 0x0002, - 0x0b4b, 0x0b4e, 0x0001, 0x0062, 0x0b7d, 0x0001, 0x0062, 0x0b54, - 0x0003, 0x0000, 0x0b55, 0x0b5a, 0x0003, 0x0062, 0x0b9b, 0x0afb, - 0x0b14, 0x0002, 0x0b5d, 0x0b60, 0x0001, 0x0062, 0x0b7d, 0x0001, - // Entry 45B80 - 45BBF - 0x0062, 0x0b54, 0x0003, 0x0000, 0x0b67, 0x0b6c, 0x0003, 0x0062, - 0x0bc6, 0x0beb, 0x0c04, 0x0002, 0x0b6f, 0x0b72, 0x0001, 0x0062, - 0x0c20, 0x0001, 0x0062, 0x0c44, 0x0003, 0x0000, 0x0b79, 0x0b7e, - 0x0003, 0x0062, 0x0bc6, 0x0beb, 0x0c04, 0x0002, 0x0b81, 0x0b84, - 0x0001, 0x0062, 0x0c6d, 0x0001, 0x0062, 0x0c44, 0x0003, 0x0000, - 0x0b8b, 0x0b90, 0x0003, 0x0062, 0x0c8b, 0x0beb, 0x0c04, 0x0002, - 0x0b93, 0x0b96, 0x0001, 0x0062, 0x0c6d, 0x0001, 0x0062, 0x0c44, - 0x0003, 0x0000, 0x0b9d, 0x0ba2, 0x0003, 0x0062, 0x0cb6, 0x0cdb, - // Entry 45BC0 - 45BFF - 0x0cf4, 0x0002, 0x0ba5, 0x0ba8, 0x0001, 0x0062, 0x0d10, 0x0001, - 0x0062, 0x0d34, 0x0003, 0x0000, 0x0baf, 0x0bb4, 0x0003, 0x0062, - 0x0cb6, 0x0cdb, 0x0cf4, 0x0002, 0x0bb7, 0x0bba, 0x0001, 0x0062, - 0x0d5d, 0x0001, 0x0062, 0x0d34, 0x0003, 0x0000, 0x0bc1, 0x0bc6, - 0x0003, 0x0062, 0x0d7b, 0x0cdb, 0x0cf4, 0x0002, 0x0bc9, 0x0bcc, - 0x0001, 0x0062, 0x0d5d, 0x0001, 0x0062, 0x0d34, 0x0001, 0x0bd1, - 0x0001, 0x0062, 0x0da6, 0x0003, 0x0bd8, 0x0bdb, 0x0bdf, 0x0001, - 0x0062, 0x0dbc, 0x0002, 0x0062, 0xffff, 0x0dd2, 0x0002, 0x0be2, - // Entry 45C00 - 45C3F - 0x0be5, 0x0001, 0x0062, 0x0df1, 0x0001, 0x0062, 0x0e1b, 0x0003, - 0x0bec, 0x0000, 0x0bef, 0x0001, 0x0062, 0x0e50, 0x0002, 0x0bf2, - 0x0bf5, 0x0001, 0x0062, 0x0e58, 0x0001, 0x0062, 0x0e6b, 0x0003, - 0x0bfc, 0x0000, 0x0bff, 0x0001, 0x0062, 0x0e50, 0x0002, 0x0c02, - 0x0c05, 0x0001, 0x0062, 0x0e58, 0x0001, 0x0062, 0x0e6b, 0x0003, - 0x0c0c, 0x0c0f, 0x0c13, 0x0001, 0x0062, 0x0e8d, 0x0002, 0x0062, - 0xffff, 0x0e9a, 0x0002, 0x0c16, 0x0c19, 0x0001, 0x0062, 0x0eb0, - 0x0001, 0x0062, 0x0ed1, 0x0003, 0x0c20, 0x0000, 0x0c23, 0x0001, - // Entry 45C40 - 45C7F - 0x0062, 0x0efd, 0x0002, 0x0c26, 0x0c29, 0x0001, 0x0062, 0x0f02, - 0x0001, 0x0062, 0x0f1a, 0x0003, 0x0c30, 0x0000, 0x0c33, 0x0001, - 0x0062, 0x0efd, 0x0002, 0x0c36, 0x0c39, 0x0001, 0x0062, 0x0f02, - 0x0001, 0x0062, 0x0f1a, 0x0003, 0x0c40, 0x0c43, 0x0c47, 0x0001, - 0x0062, 0x0f40, 0x0002, 0x0062, 0xffff, 0x0f53, 0x0002, 0x0c4a, - 0x0c4d, 0x0001, 0x0062, 0x0f66, 0x0001, 0x0062, 0x0f8d, 0x0003, - 0x0c54, 0x0000, 0x0c57, 0x0001, 0x0062, 0x0fbf, 0x0002, 0x0c5a, - 0x0c5d, 0x0001, 0x0062, 0x0fc6, 0x0001, 0x0062, 0x0fe4, 0x0003, - // Entry 45C80 - 45CBF - 0x0c64, 0x0000, 0x0c67, 0x0001, 0x0062, 0x0fbf, 0x0002, 0x0c6a, - 0x0c6d, 0x0001, 0x0062, 0x0fc6, 0x0001, 0x0062, 0x0fe4, 0x0001, - 0x0c72, 0x0001, 0x0062, 0x1010, 0x0004, 0x0c7a, 0x0c7f, 0x0c84, - 0x0c93, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0062, - 0x1026, 0x1036, 0x1058, 0x0002, 0x0000, 0x0c87, 0x0003, 0x0000, - 0x0c8e, 0x0c8b, 0x0001, 0x0062, 0x107d, 0x0003, 0x0062, 0xffff, - 0x10b1, 0x10e5, 0x0002, 0x0000, 0x0c96, 0x0003, 0x0c9a, 0x0dda, - 0x0d3a, 0x009e, 0x0062, 0xffff, 0xffff, 0xffff, 0xffff, 0x1261, - // Entry 45CC0 - 45CFF - 0x1330, 0x1456, 0x14e6, 0x15f1, 0x1720, 0x1834, 0x193f, 0x19d8, - 0x1b7c, 0x1c00, 0x1cb4, 0x1dd4, 0x1e7f, 0x1f27, 0x2029, 0x2185, - 0x2299, 0x23a4, 0x2461, 0x24f1, 0xffff, 0xffff, 0x25d4, 0xffff, - 0x26b0, 0xffff, 0x2796, 0x2811, 0x2886, 0x28ef, 0xffff, 0xffff, - 0x29f9, 0x2a9b, 0x2b5e, 0xffff, 0xffff, 0xffff, 0x2c72, 0xffff, - 0x2d57, 0x2df9, 0xffff, 0x2efc, 0x2fb9, 0x30ac, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3206, 0xffff, 0xffff, 0x3313, 0x33fd, 0xffff, - 0xffff, 0x3532, 0x3601, 0x3688, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 45D00 - 45D3F - 0xffff, 0xffff, 0x386b, 0x38f8, 0x39a3, 0x3a39, 0x3ac6, 0xffff, - 0xffff, 0x3c23, 0xffff, 0x3cc3, 0xffff, 0xffff, 0x3df2, 0xffff, - 0x3f49, 0xffff, 0xffff, 0xffff, 0xffff, 0x408b, 0xffff, 0x4158, - 0x4287, 0x435c, 0x4410, 0xffff, 0xffff, 0xffff, 0x44e2, 0x45a8, - 0x4650, 0xffff, 0xffff, 0x4766, 0x48ae, 0x4962, 0x49e9, 0xffff, - 0xffff, 0x4acf, 0x4b68, 0x4bdd, 0xffff, 0x4cc2, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x4f2e, 0x4fbe, 0x5045, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x51db, 0xffff, 0xffff, - // Entry 45D40 - 45D7F - 0x529a, 0xffff, 0x532e, 0xffff, 0x541c, 0x54b5, 0x5569, 0xffff, - 0x562d, 0x56e1, 0xffff, 0xffff, 0xffff, 0x57fe, 0x5897, 0xffff, - 0xffff, 0x1122, 0x13c6, 0x1a5c, 0x1aec, 0xffff, 0xffff, 0x3e91, - 0x4e2d, 0x009e, 0x0062, 0x11a0, 0x11ce, 0x11fc, 0x1236, 0x1298, - 0x1352, 0x1478, 0x1532, 0x1649, 0x176f, 0x1880, 0x1964, 0x19f7, - 0x1b9b, 0x1c2e, 0x1d00, 0x1dff, 0x1ea7, 0x1f5e, 0x2090, 0x21c8, - 0x22d9, 0x23d5, 0x2483, 0x2519, 0x2593, 0x25af, 0x25fc, 0x2676, - 0x26d8, 0x2771, 0x27b2, 0x282a, 0x289c, 0x2917, 0x2991, 0x29c5, - // Entry 45D80 - 45DBF - 0x2a21, 0x2ac9, 0x2b7a, 0x2be2, 0x2bfe, 0x2c3b, 0x2ca3, 0x2d2f, - 0x2d7f, 0x2e2d, 0x2ebf, 0x2f2d, 0x2ffc, 0x30c5, 0x3121, 0x3152, - 0x31b6, 0x31de, 0x322b, 0x329f, 0x32df, 0x3353, 0x343a, 0x34f4, - 0x3510, 0x356a, 0x3620, 0x36a4, 0x3706, 0x3728, 0x3762, 0x3787, - 0x37ca, 0x381c, 0x388d, 0x3923, 0x39c8, 0x3a5b, 0x3aeb, 0x3ba6, - 0x3be6, 0x3c42, 0x3ca7, 0x3cf1, 0x3d77, 0x3dc1, 0x3e1a, 0x3f18, - 0x3f6b, 0x3fd9, 0x3ffe, 0x4023, 0x404b, 0x40b3, 0x4136, 0x41b0, - 0x42c1, 0x438a, 0x442c, 0x448e, 0x44a7, 0x44c6, 0x4516, 0x45d3, - // Entry 45DC0 - 45DFF - 0x4684, 0x4713, 0x4732, 0x47a9, 0x48dc, 0x4981, 0x4a0e, 0x4a82, - 0x4a9e, 0x4af4, 0x4b81, 0x4c08, 0x4c88, 0x4d08, 0x4dc4, 0x4de9, - 0x4e08, 0x4eea, 0x4f0f, 0x4f50, 0x4fdd, 0x5061, 0x50c3, 0x50e5, - 0x510a, 0x5144, 0x5178, 0x519d, 0x51bc, 0x51f4, 0x524d, 0x5278, - 0x52b6, 0x5318, 0x5365, 0x53fd, 0x5441, 0x54e3, 0x558e, 0x5602, - 0x565b, 0x5709, 0x5783, 0x57a2, 0x57c4, 0x5823, 0x58ce, 0x34de, - 0x4862, 0x113e, 0x13e8, 0x1a7e, 0x1b0e, 0x2752, 0x3da5, 0x3eb0, - 0x4e5e, 0x009e, 0x0062, 0xffff, 0xffff, 0xffff, 0xffff, 0x12e4, - // Entry 45E00 - 45E3F - 0x1389, 0x14af, 0x1593, 0x16b6, 0x17d3, 0x18e1, 0x199e, 0x1a2b, - 0x1bcf, 0x1c71, 0x1d6a, 0x1e3f, 0x1ee4, 0x1fc5, 0x210c, 0x2232, - 0x2340, 0x241b, 0x24ba, 0x2556, 0xffff, 0xffff, 0x2639, 0xffff, - 0x2715, 0xffff, 0x27e3, 0x2858, 0x28c7, 0x2954, 0xffff, 0xffff, - 0x2a5e, 0x2b0c, 0x2bab, 0xffff, 0xffff, 0xffff, 0x2ce9, 0xffff, - 0x2dbc, 0x2e76, 0xffff, 0x2f73, 0x3054, 0x30f3, 0xffff, 0xffff, - 0xffff, 0xffff, 0x3265, 0xffff, 0xffff, 0x33a8, 0x348c, 0xffff, - 0xffff, 0x35b7, 0x3654, 0x36d5, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 45E40 - 45E7F - 0xffff, 0xffff, 0x38c4, 0x3963, 0x3a02, 0x3a92, 0x3b3e, 0xffff, - 0xffff, 0x3c76, 0xffff, 0x3d34, 0xffff, 0xffff, 0x3e57, 0xffff, - 0x3fa2, 0xffff, 0xffff, 0xffff, 0xffff, 0x40f0, 0xffff, 0x421d, - 0x4310, 0x43cd, 0x445d, 0xffff, 0xffff, 0xffff, 0x455f, 0x4613, - 0x46cd, 0xffff, 0xffff, 0x4801, 0x491f, 0x49b5, 0x4a48, 0xffff, - 0xffff, 0x4b2e, 0x4baf, 0x4c48, 0xffff, 0x4d63, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x4f87, 0x5011, 0x5092, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5222, 0xffff, 0xffff, - // Entry 45E80 - 45EBF - 0x52e7, 0xffff, 0x53b1, 0xffff, 0x547b, 0x5526, 0x55c8, 0xffff, - 0x569e, 0x5746, 0xffff, 0xffff, 0xffff, 0x585d, 0x591a, 0xffff, - 0xffff, 0x116f, 0x141f, 0x1ab5, 0x1b45, 0xffff, 0xffff, 0x3ee4, - 0x4ea4, 0x0003, 0x0004, 0x0000, 0x0186, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, - 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, 0x0000, 0x0489, 0x0001, - 0x0000, 0x1e0b, 0x0001, 0x001c, 0x0437, 0x0001, 0x001c, 0x14e1, - // Entry 45EC0 - 45EFF - 0x0008, 0x0030, 0x0095, 0x00ec, 0x0121, 0x0139, 0x0153, 0x0164, - 0x0175, 0x0002, 0x0033, 0x0064, 0x0003, 0x0037, 0x0046, 0x0055, - 0x000d, 0x0063, 0xffff, 0x0000, 0x0007, 0x000e, 0x0015, 0x001c, - 0x0023, 0x002a, 0x0031, 0x0038, 0x003f, 0x0046, 0x004d, 0x000d, - 0x0063, 0xffff, 0x0054, 0x0058, 0x005c, 0x0060, 0x0064, 0x0068, - 0x006c, 0x0070, 0x005c, 0x0054, 0x0074, 0x0078, 0x000d, 0x0063, - 0xffff, 0x0000, 0x007c, 0x0089, 0x0096, 0x00a3, 0x0023, 0x00b0, - 0x00ba, 0x00c4, 0x00d4, 0x00e1, 0x00eb, 0x0003, 0x0068, 0x0077, - // Entry 45F00 - 45F3F - 0x0086, 0x000d, 0x0063, 0xffff, 0x0000, 0x0007, 0x000e, 0x0015, - 0x001c, 0x0023, 0x002a, 0x0031, 0x0038, 0x003f, 0x0046, 0x004d, - 0x000d, 0x0063, 0xffff, 0x0054, 0x0058, 0x005c, 0x0060, 0x0064, - 0x0068, 0x006c, 0x0070, 0x005c, 0x0054, 0x0074, 0x0078, 0x000d, - 0x0063, 0xffff, 0x0000, 0x007c, 0x0089, 0x0096, 0x00a3, 0x0023, - 0x00b0, 0x00ba, 0x00c4, 0x00d4, 0x00e1, 0x00eb, 0x0002, 0x0098, - 0x00c2, 0x0005, 0x009e, 0x00a7, 0x00b9, 0x0000, 0x00b0, 0x0007, - 0x0063, 0x00f8, 0x00ff, 0x0106, 0x010d, 0x0114, 0x011b, 0x0122, - // Entry 45F40 - 45F7F - 0x0007, 0x0063, 0x0068, 0x0068, 0x0068, 0x0129, 0x006c, 0x012d, - 0x0131, 0x0007, 0x0063, 0x00f8, 0x00ff, 0x0106, 0x010d, 0x0114, - 0x011b, 0x0122, 0x0007, 0x0063, 0x0135, 0x0142, 0x014c, 0x0156, - 0x0160, 0x016a, 0x0174, 0x0005, 0x00c8, 0x00d1, 0x00e3, 0x0000, - 0x00da, 0x0007, 0x0063, 0x00f8, 0x00ff, 0x0106, 0x010d, 0x0114, - 0x011b, 0x0122, 0x0007, 0x0063, 0x0068, 0x0068, 0x017e, 0x0129, - 0x006c, 0x012d, 0x0131, 0x0007, 0x0063, 0x00f8, 0x00ff, 0x0106, - 0x010d, 0x0114, 0x011b, 0x0122, 0x0007, 0x0063, 0x0135, 0x0142, - // Entry 45F80 - 45FBF - 0x0182, 0x0156, 0x018c, 0x016a, 0x0174, 0x0002, 0x00ef, 0x0108, - 0x0003, 0x00f3, 0x00fa, 0x0101, 0x0005, 0x0063, 0xffff, 0x0196, - 0x019b, 0x01a0, 0x01a5, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0063, 0xffff, 0x01aa, 0x01c1, 0x01d8, - 0x01ef, 0x0003, 0x010c, 0x0113, 0x011a, 0x0005, 0x0063, 0xffff, - 0x0196, 0x019b, 0x01a0, 0x01a5, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0063, 0xffff, 0x01aa, 0x01c1, - 0x01d8, 0x01ef, 0x0001, 0x0123, 0x0003, 0x0127, 0x0000, 0x0130, - // Entry 45FC0 - 45FFF - 0x0002, 0x012a, 0x012d, 0x0001, 0x0063, 0x0206, 0x0001, 0x0063, - 0x021a, 0x0002, 0x0133, 0x0136, 0x0001, 0x0063, 0x0206, 0x0001, - 0x0063, 0x021a, 0x0003, 0x0148, 0x0000, 0x013d, 0x0002, 0x0140, - 0x0144, 0x0002, 0x0002, 0x0505, 0x4c2e, 0x0002, 0x0063, 0x022e, - 0x023a, 0x0002, 0x014b, 0x014f, 0x0002, 0x0002, 0x0505, 0x0847, - 0x0002, 0x0063, 0x022e, 0x023a, 0x0004, 0x0161, 0x015b, 0x0158, - 0x015e, 0x0001, 0x0063, 0x0246, 0x0001, 0x0001, 0x002d, 0x0001, - 0x001c, 0x0442, 0x0001, 0x0014, 0x146e, 0x0004, 0x0172, 0x016c, - // Entry 46000 - 4603F - 0x0169, 0x016f, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0183, - 0x017d, 0x017a, 0x0180, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0004, - 0x018b, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x1dc7, 0x40b8, - 0x0001, 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, 0x001b, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0014, 0x0000, 0x0000, 0x0003, 0x0000, 0x0000, 0x0018, - // Entry 46040 - 4607F - 0x0001, 0x0063, 0x0267, 0x0005, 0x0000, 0x0021, 0x0000, 0x0000, - 0x0030, 0x0002, 0x0000, 0x0024, 0x0002, 0x0000, 0x0027, 0x0007, - 0x0063, 0x0068, 0x0068, 0x0068, 0x0129, 0x006c, 0x012d, 0x0131, - 0x0003, 0x0000, 0x0000, 0x0034, 0x0002, 0x0037, 0x003a, 0x0001, - 0x0002, 0x081c, 0x0002, 0x0063, 0x0288, 0x02ac, 0x0003, 0x0004, - 0x00e4, 0x02fd, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000d, 0x005d, 0x0008, 0x0000, 0x0016, 0x0000, 0x0000, - 0x0000, 0x003b, 0x004c, 0x0000, 0x0002, 0x0019, 0x002f, 0x0003, - // Entry 46080 - 460BF - 0x001d, 0x0000, 0x0026, 0x0007, 0x0063, 0x02d0, 0x02d4, 0x02d7, - 0x02da, 0x02de, 0x02e1, 0x02e4, 0x0007, 0x0063, 0x02e8, 0x02f3, - 0x02fc, 0x0305, 0x0310, 0x031a, 0x031f, 0x0002, 0x0000, 0x0032, - 0x0007, 0x0063, 0x0326, 0x0329, 0x032b, 0x032d, 0x0330, 0x0332, - 0x0334, 0x0004, 0x0049, 0x0043, 0x0040, 0x0046, 0x0001, 0x0063, - 0x0337, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x001e, 0x1a8e, 0x0004, 0x005a, 0x0054, 0x0051, 0x0057, 0x0001, - 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, - // Entry 460C0 - 460FF - 0x0001, 0x0000, 0x0546, 0x0008, 0x0066, 0x009d, 0x0000, 0x0000, - 0x0000, 0x00c2, 0x00d3, 0x0000, 0x0002, 0x0069, 0x008b, 0x0003, - 0x006d, 0x0000, 0x007c, 0x000d, 0x0063, 0xffff, 0x0347, 0x034c, - 0x0350, 0x0355, 0x0359, 0x035e, 0x0364, 0x036a, 0x036e, 0x0372, - 0x0376, 0x037b, 0x000d, 0x0063, 0xffff, 0x037f, 0x0387, 0x0350, - 0x038e, 0x0359, 0x035e, 0x0364, 0x0394, 0x039b, 0x03a5, 0x03ae, - 0x03b6, 0x0002, 0x0000, 0x008e, 0x000d, 0x0063, 0xffff, 0x0326, - 0x03bd, 0x03bf, 0x0332, 0x03bf, 0x03c1, 0x03c1, 0x0332, 0x032b, - // Entry 46100 - 4613F - 0x03c3, 0x03c5, 0x0329, 0x0002, 0x00a0, 0x00b6, 0x0003, 0x00a4, - 0x0000, 0x00ad, 0x0007, 0x0063, 0x02d0, 0x02d4, 0x02d7, 0x02da, - 0x02de, 0x02e1, 0x02e4, 0x0007, 0x0063, 0x02e8, 0x02f3, 0x02fc, - 0x0305, 0x0310, 0x031a, 0x031f, 0x0002, 0x0000, 0x00b9, 0x0007, - 0x0063, 0x0326, 0x0329, 0x032b, 0x032d, 0x0330, 0x0332, 0x0334, - 0x0004, 0x00d0, 0x00ca, 0x00c7, 0x00cd, 0x0001, 0x0063, 0x03c7, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0016, - 0x0470, 0x0004, 0x00e1, 0x00db, 0x00d8, 0x00de, 0x0001, 0x0000, - // Entry 46140 - 4617F - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0040, 0x0125, 0x0000, 0x0000, 0x012a, 0x0141, - 0x0153, 0x0165, 0x0177, 0x0189, 0x019b, 0x01b2, 0x01c4, 0x01d6, - 0x01ed, 0x01ff, 0x0000, 0x0000, 0x0000, 0x0211, 0x0228, 0x023a, - 0x0000, 0x0000, 0x0000, 0x024c, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0251, - // Entry 46180 - 461BF - 0x0000, 0x0256, 0x0268, 0x027a, 0x028c, 0x029e, 0x02b0, 0x02c2, - 0x02d4, 0x02e6, 0x02f8, 0x0001, 0x0127, 0x0001, 0x0063, 0x03d5, - 0x0003, 0x012e, 0x0131, 0x0136, 0x0001, 0x0063, 0x03dd, 0x0003, - 0x0063, 0x03e2, 0x03ee, 0x03f7, 0x0002, 0x0139, 0x013d, 0x0002, - 0x0063, 0x0403, 0x0403, 0x0002, 0x0063, 0x040f, 0x040f, 0x0003, - 0x0145, 0x0000, 0x0148, 0x0001, 0x0063, 0x041d, 0x0002, 0x014b, - 0x014f, 0x0002, 0x0063, 0x0421, 0x0421, 0x0002, 0x0063, 0x042c, - 0x042c, 0x0003, 0x0157, 0x0000, 0x015a, 0x0001, 0x0063, 0x041d, - // Entry 461C0 - 461FF - 0x0002, 0x015d, 0x0161, 0x0002, 0x0063, 0x0421, 0x0421, 0x0002, - 0x0063, 0x042c, 0x042c, 0x0003, 0x0169, 0x0000, 0x016c, 0x0001, - 0x0063, 0x0438, 0x0002, 0x016f, 0x0173, 0x0002, 0x0063, 0x0441, - 0x0441, 0x0002, 0x0063, 0x0452, 0x0452, 0x0003, 0x017b, 0x0000, - 0x017e, 0x0001, 0x0063, 0x0465, 0x0002, 0x0181, 0x0185, 0x0002, - 0x0063, 0x046c, 0x046c, 0x0002, 0x0063, 0x047a, 0x047a, 0x0003, - 0x018d, 0x0000, 0x0190, 0x0001, 0x0063, 0x0465, 0x0002, 0x0193, - 0x0197, 0x0002, 0x0063, 0x048a, 0x048a, 0x0002, 0x0063, 0x0495, - // Entry 46200 - 4623F - 0x0495, 0x0003, 0x019f, 0x01a2, 0x01a7, 0x0001, 0x0063, 0x04a2, - 0x0003, 0x0063, 0x04a6, 0x04b1, 0x04b9, 0x0002, 0x01aa, 0x01ae, - 0x0002, 0x0063, 0x04c4, 0x04c4, 0x0002, 0x0063, 0x04cf, 0x04cf, - 0x0003, 0x01b6, 0x0000, 0x01b9, 0x0001, 0x0063, 0x04a2, 0x0002, - 0x01bc, 0x01c0, 0x0002, 0x0063, 0x04c4, 0x04c4, 0x0002, 0x0063, - 0x04cf, 0x04cf, 0x0003, 0x01c8, 0x0000, 0x01cb, 0x0001, 0x0063, - 0x04a2, 0x0002, 0x01ce, 0x01d2, 0x0002, 0x0063, 0x04c4, 0x04c4, - 0x0002, 0x0063, 0x04cf, 0x04cf, 0x0003, 0x01da, 0x01dd, 0x01e2, - // Entry 46240 - 4627F - 0x0001, 0x0063, 0x04dc, 0x0003, 0x0063, 0x04e2, 0x04ef, 0x04f9, - 0x0002, 0x01e5, 0x01e9, 0x0002, 0x0063, 0x0506, 0x0506, 0x0002, - 0x0063, 0x0513, 0x0513, 0x0003, 0x01f1, 0x0000, 0x01f4, 0x0001, - 0x0063, 0x0522, 0x0002, 0x01f7, 0x01fb, 0x0002, 0x0063, 0x0527, - 0x0527, 0x0002, 0x0063, 0x0533, 0x0533, 0x0003, 0x0203, 0x0000, - 0x0206, 0x0001, 0x0063, 0x0522, 0x0002, 0x0209, 0x020d, 0x0002, - 0x0063, 0x0541, 0x0541, 0x0002, 0x0063, 0x054b, 0x054b, 0x0003, - 0x0215, 0x0218, 0x021d, 0x0001, 0x0063, 0x0557, 0x0003, 0x0063, - // Entry 46280 - 462BF - 0x055c, 0x0563, 0x056c, 0x0002, 0x0220, 0x0224, 0x0002, 0x0063, - 0x0572, 0x0572, 0x0002, 0x0063, 0x057e, 0x057e, 0x0003, 0x022c, - 0x0000, 0x022f, 0x0001, 0x0063, 0x0557, 0x0002, 0x0232, 0x0236, - 0x0002, 0x0063, 0x058c, 0x058c, 0x0002, 0x0063, 0x0596, 0x0596, - 0x0003, 0x023e, 0x0000, 0x0241, 0x0001, 0x0063, 0x0557, 0x0002, - 0x0244, 0x0248, 0x0002, 0x0063, 0x058c, 0x058c, 0x0002, 0x0063, - 0x0596, 0x0596, 0x0001, 0x024e, 0x0001, 0x0063, 0x05a2, 0x0001, - 0x0253, 0x0001, 0x0063, 0x05b3, 0x0003, 0x025a, 0x0000, 0x025d, - // Entry 462C0 - 462FF - 0x0001, 0x0063, 0x05c2, 0x0002, 0x0260, 0x0264, 0x0002, 0x0063, - 0x05c8, 0x05c8, 0x0002, 0x0063, 0x05d5, 0x05d5, 0x0003, 0x026c, - 0x0000, 0x026f, 0x0001, 0x0063, 0x05e4, 0x0002, 0x0272, 0x0276, - 0x0002, 0x0063, 0x05e9, 0x05e9, 0x0002, 0x0063, 0x05f5, 0x05f5, - 0x0003, 0x027e, 0x0000, 0x0281, 0x0001, 0x0063, 0x05e4, 0x0002, - 0x0284, 0x0288, 0x0002, 0x0063, 0x05e9, 0x05e9, 0x0002, 0x0063, - 0x05f5, 0x05f5, 0x0003, 0x0290, 0x0000, 0x0293, 0x0001, 0x0010, - 0x0b77, 0x0002, 0x0296, 0x029a, 0x0002, 0x0063, 0x0603, 0x0603, - // Entry 46300 - 4633F - 0x0002, 0x0063, 0x0610, 0x0610, 0x0003, 0x02a2, 0x0000, 0x02a5, - 0x0001, 0x0001, 0x075a, 0x0002, 0x02a8, 0x02ac, 0x0002, 0x0063, - 0x061f, 0x061f, 0x0002, 0x0063, 0x062b, 0x062b, 0x0003, 0x02b4, - 0x0000, 0x02b7, 0x0001, 0x0001, 0x075a, 0x0002, 0x02ba, 0x02be, - 0x0002, 0x0063, 0x061f, 0x061f, 0x0002, 0x0063, 0x062b, 0x062b, - 0x0003, 0x02c6, 0x0000, 0x02c9, 0x0001, 0x0063, 0x0639, 0x0002, - 0x02cc, 0x02d0, 0x0002, 0x0063, 0x0640, 0x0640, 0x0002, 0x0063, - 0x064e, 0x064e, 0x0003, 0x02d8, 0x0000, 0x02db, 0x0001, 0x0001, - // Entry 46340 - 4637F - 0x07d3, 0x0002, 0x02de, 0x02e2, 0x0002, 0x0063, 0x065e, 0x065e, - 0x0002, 0x0063, 0x066a, 0x066a, 0x0003, 0x02ea, 0x0000, 0x02ed, - 0x0001, 0x0001, 0x07d3, 0x0002, 0x02f0, 0x02f4, 0x0002, 0x0063, - 0x065e, 0x065e, 0x0002, 0x0063, 0x066a, 0x066a, 0x0001, 0x02fa, - 0x0001, 0x0063, 0x0678, 0x0004, 0x0302, 0x0307, 0x030c, 0x0317, - 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0063, 0x0689, - 0x0693, 0x06a5, 0x0002, 0x0000, 0x030f, 0x0002, 0x0000, 0x0312, - 0x0003, 0x0063, 0xffff, 0x06b8, 0x06d8, 0x0002, 0x04e0, 0x031a, - // Entry 46380 - 463BF - 0x0003, 0x03b4, 0x044a, 0x031e, 0x0094, 0x0063, 0x06f2, 0x06fd, - 0x070c, 0x071d, 0x074d, 0x0795, 0x07cd, 0x080c, 0x085a, 0x08ad, - 0x0900, 0xffff, 0x093e, 0x0974, 0x09b9, 0x09fe, 0x0a4e, 0x0a8b, - 0x0ad0, 0x0b3a, 0x0bb7, 0x0c16, 0x0c6b, 0x0cad, 0x0cef, 0x0d22, - 0x0d28, 0x0d3d, 0x0d70, 0x0d8e, 0x0dc1, 0x0dd1, 0x0e02, 0x0e32, - 0x0e69, 0x0e9e, 0x0eac, 0x0ec5, 0x0f05, 0x0f41, 0x0f68, 0x0f70, - 0x0f82, 0x0f9e, 0x0fd3, 0x0fec, 0x103e, 0x1081, 0x10ac, 0x1100, - 0x1144, 0x116b, 0x117a, 0x1199, 0x11ab, 0x11bc, 0x11eb, 0x11fc, - // Entry 463C0 - 463FF - 0x1230, 0x1292, 0x12dd, 0x12f9, 0x130e, 0x134d, 0x137f, 0x13a6, - 0x13b0, 0x13bd, 0x13c9, 0x13dd, 0x13f3, 0x1410, 0x1443, 0x1479, - 0x14b3, 0xffff, 0x14e6, 0x14fb, 0x1518, 0x1545, 0x155b, 0x1592, - 0x159d, 0x15b4, 0x15e3, 0x15f4, 0x1621, 0x162d, 0x1637, 0x1646, - 0x1660, 0x1691, 0x16aa, 0x1702, 0x1758, 0x1792, 0x17bd, 0x17c5, - 0x17cb, 0x17e3, 0x1835, 0x1882, 0x18bb, 0x18c0, 0x18dd, 0x1930, - 0x1969, 0x199a, 0x19cb, 0x19d1, 0x19f2, 0x1a28, 0x1a5b, 0x1a90, - 0x1ab4, 0x1afb, 0x1b03, 0xffff, 0x1b0a, 0x1b15, 0x1b24, 0xffff, - // Entry 46400 - 4643F - 0x1b57, 0x1b80, 0x1b91, 0x1ba9, 0x1bb9, 0x1bcc, 0x1bd4, 0x1bdb, - 0x1bec, 0x1c1b, 0x1c27, 0x1c35, 0x1c5e, 0x1c72, 0x1cb4, 0x1cc4, - 0x1cff, 0x1d3c, 0x1d69, 0x1d7f, 0x1dbe, 0x1def, 0x1df6, 0x1e02, - 0x1e1c, 0x1e5a, 0x0094, 0x0063, 0xffff, 0xffff, 0xffff, 0xffff, - 0x073c, 0x078c, 0x07c4, 0x07fc, 0x0849, 0x0899, 0x08f2, 0xffff, - 0x0939, 0x0965, 0x09af, 0x09ea, 0x0a43, 0x0a81, 0x0abc, 0x0b15, - 0x0ba1, 0x0c00, 0x0c5f, 0x0ca0, 0x0ce4, 0xffff, 0xffff, 0x0d32, - 0xffff, 0x0d83, 0xffff, 0x0dca, 0x0dfc, 0x0e2b, 0x0e5d, 0xffff, - // Entry 46440 - 4647F - 0xffff, 0x0eba, 0x0ef8, 0x0f3c, 0xffff, 0xffff, 0xffff, 0x0f92, - 0xffff, 0x0fdb, 0x102b, 0xffff, 0x1099, 0x10ef, 0x113f, 0xffff, - 0xffff, 0xffff, 0xffff, 0x11b3, 0xffff, 0xffff, 0x1219, 0x127b, - 0xffff, 0xffff, 0x1301, 0x1345, 0x137a, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1409, 0x143b, 0x1470, 0x14a8, 0xffff, - 0xffff, 0xffff, 0x1510, 0xffff, 0x154e, 0xffff, 0xffff, 0x15ab, - 0xffff, 0x15ec, 0xffff, 0xffff, 0xffff, 0xffff, 0x1656, 0xffff, - 0x1698, 0x16eb, 0x174d, 0x178b, 0xffff, 0xffff, 0xffff, 0x17d1, - // Entry 46480 - 464BF - 0x1824, 0x1874, 0xffff, 0xffff, 0x18c8, 0x1924, 0x1964, 0x1990, - 0xffff, 0xffff, 0x19e8, 0x1a23, 0x1a4f, 0xffff, 0x1a9f, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1b1c, 0xffff, 0x1b51, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1be3, 0xffff, - 0xffff, 0x1c2f, 0xffff, 0x1c64, 0xffff, 0x1cbb, 0x1cf3, 0x1d34, - 0xffff, 0x1d73, 0x1db4, 0xffff, 0xffff, 0xffff, 0x1e13, 0x1e4b, - 0x0094, 0x0063, 0xffff, 0xffff, 0xffff, 0xffff, 0x076d, 0x07ad, - 0x07e5, 0x082b, 0x087a, 0x08d0, 0x091d, 0xffff, 0x0952, 0x0992, - // Entry 464C0 - 464FF - 0x09d2, 0x0a21, 0x0a68, 0x0aa4, 0x0af3, 0x0b6e, 0x0bdc, 0x0c3b, - 0x0c86, 0x0cc9, 0x0d09, 0xffff, 0xffff, 0x0d57, 0xffff, 0x0da8, - 0xffff, 0x0de7, 0x0e17, 0x0e48, 0x0e84, 0xffff, 0xffff, 0x0edf, - 0x0f21, 0x0f55, 0xffff, 0xffff, 0xffff, 0x0fb9, 0xffff, 0x100c, - 0x1060, 0xffff, 0x10ce, 0x1120, 0x1158, 0xffff, 0xffff, 0xffff, - 0xffff, 0x11d4, 0xffff, 0xffff, 0x1256, 0x12b8, 0xffff, 0xffff, - 0x132a, 0x1364, 0x1393, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1426, 0x145a, 0x1491, 0x14cd, 0xffff, 0xffff, 0xffff, - // Entry 46500 - 4653F - 0x152f, 0xffff, 0x1577, 0xffff, 0xffff, 0x15cc, 0xffff, 0x160b, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1679, 0xffff, 0x16cb, 0x1728, - 0x1772, 0x17a8, 0xffff, 0xffff, 0xffff, 0x1804, 0x1855, 0x189f, - 0xffff, 0xffff, 0x1901, 0x194b, 0x197d, 0x19b3, 0xffff, 0xffff, - 0x1a0b, 0x1a3c, 0x1a76, 0xffff, 0x1ad8, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1b3b, 0xffff, 0x1b6c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1c04, 0xffff, 0xffff, 0x1c4a, - 0xffff, 0x1c8f, 0xffff, 0x1cdc, 0x1d1a, 0x1d53, 0xffff, 0x1d9a, - // Entry 46540 - 4657F - 0x1dd7, 0xffff, 0xffff, 0xffff, 0x1e34, 0x1e78, 0x0003, 0x04e4, - 0x05f8, 0x056e, 0x0088, 0x0063, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 46580 - 465BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 465C0 - 465FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1cab, 0x0088, 0x0063, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 46600 - 4663F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 46640 - 4667F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1cab, 0x0088, 0x0063, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 46680 - 466BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 466C0 - 466FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1caf, - 0x0003, 0x0004, 0x01bb, 0x0583, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000d, 0x0038, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0016, 0x0000, 0x0027, 0x0004, 0x0024, - // Entry 46700 - 4673F - 0x001e, 0x001b, 0x0021, 0x0001, 0x0001, 0x1f7d, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0005, 0x0827, 0x0004, - 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0008, 0x0041, 0x00a6, 0x00fd, 0x0132, 0x0173, 0x0188, 0x0199, - 0x01aa, 0x0002, 0x0044, 0x0075, 0x0003, 0x0048, 0x0057, 0x0066, - 0x000d, 0x0063, 0xffff, 0x1e95, 0x1e9a, 0x1e9f, 0x1ea5, 0x1eab, - 0x1eaf, 0x1eb3, 0x1eb7, 0x1ebd, 0x1ec1, 0x1ec7, 0x1ecc, 0x000d, - // Entry 46740 - 4677F - 0x0063, 0xffff, 0x032b, 0x03bd, 0x03bf, 0x1ed1, 0x03bf, 0x032b, - 0x032b, 0x0332, 0x032b, 0x03c3, 0x03c5, 0x1ed3, 0x000d, 0x0063, - 0xffff, 0x1ed5, 0x1ede, 0x1ee7, 0x1eef, 0x1eab, 0x1ef9, 0x1efe, - 0x1f05, 0x1f0e, 0x1f17, 0x1f21, 0x1f29, 0x0003, 0x0079, 0x0088, - 0x0097, 0x000d, 0x0063, 0xffff, 0x1e95, 0x1e9a, 0x1e9f, 0x1ea5, - 0x1eab, 0x1eaf, 0x1eb3, 0x1eb7, 0x1ebd, 0x1ec1, 0x1ec7, 0x1ecc, - 0x000d, 0x0063, 0xffff, 0x032b, 0x03bd, 0x03bf, 0x1ed1, 0x03bf, - 0x032b, 0x032b, 0x0332, 0x032b, 0x03c3, 0x03c5, 0x1ed3, 0x000d, - // Entry 46780 - 467BF - 0x0063, 0xffff, 0x1ed5, 0x1ede, 0x1ee7, 0x1eef, 0x1eab, 0x1ef9, - 0x1efe, 0x1f05, 0x1f0e, 0x1f17, 0x1f21, 0x1f29, 0x0002, 0x00a9, - 0x00d3, 0x0005, 0x00af, 0x00b8, 0x00ca, 0x0000, 0x00c1, 0x0007, - 0x0063, 0x1f31, 0x1f36, 0x1f3b, 0x1f40, 0x1f44, 0x1f4a, 0x1f4e, - 0x0007, 0x0063, 0x032b, 0x03bf, 0x1ed3, 0x0330, 0x1ed3, 0x03bd, - 0x1ed3, 0x0007, 0x0063, 0x1f31, 0x1f36, 0x1f3b, 0x1f40, 0x1f44, - 0x1f4a, 0x1f4e, 0x0007, 0x0063, 0x1f52, 0x1f5a, 0x1f62, 0x1f6a, - 0x1f73, 0x1f81, 0x1f89, 0x0005, 0x00d9, 0x00e2, 0x00f4, 0x0000, - // Entry 467C0 - 467FF - 0x00eb, 0x0007, 0x0063, 0x1f31, 0x1f36, 0x1f3b, 0x1f40, 0x1f44, - 0x1f4a, 0x1f4e, 0x0007, 0x0063, 0x032b, 0x03bf, 0x1ed3, 0x0330, - 0x1ed3, 0x03bd, 0x1ed3, 0x0007, 0x0063, 0x1f31, 0x1f36, 0x1f3b, - 0x1f40, 0x1f44, 0x1f4a, 0x1f4e, 0x0007, 0x0063, 0x1f52, 0x1f5a, - 0x1f62, 0x1f6a, 0x1f73, 0x1f81, 0x1f89, 0x0002, 0x0100, 0x0119, - 0x0003, 0x0104, 0x010b, 0x0112, 0x0005, 0x0000, 0xffff, 0x1f17, - 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0063, 0xffff, 0x1f92, 0x1fa1, 0x1faa, - // Entry 46800 - 4683F - 0x1fb5, 0x0003, 0x011d, 0x0124, 0x012b, 0x0005, 0x0000, 0xffff, - 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0063, 0xffff, 0x1fbf, 0x1fc7, - 0x1fcf, 0x1fd7, 0x0002, 0x0135, 0x0154, 0x0003, 0x0139, 0x0142, - 0x014b, 0x0002, 0x013c, 0x013f, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x0145, 0x0148, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0002, 0x014e, 0x0151, 0x0001, 0x0063, - 0x1fdf, 0x0001, 0x0063, 0x1fea, 0x0003, 0x0158, 0x0161, 0x016a, - // Entry 46840 - 4687F - 0x0002, 0x015b, 0x015e, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, - 0x04f2, 0x0002, 0x0164, 0x0167, 0x0001, 0x0000, 0x04ef, 0x0001, - 0x0000, 0x04f2, 0x0002, 0x016d, 0x0170, 0x0001, 0x0063, 0x1ff1, - 0x0001, 0x0063, 0x1ff4, 0x0003, 0x0182, 0x0000, 0x0177, 0x0002, - 0x017a, 0x017e, 0x0002, 0x0064, 0x0000, 0x0009, 0x0002, 0x0005, - 0x076d, 0x24e5, 0x0001, 0x0184, 0x0002, 0x0005, 0x076d, 0x24e5, - 0x0004, 0x0196, 0x0190, 0x018d, 0x0193, 0x0001, 0x0001, 0x1fa2, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0000, - // Entry 46880 - 468BF - 0x237b, 0x0004, 0x01a7, 0x01a1, 0x019e, 0x01a4, 0x0001, 0x0002, - 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, - 0x0002, 0x0478, 0x0004, 0x01b8, 0x01b2, 0x01af, 0x01b5, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0000, 0x03c6, 0x0040, 0x01fc, 0x0000, 0x0000, 0x0201, - 0x0216, 0x022b, 0x0240, 0x0255, 0x026a, 0x027f, 0x0294, 0x02a9, - 0x02be, 0x02d7, 0x02f0, 0x0000, 0x0000, 0x0000, 0x0309, 0x0320, - 0x0337, 0x0000, 0x0000, 0x0000, 0x034e, 0x0000, 0x0000, 0x0000, - // Entry 468C0 - 468FF - 0x0000, 0x0000, 0x0353, 0x0365, 0x0377, 0x0389, 0x039b, 0x03ad, - 0x03bf, 0x03d1, 0x03e3, 0x03f5, 0x0407, 0x0419, 0x042b, 0x043d, - 0x044f, 0x0461, 0x0473, 0x0485, 0x0497, 0x04a9, 0x04bb, 0x0000, - 0x04cd, 0x0000, 0x04d2, 0x04e6, 0x04fa, 0x050e, 0x0522, 0x0536, - 0x054a, 0x055e, 0x056e, 0x057e, 0x0001, 0x01fe, 0x0001, 0x0064, - 0x001a, 0x0003, 0x0205, 0x0208, 0x020d, 0x0001, 0x0064, 0x0021, - 0x0003, 0x0064, 0x0027, 0x0036, 0x0040, 0x0002, 0x0210, 0x0213, - 0x0001, 0x0064, 0x004e, 0x0001, 0x0064, 0x0063, 0x0003, 0x021a, - // Entry 46900 - 4693F - 0x021d, 0x0222, 0x0001, 0x0064, 0x0021, 0x0003, 0x0064, 0x0027, - 0x0036, 0x0040, 0x0002, 0x0225, 0x0228, 0x0001, 0x0064, 0x004e, - 0x0001, 0x0064, 0x0063, 0x0003, 0x022f, 0x0232, 0x0237, 0x0001, - 0x0064, 0x0021, 0x0003, 0x0064, 0x0027, 0x0036, 0x0040, 0x0002, - 0x023a, 0x023d, 0x0001, 0x0064, 0x004e, 0x0001, 0x0064, 0x0063, - 0x0003, 0x0244, 0x0247, 0x024c, 0x0001, 0x0064, 0x007a, 0x0003, - 0x0064, 0x0080, 0x008f, 0x009d, 0x0002, 0x024f, 0x0252, 0x0001, - 0x0064, 0x00a8, 0x0001, 0x0064, 0x00bd, 0x0003, 0x0259, 0x025c, - // Entry 46940 - 4697F - 0x0261, 0x0001, 0x0064, 0x007a, 0x0003, 0x0064, 0x0080, 0x008f, - 0x009d, 0x0002, 0x0264, 0x0267, 0x0001, 0x0064, 0x00a8, 0x0001, - 0x0064, 0x00bd, 0x0003, 0x026e, 0x0271, 0x0276, 0x0001, 0x0064, - 0x007a, 0x0003, 0x0064, 0x0080, 0x008f, 0x009d, 0x0002, 0x0279, - 0x027c, 0x0001, 0x0064, 0x00a8, 0x0001, 0x0064, 0x00bd, 0x0003, - 0x0283, 0x0286, 0x028b, 0x0001, 0x0064, 0x00d4, 0x0003, 0x0064, - 0x00dc, 0x00ed, 0x00f9, 0x0002, 0x028e, 0x0291, 0x0001, 0x0064, - 0x0109, 0x0001, 0x0064, 0x0120, 0x0003, 0x0298, 0x029b, 0x02a0, - // Entry 46980 - 469BF - 0x0001, 0x0064, 0x00d4, 0x0003, 0x0064, 0x00dc, 0x00ed, 0x00f9, - 0x0002, 0x02a3, 0x02a6, 0x0001, 0x0064, 0x0109, 0x0001, 0x0064, - 0x0120, 0x0003, 0x02ad, 0x02b0, 0x02b5, 0x0001, 0x0064, 0x00d4, - 0x0003, 0x0064, 0x00dc, 0x00ed, 0x00f9, 0x0002, 0x02b8, 0x02bb, - 0x0001, 0x0064, 0x0109, 0x0001, 0x0064, 0x0120, 0x0004, 0x02c3, - 0x02c6, 0x02cb, 0x02d4, 0x0001, 0x0064, 0x0139, 0x0003, 0x0064, - 0x013e, 0x014c, 0x0155, 0x0002, 0x02ce, 0x02d1, 0x0001, 0x0064, - 0x0162, 0x0001, 0x0064, 0x0176, 0x0001, 0x0064, 0x018c, 0x0004, - // Entry 469C0 - 469FF - 0x02dc, 0x02df, 0x02e4, 0x02ed, 0x0001, 0x0064, 0x0139, 0x0003, - 0x0064, 0x013e, 0x014c, 0x0155, 0x0002, 0x02e7, 0x02ea, 0x0001, - 0x0064, 0x0162, 0x0001, 0x0064, 0x0176, 0x0001, 0x0064, 0x018c, - 0x0004, 0x02f5, 0x02f8, 0x02fd, 0x0306, 0x0001, 0x0064, 0x0139, - 0x0003, 0x0064, 0x013e, 0x014c, 0x0155, 0x0002, 0x0300, 0x0303, - 0x0001, 0x0064, 0x0162, 0x0001, 0x0064, 0x0176, 0x0001, 0x0064, - 0x018c, 0x0003, 0x030d, 0x0310, 0x0317, 0x0001, 0x0064, 0x01a2, - 0x0005, 0x0064, 0x01b3, 0x01bc, 0x01c6, 0x01a8, 0x01d4, 0x0002, - // Entry 46A00 - 46A3F - 0x031a, 0x031d, 0x0001, 0x0064, 0x01e4, 0x0001, 0x0064, 0x01f9, - 0x0003, 0x0324, 0x0327, 0x032e, 0x0001, 0x0064, 0x01a2, 0x0005, - 0x0064, 0x01b3, 0x01bc, 0x01c6, 0x01a8, 0x01d4, 0x0002, 0x0331, - 0x0334, 0x0001, 0x0064, 0x01e4, 0x0001, 0x0064, 0x01f9, 0x0003, - 0x033b, 0x033e, 0x0345, 0x0001, 0x0064, 0x01a2, 0x0005, 0x0064, - 0x01b3, 0x01bc, 0x01c6, 0x01a8, 0x01d4, 0x0002, 0x0348, 0x034b, - 0x0001, 0x0064, 0x01e4, 0x0001, 0x0064, 0x01f9, 0x0001, 0x0350, - 0x0001, 0x0064, 0x0210, 0x0003, 0x0000, 0x0357, 0x035c, 0x0003, - // Entry 46A40 - 46A7F - 0x0064, 0x0221, 0x0232, 0x023e, 0x0002, 0x035f, 0x0362, 0x0001, - 0x0064, 0x024e, 0x0001, 0x0064, 0x0274, 0x0003, 0x0000, 0x0369, - 0x036e, 0x0003, 0x0064, 0x0221, 0x0232, 0x023e, 0x0002, 0x0371, - 0x0374, 0x0001, 0x0064, 0x029a, 0x0001, 0x0064, 0x02b9, 0x0003, - 0x0000, 0x037b, 0x0380, 0x0003, 0x0064, 0x0221, 0x0232, 0x023e, - 0x0002, 0x0383, 0x0386, 0x0001, 0x0064, 0x029a, 0x0001, 0x0064, - 0x02b9, 0x0003, 0x0000, 0x038d, 0x0392, 0x0003, 0x0064, 0x02d8, - 0x02e9, 0x02f5, 0x0002, 0x0395, 0x0398, 0x0001, 0x0064, 0x0305, - // Entry 46A80 - 46ABF - 0x0001, 0x0064, 0x032b, 0x0003, 0x0000, 0x039f, 0x03a4, 0x0003, - 0x0064, 0x02d8, 0x02e9, 0x02f5, 0x0002, 0x03a7, 0x03aa, 0x0001, - 0x0064, 0x0351, 0x0001, 0x0064, 0x0370, 0x0003, 0x0000, 0x03b1, - 0x03b6, 0x0003, 0x0064, 0x02d8, 0x02e9, 0x02f5, 0x0002, 0x03b9, - 0x03bc, 0x0001, 0x0064, 0x0351, 0x0001, 0x0064, 0x0370, 0x0003, - 0x0000, 0x03c3, 0x03c8, 0x0003, 0x0064, 0x038f, 0x03a0, 0x03ac, - 0x0002, 0x03cb, 0x03ce, 0x0001, 0x0064, 0x03bc, 0x0001, 0x0064, - 0x03e2, 0x0003, 0x0000, 0x03d5, 0x03da, 0x0003, 0x0064, 0x038f, - // Entry 46AC0 - 46AFF - 0x03a0, 0x03ac, 0x0002, 0x03dd, 0x03e0, 0x0001, 0x0064, 0x0408, - 0x0001, 0x0064, 0x0427, 0x0003, 0x0000, 0x03e7, 0x03ec, 0x0003, - 0x0064, 0x038f, 0x03a0, 0x03ac, 0x0002, 0x03ef, 0x03f2, 0x0001, - 0x0064, 0x0408, 0x0001, 0x0064, 0x0427, 0x0003, 0x0000, 0x03f9, - 0x03fe, 0x0003, 0x0064, 0x0446, 0x0458, 0x0465, 0x0002, 0x0401, - 0x0404, 0x0001, 0x0064, 0x0476, 0x0001, 0x0064, 0x049d, 0x0003, - 0x0000, 0x040b, 0x0410, 0x0003, 0x0064, 0x0446, 0x0458, 0x0465, - 0x0002, 0x0413, 0x0416, 0x0001, 0x0064, 0x04c4, 0x0001, 0x0064, - // Entry 46B00 - 46B3F - 0x04e4, 0x0003, 0x0000, 0x041d, 0x0422, 0x0003, 0x0064, 0x0446, - 0x0458, 0x0465, 0x0002, 0x0425, 0x0428, 0x0001, 0x0064, 0x04c4, - 0x0001, 0x0064, 0x04e4, 0x0003, 0x0000, 0x042f, 0x0434, 0x0003, - 0x0064, 0x0504, 0x051b, 0x052d, 0x0002, 0x0437, 0x043a, 0x0001, - 0x0064, 0x0543, 0x0001, 0x0064, 0x056f, 0x0003, 0x0000, 0x0441, - 0x0446, 0x0003, 0x0064, 0x0504, 0x051b, 0x052d, 0x0002, 0x0449, - 0x044c, 0x0001, 0x0064, 0x059b, 0x0001, 0x0064, 0x05c0, 0x0003, - 0x0000, 0x0453, 0x0458, 0x0003, 0x0064, 0x0504, 0x051b, 0x052d, - // Entry 46B40 - 46B7F - 0x0002, 0x045b, 0x045e, 0x0001, 0x0064, 0x059b, 0x0001, 0x0064, - 0x05c0, 0x0003, 0x0000, 0x0465, 0x046a, 0x0003, 0x0064, 0x05e5, - 0x05f6, 0x0602, 0x0002, 0x046d, 0x0470, 0x0001, 0x0064, 0x0612, - 0x0001, 0x0064, 0x0638, 0x0003, 0x0000, 0x0477, 0x047c, 0x0003, - 0x0064, 0x05e5, 0x05f6, 0x0602, 0x0002, 0x047f, 0x0482, 0x0001, - 0x0064, 0x065e, 0x0001, 0x0064, 0x067d, 0x0003, 0x0000, 0x0489, - 0x048e, 0x0003, 0x0064, 0x05e5, 0x05f6, 0x0602, 0x0002, 0x0491, - 0x0494, 0x0001, 0x0064, 0x065e, 0x0001, 0x0064, 0x067d, 0x0003, - // Entry 46B80 - 46BBF - 0x0000, 0x049b, 0x04a0, 0x0003, 0x0064, 0x069c, 0x06ae, 0x06bb, - 0x0002, 0x04a3, 0x04a6, 0x0001, 0x0064, 0x06cc, 0x0001, 0x0064, - 0x06f3, 0x0003, 0x0000, 0x04ad, 0x04b2, 0x0003, 0x0064, 0x069c, - 0x06ae, 0x06bb, 0x0002, 0x04b5, 0x04b8, 0x0001, 0x0064, 0x071a, - 0x0001, 0x0064, 0x073a, 0x0003, 0x0000, 0x04bf, 0x04c4, 0x0003, - 0x0064, 0x069c, 0x06ae, 0x06bb, 0x0002, 0x04c7, 0x04ca, 0x0001, - 0x0064, 0x071a, 0x0001, 0x0064, 0x073a, 0x0001, 0x04cf, 0x0001, - 0x0007, 0x07cc, 0x0003, 0x04d6, 0x04d9, 0x04dd, 0x0001, 0x0064, - // Entry 46BC0 - 46BFF - 0x075a, 0x0002, 0x0064, 0xffff, 0x075f, 0x0002, 0x04e0, 0x04e3, - 0x0001, 0x0064, 0x076f, 0x0001, 0x0064, 0x0783, 0x0003, 0x04ea, - 0x04ed, 0x04f1, 0x0001, 0x0064, 0x075a, 0x0002, 0x0064, 0xffff, - 0x075f, 0x0002, 0x04f4, 0x04f7, 0x0001, 0x0064, 0x076f, 0x0001, - 0x0064, 0x0783, 0x0003, 0x04fe, 0x0501, 0x0505, 0x0001, 0x0064, - 0x075a, 0x0002, 0x0064, 0xffff, 0x075f, 0x0002, 0x0508, 0x050b, - 0x0001, 0x0064, 0x076f, 0x0001, 0x0064, 0x0783, 0x0003, 0x0512, - 0x0515, 0x0519, 0x0001, 0x000a, 0x01c1, 0x0002, 0x0064, 0xffff, - // Entry 46C00 - 46C3F - 0x0799, 0x0002, 0x051c, 0x051f, 0x0001, 0x0064, 0x07ab, 0x0001, - 0x0064, 0x07c1, 0x0003, 0x0526, 0x0529, 0x052d, 0x0001, 0x000a, - 0x01c1, 0x0002, 0x0064, 0xffff, 0x0799, 0x0002, 0x0530, 0x0533, - 0x0001, 0x0064, 0x07ab, 0x0001, 0x0064, 0x07c1, 0x0003, 0x053a, - 0x053d, 0x0541, 0x0001, 0x000a, 0x01c1, 0x0002, 0x0064, 0xffff, - 0x0799, 0x0002, 0x0544, 0x0547, 0x0001, 0x0064, 0x07ab, 0x0001, - 0x0064, 0x07c1, 0x0003, 0x054e, 0x0551, 0x0555, 0x0001, 0x0064, - 0x07d9, 0x0002, 0x0064, 0xffff, 0x07e0, 0x0002, 0x0558, 0x055b, - // Entry 46C40 - 46C7F - 0x0001, 0x0064, 0x07ea, 0x0001, 0x0064, 0x0800, 0x0003, 0x0562, - 0x0000, 0x0565, 0x0001, 0x0064, 0x07d9, 0x0002, 0x0568, 0x056b, - 0x0001, 0x0064, 0x07ea, 0x0001, 0x0064, 0x0800, 0x0003, 0x0572, - 0x0000, 0x0575, 0x0001, 0x0064, 0x07d9, 0x0002, 0x0578, 0x057b, - 0x0001, 0x0064, 0x07ea, 0x0001, 0x0064, 0x0800, 0x0001, 0x0580, - 0x0001, 0x0064, 0x0818, 0x0004, 0x0588, 0x058d, 0x0592, 0x059d, - 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0064, 0x0827, - 0x0831, 0x0841, 0x0002, 0x0000, 0x0595, 0x0002, 0x0000, 0x0598, - // Entry 46C80 - 46CBF - 0x0003, 0x0064, 0xffff, 0x0852, 0x0872, 0x0002, 0x0000, 0x05a0, - 0x0003, 0x05a4, 0x06e4, 0x0644, 0x009e, 0x0064, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0946, 0x09ad, 0x0a51, 0x0aa6, 0x0b1f, 0x0b9e, - 0x0c23, 0x0ca8, 0x0d0f, 0x0df6, 0x0e45, 0x0e9d, 0x0f0a, 0x0f5c, - 0x0ff0, 0x1060, 0x10e5, 0x115b, 0x11d1, 0x122c, 0x1281, 0xffff, - 0xffff, 0x12ff, 0xffff, 0x1362, 0xffff, 0x13dc, 0x142b, 0x146e, - 0x14b7, 0xffff, 0xffff, 0x153b, 0x158d, 0x15eb, 0xffff, 0xffff, - 0xffff, 0x1670, 0xffff, 0x16cf, 0x172d, 0xffff, 0x17af, 0x1813, - // Entry 46CC0 - 46CFF - 0x1880, 0xffff, 0xffff, 0xffff, 0xffff, 0x1926, 0xffff, 0xffff, - 0x199f, 0x1a06, 0xffff, 0xffff, 0x1a9d, 0x1ae9, 0x1b41, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c1f, 0x1c6e, 0x1cde, - 0x1d30, 0x1d7c, 0xffff, 0xffff, 0x1e34, 0xffff, 0x1e8e, 0xffff, - 0xffff, 0x1f46, 0xffff, 0x2002, 0xffff, 0xffff, 0xffff, 0xffff, - 0x20b8, 0xffff, 0x211e, 0x219a, 0x2207, 0x2268, 0xffff, 0xffff, - 0xffff, 0x22f6, 0x235d, 0x23af, 0xffff, 0xffff, 0x2437, 0x24c5, - 0x2538, 0x259f, 0xffff, 0xffff, 0x261c, 0x266b, 0x26b1, 0xffff, - // Entry 46D00 - 46D3F - 0x271f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x282b, 0x2892, - 0x28f0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x29cd, 0xffff, 0xffff, 0x2a3b, 0xffff, 0x2a90, 0xffff, 0x2b05, - 0x2b57, 0x2bb5, 0xffff, 0x2c14, 0x2c8a, 0xffff, 0xffff, 0xffff, - 0x2d38, 0x2dab, 0xffff, 0xffff, 0x0892, 0x09ff, 0x0d52, 0x0da1, - 0xffff, 0xffff, 0x1fa7, 0x27b6, 0x009e, 0x0064, 0x08e1, 0x08fb, - 0x0913, 0x092d, 0x0960, 0x09c0, 0x0a65, 0x0ac6, 0x0b41, 0x0bc2, - 0x0c47, 0x0cc2, 0x0d1d, 0x0e08, 0x0e5a, 0x0eb9, 0x0f1d, 0x0f85, - // Entry 46D40 - 46D7F - 0x100d, 0x1084, 0x1104, 0x117a, 0x11e7, 0x1240, 0x1297, 0x12dc, - 0x12ed, 0x1312, 0x1351, 0x1378, 0x13cc, 0x13ee, 0x1439, 0x147e, - 0x14cc, 0x150f, 0x1527, 0x154e, 0x15a4, 0x15fa, 0x1631, 0x1641, - 0x165a, 0x1681, 0x16bc, 0x16e6, 0x1746, 0x1791, 0x17c8, 0x182f, - 0x188e, 0x18c3, 0x18e1, 0x1900, 0x1914, 0x1937, 0x1972, 0x1984, - 0x19b9, 0x1a20, 0x1a7c, 0x1a8d, 0x1aae, 0x1afe, 0x1b51, 0x1b8a, - 0x1b9c, 0x1bb3, 0x1bca, 0x1be5, 0x1c02, 0x1c31, 0x1c8b, 0x1cf1, - 0x1d41, 0x1d9f, 0x1dfe, 0x1e19, 0x1e44, 0x1e7d, 0x1eae, 0x1f07, - // Entry 46D80 - 46DBF - 0x1f2e, 0x1f5e, 0x1fed, 0x201b, 0x2066, 0x2078, 0x208c, 0x209f, - 0x20cc, 0x210d, 0x213f, 0x21b6, 0x221f, 0x2280, 0x22c9, 0x22d7, - 0x22e6, 0x2310, 0x2370, 0x23c9, 0x2416, 0x2425, 0x2456, 0x24e3, - 0x2552, 0x25b4, 0x25f7, 0x2606, 0x262e, 0x267a, 0x26c4, 0x2703, - 0x273d, 0x2792, 0x27a4, 0xffff, 0x2808, 0x281b, 0x2845, 0x28a9, - 0x2902, 0x293f, 0x295a, 0x296c, 0x2987, 0x299c, 0x29ae, 0x29bd, - 0x29dd, 0x2a16, 0x2a2a, 0x2a4a, 0x2a81, 0x2aa9, 0x2af4, 0x2b18, - 0x2b6e, 0x2bc6, 0x2c01, 0x2c33, 0x2ca7, 0x2cfa, 0x2d0c, 0x2d1e, - // Entry 46DC0 - 46DFF - 0x2d56, 0x2dcd, 0x1a6d, 0x24ad, 0x08a4, 0x0a12, 0x0d64, 0x0db5, - 0x13bd, 0x1f1c, 0x1fb6, 0x27c9, 0x009e, 0x0064, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0987, 0x09e0, 0x0a86, 0x0af3, 0x0b70, 0x0bf3, - 0x0c78, 0x0ce9, 0x0d38, 0x0e27, 0x0e7c, 0x0ee2, 0x0f3d, 0x0fbb, - 0x1037, 0x10b5, 0x1130, 0x11a6, 0x120a, 0x1261, 0x12ba, 0xffff, - 0xffff, 0x1332, 0xffff, 0x139b, 0xffff, 0x140d, 0x1454, 0x149b, - 0x14ee, 0xffff, 0xffff, 0x156e, 0x15c8, 0x1616, 0xffff, 0xffff, - 0xffff, 0x169f, 0xffff, 0x170a, 0x176c, 0xffff, 0x17ee, 0x1858, - // Entry 46E00 - 46E3F - 0x18a9, 0xffff, 0xffff, 0xffff, 0xffff, 0x1955, 0xffff, 0xffff, - 0x19e0, 0x1a47, 0xffff, 0xffff, 0x1acc, 0x1b20, 0x1b6e, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c50, 0x1cb5, 0x1d11, - 0x1d5f, 0x1dcf, 0xffff, 0xffff, 0x1e61, 0xffff, 0x1edb, 0xffff, - 0xffff, 0x1f83, 0xffff, 0x2041, 0xffff, 0xffff, 0xffff, 0xffff, - 0x20ed, 0xffff, 0x216d, 0x21df, 0x2244, 0x22a5, 0xffff, 0xffff, - 0xffff, 0x2337, 0x2390, 0x23f0, 0xffff, 0xffff, 0x2482, 0x250e, - 0x2579, 0x25d6, 0xffff, 0xffff, 0x264d, 0x2696, 0x26e4, 0xffff, - // Entry 46E40 - 46E7F - 0x2768, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x286c, 0x28cd, - 0x2921, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x29fa, 0xffff, 0xffff, 0x2a66, 0xffff, 0x2acf, 0xffff, 0x2b38, - 0x2b92, 0x2be4, 0xffff, 0x2c5f, 0x2cd1, 0xffff, 0xffff, 0xffff, - 0x2d81, 0x2dfc, 0xffff, 0xffff, 0x08c3, 0x0a32, 0x0d83, 0x0dd6, - 0xffff, 0xffff, 0x1fd2, 0x27e9, 0x0003, 0x0004, 0x0370, 0x076e, - 0x0012, 0x0017, 0x0000, 0x0024, 0x0000, 0x003c, 0x0000, 0x0054, - 0x007f, 0x02c7, 0x0000, 0x02df, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 46E80 - 46EBF - 0x0333, 0x034b, 0x0362, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, - 0x001d, 0x0001, 0x001f, 0x0001, 0x0021, 0x0001, 0x0000, 0x0000, - 0x0001, 0x0026, 0x0001, 0x0028, 0x0003, 0x0000, 0x0000, 0x002c, - 0x000e, 0x0065, 0xffff, 0x0000, 0x0005, 0x000b, 0x0011, 0x0018, - 0x001e, 0x0025, 0x002e, 0x0036, 0x003f, 0x0044, 0x0049, 0x0051, - 0x0001, 0x003e, 0x0001, 0x0040, 0x0003, 0x0000, 0x0000, 0x0044, - 0x000e, 0x0000, 0xffff, 0x042f, 0x40e5, 0x40ec, 0x3938, 0x4080, - 0x40f2, 0x40fa, 0x4102, 0x410a, 0x046e, 0x3946, 0x4111, 0x4118, - // Entry 46EC0 - 46EFF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005d, 0x0000, - 0x006e, 0x0004, 0x006b, 0x0065, 0x0062, 0x0068, 0x0001, 0x0065, - 0x0057, 0x0001, 0x002c, 0x00fc, 0x0001, 0x0007, 0x001d, 0x0001, - 0x0065, 0x0067, 0x0004, 0x007c, 0x0076, 0x0073, 0x0079, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0008, 0x0088, 0x00ed, 0x0144, 0x0179, - 0x027a, 0x0294, 0x02a5, 0x02b6, 0x0002, 0x008b, 0x00bc, 0x0003, - 0x008f, 0x009e, 0x00ad, 0x000d, 0x0065, 0xffff, 0x0074, 0x0078, - // Entry 46F00 - 46F3F - 0x007d, 0x0081, 0x0085, 0x0089, 0x008d, 0x0091, 0x0096, 0x009a, - 0x009e, 0x00a2, 0x000d, 0x0063, 0xffff, 0x03c3, 0x0334, 0x03bf, - 0x03c5, 0x03bf, 0x1ff7, 0x1ed3, 0x0332, 0x1ed1, 0x1ed1, 0x1ff9, - 0x0332, 0x000d, 0x0065, 0xffff, 0x00a6, 0x00ab, 0x00b2, 0x00b7, - 0x00bd, 0x00c4, 0x00cc, 0x00d3, 0x00dc, 0x00e3, 0x00e8, 0x00ef, - 0x0003, 0x00c0, 0x00cf, 0x00de, 0x000d, 0x0065, 0xffff, 0x0074, - 0x0078, 0x007d, 0x0081, 0x0085, 0x0089, 0x008d, 0x0091, 0x0096, - 0x009a, 0x009e, 0x00a2, 0x000d, 0x0063, 0xffff, 0x03c3, 0x0334, - // Entry 46F40 - 46F7F - 0x03bf, 0x03c5, 0x03bf, 0x1ff7, 0x1ed3, 0x0332, 0x1ed1, 0x1ed1, - 0x1ff9, 0x0332, 0x000d, 0x0065, 0xffff, 0x00a6, 0x00ab, 0x00b2, - 0x00b7, 0x00bd, 0x00c4, 0x00cc, 0x00d3, 0x00dc, 0x00e3, 0x00e8, - 0x00ef, 0x0002, 0x00f0, 0x011a, 0x0005, 0x00f6, 0x00ff, 0x0111, - 0x0000, 0x0108, 0x0007, 0x0065, 0x00f7, 0x00fb, 0x00ff, 0x0103, - 0x0108, 0x010c, 0x0110, 0x0007, 0x0063, 0x0330, 0x0330, 0x032b, - 0x032d, 0x0330, 0x1ffb, 0x1ffb, 0x0007, 0x0065, 0x0114, 0x0117, - 0x011a, 0x011d, 0x0121, 0x0124, 0x0127, 0x0007, 0x0065, 0x012a, - // Entry 46F80 - 46FBF - 0x0130, 0x013a, 0x0140, 0x014b, 0x0155, 0x015a, 0x0005, 0x0120, - 0x0129, 0x013b, 0x0000, 0x0132, 0x0007, 0x0065, 0x00f7, 0x00fb, - 0x00ff, 0x0103, 0x0108, 0x010c, 0x0110, 0x0007, 0x0063, 0x0330, - 0x0330, 0x032b, 0x032d, 0x0330, 0x1ffb, 0x1ffb, 0x0007, 0x0065, - 0x0114, 0x0117, 0x011a, 0x011d, 0x0121, 0x0124, 0x0127, 0x0007, - 0x0065, 0x012a, 0x0130, 0x013a, 0x0140, 0x014b, 0x0155, 0x015a, - 0x0002, 0x0147, 0x0160, 0x0003, 0x014b, 0x0152, 0x0159, 0x0005, - 0x0065, 0xffff, 0x0164, 0x0168, 0x016c, 0x0170, 0x0005, 0x000d, - // Entry 46FC0 - 46FFF - 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0065, 0xffff, - 0x0174, 0x017f, 0x018a, 0x0195, 0x0003, 0x0164, 0x016b, 0x0172, - 0x0005, 0x0065, 0xffff, 0x0164, 0x0168, 0x016c, 0x0170, 0x0005, - 0x000d, 0xffff, 0x0130, 0x0133, 0x0136, 0x0139, 0x0005, 0x0065, - 0xffff, 0x0174, 0x017f, 0x018a, 0x0195, 0x0002, 0x017c, 0x01fb, - 0x0003, 0x0180, 0x01a9, 0x01d2, 0x000a, 0x018e, 0x0194, 0x018b, - 0x0197, 0x019d, 0x01a3, 0x01a6, 0x0191, 0x019a, 0x01a0, 0x0001, - 0x0065, 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, 0x0065, 0x01b3, - // Entry 47000 - 4703F - 0x0001, 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, 0x0001, 0x0065, - 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, 0x0001, - 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x000a, 0x01b7, 0x01bd, - 0x01b4, 0x01c0, 0x01c6, 0x01cc, 0x01cf, 0x01ba, 0x01c3, 0x01c9, - 0x0001, 0x0065, 0x01f2, 0x0001, 0x001e, 0x1bda, 0x0001, 0x0065, - 0x01f7, 0x0001, 0x0065, 0x01fa, 0x0001, 0x0007, 0x03d9, 0x0001, - 0x0065, 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, - 0x0001, 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x000a, 0x01e0, - // Entry 47040 - 4707F - 0x01e6, 0x01dd, 0x01e9, 0x01ef, 0x01f5, 0x01f8, 0x01e3, 0x01ec, - 0x01f2, 0x0001, 0x0065, 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, - 0x0065, 0x01b3, 0x0001, 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, - 0x0001, 0x0065, 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, - 0x01de, 0x0001, 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x0003, - 0x01ff, 0x0228, 0x0251, 0x000a, 0x020d, 0x0213, 0x020a, 0x0216, - 0x021c, 0x0222, 0x0225, 0x0210, 0x0219, 0x021f, 0x0001, 0x0065, - 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, 0x0065, 0x01b3, 0x0001, - // Entry 47080 - 470BF - 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, 0x0001, 0x0065, 0x01be, - 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, 0x0001, 0x0065, - 0x01eb, 0x0001, 0x0065, 0x01f2, 0x000a, 0x0236, 0x023c, 0x0233, - 0x023f, 0x0245, 0x024b, 0x024e, 0x0239, 0x0242, 0x0248, 0x0001, - 0x0065, 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, 0x0065, 0x01b3, - 0x0001, 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, 0x0001, 0x0065, - 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, 0x0001, - 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x000a, 0x025f, 0x0265, - // Entry 470C0 - 470FF - 0x025c, 0x0268, 0x026e, 0x0274, 0x0277, 0x0262, 0x026b, 0x0271, - 0x0001, 0x0065, 0x01a0, 0x0001, 0x0065, 0x01ae, 0x0001, 0x0065, - 0x01b3, 0x0001, 0x0065, 0x01ba, 0x0001, 0x0007, 0x03d9, 0x0001, - 0x0065, 0x01be, 0x0001, 0x0065, 0x01ce, 0x0001, 0x0065, 0x01de, - 0x0001, 0x0065, 0x01eb, 0x0001, 0x0065, 0x01f2, 0x0003, 0x0289, - 0x0000, 0x027e, 0x0002, 0x0281, 0x0285, 0x0002, 0x0065, 0x01fe, - 0x021e, 0x0002, 0x0065, 0x020d, 0x022d, 0x0002, 0x028c, 0x0290, - 0x0002, 0x0065, 0x023e, 0x0247, 0x0002, 0x0065, 0x0242, 0x024a, - // Entry 47100 - 4713F - 0x0004, 0x02a2, 0x029c, 0x0299, 0x029f, 0x0001, 0x0063, 0x03c7, - 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0008, - 0x09e4, 0x0004, 0x02b3, 0x02ad, 0x02aa, 0x02b0, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0004, 0x02c4, 0x02be, 0x02bb, 0x02c1, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x02c9, 0x0001, 0x02cb, 0x0003, - 0x0000, 0x0000, 0x02cf, 0x000e, 0x0065, 0x027d, 0x024e, 0x0255, - // Entry 47140 - 4717F - 0x025d, 0x0264, 0x026a, 0x0271, 0x0278, 0x00b7, 0x0285, 0x028b, - 0x0291, 0x0297, 0x029a, 0x0005, 0x02e5, 0x0000, 0x0000, 0x0000, - 0x032c, 0x0002, 0x02e8, 0x030a, 0x0003, 0x02ec, 0x0000, 0x02fb, - 0x000d, 0x0065, 0xffff, 0x029f, 0x02a8, 0x02ae, 0x02bb, 0x02c7, - 0x02d6, 0x02e4, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0309, 0x000d, - 0x0065, 0xffff, 0x029f, 0x02a8, 0x02ae, 0x02bb, 0x02c7, 0x02d6, - 0x02e4, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0309, 0x0003, 0x0000, - 0x030e, 0x031d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - // Entry 47180 - 471BF - 0x2335, 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, - 0x3874, 0x000d, 0x0065, 0xffff, 0x029f, 0x02a8, 0x02ae, 0x02bb, - 0x02c7, 0x02d6, 0x02e4, 0x02ea, 0x02f1, 0x02f9, 0x0301, 0x0309, - 0x0001, 0x032e, 0x0001, 0x0330, 0x0001, 0x0065, 0x0312, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x033a, 0x0004, 0x0348, - 0x0342, 0x033f, 0x0345, 0x0001, 0x0063, 0x0337, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0065, 0x0318, 0x0001, - 0x034d, 0x0001, 0x034f, 0x0003, 0x0000, 0x0000, 0x0353, 0x000d, - // Entry 471C0 - 471FF - 0x0065, 0xffff, 0x0321, 0x032b, 0x0337, 0x033e, 0x0342, 0x0349, - 0x0353, 0x0358, 0x035d, 0x0362, 0x0366, 0x036d, 0x0005, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0368, 0x0001, 0x036a, 0x0001, 0x036c, - 0x0002, 0x0000, 0x1a20, 0x3a6e, 0x0040, 0x03b1, 0x0000, 0x0000, - 0x03b6, 0x03cd, 0x03e4, 0x03fb, 0x0412, 0x0424, 0x0436, 0x044d, - 0x0464, 0x047b, 0x0496, 0x04ac, 0x0000, 0x0000, 0x0000, 0x04c2, - 0x04db, 0x04f4, 0x0000, 0x0000, 0x0000, 0x050d, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0512, 0x0526, 0x053a, 0x054e, 0x0562, - // Entry 47200 - 4723F - 0x0576, 0x058a, 0x059e, 0x05b2, 0x05c6, 0x05da, 0x05ee, 0x0602, - 0x0616, 0x062a, 0x063e, 0x0652, 0x0666, 0x067a, 0x068e, 0x06a2, - 0x0000, 0x06b6, 0x0000, 0x06bb, 0x06d1, 0x06e3, 0x06f5, 0x070b, - 0x071d, 0x072f, 0x0745, 0x0757, 0x0769, 0x0001, 0x03b3, 0x0001, - 0x0065, 0x0374, 0x0003, 0x03ba, 0x03bd, 0x03c2, 0x0001, 0x0065, - 0x0382, 0x0003, 0x0065, 0x0387, 0x0393, 0x039b, 0x0002, 0x03c5, - 0x03c9, 0x0002, 0x0065, 0x03a8, 0x03a8, 0x0002, 0x0065, 0x03b7, - 0x03b7, 0x0003, 0x03d1, 0x03d4, 0x03d9, 0x0001, 0x0065, 0x0382, - // Entry 47240 - 4727F - 0x0003, 0x0065, 0x0387, 0x0393, 0x039b, 0x0002, 0x03dc, 0x03e0, - 0x0002, 0x0065, 0x03a8, 0x03a8, 0x0002, 0x0065, 0x03b7, 0x03b7, - 0x0003, 0x03e8, 0x03eb, 0x03f0, 0x0001, 0x0065, 0x0382, 0x0003, - 0x0065, 0x0387, 0x0393, 0x039b, 0x0002, 0x03f3, 0x03f7, 0x0002, - 0x0065, 0x03a8, 0x03a8, 0x0002, 0x0065, 0x03b7, 0x03b7, 0x0003, - 0x03ff, 0x0402, 0x0407, 0x0001, 0x0065, 0x03c6, 0x0003, 0x0065, - 0x03ce, 0x03dd, 0x03e8, 0x0002, 0x040a, 0x040e, 0x0002, 0x0065, - 0x03f8, 0x03f8, 0x0002, 0x0065, 0x040a, 0x040a, 0x0003, 0x0416, - // Entry 47280 - 472BF - 0x0000, 0x0419, 0x0001, 0x0065, 0x041c, 0x0002, 0x041c, 0x0420, - 0x0002, 0x0065, 0x0422, 0x0422, 0x0002, 0x0065, 0x0432, 0x0432, - 0x0003, 0x0428, 0x0000, 0x042b, 0x0001, 0x0065, 0x041c, 0x0002, - 0x042e, 0x0432, 0x0002, 0x0065, 0x0422, 0x0422, 0x0002, 0x0065, - 0x0432, 0x0432, 0x0003, 0x043a, 0x043d, 0x0442, 0x0001, 0x0007, - 0x034f, 0x0003, 0x0065, 0x0442, 0x044c, 0x0452, 0x0002, 0x0445, - 0x0449, 0x0002, 0x0065, 0x045d, 0x045d, 0x0002, 0x0065, 0x046a, - 0x046a, 0x0003, 0x0451, 0x0454, 0x0459, 0x0001, 0x0007, 0x034f, - // Entry 472C0 - 472FF - 0x0003, 0x0065, 0x0442, 0x044c, 0x0452, 0x0002, 0x045c, 0x0460, - 0x0002, 0x0065, 0x045d, 0x045d, 0x0002, 0x0065, 0x046a, 0x046a, - 0x0003, 0x0468, 0x046b, 0x0470, 0x0001, 0x0007, 0x034f, 0x0003, - 0x0065, 0x0442, 0x044c, 0x0452, 0x0002, 0x0473, 0x0477, 0x0002, - 0x0065, 0x045d, 0x045d, 0x0002, 0x0065, 0x046a, 0x046a, 0x0004, - 0x0480, 0x0483, 0x0488, 0x0493, 0x0001, 0x0065, 0x0477, 0x0003, - 0x0065, 0x047d, 0x048a, 0x0493, 0x0002, 0x048b, 0x048f, 0x0002, - 0x0065, 0x04a1, 0x04a1, 0x0002, 0x0065, 0x04b1, 0x04b1, 0x0001, - // Entry 47300 - 4733F - 0x0065, 0x04c1, 0x0004, 0x049b, 0x0000, 0x049e, 0x04a9, 0x0001, - 0x0065, 0x04ce, 0x0002, 0x04a1, 0x04a5, 0x0002, 0x0065, 0x04d2, - 0x04d2, 0x0002, 0x0065, 0x04e0, 0x04e0, 0x0001, 0x0065, 0x04c1, - 0x0004, 0x04b1, 0x0000, 0x04b4, 0x04bf, 0x0001, 0x0065, 0x04ce, - 0x0002, 0x04b7, 0x04bb, 0x0002, 0x0065, 0x04d2, 0x04d2, 0x0002, - 0x0065, 0x04e0, 0x04e0, 0x0001, 0x0065, 0x04c1, 0x0003, 0x04c6, - 0x04c9, 0x04d0, 0x0001, 0x0063, 0x0557, 0x0005, 0x0065, 0x04fb, - 0x0500, 0x0507, 0x04ee, 0x050e, 0x0002, 0x04d3, 0x04d7, 0x0002, - // Entry 47340 - 4737F - 0x0065, 0x051a, 0x051a, 0x0002, 0x0065, 0x0529, 0x0529, 0x0003, - 0x04df, 0x04e2, 0x04e9, 0x0001, 0x0063, 0x0557, 0x0005, 0x0065, - 0x04fb, 0x0500, 0x0507, 0x04ee, 0x050e, 0x0002, 0x04ec, 0x04f0, - 0x0002, 0x0065, 0x051a, 0x051a, 0x0002, 0x0065, 0x0529, 0x0529, - 0x0003, 0x04f8, 0x04fb, 0x0502, 0x0001, 0x0063, 0x0557, 0x0005, - 0x0065, 0x04fb, 0x0500, 0x0507, 0x04ee, 0x050e, 0x0002, 0x0505, - 0x0509, 0x0002, 0x0065, 0x051a, 0x051a, 0x0002, 0x0065, 0x0529, - 0x0529, 0x0001, 0x050f, 0x0001, 0x0065, 0x0538, 0x0003, 0x0000, - // Entry 47380 - 473BF - 0x0516, 0x051b, 0x0003, 0x0065, 0x0549, 0x0556, 0x055f, 0x0002, - 0x051e, 0x0522, 0x0002, 0x0065, 0x056d, 0x056d, 0x0002, 0x0065, - 0x057d, 0x057d, 0x0003, 0x0000, 0x052a, 0x052f, 0x0003, 0x0065, - 0x058d, 0x0599, 0x05a1, 0x0002, 0x0532, 0x0536, 0x0002, 0x0065, - 0x05ae, 0x05ae, 0x0002, 0x0065, 0x05bd, 0x05bd, 0x0003, 0x0000, - 0x053e, 0x0543, 0x0003, 0x0065, 0x058d, 0x0599, 0x05a1, 0x0002, - 0x0546, 0x054a, 0x0002, 0x0065, 0x05ae, 0x05ae, 0x0002, 0x0065, - 0x05bd, 0x05bd, 0x0003, 0x0000, 0x0552, 0x0557, 0x0003, 0x0065, - // Entry 473C0 - 473FF - 0x05cc, 0x05dd, 0x05ea, 0x0002, 0x055a, 0x055e, 0x0002, 0x0065, - 0x05fc, 0x05fc, 0x0002, 0x0065, 0x0610, 0x0610, 0x0003, 0x0000, - 0x0566, 0x056b, 0x0003, 0x0065, 0x0624, 0x0630, 0x0638, 0x0002, - 0x056e, 0x0572, 0x0002, 0x0065, 0x0645, 0x0645, 0x0002, 0x0065, - 0x0654, 0x0654, 0x0003, 0x0000, 0x057a, 0x057f, 0x0003, 0x0065, - 0x0624, 0x0630, 0x0638, 0x0002, 0x0582, 0x0586, 0x0002, 0x0065, - 0x0645, 0x0645, 0x0002, 0x0065, 0x0654, 0x0654, 0x0003, 0x0000, - 0x058e, 0x0593, 0x0003, 0x0065, 0x0663, 0x0670, 0x0679, 0x0002, - // Entry 47400 - 4743F - 0x0596, 0x059a, 0x0002, 0x0065, 0x0687, 0x0687, 0x0002, 0x0065, - 0x0697, 0x0697, 0x0003, 0x0000, 0x05a2, 0x05a7, 0x0003, 0x0065, - 0x0663, 0x0670, 0x0679, 0x0002, 0x05aa, 0x05ae, 0x0002, 0x0065, - 0x0687, 0x0687, 0x0002, 0x0065, 0x0697, 0x0697, 0x0003, 0x0000, - 0x05b6, 0x05bb, 0x0003, 0x0065, 0x0663, 0x0670, 0x0679, 0x0002, - 0x05be, 0x05c2, 0x0002, 0x0065, 0x0687, 0x0687, 0x0002, 0x0065, - 0x0697, 0x0697, 0x0003, 0x0000, 0x05ca, 0x05cf, 0x0003, 0x0065, - 0x06a7, 0x06b9, 0x06c7, 0x0002, 0x05d2, 0x05d6, 0x0002, 0x0065, - // Entry 47440 - 4747F - 0x06da, 0x06da, 0x0002, 0x0065, 0x06ef, 0x06ef, 0x0003, 0x0000, - 0x05de, 0x05e3, 0x0003, 0x0065, 0x0704, 0x0711, 0x071a, 0x0002, - 0x05e6, 0x05ea, 0x0002, 0x0065, 0x0728, 0x0728, 0x0002, 0x0065, - 0x0738, 0x0738, 0x0003, 0x0000, 0x05f2, 0x05f7, 0x0003, 0x0065, - 0x0704, 0x0711, 0x071a, 0x0002, 0x05fa, 0x05fe, 0x0002, 0x0065, - 0x0728, 0x0728, 0x0002, 0x0065, 0x0738, 0x0738, 0x0003, 0x0000, - 0x0606, 0x060b, 0x0003, 0x0065, 0x0748, 0x0759, 0x0766, 0x0002, - 0x060e, 0x0612, 0x0002, 0x0065, 0x0778, 0x0778, 0x0002, 0x0065, - // Entry 47480 - 474BF - 0x078c, 0x078c, 0x0003, 0x0000, 0x061a, 0x061f, 0x0003, 0x0065, - 0x07a0, 0x07ac, 0x07b4, 0x0002, 0x0622, 0x0626, 0x0002, 0x0065, - 0x07c1, 0x07c1, 0x0002, 0x0065, 0x07d0, 0x07d0, 0x0003, 0x0000, - 0x062e, 0x0633, 0x0003, 0x0065, 0x07a0, 0x07ac, 0x07b4, 0x0002, - 0x0636, 0x063a, 0x0002, 0x0065, 0x07c1, 0x07c1, 0x0002, 0x0065, - 0x07d0, 0x07d0, 0x0003, 0x0000, 0x0642, 0x0647, 0x0003, 0x0065, - 0x07df, 0x07eb, 0x07f3, 0x0002, 0x064a, 0x064e, 0x0002, 0x0065, - 0x0800, 0x0800, 0x0002, 0x0065, 0x080f, 0x080f, 0x0003, 0x0000, - // Entry 474C0 - 474FF - 0x0656, 0x065b, 0x0003, 0x0065, 0x07df, 0x07eb, 0x07f3, 0x0002, - 0x065e, 0x0662, 0x0002, 0x0065, 0x0800, 0x0800, 0x0002, 0x0065, - 0x080f, 0x080f, 0x0003, 0x0000, 0x066a, 0x066f, 0x0003, 0x0065, - 0x07df, 0x07eb, 0x07f3, 0x0002, 0x0672, 0x0676, 0x0002, 0x0065, - 0x0800, 0x0800, 0x0002, 0x0065, 0x080f, 0x080f, 0x0003, 0x0000, - 0x067e, 0x0683, 0x0003, 0x0065, 0x081e, 0x082f, 0x083c, 0x0002, - 0x0686, 0x068a, 0x0002, 0x0065, 0x084e, 0x084e, 0x0002, 0x0065, - 0x0862, 0x0862, 0x0003, 0x0000, 0x0692, 0x0697, 0x0003, 0x0065, - // Entry 47500 - 4753F - 0x0876, 0x0882, 0x088a, 0x0002, 0x069a, 0x069e, 0x0002, 0x0065, - 0x0897, 0x0897, 0x0002, 0x0065, 0x08a6, 0x08a6, 0x0003, 0x0000, - 0x06a6, 0x06ab, 0x0003, 0x0065, 0x0876, 0x0882, 0x088a, 0x0002, - 0x06ae, 0x06b2, 0x0002, 0x0065, 0x0897, 0x0897, 0x0002, 0x0065, - 0x08a6, 0x08a6, 0x0001, 0x06b8, 0x0001, 0x0065, 0x08b5, 0x0003, - 0x06bf, 0x06c2, 0x06c6, 0x0001, 0x0007, 0x0802, 0x0002, 0x0007, - 0xffff, 0x07d7, 0x0002, 0x06c9, 0x06cd, 0x0002, 0x0065, 0x08be, - 0x08be, 0x0002, 0x0065, 0x08cd, 0x08cd, 0x0003, 0x06d5, 0x0000, - // Entry 47540 - 4757F - 0x06d8, 0x0001, 0x0065, 0x08dc, 0x0002, 0x06db, 0x06df, 0x0002, - 0x0065, 0x08e0, 0x08e0, 0x0002, 0x0065, 0x08ee, 0x08ee, 0x0003, - 0x06e7, 0x0000, 0x06ea, 0x0001, 0x0065, 0x08dc, 0x0002, 0x06ed, - 0x06f1, 0x0002, 0x0065, 0x08e0, 0x08e0, 0x0002, 0x0065, 0x08ee, - 0x08ee, 0x0003, 0x06f9, 0x06fc, 0x0700, 0x0001, 0x0044, 0x0404, - 0x0002, 0x0065, 0xffff, 0x08fc, 0x0002, 0x0703, 0x0707, 0x0002, - 0x0065, 0x0906, 0x0906, 0x0002, 0x0065, 0x0917, 0x0917, 0x0003, - 0x070f, 0x0000, 0x0712, 0x0001, 0x0065, 0x0928, 0x0002, 0x0715, - // Entry 47580 - 475BF - 0x0719, 0x0002, 0x0065, 0x092c, 0x092c, 0x0002, 0x0065, 0x093a, - 0x093a, 0x0003, 0x0721, 0x0000, 0x0724, 0x0001, 0x0065, 0x0928, - 0x0002, 0x0727, 0x072b, 0x0002, 0x0065, 0x092c, 0x092c, 0x0002, - 0x0065, 0x093a, 0x093a, 0x0003, 0x0733, 0x0736, 0x073a, 0x0001, - 0x0065, 0x0948, 0x0002, 0x0065, 0xffff, 0x094f, 0x0002, 0x073d, - 0x0741, 0x0002, 0x0065, 0x0956, 0x0956, 0x0002, 0x0065, 0x0967, - 0x0967, 0x0003, 0x0749, 0x0000, 0x074c, 0x0001, 0x0028, 0x07cc, - 0x0002, 0x074f, 0x0753, 0x0002, 0x0065, 0x0978, 0x0978, 0x0002, - // Entry 475C0 - 475FF - 0x0065, 0x0986, 0x0986, 0x0003, 0x075b, 0x0000, 0x075e, 0x0001, - 0x0028, 0x07cc, 0x0002, 0x0761, 0x0765, 0x0002, 0x0065, 0x0978, - 0x0978, 0x0002, 0x0065, 0x0986, 0x0986, 0x0001, 0x076b, 0x0001, - 0x0065, 0x0994, 0x0004, 0x0773, 0x0778, 0x077d, 0x078c, 0x0003, - 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0065, 0x09a0, 0x09aa, - 0x09b8, 0x0002, 0x0000, 0x0780, 0x0003, 0x0000, 0x0787, 0x0784, - 0x0001, 0x0065, 0x09cb, 0x0003, 0x0065, 0xffff, 0x09e8, 0x09fd, - 0x0002, 0x0000, 0x078f, 0x0003, 0x0793, 0x08d3, 0x0833, 0x009e, - // Entry 47600 - 4763F - 0x0065, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a96, 0x0adc, 0x0b47, - 0x0b7b, 0x0bdc, 0x0c37, 0x0c8f, 0x0cf0, 0x0d26, 0x0dbc, 0x0df9, - 0x0e33, 0x0e7f, 0x0ebf, 0x0ef9, 0x0f48, 0x0fa6, 0x0ff8, 0x104a, - 0x108a, 0x10c1, 0xffff, 0xffff, 0x111c, 0xffff, 0x1173, 0xffff, - 0x11ce, 0x1205, 0x1236, 0x1264, 0xffff, 0xffff, 0x12d0, 0x130d, - 0x135c, 0xffff, 0xffff, 0xffff, 0x13c4, 0xffff, 0x1421, 0x1464, - 0xffff, 0x14c2, 0x1508, 0x155d, 0xffff, 0xffff, 0xffff, 0xffff, - 0x15e6, 0xffff, 0xffff, 0x1656, 0x16a5, 0xffff, 0xffff, 0x1723, - // Entry 47640 - 4767F - 0x1769, 0x17a6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1852, 0x1883, 0x18bd, 0x18f4, 0x192b, 0xffff, 0xffff, 0x19c3, - 0xffff, 0x19fe, 0xffff, 0xffff, 0x1a75, 0xffff, 0x1afa, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1b7d, 0xffff, 0x1bc7, 0x1c1f, 0x1c8c, - 0x1ccc, 0xffff, 0xffff, 0xffff, 0x1d29, 0x1d75, 0x1dbb, 0xffff, - 0xffff, 0x1e21, 0x1e99, 0x1edc, 0x1f0a, 0xffff, 0xffff, 0x1f66, - 0x1fa0, 0x1fce, 0xffff, 0x2025, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x211a, 0x2151, 0x2185, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 47680 - 476BF - 0xffff, 0xffff, 0xffff, 0x2232, 0xffff, 0xffff, 0x2285, 0xffff, - 0x22c2, 0xffff, 0x2318, 0x234f, 0x2392, 0xffff, 0x23d9, 0x241c, - 0xffff, 0xffff, 0xffff, 0x248f, 0x24c6, 0xffff, 0xffff, 0x0a15, - 0x0b10, 0x0d54, 0x0d85, 0xffff, 0xffff, 0x1ab2, 0x20bb, 0x009e, - 0x0065, 0x0a43, 0x0a54, 0x0a66, 0x0a79, 0x0aa9, 0x0ae9, 0x0b54, - 0x0b97, 0x0bf6, 0x0c50, 0x0cab, 0x0cfd, 0x0d31, 0x0dcc, 0x0e08, - 0x0e48, 0x0e90, 0x0ece, 0x0f0f, 0x0f63, 0x0fbd, 0x100f, 0x105b, - 0x1098, 0x10d2, 0x1101, 0x110e, 0x112b, 0x1156, 0x1184, 0x11bf, - // Entry 476C0 - 476FF - 0x11dc, 0x1211, 0x1241, 0x1275, 0x12a4, 0x12bb, 0x12e0, 0x1321, - 0x1368, 0x138d, 0x1399, 0x13b2, 0x13da, 0x1413, 0x1433, 0x1477, - 0x14aa, 0x14d5, 0x1520, 0x1568, 0x158b, 0x15a4, 0x15c8, 0x15d8, - 0x15f7, 0x1626, 0x163d, 0x166c, 0x16bb, 0x1708, 0x1716, 0x1736, - 0x1779, 0x17b1, 0x17d4, 0x17ed, 0x1801, 0x1811, 0x1826, 0x183c, - 0x185e, 0x1892, 0x18cb, 0x1902, 0x194a, 0x1995, 0x19ac, 0x19ce, - 0x19f1, 0x1a10, 0x1a41, 0x1a61, 0x1a85, 0x1ae3, 0x1b08, 0x1b31, - 0x1b3f, 0x1b4f, 0x1b65, 0x1b8d, 0x1bba, 0x1be0, 0x1c3f, 0x1c9d, - // Entry 47700 - 4773F - 0x1cda, 0x1d03, 0x1d11, 0x1d1d, 0x1d3e, 0x1d88, 0x1dce, 0x1e01, - 0x1e0c, 0x1e3b, 0x1eab, 0x1ee7, 0x1f19, 0x1f44, 0x1f50, 0x1f75, - 0x1fab, 0x1fdf, 0x200e, 0x2044, 0x208f, 0x209e, 0x20ab, 0x20fe, - 0x210c, 0x2128, 0x215e, 0x2191, 0x21b6, 0x21c7, 0x21df, 0x21f6, - 0x220b, 0x2219, 0x2225, 0x223f, 0x2266, 0x2277, 0x2291, 0x22b6, - 0x22d6, 0x230b, 0x2326, 0x2361, 0x23a0, 0x23c9, 0x23eb, 0x242c, - 0x2459, 0x2466, 0x2478, 0x249d, 0x24da, 0x16f4, 0x1e7c, 0x0a20, - 0x0b1e, 0x0d60, 0x0d93, 0x11b3, 0x1a55, 0x1abe, 0x20cd, 0x009e, - // Entry 47740 - 4777F - 0x0065, 0xffff, 0xffff, 0xffff, 0xffff, 0x0ac5, 0x0aff, 0x0b6a, - 0x0bbc, 0x0c19, 0x0c72, 0x0cd0, 0x0d14, 0x0d45, 0x0de5, 0x0e20, - 0x0e66, 0x0eaa, 0x0ee6, 0x0f2e, 0x0f87, 0x0fdd, 0x102f, 0x1075, - 0x10af, 0x10ec, 0xffff, 0xffff, 0x1143, 0xffff, 0x119e, 0xffff, - 0x11f3, 0x1226, 0x1255, 0x128f, 0xffff, 0xffff, 0x12f9, 0x133e, - 0x137d, 0xffff, 0xffff, 0xffff, 0x13f9, 0xffff, 0x144e, 0x1493, - 0xffff, 0x14f1, 0x1541, 0x157c, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1611, 0xffff, 0xffff, 0x168b, 0x16da, 0xffff, 0xffff, 0x1752, - // Entry 47780 - 477BF - 0x1792, 0x17c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1873, 0x18aa, 0x18e2, 0x1919, 0x1972, 0xffff, 0xffff, 0x19e2, - 0xffff, 0x1a2b, 0xffff, 0xffff, 0x1a9e, 0xffff, 0x1b1f, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1ba6, 0xffff, 0x1c02, 0x1c68, 0x1cb7, - 0x1cf1, 0xffff, 0xffff, 0xffff, 0x1d5c, 0x1da4, 0x1dea, 0xffff, - 0xffff, 0x1e5e, 0x1ec6, 0x1efb, 0x1f31, 0xffff, 0xffff, 0x1f8d, - 0x1fbf, 0x1ff9, 0xffff, 0x206c, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x213f, 0x2174, 0x21a6, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 477C0 - 477FF - 0xffff, 0xffff, 0xffff, 0x2255, 0xffff, 0xffff, 0x22a6, 0xffff, - 0x22f3, 0xffff, 0x233d, 0x237c, 0x23b7, 0xffff, 0x2406, 0x2445, - 0xffff, 0xffff, 0xffff, 0x24b4, 0x24f7, 0xffff, 0xffff, 0x0a34, - 0x0b35, 0x0d75, 0x0daa, 0xffff, 0xffff, 0x1ad3, 0x20e8, 0x0001, - 0x0002, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0013, 0x0004, 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, - 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, 0x046e, - // Entry 47800 - 4783F - 0x0001, 0x0002, 0x0478, 0x0002, 0x0003, 0x00e9, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, - 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, - 0x236f, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, 0x00c7, - 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, 0x0000, - 0x0045, 0x000d, 0x0017, 0xffff, 0x00ac, 0x00b1, 0x29ea, 0x00b9, - // Entry 47840 - 4787F - 0x299e, 0x00c0, 0x00c5, 0x2930, 0x00cd, 0x29ee, 0x00d1, 0x00d5, - 0x000d, 0x0017, 0xffff, 0x00d9, 0x00e2, 0x00ec, 0x00f2, 0x299e, - 0x00f9, 0x0101, 0x2930, 0x0108, 0x0112, 0x011b, 0x0125, 0x0002, - 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x012f, 0x29f2, 0x29f4, - 0x29f6, 0x29f4, 0x012f, 0x012f, 0x29ab, 0x29f8, 0x29fa, 0x29fc, - 0x29fe, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, 0x0076, - 0x0007, 0x0009, 0x5479, 0x5485, 0x5489, 0x548d, 0x5491, 0x5495, - 0x5499, 0x0007, 0x0017, 0x0142, 0x0149, 0x0150, 0x0159, 0x2955, - // Entry 47880 - 478BF - 0x0169, 0x0170, 0x0002, 0x0000, 0x0082, 0x0007, 0x0063, 0x1ff7, - 0x1ed3, 0x1ed3, 0x1ffd, 0x1ffd, 0x1ffd, 0x1fff, 0x0001, 0x008d, - 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0017, 0xffff, 0x0177, - 0x298e, 0x017d, 0x0180, 0x0005, 0x0017, 0xffff, 0x0183, 0x018c, - 0x0195, 0x019e, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, 0x00ae, - 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0017, 0x01a7, 0x0001, 0x0017, - 0x01b0, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0017, 0x01a7, 0x0001, - 0x0017, 0x01b0, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, 0x00bd, - // Entry 478C0 - 478FF - 0x0002, 0x0017, 0x01bb, 0x01c5, 0x0001, 0x00c3, 0x0002, 0x0017, - 0x01d2, 0x01d5, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, 0x0001, - 0x0001, 0x1fa2, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, - 0x0001, 0x0002, 0x01fb, 0x0004, 0x00e6, 0x00e0, 0x00dd, 0x00e3, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, 0x0000, - 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, 0x0000, - 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, - // Entry 47900 - 4793F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, 0x0000, - 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, 0x0001, - 0x0017, 0x01d8, 0x0001, 0x0131, 0x0001, 0x0017, 0x01de, 0x0001, - 0x0136, 0x0001, 0x0017, 0x01e4, 0x0001, 0x013b, 0x0001, 0x0017, - // Entry 47940 - 4797F - 0x01ea, 0x0002, 0x0141, 0x0144, 0x0001, 0x0017, 0x01ef, 0x0003, - 0x0023, 0x0066, 0x2a59, 0x2a5e, 0x0001, 0x014b, 0x0001, 0x0017, - 0x0202, 0x0001, 0x0150, 0x0001, 0x0017, 0x021a, 0x0001, 0x0155, - 0x0001, 0x0017, 0x0220, 0x0001, 0x015a, 0x0001, 0x0017, 0x0227, - 0x0001, 0x015f, 0x0001, 0x0017, 0x022c, 0x0002, 0x0003, 0x00d8, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - // Entry 47980 - 479BF - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, - 0x00b7, 0x00c7, 0x0000, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, - 0x0036, 0x0000, 0x0045, 0x000d, 0x0037, 0xffff, 0x0000, 0x000d, - 0x2038, 0x203c, 0x2040, 0x0015, 0x0019, 0x001d, 0x2044, 0x2048, - 0x204e, 0x2052, 0x000d, 0x0037, 0xffff, 0x0033, 0x2056, 0x205f, - 0x2064, 0x0053, 0x0059, 0x206a, 0x0065, 0x2071, 0x207a, 0x2083, - 0x208b, 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x29c1, - // Entry 479C0 - 479FF - 0x29c1, 0x29f4, 0x2a00, 0x29f4, 0x29c1, 0x29c1, 0x2a02, 0x2a05, - 0x2a07, 0x29fc, 0x29fe, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, - 0x0000, 0x0076, 0x0007, 0x002b, 0x0390, 0x41f8, 0x41fc, 0x4200, - 0x4204, 0x4208, 0x420c, 0x0007, 0x0066, 0x0000, 0x0007, 0x000d, - 0x0014, 0x001a, 0x0020, 0x0028, 0x0002, 0x0000, 0x0082, 0x0007, - 0x0017, 0x29f6, 0x29f6, 0x29f6, 0x29f6, 0x29f6, 0x29f6, 0x29f6, - 0x0001, 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0066, - 0xffff, 0x0032, 0x0036, 0x003a, 0x003e, 0x0005, 0x0066, 0xffff, - // Entry 47A00 - 47A3F - 0x0042, 0x0051, 0x0060, 0x006f, 0x0001, 0x00a1, 0x0003, 0x00a5, - 0x0000, 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0066, 0x007e, - 0x0001, 0x0066, 0x0088, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0066, - 0x007e, 0x0001, 0x0066, 0x0088, 0x0003, 0x00c1, 0x0000, 0x00bb, - 0x0001, 0x00bd, 0x0002, 0x0066, 0x0095, 0x00a7, 0x0001, 0x00c3, - 0x0002, 0x0066, 0x00bd, 0x00c1, 0x0004, 0x00d5, 0x00cf, 0x00cc, - 0x00d2, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0040, 0x0119, 0x0000, - // Entry 47A40 - 47A7F - 0x0000, 0x011e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0123, - 0x0000, 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x012d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0138, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x013d, 0x0000, 0x0142, 0x0000, 0x0000, 0x0147, - 0x0000, 0x0000, 0x014c, 0x0000, 0x0000, 0x0151, 0x0001, 0x011b, - // Entry 47A80 - 47ABF - 0x0001, 0x0037, 0x01b5, 0x0001, 0x0120, 0x0001, 0x0066, 0x00c7, - 0x0001, 0x0125, 0x0001, 0x0066, 0x00d0, 0x0001, 0x012a, 0x0001, - 0x0066, 0x00d5, 0x0002, 0x0130, 0x0133, 0x0001, 0x0005, 0x2346, - 0x0003, 0x0066, 0x00dd, 0x00e7, 0x00ec, 0x0001, 0x013a, 0x0001, - 0x0066, 0x00f3, 0x0001, 0x013f, 0x0001, 0x0066, 0x0101, 0x0001, - 0x0144, 0x0001, 0x0066, 0x0117, 0x0001, 0x0149, 0x0001, 0x0066, - 0x011f, 0x0001, 0x014e, 0x0001, 0x0066, 0x0126, 0x0001, 0x0153, - 0x0001, 0x0037, 0x0222, 0x0003, 0x0004, 0x02aa, 0x03c9, 0x0012, - // Entry 47AC0 - 47AFF - 0x0017, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x008a, 0x00b5, - 0x022a, 0x0000, 0x0237, 0x0000, 0x0000, 0x0000, 0x0000, 0x027c, - 0x0000, 0x0294, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, - 0x0003, 0x0026, 0x002b, 0x0021, 0x0001, 0x0023, 0x0001, 0x0066, - 0x012d, 0x0001, 0x0028, 0x0001, 0x0000, 0x0000, 0x0001, 0x002d, - 0x0001, 0x0000, 0x0000, 0x000a, 0x003b, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0079, 0x0000, 0x0000, 0x0000, 0x005f, 0x0001, 0x003d, - 0x0003, 0x0041, 0x0000, 0x0050, 0x000d, 0x001b, 0xffff, 0x0000, - // Entry 47B00 - 47B3F - 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, - 0x0024, 0x0029, 0x002e, 0x000d, 0x0066, 0xffff, 0x014b, 0x0152, - 0x0159, 0x0160, 0x0167, 0x016e, 0x0175, 0x017c, 0x0183, 0x018a, - 0x0192, 0x019a, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0066, 0x0001, 0x0068, 0x0001, 0x006a, 0x000d, 0x0066, 0xffff, - 0x01a2, 0x01af, 0x01b8, 0x01c5, 0x01d2, 0x01e1, 0x01ec, 0x01f3, - 0x01fa, 0x0207, 0x0210, 0x0217, 0x0004, 0x0087, 0x0081, 0x007e, - 0x0084, 0x0001, 0x0066, 0x0222, 0x0001, 0x0066, 0x0234, 0x0001, - // Entry 47B40 - 47B7F - 0x0066, 0x023f, 0x0001, 0x000c, 0x03ec, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0093, 0x0000, 0x00a4, 0x0004, 0x00a1, - 0x009b, 0x0098, 0x009e, 0x0001, 0x0066, 0x0249, 0x0001, 0x0066, - 0x025d, 0x0001, 0x0066, 0x026a, 0x0001, 0x0012, 0x0203, 0x0004, - 0x00b2, 0x00ac, 0x00a9, 0x00af, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0066, 0x0276, 0x0001, 0x0066, 0x0276, - 0x0008, 0x00be, 0x0114, 0x016b, 0x01a0, 0x01e1, 0x01f7, 0x0208, - 0x0219, 0x0002, 0x00c1, 0x00e3, 0x0003, 0x00c5, 0x0000, 0x00d4, - // Entry 47B80 - 47BBF - 0x000d, 0x0066, 0xffff, 0x0280, 0x028d, 0x029a, 0x02a3, 0x02b0, - 0x02b7, 0x02c2, 0x02cd, 0x02dc, 0x02ed, 0x02fe, 0x030d, 0x000d, - 0x0066, 0xffff, 0x0280, 0x028d, 0x029a, 0x02a3, 0x02b0, 0x02b7, - 0x02c2, 0x02cd, 0x02dc, 0x02ed, 0x02fe, 0x030d, 0x0003, 0x00e7, - 0x00f6, 0x0105, 0x000d, 0x0066, 0xffff, 0x0280, 0x028d, 0x029a, - 0x02a3, 0x02b0, 0x02b7, 0x02c2, 0x02cd, 0x02dc, 0x02ed, 0x02fe, - 0x030d, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x003d, 0x003f, 0x0041, 0x2396, 0x386e, 0x3871, 0x3874, - // Entry 47BC0 - 47BFF - 0x000d, 0x0066, 0xffff, 0x0280, 0x028d, 0x029a, 0x02a3, 0x02b0, - 0x02b7, 0x02c2, 0x02cd, 0x02dc, 0x02ed, 0x02fe, 0x030d, 0x0002, - 0x0117, 0x0141, 0x0005, 0x011d, 0x0126, 0x0138, 0x0000, 0x012f, - 0x0007, 0x0066, 0x031c, 0x0321, 0x0326, 0x032b, 0x0330, 0x0335, - 0x033a, 0x0007, 0x0003, 0x0218, 0x2238, 0x223b, 0x223e, 0x2241, - 0x2244, 0x2247, 0x0007, 0x0003, 0x0218, 0x2238, 0x223b, 0x223e, - 0x2241, 0x2244, 0x2247, 0x0007, 0x0066, 0x033f, 0x0350, 0x035f, - 0x0370, 0x0381, 0x0392, 0x039b, 0x0005, 0x0147, 0x0150, 0x0162, - // Entry 47C00 - 47C3F - 0x0000, 0x0159, 0x0007, 0x0066, 0x031c, 0x0321, 0x0326, 0x032b, - 0x0330, 0x0335, 0x033a, 0x0007, 0x0003, 0x0218, 0x2238, 0x223b, - 0x223e, 0x2241, 0x2244, 0x2247, 0x0007, 0x0003, 0x0218, 0x2238, - 0x223b, 0x223e, 0x2241, 0x2244, 0x2247, 0x0007, 0x0066, 0x033f, - 0x0350, 0x035f, 0x0370, 0x0381, 0x0392, 0x039b, 0x0002, 0x016e, - 0x0187, 0x0003, 0x0172, 0x0179, 0x0180, 0x0005, 0x0066, 0xffff, - 0x03a6, 0x03b3, 0x03c0, 0x03cd, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x0066, 0xffff, 0x03da, 0x03f4, - // Entry 47C40 - 47C7F - 0x0410, 0x042a, 0x0003, 0x018b, 0x0192, 0x0199, 0x0005, 0x0066, - 0xffff, 0x03a6, 0x03b3, 0x03c0, 0x03cd, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0066, 0xffff, 0x03da, - 0x03f4, 0x0410, 0x042a, 0x0002, 0x01a3, 0x01c2, 0x0003, 0x01a7, - 0x01b0, 0x01b9, 0x0002, 0x01aa, 0x01ad, 0x0001, 0x0066, 0x0444, - 0x0001, 0x0066, 0x044a, 0x0002, 0x01b3, 0x01b6, 0x0001, 0x0013, - 0x3103, 0x0001, 0x0003, 0x0233, 0x0002, 0x01bc, 0x01bf, 0x0001, - 0x0066, 0x0450, 0x0001, 0x0066, 0x0468, 0x0003, 0x01c6, 0x01cf, - // Entry 47C80 - 47CBF - 0x01d8, 0x0002, 0x01c9, 0x01cc, 0x0001, 0x0066, 0x0444, 0x0001, - 0x0066, 0x044a, 0x0002, 0x01d2, 0x01d5, 0x0001, 0x0066, 0x0444, - 0x0001, 0x0066, 0x044a, 0x0002, 0x01db, 0x01de, 0x0001, 0x0066, - 0x0444, 0x0001, 0x0066, 0x044a, 0x0003, 0x01eb, 0x01f1, 0x01e5, - 0x0001, 0x01e7, 0x0002, 0x0066, 0x0480, 0x04a2, 0x0001, 0x01ed, - 0x0002, 0x0000, 0x04f5, 0x4122, 0x0001, 0x01f3, 0x0002, 0x0000, - 0x04f5, 0x4122, 0x0004, 0x0205, 0x01ff, 0x01fc, 0x0202, 0x0001, - 0x0066, 0x04b3, 0x0001, 0x0066, 0x04c3, 0x0001, 0x0066, 0x04ce, - // Entry 47CC0 - 47CFF - 0x0001, 0x0000, 0x051c, 0x0004, 0x0216, 0x0210, 0x020d, 0x0213, - 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, 0x0001, 0x0002, - 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x0227, 0x0221, 0x021e, - 0x0224, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0066, 0x0276, 0x0001, 0x0066, 0x0276, 0x0005, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0230, 0x0001, 0x0232, 0x0001, 0x0234, 0x0001, - 0x0000, 0x04ef, 0x0008, 0x0240, 0x0000, 0x0000, 0x0000, 0x0264, - 0x026b, 0x0000, 0x9006, 0x0001, 0x0242, 0x0003, 0x0246, 0x0000, - // Entry 47D00 - 47D3F - 0x0255, 0x000d, 0x0066, 0xffff, 0x04d8, 0x04e9, 0x04f4, 0x050f, - 0x0528, 0x0547, 0x0564, 0x056f, 0x057c, 0x058b, 0x0598, 0x05a9, - 0x000d, 0x0066, 0xffff, 0x04d8, 0x04e9, 0x04f4, 0x050f, 0x0528, - 0x0547, 0x0564, 0x056f, 0x057c, 0x058b, 0x0598, 0x05a9, 0x0001, - 0x0266, 0x0001, 0x0268, 0x0001, 0x0066, 0x05ba, 0x0004, 0x0279, - 0x0273, 0x0270, 0x0276, 0x0001, 0x0003, 0x014b, 0x0001, 0x0003, - 0x015f, 0x0001, 0x0003, 0x0548, 0x0001, 0x0003, 0x017c, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0283, 0x0004, 0x0291, - // Entry 47D40 - 47D7F - 0x028b, 0x0288, 0x028e, 0x0001, 0x0066, 0x05c9, 0x0001, 0x0066, - 0x025d, 0x0001, 0x0066, 0x026a, 0x0001, 0x0012, 0x0203, 0x0005, - 0x0000, 0x0000, 0x0000, 0x0000, 0x029a, 0x0003, 0x02a4, 0x0000, - 0x029e, 0x0001, 0x02a0, 0x0002, 0x0066, 0x05dc, 0x0605, 0x0001, - 0x02a6, 0x0002, 0x0000, 0x1a20, 0x4133, 0x0040, 0x02eb, 0x0000, - 0x0000, 0x02f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0307, - 0x0000, 0x0000, 0x031e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0335, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x034c, 0x0000, - // Entry 47D80 - 47DBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0351, 0x0000, 0x0000, 0x0359, - 0x0000, 0x0000, 0x0361, 0x0000, 0x0000, 0x0369, 0x0000, 0x0000, - 0x0371, 0x0000, 0x0000, 0x0379, 0x0000, 0x0000, 0x0381, 0x0000, - 0x0000, 0x0000, 0x0389, 0x0000, 0x038e, 0x0000, 0x0000, 0x03a0, - 0x0000, 0x0000, 0x03b2, 0x0000, 0x0000, 0x03c4, 0x0001, 0x02ed, - 0x0001, 0x0000, 0x4122, 0x0003, 0x02f4, 0x02f7, 0x02fc, 0x0001, - 0x0066, 0x0610, 0x0003, 0x0066, 0x0617, 0x062b, 0x0637, 0x0002, - 0x02ff, 0x0303, 0x0002, 0x0066, 0x0649, 0x0649, 0x0002, 0x0066, - // Entry 47DC0 - 47DFF - 0x0665, 0x0665, 0x0003, 0x030b, 0x030e, 0x0313, 0x0001, 0x0066, - 0x067f, 0x0003, 0x0066, 0x0686, 0x069a, 0x06a6, 0x0002, 0x0316, - 0x031a, 0x0002, 0x0066, 0x06b8, 0x06b8, 0x0002, 0x0066, 0x06d4, - 0x06d4, 0x0003, 0x0322, 0x0325, 0x032a, 0x0001, 0x0066, 0x06ee, - 0x0003, 0x0066, 0x06f9, 0x0711, 0x0721, 0x0002, 0x032d, 0x0331, - 0x0002, 0x0066, 0x0737, 0x0737, 0x0002, 0x0066, 0x0757, 0x0757, - 0x0003, 0x0339, 0x033c, 0x0341, 0x0001, 0x0066, 0x0775, 0x0003, - 0x0066, 0x077c, 0x078b, 0x0796, 0x0002, 0x0344, 0x0348, 0x0002, - // Entry 47E00 - 47E3F - 0x0066, 0x079f, 0x079f, 0x0002, 0x0066, 0x07bb, 0x07bb, 0x0001, - 0x034e, 0x0001, 0x0066, 0x07d5, 0x0002, 0x0000, 0x0354, 0x0003, - 0x0066, 0x07ef, 0x080d, 0x0823, 0x0002, 0x0000, 0x035c, 0x0003, - 0x0066, 0x083f, 0x085b, 0x086f, 0x0002, 0x0000, 0x0364, 0x0003, - 0x0066, 0x0889, 0x08a7, 0x08bd, 0x0002, 0x0000, 0x036c, 0x0003, - 0x0066, 0x08d9, 0x08f7, 0x090d, 0x0002, 0x0000, 0x0374, 0x0003, - 0x0066, 0x0929, 0x0947, 0x095d, 0x0002, 0x0000, 0x037c, 0x0003, - 0x0066, 0x0979, 0x098f, 0x099d, 0x0002, 0x0000, 0x0384, 0x0003, - // Entry 47E40 - 47E7F - 0x0066, 0x09b1, 0x09c9, 0x09d9, 0x0001, 0x038b, 0x0001, 0x0066, - 0x09ef, 0x0003, 0x0392, 0x0000, 0x0395, 0x0001, 0x0066, 0x0a1f, - 0x0002, 0x0398, 0x039c, 0x0002, 0x0066, 0x0a2a, 0x0a2a, 0x0002, - 0x0066, 0x0a4a, 0x0a4a, 0x0003, 0x03a4, 0x0000, 0x03a7, 0x0001, - 0x0066, 0x0a68, 0x0002, 0x03aa, 0x03ae, 0x0002, 0x0066, 0x0a73, - 0x0a73, 0x0002, 0x0066, 0x0a93, 0x0a93, 0x0003, 0x03b6, 0x0000, - 0x03b9, 0x0001, 0x0066, 0x0ab1, 0x0002, 0x03bc, 0x03c0, 0x0002, - 0x0066, 0x0abe, 0x0abe, 0x0002, 0x0066, 0x0ae0, 0x0ae0, 0x0001, - // Entry 47E80 - 47EBF - 0x03c6, 0x0001, 0x0066, 0x0b00, 0x0004, 0x03ce, 0x03d2, 0x03d7, - 0x03e2, 0x0002, 0x0000, 0x1dc7, 0x40b8, 0x0003, 0x0066, 0x0b18, - 0x0b27, 0x0b43, 0x0002, 0x0000, 0x03da, 0x0002, 0x0000, 0x03dd, - 0x0003, 0x0066, 0xffff, 0x0b65, 0x0b8e, 0x0002, 0x0000, 0x03e5, - 0x0003, 0x03e9, 0x0529, 0x0489, 0x009e, 0x0066, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0cc7, 0x0d5c, 0x0e3e, 0x0eac, 0x0f3b, 0x0fc4, - 0x101a, 0x109d, 0xffff, 0x11e1, 0x1243, 0x12c3, 0x136a, 0x13e4, - 0x1485, 0x1559, 0x1656, 0x1724, 0x17f2, 0x1878, 0x18da, 0xffff, - // Entry 47EC0 - 47EFF - 0xffff, 0x1980, 0xffff, 0x1a2f, 0xffff, 0x1afb, 0x1b5d, 0x1bb9, - 0x1c1b, 0xffff, 0xffff, 0x1ce3, 0x1d5d, 0x1df7, 0xffff, 0xffff, - 0xffff, 0x1eb1, 0xffff, 0x1f60, 0x1ffb, 0xffff, 0x2090, 0x2125, - 0x21d2, 0xffff, 0xffff, 0xffff, 0xffff, 0x230a, 0xffff, 0xffff, - 0x23c7, 0x2468, 0xffff, 0xffff, 0x2575, 0x2604, 0x2672, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x27d0, 0x2832, 0x28a6, - 0x292c, 0x29a0, 0xffff, 0xffff, 0x2acb, 0xffff, 0x2b4d, 0xffff, - 0xffff, 0x2c41, 0xffff, 0x2d4b, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 47F00 - 47F3F - 0x2e34, 0xffff, 0x2ecc, 0x2faf, 0x305f, 0x30df, 0xffff, 0xffff, - 0xffff, 0x3189, 0x3224, 0x32b9, 0xffff, 0xffff, 0x338a, 0x3469, - 0x34ef, 0x3551, 0xffff, 0xffff, 0x3611, 0x3685, 0x36e1, 0xffff, - 0x3780, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x392d, 0x399b, - 0x3a03, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3b3f, 0xffff, 0xffff, 0x3be1, 0xffff, 0x3c55, 0xffff, 0x3cf9, - 0x3d6d, 0x3df3, 0xffff, 0x3e87, 0x3f13, 0xffff, 0xffff, 0xffff, - 0x3ff0, 0x405e, 0xffff, 0xffff, 0x0bb7, 0x0dd0, 0x110b, 0x1173, - // Entry 47F40 - 47F7F - 0xffff, 0xffff, 0x2cb2, 0x3877, 0x009e, 0x0066, 0x0c19, 0x0c3b, - 0x0c64, 0x0c8b, 0x0cee, 0x0d78, 0x0e58, 0x0ed1, 0x0f5e, 0x0fd6, - 0x103b, 0x10b7, 0xffff, 0x11f7, 0x1263, 0x12f0, 0x1388, 0x140f, - 0x14c1, 0x15a2, 0x1690, 0x175e, 0x1814, 0x188e, 0x18f6, 0x194e, - 0x1964, 0x19a0, 0x1a00, 0x1a52, 0x1ace, 0x1b11, 0x1b71, 0x1bcf, - 0x1c39, 0x1c95, 0x1cc0, 0x1d01, 0x1d82, 0x1e0b, 0x1e53, 0x1e69, - 0x1e8e, 0x1ed6, 0x1f44, 0x1f89, 0x2022, 0xffff, 0x20b7, 0x2154, - 0x21e6, 0x222e, 0x2272, 0x22d0, 0x22ee, 0x2326, 0x237e, 0x23ab, - // Entry 47F80 - 47FBF - 0x23f2, 0x2493, 0x2532, 0x2559, 0x259a, 0x261e, 0x2686, 0x26ce, - 0x26ff, 0x2722, 0x2741, 0x2772, 0x27a1, 0x27e6, 0x284e, 0x28c8, - 0x2948, 0x29db, 0x2a71, 0x2a9e, 0x2ae3, 0x2b33, 0x2b71, 0x2bd9, - 0x2c1a, 0x2c5c, 0x2d1a, 0x2d65, 0x2db9, 0x2dd7, 0x2df1, 0x2e09, - 0x2e54, 0x2eb4, 0x2f0d, 0x2fdf, 0x307f, 0x30f7, 0x3147, 0x315d, - 0x3173, 0x31b2, 0x324b, 0x32dd, 0x3345, 0x335d, 0x33b5, 0x348b, - 0x3505, 0x356d, 0x35c5, 0x35db, 0x362d, 0x3699, 0x36fd, 0x3755, - 0x37b7, 0x3845, 0x385f, 0xffff, 0x38f7, 0x3915, 0x3947, 0x39b3, - // Entry 47FC0 - 47FFF - 0x3a1b, 0x3a71, 0x3a89, 0x3aa5, 0x3ad2, 0x3afb, 0x3b15, 0x3b29, - 0x3b57, 0x3ba7, 0x3bc7, 0x3bf7, 0x3c43, 0x3c79, 0x3ce1, 0x3d15, - 0x3d8f, 0x3e0f, 0x3e67, 0x3eab, 0x3f31, 0x3f8d, 0x3fa5, 0x3fc6, - 0x400a, 0x4084, 0x2509, 0x342b, 0x0bcd, 0x0dea, 0x1123, 0x118d, - 0x1ab8, 0x2bfb, 0x2cca, 0x3897, 0x009e, 0x0066, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0d28, 0x0da7, 0x0e85, 0x0f09, 0x0f94, 0x0ffb, - 0x106f, 0x10e4, 0xffff, 0x1220, 0x1296, 0x1330, 0x13b9, 0x144d, - 0x1510, 0x1600, 0x16dd, 0x17ab, 0x1849, 0x18b7, 0x1925, 0xffff, - // Entry 48000 - 4803F - 0xffff, 0x19d3, 0xffff, 0x1a88, 0xffff, 0x1b3a, 0x1b98, 0x1bf8, - 0x1c6a, 0xffff, 0xffff, 0x1d32, 0x1dba, 0x1e32, 0xffff, 0xffff, - 0xffff, 0x1f12, 0xffff, 0x1fc5, 0x205c, 0xffff, 0x20f1, 0x2196, - 0x220d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2355, 0xffff, 0xffff, - 0x2430, 0x24d1, 0xffff, 0xffff, 0x25d2, 0x264b, 0x26ad, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x280f, 0x287d, 0x28fd, - 0x2977, 0x2a29, 0xffff, 0xffff, 0x2b0e, 0xffff, 0x2ba8, 0xffff, - 0xffff, 0x2c8a, 0xffff, 0x2d92, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 48040 - 4807F - 0x2e87, 0xffff, 0x2f61, 0x3022, 0x30b2, 0x3122, 0xffff, 0xffff, - 0xffff, 0x31ee, 0x3285, 0x3314, 0xffff, 0xffff, 0x33f3, 0x34c0, - 0x352e, 0x359c, 0xffff, 0xffff, 0x365c, 0x36c0, 0x372c, 0xffff, - 0x3801, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3974, 0x39de, - 0x3a46, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x3b82, 0xffff, 0xffff, 0x3c20, 0xffff, 0x3cb0, 0xffff, 0x3d44, - 0x3dc4, 0x3e3e, 0xffff, 0x3ee2, 0x3f62, 0xffff, 0xffff, 0xffff, - 0x4037, 0x40bd, 0xffff, 0xffff, 0x0bf6, 0x0e17, 0x114e, 0x11ba, - // Entry 48080 - 480BF - 0xffff, 0xffff, 0x2cf5, 0x38ca, 0x0003, 0x0004, 0x0511, 0x0a87, - 0x0011, 0x0000, 0x0000, 0x0016, 0x0000, 0x0051, 0x0000, 0x00d8, - 0x0103, 0x031c, 0x0349, 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, - 0x03e1, 0x04d9, 0x0001, 0x0018, 0x0002, 0x001b, 0x003f, 0x0003, - 0x001f, 0x0000, 0x002f, 0x000e, 0x0067, 0xffff, 0x0000, 0x0007, - 0x000f, 0x0017, 0x001f, 0x0027, 0x002f, 0x003b, 0x0045, 0x004d, - 0x0057, 0x005d, 0x0065, 0x000e, 0x0067, 0xffff, 0x0000, 0x006d, - 0x0076, 0x0081, 0x008c, 0x0095, 0x00a0, 0x00b1, 0x00c0, 0x00cd, - // Entry 480C0 - 480FF - 0x00d8, 0x00e1, 0x00ec, 0x0001, 0x0041, 0x000e, 0x0067, 0xffff, - 0x0000, 0x00f5, 0x00fc, 0x0103, 0x010a, 0x0111, 0x0118, 0x0123, - 0x012c, 0x0133, 0x013c, 0x0141, 0x0148, 0x0005, 0x0057, 0x0000, - 0x0000, 0x0000, 0x00c2, 0x0002, 0x005a, 0x008e, 0x0003, 0x005e, - 0x006e, 0x007e, 0x000e, 0x0008, 0xffff, 0x0e09, 0x4fad, 0x4fb5, - 0x4fbd, 0x4fc5, 0x4fcd, 0x4fd7, 0x4fdf, 0x4fe9, 0x4ff1, 0x4ff9, - 0x5001, 0x5009, 0x000e, 0x000b, 0xffff, 0x0962, 0x0965, 0x0968, - 0x096b, 0x096e, 0x0971, 0x0974, 0x0977, 0x097a, 0x2798, 0x279b, - // Entry 48100 - 4813F - 0x279e, 0x27a1, 0x000e, 0x0067, 0xffff, 0x014f, 0x0162, 0x0171, - 0x017e, 0x018d, 0x0196, 0x01a5, 0x01b6, 0x01c3, 0x01d2, 0x01db, - 0x01e6, 0x01f3, 0x0003, 0x0092, 0x00a2, 0x00b2, 0x000e, 0x0008, - 0xffff, 0x0e09, 0x4fad, 0x4fb5, 0x4fbd, 0x4fc5, 0x4fcd, 0x4fd7, - 0x4fdf, 0x4fe9, 0x4ff1, 0x4ff9, 0x5001, 0x5009, 0x000e, 0x000b, - 0xffff, 0x0962, 0x0965, 0x0968, 0x096b, 0x096e, 0x0971, 0x0974, - 0x0977, 0x097a, 0x2798, 0x279b, 0x279e, 0x27a1, 0x000e, 0x0067, - 0xffff, 0x014f, 0x0204, 0x0171, 0x017e, 0x018d, 0x0196, 0x01a5, - // Entry 48140 - 4817F - 0x01b6, 0x01c3, 0x01d2, 0x01db, 0x01e6, 0x01f3, 0x0003, 0x00cc, - 0x00d2, 0x00c6, 0x0001, 0x00c8, 0x0002, 0x0000, 0x0425, 0x042a, - 0x0001, 0x00ce, 0x0002, 0x0000, 0x0425, 0x042a, 0x0001, 0x00d4, - 0x0002, 0x0000, 0xffff, 0x042a, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x00e1, 0x0000, 0x00f2, 0x0004, 0x00ef, 0x00e9, - 0x00e6, 0x00ec, 0x0001, 0x0067, 0x0211, 0x0001, 0x0067, 0x0228, - 0x0001, 0x0001, 0x1f98, 0x0001, 0x0013, 0x048d, 0x0004, 0x0100, - 0x00fa, 0x00f7, 0x00fd, 0x0001, 0x0067, 0x0239, 0x0001, 0x0067, - // Entry 48180 - 481BF - 0x0239, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x010c, 0x0171, 0x01c8, 0x01fd, 0x02ce, 0x02e9, 0x02fa, 0x030b, - 0x0002, 0x010f, 0x0140, 0x0003, 0x0113, 0x0122, 0x0131, 0x000d, - 0x0067, 0xffff, 0x0246, 0x024e, 0x0256, 0x025e, 0x0268, 0x0272, - 0x027c, 0x0284, 0x028e, 0x0296, 0x02a0, 0x02aa, 0x000d, 0x000e, - 0xffff, 0x01f0, 0x2218, 0x221b, 0x221e, 0x2221, 0x0298, 0x2218, - 0x01f0, 0x2025, 0x2224, 0x2218, 0x2227, 0x000d, 0x0067, 0xffff, - 0x02b4, 0x02bf, 0x02cc, 0x02db, 0x02e8, 0x02f5, 0x0302, 0x030d, - // Entry 481C0 - 481FF - 0x031a, 0x0329, 0x0336, 0x0349, 0x0003, 0x0144, 0x0153, 0x0162, - 0x000d, 0x0067, 0xffff, 0x0356, 0x035d, 0x0364, 0x036b, 0x0372, - 0x0379, 0x0380, 0x0387, 0x038e, 0x0395, 0x039c, 0x03a3, 0x000d, - 0x0037, 0xffff, 0x2032, 0x2094, 0x1597, 0x2026, 0x13d7, 0x2035, - 0x2094, 0x2032, 0x2097, 0x13da, 0x2094, 0x209a, 0x000d, 0x0067, - 0xffff, 0x03aa, 0x03b7, 0x03c2, 0x03d3, 0x03e2, 0x03f1, 0x0400, - 0x040d, 0x041c, 0x042d, 0x043c, 0x044d, 0x0002, 0x0174, 0x019e, - 0x0005, 0x017a, 0x0183, 0x0195, 0x0000, 0x018c, 0x0007, 0x0008, - // Entry 48200 - 4823F - 0x080d, 0x5011, 0x5016, 0x501b, 0x5020, 0x5025, 0x502a, 0x0007, - 0x003e, 0x0e97, 0x20cf, 0x20d2, 0x20d5, 0x20d8, 0x20cf, 0x20d5, - 0x0007, 0x0008, 0x080d, 0x5011, 0x5016, 0x501b, 0x5020, 0x5025, - 0x502a, 0x0007, 0x0067, 0x045c, 0x0469, 0x047c, 0x048d, 0x049a, - 0x04a7, 0x04b8, 0x0005, 0x01a4, 0x01ad, 0x01bf, 0x0000, 0x01b6, - 0x0007, 0x0008, 0x080d, 0x5011, 0x5016, 0x501b, 0x5020, 0x5025, - 0x502a, 0x0007, 0x003e, 0x0e97, 0x20cf, 0x20d2, 0x20d5, 0x20d8, - 0x20cf, 0x20d5, 0x0007, 0x0008, 0x080d, 0x5011, 0x5016, 0x501b, - // Entry 48240 - 4827F - 0x5020, 0x5025, 0x502a, 0x0007, 0x0067, 0x045c, 0x0469, 0x047c, - 0x048d, 0x049a, 0x04a7, 0x04b8, 0x0002, 0x01cb, 0x01e4, 0x0003, - 0x01cf, 0x01d6, 0x01dd, 0x0005, 0x0054, 0xffff, 0x046b, 0x0476, - 0x0481, 0x048c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x0054, 0xffff, 0x0497, 0x04ab, 0x04bf, 0x04d3, - 0x0003, 0x01e8, 0x01ef, 0x01f6, 0x0005, 0x0054, 0xffff, 0x046b, - 0x0476, 0x0481, 0x048c, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x0054, 0xffff, 0x0497, 0x04ab, 0x04bf, - // Entry 48280 - 482BF - 0x04d3, 0x0002, 0x0200, 0x0267, 0x0003, 0x0204, 0x0225, 0x0246, - 0x0008, 0x0210, 0x0216, 0x020d, 0x0219, 0x021c, 0x021f, 0x0222, - 0x0213, 0x0001, 0x0067, 0x04c5, 0x0001, 0x0067, 0x04d6, 0x0001, - 0x0067, 0x04db, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, 0x04f3, - 0x0001, 0x0054, 0x04fa, 0x0001, 0x0067, 0x04fe, 0x0001, 0x0067, - 0x050b, 0x0008, 0x0231, 0x0237, 0x022e, 0x023a, 0x023d, 0x0240, - 0x0243, 0x0234, 0x0001, 0x0067, 0x0514, 0x0001, 0x0067, 0x04d6, - 0x0001, 0x000e, 0x0292, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, - // Entry 482C0 - 482FF - 0x04f3, 0x0001, 0x0054, 0x04fa, 0x0001, 0x0067, 0x04fe, 0x0001, - 0x0067, 0x050b, 0x0008, 0x0252, 0x0258, 0x024f, 0x025b, 0x025e, - 0x0261, 0x0264, 0x0255, 0x0001, 0x0067, 0x04c5, 0x0001, 0x0067, - 0x04d6, 0x0001, 0x0067, 0x04db, 0x0001, 0x0067, 0x04ee, 0x0001, - 0x0067, 0x04f3, 0x0001, 0x0054, 0x04fa, 0x0001, 0x0067, 0x04fe, - 0x0001, 0x0067, 0x050b, 0x0003, 0x026b, 0x028c, 0x02ad, 0x0008, - 0x0277, 0x027d, 0x0274, 0x0280, 0x0283, 0x0286, 0x0289, 0x027a, - 0x0001, 0x0067, 0x0514, 0x0001, 0x0067, 0x04d6, 0x0001, 0x0067, - // Entry 48300 - 4833F - 0x0521, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, 0x0532, 0x0001, - 0x0054, 0x0535, 0x0001, 0x0067, 0x053d, 0x0001, 0x0067, 0x0548, - 0x0008, 0x0298, 0x029e, 0x0295, 0x02a1, 0x02a4, 0x02a7, 0x02aa, - 0x029b, 0x0001, 0x0067, 0x0514, 0x0001, 0x0067, 0x04d6, 0x0001, - 0x0067, 0x0521, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, 0x0532, - 0x0001, 0x0054, 0x0535, 0x0001, 0x0067, 0x053d, 0x0001, 0x0067, - 0x0548, 0x0008, 0x02b9, 0x02bf, 0x02b6, 0x02c2, 0x02c5, 0x02c8, - 0x02cb, 0x02bc, 0x0001, 0x0067, 0x0514, 0x0001, 0x0067, 0x04d6, - // Entry 48340 - 4837F - 0x0001, 0x0067, 0x0521, 0x0001, 0x0067, 0x04ee, 0x0001, 0x0067, - 0x0532, 0x0001, 0x0054, 0x0535, 0x0001, 0x0067, 0x053d, 0x0001, - 0x0067, 0x0548, 0x0003, 0x02dd, 0x02e3, 0x02d2, 0x0002, 0x02d5, - 0x02d9, 0x0002, 0x0067, 0x054f, 0x057d, 0x0002, 0x0067, 0x0566, - 0x058f, 0x0001, 0x02df, 0x0002, 0x0067, 0x05a1, 0x05ae, 0x0001, - 0x02e5, 0x0002, 0x0067, 0x05b6, 0x05c2, 0x0004, 0x02f7, 0x02f1, - 0x02ee, 0x02f4, 0x0001, 0x0067, 0x05c9, 0x0001, 0x0067, 0x05de, - 0x0001, 0x0067, 0x05ed, 0x0001, 0x0007, 0x0277, 0x0004, 0x0308, - // Entry 48380 - 483BF - 0x0302, 0x02ff, 0x0305, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x0319, 0x0313, 0x0310, 0x0316, 0x0001, 0x0067, 0x0239, 0x0001, - 0x0067, 0x0239, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0001, 0x031e, 0x0002, 0x0321, 0x0335, 0x0003, 0x0000, 0x0000, - 0x0325, 0x000e, 0x0067, 0x0652, 0x05fb, 0x0606, 0x0619, 0x0628, - 0x0633, 0x063e, 0x0649, 0x065e, 0x0669, 0x0670, 0x067b, 0x013c, - 0x0688, 0x0003, 0x0000, 0x0000, 0x0339, 0x000e, 0x0067, 0x0652, - // Entry 483C0 - 483FF - 0x05fb, 0x0691, 0x069e, 0x06ab, 0x06b6, 0x063e, 0x0649, 0x065e, - 0x06bf, 0x0670, 0x067b, 0x06c6, 0x0688, 0x0005, 0x034f, 0x0000, - 0x0000, 0x0000, 0x0396, 0x0002, 0x0352, 0x0374, 0x0003, 0x0356, - 0x0000, 0x0365, 0x000d, 0x0067, 0xffff, 0x06cb, 0x06d5, 0x06df, - 0x06e9, 0x06f3, 0x06fd, 0x0707, 0x070f, 0x0717, 0x071f, 0x0729, - 0x0731, 0x000d, 0x0009, 0xffff, 0x071d, 0x072a, 0x54a0, 0x074c, - 0x54b1, 0x54c0, 0x54cd, 0x54da, 0x54e9, 0x54fc, 0x07af, 0x5507, - 0x0003, 0x0378, 0x0000, 0x0387, 0x000d, 0x0067, 0xffff, 0x06cb, - // Entry 48400 - 4843F - 0x06d5, 0x06df, 0x06e9, 0x06f3, 0x06fd, 0x0707, 0x070f, 0x0717, - 0x071f, 0x0729, 0x0731, 0x000d, 0x0009, 0xffff, 0x071d, 0x072a, - 0x54a0, 0x074c, 0x54b1, 0x54c0, 0x54cd, 0x54da, 0x54e9, 0x54fc, - 0x07af, 0x5507, 0x0003, 0x039f, 0x03a4, 0x039a, 0x0001, 0x039c, - 0x0001, 0x0000, 0x0601, 0x0001, 0x03a1, 0x0001, 0x0000, 0x0601, - 0x0001, 0x03a6, 0x0001, 0x0000, 0x0601, 0x0001, 0x03ab, 0x0002, - 0x03ae, 0x03d0, 0x0003, 0x03b2, 0x0000, 0x03c1, 0x000d, 0x0067, - 0xffff, 0x073b, 0x0743, 0x074b, 0x0756, 0x0762, 0x076e, 0x077b, - // Entry 48440 - 4847F - 0x0785, 0x078f, 0x0797, 0x079f, 0x07ad, 0x000d, 0x0067, 0xffff, - 0x07bb, 0x07cc, 0x074b, 0x0756, 0x07d7, 0x07e8, 0x07fa, 0x0807, - 0x0814, 0x0823, 0x0830, 0x0845, 0x0001, 0x03d2, 0x000d, 0x0067, - 0xffff, 0x085a, 0x0861, 0x074b, 0x0756, 0x0868, 0x0873, 0x087f, - 0x0888, 0x0891, 0x0898, 0x089f, 0x08ac, 0x0005, 0x0000, 0x0000, - 0x0000, 0x0000, 0x03e7, 0x0001, 0x03e9, 0x0001, 0x03eb, 0x00ec, - 0x0067, 0x08b9, 0x08d0, 0x08e9, 0x0902, 0x0919, 0x0930, 0x0947, - 0x095c, 0x0973, 0x0988, 0x09a1, 0x09ba, 0x09de, 0x0a02, 0x0a26, - // Entry 48480 - 484BF - 0x0a4c, 0x0a70, 0x0a85, 0x0a9d, 0x0ab6, 0x0acd, 0x0ae4, 0x0afd, - 0x0b14, 0x0b2d, 0x0b46, 0x0b5d, 0x0b76, 0x0b91, 0x0baa, 0x0bc1, - 0x0bda, 0x0bf3, 0x0c08, 0x0c1f, 0x0c38, 0x0c51, 0x0c6c, 0x0c87, - 0x0c9a, 0x0caf, 0x0cc4, 0x0cdf, 0x0cf9, 0x0d14, 0x0d2d, 0x0d44, - 0x0d5b, 0x0d70, 0x0d85, 0x0da0, 0x0dbb, 0x0dd3, 0x0dec, 0x0e05, - 0x0e20, 0x0e39, 0x0e54, 0x0e6f, 0x0e8c, 0x0ea5, 0x0ec2, 0x0edb, - 0x0ef4, 0x0f0d, 0x0f2a, 0x0f41, 0x0f5a, 0x0f77, 0x0f8e, 0x0fa7, - 0x0fc2, 0x0fd9, 0x0ff2, 0x100f, 0x1026, 0x1041, 0x105c, 0x1077, - // Entry 484C0 - 484FF - 0x1093, 0x10aa, 0x10c6, 0x10dd, 0x10f8, 0x1113, 0x112e, 0x1149, - 0x1160, 0x1179, 0x1192, 0x11ab, 0x11c2, 0x11dd, 0x11f6, 0x120f, - 0x122a, 0x1245, 0x125a, 0x1275, 0x128e, 0x12aa, 0x12bf, 0x12d8, - 0x12f1, 0x130c, 0x1323, 0x133c, 0x1359, 0x1374, 0x138d, 0x13a8, - 0x13c3, 0x13dc, 0x13f8, 0x1413, 0x1430, 0x1449, 0x1464, 0x147d, - 0x1498, 0x14b3, 0x14cc, 0x14e5, 0x14fe, 0x151b, 0x1538, 0x1551, - 0x156e, 0x1586, 0x15a1, 0x15bc, 0x15d7, 0x15f2, 0x160b, 0x1624, - 0x163f, 0x1659, 0x1672, 0x168e, 0x16a9, 0x16c0, 0x16d7, 0x16f0, - // Entry 48500 - 4853F - 0x1709, 0x1724, 0x173d, 0x175a, 0x1773, 0x178a, 0x17a3, 0x17bc, - 0x17d6, 0x17f1, 0x180a, 0x1825, 0x1842, 0x185b, 0x1874, 0x188d, - 0x18a8, 0x18c3, 0x18e0, 0x18f9, 0x1914, 0x192f, 0x1946, 0x195f, - 0x197c, 0x1995, 0x19aa, 0x19c7, 0x19dc, 0x19f7, 0x1a10, 0x1a2b, - 0x1a46, 0x1a61, 0x1a7e, 0x1a97, 0x1ab4, 0x1acf, 0x1aea, 0x1b01, - 0x1b1c, 0x1b37, 0x1b52, 0x1b69, 0x1b82, 0x1b9b, 0x1bb4, 0x1bd1, - 0x1bec, 0x1c05, 0x1c20, 0x1c39, 0x1c54, 0x1c71, 0x1c8c, 0x1ca5, - 0x1cc1, 0x1cda, 0x1cf3, 0x1d0a, 0x1d27, 0x1d42, 0x1d5d, 0x1d74, - // Entry 48540 - 4857F - 0x1d8d, 0x1daa, 0x1dc7, 0x1dde, 0x1dfb, 0x1e14, 0x1e2f, 0x1e48, - 0x1e61, 0x1e7d, 0x1e98, 0x1eb1, 0x1ecb, 0x1ee6, 0x1f01, 0x1f1a, - 0x1f33, 0x1f4e, 0x1f67, 0x1f7e, 0x1f95, 0x1fae, 0x1fca, 0x1fe3, - 0x1ffe, 0x2015, 0x2022, 0x202f, 0x203a, 0x0001, 0x04db, 0x0002, - 0x04de, 0x0500, 0x0003, 0x04e2, 0x0000, 0x04f1, 0x000d, 0x0068, - 0xffff, 0x0000, 0x0008, 0x0010, 0x0018, 0x001f, 0x0027, 0x002f, - 0x0037, 0x0040, 0x0049, 0x0050, 0x0058, 0x000d, 0x0068, 0xffff, - 0x0060, 0x0073, 0x0088, 0x0018, 0x0095, 0x00a2, 0x00b3, 0x0037, - // Entry 48580 - 485BF - 0x0040, 0x0049, 0x00bc, 0x00c9, 0x0001, 0x0502, 0x000d, 0x0068, - 0xffff, 0x00d6, 0x00dd, 0x00e4, 0x0018, 0x00eb, 0x00f2, 0x00f9, - 0x0037, 0x0040, 0x0049, 0x0100, 0x0107, 0x0040, 0x0552, 0x0000, - 0x0000, 0x0557, 0x0576, 0x0595, 0x05b4, 0x05d3, 0x05f2, 0x0611, - 0x0630, 0x064a, 0x0664, 0x0687, 0x06a5, 0x0000, 0x0000, 0x0000, - 0x06c3, 0x06e4, 0x0705, 0x0000, 0x0000, 0x0000, 0x0726, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x072b, 0x0747, 0x0763, 0x077f, - 0x079b, 0x07b7, 0x07d3, 0x07ef, 0x080b, 0x0827, 0x0843, 0x085f, - // Entry 485C0 - 485FF - 0x087b, 0x0897, 0x08b3, 0x08cf, 0x08eb, 0x0907, 0x0923, 0x093f, - 0x095b, 0x0000, 0x0977, 0x0000, 0x097c, 0x099a, 0x09b8, 0x09d6, - 0x09f4, 0x0a12, 0x0a30, 0x0a4e, 0x0a68, 0x0a82, 0x0001, 0x0554, - 0x0001, 0x0009, 0x0877, 0x0003, 0x055b, 0x055e, 0x0563, 0x0001, - 0x0068, 0x010e, 0x0003, 0x0068, 0x0115, 0x0120, 0x0134, 0x0002, - 0x0566, 0x056e, 0x0006, 0x0068, 0x019a, 0x0152, 0xffff, 0xffff, - 0x0168, 0x0180, 0x0006, 0x0068, 0x01f4, 0x01b2, 0xffff, 0xffff, - 0x01c6, 0x01dc, 0x0003, 0x057a, 0x057d, 0x0582, 0x0001, 0x0068, - // Entry 48600 - 4863F - 0x020a, 0x0003, 0x0068, 0x0115, 0x0120, 0x0134, 0x0002, 0x0585, - 0x058d, 0x0006, 0x0068, 0x020e, 0x020e, 0xffff, 0xffff, 0x020e, - 0x020e, 0x0006, 0x0068, 0x0221, 0x0221, 0xffff, 0xffff, 0x0221, - 0x0221, 0x0003, 0x0599, 0x059c, 0x05a1, 0x0001, 0x0068, 0x020a, - 0x0003, 0x0068, 0x0115, 0x0120, 0x0134, 0x0002, 0x05a4, 0x05ac, - 0x0006, 0x0068, 0x0232, 0x0232, 0xffff, 0xffff, 0x0232, 0x0232, - 0x0006, 0x0068, 0x0221, 0x0221, 0xffff, 0xffff, 0x0221, 0x0221, - 0x0003, 0x05b8, 0x05bb, 0x05c0, 0x0001, 0x0008, 0x0b3d, 0x0003, - // Entry 48640 - 4867F - 0x0068, 0x023f, 0x0261, 0x027d, 0x0002, 0x05c3, 0x05cb, 0x0006, - 0x0055, 0x4880, 0x024a, 0xffff, 0xffff, 0x483e, 0x485e, 0x0006, - 0x0068, 0x02fd, 0x02a3, 0xffff, 0xffff, 0x02bf, 0x02dd, 0x0003, - 0x05d7, 0x05da, 0x05df, 0x0001, 0x0008, 0x0ca5, 0x0003, 0x0068, - 0x031b, 0x0332, 0x0343, 0x0002, 0x05e2, 0x05ea, 0x0006, 0x0055, - 0x0351, 0x0351, 0xffff, 0xffff, 0x0351, 0x0351, 0x0006, 0x0068, - 0x035e, 0x035e, 0xffff, 0xffff, 0x035e, 0x035e, 0x0003, 0x05f6, - 0x05f9, 0x05fe, 0x0001, 0x0008, 0x0ca5, 0x0003, 0x0068, 0x031b, - // Entry 48680 - 486BF - 0x0332, 0x0343, 0x0002, 0x0601, 0x0609, 0x0006, 0x005c, 0x027d, - 0x027d, 0xffff, 0xffff, 0x027d, 0x027d, 0x0006, 0x0068, 0x035e, - 0x035e, 0xffff, 0xffff, 0x035e, 0x035e, 0x0003, 0x0615, 0x0618, - 0x061d, 0x0001, 0x0068, 0x0371, 0x0003, 0x0068, 0x037e, 0x039c, - 0x03b4, 0x0002, 0x0620, 0x0628, 0x0006, 0x0068, 0x042c, 0x03d6, - 0xffff, 0xffff, 0x03f2, 0x040e, 0x0006, 0x0068, 0x0498, 0x0448, - 0xffff, 0xffff, 0x0462, 0x047c, 0x0003, 0x0634, 0x0000, 0x0637, - 0x0001, 0x0068, 0x04b2, 0x0002, 0x063a, 0x0642, 0x0006, 0x0068, - // Entry 486C0 - 486FF - 0x04ba, 0x04ba, 0xffff, 0xffff, 0x04ba, 0x04ba, 0x0006, 0x0068, - 0x04d1, 0x04d1, 0xffff, 0xffff, 0x04d1, 0x04d1, 0x0003, 0x064e, - 0x0000, 0x0651, 0x0001, 0x0068, 0x04b2, 0x0002, 0x0654, 0x065c, - 0x0006, 0x0068, 0x04e6, 0x04e6, 0xffff, 0xffff, 0x04e6, 0x04e6, - 0x0006, 0x0068, 0x04d1, 0x04d1, 0xffff, 0xffff, 0x04d1, 0x04d1, - 0x0004, 0x0669, 0x066c, 0x0671, 0x0684, 0x0001, 0x0068, 0x04f7, - 0x0003, 0x0068, 0x0506, 0x0522, 0x0538, 0x0002, 0x0674, 0x067c, - 0x0006, 0x0068, 0x05ac, 0x0558, 0xffff, 0xffff, 0x0576, 0x0590, - // Entry 48700 - 4873F - 0x0006, 0x0068, 0x0614, 0x05c6, 0xffff, 0xffff, 0x05e2, 0x05fa, - 0x0001, 0x0068, 0x062c, 0x0004, 0x068c, 0x0000, 0x068f, 0x06a2, - 0x0001, 0x0068, 0x0642, 0x0002, 0x0692, 0x069a, 0x0006, 0x0068, - 0x064a, 0x064a, 0xffff, 0xffff, 0x064a, 0x064a, 0x0006, 0x0068, - 0x0661, 0x0661, 0xffff, 0xffff, 0x0661, 0x0661, 0x0001, 0x0068, - 0x062c, 0x0004, 0x06aa, 0x0000, 0x06ad, 0x06c0, 0x0001, 0x0068, - 0x0642, 0x0002, 0x06b0, 0x06b8, 0x0006, 0x0068, 0x0676, 0x0676, - 0xffff, 0xffff, 0x0676, 0x0676, 0x0006, 0x0068, 0x0661, 0x0661, - // Entry 48740 - 4877F - 0xffff, 0xffff, 0x0661, 0x0661, 0x0001, 0x0068, 0x062c, 0x0003, - 0x06c7, 0x06ca, 0x06d1, 0x0001, 0x0054, 0x0535, 0x0005, 0x0068, - 0x069a, 0x06a5, 0x06b6, 0x0687, 0x06c3, 0x0002, 0x06d4, 0x06dc, - 0x0006, 0x0055, 0x06eb, 0x06d3, 0xffff, 0xffff, 0x48a0, 0x48b6, - 0x0006, 0x0068, 0x071a, 0x06da, 0xffff, 0xffff, 0x06f0, 0x0704, - 0x0003, 0x06e8, 0x06eb, 0x06f2, 0x0001, 0x0008, 0x10aa, 0x0005, - 0x0068, 0x069a, 0x06a5, 0x06b6, 0x0687, 0x06c3, 0x0002, 0x06f5, - 0x06fd, 0x0006, 0x0055, 0x0778, 0x0778, 0xffff, 0xffff, 0x0778, - // Entry 48780 - 487BF - 0x0778, 0x0006, 0x0068, 0x072e, 0x072e, 0xffff, 0xffff, 0x072e, - 0x072e, 0x0003, 0x0709, 0x070c, 0x0713, 0x0001, 0x0008, 0x10aa, - 0x0005, 0x0068, 0x069a, 0x06a5, 0x06b6, 0x0687, 0x06c3, 0x0002, - 0x0716, 0x071e, 0x0006, 0x005c, 0x3780, 0x03e3, 0xffff, 0xffff, - 0x3780, 0x3780, 0x0006, 0x0068, 0x0752, 0x0741, 0xffff, 0xffff, - 0x0752, 0x0752, 0x0001, 0x0728, 0x0001, 0x0068, 0x075d, 0x0003, - 0x0000, 0x072f, 0x0734, 0x0003, 0x0068, 0x0771, 0x078d, 0x07a3, - 0x0002, 0x0737, 0x073f, 0x0006, 0x0068, 0x07df, 0x07c3, 0xffff, - // Entry 487C0 - 487FF - 0xffff, 0x07df, 0x07fb, 0x0006, 0x0068, 0x0831, 0x0817, 0xffff, - 0xffff, 0x0831, 0x084b, 0x0003, 0x0000, 0x074b, 0x0750, 0x0003, - 0x0068, 0x0865, 0x0879, 0x0887, 0x0002, 0x0753, 0x075b, 0x0006, - 0x0068, 0x07df, 0x07c3, 0xffff, 0xffff, 0x07df, 0x07fb, 0x0006, - 0x0068, 0x0831, 0x0817, 0xffff, 0xffff, 0x0831, 0x084b, 0x0003, - 0x0000, 0x0767, 0x076c, 0x0003, 0x0068, 0x089f, 0x0879, 0x08ac, - 0x0002, 0x076f, 0x0777, 0x0006, 0x0068, 0x07df, 0x07c3, 0xffff, - 0xffff, 0x07df, 0x07fb, 0x0006, 0x0068, 0x0831, 0x0817, 0xffff, - // Entry 48800 - 4883F - 0xffff, 0x0831, 0x084b, 0x0003, 0x0000, 0x0783, 0x0788, 0x0003, - 0x0068, 0x08bb, 0x08df, 0x08fd, 0x0002, 0x078b, 0x0793, 0x0006, - 0x0068, 0x098d, 0x0925, 0xffff, 0xffff, 0x0947, 0x0969, 0x0006, - 0x0068, 0x0a11, 0x09af, 0xffff, 0xffff, 0x09cf, 0x09ef, 0x0003, - 0x0000, 0x079f, 0x07a4, 0x0003, 0x0068, 0x0a31, 0x0a47, 0x0a57, - 0x0002, 0x07a7, 0x07af, 0x0006, 0x0068, 0x098d, 0x0925, 0xffff, - 0xffff, 0x0947, 0x0969, 0x0006, 0x0068, 0x0a11, 0x09af, 0xffff, - 0xffff, 0x09cf, 0x09ef, 0x0003, 0x0000, 0x07bb, 0x07c0, 0x0003, - // Entry 48840 - 4887F - 0x0068, 0x0a71, 0x0a47, 0x0a7e, 0x0002, 0x07c3, 0x07cb, 0x0006, - 0x0068, 0x098d, 0x0925, 0xffff, 0xffff, 0x0947, 0x0969, 0x0006, - 0x0068, 0x0a11, 0x09af, 0xffff, 0xffff, 0x09cf, 0x09ef, 0x0003, - 0x0000, 0x07d7, 0x07dc, 0x0003, 0x0068, 0x0a8d, 0x0aaf, 0x0acb, - 0x0002, 0x07df, 0x07e7, 0x0006, 0x0068, 0x0b53, 0x0af1, 0xffff, - 0xffff, 0x0b11, 0x0b31, 0x0006, 0x0068, 0x0bcf, 0x0b73, 0xffff, - 0xffff, 0x0b91, 0x0baf, 0x0003, 0x0000, 0x07f3, 0x07f8, 0x0003, - 0x0068, 0x0bed, 0x0c03, 0x0c13, 0x0002, 0x07fb, 0x0803, 0x0006, - // Entry 48880 - 488BF - 0x0068, 0x0b53, 0x0af1, 0xffff, 0xffff, 0x0b11, 0x0b31, 0x0006, - 0x0068, 0x0bcf, 0x0b73, 0xffff, 0xffff, 0x0b91, 0x0baf, 0x0003, - 0x0000, 0x080f, 0x0814, 0x0003, 0x0068, 0x0c2d, 0x0c03, 0x0c3a, - 0x0002, 0x0817, 0x081f, 0x0006, 0x0068, 0x0b53, 0x0af1, 0xffff, - 0xffff, 0x0b11, 0x0b31, 0x0006, 0x0068, 0x0bcf, 0x0b73, 0xffff, - 0xffff, 0x0b91, 0x0baf, 0x0003, 0x0000, 0x082b, 0x0830, 0x0003, - 0x0068, 0x0c49, 0x0c65, 0x0c7b, 0x0002, 0x0833, 0x083b, 0x0006, - 0x0068, 0x0cb7, 0x0c9b, 0xffff, 0xffff, 0x0cb7, 0x0cd3, 0x0006, - // Entry 488C0 - 488FF - 0x0068, 0x0d07, 0x0ced, 0xffff, 0xffff, 0x0d07, 0x0d21, 0x0003, - 0x0000, 0x0847, 0x084c, 0x0003, 0x0068, 0x0d39, 0x0d4d, 0x0d5b, - 0x0002, 0x084f, 0x0857, 0x0006, 0x0068, 0x0cb7, 0x0c9b, 0xffff, - 0xffff, 0x0cb7, 0x0cd3, 0x0006, 0x0068, 0x0d07, 0x0ced, 0xffff, - 0xffff, 0x0d07, 0x0d21, 0x0003, 0x0000, 0x0863, 0x0868, 0x0003, - 0x0068, 0x0d73, 0x0d4d, 0x0d80, 0x0002, 0x086b, 0x0873, 0x0006, - 0x0068, 0x0cb7, 0x0c9b, 0xffff, 0xffff, 0x0cb7, 0x0cd3, 0x0006, - 0x0068, 0x0d07, 0x0ced, 0xffff, 0xffff, 0x0d07, 0x0d21, 0x0003, - // Entry 48900 - 4893F - 0x0000, 0x087f, 0x0884, 0x0003, 0x0068, 0x0d8f, 0x0db1, 0x0dcd, - 0x0002, 0x0887, 0x088f, 0x0006, 0x0068, 0x0e51, 0x0df3, 0xffff, - 0xffff, 0x0e0f, 0x0e2f, 0x0006, 0x0068, 0x0ec9, 0x0e71, 0xffff, - 0xffff, 0x0e8b, 0x0ea9, 0x0003, 0x0000, 0x089b, 0x08a0, 0x0003, - 0x0068, 0x0ee7, 0x0efd, 0x0f0d, 0x0002, 0x08a3, 0x08ab, 0x0006, - 0x0068, 0x0e51, 0x0df3, 0xffff, 0xffff, 0x0e0f, 0x0e2f, 0x0006, - 0x0068, 0x0ec9, 0x0e71, 0xffff, 0xffff, 0x0e8b, 0x0ea9, 0x0003, - 0x0000, 0x08b7, 0x08bc, 0x0003, 0x0068, 0x0f27, 0x0efd, 0x0f34, - // Entry 48940 - 4897F - 0x0002, 0x08bf, 0x08c7, 0x0006, 0x0068, 0x0e51, 0x0df3, 0xffff, - 0xffff, 0x0e0f, 0x0e2f, 0x0006, 0x0068, 0x0ec9, 0x0e71, 0xffff, - 0xffff, 0x0e8b, 0x0ea9, 0x0003, 0x0000, 0x08d3, 0x08d8, 0x0003, - 0x0068, 0x0f43, 0x0f63, 0x0f7d, 0x0002, 0x08db, 0x08e3, 0x0006, - 0x0068, 0x0fc1, 0x0fa1, 0xffff, 0xffff, 0x0fc1, 0x0fe1, 0x0006, - 0x0068, 0x101f, 0x1001, 0xffff, 0xffff, 0x101f, 0x103d, 0x0003, - 0x0000, 0x08ef, 0x08f4, 0x0003, 0x0068, 0x105b, 0x106f, 0x107d, - 0x0002, 0x08f7, 0x08ff, 0x0006, 0x0068, 0x0fc1, 0x0fa1, 0xffff, - // Entry 48980 - 489BF - 0xffff, 0x0fc1, 0x0fe1, 0x0006, 0x0068, 0x101f, 0x1001, 0xffff, - 0xffff, 0x101f, 0x103d, 0x0003, 0x0000, 0x090b, 0x0910, 0x0003, - 0x0068, 0x1095, 0x106f, 0x10a2, 0x0002, 0x0913, 0x091b, 0x0006, - 0x0068, 0x0fc1, 0x0fa1, 0xffff, 0xffff, 0x0fc1, 0x0fe1, 0x0006, - 0x0068, 0x101f, 0x1001, 0xffff, 0xffff, 0x101f, 0x103d, 0x0003, - 0x0000, 0x0927, 0x092c, 0x0003, 0x0068, 0x10b1, 0x10cd, 0x10e3, - 0x0002, 0x092f, 0x0937, 0x0006, 0x0068, 0x111f, 0x1103, 0xffff, - 0xffff, 0x111f, 0x113b, 0x0006, 0x0068, 0x116f, 0x1155, 0xffff, - // Entry 489C0 - 489FF - 0xffff, 0x116f, 0x1189, 0x0003, 0x0000, 0x0943, 0x0948, 0x0003, - 0x0068, 0x11a1, 0x11b5, 0x11c3, 0x0002, 0x094b, 0x0953, 0x0006, - 0x0068, 0x111f, 0x1103, 0xffff, 0xffff, 0x111f, 0x113b, 0x0006, - 0x0068, 0x116f, 0x1155, 0xffff, 0xffff, 0x116f, 0x1189, 0x0003, - 0x0000, 0x095f, 0x0964, 0x0003, 0x0068, 0x11db, 0x11b5, 0x11e8, - 0x0002, 0x0967, 0x096f, 0x0006, 0x0068, 0x111f, 0x1103, 0xffff, - 0xffff, 0x111f, 0x113b, 0x0006, 0x0068, 0x116f, 0x1155, 0xffff, - 0xffff, 0x116f, 0x1189, 0x0001, 0x0979, 0x0001, 0x0068, 0x11f7, - // Entry 48A00 - 48A3F - 0x0003, 0x0980, 0x0983, 0x0987, 0x0001, 0x0009, 0x087e, 0x0002, - 0x0068, 0xffff, 0x120f, 0x0002, 0x098a, 0x0992, 0x0006, 0x0068, - 0x1241, 0x1225, 0xffff, 0xffff, 0x1241, 0x125d, 0x0006, 0x0068, - 0x1291, 0x1277, 0xffff, 0xffff, 0x1291, 0x12ab, 0x0003, 0x099e, - 0x09a1, 0x09a5, 0x0001, 0x0008, 0x0a09, 0x0002, 0x0068, 0xffff, - 0x120f, 0x0002, 0x09a8, 0x09b0, 0x0006, 0x0055, 0x00e5, 0x00e5, - 0xffff, 0xffff, 0x00e5, 0x00e5, 0x0006, 0x0068, 0x12c3, 0x12c3, - 0xffff, 0xffff, 0x12c3, 0x12c3, 0x0003, 0x09bc, 0x09bf, 0x09c3, - // Entry 48A40 - 48A7F - 0x0001, 0x0008, 0x0a09, 0x0002, 0x0068, 0xffff, 0x120f, 0x0002, - 0x09c6, 0x09ce, 0x0006, 0x0068, 0x12d7, 0x12d7, 0xffff, 0xffff, - 0x12d7, 0x12d7, 0x0006, 0x0068, 0x12c3, 0x12c3, 0xffff, 0xffff, - 0x12c3, 0x12c3, 0x0003, 0x09da, 0x09dd, 0x09e1, 0x0001, 0x0068, - 0x12e7, 0x0002, 0x0068, 0xffff, 0x12f6, 0x0002, 0x09e4, 0x09ec, - 0x0006, 0x0068, 0x132c, 0x130e, 0xffff, 0xffff, 0x132c, 0x134a, - 0x0006, 0x0068, 0x1382, 0x1366, 0xffff, 0xffff, 0x1382, 0x139e, - 0x0003, 0x09f8, 0x09fb, 0x09ff, 0x0001, 0x0008, 0x1c7b, 0x0002, - // Entry 48A80 - 48ABF - 0x0068, 0xffff, 0x12f6, 0x0002, 0x0a02, 0x0a0a, 0x0006, 0x0068, - 0x13b8, 0x13b8, 0xffff, 0xffff, 0x13b8, 0x13b8, 0x0006, 0x0068, - 0x13cc, 0x13cc, 0xffff, 0xffff, 0x13cc, 0x13cc, 0x0003, 0x0a16, - 0x0a19, 0x0a1d, 0x0001, 0x0008, 0x1c7b, 0x0002, 0x0068, 0xffff, - 0x12f6, 0x0002, 0x0a20, 0x0a28, 0x0006, 0x0068, 0x13de, 0x13de, - 0xffff, 0xffff, 0x13de, 0x13de, 0x0006, 0x0068, 0x13cc, 0x13cc, - 0xffff, 0xffff, 0x13cc, 0x13cc, 0x0003, 0x0a34, 0x0a37, 0x0a3b, - 0x0001, 0x0008, 0x1ca4, 0x0002, 0x0068, 0xffff, 0x13ec, 0x0002, - // Entry 48AC0 - 48AFF - 0x0a3e, 0x0a46, 0x0006, 0x0055, 0x48ce, 0x1546, 0xffff, 0xffff, - 0x48ce, 0x1582, 0x0006, 0x0068, 0x1413, 0x13f7, 0xffff, 0xffff, - 0x1413, 0x142f, 0x0003, 0x0a52, 0x0000, 0x0a55, 0x0001, 0x000e, - 0x01f0, 0x0002, 0x0a58, 0x0a60, 0x0006, 0x0068, 0x1449, 0x1449, - 0xffff, 0xffff, 0x1449, 0x1449, 0x0006, 0x0068, 0x145b, 0x145b, - 0xffff, 0xffff, 0x145b, 0x145b, 0x0003, 0x0a6c, 0x0000, 0x0a6f, - 0x0001, 0x000e, 0x01f0, 0x0002, 0x0a72, 0x0a7a, 0x0006, 0x0068, - 0x146b, 0x146b, 0xffff, 0xffff, 0x146b, 0x146b, 0x0006, 0x0068, - // Entry 48B00 - 48B3F - 0x145b, 0x145b, 0xffff, 0xffff, 0x145b, 0x145b, 0x0001, 0x0a84, - 0x0001, 0x0068, 0x1477, 0x0004, 0x0a8c, 0x0a91, 0x0a96, 0x0aa5, - 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0068, 0x148f, - 0x149b, 0x14b5, 0x0002, 0x0000, 0x0a99, 0x0003, 0x0000, 0x0aa0, - 0x0a9d, 0x0001, 0x0068, 0x14d9, 0x0003, 0x0068, 0xffff, 0x1510, - 0x1550, 0x0002, 0x0000, 0x0aa8, 0x0003, 0x0aac, 0x0bec, 0x0b4c, - 0x009e, 0x0068, 0xffff, 0xffff, 0xffff, 0xffff, 0x16af, 0x1778, - 0x1802, 0x1898, 0x19b2, 0x1ab4, 0x1bbc, 0x1ce8, 0x1d4d, 0x1dc5, - // Entry 48B40 - 48B7F - 0x1e52, 0x1ef7, 0x1fcb, 0x2064, 0x20fd, 0x21e4, 0x22fe, 0x23cd, - 0x24a2, 0x254a, 0x2619, 0xffff, 0xffff, 0x26f8, 0xffff, 0x27b7, - 0xffff, 0x28d9, 0x299c, 0x2a2f, 0x2ac2, 0xffff, 0xffff, 0x2bc2, - 0x2c67, 0x2d18, 0xffff, 0xffff, 0xffff, 0x2e14, 0xffff, 0x2ee9, - 0x2fc4, 0xffff, 0x30cb, 0x3194, 0x327b, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3416, 0xffff, 0xffff, 0x34e9, 0x35b2, 0xffff, 0xffff, - 0x36fa, 0x37c6, 0x3856, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3a22, 0x3aaf, 0x3b42, 0x3be1, 0x3c6e, 0xffff, 0xffff, - // Entry 48B80 - 48BBF - 0x3d77, 0xffff, 0x3e3b, 0xffff, 0xffff, 0x3f4a, 0xffff, 0x403f, - 0xffff, 0xffff, 0xffff, 0xffff, 0x41a0, 0xffff, 0x4294, 0x4381, - 0x4462, 0x4501, 0xffff, 0xffff, 0xffff, 0x4609, 0x46f9, 0x47aa, - 0xffff, 0xffff, 0x48d4, 0x49e5, 0x4a90, 0x4b11, 0xffff, 0xffff, - 0x4c1d, 0x4cc2, 0x4d3a, 0xffff, 0x4e0f, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x5075, 0x5114, 0x51a7, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x53c0, 0xffff, 0xffff, 0x54a5, - 0xffff, 0x558b, 0xffff, 0x566c, 0x56f6, 0x5798, 0xffff, 0x5881, - // Entry 48BC0 - 48BFF - 0x5932, 0xffff, 0xffff, 0xffff, 0x5a7e, 0x5b0b, 0xffff, 0xffff, - 0x1581, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4f98, - 0x009e, 0x0068, 0x15da, 0x1604, 0x1641, 0x1676, 0x16e6, 0x179a, - 0x1828, 0x18ea, 0x19fc, 0x1b00, 0x1c14, 0x1cfd, 0x1d69, 0x1de8, - 0x1e7d, 0x1f30, 0x1ff2, 0x208b, 0x213e, 0x2236, 0x2337, 0x2408, - 0x24ce, 0x2583, 0x263f, 0x26af, 0x26cf, 0x2721, 0x2797, 0x27f1, - 0x2889, 0x290e, 0x29c1, 0x2a54, 0x2ae8, 0x2b58, 0x2b89, 0x2bed, - 0x2c96, 0x2d36, 0x2d96, 0x2db4, 0x2de3, 0x2e43, 0x2ec5, 0x2f26, - // Entry 48C00 - 48C3F - 0x2ff9, 0x3087, 0x3102, 0x31d5, 0x329b, 0x32ff, 0x3333, 0x33a3, - 0x33e4, 0x3436, 0x349a, 0x34d1, 0x3520, 0x35eb, 0x36ae, 0x36dc, - 0x3732, 0x37ea, 0x3874, 0x38d4, 0x3910, 0x3947, 0x396d, 0x39ae, - 0x39e7, 0x3a45, 0x3ad4, 0x3b6b, 0x3c04, 0x3c95, 0x3d07, 0x3d3e, - 0x3d9c, 0x3e0a, 0x3e66, 0x3ee0, 0x3f1d, 0x3f7e, 0x400a, 0x4068, - 0x40de, 0x4102, 0x412a, 0x4165, 0x41d5, 0x4263, 0x42d7, 0x43c0, - 0x448b, 0x4528, 0x459a, 0x45ba, 0x45e9, 0x464d, 0x4728, 0x47e7, - 0x4874, 0x48a1, 0x4923, 0x4a12, 0x4aaf, 0x4b37, 0x4ba7, 0x4bd6, - // Entry 48C40 - 48C7F - 0x4c48, 0x4cde, 0x4d64, 0x4ddc, 0x4e58, 0x4f0e, 0x4f43, 0x4f74, - 0x500f, 0x5044, 0x509e, 0x5139, 0x51d6, 0x5258, 0x5297, 0x52bd, - 0x52fa, 0x5340, 0x5364, 0x5391, 0x53e0, 0x5444, 0x5470, 0x54d6, - 0x555c, 0x55b9, 0x5639, 0x568e, 0x5720, 0x57cd, 0x585b, 0x58b0, - 0x595f, 0x59dd, 0x5a0e, 0x5a3b, 0x5aa1, 0x5b3c, 0x3681, 0xffff, - 0x1592, 0xffff, 0xffff, 0xffff, 0xffff, 0x3f0a, 0xffff, 0x4fb3, - 0x009e, 0x0068, 0xffff, 0xffff, 0xffff, 0xffff, 0x1734, 0x17d3, - 0x1865, 0x1953, 0x1a5d, 0x1b63, 0x1c83, 0x1d2a, 0x1d9c, 0x1e22, - // Entry 48C80 - 48CBF - 0x1ebf, 0x1f80, 0x2030, 0x20c9, 0x2196, 0x229f, 0x2387, 0x245a, - 0x2511, 0x25d3, 0x267c, 0xffff, 0xffff, 0x2761, 0xffff, 0x2842, - 0xffff, 0x295a, 0x29fd, 0x2a90, 0x2b25, 0xffff, 0xffff, 0x2c2f, - 0x2cdc, 0x2d6b, 0xffff, 0xffff, 0xffff, 0x2e89, 0xffff, 0x2f7a, - 0x3045, 0xffff, 0x3150, 0x322d, 0x32d2, 0xffff, 0xffff, 0xffff, - 0xffff, 0x346d, 0xffff, 0xffff, 0x356e, 0x363b, 0xffff, 0xffff, - 0x3781, 0x3825, 0x38a9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3a7f, 0x3b10, 0x3bab, 0x3c3e, 0x3cd3, 0xffff, 0xffff, - // Entry 48CC0 - 48CFF - 0x3dd8, 0xffff, 0x3ea8, 0xffff, 0xffff, 0x3fc9, 0xffff, 0x40a8, - 0xffff, 0xffff, 0xffff, 0xffff, 0x4221, 0xffff, 0x4331, 0x4416, - 0x44cb, 0x4566, 0xffff, 0xffff, 0xffff, 0x46a8, 0x476e, 0x483b, - 0xffff, 0xffff, 0x4989, 0x4a56, 0x4ae5, 0x4b74, 0xffff, 0xffff, - 0x4c8a, 0x4d11, 0x4da5, 0xffff, 0x4eb8, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x50de, 0x5175, 0x521c, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x5417, 0xffff, 0xffff, 0x551e, - 0xffff, 0x55fe, 0xffff, 0x56c7, 0x5761, 0x5819, 0xffff, 0x58f6, - // Entry 48D00 - 48D3F - 0x59a3, 0xffff, 0xffff, 0xffff, 0x5adb, 0x5b84, 0xffff, 0xffff, - 0x15bb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4fe6, - 0x0003, 0x0004, 0x0282, 0x0685, 0x000b, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, 0x0000, 0x0000, 0x025f, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0000, - 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, 0x0024, 0x0001, 0x0003, - 0x014b, 0x0001, 0x0003, 0x015f, 0x0001, 0x0003, 0x0548, 0x0001, - 0x0000, 0x236f, 0x0004, 0x0038, 0x0032, 0x002f, 0x0035, 0x0001, - // Entry 48D40 - 48D7F - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0008, 0x0044, 0x00a9, 0x0100, 0x0135, - 0x0212, 0x022c, 0x023d, 0x024e, 0x0002, 0x0047, 0x0078, 0x0003, - 0x004b, 0x005a, 0x0069, 0x000d, 0x0022, 0xffff, 0x0000, 0x305d, - 0x30f0, 0x30f9, 0x3104, 0x310b, 0x3078, 0x3085, 0x308e, 0x3112, - 0x311f, 0x312a, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, 0x29f4, - 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, 0x29fc, - 0x29fe, 0x000d, 0x0022, 0xffff, 0x0000, 0x305d, 0x30f0, 0x30f9, - // Entry 48D80 - 48DBF - 0x3104, 0x310b, 0x3078, 0x3085, 0x308e, 0x3112, 0x311f, 0x312a, - 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, 0x0022, 0xffff, 0x0000, - 0x305d, 0x30f0, 0x30f9, 0x3104, 0x310b, 0x3078, 0x3085, 0x308e, - 0x3112, 0x311f, 0x312a, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, - 0x29f4, 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, - 0x29fc, 0x29fe, 0x000d, 0x0022, 0xffff, 0x0000, 0x305d, 0x30f0, - 0x30f9, 0x3104, 0x310b, 0x3078, 0x3085, 0x308e, 0x3112, 0x311f, - 0x312a, 0x0002, 0x00ac, 0x00d6, 0x0005, 0x00b2, 0x00bb, 0x00cd, - // Entry 48DC0 - 48DFF - 0x0000, 0x00c4, 0x0007, 0x0050, 0x0000, 0x2946, 0x0012, 0x2953, - 0x0024, 0x0031, 0x003a, 0x0007, 0x0017, 0x2a09, 0x29f4, 0x2a0b, - 0x29d5, 0x2a0b, 0x29f2, 0x2a09, 0x0007, 0x0050, 0x0000, 0x2946, - 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, 0x0050, 0x0000, - 0x2946, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0005, 0x00dc, - 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, 0x0050, 0x0000, 0x2946, - 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, 0x0017, 0x2a09, - 0x29f4, 0x2a0b, 0x29d5, 0x2a0b, 0x29f2, 0x2a09, 0x0007, 0x0050, - // Entry 48E00 - 48E3F - 0x0000, 0x2946, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, - 0x0050, 0x0000, 0x2946, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, - 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, - 0x0069, 0xffff, 0x0000, 0x0017, 0x0030, 0x0049, 0x0005, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0069, 0xffff, - 0x0000, 0x0017, 0x0030, 0x0049, 0x0003, 0x0120, 0x0127, 0x012e, - 0x0005, 0x0069, 0xffff, 0x0000, 0x0017, 0x0030, 0x0049, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0069, - // Entry 48E40 - 48E7F - 0xffff, 0x0000, 0x0017, 0x0030, 0x0049, 0x0002, 0x0138, 0x01a5, - 0x0003, 0x013c, 0x015f, 0x0182, 0x000a, 0x014a, 0x014d, 0x0147, - 0x0150, 0x0153, 0x0159, 0x015c, 0x0000, 0x0000, 0x0156, 0x0001, - 0x0069, 0x0062, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x0021, 0x053a, 0x0001, 0x0069, 0x0072, 0x0001, 0x0069, - 0x007d, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0069, 0x0089, 0x000a, - 0x016d, 0x0170, 0x016a, 0x0173, 0x0176, 0x017c, 0x017f, 0x0000, - 0x0000, 0x0179, 0x0001, 0x0069, 0x0062, 0x0001, 0x0000, 0x1f9c, - // Entry 48E80 - 48EBF - 0x0001, 0x0000, 0x21ec, 0x0001, 0x0021, 0x053a, 0x0001, 0x0069, - 0x0072, 0x0001, 0x0069, 0x007d, 0x0001, 0x0022, 0x00e1, 0x0001, - 0x0069, 0x0089, 0x000a, 0x0190, 0x0193, 0x018d, 0x0196, 0x0199, - 0x019f, 0x01a2, 0x0000, 0x0000, 0x019c, 0x0001, 0x0069, 0x0062, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0021, - 0x053a, 0x0001, 0x0069, 0x0072, 0x0001, 0x0069, 0x007d, 0x0001, - 0x0022, 0x00e1, 0x0001, 0x0069, 0x0089, 0x0003, 0x01a9, 0x01cc, - 0x01ef, 0x000a, 0x01b7, 0x01ba, 0x01b4, 0x01bd, 0x01c0, 0x01c6, - // Entry 48EC0 - 48EFF - 0x01c9, 0x0000, 0x0000, 0x01c3, 0x0001, 0x0069, 0x0062, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0021, 0x053a, - 0x0001, 0x0069, 0x0072, 0x0001, 0x0069, 0x007d, 0x0001, 0x0022, - 0x00e1, 0x0001, 0x0069, 0x0089, 0x000a, 0x01da, 0x01dd, 0x01d7, - 0x01e0, 0x01e3, 0x01e9, 0x01ec, 0x0000, 0x0000, 0x01e6, 0x0001, - 0x0069, 0x0062, 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, - 0x0001, 0x0021, 0x053a, 0x0001, 0x0069, 0x0072, 0x0001, 0x0069, - 0x007d, 0x0001, 0x0022, 0x00e1, 0x0001, 0x0069, 0x0089, 0x000a, - // Entry 48F00 - 48F3F - 0x01fd, 0x0200, 0x01fa, 0x0203, 0x0206, 0x020c, 0x020f, 0x0000, - 0x0000, 0x0209, 0x0001, 0x0069, 0x0062, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0021, 0x053a, 0x0001, 0x0069, - 0x0072, 0x0001, 0x0069, 0x007d, 0x0001, 0x0022, 0x00e1, 0x0001, - 0x0069, 0x0089, 0x0003, 0x0221, 0x0000, 0x0216, 0x0002, 0x0219, - 0x021d, 0x0002, 0x0069, 0x0090, 0x00ba, 0x0002, 0x0069, 0x00a0, - 0x00c5, 0x0002, 0x0224, 0x0228, 0x0002, 0x0069, 0x0090, 0x00ba, - 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x023a, 0x0234, 0x0231, - // Entry 48F40 - 48F7F - 0x0237, 0x0001, 0x0003, 0x03bc, 0x0001, 0x0003, 0x03ce, 0x0001, - 0x0000, 0x0514, 0x0001, 0x0000, 0x237b, 0x0004, 0x024b, 0x0245, - 0x0242, 0x0248, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x0004, 0x025c, - 0x0256, 0x0253, 0x0259, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, - 0x0265, 0x0000, 0x0000, 0x0000, 0x027a, 0x0001, 0x0267, 0x0003, - 0x0000, 0x0000, 0x026b, 0x000d, 0x0003, 0xffff, 0x0493, 0x049c, - // Entry 48F80 - 48FBF - 0x224a, 0x225f, 0x211f, 0x2135, 0x04fb, 0x0502, 0x050d, 0x0518, - 0x2276, 0x2287, 0x0001, 0x027c, 0x0001, 0x027e, 0x0002, 0x0069, - 0x00d3, 0x00d9, 0x0040, 0x02c3, 0x0000, 0x0000, 0x02c8, 0x02df, - 0x02f6, 0x030d, 0x0324, 0x0336, 0x0348, 0x035f, 0x0376, 0x0388, - 0x03a3, 0x03be, 0x0000, 0x0000, 0x0000, 0x03d9, 0x03f2, 0x040b, - 0x0000, 0x0000, 0x0000, 0x0424, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0429, 0x043d, 0x0451, 0x0465, 0x0479, 0x048d, 0x04a1, - 0x04b5, 0x04c9, 0x04dd, 0x04f1, 0x0505, 0x0519, 0x052d, 0x0541, - // Entry 48FC0 - 48FFF - 0x0555, 0x0569, 0x057d, 0x0591, 0x05a5, 0x05b9, 0x0000, 0x05cd, - 0x0000, 0x05d2, 0x05e8, 0x05fa, 0x060c, 0x0622, 0x0634, 0x0646, - 0x065c, 0x066e, 0x0680, 0x0001, 0x02c5, 0x0001, 0x0069, 0x00e9, - 0x0003, 0x02cc, 0x02cf, 0x02d4, 0x0001, 0x0021, 0x0765, 0x0003, - 0x0069, 0x00f0, 0x0102, 0x010e, 0x0002, 0x02d7, 0x02db, 0x0002, - 0x0069, 0x011e, 0x011e, 0x0002, 0x0069, 0x0130, 0x0130, 0x0003, - 0x02e3, 0x02e6, 0x02eb, 0x0001, 0x0021, 0x0765, 0x0003, 0x0069, - 0x00f0, 0x0102, 0x010e, 0x0002, 0x02ee, 0x02f2, 0x0002, 0x0069, - // Entry 49000 - 4903F - 0x011e, 0x011e, 0x0002, 0x0069, 0x0130, 0x0130, 0x0003, 0x02fa, - 0x02fd, 0x0302, 0x0001, 0x0021, 0x0765, 0x0003, 0x0069, 0x00f0, - 0x0102, 0x010e, 0x0002, 0x0305, 0x0309, 0x0002, 0x0069, 0x011e, - 0x011e, 0x0002, 0x0069, 0x0130, 0x0130, 0x0003, 0x0311, 0x0314, - 0x0319, 0x0001, 0x0069, 0x0144, 0x0003, 0x0069, 0x0152, 0x016b, - 0x017e, 0x0002, 0x031c, 0x0320, 0x0002, 0x0069, 0x0195, 0x0195, - 0x0002, 0x0069, 0x01a8, 0x01a8, 0x0003, 0x0328, 0x0000, 0x032b, - 0x0001, 0x0069, 0x0144, 0x0002, 0x032e, 0x0332, 0x0002, 0x0069, - // Entry 49040 - 4907F - 0x01bb, 0x01bb, 0x0002, 0x0069, 0x01d4, 0x01d4, 0x0003, 0x033a, - 0x0000, 0x033d, 0x0001, 0x0069, 0x0144, 0x0002, 0x0340, 0x0344, - 0x0002, 0x0069, 0x01bb, 0x01bb, 0x0002, 0x0069, 0x01ed, 0x01ed, - 0x0003, 0x034c, 0x034f, 0x0354, 0x0001, 0x0069, 0x0208, 0x0003, - 0x0069, 0x0213, 0x0229, 0x0239, 0x0002, 0x0357, 0x035b, 0x0002, - 0x0069, 0x0263, 0x024d, 0x0002, 0x0069, 0x0291, 0x0279, 0x0003, - 0x0363, 0x0366, 0x036b, 0x0001, 0x0069, 0x02a9, 0x0003, 0x0069, - 0x0213, 0x0229, 0x0239, 0x0002, 0x036e, 0x0372, 0x0002, 0x0069, - // Entry 49080 - 490BF - 0x02b0, 0x02b0, 0x0002, 0x0069, 0x02c2, 0x02c2, 0x0003, 0x037a, - 0x0000, 0x037d, 0x0001, 0x0069, 0x02a9, 0x0002, 0x0380, 0x0384, - 0x0002, 0x0069, 0x02b0, 0x02d4, 0x0002, 0x0069, 0x02e7, 0x02e7, - 0x0004, 0x038d, 0x0390, 0x0395, 0x03a0, 0x0001, 0x0050, 0x003a, - 0x0003, 0x0069, 0x02fb, 0x030f, 0x031d, 0x0002, 0x0398, 0x039c, - 0x0002, 0x0069, 0x0343, 0x032f, 0x0002, 0x0069, 0x036d, 0x0357, - 0x0001, 0x0069, 0x0383, 0x0004, 0x03a8, 0x03ab, 0x03b0, 0x03bb, - 0x0001, 0x0050, 0x003a, 0x0003, 0x0069, 0x02fb, 0x030f, 0x031d, - // Entry 490C0 - 490FF - 0x0002, 0x03b3, 0x03b7, 0x0002, 0x0069, 0x0343, 0x0343, 0x0002, - 0x0069, 0x036d, 0x036d, 0x0001, 0x0069, 0x0383, 0x0004, 0x03c3, - 0x03c6, 0x03cb, 0x03d6, 0x0001, 0x0050, 0x003a, 0x0003, 0x0069, - 0x02fb, 0x030f, 0x031d, 0x0002, 0x03ce, 0x03d2, 0x0002, 0x0069, - 0x0343, 0x032f, 0x0002, 0x0069, 0x036d, 0x0357, 0x0001, 0x0069, - 0x0383, 0x0003, 0x03dd, 0x03e0, 0x03e7, 0x0001, 0x0069, 0x0395, - 0x0005, 0x0069, 0x03b0, 0x03c0, 0x03c5, 0x039a, 0x03d5, 0x0002, - 0x03ea, 0x03ee, 0x0002, 0x0069, 0x0400, 0x03f0, 0x0002, 0x0069, - // Entry 49100 - 4913F - 0x0426, 0x0414, 0x0003, 0x03f6, 0x03f9, 0x0400, 0x0001, 0x0069, - 0x0395, 0x0005, 0x0069, 0x03b0, 0x03c0, 0x03c5, 0x039a, 0x03d5, - 0x0002, 0x0403, 0x0407, 0x0002, 0x0069, 0x0400, 0x03f0, 0x0002, - 0x0069, 0x0426, 0x0414, 0x0003, 0x040f, 0x0412, 0x0419, 0x0001, - 0x0069, 0x0395, 0x0005, 0x0069, 0x03b0, 0x03c0, 0x03c5, 0x039a, - 0x03d5, 0x0002, 0x041c, 0x0420, 0x0002, 0x0069, 0x0400, 0x0400, - 0x0002, 0x0069, 0x0414, 0x0414, 0x0001, 0x0426, 0x0001, 0x0069, - 0x043c, 0x0003, 0x0000, 0x042d, 0x0432, 0x0003, 0x0069, 0x044f, - // Entry 49140 - 4917F - 0x0465, 0x0475, 0x0002, 0x0435, 0x0439, 0x0002, 0x0069, 0x0489, - 0x0489, 0x0002, 0x0069, 0x049f, 0x049f, 0x0003, 0x0000, 0x0441, - 0x0446, 0x0003, 0x0069, 0x044f, 0x0465, 0x0475, 0x0002, 0x0449, - 0x044d, 0x0002, 0x0069, 0x0489, 0x0489, 0x0002, 0x0069, 0x049f, - 0x049f, 0x0003, 0x0000, 0x0455, 0x045a, 0x0003, 0x0069, 0x044f, - 0x0465, 0x0475, 0x0002, 0x045d, 0x0461, 0x0002, 0x0069, 0x0489, - 0x0489, 0x0002, 0x0069, 0x049f, 0x049f, 0x0003, 0x0000, 0x0469, - 0x046e, 0x0003, 0x0069, 0x04b5, 0x04cd, 0x04df, 0x0002, 0x0471, - // Entry 49180 - 491BF - 0x0475, 0x0002, 0x0069, 0x04f5, 0x04f5, 0x0002, 0x0069, 0x0507, - 0x0507, 0x0003, 0x0000, 0x047d, 0x0482, 0x0003, 0x0069, 0x04b5, - 0x04cd, 0x04df, 0x0002, 0x0485, 0x0489, 0x0002, 0x0069, 0x04f5, - 0x0519, 0x0002, 0x0069, 0x0507, 0x0507, 0x0003, 0x0000, 0x0491, - 0x0496, 0x0003, 0x0069, 0x04b5, 0x04cd, 0x04df, 0x0002, 0x0499, - 0x049d, 0x0002, 0x0069, 0x04f5, 0x04f5, 0x0002, 0x0069, 0x0507, - 0x0507, 0x0003, 0x0000, 0x04a5, 0x04aa, 0x0003, 0x0069, 0x0531, - 0x0545, 0x0553, 0x0002, 0x04ad, 0x04b1, 0x0002, 0x0069, 0x0565, - // Entry 491C0 - 491FF - 0x0565, 0x0002, 0x0069, 0x0579, 0x0579, 0x0003, 0x0000, 0x04b9, - 0x04be, 0x0003, 0x0069, 0x0531, 0x0545, 0x0553, 0x0002, 0x04c1, - 0x04c5, 0x0002, 0x0069, 0x0565, 0x0565, 0x0002, 0x0069, 0x0579, - 0x0579, 0x0003, 0x0000, 0x04cd, 0x04d2, 0x0003, 0x0069, 0x0531, - 0x0545, 0x0553, 0x0002, 0x04d5, 0x04d9, 0x0002, 0x0069, 0x0565, - 0x0565, 0x0002, 0x0069, 0x0579, 0x0579, 0x0003, 0x0000, 0x04e1, - 0x04e6, 0x0003, 0x0069, 0x058d, 0x059f, 0x05ab, 0x0002, 0x04e9, - 0x04ed, 0x0002, 0x0069, 0x05bb, 0x05bb, 0x0002, 0x0069, 0x05cd, - // Entry 49200 - 4923F - 0x05cd, 0x0003, 0x0000, 0x04f5, 0x04fa, 0x0003, 0x0069, 0x058d, - 0x059f, 0x05ab, 0x0002, 0x04fd, 0x0501, 0x0002, 0x0069, 0x05bb, - 0x05bb, 0x0002, 0x0069, 0x05cd, 0x05cd, 0x0003, 0x0000, 0x0509, - 0x050e, 0x0003, 0x0069, 0x058d, 0x059f, 0x05ab, 0x0002, 0x0511, - 0x0515, 0x0002, 0x0069, 0x05bb, 0x05bb, 0x0002, 0x0069, 0x05cd, - 0x05cd, 0x0003, 0x0000, 0x051d, 0x0522, 0x0003, 0x0069, 0x05df, - 0x05f7, 0x0609, 0x0002, 0x0525, 0x0529, 0x0002, 0x0069, 0x061f, - 0x061f, 0x0002, 0x0069, 0x0637, 0x0637, 0x0003, 0x0000, 0x0531, - // Entry 49240 - 4927F - 0x0536, 0x0003, 0x0069, 0x05df, 0x05f7, 0x0609, 0x0002, 0x0539, - 0x053d, 0x0002, 0x0069, 0x061f, 0x061f, 0x0002, 0x0069, 0x0637, - 0x0637, 0x0003, 0x0000, 0x0545, 0x054a, 0x0003, 0x0069, 0x05df, - 0x05f7, 0x064f, 0x0002, 0x054d, 0x0551, 0x0002, 0x0069, 0x061f, - 0x061f, 0x0002, 0x0069, 0x0637, 0x0637, 0x0003, 0x0000, 0x0559, - 0x055e, 0x0003, 0x0069, 0x0665, 0x0679, 0x0687, 0x0002, 0x0561, - 0x0565, 0x0002, 0x0069, 0x0699, 0x0699, 0x0002, 0x0069, 0x06ad, - 0x06ad, 0x0003, 0x0000, 0x056d, 0x0572, 0x0003, 0x0069, 0x0665, - // Entry 49280 - 492BF - 0x0679, 0x0687, 0x0002, 0x0575, 0x0579, 0x0002, 0x0069, 0x0699, - 0x0699, 0x0002, 0x0069, 0x06ad, 0x06ad, 0x0003, 0x0000, 0x0581, - 0x0586, 0x0003, 0x0069, 0x0665, 0x0679, 0x0687, 0x0002, 0x0589, - 0x058d, 0x0002, 0x0069, 0x0699, 0x0699, 0x0002, 0x0069, 0x06ad, - 0x06ad, 0x0003, 0x0000, 0x0595, 0x059a, 0x0003, 0x0069, 0x06c1, - 0x06d7, 0x06e7, 0x0002, 0x059d, 0x05a1, 0x0002, 0x0069, 0x06fb, - 0x06fb, 0x0002, 0x0069, 0x0711, 0x0711, 0x0003, 0x0000, 0x05a9, - 0x05ae, 0x0003, 0x0069, 0x06c1, 0x06d7, 0x06e7, 0x0002, 0x05b1, - // Entry 492C0 - 492FF - 0x05b5, 0x0002, 0x0069, 0x06fb, 0x06fb, 0x0002, 0x0069, 0x0711, - 0x0711, 0x0003, 0x0000, 0x05bd, 0x05c2, 0x0003, 0x0069, 0x06c1, - 0x06d7, 0x06e7, 0x0002, 0x05c5, 0x05c9, 0x0002, 0x0069, 0x06fb, - 0x06fb, 0x0002, 0x0069, 0x0711, 0x0711, 0x0001, 0x05cf, 0x0001, - 0x0069, 0x0727, 0x0003, 0x05d6, 0x05d9, 0x05dd, 0x0001, 0x0069, - 0x074b, 0x0002, 0x0069, 0xffff, 0x0756, 0x0002, 0x05e0, 0x05e4, - 0x0002, 0x0069, 0x077c, 0x0766, 0x0002, 0x0069, 0x07aa, 0x0792, - 0x0003, 0x05ec, 0x0000, 0x05ef, 0x0001, 0x0069, 0x074b, 0x0002, - // Entry 49300 - 4933F - 0x05f2, 0x05f6, 0x0002, 0x0069, 0x077c, 0x077c, 0x0002, 0x0069, - 0x07aa, 0x07aa, 0x0003, 0x05fe, 0x0000, 0x0601, 0x0001, 0x0069, - 0x074b, 0x0002, 0x0604, 0x0608, 0x0002, 0x0069, 0x07c2, 0x0766, - 0x0002, 0x0069, 0x07aa, 0x0792, 0x0003, 0x0610, 0x0613, 0x0617, - 0x0001, 0x0050, 0x00ee, 0x0002, 0x0069, 0xffff, 0x07da, 0x0002, - 0x061a, 0x061e, 0x0002, 0x0069, 0x07e6, 0x07e6, 0x0002, 0x0069, - 0x07f8, 0x07f8, 0x0003, 0x0626, 0x0000, 0x0629, 0x0001, 0x0050, - 0x00ee, 0x0002, 0x062c, 0x0630, 0x0002, 0x0069, 0x07e6, 0x07e6, - // Entry 49340 - 4937F - 0x0002, 0x0069, 0x07f8, 0x07f8, 0x0003, 0x0638, 0x0000, 0x063b, - 0x0001, 0x0050, 0x00ee, 0x0002, 0x063e, 0x0642, 0x0002, 0x0069, - 0x07e6, 0x07e6, 0x0002, 0x0069, 0x07f8, 0x07f8, 0x0003, 0x064a, - 0x064d, 0x0651, 0x0001, 0x0069, 0x080c, 0x0002, 0x0069, 0xffff, - 0x0817, 0x0002, 0x0654, 0x0658, 0x0002, 0x0069, 0x081c, 0x081c, - 0x0002, 0x0069, 0x0832, 0x0832, 0x0003, 0x0660, 0x0000, 0x0663, - 0x0001, 0x0069, 0x080c, 0x0002, 0x0666, 0x066a, 0x0002, 0x0069, - 0x081c, 0x081c, 0x0002, 0x0069, 0x0832, 0x0832, 0x0003, 0x0672, - // Entry 49380 - 493BF - 0x0000, 0x0675, 0x0001, 0x0069, 0x080c, 0x0002, 0x0678, 0x067c, - 0x0002, 0x0069, 0x081c, 0x081c, 0x0002, 0x0069, 0x0832, 0x0832, - 0x0001, 0x0682, 0x0001, 0x0069, 0x084a, 0x0004, 0x068a, 0x068f, - 0x0694, 0x06a3, 0x0003, 0x0000, 0x1dc7, 0x40ac, 0x40b4, 0x0003, - 0x0069, 0x085c, 0x0867, 0x0870, 0x0002, 0x0000, 0x0697, 0x0003, - 0x0000, 0x069e, 0x069b, 0x0001, 0x0069, 0x0879, 0x0003, 0x0069, - 0xffff, 0x08a8, 0x08c1, 0x0002, 0x0000, 0x06a6, 0x0003, 0x0740, - 0x07d6, 0x06aa, 0x0094, 0x0069, 0x08e4, 0x0903, 0x0922, 0x0943, - // Entry 493C0 - 493FF - 0x0994, 0x0a02, 0x0a63, 0x0ace, 0x0b2b, 0x0b8e, 0x0bf1, 0x0c4c, - 0x0ca0, 0x0cf8, 0x0d50, 0x0dc2, 0x0e51, 0x0ec3, 0x0f37, 0x0fd2, - 0x107c, 0x1110, 0x119e, 0x121d, 0x1291, 0x12f1, 0x130a, 0x133f, - 0x138b, 0x13cd, 0x1415, 0x144e, 0x14a8, 0x1502, 0x155b, 0x15a7, - 0x15c8, 0x1603, 0x167a, 0x16e5, 0x172c, 0x173e, 0x1768, 0x17ab, - 0x1817, 0x1850, 0x18d0, 0x1934, 0x197a, 0x1a09, 0x1a93, 0x1ac9, - 0x1aeb, 0x1b22, 0x1b41, 0x1b72, 0x1bc8, 0x1beb, 0x1c32, 0x1ccf, - 0x1d46, 0x1d68, 0x1da4, 0x1e28, 0x1e86, 0x1ec0, 0x1eea, 0x1f01, - // Entry 49400 - 4943F - 0x1f18, 0x1f3d, 0x1f64, 0x1fa2, 0x1ffe, 0x205b, 0x20bd, 0x2135, - 0x21b3, 0x21db, 0x2217, 0x225c, 0x2290, 0x22e4, 0x22ff, 0x233b, - 0x2390, 0x23cc, 0x2410, 0x2426, 0x243f, 0x2457, 0x2490, 0x24d2, - 0x2512, 0x25ac, 0x2630, 0x2698, 0x26d8, 0x26f0, 0x2704, 0x273e, - 0x27ba, 0x2836, 0x289d, 0x28af, 0x2902, 0x298d, 0x29f3, 0x2a4c, - 0x2aa6, 0x2ab8, 0x2af7, 0x2b6a, 0x2bce, 0x2c10, 0x2c64, 0x2ce5, - 0x2cfd, 0x2d13, 0x2d2e, 0x2d47, 0x2d78, 0x2dce, 0x2e22, 0x2e67, - 0x2e7d, 0x2ea4, 0x2ec7, 0x2ee8, 0x2f03, 0x2f17, 0x2f48, 0x2f9b, - // Entry 49440 - 4947F - 0x2fb8, 0x2fe4, 0x3022, 0x3053, 0x30b9, 0x30ea, 0x3165, 0x31db, - 0x3221, 0x325f, 0x32cf, 0x331f, 0x3338, 0x3355, 0x3391, 0x33f5, - 0x0094, 0x0069, 0xffff, 0xffff, 0xffff, 0xffff, 0x0973, 0x09ec, - 0x0a4d, 0x0aba, 0x0b15, 0x0b76, 0x0bdd, 0x0c38, 0x0c8c, 0x0ce5, - 0x0d36, 0x0d9a, 0x0e36, 0x0eab, 0x0f12, 0x0fa0, 0x1055, 0x10e9, - 0x117d, 0x1204, 0x1273, 0xffff, 0xffff, 0x1325, 0xffff, 0x13b4, - 0xffff, 0x143a, 0x1495, 0x14f2, 0x1541, 0xffff, 0xffff, 0x15eb, - 0x165d, 0x16d1, 0xffff, 0xffff, 0xffff, 0x1787, 0xffff, 0x1834, - // Entry 49480 - 494BF - 0x18b0, 0xffff, 0x195a, 0x19de, 0x1a83, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1b59, 0xffff, 0xffff, 0x1c0c, 0x1ca9, 0xffff, 0xffff, - 0x1d7f, 0x1e0d, 0x1e74, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1f8b, 0x1fe8, 0x2040, 0x20a9, 0x2102, 0xffff, 0xffff, - 0x2203, 0xffff, 0x2270, 0xffff, 0xffff, 0x2320, 0xffff, 0x23b6, - 0xffff, 0xffff, 0xffff, 0xffff, 0x247a, 0xffff, 0x24e6, 0x2589, - 0x2611, 0x2684, 0xffff, 0xffff, 0xffff, 0x271b, 0x279a, 0x2812, - 0xffff, 0xffff, 0x28d5, 0x296f, 0x29df, 0x2a31, 0xffff, 0xffff, - // Entry 494C0 - 494FF - 0x2ada, 0x2b55, 0x2bb8, 0xffff, 0x2c33, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2d62, 0x2dba, 0x2e0e, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2f2d, 0xffff, 0xffff, 0x2fd0, - 0xffff, 0x3032, 0xffff, 0x30cd, 0x3148, 0x31c3, 0xffff, 0x3240, - 0x32b3, 0xffff, 0xffff, 0xffff, 0x337b, 0x33d5, 0x0094, 0x0069, - 0xffff, 0xffff, 0xffff, 0xffff, 0x09c4, 0x0a29, 0x0a8a, 0x0af3, - 0x0b52, 0x0bb7, 0x0c16, 0x0c71, 0x0cc3, 0x0d18, 0x0d79, 0x0df7, - 0x0e79, 0x0eec, 0x0f6d, 0x1015, 0x10b4, 0x1148, 0x11cc, 0x1243, - // Entry 49500 - 4953F - 0x12bc, 0xffff, 0xffff, 0x136a, 0xffff, 0x13f5, 0xffff, 0x1473, - 0x14c8, 0x1521, 0x1584, 0xffff, 0xffff, 0x162b, 0x16a6, 0x170a, - 0xffff, 0xffff, 0xffff, 0x17dc, 0xffff, 0x187b, 0x18fd, 0xffff, - 0x19a7, 0x1a41, 0x1ab2, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b98, - 0xffff, 0xffff, 0x1c69, 0x1d06, 0xffff, 0xffff, 0x1dda, 0x1e52, - 0x1ea7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1fc6, - 0x2023, 0x2083, 0x20e0, 0x2179, 0xffff, 0xffff, 0x223a, 0xffff, - 0x22bd, 0xffff, 0xffff, 0x2367, 0xffff, 0x23f3, 0xffff, 0xffff, - // Entry 49540 - 4957F - 0xffff, 0xffff, 0x24b5, 0xffff, 0x254f, 0x25e0, 0x265e, 0x26bd, - 0xffff, 0xffff, 0xffff, 0x2770, 0x27e7, 0x286b, 0xffff, 0xffff, - 0x293c, 0x29ba, 0x2a16, 0x2a74, 0xffff, 0xffff, 0x2b21, 0x2b8c, - 0x2bf3, 0xffff, 0x2ca6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2d9d, 0x2df3, 0x2e45, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2f74, 0xffff, 0xffff, 0x3007, 0xffff, 0x3081, - 0xffff, 0x3114, 0x318f, 0x3202, 0xffff, 0x328d, 0x32fc, 0xffff, - 0xffff, 0xffff, 0x33b8, 0x3426, 0x0003, 0x0004, 0x0055, 0x0199, - // Entry 49580 - 495BF - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x0002, 0x0000, 0x0010, 0x0002, 0x0013, 0x0034, 0x0005, - 0x0019, 0x0000, 0x002b, 0x0000, 0x0022, 0x0007, 0x0050, 0x0000, - 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, 0x0050, - 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, - 0x0050, 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, - 0x0005, 0x003a, 0x0000, 0x004c, 0x0000, 0x0043, 0x0007, 0x0050, - 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, 0x0007, - // Entry 495C0 - 495FF - 0x0050, 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, 0x003a, - 0x0007, 0x0050, 0x0000, 0x000b, 0x0012, 0x2953, 0x0024, 0x0031, - 0x003a, 0x003f, 0x0095, 0x0000, 0x0000, 0x009a, 0x00a4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x00b3, 0x00c7, 0x00cc, 0x00da, 0x00ee, - 0x00f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x010e, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0119, 0x0000, 0x0000, 0x0121, 0x0000, - 0x0000, 0x0129, 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, 0x0139, - // Entry 49600 - 4963F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0141, 0x014c, 0x0157, 0x0162, 0x016d, 0x0178, 0x0183, - 0x018e, 0x0001, 0x0097, 0x0001, 0x003d, 0x0422, 0x0003, 0x0000, - 0x0000, 0x009e, 0x0001, 0x00a0, 0x0002, 0x0069, 0x344d, 0x011e, - 0x0003, 0x0000, 0x0000, 0x00a8, 0x0002, 0x00ab, 0x00af, 0x0002, - 0x0069, 0x344d, 0x011e, 0x0002, 0x0069, 0x3463, 0x0130, 0x0003, - 0x0000, 0x00b7, 0x00bc, 0x0003, 0x006a, 0x0000, 0x0012, 0x001e, - 0x0002, 0x00bf, 0x00c3, 0x0002, 0x0069, 0x02b0, 0x02b0, 0x0002, - // Entry 49640 - 4967F - 0x0069, 0x02c2, 0x02c2, 0x0001, 0x00c9, 0x0001, 0x0069, 0x0208, - 0x0003, 0x00d0, 0x0000, 0x00d3, 0x0001, 0x0069, 0x0208, 0x0002, - 0x0000, 0x00d6, 0x0002, 0x0069, 0x02c2, 0x02c2, 0x0003, 0x0000, - 0x00de, 0x00e3, 0x0003, 0x006a, 0x002e, 0x0042, 0x0050, 0x0002, - 0x00e6, 0x00ea, 0x0002, 0x0069, 0x347b, 0x032f, 0x0002, 0x006a, - 0x0076, 0x0062, 0x0003, 0x0000, 0x0000, 0x00f2, 0x0002, 0x0000, - 0x00f5, 0x0002, 0x006a, 0x0076, 0x0076, 0x0003, 0x0000, 0x0000, - 0x00fd, 0x0002, 0x0000, 0x0100, 0x0002, 0x006a, 0x0076, 0x0062, - // Entry 49680 - 496BF - 0x0003, 0x0000, 0x0000, 0x0108, 0x0001, 0x010a, 0x0002, 0x0069, - 0x0400, 0x0400, 0x0003, 0x0000, 0x0000, 0x0112, 0x0002, 0x0000, - 0x0115, 0x0002, 0x006a, 0x008a, 0x008a, 0x0002, 0x0000, 0x011c, - 0x0003, 0x006a, 0x009a, 0x00b2, 0x00c4, 0x0002, 0x0000, 0x0124, - 0x0003, 0x006a, 0x00da, 0x00ee, 0x00fc, 0x0002, 0x0000, 0x012c, - 0x0003, 0x006a, 0x010e, 0x0120, 0x012c, 0x0002, 0x0000, 0x0134, - 0x0003, 0x006a, 0x013c, 0x0154, 0x0166, 0x0002, 0x0000, 0x013c, - 0x0003, 0x006a, 0x017c, 0x0190, 0x019e, 0x0003, 0x0000, 0x0000, - // Entry 496C0 - 496FF - 0x0145, 0x0002, 0x0000, 0x0148, 0x0002, 0x006a, 0x01b0, 0x01b0, - 0x0003, 0x0000, 0x0000, 0x0150, 0x0002, 0x0000, 0x0153, 0x0002, - 0x006a, 0x01b0, 0x01c6, 0x0003, 0x0000, 0x0000, 0x015b, 0x0002, - 0x0000, 0x015e, 0x0002, 0x006a, 0x01dc, 0x01dc, 0x0003, 0x0000, - 0x0000, 0x0166, 0x0002, 0x0000, 0x0169, 0x0002, 0x006a, 0x01dc, - 0x01dc, 0x0003, 0x0000, 0x0000, 0x0171, 0x0002, 0x0000, 0x0174, - 0x0002, 0x006a, 0x01dc, 0x01dc, 0x0003, 0x0000, 0x0000, 0x017c, - 0x0002, 0x0000, 0x017f, 0x0002, 0x006a, 0x01ee, 0x01ee, 0x0003, - // Entry 49700 - 4973F - 0x0000, 0x0000, 0x0187, 0x0002, 0x0000, 0x018a, 0x0002, 0x006a, - 0x01ee, 0x01ee, 0x0003, 0x0000, 0x0000, 0x0192, 0x0002, 0x0000, - 0x0195, 0x0002, 0x006a, 0x01ee, 0x01ee, 0x0004, 0x019e, 0x01a2, - 0x0000, 0x01a7, 0x0002, 0x0000, 0xffff, 0x40b8, 0x0003, 0x006a, - 0xffff, 0x0204, 0x0219, 0x0002, 0x0000, 0x01aa, 0x0003, 0x0240, - 0x02cd, 0x01ae, 0x0090, 0x006a, 0x0231, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0265, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x02bb, 0xffff, 0x031d, 0x0395, 0xffff, 0xffff, 0xffff, - // Entry 49740 - 4977F - 0xffff, 0xffff, 0x03f9, 0xffff, 0x0466, 0x04b2, 0x04c8, 0x04fa, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0554, 0xffff, 0xffff, 0xffff, - 0xffff, 0x05a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0609, - 0x0661, 0x0699, 0xffff, 0xffff, 0xffff, 0x0721, 0xffff, 0x0787, - 0xffff, 0x07a6, 0xffff, 0x07d8, 0xffff, 0x081a, 0xffff, 0xffff, - 0x0838, 0x0859, 0xffff, 0xffff, 0xffff, 0x086d, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x08a4, 0xffff, 0x0901, 0xffff, 0xffff, - 0x094e, 0x0973, 0xffff, 0xffff, 0xffff, 0x0998, 0xffff, 0xffff, - // Entry 49780 - 497BF - 0x09b0, 0xffff, 0xffff, 0x09d3, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x09e9, 0xffff, - 0x0a1a, 0xffff, 0xffff, 0xffff, 0x0a9b, 0xffff, 0xffff, 0x0b1f, - 0xffff, 0xffff, 0x0b7f, 0x0bdb, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0c15, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0c2d, 0xffff, 0xffff, 0xffff, 0x0c45, - 0xffff, 0xffff, 0xffff, 0x0c7d, 0xffff, 0x0ce9, 0x0d4d, 0xffff, - 0x0d97, 0xffff, 0xffff, 0x0db3, 0x008b, 0x006a, 0xffff, 0xffff, - // Entry 497C0 - 497FF - 0xffff, 0xffff, 0xffff, 0xffff, 0x024d, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x02ab, 0xffff, 0x02f8, 0x037d, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x03db, 0xffff, 0x044b, 0xffff, - 0xffff, 0x04e0, 0xffff, 0xffff, 0xffff, 0xffff, 0x0544, 0xffff, - 0xffff, 0xffff, 0xffff, 0x058a, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x05e8, 0xffff, 0x067b, 0xffff, 0xffff, 0xffff, 0x06f9, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x07c2, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 49800 - 4983F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0890, 0xffff, 0x08e9, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x09fd, 0xffff, 0xffff, 0xffff, 0x0a71, 0xffff, - 0xffff, 0x0b07, 0xffff, 0xffff, 0x0b65, 0x0bc9, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 49840 - 4987F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0c5f, 0xffff, 0x0ccf, - 0x0d33, 0x008b, 0x006a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x028c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x02da, 0xffff, 0x0351, 0x03bc, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0426, 0xffff, 0x0490, 0xffff, 0xffff, 0x0523, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0573, 0xffff, 0xffff, 0xffff, 0xffff, - 0x05c9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0639, 0xffff, - 0x06c4, 0xffff, 0xffff, 0xffff, 0x0758, 0xffff, 0xffff, 0xffff, - // Entry 49880 - 498BF - 0xffff, 0xffff, 0x07fd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x08c7, 0xffff, 0x0928, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0a46, - 0xffff, 0xffff, 0xffff, 0x0ad4, 0xffff, 0xffff, 0x0b46, 0xffff, - 0xffff, 0x0ba8, 0x0bfc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 498C0 - 498FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0caa, 0xffff, 0x0d12, 0x0d76, 0x0003, 0x0004, - 0x0269, 0x064d, 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0010, 0x003b, 0x0000, 0x0000, 0x0252, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, - 0x0027, 0x0021, 0x001e, 0x0024, 0x0001, 0x006a, 0x0dc9, 0x0001, - 0x006a, 0x0ddd, 0x0001, 0x006a, 0x0deb, 0x0001, 0x006a, 0x0df8, - // Entry 49900 - 4993F - 0x0004, 0x0038, 0x0032, 0x002f, 0x0035, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, - 0x0846, 0x0008, 0x0044, 0x00a9, 0x0100, 0x0135, 0x0206, 0x021f, - 0x0230, 0x0241, 0x0002, 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, - 0x0069, 0x000d, 0x0007, 0xffff, 0x0035, 0x23bb, 0x23bf, 0x23c3, - 0x23c7, 0x0049, 0x004d, 0x23cb, 0x23cf, 0x23d3, 0x005d, 0x23d7, - 0x000d, 0x0017, 0xffff, 0x29c1, 0x29f2, 0x29f4, 0x29f6, 0x29f4, - 0x2a00, 0x2a00, 0x29f6, 0x2a09, 0x29fa, 0x29fc, 0x29fe, 0x000d, - // Entry 49940 - 4997F - 0x0007, 0xffff, 0x0065, 0x006c, 0x23db, 0x23e0, 0x23c7, 0x007e, - 0x0083, 0x23e6, 0x23ed, 0x23f5, 0x00a0, 0x23fc, 0x0003, 0x007c, - 0x008b, 0x009a, 0x000d, 0x0037, 0xffff, 0x0094, 0x209d, 0x2038, - 0x20a1, 0x2040, 0x20a5, 0x20a9, 0x20ad, 0x20b1, 0x20b5, 0x20b9, - 0x20bd, 0x000d, 0x0017, 0xffff, 0x29c1, 0x29f2, 0x29f4, 0x29f6, - 0x29f4, 0x2a00, 0x2a00, 0x29f6, 0x2a09, 0x29fa, 0x29fc, 0x29fe, - 0x000d, 0x0007, 0xffff, 0x00ae, 0x00b5, 0x2403, 0x00c1, 0x2408, - 0x240c, 0x2411, 0x2416, 0x241d, 0x2425, 0x00ef, 0x00f6, 0x0002, - // Entry 49980 - 499BF - 0x00ac, 0x00d6, 0x0005, 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, - 0x0007, 0x006a, 0x0e08, 0x0e0c, 0x0e11, 0x0e16, 0x0e1b, 0x0e1f, - 0x0e23, 0x0007, 0x0017, 0x29c1, 0x29fe, 0x2a09, 0x2a05, 0x2a0d, - 0x29cf, 0x2a09, 0x0007, 0x006a, 0x0e28, 0x0e2b, 0x0e2e, 0x0e31, - 0x0e34, 0x0e37, 0x0e3a, 0x0007, 0x006a, 0x0e3d, 0x0e47, 0x0e50, - 0x0e59, 0x0e64, 0x0e6e, 0x0e73, 0x0005, 0x00dc, 0x00e5, 0x00f7, - 0x0000, 0x00ee, 0x0007, 0x006a, 0x0e08, 0x0e0c, 0x0e11, 0x0e16, - 0x0e1b, 0x0e1f, 0x0e23, 0x0007, 0x0017, 0x29c1, 0x29fe, 0x2a09, - // Entry 499C0 - 499FF - 0x2a05, 0x2a0d, 0x29cf, 0x2a09, 0x0007, 0x006a, 0x0e28, 0x0e2b, - 0x0e2e, 0x0e31, 0x0e34, 0x0e37, 0x0e3a, 0x0007, 0x006a, 0x0e3d, - 0x0e47, 0x0e50, 0x0e59, 0x0e64, 0x0e6e, 0x0e73, 0x0002, 0x0103, - 0x011c, 0x0003, 0x0107, 0x010e, 0x0115, 0x0005, 0x006a, 0xffff, - 0x0e7a, 0x0e7f, 0x0e84, 0x0e89, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x006a, 0xffff, 0x0e8e, 0x0e97, - 0x0ea0, 0x0ea9, 0x0003, 0x0120, 0x0127, 0x012e, 0x0005, 0x006a, - 0xffff, 0x0e7a, 0x0e7f, 0x0e84, 0x0e89, 0x0005, 0x0000, 0xffff, - // Entry 49A00 - 49A3F - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x006a, 0xffff, 0x0e8e, - 0x0e97, 0x0ea0, 0x0ea9, 0x0002, 0x0138, 0x019f, 0x0003, 0x013c, - 0x015d, 0x017e, 0x0008, 0x0148, 0x014e, 0x0145, 0x0151, 0x0154, - 0x0157, 0x015a, 0x014b, 0x0001, 0x006a, 0x0eb2, 0x0001, 0x006a, - 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, 0x0001, - 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, 0x0eda, - 0x0001, 0x006a, 0x0ee4, 0x0008, 0x0169, 0x016f, 0x0166, 0x0172, - 0x0175, 0x0178, 0x017b, 0x016c, 0x0001, 0x006a, 0x0eb2, 0x0001, - // Entry 49A40 - 49A7F - 0x006a, 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, - 0x0001, 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, - 0x0eda, 0x0001, 0x006a, 0x0ee4, 0x0008, 0x018a, 0x0190, 0x0187, - 0x0193, 0x0196, 0x0199, 0x019c, 0x018d, 0x0001, 0x006a, 0x0eb2, - 0x0001, 0x006a, 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, - 0x01d1, 0x0001, 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, - 0x006a, 0x0eda, 0x0001, 0x006a, 0x0ee4, 0x0003, 0x01a3, 0x01c4, - 0x01e5, 0x0008, 0x01af, 0x01b5, 0x01ac, 0x01b8, 0x01bb, 0x01be, - // Entry 49A80 - 49ABF - 0x01c1, 0x01b2, 0x0001, 0x006a, 0x0eb2, 0x0001, 0x006a, 0x0ebc, - 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, 0x0001, 0x006a, - 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, 0x0eda, 0x0001, - 0x006a, 0x0ee4, 0x0008, 0x01d0, 0x01d6, 0x01cd, 0x01d9, 0x01dc, - 0x01df, 0x01e2, 0x01d3, 0x0001, 0x006a, 0x0eb2, 0x0001, 0x006a, - 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, 0x0001, - 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, 0x0eda, - 0x0001, 0x006a, 0x0ee4, 0x0008, 0x01f1, 0x01f7, 0x01ee, 0x01fa, - // Entry 49AC0 - 49AFF - 0x01fd, 0x0200, 0x0203, 0x01f4, 0x0001, 0x006a, 0x0eb2, 0x0001, - 0x006a, 0x0ebc, 0x0001, 0x006a, 0x0ebf, 0x0001, 0x0019, 0x01d1, - 0x0001, 0x006a, 0x0eca, 0x0001, 0x006a, 0x0ed2, 0x0001, 0x006a, - 0x0eda, 0x0001, 0x006a, 0x0ee4, 0x0003, 0x0214, 0x0000, 0x020a, - 0x0002, 0x020d, 0x0211, 0x0002, 0x006a, 0x0eec, 0x0f0f, 0x0001, - 0x006a, 0x0efd, 0x0002, 0x0217, 0x021b, 0x0002, 0x006a, 0x0f17, - 0x0f0f, 0x0002, 0x006a, 0x0f1c, 0x0f21, 0x0004, 0x022d, 0x0227, - 0x0224, 0x022a, 0x0001, 0x006a, 0x0f26, 0x0001, 0x006a, 0x0f36, - // Entry 49B00 - 49B3F - 0x0001, 0x006a, 0x0f40, 0x0001, 0x0014, 0x146e, 0x0004, 0x023e, - 0x0238, 0x0235, 0x023b, 0x0001, 0x001c, 0x14d2, 0x0001, 0x0021, - 0x05f8, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x024f, 0x0249, 0x0246, 0x024c, 0x0001, 0x0005, 0x0846, 0x0001, - 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0001, 0x0254, 0x0001, 0x0256, 0x0003, 0x0000, 0x0000, 0x025a, - 0x000d, 0x0000, 0xffff, 0x0657, 0x3f6c, 0x413e, 0x414e, 0x415d, - 0x416c, 0x3fb1, 0x417a, 0x4183, 0x418b, 0x4193, 0x419e, 0x0040, - // Entry 49B40 - 49B7F - 0x02aa, 0x0000, 0x0000, 0x02af, 0x02c6, 0x02dd, 0x02f4, 0x030b, - 0x031d, 0x032f, 0x0346, 0x0358, 0x036a, 0x0385, 0x039b, 0x0000, - 0x0000, 0x0000, 0x03b1, 0x03c8, 0x03da, 0x0000, 0x0000, 0x0000, - 0x03ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03f1, 0x0405, - 0x0419, 0x042d, 0x0441, 0x0455, 0x0469, 0x047d, 0x0491, 0x04a5, - 0x04b9, 0x04cd, 0x04e1, 0x04f5, 0x0509, 0x051d, 0x0531, 0x0545, - 0x0559, 0x056d, 0x0581, 0x0000, 0x0595, 0x0000, 0x059a, 0x05b0, - 0x05c2, 0x05d4, 0x05ea, 0x05fc, 0x060e, 0x0624, 0x0636, 0x0648, - // Entry 49B80 - 49BBF - 0x0001, 0x02ac, 0x0001, 0x0001, 0x0040, 0x0003, 0x02b3, 0x02b6, - 0x02bb, 0x0001, 0x006a, 0x0f49, 0x0003, 0x006a, 0x0f4d, 0x0f5a, - 0x0f62, 0x0002, 0x02be, 0x02c2, 0x0002, 0x006a, 0x0f6e, 0x0f6e, - 0x0002, 0x006a, 0x0f7f, 0x0f7f, 0x0003, 0x02ca, 0x02cd, 0x02d2, - 0x0001, 0x006a, 0x0f49, 0x0003, 0x006a, 0x0f8d, 0x0f99, 0x0f62, - 0x0002, 0x02d5, 0x02d9, 0x0002, 0x006a, 0x0f6e, 0x0f6e, 0x0002, - 0x006a, 0x0f7f, 0x0f7f, 0x0003, 0x02e1, 0x02e4, 0x02e9, 0x0001, - 0x006a, 0x0f49, 0x0003, 0x006a, 0x0f8d, 0x0f99, 0x0f62, 0x0002, - // Entry 49BC0 - 49BFF - 0x02ec, 0x02f0, 0x0002, 0x006a, 0x0f6e, 0x0f6e, 0x0002, 0x006a, - 0x0f7f, 0x0f7f, 0x0003, 0x02f8, 0x02fb, 0x0300, 0x0001, 0x006a, - 0x0fa0, 0x0003, 0x006a, 0x0fa7, 0x0fb7, 0x0fc2, 0x0002, 0x0303, - 0x0307, 0x0002, 0x006a, 0x0fd1, 0x0fd1, 0x0002, 0x006a, 0x0fe5, - 0x0fe5, 0x0003, 0x030f, 0x0000, 0x0312, 0x0001, 0x006a, 0x0ff6, - 0x0002, 0x0315, 0x0319, 0x0002, 0x006a, 0x0fd1, 0x0fd1, 0x0002, - 0x006a, 0x0fe5, 0x0fe5, 0x0003, 0x0321, 0x0000, 0x0324, 0x0001, - 0x006a, 0x0ff6, 0x0002, 0x0327, 0x032b, 0x0002, 0x006a, 0x0fd1, - // Entry 49C00 - 49C3F - 0x0fd1, 0x0002, 0x006a, 0x0fe5, 0x0fe5, 0x0003, 0x0333, 0x0336, - 0x033b, 0x0001, 0x006a, 0x0ff9, 0x0003, 0x006a, 0x0ffc, 0x1008, - 0x100f, 0x0002, 0x033e, 0x0342, 0x0002, 0x006a, 0x101a, 0x101a, - 0x0002, 0x006a, 0x102a, 0x102a, 0x0003, 0x034a, 0x0000, 0x034d, - 0x0001, 0x006a, 0x0ff9, 0x0002, 0x0350, 0x0354, 0x0002, 0x006a, - 0x101a, 0x101a, 0x0002, 0x006a, 0x102a, 0x102a, 0x0003, 0x035c, - 0x0000, 0x035f, 0x0001, 0x006a, 0x0ff9, 0x0002, 0x0362, 0x0366, - 0x0002, 0x006a, 0x101a, 0x101a, 0x0002, 0x006a, 0x102a, 0x102a, - // Entry 49C40 - 49C7F - 0x0004, 0x036f, 0x0372, 0x0377, 0x0382, 0x0001, 0x0065, 0x0477, - 0x0003, 0x006a, 0x1037, 0x1046, 0x1050, 0x0002, 0x037a, 0x037e, - 0x0002, 0x006a, 0x105e, 0x105e, 0x0002, 0x006a, 0x1071, 0x1071, - 0x0001, 0x006a, 0x1081, 0x0004, 0x038a, 0x0000, 0x038d, 0x0398, - 0x0001, 0x0065, 0x0477, 0x0002, 0x0390, 0x0394, 0x0002, 0x006a, - 0x105e, 0x105e, 0x0002, 0x006a, 0x1071, 0x1071, 0x0001, 0x006a, - 0x1081, 0x0004, 0x03a0, 0x0000, 0x03a3, 0x03ae, 0x0001, 0x0065, - 0x0477, 0x0002, 0x03a6, 0x03aa, 0x0002, 0x006a, 0x105e, 0x105e, - // Entry 49C80 - 49CBF - 0x0002, 0x006a, 0x1071, 0x1071, 0x0001, 0x006a, 0x1081, 0x0003, - 0x03b5, 0x03b8, 0x03bd, 0x0001, 0x006a, 0x108b, 0x0003, 0x006a, - 0x108f, 0x1095, 0x109b, 0x0002, 0x03c0, 0x03c4, 0x0002, 0x006a, - 0x10a2, 0x10a2, 0x0002, 0x006a, 0x10b3, 0x10b3, 0x0003, 0x03cc, - 0x0000, 0x03cf, 0x0001, 0x006a, 0x108b, 0x0002, 0x03d2, 0x03d6, - 0x0002, 0x006a, 0x10a2, 0x10a2, 0x0002, 0x006a, 0x10b3, 0x10b3, - 0x0003, 0x03de, 0x0000, 0x03e1, 0x0001, 0x006a, 0x108b, 0x0002, - 0x03e4, 0x03e8, 0x0002, 0x006a, 0x10a2, 0x10a2, 0x0002, 0x006a, - // Entry 49CC0 - 49CFF - 0x10b3, 0x10b3, 0x0001, 0x03ee, 0x0001, 0x006a, 0x10c1, 0x0003, - 0x0000, 0x03f5, 0x03fa, 0x0003, 0x006a, 0x10cc, 0x10df, 0x10ed, - 0x0002, 0x03fd, 0x0401, 0x0002, 0x006a, 0x10ff, 0x10ff, 0x0002, - 0x006a, 0x1119, 0x1119, 0x0003, 0x0000, 0x0409, 0x040e, 0x0003, - 0x006a, 0x10cc, 0x10df, 0x10ed, 0x0002, 0x0411, 0x0415, 0x0002, - 0x006a, 0x10ff, 0x10ff, 0x0002, 0x006a, 0x1119, 0x1119, 0x0003, - 0x0000, 0x041d, 0x0422, 0x0003, 0x006a, 0x10cc, 0x10df, 0x10ed, - 0x0002, 0x0425, 0x0429, 0x0002, 0x006a, 0x10ff, 0x10ff, 0x0002, - // Entry 49D00 - 49D3F - 0x006a, 0x1119, 0x1119, 0x0003, 0x0000, 0x0431, 0x0436, 0x0003, - 0x006a, 0x1130, 0x1142, 0x114f, 0x0002, 0x0439, 0x043d, 0x0002, - 0x006a, 0x1160, 0x1160, 0x0002, 0x006a, 0x1179, 0x1179, 0x0003, - 0x0000, 0x0445, 0x044a, 0x0003, 0x006a, 0x1130, 0x1142, 0x114f, - 0x0002, 0x044d, 0x0451, 0x0002, 0x006a, 0x1160, 0x1160, 0x0002, - 0x006a, 0x1179, 0x1179, 0x0003, 0x0000, 0x0459, 0x045e, 0x0003, - 0x006a, 0x1130, 0x1142, 0x114f, 0x0002, 0x0461, 0x0465, 0x0002, - 0x006a, 0x1160, 0x1160, 0x0002, 0x006a, 0x1179, 0x1179, 0x0003, - // Entry 49D40 - 49D7F - 0x0000, 0x046d, 0x0472, 0x0003, 0x006a, 0x118f, 0x11a1, 0x11ae, - 0x0002, 0x0475, 0x0479, 0x0002, 0x006a, 0x11bf, 0x11bf, 0x0002, - 0x006a, 0x11d8, 0x11d8, 0x0003, 0x0000, 0x0481, 0x0486, 0x0003, - 0x006a, 0x118f, 0x11a1, 0x11ae, 0x0002, 0x0489, 0x048d, 0x0002, - 0x006a, 0x11bf, 0x11bf, 0x0002, 0x006a, 0x11d8, 0x11d8, 0x0003, - 0x0000, 0x0495, 0x049a, 0x0003, 0x006a, 0x118f, 0x11a1, 0x11ae, - 0x0002, 0x049d, 0x04a1, 0x0002, 0x006a, 0x11bf, 0x11bf, 0x0002, - 0x006a, 0x11d8, 0x11d8, 0x0003, 0x0000, 0x04a9, 0x04ae, 0x0003, - // Entry 49D80 - 49DBF - 0x006a, 0x11ee, 0x1202, 0x1211, 0x0002, 0x04b1, 0x04b5, 0x0002, - 0x006a, 0x1224, 0x1224, 0x0002, 0x006a, 0x123f, 0x123f, 0x0003, - 0x0000, 0x04bd, 0x04c2, 0x0003, 0x006a, 0x11ee, 0x1202, 0x1211, - 0x0002, 0x04c5, 0x04c9, 0x0002, 0x006a, 0x1224, 0x1224, 0x0002, - 0x006a, 0x123f, 0x123f, 0x0003, 0x0000, 0x04d1, 0x04d6, 0x0003, - 0x006a, 0x11ee, 0x1202, 0x1211, 0x0002, 0x04d9, 0x04dd, 0x0002, - 0x006a, 0x1224, 0x1224, 0x0002, 0x006a, 0x123f, 0x123f, 0x0003, - 0x0000, 0x04e5, 0x04ea, 0x0003, 0x006a, 0x1257, 0x126a, 0x1278, - // Entry 49DC0 - 49DFF - 0x0002, 0x04ed, 0x04f1, 0x0002, 0x006a, 0x128a, 0x128a, 0x0002, - 0x006a, 0x12a4, 0x12a4, 0x0003, 0x0000, 0x04f9, 0x04fe, 0x0003, - 0x006a, 0x1257, 0x126a, 0x1278, 0x0002, 0x0501, 0x0505, 0x0002, - 0x006a, 0x128a, 0x128a, 0x0002, 0x006a, 0x12a4, 0x12a4, 0x0003, - 0x0000, 0x050d, 0x0512, 0x0003, 0x006a, 0x1257, 0x126a, 0x1278, - 0x0002, 0x0515, 0x0519, 0x0002, 0x006a, 0x128a, 0x128a, 0x0002, - 0x006a, 0x12a4, 0x12a4, 0x0003, 0x0000, 0x0521, 0x0526, 0x0003, - 0x006a, 0x12bb, 0x12c9, 0x12d2, 0x0002, 0x0529, 0x052d, 0x0002, - // Entry 49E00 - 49E3F - 0x006a, 0x12df, 0x12df, 0x0002, 0x006a, 0x12f4, 0x12f4, 0x0003, - 0x0000, 0x0535, 0x053a, 0x0003, 0x006a, 0x12bb, 0x12c9, 0x12d2, - 0x0002, 0x053d, 0x0541, 0x0002, 0x006a, 0x12df, 0x12df, 0x0002, - 0x006a, 0x12f4, 0x12f4, 0x0003, 0x0000, 0x0549, 0x054e, 0x0003, - 0x006a, 0x12bb, 0x12c9, 0x12d2, 0x0002, 0x0551, 0x0555, 0x0002, - 0x006a, 0x12df, 0x12df, 0x0002, 0x006a, 0x12f4, 0x12f4, 0x0003, - 0x0000, 0x055d, 0x0562, 0x0003, 0x006a, 0x1306, 0x1316, 0x1321, - 0x0002, 0x0565, 0x0569, 0x0002, 0x006a, 0x1330, 0x1330, 0x0002, - // Entry 49E40 - 49E7F - 0x006a, 0x1347, 0x1347, 0x0003, 0x0000, 0x0571, 0x0576, 0x0003, - 0x006a, 0x1306, 0x1316, 0x1321, 0x0002, 0x0579, 0x057d, 0x0002, - 0x006a, 0x1330, 0x1330, 0x0002, 0x006a, 0x1347, 0x1347, 0x0003, - 0x0000, 0x0585, 0x058a, 0x0003, 0x006a, 0x1306, 0x1316, 0x1321, - 0x0002, 0x058d, 0x0591, 0x0002, 0x006a, 0x1330, 0x1330, 0x0002, - 0x006a, 0x1347, 0x1347, 0x0001, 0x0597, 0x0001, 0x006a, 0x135b, - 0x0003, 0x059e, 0x05a1, 0x05a5, 0x0001, 0x006a, 0x1361, 0x0002, - 0x006a, 0xffff, 0x1366, 0x0002, 0x05a8, 0x05ac, 0x0002, 0x006a, - // Entry 49E80 - 49EBF - 0x1371, 0x1371, 0x0002, 0x006a, 0x1383, 0x1383, 0x0003, 0x05b4, - 0x0000, 0x05b7, 0x0001, 0x006a, 0x1361, 0x0002, 0x05ba, 0x05be, - 0x0002, 0x006a, 0x1371, 0x1371, 0x0002, 0x006a, 0x1383, 0x1383, - 0x0003, 0x05c6, 0x0000, 0x05c9, 0x0001, 0x006a, 0x1361, 0x0002, - 0x05cc, 0x05d0, 0x0002, 0x006a, 0x1371, 0x1371, 0x0002, 0x006a, - 0x1383, 0x1383, 0x0003, 0x05d8, 0x05db, 0x05df, 0x0001, 0x006a, - 0x1392, 0x0002, 0x006a, 0xffff, 0x1399, 0x0002, 0x05e2, 0x05e6, - 0x0002, 0x006a, 0x13a6, 0x13a6, 0x0002, 0x006a, 0x13ba, 0x13ba, - // Entry 49EC0 - 49EFF - 0x0003, 0x05ee, 0x0000, 0x05f1, 0x0001, 0x006a, 0x13cb, 0x0002, - 0x05f4, 0x05f8, 0x0002, 0x006a, 0x13a6, 0x13a6, 0x0002, 0x006a, - 0x13ba, 0x13ba, 0x0003, 0x0600, 0x0000, 0x0603, 0x0001, 0x006a, - 0x13cb, 0x0002, 0x0606, 0x060a, 0x0002, 0x006a, 0x13a6, 0x13a6, - 0x0002, 0x006a, 0x13ba, 0x13ba, 0x0003, 0x0612, 0x0615, 0x0619, - 0x0001, 0x006a, 0x13d0, 0x0002, 0x006a, 0xffff, 0x13d7, 0x0002, - 0x061c, 0x0620, 0x0002, 0x006a, 0x13dd, 0x13dd, 0x0002, 0x006a, - 0x13f1, 0x13f1, 0x0003, 0x0628, 0x0000, 0x062b, 0x0001, 0x006a, - // Entry 49F00 - 49F3F - 0x1402, 0x0002, 0x062e, 0x0632, 0x0002, 0x006a, 0x13dd, 0x13dd, - 0x0002, 0x006a, 0x13f1, 0x13f1, 0x0003, 0x063a, 0x0000, 0x063d, - 0x0001, 0x006a, 0x1402, 0x0002, 0x0640, 0x0644, 0x0002, 0x006a, - 0x13dd, 0x13dd, 0x0002, 0x006a, 0x13f1, 0x13f1, 0x0001, 0x064a, - 0x0001, 0x006a, 0x1407, 0x0004, 0x0652, 0x0657, 0x065c, 0x0667, - 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0000, 0x1de0, - 0x41a8, 0x41b1, 0x0002, 0x0000, 0x065f, 0x0002, 0x0000, 0x0662, - 0x0003, 0x006a, 0xffff, 0x1416, 0x142c, 0x0002, 0x0000, 0x066a, - // Entry 49F40 - 49F7F - 0x0003, 0x0704, 0x079a, 0x066e, 0x0094, 0x006a, 0x1442, 0x1455, - 0x146b, 0x1480, 0x14b4, 0x14fd, 0x1537, 0x157b, 0x15ce, 0x161d, - 0x1667, 0xffff, 0x16a7, 0x16e5, 0x1736, 0x177e, 0x17d0, 0x1811, - 0x185a, 0x18c1, 0x1931, 0x198d, 0x19e3, 0x1a28, 0x1a70, 0x1aa1, - 0x1aad, 0x1acc, 0x1afb, 0x1b24, 0x1b55, 0x1b7a, 0x1baf, 0x1be2, - 0x1c1a, 0x1c4b, 0x1c61, 0x1c86, 0x1cc8, 0x1d0e, 0x1d33, 0x1d40, - 0x1d58, 0x1d7e, 0x1db1, 0x1dd6, 0x1e29, 0x1e64, 0x1e97, 0x1eee, - 0x1f38, 0x1f5d, 0x1f74, 0x1fa2, 0x1fb2, 0x1fcd, 0x1ff8, 0x200f, - // Entry 49F80 - 49FBF - 0x2043, 0x20a2, 0x20e9, 0x2108, 0x2128, 0x216b, 0x21a1, 0x21c6, - 0x21d6, 0x21e8, 0x21f9, 0x2213, 0x222c, 0x2251, 0x2284, 0x22bc, - 0x22f4, 0xffff, 0x2321, 0x233c, 0x2365, 0x238e, 0x23ad, 0x23e0, - 0x23f4, 0x2417, 0x2444, 0x2467, 0x2492, 0x24a2, 0x24b8, 0x24ce, - 0x24f5, 0x2522, 0x254f, 0x25b9, 0x260f, 0x264d, 0x2676, 0x2683, - 0x268f, 0x26b2, 0x2705, 0x2753, 0x2788, 0x2794, 0x27c2, 0x2817, - 0x2855, 0x2889, 0x28b6, 0x28c2, 0x28eb, 0x2923, 0x2957, 0x2984, - 0x29b4, 0x29f7, 0x2a05, 0x2a12, 0x2a20, 0x2a2f, 0x2a4a, 0xffff, - // Entry 49FC0 - 49FFF - 0x2a81, 0x2aa8, 0x2abf, 0x2ace, 0x2ae5, 0x2afc, 0x2b0a, 0x2b16, - 0x2b2f, 0x2b58, 0x2b69, 0x2b83, 0x2baa, 0x2bc9, 0x2bfe, 0x2c19, - 0x2c58, 0x2c9d, 0x2cc8, 0x2cea, 0x2d2d, 0x2d5c, 0x2d69, 0x2d7a, - 0x2d9f, 0x2dde, 0x0094, 0x006a, 0xffff, 0xffff, 0xffff, 0xffff, - 0x149e, 0x14ef, 0x1528, 0x1564, 0x15b8, 0x1609, 0x1654, 0xffff, - 0x169c, 0x16cc, 0x1726, 0x1765, 0x17bf, 0x1801, 0x1840, 0x189d, - 0x1918, 0x1972, 0x19d2, 0x1a14, 0x1a5f, 0xffff, 0xffff, 0x1abc, - 0xffff, 0x1b13, 0xffff, 0x1b6d, 0x1ba3, 0x1bd6, 0x1c09, 0xffff, - // Entry 4A000 - 4A03F - 0xffff, 0x1c76, 0x1cb5, 0x1d03, 0xffff, 0xffff, 0xffff, 0x1d6c, - 0xffff, 0x1dbf, 0x1e13, 0xffff, 0x1e7f, 0x1ed6, 0x1f2d, 0xffff, - 0xffff, 0xffff, 0xffff, 0x1fbf, 0xffff, 0xffff, 0x2029, 0x2086, - 0xffff, 0xffff, 0x2115, 0x215d, 0x2196, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2246, 0x2276, 0x22af, 0x22e5, 0xffff, - 0xffff, 0xffff, 0x2358, 0xffff, 0x239b, 0xffff, 0xffff, 0x2408, - 0xffff, 0x2459, 0xffff, 0xffff, 0xffff, 0xffff, 0x24e6, 0xffff, - 0x252f, 0x259e, 0x25fe, 0x2640, 0xffff, 0xffff, 0xffff, 0x269b, - // Entry 4A040 - 4A07F - 0x26ef, 0x2740, 0xffff, 0xffff, 0x27a8, 0x2805, 0x284a, 0x287a, - 0xffff, 0xffff, 0x28dc, 0x2918, 0x2948, 0xffff, 0x299a, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2a3c, 0xffff, 0x2a75, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2b22, 0xffff, - 0xffff, 0x2b77, 0xffff, 0x2bb6, 0xffff, 0x2c0b, 0x2c44, 0x2c8f, - 0xffff, 0x2cd8, 0x2d1d, 0xffff, 0xffff, 0xffff, 0x2d91, 0x2dca, - 0x0094, 0x006a, 0xffff, 0xffff, 0xffff, 0xffff, 0x14d3, 0x1514, - 0x154f, 0x159b, 0x15ed, 0x163a, 0x1683, 0xffff, 0x16bb, 0x1707, - // Entry 4A080 - 4A0BF - 0x174f, 0x17a0, 0x17ea, 0x182a, 0x187d, 0x18ee, 0x1953, 0x19b1, - 0x19fd, 0x1a45, 0x1a8a, 0xffff, 0xffff, 0x1ae5, 0xffff, 0x1b3e, - 0xffff, 0x1b90, 0x1bc4, 0x1bf7, 0x1c34, 0xffff, 0xffff, 0x1c9f, - 0x1ce4, 0x1d22, 0xffff, 0xffff, 0xffff, 0x1d99, 0xffff, 0x1df6, - 0x1e48, 0xffff, 0x1eb8, 0x1f0f, 0x1f4c, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1fe4, 0xffff, 0xffff, 0x2066, 0x20c7, 0xffff, 0xffff, - 0x2144, 0x2182, 0x21b5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2265, 0x229b, 0x22d2, 0x230c, 0xffff, 0xffff, 0xffff, - // Entry 4A0C0 - 4A0FF - 0x237b, 0xffff, 0x23c8, 0xffff, 0xffff, 0x242f, 0xffff, 0x247e, - 0xffff, 0xffff, 0xffff, 0xffff, 0x250d, 0xffff, 0x2578, 0x25dd, - 0x2629, 0x2663, 0xffff, 0xffff, 0xffff, 0x26d2, 0x2724, 0x276f, - 0xffff, 0xffff, 0x27e5, 0x2832, 0x2869, 0x28a1, 0xffff, 0xffff, - 0x2903, 0x2937, 0x296f, 0xffff, 0x29d7, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2a61, 0xffff, 0x2a96, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2b45, 0xffff, 0xffff, 0x2b98, - 0xffff, 0x2be5, 0xffff, 0x2c30, 0x2c75, 0x2cb4, 0xffff, 0x2d05, - // Entry 4A100 - 4A13F - 0x2d46, 0xffff, 0xffff, 0xffff, 0x2db6, 0x2dfb, 0x0003, 0x0004, - 0x0000, 0x0096, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000d, 0x0027, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0024, 0x001e, 0x001b, - 0x0021, 0x0001, 0x006b, 0x0000, 0x0001, 0x006b, 0x002e, 0x0001, - 0x0001, 0x1f98, 0x0001, 0x0051, 0x0618, 0x0008, 0x0030, 0x0054, - 0x0000, 0x0000, 0x006c, 0x0074, 0x0085, 0x0000, 0x0001, 0x0032, - 0x0003, 0x0036, 0x0000, 0x0045, 0x000d, 0x0003, 0xffff, 0x0d4a, - // Entry 4A140 - 4A17F - 0x2296, 0x229d, 0x22a4, 0x22ab, 0x22b0, 0x21ae, 0x22b7, 0x22be, - 0x22c5, 0x22cc, 0x21e3, 0x000d, 0x0022, 0xffff, 0x0000, 0x000b, - 0x30f0, 0x30f9, 0x3135, 0x313a, 0x3141, 0x3085, 0x314c, 0x3112, - 0x311f, 0x312a, 0x0001, 0x0056, 0x0003, 0x005a, 0x0000, 0x0063, - 0x0007, 0x006b, 0x0040, 0x0044, 0x0048, 0x004c, 0x0050, 0x0054, - 0x0058, 0x0007, 0x0021, 0x03f8, 0x0405, 0x0412, 0x0422, 0x0433, - 0x0442, 0x044b, 0x0001, 0x006e, 0x0001, 0x0070, 0x0002, 0x0021, - 0x05d7, 0x375f, 0x0004, 0x0082, 0x007c, 0x0079, 0x007f, 0x0001, - // Entry 4A180 - 4A1BF - 0x006b, 0x005c, 0x0001, 0x006b, 0x0088, 0x0001, 0x0001, 0x1fb9, - 0x0001, 0x0021, 0x05f2, 0x0004, 0x0093, 0x008d, 0x008a, 0x0090, - 0x0001, 0x001c, 0x14d2, 0x0001, 0x0021, 0x05f8, 0x0001, 0x0005, - 0x0099, 0x0001, 0x0005, 0x00a1, 0x0004, 0x0000, 0x0000, 0x0000, - 0x009b, 0x0002, 0x0000, 0x009e, 0x0003, 0x0000, 0x0000, 0x00a2, - 0x0001, 0x006b, 0x0098, 0x0003, 0x0004, 0x0268, 0x038b, 0x000b, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x003b, - 0x0000, 0x0000, 0x0251, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 4A1C0 - 4A1FF - 0x0000, 0x0019, 0x0000, 0x002a, 0x0004, 0x0027, 0x0021, 0x001e, - 0x0024, 0x0001, 0x0002, 0x028a, 0x0001, 0x0000, 0x049a, 0x0001, - 0x0000, 0x04a5, 0x0001, 0x001c, 0x0588, 0x0004, 0x0038, 0x0032, - 0x002f, 0x0035, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0044, - 0x00a9, 0x0100, 0x0135, 0x0206, 0x021e, 0x022f, 0x0240, 0x0002, - 0x0047, 0x0078, 0x0003, 0x004b, 0x005a, 0x0069, 0x000d, 0x0011, - 0xffff, 0x0000, 0x0007, 0x392e, 0x3935, 0x3908, 0x0023, 0x002a, - // Entry 4A200 - 4A23F - 0x393c, 0x0038, 0x3943, 0x0046, 0x004d, 0x000d, 0x003e, 0xffff, - 0x0e82, 0x0e85, 0x20db, 0x20de, 0x20db, 0x203a, 0x203a, 0x20de, - 0x20d5, 0x20e1, 0x0e97, 0x20aa, 0x000d, 0x006b, 0xffff, 0x00b4, - 0x00bf, 0x00cc, 0x00d5, 0x00e0, 0x00e7, 0x00ee, 0x00f5, 0x0102, - 0x0111, 0x011e, 0x0129, 0x0003, 0x007c, 0x008b, 0x009a, 0x000d, - 0x003e, 0xffff, 0x0e9d, 0x0ea4, 0x0eab, 0x0eb2, 0x204d, 0x0ec0, - 0x0ec7, 0x0ece, 0x0ed5, 0x0edc, 0x0ee3, 0x0eea, 0x000d, 0x003e, - 0xffff, 0x0e82, 0x0e85, 0x20db, 0x20de, 0x20db, 0x203a, 0x203a, - // Entry 4A240 - 4A27F - 0x20de, 0x20d5, 0x20e1, 0x0e97, 0x20aa, 0x000d, 0x006b, 0xffff, - 0x0136, 0x0141, 0x014e, 0x0157, 0x0162, 0x0169, 0x0170, 0x0177, - 0x0184, 0x0193, 0x01a0, 0x01ab, 0x0002, 0x00ac, 0x00d6, 0x0005, - 0x00b2, 0x00bb, 0x00cd, 0x0000, 0x00c4, 0x0007, 0x006b, 0x01b8, - 0x01bf, 0x01c6, 0x01cd, 0x01d4, 0x01db, 0x01e2, 0x0007, 0x003e, - 0x0e82, 0x20aa, 0x20d5, 0x20d8, 0x20cf, 0x20e4, 0x20e7, 0x0007, - 0x006b, 0x01e9, 0x01ee, 0x01f3, 0x01f8, 0x01fd, 0x0202, 0x0207, - 0x0007, 0x006b, 0x020c, 0x021b, 0x022a, 0x0239, 0x024a, 0x025b, - // Entry 4A280 - 4A2BF - 0x0264, 0x0005, 0x00dc, 0x00e5, 0x00f7, 0x0000, 0x00ee, 0x0007, - 0x006b, 0x026f, 0x0276, 0x027d, 0x0284, 0x028b, 0x0292, 0x0299, - 0x0007, 0x003e, 0x0e82, 0x20aa, 0x20d5, 0x20d8, 0x20cf, 0x20e4, - 0x20e7, 0x0007, 0x006b, 0x01e9, 0x01ee, 0x01f3, 0x01f8, 0x01fd, - 0x0202, 0x0207, 0x0007, 0x006b, 0x02a0, 0x02af, 0x02be, 0x02cd, - 0x02de, 0x02ef, 0x02f8, 0x0002, 0x0103, 0x011c, 0x0003, 0x0107, - 0x010e, 0x0115, 0x0005, 0x006b, 0xffff, 0x0303, 0x0308, 0x030d, - 0x0312, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - // Entry 4A2C0 - 4A2FF - 0x0005, 0x006b, 0xffff, 0x0317, 0x0324, 0x0331, 0x033e, 0x0003, - 0x0120, 0x0127, 0x012e, 0x0005, 0x006b, 0xffff, 0x0303, 0x0308, - 0x030d, 0x0312, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x006b, 0xffff, 0x0317, 0x0324, 0x0331, 0x033e, - 0x0002, 0x0138, 0x019f, 0x0003, 0x013c, 0x015d, 0x017e, 0x0008, - 0x0148, 0x014e, 0x0145, 0x0151, 0x0154, 0x0157, 0x015a, 0x014b, - 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, 0x006b, - 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, 0x0001, - // Entry 4A300 - 4A33F - 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, 0x03a6, - 0x0008, 0x0169, 0x016f, 0x0166, 0x0172, 0x0175, 0x0178, 0x017b, - 0x016c, 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, - 0x006b, 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, - 0x0001, 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, - 0x03a6, 0x0008, 0x018a, 0x0190, 0x0187, 0x0193, 0x0196, 0x0199, - 0x019c, 0x018d, 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, - 0x0001, 0x006b, 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, - // Entry 4A340 - 4A37F - 0x0377, 0x0001, 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, - 0x006b, 0x03a6, 0x0003, 0x01a3, 0x01c4, 0x01e5, 0x0008, 0x01af, - 0x01b5, 0x01ac, 0x01b8, 0x01bb, 0x01be, 0x01c1, 0x01b2, 0x0001, - 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, 0x006b, 0x0360, - 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, 0x0001, 0x006b, - 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, 0x03a6, 0x0008, - 0x01d0, 0x01d6, 0x01cd, 0x01d9, 0x01dc, 0x01df, 0x01e2, 0x01d3, - 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, 0x006b, - // Entry 4A380 - 4A3BF - 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, 0x0001, - 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, 0x03a6, - 0x0008, 0x01f1, 0x01f7, 0x01ee, 0x01fa, 0x01fd, 0x0200, 0x0203, - 0x01f4, 0x0001, 0x006b, 0x034b, 0x0001, 0x006b, 0x035b, 0x0001, - 0x006b, 0x0360, 0x0001, 0x006b, 0x0372, 0x0001, 0x006b, 0x0377, - 0x0001, 0x006b, 0x0386, 0x0001, 0x006b, 0x0395, 0x0001, 0x006b, - 0x03a6, 0x0003, 0x0214, 0x0000, 0x020a, 0x0002, 0x020d, 0x0211, - 0x0002, 0x006b, 0x03b3, 0x03f5, 0x0001, 0x006b, 0x03d3, 0x0002, - // Entry 4A3C0 - 4A3FF - 0x0217, 0x021b, 0x0002, 0x006b, 0x0404, 0x03f5, 0x0001, 0x006b, - 0x040b, 0x0004, 0x022c, 0x0226, 0x0223, 0x0229, 0x0001, 0x0036, - 0x09ae, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, 0x01f2, 0x0001, - 0x0014, 0x146e, 0x0004, 0x023d, 0x0237, 0x0234, 0x023a, 0x0001, - 0x001f, 0x1e5b, 0x0001, 0x001f, 0x1e6b, 0x0001, 0x0000, 0x053d, - 0x0001, 0x0000, 0x0546, 0x0004, 0x024e, 0x0248, 0x0245, 0x024b, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0253, 0x0001, 0x0255, - // Entry 4A400 - 4A43F - 0x0003, 0x0000, 0x0000, 0x0259, 0x000d, 0x006b, 0xffff, 0x0412, - 0x0423, 0x042e, 0x0446, 0x045c, 0x0474, 0x048e, 0x0499, 0x04a6, - 0x04b5, 0x04c2, 0x04d4, 0x0040, 0x02a9, 0x0000, 0x0000, 0x02ae, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02c5, 0x0000, 0x0000, - 0x02dc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02f3, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x030a, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x030f, 0x0000, 0x0000, 0x0317, 0x0000, 0x0000, - 0x031f, 0x0000, 0x0000, 0x0327, 0x0000, 0x0000, 0x032f, 0x0000, - // Entry 4A440 - 4A47F - 0x0000, 0x0337, 0x0000, 0x0000, 0x033f, 0x0000, 0x0000, 0x0000, - 0x0347, 0x0000, 0x034c, 0x0000, 0x0000, 0x035e, 0x0000, 0x0000, - 0x0370, 0x0000, 0x0000, 0x0386, 0x0001, 0x02ab, 0x0001, 0x006b, - 0x04e6, 0x0003, 0x02b2, 0x02b5, 0x02ba, 0x0001, 0x006b, 0x04ed, - 0x0003, 0x006b, 0x04f4, 0x0506, 0x0512, 0x0002, 0x02bd, 0x02c1, - 0x0002, 0x006b, 0x0528, 0x0528, 0x0002, 0x006b, 0x0542, 0x0542, - 0x0003, 0x02c9, 0x02cc, 0x02d1, 0x0001, 0x006b, 0x0558, 0x0003, - 0x006b, 0x055d, 0x056d, 0x0577, 0x0002, 0x02d4, 0x02d8, 0x0002, - // Entry 4A480 - 4A4BF - 0x006b, 0x058b, 0x058b, 0x0002, 0x006b, 0x05a3, 0x05a3, 0x0003, - 0x02e0, 0x02e3, 0x02e8, 0x0001, 0x006b, 0x05b7, 0x0003, 0x006b, - 0x05c2, 0x05d8, 0x05e8, 0x0002, 0x02eb, 0x02ef, 0x0002, 0x006b, - 0x0602, 0x0602, 0x0002, 0x006b, 0x0620, 0x0620, 0x0003, 0x02f7, - 0x02fa, 0x02ff, 0x0001, 0x006b, 0x063a, 0x0003, 0x006b, 0x0641, - 0x064a, 0x0655, 0x0002, 0x0302, 0x0306, 0x0002, 0x006b, 0x0662, - 0x0662, 0x0002, 0x006b, 0x067c, 0x067c, 0x0001, 0x030c, 0x0001, - 0x006b, 0x0692, 0x0002, 0x0000, 0x0312, 0x0003, 0x006b, 0x06a6, - // Entry 4A4C0 - 4A4FF - 0x06c0, 0x06d4, 0x0002, 0x0000, 0x031a, 0x0003, 0x006b, 0x06f2, - 0x070c, 0x0720, 0x0002, 0x0000, 0x0322, 0x0003, 0x006b, 0x073e, - 0x0758, 0x076c, 0x0002, 0x0000, 0x032a, 0x0003, 0x006b, 0x078a, - 0x07a6, 0x07b5, 0x0002, 0x0000, 0x0332, 0x0003, 0x006b, 0x07d5, - 0x07f1, 0x0807, 0x0002, 0x0000, 0x033a, 0x0003, 0x006b, 0x0827, - 0x083b, 0x0849, 0x0002, 0x0000, 0x0342, 0x0003, 0x006b, 0x0861, - 0x0877, 0x0887, 0x0001, 0x0349, 0x0001, 0x006b, 0x08a1, 0x0003, - 0x0350, 0x0000, 0x0353, 0x0001, 0x006b, 0x08b3, 0x0002, 0x0356, - // Entry 4A500 - 4A53F - 0x035a, 0x0002, 0x006b, 0x08bc, 0x08bc, 0x0002, 0x006b, 0x08d8, - 0x08d8, 0x0003, 0x0362, 0x0000, 0x0365, 0x0001, 0x006b, 0x08f0, - 0x0002, 0x0368, 0x036c, 0x0002, 0x006b, 0x08fd, 0x08fd, 0x0002, - 0x006b, 0x091d, 0x091d, 0x0003, 0x0374, 0x0377, 0x037b, 0x0001, - 0x006b, 0x0939, 0x0002, 0x006b, 0xffff, 0x0944, 0x0002, 0x037e, - 0x0382, 0x0002, 0x006b, 0x094f, 0x094f, 0x0002, 0x006b, 0x096d, - 0x096d, 0x0001, 0x0388, 0x0001, 0x006b, 0x0987, 0x0004, 0x0390, - 0x0395, 0x039a, 0x03a5, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, - // Entry 4A540 - 4A57F - 0x0003, 0x006b, 0x0996, 0x09a5, 0x09c5, 0x0002, 0x0000, 0x039d, - 0x0002, 0x0000, 0x03a0, 0x0003, 0x006b, 0xffff, 0x09e5, 0x0a0a, - 0x0002, 0x0000, 0x03a8, 0x0003, 0x0442, 0x04d8, 0x03ac, 0x0094, - 0x006b, 0x0a2f, 0x0a4f, 0x0a78, 0x0a9d, 0x0ae9, 0x0b65, 0x0bd3, - 0x0c43, 0x0d0f, 0x0dcd, 0x0e8e, 0xffff, 0xffff, 0x0f4c, 0x0fc8, - 0x1049, 0x10d9, 0x1151, 0x11de, 0x129a, 0x135f, 0x1402, 0x149a, - 0x1508, 0x1568, 0x15be, 0x15d4, 0x160a, 0x165c, 0x16a8, 0x1700, - 0x1732, 0x1798, 0x17f0, 0x185c, 0x18b2, 0x18db, 0x191e, 0x1993, - // Entry 4A580 - 4A5BF - 0x1a10, 0x1a5a, 0x1a70, 0x1a96, 0x1ada, 0x1b36, 0x1b79, 0x1c0a, - 0xffff, 0x1c93, 0x1d26, 0x1db2, 0x1df4, 0x1e1f, 0x1e62, 0x1e80, - 0x1eb2, 0x1efc, 0x1f27, 0x1f6e, 0x200f, 0x2083, 0x209b, 0x20d6, - 0x2158, 0x21ba, 0x21fc, 0x221a, 0x223b, 0x225a, 0x2289, 0x22b4, - 0x22f3, 0x2357, 0x23bd, 0x2427, 0xffff, 0x2479, 0x24a6, 0x24e9, - 0x2537, 0x256f, 0x25c9, 0x25eb, 0x262d, 0x2689, 0x26c8, 0x2716, - 0x2732, 0x2750, 0x276c, 0x27b3, 0x2805, 0xffff, 0xffff, 0x283e, - 0x28ae, 0x28f8, 0x2910, 0x2926, 0x2963, 0x29f0, 0x2a80, 0x2aea, - // Entry 4A5C0 - 4A5FF - 0x2afe, 0x2b53, 0x2bef, 0x2c61, 0x2cbf, 0x2d11, 0x2d27, 0x2d6f, - 0x2dd5, 0x2e33, 0x2e85, 0x2edf, 0x2f63, 0x2f7d, 0xffff, 0x2f95, - 0x2faf, 0x2fe1, 0xffff, 0x3045, 0x3093, 0x30bc, 0x30d8, 0x3103, - 0x312e, 0x3148, 0x315e, 0x318c, 0x31de, 0x31fe, 0x322e, 0x3274, - 0x32ac, 0x330e, 0x3340, 0x33ae, 0x3422, 0x3470, 0x34b0, 0x352c, - 0x3582, 0x359a, 0x35b9, 0x35fb, 0x3669, 0x0094, 0x006b, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0ac4, 0x0b4d, 0x0bb7, 0x0c25, 0x0cd9, - 0x0d9d, 0x0e4f, 0xffff, 0xffff, 0x0f2e, 0x0faa, 0x101e, 0x10b9, - // Entry 4A600 - 4A63F - 0x1133, 0x11af, 0x125e, 0x1334, 0x13d7, 0x147a, 0x14f4, 0x154a, - 0xffff, 0xffff, 0x15ee, 0xffff, 0x1689, 0xffff, 0x171a, 0x1784, - 0x17da, 0x183e, 0xffff, 0xffff, 0x1902, 0x1970, 0x19fc, 0xffff, - 0xffff, 0xffff, 0x1ab9, 0xffff, 0x1b50, 0x1be5, 0xffff, 0x1c6e, - 0x1cf7, 0x1d9e, 0xffff, 0xffff, 0xffff, 0xffff, 0x1e9a, 0xffff, - 0xffff, 0x1f41, 0x1fe2, 0xffff, 0xffff, 0x20b3, 0x213e, 0x21a6, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x22df, 0x233d, - 0x23a5, 0x240f, 0xffff, 0xffff, 0xffff, 0x24d3, 0xffff, 0x254f, - // Entry 4A640 - 4A67F - 0xffff, 0xffff, 0x2610, 0xffff, 0x26ae, 0xffff, 0xffff, 0xffff, - 0xffff, 0x2797, 0xffff, 0xffff, 0xffff, 0x281f, 0x2896, 0xffff, - 0xffff, 0xffff, 0x293c, 0x29cb, 0x2a5c, 0xffff, 0xffff, 0x2b23, - 0x2bcd, 0x2c4d, 0x2ca3, 0xffff, 0xffff, 0x2d53, 0x2dc1, 0x2e17, - 0xffff, 0x2eae, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2fc7, - 0xffff, 0x302f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3174, 0xffff, 0xffff, 0x3218, 0xffff, 0x3288, 0xffff, - 0x3326, 0x338e, 0x3408, 0xffff, 0x348e, 0x350e, 0xffff, 0xffff, - // Entry 4A680 - 4A6BF - 0xffff, 0x35e3, 0x3645, 0x0094, 0x006b, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0b1f, 0x0b8e, 0x0c00, 0x0c8e, 0x0d56, 0x0e0e, 0x0ede, - 0xffff, 0xffff, 0x0f7b, 0x0ff7, 0x1085, 0x110a, 0x1180, 0x121e, - 0x12e7, 0x139b, 0x143e, 0x14cb, 0x152d, 0x1597, 0xffff, 0xffff, - 0x1637, 0xffff, 0x16d8, 0xffff, 0x175b, 0x17bd, 0x1817, 0x188b, - 0xffff, 0xffff, 0x194b, 0x19c7, 0x1a35, 0xffff, 0xffff, 0xffff, - 0x1b0c, 0xffff, 0x1bb3, 0x1c40, 0xffff, 0x1cc9, 0x1d66, 0x1dd7, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1edb, 0xffff, 0xffff, 0x1fac, - // Entry 4A6C0 - 4A6FF - 0x204d, 0xffff, 0xffff, 0x210a, 0x2183, 0x21df, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2318, 0x2382, 0x23e6, 0x2450, - 0xffff, 0xffff, 0xffff, 0x2510, 0xffff, 0x25a0, 0xffff, 0xffff, - 0x265b, 0xffff, 0x26f3, 0xffff, 0xffff, 0xffff, 0xffff, 0x27e0, - 0xffff, 0xffff, 0xffff, 0x286e, 0x28d7, 0xffff, 0xffff, 0xffff, - 0x299b, 0x2a26, 0x2ab5, 0xffff, 0xffff, 0x2b94, 0x2c22, 0x2c86, - 0x2cec, 0xffff, 0xffff, 0x2d9c, 0x2dfa, 0x2e60, 0xffff, 0x2f21, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x300c, 0xffff, 0x306c, - // Entry 4A700 - 4A73F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x31b5, - 0xffff, 0xffff, 0x3255, 0xffff, 0x32e1, 0xffff, 0x336b, 0x33df, - 0x344d, 0xffff, 0x34e3, 0x355b, 0xffff, 0xffff, 0xffff, 0x3624, - 0x369e, 0x0002, 0x0003, 0x0075, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, 0x0023, - 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, 0x0001, - 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0002, 0x04f7, 0x0008, - // Entry 4A740 - 4A77F - 0x002f, 0x0044, 0x0000, 0x0000, 0x0000, 0x0053, 0x0064, 0x0000, - 0x0001, 0x0031, 0x0003, 0x0000, 0x0000, 0x0035, 0x000d, 0x006c, - 0xffff, 0x0000, 0x0011, 0x001e, 0x0025, 0x002c, 0x0033, 0x0035, - 0x0037, 0x003e, 0x0045, 0x004c, 0x0063, 0x0001, 0x0046, 0x0003, - 0x0000, 0x0000, 0x004a, 0x0007, 0x006c, 0x0074, 0x007e, 0x0088, - 0x0092, 0x009c, 0x00a9, 0x00b6, 0x0004, 0x0061, 0x005b, 0x0058, - 0x005e, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, - 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x0072, 0x006c, - // Entry 4A780 - 4A7BF - 0x0069, 0x006f, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, 0x0462, - 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, 0x0000, - 0x0000, 0x0000, 0x00b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00b8, 0x0000, 0x0000, 0x00bd, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00cd, - 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 4A7C0 - 4A7FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d2, 0x0000, 0x0000, - 0x00d7, 0x0000, 0x0000, 0x00dc, 0x0001, 0x00b5, 0x0001, 0x006c, - 0x00c0, 0x0001, 0x00ba, 0x0001, 0x006c, 0x00c7, 0x0001, 0x00bf, - 0x0001, 0x006c, 0x00ce, 0x0002, 0x00c5, 0x00c8, 0x0001, 0x006c, - 0x00d8, 0x0003, 0x006c, 0x00df, 0x00e6, 0x00ed, 0x0001, 0x00cf, - 0x0001, 0x006c, 0x00f4, 0x0001, 0x00d4, 0x0001, 0x006c, 0x0105, - 0x0001, 0x00d9, 0x0001, 0x006c, 0x010c, 0x0001, 0x00de, 0x0001, - 0x006c, 0x0113, 0x0002, 0x0003, 0x0075, 0x0008, 0x0000, 0x0000, - // Entry 4A800 - 4A83F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, 0x0004, - 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, 0x0625, 0x0001, - 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0010, 0x02f4, - 0x0008, 0x002f, 0x0044, 0x0000, 0x0000, 0x0000, 0x0053, 0x0064, - 0x0000, 0x0001, 0x0031, 0x0003, 0x0000, 0x0000, 0x0035, 0x000d, - 0x006c, 0xffff, 0x0120, 0x012d, 0x0137, 0x013d, 0x0142, 0x0033, - 0x0035, 0x0146, 0x014d, 0x0152, 0x0157, 0x0169, 0x0001, 0x0046, - // Entry 4A840 - 4A87F - 0x0003, 0x0000, 0x0000, 0x004a, 0x0007, 0x006c, 0x0176, 0x017d, - 0x0188, 0x018f, 0x0195, 0x019c, 0x01a3, 0x0004, 0x0061, 0x005b, - 0x0058, 0x005e, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, - 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x0072, - 0x006c, 0x0069, 0x006f, 0x0001, 0x0002, 0x0453, 0x0001, 0x0002, - 0x0462, 0x0001, 0x0002, 0x046e, 0x0001, 0x0002, 0x0478, 0x003d, - 0x0000, 0x0000, 0x0000, 0x00b3, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x00b8, 0x0000, 0x0000, 0x00bd, 0x0000, 0x0000, 0x0000, - // Entry 4A880 - 4A8BF - 0x0000, 0x0000, 0x00c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d2, 0x0000, - 0x0000, 0x00d7, 0x0000, 0x0000, 0x00dc, 0x0001, 0x00b5, 0x0001, - 0x006c, 0x01ab, 0x0001, 0x00ba, 0x0001, 0x000a, 0x0184, 0x0001, - 0x00bf, 0x0001, 0x005e, 0x01f4, 0x0002, 0x00c5, 0x00c8, 0x0001, - // Entry 4A8C0 - 4A8FF - 0x006c, 0x01b0, 0x0003, 0x000a, 0x0197, 0x5dee, 0x5df5, 0x0001, - 0x00cf, 0x0001, 0x006c, 0x01b5, 0x0001, 0x00d4, 0x0001, 0x006c, - 0x01c4, 0x0001, 0x00d9, 0x0001, 0x006c, 0x01c9, 0x0001, 0x00de, - 0x0001, 0x006c, 0x01ce, 0x0003, 0x0004, 0x053a, 0x08e4, 0x0012, - 0x0017, 0x002e, 0x0151, 0x0000, 0x019d, 0x0000, 0x01e9, 0x0214, - 0x0432, 0x046d, 0x04b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x04c2, - 0x04da, 0x0522, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, - 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, - // Entry 4A900 - 4A93F - 0x0000, 0x0000, 0x0003, 0x0000, 0x0000, 0x002b, 0x0001, 0x006c, - 0x01d8, 0x000a, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0140, - 0x0000, 0x0000, 0x009e, 0x00b1, 0x0002, 0x003c, 0x006d, 0x0003, - 0x0040, 0x004f, 0x005e, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, - 0x41c4, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - // Entry 4A940 - 4A97F - 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, - 0x0003, 0x0071, 0x0080, 0x008f, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, - 0x41be, 0x41c1, 0x41c4, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, - 0x41c4, 0x0003, 0x00a2, 0x00ad, 0x00a7, 0x0003, 0x006c, 0xffff, - // Entry 4A980 - 4A9BF - 0xffff, 0x01f9, 0x0004, 0x006c, 0xffff, 0xffff, 0xffff, 0x01f9, - 0x0002, 0x006c, 0xffff, 0x01f9, 0x0006, 0x00b8, 0x0000, 0x0000, - 0x00cb, 0x00ea, 0x012d, 0x0001, 0x00ba, 0x0001, 0x00bc, 0x000d, - 0x006c, 0xffff, 0x0205, 0x0209, 0x020f, 0x0215, 0x021a, 0x0220, - 0x0225, 0x022b, 0x0230, 0x0236, 0x023c, 0x0243, 0x0001, 0x00cd, - 0x0001, 0x00cf, 0x0019, 0x006c, 0xffff, 0x0249, 0x0255, 0x0260, - 0x026c, 0x0278, 0x0283, 0x028d, 0x0298, 0x02a4, 0x02b1, 0x02bb, - 0x02c8, 0x02d5, 0x02df, 0x02ea, 0x02f6, 0x0300, 0x030a, 0x0319, - // Entry 4A9C0 - 4A9FF - 0x0326, 0x0335, 0x0344, 0x0350, 0x035c, 0x0001, 0x00ec, 0x0001, - 0x00ee, 0x003d, 0x006c, 0xffff, 0x0368, 0x0372, 0x037d, 0x0389, - 0x0394, 0x03a0, 0x03aa, 0x03b5, 0x03bf, 0x03cb, 0x03d6, 0x03e3, - 0x03ee, 0x03f8, 0x0404, 0x0410, 0x041a, 0x0425, 0x042f, 0x043b, - 0x0445, 0x0451, 0x045c, 0x0469, 0x0475, 0x047f, 0x048a, 0x0495, - 0x049f, 0x04ab, 0x04b5, 0x04c1, 0x04cb, 0x04d7, 0x04e3, 0x04f0, - 0x04fb, 0x0504, 0x050f, 0x051b, 0x0525, 0x0531, 0x053b, 0x0547, - 0x0552, 0x055e, 0x0569, 0x0575, 0x0580, 0x058a, 0x0595, 0x05a1, - // Entry 4AA00 - 4AA3F - 0x05ab, 0x05b7, 0x05c2, 0x05ce, 0x05d8, 0x05e3, 0x05ee, 0x05fb, - 0x0001, 0x012f, 0x0001, 0x0131, 0x000d, 0x006c, 0xffff, 0x0205, - 0x0209, 0x020f, 0x0215, 0x021a, 0x0220, 0x0225, 0x022b, 0x0230, - 0x0236, 0x023c, 0x0243, 0x0004, 0x014e, 0x0148, 0x0145, 0x014b, - 0x0001, 0x006c, 0x0606, 0x0001, 0x006c, 0x0625, 0x0001, 0x006c, - 0x0644, 0x0001, 0x0002, 0x0860, 0x0001, 0x0153, 0x0002, 0x0156, - 0x0179, 0x0002, 0x0159, 0x0169, 0x000e, 0x0000, 0xffff, 0x03ce, - 0x41c7, 0x41cc, 0x3ebd, 0x41d2, 0x391a, 0x41d7, 0x03f9, 0x392a, - // Entry 4AA40 - 4AA7F - 0x41e0, 0x41e6, 0x41eb, 0x041c, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, - 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x0003, 0x017d, 0x0000, 0x018d, - 0x000e, 0x0000, 0xffff, 0x03ce, 0x41c7, 0x41cc, 0x3ebd, 0x41d2, - 0x391a, 0x41d7, 0x03f9, 0x392a, 0x41e0, 0x41e6, 0x41eb, 0x041c, - 0x000e, 0x0000, 0xffff, 0x03ce, 0x41c7, 0x41cc, 0x3ebd, 0x41d2, - 0x391a, 0x41d7, 0x03f9, 0x392a, 0x41e0, 0x41e6, 0x41eb, 0x041c, - 0x0001, 0x019f, 0x0002, 0x01a2, 0x01c5, 0x0002, 0x01a5, 0x01b5, - // Entry 4AA80 - 4AABF - 0x000e, 0x0000, 0xffff, 0x042f, 0x0438, 0x41f4, 0x3938, 0x41fa, - 0x0450, 0x0458, 0x0460, 0x393f, 0x046e, 0x3946, 0x0479, 0x0481, - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, - 0x0003, 0x01c9, 0x0000, 0x01d9, 0x000e, 0x0000, 0xffff, 0x042f, - 0x0438, 0x41f4, 0x3938, 0x41fa, 0x0450, 0x0458, 0x0460, 0x393f, - 0x046e, 0x3946, 0x0479, 0x0481, 0x000e, 0x0000, 0xffff, 0x042f, - 0x0438, 0x41f4, 0x3938, 0x41fa, 0x0450, 0x0458, 0x0460, 0x393f, - // Entry 4AAC0 - 4AAFF - 0x046e, 0x3946, 0x0479, 0x0481, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01f2, 0x0000, 0x0203, 0x0004, 0x0200, 0x01fa, - 0x01f7, 0x01fd, 0x0001, 0x006c, 0x064c, 0x0001, 0x006c, 0x0674, - 0x0001, 0x0005, 0x01ac, 0x0001, 0x0002, 0x04f7, 0x0004, 0x0211, - 0x020b, 0x0208, 0x020e, 0x0001, 0x006c, 0x0695, 0x0001, 0x006c, - 0x0695, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x021d, 0x0282, 0x02d9, 0x030e, 0x03df, 0x03ff, 0x0410, 0x0421, - 0x0002, 0x0220, 0x0251, 0x0003, 0x0224, 0x0233, 0x0242, 0x000d, - // Entry 4AB00 - 4AB3F - 0x006c, 0xffff, 0x06a4, 0x06aa, 0x06b0, 0x06b6, 0x06bc, 0x06c2, - 0x06c8, 0x06ce, 0x06d4, 0x06da, 0x06e1, 0x06e8, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, - 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006c, 0xffff, - 0x06ef, 0x06f8, 0x0701, 0x070a, 0x0713, 0x071c, 0x0725, 0x072e, - 0x0737, 0x0740, 0x074a, 0x0754, 0x0003, 0x0255, 0x0264, 0x0273, - 0x000d, 0x006c, 0xffff, 0x075e, 0x0764, 0x076a, 0x0770, 0x0776, - 0x077c, 0x0782, 0x0788, 0x078e, 0x0794, 0x079b, 0x07a2, 0x000d, - // Entry 4AB40 - 4AB7F - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, - 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006c, - 0xffff, 0x07a9, 0x07b2, 0x07bb, 0x07c4, 0x07cd, 0x07d6, 0x07df, - 0x07e8, 0x07f1, 0x07fa, 0x0804, 0x080e, 0x0002, 0x0285, 0x02af, - 0x0005, 0x028b, 0x0294, 0x02a6, 0x0000, 0x029d, 0x0007, 0x006c, - 0x0818, 0x081b, 0x0820, 0x0825, 0x082a, 0x082f, 0x0834, 0x0007, - 0x006c, 0x0818, 0x0839, 0x083c, 0x083f, 0x0842, 0x0845, 0x0848, - 0x0007, 0x006c, 0x0818, 0x0839, 0x083c, 0x083f, 0x0842, 0x0845, - // Entry 4AB80 - 4ABBF - 0x0848, 0x0007, 0x006c, 0x084b, 0x0858, 0x0862, 0x086b, 0x0875, - 0x0880, 0x088b, 0x0005, 0x02b5, 0x02be, 0x02d0, 0x0000, 0x02c7, - 0x0007, 0x006c, 0x0818, 0x081b, 0x0820, 0x0825, 0x082a, 0x082f, - 0x0834, 0x0007, 0x006c, 0x0818, 0x0839, 0x083c, 0x083f, 0x0842, - 0x0845, 0x0848, 0x0007, 0x006c, 0x0818, 0x0839, 0x083c, 0x083f, - 0x0842, 0x0845, 0x0848, 0x0007, 0x006c, 0x084b, 0x0858, 0x0862, - 0x086b, 0x0875, 0x0880, 0x088b, 0x0002, 0x02dc, 0x02f5, 0x0003, - 0x02e0, 0x02e7, 0x02ee, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, - // Entry 4ABC0 - 4ABFF - 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x006c, 0xffff, 0x0897, 0x089e, 0x08a5, 0x08ac, - 0x0003, 0x02f9, 0x0300, 0x0307, 0x0005, 0x0000, 0xffff, 0x04e3, - 0x3830, 0x3833, 0x3836, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x006c, 0xffff, 0x08b3, 0x08ba, 0x08c1, - 0x08c8, 0x0002, 0x0311, 0x0378, 0x0003, 0x0315, 0x0336, 0x0357, - 0x0008, 0x0321, 0x0327, 0x031e, 0x032a, 0x032d, 0x0330, 0x0333, - 0x0324, 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, 0x1380, 0x0001, - // Entry 4AC00 - 4AC3F - 0x006c, 0x08db, 0x0001, 0x006c, 0x08de, 0x0001, 0x006c, 0x08e1, - 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, 0x006c, - 0x08f5, 0x0008, 0x0342, 0x0348, 0x033f, 0x034b, 0x034e, 0x0351, - 0x0354, 0x0345, 0x0001, 0x006c, 0x08cf, 0x0001, 0x0000, 0x2002, - 0x0001, 0x0043, 0x054d, 0x0001, 0x0057, 0x0df6, 0x0001, 0x006c, - 0x08e1, 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, - 0x006c, 0x08f5, 0x0008, 0x0363, 0x0369, 0x0360, 0x036c, 0x036f, - 0x0372, 0x0375, 0x0366, 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, - // Entry 4AC40 - 4AC7F - 0x1380, 0x0001, 0x006c, 0x08db, 0x0001, 0x006c, 0x08de, 0x0001, - 0x006c, 0x08e1, 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, - 0x0001, 0x006c, 0x08f5, 0x0003, 0x037c, 0x039d, 0x03be, 0x0008, - 0x0388, 0x038e, 0x0385, 0x0391, 0x0394, 0x0397, 0x039a, 0x038b, - 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, 0x1380, 0x0001, 0x006c, - 0x08db, 0x0001, 0x006c, 0x08de, 0x0001, 0x006c, 0x08e1, 0x0001, - 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, 0x006c, 0x08f5, - 0x0008, 0x03a9, 0x03af, 0x03a6, 0x03b2, 0x03b5, 0x03b8, 0x03bb, - // Entry 4AC80 - 4ACBF - 0x03ac, 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, 0x1380, 0x0001, - 0x006c, 0x08fb, 0x0001, 0x006c, 0x08de, 0x0001, 0x006c, 0x08e1, - 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, 0x006c, - 0x08f5, 0x0008, 0x03ca, 0x03d0, 0x03c7, 0x03d3, 0x03d6, 0x03d9, - 0x03dc, 0x03cd, 0x0001, 0x006c, 0x08cf, 0x0001, 0x001c, 0x1380, - 0x0001, 0x006c, 0x08fb, 0x0001, 0x006c, 0x08de, 0x0001, 0x006c, - 0x08e1, 0x0001, 0x006c, 0x08e7, 0x0001, 0x006c, 0x08ef, 0x0001, - 0x006c, 0x08f5, 0x0003, 0x03ee, 0x03f9, 0x03e3, 0x0002, 0x03e6, - // Entry 4ACC0 - 4ACFF - 0x03ea, 0x0002, 0x006c, 0x0901, 0x090d, 0x0002, 0x006c, 0xffff, - 0x0818, 0x0002, 0x03f1, 0x03f5, 0x0002, 0x006c, 0x0901, 0x090d, - 0x0002, 0x006c, 0xffff, 0x0818, 0x0001, 0x03fb, 0x0002, 0x006c, - 0x0914, 0x090d, 0x0004, 0x040d, 0x0407, 0x0404, 0x040a, 0x0001, - 0x0005, 0x04d2, 0x0001, 0x0005, 0x04e2, 0x0001, 0x0002, 0x01f2, - 0x0001, 0x0002, 0x0860, 0x0004, 0x041e, 0x0418, 0x0415, 0x041b, - 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, - 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, 0x042f, 0x0429, 0x0426, - // Entry 4AD00 - 4AD3F - 0x042c, 0x0001, 0x0019, 0x0347, 0x0001, 0x0019, 0x0347, 0x0001, - 0x0029, 0x029e, 0x0001, 0x0029, 0x029e, 0x0001, 0x0434, 0x0002, - 0x0437, 0x0449, 0x0001, 0x0439, 0x000e, 0x0000, 0x4217, 0x054c, - 0x0553, 0x41fe, 0x4205, 0x0568, 0x420b, 0x4212, 0x421f, 0x4225, - 0x422a, 0x4230, 0x4236, 0x4239, 0x0003, 0x044d, 0x0000, 0x045d, - 0x000e, 0x0000, 0x4217, 0x054c, 0x0553, 0x41fe, 0x4205, 0x0568, - 0x420b, 0x4212, 0x421f, 0x4225, 0x422a, 0x4230, 0x4236, 0x4239, - 0x000e, 0x0000, 0x4217, 0x054c, 0x0553, 0x41fe, 0x4205, 0x0568, - // Entry 4AD40 - 4AD7F - 0x420b, 0x4212, 0x421f, 0x4225, 0x422a, 0x4230, 0x4236, 0x4239, - 0x0001, 0x046f, 0x0002, 0x0472, 0x0493, 0x0002, 0x0475, 0x0484, - 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, 0x423e, - 0x05cb, 0x4246, 0x424d, 0x05e1, 0x05ec, 0x05f2, 0x05f8, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, - 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x0003, 0x0497, - 0x0000, 0x04a6, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, - 0x05bc, 0x423e, 0x05cb, 0x4246, 0x424d, 0x05e1, 0x05ec, 0x05f2, - // Entry 4AD80 - 4ADBF - 0x05f8, 0x000d, 0x0000, 0xffff, 0x05a2, 0x05aa, 0x05b3, 0x05bc, - 0x423e, 0x05cb, 0x4246, 0x424d, 0x05e1, 0x05ec, 0x05f2, 0x05f8, - 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x04bb, 0x0001, 0x04bd, - 0x0001, 0x04bf, 0x0001, 0x0000, 0x06c8, 0x0006, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x04c9, 0x0004, 0x04d7, 0x04d1, 0x04ce, - 0x04d4, 0x0001, 0x006c, 0x01d8, 0x0001, 0x006c, 0x0674, 0x0001, - 0x0005, 0x01ac, 0x0001, 0x0010, 0x02f4, 0x0001, 0x04dc, 0x0002, - 0x04df, 0x0500, 0x0002, 0x04e2, 0x04f1, 0x000d, 0x0000, 0xffff, - // Entry 4ADC0 - 4ADFF - 0x19c9, 0x19d3, 0x19df, 0x4255, 0x4259, 0x19f2, 0x4260, 0x4265, - 0x426a, 0x426f, 0x409e, 0x40a5, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, - 0x41be, 0x41c1, 0x41c4, 0x0003, 0x0504, 0x0000, 0x0513, 0x000d, - 0x0000, 0xffff, 0x19c9, 0x19d3, 0x19df, 0x4255, 0x4259, 0x19f2, - 0x4260, 0x4265, 0x426a, 0x426f, 0x409e, 0x40a5, 0x000d, 0x0000, - 0xffff, 0x19c9, 0x19d3, 0x19df, 0x4255, 0x4259, 0x19f2, 0x4260, - 0x4265, 0x426a, 0x426f, 0x409e, 0x40a5, 0x0008, 0x0000, 0x0000, - // Entry 4AE00 - 4AE3F - 0x0000, 0x0000, 0x052b, 0x0533, 0x0000, 0x9006, 0x0001, 0x052d, - 0x0001, 0x052f, 0x0002, 0x006c, 0x091b, 0x092a, 0x0003, 0x0000, - 0x0000, 0x0537, 0x0001, 0x006c, 0x01d8, 0x0040, 0x057b, 0x0000, - 0x0000, 0x0580, 0x0595, 0x05aa, 0x05bf, 0x05d4, 0x05e9, 0x05fe, - 0x0613, 0x0628, 0x063d, 0x0656, 0x066f, 0x0000, 0x0000, 0x0000, - 0x0688, 0x069f, 0x06af, 0x0000, 0x0000, 0x0000, 0x06bf, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x06c4, 0x06d6, 0x06e8, 0x06fa, - 0x070c, 0x071e, 0x0730, 0x0742, 0x0754, 0x0766, 0x0778, 0x078a, - // Entry 4AE40 - 4AE7F - 0x079c, 0x07ae, 0x07c0, 0x07d2, 0x07e4, 0x07f6, 0x0808, 0x081a, - 0x082c, 0x0000, 0x083e, 0x0000, 0x0843, 0x0857, 0x0867, 0x0877, - 0x088b, 0x089b, 0x08ab, 0x08bf, 0x08cf, 0x08df, 0x0001, 0x057d, - 0x0001, 0x006c, 0x0931, 0x0003, 0x0584, 0x0587, 0x058c, 0x0001, - 0x006c, 0x093f, 0x0003, 0x006c, 0x0944, 0x0950, 0x0959, 0x0002, - 0x058f, 0x0592, 0x0001, 0x006c, 0x0962, 0x0001, 0x006c, 0x0975, - 0x0003, 0x0599, 0x059c, 0x05a1, 0x0001, 0x006c, 0x093f, 0x0003, - 0x006c, 0x0944, 0x0950, 0x0959, 0x0002, 0x05a4, 0x05a7, 0x0001, - // Entry 4AE80 - 4AEBF - 0x006c, 0x0962, 0x0001, 0x006c, 0x0975, 0x0003, 0x05ae, 0x05b1, - 0x05b6, 0x0001, 0x006c, 0x093f, 0x0003, 0x006c, 0x0944, 0x0950, - 0x0959, 0x0002, 0x05b9, 0x05bc, 0x0001, 0x006c, 0x0962, 0x0001, - 0x006c, 0x0975, 0x0003, 0x05c3, 0x05c6, 0x05cb, 0x0001, 0x006c, - 0x0987, 0x0003, 0x006c, 0x098c, 0x099a, 0x09a4, 0x0002, 0x05ce, - 0x05d1, 0x0001, 0x006c, 0x09ad, 0x0001, 0x006c, 0x09c0, 0x0003, - 0x05d8, 0x05db, 0x05e0, 0x0001, 0x006c, 0x0987, 0x0003, 0x006c, - 0x098c, 0x099a, 0x09a4, 0x0002, 0x05e3, 0x05e6, 0x0001, 0x006c, - // Entry 4AEC0 - 4AEFF - 0x09ad, 0x0001, 0x006c, 0x09c0, 0x0003, 0x05ed, 0x05f0, 0x05f5, - 0x0001, 0x006c, 0x0987, 0x0003, 0x006c, 0x098c, 0x099a, 0x09a4, - 0x0002, 0x05f8, 0x05fb, 0x0001, 0x006c, 0x09ad, 0x0001, 0x006c, - 0x09c0, 0x0003, 0x0602, 0x0605, 0x060a, 0x0001, 0x006c, 0x09d2, - 0x0003, 0x006c, 0x09d9, 0x09e9, 0x09f5, 0x0002, 0x060d, 0x0610, - 0x0001, 0x006c, 0x0a00, 0x0001, 0x006c, 0x0a15, 0x0003, 0x0617, - 0x061a, 0x061f, 0x0001, 0x006c, 0x09d2, 0x0003, 0x006c, 0x09d9, - 0x09e9, 0x09f5, 0x0002, 0x0622, 0x0625, 0x0001, 0x006c, 0x0a00, - // Entry 4AF00 - 4AF3F - 0x0001, 0x006c, 0x0a15, 0x0003, 0x062c, 0x062f, 0x0634, 0x0001, - 0x006c, 0x09d2, 0x0003, 0x006c, 0x09d9, 0x09e9, 0x09f5, 0x0002, - 0x0637, 0x063a, 0x0001, 0x006c, 0x0a00, 0x0001, 0x006c, 0x0a15, - 0x0004, 0x0642, 0x0645, 0x064a, 0x0653, 0x0001, 0x006c, 0x0a29, - 0x0003, 0x006c, 0x0a30, 0x0a40, 0x0a4c, 0x0002, 0x064d, 0x0650, - 0x0001, 0x006c, 0x0a57, 0x0001, 0x006c, 0x0a6c, 0x0001, 0x006c, - 0x0a80, 0x0004, 0x065b, 0x065e, 0x0663, 0x066c, 0x0001, 0x006c, - 0x0a29, 0x0003, 0x006c, 0x0a30, 0x0a40, 0x0a4c, 0x0002, 0x0666, - // Entry 4AF40 - 4AF7F - 0x0669, 0x0001, 0x006c, 0x0a57, 0x0001, 0x006c, 0x0a6c, 0x0001, - 0x006c, 0x0a80, 0x0004, 0x0674, 0x0677, 0x067c, 0x0685, 0x0001, - 0x006c, 0x0a29, 0x0003, 0x006c, 0x0a30, 0x0a40, 0x0a4c, 0x0002, - 0x067f, 0x0682, 0x0001, 0x006c, 0x0a57, 0x0001, 0x006c, 0x0a6c, - 0x0001, 0x006c, 0x0a80, 0x0003, 0x068c, 0x068f, 0x0696, 0x0001, - 0x006c, 0x0a8b, 0x0005, 0x006c, 0x0a9a, 0x0aa3, 0x0aac, 0x0a91, - 0x0ab6, 0x0002, 0x0699, 0x069c, 0x0001, 0x006c, 0x0ac0, 0x0001, - 0x006c, 0x0ad4, 0x0003, 0x06a3, 0x0000, 0x06a6, 0x0001, 0x006c, - // Entry 4AF80 - 4AFBF - 0x0a8b, 0x0002, 0x06a9, 0x06ac, 0x0001, 0x006c, 0x0ac0, 0x0001, - 0x006c, 0x0ad4, 0x0003, 0x06b3, 0x0000, 0x06b6, 0x0001, 0x006c, - 0x0a8b, 0x0002, 0x06b9, 0x06bc, 0x0001, 0x006c, 0x0ac0, 0x0001, - 0x006c, 0x0ad4, 0x0001, 0x06c1, 0x0001, 0x006c, 0x0ae7, 0x0003, - 0x0000, 0x06c8, 0x06cd, 0x0003, 0x006c, 0x0afa, 0x0b17, 0x0b30, - 0x0002, 0x06d0, 0x06d3, 0x0001, 0x006c, 0x0b48, 0x0001, 0x006c, - 0x0b63, 0x0003, 0x0000, 0x06da, 0x06df, 0x0003, 0x006c, 0x0afa, - 0x0b17, 0x0b30, 0x0002, 0x06e2, 0x06e5, 0x0001, 0x006c, 0x0b48, - // Entry 4AFC0 - 4AFFF - 0x0001, 0x006c, 0x0b63, 0x0003, 0x0000, 0x06ec, 0x06f1, 0x0003, - 0x006c, 0x0afa, 0x0b17, 0x0b30, 0x0002, 0x06f4, 0x06f7, 0x0001, - 0x006c, 0x0b48, 0x0001, 0x006c, 0x0b63, 0x0003, 0x0000, 0x06fe, - 0x0703, 0x0003, 0x006c, 0x0b7d, 0x0b97, 0x0bad, 0x0002, 0x0706, - 0x0709, 0x0001, 0x006c, 0x0bc2, 0x0001, 0x006c, 0x0bda, 0x0003, - 0x0000, 0x0710, 0x0715, 0x0003, 0x006c, 0x0b7d, 0x0b97, 0x0bad, - 0x0002, 0x0718, 0x071b, 0x0001, 0x006c, 0x0bc2, 0x0001, 0x006c, - 0x0bda, 0x0003, 0x0000, 0x0722, 0x0727, 0x0003, 0x006c, 0x0b7d, - // Entry 4B000 - 4B03F - 0x0b97, 0x0bad, 0x0002, 0x072a, 0x072d, 0x0001, 0x006c, 0x0bc2, - 0x0001, 0x006c, 0x0bda, 0x0003, 0x0000, 0x0734, 0x0739, 0x0003, - 0x006c, 0x0bf1, 0x0c0a, 0x0c1f, 0x0002, 0x073c, 0x073f, 0x0001, - 0x006c, 0x0c33, 0x0001, 0x006c, 0x0c4a, 0x0003, 0x0000, 0x0746, - 0x074b, 0x0003, 0x006c, 0x0bf1, 0x0c0a, 0x0c1f, 0x0002, 0x074e, - 0x0751, 0x0001, 0x006c, 0x0c33, 0x0001, 0x006c, 0x0c4a, 0x0003, - 0x0000, 0x0758, 0x075d, 0x0003, 0x006c, 0x0bf1, 0x0c0a, 0x0c1f, - 0x0002, 0x0760, 0x0763, 0x0001, 0x006c, 0x0c33, 0x0001, 0x006c, - // Entry 4B040 - 4B07F - 0x0c4a, 0x0003, 0x0000, 0x076a, 0x076f, 0x0003, 0x006c, 0x0c60, - 0x0c7a, 0x0c90, 0x0002, 0x0772, 0x0775, 0x0001, 0x006c, 0x0ca5, - 0x0001, 0x006c, 0x0cbd, 0x0003, 0x0000, 0x077c, 0x0781, 0x0003, - 0x006c, 0x0c60, 0x0c7a, 0x0c90, 0x0002, 0x0784, 0x0787, 0x0001, - 0x006c, 0x0ca5, 0x0001, 0x006c, 0x0cbd, 0x0003, 0x0000, 0x078e, - 0x0793, 0x0003, 0x006c, 0x0c60, 0x0c7a, 0x0c90, 0x0002, 0x0796, - 0x0799, 0x0001, 0x006c, 0x0ca5, 0x0001, 0x006c, 0x0cbd, 0x0003, - 0x0000, 0x07a0, 0x07a5, 0x0003, 0x006c, 0x0cd4, 0x0cef, 0x0d06, - // Entry 4B080 - 4B0BF - 0x0002, 0x07a8, 0x07ab, 0x0001, 0x006c, 0x0d1c, 0x0001, 0x006c, - 0x0d35, 0x0003, 0x0000, 0x07b2, 0x07b7, 0x0003, 0x006c, 0x0cd4, - 0x0cef, 0x0d06, 0x0002, 0x07ba, 0x07bd, 0x0001, 0x006c, 0x0d1c, - 0x0001, 0x006c, 0x0d35, 0x0003, 0x0000, 0x07c4, 0x07c9, 0x0003, - 0x006c, 0x0cd4, 0x0cef, 0x0d06, 0x0002, 0x07cc, 0x07cf, 0x0001, - 0x006c, 0x0d1c, 0x0001, 0x006c, 0x0d35, 0x0003, 0x0000, 0x07d6, - 0x07db, 0x0003, 0x006c, 0x0d4d, 0x0d68, 0x0d7f, 0x0002, 0x07de, - 0x07e1, 0x0001, 0x006c, 0x0d95, 0x0001, 0x006c, 0x0dae, 0x0003, - // Entry 4B0C0 - 4B0FF - 0x0000, 0x07e8, 0x07ed, 0x0003, 0x006c, 0x0d4d, 0x0d68, 0x0d7f, - 0x0002, 0x07f0, 0x07f3, 0x0001, 0x006c, 0x0d95, 0x0001, 0x006c, - 0x0dae, 0x0003, 0x0000, 0x07fa, 0x07ff, 0x0003, 0x006c, 0x0d4d, - 0x0d68, 0x0d7f, 0x0002, 0x0802, 0x0805, 0x0001, 0x006c, 0x0d95, - 0x0001, 0x006c, 0x0dae, 0x0003, 0x0000, 0x080c, 0x0811, 0x0003, - 0x006c, 0x0dc6, 0x0de2, 0x0dfa, 0x0002, 0x0814, 0x0817, 0x0001, - 0x006c, 0x0e11, 0x0001, 0x006c, 0x0e2b, 0x0003, 0x0000, 0x081e, - 0x0823, 0x0003, 0x006c, 0x0dc6, 0x0de2, 0x0dfa, 0x0002, 0x0826, - // Entry 4B100 - 4B13F - 0x0829, 0x0001, 0x006c, 0x0e11, 0x0001, 0x006c, 0x0e2b, 0x0003, - 0x0000, 0x0830, 0x0835, 0x0003, 0x006c, 0x0dc6, 0x0de2, 0x0dfa, - 0x0002, 0x0838, 0x083b, 0x0001, 0x006c, 0x0e11, 0x0001, 0x006c, - 0x0e2b, 0x0001, 0x0840, 0x0001, 0x006c, 0x0e44, 0x0003, 0x0847, - 0x084a, 0x084e, 0x0001, 0x006c, 0x0e4a, 0x0002, 0x006c, 0xffff, - 0x0e50, 0x0002, 0x0851, 0x0854, 0x0001, 0x006c, 0x0e5b, 0x0001, - 0x006c, 0x0e6f, 0x0003, 0x085b, 0x0000, 0x085e, 0x0001, 0x006c, - 0x0e4a, 0x0002, 0x0861, 0x0864, 0x0001, 0x006c, 0x0e5b, 0x0001, - // Entry 4B140 - 4B17F - 0x006c, 0x0e6f, 0x0003, 0x086b, 0x0000, 0x086e, 0x0001, 0x006c, - 0x0e4a, 0x0002, 0x0871, 0x0874, 0x0001, 0x006c, 0x0e5b, 0x0001, - 0x006c, 0x0e6f, 0x0003, 0x087b, 0x087e, 0x0882, 0x0001, 0x006c, - 0x0e82, 0x0002, 0x006c, 0xffff, 0x0e88, 0x0002, 0x0885, 0x0888, - 0x0001, 0x006c, 0x0e93, 0x0001, 0x006c, 0x0ea7, 0x0003, 0x088f, - 0x0000, 0x0892, 0x0001, 0x006c, 0x0e82, 0x0002, 0x0895, 0x0898, - 0x0001, 0x006c, 0x0e93, 0x0001, 0x006c, 0x0ea7, 0x0003, 0x089f, - 0x0000, 0x08a2, 0x0001, 0x006c, 0x0e82, 0x0002, 0x08a5, 0x08a8, - // Entry 4B180 - 4B1BF - 0x0001, 0x006c, 0x0e93, 0x0001, 0x006c, 0x0ea7, 0x0003, 0x08af, - 0x08b2, 0x08b6, 0x0001, 0x006c, 0x0eba, 0x0002, 0x006c, 0xffff, - 0x0ec0, 0x0002, 0x08b9, 0x08bc, 0x0001, 0x006c, 0x0ecb, 0x0001, - 0x006c, 0x0edf, 0x0003, 0x08c3, 0x0000, 0x08c6, 0x0001, 0x006c, - 0x0eba, 0x0002, 0x08c9, 0x08cc, 0x0001, 0x006c, 0x0ecb, 0x0001, - 0x006c, 0x0edf, 0x0003, 0x08d3, 0x0000, 0x08d6, 0x0001, 0x006c, - 0x0eba, 0x0002, 0x08d9, 0x08dc, 0x0001, 0x006c, 0x0ecb, 0x0001, - 0x006c, 0x0edf, 0x0001, 0x08e1, 0x0001, 0x006c, 0x0ef2, 0x0004, - // Entry 4B1C0 - 4B1FF - 0x08e9, 0x08ee, 0x08f3, 0x0902, 0x0003, 0x0000, 0x1dc7, 0x40b8, - 0x40b4, 0x0003, 0x006c, 0x0efd, 0x0f07, 0x0f1a, 0x0002, 0x0000, - 0x08f6, 0x0003, 0x0000, 0x08fd, 0x08fa, 0x0001, 0x006c, 0x0f2c, - 0x0003, 0x006c, 0xffff, 0x0f4b, 0x0f5e, 0x0002, 0x0000, 0x0905, - 0x0003, 0x0909, 0x0a49, 0x09a9, 0x009e, 0x006c, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0fee, 0x102c, 0x109c, 0x10d4, 0x111e, 0x116b, - 0x11b2, 0x1211, 0x1249, 0x12e8, 0x1329, 0x136a, 0x13cf, 0x140a, - 0x1469, 0x14d7, 0x1554, 0x15c5, 0x1630, 0x1674, 0x16ac, 0xffff, - // Entry 4B200 - 4B23F - 0xffff, 0x170b, 0xffff, 0x1761, 0xffff, 0x17b4, 0x17ef, 0x1824, - 0x186e, 0xffff, 0xffff, 0x18e3, 0x1921, 0x1983, 0xffff, 0xffff, - 0xffff, 0x19ed, 0xffff, 0x1a57, 0x1a98, 0xffff, 0x1afa, 0x1b38, - 0x1ba0, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c31, 0xffff, 0xffff, - 0x1ca1, 0x1d0c, 0xffff, 0xffff, 0x1dac, 0x1dff, 0x1e49, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f19, 0x1f4b, 0x1f86, - 0x1fbe, 0x2008, 0xffff, 0xffff, 0x20b2, 0xffff, 0x2106, 0xffff, - 0xffff, 0x2182, 0xffff, 0x2212, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4B240 - 4B27F - 0x2298, 0xffff, 0x22e6, 0x233f, 0x23b3, 0x23f7, 0xffff, 0xffff, - 0xffff, 0x245e, 0x24ab, 0x24f2, 0xffff, 0xffff, 0x255c, 0x25dd, - 0x2624, 0x2656, 0xffff, 0xffff, 0x26b7, 0x26f5, 0x2727, 0xffff, - 0x2784, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2880, 0x28be, - 0x28f6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x29a3, 0xffff, 0xffff, 0x2a09, 0xffff, 0x2a4a, 0xffff, 0x2aa1, - 0x2adc, 0x2b20, 0xffff, 0x2b6b, 0x2bb2, 0xffff, 0xffff, 0xffff, - 0x2c2a, 0x2c65, 0xffff, 0xffff, 0x0f73, 0x1064, 0x127b, 0x12b0, - // Entry 4B280 - 4B2BF - 0xffff, 0xffff, 0x21c3, 0x2823, 0x009e, 0x006c, 0x0fa5, 0x0fb7, - 0x0fc7, 0x0fd8, 0x0ffd, 0x1039, 0x10a9, 0x10e7, 0x1132, 0x117d, - 0x11cc, 0x121e, 0x1254, 0x12f8, 0x1339, 0x1386, 0x13dd, 0x1424, - 0x1488, 0x14fb, 0x1574, 0x15e3, 0x1641, 0x1681, 0x16bd, 0x16f0, - 0x16fd, 0x171a, 0x1749, 0x1772, 0x17a5, 0x17c2, 0x17fb, 0x1837, - 0x187f, 0x18b2, 0x18c9, 0x18f2, 0x193a, 0x198e, 0x19b5, 0x19c1, - 0x19da, 0x1a06, 0x1a49, 0x1a67, 0x1aa9, 0x1adc, 0x1b09, 0x1b55, - 0x1bab, 0x1bd2, 0x1bed, 0x1c13, 0x1c23, 0x1c3e, 0x1c69, 0x1c85, - // Entry 4B2C0 - 4B2FF - 0x1cbf, 0x1d28, 0x1d84, 0x1d9f, 0x1dc2, 0x1e12, 0x1e54, 0x1e7b, - 0x1e94, 0x1ead, 0x1ec2, 0x1edf, 0x1efd, 0x1f24, 0x1f59, 0x1f93, - 0x1fd1, 0x2027, 0x2076, 0x2095, 0x20c4, 0x20f9, 0x2118, 0x214d, - 0x2169, 0x2192, 0x21fb, 0x2220, 0x224d, 0x225c, 0x226b, 0x227b, - 0x22a8, 0x22d9, 0x22fe, 0x2360, 0x23c4, 0x2407, 0x2438, 0x2446, - 0x2452, 0x2472, 0x24bd, 0x2505, 0x253c, 0x2547, 0x2576, 0x25ef, - 0x262f, 0x2665, 0x2694, 0x26a0, 0x26c6, 0x2700, 0x2737, 0x2768, - 0x27a2, 0x27f1, 0x2800, 0x280d, 0x2864, 0x2872, 0x288f, 0x28cb, - // Entry 4B300 - 4B33F - 0x2902, 0x292c, 0x293d, 0x294d, 0x2969, 0x297b, 0x298a, 0x2996, - 0x29b5, 0x29ea, 0x29fb, 0x2a15, 0x2a3e, 0x2a5d, 0x2a94, 0x2aaf, - 0x2aed, 0x2b2e, 0x2b5b, 0x2b7d, 0x2bc2, 0x2bf3, 0x2c00, 0x2c12, - 0x2c38, 0x2c79, 0x1d71, 0x25bb, 0x0f7e, 0x1071, 0x1287, 0x12bd, - 0xffff, 0x215d, 0x21d0, 0x2833, 0x009e, 0x006c, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1014, 0x104e, 0x10be, 0x1102, 0x114e, 0x1197, - 0x11ee, 0x1233, 0x1267, 0x1310, 0x1351, 0x13aa, 0x13f3, 0x1446, - 0x14af, 0x1527, 0x159c, 0x1609, 0x165a, 0x1696, 0x16d6, 0xffff, - // Entry 4B340 - 4B37F - 0xffff, 0x1731, 0xffff, 0x178b, 0xffff, 0x17d8, 0x180f, 0x1852, - 0x1898, 0xffff, 0xffff, 0x1909, 0x195b, 0x19a1, 0xffff, 0xffff, - 0xffff, 0x1a27, 0xffff, 0x1a7f, 0x1ac2, 0xffff, 0x1b20, 0x1b7a, - 0x1bbe, 0xffff, 0xffff, 0xffff, 0xffff, 0x1c53, 0xffff, 0xffff, - 0x1ce5, 0x1d4c, 0xffff, 0xffff, 0x1de0, 0x1e2d, 0x1e67, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1f37, 0x1f6f, 0x1fa8, - 0x1fec, 0x204e, 0xffff, 0xffff, 0x20de, 0xffff, 0x2132, 0xffff, - 0xffff, 0x21aa, 0xffff, 0x2236, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4B380 - 4B3BF - 0x22c0, 0xffff, 0x231e, 0x2389, 0x23dd, 0x241f, 0xffff, 0xffff, - 0xffff, 0x248e, 0x24d7, 0x2520, 0xffff, 0xffff, 0x2598, 0x2609, - 0x2642, 0x267c, 0xffff, 0xffff, 0x26dd, 0x2713, 0x274f, 0xffff, - 0x27c8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28a6, 0x28e0, - 0x2916, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x29cf, 0xffff, 0xffff, 0x2a29, 0xffff, 0x2a78, 0xffff, 0x2ac5, - 0x2b06, 0x2b44, 0xffff, 0x2b97, 0x2bda, 0xffff, 0xffff, 0xffff, - 0x2c4e, 0x2c95, 0xffff, 0xffff, 0x0f91, 0x1086, 0x129b, 0x12d2, - // Entry 4B3C0 - 4B3FF - 0xffff, 0xffff, 0x21e5, 0x284b, 0x0002, 0x0003, 0x0116, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0024, - 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0004, - 0x0021, 0x001b, 0x0018, 0x001e, 0x0001, 0x006d, 0x0000, 0x0001, - 0x0000, 0x049a, 0x0001, 0x006d, 0x0017, 0x0001, 0x0000, 0x04af, - 0x0007, 0x002c, 0x0091, 0x00c9, 0x0000, 0x00e4, 0x00f4, 0x0105, - 0x0002, 0x002f, 0x0060, 0x0003, 0x0033, 0x0042, 0x0051, 0x000d, - 0x0007, 0xffff, 0x0035, 0x242c, 0x2430, 0x2435, 0x23c7, 0x2439, - // Entry 4B400 - 4B43F - 0x243d, 0x2441, 0x2445, 0x2449, 0x244d, 0x23d7, 0x000d, 0x0017, - 0xffff, 0x29c1, 0x29f2, 0x29f4, 0x2a0d, 0x29f4, 0x29c1, 0x29c1, - 0x29d9, 0x2a09, 0x2a0b, 0x29fc, 0x29fe, 0x000d, 0x006d, 0xffff, - 0x0022, 0x0028, 0x002e, 0x0035, 0x003c, 0x0042, 0x0048, 0x004e, - 0x0055, 0x005b, 0x0061, 0x0067, 0x0003, 0x0064, 0x0073, 0x0082, - 0x000d, 0x0007, 0xffff, 0x0035, 0x242c, 0x2430, 0x2435, 0x23c7, - 0x2439, 0x243d, 0x2441, 0x2445, 0x2451, 0x244d, 0x23d7, 0x000d, - 0x0017, 0xffff, 0x29c1, 0x29f2, 0x29f4, 0x2a0d, 0x29f4, 0x29c1, - // Entry 4B440 - 4B47F - 0x29c1, 0x29d9, 0x2a09, 0x2a0b, 0x29fc, 0x29fe, 0x000d, 0x006d, - 0xffff, 0x0022, 0x0028, 0x002e, 0x0035, 0x003c, 0x0042, 0x0048, - 0x004e, 0x0055, 0x005b, 0x0061, 0x0067, 0x0002, 0x0094, 0x00aa, - 0x0003, 0x0098, 0x0000, 0x00a1, 0x0007, 0x0024, 0x003a, 0x26ef, - 0x26f3, 0x26f7, 0x26fb, 0x2700, 0x2704, 0x0007, 0x006d, 0x006d, - 0x0073, 0x0079, 0x007f, 0x0085, 0x008c, 0x0093, 0x0003, 0x00ae, - 0x00b7, 0x00c0, 0x0007, 0x0016, 0x2b50, 0x2c4c, 0x2b66, 0x2b9a, - 0x2c4f, 0x2c53, 0x2c56, 0x0007, 0x0017, 0x2a09, 0x29f4, 0x2a0b, - // Entry 4B480 - 4B4BF - 0x2a0f, 0x29fe, 0x29f2, 0x29db, 0x0007, 0x006d, 0x006d, 0x0073, - 0x0079, 0x007f, 0x0085, 0x008c, 0x0093, 0x0001, 0x00cb, 0x0003, - 0x00cf, 0x00d6, 0x00dd, 0x0005, 0x006d, 0xffff, 0x009a, 0x009e, - 0x00a2, 0x00a6, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x006d, 0xffff, 0x00aa, 0x00b9, 0x00c8, 0x00d7, - 0x0003, 0x00ee, 0x0000, 0x00e8, 0x0001, 0x00ea, 0x0002, 0x006d, - 0x00e6, 0x00f0, 0x0001, 0x00f0, 0x0002, 0x006d, 0x00e6, 0x00f0, - 0x0004, 0x0102, 0x00fc, 0x00f9, 0x00ff, 0x0001, 0x006d, 0x00fa, - // Entry 4B4C0 - 4B4FF - 0x0001, 0x0000, 0x050b, 0x0001, 0x006d, 0x010f, 0x0001, 0x0000, - 0x051c, 0x0004, 0x0113, 0x010d, 0x010a, 0x0110, 0x0001, 0x0000, - 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, - 0x0000, 0x0546, 0x0040, 0x0157, 0x0000, 0x0000, 0x015c, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0167, 0x0000, 0x0000, 0x0172, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x017d, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x018a, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 4B500 - 4B53F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x018f, - 0x0000, 0x0194, 0x0000, 0x0000, 0x0199, 0x0000, 0x0000, 0x019e, - 0x0000, 0x0000, 0x01a3, 0x0001, 0x0159, 0x0001, 0x0016, 0x0478, - 0x0002, 0x015f, 0x0162, 0x0001, 0x006d, 0x0118, 0x0003, 0x006d, - 0x011c, 0x0123, 0x0129, 0x0002, 0x016a, 0x016d, 0x0001, 0x006d, - 0x012f, 0x0003, 0x006d, 0x0133, 0x013a, 0x0140, 0x0002, 0x0175, - 0x0178, 0x0001, 0x006d, 0x0146, 0x0003, 0x006d, 0x014a, 0x0151, - // Entry 4B540 - 4B57F - 0x0157, 0x0002, 0x0180, 0x0183, 0x0001, 0x0016, 0x06ae, 0x0005, - 0x006d, 0x0163, 0x016a, 0x0170, 0x015d, 0x0176, 0x0001, 0x018c, - 0x0001, 0x006d, 0x017c, 0x0001, 0x0191, 0x0001, 0x006d, 0x0184, - 0x0001, 0x0196, 0x0001, 0x006d, 0x018c, 0x0001, 0x019b, 0x0001, - 0x0010, 0x0b77, 0x0001, 0x01a0, 0x0001, 0x006d, 0x0191, 0x0001, - 0x01a5, 0x0001, 0x006d, 0x0197, 0x0002, 0x0003, 0x00e9, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - // Entry 4B580 - 4B5BF - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, - 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x22d0, - 0x24e8, 0x2386, 0x224e, 0x22d4, 0x22d8, 0x24ec, 0x24f0, 0x22e0, - 0x21e2, 0x000d, 0x0005, 0xffff, 0x0666, 0x066e, 0x2441, 0x22ea, - 0x2386, 0x22f2, 0x22f8, 0x22ff, 0x2447, 0x23ab, 0x2450, 0x23ba, - // Entry 4B5C0 - 4B5FF - 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, - 0x29f4, 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, - 0x29fc, 0x29fe, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x0005, 0x06b6, 0x24f4, 0x24f8, 0x24fc, 0x2500, - 0x2504, 0x2508, 0x0007, 0x0036, 0x0313, 0x031d, 0x67eb, 0x032f, - 0x67f3, 0x67fc, 0x6803, 0x0002, 0x0000, 0x0082, 0x0007, 0x0017, - 0x29cf, 0x29cf, 0x29cf, 0x29cf, 0x29f6, 0x2a00, 0x29cf, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0005, 0xffff, - // Entry 4B600 - 4B63F - 0x070e, 0x0711, 0x0714, 0x0717, 0x0005, 0x0005, 0xffff, 0x071a, - 0x0721, 0x0728, 0x072f, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, - 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x0036, 0x0351, 0x0001, - 0x0036, 0x0357, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x0036, 0x0351, - 0x0001, 0x0036, 0x0357, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, - 0x00bd, 0x0002, 0x0036, 0x0361, 0x0371, 0x0001, 0x00c3, 0x0002, - 0x0016, 0x01fb, 0x01fe, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - // Entry 4B640 - 4B67F - 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, - 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, - 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, - 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 4B680 - 4B6BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0149, 0x0000, 0x014e, 0x0000, 0x0000, 0x0153, - 0x0000, 0x0000, 0x0158, 0x0000, 0x0000, 0x015d, 0x0001, 0x012c, - 0x0001, 0x0036, 0x0381, 0x0001, 0x0131, 0x0001, 0x0036, 0x0387, - 0x0001, 0x0136, 0x0001, 0x0016, 0x0207, 0x0001, 0x013b, 0x0001, - 0x0036, 0x038c, 0x0002, 0x0141, 0x0144, 0x0001, 0x0036, 0x0393, - 0x0003, 0x0036, 0x0399, 0x039e, 0x03a2, 0x0001, 0x014b, 0x0001, - 0x0036, 0x03a8, 0x0001, 0x0150, 0x0001, 0x0056, 0x1c05, 0x0001, - // Entry 4B6C0 - 4B6FF - 0x0155, 0x0001, 0x0036, 0x03b5, 0x0001, 0x015a, 0x0001, 0x0009, - 0x030c, 0x0001, 0x015f, 0x0001, 0x0036, 0x03bd, 0x0003, 0x0004, - 0x0117, 0x01f1, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000d, 0x0024, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0016, 0x0000, 0x0000, 0x0004, 0x0000, 0x001e, 0x001b, - 0x0021, 0x0001, 0x0013, 0x06bb, 0x0001, 0x0013, 0x0477, 0x0001, - 0x0015, 0x0000, 0x0008, 0x002d, 0x0092, 0x00d3, 0x0000, 0x0101, - 0x0109, 0x0000, 0x0000, 0x0002, 0x0030, 0x0061, 0x0003, 0x0034, - // Entry 4B700 - 4B73F - 0x0043, 0x0052, 0x000d, 0x0033, 0xffff, 0x0000, 0x2af1, 0x2af5, - 0x2afa, 0x2afe, 0x2b02, 0x2b07, 0x2b0b, 0x2b10, 0x2b14, 0x2b19, - 0x2b1d, 0x000d, 0x0017, 0xffff, 0x29cf, 0x2a11, 0x29f4, 0x29f6, - 0x29f4, 0x29b5, 0x2a11, 0x2a13, 0x2a11, 0x29d5, 0x29d5, 0x2a05, - 0x000d, 0x006d, 0xffff, 0x019b, 0x01a2, 0x01a9, 0x01b0, 0x01b8, - 0x01be, 0x01c7, 0x01ce, 0x01d7, 0x01e5, 0x01ef, 0x01fc, 0x0003, - 0x0065, 0x0074, 0x0083, 0x000d, 0x0033, 0xffff, 0x0000, 0x2af1, - 0x2af5, 0x2afa, 0x2afe, 0x2b02, 0x2b07, 0x2b0b, 0x2b10, 0x2b14, - // Entry 4B740 - 4B77F - 0x2b19, 0x2b1d, 0x000d, 0x0017, 0xffff, 0x29cf, 0x2a11, 0x29f4, - 0x29f6, 0x29f4, 0x29b5, 0x2a11, 0x2a13, 0x2a11, 0x29d5, 0x29d5, - 0x2a05, 0x000d, 0x006d, 0xffff, 0x019b, 0x01a2, 0x01a9, 0x01b0, - 0x01b8, 0x01be, 0x01c7, 0x01ce, 0x01d7, 0x01e5, 0x01ef, 0x01fc, - 0x0002, 0x0095, 0x00b4, 0x0003, 0x0099, 0x00a2, 0x00ab, 0x0007, - 0x0063, 0x1eaf, 0x2001, 0x2006, 0x200b, 0x200f, 0x2014, 0x2018, - 0x0007, 0x0017, 0x2a09, 0x29f4, 0x29db, 0x29f4, 0x29f2, 0x29f2, - 0x2a09, 0x0007, 0x006d, 0x020a, 0x0212, 0x021a, 0x0222, 0x022b, - // Entry 4B780 - 4B7BF - 0x0234, 0x023b, 0x0003, 0x00b8, 0x00c1, 0x00ca, 0x0007, 0x0063, - 0x1eaf, 0x2001, 0x2006, 0x200b, 0x200f, 0x2014, 0x2018, 0x0007, - 0x0017, 0x2a09, 0x29f4, 0x29db, 0x29f4, 0x29f2, 0x29f2, 0x2a09, - 0x0007, 0x006d, 0x020a, 0x0212, 0x021a, 0x0222, 0x022b, 0x0234, - 0x023b, 0x0002, 0x00d6, 0x00ef, 0x0003, 0x00da, 0x00e1, 0x00e8, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0053, - 0xffff, 0x01c1, 0x01cc, 0x01d7, 0x01e2, 0x0003, 0x00f3, 0x0000, - // Entry 4B7C0 - 4B7FF - 0x00fa, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, - 0x0005, 0x0053, 0xffff, 0x01c1, 0x01cc, 0x01d7, 0x01e2, 0x0001, - 0x0103, 0x0001, 0x0105, 0x0002, 0x0016, 0x0413, 0x2c5a, 0x0004, - 0x0000, 0x0111, 0x010e, 0x0114, 0x0001, 0x0016, 0x0460, 0x0001, - 0x0013, 0x06b1, 0x0001, 0x0015, 0x0207, 0x0040, 0x0158, 0x0000, - 0x0000, 0x015d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016f, - 0x0000, 0x0000, 0x0181, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0193, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01ac, 0x0000, - // Entry 4B800 - 4B83F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x01b1, 0x0000, 0x01b6, 0x0000, 0x0000, 0x01c8, - 0x0000, 0x0000, 0x01da, 0x0000, 0x0000, 0x01ec, 0x0001, 0x015a, - 0x0001, 0x006d, 0x0244, 0x0003, 0x0161, 0x0000, 0x0164, 0x0001, - 0x006d, 0x024b, 0x0002, 0x0167, 0x016b, 0x0002, 0x006d, 0x0250, - 0x0250, 0x0002, 0x006d, 0x0268, 0x025b, 0x0003, 0x0173, 0x0000, - // Entry 4B840 - 4B87F - 0x0176, 0x0001, 0x006d, 0x0275, 0x0002, 0x0179, 0x017d, 0x0002, - 0x006d, 0x027c, 0x027c, 0x0002, 0x006d, 0x0289, 0x0289, 0x0003, - 0x0185, 0x0000, 0x0188, 0x0001, 0x006d, 0x0298, 0x0002, 0x018b, - 0x018f, 0x0002, 0x006d, 0x02aa, 0x029e, 0x0002, 0x006d, 0x02c5, - 0x02b7, 0x0003, 0x0197, 0x019a, 0x01a1, 0x0001, 0x0016, 0x06ae, - 0x0005, 0x006d, 0x02df, 0x02e7, 0x02ed, 0x02d4, 0x02f3, 0x0002, - 0x01a4, 0x01a8, 0x0002, 0x006d, 0x0307, 0x02fd, 0x0002, 0x006d, - 0x031e, 0x0312, 0x0001, 0x01ae, 0x0001, 0x006d, 0x032b, 0x0001, - // Entry 4B880 - 4B8BF - 0x01b3, 0x0001, 0x0007, 0x07cc, 0x0003, 0x01ba, 0x0000, 0x01bd, - 0x0001, 0x002a, 0x038d, 0x0002, 0x01c0, 0x01c4, 0x0002, 0x006d, - 0x0340, 0x0334, 0x0002, 0x006d, 0x035b, 0x034d, 0x0003, 0x01cc, - 0x0000, 0x01cf, 0x0001, 0x006d, 0x036a, 0x0002, 0x01d2, 0x01d6, - 0x0002, 0x006d, 0x0382, 0x0374, 0x0002, 0x006d, 0x03a0, 0x0390, - 0x0003, 0x01de, 0x0000, 0x01e1, 0x0001, 0x006d, 0x03b0, 0x0002, - 0x01e4, 0x01e8, 0x0002, 0x006d, 0x03c5, 0x03b8, 0x0002, 0x006d, - 0x03e2, 0x03d3, 0x0001, 0x01ee, 0x0001, 0x006d, 0x03f2, 0x0004, - // Entry 4B8C0 - 4B8FF - 0x0000, 0x01f6, 0x0000, 0x01f9, 0x0001, 0x006d, 0x03fb, 0x0002, - 0x0299, 0x01fc, 0x0003, 0x0200, 0x0266, 0x0233, 0x0031, 0x006d, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0403, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x043e, 0x048e, 0xffff, - // Entry 4B900 - 4B93F - 0x04d8, 0x0031, 0x006d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0412, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x0454, 0x04a2, 0xffff, 0x04ed, 0x0031, 0x006d, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4B940 - 4B97F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0429, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0472, 0x04be, 0xffff, 0x050a, 0x0003, - 0x029d, 0x0303, 0x02d0, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4B980 - 4B9BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, 0x1bcf, 0x0031, 0x0016, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4B9C0 - 4B9FF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1b11, 0x1b65, 0xffff, - 0x1bcf, 0x0031, 0x0016, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4BA00 - 4BA3F - 0x1b15, 0x1b69, 0xffff, 0x1bd3, 0x0002, 0x0003, 0x00e9, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0005, - 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, - 0x0002, 0x04f7, 0x0008, 0x002f, 0x0066, 0x008b, 0x009f, 0x00b7, - 0x00c7, 0x00d8, 0x0000, 0x0002, 0x0032, 0x0054, 0x0003, 0x0036, - 0x0000, 0x0045, 0x000d, 0x0005, 0xffff, 0x0636, 0x22cc, 0x250c, - // Entry 4BA40 - 4BA7F - 0x2372, 0x2376, 0x237a, 0x22d4, 0x222e, 0x237e, 0x2382, 0x22e0, - 0x21e2, 0x000d, 0x0041, 0xffff, 0x0000, 0x000a, 0x0014, 0x001b, - 0x0021, 0x0027, 0x002d, 0x0035, 0x003d, 0x0048, 0x3990, 0x3998, - 0x0002, 0x0000, 0x0057, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, - 0x29f4, 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, - 0x29fc, 0x29fe, 0x0002, 0x0069, 0x007f, 0x0003, 0x006d, 0x0000, - 0x0076, 0x0007, 0x006d, 0x0525, 0x052a, 0x052f, 0x0534, 0x0539, - 0x053e, 0x0543, 0x0007, 0x006d, 0x0548, 0x0550, 0x0557, 0x0561, - // Entry 4BA80 - 4BABF - 0x056b, 0x0573, 0x057e, 0x0002, 0x0000, 0x0082, 0x0007, 0x0017, - 0x2a09, 0x29b5, 0x29b5, 0x2a09, 0x2a07, 0x2a07, 0x29f4, 0x0001, - 0x008d, 0x0003, 0x0091, 0x0000, 0x0098, 0x0005, 0x0000, 0xffff, - 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, 0x006d, 0xffff, 0x0589, - 0x05a3, 0x05c0, 0x05dd, 0x0001, 0x00a1, 0x0003, 0x00a5, 0x0000, - 0x00ae, 0x0002, 0x00a8, 0x00ab, 0x0001, 0x006d, 0x05f8, 0x0001, - 0x006d, 0x05ff, 0x0002, 0x00b1, 0x00b4, 0x0001, 0x006d, 0x05f8, - 0x0001, 0x006d, 0x05ff, 0x0003, 0x00c1, 0x0000, 0x00bb, 0x0001, - // Entry 4BAC0 - 4BAFF - 0x00bd, 0x0002, 0x006d, 0x0606, 0x061a, 0x0001, 0x00c3, 0x0002, - 0x006d, 0x062d, 0x0630, 0x0004, 0x00d5, 0x00cf, 0x00cc, 0x00d2, - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x0001, - 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, 0x00e6, 0x00e0, 0x00dd, - 0x00e3, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, 0x0532, 0x0001, - 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0040, 0x012a, 0x0000, - 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0134, - 0x0000, 0x0000, 0x0139, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 4BB00 - 4BB3F - 0x013e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0149, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x014e, 0x0000, 0x0153, 0x0000, 0x0000, 0x0158, - 0x0000, 0x0000, 0x015d, 0x0000, 0x0000, 0x0162, 0x0001, 0x012c, - 0x0001, 0x006d, 0x0633, 0x0001, 0x0131, 0x0001, 0x0012, 0x017b, - 0x0001, 0x0136, 0x0001, 0x0012, 0x0182, 0x0001, 0x013b, 0x0001, - // Entry 4BB40 - 4BB7F - 0x006d, 0x063c, 0x0002, 0x0141, 0x0144, 0x0001, 0x006d, 0x0645, - 0x0003, 0x006d, 0x064d, 0x0652, 0x0664, 0x0001, 0x014b, 0x0001, - 0x006d, 0x066a, 0x0001, 0x0150, 0x0001, 0x006d, 0x067e, 0x0001, - 0x0155, 0x0001, 0x006d, 0x068c, 0x0001, 0x015a, 0x0001, 0x0012, - 0x01e8, 0x0001, 0x015f, 0x0001, 0x006d, 0x0693, 0x0001, 0x0164, - 0x0001, 0x006d, 0x069f, 0x0002, 0x0003, 0x00d6, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, 0x0000, - // Entry 4BB80 - 4BBBF - 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, 0x1f7d, - 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, 0x0001, 0x0000, - 0x236f, 0x0008, 0x002f, 0x0053, 0x0078, 0x008c, 0x00a4, 0x00b4, - 0x00c5, 0x0000, 0x0001, 0x0031, 0x0003, 0x0035, 0x0000, 0x0044, - 0x000d, 0x006d, 0xffff, 0x06ab, 0x06af, 0x06b3, 0x06b7, 0x06bb, - 0x06bf, 0x06c3, 0x06c7, 0x06cb, 0x06cf, 0x06d4, 0x06d9, 0x000d, - 0x006d, 0xffff, 0x06de, 0x0700, 0x071e, 0x0740, 0x0758, 0x0773, - 0x077a, 0x0780, 0x0788, 0x0797, 0x07b9, 0x07c4, 0x0002, 0x0056, - // Entry 4BBC0 - 4BBFF - 0x006c, 0x0003, 0x005a, 0x0000, 0x0063, 0x0007, 0x006d, 0x07d0, - 0x07d3, 0x07d6, 0x07d9, 0x07dc, 0x07df, 0x07e2, 0x0007, 0x006d, - 0x07e5, 0x07f0, 0x07f8, 0x080a, 0x0819, 0x082e, 0x0836, 0x0002, - 0x0000, 0x006f, 0x0007, 0x0000, 0x2002, 0x3a8d, 0x3a8d, 0x22e1, - 0x3aa3, 0x2006, 0x2002, 0x0001, 0x007a, 0x0003, 0x007e, 0x0000, - 0x0085, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, - 0x0005, 0x006d, 0xffff, 0x083f, 0x084b, 0x0857, 0x0863, 0x0001, - 0x008e, 0x0003, 0x0092, 0x0000, 0x009b, 0x0002, 0x0095, 0x0098, - // Entry 4BC00 - 4BC3F - 0x0001, 0x006d, 0x086f, 0x0001, 0x006d, 0x087c, 0x0002, 0x009e, - 0x00a1, 0x0001, 0x006d, 0x086f, 0x0001, 0x006d, 0x087c, 0x0003, - 0x00ae, 0x0000, 0x00a8, 0x0001, 0x00aa, 0x0002, 0x006d, 0x0888, - 0x089c, 0x0001, 0x00b0, 0x0002, 0x003e, 0x0395, 0x20ea, 0x0004, - 0x00c2, 0x00bc, 0x00b9, 0x00bf, 0x0001, 0x0001, 0x1fa2, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x01fb, - 0x0004, 0x00d3, 0x00cd, 0x00ca, 0x00d0, 0x0001, 0x0000, 0x0524, - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - // Entry 4BC40 - 4BC7F - 0x0546, 0x0040, 0x0117, 0x0000, 0x0000, 0x011c, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0121, 0x0000, 0x0000, 0x0126, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0136, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013b, 0x0000, - 0x0140, 0x0000, 0x0000, 0x0145, 0x0000, 0x0000, 0x014a, 0x0000, - // Entry 4BC80 - 4BCBF - 0x0000, 0x014f, 0x0001, 0x0119, 0x0001, 0x006d, 0x08b3, 0x0001, - 0x011e, 0x0001, 0x006d, 0x08be, 0x0001, 0x0123, 0x0001, 0x006d, - 0x08c6, 0x0001, 0x0128, 0x0001, 0x006d, 0x07e5, 0x0002, 0x012e, - 0x0131, 0x0001, 0x006d, 0x08cc, 0x0003, 0x006d, 0x08d8, 0x08e0, - 0x08e7, 0x0001, 0x0138, 0x0001, 0x006d, 0x08f1, 0x0001, 0x013d, - 0x0001, 0x006d, 0x0908, 0x0001, 0x0142, 0x0001, 0x006d, 0x0921, - 0x0001, 0x0147, 0x0001, 0x006d, 0x092b, 0x0001, 0x014c, 0x0001, - 0x006d, 0x0932, 0x0001, 0x0151, 0x0001, 0x006d, 0x093a, 0x0003, - // Entry 4BCC0 - 4BCFF - 0x0004, 0x01a5, 0x02c9, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000e, 0x0039, 0x0119, 0x0008, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0017, 0x0000, 0x0028, 0x0004, 0x0025, - 0x001f, 0x001c, 0x0022, 0x0001, 0x002b, 0x0589, 0x0001, 0x002b, - 0x059c, 0x0001, 0x002b, 0x05a9, 0x0001, 0x001c, 0x14e1, 0x0004, - 0x0036, 0x0030, 0x002d, 0x0033, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0005, 0x0846, - 0x0008, 0x0042, 0x0089, 0x0000, 0x00ce, 0x0000, 0x00e6, 0x00f7, - // Entry 4BD00 - 4BD3F - 0x0108, 0x0002, 0x0045, 0x0067, 0x0003, 0x0049, 0x0000, 0x0058, - 0x000d, 0x006d, 0xffff, 0x0958, 0x0969, 0x097c, 0x0985, 0x0994, - 0x099b, 0x09a4, 0x09ad, 0x09bc, 0x09d1, 0x09e0, 0x09f3, 0x000d, - 0x006d, 0xffff, 0x0958, 0x0969, 0x097c, 0x0985, 0x0994, 0x099b, - 0x09a4, 0x09ad, 0x09bc, 0x09d1, 0x09e0, 0x09f3, 0x0003, 0x006b, - 0x0000, 0x007a, 0x000d, 0x006d, 0xffff, 0x0a04, 0x0a0d, 0x097c, - 0x0a16, 0x0994, 0x099b, 0x09a4, 0x0a21, 0x0a2a, 0x0a33, 0x0a3a, - 0x0a43, 0x000d, 0x006d, 0xffff, 0x0958, 0x0969, 0x097c, 0x0985, - // Entry 4BD40 - 4BD7F - 0x0994, 0x099b, 0x09a4, 0x09ad, 0x09bc, 0x09d1, 0x09e0, 0x09f3, - 0x0002, 0x008c, 0x00ad, 0x0005, 0x0092, 0x0000, 0x00a4, 0x0000, - 0x009b, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, 0x0a75, 0x0a84, - 0x0a97, 0x0aa8, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, 0x0a75, - 0x0a84, 0x0a97, 0x0aa8, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, - 0x0a75, 0x0a84, 0x0a97, 0x0aa8, 0x0005, 0x00b3, 0x0000, 0x00c5, - 0x0000, 0x00bc, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, 0x0a75, - 0x0a84, 0x0a97, 0x0aa8, 0x0007, 0x006d, 0x0a4a, 0x0a57, 0x0a66, - // Entry 4BD80 - 4BDBF - 0x0a75, 0x0a84, 0x0a97, 0x0aa8, 0x0007, 0x006d, 0x0a4a, 0x0a57, - 0x0a66, 0x0a75, 0x0a84, 0x0a97, 0x0aa8, 0x0001, 0x00d0, 0x0003, - 0x00d4, 0x0000, 0x00dd, 0x0002, 0x00d7, 0x00da, 0x0001, 0x006d, - 0x0aaf, 0x0001, 0x006d, 0x0ac6, 0x0002, 0x00e0, 0x00e3, 0x0001, - 0x006d, 0x0aaf, 0x0001, 0x006d, 0x0ac6, 0x0004, 0x00f4, 0x00ee, - 0x00eb, 0x00f1, 0x0001, 0x006d, 0x0adb, 0x0001, 0x006d, 0x0aee, - 0x0001, 0x006d, 0x0afb, 0x0001, 0x0014, 0x146e, 0x0004, 0x0105, - 0x00ff, 0x00fc, 0x0102, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - // Entry 4BDC0 - 4BDFF - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x0116, 0x0110, 0x010d, 0x0113, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0005, 0x0846, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0122, 0x0000, 0x0000, 0x0000, 0x018d, 0x0194, 0x0000, - 0x9006, 0x0002, 0x0125, 0x0159, 0x0003, 0x0129, 0x0139, 0x0149, - 0x000e, 0x002b, 0x08af, 0x0873, 0x0948, 0x0885, 0x088e, 0x0895, - 0x089c, 0x08a8, 0x08bb, 0x08c4, 0x08cd, 0x08d6, 0x08df, 0x08e4, - 0x000e, 0x006d, 0x0b2a, 0x0b07, 0x0b0c, 0x0b11, 0x0b16, 0x0b1b, - // Entry 4BE00 - 4BE3F - 0x0b20, 0x0b25, 0x0b2e, 0x0b33, 0x0b38, 0x0b3d, 0x0b42, 0x0b47, - 0x000e, 0x002b, 0x08af, 0x0873, 0x0948, 0x0885, 0x088e, 0x0895, - 0x089c, 0x08a8, 0x08bb, 0x08c4, 0x08cd, 0x08d6, 0x4212, 0x08e4, - 0x0003, 0x015d, 0x016d, 0x017d, 0x000e, 0x002b, 0x08af, 0x0873, - 0x087c, 0x0885, 0x088e, 0x0895, 0x089c, 0x08a8, 0x08bb, 0x08c4, - 0x08cd, 0x08d6, 0x4212, 0x08e4, 0x000e, 0x006d, 0x0b2a, 0x0b07, - 0x0b0c, 0x0b11, 0x0b16, 0x0b1b, 0x0b20, 0x0b25, 0x0b2e, 0x0b33, - 0x0b38, 0x0b3d, 0x0b4c, 0x0b47, 0x000e, 0x002b, 0x08af, 0x0873, - // Entry 4BE40 - 4BE7F - 0x087c, 0x0885, 0x088e, 0x0895, 0x089c, 0x08a8, 0x08bb, 0x08c4, - 0x08cd, 0x08d6, 0x4217, 0x08e4, 0x0001, 0x018f, 0x0001, 0x0191, - 0x0001, 0x002b, 0x095e, 0x0004, 0x01a2, 0x019c, 0x0199, 0x019f, - 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, 0x1fb0, 0x0001, 0x002b, - 0x085e, 0x0001, 0x002b, 0x085e, 0x0040, 0x01e6, 0x0000, 0x0000, - 0x01eb, 0x0202, 0x0214, 0x0000, 0x0000, 0x0000, 0x0226, 0x023d, - 0x024f, 0x0261, 0x026c, 0x0271, 0x0000, 0x0000, 0x0000, 0x0276, - 0x0288, 0x028d, 0x0000, 0x0000, 0x0000, 0x0292, 0x0000, 0x0000, - // Entry 4BE80 - 4BEBF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0297, 0x029c, 0x02a1, 0x02a6, 0x02ab, - 0x02b0, 0x02b5, 0x02ba, 0x02bf, 0x02c4, 0x0001, 0x01e8, 0x0001, - 0x006d, 0x0b51, 0x0003, 0x01ef, 0x01f2, 0x01f7, 0x0001, 0x006d, - 0x0b5e, 0x0003, 0x006d, 0x0b67, 0x0b7e, 0x0b8e, 0x0002, 0x01fa, - 0x01fe, 0x0002, 0x006d, 0x0ba5, 0x0ba5, 0x0002, 0x006d, 0x0bbd, - // Entry 4BEC0 - 4BEFF - 0x0bbd, 0x0003, 0x0206, 0x0000, 0x0209, 0x0001, 0x006d, 0x0b5e, - 0x0002, 0x020c, 0x0210, 0x0002, 0x006d, 0x0ba5, 0x0b8e, 0x0002, - 0x006d, 0x0bbd, 0x0bbd, 0x0003, 0x0218, 0x0000, 0x021b, 0x0001, - 0x006d, 0x0b5e, 0x0002, 0x021e, 0x0222, 0x0002, 0x006d, 0x0ba5, - 0x0ba5, 0x0002, 0x006d, 0x0bbd, 0x0bbd, 0x0003, 0x022a, 0x022d, - 0x0232, 0x0001, 0x006d, 0x0bd5, 0x0003, 0x006d, 0x0be2, 0x0c06, - 0x0c16, 0x0002, 0x0235, 0x0239, 0x0002, 0x006d, 0x0c4a, 0x0c32, - 0x0002, 0x006d, 0x0c7c, 0x0c64, 0x0003, 0x0241, 0x0000, 0x0244, - // Entry 4BF00 - 4BF3F - 0x0001, 0x006d, 0x0bd5, 0x0002, 0x0247, 0x024b, 0x0002, 0x006d, - 0x0c4a, 0x0c32, 0x0002, 0x006d, 0x0c7c, 0x0c64, 0x0003, 0x0253, - 0x0000, 0x0256, 0x0001, 0x006d, 0x0bd5, 0x0002, 0x0259, 0x025d, - 0x0002, 0x006d, 0x0c4a, 0x0c32, 0x0002, 0x006d, 0x0c7c, 0x0c64, - 0x0002, 0x0264, 0x0267, 0x0001, 0x006d, 0x0c96, 0x0003, 0x0000, - 0x1ae1, 0x1aeb, 0x4273, 0x0001, 0x026e, 0x0001, 0x006d, 0x0c96, - 0x0001, 0x0273, 0x0001, 0x006d, 0x0c96, 0x0003, 0x027a, 0x027d, - 0x0282, 0x0001, 0x006d, 0x0c9f, 0x0003, 0x006d, 0x0ca8, 0x0cb3, - // Entry 4BF40 - 4BF7F - 0x0cbe, 0x0001, 0x0284, 0x0002, 0x006d, 0x0ce8, 0x0cc9, 0x0001, - 0x028a, 0x0001, 0x006d, 0x0c9f, 0x0001, 0x028f, 0x0001, 0x006d, - 0x0c9f, 0x0001, 0x0294, 0x0001, 0x006d, 0x0d05, 0x0001, 0x0299, - 0x0001, 0x002b, 0x16bb, 0x0001, 0x029e, 0x0001, 0x002b, 0x16bb, - 0x0001, 0x02a3, 0x0001, 0x002b, 0x16bb, 0x0001, 0x02a8, 0x0001, - 0x006d, 0x0d25, 0x0001, 0x02ad, 0x0001, 0x006d, 0x0d25, 0x0001, - 0x02b2, 0x0001, 0x006d, 0x0d25, 0x0001, 0x02b7, 0x0001, 0x006d, - 0x0d30, 0x0001, 0x02bc, 0x0001, 0x006d, 0x0d30, 0x0001, 0x02c1, - // Entry 4BF80 - 4BFBF - 0x0001, 0x006d, 0x0d30, 0x0001, 0x02c6, 0x0001, 0x006d, 0x0d3f, - 0x0004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0003, 0x019c, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - 0x0026, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, - 0x0000, 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, - 0x0005, 0x0625, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0002, 0x04f7, 0x0008, 0x002f, 0x0094, 0x00d9, 0x010e, - 0x014f, 0x0169, 0x017a, 0x018b, 0x0002, 0x0032, 0x0063, 0x0003, - // Entry 4BFC0 - 4BFFF - 0x0036, 0x0045, 0x0054, 0x000d, 0x006d, 0xffff, 0x0d50, 0x0d5f, - 0x0d68, 0x0d75, 0x0d7c, 0x0d86, 0x0d8e, 0x0d98, 0x0d9f, 0x0da5, - 0x0db1, 0x0db8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, - 0x41c4, 0x000d, 0x006d, 0xffff, 0x0dc4, 0x0dda, 0x0dea, 0x0dfe, - 0x0e0c, 0x0e1d, 0x0e2c, 0x0e3d, 0x0e4b, 0x0e58, 0x0e6b, 0x0e79, - 0x0003, 0x0067, 0x0076, 0x0085, 0x000d, 0x006d, 0xffff, 0x0d50, - 0x0d5f, 0x0d68, 0x0d75, 0x0d7c, 0x0d86, 0x0d8e, 0x0d98, 0x0d9f, - // Entry 4C000 - 4C03F - 0x0da5, 0x0db1, 0x0db8, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x0dc4, 0x0dda, 0x0dea, - 0x0dfe, 0x0e0c, 0x0e1d, 0x0e2c, 0x0e3d, 0x0e4b, 0x0e58, 0x0e6b, - 0x0e79, 0x0002, 0x0097, 0x00b8, 0x0005, 0x009d, 0x0000, 0x00af, - 0x0000, 0x00a6, 0x0007, 0x006d, 0x0e8c, 0x0e94, 0x0e99, 0x0ea5, - 0x0eb2, 0x0ec0, 0x0ec7, 0x0007, 0x006d, 0x0e8c, 0x0e94, 0x0e99, - 0x0ea5, 0x0eb2, 0x0ec0, 0x0ec7, 0x0007, 0x006d, 0x0ed5, 0x0ee7, - // Entry 4C040 - 4C07F - 0x0ef6, 0x0ea5, 0x0eb2, 0x0f0c, 0x0f1d, 0x0005, 0x00be, 0x0000, - 0x00d0, 0x0000, 0x00c7, 0x0007, 0x006d, 0x0e8c, 0x0e94, 0x0e99, - 0x0ea5, 0x0eb2, 0x0ec0, 0x0ec7, 0x0007, 0x006d, 0x0e8c, 0x0e94, - 0x0e99, 0x0ea5, 0x0eb2, 0x0ec0, 0x0ec7, 0x0007, 0x006d, 0x0ed5, - 0x0ee7, 0x0ef6, 0x0ea5, 0x0eb2, 0x0f0c, 0x0f1d, 0x0002, 0x00dc, - 0x00f5, 0x0003, 0x00e0, 0x00e7, 0x00ee, 0x0005, 0x0000, 0xffff, - 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x0005, 0x006d, 0xffff, 0x0f35, 0x0f47, - // Entry 4C080 - 4C0BF - 0x0f57, 0x0f65, 0x0003, 0x00f9, 0x0100, 0x0107, 0x0005, 0x0000, - 0xffff, 0x1f17, 0x1f1a, 0x1f1d, 0x1f20, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x006d, 0xffff, 0x0f35, - 0x0f47, 0x0f57, 0x0f65, 0x0002, 0x0111, 0x0130, 0x0003, 0x0115, - 0x011e, 0x0127, 0x0002, 0x0118, 0x011b, 0x0001, 0x006d, 0x0f77, - 0x0001, 0x006d, 0x0f82, 0x0002, 0x0121, 0x0124, 0x0001, 0x006d, - 0x0f77, 0x0001, 0x006d, 0x0f82, 0x0002, 0x012a, 0x012d, 0x0001, - 0x006d, 0x0f77, 0x0001, 0x006d, 0x0f82, 0x0003, 0x0134, 0x013d, - // Entry 4C0C0 - 4C0FF - 0x0146, 0x0002, 0x0137, 0x013a, 0x0001, 0x006d, 0x0f77, 0x0001, - 0x006d, 0x0f82, 0x0002, 0x0140, 0x0143, 0x0001, 0x006d, 0x0f77, - 0x0001, 0x006d, 0x0f82, 0x0002, 0x0149, 0x014c, 0x0001, 0x006d, - 0x0f77, 0x0001, 0x006d, 0x0f82, 0x0003, 0x015e, 0x0000, 0x0153, - 0x0002, 0x0156, 0x015a, 0x0002, 0x006d, 0x0f8c, 0x0f98, 0x0002, - 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0161, 0x0165, 0x0002, 0x0000, - 0x04f5, 0x4290, 0x0002, 0x0000, 0xffff, 0x04f9, 0x0004, 0x0177, - 0x0171, 0x016e, 0x0174, 0x0001, 0x0005, 0x0773, 0x0001, 0x0001, - // Entry 4C100 - 4C13F - 0x1fb0, 0x0001, 0x0001, 0x1fb9, 0x0001, 0x0002, 0x0860, 0x0004, - 0x0188, 0x0182, 0x017f, 0x0185, 0x0001, 0x0000, 0x0524, 0x0001, - 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, - 0x0004, 0x0199, 0x0193, 0x0190, 0x0196, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0040, 0x01dd, 0x0000, 0x0000, 0x01e2, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x01e7, 0x0000, 0x0000, 0x01ec, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x01f1, 0x0000, 0x0000, 0x0000, - // Entry 4C140 - 4C17F - 0x0000, 0x0000, 0x01fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0203, 0x0000, - 0x0208, 0x020d, 0x0212, 0x0217, 0x0000, 0x0000, 0x021c, 0x0000, - 0x0000, 0x0221, 0x0001, 0x01df, 0x0001, 0x006d, 0x0fa5, 0x0001, - 0x01e4, 0x0001, 0x006d, 0x0fac, 0x0001, 0x01e9, 0x0001, 0x006d, - 0x0fb4, 0x0001, 0x01ee, 0x0001, 0x006d, 0x0fb9, 0x0002, 0x01f4, - // Entry 4C180 - 4C1BF - 0x01f7, 0x0001, 0x006d, 0x0fc2, 0x0005, 0x006d, 0x0fd5, 0x0fdb, - 0x0fe1, 0x0fcc, 0x0fe9, 0x0001, 0x0200, 0x0001, 0x006d, 0x0ff4, - 0x0001, 0x0205, 0x0001, 0x006d, 0x100a, 0x0001, 0x020a, 0x0001, - 0x006d, 0x101f, 0x0001, 0x020f, 0x0001, 0x006d, 0x101f, 0x0001, - 0x0214, 0x0001, 0x006d, 0x101f, 0x0001, 0x0219, 0x0001, 0x006d, - 0x1029, 0x0001, 0x021e, 0x0001, 0x006d, 0x1035, 0x0001, 0x0223, - 0x0001, 0x006d, 0x1049, 0x0002, 0x0003, 0x00f7, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0004, - // Entry 4C1C0 - 4C1FF - 0x0011, 0x0058, 0x009d, 0x00b6, 0x0002, 0x0014, 0x0036, 0x0003, - 0x0018, 0x0000, 0x0027, 0x000d, 0x006d, 0xffff, 0x1060, 0x0d5f, - 0x106c, 0x0d75, 0x1077, 0x0d86, 0x1080, 0x0d98, 0x0d9f, 0x1088, - 0x0db1, 0x1093, 0x000d, 0x006d, 0xffff, 0x109d, 0x10af, 0x10be, - 0x10cf, 0x10dc, 0x10eb, 0x10f9, 0x1107, 0x1114, 0x1120, 0x1131, - 0x113e, 0x0003, 0x003a, 0x0000, 0x0049, 0x000d, 0x006d, 0xffff, - 0x1060, 0x0d5f, 0x106c, 0x0d75, 0x1077, 0x0d86, 0x1080, 0x0d98, - 0x0d9f, 0x1088, 0x0db1, 0x1093, 0x000d, 0x006d, 0xffff, 0x109d, - // Entry 4C200 - 4C23F - 0x10af, 0x10be, 0x10cf, 0x10dc, 0x10eb, 0x10f9, 0x1107, 0x1114, - 0x1120, 0x1131, 0x113e, 0x0002, 0x005b, 0x007c, 0x0005, 0x0061, - 0x0000, 0x0073, 0x0000, 0x006a, 0x0007, 0x006d, 0x0e8c, 0x0e94, - 0x114e, 0x1159, 0x1164, 0x116f, 0x1175, 0x0007, 0x006d, 0x0e8c, - 0x0e94, 0x114e, 0x1159, 0x1164, 0x116f, 0x1175, 0x0007, 0x006d, - 0x1182, 0x1192, 0x119f, 0x1159, 0x1164, 0x11b2, 0x11c0, 0x0005, - 0x0082, 0x0000, 0x0094, 0x0000, 0x008b, 0x0007, 0x006d, 0x0e8c, - 0x0e94, 0x114e, 0x1159, 0x1164, 0x116f, 0x1175, 0x0007, 0x006d, - // Entry 4C240 - 4C27F - 0x0e8c, 0x0e94, 0x114e, 0x1159, 0x1164, 0x116f, 0x1175, 0x0007, - 0x006d, 0x1182, 0x1192, 0x119f, 0x1159, 0x1164, 0x11b2, 0x11c0, - 0x0002, 0x00a0, 0x00ab, 0x0003, 0x0000, 0x0000, 0x00a4, 0x0005, - 0x006d, 0xffff, 0x11d5, 0x11e6, 0x11f5, 0x1202, 0x0003, 0x0000, - 0x0000, 0x00af, 0x0005, 0x006d, 0xffff, 0x11d5, 0x11e6, 0x11f5, - 0x1202, 0x0002, 0x00b9, 0x00d8, 0x0003, 0x00bd, 0x00c6, 0x00cf, - 0x0002, 0x00c0, 0x00c3, 0x0001, 0x006d, 0x1212, 0x0001, 0x006d, - 0x121c, 0x0002, 0x00c9, 0x00cc, 0x0001, 0x006d, 0x1212, 0x0001, - // Entry 4C280 - 4C2BF - 0x006d, 0x121c, 0x0002, 0x00d2, 0x00d5, 0x0001, 0x006d, 0x1212, - 0x0001, 0x006d, 0x121c, 0x0003, 0x00dc, 0x00e5, 0x00ee, 0x0002, - 0x00df, 0x00e2, 0x0001, 0x006d, 0x1212, 0x0001, 0x006d, 0x121c, - 0x0002, 0x00e8, 0x00eb, 0x0001, 0x006d, 0x1212, 0x0001, 0x006d, - 0x121c, 0x0002, 0x00f1, 0x00f4, 0x0001, 0x006d, 0x1212, 0x0001, - 0x006d, 0x121c, 0x003d, 0x0000, 0x0000, 0x0000, 0x0135, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013a, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x013f, 0x0000, 0x0000, - // Entry 4C2C0 - 4C2FF - 0x0000, 0x0000, 0x0000, 0x014c, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0151, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0156, 0x0000, 0x0000, 0x015b, - 0x0001, 0x0137, 0x0001, 0x006d, 0x1225, 0x0001, 0x013c, 0x0001, - 0x006d, 0x122c, 0x0002, 0x0142, 0x0145, 0x0001, 0x006d, 0x1234, - 0x0005, 0x006d, 0x0fd5, 0x0fdb, 0x1244, 0x123c, 0x0fe9, 0x0001, - // Entry 4C300 - 4C33F - 0x014e, 0x0001, 0x006d, 0x124b, 0x0001, 0x0153, 0x0001, 0x006d, - 0x125d, 0x0001, 0x0158, 0x0001, 0x006d, 0x1270, 0x0001, 0x015d, - 0x0001, 0x006d, 0x127b, 0x0003, 0x0004, 0x08cc, 0x0c58, 0x0012, - 0x0017, 0x0038, 0x015b, 0x01c8, 0x02b9, 0x0000, 0x0326, 0x0351, - 0x0592, 0x061c, 0x068e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0714, - 0x0831, 0x08aa, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, - 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, - 0x006d, 0x128e, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, - // Entry 4C340 - 4C37F - 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, - 0x0001, 0x0035, 0x0503, 0x000a, 0x0043, 0x0000, 0x0000, 0x0000, - 0x0000, 0x014a, 0x0000, 0x0000, 0x00a8, 0x00bb, 0x0002, 0x0046, - 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, 0x000d, 0x0035, 0xffff, - 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, - 0x006e, 0x0075, 0x3af7, 0x3afe, 0x000d, 0x0035, 0xffff, 0x0090, - 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, 0x00b0, - 0x00b4, 0x3b05, 0x3b09, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, - // Entry 4C380 - 4C3BF - 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, - 0x3af7, 0x3afe, 0x0003, 0x007b, 0x008a, 0x0099, 0x000d, 0x0035, - 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, - 0x0067, 0x006e, 0x0075, 0x3af7, 0x3afe, 0x000d, 0x0035, 0xffff, - 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, - 0x00b0, 0x00b4, 0x3b05, 0x3b09, 0x000d, 0x0035, 0xffff, 0x0036, - 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, - 0x0075, 0x3af7, 0x3afe, 0x0003, 0x00ac, 0x00b7, 0x00b1, 0x0003, - // Entry 4C3C0 - 4C3FF - 0x0035, 0xffff, 0xffff, 0x00c6, 0x0004, 0x0035, 0xffff, 0xffff, - 0xffff, 0x00c6, 0x0002, 0x0035, 0xffff, 0x00c6, 0x0006, 0x00c2, - 0x0000, 0x0000, 0x00d5, 0x00f4, 0x0137, 0x0001, 0x00c4, 0x0001, - 0x00c6, 0x000d, 0x0035, 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, - 0x00dd, 0x00e1, 0x00e5, 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, - 0x0001, 0x00d7, 0x0001, 0x00d9, 0x0019, 0x0035, 0xffff, 0x00fd, - 0x0104, 0x3b0d, 0x0112, 0x0119, 0x0120, 0x0127, 0x3b14, 0x0135, - 0x013c, 0x0143, 0x014a, 0x0151, 0x3b1b, 0x015f, 0x0166, 0x016d, - // Entry 4C400 - 4C43F - 0x0174, 0x017b, 0x0182, 0x0189, 0x0190, 0x0197, 0x019e, 0x0001, - 0x00f6, 0x0001, 0x00f8, 0x003d, 0x0035, 0xffff, 0x01a5, 0x01ac, - 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dd, 0x01e4, - 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, 0x020e, 0x0215, 0x021c, - 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, 0x0246, 0x024d, 0x0254, - 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, 0x0285, 0x028c, - 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02b6, 0x02bd, 0x02c4, - 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, 0x02ee, 0x02f5, 0x02fc, - // Entry 4C440 - 4C47F - 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, 0x0326, 0x032d, 0x0334, - 0x033b, 0x0342, 0x0001, 0x0139, 0x0001, 0x013b, 0x000d, 0x0035, - 0xffff, 0x0349, 0x034d, 0x0351, 0x3b22, 0x3b26, 0x035d, 0x0361, - 0x0365, 0x3b2a, 0x3b2e, 0x3b32, 0x3b36, 0x0004, 0x0158, 0x0152, - 0x014f, 0x0155, 0x0001, 0x006d, 0x1295, 0x0001, 0x006d, 0x12a7, - 0x0001, 0x006d, 0x12b5, 0x0001, 0x006d, 0x12be, 0x0001, 0x015d, - 0x0002, 0x0160, 0x0194, 0x0003, 0x0164, 0x0174, 0x0184, 0x000e, - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - // Entry 4C480 - 4C4BF - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, - 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x0003, - 0x0198, 0x01a8, 0x01b8, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, - // Entry 4C4C0 - 4C4FF - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - 0x053d, 0x0543, 0x3b3a, 0x000a, 0x01d3, 0x0000, 0x0000, 0x0000, - 0x0000, 0x02a8, 0x0000, 0x0000, 0x0000, 0x0238, 0x0002, 0x01d6, - 0x0207, 0x0003, 0x01da, 0x01e9, 0x01f8, 0x000d, 0x0035, 0xffff, - 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, - 0x006e, 0x0075, 0x007c, 0x0086, 0x000d, 0x0035, 0xffff, 0x0090, - // Entry 4C500 - 4C53F - 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, 0x00b0, - 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, - 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, - 0x007c, 0x0086, 0x0003, 0x020b, 0x021a, 0x0229, 0x000d, 0x0035, - 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, - 0x0067, 0x006e, 0x0075, 0x007c, 0x0086, 0x000d, 0x0035, 0xffff, - 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, - 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, 0xffff, 0x0036, - // Entry 4C540 - 4C57F - 0x003d, 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, - 0x0075, 0x007c, 0x0086, 0x0006, 0x023f, 0x0000, 0x0000, 0x0000, - 0x0252, 0x0295, 0x0001, 0x0241, 0x0001, 0x0243, 0x000d, 0x0035, - 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, 0x00dd, 0x00e1, 0x00e5, - 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, 0x0001, 0x0254, 0x0001, - 0x0256, 0x003d, 0x0035, 0xffff, 0x01a5, 0x01ac, 0x01b3, 0x01ba, - 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dd, 0x01e4, 0x01eb, 0x01f2, - 0x01f9, 0x0200, 0x0207, 0x020e, 0x0215, 0x021c, 0x0223, 0x022a, - // Entry 4C580 - 4C5BF - 0x0231, 0x0238, 0x023f, 0x0246, 0x024d, 0x0254, 0x025b, 0x0262, - 0x0269, 0x0270, 0x0277, 0x027e, 0x0285, 0x028c, 0x0293, 0x029a, - 0x02a1, 0x02a8, 0x02af, 0x02b6, 0x02bd, 0x02c4, 0x02cb, 0x02d2, - 0x02d9, 0x02e0, 0x02e7, 0x02ee, 0x02f5, 0x02fc, 0x0303, 0x030a, - 0x0311, 0x0318, 0x031f, 0x0326, 0x032d, 0x0334, 0x033b, 0x0342, - 0x0001, 0x0297, 0x0001, 0x0299, 0x000d, 0x0035, 0xffff, 0x0349, - 0x034d, 0x0351, 0x3b22, 0x3b26, 0x035d, 0x0361, 0x0365, 0x3b2a, - 0x3b2e, 0x3b32, 0x3b36, 0x0004, 0x02b6, 0x02b0, 0x02ad, 0x02b3, - // Entry 4C5C0 - 4C5FF - 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, - 0x0389, 0x0001, 0x006d, 0x12c4, 0x0001, 0x02bb, 0x0002, 0x02be, - 0x02f2, 0x0003, 0x02c2, 0x02d2, 0x02e2, 0x000e, 0x0035, 0xffff, - 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, - 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, - 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x0035, 0xffff, - 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, - // Entry 4C600 - 4C63F - 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x0003, 0x02f6, 0x0306, - 0x0316, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, - 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, - 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, - 0x41f1, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, - 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, - 0x3b3a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x032f, - // Entry 4C640 - 4C67F - 0x0000, 0x0340, 0x0004, 0x033d, 0x0337, 0x0334, 0x033a, 0x0001, - 0x006d, 0x12ca, 0x0001, 0x006d, 0x12de, 0x0001, 0x006d, 0x12de, - 0x0001, 0x006d, 0x12ed, 0x0004, 0x034e, 0x0348, 0x0345, 0x034b, - 0x0001, 0x006d, 0x12f5, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x035a, 0x03bf, 0x0416, - 0x044b, 0x053a, 0x055f, 0x0570, 0x0581, 0x0002, 0x035d, 0x038e, - 0x0003, 0x0361, 0x0370, 0x037f, 0x000d, 0x0035, 0xffff, 0x050a, - 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, - // Entry 4C680 - 4C6BF - 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, - 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, - 0x0543, 0x0003, 0x0392, 0x03a1, 0x03b0, 0x000d, 0x0035, 0xffff, - 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, - 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, - // Entry 4C6C0 - 4C6FF - 0x41be, 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - 0x053d, 0x0543, 0x0002, 0x03c2, 0x03ec, 0x0005, 0x03c8, 0x03d1, - 0x03e3, 0x0000, 0x03da, 0x0007, 0x006d, 0x12fc, 0x1303, 0x130a, - 0x1311, 0x1318, 0x131f, 0x1326, 0x0007, 0x0035, 0x0549, 0x3b40, - 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x0007, 0x0035, 0x0549, - 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x0007, 0x006d, - 0x132d, 0x1337, 0x1341, 0x134b, 0x1355, 0x135f, 0x1369, 0x0005, - // Entry 4C700 - 4C73F - 0x03f2, 0x03fb, 0x040d, 0x0000, 0x0404, 0x0007, 0x006d, 0x12fc, - 0x1303, 0x130a, 0x1311, 0x1318, 0x131f, 0x1326, 0x0007, 0x0035, - 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x0007, - 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, - 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, 0x134b, 0x1355, 0x135f, - 0x1369, 0x0002, 0x0419, 0x0432, 0x0003, 0x041d, 0x0424, 0x042b, - 0x0005, 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, 0x0005, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x006d, - // Entry 4C740 - 4C77F - 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, 0x0003, 0x0436, 0x043d, - 0x0444, 0x0005, 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, 0x0002, 0x044e, - 0x04c4, 0x0003, 0x0452, 0x0478, 0x049e, 0x000a, 0x0460, 0x0463, - 0x045d, 0x0466, 0x046c, 0x0472, 0x0475, 0x0000, 0x0469, 0x046f, - 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, - 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x13af, 0x0001, - // Entry 4C780 - 4C7BF - 0x006d, 0x13b6, 0x0001, 0x006d, 0x13bd, 0x0001, 0x006d, 0x13c4, - 0x0001, 0x006d, 0x13cb, 0x000a, 0x0486, 0x0489, 0x0483, 0x048c, - 0x0492, 0x0498, 0x049b, 0x0000, 0x048f, 0x0495, 0x0001, 0x006d, - 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, - 0x006d, 0x13a8, 0x0001, 0x006d, 0x13af, 0x0001, 0x006d, 0x13b6, - 0x0001, 0x006d, 0x13bd, 0x0001, 0x006d, 0x13c4, 0x0001, 0x006d, - 0x13cb, 0x000a, 0x04ac, 0x04af, 0x04a9, 0x04b2, 0x04b8, 0x04be, - 0x04c1, 0x0000, 0x04b5, 0x04bb, 0x0001, 0x006d, 0x1393, 0x0001, - // Entry 4C7C0 - 4C7FF - 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, - 0x0001, 0x006d, 0x13af, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, - 0x13bd, 0x0001, 0x006d, 0x13c4, 0x0001, 0x006d, 0x13cb, 0x0003, - 0x04c8, 0x04ee, 0x0514, 0x000a, 0x04d6, 0x04d9, 0x04d3, 0x04dc, - 0x04e2, 0x04e8, 0x04eb, 0x0000, 0x04df, 0x04e5, 0x0001, 0x006d, - 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, - 0x006d, 0x13a8, 0x0001, 0x006d, 0x13af, 0x0001, 0x006d, 0x13b6, - 0x0001, 0x006d, 0x13bd, 0x0001, 0x006d, 0x13c4, 0x0001, 0x006d, - // Entry 4C800 - 4C83F - 0x13cb, 0x000a, 0x04fc, 0x04ff, 0x04f9, 0x0502, 0x0508, 0x050e, - 0x0511, 0x0000, 0x0505, 0x050b, 0x0001, 0x006d, 0x1393, 0x0001, - 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, - 0x0001, 0x006d, 0x13af, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, - 0x13bd, 0x0001, 0x006d, 0x13c4, 0x0001, 0x006d, 0x13cb, 0x000a, - 0x0522, 0x0525, 0x051f, 0x0528, 0x052e, 0x0534, 0x0537, 0x0000, - 0x052b, 0x0531, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, - 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, - // Entry 4C840 - 4C87F - 0x13af, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13bd, 0x0001, - 0x006d, 0x13c4, 0x0001, 0x006d, 0x13cb, 0x0003, 0x0549, 0x0554, - 0x053e, 0x0002, 0x0541, 0x0545, 0x0002, 0x006d, 0x13d2, 0x13e6, - 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0002, 0x054c, 0x0550, 0x0002, - 0x006d, 0x13d2, 0x13e6, 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0002, - 0x0557, 0x055b, 0x0002, 0x006d, 0x13d2, 0x13e6, 0x0002, 0x006d, - 0x13dc, 0x13ed, 0x0004, 0x056d, 0x0567, 0x0564, 0x056a, 0x0001, - 0x006d, 0x13f4, 0x0001, 0x0035, 0x065b, 0x0001, 0x0035, 0x065b, - // Entry 4C880 - 4C8BF - 0x0001, 0x0021, 0x05f2, 0x0004, 0x057e, 0x0578, 0x0575, 0x057b, - 0x0001, 0x006d, 0x1406, 0x0001, 0x006d, 0x1416, 0x0001, 0x006d, - 0x1423, 0x0001, 0x006d, 0x142c, 0x0004, 0x058f, 0x0589, 0x0586, - 0x058c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, 0x0599, 0x0000, - 0x0000, 0x0000, 0x0604, 0x060b, 0x0002, 0x059c, 0x05d0, 0x0003, - 0x05a0, 0x05b0, 0x05c0, 0x000e, 0x006d, 0x1486, 0x1432, 0x143f, - 0x144c, 0x1459, 0x1463, 0x1470, 0x147c, 0x1493, 0x149d, 0x14a7, - // Entry 4C8C0 - 4C8FF - 0x14b1, 0x14be, 0x14c8, 0x000e, 0x0000, 0x41bc, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006d, 0x1486, 0x1432, 0x143f, - 0x144c, 0x1459, 0x1463, 0x1470, 0x147c, 0x1493, 0x149d, 0x14a7, - 0x14b1, 0x14be, 0x14c8, 0x0003, 0x05d4, 0x05e4, 0x05f4, 0x000e, - 0x006d, 0x1486, 0x1432, 0x143f, 0x144c, 0x1459, 0x1463, 0x1470, - 0x147c, 0x1493, 0x149d, 0x14a7, 0x14b1, 0x14be, 0x14c8, 0x000e, - 0x0000, 0x41bc, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, - // Entry 4C900 - 4C93F - 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, - 0x006d, 0x1486, 0x1432, 0x143f, 0x144c, 0x1459, 0x1463, 0x1470, - 0x147c, 0x1493, 0x149d, 0x14a7, 0x14b1, 0x14be, 0x14c8, 0x0001, - 0x0606, 0x0001, 0x0608, 0x0001, 0x006d, 0x14d2, 0x0004, 0x0619, - 0x0613, 0x0610, 0x0616, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, - 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x0005, - 0x0622, 0x0000, 0x0000, 0x0000, 0x0687, 0x0002, 0x0625, 0x0656, - 0x0003, 0x0629, 0x0638, 0x0647, 0x000d, 0x006d, 0xffff, 0x14df, - // Entry 4C940 - 4C97F - 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, 0x1556, - 0x1566, 0x1570, 0x157a, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x14df, 0x14ec, 0x14f9, - 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, 0x1556, 0x1566, 0x1570, - 0x157a, 0x0003, 0x065a, 0x0669, 0x0678, 0x000d, 0x006d, 0xffff, - 0x14df, 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, - 0x1556, 0x1566, 0x1570, 0x157a, 0x000d, 0x0000, 0xffff, 0x0033, - // Entry 4C980 - 4C9BF - 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, - 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x14df, 0x14ec, - 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, 0x1556, 0x1566, - 0x1570, 0x157a, 0x0001, 0x0689, 0x0001, 0x068b, 0x0001, 0x006d, - 0x158a, 0x0008, 0x0697, 0x0000, 0x0000, 0x0000, 0x06fc, 0x0703, - 0x0000, 0x9006, 0x0002, 0x069a, 0x06cb, 0x0003, 0x069e, 0x06ad, - 0x06bc, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, 0x15bd, - 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, 0x1630, - // Entry 4C9C0 - 4C9FF - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, - 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, 0x15bd, 0x15ca, 0x15d9, - 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, 0x1630, 0x0003, 0x06cf, - 0x06de, 0x06ed, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, - 0x15bd, 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, - 0x1630, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, - // Entry 4CA00 - 4CA3F - 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, 0x15bd, 0x15ca, - 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, 0x1630, 0x0001, - 0x06fe, 0x0001, 0x0700, 0x0001, 0x006d, 0x1640, 0x0004, 0x0711, - 0x070b, 0x0708, 0x070e, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, - 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x071d, 0x080f, 0x0000, 0x0820, - 0x0001, 0x071f, 0x0001, 0x0721, 0x00ec, 0x0035, 0x08e5, 0x08ec, - 0x3b44, 0x08fa, 0x3b4b, 0x0908, 0x090f, 0x3b52, 0x091d, 0x3b59, - // Entry 4CA40 - 4CA7F - 0x092b, 0x3b60, 0x3b6d, 0x3b7a, 0x0959, 0x0966, 0x3b87, 0x3b8e, - 0x3b95, 0x0988, 0x098f, 0x0996, 0x099d, 0x09a4, 0x3b9c, 0x3ba3, - 0x09b9, 0x3baa, 0x09c7, 0x09ce, 0x3bb1, 0x09dc, 0x09e3, 0x09ea, - 0x09f1, 0x09f8, 0x3bb8, 0x3bbf, 0x3bc6, 0x0a14, 0x0a1b, 0x3bcd, - 0x0a29, 0x0a30, 0x0a37, 0x3bd4, 0x3bdb, 0x0a4c, 0x0a53, 0x3be2, - 0x3be9, 0x0a68, 0x3bf0, 0x0a76, 0x3bf7, 0x0a84, 0x3bfe, 0x0a92, - 0x3c05, 0x0aa0, 0x3c0c, 0x0aae, 0x0ab5, 0x0abc, 0x3c13, 0x0aca, - 0x0ad1, 0x3c1a, 0x0adf, 0x3c21, 0x3c28, 0x0af4, 0x0afb, 0x3c2f, - // Entry 4CA80 - 4CABF - 0x0b09, 0x0b10, 0x0b17, 0x0b1e, 0x0b25, 0x0b2c, 0x0b33, 0x0b3a, - 0x0b41, 0x0b48, 0x0b4f, 0x0b56, 0x0b5d, 0x0b64, 0x0b6b, 0x0b72, - 0x0b79, 0x0b80, 0x3c36, 0x0b8e, 0x0b95, 0x3c3d, 0x3c44, 0x3c4b, - 0x3c52, 0x0bb8, 0x3c59, 0x0bc6, 0x0bcd, 0x0bd4, 0x0bdb, 0x3c60, - 0x3c67, 0x0bf0, 0x0bf7, 0x0bfe, 0x0c05, 0x0c0c, 0x0c13, 0x0c1a, - 0x3c6e, 0x0c28, 0x0c2f, 0x3c75, 0x0c3d, 0x3c7c, 0x0c4b, 0x3c83, - 0x0c59, 0x0c60, 0x3c8a, 0x0c6e, 0x3c91, 0x3c98, 0x0c83, 0x3c9f, - 0x3ca6, 0x0c98, 0x0c9f, 0x0ca6, 0x0cad, 0x3cad, 0x0cbb, 0x0cc2, - // Entry 4CAC0 - 4CAFF - 0x0cc9, 0x0cd0, 0x3cb4, 0x0cde, 0x0ce5, 0x0cec, 0x0cf3, 0x3cbb, - 0x0d01, 0x3cc2, 0x0d0f, 0x0d16, 0x3cc9, 0x0d24, 0x0d2b, 0x3cd0, - 0x3cd7, 0x0d40, 0x0d47, 0x0d4e, 0x3cde, 0x0d5c, 0x3ce5, 0x0d6a, - 0x0d71, 0x3cec, 0x0d7f, 0x0d86, 0x3cf3, 0x0d94, 0x3cfa, 0x3d01, - 0x3d08, 0x0db0, 0x0db7, 0x0dbe, 0x0dc5, 0x3d0f, 0x3d16, 0x0dda, - 0x3d1d, 0x3d24, 0x0def, 0x3d2b, 0x0dfd, 0x0e04, 0x3d32, 0x3d39, - 0x3d40, 0x0e20, 0x0e27, 0x3d47, 0x0e35, 0x0e3c, 0x3d4e, 0x3d55, - 0x0e51, 0x3d5c, 0x0e5f, 0x0e66, 0x3d63, 0x0e74, 0x0e7b, 0x3d6a, - // Entry 4CB00 - 4CB3F - 0x3d71, 0x3d78, 0x3d7f, 0x3d86, 0x0ea5, 0x0eac, 0x3d8d, 0x3d94, - 0x3d9b, 0x0ec8, 0x0ecf, 0x3da2, 0x0edd, 0x3da9, 0x3db0, 0x0ef2, - 0x0ef9, 0x0f00, 0x3db7, 0x0f0e, 0x0f15, 0x0f1c, 0x0f23, 0x0f2a, - 0x0f31, 0x0f38, 0x3dbe, 0x0f46, 0x0f4d, 0x3dc5, 0x0f5b, 0x0f62, - 0x0f69, 0x0f70, 0x0004, 0x081d, 0x0817, 0x0814, 0x081a, 0x0001, - 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, - 0x0001, 0x0035, 0x0503, 0x0004, 0x082e, 0x0828, 0x0825, 0x082b, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry 4CB40 - 4CB7F - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0837, 0x0000, 0x0000, - 0x0000, 0x089c, 0x0002, 0x083a, 0x086b, 0x0003, 0x083e, 0x084d, - 0x085c, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, - 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x0003, 0x086f, - // Entry 4CB80 - 4CBBF - 0x087e, 0x088d, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, - 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, - 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, - 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, - 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x0003, - 0x08a5, 0x0000, 0x08a0, 0x0001, 0x08a2, 0x0001, 0x006d, 0x164d, - 0x0001, 0x08a7, 0x0001, 0x006d, 0x164d, 0x0008, 0x0000, 0x0000, - // Entry 4CBC0 - 4CBFF - 0x0000, 0x0000, 0x08b3, 0x08bb, 0x0000, 0x9006, 0x0001, 0x08b5, - 0x0001, 0x08b7, 0x0002, 0x006d, 0x1657, 0x1661, 0x0004, 0x08c9, - 0x08c3, 0x08c0, 0x08c6, 0x0001, 0x006d, 0x1668, 0x0001, 0x0035, - 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x0040, - 0x090d, 0x0000, 0x0000, 0x0912, 0x0927, 0x0937, 0x0947, 0x095c, - 0x0971, 0x0986, 0x099b, 0x09ab, 0x09bb, 0x09d4, 0x09e8, 0x0000, - 0x0000, 0x0000, 0x09fc, 0x0a13, 0x0a23, 0x0000, 0x0000, 0x0000, - 0x0a33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a38, 0x0a4a, - // Entry 4CC00 - 4CC3F - 0x0a5c, 0x0a6e, 0x0a80, 0x0a92, 0x0aa4, 0x0ab6, 0x0ac8, 0x0ada, - 0x0aec, 0x0afe, 0x0b10, 0x0b22, 0x0b34, 0x0b46, 0x0b58, 0x0b6a, - 0x0b7c, 0x0b8e, 0x0ba0, 0x0000, 0x0bb2, 0x0000, 0x0bb7, 0x0bcb, - 0x0bdb, 0x0beb, 0x0bff, 0x0c0f, 0x0c1f, 0x0c33, 0x0c43, 0x0c53, - 0x0001, 0x090f, 0x0001, 0x006d, 0x167b, 0x0003, 0x0916, 0x0919, - 0x091e, 0x0001, 0x0035, 0x1074, 0x0003, 0x006d, 0x1682, 0x1689, - 0x1690, 0x0002, 0x0921, 0x0924, 0x0001, 0x0035, 0x108d, 0x0001, - 0x0035, 0x1098, 0x0003, 0x092b, 0x0000, 0x092e, 0x0001, 0x0035, - // Entry 4CC40 - 4CC7F - 0x1074, 0x0002, 0x0931, 0x0934, 0x0001, 0x0035, 0x108d, 0x0001, - 0x0035, 0x1098, 0x0003, 0x093b, 0x0000, 0x093e, 0x0001, 0x0035, - 0x1074, 0x0002, 0x0941, 0x0944, 0x0001, 0x0035, 0x108d, 0x0001, - 0x0035, 0x1098, 0x0003, 0x094b, 0x094e, 0x0953, 0x0001, 0x006d, - 0x1697, 0x0003, 0x006d, 0x169b, 0x16a5, 0x16ac, 0x0002, 0x0956, - 0x0959, 0x0001, 0x006d, 0x16b6, 0x0001, 0x006d, 0x16c1, 0x0003, - 0x0960, 0x0963, 0x0968, 0x0001, 0x006d, 0x1697, 0x0003, 0x006d, - 0x16cc, 0x16a5, 0x16d3, 0x0002, 0x096b, 0x096e, 0x0001, 0x006d, - // Entry 4CC80 - 4CCBF - 0x16b6, 0x0001, 0x006d, 0x16c1, 0x0003, 0x0975, 0x0978, 0x097d, - 0x0001, 0x006d, 0x1697, 0x0003, 0x006d, 0x16cc, 0x16a5, 0x16d3, - 0x0002, 0x0980, 0x0983, 0x0001, 0x006d, 0x16b6, 0x0001, 0x006d, - 0x16c1, 0x0003, 0x098a, 0x098d, 0x0992, 0x0001, 0x0035, 0x054d, - 0x0003, 0x006d, 0x16da, 0x16e4, 0x16ee, 0x0002, 0x0995, 0x0998, - 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, 0x0003, 0x099f, - 0x0000, 0x09a2, 0x0001, 0x0035, 0x054d, 0x0002, 0x09a5, 0x09a8, - 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, 0x0003, 0x09af, - // Entry 4CCC0 - 4CCFF - 0x0000, 0x09b2, 0x0001, 0x0035, 0x054d, 0x0002, 0x09b5, 0x09b8, - 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, 0x0004, 0x09c0, - 0x09c3, 0x09c8, 0x09d1, 0x0001, 0x0035, 0x1175, 0x0003, 0x006d, - 0x1714, 0x171e, 0x172b, 0x0002, 0x09cb, 0x09ce, 0x0001, 0x006d, - 0x1735, 0x0001, 0x006d, 0x1746, 0x0001, 0x006d, 0x1757, 0x0004, - 0x09d9, 0x0000, 0x09dc, 0x09e5, 0x0001, 0x0035, 0x1175, 0x0002, - 0x09df, 0x09e2, 0x0001, 0x006d, 0x1735, 0x0001, 0x006d, 0x1746, - 0x0001, 0x006d, 0x1757, 0x0004, 0x09ed, 0x0000, 0x09f0, 0x09f9, - // Entry 4CD00 - 4CD3F - 0x0001, 0x0035, 0x1175, 0x0002, 0x09f3, 0x09f6, 0x0001, 0x006d, - 0x1735, 0x0001, 0x006d, 0x1746, 0x0001, 0x006d, 0x1757, 0x0003, - 0x0a00, 0x0a03, 0x0a0a, 0x0001, 0x0035, 0x0549, 0x0005, 0x006d, - 0x176b, 0x1772, 0x1779, 0x1764, 0x1780, 0x0002, 0x0a0d, 0x0a10, - 0x0001, 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0a17, - 0x0000, 0x0a1a, 0x0001, 0x0035, 0x0549, 0x0002, 0x0a1d, 0x0a20, - 0x0001, 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0a27, - 0x0000, 0x0a2a, 0x0001, 0x0035, 0x0549, 0x0002, 0x0a2d, 0x0a30, - // Entry 4CD40 - 4CD7F - 0x0001, 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, 0x0001, 0x0a35, - 0x0001, 0x006d, 0x1787, 0x0003, 0x0000, 0x0a3c, 0x0a41, 0x0003, - 0x006d, 0x178e, 0x179b, 0x17ab, 0x0002, 0x0a44, 0x0a47, 0x0001, - 0x006d, 0x17b8, 0x0001, 0x006d, 0x17cc, 0x0003, 0x0000, 0x0a4e, - 0x0a53, 0x0003, 0x006d, 0x178e, 0x179b, 0x17ab, 0x0002, 0x0a56, - 0x0a59, 0x0001, 0x006d, 0x17b8, 0x0001, 0x006d, 0x17cc, 0x0003, - 0x0000, 0x0a60, 0x0a65, 0x0003, 0x006d, 0x178e, 0x179b, 0x17ab, - 0x0002, 0x0a68, 0x0a6b, 0x0001, 0x006d, 0x17b8, 0x0001, 0x006d, - // Entry 4CD80 - 4CDBF - 0x17cc, 0x0003, 0x0000, 0x0a72, 0x0a77, 0x0003, 0x006d, 0x17e0, - 0x17ed, 0x17fd, 0x0002, 0x0a7a, 0x0a7d, 0x0001, 0x006d, 0x180a, - 0x0001, 0x006d, 0x181e, 0x0003, 0x0000, 0x0a84, 0x0a89, 0x0003, - 0x006d, 0x17e0, 0x17ed, 0x17fd, 0x0002, 0x0a8c, 0x0a8f, 0x0001, - 0x006d, 0x180a, 0x0001, 0x006d, 0x181e, 0x0003, 0x0000, 0x0a96, - 0x0a9b, 0x0003, 0x006d, 0x17e0, 0x17ed, 0x17fd, 0x0002, 0x0a9e, - 0x0aa1, 0x0001, 0x006d, 0x180a, 0x0001, 0x006d, 0x181e, 0x0003, - 0x0000, 0x0aa8, 0x0aad, 0x0003, 0x006d, 0x1832, 0x183f, 0x184f, - // Entry 4CDC0 - 4CDFF - 0x0002, 0x0ab0, 0x0ab3, 0x0001, 0x006d, 0x185c, 0x0001, 0x006d, - 0x1870, 0x0003, 0x0000, 0x0aba, 0x0abf, 0x0003, 0x006d, 0x1832, - 0x183f, 0x184f, 0x0002, 0x0ac2, 0x0ac5, 0x0001, 0x006d, 0x185c, - 0x0001, 0x006d, 0x1870, 0x0003, 0x0000, 0x0acc, 0x0ad1, 0x0003, - 0x006d, 0x1832, 0x183f, 0x184f, 0x0002, 0x0ad4, 0x0ad7, 0x0001, - 0x006d, 0x185c, 0x0001, 0x006d, 0x1870, 0x0003, 0x0000, 0x0ade, - 0x0ae3, 0x0003, 0x006d, 0x1884, 0x1891, 0x18a1, 0x0002, 0x0ae6, - 0x0ae9, 0x0001, 0x006d, 0x18ae, 0x0001, 0x006d, 0x18c2, 0x0003, - // Entry 4CE00 - 4CE3F - 0x0000, 0x0af0, 0x0af5, 0x0003, 0x006d, 0x1884, 0x1891, 0x18a1, - 0x0002, 0x0af8, 0x0afb, 0x0001, 0x006d, 0x18ae, 0x0001, 0x006d, - 0x18c2, 0x0003, 0x0000, 0x0b02, 0x0b07, 0x0003, 0x006d, 0x1884, - 0x1891, 0x18a1, 0x0002, 0x0b0a, 0x0b0d, 0x0001, 0x006d, 0x18ae, - 0x0001, 0x006d, 0x18c2, 0x0003, 0x0000, 0x0b14, 0x0b19, 0x0003, - 0x006d, 0x18d6, 0x18e3, 0x18f3, 0x0002, 0x0b1c, 0x0b1f, 0x0001, - 0x006d, 0x1900, 0x0001, 0x006d, 0x1914, 0x0003, 0x0000, 0x0b26, - 0x0b2b, 0x0003, 0x006d, 0x18d6, 0x18e3, 0x18f3, 0x0002, 0x0b2e, - // Entry 4CE40 - 4CE7F - 0x0b31, 0x0001, 0x006d, 0x1900, 0x0001, 0x006d, 0x1914, 0x0003, - 0x0000, 0x0b38, 0x0b3d, 0x0003, 0x006d, 0x18d6, 0x18e3, 0x18f3, - 0x0002, 0x0b40, 0x0b43, 0x0001, 0x006d, 0x1900, 0x0001, 0x006d, - 0x1914, 0x0003, 0x0000, 0x0b4a, 0x0b4f, 0x0003, 0x006d, 0x1928, - 0x1935, 0x1945, 0x0002, 0x0b52, 0x0b55, 0x0001, 0x006d, 0x1952, - 0x0001, 0x006d, 0x1966, 0x0003, 0x0000, 0x0b5c, 0x0b61, 0x0003, - 0x006d, 0x1928, 0x1935, 0x1945, 0x0002, 0x0b64, 0x0b67, 0x0001, - 0x006d, 0x1952, 0x0001, 0x006d, 0x1966, 0x0003, 0x0000, 0x0b6e, - // Entry 4CE80 - 4CEBF - 0x0b73, 0x0003, 0x006d, 0x1928, 0x1935, 0x1945, 0x0002, 0x0b76, - 0x0b79, 0x0001, 0x006d, 0x1952, 0x0001, 0x006d, 0x1966, 0x0003, - 0x0000, 0x0b80, 0x0b85, 0x0003, 0x006d, 0x197a, 0x1987, 0x1997, - 0x0002, 0x0b88, 0x0b8b, 0x0001, 0x006d, 0x19a4, 0x0001, 0x006d, - 0x19b8, 0x0003, 0x0000, 0x0b92, 0x0b97, 0x0003, 0x006d, 0x197a, - 0x1987, 0x1997, 0x0002, 0x0b9a, 0x0b9d, 0x0001, 0x006d, 0x19a4, - 0x0001, 0x006d, 0x19b8, 0x0003, 0x0000, 0x0ba4, 0x0ba9, 0x0003, - 0x006d, 0x197a, 0x1987, 0x1997, 0x0002, 0x0bac, 0x0baf, 0x0001, - // Entry 4CEC0 - 4CEFF - 0x006d, 0x19a4, 0x0001, 0x006d, 0x19b8, 0x0001, 0x0bb4, 0x0001, - 0x006d, 0x19cc, 0x0003, 0x0bbb, 0x0bbe, 0x0bc2, 0x0001, 0x006d, - 0x19da, 0x0002, 0x006d, 0xffff, 0x19e1, 0x0002, 0x0bc5, 0x0bc8, - 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, 0x0003, 0x0bcf, - 0x0000, 0x0bd2, 0x0001, 0x006d, 0x19da, 0x0002, 0x0bd5, 0x0bd8, - 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, 0x0003, 0x0bdf, - 0x0000, 0x0be2, 0x0001, 0x006d, 0x19da, 0x0002, 0x0be5, 0x0be8, - 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, 0x0003, 0x0bef, - // Entry 4CF00 - 4CF3F - 0x0bf2, 0x0bf6, 0x0001, 0x006d, 0x1a0a, 0x0002, 0x006d, 0xffff, - 0x1a11, 0x0002, 0x0bf9, 0x0bfc, 0x0001, 0x006d, 0x1a1b, 0x0001, - 0x006d, 0x1a29, 0x0003, 0x0c03, 0x0000, 0x0c06, 0x0001, 0x006d, - 0x1a0a, 0x0002, 0x0c09, 0x0c0c, 0x0001, 0x006d, 0x1a1b, 0x0001, - 0x006d, 0x1a29, 0x0003, 0x0c13, 0x0000, 0x0c16, 0x0001, 0x006d, - 0x1a0a, 0x0002, 0x0c19, 0x0c1c, 0x0001, 0x006d, 0x1a1b, 0x0001, - 0x006d, 0x1a29, 0x0003, 0x0c23, 0x0c26, 0x0c2a, 0x0001, 0x0035, - 0x190d, 0x0002, 0x006d, 0xffff, 0x1a37, 0x0002, 0x0c2d, 0x0c30, - // Entry 4CF40 - 4CF7F - 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, 0x0003, 0x0c37, - 0x0000, 0x0c3a, 0x0001, 0x0035, 0x190d, 0x0002, 0x0c3d, 0x0c40, - 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, 0x0003, 0x0c47, - 0x0000, 0x0c4a, 0x0001, 0x0035, 0x190d, 0x0002, 0x0c4d, 0x0c50, - 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, 0x0001, 0x0c55, - 0x0001, 0x006d, 0x1a3e, 0x0004, 0x0c5d, 0x0c62, 0x0c67, 0x0c72, - 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0035, 0x1952, - 0x3dcc, 0x3dd5, 0x0002, 0x0000, 0x0c6a, 0x0002, 0x0000, 0x0c6d, - // Entry 4CF80 - 4CFBF - 0x0003, 0x006d, 0xffff, 0x1a45, 0x1a58, 0x0002, 0x0000, 0x0c75, - 0x0003, 0x0c79, 0x0db9, 0x0d19, 0x009e, 0x006d, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1ade, 0x1b11, 0x1b9b, 0x1bd7, 0x1c0a, 0x1c3d, - 0x1c70, 0x1cac, 0x1cf1, 0x1dae, 0x1dea, 0x1e26, 0x1e74, 0x1eb9, - 0x1ef5, 0x1f3a, 0x1f88, 0x1fcd, 0x2012, 0x2057, 0x20a5, 0xffff, - 0xffff, 0x2101, 0xffff, 0x2153, 0xffff, 0x21af, 0x21f4, 0x2227, - 0x225a, 0xffff, 0xffff, 0x22bc, 0x2301, 0x2349, 0xffff, 0xffff, - 0xffff, 0x23b2, 0xffff, 0x2407, 0x243a, 0xffff, 0x2480, 0x24b3, - // Entry 4CFC0 - 4CFFF - 0x2501, 0xffff, 0xffff, 0xffff, 0xffff, 0x2595, 0xffff, 0xffff, - 0x2603, 0x2651, 0xffff, 0xffff, 0x26de, 0x2738, 0x276b, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2816, 0x2849, 0x2897, - 0x28d3, 0x2906, 0xffff, 0xffff, 0x29a4, 0xffff, 0x29e7, 0xffff, - 0xffff, 0x2a83, 0xffff, 0x2b0b, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2b96, 0xffff, 0x2be8, 0x2c3f, 0x2c96, 0x2cdb, 0xffff, 0xffff, - 0xffff, 0x2d41, 0x2d9e, 0x2dda, 0xffff, 0xffff, 0x2e39, 0x2ed0, - 0x2f1e, 0x2f63, 0xffff, 0xffff, 0x2fd1, 0x300d, 0x3040, 0xffff, - // Entry 4D000 - 4D03F - 0x308f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x31a1, 0x31dd, - 0x3219, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x32d7, 0xffff, 0xffff, 0x3330, 0xffff, 0x3373, 0xffff, 0x33bf, - 0x33fb, 0x3440, 0xffff, 0x348f, 0x34cb, 0xffff, 0xffff, 0xffff, - 0x355e, 0x35a3, 0xffff, 0xffff, 0x1a6e, 0x1b56, 0x1d2d, 0x1d69, - 0xffff, 0xffff, 0x2ac8, 0x312a, 0x009e, 0x006d, 0x1aa1, 0x1ab1, - 0x1abe, 0x1acb, 0x1aeb, 0x1b24, 0x1bab, 0x1be4, 0x1c17, 0x1c4a, - 0x1c80, 0x1cbf, 0x1d01, 0x1dbe, 0x1dfa, 0x1e3c, 0x1e87, 0x1ec9, - // Entry 4D040 - 4D07F - 0x1f08, 0x1f50, 0x1f9b, 0x1fe0, 0x2025, 0x206d, 0x20b5, 0x20e1, - 0x20ee, 0x2114, 0x2146, 0x2163, 0x219f, 0x21c2, 0x2201, 0x2234, - 0x226a, 0x2296, 0x22a6, 0x22cf, 0x2314, 0x2356, 0x237c, 0x238c, - 0x23a2, 0x23c5, 0x23f7, 0x2414, 0x2447, 0x246d, 0x248d, 0x24c9, - 0x250e, 0x2534, 0x254a, 0x2566, 0x257f, 0x25a5, 0x25d1, 0x25ea, - 0x2619, 0x2667, 0x26b2, 0x26ce, 0x26f8, 0x2745, 0x277b, 0x27a7, - 0x27ba, 0x27ca, 0x27dd, 0x27f0, 0x2803, 0x2823, 0x285f, 0x28a7, - 0x28e0, 0x2928, 0x297e, 0x2991, 0x29b1, 0x29d7, 0x2a06, 0x2a50, - // Entry 4D080 - 4D0BF - 0x2a70, 0x2a96, 0x2afb, 0x2b1b, 0x2b47, 0x2b5a, 0x2b6d, 0x2b80, - 0x2ba9, 0x2bdb, 0x2c01, 0x2c58, 0x2ca9, 0x2ceb, 0x2d17, 0x2d24, - 0x2d31, 0x2d5a, 0x2dae, 0x2dea, 0x2e16, 0x2e26, 0x2e5e, 0x2ee6, - 0x2f31, 0x2f76, 0x2fa8, 0x2fb5, 0x2fe1, 0x301a, 0x3050, 0x307c, - 0x30b4, 0x310a, 0x311a, 0xffff, 0x3181, 0x3191, 0x31b1, 0x31ed, - 0x3229, 0x3255, 0x3265, 0x327b, 0x3291, 0x32a4, 0x32b4, 0x32c7, - 0x32e4, 0x330a, 0x331a, 0x333d, 0x3363, 0x3383, 0x33af, 0x33cf, - 0x340e, 0x3450, 0x347c, 0x349f, 0x34e1, 0x3519, 0x352c, 0x353c, - // Entry 4D0C0 - 4D0FF - 0x3571, 0x35b9, 0x269f, 0x2eb4, 0x1a7b, 0x1b69, 0x1d3d, 0x1d7c, - 0x218f, 0x2a63, 0x2ad5, 0x3143, 0x009e, 0x006d, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1afe, 0x1b3d, 0x1bc1, 0x1bf7, 0x1c2a, 0x1c5d, - 0x1c96, 0x1cd8, 0x1d17, 0x1dd4, 0x1e10, 0x1e58, 0x1ea0, 0x1edf, - 0x1f21, 0x1f6c, 0x1fb4, 0x1ff9, 0x203e, 0x2089, 0x20cb, 0xffff, - 0xffff, 0x212d, 0xffff, 0x2179, 0xffff, 0x21db, 0x2214, 0x2247, - 0x2280, 0xffff, 0xffff, 0x22e8, 0x232d, 0x2369, 0xffff, 0xffff, - 0xffff, 0x23de, 0xffff, 0x2427, 0x245a, 0xffff, 0x24a0, 0x24e5, - // Entry 4D100 - 4D13F - 0x2521, 0xffff, 0xffff, 0xffff, 0xffff, 0x25bb, 0xffff, 0xffff, - 0x2635, 0x2683, 0xffff, 0xffff, 0x2718, 0x2758, 0x2791, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2836, 0x287b, 0x28bd, - 0x28f3, 0x2950, 0xffff, 0xffff, 0x29c4, 0xffff, 0x2a2b, 0xffff, - 0xffff, 0x2aaf, 0xffff, 0x2b31, 0xffff, 0xffff, 0xffff, 0xffff, - 0x2bc2, 0xffff, 0x2c20, 0x2c77, 0x2cc2, 0x2d01, 0xffff, 0xffff, - 0xffff, 0x2d79, 0x2dc4, 0x2e00, 0xffff, 0xffff, 0x2e89, 0x2f02, - 0x2f4a, 0x2f8f, 0xffff, 0xffff, 0x2ff7, 0x302d, 0x3066, 0xffff, - // Entry 4D140 - 4D17F - 0x30df, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x31c7, 0x3203, - 0x323f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x32f7, 0xffff, 0xffff, 0x3350, 0xffff, 0x3399, 0xffff, 0x33e5, - 0x3427, 0x3466, 0xffff, 0x34b5, 0x34fd, 0xffff, 0xffff, 0xffff, - 0x358a, 0x35d5, 0xffff, 0xffff, 0x1a8e, 0x1b82, 0x1d53, 0x1d95, - 0xffff, 0xffff, 0x2ae8, 0x3162, 0x0002, 0x0003, 0x01ae, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0026, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0000, - // Entry 4D180 - 4D1BF - 0x0000, 0x0004, 0x0023, 0x001d, 0x001a, 0x0020, 0x0001, 0x0001, - 0x1f7d, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1fc1, 0x0001, - 0x0000, 0x236f, 0x0008, 0x002f, 0x0094, 0x00eb, 0x0120, 0x0161, - 0x017b, 0x018c, 0x019d, 0x0002, 0x0032, 0x0063, 0x0003, 0x0036, - 0x0045, 0x0054, 0x000d, 0x0057, 0xffff, 0x08b9, 0x08c3, 0x08cd, - 0x08d7, 0x08e1, 0x08eb, 0x08f5, 0x08ff, 0x0909, 0x0913, 0x091d, - 0x0927, 0x000d, 0x0057, 0xffff, 0x0a0c, 0x0a10, 0x0a14, 0x0a0c, - 0x0a14, 0x0a18, 0x0a18, 0x0a1c, 0x0a20, 0x0a24, 0x0a28, 0x0a2c, - // Entry 4D1C0 - 4D1FF - 0x000d, 0x0057, 0xffff, 0x0931, 0x0944, 0x0954, 0x0961, 0x0971, - 0x0981, 0x0991, 0x09a4, 0x09b1, 0x09ca, 0x09da, 0x09f3, 0x0003, - 0x0067, 0x0076, 0x0085, 0x000d, 0x0057, 0xffff, 0x08b9, 0x08c3, - 0x08cd, 0x08d7, 0x08e1, 0x08eb, 0x08f5, 0x08ff, 0x0909, 0x0913, - 0x091d, 0x0927, 0x000d, 0x0057, 0xffff, 0x0a0c, 0x0a10, 0x0a14, - 0x0a0c, 0x0a14, 0x0a18, 0x0a18, 0x0a1c, 0x0a20, 0x0a24, 0x0a28, - 0x0a2c, 0x000d, 0x0057, 0xffff, 0x0931, 0x0944, 0x0954, 0x0961, - 0x0971, 0x0981, 0x0991, 0x09a4, 0x09b1, 0x09ca, 0x09da, 0x09f3, - // Entry 4D200 - 4D23F - 0x0002, 0x0097, 0x00c1, 0x0005, 0x009d, 0x00a6, 0x00b8, 0x0000, - 0x00af, 0x0007, 0x0057, 0x0a30, 0x0a3a, 0x0a44, 0x0a4e, 0x0a58, - 0x0a62, 0x0a6f, 0x0007, 0x0017, 0x2a09, 0x29f4, 0x2a0b, 0x29d5, - 0x2a0b, 0x29f2, 0x2a09, 0x0007, 0x0057, 0x0a30, 0x0a3a, 0x0a44, - 0x0a4e, 0x0a58, 0x0a62, 0x0a6f, 0x0007, 0x0057, 0x0a7c, 0x0a8f, - 0x0a9f, 0x0ab2, 0x0ac2, 0x2033, 0x0ae5, 0x0005, 0x00c7, 0x00d0, - 0x00e2, 0x0000, 0x00d9, 0x0007, 0x0057, 0x0a30, 0x0a3a, 0x0a44, - 0x0a4e, 0x0a58, 0x0a62, 0x0a6f, 0x0007, 0x0017, 0x2a09, 0x29f4, - // Entry 4D240 - 4D27F - 0x2a0b, 0x29d5, 0x2a0b, 0x29f2, 0x2a09, 0x0007, 0x0057, 0x0a30, - 0x0a3a, 0x0a44, 0x0a4e, 0x0a58, 0x0a62, 0x0a6f, 0x0007, 0x0057, - 0x0a7c, 0x0a8f, 0x0a9f, 0x0ab2, 0x0ac2, 0x2033, 0x0ae5, 0x0002, - 0x00ee, 0x0107, 0x0003, 0x00f2, 0x00f9, 0x0100, 0x0005, 0x0057, - 0xffff, 0x0afb, 0x0b04, 0x0b0d, 0x0b16, 0x0005, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0057, 0xffff, 0x0b1f, - 0x0b3a, 0x0b55, 0x0b70, 0x0003, 0x010b, 0x0112, 0x0119, 0x0005, - 0x0057, 0xffff, 0x0afb, 0x0b04, 0x0b0d, 0x0b16, 0x0005, 0x0000, - // Entry 4D280 - 4D2BF - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0057, 0xffff, - 0x0b1f, 0x0b3a, 0x0b55, 0x0b70, 0x0002, 0x0123, 0x0142, 0x0003, - 0x0127, 0x0130, 0x0139, 0x0002, 0x012a, 0x012d, 0x0001, 0x0057, - 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0002, 0x0133, 0x0136, 0x0001, - 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0002, 0x013c, 0x013f, - 0x0001, 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0003, 0x0146, - 0x014f, 0x0158, 0x0002, 0x0149, 0x014c, 0x0001, 0x0057, 0x0b8b, - 0x0001, 0x0057, 0x0b9e, 0x0002, 0x0152, 0x0155, 0x0001, 0x0057, - // Entry 4D2C0 - 4D2FF - 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0002, 0x015b, 0x015e, 0x0001, - 0x0057, 0x0b8b, 0x0001, 0x0057, 0x0b9e, 0x0003, 0x0170, 0x0000, - 0x0165, 0x0002, 0x0168, 0x016c, 0x0002, 0x0057, 0x0bb7, 0x0bd2, - 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0002, 0x0173, 0x0177, 0x0002, - 0x0057, 0x0bf3, 0x0bfd, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, - 0x0189, 0x0183, 0x0180, 0x0186, 0x0001, 0x0001, 0x1fa2, 0x0001, - 0x0001, 0x1fb0, 0x0001, 0x0002, 0x01f2, 0x0001, 0x0002, 0x01fb, - 0x0004, 0x019a, 0x0194, 0x0191, 0x0197, 0x0001, 0x0000, 0x0524, - // Entry 4D300 - 4D33F - 0x0001, 0x0000, 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, - 0x0546, 0x0004, 0x01ab, 0x01a5, 0x01a2, 0x01a8, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0040, 0x01ef, 0x0000, 0x0000, 0x01f4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x01f9, 0x0000, 0x0000, 0x01fe, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0203, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x020e, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 4D340 - 4D37F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0213, - 0x0000, 0x0218, 0x0000, 0x0000, 0x021d, 0x0000, 0x0000, 0x0222, - 0x0000, 0x0000, 0x0227, 0x0001, 0x01f1, 0x0001, 0x0057, 0x0c07, - 0x0001, 0x01f6, 0x0001, 0x0057, 0x0c17, 0x0001, 0x01fb, 0x0001, - 0x0057, 0x0c2d, 0x0001, 0x0200, 0x0001, 0x0057, 0x0c3d, 0x0002, - 0x0206, 0x0209, 0x0001, 0x0057, 0x0c53, 0x0003, 0x0057, 0x0c5d, - 0x0c6d, 0x0c7a, 0x0001, 0x0210, 0x0001, 0x0057, 0x0c8a, 0x0001, - // Entry 4D380 - 4D3BF - 0x0215, 0x0001, 0x0057, 0x0cae, 0x0001, 0x021a, 0x0001, 0x0057, - 0x0cf9, 0x0001, 0x021f, 0x0001, 0x0057, 0x0d0f, 0x0001, 0x0224, - 0x0001, 0x0057, 0x0d25, 0x0001, 0x0229, 0x0001, 0x0057, 0x0d38, - 0x0003, 0x0004, 0x0891, 0x0c13, 0x0012, 0x0017, 0x0038, 0x015b, - 0x0000, 0x01e2, 0x025d, 0x026c, 0x0297, 0x04c9, 0x0543, 0x05b5, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0638, 0x07fd, 0x086f, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0027, 0x0000, 0x9006, - 0x0001, 0x0022, 0x0001, 0x0024, 0x0001, 0x006e, 0x0000, 0x0004, - // Entry 4D3C0 - 4D3FF - 0x0035, 0x002f, 0x002c, 0x0032, 0x0001, 0x0035, 0x0719, 0x0001, - 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x006e, 0x0007, - 0x000a, 0x0043, 0x0000, 0x0000, 0x0000, 0x0000, 0x014a, 0x0000, - 0x0000, 0x00a8, 0x00bb, 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, - 0x0059, 0x0068, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, - 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, - 0x3dde, 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, - 0x00a0, 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x3de5, - // Entry 4D400 - 4D43F - 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, 0x0052, - 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x3dde, 0x0003, - 0x007b, 0x008a, 0x0099, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, - 0x0044, 0x004b, 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, - 0x007c, 0x3dde, 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, - 0x009c, 0x00a0, 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x3b05, - 0x3de5, 0x000d, 0x0035, 0xffff, 0x0036, 0x003d, 0x0044, 0x004b, - 0x0052, 0x0059, 0x0060, 0x0067, 0x006e, 0x0075, 0x007c, 0x3dde, - // Entry 4D440 - 4D47F - 0x0003, 0x00ac, 0x00b7, 0x00b1, 0x0003, 0x006e, 0xffff, 0xffff, - 0x000e, 0x0004, 0x006e, 0xffff, 0xffff, 0xffff, 0x000e, 0x0002, - 0x006e, 0xffff, 0x000e, 0x0006, 0x00c2, 0x0000, 0x0000, 0x00d5, - 0x00f4, 0x0137, 0x0001, 0x00c4, 0x0001, 0x00c6, 0x000d, 0x0035, - 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, 0x00dd, 0x00e1, 0x00e5, - 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, 0x0001, 0x00d7, 0x0001, - 0x00d9, 0x0019, 0x0035, 0xffff, 0x00fd, 0x0104, 0x3de9, 0x0112, - 0x0119, 0x3df0, 0x0127, 0x3df7, 0x3dfe, 0x013c, 0x0143, 0x014a, - // Entry 4D480 - 4D4BF - 0x0151, 0x3e05, 0x015f, 0x0166, 0x016d, 0x0174, 0x017b, 0x0182, - 0x0189, 0x0190, 0x0197, 0x019e, 0x0001, 0x00f6, 0x0001, 0x00f8, - 0x003d, 0x0035, 0xffff, 0x01a5, 0x01ac, 0x01b3, 0x01ba, 0x01c1, - 0x01c8, 0x01cf, 0x01d6, 0x01dd, 0x01e4, 0x01eb, 0x01f2, 0x01f9, - 0x0200, 0x0207, 0x020e, 0x0215, 0x021c, 0x0223, 0x022a, 0x0231, - 0x0238, 0x023f, 0x0246, 0x024d, 0x0254, 0x025b, 0x0262, 0x0269, - 0x0270, 0x0277, 0x027e, 0x0285, 0x028c, 0x0293, 0x029a, 0x02a1, - 0x02a8, 0x02af, 0x02b6, 0x02bd, 0x02c4, 0x02cb, 0x02d2, 0x02d9, - // Entry 4D4C0 - 4D4FF - 0x02e0, 0x02e7, 0x02ee, 0x02f5, 0x02fc, 0x0303, 0x030a, 0x0311, - 0x0318, 0x031f, 0x0326, 0x032d, 0x0334, 0x033b, 0x0342, 0x0001, - 0x0139, 0x0001, 0x013b, 0x000d, 0x0035, 0xffff, 0x0349, 0x034d, - 0x0351, 0x3b22, 0x3e0c, 0x035d, 0x3e10, 0x0365, 0x3b2a, 0x3e14, - 0x3b32, 0x0375, 0x0004, 0x0158, 0x0152, 0x014f, 0x0155, 0x0001, - 0x006e, 0x0015, 0x0001, 0x006e, 0x0023, 0x0001, 0x006d, 0x12b5, - 0x0001, 0x006d, 0x12be, 0x0005, 0x0161, 0x0000, 0x0000, 0x0000, - 0x01cc, 0x0002, 0x0164, 0x0198, 0x0003, 0x0168, 0x0178, 0x0188, - // Entry 4D500 - 4D53F - 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, - 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, - 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, - 0x000e, 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, - 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0087, - 0x0003, 0x019c, 0x01ac, 0x01bc, 0x000e, 0x0035, 0xffff, 0x050a, - 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, - // Entry 4D540 - 4D57F - 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, - 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006e, 0xffff, 0x002d, - 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, - 0x006c, 0x0073, 0x007d, 0x0087, 0x0003, 0x01d6, 0x01dc, 0x01d0, - 0x0001, 0x01d2, 0x0002, 0x006e, 0x0091, 0x00a1, 0x0001, 0x01d8, - 0x0002, 0x006e, 0x0091, 0x00a1, 0x0001, 0x01de, 0x0002, 0x006e, - 0x0091, 0x00a1, 0x0005, 0x01e8, 0x0000, 0x0000, 0x0000, 0x0253, - // Entry 4D580 - 4D5BF - 0x0002, 0x01eb, 0x021f, 0x0003, 0x01ef, 0x01ff, 0x020f, 0x000e, - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, - 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, - 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, - 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0087, 0x0003, - 0x0223, 0x0233, 0x0243, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, - // Entry 4D5C0 - 4D5FF - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006e, 0xffff, 0x002d, 0x0034, - 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, - 0x0073, 0x007d, 0x0087, 0x0003, 0x0000, 0x0000, 0x0257, 0x0001, - 0x0259, 0x0002, 0x006e, 0x00ae, 0x00c4, 0x0005, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0263, 0x0003, 0x0000, 0x0000, 0x0267, 0x0001, - // Entry 4D600 - 4D63F - 0x0269, 0x0001, 0x006e, 0x00d7, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0275, 0x0000, 0x0286, 0x0004, 0x0283, 0x027d, - 0x027a, 0x0280, 0x0001, 0x006e, 0x00fc, 0x0001, 0x006e, 0x010f, - 0x0001, 0x006e, 0x010f, 0x0001, 0x0035, 0x0503, 0x0004, 0x0294, - 0x028e, 0x028b, 0x0291, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, - 0x02a0, 0x0305, 0x035c, 0x0391, 0x0480, 0x0496, 0x04a7, 0x04b8, - 0x0002, 0x02a3, 0x02d4, 0x0003, 0x02a7, 0x02b6, 0x02c5, 0x000d, - // Entry 4D640 - 4D67F - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, - 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, 0xffff, - 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, - 0x0065, 0x006c, 0x0073, 0x007d, 0x0003, 0x02d8, 0x02e7, 0x02f6, - 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, - 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, - // Entry 4D680 - 4D6BF - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, - 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, - 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, - 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0002, 0x0308, 0x0332, - 0x0005, 0x030e, 0x0317, 0x0329, 0x0000, 0x0320, 0x0007, 0x006e, - 0x011e, 0x0125, 0x012c, 0x0133, 0x013a, 0x0141, 0x0148, 0x0007, - 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, - 0x0007, 0x006e, 0x011e, 0x0125, 0x012c, 0x0133, 0x013a, 0x0141, - // Entry 4D6C0 - 4D6FF - 0x0148, 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, 0x134b, 0x1355, - 0x135f, 0x1369, 0x0005, 0x0338, 0x0341, 0x0353, 0x0000, 0x034a, - 0x0007, 0x006e, 0x011e, 0x0125, 0x012c, 0x0133, 0x013a, 0x0141, - 0x0148, 0x0007, 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, - 0x00a0, 0x00a4, 0x0007, 0x006e, 0x011e, 0x0125, 0x012c, 0x0133, - 0x013a, 0x0141, 0x0148, 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, - 0x134b, 0x1355, 0x135f, 0x1369, 0x0002, 0x035f, 0x0378, 0x0003, - 0x0363, 0x036a, 0x0371, 0x0005, 0x006e, 0xffff, 0x014f, 0x0157, - // Entry 4D700 - 4D73F - 0x015f, 0x0167, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x006e, 0xffff, 0x016f, 0x017c, 0x0189, 0x0196, - 0x0003, 0x037c, 0x0383, 0x038a, 0x0005, 0x006e, 0xffff, 0x014f, - 0x0157, 0x015f, 0x0167, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x0005, 0x006e, 0xffff, 0x016f, 0x017c, 0x0189, - 0x0196, 0x0002, 0x0394, 0x040a, 0x0003, 0x0398, 0x03be, 0x03e4, - 0x000a, 0x03a6, 0x03a9, 0x03a3, 0x03ac, 0x03b2, 0x03b8, 0x03bb, - 0x0000, 0x03af, 0x03b5, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, - // Entry 4D740 - 4D77F - 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, - 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, - 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, 0x13cb, 0x000a, 0x03cc, - 0x03cf, 0x03c9, 0x03d2, 0x03d8, 0x03de, 0x03e1, 0x0000, 0x03d5, - 0x03db, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, - 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, - 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, - 0x01a3, 0x0001, 0x006d, 0x13cb, 0x000a, 0x03f2, 0x03f5, 0x03ef, - // Entry 4D780 - 4D7BF - 0x03f8, 0x03fe, 0x0404, 0x0407, 0x0000, 0x03fb, 0x0401, 0x0001, - 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, - 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, - 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, - 0x006d, 0x13cb, 0x0003, 0x040e, 0x0434, 0x045a, 0x000a, 0x041c, - 0x041f, 0x0419, 0x0422, 0x0428, 0x042e, 0x0431, 0x0000, 0x0425, - 0x042b, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, - 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, - // Entry 4D7C0 - 4D7FF - 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, - 0x01a3, 0x0001, 0x006d, 0x13cb, 0x000a, 0x0442, 0x0445, 0x043f, - 0x0448, 0x044e, 0x0454, 0x0457, 0x0000, 0x044b, 0x0451, 0x0001, - 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, - 0x0001, 0x006e, 0x01aa, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, - 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, - 0x006d, 0x13cb, 0x000a, 0x0468, 0x046b, 0x0465, 0x046e, 0x0474, - 0x047a, 0x047d, 0x0000, 0x0471, 0x0477, 0x0001, 0x006d, 0x1393, - // Entry 4D800 - 4D83F - 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, - 0x01aa, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, 0x0001, - 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, 0x13cb, - 0x0003, 0x048a, 0x0490, 0x0484, 0x0001, 0x0486, 0x0002, 0x006d, - 0x13dc, 0x13ed, 0x0001, 0x048c, 0x0002, 0x006d, 0x13dc, 0x13ed, - 0x0001, 0x0492, 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0004, 0x04a4, - 0x049e, 0x049b, 0x04a1, 0x0001, 0x0035, 0x064a, 0x0001, 0x0035, - 0x065b, 0x0001, 0x0035, 0x065b, 0x0001, 0x0021, 0x05f2, 0x0004, - // Entry 4D840 - 4D87F - 0x04b5, 0x04af, 0x04ac, 0x04b2, 0x0001, 0x006e, 0x01b1, 0x0001, - 0x006e, 0x01bf, 0x0001, 0x006d, 0x1423, 0x0001, 0x006d, 0x142c, - 0x0004, 0x04c6, 0x04c0, 0x04bd, 0x04c3, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0006, 0x04d0, 0x0000, 0x0000, 0x0000, 0x052b, 0x0532, - 0x0002, 0x04d3, 0x04f7, 0x0003, 0x04d7, 0x0000, 0x04e7, 0x000e, - 0x0035, 0x3e18, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, - // Entry 4D880 - 4D8BF - 0x006e, 0x01ca, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, - 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0087, 0x0003, - 0x04fb, 0x050b, 0x051b, 0x000e, 0x0035, 0x3e18, 0x050a, 0x050f, - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0x41bc, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006e, 0x01ca, 0x002d, 0x0034, - 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, - // Entry 4D8C0 - 4D8FF - 0x0073, 0x007d, 0x0087, 0x0001, 0x052d, 0x0001, 0x052f, 0x0001, - 0x006e, 0x01d4, 0x0004, 0x0540, 0x053a, 0x0537, 0x053d, 0x0001, - 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, - 0x0001, 0x006e, 0x0007, 0x0005, 0x0549, 0x0000, 0x0000, 0x0000, - 0x05ae, 0x0002, 0x054c, 0x057d, 0x0003, 0x0550, 0x055f, 0x056e, - 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, - 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, - // Entry 4D900 - 4D93F - 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, - 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, - 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0003, 0x0581, 0x0590, - 0x059f, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, - 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, - 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, - 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, - 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, - // Entry 4D940 - 4D97F - 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0001, 0x05b0, - 0x0001, 0x05b2, 0x0001, 0x006e, 0x01e1, 0x0008, 0x05be, 0x0000, - 0x0000, 0x0000, 0x0623, 0x062a, 0x0000, 0x9006, 0x0002, 0x05c1, - 0x05f2, 0x0003, 0x05c5, 0x05d4, 0x05e3, 0x000d, 0x0035, 0xffff, - 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, - 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, - 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, - 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, 0xffff, 0x002d, 0x0034, - // Entry 4D980 - 4D9BF - 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, - 0x0073, 0x007d, 0x0003, 0x05f6, 0x0605, 0x0614, 0x000d, 0x0035, - 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, - 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, - 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006e, 0xffff, 0x002d, - 0x0034, 0x003b, 0x0042, 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, - 0x006c, 0x0073, 0x007d, 0x0001, 0x0625, 0x0001, 0x0627, 0x0001, - // Entry 4D9C0 - 4D9FF - 0x006e, 0x01eb, 0x0004, 0x0000, 0x0632, 0x062f, 0x0635, 0x0001, - 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0641, 0x07db, 0x0000, - 0x07ec, 0x0002, 0x0644, 0x0734, 0x0001, 0x0646, 0x00ec, 0x006e, - 0x01f8, 0x020b, 0x021e, 0x0231, 0x0244, 0x0257, 0x026a, 0x027d, - 0x0290, 0x02a3, 0x02b6, 0x02c9, 0x02e2, 0x02fb, 0x0314, 0x032d, - 0x0346, 0x0359, 0x036c, 0x037f, 0x0392, 0x03a5, 0x03b8, 0x03cb, - 0x03de, 0x03f1, 0x0404, 0x0417, 0x042a, 0x043d, 0x0450, 0x0463, - // Entry 4DA00 - 4DA3F - 0x0476, 0x0489, 0x049c, 0x04af, 0x04c2, 0x04d5, 0x04e8, 0x04fb, - 0x050e, 0x0521, 0x0534, 0x0547, 0x055a, 0x056d, 0x0580, 0x0593, - 0x05a6, 0x05b9, 0x05cc, 0x05df, 0x05f3, 0x0608, 0x061d, 0x0632, - 0x0647, 0x065c, 0x0671, 0x0686, 0x069b, 0x06b0, 0x06c5, 0x06da, - 0x06ef, 0x0704, 0x0719, 0x072e, 0x0743, 0x0758, 0x076d, 0x0782, - 0x0797, 0x07ac, 0x07c1, 0x07d6, 0x07eb, 0x0800, 0x0815, 0x082a, - 0x083f, 0x0854, 0x0869, 0x087e, 0x0893, 0x08a8, 0x08bd, 0x08d2, - 0x08e7, 0x08fc, 0x0911, 0x0926, 0x093b, 0x0950, 0x0965, 0x097a, - // Entry 4DA40 - 4DA7F - 0x098f, 0x09a4, 0x09b9, 0x09ce, 0x09e3, 0x09f8, 0x0a0d, 0x0a22, - 0x0a37, 0x0a4c, 0x0a61, 0x0a76, 0x0a8b, 0x0aa0, 0x0ab5, 0x0aca, - 0x0adf, 0x0af4, 0x0b09, 0x0b1e, 0x0b33, 0x0b48, 0x0b5d, 0x0b72, - 0x0b87, 0x0b9c, 0x0bb1, 0x0bc6, 0x0bdb, 0x0bf0, 0x0c05, 0x0c1a, - 0x0c2f, 0x0c44, 0x0c59, 0x0c6e, 0x0c83, 0x0c98, 0x0cad, 0x0cc2, - 0x0cd7, 0x0cec, 0x0d01, 0x0d16, 0x0d2b, 0x0d40, 0x0d55, 0x0d6a, - 0x0d7f, 0x0d94, 0x0da9, 0x0dbe, 0x0dd3, 0x0de8, 0x0dfd, 0x0e12, - 0x0e27, 0x0e3c, 0x0e51, 0x0e66, 0x0e7b, 0x0e90, 0x0ea5, 0x0eba, - // Entry 4DA80 - 4DABF - 0x0ecf, 0x0ee4, 0x0ef9, 0x0f0e, 0x0f23, 0x0f38, 0x0f4d, 0x0f62, - 0x0f77, 0x0f8c, 0x0fa1, 0x0fb6, 0x0fcb, 0x0fe0, 0x0ff5, 0x100a, - 0x101f, 0x1034, 0x1049, 0x105e, 0x1073, 0x1088, 0x109d, 0x10b2, - 0x10c7, 0x10dc, 0x10f1, 0x1106, 0x111b, 0x1130, 0x1145, 0x115a, - 0x116f, 0x1184, 0x1199, 0x11ae, 0x11c3, 0x11d8, 0x11ed, 0x1202, - 0x1217, 0x122c, 0x1241, 0x1256, 0x126b, 0x1280, 0x1295, 0x12aa, - 0x12bf, 0x12d4, 0x12e9, 0x12fe, 0x1313, 0x1328, 0x133d, 0x1352, - 0x1367, 0x137c, 0x1391, 0x13a6, 0x13bb, 0x13d0, 0x13e5, 0x13fa, - // Entry 4DAC0 - 4DAFF - 0x140f, 0x1424, 0x1439, 0x144e, 0x1463, 0x1478, 0x148d, 0x14a2, - 0x14b7, 0x14be, 0x14c5, 0x14cc, 0x0001, 0x0736, 0x00a3, 0x006e, - 0x14d3, 0x14e5, 0x14f7, 0x1509, 0x151b, 0x152d, 0x153f, 0x1551, - 0x1563, 0x1575, 0x1587, 0x1599, 0x15b1, 0x15c9, 0x15e1, 0x15f9, - 0x1611, 0x1623, 0x1635, 0x1647, 0x1659, 0x166b, 0x167d, 0x168f, - 0x16a1, 0x16b3, 0x16c5, 0x16d7, 0x16e9, 0x16fb, 0x170d, 0x171f, - 0x1731, 0x1743, 0x1755, 0x1767, 0x1779, 0x178b, 0x179d, 0x17af, - 0x17c1, 0x17d3, 0x17e5, 0x17f7, 0x1809, 0x181b, 0x182d, 0x183f, - // Entry 4DB00 - 4DB3F - 0x1851, 0x1863, 0x1875, 0x1887, 0x189a, 0x18ae, 0x18c2, 0x18d6, - 0x18ea, 0x18fe, 0x1912, 0x1926, 0x193a, 0x194e, 0x1962, 0x1976, - 0x198a, 0x199e, 0x19b2, 0x19c6, 0x19da, 0x19ee, 0x1a02, 0x1a16, - 0x1a2a, 0x1a3e, 0x1a52, 0x1a66, 0x1a7a, 0x1a8e, 0x1aa2, 0x1ab6, - 0x1aca, 0x1ade, 0x1af2, 0x1b06, 0x1b1a, 0x1b2e, 0x1b42, 0x1b56, - 0x1b6a, 0x1b7e, 0x1b92, 0x1ba6, 0x1bba, 0x1bce, 0x1be2, 0x1bf6, - 0x1c0a, 0x1c1e, 0x1c32, 0x1c46, 0x1c5a, 0x1c6e, 0x1c82, 0x1c96, - 0x1caa, 0x1cbe, 0x1cd2, 0x1ce6, 0x1cfa, 0x1d0e, 0x1d22, 0x1d36, - // Entry 4DB40 - 4DB7F - 0x1d4a, 0x1d5e, 0x1d72, 0x1d86, 0x1d9a, 0x1dae, 0x1dc2, 0x1dd6, - 0x1dea, 0x1dfe, 0x1e12, 0x1e26, 0x1e3a, 0x1e4e, 0x1e62, 0x1e76, - 0x1e8a, 0x1e9e, 0x1eb2, 0x1ec6, 0x1eda, 0x1eee, 0x1f02, 0x1f16, - 0x1f2a, 0x1f3e, 0x1f52, 0x1f66, 0x1f7a, 0x1f8e, 0x1fa2, 0x1fb6, - 0x1fca, 0x1fde, 0x1ff2, 0x2006, 0x201a, 0x202e, 0x2042, 0x2056, - 0x206a, 0x207e, 0x2092, 0x20a6, 0x20ba, 0x20ce, 0x20e2, 0x20f6, - 0x210a, 0x211e, 0x2132, 0x0004, 0x07e9, 0x07e3, 0x07e0, 0x07e6, - 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, - // Entry 4DB80 - 4DBBF - 0x04f5, 0x0001, 0x006f, 0x0000, 0x0004, 0x07fa, 0x07f4, 0x07f1, - 0x07f7, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0803, 0x0000, - 0x0000, 0x0000, 0x0868, 0x0002, 0x0806, 0x0837, 0x0003, 0x080a, - 0x0819, 0x0828, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, - 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, - 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, - // Entry 4DBC0 - 4DBFF - 0x000d, 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, 0x0049, - 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, 0x0003, - 0x083b, 0x084a, 0x0859, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, - 0x41c4, 0x000d, 0x006e, 0xffff, 0x002d, 0x0034, 0x003b, 0x0042, - 0x0049, 0x0050, 0x0057, 0x005e, 0x0065, 0x006c, 0x0073, 0x007d, - // Entry 4DC00 - 4DC3F - 0x0001, 0x086a, 0x0001, 0x086c, 0x0001, 0x006f, 0x000a, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0878, 0x0880, 0x0000, 0x9006, - 0x0001, 0x087a, 0x0001, 0x087c, 0x0002, 0x0035, 0x105c, 0x1066, - 0x0004, 0x088e, 0x0888, 0x0885, 0x088b, 0x0001, 0x0035, 0x0719, - 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x006f, - 0x0014, 0x0040, 0x08d2, 0x0000, 0x0000, 0x08d7, 0x08ec, 0x08fc, - 0x090c, 0x0921, 0x0931, 0x0941, 0x0956, 0x0966, 0x0976, 0x098f, - 0x09a3, 0x0000, 0x0000, 0x0000, 0x09b7, 0x09ce, 0x09de, 0x0000, - // Entry 4DC40 - 4DC7F - 0x0000, 0x0000, 0x09ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x09f3, 0x0a05, 0x0a17, 0x0a29, 0x0a3b, 0x0a4d, 0x0a5f, 0x0a71, - 0x0a83, 0x0a95, 0x0aa7, 0x0ab9, 0x0acb, 0x0add, 0x0aef, 0x0b01, - 0x0b13, 0x0b25, 0x0b37, 0x0b49, 0x0b5b, 0x0000, 0x0b6d, 0x0000, - 0x0b72, 0x0b86, 0x0b96, 0x0ba6, 0x0bba, 0x0bca, 0x0bda, 0x0bee, - 0x0bfe, 0x0c0e, 0x0001, 0x08d4, 0x0001, 0x006f, 0x001c, 0x0003, - 0x08db, 0x08de, 0x08e3, 0x0001, 0x0035, 0x1074, 0x0003, 0x006f, - 0x0023, 0x002a, 0x0031, 0x0002, 0x08e6, 0x08e9, 0x0001, 0x006f, - // Entry 4DC80 - 4DCBF - 0x0038, 0x0001, 0x0035, 0x10ad, 0x0003, 0x08f0, 0x0000, 0x08f3, - 0x0001, 0x0035, 0x1074, 0x0002, 0x08f6, 0x08f9, 0x0001, 0x006f, - 0x0038, 0x0001, 0x0035, 0x10ad, 0x0003, 0x0900, 0x0000, 0x0903, - 0x0001, 0x0035, 0x1074, 0x0002, 0x0906, 0x0909, 0x0001, 0x006f, - 0x0038, 0x0001, 0x0035, 0x10ad, 0x0003, 0x0910, 0x0913, 0x0918, - 0x0001, 0x006f, 0x0042, 0x0003, 0x006f, 0x0049, 0x0053, 0x005d, - 0x0002, 0x091b, 0x091e, 0x0001, 0x006f, 0x0067, 0x0001, 0x006f, - 0x0077, 0x0003, 0x0925, 0x0000, 0x0928, 0x0001, 0x006d, 0x1697, - // Entry 4DCC0 - 4DCFF - 0x0002, 0x092b, 0x092e, 0x0001, 0x006f, 0x0067, 0x0001, 0x006f, - 0x0077, 0x0003, 0x0935, 0x0000, 0x0938, 0x0001, 0x006d, 0x1697, - 0x0002, 0x093b, 0x093e, 0x0001, 0x006f, 0x0067, 0x0001, 0x006f, - 0x0077, 0x0003, 0x0945, 0x0948, 0x094d, 0x0001, 0x0035, 0x054d, - 0x0003, 0x006f, 0x0087, 0x0091, 0x0098, 0x0002, 0x0950, 0x0953, - 0x0001, 0x006f, 0x00a2, 0x0001, 0x006f, 0x00af, 0x0003, 0x095a, - 0x0000, 0x095d, 0x0001, 0x0035, 0x054d, 0x0002, 0x0960, 0x0963, - 0x0001, 0x006f, 0x00a2, 0x0001, 0x006f, 0x00af, 0x0003, 0x096a, - // Entry 4DD00 - 4DD3F - 0x0000, 0x096d, 0x0001, 0x0035, 0x054d, 0x0002, 0x0970, 0x0973, - 0x0001, 0x006f, 0x00a2, 0x0001, 0x006f, 0x00af, 0x0004, 0x097b, - 0x097e, 0x0983, 0x098c, 0x0001, 0x006f, 0x00bc, 0x0003, 0x006f, - 0x00c0, 0x00c7, 0x00ce, 0x0002, 0x0986, 0x0989, 0x0001, 0x006f, - 0x00d5, 0x0001, 0x006f, 0x00df, 0x0001, 0x006f, 0x00e9, 0x0004, - 0x0994, 0x0000, 0x0997, 0x09a0, 0x0001, 0x006f, 0x00bc, 0x0002, - 0x099a, 0x099d, 0x0001, 0x006f, 0x00d5, 0x0001, 0x006f, 0x00df, - 0x0001, 0x006f, 0x00e9, 0x0004, 0x09a8, 0x0000, 0x09ab, 0x09b4, - // Entry 4DD40 - 4DD7F - 0x0001, 0x006f, 0x00bc, 0x0002, 0x09ae, 0x09b1, 0x0001, 0x006f, - 0x00d5, 0x0001, 0x006f, 0x00df, 0x0001, 0x006f, 0x00e9, 0x0003, - 0x09bb, 0x09be, 0x09c5, 0x0001, 0x0035, 0x0549, 0x0005, 0x006d, - 0x35f1, 0x35f8, 0x35ff, 0x1764, 0x3606, 0x0002, 0x09c8, 0x09cb, - 0x0001, 0x006f, 0x00f3, 0x0001, 0x006f, 0x00fd, 0x0003, 0x09d2, - 0x0000, 0x09d5, 0x0001, 0x0035, 0x0549, 0x0002, 0x09d8, 0x09db, - 0x0001, 0x006f, 0x00f3, 0x0001, 0x006f, 0x00fd, 0x0003, 0x09e2, - 0x0000, 0x09e5, 0x0001, 0x0035, 0x0549, 0x0002, 0x09e8, 0x09eb, - // Entry 4DD80 - 4DDBF - 0x0001, 0x006f, 0x00f3, 0x0001, 0x006f, 0x00fd, 0x0001, 0x09f0, - 0x0001, 0x006f, 0x0107, 0x0003, 0x0000, 0x09f7, 0x09fc, 0x0003, - 0x006f, 0x0111, 0x011b, 0x0125, 0x0002, 0x09ff, 0x0a02, 0x0001, - 0x006f, 0x012f, 0x0001, 0x006f, 0x013f, 0x0003, 0x0000, 0x0a09, - 0x0a0e, 0x0003, 0x006f, 0x0111, 0x011b, 0x0125, 0x0002, 0x0a11, - 0x0a14, 0x0001, 0x006f, 0x012f, 0x0001, 0x006f, 0x013f, 0x0003, - 0x0000, 0x0a1b, 0x0a20, 0x0003, 0x006f, 0x0111, 0x011b, 0x0125, - 0x0002, 0x0a23, 0x0a26, 0x0001, 0x006f, 0x012f, 0x0001, 0x006f, - // Entry 4DDC0 - 4DDFF - 0x013f, 0x0003, 0x0000, 0x0a2d, 0x0a32, 0x0003, 0x006f, 0x014f, - 0x0159, 0x0163, 0x0002, 0x0a35, 0x0a38, 0x0001, 0x006f, 0x016d, - 0x0001, 0x006f, 0x017d, 0x0003, 0x0000, 0x0a3f, 0x0a44, 0x0003, - 0x006f, 0x014f, 0x0159, 0x0163, 0x0002, 0x0a47, 0x0a4a, 0x0001, - 0x006f, 0x016d, 0x0001, 0x006f, 0x017d, 0x0003, 0x0000, 0x0a51, - 0x0a56, 0x0003, 0x006f, 0x014f, 0x0159, 0x0163, 0x0002, 0x0a59, - 0x0a5c, 0x0001, 0x006f, 0x016d, 0x0001, 0x006f, 0x017d, 0x0003, - 0x0000, 0x0a63, 0x0a68, 0x0003, 0x006f, 0x018d, 0x0197, 0x01a1, - // Entry 4DE00 - 4DE3F - 0x0002, 0x0a6b, 0x0a6e, 0x0001, 0x006f, 0x01ab, 0x0001, 0x006f, - 0x01bb, 0x0003, 0x0000, 0x0a75, 0x0a7a, 0x0003, 0x006f, 0x018d, - 0x0197, 0x01a1, 0x0002, 0x0a7d, 0x0a80, 0x0001, 0x006f, 0x01ab, - 0x0001, 0x006f, 0x01bb, 0x0003, 0x0000, 0x0a87, 0x0a8c, 0x0003, - 0x006f, 0x018d, 0x0197, 0x01a1, 0x0002, 0x0a8f, 0x0a92, 0x0001, - 0x006f, 0x01ab, 0x0001, 0x006f, 0x01bb, 0x0003, 0x0000, 0x0a99, - 0x0a9e, 0x0003, 0x006f, 0x01cb, 0x01d5, 0x01df, 0x0002, 0x0aa1, - 0x0aa4, 0x0001, 0x006f, 0x01e9, 0x0001, 0x006f, 0x01f9, 0x0003, - // Entry 4DE40 - 4DE7F - 0x0000, 0x0aab, 0x0ab0, 0x0003, 0x006f, 0x01cb, 0x01d5, 0x01df, - 0x0002, 0x0ab3, 0x0ab6, 0x0001, 0x006f, 0x01e9, 0x0001, 0x006f, - 0x01f9, 0x0003, 0x0000, 0x0abd, 0x0ac2, 0x0003, 0x006f, 0x01cb, - 0x01d5, 0x01df, 0x0002, 0x0ac5, 0x0ac8, 0x0001, 0x006f, 0x01e9, - 0x0001, 0x006f, 0x01f9, 0x0003, 0x0000, 0x0acf, 0x0ad4, 0x0003, - 0x006f, 0x0209, 0x0213, 0x021d, 0x0002, 0x0ad7, 0x0ada, 0x0001, - 0x006f, 0x0227, 0x0001, 0x006f, 0x0237, 0x0003, 0x0000, 0x0ae1, - 0x0ae6, 0x0003, 0x006f, 0x0209, 0x0213, 0x021d, 0x0002, 0x0ae9, - // Entry 4DE80 - 4DEBF - 0x0aec, 0x0001, 0x006f, 0x0227, 0x0001, 0x006f, 0x0237, 0x0003, - 0x0000, 0x0af3, 0x0af8, 0x0003, 0x006f, 0x0209, 0x0213, 0x021d, - 0x0002, 0x0afb, 0x0afe, 0x0001, 0x006f, 0x0227, 0x0001, 0x006f, - 0x0237, 0x0003, 0x0000, 0x0b05, 0x0b0a, 0x0003, 0x006f, 0x0247, - 0x0251, 0x025b, 0x0002, 0x0b0d, 0x0b10, 0x0001, 0x006f, 0x0265, - 0x0001, 0x006f, 0x0275, 0x0003, 0x0000, 0x0b17, 0x0b1c, 0x0003, - 0x006f, 0x0247, 0x0251, 0x025b, 0x0002, 0x0b1f, 0x0b22, 0x0001, - 0x006f, 0x0265, 0x0001, 0x006f, 0x0275, 0x0003, 0x0000, 0x0b29, - // Entry 4DEC0 - 4DEFF - 0x0b2e, 0x0003, 0x006f, 0x0247, 0x0251, 0x025b, 0x0002, 0x0b31, - 0x0b34, 0x0001, 0x006f, 0x0265, 0x0001, 0x006f, 0x0275, 0x0003, - 0x0000, 0x0b3b, 0x0b40, 0x0003, 0x006f, 0x0285, 0x028f, 0x0299, - 0x0002, 0x0b43, 0x0b46, 0x0001, 0x006f, 0x02a3, 0x0001, 0x006f, - 0x02b3, 0x0003, 0x0000, 0x0b4d, 0x0b52, 0x0003, 0x006f, 0x0285, - 0x028f, 0x0299, 0x0002, 0x0b55, 0x0b58, 0x0001, 0x006f, 0x02a3, - 0x0001, 0x006f, 0x02b3, 0x0003, 0x0000, 0x0b5f, 0x0b64, 0x0003, - 0x006f, 0x0285, 0x028f, 0x0299, 0x0002, 0x0b67, 0x0b6a, 0x0001, - // Entry 4DF00 - 4DF3F - 0x006f, 0x02a3, 0x0001, 0x006f, 0x02b3, 0x0001, 0x0b6f, 0x0001, - 0x006d, 0x19cc, 0x0003, 0x0b76, 0x0b79, 0x0b7d, 0x0001, 0x006f, - 0x02c3, 0x0002, 0x006f, 0xffff, 0x02ca, 0x0002, 0x0b80, 0x0b83, - 0x0001, 0x006f, 0x02e0, 0x0001, 0x006f, 0x02ed, 0x0003, 0x0b8a, - 0x0000, 0x0b8d, 0x0001, 0x006f, 0x02c3, 0x0002, 0x0b90, 0x0b93, - 0x0001, 0x006f, 0x02e0, 0x0001, 0x006f, 0x02ed, 0x0003, 0x0b9a, - 0x0000, 0x0b9d, 0x0001, 0x006f, 0x02c3, 0x0002, 0x0ba0, 0x0ba3, - 0x0001, 0x006f, 0x02e0, 0x0001, 0x006f, 0x02ed, 0x0003, 0x0baa, - // Entry 4DF40 - 4DF7F - 0x0bad, 0x0bb1, 0x0001, 0x006f, 0x02fa, 0x0002, 0x006f, 0xffff, - 0x0301, 0x0002, 0x0bb4, 0x0bb7, 0x0001, 0x006f, 0x0308, 0x0001, - 0x006f, 0x0315, 0x0003, 0x0bbe, 0x0000, 0x0bc1, 0x0001, 0x0035, - 0x18d3, 0x0002, 0x0bc4, 0x0bc7, 0x0001, 0x006f, 0x0308, 0x0001, - 0x006f, 0x0315, 0x0003, 0x0bce, 0x0000, 0x0bd1, 0x0001, 0x0035, - 0x18d3, 0x0002, 0x0bd4, 0x0bd7, 0x0001, 0x006f, 0x0308, 0x0001, - 0x006f, 0x0315, 0x0003, 0x0bde, 0x0be1, 0x0be5, 0x0001, 0x0035, - 0x190d, 0x0002, 0x006f, 0xffff, 0x0322, 0x0002, 0x0be8, 0x0beb, - // Entry 4DF80 - 4DFBF - 0x0001, 0x006f, 0x0329, 0x0001, 0x006f, 0x0336, 0x0003, 0x0bf2, - 0x0000, 0x0bf5, 0x0001, 0x0035, 0x190d, 0x0002, 0x0bf8, 0x0bfb, - 0x0001, 0x006f, 0x0343, 0x0001, 0x0035, 0x1935, 0x0003, 0x0c02, - 0x0000, 0x0c05, 0x0001, 0x0035, 0x190d, 0x0002, 0x0c08, 0x0c0b, - 0x0001, 0x006f, 0x0343, 0x0001, 0x0035, 0x1935, 0x0001, 0x0c10, - 0x0001, 0x006f, 0x034d, 0x0004, 0x0c18, 0x0c1d, 0x0c22, 0x0c31, - 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x006f, 0x0354, - 0x035e, 0x036e, 0x0002, 0x0000, 0x0c25, 0x0003, 0x0000, 0x0c2c, - // Entry 4DFC0 - 4DFFF - 0x0c29, 0x0001, 0x006f, 0x037e, 0x0003, 0x006f, 0xffff, 0x038e, - 0x03a1, 0x0002, 0x0000, 0x0c34, 0x0003, 0x0c38, 0x0d78, 0x0cd8, - 0x009e, 0x006f, 0xffff, 0xffff, 0xffff, 0xffff, 0x043c, 0x0481, - 0x050b, 0x0547, 0x058c, 0x05d1, 0x0616, 0x0664, 0x06a9, 0x0766, - 0x07a2, 0x07de, 0x082c, 0x0871, 0x08ad, 0x0904, 0x0964, 0x09bb, - 0x0a12, 0x0a57, 0x0aa5, 0xffff, 0xffff, 0x0b07, 0xffff, 0x0b65, - 0xffff, 0x0bbe, 0x0bf1, 0x0c24, 0x0c57, 0xffff, 0xffff, 0x0cb9, - 0x0cfe, 0x0d43, 0xffff, 0xffff, 0xffff, 0x0daf, 0xffff, 0x0e0d, - // Entry 4E000 - 4E03F - 0x0e40, 0xffff, 0x0e86, 0x0eb9, 0x0f07, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0f9e, 0xffff, 0xffff, 0x1015, 0x106c, 0xffff, 0xffff, - 0x10f3, 0x114d, 0x1180, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1240, 0x1273, 0x12c1, 0x12fd, 0x1330, 0xffff, 0xffff, - 0x13f8, 0xffff, 0x143b, 0xffff, 0xffff, 0x14dd, 0xffff, 0x1568, - 0xffff, 0xffff, 0xffff, 0xffff, 0x15f9, 0xffff, 0x164b, 0x16a2, - 0x16f9, 0x173e, 0xffff, 0xffff, 0xffff, 0x17a4, 0x17fb, 0x1837, - 0xffff, 0xffff, 0x1893, 0x192d, 0x197b, 0x19c0, 0xffff, 0xffff, - // Entry 4E040 - 4E07F - 0x1a2e, 0x1a6a, 0x1a9d, 0xffff, 0x1af2, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1c0b, 0x1c47, 0x1c83, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1d41, 0xffff, 0xffff, 0x1d9a, - 0xffff, 0x1dda, 0xffff, 0x1e38, 0x1e74, 0x1ecb, 0xffff, 0x1f23, - 0x1f5f, 0xffff, 0xffff, 0xffff, 0x1fec, 0x2031, 0xffff, 0xffff, - 0x03b7, 0x04c6, 0x06e5, 0x0721, 0xffff, 0xffff, 0x1522, 0x1b9d, - 0x009e, 0x006f, 0x03f3, 0x0403, 0x0416, 0x0429, 0x044f, 0x0494, - 0x051b, 0x055a, 0x059f, 0x05e4, 0x062c, 0x0677, 0x06b9, 0x0776, - // Entry 4E080 - 4E0BF - 0x07b2, 0x07f4, 0x083f, 0x0881, 0x08c6, 0x0920, 0x097d, 0x09d4, - 0x0a25, 0x0a6d, 0x0ab5, 0x0ae1, 0x0aee, 0x0b1a, 0x0b4c, 0x0b75, - 0x0bae, 0x0bcb, 0x0bfe, 0x0c31, 0x0c67, 0x0c93, 0x0ca3, 0x0ccc, - 0x0d11, 0x0d50, 0x0d76, 0x0d86, 0x0d9f, 0x0dc2, 0x0df4, 0x0e1a, - 0x0e4d, 0x0e73, 0x0e93, 0x0ecf, 0x0f14, 0x0f3a, 0x0f56, 0x0f78, - 0x0f8e, 0x0fb1, 0x0fe3, 0x0ffc, 0x102e, 0x1085, 0x10d0, 0x10e3, - 0x110d, 0x115a, 0x1190, 0x11bc, 0x11c9, 0x11d9, 0x11ec, 0x1208, - 0x1224, 0x124d, 0x1289, 0x12d1, 0x130a, 0x135c, 0x13c0, 0x13dc, - // Entry 4E0C0 - 4E0FF - 0x1405, 0x142b, 0x145a, 0x14a4, 0x14ca, 0x14f0, 0x1555, 0x1578, - 0x15a4, 0x15b7, 0x15ca, 0x15e3, 0x160c, 0x163e, 0x1664, 0x16bb, - 0x170c, 0x174e, 0x177a, 0x1787, 0x1794, 0x17bd, 0x180b, 0x1847, - 0x1873, 0x1880, 0x18b9, 0x1943, 0x198e, 0x19d3, 0x1a05, 0x1a12, - 0x1a3e, 0x1a77, 0x1aad, 0x1ad9, 0x1b17, 0x1b6d, 0x1b80, 0x1b90, - 0x1beb, 0x1bfb, 0x1c1b, 0x1c57, 0x1c93, 0x1cbf, 0x1ccf, 0x1ce5, - 0x1cfb, 0x1d11, 0x1d21, 0x1d2e, 0x1d4e, 0x1d74, 0x1d8a, 0x1da7, - 0x1dcd, 0x1df0, 0x1e28, 0x1e48, 0x1e8d, 0x1ede, 0x1f10, 0x1f33, - // Entry 4E100 - 4E13F - 0x1f75, 0x1fad, 0x1fc0, 0x1fd0, 0x1fff, 0x2047, 0x10c3, 0x1911, - 0x03c7, 0x04d9, 0x06f5, 0x0734, 0x0ba1, 0x14bd, 0x152f, 0x1bb3, - 0x009e, 0x006f, 0xffff, 0xffff, 0xffff, 0xffff, 0x0468, 0x04ad, - 0x0531, 0x0573, 0x05b8, 0x05fd, 0x0648, 0x0690, 0x06cf, 0x078c, - 0x07c8, 0x0810, 0x0858, 0x0897, 0x08e5, 0x0942, 0x099c, 0x09f3, - 0x0a3e, 0x0a89, 0x0acb, 0xffff, 0xffff, 0x0b33, 0xffff, 0x0b8b, - 0xffff, 0x0bde, 0x0c11, 0x0c44, 0x0c7d, 0xffff, 0xffff, 0x0ce5, - 0x0d2a, 0x0d63, 0xffff, 0xffff, 0xffff, 0x0ddb, 0xffff, 0x0e2d, - // Entry 4E140 - 4E17F - 0x0e60, 0xffff, 0x0ea6, 0x0eeb, 0x0f27, 0xffff, 0xffff, 0xffff, - 0xffff, 0x0fca, 0xffff, 0xffff, 0x104d, 0x10a4, 0xffff, 0xffff, - 0x112d, 0x116d, 0x11a6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x1260, 0x12a5, 0x12e7, 0x131d, 0x138e, 0xffff, 0xffff, - 0x1418, 0xffff, 0x147f, 0xffff, 0xffff, 0x1509, 0xffff, 0x158e, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1625, 0xffff, 0x1683, 0x16da, - 0x1725, 0x1764, 0xffff, 0xffff, 0xffff, 0x17dc, 0x1821, 0x185d, - 0xffff, 0xffff, 0x18e5, 0x195f, 0x19a7, 0x19ec, 0xffff, 0xffff, - // Entry 4E180 - 4E1BF - 0x1a54, 0x1a8a, 0x1ac3, 0xffff, 0x1b42, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x1c31, 0x1c6d, 0x1ca9, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x1d61, 0xffff, 0xffff, 0x1dba, - 0xffff, 0x1e0c, 0xffff, 0x1e5e, 0x1eac, 0x1ef7, 0xffff, 0x1f49, - 0x1f91, 0xffff, 0xffff, 0xffff, 0x2018, 0x2063, 0xffff, 0xffff, - 0x03dd, 0x04f2, 0x070b, 0x074d, 0xffff, 0xffff, 0x1542, 0x1bcf, - 0x0002, 0x0003, 0x007d, 0x0012, 0x0016, 0x0024, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0039, 0x0047, 0x0000, 0x0000, 0x0055, 0x0000, - // Entry 4E1C0 - 4E1FF - 0x0000, 0x0000, 0x0000, 0x0061, 0x0000, 0x006f, 0x0008, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x001f, 0x0000, 0x9006, 0x0001, - 0x0021, 0x0001, 0x0070, 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x002b, 0x0004, 0x0000, 0x0033, 0x0030, 0x0036, - 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, 0x0389, 0x0001, 0x0035, - 0x0389, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0042, - 0x0000, 0x0000, 0x0001, 0x0044, 0x0001, 0x0070, 0x0008, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0050, 0x0000, 0x0000, - // Entry 4E200 - 4E23F - 0x0001, 0x0052, 0x0001, 0x0000, 0x237b, 0x0006, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x005c, 0x0001, 0x005e, 0x0001, 0x0070, - 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x006a, - 0x0000, 0x9006, 0x0001, 0x006c, 0x0001, 0x0070, 0x0000, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0078, 0x0000, 0x9006, - 0x0001, 0x007a, 0x0001, 0x0070, 0x0000, 0x003d, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 4E240 - 4E27F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x00bb, 0x0003, 0x0000, 0x0000, 0x00bf, 0x0002, - 0x00c2, 0x00c5, 0x0001, 0x006f, 0x0343, 0x0001, 0x0035, 0x1935, - 0x0002, 0x0003, 0x0061, 0x0012, 0x0000, 0x0016, 0x0000, 0x0000, - // Entry 4E280 - 4E2BF - 0x0000, 0x0000, 0x002b, 0x0039, 0x0000, 0x0000, 0x0047, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0053, 0x0006, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x0004, 0x0000, 0x0025, - 0x0022, 0x0028, 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, 0x0389, - 0x0001, 0x0035, 0x0389, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0034, 0x0000, 0x0000, 0x0001, 0x0036, 0x0001, 0x0070, - 0x0008, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0042, - 0x0000, 0x0000, 0x0001, 0x0044, 0x0001, 0x0000, 0x237b, 0x0006, - // Entry 4E2C0 - 4E2FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x004e, 0x0001, 0x0050, - 0x0001, 0x0070, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x005c, 0x0000, 0x9006, 0x0001, 0x005e, 0x0001, 0x0070, - 0x0000, 0x003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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 4E300 - 4E33F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009f, 0x0003, - 0x0000, 0x0000, 0x00a3, 0x0002, 0x00a6, 0x00a9, 0x0001, 0x006f, - 0x0343, 0x0001, 0x0035, 0x1935, 0x0003, 0x0004, 0x007c, 0x00c7, - 0x0012, 0x0017, 0x0023, 0x0000, 0x0000, 0x0000, 0x0000, 0x0038, - 0x0046, 0x0000, 0x0000, 0x0054, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0060, 0x0000, 0x006e, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 4E340 - 4E37F - 0x0000, 0x001e, 0x0001, 0x0020, 0x0001, 0x0070, 0x0000, 0x0006, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002a, 0x0004, 0x0000, - 0x0032, 0x002f, 0x0035, 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, - 0x0389, 0x0001, 0x0035, 0x0389, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0041, 0x0000, 0x0000, 0x0001, 0x0043, 0x0001, - 0x0070, 0x0014, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x004f, 0x0000, 0x0000, 0x0001, 0x0051, 0x0001, 0x0014, 0x146e, - 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005b, 0x0001, - // Entry 4E380 - 4E3BF - 0x005d, 0x0001, 0x0070, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0069, 0x0000, 0x9006, 0x0001, 0x006b, 0x0001, - 0x0070, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0077, 0x0000, 0x9006, 0x0001, 0x0079, 0x0001, 0x0070, 0x0000, - 0x003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 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 4E3C0 - 4E3FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ba, 0x0003, 0x0000, - 0x0000, 0x00be, 0x0002, 0x00c1, 0x00c4, 0x0001, 0x006f, 0x0343, - 0x0001, 0x0035, 0x1935, 0x0004, 0x0000, 0x0000, 0x0000, 0x00cc, - 0x0001, 0x00ce, 0x0003, 0x0000, 0x0000, 0x00d2, 0x007d, 0x001e, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4E400 - 4E43F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4E440 - 4E47F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2038, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x203c, 0x0003, 0x0004, 0x08cc, - 0x0c58, 0x0012, 0x0017, 0x0038, 0x015b, 0x01c8, 0x02b9, 0x0000, - // Entry 4E480 - 4E4BF - 0x0326, 0x0351, 0x0592, 0x061c, 0x068e, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0714, 0x0831, 0x08aa, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0020, 0x0027, 0x0000, 0x9006, 0x0001, 0x0022, 0x0001, - 0x0024, 0x0001, 0x006d, 0x128e, 0x0004, 0x0035, 0x002f, 0x002c, - 0x0032, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, - 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x000a, 0x0043, 0x0000, - 0x0000, 0x0000, 0x0000, 0x014a, 0x0000, 0x0000, 0x00a8, 0x00bb, - 0x0002, 0x0046, 0x0077, 0x0003, 0x004a, 0x0059, 0x0068, 0x000d, - // Entry 4E4C0 - 4E4FF - 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, - 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3af7, 0x3afe, 0x000d, 0x0035, - 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, - 0x00ac, 0x00b0, 0x00b4, 0x3b05, 0x3b09, 0x000d, 0x0035, 0xffff, - 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, 0x3e4a, - 0x3e51, 0x3e58, 0x3af7, 0x3afe, 0x0003, 0x007b, 0x008a, 0x0099, - 0x000d, 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, - 0x3e3c, 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3af7, 0x3afe, 0x000d, - // Entry 4E500 - 4E53F - 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, - 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x3b05, 0x3b09, 0x000d, 0x0035, - 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, - 0x3e4a, 0x3e51, 0x3e58, 0x3af7, 0x3afe, 0x0003, 0x00ac, 0x00b7, - 0x00b1, 0x0003, 0x0035, 0xffff, 0xffff, 0x00c6, 0x0004, 0x0035, - 0xffff, 0xffff, 0xffff, 0x00c6, 0x0002, 0x0035, 0xffff, 0x00c6, - 0x0006, 0x00c2, 0x0000, 0x0000, 0x00d5, 0x00f4, 0x0137, 0x0001, - 0x00c4, 0x0001, 0x00c6, 0x000d, 0x0035, 0xffff, 0x00cd, 0x00d1, - // Entry 4E540 - 4E57F - 0x00d5, 0x00d9, 0x00dd, 0x00e1, 0x00e5, 0x00e9, 0x00ed, 0x00f1, - 0x00f5, 0x00f9, 0x0001, 0x00d7, 0x0001, 0x00d9, 0x0019, 0x0035, - 0xffff, 0x00fd, 0x0104, 0x3b0d, 0x0112, 0x0119, 0x0120, 0x0127, - 0x3b14, 0x0135, 0x013c, 0x0143, 0x014a, 0x0151, 0x3b1b, 0x015f, - 0x0166, 0x016d, 0x0174, 0x017b, 0x0182, 0x0189, 0x0190, 0x0197, - 0x019e, 0x0001, 0x00f6, 0x0001, 0x00f8, 0x003d, 0x0035, 0xffff, - 0x01a5, 0x01ac, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, 0x01d6, - 0x01dd, 0x01e4, 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, 0x020e, - // Entry 4E580 - 4E5BF - 0x0215, 0x021c, 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, 0x0246, - 0x024d, 0x0254, 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, - 0x0285, 0x028c, 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02b6, - 0x02bd, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, 0x02ee, - 0x02f5, 0x02fc, 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, 0x0326, - 0x032d, 0x0334, 0x033b, 0x0342, 0x0001, 0x0139, 0x0001, 0x013b, - 0x000d, 0x0035, 0xffff, 0x0349, 0x034d, 0x0351, 0x3b22, 0x3b26, - 0x035d, 0x0361, 0x0365, 0x3b2a, 0x3b2e, 0x3b32, 0x3b36, 0x0004, - // Entry 4E5C0 - 4E5FF - 0x0158, 0x0152, 0x014f, 0x0155, 0x0001, 0x0070, 0x0022, 0x0001, - 0x006e, 0x0023, 0x0001, 0x006d, 0x12b5, 0x0001, 0x006d, 0x12be, - 0x0001, 0x015d, 0x0002, 0x0160, 0x0194, 0x0003, 0x0164, 0x0174, - 0x0184, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, - 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, - 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, - 0x41f1, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, - // Entry 4E600 - 4E63F - 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, - 0x3b3a, 0x0003, 0x0198, 0x01a8, 0x01b8, 0x000e, 0x0035, 0xffff, - 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, - 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, - 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x0035, 0xffff, - 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, - 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000a, 0x01d3, 0x0000, - // Entry 4E640 - 4E67F - 0x0000, 0x0000, 0x0000, 0x02a8, 0x0000, 0x0000, 0x0000, 0x0238, - 0x0002, 0x01d6, 0x0207, 0x0003, 0x01da, 0x01e9, 0x01f8, 0x000d, - 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, - 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x000d, 0x0035, - 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x00a8, - 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, 0xffff, - 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, 0x3e4a, - 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x0003, 0x020b, 0x021a, 0x0229, - // Entry 4E680 - 4E6BF - 0x000d, 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, - 0x3e3c, 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x000d, - 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, - 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, - 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, - 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x0006, 0x023f, 0x0000, - 0x0000, 0x0000, 0x0252, 0x0295, 0x0001, 0x0241, 0x0001, 0x0243, - 0x000d, 0x0035, 0xffff, 0x00cd, 0x00d1, 0x00d5, 0x00d9, 0x00dd, - // Entry 4E6C0 - 4E6FF - 0x00e1, 0x00e5, 0x00e9, 0x00ed, 0x00f1, 0x00f5, 0x00f9, 0x0001, - 0x0254, 0x0001, 0x0256, 0x003d, 0x0035, 0xffff, 0x01a5, 0x01ac, - 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dd, 0x01e4, - 0x01eb, 0x01f2, 0x01f9, 0x0200, 0x0207, 0x020e, 0x0215, 0x021c, - 0x0223, 0x022a, 0x0231, 0x0238, 0x023f, 0x0246, 0x024d, 0x0254, - 0x025b, 0x0262, 0x0269, 0x0270, 0x0277, 0x027e, 0x0285, 0x028c, - 0x0293, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02b6, 0x02bd, 0x02c4, - 0x02cb, 0x02d2, 0x02d9, 0x02e0, 0x02e7, 0x02ee, 0x02f5, 0x02fc, - // Entry 4E700 - 4E73F - 0x0303, 0x030a, 0x0311, 0x0318, 0x031f, 0x0326, 0x032d, 0x0334, - 0x033b, 0x0342, 0x0001, 0x0297, 0x0001, 0x0299, 0x000d, 0x0035, - 0xffff, 0x0349, 0x034d, 0x0351, 0x3b22, 0x3b26, 0x035d, 0x0361, - 0x0365, 0x3b2a, 0x3b2e, 0x3b32, 0x3b36, 0x0004, 0x02b6, 0x02b0, - 0x02ad, 0x02b3, 0x0001, 0x0035, 0x0379, 0x0001, 0x0035, 0x0389, - 0x0001, 0x0035, 0x0389, 0x0001, 0x006d, 0x12c4, 0x0001, 0x02bb, - 0x0002, 0x02be, 0x02f2, 0x0003, 0x02c2, 0x02d2, 0x02e2, 0x000e, - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - // Entry 4E740 - 4E77F - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x000e, - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, - 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x3b3a, 0x0003, - 0x02f6, 0x0306, 0x0316, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - 0x053d, 0x0543, 0x3b3a, 0x000e, 0x0000, 0xffff, 0x0033, 0x0035, - // Entry 4E780 - 4E7BF - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x0035, 0xffff, 0x050a, 0x050f, - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - 0x053d, 0x0543, 0x3b3a, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x032f, 0x0000, 0x0340, 0x0004, 0x033d, 0x0337, 0x0334, - 0x033a, 0x0001, 0x006d, 0x12ca, 0x0001, 0x006d, 0x12de, 0x0001, - 0x006d, 0x12de, 0x0001, 0x006d, 0x12ed, 0x0004, 0x034e, 0x0348, - 0x0345, 0x034b, 0x0001, 0x006d, 0x12f5, 0x0001, 0x0000, 0x03c6, - // Entry 4E7C0 - 4E7FF - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x035a, - 0x03bf, 0x0416, 0x044b, 0x053a, 0x055f, 0x0570, 0x0581, 0x0002, - 0x035d, 0x038e, 0x0003, 0x0361, 0x0370, 0x037f, 0x000d, 0x0035, - 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, - 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, - 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, - 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, - // Entry 4E800 - 4E83F - 0x0537, 0x053d, 0x0543, 0x0003, 0x0392, 0x03a1, 0x03b0, 0x000d, - 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, - 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, - 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, - 0x050a, 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, - 0x0532, 0x0537, 0x053d, 0x0543, 0x0002, 0x03c2, 0x03ec, 0x0005, - 0x03c8, 0x03d1, 0x03e3, 0x0000, 0x03da, 0x0007, 0x006d, 0x12fc, - // Entry 4E840 - 4E87F - 0x1303, 0x130a, 0x1311, 0x1318, 0x131f, 0x1326, 0x0007, 0x0035, - 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, 0x0007, - 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, - 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, 0x134b, 0x1355, 0x135f, - 0x1369, 0x0005, 0x03f2, 0x03fb, 0x040d, 0x0000, 0x0404, 0x0007, - 0x006d, 0x12fc, 0x1303, 0x130a, 0x1311, 0x1318, 0x131f, 0x1326, - 0x0007, 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, 0x00a0, - 0x00a4, 0x0007, 0x0035, 0x0549, 0x3b40, 0x0094, 0x0098, 0x009c, - // Entry 4E880 - 4E8BF - 0x00a0, 0x00a4, 0x0007, 0x006d, 0x132d, 0x1337, 0x1341, 0x134b, - 0x1355, 0x135f, 0x1369, 0x0002, 0x0419, 0x0432, 0x0003, 0x041d, - 0x0424, 0x042b, 0x0005, 0x0070, 0xffff, 0x0031, 0x0036, 0x003b, - 0x0040, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, - 0x0005, 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, 0x0003, - 0x0436, 0x043d, 0x0444, 0x0005, 0x0070, 0xffff, 0x0031, 0x0036, - 0x003b, 0x0040, 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x0005, 0x006d, 0xffff, 0x1373, 0x137b, 0x1383, 0x138b, - // Entry 4E8C0 - 4E8FF - 0x0002, 0x044e, 0x04c4, 0x0003, 0x0452, 0x0478, 0x049e, 0x000a, - 0x0460, 0x0463, 0x045d, 0x0466, 0x046c, 0x0472, 0x0475, 0x0000, - 0x0469, 0x046f, 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, - 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, - 0x139a, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, - 0x006e, 0x01a3, 0x0001, 0x006d, 0x13cb, 0x000a, 0x0486, 0x0489, - 0x0483, 0x048c, 0x0492, 0x0498, 0x049b, 0x0000, 0x048f, 0x0495, - 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, - // Entry 4E900 - 4E93F - 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, - 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, - 0x0001, 0x006d, 0x13cb, 0x000a, 0x04ac, 0x04af, 0x04a9, 0x04b2, - 0x04b8, 0x04be, 0x04c1, 0x0000, 0x04b5, 0x04bb, 0x0001, 0x006d, - 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, - 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, - 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, - 0x13cb, 0x0003, 0x04c8, 0x04ee, 0x0514, 0x000a, 0x04d6, 0x04d9, - // Entry 4E940 - 4E97F - 0x04d3, 0x04dc, 0x04e2, 0x04e8, 0x04eb, 0x0000, 0x04df, 0x04e5, - 0x0001, 0x006d, 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, - 0x13a1, 0x0001, 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, - 0x006d, 0x13b6, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, - 0x0001, 0x006d, 0x13cb, 0x000a, 0x04fc, 0x04ff, 0x04f9, 0x0502, - 0x0508, 0x050e, 0x0511, 0x0000, 0x0505, 0x050b, 0x0001, 0x006d, - 0x1393, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, - 0x006d, 0x13a8, 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, - // Entry 4E980 - 4E9BF - 0x0001, 0x006d, 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, - 0x13cb, 0x000a, 0x0522, 0x0525, 0x051f, 0x0528, 0x052e, 0x0534, - 0x0537, 0x0000, 0x052b, 0x0531, 0x0001, 0x006d, 0x1393, 0x0001, - 0x006d, 0x139a, 0x0001, 0x006d, 0x13a1, 0x0001, 0x006d, 0x13a8, - 0x0001, 0x006d, 0x139a, 0x0001, 0x006d, 0x13b6, 0x0001, 0x006d, - 0x13a1, 0x0001, 0x006e, 0x01a3, 0x0001, 0x006d, 0x13cb, 0x0003, - 0x0549, 0x0554, 0x053e, 0x0002, 0x0541, 0x0545, 0x0002, 0x006d, - 0x13d2, 0x13e6, 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0002, 0x054c, - // Entry 4E9C0 - 4E9FF - 0x0550, 0x0002, 0x006d, 0x13d2, 0x13e6, 0x0002, 0x006d, 0x13dc, - 0x13ed, 0x0002, 0x0557, 0x055b, 0x0002, 0x006d, 0x13d2, 0x13e6, - 0x0002, 0x006d, 0x13dc, 0x13ed, 0x0004, 0x056d, 0x0567, 0x0564, - 0x056a, 0x0001, 0x006d, 0x13f4, 0x0001, 0x0035, 0x065b, 0x0001, - 0x0035, 0x065b, 0x0001, 0x0021, 0x05f2, 0x0004, 0x057e, 0x0578, - 0x0575, 0x057b, 0x0001, 0x006d, 0x1406, 0x0001, 0x006d, 0x1416, - 0x0001, 0x006d, 0x1423, 0x0001, 0x006d, 0x142c, 0x0004, 0x058f, - 0x0589, 0x0586, 0x058c, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - // Entry 4EA00 - 4EA3F - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0006, - 0x0599, 0x0000, 0x0000, 0x0000, 0x0604, 0x060b, 0x0002, 0x059c, - 0x05d0, 0x0003, 0x05a0, 0x05b0, 0x05c0, 0x000e, 0x006d, 0x1486, - 0x1432, 0x143f, 0x144c, 0x1459, 0x1463, 0x1470, 0x147c, 0x1493, - 0x149d, 0x14a7, 0x14b1, 0x14be, 0x14c8, 0x000e, 0x0000, 0x41bc, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, - 0x2396, 0x41be, 0x41c1, 0x41c4, 0x41f1, 0x000e, 0x006d, 0x1486, - 0x1432, 0x143f, 0x144c, 0x1459, 0x1463, 0x1470, 0x147c, 0x1493, - // Entry 4EA40 - 4EA7F - 0x149d, 0x14a7, 0x14b1, 0x14be, 0x14c8, 0x0003, 0x05d4, 0x05e4, - 0x05f4, 0x000e, 0x006d, 0x1486, 0x1432, 0x143f, 0x144c, 0x1459, - 0x1463, 0x1470, 0x147c, 0x1493, 0x149d, 0x14a7, 0x14b1, 0x14be, - 0x14c8, 0x000e, 0x0000, 0x41bc, 0x0033, 0x0035, 0x0037, 0x2335, - 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, - 0x41f1, 0x000e, 0x006d, 0x1486, 0x1432, 0x143f, 0x144c, 0x1459, - 0x1463, 0x1470, 0x147c, 0x1493, 0x149d, 0x14a7, 0x14b1, 0x14be, - 0x14c8, 0x0001, 0x0606, 0x0001, 0x0608, 0x0001, 0x006d, 0x14d2, - // Entry 4EA80 - 4EABF - 0x0004, 0x0619, 0x0613, 0x0610, 0x0616, 0x0001, 0x0035, 0x0719, - 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, - 0x0503, 0x0005, 0x0622, 0x0000, 0x0000, 0x0000, 0x0687, 0x0002, - 0x0625, 0x0656, 0x0003, 0x0629, 0x0638, 0x0647, 0x000d, 0x006d, - 0xffff, 0x14df, 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, - 0x1546, 0x1556, 0x1566, 0x1570, 0x157a, 0x000d, 0x0000, 0xffff, - 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, - 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x14df, - // Entry 4EAC0 - 4EAFF - 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, 0x1556, - 0x1566, 0x1570, 0x157a, 0x0003, 0x065a, 0x0669, 0x0678, 0x000d, - 0x006d, 0xffff, 0x14df, 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, - 0x1533, 0x1546, 0x1556, 0x1566, 0x1570, 0x157a, 0x000d, 0x0000, - 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, - 0x0041, 0x2396, 0x41be, 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, - 0x14df, 0x14ec, 0x14f9, 0x1506, 0x1513, 0x1523, 0x1533, 0x1546, - 0x1556, 0x1566, 0x1570, 0x157a, 0x0001, 0x0689, 0x0001, 0x068b, - // Entry 4EB00 - 4EB3F - 0x0001, 0x006d, 0x158a, 0x0008, 0x0697, 0x0000, 0x0000, 0x0000, - 0x06fc, 0x0703, 0x0000, 0x9006, 0x0002, 0x069a, 0x06cb, 0x0003, - 0x069e, 0x06ad, 0x06bc, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, - 0x15b1, 0x15bd, 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, - 0x161d, 0x1630, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, - 0x41c4, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, 0x15bd, - 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, 0x1630, - // Entry 4EB40 - 4EB7F - 0x0003, 0x06cf, 0x06de, 0x06ed, 0x000d, 0x006d, 0xffff, 0x1594, - 0x15a4, 0x15b1, 0x15bd, 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, - 0x1610, 0x161d, 0x1630, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - 0x41c1, 0x41c4, 0x000d, 0x006d, 0xffff, 0x1594, 0x15a4, 0x15b1, - 0x15bd, 0x15ca, 0x15d9, 0x15e9, 0x15f6, 0x1603, 0x1610, 0x161d, - 0x1630, 0x0001, 0x06fe, 0x0001, 0x0700, 0x0001, 0x006d, 0x1640, - 0x0004, 0x0711, 0x070b, 0x0708, 0x070e, 0x0001, 0x0035, 0x0719, - // Entry 4EB80 - 4EBBF - 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, - 0x0503, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x071d, 0x080f, - 0x0000, 0x0820, 0x0001, 0x071f, 0x0001, 0x0721, 0x00ec, 0x0035, - 0x08e5, 0x08ec, 0x3b44, 0x08fa, 0x3b4b, 0x0908, 0x090f, 0x3b52, - 0x091d, 0x3b59, 0x092b, 0x3b60, 0x3b6d, 0x3b7a, 0x0959, 0x0966, - 0x3b87, 0x3b8e, 0x3b95, 0x0988, 0x098f, 0x0996, 0x099d, 0x09a4, - 0x3b9c, 0x3ba3, 0x09b9, 0x3baa, 0x09c7, 0x09ce, 0x3bb1, 0x09dc, - 0x09e3, 0x09ea, 0x09f1, 0x09f8, 0x3bb8, 0x3bbf, 0x3bc6, 0x0a14, - // Entry 4EBC0 - 4EBFF - 0x0a1b, 0x3bcd, 0x0a29, 0x0a30, 0x0a37, 0x3bd4, 0x3bdb, 0x0a4c, - 0x0a53, 0x3be2, 0x3be9, 0x0a68, 0x3bf0, 0x0a76, 0x3bf7, 0x0a84, - 0x3bfe, 0x0a92, 0x3c05, 0x0aa0, 0x3c0c, 0x0aae, 0x0ab5, 0x0abc, - 0x3c13, 0x0aca, 0x0ad1, 0x3c1a, 0x0adf, 0x3c21, 0x3c28, 0x0af4, - 0x0afb, 0x3c2f, 0x0b09, 0x0b10, 0x0b17, 0x0b1e, 0x0b25, 0x0b2c, - 0x0b33, 0x0b3a, 0x0b41, 0x0b48, 0x0b4f, 0x0b56, 0x0b5d, 0x0b64, - 0x0b6b, 0x0b72, 0x0b79, 0x0b80, 0x3c36, 0x0b8e, 0x0b95, 0x3c3d, - 0x3c44, 0x3c4b, 0x3c52, 0x0bb8, 0x3c59, 0x0bc6, 0x0bcd, 0x0bd4, - // Entry 4EC00 - 4EC3F - 0x0bdb, 0x3c60, 0x3c67, 0x0bf0, 0x0bf7, 0x0bfe, 0x0c05, 0x0c0c, - 0x0c13, 0x0c1a, 0x3c6e, 0x0c28, 0x0c2f, 0x3c75, 0x0c3d, 0x3c7c, - 0x0c4b, 0x3c83, 0x0c59, 0x0c60, 0x3c8a, 0x0c6e, 0x3c91, 0x3c98, - 0x0c83, 0x3c9f, 0x3ca6, 0x0c98, 0x0c9f, 0x0ca6, 0x0cad, 0x3cad, - 0x0cbb, 0x0cc2, 0x0cc9, 0x0cd0, 0x3cb4, 0x0cde, 0x0ce5, 0x0cec, - 0x0cf3, 0x3cbb, 0x0d01, 0x3cc2, 0x0d0f, 0x0d16, 0x3cc9, 0x0d24, - 0x0d2b, 0x3cd0, 0x3cd7, 0x0d40, 0x0d47, 0x0d4e, 0x3cde, 0x0d5c, - 0x3ce5, 0x0d6a, 0x0d71, 0x3cec, 0x0d7f, 0x0d86, 0x3cf3, 0x0d94, - // Entry 4EC40 - 4EC7F - 0x3cfa, 0x3d01, 0x3d08, 0x0db0, 0x0db7, 0x0dbe, 0x0dc5, 0x3d0f, - 0x3d16, 0x0dda, 0x3d1d, 0x3d24, 0x0def, 0x3d2b, 0x0dfd, 0x0e04, - 0x3d32, 0x3d39, 0x3d40, 0x0e20, 0x0e27, 0x3d47, 0x0e35, 0x0e3c, - 0x3d4e, 0x3d55, 0x0e51, 0x3d5c, 0x0e5f, 0x0e66, 0x3d63, 0x0e74, - 0x0e7b, 0x3d6a, 0x3d71, 0x3d78, 0x3d7f, 0x3d86, 0x0ea5, 0x0eac, - 0x3d8d, 0x3d94, 0x3d9b, 0x0ec8, 0x0ecf, 0x3da2, 0x0edd, 0x3da9, - 0x3db0, 0x0ef2, 0x0ef9, 0x0f00, 0x3db7, 0x0f0e, 0x0f15, 0x0f1c, - 0x0f23, 0x0f2a, 0x0f31, 0x0f38, 0x3dbe, 0x0f46, 0x0f4d, 0x3dc5, - // Entry 4EC80 - 4ECBF - 0x3e73, 0x3e7a, 0x3e81, 0x3e88, 0x0004, 0x081d, 0x0817, 0x0814, - 0x081a, 0x0001, 0x0035, 0x0719, 0x0001, 0x0035, 0x04f5, 0x0001, - 0x0035, 0x04f5, 0x0001, 0x0035, 0x0503, 0x0004, 0x082e, 0x0828, - 0x0825, 0x082b, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0005, 0x0837, - 0x0000, 0x0000, 0x0000, 0x089c, 0x0002, 0x083a, 0x086b, 0x0003, - 0x083e, 0x084d, 0x085c, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, - 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, - // Entry 4ECC0 - 4ECFF - 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, - 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, 0x41c1, - 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, 0x0519, - 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, 0x0543, - 0x0003, 0x086f, 0x087e, 0x088d, 0x000d, 0x0035, 0xffff, 0x050a, - 0x050f, 0x0514, 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, - 0x0537, 0x053d, 0x0543, 0x000d, 0x0000, 0xffff, 0x0033, 0x0035, - 0x0037, 0x2335, 0x003b, 0x41ba, 0x41bc, 0x0041, 0x2396, 0x41be, - // Entry 4ED00 - 4ED3F - 0x41c1, 0x41c4, 0x000d, 0x0035, 0xffff, 0x050a, 0x050f, 0x0514, - 0x0519, 0x051e, 0x0523, 0x0528, 0x052d, 0x0532, 0x0537, 0x053d, - 0x0543, 0x0003, 0x08a5, 0x0000, 0x08a0, 0x0001, 0x08a2, 0x0001, - 0x006d, 0x164d, 0x0001, 0x08a7, 0x0001, 0x006d, 0x164d, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x08b3, 0x08bb, 0x0000, 0x9006, - 0x0001, 0x08b5, 0x0001, 0x08b7, 0x0002, 0x006d, 0x1657, 0x1661, - 0x0004, 0x08c9, 0x08c3, 0x08c0, 0x08c6, 0x0001, 0x006d, 0x1668, - 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, - // Entry 4ED40 - 4ED7F - 0x0503, 0x0040, 0x090d, 0x0000, 0x0000, 0x0912, 0x0927, 0x0937, - 0x0947, 0x095c, 0x0971, 0x0986, 0x099b, 0x09ab, 0x09bb, 0x09d4, - 0x09e8, 0x0000, 0x0000, 0x0000, 0x09fc, 0x0a13, 0x0a23, 0x0000, - 0x0000, 0x0000, 0x0a33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0a38, 0x0a4a, 0x0a5c, 0x0a6e, 0x0a80, 0x0a92, 0x0aa4, 0x0ab6, - 0x0ac8, 0x0ada, 0x0aec, 0x0afe, 0x0b10, 0x0b22, 0x0b34, 0x0b46, - 0x0b58, 0x0b6a, 0x0b7c, 0x0b8e, 0x0ba0, 0x0000, 0x0bb2, 0x0000, - 0x0bb7, 0x0bcb, 0x0bdb, 0x0beb, 0x0bff, 0x0c0f, 0x0c1f, 0x0c33, - // Entry 4ED80 - 4EDBF - 0x0c43, 0x0c53, 0x0001, 0x090f, 0x0001, 0x006d, 0x167b, 0x0003, - 0x0916, 0x0919, 0x091e, 0x0001, 0x0035, 0x1074, 0x0003, 0x006f, - 0x0023, 0x002a, 0x0031, 0x0002, 0x0921, 0x0924, 0x0001, 0x0035, - 0x108d, 0x0001, 0x0035, 0x1098, 0x0003, 0x092b, 0x0000, 0x092e, - 0x0001, 0x0035, 0x1074, 0x0002, 0x0931, 0x0934, 0x0001, 0x0035, - 0x108d, 0x0001, 0x0035, 0x1098, 0x0003, 0x093b, 0x0000, 0x093e, - 0x0001, 0x0035, 0x1074, 0x0002, 0x0941, 0x0944, 0x0001, 0x0035, - 0x108d, 0x0001, 0x0035, 0x1098, 0x0003, 0x094b, 0x094e, 0x0953, - // Entry 4EDC0 - 4EDFF - 0x0001, 0x006d, 0x1697, 0x0003, 0x006d, 0x169b, 0x360d, 0x16ac, - 0x0002, 0x0956, 0x0959, 0x0001, 0x006d, 0x16b6, 0x0001, 0x006d, - 0x16c1, 0x0003, 0x0960, 0x0963, 0x0968, 0x0001, 0x006d, 0x1697, - 0x0003, 0x006d, 0x169b, 0x360d, 0x16ac, 0x0002, 0x096b, 0x096e, - 0x0001, 0x006d, 0x16b6, 0x0001, 0x006d, 0x16c1, 0x0003, 0x0975, - 0x0978, 0x097d, 0x0001, 0x006d, 0x1697, 0x0003, 0x006d, 0x169b, - 0x360d, 0x16ac, 0x0002, 0x0980, 0x0983, 0x0001, 0x006d, 0x16b6, - 0x0001, 0x006d, 0x16c1, 0x0003, 0x098a, 0x098d, 0x0992, 0x0001, - // Entry 4EE00 - 4EE3F - 0x0035, 0x054d, 0x0003, 0x006d, 0x16da, 0x3617, 0x16ee, 0x0002, - 0x0995, 0x0998, 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, - 0x0003, 0x099f, 0x0000, 0x09a2, 0x0001, 0x0035, 0x054d, 0x0002, - 0x09a5, 0x09a8, 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, - 0x0003, 0x09af, 0x0000, 0x09b2, 0x0001, 0x0035, 0x054d, 0x0002, - 0x09b5, 0x09b8, 0x0001, 0x006d, 0x16f8, 0x0001, 0x006d, 0x1706, - 0x0004, 0x09c0, 0x09c3, 0x09c8, 0x09d1, 0x0001, 0x0035, 0x1175, - 0x0003, 0x0070, 0x0045, 0x004c, 0x0053, 0x0002, 0x09cb, 0x09ce, - // Entry 4EE40 - 4EE7F - 0x0001, 0x0070, 0x005a, 0x0001, 0x0070, 0x0065, 0x0001, 0x0070, - 0x0070, 0x0004, 0x09d9, 0x0000, 0x09dc, 0x09e5, 0x0001, 0x0035, - 0x1175, 0x0002, 0x09df, 0x09e2, 0x0001, 0x0070, 0x005a, 0x0001, - 0x0070, 0x0065, 0x0001, 0x0070, 0x0070, 0x0004, 0x09ed, 0x0000, - 0x09f0, 0x09f9, 0x0001, 0x0035, 0x1175, 0x0002, 0x09f3, 0x09f6, - 0x0001, 0x0070, 0x005a, 0x0001, 0x0070, 0x0065, 0x0001, 0x0070, - 0x0070, 0x0003, 0x0a00, 0x0a03, 0x0a0a, 0x0001, 0x0035, 0x0549, - 0x0005, 0x006d, 0x35f1, 0x35f8, 0x35ff, 0x1764, 0x1780, 0x0002, - // Entry 4EE80 - 4EEBF - 0x0a0d, 0x0a10, 0x0001, 0x0070, 0x007b, 0x0001, 0x0070, 0x0086, - 0x0003, 0x0a17, 0x0000, 0x0a1a, 0x0001, 0x0035, 0x0549, 0x0002, - 0x0a1d, 0x0a20, 0x0001, 0x0070, 0x007b, 0x0001, 0x0070, 0x0086, - 0x0003, 0x0a27, 0x0000, 0x0a2a, 0x0001, 0x0035, 0x0549, 0x0002, - 0x0a2d, 0x0a30, 0x0001, 0x0070, 0x007b, 0x0001, 0x0070, 0x0086, - 0x0001, 0x0a35, 0x0001, 0x006d, 0x1787, 0x0003, 0x0000, 0x0a3c, - 0x0a41, 0x0003, 0x0070, 0x0091, 0x009b, 0x00a5, 0x0002, 0x0a44, - 0x0a47, 0x0001, 0x0070, 0x00af, 0x0001, 0x0070, 0x00c0, 0x0003, - // Entry 4EEC0 - 4EEFF - 0x0000, 0x0a4e, 0x0a53, 0x0003, 0x0070, 0x0091, 0x009b, 0x00a5, - 0x0002, 0x0a56, 0x0a59, 0x0001, 0x0070, 0x00af, 0x0001, 0x0070, - 0x00c0, 0x0003, 0x0000, 0x0a60, 0x0a65, 0x0003, 0x0070, 0x0091, - 0x009b, 0x00a5, 0x0002, 0x0a68, 0x0a6b, 0x0001, 0x0070, 0x00af, - 0x0001, 0x0070, 0x00c0, 0x0003, 0x0000, 0x0a72, 0x0a77, 0x0003, - 0x0070, 0x00d1, 0x00db, 0x00e5, 0x0002, 0x0a7a, 0x0a7d, 0x0001, - 0x0070, 0x00ef, 0x0001, 0x0070, 0x0100, 0x0003, 0x0000, 0x0a84, - 0x0a89, 0x0003, 0x0070, 0x00d1, 0x00db, 0x00e5, 0x0002, 0x0a8c, - // Entry 4EF00 - 4EF3F - 0x0a8f, 0x0001, 0x0070, 0x00ef, 0x0001, 0x0070, 0x0100, 0x0003, - 0x0000, 0x0a96, 0x0a9b, 0x0003, 0x0070, 0x00d1, 0x00db, 0x00e5, - 0x0002, 0x0a9e, 0x0aa1, 0x0001, 0x0070, 0x00ef, 0x0001, 0x0070, - 0x0100, 0x0003, 0x0000, 0x0aa8, 0x0aad, 0x0003, 0x0070, 0x0111, - 0x011b, 0x0125, 0x0002, 0x0ab0, 0x0ab3, 0x0001, 0x0070, 0x012f, - 0x0001, 0x0070, 0x0140, 0x0003, 0x0000, 0x0aba, 0x0abf, 0x0003, - 0x0070, 0x0111, 0x011b, 0x0125, 0x0002, 0x0ac2, 0x0ac5, 0x0001, - 0x0070, 0x012f, 0x0001, 0x0070, 0x0140, 0x0003, 0x0000, 0x0acc, - // Entry 4EF40 - 4EF7F - 0x0ad1, 0x0003, 0x0070, 0x0111, 0x011b, 0x0125, 0x0002, 0x0ad4, - 0x0ad7, 0x0001, 0x0070, 0x012f, 0x0001, 0x0070, 0x0140, 0x0003, - 0x0000, 0x0ade, 0x0ae3, 0x0003, 0x0070, 0x0151, 0x015b, 0x0165, - 0x0002, 0x0ae6, 0x0ae9, 0x0001, 0x0070, 0x016f, 0x0001, 0x0070, - 0x0180, 0x0003, 0x0000, 0x0af0, 0x0af5, 0x0003, 0x0070, 0x0151, - 0x015b, 0x0165, 0x0002, 0x0af8, 0x0afb, 0x0001, 0x0070, 0x016f, - 0x0001, 0x0070, 0x0180, 0x0003, 0x0000, 0x0b02, 0x0b07, 0x0003, - 0x0070, 0x0151, 0x015b, 0x0165, 0x0002, 0x0b0a, 0x0b0d, 0x0001, - // Entry 4EF80 - 4EFBF - 0x0070, 0x016f, 0x0001, 0x0070, 0x0180, 0x0003, 0x0000, 0x0b14, - 0x0b19, 0x0003, 0x0070, 0x0191, 0x019b, 0x01a5, 0x0002, 0x0b1c, - 0x0b1f, 0x0001, 0x0070, 0x01af, 0x0001, 0x0070, 0x01c0, 0x0003, - 0x0000, 0x0b26, 0x0b2b, 0x0003, 0x0070, 0x0191, 0x019b, 0x01a5, - 0x0002, 0x0b2e, 0x0b31, 0x0001, 0x0070, 0x01af, 0x0001, 0x0070, - 0x01c0, 0x0003, 0x0000, 0x0b38, 0x0b3d, 0x0003, 0x0070, 0x0191, - 0x019b, 0x01a5, 0x0002, 0x0b40, 0x0b43, 0x0001, 0x0070, 0x01af, - 0x0001, 0x0070, 0x01c0, 0x0003, 0x0000, 0x0b4a, 0x0b4f, 0x0003, - // Entry 4EFC0 - 4EFFF - 0x0070, 0x01d1, 0x01db, 0x01e5, 0x0002, 0x0b52, 0x0b55, 0x0001, - 0x0070, 0x01ef, 0x0001, 0x0070, 0x0200, 0x0003, 0x0000, 0x0b5c, - 0x0b61, 0x0003, 0x0070, 0x01d1, 0x01db, 0x01e5, 0x0002, 0x0b64, - 0x0b67, 0x0001, 0x0070, 0x01ef, 0x0001, 0x0070, 0x0200, 0x0003, - 0x0000, 0x0b6e, 0x0b73, 0x0003, 0x0070, 0x01d1, 0x01db, 0x01e5, - 0x0002, 0x0b76, 0x0b79, 0x0001, 0x0070, 0x01ef, 0x0001, 0x0070, - 0x0200, 0x0003, 0x0000, 0x0b80, 0x0b85, 0x0003, 0x0070, 0x0211, - 0x021b, 0x0225, 0x0002, 0x0b88, 0x0b8b, 0x0001, 0x0070, 0x022f, - // Entry 4F000 - 4F03F - 0x0001, 0x0070, 0x0240, 0x0003, 0x0000, 0x0b92, 0x0b97, 0x0003, - 0x0070, 0x0211, 0x021b, 0x0225, 0x0002, 0x0b9a, 0x0b9d, 0x0001, - 0x0070, 0x022f, 0x0001, 0x0070, 0x0240, 0x0003, 0x0000, 0x0ba4, - 0x0ba9, 0x0003, 0x0070, 0x0211, 0x021b, 0x0225, 0x0002, 0x0bac, - 0x0baf, 0x0001, 0x0070, 0x022f, 0x0001, 0x0070, 0x0240, 0x0001, - 0x0bb4, 0x0001, 0x006d, 0x19cc, 0x0003, 0x0bbb, 0x0bbe, 0x0bc2, - 0x0001, 0x006d, 0x19da, 0x0002, 0x0070, 0xffff, 0x0251, 0x0002, - 0x0bc5, 0x0bc8, 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, - // Entry 4F040 - 4F07F - 0x0003, 0x0bcf, 0x0000, 0x0bd2, 0x0001, 0x006d, 0x19da, 0x0002, - 0x0bd5, 0x0bd8, 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, - 0x0003, 0x0bdf, 0x0000, 0x0be2, 0x0001, 0x006d, 0x19da, 0x0002, - 0x0be5, 0x0be8, 0x0001, 0x006d, 0x19ee, 0x0001, 0x006d, 0x19fc, - 0x0003, 0x0bef, 0x0bf2, 0x0bf6, 0x0001, 0x006d, 0x1a0a, 0x0002, - 0x0070, 0xffff, 0x025e, 0x0002, 0x0bf9, 0x0bfc, 0x0001, 0x006d, - 0x1a1b, 0x0001, 0x006d, 0x1a29, 0x0003, 0x0c03, 0x0000, 0x0c06, - 0x0001, 0x006d, 0x1a0a, 0x0002, 0x0c09, 0x0c0c, 0x0001, 0x006d, - // Entry 4F080 - 4F0BF - 0x1a1b, 0x0001, 0x006d, 0x1a29, 0x0003, 0x0c13, 0x0000, 0x0c16, - 0x0001, 0x006d, 0x1a0a, 0x0002, 0x0c19, 0x0c1c, 0x0001, 0x006d, - 0x1a1b, 0x0001, 0x006d, 0x1a29, 0x0003, 0x0c23, 0x0c26, 0x0c2a, - 0x0001, 0x0035, 0x190d, 0x0002, 0x0070, 0xffff, 0x026b, 0x0002, - 0x0c2d, 0x0c30, 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, - 0x0003, 0x0c37, 0x0000, 0x0c3a, 0x0001, 0x0035, 0x190d, 0x0002, - 0x0c3d, 0x0c40, 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, - 0x0003, 0x0c47, 0x0000, 0x0c4a, 0x0001, 0x0035, 0x190d, 0x0002, - // Entry 4F0C0 - 4F0FF - 0x0c4d, 0x0c50, 0x0001, 0x0035, 0x1915, 0x0001, 0x0035, 0x1920, - 0x0001, 0x0c55, 0x0001, 0x006d, 0x1a3e, 0x0004, 0x0c5d, 0x0c62, - 0x0c67, 0x0c76, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, - 0x0035, 0x1952, 0x3dcc, 0x3dd5, 0x0002, 0x0000, 0x0c6a, 0x0003, - 0x0000, 0x0c71, 0x0c6e, 0x0001, 0x0070, 0x0272, 0x0003, 0x006d, - 0xffff, 0x1a45, 0x1a58, 0x0002, 0x0000, 0x0c79, 0x0003, 0x0c7d, - 0x0dbd, 0x0d1d, 0x009e, 0x006d, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1ade, 0x1b11, 0x1b9b, 0x1bd7, 0x1c0a, 0x1c3d, 0x1c70, 0x1cac, - // Entry 4F100 - 4F13F - 0x1cf1, 0x1dae, 0x1dea, 0x1e26, 0x1e74, 0x1eb9, 0x1ef5, 0x1f3a, - 0x1f88, 0x1fcd, 0x2012, 0x2057, 0x20a5, 0xffff, 0xffff, 0x2101, - 0xffff, 0x2153, 0xffff, 0x21af, 0x21f4, 0x2227, 0x225a, 0xffff, - 0xffff, 0x22bc, 0x2301, 0x2349, 0xffff, 0xffff, 0xffff, 0x23b2, - 0xffff, 0x2407, 0x243a, 0xffff, 0x2480, 0x24b3, 0x2501, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2595, 0xffff, 0xffff, 0x2603, 0x2651, - 0xffff, 0xffff, 0x26de, 0x2738, 0x276b, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2816, 0x2849, 0x2897, 0x28d3, 0x2906, - // Entry 4F140 - 4F17F - 0xffff, 0xffff, 0x29a4, 0xffff, 0x29e7, 0xffff, 0xffff, 0x2a83, - 0xffff, 0x2b0b, 0xffff, 0xffff, 0xffff, 0xffff, 0x2b96, 0xffff, - 0x2be8, 0x2c3f, 0x2c96, 0x2cdb, 0xffff, 0xffff, 0xffff, 0x2d41, - 0x2d9e, 0x2dda, 0xffff, 0xffff, 0x2e39, 0x2ed0, 0x2f1e, 0x2f63, - 0xffff, 0xffff, 0x2fd1, 0x300d, 0x3040, 0xffff, 0x308f, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x31a1, 0x31dd, 0x3219, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32d7, 0xffff, - 0xffff, 0x3330, 0xffff, 0x3373, 0xffff, 0x33bf, 0x33fb, 0x3440, - // Entry 4F180 - 4F1BF - 0xffff, 0x348f, 0x34cb, 0xffff, 0xffff, 0xffff, 0x355e, 0x35a3, - 0xffff, 0xffff, 0x1a6e, 0x1b56, 0x1d2d, 0x1d69, 0xffff, 0xffff, - 0x2ac8, 0x312a, 0x009e, 0x006d, 0x1aa1, 0x1ab1, 0x1abe, 0x1acb, - 0x1aeb, 0x1b24, 0x1bab, 0x1be4, 0x1c17, 0x1c4a, 0x1c80, 0x1cbf, - 0x1d01, 0x1dbe, 0x1dfa, 0x1e3c, 0x1e87, 0x1ec9, 0x1f08, 0x1f50, - 0x1f9b, 0x1fe0, 0x2025, 0x206d, 0x20b5, 0x20e1, 0x20ee, 0x2114, - 0x2146, 0x2163, 0x219f, 0x21c2, 0x2201, 0x2234, 0x226a, 0x2296, - 0x22a6, 0x22cf, 0x2314, 0x2356, 0x237c, 0x238c, 0x23a2, 0x23c5, - // Entry 4F1C0 - 4F1FF - 0x23f7, 0x2414, 0x2447, 0x246d, 0x248d, 0x24c9, 0x250e, 0x2534, - 0x254a, 0x2566, 0x257f, 0x25a5, 0x25d1, 0x25ea, 0x2619, 0x2667, - 0x26b2, 0x26ce, 0x26f8, 0x2745, 0x277b, 0x27a7, 0x27ba, 0x27ca, - 0x27dd, 0x27f0, 0x2803, 0x2823, 0x285f, 0x28a7, 0x28e0, 0x2928, - 0x297e, 0x2991, 0x29b1, 0x29d7, 0x2a06, 0x2a50, 0x2a70, 0x2a96, - 0x2afb, 0x2b1b, 0x2b47, 0x2b5a, 0x2b6d, 0x2b80, 0x2ba9, 0x2bdb, - 0x2c01, 0x2c58, 0x2ca9, 0x2ceb, 0x2d17, 0x2d24, 0x2d31, 0x2d5a, - 0x2dae, 0x2dea, 0x2e16, 0x2e26, 0x2e5e, 0x2ee6, 0x2f31, 0x2f76, - // Entry 4F200 - 4F23F - 0x2fa8, 0x2fb5, 0x2fe1, 0x301a, 0x3050, 0x307c, 0x30b4, 0x310a, - 0x311a, 0x361e, 0x3181, 0x3191, 0x31b1, 0x31ed, 0x3229, 0x3255, - 0x3265, 0x327b, 0x3291, 0x32a4, 0x32b4, 0x32c7, 0x32e4, 0x330a, - 0x331a, 0x333d, 0x3363, 0x3383, 0x33af, 0x33cf, 0x340e, 0x3450, - 0x347c, 0x349f, 0x34e1, 0x3519, 0x352c, 0x353c, 0x3571, 0x35b9, - 0x269f, 0x2eb4, 0x1a7b, 0x1b69, 0x1d3d, 0x1d7c, 0x218f, 0x2a63, - 0x2ad5, 0x3143, 0x009e, 0x006d, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1afe, 0x1b3d, 0x1bc1, 0x1bf7, 0x1c2a, 0x1c5d, 0x1c96, 0x1cd8, - // Entry 4F240 - 4F27F - 0x1d17, 0x1dd4, 0x1e10, 0x1e58, 0x1ea0, 0x1edf, 0x1f21, 0x1f6c, - 0x1fb4, 0x1ff9, 0x203e, 0x2089, 0x20cb, 0xffff, 0xffff, 0x212d, - 0xffff, 0x2179, 0xffff, 0x21db, 0x2214, 0x2247, 0x2280, 0xffff, - 0xffff, 0x22e8, 0x232d, 0x2369, 0xffff, 0xffff, 0xffff, 0x23de, - 0xffff, 0x2427, 0x245a, 0xffff, 0x24a0, 0x24e5, 0x2521, 0xffff, - 0xffff, 0xffff, 0xffff, 0x25bb, 0xffff, 0xffff, 0x2635, 0x2683, - 0xffff, 0xffff, 0x2718, 0x2758, 0x2791, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x2836, 0x287b, 0x28bd, 0x28f3, 0x2950, - // Entry 4F280 - 4F2BF - 0xffff, 0xffff, 0x29c4, 0xffff, 0x2a2b, 0xffff, 0xffff, 0x2aaf, - 0xffff, 0x2b31, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bc2, 0xffff, - 0x2c20, 0x2c77, 0x2cc2, 0x2d01, 0xffff, 0xffff, 0xffff, 0x2d79, - 0x2dc4, 0x2e00, 0xffff, 0xffff, 0x2e89, 0x2f02, 0x2f4a, 0x2f8f, - 0xffff, 0xffff, 0x2ff7, 0x302d, 0x3066, 0xffff, 0x30df, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x31c7, 0x3203, 0x323f, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x32f7, 0xffff, - 0xffff, 0x3350, 0xffff, 0x3399, 0xffff, 0x33e5, 0x3427, 0x3466, - // Entry 4F2C0 - 4F2FF - 0xffff, 0x34b5, 0x34fd, 0xffff, 0xffff, 0xffff, 0x358a, 0x35d5, - 0xffff, 0xffff, 0x1a8e, 0x1b82, 0x1d53, 0x1d95, 0xffff, 0xffff, - 0x2ae8, 0x3162, 0x0003, 0x0004, 0x0111, 0x0352, 0x0012, 0x0017, - 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x009d, 0x00be, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0108, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x9006, 0x0006, 0x0027, 0x0000, 0x0000, 0x0000, 0x0000, - 0x008c, 0x0002, 0x002a, 0x005b, 0x0003, 0x002e, 0x003d, 0x004c, - // Entry 4F300 - 4F33F - 0x000d, 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, - 0x3e3c, 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x000d, - 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, - 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, 0x0035, - 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, 0x3e43, - 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x0003, 0x005f, 0x006e, - 0x007d, 0x000d, 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, - 0x3e35, 0x3e3c, 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, - // Entry 4F340 - 4F37F - 0x000d, 0x0035, 0xffff, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, - 0x00a4, 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bf, 0x000d, - 0x0035, 0xffff, 0x0036, 0x3e20, 0x3e27, 0x3e2e, 0x3e35, 0x3e3c, - 0x3e43, 0x3e4a, 0x3e51, 0x3e58, 0x3e5f, 0x3e69, 0x0004, 0x009a, - 0x0094, 0x0091, 0x0097, 0x0001, 0x0070, 0x0285, 0x0001, 0x0070, - 0x0299, 0x0001, 0x0070, 0x02a9, 0x0001, 0x006d, 0x12c4, 0x0008, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a6, 0x0000, 0x00b7, - 0x0004, 0x00b4, 0x00ae, 0x00ab, 0x00b1, 0x0001, 0x0035, 0x0719, - // Entry 4F380 - 4F3BF - 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, 0x04f5, 0x0001, 0x0035, - 0x0503, 0x0003, 0x0000, 0x0000, 0x00bb, 0x0001, 0x0000, 0x03c6, - 0x0008, 0x0000, 0x0000, 0x00c7, 0x0000, 0x00ee, 0x00fe, 0x0000, - 0x0000, 0x0002, 0x00ca, 0x00dc, 0x0003, 0x00ce, 0x0000, 0x00d5, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, - 0x0070, 0xffff, 0x02b2, 0x02bd, 0x02c8, 0x02d3, 0x0003, 0x00e0, - 0x0000, 0x00e7, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, - 0x3836, 0x0005, 0x0070, 0xffff, 0x02b2, 0x02bd, 0x02c8, 0x02d3, - // Entry 4F3C0 - 4F3FF - 0x0003, 0x00f8, 0x0000, 0x00f2, 0x0001, 0x00f4, 0x0002, 0x006d, - 0x13dc, 0x13ed, 0x0001, 0x00fa, 0x0002, 0x006d, 0x13dc, 0x13ed, - 0x0003, 0x0105, 0x0000, 0x0102, 0x0001, 0x0035, 0x064a, 0x0001, - 0x0002, 0x01fb, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x9006, 0x003f, 0x0000, 0x0000, 0x0000, 0x0151, - 0x0159, 0x0161, 0x0173, 0x017b, 0x0183, 0x0000, 0x0000, 0x0195, - 0x01a7, 0x01bc, 0x01d1, 0x0000, 0x0000, 0x0000, 0x01de, 0x01f2, - 0x0206, 0x0000, 0x0000, 0x0000, 0x021a, 0x0000, 0x0000, 0x0000, - // Entry 4F400 - 4F43F - 0x0000, 0x0000, 0x021f, 0x0231, 0x0000, 0x0243, 0x0255, 0x0000, - 0x0267, 0x0279, 0x0000, 0x028b, 0x029d, 0x0000, 0x02af, 0x02c1, - 0x0000, 0x02d3, 0x02e5, 0x0000, 0x02f7, 0x0309, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0317, 0x0000, 0x031e, 0x032e, 0x0000, 0x0335, - 0x0000, 0x0000, 0x0345, 0x0002, 0x0000, 0x0154, 0x0003, 0x0070, - 0x02de, 0x02e5, 0x02ec, 0x0002, 0x0000, 0x015c, 0x0003, 0x0070, - 0x02de, 0x02e5, 0x02ec, 0x0003, 0x0000, 0x0165, 0x016a, 0x0003, - 0x0070, 0x02de, 0x02e5, 0x02ec, 0x0002, 0x016d, 0x0170, 0x0001, - // Entry 4F440 - 4F47F - 0x0035, 0x10a3, 0x0001, 0x0035, 0x10ad, 0x0002, 0x0000, 0x0176, - 0x0003, 0x006d, 0x169b, 0x16a5, 0x16ac, 0x0002, 0x0000, 0x017e, - 0x0003, 0x006d, 0x16cc, 0x16a5, 0x16d3, 0x0003, 0x0000, 0x0187, - 0x018c, 0x0003, 0x006d, 0x16cc, 0x16a5, 0x16d3, 0x0002, 0x018f, - 0x0192, 0x0001, 0x0070, 0x02f3, 0x0001, 0x0070, 0x02f9, 0x0003, - 0x0000, 0x0199, 0x019e, 0x0003, 0x0070, 0x02ff, 0x0306, 0x030d, - 0x0002, 0x01a1, 0x01a4, 0x0001, 0x0070, 0x0314, 0x0001, 0x0070, - 0x0321, 0x0003, 0x01ab, 0x01ae, 0x01b3, 0x0001, 0x0070, 0x032e, - // Entry 4F480 - 4F4BF - 0x0003, 0x006d, 0x1714, 0x362b, 0x172b, 0x0002, 0x01b6, 0x01b9, - 0x0001, 0x0070, 0x0335, 0x0001, 0x0070, 0x0343, 0x0003, 0x01c0, - 0x01c3, 0x01c8, 0x0001, 0x0070, 0x032e, 0x0003, 0x006d, 0x1714, - 0x362b, 0x172b, 0x0002, 0x01cb, 0x01ce, 0x0001, 0x0070, 0x0335, - 0x0001, 0x0070, 0x0343, 0x0003, 0x0000, 0x0000, 0x01d5, 0x0002, - 0x01d8, 0x01db, 0x0001, 0x0070, 0x0351, 0x0001, 0x0070, 0x035b, - 0x0003, 0x0000, 0x01e2, 0x01e9, 0x0005, 0x0070, 0x036c, 0x0373, - 0x037a, 0x0365, 0x0381, 0x0002, 0x01ec, 0x01ef, 0x0001, 0x0035, - // Entry 4F4C0 - 4F4FF - 0x1208, 0x0001, 0x0035, 0x1213, 0x0003, 0x0000, 0x01f6, 0x01fd, - 0x0005, 0x0070, 0x036c, 0x0373, 0x037a, 0x0365, 0x0381, 0x0002, - 0x0200, 0x0203, 0x0001, 0x0035, 0x1208, 0x0001, 0x0035, 0x1213, - 0x0003, 0x0000, 0x020a, 0x0211, 0x0005, 0x0070, 0x036c, 0x0373, - 0x037a, 0x0365, 0x0381, 0x0002, 0x0214, 0x0217, 0x0001, 0x0035, - 0x121e, 0x0001, 0x0035, 0x1228, 0x0001, 0x021c, 0x0001, 0x0070, - 0x0388, 0x0003, 0x0000, 0x0223, 0x0228, 0x0003, 0x006d, 0x178e, - 0x3635, 0x17ab, 0x0002, 0x022b, 0x022e, 0x0001, 0x006d, 0x17b8, - // Entry 4F500 - 4F53F - 0x0001, 0x006d, 0x17cc, 0x0003, 0x0000, 0x0235, 0x023a, 0x0003, - 0x006d, 0x178e, 0x3635, 0x17ab, 0x0002, 0x023d, 0x0240, 0x0001, - 0x006d, 0x17b8, 0x0001, 0x006d, 0x17cc, 0x0003, 0x0000, 0x0247, - 0x024c, 0x0003, 0x006d, 0x17e0, 0x3642, 0x17fd, 0x0002, 0x024f, - 0x0252, 0x0001, 0x006d, 0x180a, 0x0001, 0x006d, 0x181e, 0x0003, - 0x0000, 0x0259, 0x025e, 0x0003, 0x006d, 0x17e0, 0x3642, 0x17fd, - 0x0002, 0x0261, 0x0264, 0x0001, 0x006d, 0x180a, 0x0001, 0x006d, - 0x181e, 0x0003, 0x0000, 0x026b, 0x0270, 0x0003, 0x006d, 0x1832, - // Entry 4F540 - 4F57F - 0x364f, 0x184f, 0x0002, 0x0273, 0x0276, 0x0001, 0x006d, 0x185c, - 0x0001, 0x006d, 0x1870, 0x0003, 0x0000, 0x027d, 0x0282, 0x0003, - 0x006d, 0x1832, 0x364f, 0x184f, 0x0002, 0x0285, 0x0288, 0x0001, - 0x006d, 0x185c, 0x0001, 0x006d, 0x1870, 0x0003, 0x0000, 0x028f, - 0x0294, 0x0003, 0x006d, 0x1884, 0x365c, 0x18a1, 0x0002, 0x0297, - 0x029a, 0x0001, 0x006d, 0x18ae, 0x0001, 0x006d, 0x18c2, 0x0003, - 0x0000, 0x02a1, 0x02a6, 0x0003, 0x006d, 0x1884, 0x365c, 0x18a1, - 0x0002, 0x02a9, 0x02ac, 0x0001, 0x006d, 0x18ae, 0x0001, 0x006d, - // Entry 4F580 - 4F5BF - 0x18c2, 0x0003, 0x0000, 0x02b3, 0x02b8, 0x0003, 0x006d, 0x18d6, - 0x3669, 0x18f3, 0x0002, 0x02bb, 0x02be, 0x0001, 0x006d, 0x1900, - 0x0001, 0x006d, 0x1914, 0x0003, 0x0000, 0x02c5, 0x02ca, 0x0003, - 0x006d, 0x18d6, 0x3669, 0x18f3, 0x0002, 0x02cd, 0x02d0, 0x0001, - 0x006d, 0x1900, 0x0001, 0x006d, 0x1914, 0x0003, 0x0000, 0x02d7, - 0x02dc, 0x0003, 0x006d, 0x1928, 0x3676, 0x1945, 0x0002, 0x02df, - 0x02e2, 0x0001, 0x006d, 0x1952, 0x0001, 0x006d, 0x1966, 0x0003, - 0x0000, 0x02e9, 0x02ee, 0x0003, 0x006d, 0x1928, 0x3676, 0x1945, - // Entry 4F5C0 - 4F5FF - 0x0002, 0x02f1, 0x02f4, 0x0001, 0x006d, 0x1952, 0x0001, 0x006d, - 0x1966, 0x0003, 0x0000, 0x02fb, 0x0300, 0x0003, 0x006d, 0x197a, - 0x3683, 0x1997, 0x0002, 0x0303, 0x0306, 0x0001, 0x006d, 0x19a4, - 0x0001, 0x006d, 0x19b8, 0x0003, 0x0000, 0x030d, 0x0312, 0x0003, - 0x006d, 0x197a, 0x3683, 0x1997, 0x0001, 0x0314, 0x0001, 0x006d, - 0x19a4, 0x0002, 0x0000, 0x031a, 0x0002, 0x0070, 0xffff, 0x0392, - 0x0003, 0x0322, 0x0000, 0x0325, 0x0001, 0x0035, 0x188a, 0x0002, - 0x0328, 0x032b, 0x0001, 0x0070, 0x039f, 0x0001, 0x0070, 0x03ac, - // Entry 4F600 - 4F63F - 0x0002, 0x0000, 0x0331, 0x0002, 0x0070, 0xffff, 0x03b9, 0x0003, - 0x0339, 0x0000, 0x033c, 0x0001, 0x0035, 0x18d3, 0x0002, 0x033f, - 0x0342, 0x0001, 0x0035, 0x18f9, 0x0001, 0x0035, 0x1903, 0x0003, - 0x0000, 0x0000, 0x0349, 0x0002, 0x034c, 0x034f, 0x0001, 0x0035, - 0x192b, 0x0001, 0x0035, 0x1935, 0x0004, 0x0000, 0x0357, 0x0000, - 0x035c, 0x0003, 0x0070, 0xffff, 0x03c3, 0x03d3, 0x0002, 0x0000, - 0x035f, 0x0003, 0x03f8, 0x048d, 0x0363, 0x0093, 0x0070, 0xffff, - 0xffff, 0xffff, 0x03e3, 0xffff, 0xffff, 0xffff, 0x0403, 0x042f, - // Entry 4F640 - 4F67F - 0x045b, 0x048a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x04b9, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x04e2, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x04f8, 0xffff, 0xffff, 0xffff, 0xffff, - 0x050e, 0xffff, 0xffff, 0x0524, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x0537, 0xffff, 0x0563, 0xffff, - 0xffff, 0xffff, 0xffff, 0x057c, 0x0592, 0xffff, 0xffff, 0xffff, - 0x05a2, 0xffff, 0x05af, 0xffff, 0xffff, 0xffff, 0xffff, 0x05d8, - // Entry 4F680 - 4F6BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x05f4, 0xffff, - 0xffff, 0xffff, 0xffff, 0x0604, 0xffff, 0xffff, 0x061a, 0x062d, - 0xffff, 0x0653, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x066c, 0xffff, 0x0692, 0xffff, 0xffff, 0xffff, 0xffff, 0x06d3, - 0xffff, 0xffff, 0xffff, 0xffff, 0x06fb, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0717, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x0727, 0x0737, 0x0747, 0xffff, 0x075d, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x077a, 0xffff, 0xffff, 0x078d, - // Entry 4F6C0 - 4F6FF - 0xffff, 0xffff, 0x07b0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x07dc, 0x0093, 0x0070, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x03f0, 0x041c, 0x0448, 0x0474, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x04a6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x04d2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4F700 - 4F73F - 0xffff, 0xffff, 0xffff, 0x0550, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x05c2, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0640, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0679, - 0xffff, 0xffff, 0xffff, 0xffff, 0x06b1, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4F740 - 4F77F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x076d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x079d, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x07c9, 0x0093, - 0x006d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x1bf7, 0x3690, 0x36a9, 0x36c2, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x36de, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x36f7, 0xffff, - // Entry 4F780 - 4F7BF - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0x370d, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0x3726, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x3742, 0xffff, 0xffff, 0xffff, 0xffff, - // Entry 4F7C0 - 4F7FF - 0xffff, 0xffff, 0xffff, 0xffff, 0x375b, 0xffff, 0xffff, 0xffff, - 0xffff, 0x377a, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x37a2, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x37b5, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x37ce, 0x0003, 0x0004, 0x0244, 0x0620, - 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, - // Entry 4F800 - 4F83F - 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, - 0x0000, 0x0027, 0x0004, 0x0024, 0x001e, 0x001b, 0x0021, 0x0001, - 0x0000, 0x1dfa, 0x0001, 0x0001, 0x1f8d, 0x0001, 0x0001, 0x1f98, - 0x0001, 0x0000, 0x04af, 0x0004, 0x0035, 0x002f, 0x002c, 0x0032, - 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, - 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0008, 0x0041, 0x00a6, 0x00fd, - 0x0132, 0x01f7, 0x0211, 0x0222, 0x0233, 0x0002, 0x0044, 0x0075, - 0x0003, 0x0048, 0x0057, 0x0066, 0x000d, 0x0005, 0xffff, 0x0636, - // Entry 4F840 - 4F87F - 0x22cc, 0x2510, 0x2514, 0x2518, 0x224e, 0x22d4, 0x251c, 0x24ec, - 0x24f0, 0x22e0, 0x23de, 0x000d, 0x0017, 0xffff, 0x29cf, 0x29f2, - 0x29f4, 0x2a16, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, 0x29fa, - 0x29fc, 0x29fe, 0x000d, 0x0070, 0xffff, 0x07f5, 0x0800, 0x080a, - 0x0810, 0x0818, 0x081d, 0x0822, 0x0829, 0x0830, 0x083a, 0x0842, - 0x084a, 0x0003, 0x0079, 0x0088, 0x0097, 0x000d, 0x0005, 0xffff, - 0x0636, 0x22cc, 0x2510, 0x2514, 0x2518, 0x224e, 0x22d4, 0x251c, - 0x24ec, 0x24f0, 0x22e0, 0x23de, 0x000d, 0x0017, 0xffff, 0x29cf, - // Entry 4F880 - 4F8BF - 0x29f2, 0x29f4, 0x29f6, 0x29f4, 0x29cf, 0x29cf, 0x29f6, 0x2a09, - 0x29fa, 0x29fc, 0x29fe, 0x000d, 0x0070, 0xffff, 0x0852, 0x0800, - 0x080a, 0x0810, 0x0818, 0x081d, 0x0822, 0x0829, 0x0830, 0x083a, - 0x0842, 0x084a, 0x0002, 0x00a9, 0x00d3, 0x0005, 0x00af, 0x00b8, - 0x00ca, 0x0000, 0x00c1, 0x0007, 0x0040, 0x02d8, 0x2601, 0x2605, - 0x2609, 0x25f5, 0x260d, 0x25fd, 0x0007, 0x0017, 0x2a09, 0x29f4, - 0x29b5, 0x2a0b, 0x2a09, 0x2a11, 0x29f4, 0x0007, 0x0040, 0x02d8, - 0x2601, 0x2605, 0x2609, 0x25f5, 0x260d, 0x25fd, 0x0007, 0x0070, - // Entry 4F8C0 - 4F8FF - 0x085b, 0x0862, 0x086e, 0x0879, 0x0886, 0x088f, 0x089b, 0x0005, - 0x00d9, 0x00e2, 0x00f4, 0x0000, 0x00eb, 0x0007, 0x0040, 0x02d8, - 0x2601, 0x2605, 0x2609, 0x25f5, 0x260d, 0x25fd, 0x0007, 0x0017, - 0x2a09, 0x29f4, 0x29b5, 0x2a0b, 0x2a09, 0x2a11, 0x29f4, 0x0007, - 0x0040, 0x02d8, 0x2601, 0x2605, 0x2609, 0x25f5, 0x260d, 0x25fd, - 0x0007, 0x0070, 0x085b, 0x0862, 0x086e, 0x0879, 0x0886, 0x088f, - 0x089b, 0x0002, 0x0100, 0x0119, 0x0003, 0x0104, 0x010b, 0x0112, - 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, 0x0005, - // Entry 4F900 - 4F93F - 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, 0x0070, - 0xffff, 0x08a5, 0x08b2, 0x08bf, 0x08cc, 0x0003, 0x011d, 0x0124, - 0x012b, 0x0005, 0x0000, 0xffff, 0x04e3, 0x3830, 0x3833, 0x3836, - 0x0005, 0x0000, 0xffff, 0x0033, 0x0035, 0x0037, 0x2335, 0x0005, - 0x0070, 0xffff, 0x08a5, 0x08b2, 0x08bf, 0x08cc, 0x0002, 0x0135, - 0x0196, 0x0003, 0x0139, 0x0158, 0x0177, 0x0009, 0x0143, 0x0146, - 0x0000, 0x0149, 0x014f, 0x0152, 0x0155, 0x0000, 0x014c, 0x0001, - 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0070, 0x08d9, - // Entry 4F940 - 4F97F - 0x0001, 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, - 0x08f3, 0x0001, 0x0070, 0x08fc, 0x0009, 0x0162, 0x0165, 0x0000, - 0x0168, 0x016e, 0x0171, 0x0174, 0x0000, 0x016b, 0x0001, 0x0000, - 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0070, 0x08d9, 0x0001, - 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, 0x08f3, - 0x0001, 0x0070, 0x08fc, 0x0009, 0x0181, 0x0184, 0x0000, 0x0187, - 0x018d, 0x0190, 0x0193, 0x0000, 0x018a, 0x0001, 0x0000, 0x04ef, - 0x0001, 0x0000, 0x04f2, 0x0001, 0x0070, 0x08d9, 0x0001, 0x0070, - // Entry 4F980 - 4F9BF - 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, 0x08f3, 0x0001, - 0x0070, 0x08fc, 0x0003, 0x019a, 0x01b9, 0x01d8, 0x0009, 0x01a4, - 0x01a7, 0x0000, 0x01aa, 0x01b0, 0x01b3, 0x01b6, 0x0000, 0x01ad, - 0x0001, 0x0000, 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0070, - 0x08d9, 0x0001, 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, - 0x0070, 0x08f3, 0x0001, 0x0070, 0x08fc, 0x0009, 0x01c3, 0x01c6, - 0x0000, 0x01c9, 0x01cf, 0x01d2, 0x01d5, 0x0000, 0x01cc, 0x0001, - 0x0000, 0x1f9c, 0x0001, 0x0000, 0x21ec, 0x0001, 0x0070, 0x08d9, - // Entry 4F9C0 - 4F9FF - 0x0001, 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, - 0x08f3, 0x0001, 0x0070, 0x08fc, 0x0009, 0x01e2, 0x01e5, 0x0000, - 0x01e8, 0x01ee, 0x01f1, 0x01f4, 0x0000, 0x01eb, 0x0001, 0x0000, - 0x04ef, 0x0001, 0x0000, 0x04f2, 0x0001, 0x0070, 0x08d9, 0x0001, - 0x0070, 0x08e5, 0x0001, 0x0070, 0x08ed, 0x0001, 0x0070, 0x08f3, - 0x0001, 0x0070, 0x08fc, 0x0003, 0x0206, 0x0000, 0x01fb, 0x0002, - 0x01fe, 0x0202, 0x0002, 0x0009, 0x0078, 0x549d, 0x0002, 0x0000, - 0x04f5, 0x04f9, 0x0002, 0x0209, 0x020d, 0x0002, 0x0009, 0x0078, - // Entry 4FA00 - 4FA3F - 0x549d, 0x0002, 0x0000, 0x04f5, 0x04f9, 0x0004, 0x021f, 0x0219, - 0x0216, 0x021c, 0x0001, 0x000c, 0x03c9, 0x0001, 0x000c, 0x03d9, - 0x0001, 0x000c, 0x03e3, 0x0001, 0x000c, 0x03ec, 0x0004, 0x0230, - 0x022a, 0x0227, 0x022d, 0x0001, 0x0000, 0x0524, 0x0001, 0x0000, - 0x0532, 0x0001, 0x0000, 0x053d, 0x0001, 0x0000, 0x0546, 0x0004, - 0x0241, 0x023b, 0x0238, 0x023e, 0x0001, 0x0000, 0x03c6, 0x0001, - 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, 0x0001, 0x0000, 0x03c6, - 0x0040, 0x0285, 0x0000, 0x0000, 0x028a, 0x02a1, 0x02b3, 0x02c5, - // Entry 4FA40 - 4FA7F - 0x02dc, 0x02ee, 0x0300, 0x0317, 0x0329, 0x033b, 0x0356, 0x036c, - 0x0000, 0x0000, 0x0000, 0x0382, 0x039b, 0x03ad, 0x0000, 0x0000, - 0x0000, 0x03bf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03c4, - 0x03d8, 0x03ec, 0x0400, 0x0414, 0x0428, 0x043c, 0x0450, 0x0464, - 0x0478, 0x048c, 0x04a0, 0x04b4, 0x04c8, 0x04dc, 0x04f0, 0x0504, - 0x0518, 0x052c, 0x0540, 0x0554, 0x0000, 0x0568, 0x0000, 0x056d, - 0x0583, 0x0595, 0x05a7, 0x05bd, 0x05cf, 0x05e1, 0x05f7, 0x0609, - 0x061b, 0x0001, 0x0287, 0x0001, 0x004c, 0x0170, 0x0003, 0x028e, - // Entry 4FA80 - 4FABF - 0x0291, 0x0296, 0x0001, 0x0070, 0x0904, 0x0003, 0x0070, 0x090b, - 0x091b, 0x0926, 0x0002, 0x0299, 0x029d, 0x0002, 0x0070, 0x094b, - 0x0933, 0x0002, 0x0070, 0x0977, 0x0965, 0x0003, 0x02a5, 0x0000, - 0x02a8, 0x0001, 0x0070, 0x0904, 0x0002, 0x02ab, 0x02af, 0x0002, - 0x0070, 0x094b, 0x0933, 0x0002, 0x0070, 0x0965, 0x0965, 0x0003, - 0x02b7, 0x0000, 0x02ba, 0x0001, 0x0070, 0x0904, 0x0002, 0x02bd, - 0x02c1, 0x0002, 0x0070, 0x094b, 0x0933, 0x0002, 0x0070, 0x0965, - 0x0965, 0x0003, 0x02c9, 0x02cc, 0x02d1, 0x0001, 0x0070, 0x098b, - // Entry 4FAC0 - 4FAFF - 0x0003, 0x0070, 0x0991, 0x099e, 0x09a6, 0x0002, 0x02d4, 0x02d8, - 0x0002, 0x0070, 0x09c9, 0x09b2, 0x0002, 0x0070, 0x09f2, 0x09e1, - 0x0003, 0x02e0, 0x0000, 0x02e3, 0x0001, 0x0070, 0x098b, 0x0002, - 0x02e6, 0x02ea, 0x0002, 0x0070, 0x09c9, 0x09b2, 0x0002, 0x0070, - 0x0a05, 0x09f2, 0x0003, 0x02f2, 0x0000, 0x02f5, 0x0001, 0x0070, - 0x098b, 0x0002, 0x02f8, 0x02fc, 0x0002, 0x0070, 0x0a18, 0x0a18, - 0x0002, 0x0070, 0x0a05, 0x09f2, 0x0003, 0x0304, 0x0307, 0x030c, - 0x0001, 0x0070, 0x0a2a, 0x0003, 0x0070, 0x0a32, 0x0a41, 0x0a4b, - // Entry 4FB00 - 4FB3F - 0x0002, 0x030f, 0x0313, 0x0002, 0x0070, 0x0a6c, 0x0a59, 0x0002, - 0x0070, 0x0a9e, 0x0a8b, 0x0003, 0x031b, 0x0000, 0x031e, 0x0001, - 0x0070, 0x0a2a, 0x0002, 0x0321, 0x0325, 0x0002, 0x0070, 0x0a6c, - 0x0a6c, 0x0002, 0x0070, 0x0a9e, 0x0a9e, 0x0003, 0x032d, 0x0000, - 0x0330, 0x0001, 0x0070, 0x0a2a, 0x0002, 0x0333, 0x0337, 0x0002, - 0x0070, 0x0ab5, 0x0ab5, 0x0002, 0x0070, 0x0a9e, 0x0a9e, 0x0004, - 0x0340, 0x0343, 0x0348, 0x0353, 0x0001, 0x004c, 0x0129, 0x0003, - 0x0070, 0x0ace, 0x0add, 0x0ae7, 0x0002, 0x034b, 0x034f, 0x0002, - // Entry 4FB40 - 4FB7F - 0x0070, 0x0b08, 0x0af5, 0x0002, 0x0070, 0x0b37, 0x0b1b, 0x0001, - 0x0070, 0x0b4f, 0x0004, 0x035b, 0x0000, 0x035e, 0x0369, 0x0001, - 0x004c, 0x0129, 0x0002, 0x0361, 0x0365, 0x0002, 0x0070, 0x0b79, - 0x0b5e, 0x0002, 0x0070, 0x0b37, 0x0b37, 0x0001, 0x0070, 0x0b4f, - 0x0004, 0x0371, 0x0000, 0x0374, 0x037f, 0x0001, 0x004c, 0x0129, - 0x0002, 0x0377, 0x037b, 0x0002, 0x0070, 0x0b79, 0x0b79, 0x0002, - 0x0070, 0x0b37, 0x0b37, 0x0001, 0x0070, 0x0b4f, 0x0003, 0x0386, - 0x0389, 0x0390, 0x0001, 0x0070, 0x0b92, 0x0005, 0x0070, 0x0bb5, - // Entry 4FB80 - 4FBBF - 0x0bbb, 0x0bc5, 0x0b98, 0x0bcc, 0x0002, 0x0393, 0x0397, 0x0002, - 0x0070, 0x0c04, 0x0be8, 0x0002, 0x0070, 0x0c41, 0x0c23, 0x0003, - 0x039f, 0x0000, 0x03a2, 0x0001, 0x0070, 0x0b92, 0x0002, 0x03a5, - 0x03a9, 0x0002, 0x0070, 0x0c04, 0x0be8, 0x0002, 0x0070, 0x0c76, - 0x0c62, 0x0003, 0x03b1, 0x0000, 0x03b4, 0x0001, 0x0070, 0x0b92, - 0x0002, 0x03b7, 0x03bb, 0x0002, 0x0070, 0x0c04, 0x0be8, 0x0002, - 0x0070, 0x0c76, 0x0c62, 0x0001, 0x03c1, 0x0001, 0x0070, 0x0c8c, - 0x0003, 0x0000, 0x03c8, 0x03cd, 0x0003, 0x0070, 0x0c9a, 0x0caa, - // Entry 4FBC0 - 4FBFF - 0x0cb7, 0x0002, 0x03d0, 0x03d4, 0x0002, 0x0070, 0x0cda, 0x0cc6, - 0x0002, 0x0070, 0x0d01, 0x0ced, 0x0003, 0x0000, 0x03dc, 0x03e1, - 0x0003, 0x0070, 0x0c9a, 0x0caa, 0x0cb7, 0x0002, 0x03e4, 0x03e8, - 0x0002, 0x0070, 0x0cda, 0x0cda, 0x0002, 0x0070, 0x0d01, 0x0d01, - 0x0003, 0x0000, 0x03f0, 0x03f5, 0x0003, 0x0070, 0x0c9a, 0x0caa, - 0x0cb7, 0x0002, 0x03f8, 0x03fc, 0x0002, 0x0070, 0x0cda, 0x0cda, - 0x0002, 0x0070, 0x0d01, 0x0d01, 0x0003, 0x0000, 0x0404, 0x0409, - 0x0003, 0x0070, 0x0d15, 0x0d28, 0x0d38, 0x0002, 0x040c, 0x0410, - // Entry 4FC00 - 4FC3F - 0x0002, 0x0070, 0x0d5e, 0x0d4a, 0x0002, 0x0070, 0x0d8e, 0x0d73, - 0x0003, 0x0000, 0x0418, 0x041d, 0x0003, 0x0070, 0x0d15, 0x0d28, - 0x0d38, 0x0002, 0x0420, 0x0424, 0x0002, 0x0070, 0x0d5e, 0x0d5e, - 0x0002, 0x0070, 0x0d8e, 0x0d8e, 0x0003, 0x0000, 0x042c, 0x0431, - 0x0003, 0x0070, 0x0d15, 0x0d28, 0x0d38, 0x0002, 0x0434, 0x0438, - 0x0002, 0x0070, 0x0d5e, 0x0d5e, 0x0002, 0x0070, 0x0d8e, 0x0d8e, - 0x0003, 0x0000, 0x0440, 0x0445, 0x0003, 0x0070, 0x0da9, 0x0dbd, - 0x0dcc, 0x0002, 0x0448, 0x044c, 0x0002, 0x0070, 0x0df4, 0x0ddf, - // Entry 4FC40 - 4FC7F - 0x0002, 0x0070, 0x0e2b, 0x0e0c, 0x0003, 0x0000, 0x0454, 0x0459, - 0x0003, 0x0070, 0x0da9, 0x0dbd, 0x0dcc, 0x0002, 0x045c, 0x0460, - 0x0002, 0x0070, 0x0e4c, 0x0e4c, 0x0002, 0x0070, 0x0e5d, 0x0e5d, - 0x0003, 0x0000, 0x0468, 0x046d, 0x0003, 0x0070, 0x0da9, 0x0dbd, - 0x0dcc, 0x0002, 0x0470, 0x0474, 0x0002, 0x0070, 0x0e4c, 0x0e4c, - 0x0002, 0x0070, 0x0e5d, 0x0e5d, 0x0003, 0x0000, 0x047c, 0x0481, - 0x0003, 0x0070, 0x0e78, 0x0e8e, 0x0e9f, 0x0002, 0x0484, 0x0488, - 0x0002, 0x0070, 0x0ec9, 0x0eb4, 0x0002, 0x0070, 0x0f07, 0x0ee3, - // Entry 4FC80 - 4FCBF - 0x0003, 0x0000, 0x0490, 0x0495, 0x0003, 0x0070, 0x0e78, 0x0e8e, - 0x0e9f, 0x0002, 0x0498, 0x049c, 0x0002, 0x0070, 0x0ec9, 0x0ec9, - 0x0002, 0x0070, 0x0f07, 0x0f07, 0x0003, 0x0000, 0x04a4, 0x04a9, - 0x0003, 0x0070, 0x0e78, 0x0e8e, 0x0e9f, 0x0002, 0x04ac, 0x04b0, - 0x0002, 0x0070, 0x0ec9, 0x0ec9, 0x0002, 0x0070, 0x0f07, 0x0f07, - 0x0003, 0x0000, 0x04b8, 0x04bd, 0x0003, 0x0070, 0x0f2a, 0x0f3c, - 0x0f49, 0x0002, 0x04c0, 0x04c4, 0x0002, 0x0070, 0x0f6d, 0x0f5a, - 0x0002, 0x0070, 0x0fa0, 0x0f83, 0x0003, 0x0000, 0x04cc, 0x04d1, - // Entry 4FCC0 - 4FCFF - 0x0003, 0x0070, 0x0fbf, 0x0f3c, 0x0f49, 0x0002, 0x04d4, 0x04d8, - 0x0002, 0x0070, 0x0f6d, 0x0f6d, 0x0002, 0x0070, 0x0fa0, 0x0fa0, - 0x0003, 0x0000, 0x04e0, 0x04e5, 0x0003, 0x0070, 0x0fbf, 0x0f3c, - 0x0f49, 0x0002, 0x04e8, 0x04ec, 0x0002, 0x0070, 0x0f6d, 0x0f6d, - 0x0002, 0x0070, 0x0fa0, 0x0fa0, 0x0003, 0x0000, 0x04f4, 0x04f9, - 0x0003, 0x0070, 0x0fd2, 0x0fe7, 0x0ff7, 0x0002, 0x04fc, 0x0500, - 0x0002, 0x0070, 0x101e, 0x100b, 0x0002, 0x0070, 0x1049, 0x1031, - 0x0003, 0x0000, 0x0508, 0x050d, 0x0003, 0x0070, 0x0fd2, 0x0fe7, - // Entry 4FD00 - 4FD3F - 0x0ff7, 0x0002, 0x0510, 0x0514, 0x0002, 0x0070, 0x101e, 0x101e, - 0x0002, 0x0070, 0x1049, 0x1049, 0x0003, 0x0000, 0x051c, 0x0521, - 0x0003, 0x0070, 0x0fd2, 0x0fe7, 0x0ff7, 0x0002, 0x0524, 0x0528, - 0x0002, 0x0070, 0x101e, 0x101e, 0x0002, 0x0070, 0x1049, 0x1049, - 0x0003, 0x0000, 0x0530, 0x0535, 0x0003, 0x0070, 0x1061, 0x1072, - 0x1080, 0x0002, 0x0538, 0x053c, 0x0002, 0x0070, 0x10a2, 0x1090, - 0x0002, 0x0070, 0x10d0, 0x10b7, 0x0003, 0x0000, 0x0544, 0x0549, - 0x0003, 0x0070, 0x1061, 0x1072, 0x1080, 0x0002, 0x054c, 0x0550, - // Entry 4FD40 - 4FD7F - 0x0002, 0x0070, 0x10a2, 0x10a2, 0x0002, 0x0070, 0x10d0, 0x10d0, - 0x0003, 0x0000, 0x0558, 0x055d, 0x0003, 0x0070, 0x1061, 0x1072, - 0x1080, 0x0002, 0x0560, 0x0564, 0x0002, 0x0070, 0x10a2, 0x10a2, - 0x0002, 0x0070, 0x10d0, 0x10d0, 0x0001, 0x056a, 0x0001, 0x0007, - 0x07cc, 0x0003, 0x0571, 0x0574, 0x0578, 0x0001, 0x0070, 0x10ec, - 0x0002, 0x0070, 0xffff, 0x10f2, 0x0002, 0x057b, 0x057f, 0x0002, - 0x0070, 0x1117, 0x10fc, 0x0002, 0x0070, 0x1143, 0x1130, 0x0003, - 0x0587, 0x0000, 0x058a, 0x0001, 0x0070, 0x10ec, 0x0002, 0x058d, - // Entry 4FD80 - 4FDBF - 0x0591, 0x0002, 0x0070, 0x1117, 0x10fc, 0x0002, 0x0070, 0x115d, - 0x1130, 0x0003, 0x0599, 0x0000, 0x059c, 0x0001, 0x0070, 0x10ec, - 0x0002, 0x059f, 0x05a3, 0x0002, 0x0070, 0x1117, 0x10fc, 0x0002, - 0x0070, 0x115d, 0x1130, 0x0003, 0x05ab, 0x05ae, 0x05b2, 0x0001, - 0x0070, 0x1170, 0x0002, 0x0070, 0xffff, 0x1179, 0x0002, 0x05b5, - 0x05b9, 0x0002, 0x0070, 0x11a3, 0x1186, 0x0002, 0x0070, 0x11d4, - 0x11be, 0x0003, 0x05c1, 0x0000, 0x05c4, 0x0001, 0x0070, 0x1170, - 0x0002, 0x05c7, 0x05cb, 0x0002, 0x0070, 0x11a3, 0x1186, 0x0002, - // Entry 4FDC0 - 4FDFF - 0x0070, 0x11d4, 0x11be, 0x0003, 0x05d3, 0x0000, 0x05d6, 0x0001, - 0x0070, 0x1170, 0x0002, 0x05d9, 0x05dd, 0x0002, 0x0070, 0x11a3, - 0x1186, 0x0002, 0x0070, 0x11d4, 0x11be, 0x0003, 0x05e5, 0x05e8, - 0x05ec, 0x0001, 0x0070, 0x11ea, 0x0002, 0x0070, 0xffff, 0x11f4, - 0x0002, 0x05ef, 0x05f3, 0x0002, 0x0070, 0x1218, 0x11fa, 0x0002, - 0x0070, 0x124b, 0x1234, 0x0003, 0x05fb, 0x0000, 0x05fe, 0x0001, - 0x0070, 0x11ea, 0x0002, 0x0601, 0x0605, 0x0002, 0x0070, 0x1218, - 0x11fa, 0x0002, 0x0070, 0x124b, 0x1234, 0x0003, 0x060d, 0x0000, - // Entry 4FE00 - 4FE3F - 0x0610, 0x0001, 0x0070, 0x11ea, 0x0002, 0x0613, 0x0617, 0x0002, - 0x0070, 0x1218, 0x11fa, 0x0002, 0x0070, 0x124b, 0x1234, 0x0001, - 0x061d, 0x0001, 0x0070, 0x1262, 0x0004, 0x0625, 0x062a, 0x062f, - 0x063a, 0x0003, 0x0000, 0x1dc7, 0x40b8, 0x40b4, 0x0003, 0x0070, - 0x1274, 0x1287, 0x129e, 0x0002, 0x0000, 0x0632, 0x0002, 0x0000, - 0x0635, 0x0003, 0x0070, 0xffff, 0x12b6, 0x12d7, 0x0002, 0x0000, - 0x063d, 0x0003, 0x06d7, 0x076d, 0x0641, 0x0094, 0x0070, 0x12f6, - 0x1311, 0x132f, 0x134f, 0x139f, 0x1412, 0x146c, 0x14d7, 0x155e, - // Entry 4FE40 - 4FE7F - 0x15e3, 0x166f, 0x16e5, 0x172d, 0x177f, 0x17d7, 0x1846, 0x18bd, - 0x1916, 0x197f, 0x19fd, 0x1a7f, 0x1af1, 0x1b62, 0x1bbe, 0x1c1d, - 0x1c65, 0x1c7b, 0x1caa, 0x1cf3, 0x1d2e, 0x1d75, 0x1db3, 0x1e09, - 0x1e61, 0x1eb6, 0x1ef9, 0x1f19, 0x1f4e, 0x1fb3, 0x2020, 0x2060, - 0x2075, 0x2097, 0x20ce, 0x2121, 0x2156, 0x21c9, 0x221e, 0x2262, - 0x22d7, 0x2344, 0x237e, 0x239b, 0x23c9, 0x23e2, 0x2410, 0x2450, - 0x246f, 0x24ab, 0x251d, 0x2572, 0x2590, 0x25c4, 0x2631, 0x2689, - 0x26c0, 0x26df, 0x26fb, 0x2714, 0x2735, 0x2756, 0x278b, 0x27dd, - // Entry 4FE80 - 4FEBF - 0x2832, 0x2887, 0x28e6, 0x293e, 0x2966, 0x29a4, 0x29e2, 0x2a13, - 0x2a5a, 0x2a73, 0x2aa8, 0x2aed, 0x2b24, 0x2b63, 0x2b7b, 0x2b93, - 0x2bac, 0x2be5, 0x2c29, 0x2c5f, 0x2cd6, 0x2d46, 0x2d9f, 0x2de1, - 0x2df8, 0x2e0d, 0x2e3f, 0x2ead, 0x2f12, 0x2f62, 0x2f76, 0x2fb8, - 0x3032, 0x3090, 0x30e4, 0x3128, 0x313d, 0x3175, 0x31d2, 0x322d, - 0x3273, 0x32bc, 0x3327, 0x333f, 0x3355, 0x336e, 0x3385, 0x33b4, - 0x3407, 0x3450, 0x3492, 0x34ac, 0x34cf, 0x34ee, 0x350b, 0x3523, - 0x3538, 0x3564, 0x35a1, 0x35bb, 0x35e7, 0x362a, 0x365b, 0x36a5, - // Entry 4FEC0 - 4FEFF - 0x36d2, 0x3733, 0x3790, 0x37d7, 0x380b, 0x386b, 0x38b1, 0x38c7, - 0x38e2, 0x391b, 0x3977, 0x0094, 0x0070, 0xffff, 0xffff, 0xffff, - 0xffff, 0x137d, 0x13fc, 0x1456, 0x14b1, 0x153b, 0x15bc, 0x1649, - 0x16d3, 0x1719, 0x1768, 0x17be, 0x1822, 0x18a7, 0x18fe, 0x195e, - 0x19d6, 0x1a5e, 0x1ad0, 0x1b48, 0x1ba8, 0x1c03, 0xffff, 0xffff, - 0x1c92, 0xffff, 0x1d14, 0xffff, 0x1d9c, 0x1df4, 0x1e4c, 0x1e9c, - 0xffff, 0xffff, 0x1f36, 0x1f97, 0x200c, 0xffff, 0xffff, 0xffff, - 0x20b1, 0xffff, 0x2138, 0x21ab, 0xffff, 0x2244, 0x22b7, 0x2330, - // Entry 4FF00 - 4FF3F - 0xffff, 0xffff, 0xffff, 0xffff, 0x23f9, 0xffff, 0xffff, 0x248d, - 0x24ff, 0xffff, 0xffff, 0x25a6, 0x2618, 0x2675, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0x2777, 0x27c6, 0x281c, 0x2872, - 0x28c2, 0xffff, 0xffff, 0x298f, 0xffff, 0x29f8, 0xffff, 0xffff, - 0x2a8f, 0xffff, 0x2b0d, 0xffff, 0xffff, 0xffff, 0xffff, 0x2bcc, - 0xffff, 0x2c3f, 0x2cb7, 0x2d2c, 0x2d89, 0xffff, 0xffff, 0xffff, - 0x2e22, 0x2e92, 0x2ef6, 0xffff, 0xffff, 0x2f95, 0x3017, 0x307c, - 0x30cc, 0xffff, 0xffff, 0x315d, 0x31be, 0x3213, 0xffff, 0x3292, - // Entry 4FF40 - 4FF7F - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x339c, 0x33f5, 0x343b, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x354e, - 0xffff, 0xffff, 0x35d2, 0xffff, 0x363f, 0xffff, 0x36bb, 0x3719, - 0x3779, 0xffff, 0x37f0, 0x3852, 0xffff, 0xffff, 0xffff, 0x3904, - 0x395a, 0x0094, 0x0070, 0xffff, 0xffff, 0xffff, 0xffff, 0x13d0, - 0x1437, 0x1491, 0x150c, 0x1590, 0x1619, 0x16a4, 0x1700, 0x174b, - 0x17a0, 0x17ff, 0x1879, 0x18df, 0x193d, 0x19ab, 0x1a2e, 0x1aa8, - 0x1b1d, 0x1b86, 0x1be3, 0x1c41, 0xffff, 0xffff, 0x1cd1, 0xffff, - // Entry 4FF80 - 4FFBF - 0x1d53, 0xffff, 0x1dd4, 0x1e2d, 0x1e80, 0x1eda, 0xffff, 0xffff, - 0x1f75, 0x1fd9, 0x2043, 0xffff, 0xffff, 0xffff, 0x20fa, 0xffff, - 0x2183, 0x21f6, 0xffff, 0x228f, 0x2306, 0x2362, 0xffff, 0xffff, - 0xffff, 0xffff, 0x2431, 0xffff, 0xffff, 0x24d8, 0x254a, 0xffff, - 0xffff, 0x25f1, 0x2654, 0x26a7, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x27a9, 0x27fe, 0x2852, 0x28a6, 0x2913, 0xffff, - 0xffff, 0x29c6, 0xffff, 0x2a38, 0xffff, 0xffff, 0x2acb, 0xffff, - 0x2b45, 0xffff, 0xffff, 0xffff, 0xffff, 0x2c08, 0xffff, 0x2c8e, - // Entry 4FFC0 - 4FFFF - 0x2d04, 0x2d6a, 0x2dc4, 0xffff, 0xffff, 0xffff, 0x2e6b, 0x2ed2, - 0x2f3d, 0xffff, 0xffff, 0x2fea, 0x3057, 0x30ae, 0x3106, 0xffff, - 0xffff, 0x319c, 0x31f5, 0x3251, 0xffff, 0x32f4, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0x33d6, 0x3422, 0x3474, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3584, 0xffff, 0xffff, - 0x360b, 0xffff, 0x3681, 0xffff, 0x36f8, 0x3757, 0x37b6, 0xffff, - 0x3830, 0x388e, 0xffff, 0xffff, 0xffff, 0x393c, 0x399e, -} // Size: 655366 bytes - -var buckets = []string{ - bucket0, - bucket1, - bucket2, - bucket3, - bucket4, - bucket5, - bucket6, - bucket7, - bucket8, - bucket9, - bucket10, - bucket11, - bucket12, - bucket13, - bucket14, - bucket15, - bucket16, - bucket17, - bucket18, - bucket19, - bucket20, - bucket21, - bucket22, - bucket23, - bucket24, - bucket25, - bucket26, - bucket27, - bucket28, - bucket29, - bucket30, - bucket31, - bucket32, - bucket33, - bucket34, - bucket35, - bucket36, - bucket37, - bucket38, - bucket39, - bucket40, - bucket41, - bucket42, - bucket43, - bucket44, - bucket45, - bucket46, - bucket47, - bucket48, - bucket49, - bucket50, - bucket51, - bucket52, - bucket53, - bucket54, - bucket55, - bucket56, - bucket57, - bucket58, - bucket59, - bucket60, - bucket61, - bucket62, - bucket63, - bucket64, - bucket65, - bucket66, - bucket67, - bucket68, - bucket69, - bucket70, - bucket71, - bucket72, - bucket73, - bucket74, - bucket75, - bucket76, - bucket77, - bucket78, - bucket79, - bucket80, - bucket81, - bucket82, - bucket83, - bucket84, - bucket85, - bucket86, - bucket87, - bucket88, - bucket89, - bucket90, - bucket91, - bucket92, - bucket93, - bucket94, - bucket95, - bucket96, - bucket97, - bucket98, - bucket99, - bucket100, - bucket101, - bucket102, - bucket103, - bucket104, - bucket105, - bucket106, - bucket107, - bucket108, - bucket109, - bucket110, - bucket111, - bucket112, -} - -var bucket0 string = "" + // Size: 17043 bytes - "\x02BE\x03M01\x03M02\x03M03\x03M04\x03M05\x03M06\x03M07\x03M08\x03M09" + - "\x03M10\x03M11\x03M12\x011\x012\x013\x014\x015\x016\x017\x018\x019\x0210" + - "\x0211\x0212\x06{0}bis\x04{0}b\x02zi\x04chou\x03yin\x03mao\x04chen\x02si" + - "\x02wu\x03wei\x04shen\x03you\x02xu\x03hai\x0dspring begins\x0arain water" + - "\x0einsects awaken\x0espring equinox\x10bright and clear\x0agrain rain" + - "\x0dsummer begins\x0agrain full\x0cgrain in ear\x0fsummer solstice\x0ami" + - "nor heat\x0amajor heat\x0dautumn begins\x0bend of heat\x09white dew\x0ea" + - "utumn equinox\x08cold dew\x0efrost descends\x0dwinter begins\x0aminor sn" + - "ow\x0amajor snow\x0fwinter solstice\x0aminor cold\x0amajor cold\x06jia-z" + - "i\x07yi-chou\x08bing-yin\x08ding-mao\x07wu-chen\x05ji-si\x07geng-wu\x07x" + - "in-wei\x08ren-shen\x07gui-you\x06jia-xu\x06yi-hai\x07bing-zi\x09ding-cho" + - "u\x06wu-yin\x06ji-mao\x09geng-chen\x06xin-si\x06ren-wu\x07gui-wei\x08jia" + - "-shen\x06yi-you\x07bing-xu\x08ding-hai\x05wu-zi\x07ji-chou\x08geng-yin" + - "\x07xin-mao\x08ren-chen\x06gui-si\x06jia-wu\x06yi-wei\x09bing-shen\x08di" + - "ng-you\x05wu-xu\x06ji-hai\x07geng-zi\x08xin-chou\x07ren-yin\x07gui-mao" + - "\x08jia-chen\x05yi-si\x07bing-wu\x08ding-wei\x07wu-shen\x06ji-you\x07gen" + - "g-xu\x07xin-hai\x06ren-zi\x08gui-chou\x07jia-yin\x06yi-mao\x09bing-chen" + - "\x07ding-si\x05wu-wu\x06ji-wei\x09geng-shen\x07xin-you\x06ren-xu\x07gui-" + - "hai\x11r(U) MMMM d, EEEE\x0br(U) MMMM d\x07r MMM d\x07r-MM-dd\x07{1} {0}" + - "\x04Tout\x04Baba\x05Hator\x05Kiahk\x04Toba\x06Amshir\x08Baramhat\x09Bara" + - "mouda\x07Bashans\x05Paona\x04Epep\x05Mesra\x05Nasie\x0213\x04ERA0\x04ERA" + - "1\x08Meskerem\x06Tekemt\x05Hedar\x06Tahsas\x03Ter\x07Yekatit\x07Megabit" + - "\x06Miazia\x06Genbot\x04Sene\x05Hamle\x07Nehasse\x07Pagumen\x10G y MMMM " + - "d, EEEE\x0aG y MMMM d\x09G y MMM d\x0dGGGGG y-MM-dd\x03Sun\x03Mon\x03Tue" + - "\x03Wed\x03Thu\x03Fri\x03Sat\x01S\x01M\x01T\x01W\x01F\x02Q1\x02Q2\x02Q3" + - "\x02Q4\x02AM\x02PM\x03BCE\x02CE\x0ey MMMM d, EEEE\x08y MMMM d\x07y MMM d" + - "\x07y-MM-dd\x0dHH:mm:ss zzzz\x0aHH:mm:ss z\x08HH:mm:ss\x05HH:mm\x06Tishr" + - "i\x07Heshvan\x06Kislev\x05Tevet\x06Shevat\x06Adar I\x04Adar\x07Adar II" + - "\x05Nisan\x04Iyar\x05Sivan\x05Tamuz\x02Av\x04Elul\x07Chaitra\x08Vaisakha" + - "\x08Jyaistha\x06Asadha\x07Sravana\x06Bhadra\x06Asvina\x07Kartika\x0aAgra" + - "hayana\x05Pausa\x05Magha\x08Phalguna\x04Saka\x04Muh.\x04Saf.\x06Rab. I" + - "\x07Rab. II\x06Jum. I\x07Jum. II\x04Raj.\x04Sha.\x04Ram.\x05Shaw.\x09Dhu" + - "ʻl-Q.\x09Dhuʻl-H.\x08Muharram\x05Safar\x08Rabiʻ I\x09Rabiʻ II\x08Jumada" + - " I\x09Jumada II\x05Rajab\x08Shaʻban\x07Ramadan\x07Shawwal\x0eDhuʻl-Qiʻda" + - "h\x0dDhuʻl-Hijjah\x02AH\x11Taika (645–650)\x13Hakuchi (650–671)\x13Hakuh" + - "ō (672–686)\x13Shuchō (686–701)\x12Taihō (701–704)\x11Keiun (704–708)" + - "\x11Wadō (708–715)\x11Reiki (715–717)\x12Yōrō (717–724)\x11Jinki (724–72" + - "9)\x13Tenpyō (729–749)\x1aTenpyō-kampō (749–749)\x1bTenpyō-shōhō (749–75" + - "7)\x19Tenpyō-hōji (757–765)\x19Tenpyō-jingo (765–767)\x17Jingo-keiun (76" + - "7–770)\x11Hōki (770–780)\x12Ten-ō (781–782)\x13Enryaku (782–806)\x12Daid" + - "ō (806–810)\x12Kōnin (810–824)\x13Tenchō (824–834)\x11Jōwa (834–848)" + - "\x11Kajō (848–851)\x11Ninju (851–854)\x12Saikō (854–857)\x12Ten-an (857–" + - "859)\x12Jōgan (859–877)\x13Gangyō (877–885)\x11Ninna (885–889)\x13Kanpyō" + - " (889–898)\x13Shōtai (898–901)\x10Engi (901–923)\x12Enchō (923–931)\x12J" + - "ōhei (931–938)\x13Tengyō (938–947)\x14Tenryaku (947–957)\x13Tentoku (95" + - "7–961)\x10Ōwa (961–964)\x12Kōhō (964–968)\x10Anna (968–970)\x13Tenroku (" + - "970–973)\x14Ten’en (973–976)\x12Jōgen (976–978)\x12Tengen (978–983)\x11E" + - "ikan (983–985)\x11Kanna (985–987)\x10Eien (987–989)\x10Eiso (989–990)" + - "\x15Shōryaku (990–995)\x14Chōtoku (995–999)\x14Chōhō (999–1004)\x14Kankō" + - " (1004–1012)\x14Chōwa (1012–1017)\x14Kannin (1017–1021)\x12Jian (1021–10" + - "24)\x13Manju (1024–1028)\x15Chōgen (1028–1037)\x17Chōryaku (1037–1040)" + - "\x16Chōkyū (1040–1044)\x15Kantoku (1044–1046)\x14Eishō (1046–1053)\x13Te" + - "ngi (1053–1058)\x14Kōhei (1058–1065)\x15Jiryaku (1065–1069)\x14Enkyū (10" + - "69–1074)\x14Shōho (1074–1077)\x17Shōryaku (1077–1081)\x13Eihō (1081–1084" + - ")\x14Ōtoku (1084–1087)\x13Kanji (1087–1094)\x13Kahō (1094–1096)\x14Eichō" + - " (1096–1097)\x15Jōtoku (1097–1099)\x13Kōwa (1099–1104)\x14Chōji (1104–11" + - "06)\x14Kashō (1106–1108)\x14Tennin (1108–1110)\x14Ten-ei (1110–1113)\x14" + - "Eikyū (1113–1118)\x16Gen’ei (1118–1120)\x13Hōan (1120–1124)\x13Tenji (11" + - "24–1126)\x13Daiji (1126–1131)\x15Tenshō (1131–1132)\x16Chōshō (1132–1135" + - ")\x13Hōen (1135–1141)\x12Eiji (1141–1142)\x13Kōji (1142–1144)\x17Ten’yō " + - "(1144–1145)\x14Kyūan (1145–1151)\x14Ninpei (1151–1154)\x14Kyūju (1154–11" + - "56)\x14Hōgen (1156–1159)\x13Heiji (1159–1160)\x15Eiryaku (1160–1161)\x12" + - "Ōho (1161–1163)\x15Chōkan (1163–1165)\x13Eiman (1165–1166)\x16Nin’an (1" + - "166–1169)\x12Kaō (1169–1171)\x14Shōan (1171–1175)\x13Angen (1175–1177)" + - "\x14Jishō (1177–1181)\x13Yōwa (1181–1182)\x12Juei (1182–1184)\x16Genryak" + - "u (1184–1185)\x13Bunji (1185–1190)\x15Kenkyū (1190–1199)\x14Shōji (1199–" + - "1201)\x14Kennin (1201–1204)\x15Genkyū (1204–1206)\x16Ken’ei (1206–1207)" + - "\x14Jōgen (1207–1211)\x16Kenryaku (1211–1213)\x14Kenpō (1213–1219)\x15Jō" + - "kyū (1219–1222)\x13Jōō (1222–1224)\x14Gennin (1224–1225)\x14Karoku (1225" + - "–1227)\x13Antei (1227–1229)\x13Kanki (1229–1232)\x13Jōei (1232–1233)" + - "\x15Tenpuku (1233–1234)\x16Bunryaku (1234–1235)\x13Katei (1235–1238)\x16" + - "Ryakunin (1238–1239)\x15En’ō (1239–1240)\x13Ninji (1240–1243)\x14Kangen " + - "(1243–1247)\x13Hōji (1247–1249)\x15Kenchō (1249–1256)\x14Kōgen (1256–125" + - "7)\x14Shōka (1257–1259)\x15Shōgen (1259–1260)\x16Bun’ō (1260–1261)\x15Kō" + - "chō (1261–1264)\x16Bun’ei (1264–1275)\x13Kenji (1275–1278)\x13Kōan (1278" + - "–1288)\x14Shōō (1288–1293)\x13Einin (1293–1299)\x14Shōan (1299–1302)" + - "\x14Kengen (1302–1303)\x13Kagen (1303–1306)\x14Tokuji (1306–1308)\x14Enk" + - "yō (1308–1311)\x14Ōchō (1311–1312)\x14Shōwa (1312–1317)\x14Bunpō (1317–1" + - "319)\x13Genō (1319–1321)\x14Genkō (1321–1324)\x16Shōchū (1324–1326)\x15K" + - "aryaku (1326–1329)\x15Gentoku (1329–1331)\x14Genkō (1331–1334)\x13Kenmu " + - "(1334–1336)\x13Engen (1336–1340)\x15Kōkoku (1340–1346)\x15Shōhei (1346–1" + - "370)\x15Kentoku (1370–1372)\x15Bunchū (1372–1375)\x13Tenju (1375–1379)" + - "\x16Kōryaku (1379–1381)\x13Kōwa (1381–1384)\x15Genchū (1384–1392)\x15Mei" + - "toku (1384–1387)\x13Kakei (1387–1389)\x13Kōō (1389–1390)\x15Meitoku (139" + - "0–1394)\x12Ōei (1394–1428)\x16Shōchō (1428–1429)\x14Eikyō (1429–1441)" + - "\x15Kakitsu (1441–1444)\x16Bun’an (1444–1449)\x15Hōtoku (1449–1452)\x16K" + - "yōtoku (1452–1455)\x15Kōshō (1455–1457)\x16Chōroku (1457–1460)\x15Kanshō" + - " (1460–1466)\x15Bunshō (1466–1467)\x13Ōnin (1467–1469)\x14Bunmei (1469–1" + - "487)\x16Chōkyō (1487–1489)\x14Entoku (1489–1492)\x13Meiō (1492–1501)\x13" + - "Bunki (1501–1504)\x14Eishō (1504–1521)\x13Taiei (1521–1528)\x16Kyōroku (" + - "1528–1532)\x14Tenbun (1532–1555)\x13Kōji (1555–1558)\x14Eiroku (1558–157" + - "0)\x13Genki (1570–1573)\x15Tenshō (1573–1592)\x15Bunroku (1592–1596)\x15" + - "Keichō (1596–1615)\x13Genna (1615–1624)\x16Kan’ei (1624–1644)\x14Shōho (" + - "1644–1648)\x13Keian (1648–1652)\x13Jōō (1652–1655)\x15Meireki (1655–1658" + - ")\x13Manji (1658–1661)\x14Kanbun (1661–1673)\x13Enpō (1673–1681)\x13Tenn" + - "a (1681–1684)\x15Jōkyō (1684–1688)\x15Genroku (1688–1704)\x13Hōei (1704–" + - "1711)\x16Shōtoku (1711–1716)\x15Kyōhō (1716–1736)\x14Genbun (1736–1741)" + - "\x14Kanpō (1741–1744)\x14Enkyō (1744–1748)\x16Kan’en (1748–1751)\x15Hōre" + - "ki (1751–1764)\x13Meiwa (1764–1772)\x15An’ei (1772–1781)\x14Tenmei (1781" + - "–1789)\x14Kansei (1789–1801)\x14Kyōwa (1801–1804)\x13Bunka (1804–1818)" + - "\x14Bunsei (1818–1830)\x14Tenpō (1830–1844)\x13Kōka (1844–1848)\x12Kaei " + - "(1848–1854)\x13Ansei (1854–1860)\x16Man’en (1860–1861)\x15Bunkyū (1861–1" + - "864)\x13Genji (1864–1865)\x13Keiō (1865–1868)\x05Meiji\x07Taishō\x06Shōw" + - "a\x06Heisei\x01H\x09Farvardin\x0bOrdibehesht\x07Khordad\x03Tir\x06Mordad" + - "\x09Shahrivar\x04Mehr\x04Aban\x04Azar\x03Dey\x06Bahman\x06Esfand\x02AP" + - "\x0dBefore R.O.C.\x06R.O.C.\x03Era\x04Year\x09last year\x09this year\x09" + - "next year\x06+{0} y\x06-{0} y\x07Quarter\x0clast quarter\x0cthis quarter" + - "\x0cnext quarter\x06+{0} Q\x06-{0} Q\x05Month\x0alast month\x0athis mont" + - "h\x0anext month\x06+{0} m\x06-{0} m\x04Week\x09last week\x09this week" + - "\x09next week\x06+{0} w\x06-{0} w\x0fthe week of {0}\x0dWeek Of Month" + - "\x03Day\x09yesterday\x05today\x08tomorrow\x06+{0} d\x06-{0} d\x0bDay Of " + - "Year\x0fDay of the Week\x10Weekday Of Month\x0blast Sunday\x0bthis Sunda" + - "y\x0bnext Sunday\x0c+{0} Sundays\x0c-{0} Sundays\x0blast Monday\x0bthis " + - "Monday\x0bnext Monday\x0c+{0} Mondays\x0c-{0} Mondays\x0clast Tuesday" + - "\x0cthis Tuesday\x0cnext Tuesday\x0d+{0} Tuesdays\x0d-{0} Tuesdays\x0ela" + - "st Wednesday\x0ethis Wednesday\x0enext Wednesday\x0f+{0} Wednesdays\x0f-" + - "{0} Wednesdays\x0dlast Thursday\x0dthis Thursday\x0dnext Thursday\x0e+{0" + - "} Thursdays\x0e-{0} Thursdays\x0blast Friday\x0bthis Friday\x0bnext Frid" + - "ay\x0c+{0} Fridays\x0c-{0} Fridays\x0dlast Saturday\x0dthis Saturday\x0d" + - "next Saturday\x0e+{0} Saturdays\x0e-{0} Saturdays\x09Dayperiod\x04Hour" + - "\x09this hour\x06+{0} h\x06-{0} h\x06Minute\x0bthis minute\x08+{0} min" + - "\x08-{0} min\x06Second\x03now\x06+{0} s\x06-{0} s\x04Zone\x0d+HH:mm;-HH:" + - "mm\x06GMT{0}\x03GMT\x03{0}\x08{0} (+1)\x08{0} (+0)\x03UTC\x10EEEE dd MMM" + - "M y G\x0bdd MMMM y G\x0add MMM y G\x04Jan.\x04Feb.\x04Mrt.\x04Apr.\x03Me" + - "i\x04Jun.\x04Jul.\x04Aug.\x04Sep.\x04Okt.\x04Nov.\x04Des.\x01J\x01A\x01O" + - "\x01N\x01D\x08Januarie\x09Februarie\x05Maart\x05April\x05Junie\x05Julie" + - "\x08Augustus\x09September\x07Oktober\x08November\x08Desember\x03So.\x03M" + - "a.\x03Di.\x03Wo.\x03Do.\x03Vr.\x03Sa.\x01V\x06Sondag\x07Maandag\x07Dinsd" + - "ag\x08Woensdag\x09Donderdag\x06Vrydag\x08Saterdag\x02K1\x02K2\x02K3\x02K" + - "4\x0d1ste kwartaal\x0c2de kwartaal\x0c3de kwartaal\x0c4de kwartaal\x09mi" + - "ddernag\x03vm.\x03nm.\x0adie oggend\x0adie middag\x08die aand\x07die nag" + - "\x02mn\x01v\x01n\x01o\x01m\x01a\x06oggend\x06middag\x04aand\x03nag\x0dvo" + - "or Christus\x1bvoor die gewone jaartelling\x0bna Christus\x12gewone jaar" + - "telling\x01k\x01t\x01s\x01z\x01f\x01d\x01l\x01c\x01g\x01u\x07ዓ/ም\x17جمهو" + - "رية الصي\x0fجرينتش{0}\x0cجرينتش\x01F\x01M\x01D\x01I\x0c{0} bisiestu\x01" + - "L\x01M\x01X\x01S\x027b\x047bis\x18Tenpyō-kampō (749-749)\x19Tenpyō-shōhō" + - " (749-757)\x17Tenpyō-hōji (757-765)\x17Tenpyō-jingo (765-767)\x15Jingo-k" + - "eiun (767-770)\x10Ten-ō (781-782)\x10Ten-an (857-859)\x12Ten-ei (1110-11" + - "13)\x11En-ō (1239-1240)\x0aera Shōwa\x03GMT\x01h\x01b\x02ŋ\x01j\x01F\x01" + - "E\x01O\x04Lelo\x01K\x01W\x11Гринуич{0}\x0eГринуич'{0}, лятно часово врем" + - "е'{0} – стандартно време\x01N\x01A\x01S\x07GMT {0}\x03GMT\x06GMT{0}\x01" + - "P\x01U\x02Č\x01p\x02č\x13{0}, ljetno vrijeme\x17{0}, standardno vrijeme" + - "\x0210\x0211\x0212\x02xu\x06GMT{0}\x03GMT\x03GMT\x01F\x01M\x01D\x01R\x0a" + - "ئەمڕۆ\x08سبەی\x02Ú\x05Meiji\x07Taishō\x06Shōwa\x06Heisei\x06GMT{0}\x03G" + - "MT\x02Ch\x01G\x02Rh\x02Ll\x02Ll\x01O\x01L\x06Minguo\x08{0} (+1)\x08{0} (" + - "+0)\x05März\x03Mai\x04Juni\x04Juli\x04Dez.\x03Mo.\x03Mi.\x03Fr.\x06GMT{0" + - "}\x03GMT\x01M\x01Z\x01S\x01w\x01e\x02ɗ\x01F\x01A\x01U\x01O\x01N\x01D!ཇི་" + - "ཨེམ་ཏི་{0}\x1eཇི་ཨེམ་ཊི་\x01y\x014\x02am\x02pm\x04Feb.\x04Mar.\x04Apr." + - "\x03May\x04Aug.\x04Sep.\x04Oct.\x04Nov.\x04Dec.\x05d/M/r\x0bd/M/y GGGGG" + - "\x06d/M/yy\x01A\x02Ĵ\x03GMT\x06GMT{0}\x03GMT\x019\x0212\x03Hun\x03Hul" + - "\x03Ago\x03Set\x03Okt\x03Nob\x03Dis\x03GMT\x14Daylight Time ng {0}\x08{0" + - "} (+0)\x01B\x01Y\x13Tempyō (729–749)\x18Tempyō-kampō (749-749)\x19Tempyō" + - "-shōhō (749-757)\x17Tempyō-hōji (757-765)\x17Temphō-jingo (765-767)\x13K" + - "emmu (1334–1336)\x16Hōryaku (1751–1764)\x01M\x01S\x01J\x01V\x02mo\x02ti" + - "\x02wo\x02to\x02fr\x02so\x09Vaishakha\x08Jyeshtha\x09Aashaadha\x09Shraav" + - "ana\x0bBhaadrapada\x07Ashvina\x08Kaartika\x06Pausha\x06Maagha\x09Phaalgu" + - "na\x03GMT\x01B\x01C\x06MAG{0}\x03MAG\x08{0} (+1)\x02Ò\x14Tìde samhraidh:" + - " {0}\x0cBun-àm: {0}\x03GMT\x03GMT\x03GMT\x05Hedar\x06Tahsas\x06Genbot" + - "\x05Hamle\x01P\x04Saf.\x06Rab. I\x07Rab. II\x04Raj.\x04Ram.\x05Safar\x05" + - "Rajab\x07Ramadan\x02š\x06GMT{0}\x03GMT\x06Amshir\x08Baramhat\x07Bashans" + - "\x02Á\x02Sz\x01K\x03Sze\x02Cs\x03Szo\x03GMT\x08{0} (+1)\x02wu\x06Kislev" + - "\x05Tevet\x06Adar I\x04Adar\x07Adar II\x05Nisan\x04Iyar\x05Sivan\x05Tamu" + - "z\x02Av\x04Elul\x04Saf.\x04Ram.\x05Syaw.\x05Safar\x09Sya’ban\x08Ramadhan" + - "\x06Syawal\x11Saiko (854–857)\x12Tennan (857–859)\x12Genkei (877–885)" + - "\x13Kampyō (889–898)\x13Shōhei (931–938)\x10Ten-en (973-976)\x0fEi-en (9" + - "87-989)\x12Eiho (1081–1084)\x12Kaho (1094–1096)\x16Shōtoku (1097–1099)" + - "\x12Gen-ei (1118-1120)\x12Hoan (1120–1124)\x12Hoen (1135–1141)\x14Tenyō " + - "(1144–1145)\x13Hogen (1156–1159)\x12Nin-an (1166-1169)\x16Genryuku (1184" + - "–1185)\x12Ken-ei (1206-1207)\x15Shōgen (1207–1211)\x16Shōkyū (1219–122" + - "2)\x15Tempuku (1233–1234)\x12Bun-ō (1260-1261)\x12Bun-ei (1264-1275)\x13" + - "Enkei (1308–1311)\x15Genkyō (1321–1324)\x14Kareki (1326–1329)\x12Bun-an " + - "(1444-1449)\x14Tenmon (1532–1555)\x13Genwa (1615–1624)\x12Kan-ei (1624-1" + - "644)\x14Shōō (1652–1655)\x16Meiryaku (1655–1658)\x13Tenwa (1681–1684)" + - "\x12Kan-en (1748-1751)\x11An-ei (1772-1781)\x12Man-en (1860-1861)\x05Mei" + - "ji\x07Taishō\x06Shōwa\x06Heisei\x01M\x02Þ\x06GMT{0}\x03GMT\x10{0} (sumar" + - "tími)\x12{0} (staðaltími)\x08lɔꞋɔ\x01M\x01S\x02Ɣ\x01T\x02Ĩ\x01M\x01D\x01" + - "N\x01A\x02II\x03III\x02IV\x01F\x01S\x01O\x01T\x01L\x02KO\x1cម៉ោង\u200bសក" + - "ល {0}\x18ម៉ោង\u200bសកល\x06GMT{0}\x03GMT\x0211\x05Fäb.\x05Mäz.\x03Mai" + - "\x04Jun.\x04Jul.\x04Ouj.\x05Säp.\x04Okt.\x04Nov.\x04Dez.\x03GMT\x04Feb." + - "\x05Mäe.\x04Abr.\x03Mee\x04Juni\x04Juli\x04Mé.\x04Dë.\x04Më.\x03Fr.\x03S" + - "a.\x06Minguo\x02ɔ\x02si\x02Š\x13Hakuči (650–671)\x12Hakuho (672–686)\x12" + - "Šučo (686–701)\x11Taiho (701–704)\x10Vado (708–715)\x10Joro (717–724)" + - "\x12Tempio (729–749)\x18Tempio-kampo (749–749)\x18Tempio-šoho (749–757)" + - "\x18Tempio-hodzi (757–765)\x18Tempo-dzingo (765–767)\x18Dzingo-keiun (76" + - "7–770)\x10Hoki (770–780)\x11Ten-o (781–782)\x13Enrjaku (782–806)\x11Daid" + - "o (806–810)\x11Konin (810–824)\x12Tenčo (824–834)\x11Šova (834–848)\x10K" + - "ajo (848–851)\x11Tenan (857–859)\x11Jogan (859–877)\x11Ninja (885–889)" + - "\x12Kampjo (889–898)\x12Šotai (898–901)\x11Enčo (923–931)\x12Šohei (931–" + - "938)\x12Tengjo (938–947)\x14Tenriaku (947–957)\x0fOva (961–964)\x10Koho " + - "(964–968)\x0fAna (968–970)\x12Ten-en (973–976)\x11Jogen (976–978)\x10Kan" + - "a (985–987)\x11Ei-en (987–989)\x14Šorjaku (990–995)\x13Čotoku (995–999)" + - "\x12Čoho (999–1004)\x13Kanko (1004–1012)\x13Čova (1012–1017)\x13Kanin (1" + - "017–1021)\x14Džian (1021–1024)\x16Mandžiu (1024–1028)\x14Čogen (1028–103" + - "7)\x16Čorjaku (1037–1040)\x14Čokju (1040–1044)\x13Eišo (1046–1053)\x13Ko" + - "hei (1058–1065)\x17Džirjaku (1065–1069)\x13Enkju (1069–1074)\x13Šoho (10" + - "74–1077)\x16Šorjaku (1077–1081)\x11Eiho (1081–084)\x13Otoku (1084–1087)" + - "\x15Kandži (1087–1094)\x13Eičo (1096–1097)\x15Šotoku (1097–1099)\x12Kova" + - " (1099–1104)\x15Čodži (1104–1106)\x13Kašo (1106–1108)\x13Tenin (1108–111" + - "0)\x13Eikju (1113–1118)\x14Gen-ei (1118–1120)\x15Tendži (1124–1126)\x15D" + - "aidži (1126–1131)\x14Tenšo (1131–1132)\x14Čošo (1132–1135)\x14Eidži (114" + - "1–1142)\x14Kodži (1142–1144)\x13Tenjo (1144–1145)\x13Kjuan (1145–1151)" + - "\x13Kjuju (1154–1156)\x15Heidži (1159–1160)\x15Eirjaku (1160–1161)\x11Oh" + - "o (1161–1163)\x14Čokan (1163–1165)\x14Nin-an (1166–1169)\x11Kao (1169–11" + - "71)\x13Šoan (1171–1175)\x15Džišo (1177–1181)\x12Jova (1181–1182)\x14Džue" + - "i (1182–1184)\x16Genrjuku (1184–1185)\x15Bundži (1185–1190)\x14Kenkju (1" + - "190–1199)\x15Šodži (1199–1201)\x13Kenin (1201–1204)\x14Genkju (1204–1206" + - ")\x14Ken-ei (1206–1207)\x14Šogen (1207–1211)\x16Kenrjaku (1211–1213)\x13" + - "Kenpo (1213–1219)\x14Šokju (1219–1222)\x12Džu (1222–1224)\x13Genin (1224" + - "–1225)\x14Džoei (1232–1233)\x16Bunrjaku (1234–1235)\x16Rjakunin (1238–" + - "1239)\x12En-o (1239–1240)\x15Nindži (1240–1243)\x14Hodži (1247–1249)\x14" + - "Kenčo (1249–1256)\x13Kogen (1256–1257)\x13Šoka (1257–1259)\x14Šogen (125" + - "9–1260)\x13Bun-o (1260–1261)\x13Kočo (1261–1264)\x14Bun-ei (1264–1275)" + - "\x15Kendži (1275–1278)\x12Koan (1278–1288)\x11Šu (1288–1293)\x13Šoan (12" + - "99–1302)\x16Tokudži (1306–1308)\x12Očo (1311–1312)\x13Šova (1312–1317)" + - "\x13Bunpo (1317–1319)\x14Dženo (1319–1321)\x16Dženkjo (1321–1324)\x14Šoč" + - "u (1324–1326)\x13Genko (1331–1334)\x12Kemu (1334–1336)\x14Kokoku (1340–1" + - "346)\x14Šohei (1346–1370)\x14Bunču (1372–1375)\x15Tendžu (1375–1379)\x15" + - "Korjaku (1379–1381)\x12Kova (1381–1384)\x14Genču (1384–1392)\x10Ku (1389" + - "–1390)\x11Oei (1394–1428)\x14Šočo (1428–1429)\x13Eikjo (1429–1441)\x14" + - "Bun-an (1444–1449)\x14Hotoku (1449–1452)\x15Kjotoku (1452–1455)\x13Košo " + - "(1455–1457)\x15Čoroku (1457–1460)\x14Kanšo (1460–1466)\x14Bunšo (1466–14" + - "67)\x12Onin (1467–1469)\x14Čokjo (1487–1489)\x12Meio (1492–1501)\x13Eišo" + - " (1504–1521)\x15Kjoroku (1528–1532)\x14Kodži (1555–1558)\x14Tenšo (1573–" + - "1592)\x14Keičo (1596–1615)\x13Genva (1615–1624)\x14Kan-ei (1624–1644)" + - "\x13Šoho (1644–1648)\x11Šu (1652–1655)\x16Meirjaku (1655–1658)\x15Mandži" + - " (1658–1661)\x12Enpo (1673–1681)\x13Tenva (1681–1684)\x15Džokjo (1684–16" + - "88)\x12Hoei (1704–1711)\x15Šotoku (1711–1716)\x13Kjoho (1716–1736)\x13Ka" + - "npo (1741–1744)\x13Enkjo (1744–1748)\x14Kan-en (1748–1751)\x15Horjaku (1" + - "751–1764)\x13Meiva (1764–1772)\x13An-ei (1772–1781)\x13Kjova (1801–1804)" + - "\x13Tenpo (1830–1844)\x12Koka (1844–1848)\x14Man-en (1860–1861)\x14Bunkj" + - "u (1861–1864)\x15Gendži (1864–1865)\x13Keiko (1865–1868)\x07Meidži\x06Ta" + - "išo\x05Šova\x01U\x02Q2\x02Q3\x02Q4\x06GMT{0}\x03GMT\x16ജിഎംടി {0}\x12ജിഎ" + - "ംടി\x0210\x0211\x0212\x08[GMT]{0}\x05[GMT]\x06R.O.C.\x02Ġ\x03GMT\x08{0" + - "} (+1)\x08{0} (+0)\x07Neetsee\x01T\x0dHH.mm.ss zzzz\x0aHH.mm.ss z\x08HH." + - "mm.ss\x05HH.mm\x01H\x05März\x04Juni\x04Juli\x05März\x03Mai\x04Juni\x04Ju" + - "li\x03GMT\x0bna Christus\x02Ŋ\x01Q\x02KB\x03GMT\x06Amshir\x08Baramhat" + - "\x07Bashans\x05Hedar\x06Tahsas\x06Genbot\x05Hamle\x02ś\x02Ś\x04Saf.\x06R" + - "ab. I\x07Rab. II\x07Dżu. I\x08Dżu. II\x03Ra.\x04Sza.\x04Ram.\x05Szaw." + - "\x08Zu al-k.\x08Zu al-h.\x05Safar\x0aDżumada I\x0bDżumada II\x07Radżab" + - "\x06Szaban\x07Ramadan\x07Szawwal\x0aZu al-kada\x0fZu al-hidżdża\x06Kisle" + - "v\x05Tevet\x06Adar I\x04Adar\x07Adar II\x05Nisan\x05Sivan\x05Tamuz\x02Av" + - "\x04Elul\x03Tir\x04Mehr\x06Bahman\x06Esfand\x04d.C.\x06Hathor\x06Mesori" + - "\x08El Nasii\x02Ma\x02Mi\x02Ma\x02Mi\x06Minguo\x03GMT\x08{0} (+1)\x08{0}" + - " (+0)\x01S\x01m\x01n\x01d\x03GMT\x01V\x01M\x01K\x01T\x01L\x01q\x01k\x15O" + - "ra e Grinuiçit: {0}\x10Ora e Grinuiçit\x06GMT{0}\x03GMT\x1a{0}, летње вр" + - "еме${0}, стандардно време\x07Jekatit\x06Nehase\x06Reb. 1\x06Reb. 2\x08D" + - "žum. 1\x08Džum. 2\x06Redž.\x04Ša.\x04Še.\x06Zul-k.\x06Zul-h.\x16Tempio-" + - "kampo (749-749)\x16Tempio-šoho (749-757)\x16Tempio-hođi (757-765)\x16Tem" + - "po-đingo (765-767)\x16Đingo-keiun (767-770)\x0fTen-o (781-782)\x11Enđi (" + - "901–923)\x13Đian (1021–1024)\x14Tenđi (1053–1058)\x16Đirjaku (1065–1069)" + - "\x13Eišo (1081–1084)\x14Kanđi (1087–1094)\x14Čođi (1104–1106)\x13Đen-ei " + - "(1118-1120)\x14Tenđi (1124–1126)\x14Daiđi (1126–1131)\x15Čošao (1132–113" + - "5)\x13Eiđi (1141–1142)\x13Kođi (1142–1144)\x14Heiđi (1159–1160)\x14Đišo " + - "(1177–1181)\x13Đuei (1182–1184)\x14Bunđi (1185–1190)\x14Šođi (1199–1201)" + - "\x11Đu (1222–1224)\x14Đenin (1224–1225)\x13Đoei (1232–1233)\x10En-o (123" + - "9-1240)\x13Hođi (1247–1249)\x11Bun-o (1260-1261)\x14Kenđi (1275–1278)" + - "\x15Tokuđi (1306–1308)\x13Đeno (1319–1321)\x15Đenkjo (1321–1324)\x13Buču" + - " (1372–1375)\x13Kođi (1555–1558)\x13Jokjo (1684–1688)\x14Genđi (1864–186" + - "5)\x06Meiđi\x06Haisei\x03GMT\x11{0}, letnje vreme\x15{0}, standardno vre" + - "me\x06Bâbâ\x07Hâtour\x05Kiahk\x06Toubah\x07Amshîr\x09Barmahât\x09Barmoud" + - "ah\x0aBa’ounah\x05Abîb\x05Misra\x07Al-nasi\x09Vaishākh\x09Jyaishtha\x09Ā" + - "shādha\x09Shrāvana\x0aBhādrapad\x07Āshwin\x07Kārtik\x0eMārgashīrsha\x05P" + - "aush\x05Māgh\x08Phālgun\x05Safar\x10Rabi’ al-awwal\x10Rabi’ al-akhir\x0c" + - "Jumada-l-ula\x0fJumada-l-akhira\x05Rajab\x09Sha’ban\x07Ramadan\x0dDhu-l-" + - "ga’da\x0bDhu-l-hijja\x1aTempyō-kampō (749–749)\x1bTempyō-shōhō (749–757)" + - "\x19Tempyō-hōji (757–765)\x19Temphō-jingo (765–767)\x13En-ō (1239–1240)" + - "\x14Bun-ō (1260–1261)\x08Khordād\x03Tir\x07Mordād\x04Mehr\x06Ābān\x05Āza" + - "r\x06Bahman\x06Esfand\x07GMT {0}\x03GMT\x06GMT{0}\x08Rabiʻ I\x09Rabiʻ II" + - "\x08Jumada I\x09Jumada II\x06Tikimt\x05Hidar\x07Yakatit\x07Magabit\x07Mi" + - "yazya\x06Ginbot\x06Nehasa\x09Pagumiene\x10مىلادىيە\x0aمىنگو\x0fRobiʼ ul-" + - "avval\x0eRobiʼ ul-oxir\x0eJumad ul-avval\x0dJumad ul-oxir\x08Shaʼbon\x07" + - "Ramazon\x07Shavvol\x0aZul-qaʼda\x09Zul-hijja\x08{0} (+1)\x08{0} (+0)\x01" + - "6\x017\x0210\x0211\x0212\x04Baba\x05Hator\x04Toba\x08Baramhat\x05Paona" + - "\x04Epep\x05Mesra\x0213\x05Hedar\x03Ter\x06Kislev\x05Tevet\x06Adar I\x04" + - "Adar\x07Adar II\x05Nisan\x04Iyar\x05Sivan\x05Tamuz\x02Av\x04Elul\x07Srav" + - "ana\x06Asvina\x07Kartika\x03Tir\x06Mordad\x04Mehr\x04Aban\x04Azar\x03Dey" + - "\x1cאיבער אַכט טאָג\x02LK" - -var bucket1 string = "" + // Size: 8261 bytes - "\x04v.C.\x06v.g.j.\x04n.C.\x04g.j.\x03vgj\x02gj\x0fEEEE, dd MMMM y\x09dd" + - " MMMM y\x08dd MMM y\x03era\x04jaar\x0cverlede jaar\x0chierdie jaar\x0dvo" + - "lgende jaar\x0coor {0} jaar\x0f{0} jaar gelede\x02j.\x08kwartaal\x0fvori" + - "ge kwartaal\x10hierdie kwartaal\x11volgende kwartaal\x10oor {0} kwartaal" + - "\x10oor {0} kwartale\x13{0} kwartaal gelede\x13{0} kwartale gelede\x03kw" + - ".\x05maand\x0dverlede maand\x0cvandeesmaand\x0evolgende maand\x0eoor {0}" + - " minuut\x10{0} maand gelede\x11{0} maande gelede\x03md.\x0boor {0} md." + - "\x0e{0} md. gelede\x04week\x0cverlede week\x0bvandeesweek\x0dvolgende we" + - "ek\x0coor {0} week\x0coor {0} weke\x0f{0} week gelede\x0f{0} weke gelede" + - "\x10die week van {0}\x03wk.\x0aoor {0} w.\x0d{0} w. gelede\x03dag\x09eer" + - "gister\x06gister\x06vandag\x05môre\x08oormôre\x0e{0} dag gelede\x0e{0} d" + - "ae gelede\x02d.\x0boor {0} dag\x0boor {0} dae\x10dag van die week\x0ever" + - "lede Sondag\x0ehierdie Sondag\x0fvolgende Sondag\x0eoor {0} Sondag\x0eoo" + - "r {0} Sondae\x11{0} Sondag gelede\x11{0} Sondae gelede\x0cverlede Son." + - "\x0chierdie Son.\x0dvolgende Son.\x0fverlede Maandag\x0fhierdie Maandag" + - "\x10volgende Maandag\x0foor {0} Maandag\x0foor {0} Maandae\x12{0} Maanda" + - "g gelede\x12{0} Maandae gelede\x0bverlede Ma.\x0bhierdie Ma.\x0cvolgende" + - " Ma.\x0fverlede Dinsdag\x0fhierdie Dinsdag\x10volgende Dinsdag\x0foor {0" + - "} Dinsdag\x0foor {0} Dinsdae\x12{0} Dinsdag gelede\x12{0} Dinsdae gelede" + - "\x0bverlede Di.\x0bhierdie Di.\x0cvolgende Di.\x10verlede Woensdag\x10hi" + - "erdie Woensdag\x11volgende Woensdag\x10oor {0} Woensdag\x10oor {0} Woens" + - "dae\x13{0} Woensdag gelede\x13{0} Woensdae gelede\x0bverlede Wo.\x0bhier" + - "die Wo.\x0cvolgende Wo.\x11verlede Donderdag\x11hierdie Donderdag\x12vol" + - "gende Donderdag\x11oor {0} Donderdag\x11oor {0} Donderdae\x14{0} Donderd" + - "ag gelede\x14{0} Donderdae gelede\x0bverlede Do.\x0bhierdie Do.\x0cvolge" + - "nde Do.\x0everlede Vrydag\x0ehierdie Vrydag\x0fvolgende Vrydag\x0eoor {0" + - "} Vrydag\x0eoor {0} Vrydae\x11{0} Vrydag gelede\x11{0} Vrydae gelede\x0b" + - "verlede Vr.\x08dié Vr.\x08vlg. Vr.\x10verlede Saterdag\x10hierdie Saterd" + - "ag\x11volgende Saterdag\x10oor {0} Saterdag\x10oor {0} Saterdae\x13{0} S" + - "aterdag gelede\x13{0} Saterdae gelede\x0bverlede Sa.\x08dié Sa.\x08vlg. " + - "Sa.\x05VM/NM\x03uur\x0bhierdie uur\x0boor {0} uur\x0e{0} uur gelede\x02u" + - ".\x06minuut\x0ehierdie minuut\x11{0} minuut gelede\x11{0} minute gelede" + - "\x04min.\x0coor {0} min.\x0f{0} min. gelede\x02m.\x07sekonde\x03nou\x0fo" + - "or {0} sekonde\x10oor {0} sekondes\x12{0} sekonde gelede\x13{0} sekondes" + - " gelede\x04sek.\x0coor {0} sek.\x0f{0} sek. gelede\x02s.\x07tydsone\x07{" + - "0}-tyd\x0d{0}-dagligtyd\x10{0}-standaardtyd\x1eGekoördineerde Universele" + - " Tyd\x0fBritse somertyd\x12Ierse standaardtyd\x0fAfghanistan-tyd\x13Sent" + - "raal-Afrika-tyd\x03CAT\x0eOos-Afrika-tyd\x03EAT\x18Suid-Afrika-standaard" + - "tyd\x04SAST\x0eWes-Afrika-tyd\x17Wes-Afrika-standaardtyd\x13Wes-Afrika-s" + - "omertyd\x03WAT\x04WAST\x0aAlaska-tyd\x13Alaska-standaardtyd\x10Alaska-da" + - "gligtyd\x0bAmasone-tyd\x14Amasone-standaardtyd\x10Amasone-somertyd\x0cSe" + - "ntrale tyd\x15Sentrale standaardtyd\x12Sentrale dagligtyd\x0dOostelike t" + - "yd\x16Oostelike standaardtyd\x13Oostelike dagligtyd\x07Bergtyd\x11Berg-s" + - "tandaardtyd\x0eBerg-dagligtyd\x0dPasifiese tyd\x16Pasifiese standaardtyd" + - "\x13Pasifiese dagligtyd\x0aAnadyr-tyd\x13Anadyr-standaardtyd\x0fAnadyr-s" + - "omertyd\x08Apia-tyd\x11Apia-standaardtyd\x0eApia-dagligtyd\x0cArabiese t" + - "yd\x15Arabiese standaardtyd\x12Arabiese dagligtyd\x0fArgentinië-tyd\x18A" + - "rgentinië-standaardtyd\x14Argentinië-somertyd\x13Wes-Argentinië-tyd\x1cW" + - "es-Argentinië-standaardtyd\x18Wes-Argentinië-somertyd\x0cArmenië-tyd\x15" + - "Armenië-standaardtyd\x11Armenië-somertyd\x0eAtlantiese tyd\x17Atlantiese" + - " standaardtyd\x14Atlantiese dagligtyd\x17Sentraal-Australië-tyd!Australi" + - "ese sentraal-standaardtyd\x1eAustraliese sentrale dagligtyd\x22Australie" + - "se sentraal-Westelike tyd,Australiese sentraal-Westelike standaard-tyd(A" + - "ustraliese sentraal-Westelike dagligtyd\x19Oostelike Australiese tyd\x22" + - "Australiese Oostelike standaardtyd\x1fAustraliese Oostelike dagligtyd" + - "\x18Westelike Australië-tyd\x22Australiese Westelike standaardtyd\x1fAus" + - "traliese Westelike dagligtyd\x0fAserbeidjan-tyd\x18Aserbeidjan-standaard" + - "tyd\x14Aserbeidjan-somertyd\x09Asore-tyd\x12Asore-standaardtyd\x0eAsore-" + - "somertyd\x0eBangladesj-tyd\x17Bangladesj-standaardtyd\x13Bangladesj-some" + - "rtyd\x0bBhoetan-tyd\x0bBolivia-tyd\x0dBrasilië-tyd\x16Brasilië-standaard" + - "tyd\x12Brasilië somertyd\x16Broenei Darussalam-tyd\x0eKaap Verde-tyd\x17" + - "Kaap Verde-standaardtyd\x13Kaap Verde-somertyd\x15Chamorro-standaardtyd" + - "\x0bChatham-tyd\x14Chatham-standaardtyd\x11Chatham-dagligtyd\x09Chili-ty" + - "d\x12Chili-standaardtyd\x0eChili-somertyd\x09China-tyd\x12China-standaar" + - "dtyd\x0fChina-dagligtyd\x0eChoibalsan-tyd\x17Choibalsan-standaardtyd\x13" + - "Choibalsan-somertyd\x12Kersfeeseiland-tyd\x10Cocoseilande-tyd\x0dColombi" + - "ë-tyd\x16Colombië-standaardtyd\x12Colombië-somertyd\x0fCookeilande-tyd" + - "\x18Cookeilande-standaardtyd\x18Cookeilande-halfsomertyd\x08Kuba-tyd\x11" + - "Kuba-standaardtyd\x0eKuba-dagligtyd\x09Davis-tyd\x16Dumont-d’Urville-tyd" + - "\x0dOos-Timor-tyd\x0ePaaseiland-tyd\x17Paaseiland-standaardtyd\x13Paasei" + - "land-somertyd\x0bEcuador-tyd\x15Sentraal-Europese tyd\x1eSentraal-Europe" + - "se standaardtyd\x1aSentraal-Europese somertyd\x10Oos-Europese tyd\x19Oos" + - "-Europese standaardtyd\x15Oos-Europese somertyd\x1cVerder-oosterse Europ" + - "ese Tyd\x10Wes-Europese tyd\x19Wes-Europese standaardtyd\x15Wes-Europese" + - " somertyd\x13Falklandeilande-tyd\x1cFalklandeilande-standaardtyd\x18Falk" + - "landeilande-somertyd\x09Fidji-tyd\x12Fidji-standaardtyd\x0eFidji-somerty" + - "d\x10Frans-Guiana-tyd!Franse Suider- en Antarktiese tyd\x0dGalapagos-tyd" + - "\x0bGambier-tyd\x0cGeorgië-tyd\x15Georgië-standaardtyd\x11Georgië-somert" + - "yd\x12Gilberteilande-tyd\x14Greenwich-mediaantyd\x11Oos-Groenland-tyd" + - "\x1aOos-Groenland-standaardtyd\x16Oos-Groenland-somertyd\x11Wes-Groenlan" + - "d-tyd\x1aWes-Groenland-standaardtyd\x16Wes-Groenland-somertyd\x11Golf-st" + - "andaardtyd\x0aGuyana-tyd\x14Hawaii-Aleusiër-tyd\x1dHawaii-Aleusiër-stand" + - "aardtyd\x1aHawaii-Aleusiër-dagligtyd\x0cHongkong-tyd\x15Hongkong-standaa" + - "rdtyd\x11Hongkong-somertyd\x08Hovd-tyd\x11Hovd-standaardtyd\x0dHovd-some" + - "rtyd\x13Indië-standaardtyd\x12Indiese Oseaan-tyd\x0dIndosjina-tyd\x17Sen" + - "traal Indonesië-tyd\x12Oos-Indonesië-tyd\x12Wes-Indonesië-tyd\x08Iran-ty" + - "d\x11Iran-standaardtyd\x0eIran-dagligtyd\x0bIrkutsk-tyd\x14Irkutsk-stand" + - "aardtyd\x10Irkutsk-somertyd\x0aIsrael-tyd\x13Israel-standaardtyd\x10Isra" + - "el-dagligtyd\x09Japan-tyd\x12Japan-standaardtyd\x0fJapan-dagligtyd\x1cPe" + - "tropavlovsk-Kamchatski-tyd%Petropavlovsk-Kamchatski-standaardtyd!Petropa" + - "vlovsk-Kamchatski-somertyd\x11Oos-Kazakstan-tyd\x11Wes-Kazakstan-tyd\x0d" + - "Koreaanse tyd\x16Koreaanse standaardtyd\x13Koreaanse dagligtyd\x0aKosrae" + - "-tyd\x0fKrasnojarsk-tyd\x18Krasnojarsk-standaardtyd\x14Krasnojarsk-somer" + - "tyd\x0dKirgistan-tyd\x10Line-eilande-tyd\x0dLord Howe-tyd\x16Lord Howe-s" + - "tandaardtyd\x13Lord Howe-dagligtyd\x14Macquarie-eiland-tyd\x0bMagadan-ty" + - "d\x14Magadan-standaardtyd\x10Magadan-somertyd\x0dMaleisië-tyd\x0cMalediv" + - "e-tyd\x0dMarquesas-tyd\x13Marshalleilande-tyd\x0dMauritius-tyd\x16Maurit" + - "ius-standaardtyd\x12Mauritius-somertyd\x0aMawson-tyd\x14Noordwes-Meksiko" + - "-tyd\x1dNoordwes-Meksiko-standaardtyd\x1aNoordwes-Meksiko-dagligtyd\x19M" + - "eksikaanse Pasifiese tyd\x22Meksikaanse Pasifiese standaardtyd\x1fMeksik" + - "aanse Pasifiese dagligtyd\x0eUlaanbatar-tyd\x17Ulaanbatar-standaardtyd" + - "\x13Ulaanbatar-somertyd\x0aMoskou-tyd\x13Moskou-standaardtyd\x0fMoskou-s" + - "omertyd\x0bMianmar-tyd\x09Nauru-tyd\x09Nepal-tyd\x13Nieu-Kaledonië-tyd" + - "\x1cNieu-Kaledonië-standaardtyd\x18Nieu-Kaledonië-somertyd\x10Nieu-Seela" + - "nd-tyd\x19Nieu-Seeland-standaardtyd\x16Nieu-Seeland-dagligtyd\x10Newfoun" + - "dland-tyd\x19Newfoundland-standaardtyd\x16Newfoundland-dagligtyd\x08Niue" + - "-tyd\x12Norfolkeilande-tyd\x17Fernando de Noronha-tyd Fernando de Noronh" + - "a-standaardtyd\x1cFernando de Noronha-somertyd\x0fNovosibirsk-tyd\x18Nov" + - "osibirsk-standaardtyd\x14Novosibirsk-somertyd\x08Omsk-tyd\x11Omsk-standa" + - "ardtyd\x0dOmsk-somertyd\x0cPakistan-tyd\x15Pakistan-standaardtyd\x11Paki" + - "stan-somertyd\x09Palau-tyd\x16Papoea-Nieu-Guinee-tyd\x0cParaguay-tyd\x15" + - "Paraguay-standaardtyd\x11Paraguay-somertyd\x08Peru-tyd\x11Peru-standaard" + - "tyd\x0dPeru-somertyd\x0eFilippynse tyd\x17Filippynse standaardtyd\x13Fil" + - "ippynse somertyd\x11Fenikseilande-tyd\x1bSint-Pierre en Miquelon-tyd$Sin" + - "t-Pierre en Miquelon-standaardtyd!Sint-Pierre en Miquelon-dagligtyd\x0cP" + - "itcairn-tyd\x0aPonape-tyd\x0dPyongyang-tyd\x0bReunion-tyd\x0bRothera-tyd" + - "\x0cSakhalin-tyd\x15Sakhalin-standaardtyd\x11Sakhalin-somertyd\x0aSamara" + - "-tyd\x13Samara-standaardtyd\x10Samara-dagligtyd\x09Samoa-tyd\x12Samoa-st" + - "andaardtyd\x0fSamoa-dagligtyd\x0dSeychelle-tyd\x16Singapoer-standaardtyd" + - "\x12Solomoneilande-tyd\x11Suid-Georgië-tyd\x0cSuriname-tyd\x09Syowa-tyd" + - "\x0aTahiti-tyd\x0aTaipei-tyd\x13Taipei-standaardtyd\x10Taipei-dagligtyd" + - "\x0fTadjikistan-tyd\x0bTokelau-tyd\x09Tonga-tyd\x12Tonga-standaardtyd" + - "\x0eTonga-somertyd\x09Chuuk-tyd\x10Turkmenistan-tyd\x19Turkmenistan-stan" + - "daardtyd\x15Turkmenistan-somertyd\x0aTuvalu-tyd\x0bUruguay-tyd\x14Urugua" + - "y-standaardtyd\x10Uruguay-somertyd\x0fOesbekistan-tyd\x18Oesbekistan-sta" + - "ndaardtyd\x14Oesbekistan-somertyd\x0bVanuatu-tyd\x14Vanuatu-standaardtyd" + - "\x10Vanuatu-somertyd\x0dVenezuela-tyd\x0fVladivostok-tyd\x18Vladivostok-" + - "standaardtyd\x14Vladivostok-somertyd\x0dVolgograd-tyd\x16Volgograd-stand" + - "aardtyd\x12Volgograd-somertyd\x0aVostok-tyd\x0fWake-eiland-tyd\x14Wallis" + - " en Futuna-tyd\x0cJakoetsk-tyd\x15Jakoetsk-standaardtyd\x11Jakoetsk-some" + - "rtyd\x11Jekaterinburg-tyd\x1aJekaterinburg-standaardtyd\x16Jekaterinburg" + - "-somertyd\x0fEEEE d MMMM y G\x0ad MMMM y G\x09d MMM y G\x0dEEEE d MMMM y" + - "\x08d MMMM y\x07d MMM y\x0ad MMM, y G\x0bd/M/y GGGGG\x04nùm\x04kɨz\x04tɨ" + - "d\x03taa\x03see\x03nzu\x03dum\x04fɔe\x03dzu\x04lɔm\x03kaa\x03fwo\x03sig" + - "\x03ter\x03kua\x03kin\x03ses\x03sab\x03ata\x03mar\x03pin\x03sis\x03tal" + - "\x03arf\x04g.j.\x02gj" - -var bucket2 string = "" + // Size: 19526 bytes - "\x11ndzɔ̀ŋɔ̀nùm\x17ndzɔ̀ŋɔ̀kƗ̀zùʔ\x1bndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà\x1andzɔ̀ŋɔ̀tǎafʉ̄" + - "ghā\x0fndzɔ̀ŋèsèe\x15ndzɔ̀ŋɔ̀nzùghò\x13ndzɔ̀ŋɔ̀dùmlo\x17ndzɔ̀ŋɔ̀kwîfɔ̀e" + - "\x22ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù\x1andzɔ̀ŋɔ̀ghǔuwelɔ̀m\x1bndzɔ̀ŋɔ̀chwaʔàkaa w" + - "o\x10ndzɔ̀ŋèfwòo\x03nts\x03kpa\x04ghɔ\x04tɔm\x03ume\x04ghɨ\x03dzk\x0atsu" + - "ʔntsɨ\x0atsuʔukpà\x0btsuʔughɔe\x0ftsuʔutɔ̀mlò\x09tsuʔumè\x0dtsuʔughɨ̂m" + - "\x11tsuʔndzɨkɔʔɔ\x0ckɨbâ kɨ 1\x09ugbâ u 2\x09ugbâ u 3\x09ugbâ u 4\x03a.g" + - "\x03a.k\x0fSěe Kɨ̀lesto\x0fBǎa Kɨ̀lesto\x02SK\x02BK\x08d MMM, y\x05d/M/y" + - "\x08kɨtîgh\x07kɨnûm\x07ndzɔŋ\x05ewɨn\x06utsuʔ\x0aā zūɛɛ\x03nɛ\x08tsʉtsʉ" + - "\x15tsuʔu mɨ̀ èwɨ̄n\x09â tsɨ̀\x04tàm\x05menè\x09sɛkɔ̀n\x15dɨŋò kɨ enɨ̀gh" + - "a\x11EEEE, G y MMMM dd\x0eGGGGG yy/MM/dd\x04S-Ɔ\x04K-Ɔ\x04E-Ɔ\x03E-O\x03" + - "E-K\x03O-A\x03A-K\x04D-Ɔ\x04F-Ɛ\x04Ɔ-A\x04Ɔ-O\x04M-Ɔ\x0fSanda-Ɔpɛpɔn\x10" + - "Kwakwar-Ɔgyefuo\x0dEbɔw-Ɔbenem\x11Ebɔbira-Oforisuo\x1cEsusow Aketseaba-K" + - "ɔtɔnimba\x14Obirade-Ayɛwohomumu\x12Ayɛwoho-Kitawonsa\x0eDifuu-Ɔsandaa" + - "\x0cFankwa-Ɛbɔ\x10Ɔbɛsɛ-Ahinime\x12Ɔberɛfɛw-Obubuo\x0fMumu-Ɔpɛnimba\x03K" + - "we\x03Dwo\x03Ben\x03Wuk\x03Yaw\x03Fia\x03Mem\x07Kwesida\x06Dwowda\x06Ben" + - "ada\x06Wukuda\x05Yawda\x04Fida\x08Memeneda\x01K\x01D\x01B\x01W\x01Y\x01F" + - "\x01M\x02AN\x02EW\x0bAnsa Kristo\x0dKristo Ekyiri\x02AK\x02KE\x0fEEEE, y" + - " MMMM dd\x08yy/MM/dd\x0eh:mm:ss a zzzz\x0bh:mm:ss a z\x09h:mm:ss a\x06h:" + - "mm a\x04Bere\x03Afe\x06Bosome\x06Dapɛn\x02Da\x05Ndeda\x04Ndɛ\x07Ɔkyena" + - "\x0cDapɛn mu da\x07Da bere\x08Dɔnhwer\x04Sema\x08Sɛkɛnd\x0bBere apaamu" + - "\x12EEEE፣ d MMMM y G\x0ddd/MM/y GGGGG\x07ዓ/ዓ\x07ዓ/ም\x0fመስከረም\x0cጥቅምት\x09" + - "ኅዳር\x0cታኅሣሥ\x06ጥር\x0cየካቲት\x0cመጋቢት\x0cሚያዝያ\x0cግንቦት\x06ሰኔ\x09ሐምሌ\x09ነሐሴ" + - "\x0cጳጉሜን\x09ጃንዩ\x09ፌብሩ\x09ማርች\x09ኤፕሪ\x06ሜይ\x06ጁን\x09ጁላይ\x09ኦገስ\x09ሴፕቴ" + - "\x09ኦክቶ\x09ኖቬም\x09ዲሴም\x03ጃ\x03ፌ\x03ማ\x03ኤ\x03ሜ\x03ጁ\x03ኦ\x03ሴ\x03ኖ\x03ዲ" + - "\x0fጃንዩወሪ\x0fፌብሩወሪ\x0cኤፕሪል\x0cኦገስት\x12ሴፕቴምበር\x0fኦክቶበር\x0fኖቬምበር\x0fዲሴምበር" + - "\x09እሑድ\x06ሰኞ\x09ማክሰ\x09ረቡዕ\x09ሐሙስ\x09ዓርብ\x09ቅዳሜ\x03እ\x03ሰ\x03ረ\x03ሐ\x03" + - "ዓ\x03ቅ\x0cማክሰኞ\x07ሩብ1\x07ሩብ2\x07ሩብ3\x07ሩብ4\x0e1ኛው ሩብ\x0e2ኛው ሩብ\x0e3ኛው " + - "ሩብ\x0e4ኛው ሩብ\x13እኩለ ሌሊት\x09ጥዋት\x09ቀትር\x0cከሰዓት\x0aጥዋት1\x0dከሰዓት1\x07ማታ1" + - "\x0aሌሊት1\x03ጠ\x03ቀ\x03ከ\x16ከሰዓት በኋላ\x06ማታ\x09ሌሊት\x13ዓመተ ዓለም\x16ዓመተ ምሕረት" + - "\x07ዓ/ም\x10EEEE ፣d MMMM y\x07dd/MM/y\x0cሙሀረም\x09ሳፈር\x16ረቢዑል አወል\x16ረቢዑል " + - "አኺር\x16ጀማደል አወል\x16ጀማደል አኺር\x09ረጀብ\x0cሻእባን\x0cረመዳን\x09ሸዋል\x0fዙልቂዳህ\x0f" + - "ዙልሂጃህ\x09ዘመን\x09ዓመት\x16ያለፈው ዓመት\x13በዚህ ዓመት\x1cየሚቀጥለው ዓመት\x1dበ{0} ዓመታት " + - "ውስጥ\x1aከ{0} ዓመት በፊት\x1dከ{0} ዓመታት በፊት\x06ሩብ\x19የመጨረሻው ሩብ\x0dይህ ሩብ\x19የሚ" + - "ቀጥለው ሩብ\x0b+{0} ሩብ\x14{0} ሩብ በፊት\x06ወር\x13ያለፈው ወር\x10በዚህ ወር\x19የሚቀጥለው " + - "ወር\x17በ{0} ወር ውስጥ\x1aበ{0} ወራት ውስጥ\x17ከ{0} ወር በፊት\x1aከ{0} ወራት በፊት\x0cሳም" + - "ንት\x19ያለፈው ሳምንት\x16በዚህ ሳምንት\x1fየሚቀጥለው ሳምንት\x1dበ{0} ሳምንት ውስጥ በ{0} ሳምንታት" + - " ውስጥ\x1dከ{0} ሳምንት በፊት ከ{0} ሳምንታት በፊት\x10{0} ሳምንት\x19ባለፈው ሳምንት\x16በዚህ ሣምን" + - "ት\x06ቀን\x19ከትናንት ወዲያ\x0cትናንት\x06ዛሬ\x06ነገ\x13ከነገ ወዲያ\x17በ{0} ቀን ውስጥ\x1a" + - "በ{0} ቀናት ውስጥ\x17ከ{0} ቀን በፊት\x1aከ{0} ቀናት በፊት\x0fትላንትና\x1aበ{0} ቀኖች ውስጥ" + - "\x18ከ {0} ቀን በፊት\x1aከ{0} ቀኖች በፊት\x0cአዘቦት\x16ያለፈው እሑድ\x16የአሁኑ እሑድ\x1cየሚቀጥ" + - "ለው እሑድ\x1aበ{0} እሑድ ውስጥ\x1dበ{0} እሑዶች ውስጥ\x1aከ{0} እሑድ በፊት\x1dከ{0} እሑዶች በ" + - "ፊት\x13ያለፈው ሰኞ\x13የአሁኑ ሰኞ\x19የሚቀጥለው ሰኞ\x17በ{0} ሰኞ ውስጥ\x1dበ{0} ሰኞዎች ውስጥ" + - "\x17ከ{0} ሰኞ በፊት\x1dከ{0} ሰኞዎች በፊት\x19ያለፈው ማክሰኞ\x19የአሁኑ ማክሰኞ\x1fየሚቀጥለው ማክሰ" + - "ኞ\x1dበ{0} ማክሰኞ ውስጥ#በ{0} ማክሰኞዎች ውስጥ\x1dከ{0} ማክሰኞ በፊት#ከ{0} ማክሰኞዎች በፊት" + - "\x16ያለፈው ረቡዕ\x16የአሁኑ ረቡዕ\x1cየሚቀጥለው ረቡዕ\x1aበ{0} ረቡዕ ውስጥ በ{0} ረቡዕዎች ውስጥ" + - "\x1aከ{0} ረቡዕ በፊት ከ{0} ረቡዕዎች በፊት\x16ያለፈው ሐሙስ\x16የአሁኑ ሐሙስ\x1cየሚቀጥለው ሐሙስ" + - "\x1aበ{0} ሐሙስ ውስጥ\x1dበ{0} ሐሙሶች ውስጥ\x1aከ{0} ሐሙስ በፊት\x1dከ{0} ሐሙሶች በፊት\x16ያለ" + - "ፈው ዓርብ\x16የአሁኑ ዓርብ\x1cየሚቀጥለው ዓርብ\x1aበ{0} ዓርብ ውስጥ በ{0} ዓርብዎች ውስጥ\x1aከ{0" + - "} ዓርብ በፊት ከ{0} ዓርብዎች በፊት\x16ያለፈው ቅዳሜ\x16የአሁኑ ቅዳሜ\x1cየሚቀጥለው ቅዳሜ\x1aበ{0} ቅ" + - "ዳሜ ውስጥ በ{0} ቅዳሜዎች ውስጥ\x1aከ{0} ቅዳሜ በፊት ከ{0} ቅዳሜዎች በፊት\x16ጥዋት/ከሰዓት\x09ሰዓ" + - "ት\x10ይህ ሰዓት\x1aበ{0} ሰዓት ውስጥ\x1dበ{0} ሰዓቶች ውስጥ\x1aከ{0} ሰዓት በፊት\x1dከ{0} ሰ" + - "ዓቶች በፊት\x09ደቂቃ\x10ይህ ደቂቃ\x1aበ{0} ደቂቃ ውስጥ በ{0} ደቂቃዎች ውስጥ\x1aከ{0} ደቂቃ በፊ" + - "ት ከ{0} ደቂቃዎች በፊት\x0cሰከንድ\x09አሁን\x1dበ{0} ሰከንድ ውስጥ በ{0} ሰከንዶች ውስጥ\x1dከ{0" + - "} ሰከንድ በፊት ከ{0} ሰከንዶች በፊት\x13የሰዓት ሰቅ\x0b+HHmm;-HHmm\x11ጂ ኤም ቲ{0}\x0eጂ ኤም" + - " ቲ\x0a{0} ጊዜ${0} የቀን ብርሃን ሰዓት\x1a{0} መደበኛ ሰዓት,የተቀነባበረ ሁለገብ ሰዓት3የብሪትሽ የበጋ" + - " ሰዓት አቆጣጠር6የአይሪሽ መደበኛ ሰዓት አቆጣጠር\x22የአፍጋኒስታን ሰዓት,የመካከለኛው አፍሪካ ሰዓት&የምስራቅ አ" + - "ፍሪካ ሰዓት0የደቡብ አፍሪካ መደበኛ ሰዓት&የምዕራብ አፍሪካ ሰዓት3የምዕራብ አፍሪካ መደበኛ ሰዓት3የምዕራብ አፍ" + - "ሪካ ክረምት ሰዓት)የአላስካ ሰዓት አቆጣጠር9የአላስካ መደበኛ የሰዓት አቆጣጠር3የአላስካ የቀን ሰዓት አቆጣጠር)" + - "የአማዞን ሰዓት አቆጣጠር6የአማዞን መደበኛ ሰዓት አቆጣጠር3የአማዞን የቀን ሰዓት አቆጣጠር,የመካከለኛ ሰዓት አቆ" + - "ጣጠር9የመካከለኛ መደበኛ ሰዓት አቆጣጠር6የመካከለኛ የቀን ሰዓት አቆጣጠር,የምዕራባዊ ሰዓት አቆጣጠር<የምዕራባዊ" + - " መደበኛ የሰዓት አቆጣጠር6የምዕራባዊ የቀን ሰዓት አቆጣጠር)የተራራ የሰዓት አቆጣጠር6የተራራ መደበኛ የሰዓት አቆጣ" + - "ጠር/የተራራ የቀንሰዓት አቆጣጠር)የፓስፊክ ሰዓት አቆጣጠር6የፓስፊክ መደበኛ ሰዓት አቆጣጠር3የፓስፊክ የቀን ሰዓ" + - "ት አቆጣጠር,የአናድይር ሰዓት አቆጣጠር,የአናዲይር ሰዓት አቆጣጠር9የአናድይር የበጋ የሰዓት አቆጣጠር\x16የአፒ" + - "ያ ሰዓት#የአፒያ መደበኛ ሰዓት'የአፒያ የቀን ጊዜ ሰዓት\x19የዓረቢያ ሰዓት&የዓረቢያ መደበኛ ሰዓት0የዓረቢያ " + - "የቀን ብርሃን ሰዓት2የአርጀንቲና የሰዓት አቆጣጠር<የአርጀንቲና መደበኛ ሰዓት አቆጣጠር9የአርጀንቲና የበጋ ሰዓት" + - " አቆጣጠር?የአርጀንቲና ምስራቃዊ ሰዓት አቆጣጠርLየምዕራባዊ አርጀንቲና መደበኛ ሰዓት አቆጣጠርFየአርጀንቲና ምስራቃ" + - "ዊ በጋ ሰዓት አቆጣጠር\x1cየአርመኒያ ሰዓት)የአርመኒያ መደበኛ ሰዓት)የአርመኒያ ክረምት ሰዓት2የአትላንቲክ የ" + - "ሰዓት አቆጣጠር?የአትላንቲክ መደበኛ የሰዓት አቆጣጠር9የአትላንቲክ የቀን ሰዓት አቆጣጠርEየመካከለኛው አውስትራሊ" + - "ያ ሰዓት አቆጣጠርRየአውስትራሊያ መካከለኛ መደበኛ የሰዓት አቆጣጠርLየአውስትራሊያ መካከለኛ የቀን ሰዓት አቆጣጠ" + - "ርRየአውስትራሊያ መካከለኛ ምስራቃዊ ሰዓት አቆጣጠር_የአውስትራሊያ መካከለኛ ምስራቃዊ መደበኛ ሰዓት አቆጣጠር\\" + - "የአውስትራሊያ መካከለኛው ምስራቅ የቀን ሰዓት አቆጣጠርEየምዕራባዊ አውስትራሊያ የሰዓት አቆጣጠርRየአውስትራሊያ " + - "ምዕራባዊ መደበኛ የሰዓት አቆጣጠርLየአውስትራሊያ ምዕራባዊ የቀን ሰዓት አቆጣጠርBየምስራቃዊ አውስትራሊያ ሰዓት " + - "አቆጣጠርOየአውስትራሊያ ምስራቃዊ መደበኛ ሰዓት አቆጣጠርLየአውስትራሊያ ምስራቃዊ የቀን ሰዓት አቆጣጠር\x22የአ" + - "ዘርባይጃን ሰዓት/የአዘርባይጃን መደበኛ ሰዓት/የአዘርባይጃን ክረምት ሰዓት\x19የአዞረስ ሰዓት&የአዞረስ መደበኛ" + - " ሰዓት&የአዞረስ ክረምት ሰዓት\x1fየባንግላዴሽ ሰዓት,የባንግላዴሽ መደበኛ ሰዓት,የባንግላዴሽ ክረምት ሰዓት\x16" + - "የቡታን ሰዓት\x19የቦሊቪያ ሰዓት,የብራዚላዊ ሰዓት አቆጣጠር9የብራሲሊያ መደበኛ ሰዓት አቆጣጠር3የብራዚላ የበጋ" + - " ሰዓት አቆጣጠር)የብሩኔይ ዳሩሳላም ሰዓት\x1dየኬፕ ቨርዴ ሰዓት*የኬፕ ቨርዴ መደበኛ ሰዓት*የኬፕ ቨርዴ ክረምት " + - "ሰዓት#የቻሞሮ መደበኛ ሰዓት\x16የቻታም ሰዓት#የቻታም መደበኛ ሰዓት-የቻታም የቀን ብርሃን ሰዓት\x13የቺሊ ሰ" + - "ዓት የቺሊ መደበኛ ሰዓት የቺሊ ክረምት ሰዓት\x16የቻይና ሰዓት#የቻይና መደበኛ ሰዓት-የቻይና የቀን ብርሃን ሰ" + - "ዓት,የቾይባልሳ ሰዓት አቆጣጠር?የቾይባልሳን መደበኛ የሰዓት አቆጣጠር<የቾይባልሳን የበጋ የሰአት አቆጣጠር\x1d" + - "የገና ደሴት ሰዓት#የኮኮስ ደሴቶች ሰዓት\x1cየኮሎምቢያ ሰዓት)የኮሎምቢያ መደበኛ ሰዓት)የኮሎምቢያ ክረምት ሰዓ" + - "ት የኩክ ደሴቶች ሰዓት-የኩክ ደሴቶች መደበኛ ሰዓት7የኩክ ደሴቶች ግማሽ ክረምት ሰዓት\x10ኩባ ሰዓት የኩባ መ" + - "ደበኛ ሰዓት*የኩባ የቀን ብርሃን ሰዓት\x16የዴቪስ ሰዓት&የዱሞንት-ዱርቪል ሰዓት#የምስራቅ ቲሞር ሰዓት#የኢስተ" + - "ር ደሴት ሰዓት0የኢስተር ደሴት መደበኛ ሰዓት0የኢስተር ደሴት ክረምት ሰዓት\x19የኢኳዶር ሰዓት,የመካከለኛው አ" + - "ውሮፓ ሰዓት9የመካከለኛው አውሮፓ መደበኛ ሰዓት9የመካከለኛው አውሮፓ ክረምት ሰዓት)የምስራቃዊ አውሮፓ ሰዓት6የም" + - "ስራቃዊ አውሮፓ መደበኛ ሰዓት6የምስራቃዊ አውሮፓ ክረምት ሰዓት0የሩቅ ምስራቅ የአውሮፓ ሰዓት)የምዕራባዊ አውሮፓ" + - " ሰዓት6የምዕራባዊ አውሮፓ መደበኛ ሰዓት6የምዕራባዊ አውሮፓ ክረምት ሰዓት,የፋልክላንድ ደሴቶች ሰዓት9የፋልክላንድ " + - "ደሴቶች መደበኛ ሰዓት9የፋልክላንድ ደሴቶች ክረምት ሰዓት\x13የፊጂ ሰዓት የፊጂ መደበኛ ሰዓት የፊጂ ክረምት ሰ" + - "ዓት&የፈረንሳይ ጉያና ሰዓትFየፈረንሳይ ደቡባዊ እና አንታርክቲክ ሰዓት\x1cየጋላፓጎስ ሰዓት\x1cየጋምቢየር ሰ" + - "ዓት\x1cየጂዮርጂያ ሰዓት)የጂዮርጂያ መደበኛ ሰዓት)የጂዮርጂያ ክረምት ሰዓት)የጂልበርት ደሴቶች ሰዓት)ግሪንዊች" + - " ማዕከላዊ ሰዓት,የምስራቅ ግሪንላንድ ሰዓት9የምስራቅ ግሪንላንድ መደበኛ ሰዓት9የምስራቅ ግሪንላንድ ክረምት ሰዓት," + - "የምዕራብ ግሪንላንድ ሰዓት9የምዕራብ ግሪንላንድ መደበኛ ሰዓት9የምዕራብ ግሪንላንድ ክረምት ሰዓት,የባህረሰላጤ መ" + - "ደበኛ ሰዓት\x16የጉያና ሰዓት3የሃዋይ አሌኡት ሰዓት አቆጣጠር@የሃዋይ አሌኡት መደበኛ ሰዓት አቆጣጠር=የሃዋይ " + - "አሌኡት የቀን ሰዓት አቆጣጠር የሆንግ ኮንግ ሰዓት-የሆንግ ኮንግ መደበኛ ሰዓት-የሆንግ ኮንግ ክረምት ሰዓት&የሆ" + - "ቭድ ሰዓት አቆጣጠር6የሆቭድ መደበኛ የሰዓት አቆጣጠር0የሆቭድ የበጋ ሰዓት አቆጣጠር#የህንድ መደበኛ ሰዓት&የህን" + - "ድ ውቅያኖስ ሰዓት\x1fየኢንዶቻይና ሰዓት2የመካከለኛው ኢንዶኔዢያ ሰዓት/የምስራቃዊ ኢንዶኔዢያ ሰዓት/የምዕራባዊ" + - " ኢንዶኔዢያ ሰዓት\x16የኢራን ሰዓት#የኢራን መደበኛ ሰዓት-የኢራን የቀን ብርሃን ሰዓት/የኢርኩትስክ ሰዓት አቆጣጠ" + - "ር?የኢርኩትስክ መደበኛ የሰዓት አቆጣጠር9ኢርኩትስክ የበጋ የሰዓት አቆጣጠር\x1cየእስራኤል ሰዓት)የእስራኤል መ" + - "ደበኛ ሰዓት3የእስራኤል የቀን ብርሃን ሰዓት\x16የጃፓን ሰዓት#የጃፓን መደበኛ ሰዓት-የጃፓን የቀን ብርሃን ሰዓ" + - "ት,የካምቻትካ ሰዓት አቆጣጠርJየፔትሮፓቭሎስኪ - ካምቻትስኪ ሰዓት አቆጣጠርTየፔትሮፓቭሎስኪ - ካምቻትስኪ የበጋ" + - " ሰዓት አቆጣጠር,የምስራቅ ካዛኪስታን ሰዓት,የምዕራብ ካዛኪስታን ሰዓት\x16የኮሪያ ሰዓት#የኮሪያ መደበኛ ሰዓት-የ" + - "ኮሪያ የቀን ብርሃን ሰዓት\x19የኮስራኤ ሰዓት5የክራስኖያርስክ ሰዓት አቆጣጠርEየክራስኖይአርስክ መደበኛ ሰዓት " + - "አቆጣጠር?የክራስኖያርስክ የበጋ ሰዓት አቆጣጠር\x1fየኪርጊስታን ሰዓት#የላይን ደሴቶች ሰዓት0የሎርድ ሆዌ የሰዓ" + - "ት አቆጣጠር=የሎርድ ሆዌ መደበኛ የሰዓት አቆጣጠር7የሎርድ ሆዌ የቀን ሰዓት አቆጣጠር የማከሪ ደሴት ሰዓት,የማጋ" + - "ዳን የሰዓት አቆጣጠር6የማጋዳን መደበኛ ሰዓት አቆጣጠር0የማጋዳን በጋ ሰዓት አቆጣጠር\x1cየማሌይዢያ ሰዓት" + - "\x1cየማልዲቭስ ሰዓት\x1cየማርኴሳስ ሰዓት&የማርሻል ደሴቶች ሰዓት\x1fየማውሪሺየስ ሰዓት,የማውሪሺየስ መደበኛ " + - "ሰዓት,የማውሪሺየስ ክረምት ሰዓት\x19የማውሰን ሰዓትCሰሜናዊ ምእራብ የሜክሲኮ ሰዓት አቆጣጠርPሰሜናዊ ምእራብ " + - "የሜክሲኮ መደበኛ ሰዓት አቆጣጠርMሰሜናዊ ምእራብ የሜክሲኮ የቀን ሰዓት አቆጣጠር6የሜክሲኮ ፓሲፊክ ሰዓት አቆጣጠ" + - "ርCየሜክሲኮ ፓሲፊክ መደበኛ ሰዓት አቆጣጠር@የሜክሲኮ ፓሲፊክ የቀን ሰዓት አቆጣጠር\x1dየኡላን ባቶር ጊዜ=የኡ" + - "ላን ባቶር መደበኛ ሰዓት አቆጣጠር:የኡላን ባቶር የበጋ ሰዓት አቆጣጠር&የሞስኮ ሰዓት አቆጣጠር3የሞስኮ መደበኛ " + - "ሰዓት አቆጣጠር0የሞስኮ የበጋ ሰዓት አቆጣጠር\x1cየሚያንማር ሰዓት\x16የናውሩ ሰዓት\x16የኔፓል ሰዓት#የኒው" + - " ካሌዶኒያ ሰዓት0የኒው ካሌዶኒያ መደበኛ ሰዓት0የኒው ካሌዶኒያ ክረምት ሰዓት የኒው ዚላንድ ሰዓት-የኒው ዚላንድ መ" + - "ደበኛ ሰዓት7የኒው ዚላንድ የቀን ብርሃን ሰዓት;የኒውፋውንድላንድ የሰዓት አቆጣጠርHየኒውፋውንድላንድ መደበኛ የሰ" + - "ዓት አቆጣጠርEየኒውፋውንድላንድ የቀን የሰዓት አቆጣጠር\x16የኒዩዌ ሰዓት)የኖርፎልክ ደሴቶች ሰዓት)የኖሮንሃ ሰ" + - "ዓት አቆጣጠርJየፈርናንዶ ዲ ኖሮንቻ መደበኛ ሰዓት አቆጣጠርJየፈርናንዶ ዲ ኖሮንሃ የበጋ የሰዓት አቆጣጠር5የኖቮ" + - "ሲብሪስክ የሰዓት አቆጣጠርBየኖቮሲቢርስክ መደበኛ የሰዓት አቆጣጠር<የኖቮሲብሪስክ የበጋ ሰአት አቆጣጠር,የኦምስክ" + - " የሰዓት አቆጣጠር6የኦምስክ መደበኛ ሰዓት አቆጣጠር3የኦምስክ የበጋ ሰዓት አቆጣጠር\x1cየፓኪስታን ሰዓት)የፓኪስታ" + - "ን መደበኛ ሰዓት)የፓኪስታን ክረምት ሰዓት\x16የፓላው ሰዓት!የፓፗ ኒው ጊኒ ሰዓት\x19የፓራጓይ ሰዓት&የፓራጓ" + - "ይ መደበኛ ሰዓት&የፓራጓይ ክረምት ሰዓት\x13የፔሩ ሰዓት የፔሩ መደበኛ ሰዓት የፔሩ ክረምት ሰዓት\x19የፊሊፒ" + - "ን ሰዓት&የፊሊፒን መደበኛ ሰዓት&የፊሊፒን ክረምት ሰዓት&የፊኒክስ ደሴቶች ሰዓት4ቅዱስ የፒዬር እና ሚኴሎን ሰዓ" + - "ትAቅዱስ የፒዬር እና ሚኴሎን መደበኛ ሰዓትKቅዱስ የፒዬር እና ሚኴሎን የቀን ብርሃን ሰዓት\x1fየፒትካይርን ሰ" + - "ዓት\x16የፖናፔ ሰዓት\x22የፕዮንግያንግ ሰዓት\x1cየሬዩኒየን ሰዓት\x16የሮቴራ ሰዓት,የሳክሃሊን ሰዓት አቆ" + - "ጣጠር9የሳክሃሊን መደበኛ ሰዓት አቆጣጠር6የሳክሃሊን የበጋ ሰዓት አቆጣጠር&የሳማራ ሰዓት አቆጣጠር3የሳማራ መደበ" + - "ኛ ሰዓት አቆጣጠር0የሳማራ የበጋ ሰዓት አቆጣጠር\x16የሳሞዋ ሰዓት#የሳሞዋ መደበኛ ሰዓት የሳሞዋ የበጋ ሰዓት" + - "\x19የሴሸልስ ሰዓት)የሲንጋፒር መደበኛ ሰዓት&የሰለሞን ደሴቶች ሰዓት&የደቡብ ጂዮርጂያ ሰዓት\x19የሱሪናም ሰዓት" + - "\x16የሲዮዋ ሰዓት\x16የታሂቲ ሰዓት\x19የታይፔይ ሰዓት&የታይፔይ መደበኛ ሰዓት0የታይፔይ የቀን ብርሃን ሰዓት" + - "\x1fየታጂኪስታን ሰዓት\x19የቶኬላው ሰዓት\x16የቶንጋ ሰዓት#የቶንጋ መደበኛ ሰዓት#የቶንጋ ክረምት ሰዓት\x13" + - "የቹክ ሰዓት%የቱርክመኒስታን ሰዓት2የቱርክመኒስታን መደበኛ ሰዓት2የቱርክመኒስታን ክረምት ሰዓት\x16የቱቫሉ ሰዓ" + - "ት\x19የኡራጓይ ሰዓት&የኡራጓይ መደበኛ ሰዓት&የኡራጓይ ክረምት ሰዓት\x22የኡዝቤኪስታን ሰዓት/የኡዝቤኪስታን " + - "መደበኛ ሰዓት/የኡዝቤኪስታን ክረምት ሰዓት\x16የቫኗቱ ሰዓት#የቫኗቱ መደበኛ ሰዓት#የቫኗቱ ክረምት ሰዓት\x1c" + - "የቬኔዝዌላ ሰዓት5የቭላዲቮስቶክ የሰዓት አቆጣጠርBየቪላዲቮስቶክ መደበኛ የሰዓት አቆጣጠር?የቭላዲቮስቶክ የበጋ የ" + - "ሰዓት አቆጣጠር/የቮልጎራድ የሰዓት አቆጣጠር9የቮልጎራድ መደበኛ ሰዓት አቆጣጠር6የቫልጎራድ የበጋ ሰዓት አቆጣጠር" + - "\x19የቮስቶክ ሰዓት\x1dየዌክ ደሴት ሰዓት'የዋሊስ እና ፉቱና ሰዓት,ያኩትስክ የሰዓት አቆጣጠር6ያኩትስክ መደበኛ" + - " ሰዓት አቆጣጠር6የያኩትስክ የበጋ ሰዓት አቆጣጠር5የየካተሪንበርግ ሰዓት አቆጣጠርBየየካተሪንበርግ መደበኛ ሰዓት አ" + - "ቆጣጠር?የየካተሪንበርግ የበጋ ሰዓት አቆጣጠር\x06GMT{0}\x01A\x02DK\x02PK\x16ዓመተ ምህረት" - -var bucket3 string = "" + // Size: 8915 bytes - "\x1bالتقويم البوذي\x06توت\x08بابه\x0aهاتور\x08كيهك\x08طوبة\x0aأمشير\x0cب" + - "رمهات\x0cبرمودة\x08بشنس\x0aبؤونة\x08أبيب\x08مسرى\x08نسيئ\x02١\x02٢\x02٣" + - "\x02٤\x02٥\x02٦\x02٧\x02٨\x02٩\x04١٠\x04١١\x04١٢\x04١٣\x0cمسكريم\x08تكمت" + - "\x08هدار\x0aتهساس\x04تر\x08يكتت\x0cمجابيت\x0cميازيا\x08جنبت\x06سين\x08ها" + - "مل\x08نهاس\x0aباجمن\x13EEEE، d MMMM، y G\x0cd MMMM، y G\x0fdd\u200f/MM" + - "\u200f/y G\x11d\u200f/M\u200f/y GGGGG\x0aيناير\x0cفبراير\x08مارس\x0aأبري" + - "ل\x08مايو\x0aيونيو\x0aيوليو\x0aأغسطس\x0cسبتمبر\x0cأكتوبر\x0cنوفمبر\x0cد" + - "يسمبر\x02ي\x02ف\x02م\x02أ\x02و\x02ن\x02ل\x02غ\x02س\x02ك\x02ب\x02د\x0aال" + - "أحد\x0eالاثنين\x10الثلاثاء\x10الأربعاء\x0cالخميس\x0cالجمعة\x0aالسبت\x02" + - "ح\x02ث\x02ر\x02خ\x02ج\x15الربع الأول\x17الربع الثاني\x17الربع الثالث" + - "\x17الربع الرابع\x02ص\x08فجرا\x0aظهرًا\x11بعد الظهر\x0aمساءً\x15منتصف ال" + - "ليل\x0aفجرًا\x0cصباحًا\x0aليلاً\x15قبل الميلاد\x0cميلادي\x15بعد الميلاد" + - "\x05ق.م\x05ب.م\x11EEEE، d MMMM، y\x0ad MMMM، y\x0ddd\u200f/MM\u200f/y" + - "\x0bd\u200f/M\u200f/y\x08تشري\x0eمرحشوان\x0aكيسلو\x08طيفت\x08شباط\x13آذا" + - "ر الأول\x08آذار\x15آذار الثاني\x0aنيسان\x08أيار\x0aسيفان\x08تموز\x04آب" + - "\x0aأيلول\x08محرم\x06صفر\x13ربيع الأول\x13ربيع الآخر\x17جمادى الأولى\x17" + - "جمادى الآخرة\x06رجب\x0aشعبان\x0aرمضان\x08شوال\x11ذو القعدة\x0fذو الحجة" + - "\x04هـ\x0bd MMM، y G\x08تيكا\x0cهاكتشي\x0aهاكهو\x08شتشو\x08تيهو\x08كيين" + - "\x08وادو\x0aرييكي\x08يورو\x0aجينكي\x0aتمبيو\x15تمبيو-كامبو\x13تمبيو-شوهو" + - "\x13تمبيو-هوجي\x13تمفو-جينجو\x13جينجو-كيين\x08هوكي\x09تن-أو\x0eإنرياكو" + - "\x08ديدو\x0aكونين\x0aتنتشو\x1dشووا (٨٣٤–٨٤٨)\u200f\x08كاجو\x0aنينجو\x08س" + - "يكو\x08تنان\x0aجوجان\x0cجينكيي\x08نينا\x0cكامبيو\x0aشوتاي\x08انجي\x0aان" + - "تشو\x0aشوهيي\x0aتنجيو\x0eتنرياكو\x0cتنتوكو\x08أووا\x08كوهو\x06آنا\x0eتي" + - "نروكو\x09تن-نن\x08جوجن\x08تنجن\x0aإيكان\x08كانا\x09اي-ان\x08ايسو#شورياك" + - "و (٩٩٠–٩٩٥)\u200f\x0eتشوتوكو\x0aتشوهو\x0aكانكو\x0aتشووا\x0aكانين\x08جاي" + - "ن\x0aمانجو\x0cتشوجين\x10تشورياكو%تشوكيو (١٠٤٠–١٠٤٤)\u200f\x0eكانتوكو!اي" + - "شو (١٠٤٦–١٠٥٣)\u200f\x0aتينجي\x0aكوهيي\x0eجيرياكو#انكيو (١٠٦٩–١٠٧٤)" + - "\u200f!شوهو (١٠٧٤–١٠٧٧)\u200f'شورياكو (١٠٧٧–١٠٨١)\u200f\x08ايهو\x0cأوتوك" + - "و\x0aكانجي\x08كاهو\x0aايتشو\x0cشوتوكو!كووا (١٠٩٩–١١٠٤)\u200f\x0aتشوجي" + - "\x08كاشو\x08تنين\x09تن-اي#ايكيو (١١١٣–١١١٨)\u200f\x09جن-اي\x08هوان\x08تن" + - "جي\x08ديجي!تنشو (١١٣١–١١٣٢)\u200f\x0aتشوشو\x08هوين\x08ايجي!كوجي (١١٤٢–١" + - "١٤٤)\u200f\x08تنيو\x0aكيوان\x0cنينبيي\x0aكيوجو\x08هجين\x08هيجي\x0eايريا" + - "كو\x08أوهو\x0cتشوكان\x0aايمان\x0bنين-ان\x06كاو\x06شون\x0aأنجين\x08جيشو" + - "\x08يووا\x06جيي\x0eجنريوكو\x08بنجي\x0aكنكيو\x08شوجي\x08كنين#جنكيو (١٢٠٤–" + - "١٢٠٦)\u200f\x09كن-اي!شوجن (١٢٠٧–١٢١١)\u200f\x0eكنرياكو!كنبو (١٢١٣–١٢١٩)" + - "\u200f\x0aشوكيو\x04جو\x0cجيننين\x0aكروكو\x0aأنتيي\x08كنكي\x08جويي\x0aتمب" + - "كو\x0eبنرياكو\x0aكاتيي\x0eرياكنين\x09ان-أو\x0aنينجي\x0aكنجين\x08هوجي" + - "\x0aكنتشو\x08كوجن\x08شوكا!شوجن (١٢٥٩–١٢٦٠)\u200f\x09بن-أو\x0aكوتشو\x09بن" + - "-اي\x08كنجي\x08كوان\x1fشوو (١٢٨٨–١٢٩٣)\u200f\x0aاينين\x08شوان\x08كنجن" + - "\x06كجن\x0aتوكجي\x08انكي\x0aأوتشو!شووا (١٣١٢–١٣١٧)\u200f\x08بنبو\x06جنو#" + - "جنكيو (١٣٢١–١٣٢٤)\u200f#شوتشو (١٣٢٤–١٣٢٦)\u200f\x0aكريكي\x0aجنتكو\x08جن" + - "كو\x06كمو\x08إنجن\x0aكوككو\x08شوهي\x0aكنتكو\x0aبنتشو\x08تنجو\x0eكورياكو" + - "!كووا (١٣٨١–١٣٨٤)\u200f\x0aجنتشو%مييتكو (١٣٨٤–١٣٨٧)\u200f\x08كاكي\x04كو%" + - "مييتكو (١٣٩٠–١٣٩٤)\u200f\x08أويي#شوتشو (١٤٢٨–١٤٢٩)\u200f#ايكيو (١٤٢٩–١٤" + - "٤١)\u200f\x0cككيتسو\x09بن-أن\x0aهوتكو\x0cكيوتكو\x08كوشو\x0cتشوركو\x08كن" + - "شو\x08بنشو\x0aأونين\x08بنمي%تشوكيو (١٤٨٧–١٤٨٩)\u200f\x0aانتكو\x06ميو" + - "\x08بنكي!ايشو (١٥٠٤–١٥٢١)\u200f\x08تييي\x0cكيوركو\x08تنمن!كوجي (١٥٥٥–١٥٥" + - "٨)\u200f\x0aايركو\x08جنكي!تنشو (١٥٧٣–١٥٩٢)\u200f\x0aبنركو\x0aكيتشو\x08ج" + - "نوا\x0bكان-اي!شوهو (١٦٤٤–١٦٤٨)\u200f\x08كيان\x1fشوو (١٦٥٢–١٦٥٥)\u200f" + - "\x0eميرياكو\x08منجي\x08كنبن\x08انبو\x08تنوا\x0aجوكيو\x0aجنركو\x08هويي" + - "\x0aشوتكو\x0aكيوهو\x08جنبن!كنبو (١٧٤١–١٧٤٤)\u200f#انكيو (١٧٤٤–١٧٤٨)" + - "\u200f\x0bكان-ان\x0eهورياكو\x0aمييوا\x09ان-اي\x08تنمي\x08كنسي\x0aكيووا" + - "\x08بنكا\x08بنسي\x08تنبو\x08كوكا\x06كاي\x08أنسي\x09من-ان\x0aبنكيو\x08جنج" + - "ي\x06كيو\x08ميجي\x08تيشو\x08شووا\x08هيسي\x0cفرفردن\x10أذربيهشت\x0aخرداد" + - "\x06تار\x0aمرداد\x0cشهرفار\x06مهر\x08آيان\x06آذر\x04دي\x08بهمن\x0eاسفندا" + - "ر\x08ه\u200d.ش\x0aالعصر\x0aالسنة\x19السنة الماضية\x19السنة الحالية\x19ا" + - "لسنة القادمة\x13خلال {0} سنة\x1aخلال سنة واحدة\x13خلال سنتين\x17خلال {0" + - "} سنوات\x11قبل {0} سنة\x18قبل سنة واحدة\x11قبل سنتين\x15قبل {0} سنوات" + - "\x11ربع السنة\x17الربع الأخير\x11هذا الربع\x17الربع القادم\x1aخلال {0} ر" + - "بع سنة\x1fخلال ربع سنة واحد\x18خلال ربعي سنة\x1eخلال {0} أرباع سنة\x18ق" + - "بل {0} ربع سنة\x1dقبل ربع سنة واحد\x16قبل ربعي سنة\x1cقبل {0} أرباع سنة" + - "\x0aالشهر\x17الشهر الماضي\x11هذا الشهر\x17الشهر القادم\x13خلال {0} شهر" + - "\x18خلال شهر واحد\x13خلال شهرين\x15خلال {0} أشهر\x17خلال {0} شهرًا\x11قب" + - "ل {0} شهر\x16قبل شهر واحد\x11قبل شهرين\x13قبل {0} أشهر\x15قبل {0} شهرًا" + - "\x0eالأسبوع\x1bالأسبوع الماضي\x15هذا الأسبوع\x1bالأسبوع القادم\x17خلال {" + - "0} أسبوع\x1cخلال أسبوع واحد\x17خلال أسبوعين\x19خلال {0} أسابيع\x1bخلال {" + - "0} أسبوعًا\x15قبل {0} أسبوع\x1aقبل أسبوع واحد\x15قبل أسبوعين\x17قبل {0} " + - "أسابيع\x19قبل {0} أسبوعًا\x0eأسبوع {0}\x1bخلال {0} أسبوعين\x06يوم\x0dأو" + - "ل أمس\x06أمس\x0aاليوم\x08غدًا\x0fبعد الغد\x13خلال {0} يوم\x18خلال يوم و" + - "احد\x13خلال يومين\x15خلال {0} أيام\x17خلال {0} يومًا\x11قبل {0} يوم\x16" + - "قبل يوم واحد\x11قبل يومين\x13قبل {0} أيام\x15قبل {0} يومًا\x17الأحد الم" + - "اضي\x17الأحد الحالي\x17الأحد القادم\x13خلال {0} أحد\x1eالأحد بعد القادم" + - "\x11قبل {0} أحد\x1eالأحد قبل الماضي\x0fأحد قادم\x1aأحد بعد القادم\x0fأحد" + - " ماضي\x1aأحد قبل الماضي\x1bالاثنين الماضي\x1bالاثنين الحالي\x1bالاثنين ا" + - "لقادم\x17خلال {0} إثنين\x1bالإثنين القادم\x22الإثنين بعد القادم خلال {0" + - "} أيام إثنين\x1eخلال {0} يوم إثنين\x15قبل {0} إثنين\x1bالإثنين الماضي" + - "\x22الإثنين قبل الماضي\x1eقبل {0} أيام إثنين\x1cقبل {0} يوم إثنين\x1bالإ" + - "ثنين الحالي\x13إثنين قادم\x1eإثنين بعد القادم\x13إثنين ماضي\x1eإثنين قب" + - "ل الماضي\x1dالثلاثاء الماضي\x1dالثلاثاء الحالي\x1dالثلاثاء القادم خلال " + - "{0} يوم ثلاثاء$الثلاثاء بعد القادم\x22خلال {0} أيام ثلاثاء\x1eقبل {0} يو" + - "م ثلاثاء$الثلاثاء قبل الماضي قبل {0} أيام ثلاثاء\x19خلال {0} ثلاثاء\x15" + - "ثلاثاء قادم ثلاثاء بعد القادم\x17قبل {0} ثلاثاء\x15ثلاثاء ماضي ثلاثاء ق" + - "بل الماضي\x1dالأربعاء الماضي\x1dالأربعاء الحالي\x1dالأربعاء القادم خلال" + - " {0} يوم أربعاء$الأربعاء بعد القادم\x22خلال {0} أيام أربعاء\x1eقبل {0} ي" + - "وم أربعاء$الأربعاء قبل الماضي قبل {0} أيام أربعاء\x19خلال {0} أربعاء" + - "\x17قبل {0} أربعاء\x15أربعاء ماضي أربعاء قبل الماضي\x15أربعاء قادم أربعا" + - "ء بعد القادم\x19الخميس الماضي\x19الخميس الحالي\x19الخميس القادم\x1cخلال" + - " {0} يوم خميس الخميس بعد القادم\x1eخلال {0} أيام خميس\x1aقبل {0} يوم خمي" + - "س الخميس قبل الماضي\x1cقبل {0} أيام خميس\x11هذه السنة\x19السنة التالية" + - "\x02ش\x02آ\x02ت\x08مارس\x06ماي\x0cيوليوز\x06غشت\x0aشتنبر\x0cأكتوبر\x0aنو" + - "نبر\x0aدجنبر\x0aإبريل\x08أغشت\x0aشتمبر\x0cنوفمبر\x0aدجمبر\x02إ\x13ربیع " + - "الاول\x15ربیع الثانی\x15جمادی الاول\x17جمادی الثانی\x0eذیقعدهٔ\x0cذیحجه" + - "ٔ\x0cذیقعده\x0aذیحجه\x0cفبروری\x08مارچ\x0aاپریل\x04می\x06جون\x06جول\x08" + - "اگست\x0cسپتمبر\x0cاکتوبر\x0aنومبر\x06دسم\x15ربیٖع الاول\x17ربیٖع الثانی" + - "\x0fذِی القد\x0fذِی الحج\x02د\x02س\x02چ\x02پ\x02ج\x02ش\x14ر بیع الاول" + - "\x16ر بیع الثانی\x10ذوالقعدۃ\x0eذوالحجۃ\x06فبر\x06مار\x06اپر\x04می\x06جو" + - "ن\x06اگس\x06سپت\x06اکت\x06نوم" - -var bucket4 string = "" + // Size: 13389 bytes - "\x15خلال {0} خميس\x1cخلال {0} يوم خميس\x13قبل {0} خميس\x11خميس ماضي\x1cخ" + - "ميس قبل الماضي\x19الجمعة الماضي\x19الجمعة الحالي\x19الجمعة القادم\x1cخل" + - "ال {0} يوم جمعة الجمعة بعد القادم\x1eخلال {0} أيام جمعة\x1aقبل {0} يوم " + - "جمعة الجمعة قبل الماضي\x1cقبل {0} أيام جمعة\x15خلال {0} جمعة\x11جمعة قا" + - "دم\x1cجمعة بعد القادم\x13قبل {0} جمعة\x11جمعة ماضي\x1cجمعة قبل الماضي" + - "\x17السبت الماضي\x17السبت الحالي\x17السبت القادم\x18بعد {0} يوم سبت\x1eا" + - "لسبت بعد القادم\x1aخلال {0} يوم سبت\x18قبل {0} يوم سبت\x1eالسبت قبل الم" + - "اضي\x13خلال {0} سبت\x0fسبت قادم\x1aسبت بعد القادم\x11قبل {0} سبت\x0fسبت" + - " ماضي\x1aسبت قبل الماضي\x05ص/م\x0eالساعات\x1bالساعة الحالية\x15خلال {0} " + - "ساعة\x1cخلال ساعة واحدة\x15خلال ساعتين\x17خلال {0} ساعات\x13قبل {0} ساع" + - "ة\x1aقبل ساعة واحدة\x13قبل ساعتين\x15قبل {0} ساعات\x0eالدقائق\x15هذه ال" + - "دقيقة\x17خلال {0} دقيقة\x1eخلال دقيقة واحدة\x17خلال دقيقتين\x17خلال {0}" + - " دقائق\x15قبل {0} دقيقة\x1cقبل دقيقة واحدة\x15قبل دقيقتين\x15قبل {0} دقا" + - "ئق\x0eالثواني\x08الآن\x17خلال {0} ثانية\x1eخلال ثانية واحدة\x17خلال ثان" + - "يتين\x17خلال {0} ثوانٍ\x15قبل {0} ثانية\x1cقبل ثانية واحدة\x15قبل ثانيت" + - "ين\x15قبل {0} ثوانِ\x15قبل {0} ثوانٍ\x0eالتوقيت\x0eتوقيت {0}\x1bتوقيت {" + - "0} الصيفي\x1bتوقيت {0} الرسمي*التوقيت العالمي المنسق(توقيت بريطانيا الصي" + - "في&توقيت أيرلندا الرسمي\x1dتوقيت أفغانستان توقيت وسط أفريقيا توقيت شرق " + - "أفريقيا\x22توقيت جنوب أفريقيا توقيت غرب أفريقيا-توقيت غرب أفريقيا الرسم" + - "ي-توقيت غرب أفريقيا الصيفي\x17توقيت ألاسكا*التوقيت الرسمي لألاسكا$توقيت" + - " ألاسكا الصيفي\x1bتوقيت الأمازون(توقيت الأمازون الرسمي(توقيت الأمازون ال" + - "صيفي=التوقيت المركزي لأمريكا الشماليةJالتوقيت الرسمي المركزي لأمريكا ال" + - "شماليةJالتوقيت الصيفي المركزي لأمريكا الشمالية;التوقيت الشرقي لأمريكا ا" + - "لشماليةHالتوقيت الرسمي الشرقي لأمريكا الشماليةHالتوقيت الصيفي الشرقي لأ" + - "مريكا الشمالية;التوقيت الجبلي لأمريكا الشماليةHالتوقيت الجبلي الرسمي لأ" + - "مريكا الشماليةHالتوقيت الجبلي الصيفي لأمريكا الشمالية$توقيت المحيط الها" + - "دي1توقيت المحيط الهادي الرسمي1توقيت المحيط الهادي الصيفي\x17توقيت أنادي" + - "ر$توقيت أنادير الرسمي*التوقيت الصيفي لأنادير\x13توقيت آبيا&التوقيت الرس" + - "مي لآبيا&التوقيت الصيفي لأبيا\x1bالتوقيت العربي(التوقيت العربي الرسمي(ا" + - "لتوقيت العربي الصيفي\x1dتوقيت الأرجنتين*توقيت الأرجنتين الرسمي*توقيت ال" + - "أرجنتين الصيفي$توقيت غرب الأرجنتين1توقيت غرب الأرجنتين الرسمي1توقيت غرب" + - " الأرجنتين الصيفي\x19توقيت أرمينيا&توقيت أرمينيا الرسمي&توقيت أرمينيا ال" + - "صيفي\x19توقيت الأطلسي*التوقيت الرسمي الأطلسي*التوقيت الصيفي الأطلسي\x22" + - "توقيت وسط أستراليا/توقيت وسط أستراليا الرسمي/توقيت وسط أستراليا الصيفي)" + - "توقيت غرب وسط أستراليا6توقيت غرب وسط أستراليا الرسمي6توقيت غرب وسط أستر" + - "اليا الصيفي\x22توقيت شرق أستراليا/توقيت شرق أستراليا الرسمي/توقيت شرق أ" + - "ستراليا الصيفي\x22توقيت غرب أستراليا/توقيت غرب أستراليا الرسمي/توقيت غر" + - "ب أستراليا الصيفي\x1bتوقيت أذربيجان(توقيت أذربيجان الرسمي(توقيت أذربيجا" + - "ن الصيفي\x15توقيت أزورس\x22توقيت أزورس الرسمي\x22توقيت أزورس الصيفي\x1b" + - "توقيت بنجلاديش(توقيت بنجلاديش الرسمي(توقيت بنجلاديش الصيفي\x15توقيت بوت" + - "ان\x19توقيت بوليفيا\x1bتوقيت برازيليا(توقيت برازيليا الرسمي(توقيت برازي" + - "ليا الصيفي\x17توقيت بروناي\x22توقيت الرأس الأخضر/توقيت الرأس الأخضر الر" + - "سمي/توقيت الرأس الأخضر الصيفي\x19توقيت تشامورو\x17توقيت تشاتام$توقيت تش" + - "اتام الرسمي$توقيت تشاتام الصيفي\x13توقيت شيلي توقيت شيلي الرسمي توقيت ش" + - "يلي الصيفي\x15توقيت الصين\x22توقيت الصين الرسمي\x22توقيت الصين الصيفي" + - "\x1dتوقيت شويبالسان*توقيت شويبالسان الرسمي0التوقيت الصيفي لشويبالسان$توق" + - "يت جزر الكريسماس\x1cتوقيت جزر كوكوس\x1bتوقيت كولومبيا(توقيت كولومبيا ال" + - "رسمي(توقيت كولومبيا الصيفي\x1aتوقيت جزر كووك'توقيت جزر كووك الرسمي'توقي" + - "ت جزر كووك الصيفي\x13توقيت كوبا توقيت كوبا الرسمي توقيت كوبا الصيفي\x15" + - "توقيت دافيز(توقيت دي مونت دو روفيل$توقيت تيمور الشرقية\x1eتوقيت جزيرة ا" + - "ستر+توقيت جزيرة استر الرسمي+توقيت جزيرة استر الصيفي\x1dتوقيت الإكوادور" + - "\x1eتوقيت وسط أوروبا+توقيت وسط أوروبا الرسمي+توقيت وسط أوروبا الصيفي\x1e" + - "توقيت شرق أوروبا+توقيت شرق أوروبا الرسمي+توقيت شرق أوروبا الصيفي5التوقي" + - "ت الأوروبي (أكثر شرقًا)\x1eتوقيت غرب أوروبا+توقيت غرب أوروبا الرسمي+توق" + - "يت غرب أوروبا الصيفي توقيت جزر فوكلاند-توقيت جزر فوكلاند الرسمي-توقيت ج" + - "زر فوكلاند الصيفي\x13توقيت فيجي توقيت فيجي الرسمي توقيت فيجي الصيفي(توق" + - "يت غايانا الفرنسيةZتوقيت المقاطعات الفرنسية الجنوبية والأنتارتيكية\x1bت" + - "وقيت غلاباغوس\x17توقيت جامبير\x17توقيت جورجيا$توقيت جورجيا الرسمي$توقيت" + - " جورجيا الصيفي\x1eتوقيت جزر جيلبرت\x17توقيت غرينتش\x22توقيت شرق غرينلاند" + - "/توقيت شرق غرينلاند الرسمي/توقيت شرق غرينلاند الصيفي\x22توقيت غرب غرينلا" + - "ند/توقيت غرب غرينلاند الرسمي/توقيت غرب غرينلاند الصيفي\x13توقيت غوام" + - "\x17توقيت الخليج\x15توقيت غيانا$توقيت هاواي ألوتيان1توقيت هاواي ألوتيان " + - "الرسمي1توقيت هاواي ألوتيان الصيفي\x1cتوقيت هونغ كونغ)توقيت هونغ كونغ ال" + - "رسمي)توقيت هونغ كونغ الصيفي\x13توقيت هوفد توقيت هوفد الرسمي توقيت هوفد " + - "الصيفي\x15توقيت الهند$توقيت المحيط الهندي$توقيت الهند الصينية$توقيت وسط" + - " إندونيسيا$توقيت شرق إندونيسيا$توقيت غرب إندونيسيا\x15توقيت إيران\x22توق" + - "يت إيران الرسمي\x22توقيت إيران الصيفي\x19توقيت إركوتسك&توقيت إركوتسك ال" + - "رسمي&توقيت إركوتسك الصيفي\x19توقيت إسرائيل&توقيت إسرائيل الرسمي&توقيت إ" + - "سرائيل الصيفي\x19توقيت اليابان&توقيت اليابان الرسمي&توقيت اليابان الصيف" + - "ي\x1bتوقيت كامشاتكا:توقيت بيتروبافلوفسك-كامتشاتسكيGتوقيت بيتروبافلوفسك-" + - "كامتشاتسكي الصيفي$توقيت شرق كازاخستان$توقيت غرب كازاخستان\x15توقيت كوري" + - "ا\x22توقيت كوريا الرسمي\x22توقيت كوريا الصيفي\x15توقيت كوسرا!توقيت كراس" + - "نويارسك.توقيت كراسنويارسك الرسمي4التوقيت الصيفي لكراسنويارسك\x1dتوقيت ق" + - "رغيزستان\x1aتوقيت جزر لاين\x1aتوقيت لورد هاو'توقيت لورد هاو الرسمي-التو" + - "قيت الصيفي للورد هاو\x19توقيت ماكواري\x19توقيت ماغادان&توقيت ماغادان ال" + - "رسمي&توقيت ماغادان الصيفي\x19توقيت ماليزيا\x1dتوقيت الـمالديف\x1bتوقيت " + - "ماركيساس\x1eتوقيت جزر مارشال\x1bتوقيت موريشيوس(توقيت موريشيوس الرسمي(تو" + - "قيت موريشيوس الصيفي\x17توقيت ماوسون)توقيت شمال غرب المكسيك<التوقيت الرس" + - "مي لشمال غرب المكسيك<التوقيت الصيفي لشمال غرب المكسيك3توقيت المحيط الها" + - "دي للمكسيك@توقيت المحيط الهادي الرسمي للمكسيك@توقيت المحيط الهادي الصيف" + - "ي للمكسيك توقيت أولان باتور-توقيت أولان باتور الرسمي-توقيت أولان باتور " + - "الصيفي\x15توقيت موسكو\x22توقيت موسكو الرسمي\x22توقيت موسكو الصيفي\x19تو" + - "قيت ميانمار\x15توقيت ناورو\x15توقيت نيبال,توقيت كاليدونيا الجديدة9توقيت" + - " كاليدونيا الجديدة الرسمي9توقيت كاليدونيا الجديدة الصيفي\x1dتوقيت نيوزيل" + - "ندا*توقيت نيوزيلندا الرسمي*توقيت نيوزيلندا الصيفي#توقيت نيوفاوندلاند0تو" + - "قيت نيوفاوندلاند الرسمي0توقيت نيوفاوندلاند الصيفي\x13توقيت نيوي$توقيت ج" + - "زيرة نورفولك/توقيت فيرناندو دي نورونها:توقيت فرناندو دي نورونها الرسمي:" + - "توقيت فرناندو دي نورونها الصيفي1توقيت جزر ماريانا الشمالية!توقيت نوفوسي" + - "بيرسك.توقيت نوفوسيبيرسك الرسمي.توقيت نوفوسيبيرسك الصيفي\x15توقيت أومسك" + - "\x22توقيت أومسك الرسمي\x22توقيت أومسك الصيفي\x19توقيت باكستان&توقيت باكس" + - "تان الرسمي&توقيت باكستان الصيفي\x15توقيت بالاو/توقيت بابوا غينيا الجديد" + - "ة\x1bتوقيت باراغواي(توقيت باراغواي الرسمي(توقيت باراغواي الصيفي\x13توقي" + - "ت بيرو توقيت بيرو الرسمي توقيت بيرو الصيفي\x1bتوقيت الفيلبين(توقيت الفي" + - "لبين الرسمي(توقيت الفيلبين الصيفي\x1cتوقيت جزر فينكس-توقيت سانت بيير وم" + - "يكولون:توقيت سانت بيير وميكولون الرسمي:توقيت سانت بيير وميكولون الصيفي" + - "\x19توقيت بيتكيرن\x17توقيت بونابي\x1eتوقيت بيونغ يانغ\x19توقيت ريونيون" + - "\x17توقيت روثيرا\x19توقيت ساخالين&توقيت ساخالين الرسمي&توقيت ساخالين الص" + - "يفي\x17توقيت سامارا\x15توقيت سمارا\x22توقيت سمارا الصيفي\x15توقيت ساموا" + - "\x22توقيت ساموا الرسمي\x22توقيت ساموا الصيفي\x13توقيت سيشل\x1bتوقيت سنغا" + - "فورة\x1eتوقيت جزر سليمان توقيت جنوب جورجيا\x19توقيت سورينام\x17توقيت سا" + - "يووا\x17توقيت تاهيتي\x17توقيت تايبيه$توقيت تايبيه الرسمي$توقيت تايبيه ا" + - "لصيفي\x1bتوقيت طاجكستان\x19توقيت توكيلاو\x15توقيت تونغا\x22توقيت تونغا " + - "الرسمي\x22توقيت تونغا الصيفي\x11توقيت شوك\x1fتوقيت تركمانستان,توقيت ترك" + - "مانستان الرسمي,توقيت تركمانستان الصيفي\x17توقيت توفالو\x19توقيت أورغواي" + - "&توقيت أورغواي الرسمي&توقيت أورغواي الصيفي\x1dتوقيت أوزبكستان*توقيت أوزب" + - "كستان الرسمي*توقيت أوزبكستان الصيفي\x19توقيت فانواتو&توقيت فانواتو الرس" + - "مي&توقيت فانواتو الصيفي\x19توقيت فنزويلا!توقيت فلاديفوستوك.توقيت فلاديف" + - "وستوك الرسمي.توقيت فلاديفوستوك الصيفي\x1dتوقيت فولغوغراد*توقيت فولغوغرا" + - "د الرسمي*توقيت فولغوغراد الصيفي\x17توقيت فوستوك\x1cتوقيت جزيرة ويك%توقي" + - "ت واليس و فوتونا\x19توقيت ياكوتسك&توقيت ياكوتسك الرسمي&توقيت ياكوتسك ال" + - "صيفي!توقيت يكاترينبورغ.توقيت يكاترينبورغ الرسمي.توقيت يكاترينبورغ الصيف" + - "ي" - -var bucket5 string = "" + // Size: 9504 bytes - "\x0aجانفي\x0aفيفري\x08مارس\x0aأفريل\x06ماي\x08جوان\x0cجويلية\x06أوت\x0cس" + - "بتمبر\x0cأكتوبر\x0cنوفمبر\x0cديسمبر\x0cH:mm:ss zzzz\x09H:mm:ss z\x07H:m" + - "m:ss\x04H:mm\x17كانون الثاني\x08شباط\x08آذار\x0aنيسان\x08أيار\x0cحزيران" + - "\x08تموز\x04آب\x0aأيلول\x15تشرین الأول\x17تشرين الثاني\x15كانون الأول" + - "\x15تشرين الأول\x08مارس\x06ماي\x0cأكتوبر\x0cنوفمبر\x11EEEE, d MMMM, y G" + - "\x0bd MMMM, y G\x09dd-MM-y G\x0bd-M-y GGGGG\x0cজানু\x12ফেব্ৰু\x0fমাৰ্চ" + - "\x12এপ্ৰিল\x06মে\x09জুন\x0fজুলাই\x06আগ\x0fসেপ্ট\x0fঅক্টো\x09নভে\x0cডিসে" + - "\x18জানুৱাৰী\x1eফেব্ৰুৱাৰী\x0fআগষ্ট\x1eছেপ্তেম্বৰ\x15অক্টোবৰ\x15নৱেম্বৰ" + - "\x18ডিচেম্বৰ\x09ৰবি\x09সোম\x0fমঙ্গল\x09বুধ\x18বৃহষ্পতি\x0fশুক্ৰ\x09শনি" + - "\x12দেওবাৰ\x12সোমবাৰ\x18মঙ্গলবাৰ\x12বুধবাৰ!বৃহষ্পতিবাৰ\x18শুক্ৰবাৰ\x12শন" + - "িবাৰ\x1fপ্ৰথম প্ৰহৰ(দ্বিতীয় প্ৰহৰ\x22তৃতীয় প্ৰহৰ\x22চতুৰ্থ প্ৰহৰ\x1b" + - "পূৰ্বাহ্ণ\x15অপৰাহ্ণ\x0fEEEE, d MMMM, y\x09d MMMM, y\x07dd-MM-y\x05d-M" + - "-y\x0eh.mm.ss a zzzz\x0bh.mm.ss a z\x09h.mm.ss a\x07h.mm. a\x09যুগ\x09বছ" + - "ৰ\x09মাহ\x12সপ্তাহ\x09দিন\x0cপৰহি\x0cকালি\x09আজি\x0fকাইলৈ\x12পৰহিলৈ" + - "\x0fঘণ্টা\x0fমিনিট\x15ছেকেণ্ড\x15ক্ষেত্ৰ\x22ভাৰতীয় সময়\x0cভা. স.\x10EE" + - "EE, d MMMM y G\x03Jan\x03Feb\x03Mac\x03Apr\x03Mei\x03Jun\x03Jul\x03Ago" + - "\x03Sep\x03Okt\x03Nov\x03Dec\x07Januari\x08Februari\x05Machi\x06Aprili" + - "\x04Juni\x05Julai\x06Agosti\x08Septemba\x06Oktoba\x07Novemba\x07Desemba" + - "\x03Jpi\x03Jtt\x03Jnn\x03Jtn\x03Alh\x03Ijm\x03Jmo\x08Jumapili\x08Jumatat" + - "u\x07Jumanne\x08Jumatano\x08Alhamisi\x06Ijumaa\x08Jumamosi\x02R1\x02R2" + - "\x02R3\x02R4\x06Robo 1\x06Robo 2\x06Robo 3\x06Robo 4\x09icheheavo\x08ich" + - "amthi\x11Kabla yakwe Yethu\x11Baada yakwe Yethu\x02KM\x02BM\x0eEEEE, d M" + - "MMM y\x04Edhi\x05Mwaka\x05Mweji\x06Ndisha\x05Thiku\x05Ighuo\x04Iyoo\x04Y" + - "avo\x0fThiku ya ndisha\x0eMarango athiku\x04Thaa\x06Dakika\x08Thekunde" + - "\x0cMajira Athaa\x0bera budista\x02EB\x16EEEE, dd MMMM 'de' y G\x0fd MMM" + - "M 'de' y G\x0cd/M/yy GGGGG\x11{1} 'a' 'les' {0}\x08{1}, {0}\x05mes 1\x05" + - "mes 2\x05mes 3\x05mes 4\x05mes 5\x05mes 6\x05mes 7\x05mes 8\x05mes 9\x06" + - "mes 10\x06mes 11\x06mes 12\x05Mes 1\x05Mes 2\x05Mes 3\x05Mes 4\x05Mes 5" + - "\x05Mes 6\x05Mes 7\x05Mes 8\x05Mes 9\x06Mes 10\x06Mes 11\x06Mes 12\x07{0" + - "} bis\x04ratu\x04güe\x05tigre\x06conexu\x07dragón\x07culebra\x07caballu" + - "\x05cabra\x04monu\x05gallu\x05perru\x05gochu\x13ratu de madera yang\x12g" + - "üe de madera yin\x12tigre de fueu yang\x12conexu de fueu yin\x16dragón " + - "de tierra yang\x15culebra de tierra yin\x15caballu de metal yang\x12cabr" + - "a de metal yin\x12monu d’agua yang\x12gallu d’agua yin\x14perru de mader" + - "a yang\x13gochu de madera yin\x11ratu de fueu yang\x10güe de fueu yin" + - "\x14tigre de tierra yang\x14conexu de tierra yin\x15dragón de metal yang" + - "\x14culebra de metal yin\x15caballu d’agua yang\x12cabra d’agua yin\x13m" + - "onu de madera yang\x13gallu de madera yin\x12perru de fueu yang\x11gochu" + - " de fueu yin\x13ratu de tierra yang\x12güe de tierra yin\x13tigre de met" + - "al yang\x13conexu de metal yin\x15dragón d’agua yang\x14culebra d’agua y" + - "in\x16caballu de madera yang\x13cabra de madera yin\x11monu de fueu yang" + - "\x11gallu de fueu yin\x14perru de tierra yang\x13gochu de tierra yin\x12" + - "ratu de metal yang\x11güe de metal yin\x13tigre d’agua yang\x13conexu d’" + - "agua yin\x16dragón de madera yang\x15culebra de madera yin\x14caballu de" + - " fueu yang\x11cabra de fueu yin\x13monu de tierra yang\x13gallu de tierr" + - "a yin\x13perru de metal yang\x12gochu de metal yin\x12rata d’agua yang" + - "\x11güe d’agua yin\x14tigre de madera yang\x14conexu de madera yin\x14dr" + - "agón de fueu yang\x13culebra de fueu yin\x16caballu de tierra yang\x13ca" + - "bra de tierra yin\x12monu de metal yang\x12gallu de metal yin\x13perru d" + - "’agua yang\x12gochu d’agua yin\x16principia la primavera\x0eagua de ll" + - "uvia\x18esconsoñen los inseutos\x17equinocciu de primavera\x11brillante " + - "y claro\x10lluvia del granu\x13principia’l branu\x0egranu completu\x10gr" + - "anu n’espiga\x12solsticiu braniegu\x0epequeña calor\x0agran calor\x14pri" + - "ncipia la seronda\x0ffin de la calor\x0drosada blanca\x15equinocciu sero" + - "ndiegu\x0crosada fría\x11descende’l xelu\x15principia l’iviernu\x0epeque" + - "ña ñeve\x0agran ñeve\x15solsticiu d’iviernu\x0epequeñu fríu\x0agran frí" + - "u\x03rat\x03tig\x03con\x03dra\x03cul\x03cbl\x03cbr\x03mon\x03gal\x03per" + - "\x03gch\x04Ratu\x04Güe\x05Tigre\x06Conexu\x07Dragón\x07Culebra\x07Caball" + - "u\x05Cabra\x04Monu\x05Gallu\x05Perru\x05Gochu\x03mes\x03tek\x03hed\x03ta" + - "h\x03ter\x03yek\x03meg\x03mia\x03gen\x03sen\x03ham\x03neh\x03pag\x0bde m" + - "eskerem\x09de tekemt\x09d’hedar\x09de tahsas\x06de ter\x0ade yekatit\x0a" + - "de megabit\x09de miazia\x09de genbot\x07de sene\x09d’hamle\x0ade nehasse" + - "\x0ade pagumen\x18antes de la Encarnación\x1bdespués de la Encarnación" + - "\x05a. E.\x05d. E.\x02aE\x02dE\x03xin\x03feb\x03mar\x03abr\x03may\x03xun" + - "\x03xnt\x03ago\x03set\x03och\x03pay\x03avi\x01X\x01F\x01M\x01A\x01S\x01O" + - "\x01P\x09de xineru\x0ade febreru\x08de marzu\x09d’abril\x07de mayu\x07de" + - " xunu\x09de xunetu\x0ad’agostu\x0cde setiembre\x0bd’ochobre\x0ade payare" + - "s\x0bd’avientu\x03Xin\x03Mar\x03Abr\x03May\x03Xun\x03Xnt\x03Set\x03Och" + - "\x03Pay\x03Avi\x06xineru\x07febreru\x05marzu\x05abril\x04mayu\x04xunu" + - "\x06xunetu\x06agostu\x09setiembre\x07ochobre\x07payares\x07avientu\x03do" + - "m\x03llu\x04mié\x03xue\x03vie\x04sáb\x02do\x02ll\x02ma\x02mi\x02xu\x02vi" + - "\x03sá\x07domingu\x06llunes\x06martes\x0amiércoles\x06xueves\x07vienres" + - "\x07sábadu\x021T\x022T\x023T\x024T\x0d1er trimestre\x0c2u trimestre\x0d3" + - "er trimestre\x0c4u trimestre\x01p\x0dde la mañana\x0bde la tarde\x07maña" + - "na\x05tarde\x11enantes de Cristu\x1cenantes de la dómina común\x12despué" + - "s de Cristu\x0edómina común\x04e.C.\x03EDC\x04d.C.\x02DC\x13EEEE, d MMMM" + - " 'de' y\x0dd MMMM 'de' y\x06d/M/yy\x0ade Chaitra\x0bde Vaisakha\x0bde Jy" + - "aistha\x0ad’Asadha\x0ade Sravana\x09de Bhadra\x0ad’Asvina\x0ade Kartika" + - "\x0ed’Agrahayana\x08de Pausa\x08de Magha\x0bde Phalguna\x0bde Muharram" + - "\x08de Safar\x0bde Rabiʻ I\x0cde Rabiʻ II\x0bde Jumada I\x0cde Jumada II" + - "\x08de Rajab\x0bde Shaʻban\x0ade Ramadan\x0ade Shawwal\x11de Dhuʻl-Qiʻda" + - "h\x10de Dhuʻl-Hijjah\x05Taika\x07Hakuchi\x07Hakuhō\x07Shuchō\x06Taihō" + - "\x05Keiun\x05Wadō\x05Reiki\x06Yōrō\x05Jinki\x07Tenpyō\x09T.-kampō\x0aT.-" + - "shōhō\x08T.-hōji\x08T.-jingo\x08J.-keiun\x05Hōki\x06Ten-ō\x07Enryaku\x06" + - "Daidō\x06Kōnin\x07Tenchō\x05Jōwa\x05Kajō\x05Ninju\x06Saikō\x06Ten-an\x06" + - "Jōgan\x07Gangyō\x05Ninna\x07Kanpyō\x07Shōtai\x04Engi\x06Enchō\x06Jōhei" + - "\x07Tengyō\x08Tenryaku\x07Tentoku\x04Ōwa\x06Kōhō\x04Anna\x07Tenroku\x08T" + - "en’en\x06Jōgen\x06Tengen\x05Eikan\x05Kanna\x04Eien\x04Eiso\x09Shōryaku" + - "\x08Chōtoku\x07Chōhō\x06Kankō\x06Chōwa\x06Kannin\x04Jian\x05Manju\x07Chō" + - "gen\x09Chōryaku\x08Chōkyū\x07Kantoku\x06Eishō\x05Tengi\x06Kōhei\x07Jirya" + - "ku\x06Enkyū\x06Shōho\x0cShōryaku II\x05Eihō\x06Ōtoku\x05Kanji\x05Kahō" + - "\x06Eichō\x07Jōtoku\x05Kōwa\x06Chōji\x06Kashō\x06Tennin\x06Ten-ei\x06Eik" + - "yū\x08Gen’ei\x05Hōan\x05Tenji\x05Daiji\x07Tenshō\x08Chōshō\x05Hōen\x04Ei" + - "ji\x05Kōji\x09Ten’yō\x06Kyūan\x06Ninpei\x06Kyūju\x06Hōgen\x05Heiji\x07Ei" + - "ryaku\x04Ōho\x07Chōkan\x05Eiman\x08Nin’an\x04Kaō\x06Shōan\x05Angen\x06Ji" + - "shō\x05Yōwa\x04Juei\x08Genryaku\x05Bunji\x07Kenkyū\x06Shōji\x06Kennin" + - "\x07Genkyū\x08Ken’ei\x09Jōgen II\x08Kenryaku\x06Kenpō\x07Jōkyū\x05Jōō" + - "\x06Gennin\x06Karoku\x05Antei\x05Kanki\x05Jōei\x07Tenpuku\x08Bunryaku" + - "\x05Katei\x08Ryakunin\x07En’ō\x05Ninji\x06Kangen\x05Hōji\x07Kenchō\x06Kō" + - "gen\x06Shōka\x07Shōgen\x08Bun’ō\x07Kōchō\x08Bun’ei\x05Kenji\x05Kōan\x06S" + - "hōō\x05Einin\x09Shōan II\x06Kengen\x05Kagen\x06Tokuji\x06Enkyō\x06Ōchō" + - "\x06Shōwa\x06Bunpō\x05Genō\x06Genkō\x08Shōchū\x07Karyaku\x07Gentoku\x09G" + - "enkō II\x05Kenmu\x05Engen\x07Kōkoku\x07Shōhei\x07Kentoku\x07Bunchū\x05Te" + - "nju\x08Kōryaku\x08Kōwa II\x07Genchū\x07Meitoku\x05Kakei\x05Kōō\x0aMeitok" + - "u II\x04Ōei\x08Shōchō\x06Eikyō\x07Kakitsu\x08Bun’an\x07Hōtoku\x08Kyōtoku" + - "\x07Kōshō\x08Chōroku\x07Kanshō\x07Bunshō\x05Ōnin\x06Bunmei\x08Chōkyō\x06" + - "Entoku\x05Meiō\x05Bunki\x09Eishō II\x05Taiei\x08Kyōroku\x06Tenbun\x08Kōj" + - "i II\x06Eiroku\x05Genki\x0aTenshō II\x07Bunroku\x07Keichō\x05Genna\x08Ka" + - "n’ei\x09Shōho II\x05Keian\x08Jōō II\x07Meireki\x05Manji\x06Kanbun\x05Enp" + - "ō\x05Tenna\x07Jōkyō\x07Genroku\x05Hōei\x08Shōtoku\x07Kyōhō\x06Genbun" + - "\x06Kanpō\x09Enkyō II\x08Kan’en\x07Hōreki\x05Meiwa\x07An’ei\x06Tenmei" + - "\x06Kansei\x06Kyōwa\x05Bunka\x06Bunsei\x06Tenpō\x05Kōka\x04Kaei\x05Ansei" + - "\x08Man’en\x07Bunkyū\x05Genji\x05Keiō\x05Meiji\x07Taishō\x09e. Shōwa\x06" + - "Heisei\x09T. kampō\x0aT. shōhō\x08T. hōji\x08T. jingo\x12antes de la R.D" + - ".C.\x06Minguo\x08A.R.D.C.\x04añu\x0fl’añu pasáu\x09esti añu\x11l’añu vin" + - "iente\x0ben {0} añu\x0cen {0} años\x0chai {0} añu\x0dhai {0} años\x0dl’a" + - "ñu pas.\x0dl’añu vin.\x09añu pas.\x09añu vin.\x09en {0} a.\x0ahai {0} a" + - ".\x09trimestre\x12trimestre anterior\x0eesti trimestre\x12trimestre vini" + - "ente\x10en {0} trimestre\x11en {0} trimestres\x11hai {0} trimestre\x12ha" + - "i {0} trimestres\x04tri.\x0atrim. ant.\x0aesti trim.\x0atrim. vin.\x0cen" + - " {0} trim.\x0dhai {0} trim.\x0aen {0} tr.\x0bhai {0} tr.\x0del mes pasáu" + - "\x08esti mes\x0fel mes viniente\x0aen {0} mes\x0cen {0} meses\x0bhai {0}" + - " mes\x0dhai {0} meses\x08mes pas.\x08mes vin.\x09en {0} m.\x0ahai {0} m." + - "\x07selmana\x11la selmana pasada\x0cesta selmana\x13la selmana viniente" + - "\x0een {0} selmana\x0fen {0} selmanes\x0fhai {0} selmana\x10hai {0} selm" + - "anes\x12la selmana del {0}\x04sel.\x0cselm. pasada\x0aesta selm.\x0eselm" + - ". viniente\x0cen {0} selm.\x0dhai {0} selm.\x0aselm. pas.\x0aselm. vin." + - "\x0aen {0} se.\x0bhai {0} se.\x04día\x08antayeri\x05ayeri\x05güei\x0dpas" + - "ao mañana\x0ben {0} día\x0cen {0} díes\x0chai {0} día\x0dhai {0} díes" + - "\x06antay.\x05mañ.\x08p. mañ.\x09en {0} d.\x0ahai {0} d.\x12día de la se" + - "lmana\x11el domingu pasáu\x0cesti domingu\x13el domingu viniente\x16dien" + - "tro de {0} domingu\x17dientro de {0} domingos\x0fhai {0} domingu\x10hai " + - "{0} domingos\x0bdom. pasáu\x09esti dom.\x0ddom. viniente\x03Epr\x03Oga" + - "\x03Dis\x05Epreo\x06Ogasti\x07Disemba\x09ফেব\x0fমার্চ\x12এপ্রিল\x0fআগস্ট" + - "\x1eসেপ্টেম্বর\x15অক্টোবর\x15নভেম্বর\x18ডিসেম্বর\x04Mär\x03Mai\x03Aug" + - "\x03Dez\x03Ati\x03Ata\x03Ala\x03Alm\x03Alz\x03Asi\x03Feb\x03Mar\x03Apr" + - "\x03May\x03Jun\x03Jul\x03Aug\x03Sep\x03Oct\x03Nov\x02lu\x02ma\x02ju\x0be" + - "n {0} trim\x0cen {0} días\x02sa\x0d2do trimestre\x0d4to trimestre\x0c2e " + - "trimestre\x0c3e trimestre\x0c4e trimestre\x0f2ème trimestre\x0f3ème trim" + - "estre\x0f4ème trimestre\x03lun\x03mar\x03mie\x03joi\x03vin\x03sab\x03Mrt" + - "\x03Mai\x03Okt\x03Nov\x03Des\x0ben {0} mes.\x0chai {0} mes.\x0dhai {0} d" + - "ías\x04Mär\x03Dez\x03Fab\x03Mar\x03Afi\x03May\x03Yun\x03Yul\x03Agu\x03S" + - "at\x03Okt\x03Nuw\x03Dis\x03Feb\x03Apr\x03Mei\x03Jun\x03Agt\x03Sep\x05Mar" + - "et\x05April\x04Juni\x04Juli\x07Agustus\x09September\x07Oktober\x08Novemb" + - "er\x08Desember\x03feb\x03apr\x03mag\x03giu\x03lug\x03ago\x03ott\x03nov" + - "\x03dic\x03mer\x03gio\x03ven\x03Feb\x03Mac\x03Jul\x03Ago\x03Sep\x03Nov" + - "\x05Machi\x07Aprilyi\x05Junyi\x06Julyai\x06Agusti\x08Septemba\x06Oktoba" + - "\x07Novemba\x03Alh\x03Iju\x03Abr\x03Mai\x03Set\x03Otu\x03Nuv\x03Diz\x03A" + - "la\x03Alj\x03Ass\x03Okt\x03Jmn\x04Fäb\x04Mäz\x03Ouj\x04Säp\x04Mäe\x03Mee" + - "\x03Mar\x03Apu\x03Maa\x03Juu\x03Seb\x03Oki\x03Mei\x05Machi\x04Juni\x05Ju" + - "lai\x06Agosti\x08Septemba\x06Oktoba\x07Novemba\x07Desemba\x03Alh\x03Mey" + - "\x03Jon\x03Jol\x03Aog\x03Mey\x03Ogo\x03Dis\x04Ogos\x09September\x07Oktob" + - "er\x08November\x08Disember\x03Fra\x03Mej\x04Ġun\x03Lul\x03Aww\x03Ott\x04" + - "Diċ\x03May\x03seg\x03ter\x03qua\x03qui\x03sex\x05Machi\x08Septemba\x07No" + - "vemba\x03Jtt\x03Jnn\x03Jtn\x03Alh\x03Iju\x03Jmo\x03Fev\x03Mar\x03Mai\x03" + - "Shk\x03Mar\x03Pri\x03Maj\x03Qer\x03Kor\x03Gsh\x03Sht\x03Tet\x04Nën\x03Dh" + - "j\x03Okt\x04Juni\x08Jumatatu\x07Jumanne\x08Jumatano\x08Alhamisi\x06Ijuma" + - "a\x08Jumamosi\x02TS\x03Apr\x03Sep\x03Okt\x03Jtt\x03Jnn\x03Jtn\x03Alh\x03" + - "Iju\x03Jmo\x03Mar\x03Mas\x03Eph\x03Mey\x03Aga" - -var bucket6 string = "" + // Size: 10223 bytes - "\x09dom. pas.\x09esti dom.\x09dom. vin.\x10el llunes pasáu\x0besti llune" + - "s\x12el llunes viniente\x15dientro de {0} llunes\x0ehai {0} llunes\x0cll" + - "un. pasáu\x0aesti llun.\x0ellun. viniente\x09llu. pas.\x09esti llu.\x09l" + - "lu. vin.\x10el martes pasáu\x0besti martes\x12el martes viniente\x15dien" + - "tro de {0} martes\x0ehai {0} martes\x0bmar. pasáu\x09esti mar.\x0dmar. v" + - "iniente\x09mar. pas.\x09mar. vin.\x14el miércoles pasáu\x0festi miércole" + - "s\x16el miércoles viniente\x19dientro de {0} miércoles\x12hai {0} miérco" + - "les\x0cmié. pasáu\x0aesti mié.\x0emié. viniente\x0amié. pas.\x0amié. vin" + - ".\x10el xueves pasáu\x0besti xueves\x12el xueves viniente\x15dientro de " + - "{0} xueves\x0ehai {0} xueves\x0bxue. pasáu\x09esti xue.\x0dxue. viniente" + - "\x09xue. pas.\x09xue. vin.\x11el vienres pasáu\x0cesti vienres\x13el vie" + - "nres viniente\x16dientro de {0} vienres\x0fhai {0} vienres\x0bvie. pasáu" + - "\x09esti vie.\x0dvie. viniente\x09vie. pas.\x09vie. vin.\x11el sábadu pa" + - "sáu\x0cesti sábadu\x13el sábadu viniente\x16dientro de {0} sábadu\x17die" + - "ntro de {0} sábados\x0fhai {0} sábadu\x10hai {0} sábados\x0csáb. pasáu" + - "\x0aesti sáb.\x0esáb. viniente\x0asáb. pas.\x0asáb. vin.\x10periodu del " + - "día\x04hora\x09esta hora\x0ben {0} hora\x0cen {0} hores\x0chai {0} hora" + - "\x0dhai {0} hores\x02h.\x09en {0} h.\x0ahai {0} h.\x07esta h.\x06minutu" + - "\x0besti minutu\x0den {0} minutu\x0een {0} minutos\x0ehai {0} minutu\x0f" + - "hai {0} minutos\x09esti min.\x0ben {0} min.\x0chai {0} min.\x07segundu" + - "\x05agora\x0een {0} segundu\x0fen {0} segundos\x0fhai {0} segundu\x10hai" + - " {0} segundos\x0ben {0} seg.\x0chai {0} seg.\x09en {0} s.\x0ahai {0} s." + - "\x0eestaya horaria\x0bHora de {0}\x14Hora braniega de {0}\x15Hora estánd" + - "ar de {0}\x18Hora braniega británica\x18Hora estándar irlandesa\x03HST" + - "\x03HDT\x0dhora d’Acre\x17hora estándar d’Acre\x16hora braniega d’Acre" + - "\x14Hora d’Afganistán\x18Hora d’África central\x19Hora d’África del este" + - "\x12Hora de Sudáfrica\x1aHora d’África del oeste$Hora estándar d’África " + - "del oeste#Hora braniega d’África del oeste\x0fHora d’Alaska\x19Hora está" + - "ndar d’Alaska\x18Hora braniega d’Alaska\x03AKT\x04AKST\x04AKDT\x0fHora d" + - "’Almaty\x19hora estándar d’Almaty\x18hora braniega d’Almaty\x11Hora de" + - "l Amazonas\x1bHora estándar del Amazonas\x1aHora braniega del Amazonas" + - "\x1bHora central norteamericana%Hora estándar central norteamericana$Hor" + - "a braniega central norteamericana\x02CT\x03CST\x03CDT\x1cHora del este n" + - "orteamericanu&Hora estándar del este norteamericanu%Hora braniega del es" + - "te norteamericanu\x02ET\x03EST\x03EDT%Hora de les montañes norteamerican" + - "es/Hora estándar de les montañes norteamericanes.Hora braniega de les mo" + - "ntañes norteamericanes\x02MT\x03MST\x03MDT!Hora del Pacíficu norteameric" + - "anu+Hora estándar del Pacíficu norteamericanu*Hora braniega del Pacíficu" + - " norteamericanu\x02PT\x03PST\x03PDT\x0fhora d’Anadyr\x19hora estándar d’" + - "Anadyr\x18hora braniega d’Anadyr\x0dHora d’Apia\x17Hora estándar d’Apia" + - "\x16Hora braniega d’Apia\x0eHora d’Aqtau\x18Hora estándar d’Aqtau\x17Hor" + - "a braniega d’Aqtau\x0fHora d’Aqtobe\x19Hora estándar d’Aqtobe\x18Hora br" + - "aniega d’Aqtobe\x0fHora d’Arabia\x19Hora estándar d’Arabia\x18Hora brani" + - "ega d’Arabia\x12Hora d’Arxentina\x1cHora estándar d’Arxentina\x1bHora br" + - "aniega d’Arxentina\x1dHora occidental d’Arxentina'Hora estándar occident" + - "al d’Arxentina&Hora braniega occidental d’Arxentina\x10Hora d’Armenia" + - "\x1aHora estándar d’Armenia\x19Hora braniega d’Armenia\x13Hora del Atlán" + - "ticu\x1dHora estándar del Atlánticu\x1cHora braniega del Atlánticu\x02AT" + - "\x03AST\x03ADT\x1aHora d’Australia central$Hora estándar d’Australia cen" + - "tral#Hora braniega d’Australia central$Hora d’Australia central del oest" + - "e.Hora estándar d’Australia central del oeste-Hora braniega d’Australia " + - "central del oeste\x1bHora d’Australia del este%Hora estándar d’Australia" + - " del este$Hora braniega d’Australia del este\x1cHora d’Australia del oes" + - "te&Hora estándar d’Australia del oeste%Hora braniega d’Australia del oes" + - "te\x14Hora d’Azerbaixán\x1eHora estándar d’Azerbaixán\x1dHora braniega d" + - "’Azerbaixán\x12Hora de les Azores\x1cHora estándar de les Azores\x1bHo" + - "ra braniega de Les Azores\x11Hora de Bangladex\x1bHora estándar de Bangl" + - "adex\x1aHora braniega de Bangladex\x0eHora de Bután\x0fHora de Bolivia" + - "\x10Hora de Brasilia\x1aHora estándar de Brasilia\x19Hora braniega de Br" + - "asilia\x1aHora de Brunéi Darussalam\x12Hora de Cabu Verde\x1cHora estánd" + - "ar de Cabu Verde\x1bHora braniega de Cabu Verde\x0dHora de Casey\x1aHora" + - " estándar de Chamorro\x0fHora de Chatham\x19Hora estándar de Chatham\x18" + - "Hora braniega de Chatham\x0dHora de Chile\x17Hora estándar de Chile\x16H" + - "ora braniega de Chile\x0dHora de China\x17Hora estándar de China\x16Hora" + - " braniega de China\x12Hora de Choibalsan\x1cHora estándar de Choibalsan" + - "\x1bHora braniega de Choibalsan$Hora estándar de la Islla Christmas\x18H" + - "ora de les Islles Cocos\x10Hora de Colombia\x1aHora estándar de Colombia" + - "\x19Hora braniega de Colombia\x17Hora de les Islles Cook!Hora estándar d" + - "e les Islles Cook&Hora media braniega de les Islles Cook\x0cHora de Cuba" + - "\x16Hora estándar de Cuba\x15Hora braniega de Cuba\x0dHora de Davis\x1aH" + - "ora de Dumont-d’Urville\x16Hora de Timor Oriental\x1aHora de la Islla de" + - " Pascua$Hora estándar de la Islla de Pascua#Hora braniega de la Islla de" + - " Pascua\x10Hora d’Ecuador\x17Hora d’Europa Central!Hora estándar d’Europ" + - "a Central Hora braniega d’Europa Central\x03CET\x04CEST\x18Hora d’Europa" + - " del Este\x22Hora estándar d’Europa del Este!Hora braniega d’Europa del " + - "Este\x03EET\x04EEST Hora d’Europa del estremu este\x1aHora d’Europa Occi" + - "dental$Hora estándar d’Europa Occidental#Hora braniega d’Europa Occident" + - "al\x03WET\x04WEST\x1bHora de les Islles Falkland%Hora estándar de les Is" + - "lles Falkland$Hora braniega de les Islles Falkland\x0cHora de Fixi\x16Ho" + - "ra estándar de Fixi\x15Hora braniega de Fixi\x1aHora de La Guyana France" + - "sa&Hora del sur y l’antárticu francés\x12Hora de Galápagos\x0fHora de Ga" + - "mbier\x0eHora de Xeorxa\x18Hora estándar de Xeorxa\x17Hora braniega de X" + - "eorxa\x1aHora de les Islles Gilbert\x17Hora media de Greenwich\x03GMT" + - "\x1cHora de Groenlandia oriental&Hora estándar de Groenlandia oriental%H" + - "ora braniega de Groenlandia oriental\x1eHora de Groenlandia occidental(H" + - "ora estándar de Groenlandia occidental'Hora braniega de Groenlandia occi" + - "dental\x16Hora estándar de Guam\x18Hora estándar del Golfu\x11Hora de La" + - " Guyana\x19Hora de Hawaii-Aleutianes#Hora estándar de Hawaii-Aleutianes" + - "\x22Hora braniega de Hawaii-Aleutianes\x03HAT\x04HAST\x04HADT\x13Hora de" + - " Ḥong Kong\x1dHora estándar de Ḥong Kong\x1cHora braniega de Ḥong Kong" + - "\x0cHora de Hovd\x16Hora estándar de Hovd\x15Hora braniega de Hovd\x1aHo" + - "ra estándar de la India\x18Hora del Océanu Índicu\x12Hora d’Indochina" + - "\x1aHora d’Indonesia central\x1bHora d’Indonesia del este\x1cHora d’Indo" + - "nesia del oeste\x0eHora d’Irán\x18Hora estándar d’Irán\x17Hora braniega " + - "d’Irán\x10Hora d’Irkutsk\x1aHora estándar d’Irkutsk\x19Hora braniega d’I" + - "rkutsk\x0fHora d’Israel\x19Hora estándar d’Israel\x18Hora braniega d’Isr" + - "ael\x0eHora de Xapón\x18Hora estándar de Xapón\x17Hora braniega de Xapón" + - " hora de Petropavlovsk-Kamchatski)hora estandar de Petropavlovsk-Kamchat" + - "ski)hora braniega de Petropavlovsk-Kamchatski\x1cHora del Kazakstán orie" + - "ntal\x1eHora del Kazakstán occidental\x0dHora de Corea\x17Hora estándar " + - "de Corea\x16Hora braniega de Corea\x0eHora de Kosrae\x13Hora de Krasnoya" + - "rsk\x1dHora estándar de Krasnoyarsk\x1cHora braniega de Krasnoyarsk\x14H" + - "ora del Kirguistán\x0dHora de Lanka\x17Hora de les Islles Line\x11Hora d" + - "e Lord Howe\x1bHora estándar de Lord Howe\x1aHora braniega de Lord Howe" + - "\x0eHora de Macáu\x18Hora estándar de Macáu\x17Hora braniega de Macáu" + - "\x1aHora de la Islla Macquarie\x10Hora de Magadán\x1aHora estándar de Ma" + - "gadán\x19Hora braniega de Magadán\x0fHora de Malasia\x14Hora de Les Mald" + - "ives\x15Hora de les Marqueses\x1bHora de les Islles Marshall\x10Hora de " + - "Mauriciu\x1aHora estándar de Mauriciu\x19Hora braniega de Mauriciu\x0eHo" + - "ra de Mawson\x1cHora del noroeste de Méxicu&Hora estándar del noroeste d" + - "e Méxicu%Hora braniega del noroeste de Méxicu\x1dHora del Pacíficu de Mé" + - "xicu'Hora estándar del Pacíficu de Méxicu&Hora braniega del Pacíficu de " + - "Méxicu\x15Hora d’Ulán Bátor\x1fHora estándar d’Ulán Bátor\x1eHora branie" + - "ga d’Ulán Bátor\x0eHora de Moscú\x18Hora estándar de Moscú\x17Hora brani" + - "ega de Moscú\x0fHora de Myanmar\x0dHora de Nauru\x0eHora del Nepal\x17Ho" + - "ra de Nueva Caledonia!Hora estándar de Nueva Caledonia Hora braniega de " + - "Nueva Caledonia\x15Hora de Nueva Zelanda\x1fHora estándar de Nueva Zelan" + - "da\x1eHora braniega de Nueva Zelanda\x14Hora de Newfoundland\x1eHora est" + - "ándar de Newfoundland\x1dHora braniega de Newfoundland\x0cHora de Niue" + - "\x18Hora de la Islla Norfolk\x1bHora de Fernando de Noronha%Hora estánda" + - "r de Fernando de Noronha$Hora braniega de Fernando de Noronha%Hora de le" + - "s Islles Marianes del Norte\x13Hora de Novosibirsk\x1dHora estándar de N" + - "ovosibirsk\x1cHora braniega de Novosibirsk\x0dHora d’Omsk\x17Hora estánd" + - "ar d’Omsk\x16Hora braniega d’Omsk\x13Hora del Paquistán\x1dHora estándar" + - " del Paquistán\x1cHora braniega del Paquistán\x0dHora de Palau\x1bHora d" + - "e Papúa Nueva Guinea\x12Hora del Paraguái\x1cHora estándar del Paraguái" + - "\x1bHora braniega del Paraguái\x0eHora del Perú\x18Hora estándar del Per" + - "ú\x17Hora braniega del Perú\x11Hora de Filipines\x1bHora estándar de Fi" + - "lipines\x1aHora de branu de Filipines\x1aHora de les Islles Phoenix\x1fH" + - "ora de Saint Pierre y Miquelon)Hora estándar de Saint Pierre y Miquelon(" + - "Hora braniega de Saint Pierre y Miquelon\x10Hora de Pitcairn\x0eHora de " + - "Ponape\x11hora de Pyongyang\x11Hora de Qyzylorda\x1bHora estándar de Qyz" + - "ylorda\x1aHora braniega de Qyzylorda\x10Hora de Reunión\x0fHora de Rothe" + - "ra\x10Hora de Saxalín\x1aHora estándar de Saxalín\x19Hora braniega de Sa" + - "xalín\x0eHora de Samara\x18Hora estándar de Samara\x17Hora braniega de S" + - "amara\x0dHora de Samoa\x17Hora estándar de Samoa\x16Hora braniega de Sam" + - "oa\x14Hora de Les Seixeles\x1aHora estándar de Singapur\x1bHora de les I" + - "slles Salomón\x16Hora de Xeorxa del Sur\x10Hora del Surinam\x0dHora de S" + - "yowa\x0eHora de Tahiti\x0fHora de Taipéi\x19Hora estándar de Taipéi\x18H" + - "ora braniega de Taipéi\x15Hora del Taxiquistán\x0fHora de Tokelau\x0dHor" + - "a de Tonga\x17Hora estándar de Tonga\x16Hora braniega de Tonga\x0dHora d" + - "e Chuuk\x16Hora del Turkmenistán Hora estándar del Turkmenistán\x1fHora " + - "braniega del Turkmenistán\x0eHora de Tuvalu\x11Hora del Uruguái\x1bHora " + - "estándar del Uruguái\x1aHora braniega del Uruguái\x15Hora del Uzbequistá" + - "n\x1fHora estándar del Uzbequistán\x1eHora braniega del Uzbequistán\x0fH" + - "ora de Vanuatu\x19Hora estándar de Vanuatu\x18Hora braniega de Vanuatu" + - "\x11Hora de Venezuela\x13Hora de Vladivostok\x1dHora estándar de Vladivo" + - "stok\x1cHora braniega de Vladivostok\x12Hora de Volgográu\x1cHora estánd" + - "ar de Volgográu\x1bHora braniega de Volgográu\x0eHora de Vostok\x15Hora " + - "de la Islla Wake\x17Hora de Wallis y Futuna\x0fHora de Yakutsk\x19Hora e" + - "stándar de Yakutsk\x18Hora braniega de Yakutsk\x16Hora de Yekaterimburgu" + - " Hora estándar de Yekaterimburgu\x1fHora braniega de Yekaterimburgu\x03G" + - "MT\x03GMT\x03GMT\x03GMT\x02NT\x03NST\x03NDT\x03GMT\x03MST\x03MDT\x03GMT" + - "\x03GMT\x03MAG\x03GMT\x03HAT\x0cen {0} horas\x0dhai {0} horas\x03GMT\x03" + - "GMT\x03GMT\x03GMT\x03GMT\x03WET\x03GMT\x03GMT\x03GMT\x13Hora padrão de {" + - "0}" - -var bucket7 string = "" + // Size: 9301 bytes - "\x10G d MMMM y, EEEE\x0bG d MMMM, y\x09G d MMM y\x0dGGGGG dd.MM.y\x03yan" + - "\x03fev\x03mar\x03apr\x03may\x03iyn\x03iyl\x03avq\x03sen\x03okt\x03noy" + - "\x03dek\x06yanvar\x06fevral\x04mart\x05aprel\x04iyun\x04iyul\x06avqust" + - "\x08sentyabr\x07oktyabr\x06noyabr\x06dekabr\x06Yanvar\x06Fevral\x04Mart" + - "\x05Aprel\x03May\x05İyun\x05İyul\x06Avqust\x08Sentyabr\x07Oktyabr\x06Noy" + - "abr\x06Dekabr\x02B.\x04B.E.\x05Ç.A.\x03Ç.\x04C.A.\x02C.\x03Ş.\x05bazar" + - "\x0dbazar ertəsi\x16çərşənbə axşamı\x0dçərşənbə\x0fcümə axşamı\x06cümə" + - "\x08şənbə\x081-ci kv.\x082-ci kv.\x093-cü kv.\x094-cü kv.\x0c1-ci kvarta" + - "l\x0c2-ci kvartal\x0d3-cü kvartal\x0d4-cü kvartal\x0agecəyarı\x08günorta" + - "\x05sübh\x07səhər\x08gündüz\x0caxşamüstü\x06axşam\x05gecə\x12eramızdan ə" + - "vvəl\x14bizim eradan əvvəl\x08yeni era\x09bizim era\x05e.ə.\x07b.e.ə." + - "\x04y.e.\x04b.e.\x0ed MMMM y, EEEE\x08dd.MM.yy\x03İl\x0akeçən il\x05bu i" + - "l\x0agələn il\x10{0} il ərzində\x0d{0} il öncə\x02il\x04Rüb\x0ckeçən rüb" + - "\x07bu rüb\x0cgələn rüb\x12{0} rüb ərzində\x0f{0} rüb öncə\x04rüb\x02Ay" + - "\x0akeçən ay\x05bu ay\x0agələn ay\x10{0} ay ərzində\x0d{0} ay öncə\x02ay" + - "\x07Həftə\x0fkeçən həftə\x0abu həftə\x0fgələn həftə\x15{0} həftə ərzində" + - "\x12{0} həftə öncə\x0d{0} həftəsi\x07həftə\x04Gün\x07dünən\x07bu gün\x05" + - "sabah\x12{0} gün ərzində\x0f{0} gün öncə\x11Həftənin Günü\x0dkeçən bazar" + - "\x08bu bazar\x0dgələn bazar\x13{0} bazar ərzində\x10{0} bazar öncə\x15ke" + - "çən bazar ertəsi\x10bu bazar ertəsi\x15gələn bazar ertəsi\x1b{0} bazar " + - "ertəsi ərzində\x1b{0} bazar ertəsi əzrində\x18{0} bazar ertəsi öncə\x0ak" + - "eçən BE\x05bu BE\x0agələn BE\x1ekeçən çərşənbə axşamı\x19bu çərşənbə axş" + - "amı\x1egələn çərşənbə axşamı${0} çərşənbə axşamı ərzində!{0} çərşənbə ax" + - "şamı öncə\x0ckeçən ÇƏ\x07bu ÇƏ\x0cgələn ÇƏ\x15keçən çərşənbə\x10bu çərş" + - "ənbə\x15gələn çərşənbə\x1b{0} çərşənbə ərzində\x18{0} çərşənbə öncə\x0a" + - "keçən Ç\x05bu Ç\x0agələn Ç\x17keçən cümə axşamı\x12bu cümə axşamı\x17gəl" + - "ən cümə axşamı\x1d{0} cümə axşamı ərzində\x1a{0} cümə axşamı öncə\x0ake" + - "çən CA\x05bu CA\x0agələn CA\x0ekeçən cümə\x09bu cümə\x0egələn cümə\x14{" + - "0} cümə ərzində\x11{0} cümə öncə\x09keçən C\x04bu C\x09gələn C\x10keçən " + - "şənbə\x0bbu şənbə\x10gələn şənbə\x16{0} şənbə ərzində\x13{0} şənbə öncə" + - "\x0akeçən Ş\x05bu Ş\x0agələn Ş\x05AM/PM\x04Saat\x07bu saat\x12{0} saat ə" + - "rzində\x0f{0} saat öncə\x04saat\x08Dəqiqə\x0bbu dəqiqə\x16{0} dəqiqə ərz" + - "ində\x13{0} dəqiqə öncə\x05dəq.\x07Saniyə\x04indi\x15{0} saniyə ərzində" + - "\x12{0} saniyə öncə\x04san.\x0fSaat Qurşağı\x0a{0} Vaxtı\x0e{0} Yay Vaxt" + - "ı\x13{0} Standart Vaxtı(Koordinasiya edilmiş ümumdünya vaxtı\x14Britani" + - "ya Yay Vaxtı\x15İrlandiya Yay Vaxtı\x13Əfqanıstan Vaxtı\x17Mərkəzi Afrik" + - "a Vaxtı\x15Şərqi Afrika Vaxtı\x15Cənubi Afrika Vaxtı\x14Qərbi Afrika Vax" + - "tı\x1dQərbi Afrika Standart Vaxtı\x18Qərbi Afrika Yay Vaxtı\x0eAlyaska V" + - "axtı\x17Alyaska Standart Vaxtı\x12Alyaska Yay Vaxtı\x0dAmazon Vaxtı\x16A" + - "mazon Standart Vaxtı\x11Amazon Yay Vaxtı Şimali Mərkəzi Amerika Vaxtı)Şi" + - "mali Mərkəzi Amerika Standart Vaxtı$Şimali Mərkəzi Amerika Yay Vaxtı\x1e" + - "Şimali Şərqi Amerika Vaxtı'Şimali Şərqi Amerika Standart Vaxtı\x22Şimal" + - "i Şərqi Amerika Yay Vaxtı\x1fŞimali Dağlıq Amerika Vaxtı(Şimali Dağlıq A" + - "merika Standart Vaxtı#Şimali Dağlıq Amerika Yay Vaxtı\x22Şimali Amerika " + - "Sakit Okean Vaxtı+Şimali Amerika Sakit Okean Standart Vaxtı&Şimali Ameri" + - "ka Sakit Okean Yay Vaxtı\x0bApia Vaxtı\x14Apia Standart Vaxtı\x0fApia Ya" + - "y Vaxtı\x12Ərəbistan Vaxtı\x1bƏrəbistan Standart Vaxtı\x16Ərəbistan Yay " + - "Vaxtı\x10Argentina Vaxtı\x19Argentina Standart Vaxtı\x14Argentina Yay Va" + - "xtı\x17Qərbi Argentina Vaxtı Qərbi Argentina Standart Vaxtı\x1bQərbi Arg" + - "entina Yay Vaxtı\x12Ermənistan Vaxtı\x1bErmənistan Standart Vaxtı\x16Erm" + - "ənistan Yay Vaxtı\x0dAtlantik Vaxt\x16Atlantik Standart Vaxt\x13Atlanti" + - "k Yay Vaxtı\x1bMərkəzi Avstraliya Vaxtı$Mərkəzi Avstraliya Standart Vaxt" + - "ı\x1fMərkəzi Avstraliya Yay Vaxtı\x22Mərkəzi Qərbi Avstraliya Vaxtı+Mər" + - "kəzi Qərbi Avstraliya Standart Vaxtı&Mərkəzi Qərbi Avstraliya Yay Vaxtı" + - "\x19Şərqi Avstraliya Vaxtı\x22Şərqi Avstraliya Standart Vaxtı\x1dŞərqi A" + - "vstraliya Yay Vaxtı\x18Qərbi Avstraliya Vaxtı!Qərbi Avstraliya Standart " + - "Vaxtı\x1cQərbi Avstraliya Yay Vaxtı\x12Azərbaycan Vaxtı\x1bAzərbaycan St" + - "andart Vaxtı\x16Azərbaycan Yay Vaxtı\x0bAzor Vaxtı\x14Azor Standart Vaxt" + - "ı\x0fAzor Yay Vaxtı\x11Banqladeş Vaxtı\x1aBanqladeş Standart Vaxtı\x15B" + - "anqladeş Yay Vaxtı\x0cButan Vaxtı\x0fBoliviya Vaxtı\x10Braziliya Vaxtı" + - "\x19Braziliya Standart Vaxtı\x14Braziliya Yay Vaxtı\x18Brunei Darussalam" + - " vaxtı\x11Kape Verde Vaxtı\x1aKape Verde Standart Vaxtı\x15Kape Verde Ya" + - "y Vaxtı\x0fÇamorro Vaxtı\x0eÇatham Vaxtı\x17Çatham Standart Vaxtı\x12Çat" + - "ham Yay Vaxtı\x0cÇili Vaxtı\x15Çili Standart Vaxtı\x10Çili Yay Vaxtı\x0b" + - "Çin Vaxtı\x14Çin Standart Vaxtı\x0fÇin Yay Vaxtı\x11Çoybalsan Vaxtı\x1a" + - "Çoybalsan Standart Vaxtı\x15Çoybalsan Yay Vaxtı\x13Milad Adası Vaxtı" + - "\x15Kokos Adaları Vaxtı\x10Kolumbiya Vaxtı\x19Kolumbiya Standart Vaxtı" + - "\x14Kolumbiya Yay Vaxtı\x13Kuk Adaları Vaxtı\x1cKuk Adaları Standart Vax" + - "tı\x1eKuk Adaları Yarım Yay Vaxtı\x0bKuba Vaxtı\x14Kuba Standart Vaxtı" + - "\x0fKuba Yay Vaxtı\x0cDevis Vaxtı\x18Dümon-d’Ürvil Vaxtı\x14Şərqi Timor " + - "Vaxtı\x13Pasxa Adası Vaxtı\x1cPasxa Adası Standart Vaxtı\x17Pasxa Adası " + - "Yay Vaxtı\x0eEkvador Vaxtı\x17Mərkəzi Avropa Vaxtı Mərkəzi Avropa Standa" + - "rt Vaxtı\x1bMərkəzi Avropa Yay Vaxtı\x15Şərqi Avropa Vaxtı\x1eŞərqi Avro" + - "pa Standart Vaxtı\x19Şərqi Avropa Yay Vaxtı\x1cKənar Şərqi Avropa Vaxtı" + - "\x14Qərbi Avropa Vaxtı\x1dQərbi Avropa Standart Vaxtı\x18Qərbi Avropa Ya" + - "y Vaxtı\x18Folklend Adaları Vaxtı!Folklend Adaları Standart Vaxtı\x1cFol" + - "klend Adaları Yay Vaxtı\x0bFici Vaxtı\x14Fici Standart Vaxtı\x0fFici Yay" + - " Vaxtı\x19Fransız Qvianası Vaxtı%Fransız Cənubi və Antarktik Vaxtı\x10Qa" + - "lapaqos Vaxtı\x0eQambier Vaxtı\x11Gurcüstan Vaxtı\x1aGurcüstan Standart " + - "Vaxtı\x15Gurcüstan Yay Vaxtı\x17Gilbert Adaları Vaxtı\x14Qrinviç Orta Va" + - "xtı\x1aŞərqi Qrenlandiya Vaxtı#Şərqi Qrenlandiya Standart Vaxtı\x1eŞərqi" + - " Qrenlandiya Yay Vaxtı\x19Qərbi Qrenlandiya Vaxtı\x22Qərbi Qrenlandiya S" + - "tandart Vaxtı\x1dQərbi Qrenlandiya Yay Vaxtı\x0fKörfəz Vaxtı\x0dQayana V" + - "axtı\x12Havay-Aleut Vaxtı\x1bHavay-Aleut Standart Vaxtı\x16Havay-Aleut Y" + - "ay Vaxtı\x10Honq Konq Vaxtı\x19Honq Konq Standart Vaxtı\x14Honq Konq Yay" + - " Vaxtı\x0bHovd Vaxtı\x14Hovd Standart Vaxtı\x0fHovd Yay Vaxtı\x10Hindist" + - "an Vaxtı\x13Hind Okeanı Vaxtı\x0fHindçin Vaxtı\x1cMərkəzi İndoneziya Vax" + - "tı\x1aŞərqi İndoneziya Vaxtı\x19Qərbi İndoneziya Vaxtı\x0cİran Vaxtı\x15" + - "İran Standart Vaxtı\x10İran Yay Vaxtı\x0fİrkutsk Vaxtı\x18İrkutsk Stand" + - "art Vaxtı\x13İrkutsk Yay Vaxtı\x0eİsrail Vaxtı\x17İsrail Standart Vaxtı" + - "\x12İsrail Yay Vaxtı\x0fYaponiya Vaxtı\x18Yaponiya Standart Vaxtı\x13Yap" + - "oniya Yay Vaxtı\x1aŞərqi Qazaxıstan Vaxtı\x19Qərbi Qazaxıstan Vaxtı\x0dK" + - "oreya Vaxtı\x16Koreya Standart Vaxtı\x11Koreya Yay Vaxtı\x0cKorse Vaxtı" + - "\x12Krasnoyarsk Vaxtı\x1bKrasnoyarsk Standart Vaxtı\x16Krasnoyarsk Yay V" + - "axtı\x16Qırğızıstan Vaxtı\x14Layn Adaları Vaxtı\x0fLord Hau Vaxtı\x18Lor" + - "d Hau Standart Vaxtı\x13Lord Hau Yay vaxtı\x14Makari Adası Vaxtı\x0eMaqa" + - "dan Vaxtı\x17Maqadan Standart Vaxtı\x12Maqadan Yay Vaxtı\x10Malayziya Va" + - "xtı\x0dMaldiv Vaxtı\x0fMarkesas Vaxtı\x17Marşal Adaları Vaxtı\x0eMavriki" + - " Vaxtı\x17Mavriki Standart Vaxtı\x12Mavriki Yay Vaxtı\x0dMouson Vaxtı" + - "\x1cŞimal-Qərbi Meksika Vaxtı%Şimal-Qərbi Meksika Standart Vaxtı Şimal-Q" + - "ərbi Meksika Yay Vaxtı\x1aMeksika Sakit Okean Vaxtı#Meksika Sakit Okean" + - " Standart Vaxtı\x1eMeksika Sakit Okean Yay Vaxtı\x10Ulanbator Vaxtı\x19U" + - "lanbator Standart Vaxtı\x14Ulanbator Yay Vaxtı\x0dMoskva Vaxtı\x16Moskva" + - " Standart Vaxtı\x11Moskva Yay vaxtı\x0dMyanma Vaxtı\x0cNauru Vaxtı\x0cNe" + - "pal vaxtı\x16Yeni Kaledoniya Vaxtı\x1fYeni Kaledoniya Standart Vaxtı\x1a" + - "Yeni Kaledoniya Yay Vaxtı\x15Yeni Zelandiya Vaxtı\x1eYeni Zelandiya Stan" + - "dart Vaxtı\x19Yeni Zelandiya Yay Vaxtı\x13Nyufaundlend Vaxtı\x1cNyufaund" + - "lend Standart Vaxtı\x17Nyufaundlend Yay Vaxtı\x0bNiue Vaxtı\x15Norfolk A" + - "dası Vaxtı\x1aFernando de Noronya Vaxtı#Fernando de Noronya Standart Vax" + - "tı\x1eFernando de Noronya Yay Vaxtı\x12Novosibirsk Vaxtı\x1bNovosibirsk " + - "Standart Vaxtı\x16Novosibirsk Yay Vaxtı\x0bOmsk Vaxtı\x14Omsk Standart V" + - "axtı\x0fOmsk Yay Vaxtı\x0fPakistan Vaxtı\x18Pakistan Standart vaxtı\x13P" + - "akistan Yay Vaxtı\x0cPalau Vaxtı\x19Papua Yeni Qvineya Vaxtı\x0fParaqvay" + - " Vaxtı\x18Paraqvay Standart Vaxtı\x13Paraqvay Yay Vaxtı\x0bPeru Vaxtı" + - "\x14Peru Standart Vaxtı\x0fPeru Yay Vaxtı\x0fFilippin Vaxtı\x18Filippin " + - "Standart Vaxtı\x13Filippin Yay Vaxtı\x16Feniks Adaları Vaxtı\x1bSan Pier" + - " və Mikelon Vaxtı$San Pier və Mikelon Standart Vaxtı\x1fSan Pier və Mike" + - "lon Yay Vaxtı\x0ePitkern Vaxtı\x0dPonape Vaxtı\x0ePxenyan Vaxtı\x0eReuni" + - "on Vaxtı\x0dRotera Vaxtı\x0eSaxalin Vaxtı\x17Saxalin Standart Vaxtı\x12S" + - "axalin Yay Vaxtı\x0dSamara vaxtı\x16Samara standart vaxtı\x11Samara yay " + - "vaxtı\x0cSamoa Vaxtı\x15Samoa Standart Vaxtı\x10Samoa Yay Vaxtı\x17Seyşe" + - "l Adaları Vaxtı\x0fSinqapur Vaxtı\x17Solomon Adaları Vaxtı\x16Cənubi Cor" + - "ciya Vaxtı\x0eSurinam Vaxtı\x0cSyova Vaxtı\x0dTahiti Vaxtı\x0dTaybey Vax" + - "tı\x16Taybey Standart Vaxtı\x11Taybey Yay Vaxtı\x11Tacikistan Vaxtı\x0eT" + - "okelau Vaxtı\x0cTonqa Vaxtı\x15Tonqa Standart Vaxtı\x10Tonqa Yay Vaxtı" + - "\x0cÇuuk Vaxtı\x15Türkmənistan Vaxtı\x1eTürkmənistan Standart Vaxtı\x19T" + - "ürkmənistan Yay Vaxtı\x0dTuvalu Vaxtı\x0eUruqvay Vaxtı\x17Uruqvay Stand" + - "art Vaxtı\x12Uruqvay Yay Vaxtı\x13Özbəkistan Vaxtı\x1cÖzbəkistan Standar" + - "t Vaxtı\x17Özbəkistan Yay Vaxtı\x0eVanuatu Vaxtı\x17Vanuatu Standart Vax" + - "tı\x12Vaunatu Yay Vaxtı\x10Venesuela Vaxtı\x12Vladivostok Vaxtı\x1bVladi" + - "vostok Standart Vaxtı\x16Vladivostok Yay Vaxtı\x10Volqoqrad Vaxtı\x19Vol" + - "qoqrad Standart Vaxtı\x14Volqoqrad Yay Vaxtı\x0dVostok Vaxtı\x0bUeyk Vax" + - "tı\x18Uollis və Futuna Vaxtı\x0eYakutsk Vaxtı\x17Yakutsk Standart Vaxtı" + - "\x12Yakutsk Yay Vaxtı\x14Yekaterinburq Vaxtı\x1dYekaterinburq Standart V" + - "axtı\x18Yekaterinburq Yay Vaxtı\x05am/pm\x03fbl\x03msi\x03apl\x03mai\x03" + - "yun\x03yul\x03agt\x03stb\x04ɔtb\x03nvb\x03dsb\x03fev\x03mar\x03apr\x03ma" + - "y\x03avg\x03sen\x03okt\x03dek\x04mart\x05aprel\x06avgust\x07sentabr\x06o" + - "ktabr\x06dekabr\x04Mart\x03May\x04Iyun\x04Iyul\x06Avgust\x07Sentabr\x06O" + - "ktabr\x03feb\x04mäz\x03prl\x03yun\x03yul\x03gst\x03set\x03ton\x03nov\x03" + - "tob" - -var bucket8 string = "" + // Size: 20527 bytes - "\x06јан\x06фев\x06мар\x06апр\x06май\x06ијн\x06ијл\x06авг\x06сен\x06окт" + - "\x06ној\x06дек\x0cјанвар\x0cфеврал\x08март\x0aапрел\x08ијун\x08ијул\x0cа" + - "вгуст\x10сентјабр\x0eоктјабр\x0cнојабр\x0cдекабр\x0cЈанвар\x0cФеврал" + - "\x08Март\x0aАпрел\x06Май\x08Ијун\x08Ијул\x0cАвгуст\x10Сентјабр\x0eОктјаб" + - "р\x0cНојабр\x0cДекабр\x03Б.\x06Б.Е.\x06Ч.А.\x03Ч.\x06Ҹ.А.\x03Ҹ.\x03Ш." + - "\x0aбазар\x17базар ертәси\x1dчәршәнбә ахшамы\x10чәршәнбә\x15ҹүмә ахшамы" + - "\x08ҹүмә\x0aшәнбә\x0c1-ҹи кв.\x0c2-ҹи кв.\x0c3-ҹү кв.\x0c4-ҹү кв.\x151-ҹ" + - "и квартал\x152-ҹи квартал\x153-ҹү квартал\x154-ҹү квартал\x10ҝеҹәјары" + - "\x04АМ\x0eҝүнорта\x04ПМ\x08сүбһ\x0aсәһәр\x0cҝүндүз\x12ахшамүстү\x0aахшам" + - "\x08ҝеҹә\x02а\x02ҝ\x02п\x1dерамыздан әввәл\x22бизим ерадан әввәл\x0fјени" + - " ера\x11бизим ера\x06е.ә.\x09б.е.ә.\x06ј.е.\x06б.е.\x04kɔn\x03mac\x03mat" + - "\x03mto\x03mpu\x03hil\x03nje\x03hik\x03dip\x03bio\x03may\x04liɓ\x09Kɔndɔ" + - "ŋ\x09Màcɛ̂l\x08Màtùmb\x06Màtop\x08M̀puyɛ\x0cHìlòndɛ̀\x07Njèbà\x07Hìkaŋ" + - "\x09Dìpɔ̀s\x08Bìòôm\x0aMàyɛsèp\x10Lìbuy li ńyèe\x04nɔy\x03nja\x03uum\x04" + - "ŋge\x04mbɔ\x05kɔɔ\x03jon\x0dŋgwà nɔ̂y\x11ŋgwà njaŋgumba\x0aŋgwà ûm\x0cŋ" + - "gwà ŋgê\x0cŋgwà mbɔk\x0cŋgwà kɔɔ\x0bŋgwà jôn\x04K1s3\x04K2s3\x04K3s3\x04" + - "K4s3\x15Kèk bisu i soŋ iaâ\x22Kèk i ńyonos biɓaà i soŋ iaâ Kèk i ńyonos " + - "biaâ i soŋ iaâ Kèk i ńyonos binâ i soŋ iaâ\x0dI bikɛ̂glà\x0bI ɓugajɔp" + - "\x17bisū bi Yesù Krǐstò\x16i mbūs Yesù Krǐstò\x05b.Y.K\x05m.Y.K\x04kèk" + - "\x06ŋwìi\x04soŋ\x09sɔndɛ̂\x04kɛl\x07yààni\x06lɛ̀n\x05yàni\x13hìlɔ hi sɔn" + - "dɛ̂\x09njǎmùha\x07ŋgɛŋ\x05ŋget\x0chìŋgeŋget\x10komboo i ŋgɛŋ\x06d.M.yy" + - "\x07d.M.y G\x0bd.M.y GGGGG\x0c{1} 'у' {0}\x06сту\x06лют\x06сак\x06кра" + - "\x06мая\x06чэр\x06ліп\x06жні\x06вер\x06кас\x06ліс\x06сне\x02с\x02л\x02к" + - "\x02м\x02ч\x02ж\x02в\x10студзеня\x0cлютага\x10сакавіка\x12красавіка\x0eч" + - "эрвеня\x0cліпеня\x0cжніўня\x0eверасня\x16кастрычніка\x12лістапада\x0cсн" + - "ежня\x10студзень\x08люты\x0eсакавік\x10красавік\x0eчэрвень\x0cліпень" + - "\x0eжнівень\x10верасень\x14кастрычнік\x10лістапад\x0eснежань\x04нд\x04пн" + - "\x04аў\x04ср\x04чц\x04пт\x04сб\x02н\x0eнядзеля\x14панядзелак\x0eаўторак" + - "\x0cсерада\x0cчацвер\x0eпятніца\x0cсубота\x0c1-шы кв.\x0c2-гі кв.\x0c3-ц" + - "і кв.\x0c4-ты кв.\x151-шы квартал\x152-гі квартал\x153-ці квартал\x154-" + - "ты квартал\x02am\x02pm*да нараджэння Хрыстова\x16да нашай эры*ад нарадж" + - "эння Хрыстова\x11нашай эры\x0bда н.э.\x06н.э.\x14EEEE, d MMMM y 'г'." + - "\x0ed MMMM y 'г'.\x06d.MM.y\x07d.MM.yy\x0eHH:mm:ss, zzzz\x06эра\x06год" + - "\x1cу мінулым годзе\x18у гэтым годзе у наступным годзе\x13праз {0} год" + - "\x15праз {0} гады\x17праз {0} гадоў\x15праз {0} года\x13{0} год таму\x15" + - "{0} гады таму\x17{0} гадоў таму\x15{0} года таму\x03г.\x10праз {0} г." + - "\x10{0} г. таму\x0eквартал\x22у мінулым квартале\x1eу гэтым квартале&у н" + - "аступным квартале\x1bпраз {0} квартал\x1dпраз {0} кварталы\x1fпраз {0} " + - "кварталаў\x1dпраз {0} квартала\x1b{0} квартал таму\x1d{0} кварталы таму" + - "\x1f{0} кварталаў таму\x1d{0} квартала таму\x05кв.\x12праз {0} кв.\x12{0" + - "} кв. таму\x0aмесяц\x1eу мінулым месяцы\x1aу гэтым месяцы\x22у наступным" + - " месяцы\x17праз {0} месяц\x19праз {0} месяцы\x1bпраз {0} месяцаў\x19праз" + - " {0} месяца\x17{0} месяц таму\x19{0} месяцы таму\x1b{0} месяцаў таму\x19" + - "{0} месяца таму\x07мес.\x14праз {0} мес.\x14{0} мес. таму\x06тыд\x1eна м" + - "інулым тыдні\x1aна гэтым тыдні\x22на наступным тыдні\x1bпраз {0} тыдзен" + - "ь\x17праз {0} тыдні\x19праз {0} тыдняў\x17праз {0} тыдня\x1b{0} тыдзень" + - " таму\x17{0} тыдні таму\x19{0} тыдняў таму\x17{0} тыдня таму\x12тыдзень " + - "{0}\x13праз {0} тыд\x13{0} тыд таму\x0aдзень\x12пазаўчора\x0aучора\x0aсё" + - "ння\x0cзаўтра\x16паслязаўтра\x17праз {0} дзень\x13праз {0} дні\x15праз " + - "{0} дзён\x13праз {0} дня\x17{0} дзень таму\x13{0} дні таму\x15{0} дзён т" + - "аму\x13{0} дня таму\x03д.\x10праз {0} д.\x10{0} д. таму\x15дзень тыдня " + - "у мінулую нядзелю\x1aу гэту нядзелю$у наступную нядзелю\x1bпраз {0} няд" + - "зелю\x1bпраз {0} нядзелі\x1bпраз {0} нядзель\x1b{0} нядзелю таму\x1b{0}" + - " нядзелі таму\x1b{0} нядзель таму\x16у мінулую нд\x10у гэту нд\x1aу наст" + - "упную нд$у мінулы панядзелак у гэты панядзелак(у наступны панядзелак!пр" + - "аз {0} панядзелак!праз {0} панядзелкі#праз {0} панядзелкаў!праз {0} пан" + - "ядзелка!{0} панядзелак таму!{0} панядзелкі таму#{0} панядзелкаў таму!{0" + - "} панядзелка таму\x14у мінулы пн\x10у гэты пн\x18у наступны пн\x1eу міну" + - "лы аўторак\x1aу гэты аўторак\x22у наступны аўторак\x1bпраз {0} аўторак" + - "\x1bпраз {0} аўторкі\x1dпраз {0} аўторкаў\x1bпраз {0} аўторка\x1b{0} аўт" + - "орак таму\x1b{0} аўторкі таму\x1d{0} аўторкаў таму\x1b{0} аўторка таму" + - "\x14у мінулы аў\x10у гэты аў\x18у наступны аў\x1eу мінулую сераду\x18у г" + - "эту сераду\x22у наступную сераду\x19праз {0} сераду\x19праз {0} серады" + - "\x17праз {0} серад\x19{0} сераду таму\x19{0} серады таму\x17{0} серад та" + - "му\x16у мінулую ср\x10у гэту ср\x1aу наступную ср\x1cу мінулы чацвер" + - "\x18у гэты чацвер у наступны чацвер\x19праз {0} чацвер\x1dпраз {0} чацвя" + - "ргі\x1fпраз {0} чацвяргоў\x1dпраз {0} чацвярга\x19{0} чацвер таму\x1d{0" + - "} чацвяргі таму\x1f{0} чацвяргоў таму\x1d{0} чацвярга таму\x14у мінулы ч" + - "ц\x10у гэты чц\x18у наступны чц у мінулую пятніцу\x1aу гэту пятніцу$у н" + - "аступную пятніцу\x1bпраз {0} пятніцу\x1bпраз {0} пятніцы\x19праз {0} пя" + - "тніц\x1b{0} пятніцу таму\x1b{0} пятніцы таму\x19{0} пятніц таму\x16у мі" + - "нулую пт\x10у гэту пт\x1aу наступную пт\x1eу мінулую суботу\x18у гэту с" + - "уботу\x22у наступную суботу\x19праз {0} суботу\x19праз {0} суботы\x17пр" + - "аз {0} субот\x19{0} суботу таму\x19{0} суботы таму\x17{0} субот таму" + - "\x16у мінулую сб\x10у гэту сб\x1aу наступную сб\x0eгадзіна\x1aу гэту гад" + - "зіну\x1bпраз {0} гадзіну\x1bпраз {0} гадзіны\x19праз {0} гадзін\x1b{0} " + - "гадзіну таму\x1b{0} гадзіны таму\x19{0} гадзін таму\x08гадз\x15праз {0}" + - " гадз\x15{0} гадз таму\x0eхвіліна\x1aу гэту хвіліну\x1bпраз {0} хвіліну" + - "\x1bпраз {0} хвіліны\x19праз {0} хвілін\x1b{0} хвіліну таму\x1b{0} хвілі" + - "ны таму\x19{0} хвілін таму\x04хв\x11праз {0} хв\x11{0} хв таму\x0eсекун" + - "да\x0aцяпер\x1bпраз {0} секунду\x1bпраз {0} секунды\x19праз {0} секунд" + - "\x1b{0} секунду таму\x1b{0} секунды таму\x19{0} секунд таму\x0fпраз {0} " + - "с\x0f{0} с таму\x15часавы пояс\x0d+HH.mm;-HH.mm\x06GMT{0}\x03GMT\x0bЧас" + - ": {0}\x16Летні час: {0} Стандартны час: {0}$Брытанскі летні час.Ірландск" + - "і стандартны час!Афганістанскі час/Цэнтральнаафрыканскі час)Усходнеафры" + - "канскі час+Паўднёваафрыканскі час)Заходнеафрыканскі час>Заходнеафрыканс" + - "кі стандартны час4Заходнеафрыканскі летні час\x13Час Аляскі(Стандартны " + - "час Аляскі\x1eЛетні час Аляскі\x19Амазонскі час.Амазонскі стандартны ча" + - "с$Амазонскі летні часBПаўночнаамерыканскі цэнтральны часWПаўночнаамерык" + - "анскі цэнтральны стандартны часMПаўночнаамерыканскі цэнтральны летні ча" + - "с<Паўночнаамерыканскі ўсходні часQПаўночнаамерыканскі ўсходні стандартн" + - "ы часGПаўночнаамерыканскі ўсходні летні час8Паўночнаамерыканскі горны ч" + - "асMПаўночнаамерыканскі горны стандартны часCПаўночнаамерыканскі горны л" + - "етні час\x1fЦіхаакіянскі час4Ціхаакіянскі стандартны час*Ціхаакіянскі л" + - "етні час\x0fЧас Апіі$Стандартны час Апіі\x1aЛетні час Апіі(Час Саудаўск" + - "ай Аравіі=Стандартны час Саудаўскай Аравіі3Летні час Саудаўскай Аравіі" + - "\x1dАргенцінскі час2Аргенцінскі стандартны час(Аргенцінскі летні час*Час" + - " Заходняй Аргенціны?Стандартны час Заходняй Аргенціны5Летні час Заходняй" + - " Аргенціны\x15Час Арменіі*Стандартны час Арменіі Летні час Арменіі\x1bАт" + - "лантычны час0Атлантычны стандартны час&Атлантычны летні час0Час цэнтрал" + - "ьнай АўстралііEСтандартны час цэнтральнай Аўстраліі;Летні час цэнтральн" + - "ай Аўстраліі?Заходні час Цэнтральнай АўстралііTЗаходні стандартны час Ц" + - "энтральнай АўстралііJЗаходні летні час Цэнтральнай Аўстраліі*Час усходн" + - "яй Аўстраліі?Стандартны час усходняй Аўстраліі5Летні час усходняй Аўстр" + - "аліі*Час заходняй Аўстраліі?Стандартны час заходняй Аўстраліі5Летні час" + - " заходняй Аўстраліі\x1fЧас Азербайджана4Стандартны час Азербайджана*Летн" + - "і час Азербайджана(Час Азорскіх астравоў=Стандартны час Азорскіх астрав" + - "оў3Летні час Азорскіх астравоў\x19Час Бангладэш.Стандартны час Бангладэ" + - "ш$Летні час Бангладэш\x13Час Бутана\x1bБалівійскі час\x1bБразільскі час" + - "0Бразільскі стандартны час&Бразільскі летні час\x13Час Брунея\x1aЧас Каб" + - "а-Вердэ/Стандартны час Каба-Вердэ%Летні час Каба-Вердэ\x13Час Чамора" + - "\x13Час Чатэма(Стандартны час Чатэма\x1eЛетні час Чатэма\x17Чылійскі час" + - ",Чылійскі стандартны час\x22Чылійскі летні час\x11Час Кітая&Стандартны ч" + - "ас Кітая\x1cЛетні час Кітая\x1bЧас Чайбалсана0Стандартны час Чайбалсана" + - "&Летні час Чайбалсана\x22Час вострава Каляд*Час Какосавых астравоў\x1dКа" + - "лумбійскі час2Калумбійскі стандартны час(Калумбійскі летні час Час астр" + - "авоў Кука5Стандартны час астравоў Кука1Паўлетні час астравоў Кука\x0fЧа" + - "с Кубы$Стандартны час Кубы\x1aЛетні час Кубы\x22Час станцыі Дэйвіс3Час " + - "станцыі Дзюмон-Дзюрвіль&Час Усходняга Тымора\x22Час вострава Пасхі7Стан" + - "дартны час вострава Пасхі-Летні час вострава Пасхі\x1bЭквадорскі час/Цэ" + - "нтральнаеўрапейскі часDЦэнтральнаеўрапейскі стандартны час:Цэнтральнаеў" + - "рапейскі летні час)Усходнееўрапейскі час>Усходнееўрапейскі стандартны ч" + - "ас4Усходнееўрапейскі летні час\x19Беларускі час)Заходнееўрапейскі час>З" + - "аходнееўрапейскі стандартны час4Заходнееўрапейскі летні час0Час Фалклен" + - "дскіх астравоўEСтандартны час Фалклендскіх астравоў;Летні час Фалклендс" + - "кіх астравоў\x11Час Фіджы&Стандартны час Фіджы\x1cЛетні час Фіджы*Час Ф" + - "ранцузскай Гвіяны_Час Французскіх Паўднёвых і Антарктычных тэрыторыйEСт" + - "андартны час Галапагоскіх астравоў#Час атравоў Гамб’е\x19Грузінскі час." + - "Грузінскі стандартны час$Грузінскі летні час(Час астравоў Гілберта\x1cЧ" + - "ас па Грынвічы,Час Усходняй ГрэнландыіAСтандартны час Усходняй Грэнланд" + - "ыі7Летні час Усходняй Грэнландыі,Час Заходняй ГрэнландыіAСтандартны час" + - " Заходняй Грэнландыі7Летні час Заходняй Грэнландыі*Час Персідскага залів" + - "а\x11Час Гаяны&Гавайска-Алеуцкі час;Гавайска-Алеуцкі стандартны час1Гав" + - "айска-Алеуцкі летні час\x17Час Ганконга,Стандартны час Ганконга\x22Летн" + - "і час Ганконга\x11Час Хоўда&Стандартны час Хоўда\x1cЛетні час Хоўда\x11" + - "Час Індыі(Час Індыйскага акіяна\x1fІндакітайскі час3Цэнтральнаінданезій" + - "скі час-Усходнеінданезійскі час-Заходнеінданезійскі час\x15Іранскі час*" + - "Іранскі стандартны час Іранскі летні час\x15Іркуцкі час*Іркуцкі стандар" + - "тны час Іркуцкі летні час\x1bІзраільскі час0Ізраільскі стандартны час&І" + - "зраільскі летні час\x13Час Японіі(Стандартны час Японіі\x1eЛетні час Яп" + - "оніі-Усходнеказахстанскі час-Заходнеказахстанскі час\x11Час Карэі&Станд" + - "артны час Карэі\x1cЛетні час Карэі$Час астравоў Кусаіе\x1dКраснаярскі ч" + - "ас2Краснаярскі стандартны час(Краснаярскі летні час\x1dЧас Кыргызстана " + - "Час астравоў Лайн\x16Час Лорд-Хау+Стандартны час Лорд-Хау!Летні час Лор" + - "д-Хау&Час вострава Макуоры\x1bМагаданскі час0Магаданскі стандартны час&" + - "Магаданскі летні час\x17Час Малайзіі\x15Час Мальдыў,Час Маркізскіх астр" + - "авоў,Час Маршалавых астравоў\x17Час Маўрыкія,Стандартны час Маўрыкія" + - "\x22Летні час Маўрыкія\x22Час станцыі Моўсан=Паўночна-заходні мексіканск" + - "і часRПаўночна-заходні мексіканскі стандартны часHПаўночна-заходні мекс" + - "іканскі летні час6Мексіканскі ціхаакіянскі часIМексіканскі ціхаакіянскі" + - " стандатны часAМексіканскі ціхаакіянскі летні час\x1cЧас Улан-Батара1Ста" + - "ндартны час Улан-Батара'Летні час Улан-Батара\x19Маскоўскі час.Маскоўск" + - "і стандартны час$Маскоўскі летні час\x14Час М’янмы\x11Час Науру\x19Непа" + - "льскі час$Час Новай Каледоніі9Стандартны час Новай Каледоніі/Летні час " + - "Новай Каледоніі\x22Час Новай Зеландыі7Стандартны час Новай Зеландыі-Лет" + - "ні час Новай Зеландыі%Ньюфаўндлендскі час:Ньюфаўндлендскі стандартны ча" + - "с0Ньюфаўндлендскі летні час\x0fЧас Ніуэ&Час вострава Норфалк+Час Фернан" + - "ду-ды-Наронья@Стандартны час Фернанду-ды-Наронья6Летні час Фернанду-ды-" + - "Наронья\x1fНовасібірскі час4Новасібірскі стандартны час*Новасібірскі ле" + - "тні час\x11Омскі час&Омскі стандартны час\x1cОмскі летні час\x1dПакіста" + - "нскі час2Пакістанскі стандартны час(Пакістанскі летні час\x11Час Палау)" + - "Час Папуа-Новай Гвінеі\x17Час Парагвая,Стандартны час Парагвая\x22Летні" + - " час Парагвая\x19Перуанскі час.Перуанскі стандартны час$Перуанскі летні " + - "час\x1bФіліпінскі час0Філіпінскі стандартны час&Філіпінскі летні час$Ча" + - "с астравоў Фенікс)Час Сен-П’ер і Мікелон>Стандартны час Сен-П’ер і Міке" + - "лонIСтандартны летні час Сен-П’ер і Мікелон&Час вострава Піткэрн$Час во" + - "страва Понпеі\x1bПхеньянскі час\x17Час Рэюньёна\x22Час станцыі Ратэра" + - "\x1bСахалінскі час0Сахалінскі стандартны час&Сахалінскі летні час\x11Час" + - " Самоа&Стандартны час Самоа\x1cЛетні час Самоа.Час Сейшэльскіх астравоў" + - "\x1dСінгапурскі час.Час Саламонавых астравоў*Час Паўднёвай Джорджыі\x17Ч" + - "ас Сурынама\x1eЧас станцыі Сёва\x11Час Таіці\x13Час Тайбэя(Стандартны ч" + - "ас Тайбэя\x1eЛетні час Тайбэя\x1fЧас Таджыкістана\x15Час Такелау\x11Час" + - " Тонга&Стандартны час Тонга\x1cЛетні час Тонга\x0fЧас Чуук!Час Туркменіс" + - "тана6Стандартны час Туркменістана,Летні час Туркменістана\x13Час Тувалу" + - "\x1bУругвайскі час0Уругвайскі стандартны час&Уругвайскі летні час\x1dЧас" + - " Узбекістана2Стандартны час Узбекістана(Летні час Узбекістана\x15Час Ван" + - "уату*Стандартны час Вануату Летні час Вануату\x1fВенесуэльскі час#Уладз" + - "івастоцкі час8Уладзівастоцкі стандартны час.Уладзівастоцкі летні час" + - "\x1fВалгаградскі час4Валгаградскі стандартны час*Валгаградскі летні час " + - "Час станцыі Усход Час вострава Уэйк2Час астравоў Уоліс і Футуна\x13Якуц" + - "кі час(Якуцкі стандартны час\x1eЯкуцкі летні час%Екацярынбургскі час:Ек" + - "ацярынбургскі стандартны час0Екацярынбургскі летні час\x04вт\x04чт\x06ф" + - "еб\x06апр\x06мај\x06јун\x06јул\x06авг\x06сеп\x06окт\x06нов\x06дец\x06GM" + - "T{0}\x03GMT\x04pón\x04wał\x03srj\x03stw\x04pět\x03sob\x06GMT{0}\x03GMT" + - "\x06UTC{0}\x03UTC\x1bග්\u200dරිමවේ{0}\x18ග්\u200dරිමවේ\x06GMT{0}\x03GMT" + - "\x06мар\x06апр\x06мај\x06авг\x06окт\x06мај\x06јун\x06јул\x07тек.\x07хед." + - "\x07тах.\x07тер.\x09єкат.\x07мег.\x09міяз.\x07ген.\x07сен.\x07хам.\x07не" + - "х.\x07паг.\x04пн\x04вт\x04ср\x04чт\x04пт\x04сб" - -var bucket9 string = "" + // Size: 21784 bytes - "\x0aPa Mulungu\x09Palichimo\x0bPalichibuli\x0bPalichitatu\x09Palichine" + - "\x0bPalichisano\x0cPachibelushi\x08uluchelo\x07akasuba\x0bBefore Yesu" + - "\x0aAfter Yesu\x02BC\x02AD\x06Inkulo\x06Umwaka\x07Umweshi\x08Umulungu" + - "\x08Ubushiku\x07Akasuba\x04Insa\x06Mineti\x07Sekondi\x03Hut\x03Vil\x03Da" + - "t\x03Tai\x03Han\x03Sit\x03Sab\x03Nan\x03Tis\x03Kum\x03Kmj\x03Kmb\x14pa m" + - "wedzi gwa hutala\x14pa mwedzi gwa wuvili\x14pa mwedzi gwa wudatu\x13pa m" + - "wedzi gwa wutai\x14pa mwedzi gwa wuhanu\x12pa mwedzi gwa sita\x12pa mwed" + - "zi gwa saba\x12pa mwedzi gwa nane\x12pa mwedzi gwa tisa\x12pa mwedzi gwa" + - " kumi\x1apa mwedzi gwa kumi na moja\x1bpa mwedzi gwa kumi na mbili\x03Mu" + - "l\x03Hiv\x03Hid\x03Hit\x03Hih\x03Lem\x0apa mulungu\x0epa shahuviluha\x09" + - "pa hivili\x09pa hidatu\x09pa hitayi\x09pa hihanu\x0fpa shahulembela\x02L" + - "1\x02L2\x02L3\x02L4\x06Lobo 1\x06Lobo 2\x06Lobo 3\x06Lobo 4\x07pamilau" + - "\x07pamunyi\x0eKabla ya Mtwaa\x0eBaada ya Mtwaa\x07Amajira\x05Mwaha\x06M" + - "wedzi\x0eMlungu gumamfu\x04Sihu\x05Igolo\x0bNeng’u ni\x06Hilawu\x0cSihud" + - "za kasi\x08Lwamelau\x03Saa\x07Sekunde\x0eAmajira ga saa\x16EEEE, d MMMM " + - "y 'г'. G\x10d MMMM y 'г'. G\x0ed.MM.y 'г'. G\x09d.MM.yy G\x06яну\x06фев" + - "\x08март\x06апр\x06май\x06юни\x06юли\x06авг\x06сеп\x06окт\x06ное\x06дек" + - "\x02я\x02ф\x02м\x02а\x02ю\x02с\x02о\x02н\x02д\x0cянуари\x10февруари\x0aа" + - "прил\x0cавгуст\x12септември\x10октомври\x0eноември\x10декември\x02п\x02" + - "в\x02ч\x0cнеделя\x14понеделник\x0eвторник\x0aсряда\x12четвъртък\x0aпетъ" + - "к\x0cсъбота\x0c1. трим.\x0c2. трим.\x0c3. трим.\x0c4. трим.\x171. триме" + - "сечие\x172. тримесечие\x173. тримесечие\x174. тримесечие\x0eполунощ\x10" + - "сутринта\x0dна обед\x10следобед\x0eвечерта\x13през нощта\x0aпр.об.\x0aс" + - "л.об.\x0dна обяд\x17преди Христа\x1eпреди новата ера\x15след Христа\x1c" + - "след новата ера\x0aпр.Хр.\x0bпр.н.е.\x0aсл.Хр.\x0bсл.н.е.\x0cd.MM.y 'г'" + - ".\x0dd.MM.yy 'г'.\x0aтишри\x0cхешван\x0cкислев\x0aтебет\x0aшебат\x0aадар" + - " I\x08адар\x0bадар II\x0aнисан\x06иар\x0aсиван\x0aтамуз\x04ав\x08елул" + - "\x0cчайтра\x10вайсакха\x10джаинтха\x0cасадха\x0eсравана\x0aбхада\x0cазви" + - "на\x0eкартика\x14аграхайана\x0aпауза\x0aмагха\x10пхалгуна\x0eмухарам" + - "\x0aсафар\x0aраби-1\x0aраби-2\x10джумада-1\x10джумада-2\x0cраджаб\x0aшаб" + - "ан\x0eрамазан\x0aШавал\x13Дхул-Каада\x13Дхул-хиджа\x06ера\x0cгодина\x1d" + - "миналата година\x15тази година!следващата година\x19след {0} година\x19" + - "след {0} години\x1bпреди {0} година\x1bпреди {0} години\x0bмин. г.\x07т" + - ". г.\x0fследв. г.\x10след {0} г.\x12преди {0} г.\x09сл. г.\x0dсл. {0} г." + - "\x0dпр. {0} г.\x14тримесечие'предходно тримесечие\x1dтова тримесечие%сле" + - "дващо тримесечие!след {0} тримесечие!след {0} тримесечия#преди {0} трим" + - "есечие#преди {0} тримесечия\x09трим.\x11мин. трим.\x12това трим.\x15сле" + - "дв. трим.\x13сл. {0} трим.\x13пр. {0} трим.\x0aмесец\x1dпредходен месец" + - "\x13този месец\x19следващ месец\x17след {0} месец\x19след {0} месеца\x19" + - "преди {0} месец\x1bпреди {0} месеца\x0fмин. мес.\x10този мес.\x13следв." + - " мес.\x10след {0} м.\x12преди {0} м.\x0bмин. м.\x07т. м.\x09сл. м.\x0dсл" + - ". {0} м.\x0dпр. {0} м.\x0eседмица%предходната седмица\x17тази седмица#сл" + - "едващата седмица\x1bслед {0} седмица\x1bслед {0} седмици\x1dпреди {0} с" + - "едмица\x1dпреди {0} седмици\x1bседмицата от {0}\x09седм.\x1fминалата се" + - "дмица\x12тази седм.\x15следв. седм.\x16след {0} седм.\x18преди {0} седм" + - ".\x11мин. седм.\x0fсл. седм.\x13сл. {0} седм.\x13пр. {0} седм.\x06ден" + - "\x0fонзи ден\x0aвчера\x08днес\x08утре\x12вдругиден\x13след {0} ден\x13сл" + - "ед {0} дни\x15преди {0} ден\x15преди {0} дни\x0cсл. {0} д\x0cпр. {0} д" + - "\x1eден от седмицата#предходната неделя\x15тази неделя!следващата неделя" + - "\x19след {0} неделя\x19след {0} недели\x1bпреди {0} неделя\x1bпреди {0} " + - "недели\x1bпредходната нд\x0dтази нд\x19следващата нд\x10предх. нд\x10сл" + - "едв. нд+предходният понеделник\x1dтози понеделник)следващият понеделник" + - "!след {0} понеделник#след {0} понеделника#преди {0} понеделник%преди {0}" + - " понеделника\x1bпредходният пн\x0dтози пн\x19следващият пн\x10предх. пн" + - "\x10следв. пн%предходният вторник\x17този вторник#следващият вторник\x1b" + - "след {0} вторник\x1dслед {0} вторника\x1dпреди {0} вторник\x1fпреди {0}" + - " вторника\x1bпредходният вт\x0dтози вт\x19следващият вт\x10предх. вт\x10" + - "следв. вт!предходната сряда\x13тази сряда\x1fследващата сряда\x17след {" + - "0} сряда\x17след {0} среди\x19преди {0} сряда\x19преди {0} среди\x1bпред" + - "ходната ср\x0dтази ср\x19следващата ср\x10предх. ср\x10следв. ср)предхо" + - "дният четвъртък\x1bтози четвъртък'следващият четвъртък\x1fслед {0} четв" + - "ъртък!след {0} четвъртъка!преди {0} четвъртък#преди {0} четвъртъка\x0dт" + - "ози чт\x19следващият чт\x10предх. чт\x10следв. чт!предходният петък\x13" + - "този петък\x1fследващият петък\x17след {0} петък\x19след {0} петъка\x19" + - "преди {0} петък\x1bпреди {0} петъка\x0dтози пт\x19следващият пт\x10пред" + - "х. пт\x10следв. пт#предходната събота\x15тази събота!следващата събота" + - "\x19след {0} събота\x19след {0} съботи\x1bпреди {0} събота\x1bпреди {0} " + - "съботи\x1bпредходната сб\x0dтази сб\x19следващата сб\x10предх. сб\x10сл" + - "едв. сб\x15пр.об./сл.об.\x06час\x12в този час\x13след {0} час\x15след {" + - "0} часа\x15преди {0} час\x17преди {0} часа\x0fслед {0} ч\x11преди {0} ч" + - "\x0cсл. {0} ч\x0cпр. {0} ч\x0cминута\x18в тази минута\x19след {0} минута" + - "\x19след {0} минути\x1bпреди {0} минута\x1bпреди {0} минути\x06мин\x13сл" + - "ед {0} мин\x15преди {0} мин\x10сл. {0} мин\x10пр. {0} мин\x08сега\x1bсл" + - "ед {0} секунда\x1bслед {0} секунди\x1dпреди {0} секунда\x1dпреди {0} се" + - "кунди\x13след {0} сек\x15преди {0} сек\x10сл. {0} сек\x10пр. {0} сек" + - "\x15часова зона:Координирано универсално време5Британско лятно часово вр" + - "еме2Ирландско стандартно време%Афганистанско време1Централноафриканско " + - "време-Източноафриканско време'Южноафриканско време-Западноафриканско вр" + - "емеBЗападноафриканско стандартно времеEЗападноафриканско лятно часово в" + - "реме\x0cАляска0Аляска – стандартно време3Аляска – лятно часово време" + - "\x1dАмазонско време2Амазонско стандартно време5Амазонско лятно часово вр" + - "емеBСеверноамериканско централно времеWСеверноамериканско централно ста" + - "ндартно времеZСеверноамериканско централно лятно часово време>Северноам" + - "ериканско източно времеSСеверноамериканско източно стандартно времеVСев" + - "ерноамериканско източно лятно часово времеBСеверноамериканско планинско" + - " времеWСеверноамериканско планинско стандартно времеZСеверноамериканско " + - "планинско лятно часово времеHСеверноамериканско тихоокеанско време]Севе" + - "рноамериканско тихоокеанско стандартно време`Северноамериканско тихооке" + - "анско лятно часово време\x17Анадир време0Анадир – стандартно време3Анад" + - "ир – лятно часово време\x08Апия,Апия – стандартно време/Апия – лятно ча" + - "сово време\x19Арабско време.Арабско стандартно време1Арабско лятно часо" + - "во време!Аржентинско време6Аржентинско стандартно време9Аржентинско лят" + - "но часово време/Западноаржентинско времеDЗападноаржентинско стандартно " + - "времеGЗападноаржентинско лятно часово време\x1bАрменско време0Арменско " + - "стандартно време3Арменско лятно часово времеHСеверноамериканско атланти" + - "ческо време]Северноамериканско атлантическо стандартно време`Северноаме" + - "риканско атлантическо лятно часово време4Австралия – централно времеIАв" + - "стралия – централно стандартно времеLАвстралия – централно лятно часово" + - " времеCАвстралия – западно централно времеXАвстралия – западно централно" + - " стандартно време[Австралия – западно централно лятно часово време0Австр" + - "алия – източно времеEАвстралия – източно стандартно времеHАвстралия – и" + - "зточно лятно часово време0Австралия – западно времеEАвстралия – западно" + - " стандартно времеHАвстралия – западно лятно часово време'Азербайджанско " + - "време<Азербайджанско стандартно време?Азербайджанско лятно часово време" + - "\x1dАзорски островиAАзорски острови – стандартно времеDАзорски острови –" + - " лятно часово време!Бангладешко време6Бангладешко стандартно време9Бангл" + - "адешко лятно часово време\x1bБутанско време\x1fБоливийско време\x1dБраз" + - "илско време2Бразилско стандартно време5Бразилско лятно часово време!Бру" + - "ней Даруссалам\x13Кабо Верде7Кабо Верде – стандартно време:Кабо Верде –" + - " лятно часово време0Чаморо – стандартно време\x0aЧатъм.Чатъм – стандартн" + - "о време1Чатъм – лятно часово време\x1bЧилийско време0Чилийско стандартн" + - "о време3Чилийско лятно часово време\x1bКитайско време0Китайско стандарт" + - "но време3Китайско лятно часово време#Чойбалсанско време8Чойбалсанско ст" + - "андартно време;Чойбалсанско лятно часово време\x1fОстров Рождество\x1fК" + - "окосови острови!Колумбийско време6Колумбийско стандартно време9Колумбий" + - "ско лятно часово време\x15Острови Кук9Острови Кук – стандартно време<Ос" + - "трови Кук – лятно часово време\x1bКубинско време0Кубинско стандартно вр" + - "еме3Кубинско лятно часово време\x0cДейвис\x17Дюмон Дюрвил)Източнотиморс" + - "ко време#Великденски островGВеликденски остров – стандартно времеJВелик" + - "денски остров – лятно часово време\x1fЕквадорско време1Централноевропей" + - "ско времеFЦентралноевропейско стандартно времеIЦентралноевропейско лятн" + - "о часово време-Източноевропейско времеBИзточноевропейско стандартно вре" + - "меEИзточноевропейско лятно часово време<Далечно източноевропейско време" + - "-Западноевропейско времеBЗападноевропейско стандартно време8Западноевроп" + - "ейско лятно време%Фолклендски островиIФолклендски острови – стандартно " + - "времеLФолклендски острови – лятно часово време\x0aФиджи.Фиджи – стандар" + - "тно време1Фиджи – лятно часово време\x1bФренска ГвианаHФренски южни и а" + - "нтарктически територии!Галапагоско време\x0cГамбие\x1dГрузинско време2Г" + - "рузинско стандартно време5Грузинско лятно часово време\x1dОстрови Гилбъ" + - "рт*Средно гринуичко време/Източногренландско времеDИзточногренландско с" + - "тандартно времеGИзточногренландско лятно часово време/Западногренландск" + - "о времеDЗападногренландско стандартно времеGЗападногренландско лятно ча" + - "сово време\x1dПерсийски залив\x0aГаяна,Хавайско-алеутско времеAХавайско" + - "-алеутско стандартно времеDХавайско-алеутско лятно часово време\x1fХонко" + - "нгско време4Хонконгско стандартно време7Хонконгско лятно часово време" + - "\x19Ховдско време.Ховдско стандартно време1Ховдско лятно часово време0Ин" + - "дийско стандартно време\x1bИндийски океан#Индокитайско време5Централнои" + - "ндонезийско време1Източноиндонезийско време1Западноиндонезийско време" + - "\x19Иранско време.Иранско стандартно време1Иранско лятно часово време" + - "\x1bИркутско време0Иркутско стандартно време3Иркутско лятно часово време" + - "\x1dИзраелско време2Израелско стандартно време5Израелско лятно часово вр" + - "еме\x19Японско време.Японско стандартно време1Японско лятно часово врем" + - "е8Петропавловск-Камчатски времеMПетропавловск-Камчатски стандартно врем" + - "еTПетропавловск-Камчатски – лятно часово време1Източноказахстанско врем" + - "е1Западноказахстанско време\x1bКорейско време0Корейско стандартно време" + - "3Корейско лятно часово време\x0cКошрай!Красноярско време6Красноярско ста" + - "ндартно време9Красноярско лятно часово време%Киргизстанско време'Еквато" + - "риални острови\x0fЛорд Хау3Лорд Хау – стандартно време6Лорд Хау – лятно" + - " часово време\x10Маккуори\x1fМагаданско време4Магаданско стандартно врем" + - "е7Магаданско лятно часово време!Малайзийско време!Малдивски острови\x1f" + - "Маркизки острови!Маршалови острови\x10Мавриций4Мавриций – стандартно вр" + - "еме7Мавриций – лятно часово време\x0cМоусън8Мексико – северозападно вре" + - "меMМексико – северозападно стандартно времеPМексико – северозападно лят" + - "но часово време:Мексиканско тихоокеанско времеOМексиканско тихоокеанско" + - " стандартно времеRМексиканско тихоокеанско лятно часово време#Уланбаторс" + - "ко време8Уланбаторско стандартно време;Уланбаторско лятно часово време" + - "\x1dМосковско време2Московско стандартно време5Московско лятно часово вр" + - "еме\x1fМианмарско време\x0aНауру\x1bНепалско време'Новокаледонско време" + - "<Новокаледонско стандартно време?Новокаледонско лятно часово време%Новоз" + - "еландско време:Новозеландско стандартно време=Новозеландско лятно часов" + - "о време'Нюфаундлендско време<Нюфаундлендско стандартно време?Нюфаундлен" + - "дско лятно часово време\x08Ниуе\x0eНорфолк\x22Фернандо де НороняFФернан" + - "до де Нороня – стандартно времеIФернандо де Нороня – лятно часово време" + - "#Новосибирско време8Новосибирско стандартно време;Новосибирско лятно час" + - "ово време\x15Омско време*Омско стандартно време-Омско лятно часово врем" + - "е!Пакистанско време6Пакистанско стандартно време9Пакистанско лятно часо" + - "во време\x0aПалау Папуа Нова Гвинея!Парагвайско време6Парагвайско станд" + - "артно време9Парагвайско лятно часово време\x1dПеруанско време2Перуанско" + - " стандартно време5Перуанско лятно часово време\x1fФилипинско време4Филип" + - "инско стандартно време7Филипинско лятно часово време\x1bОстрови Феникс!" + - "Сен Пиер и МикелонEСен Пиер и Микелон – стандартно времеHСен Пиер и Мик" + - "елон – лятно часово време\x0eПиткерн\x0cПонапе\x1eВремето в Пхенян\x0eР" + - "еюнион\x0cРотера\x1fСахалинско време4Сахалинско стандартно време7Сахали" + - "нско лятно часово време\x17Самара време0Самара – стандартно време3Самар" + - "а – лятно часово време\x1dСамоанско време2Самоанско стандартно време5Са" + - "моанско лятно часово време!Сейшелски острови!Сингапурско време#Соломоно" + - "ви острови\x19Южна Джорджия\x1fСуринамско време\x08Шова\x1dТаитянско вр" + - "еме\x0aТайпе.Тайпе – стандартно време1Тайпе – лятно часово време'Таджик" + - "истанско време\x0eТокелау\x0aТонга.Тонга – стандартно време1Тонга – лят" + - "но часово време\x08Чуюк)Туркменистанско време>Туркменистанско стандартн" + - "о времеAТуркменистанско лятно часово време\x0cТувалу\x1fУругвайско врем" + - "е4Уругвайско стандартно време7Уругвайско лятно часово време%Узбекистанс" + - "ко време:Узбекистанско стандартно време=Узбекистанско лятно часово врем" + - "е\x0eВануату2Вануату – стандартно време5Вануату – лятно часово време!Ве" + - "нецуелско време'Владивостокско време<Владивостокско стандартно време?Вл" + - "адивостокско лятно часово време#Волгоградско време8Волгоградско стандар" + - "тно време;Волгоградско лятно часово време\x0cВосток\x15Остров Уейк\x1aУ" + - "олис и Футуна\x19Якутско време2Якутскско стандартно време5Якутскско лят" + - "но часово време)Екатеринбургско време>Екатеринбургско стандартно времеA" + - "Екатеринбургско лятно часово време\x02AD\x02AD\x04Ngat\x03Taa\x03Iwo" + - "\x03Mam\x03Paa\x03Nge\x03Roo\x03Bur\x03Epe\x03Kpt\x03Kpa\x02AD\x06н.е." + - "\x03Jtt\x03Jnn\x03Jtn\x03Alh\x03Iju\x03Jmo\x03Ati\x03Ata\x03Ala\x03Alm" + - "\x03Alz\x03Asi\x02AD\x10джайстха\x0eшравана\x0cбхадра\x0cасвіна\x0eкарті" + - "ка\x12аграхаяна\x0aпауса\x10фальгуна" - -var bucket10 string = "" + // Size: 24060 bytes - "\x03zan\x03feb\x03mar\x03awi\x03mɛ\x03zuw\x03zul\x03uti\x04sɛt\x04ɔku" + - "\x03now\x03des\x07zanwuye\x08feburuye\x06marisi\x07awirili\x06zuwɛn\x06z" + - "uluye\x0asɛtanburu\x0bɔkutɔburu\x09nowanburu\x09desanburu\x01Z\x01F\x01M" + - "\x01A\x01U\x01S\x02Ɔ\x01N\x01D\x03kar\x04ntɛ\x03tar\x03ara\x03ala\x03jum" + - "\x03sib\x04kari\x07ntɛnɛ\x06tarata\x05araba\x07alamisa\x04juma\x06sibiri" + - "\x03KS1\x03KS2\x03KS3\x03KS4\x10kalo saba fɔlɔ\x11kalo saba filanan\x11k" + - "alo saba sabanan\x12kalo saba naaninan\x11jezu krisiti ɲɛ\x13jezu krisit" + - "i minkɛ\x0aJ.-C. ɲɛ\x08ni J.-C.\x04tile\x03san\x04kalo\x09dɔgɔkun\x03don" + - "\x04kunu\x02bi\x04sini\x15sɔgɔma/tile/wula/su\x06lɛrɛ\x06miniti\x07sekon" + - "di\x0esigikun tilena\x06জা\x06ফে\x06মা\x03এ\x06মে\x09জুন\x06জু\x03আ\x06স" + - "ে\x03অ\x03ন\x06ডি\x1bজানুয়ারী!ফেব্রুয়ারী\x0fমার্চ\x12এপ্রিল\x0fজুলাই" + - "\x0fআগস্ট\x1eসেপ্টেম্বর\x15অক্টোবর\x15নভেম্বর\x18ডিসেম্বর\x09রবি\x09সোম" + - "\x0fমঙ্গল\x09বুধ\x18বৃহস্পতি\x0fশুক্র\x09শনি\x03র\x06সো\x03ম\x06বু\x06বৃ" + - "\x06শু\x03শ\x06রঃ\x09সোঃ\x06মঃ\x09বুঃ\x09বৃঃ\x09শুঃ\x09শোঃ\x12রবিবার\x12" + - "সোমবার\x18মঙ্গলবার\x12বুধবার!বৃহস্পতিবার\x18শুক্রবার\x12শনিবার!বৃহষ্পত" + - "িবার\x03১\x03২\x03৩\x03৪\x1bত্রৈমাসিক4দ্বিতীয় ত্রৈমাসিক.তৃতীয় ত্রৈমা" + - "সিক.চতুর্থ ত্রৈমাসিক\x09ভোর\x0cসকাল\x0fদুপুর\x0fবিকাল\x15সন্ধ্যা\x12রা" + - "ত্রি$খ্রিস্টপূর্ব0খ্রিষ্টপূর্বাব্দ\x1bখৃষ্টাব্দ!খ্রিষ্টাব্দ\x0fচৈত্র" + - "\x0fবৈশাখ\x15জৈষ্ঠ্য\x0fআষাঢ়\x12শ্রাবণ\x0fভাদ্র\x12আশ্বিন\x15কার্তিক" + - "\x1bঅগ্রহায়ণ\x09পৌষ\x09মাঘ\x15ফাল্গুন\x03৫\x03৬\x03৭\x03৮\x03৯\x06১০" + - "\x06১১\x06১২\x09সাল\x0fমহররম\x09সফর\x22রবিউল আউয়াল\x1cরবিউস সানি(জমাদিউ" + - "ল আউয়াল\x22জমাদিউস সানি\x09রজব\x12শা‘বান\x0fরমজান\x15শাওয়াল\x15জ্বিল" + - "কদ\x1bজ্বিলহজ্জ\x09বছর\x10গত বছর\x10এই বছর\x16পরের বছর\x10{0} বছরে {0}" + - " বছর পূর্বে\x22গত ত্রৈমাসিক\x22এই ত্রৈমাসিক(পরের ত্রৈমাসিক\x22{0} ত্রৈমা" + - "সিকে){0} ত্রৈমাসিক আগে\x09মাস\x10গত মাস\x10এই মাস\x16পরের মাস\x10{0} ম" + - "াসে\x17{0} মাস আগে\x19গত সপ্তাহ\x19এই সপ্তাহ\x1fপরের সপ্তাহ\x19{0} সপ্" + - "তাহে {0} সপ্তাহ আগে\x16{0} সপ্তাহ {0} এর সপ্তাহে\x13গত পরশু\x0fগতকাল" + - "\x06আজ\x18আগামীকাল\x1cআগামী পরশু#{0} দিনের মধ্যে\x17{0} দিন আগে\x22সপ্তা" + - "হের দিন\x19গত রবিবার\x19এই রবিবার\x1fপরের রবিবার\x1f{0} রবিবারেতে {0} " + - "রবিবার আগে\x19গত সোমবার\x19এই সোমবার\x1fপরের সোমবার\x1f{0} সোমবারেতে {" + - "0} সোমবার আগে\x1fগত মঙ্গলবার\x1fএই মঙ্গলবার%পরের মঙ্গলবার\x1f{0} মঙ্গলবা" + - "রে&{0} মঙ্গলবার আগে\x19গত বুধবার\x19এই বুধবার\x1fপরের বুধবার\x19{0} বু" + - "ধবারে {0} বুধবার আগে(গত বৃহস্পতিবার(এই বৃহস্পতিবার.পরের বৃহস্পতিবার({0" + - "} বৃহস্পতিবারে/{0} বৃহস্পতিবার আগে\x1fগত শুক্রবার\x1fএই শুক্রবার%পরের শু" + - "ক্রবার\x1f{0} শুক্রবারে&{0} শুক্রবার আগে\x19গত শনিবার\x19এই শনিবার\x1f" + - "পরের শনিবার\x19{0} শনিবারে {0} শনিবার আগে\x0fঘন্টা\x1cএই ঘণ্টায়\x19{0" + - "} ঘন্টায়\x1d{0} ঘন্টা আগে\x16এই মিনিট\x16{0} মিনিটে\x1d{0} মিনিট আগে&{0" + - "} মিনিট পূর্বে\x15সেকেন্ড\x09এখন\x1c{0} সেকেন্ডে,{0} সেকেন্ড পূর্বে#{0} " + - "সেকেন্ড আগে\x1cসময় অঞ্চল\x10{0} সময়&{0} দিবালোক সময়\x1d{0} মানক সময" + - "়Mস্থানাংকিত আন্তর্জাতিক সময়Gব্রিটিশ গ্রীষ্মকালীন সময়)আইরিশ মানক সময" + - "়\x16একর সময়#একর মানক সময়5একর গ্রীষ্মকাল সময়.আফগানিস্তান সময়/মধ্য " + - "আফ্রিকা সময়2পূর্ব আফ্রিকা সময়Bদক্ষিণ আফ্রিকা মানক সময়5পশ্চিম আফ্রিক" + - "া সময়Bপশ্চিম আফ্রিকা মানক সময়Zপশ্চিম আফ্রিকা গ্রীষ্মকালীন সময়\x22আল" + - "াস্কা সময়/আলাস্কা মানক সময়8আলাস্কা দিবালোক সময়\x22আল্মাটি সময়/আল্ম" + - "াটি মানক সময়Aআল্মাটি গ্রীষ্মকাল সময়%অ্যামাজন সময়)আমাজন মানক সময়Jঅ্" + - "যামাজন গ্রীষ্মকালীন সময়+কেন্দ্রীয় সময়8কেন্দ্রীয় মানক সময়Aকেন্দ্রী" + - "য় দিবালোক সময়4পূর্বাঞ্চলীয় সময়Dপূর্বাঞ্চলের প্রমাণ সময়Gপূর্বাঞ্চল" + - "ের দিবালোক সময়;পার্বত্য অঞ্চলের সময়Nপার্বত্য অঞ্চলের প্রমাণ সময়Kপার" + - "্বত্য অঞ্চলের দিনের সময়Zপ্রশান্ত মহাসাগরীয় অঞ্চলের সময়gপ্রশান্ত মহা" + - "সাগরীয় অঞ্চলের মানক সময়jপ্রশান্ত মহাসাগরীয় অঞ্চলের দিনের সময়%অনদ্য" + - "্র্ সময়2অনদ্য্র্ মানক সময়Jঅনদ্য্র্ গ্রীষ্মকালীন সময়\x1fঅপিয়া সময়," + - "অপিয়া মানক সময়/অপিয়া দিনের সময়\x1cআকটাও সময়)আকটাও মানক সময়;আকটাও" + - " গ্রীষ্মকাল সময়\x1cআকটোব সময়)আকটোব মানক সময়;আকটোব গ্রীষ্মকাল সময়\x19" + - "আরবি সময়&আরবি মানক সময়/আরবি দিবালোক সময়+আর্জেনটিনা সময়8আর্জেনটিনা " + - "মানক সময়Pআর্জেনটিনা গ্রীষ্মকালীন সময়Dপশ্চিমি আর্জেন্টিনা সময়Wপশ্চিম" + - "ি আর্জেনটিনার প্রমাণ সময়`পশ্চিমি আর্জেনটিনা গৃষ্মকালীন সময়+আর্মেনিয়" + - "া সময়8আর্মেনিয়া মানক সময়Pআর্মেনিয়া গ্রীষ্মকালীন সময়.অতলান্তিকের স" + - "ময়5অতলান্তিক মানক সময়>অতলান্তিক দিবালোক সময়Mকেন্দ্রীয় অস্ট্রেলীয় " + - "সময়Zঅস্ট্রেলীয় কেন্দ্রীয় মানক সময়cঅস্ট্রেলীয় কেন্দ্রীয় দিবালোক স" + - "ময়cঅস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি সময়pঅস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি" + - " মানক সময়yঅস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি দিবালোক সময়>পূর্ব অস্ট্রেলীয়" + - " সময়Kঅস্ট্রেলীয় পূর্ব মানক সময়Tঅস্ট্রেলীয় পূর্ব দিবালোক সময়Dপশ্চিমি" + - " অস্ট্রেলীয় সময়Qঅস্ট্রেলীয় পশ্চিমি মানক সময়Zঅস্ট্রেলীয় পশ্চিমি দিবা" + - "লোক সময়+আজারবাইজান সময়8আজারবাইজান মানক সময়Pআজারবাইজান গ্রীষ্মকালীন " + - "সময়\x1fএজোরেস সময়,এজোরেস মানক সময়Dএজোরেস গ্রীষ্মকালীন সময়%বাংলাদেশ" + - " সময়2বাংলাদেশ মানক সময়Jবাংলাদেশ গ্রীষ্মকালীন সময়\x1cভুটান সময়(বোলিভি" + - "য়া সময়.ব্রাসিলিয়া সময়;ব্রাসিলিয়া মানক সময়Sব্রাসিলিয়া গ্রীষ্মকাল" + - "ীন সময়Aব্রুনেই দারুসসালাম সময়&কেপ ভার্দ সময়3কেপ ভার্দ মানক সময়Kকেপ" + - " ভার্দ গ্রীষ্মকালীন সময়,চামেরো মানক সময়\x22চ্যাথাম সময়/চ্যাথাম মানক স" + - "ময়8চ্যাথাম দিবালোক সময়\x19চিলি সময়&চিলি মানক সময়8চিলি গ্রীষ্মকাল স" + - "ময়\x16চীন সময়#চীন মানক সময়,চীন দিবালোক সময়%চয়বালসন সময়2চয়বালসন " + - "মানক সময়Jচয়বালসন গ্রীষ্মকালীন সময়5ক্রিসমাস দ্বীপ সময়;কোকোস দ্বীপপু" + - "ঞ্জ সময়.কোলোম্বিয়া সময়;কোলোম্বিয়া মানক সময়Sকোলোম্বিয়া গ্রীষ্মকাল" + - "ীন সময়5কুক দ্বীপপুঞ্জ সময়Bকুক দ্বীপপুঞ্জ মানক সময়mকুক দ্বীপপুঞ্জ অর" + - "্ধেক গ্রীষ্মকালীন সময়\x1fকিউবার সময়)কিউবা মানক সময়2কিউবা দিবালোক সম" + - "য়\x1cডেভিস সময়>ডুমন্ট-দ্য’উরভিলে সময়)পূর্ব টিমর সময়/ইস্টার দ্বীপ স" + - "ময়<ইস্টার দ্বীপ মানক সময়Tইস্টার দ্বীপ গ্রীষ্মকালীন সময়%ইকুয়েডর সময" + - "়/মধ্য ইউরোপের সময়<মধ্য ইউরোপের মানক সময়Tমধ্য ইউরোপের গ্রীষ্মকালীন স" + - "ময়2পূর্ব ইউরোপের সময়?পূর্ব ইউরোপের মানক সময়Wপূর্ব ইউরোপের গ্রীষ্মকা" + - "লীন সময়Nঅতিরিক্ত-পূর্ব ইউরোপীয় সময়5পশ্চিম ইউরোপের সময়Bপশ্চিম ইউরোপ" + - "ের মানক সময়Zপশ্চিম ইউরোপের গ্রীষ্মকালীন সময়Gফকল্যান্ড দ্বীপপুঞ্জ সময" + - "়Tফকল্যান্ড দ্বীপপুঞ্জ মানক সময়lফকল্যান্ড দ্বীপপুঞ্জ গ্রীষ্মকালীন সময" + - "়\x19ফিজি সময়&ফিজি মানক সময়>ফিজি গ্রীষ্মকালীন সময়2ফরাসি গায়ানা সময" + - "়[ফরাসি দক্ষিণ এবং আন্টার্কটিক সময়(গালাপাগোস সময়1গ্যাম্বিয়ার সময়%জ" + - "র্জিয়া সময়2জর্জিয়া মানক সময়Jজর্জিয়া গ্রীষ্মকালীন সময়Dগিলবার্ট দ্" + - "বীপপুঞ্জ সময়,গ্রীনিচ মিন টাইমAপূর্ব গ্রীনল্যান্ড সময়Nপূর্ব গ্রীনল্যা" + - "ন্ড মানক সময়fপূর্ব গ্রীনল্যান্ড গ্রীষ্মকালীন সময়Dপশ্চিম গ্রীনল্যান্ড" + - " সময়Qপশ্চিম গ্রীনল্যান্ড মানক সময়iপশ্চিম গ্রীনল্যান্ড গ্রীষ্মকালীন সময" + - "়)গুয়াম মান সময়5উপসাগরীয় মানক সময়\x22গুয়ানা সময়Jহাওয়াই অ্যালিউট" + - "িয়ান সময়?হাওয়াই-আলেউত মানক সময়Hহাওয়াই-আলেউত দিবালোক সময়\x1aহং কং" + - " সময়'হং কং মানক সময়?হং কং গ্রীষ্মকালীন সময়\x19হোভড সময়&হোভড মানক সময" + - "়>হোভড গ্রীষ্মকালীন সময়/ভারতীয় মানক সময়8ভারত মহাসাগরীয় সময়%ইন্দোচ" + - "ীন সময়Pকেন্দ্রীয় ইন্দোনেশিয়া সময়Aপূর্ব ইন্দোনেশিয়া সময়Gপশ্চিমী ই" + - "ন্দোনেশিয়া সময়\x19ইরান সময়&ইরান মানক সময়/ইরান দিবালোক সময়%ইরকুটস্" + - "ক সময়2ইরকুটস্ক মানক সময়Jইরকুটস্ক গ্রীষ্মকালীন সময়%ইজরায়েল সময়2ইজর" + - "ায়েল মানক সময়;ইজরায়েল দিবালোক সময়\x1cজাপান সময়)জাপান মানক সময়2জা" + - "পান দিবালোক সময়fপিত্রেপ্যাভলস্ক- ক্যামচ্যাটস্কি সময়pপিত্রেপ্যাভলস্ক-" + - " ক্যামচ্যাটস্কি মান সময়\x85পিত্রেপ্যাভলস্ক- ক্যামচ্যাটস্কি গৃষ্মকালীন স" + - "ময়Eপূর্ব কজাকস্তান মানক সময়Hপশ্চিম কজাকস্তান মানক সময়%কোরিয়ান সময়" + - "2কোরিয়ান মানক সময়;কোরিয়ান দিবালোক সময়\x1fকোসরেই সময়=ক্রাসনোয়ার্স্ক" + - "ি সময়Jক্রাসনোয়ার্স্কি মানক সময়bক্রাসনোয়ার্স্কি গ্রীষ্মকালীন সময়+ক" + - "িরগিস্তান সময়\x1cলঙ্কা সময়8লাইন দ্বীপপুঞ্জ সময়,লর্ড হাওয়ে সময়9লর্" + - "ড হাওয়ে মানক মসয়Bলর্ড হাওয়ে দিবালোক মসয়\x1cমাকাও সময়&মাকাও মান সম" + - "য়;মাকাও গ্রীষ্মকাল সময়8ম্যাককুরি দ্বীপ সময়(ম্যাগাডান সময়5ম্যাগাডান" + - " মানক সময়Mম্যাগাডান গ্রীষ্মকালীন সময়.মালয়েশিয়া সময়%মালদ্বীপ সময়(মা" + - "র্কেসাস সময়Aমার্শাল দ্বীপপুঞ্জ সময়\x1fমরিশাস সময়,মরিশাস মানক সময়Dম" + - "রিশাস গ্রীষ্মকালীন সময়\x16মসন সময়Jউত্তরপশ্চিম মেক্সিকোর সময়Wউত্তরপশ" + - "্চিম মেক্সিকোর মানক সময়Zউত্তরপশ্চিম মেক্সিকোর দিনের সময়`মেক্সিকান প্" + - "রশান্ত মহাসাগরীয় সময়jমেক্সিকান প্রশান্ত মহসাগরীয় মানক সময়vমেক্সিকা" + - "ন প্রশান্ত মহাসাগরীয় দিবালোক সময়)উলান বাতোর সময়6উলান বাতোর মানক সময" + - "়Nউলান বাতোর গ্রীষ্মকালীন সময়\x1cমস্কো সময়)মস্কো মানক সময়Aমস্কো গ্র" + - "ীষ্মকালীন সময়(মায়ানমার সময়\x1cনাউরু সময়\x1cনেপাল সময়>নিউ ক্যালেডো" + - "নিয়া সময়Kনিউ ক্যালেডোনিয়া মানক সময়cনিউ ক্যালেডোনিয়া গ্রীষ্মকালীন " + - "সময়1নিউজিল্যান্ড সময়>নিউজিল্যান্ড মানক সময়Gনিউজিল্যান্ড দিবালোক সময" + - "়=নিউফাউন্ডল্যান্ড সময়Jনিউফাউন্ডল্যান্ড মানক সময়Sনিউফাউন্ডল্যান্ড দি" + - "বালোক সময়\x19নিউই সময়;নরফোক দ্বীপপুঞ্জ সময়Hফার্নান্দো ডি নোরোনহা সম" + - "য়Uফার্নান্দো ডি নোরোনহা মানক সময়mফার্নান্দো ডি নোরোনহা গ্রীষ্মকালীন " + - "সময়Kউত্তর মেরিন দ্বীপপুঞ্জ সময়4নোভোসিবির্স্ক সময়Aনোভোসিবির্স্ক মানক" + - " সময়Yনোভোসিবির্স্ক গ্রীষ্মকালীন সময়\x1cওমস্ক সময়)ওমস্ক মানক সময়Aওমস্" + - "ক গ্রীষ্মকালীন সময়(পাকিস্তান সময়5পাকিস্তান মানক সময়Mপাকিস্তান গ্রীষ" + - "্মকালীন সময়\x1cপালাউ সময়9পাপুয়া নিউ গিনি সময়.প্যারাগুয়ে সময়;প্যা" + - "রাগুয়ে মানক সময়Sপ্যারাগুয়ে গ্রীষ্মকালীন সময়\x19পেরু সময়&পেরু মানক" + - " সময়>পেরু গ্রীষ্মকালীন সময়%ফিলিপাইন সময়2ফিলিপাইন মানক সময়Jফিলিপাইন গ" + - "্রীষ্মকালীন সময়Aফোনিক্স দ্বীপপুঞ্জ সময়Fসেন্ট পিয়ের ও মিকেলন সময়Sসে" + - "ন্ট পিয়ের ও মিকেলন মানক সময়\\সেন্ট পিয়ের ও মিকেলন দিবালোক সময়.পিটক" + - "েয়ার্ন সময়\x1fপোনাপে সময়+পিয়ংইয়াং সময়+কিজিলোর্ডা সময়5কিজিলোর্ডা" + - " মান সময়Jকিজিলোর্ডা গ্রীষ্মকাল সময়(রিইউনিয়ন সময়\x1cরথেরা সময়\x22সাখ" + - "ালিন সময়/সাখালিন মানক সময়Gসাখালিন গ্রীষ্মকালীন সময়\x1fসামারা সময়)স" + - "ামারা মান সময়>সামারা গৃষ্মকালীন সময়\x22সামোয়া সময়/সামোয়া মানক সময" + - "়Aসামোয়া গৃষ্মকালীন সময়\x1fসেশেলস সময়5সিঙ্গাপুর মানক সময়;সলোমন দ্ব" + - "ীপপুঞ্জ সময়8দক্ষিণ জর্জিয়া সময়\x22সুরিনাম সময়(সায়োওয়া সময়\x1fতা" + - "হিতি সময়\x1fতাইপেই সময়,তাইপেই মানক সময়5তাইপেই দিবালোক সময়.তাজাখাস্" + - "তান সময়\x22টোকেলাউ সময়\x1fটোঙ্গা সময়,টোঙ্গা মানক সময়Dটোঙ্গা গ্রীষ্" + - "মকালীন সময়\x16চুক সময়7তুর্কমেনিস্তান সময়Dতুর্কমেনিস্তান মানক সময়\\" + - "তুর্কমেনিস্তান গ্রীষ্মকালীন সময়\x1fটুভালু সময়%উরুগুয়ে সময়2উরুগুয়ে" + - " মানক সময়Jউরুগুয়ে গ্রীষ্মকালীন সময়.উজবেকিস্তান সময়;উজবেকিস্তান মানক " + - "সময়Sউজবেকিস্তান গ্রীষ্মকালীন সময়(ভানুয়াতু সময়5ভানুয়াতু মানক সময়M" + - "ভানুয়াতু গ্রীষ্মকালীন সময়.ভেনেজুয়েলা সময়4ব্লাদিবোস্তোক সময়Aব্লাদি" + - "বোস্তোক মানক সময়Yব্লাদিবোস্তোক গ্রীষ্মকালীন সময়(ভলগোগ্রাড সময়5ভলগোগ" + - "্রাড মানক সময়Mভলগোগ্রাড গ্রীষ্মকালীন সময়\x19ভসটক সময়,ওয়েক দ্বীপ সম" + - "য়?ওয়ালিস এবং ফুটুনা সময়(য়াকুতস্ক সময়5য়াকুতস্ক মানক সময়Mয়াকুতস্" + - "ক গ্রীষ্মকালীন সময়=ইয়েকাতেরিনবুর্গ সময়Jইয়েকাতেরিনবুর্গ মানক সময়bই" + - "য়েকাতেরিনবুর্গ গ্রীষ্মকালীন সময়\x03fev\x03mar\x03avr\x02me\x03zin" + - "\x03zil\x03out\x03sep\x03okt\x03nov\x03des\x06wɛlɛ\x04sina" - -var bucket11 string = "" + // Size: 10148 bytes - "\x03IST6G སྤྱི་ལོ་y MMMMའི་ཚེས་d#G y ལོའི་MMMཚེས་d\x0cཟླ་༡\x0cཟླ་༢\x0cཟླ" + - "་༣\x0cཟླ་༤\x0cཟླ་༥\x0cཟླ་༦\x0cཟླ་༧\x0cཟླ་༨\x0cཟླ་༩\x0fཟླ་༡༠\x0fཟླ་༡༡" + - "\x0fཟླ་༡༢\x1eཟླ་བ་དང་པོ!ཟླ་བ་གཉིས་པ!ཟླ་བ་གསུམ་པ\x1eཟླ་བ་བཞི་པ\x1bཟླ་བ་ལྔ" + - "་པ!ཟླ་བ་དྲུག་པ!ཟླ་བ་བདུན་པ$ཟླ་བ་བརྒྱད་པ\x1eཟླ་བ་དགུ་པ\x1eཟླ་བ་བཅུ་པ-ཟླ" + - "་བ་བཅུ་གཅིག་པ-ཟླ་བ་བཅུ་གཉིས་པ!ཟླ་བ་དང་པོ་$ཟླ་བ་གཉིས་པ་$ཟླ་བ་གསུམ་པ་!ཟླ" + - "་བ་བཞི་པ་\x1eཟླ་བ་ལྔ་པ་$ཟླ་བ་དྲུག་པ་$ཟླ་བ་བདུན་པ་'ཟླ་བ་བརྒྱད་པ་!ཟླ་བ་ད" + - "གུ་པ་!ཟླ་བ་བཅུ་པ་0ཟླ་བ་བཅུ་གཅིག་པ་0ཟླ་བ་བཅུ་གཉིས་པ་\x0fཉི་མ་\x0fཟླ་བ་" + - "\x18མིག་དམར་\x12ལྷག་པ་\x15ཕུར་བུ་\x12པ་སངས་\x15སྤེན་པ་\x06ཉི\x06ཟླ\x09མི" + - "ག\x09ལྷག\x09ཕུར\x09སངས\x0cསྤེན\x1bགཟའ་ཉི་མ་\x1bགཟའ་ཟླ་བ་$གཟའ་མིག་དམར་" + - "\x1eགཟའ་ལྷག་པ་!གཟའ་ཕུར་བུ་\x1eགཟའ་པ་སངས་!གཟའ་སྤེན་པ་-དུས་ཚིགས་དང་པོ།0དུས" + - "་ཚིགས་གཉིས་པ།0དུས་ཚིགས་གསུམ་པ།-དུས་ཚིགས་བཞི་པ།\x15སྔ་དྲོ་\x18ཕྱི་དྲོ་'" + - "སྤྱི་ལོ་སྔོན་\x18སྤྱི་ལོ་\x22y MMMMའི་ཚེས་d, EEEE4སྤྱི་ལོ་y MMMMའི་ཚེས" + - "་d!y ལོའི་MMMཚེས་d\x15ལོ་རིམ།\x09ལོ།\x1bགཟའ་འཁོར།\x0cཉིན།\x15ཁས་ཉིན་" + - "\x0fཁས་ས་\x15དེ་རིང་\x15སང་ཉིན་\x1bགནངས་ཉིན་'གཟའ་འཁོར་གཅིག.སྔ་དྲོ། ཕྱི་ད" + - "ྲོ།\x15ཆུ་ཚོད་\x12སྐར་མ།\x12སྐར་ཆ།\x18དུས་ཚོད།\x04Gen.\x07Cʼhwe.\x05Me" + - "ur.\x04Ebr.\x03Mae\x05Mezh.\x05Goue.\x04Eost\x05Gwen.\x04Here\x02Du\x04K" + - "zu.\x0201\x0202\x0203\x0204\x0205\x0206\x0207\x0208\x0209\x0210\x0211" + - "\x0212\x06Genver\x0aCʼhwevrer\x06Meurzh\x05Ebrel\x08Mezheven\x06Gouere" + - "\x08Gwengolo\x05Kerzu\x04Ker.\x03Sul\x03Lun\x04Meu.\x04Mer.\x04Yaou\x04G" + - "we.\x04Sad.\x02Su\x01L\x02Mz\x02Mc\x01Y\x01G\x02Sa\x09Mercʼher\x06Gwener" + - "\x06Sadorn\x0a1añ trim.\x082l trim.\x083e trim.\x084e trim.\x0e1añ trimi" + - "ziad\x0c2l trimiziad\x0c3e trimiziad\x0c4e trimiziad\x04A.M.\x04G.M.\x02" + - "gm\x12a-raok Jezuz-Krist\x11goude Jezuz-Krist\x0ba-raok J.K.\x0agoude J." + - "K.\x0c{1} 'da' {0}\x14a-raok Republik Sina\x0dRepublik Sina\x0ba-raok R." + - "S.\x04R.S.\x09amzervezh\x05bloaz\x07warlene\x07hevlene\x0ear bloaz a zeu" + - "\x10a-benn {0} bloaz\x10a-benn {0} vloaz\x16a-benn {0} a vloazioù\x0c{0}" + - " bloaz zo\x0c{0} vloaz zo\x12{0} a vloazioù zo\x03bl.\x0car bl. a zeu" + - "\x0ea-benn {0} bl.\x0a{0} bl. zo\x08+{0} bl.\x08-{0} bl.\x09trimiziad" + - "\x14a-benn {0} trimiziad\x14a-benn {0} drimiziad\x14a-benn {0} zrimiziad" + - "\x19a-benn {0} a drimiziadoù\x10{0} trimiziad zo\x10{0} drimiziad zo\x10" + - "{0} zrimiziad zo\x15{0} a zrimiziadoù zo\x05trim.\x10a-benn {0} trim." + - "\x0c{0} trim. zo\x0a+{0} trim.\x0a-{0} trim.\x03miz\x0ear miz diaraok" + - "\x0bar miz-mañ\x0car miz a zeu\x0ea-benn {0} miz\x0ea-benn {0} viz\x14a-" + - "benn {0} a vizioù\x0a{0} miz zo\x0a{0} viz zo\x10{0} a vizioù zo\x08+{0}" + - " miz\x08-{0} miz\x06sizhun\x11ar sizhun diaraok\x0ear sizhun-mañ\x0far s" + - "izhun a zeu\x11a-benn {0} sizhun\x17a-benn {0} a sizhunioù\x0d{0} sizhun" + - " zo\x13{0} a sizhunioù zo\x04deiz\x11dercʼhent-decʼh\x06decʼh\x05hiziv" + - "\x0bwarcʼhoazh\x0fa-benn {0} deiz\x0fa-benn {0} zeiz\x15a-benn {0} a zei" + - "zioù\x0b{0} deiz zo\x0b{0} zeiz zo\x11{0} a zeizioù zo\x0ca-benn {0} d" + - "\x08{0} d zo\x0edeiz ar sizhun\x0fDisul diwezhañ\x0bar Sul-mañ\x0bDisul " + - "a zeu\x0dSul diwezhañ\x08Sul-mañ\x09Sul a zeu\x0cSu diwezhañ\x07Su-mañ" + - "\x08Su a zeu\x0fDilun diwezhañ\x0bal Lun-mañ\x0bDilun a zeu\x0dLun diwez" + - "hañ\x08Lun-mañ\x09Lun a zeu\x0bL diwezhañ\x06L-mañ\x07L a zeu\x12Dimeurz" + - "h diwezhañ\x0ear Meurzh-mañ\x0eDimeurzh a zeu\x0eMeu. diwezhañ\x09Meu.-m" + - "añ\x0aMeu. a zeu\x0cMz diwezhañ\x07Mz-mañ\x08Mz a zeu\x15Dimercʼher diwe" + - "zhañ\x11ar Mercʼher-mañ\x11Dimercʼher a zeu\x0eMer. diwezhañ\x09Mer.-mañ" + - "\x0aMer. a zeu\x0cMc diwezhañ\x07Mc-mañ\x08Mc a zeu\x11Diriaou diwezhañ" + - "\x0car Yaou-mañ\x0dDiriaou a zeu\x0eYaou diwezhañ\x09Yaou-mañ\x0aYaou a " + - "zeu\x0bY diwezhañ\x06Y-mañ\x12Digwener diwezhañ\x0ear Gwener-mañ\x0eDigw" + - "ener a zeu\x0eGwe. diwezhañ\x09Gwe.-mañ\x0aGwe. a zeu\x0bG diwezhañ\x06G" + - "-mañ\x07G a zeu\x12Disadorn diwezhañ\x0ear Sadorn-mañ\x0eDisadorn a zeu" + - "\x0eSad. diwezhañ\x09Sad.-mañ\x0aSad. a zeu\x0cSa diwezhañ\x07Sa-mañ\x08" + - "Sa a zeu\x05AM/GM\x03eur\x0ea-benn {0} eur\x14a-benn {0} a eurioù\x0a{0}" + - " eur zo\x10{0} a eurioù zo\x01e\x0ca-benn {0} e\x08{0} e zo\x05munut\x10" + - "a-benn {0} munut\x10a-benn {0} vunut\x15a-benn {0} a vunutoù\x0c{0} munu" + - "t zo\x0c{0} vunut zo\x11{0} a vunutoù zo\x03min\x0ea-benn {0} min\x0a{0}" + - " min zo\x06eilenn\x07bremañ\x11a-benn {0} eilenn\x16a-benn {0} a eilenno" + - "ù\x0d{0} eilenn zo\x05brem.\x0ca-benn {0} s\x08{0} s zo\x09takad eur" + - "\x07eur {0}\x0deur hañv {0}\x11eur cʼhoañv {0}\x15eur hañv Breizh-Veur" + - "\x16eur cʼhoañv Iwerzhon\x0feur Afghanistan\x0feur Kreizafrika\x13eur Af" + - "rika ar Reter\x16eur cʼhoañv Suafrika\x18eur Afrika ar Cʼhornôg\x22eur c" + - "ʼhoañv Afrika ar Cʼhornôg\x1eeur hañv Afrika ar Cʼhornôg\x0aeur Alaska" + - "\x14eur cʼhoañv Alaska\x10eur hañv Alaska\x0aeur Almaty\x14eur cʼhoañv A" + - "lmaty\x10eur hañv Almaty\x0deur an Amazon\x17eur cʼhoañv an Amazon\x13eu" + - "r hañv an Amazon\x0ceur ar Reter\x16eur cʼhoañv ar Reter\x12eur hañv ar " + - "Reter\x10eur ar Menezioù\x1aeur cʼhoañv ar Menezioù\x16eur hañv ar Menez" + - "ioù\x0ceur Anadyrʼ\x16eur cʼhoañv Anadyrʼ\x12eur hañv Anadyrʼ\x08eur Api" + - "a\x12eur cʼhoañv Apia\x0eeur hañv Apia\x0aeur Arabia\x14eur cʼhoañv Arab" + - "ia\x10eur hañv Arabia\x10eur Arcʼhantina\x1aeur cʼhoañv Arcʼhantina\x16e" + - "ur hañv Arcʼhantina\x1eeur Arcʼhantina ar Cʼhornôg(eur cʼhoañv Arcʼhanti" + - "na ar Cʼhornôg$eur hañv Arcʼhantina ar Cʼhornôg\x0beur Armenia\x15eur cʼ" + - "hoañv Armenia\x11eur hañv Armenia\x12eur Kreizaostralia\x1ceur cʼhoañv K" + - "reizaostralia\x18eur hañv Kreizaostralia eur Kreizaostralia ar Cʼhornôg*" + - "eur cʼhoañv Kreizaostralia ar Cʼhornôg&eur hañv Kreizaostralia ar Cʼhorn" + - "ôg\x16eur Aostralia ar Reter eur cʼhoañv Aostralia ar Reter\x1ceur hañv" + - " Aostralia ar Reter\x1beur Aostralia ar Cʼhornôg%eur cʼhoañv Aostralia a" + - "r Cʼhornôg!eur hañv Aostralia ar Cʼhornôg\x0feur Azerbaidjan\x19eur cʼho" + - "añv Azerbaidjan\x15eur hañv Azerbaidjan\x0deur an Azorez\x17eur cʼhoañv " + - "an Azorez\x13eur hañv an Azorez\x0eeur Bangladesh\x18eur cʼhoañv Banglad" + - "esh\x14eur hañv Bangladesh\x0beur Bhoutan\x0beur Bolivia\x0deur Brasília" + - "\x17eur cʼhoañv Brasília\x13eur hañv Brasília\x15eur Brunei Darussalam" + - "\x12eur ar Cʼhab-Glas\x1ceur cʼhoañv ar Cʼhab-Glas\x18eur hañv ar Cʼhab-" + - "Glas\x0beur Chatham\x15eur cʼhoañv Chatham\x11eur hañv Chatham\x09eur Ch" + - "ile\x13eur cʼhoañv Chile\x0feur hañv Chile\x08eur Sina\x12eur cʼhoañv Si" + - "na\x0eeur hañv Sina\x12eur Enez Christmas\x0feur Inizi Kokoz\x0ceur Kolo" + - "mbia\x16eur cʼhoañv Kolombia\x12eur hañv Kolombia\x0eeur Inizi Cook\x18e" + - "ur cʼhoañv Inizi Cook\x14eur hañv Inizi Cook\x08eur Kuba\x12eur cʼhoañv " + - "Kuba\x0eeur hañv Kuba\x12eur Timor ar Reter\x0deur Enez Pask\x17eur cʼho" + - "añv Enez Pask\x13eur hañv Enez Pask\x0beur Ecuador\x0feur Kreizeuropa" + - "\x19eur cʼhoañv Kreizeuropa\x15eur hañv Kreizeuropa\x13eur Europa ar Ret" + - "er\x1deur cʼhoañv Europa ar Reter\x19eur hañv Europa ar Reter\x18eur Eur" + - "opa ar Cʼhornôg\x22eur cʼhoañv Europa ar Cʼhornôg\x1eeur hañv Europa ar " + - "Cʼhornôg\x12eur Inizi Falkland\x1ceur cʼhoañv Inizi Falkland\x18eur hañv" + - " Inizi Falkland\x09eur Fidji\x13eur cʼhoañv Fidji\x0feur hañv Fidji\x12e" + - "ur Gwiana cʼhall*eur Douaroù aostral Frañs hag Antarktika\x14eur Inizi G" + - "alápagos\x0beur Gambier\x0aeur Jorjia\x14eur cʼhoañv Jorjia\x10eur hañv " + - "Jorjia\x1cAmzer keitat Greenwich (AKG)\x16eur Greunland ar Reter eur cʼh" + - "oañv Greunland ar Reter\x1ceur hañv Greunland ar Reter\x1beur Greunland " + - "ar Cʼhornôg%eur cʼhoañv Greunland ar Cʼhornôg!eur hañv Greunland ar Cʼho" + - "rnôg\x12eur cʼhoañv Guam&eur cʼhoañv ar Pleg-mor Arab-ha-Pers\x0aeur Guy" + - "ana\x0deur Hong Kong\x17eur cʼhoañv Hong Kong\x13eur hañv Hong Kong\x13e" + - "ur cʼhoañv India\x0eeur Indez-Sina\x16eur Indonezia ar Reter\x1beur Indo" + - "nezia ar Cʼhornôg\x08eur Iran\x12eur cʼhoañv Iran\x0eeur hañv Iran\x0beu" + - "r Irkutsk\x15eur cʼhoañv Irkutsk\x11eur hañv Irkutsk\x0aeur Israel\x14eu" + - "r cʼhoañv Israel\x10eur hañv Israel\x09eur Japan\x13eur cʼhoañv Japan" + - "\x0feur hañv Japan\x16eur Kazakstan ar Reter\x1beur Kazakstan ar Cʼhornô" + - "g\x09eur Korea\x13eur cʼhoañv Korea\x0feur hañv Korea\x0eeur Kyrgyzstan" + - "\x0deur Sri Lanka\x09eur Macau\x13eur cʼhoañv Macau\x0feur hañv Macau" + - "\x12eur Enez Macquarie\x0ceur Malaysia\x0feur ar Maldivez\x10eur Inizi M" + - "arkiz\x12eur Inizi Marshall\x09eur Moris\x13eur cʼhoañv Moris\x0feur hañ" + - "v Moris\x15eur Gwalarn Mecʼhiko\x1feur cʼhoañv Gwalarn Mecʼhiko\x1beur h" + - "añv Gwalarn Mecʼhiko\x0feur Ulaanbaatar\x19eur cʼhoañv Ulaanbaatar\x15eu" + - "r hañv Ulaanbaatar\x0aeur Moskov\x14eur cʼhoañv Moskov\x10eur hañv Mosko" + - "v\x0beur Myanmar\x09eur Nauru\x09eur Nepal\x13eur Kaledonia Nevez\x1deur" + - " cʼhoañv Kaledonia Nevez\x19eur hañv Kaledonia Nevez\x10eur Zeland-Nevez" + - "\x1aeur cʼhoañv Zeland-Nevez\x16eur hañv Zeland-Nevez\x10eur Newfoundlan" + - "d\x1aeur cʼhoañv Newfoundland\x16eur hañv Newfoundland\x08eur Niue\x10eu" + - "r Enez Norfolk\x0feur Novosibirsk\x19eur cʼhoañv Novosibirsk\x15eur hañv" + - " Novosibirsk\x0ceur Pakistan\x16eur cʼhoañv Pakistan\x12eur hañv Pakista" + - "n\x09eur Palau\x0ceur Paraguay\x16eur cʼhoañv Paraguay\x12eur hañv Parag" + - "uay\x09eur Perou\x13eur cʼhoañv Perou\x0feur hañv Perou\x10eur ar Filipi" + - "nez\x1aeur cʼhoañv ar Filipinez\x16eur hañv ar Filipinez\x18eur Sant-Pêr" + - "-ha-Mikelon\x22eur cʼhoañv Sant-Pêr-ha-Mikelon\x1eeur hañv Sant-Pêr-ha-M" + - "ikelon\x0ceur Pitcairn\x0feur ar Reünion\x0ceur Sakhalin\x16eur cʼhoañv " + - "Sakhalin\x12eur hañv Sakhalin\x09eur Samoa\x13eur cʼhoañv Samoa\x0feur h" + - "añv Samoa\x0ceur Sechelez\x17eur cʼhoañv Singapour\x11eur Inizi Salomon" + - "\x11eur Georgia ar Su\x0beur Surinam\x0aeur Tahiti\x0aeur Taipei\x14eur " + - "cʼhoañv Taipei\x10eur hañv Taipei\x0feur Tadjikistan\x0beur Tokelau\x09e" + - "ur Tonga\x13eur cʼhoañv Tonga\x0feur hañv Tonga\x10eur Turkmenistan\x1ae" + - "ur cʼhoañv Turkmenistan\x16eur hañv Turkmenistan\x0aeur Tuvalu\x0beur Ur" + - "uguay\x15eur cʼhoañv Uruguay\x11eur hañv Uruguay\x0feur Ouzbekistan\x19e" + - "ur cʼhoañv Ouzbekistan\x15eur hañv Ouzbekistan\x0beur Vanuatu\x15eur cʼh" + - "oañv Vanuatu\x11eur hañv Vanuatu\x0deur Venezuela\x0feur Vladivostok\x19" + - "eur cʼhoañv Vladivostok\x15eur hañv Vladivostok\x0deur Volgograd\x17eur " + - "cʼhoañv Volgograd\x13eur hañv Volgograd\x14eur Wallis ha Futuna\x0beur Y" + - "akutsk\x15eur cʼhoañv Yakutsk\x11eur hañv Yakutsk\x12eur Yekaterinbourg" + - "\x1ceur cʼhoañv Yekaterinbourg\x18eur hañv Yekaterinbourg\x04Llun\x03Maw" + - "\x03Mer\x03Iau\x04Gwen\x03Sad\x02Ll\x02Ma\x02Me\x02Ia\x02Gw\x03Gwe\x02Ll" + - "\x09མིར\x09སངྶ\x03Lun\x03Mth\x03Mhr\x03Yow\x0b+{0} trims.\x0b-{0} trims." + - "\x0210\x0211\x0212\x0213" - -var bucket12 string = "" + // Size: 20072 bytes - "\x11EEEE, MMMM d, y G\x0bMMMM d, y G\x0aMMM d, y G\x0cM/d/yy GGGGG\x18जा" + - "नुवारी\x1eफेब्रुवारी\x0fमार्स\x12एफ्रिल\x06मे\x09जुन\x0fजुलाइ\x0fआगस्थ" + - "\x1eसेबथेज्ब़र\x0fअखथबर\x18नबेज्ब़र\x1bदिसेज्ब़र\x03ज\x06फे\x06मा\x03ए" + - "\x06जु\x03आ\x06से\x03अ\x03न\x06दि\x09रबि\x06सम\x0cमंगल\x09बुद\x0fबिसथि" + - "\x0fसुखुर\x0cसुनि\x12रबिबार\x0fसमबार\x15मंगलबार\x12बुदबार\x18बिसथिबार" + - "\x18सुखुरबार\x15सुनिबार\x03र\x03स\x06मं\x06बु\x06बि\x06सुDसिथासे/खोन्दोस" + - "े/बाहागोसेAखावसे/खोन्दोनै/बाहागोनैJखावथाम/खोन्दोथाम/बाहागोथामNखावब्रै/" + - "खोन्दोब्रै/फुरा/आबुं\x09फुं\x12बेलासे\x19ईसा.पूर्व\x06सन\x0fEEEE, MMMM" + - " d, y\x09MMMM d, y\x08MMM d, y\x06M/d/yy\x22बैसागो/बैसाग\x0cजेथो\x0cआसार" + - "\x0fसावुन\x0fभाद्र\x0cआसिन\x0cखाथि\x12आगाह्न\x09फुस\x0cमागो\x0fफागुन\x0c" + - "सैथो\x0fजौथाय\x0fबोसोर\x09दान\x19सबथा/हबथा\x09सान\x0cमैया\x0cदिनै\x0fग" + - "ाबोन#सप्ताह के दिन\x1cफुं/बेलासे\x0fरिंगा\x0fमिनिथ\x15सेखेन्द\x0fओनसोल" + - ",ब्रीटीश समर टाईम&आईरीश समर टाईम\x16आकर टाईम2आकर स्टैंडर्ड टाईम आकर समर " + - "टाईम>अफ़गानी स्टैंडर्ड टाईमKमध्य अफ्रीका स्टैंडर्ड टाईमQपूर्वी अफ्रीका" + - " स्टैंडर्ड टाईमQदक्षिण अफ्रीका स्टैंडर्ड टाईम5पश्चीम अफ्रीका टाईमQपश्चीम" + - " अफ्रीका स्टैंडर्ड टाईम?पश्चीम अफ्रीका समर टाईम\x22अलास्का टाईम>अलास्का " + - "स्टैंडर्ड टाईम5अलास्का डेलाईट टाईम\x1fअलमाटी टाईम;अलमाटी स्टैंडर्ड टाई" + - "म)अलमाटी समर टाईम\x22अमाज़ोन टाईम>अमाज़ोन स्टैंडर्ड टाईम,अमाज़ोन समर ट" + - "ाईम5सैंट्रल अमरिका टाईमQसैंट्रल अमरिका स्टैंडर्ड टाईमHसैंट्रल अमरिका ड" + - "ेलाईट टाईम5ईस्टर्न अमरिका टाईमQईस्टर्न अमरिका स्टैंडर्ड टाईमHईस्टर्न अ" + - "मरिका डेलाईट टाईम5अमरिका माऊन्टन टाईमQअमरिका माऊन्टन स्टैंडर्ड टाईमHअम" + - "रिका माऊन्टन डेलाईट टाईम\x22पैसीफीक टाईम>पैसीफीक स्टैंडर्ड टाईम5पैसीफी" + - "क डेलाईट टाईम\x1fअनादीर टाईम;अनादीर स्टैंडर्ड टाईम)अनादीर समर टाईम\x22" + - "अक़्टाऊ टाईम>अक़्टाऊ स्टैंडर्ड टाईम,अक़्टाऊ समर टाईम%अक़्टोबे टाईमAअक़" + - "्टोबे स्टैंडर्ड टाईम/अक़्टोबे समर टाईम\x19अरबी टाईम5अरबी स्टैंडर्ड टाई" + - "म,अरबी डेलाईट टाईम(अर्जनटिना टाईमDअर्जनटिना स्टैंडर्ड टाईम5अर्जण्टिना " + - "समर टाईम>पश्चीम अर्जण्टिना टाईमZपश्चीम अर्जण्टिना स्टैंडर्ड टाईमHपश्ची" + - "म अर्जण्टिना समर टाईम\x1fआरमीनी टाईम;आरमीनी स्टैंडर्ड टाईम)आरमीनी समर " + - "टाईम%अटलांटीक टाईमAअटलांटीक स्टैंडर्ड टाईम8अटलांटीक डेलाईट टाईम.ओस्ट्र" + - "ेलिया टाईमWमध्य ओस्ट्रेलिया स्टैंडर्ड टाईमNमध्य ओस्ट्रेलिया डेलाईट टाई" + - "मNमध्य-पश्चीम ओस्ट्रेलिया टाईमjमध्य-पश्चीम ओस्ट्रेलिया स्टैंडर्ड टाईमa" + - "मध्य-पश्चीम ओस्ट्रेलिया डेलाईट टाईमAपूर्वी ओस्ट्रेलिया टाईम]पूर्वी ओस्" + - "ट्रेलिया स्टैंडर्ड टाईमTपूर्वी ओस्ट्रेलिया डेलाईट टाईमAदक्षिण ओस्ट्रेल" + - "िया टाईम]दक्षिण ओस्ट्रेलिया स्टैंडर्ड टाईमTदक्षिण ओस्ट्रेलिया डेलाईट ट" + - "ाईम(आज़रबैजान टाईमDआज़रबैजान स्टैंडर्ड टाईम2आज़रबैजान समर टाईम\x1cआज़ो" + - "र टाईम8आज़ोर स्टैंडर्ड टाईम&आज़ोर समर टाईम(बांगलादेश टाईमDबांगलादेश स्" + - "टैंडर्ड टाईम2बांगलादेश समर टाईम8भुटान स्टैंडर्ड टाईमAबोलिविया स्टैंडर्" + - "ड टाईम.ब्राज़ीलिया टाईमJब्राज़ीलिया स्टैंडर्ड टाईम8ब्राज़ीलिया समर टाई" + - "मYब्रुनेई दर उस सलाम स्टैंडर्ड टाईम)काप वेर्दे टाईमEकाप वेर्दे स्टैंडर" + - "्ड टाईम3काप वेर्दे समर टाईम8चामरो स्टैंडर्ड टाईम\x19चैथम टाईम5चैथम स्ट" + - "ैंडर्ड टाईम,चैथम डेलाईट टाईम\x19चीली टाईम5चीली स्टैंडर्ड टाईम#चीली समर" + - " टाईम\x1cचाईना टाईम8चाईना स्टैंडर्ड टाईम/चाईना डेलाईट टाईम(चोईबालसान टाई" + - "मDचोईबालसान स्टैंडर्ड टाईम2चोईबालसान समर टाईम>क्रीसमस स्टैंडर्ड टाईमEक" + - "ोको द्वीप स्टैंडर्ड टाईम%कोलंबिया टाईमAकोलंबिया स्टैंडर्ड टाईम/कोलंबिय" + - "ा समर टाईम&कुक द्वीप टाईमBकुक द्वीप स्टैंडर्ड टाईम=कुक द्वीप अर्ध समर " + - "टाईम\x1fक्युबा टाईम;क्युबा स्टैंडर्ड टाईम2क्युबा डेलाईट टाईम8डेवीस स्ट" + - "ैंडर्ड टाईमWड्युमों ड्युरवील स्टैंडर्ड टाईमEईस्ट टीमोर स्टैंडर्ड टाईम," + - "ईस्टर आईलंड टाईमHईस्टर आईलंड स्टैंडर्ड टाईम6ईस्टर आईलंड समर टाईमAएक्वा" + - "डौर स्टैंडर्ड टाईम)मध्य यूरोप टाईमEमध्य यूरोप स्टैंडर्ड टाईम3मध्य यूरो" + - "प समर टाईम2ईस्टर्न यूरोप टाईमNईस्टर्न यूरोप स्टैंडर्ड टाईम<ईस्टर्न यूर" + - "ोप समर टाईम5वेस्टर्न यूरोप टाईमQवेस्टर्न यूरोप स्टैंडर्ड टाईम?वेस्टर्न" + - " यूरोप समर टाईम.फ़ाल्कलैण्ड टाईमJफ़ाल्कलैण्ड स्टैंडर्ड टाईम8फ़ाल्कलैण्ड " + - "समर टाईम\x19फीजी टाईम5फीजी स्टैंडर्ड टाईम#फीजी समर टाईमZफ्रान्सीसी गुय" + - "ाना स्टैंडर्ड टाईमZदक्षिण फ्रान्सीसी स्टैंडर्ड टाईमDगालापागोस स्टैंडर्" + - "ड टाईम>गांबिये स्टैंडर्ड टाईम%जोर्जिया टाईमAजोर्जिया स्टैंडर्ड टाईम/जो" + - "र्जिया समर टाईमNगीलबर्ट द्वीप स्टैंडर्ड टाईम>ग्रीनीच स्टैंडर्ड टाईमAग्" + - "रीनलैण्ड ईस्टर्न टाईम]ग्रीनलैण्ड ईस्टर्न स्टैंडर्ड टाईमKग्रीनलैण्ड ईस्" + - "टर्न समर टाईमDग्रीनलैण्ड वेस्टर्न टाईम`ग्रीनलैण्ड वेस्टर्न स्टैंडर्ड ट" + - "ाईमNग्रीनलैण्ड वेस्टर्न समर टाईम5गुआम स्टैंडर्ड टाईम8गल्फ़ स्टैंडर्ड ट" + - "ाईम;गुयाना स्टैंडर्ड टाईम&हवाई आलटन टाईमBहवाई आलटन स्टैंडर्ड टाईम9हवाई" + - " आलटन डेलाईट टाईम%हाँगकॉंग टाईमAहाँगकॉंग स्टैंडर्ड टाईम/हाँगकॉंग समर टाई" + - "म\x1cहोव्ड टाईम8होव्ड स्टैंडर्ड टाईम&होव्ड समर टाईम;भारतीय स्टैंडर्ड ट" + - "ाईमNभारतीय महासगर स्टैंडर्ड टाईमBईंडो चइना स्टैंडर्ड टाईमGईंडोनीशिया स" + - "्टैंडर्ड टाईम]ईस्टर्न ईंडोनीशिया स्टैंडर्ड टाईम`वेस्टर्न ईंडोनीशिया स्" + - "टैंडर्ड टाईम\x19ईरान टाईम5ईरान स्टैंडर्ड टाईम,ईरान डेलाईट टाईम.ईरकुर्त" + - "्स्क टाईमJईरकुर्त्स्क स्टैंडर्ड टाईम8ईरकुर्त्स्क समर टाईम\x22ईस्राइल ट" + - "ाईम>ईस्राइल स्टैंडर्ड टाईम5ईस्राइल डेलाईट टाईम\x19जपान टाईम5जपान स्टैं" + - "डर्ड टाईम,जपान डेलाईट टाईमMपेत्रोपावलोस्क कामचटका टाईमiपेत्रोपावलोस्क " + - "कामचटका स्टैंडर्ड टाईमWपेत्रोपावलोस्क कामचटका समर टाईम1क़ज़ाख़स्तान टा" + - "ईमJवेस्टर्न क़ज़ाख़स्तान टाईम\x1fकोरिया टाईम;कोरिया स्टैंडर्ड टाईम2कोर" + - "िया डेलाईट टाईम8कोसरी स्टैंडर्ड टाईम7क्रासनोयार्स्क टाईमSक्रासनोयार्स्" + - "क स्टैंडर्ड टाईमAक्रासनोयार्स्क समर टाईमMक़ीर्ग़स्तान स्टैंडर्ड टाईम5ल" + - "ंका स्टैंडर्ड टाईमEलाईन द्वीप स्टैंडर्ड टाईम)लार्ड़ होव टाईमEलार्ड़ हो" + - "व स्टैंडर्ड टाईम<लार्ड़ होव डेलाईट टाईम\x1cमाकाऊ टाईम8माकाऊ स्टैंडर्ड " + - "टाईम&माकाऊ समर टाईम\x19मगदन टाईम5मगदन स्टैंडर्ड टाईम#मगदन समर टाईम>मले" + - "शिया स्टैंडर्ड टाईम;मालदीव स्टैंडर्ड टाईमGमार्केज़ास स्टैंडर्ड टाईमAमा" + - "र्शल र्स्टैंडर्ड टाईम%मॉरिशीयस टाईमAमॉरिशीयस स्टैंडर्ड टाईम/मॉरिशीयस स" + - "मर टाईम5मॉसन स्टैंडर्ड टाईम%मँगोलिया टाईमAमँगोलिया स्टैंडर्ड टाईम/मँगो" + - "लिया समर टाईम\x1fमॉस्को टाईम;मॉस्को स्टैंडर्ड टाईम)मॉस्को समर टाईमAम्य" + - "ानमार स्टैंडर्ड टाईम8नाऊरु स्टैंडर्ड टाईम8नेपाल स्टैंडर्ड टाईम8न्यु कै" + - "लेडोनिया टाईमTन्यु कैलेडोनिया स्टैंडर्ड टाईमBन्यु कैलेडोनिया समर टाईम1" + - "न्युज़ीलैण्ड टाईमMन्युज़ीलैण्ड स्टैंडर्ड टाईमDन्युज़ीलैण्ड डेलाईट टाईम" + - "7न्युफाऊंडलैण्ड टाईमSन्युफाऊंडलैण्ड स्टैंडर्ड टाईमJन्युफाऊंडलैण्ड डेलाईट" + - " टाईम5नीऊई स्टैंडर्ड टाईम;नॉरफोक स्टैंडर्ड टाईमEफेरनान्दो द नोरोन्हा टाई" + - "मaफेरनान्दो द नोरोन्हा स्टैंडर्ड टाईमOफेरनान्दो द नोरोन्हा समर टाईमNनॉ" + - "र्थ मारिआना स्टैंडर्ड टाईम4नोवोसीबीर्स्क टाईमPनोवोसीबीर्स्क स्टैंडर्ड " + - "टाईम>नोवोसीबीर्स्क समर टाईम\x1fओम्स्क टाईम;ओम्स्क स्टैंडर्ड टाईम)ओम्स्" + - "क समर टाईम(पाकिस्तान टाईमDपाकिस्तान स्टैंडर्ड टाईम2पाकिस्तान समर टाईम5" + - "पलाऊ स्टैंडर्ड टाईमRपापुआ न्यु गीनी स्टैंडर्ड टाईम\x22पारागुए टाईम>पार" + - "ागुए स्टैंडर्ड टाईम,पारागुए समर टाईम\x19पेरु टाईम5पेरु स्टैंडर्ड टाईम#" + - "पेरु समर टाईम(फीलीपीन्स टाईमDफीलीपीन्स स्टैंडर्ड टाईम2फीलीपीन्स समर टा" + - "ईमNफीनीक्स द्वीप स्टैंडर्ड टाईमCसेँ पीयॅर एवं मीकलों टाईम_सेँ पीयॅर एव" + - "ं मीकलों स्टैंडर्ड टाईमVसेँ पीयॅर एवं मीकलों डेलाईट टाईमAपीटकैर्न स्टै" + - "ंडर्ड टाईमVपोनापे (पोह्नपेई) स्टैंडर्ड टाईम1क़ीज़ीलोर्डा टाईमMक़ीज़ीलो" + - "र्डा स्टैंडर्ड टाईम;क़ीज़ीलोर्डा समर टाईमAरियूनियन स्टैंडर्ड टाईम;रोथे" + - "रा स्टैंडर्ड टाईम\x22सख़ालीन टाईम>सख़ालीन स्टैंडर्ड टाईम,सख़ालीन समर ट" + - "ाईम\x1cसमारा टाईम8समारा स्टैंडर्ड टाईम&समारा समर टाईम\x19समोआ टाईम5समो" + - "आ स्टैंडर्ड टाईम#समोआ समर टाईम>सेशेल्स स्टैंडर्ड टाईमAसींगापुर स्टैंडर" + - "्ड टाईम;सॉलॉमन स्टैंडर्ड टाईमNसाऊथ जॉर्जिया स्टैंडर्ड टाईम>सुरीनाम स्ट" + - "ैंडर्ड टाईम8सीओवा स्टैंडर्ड टाईम;टाहिटी स्टैंडर्ड टाईमMताजीक़ीस्तान स्" + - "टैंडर्ड टाईम;टोकेलौ स्टैंडर्ड टाईम\x1cटॉंगा टाईम8टॉंगा स्टैंडर्ड टाईम&" + - "टॉंगा समर टाईम8ट्रुक स्टैंडर्ड टाईम7तुर्कमेनीस्तान टाईमSतुर्कमेनीस्तान" + - " स्टैंडर्ड टाईमAतुर्कमेनीस्तान समर टाईम;तुवालु स्टैंडर्ड टाईम\x1fऊरुगुए " + - "टाईम;ऊरुगुए स्टैंडर्ड टाईम)ऊरुगुए समर टाईम4ऊज़्बेकिस्तान टाईमPऊज़्बेकि" + - "स्तान स्टैंडर्ड टाईम>ऊज़्बेकिस्तान समर टाईम\x1fवनुआटु टाईम;वनुआटु स्टै" + - "ंडर्ड टाईम)वनुआटु समर टाईमGवेनेज़ुएला स्टैंडर्ड टाईम4व्लादीवॉस्तॉक टाई" + - "मPव्लादीवॉस्तॉक स्टैंडर्ड टाईमGव्लादीवॉस्तॉक डेलाईट टाईम+वॉलगोग्राद टा" + - "ईमGवॉलगोग्राद स्टैंडर्ड टाईम5वॉलगोग्राद समर टाईम>वॉस्तॉक स्टैंडर्ड टाई" + - "मEवाके द्वीप स्टैंडर्ड टाईमXवालीस एवं फ़ुतुना स्टैंडर्ड टाईम(याकुट्स्क" + - " टाईमDयाकुट्स्क स्टैंडर्ड टाईम2याकुट्स्क समर टाईम:येकातेरीनाबुर्ग टाईमVय" + - "ेकातेरीनाबुर्ग स्टैंडर्ड टाईमDयेकातेरीनाबुर्ग समर टाईम\x06फ़\x03म\x06ज" + - "ू\x06सि\x06सो\x06गु\x06शु\x03श" - -var bucket13 string = "" + // Size: 13406 bytes - "\x09E, d.M.y.\x06d.M.y.\x13EEEE, dd. MMMM y. G\x0ddd. MMMM y. G\x0add.MM" + - ".y. G\x0edd.MM.y. GGGGG\x0b{1} 'u' {0}\x03jan\x03feb\x03mar\x03apr\x03ma" + - "j\x03jun\x03jul\x03avg\x03sep\x03okt\x03nov\x03dec\x06januar\x07februar" + - "\x04mart\x05april\x04juni\x04juli\x06avgust\x09septembar\x07oktobar\x08n" + - "ovembar\x08decembar\x03ned\x03pon\x03uto\x03sri\x04čet\x03pet\x03sub\x08" + - "nedjelja\x0bponedjeljak\x06utorak\x07srijeda\x09četvrtak\x05petak\x06sub" + - "ota\x021.\x022.\x023.\x024.\x0cPrvi kvartal\x0dDrugi kvartal\x0eTreći kv" + - "artal\x10Četvrti kvartal\x06ponoć\x0aprijepodne\x05podne\x07popodne\x06u" + - "jutro\x0cposlijepodne\x08navečer\x08po noći\x0eprije nove ere\x08nove er" + - "e\x08p. n. e.\x05n. e.\x07pr.n.e.\x02AD\x10EEEE, d. MMMM y.\x0ad. MMMM y" + - ".\x0ad. MMM. y.\x07d.M.yy.\x04muh.\x04saf.\x06rab. i\x07rab. ii\x08džum." + - " i\x09džum. ii\x06redž.\x04ša.\x04ram.\x04še.\x06zul-k.\x06zul-h.\x07muh" + - "arem\x05safer\x08rabiʻ i\x09rabiʻ ii\x0adžumade i\x0bdžumade ii\x07redže" + - "b\x08šaʻban\x07ramazan\x06ševal\x08zul-kade\x0azul-hidže\x0cprije R.O.C." + - "\x06R.O.C.\x06godina\x0eprošle godine\x0aove godine\x10sljedeće godine" + - "\x0dza {0} godinu\x0dza {0} godine\x0dza {0} godina\x10prije {0} godinu" + - "\x10prije {0} godine\x10prije {0} godina\x04god.\x0bza {0} god.\x0eprije" + - " {0} god.\x02g.\x09za {0} g.\x0cprije {0} g.\x07kvartal\x12posljednji kv" + - "artal\x0covaj kvartal\x11sljedeći kvartal\x0eza {0} kvartal\x0fza {0} kv" + - "artala\x11prije {0} kvartal\x12prije {0} kvartala\x08-{0} kv.\x03kv.\x0a" + - "za {0} kv.\x0dprije {0} kv.\x06mjesec\x0eprošli mjesec\x0bovaj mjesec" + - "\x10sljedeći mjesec\x0dza {0} mjesec\x0eza {0} mjeseca\x0eza {0} mjeseci" + - "\x10prije {0} mjesec\x11prije {0} mjeseca\x11prije {0} mjeseci\x03mj." + - "\x0aza {0} mj.\x0dprije {0} mj.\x07sedmica\x0fprošle sedmice\x0bove sedm" + - "ice\x11sljedeće sedmice\x0eza {0} sedmicu\x0eza {0} sedmice\x0eza {0} se" + - "dmica\x11prije {0} sedmicu\x11prije {0} sedmice\x11prije {0} sedmica\x0e" + - "sedmica od {0}\x04sed.\x0bza {0} sed.\x0eprije {0} sed.\x03dan\x0aprekju" + - "čer\x06jučer\x05danas\x05sutra\x0aprekosutra\x0aza {0} dan\x0bza {0} da" + - "na\x0dprije {0} dan\x0eprije {0} dana\x09za {0} d.\x0cprije {0} d.\x0dda" + - "n u sedmici\x10prošla nedjelja\x0cova nedjelja\x12sljedeća nedjelja\x0fz" + - "a {0} nedjelju\x0fza {0} nedjelje\x0fza {0} nedjelja\x12prije {0} nedjel" + - "ju\x12prije {0} nedjelje\x12prije {0} nedjelja\x0cprošla ned.\x08ova ned" + - ".\x0esljedeća ned.\x13prošli ponedjeljak\x10ovaj ponedjeljak\x15sljedeći" + - " ponedjeljak\x12za {0} ponedjeljak\x12za {0} ponedjeljka\x13za {0} poned" + - "jeljaka\x15prije {0} ponedjeljak\x15prije {0} ponedjeljka\x16prije {0} p" + - "onedjeljaka\x0cprošli pon.\x09ovaj pon.\x0dsljedeći pon\x0eprošli utorak" + - "\x0bovaj utorak\x10sljedeći utorak\x0dza {0} utorak\x0dza {0} utorka\x0e" + - "za {0} utoraka\x10prije {0} utorak\x10prije {0} utorka\x11prije {0} utor" + - "aka\x0cprošli uto.\x09ovaj uto.\x0esljedeći uto.\x0fprošla srijeda\x0bov" + - "a srijeda\x11sljedeća srijeda\x0eza {0} srijedu\x0eza {0} srijede\x0eza " + - "{0} srijeda\x11prije {0} srijedu\x11prije {0} srijede\x11prije {0} srije" + - "da\x0cprošla sri.\x08ova sri.\x0esljedeća sri.\x11prošli četvrtak\x0eova" + - "j četvrtak\x13sljedeći četvrtak\x10za {0} četvrtak\x10za {0} četvrtka" + - "\x11za {0} četvrtaka\x13prije {0} četvrtak\x13prije {0} četvrtka\x14prij" + - "e {0} četvrtaka\x0dprošli čet.\x0aovaj čet.\x0fsljedeći čet.\x0dprošli p" + - "etak\x0aovaj petak\x0fsljedeći petak\x0cza {0} petak\x0cza {0} petka\x0d" + - "za {0} petaka\x0fprije {0} petak\x0fprije {0} petka\x10prije {0} petaka" + - "\x0cprošli pet.\x09ovaj pet.\x0esljedeći pet.\x0eprošla subota\x0aova su" + - "bota\x10sljedeća subota\x0dza {0} subotu\x0dza {0} subote\x0dza {0} subo" + - "ta\x10prije {0} subotu\x10prije {0} subote\x10prije {0} subota\x0cprošla" + - " sub.\x08ova sub.\x0esljedeća sub.\x17prijepodne/poslijepodne\x03sat\x08" + - "ovaj sat\x0aza {0} sat\x0bza {0} sata\x0bza {0} sati\x0dprije {0} sat" + - "\x0eprije {0} sata\x0eprije {0} sati\x06minuta\x0aova minuta\x0dza {0} m" + - "inutu\x0dza {0} minute\x0dza {0} minuta\x10prije {0} minutu\x10prije {0}" + - " minute\x10prije {0} minuta\x0bza {0} min.\x0eprije {0} min.\x07sekunda" + - "\x04sada\x0eza {0} sekundu\x0eza {0} sekunde\x0eza {0} sekundi\x11prije " + - "{0} sekundu\x11prije {0} sekunde\x11prije {0} sekundi\x0bza {0} sek.\x0e" + - "prije {0} sek.\x0evremenska zona\x0e+HH:mm; -HH:mm\x07GMT {0}\x03GMT\x18" + - "Britansko ljetno vrijeme\x18Irsko standardno vrijeme\x0aAcre vreme\x15Ac" + - "re standardno vreme\x1eAcre letnje računanje vremena\x15Afganistansko vr" + - "ijeme\x19Centralnoafričko vrijeme\x18Istočnoafričko vrijeme!Južnoafričko" + - " standardno vrijeme\x17Zapadnoafričko vrijeme\x22Zapadnoafričko standard" + - "no vrijeme\x1eZapadnoafričko ljetno vrijeme\x13Aljaskansko vrijeme\x1eAl" + - "jaskansko standardno vrijeme\x1aAljaskansko ljetno vrijeme\x0cAlmatu vre" + - "me\x17Almatu standardno vreme Almatu letnje računanje vremena\x11Amazons" + - "ko vrijeme\x1cAmazonsko standardno vrijeme\x18Amazonsko ljetno vrijeme#S" + - "jevernoameričko centralno vrijeme.Sjevernoameričko centralno standardno " + - "vrijeme*Sjevernoameričko centralno ljetno vrijeme\x22Sjevernoameričko is" + - "točno vrijeme-Sjevernoameričko istočno standardno vrijeme)Sjevernoamerič" + - "ko istočno ljetno vrijeme#Sjevernoameričko planinsko vrijeme.Sjevernoame" + - "ričko planinsko standardno vrijeme*Sjevernoameričko planinsko ljetno vri" + - "jeme$Sjevernoameričko pacifičko vrijeme/Sjevernoameričko pacifičko stand" + - "ardno vrijeme+Sjevernoameričko pacifičko ljetno vrijeme\x0cAnadir vreme" + - "\x17Anadir standardno vreme Anadir letnje računanje vremena\x0fApijsko v" + - "rijeme\x1aApijsko standardno vrijeme\x16Apijsko ljetno vrijeme\x0cAkvtau" + - " vreme\x17Akvtau standardno vreme Akvtau letnje računanje vremena\x0dAkv" + - "tobe vreme\x18Akvtobe standardno vreme!Akvtobe letnje računanje vremena" + - "\x11Arabijsko vrijeme\x1cArabijsko standardno vrijeme\x18Arabijsko ljetn" + - "o vrijeme\x13Argentinsko vrijeme\x1eArgentinsko standardno vrijeme\x1aAr" + - "gentinsko ljetno vrijeme\x1aZapadnoargentinsko vrijeme%Zapadnoargentinsk" + - "o standardno vrijeme!Zapadnoargentinsko ljetno vrijeme\x10Armensko vrije" + - "me\x1bArmensko standardno vrijeme\x17Armensko ljetno vrijeme#Sjevernoame" + - "ričko atlantsko vrijeme.Sjevernoameričko atlantsko standardno vrijeme*Sj" + - "evernoameričko atlantsko ljetno vrijeme\x1dCentralnoaustralijsko vrijeme" + - "(Centralnoaustralijsko standardno vrijeme$Centralnoaustralijsko ljetno v" + - "rijeme&Australijsko centralno zapadno vrijeme0Australijsko centralnozapa" + - "dno standardno vrijeme,Australijsko centralnozapadno ljetno vrijeme\x1cI" + - "stočnoaustralijsko vrijeme'Istočnoaustralijsko standardno vrijeme#Istočn" + - "oaustralijsko ljetno vrijeme\x1bZapadnoaustralijsko vrijeme&Zapadnoaustr" + - "alijsko standardno vrijeme\x22Zapadnoaustralijsko ljetno vrijeme\x17Azer" + - "bejdžansko vrijeme\x22Azerbejdžansko standardno vrijeme\x1eAzerbejdžansk" + - "o ljetno vrijeme\x0fAzorsko vrijeme\x1aAzorsko standardno vrijeme\x16Azo" + - "rsko ljetno vrijeme\x14Bangladeško vrijeme\x1fBangladeško standardno vri" + - "jeme\x1bBangladeško ljetno vrijeme\x10Butansko vrijeme\x12Bolivijsko vri" + - "jeme\x13Brazilijsko vrijeme\x1eBrazilijsko standardno vrijeme\x1aBrazili" + - "jsko ljetno vrijeme\x11Brunejsko vrijeme\x13Zelenortsko vrijeme\x1eZelen" + - "ortsko standardno vrijeme\x1aZelenortsko ljetno vrijeme\x1cČamorsko stan" + - "dardno vrijeme\x11Čatamsko vrijeme\x1cČatamsko standardno vrijeme\x18Čat" + - "amsko ljetno vrijeme\x12Čileansko vrijeme\x1dČileansko standardno vrijem" + - "e\x19Čileansko ljetno vrijeme\x0fKinesko vrijeme\x1aKinesko standardno v" + - "rijeme\x16Kinesko ljetno vrijeme\x15Čojbalsansko vrijeme Čojbalsansko st" + - "andardno vrijeme\x1cČojbalsansko ljetno vrijeme\x1cVrijeme na Božićnom O" + - "strvu\x19Vrijeme na Ostrvima Kokos\x13Kolumbijsko vrijeme\x1eKolumbijsko" + - " standardno vrijeme\x1aKolumbijsko ljetno vrijeme\x1bVrijeme na Kukovim " + - "ostrvima&Standardno vrijeme na Kukovim ostrvima&Poluljetno vrijeme na Ku" + - "kovim ostrvima\x10Kubansko vrijeme\x1bKubansko standardno vrijeme\x17Kub" + - "ansko ljetno vrijeme\x15Vrijeme stanice Davis\x22Vrijeme stanice Dumont-" + - "d’Urville\x18Istočnotimorsko vrijeme\x19Uskršnjeostrvsko vrijeme$Uskršnj" + - "eostrvsko standardno vrijeme Uskršnjeostrvsko ljetno vrijeme\x12Ekvadors" + - "ko vrijeme\x19Centralnoevropsko vrijeme$Centralnoevropsko standardno vri" + - "jeme Centralnoevropsko ljetno vrijeme\x18Istočnoevropsko vrijeme#Istočno" + - "evropsko standardno vrijeme\x1fIstočnoevropsko ljetno vrijeme\x1eDalekoi" + - "stočnoevropsko vrijeme\x17Zapadnoevropsko vrijeme\x22Zapadnoevropsko sta" + - "ndardno vrijeme\x1eZapadnoevropsko ljetno vrijeme\x13Folklandsko vrijeme" + - "\x1eFolklandsko standardno vrijeme\x1aFolklandsko ljetno vrijeme\x13Vrij" + - "eme na Fidžiju\x1eStandardno vrijeme na Fidžiju\x19Fidžijsko ljetno vrij" + - "eme\x1aFrancuskogvajansko vrijeme5Vrijeme na Francuskoj Južnoj Teritorij" + - "i i Antarktiku\x13Galapagosko vrijeme\x13Gambijersko vrijeme\x11Gruzijsk" + - "o vrijeme\x1cGruzijsko standardno vrijeme\x18Gruzijsko ljetno vrijeme" + - "\x1fVrijeme na Gilbertovim ostrvima\x11Griničko vrijeme\x1bIstočnogrenla" + - "ndsko vrijeme&Istočnogrenlandsko standardno vrijeme\x22Istočnogrenlandsk" + - "o ljetno vrijeme\x1aZapadnogrenlandsko vrijeme%Zapadnogrenlandsko standa" + - "rdno vrijeme!Zapadnogrenlandsko ljetno vrijeme\x15Guam standardno vreme" + - "\x1bZalivsko standardno vrijeme\x11Gvajansko vrijeme\x1cHavajsko-aleućan" + - "sko vrijeme'Havajsko-aleućansko standardno vrijeme#Havajsko-aleućansko l" + - "jetno vrijeme\x13Hongkonško vrijeme\x1eHongkonško standardno vrijeme\x1a" + - "Hongkonško ljetno vrijeme\x0fHovdsko vrijeme\x1aHovdsko standardno vrije" + - "me\x16Hovdsko ljetno vrijeme\x1bIndijsko standardno vrijeme\x1bVrijeme n" + - "a Indijskom okeanu\x13Indokinesko vrijeme\x1dCentralnoindonezijsko vrije" + - "me\x1cIstočnoindonezijsko vrijeme\x1bZapadnoindonezijsko vrijeme\x0fIran" + - "sko vrijeme\x1aIransko standardno vrijeme\x16Iransko ljetno vrijeme\x10I" + - "rkutsko vrijeme\x1bIrkutsko standardno vrijeme\x17Irkutsko ljetno vrijem" + - "e\x11Izraelsko vrijeme\x1cIzraelsko standardno vrijeme\x18Izraelsko ljet" + - "no vrijeme\x10Japansko vrijeme\x1bJapansko standardno vrijeme\x17Japansk" + - "o ljetno vrijeme\x1ePetropavlovsk-Kamčatski vreme)Petropavlovsk-Kamčatsk" + - "i standardno vreme2Petropavlovsk-Kamčatski letnje računanje vremena\x1cI" + - "stočnokazahstansko vrijeme\x1bZapadnokazahstansko vrijeme\x10Korejsko vr" + - "ijeme\x1bKorejsko standardno vrijeme\x17Korejsko ljetno vrijeme\x18Vrije" + - "me na Ostrvu Kosrae\x14Krasnojarsko vrijeme\x1fKrasnojarsko standardno v" + - "rijeme\x1bKrasnojarsko ljetno vrijeme\x14Kirgistansko vrijeme\x0bLanka v" + - "reme\x18Vrijeme na Ostrvima Lajn\x1aVrijeme na Ostrvu Lord Hau%Standardn" + - "o vrijeme na Ostrvu Lord Hau!Ljetno vrijeme na Ostrvu Lord Hau\x0bMakao " + - "vreme\x16Makao standardno vreme\x1fMakao letnje računanje vremena\x19Vri" + - "jeme na Ostrvu Makvori\x12Magadansko vrijeme\x1dMagadansko standardno vr" + - "ijeme\x19Magadansko ljetno vrijeme\x12Malezijsko vrijeme\x11Maldivsko vr" + - "ijeme\x1aVrijeme na Ostrvima Markiz\x1fVrijeme na Maršalovim ostrvima" + - "\x13Mauricijsko vrijeme\x1eMauricijsko standardno vrijeme\x1aMauricijsko" + - " ljetno vrijeme\x16Vrijeme stanice Mawson Sjeverozapadno meksičko vrijem" + - "e+Sjeverozapadno meksičko standardno vrijeme'Sjeverozapadno meksičko lje" + - "tno vrijeme\x1cMeksičko pacifičko vrijeme'Meksičko pacifičko standardno " + - "vrijeme#Meksičko pacifičko ljetno vrijeme\x14Ulanbatorsko vrijeme\x1fUla" + - "nbatorsko standardno vrijeme\x1bUlanbatorsko ljetno vrijeme\x11Moskovsko" + - " vrijeme\x1cMoskovsko standardno vrijeme\x18Moskovsko ljetno vrijeme\x13" + - "Mijanmarsko vrijeme\x17Vrijeme na Ostrvu Nauru\x10Nepalsko vrijeme\x18No" + - "vokaledonijsko vrijeme#Novokaledonijsko standardno vrijeme\x1fNovokaledo" + - "nijsko ljetno vrijeme\x15Novozelandsko vrijeme Novozelandsko standardno " + - "vrijeme\x1cNovozelandsko ljetno vrijeme\x17Njufaundlendsko vrijeme\x22Nj" + - "ufaundlendsko standardno vrijeme\x1eNjufaundlendsko ljetno vrijeme\x16Vr" + - "ijeme na Ostrvu Niue\x12Norfolško vrijeme%Vrijeme na ostrvu Fernando di " + - "Noronja0Standardno vrijeme na ostrvu Fernando di Noronja,Ljetno vrijeme " + - "na ostrvu Fernando di Noronja\x1fSeverna Marijanska Ostrva vreme\x14Novo" + - "sibirsko vrijeme\x1fNovosibirsko standardno vrijeme\x1bNovosibirsko ljet" + - "no vrijeme\x0dOmsko vrijeme\x18Omsko standardno vrijeme\x14Omsko ljetno " + - "vrijeme\x13Pakistansko vrijeme\x1ePakistansko standardno vrijeme\x1aPaki" + - "stansko ljetno vrijeme\x17Vrijeme na Ostrvu Palau\x1eVrijeme na Papui No" + - "voj Gvineji\x13Paragvajsko vrijeme\x1eParagvajsko standardno vrijeme\x1a" + - "Paragvajsko ljetno vrijeme\x11Peruansko vrijeme\x1cPeruansko standardno " + - "vrijeme\x18Peruansko ljetno vrijeme\x12Filipinsko vrijeme\x1dFilipinsko " + - "standardno vrijeme\x19Filipinsko ljetno vrijeme\x1aVrijeme na Ostrvima F" + - "iniks&Vrijeme na Ostrvima Sen Pjer i Mikelon1Standardno vrijeme na Ostrv" + - "ima Sen Pjer i Mikelon-Ljetno vrijeme na Ostrvima Sen Pjer i Mikelon\x19" + - "Vrijeme na Ostrvu Pitkern\x18Vrijeme na Ostrvu Ponape\x14Pjongjanško vri" + - "jeme\x0fKizilorda vreme\x1aKizilorda standardno vreme#Kizilorda letnje r" + - "ačunanje vremena\x12Reunionsko vrijeme\x17Vrijeme stanice Rothera\x12Sah" + - "alinsko vrijeme\x1dSahalinsko standardno vrijeme\x19Sahalinsko ljetno vr" + - "ijeme\x0cSamara vreme\x17Samara standardno vreme Samara letnje računanje" + - " vremena\x11Samoansko vrijeme\x1cSamoansko standardno vrijeme\x18Samoans" + - "ko ljetno vrijeme\x12Sejšelsko vrijeme\x1eSingapursko standardno vrijeme" + - "\x1fVrijeme na Solomonskim ostrvima\x1bJužnodžordžijsko vrijeme\x12Surin" + - "amsko vrijeme\x15Vrijeme stanice Syowa\x13Tahićansko vrijeme\x11Tajpejsk" + - "o vrijeme\x1cTajpejsko standardno vrijeme\x18Tajpejsko ljetno vrijeme" + - "\x17Tadžikistansko vrijeme\x19Vrijeme na Ostrvu Tokelau\x11Tongansko vri" + - "jeme\x1cTongansko standardno vrijeme\x18Tongansko ljetno vrijeme\x0fČučk" + - "o vrijeme\x17Turkmenistansko vrijeme\x22Turkmenistansko standardno vrije" + - "me\x1eTurkmenistansko ljetno vrijeme\x13Tuvaluansko vrijeme\x12Urugvajsk" + - "o vrijeme\x1dUrugvajsko standardno vrijeme\x19Urugvajsko ljetno vrijeme" + - "\x15Uzbekistansko vrijeme Uzbekistansko standardno vrijeme\x1cUzbekistan" + - "sko ljetno vrijeme\x14Vanuatuansko vrijeme\x1fVanuatuansko standardno vr" + - "ijeme\x1bVanuatuansko ljetno vrijeme\x15Venecuelansko vrijeme\x16Vladivo" + - "stočko vrijeme!Vladivostočko standardno vrijeme\x1dVladivostočko ljetno " + - "vrijeme\x14Volgogradsko vrijeme\x1fVolgogradsko standardno vrijeme\x1bVo" + - "lgogradsko ljetno vrijeme\x16Vrijeme stanice Vostok\x16Vrijeme na Ostrvu" + - " Vejk\x22Vrijeme na Ostrvima Valis i Futuna\x10Jakutsko vrijeme\x1bJakut" + - "sko standardno vrijeme\x17Jakutsko ljetno vrijeme\x18Jekaterinburško vri" + - "jeme#Jekaterinburško standardno vrijeme\x1fJekaterinburško ljetno vrijem" + - "e\x0dza {0} minuty\x0cza {0} minut\x0eza {0} sekundy\x0dza {0} sekund" + - "\x05marts\x03maj\x06august\x09september\x07oktober\x08november\x08decemb" + - "er\x03maj\x04měr\x03awg\x03now\x05měrc\x05apryl\x05junij\x05julij\x06awg" + - "ust\x08nowember\x0eza {0} minuśe\x0eza {0} minutow\x0fza {0} sekunźe\x0f" + - "za {0} sekundow\x04aŭg\x04mars\x06apríl\x03mai\x06august\x09september" + - "\x08november\x08desember\x03feb\x03mar\x03apr\x03jun\x03jul\x03aug\x03se" + - "p\x03okt\x03nov\x03des\x025.\x026.\x027.\x028.\x029.\x0310.\x0311.\x0312" + - ".\x0313.\x02AD\x06R.O.C.\x0esljedeći pon.\x06GMT{0}\x03GMT\x03mej\x04mej" + - "a\x0eza {0} minuće\x10za {0} sekundźe\x03feb\x03mar\x03apr\x03nov\x04mar" + - "s\x03mai\x04juni\x04juli\x09september\x08november\x08desember\x03mar\x03" + - "sep\x03okt\x03nov\x03des\x04saf.\x06rab. I\x07rab. II\x06jum. I\x07jum. " + - "II\x04raj.\x04sha.\x04ram.\x05shaw.\x09dhuʻl-q.\x09dhuʻl-h.\x09Dhuʻl-H." + - "\x04mars\x05april\x03mai\x04juni\x04juli\x09september\x07oktober\x08nove" + - "mber\x03fev\x03mar\x03abr\x03ago\x03set\x03out\x03dez\x04máj\x04jún\x04j" + - "úl\x05marec\x03maj\x09september\x08november\x08december\x03maj\x03shk" + - "\x03pri\x03maj\x03qer\x03kor\x03gsh\x03sht\x03tet\x04nën\x03dhj\x03maj" + - "\x03pon\x03sre\x05n. e.\x0fsledeće godine\x0aponedeljak\x06utorak\x09čet" + - "vrtak\x05petak\x06subota" - -var bucket14 string = "" + // Size: 8746 bytes - "\x04БЕ\x08Таут\x08Баба\x0aХатор\x0aКиахк\x08Тоба\x0aАмшир\x10Барамхат" + - "\x10Барамуда\x0cБашанс\x0aПаона\x08Епеп\x0aМесра\x08Наси\x10Мескерем\x0c" + - "Текемт\x0aХедар\x0cТахсас\x06Тер\x0eЈекатит\x0eМегабит\x0cМиазиа\x0cГен" + - "бот\x08Сене\x0aХамле\x0cНехасе\x0eПагумен\x0cd.M.y. GGGGG\x0cјануар\x0e" + - "фебруар\x08март\x0aаприл\x06мај\x08јуни\x08јули\x0cавгуст\x12септембар" + - "\x0eоктобар\x10новембар\x10децембар\x02ј\x02ф\x02м\x02а\x02с\x02о\x02н" + - "\x02д\x06нед\x06пон\x06уто\x06сри\x06чет\x06пет\x06суб\x0cнедеља\x12поне" + - "дељак\x0cуторак\x0eсриједа\x10четвртак\x0aпетак\x0cсубота\x02п\x02у\x02" + - "ч\x03К1\x03К2\x03К3\x03К4\x1dПрво тромесечје\x1fДруго тромесечје\x1fТре" + - "ће тромесечје#Четврто тромесечје\x11пре подне\x0eпоподне\x16Пре нове ер" + - "е\x0fНове ере\x0bп. н. е.\x07н. е.\x09п.н.е.\x06н.е.\x11EEEE, dd. MMMM " + - "y.\x0bdd. MMMM y.\x08dd.MM.y.\x0aТишри\x0cХешван\x0cКислев\x0aТевет\x0aШ" + - "еват\x0aАдар I\x08Адар\x0bАдар II\x0aНисан\x08Ијар\x0aСиван\x0aТамуз" + - "\x04Ав\x08Елул\x0cЧаитра\x0eВаисака\x0eЈиаиста\x0aАсада\x0eСравана\x0aБа" + - "дра\x0cАсвина\x0eКартика\x10Аргајана\x0aПауза\x08Мага\x0eФалгуна\x08САК" + - "А\x07Мух.\x07Саф.\x09Реб. 1\x09Реб. 2\x09Џум. 1\x09Џум. 2\x07Реџ.\x05Ша" + - ".\x07Рам.\x05Ше.\x0aЗул-к.\x0aЗул-х.\x0eМурахам\x0aСафар\x0cРабиʻ I\x0dР" + - "абиʻ II\x0eЈумада I\x0fЈумада II\x0aРађаб\x0cШаʻбан\x0eРамадан\x0aШавал" + - "\x13Дуʻл-Киʻда\x11Дуʻл-хиђа\x0eМухарем\x0aСафер\x0aРеби 1\x0aРеби 2\x0eЏ" + - "умаде 1\x0eЏумаде 2\x0aРеџеб\x0eРамазан\x0aШевал\x0fЗул-каде\x0fЗул-хиџ" + - "е\x04АХ\x16Таика (645–650)\x18Хакучи (650–671)\x18Хакухо (672–686)\x14Ш" + - "учо (686–701)\x16Таихо (701–704)\x16Кеиун (704–708)\x14Вадо (708–715)" + - "\x16Реики (715–717)\x14Јоро (717–724)\x16Јинки (724–729)\x18Темпио (729–" + - "749)!Темпио-кампо (749-749)\x1fТемпио-шохо (749-757)\x1fТемпио-хођи (757" + - "-765)\x1fТемпо-ђинго (765-767)\x1fЂинго-кеиун (767-770)\x14Хоки (770–780" + - ")\x13Тен-о (781-782)\x1aЕнрјаку (782–806)\x16Даидо (806–810)\x16Конин (8" + - "10–824)\x16Тенчо (824–834)\x14Шова (834–848)\x14Кајо (848–851)\x14Нињу (" + - "851–854)\x16Саико (854–857)\x16Тенан (857–859)\x16Јоган (859–877)\x18Ген" + - "кеи (877–885)\x14Ниња (885–889)\x18Кампјо (889–898)\x16Шотаи (898–901)" + - "\x14Енђи (901–923)\x14Енчо (923–931)\x16Шохеи (931–938)\x18Тенгјо (938–9" + - "47)\x1cТенриаку (947–957)\x1aТентоку (957–961)\x12Ова (961–964)\x14Кохо " + - "(964–968)\x12Ана (968–970)\x1aТенроку (970–973)\x15Тен-ен (973-976)\x16Ј" + - "оген (976–978)\x18Тенген (978–983)\x16Еикан (983–985)\x14Кана (985–987)" + - "\x13Еи-ен (987-989)\x14Еисо (989–990)\x1aШорјаку (990–995)\x18Чотоку (99" + - "5–999)\x15Чохо (999–1004)\x18Канко (1004–1012)\x16Чова (1012–1017)\x18Ка" + - "нин (1017–1021)\x16Ђиан (1021–1024)\x16Мању (1024–1028)\x18Чоген (1028–" + - "1037)\x1cЧорјаку (1037–1040)\x18Чокју (1040–1044)\x1cКантоку (1044–1046)" + - "\x16Еишо (1046–1053)\x18Тенђи (1053–1058)\x18Кохеи (1058–1065)\x1cЂирјак" + - "у (1065–1069)\x18Енкју (1069–1074)\x16Шохо (1074–1077)\x1cШорјаку (1077" + - "–1081)\x16Еишо (1081–1084)\x18Отоку (1084–1087)\x18Канђи (1087–1094)" + - "\x16Кахо (1094–1096)\x16Еичо (1096–1097)\x1aШотоку (1097–1099)\x16Кова (" + - "1099–1104)\x16Чођи (1104–1106)\x16Кашо (1106–1108)\x18Тенин (1108–1110)" + - "\x17Тен-еи (1110-1113)\x18Еикју (1113–1118)\x17Ђен-еи (1118-1120)\x16Хоа" + - "н (1120–1124)\x18Тенђи (1124–1126)\x18Даиђи (1126–1131)\x18Теншо (1131–" + - "1132)\x18Чошао (1132–1135)\x16Хоен (1135–1141)\x16Еиђи (1141–1142)\x16Ко" + - "ђи (1142–1144)\x16Тењо (1144–1145)\x18Кјуан (1145–1151)\x1aНинпеи (1151" + - "–1154)\x18Кјују (1154–1156)\x18Хоген (1156–1159)\x18Хеиђи (1159–1160)" + - "\x1cЕирјаку (1160–1161)\x14Охо (1161–1163)\x18Чокан (1163–1165)\x18Еиман" + - " (1165–1166)\x17Нин-ан (1166-1169)\x14Као (1169–1171)\x16Шоан (1171–1175" + - ")\x18Анген (1175–1177)\x16Ђишо (1177–1181)\x16Јова (1181–1182)\x16Ђуеи (" + - "1182–1184)\x1eГенрјуку (1184–1185)\x18Бунђи (1185–1190)\x1aКенкју (1190–" + - "1199)\x16Шођи (1199–1201)\x18Кенин (1201–1204)\x1aГенкју (1204–1206)\x17" + - "Кен-еи (1206-1207)\x18Шоген (1207–1211)\x1eКенрјаку (1211–1213)\x18Кенп" + - "о (1213–1219)\x18Шокју (1219–1222)\x12Ђу (1222–1224)\x18Ђенин (1224–122" + - "5)\x1aКароку (1225–1227)\x18Антеи (1227–1229)\x18Канки (1229–1232)\x16Ђо" + - "еи (1232–1233)\x1cТемпуку (1233–1234)\x1eБунрјаку (1234–1235)\x18Катеи " + - "(1235–1238)\x1eРјакунин (1238–1239)\x13Ен-о (1239-1240)\x16Нињи (1240–12" + - "43)\x1aКанген (1243–1247)\x16Хођи (1247–1249)\x18Кенчо (1249–1256)\x18Ко" + - "ген (1256–1257)\x16Шока (1257–1259)\x18Шоген (1259–1260)\x15Бун-о (1260" + - "-1261)\x16Кочо (1261–1264)\x17Бун-еи (1264-1275)\x18Кенђи (1275–1278)" + - "\x16Коан (1278–1288)\x12Шу (1288–1293)\x18Еинин (1293–1299)\x16Шоан (129" + - "9–1302)\x1aКенген (1302–1303)\x18Каген (1303–1306)\x1aТокуђи (1306–1308)" + - "\x18Енкеи (1308–1311)\x14Очо (1311–1312)\x16Шова (1312–1317)\x18Бунпо (1" + - "317–1319)\x16Ђено (1319–1321)\x1aЂенкјо (1321–1324)\x16Шочу (1324–1326)" + - "\x1aКареки (1326–1329)\x1cГентоку (1329–1331)\x18Генко (1331–1334)\x16Ке" + - "му (1334–1336)\x18Енген (1336–1340)\x1aКококу (1340–1346)\x18Шохеи (134" + - "6–1370)\x1cКентоку (1370–1372)\x16Бучу (1372–1375)\x16Тењу (1375–1379)" + - "\x1cКорјаку (1379–1381)\x16Кова (1381–1384)\x18Генчу (1384–1392)\x1cМеит" + - "оку (1384–1387)\x18Какеи (1387–1389)\x12Ку (1389–1390)\x1cМеитоку (1390" + - "–1394)\x14Оеи (1394–1428)\x16Шочо (1428–1429)\x18Еикјо (1429–1441)\x1c" + - "Какитсу (1441–1444)\x17Бун-ан (1444-1449)\x1aХотоку (1449–1452)\x1cКјот" + - "оку (1452–1455)\x16Кошо (1455–1457)\x1aЧороку (1457–1460)\x18Каншо (146" + - "0–1466)\x18Буншо (1466–1467)\x16Онин (1467–1469)\x1aБунмеи (1469–1487)" + - "\x18Чокјо (1487–1489)\x1aЕнтоку (1489–1492)\x16Меио (1492–1501)\x18Бунки" + - " (1501–1504)\x16Еишо (1504–1521)\x18Таиеи (1521–1528)\x1cКјороку (1528–1" + - "532)\x1aТенмон (1532–1555)\x16Кођи (1555–1558)\x1aЕироку (1558–1570)\x18" + - "Генки (1570–1573)\x18Теншо (1573–1592)\x1cБунроку (1592–1596)\x18Кеичо " + - "(1596–1615)\x18Генва (1615–1624)\x17Кан-еи (1624-1644)\x16Шохо (1644–164" + - "8)\x18Кеиан (1648–1652)\x12Шу (1652–1655)\x1eМеирјаку (1655–1658)\x16Мањ" + - "и (1658–1661)\x1aКанбун (1661–1673)\x16Енпо (1673–1681)\x18Тенва (1681–" + - "1684)\x18Јокјо (1684–1688)\x1cГенроку (1688–1704)\x16Хоеи (1704–1711)" + - "\x1aШотоку (1711–1716)\x18Кјохо (1716–1736)\x1aГенбун (1736–1741)\x18Кан" + - "по (1741–1744)\x18Енкјо (1744–1748)\x17Кан-ен (1748-1751)\x1cХорјаку (1" + - "751–1764)\x18Меива (1764–1772)\x15Ан-еи (1772-1781)\x1aТенмеи (1781–1789" + - ")\x1aКансеи (1789–1801)\x18Кјова (1801–1804)\x18Бунка (1804–1818)\x1aБун" + - "сеи (1818–1830)\x18Тенпо (1830–1844)\x16Кока (1844–1848)\x16Каеи (1848–" + - "1854)\x18Ансеи (1854–1860)\x17Ман-ен (1860-1861)\x1aБункју (1861–1864)" + - "\x18Генђи (1864–1865)\x18Кеико (1865–1868)\x0aМеиђи\x0aТаишо\x08Шова\x0c" + - "Хаисеи\x08M/d/yy G\x12Фаравадин\x14Ордибехешт\x0cКордад\x06Тир\x0cМорда" + - "д\x10Шахривар\x08Мехр\x08Абан\x08Азар\x06Деј\x0cБахман\x0cЕсфанд\x04АП" + - "\x0bПре РК\x04РК\x19Прошле године\x13Ове године\x1bСледеће године\x15за " + - "{0} годину\x15за {0} године\x15за {0} година\x17пре {0} годину\x17пре {0" + - "} године\x17пре {0} година\x1bПрошлог месеца\x15Овог месеца\x1dСледећег " + - "месеца\x13за {0} месец\x15за {0} месеца\x15за {0} месеци\x15пре {0} мес" + - "ец\x17пре {0} месеца\x17пре {0} месеци\x19Прошле недеље\x13Ове недеље" + - "\x1bСледеће недеље\x15за {0} недељу\x15за {0} недеље\x15за {0} недеља" + - "\x02в\x15за {0} години\x0cЯкатит\x0eМагабит\x0cМиазия\x08Сэнэ\x0aХамлэ" + - "\x0cНахасэ\x10Эпагомен\x0aАмшир\x10Барамхат\x08Наси\x08март\x0aаприл\x06" + - "мај\x06јун\x06јул\x0cавгуст\x06мај\x06јун\x06јул\x06сре\x0aсреда\x06н.е" + - ".\x0cХешван\x0cКислев\x0aТевет\x0aШеват\x0aАдар I\x08Адар\x0bАдар II\x0a" + - "Нисан\x0aСиван\x04Ав\x0eСравана\x0eКартика\x0aПауза\x0aСафар\x0eРамадан" + - "\x14Ордибехешт\x06Тир\x0cМордад\x08Мехр\x08Абан\x0cБахман\x02л\x02б\x02к" + - "\x02т\x02ж\x02г" - -var bucket15 string = "" + // Size: 27536 bytes - "\x17пре {0} недељу\x17пре {0} недеље\x17пре {0} недеља\x06дан\x10прекјуч" + - "е\x08јуче\x0aданас\x0aсутра\x14прекосутра\x0fза {0} дан\x11за {0} дана" + - "\x11пре {0} дан\x13пре {0} дана\x16дан у недељи пре подне/поподне\x0fза " + - "{0} сат\x11за {0} сата\x11за {0} сати\x11пре {0} сат\x13пре {0} сата\x13" + - "пре {0} сати\x0aминут\x13за {0} минут\x15за {0} минута\x15пре {0} минут" + - "\x17пре {0} минута\x0cсекунд\x15за {0} секунд\x17за {0} секунде\x17за {0" + - "} секунди\x17пре {0} секунд\x19пре {0} секунде\x19пре {0} секунди\x08зон" + - "а\x1dВреме у земљи: {0}\x13Акре време(Акре стандардно време3Акре летње " + - "рачунање времена%Авганистанско време,Централно-афричко време(Источно-аф" + - "ричко време$Јужно-афричко време(Западно-афричко време=Западно-афричко с" + - "тандардно времеHЗападно-афричко летње рачунање времена\x17Аљашко време," + - "Аљашко стандардно време\x22Аљашко летње време\x17Алмати време,Алмати ст" + - "андардно време7Алмати летње рачунање времена\x17Амазон време,Амазон ста" + - "ндардно време7Амазон летње рачунање времена\x1dЦентрално време2Централн" + - "о стандардно време=Централно летње рачунање времена\x19Источно време.Ис" + - "точно стандардно време9Источно летње рачунање времена\x1dПланинско врем" + - "е2Планинско стандардно време=Планинско летње рачунање времена\x1dПацифи" + - "чко време2Пацифичко стандардно време=Пацифичко летње рачунање времена" + - "\x17Анадир време,Анадир стандардно време7Анадир летње рачунање времена" + - "\x19Акватау време.Акватау стандардно време9Акватау летње рачунање времен" + - "а\x19Акутобе време.Акутобе стандардно време9Акутобе летње рачунање врем" + - "ена\x1dАрабијско време2Арабијско стандардно време=Арабијско летње рачун" + - "ање времена\x1dАргентина време2Аргентина стандардно време=Аргентина лет" + - "ње рачунање времена,Западна Аргентина времеAЗападна Аргентина стандардн" + - "о времеLЗападна Аргентина летње рачунање времена\x1bАрменија време0Арме" + - "нија стандардно време;Арменија летње рачунање времена\x1bАтланско време" + - "0Атланско стандардно време9Атланско лтње рачунање времена6Аустралијско ц" + - "ентрално времеKАустралијско централно стандардно времеVАустралијско цен" + - "трално летње рачунање временаEАустралијско централно западно времеZАуст" + - "ралијско централно западно стандардно времеeАустралијско централно запа" + - "дно летње рачунање времена2Аустралијско источно времеGАустралијско исто" + - "чно стандардно времеRАустралијско источно летње рачунање времена2Аустра" + - "лијско западно времеGАустралијско западно стандардно времеRАустралијско" + - " западно летње рачунање времена\x1fАзербејџан време4Азербејџан стандардн" + - "о време?Азербејџан летње рачунање времена\x15Азори време*Азори стандард" + - "но време5Азори летње рачунање времена\x1dБангладеш време2Бангладеш стан" + - "дардно време=Бангладеш летње рачунање времена\x15Бутан време\x1bБоливиј" + - "а време\x1dБразилија време2Бразилија стандардно време=Бразилија летње р" + - "ачунање времена*Брунеј Дарусалум време!Зелениртско време6Зелениртско ст" + - "андардно времеAЗеленортско летње рачунање времена\x17Чаморо време\x15Ча" + - "там време*Чатам стандардно време5Чатам летње рачунање времена\x13Чиле в" + - "реме(Чиле стандардно време3Чиле летње рачунање времена\x13Кина време.Ки" + - "неско стандардно време3Кина летње рачунање времена\x1dЧојбалсан време2Ч" + - "ојбалсан стандардно време=Чојбалсан летње рачунање времена&Божићна остр" + - "ва време1Кокос (Келинг) Острва време\x1dКолумбија време2Колумбија станд" + - "ардно време=Колумбија летње рачунање времена$Кукова острва време9Кукова" + - " острва стандардно времеMКукова острва полу-летње рачунање времена\x13Ку" + - "ба време(Куба стандардно време3Куба летње рачунање времена\x17Дејвис вр" + - "еме%Димон д’Урвил време$Источни тимор време&Ускршња острва време;Ускршњ" + - "а острва стандардно времеFУскршња острва летње рачунање времена\x19Еква" + - "дор време'Средњеевропско време<Средњеевропско стандардно времеGСредњеев" + - "ропско летње рачунање времена)Источноевропско време>Источноевропско ста" + - "ндардно времеIИсточноевропско летње рачунање времена)Западноевропско вр" + - "еме>Западноевропско стандардно времеIЗападноевропско летње рачунање вре" + - "мена.Фолкландска Острва времеCФолкландска Острва стандардно времеNФолкл" + - "андска Острва летње рачунање времена\x13Фиџи време(Фиџи стандардно врем" + - "е3Фиџи летње рачунање времена,Француска Гвајана времеBФранцуско јужно и" + - " антарктичко време\x1dГалапагос време\x1bГамбијер време\x19Грузија време" + - ".Грузија стандардно време9Грузија летње рачунање времена&Гилберт острва " + - "време&Гринвич средње време*Источни Гренланд време?Источни Гренланд стан" + - "дардно времеJИсточни Гренланд летње рачунање времена*Западни Гренланд в" + - "реме?Западни Гренланд стандардно времеJЗападни Гренланд летње рачунање " + - "времена(Гуам стандардно време\x15Залив време\x19Гвајана време,Хавајско-" + - "алеутско времеAХавајско-алеутско стандардно времеLХавајско-алеутско лет" + - "ње рачунање времена\x1cХонг Конг време1Хонг Конг стандардно време?Хонгк" + - "оншко летње рачунање времена\x13Ховд време(Ховд стандардно време3Ховд л" + - "етње рачунање времена0Индијско стандардно време,Индијско океанско време" + - "\x1bИндокина време6Централно-индонезијско време2Источно-индонезијско вре" + - "ме2Западно-индонезијско време\x13Иран време(Иран стандардно време3Иран " + - "летње рачунање времена\x17Иркуцк време,Иркуцк стандардно време7Иркуцк л" + - "етње рачунање времена\x1dИзраелско време2Израелско стандардно време=Изр" + - "аелско летње рачунање времена\x1bЈапанско време0Јапанско стандардно вре" + - "ме;Јапанско летње рачунање времена:Петропавловско-камчатско времеOПетро" + - "павловско-камчатско стандардно времеXПетропавловско-камчатско летње рач" + - "унање вемена2Источно-казахстанско време2Западно-казахстанско време\x17К" + - "ореја време0Корејско стандардно време;Корејско летње рачунање времена" + - "\x15Кошре време!Краснојарск време6Краснојарск стандардно времеAКраснојар" + - "ск летње рачунање времена\x1fКиргизстан време\x1cШри Ланка време Лине О" + - "стрва време\x1aЛорд Хов време/Лорд Хов стандардно време:Лорд Хов летње " + - "рачунање времена\x15Макао време*Макао стандардно време3Макао летње рачу" + - "нање вемена!Макверијско време\x19Магадан време.Магадан стандардно време" + - "7Магадан летње рачунање вемена\x1bМалезија време\x19Малдиви време\x17Мар" + - "киз време*Маршалска Острва време\x1fМаурицијус време4Маурицијус стандар" + - "дно време?Маурицијус летње рачунање времена\x15Мосон време\x1eУлан Бато" + - "р време3Улан Батор стандардно време>Улан Батор летње рачунање времена" + - "\x17Москва време,Москва стандардно време7Москва летње рачунање времена" + - "\x1bМијанмар време\x15Науру време\x15Непал време(Нова Каледонија време=Н" + - "ова Каледонија стандардно времеHНова Каледонија летње рачунање времена " + - "Нови Зеланд време5Нови Зеланд стандардно време@Нови Зеланд летње рачуна" + - "ње времена!Њуфаундленд време6Њуфаундленд стандардно времеAЊуфаундленд л" + - "етње рачунање времена\x13Ниуе време&Норфолк Острво време-Фернандо де Но" + - "роња времеBФернандо де Нороња стандардно времеMФернандо де Нороња летње" + - " рачунање времена;Северна Маријанска Острва време!Новосибирск време6Ново" + - "сибирск стандардно времеAНовосибирск летње рачунање времена\x13Омск вре" + - "ме(Омск стандардно време3Омск летње рачунање времена\x1bПакистан време0" + - "Пакистан стандардно време;Пакистан летње рачунање времена\x15Палау врем" + - "е-Папуа Нова Гвинеја време\x1bПарагвај време0Парагвај стандардно време;" + - "Парагвај летње рачунање времена\x13Перу време(Перу стандардно време3Пер" + - "у летње рачунање времена\x1bФилипини време0Филипини стандардно време;Фи" + - "липини летње рачунање времена$Феникс острва време,Сен Пјер и Микелон вр" + - "емеAСен Пјер и Микелон стандардно времеJСен Пјер и Микелон летње рачуна" + - "ње вемена\x19Питкерн време\x17Понапе време\x1dКизилорда време2Кизилорда" + - " стандардно време=Кизилорда летње рачунање времена\x19Реинион време\x17Р" + - "отера време\x19Сахалин време.Сахалин стандардно време9Сахалин летње рач" + - "унање времена\x17Самара време,Самара стандардно време7Самара летње рачу" + - "нање времена\x15Самоа време*Самоа стандардно време5Самоа летње рачунање" + - " времена\x19Сејшели време0Сингапур стандардно време,Соломонска Острва вр" + - "еме$Јужна Џорџија време\x19Суринам време\x13Шова време\x17Тахити време" + - "\x17Таипеи време*Таипеи стандардно веме7Таипеи летње рачунање времена" + - "\x1fТаџикистан време\x19Токелау време\x15Тонга време*Тонга стандардно вр" + - "еме5Тонга летње рачунање времена\x13Трук време#Туркменистан време8Туркм" + - "енистан стандардно времеCТуркменистан летње рачунање времена\x17Тувалу " + - "време\x19Уругвај време.Уругвај стандардно време9Уругвај летње рачунање " + - "времена\x1fУзбекистан време4Узбекистан стандардно време?Узбекистан летњ" + - "е рачунање времена\x19Вануату време.Вануату стандардно време9Вануату ле" + - "тње рачунање времена\x1dВенецуела време!Владивосток време6Владивосток с" + - "тандардно времеAВладивосток летње рачунање времена\x1dВолгоград време2В" + - "олгоград стандардно време=Волгоград летње рачунање времена\x17Восток вр" + - "еме Вејк острво време2Валис и Футуна Острва време\x19Јакутск време.Јаку" + - "тск стандардно време9Јакутск летње рачунање времена%Јекатеринбург време" + - ":Јекатеринбург стандардно времеEЈекатеринбург летње рачунање времена\x15" + - "за {0} минути$Време во Авганистан+Средноафриканско време-Источноафрикан" + - "ско времеAВреме во Јужноафриканска Република-Западноафриканско времеBЗа" + - "падноафриканско стандардно време\x1cВреме во Аљаска1Стандардно време во" + - " Аљаска\x1cВреме во Амазон1Стандардно време во Амазон@Централно време во" + - " Северна АмерикаUЦентрално стандардно време во Северна Америка\x1dАнадир" + - "ско време2Анадирско стандардно време\x1aВреме во Апија/Стандардно време" + - " во Апија\x19Арапско време.Стандардно арапско време\x22Време во Аргентин" + - "а7Стандардно време во Аргентина1Време во западна АргентинаFСтандардно в" + - "реме во западна Аргентина Време во Ерменија5Стандардно време во Ермениј" + - "а\x1dАтлантско време2Атлантско стандардно време7Време во Централна Авст" + - "ралијаLСтандардно време во Централна АвстралијаIВреме во Централна и За" + - "падна Австралија^Стандардно време во Централна и Западна Австралија3Вре" + - "ме во Источна АвстралијаHСтандардно време во Источна Австралија3Време в" + - "о Западна АвстралијаHСтандардно време во Западна Австралија$Време во Аз" + - "ербејџан9Стандардно време во Азербејџан\x1cВреме во Азорес1Стандардно в" + - "реме во Азорес\x22Време во Бангладеш7Стандардно време во Бангладеш\x1aВ" + - "реме во Бутан Време во Боливија\x22Време во Бразилија7Стандардно време " + - "во Бразилија/Време во Брунеи Дарусалам(Време на Зелениот ‘Рт=Стандардно" + - " време на Зелениот ‘Рт\x1cВреме во Чаморо\x1aВреме во Четем/Стандардно в" + - "реме во Четем\x18Време во Чиле-Стандардно време во Чиле\x18Време во Кин" + - "а-Стандардно време во Кина\x22Време во Чојбалсан7Стандардно време во Чо" + - "јбалсан/Време на Божиќниот остров3Време на Кокосовите Острови\x22Време " + - "во Колумбија7Стандардно време во Колумбија)Време на островите Кук>Станд" + - "ардно време на Островите Кук\x18Време во Куба-Стандардно време во Куба" + - "\x1cВреме во Дејвис'Време во Димон-дурвил)Време во Источен Тимор7Време н" + - "а Велигденскиот ОстровLСтандардно време на Велигденскиот Остров\x1eВрем" + - "е во Еквадор'Средноевропско време<Средноевропско стандардно време'Калин" + - "инградско време9Време на Фолкландските ОстровиNСтандардно време на Фолк" + - "ландските Острови\x18Време во Фиџи-Стандардно време во Фиџи1Време во Фр" + - "анцуска Гвајана\x22Време во Галапагос\x1aВреме во Гамбе\x1eВреме во Гру" + - "зија3Стандардно време во Грузија1Време на Островите Гилберт)Средно врем" + - "е по Гринич/Време во Источен ГренландDСтандардно време во Источен Гренл" + - "анд/Време во Западен ГренландDСтандардно време во Западен Гренланд5Врем" + - "е на Мексиканскиот Залив\x1eВреме во Гвајана<Време во Хаваи - Алеутски " + - "островиQСтандардно време во Хаваи - Алеутски острови!Време во Хонг Конг" + - "6Стандардно време во Хонг Конг\x18Време во Ховд-Стандардно време во Ховд" + - "\x1cВреме во Индија)Време на Индиски океан Време во Индокина7Време во Це" + - "нтрална Индонезија3Време во Источна Индонезија3Време во Западна Индонез" + - "ија\x18Време во Иран-Стандардно време во Иран\x1eВреме во Иркутск3Станд" + - "ардно време во Иркутск\x1cВреме во Израел1Стандардно време во Израел Вр" + - "еме во Јапонија5Стандардно време во Јапонија1Време во Источен Казахстан" + - "1Време во Западен Казахстан\x1cВреме во Кореја1Стандардно време во Кореј" + - "а\x1aВреме во Косра&Време во Краснојарск;Стандардно време во Краснојарс" + - "к\x22Време во Киргистан-Време во Линиски Острови\x1fВреме во Лорд Хау4С" + - "тандардно време во Лорд Хау/Време на Островот Макуари\x1eВреме во Магад" + - "ан3Стандардно време во Магадан Време во Малезија\x1eВреме на Малдиви Вр" + - "еме во Маркесас1Време на Маршалски острови\x22Време на Маврициус7Станда" + - "рдно време на Маврициус\x1aВреме во Мосон9Време во северозападно Мексик" + - "оNСтандардно време во северозападно Мексико7Тихоокеанско време во Мекси" + - "коLСтандардно тихоокеанско време во Мексико#Време во Улан Батор8Стандар" + - "дно време во Улан Батор\x1cВреме во Москва1Стандардно време во Москва" + - "\x1eВреме во Мјанмар\x1aВреме во Науру\x1aВреме во Непал-Време во Нова К" + - "аледонијаBСтандардно време во Нова Каледонија#Време во Нов Зеланд8Станд" + - "ардно време во Нов Зеланд&Време на Њуфаундленд;Стандардно време на Њуфа" + - "ундленд\x18Време во Ниуе1Време на Островите Норфолк2Време на Фернандо д" + - "е НороњаGСтандардно време на Фернандо де Нороња&Време во Новосибирск;Ст" + - "андардно време во Новосибирск\x18Време во Омск-Стандардно време во Омск" + - " Време во Пакистан5Стандардно време во Пакистан\x1aВреме во Палау2Време " + - "во Папуа Нова Гвинеја Време во Парагвај5Стандардно време во Парагвај" + - "\x18Време во Перу-Стандардно време во Перу Време во Филипини5Стандардно " + - "време во Филипини/Време на Островите Феникс8Време на на Сент Пјер и Мик" + - "еланHСтандардно време на Сент Пјер и Микелан\x1eВреме во Питкерн\x1cВре" + - "ме во Понапе\x12Пјонгјанг Време на Ријунион\x1cВреме во Ротера\x1eВреме" + - " во Сакалин3Стандардно време во Сакалин\x1aВреме во Самоа/Стандардно вре" + - "ме во Самоа\x1eВреме на Сејшели Време во Сингапур7Време на Соломонските" + - " острови)Време во Јужна Грузија\x1eВреме во Суринам\x1cВреме во Сајова" + - "\x1cВреме во Тахити\x1cВреме во Таипеи1Стандардно време во Таипеи$Време " + - "во Таџикистан\x1eВреме во Токелау\x1aВреме во Тонга/Стандардно време во" + - " Тонга\x18Време во Чуук(Време во Туркменистан=Стандардно време во Туркме" + - "нистан\x1cВреме во Тувалу\x1eВреме во Уругвај3Стандардно време во Уругв" + - "ај$Време во Узбекистан9Стандардно време во Узбекистан\x1eВреме во Вануа" + - "ту3Стандардно време во Вануату\x22Време во Венецуела&Време во Владивост" + - "ок;Стандардно време во Владивосток\x22Време во Волгоград7Стандардно вре" + - "ме во Волгоград\x1cВреме во Восток)Време на островот Вејк*Време во Вали" + - "с и Футуна\x1eВреме во Јакутск3Стандардно време во Јакутск(Време во Ека" + - "теринбург=Стандардно време во Екатеринбург\x1fАвганистан време\x0cАљаск" + - "а-Аљаска, стандардно време8Аљаска, летње рачунање времена<Северноамерич" + - "ко централно времеQСеверноамеричко централно стандардно времеGСеверноам" + - "еричко централно летње време8Северноамеричко источно времеMСеверноамери" + - "чко источно стандардно времеCСеверноамеричко источно летње време<Северн" + - "оамеричко планинско времеQСеверноамеричко планинско стандардно времеGСе" + - "верноамеричко планинско летње време<Северноамеричко пацифичко времеQСев" + - "ерноамеричко пацифичко стандардно времеGСеверноамеричко пацифичко летње" + - " време\x15Апија време*Апија стандардно време5Апија летње рачунање времен" + - "а\x1dЈерменија време2Јерменија стандардно време=Јерменија летње рачунањ" + - "е времена=Атлантско летње рачунање времена.Зеленортска Острва времеCЗел" + - "енортска Острва стандардно времеNЗеленортска Острва летње рачунање врем" + - "ена&Божићно острво време даљи исток Европе\x19Гамбије време+Средње врем" + - "е по Гриничу\x1bЗаливско време<Хонг Конг летње рачунање временаZПетропа" + - "вловско-камчатско летње рачунање времена\x1bКорејско време\x1dКиргистан" + - " време Острва Лајн време5Макао летње рачунање времена&Острво Маквери вре" + - "ме9Магадан летње рачунање времена)Северозападни МексикоIСеверозападни М" + - "ексико стандардно времеTСеверозападни Мексико летње рачунање времена" + - "\x1fМексички Пацифик?Мексички Пацифик стандардно времеJМексички Пацифик " + - "летње рачунање временаLСен Пјер и Микелон летње рачунање времена\x17Пон" + - "пеј време!Пјонгјаншко време\x17Тајпеј време,Тајпеј стандардно време\x22" + - "Тајпеј летње време\x13Чуук време" - -var bucket16 string = "" + // Size: 11555 bytes - "\x02eB\x11EEEE, dd MMMM y G\x10EEEE, dd MMMM UU\x08d MMMM U\x07d MMM U" + - "\x14EEEE d MMMM 'de' y G\x07d/M/y G\x07de gen.\x08de febr.\x08de març" + - "\x08d’abr.\x07de maig\x07de juny\x07de jul.\x07d’ag.\x07de set.\x08d’oct" + - ".\x07de nov.\x07de des.\x02GN\x02FB\x03MÇ\x02AB\x02MG\x02JN\x02JL\x02AG" + - "\x02ST\x02OC\x02NV\x02DS\x08de gener\x09de febrer\x09d’abril\x09de julio" + - "l\x09d’agost\x0bde setembre\x0bd’octubre\x0bde novembre\x0bde desembre" + - "\x04gen.\x05febr.\x05març\x04abr.\x04maig\x04juny\x04jul.\x03ag.\x04set." + - "\x04oct.\x04nov.\x04des.\x05gener\x06febrer\x05abril\x06juliol\x05agost" + - "\x08setembre\x07octubre\x08novembre\x08desembre\x03dg.\x03dl.\x03dt.\x03" + - "dc.\x03dj.\x03dv.\x03ds.\x02dg\x02dl\x02dt\x02dc\x02dj\x02dv\x02ds\x08di" + - "umenge\x07dilluns\x07dimarts\x08dimecres\x06dijous\x09divendres\x08dissa" + - "bte\x0c1r trimestre\x0c2n trimestre\x0c3r trimestre\x0c4t trimestre\x08m" + - "itjanit\x05a. m.\x05p. m.\x08matinada\x05matí\x06migdia\x05tarda\x06vesp" + - "re\x03nit\x04mat.\x02md\x0eabans de Crist\x17abans de l’Era Comuna\x11de" + - "sprés de Crist\x0aEra Comuna\x02aC\x03AEC\x02dC\x02EC\x09dd/MM/y G\x03an" + - "y\x0el’any passat\x07enguany\x0el’any que ve\x13d’aquí a {0} any\x14d’aq" + - "uí a {0} anys\x0afa {0} any\x0bfa {0} anys\x13el trimestre passat\x10aqu" + - "est trimestre\x13el trimestre que ve\x19d’aquí a {0} trimestre\x1ad’aquí" + - " a {0} trimestres\x10fa {0} trimestre\x11fa {0} trimestres\x0fel trim. p" + - "assat\x0caquest trim.\x0fel trim. que ve\x15d’aquí a {0} trim.\x0cfa {0}" + - " trim.\x0ctrim. passat\x0ctrim. vinent\x0del mes passat\x0aaquest mes" + - "\x0del mes que ve\x13d’aquí a {0} mes\x15d’aquí a {0} mesos\x0afa {0} me" + - "s\x0cfa {0} mesos\x0ames passat\x0ames vinent\x07setmana\x12la setmana p" + - "assada\x0faquesta setmana\x11la setmana que ve\x17d’aquí a {0} setmana" + - "\x18d’aquí a {0} setmanes\x0efa {0} setmana\x0ffa {0} setmanes\x12la set" + - "mana del {0}\x05setm.\x10la setm. passada\x0daquesta setm.\x0fla setm. q" + - "ue ve\x15d’aquí a {0} setm.\x0cfa {0} setm.\x0dsetm. passada\x0csetm. vi" + - "nent\x03dia\x0eabans-d’ahir\x04ahir\x04avui\x05demà\x0cdemà passat\x13d’" + - "aquí a {0} dia\x14d’aquí a {0} dies\x0afa {0} dia\x0bfa {0} dies\x11dia " + - "de la setmana\x0fdiumenge passat\x0faquest diumenge\x0fdiumenge que ve" + - "\x18d’aquí a {0} diumenge\x19d’aquí a {0} diumenges\x0ffa {0} diumenge" + - "\x10fa {0} diumenges\x0adg. passat\x0aaquest dg.\x0adg. que ve\x13d’aquí" + - " a {0} dg.\x0afa {0} dg.\x0edilluns passat\x0eaquest dilluns\x0edilluns " + - "que ve\x17d’aquí a {0} dilluns\x0efa {0} dilluns\x0adl. passat\x0aaquest" + - " dl.\x0adl. que ve\x13d’aquí a {0} dl.\x0afa {0} dl.\x0edimarts passat" + - "\x0eaquest dimarts\x0edimarts que ve\x17d’aquí a {0} dimarts\x0efa {0} d" + - "imarts\x0adt. passat\x0aaquest dt.\x0adt. que ve\x13d’aquí a {0} dt.\x0a" + - "fa {0} dt.\x0fdimecres passat\x0faquest dimecres\x0fdimecres que ve\x18d" + - "’aquí a {0} dimecres\x0ffa {0} dimecres\x0adc. passat\x0aaquest dc." + - "\x0adc. que ve\x13d’aquí a {0} dc.\x0afa {0} dc.\x0ddijous passat\x0daqu" + - "est dijous\x0ddijous que ve\x16d’aquí a {0} dijous\x0dfa {0} dijous\x0ad" + - "j. passat\x0aaquest dj.\x0adj. que ve\x13d’aquí a {0} dj.\x0afa {0} dj." + - "\x10divendres passat\x10aquest divendres\x10divendres que ve\x19d’aquí a" + - " {0} divendres\x10fa {0} divendres\x0adv. passat\x0aaquest dv.\x0adv. qu" + - "e ve\x13d’aquí a {0} dv.\x0afa {0} dv.\x0fdissabte passat\x0faquest diss" + - "abte\x0fdissabte que ve\x18d’aquí a {0} dissabte\x19d’aquí a {0} dissabt" + - "es\x0ffa {0} dissabte\x10fa {0} dissabtes\x0ads. passat\x0aaquest ds." + - "\x0ads. que ve\x13d’aquí a {0} ds.\x0afa {0} ds.\x0ba. m./p. m.\x0caques" + - "ta hora\x14d’aquí a {0} hora\x15d’aquí a {0} hores\x0bfa {0} hora\x0cfa " + - "{0} hores\x11d’aquí a {0} h\x08fa {0} h\x11d‘aquí a {0} h\x05minut\x0caq" + - "uest minut\x15d’aquí a {0} minut\x16d’aquí a {0} minuts\x0cfa {0} minut" + - "\x0dfa {0} minuts\x13d’aquí a {0} min\x0afa {0} min\x05segon\x15d’aquí a" + - " {0} segon\x16d’aquí a {0} segons\x0cfa {0} segon\x0dfa {0} segons\x11d’" + - "aquí a {0} s\x08fa {0} s\x0afus horari\x0cHora de: {0}\x15Horari d’estiu" + - ", {0}\x14Hora estàndard, {0}\x19Temps universal coordinat\x19Hora d’esti" + - "u britànica\x1bHora estàndard d’Irlanda\x16Hora de l’Afganistan\x1bHora " + - "de l’Àfrica Central\x1cHora de l’Àfrica Oriental&Hora estàndard del sud " + - "de l’Àfrica\x1eHora de l’Àfrica Occidental)Hora estàndard de l’Àfrica Oc" + - "cidental(Hora d’estiu de l’Àfrica Occidental\x0fHora d’Alaska\x1aHora es" + - "tàndard d’Alaska\x19Hora d’estiu d’Alaska\x14Hora de l’Amazones\x1fHora " + - "estàndard de l’Amazones\x1eHora d’estiu de l’Amazones\x22Hora central d’" + - "Amèrica del Nord-Hora estàndard central d’Amèrica del Nord,Hora d’estiu " + - "central d’Amèrica del Nord#Hora oriental d’Amèrica del Nord.Hora estànda" + - "rd oriental d’Amèrica del Nord-Hora d’estiu oriental d’Amèrica del Nord&" + - "Hora de muntanya d’Amèrica del Nord1Hora estàndard de muntanya d’Amèrica" + - " del Nord0Hora d’estiu de muntanya d’Amèrica del Nord\x11Hora del Pacífi" + - "c\x1cHora estàndard del Pacífic\x1bHora d’estiu del Pacífic\x0fHora d’An" + - "adyr\x1aHora estàndard d’Anadyr\x1bHorari d’estiu d’Anadyr\x0dHora d’Api" + - "a\x18Hora estàndard d’Apia\x17Hora d’estiu d’Apia\x0aHora àrab\x15Hora e" + - "stàndard àrab\x14Hora d’estiu àrab\x15Hora de l’Argentina Hora estàndard" + - " de l’Argentina\x1fHora d’estiu de l’Argentina!Hora de l’oest de l’Argen" + - "tina,Hora estàndard de l’oest de l’Argentina+Hora d’estiu de l’oest de l" + - "’Argentina\x11Hora d’Armènia\x1cHora estàndard d’Armènia\x1bHora d’est" + - "iu d’Armènia\x15Hora de l’Atlàntic Hora estàndard de l’Atlàntic\x1fHora " + - "d’estiu de l’Atlàntic\x1bHora d’Austràlia Central&Hora estàndard d’Austr" + - "àlia Central%Hora d’estiu d’Austràlia Central%Hora d’Austràlia centre-o" + - "ccidental0Hora estàndard d’Austràlia centre-occidental/Hora d’estiu d’Au" + - "stràlia centre-occidental\x1cHora d’Austràlia Oriental'Hora estàndard d’" + - "Austràlia Oriental&Hora d’estiu d’Austràlia Oriental\x1eHora d’Austràlia" + - " Occidental)Hora estàndard d’Austràlia Occidental(Hora d’estiu d’Austràl" + - "ia Occidental\x14Hora d’Azerbaidjan\x1fHora estàndard d’Azerbaidjan\x1eH" + - "ora d’estiu d’Azerbaidjan\x13Hora de les Açores\x1eHora estàndard de les" + - " Açores\x1dHora d’estiu de les Açores\x13Hora de Bangla Desh\x1eHora est" + - "àndard de Bangla Desh\x1dHora d’estiu de Bangla Desh\x0eHora de Bhutan" + - "\x10Hora de Bolívia\x11Hora de Brasília\x1cHora estàndard de Brasília" + - "\x1bHora d’estiu de Brasília\x19Hora de Brunei Darussalam\x10Hora de Cap" + - " Verd\x1bHora estàndard de Cap Verd\x1aHora d’estiu de Cap Verd\x10Hora " + - "de Chamorro\x0fHora de Chatham\x1aHora estàndard de Chatham\x19Hora d’es" + - "tiu de Chatham\x0cHora de Xile\x17Hora estàndard de Xile\x16Hora d’estiu" + - " de Xile\x0fHora de la Xina\x1aHora estàndard de la Xina\x19Hora d’estiu" + - " de la Xina\x12Hora de Choibalsan\x1dHora estàndard de Choibalsan\x1cHor" + - "a d’estiu de Choibalsan\x12Hora de Kiritimati\x17Hora de les illes Cocos" + - "\x11Hora de Colòmbia\x1cHora estàndard de Colòmbia\x1bHora d’estiu de Co" + - "lòmbia\x16Hora de les illes Cook!Hora estàndard de les illes Cook#Hora d" + - "e mig estiu de les illes Cook\x0cHora de Cuba\x17Hora estàndard de Cuba" + - "\x16Hora d’estiu de Cuba\x0dHora de Davis\x1aHora de Dumont-d’Urville" + - "\x16Hora de Timor Oriental\x1aHora de l’illa de Pasqua%Hora estàndard de" + - " l’illa de Pasqua$Hora d’estiu de l’illa de Pasqua\x13Hora de l’Equador" + - "\x1aHora del Centre d’Europa%Hora estàndard del Centre d’Europa$Hora d’e" + - "stiu del Centre d’Europa\x1aHora de l’Est d’Europa%Hora estàndard de l’E" + - "st d’Europa$Hora d’estiu de l’Est d’Europa!Hora de l’Extrem Orient Europ" + - "eu\x1bHora de l’Oest d’Europa&Hora estàndard de l’Oest d’Europa%Hora d’e" + - "stiu de l’Oest d’Europa\x1aHora de les illes Malvines%Hora estàndard de " + - "les illes Malvines$Hora d’estiu de les illes Malvines\x0cHora de Fiji" + - "\x17Hora estàndard de Fiji\x16Hora d’estiu de Fiji\x1bHora de la Guaiana" + - " Francesa%Hora d’Antàrtida i França del Sud\x12Hora de Galápagos\x0fHora" + - " de Gambier\x10Hora de Geòrgia\x1bHora estàndard de Geòrgia\x1aHora d’es" + - "tiu de Geòrgia\x19Hora de les illes Gilbert\x1eHora del Meridià de Green" + - "wich\x1eHora de l’Est de Grenlàndia)Hora estàndard de l’Est de Grenlàndi" + - "a(Hora d’estiu de l’Est de Grenlàndia\x1fHora de l’Oest de Grenlàndia*Ho" + - "ra estàndard de l’Oest de Grenlàndia)Hora d’estiu de l’Oest de Grenlàndi" + - "a\x0dHora del Golf\x0eHora de Guyana\x19Hora de Hawaii-Aleutianes$Hora e" + - "stàndard de Hawaii-Aleutianes#Hora d’estiu de Hawaii-Aleutianes\x11Hora " + - "de Hong Kong\x1cHora estàndard de Hong Kong\x1bHora d’estiu de Hong Kong" + - "\x0cHora de Hovd\x17Hora estàndard de Hovd\x16Hora d’estiu de Hovd\x1dHo" + - "ra estàndard de l’Índia\x18Hora de l’oceà Índic\x11Hora d’Indoxina\x1bHo" + - "ra central d’Indonèsia\x1eHora de l’est d’Indonèsia\x1fHora de l’oest d’" + - "Indonèsia\x0dHora d’Iran\x18Hora estàndard d’Iran\x17Hora d’estiu d’Iran" + - "\x10Hora d’Irkutsk\x1bHora estàndard d’Irkutsk\x1aHora d’estiu d’Irkutsk" + - "\x0fHora d’Israel\x1aHora estàndard d’Israel\x19Hora d’estiu d’Israel" + - "\x0eHora del Japó\x19Hora estàndard del Japó\x18Hora d’estiu del Japó" + - "\x11Hora de Kamtxatka-Hora estàndard de Petropavlovsk de Kamtxatka.Horar" + - "i d’estiu de Petropavlovsk de Kamtxatka\x1eHora de l’est del Kazakhstan" + - "\x1fHora de l’oest del Kazakhstan\x0dHora de Corea\x18Hora estàndard de " + - "Corea\x17Hora d’estiu de Corea\x0eHora de Kosrae\x13Hora de Krasnoiarsk" + - "\x1eHora estàndard de Krasnoiarsk\x1dHora d’estiu de Krasnoiarsk\x15Hora" + - " del Kirguizistan\x14Hora de Line Islands\x11Hora de Lord Howe\x1cHora e" + - "stàndard de Lord Howe\x1dHorari d’estiu de Lord Howe\x0dHora de Macau" + - "\x18Hora estàndard de Macau\x17Hora d’estiu de Macau\x11Hora de Macquari" + - "e\x0fHora de Magadan\x1aHora estàndard de Magadan\x19Hora d’estiu de Mag" + - "adan\x11Hora de Malàisia\x14Hora de les Maldives\x15Hora de les Marquese" + - "s\x1aHora de les illes Marshall\x0fHora de Maurici\x1aHora estàndard de " + - "Maurici\x19Hora d’estiu de Maurici\x0eHora de Mawson\x1cHora del nord-oe" + - "st de Mèxic'Hora estàndard del nord-oest de Mèxic&Hora d’estiu del nord-" + - "oest de Mèxic\x1bHora del Pacífic de Mèxic&Hora estàndard del Pacífic de" + - " Mèxic%Hora d’estiu del Pacífic de Mèxic\x13Hora d’Ulan Bator\x1eHora es" + - "tàndard d’Ulan Bator\x1dHora d’estiu d’Ulan Bator\x0eHora de Moscou\x19H" + - "ora estàndard de Moscou\x18Hora d’estiu de Moscou\x0fHora de Myanmar\x0d" + - "Hora de Nauru\x0eHora del Nepal\x17Hora de Nova Caledònia\x22Hora estànd" + - "ard de Nova Caledònia!Hora d’estiu de Nova Caledònia\x14Hora de Nova Zel" + - "anda\x1fHora estàndard de Nova Zelanda\x1eHora d’estiu de Nova Zelanda" + - "\x11Hora de Terranova\x1cHora estàndard de Terranova\x1bHora d’estiu de " + - "Terranova\x0cHora de Niue\x19Hora de les illes Norfolk\x1bHora de Fernan" + - "do de Noronha&Hora estàndard de Fernando de Noronha%Hora d’estiu de Fern" + - "ando de Noronha\x13Hora de Novosibirsk\x1eHora estàndard de Novosibirsk" + - "\x1dHora d’estiu de Novosibirsk\x0dHora d’Omsk\x18Hora estàndard d’Omsk" + - "\x17Hora d’estiu d’Omsk\x11Hora del Pakistan\x1cHora estàndard del Pakis" + - "tan\x1bHora d’estiu del Pakistan\x0dHora de Palau\x19Hora de Papua Nova " + - "Guinea\x11Hora del Paraguai\x1cHora estàndard del Paraguai\x1bHora d’est" + - "iu del Paraguai\x0eHora del Perú\x19Hora estàndard del Perú\x18Hora d’es" + - "tiu del Perú\x11Hora de Filipines\x1cHora estàndard de Filipines\x1bHora" + - " d’estiu de Filipines\x19Hora de les illes Phoenix\x1fHora de Saint-Pier" + - "re i Miquelon*Hora estàndard de Saint-Pierre i Miquelon)Hora d’estiu de " + - "Saint-Pierre i Miquelon\x10Hora de Pitcairn\x0eHora de Ponape\x11Hora de" + - " Pyongyang\x0fHora de Reunió\x0fHora de Rothera\x10Hora de Sakhalin\x1bH" + - "ora estàndard de Sakhalin\x1aHora d’estiu de Sakhalin\x0eHora de Samara" + - "\x19Hora estàndard de Samara\x18Hora d’estiu de Samara\x0dHora de Samoa" + - "\x18Hora estàndard de Samoa\x17Hora d’estiu de Samoa\x16Hora de les Seyc" + - "helles\x10Hora de Singapur\x0fHora de Salomó\x18Hora de Geòrgia del Sud" + - "\x0fHora de Surinam\x0dHora de Syowa\x0fHora de Tahití\x0eHora de Taipei" + - "\x19Hora estàndard de Taipei\x18Hora d’estiu de Taipei\x14Hora del Tadji" + - "kistan\x0fHora de Tokelau\x0dHora de Tonga\x18Hora estàndard de Tonga" + - "\x17Hora d’estiu de Tonga\x0dHora de Chuuk\x15Hora del Turkmenistan Hora" + - " estàndard del Turkmenistan\x1fHora d’estiu del Turkmenistan\x0eHora de " + - "Tuvalu\x13Hora de l’Uruguai\x1eHora estàndard de l’Uruguai\x1dHora d’est" + - "iu de l’Uruguai\x16Hora de l’Uzbekistan!Hora estàndard de l’Uzbekistan H" + - "ora d’estiu de l’Uzbekistan\x0eHora de Vanatu\x19Hora estàndard de Vanat" + - "u\x18Hora d’estiu de Vanatu\x12Hora de Veneçuela\x13Hora de Vladivostok" + - "\x1eHora estàndard de Vladivostok\x1dHora d’estiu de Vladivostok\x11Hora" + - " de Volgograd\x1cHora estàndard de Volgograd\x1bHora d’estiu de Volgogra" + - "d\x0eHora de Vostok\x0cHora de Wake\x17Hora de Wallis i Futuna\x0fHora d" + - "e Iakutsk\x1aHora estàndard de Iakutsk\x19Hora d’estiu de Iakutsk\x15Hor" + - "a d’Ekaterinburg Hora estàndard d’Ekaterinburg\x1fHora d’estiu d’Ekateri" + - "nburg" - -var bucket17 string = "" + // Size: 14666 bytes - "\x06янв\x06фев\x06мар\x06апр\x06май\x06июн\x06июл\x06авг\x06сен\x06окт" + - "\x06ноя\x06дек\x0cянварь\x0eфевраль\x08март\x0cапрель\x08июнь\x08июль" + - "\x0cавгуст\x10сентябрь\x0eоктябрь\x0cноябрь\x0eдекабрь\x15кӀиранан де" + - "\x13оршотан де\x13шинарин де\x13кхаарин де\x0fеарин де\x17пӀераскан де" + - "\x0bшот де\x171-гӀа квартал\x172-гӀа квартал\x173-гӀа квартал\x174-гӀа к" + - "вартал\x06мур\x04шо\x1bдаханчу шарахь\x1bкарарчу шарахь\x1dрогӀерчу шар" + - "ахь\x15{0} шо даьлча\x15{0} шо хьалха\x03ш.\x14{0} ш. даьлча\x14{0} ш. " + - "хьалха\x0eКвартал\x1d{0} квартал яьлча\x1f{0} квартал хьалха\x14{0} кв." + - " яьлча\x16{0} кв. хьалха\x08бутт\x1dбаханчу баттахь\x1dкарарчу баттахь" + - "\x1fрогӀерчу баттахь\x19{0} бутт баьлча\x19{0} бутт хьалха\x07бут.\x14{0" + - "} б. баьлча\x14{0} б. хьалха\x0aкӀира\x1fдаханчу кӀирнахь\x1fкарарчу кӀи" + - "рнахь!рогӀерчу кӀирнахь\x1b{0} кӀира даьлча\x1b{0} кӀира хьалха\x09кӀир" + - ".\x1a{0} кӀир. даьлча\x1a{0} кӀир. хьалха\x04де\x0eселхана\x0cтахана\x0a" + - "кхана\x15{0} де даьлча\x15{0} де хьалха\x14{0} д. даьлча\x14{0} д. хьал" + - "ха\x11де хьалха\x11кӀиран де.даханчу кӀиранан дийнахь.карарчу кӀиранан " + - "дийнахь0рогӀерчу кӀиранан дийнахь#даханчу кӀиранан д.#карарчу кӀиранан " + - "д.%рогӀерчу кӀиранан д.$рогӀерчу кӀиранан д,даханчу оршотан дийнахь,кар" + - "арчу оршотан дийнахь.рогӀерчу оршотан дийнахь!даханчу оршотан д.\x1fкар" + - "ара оршотан д.#рогӀерчу оршотан д.,даханчу шинарин дийнахь,карарчу шина" + - "рин дийнахь.рогӀерчу шинарин дийнахь!даханчу шинарин д.!карарчу шинарин" + - " д.#рогӀерчу шинарин д.,даханчу кхаарин дийнахь,карарчу кхаарин дийнахь." + - "рогӀерчу кхаарин дийнахь!даханчу кхаарин д.!карарчу кхаарин д.#рогӀерчу" + - " кхаарин д.(даханчу еарин дийнахь(карарчу еарин дийнахь*рогӀерчу еарин д" + - "ийнахь\x1dдаханчу еарин д.\x1dкарарчу еарин д.\x1fрогӀерчу еарин д.0дах" + - "анчу пӀераскан дийнахь0карарчу пӀераскан дийнахь2рогӀерчу пӀераскан дий" + - "нахь%даханчу пӀераскан д.%карарчу пӀераскан д.'рогӀерчу пӀераскан д.#да" + - "ханчу шотдийнахь#карарчу шотдийнахь%рогӀерчу шотдийнахь\x18даханчу шотд" + - ".'карарчу даханчу шотд.)рогӀерчу даханчу шотд.\x1bделкъал тӀехьа\x0aсахь" + - "т\x1b{0} сахьт даьлча\x1b{0} сахьт хьалха\x09сахь.\x1a{0} сахь. даьлча" + - "\x1a{0} сахь. хьалха\x0aминот\x19{0} минот яьлча\x1b{0} минот хьалха\x07" + - "мин.\x16{0} мин. яьлча\x18{0} мин. хьалха\x1b{0} секунд яьлча\x1d{0} се" + - "кунд хьалха\x07сек.\x16{0} сек. яьлча\x18{0} сек. хьалха\x15сахьтан аса" + - ")Британин, аьхкенан хан'Ирланди, аьхкенан хан\x1fОвхӀан-пачхьалкх\x1bЮкк" + - "ъера Африка\x1fМалхбален Африка\x19Къилба Африка\x1fМалхбузен Африка<Ма" + - "лхбузен Африка, стандартан хан8Малхбузен Африка, аьхкенан хан\x0cАляска" + - ")Аляска, стандартан хан%Аляска, аьхкенан хан\x10Амазонка-Амазонка, станд" + - "артан хан)Амазонка, аьхкенан хан\x1dЮккъера Америка:Юккъера Америка, ст" + - "андартан хан6Юккъера Америка, аьхкенан хан!Малхбален Америка>Малхбален " + - "Америка, стандартан хан:Малхбален Америка, аьхкенан хан Лаьмнийн хан (А" + - "ЦШ)5Лаьмнийн стандартан хан (АЦШ)1Лаьмнийн аьхкенан хан (АЦШ) Тийна оке" + - "анан хан5Тийна океанан стандартан хан1Тийна океанан аьхкенан хан\x1bхан" + - " Апиа, Самоа0стандартан хан Апиа, Самоа,аьхкенан хан Апиа, Самоа\x1bСаӀу" + - "дийн Арави8СаӀудийн Арави, стандартан хан4СаӀудийн Арави, аьхкенан хан" + - "\x12Аргентина/Аргентина, стандартан хан+Аргентина, аьхкенан хан%Малхбузе" + - "н АргентинаBМалхбузен Аргентина, стандартан хан>Малхбузен Аргентина, аь" + - "хкенан хан\x14Эрмалойчоь1Эрмалойчоь, стандартан хан-Эрмалойчоь, аьхкена" + - "н хан\x1bАтлантикан хан0Атлантикан стандартан хан,Атлантикан аьхкенан х" + - "ан\x1fЮккъера Австрали<Юккъера Австрали, стандартан хан8Юккъера Австрал" + - "и, аьхкенан хан:Юккъера Австрали, малхбузен ханOЮккъера Австрали, малхб" + - "узен стандартан ханKЮккъера Австрали, малхбузен аьхкенан хан#Малхбален " + - "Австрали@Малхбален Австрали, стандартан хан<Малхбален Австрали, аьхкена" + - "н хан#Малхбузен Австрали@Малхбузен Австрали, стандартан хан<Малхбузен А" + - "встрали, аьхкенан хан\x16Азербайджан3Азербайджан, стандартан хан/Азерба" + - "йджан, аьхкенан хан\x1fАзоран гӀайренаш<Азоран гӀайренаш, стандартан ха" + - "н8Азоран гӀайренаш, аьхкенан хан\x12Бангладеш/Бангладеш, стандартан хан" + - "+Бангладеш, аьхкенан хан\x0aБутан\x0cБоливи\x0eБразили+Бразили, стандарт" + - "ан хан'Бразили, аьхкенан хан!Бруней-Даруссалам\x13Кабо-Верде0Кабо-Верде" + - ", стандартан хан,Кабо-Верде, аьхкенан хан\x0eЧаморро\x0aЧатем'Чатем, ста" + - "ндартан хан#Чатем, аьхкенан хан\x08Чили%Чили, стандартан хан!Чили, аьхк" + - "енан хан\x0aКитай'Китай, стандартан хан#Китай, аьхкенан хан\x12Чойбалса" + - "н/Чойбалсан, стандартан хан+Чойбалсан, аьхкенан хан:Ӏийса пайхамар винч" + - "у ден гӀайре\x1dКокосийн, гӀ-наш\x0eКолумби+Колумби, стандартан хан'Кол" + - "умби, аьхкенан хан\x17Кукан, гӀ-наш4Кукан, гӀ-наш, стандартан хан0Кукан" + - ", гӀ-наш, аьхкенан хан\x08Куба%Куба, стандартан хан!Куба, аьхкенан хан" + - "\x0cДейвис\x1cДюмон-д’Юрвиль\x1dМалхбален Тимор\x19Мархин гӀайре6Мархин " + - "гӀайре, стандартан хан2Мархин гӀайре, аьхкенан хан\x0eЭквадор\x1bЮккъер" + - "а Европа8Юккъера Европа, стандартан хан4Юккъера Европа, аьхкенан хан" + - "\x1fМалхбален Европа<Малхбален Европа, стандартан хан8Малхбален Европа, " + - "аьхкенан хан;Калининградера а, Минскера а хан\x1fМалхбузен Европа<Малхб" + - "узен Европа, стандартан хан8Малхбузен Европа, аьхкенан хан'Фолклендан г" + - "ӀайренашDФолклендан гӀайренаш, стандартан хан@Фолклендан гӀайренаш, аьх" + - "кенан хан\x0aФиджи'Фиджи, стандартан хан#Фиджи, аьхкенан хан!Французийн" + - " ГвианаFФранцузийн къилба а, Антарктидан а хан)Галапагосан гӀайренаш\x0c" + - "Гамбье\x14Гуьржийчоь1Гуьржийчоь, стандартан хан-Гуьржийчоь, аьхкенан ха" + - "н\x1fГилбертан, гӀ-наш(Гринвичица юкъара хан%Малхбален ГренландиBМалхба" + - "лен Гренланди, стандартан хан>Малхбален Гренланди, аьхкенан хан%Малхбуз" + - "ен ГренландиBМалхбузен Гренланди, стандартан хан>Малхбузен Гренланди, а" + - "ьхкенан хан\x1bГӀажарийн айма\x0cГайана$Гавайн-алеутийн хан9Гавайн-алеу" + - "тийн стандартан хан5Гавайн-алеутийн аьхкенан хан\x0eГонконг+Гонконг, ст" + - "андартан хан'Гонконг, аьхкенан хан\x08Ховд%Ховд, стандартан хан!Ховд, а" + - "ьхкенан хан\x08Инди\x15Индин океан\x12Индокитай\x1fЮккъера Индонези#Мал" + - "хбален Индонези#Малхбузен Индонези\x16ГӀажарийчоь3ГӀажарийчоь, стандарт" + - "ан хан/ГӀажарийчоь, аьхкенан хан\x0eИркутск+Иркутск, стандартан хан'Ирк" + - "утск, аьхкенан хан\x0eИзраиль+Израиль, стандартан хан'Израиль, аьхкенан" + - " хан\x0aЯпони'Япони, стандартан хан#Япони, аьхкенан хан%Малхбален Казахс" + - "тан%Малхбузен Казахстан\x0aКорей'Корей, стандартан хан#Корей, аьхкенан " + - "хан\x0cКосраэ\x14Красноярск1Красноярск, стандартан хан-Красноярск, аьхк" + - "енан хан\x0eКиргизи\x15Лайн, гӀ-наш\x0fЛорд-Хау,Лорд-Хау, стандартан ха" + - "н(Лорд-Хау, аьхкенан хан\x10Маккуори\x0eМагадан+Магадан, стандартан хан" + - "'Магадан, аьхкенан хан\x0eМалайзи\x12Мальдиваш\x1dМаркизан, гӀ-наш\x1eМа" + - "ршалан , гӀ-наш\x0eМаврики+Маврики, стандартан хан'Маврики, аьхкенан ха" + - "н\x0cМоусон=Къилбаседа Американ Мексикан ханRКъилбаседа Американ Мексик" + - "ан стандартан ханNКъилбаседа Американ Мексикан аьхкенан хан1Тийна океан" + - "ан Мексикан ханFТийна океанан Мексикан стандартан ханBТийна океанан Мек" + - "сикан аьхкенан хан\x13Улан-Батор0Улан-Батор, стандартан хан,Улан-Батор," + - " аьхкенан хан\x0cМосква)Москва, стандартан хан%Москва, аьхкенан хан\x0cМ" + - "ьянма\x0aНауру\x0aНепал\x1bКерла Каледони8Керла Каледони, стандартан ха" + - "н4Керла Каледони, аьхкенан хан\x19Керла Зеланди6Керла Зеланди, стандарт" + - "ан хан2Керла Зеланди, аьхкенан хан\x18Ньюфаундленд5Ньюфаундленд, станда" + - "ртан хан1Ньюфаундленд, аьхкенан хан\x08Ниуэ\x0eНорфолк$Фернанду-ди-Норо" + - "ньяAФернанду-ди-Норонья, стандартан хан=Фернанду-ди-Норонья, аьхкенан х" + - "ан\x16Новосибирск3Новосибирск, стандартан хан/Новосибирск, аьхкенан хан" + - "\x08Омск%Омск, стандартан хан!Омск, аьхкенан хан\x10Пакистан-Пакистан, с" + - "тандартан хан)Пакистан, аьхкенан хан\x0aПалау&Папуа – Керла Гвиней\x10П" + - "арагвай-Парагвай, стандартан хан)Парагвай, аьхкенан хан\x08Перу%Перу, с" + - "тандартан хан!Перу, аьхкенан хан\x14Филиппинаш1Филиппинаш, стандартан х" + - "ан-Филиппинаш, аьхкенан хан\x19Феникс, гӀ-наш%Сен-Пьер а, Микелон аBСен" + - "-Пьер а, Микелон а, стандартан хан>Сен-Пьер а, Микелон а, аьхкенан хан" + - "\x0eПиткэрн\x19Понапе, гӀ-наш\x0eРеюньон\x0cРотера\x0eСахалин+Сахалин, с" + - "тандартан хан'Сахалин, аьхкенан хан\x0aСамоа'Самоа, стандартан хан#Само" + - "а, аьхкенан хан#Сейшелан гӀайренаш\x10Сингапур\x1fСоломонан, гӀ-наш\x19" + - "Къилба Георги\x0eСуринам\x08Сёва\x17Таити, гӀ-наш\x0eТайвань+Тайвань, с" + - "тандартан хан'Тайвань, аьхкенан хан\x16Таджикистан\x0eТокелау\x0aТонга'" + - "Тонга, стандартан хан#Тонга, аьхкенан хан\x08Чуук\x10Туркмени.Туркменин" + - " стандартан хан*Туркменин аьхкенан хан\x0cТувалу\x0eУругвай+Уругвай, ста" + - "ндартан хан'Уругвай, аьхкенан хан\x14Узбекистан4Узбекистанан стандартан" + - " хан0Узбекистанан аьхкенан хан\x0eВануату+Вануату, стандартан хан'Вануат" + - "у, аьхкенан хан\x12Венесуэла\x16Владивосток3Владивосток, стандартан хан" + - "/Владивосток, аьхкенан хан\x12Волгоград/Волгоград, стандартан хан+Волгог" + - "рад, аьхкенан хан\x0cВосток\x11Уэйк, гӀ-е Уоллис а, Футуна а\x0cЯкутск)" + - "Якутск, стандартан хан%Якутск, аьхкенан хан\x18Екатеринбург5Екатеринбур" + - "г, стандартан хан1Екатеринбург, аьхкенан хан\x06май\x08март\x06май\x08и" + - "юнь\x08июль\x0cавгуст\x06мар\x06апр\x06авг\x06окт" - -var bucket18 string = "" + // Size: 18085 bytes - "\x03KBZ\x03KBR\x03KST\x03KKN\x03KTN\x03KMK\x03KMS\x03KMN\x03KMW\x03KKM" + - "\x03KNK\x03KNB\x0bOkwokubanza\x0aOkwakabiri\x0bOkwakashatu\x08Okwakana" + - "\x0bOkwakataana\x0bOkwamukaaga\x0cOkwamushanju\x0bOkwamunaana\x0aOkwamwe" + - "nda\x09Okwaikumi\x12Okwaikumi na kumwe\x12Okwaikumi na ibiri\x03SAN\x03O" + - "RK\x03OKB\x03OKS\x03OKN\x03OKT\x03OMK\x05Sande\x0bOrwokubanza\x0aOrwakab" + - "iri\x0bOrwakashatu\x08Orwakana\x0bOrwakataano\x0bOrwamukaaga\x07KWOTA 1" + - "\x07KWOTA 2\x07KWOTA 3\x07KWOTA 4\x13Kurisito Atakaijire\x10Kurisito Yai" + - "jire\x07Obunaku\x06Omwaka\x06Omwezi\x06Esande\x07Eizooba\x0bNyomwabazyo" + - "\x08Erizooba\x0bNyenkyakare\x14Eizooba ry’okukora\x12Nyomushana/nyekiro" + - "\x06Shaaha\x08Edakiika\x11Obucweka/Esekendi\x0bM/d/y GGGGG\x11{1} ᎤᎾᎢ {0" + - "}\x06ᎤᏃ\x06ᎧᎦ\x06ᎠᏅ\x06ᎧᏬ\x06ᎠᏂ\x06ᏕᎭ\x06ᎫᏰ\x06ᎦᎶ\x06ᏚᎵ\x06ᏚᏂ\x06ᏅᏓ\x06Ꭵ" + - "Ꮝ\x03Ꭴ\x03Ꭷ\x03Ꭰ\x03Ꮥ\x03Ꭻ\x03Ꭶ\x03Ꮪ\x03Ꮕ\x03Ꭵ\x0fᎤᏃᎸᏔᏅ\x09ᎧᎦᎵ\x09ᎠᏅᏱ" + - "\x09ᎧᏬᏂ\x0fᎠᏂᏍᎬᏘ\x0cᏕᎭᎷᏱ\x0cᎫᏰᏉᏂ\x09ᎦᎶᏂ\x0cᏚᎵᏍᏗ\x0cᏚᏂᏅᏗ\x0cᏅᏓᏕᏆ\x0cᎥᏍᎩᏱ" + - "\x09ᏆᏍᎬ\x09ᏉᏅᎯ\x09ᏔᎵᏁ\x09ᏦᎢᏁ\x09ᏅᎩᏁ\x09ᏧᎾᎩ\x09ᏈᏕᎾ\x03Ꮖ\x03Ꮙ\x03Ꮤ\x03Ꮶ" + - "\x03Ꮷ\x06ᏍᎬ\x06ᏅᎯ\x06ᏔᎵ\x06ᏦᎢ\x06ᏅᎩ\x06ᏧᎾ\x06ᏕᎾ\x15ᎤᎾᏙᏓᏆᏍᎬ\x15ᎤᎾᏙᏓᏉᏅᎯ" + - "\x0fᏔᎵᏁᎢᎦ\x0fᏦᎢᏁᎢᎦ\x0fᏅᎩᏁᎢᎦ\x12ᏧᎾᎩᎶᏍᏗ\x15ᎤᎾᏙᏓᏈᏕᎾ\x101st ᎩᏄᏙᏗ\x102nd ᎩᏄᏙᏗ" + - "\x103rd ᎩᏄᏙᏗ\x104th ᎩᏄᏙᏗ\x09ᏌᎾᎴ\x06ᎢᎦ\x12ᏒᎯᏱᎢᏗᏢ\x03Ꮜ\x03Ꭲ\x03Ꮢ)ᏧᏓᎷᎸ ᎤᎷᎯᏍ" + - "Ꮧ ᎦᎶᏁᏛ9ᏧᏓᎷᎸ ᏯᏃᏉ ᏱᎬᏍᏛᏭ ᎠᏓᎴᏂᏍᎬ\x10ᎠᏃ ᏙᎻᏂ,ᏯᏃᏉ ᏱᎬᏍᏛᏭ ᎠᏓᎴᏂᏍᎬ\x12ᏗᏓᎴᏂᏍᎬ\x18Ꭴ" + - "ᏕᏘᏴᏌᏗᏒᎢ\x10ᎡᏘ ᏥᎨᏒ\x19ᎯᎠ ᏧᏕᏘᏴᏒᏘ\x0cᎡᏘᏴᎢ#ᎾᎿ {0} ᎤᏕᏘᏴᏌᏗᏒᎢ&ᎾᎿ {0} ᎢᏧᏕᏘᏴᏌᏗᏒ" + - "Ꭲ&{0} ᎤᏕᏘᏴᏌᏗᏒᎢ ᏥᎨᏒ){0} ᎢᏧᏕᏘᏴᏌᏗᏒᎢ ᏥᎨᏒ\x07ᎤᏕ.\x12ᎾᎿ {0} ᎤᏕ.\x1cᎾᎿ {0} ᎤᏕ" + - ". ᏥᎨᏒ\x0cᎩᏄᏙᏗ\x16ᎩᏄᏙᏗ ᏥᎨᏒ\x13ᎯᎠ ᎩᏄᏙᏗ\x16ᏔᎵᏁ ᎩᏄᏙᏗ\x17ᎾᎿ {0} ᎩᏄᏙᏗ!ᎾᎿ {0} Ꭹ" + - "ᏄᏙᏗ ᏥᎨᏒ\x0aᎩᏄᏘ.\x15ᎾᎿ {0} ᎩᏄᏘ.\x1fᎾᎿ {0} ᎩᏄᏘ. ᏥᎨᏒ\x09ᎧᎸᎢ\x13ᎧᎸᎢ ᏥᎨᏒ" + - "\x10ᎯᎠ ᎧᎸᎢ\x13ᏔᎵᏁ ᎧᎸᎢ\x14ᎾᎿ {0} ᎧᎸᎢ\x17ᎾᎿ {0} ᏗᎧᎸᎢ\x1eᎾᎿ {0} ᎧᎸᎢ ᏥᎨᏒ!ᎾᎿ " + - "{0} ᏗᎧᎸᎢ ᏥᎨᏒ\x07ᎧᎸ.\x12ᎾᎿ {0} ᎧᎸ.\x1cᎾᎿ {0} ᎧᎸ. ᏥᎨᏒ\x06ᎧᎸ\x15ᏒᎾᏙᏓᏆᏍᏗ\x15" + - "ᏥᏛᎵᏱᎵᏒᎢ\x13ᎯᎠ ᎠᎵᎵᏌ\x0fᏐᏆᎴᏅᎲ ᎾᎿ {0} ᏒᎾᏙᏓᏆᏍᏗ#ᎾᎿ {0} ᎢᏳᎾᏙᏓᏆᏍᏗ*ᎾᎿ {0} ᏒᎾᏙᏓ" + - "ᏆᏍᏗ ᏥᎨᏒ-ᎾᎿ {0} ᎢᏳᎾᏙᏓᏆᏍᏗ ᏥᎨᏒ'Ꮎ ᏒᎾᏙᏓᏆᏍᏗ ᎾᏍᎩ {0}\x07ᏒᎾ.\x12ᎾᎿ {0} ᏒᎾ.\x1c" + - "ᎾᎿ {0} ᏒᎾ. ᏥᎨᏒ\x06ᏒᎯ\x0dᎪᎯ ᎢᎦ\x0cᏌᎾᎴᎢ\x11ᎾᎿ {0} ᎢᎦ$ᎾᎿ {0} ᎯᎸᏍᎩ ᏧᏒᎯᏛ" + - "\x14{0} ᎢᎦ ᏥᎨᏒ'{0} ᎯᎸᏍᎩ ᏧᏒᎯᏛ ᏥᎨᏒ\x16ᎢᎦ ᏕᎨᏌᏗᏒ\x1fᎤᎾᏙᏓᏆᏍᎬ ᏥᎨᏒ\x1cᎯᎠ ᎤᎾᏙᏓᏆᏍ" + - "Ꭼ\x1fᏔᎵᏁ ᎤᎾᏙᏓᏆᏍᎬ ᎾᎿ {0} ᎤᎾᏙᏓᏆᏍᎬ#{0} ᎤᎾᏙᏓᏆᏍᎬ ᏥᎨᏒ\x14ᏆᏍᎬ. ᏥᎨᏒ\x11ᎯᎠ ᏆᏍᎬ." + - "\x14ᏔᎵᏁ ᏆᏍᎬ.\x10ᏍᎬ ᏥᎨᏒ\x0dᎯᎠ ᏍᎬ\x10ᏔᎵᏁ ᏍᎬ\x1cᎤᎾᏙᏓᏉᏅ ᏥᎨᏒ\x19ᎯᎠ ᎤᎾᏙᏓᏉᏅ\x1c" + - "ᏔᎵᏁ ᎤᎾᏙᏓᏉᏅ\x1dᎾᎿ {0} ᎤᎾᏙᏓᏉᏅ {0} ᎤᎾᏙᏓᏉᏅ ᏥᎨᏒ\x14ᏉᏅᎯ. ᏥᎨᏒ\x11ᎯᎠ ᏉᏅᎯ.\x14Ꮤ" + - "ᎵᏁ ᏉᏅᎯ.\x0dᏉ ᏥᎨᏒ\x0aᎯᎠ Ꮙ\x0dᏔᎵᏁ Ꮙ\x1aᏔᎵᏁ ᎢᎦ ᏥᎨᏒ\x17ᎯᎠ ᏔᎵᏁ ᎢᎦ\x1aᏔᎵᏁ ᏔᎵ" + - "Ꮑ ᎢᎦ\x1bᎾᎿ {0} ᏔᎵᏁ ᎢᎦ\x1e{0} ᏔᎵᏁ ᎢᎦ ᏥᎨᏒ\x14ᏔᎵᏁ. ᏥᎨᏒ\x11ᎯᎠ ᏔᎵᏁ.\x14ᏔᎵᏁ " + - "ᏔᎵᏁ.\x10ᏔᎵ ᏥᎨᏒ\x0dᎯᎠ ᏔᎵ\x10ᏔᎵᏁ ᏔᎵ\x1aᏦᎢᏁ ᎢᎦ ᏥᎨᏒ\x17ᎯᎠ ᏦᎢᏁ ᎢᎦ\x1aᏔᎵᏁ ᏦᎢ" + - "Ꮑ ᎢᎦ\x1bᎾᎿ {0} ᏦᎢᏁ ᎢᎦ\x1e{0} ᏦᎢᏁ ᎢᎦ ᏥᎨᏒ\x14ᏦᎢᏁ. ᏥᎨᏒ\x11ᎯᎠ ᏦᎢᏁ.\x14ᏔᎵᏁ " + - "ᏦᎢᏁ.\x0dᏦ ᏥᎨᏒ\x0aᎯᎠ Ꮶ\x0dᏔᎵᏁ Ꮶ\x13ᏅᎩᏁ ᏥᎨᏒ\x17ᎯᎠ ᏅᎩᏁ ᎢᎦ\x1aᏔᎵᏁ ᏅᎩᏁ ᎢᎦ" + - "\x1bᎾᎿ {0} ᏅᎩᏁ ᎢᎦ\x1e{0} ᏅᎩᏁ ᎢᎦ ᏥᎨᏒ\x14ᏅᎩᏁ. ᏥᎨᏒ\x11ᎯᎠ ᏅᎩᏁ.\x14ᏔᎵᏁ ᏅᎩᏁ." + - "\x10ᏅᎩ ᏥᎨᏒ\x0dᎯᎠ ᏅᎩ\x10ᏔᎵᏁ ᏅᎩ\x1cᏧᎾᎩᎶᏍᏗ ᏥᎨᏒ\x19ᎯᎠ ᏧᎾᎩᎶᏍᏗ\x1cᏔᎵᏁ ᏧᎾᎩᎶᏍᏗ$Ꮎ" + - "Ꮏ {0} ᏧᎾᎩᎶᏍᏗ ᎢᎦ {0} ᏧᎾᎩᎶᏍᏗ ᏥᎨᏒ\x14ᏧᎾᎩ. ᏥᎨᏒ\x11ᎯᎠ ᏧᎾᎩ.\x14ᏔᎵᏁ ᏧᎾᎩ.\x0dᏧ" + - " ᏥᎨᏒ\x0aᎯᎠ Ꮷ\x0dᏔᎵᏁ Ꮷ\x1fᎤᎾᏙᏓᏈᏕᎾ ᏥᎨᏒ\x1cᎯᎠ ᎤᎾᏙᏓᏈᏕᎾ\x1fᏔᎵᏁ ᎤᎾᏙᏓᏈᏕᎾ'ᎾᎿ {0}" + - " ᎤᎾᏙᏓᏈᏕᎾ ᎢᎦ#{0} ᎤᎾᏙᏓᏈᎨᎾ ᏥᎨᏒ\x14ᏈᏕᎾ. ᏥᎨᏒ\x11ᎯᎠ ᏈᏕᎾ.\x14ᏔᎵᏁ ᏈᏕᎾ.\x10ᏕᎾ ᏥᎨᏒ" + - "\x0dᎯᎠ ᏕᎾ\x10ᏔᎵᏁ ᏕᎾ\x13ᏌᎾᎴ/ᏒᎯᏱ\x0cᏑᏟᎶᏓ\x13ᎯᎠ ᏑᏟᎶᏓ\x17ᎾᎿ {0} ᏑᏟᎶᏓ\x1aᎾᎿ {" + - "0} ᎢᏳᏟᎶᏓ\x1a{0} ᏑᏟᎶᏓ ᏥᎨᏒ\x1d{0} ᎢᏳᏟᎶᏓ ᏥᎨᏒ\x07ᏑᏟ.\x12ᎾᎿ {0} ᏑᏟ.\x1cᎾᎿ {0}" + - " ᏑᏟ. ᏥᎨᏒ\x15ᎢᏯᏔᏬᏍᏔᏅ\x1cᎯᎠ ᎢᏯᏔᏬᏍᏔᏅ ᎾᎿ {0} ᎢᏯᏔᏬᏍᏔᏅ*ᎾᎿ {0} ᎢᏯᏔᏬᏍᏔᏅ ᏥᎨᏒ\x0aᎢ" + - "ᏯᏔ.\x15ᎾᎿ {0} ᎢᏯᏔ.\x1fᎾᎿ {0} ᎢᏯᏔ. ᏥᎨᏒ\x09ᎠᏎᏢ\x06ᏃᏊ\x14ᎾᎿ {0} ᎠᏎᏢ'ᎾᎿ {0" + - "} ᏓᏓᎾᏩᏍᎬ ᏥᎨᏒ\x17{0} ᎠᏎᏢ ᏥᎨᏒ {0} ᏓᏓᎾᏩᏍᎬ ᏥᎨᏒ\x0aᎠᏎᏢ.\x15ᎾᎿ {0} ᎠᏎᏢ.\x18{0}" + - " ᎠᏎᏢ. ᏥᎨᏒ2ᏂᎬᎾᏛ ᏧᏓᎴᏅᏓ ᏓᏟᎢᎵᏍᏒᎢ\x13{0} ᎠᏟᎢᎵᏒ'{0} ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ#{0} ᎠᏟᎶᏍᏗ ᎠᏟ" + - "ᎢᎵᏒ ᏈᏗᏏ ᎪᎩ ᎠᏟᎢᎵᏒ)ᎨᎵᎩ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ%ᎠᏫᎨᏂᏍᏖᏂ ᎠᏟᎢᎵᏒ)ᎠᏰᏟ ᎬᎿᎨᏍᏛ ᎠᏟᎢᎵᏒ,ᏗᎧᎸᎬ ᎬᎿ" + - "ᎨᏍᏛ ᎠᏟᎢᎵᏒ<ᏧᎦᎾᏮ ᎬᎿᎨᏍᏛ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᏭᏕᎵᎬ ᎬᎿᎨᏍᏛ ᎠᏟᎢᎵᏒ<ᏭᏕᎵᎬ ᎬᎿᎨᏍᏛ ᎠᏟᎶᏍᏗ ᎠᏟᎢ" + - "ᎵᏒ3ᏭᏕᎵᎬ ᎬᎿᎨᏍᏛ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎠᎳᏍᎦ ᎠᏟᎢᎵᏒ,ᎠᎳᏍᎦ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ0ᎠᎳᏍᎦ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍ" + - "ᏒᎩ\x1cᎠᎺᏌᏂ ᎠᏟᎢᎵᏒ,ᎠᎺᏌᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᎠᎺᏌᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᎠᏰᏟ ᎠᏟᎢᎵᏒ)ᎠᏰᏟ ᎠᏟᎶᏍᏗ" + - " ᎠᏟᎢᎵᏒ-ᎠᏰᏟ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ#ᏗᎧᎸᎬ ᏗᏜ ᎠᏟᎢᎵᏒ3ᏗᎧᎸᎬ ᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ7ᏗᎧᎸᎬ ᏗᏜ ᎪᎯ ᎢᎦ" + - " ᎠᏟᎢᎵᏍᏒᎩ\x19ᎣᏓᎸ ᎠᏟᎢᎵᏒ)ᎣᏓᎸ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᎣᏓᎸ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ\x1cᏭᏕᎵᎬ ᎠᏟᎢᎵᏒ,ᏭᏕ" + - "ᎵᎬ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ0ᏭᏕᎵᎬ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ\x19ᎠᏈᎠ ᎠᏟᎢᎵᏒ)ᎠᏈᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎠᏈᎠ ᎪᎯ " + - "ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᎠᎴᏈᏯ ᎠᏟᎢᎵᏒ,ᎠᎴᏈᏯ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᎠᎴᏈᏯ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x22ᎠᏥᏂᏘᏂᎠ Ꭰ" + - "ᏟᎢᎵᏒ2ᎠᏥᏂᏘᏂᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᎠᏥᏂᏘᏂᎠ ᎪᎩ ᎠᏟᎢᎵᏒ6ᏭᏕᎵᎬ ᏗᏜ ᎠᏥᏂᏘᏂᎠ ᎠᏟᎢᎵᏒFᏭᏕᎵᎬ ᏗᏜ Ꭰ" + - "ᏥᏂᏘᏂᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒMᏭᏕᎵᎬ ᏗᏜ ᎠᏥᏂᏘᏂᎠ ᎪᎩ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x1fᎠᎵᎻᏂᎠ ᎠᏟᎢᎵᏒ/ᎠᎵᎻᏂᎠ Ꭰ" + - "ᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ&ᎠᎵᎻᏂᎠ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᏗᎧᎸᎬ ᎠᏟᎢᎵᏒ,ᏗᎧᎸᎬ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ0ᏗᎧᎸᎬ ᎪᎯ ᎢᎦ ᎠᏟ" + - "ᎢᎵᏍᏒᎩ&ᎠᏰᏟ ᎡᎳᏗᏜ ᎠᏟᎢᎵᏒ6ᎠᏰᏟ ᎡᎳᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ7ᎠᏰᏟ ᎡᎳᏗᏜ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ:ᎠᏰᏟ ᎡᎳ" + - "ᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎠᏟᎢᎵᏒJᎠᏰᏟ ᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒKᎠᏰᏟ ᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎪᎯ ᎢᎦ Ꭰ" + - "ᏟᎢᎵᏒᎩ0ᎡᎳᏗᏜ ᏗᎧᎸᎬ ᏗᏜ ᎠᏟᎢᎵᏒ@ᎡᎳᏗᏜ ᏗᎧᎸᎬ ᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒAᎡᎳᏗᏜ ᏗᎧᎸᎬ ᏗᏜ ᎪᎯ ᎢᎦ Ꭰ" + - "ᏟᎢᎵᏒᎩ0ᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎠᏟᎢᎵᏒ@ᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒAᎡᎳᏗᏜ ᏭᏕᎵᎬ ᏗᏜ ᎪᎯ ᎢᎦ Ꭰ" + - "ᏟᎢᎵᏒᎩ\x22ᎠᏏᎵᏆᏌᏂ ᎠᏟᎢᎵᏒ2ᎠᏏᎵᏆᏌᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᎠᏏᎵᏆᏌᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎠᏐᎴᏏ ᎠᏟᎢᎵᏒ" + - ",ᎠᏐᎴᏏ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᎠᏐᎴᏏ ᎪᎩ ᎠᏟᎢᎵᏒ\x22ᏆᏂᎦᎵᏕᏍ ᎠᏟᎢᎵᏒ2ᏆᏂᎦᎵᏕᏍ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᏆᏂᎦᎵᏕ" + - "Ꮝ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᏊᏔᏂ ᎠᏟᎢᎵᏒ\x1cᏉᎵᏫᎠ ᎠᏟᎢᎵᏒ\x1cᏆᏏᎵᏯ ᎠᏟᎢᎵᏒ,ᏆᏏᎵᏯ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#Ꮖ" + - "ᏏᎵᏯ ᎪᎩ ᎠᏟᎢᎵᏒ)ᏊᎾᎢ ᏓᎷᏌᎳᎻ ᎠᏟᎢᎵᏒ/ᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗ ᎠᏟᎢᎵᏒ?ᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ" + - "6ᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗ ᎪᎩ ᎠᏟᎢᎵᏒ)ᏣᎼᎶ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x19ᏣᏝᎻ ᎠᏟᎢᎵᏒ)ᏣᏝᎻ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᏣᏝᎻ Ꭺ" + - "Ꭿ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x16ᏥᎵ ᎠᏟᎢᎵᏒ&ᏥᎵ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x1dᏥᎵ ᎪᎩ ᎠᏟᎢᎵᏒ\x22ᏓᎶᏂᎨᏍᏛ ᎠᏟᎢᎵᏒ2" + - "ᏓᎶᏂᎨᏍᏛ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ3ᏓᎶᏂᎨᏍᏛ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x22ᏦᏱᏆᎵᏌᏂ ᎠᏟᎢᎵᏒ2ᏦᏱᏆᎵᏌᏂ ᎠᏟᎶᏍᏗ ᎠᏟ" + - "ᎢᎵᏒ)ᏦᏱᏆᎵᏌᏂ ᎪᎩ ᎠᏟᎢᎵᏒ5ᏓᏂᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ)ᎪᎪᏍ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ\x22ᎪᎸᎻᏈᎢᎠ ᎠᏟᎢᎵ" + - "Ꮢ2ᎪᎸᎻᏈᎢᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᎪᎸᎻᏈᎢᎠ ᎪᎩ ᎠᏟᎢᎵᏒ8ᎠᏓᏍᏓᏴᎲᏍᎩ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒHᎠᏓᏍᏓᏴᎲᏍᎩ ᏚᎦᏚ" + - "ᏛᎢ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒIᎠᏓᏍᏓᏴᎲᏍᎩ ᏚᎦᏚᏛᎢ ᎠᏰᏟ ᎪᎩ ᎠᏟᎢᎵᏒ\x16ᎫᏆ ᎠᏟᎢᎵᏒ&ᎫᏆ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*" + - "ᎫᏆ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ\x19ᏕᏫᏏ ᎠᏟᎢᎵᏒ/ᏚᎼᎾᏘ-Ꮧ’ᎤᎵᏫᎵ ᎠᏟᎢᎵᏒ&ᏗᎧᎸᎬ ᏘᎼᎵ ᎠᏟᎢᎵᏒ5ᏥᏌᏕᎴᎯᏌᏅ" + - " ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒEᏥᏌᏕᎴᎯᏌᏅ ᎤᎦᏚᏛᎢ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ<ᏥᏌᏕᎴᎯᏌᏅ ᎤᎦᏚᏛᎢ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎡᏆᏙᎵ ᎠᏟ" + - "ᎢᎵᏒ#ᎠᏰᏟ ᏳᎳᏈ ᎠᏟᎢᎵᏒ3ᎠᏰᏟ ᏳᎳᏈ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎠᏰᏟ ᏳᎳᏈ ᎪᎩ ᎠᏟᎢᎵᏒ-ᏗᎧᎸᎬ ᏗᏜ ᏳᎳᏈ ᎠᏟᎢ" + - "ᎵᏒ=ᏗᎧᎸᎬ ᏗᏜ ᏳᎳᏈ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ4ᏗᎧᎸᎬ ᏗᏜ ᏳᎳᏈ ᎪᎩ ᎠᏟᎢᎵᏒ&ᏗᎧᎸᎬ ᏳᎳᏈ ᎠᏟᎢᎵᏒ-ᏭᏕᎵᎬ ᏗᏜ" + - " ᏳᎳᏈ ᎠᏟᎢᎵᏒ=ᏭᏕᎵᎬ ᏗᏜ ᏳᎳᏈ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ4ᏭᏕᎵᎬ ᏗᏜ ᏳᎳᏈ ᎪᎩ ᎠᏟᎢᎵᏒ&ᏩᎩ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ6Ꮹ" + - "Ꭹ ᏚᎦᏚᏛᎢ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᏩᎩ ᏚᎦᏚᏛᎢ ᎪᎩ ᎠᏟᎢᎵᏒ\x16ᏫᏥ ᎠᏟᎢᎵᏒ&ᏫᏥ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x1dᏫᏥ" + - " ᎪᎩ ᎠᏟᎢᎵᏒ&ᎠᏂᎦᎸ ᏈᏯᎾ ᎠᏟᎢᎵᏒCᎠᏂᎦᎸᏥ ᎤᎦᏃᏮ ᎠᎴ ᎤᏁᏍᏓᎶ ᎠᏟᎢᎵᏒ0ᎡᏆ ᏓᎦᏏ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ" + - "\x1cᎦᎻᏇᎵ ᎠᏟᎢᎵᏒ\x1cᏣᎠᏥᎢ ᎠᏟᎢᎵᏒ,ᏣᎠᏥᎢ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᏣᎠᏥᎢ ᎪᎩ ᎠᏟᎢᎵᏒ,ᎩᎵᏇᏘ ᏚᎦᏚᏛᎢ Ꭰ" + - "ᏟᎢᎵᏒ#ᎢᏤ ᎢᏳᏍᏗ ᎠᏟᎢᎵᏒ,ᏗᎧᎸᎬ ᎢᏤᏍᏛᏱ ᎠᎵᎢᎵᏒ<ᏗᎧᎸᎬ ᎢᏤᏍᏛᏱ ᎠᏟᎶᏍᏗ ᎠᎵᎢᎵᏒ3ᏗᎧᎸᎬ ᎢᏤᏍᏛᏱ " + - "ᎪᎩ ᎠᏟᎢᎵᏒ,ᏭᏕᎵᎬ ᎢᏤᏍᏛᏱ ᎠᎵᎢᎵᏒ<ᏭᏕᎵᎬ ᎢᏤᏍᏛᏱ ᎠᏟᎶᏍᏗ ᎠᎵᎢᎵᏒ3ᏭᏕᎵᎬ ᎢᏤᏍᏛᏱ ᎪᎩ ᎠᏟᎢᎵᏒ/Ꭱ" + - "ᏉᏄᎸᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x19ᎦᏯᎾ ᎠᏟᎢᎵᏒ,ᎭᏩᏱ-ᎠᎵᏳᏏᎠᏂ ᎠᏟᎢᎵᏒ<ᎭᏩᏱ-ᎠᎵᏳᏏᎠᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ@" + - "ᎭᏩᏱ-ᎠᎵᏳᏏᎠᏂ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ#ᎰᏂᎩ ᎪᏂᎩ ᎠᏟᎢᎵᏒ3ᎰᏂᎩ ᎪᏂᎩ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎰᏂᎩ ᎪᏂᎩ ᎪᎩ " + - "ᎠᏟᎢᎵᏒ\x19ᎰᏩᏗ ᎠᏟᎢᎵᏒ)ᎰᏩᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ ᎰᏩᏗ ᎪᎩ ᎠᏟᎢᎵᏒ/ᎢᏂᏗᎢᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᎠᏂᏴᏫ" + - "Ꮿ ᎠᎺᏉᎯ ᎠᏟᎢᎵᏒ+ᎢᏂᏙᏓᎶᏂᎨᏍᏛ ᎠᏟᎢᎵᏒ,ᎠᏰᏟ ᎢᏂᏙᏂᏍᏯ ᎠᏟᎢᎵᏒ6ᏗᎧᎸᎬ ᏗᏜ ᎢᏂᏙᏂᏍᏯ ᎠᏟᎢᎵᏒ6ᏭᏕᎵ" + - "Ꭼ ᏗᏜ ᎢᏂᏙᏂᏍᏯ ᎠᏟᎢᎵᏒ\x19ᎢᎳᏂ ᎠᏟᎢᎵᏒ)ᎢᎳᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎢᎳᏂ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᎢᎫᏥ" + - "Ꭷ ᎠᏟᎢᎵᏒ,ᎢᎫᏥᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᎢᎫᏥᎧ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎢᏏᎵᏱ ᎠᏟᎢᎵᏒ,ᎢᏏᎵᏱ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-" + - "ᎢᏏᎵᏱ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᏣᏩᏂᏏ ᎠᏟᎢᎵᏒ,ᏣᏩᏂᏏ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᏣᏩᏂᏏ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ/ᏗᎧᎸ" + - "Ꭼ ᎧᏎᎧᏍᏕᏂ ᎠᏟᎢᎵᏒ/ᏭᏕᎵᎬ ᎧᏎᎧᏍᏕᏂ ᎠᏟᎢᎵᏒ\x1cᎪᎵᎠᏂ ᎠᏟᎢᎵᏒ,ᎪᎵᎠᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ-ᎪᎵᎠᏂ Ꭺ" + - "Ꭿ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x19ᎪᏍᎴ ᎠᏟᎢᎵᏒ\x22ᏝᏍᏃᏯᏍᎧ ᎠᏟᎢᎵᏒ2ᏝᏍᏃᏯᏍᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᏝᏍᏃᏯᏍᎧ ᎪᎩ " + - "ᎠᏟᎢᎵᏒ\x1fᎩᎵᏣᎢᏍ ᎠᏟᎢᎵᏒ/ᎠᏍᏓᏅᏅ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ&ᎤᎬᏫᏳᎯ ᎭᏫ ᎠᏟᎢᎵᏒ6ᎤᎬᏫᏳᎯ ᎭᏫ ᎠᏟᎶᏍᏗ Ꭰ" + - "ᏟᎢᎵᏒ7ᎤᎬᏫᏳᎯ ᎭᏫ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ)ᎹᏇᎵ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ\x1cᎹᎦᏓᏂ ᎠᏟᎢᎵᏒ,ᎹᎦᏓᏂ ᎠᏟᎢᎵᏒ ᎠᏟ" + - "ᎢᎵᏒ#ᎹᎦᏓᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x1fᎹᎴᏏᎢᎠ ᎠᏟᎢᎵᏒ\x1fᎹᎵᏗᏫᏍ ᎠᏟᎢᎵᏒ\x1fᎹᎵᎨᏌᏏ ᎠᏟᎢᎵᏒ)ᎹᏌᎵ ᏚᎦᏚ" + - "ᏛᎢ ᎠᏟᎢᎵᏒ\x1fᎼᎵᏏᎥᏍ ᎠᏟᎢᎵᏒ/ᎼᎵᏏᎥᏍ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ&ᎼᎵᏏᎥᏍ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᎹᏌᏂ ᎠᏟᎢᎵᏒ6" + - "ᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎠᏟᎢᎵᏒFᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒJᏧᏴᏢ ᏭᏕᎵᎬ ᎠᏂᏍᏆᏂ ᎪᎯ ᎢᎦ Ꭰ" + - "ᏟᎢᎵᏍᏒᎩ,ᎠᏂᏍᏆᏂ ᏭᏕᎵᎬ ᎠᏟᎢᎵᏒ<ᎠᏂᏍᏆᏂ ᏭᏕᎵᎬ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ@ᎠᏂᏍᏆᏂ ᏭᏕᎵᎬ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒ" + - "Ꭹ#ᎤᎳᏂ ᏆᏙᎸ ᎠᏟᎢᎵᏒ3ᎤᎳᏂ ᏆᏙᎸ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᎤᎳᏂ ᏆᏙᎸ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎹᏍᎦᏫ ᎠᏟᎢᎵᏒ,ᎹᏍᎦ" + - "Ꮻ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᎹᏍᎦᏫ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎹᏯᎹᎵ ᎠᏟᎢᎵᏒ\x16ᎾᎷ ᎠᏟᎢᎵᏒ\x19ᏁᏆᎵ ᎠᏟᎢᎵᏒ)ᎢᏤ " + - "ᎧᎵᏙᏂᎠᏂ ᎠᏟᎢᎵᏒ9ᎢᏤ ᎧᎵᏙᏂᎠᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ0ᎢᏤ ᎧᎵᏙᏂᎠᏂ ᎪᎩ ᎠᏟᎢᎵᏒ&ᎢᏤ ᏏᎢᎴᏂᏗ ᎠᏟᎢᎵᏒ6Ꭲ" + - "Ꮴ ᏏᎢᎴᏂᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ7ᎢᏤ ᏏᎢᎴᏂᏗ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ.ᎢᏤᎤᏂᏩᏛᏓᎦᏙᎯ ᎠᏟᎢᎵᏒ>ᎢᏤᎤᏂᏩᏛᏓᎦᏙᎯ " + - "ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒBᎢᏤᎤᏂᏩᏛᏓᎦᏙᎯ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏍᏒᎩ\x16ᏂᏳ ᎠᏟᎢᎵᏒ/ᏃᎵᏬᎵᎩ ᎤᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ-ᏪᎾᏅ" + - "Ꮩ Ꮥ ᏃᎶᎾᎭ ᎠᏟᎢᎵᏒ=ᏪᎾᏅᏙ Ꮥ ᏃᎶᎾᎭ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ4ᏪᎾᏅᏙ Ꮥ ᏃᎶᎾᎭ ᎪᎩ ᎠᏟᎢᎵᏒ\x22ᏃᏬᏏᏈᏍᎧ " + - "ᎠᏟᎢᎵᏒ2ᏃᏬᏏᏈᏍᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ)ᏃᏬᏏᏈᏍᎧ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᎣᎻᏍᎧ ᎠᏟᎢᎵᏒ,ᎣᎻᏍᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵ" + - "Ꮢ#ᎣᎻᏍᎧ ᎪᎩ ᎠᏟᎢᎵᏒ\x1fᏆᎩᏍᏖᏂ ᎠᏟᎢᎵᏒ/ᏆᎩᏍᏖᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ&ᏆᎩᏍᏖᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x16ᏆᎷ " + - "ᎠᏟᎢᎵᏒ'ᏆᏇ ᎢᏤ ᎩᎢᏂ ᎠᏟᎢᎵᏒ\x19ᏆᎵᏇ ᎠᏟᎢᎵᏒ)ᏆᎵᏇ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ ᏆᎵᏇ ᎪᎩ ᎠᏟᎢᎵᏒ\x16ᏇᎷ " + - "ᎠᏟᎢᎵᏒ&ᏇᎷ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ\x1dᏇᎷ ᎪᎩ ᎠᏟᎢᎵᏒ\x22ᎠᏂᏈᎵᎩᏃ ᎠᏟᎢᎵᏒ2ᎠᏂᏈᎵᎩᏃ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ" + - ")ᎠᏂᏈᎵᎩᏃ ᎪᎩ ᎠᏟᎢᎵᏒ2ᏧᎴᎯᏌᏅᎯ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ7ᎤᏓᏅᏘ ᏈᏰ ᎠᎴ ᎻᏇᎶᏂ ᎠᏟᎢᎵᏒGᎤᏓᏅᏘ ᏈᏰ ᎠᎴ ᎻᏇᎶ" + - "Ꮒ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒHᎤᏓᏅᏘ ᏈᏰ ᎠᎴ ᎻᏇᎶᏂ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᏈᎧᎵᏂ ᎠᏟᎢᎵᏒ\x19ᏉᎾᏇ ᎠᏟᎢᎵᏒ%" + - "ᏈᏯᏂᎩᏰᏂᎩ ᎠᏟᎢᎵᏒ\x1fᎴᏳᏂᎠᏂ ᎠᏟᎢᎵᏒ\x19ᎳᏞᎳ ᎠᏟᎢᎵᏒ\x1cᏌᎧᎵᏂ ᎠᏟᎢᎵᏒ,ᏌᎧᎵᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢ" + - "ᎵᏒ#ᏌᎧᎵᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᏌᎼᎠ ᎠᏟᎢᎵᏒ)ᏌᎼᎠ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᏌᎼᎠ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ\x1cᏎᏤᎴᏏ" + - " ᎠᏟᎢᎵᏒ/ᏏᏂᎦᏉᎵ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᏐᎶᎹᏂ ᏚᎦᏚᏛᎢ ᎠᏟᎢᎵᏒ)ᏧᎦᎾᏮ ᏣᎠᏥᎢ ᎠᏟᎢᎵᏒ\x1cᏒᎵᎾᎻ ᎠᏟᎢᎵᏒ" + - "\x19ᏏᏲᏩ ᎠᏟᎢᎵᏒ\x19ᏔᎯᏘ ᎠᏟᎢᎵᏒ\x19ᏔᏱᏇ ᎠᏟᎢᎵᏒ)ᏔᏱᏇ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ*ᏔᏱᏇ ᎪᎯ ᎢᎦ ᎠᏟᎢᎵᏒᎩ" + - "\x22ᏔᏥᎩᏍᏕᏂ ᎠᏟᎢᎵᏒ\x1cᏙᎨᎳᎤ ᎠᏟᎢᎵᏒ\x19ᏙᎾᎦ ᎠᏟᎢᎵᏒ)ᏙᎾᎦ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ ᏙᎾᎦ ᎪᎩ ᎠᏟᎢᎵᏒ" + - "\x16ᏧᎩ ᎠᏟᎢᎵᏒ(ᏛᎵᎩᎺᏂᏍᏔᏂ ᎠᏟᎢᎵᏒ8ᏛᎵᎩᎺᏂᏍᏔᏂ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ/ᏛᎵᎩᎺᏂᏍᏔᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x19ᏚᏩ" + - "Ꮇ ᎠᏟᎢᎵᏒ\x19ᏳᎷᏇ ᎠᏟᎢᎵᏒ)ᏳᎷᏇ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ ᏳᎷᏇ ᎪᎩ ᎠᏟᎢᎵᏒ%ᎤᏍᏇᎩᏍᏖᏂ ᎠᏟᎢᎵᏒ5ᎤᏍᏇᎩᏍᏖ" + - "Ꮒ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᎤᏍᏇᎩᏍᏖᏂ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᏩᏄᏩᏚ ᎠᏟᎢᎵᏒ,ᏩᏄᏩᏚ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᏩᏄᏩᏚ ᎪᎩ " + - "ᎠᏟᎢᎵᏒ\x1fᏪᏁᏑᏪᎳ ᎠᏟᎢᎵᏒ%ᏭᎳᏗᏬᏍᏙᎩ ᎠᏟᎢᎵᏒ5ᏭᎳᏗᏬᏍᏙᎩ ᎠᏟᎢᎵᏒ ᎠᏟᎢᎵᏒ,ᏭᎳᏗᏬᏍᏙᎩ ᎪᎩ ᎠᏟᎢᎵ" + - "Ꮢ\x1fᏬᎶᎪᏝᏗ ᎠᏟᎢᎵᏒ/ᏬᎶᎪᏝᏗ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ&ᏬᎶᎪᏝᏗ ᎪᎩ ᎠᏟᎢᎵᏒ\x1cᏬᏍᏙᎧ ᎠᏟᎢᎵᏒ)ᎤᏰᏨ ᎤᎦ" + - "ᏚᏛᎢ ᎠᏟᎢᎵᏒ*ᏩᎵᏍ ᎠᎴ ᏊᏚᎾ ᎠᏟᎢᎵᏒ\x1cᏯᎫᏥᎧ ᎠᏟᎢᎵᏒ,ᏯᎫᏥᎧ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ#ᏯᎫᏥᎧ ᎪᎩ ᎠᏟᎢᎵ" + - "Ꮢ%ᏰᎧᏖᎵᏂᏊᎦ ᎠᏟᎢᎵᏒ5ᏰᎧᏖᎵᏂᏊᎦ ᎠᏟᎶᏍᏗ ᎠᏟᎢᎵᏒ,ᏰᎧᏖᎵᏂᏊᎦ ᎪᎩ ᎠᏟᎢᎵᏒ\x03OKT" - -var bucket19 string = "" + // Size: 12614 bytes - "\x10یەکشەممە\x10دووشەممە\x0eسێشەممە\x12چوارشەممە\x12پێنجشەممە\x0aھەینی" + - "\x0aشەممە\x02ی\x02د\x02س\x02چ\x02پ\x02ھ\x02ش\x17چارەکی یەکەم\x17چارەکی د" + - "ووەم\x15چارەکی سێەم\x19چارەکی چوارەم\x05ب.ن\x05د.ن\x0edی MMMMی y G\x19ک" + - "انوونی دووەم\x0aشوبات\x0aئازار\x0aنیسان\x0aئایار\x10حوزەیران\x0cتەمووز" + - "\x06ئاب\x0eئەیلوول\x17تشرینی یەکەم\x17تشرینی دووەم\x17کانونی یەکەم\x02ک" + - "\x02ئ\x02ن\x02ح\x02ت\x04١ش\x04٢ش\x04٣ش\x04٤ش\x04٥ش\x04چ١\x04چ٢\x04چ٣\x04" + - "چ٤\x11پێش زایین\x0cزایینی\x05پ.ن\x02ز\x0cdی MMMMی y\x10خاکەلێوە\x0eبانە" + - "مەڕ\x10جۆزەردان\x0eپووشپەڕ\x0eگەلاوێژ\x10خەرمانان\x0cڕەزبەر\x10خەزەڵوەر" + - "\x10سەرماوەز\x12بەفرانبار\x10ڕێبەندان\x0cرەشەمێ\x06ساڵ\x08مانگ\x0aھەفتە" + - "\x06ڕۆژ\x13ڕۆژی ھەفتە\x0eکاتژمێر\x0aخولەک\x08چرکە\x0dEEEE, d. M. y\x07d." + - " M. y\x0ePrvní měsíc\x0eDruhý měsíc\x0fTřetí měsíc\x10Čtvrtý měsíc\x0ePá" + - "tý měsíc\x0fŠestý měsíc\x0eSedmý měsíc\x0dOsmý měsíc\x10Devátý měsíc\x10" + - "Desátý měsíc\x13Jedenáctý měsíc\x12Dvanáctý měsíc\x05Krysa\x05Buvol\x04T" + - "ygr\x06Zajíc\x04Drak\x03Had\x05Kůň\x04Koza\x05Opice\x06Kohout\x03Pes\x05" + - "Vepř\x10EEEE d. MMMM y G\x0bd. MMMM y G\x09d. M. y G\x0edd.MM.yy GGGGG" + - "\x03led\x04úno\x04bře\x03dub\x04kvě\x04čvn\x04čvc\x03srp\x05zář\x05říj" + - "\x03lis\x03pro\x05ledna\x06února\x07března\x05dubna\x07května\x07června" + - "\x09července\x05srpna\x07září\x07října\x09listopadu\x08prosince\x05leden" + - "\x05únor\x07březen\x05duben\x07květen\x07červen\x09červenec\x05srpen\x07" + - "říjen\x08listopad\x08prosinec\x02ne\x02po\x03út\x02st\x03čt\x03pá\x02so" + - "\x07neděle\x09pondělí\x07úterý\x07středa\x08čtvrtek\x06pátek\x06sobota" + - "\x0e1. čtvrtletí\x0e2. čtvrtletí\x0e3. čtvrtletí\x0e4. čtvrtletí\x06půln" + - ".\x04dop.\x04pol.\x04odp.\x02r.\x05več.\x04v n.\x05půl.\x02o.\x02v.\x02n" + - ".\x07půlnoc\x07poledne\x05ráno\x09dopoledne\x09odpoledne\x06večer\x06v n" + - "oci\x03noc\x0apř. n. l.\x05n. l.\x08př.n.l.\x04n.l.\x0eEEEE d. MMMM y" + - "\x09d. MMMM y\x11EEEE, d. MMMM y G\x0ePřed R. O. C.\x0aletopočet\x03rok" + - "\x0bminulý rok\x09tento rok\x0epříští rok\x0aza {0} rok\x0bza {0} roky" + - "\x0bza {0} roku\x0aza {0} let\x0fpřed {0} rokem\x0epřed {0} lety\x0epřed" + - " {0} roku\x09za {0} r.\x09za {0} l.\x0cpřed {0} r.\x0cpřed {0} l.\x0bčtv" + - "rtletí\x13minulé čtvrtletí\x10toto čtvrtletí\x16příští čtvrtletí\x12za {" + - "0} čtvrtletí\x16před {0} čtvrtletím\x17před {0} čtvrtletími\x15před {0} " + - "čtvrtletí\x01Q\x07měsíc\x0fminulý měsíc\x0dtento měsíc\x12příští měsíc" + - "\x0eza {0} měsíc\x0fza {0} měsíce\x10za {0} měsíců\x13před {0} měsícem" + - "\x12před {0} měsíci\x12před {0} měsíce\x05měs.\x0cza {0} měs.\x0fpřed {0" + - "} měs.\x06týden\x0eminulý týden\x0ctento týden\x11příští týden\x0dza {0}" + - " týden\x0dza {0} týdny\x0dza {0} týdne\x0eza {0} týdnů\x11před {0} týdne" + - "m\x10před {0} týdny\x10před {0} týdne\x0cv týdnu {0}\x05týd.\x0dminulý t" + - "ýd.\x0btento týd.\x10příští týd.\x0cza {0} týd.\x0fpřed {0} týd.\x0bv t" + - "ýd. {0}\x03den\x0epředevčírem\x06včera\x04dnes\x06zítra\x0apozítří\x0az" + - "a {0} den\x0aza {0} dny\x0aza {0} dne\x0bza {0} dní\x0epřed {0} dnem\x0d" + - "před {0} dny\x0dpřed {0} dne\x0cden v týdnu\x0fminulou neděli\x0ctuto ne" + - "děli\x12příští neděli\x0eza {0} neděli\x0eza {0} neděle\x0fza {0} nedělí" + - "\x12před {0} nedělí\x13před {0} nedělemi\x11před {0} neděle\x11minulé po" + - "ndělí\x0etoto pondělí\x14příští pondělí\x10za {0} pondělí\x14před {0} po" + - "ndělím\x15před {0} pondělími\x13před {0} pondělí\x0fminulé úterý\x0ctoto" + - " úterý\x12příští úterý\x0eza {0} úterý\x12před {0} úterým\x13před {0} út" + - "erými\x11před {0} úterý\x0fminulou středu\x0ctuto středu\x12příští střed" + - "u\x0eza {0} středu\x0eza {0} středy\x0dza {0} střed\x12před {0} středou" + - "\x13před {0} středami\x11před {0} středy\x10minulý čtvrtek\x0etento čtvr" + - "tek\x13příští čtvrtek\x0fza {0} čtvrtek\x0fza {0} čtvrtky\x0fza {0} čtvr" + - "tku\x10za {0} čtvrtků\x13před {0} čtvrtkem\x12před {0} čtvrtky\x12před {" + - "0} čtvrtku\x0eminulý pátek\x0ctento pátek\x11příští pátek\x0dza {0} páte" + - "k\x0dza {0} pátky\x0dza {0} pátku\x0eza {0} pátků\x11před {0} pátkem\x10" + - "před {0} pátky\x10před {0} pátku\x0eminulou sobotu\x0btuto sobotu\x11pří" + - "ští sobotu\x0dza {0} sobotu\x0dza {0} soboty\x0cza {0} sobot\x11před {0" + - "} sobotou\x12před {0} sobotami\x10před {0} soboty\x0ačást dne\x06hodina" + - "\x0btuto hodinu\x0dza {0} hodinu\x0dza {0} hodiny\x0cza {0} hodin\x11pře" + - "d {0} hodinou\x12před {0} hodinami\x10před {0} hodiny\x08za {0} h\x0bpře" + - "d {0} h\x0btuto minutu\x11před {0} minutou\x12před {0} minutami\x10před " + - "{0} minuty\x0aza {0} min\x0dpřed {0} min\x05nyní\x12před {0} sekundou" + - "\x13před {0} sekundami\x11před {0} sekundy\x08za {0} s\x0bpřed {0} s\x0f" + - "časové pásmo\x0b+H:mm;-H:mm\x06GMT{0}\x03GMT\x13Časové pásmo {0}\x08{0}" + - " (+1)\x08{0} (+0)\x1cKoordinovaný světový čas\x14Britský letní čas\x12Ir" + - "ský letní čas\x0eAcrejský čas\x1aAcrejský standardní čas\x15Acrejský let" + - "ní čas\x10Afghánský čas\x14Středoafrický čas\x15Východoafrický čas\x11Ji" + - "hoafrický čas\x14Západoafrický čas Západoafrický standardní čas\x1bZápad" + - "oafrický letní čas\x0fAljašský čas\x1bAljašský standardní čas\x16Aljašsk" + - "ý letní čas\x0eAlmatský čas\x1aAlmatský standardní čas\x15Almatský letn" + - "í čas\x0fAmazonský čas\x1bAmazonský standardní čas\x16Amazonský letní č" + - "as Severoamerický centrální čas,Severoamerický centrální standardní čas'" + - "Severoamerický centrální letní čas\x1fSeveroamerický východní čas+Severo" + - "americký východní standardní čas&Severoamerický východní letní čas\x1cSe" + - "veroamerický horský čas(Severoamerický horský standardní čas#Severoameri" + - "cký horský letní čas\x1fSeveroamerický pacifický čas+Severoamerický paci" + - "fický standardní čas&Severoamerický pacifický letní čas\x0fAnadyrský čas" + - "\x1bAnadyrský standardní čas\x16Anadyrský letní čas\x0dApijský čas\x19Ap" + - "ijský standardní čas\x14Apijský letní čas\x0eAktauský čas\x1aAktauský st" + - "andardní čas\x15Aktauský letní čas\x0eAktobský čas\x1aAktobský standardn" + - "í čas\x15Aktobský letní čas\x0dArabský čas\x19Arabský standardní čas" + - "\x14Arabský letní čas\x11Argentinský čas\x1dArgentinský standardní čas" + - "\x18Argentinský letní čas\x18Západoargentinský čas$Západoargentinský sta" + - "ndardní čas\x1fZápadoargentinský letní čas\x0fArménský čas\x1bArménský s" + - "tandardní čas\x16Arménský letní čas\x10Atlantický čas\x1cAtlantický stan" + - "dardní čas\x17Atlantický letní čas\x17Středoaustralský čas#Středoaustral" + - "ský standardní čas\x1eStředoaustralský letní čas!Středozápadní australsk" + - "ý čas-Středozápadní australský standardní čas(Středozápadní australský " + - "letní čas\x18Východoaustralský čas$Východoaustralský standardní čas\x1fV" + - "ýchodoaustralský letní čas\x17Západoaustralský čas#Západoaustralský sta" + - "ndardní čas\x1eZápadoaustralský letní čas\x18Ázerbájdžánský čas$Ázerbájd" + - "žánský standardní čas\x1fÁzerbájdžánský letní čas\x0dAzorský čas\x19Azo" + - "rský standardní čas\x14Azorský letní čas\x14Bangladéšský čas Bangladéšsk" + - "ý standardní čas\x1bBangladéšský letní čas\x11Bhútánský čas\x10Bolivijs" + - "ký čas\x11Brasilijský čas\x1dBrasilijský standardní čas\x18Brasilijský l" + - "etní čas\x0fBrunejský čas\x10Kapverdský čas\x1cKapverdský standardní čas" + - "\x17Kapverdský letní čas\x14Čas Caseyho stanice\x10Chamorrský čas\x10Cha" + - "thamský čas\x1cChathamský standardní čas\x17Chathamský letní čas\x0dChil" + - "ský čas\x19Chilský standardní čas\x14Chilský letní čas\x0eČínský čas\x1a" + - "Čínský standardní čas\x15Čínský letní čas\x13Čojbalsanský čas\x1fČojbal" + - "sanský standardní čas\x1aČojbalsanský letní čas\x19Čas Vánočního ostrova" + - "\x19Čas Kokosových ostrovů\x11Kolumbijský čas\x1dKolumbijský standardní " + - "čas\x18Kolumbijský letní čas\x18Čas Cookových ostrovů$Standardní čas Co" + - "okových ostrovů\x1fLetní čas Cookových ostrovů\x0fKubánský čas\x1bKubáns" + - "ký standardní čas\x16Kubánský letní čas\x15Čas Davisovy stanice Čas stan" + - "ice Dumonta d’Urvilla\x16Východotimorský čas\x1cČas Velikonočního ostrov" + - "a(Standardní čas Velikonočního ostrova#Letní čas Velikonočního ostrova" + - "\x11Ekvádorský čas\x15Středoevropský čas!Středoevropský standardní čas" + - "\x1cStředoevropský letní čas\x04SEČ\x05SELČ\x16Východoevropský čas\x22Vý" + - "chodoevropský standardní čas\x1dVýchodoevropský letní čas\x1dDálněvýchod" + - "oevropský čas\x15Západoevropský čas!Západoevropský standardní čas\x1cZáp" + - "adoevropský letní čas\x11Falklandský čas\x1dFalklandský standardní čas" + - "\x18Falklandský letní čas\x10Fidžijský čas\x1cFidžijský standardní čas" + - "\x17Fidžijský letní čas\x19Francouzskoguyanský čas6Čas Francouzských již" + - "ních a antarktických území\x12Galapážský čas\x10Gambierský čas\x10Gruzín" + - "ský čas\x1cGruzínský standardní čas\x17Gruzínský letní čas\x1bČas Gilber" + - "tových ostrovů\x1cGreenwichský střední čas\x16Východogrónský čas\x22Vých" + - "odogrónský standardní čas\x1dVýchodogrónský letní čas\x15Západogrónský č" + - "as!Západogrónský standardní čas\x1cZápadogrónský letní čas\x0dGuamský ča" + - "s\x22Standardní čas Perského zálivu\x0eGuyanský čas\x17Havajsko-aleutský" + - " čas#Havajsko-aleutský standardní čas\x1eHavajsko-aleutský letní čas\x11" + - "Hongkongský čas\x1dHongkongský standardní čas\x18Hongkongský letní čas" + - "\x0dHovdský čas\x19Hovdský standardní čas\x14Hovdský letní čas\x0dIndick" + - "ý čas\x16Indickooceánský čas\x12Indočínský čas\x17Středoindonéský čas" + - "\x18Východoindonéský čas\x17Západoindonéský čas\x0fÍránský čas\x1bÍránsk" + - "ý standardní čas\x16Íránský letní čas\x0eIrkutský čas\x1aIrkutský stand" + - "ardní čas\x15Irkutský letní čas\x0fIzraelský čas\x1bIzraelský standardní" + - " čas\x16Izraelský letní čas\x0eJaponský čas\x1aJaponský standardní čas" + - "\x15Japonský letní čas\x1fPetropavlovsko-kamčatský čas+Petropavlovsko-ka" + - "mčatský standardní čas&Petropavlovsko-kamčatský letní čas\x1cVýchodokaza" + - "chstánský čas\x1bZápadokazachstánský čas\x0eKorejský čas\x1aKorejský sta" + - "ndardní čas\x15Korejský letní čas\x0fKosrajský čas\x12Krasnojarský čas" + - "\x1eKrasnojarský standardní čas\x19Krasnojarský letní čas\x0fKyrgyzský č" + - "as\x10Srílanský čas\x1bČas Rovníkových ostrovů\x17Čas ostrova lorda Howa" + - "#Standardní čas ostrova lorda Howa\x1eLetní čas ostrova lorda Howa\x0eMa" + - "cajský čas\x1aMacajský standardní čas\x15Macajský letní čas\x16Čas ostro" + - "va Macquarie\x10Magadanský čas\x1cMagadanský standardní čas\x17Magadansk" + - "ý letní čas\x0eMalajský čas\x10Maledivský čas\x10Markézský čas\x1cČas M" + - "arshallových ostrovů\x11Mauricijský čas\x1dMauricijský standardní čas" + - "\x18Mauricijský letní čas\x16Čas Mawsonovy stanice\x1dSeverozápadní mexi" + - "cký čas)Severozápadní mexický standardní čas$Severozápadní mexický letní" + - " čas\x18Mexický pacifický čas$Mexický pacifický standardní čas\x1fMexick" + - "ý pacifický letní čas\x14Ulánbátarský čas Ulánbátarský standardní čas" + - "\x1bUlánbátarský letní čas\x0fMoskevský čas\x1bMoskevský standardní čas" + - "\x16Moskevský letní čas\x10Myanmarský čas\x0dNaurský čas\x0fNepálský čas" + - "\x14Novokaledonský čas Novokaledonský standardní čas\x1bNovokaledonský l" + - "etní čas\x14Novozélandský čas Novozélandský standardní čas\x1bNovozéland" + - "ský letní čas\x15Newfoundlandský čas!Newfoundlandský standardní čas\x1cN" + - "ewfoundlandský letní čas\x0eNiuejský čas\x0fNorfolský čas$Čas souostroví" + - " Fernando de Noronha0Standardní čas souostroví Fernando de Noronha+Letní" + - " čas souostroví Fernando de Noronha\x16Severomariánský čas\x12Novosibirs" + - "ký čas\x1eNovosibirský standardní čas\x19Novosibirský letní čas\x0bOmský" + - " čas\x17Omský standardní čas\x12Omský letní čas\x13Pákistánský čas\x1fPá" + - "kistánský standardní čas\x1aPákistánský letní čas\x0ePalauský čas\x17Čas" + - " Papuy-Nové Guiney\x11Paraguayský čas\x1dParaguayský standardní čas\x18P" + - "araguayský letní čas\x10Peruánský čas\x1cPeruánský standardní čas\x17Per" + - "uánský letní čas\x11Filipínský čas\x1dFilipínský standardní čas\x18Filip" + - "ínský letní čas\x1aČas Fénixových ostrovů\x18Pierre-miquelonský čas$Pie" + - "rre-miquelonský standardní čas\x1fPierre-miquelonský letní čas\x18Čas Pi" + - "tcairnova ostrova\x0ePonapský čas\x14Pchjongjangský čas\x11Kyzylordský č" + - "as\x1dKyzylordský standardní čas\x18Kyzylordský letní čas\x11Réunionský " + - "čas\x16Čas Rotherovy stanice\x11Sachalinský čas\x1dSachalinský standard" + - "ní čas\x18Sachalinský letní čas\x0eSamarský čas\x1aSamarský standardní č" + - "as\x15Samarský letní čas\x0eSamojský čas\x1aSamojský standardní čas\x15S" + - "amojský letní čas\x10Seychelský čas\x11Singapurský čas\x1dČas Šalamounov" + - "ých ostrovů\x14Čas Jižní Georgie\x10Surinamský čas\x13Čas stanice Šówa" + - "\x0eTahitský čas\x11Tchajpejský čas\x1dTchajpejský standardní čas\x18Tch" + - "ajpejský letní čas\x10Tádžický čas\x10Tokelauský čas\x0eTonžský čas\x1aT" + - "onžský standardní čas\x15Tonžský letní čas\x0eChuukský čas\x10Turkmenský" + - " čas\x1cTurkmenský standardní čas\x17Turkmenský letní čas\x0eTuvalský ča" + - "s\x10Uruguayský čas\x1cUruguayský standardní čas\x17Uruguayský letní čas" + - "\x0dUzbecký čas\x19Uzbecký standardní čas\x14Uzbecký letní čas\x0fVanuat" + - "ský čas\x1bVanuatský standardní čas\x16Vanuatský letní čas\x11Venezuelsk" + - "ý čas\x13Vladivostocký čas\x1fVladivostocký standardní čas\x1aVladivost" + - "ocký letní čas\x12Volgogradský čas\x1eVolgogradský standardní čas\x19Vol" + - "gogradský letní čas\x13Čas stanice Vostok\x11Čas ostrova Wake\x1dČas ost" + - "rovů Wallis a Futuna\x0eJakutský čas\x1aJakutský standardní čas\x15Jakut" + - "ský letní čas\x16Jekatěrinburský čas\x22Jekatěrinburský standardní čas" + - "\x1dJekatěrinburský letní čas\x02د\x02س\x02ج\x02ج\x02ش\x02ط\x02ش\x02آ" + - "\x02و\x02ن\x02ا\x02ث\x02ج\x02س\x02ا\x02م\x02ع\x02ق\x02د\x02ف\x02ن\x02ژ" + - "\x02ب\x0bza {0} lata\x0aza {0} lat\x02ut\x02st\x03št\x02pi\x02so\x0bbudú" + - "ci rok\x02sr\x03če\x02pe\x02su" - -var bucket20 string = "" + // Size: 14326 bytes - "\x0bі҆аⷩ҇\x09феⷡ҇\x09маⷬ҇\x0bа҆пⷬ҇\x07маꙵ\x0cі҆ꙋⷩ҇\x0cі҆ꙋⷧ҇\x0dа҆́ѵⷢ҇" + - "\x09сеⷫ҇\x09ѻ҆кⷮ\x09ноеⷨ\x09деⷦ҇\x04І҆\x02Ф\x02М\x04А҆\x02С\x04Ѻ҆\x02Н" + - "\x02Д\x17і҆аннꙋа́рїа\x15феврꙋа́рїа\x0cма́рта\x14а҆прі́ллїа\x0aма́їа\x0fі" + - "҆ꙋ́нїа\x0fі҆ꙋ́лїа\x13а҆́ѵгꙋста\x16септе́мврїа\x14ѻ҆ктѡ́врїа\x12ное́мврї" + - "а\x14деке́мврїа\x17і҆аннꙋа́рїй\x15феврꙋа́рїй\x0cма́ртъ\x14а҆прі́ллїй" + - "\x0aма́їй\x0fі҆ꙋ́нїй\x0fі҆ꙋ́лїй\x13а҆́ѵгꙋстъ\x16септе́мврїй\x14ѻ҆ктѡ́врї" + - "й\x12ное́мврїй\x14деке́мврїй\x0bндⷧ҇ѧ\x09пнⷣе\x0bвтоⷬ҇\x09срⷣе\x09чеⷦ҇" + - "\x09пѧⷦ҇\x0aсꙋⷠ҇\x02П\x02В\x02Ч\x0eнедѣ́лѧ\x1aпонедѣ́льникъ\x12вто́рникъ" + - "\x0cсреда̀\x16четверто́къ\x0eпѧто́къ\x11сꙋббѡ́та\x11а҃-ѧ чеⷡ҇\x11в҃-ѧ че" + - "ⷡ҇\x11г҃-ѧ чеⷡ҇\x11д҃-ѧ чеⷡ҇\x04а҃\x04в҃\x04г҃\x04д҃\x1aа҃-ѧ че́тверть" + - "\x1aв҃-ѧ че́тверть\x1aг҃-ѧ че́тверть\x1aд҃-ѧ че́тверть\x04ДП\x04ПП\x15пр" + - "е́дъ р.\u00a0х.\x0dпо р.\u00a0х.\x0aѿ р. х.\x0bѿ р.\u00a0х.\x15EEEE, d " + - "MMMM 'л'. y.\x07y.MM.dd\x0aвѣ́къ\x0aлѣ́то\x03л.\x12че́тверть\x09чеⷡ҇\x0e" + - "мѣ́сѧцъ\x0bмцⷭ҇ъ\x10седми́ца\x07сеⷣ\x0aде́нь\x0cвчера̀\x0cдне́сь\x11наꙋ" + - "́трїе\x09деⷩ҇\x1bде́нь седми́цы\x09ДП/ПП\x0aча́съ\x09чаⷭ҇\x0fминꙋ́та" + - "\x09миⷩ҇\x11секꙋ́нда\x09сеⷦ҇\x1fпо́ѧсъ часовѡ́мъ\x12{0} (вре́мѧ)!{0} (лѣ" + - "́тнее вре́мѧ)!{0} (зи́мнее вре́мѧ)3среднеамерїка́нское вре́мѧBсреднеаме" + - "рїка́нское зи́мнее вре́мѧBсреднеамерїка́нское лѣ́тнее вре́мѧ7восточноам" + - "ерїка́нское вре́мѧFвосточноамерїка́нское зи́мнее вре́мѧFвосточноамерїка" + - "́нское лѣ́тнее вре́мѧ<а҆мерїка́нское наго́рнее вре́мѧKа҆мерїка́нское на" + - "го́рнее зи́мнее вре́мѧKа҆мерїка́нское наго́рнее лѣ́тнее вре́мѧ)тихоѻкеа" + - "́нское вре́мѧ8тихоѻкеа́нское зи́мнее вре́мѧ8тихоѻкеа́нское лѣ́тнее вре́" + - "мѧ+а҆тланті́ческое вре́мѧ:а҆тланті́ческое зи́мнее вре́мѧ:а҆тланті́ческо" + - "е лѣ́тнее вре́мѧ1среднеєѵрѡпе́йское вре́мѧ@среднеєѵрѡпе́йское зи́мнее в" + - "ре́мѧ@среднеєѵрѡпе́йское лѣ́тнее вре́мѧ5восточноєѵрѡпе́йское вре́мѧDвос" + - "точноєѵрѡпе́йское зи́мнее вре́мѧDвосточноєѵрѡпе́йское лѣ́тнее вре́мѧ@вр" + - "е́мѧ въ калинингра́дѣ и҆ ми́нскѣ3западноєѵрѡпе́йское вре́мѧBзападноєѵрѡ" + - "пе́йское зи́мнее вре́мѧBзападноєѵрѡпе́йское лѣ́тнее вре́мѧ7сре́днее вре" + - "́мѧ по грі́нꙋичꙋ$и҆ркꙋ́тское вре́мѧ3и҆ркꙋ́тское зи́мнее вре́мѧ3и҆ркꙋ́тс" + - "кое лѣ́тнее вре́мѧ+восто́чный казахста́нъ)за́падный казахста́нъ'красноѧ" + - "́рское вре́мѧ6красноѧ́рское зи́мнее вре́мѧ6красноѧ́рское лѣ́тнее вре́мѧ" + - "\x12кирги́зїа%магада́нское вре́мѧ4магада́нское зи́мнее вре́мѧ4магада́нск" + - "ое лѣ́тнее вре́мѧ#моско́вское вре́мѧ2моско́вское зи́мнее вре́мѧ2моско́в" + - "ское лѣ́тнее вре́мѧ)новосиби́рское вре́мѧ8новосиби́рское зи́мнее вре́мѧ" + - "8новосиби́рское лѣ́тнее вре́мѧ\x1dѻ҆́мское вре́мѧ,ѻ҆́мское зи́мнее вре́м" + - "ѧ,ѻ҆́мское лѣ́тнее вре́мѧ$вре́мѧ на сахали́нѣ3зи́мнее вре́мѧ на сахали́" + - "нѣ3лѣ́тнее вре́мѧ на сахали́нѣ+владивосто́цкое вре́мѧ:владивосто́цкое з" + - "и́мнее вре́мѧ:владивосто́цкое лѣ́тнее вре́мѧ)волгогра́дское вре́мѧ8волг" + - "огра́дское зи́мнее вре́мѧ8волгогра́дское лѣ́тнее вре́мѧ#ꙗ҆кꙋ́тское вре́" + - "мѧ2ꙗ҆кꙋ́тское зи́мнее вре́мѧ2ꙗ҆кꙋ́тское лѣ́тнее вре́мѧ2є҆катерїнбꙋ́ржск" + - "ое вре́мѧAє҆катерїнбꙋ́ржское зи́мнее вре́мѧAє҆катерїнбꙋ́ржское лѣ́тнее " + - "вре́мѧ\x0a{1} am {0}\x03Ion\x05Chwef\x03Maw\x06Ebrill\x03Mai\x03Meh\x05" + - "Gorff\x04Awst\x04Medi\x03Hyd\x04Tach\x04Rhag\x06Ionawr\x08Chwefror\x06Ma" + - "wrth\x07Mehefin\x0aGorffennaf\x06Hydref\x08Tachwedd\x07Rhagfyr\x03Chw" + - "\x03Ebr\x03Gor\x08Dydd Sul\x09Dydd Llun\x0bDydd Mawrth\x0cDydd Mercher" + - "\x08Dydd Iau\x0bDydd Gwener\x0bDydd Sadwrn\x03Ch1\x03Ch2\x03Ch3\x03Ch4" + - "\x0cchwarter 1af\x0c2il chwarter\x0d3ydd chwarter\x0d4ydd chwarter\x02yb" + - "\x02yh\x09Cyn Crist\x14Cyn Cyfnod Cyffredin\x09Oed Crist\x10Cyfnod Cyffr" + - "edin\x02CC\x02OC\x01C\x01O\x08dd/MM/yy\x0c{1} 'am' {0}\x03oes\x08blwyddy" + - "n\x07llynedd\x05eleni\x0eblwyddyn nesaf\x11ymhen {0} mlynedd\x0eymhen bl" + - "wyddyn\x11ymhen {0} flynedd\x11ymhen {0} blynedd\x18{0} o flynyddoedd yn" + - " ôl\x0fblwyddyn yn ôl\x12{0} flynedd yn ôl\x12{0} blynedd yn ôl\x08chwar" + - "ter\x0dchwarter olaf\x0cchwarter hwn\x0echwarter nesaf\x15ymhen {0} o ch" + - "warteri\x12ymhen {0} chwarter\x16{0} o chwarteri yn ôl\x13{0} chwarter y" + - "n ôl\x03mis\x0cmis diwethaf\x09y mis hwn\x09mis nesaf\x0dymhen {0} mis" + - "\x09ymhen mis\x0cymhen deufis\x0e{0} mis yn ôl\x0e{0} fis yn ôl\x0ddeufi" + - "s yn ôl\x07wythnos\x11wythnos ddiwethaf\x0eyr wythnos hon\x0dwythnos nes" + - "af\x11ymhen {0} wythnos\x0dymhen wythnos\x0fymhen pythefnos\x12{0} wythn" + - "os yn ôl\x0bwythnos {0}\x10pythefnos yn ôl\x04dydd\x06echdoe\x04ddoe\x06" + - "heddiw\x05yfory\x08drennydd\x11ymhen {0} diwrnod\x0dymhen diwrnod\x0eymh" + - "en deuddydd\x0dymhen tridiau\x12{0} diwrnod yn ôl\x13{0} ddiwrnod yn ôl" + - "\x12dydd o’r wythnos\x11dydd Sul diwethaf\x0cdydd Sul yma\x0edydd Sul ne" + - "saf\x12ymhen {0} Dydd Sul\x13ymhen {0} Ddydd Sul\x13{0} Dydd Sul yn ôl" + - "\x14{0} Ddydd Sul yn ôl\x0cSul diwethaf\x07Sul yma\x09Sul nesaf\x12dydd " + - "Llun diwethaf\x0ddydd Llun yma\x0fdydd Llun nesaf\x13ymhen {0} Dydd Llun" + - "\x14ymhen {0} Ddydd Llun\x14{0} dydd Llun yn ôl\x15{0} ddydd Llun yn ôl" + - "\x0dLlun diwethaf\x08Llun yma\x0aLlun nesaf\x14dydd Mawrth diwethaf\x0fd" + - "ydd Mawrth yma\x11dydd Mawrth nesaf\x15ymhen {0} dydd Mawrth\x16ymhen {0" + - "} ddydd Mawrth\x16{0} dydd Mawrth yn ôl\x17{0} ddydd Mawrth yn ôl\x0fMaw" + - "rth diwethaf\x0aMawrth yma\x0cMawrth nesaf\x0dMaw. diwethaf\x08Maw. yma" + - "\x0aMaw. nesaf\x15dydd Mercher diwethaf\x10dydd Mercher yma\x12dydd Merc" + - "her nesaf\x16ymhen {0} dydd Mercher\x17ymhen {0} ddydd Mercher\x17{0} dy" + - "dd Mercher yn ôl\x18{0} ddydd Mercher yn ôl\x10Mercher diwethaf\x0bMerch" + - "er yma\x0dMercher nesaf\x0fMerch. diwethaf\x0aMerch. yma\x0cMerch. nesaf" + - "\x11dydd Iau diwethaf\x0cdydd Iau yma\x0edydd Iau nesaf\x12ymhen {0} dyd" + - "d Iau\x13ymhen {0} ddydd Iau\x13{0} dydd Iau yn ôl\x14{0} ddydd Iau yn ô" + - "l\x0cIau diwethaf\x07Iau yma\x09Iau nesaf\x12ymhen {0} ddau Iau\x14dydd " + - "Gwener diwethaf\x0fdydd Gwener yma\x11dydd Gwener nesaf\x15ymhen {0} dyd" + - "d Gwener\x16ymhen {0} ddydd Gwener\x16{0} dydd Gwener yn ôl\x17{0} ddydd" + - " Gwener yn ôl\x0fGwener diwethaf\x0aGwener yma\x0cGwener nesaf\x0eGwen. " + - "diwethaf\x09Gwen. yma\x0bGwen. nesaf\x14dydd Sadwrn diwethaf\x0fdydd Sad" + - "wrn yma\x11dydd Sadwrn nesaf\x15ymhen {0} dydd Sadwrn\x16ymhen {0} ddydd" + - " Sadwrn\x16{0} dydd Sadwrn yn ôl\x17{0} ddydd Sadwrn yn ôl\x0fSadwrn diw" + - "ethaf\x0aSadwrn yma\x0cSadwrn nesaf\x0dSad. diwethaf\x08Sad. yma\x0aSad." + - " nesaf\x05YB/YH\x03awr\x0ayr awr hon\x0dymhen {0} awr\x09ymhen awr\x0e{0" + - "} awr yn ôl\x0aawr yn ôl\x05munud\x0by funud hon\x0fymhen {0} munud\x0by" + - "mhen munud\x0fymhen {0} funud\x10{0} munud yn ôl\x10{0} funud yn ôl\x04m" + - "un.\x0eymhen {0} mun.\x0eymhen {0} fun.\x0f{0} mun. yn ôl\x0f{0} fun. yn" + - " ôl\x06eiliad\x04nawr\x10ymhen {0} eiliad\x0cymhen eiliad\x11{0} eiliad " + - "yn ôl\x0deiliad yn ôl\x0dcylchfa amser\x09Amser {0}\x0dAmser Haf {0}\x11" + - "Amser Safonol {0}\x11Amser Haf Prydain\x12Amser Haf Iwerddon\x11Amser Af" + - "ghanistan\x18Amser Canolbarth Affrica\x15Amser Dwyrain Affrica\x18Amser " + - "Safonol De Affrica\x17Amser Gorllewin Affrica\x1fAmser Safonol Gorllewin" + - " Affrica\x1bAmser Haf Gorllewin Affrica\x0cAmser Alaska\x14Amser Safonol" + - " Alaska\x10Amser Haf Alaska\x0eAmser Amazonas\x16Amser Safonol Amazonas" + - "\x12Amser Haf Amazonas Amser Canolbarth Gogledd America(Amser Safonol Ca" + - "nolbarth Gogledd America$Amser Haf Canolbarth Gogledd America\x1dAmser D" + - "wyrain Gogledd America%Amser Safonol Dwyrain Gogledd America!Amser Haf D" + - "wyrain Gogledd America Amser Mynyddoedd Gogledd America(Amser Safonol My" + - "nyddoedd Gogledd America$Amser Haf Mynyddoedd Gogledd America#Amser Cefn" + - "for Tawel Gogledd America+Amser Safonol Cefnfor Tawel Gogledd America'Am" + - "ser Haf Cefnfor Tawel Gogledd America\x0aAmser Apia\x12Amser Safonol Api" + - "a\x0eAmser Haf Apia\x0eAmser Arabaidd\x16Amser Safonol Arabaidd\x12Amser" + - " Haf Arabaidd\x11Amser yr Ariannin\x16Amser Safonol Ariannin\x12Amser Ha" + - "f Ariannin\x18Amser Gorllewin Ariannin Amser Safonol Gorllewin Ariannin" + - "\x1cAmser Haf Gorllewin Ariannin\x0dAmser Armenia\x15Amser Safonol Armen" + - "ia\x11Amser Haf Armenia\x18Amser Cefnfor yr Iwerydd Amser Safonol Cefnfo" + - "r yr Iwerydd\x1cAmser Haf Cefnfor yr Iwerydd\x1aAmser Canolbarth Awstral" + - "ia\x22Amser Safonol Canolbarth Awstralia\x1eAmser Haf Canolbarth Awstral" + - "ia$Amser Canolbarth Gorllewin Awstralia,Amser Safonol Canolbarth Gorllew" + - "in Awstralia(Amser Haf Canolbarth Gorllewin Awstralia\x17Amser Dwyrain A" + - "wstralia\x1fAmser Safonol Dwyrain Awstralia\x1bAmser Haf Dwyrain Awstral" + - "ia\x19Amser Gorllewin Awstralia!Amser Safonol Gorllewin Awstralia\x1dAms" + - "er Haf Gorllewin Awstralia\x10Amser Aserbaijan\x18Amser Safonol Aserbaij" + - "an\x14Amser Haf Aserbaijan\x0fAmser yr Azores\x17Amser Safonol yr Azores" + - "\x13Amser Haf yr Azores\x10Amser Bangladesh\x18Amser Safonol Bangladesh" + - "\x14Amser Haf Bangladesh\x0cAmser Bhutan\x0dAmser Bolivia\x0fAmser Brasí" + - "lia\x17Amser Safonol Brasília\x13Amser Haf Brasília\x17Amser Brunei Daru" + - "ssalam\x10Amser Cabo Verde\x18Amser Safonol Cabo Verde\x14Amser Haf Cabo" + - " Verde\x0eAmser Chamorro\x0dAmser Chatham\x15Amser Safonol Chatham\x11Am" + - "ser Haf Chatham\x0bAmser Chile\x13Amser Safonol Chile\x0fAmser Haf Chile" + - "\x0dAmser Tsieina\x15Amser Safonol Tsieina\x11Amser Haf Tsieina\x10Amser" + - " Choibalsan\x18Amser Safonol Choibalsan\x14Amser Haf Choibalsan\x14Amser" + - " Ynys Y Nadolig\x14Amser Ynysoedd Cocos\x0eAmser Colombia\x16Amser Safon" + - "ol Colombia\x12Amser Haf Colombia\x13Amser Ynysoedd Cook\x1bAmser Safono" + - "l Ynysoedd Cook\x1eAmser Hanner Haf Ynysoedd Cook\x0aAmser Cuba\x12Amser" + - " Safonol Cuba\x0eAmser Haf Cuba\x0bAmser Davis\x18Amser Dumont-d’Urville" + - "\x13Amser Dwyrain Timor\x11Amser Ynys y Pasg\x19Amser Safonol Ynys y Pas" + - "g\x15Amser Haf Ynys y Pasg\x0dAmser Ecuador\x16Amser Canolbarth Ewrop" + - "\x1eAmser Safonol Canolbarth Ewrop\x1aAmser Haf Canolbarth Ewrop\x13Amse" + - "r Dwyrain Ewrop\x1bAmser Safonol Dwyrain Ewrop\x17Amser Haf Dwyrain Ewro" + - "p\x18Amser Dwyrain Pell Ewrop\x15Amser Gorllewin Ewrop\x1dAmser Safonol " + - "Gorllewin Ewrop\x19Amser Haf Gorllewin Ewrop!Amser Ynysoedd Falklands/Ma" + - "lvinas)Amser Safonol Ynysoedd Falklands/Malvinas%Amser Haf Ynysoedd Falk" + - "lands/Malvinas\x0aAmser Fiji\x12Amser Safonol Fiji\x0eAmser Haf Fiji\x15" + - "Amser Guyane Ffrengig\x22Amser Deheuol ac Antarctig Frengig\x0fAmser Gal" + - "apagos\x0dAmser Gambier\x0dAmser Georgia\x15Amser Safonol Georgia\x11Ams" + - "er Haf Georgia\x16Amser Ynysoedd Gilbert\x17Amser Safonol Greenwich\x19A" + - "mser Dwyrain yr Ynys Las!Amser Safonol Dwyrain yr Ynys Las\x1dAmser Haf " + - "Dwyrain yr Ynys Las\x1bAmser Gorllewin yr Ynys Las#Amser Safonol Gorllew" + - "in yr Ynys Las\x1fAmser Haf Gorllewin yr Ynys Las\x15Amser Safonol y Gwl" + - "ff\x0cAmser Guyana\x15Amser Hawaii-Aleutian\x1dAmser Safonol Hawaii-Aleu" + - "tian\x19Amser Haf Hawaii-Aleutian\x0fAmser Hong Kong\x17Amser Safonol Ho" + - "ng Kong\x13Amser Haf Hong Kong\x0aAmser Hovd\x12Amser Safonol Hovd\x0eAm" + - "ser Haf Hovd\x0bAmser India\x13Amser Cefnfor India\x12Amser Indo-Tsieina" + - "\x1aAmser Canolbarth Indonesia\x17Amser Dwyrain Indonesia\x19Amser Gorll" + - "ewin Indonesia\x0aAmser Iran\x12Amser Safonol Iran\x0eAmser Haf Iran\x0d" + - "Amser Irkutsk\x15Amser Safonol Irkutsk\x11Amser Haf Irkutsk\x0cAmser Isr" + - "ael\x14Amser Safonol Israel\x10Amser Haf Israel\x0cAmser Siapan\x14Amser" + - " Safonol Siapan\x10Amser Haf Siapan\x18Amser Dwyrain Casachstan\x1aAmser" + - " Gorllewin Casachstan\x0bAmser Corea\x13Amser Safonol Corea\x0fAmser Haf" + - " Corea\x0cAmser Kosrae\x11Amser Krasnoyarsk\x19Amser Safonol Krasnoyarsk" + - "\x15Amser Haf Krasnoyarsk\x10Amser Casachstan\x13Amser Ynysoedd Line\x16" + - "Amser yr Arglwydd Howe\x1eAmser Safonol yr Arglwydd Howe\x1aAmser Haf yr" + - " Arglwydd Howe\x14Amser Ynys Macquarie\x0dAmser Magadan\x15Amser Safonol" + - " Magadan\x11Amser Haf Magadan\x0eAmser Malaysia\x10Amser Y Maldives\x0fA" + - "mser Marquises\x17Amser Ynysoedd Marshall\x0fAmser Mauritius\x17Amser Sa" + - "fonol Mauritius\x13Amser Haf Mauritius\x0cAmser Mawson\x1eAmser Gogledd " + - "Orllewin Mecsico&Amser Safonol Gogledd Orllewin Mecsico\x22Amser Haf Gog" + - "ledd Orllewin Mecsico\x16Amser Pasiffig Mecsico\x1eAmser Safonol Pasiffi" + - "g Mecsico\x1aAmser Haf Pasiffig Mecsico\x10Amser Ulan Bator\x18Amser Saf" + - "onol Ulan Bator\x14Amser Haf Ulan Bator\x0cAmser Moscfa\x14Amser Safonol" + - " Moscfa\x10Amser Haf Moscfa\x0dAmser Myanmar\x0bAmser Nauru\x0bAmser Nep" + - "al\x16Amser Caledonia Newydd\x1eAmser Safonol Caledonia Newydd\x1aAmser " + - "Haf Caledonia Newydd\x13Amser Seland Newydd\x1bAmser Safonol Seland Newy" + - "dd\x17Amser Haf Seland Newydd\x12Amser Newfoundland\x1aAmser Safonol New" + - "foundland\x16Amser Haf Newfoundland\x0aAmser Niue\x12Amser Ynys Norfolk" + - "\x19Amser Fernando de Noronha!Amser Safonol Fernando de Noronha\x1dAmser" + - " Haf Fernando de Noronha\x11Amser Novosibirsk\x19Amser Safonol Novosibir" + - "sk\x15Amser Haf Novosibirsk\x0aAmser Omsk\x12Amser Safonol Omsk\x0eAmser" + - " Haf Omsk\x0eAmser Pakistan\x16Amser Safonol Pakistan\x12Amser Haf Pakis" + - "tan\x0bAmser Palau\x19Amser Papua Guinea Newydd\x0eAmser Paraguay\x16Ams" + - "er Safonol Paraguay\x12Amser Haf Paraguay\x0bAmser Periw\x13Amser Safono" + - "l Periw\x0fAmser Haf Periw\x0fAmser Pilipinas\x17Amser Safonol Pilipinas" + - "\x13Amser Haf Pilipinas\x16Amser Ynysoedd Phoenix\x1eAmser Saint-Pierre-" + - "et-Miquelon&Amser Safonol Saint-Pierre-et-Miquelon\x22Amser Haf Saint-Pi" + - "erre-et-Miquelon\x0eAmser Pitcairn\x0dAmser Pohnpei\x0fAmser Pyongyang" + - "\x0eAmser Réunion\x0dAmser Rothera\x0eAmser Sakhalin\x16Amser Safonol Sa" + - "khalin\x12Amser Haf Sakhalin\x0bAmser Samoa\x13Amser Safonol Samoa\x0fAm" + - "ser Haf Samoa\x10Amser Seychelles\x0fAmser Singapore\x16Amser Ynysoedd S" + - "olomon\x10Amser De Georgia\x0eAmser Suriname\x0bAmser Syowa\x0cAmser Tah" + - "iti\x0cAmser Taipei\x14Amser Safonol Taipei\x10Amser Haf Taipei\x10Amser" + - " Tajicistan\x0dAmser Tokelau\x0bAmser Tonga\x13Amser Safonol Tonga\x0fAm" + - "ser Haf Tonga\x0bAmser Chuuk\x12Amser Tyrcmenistan\x1aAmser Safonol Tyrc" + - "menistan\x16Amser Haf Tyrcmenistan\x0cAmser Tuvalu\x0dAmser Uruguay\x15A" + - "mser Safonol Uruguay\x11Amser Haf Uruguay\x10Amser Wsbecistan\x18Amser S" + - "afonol Wsbecistan\x14Amser Haf Wsbecistan\x0dAmser Vanuatu\x15Amser Safo" + - "nol Vanuatu\x11Amser Haf Vanuatu\x0fAmser Venezuela\x11Amser Vladivostok" + - "\x19Amser Safonol Vladivostok\x15Amser Haf Vladivostok\x0fAmser Volgogra" + - "d\x17Amser Safonol Volgograd\x13Amser Haf Volgograd\x0cAmser Vostok\x0fA" + - "mser Ynys Wake\x15Amser Wallis a Futuna\x0dAmser Yakutsk\x15Amser Safono" + - "l Yakutsk\x11Amser Haf Yakutsk\x13Amser Yekaterinburg\x1bAmser Safonol Y" + - "ekaterinburg\x17Amser Haf Yekaterinburg\x01V\x01J\x02Ā\x01S\x01B\x01K" + - "\x01M\x01P\x02С" - -var bucket21 string = "" + // Size: 11584 bytes - "\x0ad. MMM y G\x04jan.\x04feb.\x04mar.\x04apr.\x03maj\x04jun.\x04jul." + - "\x04aug.\x04sep.\x04okt.\x04nov.\x04dec.\x03maj\x05søn.\x04man.\x04tir." + - "\x04ons.\x04tor.\x04fre.\x05lør.\x03sø\x02ma\x02ti\x02on\x02to\x02fr\x03" + - "lø\x07søndag\x06mandag\x07tirsdag\x06onsdag\x07torsdag\x06fredag\x07lørd" + - "ag\x04søn\x03man\x03tir\x03ons\x03tor\x03fre\x04lør\x071. kvt.\x072. kvt" + - ".\x073. kvt.\x074. kvt.\x0a1. kvartal\x0a2. kvartal\x0a3. kvartal\x0a4. " + - "kvartal\x06midnat\x0bom morgenen\x0eom formiddagen\x10om eftermiddagen" + - "\x0aom aftenen\x09om natten\x06morgen\x09formiddag\x0beftermiddag\x05aft" + - "en\x03nat\x05f.Kr.\x1dfør vesterlandsk tidsregning\x05e.Kr.\x18vesterlan" + - "dsk tidsregning\x06f.v.t.\x04v.t.\x03fKr\x03fvt\x03eKr\x02vt\x14EEEE 'de" + - "n' d. MMMM y\x08d. MMM y\x0dHH.mm.ss zzzz\x0aHH.mm.ss z\x08HH.mm.ss\x05H" + - "H.mm\x0d{1} 'kl'. {0}\x04æra\x03år\x0asidste år\x05i år\x0anæste år\x0ao" + - "m {0} år\x11for {0} år siden\x0esidste kvartal\x0ddette kvartal\x0enæste" + - " kvartal\x0eom {0} kvartal\x10om {0} kvartaler\x15for {0} kvartal siden" + - "\x17for {0} kvartaler siden\x04kvt.\x0bsidste kvt.\x0adette kvt.\x0bnæst" + - "e kvt.\x0bom {0} kvt.\x12for {0} kvt. siden\x06måned\x0dsidste måned\x0c" + - "denne måned\x0dnæste måned\x0dom {0} måned\x0fom {0} måneder\x14for {0} " + - "måned siden\x16for {0} måneder siden\x0asidste md.\x09denne md.\x0anæste" + - " md.\x0aom {0} md.\x0bom {0} mdr.\x11for {0} md. siden\x12for {0} mdr. s" + - "iden\x03uge\x0asidste uge\x09denne uge\x0anæste uge\x0aom {0} uge\x0bom " + - "{0} uger\x11for {0} uge siden\x12for {0} uger siden\x0ei ugen med {0}" + - "\x0ai forgårs\x06i går\x05i dag\x08i morgen\x0ci overmorgen\x0aom {0} da" + - "g\x0bom {0} dage\x11for {0} dag siden\x12for {0} dage siden\x06ugedag" + - "\x0esidste søndag\x0bpå søndag\x0enæste søndag\x0eom {0} søndag\x0fom {0" + - "} søndage\x15for {0} søndag siden\x16for {0} søndage siden\x0csidste søn" + - ".\x09på søn.\x0cnæste søn.\x0bsidste sø.\x08på sø.\x0bnæste sø.\x0dsidst" + - "e mandag\x0apå mandag\x0dnæste mandag\x0dom {0} mandag\x0eom {0} mandage" + - "\x14for {0} mandag siden\x15for {0} mandage siden\x0bsidste man.\x08på m" + - "an.\x0bnæste man.\x0asidste ma.\x07på ma.\x0anæste ma.\x0esidste tirsdag" + - "\x0bpå tirsdag\x0enæste tirsdag\x0eom {0} tirsdag\x0fom {0} tirsdage\x15" + - "for {0} tirsdag siden\x16for {0} tirsdage siden\x0bsidste tir.\x08på tir" + - ".\x0bnæste tir.\x0asidste ti.\x07på ti.\x0anæste ti.\x0dsidste onsdag" + - "\x0apå onsdag\x0dnæste onsdag\x0dom {0} onsdag\x0eom {0} onsdage\x14for " + - "{0} onsdag siden\x15for {0} onsdage siden\x0bsidste ons.\x08på ons.\x0bn" + - "æste ons.\x0asidste on.\x07på on.\x0anæste on.\x0esidste torsdag\x0bpå " + - "torsdag\x0enæste torsdag\x0eom {0} torsdag\x0fom {0} torsdage\x15for {0}" + - " torsdag siden\x16for {0} torsdage siden\x0bsidste tor.\x08på tor.\x0bnæ" + - "ste tor.\x0asidste to.\x07på to.\x0anæste to.\x0dsidste fredag\x0apå fre" + - "dag\x0dnæste fredag\x0dom {0} fredag\x0eom {0} fredage\x14for {0} fredag" + - " siden\x15for {0} fredage siden\x0bsidste fre.\x08på fre.\x0bnæste fre." + - "\x0asidste fr.\x07på fr.\x0anæste fr.\x0esidste lørdag\x0bpå lørdag\x0en" + - "æste lørdag\x0eom {0} lørdag\x0fom {0} lørdage\x15for {0} lørdag siden" + - "\x16for {0} lørdage siden\x0csidste lør.\x09på lør.\x0cnæste lør.\x0bsid" + - "ste lø.\x08på lø.\x0bnæste lø.\x04time\x13i den kommende time\x0bom {0} " + - "time\x0com {0} timer\x12for {0} time siden\x13for {0} timer siden\x02t." + - "\x0adenne time\x14i det kommende minut\x0com {0} minut\x0fom {0} minutte" + - "r\x13for {0} minut siden\x16for {0} minutter siden\x0bdenne minut\x0bom " + - "{0} min.\x12for {0} min. siden\x06sekund\x02nu\x0dom {0} sekund\x0fom {0" + - "} sekunder\x14for {0} sekund siden\x16for {0} sekunder siden\x0bom {0} s" + - "ek.\x12for {0} sek. siden\x08tidszone\x18Koordineret universaltid\x11Bri" + - "tisk sommertid\x0eIrsk normaltid\x08Acre-tid\x0eAcre-normaltid\x0eAcre-s" + - "ommertid\x0cAfghansk tid\x14Centralafrikansk tid\x11Østafrikansk tid\x10" + - "Sydafrikansk tid\x11Vestafrikansk tid\x17Vestafrikansk normaltid\x17Vest" + - "afrikansk sommertid\x0aAlaska-tid\x10Alaska-normaltid\x10Alaska-sommerti" + - "d\x0aAlmaty-tid\x10Almaty-normaltid\x10Almaty-sommertid\x0cAmazonas-tid" + - "\x12Amazonas-normaltid\x12Amazonas-sommertid\x0bCentral-tid\x11Central-n" + - "ormaltid\x11Central-sommertid\x0bEastern-tid\x11Eastern-normaltid\x11Eas" + - "tern-sommertid\x0cMountain-tid\x12Mountain-normaltid\x12Mountain-sommert" + - "id\x0bPacific-tid\x11Pacific-normaltid\x11Pacific-sommertid\x0aAnadyr-ti" + - "d\x10Anadyr-normaltid\x10Anadyr-sommertid\x08Apia-tid\x0eApia-normaltid" + - "\x0eApia-sommertid\x09Aqtau-tid\x0fAqtau-normaltid\x0fAqtau-sommertid" + - "\x0aAqtobe-tid\x10Aqtobe-normaltid\x10Aqtobe-sommertid\x0bArabisk tid" + - "\x11Arabisk normaltid\x11Arabisk sommertid\x0dArgentisk tid\x14Argentins" + - "k normaltid\x14Argentinsk sommertid\x12Vestargentinsk tid\x18Vestargenti" + - "nsk normaltid\x18Vestargentinsk sommertid\x0bArmensk tid\x11Armensk norm" + - "altid\x11Armensk sommertid\x0cAtlantic-tid\x12Atlantic-normaltid\x12Atla" + - "ntic-sommertid\x14Centralaustralsk tid\x1aCentralaustralsk normaltid\x1a" + - "Centralaustralsk sommertid\x1cVestlig centralaustralsk tid\x22Vestlig ce" + - "ntralaustralsk normaltid\x22Vestlig centralaustralsk sommertid\x11Østaus" + - "tralsk tid\x17Østaustralsk normaltid\x17Østaustralsk sommertid\x11Vestau" + - "stralsk tid\x17Vestaustralsk normaltid\x17Vestaustralsk sommertid\x12Ase" + - "rbajdsjansk tid\x18Aserbajdsjansk normaltid\x18Aserbajdsjansk sommertid" + - "\x0cAzorerne-tid\x12Azorerne-normaltid\x12Azorerne-sommertid\x11Banglade" + - "shisk tid\x17Bangladeshisk normaltid\x17Bangladeshisk sommertid\x0fBhuta" + - "nesisk tid\x0eBoliviansk tid\x0fBrasiliansk tid\x15Brasiliansk normaltid" + - "\x15Brasiliansk sommertid\x15Brunei Darussalam-tid\x0eKapverdisk tid\x14" + - "Kapverdisk normaltid\x14Kapverdisk sommertid\x0cChamorro-tid\x0bChatham-" + - "tid\x11Chatham-normaltid\x11Chatham-sommertid\x0cChilensk tid\x12Chilens" + - "k normaltid\x12Chilensk sommertid\x0cKinesisk tid\x12Kinesisk normaltid" + - "\x12Kinesisk sommertid\x0eChoibalsan-tid\x14Choibalsan-normaltid\x14Choi" + - "balsan-sommertid\x1aChristmas Island-normaltid\x15Cocosøerne-normaltid" + - "\x0fColombiansk tid\x15Colombiansk normaltid\x15Colombiansk sommertid" + - "\x0eCookøerne-tid\x14Cookøerne-normaltid\x14Cookøerne-sommertid\x0bCuban" + - "sk tid\x11Cubansk normaltid\x11Cubansk sommertid\x09Davis-tid\x16Dumont-" + - "d’Urville-tid\x0dØsttimor-tid\x0ePåskeøen-tid\x14Påskeøen-normaltid\x14P" + - "åskeøen-sommertid\x10Ecuadoriansk tid\x15Centraleuropæisk tid\x1bCentra" + - "leuropæisk normaltid\x1bCentraleuropæisk sommertid\x12Østeuropæisk tid" + - "\x18Østeuropæisk normaltid\x18Østeuropæisk sommertid\x17Fjernøsteuropæis" + - "k tid\x12Vesteuropæisk tid\x18Vesteuropæisk normaltid\x18Vesteuropæisk s" + - "ommertid\x13Falklandsøerne-tid\x19Falklandsøerne-normaltid\x19Falklandsø" + - "erne-sommertid\x0cFijiansk tid\x12Fijiansk normaltid\x12Fijiansk sommert" + - "id\x11Fransk Guyana-tid.Franske Sydlige og Antarktiske Territorier-tid" + - "\x0dGalapagos-tid\x0bGambier-tid\x0eGeorgiansk tid\x14Georgiansk normalt" + - "id\x14Georgiansk sommertid\x11Gilbertøerne-tid\x03GMT\x13Østgrønlandsk t" + - "id\x19Østgrønlandsk normaltid\x19Østgrønlandsk sommertid\x13Vestgrønland" + - "sk tid\x19Vestgrønlandsk normaltid\x19Vestgrønlandsk sommertid\x0eGuam-n" + - "ormaltid\x15Golflandene-normaltid\x0aGuyana-tid\x13Hawaii-Aleutian-tid" + - "\x19Hawaii-Aleutian-normaltid\x19Hawaii-Aleutian-sommertid\x0cHongkong-t" + - "id\x12Hongkong-normaltid\x12Hongkong-sommertid\x08Hovd-tid\x0eHovd-norma" + - "ltid\x0eHovd-sommertid\x10Indisk normaltid\x17Indiske Ocean-normaltid" + - "\x0cIndokina-tid\x15Centralindonesisk tid\x12Østindonesisk tid\x12Vestin" + - "donesisk tid\x0aIransk tid\x10Iransk normaltid\x10Iransk sommertid\x0bIr" + - "kutsk-tid\x11Irkutsk-normaltid\x11Irkutsk-sommertid\x0cIsraelsk tid\x12I" + - "sraelsk normaltid\x12Israelsk sommertid\x0bJapansk tid\x11Japansk normal" + - "tid\x11Japansk sommertid\x1cPetropavlovsk-Kamchatski tid\x22Petropavlovs" + - "k-Kamchatski normaltid\x22Petropavlovsk-Kamchatski sommertid\x14Østkasak" + - "hstansk tid\x14Vestkasakhstansk tid\x0cKoreansk tid\x12Koreansk normalti" + - "d\x12Koreansk sommertid\x0aKosrae-tid\x0fKrasnoyarsk-tid\x15Krasnoyarsk-" + - "normaltid\x15Krasnoyarsk-sommertid\x0dKirgisisk tid\x09Langa tid\x0fLinj" + - "eøerne-tid\x0dLord Howe-tid\x13Lord Howe-normaltid\x13Lord Howe-sommerti" + - "d\x09Macao-tid\x0fMacao-normaltid\x0fMacao-sommertid\x0dMacquarie-tid" + - "\x0bMagadan-tid\x11Magadan-normaltid\x11Magadan-sommertid\x0dMalaysisk t" + - "id\x0dMaldivisk tid\x0dMarquesas-tid\x12Marshalløerne-tid\x0dMauritius-t" + - "id\x13Mauritius-normaltid\x13Mauritius-sommertid\x0aMawson-tid\x15Nordve" + - "stmexicansk tid\x1bNordvestmexicansk normaltid\x1bNordvestmexicansk somm" + - "ertid\x15Mexicansk Pacific-tid\x1bMexicansk Pacific-normaltid\x1bMexican" + - "sk Pacific-sommertid\x0eUlan Bator-tid\x14Ulan Bator-normaltid\x14Ulan B" + - "ator-sommertid\x0fMoskovitisk tid\x15Moskovitisk normaltid\x15Moskovitis" + - "k sommertid\x0dMyanmarsk tid\x09Nauru-tid\x0eNepalesisk tid\x0fNykaledon" + - "sk tid\x15Nykaledonsk normaltid\x15Nykaledonsk sommertid\x10Newzealandsk" + - " tid\x16Newzealandsk normaltid\x16Newzealandsk sommertid\x12Newfoundland" + - "sk tid\x18Newfoundlandsk normaltid\x18Newfoundlandsk sommertid\x08Niue-t" + - "id\x12Norfolk Island-tid\x17Fernando de Noronha-tid\x1dFernando de Noron" + - "ha-normaltid\x1dFernando de Noronha-sommertid\x12Nordmarianerne-tid\x0fN" + - "ovosibirsk tid\x15Novosibirsk normaltid\x15Novosibirsk sommertid\x08Omsk" + - "-tid\x0eOmsk-normaltid\x0eOmsk-sommertid\x0ePakistansk tid\x14Pakistansk" + - " normaltid\x14Pakistansk sommertid\x0fPalau-normaltid\x13Papua Ny Guinea" + - "-tid\x10Paraguayansk tid\x16Paraguayansk normaltid\x16Paraguayansk somme" + - "rtid\x0ePeruviansk tid\x14Peruviansk normaltid\x14Peruviansk sommertid" + - "\x0eFilippinsk tid\x14Filippinsk normaltid\x14Filippinsk sommertid\x0fPh" + - "oenixøen-tid\x1dSaint Pierre- og Miquelon-tid#Saint Pierre- og Miquelon-" + - "normaltid#Saint Pierre- og Miquelon-sommertid\x0cPitcairn-tid\x0aPonape-" + - "tid\x0dPyongyang-tid\x0dQyzylorda-tid\x13Qyzylorda-normaltid\x13Qyzylord" + - "a-sommertid\x0bReunion-tid\x0bRothera-tid\x0cSakhalin-tid\x12Sakhalin-no" + - "rmaltid\x12Sakhalin-sommertid\x0aSamara-tid\x10Samara-normaltid\x10Samar" + - "a-sommertid\x09Samoa-tid\x0fSamoa-normaltid\x0fSamoa-sommertid\x0fSeyche" + - "llisk tid\x17Singaporeansk normaltid\x11Salomonøerne-tid\x11South Georgi" + - "a-tid\x0bSurinam-tid\x09Syowa-tid\x0cTahitisk tid\x0aTaipei-tid\x10Taipe" + - "i-normaltid\x10Taipei-sommertid\x0eTadsjikisk tid\x0bTokelau-tid\x0cTong" + - "ansk tid\x12Tongansk normaltid\x12Tongansk sommertid\x09Chuuk-tid\x0dTur" + - "kmensk tid\x13Turkmensk normaltid\x13Turkmensk sommertid\x0aTuvalu-tid" + - "\x0fUruguayansk tid\x15Uruguayansk normaltid\x15Uruguayansk sommertid" + - "\x0cUsbekisk tid\x12Usbekisk normaltid\x12Usbekisk sommertid\x0bVanuatu-" + - "tid\x11Vanuatu-normaltid\x11Vanuatu-sommertid\x10Venezuelansk tid\x0fVla" + - "divostok-tid\x15Vladivostok-normaltid\x15Vladivostok-sommertid\x0dVolgog" + - "rad-tid\x13Volgograd-normaltid\x13Volgograd-sommertid\x0aVostok-tid\x0cW" + - "akeøen-tid\x14Wallis og Futuna-tid\x0bYakutsk-tid\x11Yakutsk-normaltid" + - "\x11Yakutsk-sommertid\x13Yekaterinburgsk tid\x19Yekaterinburgsk normalti" + - "d\x19Yekaterinburgsk sommertid\x05měr.\x04maj.\x04awg.\x04now.\x03pKr" + - "\x03jKr\x04feb.\x04mar.\x03mai\x04jun.\x04jul.\x04sep.\x04nov.\x04des." + - "\x05fév.\x04mar.\x04avr.\x03mai\x04jui.\x05juil.\x05août\x05sept.\x04oct" + - ".\x04nov.\x05déc.\x05n.Kr.\x04feb.\x04mej.\x04dec.\x05febr.\x06márc.\x05" + - "ápr.\x05máj.\x05jún.\x05júl.\x06szept.\x04nov.\x04mar.\x04maí\x06ágú." + - "\x05nóv.\x04maí\x04apr.\x03mai\x04aug.\x04okt.\x04nov.\x10om {0} søndage" + - "r\x17for {0} søndager siden\x0fom {0} mandager\x16for {0} mandager siden" + - "\x10om {0} tirsdager\x17for {0} tirsdager siden\x0fom {0} onsdager\x16fo" + - "r {0} onsdager siden\x10om {0} torsdager\x17for {0} torsdager siden\x0fo" + - "m {0} fredager\x16for {0} fredager siden\x10om {0} lørdager\x17for {0} l" + - "ørdager siden\x11vestafrikansk tid\x0calaskisk tid\x15tidssone for Amaz" + - "onas&tidssone for det sentrale Nord-Amerika+tidssone for den nordamerika" + - "nske østkysten\x22tidssone for Rocky Mountains (USA)1tidssone for den no" + - "rdamerikanske Stillehavskysten\x14Russisk (Anadyr) tid\x11tidssone for A" + - "pia\x0barabisk tid\x0eargentinsk tid\x12vestargentinsk tid\x0barmensk ti" + - "d\x17atlanterhavskystlig tid\x14sentralaustralsk tid\x19vest-sentralaust" + - "ralsk tid\x11østaustralsk tid\x11vestaustralsk tid\x12aserbajdsjansk tid" + - "\x0basorisk tid\x11bangladeshisk tid\x15tidssone for Brasilia\x17tidsson" + - "e for Kapp Verde\x14tidssone for Chatham\x0cchilensk tid\x0ckinesisk tid" + - "\x18tidssone for Tsjojbalsan\x0fcolombiansk tid\x17tidssone for Cookøyen" + - "e\x0bcubansk tid\x17tidssone for Påskeøya\x14sentraleuropeisk tid\x11øst" + - "europeisk tid\x11vesteuropeisk tid\x1ctidssone for Falklandsøyene\x0cfij" + - "iansk tid\x0cgeorgisk tid\x13østgrønlandsk tid\x13vestgrønlandsk tid\x1f" + - "tidssone for Hawaii og Aleutene\x15tidssone for Hongkong\x12tidssone for" + - " Khovd\x0airansk tid\x14tidssone for Irkutsk\x0cisraelsk tid\x0bjapansk " + - "tid(Russisk (Petropavlovsk-Kamtsjatskij) tid\x0ckoreansk tid\x18tidssone" + - " for Krasnojarsk\x1btidssone for Lord Howe-øya\x09Macau-tid\x14tidssone " + - "for Magadan\x0dmauritisk tid tidssone for nordvestlige Mexico-tidssone f" + - "or den meksikanske Stillehavskysten\x17tidssone for Ulan Bator\x13tidsso" + - "ne for Moskva\x0dkaledonsk tid\x10newzealandsk tid\x19tidssone for Newfo" + - "undland tidssone for Fernando de Noronha\x18tidssone for Novosibirsk\x11" + - "tidssone for Omsk\x0epakistansk tid\x10paraguayansk tid\x0cperuansk tid" + - "\x0efilippinsk tid%tidssone for Saint-Pierre-et-Miquelon\x15tidssone for" + - " Sakhalin\x14Russisk (Samara) tid\x0csamoansk tid\x13tidssone for Taipei" + - "\x0ctongansk tid\x0dturkmensk tid\x0furuguayansk tid\x0cusbekisk tid\x0d" + - "vanuatisk tid\x18tidssone for Vladivostok\x16tidssone for Volgograd\x14t" + - "idssone for Jakutsk\x1atidssone for Jekaterinburg\x04mrt.\x03mei\x04dec." + - "\x03mei\x04mars\x03mai\x04juni\x04juli\x07måndag\x06tysdag\x07laurdag" + - "\x04mån\x03tys\x03lau\x08i morgon\x0ci overmorgon\x11austaustralsk tid" + - "\x11austeuropeisk tid\x04feb.\x04mar.\x04apr.\x03maj\x04avg.\x04nov.\x04" + - "dec.\x03maj\x04mart\x03maj\x03jun\x03jul\x05sept.\x04mars\x04juni\x04jul" + - "i\x04aug.\x04mars\x03maj\x04juni\x04juli\x0com {0} dagar\x0fom {0} onsda" + - "gar\x10om {0} torsdagar\x0fom {0} fredagar\x0eom {0} minuter" - -var bucket22 string = "" + // Size: 11361 bytes - "\x06h.mm a\x03Imb\x03Kaw\x03Kad\x03Kan\x03Kas\x03Kar\x03Mfu\x03Wun\x03Ik" + - "e\x03Iku\x03Imw\x03Iwi\x10Mori ghwa imbiri\x0eMori ghwa kawi\x10Mori ghw" + - "a kadadu\x0eMori ghwa kana\x10Mori ghwa kasanu\x13Mori ghwa karandadu" + - "\x12Mori ghwa mfungade\x12Mori ghwa wunyanya\x10Mori ghwa ikenda\x0fMori" + - " ghwa ikumi\x19Mori ghwa ikumi na imweri\x16Mori ghwa ikumi na iwi\x03Ju" + - "m\x03Jim\x03Ngu\x0eItuku ja jumwa\x10Kuramuka jimweri\x0dKuramuka kawi" + - "\x0fKuramuka kadadu\x0dKuramuka kana\x0fKuramuka kasanu\x0cKifula nguwo" + - "\x0fKimu cha imbiri\x0dKimu cha kawi\x0fKimu cha kadadu\x0dKimu cha kana" + - "\x0aLuma lwa K\x0aluma lwa p\x0fKabla ya Kristo\x0fBaada ya Kristo\x02KK" + - "\x02BK\x05Ngelo\x04Mori\x04Juma\x05Ituku\x04Iguo\x05Idime\x05Kesho\x05KE" + - "/PE\x0dMajira ya saa\x05Ratte\x07Büffel\x05Tiger\x04Hase\x06Drache\x08Sc" + - "hlange\x05Pferd\x05Ziege\x04Affe\x04Hahn\x04Hund\x07Schwein\x0fEEEE, d. " + - "MMMM U\x09d. MMMM U\x07dd.MM U\x09dd.MM.y G\x0c{1} 'um' {0}\x06Januar" + - "\x07Februar\x05März\x05April\x03Mai\x04Juni\x04Juli\x06August\x09Septemb" + - "er\x07Oktober\x08November\x08Dezember\x03Mai\x07Sonntag\x06Montag\x08Die" + - "nstag\x08Mittwoch\x0aDonnerstag\x07Freitag\x07Samstag\x02So\x02Mo\x02Di" + - "\x02Mi\x02Do\x02Fr\x02Sa\x0a1. Quartal\x0a2. Quartal\x0a3. Quartal\x0a4." + - " Quartal\x0bMitternacht\x05vorm.\x06nachm.\x07morgens\x0avormittags\x07m" + - "ittags\x0bnachmittags\x06abends\x06nachts\x06Morgen\x09Vormittag\x06Mitt" + - "ag\x0aNachmittag\x05Abend\x05Nacht\x07v. Chr.\x18vor unserer Zeitrechnun" + - "g\x07n. Chr.\x14unserer Zeitrechnung\x08v. u. Z.\x05u. Z.\x0fEEEE, d. MM" + - "MM y\x07dd.MM.y\x06Epoche\x04Jahr\x0cletztes Jahr\x0bdieses Jahr\x0enäch" + - "stes Jahr\x0bin {0} Jahr\x0din {0} Jahren\x0cvor {0} Jahr\x0evor {0} Jah" + - "ren\x07Quartal\x0fletztes Quartal\x0edieses Quartal\x11nächstes Quartal" + - "\x0ein {0} Quartal\x10in {0} Quartalen\x0fvor {0} Quartal\x11vor {0} Qua" + - "rtalen\x06Quart.\x0din {0} Quart.\x0evor {0} Quart.\x08in {0} Q\x09vor {" + - "0} Q\x05Monat\x0dletzten Monat\x0cdiesen Monat\x0fnächsten Monat\x0cin {" + - "0} Monat\x0ein {0} Monaten\x0dvor {0} Monat\x0fvor {0} Monaten\x10vor {0" + - "}\u00a0Monaten\x0evor {0}\u00a0Monat\x05Woche\x0cletzte Woche\x0bdiese W" + - "oche\x0enächste Woche\x0cin {0} Woche\x0din {0} Wochen\x0dvor {0} Woche" + - "\x0evor {0} Wochen\x11die Woche vom {0}\x0ain {0} Wo.\x0bvor {0} Wo.\x03" + - "Tag\x0avorgestern\x07gestern\x05heute\x06morgen\x0bübermorgen\x0ain {0} " + - "Tag\x0cin {0} Tagen\x0bvor {0} Tag\x0dvor {0} Tagen\x09Wochentag\x0fletz" + - "ten Sonntag\x0ediesen Sonntag\x11nächsten Sonntag\x14Sonntag in {0} Woch" + - "e\x15Sonntag in {0} Wochen\x15Sonntag vor {0} Woche\x16Sonntag vor {0} W" + - "ochen\x0bletzten So.\x0adiesen So.\x0dnächsten So.\x10So. in {0} Woche" + - "\x11So. in {0} Wochen\x11So. vor {0} Woche\x12So. vor {0} Wochen\x0dSo. " + - "in {0} W.\x0eSo. vor {0} W.\x0eletzten Montag\x0ddiesen Montag\x10nächst" + - "en Montag\x13Montag in {0} Woche\x14Montag in {0} Wochen\x14Montag vor {" + - "0} Woche\x15Montag vor {0} Wochen\x0bletzten Mo.\x0adiesen Mo.\x0dnächst" + - "en Mo.\x10Mo. in {0} Woche\x11Mo. in {0} Wochen\x11Mo. vor {0} Woche\x12" + - "Mo. vor {0} Wochen\x0dMo. in {0} W.\x0eMo. vor {0} W.\x10letzten Diensta" + - "g\x0fdiesen Dienstag\x12nächsten Dienstag\x15Dienstag in {0} Woche\x16Di" + - "enstag in {0} Wochen\x16Dienstag vor {0} Woche\x17Dienstag vor {0} Woche" + - "n\x0bletzten Di.\x0adiesen Di.\x0dnächsten Di.\x10Di. in {0} Woche\x11Di" + - ". in {0} Wochen\x11Di. vor {0} Woche\x12Di. vor {0} Wochen\x0dDi. in {0}" + - " W.\x0eDi. vor {0} W.\x10letzten Mittwoch\x0fdiesen Mittwoch\x12nächsten" + - " Mittwoch\x15Mittwoch in {0} Woche\x16Mittwoch in {0} Wochen\x16Mittwoch" + - " vor {0} Woche\x17Mittwoch vor {0} Wochen\x0bletzten Mi.\x0adiesen Mi." + - "\x0dnächsten Mi.\x10Mi. in {0} Woche\x11Mi. in {0} Wochen\x11Mi. vor {0}" + - " Woche\x12Mi. vor {0} Wochen\x0dMi. in {0} W.\x0eMi. vor {0} W.\x12letzt" + - "en Donnerstag\x11diesen Donnerstag\x14nächsten Donnerstag\x17Donnerstag " + - "in {0} Woche\x18Donnerstag in {0} Wochen\x18Donnerstag vor {0} Woche\x19" + - "Donnerstag vor {0} Wochen\x0bletzten Do.\x0adiesen Do.\x0dnächsten Do." + - "\x10Do. in {0} Woche\x11Do. in {0} Wochen\x11Do. vor {0} Woche\x12Do. vo" + - "r {0} Wochen\x0dDo. in {0} W.\x0eDo. vor {0} W.\x0fletzten Freitag\x0edi" + - "esen Freitag\x11nächsten Freitag\x14Freitag in {0} Woche\x15Freitag in {" + - "0} Wochen\x15Freitag vor {0} Woche\x16Freitag vor {0} Wochen\x0bletzten " + - "Fr.\x0adiesen Fr.\x0dnächsten Fr.\x10Fr. in {0} Woche\x11Fr. in {0} Woch" + - "en\x11Fr. vor {0} Woche\x12Fr. vor {0} Wochen\x0dFr. in {0} W.\x0eFr. vo" + - "r {0} W.\x0fletzten Samstag\x0ediesen Samstag\x11nächsten Samstag\x14Sam" + - "stag in {0} Woche\x15Samstag in {0} Wochen\x15Samstag vor {0} Woche\x16S" + - "amstag vor {0} Wochen\x0bletzten Sa.\x0adiesen Sa.\x0dnächsten Sa.\x10Sa" + - ". in {0} Woche\x11Sa. in {0} Wochen\x11Sa. vor {0} Woche\x12Sa. vor {0} " + - "Wochen\x0dSa. in {0} W.\x0eSa. vor {0} W.\x0cTageshälfte\x06Stunde\x10in" + - " dieser Stunde\x0din {0} Stunde\x0ein {0} Stunden\x0evor {0} Stunde\x0fv" + - "or {0} Stunden\x04Std.\x0bin {0} Std.\x0cvor {0} Std.\x10in dieser Minut" + - "e\x0din {0} Minute\x0ein {0} Minuten\x0evor {0} Minute\x0fvor {0} Minute" + - "n\x04Min.\x0bin {0} Min.\x0cvor {0} Min.\x08in {0} m\x09vor {0} m\x05jet" + - "zt\x0ein {0} Sekunde\x0fin {0} Sekunden\x0fvor {0} Sekunde\x10vor {0} Se" + - "kunden\x04Sek.\x0bin {0} Sek.\x0cvor {0} Sek.\x08in {0} s\x09vor {0} s" + - "\x08Zeitzone\x08{0} Zeit\x0e{0} Sommerzeit\x0e{0} Normalzeit\x15Koordini" + - "erte Weltzeit\x14Britische Sommerzeit\x12Irische Sommerzeit\x09Acre-Zeit" + - "\x0fAcre-Normalzeit\x0fAcre-Sommerzeit\x10Afghanistan-Zeit\x18Zentralafr" + - "ikanische Zeit\x14Ostafrikanische Zeit\x15Südafrikanische Zeit\x15Westaf" + - "rikanische Zeit\x1bWestafrikanische Normalzeit\x1bWestafrikanische Somme" + - "rzeit\x0bAlaska-Zeit\x11Alaska-Normalzeit\x11Alaska-Sommerzeit\x0bAlmaty" + - "-Zeit\x11Almaty-Normalzeit\x11Almaty-Sommerzeit\x0dAmazonas-Zeit\x13Amaz" + - "onas-Normalzeit\x13Amazonas-Sommerzeit\x1cNordamerikanische Inlandzeit#N" + - "ordamerikanische Inland-Normalzeit#Nordamerikanische Inland-Sommerzeit N" + - "ordamerikanische Ostküstenzeit'Nordamerikanische Ostküsten-Normalzeit'No" + - "rdamerikanische Ostküsten-Sommerzeit\x13Rocky-Mountain-Zeit\x19Rocky Mou" + - "ntain-Normalzeit\x19Rocky-Mountain-Sommerzeit!Nordamerikanische Westküst" + - "enzeit(Nordamerikanische Westküsten-Normalzeit(Nordamerikanische Westküs" + - "ten-Sommerzeit\x0bAnadyr Zeit\x11Anadyr Normalzeit\x11Anadyr Sommerzeit" + - "\x09Apia-Zeit\x0fApia-Normalzeit\x0fApia-Sommerzeit\x0aAqtau-Zeit\x10Aqt" + - "au-Normalzeit\x10Aqtau-Sommerzeit\x0cAqtöbe-Zeit\x12Aqtöbe-Normalzeit" + - "\x12Aqtöbe-Sommerzeit\x0eArabische Zeit\x14Arabische Normalzeit\x14Arabi" + - "sche Sommerzeit\x12Argentinische Zeit\x18Argentinische Normalzeit\x18Arg" + - "entinische Sommerzeit\x16Westargentinische Zeit\x1cWestargentinische Nor" + - "malzeit\x1cWestargentinische Sommerzeit\x0fArmenische Zeit\x15Armenische" + - " Normalzeit\x15Armenische Sommerzeit\x0dAtlantik-Zeit\x13Atlantik-Normal" + - "zeit\x13Atlantik-Sommerzeit\x18Zentralaustralische Zeit\x1eZentralaustra" + - "lische Normalzeit\x1eZentralaustralische Sommerzeit\x1eZentral-/Westaust" + - "ralische Zeit$Zentral-/Westaustralische Normalzeit$Zentral-/Westaustrali" + - "sche Sommerzeit\x14Ostaustralische Zeit\x1aOstaustralische Normalzeit" + - "\x1aOstaustralische Sommerzeit\x15Westaustralische Zeit\x1bWestaustralis" + - "che Normalzeit\x1bWestaustralische Sommerzeit\x17Aserbaidschanische Zeit" + - "\x1dAserbeidschanische Normalzeit\x1dAserbaidschanische Sommerzeit\x0bAz" + - "oren-Zeit\x11Azoren-Normalzeit\x11Azoren-Sommerzeit\x10Bangladesch-Zeit" + - "\x16Bangladesch-Normalzeit\x16Bangladesch-Sommerzeit\x0bBhutan-Zeit\x12B" + - "olivianische Zeit\x0eBrasília-Zeit\x14Brasília-Normalzeit\x14Brasília-So" + - "mmerzeit\x0bBrunei-Zeit\x0fCabo-Verde-Zeit\x15Cabo-Verde-Normalzeit\x15C" + - "abo-Verde-Sommerzeit\x0aCasey-Zeit\x0dChamorro-Zeit\x0cChatham-Zeit\x12C" + - "hatham-Normalzeit\x12Chatham-Sommerzeit\x10Chilenische Zeit\x16Chilenisc" + - "he Normalzeit\x16Chilenische Sommerzeit\x10Chinesische Zeit\x16Chinesisc" + - "he Normalzeit\x16Chinesische Sommerzeit\x11Tschoibalsan-Zeit\x17Tschoiba" + - "lsan-Normalzeit\x17Tschoibalsan-Sommerzeit\x14Weihnachtsinsel-Zeit\x10Ko" + - "kosinseln-Zeit\x13Kolumbianische Zeit\x19Kolumbianische Normalzeit\x19Ko" + - "lumbianische Sommerzeit\x0fCookinseln-Zeit\x15Cookinseln-Normalzeit\x15C" + - "ookinseln-Sommerzeit\x0fKubanische Zeit\x15Kubanische Normalzeit\x15Kuba" + - "nische Sommerzeit\x0aDavis-Zeit\x17Dumont-d’Urville-Zeit\x0dOsttimor-Zei" + - "t\x0fOsterinsel-Zeit\x15Osterinsel-Normalzeit\x15Osterinsel-Sommerzeit" + - "\x14Ecuadorianische Zeit\x17Mitteleuropäische Zeit\x1dMitteleuropäische " + - "Normalzeit\x1dMitteleuropäische Sommerzeit\x03MEZ\x04MESZ\x14Osteuropäis" + - "che Zeit\x1aOsteuropäische Normalzeit\x1aOsteuropäische Sommerzeit\x03OE" + - "Z\x04OESZ\x12Kaliningrader Zeit\x15Westeuropäische Zeit\x1bWesteuropäisc" + - "he Normalzeit\x1bWesteuropäische Sommerzeit\x03WEZ\x04WESZ\x13Falklandin" + - "seln-Zeit\x19Falklandinseln-Normalzeit\x19Falklandinseln-Sommerzeit\x0cF" + - "idschi-Zeit\x12Fidschi-Normalzeit\x12Fidschi-Sommerzeit\x19Französisch-G" + - "uayana-Zeit-Französische Süd- und Antarktisgebiete-Zeit\x0eGalapagos-Zei" + - "t\x0cGambier-Zeit\x0fGeorgische Zeit\x15Georgische Normalzeit\x15Georgis" + - "che Sommerzeit\x13Gilbert-Inseln-Zeit\x17Mittlere Greenwich-Zeit\x11Ostg" + - "rönland-Zeit\x17Ostgrönland-Normalzeit\x17Ostgrönland-Sommerzeit\x12West" + - "grönland-Zeit\x18Westgrönland-Normalzeit\x18Westgrönland-Sommerzeit\x09G" + - "uam-Zeit\x09Golf-Zeit\x0bGuyana-Zeit\x13Hawaii-Aleuten-Zeit\x19Hawaii-Al" + - "euten-Normalzeit\x19Hawaii-Aleuten-Sommerzeit\x0dHongkong-Zeit\x13Hongko" + - "ng-Normalzeit\x13Hongkong-Sommerzeit\x0aChowd-Zeit\x10Chowd-Normalzeit" + - "\x10Chowd-Sommerzeit\x0dIndische Zeit\x14Indischer Ozean-Zeit\x0eIndochi" + - "na-Zeit\x18Zentralindonesische Zeit\x14Ostindonesische Zeit\x15Westindon" + - "esische Zeit\x0eIranische Zeit\x14Iranische Normalzeit\x14Iranische Somm" + - "erzeit\x0cIrkutsk-Zeit\x12Irkutsk-Normalzeit\x12Irkutsk-Sommerzeit\x10Is" + - "raelische Zeit\x16Israelische Normalzeit\x16Israelische Sommerzeit\x0fJa" + - "panische Zeit\x15Japanische Normalzeit\x15Japanische Sommerzeit\x10Kamts" + - "chatka-Zeit\x16Kamtschatka-Normalzeit\x16Kamtschatka-Sommerzeit\x13Ostka" + - "sachische Zeit\x14Westkasachische Zeit\x10Koreanische Zeit\x16Koreanisch" + - "e Normalzeit\x16Koreanische Sommerzeit\x0bKosrae-Zeit\x10Krasnojarsk-Zei" + - "t\x16Krasnojarsk-Normalzeit\x16Krasnojarsk-Sommerzeit\x10Kirgisistan-Zei" + - "t\x0eSri-Lanka-Zeit\x11Linieninseln-Zeit\x0eLord-Howe-Zeit\x14Lord-Howe-" + - "Normalzeit\x14Lord-Howe-Sommerzeit\x0aMacau-Zeit\x10Macau-Normalzeit\x10" + - "Macau-Sommerzeit\x13Macquarieinsel-Zeit\x0cMagadan-Zeit\x12Magadan-Norma" + - "lzeit\x12Magadan-Sommerzeit\x10Malaysische Zeit\x0eMalediven-Zeit\x0eMar" + - "quesas-Zeit\x13Marshallinseln-Zeit\x0eMauritius-Zeit\x14Mauritius-Normal" + - "zeit\x14Mauritius-Sommerzeit\x0bMawson-Zeit\x1eMexiko Nordwestliche Zone" + - "-Zeit$Mexiko Nordwestliche Zone-Normalzeit$Mexiko Nordwestliche Zone-Som" + - "merzeit\x17Mexiko Pazifikzone-Zeit\x1dMexiko Pazifikzone-Normalzeit\x1dM" + - "exiko Pazifikzone-Sommerzeit\x10Ulaanbaatar-Zeit\x16Ulaanbaatar-Normalze" + - "it\x16Ulaanbaatar-Sommerzeit\x0dMoskauer Zeit\x13Moskauer Normalzeit\x13" + - "Moskauer Sommerzeit\x0cMyanmar-Zeit\x0aNauru-Zeit\x11Nepalesische Zeit" + - "\x14Neukaledonische Zeit\x1aNeukaledonische Normalzeit\x1aNeukaledonisch" + - "e Sommerzeit\x0fNeuseeland-Zeit\x15Neuseeland-Normalzeit\x15Neuseeland-S" + - "ommerzeit\x10Neufundland-Zeit\x16Neufundland-Normalzeit\x16Neufundland-S" + - "ommerzeit\x09Niue-Zeit\x11Norfolkinsel-Zeit\x18Fernando de Noronha-Zeit" + - "\x1eFernando de Noronha-Normalzeit\x1eFernando de Noronha-Sommerzeit\x18" + - "Nördliche-Marianen-Zeit\x10Nowosibirsk-Zeit\x16Nowosibirsk-Normalzeit" + - "\x16Nowosibirsk-Sommerzeit\x09Omsk-Zeit\x0fOmsk-Normalzeit\x0fOmsk-Somme" + - "rzeit\x12Pakistanische Zeit\x18Pakistanische Normalzeit\x18Pakistanische" + - " Sommerzeit\x0aPalau-Zeit\x14Papua-Neuguinea-Zeit\x14Paraguayanische Zei" + - "t\x1aParaguayanische Normalzeit\x1aParaguayanische Sommerzeit\x10Peruani" + - "sche Zeit\x16Peruanische Normalzeit\x16Peruanische Sommerzeit\x13Philipp" + - "inische Zeit\x19Philippinische Normalzeit\x19Philippinische Sommerzeit" + - "\x12Phoenixinseln-Zeit\x1eSaint-Pierre-und-Miquelon-Zeit$Saint-Pierre-un" + - "d-Miquelon-Normalzeit$Saint-Pierre-und-Miquelon-Sommerzeit\x13Pitcairnin" + - "seln-Zeit\x0bPonape-Zeit\x0fPjöngjang-Zeit\x0fQuysylorda-Zeit\x15Quysylo" + - "rda-Normalzeit\x14Qysylorda-Sommerzeit\x0dRéunion-Zeit\x0cRothera-Zeit" + - "\x0dSachalin-Zeit\x13Sachalin-Normalzeit\x13Sachalin-Sommerzeit\x0bSamar" + - "a-Zeit\x11Samara-Normalzeit\x11Samara-Sommerzeit\x0aSamoa-Zeit\x10Samoa-" + - "Normalzeit\x10Samoa-Sommerzeit\x0fSeychellen-Zeit\x0dSingapur-Zeit\x12Sa" + - "lomoninseln-Zeit\x13Südgeorgische Zeit\x0dSuriname-Zeit\x0aSyowa-Zeit" + - "\x0bTahiti-Zeit\x0bTaipeh-Zeit\x11Taipeh-Normalzeit\x11Taipeh-Sommerzeit" + - "\x12Tadschikistan-Zeit\x0cTokelau-Zeit\x10Tonganische Zeit\x16Tonganisch" + - "e Normalzeit\x16Tonganische Sommerzeit\x0aChuuk-Zeit\x11Turkmenistan-Zei" + - "t\x17Turkmenistan-Normalzeit\x17Turkmenistan-Sommerzeit\x0bTuvalu-Zeit" + - "\x13Uruguayanische Zeit\x18Uruguyanische Normalzeit\x19Uruguayanische So" + - "mmerzeit\x0fUsbekistan-Zeit\x15Usbekistan-Normalzeit\x15Usbekistan-Somme" + - "rzeit\x0cVanuatu-Zeit\x12Vanuatu-Normalzeit\x12Vanuatu-Sommerzeit\x0eVen" + - "ezuela-Zeit\x10Wladiwostok-Zeit\x16Wladiwostok-Normalzeit\x16Wladiwostok" + - "-Sommerzeit\x0eWolgograd-Zeit\x14Wolgograd-Normalzeit\x14Wolgograd-Somme" + - "rzeit\x0bWostok-Zeit\x0fWake-Insel-Zeit\x16Wallis-und-Futuna-Zeit\x0cJak" + - "utsk-Zeit\x12Jakutsk-Normalzeit\x12Jakutsk-Sommerzeit\x12Jekaterinburg-Z" + - "eit\x18Jekaterinburg-Normalzeit\x18Jekaterinburg-Sommerzeit\x02Fe\x02Ma" + - "\x02Ab\x02Me\x02Su\x03Sú\x02Ut\x02Se\x02Ok\x02No\x02De\x02Tu\x02We\x02Th" + - "\x02Lu\x02Ju\x02Vi\x02Lu\x03Má\x03Cé\x03Dé\x02Ao\x02Sa\x02Lu\x02Ma\x03Mé" + - "\x02Xo\x02Ve\x03Sá\x07Februar\x05März\x05April\x03Mai\x04Juni\x04Juli" + - "\x08Auguscht\x0aSeptämber\x08Oktoober\x09Novämber\x09Dezämber\x02Me\x02D" + - "u\x02Sa\x06Mäerz\x07Abrëll\x03Mee\x04Juni\x04Juli\x06August\x09September" + - "\x07Oktober\x08November\x08Dezember\x03Mee\x02PK\x02Mu\x03Dö\x02Fr\x03Zä" + - "\x06n. Chr" - -var bucket23 string = "" + // Size: 10776 bytes - "\x05Jän.\x04Feb.\x05März\x04Apr.\x03Mai\x04Juni\x04Juli\x04Aug.\x04Sep." + - "\x04Okt.\x04Nov.\x04Dez.\x07Jänner\x07Februar\x05April\x06August\x09Sept" + - "ember\x07Oktober\x08November\x08Dezember\x04Jän\x03Feb\x04Mär\x03Apr\x03" + - "Jun\x03Jul\x03Aug\x03Sep\x03Okt\x03Nov\x03Dez\x04Žan\x03Fee\x03Mar\x03Aw" + - "i\x02Me\x04Žuw\x04Žuy\x02Ut\x03Sek\x03Noo\x03Dee\x08Žanwiye\x09Feewiriye" + - "\x05Marsi\x06Awiril\x07Žuweŋ\x06Žuyye\x09Sektanbur\x08Oktoobur\x09Noowan" + - "bur\x09Deesanbur\x02Ž\x01F\x01M\x01A\x01U\x01S\x01O\x01N\x01D\x06Alhadi" + - "\x06Atinni\x08Atalaata\x06Alarba\x08Alhamisi\x06Alzuma\x06Asibti\x02A1" + - "\x02A2\x02A3\x02A4\x08Arrubu 1\x08Arrubu 2\x08Arrubu 3\x08Arrubu 4\x08Su" + - "bbaahi\x0aZaarikay b\x09Isaa jine\x0cIsaa zamanoo\x02IJ\x02IZ\x05Zaman" + - "\x05Jiiri\x05Handu\x04Hebu\x05Zaari\x02Bi\x04Hõo\x04Suba\x17Subbaahi/Zaa" + - "rikay banda\x05Guuru\x06Miniti\x04Miti\x08Leerazuu\x0cd.M.yy GGGGG\x07ja" + - "nuara\x08februara\x06měrca\x06apryla\x04maja\x06junija\x06julija\x07awgu" + - "sta\x09septembra\x07oktobra\x08nowembra\x08decembra\x02nj\x03pó\x02wa" + - "\x02sr\x02st\x03pě\x02so\x08njeźela\x0bpónjeźele\x08wałtora\x06srjoda" + - "\x08stwórtk\x05pětk\x06sobota\x0a1. kwartal\x0a2. kwartal\x0a3. kwartal" + - "\x0a4. kwartal\x0adopołdnja\x0cwótpołdnja\x06wótp.\x1cpśed Kristusowym n" + - "aroźenim\x19pśed našym licenim casa\x1apó Kristusowem naroźenju\x14našog" + - "o licenja casa\x0apś.Chr.n.\x0apś.n.l.c.\x0apó Chr.n.\x06n.l.c.\x05d.M.y" + - "\x06epocha\x05lěto\x05łoni\x07lětosa\x05znowa\x0cza {0} lěto\x0dza {0} l" + - "ěśe\x0cza {0} lěta\x0bza {0} lět\x10pśed {0} lětom\x11pśed {0} lětoma" + - "\x11pśed {0} lětami\x02l.\x0cpśed {0} l.\x07kwartal\x0eza {0} kwartal" + - "\x0fza {0} kwartala\x0fza {0} kwartale\x10za {0} kwartalow\x13pśed {0} k" + - "wartalom\x14pśed {0} kwartaloma\x14pśed {0} kwartalami\x06kwart.\x0dza {" + - "0} kwart.\x10pśed {0} kwart.\x0aza {0} kw.\x0dpśed {0} kw.\x06mjasec\x0e" + - "slědny mjasec\x0aten mjasec\x0fpśiducy mjasec\x0dza {0} mjasec\x0eza {0}" + - " mjaseca\x0eza {0} mjasecy\x0fza {0} mjasecow\x12pśed {0} mjasecom\x13pś" + - "ed {0} mjasecoma\x13pśed {0} mjasecami\x05mjas.\x0cza {0} mjas.\x0fpśed " + - "{0} mjas.\x07tyźeń\x0fslědny tyźeń\x0bten tyźeń\x10pśiducy tyźeń\x0eza {" + - "0} tyźeń\x0fza {0} tyźenja\x0fza {0} tyźenje\x10za {0} tyźenjow\x13pśed " + - "{0} tyźenjom\x14pśed {0} tyźenjoma\x14pśed {0} tyźenjami\x05tyź.\x0cza {" + - "0} tyź.\x0fpśed {0} tyź.\x05źeń\x04cora\x06źinsa\x06witśe\x0cza {0} źeń" + - "\x0bza {0} dnja\x0aza {0} dny\x0cza {0} dnjow\x0fpśed {0} dnjom\x10pśed " + - "{0} dnjoma\x10pśed {0} dnjami\x0bza {0} dnj.\x0epśed {0} dnj.\x02ź\x09za" + - " {0} ź\x0bpśed {0} d\x0eźeń tyźenja\x10slědnu njeźelu\x0btu njeźelu\x11p" + - "śiducu njeźelu\x0cslědnu nje.\x07tu nje.\x0dpśiducu nje.\x0bslědnu nj." + - "\x06tu nj.\x0cpśiducu nj.\x13slědne pónjeźele\x0eto pónjeźele\x14pśiduce" + - " pónjeźele\x0eslědne pónj.\x09to pónj.\x0fpśiduce pónj.\x0cslědne pó." + - "\x07to pó.\x0dpśiduce pó.\x10slědnu wałtoru\x0btu wałtoru\x11pśiducu wał" + - "toru\x0eslědnu wałt.\x09tu wałt.\x0fpśiducu wałt.\x0bslědnu wa.\x06tu wa" + - ".\x0cpśiducu wa.\x0eslědnu srjodu\x09tu srjodu\x0fpśiducu srjodu\x0cslěd" + - "nu srj.\x07tu srj.\x0dpśiducu srj.\x0bslědnu sr.\x06tu sr.\x0cpśiducu sr" + - ".\x10slědny stwórtk\x0cten stwórtk\x11pśiducy stwórtk\x0cslědny stw.\x08" + - "ten stw.\x0dpśiducy stw.\x0bslědny st.\x07ten st.\x0cpśiducy st.\x0dslěd" + - "ny pětk\x09ten pětk\x0epśiducy pětk\x0dslědny pět.\x09ten pět.\x0epśiduc" + - "y pět.\x0cslědny pě.\x08ten pě.\x0dpśiducy pě.\x0eslědnu sobotu\x09tu so" + - "botu\x0fpśiducu sobotu\x0cslědnu sob.\x07tu sob.\x0dpśiducu sob.\x0bslěd" + - "nu so.\x06tu so.\x0cpśiducu so.\x0dpołojca dnja\x08góźina\x0fza {0} góźi" + - "nu\x10za {0} góźinje\x0fza {0} góźiny\x0eza {0} góźin\x12pśed {0} góźinu" + - "\x14pśed {0} góźinoma\x14pśed {0} góźinami\x06góź.\x0dza {0} góź.\x10pśe" + - "d {0} góź.\x08za {0} g\x0bpśed {0} g\x10pśed {0} minutu\x12pśed {0} minu" + - "toma\x12pśed {0} minutami\x0epśed {0} min.\x08za {0} m\x0bpśed {0} m\x11" + - "pśed {0} sekundu\x13pśed {0} sekundoma\x13pśed {0} sekundami\x0epśed {0}" + - " sek.\x0bpśed {0} s\x0ccasowe pasmo\x10Casowe pasmo {0}\x12{0} lěśojski " + - "cas\x0e{0} zymski cas\x17Britiski lěśojski cas\x15Iriski lěśojski cas" + - "\x0eAfghaniski cas\x13Srjejźoafriski cas\x17Pódzajtšnoafriski cas\x19Pód" + - "połdnjowoafriski cas\x17Pódwjacornoafriski cas\x22Pódwjacornoafriski sta" + - "ndardny cas\x22Pódwjacornoafriski lěśojski cas\x0eAlaskojski cas\x19Alas" + - "kojski standardny cas\x19Alaskojski lěśojski cas\x0eAmaconaski cas\x19Am" + - "aconaski standardny cas\x19Amaconaski lěśojski cas#Pódpołnocnoameriski c" + - "entralny cas.Pódpołnocnoameriski centralny standardny cas.Pódpołnocnoame" + - "riski centralny lěśojski cas&Pódpołnocnoameriski pódzajtšny cas1Pódpołno" + - "cnoameriski pódzajtšny standardny cas1Pódpołnocnoameriski pódzajtšny lěś" + - "ojski cas!Pódpołnocnoameriski górski cas,Pódpołnocnoameriski górski stan" + - "dardny cas,Pódpołnocnoameriski górski lěśojski cas#Pódpołnocnoameriski p" + - "acifiski cas.Pódpołnocnoameriski pacifiski standardny cas.Pódpołnocnoame" + - "riski pacifiski lěśojski cas\x0bApiaski cas\x16Apiaski standardny cas" + - "\x16Apiaski lěśojski cas\x0cArabiski cas\x17Arabiski standardny cas\x17A" + - "rabiski lěśojski cas\x0fArgentinski cas\x1aArgentinski standardny cas" + - "\x1aArgentinski lěśojski cas\x1bPódwjacornoargentinski cas&Pódwjacornoar" + - "gentinski standardny cas&Pódwjacornoargentinski lěśojski cas\x0dArmeński" + - " cas\x18Armeński standardny cas\x18Armeński lěśojski cas\x0eAtlantiski c" + - "as\x19Atlantiski standardny cas\x19Atlantiski lěśojski cas\x16Srjejźoaws" + - "tralski cas!Srjejźoawstralski standardny cas!Srjejźoawstralski lěśojski " + - "cas#Srjejźopódwjacorny awstralski cas.Srjejźopódwjacorny awstralski stan" + - "dardny cas.Srjejźopódwjacorny awstralski lěśojski cas\x1aPódzajtšnoawstr" + - "alski cas%Pódzajtšnoawstralski standardny cas%Pódzajtšnoawstralski lěśoj" + - "ski cas\x1aPódwjacornoawstralski cas%Pódwjacornoawstralski standardny ca" + - "s%Pódwjacornoawstralski lěśojski cas\x14Azerbajdžaniski cas\x1fAzerbajdž" + - "aniski standardny cas\x1fAzerbajdžaniski lěśojski cas\x0bAcorski cas\x16" + - "Acorski standardny cas\x16Acorski lěśojski cas\x11Bangladešski cas\x1cBa" + - "ngladešski standardny cas\x1cBangladešski lěśojski cas\x0eBhutański cas" + - "\x0dBoliwiski cas\x0dBrasília cas\x18Brasília standardny cas\x18Brasília" + - " lěśojski cas\x0dBruneiski cas\x0eKapverdski cas\x19Kapverdski standardn" + - "y cas\x19Kapverdski lěśojski cas\x0eChamorrski cas\x0eChathamski cas\x19" + - "Chathamski standardny cas\x19Chathamski lěśojski cas\x0bChilski cas\x16C" + - "hilski standardny cas\x16Chilski lěśojski cas\x0bChinski cas\x16Chinski " + - "standardny cas\x16Chinski lěśojski cas\x12Choibalsański cas\x1dChoibalsa" + - "ński standardny cas\x1dChoibalsański lěśojski cas\x14cas Gódownych kupo" + - "w\x14cas Kokosowych kupow\x0eKolumbiski cas\x19Kolumbiski standardny cas" + - "\x19Kolumbiski lěśojski cas\x13cas Cookowych kupow\x1eStandardny cas Coo" + - "kowych kupow\x1elěśojski cas Cookowych kupow\x0dKubański cas\x18Kubański" + - " standardny cas\x18Kubański lěśojski cas\x09Davis cas\x12DumontDUrville " + - "cas\x18Pódzajtšnotimorski cas\x14cas Jatšowneje kupy\x1fstandardny cas J" + - "atšowneje kupy\x1flěśojski cas Jatšowneje kupy\x0eEkuadorski cas\x14Srje" + - "jźoeuropski cas\x1fSrjejźoeuropski standardny cas\x1fSrjejźoeuropski lěś" + - "ojski cas\x18Pódzajtšnoeuropski cas#Pódzajtšnoeuropski standardny cas#Pó" + - "dzajtšnoeuropski lěśojski cas\x12Kaliningradski cas\x18Pódwjacornoeurops" + - "ki cas#Pódwjacornoeuropski standardny cas#Pódwjacornoeuropski lěśojski c" + - "as\x0fFalklandski cas\x1aFalklandski standardny cas\x1aFalklandski lěśoj" + - "ski cas\x0dFidźiski cas\x18Fidźiski standardny cas\x18Fidźiski lěśojski " + - "cas\x17Francojskoguyański cas=cas francojskego pódpołdnjowego a antarkti" + - "skeho teritoriuma\x0fGalapagoski cas\x0eGambierski cas\x0dGeorgiski cas" + - "\x18Georgiski standardny cas\x18Georgiski lěśojski cas\x16cas Gilbertowy" + - "ch kupow\x10Greenwichski cas\x1cPódzajtšnogrönlandski cas'Pódzajtšnogrön" + - "landski standardny cas'Pódzajtšnogrönlandski lěśojski cas\x1cPódwjacorno" + - "grönlandski cas'Pódwjacornogrönlandski standardny cas'Pódwjacornogrönlan" + - "dski lěśojski cas\x14cas Persiskego golfa\x0dGuyański cas\x16Hawaiisko-a" + - "leutski cas!Hawaiisko-aleutski standardny cas!Hawaiisko-aleutski lěśojsk" + - "i cas\x0fHongkongski cas\x1aHongkongski standardny cas\x1aHongkongski lě" + - "śojski cas\x0cChowdski cas\x17Chowdski standardny cas\x17Chowdski lěśoj" + - "ski cas\x0bIndiski cas\x14Indiskooceaniski cas\x0fIndochinski cas\x15Srj" + - "ejźoindoneski cas\x15Pódzajtšnoindoneski\x19Pódwjacornoindoneski cas\x0c" + - "Irański cas\x17Irański standardny cas\x17Irański lěśojski cas\x0cIrkutsk" + - "i cas\x17Irkutski standardny cas\x17Irkutski lěśojski cas\x0dIsraelski c" + - "as\x18Israelski standardny cas\x18Israelski lěśojski cas\x0dJapański cas" + - "\x18Japański standardny cas\x18Japański lěśojski cas\x19Pódzajtšnokazach" + - "ski cas\x19Pódwjacornokazachski cas\x0cKorejski cas\x17Korejski standard" + - "ny cas\x17Korejski lěśojski cas\x0dKosraeski cas\x10Krasnojarski cas\x1b" + - "Krasnojarski standardny cas\x1bKrasnojarski lěśojski cas\x0cKirgiski cas" + - "\x14cas Linijowych kupow\x12cas kupy Lord-Howe\x1dStandardny cas kupy Lo" + - "rd-Howe\x1dlěśojski cas kupy Lord-Howe\x12cas kupy Macquarie\x0fMagadańs" + - "ki cas\x1aMagadański standardny cas\x1aMagadański lěśojski cas\x0eMalajz" + - "iski cas\x0eMalediwski cas\x0dMarqueski cas\x17cas Marshallowych kupow" + - "\x0eMauriciski cas\x19Mauriciski standardny cas\x19Mauriciski lěśojski c" + - "as\x0aMawson cas\x1bMexiski dłujkowjacorny cas&Mexiski dłujkowjacorny st" + - "andardny cas&Mexiski dłujkowjacorny lěśojski cas\x15Mexiski pacifiski ca" + - "s Mexiski pacifiski standardny cas Mexiski pacifiski lěśojski cas\x11Ula" + - "n-Batorski cas\x1cUlan-Batorski standardny cas\x1cUlan-Batorski lěśojski" + - " cas\x0dMoskowski cas\x18Moskowski standardny cas\x18Moskowski lěśojski " + - "cas\x0eMyanmarski cas\x0cNauruski cas\x0cNepalski cas\x13Nowokaledoniski" + - " cas\x1eNowokaledoniski standardny cas\x1eNowokaledoniski lěśojski cas" + - "\x12Nowoseelandski cas\x1dNowoseelandski standardny cas\x1dNowoseelandsk" + - "i lěśojski cas\x13Nowofundlandski cas\x1eNowofundlandski standardny cas" + - "\x1eNowofundlandski lěśojski cas\x0bNiueski cas\x10cas kupy Norfolk\x17c" + - "as Fernando de Noronha\x22standardny cas Fernando de Noronha\x22lěśojski" + - " cas Fernando de Noronha\x10Nowosibirski cas\x1bNowosibirski standardny " + - "cas\x1bNowosibirski lěśojski cas\x09Omski cas\x14Omski standardny cas" + - "\x14Omski lěśojski cas\x10Pakistański cas\x1bPakistański standardny cas" + - "\x1bPakistański lěśojski cas\x0cPalauski cas\x16Papua-Nowoginejski cas" + - "\x0fParaguayski cas\x1aParaguayski standardny cas\x1aParaguayski lěśojsk" + - "i cas\x0bPeruski cas\x16Peruski standardny cas\x16Peruski lěśojski cas" + - "\x0eFilipinski cas\x19Filipinski standardny cas\x19Filipinski lěśojski c" + - "as\x16cas Phoenixowych kupow\x1dSt.-Pierre-a-Miqueloński cas(St.-Pierre-" + - "a-Miqueloński standardny cas(St.-Pierre-a-Miqueloński lěśojski cas\x17ca" + - "s Pitcairnowych kupow\x0cPonapski cas\x0eReunionski cas\x0bcas Rothera" + - "\x0fSachalinski cas\x1aSachalinski standardny cas\x1aSachalinski lěśojsk" + - "i cas\x0cSamoaski cas\x17Samoaski standardny cas\x17Samoaski lěśojski ca" + - "s\x0eSeychelski cas\x0fSingapurski cas\x0fSalomoński cas\x1bPódpołdnjowo" + - "georgiski cas\x0eSurinamski cas\x09Syowa cas\x0dTahitiski cas\x0fTchajpe" + - "jski cas\x1aTchajpejski standardny cas\x1aTchajpejski lěśojski cas\x0fTa" + - "dźikiski cas\x0eTokelauski cas\x0cTongaski cas\x17Tongaski standardny ca" + - "s\x17Tongaski lěśojski cas\x0cChuukski cas\x0fTurkmeniski cas\x1aTurkmen" + - "iski standardny cas\x1aTurkmeniski lěśojski cas\x0cTuvalski cas\x0eUrugu" + - "ayski cas\x19Uruguayski standardny cas\x19Uruguayski lěśojski cas\x0dUzb" + - "ekiski cas\x18Uzbekiski standardny cas\x18Uzbekiski lěśojski cas\x0dVanu" + - "atski cas\x18Vanuatski standardny cas\x18Vanuatski lěśojski cas\x0fVenez" + - "uelski cas\x12Wladiwostokski cas\x1dWladiwostokski standardny cas\x1dWla" + - "diwostokski lěśojski cas\x10Wolgogradski cas\x1bWolgogradski standardny " + - "cas\x1bWolgogradski lěśojski cas\x0acas Wostok\x0dcas kupy Wake\x19cas k" + - "upow Wallis a Futuna\x0cJakutski cas\x17Jakutski standardny cas\x17Jakut" + - "ski lěśojski cas\x14Jekaterinburgski cas\x1fJekaterinburgski standardny " + - "cas\x1fJekaterinburgski lěśojski cas\x04meje\x02wu\x03št\x02pj\x02so\x0d" + - "za {0} lěće\x10za {0} kwartalej\x03Mar\x02Me\x02Ut\x03Okt\x01F\x01M\x01A" + - "\x01U\x01S\x01O\x01N\x01D\x05Atini\x07Atalata\x09Alhamiisa\x06Aljuma\x07" + - "Assabdu\x0cIsaa jamanoo\x02lu\x02ma\x03mɛ\x02ye\x02va\x02ms\x02A2\x02A5" + - "\x02A6\x02A7\x03Mar\x02Me\x03Okt\x01F\x01M\x01A\x01U\x01S\x01O\x01N\x01D" + - "\x01B\x01L\x01K\x01S\x01T\x01P\x01Y\x02NJ\x01C\x01V\x02Č\x01R\x01J\x01M" + - "\x01T\x01W\x01K\x01G\x01Z\x01L\x01I\x02Kh\x01Q\x01H\x01E\x03Mar\x03Okt" + - "\x01F\x01M\x01A\x01S\x01O\x01N\x01D\x01I\x02Ɣ\x01C\x01K\x01S\x01T\x01P" + - "\x01V\x01H\x02Ö\x01E" - -var bucket24 string = "" + // Size: 19031 bytes - "\x02di\x06ŋgɔn\x05sɔŋ\x04diɓ\x03emi\x04esɔ\x03mad\x04diŋ\x05nyɛt\x03may" + - "\x03tin\x04elá\x09dimɔ́di\x09ŋgɔndɛ\x07sɔŋɛ\x0adiɓáɓá\x08emiasele\x0desɔ" + - "pɛsɔpɛ\x13madiɓɛ́díɓɛ́\x09diŋgindi\x09nyɛtɛki\x0amayésɛ́\x08tiníní\x0bel" + - "áŋgɛ́\x03ét\x06mɔ́s\x03kwa\x03muk\x04ŋgi\x05ɗón\x03esa\x04éti\x08mɔ́sú" + - "\x06kwasú\x0amukɔ́sú\x07ŋgisú\x0aɗónɛsú\x09esaɓasú\x04ndu1\x04ndu2\x04nd" + - "u3\x04ndu4\x14ndúmbū nyá ɓosó\x1endúmbū ní lóndɛ́ íɓaá\x1endúmbū ní lónd" + - "ɛ́ ílálo\x1fndúmbū ní lóndɛ́ ínɛ́y\x06idiɓa\x07ebyámu\x16ɓoso ɓwá yáɓe " + - "lá\x14mbúsa kwédi a Yés\x05ɓ.Ys\x05mb.Ys\x07póndá\x04mbú\x07mɔ́di\x06dis" + - "ama\x07búnyá\x15kíɛlɛ nítómb́í\x0cwɛ́ŋgɛ̄\x08kíɛlɛ\x12mínyá má disama" + - "\x0fepasi a búnyá\x08ŋgandɛ\x07ndɔkɔ\x07píndí\x06Sanvie\x08Fébirie\x04Ma" + - "rs\x06Aburil\x03Mee\x05Sueŋ\x07Súuyee\x02Ut\x09Settembar\x07Oktobar\x08N" + - "ovembar\x08Disambar\x03Dim\x03Ten\x03Tal\x03Ala\x03Ara\x03Arj\x03Sib\x05" + - "Dimas\x06Teneŋ\x06Talata\x07Alarbay\x08Aramisay\x06Arjuma\x06Sibiti\x0dA" + - "riŋuu Yeesu\x0dAtooŋe Yeesu\x03ArY\x03AtY\x07Jamanay\x04Emit\x07Fuleeŋ" + - "\x08Lóokuŋ\x05Funak\x05Fucen\x04Jaat\x05Kajom\x0fBujom / Kalíim5EEEE, G " + - "སྤྱི་ལོ་y MMMM ཚེས་dd0G སྤྱི་ལོ་y MMMM ཚེས་ dd7G སྤྱི་ལོ་y ཟླ་MMM ཚེས་" + - "dd\x03༡\x03༢\x03༣\x03༤\x03༥\x03༦\x03༧\x03༨\x03༩\x06༡༠\x06༡༡\x0212\x014" + - "\x019\x06༡༢\x15ཟླ་དངཔ་\x1eཟླ་གཉིས་པ་\x1eཟླ་གསུམ་པ་\x1bཟླ་བཞི་པ་\x18ཟླ་ལྔ" + - "་པ་\x1bཟླ་དྲུག་པ\x1eཟླ་བདུན་པ་!ཟླ་བརྒྱད་པ་\x1bཟླ་དགུ་པ་\x1bཟླ་བཅུ་པ་*ཟ" + - "ླ་བཅུ་གཅིག་པ་*ཟླ་བཅུ་གཉིས་པ་$སྤྱི་ཟླ་དངཔ་-སྤྱི་ཟླ་གཉིས་པ་-སྤྱི་ཟླ་གསུམ" + - "་པ་'སྤྱི་ཟླ་བཞི་པ'སྤྱི་ཟླ་ལྔ་པ་*སྤྱི་ཟླ་དྲུག་པ-སྤྱི་ཟླ་བདུན་པ་0སྤྱི་ཟླ" + - "་བརྒྱད་པ་*སྤྱི་ཟླ་དགུ་པ་*སྤྱི་ཟླ་བཅུ་པ་9སྤྱི་ཟླ་བཅུ་གཅིག་པ་9སྤྱི་ཟླ་བཅ" + - "ུ་གཉིས་པ་\x09ཟླ་\x0cམིར་\x0cལྷག་\x0cཕུར་\x0cསངས་\x0fསྤེན་\x09ཉི་\x1bབཞ" + - "ི་དཔྱ་༡\x1bབཞི་དཔྱ་༢\x1bབཞི་དཔྱ་༣\x1bབཞི་དཔྱ་༤'བཞི་དཔྱ་དང་པ་-བཞི་དཔྱ་ག" + - "ཉིས་པ་-བཞི་དཔྱ་གསུམ་པ་*བཞི་དཔྱ་བཞི་པ་\x0fསྔ་ཆ་\x12ཕྱི་ཆ་3EEEE, སྤྱི་ལོ" + - "་y MMMM ཚེས་dd.སྤྱི་ལོ་y MMMM ཚེས་ dd5སྤྱི་ལོ་y ཟླ་MMM ཚེས་dd7ཆུ་ཚོད་ " + - "h སྐར་མ་ mm:ss a zzzz4ཆུ་ཚོད་ h སྐར་མ་ mm:ss a z\x1eཆུ་ཚོད་h:mm:ss a/ཆུ་" + - "ཚོད་ h སྐར་མ་ mm a\x18དུས་བསྐལ\x06ལོ&ལོ་འཁོར་ {0} ནང་,ལོ་འཁོར་ {0} ཧེ་" + - "མ་\x0fཟླ་ཝ་\x1aཟླཝ་ {0} ནང་ ཟླཝ་ {0} ཧེ་མ་\x18བདུན་ཕྲག)བངུན་ཕྲག་ {0} ན" + - "ང་/བངུན་ཕྲག་ {0} ཧེ་མ་\x0cཚེས་\x0fཁ་ཉིམ\x0cཁ་ཙ་\x12ད་རིས་\x12ནངས་པ་" + - "\x15གནངས་ཚེ\x1dཉིནམ་ {0} ནང་#ཉིནམ་ {0} ཧེ་མ་-བདུན་ཕྲག་གི་ཉིམ\x1fསྔ་ཆ/ཕྱི" + - "་ཆ་\x12ཆུ་ཚོད#ཆུ་ཚོད་ {0} ནང་)ཆུ་ཚོད་ {0} ཧེ་མ་\x0fསྐར་མ སྐར་མ་ {0} ནང" + - "་&སྐར་མ་ {0} ཧེ་མ་\x15སྐར་ཆཱ་ སྐར་ཆ་ {0} ནང་&སྐར་ཆ་ {0} ཧེ་མ་\x15དུས་ཀ" + - "ུལ\x1b{0}་ཆུ་ཚོད།Hབྲཱི་ཊིཤ་བྱཱར་དུས་ཆུ་ཚོདEཨཱ་ཡརིཤ་བྱཱར་དུས་ཆུ་ཚོད9ཨཕ་" + - "ག་ནི་ས྄ཏཱནཆུ་ཚོདNདབུས་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོདHཤར་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོདKལ" + - "ྷོ་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོདKནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོད`ནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་" + - "ཚད་ལྡན་ཆུ་ཚོདfནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་བྱཱར་དུས་ཆུ་ཚོད*ཨ་ལསི་ཀ་ཆུ་ཚོད?ཨ་ལསི་" + - "ཀ་ཚད་ལྡན་ཆུ་ཚོདEཨ་ལསི་ཀ་ཉིན་སྲུང་ཆུ་ཚོད0ཨེ་མ་ཛཱོན་ཆུ་ཚོདEཨེ་མ་ཛཱོན་ཚད་" + - "ལྡན་ཆུ་ཚོདKཨེ་མ་ཛཱོན་བྱཱར་དུས་ཆུ་ཚོད]བྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཆུ་ཚོདrབ" + - "ྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཚད་ལྡན་ཆུ་ཚོདxབྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཉིན་སྲུ" + - "ང་ཆུ་ཚོདWབྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཆུ་ཚོདlབྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཚད་ལྡན་ཆ" + - "ུ་ཚོདrབྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཉིན་སྲུང་ཆུ་ཚོདTབྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཆུ་" + - "ཚོདiབྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཚད་ལྡན་ཆུ་ཚོདoབྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཉིན་སྲུང" + - "་ཆུ་ཚོདZབྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཆུ་ཚོདoབྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཚད་ལྡན་" + - "ཆུ་ཚོདuབྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཉིན་སྲུང་ཆུ་ཚོད6ཨ་རེ་བྷི་ཡན་ཆུ་ཚོདKཨ་རེ" + - "་བྷི་ཡན་ཚད་ལྡན་ཆུ་ཚོདEཨ་རེ་བྷི་ཡན་སྲུང་ཆུ་ཚོད6ཨར་ཇེན་ཊི་ན་ཆུ་ཚོདKཨར་ཇེ" + - "ན་ཊི་ན་ཚད་ལྡན་ཆུ་ཚོདQཨར་ཇེན་ཊི་ན་བྱཱར་དུས་ཆུ་ཚོདTནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན" + - "་ཆུ་ཚོདiནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན་ཚད་ལྡན་ཆུ་ཚོདoནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན་བྱཱར" + - "་དུས་ཆུ་ཚོད3ཨར་མི་ནི་ཡ་ཆུ་ཚོདHཨར་མི་ནི་ཡ་ཚད་ལྡན་ཆུ་ཚོདNཨར་མི་ནི་ཡ་བྱཱར" + - "་དུས་ཆུ་ཚོད6ཨེཊ་ལེན་ཊིཀ་ཆུ་ཚོདKཨེཊ་ལེན་ཊིཀ་ཚད་ལྡན་ཆུ་ཚོདQཨེཊ་ལེན་ཊིཀ་ཉ" + - "ིན་སྲུང་ཆུ་ཚོད`དབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོདuདབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལ" + - "ི་ཡ་ཚད་ལྡན་ཆུ་ཚོད{དབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོདiབུས་ནུབ་ཕྱ" + - "ོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད\x81དབུས་ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚ" + - "ོད\x87དབུས་ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོདlཤར་ཕྱོགས་ཕྱོགས་ཨཱོ" + - "ས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད\x81ཤར་ཕྱོགས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོད\x87ཤ" + - "ར་ཕྱོགས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད]ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་" + - "ཆུ་ཚོདrནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོདxནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ" + - "་ཉིན་སྲུང་ཆུ་ཚོད<ཨ་ཛར་བྷའི་ཇཱན་ཆུ་ཚོདQཨ་ཛར་བྷའི་ཇཱན་ཚད་ལྡན་ཆུ་ཚོདWཨ་ཛར" + - "་བྷའི་ཇཱན་བྱཱར་དུས་ཆུ་ཚོད*ཨེ་ཛོརས་ཆུ་ཚོད?ཨེ་ཛོརས་ཚད་ལྡན་ཆུ་ཚོདEཨེ་ཛོརས" + - "་བྱཱར་དུས་ཆུ་ཚོད0བངྒ་ལ་དེཤ་ཆུ་ཚོདEབངྒ་ལ་དེཤ་ཚད་ལྡན་ཆུ་ཚོདKབངྒ་ལ་དེཤ་བྱ" + - "ཱར་དུས་ཆུ་ཚོད0འབྲུག་ཡུལ་ཆུ་ཚོད6བྷོ་ལི་བི་ཡ་ཆུ་ཚོད3བྲ་ཛི་ལི་ཡ་ཆུ་ཚོདHབྲ" + - "་ཛི་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོདNབྲ་ཛི་ལི་ཡ་བྱཱར་དུས་ཆུ་ཚོད*ཀེཔ་བཱཌ་ཆུ་ཚོད?ཀེཔ་བ" + - "ཱཌ་ཚད་ལྡན་ཆུ་ཚོདEཀེཔ་བཱཌ་བྱཱར་དུས་ཆུ་ཚོད$ཅི་ལི་ཆུ་ཚོད9ཅི་ལི་ཚད་ལྡན་ཆུ་" + - "ཚོད?ཅི་ལི་བྱཱར་དུས་ཆུ་ཚོད'རྒྱ་ནག་ཆུ་ཚོད<རྒྱ་ནག་ཚད་ལྡན་ཆུ་ཚོདBརྒྱ་ནག་ཉི" + - "ན་སྲུང་ཆུ་ཚོདQཁི་རིསྟ་མེས་མཚོ་གླིང་ཆུ་ཚོད9ཀོ་ལོམ་བྷི་ཡ་ཆུ་ཚོདNཀོ་ལོམ་བ" + - "ྷི་ཡ་ཚད་ལྡན་ཆུ་ཚོདTཀོ་ལོམ་བྷི་ཡ་བྱཱར་དུས་ཆུ་ཚོད*ཀིའུ་བྷ་ཆུ་ཚོད?ཀིའུ་བྷ" + - "་ཚད་ལྡན་ཆུ་ཚོདEཀིའུ་བྷ་ཉིན་སྲུང་ཆུ་ཚོདHཨིསི་ཊར་ཨཱའི་ལེནཌ་ཆུ་ཚོད]ཨིསི་ཊ" + - "ར་ཨཱའི་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོདcཨིསི་ཊར་ཨཱའི་ལེནཌ་བྱཱར་དུས་ཆུ་ཚོད-ཨེ་ཀུ་ཌཽ་ཆ" + - "ུ་ཚོདQདབུས་ཕྱོགས་ཡུ་རོ་པེན་ཆུ་ཚོདfདབུས་ཕྱོགས་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོདlད" + - "བུས་ཕྱོགས་ཡུ་རོ་པེན་བྱཱར་དུས་ཆུ་ཚོདKཤར་ཕྱོགས་ཡུ་རོ་པེན་ཆུ་ཚོད`ཤར་ཕྱོགས" + - "་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོདfཤར་ཕྱོགས་ཡུ་རོ་པེན་བྱཱར་དུས་ཆུ་ཚོདNནུབ་ཕྱོགས་" + - "ཡུ་རོ་པེན་ཆུ་ཚོདcནུབ་ཕྱོགས་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོདiནུབ་ཕྱོགས་ཡུ་རོ་པེན" + - "་བྱཱར་དུས་ཆུ་ཚོདNཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་ཆུ་ཚོདcཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་ཚད་ལྡན" + - "་ཆུ་ཚོདiཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་བྱཱར་དུས་ཆུ་ཚོད<ཕིརེནཅ་གི་ཡ་ན་ཆུ་ཚོད3ག་ལ་པ" + - "་གོསི་ཆུ་ཚོད$ཇཽ་ཇཱ་ཆུ་ཚོད9ཇཽ་ཇཱ་ཚད་ལྡན་ཆུ་ཚོད?ཇཽ་ཇཱ་བྱཱར་དུས་ཆུ་ཚོདQགི" + - "རིན་ཝིཆ་ལུ་ཡོད་པའི་ཆུ་ཚོདNཤར་ཕྱོགས་གིརིན་ལེནཌ་ཆུ་ཚོདcཤར་ཕྱོགས་གིརིན་ལེ" + - "ནཌ་ཚད་ལྡན་ཆུ་ཚོདiཤར་ཕྱོགས་གིརིན་ལེནཌ་བྱཱར་དུས་ཆུ་ཚོདQནུབ་ཕྱོགས་གིརིན་ལ" + - "ེནཌ་ཆུ་ཚོདfནུབ་ཕྱོགས་གིརིན་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོདlནུབ་ཕྱོགས་གིརིན་ལེནཌ་བྱཱ" + - "ར་དུས་ཆུ་ཚོད$གཱལཕི་ཆུ་ཚོད'གུ་ཡ་ན་ཆུ་ཚོདIཧ་ཝའི་-ཨེ་ལིའུ་ཤེན་ཆུ་ཚོད^ཧ་ཝའ" + - "ི་-ཨེ་ལིའུ་ཤེན་ཚད་ལྡན་ཆུ་ཚོདdཧ་ཝའི་-ཨེ་ལིའུ་ཤེན་ཉིན་སྲུང་ཆུ་ཚོད'རྒྱ་གར" + - "་ཆུ་ཚོདKརྒྱ་གར་གྱི་རྒྱ་མཚོ་ཆུ་ཚོད<ཨིན་ཌོ་ཅཱའི་ན་ཆུ་ཚོད`དབུས་ཕྱོགས་ཨིན་" + - "ཌོ་ནེ་ཤི་ཡ་ཆུ་ཚོདZཤར་ཕྱོགས་ཨིན་ཌོ་ནེ་ཤི་ཡ་ཆུ་ཚོད]ནུབ་ཕྱོགས་ཨིན་ཌོ་ནེ་ཤ" + - "ི་ཡ་ཆུ་ཚོད'ཨི་རཱན་ཆུ་ཚོད<ཨི་རཱན་ཚད་ལྡན་ཆུ་ཚོདBཨི་རཱན་ཉིན་སྲུང་ཆུ་ཚོད*ཨ" + - "ར་ཀུཙི་ཆུ་ཚོད?ཨར་ཀུཙི་ཚད་ལྡན་ཆུ་ཚོདEཨར་ཀུཙི་བྱཱར་དུས་ཆུ་ཚོད*ཨིས་རེལ་ཆུ" + - "་ཚོད?ཨིས་རེལ་ཚད་ལྡན་ཆུ་ཚོདEཨིས་རེལ་ཉིན་སྲུང་ཆུ་ཚོད$ཇ་པཱན་ཆུ་ཚོད9ཇ་པཱན་" + - "ཚད་ལྡན་ཆུ་ཚོད?ཇ་པཱན་ཉིན་སྲུང་ཆུ་ཚོད*ཀོ་རི་ཡ་ཆུ་ཚོད?ཀོ་རི་ཡ་ཚད་ལྡན་ཆུ་ཚ" + - "ོདEཀོ་རི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད<ཀརསི་ནོ་ཡརསཀི་ཆུ་ཚོདQཀརསི་ནོ་ཡརསཀི་ཚད་ལྡན་ཆ" + - "ུ་ཚོདWཀརསི་ནོ་ཡརསཀི་བྱཱར་དུས་ཆུ་ཚོད-མ་གྷ་དཱན་ཆུ་ཚོདBམ་གྷ་དཱན་ཚད་ལྡན་ཆུ" + - "་ཚོདHམ་གྷ་དཱན་བྱཱར་དུས་ཆུ་ཚོད-མཱལ་དིབས་ཆུ་ཚོད0མོ་རི་ཤཱས་ཆུ་ཚོདEམོ་རི་ཤ" + - "ཱས་ཚད་ལྡན་ཆུ་ཚོདKམོ་རི་ཤཱས་བྱཱར་དུས་ཆུ་ཚོད'མཽས་ཀོ་ཆུ་ཚོད<མཽས་ཀོ་ཚད་ལྡན" + - "་ཆུ་ཚོདBམཽས་ཀོ་བྱཱར་དུས་ཆུ་ཚོད'ནེ་པཱལ་ཆུ་ཚོད9ནིའུ་ཛི་ལེནཌ་ཆུ་ཚོདNནིའུ་" + - "ཛི་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོདTནིའུ་ཛི་ལེནཌ་ཉིན་སྲུང་ཆུ་ཚོདBནིའུ་ཕའུནཌ་ལེནཌ་ཆུ་" + - "ཚོདWནིའུ་ཕའུནཌ་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོད]ནིའུ་ཕའུནཌ་ལེནཌ་ཉིན་སྲུང་ཆུ་ཚོདYཕར་ན" + - "ེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་ཆུ་ཚོདnཕར་ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་ཚད་ལྡན་ཆུ་ཚོདtཕར་" + - "ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་བྱཱར་དུས་ཆུ་ཚོདBནོ་བོ་སི་བིརསཀི་ཆུ་ཚོདWནོ་བོ་སི་" + - "བིརསཀི་ཚད་ལྡན་ཆུ་ཚོད]ནོ་བོ་སི་བིརསཀི་བྱཱར་དུས་ཆུ་ཚོད'ཨོམསཀི་ཆུ་ཚོད<ཨོམ" + - "སཀི་ཚད་ལྡན་ཆུ་ཚོདBཨོམསཀི་བྱཱར་དུས་ཆུ་ཚོད3པ་ཀི་ས྄ཏཱན་ཆུ་ཚོདHཔ་ཀི་ས྄ཏཱན་" + - "ཚད་ལྡན་ཆུ་ཚོདNཔ་ཀི་ས྄ཏཱན་བྱཱར་དུས་ཆུ་ཚོད3པ་ར་གུ་ཝའི་ཆུ་ཚོདHཔ་ར་གུ་ཝའི་" + - "ཚད་ལྡན་ཆུ་ཚོདNཔ་ར་གུ་ཝའི་བྱཱར་དུས་ཆུ་ཚོད!པ་རུ་ཆུ་ཚོད6པ་རུ་ཚད་ལྡན་ཆུ་ཚོ" + - "ད<པ་རུ་བྱཱར་དུས་ཆུ་ཚོདQཔའི་རི་དང་མི་ཀི་ལཱོན་ཆུ་ཚོདfཔའི་རི་དང་མི་ཀི་ལཱོ" + - "ན་ཚད་ལྡན་ཆུ་ཚོདlཔའི་རི་དང་མི་ཀི་ལཱོན་ཉིན་སྲུང་ཆུ་ཚོད9རི་ཡུ་ནི་ཡཱན་ཆུ་ཚ" + - "ོད*ས་ཁ་ལིན་ཆུ་ཚོད?ས་ཁ་ལིན་ཚད་ལྡན་ཆུ་ཚོདEས་ཁ་ལིན་བྱཱར་དུས་ཆུ་ཚོད*སེ་ཤཱལ" + - "ས་ཆུ་ཚོད0སུ་རི་ནཱམ་ཆུ་ཚོད<ཡུ་རུ་གུ་ཝཱའི་ཆུ་ཚོདQཡུ་རུ་གུ་ཝཱའི་ཚད་ལྡན་ཆུ" + - "་ཚོདWཡུ་རུ་གུ་ཝཱའི་བྱཱར་དུས་ཆུ་ཚོད<བེ་ནི་ཛུ་ཝེ་ལ་ཆུ་ཚོདBབ་ལ་ཌི་བོསི་ཏོ" + - "ཀ་ཆུ་ཚོདWབ་ལ་ཌི་བོསི་ཏོཀ་ཚད་ལྡན་ཆུ་ཚོད]བ་ལ་ཌི་བོསི་ཏོཀ་བྱཱར་དུས་ཆུ་ཚོད" + - "<བཱོལ་གོ་གིརེཌ་ཆུ་ཚོདQབཱོལ་གོ་གིརེཌ་ཚད་ལྡན་ཆུ་ཚོདWབཱོལ་གོ་གིརེཌ་བྱཱར་དུས" + - "་ཆུ་ཚོད-ཡ་ཀུཙིཀི་ཆུ་ཚོདBཡ་ཀུཙིཀི་ཚད་ལྡན་ཆུ་ཚོདHཡ་ཀུཙིཀི་བྱཱར་དུས་ཆུ་ཚོ" + - "དBཡེ་ཀ་ཏེ་རིན་བརག་ཆུ་ཚོདWཡེ་ཀ་ཏེ་རིན་བརག་ཚད་ལྡན་ཆུ་ཚོད]ཡེ་ཀ་ཏེ་རིན་བརག" + - "་བྱཱར་དུས་ཆུ་ཚོད\x02lu\x02ma\x02me\x03ĵa\x02ve\x02sa\x02lu\x02ma\x02je" + - "\x02sa\x03Pos\x03Pir\x03Tat\x03Nai\x03Sha\x03Sab" - -var bucket25 string = "" + // Size: 9384 bytes - "\x02BT\x03Mbe\x03Kai\x03Kat\x03Kan\x03Gat\x03Gan\x03Mug\x03Knn\x03Ken" + - "\x03Iku\x03Imw\x03Igi\x0eMweri wa mbere\x0fMweri wa kaĩri\x11Mweri wa ka" + - "thatũ\x0dMweri wa kana\x0fMweri wa gatano\x13Mweri wa gatantatũ\x12Mweri" + - " wa mũgwanja\x0fMweri wa kanana\x0eMweri wa kenda\x0fMweri wa ikũmi\x18M" + - "weri wa ikũmi na ũmwe\x1aMweri wa ikũmi na Kaĩrĩ\x03Kma\x03Tat\x03Ine" + - "\x03Tan\x03Arm\x03Maa\x03NMM\x06Kiumia\x09Njumatatu\x08Njumaine\x09Njuma" + - "tano\x08Aramithi\x06Njumaa\x0bNJumamothii\x0eKuota ya mbere\x10Kuota ya " + - "Kaĩrĩ\x10Kuota ya kathatu\x0dKuota ya kana\x02KI\x02UT\x0fMbere ya Krist" + - "o\x10Thutha wa Kristo\x02MK\x02TK\x06Ivinda\x05Mweri\x09Mũthenya\x06Ĩgor" + - "o\x0aŨmũnthĩ\x07Rũciũ\x15Mũthenya kiumia-inĩ\x05Ithaa\x08Ndagĩka\x07Gĩth" + - "aa\x03dzv\x03dzd\x03ted\x04afɔ\x03dam\x03mas\x03sia\x03dea\x03any\x03kel" + - "\x03ade\x03dzm\x05dzove\x06dzodze\x06tedoxe\x09afɔfiẽ\x05damɛ\x04masa" + - "\x08siamlɔm\x0adeasiamime\x09anyɔnyɔ\x04kele\x0dadeɛmekpɔxe\x05dzome\x15" + - "EEEE, U MMMM dd 'lia'\x0eU MMMM d 'lia'\x0dU MMM d 'lia'\x03foa\x06ƒoave" + - "\x04ƒoa\x07afɔfie\x16EEEE, MMMM d 'lia' y G\x10MMMM d 'lia' y G\x10MMM d" + - " 'lia', y G\x07{0} {1}\x08afɔfĩe\x04dama\x04kɔs\x03dzo\x03bla\x04kuɖ\x03" + - "yaw\x04fiɖ\x03mem\x08kɔsiɖa\x06dzoɖa\x06blaɖa\x05kuɖa\x07yawoɖa\x05fiɖa" + - "\x08memleɖa\x02k1\x02k2\x02k3\x02k4\x0dkɔta gbãtɔ\x0ckɔta evelia\x0fkɔta" + - " etɔ̃lia\x0ckɔta enelia\x04ŋdi\x07ɣetrɔ\x07fɔŋli\x05ŋdɔ\x05fiẽ\x03zã\x02" + - "ɣ\x15Hafi Yesu Va Do ŋgɔ\x0bYesu Ŋɔli\x02hY\x03Bŋ\x03Yŋ\x03Eŋ\x14EEEE, " + - "MMMM d 'lia' y\x0eMMMM d 'lia' y\x0eMMM d 'lia', y\x13a 'ga' h:mm:ss zzz" + - "z\x10a 'ga' h:mm:ss z\x0ea 'ga' h:mm:ss\x0ba 'ga' h:mm\x09dasiamime\x18E" + - "EEE, MMMM dd 'lia', G y\x11MMMM d 'lia', G y\x10MMM d 'lia', G y\x0edd-M" + - "M-GGGGG yy\x0bhafi R.O.C.\x0ddd-MM-GGGGG y\x06ŋɔli\x03ƒe\x0cƒe si va yi" + - "\x07ƒe sia\x0eƒe si gbɔ na\x0dle ƒe {0} me\x10ƒe {0} si va yi\x13ƒe {0} " + - "si wo va yi\x16le ƒe {0} si va yi me\x17le ƒe {0} si gbɔna me\x13ƒe {0} " + - "si va yi me\x05kɔta\x1ale kɔta {0} si gbɔ na me\x15kɔta {0} si va yi me" + - "\x19le kɔta {0} si gbɔna me\x06ɣleti\x0fɣleti si va yi\x0aɣleti sia\x11ɣ" + - "leti si gbɔ na\x10le ɣleti {0} me\x13le ɣleti {0} wo me\x13ɣleti {0} si " + - "va yi\x16ɣleti {0} si wo va yi\x0ekɔsiɖa ɖeka\x11kɔsiɖa si va yi\x0ckɔsi" + - "ɖa sia\x13kɔsiɖa si gbɔ na\x12le kɔsiɖa {0} me\x15le kɔsiɖa {0} wo me" + - "\x15kɔsiɖa {0} si va yi\x18kɔsiɖa {0} si wo va yi\x06ŋkeke\x10nyitsɔ si " + - "va yi\x0eetsɔ si va yi\x04egbe\x0fetsɔ si gbɔna\x11nyitsɔ si gbɔna\x10le" + - " ŋkeke {0} me\x13le ŋkeke {0} wo me\x13ŋkeke {0} si va yi\x16ŋkeke {0} s" + - "i wo va yi\x12kɔsiɖa me ŋkeke\x14kɔsiɖagbe si va yi\x10kɔsiɖa sia gbe" + - "\x16kɔsiɖagbe si gbɔ na\x0fdzoɖa si va yi\x0adzoɖa sia\x11dzoɖa si gbɔ n" + - "a\x0fblaɖa si va yi\x0ablaɖa sia\x11blaɖa si gbɔ na\x0ekuɖa si va yi\x09" + - "kuɖa sia\x10kuɖa si gbɔ na\x10yawoɖa si va yi\x0byawoɖa sia\x12yawoɖa si" + - " gbɔ na\x0efiɖa si va yi\x09fiɖa sia\x10fiɖa si gbɔ na\x11memleɖa si va " + - "yi\x0cmemleɖa sia\x13memleɖa si gbɔ na\x0aŋkekea me\x08gaƒoƒo\x12le gaƒo" + - "ƒo {0} me\x15le gaƒoƒo {0} wo me\x15gaƒoƒo {0} si va yi\x18gaƒoƒo {0} s" + - "i wo va yi\x0caɖabaƒoƒo\x16le aɖabaƒoƒo {0} me\x19le aɖabaƒoƒo {0} wo me" + - "\x19aɖabaƒoƒo {0} si va yi\x1caɖabaƒoƒo {0} si wo va yi\x06sekend\x04fif" + - "i\x10le sekend {0} me\x13le sekend {0} wo me\x13sekend {0} si va yi\x16s" + - "ekend {0} si wo va yi\x0enutomegaƒoƒo\x1eBritain dzomeŋɔli gaƒoƒome\x1fI" + - "relanɖ dzomeŋɔli gaƒoƒome\x0fEker gaƒoƒome\x16Eker gaƒoƒoɖoanyime\x1bEke" + - "r dzomeŋɔli gaƒoƒome\x18Titina Afrika gaƒoƒome\x1bƔedzeƒe Africa gaƒoƒom" + - "e\x19Anyiehe Africa gaƒoƒome\x1dƔetoɖoƒe Africa gaƒoƒome$Ɣetoɖoƒe Afrika" + - " gaƒoƒoɖoanyime&Ɣetoɖoƒe Africa ŋkekeme gaƒoƒome\x11Alaska gaƒoƒome\x18A" + - "laska gaƒoƒoɖoanyime\x1aAlaska ŋkekeme gaƒoƒome\x11Almati gaƒoƒome\x18Al" + - "mati gaƒoƒoɖoanyime\x1dAlmati dzomeŋɔli gaƒoƒome\x11Amazon gaƒoƒome\x18A" + - "mazon gaƒoƒoɖoanyime\x1dAmazon dzomeŋɔli gaƒoƒome\x19Titina America gaƒo" + - "ƒome Titina America gaƒoƒoɖoanyime\x22Titina America ŋkekeme gaƒoƒome" + - "\x1cƔedzeƒe America gaƒoƒome#Ɣedzeƒe America gaƒoƒoɖoanyime%Ɣedzeƒe Amer" + - "ica ŋkekeme gaƒoƒome#America Todzidukɔwo ƒe gaƒoƒome*America Todzidukɔwo" + - " ƒe gaƒoƒoɖoanyime+America Todzidukɔwo ƒe ŋkekme gaƒoƒome\x12Pacific gaƒ" + - "oƒome\x19Pacific gaƒoƒoɖoanyime\x1aPacific ŋkekme gaƒoƒome\x11Anadir gaƒ" + - "oƒome\x18Anadir gaƒoƒoɖoanyime\x1aAnadir ŋkekeme gaƒoƒome\x10Aktau gaƒoƒ" + - "ome\x17Aktau gaƒoƒoɖoanyime\x1cAktau dzomeŋɔli gaƒoƒome\x11Aktobe gaƒoƒo" + - "me\x18Aktobe gaƒoƒoɖoanyime\x12Akttobe gaƒoƒome\x11Arabia gaƒoƒome\x18Ar" + - "abia gaƒoƒoɖoanyime\x1aArabia ŋkekeme gaƒoƒome\x14Argentina gaƒoƒome\x1b" + - "Argentina gaƒoƒoɖoanyime Argentina dzomeŋɔli gaƒoƒome Ɣetoɖoƒe Argentina" + - " gaƒoƒome'Ɣetoɖoƒe Argentina gaƒoƒoɖoanyime,Ɣetoɖoƒe Argentina dzomeŋɔli" + - " gaƒoƒome\x12Armenia gaƒoƒome\x19Armenia gaƒoƒoɖoanyime\x1eArmenia dzome" + - "ŋɔli gaƒoƒome\x13Atlantic gaƒoƒome\x1aAtlantic gaƒoƒoɖoanyime\x1cAtlant" + - "ic ŋkekeme gaƒoƒome\x1bTitina Australia gaƒoƒome\x22Titina Australia gaƒ" + - "oƒoɖoanyime$Titina Australia ŋkekeme gaƒoƒome\x1fAustralia ɣetoɖofe gaƒo" + - "ƒome&Australia ɣetoɖofe gaƒoƒoɖoanyime(Australia ɣetoɖofe ŋkekeme gaƒoƒ" + - "ome\x1eƔedzeƒe Australia gaƒoƒome%Ɣedzeƒe Australia gaƒoƒoɖoanyime'Ɣedze" + - "ƒe Australia ŋkekeme gaƒoƒome Ɣetoɖoƒe Australia gaƒoƒome'Ɣetoɖoƒe Aust" + - "ralia gaƒoƒoɖoanyime)Ɣetoɖoƒe Australia ŋkekeme gaƒoƒome\x16Azerbaidzan " + - "gaƒoƒome\x1dAzerbaidzan gaƒoƒoɖoanyime\x22Azerbaidzan dzomeŋɔli gaƒoƒome" + - "\x11Azores gaƒoƒome\x18Azores gaƒoƒoɖoanyime\x1dAzores dzomeŋɔli gaƒoƒom" + - "e\x12Bolivia gaƒoƒome\x13Brasilia gaƒoƒome\x1aBrasilia gaƒoƒoɖoanyime" + - "\x1fBrasilia dzomeŋɔli gaƒoƒome\x14Kep Verde gaƒoƒome\x1bKep Verde gaƒoƒ" + - "oɖoanyime Kep Verde dzomeŋɔli gaƒoƒome\x11Tsile gaƒoƒo me\x17Tsile gaƒoƒ" + - "oɖoanyime\x1cTsile dzomeŋɔli gaƒoƒome\x10China gaƒoƒome\x17China gaƒoƒoɖ" + - "oanyime\x19China ŋkekeme gaƒoƒome\x15Tsoibalsan gaƒoƒome\x1cTsoibalsan g" + - "aƒoƒoɖoanyime!Tsoibalsan dzomeŋɔli gaƒoƒome\x13Kolombia gaƒoƒome\x1aKolo" + - "mbia gaƒoƒoɖoanyime\x1fKolombia dzomeŋɔli gaƒoƒome\x0fKuba gaƒoƒome\x16K" + - "uba gaƒoƒoɖoanyime\x18Kuba ŋkekeme gaƒoƒome%Easter Ƒudomekpodukɔ ƒe gaƒo" + - "ƒome,Easter Ƒudomekpodukɔ ƒe gaƒoƒoɖoanyime1Easter Ƒudomekpodukɔ ƒe dzo" + - "meŋɔli gaƒoƒome\x1eIkuedɔ dzomeŋɔli gaƒoƒome\x18Titina Europe gaƒoƒome" + - "\x1fTitina Europe gaƒoƒoɖoanyime!Titina Europe ŋkekeme gaƒoƒome\x1bƔedze" + - "ƒe Europe gaƒoƒome\x22Ɣedzeƒe Europe gaƒoƒoɖoanyime$Ɣedzeƒe Europe ŋkek" + - "eme gaƒoƒome\x1dƔetoɖoƒe Europe gaƒoƒome$Ɣetoɖoƒe Europe gaƒoƒoɖoanyime&" + - "Ɣetoɖoƒe Europe ŋkekeme gaƒoƒome)Fɔlklanɖ Ƒudomekpodukɔ ƒe gaƒoƒome0Fɔl" + - "klanɖ Ƒudomekpodukɔ ƒe gaƒoƒoɖoanyime5Fɔlklanɖ Ƒudomekpodukɔ ƒe dzomeŋɔl" + - "i gaƒoƒome\x19Frentsi Guiana gaƒoƒome\x14Galapagos gaƒoƒome\x13Dzɔdzia g" + - "aƒoƒome\x1aDzɔdzia gaƒoƒoɖoanyime\x1fDzɔdzia dzomeŋɔli gaƒoƒome\x14Green" + - "wich gaƒoƒome\x1eƔedzeƒe Grinlanɖ gaƒoƒome%Ɣedzeƒe Grinlanɖ gaƒoƒoɖoanyi" + - "me*Ɣedzeƒe Grinlanɖ dzomeŋɔli gaƒoƒome Ɣetoɖoƒe Grinlanɖ gaƒoƒome'Ɣetoɖo" + - "ƒe Grinlanɖ gaƒoƒoɖoanyime,Ɣetoɖoƒe Grinlanɖ dzomeŋɔli gaƒoƒome\x0fGulf" + - " gaƒoƒome\x11Gayana gaƒoƒome\x19Hawaii-Aleutia gaƒoƒome Hawaii-Aleutia g" + - "aƒoƒoɖoanyime\x22Hawaii-Aleutia ŋkekeme gaƒoƒome\x16Hɔng Kɔng gaƒoƒome" + - "\x1eHɔng Kɔng gaƒoƒoɖoanyi me\x22Hɔng Kɔng dzomeŋɔli gaƒoƒome\x10Hoved g" + - "aƒoƒome\x17Hoved gaƒoƒoɖoanyime\x1cHoved dzomeŋɔli gaƒoƒome\x11Irkusk ga" + - "ƒoƒome\x18Irkusk gaƒoƒoɖoanyime\x1dIrkusk dzomeŋɔli gaƒoƒome\x11Israel " + - "gaƒoƒome\x18Israel gaƒoƒoɖoanyime\x1aIsrael ŋkekeme gaƒoƒome\x10Japan ga" + - "ƒoƒome\x16Japan gaƒoƒoɖanyime\x19Japan ŋkekeme gaƒoƒome#Petropavlovsk-K" + - "amtsatski gaƒoƒome*Petropavlovsk-Kamtsatski gaƒoƒoɖoanyime,Petropavlovsk" + - "-Kamtsatski ŋkekeme gaƒoƒome\x1eƔedzeƒe Kazakstan gaƒoƒome Ɣetoɖoƒe Kaza" + - "kstan gaƒoƒome\x10Korea gaƒoƒome\x17Korea gaƒoƒoɖoanyime\x19Korea ŋkekem" + - "e gaƒoƒome\x16Krasnoyarsk gaƒoƒome\x1dKrasnoyarsk gaƒoƒoɖoanyime\x22Kras" + - "noyarsk dzomeŋɔli gaƒoƒome\x14Kirgistan gaƒoƒome\x10Makau gaƒoƒome\x17Ma" + - "kau gaƒoƒoɖoanyime\x19Makau ŋkekeme gaƒoƒome\x12Magadan gaƒoƒome\x19Maga" + - "dan gaƒoƒoɖoanyime\x1eMagadan dzomeŋɔli gaƒoƒome\x14Mɔritius gaƒoƒome" + - "\x1bMɔritius gaƒoƒoɖoanyime Mɔritius dzomeŋɔli gaƒoƒome\x15Ulan Batɔ gaƒ" + - "oƒome\x1cUlan Batɔ gaƒoƒoɖoanyime!Ulan Batɔ dzomeŋɔli gaƒoƒome\x11Moscow" + - " gaƒoƒome\x18Moscow gaƒoƒoɖoanyime\x1aMoscow ŋkekeme gaƒoƒome\x19Niufaun" + - "ɖlanɖ gaƒoƒome Niufaunɖlanɖ gaƒoƒoɖoanyime\x22Niufaunɖlanɖ ŋkekeme gaƒo" + - "ƒome\x1eFernando de Noronha gaƒoƒome%Fernando de Noronha gaƒoƒoɖoanyime" + - "*Fernando de Noronha dzomeŋɔli gaƒoƒome\x16Novosibirsk gaƒoƒome\x1dNovos" + - "ibirsk gaƒoƒoɖoanyime\x22Novosibirsk dzomeŋɔli gaƒoƒome\x0fOmsk gaƒoƒome" + - "\x16Omsk gaƒoƒoɖoanyime\x1bOmsk dzomeŋɔli gaƒoƒome\x13Paraguai gaƒoƒome" + - "\x1aParaguai gaƒoƒoɖoanyime\x1fParaguai dzomeŋɔli gaƒoƒome\x0fPeru gaƒoƒ" + - "ome\x16Peru gaƒoƒoɖoanyime\x1bPeru dzomeŋɔli gaƒoƒome%Saint Pierre kple " + - "Mikuelon gaƒoƒome,Saint Pierre kple Mikuelon gaƒoƒoɖoanyime.Saint Pierre" + - " kple Mikuelon ŋkekeme gaƒoƒome\x15Kizilɔrda gaƒoƒome\x1cKizilɔrda gaƒoƒ" + - "oɖoanyime!Kizilɔrda dzomeŋɔli gaƒoƒome\x12Reunion gaƒoƒome\x12Sahalin ga" + - "ƒoƒome\x1aSakhalin gaƒoƒoɖoanyime\x1eSahalin dzomeŋɔli gaƒoƒome\x11Sama" + - "ra gaƒoƒome\x18Samara gaƒoƒoɖoanyime\x1aSamara ŋkekeme gaƒoƒome\x13Sɛtse" + - "ls gaƒoƒome\x13Suriname gaƒoƒome\x11Taipei gaƒoƒome\x18Taipei gaƒoƒoɖoan" + - "yime\x1aTaipei ŋkekeme gaƒoƒome\x16Tadzikistan gaƒoƒome\x17Tɛkmenistan g" + - "aƒoƒome\x1eTɛkmenistan gaƒoƒoɖoanyime#Tɛkmenistan dzomeŋɔli gaƒoƒome\x12" + - "Uruguai gaƒoƒome\x19Uruguai gaƒoƒoɖoanyime\x1eUruguai dzomeŋɔli gaƒoƒome" + - "\x15Uzbekistan gaƒoƒome\x1cUzbekistan gaƒoƒoɖoanyime!Uzbekistan dzomeŋɔl" + - "i gaƒoƒome\x14Venezuela gaƒoƒome\x16Vladivostok gaƒoƒome\x1dVladivostok " + - "gaƒoƒoɖoanyime\x22Vladivostok dzomeŋɔli gaƒoƒome\x13Vogograd gaƒoƒome" + - "\x1aVogograd gaƒoƒoɖoanyime\x1fVogograd dzomeŋɔli gaƒoƒome\x12Yakutsk ga" + - "ƒoƒome\x19Yakutsk gaƒoƒoɖoanyime\x1eYakutsk dzomeŋɔli gaƒoƒome\x19Yekat" + - "eringburg gaƒoƒome Yekateringburg gaƒoƒoɖoanyime$Yekaterinburg dzomeŋɔli" + - " gaƒoƒome\x03Kel\x04Ktũ\x03Ktn\x03Tha\x03Moo\x03Nya\x03Knd\x04Ĩku\x04Ĩkm" + - "\x04Ĩkl\x0aNjumatatũ\x09Njumatana\x0aNjumamothi\x08Muramuko\x05Wairi\x07" + - "Wethatu\x04Wena\x06Wetano\x08Jumamosi\x02NK\x05Narua\x06Rũjũ" - -var bucket26 string = "" + // Size: 18742 bytes - "\x09{1} - {0}\x06Ιαν\x06Φεβ\x06Μαρ\x06Απρ\x06Μαΐ\x08Ιουν\x08Ιουλ\x06Αυγ" + - "\x06Σεπ\x06Οκτ\x06Νοε\x06Δεκ\x02Ι\x02Φ\x02Μ\x02Α\x02Σ\x02Ο\x02Ν\x02Δ\x14" + - "Ιανουαρίου\x16Φεβρουαρίου\x0eΜαρτίου\x10Απριλίου\x0aΜαΐου\x0eΙουνίου" + - "\x0eΙουλίου\x12Αυγούστου\x16Σεπτεμβρίου\x12Οκτωβρίου\x12Νοεμβρίου\x14Δεκ" + - "εμβρίου\x06Μάρ\x06Μάι\x08Ιούν\x08Ιούλ\x06Αύγ\x06Νοέ\x14Ιανουάριος\x16Φε" + - "βρουάριος\x0eΜάρτιος\x10Απρίλιος\x0aΜάιος\x0eΙούνιος\x0eΙούλιος\x12Αύγο" + - "υστος\x16Σεπτέμβριος\x12Οκτώβριος\x12Νοέμβριος\x14Δεκέμβριος\x06Κυρ\x06" + - "Δευ\x06Τρί\x06Τετ\x06Πέμ\x06Παρ\x06Σάβ\x02Κ\x02Τ\x02Π\x04Κυ\x04Δε\x04Τρ" + - "\x04Τε\x04Πέ\x04Πα\x04Σά\x0eΚυριακή\x0eΔευτέρα\x0aΤρίτη\x0eΤετάρτη\x0cΠέ" + - "μπτη\x12Παρασκευή\x0eΣάββατο\x03Τ1\x03Τ2\x03Τ3\x03Τ4\x121ο τρίμηνο\x122" + - "ο τρίμηνο\x123ο τρίμηνο\x124ο τρίμηνο\x06π.μ.\x06μ.μ.\x08πρωί\x0bμεσημ." + - "\x09απόγ.\x0aβράδυ\x04πμ\x04μμ\x10μεσημέρι\x10απόγευμα\x15προ Χριστού6πρ" + - "ιν από την Κοινή Χρονολογία\x17μετά Χριστόν\x1fΚοινή Χρονολογία\x06π.Χ." + - "\x09π.Κ.Χ.\x06μ.Χ.\x04ΚΧ\x0fΠριν R.O.C.\x06R.O.C.\x10περίοδος\x08έτος" + - "\x0aπέρσι\x0aφέτος\x17επόμενο έτος\x11σε {0} έτος\x0fσε {0} έτη\x1cπριν " + - "από {0} έτος\x1aπριν από {0} έτη\x05έτ.\x15{0} έτος πριν\x13{0} έτη πρι" + - "ν\x0eτρίμηνο%προηγούμενο τρίμηνο\x1bτρέχον τρίμηνο\x1dεπόμενο τρίμηνο" + - "\x17σε {0} τρίμηνο\x17σε {0} τρίμηνα\x22πριν από {0} τρίμηνο\x22πριν από" + - " {0} τρίμηνα\x09τρίμ.\x15προηγ. τρίμ.\x16τρέχον τρίμ.\x13επόμ. τρίμ.\x12" + - "σε {0} τρίμ.\x1dπριν από {0} τρίμ.\x16{0} τρίμ. πριν\x0aμήνας#προηγούμε" + - "νος μήνας\x17τρέχων μήνας\x1bεπόμενος μήνας\x11σε {0} μήνα\x13σε {0} μή" + - "νες\x1cπριν από {0} μήνα\x1eπριν από {0} μήνες\x07μήν.\x0cσε {0} μ.\x10" + - "{0} μ. πριν\x10εβδομάδα'προηγούμενη εβδομάδα\x22αυτήν την εβδομάδα\x1fεπ" + - "όμενη εβδομάδα\x19σε {0} εβδομάδα\x1bσε {0} εβδομάδες$πριν από {0} εβδο" + - "μάδα&πριν από {0} εβδομάδες\x1bτην εβδομάδα {0}\x07εβδ.\x10σε {0} εβδ." + - "\x1bπριν από {0} εβδ.\x14{0} εβδ. πριν\x0aημέρα\x0eπροχθές\x08χθες\x0cσή" + - "μερα\x0aαύριο\x10μεθαύριο\x13σε {0} ημέρα\x15σε {0} ημέρες\x1eπριν από " + - "{0} ημέρα πριν από {0} ημέρες\x0eσε {0} ημ.\x12{0} ημ. πριν\x14καθημεριν" + - "ή%προηγούμενη Κυριακή αυτήν την Κυριακή\x1dεπόμενη Κυριακή\x17σε {0} Κυ" + - "ριακή\x19σε {0} Κυριακές\x22πριν από {0} Κυριακή$πριν από {0} Κυριακές" + - "\x13προηγ. Κυρ.\x19αυτήν την Κυρ.\x11επόμ. Κυρ.\x10σε {0} Κυρ.\x1bπριν α" + - "πό {0} Κυρ.\x10προηγ. Κυ\x16αυτήν την Κυ\x0eεπόμ. Κυ\x0dσε {0} Κυ\x11{0" + - "} Κυ πριν%προηγούμενη Δευτέρα\x1eαυτήν τη Δευτέρα\x1dεπόμενη Δευτέρα\x17" + - "σε {0} Δευτέρα\x19σε {0} Δευτέρες\x22πριν από {0} Δευτέρα$πριν από {0} " + - "Δευτέρες\x15προηγ. Δευτ.\x19αυτήν τη Δευτ.\x13επόμ. Δευτ.\x12σε {0} Δευ" + - "τ.\x1dπριν από {0} Δευτ.\x10προηγ. Δε\x14αυτήν τη Δε\x0eεπόμ. Δε\x0dσε " + - "{0} Δε\x11{0} Δε πριν!προηγούμενη Τρίτη\x1cαυτήν την Τρίτη\x19επόμενη Τρ" + - "ίτη\x13σε {0} Τρίτη\x15σε {0} Τρίτες\x1eπριν από {0} Τρίτη πριν από {0}" + - " Τρίτες\x11προηγ. Τρ.\x17αυτήν την Τρ.\x0fεπόμ. Τρ.\x0eσε {0} Τρ.\x19πρι" + - "ν από {0} Τρ.\x10προηγ. Τρ\x16αυτήν την Τρ\x0eεπόμ. Τρ\x0dσε {0} Τρ\x11" + - "{0} Τρ πριν%προηγούμενη Τετάρτη αυτήν την Τετάρτη\x1dεπόμενη Τετάρτη\x17" + - "σε {0} Τετάρτη\x19σε {0} Τετάρτες\x22πριν από {0} Τετάρτη$πριν από {0} " + - "Τετάρτες\x13προηγ. Τετ.\x19αυτήν την Τετ.\x11επόμ. Τετ.\x10σε {0} Τετ." + - "\x1bπριν από {0} Τετ.\x10προηγ. Τε\x16αυτήν την Τε\x0eεπόμ. Τε\x0dσε {0}" + - " Τε\x11{0} Τε πριν#προηγούμενη Πέμπτη\x1eαυτήν την Πέμπτη\x1bεπόμενη Πέμ" + - "πτη\x15σε {0} Πέμπτη\x17σε {0} Πέμπτες πριν από {0} Πέμπτη\x22πριν από " + - "{0} Πέμπτες\x13προηγ. Πέμ.\x19αυτήν την Πέμ.\x11επόμ. Πέμ.\x10σε {0} Πέμ" + - ".\x1bπριν από {0} Πέμ.\x10προηγ. Πέ\x16αυτήν την Πέ\x0eεπόμ. Πέ\x0dσε {0" + - "} Πέ\x11{0} Πέ πριν)προηγούμενη Παρασκευή$αυτήν την Παρασκευή!επόμενη Πα" + - "ρασκευή\x1bσε {0} Παρασκευή\x1dσε {0} Παρασκευές&πριν από {0} Παρασκευή" + - "(πριν από {0} Παρασκευές\x13προηγ. Παρ.\x19αυτήν την Παρ.\x11επόμ. Παρ." + - "\x10σε {0} Παρ.\x1bπριν από {0} Παρ.\x10προηγ. Πα\x16αυτήν την Πα\x0eεπό" + - "μ. Πα\x0dσε {0} Πα\x11{0} Πα πριν%προηγούμενο Σάββατο\x1cαυτό το Σάββατ" + - "ο\x1dεπόμενο Σάββατο\x17σε {0} Σάββατο\x17σε {0} Σάββατα\x1b{0} Σάββατο" + - " πριν\x1b{0} Σάββατα πριν\x13προηγ. Σάβ.\x15αυτό το Σάβ.\x11επόμ. Σάβ." + - "\x10σε {0} Σάβ.\x1bπριν από {0} Σάβ.\x10προηγ. Σά\x12αυτό το Σά\x0eεπόμ." + - " Σά\x0dσε {0} Σά\x11{0} Σά πριν\x0dπ.μ./μ.μ.\x06ώρα\x18αυτήν την ώρα\x0f" + - "σε {0} ώρα\x11σε {0} ώρες\x1aπριν από {0} ώρα\x1cπριν από {0} ώρες\x05ώ" + - "ρ.\x0eσε {0} ώρ.\x19πριν από {0} ώρ.\x02ώ\x0cσε {0} ώ.\x10{0} ώ. πριν" + - "\x0aλεπτό\x18αυτό το λεπτό\x13σε {0} λεπτό\x13σε {0} λεπτά\x1eπριν από {" + - "0} λεπτό\x1eπριν από {0} λεπτά\x07λεπ.\x10σε {0} λεπ.\x1bπριν από {0} λε" + - "π.\x02λ\x0cσε {0} λ.\x10{0} λ. πριν\x18δευτερόλεπτο\x08τώρα!σε {0} δευτ" + - "ερόλεπτο!σε {0} δευτερόλεπτα,πριν από {0} δευτερόλεπτο,πριν από {0} δευ" + - "τερόλεπτα\x09δευτ.\x12σε {0} δευτ.\x1dπριν από {0} δευτ.\x02δ\x0cσε {0}" + - " δ.\x10{0} δ. πριν\x11ζώνη ώρας\x0cΏρα ({0})\x19Θερινή ώρα ({0})\x1fΧειμ" + - "ερινή ώρα ({0})2Συντονισμένη Παγκόσμια Ώρα&Θερινή ώρα Βρετανίας&Θερινή " + - "ώρα Ιρλανδίας\x1bΏρα Αφγανιστάν(Ώρα Κεντρικής Αφρικής*Ώρα Ανατολικής Αφ" + - "ρικής5Χειμερινή ώρα Νότιας Αφρικής$Ώρα Δυτικής Αφρικής7Χειμερινή ώρα Δυ" + - "τικής Αφρικής1Θερινή ώρα Δυτικής Αφρικής\x15Ώρα Αλάσκας(Χειμερινή ώρα Α" + - "λάσκας\x22Θερινή ώρα Αλάσκας\x19Ώρα Αμαζονίου,Χειμερινή ώρα Αμαζονίου&Θ" + - "ερινή ώρα Αμαζονίου7Κεντρική ώρα Βόρειας ΑμερικήςJΚεντρική χειμερινή ώρ" + - "α Βόρειας ΑμερικήςDΚεντρική θερινή ώρα Βόρειας Αμερικής9Ανατολική ώρα Β" + - "όρειας ΑμερικήςLΑνατολική χειμερινή ώρα Βόρειας ΑμερικήςFΑνατολική θερι" + - "νή ώρα Βόρειας Αμερικής3Ορεινή ώρα Βόρειας ΑμερικήςFΟρεινή χειμερινή ώρ" + - "α Βόρειας Αμερικής@Ορεινή θερινή ώρα Βόρειας Αμερικής&Ώρα Βόρειας Αμερι" + - "κής9Χειμερινή ώρα Βόρειας Αμερικής3Θερινή ώρα Βόρειας Αμερικής\x15Ώρα Α" + - "ναντίρ(Χειμερινή ώρα Αναντίρ\x22Θερινή ώρα Αναντίρ\x0fΏρα Απία\x22Χειμε" + - "ρινή ώρα Απία\x1cΘερινή ώρα Απία\x15Αραβική ώρα(Αραβική χειμερινή ώρα" + - "\x22Αραβική θερινή ώρα\x1bΏρα Αργεντινής.Χειμερινή ώρα Αργεντινής(Θερινή" + - " ώρα Αργεντινής*Ώρα Δυτικής Αργεντινής=Χειμερινή ώρα Δυτικής Αργεντινής7" + - "Θερινή ώρα Δυτικής Αργεντινής\x17Ώρα Αρμενίας*Χειμερινή ώρα Αρμενίας$Θε" + - "ρινή ώρα Αρμενίας\x1bΏρα Ατλαντικού.Χειμερινή ώρα Ατλαντικού(Θερινή ώρα" + - " Ατλαντικού.Ώρα Κεντρικής ΑυστραλίαςAΧειμερινή ώρα Κεντρικής Αυστραλίας;" + - "Θερινή ώρα Κεντρικής Αυστραλίας6Ώρα Κεντροδυτικής ΑυστραλίαςIΧειμερινή " + - "ώρα Κεντροδυτικής ΑυστραλίαςCΘερινή ώρα Κεντροδυτικής Αυστραλίας0Ώρα Αν" + - "ατολικής ΑυστραλίαςCΧειμερινή ώρα Ανατολικής Αυστραλίας=Θερινή ώρα Ανατ" + - "ολικής Αυστραλίας*Ώρα Δυτικής Αυστραλίας=Χειμερινή ώρα Δυτικής Αυστραλί" + - "ας7Θερινή ώρα Δυτικής Αυστραλίας\x1fΏρα Αζερμπαϊτζάν2Χειμερινή ώρα Αζερ" + - "μπαϊτζάν,Θερινή ώρα Αζερμπαϊτζάν\x13Ώρα Αζορών&Χειμερινή ώρα Αζορών Θερ" + - "ινή ώρα Αζορών\x1fΏρα Μπανγκλαντές2Χειμερινή ώρα Μπανγκλαντές,Θερινή ώρ" + - "α Μπανγκλαντές\x15Ώρα Μπουτάν\x17Ώρα Βολιβίας\x19Ώρα Μπραζίλια,Χειμεριν" + - "ή ώρα Μπραζίλια&Θερινή ώρα Μπραζίλια.Ώρα Μπρουνέι Νταρουσαλάμ,Ώρα Πράσι" + - "νου Ακρωτηρίου?Χειμερινή ώρα Πράσινου Ακρωτηρίου9Θερινή ώρα Πράσινου Ακ" + - "ρωτηρίου\x15Ώρα Τσαμόρο\x13Ώρα Τσάθαμ&Χειμερινή ώρα Τσάθαμ Θερινή ώρα Τ" + - "σάθαμ\x11Ώρα Χιλής$Χειμερινή ώρα Χιλής\x1eΘερινή ώρα Χιλής\x11Ώρα Κίνας" + - "$Χειμερινή ώρα Κίνας\x1eΘερινή ώρα Κίνας\x1dΏρα Τσοϊμπαλσάν0Χειμερινή ώρ" + - "α Τσοϊμπαλσάν*Θερινή ώρα Τσοϊμπαλσάν.Ώρα Νησιού Χριστουγέννων\x1eΏρα Νη" + - "σιών Κόκος\x19Ώρα Κολομβίας,Χειμερινή ώρα Κολομβίας&Θερινή ώρα Κολομβία" + - "ς\x1cΏρα Νησιών Κουκ/Χειμερινή ώρα Νησιών Κουκ)Θερινή ώρα Νησιών Κουκ" + - "\x13Ώρα Κούβας&Χειμερινή ώρα Κούβας Θερινή ώρα Κούβας\x15Ώρα Ντέιβις$Ώρα" + - " Ντιμόντ Ντερβίλ&Ώρα Ανατολικού Τιμόρ\x1eΏρα Νησιού Πάσχα1Χειμερινή ώρα " + - "Νησιού Πάσχα+Θερινή ώρα Νησιού Πάσχα\x17Ώρα Εκουαδόρ(Ώρα Κεντρικής Ευρώ" + - "πης;Χειμερινή ώρα Κεντρικής Ευρώπης5Θερινή ώρα Κεντρικής Ευρώπης*Ώρα Αν" + - "ατολικής Ευρώπης=Χειμερινή ώρα Ανατολικής Ευρώπης7Θερινή ώρα Ανατολικής" + - " Ευρώπης=Ώρα περαιτέρω Ανατολικής Ευρώπης$Ώρα Δυτικής Ευρώπης7Χειμερινή " + - "ώρα Δυτικής Ευρώπης1Θερινή ώρα Δυτικής Ευρώπης\x22Ώρα Νησιών Φώκλαντ5Χε" + - "ιμερινή ώρα Νησιών Φώκλαντ/Θερινή ώρα Νησιών Φώκλαντ\x11Ώρα Φίτζι$Χειμε" + - "ρινή ώρα Φίτζι\x1eΘερινή ώρα Φίτζι(Ώρα Γαλλικής Γουιάνας@Ώρα Γαλλικού Ν" + - "ότου και Ανταρκτικής\x1dΏρα Γκαλάπαγκος\x17Ώρα Γκάμπιερ\x17Ώρα Γεωργίας" + - "*Χειμερινή ώρα Γεωργίας$Θερινή ώρα Γεωργίας&Ώρα Νησιών Γκίλμπερτ$Μέση ώρ" + - "α Γκρίνουιτς2Ώρα Ανατολικής ΓροιλανδίαςEΧειμερινή ώρα Ανατολικής Γροιλα" + - "νδίας?Θερινή ώρα Ανατολικής Γροιλανδίας,Ώρα Δυτικής Γροιλανδίας?Χειμερι" + - "νή ώρα Δυτικής Γροιλανδίας9Θερινή ώρα Δυτικής Γροιλανδίας\x13Ώρα Γκουάμ" + - "\x13Ώρα Κόλπου\x17Ώρα Γουιάνας1Ώρα Χαβάης-Αλεούτιων νήσωνDΧειμερινή ώρα " + - "Χαβάης-Αλεούτιων νήσων>Θερινή ώρα Χαβάης-Αλεούτιων νήσων\x1cΏρα Χονγκ Κ" + - "ονγκ/Χειμερινή ώρα Χονγκ Κονγκ)Θερινή ώρα Χονγκ Κονγκ\x11Ώρα Χοβντ$Χειμ" + - "ερινή ώρα Χοβντ\x1eΘερινή ώρα Χοβντ\x13Ώρα Ινδίας$Ώρα Ινδικού Ωκεανού" + - "\x19Ώρα Ινδοκίνας.Ώρα Κεντρικής Ινδονησίας0Ώρα Ανατολικής Ινδονησίας*Ώρα" + - " Δυτικής Ινδονησίας\x0fΏρα Ιράν\x22Χειμερινή ώρα Ιράν\x1cΘερινή ώρα Ιράν" + - "\x17Ώρα Ιρκούτσκ*Χειμερινή ώρα Ιρκούτσκ$Θερινή ώρα Ιρκούτσκ\x13Ώρα Ισραή" + - "λ&Χειμερινή ώρα Ισραήλ Θερινή ώρα Ισραήλ\x17Ώρα Ιαπωνίας*Χειμερινή ώρα " + - "Ιαπωνίας$Θερινή ώρα Ιαπωνίας\x19Ώρα ΚαμτσάτκαIΧειμερινή ώρα Πετροπαβλόβ" + - "σκ-ΚαμτσάτσκιCΘερινή ώρα Πετροπαβλόβσκ-Καμτσάτσκι.Ώρα Ανατολικού Καζακσ" + - "τάν(Ώρα Δυτικού Καζακστάν\x13Ώρα Κορέας&Χειμερινή ώρα Κορέας Θερινή ώρα" + - " Κορέας\x15Ώρα Κοσράης\x1fΏρα Κρασνόγιαρσκ2Χειμερινή ώρα Κρασνόγιαρσκ,Θε" + - "ρινή ώρα Κρασνόγιαρσκ\x19Ώρα Κιργιστάν\x1cΏρα Νησιών Λάιν\x1aΏρα Λορντ " + - "Χάου-Χειμερινή ώρα Λορντ Χάου'Θερινή ώρα Λορντ Χάου\x11Ώρα Μακάο$Χειμερ" + - "ινή ώρα Μακάο\x1eΘερινή ώρα Μακάο$Ώρα Νησιού Μακουάρι\x19Ώρα Μάγκανταν," + - "Χειμερινή ώρα Μάγκανταν&Θερινή ώρα Μάγκανταν\x19Ώρα Μαλαισίας\x17Ώρα Μα" + - "λδίβων\x17Ώρα Μαρκέσας Ώρα Νησιών Μάρσαλ\x19Ώρα Μαυρίκιου,Χειμερινή ώρα" + - " Μαυρίκιου&Θερινή ώρα Μαυρίκιου\x11Ώρα Μόσον0Ώρα Βορειοδυτικού ΜεξικούCΧ" + - "ειμερινή ώρα Βορειοδυτικού Μεξικού=Θερινή ώρα Βορειοδυτικού Μεξικού(Ώρα" + - " Ειρηνικού Μεξικού;Χειμερινή ώρα Ειρηνικού Μεξικού5Θερινή ώρα Ειρηνικού " + - "Μεξικού\x1eΏρα Ουλάν Μπατόρ1Χειμερινή ώρα Ουλάν Μπατόρ+Θερινή ώρα Ουλάν" + - " Μπατόρ\x13Ώρα Μόσχας&Χειμερινή ώρα Μόσχας Θερινή ώρα Μόσχας\x15Ώρα Μιαν" + - "μάρ\x15Ώρα Ναούρου\x11Ώρα Νεπάλ$Ώρα Νέας Καληδονίας7Χειμερινή ώρα Νέας " + - "Καληδονίας1Θερινή ώρα Νέας Καληδονίας\x22Ώρα Νέας Ζηλανδίας5Χειμερινή ώ" + - "ρα Νέας Ζηλανδίας/Θερινή ώρα Νέας Ζηλανδίας\x16Ώρα Νέας Γης)Χειμερινή ώ" + - "ρα Νέας Γης#Θερινή ώρα Νέας Γης\x11Ώρα Νιούε\x22Ώρα Νησιών Νόρφολκ/Ώρα " + - "Φερνάρντο ντε ΝορόνιαBΧειμερινή ώρα Φερνάρντο ντε Νορόνια<Θερινή ώρα Φε" + - "ρνάρντο ντε Νορόνια3Ώρα Νησιών Βόρειες Μαριάνες\x1fΏρα Νοβοσιμπίρσκ2Χει" + - "μερινή ώρα Νοβοσιμπίρσκ,Θερινή ώρα Νοβοσιμπίρσκ\x0fΏρα Ομσκ\x22Χειμεριν" + - "ή ώρα Ομσκ\x1cΘερινή ώρα Ομσκ\x17Ώρα Πακιστάν*Χειμερινή ώρα Πακιστάν$Θε" + - "ρινή ώρα Πακιστάν\x13Ώρα Παλάου)Ώρα Παπουά Νέα Γουινέα\x1bΏρα Παραγουάη" + - "ς.Χειμερινή ώρα Παραγουάης(Θερινή ώρα Παραγουάης\x11Ώρα Περού$Χειμερινή" + - " ώρα Περού\x1eΘερινή ώρα Περού\x1bΏρα Φιλιππινών.Χειμερινή ώρα Φιλιππινώ" + - "ν(Θερινή ώρα Φιλιππινών\x1eΏρα Νησιών Φίνιξ0Ώρα Σαιντ Πιερ και ΜικελόνC" + - "Χειμερινή ώρα Σαιντ Πιερ και Μικελόν=Θερινή ώρα Σαιντ Πιερ και Μικελόν" + - "\x15Ώρα Πίτκερν\x13Ώρα Πονάπε\x1bΏρα Πιονγιάνγκ\x15Ώρα Ρεϊνιόν\x13Ώρα Ρο" + - "θέρα\x19Ώρα Σαχαλίνης,Χειμερινή ώρα Σαχαλίνης&Θερινή ώρα Σαχαλίνης\x15Ώ" + - "ρα Σάμαρας(Χειμερινή ώρα Σάμαρας\x22Θερινή ώρα Σαμάρας\x11Ώρα Σαμόα$Χει" + - "μερινή ώρα Σαμόα\x1eΘερινή ώρα Σαμόα\x19Ώρα Σεϋχελλών\x1dΏρα Σιγκαπούρη" + - "ς&Ώρα Νησιών Σολομώντα$Ώρα Νότιας Γεωργίας\x17Ώρα Σουρινάμ\x11Ώρα Σίοβα" + - "\x11Ώρα Αϊτής\x13Ώρα Ταϊπέι&Χειμερινή ώρα Ταϊπέι Θερινή ώρα Ταϊπέι\x1dΏρ" + - "α Τατζικιστάν\x17Ώρα Τοκελάου\x13Ώρα Τόνγκα&Χειμερινή ώρα Τόνγκα Θερινή" + - " ώρα Τόνγκα\x11Ώρα Τσουκ!Ώρα Τουρκμενιστάν4Χειμερινή ώρα Τουρκμενιστάν.Θ" + - "ερινή ώρα Τουρκμενιστάν\x17Ώρα Τουβαλού\x1dΏρα Ουρουγουάης0Χειμερινή ώρ" + - "α Ουρουγουάης*Θερινή ώρα Ουρουγουάης\x1fΏρα Ουζμπεκιστάν2Χειμερινή ώρα " + - "Ουζμπεκιστάν,Θερινή ώρα Ουζμπεκιστάν\x19Ώρα Βανουάτου,Χειμερινή ώρα Βαν" + - "ουάτου&Θερινή ώρα Βανουάτου\x1dΏρα Βενεζουέλας\x1dΏρα Βλαδιβοστόκ0Χειμε" + - "ρινή ώρα Βλαδιβοστόκ*Θερινή ώρα Βλαδιβοστόκ\x1fΏρα Βόλγκογκραντ2Χειμερι" + - "νή ώρα Βόλγκογκραντ,Θερινή ώρα Βόλγκογκραντ\x13Ώρα Βόστοκ Ώρα Νησιού Γο" + - "υέικ+Ώρα Ουόλις και Φουτούνα\x19Ώρα Γιακούτσκ,Χειμερινή ώρα Γιακούτσκ&Θ" + - "ερινή ώρα Γιακούτσκ'Ώρα Αικατερίνμπουργκ:Χειμερινή ώρα Αικατερίνμπουργκ" + - "4Θερινή ώρα Αικατερίνμπουργκ" - -var bucket27 string = "" + // Size: 10257 bytes - "\x03Mo1\x03Mo2\x03Mo3\x03Mo4\x03Mo5\x03Mo6\x03Mo7\x03Mo8\x03Mo9\x04Mo10" + - "\x04Mo11\x04Mo12\x0bFirst Month\x0cSecond Month\x0bThird Month\x0cFourth" + - " Month\x0bFifth Month\x0bSixth Month\x0dSeventh Month\x0cEighth Month" + - "\x0bNinth Month\x0bTenth Month\x0eEleventh Month\x0dTwelfth Month\x03Rat" + - "\x02Ox\x05Tiger\x06Rabbit\x06Dragon\x05Snake\x05Horse\x04Goat\x06Monkey" + - "\x07Rooster\x03Dog\x03Pig\x12EEEE, MMMM d, r(U)\x0cMMMM d, r(U)\x08MMM d" + - ", r\x05M/d/r\x0c{1} 'at' {0}\x07January\x08February\x05March\x05April" + - "\x03May\x04June\x04July\x06August\x09September\x07October\x08November" + - "\x08December\x06Sunday\x06Monday\x07Tuesday\x09Wednesday\x08Thursday\x06" + - "Friday\x08Saturday\x0b1st quarter\x0b2nd quarter\x0b3rd quarter\x0b4th q" + - "uarter\x08midnight\x04noon\x0ein the morning\x10in the afternoon\x0ein t" + - "he evening\x08at night\x07morning\x09afternoon\x07evening\x05night\x0dBe" + - "fore Christ\x11Before Common Era\x0bAnno Domini\x0aCommon Era\x04year" + - "\x0bin {0} year\x0cin {0} years\x0c{0} year ago\x0d{0} years ago\x03yr." + - "\x08last yr.\x08this yr.\x08next yr.\x0ain {0} yr.\x0b{0} yr. ago\x07qua" + - "rter\x0ein {0} quarter\x0fin {0} quarters\x0f{0} quarter ago\x10{0} quar" + - "ters ago\x04qtr.\x09last qtr.\x09this qtr.\x09next qtr.\x0bin {0} qtr." + - "\x0cin {0} qtrs.\x0c{0} qtr. ago\x0d{0} qtrs. ago\x05month\x0cin {0} mon" + - "th\x0din {0} months\x0d{0} month ago\x0e{0} months ago\x03mo.\x08last mo" + - ".\x08this mo.\x08next mo.\x0ain {0} mo.\x0b{0} mo. ago\x0bin {0} week" + - "\x0cin {0} weeks\x0c{0} week ago\x0d{0} weeks ago\x08last wk.\x08this wk" + - ".\x08next wk.\x0ain {0} wk.\x0b{0} wk. ago\x0dweek of month\x0awk. of mo" + - ".\x03day\x0ain {0} day\x0bin {0} days\x0b{0} day ago\x0c{0} days ago\x0b" + - "day of year\x0aday of yr.\x0fday of the week\x0aday of wk.\x14weekday of" + - " the month\x0dwkday. of mo.\x0din {0} Sunday\x0ein {0} Sundays\x0e{0} Su" + - "nday ago\x0f{0} Sundays ago\x09last Sun.\x09this Sun.\x09next Sun.\x0bin" + - " {0} Sun.\x0c{0} Sun. ago\x07last Su\x07this Su\x07next Su\x09in {0} Su" + - "\x0a{0} Su ago\x0din {0} Monday\x0ein {0} Mondays\x0e{0} Monday ago\x0f{" + - "0} Mondays ago\x09last Mon.\x09this Mon.\x09next Mon.\x0bin {0} Mon.\x0c" + - "{0} Mon. ago\x06last M\x06this M\x06next M\x08in {0} M\x09{0} M ago\x0ei" + - "n {0} Tuesday\x0fin {0} Tuesdays\x0f{0} Tuesday ago\x10{0} Tuesdays ago" + - "\x09last Tue.\x09this Tue.\x09next Tue.\x0bin {0} Tue.\x0c{0} Tue. ago" + - "\x07last Tu\x07this Tu\x07next Tu\x09in {0} Tu\x0a{0} Tu ago\x10in {0} W" + - "ednesday\x11in {0} Wednesdays\x11{0} Wednesday ago\x12{0} Wednesdays ago" + - "\x09last Wed.\x09this Wed.\x09next Wed.\x0bin {0} Wed.\x0c{0} Wed. ago" + - "\x06last W\x06this W\x06next W\x08in {0} W\x09{0} W ago\x0fin {0} Thursd" + - "ay\x10in {0} Thursdays\x10{0} Thursday ago\x11{0} Thursdays ago\x09last " + - "Thu.\x09this Thu.\x09next Thu.\x0bin {0} Thu.\x0c{0} Thu. ago\x07last Th" + - "\x07this Th\x07next Th\x09in {0} Th\x0a{0} Th ago\x0din {0} Friday\x0ein" + - " {0} Fridays\x0e{0} Friday ago\x0f{0} Fridays ago\x09last Fri.\x09this F" + - "ri.\x09next Fri.\x0bin {0} Fri.\x0c{0} Fri. ago\x06last F\x06this F\x06n" + - "ext F\x08in {0} F\x09{0} F ago\x0fin {0} Saturday\x10in {0} Saturdays" + - "\x10{0} Saturday ago\x11{0} Saturdays ago\x09last Sat.\x09this Sat.\x09n" + - "ext Sat.\x0bin {0} Sat.\x0c{0} Sat. ago\x07last Sa\x07this Sa\x07next Sa" + - "\x09in {0} Sa\x0a{0} Sa ago\x04hour\x0bin {0} hour\x0cin {0} hours\x0c{0" + - "} hour ago\x0d{0} hours ago\x03hr.\x0ain {0} hr.\x0b{0} hr. ago\x06minut" + - "e\x0din {0} minute\x0ein {0} minutes\x0e{0} minute ago\x0f{0} minutes ag" + - "o\x0bin {0} min.\x0c{0} min. ago\x06second\x0din {0} second\x0ein {0} se" + - "conds\x0e{0} second ago\x0f{0} seconds ago\x04sec.\x0bin {0} sec.\x0c{0}" + - " sec. ago\x09time zone\x04zone\x08{0} Time\x11{0} Daylight Time\x11{0} S" + - "tandard Time\x1aCoordinated Universal Time\x13British Summer Time\x13Iri" + - "sh Standard Time\x09Acre Time\x12Acre Standard Time\x10Acre Summer Time" + - "\x10Afghanistan Time\x13Central Africa Time\x10East Africa Time\x1aSouth" + - " Africa Standard Time\x10West Africa Time\x19West Africa Standard Time" + - "\x17West Africa Summer Time\x0bAlaska Time\x14Alaska Standard Time\x14Al" + - "aska Daylight Time\x0bAlmaty Time\x14Almaty Standard Time\x12Almaty Summ" + - "er Time\x0bAmazon Time\x14Amazon Standard Time\x12Amazon Summer Time\x0c" + - "Central Time\x15Central Standard Time\x15Central Daylight Time\x0cEaster" + - "n Time\x15Eastern Standard Time\x15Eastern Daylight Time\x0dMountain Tim" + - "e\x16Mountain Standard Time\x16Mountain Daylight Time\x0cPacific Time" + - "\x15Pacific Standard Time\x15Pacific Daylight Time\x0bAnadyr Time\x14Ana" + - "dyr Standard Time\x12Anadyr Summer Time\x09Apia Time\x12Apia Standard Ti" + - "me\x12Apia Daylight Time\x0aAqtau Time\x13Aqtau Standard Time\x11Aqtau S" + - "ummer Time\x0bAqtobe Time\x14Aqtobe Standard Time\x12Aqtobe Summer Time" + - "\x0cArabian Time\x15Arabian Standard Time\x15Arabian Daylight Time\x0eAr" + - "gentina Time\x17Argentina Standard Time\x15Argentina Summer Time\x16West" + - "ern Argentina Time\x1fWestern Argentina Standard Time\x1dWestern Argenti" + - "na Summer Time\x0cArmenia Time\x15Armenia Standard Time\x13Armenia Summe" + - "r Time\x0dAtlantic Time\x16Atlantic Standard Time\x16Atlantic Daylight T" + - "ime\x16Central Australia Time Australian Central Standard Time Australia" + - "n Central Daylight Time\x1fAustralian Central Western Time(Australian Ce" + - "ntral Western Standard Time(Australian Central Western Daylight Time\x16" + - "Eastern Australia Time Australian Eastern Standard Time Australian Easte" + - "rn Daylight Time\x16Western Australia Time Australian Western Standard T" + - "ime Australian Western Daylight Time\x0fAzerbaijan Time\x18Azerbaijan St" + - "andard Time\x16Azerbaijan Summer Time\x0bAzores Time\x14Azores Standard " + - "Time\x12Azores Summer Time\x0fBangladesh Time\x18Bangladesh Standard Tim" + - "e\x16Bangladesh Summer Time\x0bBhutan Time\x0cBolivia Time\x0dBrasilia T" + - "ime\x16Brasilia Standard Time\x14Brasilia Summer Time\x16Brunei Darussal" + - "am Time\x0fCape Verde Time\x18Cape Verde Standard Time\x16Cape Verde Sum" + - "mer Time\x0aCasey Time\x16Chamorro Standard Time\x0cChatham Time\x15Chat" + - "ham Standard Time\x15Chatham Daylight Time\x0aChile Time\x13Chile Standa" + - "rd Time\x11Chile Summer Time\x0aChina Time\x13China Standard Time\x13Chi" + - "na Daylight Time\x0fChoibalsan Time\x18Choibalsan Standard Time\x16Choib" + - "alsan Summer Time\x15Christmas Island Time\x12Cocos Islands Time\x0dColo" + - "mbia Time\x16Colombia Standard Time\x14Colombia Summer Time\x11Cook Isla" + - "nds Time\x1aCook Islands Standard Time\x1dCook Islands Half Summer Time" + - "\x09Cuba Time\x12Cuba Standard Time\x12Cuba Daylight Time\x0aDavis Time" + - "\x17Dumont-d’Urville Time\x0fEast Timor Time\x12Easter Island Time\x1bEa" + - "ster Island Standard Time\x19Easter Island Summer Time\x0cEcuador Time" + - "\x15Central European Time\x1eCentral European Standard Time\x1cCentral E" + - "uropean Summer Time\x15Eastern European Time\x1eEastern European Standar" + - "d Time\x1cEastern European Summer Time\x1dFurther-eastern European Time" + - "\x15Western European Time\x1eWestern European Standard Time\x1cWestern E" + - "uropean Summer Time\x15Falkland Islands Time\x1eFalkland Islands Standar" + - "d Time\x1cFalkland Islands Summer Time\x09Fiji Time\x12Fiji Standard Tim" + - "e\x10Fiji Summer Time\x12French Guiana Time French Southern & Antarctic " + - "Time\x0eGalapagos Time\x0cGambier Time\x0cGeorgia Time\x15Georgia Standa" + - "rd Time\x13Georgia Summer Time\x14Gilbert Islands Time\x13Greenwich Mean" + - " Time\x13East Greenland Time\x1cEast Greenland Standard Time\x1aEast Gre" + - "enland Summer Time\x13West Greenland Time\x1cWest Greenland Standard Tim" + - "e\x1aWest Greenland Summer Time\x12Guam Standard Time\x12Gulf Standard T" + - "ime\x0bGuyana Time\x14Hawaii-Aleutian Time\x1dHawaii-Aleutian Standard T" + - "ime\x1dHawaii-Aleutian Daylight Time\x0eHong Kong Time\x17Hong Kong Stan" + - "dard Time\x15Hong Kong Summer Time\x09Hovd Time\x12Hovd Standard Time" + - "\x10Hovd Summer Time\x13India Standard Time\x11Indian Ocean Time\x0eIndo" + - "china Time\x16Central Indonesia Time\x16Eastern Indonesia Time\x16Wester" + - "n Indonesia Time\x09Iran Time\x12Iran Standard Time\x12Iran Daylight Tim" + - "e\x0cIrkutsk Time\x15Irkutsk Standard Time\x13Irkutsk Summer Time\x0bIsr" + - "ael Time\x14Israel Standard Time\x14Israel Daylight Time\x0aJapan Time" + - "\x13Japan Standard Time\x13Japan Daylight Time\x1dPetropavlovsk-Kamchats" + - "ki Time&Petropavlovsk-Kamchatski Standard Time$Petropavlovsk-Kamchatski " + - "Summer Time\x14East Kazakhstan Time\x14West Kazakhstan Time\x0bKorean Ti" + - "me\x14Korean Standard Time\x14Korean Daylight Time\x0bKosrae Time\x10Kra" + - "snoyarsk Time\x19Krasnoyarsk Standard Time\x17Krasnoyarsk Summer Time" + - "\x0eKyrgystan Time\x0aLanka Time\x11Line Islands Time\x0eLord Howe Time" + - "\x17Lord Howe Standard Time\x17Lord Howe Daylight Time\x0aMacau Time\x13" + - "Macau Standard Time\x11Macau Summer Time\x15Macquarie Island Time\x0cMag" + - "adan Time\x15Magadan Standard Time\x13Magadan Summer Time\x0dMalaysia Ti" + - "me\x0dMaldives Time\x0eMarquesas Time\x15Marshall Islands Time\x0eMaurit" + - "ius Time\x17Mauritius Standard Time\x15Mauritius Summer Time\x0bMawson T" + - "ime\x15Northwest Mexico Time\x1eNorthwest Mexico Standard Time\x1eNorthw" + - "est Mexico Daylight Time\x14Mexican Pacific Time\x1dMexican Pacific Stan" + - "dard Time\x1dMexican Pacific Daylight Time\x0fUlan Bator Time\x18Ulan Ba" + - "tor Standard Time\x16Ulan Bator Summer Time\x0bMoscow Time\x14Moscow Sta" + - "ndard Time\x12Moscow Summer Time\x0cMyanmar Time\x0aNauru Time\x0aNepal " + - "Time\x12New Caledonia Time\x1bNew Caledonia Standard Time\x19New Caledon" + - "ia Summer Time\x10New Zealand Time\x19New Zealand Standard Time\x19New Z" + - "ealand Daylight Time\x11Newfoundland Time\x1aNewfoundland Standard Time" + - "\x1aNewfoundland Daylight Time\x09Niue Time\x13Norfolk Island Time\x18Fe" + - "rnando de Noronha Time!Fernando de Noronha Standard Time\x1fFernando de " + - "Noronha Summer Time\x1aNorth Mariana Islands Time\x10Novosibirsk Time" + - "\x19Novosibirsk Standard Time\x17Novosibirsk Summer Time\x09Omsk Time" + - "\x12Omsk Standard Time\x10Omsk Summer Time\x0dPakistan Time\x16Pakistan " + - "Standard Time\x14Pakistan Summer Time\x0aPalau Time\x15Papua New Guinea " + - "Time\x0dParaguay Time\x16Paraguay Standard Time\x14Paraguay Summer Time" + - "\x09Peru Time\x12Peru Standard Time\x10Peru Summer Time\x0fPhilippine Ti" + - "me\x18Philippine Standard Time\x16Philippine Summer Time\x14Phoenix Isla" + - "nds Time\x1aSt. Pierre & Miquelon Time#St. Pierre & Miquelon Standard Ti" + - "me#St. Pierre & Miquelon Daylight Time\x0dPitcairn Time\x0bPonape Time" + - "\x0ePyongyang Time\x0eQyzylorda Time\x17Qyzylorda Standard Time\x15Qyzyl" + - "orda Summer Time\x0cReunion Time\x0cRothera Time\x0dSakhalin Time\x16Sak" + - "halin Standard Time\x14Sakhalin Summer Time\x0bSamara Time\x14Samara Sta" + - "ndard Time\x12Samara Summer Time\x0aSamoa Time\x13Samoa Standard Time" + - "\x13Samoa Daylight Time\x0fSeychelles Time\x17Singapore Standard Time" + - "\x14Solomon Islands Time\x12South Georgia Time\x0dSuriname Time\x0aSyowa" + - " Time\x0bTahiti Time\x0bTaipei Time\x14Taipei Standard Time\x14Taipei Da" + - "ylight Time\x0fTajikistan Time\x0cTokelau Time\x0aTonga Time\x13Tonga St" + - "andard Time\x11Tonga Summer Time\x0aChuuk Time\x11Turkmenistan Time\x1aT" + - "urkmenistan Standard Time\x18Turkmenistan Summer Time\x0bTuvalu Time\x0c" + - "Uruguay Time\x15Uruguay Standard Time\x13Uruguay Summer Time\x0fUzbekist" + - "an Time\x18Uzbekistan Standard Time\x16Uzbekistan Summer Time\x0cVanuatu" + - " Time\x15Vanuatu Standard Time\x13Vanuatu Summer Time\x0eVenezuela Time" + - "\x10Vladivostok Time\x19Vladivostok Standard Time\x17Vladivostok Summer " + - "Time\x0eVolgograd Time\x17Volgograd Standard Time\x15Volgograd Summer Ti" + - "me\x0bVostok Time\x10Wake Island Time\x14Wallis & Futuna Time\x0cYakutsk" + - " Time\x15Yakutsk Standard Time\x13Yakutsk Summer Time\x12Yekaterinburg T" + - "ime\x1bYekaterinburg Standard Time\x19Yekaterinburg Summer Time\x0bin {0" + - "} yrs.\x0c{0} yrs. ago\x0bin {0} mos.\x0c{0} mos. ago\x0bin {0} wks.\x0c" + - "{0} wks. ago\x0fin {0} Sun’s.\x0din {0} Su’s\x0e{0} Su’s ago\x0fin {0} M" + - "on’s.\x10{0} Mon’s. ago\x0cin {0} M’s\x0d{0} M’s ago\x0fin {0} Tue’s." + - "\x10{0} Tue’s. ago\x0din {0} Tu’s\x0e{0} Tu’s ago\x0fin {0} Wed’s.\x10{0" + - "} Wed’s. ago\x0cin {0} W’s\x0d{0} W’s ago\x0fin {0} Thu’s.\x0f{0} Thu’s " + - "ago\x0din {0} Th’s\x0e{0} Th’s ago\x0fin {0} Fri’s.\x10{0} Fri’s. ago" + - "\x0cin {0} F’s\x0d{0} F’s ago\x0fin {0} Sat’s.\x10{0} Sat’s. ago\x0din {" + - "0} Sa’s\x0e{0} Sa’s ago\x0bin {0} hrs.\x0c{0} hrs. ago\x0cin {0} mins." + - "\x0d{0} mins. ago\x0cin {0} secs.\x0d{0} secs. ago\x04Ochs\x05Tiger\x0cK" + - "annéngchen\x06Draach\x08Schlaang\x06Päerd\x05Geess\x02Af\x04Hong\x04Hond" + - "\x08Schwäin\x02Os\x06Tijger\x06Konijn\x05Draak\x05Slang\x05Paard\x04Geit" + - "\x03Aap\x04Haan\x06Varken" - -var bucket28 string = "" + // Size: 8896 bytes - "\x11EEEE, d MMMM r(U)\x0bd MMMM r(U)\x07d MMM r\x07dd/MM/r\x02yr\x09in {" + - "0} yr\x0a{0} yr ago\x03qtr\x0ain {0} qtr\x0b{0} qtr ago\x02mo\x09in {0} " + - "mo\x0a{0} mo ago\x02wk\x09in {0} wk\x0a{0} wk ago\x02hr\x09in {0} hr\x0a" + - "{0} hr ago\x0ain {0} min\x0b{0} min ago\x03sec\x0ain {0} sec\x0b{0} sec " + - "ago\x09∅∅∅\x04Sun.\x04Mon.\x04Tue.\x04Wed.\x04Thu.\x04Fri.\x04Sat.\x03Su" + - ".\x02M.\x03Tu.\x02W.\x03Th.\x02F.\x03Sa.\x06midday\x0fin {0} qtr. ago" + - "\x0d{0} qtrs. ago\x13Eastern Africa Time\x0bArabia Time\x14Arabia Standa" + - "rd Time\x14Arabia Daylight Time\x17Australian Central Time Australian Ce" + - "ntral Standard Time Australian Central Daylight Time\x03ACT\x04ACST\x04A" + - "CDT\x04ACWT\x05ACWST\x05ACWDT\x17Australian Eastern Time Australian East" + - "ern Standard Time Australian Eastern Daylight Time\x03AET\x04AEST\x04AED" + - "T\x17Australian Western Time Australian Western Standard Time Australian" + - " Western Daylight Time\x03AWT\x04AWST\x04AWDT\x10Cook Island Time\x19Coo" + - "k Island Standard Time\x17Cook Island Summer Time\x0aJapan Time\x13Japan" + - " Standard Time\x11Japan Summer Time\x0aKorea Time\x14Korean Standard Tim" + - "e\x12Korean Summer Time\x03LHT\x04LHST\x04LHDT\x0bMoscow Time\x14Moscow " + - "Standard Time\x14Moscow Daylight Time\x03NZT\x04NZST\x04NZDT\x0aSamoa Ti" + - "me\x13Samoa Standard Time\x11Samoa Summer Time\x0bTaipei Time\x14Taipei " + - "Standard Time\x12Taipei Summer Time\x0add-MMM-y G\x08dd-MMM-y\x0ethe wk." + - " of {0}\x0cH.mm.ss zzzz\x09H.mm.ss z\x07H.mm.ss\x04H.mm\x03BST\x04ChST" + - "\x03GYT\x03HKT\x04HKST\x04a.m.\x04p.m.\x03MST\x03MDT\x03MYT\x08d/MM/y G" + - "\x0cd/MM/y GGGGG\x06d/MM/y\x07d/MM/yy\x04CHAT\x05CHAST\x05CHADT\x09G y-M" + - "M-dd\x07last yr\x07this yr\x07next yr\x08last qtr\x08this qtr\x08next qt" + - "r\x0bin {0} qtrs\x0c{0} qtrs ago\x03mth\x08last mth\x08this mth\x08next " + - "mth\x0ain {0} mth\x0b{0} mth ago\x07last wk\x07this wk\x07next wk\x03SGT" + - "\x0dGGGGG y/MM/dd\x07y/MM/dd\x0add MMM,y G\x08dd MMM,y\x19EEEE, d-'a' 'd" + - "e' MMMM y G\x0bG y-MMMM-dd\x0aG y-MMM-dd\x07januaro\x08februaro\x05marto" + - "\x06aprilo\x04majo\x05junio\x05julio\x08aŭgusto\x09septembro\x07oktobro" + - "\x08novembro\x08decembro\x08dimanĉo\x05lundo\x05mardo\x08merkredo\x07ĵaŭ" + - "do\x08vendredo\x06sabato\x0e1-a kvaronjaro\x0e2-a kvaronjaro\x0e3-a kvar" + - "onjaro\x0e4-a kvaronjaro\x03atm\x03ptm\x02aK\x12antaŭ Komuna Erao\x02pK" + - "\x0bKomuna Erao\x06a.K.E.\x04K.E.\x03aKE\x02KE\x17EEEE, d-'a' 'de' MMMM " + - "y\x09y-MMMM-dd\x08y-MMM-dd\x08yy-MM-dd\x1cH-'a' 'horo' 'kaj' m:ss zzzz" + - "\x04erao\x04jaro\x0cpasinta jaro\x09nuna jaro\x0cvenonta jaro\x0dpost {0" + - "} jaro\x0epost {0} jaroj\x0fantaŭ {0} jaro\x10antaŭ {0} jaroj\x0akvaronj" + - "aro\x13post {0} kvaronjaro\x14post {0} kvaronjaroj\x15antaŭ {0} kvaronja" + - "ro\x16antaŭ {0} kvaronjaroj\x06monato\x0epasinta monato\x0bnuna monato" + - "\x0evenonta monato\x0fpost {0} monato\x10post {0} monatoj\x11antaŭ {0} m" + - "onato\x12antaŭ {0} monatoj\x07semajno\x0fpasinta semajno\x0cnuna semajno" + - "\x0fvenonta semajno\x10post {0} semajno\x11post {0} semajnoj\x12antaŭ {0" + - "} semajno\x13antaŭ {0} semajnoj\x04tago\x07hieraŭ\x07hodiaŭ\x07morgaŭ" + - "\x0dpost {0} tago\x0epost {0} tagoj\x0fantaŭ {0} tago\x10antaŭ {0} tagoj" + - "\x12tago de la semajno\x10pasinta dimanĉo\x10ĉi tiu dimanĉo\x10venonta d" + - "imanĉo\x0dpasinta lundo\x0dĉi tiu lundo\x0dvenonta lundo\x0dpasinta mard" + - "o\x0dĉi tiu mardo\x0dvenonta mardo\x10pasinta merkredo\x10ĉi tiu merkred" + - "o\x10venonta merkredo\x0fpasinta ĵaŭdo\x0fĉi tiu ĵaŭdo\x0fvenonta ĵaŭdo" + - "\x10pasinta vendredo\x10ĉi tiu vendredo\x10venonta vendredo\x0epasinta s" + - "abato\x0eĉi tiu sabato\x0evenonta sabato\x07atm/ptm\x04horo\x0dpost {0} " + - "horo\x0epost {0} horoj\x0fantaŭ {0} horo\x10antaŭ {0} horoj\x06minuto" + - "\x0fpost {0} minuto\x10post {0} minutoj\x11antaŭ {0} minuto\x12antaŭ {0}" + - " minutoj\x07sekundo\x10post {0} sekundo\x11post {0} sekundoj\x12antaŭ {0" + - "} sekundo\x13antaŭ {0} sekundoj\x07horzono\x0f+HH:mm;−HH:mm\x06UTC{0}" + - "\x03UTC\x0ctempo de {0}\x13somera tempo de {0}\x12norma tempo de {0}\x13" + - "centra afrika tempo\x14orienta afrika tempo\x11suda afrika tempo\x16okci" + - "denta afrika tempo\x1cokcidenta afrika norma tempo\x1dokcidenta afrika s" + - "omera tempo\x19centra nord-amerika tempo\x1fcentra nord-amerika norma te" + - "mpo centra nord-amerika somera tempo\x1aorienta nord-amerika tempo orien" + - "ta nord-amerika norma tempo!orienta nord-amerika somera tempo\x18monta n" + - "ord-amerika tempo\x1emonta nord-amerika norma tempo\x1fmonta nord-amerik" + - "a somera tempo\x1bpacifika nord-amerika tempo!pacifika nord-amerika norm" + - "a tempo\x22pacifika nord-amerika somera tempo\x0baraba tempo\x11araba no" + - "rma tempo\x12araba somera tempo\x1catlantika nord-amerika tempo\x22atlan" + - "tika nord-amerika norma tempo#atlantika nord-amerika somera tempo\x17cen" + - "tra aŭstralia tempo\x1dcentra aŭstralia norma tempo\x1ecentra aŭstralia " + - "somera tempo\x1fcentrokcidenta aŭstralia tempo%centrokcidenta aŭstralia " + - "norma tempo&centrokcidenta aŭstralia somera tempo\x18orienta aŭstralia t" + - "empo\x1eorienta aŭstralia norma tempo\x1forienta aŭstralia somera tempo" + - "\x1aokcidenta aŭstralia tempo okcidenta aŭstralia norma tempo!okcidenta " + - "aŭstralia somera tempo\x0bĉina tempo\x11ĉina norma tempo\x12ĉina somera " + - "tempo\x14centra eŭropa tempo\x1acentra eŭropa norma tempo\x1bcentra eŭro" + - "pa somera tempo\x15orienta eŭropa tempo\x1borienta eŭropa norma tempo" + - "\x1corienta eŭropa somera tempo\x17okcidenta eŭropa tempo\x1dokcidenta e" + - "ŭropa norma tempo\x1eokcidenta eŭropa somera tempo\x1cuniversala tempo " + - "kunordigita\x0cbarata tempo\x10hindoĉina tempo\x16centra indonezia tempo" + - "\x17orienta indonezia tempo\x19okcidenta indonezia tempo\x0disraela temp" + - "o\x13israela norma tempo\x14israela somera tempo\x0cjapana tempo\x12japa" + - "na norma tempo\x13japana somera tempo\x0bkorea tempo\x11korea norma temp" + - "o\x12korea somera tempo\x0cmoskva tempo\x12moskva norma tempo\x13moskva " + - "somera tempo\x0bEEEE, d-M-y\x1aEEEE, d 'de' MMMM 'de' y G\x14d 'de' MMMM" + - " 'de' y G\x08d/M/yy G\x04ene.\x04feb.\x04mar.\x04abr.\x04may.\x04jun." + - "\x04jul.\x04ago.\x05sept.\x04oct.\x04nov.\x04dic.\x05enero\x07febrero" + - "\x05marzo\x05abril\x04mayo\x06agosto\x0aseptiembre\x07octubre\x09noviemb" + - "re\x09diciembre\x04dom.\x04lun.\x05mié.\x04jue.\x04vie.\x05sáb.\x02DO" + - "\x02LU\x02MA\x02MI\x02JU\x02VI\x02SA\x07domingo\x05lunes\x06martes\x0ami" + - "ércoles\x06jueves\x07viernes\x07sábado\x02T1\x02T2\x02T3\x02T4\x0e1.er " + - "trimestre\x0e2.º trimestre\x0e3.er trimestre\x0e4.º trimestre\x0ddel med" + - "iodía\x0fde la madrugada\x0bde la noche\x09mediodía\x09madrugada\x05noch" + - "e\x0fantes de Cristo\x16antes de la era común\x12después de Cristo\x0aer" + - "a común\x05a. C.\x08a. e. c.\x05d. C.\x05e. c.\x18EEEE, d 'de' MMMM 'de'" + - " y\x12d 'de' MMMM 'de' y\x0eH:mm:ss (zzzz)\x0edd/MM/yy GGGGG\x0fantes de" + - " R.O.C.\x04año\x0eel año pasado\x09este año\x10el próximo año\x12dentro " + - "de {0} año\x13dentro de {0} años\x0dhace {0} año\x0ehace {0} años\x0fden" + - "tro de {0} a\x0ahace {0} a\x13el trimestre pasado\x0eeste trimestre\x15e" + - "l próximo trimestre\x17dentro de {0} trimestre\x18dentro de {0} trimestr" + - "es\x12hace {0} trimestre\x13hace {0} trimestres\x13dentro de {0} trim." + - "\x0ehace {0} trim.\x0del mes pasado\x08este mes\x0fel próximo mes\x11den" + - "tro de {0} mes\x13dentro de {0} meses\x0chace {0} mes\x0ehace {0} meses" + - "\x0fdentro de {0} m\x0ahace {0} m\x06semana\x10la semana pasada\x0besta " + - "semana\x12la próxima semana\x14dentro de {0} semana\x15dentro de {0} sem" + - "anas\x0fhace {0} semana\x10hace {0} semanas\x11la semana del {0}\x04sem." + - "\x12dentro de {0} sem.\x0dhace {0} sem.\x0fla sem. del {0}\x08anteayer" + - "\x04ayer\x03hoy\x07mañana\x0epasado mañana\x12dentro de {0} día\x13dentr" + - "o de {0} días\x0dhace {0} día\x0ehace {0} días\x11día de la semana\x11el" + - " domingo pasado\x0ceste domingo\x13el próximo domingo\x15dentro de {0} d" + - "omingo\x16dentro de {0} domingos\x10hace {0} domingo\x11hace {0} domingo" + - "s\x0eel dom. pasado\x09este dom.\x10el próximo dom.\x12dentro de {0} dom" + - ".\x0dhace {0} dom.\x0cel DO pasado\x07este DO\x0eel próximo DO\x10dentro" + - " de {0} DO\x0bhace {0} DO\x0fel lunes pasado\x0aeste lunes\x11el próximo" + - " lunes\x13dentro de {0} lunes\x0ehace {0} lunes\x0eel lun. pasado\x09est" + - "e lun.\x10el próximo lun.\x12dentro de {0} lun.\x0dhace {0} lun.\x0cel L" + - "U pasado\x07este LU\x0eel próximo LU\x10dentro de {0} LU\x0bhace {0} LU" + - "\x10el martes pasado\x0beste martes\x12el próximo martes\x14dentro de {0" + - "} martes\x0fhace {0} martes\x0eel mar. pasado\x09este mar.\x10el próximo" + - " mar.\x12dentro de {0} mar.\x0dhace {0} mar.\x0cel MA pasado\x07este MA" + - "\x0eel próximo MA\x10dentro de {0} MA\x0bhace {0} MA\x14el miércoles pas" + - "ado\x0feste miércoles\x16el próximo miércoles\x18dentro de {0} miércoles" + - "\x13hace {0} miércoles\x0fel mié. pasado\x0aeste mié.\x11el próximo mié." + - "\x13dentro de {0} mié.\x0ehace {0} mié.\x0cel MI pasado\x07este MI\x0eel" + - " próximo MI\x10dentro de {0} MI\x0bhace {0} MI\x10el jueves pasado\x0bes" + - "te jueves\x12el próximo jueves\x14dentro de {0} jueves\x0fhace {0} jueve" + - "s\x0eel jue. pasado\x09este jue.\x10el próximo jue.\x12dentro de {0} jue" + - ".\x0dhace {0} jue.\x0cel JU pasado\x07este JU\x0eel próximo JU\x10dentro" + - " de {0} JU\x0bhace {0} JU\x11el viernes pasado\x0ceste viernes\x13el pró" + - "ximo viernes\x15dentro de {0} viernes\x10hace {0} viernes\x0eel vie. pas" + - "ado\x09este vie.\x10el próximo vie.\x12dentro de {0} vie.\x0dhace {0} vi" + - "e.\x0cel VI pasado\x07este VI\x0eel próximo VI\x10dentro de {0} VI\x0bha" + - "ce {0} VI\x11el sábado pasado\x0ceste sábado\x13el próximo sábado\x15den" + - "tro de {0} sábado\x16dentro de {0} sábados\x10hace {0} sábado\x11hace {0" + - "} sábados\x0fel sáb. pasado\x0aeste sáb.\x11el próximo sáb.\x13dentro de" + - " {0} sáb.\x0ehace {0} sáb.\x0cel SA pasado\x07este SA\x0eel próximo SA" + - "\x10dentro de {0} SA\x0bhace {0} SA\x12dentro de {0} hora\x13dentro de {" + - "0} horas\x0dhace {0} hora\x0ehace {0} horas\x0fdentro de {0} h\x0ahace {" + - "0} h\x0beste minuto\x14dentro de {0} minuto\x15dentro de {0} minutos\x0f" + - "hace {0} minuto\x10hace {0} minutos\x11dentro de {0} min\x0chace {0} min" + - "\x07segundo\x05ahora\x15dentro de {0} segundo\x16dentro de {0} segundos" + - "\x10hace {0} segundo\x11hace {0} segundos\x0fdentro de {0} s\x04sep.\x10" + - "el año próximo\x0fel mes próximo\x12la semana próxima\x13el domingo próx" + - "imo\x11el lunes próximo\x12el martes próximo\x16el miércoles próximo\x12" + - "el jueves próximo\x13el viernes próximo\x13el sábado próximo\x04set.\x09" + - "setiembre\x06GMT{0}\x03GMT\x12{0} گرینویچ\x0eگرینویچ\x06UTC{0}\x03UTC" + - "\x04luns\x04mar.\x05mér.\x04xov.\x04ven.\x09mércores\x05xoves\x06venres" + - "\x11despois de Cristo\x04Mä.\x03Zi.\x03Mi.\x03Du.\x03Fr.\x03Sa.\x06GMT{0" + - "}\x03GMT\x03Mo.\x03Di.\x03Me.\x06GMT{0}\x03GMT.د لودیځې اروپا معیاري وخت" + - "-د لودیځې اورپا د اوړي وخت\x15گرينويچ وخت\x0dsegunda-feira\x0cterça-feir" + - "a\x0cquarta-feira\x0cquinta-feira\x0bsexta-feira\x10depois de Cristo\x03" + - "AMT\x04AMST\x03BRT\x04BRST\x07segunda\x06terça\x06quarta\x06quinta\x05se" + - "xta\x04AZOT\x05AZOST\x03CET\x04CEST\x03EET\x04EEST\x03WET\x04WEST\x03GMT" + - "\x06UTC{0}\x03UTC\x03GMT\x03GMT\x03GMT\x06GMT{0}" - -var bucket29 string = "" + // Size: 8306 bytes - "\x0ahace {0} s\x0czona horaria\x0bhora de {0}\x18horario de verano de {0" + - "}\x18horario estándar de {0}\x1bTiempo Universal Coordinado\x19hora de v" + - "erano británica\x19hora de verano de Irlanda\x0cHora de Acre\x16Hora est" + - "ándar de Acre\x16Hora de verano de Acre\x13hora de Afganistán\x17hora d" + - "e África central\x18hora de África oriental\x12hora de Sudáfrica\x1ahora" + - " de África occidental$hora estándar de África occidental$hora de verano " + - "de África occidental\x0ehora de Alaska\x18hora estándar de Alaska\x18hor" + - "a de verano de Alaska\x11hora del Amazonas\x1bhora estándar del Amazonas" + - "\x1bhora de verano del Amazonas\x0chora central\x16hora estándar central" + - "\x16hora de verano central\x0dhora oriental\x17hora estándar oriental" + - "\x17hora de verano oriental\x15hora de las Montañas\x1fhora estándar de " + - "las Montañas\x1fhora de verano de las Montañas\x12hora del Pacífico\x1ch" + - "ora estándar del Pacífico\x1chora de verano del Pacífico\x0eHora de Anad" + - "yr\x18Hora estándar de Anadyr\x18Hora de verano de Anadyr\x0chora de Api" + - "a\x16hora estándar de Apia\x19horario de verano de Apia\x0dHora de Aktau" + - "\x17Hora estándar de Aktau\x17Hora de verano de Aktau\x0eHora de Aktobe" + - "\x18Hora estándar de Aktobe\x18Hora de verano de Aktobe\x0ehora de Arabi" + - "a\x18hora estándar de Arabia\x18hora de verano de Arabia\x11hora de Arge" + - "ntina\x1bhora estándar de Argentina\x1bhora de verano de Argentina\x1cho" + - "ra de Argentina occidental&hora estándar de Argentina occidental&hora de" + - " verano de Argentina occidental\x0fhora de Armenia\x19hora estándar de A" + - "rmenia\x19hora de verano de Armenia\x13hora del Atlántico\x1dhora estánd" + - "ar del Atlántico\x1dhora de verano del Atlántico\x19hora de Australia ce" + - "ntral#hora estándar de Australia central#hora de verano de Australia cen" + - "tral!hora de Australia centroccidental+hora estándar de Australia centro" + - "ccidental+hora de verano de Australia centroccidental\x1ahora de Austral" + - "ia oriental$hora estándar de Australia oriental$hora de verano de Austra" + - "lia oriental\x1chora de Australia occidental&hora estándar de Australia " + - "occidental&hora de verano de Australia occidental\x13hora de Azerbaiyán" + - "\x1dhora estándar de Azerbaiyán\x1dhora de verano de Azerbaiyán\x12hora " + - "de las Azores\x1chora estándar de las Azores\x1chora de verano de las Az" + - "ores\x12hora de Bangladés\x1chora estándar de Bangladés\x1chora de veran" + - "o de Bangladés\x0ehora de Bután\x0fhora de Bolivia\x10hora de Brasilia" + - "\x1ahora estándar de Brasilia\x1ahora de verano de Brasilia\x0fhora de B" + - "runéi\x12hora de Cabo Verde\x1chora estándar de Cabo Verde\x1chora de ve" + - "rano de Cabo Verde\x1ahora estándar de Chamorro\x0fhora de Chatham\x19ho" + - "ra estándar de Chatham\x19hora de verano de Chatham\x0dhora de Chile\x17" + - "hora estándar de Chile\x17hora de verano de Chile\x0dhora de China\x17ho" + - "ra estándar de China\x17hora de verano de China\x12hora de Choibalsan" + - "\x1chora estándar de Choibalsan\x1chora de verano de Choibalsan\x1ahora " + - "de la Isla de Navidad\x17hora de las Islas Cocos\x10hora de Colombia\x1a" + - "hora estándar de Colombia\x1ahora de verano de Colombia\x16hora de las I" + - "slas Cook hora estándar de las Islas Cook&hora de verano media de las Is" + - "las Cook\x0chora de Cuba\x16hora estándar de Cuba\x16hora de verano de C" + - "uba\x0dhora de Davis\x1ahora de Dumont-d’Urville\x16hora de Timor Orient" + - "al\x19hora de la isla de Pascua#hora estándar de la isla de Pascua#hora " + - "de verano de la isla de Pascua\x0fhora de Ecuador\x16hora de Europa cent" + - "ral hora estándar de Europa central hora de verano de Europa central\x17" + - "hora de Europa oriental!hora estándar de Europa oriental!hora de verano " + - "de Europa oriental\x1ehora de Europa oriental lejana\x19hora de Europa o" + - "ccidental#hora estándar de Europa occidental#hora de verano de Europa oc" + - "cidental\x1ahora de las islas Malvinas$hora estándar de las islas Malvin" + - "as$hora de verano de las islas Malvinas\x0chora de Fiyi\x16hora estándar" + - " de Fiyi\x16hora de verano de Fiyi\x1bhora de la Guayana Francesa5hora d" + - "e las Tierras Australes y Antárticas Francesas\x12hora de Galápagos\x0fh" + - "ora de Gambier\x0fhora de Georgia\x19hora estándar de Georgia\x19hora de" + - " verano de Georgia\x19hora de las islas Gilbert\x1fhora del meridiano de" + - " Greenwich\x1chora de Groenlandia oriental&hora estándar de Groenlandia " + - "oriental&hora de verano de Groenlandia oriental\x1ehora de Groenlandia o" + - "ccidental(hora estándar de Groenlandia occidental(hora de verano de Groe" + - "nlandia occidental\x16Hora estándar de Guam\x18hora estándar del Golfo" + - "\x0ehora de Guyana\x18hora de Hawái-Aleutiano\x22hora estándar de Hawái-" + - "Aleutiano\x22hora de verano de Hawái-Aleutiano\x11hora de Hong Kong\x1bh" + - "ora estándar de Hong Kong\x1bhora de verano de Hong Kong\x0chora de Hovd" + - "\x16hora estándar de Hovd\x16hora de verano de Hovd\x1ahora estándar de " + - "la India\x18hora del océano Índico\x11hora de Indochina\x19hora de Indon" + - "esia central\x1ahora de Indonesia oriental\x1chora de Indonesia occident" + - "al\x0dhora de Irán\x17hora estándar de Irán\x17hora de verano de Irán" + - "\x0fhora de Irkutsk\x19hora estándar de Irkutsk\x19hora de verano de Irk" + - "utsk\x0ehora de Israel\x18hora estándar de Israel\x18hora de verano de I" + - "srael\x0ehora de Japón\x18hora estándar de Japón\x18hora de verano de Ja" + - "pón\x11Hora de Kamchatka\x1eHora de estándar de Kamchatka\x1bHora de ver" + - "ano de Kamchatka\x1chora de Kazajistán oriental\x1ehora de Kazajistán oc" + - "cidental\x0dhora de Corea\x17hora estándar de Corea\x17hora de verano de" + - " Corea\x0ehora de Kosrae\x13hora de Krasnoyarsk\x1dhora estándar de Kras" + - "noyarsk\x1dhora de verano de Krasnoyarsk\x13hora de Kirguistán\x11Hora d" + - "e Sri Lanka#hora de las Espóradas Ecuatoriales\x11hora de Lord Howe\x1bh" + - "ora estándar de Lord Howe\x1bhora de verano de Lord Howe\x0dHora de Maca" + - "o\x17Hora estándar de Macao\x17Hora de verano de Macao\x19hora de la isl" + - "a Macquarie\x10hora de Magadán\x1ahora estándar de Magadán\x1ahora de ve" + - "rano de Magadán\x0fhora de Malasia\x10hora de Maldivas\x11hora de Marque" + - "sas\x1ahora de las Islas Marshall\x10hora de Mauricio\x1ahora estándar d" + - "e Mauricio\x1ahora de verano de Mauricio\x0ehora de Mawson\x1chora del n" + - "oroeste de México&hora estándar del noroeste de México&hora de verano de" + - "l noroeste de México\x1dhora del Pacífico de México'hora estándar del Pa" + - "cífico de México'hora de verano del Pacífico de México\x13hora de Ulán B" + - "ator\x1dhora estándar de Ulán Bator\x1dhora de verano de Ulán Bator\x0eh" + - "ora de Moscú\x18hora estándar de Moscú\x18hora de verano de Moscú\x10hor" + - "a de Birmania\x0dhora de Nauru\x0dhora de Nepal\x17hora de Nueva Caledon" + - "ia!hora estándar de Nueva Caledonia!hora de verano de Nueva Caledonia" + - "\x15hora de Nueva Zelanda\x1fhora estándar de Nueva Zelanda\x1fhora de v" + - "erano de Nueva Zelanda\x11hora de Terranova\x1bhora estándar de Terranov" + - "a\x1bhora de verano de Terranova\x0chora de Niue\x17hora de la isla Norf" + - "olk\x1bhora de Fernando de Noronha%hora estándar de Fernando de Noronha%" + - "hora de verano de Fernando de Noronha$Hora de las Islas Marianas del Nor" + - "te\x13hora de Novosibirsk\x1dhora estándar de Novosibirsk\x1dhora de ver" + - "ano de Novosibirsk\x0chora de Omsk\x16hora estándar de Omsk\x16hora de v" + - "erano de Omsk\x11hora de Pakistán\x1bhora estándar de Pakistán\x1bhora d" + - "e verano de Pakistán\x0ehora de Palaos\x1bhora de Papúa Nueva Guinea\x10" + - "hora de Paraguay\x1ahora estándar de Paraguay\x1ahora de verano de Parag" + - "uay\x0dhora de Perú\x17hora estándar de Perú\x17hora de verano de Perú" + - "\x11hora de Filipinas\x1bhora estándar de Filipinas\x1bhora de verano de" + - " Filipinas\x18hora de las Islas Fénix\x1dhora de San Pedro y Miquelón'ho" + - "ra estándar de San Pedro y Miquelón'hora de verano de San Pedro y Miquel" + - "ón\x10hora de Pitcairn\x0fhora de Pohnpei\x11hora de Pyongyang\x11Hora " + - "de Qyzylorda\x1bHora estándar de Qyzylorda\x1bHora de verano de Qyzylord" + - "a\x10hora de Reunión\x0fhora de Rothera\x10hora de Sajalín\x1ahora están" + - "dar de Sajalín\x1ahora de verano de Sajalín\x0eHora de Samara\x18Hora es" + - "tándar de Samara\x18Hora de verano de Samara\x0dhora de Samoa\x17hora es" + - "tándar de Samoa\x17hora de verano de Samoa\x12hora de Seychelles\x10hora" + - " de Singapur\x1ahora de las Islas Salomón\x1ahora de Georgia meridional" + - "\x0fhora de Surinam\x0dhora de Syowa\x0fhora de Tahití\x0fhora de Taipéi" + - "\x19hora estándar de Taipéi\x19hora de verano de Taipéi\x13hora de Tayik" + - "istán\x0fhora de Tokelau\x0dhora de Tonga\x17hora estándar de Tonga\x17h" + - "ora de verano de Tonga\x0dhora de Chuuk\x15hora de Turkmenistán\x1fhora " + - "estándar de Turkmenistán\x1fhora de verano de Turkmenistán\x0ehora de Tu" + - "valu\x0fhora de Uruguay\x19hora estándar de Uruguay\x19hora de verano de" + - " Uruguay\x13hora de Uzbekistán\x1dhora estándar de Uzbekistán\x1dhora de" + - " verano de Uzbekistán\x0fhora de Vanuatu\x19hora estándar de Vanuatu\x19" + - "hora de verano de Vanuatu\x11hora de Venezuela\x13hora de Vladivostok" + - "\x1dhora estándar de Vladivostok\x1dhora de verano de Vladivostok\x12hor" + - "a de Volgogrado\x1chora estándar de Volgogrado\x1chora de verano de Volg" + - "ogrado\x0ehora de Vostok\x14hora de la isla Wake\x17hora de Wallis y Fut" + - "una\x0fhora de Yakutsk\x19hora estándar de Yakutsk\x19hora de verano de " + - "Yakutsk\x15hora de Ekaterimburgo\x1fhora estándar de Ekaterimburgo\x1fho" + - "ra de verano de Ekaterimburgo" - -var bucket30 string = "" + // Size: 8256 bytes - "\x0een {0} domingo\x0fen {0} domingos\x0cen {0} lunes\x09a.m./p.m.\x0cZo" + - "na horaria\x15hora de verano de {0}\x15hora estándar de {0}\x16hora de l" + - "as islas Cook hora estándar de las islas Cook&hora de verano media de la" + - "s islas Cook!horario del lejano este de Europa\x19hora de Hawái-Aleutian" + - "as#hora estándar de Hawái-Aleutianas#hora de verano de Hawái-Aleutianas" + - "\x0dhora de India\x10hora de Pionyang\x04seg.\x12dentro de {0} seg.\x0dh" + - "ace {0} seg.\x03ART\x04ARST\x04WART\x05WARST\x0cd MMM 'de' y\x03BOT\x0dd" + - "d-MM-y GGGGG\x0e1.° trimestre\x0e2.° trimestre\x0e3.° trimestre\x0e4.º t" + - "rimestre\x08dd-MM-yy\x03CLT\x04CLST\x0dd/MM/yy GGGGG\x03COT\x04COST\x06a" + - "ntier\x04ayer\x03hoy\x07mañana\x0epasado mañana\x16antes de la Era Común" + - "\x0aEra Común\x04Año\x09Trimestre\x03Mes\x06Semana\x04Día\x11Día de la s" + - "emana\x06Minuto\x07Segundo\x03ECT\x1aEEEE dd 'de' MMMM 'de' y G\x15dd 'd" + - "e' MMMM 'de' y G\x18EEEE dd 'de' MMMM 'de' y\x13dd 'de' MMMM 'de' y\x03e" + - "ne\x03feb\x03mar\x03abr\x03may\x03jun\x03jul\x03ago\x03sep\x03oct\x03nov" + - "\x03dic\x0a1er. trim.\x0a2º. trim.\x0a3er. trim.\x094º trim.\x0e1er. tri" + - "mestre\x0e2º. trimestre\x0e3er. trimestre\x0d4o. trimestre\x0d4º trimest" + - "re\x08en {0} a\x06-{0} a\x06+{0} T\x06-{0} T\x08en {0} m\x0ben {0} sem." + - "\x09+{0} sem.\x09-{0} sem.\x09+{0} día\x0a+{0} días\x09-{0} día\x0a-{0} " + - "días\x10el miér. pasado\x0beste miér.\x12el próximo miér.\x0fel vier. pa" + - "sado\x0aeste vier.\x11el próximo vier.\x08en {0} h\x08en {0} n\x0aen {0}" + - " min\x08en {0} s\x19Hora de verano británica\x18Hora de verano irlandesa" + - "\x17Hora de África Central\x18Hora de África Oriental\x12Hora de Sudáfri" + - "ca\x1aHora de África Occidental$Hora estándar de África Occidental$Hora " + - "de verano de África Occidental\x0cHora de Apia\x16Hora estándar de Apia" + - "\x16Hora de verano de Apia\x0eHora de Arabia\x18Hora estándar de Arabia" + - "\x18Hora de verano de Arabia\x0fHora de Armenia\x19Hora estándar de Arme" + - "nia\x19Hora de verano de Armenia\x19Hora de Australia Central#Hora están" + - "dar de Australia Central#Hora de verano de Australia Central!Hora de Aus" + - "tralia Centroccidental+Hora estándar de Australia Centroccidental+Hora d" + - "e verano de Australia Centroccidental\x1aHora de Australia Oriental$Hora" + - " estándar de Australia Oriental$Hora de verano de Australia Oriental\x1c" + - "Hora de Australia Occidental&Hora estándar de Australia Occidental&Hora " + - "de verano de Australia Occidental\x13Hora de Azerbaiyán\x1dHora estándar" + - " de Azerbaiyán\x1dHora de verano de Azerbaiyán\x12Hora de las Azores\x1c" + - "Hora estándar de las Azores\x1cHora de verano de las Azores\x12Hora de C" + - "abo Verde\x1cHora estándar de Cabo Verde\x1cHora de verano de Cabo Verde" + - "\x1aHora estándar de Chamorro\x0fHora de Chatham\x19Hora estándar de Cha" + - "tham\x19Hora de verano de Chatham\x1aHora de la isla de Navidad\x17Hora " + - "de las islas Cocos\x10Hora de Colombia\x1aHora estándar de Colombia\x1aH" + - "ora de verano de Colombia\x16Hora de las islas Cook Hora estándar de las" + - " islas Cook&Hora de verano media de las islas Cook\x0dHora de Davis\x1aH" + - "ora de Dumont-d’Urville\x19Hora de la isla de Pascua#Hora estándar de la" + - " isla de Pascua#Hora de verano de la isla de Pascua\x0fHora de Ecuador" + - "\x16Hora de Europa Central Hora estándar de Europa Central Hora de veran" + - "o de Europa Central\x17Hora de Europa del Este!Hora estándar de Europa d" + - "el Este!Hora de verano de Europa del Este#Hora del Extremo Oriental de E" + - "uropa\x19Hora de Europa Occidental#Hora estándar de Europa Occidental#Ho" + - "ra de verano de Europa Occidental\x1aHora de las islas Malvinas$Hora est" + - "ándar de las islas Malvinas$Hora de verano de las islas Malvinas\x0cHor" + - "a de Fiyi\x16Hora estándar de Fiyi\x16Hora de verano de Fiyi\x1bHora de " + - "la Guayana Francesa5Hora de las Tierras Australes y Antárticas Francesas" + - "\x12Hora de Galápagos\x0fHora de Gambier\x0fHora de Georgia\x19Hora está" + - "ndar de Georgia\x19Hora de verano de Georgia\x19Hora de las islas Gilber" + - "t\x1fHora del meridiano de Greenwich\x18Hora estándar del Golfo\x0eHora " + - "de Guyana\x18Hora del Océano Índico\x0fHora de Irkutsk\x19Hora estándar " + - "de Irkutsk\x19Hora de verano de Irkutsk\x0eHora de Israel\x18Hora estánd" + - "ar de Israel\x18Hora de verano de Israel\x1cHora de Kazajistán Oriental" + - "\x1eHora de Kazajistán Occidental\x0eHora de Kosrae\x13Hora de Krasnoyar" + - "sk\x1dHora estándar de Krasnoyarsk\x1dHora de verano de Krasnoyarsk\x13H" + - "ora de Kirguistán#Hora de las Espóradas Ecuatoriales\x11Hora de Lord How" + - "e\x1bHora estándar de Lord Howe\x1bHora de verano de Lord Howe\x19Hora d" + - "e la isla Macquarie\x10Hora de Magadán\x1aHora estándar de Magadán\x1aHo" + - "ra de verano de Magadán\x1bHora de las islas Marquesas\x1aHora de las Is" + - "las Marshall\x10Hora de Mauricio\x1aHora estándar de Mauricio\x1aHora de" + - " verano de Mauricio\x0eHora de Mawson\x0eHora de Moscú\x18Hora estándar " + - "de Moscú\x18Hora de verano de Moscú\x0dHora de Nauru\x17Hora de Nueva Ca" + - "ledonia!Hora estándar de Nueva Caledonia!Hora de verano de Nueva Caledon" + - "ia\x15Hora de Nueva Zelanda\x1fHora estándar de Nueva Zelanda\x1fHora de" + - " verano de Nueva Zelanda\x0cHora de Niue\x19Hora de las islas Norfolk" + - "\x1bHora de Fernando de Noronha%Hora estándar de Fernando de Noronha%Hor" + - "a de verano de Fernando de Noronha\x13Hora de Novosibirsk\x1dHora estánd" + - "ar de Novosibirsk\x1dHora de verano de Novosibirsk\x0cHora de Omsk\x16Ho" + - "ra estándar de Omsk\x16Hora de verano de Omsk\x0eHora de Palaos\x1bHora " + - "de Papúa Nueva Guinea\x10Hora de Paraguay\x1aHora estándar de Paraguay" + - "\x1aHora de verano de Paraguay\x0dHora de Perú\x17Hora estándar de Perú" + - "\x17Hora de verano de Perú\x18Hora de las islas Fénix\x10Hora de Pitcair" + - "n\x0fHora de Pohnpei\x10Hora de Reunión\x0fHora de Rothera\x10Hora de Sa" + - "jalín\x1aHora estándar de Sajalín\x1aHora de verano de Sajalín\x0dHora d" + - "e Samoa\x17Hora estándar de Samoa\x17Hora de verano de Samoa\x12Hora de " + - "Seychelles\x1aHora de las islas Salomón\x1aHora de Georgia meridional" + - "\x0fHora de Surinam\x0dHora de Syowa\x0fHora de Tahití\x13Hora de Tayiki" + - "stán\x0fHora de Tokelau\x0dHora de Tonga\x17Hora estándar de Tonga\x17Ho" + - "ra de verano de Tonga\x0dHora de Chuuk\x15Hora de Turkmenistán\x1fHora e" + - "stándar de Turkmenistán\x1fHora de verano de Turkmenistán\x0eHora de Tuv" + - "alu\x0fHora de Uruguay\x19Hora estándar de Uruguay\x19Hora de verano de " + - "Uruguay\x13Hora de Uzbekistán\x1dHora estándar de Uzbekistán\x1dHora de " + - "verano de Uzbekistán\x0fHora de Vanuatu\x19Hora estándar de Vanuatu\x19H" + - "ora de verano de Vanuatu\x11Hora de Venezuela\x13Hora de Vladivostok\x1d" + - "Hora estándar de Vladivostok\x1dHora de verano de Vladivostok\x12Hora de" + - " Volgogrado\x1cHora estándar de Volgogrado\x1cHora de verano de Volgogra" + - "do\x0eHora de Vostok\x14Hora de la isla Wake\x17Hora de Wallis y Futuna" + - "\x0fHora de Yakutsk\x19Hora estándar de Yakutsk\x19Hora de verano de Yak" + - "utsk\x15Hora de Ekaterimburgo\x1fHora estándar de Ekaterimburgo\x1fHora " + - "de verano de Ekaterimburgo\x09MM/dd/y G\x0eMM/dd/yy GGGGG\x0e2do. trimes" + - "tre\x07MM/dd/y\x08MM/dd/yy\x04Ene.\x04Feb.\x04Mar.\x04Abr.\x04May.\x04Ju" + - "n.\x04Jul.\x04Ago.\x04Set.\x04Oct.\x04Nov.\x04Dic.\x05Enero\x07Febrero" + - "\x05Marzo\x05Abril\x04Mayo\x05Junio\x05Julio\x06Agosto\x09Setiembre\x07O" + - "ctubre\x09Noviembre\x09Diciembre\x03PET\x04PEST\x0dantes de ayer\x10hora" + - " de Chamorro\x03UYT\x04UYST\x0cel Do pasado\x07este Do\x0eel próximo Do" + - "\x0cel Lu pasado\x07este Lu\x0eel próximo Lu\x0cel Ma pasado\x07este Ma" + - "\x0eel próximo Ma\x0cel Mi pasado\x07este Mi\x0eel próximo Mi\x0cel Ju p" + - "asado\x07este Ju\x0eel próximo Ju\x0cel Vi pasado\x07este Vi\x0eel próxi" + - "mo Vi\x0cel Sa pasado\x07este Sa\x0eel próximo Sa\x03VET\x0besimene kuu" + - "\x09teine kuu\x0akolmas kuu\x0aneljas kuu\x09viies kuu\x09kuues kuu\x0cs" + - "eitsmes kuu\x0ckaheksas kuu\x0cüheksas kuu\x0bkümnes kuu\x14üheteistkümn" + - "es kuu\x14kaheteistkümnes kuu\x04rott\x05härg\x06tiiger\x08küülik\x07dra" + - "akon\x04madu\x06hobune\x06lammas\x03ahv\x04kukk\x04koer\x04siga\x0ddd.MM" + - ".y GGGGG\x0f{1}, 'kell' {0}\x04jaan\x05veebr\x06märts\x03apr\x03mai\x05j" + - "uuni\x05juuli\x03aug\x04sept\x03okt\x04dets\x07jaanuar\x08veebruar\x06ap" + - "rill\x06august\x09september\x08oktoober\x08november\x09detsember\x0apüha" + - "päev\x0aesmaspäev\x0ateisipäev\x0akolmapäev\x0aneljapäev\x05reede\x08lau" + - "päev\x09keskööl\x0bkeskpäeval\x08hommikul\x0epärastlõunal\x06õhtul\x07öö" + - "sel\x08kesköö\x09keskpäev\x06hommik\x0dpärastlõuna\x05õhtu\x04öö\x0denne" + - " Kristust\x15enne meie ajaarvamist\x10pärast Kristust\x17meie ajaarvamis" + - "e järgi\x05e.m.a\x05m.a.j\x06ajastu\x05aasta\x0deelmine aasta\x0fkäesole" + - "v aasta\x0fjärgmine aasta\x11{0} aasta pärast\x0e{0} aasta eest\x0d{0} a" + - " pärast\x0a{0} a eest\x0feelmine kvartal\x11käesolev kvartal\x11järgmine" + - " kvartal\x14{0} kvartali pärast\x11{0} kvartali eest\x02kv\x0aeelmine kv" + - "\x0ckäesolev kv\x0cjärgmine kv\x0e{0} kv pärast\x0b{0} kv eest\x07+{0} k" + - "v\x07-{0} kv\x03kuu\x0beelmine kuu\x0dkäesolev kuu\x0djärgmine kuu\x0f{0" + - "} kuu pärast\x0c{0} kuu eest\x0d{0} k pärast\x0a{0} k eest\x06nädal\x0ee" + - "elmine nädal\x10käesolev nädal\x10järgmine nädal\x13{0} nädala pärast" + - "\x10{0} nädala eest\x0a{0} nädal\x04näd\x10{0} näd pärast\x0d{0} näd ees" + - "t\x08{0} näd\x05päev\x08üleeile\x04eile\x05täna\x05homme\x09ülehomme\x12" + - "{0} päeva pärast\x0f{0} päeva eest\x0d{0} p pärast\x0a{0} p eest\x0cnäda" + - "lapäev\x12eelmine pühapäev\x14käesolev pühapäev\x14järgmine pühapäev\x17" + - "{0} pühapäeva pärast\x14{0} pühapäeva eest\x12eelmine esmaspäev\x14käeso" + - "lev esmaspäev\x14järgmine esmaspäev\x17{0} esmaspäeva pärast\x14{0} esma" + - "späeva eest\x12eelmine teisipäev\x14käesolev teisipäev\x14järgmine teisi" + - "päev\x17{0} teisipäeva pärast\x07Pebrero\x05Marso\x05Hunyo\x05Hulyo\x09S" + - "etyembre\x07Oktubre\x09Nobyembre\x09Disyembre\x09∅∅∅\x03MYT\x03SGT" - -var bucket31 string = "" + // Size: 8181 bytes - "\x14{0} teisipäeva eest\x12eelmine kolmapäev\x14käesolev kolmapäev\x14jä" + - "rgmine kolmapäev\x17{0} kolmapäeva pärast\x14{0} kolmapäeva eest\x12eelm" + - "ine neljapäev\x14käesolev neljapäev\x14järgmine neljapäev\x17{0} neljapä" + - "eva pärast\x14{0} neljapäeva eest\x0deelmine reede\x0fkäesolev reede\x0f" + - "järgmine reede\x11{0} reede pärast\x0e{0} reede eest\x10eelmine laupäev" + - "\x12käesolev laupäev\x12järgmine laupäev\x15{0} laupäeva pärast\x12{0} l" + - "aupäeva eest\x14enne/pärast lõunat\x04tund\x10praegusel tunnil\x11{0} tu" + - "nni pärast\x0e{0} tunni eest\x0d{0} t pärast\x0a{0} t eest\x11praegusel " + - "minutil\x12{0} minuti pärast\x0f{0} minuti eest\x0f{0} min pärast\x0c{0}" + - " min eest\x06nüüd\x13{0} sekundi pärast\x10{0} sekundi eest\x03sek\x0f{0" + - "} sek pärast\x0c{0} sek eest\x0d{0} s pärast\x0a{0} s eest\x0aajavöönd" + - "\x05({0})\x08{0} (+1)\x08{0} (+0)\x19Koordineeritud maailmaaeg\x0dBriti " + - "suveaeg\x0cIiri suveaeg\x08Acre aeg\x10Acre standardaeg\x0cAcre suveaeg" + - "\x0fAfganistani aeg\x10Kesk-Aafrika aeg\x0fIda-Aafrika aeg\x1aLõuna-Aafr" + - "ika standardaeg\x13Lääne-Aafrika aeg\x1bLääne-Aafrika standardaeg\x17Lää" + - "ne-Aafrika suveaeg\x0aAlaska aeg\x12Alaska standardaeg\x0eAlaska suveaeg" + - "\x0bAlmatõ aeg\x13Almatõ standardaeg\x0fAlmatõ suveaeg\x0dAmazonase aeg" + - "\x15Amazonase standardaeg\x11Amazonase suveaeg\x11Kesk-Ameerika aeg\x19K" + - "esk-Ameerika standardaeg\x15Kesk-Ameerika suveaeg\x0eIdaranniku aeg\x16I" + - "daranniku standardaeg\x12Idaranniku suveaeg\x15Mäestikuvööndi aeg\x1dMäe" + - "stikuvööndi standardaeg\x19Mäestikuvööndi suveaeg\x12Vaikse ookeani aeg" + - "\x1aVaikse ookeani standardaeg\x16Vaikse ookeani suveaeg\x0cAnadõri aeg" + - "\x14Anadõri standardaeg\x10Anadõri suveaeg\x08Apia aeg\x10Apia standarda" + - "eg\x0cApia suveaeg\x09Aktau aeg\x11Aktau standardaeg\x0dAktau suveaeg" + - "\x0bAktöbe aeg\x13Aktöbe standardaeg\x0fAktöbe suveaeg\x0bAraabia aeg" + - "\x13Araabia standardaeg\x0fAraabia suveaeg\x0dArgentina aeg\x15Argentina" + - " standardaeg\x11Argentina suveaeg\x15Lääne-Argentina aeg\x1dLääne-Argent" + - "ina standardaeg\x19Lääne-Argentina suveaeg\x0cArmeenia aeg\x14Armeenia s" + - "tandardaeg\x10Armeenia suveaeg\x0bAtlandi aeg\x13Atlandi standardaeg\x0f" + - "Atlandi suveaeg\x13Kesk-Austraalia aeg\x1bKesk-Austraalia standardaeg" + - "\x17Kesk-Austraalia suveaeg\x1bKesk-Lääne Austraalia aeg#Kesk-Lääne Aust" + - "raalia standardaeg\x1fKesk-Lääne Austraalia suveaeg\x12Ida-Austraalia ae" + - "g\x1aIda-Austraalia standardaeg\x16Ida-Austraalia suveaeg\x16Lääne-Austr" + - "aalia aeg\x1eLääne-Austraalia standardaeg\x1aLääne-Austraalia suveaeg" + - "\x12Aserbaidžaani aeg\x1aAserbaidžaani standardaeg\x16Aserbaidžaani suve" + - "aeg\x0dAssooride aeg\x15Assooride standardaeg\x11Assooride suveaeg\x0fBa" + - "ngladeshi aeg\x17Bangladeshi standardaeg\x13Bangladeshi suveaeg\x0bBhuta" + - "ni aeg\x0cBoliivia aeg\x0dBrasiilia aeg\x15Brasiilia standardaeg\x11Bras" + - "iilia suveaeg\x0aBrunei aeg\x13Roheneemesaarte aeg\x1bRoheneemesaarte st" + - "andardaeg\x17Roheneemesaarte suveaeg\x15Tšamorro standardaeg\x0cChathami" + - " aeg\x14Chathami standardaeg\x10Chathami suveaeg\x0bTšiili aeg\x13Tšiili" + - " standardaeg\x0fTšiili suveaeg\x09Hiina aeg\x11Hiina standardaeg\x0dHiin" + - "a suveaeg\x10Tšojbalsani aeg\x18Tšojbalsani standardaeg\x14Tšojbalsani s" + - "uveaeg\x0fJõulusaare aeg\x10Kookossaarte aeg\x0cColombia aeg\x14Colombia" + - " standardaeg\x10Colombia suveaeg\x10Cooki saarte aeg\x18Cooki saarte sta" + - "ndardaeg\x1cCooki saarte osaline suveaeg\x09Kuuba aeg\x11Kuuba standarda" + - "eg\x0dKuuba suveaeg\x0aDavise aeg\x1aDumont-d’Urville’i aeg\x0eIda-Timor" + - "i aeg\x13Lihavõttesaare aeg\x1bLihavõttesaare standardaeg\x17Lihavõttesa" + - "are suveaeg\x0cEcuadori aeg\x10Kesk-Euroopa aeg\x18Kesk-Euroopa standard" + - "aeg\x14Kesk-Euroopa suveaeg\x0fIda-Euroopa aeg\x17Ida-Euroopa standardae" + - "g\x13Ida-Euroopa suveaeg\x1dKaliningradi ja Valgevene aeg\x13Lääne-Euroo" + - "pa aeg\x1bLääne-Euroopa standardaeg\x17Lääne-Euroopa suveaeg\x14Falkland" + - "i saarte aeg\x1cFalklandi saarte standardaeg\x18Falklandi saarte suveaeg" + - "\x0aFidži aeg\x12Fidži standardaeg\x0eFidži suveaeg\x16Prantsuse Guajaan" + - "a aeg*Prantsuse Antarktiliste ja Lõunaalade aeg\x0eGalapagose aeg\x0eGam" + - "bier’ aeg\x0bGruusia aeg\x13Gruusia standardaeg\x0fGruusia suveaeg\x13Gi" + - "lberti saarte aeg\x0eGreenwichi aeg\x13Ida-Gröönimaa aeg\x1bIda-Gröönima" + - "a standardaeg\x17Ida-Gröönimaa suveaeg\x17Lääne-Gröönimaa aeg\x1fLääne-G" + - "röönimaa standardaeg\x1bLääne-Gröönimaa suveaeg\x11Guami standardaeg\x18" + - "Pärsia lahe standardaeg\x0aGuyana aeg\x12Hawaii-aleuudi aeg\x1aHawaii-Al" + - "euudi standardaeg\x16Hawaii-Aleuudi suveaeg\x0dHongkongi aeg\x15Hongkong" + - "i standardaeg\x11Hongkongi suveaeg\x09Hovdi aeg\x11Hovdi standardaeg\x0d" + - "Hovdi suveaeg\x09India aeg\x11India ookeani aeg\x0dIndohiina aeg\x13Kesk" + - "-Indoneesia aeg\x12Ida-Indoneesia aeg\x16Lääne-Indoneesia aeg\x0aIraani " + - "aeg\x12Iraani standardaeg\x0eIraani suveaeg\x0cIrkutski aeg\x14Irkutski " + - "standardaeg\x10Irkutski suveaeg\x0cIisraeli aeg\x14Iisraeli standardaeg" + - "\x10Iisraeli suveaeg\x0bJaapani aeg\x13Jaapani standardaeg\x0fJaapani su" + - "veaeg\x1dPetropavlovsk-Kamtšatski aeg\x16Kamtšatka standardaeg\x12Kamtša" + - "tka suveaeg\x12Ida-Kasahstani aeg\x16Lääne-Kasahstani aeg\x09Korea aeg" + - "\x11Korea standardaeg\x0dKorea suveaeg\x0aKosrae aeg\x10Krasnojarski aeg" + - "\x18Krasnojarski standardaeg\x14Krasnojarski suveaeg\x11Kõrgõzstani aeg" + - "\x13Line’i saarte aeg\x11Lord Howe’i aeg\x19Lord Howe’i standardaeg\x15L" + - "ord Howe’i suveaeg\x13Macquarie saare aeg\x0cMagadani aeg\x14Magadani st" + - "andardaeg\x10Magadani suveaeg\x12Malaisia \u200b\u200baeg\x0cMaldiivi ae" + - "g\x10Markiisaarte aeg\x14Marshalli Saarte aeg\x0eMauritiuse aeg\x16Mauri" + - "tiuse standardaeg\x12Mauritiuse suveaeg\x0bMawsoni aeg\x11Loode-Mehhiko " + - "aeg\x19Loode-Mehhiko standardaeg\x15Loode-Mehhiko suveaeg\x1aMehhiko Vai" + - "kse ookeani aeg\x22Mehhiko Vaikse ookeani standardaeg\x1eMehhiko Vaikse " + - "ookeani suveaeg\x10Ulaanbaatari aeg\x18Ulaanbaatari standardaeg\x14Ulaan" + - "baatari suveaeg\x0aMoskva aeg\x12Moskva standardaeg\x0eMoskva suveaeg" + - "\x09Birma aeg\x09Nauru aeg\x0aNepali aeg\x12Uus-Kaledoonia aeg\x1aUus-Ka" + - "ledoonia standardaeg\x16Uus-Kaledoonia suveaeg\x0fUus-Meremaa aeg\x17Uus" + - "-Meremaa standardaeg\x13Uus-Meremaa suveaeg\x11Newfoundlandi aeg\x19Newf" + - "oundlandi standardaeg\x15Newfoundlandi suveaeg\x08Niue aeg\x13Norfolki s" + - "aarte aeg\x17Fernando de Noronha aeg\x1fFernando de Noronha standardaeg" + - "\x1bFernando de Noronha suveaeg\x10Novosibirski aeg\x18Novosibirski stan" + - "dardaeg\x14Novosibirski suveaeg\x09Omski aeg\x11Omski standardaeg\x0dOms" + - "ki suveaeg\x0dPakistani aeg\x15Pakistani standardaeg\x11Pakistani suveae" + - "g\x09Belau aeg\x15Paapua Uus-Guinea aeg\x0cParaguay aeg\x14Paraguay stan" + - "dardaeg\x10Paraguay suveaeg\x09Peruu aeg\x11Peruu standardaeg\x0dPeruu s" + - "uveaeg\x0dFilipiini aeg\x15Filipiini standardaeg\x11Filipiini suveaeg" + - "\x14Fööniksisaarte aeg!Saint-Pierre’i ja Miqueloni aeg)Saint-Pierre’i ja" + - " Miqueloni standardaeg%Saint-Pierre’i ja Miqueloni suveaeg\x0dPitcairni " + - "aeg\x0bPohnpei aeg\x0ePyongyangi aeg\x0fKõzõlorda aeg\x17Kõzõlorda stand" + - "ardaeg\x13Kõzõlorda suveaeg\x0dRéunioni aeg\x0bRothera aeg\x0dSahhalini " + - "aeg\x15Sahhalini standardaeg\x11Sahhalini suveaeg\x0aSamara aeg\x12Samar" + - "a standardaeg\x0eSamara suveaeg\x09Samoa aeg\x11Samoa standardaeg\x0dSam" + - "oa suveaeg\x0dSeišelli aeg\x15Singapuri standardaeg\x14Saalomoni Saarte " + - "aeg\x12Lõuna-Georgia aeg\x0cSuriname aeg\x09Syowa aeg\x0aTahiti aeg\x0aT" + - "aipei aeg\x12Taipei standardaeg\x0eTaipei suveaeg\x11Tadžikistani aeg" + - "\x0bTokelau aeg\x09Tonga aeg\x11Tonga standardaeg\x0dTonga suveaeg\x0aCh" + - "uuki aeg\x12Türkmenistani aeg\x1aTürkmenistani standardaeg\x16Türkmenist" + - "ani suveaeg\x0aTuvalu aeg\x0bUruguay aeg\x13Uruguay standardaeg\x0fUrugu" + - "ay suveaeg\x0fUsbekistani aeg\x17Usbekistani standardaeg\x13Usbekistani " + - "suveaeg\x0bVanuatu aeg\x13Vanuatu standardaeg\x0fVanuatu suveaeg\x0dVene" + - "zuela aeg\x10Vladivostoki aeg\x18Vladivostoki standardaeg\x14Vladivostok" + - "i suveaeg\x0eVolgogradi aeg\x16Volgogradi standardaeg\x12Volgogradi suve" + - "aeg\x0bVostoki aeg\x0cWake’i aeg\x15Wallise ja Futuna aeg\x0cJakutski ae" + - "g\x14Jakutski standardaeg\x10Jakutski suveaeg\x12Jakaterinburgi aeg\x1aJ" + - "ekaterinburgi standardaeg\x16Jakaterinburgi suveaeg\x02BG#G. 'aroko' y. " + - "'urteko' MMMM d, EEEE\x1dG. 'aroko' y. 'urteko' MMMM d\x1bG. 'aroko' y('" + - "e')'ko' MMM d\x04urt.\x04ots.\x04mar.\x04api.\x04mai.\x04eka.\x04uzt." + - "\x04abu.\x04ira.\x04urr.\x04aza.\x04abe.\x09urtarrila\x07otsaila\x07mart" + - "xoa\x07apirila\x07maiatza\x06ekaina\x07uztaila\x07abuztua\x06iraila\x05u" + - "rria\x06azaroa\x07abendua\x07Otsaila\x07Martxoa\x07Apirila\x07Maiatza" + - "\x06Ekaina\x07Uztaila\x07Abuztua\x06Iraila\x05Urria\x06Azaroa\x07Abendua" + - "\x03ig.\x03al.\x03ar.\x03az.\x03og.\x03or.\x03lr.\x07igandea\x0aastelehe" + - "na\x09asteartea\x0aasteazkena\x08osteguna\x08ostirala\x09larunbata\x07Ig" + - "andea\x0aAstelehena\x09Asteartea\x0aAsteazkena\x08Osteguna\x08Ostirala" + - "\x09Larunbata\x031Hh\x032Hh\x033Hh\x034Hh\x0e1. hiruhilekoa\x0e2. hiruhi" + - "lekoa\x0e3. hiruhilekoa\x0e4. hiruhilekoa\x08gauerdia\x05goiz.\x07goizek" + - "o\x07eguerd.\x07arrats.\x07iluntz.\x04gau.\x0agoizaldeko\x09eguerdiko" + - "\x0carratsaldeko\x09iluntzeko\x06gaueko\x05goiza\x04gaua\x09goizaldea" + - "\x08eguerdia\x0barratsaldea\x08iluntzea\x04K.a.\x11Gure aro aurretik\x0e" + - "Kristo ondoren\x09Gure aroa\x05G.a.a\x04K.o.\x03G.a\x17y('e')'ko' MMMM d" + - ", EEEE\x11y('e')'ko' MMMM d\x06yy/M/d\x0fHH:mm:ss (zzzz)\x0cHH:mm:ss (z)" + - "\x0fR.O.C. aurretik\x06R.O.C.\x04aroa\x05urtea\x0daurreko urtea\x06aurte" + - "n\x0ehurrengo urtea\x0e{0} urte barru\x0eDuela {0} urte\x0bhiruhilekoa" + - "\x13aurreko hiruhilekoa\x0ehiruhileko hau\x14hurrengo hiruhilekoa\x14{0}" + - " hiruhileko barru\x14Duela {0} hiruhileko\x08hiruhil.\x09hilabetea\x11au" + - "rreko hilabetea\x0chilabete hau\x12hurrengo hilabetea\x12{0} hilabete ba" + - "rru\x12Duela {0} hilabete\x04hil.\x05astea\x0daurreko astea\x08aste hau" + - "\x0ehurrengo astea\x0e{0} aste barru" - -var bucket32 string = "" + // Size: 8938 bytes - "\x0eDuela {0} aste\x09{0} astea\x04ast.\x05eguna\x09herenegun\x04atzo" + - "\x04gaur\x05bihar\x04etzi\x0e{0} egun barru\x0eDuela {0} egun\x03eg.\x08" + - "asteguna\x0faurreko igandea\x0aigande hau\x10hurrengo igandea\x10{0} iga" + - "nde barru\x10Duela {0} igande\x12aurreko astelehena\x0dastelehen hau\x13" + - "hurrengo astelehena\x13{0} astelehen barru\x13Duela {0} astelehen\x11aur" + - "reko asteartea\x0castearte hau\x12hurrengo asteartea\x12{0} astearte bar" + - "ru\x12Duela {0} astearte\x12aurreko asteazkena\x0dasteazken hau\x13hurre" + - "ngo asteazkena\x13{0} asteazken barru\x13Duela {0} asteazken\x10aurreko " + - "osteguna\x0bostegun hau\x11hurrengo osteguna\x11{0} ostegun barru\x11Due" + - "la {0} ostegun\x10aurreko ostirala\x0bostiral hau\x11hurrengo ostirala" + - "\x11{0} ostiral barru\x11Duela {0} ostiral\x11aurreko larunbata\x0clarun" + - "bat hau\x12hurrengo larunbata\x12{0} larunbat barru\x12Duela {0} larunba" + - "t\x06AM//PM\x05ordua\x0cordu honetan\x0e{0} ordu barru\x0eDuela {0} ordu" + - "\x07minutua\x0eminutu honetan\x10{0} minutu barru\x10Duela {0} minutu" + - "\x08segundoa\x05orain\x11{0} segundo barru\x11Duela {0} segundo\x09ordu-" + - "zona\x14{0} aldeko ordutegia\x15{0} (udako ordutegia)\x17{0} ordutegi es" + - "tandarra\x1bOrdu Unibertsal Koordinatua\x15Londresko udako ordua\x1dIrla" + - "ndako ordutegi estandarra\x12Afganistango ordua\x17Afrika erdialdeko ord" + - "ua\x16Afrika ekialdeko ordua\x17Afrika hegoaldeko ordua\x19Afrika mendeb" + - "aldeko ordua#Afrika mendebaldeko ordu estandarra\x1fAfrika mendebaldeko " + - "udako ordua\x12Alaskako ordutegia\x1cAlaskako ordutegi estandarra\x18Ala" + - "skako udako ordutegia\x14Amazoniako ordutegia\x1eAmazoniako ordutegi est" + - "andarra\x1aAmazoniako udako ordutegia#Ipar Amerikako erdialdeko ordutegi" + - "a)Ipar Amerikako erdialdeko ordu estandarra)Ipar Amerikako erdialdeko ud" + - "ako ordutegia\x22Ipar Amerikako ekialdeko ordutegia,Ipar Amerikako ekial" + - "deko ordutegi estandarra(Ipar Amerikako ekialdeko udako ordutegia$Ipar A" + - "merikako mendialdeko ordutegia.Ipar Amerikako mendialdeko ordutegi estan" + - "darra*Ipar Amerikako mendialdeko udako ordutegia#Ipar Amerikako Pazifiko" + - "ko ordutegia-Ipar Amerikako Pazifikoko ordutegi estandarra)Ipar Amerikak" + - "o Pazifikoko udako ordutegia\x10Anadyrreko ordua\x1aAnadyrreko ordu esta" + - "ndarra\x16Anadyrreko udako ordua\x0cApiako ordua\x16Apiako ordu estandar" + - "ra\x12Apiako udako ordua\x0eArabiako ordua\x18Arabiako ordu estandarra" + - "\x14Arabiako udako ordua\x15Argentinako ordutegia\x1fArgentinako orduteg" + - "i estandarra\x1bArgentinako udako ordutegia Argentina mendebaldeko ordut" + - "egia+Argentina mendebaldeko ordutegia estandarra&Argentina mendebaldeko " + - "udako ordutegia\x0fArmeniako ordua\x19Armeniako ordu estandarra\x15Armen" + - "iako udako ordua\x15Atlantikoko ordutegia\x1fAtlantikoko ordutegi estand" + - "arra\x1bAtlantikoko udako ordutegia\x1aAustralia erdialdeko ordua$Austra" + - "lia erdialdeko ordu estandarra Australia erdialdeko udako ordua!Australi" + - "a erdi-mendebaldeko ordua+Australia erdi-mendebaldeko ordu estandarra'Au" + - "stralia erdi-mendebaldeko udako ordua\x19Australia ekialdeko ordua#Austr" + - "alia ekialdeko ordu estandarra\x1fAustralia ekialdeko udako ordua\x1cAus" + - "tralia mendebaldeko ordua&Australia mendebaldeko ordu estandarra\x22Aust" + - "ralia mendebaldeko udako ordua\x12Azerbaijango ordua\x1cAzerbaijango ord" + - "u estandarra\x18Azerbaijango udako ordua\x10Azoreetako ordua\x1aAzoreeta" + - "ko ordu estandarra\x16Azoreetako udako ordua\x13Bangladesheko ordua\x1dB" + - "angladesheko ordu estandarra\x19Bangladesheko udako ordua\x0eBhutango or" + - "dua\x13Boliviako ordutegia\x10Brasiliako ordua\x1aBrasiliako ordu estand" + - "arra\x16Brasiliako udako ordua\x19Brunei Darussalamgo ordua\x12Cabo Verd" + - "eko ordua\x1cCabo Verdeko ordu estandarra\x18Cabo Verdeko udako ordua" + - "\x1aChamorroko ordu estandarra\x0fChathamgo ordua\x19Chathamgo ordu esta" + - "ndarra\x15Chathamgo udako ordua\x0dTxileko ordua\x17Txileko ordu estanda" + - "rra\x13Txileko udako ordua\x0dTxinako ordua\x17Txinako ordu estandarra" + - "\x13Txinako udako ordua\x12Choibalsango ordua\x1cChoibalsango ordu estan" + - "darra\x18Choibalsango udako ordua\x18Christmas uharteko ordua\x17Cocos u" + - "harteetako ordua\x10Kolonbiako ordua\x1aKolonbiako ordu estandarra\x16Ko" + - "lonbiako udako ordua\x16Cook uharteetako ordua Cook uharteetako ordu est" + - "andarra%Cook uharteetako uda erdialdeko ordua\x10Kubako ordutegia\x1aKub" + - "ako ordutegi estandarra\x16Kubako udako ordutegia\x0eDaviseko ordua\x1aD" + - "umont-d’Urvilleko ordua\x19Ekialdeko Timorreko ordua\x14Pazko uharteko o" + - "rdua\x1ePazko uharteko ordu estandarra\x1aPazko uharteko udako ordua\x11" + - "Ekuadorreko ordua\x17Europa erdialdeko ordua!Europa erdialdeko ordu esta" + - "ndarra\x1dEuropa erdialdeko udako ordua\x16Europa ekialdeko ordua Europa" + - " ekialdeko ordu estandarra\x1cEuropa ekialdeko udako ordua\x1fEkialde ur" + - "runeko Europako ordua\x19Europa mendebaldeko ordua#Europa mendebaldeko o" + - "rdu estandarra\x1fEuropa mendebaldeko udako ordua\x1aFalkland uharteetak" + - "o ordua$Falkland uharteetako ordu estandarra Falkland uharteetako udako " + - "ordua\x0cFijiko ordua\x16Fijiko ordu estandarra\x12Fijiko udako ordua" + - "\x18Guyana Frantseseko ordua9Frantziaren lurralde austral eta antartikoe" + - "tako ordutegia\x13Galapagoetako ordua\x11Gambierreko ordua\x0fGeorgiako " + - "ordua\x19Georgiako ordu estandarra\x15Georgiako udako ordua\x19Gilbert u" + - "harteetako ordua\x1bGreenwich meridianoko ordua\x1fGroenlandia ekialdeko" + - " ordutegia)Groenlandia ekialdeko ordutegi estandarra%Groenlandia ekialde" + - "ko udako ordutegia\x22Groenlandia mendebaldeko ordutegia,Groenlandia men" + - "debaldeko ordutegi estandarra(Groenlandia mendebaldeko udako ordutegia" + - "\x17Golkoko ordu estandarra\x0eGuyanako ordua%Hawaii-Aleutiar uharteetak" + - "o ordutegia/Hawaii-Aleutiar uharteetako ordutegi estandarra+Hawaii-Aleut" + - "iar uharteetako udako ordutegia\x10Hong Kongo ordua\x1aHong Kongo ordu e" + - "standarra\x16Hong Kongo udako ordua\x0dHovdeko ordua\x17Hovdeko ordu est" + - "andarra\x13Hovdeko udako ordua\x0dIndiako ordua\x15Ozeano Indikoko ordua" + - "\x11Indotxinako ordua\x1aIndonesia erdialdeko ordua\x19Indonesia ekialde" + - "ko ordua\x1cIndonesia mendebaldeko ordua\x0cIrango ordua\x16Irango ordu " + - "estandarra\x12Irango udako ordua\x14Irkutskeko ordutegia\x1aIrkutskeko o" + - "rdu estandarra\x16Irkutskeko udako ordua\x0eIsraelgo ordua\x18Israelgo o" + - "rdu estandarra\x14Israelgo udako ordua\x0fJaponiako ordua\x19Japoniako o" + - "rdu estandarra\x15Japoniako udako ordua Petropavlovsk-Kamchatskiko ordua" + - "*Petropavlovsk-Kamchatskiko ordu estandarra&Petropavlovsk-Kamchatskiko u" + - "dako ordua\x1aKazakhstan ekialdeko ordua\x1dKazakhstan mendebaldeko ordu" + - "a\x0dKoreako ordua\x17Koreako ordu estandarra\x13Koreako udako ordua\x0e" + - "Kosraeko ordua\x18Krasnoiarskeko ordutegia\x1eKrasnoyarskeko ordu estand" + - "arra\x1aKrasnoyarskeko udako ordua\x13Kirgizistango ordua\x16Line uharte" + - "etako ordua\x11Lord Howeko ordua\x1bLord Howeko ordu estandarra\x17Lord " + - "Howeko udako ordua\x18Macquarie uharteko ordua\x13Magadango ordutegia" + - "\x19Magadango ordu estandarra\x15Magadango udako ordua\x10Malaysiako ord" + - "ua\x11Maldivetako ordua\x11Markesetako ordua\x1aMarshall uharteetako ord" + - "ua\x10Maurizioko ordua\x1aMaurizioko ordu estandarra\x16Maurizioko udako" + - " ordua\x0fMawsoneko ordua!Mexikoko ipar-ekialdeko ordutegia+Mexikoko ipa" + - "r-ekialdeko ordutegi estandarra'Mexikoko ipar-ekialdeko udako ordutegia" + - "\x1dMexikoko Pazifikoko ordutegia'Mexikoko Pazifikoko ordutegi estandarr" + - "a#Mexikoko Pazifikoko udako ordutegia\x14Ulan Batorreko ordua\x1eUlan Ba" + - "torreko ordu estandarra\x1aUlan Batorreko udako ordua\x0dMoskuko ordua" + - "\x17Moskuko ordu estandarra\x13Moskuko udako ordua\x11Myanmarreko ordua" + - "\x0dNauruko ordua\x0dNepalgo ordua\x18Kaledonia Berriako ordua!Kaledonia" + - " Berriko ordu estandarra\x1dKaledonia Berriko udako ordua\x16Zeelanda Be" + - "rriko ordua Zeelanda Berriko ordu estandarra\x1cZeelanda Berriko udako o" + - "rdua\x12Ternuako ordutegia\x1cTernuako ordutegi estandarra\x18Ternuako u" + - "dako ordutegia\x0cNiueko ordua\x19Norfolk uharteetako ordua\x1bFernando " + - "de Noronhako ordua%Fernando de Noronhako ordu estandarra!Fernando de Nor" + - "onhako udako ordua\x18Novosibirskeko ordutegia\x1eNovosibirskeko ordu es" + - "tandarra\x1aNovosibirskeko udako ordua\x11Omskeko ordutegia\x17Omskeko o" + - "rdu estandarra\x13Omskeko udako ordua\x10Pakistango ordua\x1aPakistango " + - "ordu estandarra\x16Pakistango udako ordua\x0dPalauko ordua\x19Papua Gine" + - "a Berriko ordua\x10Paraguayko ordua\x1aParaguayko ordu estandarra\x16Par" + - "aguayko udako ordua\x0cPeruko ordua\x16Peruko ordu estandarra\x12Peruko " + - "udako ordua\x12Filipinetako ordua\x1cFilipinetako ordu estandarra\x18Fil" + - "ipinetako udako ordua\x19Phoenix uharteetako ordua%Saint-Pierre eta Mike" + - "luneko ordutegia/Saint-Pierre eta Mikeluneko ordutegi estandarra+Saint-P" + - "ierre eta Mikeluneko udako ordutegia\x11Pitcairneko ordua\x0ePonapeko or" + - "dua\x12Piongiangeko ordua\x19Reunion uharteetako ordua\x0fRotherako ordu" + - "a\x14Sakhalingo ordutegia\x1aSakhalingo ordu estandarra\x16Sakhalingo ud" + - "ako ordua\x0eSamarako ordua\x18Samarako ordu estandarra\x14Samarako udak" + - "o ordua\x0dSamoako ordua\x17Samoako ordu estandarra\x13Samoako udako ord" + - "ua\x1bSeychelle uharteetako ordua\x1cSingapurreko ordu estandarra\x19Sal" + - "omon uharteetako ordua\x14Hego Georgiako ordua\x0fSurinamgo ordua\x0dSyo" + - "wako ordua\x0eTahitiko ordua\x0eTaipeiko ordua\x18Taipeiko ordu estandar" + - "ra\x14Taipeiko udako ordua\x13Tadjikistango ordua\x0fTokelauko ordua\x0d" + - "Tongako ordua\x17Tongako ordu estandarra\x13Tongako udako ordua\x0eChuuk" + - "eko ordua\x14Turkmenistango ordua\x1eTurkmenistango ordu estandarra\x1aT" + - "urkmenistango udako ordua\x0eTuvaluko ordua\x0fUruguayko ordua\x19Urugua" + - "yko ordu estandarra\x15Uruguayko udako ordua\x12Uzbekistango ordua\x1cUz" + - "bekistango ordu estandarra\x18Uzbekistango udako ordua\x0fVanuatuko ordu" + - "a\x19Vanuatuko ordu estandarra\x15Vanuatuko udako ordua\x11Venezuelako o" + - "rdua\x18Vladivostokeko ordutegia\x1eVladivostokeko ordu estandarra\x1aVl" + - "adivostokeko udako ordua\x12Volgogradeko ordua\x1cVolgogradeko ordu esta" + - "ndarra\x18Volgogradeko udako ordua\x0fVostokeko ordua\x13Wake uharteko o" + - "rdua\x1dWallis eta Futunako ordutegia\x14Jakutskeko ordutegia\x1aYakutsk" + - "eko ordu estandarra\x16Yakutskeko udako ordua\x1aJekaterinburgeko ordute" + - "gia Jekaterinburgeko ordu estandarra\x1cYekaterinburgeko udako ordua" - -var bucket33 string = "" + // Size: 14179 bytes - "\x03ngo\x03ngb\x03ngl\x03ngn\x03ngt\x03ngs\x03ngz\x03ngm\x03nge\x03nga" + - "\x04ngad\x04ngab\x0angɔn osú\x0bngɔn bɛ̌\x0bngɔn lála\x0bngɔn nyina\x0bn" + - "gɔn tána\x0dngɔn saməna\x0fngɔn zamgbála\x0angɔn mwom\x0cngɔn ebulú\x0bn" + - "gɔn awóm\x14ngɔn awóm ai dziá\x14ngɔn awóm ai bɛ̌\x06sɔ́n\x06mɔ́n\x03smb" + - "\x03sml\x03smn\x04fúl\x04sér\x09sɔ́ndɔ\x08mɔ́ndi\x1bsɔ́ndɔ məlú mə́bɛ̌" + - "\x1bsɔ́ndɔ məlú mə́lɛ́\x19sɔ́ndɔ məlú mə́nyi\x08fúladé\x08séradé\x03nno" + - "\x03nnb\x03nnl\x04nnny\x13nsámbá ngɔn asú\x14nsámbá ngɔn bɛ̌\x14nsámbá n" + - "gɔn lála\x14nsámbá ngɔn nyina\x0akíkíríg\x0cngəgógəle\x14osúsúa Yésus ki" + - "ri\x14ámvus Yésus Kirís\x03oyk\x03ayk\x05Abǒg\x06M̀bú\x05Ngɔn\x09Sɔ́ndɔ" + - "\x05Amǒs\x07Angogé\x04Aná\x07Okírí\x13Amǒs yá sɔ́ndɔ\x15Kírí / Ngəgógəle" + - "\x05Awola\x08Enútɛn\x09Akábəga\x0cNkɔŋ Awola\x06موش\x06گاو\x06ببر\x0aخرگ" + - "وش\x0aاژدها\x06مار\x06اسب\x04بز\x0aمیمون\x08خروس\x04سگ\x06خوک\x07y/M/d " + - "G\x12{1}، ساعت {0}\x0c{1}،\u200f {0}\x0eژانویهٔ\x0cفوریهٔ\x08مارس\x0aآور" + - "یل\x06مهٔ\x08ژوئن\x0cژوئیهٔ\x06اوت\x0eسپتامبر\x0aاکتبر\x0cنوامبر\x0cدسا" + - "مبر\x02ژ\x02ف\x02م\x02آ\x02ا\x02س\x02ن\x02د\x0cژانویه\x0aفوریه\x04مه" + - "\x0aژوئیه\x0cیکشنبه\x0cدوشنبه\x0fسه\u200cشنبه\x10چهارشنبه\x0eپنجشنبه\x08" + - "جمعه\x08شنبه\x04۱ش\x04۲ش\x04۳ش\x04۴ش\x04۵ش\x02ج\x02ش\x02ج\x02ش\x09س" + - "\u200cم۱\x09س\u200cم۲\x09س\u200cم۳\x09س\u200cم۴\x02۱\x02۲\x02۳\x02۴\x18س" + - "ه\u200cماههٔ اول\x18سه\u200cماههٔ دوم\x18سه\u200cماههٔ سوم\x1cسه\u200cم" + - "اههٔ چهارم\x0fنیمه\u200cشب\x06ق.ظ.\x06ظهر\x06ب.ظ.\x06صبح\x06عصر\x04شب" + - "\x02ق\x02ظ\x02ع\x13قبل\u200cازظهر\x10بعدازظهر\x16قبل از میلاد!قبل از دور" + - "ان مشترک\x0cمیلادی\x15دوران مشترک\x06ق.م.\x08ق.د.م\x03م.\x06د.م.\x05y/M" + - "/d\x0bH:mm:ss (z)\x08تشری\x0aحشوان\x08کسلو\x06طوت\x08شباط\x08آذار\x0aواذ" + - "ار\x17واذار الثانی\x0aنیسان\x08ایار\x0aسیوان\x08تموز\x04آب\x0aایلول\x11" + - "هجری قمری\x09ه\u200d.ق.\x0eفروردین\x10اردیبهشت\x0aخرداد\x06تیر\x0aمرداد" + - "\x0cشهریور\x06مهر\x08آبان\x06آذر\x04دی\x08بهمن\x0aاسفند\x02ا\x02خ\x02ت" + - "\x02ش\x02آ\x02د\x02ب\x11هجری شمسی\x09ه\u200d.ش.\x08دوره\x06سال\x11سال گذ" + - "شته\x0aامسال\x11سال آینده\x11{0} سال بعد\x11{0} سال پیش\x0fسه\u200cماهه" + - "\x1cسه\u200cماههٔ گذشته\x1cسه\u200cماههٔ کنونی\x1cسه\u200cماههٔ آینده" + - "\x1c{0} سه\u200cماههٔ بعد\x1c{0} سه\u200cماههٔ پیش\x06ماه\x11ماه گذشته" + - "\x0dاین ماه\x11ماه آینده\x11{0} ماه بعد\x11{0} ماه پیش\x0dماه پیش\x08هفت" + - "ه\x15هفتهٔ گذشته\x0fاین هفته\x15هفتهٔ آینده\x13{0} هفته بعد\x13{0} هفته" + - " پیش\x0eهفتهٔ {0}\x06روز\x0cپریروز\x0aدیروز\x0aامروز\x08فردا\x0fپس\u200c" + - "فردا\x11{0} روز بعد\x11{0} روز پیش\x0fروز هفته\x19یکشنبهٔ گذشته\x13این " + - "یکشنبه\x19یکشنبهٔ آینده\x19{0} یکشنبهٔ بعد\x19{0} یکشنبهٔ پیش\x19دوشنبه" + - "ٔ گذشته\x13این دوشنبه\x19دوشنبهٔ آینده\x19{0} دوشنبهٔ بعد\x19{0} دوشنبه" + - "ٔ پیش\x1cسه\u200cشنبهٔ گذشته\x16این سه\u200cشنبه\x1cسه\u200cشنبهٔ آینده" + - "\x1c{0} سه\u200cشنبهٔ بعد\x1c{0} سه\u200cشنبهٔ پیش\x1dچهارشنبهٔ گذشته" + - "\x17این چهارشنبه\x1dچهارشنبهٔ آینده\x1d{0} چهارشنبهٔ بعد\x1d{0} چهارشنبه" + - "ٔ پیش\x1bپنجشنبهٔ گذشته\x15این پنجشنبه\x1bپنجشنبهٔ آینده\x1b{0} پنجشنبه" + - "ٔ بعد\x1b{0} پنجشنبهٔ پیش\x15جمعهٔ گذشته\x0fاین جمعه\x15جمعهٔ آینده\x15" + - "{0} جمعهٔ بعد\x15{0} جمعهٔ پیش\x15شنبهٔ گذشته\x0fاین شنبه\x15شنبهٔ آینده" + - "\x15{0} شنبهٔ بعد\x15{0} شنبهٔ پیش\x17قبل/بعدازظهر\x08ساعت\x11همین ساعت" + - "\x13{0} ساعت بعد\x13{0} ساعت پیش\x0aدقیقه\x13همین دقیقه\x15{0} دقیقه بعد" + - "\x15{0} دقیقه پیش\x0aثانیه\x0aاکنون\x15{0} ثانیه بعد\x15{0} ثانیه پیش" + - "\x17منطقهٔ زمانی\x0aوقت {0}\x1bوقت تابستانی {0}\x13وقت عادی {0} زمان هما" + - "هنگ جهانی(وقت تابستانی بریتانیا\x1cوقت عادی ایرلند\x19وقت افغانستان\x1c" + - "وقت مرکز افریقا\x1aوقت شرق افریقا%وقت عادی جنوب افریقا\x1aوقت غرب افریق" + - "ا#وقت عادی غرب افریقا+وقت تابستانی غرب افریقا\x13وقت آلاسکا\x1cوقت عادی" + - " آلاسکا$وقت تابستانی آلاسکا\x15وقت آلماآتا\x1eوقت عادی آلماآتا&وقت تابست" + - "انی آلماآتا\x13وقت آمازون\x1cوقت عادی آمازون$وقت تابستانی آمازون\x1cوقت" + - " مرکز امریکا%وقت عادی مرکز امریکا-وقت تابستانی مرکز امریکا\x1aوقت شرق ام" + - "ریکا#وقت عادی شرق امریکا+وقت تابستانی شرق امریکا$وقت کوهستانی امریکا-وق" + - "ت عادی کوهستانی امریکا5وقت تابستانی کوهستانی امریکا\x1aوقت غرب امریکا#و" + - "قت عادی غرب امریکا+وقت تابستانی غرب امریکا\x13وقت آنادیر\x1cوقت عادی آن" + - "ادیر$وقت تابستانی آنادیر\x0fوقت آپیا\x18وقت عادی آپیا وقت تابستانی آپیا" + - "\x15وقت عربستان\x1eوقت عادی عربستان&وقت تابستانی عربستان\x17وقت آرژانتین" + - " وقت عادی آرژانتین(وقت تابستانی آرژانتین\x1eوقت غرب آرژانتین'وقت عادی غر" + - "ب آرژانتین/وقت تابستانی غرب آرژانتین\x17وقت ارمنستان وقت عادی ارمنستان(" + - "وقت تابستانی ارمنستان\x17وقت آتلانتیک وقت عادی آتلانتیک(وقت تابستانی آت" + - "لانتیک وقت مرکز استرالیا)وقت عادی مرکز استرالیا1وقت تابستانی مرکز استرا" + - "لیا'وقت مرکز-غرب استرالیا0وقت عادی مرکز-غرب استرالیا8وقت تابستانی مرکز-" + - "غرب استرالیا\x1eوقت شرق استرالیا'وقت عادی شرق استرالیا/وقت تابستانی شرق" + - " استرالیا\x1eوقت غرب استرالیا'وقت عادی غرب استرالیا/وقت تابستانی غرب است" + - "رالیا&وقت جمهوری آذربایجان/وقت عادی جمهوری آذربایجان7وقت تابستانی جمهور" + - "ی آذربایجان\x0fوقت آزور\x18وقت عادی آزور وقت تابستانی آزور\x15وقت بنگلا" + - "دش\x1eوقت عادی بنگلادش&وقت تابستانی بنگلادش\x11وقت بوتان\x13وقت بولیوی" + - "\x17وقت برازیلیا وقت عادی برازیلیا(وقت تابستانی برازیلیا&وقت برونئی دارا" + - "لسلام\x16وقت کیپ\u200cورد\x1fوقت عادی کیپ\u200cورد'وقت تابستانی کیپ" + - "\u200cورد\x1cوقت عادی چامورو\x14وقت چت\u200cهام\x1dوقت عادی چت\u200cهام%" + - "وقت تابستانی چت\u200cهام\x0fوقت شیلی\x18وقت عادی شیلی وقت تابستانی شیلی" + - "\x0dوقت چین\x16وقت عادی چین\x1eوقت تابستانی چین\x19وقت چویبالسان\x22وقت " + - "عادی چویبالسان*وقت تابستانی چویبالسان وقت جزیرهٔ کریسمس\x1cوقت جزایر کو" + - "کوس\x13وقت کلمبیا\x1cوقت عادی کلمبیا$وقت تابستانی کلمبیا\x18وقت جزایر ک" + - "وک!وقت عادی جزایر کوک)وقت تابستانی جزایر کوک\x0fوقت کوبا\x18وقت عادی کو" + - "با وقت تابستانی کوبا\x11وقت دیویس\x1eوقت دومون دورویل\x1aوقت تیمور شرقی" + - "\x1eوقت جزیرهٔ ایستر'وقت عادی جزیرهٔ ایستر/وقت تابستانی جزیرهٔ ایستر\x15" + - "وقت اکوادور\x1aوقت مرکز اروپا#وقت عادی مرکز اروپا+وقت تابستانی مرکز ارو" + - "پا\x18وقت شرق اروپا!وقت عادی شرق اروپا)وقت تابستانی شرق اروپاDوقت تابست" + - "انی مکان\u200cهای دیگر شرق اروپا\x18وقت غرب اروپا!وقت عادی غرب اروپا)وق" + - "ت تابستانی غرب اروپا وقت جزایر فالکلند)وقت عادی جزایر فالکلند1وقت تابست" + - "انی جزایر فالکلند\x0fوقت فیجی\x18وقت عادی فیجی وقت تابستانی فیجی\x1eوقت" + - " گویان فرانسهFوقت سرزمین\u200cهای جنوبی و جنوبگان فرانسه\x19وقت گالاپاگو" + - "س\x13وقت گامبیه\x15وقت گرجستان\x1eوقت عادی گرجستان&وقت تابستانی گرجستان" + - "\x1eوقت جزایر گیلبرت\x15وقت گرینویچ\x1cوقت شرق گرینلند%وقت عادی شرق گرین" + - "لند-وقت تابستانی شرق گرینلند\x1cوقت غرب گرینلند%وقت عادی غرب گرینلند-وق" + - "ت تابستانی غرب گرینلند\x18وقت عادی گوام!وقت عادی خلیج فارس\x11وقت گویان" + - " وقت هاوایی‐الوشن)وقت عادی هاوایی‐الوشن1وقت تابستانی هاوایی‐الوشن\x16وقت" + - " هنگ\u200cکنگ\x1fوقت عادی هنگ\u200cکنگ'وقت تابستانی هنگ\u200cکنگ\x0fوقت " + - "خوود\x18وقت عادی خوود وقت تابستانی خوود\x0dوقت هند\x1cوقت اقیانوس هند" + - "\x15وقت هندوچین\x1eوقت مرکز اندونزی\x1cوقت شرق اندونزی\x1cوقت غرب اندونز" + - "ی\x11وقت ایران\x1aوقت عادی ایران\x22وقت تابستانی ایران\x17وقت ایرکوتسک " + - "وقت عادی ایرکوتسک(وقت تابستانی ایرکوتسک\x15وقت اسرائیل\x1eوقت عادی اسرا" + - "ئیل&وقت تابستانی اسرائیل\x0fوقت ژاپن\x18وقت عادی ژاپن وقت تابستانی ژاپن" + - "2وقت پتروپاولوسک‐کامچاتسکی;وقت عادی پتروپاولوسک‐کامچاتسکیCوقت تابستانی پ" + - "تروپاولوسک‐کامچاتسکی\x1eوقت شرق قزاقستان\x1eوقت غرب قزاقستان\x0dوقت کره" + - "\x16وقت عادی کره\x1eوقت تابستانی کره\x13وقت کوسرای\x1dوقت کراسنویارسک&وق" + - "ت عادی کراسنویارسک.وقت تابستانی کراسنویارسک\x19وقت قرقیزستان\x11وقت لان" + - "کا\x1aوقت جزایر لاین\x11وقت لردهو\x1aوقت عادی لردهو\x22وقت تابستانی لرد" + - "هو\x13وقت ماکائو\x1cوقت عادی ماکائو$وقت تابستانی ماکائو وقت جزیرهٔ مکوا" + - "ری\x15وقت ماگادان\x1eوقت عادی ماگادان&وقت تابستانی ماگادان\x11وقت مالزی" + - "\x13وقت مالدیو\x15وقت مارکوئز\x1eوقت جزایر مارشال\x11وقت موریس\x1aوقت عا" + - "دی موریس\x22وقت تابستانی موریس\x13وقت ماوسون!وقت شمال غرب مکزیک*وقت عاد" + - "ی شمال غرب مکزیک2وقت تابستانی شمال غرب مکزیک\x18وقت شرق مکزیک!وقت عادی " + - "شرق مکزیک)وقت تابستانی شرق مکزیک\x1eوقت اولان\u200cباتور'وقت عادی اولان" + - "\u200cباتور/وقت تابستانی اولان\u200cباتور\x0fوقت مسکو\x18وقت عادی مسکو و" + - "قت تابستانی مسکو\x15وقت میانمار\x13وقت نائورو\x0fوقت نپال\x22وقت کالدون" + - "یای جدید+وقت عادی کالدونیای جدید3وقت تابستانی کالدونیای جدید\x16وقت زلا" + - "ند نو\x1fوقت عادی زلاند نو'وقت تابستانی زلاند نو\x1bوقت نیوفاندلند$وقت " + - "عادی نیوفاندلند,وقت تابستانی نیوفاندلند\x11وقت نیوئه وقت جزایر نورفولک)" + - "وقت فرناندو دی نورونیا2وقت عادی فرناندو دی نورونیا:وقت تابستانی فرناندو" + - " دی نورونیا-وقت جزایر ماریانای شمالی\x1bوقت نووسیبیرسک$وقت عادی نووسیبیر" + - "سک,وقت تابستانی نووسیبیرسک\x11وقت اومسک\x1aوقت عادی اومسک\x22وقت تابستا" + - "نی اومسک\x15وقت پاکستان\x1eوقت عادی پاکستان&وقت تابستانی پاکستان\x13وقت" + - " پالائو!وقت پاپوا گینهٔ نو\x17وقت پاراگوئه وقت عادی پاراگوئه(وقت تابستان" + - "ی پاراگوئه\x0dوقت پرو\x16وقت عادی پرو\x1eوقت تابستانی پرو\x15وقت فیلیپی" + - "ن\x1eوقت عادی فیلیپین&وقت تابستانی فیلیپین\x1eوقت جزایر فونیکس&وقت سنت" + - "\u200cپیر و میکلون/وقت عادی سنت\u200cپیر و میکلون7وقت تابستانی سنت\u200c" + - "پیر و میکلون\x17وقت پیتکایرن\x13وقت پوناپه\x1cوقت پیونگ\u200cیانگ\x1eوق" + - "ت قیزیل\u200cاوردا'وقت عادی قیزیل\u200cاوردا/وقت تابستانی قیزیل\u200cاو" + - "ردا\x15وقت ریونیون\x11وقت روترا\x15وقت ساخالین\x1eوقت عادی ساخالین&وقت " + - "تابستانی ساخالین\x13وقت سامارا\x1cوقت عادی سامارا$وقت تابستانی سامارا" + - "\x11وقت ساموا\x1aوقت عادی ساموا\x22وقت تابستانی ساموا\x0fوقت سیشل\x15وقت" + - " سنگاپور\x1eوقت جزایر سلیمان وقت جورجیای جنوبی\x15وقت سورینام\x0fوقت شوو" + - "ا\x13وقت تاهیتی\x11وقت تایپه\x1aوقت عادی تایپه\x22وقت تابستانی تایپه" + - "\x19وقت تاجیکستان\x15وقت توکلائو\x11وقت تونگا\x1aوقت عادی تونگا\x22وقت ت" + - "ابستانی تونگا\x11وقت چوئوک\x19وقت ترکمنستان\x22وقت عادی ترکمنستان*وقت ت" + - "ابستانی ترکمنستان\x13وقت تووالو\x15وقت اروگوئه\x1eوقت عادی اروگوئه&وقت " + - "تابستانی اروگوئه\x17وقت ازبکستان وقت عادی ازبکستان(وقت تابستانی ازبکستا" + - "ن\x13وقت واناتو\x1cوقت عادی واناتو$وقت تابستانی واناتو\x15وقت ونزوئلا" + - "\x1eوقت ولادی\u200cوستوک'وقت عادی ولادی\u200cوستوک/وقت تابستانی ولادی" + - "\u200cوستوک\x17وقت ولگاگراد وقت عادی ولگاگراد(وقت تابستانی ولگاگراد\x11و" + - "قت وستوک\x1aوقت جزیرهٔ ویک!وقت والیس و فوتونا\x15وقت یاکوتسک\x1eوقت عاد" + - "ی یاکوتسک&وقت تابستانی یاکوتسک\x1dوقت یکاترینبورگ&وقت عادی یکاترینبورگ." + - "وقت تابستانی یکاترینبورگ\x02س\x02ن\x04lǝn\x03maa\x04mɛk\x05jǝǝ\x04júm" + - "\x03sam\x08مارس\x0cاَمروز\x0aفِردا\x03mbs\x03sas\x09mɔ́ndɔ\x15sɔ́ndɔ maf" + - "ú mába\x16sɔ́ndɔ mafú málal\x15sɔ́ndɔ mafú mána\x12mabágá má sukul\x07s" + - "ásadi\x03م." - -var bucket34 string = "" + // Size: 12633 bytes - "\x0aجنوری\x0cفبروری\x08مارچ\x0aاپریل\x04می\x06جون\x0aجولای\x08اگست\x0cسپ" + - "تمبر\x0cاکتوبر\x0aنومبر\x0aدسمبر\x04ر۱\x04ر۲\x04ر۳\x04ر۴\x0dربع اول\x0d" + - "ربع دوم\x0dربع سوم\x11ربع چهارم\x14بعد از چاشت\x06شام\x06حمل\x06ثور\x08" + - "جوزا\x0aسرطان\x06اسد\x0cسنبلهٔ\x0aمیزان\x08عقرب\x06قوس\x06جدی\x06دلو" + - "\x06حوت\x03sii\x03col\x03mbo\x03see\x03duu\x03kor\x03mor\x03juk\x03slt" + - "\x03yar\x03jol\x03bow\x05siilo\x05colte\x05mbooy\x07seeɗto\x06duujal\x05" + - "korse\x05morso\x04juko\x06siilto\x08yarkomaa\x05jolal\x05bowte\x03dew" + - "\x04aaɓ\x03maw\x03nje\x03naa\x03mwd\x03hbi\x04dewo\x07aaɓnde\x08mawbaare" + - "\x09njeslaare\x09naasaande\x06mawnde\x0ahoore-biir\x08Termes 1\x08Termes" + - " 2\x08Termes 3\x08Termes 4\x06subaka\x08kikiiɗe\x09Hade Iisa\x0bCaggal I" + - "isa\x03H-I\x03C-I\x07Jamaanu\x08Hitaande\x05Lewru\x07Yontere\x07Ñalnde" + - "\x06Haŋki\x06Hannde\x07Jaŋngo\x0fÑalɗi yontere\x06Sahnga\x05Waktu\x06Hoƴ" + - "om\x08Majaango\x0dDiiwaan waktu\x10cccc d. MMMM y G\x0acccc d.M.y\x0d{1}" + - " 'klo' {0}\x07tammik.\x07helmik.\x08maalisk.\x07huhtik.\x07toukok.\x07ke" + - "säk.\x08heinäk.\x05elok.\x06syysk.\x06lokak.\x08marrask.\x07jouluk.\x0at" + - "ammikuuta\x0ahelmikuuta\x0bmaaliskuuta\x0ahuhtikuuta\x0atoukokuuta\x0ake" + - "säkuuta\x0bheinäkuuta\x08elokuuta\x09syyskuuta\x09lokakuuta\x0bmarraskuu" + - "ta\x0ajoulukuuta\x05tammi\x05helmi\x06maalis\x05huhti\x05touko\x05kesä" + - "\x06heinä\x03elo\x04syys\x04loka\x06marras\x05joulu\x08tammikuu\x08helmi" + - "kuu\x09maaliskuu\x08huhtikuu\x08toukokuu\x08kesäkuu\x09heinäkuu\x06eloku" + - "u\x07syyskuu\x07lokakuu\x09marraskuu\x08joulukuu\x02su\x02ma\x02ti\x02ke" + - "\x02to\x02pe\x02la\x0bsunnuntaina\x0bmaanantaina\x09tiistaina\x0dkeskivi" + - "ikkona\x09torstaina\x0bperjantaina\x0alauantaina\x09sunnuntai\x09maanant" + - "ai\x07tiistai\x0bkeskiviikko\x07torstai\x09perjantai\x08lauantai\x081. n" + - "elj.\x082. nelj.\x083. nelj.\x084. nelj.\x0d1. neljännes\x0d2. neljännes" + - "\x0d3. neljännes\x0d4. neljännes\x0ckeskiyöllä\x03ap.\x07keskip.\x03ip." + - "\x07aamulla\x06aamup.\x06iltap.\x07illalla\x07yöllä\x03ky.\x03kp.\x10kes" + - "kipäivällä\x0faamupäivällä\x0filtapäivällä\x08keskiyö\x04aamu\x04ilta" + - "\x03yö\x0ckeskipäivä\x0baamupäivä\x0biltapäivä\x1bennen Kristuksen synty" + - "mää\x16ennen ajanlaskun alkua\x1djälkeen Kristuksen syntymän\x18jälkeen " + - "ajanlaskun alun\x04eKr.\x04eaa.\x04jKr.\x04jaa.\x03eaa\x03jaa\x0ecccc d." + - " MMMM y\x0ctišríkuuta\x0dhešvánkuuta\x0ckislévkuuta\x0btevétkuuta\x0cšev" + - "átkuuta\x0cadárkuuta I\x0aadárkuuta\x0dadárkuuta II\x0bnisánkuuta\x0bij" + - "járkuuta\x0bsivánkuuta\x0ctammúzkuuta\x07abkuuta\x0aelúlkuuta\x07tišrí" + - "\x08hešván\x07kislév\x06tevét\x07ševát\x07adár I\x05adár\x08adár II\x06n" + - "isán\x06ijjár\x06siván\x07tammúz\x02ab\x05elúl\x0atišríkuu\x0bhešvánkuu" + - "\x0akislévkuu\x09tevétkuu\x0aševátkuu\x0aadárkuu I\x08adárkuu\x0badárkuu" + - " II\x09nisánkuu\x09ijjárkuu\x09sivánkuu\x0atammúzkuu\x05abkuu\x08elúlkuu" + - "\x08muharram\x05safar\x10rabi’ al-awwal\x10rabi’ al-akhir\x0edžumada-l-u" + - "la\x11džumada-l-akhira\x07radžab\x09ša’ban\x07ramadan\x07šawwal\x0ddhu-l" + - "-qa’da\x0ddhu-l-hiddža\x09aikakausi\x05vuosi\x0cviime vuonna\x0dtänä vuo" + - "nna\x0bensi vuonna\x14{0} vuoden päästä\x10{0} vuosi sitten\x11{0} vuott" + - "a sitten\x07viime v\x08tänä v\x06ensi v\x0f{0} v päästä\x0c{0} v sitten" + - "\x0fneljännesvuosi\x16viime neljännesvuonna\x17tänä neljännesvuonna\x15e" + - "nsi neljännesvuonna\x1e{0} neljännesvuoden päästä\x1a{0} neljännesvuosi " + - "sitten\x1b{0} neljännesvuotta sitten\x0aneljännes\x15viime neljänneksenä" + - "\x16tänä neljänneksenä\x14ensi neljänneksenä\x1b{0} neljänneksen päästä" + - "\x15{0} neljännes sitten\x18{0} neljännestä sitten\x05nelj.\x0bviime nel" + - "j.\x0ctänä nelj.\x0aensi nelj.\x13{0} nelj. päästä\x10{0} nelj. sitten" + - "\x08kuukausi\x0cviime kuussa\x0etässä kuussa\x0bensi kuussa\x17{0} kuuka" + - "uden päästä\x13{0} kuukausi sitten\x14{0} kuukautta sitten\x02kk\x08viim" + - "e kk\x0atässä kk\x07ensi kk\x10{0} kk päästä\x0d{0} kk sitten\x06viikko" + - "\x0eviime viikolla\x10tällä viikolla\x0densi viikolla\x14{0} viikon pääs" + - "tä\x11{0} viikko sitten\x12{0} viikkoa sitten\x15päivän {0} viikolla\x02" + - "vk\x08viime vk\x0atällä vk\x07ensi vk\x10{0} vk päästä\x0d{0} vk sitten" + - "\x07päivä\x11toissa päivänä\x05eilen\x09tänään\x08huomenna\x0bylihuomenn" + - "a\x16{0} päivän päästä\x12{0} päivä sitten\x14{0} päivää sitten\x02pv" + - "\x08toissap.\x05huom.\x08ylihuom.\x10{0} pv päästä\x0d{0} pv sitten\x0dv" + - "iikonpäivä\x11viime sunnuntaina\x12tänä sunnuntaina\x10ensi sunnuntaina" + - "\x18{0} sunnuntain päästä\x14{0} sunnuntai sitten\x16{0} sunnuntaita sit" + - "ten\x08viime su\x09tänä su\x07ensi su\x10{0} su päästä\x0d{0} su sitten" + - "\x11viime maanantaina\x12tänä maanantaina\x10ensi maanantaina\x18{0} maa" + - "nantain päästä\x14{0} maanantai sitten\x16{0} maanantaita sitten\x08viim" + - "e ma\x09tänä ma\x07ensi ma\x10{0} ma päästä\x0d{0} ma sitten\x0fviime ti" + - "istaina\x10tänä tiistaina\x0eensi tiistaina\x16{0} tiistain päästä\x12{0" + - "} tiistai sitten\x14{0} tiistaita sitten\x08viime ti\x09tänä ti\x07ensi " + - "ti\x10{0} ti päästä\x0d{0} ti sitten\x13viime keskiviikkona\x14tänä kesk" + - "iviikkona\x12ensi keskiviikkona\x19{0} keskiviikon päästä\x16{0} keskivi" + - "ikko sitten\x17{0} keskiviikkoa sitten\x08viime ke\x09tänä ke\x07ensi ke" + - "\x10{0} ke päästä\x0d{0} ke sitten\x0fviime torstaina\x10tänä torstaina" + - "\x0eensi torstaina\x16{0} torstain päästä\x12{0} torstai sitten\x14{0} t" + - "orstaita sitten\x08viime to\x09tänä to\x07ensi to\x10{0} to päästä\x0d{0" + - "} to sitten\x11viime perjantaina\x12tänä perjantaina\x10ensi perjantaina" + - "\x18{0} perjantain päästä\x14{0} perjantai sitten\x16{0} perjantaita sit" + - "ten\x08viime pe\x09tänä pe\x07ensi pe\x10{0} pe päästä\x0d{0} pe sitten" + - "\x10viime lauantaina\x11tänä lauantaina\x0fensi lauantaina\x17{0} lauant" + - "ain päästä\x13{0} lauantai sitten\x15{0} lauantaita sitten\x08viime la" + - "\x09tänä la\x07ensi la\x10{0} la päästä\x0d{0} la sitten\x0fvuorokaudena" + - "ika\x05tunti\x15tämän tunnin aikana\x14{0} tunnin päästä\x10{0} tunti si" + - "tten\x11{0} tuntia sitten\x10tunnin sisällä\x0f{0} t päästä\x0c{0} t sit" + - "ten\x08minuutti\x17tämän minuutin aikana\x16{0} minuutin päästä\x13{0} m" + - "inuutti sitten\x14{0} minuuttia sitten\x12minuutin sisällä\x11{0} min pä" + - "ästä\x0e{0} min sitten\x07sekunti\x03nyt\x16{0} sekunnin päästä\x12{0} " + - "sekunti sitten\x13{0} sekuntia sitten\x0f{0} s päästä\x0c{0} s sitten" + - "\x0caikavyöhyke\x0b+H.mm;-H.mm\x06UTC{0}\x03UTC\x11aikavyöhyke: {0}\x0f{" + - "0} (kesäaika)\x12{0} (normaaliaika)\x12Asetettu yleisaika\x14Britannian " + - "kesäaika\x12Irlannin kesäaika\x0aAcren aika\x12Acren normaaliaika\x0fAcr" + - "en kesäaika\x11Afganistanin aika\x12Keski-Afrikan aika\x11Itä-Afrikan ai" + - "ka\x13Etelä-Afrikan aika\x13Länsi-Afrikan aika\x1bLänsi-Afrikan normaali" + - "aika\x18Länsi-Afrikan kesäaika\x0cAlaskan aika\x14Alaskan normaaliaika" + - "\x11Alaskan kesäaika\x0cAlmatyn aika\x14Almatyn normaaliaika\x11Almatyn " + - "kesäaika\x0dAmazonin aika\x15Amazonin normaaliaika\x12Amazonin kesäaika" + - "\x1aYhdysvaltain keskinen aika\x22Yhdysvaltain keskinen normaaliaika\x1f" + - "Yhdysvaltain keskinen kesäaika\x1aYhdysvaltain itäinen aika\x22Yhdysvalt" + - "ain itäinen normaaliaika\x1fYhdysvaltain itäinen kesäaika\x12Kalliovuort" + - "en aika\x1aKalliovuorten normaaliaika\x17Kalliovuorten kesäaika\x1dYhdys" + - "valtain Tyynenmeren aika%Yhdysvaltain Tyynenmeren normaaliaika\x22Yhdysv" + - "altain Tyynenmeren kesäaika\x0dAnadyrin aika\x15Anadyrin normaaliaika" + - "\x12Anadyrin kesäaika\x0aApian aika\x12Apian normaaliaika\x0fApian kesäa" + - "ika\x0eAqtaw’n aika\x16Aqtaw’n normaaliaika\x13Aqtaw’n kesäaika\x0dAqtöb" + - "en aika\x15Aqtöben normaaliaika\x12Aqtöben kesäaika\x12Saudi-Arabian aik" + - "a\x1aSaudi-Arabian normaaliaika\x17Saudi-Arabian kesäaika\x10Argentiinan" + - " aika\x18Argentiinan normaaliaika\x15Argentiinan kesäaika\x17Länsi-Argen" + - "tiinan aika\x1fLänsi-Argentiinan normaaliaika\x1cLänsi-Argentiinan kesäa" + - "ika\x0dArmenian aika\x15Armenian normaaliaika\x12Armenian kesäaika\x15Ka" + - "nadan Atlantin aika\x1dKanadan Atlantin normaaliaika\x1aKanadan Atlantin" + - " kesäaika\x15Keski-Australian aika\x1dKeski-Australian normaaliaika\x1aK" + - "eski-Australian kesäaika\x1fLäntisen Keski-Australian aika'Läntisen Kesk" + - "i-Australian normaaliaika$Läntisen Keski-Australian kesäaika\x14Itä-Aust" + - "ralian aika\x1cItä-Australian normaaliaika\x19Itä-Australian kesäaika" + - "\x16Länsi-Australian aika\x1eLänsi-Australian normaaliaika\x1bLänsi-Aust" + - "ralian kesäaika\x13Azerbaidžanin aika\x1bAzerbaidžanin normaaliaika\x18A" + - "zerbaidžanin kesäaika\x0cAzorien aika\x14Azorien normaaliaika\x11Azorien" + - " kesäaika\x11Bangladeshin aika\x19Bangladeshin normaaliaika\x16Banglades" + - "hin kesäaika\x0dBhutanin aika\x0dBolivian aika\x0eBrasilian aika\x16Bras" + - "ilian normaaliaika\x13Brasilian kesäaika\x0cBrunein aika\x0fKap Verden a" + - "ika\x17Kap Verden normaaliaika\x14Kap Verden kesäaika\x0bCaseyn aika\x0f" + - "Tšamorron aika\x0eChathamin aika\x16Chathamin normaaliaika\x13Chathamin " + - "kesäaika\x0bChilen aika\x13Chilen normaaliaika\x10Chilen kesäaika\x0bKii" + - "nan aika\x13Kiinan normaaliaika\x10Kiinan kesäaika\x10Tšoibalsan aika" + - "\x18Tšoibalsan normaaliaika\x15Tšoibalsan kesäaika\x10Joulusaaren aika" + - "\x12Kookossaarten aika\x0eKolumbian aika\x16Kolumbian normaaliaika\x13Ko" + - "lumbian kesäaika\x12Cookinsaarten aika\x1aCookinsaarten normaaliaika\x17" + - "Cookinsaarten kesäaika\x0bKuuban aika\x13Kuuban normaaliaika\x10Kuuban k" + - "esäaika\x0cDavisin aika\x18Dumont-d’Urvillen aika\x11Itä-Timorin aika" + - "\x16Pääsiäissaaren aika\x1ePääsiäissaaren normaaliaika\x1bPääsiäissaaren" + - " kesäaika\x0eEcuadorin aika\x13Keski-Euroopan aika\x1bKeski-Euroopan nor" + - "maaliaika\x18Keski-Euroopan kesäaika\x12Itä-Euroopan aika\x1aItä-Euroopa" + - "n normaaliaika\x17Itä-Euroopan kesäaika\x1aItäisemmän Euroopan aika\x14L" + - "änsi-Euroopan aika\x1cLänsi-Euroopan normaaliaika\x19Länsi-Euroopan kes" + - "äaika\x16Falklandinsaarten aika\x1eFalklandinsaarten normaaliaika\x1bFa" + - "lklandinsaarten kesäaika\x0cFidžin aika\x14Fidžin normaaliaika\x11Fidžin" + - " kesäaika\x15Ranskan Guayanan aika1Ranskan eteläisten ja antarktisten al" + - "ueiden aika\x16Galápagossaarten aika\x0eGambierin aika\x0dGeorgian aika" + - "\x15Georgian normaaliaika\x12Georgian kesäaika\x13Gilbertsaarten aika" + - "\x18Greenwichin normaaliaika\x15Itä-Grönlannin aika\x1dItä-Grönlannin no" + - "rmaaliaika\x1aItä-Grönlannin kesäaika\x17Länsi-Grönlannin aika\x1fLänsi-" + - "Grönlannin normaaliaika\x1cLänsi-Grönlannin kesäaika\x0bGuamin aika\x1fA" + - "rabiemiirikuntien normaaliaika\x0cGuyanan aika\x17Havaijin-Aleuttien aik" + - "a\x1fHavaijin-Aleuttien normaaliaika\x1cHavaijin-Aleuttien kesäaika\x0fH" + - "ongkongin aika\x17Hongkongin normaaliaika\x14Hongkongin kesäaika\x0bHovd" + - "in aika\x13Hovdin normaaliaika\x10Hovdin kesäaika\x0bIntian aika\x16Inti" + - "an valtameren aika\x0fIndokiinan aika\x15Keski-Indonesian aika\x14Itä-In" + - "donesian aika\x16Länsi-Indonesian aika\x0bIranin aika\x13Iranin normaali" + - "aika\x10Iranin kesäaika\x0eIrkutskin aika\x16Irkutskin normaaliaika\x13I" + - "rkutskin kesäaika\x0dIsraelin aika\x15Israelin normaaliaika\x12Israelin " + - "kesäaika\x0cJapanin aika\x14Japanin normaaliaika\x11Japanin kesäaika\x10" + - "Kamtšatkan aika\x18Kamtšatkan normaaliaika\x15Kamtšatkan kesäaika\x15Itä" + - "-Kazakstanin aika\x17Länsi-Kazakstanin aika\x0bKorean aika\x13Korean nor" + - "maaliaika\x10Korean kesäaika\x0cKosraen aika\x12Krasnojarskin aika\x1aKr" + - "asnojarskin normaaliaika\x17Krasnojarskin kesäaika\x0eKirgisian aika\x0f" + - "Sri Lankan aika\x10Linesaarten aika\x0fLord Howen aika\x17Lord Howen nor" + - "maaliaika\x14Lord Howen kesäaika\x0bMacaon aika\x13Macaon normaaliaika" + - "\x10Macaon kesäaika\x15Macquariensaaren aika\x0eMagadanin aika\x16Magada" + - "nin normaaliaika\x13Magadanin kesäaika\x0dMalesian aika\x10Malediivien a" + - "ika\x10Marquesasin aika\x16Marshallinsaarten aika\x11Mauritiuksen aika" + - "\x19Mauritiuksen normaaliaika\x16Mauritiuksen kesäaika\x0dMawsonin aika" + - "\x15Luoteis-Meksikon aika\x1dLuoteis-Meksikon normaaliaika\x1aLuoteis-Me" + - "ksikon kesäaika\x19Meksikon Tyynenmeren aika!Meksikon Tyynenmeren normaa" + - "liaika\x1eMeksikon Tyynenmeren kesäaika\x11Ulan Batorin aika\x19Ulan Bat" + - "orin normaaliaika\x16Ulan Batorin kesäaika\x0dMoskovan aika\x15Moskovan " + - "normaaliaika\x12Moskovan kesäaika\x0eMyanmarin aika\x0bNaurun aika\x0cNe" + - "palin aika\x15Uuden-Kaledonian aika\x1dUuden-Kaledonian normaaliaika\x1a" + - "Uuden-Kaledonian kesäaika\x14Uuden-Seelannin aika\x1cUuden-Seelannin nor" + - "maaliaika\x19Uuden-Seelannin kesäaika\x13Newfoundlandin aika\x1bNewfound" + - "landin normaaliaika\x18Newfoundlandin kesäaika\x0aNiuen aika\x15Norfolki" + - "nsaarten aika\x19Fernando de Noronhan aika!Fernando de Noronhan normaali" + - "aika\x1eFernando de Noronhan kesäaika\x17Pohjois-Mariaanien aika\x12Novo" + - "sibirskin aika\x1aNovosibirskin normaaliaika\x17Novosibirskin kesäaika" + - "\x0bOmskin aika\x13Omskin normaaliaika\x10Omskin kesäaika\x0fPakistanin " + - "aika\x17Pakistanin normaaliaika\x14Pakistanin kesäaika\x0bPalaun aika" + - "\x18Papua-Uuden-Guinean aika\x0eParaguayn aika\x16Paraguayn normaaliaika" + - "\x13Paraguayn kesäaika\x0aPerun aika\x12Perun normaaliaika\x0fPerun kesä" + - "aika\x11Filippiinien aika\x19Filippiinien normaaliaika\x16Filippiinien k" + - "esäaika\x13Phoenixsaarten aika Saint-Pierren ja Miquelonin aika(Saint-Pi" + - "erren ja Miquelonin normaaliaika%Saint-Pierren ja Miquelonin kesäaika" + - "\x0fPitcairnin aika\x0dPohnpein aika\x10Pjongjangin aika\x11Qızılordan a" + - "ika\x19Qızılordan normaaliaika\x16Qızılordan kesäaika\x0fRéunionin aika" + - "\x0dRotheran aika\x0eSahalinin aika\x16Sahalinin normaaliaika\x13Sahalin" + - "in kesäaika\x0cSamaran aika\x14Samaran normaaliaika\x11Samaran kesäaika" + - "\x0bSamoan aika\x13Samoan normaaliaika\x10Samoan kesäaika\x10Seychellien" + - " aika\x0fSingaporen aika\x13Salomonsaarten aika\x14Etelä-Georgian aika" + - "\x0eSurinamen aika\x0bSyowan aika\x0cTahitin aika\x0cTaipein aika\x14Tai" + - "pein normaaliaika\x11Taipein kesäaika\x13Tadžikistanin aika\x0dTokelaun " + - "aika\x0bTongan aika\x13Tongan normaaliaika\x10Tongan kesäaika\x0cChuukin" + - " aika\x13Turkmenistanin aika\x1bTurkmenistanin normaaliaika\x18Turkmenis" + - "tanin kesäaika\x0cTuvalun aika\x0dUruguayn aika\x15Uruguayn normaaliaika" + - "\x12Uruguayn kesäaika\x11Uzbekistanin aika\x19Uzbekistanin normaaliaika" + - "\x16Uzbekistanin kesäaika\x0dVanuatun aika\x15Vanuatun normaaliaika\x12V" + - "anuatun kesäaika\x0fVenezuelan aika\x12Vladivostokin aika\x1aVladivostok" + - "in normaaliaika\x17Vladivostokin kesäaika\x10Volgogradin aika\x18Volgogr" + - "adin normaaliaika\x15Volgogradin kesäaika\x0dVostokin aika\x0aWaken aika" + - "\x18Wallisin ja Futunan aika\x0eJakutskin aika\x16Jakutskin normaaliaika" + - "\x13Jakutskin kesäaika\x14Jekaterinburgin aika\x1cJekaterinburgin normaa" + - "liaika\x19Jekaterinburgin kesäaika\x03má\x03tý\x02mi\x03hó\x02fr\x02le" + - "\x04pón\x03wut\x03srj\x04štw\x03pja\x03sob\x05safar\x08rabiʻ I\x09rabiʻ " + - "II\x08jumada I\x09jumada II\x05rajab\x08shaʻban\x07ramadan\x07shawwal" + - "\x0edhuʻl-qiʻdah\x0ddhuʻl-hijjah\x0aفروری\x0aاپریل\x04مئ\x0cجولائی\x08اگ" + - "ست\x0aستمبر\x0aنومبر\x0aدسمبر\x0cjumada-l-ula\x0fjumada-l-akhira\x09sha" + - "’ban\x0ddhu-l-ga’da\x0bdhu-l-hijja\x08مارچ\x0aاپریل\x06مئی\x06جون\x0cا" + - "کتوبر\x0aنومبر\x0aدسمبر\x04می\x06جون\x0aجولای\x0cسپتمبر" - -var bucket35 string = "" + // Size: 10851 bytes - "\x0e{1} 'nang' {0}\x03Ene\x03Peb\x03Mar\x03Abr\x03May\x03Hun\x03Hul\x03A" + - "go\x03Set\x03Okt\x03Nob\x03Dis\x03Lin\x03Lun\x03Miy\x03Huw\x03Biy\x03Sab" + - "\x02Li\x02Lu\x02Ma\x02Mi\x02Hu\x02Bi\x02Sa\x06Linggo\x05Lunes\x06Martes" + - "\x0aMiyerkules\x07Huwebes\x08Biyernes\x06Sabado\x0dika-1 quarter\x0dika-" + - "2 quarter\x0dika-3 quarter\x10ika-4 na quarter\x0ahatinggabi\x10tanghali" + - "ng-tapat\x0anang umaga\x0dmadaling-araw\x08tanghali\x08ng hapon\x04gabi" + - "\x05umaga\x07ng gabi\x05hapon\x07panahon\x04taon\x0enakaraang taon\x0cng" + - "ayong taon\x0fsusunod na taon\x0bsa {0} taon\x10sa {0} (na) taon\x16{0} " + - "taon ang nakalipas\x1b{0} (na) taon ang nakalipas\x11nakaraang quarter" + - "\x0fngayong quarter\x12susunod na quarter\x0esa {0} quarter\x13sa {0} (n" + - "a) quarter\x19{0} quarter ang nakalipas\x1e{0} (na) quarter ang nakalipa" + - "s\x05buwan\x0fnakaraang buwan\x0dngayong buwan\x10susunod na buwan\x0csa" + - " {0} buwan\x11sa {0} (na) buwan\x17{0} buwan ang nakalipas\x1c{0} (na) b" + - "uwan ang nakalipas\x06linggo\x13nakalipas na linggo\x0fsa linggong ito" + - "\x11susunod na linggo\x0dsa {0} linggo\x12sa {0} (na) linggo\x18{0} ling" + - "go ang nakalipas\x1d{0} (na) linggo ang nakalipas\x0dlinggo ng {0}\x10na" + - "karaang linggo\x0engayong linggo\x04araw\x15Araw bago ang kahapon\x07kah" + - "apon\x0cngayong araw\x05bukas\x0aSamakalawa\x0bsa {0} araw\x10sa {0} (na" + - ") araw\x16{0} araw ang nakalipas\x1b{0} (na) araw ang nakalipas\x0earaw " + - "ng linggo\x09sa Linggo\x11susunod na Linggo\x0dsa {0} Linggo\x12sa {0} (" + - "na) Linggo\x18{0} Linggo ang nakalipas\x1d{0} (na) Linggo ang nakalipas" + - "\x0enakaraang Lin.\x0cngayong Lin.\x0fsusunod na Lin.\x0fnakaraang Lunes" + - "\x0dngayong Lunes\x10susunod na Lunes\x0csa {0} Lunes\x11sa {0} (na) Lun" + - "es\x17{0} Lunes ang nakalipas\x1c{0} (na) Lunes ang nakalipas\x0enakaraa" + - "ng Lun.\x0cngayong Lun.\x0fsusunod na Lun.\x10nakaraang Martes\x0engayon" + - "g Martes\x11susunod na Martes\x0dsa {0} Martes\x12sa {0} (na) Martes\x18" + - "{0} Martes ang nakalipas\x1d{0} (na) Martes ang nakalipas\x0enakaraang M" + - "ar.\x0cngayong Mar.\x0fsusunod na Mar. sa {0} (na) Martes ang nakalipas" + - "\x14nakaraang Miyerkules\x12ngayong Miyerkules\x15susunod na Miyerkules" + - "\x11sa {0} Miyerkules\x16sa {0} (na) Miyerkules\x1c{0} Miyerkules ang na" + - "kalipas!{0} (na) Miyerkules ang nakalipas\x0enakaraang Miy.\x0cngayong M" + - "iy.\x0fsusunod na Miy.\x11nakaraang Huwebes\x0fngayong Huwebes\x12susuno" + - "d na Huwebes\x0esa {0} Huwebes\x13sa {0} (na) Huwebes\x19{0} Huwebes ang" + - " nakalipas\x1e{0} (na) Huwebes ang nakalipas\x0enakaraang Huw.\x0cngayon" + - "g Huw.\x0fsusunod na Huw.\x12nakaraang Biyernes\x10ngayong Biyernes\x13s" + - "usunod na Biyernes\x0fsa {0} Biyernes\x14sa {0} (na) Biyernes\x1a{0} Biy" + - "ernes ang nakalipas\x1f{0} (na) Biyernes ang nakalipas\x0enakaraang Biy." + - "\x0cngayong Biy.\x0fsusunod na Biy.\x10nakaraang Sabado\x0engayong Sabad" + - "o\x11susunod na Sabado\x0dsa {0} Sabado\x12sa {0} (na) Sabado\x18{0} Sab" + - "ado ang nakalipas\x1d{0} (na) Sabado ang nakalipas\x0enakaraang Sab.\x0c" + - "ngayong Sab.\x0fsusunod na Sab. sa {0} (na) Sabado ang nakalipas\x04oras" + - "\x0cngayong oras\x0bsa {0} oras\x10sa {0} (na) oras\x16{0} oras ang naka" + - "lipas\x1b{0} (na) oras ang nakalipas\x12{0} oras nakalipas\x17{0} (na) o" + - "ras nakalipas\x0fsa minutong ito\x0dsa {0} minuto\x12sa {0} (na) minuto" + - "\x18{0} minuto ang nakalipas\x1d{0} (na) minuto ang nakalipas\x0bsa {0} " + - "min.\x10sa {0} (na) min.\x16{0} min. ang nakalipas\x1b{0} (na) min. ang " + - "nakalipas\x06ngayon\x0esa {0} segundo\x13sa {0} (na) segundo\x19{0} segu" + - "ndo ang nakalipas\x1e{0} (na) segundo ang nakalipas\x0bsa {0} seg.\x10sa" + - " {0} (na) seg.\x16{0} seg. ang nakalipas\x17{0} (na) seg. nakalipas\x12{" + - "0} seg. nakalipas\x1bOras sa Tag-init ng Britain\x1bStandard na Oras sa " + - "Ireland\x13Oras sa Afghanistan\x16Oras sa Gitnang Africa\x18Oras sa Sila" + - "ngang Africa\x14Oras sa Timog Africa\x18Oras sa Kanlurang Africa$Standar" + - "d na Oras sa Kanlurang Africa$Oras sa Tag-init ng Kanlurang Africa\x0eOr" + - "as sa Alaska\x1aStandard na Oras sa Alaska\x17Daylight Time sa Alaska" + - "\x0eOras sa Amazon\x1aStandard na Oras sa Amazon\x1aOras sa Tag-init ng " + - "Amazon\x0fSentral na Oras\x1aSentral na Karaniwang Oras\x18Sentral na Da" + - "ylight Time\x0cEastern Time\x1bEastern na Standard na Oras\x15Eastern Da" + - "ylight Time\x0eOras sa Bundok\x19Karaniwang Oras sa Bundok\x17Daylight T" + - "ime sa Bundok\x10Oras sa Pasipiko\x1cStandard na Oras sa Pasipiko\x19Day" + - "light Time sa Pasipiko\x0eOras sa Anadyr\x17Standard Time sa Anadyr\x15S" + - "ummer Time sa Anadyr\x0cOras sa Apia\x18Standard na Oras sa Apia\x12Apia" + - " Daylight Time\x0eOras sa Arabia\x1aStandard na Oras sa Arabia\x17Daylig" + - "ht Time sa Arabia\x11Oras sa Argentina\x1dStandard na Oras sa Argentina" + - "\x1dOras sa Tag-init ng Argentina\x1bOras sa Kanlurang Argentina'Standar" + - "d na Oras sa Kanlurang Argentina'Oras sa Tag-init ng Kanlurang Argentina" + - "\x0fOras sa Armenia\x1bStandard na Oras sa Armenia\x1bOras sa Tag-init n" + - "g Armenia\x11Oras sa Atlantiko\x1dStandard na Oras sa Atlantiko\x1aDayli" + - "ght Time sa Atlantiko\x19Oras ng Gitnang Australya\x22Standard Time ng G" + - "itnang Australya\x22Daylight Time ng Gitnang Australya%Oras ng Gitnang K" + - "anluran ng Australya.Standard Time ng Gitnang Kanluran ng Australya.Dayl" + - "ight Time ng Gitnang Kanluran ng Australya\x1bOras ng Silangang Australy" + - "a$Standard Time ng Silangang Australya$Daylight Time ng Silangang Austra" + - "lya\x1bOras sa Kanlurang Australya$Standard Time ng Kanlurang Australya$" + - "Daylight Time sa Kanlurang Australya\x12Oras sa Azerbaijan\x1eStandard n" + - "a Oras sa Azerbaijan\x1eOras sa Tag-init ng Azerbaijan\x0eOras sa Azores" + - "\x1aStandard na Oras sa Azores\x1aOras sa Tag-init ng Azores\x12Oras sa " + - "Bangladesh\x1eStandard na Oras sa Bangladesh\x1eOras sa Tag-init ng Bang" + - "ladesh\x0eOras sa Bhutan\x0fOras sa Bolivia\x10Oras sa Brasilia\x1cStand" + - "ard na Oras sa Brasilia\x1cOras sa Tag-init ng Brasilia\x19Oras ng Brune" + - "i Darussalam\x12Oras sa Cape Verde\x1eStandard na Oras sa Cape Verde\x1e" + - "Oras sa Tag-init ng Cape Verde\x1cStandard na Oras sa Chamorro\x0fOras s" + - "a Chatham\x1bStandard na Oras sa Chatham\x18Daylight Time sa Chatham\x0d" + - "Oras sa Chile\x19Standard na Oras sa Chile\x19Oras sa Tag-init ng Chile" + - "\x0dOras sa China\x19Standard na Oras sa China\x16Daylight Time sa China" + - "\x12Oras sa Choibalsan\x1eStandard na Oras sa Choibalsan\x1eOras sa Tag-" + - "init ng Choibalsan\x18Oras sa Christmas Island\x15Oras sa Cocos Islands" + - "\x10Oras sa Colombia\x1cStandard na Oras sa Colombia\x1cOras sa Tag-init" + - " ng Colombia\x14Oras sa Cook Islands Standard na Oras sa Cook Islands,Or" + - "as sa Kalahati ng Tag-init ng Cook Islands\x0cOras sa Cuba\x18Standard n" + - "a Oras sa Cuba\x15Daylight Time sa Cuba\x0dOras sa Davis\x1aOras sa Dumo" + - "nt-d’Urville\x12Oras ng East Timor\x15Oras sa Easter Island!Standard na " + - "Oras sa Easter Island!Oras sa Tag-init ng Easter Island\x0fOras sa Ecuad" + - "or\x16Oras sa Gitnang Europe\x22Standard na Oras sa Gitnang Europe\x22Or" + - "as sa Tag-init ng Gitnang Europe\x18Oras sa Silangang Europe$Standard na" + - " Oras sa Silangang Europe$Oras sa Tag-init ng Silangang Europe\x1fOras s" + - "a Pinaka-silangang Europe\x18Oras sa Kanlurang Europe$Standard na Oras s" + - "a Kanlurang Europe$Oras sa Tag-init ng Kanlurang Europe\x18Oras sa Falkl" + - "and Islands$Standard na Oras sa Falkland Islands$Oras sa Tag-init ng Fal" + - "kland Islands\x0cOras sa Fiji\x18Standard na Oras sa Fiji\x18Oras sa Tag" + - "-init ng Fiji\x15Oras sa French Guiana&Oras sa Katimugang France at Anta" + - "rtiko\x11Oras sa Galapagos\x0fOras sa Gambier\x0fOras sa Georgia\x1bStan" + - "dard na Oras sa Georgia\x1bOras sa Tag-init ng Georgia\x17Oras sa Gilber" + - "t Islands\x13Greenwich Mean Time\x1bOras sa Silangang Greenland'Standard" + - " na Oras sa Silangang Greenland'Oras sa Tag-init ng Silangang Greenland" + - "\x1bOras sa Kanlurang Greenland'Standard na Oras sa Kanlurang Greenland'" + - "Oras sa Tag-init ng Kanlurang Greenland\x0cOras sa Gulf\x0eOras sa Guyan" + - "a\x17Oras sa Hawaii-Aleutian#Standard na Oras sa Hawaii-Aleutian#Oras sa" + - " Tag-init ng Hawaii-Aleutian\x11Oras sa Hong Kong\x1dStandard na Oras sa" + - " Hong Kong\x1dOras sa Tag-init ng Hong Kong\x0cOras sa Hovd\x18Standard " + - "na Oras sa Hovd\x18Oras sa Tag-init ng Hovd\x1aStandard na Oras sa Bhuta" + - "n\x14Oras sa Indian Ocean\x11Oras ng Indochina\x1aOras ng Gitnang Indone" + - "siya\x1cOras ng Silangang Indonesiya\x1cOras ng Kanlurang Indonesiya\x0c" + - "Oras sa Iran\x18Standard na Oras sa Iran\x15Daylight Time sa Iran\x0fOra" + - "s sa Irkutsk\x1bStandard na Oras sa Irkutsk\x1bOras sa Tag-init ng Irkut" + - "sk\x0eOras sa Israel\x1aStandard na Oras sa Israel\x17Daylight Time sa I" + - "srael\x0dOras sa Japan\x19Standard na Oras sa Japan\x16Daylight Time sa " + - "Japan Oras sa Petropavlovsk-Kamchatski)Standard Time sa Petropavlovsk-Ka" + - "mchatski'Summer Time sa Petropavlovsk-Kamchatski\x1cOras sa Silangang Ka" + - "zakhstan\x1cOras sa Kanlurang Kazakhstan\x0dOras sa Korea\x19Standard na" + - " Oras sa Korea\x16Daylight Time sa Korea\x0eOras sa Kosrae\x13Oras sa Kr" + - "asnoyarsk\x1fStandard na Oras sa Krasnoyarsk\x1fOras sa Tag-init ng Kras" + - "noyarsk\x11Oras sa Kyrgystan\x14Oras sa Line Islands\x11Oras sa Lord How" + - "e\x1dStandard na Oras sa Lord Howe\x1bDaylight Time sa Lorde Howe\x18Ora" + - "s sa Macquarie Island\x0fOras sa Magadan\x1bStandard na Oras sa Magadan" + - "\x1bOras sa Tag-init ng Magadan\x10Oras ng Malaysia\x10Oras sa Maldives" + - "\x11Oras sa Marquesas\x18Oras sa Marshall Islands\x11Oras sa Mauritius" + - "\x1dStandard na Oras sa Mauritius\x1dOras sa Tag-init ng Mauritius\x0eOr" + - "as sa Mawson!Oras sa Hilagang-kanlurang Mexico-Standard na Oras sa Hilag" + - "ang-kanlurang Mexico*Daylight Time sa Hilagang-kanlurang Mexico\x1aOras " + - "sa Pasipiko ng Mexico&Standard na Oras sa Pasipiko ng Mexico#Daylight Ti" + - "me sa Pasipiko ng Mexico\x12Oras sa Ulan Bator\x1eStandard na Oras sa Ul" + - "an Bator\x1eOras sa Tag-init ng Ulan Bator\x0eOras sa Moscow\x1aStandard" + - " na Oras sa Moscow\x1aOras sa Tag-init ng Moscow\x0fOras ng Myanmar\x0dO" + - "ras sa Nauru\x0dOras sa Nepal\x15Oras sa New Caledonia!Standard na Oras " + - "sa New Caledonia!Oras sa Tag-init ng New Caledonia\x13Oras sa New Zealan" + - "d\x1fStandard na Oras sa New Zealand\x1cDaylight Time sa New Zealand\x14" + - "Oras sa Newfoundland Standard na Oras sa Newfoundland\x1dDaylight Time s" + - "a Newfoundland\x0cOras sa Niue\x16Oras sa Norfolk Island\x1bOras sa Fern" + - "ando de Noronha'Standard na Oras sa Fernando de Noronha'Oras sa Tag-init" + - " ng Fernando de Noronha\x13Oras sa Novosibirsk\x1fStandard na Oras sa No" + - "vosibirsk\x1fOras sa Tag-init ng Novosibirsk\x0cOras sa Omsk\x18Standard" + - " na Oras sa Omsk\x18Oras sa Tag-init ng Omsk\x10Oras sa Pakistan\x1cStan" + - "dard na Oras sa Pakistan\x1cOras sa Tag-init ng Pakistan\x0dOras sa Pala" + - "u\x18Oras sa Papua New Guinea\x10Oras sa Paraguay\x1cStandard na Oras sa" + - " Paraguay\x1cOras sa Tag-init ng Paraguay\x0cOras sa Peru\x18Standard na" + - " Oras sa Peru\x18Oras sa Tag-init ng Peru\x11Oras sa Pilipinas\x1dStanda" + - "rd na Oras sa Pilipinas\x1dOras sa Tag-init ng Pilipinas\x17Oras sa Phoe" + - "nix Islands!Oras sa Saint Pierre and Miquelon-Standard na Oras sa Saint " + - "Pierre and Miquelon*Daylight Time sa Saint Pierre and Miquelon\x10Oras s" + - "a Pitcairn\x0eOras sa Ponape\x11Oras sa Pyongyang\x0fOras sa Reunion\x0f" + - "Oras sa Rothera\x10Oras sa Sakhalin\x1cStandard na Oras sa Sakhalin\x1cO" + - "ras sa Tag-init ng Sakhalin\x0eOras sa Samara\x17Standard Time sa Samara" + - "\x0fSamara Daylight\x0dOras sa Samoa\x19Standard na Oras sa Samoa\x16Day" + - "light Time sa Samoa\x12Oras sa Seychelles\x1dStandard na Oras sa Singapo" + - "re\x17Oras sa Solomon Islands\x15Oras sa Timog Georgia\x10Oras sa Surina" + - "me\x0dOras sa Syowa\x0eOras sa Tahiti\x0eOras sa Taipei\x1aStandard na O" + - "ras sa Taipei\x17Daylight Time sa Taipei\x12Oras sa Tajikistan\x0fOras s" + - "a Tokelau\x0dOras sa Tonga\x19Standard na Oras sa Tonga\x19Oras sa Tag-i" + - "nit ng Tonga\x0dOras sa Chuuk\x14Oras sa Turkmenistan Standard na Oras s" + - "a Turkmenistan Oras sa Tag-init ng Turkmenistan\x0eOras sa Tuvalu\x0fOra" + - "s sa Uruguay\x1bStandard na Oras sa Uruguay\x1bOras sa Tag-init ng Urugu" + - "ay\x12Oras sa Uzbekistan\x1eStandard na Oras sa Uzbekistan\x1eOras sa Ta" + - "g-init ng Uzbekistan\x0fOras sa Vanuatu\x1bStandard na Oras sa Vanuatu" + - "\x1bOras sa Tag-init ng Vanuatu\x11Oras sa Venezuela\x13Oras sa Vladivos" + - "tok\x1fStandard na Oras sa Vladivostok\x1fOras sa Tag-init ng Vladivosto" + - "k\x11Oras sa Volgograd\x1dStandard na Oras sa Volgograd\x1dOras sa Tag-i" + - "nit ng Volgograd\x0eOras sa Vostok\x13Oras sa Wake Island\x19Oras sa Wal" + - "lis and Futuna\x0fOras sa Yakutsk\x1bStandard na Oras sa Yakutsk\x1bOras" + - " sa Tag-init ng Yakutsk\x15Oras sa Yekaterinburg!Standard na Oras sa Yek" + - "aterinburg!Oras sa Tag-init ng Yekaterinburg\x04Hõo\x04Suba" - -var bucket36 string = "" + // Size: 9993 bytes - "\x12EEEE, dd. MMMM y G\x04sun.\x05mán.\x05týs.\x04mik.\x05hós.\x05frí." + - "\x04ley.\x03su.\x04má.\x04tý.\x03mi.\x04hó.\x03fr.\x03le.\x0asunnudagur" + - "\x0amánadagur\x09týsdagur\x09mikudagur\x09hósdagur\x0dfríggjadagur\x0ble" + - "ygardagur\x03sun\x04mán\x04týs\x03mik\x04hós\x04frí\x03ley\x0a1. ársfj." + - "\x0a2. ársfj.\x0a3. ársfj.\x0a4. ársfj.\x131. ársfjórðingur\x132. ársfjó" + - "rðingur\x133. ársfjórðingur\x134. ársfjórðingur\x0afyri Krist\x1afyri ok" + - "kara tíðarrokning\x0beftir Krist\x15okkara tíðarrokning\x0bf.o.tíðr.\x09" + - "o.tíðr.\x03flt\x02lt\x0etíðarrokning\x03ár\x08í fjør\x06í ár\x0anæsta ár" + - "\x0aum {0} ár\x0f{0} ár síðan\x10ársfjórðingur\x17seinasta ársfjórðing" + - "\x17hendan ársfjórðingin\x15næsta ársfjórðing\x15um {0} ársfjórðing\x17u" + - "m {0} ársfjórðingar\x1a{0} ársfjórðing síðan\x1c{0} ársfjórðingar síðan" + - "\x07ársfj.\x0eum {0} ársfj.\x13{0} ársfj. síðan\x09mánaður\x10seinasta m" + - "ánað\x0fhenda mánaðin\x0enæsta mánað\x0eum {0} mánað\x10um {0} mánaðir" + - "\x13{0} mánað síðan\x15{0} mánaðir síðan\x05mnð.\x0cum {0} mnð.\x11{0} m" + - "nð. síðan\x04vika\x0dseinastu viku\x09hesu viku\x0bnæstu viku\x0bum {0} " + - "viku\x0cum {0} vikur\x10{0} vika síðan\x11{0} vikur síðan\x0fvika nummar" + - " {0}\x03vi.\x0aum {0} vi.\x0f{0} vi. síðan\x09um {0} v.\x0e{0} v. síðan" + - "\x05dagur\x0afyrradagin\x08í gjár\x06í dag\x09í morgin\x0dí ovurmorgin" + - "\x0aum {0} dag\x0cum {0} dagar\x11{0} dagur síðan\x11{0} dagar síðan\x03" + - "da.\x0aum {0} da.\x0f{0} da. síðan\x09um {0} d.\x0e{0} d. síðan\x0dgeran" + - "disdagur\x11seinasta sunnudag\x0fnæsta sunnudag\x19sunnudagin í næstu vi" + - "ku\x0fum {0} sunnudag\x11um {0} sunnudagar\x15{0} sunnudag síðani\x17{0}" + - " sunnudagar síðani\x0dseinasta sun.\x0bnæsta sun.\x13sun. í næstu viku" + - "\x0bum {0} sun.\x11{0} sun. síðani\x0cseinasta su.\x0anæsta su.\x12su. í" + - " næstu viku\x0aum {0} su.\x10{0} su. síðani\x11seinasta mánadag\x0fnæsta" + - " mánadag\x19mánadagin í næstu viku\x0fum {0} mánadag\x11um {0} mánadagar" + - "\x15{0} mánadag síðani\x17{0} mánadagar síðani\x0eseinasta mán.\x0cnæsta" + - " mán.\x14mán. í næstu viku\x0cum {0} mán.\x12{0} mán. síðani\x0dseinasta" + - " má.\x0bnæsta má.\x13má. í næstu viku\x0bum {0} má.\x11{0} má. síðani" + - "\x10seinasta týsdag\x0enæsta týsdag\x18týsdagin í næstu viku\x0eum {0} t" + - "ýsdag\x10um {0} týsdagar\x14{0} týsdag síðani\x16{0} týsdagar síðani" + - "\x0eseinasta týs.\x0cnæsta týs.\x14týs. í næstu viku\x0cum {0} týs.\x12{" + - "0} týs. síðani\x0dseinasta tý.\x0bnæsta tý.\x13tý. í næstu viku\x0bum {0" + - "} tý.\x11{0} tý. síðani\x10seinasta mikudag\x0enæsta mikudag\x18mikudagi" + - "n í næstu viku\x0eum {0} mikudag\x10um {0} mikudagar\x14{0} mikudag síða" + - "ni\x16{0} mikudagar síðani\x0dseinasta mik.\x0bnæsta mik.\x13mik. í næst" + - "u viku\x0bum {0} mik.\x11{0} mik. síðani\x0cseinasta mi.\x0anæsta mi." + - "\x12mi. í næstu viku\x0aum {0} mi.\x10{0} mi. síðani\x10seinasta hósdag" + - "\x0enæsta hósdag\x18hósdagin í næstu viku\x0eum {0} hósdag\x10um {0} hós" + - "dagar\x14{0} hósdag síðani\x16{0} hósdagar síðani\x0eseinasta hós.\x0cnæ" + - "sta hós.\x14hós. í næstu viku\x0cum {0} hós.\x12{0} hós. síðani\x0dseina" + - "sta hó.\x0bnæsta hó.\x13hó. í næstu viku\x0bum {0} hó.\x11{0} hó. síðani" + - "\x14seinasta fríggjadag\x12næsta fríggjadag\x1cfríggjadagin í næstu viku" + - "\x12um {0} fríggjadag\x14um {0} fríggjadagar\x18{0} fríggjadag síðani" + - "\x1a{0} fríggjadagar síðani\x0eseinasta frí.\x0cnæsta frí.\x14frí. í næs" + - "tu viku\x0cum {0} frí.\x12{0} frí. síðani\x0cseinasta fr.\x0anæsta fr." + - "\x12fr. í næstu viku\x0aum {0} fr.\x10{0} fr. síðani\x12seinasta leygard" + - "ag\x10næsta leygardag\x1aleygardagin í næstu viku\x10um {0} leygardag" + - "\x12um {0} leygardagar\x16{0} leygardag síðani\x18{0} leygardagar síðani" + - "\x0dseinasta ley.\x0bnæsta ley.\x13ley. í næstu viku\x0bum {0} ley.\x11{" + - "0} ley. síðani\x0cseinasta le.\x0anæsta le.\x12le. í næstu viku\x0aum {0" + - "} le.\x10{0} le. síðani\x05tími\x0dhendan tíman\x0cum {0} tíma\x0dum {0}" + - " tímar\x11{0} tími síðan\x12{0} tímar síðan\x09um {0} t.\x0e{0} t. síðan" + - "\x08minuttur\x0fhendan minuttin\x0dum {0} minutt\x0fum {0} minuttir\x12{" + - "0} minutt síðan\x14{0} minuttir síðan\x0bum {0} min.\x10{0} min. síðan" + - "\x09um {0} m.\x0e{0} m. síðan\x03nú\x0dum {0} sekund\x12{0} sekund síðan" + - "\x0bum {0} sek.\x10{0} sek. síðan\x09um {0} s.\x0e{0} s. síðan\x0btíðarø" + - "ki\x09{0} tíð\x0f{0} summartíð\x10{0} vanlig tíð\x1bStóra Bretland summa" + - "rtíð\x12Írsk vanlig tíð\x10Afganistan tíð\x10Miðafrika tíð\x12Eysturafri" + - "ka tíð\x19Suðurafrika vanlig tíð\x12Vesturafrika tíð\x19Vesturafrika van" + - "lig tíð\x18Vesturafrika summartíð\x0cAlaska tíð\x13Alaska vanlig tíð\x12" + - "Alaska summartíð\x0dAmasona tíð\x14Amasona vanlig tíð\x13Amasona summart" + - "íð\x0dCentral tíð\x14Central vanlig tíð\x13Central summartíð\x0dEastern" + - " tíð\x14Eastern vanlig tíð\x13Eastern summartíð\x0eMountain tíð\x15Mount" + - "ain vanlig tíð\x14Mountain summartíð\x0dPacific tíð\x14Pacific vanlig tí" + - "ð\x13Pacific summartíð\x0aApia tíð\x11Apia vanlig tíð\x10Apia summartíð" + - "\x0dArabisk tíð\x14Arabisk vanlig tíð\x13Arabisk summartíð\x0fArgentina " + - "tíð\x16Argentina vanlig tíð\x15Argentina summartíð\x16Vestur Argentina t" + - "íð\x1dVestur Argentina vanlig tíð\x1cVestur Argentina summartíð\x0dArme" + - "nia tíð\x14Armenia vanlig tíð\x13Armenia summartíð\x0eAtlantic tíð\x15At" + - "lantic vanlig tíð\x14Atlantic summartíð\x14mið Avstralia tíð\x1bmið Avst" + - "ralia vanlig tíð\x1amið Avstralia summartíð\x1amiðvestur Avstralia tíð!m" + - "iðvestur Avstralia vanlig tíð miðvestur Avstralia summartíð\x16eystur Av" + - "stralia tíð\x1deystur Avstralia vanlig tíð\x1ceystur Avstralia summartíð" + - "\x16vestur Avstralia tíð\x1dvestur Avstralia vanlig tíð\x1cvestur Avstra" + - "lia summartíð\x10Aserbadjan tíð\x17Aserbadjan vanlig tíð\x16Aserbadjan s" + - "ummartíð\x0fAzorurnar tíð\x16Azorurnar vanlig tíð\x15Azorurnar summartíð" + - "\x10Bangladesj tíð\x17Bangladesj vanlig tíð\x16Bangladesj summartíð\x0bB" + - "utan tíð\x0dBolivia tíð\x0eBrasilia tíð\x15Brasilia vanlig tíð\x14Brasil" + - "ia summartíð\x17Brunei Darussalam tíð\x18Grønhøvdaoyggjar tíð\x1fGrønhøv" + - "daoyggjar vanlig tíð\x1eGrønhøvdaoyggjar summartíð\x15Chamorro vanlig tí" + - "ð\x0dChatham tíð\x14Chatham vanlig tíð\x13Chatham summartíð\x0aKili tíð" + - "\x11Kili vanlig tíð\x10Kili summartíð\x0aKina tíð\x11Kina vanlig tíð\x10" + - "Kina summartíð\x10Choibalsan tíð\x17Choibalsan vanlig tíð\x16Choibalsan " + - "summartíð\x10Jólaoyggj tíð\x12Kokosoyggjar tíð\x0eKolombia tíð\x15Kolomb" + - "ia vanlig tíð\x14Kolombia summartíð\x12Cooksoyggjar tíð\x19Cooksoyggjar " + - "vanlig tíð\x18Cooksoyggjar summartíð\x0aCuba tíð\x11Cuba vanlig tíð\x10C" + - "uba summartíð\x0bDavis tíð\x18Dumont-d’Urville tíð\x11Eysturtimor tíð" + - "\x12Páskaoyggin tíð\x19Páskaoyggin vanlig tíð\x18Páskaoyggin summartíð" + - "\x0dEkvador tíð\x10Miðevropa tíð\x17Miðevropa vanlig tíð\x16Miðevropa su" + - "mmartíð\x12Eysturevropa tíð\x19Eysturevropa vanlig tíð\x18Eysturevropa s" + - "ummartíð\x19longri Eysturevropa tíð\x12Vesturevropa tíð\x19Vesturevropa " + - "vanlig tíð\x18Vesturevropa summartíð\x16Falklandsoyggjar tíð\x1dFalkland" + - "soyggjar vanlig tíð\x1cFalklandsoyggjar summartíð\x0aFiji tíð\x11Fiji va" + - "nlig tíð\x10Fiji summartíð\x14Franska Gujana tíð,Fronsku sunnaru landaøk" + - "i og Antarktis tíð\x0fGalapagos tíð\x0dGambier tíð\x0dGeorgia tíð\x14Geo" + - "rgia vanlig tíð\x13Georgia summartíð\x14Gilbertoyggjar tíð\x14Greenwich " + - "Mean tíð\x18Eystur grønlendsk tíð\x1fEystur grønlendsk vanlig tíð\x1eEys" + - "tur grønlendsk summartíð\x18Vestur grønlendsk tíð\x1fVestur grønlendsk v" + - "anlig tíð\x1eVestur grønlendsk summartíð\x11Gulf vanlig tíð\x0cGujana tí" + - "ð\x15Hawaii-Aleutian tíð\x1cHawaii-Aleutian vanlig tíð\x1bHawaii-Aleuti" + - "an summartíð\x0fHong Kong tíð\x16Hong Kong vanlig tíð\x15Hong Kong summa" + - "rtíð\x0aHovd tíð\x11Hovd vanlig tíð\x10Hovd summartíð\x0bIndia tíð\x0eIn" + - "diahav tíð\x0eIndokina tíð\x14Mið Indonesia tíð\x16Eystur Indonesia tíð" + - "\x16Vestur Indonesia tíð\x0aIran tíð\x11Iran vanlig tíð\x10Iran summartí" + - "ð\x0dIrkutsk tíð\x14Irkutsk vanlig tíð\x13Irkutsk summartíð\x0dÍsrael t" + - "íð\x14Ísrael vanlig tíð\x13Ísrael summartíð\x0bJapan tíð\x12Japan vanli" + - "g tíð\x11Japan summartíð\x16Eystur Kasakstan tíð\x16Vestur Kasakstan tíð" + - "\x0bKorea tíð\x12Korea vanlig tíð\x11Korea summartíð\x0cKosrae tíð\x11Kr" + - "asnoyarsk tíð\x18Krasnoyarsk vanlig tíð\x17Krasnoyarsk summartíð\x0eKirg" + - "isia tíð\x11Lineoyggjar tíð\x0fLord Howe tíð\x16Lord Howe vanlig tíð\x15" + - "Lord Howe summartíð\x15Macquariesoyggj tíð\x0dMagadan tíð\x14Magadan van" + - "lig tíð\x13Magadan summartíð\x0eMalaisia tíð\x13Maldivoyggjar tíð\x0fMar" + - "quesas tíð\x15Marshalloyggjar tíð\x0fMóritius tíð\x16Móritius vanlig tíð" + - "\x15Móritius summartíð\x0cMawson tíð\x16Northwest Mexico tíð\x1dNorthwes" + - "t Mexico vanlig tíð\x1cNorthwest Mexico summartíð\x15Mexican Pacific tíð" + - "\x1cMexican Pacific vanlig tíð\x1bMexican Pacific summartíð\x10Ulan Bato" + - "r tíð\x17Ulan Bator vanlig tíð\x16Ulan Bator summartíð\x0cMoskva tíð\x13" + - "Moskva vanlig tíð\x12Moskva summartíð\x15Myanmar (Burma) tíð\x0bNauru tí" + - "ð\x0bNepal tíð\x13Nýkaledónia tíð\x1aNýkaledónia vanlig tíð\x19Nýkaledó" + - "nia summartíð\x10Nýsæland tíð\x17Nýsæland vanlig tíð\x16Nýsæland summart" + - "íð\x12Newfoundland tíð\x19Newfoundland vanlig tíð\x18Newfoundland summa" + - "rtíð\x0aNiue tíð\x13Norfolksoyggj tíð\x19Fernando de Noronha tíð Fernand" + - "o de Noronha vanlig tíð\x1fFernando de Noronha summartíð\x11Novosibirsk " + - "tíð\x18Novosibirsk vanlig tíð\x17Novosibirsk summartíð\x0aOmsk tíð\x11Om" + - "sk vanlig tíð\x10Omsk summartíð\x0ePakistan tíð\x15Pakistan vanlig tíð" + - "\x14Pakistan summartíð\x0bPalau tíð\x15Papua Nýguinea tíð\x0eParaguai tí" + - "ð\x15Paraguai vanlig tíð\x14Paraguai summartíð\x0aPeru tíð\x11Peru vanl" + - "ig tíð\x10Peru summartíð\x13Filipsoyggjar tíð\x1aFilipsoyggjar vanlig tí" + - "ð\x19Filipsoyggjar summartíð\x14Phoenixoyggjar tíð\x1bSt. Pierre & Miqu" + - "elon tíð\x22St. Pierre & Miquelon vanlig tíð!St. Pierre & Miquelon summa" + - "rtíð\x15Pitcairnoyggjar tíð\x0cPonape tíð\x0fPyongyang tíð\x0eRéunion tí" + - "ð\x0dRothera tíð\x0eSakhalin tíð\x15Sakhalin vanlig tíð\x14Sakhalin sum" + - "martíð\x0bSamoa tíð\x12Samoa vanlig tíð\x11Samoa summartíð\x15Seyskelloy" + - "ggjar tíð\x0eSingapor tíð\x14Salomonoyggjar tíð\x1aSuðurgeorgiaoyggjar t" + - "íð\x0dSurinam tíð\x0bSyowa tíð\x0cTahiti tíð\x0cTaipei tíð\x13Taipei va" + - "nlig tíð\x12Taipei summartíð\x12Tadsjikistan tíð\x0dTokelau tíð\x0bTonga" + - " tíð\x12Tonga vanlig tíð\x11Tonga summartíð\x0bChuuk tíð\x12Turkmenistan" + - " tíð\x19Turkmenistan vanlig tíð\x18Turkmenistan summartíð\x0cTuvalu tíð" + - "\x0dUruguai tíð\x14Uruguai vanlig tíð\x13Uruguai summartíð\x10Usbekistan" + - " tíð\x17Usbekistan vanlig tíð\x16Usbekistan summartíð\x0dVanuatu tíð\x14" + - "Vanuatu vanlig tíð\x13Vanuatu summartíð\x0fVenesuela tíð\x11Vladivostok " + - "tíð\x18Vladivostok vanlig tíð\x17Vladivostok summartíð\x0fVolgograd tíð" + - "\x16Volgograd vanlig tíð\x15Volgograd summartíð\x0cVostok tíð\x0fWakeoyg" + - "gj tíð\x1eWallis- og Futunaoyggjar tíð\x0dYakutsk tíð\x14Yakutsk vanlig " + - "tíð\x13Yakutsk summartíð\x13Yekaterinburg tíð\x1aYekaterinburg vanlig tí" + - "ð\x19Yekaterinburg summartíð\x05þri.\x05mið.\x04fim.\x05fös.\x04lau." + - "\x04þr.\x03fi.\x04fö.\x03la.\x0amánudagur\x0dþriðjudagur\x0dmiðvikudagur" + - "\x0bfimmtudagur\x0bföstudagur\x0blaugardagur\x03mu.\x03tu.\x03ve.\x04dö." + - "\x03fr.\x04zä." - -var bucket37 string = "" + // Size: 14561 bytes - "\x0fère bouddhiste\x07ère b.\x04E.B.\x051yuè\x052yuè\x053yuè\x054yuè\x05" + - "5yuè\x056yuè\x057yuè\x058yuè\x059yuè\x0610yuè\x0611yuè\x0612yuè\x0azhēng" + - "yuè\x07èryuè\x08sānyuè\x07sìyuè\x07wǔyuè\x08liùyuè\x07qīyuè\x07bāyuè\x08" + - "jiǔyuè\x08shíyuè\x0bshíyīyuè\x0eshí’èryuè\x0dEEEE d MMMM U\x04tout\x05bâ" + - "b.\x05hât.\x04kya.\x05toub.\x05amsh.\x06barma.\x06barmo.\x05bash.\x07ba’" + - "o.\x05abî.\x04mis.\x05al-n.\x06bâbâ\x07hâtour\x05kyakh\x06toubah\x07amsh" + - "îr\x09barmahât\x09barmoudah\x07bashans\x0aba’ounah\x05abîb\x05misra\x07" + - "al-nasi\x11avant Dioclétien\x12après Dioclétien\x06av. D.\x06ap. D.\x05m" + - "äs.\x04teq.\x04hed.\x04tah.\x03ter\x05yäk.\x05mäg.\x04miy.\x04gue.\x05s" + - "än.\x04ham.\x05näh.\x04pag.\x0bmäskäräm\x06teqemt\x05hedar\x07tahesas" + - "\x08yäkatit\x08mägabit\x07miyazya\x07guenbot\x06säné\x06hamlé\x08nähasé" + - "\x08pagumén\x15avant l’Incarnation\x16après l’Incarnation\x08av. Inc." + - "\x08ap. Inc.\x0c{1} 'à' {0}\x05janv.\x06févr.\x04mars\x04avr.\x03mai\x04" + - "juin\x05juil.\x05août\x05sept.\x04oct.\x04nov.\x05déc.\x07janvier\x08fév" + - "rier\x05avril\x07juillet\x09septembre\x07octobre\x08novembre\x09décembre" + - "\x04dim.\x04lun.\x04mar.\x04mer.\x04jeu.\x04ven.\x04sam.\x08dimanche\x05" + - "lundi\x05mardi\x08mercredi\x05jeudi\x08vendredi\x06samedi\x06minuit\x04m" + - "idi\x05ap.m.\x04soir\x04nuit\x08du matin\x12de l’après-midi\x07du soir" + - "\x07de nuit\x05matin\x0baprès-midi\x13avant Jésus-Christ\x16avant l’ère " + - "commune\x14après Jésus-Christ\x13de l’ère commune\x09av. J.-C.\x09ap. J." + - "-C.\x04tis.\x04hes.\x04kis.\x05téb.\x06sché.\x04ad.I\x04adar\x05ad.II" + - "\x04nis.\x04iyar\x04siv.\x04tam.\x02ab\x04ell.\x07Tisseri\x06Hesvan\x06K" + - "islev\x07Tébeth\x08Schébat\x06Adar I\x04Adar\x07Adar II\x06Nissan\x04Iya" + - "r\x05Sivan\x06Tamouz\x02Ab\x06Elloul\x0aAnno Mundi\x05chai.\x04vai.\x05j" + - "yai.\x06āsha.\x06shrā.\x05bhā.\x06āshw.\x05kār.\x05mār.\x04pau.\x05māgh" + - "\x06phāl.\x07chaitra\x09vaishākh\x09jyaishtha\x09āshādha\x09shrāvana\x0a" + - "bhādrapad\x07āshwin\x07kārtik\x0emārgashīrsha\x05paush\x08phālgun\x04SAK" + - "A\x05mouh.\x04saf.\x08rab. aw.\x08rab. th.\x0ajoum. oul.\x0ajoum. tha." + - "\x04raj.\x05chaa.\x04ram.\x05chaw.\x08dhou. q.\x08dhou. h.\x09mouharram" + - "\x05safar\x0drabia al awal\x0frabia ath-thani\x0fjoumada al oula\x12joum" + - "ada ath-thania\x05rajab\x08chaabane\x07ramadan\x07chawwal\x0ddhou al qi`" + - "da\x0ddhou al-hijja\x09joum. ou.\x09joum. th.\x09dhou. qi.\x09dhou. hi." + - "\x09avant RdC\x03RdC\x04ère\x06année\x14l’année dernière\x0ccette année" + - "\x14l’année prochaine\x0bdans {0} an\x0cdans {0} ans\x0dil y a {0} an" + - "\x0eil y a {0} ans\x02an\x0adans {0} a\x0cil y a {0} a\x06+{0} a\x14le t" + - "rimestre dernier\x0cce trimestre\x15le trimestre prochain\x12dans {0} tr" + - "imestre\x13dans {0} trimestres\x14il y a {0} trimestre\x15il y a {0} tri" + - "mestres\x0ele trim. dern.\x08ce trim.\x0fle trim. proch.\x0edans {0} tri" + - "m.\x10il y a {0} trim.\x09trim dern\x07ce trim\x0atrim proch\x04mois\x0f" + - "le mois dernier\x0ace mois-ci\x10le mois prochain\x0ddans {0} mois\x0fil" + - " y a {0} mois\x0bdans {0} m.\x0dil y a {0} m.\x07+{0} m.\x07-{0} m.\x07s" + - "emaine\x14la semaine dernière\x0dcette semaine\x14la semaine prochaine" + - "\x10dans {0} semaine\x11dans {0} semaines\x12il y a {0} semaine\x13il y " + - "a {0} semaines\x11la semaine du {0}\x0ddans {0} sem.\x0fil y a {0} sem." + - "\x0bsem. du {0}\x04jour\x0aavant-hier\x04hier\x0daujourd’hui\x06demain" + - "\x0daprès-demain\x0ddans {0} jour\x0edans {0} jours\x0fil y a {0} jour" + - "\x10il y a {0} jours\x0bdans {0}\u00a0j\x0dil y a {0}\u00a0j\x06+{0} j" + - "\x06-{0} j\x12jour de la semaine\x10dimanche dernier\x0bce dimanche\x11d" + - "imanche prochain\x11dans {0} dimanche\x12dans {0} dimanches\x13il y a {0" + - "} dimanche\x14il y a {0} dimanches\x0cdim. dernier\x07ce dim.\x0ddim. pr" + - "ochain\x0ddans {0} dim.\x0fil y a {0} dim.\x08dim dern\x06ce dim\x09dim " + - "proch\x0bdans {0}dim\x0dil y a {0}dim\x0dlundi dernier\x08ce lundi\x0elu" + - "ndi prochain\x0edans {0} lundi\x0fdans {0} lundis\x10il y a {0} lundi" + - "\x11il y a {0} lundis\x0clun. dernier\x07ce lun.\x0dlun. prochain\x0ddan" + - "s {0} lun.\x0fil y a {0} lun.\x08lun dern\x06ce lun\x09lun proch\x0bdans" + - " {0}lun\x0dil y a {0}lun\x0dmardi dernier\x08ce mardi\x0emardi prochain" + - "\x0edans {0} mardi\x0fdans {0} mardis\x10il y a {0} mardi\x11il y a {0} " + - "mardis\x0cmar. dernier\x07ce mar.\x0dmar. prochain\x0ddans {0} mar.\x0fi" + - "l y a {0} mar.\x08mar dern\x06ce mar\x09mar proch\x0bdans {0}mar\x0dil y" + - " a {0}mar\x10mercredi dernier\x0bce mercredi\x11mercredi prochain\x11dan" + - "s {0} mercredi\x12dans {0} mercredis\x13il y a {0} mercredi\x14il y a {0" + - "} mercredis\x0cmer. dernier\x07ce mer.\x0dmer. prochain\x0ddans {0} mer." + - "\x0fil y a {0} mer.\x08mer dern\x06ce mer\x09mer proch\x0bdans {0}mer" + - "\x0dil y a {0}mer\x0djeudi dernier\x08ce jeudi\x0ejeudi prochain\x0edans" + - " {0} jeudi\x0fdans {0} jeudis\x10il y a {0} jeudi\x11il y a {0} jeudis" + - "\x0cjeu. dernier\x07ce jeu.\x0djeu. prochain\x0ddans {0} jeu.\x0fil y a " + - "{0} jeu.\x08jeu dern\x06ce jeu\x09jeu proch\x0bdans {0}jeu\x0dil y a {0}" + - "jeu\x10vendredi dernier\x0bce vendredi\x11vendredi prochain\x11dans {0} " + - "vendredi\x12dans {0} vendredis\x13il y a {0} vendredi\x14il y a {0} vend" + - "redis\x0cven. dernier\x07ce ven.\x0dven. prochain\x0ddans {0} ven.\x0fil" + - " y a {0} ven.\x08ven dern\x06ce ven\x09ven proch\x0bdans {0}ven\x0dil y " + - "a {0}ven\x0esamedi dernier\x09ce samedi\x0fsamedi prochain\x0fdans {0} s" + - "amedi\x10dans {0} samedis\x11il y a {0} samedi\x12il y a {0} samedis\x0c" + - "sam. dernier\x07ce sam.\x0dsam. prochain\x0ddans {0} sam.\x08sam dern" + - "\x06ce sam\x09sam proch\x0bdans {0}sam\x0dil y a {0}sam\x06cadran\x05heu" + - "re\x0ecette heure-ci\x0edans {0} heure\x0fdans {0} heures\x10il y a {0} " + - "heure\x11il y a {0} heures\x07cette h\x0bdans {0}\u00a0h\x0dil y a {0}" + - "\u00a0h\x09dans {0}h\x0bil y a {0}h\x0fcette minute-ci\x0fdans {0} minut" + - "e\x10dans {0} minutes\x11il y a {0} minute\x12il y a {0} minutes\x09cett" + - "e min\x0ddans {0}\u00a0min\x0fil y a {0}\u00a0min\x0dil y a {0}min\x08-{" + - "0} min\x07seconde\x0amaintenant\x10dans {0} seconde\x11dans {0} secondes" + - "\x12il y a {0} seconde\x13il y a {0} secondes\x0bdans {0}\u00a0s\x0dil y" + - " a {0}\u00a0s\x0efuseau horaire\x0bheure : {0}\x15{0} (heure d’été)\x14{" + - "0} (heure standard)\x1aTemps universel coordonné\x1bheure d’été britanni" + - "que\x1aheure d’été irlandaise\x11heure de l’Acre\x19heure normale de l’A" + - "cre\x1bheure d’été de l’Acre\x18heure de l’Afghanistan\x22heure normale " + - "d’Afrique centrale$heure normale d’Afrique de l’Est&heure normale d’Afri" + - "que méridionale\x1eheure d’Afrique de l’Ouest&heure normale d’Afrique de" + - " l’Ouest(heure d’été d’Afrique de l’Ouest\x13heure de l’Alaska\x1bheure " + - "normale de l’Alaska\x1dheure d’été de l’Alaska\x03HAK\x04HNAK\x04HEAK" + - "\x12heure d’Alma Ata\x1aheure normale d’Alma Ata\x1cheure d’été d’Alma A" + - "ta\x15heure de l’Amazonie\x1dheure normale de l’Amazonie\x1fheure d’été " + - "de l’Amazonie\x1fheure du centre nord-américain'heure normale du centre " + - "nord-américain\x19heure d’été du Centre\x02HC\x03HNC\x03HEC heure de l’E" + - "st nord-américain(heure normale de l’Est nord-américain\x1aheure d’été d" + - "e l’Est\x02HE\x03HNE\x03HEE\x13heure des Rocheuses\x1bheure normale des " + - "Rocheuses\x1dheure d’été des Rocheuses\x02HR\x03HNR\x03HER\x22heure du P" + - "acifique nord-américain*heure normale du Pacifique nord-américain\x1cheu" + - "re d’été du Pacifique\x02HP\x03HNP\x03HEP\x10heure d’Anadyr\x18heure nor" + - "male d’Anadyr\x1aheure d’été d’Anadyr\x0eheure d’Apia\x16heure normale d" + - "’Apia\x18heure d’été d’Apia\x10heure d’Aktaou\x18heure normale d’Aktao" + - "u\x1aheure d’été d’Aktaou\x11heure d’Aqtöbe\x19heure normale d’Aqtöbe" + - "\x1bheure d’été d’Aqtöbe\x13heure de l’Arabie\x1bheure normale de l’Arab" + - "ie\x1dheure d’été de l’Arabie\x16heure de l’Argentine\x1bheure normale d" + - "’Argentine heure d’été de l’Argentine\x1bheure de l’Ouest argentin#heu" + - "re normale de l’Ouest argentin%heure d’été de l’Ouest argentin\x15heure " + - "de l’Arménie\x1dheure normale de l’Arménie\x1cheure d’été d’Arménie\x17h" + - "eure de l’Atlantique\x1fheure normale de l’Atlantique!heure d’été de l’A" + - "tlantique\x02HA\x03HNA\x03HEA heure du centre de l’Australie(heure norma" + - "le du centre de l’Australie*heure d’été du centre de l’Australie&heure d" + - "u centre-ouest de l’Australie.heure normale du centre-ouest de l’Austral" + - "ie0heure d’été du centre-ouest de l’Australie!heure de l’Est de l’Austra" + - "lie)heure normale de l’Est de l’Australie+heure d’été de l’Est de l’Aust" + - "ralie#heure de l’Ouest de l’Australie+heure normale de l’Ouest de l’Aust" + - "ralie-heure d’été de l’Ouest de l’Australie\x19heure de l’Azerbaïdjan!he" + - "ure normale de l’Azerbaïdjan heure d’été d’Azerbaïdjan\x11heure des Açor" + - "es\x19heure normale des Açores\x1bheure d’été des Açores\x13heure du Ban" + - "gladesh\x1bheure normale du Bangladesh\x1dheure d’été du Bangladesh\x10h" + - "eure du Bhoutan\x10heure de Bolivie\x11heure de Brasilia\x19heure normal" + - "e de Brasilia\x1bheure d’été de Brasilia\x10heure du Brunéi\x11heure du " + - "Cap-Vert\x19heure normale du Cap-Vert\x1bheure d’été du Cap-Vert\x12heur" + - "e des Chamorro\x17heure des îles Chatham\x1fheure normale des îles Chath" + - "am!heure d’été des îles Chatham\x0eheure du Chili\x16heure normale du Ch" + - "ili\x18heure d’été du Chili\x11heure de la Chine\x19heure normale de la " + - "Chine\x18heure d’été de Chine\x13heure de Choibalsan\x1bheure normale de" + - " Choibalsan\x1dheure d’été de Choibalsan\x1bheure de l’île Christmas\x15" + - "heure des îles Cocos\x11heure de Colombie\x19heure normale de Colombie" + - "\x1bheure d’été de Colombie\x14heure des îles Cook\x1cheure normale des " + - "îles Cook\x1eheure d’été des îles Cook\x0dheure de Cuba\x15heure normal" + - "e de Cuba\x17heure d’été de Cuba\x03HCU\x04HNCU\x04HECU\x0eheure de Davi" + - "s\x1bheure de Dumont-d’Urville\x17heure du Timor oriental\x1cheure de l’" + - "île de Pâques$heure normale de l’île de Pâques&heure d’été de l’île de " + - "Pâques\x16heure de l’Équateur\x19heure d’Europe centrale!heure normale d" + - "’Europe centrale#heure d’été d’Europe centrale\x1bheure d’Europe de l’" + - "Est#heure normale d’Europe de l’Est%heure d’été d’Europe de l’Est\x14heu" + - "re de Kaliningrad\x1dheure d’Europe de l’Ouest%heure normale d’Europe de" + - " l’Ouest'heure d’été d’Europe de l’Ouest\x19heure des îles Malouines!heu" + - "re normale des îles Malouines#heure d’été des îles Malouines\x15heure de" + - "s îles Fidji\x1dheure normale des îles Fidji\x1fheure d’été des îles Fid" + - "ji\x1dheure de la Guyane française6heure des Terres australes et antarct" + - "iques françaises\x1aheure des îles Galápagos\x17heure des îles Gambier" + - "\x14heure de la Géorgie\x1cheure normale de la Géorgie\x1bheure d’été de" + - " Géorgie\x17heure des îles Gilbert\x1aheure moyenne de Greenwich\x1dheur" + - "e de l’Est du Groenland%heure normale de l’Est du Groenland'heure d’été " + - "de l’Est du Groenland\x03HEG\x04HNEG\x04HEEG\x1fheure de l’Ouest du Groe" + - "nland'heure normale de l’Ouest du Groenland)heure d’été de l’Ouest du Gr" + - "oenland\x03HOG\x04HNOG\x04HEOG\x0dheure de Guam\x0eheure du Golfe\x0fheu" + - "re du Guyana heure d’Hawaii - Aléoutiennes(heure normale d’Hawaii - Aléo" + - "utiennes*heure d’été d’Hawaii - Aléoutiennes\x03HHA\x04HNHA\x04HEHA\x12h" + - "eure de Hong Kong\x1aheure normale de Hong Kong\x1cheure d’été de Hong K" + - "ong\x0dheure de Hovd\x15heure normale de Hovd\x17heure d’été de Hovd\x11" + - "heure de l’Inde\x1aheure de l’Océan Indien\x13heure d’Indochine\x1bheure" + - " du Centre indonésien\x1cheure de l’Est indonésien\x1eheure de l’Ouest i" + - "ndonésien\x11heure de l’Iran\x16heure normale d’Iran\x18heure d’été d’Ir" + - "an\x12heure d’Irkoutsk\x1aheure normale d’Irkoutsk\x1cheure d’été d’Irko" + - "utsk\x11heure d’Israël\x19heure normale d’Israël\x1bheure d’été d’Israël" + - "\x0eheure du Japon\x16heure normale du Japon\x18heure d’été du Japon!heu" + - "re de Petropavlovsk-Kamchatski)heure normale de Petropavlovsk-Kamchatski" + - "+heure d’été de Petropavlovsk-Kamchatski\x1eheure de l’Est du Kazakhstan" + - " heure de l’Ouest du Kazakhstan\x12heure de la Corée\x1aheure normale de" + - " la Corée\x19heure d’été de Corée\x0fheure de Kosrae\x15heure de Krasnoï" + - "arsk\x1dheure normale de Krasnoïarsk\x1fheure d’été de Krasnoïarsk\x15he" + - "ure du Kirghizistan\x0eheure de Lanka\x1bheure des îles de la Ligne\x12h" + - "eure de Lord Howe\x1aheure normale de Lord Howe\x1cheure d’été de Lord H" + - "owe\x0eheure de Macao\x16heure normale de Macao\x18heure d’été de Macao" + - "\x1bheure de l’île Macquarie\x10heure de Magadan\x18heure normale de Mag" + - "adan\x1aheure d’été de Magadan\x14heure de la Malaisie\x12heure des Mald" + - "ives\x19heure des îles Marquises\x18heure des îles Marshall\x10heure de " + - "Maurice\x18heure normale de Maurice\x1aheure d’été de Maurice\x0fheure d" + - "e Mawson\x1eheure du Nord-Ouest du Mexique&heure normale du Nord-Ouest d" + - "u Mexique(heure d’été du Nord-Ouest du Mexique\x05HNOMX\x06HNNOMX\x06HEN" + - "OMX\x1bheure du Pacifique mexicain#heure normale du Pacifique mexicain%h" + - "eure d’été du Pacifique mexicain\x04HPMX\x05HNPMX\x05HEPMX\x15heure d’Ou" + - "lan-Bator\x1dheure normale d’Oulan-Bator\x1fheure d’été d’Oulan-Bator" + - "\x0fheure de Moscou\x17heure normale de Moscou\x19heure d’été de Moscou" + - "\x10heure du Myanmar\x0eheure de Nauru\x0fheure du Népal\x1fheure de la " + - "Nouvelle-Calédonie'heure normale de la Nouvelle-Calédonie&heure d’été de" + - " Nouvelle-Calédonie\x1dheure de la Nouvelle-Zélande%heure normale de la " + - "Nouvelle-Zélande'heure d’été de la Nouvelle-Zélande\x14heure de Terre-Ne" + - "uve\x1cheure normale de Terre-Neuve\x1eheure d’été de Terre-Neuve\x03HTN" + - "\x04HNTN\x04HETN\x0fheure de Nioué\x19heure de l’île Norfolk\x1cheure de" + - " Fernando de Noronha$heure normale de Fernando de Noronha&heure d’été de" + - " Fernando de Noronha!heure des îles Mariannes du Nord\x15heure de Novoss" + - "ibirsk\x1dheure normale de Novossibirsk\x1fheure d’été de Novossibirsk" + - "\x0dheure de Omsk\x15heure normale de Omsk\x17heure d’été de Omsk\x11heu" + - "re du Pakistan\x19heure normale du Pakistan\x1bheure d’été du Pakistan" + - "\x10heure des Palaos&heure de la Papouasie-Nouvelle-Guinée\x11heure du P" + - "araguay\x19heure normale du Paraguay\x1bheure d’été du Paraguay\x0fheure" + - " du Pérou\x17heure normale du Pérou\x19heure d’été du Pérou\x15heure des" + - " Philippines\x1dheure normale des Philippines\x1fheure d’été des Philipp" + - "ines\x17heure des îles Phoenix!heure de Saint-Pierre-et-Miquelon)heure n" + - "ormale de Saint-Pierre-et-Miquelon+heure d’été de Saint-Pierre-et-Miquel" + - "on\x03HPM\x04HNPM\x04HEPM\x18heure des îles Pitcairn\x1cheure de l’île d" + - "e Pohnpei\x12heure de Pyongyang\x14heure de La Réunion\x10heure de Rothe" + - "ra\x12heure de Sakhaline\x1aheure normale de Sakhaline\x1cheure d’été de" + - " Sakhaline\x0fheure de Samara\x17heure normale de Samara\x19heure d’été " + - "de Samara\x0fheure des Samoa\x17heure normale des Samoa\x19heure d’été d" + - "es Samoa\x14heure des Seychelles\x12heure de Singapour\x17heure des îles" + - " Salomon\x18heure de Géorgie du Sud\x11heure du Suriname\x0eheure de Syo" + - "wa\x0fheure de Tahiti\x0fheure de Taipei\x17heure normale de Taipei\x19h" + - "eure d’été de Taipei\x14heure du Tadjikistan\x10heure de Tokelau\x0fheur" + - "e des Tonga\x17heure normale des Tonga\x18heure d’été de Tonga\x0eheure " + - "de Chuuk\x16heure du Turkménistan\x1eheure normale du Turkménistan heure" + - " d’été du Turkménistan\x10heure des Tuvalu\x14heure de l’Uruguay\x1cheur" + - "e normale de l’Uruguay\x1eheure d’été de l’Uruguay\x19heure de l’Ouzbéki" + - "stan!heure normale de l’Ouzbékistan#heure d’été de l’Ouzbékistan\x10heur" + - "e du Vanuatu\x18heure normale du Vanuatu\x1aheure d’été de Vanuatu\x12he" + - "ure du Venezuela\x14heure de Vladivostok\x1cheure normale de Vladivostok" + - "\x1eheure d’été de Vladivostok\x12heure de Volgograd\x1aheure normale de" + - " Volgograd\x1cheure d’été de Volgograd\x0fheure de Vostok\x16heure de l’" + - "île Wake\x19heure de Wallis-et-Futuna\x11heure de Iakoutsk\x19heure nor" + - "male de Iakoutsk\x1bheure d’été de Iakoutsk\x17heure d’Ekaterinbourg\x1f" + - "heure normale d’Ekaterinbourg!heure d’été d’Ekaterinbourg\x06juill.\x0fc" + - "e trimestre-ci\x1aheure d’Afrique centrale\x1bHeure d’Afrique orientale " + - "heure normale d’Afrique du Sud\x0fheure du Centre\x17heure normale du Ce" + - "ntre\x10heure de l’Est\x18heure normale de l’Est\x12heure du Pacifique" + - "\x1aheure normale du Pacifique\x1fheure normale des Îles Chatham\x0eheur" + - "e de Chine\x16heure normale de Chine\x1aheure de Guyane française\x1eheu" + - "re d’Hawaï-Aléoutiennes&heure normale d’Hawaï-Aléoutiennes\x02HT\x03HNT" + - "\x0eheure d’Omsk\x16heure normale d’Omsk\x14heure de la Réunion\x05febr." + - "\x05marts\x04apr.\x05maijs\x05jūn.\x05jūl.\x04aug.\x05sept.\x04okt.\x04n" + - "ov.\x04dec.\x05marts\x05maijs\x04baba\x05hator\x05kiahk\x04toba\x06amshi" + - "r\x08baramhat\x09baramouda\x05paona\x04epep\x05mesra\x05nasie\x08vaisakh" + - "a\x08jyaistha\x06asadha\x07sravana\x06bhadra\x06asvina\x07kartika\x0aagr" + - "ahayana\x05pausa\x05magha\x08phalguna\x05hedar\x03ter" - -var bucket38 string = "" + // Size: 13793 bytes - "\x1aH 'h' mm 'min' ss 's' zzzz\x0eyy-MM-dd GGGGG\x07du mat.\x1aavant l’è" + - "re chrétienne\x17de l’ère chrétienne\x09HH 'h' mm\x0dy-MM-dd GGGGG\x0cDa" + - "ns {0}\u00a0an\x0dDans {0}\u00a0ans\x0eIl y a {0}\u00a0an\x0fIl y a {0}" + - "\u00a0ans\x07+ {0} s\x06+{0} s\x14{0} (heure avancée)\x13{0} (heure norm" + - "ale)\x1aheure avancée britannique\x19heure avancée irlandaise\x1aheure a" + - "vancée de l’Acre'heure avancée d’Afrique de l’Ouest\x1cheure avancée de " + - "l’Alaska\x1bheure avancée d’Alma Ata\x1eheure avancée de l’Amazonie\x18h" + - "eure avancée du Centre\x03HAC\x19heure avancée de l’Est\x03HAE\x1cheure " + - "avancée des Rocheuses\x03HAR\x1bheure avancée du Pacifique\x03HAP\x19heu" + - "re avancée d’Anadyr\x17heure avancée d’Apia\x19heure avancée d’Aktaou" + - "\x1aheure avancée d’Aqtöbe\x1cheure avancée de l’Arabie\x1fheure avancée" + - " de l’Argentine$heure avancée de l’Ouest argentin\x1bheure avancée d’Arm" + - "énie heure avancée de l’Atlantique)heure avancée du centre de l’Austral" + - "ie/heure avancée du centre-ouest de l’Australie*heure avancée de l’Est d" + - "e l’Australie,heure avancée de l’Ouest de l’Australie\x1fheure avancée d" + - "’Azerbaïdjan\x1aheure avancée des Açores\x1cheure avancée du Banglades" + - "h\x1aheure avancée de Brasilia\x1aheure avancée du Cap-Vert heure avancé" + - "e des Îles Chatham\x17heure avancée du Chili\x17heure avancée de Chine" + - "\x1cheure avancée de Choibalsan\x1aheure avancée de Colombie\x1dheure av" + - "ancée des îles Cook\x16heure avancée de Cuba%heure avancée de l’île de P" + - "âques\x22heure avancée d’Europe centrale$heure avancée d’Europe de l’Es" + - "t&heure avancée d’Europe de l’Ouest\x22heure avancée des îles Malouines" + - "\x1eheure avancée des îles Fidji\x1aheure avancée de Géorgie&heure avanc" + - "ée de l’Est du Groenland(heure avancée de l’Ouest du Groenland'heure av" + - "ancée d’Hawaï-Aléoutiennes\x1bheure avancée de Hong Kong\x16heure avancé" + - "e de Hovd\x17heure avancée d’Iran\x1bheure avancée d’Irkoutsk\x1aheure a" + - "vancée d’Israël\x17heure avancée du Japon*heure avancée de Petropavlovsk" + - "-Kamchatski\x18heure avancée de Corée\x1eheure avancée de Krasnoïarsk" + - "\x1bheure avancée de Lord Howe\x17heure avancée de Macao\x19heure avancé" + - "e de Magadan\x19heure avancée de Maurice'heure avancée du Nord-Ouest du " + - "Mexique$heure avancée du Pacifique mexicain\x1eheure avancée d’Oulan-Bat" + - "or\x18heure avancée de Moscou%heure avancée de Nouvelle-Calédonie&heure " + - "avancée de la Nouvelle-Zélande\x1dheure avancée de Terre-Neuve\x03HAT%he" + - "ure avancée de Fernando de Noronha\x1eheure avancée de Novossibirsk\x17h" + - "eure avancée d’Omsk\x1aheure avancée du Pakistan\x1aheure avancée du Par" + - "aguay\x18heure avancée du Pérou\x1eheure avancée des Philippines*heure a" + - "vancée de Saint-Pierre-et-Miquelon\x1bheure avancée de Sakhaline\x18heur" + - "e avancée des Samoa\x18heure avancée de Taipei\x17heure avancée de Tonga" + - "\x1fheure avancée du Turkménistan\x1dheure avancée de l’Uruguay\x22heure" + - " avancée de l’Ouzbékistan\x19heure avancée de Vanuatu\x1dheure avancée d" + - "e Vladivostok\x1bheure avancée de Volgograd\x1aheure avancée de Iakoutsk" + - " heure avancée d’Ekaterinbourg\x0cde l’ap.m.\x11HH.mm:ss 'h' zzzz\x03GFT" + - "\x0ade la nuit\x03jr.\x0bdim dernier\x06ce dim\x0cdim prochain\x0blun de" + - "rnier\x06ce lun\x0clun prochain\x0bmar dernier\x06ce mar\x0cmar prochain" + - "\x0bmer dernier\x06ce mer\x0cmer prochain\x0bjeu dernier\x06ce jeu\x0cje" + - "u prochain\x0bven dernier\x06ce ven\x0cven prochain\x0bsam dernier\x06ce" + - " sam\x0csam prochain\x10le 1er trimestre\x12le 2ème trimestre\x12le 3ème" + - " trimestre\x12le 4ème trimestre\x1aEEEE d 'di' MMMM 'dal' y G\x15d 'di' " + - "MMMM 'dal' y G\x03Zen\x03Fev\x03Mar\x03Avr\x03Mai\x03Jug\x03Lui\x03Avo" + - "\x03Set\x03Otu\x03Nov\x03Dic\x06Zenâr\x07Fevrâr\x05Març\x06Avrîl\x04Jugn" + - "\x05Avost\x08Setembar\x06Otubar\x08Novembar\x08Dicembar\x07domenie\x05lu" + - "nis\x07martars\x07miercus\x05joibe\x06vinars\x06sabide\x0ePrin trimestri" + - "\x10Secont trimestri\x10Tierç trimestri\x0fCuart trimestri\x02a.\x02p." + - "\x03pdC\x03ddC\x18EEEE d 'di' MMMM 'dal' y\x13d 'di' MMMM 'dal' y\x03ere" + - "\x0cca di {0} an\x0eca di {0} agns\x0e{0} an indaûr\x10{0} agns indaûr" + - "\x04mês\x0eca di {0} mês\x10{0} mês indaûr\x08setemane\x12ca di {0} sete" + - "mane\x13ca di {0} setemanis\x14{0} setemane indaûr\x15{0} setemanis inda" + - "ûr\x03dì\x0dîr l’altri\x03îr\x04vuê\x05doman\x0cpassantdoman\x11ca di {" + - "0} zornade\x12ca di {0} zornadis\x13{0} zornade indaûr\x14{0} zornadis i" + - "ndaûr\x0fdì de setemane\x0btoc dal dì\x03ore\x0dca di {0} ore\x0eca di {" + - "0} oris\x0f{0} ore indaûr\x10{0} oris indaûr\x06minût\x10ca di {0} minût" + - "\x11ca di {0} minûts\x12{0} minût indaûr\x13{0} minûts indaûr\x06secont" + - "\x10ca di {0} secont\x11ca di {0} seconts\x12{0} secont indaûr\x13{0} se" + - "conts indaûr\x16Ore de Europe centrâl\x1fOre standard de Europe centrâl" + - "\x1dOre estive de Europe centrâl\x17Ore de Europe orientâl Ore standard " + - "de Europe orientâl\x1eOre estive de Europe orientâl\x18Ore de Europe oci" + - "dentâl!Ore standard de Europe ocidentâl\x1fOre estive de Europe ocidentâ" + - "l\x0dOre di Mosche\x16Ore standard di Mosche\x14Ore estive di Mosche\x0e" + - "dd-MM-yy GGGGG\x15begjin fan de maitiid\x0areinwetter\x14ynsekten ûntwei" + - "tsje\x0bmaitiidpunt\x10ljocht en helder\x15begjien fan de simmer\x0asimm" + - "erpunt\x05waarm\x04hjit\x14begjin fan de hjerst\x13ein fan de hjittens" + - "\x0awite dauwe\x0ahjerstpunt\x0ckâlde dauwe\x0dearste froast\x14begjin f" + - "an de winter\x0blichte snie\x0bswiere snie\x0awinterpunt\x04Rôt\x04Okse" + - "\x05Tiger\x04Knyn\x05Draak\x05Slang\x06Hynder\x04Geit\x03Aap\x06Hoanne" + - "\x04Hûn\x06Baarch\x03Tut\x05Babah\x05Hatur\x06Kiyahk\x05Tubah\x06Amshir" + - "\x08Baramhat\x0aBaramundah\x07Bashans\x09Ba’unah\x04Abib\x05Misra\x04Nas" + - "i\x0bMäskäräm\x06Teqemt\x05Hedar\x06Tahsas\x06T’er\x08Yäkatit\x08Mägabit" + - "\x07Miyazya\x06Genbot\x05Säne\x05Hamle\x07Nähase\x08Pagumän\x0aJannewari" + - "s\x0aFebrewaris\x05Maart\x05April\x05Maaie\x04Juny\x04July\x08Augustus" + - "\x09Septimber\x07Oktober\x08Novimber\x08Desimber\x05snein\x07moandei\x07" + - "tiisdei\x08woansdei\x0atongersdei\x05freed\x05sneon\x0d1e fearnsjier\x0d" + - "2e fearnsjier\x0d3e fearnsjier\x0d4e fearnsjier\x0cFoar Kristus\x18foar " + - "gewoane jiertelling\x0bnei Kristus\x13gewoane jiertelling\x06f.g.j.\x04g" + - ".j.\x04f.K.\x03fgj\x04n.K.\x02gj\x0c{1} 'om' {0}\x07Tisjrie\x08Chesjwan" + - "\x06Kislev\x05Tevet\x06Sjevat\x06Adar A\x04Adar\x06Adar B\x05Nisan\x04Ij" + - "ar\x05Sivan\x07Tammoez\x02Av\x06Elloel\x05Moeh.\x04Saf.\x06Rab. I\x07Rab" + - ". II\x07Joem. I\x08Joem. II\x04Raj.\x04Sja.\x04Ram.\x05Sjaw.\x09Doe al k" + - ".\x09Doe al h.\x09Moeharram\x05Safar\x0fRabiʻa al awal\x10Rabiʻa al than" + - "i\x0fJoemadʻal awal\x10Joemadʻal thani\x05Rajab\x09Sjaʻaban\x07Ramadan" + - "\x06Sjawal\x0eDoe al kaʻaba\x0cDoe al hizja\x0eSaʻna Hizjria\x08Tiidsrin" + - "\x04Jier\x0cfoarich jier\x08dit jier\x0dfolgjend jier\x0cOer {0} jier" + - "\x0c{0} jier lyn\x0aFearnsjier\x12foarich fearnsjier\x0edit fearnsjier" + - "\x13folgjend fearnsjier\x12oer {0} fearnsjier\x12{0} fearnsjier lyn\x0af" + - "earnsjier\x06Moanne\x0efoarige moanne\x0cdizze moanne\x10folgjende moann" + - "e\x0eOer {0} moanne\x0fOer {0} moannen\x0e{0} moanne lyn\x0f{0} moannen " + - "lyn\x04Wike\x0cfoarige wike\x0adizze wike\x0efolgjende wike\x0cOer {0} w" + - "ike\x0dOer {0} wiken\x0c{0} wike lyn\x0d{0} wiken lyn\x03dei\x0beergiste" + - "ren\x08gisteren\x07vandaag\x06morgen\x09Oermorgen\x0bOer {0} dei\x0dOer " + - "{0} deien\x0b{0} dei lyn\x0d{0} deien lyn\x0fdei van de wike\x0eôfrûne s" + - "nein\x0bdizze snein\x14folgjende wike snein\x10ôfrûne moandei\x0ddizze m" + - "oandei\x16folgjende wike moandei\x10ôfrûne tiisdei\x0ddizze tiisdei\x16f" + - "olgjende wike tiisdei\x11ôfrûne woansdei\x0edizze woansdei\x17folgjende " + - "wike woansdei\x13ôfrûne tongersdei\x10dizze tongersdei\x19folgjende wike" + - " tongersdei\x0eôfrûne freed\x0bdizze freed\x14folgjende wike freed\x0eôf" + - "rûne sneon\x0bdizze sneon\x14folgjende wike sneon\x04oere\x0cOer {0} oer" + - "e\x0c{0} oere lyn\x06Minút\x0eOer {0} minút\x0fOer {0} minuten\x0e{0} mi" + - "nút lyn\x0f{0} minuten lyn\x07Sekonde\x0fOer {0} sekonde\x10Oer {0} seko" + - "nden\x0f{0} sekonde lyn\x10{0} sekonden lyn\x08{0}-tiid\x0dZomertiid {0}" + - "\x11Standaardtiid {0}\x11Britse simmertiid\x10Ierse simmertiid\x09Acre-t" + - "iid\x11Acre-standerttiid\x0fAcre-simmertiid\x0fAfghaanske tiid\x19Sintra" + - "al-Afrikaanske tiid\x15East-Afrikaanske tiid\x15Sûd-Afrikaanske tiid\x15" + - "West-Afrikaanske tiid\x1dWest-Afrikaanske standerttiid\x1bWest-Afrikaans" + - "ke simmertiid\x0bAlaska-tiid\x13Alaska-standerttiid\x11Alaska-simmertiid" + - "\x0dAlma-Ata-tiid\x15Alma-Ata-standerttiid\x13Alma-Ata-simmertiid\x0cAma" + - "zone-tiid\x14Amazone-standerttiid\x12Amazone-simmertiid\x0cCentral-tiid" + - "\x14Central-standerttiid\x12Central-simmertiid\x0cEastern-tiid\x14Easter" + - "n-standerttiid\x12Eastern-simmertiid\x0dMountain-tiid\x15Mountain-stande" + - "rttiid\x13Mountain-simmertiid\x0cPasifik-tiid\x14Pasifik-standerttiid" + - "\x12Pasifik-simmertiid\x0bAnadyr-tiid\x13Anadyr-standerttiid\x11Anadyr-s" + - "immertiid\x0aAqtau-tiid\x12Aqtau-standerttiid\x10Aqtau-simmertiid\x0cAqt" + - "öbe-tiid\x14Aqtöbe-standerttiid\x12Aqtöbe-simmertiid\x0dArabyske tiid" + - "\x15Arabyske standerttiid\x13Arabyske simmertiid\x10Argentynske tiid\x18" + - "Argentynske standerttiid\x16Argentynske simmertiid\x15West-Argentynske t" + - "iid\x1dWest-Argentynske standerttiid\x1bWest-Argentynske simmertiid\x0dA" + - "rmeense tiid\x15Armeense standerttiid\x13Armeense simmertiid\x0dAtlantic" + - "-tiid\x15Atlantic-standerttiid\x13Atlantic-simmertiid\x17Midden-Australy" + - "ske tiid\x1fMidden-Australyske standerttiid\x1dMidden-Australyske simmer" + - "tiid\x22Midden-Australyske westelijke tiid*Midden-Australyske westelijke" + - " standerttiid(Midden-Australyske westelijke simmertiid\x15East-Australys" + - "ke tiid\x1dEast-Australyske standerttiid\x1bEast-Australyske simmertiid" + - "\x15West-Australyske tiid\x1dWest-Australyske standerttiid\x1bWest-Austr" + - "alyske simmertiid\x15Azerbeidzjaanske tiid\x1dAzerbeidzjaanske standertt" + - "iid\x1bAzerbeidzjaanske simmertiid\x0bAzoren-tiid\x13Azoren-standerttiid" + - "\x11Azoren-simmertiid\x0eBengalese tiid\x16Bengalese standerttiid\x14Ben" + - "galese simmertiid\x0fBhutaanske tiid\x11Boliviaanske tiid\x12Brazyljaans" + - "ke tiid\x1aBrazyljaanske standerttiid\x18Brazyljaanske simmertiid\x0dBru" + - "neise tiid\x11Kaapverdyske tiid\x19Kaapverdyske standerttiid\x17Kaapverd" + - "yske simmertiid\x0dChamorro-tiid\x0cChatham tiid\x14Chatham standerttiid" + - "\x12Chatham simmertiid\x0eSileenske tiid\x16Sileenske standerttiid\x14Si" + - "leenske simmertiid\x0dSineeske tiid\x15Sineeske standerttiid\x13Sineeske" + - " simmertiid\x10Tsjojbalsan tiid\x18Tsjojbalsan standerttiid\x16Tsjojbals" + - "an simmertiid\x13Krysteilânske tiid\x13Kokoseilânske tiid\x12Kolombiaans" + - "ke tiid\x1aKolombiaanske standerttiid\x18Kolombiaanske simmertiid\x11Coo" + - "keilânse tiid\x19Cookeilânse standerttiid\x1dCookeilânse halve simmertii" + - "d\x0eKubaanske tiid\x16Kubaanske standerttiid\x14Kubaanske simmertiid" + - "\x0aDavis tiid\x17Dumont-d’Urville tiid\x12East-Timorese tiid\x14Peaskee" + - "ilânske tiid\x1cPeaskeeilânske standerttiid\x1aPeaskeeilânske simmertiid" + - "\x12Ecuadoraanske tiid\x16Midden-Europeeske tiid\x1eMidden-Europeeske st" + - "anderttiid\x1cMidden-Europeeske simmertiid\x14East-Europeeske tiid\x1cEa" + - "st-Europeeske standerttiid\x1aEast-Europeeske simmertiid\x14West-Europee" + - "ske tiid\x1cWest-Europeeske standerttiid\x1aWest-Europeeske simmertiid" + - "\x16Falklâneilânske tiid\x1eFalklâneilânske standerttiid\x1cFalklâneilân" + - "ske simmertiid\x0cFijyske tiid\x14Fijyske standerttiid\x12Fijyske simmer" + - "tiid\x15Frâns-Guyaanske tiid%Frânske Súdlike en Antarctyske tiid\x17Gala" + - "pagoseilânske tiid\x15Gambiereilânske tiid\x0eGeorgyske tiid\x16Georgysk" + - "e standerttiid\x14Georgyske simmertiid\x15Gilberteilânske tiid\x13Greenw" + - "ich Mean Time\x16East-Groenlânske tiid\x1eEast-Groenlânske standerttiid" + - "\x1cEast-Groenlânske simmertiid\x16West-Groenlânske tiid\x1eWest-Groenlâ" + - "nske standerttiid\x1cWest-Groenlânske simmertiid\x14Guamese standerttiid" + - "\x11Golf standerttiid\x0eGuyaanske tiid\x16Hawaii-Aleoetyske tiid\x1eHaw" + - "aii-Aleoetyske standerttiid\x1cHawaii-Aleoetyske simmertiid\x0fHongkongs" + - "e tiid\x17Hongkongse standerttiid\x15Hongkongse simmertiid\x09Hovd tiid" + - "\x11Hovd standerttiid\x0fHovd simmertiid\x0eYndiaaske tiid\x13Yndyske Oc" + - "eaan-tiid\x10Yndochinese tiid\x19Sintraal-Yndonezyske tiid\x15East-Yndon" + - "ezyske tiid\x15West-Yndonezyske tiid\x0dIraanske tiid\x15Iraanske stande" + - "rttiid\x13Iraanske simmertiid\x0dIrkoetsk-tiid\x15Irkoetsk-standerttiid" + - "\x13Irkoetsk-simmertiid\x10Israëlyske tiid\x18Israëlyske standerttiid" + - "\x16Israëlyske simmertiid\x0dJapanske tiid\x15Japanske standerttiid\x13J" + - "apanske simmertiid\x1ePetropavlovsk-Kamtsjatski-tiid&Petropavlovsk-Kamts" + - "jatski-standerttiid$Petropavlovsk-Kamtsjatski-simmertiid\x12East-Kazachs" + - "e tiid\x12West-Kazachse tiid\x0fKoreaanske tiid\x17Koreaanske standertti" + - "id\x15Koreaanske simmertiid\x0dKosraese tiid\x10Krasnojarsk-tiid\x18Kras" + - "nojarsk-standerttiid\x16Krasnojarsk-simmertiid\x0fKirgizyske tiid\x0aLan" + - "ka-tiid\x13Line-eilânske tiid\x18Lord Howe-eilânske tiid Lord Howe-eilân" + - "ske standerttiid\x1eLord Howe-eilânske simmertiid\x0cMacause tiid\x14Mac" + - "ause standerttiid\x12Macause simmertiid\x18Macquarie-eilânske tiid\x0cMa" + - "gadan-tiid\x14Magadan-standerttiid\x12Magadan-simmertiid\x0fMaleisyske t" + - "iid\x0fMaldivyske tiid\x17Marquesaseilânske tiid\x16Marshalleilânske tii" + - "d\x12Mauritiaanske tiid\x1aMauritiaanske standerttiid\x18Mauritiaanske s" + - "immertiid\x0bMawson tiid\x10Ulaanbaatar tiid\x18Ulaanbaatar standerttiid" + - "\x16Ulaanbaatar simmertiid\x0bMoskou-tiid\x13Moskou-standerttiid\x11Mosk" + - "ou-simmertiid\x0fMyanmarese tiid\x10Nauruaanske tiid\x0dNepalese tiid" + - "\x14Nij-Kaledonyske tiid\x1cNij-Kaledonyske standerttiid\x1aNij-Kaledony" + - "ske simmertiid\x13Nij-Seelânske tiid\x1bNij-Seelânske standerttiid\x19Ni" + - "j-Seelânske simmertiid\x14Newfoundlânske-tiid\x1cNewfoundlânske-standert" + - "tiid\x1aNewfoundlânske-simmertiid\x0bNiuese tiid\x15Norfolkeilânske tiid" + - "\x18Fernando de Noronha-tiid Fernando de Noronha-standerttiid\x1eFernand" + - "o de Noronha-simmertiid\x19Noardlike Mariaanske tiid\x10Novosibirsk-tiid" + - "\x18Novosibirsk-standerttiid\x16Novosibirsk-simmertiid\x09Omsk-tiid\x11O" + - "msk-standerttiid\x0fOmsk-simmertiid\x11Pakistaanske tiid\x19Pakistaanske" + - " standerttiid\x17Pakistaanske simmertiid\x0cBelause tiid\x19Papoea-Nij-G" + - "uineeske tiid\x13Paraguayaanske tiid\x1bParaguayaanske standerttiid\x19P" + - "araguayaanske simmertiid\x0fPeruaanske tiid\x17Peruaanske standerttiid" + - "\x15Peruaanske simmertiid\x0fFilipijnse tiid\x17Filipijnse standerttiid" + - "\x15Filipijnse simmertiid\x15Phoenixeilânske tiid\x1dSaint Pierre en Miq" + - "uelon-tiid%Saint Pierre en Miquelon-standerttiid#Saint Pierre en Miquelo" + - "n-simmertiid\x17Pitcairneillânske tiid\x0cPohnpei tiid\x0eQyzylorda-tiid" + - "\x16Qyzylorda-standerttiid\x14Qyzylorda-simmertiid\x0fRéunionse tiid\x0c" + - "Rothera tiid\x0dSachalin-tiid\x15Sachalin-standerttiid\x13Sachalin-simme" + - "rtiid\x0bSamara-tiid\x13Samara-standerttiid\x11Samara-simmertiid\x0fSamo" + - "aanske tiid\x17Samoaanske standerttiid\x15Samoaanske simmertiid\x0eSeych" + - "else tiid\x18Singaporese standerttiid\x16Salomonseilânske tiid\x13Sûd-Ge" + - "orgyske tiid\x10Surinaamske tiid\x0aSyowa tiid\x11Tahitiaanske tiid\x0bT" + - "aipei tiid\x13Taipei standerttiid\x11Taipei simmertiid\x0fTadzjiekse tii" + - "d\x16Tokelau-eilânske tiid\x0fTongaanske tiid\x17Tongaanske standerttiid" + - "\x15Tongaanske simmertiid\x0cChuukse tiid\x0fTurkmeense tiid\x17Turkmeen" + - "se standerttiid\x15Turkmeense simmertiid\x11Tuvaluaanske tiid\x12Uruguay" + - "aanske tiid\x1aUruguayaanske standerttiid\x18Uruguayaanske simmertiid" + - "\x0eOezbeekse tiid\x16Oezbeekse standerttiid\x14Oezbeekse simmertiid\x12" + - "Vanuatuaanske tiid\x1aVanuatuaanske standerttiid\x18Vanuatuaanske simmer" + - "tiid\x12Fenezolaanske tiid\x10Vladivostok-tiid\x18Vladivostok-standertti" + - "id\x16Vladivostok-simmertiid\x0eWolgograd-tiid\x16Wolgograd-standerttiid" + - "\x14Wolgograd-simmertiid\x0bVostok tiid\x13Wake-eilânske tiid\x17Wallis " + - "en Futunase tiid\x0dJakoetsk-tiid\x15Jakoetsk-standerttiid\x13Jakoetsk-s" + - "immertiid\x14Jekaterinenburg-tiid\x1cJekaterinenburg-standerttiid\x1aJek" + - "aterinenburg-simmertiid\x06Amshir\x08Baramhat\x07Bashans\x05Hedar\x06Tah" + - "sas\x06Genbot\x05Hamle\x06Kislev\x05Tevet\x04Adar\x05Nisan\x05Sivan\x02A" + - "v\x04Saf.\x06Rab. I\x07Rab. II\x04Raj.\x04Ram.\x05Safar\x05Rajab\x07Rama" + - "dan\x06morgen\x0aovermorgen\x05Hedar\x07Tahesas\x03Ter\x07Guenbot\x06Sän" + - "é\x06Hamlé\x08Nähasé\x08Pagumén" - -var bucket39 string = "" + // Size: 12971 bytes - "\x02RB\x03Ean\x05Feabh\x06Márta\x03Aib\x04Beal\x05Meith\x05Iúil\x04Lún" + - "\x06MFómh\x06DFómh\x04Samh\x04Noll\x07Eanáir\x07Feabhra\x08Aibreán\x09Be" + - "altaine\x09Meitheamh\x07Lúnasa\x0eMeán Fómhair\x11Deireadh Fómhair\x07Sa" + - "mhain\x07Nollaig\x04Domh\x04Luan\x06Máirt\x05Céad\x05Déar\x05Aoine\x04Sa" + - "th\x0dDé Domhnaigh\x09Dé Luain\x0aDé Máirt\x0dDé Céadaoin\x0aDéardaoin" + - "\x0aDé hAoine\x0cDé Sathairn\x0b1ú ráithe\x0b2ú ráithe\x0b3ú ráithe\x0b4" + - "ú ráithe\x0eRoimh Chríost\x0fRoimh Chomh-Ré\x0bAnno Domini\x08Comh-Ré" + - "\x02RC\x03RCR\x02AD\x02CR\x03Ré\x06Bliain\x08anuraidh\x0ean bhliain seo" + - "\x17an bhliain seo chugainn\x14i gceann {0} bhliain\x13i gceann {0} blia" + - "na\x14i gceann {0} mbliana\x13i gceann {0} bliain\x13{0} bhliain ó shin" + - "\x12{0} bliana ó shin\x13{0} mbliana ó shin\x12{0} bliain ó shin\x0ban b" + - "hl. seo\x14an bhl. seo chugainn\x10i gceann {0} bl.\x11i gceann {0} bhl." + - "\x11i gceann {0} mbl.\x10{0} bhl. ó shin\x0f{0} bl. ó shin\x10{0} mbl. ó" + - " shin\x09+{0} bhl.\x08+{0} bl.\x09+{0} mbl.\x09-{0} bhl.\x08-{0} bl.\x09" + - "-{0} mbl.\x07Ráithe\x14an ráithe seo caite\x0ean ráithe seo\x17an ráithe" + - " seo chugainn\x14i gceann {0} ráithe\x13{0} ráithe ó shin\x07ráithe\x06+" + - "{0} R\x06-{0} R\x03Mí\x11an mhí seo caite\x0ban mhí seo\x14an mhí seo ch" + - "ugainn\x11i gceann {0} mhí\x10i gceann {0} mí\x10{0} mhí ó shin\x0f{0} m" + - "í ó shin\x03mí\x09+{0} mhí\x08+{0} mí\x09-{0} mhí\x08-{0} mí\x09Seachta" + - "in\x17an tseachtain seo caite\x11an tseachtain seo\x1aan tseachtain seo " + - "chugainn\x16i gceann {0} seachtain\x17i gceann {0} sheachtain\x17i gcean" + - "n {0} seachtaine\x15{0} seachtain ó shin\x16{0} sheachtain ó shin\x16{0}" + - " seachtaine ó shin\x0dseachtain {0}\x05scht.\x13an tscht. seo caite\x0da" + - "n tscht. seo\x16an tscht. seo chugainn\x12i gceann {0} scht.\x13i gceann" + - " {0} shcht.\x11{0} scht. ó shin\x0a+{0} scht.\x0a-{0} scht.\x03Lá\x0aarú" + - " inné\x05inné\x05inniu\x08amárach\x0darú amárach\x10i gceann {0} lá\x0f{" + - "0} lá ó shin\x08+{0} lá\x08-{0} lá\x11Lá na seachtaine\x15an Domhnach se" + - "o caite\x0fan Domhnach seo\x18an Domhnach seo chugainn\x1a{0} seachtain " + - "ón Domhnach\x1b{0} sheachtain ón Domhnach\x1b{0} seachtaine ón Domhnach" + - "#Dé Domhnaigh {0} seachtain ó shin$Dé Domhnaigh {0} sheachtain ó shin$Dé" + - " Domhnaigh {0} seachtaine ó shin\x12an Domh. seo caite\x0can Domh. seo" + - "\x15an Domh. seo chugainn\x17{0} seachtain ón Domh.\x18{0} sheachtain ón" + - " Domh.\x18{0} seachtaine ón Domh.\x1fDé Domh. {0} seachtain ó shin Dé Do" + - "mh. {0} sheachtain ó shin Dé Domh. {0} seachtaine ó shin\x11an Domh seo " + - "caite\x0ban Domh seo\x11an Domh seo chug.\x0a+{0} Domh.\x0b+{0} Dhomh." + - "\x0b+{0} nDomh.\x11{0} Domh. ó shin\x12{0} Dhomh. ó shin\x12{0} nDomh. ó" + - " shin\x11an Luan seo caite\x0ban Luan seo\x14an Luan seo chugainn\x16{0}" + - " seachtain ón Luan\x17{0} sheachtain ón Luan\x17{0} seachtaine ón Luan" + - "\x1fDé Luain {0} seachtain ó shin Dé Luain {0} sheachtain ó shin Dé Luai" + - "n {0} seachtaine ó shin\x11an Luan seo chug.\x09+{0} Luan\x10{0} Luan ó " + - "shin\x14an Mháirt seo caite\x0ean Mháirt seo\x17an Mháirt seo chugainn" + - "\x18{0} seachtain ón Máirt\x19{0} sheachtain ón Máirt\x19{0} seachtaine " + - "ón Máirt Dé Máirt {0} seachtain ó shin!Dé Máirt {0} sheachtain ó shin!D" + - "é Máirt {0} seachtaine ó shin\x14an Mháirt seo chug.\x0c+{0} Mháirt\x0b" + - "+{0} Máirt\x13{0} Mháirt ó shin\x12{0} Máirt ó shin\x17an Chéadaoin seo " + - "caite\x11an Chéadaoin seo\x1aan Chéadaoin seo chugainn\x1c{0} seachtain " + - "ón Chéadaoin\x1d{0} sheachtain ón Chéadaoin\x1d{0} seachtaine ón Chéada" + - "oin#Dé Céadaoin {0} seachtain ó shin$Dé Céadaoin {0} sheachtain ó shin$D" + - "é Céadaoin {0} seachtaine ó shin\x14an Chéad. seo caite\x0ean Chéad. se" + - "o\x17an Chéad. seo chugainn\x13an Chéad seo chug.\x0f+{0} Chéadaoin\x0f+" + - "{0} gCéadaoin\x0e+{0} Céadaoin\x16{0} Chéadaoin ó shin\x16{0} gCéadaoin " + - "ó shin\x15{0} Céadaoin ó shin\x17an Déardaoin seo caite\x11an Déardaoin" + - " seo\x1aan Déardaoin seo chugainn\x1c{0} seachtain ón Déardaoin\x1d{0} s" + - "heachtain ón Déardaoin\x1d{0} seachtaine ón Déardaoin Déardaoin {0} seac" + - "htain ó shin!Déardaoin {0} sheachtain ó shin!Déardaoin {0} seachtaine ó " + - "shin\x13an Déar. seo caite\x0dan Déar. seo\x16an Déar. seo chugainn\x13a" + - "n Déar. seo chug.\x0f+{0} Déardaoin\x10+{0} Dhéardaoin\x10+{0} nDéardaoi" + - "n\x16{0} Déardaoin ó shin\x17{0} Dhéardaoin ó shin\x17{0} nDéardaoin ó s" + - "hin\x12an Aoine seo caite\x0can Aoine seo\x15an Aoine seo chugainn\x17{0" + - "} seachtain ón Aoine\x18{0} sheachtain ón Aoine\x18{0} seachtaine ón Aoi" + - "ne Dé hAoine {0} seachtain ó shin!Dé hAoine {0} sheachtain ó shin!Dé hAo" + - "ine {0} seachtaine ó shin\x12an Aoine seo chug.\x0a+{0} Aoine\x11{0} Aoi" + - "ne ó shin\x14an Satharn seo caite\x0ean Satharn seo\x17an Satharn seo ch" + - "ugainn\x19{0} seachtain ón Satharn\x1a{0} sheachtain ón Satharn\x1a{0} s" + - "eachtaine ón Satharn\x22Dé Sathairn {0} seachtain ó shin#Dé Sathairn {0}" + - " sheachtain ó shin#Dé Sathairn {0} seachtaine ó shin\x12an Sath. seo cai" + - "te\x0can Sath. seo\x15an Sath. seo chugainn\x11an Sath seo caite\x0ban S" + - "ath seo\x11an Sath seo chug.\x0c+{0} Satharn\x0d+{0} Shatharn\x13{0} Sat" + - "harn ó shin\x14{0} Shatharn ó shin\x04Uair\x0ban uair seo\x1bi gceann {0" + - "} uair an chloig\x1di gceann {0} huaire an chloig\x1ei gceann {0} n-uair" + - "e an chloig\x1a{0} uair an chloig ó shin\x1c{0} huaire an chloig ó shin" + - "\x1d{0} n-uaire an chloig ó shin\x04uair\x11i gceann {0} uair\x13i gcean" + - "n {0} huaire\x14i gceann {0} n-uaire\x10{0} uair ó shin\x12{0} huaire ó " + - "shin\x13{0} n-uaire ó shin\x06+{0} u\x06-{0} u\x09Nóiméad\x10an nóiméad " + - "seo\x16i gceann {0} nóiméad\x15{0} nóiméad ó shin\x06nóim.\x13i gceann {" + - "0} nóim.\x12{0} nóim. ó shin\x06+{0} n\x06-{0} n\x07Soicind\x05anois\x14" + - "i gceann {0} soicind\x15i gceann {0} shoicind\x13{0} soicind ó shin\x14{" + - "0} shoicind ó shin\x05soic.\x12i gceann {0} soic.\x13i gceann {0} shoic." + - "\x11{0} soic. ó shin\x12{0} shoic. ó shin\x09Crios Ama\x19Am Samhraidh n" + - "a Breataine\x03ASB\x1dAm Caighdéanach na hÉireann\x04ACÉ\x07Am Acre\x15A" + - "m Caighdeánach Acre\x11Am Samhraidh Acre\x14Am na hAfganastáine\x13Am Lá" + - "r na hAfraice\x17Am Oirthear na hAfraice\x22Am Caighdeánach na hAfraice " + - "Theas\x16Am Iarthar na hAfraice$Am Caighdeánach Iarthar na hAfraice Am S" + - "amhraidh Iarthar na hAfraice\x09Am Alasca\x17Am Caighdeánach Alasca\x13A" + - "m Samhraidh Alasca\x09Am Almaty\x17Am Caighdeánach Almaty\x13Am Samhraid" + - "h Almaty\x10Am na hAmasóine\x1eAm Caighdeánach na hAmasóine\x1aAm Samhra" + - "idh na hAmasóine\x0bAm Lárnach\x19Am Caighdeánach Lárnach\x15Am Samhraid" + - "h Lárnach\x0dAm an Oirthir\x1bAm Caighdeánach an Oirthir\x17Am Samhraidh" + - " an Oirthir\x0fAm na Sléibhte\x1dAm Caighdeánach na Sléibhte\x19Am Samhr" + - "aidh na Sléibhte\x15Am an Aigéin Chiúin#Am Caighdeánach an Aigéin Chiúin" + - "\x1fAm Samhraidh an Aigéin Chiúin\x09Am Anadyr\x17Am Caighdeánach Anadyr" + - "\x13Am Samhraidh Anadyr\x07Am Apia\x15Am Caighdeánach Apia\x11Am Samhrai" + - "dh Apia\x08Am Aqtau\x16Am Caighdeánach Aqtau\x12Am Samhraidh Aqtau\x09Am" + - " Aqtobe\x17Am Caighdeánach Aqtobe\x13Am Samhraidh Aqtobe\x0dAm na hAraib" + - "e\x1bAm Caighdeánach na hAraibe\x17Am Samhraidh na hAraibe\x12Am na hAir" + - "gintíne Am Caighdeánach na hAirgintíne\x1cAm Samhraidh na hAirgintíne" + - "\x1aAm Iarthar na hAirgintíne(Am Caighdeánach Iarthar na hAirgintíne$Am " + - "Samhraidh Iarthar na hAirgintíne\x10Am na hAirméine\x1eAm Caighdeánach n" + - "a hAirméine\x1aAm Samhraidh na hAirméine\x10Am an Atlantaigh\x1eAm Caigh" + - "deánach an Atlantaigh\x1aAm Samhraidh an Atlantaigh\x15Am Lár na hAstrái" + - "le#Am Caighdeánach Lár na hAstráile\x1fAm Samhraidh Lár na hAstráile\x1e" + - "Am Mheániarthar na hAstráile,Am Caighdeánach Mheániarthar na hAstráile(A" + - "m Samhraidh Mheániarthar na hAstráile\x19Am Oirthear na hAstráile'Am Cai" + - "ghdeánach Oirthear na hAstráile#Am Samhraidh Oirthear na hAstráile\x18Am" + - " Iarthar na hAstráile&Am Caighdeánach Iarthar na hAstráile\x22Am Samhrai" + - "dh Iarthar na hAstráile\x15Am na hAsarbaiseáine#Am Caighdeánach na hAsar" + - "baiseáine\x1fAm Samhraidh na hAsarbaiseáine\x0cAm na nAsór\x1aAm Caighde" + - "ánach na nAsór\x16Am Samhraidh na nAsór\x13Am na Banglaidéise!Am Caighd" + - "eánach na Banglaidéise\x1dAm Samhraidh na Banglaidéise\x0fAm na Bútáine" + - "\x0dAm na Bolaive\x0dAm Bhrasília\x1bAm Caighdeánach Bhrasília\x17Am Sam" + - "hraidh Bhrasília\x16Am Brúiné Darasalám\x0dAm Rinn Verde\x1bAm Caighdeán" + - "ach Rinn Verde\x17Am Samhraidh Rinn Verde\x13Am Stáisiún Casey\x1bAm Cai" + - "ghdeánach Seamórach\x0aAm Chatham\x18Am Caighdeánach Chatham\x14Am Samhr" + - "aidh Chatham\x0aAm na Sile\x18Am Caighdeánach na Sile\x14Am Samhraidh na" + - " Sile\x0bAm na Síne\x19Am Caighdeánach na Síne\x15Am Samhraidh na Síne" + - "\x0dAm Choibalsan\x1bAm Caighdeánach Choibalsan\x17Am Samhraidh Choibals" + - "an\x14Am Oileán na Nollag\x11Am Oileáin Cocos\x0eAm na Colóime\x1cAm Cai" + - "ghdeánach na Colóime\x18Am Samhraidh na Colóime\x10Am Oileáin Cook\x1eAm" + - " Caighdeánach Oileáin Cook Am Leathshamhraidh Oileáin Cook\x09Am Chúba" + - "\x17Am Caighdeánach Chúba\x13Am Samhraidh Chúba\x13Am Stáisiún Davis Am " + - "Stáisiún Dumont-d’Urville\x12Am Thíomór Thoir\x14Am Oileán na Cásca\x22A" + - "m Caighdeánach Oileán na Cásca\x1eAm Samhraidh Oileán na Cásca\x0cAm Eac" + - "uadór\x11Am Lár na hEorpa\x1fAm Caighdeánach Lár na hEorpa\x1bAm Samhrai" + - "dh Lár na hEorpa\x15Am Oirthear na hEorpa#Am Caighdeánach Oirthear na hE" + - "orpa\x1fAm Samhraidh Oirthear na hEorpa\x1aAm Chianoirthear na hEorpa" + - "\x14Am Iarthar na hEorpa\x22Am Caighdeánach Iarthar na hEorpa\x1eAm Samh" + - "raidh Iarthar na hEorpa\x17Am Oileáin Fháclainne%Am Caighdeánach Oileáin" + - " Fháclainne!Am Samhraidh Oileáin Fháclainne\x0aAm Fhidsí\x18Am Caighdeán" + - "ach Fhidsí\x14Am Samhraidh Fhidsí\x15Am Ghuáin na Fraince+Am Chríocha Fr" + - "ancacha Deisceart an Domhain\x16Am Oileáin Galápagos\x0bAm Ghambier\x0eA" + - "m na Seoirsia\x1cAm Caighdeánach na Seoirsia\x18Am Samhraidh na Seoirsia" + - "\x0fAm Chireabaití\x12Meán-Am Greenwich\x1aAm Oirthear na Graonlainne(Am" + - " Caighdeánach Oirthear na Graonlainne$Am Samhraidh Oirthear na Graonlain" + - "ne\x19Am Iarthar na Graonlainne'Am Caighdeánach Iarthar na Graonlainne#A" + - "m Samhraidh Iarthar na Graonlainne\x16Am Caighdeánach Ghuam\x1fAm Caighd" + - "eánach na Murascaille\x0dAm na Guáine\x13Am Haváí-Ailiúit!Am Caighdeánac" + - "h Haváí-Ailiúit\x1dAm Samhraidh Haváí-Ailiúit\x0cAm Hong Cong\x1aAm Caig" + - "hdeánach Hong Cong\x16Am Samhraidh Hong Cong\x07Am Hovd\x15Am Caighdeána" + - "ch Hovd\x11Am Samhraidh Hovd\x1aAm Caighdeánach na hIndia\x16Am an Aigéi" + - "n Indiaigh\x10Am na hInd-Síne\x16Am Lár na hIndinéise\x1aAm Oirthear na " + - "hIndinéise\x19Am Iarthar na hIndinéise\x0fAm na hIaráine\x1dAm Caighdeán" + - "ach na hIaráine\x19Am Samhraidh na hIaráine\x0aAm Irkutsk\x18Am Caighdeá" + - "nach Irkutsk\x14Am Samhraidh Irkutsk\x0aAm Iosrael\x18Am Caighdeánach Io" + - "srael\x14Am Samhraidh Iosrael\x0fAm na Seapáine\x1dAm Caighdeánach na Se" + - "apáine\x19Am Samhraidh na Seapáine\x1cAm Phetropavlovsk-Kamchatski*Am Ca" + - "ighdeánach Phetropavlovsk-Kamchatski&Am Samhraidh Phetropavlovsk-Kamchat" + - "ski\x1bAm Oirthear na Casacstáine\x1aAm Iarthar na Casacstáine\x0dAm na " + - "Cóiré\x1bAm Caighdeánach na Cóiré\x17Am Samhraidh na Cóiré\x09Am Kosrae" + - "\x0eAm Krasnoyarsk\x1cAm Caighdeánach Krasnoyarsk\x18Am Samhraidh Krasno" + - "yarsk\x13Am na Cirgeastáine\x0eAm Shrí Lanca\x14Am Oileáin na Líne\x0cAm" + - " Lord Howe\x1aAm Caighdeánach Lord Howe\x16Am Samhraidh Lord Howe\x09Am " + - "Mhacao\x17Am Caighdeánach Mhacao\x13Am Samhraidh Mhacao\x16Am Oileán Mhi" + - "c Guaire\x0bAm Mhagadan\x19Am Caighdeánach Mhagadan\x15Am Samhraidh Mhag" + - "adan\x0fAm na Malaeisia\x16Am Oileáin Mhaildíve\x18Am na nOileán Marcasa" + - "ch\x14Am Oileáin Marshall\x13Am Oileán Mhuirís!Am Caighdeánach Oileán Mh" + - "uirís\x1dAm Samhraidh Oileán Mhuirís\x14Am Stáisiún Mawson\x1cAm Iarthua" + - "isceart Mheicsiceo*Am Caighdeánach Iarthuaisceart Mheicsiceo&Am Samhraid" + - "h Iarthuaisceart Mheicsiceo!Am Meicsiceach an Aigéin Chiúin/Am Caighdeán" + - "ach Meicsiceach an Aigéin Chiúin+Am Samhraidh Meicsiceach an Aigéin Chiú" + - "in\x0eAm Ulánbátar\x1cAm Caighdeánach Ulánbátar\x18Am Samhraidh Ulánbáta" + - "r\x0aAm Mhoscó\x18Am Caighdeánach Mhoscó\x14Am Samhraidh Mhoscó\x0bAm Mh" + - "aenmar\x09Am Nárú\x0aAm Neipeal\x15Am na Nua-Chaladóine#Am Caighdeánach " + - "na Nua-Chaladóine\x1fAm Samhraidh na Nua-Chaladóine\x15Am na Nua-Shéalai" + - "nne#Am Caighdeánach na Nua-Shéalainne\x1fAm Samhraidh na Nua-Shéalainne" + - "\x13Am Thalamh an Éisc!Am Caighdeánach Thalamh an Éisc\x1dAm Samhraidh T" + - "halamh an Éisc\x07Am Niue\x12Am Oileán Norfolk\x17Am Fhernando de Noronh" + - "a%Am Caighdeánach Fhernando de Noronha!Am Samhraidh Fhernando de Noronha" + - "\x22Am na nOileán Máirianach Thuaidh\x0eAm Novosibirsk\x1cAm Caighdeánac" + - "h Novosibirsk\x18Am Samhraidh Novosibirsk\x07Am Omsk\x15Am Caighdeánach " + - "Omsk\x11Am Samhraidh Omsk\x11Am na Pacastáine\x1fAm Caighdeánach na Paca" + - "stáine\x1bAm Samhraidh na Pacastáine\x11Am Oileáin Palau\x14Am Nua-Ghuin" + - "e Phapua\x0bAm Pharagua\x19Am Caighdeánach Pharagua\x15Am Samhraidh Phar" + - "agua\x0bAm Pheiriú\x19Am Caighdeánach Pheiriú\x15Am Samhraidh Pheiriú" + - "\x1bAm na nOileán Filipíneach)Am Caighdeánach na nOileán Filipíneach%Am " + - "Samhraidh na nOileán Filipíneach\x18Am Oileáin an Fhéinics\x1bAm Saint-P" + - "ierre-et-Miquelon)Am Caighdeánach Saint-Pierre-et-Miquelon%Am Samhraidh " + - "Saint-Pierre-et-Miquelon\x13Am Oileán Pitcairn\x0bAm Phohnpei\x0cAm Pyon" + - "gyang\x0cAm Qyzylorda\x1aAm Caighdeánach Qyzylorda\x16Am Samhraidh Qyzyl" + - "orda\x0bAm Réunion\x15Am Stáisiún Rothera\x0cAm Shakhalin\x1aAm Caighdeá" + - "nach Shakhalin\x16Am Samhraidh Shakhalin\x0aAm Shamara\x18Am Caighdeánac" + - "h Shamara\x14Am Samhraidh Shamara\x09Am Shamó\x17Am Caighdeánach Shamó" + - "\x13Am Samhraidh Shamó\x0fAm na Séiséal\x1cAm Caighdeánach Shingeapór" + - "\x15Am Oileáin Sholomón\x14Am na Seoirsia Theas\x0bAm Shuranam\x13Am Stá" + - "isiún Syowa\x0dAm Thaihítí\x0aAm Thaipei\x18Am Caighdeánach Thaipei\x14A" + - "m Samhraidh Thaipei\x18Am na Táidsíceastáine\x14Am Oileáin Tócalá\x09Am " + - "Thonga\x17Am Caighdeánach Thonga\x13Am Samhraidh Thonga\x08Am Chuuk\x18A" + - "m na Tuircméanastáine&Am Caighdeánach na Tuircméanastáine\x22Am Samhraid" + - "h na Tuircméanastáine\x0aAm Thuvalu\x09Am Uragua\x17Am Caighdeánach Urag" + - "ua\x13Am Samhraidh Uragua\x19Am na hÚisbéiceastáine'Am Caighdeánach na h" + - "Úisbéiceastáine#Am Samhraidh na hÚisbéiceastáine\x0bAm Vanuatú\x19Am Ca" + - "ighdeánach Vanuatú\x15Am Samhraidh Vanuatú\x0eAm Veiniséala\x0eAm Vladiv" + - "ostok\x1cAm Caighdeánach Vladivostok\x18Am Samhraidh Vladivostok\x0cAm V" + - "olgograd\x1aAm Caighdeánach Volgograd\x16Am Samhraidh Volgograd\x14Am St" + - "áisiún Vostok\x0fAm Oileán Wake\x17Am Vailís agus Futúna\x0bAm Iacútsc" + - "\x19Am Caighdeánach Iacútsc\x15Am Samhraidh Iacútsc\x10Am Yekaterinburg" + - "\x1eAm Caighdeánach Yekaterinburg\x1aAm Samhraidh Yekaterinburg\x02AD" - -var bucket40 string = "" + // Size: 10978 bytes - "\x04Faoi\x05Gearr\x05Màrt\x04Gibl\x05Cèit\x05Ògmh\x04Iuch\x05Lùna\x04Sul" + - "t\x05Dàmh\x04Samh\x05Dùbh\x10dhen Fhaoilleach\x0ddhen Ghearran\x0bdhen M" + - "hàrt\x0ddhen Ghiblean\x0edhen Chèitean\x0ddhen Ògmhios\x0bdhen Iuchar" + - "\x0edhen Lùnastal\x0edhen t-Sultain\x0ddhen Dàmhair\x0edhen t-Samhain" + - "\x0fdhen Dùbhlachd\x0dAm Faoilleach\x0aAn Gearran\x08Am Màrt\x0aAn Gible" + - "an\x0bAn Cèitean\x0dAn t-Ògmhios\x0bAn t-Iuchar\x0cAn Lùnastal\x0cAn t-S" + - "ultain\x0bAn Dàmhair\x0cAn t-Samhain\x0dAn Dùbhlachd\x03DiD\x03DiL\x03Di" + - "M\x03DiC\x03Dia\x03Dih\x03DiS\x03Dò\x02Lu\x03Mà\x02Ci\x02Da\x02hA\x02Sa" + - "\x0cDiDòmhnaich\x07DiLuain\x08DiMàirt\x09DiCiadain\x09DiarDaoin\x08DihAo" + - "ine\x0bDiSathairne\x02C1\x02C2\x02C3\x02C4\x0c1d chairteal\x0c2na cairte" + - "al\x0b3s cairteal\x0c4mh cairteal\x0cRo Chrìosta\x13An dèidh Chrìosta" + - "\x12EEEE, d'mh' MMMM y\x0cd'mh' MMMM y\x0fRo Ph. na Sìne\x08Mínguó\x06Ro" + - " PnS\x04linn\x08bliadhna\x0ea-bhòn-uiridh\x09an-uiridh\x0bam bliadhna" + - "\x10an ath-bhliadhna\x16an ceann {0} bhliadhna\x1ban ceann {0} bliadhnai" + - "chean\x15an ceann {0} bliadhna\x15{0} bhliadhna air ais\x1b{0} bhliadhna" + - "ichean air ais\x14{0} bliadhna air ais\x05blia.\x0dan {0} bhlia.\x0can {" + - "0} blia.\x0co {0} bhlia.\x0bo {0} blia.\x09a-bh-uir.\x07an-uir.\x06am bl" + - ".\x0ban ath-bhl.\x08cairteal\x16an cairteal seo chaidh\x0fan cairteal se" + - "o\x10an ath-chairteal\x16an ceann {0} chairteil\x17an ceann {0} cairteal" + - "an\x15an ceann {0} cairteil\x16o chionn {0} chairteil\x17o chionn {0} ca" + - "irtealan\x15o chionn {0} cairteil\x06cairt.\x13an cairt. sa chaidh\x0dan" + - " cairt. seo\x0ean ath-chairt.\x0ean {0} chairt.\x0dan {0} cairt.\x0do {0" + - "} chairt.\x0co {0} cairt.\x02c.\x06c. ch.\x09an c. seo\x07ath-ch.\x07+{0" + - "} c.\x07-{0} c.\x05mìos\x13am mìos seo chaidh\x0cam mìos seo\x0dan ath-m" + - "hìos\x14an ceann {0} mhìosa\x14an ceann {0} mìosan\x13an ceann {0} mìosa" + - "\x12{0} mhìos air ais\x13{0} mìosan air ais\x11{0} mìos air ais\x12am mì" + - "os sa chaidh\x0ean {0} mhìos.\x0dan {0} mìos.\x0do {0} mhìos.\x0co {0} m" + - "ìos.\x04mì.\x08mì. ch.\x0bam mì. seo\x09ath-mhì.\x0a+{0} mhì.\x09+{0} m" + - "ì.\x0a-{0} mhì.\x09-{0} mì.\x09seachdain\x19an t-seachdain seo chaidh" + - "\x12an t-seachdain seo\x11an ath-sheachdain\x16an ceann {0} seachdain" + - "\x17an ceann {0} sheachdain\x19an ceann {0} seachdainean\x15{0} seachdai" + - "n air ais\x16{0} sheachdain air ais\x18{0} seachdainean air ais\x07seach" + - "d.\x11seachd. sa chaidh\x10an t-seachd. seo\x0fan ath-sheachd.\x0fan {0}" + - " sheachd.\x0ean {0} seachd.\x0eo {0} sheachd.\x0do {0} seachd.\x03sn." + - "\x07sn. ch.\x0can t-sn. seo\x08ath-shn.\x08+{0} sn.\x08-{0} sn.\x05latha" + - "\x0ca-bhòin-dè\x06an-dè\x08an-diugh\x0ba-màireach\x08an-earar\x0ban-eara" + - "rais\x12an ceann {0} latha\x16an ceann {0} làithean\x11{0} latha air ais" + - "\x15{0} làithean air ais\x03là\x0aan {0} là\x0ban {0} là.\x09o {0} là" + - "\x0ao {0} là.\x08+{0} là\x08-{0} là\x13latha na seachdaine\x17DiDòmhnaic" + - "h seo chaidh\x18DiDòmhnaich seo tighinn\x0eDiD. sa chaidh\x04DiD.\x0fDiD" + - ". sa tighinn\x08Dò. ch.\x04Dò.\x08Dò. ti.\x12DiLuain seo chaidh\x13DiLua" + - "in seo tighinn\x0eDiL. sa chaidh\x04DiL.\x0fDiL. sa tighinn\x07Lu. ch." + - "\x03Lu.\x07Lu. ti.\x13DiMàirt seo chaidh\x14DiMàirt seo tighinn\x0eDiM. " + - "sa chaidh\x04DiM.\x0fDiM. sa tighinn\x08Mà. ch.\x04Mà.\x08Mà. ti.\x14DiC" + - "iadain seo chaidh\x15DiCiadain seo tighinn\x0eDiC. sa chaidh\x04DiC.\x0f" + - "DiC. sa tighinn\x07Ci. ch.\x03Ci.\x07Ci. ti.\x14DiarDaoin seo chaidh\x15" + - "DiarDaoin seo tighinn\x0eDia. sa chaidh\x04Dia.\x0fDia. sa tighinn\x07Da" + - ". ch.\x03Da.\x07Da. ti.\x13DihAoine seo chaidh\x14DihAoine seo tighinn" + - "\x0eDih. sa chaidh\x04Dih.\x0fDih. sa tighinn\x07hA. ch.\x03hA.\x07hA. t" + - "i.\x16DiSathairne seo chaidh\x17DiSathairne seo tighinn\x0eDiS. sa chaid" + - "h\x04DiS.\x0fDiS. sa tighinn\x07Sa. ch.\x03Sa.\x07Sa. ti.\x03m/f\x0duair" + - " a thìde\x1aan ceann {0} uair a thìde\x1dan ceann {0} uairean a thìde" + - "\x19{0} uair a thìde air ais\x1c{0} uairean a thìde air ais\x0ban {0} ua" + - "ir\x0can {0} uair.\x0ao {0} uair\x0bo {0} uair.\x07+{0} u.\x07-{0} u." + - "\x07mionaid\x15an ceann {0} mhionaid\x17an ceann {0} mionaidean\x14an ce" + - "ann {0} mionaid\x14{0} mhionaid air ais\x16{0} mionaidean air ais\x13{0}" + - " mionaid air ais\x05mion.\x0dan {0} mhion.\x0can {0} mion.\x0co {0} mhio" + - "n.\x0bo {0} mion.\x04diog\x0aan-dràsta\x11an ceann {0} diog\x12an ceann " + - "{0} dhiog\x13an ceann {0} diogan\x10{0} diog air ais\x11{0} dhiog air ai" + - "s\x12{0} diogan air ais\x0ban {0} diog\x0can {0} dhiog\x0can {0} diog." + - "\x0ao {0} diog\x0bo {0} dhiog\x0bo {0} diog.\x0broinn-tìde\x1aTìde samhr" + - "aidh Bhreatainn\x03TSB\x15Bun-àm na h-Èireann\x0eTSÈ (Èirinn)\x03HDT\x08" + - "Àm Acre\x0cBun-àm Acre\x14Tìde samhraidh Acre\x11Àm Afghanastàin\x12Àm " + - "Meadhan Afraga\x11Àm Afraga an Ear\x11Àm Afraga a Deas\x11Àm Afraga an I" + - "ar\x15Bun-àm Afraga an Iar\x1dTìde Samhraidh Afraga an Iar\x0aÀm Alaska" + - "\x0eBun-àm Alaska\x16Tìde samhraidh Alaska\x0aÀm Almaty\x0eBun-àm Almaty" + - "\x16Tìde samhraidh Almaty\x0bÀm Amasoin\x0fBun-àm Amasoin\x17Tìde samhra" + - "idh Amasoin\x1eÀm Meadhan Aimeireaga a Tuath\x22Bun-àm Meadhan Aimeireag" + - "a a Tuath*Tìde samhraidh Meadhan Aimeireaga a Tuath\x1dÀm Aimeireaga a T" + - "uath an Ear!Bun-àm Aimeireaga a Tuath an Ear)Tìde samhraidh Aimeireaga a" + - " Tuath an Ear\x1dÀm Monadh Aimeireaga a Tuath!Bun-àm Monadh Aimeireaga a" + - " Tuath)Tìde samhraidh Monadh Aimeireaga a Tuath\x16Àm a’ Chuain Sèimh" + - "\x1aBun-àm a’ Chuain Sèimh\x22Tìde samhraidh a’ Chuain Sèimh\x0aÀm Anady" + - "r\x0eBun-àm Anadyr\x16Tìde samhraidh Anadyr\x08Àm Apia\x0cBun-àm Apia" + - "\x14Tìde samhraidh Apia\x09Àm Aqtau\x0dBun-àm Aqtau\x15Tìde samhraidh Aq" + - "tau\x0aÀm Aqtobe\x0eBun-àm Aqtobe\x16Tìde samhraidh Aqtobe\x0bÀm Arabach" + - "\x0fBun-àm Arabach\x17Tìde samhraidh Arabach\x13Àm na h-Argantaine\x17Bu" + - "n-àm na h-Argantaine\x1fTìde samhraidh na h-Argantaine\x1cÀm na h-Argant" + - "aine Siaraich Bun-àm na h-Argantaine Siaraich(Tìde samhraidh na h-Argant" + - "aine Siaraich\x0dÀm Airmeinia\x11Bun-àm Airmeinia\x19Tìde samhraidh Airm" + - "einia\x14Àm a’ Chuain Siar\x18Bun-àm a’ Chuain Siar Tìde samhraidh a’ Ch" + - "uain Siar\x16Àm Meadhan Astràilia\x1aBun-àm Meadhan Astràilia\x22Tìde sa" + - "mhraidh Meadhan Astràilia\x1dÀm Meadhan Astràilia an Iar!Bun-àm Meadhan " + - "Astràilia an Iar)Tìde samhraidh Meadhan Astràilia an Iar\x15Àm Astràilia" + - " an Ear\x19Bun-àm Astràilia an Ear!Tìde samhraidh Astràilia an Ear\x15Àm" + - " Astràilia an Iar\x19Bun-àm Astràilia an Iar!Tìde samhraidh Astràilia an" + - " Iar\x11Àm Asarbaideàin\x15Bun-àm Asarbaideàin\x1dTìde samhraidh Asarbai" + - "deàin\x18Àm nan Eileanan Asorach\x1cBun-àm nan Eileanan Asorach$Tìde sam" + - "hraidh nan Eileanan Asorach\x0eÀm Bangladais\x12Bun-àm Bangladais\x1aTìd" + - "e samhraidh Bangladais\x0bÀm Butàin\x0dÀm Boilibhia\x0dÀm Bhrasilia\x11B" + - "un-àm Bhrasilia\x19Tìde samhraidh Bhrasilia\x1dÀm Bhrùnaigh Dàr as-Salàm" + - "\x13Àm a’ Chip Uaine\x17Bun-àm a’ Chip Uaine\x1fTìde samhraidh a’ Chip U" + - "aine\x0aÀm Chasey\x0cÀm Chamorro\x0bÀm Chatham\x0fBun-àm Chatham\x17Tìde" + - " samhraidh Chatham\x0bÀm na Sile\x0fBun-àm na Sile\x17Tìde samhraidh na " + - "Sile\x0cÀm na Sìne\x10Bun-àm na Sìne\x18Tìde samhraidh na Sìne\x0eÀm Cho" + - "ibalsan\x12Bun-àm Choibalsan\x1aTìde samhraidh Choibalsan\x15Àm Eilean n" + - "a Nollaig\x13Àm Eileanan Chocos\x0dÀm Coloimbia\x11Bun-àm Coloimbia\x19T" + - "ìde samhraidh Coloimbia\x11Àm Eileanan Cook\x15Bun-àm Eileanan Cook#Let" + - "h-thìde samhraidh Eileanan Cook\x09Àm Cùba\x0dBun-àm Cùba\x15Tìde samhra" + - "idh Cùba\x0aÀm Dhavis\x16Àm Dumont-d’Urville\x13Àm Thìomor an Ear\x15Àm " + - "Eilean na Càisge\x19Bun-àm Eilean na Càisge!Tìde samhraidh Eilean na Cài" + - "sge\x0dÀm Eacuadoir\x1bÀm Meadhan na Roinn-Eòrpa\x1fBun-àm Meadhan na Ro" + - "inn-Eòrpa'Tìde samhraidh Meadhan na Roinn-Eòrpa\x1aÀm na Roinn-Eòrpa an " + - "Ear\x1eBun-àm na Roinn-Eòrpa an Ear&Tìde samhraidh na Roinn-Eòrpa an Ear" + - "\x22Àm na Roinn-Eòrpa nas fhaide ear\x1aÀm na Roinn-Eòrpa an Iar\x1eBun-" + - "àm na Roinn-Eòrpa an Iar&Tìde samhraidh na Roinn-Eòrpa an Iar\x1cÀm nan" + - " Eileanan Fàclannach Bun-àm nan Eileanan Fàclannach(Tìde samhraidh nan E" + - "ileanan Fàclannach\x09Àm Fìdi\x0dBun-àm Fìdi\x15Tìde samhraidh Fìdi\x19À" + - "m Guidheàna na Frainge)Àm Deasach agus Antartaigeach na Frainge\x0eÀm Gh" + - "alapagos\x0cÀm Ghambier\x12Àm na Cairtbheile\x16Bun-àm na Cairtbheile" + - "\x1eTìde samhraidh na Cairtbheile\x18Àm Eileanan Ghileabairt\x13Greenwic" + - "h Mean Time\x18Àm na Graonlainn an Ear\x1cBun-àm na Graonlainn an Ear$Tì" + - "de samhraidh na Graonlainn an Ear\x18Àm na Graonlainn an Iar\x1cBun-àm n" + - "a Graonlainn an Iar$Tìde samhraidh na Graonlainn an Iar\x08Àm Guam\x10Àm" + - " a’ Chamais\x0eÀm Guidheàna(Àm nan Eileanan Hawai’i ’s Aleutach,Bun-àm n" + - "an Eileanan Hawai’i ’s Aleutach4Tìde Samhraidh nan Eileanan Hawai’i ’s A" + - "leutach\x0dÀm Hong Kong\x11Bun-àm Hong Kong\x19Tìde samhraidh Hong Kong" + - "\x08Àm Hovd\x0cBun-àm Hovd\x14Tìde samhraidh Hovd\x12Àm nan Innseachan" + - "\x17Àm Cuan nan Innseachan\x13Àm Sìn-Innseanach\x1aÀm Meadhan nan Innd-I" + - "nnse\x19Àm nan Innd-Innse an Ear\x19Àm nan Innd-Innse an Iar\x0bÀm Iorài" + - "n\x0fBun-àm Ioràin\x17Tìde samhraidh Ioràin\x0bÀm Irkutsk\x0fBun-àm Irku" + - "tsk\x17Tìde Samhraidh Irkutsk\x0bÀm Iosrael\x0fBun-àm Iosrael\x17Tìde sa" + - "mhraidh Iosrael\x0fÀm na Seapaine\x13Bun-àm na Seapaine\x1bTìde samhraid" + - "h na Seapaine\x1cÀm Petropavlovsk-Kamchatsky Bun-àm Petropavlovsk-Kamcha" + - "tsky(Tìde samhraidh Petropavlovsk-Kamchatsky\x17Àm Casachstàin an Ear" + - "\x17Àm Casachstàin an Iar\x0cÀm Choirèa\x10Bun-àm Choirèa\x18Tìde samhra" + - "idh Choirèa\x0aÀm Kosrae\x0fÀm Krasnoyarsk\x13Bun-àm Krasnoyarsk\x1bTìde" + - " samhraidh Krasnoyarsk\x10Àm Cìorgastain\x09Àm Lanca\x14Àm Eileanan Tera" + - "ina\x0dÀm Lord Howe\x11Bun-àm Lord Howe\x19Tìde samhraidh Lord Howe\x0cÀ" + - "m Macàthu\x10Bun-àm Macàthu\x18Tìde samhraidh Macàthu\x15Àm Eilein MhicG" + - "uaire\x0bÀm Magadan\x0fBun-àm Magadan\x17Tìde Samhraidh Magadan\x0fÀm Mh" + - "alaidhsea\x1bÀm nan Eileanan Mhaladaibh\x1aÀm Eileanan a’ Mharcais\x16Àm" + - " Eileanan Mharshall\x1bÀm nan Eileanan Mhoiriseas\x1fBun-àm nan Eileanan" + - " Mhoiriseas'Tìde samhraidh nan Eileanan Mhoiriseas\x0bÀm Mhawson\x1bÀm M" + - "heagsago an Iar-thuath\x1fBun-àm Mheagsago an Iar-thuath'Tìde samhraidh " + - "Mheagsago an Iar-thuath Àm a’ Chuain Sèimh Mheagsago$Bun-àm a’ Chuain Sè" + - "imh Mheagsago,Tìde samhraidh a’ Chuain Sèimh Mheagsago\x0eÀm Ulan Bator" + - "\x12Bun-àm Ulan Bator\x1aTìde samhraidh Ulan Bator\x0aÀm Mhosgo\x0eBun-à" + - "m Mhosgo\x16Tìde samhraidh Mhosgo\x0cÀm Miànmar\x0aÀm Nabhru\x0bÀm Neapà" + - "l\x15Àm Chailleann Nuaidh\x19Bun-àm Chailleann Nuaidh!Tìde samhraidh Cha" + - "illeann Nuaidh\x14Àm Shealainn Nuaidh\x18Bun-àm Shealainn Nuaidh Tìde sa" + - "mhraidh Shealainn Nuaidh\x13Àm Talamh an Èisg\x17Bun-àm Talamh an Èisg" + - "\x1fTìde samhraidh Talamh an Èisg\x08Àm Niue\x12Àm Eilein Norfolk\x17Àm " + - "Fernando de Noronha\x1bBun-àm Fernando de Noronha#Tìde Samhraidh Fernand" + - "o de Noronha#Àm nan Eileanan Mairianach a Tuath\x0fÀm Novosibirsk\x13Bun" + - "-àm Novosibirsk\x1bTìde samhraidh Novosibirsk\x08Àm Omsk\x0cBun-àm Omsk" + - "\x14Tìde samhraidh Omsk\x0eÀm Pagastàin\x12Bun-àm Pagastàin\x1aTìde samh" + - "raidh Pagastàin\x0aÀm Palabh\x1bÀm Gini Nuaidh Paputhaiche\x0eÀm Paragua" + - "idh\x12Bun-àm Paraguaidh\x1aTìde samhraidh Paraguaidh\x0aÀm Pearù\x0eBun" + - "-àm Pearù\x16Tìde samhraidh Pearù\x1aÀm nan Eilean Filipineach\x1eBun-àm" + - " nan Eilean Filipineach&Tìde samhraidh nan Eilean Filipineach\x14Àm Eile" + - "anan Phoenix\x1eÀm Saint Pierre agus Miquelon\x22Bun-àm Saint Pierre agu" + - "s Miquelon*Tìde Samhraidh Saint Pierre agus Miquelon\x15Àm Peit a’ Chàir" + - "n\x0bÀm Pohnpei\x0fÀm Qızılorda\x13Bun-àm Qızılorda\x1bTìde samhraidh Qı" + - "zılorda\x0bÀm Reunion\x0bÀm Rothera\x0cÀm Sakhalin\x10Bun-àm Sakhalin" + - "\x18Tìde samhraidh Sakhalin\x0aÀm Samara\x0eBun-àm Samara\x16Tìde samhra" + - "idh Samara\x0bÀm Samotha\x0fBun-àm Samotha\x17Tìde samhraidh Samotha\x1a" + - "Àm nan Eileanan Sheiseall\x0eÀm Singeapòr\x15Àm Eileanan Sholaimh\x13Àm" + - " Seòrsea a Deas\x0cÀm Suranaim\x0aÀm Shyowa\x0aÀm Tahiti\x0aÀm Taipei" + - "\x0eBun-àm Taipei\x16Tìde samhraidh Taipei\x12Àm Taidigeastàin\x0bÀm Tok" + - "elau\x09Àm Tonga\x0dBun-àm Tonga\x15Tìde samhraidh Tonga\x09Àm Chuuk\x12" + - "Àm Turcmanastàin\x16Bun-àm Turcmanastàin\x1eTìde samhraidh Turcmanastài" + - "n\x0bÀm Tubhalu\x0dÀm Uruguaidh\x11Bun-àm Uruguaidh\x19Tìde samhraidh Ur" + - "uguaidh\x0fÀm Usbagastàn\x13Bun-àm Usbagastàn\x1bTìde samhraidh Usbagast" + - "àn\x0bÀm Vanuatu\x0fBun-àm Vanuatu\x17Tìde samhraidh Vanuatu\x12Àm na B" + - "heiniseala\x0fÀm Vladivostok\x13Bun-àm Vladivostok\x1bTìde Samhraidh Vla" + - "divostok\x0dÀm Volgograd\x11Bun-àm Volgograd\x19Tìde samhraidh Volgograd" + - "\x0aÀm Vostok\x0fÀm Eilean Wake\x16Àm Uallas agus Futuna\x0bÀm Yakutsk" + - "\x0fBun-àm Yakutsk\x17Tìde samhraidh Yakutsk\x11Àm Yekaterinburg\x15Bun-" + - "àm Yekaterinburg\x1dTìde samhraidh Yekaterinburg" - -var bucket41 string = "" + // Size: 11502 bytes - "\x1acccc, d 'de' MMMM 'de' Y G\x13d 'de' MMM 'de' y G\x0d{1} 'ás' {0}" + - "\x04xan.\x04feb.\x04mar.\x04abr.\x04maio\x05xuño\x04xul.\x04ago.\x04set." + - "\x04out.\x04nov.\x04dec.\x02x.\x02f.\x02m.\x02a.\x02s.\x02o.\x02n.\x02d." + - "\x07xaneiro\x08febreiro\x05marzo\x05abril\x05xullo\x06agosto\x08setembro" + - "\x07outubro\x08novembro\x08decembro\x04Xan.\x04Feb.\x04Mar.\x04Abr.\x04M" + - "aio\x05Xuño\x04Xul.\x04Ago.\x04Set.\x04Out.\x04Nov.\x04Dec.\x07Xaneiro" + - "\x08Febreiro\x05Marzo\x05Abril\x05Xullo\x06Agosto\x08Setembro\x07Outubro" + - "\x08Novembro\x08Decembro\x02l.\x02v.\x04Dom.\x04Luns\x05Mér.\x04Xov.\x04" + - "Ven.\x05Sáb.\x07Domingo\x06Martes\x09Mércores\x05Xoves\x06Venres\x07Sába" + - "do\x0e1.º trimestre\x0e2.º trimestre\x0e3.º trimestre\x0e4.º trimestre" + - "\x08da noite\x0cda madrugada\x09da mañá\x0cdo mediodía\x08da tarde\x0ame" + - "dianoite\x06mañá\x05noite\x13antes da Era Común\x0dda Era Común\x04a.C." + - "\x06a.E.C.\x04d.C.\x04E.C.\x11d 'de' MMM 'de' y\x0c{0} 'do' {1}\x08{0}, " + - "{1}\x03ano\x0co ano pasado\x08este ano\x0eo próximo ano\x0aen {0} ano" + - "\x0ben {0} anos\x0bhai {0} ano\x0chai {0} anos\x0aano pasado\x0cseguinte" + - " ano\x12o trimestre pasado\x0eeste trimestre\x14o próximo trimestre\x0ct" + - "rim. pasado\x0aeste trim.\x0etrim. seguinte\x0co mes pasado\x08este mes" + - "\x0eo próximo mes\x09m. pasado\x07este m.\x0bm. seguinte\x0fa semana pas" + - "ada\x0besta semana\x11a próxima semana\x0den {0} semana\x0een {0} semana" + - "s\x0ehai {0} semana\x0fhai {0} semanas\x0fa semana do {0}\x0bsem. pasada" + - "\x09esta sem.\x0dsem. seguinte\x0chai {0} sem.\x07antonte\x04onte\x04hox" + - "e\x0cpasadomañá\x08en {0} d\x09hai {0} d\x0edía da semana\x10o domingo p" + - "asado\x0ceste domingo\x12o próximo domingo\x0fhai {0} domingo\x10hai {0}" + - " domingos\x0do dom. pasado\x09este dom.\x0fo próximo dom.\x0ben {0} dom." + - "\x0chai {0} dom.\x0bo dom. pas.\x0do próx. dom.\x0do luns pasado\x09este" + - " luns\x0fo próximo luns\x0ben {0} luns\x0chai {0} luns\x0bo luns pas." + - "\x0do próx. luns\x0fo martes pasado\x0beste martes\x11o próximo martes" + - "\x0den {0} martes\x0do mar. pasado\x09este mar.\x0fo próximo mar.\x0ben " + - "{0} mar.\x0chai {0} mar.\x0bo mar. pas.\x0do próx. mar.\x12o mércores pa" + - "sado\x0eeste mércores\x14o próximo mércores\x10en {0} mércores\x11hai {0" + - "} mércores\x0eo mér. pasado\x0aeste mér.\x10o próximo mér.\x0cen {0} mér" + - ".\x0dhai {0} mér.\x0co mér. pas.\x0eo próx. mér.\x0eo xoves pasado\x0aes" + - "te xoves\x10o próximo xoves\x0cen {0} xoves\x0dhai {0} xoves\x0do xov. p" + - "asado\x09este xov.\x0fo próximo xov.\x0ben {0} xov.\x0chai {0} xov.\x0bo" + - " xov. pas.\x0do próx. xov.\x0fo venres pasado\x0beste venres\x11o próxim" + - "o venres\x0den {0} venres\x0ehai {0} venres\x0do ven. pasado\x09este ven" + - ".\x0fo próximo ven.\x0ben {0} ven.\x0chai {0} ven.\x0bo ven. pas.\x0do p" + - "róx. ven.\x10o sábado pasado\x0ceste sábado\x12o próximo sábado\x0een {0" + - "} sábado\x0fen {0} sábados\x0fhai {0} sábado\x10hai {0} sábados\x0eo sáb" + - ". pasado\x0aeste sáb.\x10o próximo sáb.\x0cen {0} sáb.\x0dhai {0} sáb." + - "\x0co sáb. pas.\x0eo próx. sáb.\x0anesta hora\x09hai {0} h\x0cneste minu" + - "to\x0den {0} minuto\x0een {0} minutos\x0ehai {0} minuto\x0fhai {0} minut" + - "os\x0bhai {0} min\x0een {0} segundo\x0fen {0} segundos\x0fhai {0} segund" + - "o\x10hai {0} segundos\x09hai {0} s\x0cfuso horario\x0eHorario de {0}\x18" + - "Horario de verán de {0}\x18Horario estándar de {0}\x1aTempo Universal Co" + - "ordenado\x1cHorario de verán británico\x1bHorario estándar irlandés\x16H" + - "orario de Afganistán\x1aHorario de África Central\x1bHorario de África O" + - "riental#Horario estándar de África do Sur\x1dHorario de África Occidenta" + - "l'Horario estándar de África Occidental'Horario de verán de África Occid" + - "ental\x11Horario de Alasca\x1bHorario estándar de Alasca\x1bHorario de v" + - "erán de Alasca\x13Horario do Amazonas\x1dHorario estándar do Amazonas" + - "\x1dHorario de verán do Amazonas\x1eHorario central, Norteamérica(Horari" + - "o estándar central, Norteamérica(Horario de verán central, Norteamérica" + - "\x1fHorario do leste, Norteamérica)Horario estándar do leste, Norteaméri" + - "ca)Horario de verán do leste, Norteamérica\x22Horario da montaña, Nortea" + - "mérica,Horario estándar da montaña, Norteamérica,Horario de verán da mon" + - "taña, Norteamérica#Horario do Pacífico, Norteamérica-Horario estándar do" + - " Pacífico, Norteamérica-Horario de verán do Pacífico, Norteamérica\x11Ho" + - "rario de Anadir\x1bHorario estándar de Anadir\x1bHorario de verán de Ana" + - "dir\x0fHorario de Apia\x19Horario estándar de Apia\x19Horario de verán d" + - "e Apia\x0eHorario árabe\x18Horario estándar árabe\x18Horario de verán ár" + - "abe\x14Horario de Arxentina\x1eHorario estándar de Arxentina\x1eHorario " + - "de verán de Arxentina\x1fHorario de Arxentina Occidental)Horario estánda" + - "r de Arxentina Occidental)Horario de verán de Arxentina Occidental\x12Ho" + - "rario de Armenia\x1cHorario estándar de Armenia\x1cHorario de verán de A" + - "rmenia\x15Horario do Atlántico\x1fHorario estándar do Atlántico\x1fHorar" + - "io de verán do Atlántico\x1cHorario de Australia Central&Horario estánda" + - "r de Australia Central&Horario de verán de Australia Central'Horario de " + - "Australia Occidental Central1Horario estándar de Australia Occidental Ce" + - "ntral1Horario de verán de Australia Occidental Central\x1dHorario de Aus" + - "tralia Oriental'Horario estándar de Australia Oriental'Horario de verán " + - "de Australia Oriental\x1fHorario de Australia Occidental)Horario estánda" + - "r de Australia Occidental)Horario de verán de Australia Occidental\x16Ho" + - "rario de Acerbaixán Horario estándar de Acerbaixán Horario de verán de A" + - "cerbaixán\x12Horario das Azores\x1cHorario estándar das Azores\x1cHorari" + - "o de verán das Azores\x15Horario de Bangladés\x1fHorario estándar de Ban" + - "gladés\x1fHorario de verán de Bangladés\x11Horario de Bután\x12Horario d" + - "e Bolivia\x13Horario de Brasilia\x1dHorario estándar de Brasilia\x1dHora" + - "rio de verán de Brasilia\x1cHorario de Brunei Darussalam\x15Horario de C" + - "abo Verde\x1fHorario estándar de Cabo Verde\x1fHorario de verán de Cabo " + - "Verde\x1aHorario estándar chamorro\x12Horario de Chatham\x1cHorario está" + - "ndar de Chatham\x1cHorario de verán de Chatham\x10Horario de Chile\x1aHo" + - "rario estándar de Chile\x1aHorario de verán de Chile\x10Horario de China" + - "\x1aHorario estándar de China\x1aHorario de verán de China\x15Horario de" + - " Choibalsan\x1fHorario estándar de Choibalsan\x1fHorario de verán de Cho" + - "ibalsan\x18Horario da Illa de Nadal\x17Horario das Illas Cocos\x13Horari" + - "o de Colombia\x1dHorario estándar de Colombia\x1dHorario de verán de Col" + - "ombia\x16Horario das Illas Cook Horario estándar das Illas Cook&Horario " + - "de verán medio das Illas Cook\x0fHorario de Cuba\x19Horario estándar de " + - "Cuba\x19Horario de verán de Cuba\x10Horario de Davis\x1dHorario de Dumon" + - "t-d’Urville\x16Horario de Timor Leste\x19Horario da Illa de Pascua#Horar" + - "io estándar da Illa de Pascua#Horario de verán da Illa de Pascua\x12Hora" + - "rio de Ecuador\x19Horario de Europa Central#Horario estándar de Europa C" + - "entral#Horario de verán de Europa Central\x1aHorario de Europa Oriental$" + - "Horario estándar de Europa Oriental$Horario de verán de Europa Oriental " + - "Horario do extremo leste europeo\x1cHorario de Europa Occidental&Horario" + - " estándar de Europa Occidental&Horario de verán de Europa Occidental\x1a" + - "Horario das Illas Malvinas$Horario estándar das Illas Malvinas$Horario d" + - "e verán das Illas Malvinas\x10Horario de Fidxi\x1aHorario estándar de Fi" + - "dxi\x1aHorario de verán de Fidxi\x1bHorario da Güiana Francesa3Horario d" + - "as Terras Austrais e Antárticas Francesas\x16Horario das Galápagos\x12Ho" + - "rario de Gambier\x12Horario de Xeorxia\x1cHorario estándar de Xeorxia" + - "\x1cHorario de verán de Xeorxia\x19Horario das Illas Gilbert!Horario do " + - "meridiano de Greenwich\x1fHorario de Groenlandia Oriental)Horario estánd" + - "ar de Groenlandia Oriental)Horario de verán de Groenlandia Oriental!Hora" + - "rio de Groenlandia Occidental+Horario estándar de Groenlandia Occidental" + - "+Horario de verán de Groenlandia Occidental\x1aHorario estándar do Golfo" + - "\x12Horario da Güiana\x1aHorario de Hawai-Aleutiano$Horario estándar de " + - "Hawai-Aleutiano$Horario de verán de Hawai-Aleutiano\x14Horario de Hong K" + - "ong\x1eHorario estándar de Hong Kong\x1eHorario de verán de Hong Kong" + - "\x0fHorario de Hovd\x19Horario estándar de Hovd\x19Horario de verán de H" + - "ovd\x1aHorario estándar da India\x1aHorario do Océano Índico\x14Horario " + - "de Indochina\x1cHorario de Indonesia Central\x1dHorario de Indonesia Ori" + - "ental\x1fHorario de Indonesia Occidental\x10Horario de Irán\x1aHorario e" + - "stándar de Irán\x1aHorario de verán de Irán\x12Horario de Irkutsk\x1cHor" + - "ario estándar de Irkutsk\x1cHorario de verán de Irkutsk\x11Horario de Is" + - "rael\x1bHorario estándar de Israel\x1bHorario de verán de Israel\x11Hora" + - "rio do Xapón\x1bHorario estándar do Xapón\x1bHorario de verán do Xapón$H" + - "orario de Petropávlovsk-Kamchatski.Horario estándar de Petropávlovsk-Kam" + - "chatski.Horario de verán de Petropávlovsk-Kamchatski Horario de Casaquis" + - "tán Oriental\x22Horario de Casaquistán Occidental\x10Horario de Corea" + - "\x1aHorario estándar de Corea\x1aHorario de verán de Corea\x11Horario de" + - " Kosrae\x16Horario de Krasnoyarsk Horario estándar de Krasnoyarsk Horari" + - "o de verán de Krasnoyarsk\x19Horario de Quirguicistán\x1aHorario das Ill" + - "as da Liña\x14Horario de Lord Howe\x1eHorario estándar de Lord Howe\x1eH" + - "orario de verán de Lord Howe\x19Horario da Illa Macquarie\x12Horario de " + - "Magadan\x1cHorario estándar de Magadan\x1cHorario de verán de Magadan" + - "\x13Horario de Malaisia\x14Horario das Maldivas\x15Horario das Marquesas" + - "\x1aHorario das Illas Marshall\x13Horario de Mauricio\x1dHorario estánda" + - "r de Mauricio\x1dHorario de verán de Mauricio\x11Horario de Mawson\x1bHo" + - "rario de México Noroeste%Horario estándar de México Noroeste%Horario de " + - "verán de México Noroeste\x1dHorario do Pacífico mexicano'Horario estánda" + - "r do Pacífico mexicano'Horario de verán do Pacífico mexicano\x17Horario " + - "de Ulán Bátor!Horario estándar de Ulán Bátor!Horario de verán de Ulán Bá" + - "tor\x12Horario de Moscova\x1cHorario estándar de Moscova\x1cHorario de v" + - "erán de Moscova\x13Horario de Birmania\x10Horario de Nauru\x10Horario de" + - " Nepal\x19Horario de Nova Caledonia#Horario estándar de Nova Caledonia#H" + - "orario de verán de Nova Caledonia\x18Horario de Nova Zelandia\x22Horario" + - " estándar de Nova Zelandia\x22Horario de verán de Nova Zelandia\x14Horar" + - "io de Terranova\x1eHorario estándar de Terranova\x1eHorario de verán de " + - "Terranova\x0fHorario de Niue\x19Horario das Illas Norfolk\x1eHorario de " + - "Fernando de Noronha(Horario estándar de Fernando de Noronha(Horario de v" + - "erán de Fernando de Noronha\x16Horario de Novosibirsk Horario estándar d" + - "e Novosibirsk Horario de verán de Novosibirsk\x0fHorario de Omsk\x19Hora" + - "rio estándar de Omsk\x19Horario de verán de Omsk\x15Horario de Paquistán" + - "\x1fHorario estándar de Paquistán\x1fHorario de verán de Paquistán\x10Ho" + - "rario de Palau\x1dHorario de Papúa-Nova Guinea\x13Horario de Paraguai" + - "\x1dHorario estándar de Paraguai\x1dHorario de verán de Paraguai\x10Hora" + - "rio de Perú\x1aHorario estándar de Perú\x1aHorario de verán de Perú\x14H" + - "orario de Filipinas\x1eHorario estándar de Filipinas\x1eHorario de verán" + - " de Filipinas\x18Horario das Illas Fénix\x22Horario de Saint Pierre e Mi" + - "quelon,Horario estándar de Saint Pierre e Miquelon,Horario de verán de S" + - "aint Pierre e Miquelon\x13Horario de Pitcairn\x12Horario de Pohnpei\x14H" + - "orario de Pyongyang\x13Horario de Reunión\x12Horario de Rothera\x13Horar" + - "io de Sakhalin\x1eHorario estándar de Sakhalín\x1dHorario de verán de Sa" + - "khalin\x11Horario de Samara\x1bHorario estándar de Samara\x1bHorario de " + - "verán de Samara\x10Horario de Samoa\x1aHorario estándar de Samoa\x1aHora" + - "rio de verán de Samoa\x14Horario das Seixeles\x1dHorario estándar de Sin" + - "gapur\x1aHorario das Illas Salomón\x19Horario de Xeorxia do Sur\x13Horar" + - "io de Suriname\x10Horario de Syowa\x12Horario de Tahití\x11Horario de Ta" + - "ipei\x1bHorario estándar de Taipei\x1bHorario de verán de Taipei\x17Hora" + - "rio de Taxiquistán\x13Horario de Toquelau\x10Horario de Tonga\x1aHorario" + - " estándar de Tonga\x1aHorario de verán de Tonga\x10Horario de Chuuk\x19H" + - "orario de Turcomenistán#Horario estándar de Turcomenistán#Horario de ver" + - "án de Turcomenistán\x11Horario de Tuvalu\x12Horario de Uruguai\x1cHorar" + - "io estándar de Uruguai\x1cHorario de verán de Uruguai\x17Horario de Usbe" + - "quistán!Horario estándar de Usbequistán!Horario de verán de Usbequistán" + - "\x12Horario de Vanuatu\x1cHorario estándar de Vanuatu\x1cHorario de verá" + - "n de Vanuatu\x14Horario de Venezuela\x16Horario de Vladivostok Horario e" + - "stándar de Vladivostok Horario de verán de Vladivostok\x15Horario de Vol" + - "gogrado\x1fHorario estándar de Volgogrado\x1fHorario de verán de Volgogr" + - "ado\x11Horario de Vostok\x14Horario da Illa Wake\x1aHorario de Wallis e " + - "Futuna\x12Horario de Iakutsk\x1cHorario estándar de Iakutsk\x1cHorario d" + - "e verán de Iakutsk\x18Horario de Ekaterimburgo\x22Horario estándar de Ek" + - "aterimburgo\x22Horario de verán de Ekaterimburgo\x05Lunes\x0aMiércoles" + - "\x06Jueves\x07Viernes" - -var bucket42 string = "" + // Size: 23077 bytes - "\x07Sunntig\x09Määntig\x09Ziischtig\x08Mittwuch\x09Dunschtig\x07Friitig" + - "\x09Samschtig\x04nam.\x08am Morge\x07zmittag\x0bam Namittag\x06zaabig" + - "\x06znacht\x0cam Vormittag\x08Namittag\x05Morge\x05Aabig\x22vor der gewö" + - "hnlichen Zeitrechnung\x1eder gewöhnlichen Zeitrechnung\x08v. d. Z.\x05d." + - " Z.\x03vdZ\x02dZ\x04Jaar\x0bletzte Jaar\x0adiese Jaar\x0dnächste Jaar" + - "\x05Monet\x0cletzte Monet\x0bdiese Monet\x0enächste Monet\x05Wuche\x0cle" + - "tzte Wuche\x0bdiese Wuche\x0enächste Wuche\x0bvorgeschter\x08geschter" + - "\x04hüt\x05moorn\x0aübermoorn\x08Wuchetag\x14Sunntig letzte Wuche\x13Sun" + - "ntig diese Wuche\x16Sunntig nächste Wuche\x16Määntig letzte Wuche\x15Mää" + - "ntig diese Wuche\x18Määntig nächste Wuche\x16Ziischtig letzte Wuche\x15Z" + - "iischtig diese Wuche\x18Ziischtig nächste Wuche\x15Mittwuch letzte Wuche" + - "\x14Mittwuch diese Wuche\x17Mittwuch nächste Wuche\x16Dunschtig letzte W" + - "uche\x15Dunschtig diese Wuche\x18Dunschtig nächste Wuche\x14Friitig letz" + - "te Wuche\x13Friitig diese Wuche\x16Friitig nächste Wuche\x16Samschtig le" + - "tzte Wuche\x15Samschtig diese Wuche\x18Samschtig nächste Wuche\x0cTagesh" + - "älfti\x07Schtund\x07Minuute\x09Acre-Ziit\x13Acre-Schtandardziit\x0fAcre" + - "-Summerziit\x12Afghanischtan-Ziit\x18Zentralafrikanischi Ziit\x16Oschtaf" + - "rikanischi Ziit\x17Süüdafrikanischi ziit\x17Weschtafrikanischi Ziit!Wesc" + - "htafrikanischi Schtandardziit\x1dWeschtafrikanischi Summerziit\x0bAlaska" + - "-Ziit\x15Alaska-Schtandardziit\x11Alaska-Summerziit\x0bAlmaty-Ziit\x15Al" + - "maty-Schtandardziit\x11Almaty-Summerziit\x0dAmazonas-Ziit\x17Amazonas-Sc" + - "htandardziit\x13Amazonas-Summerziit\x15Amerika-Zentraal Ziit\x1fAmerika-" + - "Zentraal Schtandardziit\x1bAmerika-Zentraal Summerziit\x17Mitteleuropäis" + - "chi Ziit!Mitteleuropäischi Schtandardziit\x1dMitteleuropäischi Summerzii" + - "t\x16Oschteuropäischi Ziit Oschteuropäischi Schtandardziit\x1cOschteurop" + - "äischi Summerziit\x17Weschteuropäischi Ziit!Weschteuropäischi Schtandar" + - "dziit\x1dWeschteuropäischi Summerziit\x0dMoskauer Ziit\x17Moskauer Schta" + - "ndardziit\x13Moskauer Summerziit\x11EEEE, d MMMM, G y\x0bd MMMM, G y\x0a" + - "d MMM, G y\x0dd-MM- GGGGG y\x12જાન્યુ\x12ફેબ્રુ\x0fમાર્ચ\x12એપ્રિલ\x06મે" + - "\x09જૂન\x0fજુલાઈ\x0fઑગસ્ટ\x0fસપ્ટે\x0fઑક્ટો\x09નવે\x0cડિસે\x06જા\x06ફે" + - "\x06મા\x03એ\x06જૂ\x06જુ\x03ઑ\x03સ\x03ન\x06ડિ\x1bજાન્યુઆરી\x1bફેબ્રુઆરી" + - "\x1bસપ્ટેમ્બર\x15ઑક્ટોબર\x15નવેમ્બર\x18ડિસેમ્બર\x09રવિ\x09સોમ\x0cમંગળ" + - "\x09બુધ\x0cગુરુ\x0fશુક્ર\x09શનિ\x03ર\x06સો\x06મં\x06બુ\x06ગુ\x06શુ\x03શ" + - "\x12રવિવાર\x12સોમવાર\x15મંગળવાર\x12બુધવાર\x15ગુરુવાર\x18શુક્રવાર\x12શનિવ" + - "ાર%પહેલો ત્રિમાસ\x22બીજો ત્રિમાસ(ત્રીજો ત્રિમાસ\x22ચોથો ત્રિમાસ\x1eમધ્" + - "યરાત્રિ\x0fસવારે\x0fબપોરે\x0fસાંજે\x12રાત્રે\x16મ.રાત્રિ\x0cસવાર\x0cબપ" + - "ોર\x0cસાંજ\x12રાત્રિ%ઈસવીસન પૂર્વે/સામાન્ય યુગ પહેલા\x12ઇસવીસન\x1fસામા" + - "ન્ય યુગ\x1aઈ.સ.પૂર્વે\x12સા.યુ.પ.\x08ઈ.સ.\x0eસા.યુ.\x0eઇ સ પુ\x06ઇસ" + - "\x0fhh:mm:ss a zzzz\x0chh:mm:ss a z\x0ahh:mm:ss a\x07hh:mm a\x09યુગ\x0cવ" + - "ર્ષ\x19ગયા વર્ષે\x13આ વર્ષે\x1cઆવતા વર્ષે\x19{0} વર્ષમાં#{0} વર્ષ પહેલ" + - "ાં\x04વ.\x11+{0} વર્ષ {0} વર્ષ પહેલા\x11-{0} વર્ષ\x1bત્રિમાસિક1છેલ્લું" + - " ત્રિમાસિક\x1fઆ ત્રિમાસિક.પછીનું ત્રિમાસિક({0} ત્રિમાસિકમાં2{0} ત્રિમાસિ" + - "ક પહેલાં\x16ત્રિમાસ.\x22{0} ત્રિમાસમાં,{0} ત્રિમાસ પહેલાં\x0fમહિનો\x19" + - "ગયા મહિને\x13આ મહિને\x1cઆવતા મહિને\x1c{0} મહિનામાં&{0} મહિના પહેલાં" + - "\x04મ.\x1bઅઠવાડિયું\x22ગયા અઠવાડિયે\x1cઆ અઠવાડિયે%આવતા અઠવાડિયે%{0} અઠવા" + - "ડિયામાં/{0} અઠવાડિયા પહેલાં){0} નું અઠવાડિયું\x07અઠ.\x15{0} અઠ. માં" + - "\x1e{0} અઠ. પહેલાં\x0cદિવસ\x22ગયા પરમદિવસે\x12ગઈકાલે\x09આજે\x18આવતીકાલે" + - "\x18પરમદિવસે\x19{0} દિવસમાં#{0} દિવસ પહેલાં\x11+{0} દિવસ\x11-{0} દિવસ+અઠ" + - "વાડિયાનો દિવસ\x1fગયા રવિવારે\x19આ રવિવારે\x22આવતા રવિવારે\x17+{0} રવિવ" + - "ાર\x17-{0} રવિવાર\x14ગયા રવિ.\x0dઆ રવિ\x16આવતા રવિ\x1fગયા સોમવારે\x19આ" + - " સોમવારે\x22આવતા સોમવારે\x17+{0} સોમવાર\x17-{0} સોમવાર\x22ગયા મંગળવારે" + - "\x1cઆ મંગળવારે%આવતા મંગળવારે\x1a+{0} મંગળવાર\x1a-{0} મંગળવાર\x1fગયા બુધવ" + - "ારે\x19આ બુધવારે\x22આવતા બુધવારે\x17+{0} બુધવાર\x17-{0} બુધવાર\x22ગયા " + - "ગુરુવારે\x1cઆ ગુરુવારે%આવતા ગુરુવારે\x1a+{0} ગુરુવાર\x1a-{0} ગુરુવાર%ગ" + - "યા શુક્રવારે\x1fઆ શુક્રવારે(આવતા શુક્રવારે\x1d+{0} શુક્રવાર\x1d-{0} શુ" + - "ક્રવાર\x1fગયા શનિવારે\x19આ શનિવારે\x22આવતા શનિવારે\x17+{0} શનિવાર\x17-" + - "{0} શનિવાર\x0cકલાક\x10આ કલાક\x19{0} કલાકમાં#{0} કલાક પહેલાં\x04ક.\x0fમિન" + - "િટ\x13આ મિનિટ\x1c{0} મિનિટમાં&{0} મિનિટ પહેલાં\x07મિ.\x12સેકન્ડ\x0fહમણ" + - "ાં\x1c{0} સેકંડમાં&{0} સેકંડ પહેલાં\x07સે.\x13સમય ઝોન\x0d{0} સમય\x08{0" + - "} (+1)\x1a{0} માનક સમય8સંકલિત યુનિવર્સલ સમય5બ્રિટિશ ગ્રીષ્મ સમય&આઈરિશ મા" + - "નક સમય\x13એકર સમય/એકર પ્રમાણભૂત સમય)એકર ગ્રીષ્મ સમય+અફઘાનિસ્તાન સમય,મધ" + - "્ય આફ્રિકા સમય/પૂર્વ આફ્રિકા સમય?દક્ષિણ આફ્રિકા માનક સમય2પશ્ચિમ આફ્રિક" + - "ા સમય?પશ્ચિમ આફ્રિકા માનક સમયHપશ્ચિમ આફ્રિકા ગ્રીષ્મ સમય\x1fઅલાસ્કા સમ" + - "ય;અલાસ્કા પ્રમાણભૂત સમય,અલાસ્કા દિવસ સમય\x1fઅલ્માટી સમય;અલ્માટી પ્રમાણ" + - "ભૂત સમય5અલ્માટી ગ્રીષ્મ સમય\x1cએમેઝોન સમય)એમેઝોન માનક સમય2એમેઝોન ગ્રીષ" + - "્મ સમય<ઉત્તર અમેરિકન મધ્ય સમયgઉત્તર અમેરિકન કેન્દ્રિય પ્રમાણભૂત સમયIઉત" + - "્તર અમેરિકન મધ્ય દિવસ સમયBઉત્તર અમેરિકન પૂર્વી સમય^ઉત્તર અમેરિકન પૂર્વ" + - "ી પ્રમાણભૂત સમયOઉત્તર અમેરિકન પૂર્વી દિવસ સમયEઉત્તર અમેરિકન માઉન્ટન સમ" + - "યaઉત્તર અમેરિકન માઉન્ટન પ્રમાણભૂત સમયRઉત્તર અમેરિકન માઉન્ટન દિવસ સમયEઉ" + - "ત્તર અમેરિકન પેસિફિક સમયaઉત્તર અમેરિકન પેસિફિક પ્રમાણભૂત સમયRઉત્તર અમે" + - "રિકન પેસિફિક દિવસ સમય\x1cઅનાદિર સમય8અનાડિર પ્રમાણભૂત સમય2અનાડિર ગ્રીષ્" + - "મ સમય\x19એપિયા સમય5એપિયા પ્રમાણભૂત સમય&અપિયા દિવસ સમય\x1cઅક્તાઉ સમય8અક" + - "્તાઉ પ્રમાણભૂત સમય2અક્તાઉ ગ્રીષ્મ સમય\x1cઍક્ટોબ સમય8ઍક્ટોબ પ્રમાણભૂત સ" + - "મય2ઍક્ટોબ ગ્રીષ્મ સમય\x1fઅરેબિયન સમય,અરેબિયન માનક સમય,અરેબિયન દિવસ સમય" + - "+અર્જેન્ટીના સમય8અર્જેન્ટીના માનક સમયAઆર્જેન્ટીના ગ્રીષ્મ સમયAપશ્ચિમી અર" + - "્જેન્ટીના સમયNપશ્ચિમી અર્જેન્ટીના માનક સમયWપશ્ચિમી અર્જેન્ટીના ગ્રીષ્મ" + - " સમય%આર્મેનિયા સમય2આર્મેનિયા માનક સમય;આર્મેનિયા ગ્રીષ્મ સમય%અટલાન્ટિક સમ" + - "યAઅટલાન્ટિક પ્રમાણભૂત સમય2અટલાન્ટિક દિવસ સમય8મધ્ય ઓસ્ટ્રેલિયન સમયTઓસ્ટ" + - "્રેલિયન મધ્ય પ્રમાણભૂત સમયEઓસ્ટ્રેલિયન મધ્ય દિવસ સમયNઓસ્ટ્રેલિયન મધ્ય " + - "પશ્ચિમી સમયjઓસ્ટ્રેલિયન મધ્ય પશ્ચિમી પ્રમાણભૂત સમય[ઓસ્ટ્રેલિયન મધ્ય પશ" + - "્ચિમી દિવસ સમયAપૂર્વીય ઓસ્ટ્રેલિયા સમય]ઓસ્ટ્રેલિયન પૂર્વીય પ્રમાણભૂત સ" + - "મયNઓસ્ટ્રેલિયન પૂર્વીય દિવસ સમયAપશ્ચિમી ઓસ્ટ્રેલિયા સમય]ઓસ્ટ્રેલિયન પશ" + - "્ચિમી પ્રમાણભૂત સમયNઓસ્ટ્રેલિયન પશ્ચિમી દિવસ સમય\x22અઝરબૈજાન સમય/અઝરબૈ" + - "જાન માનક સમય8અઝરબૈજાન ગ્રીષ્મ સમય\x1cએઝોર્સ સમય)એઝોર્સ માનક સમય2એઝોર્સ" + - " ગ્રીષ્મ સમય(બાંગ્લાદેશ સમય5બાંગ્લાદેશ માનક સમય>બાંગ્લાદેશ ગ્રીષ્મ સમય" + - "\x19ભૂટાન સમય\x22બોલિવિયા સમય(બ્રાઝિલિયા સમય5બ્રાઝિલિયા માનક સમય>બ્રાઝિલ" + - "િયા ગ્રીષ્મ સમય8બ્રૂનેઈ દારુસલામ સમય#કૅપ વર્ડે સમય0કૅપ વર્ડે માનક સમય9" + - "કૅપ વર્ડે ગ્રીષ્મ સમય)કેમોરો માનક સમય\x1cચેતહામ સમય)ચેતહામ માનક સમય)ચે" + - "તહામ દિવસ સમય\x16ચિલી સમય#ચિલી માનક સમય,ચિલી ગ્રીષ્મ સમય\x13ચીન સમય ચી" + - "ન માનક સમય ચીન દિવસ સમય%ચોઇબાલ્સન સમય2ચોઇબાલ્સન માનક સમય;ચોઇબાલ્સન ગ્ર" + - "ીષ્મ સમય5ક્રિસમસ આઇલેન્ડ સમય/કોકોઝ આઇલેન્ડ સમય\x22કોલંબિયા સમય/કોલંબિય" + - "ા માનક સમય8કોલંબિયા ગ્રીષ્મ સમય/કુક આઇલેન્ડ્સ સમય<કુક આઇલેન્ડ્સ માનક સ" + - "મયRકુક આઇલેન્ડ્સ અર્ધ ગ્રીષ્મ સમય\x1cક્યૂબા સમય)ક્યૂબા માનક સમય)ક્યૂબા" + - " દિવસ સમય\x19ડેવિસ સમયAડ્યુમોન્ટ-ડી‘ઉર્વિલ સમય)પૂર્વ તિમોર સમય/ઇસ્ટર આઇલ" + - "ેન્ડ સમય<ઇસ્ટર આઇલેન્ડ માનક સમયEઇસ્ટર આઇલેન્ડ ગ્રીષ્મ સમય\x22એક્વાડોર " + - "સમય/મધ્ય યુરોપિયન સમય<મધ્ય યુરોપિયન માનક સમયEમધ્ય યુરોપિયન ગ્રીષ્મ સમય" + - "5પૂર્વી યુરોપિયન સમયBપૂર્વી યુરોપિયન માનક સમયKપૂર્વી યુરોપીયન ગ્રીષ્મ સમ" + - "યKઆગળનું-પૂર્વીય યુરોપીયન સમય8પશ્ચિમી યુરોપિયન સમયEપશ્ચિમી યુરોપિયન મા" + - "નક સમયNપશ્ચિમી યુરોપિયન ગ્રીષ્મ સમય;ફોકલૅંડ આઇલેન્ડ્સ સમયHફૉકલૅંડ આઇલે" + - "ન્ડ્સ માનક સમયQફોકલૅંડ આઇલેન્ડ્સ ગ્રીષ્મ સમય\x16ફિજી સમય#ફિજી માનક સમય" + - ",ફિજી ગ્રીષ્મ સમય/ફ્રેન્ચ ગયાના સમયaફ્રેન્ચ સાઉધર્ન અને એન્ટાર્કટિક સમય%" + - "ગાલાપાગોસ સમય\x22ગેમ્બિયર સમય(જ્યોર્જિયા સમય5જ્યોર્જિયા માનક સમય>જ્યોર" + - "્જિયા ગ્રીષ્મ સમય5ગિલબર્ટ આઇલેન્ડ સમય2ગ્રીનવિચ મધ્યમ સમય8પૂર્વ ગ્રીનલે" + - "ન્ડ સમયEપૂર્વ ગ્રીનલેન્ડ માનક સમયNપૂર્વ ગ્રીનલેન્ડ ગ્રીષ્મ સમય;પશ્ચિમ " + - "ગ્રીનલેન્ડ સમયHપશ્ચિમ ગ્રીનલેન્ડ માનક સમયQપશ્ચિમ ગ્રીનલેન્ડ ગ્રીષ્મ સમ" + - "ય5ગ્વામ પ્રમાણભૂત સમય#ગલ્ફ માનક સમય\x19ગયાના સમય2હવાઈ-એલ્યુશિઅન સમય?હવ" + - "ાઇ-એલ્યુશિઅન માનક સમય?હવાઇ-એલ્યુશિઅન દિવસ સમય#હોંગ કોંગ સમય0હોંગ કોંગ " + - "માનક સમય9હોંગ કોંગ ગ્રીષ્મ સમય\x19હોવ્ડ સમય&હોવ્ડ માનક સમય/હોવ્ડ ગ્રીષ" + - "્મ સમય)ભારતીય માનક સમય2ભારતીય મહાસાગર સમય(ઇન્ડોચાઇના સમય8મધ્ય ઇન્ડોનેશ" + - "િયા સમયAપૂર્વીય ઇન્ડોનેશિયા સમયAપશ્ચિમી ઇન્ડોનેશિયા સમય\x16ઈરાન સમય#ઈર" + - "ાન માનક સમય#ઈરાન દિવસ સમય(ઇર્કુત્સ્ક સમય5ઇર્કુત્સ્ક માનક સમય>ઇર્કુત્સ્" + - "ક ગ્રીષ્મ સમય\x1cઇઝરાઇલ સમય)ઇઝરાઇલ માનક સમય)ઇઝરાઇલ દિવસ સમય\x19જાપાન સ" + - "મય&જાપાન માનક સમય&જાપાન દિવસ સમયVપેટ્રોપેવલોવ્સ્ક-કામચતસ્કી સમયrપેટ્રો" + - "પેવલોવ્સ્ક-કામચતસ્કી પ્રમાણભૂત સમયlપેટ્રોપેવલોવ્સ્ક-કામચતસ્કી ગ્રીષ્મ " + - "સમય8પૂર્વ કઝાકિસ્તાન સમય;પશ્ચિમ કઝાકિસ્તાન સમય\x1cકોરિયન સમય)કોરિયન મા" + - "નક સમય)કોરિયન દિવસ સમય\x19કોસરે સમય:ક્રેસ્નોયાર્સ્કી સમયAક્રસ્નોયાર્સ્" + - "ક માનક સમયJક્રેસનોયાર્સ્ક ગ્રીષ્મ સમય(કિર્ગિઝતાન સમય\x16લંકા સમય2લાઇન " + - "આઇલેન્ડ્સ સમય#લોર્ડ હોવ સમય?લોર્ડ હોવ પ્રમાણભૂત સમય0લોર્ડ હોવ દિવસ સમય" + - "\x16મકાઉ સમય2મકાઉ પ્રમાણભૂત સમય,મકાઉ ગ્રીષ્મ સમય8મેક્વાયર આઇલેન્ડ સમય" + - "\x19મગાડન સમય&મગાડન માનક સમય/મગાડન ગ્રીષ્મ સમય\x1fમલેશિયા સમય\x1cમાલદીવ " + - "સમય(માર્ક્યૂસસ સમય8માર્શલ આઇલેન્ડ્સ સમય\x22મોરિશિયસ સમય/મોરિશિયસ માનક " + - "સમય8મોરિશિયસ ગ્રીષ્મ સમય\x16મોસન સમયDઉત્તરપશ્ચિમ મેક્સિકો સમયQઉત્તરપશ્" + - "ચિમ મેક્સિકો માનક સમયQઉત્તરપશ્ચિમ મેક્સિકો દિવસ સમય8મેક્સીકન પેસિફિક સ" + - "મયEમેક્સીકન પેસિફિક માનક સમયEમેક્સીકન પેસિફિક દિવસ સમય&ઉલાન બાટોર સમય3" + - "ઉલાન બાટોર માનક સમય9ઉલાન બટોર ગ્રીષ્મ સમય\x1cમોસ્કો સમય8મોસ્કો પ્રમાણભ" + - "ૂત સમય2મોસ્કો ગ્રીષ્મ સમય\x22મ્યાનમાર સમય\x16નૌરુ સમય\x19નેપાળ સમય5ન્ય" + - "ુ સેલેડોનિયા સમયBન્યુ સેલેડોનિયા માનક સમયKન્યુ સેલેડોનિયા ગ્રીષ્મ સમય+" + - "ન્યુઝીલેન્ડ સમય8ન્યુઝીલેન્ડ માનક સમય8ન્યુઝીલેન્ડ દિવસ સમય7ન્યૂફાઉન્ડલે" + - "ન્ડ સમયSન્યૂફાઉન્ડલેન્ડ પ્રમાણભૂત સમયDન્યૂફાઉન્ડલેન્ડ દિવસ સમય\x16નીયુ" + - " સમય2નોરફૉક આઇલેન્ડ સમયEફર્નાન્ડો ડી નોરોન્હા સમયRફર્નાન્ડો ડી નોરોન્હા " + - "માનક સમયRફરનેન્ડો દે નોરોહા ગ્રીષ્મ સમયDઉત્તર મારિયાના આઇલેન્ડ્સ.નોવસિ" + - "બિર્સ્ક સમય;નોવસિબિર્સ્ક માનક સમયDનોવસિબિર્સ્ક ગ્રીષ્મ સમય\x1cઓમ્સ્ક સ" + - "મય&ઓમસ્ક માનક સમય2ઓમ્સ્ક ગ્રીષ્મ સમય%પાકિસ્તાન સમય2પાકિસ્તાન માનક સમય;" + - "પાકિસ્તાન ગ્રીષ્મ સમય\x16પલાઉ સમય3પાપુઆ ન્યુ ગિની સમય\x22પેરાગ્વે સમય/" + - "પેરાગ્વે માનક સમય8પેરાગ્વે ગ્રીષ્મ સમય\x16પેરુ સમય#પેરુ માનક સમય,પેરુ " + - "ગ્રીષ્મ સમય\x22ફિલિપાઇન સમય/ફિલિપાઇન માનક સમય8ફિલિપાઇન ગ્રીષ્મ સમય;ફોન" + - "િક્સ આઇલેન્ડ્સ સમયIસેંટ પીએરે એન્ડ મિકીલોન સમયVસેંટ પીએરે એન્ડ મિકીલોન" + - " માનક સમયVસેંટ પીએરે એન્ડ મિકીલોન દિવસ સમય%પિટકેયર્ન સમય\x19પોનપે સમય+યો" + - "ન્ગ્યાન્ગ સમય(કિઝિલોર્ડા સમયDકિઝિલોર્ડા પ્રમાણભૂત સમય>કિઝિલોર્ડા ગ્રીષ" + - "્મ સમય\x22રીયૂનિયન સમય\x1cરોથેરા સમય\x1cસખાલિન સમય)સખાલિન માનક સમય2સખા" + - "લિન ગ્રીષ્મ સમય\x19સમારા સમય5સમારા પ્રમાણભૂત સમય/સમારા ગ્રીષ્મ સમય\x16" + - "સમોઆ સમય#સમોઆ માનક સમય,સમોઆ ગ્રીષ્મ સમય\x1cસેશલ્સ સમય/સિંગાપુર માનક સમ" + - "ય8સોલોમન આઇલેન્ડ્સ સમય;દક્ષિણ જ્યોર્જીયા સમય\x1fસૂરીનામ સમય\x1cસ્યોવા " + - "સમય\x1cતાહિતી સમય\x1cતાઇપેઇ સમય)તાઇપેઇ માનક સમય)તાઇપેઇ દિવસ સમય+તાજીકિ" + - "સ્તાન સમય\x1cટોકલાઉ સમય\x19ટોંગા સમય&ટોંગા માનક સમય/ટોંગા ગ્રીષ્મ સમય" + - "\x16ચુઉક સમય4તુર્કમેનિસ્તાન સમયAતુર્કમેનિસ્તાન માનક સમયJતુર્કમેનિસ્તાન ગ" + - "્રીષ્મ સમય\x19ટવાલૂ સમય\x1fઉરૂગ્વે સમય,ઉરૂગ્વે માનક સમય5ઉરૂગ્વે ગ્રીષ્" + - "મ સમય.ઉઝ્બેકિસ્તાન સમય;ઉઝ્બેકિસ્તાન માનક સમયDઉઝ્બેકિસ્તાન ગ્રીષ્મ સમય" + - "\x19વનાતૂ સમય&વનાતૂ માનક સમય/વનાતૂ ગ્રીષ્મ સમય%વેનેઝુએલા સમય1વ્લાડિવોસ્ટ" + - "ોક સમય>વ્લાડિવોસ્ટોક માનક સમયGવ્લાડિવોસ્ટોક ગ્રીષ્મ સમય+વોલ્ગોગ્રેડ સમ" + - "ય8વોલ્ગોગ્રેડ માનક સમયAવોલ્ગોગ્રેડ ગ્રીષ્મ સમય\x1fવોસ્ટોક સમય)વૅક આઇલે" + - "ન્ડ સમય<વૉલિસ અને ફ્યુચુના સમય%યાકુત્સ્ક સમય2યાકુત્સ્ક માનક સમય;યાકુત્" + - "સ્ક ગ્રીષ્મ સમય1યેકાટેરિનબર્ગ સમય>યેકાટેરિનબર્ગ માનક સમયGયેકાટેરિનબર્ગ" + - " ગ્રીષ્મ સમય" - -var bucket43 string = "" + // Size: 16924 bytes - "\x03Can\x03Feb\x03Mac\x03Apr\x03Mei\x03Jun\x03Cul\x03Agt\x03Sep\x03Okt" + - "\x03Nob\x03Dis\x08Chanuari\x08Feburari\x05Machi\x07Apiriri\x04Juni\x06Ch" + - "ulai\x06Agosti\x08Septemba\x07Okitoba\x07Nobemba\x07Disemba\x03Cpr\x03Ct" + - "t\x03Cmn\x03Cmt\x03Ars\x03Icm\x03Est\x09Chumapiri\x09Chumatato\x08Chumai" + - "ne\x09Chumatano\x07Aramisi\x06Ichuma\x07Esabato\x02E1\x02E2\x02E3\x02E4" + - "\x12Erobo entang’ani\x0eErobo yakabere\x0eErobo yagatato\x0cErobo yakane" + - "\x06Mambia\x03Mog\x0eYeso ataiborwa\x0eYeso kaiboirwe\x02YA\x02YK\x05Ebi" + - "ro\x09Omotienyi\x08Omokubio\x06Rituko\x05Igoro\x04Rero\x10Rituko r’ewiki" + - "\x14Mambia gose Morogoba\x04Ensa\x07Edakika\x08Esekendi\x0fChinse ‘chimo" + - "\x0bMMM dd, y G\x06J-guer\x07T-arree\x06Mayrnt\x06Avrril\x07Boaldyn\x08M" + - "-souree\x08J-souree\x09Luanistyn\x08M-fouyir\x08J-fouyir\x08M-Houney\x09" + - "M-Nollick\x0dJerrey-geuree\x0fToshiaght-arree\x06Averil\x0bMean-souree" + - "\x0dJerrey-souree\x0bMean-fouyir\x0dJerrey-fouyir\x0aMee Houney\x0eMee n" + - "y Nollick\x03Jed\x03Jel\x03Jem\x04Jerc\x04Jerd\x03Jeh\x03Jes\x08Jedoonee" + - "\x07Jelhein\x07Jemayrt\x07Jercean\x07Jerdein\x08Jeheiney\x06Jesarn\x0eEE" + - "EE dd MMMM y\x09MMM dd, y\x07Janairu\x09Faburairu\x05Maris\x07Afirilu" + - "\x04Mayu\x04Yuni\x04Yuli\x06Agusta\x07Satumba\x06Oktoba\x07Nuwamba\x07Di" + - "samba\x03Lah\x03Lit\x03Tal\x03Lar\x03Alh\x03Jum\x03Asa\x02Lh\x02Li\x02Ta" + - "\x02Lr\x02Al\x02Ju\x02As\x06Lahadi\x07Litinin\x06Talata\x06Laraba\x07Alh" + - "amis\x08Jummaʼa\x06Asabar\x0eKwata na ɗaya\x0dKwata na biyu\x0cKwata na " + - "uku\x0eKwata na huɗu\x14Kafin haihuwar annab\x14Bayan haihuwar annab\x04" + - "KHAI\x04BHAI\x06Zamani\x07Shekara\x04Wata\x04Mako\x05Kwana\x04Jiya\x03Ya" + - "u\x04Gobe\x04Rana\x04Yini\x03Awa\x05Minti\x08Daƙiƙa\x05Agogo\x04Ian.\x04" + - "Pep.\x04Mal.\x05ʻAp.\x04Iun.\x04Iul.\x05ʻAu.\x04Kep.\x05ʻOk.\x04Now.\x04" + - "Kek.\x07Ianuali\x09Pepeluali\x06Malaki\x09ʻApelila\x04Iune\x05Iulai\x08ʻ" + - "Aukake\x0aKepakemapa\x09ʻOkakopa\x08Nowemapa\x08Kekemapa\x02LP\x02P1\x02" + - "P2\x02P3\x02P4\x02P5\x02P6\x07Lāpule\x09Poʻakahi\x08Poʻalua\x09Poʻakolu" + - "\x08Poʻahā\x09Poʻalima\x08Poʻaono\x12EEEE, d בMMMM y G\x0cd בMMMM y G" + - "\x0bd בMMM y G\x10{1} בשעה {0}\x08ינו׳\x08פבר׳\x06מרץ\x08אפר׳\x06מאי\x08" + - "יוני\x08יולי\x08אוג׳\x08ספט׳\x08אוק׳\x08נוב׳\x08דצמ׳\x0aינואר\x0cפברואר" + - "\x0aאפריל\x0cאוגוסט\x0cספטמבר\x0eאוקטובר\x0cנובמבר\x0aדצמבר\x0bיום א׳" + - "\x0bיום ב׳\x0bיום ג׳\x0bיום ד׳\x0bיום ה׳\x0bיום ו׳\x06שבת\x04א׳\x04ב׳" + - "\x04ג׳\x04ד׳\x04ה׳\x04ו׳\x04ש׳\x11יום ראשון\x0dיום שני\x11יום שלישי\x11י" + - "ום רביעי\x11יום חמישי\x0fיום שישי\x0dיום שבת\x0cרבעון 1\x0cרבעון 2\x0cר" + - "בעון 3\x0cרבעון 4\x08חצות\x0cלפנה״צ\x0aאחה״צ\x08בוקר\x0cצהריים\x15אחר ה" + - "צהריים\x06ערב\x08לילה\x13לפנות בוקר\x15לפני הספירה\x0cלפנה״ס\x0cלספירה" + - "\x10EEEE, d בMMMM y\x0ad בMMMM y\x09d בMMM y\x08תשרי\x08חשון\x08כסלו\x06" + - "טבת\x06שבט\x0bאדר א׳\x06אדר\x0bאדר ב׳\x08ניסן\x08אייר\x08סיון\x08תמוז" + - "\x04אב\x08אלול\x06תש׳\x06חש׳\x06כס׳\x06טב׳\x06שב׳\x06א״א\x06אד׳\x06א״ב" + - "\x06ני׳\x06אי׳\x06סי׳\x06תמ׳\x06אל׳\x0aחשוון\x0aסיוון\x0aלבה״ע\x0aמוחרם" + - "\x06צפר\x0dרביע א׳\x0dרביע ב׳\x13ג׳ומאדא א׳\x13ג׳ומאדא ב׳\x08רג׳ב\x0aשעב" + - "אן\x0aרמדאן\x0aשוואל\x15ד׳ו אל־קעדה\x17ד׳ו אל־חיג׳ה\x16רביע אל-אוול\x16" + - "רביע א-ת׳אני\x1cג׳ומאדא אל-אולא\x1eג׳ומאדא א-ת׳אניה\x17רביע אל־אוול\x17" + - "רביע א־ת׳אני\x1dג׳ומאדא אל־אולא\x1fג׳ומאדא א־ת׳אניה\x13שנת היג׳רה\x0aטא" + - "יקה\x0cנינג׳ו\x0cשוטוקו\x0aתקופה\x06שנה\x13השנה שעברה\x08השנה\x11השנה ה" + - "באה\x0fבעוד שנה\x15בעוד שנתיים\x13בעוד {0} שנה\x15בעוד {0} שנים\x0fלפני" + - " שנה\x15לפני שנתיים\x13לפני {0} שנה\x15לפני {0} שנים\x06שנ׳\x0aרבעון\x17" + - "הרבעון הקודם\x0fרבעון זה\x13הרבעון הבא\x13ברבעון הבא\x1eבעוד שני רבעוני" + - "ם\x1bבעוד {0} רבעונים\x17ברבעון הקודם\x1eלפני שני רבעונים\x1bלפני {0} ר" + - "בעונים\x08רבע׳\x11ברבע׳ הבא\x18בעוד שני רבע׳\x15בעוד {0} רבע׳\x15ברבע׳ " + - "הקודם\x18לפני שני רבע׳\x15לפני {0} רבע׳\x08חודש\x13החודש שעבר\x0aהחודש" + - "\x11החודש הבא\x11בעוד חודש\x17בעוד חודשיים\x19בעוד {0} חודשים\x11לפני חו" + - "דש\x17לפני חודשיים\x19לפני {0} חודשים\x06חו׳\x0fבעוד חו׳\x13בעוד {0} חו" + - "׳\x0fלפני חו׳\x13לפני {0} חו׳\x08שבוע\x13השבוע שעבר\x0aהשבוע\x11השבוע ה" + - "בא\x11בעוד שבוע\x17בעוד שבועיים\x19בעוד {0} שבועות\x11לפני שבוע\x17לפני" + - " שבועיים\x19לפני {0} שבועות\x0fהשבוע של\x0fבעוד שב׳\x13בעוד {0} שב׳\x0fל" + - "פני שב׳\x13לפני {0} שב׳\x13השבוע של {0}\x06יום\x0aשלשום\x0aאתמול\x08היו" + - "ם\x06מחר\x0eמחרתיים\x13בעוד יום {0}\x15בעוד יומיים\x15בעוד {0} ימים\x13" + - "לפני יום {0}\x15לפני יומיים\x15לפני {0} ימים\x13בעוד {0} יום\x13לפני {0" + - "} ימ׳\x13בעוד {0} ימ׳\x13לפני {0} יום\x11יום בשבוע\x1cביום ראשון שעבר" + - "\x1aביום ראשון הזה\x1aביום ראשון הבא\x1eבעוד יום ראשון {0}\x1eבעוד {0} י" + - "מי ראשון\x1eלפני יום ראשון {0}\x1eלפני {0} ימי ראשון\x14יום א׳ שעבר\x12" + - "יום א׳ הבא\x16יום שני שעבר\x14יום שני הבא\x1aבעוד יום שני {0}\x1aבעוד {" + - "0} ימי שני\x1aלפני יום שני {0}\x1aלפני {0} ימי שני\x14יום ב׳ שעבר\x12יום" + - " ב׳ הבא\x1aיום שלישי שעבר\x18יום שלישי הבא\x1eבעוד יום שלישי {0}\x1eבעוד" + - " {0} ימי שלישי\x1eלפני יום שלישי {0}\x1eלפני {0} ימי שלישי\x14יום ג׳ שעב" + - "ר\x12יום ג׳ הבא\x1aיום רביעי שעבר\x18יום רביעי הבא\x1eבעוד יום רביעי {0" + - "}\x1eבעוד {0} ימי רביעי\x1eלפני יום רביעי {0}\x1eלפני {0} ימי רביעי\x14י" + - "ום ד׳ שעבר\x12יום ד׳ הבא\x1aיום חמישי שעבר\x18יום חמישי הבא\x1eבעוד יום" + - " חמישי {0}\x1eבעוד {0} ימי חמישי\x1eלפני יום חמישי {0}\x1eלפני {0} ימי ח" + - "מישי\x14יום ה׳ שעבר\x12יום ה׳ הבא\x18יום שישי שעבר\x16יום שישי הבא\x1aב" + - "עוד יום ששי {0}\x1aבעוד {0} ימי ששי\x1aלפני יום ששי {0}\x1aלפני {0} ימי" + - " ששי\x14יום ו׳ שעבר\x14ביום ו׳ הבא\x12יום ו׳ הבא\x16יום שבת שעבר\x14יום " + - "שבת הבא\x13בעוד שבת {0}\x17בעוד {0} שבתות\x13לפני שבת {0}\x17לפני {0} ש" + - "בתות\x11שבת שעברה\x0fשבת הבאה\x17לפנה״צ/אחה״צ\x06שעה\x0dבשעה זו\x0fבעוד" + - " שעה\x15בעוד שעתיים\x15בעוד {0} שעות\x0fלפני שעה\x15לפני שעתיים\x15לפני " + - "{0} שעות\x13בעוד {0} שע׳\x13לפני {0} שע׳\x06שע׳\x06דקה\x0dבדקה זו\x0fבעו" + - "ד דקה\x18בעוד שתי דקות\x15בעוד {0} דקות\x0fלפני דקה\x18לפני שתי דקות" + - "\x15לפני {0} דקות\x06דק׳\x16בעוד שתי דק׳\x13בעוד {0} דק׳\x13לפני {0} דק׳" + - "\x16לפני שתי דק׳\x0aשנייה\x0aעכשיו\x13בעוד שנייה\x1aבעוד שתי שניות\x17בע" + - "וד {0} שניות\x13לפני שנייה\x1aלפני שתי שניות\x17לפני {0} שניות\x0fבעוד " + - "שנ׳\x16בעוד שתי שנ׳\x13בעוד {0} שנ׳\x0fלפני שנ׳\x16לפני שתי שנ׳\x13לפני" + - " {0} שנ׳\x08אזור\x13\u200e+HH:mm;-HH:mm\u200e\x09GMT{0}\u200e\x03GMT\x0c" + - "שעון {0}\x15שעון {0} (קיץ)\x17שעון {0} (חורף)$זמן אוניברסלי מתואם\x1eשע" + - "ון קיץ בריטניה\x1cשעון קיץ אירלנד\x19שעון אפגניסטן\x1eשעון מרכז אפריקה" + - "\x1eשעון מזרח אפריקה\x1eשעון דרום אפריקה\x1eשעון מערב אפריקה)שעון מערב א" + - "פריקה (חורף)'שעון מערב אפריקה (קיץ)\x13שעון אלסקה\x1eשעון אלסקה (חורף)" + - "\x1cשעון אלסקה (קיץ)\x15שעון אמזונס שעון אמזונס (חורף)\x1eשעון אמזונס (ק" + - "יץ)\x1cשעון מרכז ארה״ב'שעון מרכז ארה״ב (חורף)%שעון מרכז ארה״ב (קיץ)\x1e" + - "שעון החוף המזרחי)שעון החוף המזרחי (חורף)'שעון החוף המזרחי (קיץ))שעון אז" + - "ור ההרים בארה״ב4שעון אזור ההרים בארה״ב (חורף)2שעון אזור ההרים בארה״ב (ק" + - "יץ)\x1cשעון מערב ארה״ב'שעון מערב ארה״ב (חורף)%שעון מערב ארה״ב (קיץ)\x13" + - "שעון אנדיר\x1cשעון רגיל אנדיר\x1aשעון קיץ אנדיר\x11שעון אפיה\x1cשעון אפ" + - "יה (חורף)\x1aשעון אפיה (קיץ)\x1dשעון חצי האי ערב(שעון חצי האי ערב (חורף" + - ")&שעון חצי האי ערב (קיץ)\x19שעון ארגנטינה$שעון ארגנטינה (חורף)\x22שעון א" + - "רגנטינה (קיץ)\x22שעון מערב ארגנטינה-שעון מערב ארגנטינה (חורף)+שעון מערב" + - " ארגנטינה (קיץ)\x15שעון ארמניה שעון ארמניה (חורף)\x1eשעון ארמניה (קיץ)*ש" + - "עון האוקיינוס האטלנטי5שעון האוקיינוס האטלנטי (חורף)3שעון האוקיינוס האטל" + - "נטי (קיץ)\x22שעון מרכז אוסטרליה-שעון מרכז אוסטרליה (חורף)+שעון מרכז אוס" + - "טרליה (קיץ)+שעון מרכז-מערב אוסטרליה6שעון מרכז-מערב אוסטרליה (חורף)4שעון" + - " מרכז-מערב אוסטרליה (קיץ)\x22שעון מזרח אוסטרליה-שעון מזרח אוסטרליה (חורף" + - ")+שעון מזרח אוסטרליה (קיץ)\x22שעון מערב אוסטרליה-שעון מערב אוסטרליה (חור" + - "ף)+שעון מערב אוסטרליה (קיץ)\x1dשעון אזרבייג׳אן(שעון אזרבייג׳אן (חורף)&ש" + - "עון אזרבייג׳אן (קיץ)$שעון האיים האזוריים/שעון האיים האזוריים (חורף)-שעו" + - "ן האיים האזוריים (קיץ)\x15שעון בנגלדש שעון בנגלדש (חורף)\x1eשעון בנגלדש" + - " (קיץ)\x13שעון בהוטן\x17שעון בוליביה\x17שעון ברזיליה\x22שעון ברזיליה (חו" + - "רף) שעון ברזיליה (קיץ)&שעון ברוניי דארוסלאם\x16שעון כף ורדה!שעון כף ורד" + - "ה (חורף)\x1fשעון כף ורדה (קיץ)\x17שעון צ׳אמורו\x15שעון צ׳טהאם שעון צ׳טה" + - "אם (חורף)\x1eשעון צ׳טהאם (קיץ)\x13שעון צ׳ילה\x1eשעון צ׳ילה (חורף)\x1cשע" + - "ון צ׳ילה (קיץ)\x0fשעון סין\x1aשעון סין (חורף)\x18שעון סין (קיץ)\x19שעון" + - " צ׳ויבלסן$שעון צ׳ויבלסן (חורף)\x22שעון צ׳ויבלסן (קיץ)\x1eשעון האי כריסטמ" + - "ס\x1aשעון איי קוקוס\x19שעון קולומביה$שעון קולומביה (חורף)\x22שעון קולומ" + - "ביה (קיץ)\x16שעון איי קוק!שעון איי קוק (חורף),שעון איי קוק (מחצית הקיץ)" + - "\x11שעון קובה\x1cשעון קובה (חורף)\x1aשעון קובה (קיץ)\x15שעון דיוויס&שעון" + - " דומון ד׳אורוויל\x1cשעון מזרח טימור\x18שעון אי הפסחא#שעון אי הפסחא (חורף" + - ")!שעון אי הפסחא (קיץ)\x17שעון אקוודור\x1eשעון מרכז אירופה)שעון מרכז אירו" + - "פה (חורף)'שעון מרכז אירופה (קיץ)\x1eשעון מזרח אירופה)שעון מזרח אירופה (" + - "חורף)'שעון מזרח אירופה (קיץ)\x13שעון מינסק\x1eשעון מערב אירופה)שעון מער" + - "ב אירופה (חורף)'שעון מערב אירופה (קיץ)\x1cשעון איי פוקלנד'שעון איי פוקל" + - "נד (חורף)%שעון איי פוקלנד (קיץ)\x13שעון פיג׳י\x1eשעון פיג׳י (חורף)\x1cש" + - "עון פיג׳י (קיץ)\x22שעון גיאנה הצרפתיתMשעון הארצות הדרומיות והאנטארקטיות" + - " של צרפת\x1eשעון איי גלאפגוס\x1cשעון איי גמבייה\x17שעון גאורגיה\x22שעון " + - "גאורגיה (חורף) שעון גאורגיה (קיץ)\x1cשעון איי גילברט\x1aשעון גריניץ׳" + - "\u200f שעון מזרח גרינלנד+שעון מזרח גרינלנד (חורף))שעון מזרח גרינלנד (קיץ" + - ") שעון מערב גרינלנד+שעון מערב גרינלנד (חורף))שעון מערב גרינלנד (קיץ) שעו" + - "ן מדינות המפרץ\x13שעון גיאנה1שעון האיים האלאוטיים הוואי<שעון האיים האלא" + - "וטיים הוואי (חורף):שעון האיים האלאוטיים הוואי (קיץ)\x1aשעון הונג קונג%ש" + - "עון הונג קונג (חורף)#שעון הונג קונג (קיץ)\x11שעון חובד\x1cשעון חובד (חו" + - "רף)\x1aשעון חובד (קיץ)\x11שעון הודו&שעון האוקיינוס ההודי\x18שעון הודו-ס" + - "ין$שעון מרכז אינדונזיה$שעון מזרח אינדונזיה$שעון מערב אינדונזיה\x13שעון " + - "איראן\x1eשעון איראן (חורף)\x1cשעון איראן (קיץ)\x19שעון אירקוטסק$שעון אי" + - "רקוטסק (חורף)\x22שעון אירקוסטק (קיץ)\x13שעון ישראל\x1eשעון ישראל (חורף)" + - "\x1cשעון ישראל (קיץ)\x0fשעון יפן\x1aשעון יפן (חורף)\x18שעון יפן (קיץ)0שע" + - "ון פטרופבלובסק-קמצ׳טסקי9שעון רגיל פטרופבלובסק-קמצ׳טסקי7שעון קיץ פטרופבל" + - "ובסק-קמצ׳טסקי\x1eשעון מזרח קזחסטן\x1eשעון מערב קזחסטן\x15שעון קוריאה שע" + - "ון קוריאה (חורף)\x1eשעון קוריאה (קיץ)\x15שעון קוסראה\x1dשעון קרסנויארסק" + - "(שעון קרסנויארסק (חורף)&שעון קרסנויארסק (קיץ)\x1bשעון קירגיזסטן\x18שעון " + - "איי ליין\x1fשעון אי הלורד האו*שעון אי הלורד האו (חורף)(שעון אי הלורד הא" + - "ו (קיץ)\x11שעון מקאו\x1aשעון חורף מקאו\x18שעון קיץ מקאו\x17שעון מקווארי" + - "\x11שעון מגדן\x1cשעון מגדן (חורף)\x1aשעון מגדן (קיץ)\x13שעון מלזיה&שעון " + - "האיים המלדיביים\x1aשעון איי מרקיז\x18שעון איי מרשל\x1bשעון מאוריציוס&שע" + - "ון מאוריציוס (חורף)$שעון מאוריציוס (קיץ)\x15שעון מאוסון'שעון צפון-מערב " + - "מקסיקו2שעון צפון-מערב מקסיקו (חורף)0שעון צפון-מערב מקסיקו (קיץ)\x1eשעון" + - " מערב מקסיקו)שעון מערב מקסיקו (חורף)'שעון מערב מקסיקו (קיץ)\x1aשעון אולן" + - " בטור%שעון אולן בטור (חורף)#שעון אולן בטור (קיץ)\x15שעון מוסקבה שעון מוס" + - "קבה (חורף)\x1eשעון מוסקבה (קיץ)\x15שעון מיאנמר\x13שעון נאורו\x11שעון נפ" + - "אל\x22שעון קלדוניה החדשה-שעון קלדוניה החדשה (חורף)+שעון קלדוניה החדשה (" + - "קיץ)\x1aשעון ניו זילנד%שעון ניו זילנד (חורף)#שעון ניו זילנד (קיץ)\x1fשע" + - "ון ניופאונדלנד*שעון ניופאונדלנד (חורף)(שעון ניופאונדלנד (קיץ)\x13שעון נ" + - "יואה\x1cשעון האי נורפוק)שעון פרננדו די נורוניה4שעון פרננדו די נורוניה (" + - "חורף)2שעון פרננדו די נורוניה (קיץ)\x1fשעון נובוסיבירסק*שעון נובוסיבירסק" + - " (חורף)(שעון נובוסיבירסק (קיץ)\x13שעון אומסק\x1eשעון אומסק (חורף)\x1cשעו" + - "ן אומסק (קיץ)\x15שעון פקיסטן שעון פקיסטן (חורף)\x1eשעון פקיסטן (קיץ)" + - "\x11שעון פלאו+שעון פפואה גיניאה החדשה\x17שעון פרגוואי\x22שעון פרגוואי (ח" + - "ורף) שעון פרגוואי (קיץ)\x0fשעון פרו\x1aשעון פרו (חורף)\x18שעון פרו (קיץ" + - ")\x1dשעון הפיליפינים(שעון הפיליפינים (חורף)&שעון הפיליפינים (קיץ)\x1cשעו" + - "ן איי פיניקס'שעון סנט פייר ומיקלון2שעון סנט פייר ומיקלון (חורף)0שעון סנ" + - "ט פייר ומיקלון (קיץ)\x15שעון פיטקרן\x15שעון פונאפי\x1bשעון פיונגיאנג" + - "\x17שעון ראוניון\x15שעון רות׳רה\x13שעון סחלין\x1eשעון סחלין (חורף)\x1cשע" + - "ון סחלין (קיץ)\x11שעון סמרה\x1aשעון רגיל סמרה\x18שעון קיץ סמרה\x13שעון " + - "סמואה\x1eשעון סמואה (חורף)\x1cשעון סמואה (קיץ)\x1aשעון איי סיישל\x17שעו" + - "ן סינגפור\x18שעון איי שלמה\x22שעון דרום ג׳ורג׳יה\x17שעון סורינאם\x15שעו" + - "ן סייווה\x13שעון טהיטי\x15שעון טאיפיי שעון טאיפיי (חורף)\x1eשעון טאיפיי" + - " (קיץ)\x1bשעון טג׳יקיסטן\x15שעון טוקלאו\x13שעון טונגה\x1eשעון טונגה (חור" + - "ף)\x1cשעון טונגה (קיץ)\x11שעון צ׳וק\x1dשעון טורקמניסטן(שעון טורקמניסטן " + - "(חורף)&שעון טורקמניסטן (קיץ)\x15שעון טובאלו\x1bשעון אורוגוואי&שעון אורוג" + - "וואי (חורף)$שעון אורוגוואי (קיץ)\x1bשעון אוזבקיסטן&שעון אוזבקיסטן (חורף" + - ")$שעון אוזבקיסטן (קיץ)\x15שעון ונואטו שעון ונואטו (חורף)\x1eשעון ונואטו " + - "(קיץ)\x17שעון ונצואלה\x1dשעון ולדיווסטוק(שעון ולדיווסטוק (חורף)&שעון ולד" + - "יווסטוק (קיץ)\x19שעון וולגוגרד$שעון וולגוגרד (חורף)\x22שעון וולגוגרד (ק" + - "יץ)\x15שעון ווסטוק\x18שעון האי וייק$שעון וואליס ופוטונה\x15שעון יקוטסק " + - "שעון יקוטסק (חורף)\x1eשעון יקוטסק (קיץ)\x1dשעון יקטרינבורג(שעון יקטרינב" + - "ורג (חורף)&שעון יקטרינבורג (קיץ)\x03Ayn\x03Asn\x03Akr\x03Akw\x03Asm\x05" + - "Asḍ\x04אב\x04אב" - -var bucket44 string = "" + // Size: 9392 bytes - "\x18मस्केरेम\x15टेकेम्ट\x0cहेदर\x0fतहसास\x06टर\x15येकाटिट\x15मेगाबिट\x1b" + - "मियाज़िया\x0fगनबोट\x09सेन\x0fहम्ले\x12नेहासे\x12पागूमन\x10G EEEE, d MM" + - "MM y\x0aG d MMMM y\x07G d/M/y\x0e{1} को {0}\x09जन॰\x0cफ़र॰\x0fमार्च\x12अ" + - "प्रैल\x06मई\x09जून\x0cजुल॰\x09अग॰\x0cसित॰\x12अक्तू॰\x09नव॰\x0cदिस॰\x0f" + - "जनवरी\x12फ़रवरी\x0fजुलाई\x0fअगस्त\x12सितंबर\x15अक्तूबर\x0fनवंबर\x12दिस" + - "ंबर\x09रवि\x09सोम\x0cमंगल\x09बुध\x0cगुरु\x0fशुक्र\x09शनि\x12रविवार\x12" + - "सोमवार\x15मंगलवार\x12बुधवार\x15गुरुवार\x18शुक्रवार\x12शनिवार\x07ति1" + - "\x07ति2\x07ति3\x07ति4\x1fपहली तिमाही\x22दूसरी तिमाही\x22तीसरी तिमाही\x1f" + - "चौथी तिमाही\x1eमध्यरात्रि\x1bपूर्वाह्न\x15अपराह्न\x0cसुबह\x09शाम\x09रा" + - "त\x06पू\x0fदोपहर\x13आधी रात\x19ईसा-पूर्व\x1cईसवी पूर्व\x13ईसवी सन\x0cई" + - "सवी\x0fईस्वी\x0fचैत्र\x0fवैशाख\x15ज्येष्ठ\x0fआषाढ़\x12श्रावण\x15भाद्रप" + - "द\x12अश्विन\x15कार्तिक\x18अग्रहायण\x09पौष\x09माघ\x15फाल्गुन\x06शक\x15म" + - "ुहर्रम\x09सफर\x1cराबी प्रथम\x22राबी द्वितीय\x22जुम्डा प्रथम(जुम्डा द्व" + - "ितीय\x09रजब\x0cशावन\x0fरमजान\x12शव्व्ल\x19जिल-क्दाह\x22जिल्-हिज्जाह" + - "\x1bताएका (645–650)\x1eहाकूची (650–671)\x1eहाकूहो (672–686)\x18शूचो (686" + - "–701)\x1bताहिओ (701–704)\x18केउन (704–708)\x18वाडू (708–715)\x18रैकी (" + - "715–717)\x18योरो (717–724)\x1bजिंकी (724–729)$टेम्प्यो (729–749)7टेम्प्य" + - "ो-काम्पो (749–749)1टेम्प्यो-शोहो (749–757)1टेम्प्यो-होजी (757–765)4टेम" + - "्प्यो-जिंगो (765–767)1टेम्प्यो-किउन (767–770)\x18होकी (770–780)\x18टेन" + - "ो (781–782)$इंर्याकू (782–806)\x1bडाईडू (806–810)\x1eक़ोनिन (810–824)" + - "\x1bटेंचो (824–834)\x18शोवा (834–848)\x1eकाज्यो (848–851)\x1bनिंजू (851–" + - "854)\x1bशाईकू (854–857)\x18टेनन (857–859)\x1bजोगन् (859–877)\x1eगेंकेई (" + - "877–885)\x1eनिन्ना (885–889)$केम्प्यो (889–898)\x1bशूताई (898–901)\x18ईं" + - "गी (901–923)\x18ईंचो (923–931)\x1bशोहेई (931–938)!टेंग्यो (938–947)'टे" + - "ंर्याकू (947–957)!टेंटूकू (957–961)\x15ओवा (961–964)\x18कोहो (964–968)" + - "\x1bअन्ना (968–970)!टेंरोकू (970–973)\x1cटेन-एन (973–976)\x1bजोगन् (976–" + - "978)\x1eटेंगेन (978–983)\x18ईकान (983–985)\x1bकन्ना (985–987)\x16ई-एन (9" + - "87–989)\x18एइसो (989–990)$शोर्याकू (990–995)\x1eचोटूकु (995–999)\x19चोहो" + - " (999–1004)\x1aकंको (1004–1012) च्योवा (1012–1017) कन्निन (1017–1021) ज़" + - "ियान (1021–1024)\x1aमंजू (1024–1028)\x1aचोगन (1028–1037)&चोर्याकू (103" + - "7–1040) चोक्यु (1040–1044)#कांटूको (1044–1046)\x17ईशो (1046–1053)\x1dटें" + - "गी (1053–1058)\x1dकोहैइ (1058–1065)&जिर्याकू (1065–1069) ईंक्यू (1069–" + - "1074)\x1aसोहो (1074–1077)&शोर्याकू (1077–1081)\x17ईहो (1081–1084)\x1dओटू" + - "को (1084–1087)\x1dकांजि (1087–1094)\x1aकोहो (1094–1096)\x17ईचो (1096–1" + - "097) शोटूको (1097–1099)\x1aकोवा (1099–1104)\x1aचोजी (1104–1106)\x1aकाशो " + - "(1106–1108)#टेन्निन (1108–1110)\x1bटेन-ई (1110–1113)\x1dईक्यू (1113–1118" + - ")\x1bजेन-ई (1118–1120)\x1aहोआन (1120–1124)\x1dतेंजी (1124–1126)\x1dदाईजी" + - " (1126–1131)\x1dटेंशो (1131–1132)\x1aचोशो (1132–1135)\x1aहोएन (1135–1141" + - ")\x17ईजी (1141–1142)\x1aकोजी (1142–1144) टेन्यो (1144–1145) क्यूआन (1145" + - "–1151) निंपैई (1151–1154) क्योजो (1154–1156)\x1dहोगेन (1156–1159)\x1aह" + - "ैजी (1159–1160)#ईर्याकू (1160–1161)\x17ओहो (1161–1163)\x1dचोकान (1163–" + - "1165)\x1aईमान (1165–1166)\x1eनिन-आन (1166–1169)\x17काओ (1169–1171)\x1aशो" + - "अन (1171–1175)\x1aअंजन (1175–1177)\x1aजिशो (1177–1181)\x1aयोवा (1181–1" + - "182)\x1aजूऐई (1182–1184))जेंर्याकू (1184–1185)\x1dबूंजी (1185–1190)#केंक" + - "्यू (1190–1199)\x1aशोजी (1199–1201)#केन्निन (1201–1204)#जेंक्यू (1204–" + - "1206)\x1bकेन-ई (1206–1207)\x1dशोगेन (1207–1211))केंर्याकू (1211–1213)" + - "\x1dकेंपो (1213–1219) शोक्यू (1219–1222)\x14जू (1222–1224)#जेन्निन (1224" + - "–1225) कोरोकू (1225–1227)\x1dअंटैइ (1227–1229)\x1dकांकी (1229–1232)" + - "\x1aजोएई (1232–1233)&टेम्पूकू (1233–1234))बुंर्याकू (1234–1235)\x1dकाटेई" + - " (1235–1238))र्याकूनिन (1238–1239)\x18ईन-ओ (1239–1240)\x1dनिंजी (1240–12" + - "43) कांजेन (1243–1247)\x1aहोजी (1247–1249)\x1dकेंचो (1249–1256)\x1dकोगेन" + - " (1256–1257)\x1aशोका (1257–1259)\x1dशोगेन (1259–1260)\x1bबुन-ओ (1260–126" + - "1)\x1aकोचो (1261–1264)\x1bबुन-ई (1264–1275)\x1dकेंजी (1275–1278)\x1aकोअन" + - " (1278–1288)\x14शो (1288–1293)\x1aईनिन (1293–1299)\x1aशोअन (1299–1302) क" + - "ेंजेन (1302–1303)\x1dकाजेन (1303–1306) टोकूजी (1306–1308)\x1dईंकेई (13" + - "08–1311)\x17ओचो (1311–1312)\x1aशोवा (1312–1317)\x1dबुंपो (1317–1319)\x1a" + - "जेनो (1319–1321)#जेंक्यो (1321–1324)\x1aशोचू (1324–1326) कारेकी (1326–" + - "1329)#जेंटोकू (1329–1331)\x1dगेंको (1331–1334) केम्मू (1334–1336)\x1dईंज" + - "ेन (1336–1340) कोकोकू (1340–1346)\x1dशोहेई (1346–1370)#केंटोकू (1370–1" + - "372)\x1dबूंचो (1372–1375)\x1dटेंजो (1375–1379)&कोर्याकू (1379–1381)\x1aक" + - "ोवा (1381–1384)\x1dजेंचू (1384–1392) मेटोकू (1384–1387)\x1dकाकेई (1387" + - "–1389)\x14कू (1389–1390) मेटोकू (1390–1394)\x14ओई (1394–1428)\x1aशोचो " + - "(1428–1429)\x1dईक्यो (1429–1441)&काकीत्सू (1441–1444)\x1eबुन-अन (1444–14" + - "49) होटोकू (1449–1452)&क्योटोकू (1452–1455)\x1aकोशो (1455–1457) चोरोकू (" + - "1457–1460)\x1dकांशो (1460–1466)\x1dबुंशो (1466–1467)\x1aओनिन (1467–1469)" + - "#बुन्मेई (1469–1487) चोक्यो (1487–1489) ईंटोकू (1489–1492)\x1aमेईओ (1492" + - "–1501)\x1dबुंकी (1501–1504)\x17ईशो (1504–1521)\x1dताईएई (1521–1528)&क्" + - "योरोकू (1528–1532) टेन्मन (1532–1555)\x1aकोजी (1555–1558)\x1dईरोकू (15" + - "58–1570)\x1dजेंकी (1570–1573)\x1dटेंशो (1573–1592)#बुंरोकू (1592–1596)" + - "\x1dकेईचो (1596–1615)\x1dजेनवा (1615–1624)\x1eकान-एई (1624–1644)\x1aशोहो" + - " (1644–1648)\x1dकेईआन (1648–1652)\x14शो (1652–1655))मेईर्याकू (1655–1658" + - ")\x1dमानजी (1658–1661)\x1dकनबुन (1661–1673)\x1aईंपो (1673–1681)\x1dटेंवा" + - " (1681–1684) जोक्यो (1684–1688)#जेंरोकू (1688–1704)\x1aहोएई (1704–1711) " + - "शोटूको (1711–1716) क्योहो (1716–1736) जेंबुन (1736–1741)\x1dकांपो (174" + - "1–1744) इंक्यो (1744–1748)\x1eकान-एन (1748–1751)&होर्याकू (1751–1764)" + - "\x1dमेईवा (1764–1772)\x1bअन-एई (1772–1781) टेनमेई (1781–1789) कांसेई (17" + - "89–1801) क्योवा (1801–1804)\x1dबुंका (1804–1818) बुंसेई (1818–1830)\x1dट" + - "ेंपो (1830–1844)\x1aकोका (1844–1848)\x1aकाईए (1848–1854)\x1dअंसेई (185" + - "4–1860)\x1eमान-ईन (1860–1861)#बुंक्यौ (1861–1864)\x1dजेंजी (1864–1865)" + - "\x1aकेईओ (1865–1868)\x0cमेजी\x0fताईशो\x0cशोवा\x12हेईसेई\x0cमंगळ\x12सोमवा" + - "र\x15मंगळवार\x12बुधवार\x15गुरुवार\x18शुक्रवार\x12शनिवार\x1bफेब्रुअरी" + - "\x0fमार्च\x12अप्रिल\x06मे\x09जुन\x0fअगस्ट\x1eसेप्टेम्बर\x15अक्टोबर\x18नो" + - "भेम्बर\x18डिसेम्बर\x09जेठ\x0cअसार\x0cसाउन\x09भदौ\x0cअसोज\x15कात्तिक" + - "\x0fमङसिर\x09पुस\x0fफागुन\x09चैत" - -var bucket45 string = "" + // Size: 20545 bytes - "\x18फर्वादिन$ओर्दिवेहेस्ट\x18खोरर्दाद\x09टिर\x12मोरदाद\x18शाहरीवर्\x0cमे" + - "हर\x09अवन\x0cअज़र\x06डे\x0cबहमन\x18ईस्फन्द्\x09युग\x0cवर्ष\x1cपिछला वर" + - "्ष\x13इस वर्ष\x19अगला वर्ष\x1a{0} वर्ष में\x1d{0} वर्ष पहले\x12तिमाही" + - "\x22अंतिम तिमाही\x19इस तिमाही\x1fअगली तिमाही {0} तिमाही में){0} तिमाहियो" + - "ं में#{0} तिमाही पहले,{0} तिमाहियों पहले\x15{0} ति. में\x18{0} ति. पहल" + - "े\x09माह\x19पिछला माह\x10इस माह\x16अगला माह\x17{0} माह में\x1a{0} माह " + - "पहले\x12सप्ताह\x22पिछला सप्ताह\x19इस सप्ताह\x1fअगला सप्ताह {0} सप्ताह " + - "में#{0} सप्ताह पहले\x1d{0} के सप्ताह\x09दिन\x1cबीता परसों\x06कल\x06आज" + - "\x0fपरसों\x17{0} दिन में\x1a{0} दिन पहले#सप्ताह का दिन\x22पिछला रविवार" + - "\x19इस रविवार\x1fअगला रविवार {0} रविवार में&{0} रविवार पूर्व\x1aपिछला रव" + - "ि.\x11इस रवि.\x17अगला रवि.\x22पिछला सोमवार\x19इस सोमवार\x1fअगला सोमवार" + - " {0} सोमवार में&{0} सोमवार पूर्व\x1aपिछला सोम.\x11इस सोम.\x17अगला सोम.%प" + - "िछला मंगलवार\x1cइस मंगलवार\x22अगला मंगलवार#{0} मंगलवार में){0} मंगलवार" + - " पूर्व\x1dपिछला मंगल.\x14इस मंगल.\x1aअगला मंगल.\x22पिछला बुधवार\x19इस बु" + - "धवार\x1fअगला बुधवार {0} बुधवार में&{0} बुधवार पूर्व\x1aपिछला बुध.\x11इ" + - "स बुध.\x17अगला बुध.%पिछला गुरुवार\x1cइस गुरुवार\x22अगला गुरुवार#{0} गु" + - "रुवार में){0} गुरुवार पूर्व\x1dपिछला गुरु.\x14इस गुरु.\x1aअगला गुरु.(प" + - "िछला शुक्रवार\x1fइस शुक्रवार%अगला शुक्रवार&{0} शुक्रवार में,{0} शुक्रव" + - "ार पूर्व पिछला शुक्र.\x17इस शुक्र.\x1dअगला शुक्र.\x22पिछला शनिवार\x19इ" + - "स शनिवार\x1fअगला शनिवार {0} शनिवार में&{0} शनिवार पूर्व\x1aपिछला शनि." + - "\x11इस शनि.\x17अगला शनि.1पूर्वाह्न/अपराह्न\x0cघंटा\x13यह घंटा\x1a{0} घंट" + - "े में\x1d{0} घंटे पहले\x07घं.\x15{0} घं. में\x18{0} घं. पहले\x0cमिनट" + - "\x13यह मिनट\x1a{0} मिनट में\x1d{0} मिनट पहले\x07मि.\x15{0} मि. में\x18{0" + - "} मि. पहले\x0fसेकंड\x06अब\x1d{0} सेकंड में {0} सेकंड पहले\x07से.\x15{0} " + - "से. में\x18{0} से. पहले\x1fसमय क्षेत्र\x0d{0} समय {0} डेलाइट समय\x1a{0" + - "} मानक समय>समन्वित सार्वत्रिक समयDब्रिटिश ग्रीष्मकालीन समय&आइरिश मानक सम" + - "य.अफ़गानिस्तान समय/मध्य अफ़्रीका समय5पूर्वी अफ़्रीका समय5दक्षिण अफ़्री" + - "का समय5पश्चिम अफ़्रीका समयBपश्चिम अफ़्रीका मानक समयZपश्चिम अफ़्रीका ग्" + - "रीष्मकालीन समय\x1fअलास्का समय/अलास्\u200dका मानक समय5अलास्\u200dका डेल" + - "ाइट समय\x1cअमेज़न समय)अमेज़न मानक समयAअमेज़न ग्रीष्मकालीन समयKउत्तरी अ" + - "मेरिकी केंद्रीय समयXउत्तरी अमेरिकी केंद्रीय मानक समय^उत्तरी अमेरिकी के" + - "ंद्रीय डेलाइट समयEउत्तरी अमेरिकी पूर्वी समयRउत्तरी अमेरिकी पूर्वी मानक" + - " समयXउत्तरी अमेरिकी पूर्वी डेलाइट समयHउत्तरी अमेरिकी माउंटेन समयUउत्तरी " + - "अमेरिकी माउंटेन मानक समय[उत्तरी अमेरिकी माउंटेन डेलाइट समयHउत्तरी अमेर" + - "िकी प्रशांत समयUउत्तरी अमेरिकी प्रशांत मानक समय[उत्तरी अमेरिकी प्रशांत" + - " डेलाइट समय\x1fएनाडीयर समय,एनाडीयर मानक समयDएनाडीयर ग्रीष्मकालीन समय\x16" + - "एपिआ समय#एपिआ मानक समय)एपिआ डेलाइट समय\x13अरब समय अरब मानक समय&अरब डेल" + - "ाइट समय(अर्जेंटीना समय5अर्जेंटीना मानक समयMअर्जेंटीना ग्रीष्मकालीन समय" + - ">पश्चिमी अर्जेंटीना समयKपश्चिमी अर्जेंटीना मानक समयcपश्चिमी अर्जेंटीना ग" + - "्रीष्मकालीन समय%आर्मेनिया समय2आर्मेनिया मानक समयJआर्मेनिया ग्रीष्मकाली" + - "न समय\x22अटलांटिक समय/अटलांटिक मानक समय5अटलांटिक डेलाइट समय;मध्य ऑस्ट्" + - "रेलियाई समयWऑस्\u200dट्रेलियाई केंद्रीय मानक समय]ऑस्\u200dट्रेलियाई के" + - "ंद्रीय डेलाइट समय`ऑस्\u200dट्रेलियाई केंद्रीय पश्चिमी समयmऑस्\u200dट्र" + - "ेलियाई केंद्रीय पश्चिमी मानक समयsऑस्\u200dट्रेलियाई केंद्रीय पश्चिमी ड" + - "ेलाइट समय>पूर्वी ऑस्ट्रेलिया समयQऑस्\u200dट्रेलियाई पूर्वी मानक समयWऑस" + - "्\u200dट्रेलियाई पूर्वी डेलाइट समयAपश्चिमी ऑस्ट्रेलिया समयQऑस्ट्रेलिया" + - "ई पश्चिमी मानक समयWऑस्ट्रेलियाई पश्चिमी डेलाइट समय%अज़रबैजान समय2अज़रब" + - "ैजान मानक समयJअज़रबैजान ग्रीष्मकालीन समय\x1fअज़ोरेस समय,अज़ोरेस मानक स" + - "मयDअज़ोरेस ग्रीष्मकालीन समय(बांग्लादेश समय5बांग्लादेश मानक समयMबांग्ला" + - "देश ग्रीष्मकालीन समय\x19भूटान समय\x22बोलीविया समय(ब्राजीलिया समय5ब्राज" + - "ीलिया मानक समयMब्राजीलिया ग्रीष्मकालीन समय;ब्रूनेई दारूस्सलम समय केप व" + - "र्ड समय-केप वर्ड मानक समयEकेप वर्ड ग्रीष्मकालीन समय)चामोरो मानक समय" + - "\x16चैथम समय#चैथम मानक समय)चैथम डेलाइट समय\x16चिली समय#चिली मानक समय;चिल" + - "ी ग्रीष्मकालीन समय\x13चीन समय चीन मानक समय&चीन डेलाइट समय%कॉइबाल्सन सम" + - "य2कॉइबाल्सन मानक समयJकॉइबाल्सन ग्रीष्मकालीन समय/क्रिसमस द्वीप समय5कोको" + - "स द्वीपसमूह समय\x22कोलंबिया समय/कोलंबिया मानक समयGकोलंबिया ग्रीष्मकाली" + - "न समय/कुक द्वीपसमूह समय<कुक द्वीपसमूह मानक समयgकुक द्वीपसमूह अर्द्ध ग्" + - "रीष्मकालीन समय\x1cक्यूबा समय)क्यूबा मानक समय/क्यूबा डेलाइट समय\x19डेवि" + - "स समय5ड्यूमोंट डर्विल समय,पूर्वी तिमोर समय)ईस्टर द्वीप समय6ईस्टर द्वीप" + - " मानक समयNईस्टर द्वीप ग्रीष्मकालीन समय\x22इक्वाडोर समय,मध्य यूरोपीय समय9" + - "मध्य यूरोपीय मानक समयWमध्\u200dय यूरोपीय ग्रीष्\u200dमकालीन समय2पूर्वी" + - " यूरोपीय समय?पूर्वी यूरोपीय मानक समयWपूर्वी यूरोपीय ग्रीष्मकालीन समय?अग्" + - "र पूर्वी यूरोपीय समय5पश्चिमी यूरोपीय समयBपश्चिमी यूरोपीय मानक समय]पश्च" + - "िमी यूरोपीय ग्रीष्\u200dमकालीन समय>फ़ॉकलैंड द्वीपसमूह समयKफ़ॉकलैंड द्व" + - "ीपसमूह मानक समयcफ़ॉकलैंड द्वीपसमूह ग्रीष्मकालीन समय\x19फ़िजी समय&फ़िजी" + - " मानक समय>फ़िजी ग्रीष्मकालीन समय2फ़्रेंच गुयाना समय[दक्षिणी फ़्रांस और अ" + - "ंटार्कटिक समय,गैलापेगोस का समय\x1fगैंबियर समय\x22जॉर्जिया समय/जॉर्जिया" + - " मानक समयGजॉर्जिया ग्रीष्मकालीन समय>गिल्बर्ट द्वीपसमूह समय/ग्रीनविच मीन " + - "टाइम8पूर्वी ग्रीनलैंड समयEपूर्वी ग्रीनलैंड मानक समय]पूर्वी ग्रीनलैंड ग" + - "्रीष्मकालीन समय;पश्चिमी ग्रीनलैंड समयHपश्चिमी ग्रीनलैंड मानक समय`पश्चि" + - "मी ग्रीनलैंड ग्रीष्मकालीन समय&खाड़ी मानक समय\x1cगुयाना समय.हवाई–आल्यूश" + - "न समय;हवाई–आल्यूशन मानक समयAहवाई–आल्यूशन डेलाइट समय#हाँग काँग समय0हाँग" + - " काँग मानक समयHहाँग काँग ग्रीष्मकालीन समय\x19होव्ड समय&होव्ड मानक समय>हो" + - "व्ड ग्रीष्मकालीन समय)भारतीय मानक समय,हिंद महासागर समय%इंडोचाइना समय5मध" + - "्य इंडोनेशिया समय;पूर्वी इंडोनेशिया समय>पश्चिमी इंडोनेशिया समय\x16ईरान" + - " समय#ईरान मानक समय)ईरान डेलाइट समय(इर्कुत्स्क समय5इर्कुत्स्क मानक समयMइर" + - "्कुत्स्क ग्रीष्मकालीन समय\x1fइज़राइल समय,इज़राइल मानक समय2इज़राइल डेला" + - "इट समय\x19जापान समय&जापान मानक समय,जापान डेलाइट समयSपेट्रोपेवलास्क-कैम" + - "चात्सकी समय`पेट्रोपेवलास्क-कैमचात्सकी मानक समयxपेट्रोपेवलास्क-कैमचात्स" + - "की ग्रीष्मकालीन समय8पूर्व कज़ाखस्तान समय;पश्चिम कज़ाखस्तान समय\x1fकोरि" + - "याई समय,कोरियाई मानक समय2कोरियाई डेलाइट समय\x1cकोसराए समय7क्रास्नोयार्" + - "स्क समयDक्रास्नोयार्स्क मानक समय\\क्रास्नोयार्स्क ग्रीष्मकालीन समय.किर" + - "्गिस्\u200dतान समय2लाइन द्वीपसमूह समय&लॉर्ड होवे समय3लॉर्ड होवे मानक स" + - "मय9लॉर्ड होवे डेलाइट समय/मक्वारी द्वीप समय\x1fमागादान समय,मागादान मानक" + - " समयDमागादान ग्रीष्मकालीन समय\x1fमलेशिया समय\x1cमालदीव समय\x22मार्केसस स" + - "मय8मार्शल द्वीपसमूह समय\x1cमॉरीशस समय)मॉरीशस मानक समयAमॉरीशस ग्रीष्मका" + - "लीन समय\x1cमाव्सन समयHउत्तर पश्चिमी मेक्सिको समयUउत्तर पश्चिमी मेक्सिक" + - "ो मानक समय[उत्तर पश्चिमी मेक्सिको डेलाइट समय8मेक्सिकन प्रशांत समयEमेक्" + - "सिकन प्रशांत मानक समयKमेक्सिकन प्रशांत डेलाइट समय#उलान बटोर समय0उलान ब" + - "टोर मानक समयHउलान बटोर ग्रीष्मकालीन समय\x1cमॉस्को समय)मॉस्को मानक समयA" + - "मॉस्को ग्रीष्मकालीन समय\x22म्यांमार समय\x16नौरू समय\x19नेपाल समय5न्यू " + - "कैलेडोनिया समयBन्यू कैलेडोनिया मानक समयZन्यू कैलेडोनिया ग्रीष्मकालीन स" + - "मय+न्यूज़ीलैंड समय8न्यूज़ीलैंड मानक समय>न्यूज़ीलैंड डेलाइट समय4न्यूफ़ा" + - "उंडलैंड समयAन्यूफ़ाउंडलैंड मानक समयGन्यूफ़ाउंडलैंड डेलाइट समय\x16नीयू " + - "समय/नॉरफ़ॉक द्वीप समयKफ़र्नांर्डो डे नोरोन्हा समयXफ़र्नांर्डो डे नोरोन" + - "्हा मानक समयpफ़र्नांर्डो डे नोरोन्हा ग्रीष्मकालीन समय1नोवोसिबिर्स्क सम" + - "य>नोवोसिबिर्स्क मानक समयVनोवोसिबिर्स्क ग्रीष्मकालीन समय\x1cओम्स्क समय)" + - "ओम्स्क मानक समयAओम्स्क ग्रीष्मकालीन समय%पाकिस्तान समय2पाकिस्तान मानक स" + - "मयJपाकिस्तान ग्रीष्मकालीन समय\x16पलाउ समय3पापुआ न्यू गिनी समय\x22पैराग" + - "्वे समय/पैराग्वे मानक समयGपैराग्वे ग्रीष्मकालीन समय\x16पेरू समय#पेरू म" + - "ानक समय;पेरू ग्रीष्मकालीन समय\x22फ़िलिपीन समय/फ़िलिपीन मानक समयGफ़िलिप" + - "ीन ग्रीष्मकालीन समय>फ़ीनिक्स द्वीपसमूह समयCसेंट पियरे और मिकेलान समयPस" + - "ेंट पियरे और मिकेलान मानक समयVसेंट पियरे और मिकेलान डेलाइट समय\x22पिटक" + - "ैर्न समय\x1cपोनापे समय(प्योंगयांग समय\x22रीयूनियन समय\x1cरोथेरा समय" + - "\x1cसखालिन समय)सखालिन मानक समयAसखालिन ग्रीष्मकालीन समय\x19समारा समय&समार" + - "ा मानक समय>समारा ग्रीष्मकालीन समय\x16समोआ समय#समोआ मानक समय)समोआ डेलाइ" + - "ट समय\x1cसेशल्स समय\x22सिंगापुर समय8सोलोमन द्वीपसमूह समय8दक्षिणी जॉर्ज" + - "िया समय\x1fसूरीनाम समय\x1cस्योवा समय\x1cताहिती समय\x19ताइपे समय&ताइपे " + - "मानक समय,ताइपे डेलाइट समय+ताजिकिस्तान समय\x1fटोकेलाऊ समय\x19टोंगा समय&" + - "टोंगा मानक समय>टोंगा ग्रीष्मकालीन समय\x13चूक समय4तुर्कमेनिस्तान समयAतु" + - "र्कमेनिस्तान मानक समयYतुर्कमेनिस्तान ग्रीष्मकालीन समय\x1cतुवालू समय" + - "\x1fउरुग्वे समय,उरुग्वे मानक समयDउरुग्वे ग्रीष्मकालीन समय1उज़्बेकिस्तान " + - "समय>उज़्बेकिस्तान मानक समयVउज़्बेकिस्तान ग्रीष्मकालीन समय\x1cवनुआतू सम" + - "य)वनुआतू मानक समयAवनुआतू ग्रीष्मकालीन समय(वेनेज़ुएला समय1व्लादिवोस्तोक" + - " समय>व्लादिवोस्तोक मानक समयVव्लादिवोस्तोक ग्रीष्मकालीन समय+वोल्गोग्राड स" + - "मय8वोल्गोग्राड मानक समयPवोल्गोग्राड ग्रीष्मकालीन समय\x1fवोस्तोक समय#वे" + - "क द्वीप समय<वालिस और फ़्यूचूना समय%याकुत्स्क समय2याकुत्स्क मानक समयJया" + - "कुत्स्क ग्रीष्मकालीन समय1येकातेरिनबर्ग समय>येकातेरिनबर्ग मानक समयVयेका" + - "तेरिनबर्ग ग्रीष्मकालीन समय\x0a{0} (+१)\x0a{0} (+०)" - -var bucket46 string = "" + // Size: 14532 bytes - "\x0bE, d. M. y.\x08d. M. y.\x12EEEE, d. MMMM y. G\x0cd. MMMM y. G\x0bd. " + - "MMM y. G\x10dd. MM. y. GGGGG\x03sij\x04velj\x04ožu\x03tra\x03svi\x03lip" + - "\x03srp\x03kol\x03ruj\x03lis\x03stu\x03pro\x09siječnja\x08veljače\x07ožu" + - "jka\x07travnja\x07svibnja\x06lipnja\x06srpnja\x08kolovoza\x05rujna\x09li" + - "stopada\x09studenoga\x08prosinca\x09siječanj\x08veljača\x07ožujak\x07tra" + - "vanj\x07svibanj\x06lipanj\x06srpanj\x07kolovoz\x05rujan\x08listopad\x07s" + - "tudeni\x08prosinac\x031kv\x032kv\x033kv\x034kv\x061. kv.\x062. kv.\x063." + - " kv.\x064. kv.\x05noću\x0cprije Krista\x0eposlije Krista\x07pr. Kr.\x09p" + - "r. n. e.\x07po. Kr.\x05n. e.\x09d. MMM y.\x0add. MM. y.\x0ad. M. y. G" + - "\x0ed. M. y. GGGGG\x11Taika (645.-650.)\x13Hakuchi (650.-671.)\x13Hakuhō" + - " (672.-686.)\x13Shuchō (686.-701.)\x12Taihō (701.-704.)\x11Keiun (704.-7" + - "08.)\x11Wadō (708.-715.)\x11Reiki (715.-717.)\x12Yōrō (717.-724.)\x11Jin" + - "ki (724.-729.)\x13Tempyō (729.-749.)\x1aTempyō-kampō (749.-749.)\x1bTemp" + - "yō-shōhō (749.-757.)\x19Tempyō-hōji (757.-765.)\x19Temphō-jingo (765.-76" + - "7.)\x17Jingo-keiun (767.-770.)\x11Hōki (770.-780.)\x12Ten-ō (781.-782.)" + - "\x13Enryaku (782.-806.)\x12Daidō (806.-810.)\x12Kōnin (810.-824.)\x13Ten" + - "chō (824.-834.)\x11Jōwa (834.-848.)\x11Kajō (848.-851.)\x11Ninju (851.-8" + - "54.)\x11Saiko (854.-857.)\x12Tennan (857.-859.)\x12Jōgan (859.-877.)\x12" + - "Genkei (877.-885.)\x11Ninna (885.-889.)\x13Kampyō (889.-898.)\x13Shōtai " + - "(898.-901.)\x10Engi (901.-923.)\x12Enchō (923.-931.)\x13Shōhei (931.-938" + - ".)\x13Tengyō (938.-947.)\x14Tenryaku (947.-957.)\x13Tentoku (957.-961.)" + - "\x10Ōwa (961.-964.)\x12Kōhō (964.-968.)\x10Anna (968.-970.)\x13Tenroku (" + - "970.-973.)\x12Ten-en (973.-976.)\x12Jōgen (976.-978.)\x12Tengen (978.-98" + - "3.)\x11Eikan (983.-985.)\x11Kanna (985.-987.)\x11Ei-en (987.-989.)\x10Ei" + - "so (989.-990.)\x15Shōryaku (990.-995.)\x14Chōtoku (995.-999.)\x14Chōhō (" + - "999.-1004.)\x14Kankō (1004.-1012.)\x14Chōwa (1012.-1017.)\x14Kannin (101" + - "7.-1021.)\x12Jian (1021.-1024.)\x13Manju (1024.-1028.)\x15Chōgen (1028.-" + - "1037.)\x17Chōryaku (1037.-1040.)\x16Chōkyū (1040.-1044.)\x15Kantoku (104" + - "4.-1046.)\x14Eishō (1046.-1053.)\x13Tengi (1053.-1058.)\x14Kōhei (1058.-" + - "1065.)\x15Jiryaku (1065.-1069.)\x14Enkyū (1069.-1074.)\x14Shōho (1074.-1" + - "077.)\x17Shōryaku (1077.-1081.)\x12Eiho (1081.-1084.)\x14Ōtoku (1084.-10" + - "87.)\x13Kanji (1087.-1094.)\x12Kaho (1094.-1096.)\x14Eichō (1096.-1097.)" + - "\x16Shōtoku (1097.-1099.)\x13Kōwa (1099.-1104.)\x14Chōji (1104.-1106.)" + - "\x14Kashō (1106.-1108.)\x14Tennin (1108.-1110.)\x14Ten-ei (1110.-1113.)" + - "\x14Eikyū (1113.-1118.)\x14Gen-ei (1118.-1120.)\x12Hoan (1120.-1124.)" + - "\x13Tenji (1124.-1126.)\x13Daiji (1126.-1131.)\x15Tenshō (1131.-1132.)" + - "\x16Chōshō (1132.-1135.)\x12Hoen (1135.-1141.)\x12Eiji (1141.-1142.)\x13" + - "Kōji (1142.-1144.)\x14Tenyō (1144.-1145.)\x14Kyūan (1145.-1151.)\x14Ninp" + - "ei (1151.-1154.)\x14Kyūju (1154.-1156.)\x13Hogen (1156.-1159.)\x13Heiji " + - "(1159.-1160.)\x15Eiryaku (1160.-1161.)\x12Ōho (1161.-1163.)\x15Chōkan (1" + - "163.-1165.)\x13Eiman (1165.-1166.)\x14Nin-an (1166.-1169.)\x12Kaō (1169." + - "-1171.)\x14Shōan (1171.-1175.)\x13Angen (1175.-1177.)\x14Jishō (1177.-11" + - "81.)\x13Yōwa (1181.-1182.)\x12Juei (1182.-1184.)\x16Genryuku (1184.-1185" + - ".)\x13Bunji (1185.-1190.)\x15Kenkyū (1190.-1199.)\x14Shōji (1199.-1201.)" + - "\x14Kennin (1201.-1204.)\x15Genkyū (1204.-1206.)\x14Ken-ei (1206.-1207.)" + - "\x15Shōgen (1207.-1211.)\x16Kenryaku (1211.-1213.)\x14Kenpō (1213.-1219." + - ")\x16Shōkyū (1219.-1222.)\x13Jōō (1222.-1224.)\x14Gennin (1224.-1225.)" + - "\x14Karoku (1225.-1227.)\x13Antei (1227.-1229.)\x13Kanki (1229.-1232.)" + - "\x13Jōei (1232.-1233.)\x15Tempuku (1233.-1234.)\x16Bunryaku (1234.-1235." + - ")\x13Katei (1235.-1238.)\x16Ryakunin (1238.-1239.)\x13En-ō (1239.-1240.)" + - "\x13Ninji (1240.-1243.)\x14Kangen (1243.-1247.)\x13Hōji (1247.-1249.)" + - "\x15Kenchō (1249.-1256.)\x14Kōgen (1256.-1257.)\x14Shōka (1257.-1259.)" + - "\x15Shōgen (1259.-1260.)\x14Bun-ō (1260.-1261.)\x15Kōchō (1261.-1264.)" + - "\x14Bun-ei (1264.-1275.)\x13Kenji (1275.-1278.)\x13Kōan (1278.-1288.)" + - "\x14Shōō (1288.-1293.)\x13Einin (1293.-1299.)\x14Shōan (1299.-1302.)\x14" + - "Kengen (1302.-1303.)\x13Kagen (1303.-1306.)\x14Tokuji (1306.-1308.)\x13E" + - "nkei (1308.-1311.)\x14Ōchō (1311.-1312.)\x14Shōwa (1312.-1317.)\x14Bunpō" + - " (1317.-1319.)\x13Genō (1319.-1321.)\x15Genkyō (1321.-1324.)\x16Shōchū (" + - "1324.-1326.)\x14Kareki (1326.-1329.)\x15Gentoku (1329.-1331.)\x14Genkō (" + - "1331.-1334.)\x13Kemmu (1334.-1336.)\x13Engen (1336.-1340.)\x15Kōkoku (13" + - "40.-1346.)\x15Shōhei (1346.-1370.)\x15Kentoku (1370.-1372.)\x15Bunchū (1" + - "372.-1375.)\x13Tenju (1375.-1379.)\x16Kōryaku (1379.-1381.)\x13Kōwa (138" + - "1.-1384.)\x15Genchū (1384.-1392.)\x15Meitoku (1384.-1387.)\x13Kakei (138" + - "7.-1389.)\x13Kōō (1389.-1390.)\x15Meitoku (1390.-1394.)\x12Ōei (1394.-14" + - "28.)\x16Shōchō (1428.-1429.)\x14Eikyō (1429.-1441.)\x15Kakitsu (1441.-14" + - "44.)\x14Bun-an (1444.-1449.)\x15Hōtoku (1449.-1452.)\x16Kyōtoku (1452.-1" + - "455.)\x15Kōshō (1455.-1457.)\x16Chōroku (1457.-1460.)\x15Kanshō (1460.-1" + - "466.)\x15Bunshō (1466.-1467.)\x13Ōnin (1467.-1469.)\x14Bunmei (1469.-148" + - "7.)\x16Chōkyō (1487.-1489.)\x14Entoku (1489.-1492.)\x13Meiō (1492.-1501." + - ")\x13Bunki (1501.-1504.)\x14Eishō (1504.-1521.)\x13Taiei (1521.-1528.)" + - "\x16Kyōroku (1528.-1532.)\x14Tenmon (1532.-1555.)\x13Kōji (1555.-1558.)" + - "\x14Eiroku (1558.-1570.)\x13Genki (1570.-1573.)\x15Tenshō (1573.-1592.)" + - "\x15Bunroku (1592.-1596.)\x15Keichō (1596.-1615.)\x13Genwa (1615.-1624.)" + - "\x14Kan-ei (1624.-1644.)\x14Shōho (1644.-1648.)\x13Keian (1648.-1652.)" + - "\x14Shōō (1652.-1655.)\x16Meiryaku (1655.-1658.)\x13Manji (1658.-1661.)" + - "\x14Kanbun (1661.-1673.)\x13Enpō (1673.-1681.)\x13Tenwa (1681.-1684.)" + - "\x15Jōkyō (1684.-1688.)\x15Genroku (1688.-1704.)\x13Hōei (1704.-1711.)" + - "\x16Shōtoku (1711.-1716.)\x15Kyōhō (1716.-1736.)\x14Genbun (1736.-1741.)" + - "\x14Kanpō (1741.-1744.)\x14Enkyō (1744.-1748.)\x14Kan-en (1748.-1751.)" + - "\x16Hōryaku (1751.-1764.)\x13Meiwa (1764.-1772.)\x13An-ei (1772.-1781.)" + - "\x14Tenmei (1781.-1789.)\x14Kansei (1789.-1801.)\x14Kyōwa (1801.-1804.)" + - "\x13Bunka (1804.-1818.)\x14Bunsei (1818.-1830.)\x14Tenpō (1830.-1844.)" + - "\x13Kōka (1844.-1848.)\x12Kaei (1848.-1854.)\x13Ansei (1854.-1860.)\x14M" + - "an-en (1860.-1861.)\x15Bunkyū (1861.-1864.)\x13Genji (1864.-1865.)\x13Ke" + - "iō (1865.-1868.)\x05Meiji\x07Taishō\x06Shōwa\x06Heisei\x0cprošle god." + - "\x08ove god.\x0esljedeće god.\x0aprošle g.\x06ove g.\x0csljedeće g.\x07+" + - "{0} g.\x07-{0} g.\x0fprošli kvartal\x0covaj kvartal\x11sljedeći kvartal" + - "\x0bprošli kv.\x08ovaj kv.\x0dsljedeći kv.\x08+{0} kv.\x0bprošli mj.\x08" + - "ovaj mj.\x0dsljedeći mj.\x08+{0} mj.\x08-{0} mj.\x06tjedan\x0eprošli tje" + - "dan\x0bovaj tjedan\x10sljedeći tjedan\x0dza {0} tjedan\x0dza {0} tjedna" + - "\x0eza {0} tjedana\x10prije {0} tjedan\x10prije {0} tjedna\x11prije {0} " + - "tjedana\x0dtjedan od {0}\x03tj.\x0bprošli tj.\x08ovaj tj.\x0dsljedeći tj" + - ".\x0aza {0} tj.\x0dprije {0} tj.\x08+{0} tj.\x08-{0} tj.\x08za {0} d\x0b" + - "prije {0} d\x0cdan u tjednu\x0bprije {0} h\x0dprije {0} min\x03sad\x0bpr" + - "ije {0} s\x1dKoordinirano svjetsko vrijeme\x18britansko ljetno vrijeme" + - "\x18irsko standardno vrijeme\x0cAcre vrijeme\x17Acre standardno vrijeme" + - "\x13Acre ljetno vrijeme\x15afganistansko vrijeme\x17srednjoafričko vrije" + - "me\x18istočnoafričko vrijeme\x16južnoafričko vrijeme\x17zapadnoafričko v" + - "rijeme\x22zapadnoafričko standardno vrijeme\x1ezapadnoafričko ljetno vri" + - "jeme\x10aljaško vrijeme\x1baljaško standardno vrijeme\x17aljaško ljetno " + - "vrijeme\x11altmajsko vrijeme\x1caltmajsko standardno vrijeme\x18altmajsk" + - "o ljetno vrijeme\x11amazonsko vrijeme\x1camazonsko standardno vrijeme" + - "\x18amazonsko ljetno vrijeme\x12središnje vrijeme\x1dsredišnje standardn" + - "o vrijeme\x19središnje ljetno vrijeme\x10istočno vrijeme\x1bistočno stan" + - "dardno vrijeme\x17istočno ljetno vrijeme\x11planinsko vrijeme\x1cplanins" + - "ko standardno vrijeme\x18planinsko ljetno vrijeme\x12pacifičko vrijeme" + - "\x1dpacifičko standardno vrijeme\x19pacifičko ljetno vrijeme\x11anadirsk" + - "o vrijeme\x1canadirsko standardno vrijeme\x18anadirsko ljetno vrijeme" + - "\x0dvrijeme Apije\x18standardno vrijeme Apije\x14ljetno vrijeme Apije" + - "\x13vrijeme grada Aktau\x1estandardno vrijeme grada Aktau\x1aljetno vrij" + - "eme grada Aktau\x14vrijeme grada Aktobe\x1fstandardno vrijeme grada Akto" + - "be\x1bljetno vrijeme grada Aktobe\x0farapsko vrijeme\x1aarapsko standard" + - "no vrijeme\x16arapsko ljetno vrijeme\x13argentinsko vrijeme\x1eargentins" + - "ko standardno vrijeme\x1aargentinsko ljetno vrijeme\x1bzapadno-argentins" + - "ko vrijeme&zapadno-argentinsko standardno vrijeme\x22zapadno-argentinsko" + - " ljetno vrijeme\x10armensko vrijeme\x1barmensko standardno vrijeme\x17ar" + - "mensko ljetno vrijeme\x11atlantsko vrijeme\x1catlantsko standardno vrije" + - "me\x18atlantsko ljetno vrijeme\x19srednjoaustralsko vrijeme$srednjoaustr" + - "alsko standardno vrijeme srednjoaustralsko ljetno vrijeme%australsko sre" + - "dišnje zapadno vrijeme0australsko središnje zapadno standardno vrijeme,a" + - "ustralsko središnje zapadno ljetno vrijeme\x1aistočnoaustralsko vrijeme%" + - "istočnoaustralsko standardno vrijeme!istočnoaustralsko ljetno vrijeme" + - "\x19zapadnoaustralsko vrijeme$zapadnoaustralsko standardno vrijeme zapad" + - "noaustralsko ljetno vrijeme\x17azerbajdžansko vrijeme\x22azerbajdžansko " + - "standardno vrijeme\x1eazerbajdžansko ljetno vrijeme\x0fazorsko vrijeme" + - "\x1aazorsko standardno vrijeme\x16azorsko ljetno vrijeme\x14bangladeško " + - "vrijeme\x1fbangladeško standardno vrijeme\x1bbangladeško ljetno vrijeme" + - "\x10butansko vrijeme\x12bolivijsko vrijeme\x13brazilijsko vrijeme\x1ebra" + - "zilijsko standardno vrijeme\x1abrazilijsko ljetno vrijeme\x1cvrijeme za " + - "Brunej Darussalam\x1cvrijeme Zelenortskog otočja'standardno vrijeme Zele" + - "nortskog otočja#ljetno vrijeme Zelenortskog otočja\x0fvrijeme Caseyja" + - "\x1bstandardno vrijeme Chamorra\x10vrijeme Chathama\x1bstandardno vrijem" + - "e Chathama\x17ljetno vrijeme Chathama\x12čileansko vrijeme\x1dčileansko " + - "standardno vrijeme\x19čileansko ljetno vrijeme\x0fkinesko vrijeme\x1akin" + - "esko standardno vrijeme\x16kinesko ljetno vrijeme\x15choibalsansko vrije" + - "me choibalsansko standardno vrijeme\x1cchoibalsansko ljetno vrijeme\x18v" + - "rijeme Božićnog otoka\x17vrijeme Kokosovih Otoka\x13kolumbijsko vrijeme" + - "\x1ekolumbijsko standardno vrijeme\x1akolumbijsko ljetno vrijeme\x16vrij" + - "eme Cookovih Otoka!standardno vrijeme Cookovih Otoka0Cookovo otočje, pol" + - "usatni pomak, ljetno vrijeme\x10kubansko vrijeme\x1bkubansko standardno " + - "vrijeme\x17kubansko ljetno vrijeme\x0evrijeme Davisa\x1bvrijeme Dumont-d" + - "’Urvillea\x18istočnotimorsko vrijeme\x18vrijeme Uskršnjeg otoka#standa" + - "rdno vrijeme Uskršnjeg otoka\x1fljetno vrijeme Uskršnjeg otoka\x12ekvado" + - "rsko vrijeme\x17srednjoeuropsko vrijeme\x22srednjoeuropsko standardno vr" + - "ijeme\x1esrednjoeuropsko ljetno vrijeme\x18istočnoeuropsko vrijeme#istoč" + - "noeuropsko standardno vrijeme\x1fistočnoeuropsko ljetno vrijeme\x1fdalek" + - "oistočno europsko vrijeme\x17zapadnoeuropsko vrijeme\x22zapadnoeuropsko " + - "standardno vrijeme\x1ezapadnoeuropsko ljetno vrijeme\x13falklandsko vrij" + - "eme\x1efalklandsko standardno vrijeme\x1afalklandsko ljetno vrijeme\x10v" + - "rijeme Fidžija\x1bstandardno vrijeme Fidžija\x17ljetno vrijeme Fidžija" + - "\x19vrijeme Francuske Gvajane&južnofrancusko i antarktičko vrijeme\x12vr" + - "ijeme Galapagosa\x10vrijeme Gambiera\x11gruzijsko vrijeme\x1cgruzijsko s" + - "tandardno vrijeme\x18gruzijsko ljetno vrijeme\x19vrijeme Gilbertovih Oto" + - "ka\x13univerzalno vrijeme\x1bistočnogrenlandsko vrijeme&istočnogrenlands" + - "ko standardno vrijeme\x22istočnogrenlandsko ljetno vrijeme\x1azapadnogre" + - "nlandsko vrijeme%zapadnogrenlandsko standardno vrijeme!zapadnogrenlandsk" + - "o ljetno vrijeme\x1aguamsko standardno vrijeme\x1czaljevsko standardno v" + - "rijeme\x11gvajansko vrijeme\x19havajsko-aleutsko vrijeme$havajsko-aleuts" + - "ko standardno vrijeme havajsko-aleutsko ljetno vrijeme\x13hongkonško vri" + - "jeme\x1ehongkonško standardno vrijeme\x1ahongkonško ljetno vrijeme\x0fho" + - "vdsko vrijeme\x1ahovdsko standardno vrijeme\x16hovdsko ljetno vrijeme" + - "\x10indijsko vrijeme\x18vrijeme Indijskog oceana\x13indokinesko vrijeme" + - "\x1bsrednjoindonezijsko vrijeme\x1cistočnoindonezijsko vrijeme\x1bzapadn" + - "oindonezijsko vrijeme\x0firansko vrijeme\x1airansko standardno vrijeme" + - "\x16iransko ljetno vrijeme\x10irkutsko vrijeme\x1birkutsko standardno vr" + - "ijeme\x17irkutsko ljetno vrijeme\x11izraelsko vrijeme\x1cizraelsko stand" + - "ardno vrijeme\x18izraelsko ljetno vrijeme\x10japansko vrijeme\x1bjapansk" + - "o standardno vrijeme\x17japansko ljetno vrijeme Petropavlovsk-kamčatsko " + - "vrijeme+Petropavlovsk-kamčatsko standardno vrijeme'Petropavlovsk-kamčats" + - "ko ljetno vrijeme\x1cistočnokazahstansko vrijeme\x1bzapadnokazahstansko " + - "vrijeme\x10korejsko vrijeme\x1bkorejsko standardno vrijeme\x17korejsko l" + - "jetno vrijeme\x0evrijeme Kosrae\x14krasnojarsko vrijeme\x1fkrasnojarsko " + - "standardno vrijeme\x1bkrasnojarsko ljetno vrijeme\x14kirgistansko vrijem" + - "e\x11lankansko vrijeme\x12vrijeme Otoka Line\x17vrijeme otoka Lord Howe" + - "\x22standardno vrijeme otoka Lord Howe\x1eljetno vrijeme otoka Lord Howe" + - "\x10makaosko vrijeme\x1bstandardno makaosko vrijeme\x17ljetno makaosko v" + - "rijeme\x17vrijeme otoka Macquarie\x12magadansko vrijeme\x1dmagadansko st" + - "andardno vrijeme\x19magadansko ljetno vrijeme\x12malezijsko vrijeme\x11m" + - "aldivsko vrijeme\x14markižansko vrijeme\x19vrijeme Maršalovih Otoka\x13v" + - "rijeme Mauricijusa\x1estandardno vrijeme Mauricijusa\x1aljetno vrijeme M" + - "auricijusa\x11mawsonsko vrijeme sjeverozapadno meksičko vrijeme+sjeveroz" + - "apadno meksičko standardno vrijeme'sjeverozapadno meksičko ljetno vrijem" + - "e\x1cmeksičko pacifičko vrijeme'meksičko pacifičko standardno vrijeme#me" + - "ksičko pacifičko ljetno vrijeme\x15ulan-batorsko vrijeme ulan-batorsko s" + - "tandardno vrijeme\x1culan-batorsko ljetno vrijeme\x11moskovsko vrijeme" + - "\x1cmoskovsko standardno vrijeme\x18moskovsko ljetno vrijeme\x12mianmars" + - "ko vrijeme\x0evrijeme Naurua\x10nepalsko vrijeme\x17vrijeme Nove Kaledon" + - "ije\x22standardno vrijeme Nove Kaledonije\x1eljetno vrijeme Nove Kaledon" + - "ije\x15novozelandsko vrijeme novozelandsko standardno vrijeme\x1cnovozel" + - "andsko ljetno vrijeme\x17newfoundlandsko vrijeme\x22newfoundlandsko stan" + - "dardno vrijeme\x1enewfoundlandsko ljetno vrijeme\x0dvrijeme Niuea\x15vri" + - "jeme Otoka Norfolk!vrijeme grada Fernando de Noronha,standardno vrijeme " + - "grada Fernando de Noronha(ljetno vrijeme grada Fernando de Noronha!vrije" + - "me Sjevernomarijanskih Otoka\x14novosibirsko vrijeme\x1fnovosibirsko sta" + - "ndardno vrijeme\x1bnovosibirsko ljetno vrijeme\x0domsko vrijeme\x18omsko" + - " standardno vrijeme\x14omsko ljetno vrijeme\x13pakistansko vrijeme\x1epa" + - "kistansko standardno vrijeme\x1apakistansko ljetno vrijeme\x0evrijeme Pa" + - "laua\x1avrijeme Papue Nove Gvineje\x13paragvajsko vrijeme\x1eparagvajsko" + - " standardno vrijeme\x1aparagvajsko ljetno vrijeme\x11peruansko vrijeme" + - "\x1cperuansko standardno vrijeme\x18peruansko ljetno vrijeme\x12filipins" + - "ko vrijeme\x1dfilipinsko standardno vrijeme\x19filipinsko ljetno vrijeme" + - "\x15vrijeme Otoka Phoenix vrijeme za Sveti Petar i Mikelon+standardno vr" + - "ijeme za Sveti Petar i Mikelon'ljetno vrijeme za Sveti Petar i Mikelon" + - "\x11vrijeme Pitcairna\x0fvrijeme Ponapea\x14pjongjanško vrijeme\x17vrije" + - "me grada Kizilorde\x22standardno vrijeme grada Kizilorde\x1eljetno vrije" + - "me grada Kizilorde\x10vrijeme Reuniona\x0fvrijeme Rothere\x12sahalinsko " + - "vrijeme\x1dsahalinsko standardno vrijeme\x19sahalinsko ljetno vrijeme" + - "\x10samarsko vrijeme\x1bsamarsko standardno vrijeme\x17samarsko ljetno v" + - "rijeme\x11samoansko vrijeme\x1csamoansko standardno vrijeme\x18samoansko" + - " ljetno vrijeme\x12sejšelsko vrijeme\x13singapursko vrijeme\x19vrijeme S" + - "alomonskih Otoka\x17vrijeme Južne Georgije\x12surinamsko vrijeme\x0dvrij" + - "eme Syowe\x10vrijeme Tahitija\x11tajpeško vrijeme\x1ctajpeško standardno" + - " vrijeme\x18tajpeško ljetno vrijeme\x17tadžikistansko vrijeme\x10vrijeme" + - " Tokelaua\x0dvrijeme Tonge\x18standardno vrijeme Tonge\x14ljetno vrijeme" + - " Tonge\x0evrijeme Chuuka\x17turkmenistansko vrijeme\x22turkmenistansko s" + - "tandardno vrijeme\x1eturkmenistansko ljetno vrijeme\x0fvrijeme Tuvalua" + - "\x12urugvajsko vrijeme\x1durugvajsko standardno vrijeme\x19urugvajsko lj" + - "etno vrijeme\x15uzbekistansko vrijeme uzbekistansko standardno vrijeme" + - "\x1cuzbekistansko ljetno vrijeme\x10vrijeme Vanuatua\x1bstandardno vrije" + - "me Vanuatua\x17ljetno vrijeme Vanuatua\x13venezuelsko vrijeme\x16vladivo" + - "stočko vrijeme!vladivostočko standardno vrijeme\x1dvladivostočko ljetno " + - "vrijeme\x14volgogradsko vrijeme\x1fvolgogradsko standardno vrijeme\x1bvo" + - "lgogradsko ljetno vrijeme\x11vostočko vrijeme\x12vrijeme Otoka Wake\x1dv" + - "rijeme Otoka Wallis i Futuna\x10jakutsko vrijeme\x1bjakutsko standardno " + - "vrijeme\x17jakutsko ljetno vrijeme\x17ekaterinburško vrijeme\x22ekaterin" + - "burško standardno vrijeme\x1eekaterinburško ljetno vrijeme\x06po Kr.\x06" + - "po Kr." - -var bucket47 string = "" + // Size: 9289 bytes - "\x09d. M. yy.\x09njedźela\x0apóndźela\x06wutora\x06srjeda\x09štwórtk\x05" + - "pjatk\x06sobota\x0apopołdnju\x04pop.\x1dpřed Chrystowym narodźenjom\x1cp" + - "řed našim ličenjom časa\x19po Chrystowym narodźenju\x16našeho ličenja č" + - "asa\x0apř.Chr.n.\x0bpř.n.l.č.\x09po Chr.n.\x07n.l.č.\x0dH:mm 'hodź'.\x04" + - "doba\x04loni\x06lětsa\x06klětu\x10před {0} lětom\x12před {0} lětomaj\x11" + - "před {0} lětami\x13před {0} kwartalom\x15před {0} kwartalomaj\x14před {0" + - "} kwartalemi\x10před {0} kwart.\x0dpřed {0} kw.\x06měsac\x0ezašły měsac" + - "\x0dtutón měsac\x11přichodny měsac\x0dza {0} měsac\x0fza {0} měsacaj\x0e" + - "za {0} měsacy\x0fza {0} měsacow\x12před {0} měsacom\x14před {0} měsacoma" + - "j\x13před {0} měsacami\x08tydźeń\x10zašły tydźeń\x0ftutón tydźeń\x13přic" + - "hodny tydźeń\x0fza {0} tydźeń\x11za {0} tydźenjej\x10za {0} tydźenje\x11" + - "za {0} tydźenjow\x14před {0} tydźenjom\x16před {0} tydźenjomaj\x15před {" + - "0} tydźenjemi\x06tydź.\x0dza {0} tydź.\x10před {0} tydź.\x06dźeń\x06wčer" + - "a\x07dźensa\x06jutře\x0dza {0} dźeń\x0cza {0} dnjej\x0aza {0} dny\x0cza " + - "{0} dnjow\x0fpřed {0} dnjom\x11před {0} dnjomaj\x10před {0} dnjemi\x0bza" + - " {0} dnj.\x0epřed {0} dnj.\x0bpřed {0} d\x10dźeń tydźenja\x11zašłu njedź" + - "elu\x0etutu njedźelu\x14přichodnu njedźelu\x0czašłu nje.\x09tutu nje." + - "\x0fpřichodnu nje.\x0bzašłu nj.\x08tutu nj.\x0epřichodnu nj.\x12zašłu pó" + - "ndźelu\x0ftutu póndźelu\x15přichodnu póndźelu\x0dzašłu pón.\x0atutu pón." + - "\x10přichodnu pón.\x0czašłu pó.\x09tutu pó.\x0fpřichodnu pó.\x0ezašłu wu" + - "toru\x0btutu wutoru\x11přichodnu wutoru\x0czašłu wut.\x09tutu wut.\x0fpř" + - "ichodnu wut.\x0bzašłu wu.\x08tutu wu.\x0epřichodnu wu.\x0ezašłu srjedu" + - "\x0btutu srjedu\x11přichodnu srjedu\x0czašłu srj.\x09tutu srj.\x0fpřicho" + - "dnu srj.\x0bzašłu sr.\x08tutu sr.\x0epřichodnu sr.\x11zašły štwórtk\x10t" + - "utón štwórtk\x14přichodny štwórtk\x0dzašły štw.\x0ctutón štw.\x10přichod" + - "ny štw.\x0czašły št.\x0btutón št.\x0fpřichodny št.\x0dzašły pjatk\x0ctut" + - "ón pjatk\x10přichodny pjatk\x0czašły pja.\x0btutón pja.\x0fpřichodny pj" + - "a.\x0bzašły pj.\x0atutón pj.\x0epřichodny pj.\x0ezašłu sobotu\x0btutu so" + - "botu\x11přichodnu sobotu\x0czašłu sob.\x09tutu sob.\x0fpřichodnu sob." + - "\x0bzašłu so.\x08tutu so.\x0epřichodnu so.\x08hodźina\x0fza {0} hodźinu" + - "\x10za {0} hodźinje\x0fza {0} hodźiny\x0eza {0} hodźin\x12před {0} hodźi" + - "nu\x15před {0} hodźinomaj\x14před {0} hodźinami\x06hodź.\x0dza {0} hodź." + - "\x10před {0} hodź.\x10před {0} minutu\x13před {0} minutomaj\x12před {0} " + - "minutami\x0epřed {0} min.\x0bpřed {0} m\x11před {0} sekundu\x14před {0} " + - "sekundomaj\x13před {0} sekundami\x0epřed {0} sek.\x0dčasowe pasmo\x11čas" + - "owe pasmo {0}\x0f{0} lětni čas\x0f{0} zymski čas\x14Britiski lětni čas" + - "\x11Irski lětni čas\x0eafghanski čas\x15centralnoafriski čas\x13wuchodoa" + - "friski čas\x12južnoafriski čas\x12zapadoafriski čas\x1dzapadoafriski sta" + - "ndardny čas\x19zapadoafriski lětni čas\x0ealaskaski čas\x19alaskaski sta" + - "ndardny čas\x15alaskaski lětni čas\x0fAmaconaski čas\x1aAmaconaski stand" + - "ardny čas\x16Amaconaski lětni čas\x1esewjeroameriski centralny čas)sewje" + - "roameriski centralny standardny čas%sewjeroameriski centralny lětni čas" + - "\x1dsewjeroameriski wuchodny čas(sewjeroameriski wuchodny standardny čas" + - "$sewjeroameriski wuchodny lětni čas\x1csewjeroameriski hórski čas'sewjer" + - "oameriski hórski standardny čas#sewjeroameriski hórski lětni čas\x1esewj" + - "eroameriski pacifiski čas)sewjeroameriski pacifiski standardny čas%sewje" + - "roameriski pacifiski lětni čas\x0cApiaski čas\x17Apiaski standardny čas" + - "\x13Apiaski lětni čas\x0carabski čas\x17arabski standardny čas\x13arabsk" + - "i lětni čas\x10argentinski čas\x1bargentinski standardny čas\x17argentin" + - "ski lětni čas\x16zapadoargentinski čas!zapadoargentinski standardny čas" + - "\x1dzapadoargentinski lětni čas\x0darmenski čas\x18armenski standardny č" + - "as\x14armenski lětni čas\x0fatlantiski čas\x1aatlantiski standardny čas" + - "\x16atlantiski lětni čas\x17srjedźoawstralski čas\x22srjedźoawstralski s" + - "tandardny čas\x1esrjedźoawstralski lětni čas\x1fsrjedźozapadny awstralsk" + - "i čas*srjedźozapadny awstralski standardny čas%sjedźozapadny awstralski " + - "lětni čas\x16wuchodoawstralski čas!wuchodoawstralski standardny čas\x1dw" + - "uchodoawstralski lětni čas\x15zapadoawstralski čas zapadoawstralski stan" + - "dardny čas\x1czapadoawstralski lětni čas\x14azerbajdźanski čas\x1fazerba" + - "jdźanski standardny čas\x1bazerbajdźanski lětni čas\x0cacorski čas\x17ac" + - "orski standardny čas\x13acorski lětni čas\x12bangladešski čas\x1dbanglad" + - "ešski standardny čas\x19bangladešski lětni čas\x0ebhutanski čas\x0eboliw" + - "iski čas\x0fBrasiliski čas\x1aBrasiliski standardny čas\x16Brasiliski lě" + - "tni čas\x0ebruneiski čas\x0fkapverdski čas\x1akapverdski standardny čas" + - "\x16kapverdski lětni čas\x10chamorroski čas\x0fchathamski čas\x1achatham" + - "ski standardny čas\x16chathamski lětni čas\x0cchilski čas\x17chilski sta" + - "ndardny čas\x13chilski lětni čas\x0cchinski čas\x17chinski standardny ča" + - "s\x13chinski lětni čas\x12Čojbalsanski čas\x1dČojbalsanski standardny ča" + - "s\x19Čojbalsanski lětni čas\x13čas Hodowneje kupy\x15čas Kokosowych kupo" + - "w\x0fkolumbiski čas\x1akolumbiski standardny čas\x16kolumbiski lětni čas" + - "\x14čas Cookowych kupow\x1fstandardny čas Cookowych kupow\x1blětni čas C" + - "ookowych kupow\x0ckubaski čas\x17kubaski standardny čas\x13kubaski lětni" + - " čas\x0cDaviski čas\x1aDumont d´ Urvilleski čas\x15wuchodnotimorski čas" + - "\x14čas Jutrowneje kupy\x1fstandardny čas Jutrowneje kupy\x1blětni čas J" + - "utrowneje kupy\x0fekwadorski čas\x15srjedźoeuropski čas srjedźoeuropski " + - "standardny čas\x1csrjedźoeuropski lětni čas\x14wuchodoeuropski čas\x1fwu" + - "chodoeuropski standardny čas\x1bwuchodoeuropski lětni čas\x13Kaliningrad" + - "ski čas\x13zapadoeuropski čas\x1ezapadoeuropski standardny čas\x1azapado" + - "europski lětni čas\x10falklandski čas\x1bfalklandski standardny čas\x17f" + - "alklandski lětni čas\x0efidźiski čas\x19fidźiski standardny čas\x15fidźi" + - "ski lětni čas\x16francoskoguyanski čas4čas Francoskeho južneho a antarkt" + - "iskeho teritorija\x10galapagoski čas\x0fgambierski čas\x0egeorgiski čas" + - "\x19georgiski standardny čas\x15georgiski lětni čas\x17čas Gilbertowych " + - "kupow\x11Greenwichski čas\x18wuchodogrönlandski čas#wuchodogrönlandski s" + - "tandardny čas\x1fwuchodogrönlandski lětni čas\x17zapadogrönlandski čas" + - "\x22zapadogrönlandski standardny čas\x1ezapadogrönlandski lětni čas\x15č" + - "as Persiskeho golfa\x0dguyanski čas\x17hawaiisko-aleutski čas\x22hawaiis" + - "ko-aleutski standardny čas\x1ehawaiisko-aleutski lětni čas\x10Hongkongsk" + - "i čas\x1bHongkongski standardny čas\x17Hongkongski lětni čas\x0dChowdski" + - " čas\x18Chowdski standardny čas\x14Chowdski lětni čas\x0cindiski čas\x14" + - "indiskooceanski čas\x10indochinski čas\x16srjedźoindoneski čas\x10wuchod" + - "oindoneski\x14zapadoindoneski čas\x0ciranski čas\x17iranski standardny č" + - "as\x13iranski lětni čas\x0dIrkutski čas\x18Irkutski standardny čas\x14Ir" + - "kutski lětni čas\x0eisraelski čas\x19israelski standardny čas\x15israels" + - "ki lětni čas\x0djapanski čas\x18japanski standardny čas\x14japanski lětn" + - "i čas\x16wuchodnokazachski čas\x15zapadnokazachski čas\x0dkorejski čas" + - "\x18korejski standardny čas\x14korejski lětni čas\x0ekosraeski čas\x11Kr" + - "asnojarski čas\x1cKrasnojarski standardny čas\x18Krasnojarski lětni čas" + - "\x0dkirgiski čas\x15čas Linijowych kupow\x13čas kupy Lord-Howe\x1estanda" + - "rdny čas kupy Lord-Howe\x1alětni čas kupy Lord-Howe\x13čas kupy Macquari" + - "e\x0fMagadanski čas\x1aMagadanski standardny čas\x16Magadanski lětni čas" + - "\x0fmalajziski čas\x0fmalediwski čas\x10marquesaski čas\x18čas Marshallo" + - "wych kupow\x10mauritiuski čas\x1bmauritiuski standardny čas\x17mauritius" + - "ki lětni čas\x0eMawsonski čas\x1bmexiski sewjerozapadny čas&mexiski sewj" + - "erozapadny standardny čas\x22mexiski sewjerozapadny lětni čas\x16mexiski" + - " pacifiski čas!mexiski pacifiski standardny čas\x1dmexiski pacifiski lět" + - "ni čas\x12Ulan-Batorski čas\x1dUlan-Batorski standardny čas\x19Ulan-Bato" + - "rski lětni čas\x0eMoskowski čas\x19Moskowski standardny čas\x15Moskowski" + - " lětni čas\x0fmyanmarski čas\x0dnauruski čas\x0dnepalski čas\x13nowokale" + - "donski čas\x1enowokaledonski standardny čas\x1anowokaledonski lětni čas" + - "\x13nowoseelandski čas\x1enowoseelandski standardny čas\x1anowoseelandsk" + - "i lětni čas\x14nowofundlandski čas\x1fnowofundlandski standardny čas\x1b" + - "nowofundlandski lětni čas\x0cniueski čas\x11čas kupy Norfolk\x1ečas kupo" + - "w Fernando de Noronha)standardny čas kupow Fernando de Noronha%lětni čas" + - " kupow Fernando de Noronha\x11Nowosibirski čas\x1cNowosibirski standardn" + - "y čas\x18Nowosibirski lětni čas\x0aOmski čas\x15Omski standardny čas\x11" + - "Omski lětni čas\x10pakistanski čas\x1bpakistanski standardny čas\x17paki" + - "stanski lětni čas\x0dpalauski čas\x17papua-nowoginejski čas\x10Paraguays" + - "ki čas\x1bParaguayski standardny čas\x17Paraguayski lětni čas\x0cperuski" + - " čas\x17peruski standardny čas\x13peruski lětni čas\x0ffilipinski čas" + - "\x1afilipinski standardny čas\x16filipinski lětni čas\x17čas Phoenixowyc" + - "h kupow čas kupow St. Pierre a Miquelon+standardny čas kupow St. Pierre " + - "a Miquelon'lětni čas kupow St. Pierre a Miquelon\x18čas Pitcairnowych ku" + - "pow\x0eponapeski čas\x0freunionski čas\x0fRotheraski čas\x10sachalinski " + - "čas\x1bsachalinski standardny čas\x17sachalinski lětni čas\x0dsamoaski " + - "čas\x18samoaski standardny čas\x14samoaski lětni čas\x10seychellski čas" + - "\x10Singapurski čas\x17čas Salomonskich kupow\x14južnogeorgiski čas\x0fs" + - "urinamski čas\x0dSyowaski čas\x0etahitiski čas\x0eTaipehski čas\x19Taipe" + - "hski standardny čas\x15Taipehski lětni čas\x0ftadźikski čas\x0ftokelausk" + - "i čas\x0dtongaski čas\x18tongaski standardny čas\x14tongaski lětni čas" + - "\x0dchuukski čas\x0fturkmenski čas\x1aturkmenski standardny čas\x16turkm" + - "enski lětni čas\x0etuvaluski čas\x0furuguayski čas\x1auruguayski standar" + - "dny čas\x16uruguayski lětni čas\x0duzbekski čas\x18uzbekski standardny č" + - "as\x14uzbekski lětni čas\x0fvanuatuski čas\x1avanuatuski standardny čas" + - "\x16vanuatuski lětni čas\x10venezuelski čas\x13Wladiwostokski čas\x1eWla" + - "diwostokski standardny čas\x1aWladiwostokski lětni čas\x11Wolgogradski č" + - "as\x1cWolgogradski standardny čas\x18Wolgogradski lětni čas\x0eWostokski" + - " čas\x0ečas kupy Wake\x1ačas kupow Wallis a Futuna\x0dJakutski čas\x18Ja" + - "kutski standardny čas\x14Jakutski lětni čas\x15Jekaterinburgski čas Jeka" + - "terinburgski standardny čas\x1cJekaterinburgski lětni čas" - -var bucket48 string = "" + // Size: 9735 bytes - "\x12G y. MMMM d., EEEE\x0cG y. MMMM d.\x0bG y. MMM d.\x0eGGGGG y. M. d." + - "\x07január\x08február\x08március\x08április\x06május\x07június\x07július" + - "\x09augusztus\x0aszeptember\x08október\x08november\x08december\x09vasárn" + - "ap\x07hétfő\x04kedd\x06szerda\x0ccsütörtök\x07péntek\x07szombat\x02N1" + - "\x02N2\x02N3\x02N4\x0cI. negyedév\x0dII. negyedév\x0eIII. negyedév\x0dIV" + - ". negyedév\x0c1. negyedév\x0c2. negyedév\x0c3. negyedév\x0c4. negyedév" + - "\x07éjfél\x03de.\x04dél\x03du.\x06reggel\x09délután\x04este\x08éjszaka" + - "\x0adélelőtt\x06éjjel\x06hajnal\x19időszámításunk előtt\x05i. e.\x1aidős" + - "zámításunk szerint\x06i. sz.\x03ie.\x04isz.\x10y. MMMM d., EEEE\x0ay. MM" + - "MM d.\x09y. MMM d.\x0ay. MM. dd.\x05Tisri\x07Hesván\x08Kiszlév\x08Tévész" + - "\x05Svát\x08Ádár I\x06Ádár\x09Ádár II\x07Niszán\x05Ijár\x07Sziván\x05Tam" + - "uz\x03Áv\x04Elul\x03TÉ\x04Moh.\x04Saf.\x07Réb. 1\x07Réb. 2\x07Dsem. I" + - "\x08Dsem. II\x04Red.\x04Sab.\x04Ram.\x04Sev.\x08Dsül k.\x08Dsül h.\x08Mo" + - "harrem\x05Safar\x0eRébi el avvel\x0fRébi el accher\x11Dsemádi el avvel" + - "\x12Dsemádi el accher\x06Redseb\x06Sabán\x08Ramadán\x07Sevvál\x0aDsül ka" + - "de\x0bDsül hedse\x07Rébi I\x08Rébi II\x0aDsemádi I\x0bDsemádi II\x02MF" + - "\x0aG y.MM.dd.\x0eGGGGG y.MM.dd.\x0dR.O.C. előtt\x04éra\x03év\x0belőző é" + - "v\x09ez az év\x0fkövetkező év\x0e{0} év múlva\x13{0} évvel ezelőtt\x09ne" + - "gyedév\x11előző negyedév\x0eez a negyedév\x15következő negyedév\x14{0} n" + - "egyedév múlva\x19{0} negyedévvel ezelőtt\x06hónap\x0eelőző hónap\x0bez a" + - " hónap\x12következő hónap\x11{0} hónap múlva\x16{0} hónappal ezelőtt\x04" + - "hét\x0celőző hét\x09ez a hét\x10következő hét\x0f{0} hét múlva\x14{0} hé" + - "ttel ezelőtt\x08{0} hete\x03nap\x0ctegnapelőtt\x06tegnap\x02ma\x06holnap" + - "\x0bholnapután\x0e{0} nap múlva\x13{0} nappal ezelőtt\x09{0} napja\x0ahé" + - "t napja\x11előző vasárnap\x0eez a vasárnap\x15következő vasárnap\x14{0} " + - "vasárnap múlva\x19{0} vasárnappal ezelőtt\x0felőző hétfő\x0cez a hétfő" + - "\x13következő hétfő\x12{0} hétfő múlva\x17{0} hétfővel ezelőtt\x0celőző " + - "kedd\x09ez a kedd\x10következő kedd\x0f{0} kedd múlva\x13{0} keddel ezel" + - "őtt\x0eelőző szerda\x0bez a szerda\x12következő szerda\x11{0} szerda mú" + - "lva\x17{0} szerdával ezelőtt\x14előző csütörtök\x11ez a csütörtök\x18köv" + - "etkező csütörtök\x17{0} csütörtök múlva\x1c{0} csütörtökkel ezelőtt\x0fe" + - "lőző péntek\x0cez a péntek\x13következő péntek\x12{0} péntek múlva\x17{0" + - "} péntekkel ezelőtt\x0felőző szombat\x0cez a szombat\x13következő szomba" + - "t\x12{0} szombat múlva\x17{0} szombattal ezelőtt\x07napszak\x04óra\x11eb" + - "ben az órában\x0f{0} óra múlva\x15{0} órával ezelőtt\x04perc\x0febben a " + - "percben\x0f{0} perc múlva\x14{0} perccel ezelőtt\x0amásodperc\x04most" + - "\x15{0} másodperc múlva\x1a{0} másodperccel ezelőtt\x09időzóna\x08{0} id" + - "ő\x0f{0} nyári idő\x0d{0} zónaidő\x16Koordinált világidő\x10brit nyári " + - "idő\x0fír nyári idő\x09Acre idő\x0eAcre zónaidő\x10Acre nyári idő\x12afg" + - "anisztáni idő\x1aközép-afrikai téli idő\x18kelet-afrikai téli idő\x17dél" + - "-afrikai téli idő\x18nyugat-afrikai időzóna\x19nyugat-afrikai téli idő" + - "\x1anyugat-afrikai nyári idő\x0dalaszkai idő\x12alaszkai zónaidő\x14alas" + - "zkai nyári idő\x0bAlmati idő\x10Almati zónaidő\x12Almati nyári idő\x0fam" + - "azóniai idő\x15amazóniai téli idő\x16amazóniai nyári idő\x1cközépső álla" + - "mokbeli idő!középső államokbeli zónaidő#középső államokbeli nyári idő" + - "\x18keleti államokbeli idő\x1dkeleti államokbeli zónaidő\x1fkeleti állam" + - "okbeli nyári idő\x10hegyvidéki idő\x15hegyvidéki zónaidő\x17hegyvidéki n" + - "yári idő\x15csendes-óceáni idő\x1acsendes-óceáni zónaidő\x1ccsendes-óceá" + - "ni nyári idő\x0cAnadiri idő\x12Anadíri zónaidő\x14Anadíri nyári idő\x0aa" + - "piai idő\x10apiai téli idő\x11apiai nyári idő\x0bAqtaui idő\x10Aqtaui zó" + - "naidő\x12Aqtaui nyári idő\x0cAqtobei idő\x11Aqtobei zónaidő\x13Aqtobei n" + - "yári idő\x09arab idő\x0farab téli idő\x10arab nyári idő\x10argentínai id" + - "ő\x16argentínai téli idő\x17Argentínai nyári idő\x1cnyugat-argentínai i" + - "dőzóna\x1dnyugat-argentínai téli idő\x1enyugat-argentínai nyári idő\x15ö" + - "rményországi idő\x1börményországi téli idő\x1cörményországi nyári idő" + - "\x15atlanti-óceáni idő\x1aatlanti-óceáni zónaidő\x1catlanti-óceáni nyári" + - " idő\x19közép-ausztráliai idő\x1fközép-ausztráliai téli idő közép-ausztr" + - "áliai nyári idő közép-nyugat-ausztráliai idő&közép-nyugat-ausztráliai t" + - "éli idő'közép-nyugat-ausztráliai nyári idő\x17kelet-ausztráliai idő\x1d" + - "kelet-ausztráliai téli idő\x1ekelet-ausztráliai nyári idő\x18nyugat-ausz" + - "tráliai idő\x1enyugat-ausztráliai téli idő\x1fnyugat-ausztráliai nyári i" + - "dő\x13Azerbajdzsáni idő\x19azerbajdzsáni téli idő\x1aazerbajdzsáni nyári" + - " idő\x0fazori időzóna\x10azori téli idő\x11azori nyári idő\x0fbangladesi" + - " idő\x15bangladesi téli idő\x16bangladesi nyári idő\x0cbutáni idő\x14bol" + - "íviai téli idő\x0fbrazíliai idő\x15brazíliai téli idő\x16brazíliai nyár" + - "i idő\x18Brunei Darussalam-i idő\x1ezöld-foki-szigeteki időzóna\x1fzöld-" + - "foki-szigeteki téli idő zöld-foki-szigeteki nyári idő\x15chamorrói téli " + - "idő\x0dchathami idő\x13chathami téli idő\x14chathami nyári idő\x10chilei" + - " időzóna\x11chilei téli idő\x12chilei nyári idő\x0bkínai idő\x11kínai té" + - "li idő\x12kínai nyári idő\x11csojbalszani idő\x17csojbalszani téli idő" + - "\x18csojbalszani nyári idő\x1dkarácsony-szigeti téli idő\x1ckókusz-szige" + - "teki téli idő\x0ekolumbiai idő\x14kolumbiai téli idő\x15kolumbiai nyári " + - "idő\x13cook-szigeteki idő\x19cook-szigeteki téli idő\x1fcook-szigeteki f" + - "él nyári idő\x0fkubai időzóna\x10kubai téli idő\x11kubai nyári idő\x0bd" + - "avisi idő\x19dumont-d’Urville-i idő\x17kelet-timori téli idő\x1ahúsvét-s" + - "zigeti időzóna\x1bhúsvét-szigeti téli idő\x1chúsvét-szigeti nyári idő" + - "\x13ecuadori téli idő\x1aközép-európai időzóna\x1bközép-európai téli idő" + - "\x1cközép-európai nyári idő\x18kelet-európai időzóna\x19kelet-európai té" + - "li idő\x1akelet-európai nyári idő\x0cminszki idő\x19nyugat-európai időzó" + - "na\x1anyugat-európai téli idő\x1bnyugat-európai nyári idő\x17falkland-sz" + - "igeteki idő\x1dfalkland-szigeteki téli idő\x1efalkland-szigeteki nyári i" + - "dő\x0bfidzsi idő\x11fidzsi téli idő\x12fidzsi nyári idő\x14francia-guian" + - "ai idő\x22francia déli és antarktiszi idő\x16galápagosi téli idő\x0dgamb" + - "ieri idő\x0dgrúziai idő\x13grúziai téli idő\x14grúziai nyári idő\x16gilb" + - "ert-szigeteki idő\x22greenwichi középidő, téli idő\x1akelet-grönlandi id" + - "őzóna\x1bkelet-grönlandi téli idő\x1ckelet-grönlandi nyári idő\x1bnyuga" + - "t-grönlandi időzóna\x1cnyugat-grönlandi téli idő\x1dnyugat-grönlandi nyá" + - "ri idő\x0fGuami zónaidő\x15öbölbeli téli idő\x12guyanai téli idő\x16hawa" + - "ii-aleut időzóna\x18hawaii-aleuti téli idő\x19hawaii-aleuti nyári idő" + - "\x13hongkongi időzóna\x14hongkongi téli idő\x15hongkongi nyári idő\x0aho" + - "vdi idő\x10hovdi téli idő\x11hovdi nyári idő\x11indiai téli idő\x14india" + - "i-óceáni idő\x0findokínai idő\x18közép-indonéziai idő\x16kelet-indonézia" + - "i idő\x1dnyugat-indonéziai téli idő\x0biráni idő\x11iráni téli idő\x12ir" + - "áni nyári idő\x0eirkutszki idő\x14irkutszki téli idő\x15irkutszki nyári" + - " idő\x0cizraeli idő\x12izraeli téli idő\x13izraeli nyári idő\x0bjapán id" + - "ő\x11japán téli idő\x12japán nyári idő\x1ePetropavlovszk-kamcsatkai idő" + - "#Petropavlovszk-kamcsatkai zónaidő%Petropavlovszk-kamcsatkai nyári idő" + - "\x17kelet-kazahsztáni idő\x18nyugat-kazahsztáni idő\x0bkoreai idő\x11kor" + - "eai téli idő\x12koreai nyári idő\x0ckosraei idő\x13krasznojarszki idő" + - "\x19krasznojarszki téli idő\x1akrasznojarszki nyári idő\x13kirgizisztáni" + - " idő\x0bLankai idő\x12sor-szigeteki idő\x16Lord Howe-szigeti idő\x1cLord" + - " Howe-szigeti téli idő\x1dLord Howe-szigeti nyári idő\x0bMacaui idő\x10M" + - "acaui zónaidő\x12Macaui nyári idő\x1cmacquarie-szigeti téli idő\x0emagad" + - "áni idő\x13magadani téli idő\x15magadáni nyári idő\x0emalajziai idő\x16" + - "maldív-szigeteki idő\x18marquises-szigeteki idő\x17marshall-szigeteki id" + - "ő\x14mauritiusi időzóna\x15mauritiusi téli idő\x16mauritiusi nyári idő" + - "\x0cmawsoni idő\x1aészaknyugat-mexikói idő\x1fészaknyugat-mexikói zónaid" + - "ő!északnyugat-mexikói nyári idő\x1emexikói csendes-óceáni idő#mexikói c" + - "sendes-óceáni zónaidő%mexikói csendes-óceáni nyári idő\x11ulánbátori idő" + - "\x17ulánbátori téli idő\x18ulánbátori nyári idő\x0dmoszkvai idő\x13moszk" + - "vai téli idő\x14moszkvai nyári idő\x0dmianmari idő\x0bnaurui idő\x0cnepá" + - "li idő\x14új-kaledóniai idő\x1aúj-kaledóniai téli idő\x1búj-kaledóniai n" + - "yári idő\x11új-zélandi idő\x17új-zélandi téli idő\x18új-zélandi nyári id" + - "ő\x12új-fundlandi idő\x17új-fundlandi zónaidő\x19új-fundlandi nyári idő" + - "\x0aniuei idő\x16norfolk-szigeteki idő\x1aFernando de Noronha-i idő Fern" + - "ando de Noronha-i téli idő!Fernando de Noronha-i nyári idő\x1dÉszak-mari" + - "ana-szigeteki idő\x13novoszibirszki idő\x19novoszibirszki téli idő\x1ano" + - "voszibirszki nyári idő\x0bomszki idő\x11omszki téli idő\x12omszki nyári " + - "idő\x10pakisztáni idő\x16pakisztáni téli idő\x17pakisztáni nyári idő\x0b" + - "palaui idő\x17pápua új-guineai idő\x0eparaguayi idő\x14paraguayi téli id" + - "ő\x15paraguayi nyári idő\x0aperui idő\x10perui téli idő\x11perui nyári " + - "idő\x16fülöp-szigeteki idő\x1cfülöp-szigeteki téli idő\x1dfülöp-szigetek" + - "i nyári idő\x1cphoenix-szigeteki téli idő Saint Pierre és Miquelon-i idő" + - "%Saint Pierre és Miquelon-i zónaidő'Saint Pierre és Miquelon-i nyári idő" + - "\x17pitcairn-szigeteki idő\x13ponape-szigeti idő\x0dphenjani idő\x0fQyzy" + - "lordai idő\x14Qyzylordai zónaidő\x16Qyzylordai nyári idő\x0eréunioni idő" + - "\x0drotherai idő\x0eszahalini idő\x14szahalini téli idő\x15szahalini nyá" + - "ri idő\x0dSzamarai idő\x12Szamarai zónaidő\x14Szamarai nyári idő\x0cszam" + - "oai idő\x12szamoai téli idő\x13szamoai nyári idő\x18seychelle-szigeteki " + - "idő\x16szingapúri téli idő\x16salamon-szigeteki idő\x13déli-georgiai idő" + - "\x0fszurinámi idő\x0bsyowai idő\x0btahiti idő\x0btaipei idő\x11taipei té" + - "li idő\x12taipei nyári idő\x15tádzsikisztáni idő\x0dtokelaui idő\x0btong" + - "ai idő\x11tongai téli idő\x12tongai nyári idő\x0atruki idő\x15türkmenisz" + - "táni idő\x1btürkmenisztáni téli idő\x1ctürkmenisztáni nyári idő\x0ctuval" + - "ui idő\x0duruguayi idő\x13uruguayi téli idő\x14uruguayi nyári idő\x13üzb" + - "egisztáni idő\x19üzbegisztáni téli idő\x1aüzbegisztáni nyári idő\x0dvanu" + - "atui idő\x13vanuatui téli idő\x14vanuatui nyári idő\x0fvenezuelai idő" + - "\x13vlagyivosztoki idő\x19vlagyivosztoki téli idő\x1avlagyivosztoki nyár" + - "i idő\x10volgográdi idő\x16volgográdi téli idő\x17volgográdi nyári idő" + - "\x0dvosztoki idő\x11wake-szigeti idő\x18Wallis és Futuna-i idő\x0ejakuts" + - "zki idő\x14jakutszki téli idő\x15Jakutszki nyári idő\x14Jekatyerinburgi " + - "idő\x1ajekatyerinburgi téli idő\x1bJekatyerinburgi nyári idő\x03lu.\x03m" + - "a.\x03mi.\x03joi\x03vi.\x04sâ.\x03joi\x05marec\x06apríl\x04máj\x04jún" + - "\x04júl\x06august\x09september\x08október\x08november\x08december" - -var bucket49 string = "" + // Size: 19418 bytes - "\x15d MMMM, y թ. G, EEEE\x10dd MMMM, y թ. G\x0fdd MMM, y թ. G\x06հնվ\x06" + - "փտվ\x06մրտ\x06ապր\x06մյս\x06հնս\x06հլս\x06օգս\x06սեպ\x06հոկ\x06նոյ\x06դ" + - "եկ\x02Հ\x02Փ\x02Մ\x02Ա\x02Օ\x02Ս\x02Ն\x02Դ\x10հունվարի\x10փետրվարի\x0aմ" + - "արտի\x0cապրիլի\x0cմայիսի\x0eհունիսի\x0eհուլիսի\x10օգոստոսի\x14սեպտեմբեր" + - "ի\x14հոկտեմբերի\x12նոյեմբերի\x14դեկտեմբերի\x0eհունվար\x0eփետրվար\x08մար" + - "տ\x0aապրիլ\x0aմայիս\x0cհունիս\x0cհուլիս\x0eօգոստոս\x12սեպտեմբեր\x12հոկտ" + - "եմբեր\x10նոյեմբեր\x12դեկտեմբեր\x06կիր\x06երկ\x06երք\x06չրք\x06հնգ\x06ու" + - "ր\x06շբթ\x02Կ\x02Ե\x02Չ\x02Ո\x02Շ\x04կր\x04եկ\x04եք\x04չք\x04հգ\x04ու" + - "\x04շբ\x0cկիրակի\x14երկուշաբթի\x12երեքշաբթի\x14չորեքշաբթի\x12հինգշաբթի" + - "\x0cուրբաթ\x0aշաբաթ\x101-ին եռմս.\x102-րդ եռմս.\x103-րդ եռմս.\x104-րդ եռ" + - "մս.\x171-ին եռամսյակ\x172-րդ եռամսյակ\x173-րդ եռամսյակ\x174-րդ եռամսյակ" + - "\x10կեսգիշեր\x04ԿԱ\x0aկեսօր\x04ԿՀ\x12առավոտյան\x0cցերեկը\x10երեկոյան\x0c" + - "գիշերը\x07կգ․\x02ա\x07կօ․\x02հ\x06առվ\x06ցրկ\x06գշր\x0cառավոտ\x0aցերեկ" + - "\x0aերեկո\x0aգիշեր\x1bՔրիստոսից առաջ,մեր թվարկությունից առաջ\x1bՔրիստոսի" + - "ց հետո\x1dմեր թվարկության\x09մ.թ.ա.\x0fմ․թ․ա․\x06մ.թ.\x12y թ. MMMM d, E" + - "EEE\x0edd MMMM, y թ.\x0ddd MMM, y թ.\x18թվարկություն\x08տարի\x15նախորդ տ" + - "արի\x0fայս տարի\x15հաջորդ տարի\x10{0} տարուց\x15{0} տարի առաջ\x02տ\x0f{" + - "0} տ առաջ\x07+{0} տ\x07-{0} տ\x10եռամսյակ\x1dնախորդ եռամսյակ\x17այս եռամ" + - "սյակ\x1dհաջորդ եռամսյակ\x18{0} եռամսյակից\x1d{0} եռամսյակ առաջ\x08եռմս" + - "\x11{0} եռմս-ից\x15{0} եռմս առաջ\x0d+{0} եռմս\x0d-{0} եռմս\x08ամիս\x15նա" + - "խորդ ամիս\x0fայս ամիս\x15հաջորդ ամիս\x0e{0} ամսից\x15{0} ամիս առաջ\x06ա" + - "մս\x15անցյալ ամիս\x07+{0} ա\x07-{0} ա\x17նախորդ շաբաթ\x11այս շաբաթ\x17հ" + - "աջորդ շաբաթ\x12{0} շաբաթից\x17{0} շաբաթ առաջ\x17{0}-ի շաբաթում\x06շաբ" + - "\x0f{0} շաբ-ից\x13{0} շաբ առաջ\x14{0}-ի շաբ-ում\x11{0} շաբ անց\x04օր\x1f" + - "երեկ չէ առաջի օրը\x08երեկ\x0aայսօր\x08վաղը\x1fվաղը չէ մյուս օրը\x0c{0} " + - "օրից\x11{0} օր առաջ\x13շաբաթվա օր\x19նախորդ կիրակի\x13այս կիրակի\x19հաջ" + - "որդ կիրակի\x19{0} կիրակի հետո\x19{0} կիրակի առաջ\x0fնխրդ կիր\x0dայս կիր" + - "\x0fհջրդ կիր\x13{0} կիր հետո\x13{0} կիր առաջ\x0b+{0} կիր\x0b-{0} կիր!նախ" + - "որդ երկուշաբթի\x1bայս երկուշաբթի!հաջորդ երկուշաբթի!{0} երկուշաբթի հետո!" + - "{0} երկուշաբթի առաջ\x0fնխրդ երկ\x0dայս երկ\x0fհջրդ երկ\x13{0} երկ հետո" + - "\x13{0} երկ առաջ\x0b+{0} երկ\x0b-{0} երկ\x1fնախորդ երեքշաբթի\x19այս երեք" + - "շաբթի\x1fհաջորդ երեքշաբթի\x1f{0} երեքշաբթի հետո\x1f{0} երեքշաբթի առաջ" + - "\x0fնխրդ երք\x0dայս երք\x0fհջրդ երք\x13{0} երք հետո\x13{0} երք առաջ\x0b+" + - "{0} երք\x0b-{0} երք!նախորդ չորեքշաբթի\x1bայս չորեքշաբթի!հաջորդ չորեքշաբթ" + - "ի!{0} չորեքշաբթի հետո!{0} չորեքշաբթի առաջ\x0fնխրդ չրք\x0dայս չրք\x0fհջր" + - "դ չրք\x13{0} չրք հետո\x13{0} չրք առաջ\x0b+{0} չրք\x0b-{0} չրք\x1fնախորդ" + - " հինգշաբթի\x19այս հինգշաբթի\x1fհաջորդ հինգշաբթի\x1f{0} հինգշաբթի հետո" + - "\x1f{0} հինգշաբթի առաջ\x0fնխրդ հնգ\x0dայս հնգ\x0fհջրդ հնգ\x13{0} հնգ հետ" + - "ո\x13{0} հնգ առաջ\x0b+{0} հնգ\x0b-{0} հնգ\x19նախորդ ուրբաթ\x13այս ուրբա" + - "թ\x19հաջորդ ուրբաթ\x19{0} ուրբաթ հետո\x19{0} ուրբաթ առաջ\x11նխրդ ուրբ" + - "\x0fայս ուրբ\x11հջրդ ուրբ\x15{0} ուրբ հետո\x15{0} ուրբ առաջ\x1eնախորդ շա" + - "բաթ օրը\x18այս շաբաթ օրը\x1eհաջորդ շաբաթ օրը\x1c{0} շաբաթ օր հետո\x1c{0" + - "} շաբաթ օր առաջ\x0fնխրդ շբթ\x0dայս շբթ\x0fհջրդ շբթ\x13{0} շբթ հետո\x13{0" + - "} շբթ առաջ\x09+{0} շբ\x09-{0} շբ\x09ԿԱ/ԿՀ\x06ժամ\x11այս ժամին\x0e{0} ժամ" + - "ից\x13{0} ժամ առաջ\x02ժ\x0b{0} ժ-ից\x0f{0} ժ առաջ\x08րոպե\x13այս րոպեին" + - "\x10{0} րոպեից\x15{0} րոպե առաջ\x02ր\x0b{0} ր-ից\x0f{0} ր առաջ\x10վայրկյ" + - "ան\x08այժմ\x18{0} վայրկյանից\x1d{0} վայրկյան առաջ\x02վ\x0f{0} վրկ-ից" + - "\x13{0} վրկ առաջ\x0b{0} վ-ից\x0f{0} վ առաջ\x17ժամային գոտիBՀամաշխարհային" + - " կոորդինացված ժամանակ4Բրիտանական ամառային ժամանակ4Իռլանդական ստանդարտ ժա" + - "մանակ#Աֆղանստանի ժամանակ6Կենտրոնական Աֆրիկայի ժամանակ0Արևելյան Աֆրիկայի" + - " ժամանակ2Հարավային Աֆրիկայի ժամանակ0Արևմտյան Աֆրիկայի ժամանակAԱրևմտյան Ա" + - "ֆրիկայի ստանդարտ ժամանակAԱրևմտյան Աֆրիկայի ամառային ժամանակ!Ալյասկայի ժ" + - "ամանակ2Ալյասկայի ստանդարտ ժամանակ2Ալյասկայի ամառային ժամանակ!Ամազոնյան " + - "ժամանակ2Ամազոնյան ստանդարտ ժամանակ2Ամազոնյան ամառային ժամանակ8Կենտրոնակ" + - "ան Ամերիկայի ժամանակIԿենտրոնական Ամերիկայի ստանդարտ ժամանակIԿենտրոնական" + - " Ամերիկայի ամառային ժամանակ2Արևելյան Ամերիկայի ժամանակCԱրևելյան Ամերիկայ" + - "ի ստանդարտ ժամանակCԱրևելյան Ամերիկայի ամառային ժամանակ(Լեռնային ժամանակ" + - " (ԱՄՆ)9Լեռնային ստանդարտ ժամանակ (ԱՄՆ)9Լեռնային ամառային ժամանակ (ԱՄՆ)/Խ" + - "աղաղօվկիանոսյան ժամանակ@Խաղաղօվկիանոսյան ստանդարտ ժամանակ@Խաղաղօվկիանոս" + - "յան ամառային ժամանակ\x1bԱպիայի ժամանակ,Ապիայի ստանդարտ ժամանակ,Ապիայի ա" + - "մառային ժամանակ0Սաուդյան Արաբիայի ժամանակAՍաուդյան Արաբիայի ստանդարտ ժա" + - "մանակAՍաուդյան Արաբիայի ամառային ժամանակ%Արգենտինայի ժամանակ6Արգենտինայ" + - "ի ստնադարտ ժամանակ6Արգենտինայի ամառային ժամանակ6Արևմտյան Արգենտինայի ժա" + - "մանակGԱրևմտյան Արգենտինայի ստնադարտ ժամանակGԱրևմտյան Արգենտինայի ամառայ" + - "ին ժամանակ!Հայաստանի ժամանակ2Հայաստանի ստանդարտ ժամանակ2Հայաստանի ամառա" + - "յին ժամանակ!Ատլանտյան ժամանակ2Ատլանտյան ստանդարտ ժամանակ2Ատլանտյան ամառ" + - "ային ժամանակ<Կենտրոնական Ավստրալիայի ժամանակMԿենտրոնական Ավստրալիայի ստ" + - "անդարտ ժամանակMԿենտրոնական Ավստրալիայի ամառային ժամանակMԿենտրոնական Ավս" + - "տրալիայի արևմտյան ժամանակ^Կենտրոնական Ավստրալիայի արևմտյան ստանդարտ ժամ" + - "անակ^Կենտրոնական Ավստրալիայի արևմտյան ամառային ժամանակ6Արևելյան Ավստրալ" + - "իայի ժամանակGԱրևելյան Ավստրալիայի ստանդարտ ժամանակGԱրևելյան Ավստրալիայի" + - " ամառային ժամանակ6Արևմտյան Ավստրալիայի ժամանակGԱրևմտյան Ավստրալիայի ստան" + - "դարտ ժամանակGԱրևմտյան Ավստրալիայի ամառային ժամանակ!Ադրբեջանի ժամանակ2Ադ" + - "րբեջանի ստանդարտ ժամանակ2Ադրբեջանի ամառային ժամանակ.Ազորյան կղզիների ժա" + - "մանակ?Ազորյան կղզիների ստանդարտ ժամանակ?Ազորյան կղզիների ամառային ժաման" + - "ակ#Բանգլադեշի ժամանակ4Բանգլադեշի ստանդարտ ժամանակ4Բանգլադեշի ամառային ժ" + - "ամանակ\x1dԲութանի ժամանակ!Բոլիվիայի ժամանակ#Բրազիլիայի ժամանակ4Բրազիլիա" + - "յի ստանդարտ ժամանակ4Բրազիլիայի ամառային ժամանակ\x1fԲրունեյի ժամանակ$Կաբ" + - "ո Վերդեի ժամանակ5Կաբո Վերդեի ստանդարտ ժամանակ5Կաբո Վերդեի ամառային ժամա" + - "նակ\x1fՉամոռոյի ժամանակ$Չաթեմ կղզու ժամանակ5Չաթեմ կղզու ստանդարտ ժամանա" + - "կ5Չաթեմ կղզու ամառային ժամանակ\x19Չիլիի ժամանակ*Չիլիի ստանդարտ ժամանակ*" + - "Չիլիի ամառային ժամանակ!Չինաստանի ժամանակ2Չինաստանի ստանդարտ ժամանակ2Չին" + - "աստանի ամառային ժամանակ#Չոյբալսանի ժամանակ4Չոյբալսանի ստանդարտ ժամանակ4" + - "Չոյբալսանի ամառային ժամանակ3Սուրբ Ծննդյան կղզու ժամանակ0Կոկոսյան կղզինե" + - "րի ժամանակ%Կոլումբիայի ժամանակ6Կոլումբիայի ստանդարտ ժամանակ6Կոլումբիայի" + - " ամառային ժամանակ*Կուկի կղզիների ժամանակ;Կուկի կղզիների ստանդարտ ժամանակ" + - "CԿուկի կղզիների կիսաամառային ժամանակ\x1dԿուբայի ժամանակ.Կուբայի ստանդարտ" + - " ժամանակ.Կուբայի ամառային ժամանակ\x1dԴեյվիսի ժամանակ3Դյումոն դ’Յուրվիլի " + - "ժամանակ,Արևելյան Թիմորի ժամանակ$Զատկի կղզու ժամանակ5Զատկի կղզու ստանդար" + - "տ ժամանակ5Զատկի կղզու ամառային ժամանակ\x1fԷկվադորի ժամանակ6Կենտրոնական " + - "Եվրոպայի ժամանակGԿենտրոնական Եվրոպայի ստանդարտ ժամանակGԿենտրոնական Եվրո" + - "պայի ամառային ժամանակ0Արևելյան Եվրոպայի ժամանակAԱրևելյան Եվրոպայի ստանդ" + - "արտ ժամանակAԱրևելյան Եվրոպայի ամառային ժամանակ\x1bՄինսկի ժամանակ0Արևմտյ" + - "ան Եվրոպայի ժամանակAԱրևմտյան Եվրոպայի ստանդարտ ժամանակAԱրևմտյան Եվրոպայ" + - "ի ամառային ժամանակ6Ֆոլքլենդյան կղզիների ժամանակGՖոլքլենդյան կղզիների ստ" + - "անդարտ ժամանակGՖոլքլենդյան կղզիների ամառային ժամանակ\x19Ֆիջիի ժամանակ*Ֆ" + - "իջիի ստանդարտ ժամանակ*Ֆիջիի ամառային ժամանակ4Ֆրանսիական Գվիանայի ժամանա" + - "կRՖրանսիական հարավային և անտարկտիդյան ժամանակ8Գալապագոսյան կղզիների ժամ" + - "անակ,Գամբյե կղզիների ժամանակ\x1fՎրաստանի ժամանակ0Վրաստանի ստանդարտ ժամա" + - "նակ0Վրաստանի ամառային ժամանակ0Ջիլբերթի կղզիների ժամանակ\x1fԳրինվիչի ժամ" + - "անակ8Արևելյան Գրենլանդիայի ժամանակIԱրևելյան Գրենլանդիայի ստանդարտ ժաման" + - "ակIԱրևելյան Գրենլանդիայի ամառային ժամանակ8Արևմտյան Գրենլանդիայի ժամանակ" + - "IԱրևմտյան Գրենլանդիայի ստանդարտ ժամանակIԱրևմտյան Գրենլանդիայի ամառային ժ" + - "ամանակ5Պարսից ծոցի ստանդարտ ժամանակ\x1fԳայանայի ժամանակ0Հավայան-ալեությ" + - "ան ժամանակAՀավայան-ալեության ստանդարտ ժամանակAՀավայան-ալեության ամառայի" + - "ն ժամանակ\x1fՀոնկոնգի ժամանակ0Հոնկոնգի ստանդարտ ժամանակ0Հոնկոնգի ամառայ" + - "ին ժամանակ\x19Հովդի ժամանակ*Հովդի ստանդարտ ժամանակ*Հովդի ամառային ժաման" + - "ակ4Հնդկաստանի ստանդարտ ժամանակ2Հնդկական օվկիանոսի ժամանակ'Հնդկաչինական " + - "ժամանակ<Կենտրոնական Ինդոնեզիայի ժամանակ6Արևելյան Ինդոնեզիայի ժամանակ6Ար" + - "ևմտյան Ինդոնեզիայի ժամանակ\x19Իրանի ժամանակ*Իրանի ստանդարտ ժամանակ*Իրան" + - "ի ամառային ժամանակ!Իրկուտսկի ժամանակ2Իրկուտսկի ստանդարտ ժամանակ2Իրկուտս" + - "կի ամառային ժամանակ\x1fԻսրայելի ժամանակ0Իսրայելի ստանդարտ ժամանակ0Իսրայ" + - "ելի ամառային ժամանակ!Ճապոնիայի ժամանակ2Ճապոնիայի ստանդարտ ժամանակ2Ճապոն" + - "իայի ամառային ժամանակ4Արևելյան Ղազախստանի ժամանակ4Արևմտյան Ղազախստանի ժ" + - "ամանակ\x1dԿորեայի ժամանակ.Կորեայի ստանդարտ ժամանակ.Կորեայի ամառային ժամ" + - "անակ\x1fԿոսրաեյի ժամանակ'Կրասնոյարսկի ժամանակ8Կրասնոյարսկի ստանդարտ ժամ" + - "անակ8Կրասնոյարսկի ամառային ժամանակ!Ղրղզստանի ժամանակ(Լայն կղզիների ժամա" + - "նակ\x22Լորդ Հաուի ժամանակ3Լորդ Հաուի ստանդարտ ժամանակ3Լորդ Հաուի ամառայ" + - "ին ժամանակ,Մակկուորի կղզու ժամանակ\x1fՄագադանի ժամանակ0Մագադանի ստանդար" + - "տ ժամանակ0Մագադանի ամառային ժամանակ#Մալայզիայի ժամանակ#Մալդիվների ժաման" + - "ակ2Մարկիզյան կղզիների ժամանակ2Մարշալյան կղզիների ժամանակ#Մավրիկիոսի ժամ" + - "անակ4Մավրիկիոսի ստանդարտ ժամանակ4Մավրիկիոսի ամառային ժամանակ\x1fՄոուսոն" + - "ի ժամանակ@Հյուսիսարևմտյան Մեքսիկայի ժամանակQՀյուսիսարևմտյան Մեքսիկայի ս" + - "տանդարտ ժամանակQՀյուսիսարևմտյան Մեքսիկայի ամառային ժամանակBՄեքսիկայի խա" + - "ղաղօվկիանոսյան ժամանակSՄեքսիկայի խաղաղօվկիանոսյան ստանդարտ ժամանակSՄեքս" + - "իկայի խաղաղօվկիանոսյան ամառային ժամանակ&Ուլան Բատորի ժամանակ7Ուլան Բատո" + - "րի ստանդարտ ժամանակ7Ուլան Բատորի ամառային ժամանակ\x1fՄոսկվայի ժամանակ0Մ" + - "ոսկվայի ստանդարտ ժամանակ0Մոսկվայի ամառային ժամանակ\x1fՄյանմայի ժամանակ" + - "\x1fՆաուրուի ժամանակ\x1bՆեպալի ժամանակ,Նոր Կալեդոնիայի ժամանակ=Նոր Կալեդ" + - "ոնիայի ստանդարտ ժամանակ=Նոր Կալեդոնիայի ամառային ժամանակ*Նոր Զելանդիայի" + - " ժամանակ;Նոր Զելանդիայի ստանդարտ ժամանակ;Նոր Զելանդիայի ամառային ժամանակ" + - "-Նյուֆաունդլենդի ժամանակ>Նյուֆաունդլենդի ստանդարտ ժամանակ>Նյուֆաունդլենդ" + - "ի ամառային ժամանակ\x1dՆիուեյի ժամանակ(Նորֆոլկ կղզու ժամանակ9Ֆերնանդու դ" + - "ի Նորոնյայի ժամանակJՖերնանդու դի Նորոնյայի ստանդարտ ժամանակJՖերնանդու դ" + - "ի Նորոնյայի ամառային ժամանակ'Նովոսիբիրսկի ժամանակ8Նովոսիբիրսկի ստանդարտ" + - " ժամանակ8Նովոսիբիրսկի ամառային ժամանակ\x19Օմսկի ժամանակ*Օմսկի ստանդարտ ժ" + - "ամանակ*Օմսկի ամառային ժամանակ!Պակիստանի ժամանակ2Պակիստանի ստանդարտ ժամա" + - "նակ2Պակիստանի ամառային ժամանակ\x1fՊալաույի ժամանակ3Պապուա Նոր Գվինեայի " + - "ժամանակ!Պարագվայի ժամանակ2Պարագվայի ստանդարտ ժամանակ2Պարագվայի ամառային" + - " ժամանակ\x1bՊերուի ժամանակ,Պերուի ստանդարտ ժամանակ,Պերուի ամառային ժաման" + - "ակ%Ֆիլիպինների ժամանակ6Ֆիլիպինների ստանդարտ ժամանակ6Ֆիլիպինների ամառայի" + - "ն ժամանակ,Ֆինիքս կղզիների ժամանակ2Սեն Պիեռ և Միքելոնի ժամանակCՍեն Պիեռ " + - "և Միքելոնի ստանդարտ ժամանակCՍեն Պիեռ և Միքելոնի ամառային ժամանակ\x1fՊիտ" + - "կեռնի ժամանակ&Պոնապե կղզու ժամանակ\x1fՓխենյանի ժամանակ#Ռեյունիոնի ժաման" + - "ակ\x1fՌոտերայի ժամանակ\x1fՍախալինի ժամանակ0Սախալինի ստանդարտ ժամանակ0Սա" + - "խալինի ամառային ժամանակ\x1dՍամոայի ժամանակ.Սամոայի ստանդարտ ժամանակ.Սամ" + - "ոայի ամառային ժամանակ2Սեյշելյան կղզիների ժամանակ#Սինգապուրի ժամանակ0Սող" + - "ոմոնի կղզիների ժամանակ2Հարավային Ջորջիայի ժամանակ!Սուրինամի ժամանակ\x1d" + - "Սյովայի ժամանակ\x1bԹաիթիի ժամանակ\x1dԹայպեյի ժամանակ.Թայպեյի ստանդարտ ժ" + - "ամանակ.Թայպեյի ամառային ժամանակ#Տաջիկստանի ժամանակ#Տոկելաույի ժամանակ" + - "\x1dՏոնգայի ժամանակ.Տոնգայի ստանդարտ ժամանակ.Տոնգայի ամառային ժամանակ" + - "\x1bՏրուկի ժամանակ)Թուրքմենստանի ժամանակ:Թուրքմենստանի ստանդարտ ժամանակ:" + - "Թուրքմենստանի ամառային ժամանակ#Տուվալույի ժամանակ#Ուրուգվայի ժամանակ4Ու" + - "րուգվայի ստանդարտ ժամանակ4Ուրուգվայի ամառային ժամանակ%Ուզբեկստանի ժաման" + - "ակ6Ուզբեկստանի ստանդարտ ժամանակ6Ուզբեկստանի ամառային ժամանակ%Վանուատույ" + - "ի ժամանակ6Վանուատույի ստանդարտ ժամանակ6Վանուատույի ամառային ժամանակ'Վեն" + - "եսուելայի ժամանակ'Վլադիվոստոկի ժամանակ8Վլադիվոստոկի ստանդարտ ժամանակ8Վլ" + - "ադիվոստոկի ամառային ժամանակ#Վոլգոգրադի ժամանակ4Վոլգոգրադի ստանդարտ ժամա" + - "նակ4Վոլգոգրադի ամառային ժամանակ\x1dՎոստոկի ժամանակ$Ուեյք կղզու ժամանակ3" + - "Ուոլիս և Ֆուտունայի ժամանակ!Յակուտսկի ժամանակ2Յակուտսկի ստանդարտ ժամանա" + - "կ2Յակուտսկի ամառային ժամանակ+Եկատերինբուրգի ժամանակ<Եկատերինբուրգի ստան" + - "դարտ ժամանակ<Եկատերինբուրգի ամառային ժամանակ" - -var bucket50 string = "" + // Size: 11470 bytes - "\x10mulai musim semi\x09air hujan\x0fserangga bangun\x13ekuinoks musim s" + - "emi\x0dhujan butiran\x11mulai musim panas\x11mulai musim gugur\x0bakhir " + - "panas\x09white dew\x14ekuinoks musim gugur\x0cembun dingin\x10embun beku" + - " turun\x12mulai musim dingin\x11mulai turun salju\x0fEEEE, U MMMM dd\x08" + - "U MMMM d\x07U MMM d\x05y-M-d\x0bembun putih\x03Min\x03Sen\x03Sel\x03Rab" + - "\x03Kam\x03Jum\x03Sab\x06Minggu\x05Senin\x06Selasa\x04Rabu\x05Kamis\x05J" + - "umat\x05Sabtu\x0cKuartal ke-1\x0cKuartal ke-2\x0cKuartal ke-3\x0cKuartal" + - " ke-4\x0ctengah malam\x0btengah hari\x04pagi\x05siang\x04sore\x05malam" + - "\x0eSebelum Masehi\x10Sebelum Era Umum\x06Masehi\x08Era Umum\x02SM\x03SE" + - "U\x01M\x02EU\x0eSebelum R.O.C.\x06R.O.C.\x05Tahun\x0atahun lalu\x09tahun" + - " ini\x0btahun depan\x0fDalam {0} tahun\x13{0} tahun yang lalu\x04thn." + - "\x0bdlm {0} thn\x0c{0} thn lalu\x08+{0} thn\x08-{0} thn\x07Kuartal\x0cKu" + - "artal lalu\x0bKuartal ini\x12Kuartal berikutnya\x11dalam {0} kuartal\x15" + - "{0} kuartal yang lalu\x05krtl.\x0ddlm {0} krtl.\x0e{0} krtl. lalu\x0a+{0" + - "} krtl.\x0a-{0} krtl.\x05Bulan\x0abulan lalu\x09bulan ini\x10Bulan berik" + - "utnya\x0fDalam {0} bulan\x13{0} bulan yang lalu\x04bln.\x0bdlm {0} bln" + - "\x0c{0} bln lalu\x09+{0} bln.\x09-{0} bln.\x0bminggu lalu\x0aminggu ini" + - "\x0cminggu depan\x10Dalam {0} minggu\x14{0} minggu yang lalu\x0dminggu k" + - "e-{0}\x04mgg.\x0bdlm {0} mgg\x0c{0} mgg lalu\x0amgg ke-{0}\x09+{0} mgg." + - "\x09-{0} mgg.\x07mgg {0}\x04Hari\x0ckemarin dulu\x07kemarin\x08hari ini" + - "\x05besok\x04lusa\x0eDalam {0} hari\x12{0} hari yang lalu\x0bdalam {0} h" + - "\x0a{0} h lalu\x13Hari dalam Seminggu\x10hari Minggu lalu\x0fhari Minggu" + - " ini\x16hari Minggu berikutnya\x15dalam {0} hari Minggu\x19{0} hari Ming" + - "gu yang lalu\x09Min. lalu\x08Min. ini\x0fMin. berikutnya\x0cdlm {0} Min." + - "\x0d{0} Min. lalu\x09+{0} Min.\x09-{0} Min.\x0aSenin lalu\x09Senin ini" + - "\x10Senin berikutnya\x0fdalam {0} Senin\x0e{0} Senin lalu\x09Sen. lalu" + - "\x08Sen. ini\x0fSen. berikutnya\x0cdlm {0} Sen.\x0d{0} Sen. lalu\x09+{0}" + - " Sen.\x09-{0} Sen.\x0bSelasa lalu\x0aSelasa ini\x11Selasa berikutnya\x10" + - "dalam {0} Selasa\x0f{0} Selasa lalu\x09Sel. lalu\x08Sel. ini\x0fSel. ber" + - "ikutnya\x0cdlm {0} Sel.\x0d{0} Sel. lalu\x09+{0} Sel.\x09-{0} Sel.\x09Ra" + - "bu lalu\x08Rabu ini\x0fRabu berikutnya\x0edalam {0} Rabu\x0d{0} Rabu lal" + - "u\x09Rab. lalu\x08Rab. ini\x0fRab. berikutnya\x0cdlm {0} Rab.\x0d{0} Rab" + - ". lalu\x09+{0} Rab.\x09-{0} Rab.\x0aKamis lalu\x09Kamis ini\x10Kamis ber" + - "ikutnya\x0fdalam {0} Kamis\x0e{0} Kamis lalu\x09Kam. lalu\x08Kam. ini" + - "\x0fKam. berikutnya\x0cdlm {0} Kam.\x0d{0} Kam. lalu\x09+{0} Kam.\x09-{0" + - "} Kam.\x0aJumat lalu\x09Jumat ini\x10Jumat berikutnya\x0fdalam {0} Jumat" + - "\x0e{0} Jumat lalu\x09Jum. lalu\x08Jum. ini\x0fJum. berikutnya\x0cdlm {0" + - "} Jum.\x0d{0} Jum. lalu\x09+{0} Jum.\x09-{0} Jum.\x0aSabtu lalu\x09Sabtu" + - " ini\x10Sabtu berikutnya\x0fdalam {0} Sabtu\x0e{0} Sabtu lalu\x09Sab. la" + - "lu\x08Sab. ini\x0fSab. berikutnya\x0cdlm {0} Sab.\x0d{0} Sab. lalu\x09+{" + - "0} Sab.\x09-{0} Sab.\x03Jam\x07jam ini\x0dDalam {0} jam\x11{0} jam yang " + - "lalu\x03jam\x0c{0} jam lalu\x08+{0} jam\x08-{0} jam\x05Menit\x09menit in" + - "i\x0fDalam {0} menit\x13{0} menit yang lalu\x04mnt.\x0bdlm {0} mnt\x0c{0" + - "} mnt lalu\x08+{0} mnt\x08-{0} mnt\x05Detik\x08sekarang\x0fDalam {0} det" + - "ik\x13{0} detik yang lalu\x04dtk.\x0bdlm {0} dtk\x0c{0} dtk lalu\x08+{0}" + - " dtk\x08-{0} dtk\x0aZona Waktu\x09Waktu {0}\x15Waktu Musim Panas {0}\x11" + - "Waktu Standar {0}\x1dWaktu Universal Terkoordinasi\x19Waktu Musim Panas " + - "Inggris\x16Waktu Standar Irlandia\x0aWaktu Acre\x12Waktu Standar Acre" + - "\x16Waktu Musim Panas Acre\x10Waktu Afganistan\x13Waktu Afrika Tengah" + - "\x12Waktu Afrika Timur\x1cWaktu Standar Afrika Selatan\x12Waktu Afrika B" + - "arat\x1aWaktu Standar Afrika Barat\x1eWaktu Musim Panas Afrika Barat\x0c" + - "Waktu Alaska\x14Waktu Standar Alaska\x18Waktu Musim Panas Alaska\x0cWakt" + - "u Almaty\x14Waktu Standar Almaty\x18Waktu Musim Panas Almaty\x0cWaktu Am" + - "azon\x14Waktu Standar Amazon\x18Waktu Musim Panas Amazon\x0cWaktu Tengah" + - "\x14Waktu Standar Tengah\x18Waktu Musim Panas Tengah\x0bWaktu Timur\x13W" + - "aktu Standar Timur\x17Waktu Musim Panas Timur\x10Waktu Pegunungan\x18Wak" + - "tu Standar Pegunungan\x1cWaktu Musim Panas Pegunungan\x0dWaktu Pasifik" + - "\x15Waktu Standar Pasifik\x19Waktu Musim Panas Pasifik\x0cWaktu Anadyr" + - "\x14Waktu Standar Anadyr\x18Waktu Musim Panas Anadyr\x0aWaktu Apia\x12Wa" + - "ktu Standar Apia\x16Waktu Musim Panas Apia\x0bWaktu Aqtau\x13Waktu Stand" + - "ar Aqtau\x17Waktu Musim Panas Aqtau\x0cWaktu Aqtobe\x14Waktu Standar Aqt" + - "obe\x18Waktu Musim Panas Aqtobe\x0aWaktu Arab\x12Waktu Standar Arab\x16W" + - "aktu Musim Panas Arab\x0fWaktu Argentina\x17Waktu Standar Argentina\x1bW" + - "aktu Musim Panas Argentina\x1cWaktu Argentina Bagian Barat$Waktu Standar" + - " Argentina Bagian Barat(Waktu Musim Panas Argentina Bagian Barat\x0dWakt" + - "u Armenia\x15Waktu Standar Armenia\x19Waktu Musim Panas Armenia\x0eWaktu" + - " Atlantik\x16Waktu Standar Atlantik\x1aWaktu Musim Panas Atlantik\x16Wak" + - "tu Tengah Australia\x1eWaktu Standar Tengah Australia\x22Waktu Musim Pan" + - "as Tengah Australia\x1cWaktu Barat Tengah Australia$Waktu Standar Barat " + - "Tengah Australia(Waktu Musim Panas Barat Tengah Australia\x15Waktu Timur" + - " Australia\x1dWaktu Standar Timur Australia!Waktu Musim Panas Timur Aust" + - "ralia\x15Waktu Barat Australia\x1dWaktu Standar Barat Australia!Waktu Mu" + - "sim Panas Barat Australia\x10Waktu Azerbaijan\x18Waktu Standar Azerbaija" + - "n\x1cWaktu Musim Panas Azerbaijan\x0cWaktu Azores\x14Waktu Standar Azore" + - "s\x18Waktu Musim Panas Azores\x10Waktu Bangladesh\x18Waktu Standar Bangl" + - "adesh\x1cWaktu Musim Panas Bangladesh\x0cWaktu Bhutan\x0dWaktu Bolivia" + - "\x0cWaktu Brasil\x14Waktu Standar Brasil\x18Waktu Musim Panas Brasil\x17" + - "Waktu Brunei Darussalam\x13Waktu Tanjung Verde\x1bWaktu Standar Tanjung " + - "Verde\x1fWaktu Musim Panas Tanjung Verde\x0bWaktu Casey\x16Waktu Standar" + - " Chamorro\x0dWaktu Chatham\x15Waktu Standar Chatham\x19Waktu Musim Panas" + - " Chatham\x0aWaktu Cile\x12Waktu Standar Cile\x16Waktu Musim Panas Cile" + - "\x0eWaktu Tiongkok\x16Waktu Standar Tiongkok\x1aWaktu Musim Panas Tiongk" + - "ok\x10Waktu Choibalsan\x18Waktu Standar Choibalsan\x1cWaktu Musim Panas " + - "Choibalsan\x11Waktu Pulau Natal\x15Waktu Kepulauan Cocos\x0eWaktu Kolomb" + - "ia\x16Waktu Standar Kolombia\x1aWaktu Musim Panas Kolombia\x0fWaktu Kep." + - " Cook\x17Waktu Standar Kep. Cook\x22Waktu Tengah Musim Panas Kep. Cook" + - "\x0aWaktu Kuba\x12Waktu Standar Kuba\x16Waktu Musim Panas Kuba\x0bWaktu " + - "Davis\x18Waktu Dumont-d’Urville\x11Waktu Timor Leste\x12Waktu Pulau Pask" + - "ah\x1aWaktu Standar Pulau Paskah\x1eWaktu Musim Panas Pulau Paskah\x0dWa" + - "ktu Ekuador\x12Waktu Eropa Tengah\x1aWaktu Standar Eropa Tengah\x1eWaktu" + - " Musim Panas Eropa Tengah\x11Waktu Eropa Timur\x19Waktu Standar Eropa Ti" + - "mur\x1dWaktu Musim Panas Eropa Timur\x16Waktu Eropa Timur Jauh\x11Waktu " + - "Eropa Barat\x19Waktu Standar Eropa Barat\x1dWaktu Musim Panas Eropa Bara" + - "t\x18Waktu Kepulauan Falkland Waktu Standar Kepulauan Falkland$Waktu Mus" + - "im Panas Kepulauan Falkland\x0aWaktu Fiji\x12Waktu Standar Fiji\x16Waktu" + - " Musim Panas Fiji\x14Waktu Guyana Prancis,Waktu Wilayah Selatan dan Anta" + - "rktika Prancis\x0fWaktu Galapagos\x0dWaktu Gambier\x0dWaktu Georgia\x15W" + - "aktu Standar Georgia\x19Waktu Musim Panas Georgia\x12Waktu Kep. Gilbert" + - "\x13Greenwich Mean Time\x15Waktu Greenland Timur\x1dWaktu Standar Greenl" + - "and Timur!Waktu Musim Panas Greenland Timur\x15Waktu Greenland Barat\x1d" + - "Waktu Standar Greenland Barat!Waktu Musim Panas Greenland Barat\x0aWaktu" + - " Guam\x13Waktu Standar Teluk\x0cWaktu Guyana\x15Waktu Hawaii-Aleutian" + - "\x1dWaktu Standar Hawaii-Aleutian!Waktu Musim Panas Hawaii-Aleutian\x0fW" + - "aktu Hong Kong\x17Waktu Standar Hong Kong\x1bWaktu Musim Panas Hong Kong" + - "\x0aWaktu Hovd\x12Waktu Standar Hovd\x16Waktu Musim Panas Hovd\x0bWaktu " + - "India\x15Waktu Samudera Hindia\x0fWaktu Indochina\x16Waktu Indonesia Ten" + - "gah\x04WITA\x15Waktu Indonesia Timur\x03WIT\x15Waktu Indonesia Barat\x03" + - "WIB\x0aWaktu Iran\x12Waktu Standar Iran\x16Waktu Musim Panas Iran\x0dWak" + - "tu Irkutsk\x15Waktu Standar Irkutsk\x19Waktu Musim Panas Irkutsk\x0cWakt" + - "u Israel\x14Waktu Standar Israel\x18Waktu Musim Panas Israel\x0cWaktu Je" + - "pang\x14Waktu Standar Jepang\x18Waktu Musim Panas Jepang\x1eWaktu Petrop" + - "avlovsk-Kamchatsky&Waktu Standar Petropavlovsk-Kamchatsky*Waktu Musim Pa" + - "nas Petropavlovsk-Kamchatski\x16Waktu Kazakhstan Timur\x16Waktu Kazakhst" + - "an Barat\x0bWaktu Korea\x13Waktu Standar Korea\x17Waktu Musim Panas Kore" + - "a\x0cWaktu Kosrae\x11Waktu Krasnoyarsk\x19Waktu Standar Krasnoyarsk\x1dW" + - "aktu Musim Panas Krasnoyarsk\x0fWaktu Kirghizia\x0bWaktu Lanka\x0fWaktu " + - "Kep. Line\x0fWaktu Lord Howe\x17Waktu Standar Lord Howe\x1bWaktu Musim P" + - "anas Lord Howe\x0bWaktu Makau\x13Waktu Standar Makau\x17Waktu Musim Pana" + - "s Makau\x19Waktu Kepulauan Macquarie\x0dWaktu Magadan\x15Waktu Standar M" + - "agadan\x19Waktu Musim Panas Magadan\x0eWaktu Malaysia\x0eWaktu Maladewa" + - "\x0fWaktu Marquesas\x13Waktu Kep. Marshall\x0fWaktu Mauritius\x17Waktu S" + - "tandar Mauritius\x1bWaktu Musim Panas Mauritius\x0cWaktu Mawson\x18Waktu" + - " Meksiko Barat Laut Waktu Standar Meksiko Barat Laut$Waktu Musim Panas M" + - "eksiko Barat Laut\x15Waktu Pasifik Meksiko\x1dWaktu Standar Pasifik Meks" + - "iko!Waktu Musim Panas Pasifik Meksiko\x10Waktu Ulan Bator\x18Waktu Stand" + - "ar Ulan Bator\x1cWaktu Musim Panas Ulan Bator\x0cWaktu Moskwa\x14Waktu S" + - "tandar Moskwa\x18Waktu Musim Panas Moskwa\x0dWaktu Myanmar\x0bWaktu Naur" + - "u\x0bWaktu Nepal\x14Waktu Kaledonia Baru\x1cWaktu Standar Kaledonia Baru" + - " Waktu Musim Panas Kaledonia Baru\x13Waktu Selandia Baru\x1bWaktu Standa" + - "r Selandia Baru\x1fWaktu Musim Panas Selandia Baru\x12Waktu Newfoundland" + - "\x1aWaktu Standar Newfoundland\x1eWaktu Musim Panas Newfoundland\x0aWakt" + - "u Niue\x17Waktu Kepulauan Norfolk\x19Waktu Fernando de Noronha!Waktu Sta" + - "ndar Fernando de Noronha%Waktu Musim Panas Fernando de Noronha\x18Waktu " + - "Kep. Mariana Utara\x11Waktu Novosibirsk\x19Waktu Standar Novosibirsk\x1d" + - "Waktu Musim Panas Novosibirsk\x0aWaktu Omsk\x12Waktu Standar Omsk\x16Wak" + - "tu Musim Panas Omsk\x0eWaktu Pakistan\x16Waktu Standar Pakistan\x1aWaktu" + - " Musim Panas Pakistan\x0bWaktu Palau\x12Waktu Papua Nugini\x0eWaktu Para" + - "guay\x16Waktu Standar Paraguay\x1aWaktu Musim Panas Paraguay\x0aWaktu Pe" + - "ru\x12Waktu Standar Peru\x16Waktu Musim Panas Peru\x0eWaktu Filipina\x16" + - "Waktu Standar Filipina\x1aWaktu Musim Panas Filipina\x17Waktu Kepulauan " + - "Phoenix\x1fWaktu Saint Pierre dan Miquelon'Waktu Standar Saint Pierre da" + - "n Miquelon+Waktu Musim Panas Saint Pierre dan Miquelon\x0eWaktu Pitcairn" + - "\x0cWaktu Ponape\x0fWaktu Pyongyang\x0fWaktu Qyzylorda\x17Waktu Standar " + - "Qyzylorda\x1bWaktu Musim Panas Qyzylorda\x0dWaktu Reunion\x0dWaktu Rothe" + - "ra\x0eWaktu Sakhalin\x16Waktu Standar Sakhalin\x1aWaktu Musim Panas Sakh" + - "alin\x0cWaktu Samara\x14Waktu Standar Samara\x18Waktu Musim Panas Samara" + - "\x0bWaktu Samoa\x13Waktu Standar Samoa\x17Waktu Musim Panas Samoa\x10Wak" + - "tu Seychelles\x17Waktu Standar Singapura\x17Waktu Kepulauan Solomon\x15W" + - "aktu Georgia Selatan\x0eWaktu Suriname\x0bWaktu Syowa\x0cWaktu Tahiti" + - "\x0cWaktu Taipei\x14Waktu Standar Taipei\x18Waktu Musim Panas Taipei\x10" + - "Waktu Tajikistan\x0dWaktu Tokelau\x0bWaktu Tonga\x13Waktu Standar Tonga" + - "\x17Waktu Musim Panas Tonga\x0bWaktu Chuuk\x12Waktu Turkmenistan\x1aWakt" + - "u Standar Turkmenistan\x1eWaktu Musim Panas Turkmenistan\x0cWaktu Tuvalu" + - "\x0dWaktu Uruguay\x15Waktu Standar Uruguay\x19Waktu Musim Panas Uruguay" + - "\x10Waktu Uzbekistan\x18Waktu Standar Uzbekistan\x1cWaktu Musim Panas Uz" + - "bekistan\x0dWaktu Vanuatu\x15Waktu Standar Vanuatu\x19Waktu Musim Panas " + - "Vanuatu\x0fWaktu Venezuela\x11Waktu Vladivostok\x19Waktu Standar Vladivo" + - "stok\x1dWaktu Musim Panas Vladivostok\x0fWaktu Volgograd\x17Waktu Standa" + - "r Volgograd\x1bWaktu Musim Panas Volgograd\x0cWaktu Vostok\x14Waktu Kepu" + - "lauan Wake\x17Waktu Wallis dan Futuna\x0dWaktu Yakutsk\x15Waktu Standar " + - "Yakutsk\x19Waktu Musim Panas Yakutsk\x13Waktu Yekaterinburg\x1bWaktu Sta" + - "ndar Yekaterinburg\x1fWaktu Musim Panas Yekaterinburg\x03Bal\x03Lw2\x03L" + - "w3\x03Lw4\x03Lw5\x03Lw6\x0bbulan depan\x0cSelasa depan\x0aRabu depan\x0b" + - "Sabtu depan\x0fWaktu Siang {0}\x10Waktu Piawai {0}\x12Waktu Siang Alaska" + - "\x0bWaktu Pusat\x12Waktu Siang Tengah\x11Waktu Siang Timur\x11Waktu Perg" + - "unungan\x1cWaktu Hari Siang Pergunungan\x13Waktu Siang Pasifik\x10Waktu " + - "Siang Apia\x10Waktu Siang Arab\x15Waktu Argentina Barat!Waktu Musim Pana" + - "s Argentina Barat\x14Waktu Siang Atlantik\x16Waktu Australia Tengah\x1cW" + - "aktu Siang Australia Tengah\x22Waktu Siang Barat Tengah Australia\x15Wak" + - "tu Australia Timur\x1bWaktu Siang Australia Timur\x15Waktu Australia Bar" + - "at\x1bWaktu Siang Australia Barat\x0eWaktu Brasilia\x1aWaktu Musim Panas" + - " Brasilia\x13Waktu Siang Chatham\x0bWaktu Chile\x17Waktu Musim Panas Chi" + - "le\x0bWaktu China\x11Waktu Siang China\x0eWaktu Colombia\x1aWaktu Musim " + - "Panas Colombia\x14Waktu Kepulauan Cook(Waktu Musim Panas Separuh Kepulau" + - "an Cook\x0aWaktu Cuba\x10Waktu Siang Cuba\x12Waktu Pulau Easter\x1eWaktu" + - " Musim Panas Pulau Easter\x13Waktu Eropah Tengah\x1fWaktu Musim Panas Er" + - "opah Tengah\x12Waktu Eropah Timur\x1eWaktu Musim Panas Eropah Timur\x12W" + - "aktu Eropah Barat\x1eWaktu Musim Panas Eropah Barat\x1bWaktu Siang Hawai" + - "i-Aleutian\x10Waktu Siang Iran\x12Waktu Siang Israel\x0bWaktu Jepun\x11W" + - "aktu Siang Jepun\x1eWaktu Petropavlovsk-Kamchatski\x11Waktu Siang Korea" + - "\x15Waktu Siang Lord Howe\x17Waktu Barat Laut Mexico\x1dWaktu Siang Bara" + - "t Laut Mexico\x14Waktu Pasifik Mexico\x1aWaktu Siang Pasifik Mexico\x0cW" + - "aktu Moscow\x18Waktu Musim Panas Moscow\x13Waktu New Caledonia\x1fWaktu " + - "Musim Panas New Caledonia\x11Waktu New Zealand\x17Waktu Siang New Zealan" + - "d\x18Waktu Siang Newfoundland%Waktu Siang Saint Pierre dan Miquelon\x12W" + - "aktu Siang Taipei" - -var bucket51 string = "" + // Size: 11041 bytes - "\x03Jen\x03Feb\x03Maa\x03Epr\x03Mee\x03Juu\x03Jul\x07Ọgọ\x03Sep\x05Ọkt" + - "\x03Nov\x03Dis\x0cJenụwarị\x0dFebrụwarị\x08Maachị\x05Eprel\x04Juun\x07Ju" + - "laị\x0cỌgọọst\x08Septemba\x08Ọktoba\x07Novemba\x07Disemba\x05Ụka\x05Mọn" + - "\x03Tiu\x03Wen\x07Tọọ\x06Fraị\x03Sat\x0fMbọsị Ụka\x07Mọnde\x07Tiuzdee" + - "\x08Wenezdee\x0bTọọzdee\x09Fraịdee\x09Satọdee\x04Ọ1\x04Ọ2\x04Ọ3\x04Ọ4" + - "\x09Ọkara 1\x09Ọkara 2\x09Ọkara 3\x09Ọkara 4\x04P.M.\x0bTupu Kristi\x0cA" + - "fọ Kristi\x04T.K.\x04A.K.\x04Agba\x05Afọ\x06Ọnwa\x03Izu\x0cỤbọchị\x09Nny" + - "aafụ\x05Taata\x04Echi\x10Ụbọchị izu\x1cN’ụtụtụ/N’anyasị\x07Elekere\x05Nk" + - "eji\x08Nkejinta\x0cMpaghara oge\x06ꋍꆪ\x06ꑍꆪ\x06ꌕꆪ\x06ꇖꆪ\x06ꉬꆪ\x06ꃘꆪ\x06ꏃ" + - "ꆪ\x06ꉆꆪ\x06ꈬꆪ\x06ꊰꆪ\x09ꊰꊪꆪ\x09ꊰꑋꆪ\x06ꑭꆏ\x06ꆏꋍ\x06ꆏꑍ\x06ꆏꌕ\x06ꆏꇖ\x06ꆏꉬ" + - "\x06ꆏꃘ\x03ꆏ\x03ꋍ\x03ꑍ\x03ꌕ\x03ꇖ\x03ꉬ\x03ꃘ\x09ꑭꆏꑍ\x09ꆏꊂꋍ\x09ꆏꊂꑍ\x09ꆏꊂꌕ" + - "\x09ꆏꊂꇖ\x09ꆏꊂꉬ\x09ꆏꊂꃘ\x06ꃅꑌ\x06ꃅꎸ\x06ꃅꍵ\x06ꃅꋆ\x06ꎸꄑ\x06ꁯꋒ\x09ꃅꋊꂿ\x09ꃅꋊꊂ" + - "\x06ꃅꋊ\x03ꈎ\x03ꆪ\x0cꎴꂿꋍꑍ\x09ꀋꅔꉈ\x06ꀃꑍ\x09ꃆꏂꑍ\x09ꌕꀿꑍ\x0dꎸꄑ/ꁯꋒ\x06ꄮꈉ\x03ꃏ" + - "\x03ꇙ\x0cꃅꄷꄮꈉ\x07janúar\x08febrúar\x04mars\x06apríl\x04maí\x06júní\x06jú" + - "lí\x07ágúst\x09september\x08október\x09nóvember\x08desember\x04maí\x02F1" + - "\x02F2\x02F3\x02F4\x0f1. fjórðungur\x0f2. fjórðungur\x0f3. fjórðungur" + - "\x0f4. fjórðungur\x06miðn.\x04f.h.\x05hád.\x04e.h.\x0aað morgni\x07síðd." + - "\x07að kv.\x0aað nóttu\x03mn.\x02e.\x04mrg.\x03sd.\x0amiðnætti\x07hádegi" + - "\x0asíðdegis\x0bað kvöldi\x05morg.\x05nótt\x03hd.\x07morgunn\x0deftir há" + - "degi\x06kvöld\x0bfyrir Krist\x17fyrir kristið tímatal\x0beftir Krist\x11" + - "kristið tímatal\x06f.l.t.\x04l.t.\x04f.k.\x04e.k.\x08tímabil\x11á síðast" + - "a ári\x0eá þessu ári\x0eá næsta ári\x0deftir {0} ár\x0efyrir {0} ári\x0f" + - "fyrir {0} árum\x10ársfjórðungur\x1asíðasti ársfjórðungur\x17þessi ársfjó" + - "rðungur\x17næsti ársfjórðungur\x18eftir {0} ársfjórðung\x19eftir {0} árs" + - "fjórðunga\x19fyrir {0} ársfjórðungi\x1afyrir {0} ársfjórðungum\x0cársfjó" + - "rð.\x11síðasti ársfj.\x0eþessi ársfj.\x0enæsti ársfj.\x11eftir {0} ársfj" + - ".\x11fyrir {0} ársfj.\x09mánuður\x15í síðasta mánuði\x13í þessum mánuði" + - "\x12í næsta mánuði\x11eftir {0} mánuð\x12eftir {0} mánuði\x12fyrir {0} m" + - "ánuði\x13fyrir {0} mánuðum\x12í síðasta mán.\x10í þessum mán.\x0fí næst" + - "a mán.\x0feftir {0} mán.\x0ffyrir {0} mán.\x11í síðustu viku\x10í þessar" + - "i viku\x0eí næstu viku\x0eeftir {0} viku\x0feftir {0} vikur\x0efyrir {0}" + - " viku\x0ffyrir {0} vikum\x09+{0} viku\x0a+{0} vikur\x09-{0} viku\x0a-{0}" + - " vikur\x0bí fyrradag\x07í gær\x06í dag\x09á morgun\x0eeftir tvo daga\x0d" + - "eftir {0} dag\x0eeftir {0} daga\x0efyrir {0} degi\x10fyrir {0} dögum\x08" + - "+{0} dag\x09+{0} daga\x09-{0} degi\x0b-{0} dögum\x09vikudagur\x12síðasta" + - " sunnudag\x1bsunnudagur í þessari viku\x0fnæsta sunnudag\x0esíðasti sun." + - "\x0bþessi sun.\x0bnæsta sun.\x08nk. sun.\x12síðasta mánudag\x1bmánudagur" + - " í þessari viku\x0fnæsta mánudag\x0fsíðasta mán.\x0cþessi mán.\x0cnæsta " + - "mán.\x0fsíðasti mán.\x09nk. mán.\x15síðasta þriðjudag\x1eþriðjudagur í þ" + - "essari viku\x12næsta þriðjudag\x0fsíðasti þri.\x0cþessi þri.\x12næstkoma" + - "ndi þri.\x09nk. þri.\x1fmiðvikudagur í síðustu viku\x1emiðvikudagur í þe" + - "ssari viku\x1cmiðvikudagur í næstu viku\x0fsíðasti mið.\x0cþessi mið." + - "\x12næstkomandi mið.\x09nk. mið.\x1dfimmtudagur í síðustu viku\x1cfimmtu" + - "dagur í þessari viku\x1afimmtudagur í næstu viku\x0esíðasti fim.\x0bþess" + - "i fim.\x11næstkomandi fim.\x08nk. fim.\x13síðasta föstudag\x0fá föstudag" + - "inn\x10næsta föstudag\x0fsíðasta fös.\x08á fös.\x0cnæsta fös.\x13síðasta" + - " laugardag\x0fá laugardaginn\x10næsta laugardag\x0esíðasta lau.\x07á lau" + - ".\x0bnæsta lau.\x09f.h./e.h.\x0bklukkustund\x15eftir {0} klukkustund\x17" + - "eftir {0} klukkustundir\x15fyrir {0} klukkustund\x17fyrir {0} klukkustun" + - "dum\x05klst.\x0feftir {0} klst.\x0ffyrir {0} klst.\x0a+{0} klst.\x0a-{0}" + - " klst.\x08mínúta\x12eftir {0} mínútu\x13eftir {0} mínútur\x12fyrir {0} m" + - "ínútu\x13fyrir {0} mínútum\x05mín.\x0feftir {0} mín.\x0ffyrir {0} mín." + - "\x0a+{0} mín.\x0a-{0} mín.\x08sekúnda\x05núna\x12eftir {0} sekúndu\x13ef" + - "tir {0} sekúndur\x12fyrir {0} sekúndu\x13fyrir {0} sekúndum\x0eeftir {0}" + - " sek.\x0efyrir {0} sek.\x09+{0} sek.\x09-{0} sek.\x0atímabelti\x1fSamræm" + - "dur alþjóðlegur tími\x17Sumartími í Bretlandi\x16Sumartími á Írlandi\x0f" + - "Afganistantími\x11Mið-Afríkutími\x13Austur-Afríkutími\x13Suður-Afríkutím" + - "i\x13Vestur-Afríkutími\x1eStaðaltími í Vestur-Afríku\x1cSumartími í Vest" + - "ur-Afríku\x0fTími í Alaska\x16Staðaltími í Alaska\x14Sumartími í Alaska" + - "\x0cAmasóntími Staðaltími á Amasónsvæðinu\x1eSumartími á Amasónsvæðinu+T" + - "ími í miðhluta Bandaríkjanna og Kanada2Staðaltími í miðhluta Bandaríkja" + - "nna og Kanada0Sumartími í miðhluta Bandaríkjanna og Kanada-Tími í austur" + - "hluta Bandaríkjanna og Kanada4Staðaltími í austurhluta Bandaríkjanna og " + - "Kanada2Sumartími í austurhluta Bandaríkjanna og Kanada\x17Tími í Klettaf" + - "jöllum\x1eStaðaltími í Klettafjöllum\x1cSumartími í Klettafjöllum\x1bTím" + - "i á Kyrrahafssvæðinu\x22Staðaltími á Kyrrahafssvæðinu Sumartími á Kyrrah" + - "afssvæðinu\x0fTími í Anadyr\x16Staðaltími í Anadyr\x14Sumartími í Anadyr" + - "\x0eTími í Apía\x15Staðaltími í Apía\x13Sumartími í Apía\x0cArabíutími" + - "\x17Staðaltími í Arabíu\x15Sumartími í Arabíu\x0fArgentínutími\x1aStaðal" + - "tími í Argentínu\x18Sumartími í Argentínu\x16Vestur-Argentínutími!Staðal" + - "tími í Vestur-Argentínu\x1fSumartími í Vestur-Argentínu\x0dArmeníutími" + - "\x18Staðaltími í Armeníu\x16Sumartími í Armeníu\x1dTími á Atlantshafssvæ" + - "ðinu$Staðaltími á Atlantshafssvæðinu\x22Sumartími á Atlantshafssvæðinu" + - "\x18Tími í Mið-Ástralíu\x1fStaðaltími í Mið-Ástralíu\x1dSumartími í Mið-" + - "Ástralíu#Tími í miðvesturhluta Ástralíu*Staðaltími í miðvesturhluta Ást" + - "ralíu(Sumartími í miðvesturhluta Ástralíu\x1aTími í Austur-Ástralíu!Stað" + - "altími í Austur-Ástralíu\x1fSumartími í Austur-Ástralíu\x1aTími í Vestur" + - "-Ástralíu!Staðaltími í Vestur-Ástralíu\x1fSumartími í Vestur-Ástralíu" + - "\x12Aserbaídsjantími\x1dStaðaltími í Aserbaídsjan\x1bSumartími í Aserbaí" + - "dsjan\x0eAsóreyjatími\x1aStaðaltími á Asóreyjum\x18Sumartími á Asóreyjum" + - "\x10Bangladess-tími\x1aStaðaltími í Bangladess\x18Sumartími í Bangladess" + - "\x0bBútantími\x0eBólivíutími\x0eBrasilíutími\x19Staðaltími í Brasilíu" + - "\x17Sumartími í Brasilíu\x0cBrúneitími\x15Grænhöfðaeyjatími!Staðaltími á" + - " Grænhöfðaeyjum\x1fSumartími á Grænhöfðaeyjum\x15Chamorro-staðaltími\x0d" + - "Chatham-tími\x17Staðaltími í Chatham\x15Sumartími í Chatham\x0aSíletími" + - "\x15Staðaltími í Síle\x13Sumartími í Síle\x0aKínatími\x15Staðaltími í Kí" + - "na\x13Sumartími í Kína\x13Tími í Choibalsan\x1aStaðaltími í Choibalsan" + - "\x18Sumartími í Choibalsan\x0fJólaeyjartími\x0fKókoseyjatími\x0fKólumbíu" + - "tími\x1aStaðaltími í Kólumbíu\x18Sumartími í Kólumbíu\x0fCooks-eyjatími" + - "\x1bStaðaltími á Cooks-eyjum\x1eHálfsumartími á Cooks-eyjum\x0aKúbutími" + - "\x15Staðaltími á Kúbu\x13Sumartími á Kúbu\x0bDavis-tími\x1bTími á Dumont" + - "-d’Urville\x17Tíminn á Tímor-Leste\x0fPáskaeyjutími\x1aStaðaltími á Pásk" + - "aeyju\x18Sumartími á Páskaeyju\x0cEkvadortími\x11Mið-Evróputími\x1cStaða" + - "ltími í Mið-Evrópu\x1aSumartími í Mið-Evrópu\x13Austur-Evróputími\x1eSta" + - "ðaltími í Austur-Evrópu\x1cSumartími í Austur-Evrópu\x1aStaðartími Kalí" + - "níngrad\x13Vestur-Evróputími\x1eStaðaltími í Vestur-Evrópu\x1cSumartími " + - "í Vestur-Evrópu\x12Falklandseyjatími\x1eStaðaltími á Falklandseyjum\x1c" + - "Sumartími á Falklandseyjum\x10Fídjíeyjatími\x1cStaðaltími á Fídjíeyjum" + - "\x1aSumartími á Fídjíeyjum\x1aTími í Frönsku Gvæjana@Tími á frönsku suðu" + - "rhafssvæðum og Suðurskautslandssvæði\x0fGalapagos-tími\x0dGambier-tími" + - "\x0dGeorgíutími\x18Staðaltími í Georgíu\x16Sumartími í Georgíu\x16Tími á" + - " Gilbert-eyjum\x16Greenwich-staðaltími\x16Austur-Grænlandstími!Staðaltím" + - "i á Austur-Grænlandi\x1fSumartími á Austur-Grænlandi\x16Vestur-Grænlands" + - "tími!Staðaltími á Vestur-Grænlandi\x1fSumartími á Vestur-Grænlandi\x1cSt" + - "aðaltími við Persaflóa\x0dGvæjanatími\x1aTími á Havaí og Aleúta!Staðaltí" + - "mi á Havaí og Aleúta\x1fSumartími á Havaí og Aleúta\x0fHong Kong-tími" + - "\x19Staðaltími í Hong Kong\x17Sumartími í Hong Kong\x0aHovd-tími\x14Stað" + - "altími í Hovd\x12Sumartími í Hovd\x0dIndlandstími\x11Indlandshafstími" + - "\x0fIndókínatími\x15Mið-Indónesíutími\x17Austur-Indónesíutími\x17Vestur-" + - "Indónesíutími\x0bÍranstími\x15Staðaltími í Íran\x13Sumartími í Íran\x10T" + - "ími í Irkutsk\x17Staðaltími í Irkutsk\x15Sumartími í Irkutsk\x0dÍsraels" + - "tími\x17Staðaltími í Ísrael\x15Sumartími í Ísrael\x0bJapanstími\x15Staða" + - "ltími í Japan\x13Sumartími í Japan!Tími í Petropavlovsk-Kamchatski(Staða" + - "ltími í Petropavlovsk-Kamchatski&Sumartími í Petropavlovsk-Kamchatski" + - "\x19Tími í Austur-Kasakstan\x19Tími í Vestur-Kasakstan\x0bKóreutími\x16S" + - "taðaltími í Kóreu\x14Sumartími í Kóreu\x0cKosrae-tími\x14Tími í Krasnoya" + - "rsk\x1bStaðaltími í Krasnoyarsk\x19Sumartími í Krasnoyarsk\x0fKirgistan-" + - "tími\x0fLínueyja-tími\x17Tími á Lord Howe-eyju\x1eStaðaltími á Lord Howe" + - "-eyju\x1cSumartími á Lord Howe-eyju\x14Macquarie-eyjartími\x10Tími í Mag" + - "adan\x17Staðaltími í Magadan\x15Sumartími í Magadan\x0dMalasíutími\x11Ma" + - "ldíveyja-tími\x1dTími á Markgreifafrúreyjum\x17Tími á Marshall-eyjum\x0f" + - "Máritíustími\x1aStaðaltími á Máritíus\x18Sumartími á Máritíus\x0cMawson-" + - "tími\x1dTími í Norðvestur-Mexíkó$Staðaltími í Norðvestur-Mexíkó\x22Sumar" + - "tími í Norðvestur-Mexíkó\x1aKyrrahafstími í Mexíkó.Staðaltími í Mexíkó á" + - " Kyrrahafssvæðinu,Sumartími í Mexíkó á Kyrrahafssvæðinu\x14Tími í Úlan B" + - "ator\x1bStaðaltími í Úlan Bator\x19Sumartími í Úlan Bator\x0bMoskvutími" + - "\x16Staðaltími í Moskvu\x14Sumartími í Moskvu\x0dMjanmar-tími\x0cNárú-tí" + - "mi\x0aNepaltími\x1aTími í Nýju-Kaledóníu!Staðaltími í Nýju-Kaledóníu\x1f" + - "Sumartími í Nýju-Kaledóníu\x18Tími á Nýja-Sjálandi\x1fStaðaltími á Nýja-" + - "Sjálandi\x1dSumartími á Nýja-Sjálandi\x17Tími á Nýfundnalandi\x1eStaðalt" + - "ími á Nýfundnalandi\x1cSumartími á Nýfundnalandi\x0aNiue-tími\x15Tími á" + - " Norfolk-eyju\x1cTími í Fernando de Noronha#Staðaltími í Fernando de Nor" + - "onha!Sumartími í Fernando de Noronha\x14Tími í Novosibirsk\x1bStaðaltími" + - " í Novosibirsk\x19Sumartími í Novosibirsk\x0fTíminn í Omsk\x14Staðaltími" + - " í Omsk\x12Sumartími í Omsk\x0dPakistantími\x18Staðaltími í Pakistan\x16" + - "Sumartími í Pakistan\x0aPalátími\x1cTími á Papúa Nýju-Gíneu\x0dParagvætí" + - "mi\x18Staðaltími í Paragvæ\x16Sumartími í Paragvæ\x0aPerútími\x15Staðalt" + - "ími í Perú\x13Sumartími í Perú\x10Filippseyjatími\x1cStaðaltími á Filip" + - "pseyjum\x1aSumartími á Filippseyjum\x0fFönixeyjatími\x22Tími á Sankti Pi" + - "erre og Miquelon)Staðaltími á Sankti Pierre og Miquelon'Sumartími á Sank" + - "ti Pierre og Miquelon\x0ePitcairn-tími\x0cPonape-tími\x0eRéunion-tími" + - "\x0dRothera-tími\x11Tími í Sakhalin\x18Staðaltími í Sakhalin\x16Sumartím" + - "i í Sakhalin\x0fTími í Samara\x16Staðaltími í Samara\x14Sumartími í Sama" + - "ra\x0cSamóa-tími\x16Staðaltími á Samóa\x14Sumartími á Samóa\x14Seychelle" + - "s-eyjatími\x0eSingapúrtími\x12Salómonseyjatími\x14Suður-Georgíutími\x0dS" + - "úrinamtími\x0bSyowa-tími\x0eTahítí-tími\x0cTaipei-tími\x16Staðaltími í " + - "Taipei\x14Sumartími í Taipei\x13Tadsjíkistan-tími\x0eTókelá-tími\x0aTong" + - "atími\x15Staðaltími á Tonga\x13Sumartími á Tonga\x0bChuuk-tími\x13Túrkme" + - "nistan-tími\x1dStaðaltími í Túrkmenistan\x1bSumartími í Túrkmenistan\x0d" + - "Túvalútími\x0eÚrúgvætími\x19Staðaltími í Úrúgvæ\x17Sumartími í Úrúgvæ" + - "\x11Úsbekistan-tími\x1bStaðaltími í Úsbekistan\x19Sumartími í Úsbekistan" + - "\x0fVanúatú-tími\x19Staðaltími á Vanúatú\x17Sumartími á Vanúatú\x0fVenes" + - "úelatími\x14Tími í Vladivostok\x1bStaðaltími í Vladivostok\x19Sumartími" + - " í Vladivostok\x12Tími í Volgograd\x19Staðaltími í Volgograd\x17Sumartím" + - "i í Volgograd\x0cVostok-tími\x12Tími á Wake-eyju!Tími á Wallis- og Fútún" + - "aeyjum\x12Tíminn í Yakutsk\x17Staðaltími í Yakutsk\x15Sumartími í Yakuts" + - "k\x16Tími í Yekaterinburg\x1dStaðaltími í Yekaterinborg\x1bSumartími í Y" + - "ekaterinburg\x03Hor\x04Mär\x03Abr\x03Mei\x04Brá\x03Hei\x04Öig\x03Her\x04" + - "Wím\x03Win\x03Chr" - -var bucket52 string = "" + // Size: 10755 bytes - "\x09dd MMMM U\x08dd MMM U\x0e{1} 'alle' {0}\x07gennaio\x08febbraio\x05ma" + - "rzo\x06aprile\x06maggio\x06giugno\x06luglio\x06agosto\x09settembre\x07ot" + - "tobre\x08novembre\x08dicembre\x08domenica\x07lunedì\x08martedì\x0amercol" + - "edì\x08giovedì\x08venerdì\x06sabato\x0d1º trimestre\x0d2º trimestre\x0d3" + - "º trimestre\x0d4º trimestre\x0amezzanotte\x0bmezzogiorno\x0adi mattina" + - "\x0edel pomeriggio\x07di sera\x08di notte\x07mattina\x0apomeriggio\x04se" + - "ra\x05notte\x0davanti Cristo\x12avanti Era Volgare\x0bdopo Cristo\x0bEra" + - " Volgare\x06a.E.V.\x04E.V.\x0fPrima di R.O.C.\x06Minguo\x04anno\x0banno " + - "scorso\x0cquest’anno\x0danno prossimo\x0ctra {0} anno\x0ctra {0} anni" + - "\x0b{0} anno fa\x0b{0} anni fa\x10trimestre scorso\x10questo trimestre" + - "\x12trimestre prossimo\x11tra {0} trimestre\x11tra {0} trimestri\x10{0} " + - "trimestre fa\x10{0} trimestri fa\x0ctrim. scorso\x0cquesto trim.\x0etrim" + - ". prossimo\x0dtra {0} trim.\x0c{0} trim. fa\x04mese\x0bmese scorso\x0bqu" + - "esto mese\x0dmese prossimo\x0ctra {0} mese\x0ctra {0} mesi\x0b{0} mese f" + - "a\x0b{0} mesi fa\x09settimana\x10settimana scorsa\x10questa settimana" + - "\x12settimana prossima\x11tra {0} settimana\x11tra {0} settimane\x10{0} " + - "settimana fa\x10{0} settimane fa\x14la settimana del {0}\x05sett.\x0dtra" + - " {0} sett.\x0c{0} sett. fa\x06giorno\x0el’altro ieri\x04ieri\x04oggi\x06" + - "domani\x0adopodomani\x0etra {0} giorno\x0etra {0} giorni\x0d{0} giorno f" + - "a\x0d{0} giorni fa\x09tra {0} g\x0atra {0} gg\x08{0} g fa\x09{0} gg fa" + - "\x16giorno della settimana\x0fdomenica scorsa\x0fquesta domenica\x11dome" + - "nica prossima\x10tra {0} domenica\x11tra {0} domeniche\x0f{0} domenica f" + - "a\x10{0} domeniche fa\x0bdom. scorsa\x0bquesta dom.\x0ddom. prossima\x0c" + - "tra {0} dom.\x0b{0} dom. fa\x09do scorsa\x09questa do\x0bdo prossima\x0b" + - "tra {0} do.\x0a{0} do. fa\x0elunedì scorso\x0equesto lunedì\x10lunedì pr" + - "ossimo\x0ftra {0} lunedì\x0e{0} lunedì fa\x0blun. scorso\x0bquesto lun." + - "\x0dlun. prossimo\x0ctra {0} lun.\x0b{0} lun. fa\x09lu scorso\x09questo " + - "lu\x0blu prossimo\x0btra {0} lu.\x0a{0} lu. fa\x0fmartedì scorso\x0fques" + - "to martedì\x11martedì prossimo\x10tra {0} martedì\x0f{0} martedì fa\x0bm" + - "ar. scorso\x0bquesto mar.\x0dmar. prossimo\x0ctra {0} mar.\x0b{0} mar. f" + - "a\x09ma scorso\x09questo ma\x0bma prossimo\x0btra {0} ma.\x0a{0} ma. fa" + - "\x11mercoledì scorso\x11questo mercoledì\x13mercoledì prossimo\x12tra {0" + - "} mercoledì\x11{0} mercoledì fa\x0bmer. scorso\x0bquesto mer.\x0dmer. pr" + - "ossimo\x0ctra {0} mer.\x0b{0} mer. fa\x09me scorso\x09questo me\x0bme pr" + - "ossimo\x0btra {0} me.\x0a{0} me. fa\x0fgiovedì scorso\x0fquesto giovedì" + - "\x11giovedì prossimo\x10tra {0} giovedì\x0f{0} giovedì fa\x0bgio. scorso" + - "\x0bquesto gio.\x0dgio. prossimo\x0ctra {0} gio.\x0b{0} gio. fa\x09gi sc" + - "orso\x09questo gi\x0bgi prossimo\x0btra {0} gi.\x0a{0} gi. fa\x0fvenerdì" + - " scorso\x0fquesto venerdì\x11venerdì prossimo\x10tra {0} venerdì\x0f{0} " + - "venerdì fa\x0bven. scorso\x0bquesto ven.\x0dven. prossimo\x0ctra {0} ven" + - ".\x0b{0} ven. fa\x09ve scorso\x09questo ve\x0bve prossimo\x0btra {0} ve." + - "\x0a{0} ve. fa\x0dsabato scorso\x0dquesto sabato\x0fsabato prossimo\x0et" + - "ra {0} sabato\x0etra {0} sabati\x0d{0} sabato fa\x0d{0} sabati fa\x0bsab" + - ". scorso\x0bquesto sab.\x0dsab. prossimo\x0ctra {0} sab.\x0b{0} sab. fa" + - "\x09sa scorso\x09questo sa\x0bsa prossimo\x0btra {0} sa.\x0a{0} sa. fa" + - "\x03ora\x0bquest’ora\x0btra {0} ora\x0btra {0} ore\x0a{0} ora fa\x0a{0} " + - "ore fa\x0atra {0} h.\x09{0} h. fa\x09tra {0} h\x08{0} h fa\x0dquesto min" + - "uto\x0etra {0} minuto\x0etra {0} minuti\x0d{0} minuto fa\x0d{0} minuti f" + - "a\x0ctra {0} min.\x0b{0} min. fa\x0btra {0} min\x0a{0} min fa\x07secondo" + - "\x0ftra {0} secondo\x0ftra {0} secondi\x0e{0} secondo fa\x0e{0} secondi " + - "fa\x0ctra {0} sec.\x0b{0} sec. fa\x09tra {0} s\x08{0} s fa\x0bfuso orari" + - "o\x07Ora {0}\x0fOra legale: {0}\x11Ora standard: {0}\x1bTempo coordinato" + - " universale\x1aOra legale del Regno Unito\x19Ora legale dell’Irlanda\x16" + - "Ora dell’Afghanistan\x1aOra dell’Africa centrale\x1bOra dell’Africa orie" + - "ntale\x1dOra dell’Africa meridionale\x1dOra dell’Africa occidentale&Ora " + - "standard dell’Africa occidentale$Ora legale dell’Africa occidentale\x11O" + - "ra dell’Alaska\x1aOra standard dell’Alaska\x18Ora legale dell’Alaska\x14" + - "Ora dell’Amazzonia\x1dOra standard dell’Amazzonia\x1bOra legale dell’Ama" + - "zzonia\x10Ora centrale USA\x19Ora standard centrale USA\x17Ora legale ce" + - "ntrale USA\x11Ora orientale USA\x1aOra standard orientale USA\x18Ora leg" + - "ale orientale USA\x19Ora Montagne Rocciose USA\x22Ora standard Montagne " + - "Rocciose USA Ora legale Montagne Rocciose USA\x14Ora del Pacifico USA" + - "\x1dOra standard del Pacifico USA\x1bOra legale del Pacifico USA\x0dOra " + - "di Anadyr\x16Ora standard di Anadyr\x14Ora legale di Anadyr\x0bOra di Ap" + - "ia\x14Ora standard di Apia\x12Ora legale di Apia\x09Ora araba\x12Ora sta" + - "ndard araba\x10Ora legale araba\x14Ora dell’Argentina\x1dOra standard de" + - "ll’Argentina\x1bOra legale dell’Argentina Ora dell’Argentina occidentale" + - ")Ora standard dell’Argentina occidentale'Ora legale dell’Argentina occid" + - "entale\x12Ora dell’Armenia\x1bOra standard dell’Armenia\x19Ora legale de" + - "ll’Armenia\x14Ora dell’Atlantico\x1dOra standard dell’Atlantico\x1bOra l" + - "egale dell’Atlantico\x1dOra dell’Australia centrale&Ora standard dell’Au" + - "stralia centrale$Ora legale dell’Australia centrale%Ora dell’Australia c" + - "entroccidentale.Ora standard dell’Australia centroccidentale,Ora legale " + - "dell’Australia centroccidentale\x1eOra dell’Australia orientale'Ora stan" + - "dard dell’Australia orientale%Ora legale dell’Australia orientale Ora de" + - "ll’Australia occidentale)Ora standard dell’Australia occidentale'Ora leg" + - "ale dell’Australia occidentale\x16Ora dell’Azerbaigian\x1fOra standard d" + - "ell’Azerbaigian\x1dOra legale dell’Azerbaigian\x11Ora delle Azzorre\x1aO" + - "ra standard delle Azzorre\x18Ora legale delle Azzorre\x12Ora del Banglad" + - "esh\x1bOra standard del Bangladesh\x19Ora legale del Bangladesh\x0eOra d" + - "el Bhutan\x11Ora della Bolivia\x0fOra di Brasilia\x18Ora standard di Bra" + - "silia\x16Ora legale di Brasilia\x19Ora del Brunei Darussalam\x11Ora di C" + - "apo Verde\x1aOra standard di Capo Verde\x18Ora legale di Capo Verde\x0fO" + - "ra di Chamorro\x11Ora delle Chatham\x1aOra standard delle Chatham\x18Ora" + - " legale delle Chatham\x0cOra del Cile\x15Ora standard del Cile\x13Ora le" + - "gale del Cile\x0eOra della Cina\x17Ora standard della Cina\x15Ora legale" + - " della Cina\x11Ora di Choibalsan\x1aOra standard di Choibalsan\x18Ora le" + - "gale di Choibalsan\x1aOra dell’Isola Christmas\x15Ora delle Isole Cocos" + - "\x12Ora della Colombia\x1bOra standard della Colombia\x19Ora legale dell" + - "a Colombia\x14Ora delle isole Cook\x1dOra standard delle isole Cook!Ora " + - "legale media delle isole Cook\x0bOra di Cuba\x14Ora standard di Cuba\x12" + - "Ora legale di Cuba\x0cOra di Davis\x19Ora di Dumont-d’Urville\x10Ora di " + - "Timor Est\x1aOra dell’Isola di Pasqua#Ora standard dell’Isola di Pasqua!" + - "Ora legale dell’Isola di Pasqua\x12Ora dell’Ecuador\x1aOra dell’Europa c" + - "entrale#Ora standard dell’Europa centrale!Ora legale dell’Europa central" + - "e\x1bOra dell’Europa orientale$Ora standard dell’Europa orientale\x22Ora" + - " legale dell’Europa orientale)Ora dell’Europa orientale (Kaliningrad)" + - "\x1dOra dell’Europa occidentale&Ora standard dell’Europa occidentale$Ora" + - " legale dell’Europa occidentale\x18Ora delle Isole Falkland!Ora standard" + - " delle Isole Falkland\x1fOra legale delle Isole Falkland\x0eOra delle Fi" + - "gi\x17Ora standard delle Figi\x15Ora legale delle Figi\x19Ora della Guia" + - "na francese.Ora delle Terre australi e antartiche francesi\x13Ora delle " + - "Galapagos\x0eOra di Gambier\x11Ora della Georgia\x1aOra standard della G" + - "eorgia\x18Ora legale della Georgia\x17Ora delle isole Gilbert\x1eOra del" + - " meridiano di Greenwich\x1fOra della Groenlandia orientale(Ora standard " + - "della Groenlandia orientale&Ora legale della Groenlandia orientale!Ora d" + - "ella Groenlandia occidentale*Ora standard della Groenlandia occidentale(" + - "Ora legale della Groenlandia occidentale\x0dOra del Golfo\x10Ora della G" + - "uyana\x1fOra delle isole Hawaii-Aleutine(Ora standard delle Isole Hawaii" + - "-Aleutine&Ora legale delle Isole Hawaii-Aleutine\x10Ora di Hong Kong\x19" + - "Ora standard di Hong Kong\x17Ora legale di Hong Kong\x0bOra di Hovd\x14O" + - "ra standard di Hovd\x12Ora legale di Hovd\x19Ora standard dell’India\x19" + - "Ora dell’Oceano Indiano\x13Ora dell’Indocina\x1dOra dell’Indonesia centr" + - "ale\x1eOra dell’Indonesia orientale Ora dell’Indonesia occidentale\x0fOr" + - "a dell’Iran\x18Ora standard dell’Iran\x16Ora legale dell’Iran\x0eOra di " + - "Irkutsk\x17Ora standard di Irkutsk\x15Ora legale di Irkutsk\x0eOra di Is" + - "raele\x17Ora standard di Israele\x15Ora legale di Israele\x10Ora del Gia" + - "ppone\x19Ora standard del Giappone\x17Ora legale del Giappone\x1fOra di " + - "Petropavlovsk-Kamchatski(Ora standard di Petropavlovsk-Kamchatski&Ora le" + - "gale di Petropavlovsk-Kamchatski\x1cOra del Kazakistan orientale\x1eOra " + - "del Kazakistan occidentale\x0bOra coreana\x14Ora standard coreana\x12Ora" + - " legale coreana\x0eOra del Kosrae\x12Ora di Krasnoyarsk\x1bOra standard " + - "di Krasnoyarsk\x19Ora legale di Krasnoyarsk\x14Ora del Kirghizistan\x1dO" + - "ra delle Sporadi equatoriali\x10Ora di Lord Howe\x19Ora standard di Lord" + - " Howe\x17Ora legale di Lord Howe\x1aOra dell’Isola Macquarie\x0eOra di M" + - "agadan\x17Ora standard di Magadan\x15Ora legale di Magadan\x11Ora della " + - "Malesia\x11Ora delle Maldive\x12Ora delle Marchesi\x18Ora delle Isole Ma" + - "rshall\x13Ora delle Mauritius\x1cOra standard delle Mauritius\x1aOra leg" + - "ale delle Mauritius\x0dOra di Mawson Ora del Messico nord-occidentale)Or" + - "a standard del Messico nord-occidentale'Ora legale del Messico nord-occi" + - "dentale\x1aOra del Pacifico (Messico)#Ora standard del Pacifico (Messico" + - ")!Ora legale del Pacifico (Messico)\x11Ora di Ulan Bator\x1aOra standard" + - " di Ulan Bator\x18Ora legale di Ulan Bator\x0cOra di Mosca\x15Ora standa" + - "rd di Mosca\x13Ora legale di Mosca\x12Ora della Birmania\x0cOra di Nauru" + - "\x0dOra del Nepal\x19Ora della Nuova Caledonia\x22Ora standard della Nuo" + - "va Caledonia Ora legale della Nuova Caledonia\x17Ora della Nuova Zelanda" + - " Ora standard della Nuova Zelanda\x1eOra legale della Nuova Zelanda\x10O" + - "ra di Terranova\x19Ora standard di Terranova\x17Ora legale di Terranova" + - "\x0bOra di Niue\x17Ora delle Isole Norfolk\x1aOra di Fernando de Noronha" + - "#Ora standard di Fernando de Noronha!Ora legale di Fernando de Noronha" + - "\x12Ora di Novosibirsk\x1bOra standard di Novosibirsk\x19Ora legale di N" + - "ovosibirsk\x0bOra di Omsk\x14Ora standard di Omsk\x12Ora legale di Omsk" + - "\x10Ora del Pakistan\x19Ora standard del Pakistan\x17Ora legale del Paki" + - "stan\x0cOra di Palau\x1cOra della Papua Nuova Guinea\x10Ora del Paraguay" + - "\x19Ora standard del Paraguay\x17Ora legale del Paraguay\x0dOra del Perù" + - "\x16Ora standard del Perù\x14Ora legale del Perù\x13Ora delle Filippine" + - "\x1cOra standard delle Filippine\x1aOra legale delle Filippine\x1cOra de" + - "lle Isole della Fenice\x1eOra di Saint-Pierre e Miquelon'Ora standard di" + - " Saint-Pierre e Miquelon%Ora legale di Saint-Pierre e Miquelon\x12Ora de" + - "lle Pitcairn\x0eOra di Pohnpei\x10Ora di Pyongyang\x0fOra di Riunione" + - "\x0eOra di Rothera\x0fOra di Sakhalin\x18Ora standard di Sakhalin\x16Ora" + - " legale di Sakhalin\x0dOra di Samara\x16Ora standard di Samara\x14Ora le" + - "gale di Samara\x0cOra di Samoa\x15Ora standard di Samoa\x13Ora legale di" + - " Samoa\x14Ora delle Seychelles\x10Ora di Singapore\x18Ora delle Isole Sa" + - "lomone\x19Ora della Georgia del Sud\x10Ora del Suriname\x0cOra di Syowa" + - "\x0dOra di Tahiti\x0dOra di Taipei\x16Ora standard di Taipei\x14Ora lega" + - "le di Taipei\x12Ora del Tagikistan\x0eOra di Tokelau\x0cOra di Tonga\x15" + - "Ora standard di Tonga\x13Ora legale di Tonga\x0dOra del Chuuk\x14Ora del" + - " Turkmenistan\x1dOra standard del Turkmenistan\x1bOra legale del Turkmen" + - "istan\x0dOra di Tuvalu\x12Ora dell’Uruguay\x1bOra standard dell’Uruguay" + - "\x19Ora legale dell’Uruguay\x15Ora dell’Uzbekistan\x1eOra standard dell’" + - "Uzbekistan\x1cOra legale dell’Uzbekistan\x0fOra del Vanuatu\x18Ora stand" + - "ard del Vanuatu\x16Ora legale del Vanuatu\x11Ora del Venezuela\x12Ora di" + - " Vladivostok\x1bOra standard di Vladivostok\x19Ora legale di Vladivostok" + - "\x10Ora di Volgograd\x19Ora standard di Volgograd\x17Ora legale di Volgo" + - "grad\x0dOra di Vostok\x18Ora dell’Isola di Wake\x16Ora di Wallis e Futun" + - "a\x0eOra di Yakutsk\x17Ora standard di Yakutsk\x15Ora legale di Yakutsk" + - "\x13Ora di Ekaterinburg\x1cOra standard di Ekaterinburg\x1aOra legale di" + - " Ekaterinburg" - -var bucket53 string = "" + // Size: 16015 bytes - "\x06仏暦\x14GGGGy年M月d日EEEE\x10GGGGy年M月d日\x08Gy/MM/dd\x06正月\x06二月\x06三月\x06" + - "四月\x06五月\x06六月\x06七月\x06八月\x06九月\x06十月\x09十一月\x09十二月\x03正\x03二\x03三" + - "\x03四\x03五\x03六\x03七\x03八\x03九\x03十\x06十一\x06十二\x06閏{0}\x03子\x03丑\x03寅" + - "\x03卯\x03辰\x03巳\x03午\x03未\x03申\x03酉\x03戌\x03亥\x06立春\x06雨水\x06啓蟄\x06春分" + - "\x06清明\x06穀雨\x06立夏\x06小満\x06芒種\x06夏至\x06小暑\x06大暑\x06立秋\x06処暑\x06白露\x06秋分" + - "\x06寒露\x06霜降\x06立冬\x06小雪\x06大雪\x06冬至\x06小寒\x06大寒\x06甲子\x06乙丑\x06丙寅\x06丁卯" + - "\x06戊辰\x06己巳\x06庚午\x06辛未\x06壬申\x06癸酉\x06甲戌\x06乙亥\x06丙子\x06丁丑\x06戊寅\x06己卯" + - "\x06庚辰\x06辛巳\x06壬午\x06癸未\x06甲申\x06乙酉\x06丙戌\x06丁亥\x06戊子\x06己丑\x06庚寅\x06辛卯" + - "\x06壬辰\x06癸巳\x06甲午\x06乙未\x06丙申\x06丁酉\x06戊戌\x06己亥\x06庚子\x06辛丑\x06壬寅\x06癸卯" + - "\x06甲辰\x06乙巳\x06丙午\x06丁未\x06戊申\x06己酉\x06庚戌\x06辛亥\x06壬子\x06癸丑\x06甲寅\x06乙卯" + - "\x06丙辰\x06丁巳\x06戊午\x06己未\x06庚申\x06辛酉\x06壬戌\x06癸亥\x03鼠\x03牛\x03虎\x03兎\x03" + - "竜\x03蛇\x03馬\x03羊\x03猿\x03鶏\x03犬\x03猪\x0fU年MMMd日EEEE\x0bU年MMMd日\x05U-M-" + - "d\x09トウト\x06ババ\x0cハトール\x0cキアック\x09トーバ\x0fアムシール\x12バラムハート\x0fバラモウダ\x0fバシャ" + - "ンス\x0cパオーナ\x0cエペープ\x09メスラ\x09ナシエ\x0fメスケレム\x0cテケムト\x09ヘダル\x0cターサス\x06テル" + - "\x12イェカティト\x0cメガビト\x0cミアジア\x0cゲンボト\x06セネ\x09ハムレ\x0cネハッセ\x0cパグメン\x13Gy年M月" + - "d日(EEEE)\x0dGy年M月d日\x06Gy/M/d\x041月\x042月\x043月\x044月\x045月\x046月\x047月" + - "\x048月\x049月\x0510月\x0511月\x0512月\x03日\x03月\x03火\x03水\x03木\x03金\x03土\x09" + - "日曜日\x09月曜日\x09火曜日\x09水曜日\x09木曜日\x09金曜日\x09土曜日\x0d第1四半期\x0d第2四半期\x0d第3四" + - "半期\x0d第4四半期\x09真夜中\x06午前\x06正午\x06午後\x03朝\x03昼\x06夕方\x03夜\x06夜中\x09紀元前" + - "\x0f西暦紀元前\x06西暦\x0c西暦紀元\x10y年M月d日EEEE\x0cy年M月d日\x13H時mm分ss秒 zzzz\x0cティスレ" + - "\x0cへシボン\x0cキスレブ\x0cテベット\x0cシバット\x0bアダル I\x09アダル\x0cアダル II\x09ニサン\x09イヤル" + - "\x09シバン\x09タムズ\x06アヴ\x09エルル\x11Gy年M月d日EEEE\x0cカイトラ\x0fヴァイサカ\x0fジャイスタ\x0c" + - "アーサダ\x0cスラバナ\x0cバードラ\x0cアスビナ\x0fカルディカ\x12アヴラハヤナ\x09パウサ\x09マーガ\x0cパルグナ" + - "\x06サカ\x0fムハッラム\x0cサフアル!ラビー・ウル・アウワル!ラビー・ウッ・サーニー!ジュマーダル・アウワル\x1eジュマーダッサーニ" + - "ー\x0cラジャブ\x12シャアバーン\x0fラマダーン\x12シャウワール\x12ズル・カイダ\x15ズル・ヒッジャ\x06大化\x06白" + - "雉\x06白鳯\x06朱鳥\x06大宝\x06慶雲\x06和銅\x06霊亀\x06養老\x06神亀\x06天平\x0c天平感宝\x0c天平勝" + - "宝\x0c天平宝字\x0c天平神護\x0c神護景雲\x06宝亀\x06天応\x06延暦\x06大同\x06弘仁\x06天長\x06承和" + - "\x06嘉祥\x06仁寿\x06斉衡\x06天安\x06貞観\x06元慶\x06仁和\x06寛平\x06昌泰\x06延喜\x06延長\x06承平" + - "\x06天慶\x06天暦\x06天徳\x06応和\x06康保\x06安和\x06天禄\x06天延\x06貞元\x06天元\x06永観\x06寛和" + - "\x06永延\x06永祚\x06正暦\x06長徳\x06長保\x06寛弘\x06長和\x06寛仁\x06治安\x06万寿\x06長元\x06長暦" + - "\x06長久\x06寛徳\x06永承\x06天喜\x06康平\x06治暦\x06延久\x06承保\x06承暦\x06永保\x06応徳\x06寛治" + - "\x06嘉保\x06永長\x06承徳\x06康和\x06長治\x06嘉承\x06天仁\x06天永\x06永久\x06元永\x06保安\x06天治" + - "\x06大治\x06天承\x06長承\x06保延\x06永治\x06康治\x06天養\x06久安\x06仁平\x06久寿\x06保元\x06平治" + - "\x06永暦\x06応保\x06長寛\x06永万\x06仁安\x06嘉応\x06承安\x06安元\x06治承\x06養和\x06寿永\x06元暦" + - "\x06文治\x06建久\x06正治\x06建仁\x06元久\x06建永\x06承元\x06建暦\x06建保\x06承久\x06貞応\x06元仁" + - "\x06嘉禄\x06安貞\x06寛喜\x06貞永\x06天福\x06文暦\x06嘉禎\x06暦仁\x06延応\x06仁治\x06寛元\x06宝治" + - "\x06建長\x06康元\x06正嘉\x06正元\x06文応\x06弘長\x06文永\x06建治\x06弘安\x06正応\x06永仁\x06正安" + - "\x06乾元\x06嘉元\x06徳治\x06延慶\x06応長\x06正和\x06文保\x06元応\x06元亨\x06正中\x06嘉暦\x06元徳" + - "\x06元弘\x06建武\x06延元\x06興国\x06正平\x06建徳\x06文中\x06天授\x06康暦\x06弘和\x06元中\x06至徳" + - "\x06嘉慶\x06康応\x06明徳\x06応永\x06正長\x06永享\x06嘉吉\x06文安\x06宝徳\x06享徳\x06康正\x06長禄" + - "\x06寛正\x06文正\x06応仁\x06文明\x06長享\x06延徳\x06明応\x06文亀\x06永正\x06大永\x06享禄\x06天文" + - "\x06弘治\x06永禄\x06元亀\x06天正\x06文禄\x06慶長\x06元和\x06寛永\x06正保\x06慶安\x06承応\x06明暦" + - "\x06万治\x06寛文\x06延宝\x06天和\x06貞享\x06元禄\x06宝永\x06正徳\x06享保\x06元文\x06寛保\x06延享" + - "\x06寛延\x06宝暦\x06明和\x06安永\x06天明\x06寛政\x06享和\x06文化\x06文政\x06天保\x06弘化\x06嘉永" + - "\x06安政\x06万延\x06文久\x06元治\x06慶応\x06明治\x06大正\x06昭和\x06平成\x01M\x01T\x01S" + - "\x01H\x0aGGGGGy/M/d\x1eファルヴァルディーン\x1eオルディーベヘシュト\x0fホルダード\x0cティール\x0fモルダー" + - "ド\x18シャハリーヴァル\x09メフル\x0fアーバーン\x0cアーザル\x06デイ\x0cバフマン\x12エスファンド\x09民国前" + - "\x06民国\x06時代\x03年\x06昨年\x06今年\x06翌年\x0a{0} 年後\x0a{0} 年前\x09{0}年後\x09{0}年" + - "前\x09四半期\x0c前四半期\x0c今四半期\x0c翌四半期\x10{0} 四半期後\x10{0} 四半期前\x0f{0}四半期後" + - "\x0f{0}四半期前\x06先月\x06今月\x06翌月\x0d{0} か月後\x0d{0} か月前\x0c{0}か月後\x0c{0}か月前" + - "\x03週\x06先週\x06今週\x06翌週\x0d{0} 週間後\x0d{0} 週間前\x0d{0} 日の週\x0c{0}週間後\x0c{0" + - "}週間前\x0c{0}日の週\x09一昨日\x06昨日\x06今日\x06明日\x09明後日\x0a{0} 日後\x0a{0} 日前\x09{0" + - "}日後\x09{0}日前\x06曜日\x12先週の日曜日\x12今週の日曜日\x12来週の日曜日\x16{0} 個後の日曜日\x16{0} 個前" + - "の日曜日\x0f先週の日曜\x0f今週の日曜\x0f来週の日曜\x13{0} 個後の日曜\x13{0} 個前の日曜\x12{0}個後の日曜" + - "\x12{0}個前の日曜\x12先週の月曜日\x12今週の月曜日\x12来週の月曜日\x16{0} 個後の月曜日\x16{0} 個前の月曜日" + - "\x0f先週の月曜\x0f今週の月曜\x0f来週の月曜\x13{0} 個後の月曜\x13{0} 個前の月曜\x12{0}個後の月曜\x12{0}" + - "個前の月曜\x12先週の火曜日\x12今週の火曜日\x12来週の火曜日\x16{0} 個後の火曜日\x16{0} 個前の火曜日\x0f先週の" + - "火曜\x0f今週の火曜\x0f来週の火曜\x13{0} 個後の火曜\x13{0} 個前の火曜\x12{0}個後の火曜\x12{0}個前の火曜" + - "\x12先週の水曜日\x12今週の水曜日\x12来週の水曜日\x16{0} 個後の水曜日\x16{0} 個前の水曜日\x0f先週の水曜\x0f今" + - "週の水曜\x0f来週の水曜\x13{0} 個後の水曜\x13{0} 個前の水曜\x12{0}個後の水曜\x12{0}個前の水曜\x12先週の" + - "木曜日\x12今週の木曜日\x12来週の木曜日\x16{0} 個後の木曜日\x16{0} 個前の木曜日\x0f先週の木曜\x0f今週の木曜" + - "\x0f来週の木曜\x13{0} 個後の木曜\x13{0} 個前の木曜\x12{0}個後の木曜\x12{0}個前の木曜\x12先週の金曜日" + - "\x12今週の金曜日\x12来週の金曜日\x16{0} 個後の金曜日\x16{0} 個前の金曜日\x0f先週の金曜\x0f今週の金曜\x0f来週" + - "の金曜\x13{0} 個後の金曜\x13{0} 個前の金曜\x12{0}個後の金曜\x12{0}個前の金曜\x12先週の土曜日\x12今週の" + - "土曜日\x12来週の土曜日\x16{0} 個後の土曜日\x16{0} 個前の土曜日\x0f先週の土曜\x0f今週の土曜\x0f来週の土曜" + - "\x13{0} 個後の土曜\x13{0} 個前の土曜\x12{0}個後の土曜\x12{0}個前の土曜\x0d午前/午後\x03時\x0e1 時間" + - "以内\x0d{0} 時間後\x0d{0} 時間前\x0c{0}時間後\x0c{0}時間前\x03分\x0b1 分以内\x0a{0} 分後" + - "\x0a{0} 分前\x09{0}分後\x09{0}分前\x03秒\x03今\x0a{0} 秒後\x0a{0} 秒前\x09{0}秒後\x09{" + - "0}秒前\x12タイムゾーン\x09{0}時間\x0c{0}夏時間\x0c{0}標準時\x0f協定世界時\x0f英国夏時間\x1bアイルランド標" + - "準時\x0fアクレ時間\x12アクレ標準時\x12アクレ夏時間\x1bアフガニスタン時間\x18中央アフリカ時間\x15東アフリカ時間" + - "\x18南アフリカ標準時\x15西アフリカ時間\x18西アフリカ標準時\x18西アフリカ夏時間\x12アラスカ時間\x15アラスカ標準時\x15" + - "アラスカ夏時間\x15アルトマイ時間\x18アルトマイ標準時\x18アルマトイ夏時間\x12アマゾン時間\x15アマゾン標準時\x15アマゾ" + - "ン夏時間\x18アメリカ中部時間\x1bアメリカ中部標準時\x1bアメリカ中部夏時間\x18アメリカ東部時間\x1bアメリカ東部標準時" + - "\x1bアメリカ東部夏時間\x18アメリカ山地時間\x1bアメリカ山地標準時\x1bアメリカ山地夏時間\x1bアメリカ太平洋時間\x1eアメリカ" + - "太平洋標準時\x1eアメリカ太平洋夏時間\x15アナディリ時間\x18アナディリ標準時\x18アナディリ夏時間\x0fアピア時間\x12アピ" + - "ア標準時\x12アピア夏時間\x12アクタウ時間\x15アクタウ標準時\x15アクタウ夏時間\x12アクトベ時間\x15アクトベ標準時" + - "\x15アクトベ夏時間\x12アラビア時間\x15アラビア標準時\x15アラビア夏時間\x18アルゼンチン時間\x1bアルゼンチン標準時\x1b" + - "アルゼンチン夏時間\x1e西部アルゼンチン時間!西部アルゼンチン標準時!西部アルゼンチン夏時間\x15アルメニア時間\x18アルメニア標準時" + - "\x18アルメニア夏時間\x0f大西洋時間\x12大西洋標準時\x12大西洋夏時間!オーストラリア中部時間$オーストラリア中部標準時$オーストラ" + - "リア中部夏時間$オーストラリア中西部時間'オーストラリア中西部標準時'オーストラリア中西部夏時間!オーストラリア東部時間$オーストラリア東部" + - "標準時$オーストラリア東部夏時間!オーストラリア西部時間$オーストラリア西部標準時$オーストラリア西部夏時間\x1eアゼルバイジャン時間!ア" + - "ゼルバイジャン標準時!アゼルバイジャン夏時間\x12アゾレス時間\x15アゾレス標準時\x15アゾレス夏時間\x1bバングラデシュ時間" + - "\x1eバングラデシュ標準時\x1eバングラデシュ夏時間\x12ブータン時間\x12ボリビア時間\x15ブラジリア時間\x18ブラジリア標準時" + - "\x18ブラジリア夏時間'ブルネイ・ダルサラーム時間\x18カーボベルデ時間\x1bカーボベルデ標準時\x1bカーボベルデ夏時間\x18ケイシー" + - "基地時間\x12チャモロ時間\x12チャタム時間\x15チャタム標準時\x15チャタム夏時間\x0cチリ時間\x0fチリ標準時\x0fチリ夏" + - "時間\x0c中国時間\x0f中国標準時\x0f中国夏時間\x1bチョイバルサン時間\x1eチョイバルサン標準時\x1eチョイバルサン夏時間" + - "\x18クリスマス島時間\x15ココス諸島時間\x15コロンビア時間\x18コロンビア標準時\x18コロンビア夏時間\x15クック諸島時間" + - "\x18クック諸島標準時\x18クック諸島夏時間\x12キューバ時間\x15キューバ標準時\x15キューバ夏時間\x18デービス基地時間-デュモ" + - "ン・デュルヴィル基地時間\x18東ティモール時間\x18イースター島時間\x1bイースター島標準時\x1bイースター島夏時間\x15エクアド" + - "ル時間\x1b中央ヨーロッパ時間\x1e中央ヨーロッパ標準時\x1e中央ヨーロッパ夏時間\x18東ヨーロッパ時間\x1b東ヨーロッパ標準時" + - "\x1b東ヨーロッパ夏時間\x1b極東ヨーロッパ時間\x18西ヨーロッパ時間\x1b西ヨーロッパ標準時\x1b西ヨーロッパ夏時間!フォークランド" + - "諸島時間$フォークランド諸島標準時$フォークランド諸島夏時間\x12フィジー時間\x15フィジー標準時\x15フィジー夏時間\x15仏領ギア" + - "ナ時間\x18仏領南方南極時間\x15ガラパゴス時間\x18ガンビエ諸島時間\x15ジョージア時間\x18ジョージア標準時\x18ジョージア" + - "夏時間\x1bギルバート諸島時間\x18グリニッジ標準時!グリーンランド東部時間$グリーンランド東部標準時$グリーンランド東部夏時間!グリー" + - "ンランド西部時間$グリーンランド西部標準時$グリーンランド西部夏時間\x0fグアム時間\x0f湾岸標準時\x12ガイアナ時間'ハワイ・アリュ" + - "ーシャン時間*ハワイ・アリューシャン標準時*ハワイ・アリューシャン夏時間\x0c香港時間\x0f香港標準時\x0f香港夏時間\x0fホブド時" + - "間\x12ホブド標準時\x12ホブド夏時間\x12インド標準時\x12インド洋時間\x15インドシナ時間\x1eインドネシア中部時間\x1e" + - "インドネシア東部時間\x1eインドネシア西部時間\x0fイラン時間\x12イラン標準時\x12イラン夏時間\x18イルクーツク時間\x1bイ" + - "ルクーツク標準時\x1bイルクーツク夏時間\x15イスラエル時間\x18イスラエル標準時\x18イスラエル夏時間\x0c日本時間\x0f日本" + - "標準時\x0f日本夏時間9ペトロパブロフスク・カムチャツキー時間<ペトロパブロフスク・カムチャツキー標準時<ペトロパブロフスク・カムチャツキ" + - "ー夏時間\x1b東カザフスタン時間\x1b西カザフスタン時間\x0c韓国時間\x0f韓国標準時\x0f韓国夏時間\x12コスラエ時間\x1e" + - "クラスノヤルスク時間!クラスノヤルスク標準時!クラスノヤルスク夏時間\x18キルギスタン時間\x0fランカ時間\x15ライン諸島時間\x15" + - "ロードハウ時間\x18ロードハウ標準時\x18ロードハウ夏時間\x0fマカオ時間\x12マカオ標準時\x12マカオ夏時間\x1bマッコーリー" + - "島時間\x12マガダン時間\x15マガダン標準時\x15マガダン夏時間\x15マレーシア時間\x15モルディブ時間\x15マルキーズ時間" + - "\x1bマーシャル諸島時間\x18モーリシャス時間\x1bモーリシャス標準時\x1bモーリシャス夏時間\x18モーソン基地時間\x1bメキシコ北" + - "西部時間\x1eメキシコ北西部標準時\x1eメキシコ北西部夏時間\x1bメキシコ太平洋時間\x1eメキシコ太平洋標準時\x1eメキシコ太平洋" + - "夏時間\x1bウランバートル時間\x1eウランバートル標準時\x1eウランバートル夏時間\x12モスクワ時間\x15モスクワ標準時\x15モ" + - "スクワ夏時間\x15ミャンマー時間\x0fナウル時間\x12ネパール時間\x1eニューカレドニア時間!ニューカレドニア標準時!ニューカレドニ" + - "ア夏時間\x1eニュージーランド時間!ニュージーランド標準時!ニュージーランド夏時間$ニューファンドランド時間'ニューファンドランド標準時'" + - "ニューファンドランド夏時間\x0fニウエ時間\x1bノーフォーク島時間0フェルナンド・デ・ノローニャ時間3フェルナンド・デ・ノローニャ標準時" + - "3フェルナンド・デ・ノローニャ夏時間\x1b北マリアナ諸島時間\x1eノヴォシビルスク時間!ノヴォシビルスク標準時!ノヴォシビルスク夏時間" + - "\x12オムスク時間\x15オムスク標準時\x15オムスク夏時間\x15パキスタン時間\x18パキスタン標準時\x18パキスタン夏時間\x0fパ" + - "ラオ時間!パプアニューギニア時間\x15パラグアイ時間\x18パラグアイ標準時\x18パラグアイ夏時間\x0fペルー時間\x12ペルー標準時" + - "\x12ペルー夏時間\x15フィリピン時間\x18フィリピン標準時\x18フィリピン夏時間\x1eフェニックス諸島時間'サンピエール・ミクロン時" + - "間*サンピエール・ミクロン標準時*サンピエール・ミクロン夏時間\x15ピトケアン時間\x0fポナペ時間\x0c平壌時間\x15クズロルダ時間" + - "\x18クズロルダ標準時\x18クズロルダ夏時間\x15レユニオン時間\x15ロゼラ基地時間\x12サハリン時間\x15サハリン標準時\x15サ" + - "ハリン夏時間\x0fサマラ時間\x12サマラ標準時\x12サマラ夏時間\x0fサモア時間\x12サモア標準時\x12サモア夏時間\x15セー" + - "シェル時間\x1bシンガポール標準時\x18ソロモン諸島時間\x1eサウスジョージア時間\x12スリナム時間\x12昭和基地時間\x0fタヒ" + - "チ時間\x0c台北時間\x0f台北標準時\x0f台北夏時間\x18タジキスタン時間\x12トケラウ時間\x0fトンガ時間\x12トンガ標準時" + - "\x12トンガ夏時間\x12チューク時間\x1eトルクメニスタン時間!トルクメニスタン標準時!トルクメニスタン夏時間\x0fツバル時間\x15ウ" + - "ルグアイ時間\x18ウルグアイ標準時\x18ウルグアイ夏時間\x1bウズベキスタン時間\x1eウズベキスタン標準時\x1eウズベキスタン夏時" + - "間\x12バヌアツ時間\x15バヌアツ標準時\x15バヌアツ夏時間\x15ベネズエラ時間\x1bウラジオストク時間\x1eウラジオストク標準" + - "時\x1eウラジオストク夏時間\x1bボルゴグラード時間\x1eボルゴグラード標準時\x1eボルゴグラード夏時間\x1bボストーク基地時間" + - "\x15ウェーク島時間\x1eウォリス・フツナ時間\x15ヤクーツク時間\x18ヤクーツク標準時\x18ヤクーツク夏時間\x1eエカテリンブルグ" + - "時間!エカテリンブルグ標準時!エカテリンブルグ夏時間\x01T\x01L\x01S\x06冬月\x06臘月\x03冬\x03臘\x06驚蟄" + - "\x06小滿\x06處暑\x03兔\x03龍\x03猴\x03雞\x03狗\x03豬\x0513月\x03一\x06白鳳\x06大寶\x06靈龜" + - "\x06神龜\x0c天平感寶\x0c天平勝寶\x0c天平寶字\x06寶龜\x06天應\x06延曆\x06仁壽\x06齊衡\x06貞觀\x06寬平" + - "\x06天曆\x06天德\x06應和\x06天祿\x06永觀\x06寬和\x06正曆\x06長德\x06寬弘\x06寬仁\x06萬壽\x06長曆" + - "\x06寬德\x06治曆\x06承曆\x06應德\x06寬治\x06承德\x06久壽\x06永曆\x06應保\x06長寬\x06永萬\x06嘉應" + - "\x06壽永\x06元曆\x06建曆\x06貞應\x06嘉祿\x06寬喜\x06文曆\x06曆仁\x06延應\x06寬元\x06寶治\x06文應" + - "\x06正應\x06德治\x06應長\x06元應\x06嘉曆\x06元德\x06興國\x06建德\x06康曆\x06至德\x06康應\x06明德" + - "\x06應永\x06寶德\x06享德\x06長祿\x06寬正\x06應仁\x06延德\x06明應\x06文龜\x06享祿\x06永祿\x06元龜" + - "\x06文祿\x06寬永\x06承應\x06明曆\x06萬治\x06寬文\x06延寶\x06元祿\x06寶永\x06正德\x06寬保\x06寬延" + - "\x06寶曆\x06寬政\x06萬延\x06慶應\x08{0} (+1)\x08{0} (+0)\x06腊月\x03腊\x06惊蛰\x06谷雨" + - "\x06小满\x06芒种\x06处暑\x03龙\x03马\x03鸡\x07闰7月\x06二月\x06三月\x06四月\x06五月\x06六月" + - "\x06七月\x06八月\x06九月\x06十月\x09十一月\x09十二月\x06明治\x06大正\x06昭和\x06平成" - -var bucket54 string = "" + // Size: 26636 bytes - "\x03JST\x03JDT\x0dNduŋmbi Saŋ\x10Pɛsaŋ Pɛ́pá\x11Pɛsaŋ Pɛ́tát\x15Pɛsaŋ Pɛ" + - "́nɛ́kwa\x0dPɛsaŋ Pataa\x19Pɛsaŋ Pɛ́nɛ́ntúkú\x0fPɛsaŋ Saambá\x16Pɛsaŋ Pɛ" + - "́nɛ́fɔm\x1bPɛsaŋ Pɛ́nɛ́pfúꞋú\x11Pɛsaŋ Nɛgɛ́m\x15Pɛsaŋ Ntsɔ̌pmɔ́\x13Pɛsa" + - "ŋ Ntsɔ̌ppá\x08Sɔ́ndi\x08Mɔ́ndi\x0eÁpta Mɔ́ndi\x0eWɛ́nɛsɛdɛ\x0bTɔ́sɛdɛ" + - "\x0cFɛlâyɛdɛ\x08Sásidɛ\x05Sɔ́\x05Mɔ́\x03ÁM\x05Wɛ́\x05Tɔ́\x03Fɛ\x03Sá\x0c" + - "mbaꞌmbaꞌ\x10ŋka mbɔ́t nji>tsɛttsɛt mɛŋguꞌ mi ɛ́ lɛɛnɛ Kɛlísɛtɔ gɔ ńɔ́=ts" + - "ɛttsɛt mɛŋguꞌ mi ɛ́ fúnɛ Kɛlísɛtɔ tɔ́ mɔ́\x10Nǔu ŋguꞋ {0}\x1bƐ́gɛ́ mɔ́ " + - "ŋguꞋ {0}\x0dNǔu {0} saŋ\x1cɛ́ gɛ́ mɔ́ pɛsaŋ {0}\x12Nǔu ŋgap-mbi {0}\x1c" + - "Ɛ́ gɛ́ mɔ {0} ŋgap-mbi\x11Nǔu lɛ́Ꞌ {0}\x1dƐ́ gɛ́ mɔ́ lɛ́Ꞌ {0}\x0enǔu há" + - "wa {0}\x18ɛ́ gɛ mɔ́ {0} háwa\x0fnǔu {0} minút\x1bɛ́ gɛ́ mɔ́ minút {0}" + - "\x09Jumapilyi\x09Jumatatuu\x07Jumanne\x08Jumatanu\x08Alhamisi\x06Ijumaa" + - "\x08Jumamosi\x05utuko\x09kyiukonyi\x0fKabla ya Kristu\x0fBaada ya Kristu" + - "\x05Kacha\x04Maka\x06Wiikyi\x05Mfiri\x04Ukou\x03Inu\x05Ngama\x0cMfiri o " + - "siku\x07Dakyika\x0bMfiri o saa\x12EEEE, dd MMMM, y G\x09იან\x09თებ\x09მა" + - "რ\x09აპრ\x09მაი\x09ივნ\x09ივლ\x09აგვ\x09სექ\x09ოქტ\x09ნოე\x09დეკ\x03ი" + - "\x03თ\x03მ\x03ა\x03ს\x03ო\x03ნ\x03დ\x15იანვარი\x1bთებერვალი\x0fმარტი\x12" + - "აპრილი\x0fმაისი\x12ივნისი\x12ივლისი\x15აგვისტო\x1eსექტემბერი\x1bოქტომბ" + - "ერი\x18ნოემბერი\x1bდეკემბერი\x09კვი\x09ორშ\x09სამ\x09ოთხ\x09ხუთ\x09პარ" + - "\x09შაბ\x03კ\x03ხ\x03პ\x03შ\x06კვ\x06ორ\x06სმ\x06ოთ\x06ხთ\x06პრ\x06შბ" + - "\x0fკვირა\x18ორშაბათი\x1bსამშაბათი\x1bოთხშაბათი\x1bხუთშაბათი\x1bპარასკევ" + - "ი\x12შაბათი\x09I კვ.\x0aII კვ.\x0bIII კვ.\x0aIV კვ.\x1aI კვარტალი\x1bI" + - "I კვარტალი\x1cIII კვარტალი\x1bIV კვარტალი\x18შუაღამეს\x10შუადღ.\x0aდილ." + - "\x16ნაშუადღ.\x0aსაღ.\x0aღამ.\x15შუადღეს\x0fდილით\x1eნაშუადღევს\x15საღამო" + - "ს\x0fღამით\x15შუაღამე\x12შუადღე\x0cდილა\x1eნაშუადღევი\x12საღამო\x0cღამ" + - "ე#შუადღ. შემდეგ7ძველი წელთაღრიცხვით\x22ჩვენს ერამდე7ახალი წელთაღრიცხვი" + - "თ\x19ჩვენი ერა\x0cძვ. წ.\x1aჩვ. ერამდე\x0cახ. წ.\x11ჩვ. ერა\x10EEEE, d" + - "d MMMM, y\x08d MMM. y\x12თიშრეი\x15ხეშვანი\x15ქისლევი\x12ტევეთი\x0fშვატი" + - "\x11ადარი I\x0fადარი\x12ადარი II\x12ნისანი\x0cიარი\x12სივანი\x12თამუზი" + - "\x09ავი\x0fელული\x0aმუჰ.\x0aსაფ.\x0cრაბ. I\x0dრაბ. II\x0cჯუმ. I\x0dჯუმ. " + - "II\x0aრაჯ.\x0aშაბ.\x0aრამ.\x0aშავ.\x0eზულ-კ.\x0eზულ-ჰ.\x18მუჰარამი\x12სა" + - "ფარი#რაბი ულ-ავალი#რაბი ულ-ახირი)ჯუმადა ულ-ავალი)ჯუმადა ულ-ახირი\x12რა" + - "ჯაბი\x12შაბანი\x18რამადანი\x12შავალი\x19ზულ-კაადა\x16ზულ-ჰიჯა\x1eფარვა" + - "რდინი!ორდიბეჰეშთი\x15ხორდადი\x0cთირი\x15მორდადი\x1bშაჰრივარი\x0fმეჰრი" + - "\x0fაბანი\x0fაზარი\x09დეი\x15ბაჰმანი\x15ესფანდი\x0fეპოქა\x0cწელი\x1cგასუ" + - "ლ წელს\x13ამ წელს\x22მომავალ წელს\x1f{0} წელიწადში\x1a{0} წლის წინ\x04" + - "წ.\x13{0} წელში\x18კვარტალი+გასულ კვარტალში\x22ამ კვარტალში.შემდეგ კვა" + - "რტალში\x1f{0} კვარტალში){0} კვარტალის წინ\x10კვარტ.\x1e{0} კვარტ. წინ" + - "\x09თვე\x1cგასულ თვეს\x16ამ თვეში\x22მომავალ თვეს\x13{0} თვეში\x1a{0} თვ" + - "ის წინ%გასულ კვირაში\x1cამ კვირაში+მომავალ კვირაში\x19{0} კვირაში {0} " + - "კვირის წინ {0}-ის კვირაში\x07კვ.\x15{0} კვ. წინ\x09დღე\x18გუშინწინ\x0f" + - "გუშინ\x0cდღეს\x0cხვალ\x09ზეგ\x13{0} დღეში\x1a{0} დღის წინ\x1cკვირის დღ" + - "ე\x22გასულ კვირას\x19ამ კვირას(მომავალ კვირას\x1d{0} კვირი წინ(გასულ ო" + - "რშაბათს\x1fამ ორშაბათს.მომავალ ორშაბათს\x1f{0} ორშაბათში){0} ორშაბათის" + - " წინ\x17წინა ორშ.\x11ამ ორშ.\x15მომ. ორშ.\x12გას. ორ.\x0eამ ორ.\x12მომ. " + - "ორ.+გასულ სამშაბათს\x22ამ სამშაბათს1მომავალ სამშაბათს\x22{0} სამშაბათშ" + - "ი,{0} სამშაბათის წინ\x17წინა სამ.\x11ამ სამ.\x15მომ. სამ.\x11წინ სა." + - "\x0eამ სა.\x14მომმ სა.+გასულ ოთხშაბათს\x22ამ ოთხშაბათს1მომავალ ოთხშაბათს" + - "\x22{0} ოთხშაბათში,{0} ოთხშაბათის წინ\x17წინა ოთხ.\x11ამ ოთხ.\x15მომ. ოთ" + - "ხ.\x14წინა ოთ.\x0eამ ოთ.\x12მომ. ოთ.+გასულ ხუთშაბათს\x22ამ ხუთშაბათს1მ" + - "ომავალ ხუთშაბათს\x22{0} ხუთშაბათში,{0} ხუთშაბათის წინ\x17წინა ხუთ.\x11" + - "ამ ხუთ.\x15მომ. ხუთ.\x14წინა ხთ.\x0eამ ხთ.\x12მომ. ხთ.+გასულ პარასკევს" + - "\x22ამ პარასკევს1მომავალ პარასკევს\x22{0} პარასკევში,{0} პარასკევის წინ" + - "\x17წინა პარ.\x11ამ პარ.\x15მომ. პარ.\x14წინა პა.\x0eამ პა.\x12მომ. პა." + - "\x22გასულ შაბათს\x19ამ შაბათს(მომავალ შაბათს\x19{0} შაბათში#{0} შაბათის " + - "წინ\x17წინა შაბ.\x11ამ შაბ.\x15მომ. შაბ.\x14წინა შბ.\x0eამ შა.\x12მომ." + - " შბ.%დღის ნახევარი\x0fსაათი\x19ამ საათში\x16{0} საათში {0} საათის წინ" + - "\x07სთ.\x14{0} სთ წინ\x0cწუთი\x16ამ წუთში\x13{0} წუთში\x1d{0} წუთის წინ" + - "\x07წთ.\x14{0} წთ წინ\x0cწამი\x0cახლა\x13{0} წამში\x1d{0} წამის წინ\x07წ" + - "მ.\x14{0} წმ წინ(დროის სარტყელი\x0eდრო: {0}&{0} ზაფხულის დრო/{0} სტანდ" + - "არტული დროJმსოფლიო კოორდინირებული დროAბრიტანეთის ზაფხულის დროGირლანდიი" + - "ს სტანდარტული დრო%ავღანეთის დრო>ცენტრალური აფრიკის დრო>აღმოსავლეთ აფრი" + - "კის დრო5სამხრეთ აფრიკის დრო8დასავლეთ აფრიკის დროZდასავლეთ აფრიკის სტან" + - "დარტული დროQდასავლეთ აფრიკის ზაფხულის დრო\x1fალასკის დროAალასკის სტანდ" + - "არტული დრო8ალასკის ზაფხულის დრო%ამაზონიის დროGამაზონიის სტანდარტული დრ" + - "ო>ამაზონიის ზაფხულის დროZჩრდილოეთ ამერიკის ცენტრალური დრო|ჩრდილოეთ ამე" + - "რიკის ცენტრალური სტანდარტული დროsჩრდილოეთ ამერიკის ცენტრალური ზაფხულის" + - " დრო`ჩრდილოეთ ამერიკის აღმოსავლეთის დრო\x82ჩრდილოეთ ამერიკის აღმოსავლეთი" + - "ს სტანდარტული დროyჩრდილოეთ ამერიკის აღმოსავლეთის ზაფხულის დროWჩრდილოეთ" + - " ამერიკის მაუნთინის დროyჩრდილოეთ ამერიკის მაუნთინის სტანდარტული დროpჩრდი" + - "ლოეთ ამერიკის მაუნთინის ზაფხულის დროdჩრდილოეთ ამერიკის წყნარი ოკეანის " + - "დრო\x86ჩრდილოეთ ამერიკის წყნარი ოკეანის სტანდარტული დრო}ჩრდილოეთ ამერი" + - "კის წყნარი ოკეანის ზაფხულის დრო\x19აპიას დრო;აპიას სტანდარტული დრო2აპი" + - "ას ზაფხულის დრო\x22არაბეთის დროDარაბეთის სტანდარტული დრო;არაბეთის ზაფხ" + - "ულის დრო(არგენტინის დროJარგენტინის სტანდარტული დროAარგენტინის ზაფხულის" + - " დროAდასავლეთ არგენტინის დროcდასავლეთ არგენტინის სტანდარტული დროZდასავლე" + - "თ არგენტინის ზაფხულის დრო\x22სომხეთის დროDსომხეთის სტანდარტული დრო;სომ" + - "ხეთის ზაფხულის დრო>ატლანტიკის ოკეანის დრო`ატლანტიკის ოკეანის სტანდარტუ" + - "ლი დროWატლანტიკის ოკეანის ზაფხულის დროGცენტრალური ავსტრალიის დროiავსტრ" + - "ალიის ცენტრალური სტანდარტული დრო`ავსტრალიის ცენტრალური ზაფხულის დროgცე" + - "ნტრალური და დასავლეთ ავსტრალიის დრო\x89ცენტრალური და დასავლეთ ავსტრალი" + - "ის სტანდარტული დრო\x80ცენტრალური და დასავლეთ ავსტრალიის ზაფხულის დროGა" + - "ღმოსავლეთ ავსტრალიის დროiაღმოსავლეთ ავსტრალიის სტანდარტული დრო`აღმოსავ" + - "ლეთ ავსტრალიის ზაფხულის დროAდასავლეთ ავსტრალიის დროcდასავლეთ ავსტრალიი" + - "ს სტანდარტული დროZდასავლეთ ავსტრალიის ზაფხულის დრო.აზერბაიჯანის დროPაზ" + - "ერბაიჯანის სტანდარტული დროGაზერბაიჯანის ზაფხულის დრო;აზორის კუნძულების" + - " დრო]აზორის კუნძულების სტანდარტული დროTაზორის კუნძულების ზაფხულის დრო+ბა" + - "ნგლადეშის დროMბანგლადეშის სტანდარტული დროDბანგლადეშის ზაფხულის დრო\x1f" + - "ბუტანის დრო\x22ბოლივიის დრო%ბრაზილიის დროGბრაზილიის სტანდარტული დრო>ბრ" + - "აზილიის ზაფხულის დრო>ბრუნეი-დარუსალამის დრო)კაბო-ვერდეს დროKკაბო-ვერდე" + - "ს სტანდარტული დროBკაბო-ვერდეს ზაფხულის დრო\x1fჩამოროს დრო\x1fჩატემის დ" + - "როAჩატემის სტანდარტული დრო8ჩატემის ზაფხულის დრო\x19ჩილეს დრო;ჩილეს სტა" + - "ნდარტული დრო2ჩილეს ზაფხულის დრო\x1fჩინეთის დროAჩინეთის სტანდარტული დრო" + - ">ჩინეთის დროის სარტყელი+ჩოიბალსანის დროMჩოიბალსანის სტანდარტული დროDჩოიბ" + - "ალსანის ზაფხულის დრო2შობის კუნძულის დრო>ქოქოსის კუნძულების დრო%კოლუმბი" + - "ის დროGკოლუმბიის სტანდარტული დრო>კოლუმბიის ზაფხულის დრო8კუკის კუნძულებ" + - "ის დროZკუკის კუნძულების სტანდარტული დროjკუკის კუნძულების ნახევრად ზაფხ" + - "ულის დრო\x19კუბის დრო;კუბის სტანდარტული დრო2კუბის ზაფხულის დრო\x1fდევი" + - "სის დრო2დუმონ-დურვილის დრო>აღმოსავლეთ ტიმორის დრო;აღდგომის კუნძულის დრ" + - "ო]აღდგომის კუნძულის სტანდარტული დროTაღდგომის კუნძულის ზაფხულის დრო%ეკვ" + - "ადორის დრო>ცენტრალური ევროპის დრო`ცენტრალური ევროპის სტანდარტული დროWც" + - "ენტრალური ევროპის ზაფხულის დრო>აღმოსავლეთ ევროპის დრო`აღმოსავლეთ ევროპ" + - "ის სტანდარტული დროWაღმოსავლეთ ევროპის ზაფხულის დროTშორეული აღმოსავლეთ " + - "ევროპის დრო8დასავლეთ ევროპის დროZდასავლეთ ევროპის სტანდარტული დროQდასა" + - "ვლეთ ევროპის ზაფხულის დროGფოლკლენდის კუნძულების დროiფოლკლენდის კუნძულე" + - "ბის სტანდარტული დრო`ფოლკლენდის კუნძულების ზაფხულის დრო\x19ფიჯის დრო;ფი" + - "ჯის სტანდარტული დრო2ფიჯის ზაფხულის დროAსაფრანგეთის გვიანის დროgფრანგულ" + - "ი სამხრეთის და ანტარქტიკის დრო+გალაპაგოსის დრო%გამბიერის დრო+საქართველ" + - "ოს დროMსაქართველოს სტანდარტული დროDსაქართველოს ზაფხულის დროDგილბერტის " + - "კუნძულების დრო;გრინვიჩის საშუალო დროJაღმოსავლეთ გრენლანდიის დროlაღმოსა" + - "ვლეთ გრენლანდიის სტანდარტული დროcაღმოსავლეთ გრენლანდიის ზაფხულის დროDდ" + - "ასავლეთ გრენლანდიის დროfდასავლეთ გრენლანდიის სტანდარტული დრო]დასავლეთ " + - "გრენლანდიის ზაფხულის დროWსპარსეთის ყურის სტანდარტული დრო\x1fგაიანის დრ" + - "ო<ჰავაისა და ალეუტის დრო^ჰავაისა და ალეუტის სტანდარტული დროUჰავაისა და" + - " ალეუტის ზაფხულის დრო%ჰონკონგის დროGჰონკონგის სტანდარტული დრო>ჰონკონგის " + - "ზაფხულის დრო\x1cჰოვდის დრო>ჰოვდის სტანდარტული დრო5ჰოვდის ზაფხულის დრო" + - "\x22ინდოეთის დროWინდოეთის ოკეანის კუნძულების დრო+ინდოჩინეთის დროGცენტრალ" + - "ური ინდონეზიის დროGაღმოსავლეთ ინდონეზიის დროAდასავლეთ ინდონეზიის დრო" + - "\x1cირანის დრო>ირანის სტანდარტული დრო;ირანის დროის სარტყელი%ირკუტსკის დრ" + - "ოGირკუტსკის სტანდარტული დრო>ირკუტსკის ზაფხულის დრო\x22ისრაელის დროDისრ" + - "აელის სტანდარტული დრო;ისრაელის ზაფხულის დრო\x22იაპონიის დროDიაპონიის ს" + - "ტანდარტული დრო;იაპონიის ზაფხულის დროDაღმოსავლეთ ყაზახეთის დრო>დასავლეთ" + - " ყაზახეთის დრო\x1cკორეის დრო>კორეის სტანდარტული დრო5კორეის ზაფხულის დრო" + - "\x1cკოსრეს დრო1კრასნოიარსკის დროSკრასნოიარსკის სტანდარტული დროJკრასნოიარ" + - "სკის ზაფხულის დრო(ყირგიზეთის დრო;ლაინის კუნძულების დრო#ლორდ-ჰაუს დროEლ" + - "ორდ-ჰაუს სტანდარტული დრო<ლორდ-ჰაუს ზაფხულის დრო>მაქკუორის კუნძულის დრო" + - "%მაგადანის დროGმაგადანის სტანდარტული დრო>მაგადანის ზაფხულის დრო%მალაიზიი" + - "ს დრო(მალდივების დროAმარკიზის კუნძულების დროAმარშალის კუნძულების დრო" + - "\x22მავრიკის დროDმავრიკის სტანდარტული დრო;მავრიკის ზაფხულის დრო\x22მოუსო" + - "ნის დროTჩრდილო-აღმოსავლეთ მექსიკის დროNჩრდილო-დასავლეთ მექსიკის დროgჩრ" + - "დილო-დასავლეთ მექსიკის ზაფხულის დროKმექსიკის წყნარი ოკეანის დროmმექსიკ" + - "ის წყნარი ოკეანის სტანდარტული დროdმექსიკის წყნარი ოკეანის ზაფხულის დრო" + - ",ულან-ბატორის დროNულან-ბატორის სტანდარტული დროEულან-ბატორის ზაფხულის დრო" + - "\x22მოსკოვის დროDმოსკოვის სტანდარტული დრო;მოსკოვის ზაფხულის დრო%მიანმარი" + - "ს დრო\x1cნაურუს დრო\x1fნეპალის დრო8ახალი კალედონიის დროZახალი კალედონი" + - "ის სტანდარტული დროQახალი კალედონიის ზაფხულის დრო5ახალი ზელანდიის დროWა" + - "ხალი ზელანდიის სტანდარტული დროNახალი ზელანდიის ზაფხულის დრო4ნიუფაუნდლე" + - "ნდის დროVნიუფაუნდლენდის სტანდარტული დროMნიუფაუნდლენდის ზაფხულის დრო" + - "\x19ნიუეს დრო>ნორფოლკის კუნძულის დროBფერნანდო-დე-ნორონიას დროdფერნანდო-დ" + - "ე-ნორონიას სტანდარტული დრო[ფერნანდო-დე-ნორონიას ზაფხულის დრო1ნოვოსიბირ" + - "სკის დროSნოვოსიბირსკის სტანდარტული დროJნოვოსიბირსკის ზაფხულის დრო\x1cო" + - "მსკის დრო>ომსკის სტანდარტული დრო5ომსკის ზაფხულის დრო(პაკისტანის დროJპა" + - "კისტანის სტანდარტული დროAპაკისტანის ზაფხულის დრო\x1cპალაუს დრო?პაპუა-ა" + - "ხალი გვინეის დრო%პარაგვაის დროGპარაგვაის სტანდარტული დრო>პარაგვაის ზაფ" + - "ხულის დრო\x19პერუს დრო;პერუს სტანდარტული დრო2პერუს ზაფხულის დრო+ფილიპი" + - "ნების დროMფილიპინების სტანდარტული დროDფილიპინების ზაფხულის დროAფენიქსი" + - "ს კუნძულების დროIსენ-პიერის და მიკელონის დროkსენ-პიერის და მიკელონის ს" + - "ტანდარტული დროbსენ-პიერის და მიკელონის ზაფხულის დრო%პიტკერნის დრო\x1fპ" + - "ონაპეს დრო%ფხენიანის დრო(რეიუნიონის დრო\x1fროთერის დრო%სახალინის დროGს" + - "ახალინის სტანდარტული დრო>სახალინის ზაფხულის დრო\x1cსამოას დრო>სამოას ს" + - "ტანდარტული დრო5სამოას ზაფხულის დროAსეიშელის კუნძულების დრო(სინგაპურის " + - "დროDსოლომონის კუნძულების დრო8სამხრეთ გეორგიის დრო%სურინამის დრო\x1cსიო" + - "ვას დრო\x1cტაიტის დრო\x1fტაიბეის დროAტაიბეის სტანდარტული დრო8ტაიბეის ზ" + - "აფხულის დრო%ტაჯიკეთის დრო\x22ტოკელაუს დრო\x1cტონგის დრო>ტონგის სტანდარ" + - "ტული დრო5ტონგის ზაფხულის დრო\x1cჩუუკის დრო+თურქმენეთის დროMთურქმენეთის" + - " სტანდარტული დროDთურქმენეთის ზაფხულის დრო\x1fტუვალუს დრო\x22ურუგვაის დრო" + - "Dურუგვაის სტანდარტული დრო;ურუგვაის ზაფხულის დრო%უზბეკეთის დროGუზბეკეთის " + - "სტანდარტული დრო>უზბეკეთის ზაფხულის დრო\x22ვანუატუს დროDვანუატუს სტანდა" + - "რტული დრო;ვანუატუს ზაფხულის დრო(ვენესუელის დრო1ვლადივოსტოკის დროSვლადი" + - "ვოსტოკის სტანდარტული დროJვლადივოსტოკის ზაფხულის დრო+ვოლგოგრადის დროMვო" + - "ლგოგრადის სტანდარტული დროDვოლგოგრადის ზაფხულის დრო\x22ვოსტოკის დრო5ვეი" + - "კის კუნძულის დრო9ვოლისი და ფუტუნას დრო%იაკუტსკის დროGიაკუტსკის სტანდარ" + - "ტული დრო>იაკუტსკის ზაფხულის დრო4ეკატერინბურგის დროVეკატერინბურგის სტან" + - "დარტული დროMეკატერინბურგის ზაფხულის დრო\x07Jumanne\x08Alhamisi\x06Ijum" + - "aa\x08Jumamosi\x07Jumanne\x08Alhamisi\x06Ijumaa\x08Jumamosi" - -var bucket55 string = "" + // Size: 8385 bytes - "\x03Yen\x03Fur\x04Meɣ\x03Yeb\x03May\x03Yun\x03Yul\x04Ɣuc\x03Cte\x03Tub" + - "\x03Nun\x04Duǧ\x08Yennayer\x07Fuṛar\x07Meɣres\x06Yebrir\x05Mayyu\x05Yuny" + - "u\x05Yulyu\x05Ɣuct\x09Ctembeṛ\x07Tubeṛ\x0aNunembeṛ\x0bDuǧembeṛ\x03Yan" + - "\x03San\x06Kraḍ\x05Kuẓ\x03Sam\x06Sḍis\x03Say\x06Yanass\x06Sanass\x09Kraḍ" + - "ass\x08Kuẓass\x06Samass\x09Sḍisass\x06Sayass\x06Kḍg1\x06Kḍg2\x06Kḍg3\x06" + - "Kḍg4\x13akraḍaggur amenzu\x14akraḍaggur wis-sin\x17akraḍaggur wis-kraḍ" + - "\x16akraḍaggur wis-kuẓ\x07n tufat\x09n tmeddit\x14send talalit n Ɛisa" + - "\x14seld talalit n Ɛisa\x09snd. T.Ɛ\x09sld. T.Ɛ\x06Tallit\x07Aseggas\x05" + - "Aggur\x05Ddurt\x03Ass\x08Iḍelli\x05Ass-a\x06Azekka\x0dUssan n ddurt\x13n" + - " tufat / n tmeddit\x06Tamert\x07Tamrect\x06Tasint\x0fAseglem asergan\x0c" + - "Mwai wa mbee\x0dMwai wa kelĩ\x0fMwai wa katatũ\x0cMwai wa kana\x0eMwai w" + - "a katano\x12Mwai wa thanthatũ\x0eMwai wa muonza\x0fMwai wa nyaanya\x0dMw" + - "ai wa kenda\x0eMwai wa ĩkumi\x17Mwai wa ĩkumi na ĩmwe\x16Mwai wa ĩkumi n" + - "a ilĩ\x03Wky\x03Wkw\x03Wkl\x04Wtũ\x03Wkn\x03Wtn\x03Wth\x09Wa kyumwa\x10W" + - "a kwambĩlĩlya\x08Wa kelĩ\x0aWa katatũ\x07Wa kana\x09Wa katano\x0dWa than" + - "thatũ\x0cLovo ya mbee\x0dLovo ya kelĩ\x0fLovo ya katatũ\x0cLovo ya kana" + - "\x0aĨyakwakya\x09Ĩyawĩoo\x0dMbee wa Yesũ\x0fĨtina wa Yesũ\x02MY\x02IY" + - "\x07Ĩvinda\x04Mwai\x06Kyumwa\x05Ĩyoo\x0aŨmũnthĩ\x05Ũnĩ\x09Kyumwanĩ\x14Ĩy" + - "akwakya/Ĩyawĩoo\x08Ndatĩka\x10Kĩsio kya ĩsaa\x0cMwedi Ntandi\x0dMwedi wa" + - " Pili\x0dMwedi wa Tatu\x10Mwedi wa Nchechi\x0fMwedi wa Nnyano\x16Mwedi w" + - "a Nnyano na Umo\x19Mwedi wa Nnyano na Mivili\x19Mwedi wa Nnyano na Mitat" + - "u\x1aMwedi wa Nnyano na Nchechi\x19Mwedi wa Nnyano na Nnyano\x1eMwedi wa" + - " Nnyano na Nnyano na U\x1eMwedi wa Nnyano na Nnyano na M\x03Ll2\x03Ll3" + - "\x03Ll4\x03Ll5\x03Ll6\x03Ll7\x03Ll1\x0eLiduva lyapili\x0eLiduva lyatatu" + - "\x11Liduva lyanchechi\x10Liduva lyannyano\x19Liduva lyannyano na linji" + - "\x1aLiduva lyannyano na mavili\x0eLiduva litandi\x04Muhi\x05Chilo\x0eAka" + - "napawa Yesu\x0dNankuida Yesu\x02AY\x02NY\x06Mahiku\x05Mwedi\x06Lijuma" + - "\x06Lihiku\x04Lido\x04Nelo\x05Nundu\x11Disiku dya lijuma\x0aMuhi/Chilo" + - "\x0eNpanda wa muda\x1aEEEE, d 'di' MMMM 'di' y G\x14d 'di' MMMM 'di' y G" + - "\x06Janeru\x07Febreru\x05Marsu\x05Abril\x04Maiu\x05Junhu\x05Julhu\x06Ago" + - "stu\x08Setenbru\x06Otubru\x08Nuvenbru\x08Dizenbru\x02du\x02si\x02te\x02k" + - "u\x02ki\x02se\x02sa\x07dumingu\x0csigunda-fera\x0atersa-fera\x0bkuarta-f" + - "era\x0akinta-fera\x0asesta-fera\x06sabadu\x07sábadu\x0d1º trimestri\x0d2" + - "º trimestri\x0d3º trimestri\x0d4º trimestri\x0fAntis di Kristu\x12Antis" + - " di Era Kumun\x10Dispos di Kristu\x09Era Kumun\x03AEK\x02EK\x18EEEE, d '" + - "di' MMMM 'di' y\x12d 'di' MMMM 'di' y\x03Anu\x0aanu pasadu\x09es anu li" + - "\x0cprósimu anu\x0ddi li {0} anu\x0da ten {0} anu\x03anu\x09Trimestri" + - "\x13di li {0} trimestri\x13a ten {0} trimestri\x0fdi li {0} trim.\x0fa t" + - "en {0} trim.\x0ames pasadu\x09es mes li\x0cprósimu mes\x0ddi li {0} mes" + - "\x0da ten {0} mes\x06Simana\x0dsimana pasadu\x0ces simana li\x0fprósimu " + - "simana\x10di li {0} simana\x10a ten {0} simana\x04sim.\x0edi li {0} sim." + - "\x0ea ten {0} sim.\x04onti\x03oji\x05manha\x0ddi li {0} dia\x0da ten {0}" + - " dia\x0dDia di simana\x0edumingu pasadu\x0des dumingu li\x10prósimu dumi" + - "ngu\x0bdum. pasadu\x0aes dum. li\x0dprósimu dum.\x13sigunda-fera pasadu" + - "\x12es sigunda-fera li\x15prósimu sigunda-fera\x0bsig. pasadu\x0aes sig." + - " li\x0dprósimu sig.\x11tersa-fera pasadu\x10es tersa-fera li\x13prósimu " + - "tersa-fera\x0bter. pasadu\x0aes ter. li\x0dprósimu ter.\x12kuarta-fera p" + - "asadu\x11es kuarta-fera li\x14prósimu kuarta-fera\x0bkua. pasadu\x0aes k" + - "ua. li\x0dprósimu kua.\x11kinta-fera pasadu\x10es kinta-fera li\x13prósi" + - "mu kinta-fera\x0bkin. pasadu\x0aes kin. li\x0dprósimu kin.\x11sesta-fera" + - " pasadu\x10es sesta-fera li\x13prósimu sesta-fera\x0bses. pasadu\x0aes s" + - "es. li\x0dprósimu ses.\x0dsabadu pasadu\x0ces sabadu li\x0fprósimu sabad" + - "u\x0bsab. pasadu\x0aes sab. li\x0dprósimu sab.\x03Ora\x0ddi li {0} ora" + - "\x0da ten {0} ora\x06Minutu\x10di li {0} minutu\x10a ten {0} minutu\x0dd" + - "i li {0} min\x0da ten {0} min\x0bdi li {0} m\x0ba ten {0} m\x07Sigundu" + - "\x11di li {0} sigundu\x11a ten {0} sigundu\x0ddi li {0} sig\x0da ten {0}" + - " sig\x0bdi li {0} s\x0ba ten {0} s\x09Ora lokal\x0aOra di {0}\x13Ora di " + - "{0} (verãu)\x13Ora di {0} (normal)\x15Ora di Afrika Sentral\x16Ora di Af" + - "rika Oriental\x14Ora di Sul di Afrika\x17Ora di Afrika Osidental\x1fOra " + - "Padrãu di Afrika Osidental!Ora di Verão di Afrika Osidental\x0bOra Sentr" + - "al\x13Ora Sentral Padrãu\x15Ora Sentral di Verãu\x0cOra Oriental\x14Ora " + - "Oriental Padrãu\x16Ora Oriental di Verãu\x0fOra di Montanha\x17Ora di Mo" + - "ntanha Padrãu\x19Ora di Verãu di Montanha\x0fOra di Pasifiku\x17Ora di P" + - "asifiku Padrãu\x19Ora di Pasifiku di Verãu\x10Ora di Atlantiku\x18Ora Pa" + - "drãu di Atlantiku\x1aOra di Verãu di Atlantiku\x18Ora di Australia Sentr" + - "al Ora Padrãu di Australia Sentral\x22Ora di Verãu di Australia Sentral " + - "Ora di Autralia Sentru-Osidental)Ora Padrãu di Australia Sentru-Osidenta" + - "l+Ora di Verãu di Australia Sentru-Osidental\x19Ora di Australia Orienta" + - "l!Ora Padrãu di Australia Oriental#Ora di Verãu di Australia Oriental" + - "\x1aOra di Australia Osidental\x22Ora Padrãu di Australia Osidental$Ora " + - "di Verãu di Australia Osidental\x15Ora di Europa Sentral\x1dOra Padrãu d" + - "i Europa Sentral\x1fOra di Verãu di Europa Sentral\x16Ora di Europa Orie" + - "ntal\x1eOra Padrãu di Europa Oriental Ora di Verãu di Europa Oriental" + - "\x17Ora di Europa Osidental\x1fOra Padrãu di Europa Osidental!Ora di Ver" + - "ãu di Europa Osidental\x06Adduha\x06Aluula\x05Jaari\x12Adduha wala Aluu" + - "la\x03JEN\x03WKR\x03WGT\x03WKN\x03WTN\x03WTD\x03WMJ\x03WNN\x03WKD\x03WIK" + - "\x03WMW\x03DIT\x09Njenuarĩ\x0eMwere wa kerĩ\x10Mwere wa gatatũ\x0dMwere " + - "wa kana\x0fMwere wa gatano\x13Mwere wa gatandatũ\x12Mwere wa mũgwanja" + - "\x0fMwere wa kanana\x0eMwere wa kenda\x0fMwere wa ikũmi\x18Mwere wa ikũm" + - "i na ũmwe\x09Ndithemba\x03KMA\x03NTT\x03NMN\x03NMT\x03ART\x03NMA\x03NMM" + - "\x0dRobo ya mbere\x0dRobo ya kerĩ\x0fRobo ya gatatũ\x0cRobo ya kana\x06K" + - "iroko\x0aHwaĩ-inĩ\x08Kĩhinda\x03Ira\x09Ũmũthĩ\x07Rũciũ\x12Mũcooro wa mat" + - "haa\x16G y 'ж'. d MMMM, EEEE\x10G y 'ж'. d MMMM\x09G dd.MM.y\x07қаң.\x07" + - "ақп.\x07нау.\x07сәу.\x07мам.\x07мау.\x07шіл.\x07там.\x07қыр.\x07қаз." + - "\x07қар.\x07жел.\x02Қ\x02А\x02Н\x02С\x02М\x02Ш\x02Т\x02Ж\x0cқаңтар\x0aақ" + - "пан\x0cнаурыз\x0aсәуір\x0aмамыр\x0cмаусым\x0aшілде\x0aтамыз\x10қыркүйек" + - "\x0aқазан\x0cқараша\x12желтоқсан\x07Қаң.\x07Ақп.\x07Нау.\x07Сәу.\x07Мам." + - "\x07Мау.\x07Шіл.\x07Там.\x07Қыр.\x07Қаз.\x07Қар.\x07Жел.\x0cҚаңтар\x0aАқ" + - "пан\x0cНаурыз\x0aСәуір\x0aМамыр\x0cМаусым\x0aШілде\x0aТамыз\x10Қыркүйек" + - "\x0aҚазан\x0cҚараша\x12Желтоқсан\x04Жс\x04Дс\x04Сс\x04Ср\x04Бс\x04Жм\x04" + - "Сб\x02Д\x02Б\x10жексенбі\x10дүйсенбі\x10сейсенбі\x10сәрсенбі\x10бейсенб" + - "і\x08жұма\x0aсенбі\x10Жексенбі\x10Дүйсенбі\x10Сейсенбі\x10Сәрсенбі\x10Б" + - "ейсенбі\x08Жұма\x0aСенбі\x06І ш.\x08ІІ ш.\x0aІІІ ш.\x06IV ш.\x0dІ ширек" + - "\x0fІІ ширек\x11ІІІ ширек\x0dIV ширек\x13түн жарымы\x0aтүскі\x0aтаңғы" + - "\x1bтүстен кейінгі\x0aкешкі\x0aтүнгі\x0cталтүс\x06таң\x17түстен кейін" + - "\x06кеш\x06түн.Біздің заманымызға дейін\x1fБіздің заманымыз\x09б.з.д." + - "\x06б.з.\x14y 'ж'. d MMMM, EEEE\x0ey 'ж'. d MMMM\x0ey 'ж'. dd MMM\x0aдәу" + - "ір\x06жыл\x17былтырғы жыл\x13биылғы жыл\x13келесі жыл\x1b{0} жылдан кей" + - "ін\x15{0} жыл бұрын\x03ж.\x12{0} ж. кейін\x12{0} ж. бұрын\x0aширек\x15ө" + - "ткен ширек\x11осы ширек\x17келесі ширек\x1f{0} ширектен кейін\x19{0} ши" + - "рек бұрын\x12{0} ш. кейін\x12{0} ш. бұрын\x04ай\x0fөткен ай\x0bосы ай" + - "\x11келесі ай\x19{0} айдан кейін\x13{0} ай бұрын\x08апта\x13өткен апта" + - "\x0fосы апта\x15келесі апта\x1d{0} аптадан кейін\x17{0} апта бұрын\x10{0" + - "} аптасы\x05ап.\x14{0} ап. кейін\x14{0} ап. бұрын\x06күн\x12алдыңгүні" + - "\x08кеше\x0aбүгін\x0aертең\x12бүрсігүні\x1b{0} күннен кейін\x15{0} күн б" + - "ұрын\x17алдыңғы күні\x11апта күні\x1bөткен жексенбі\x17осы жексенбі\x1d" + - "келесі жексенбі%{0} жексенбіден кейін\x1f{0} жексенбі бұрын\x12өткен же" + - "к.\x0eосы жек.\x14келесі жек.\x0fөткен жс\x0bосы жс\x11келесі жс\x1bөтк" + - "ен дүйсенбі\x17осы дүйсенбі\x1dкелесі дүйсенбі%{0} дүйсенбіден кейін" + - "\x1f{0} дүйсенбі бұрын\x12өткен дүй.\x0eосы дүй.\x14келесі дүй.\x0fөткен" + - " дс\x0bосы дс\x11келесі дс\x1bөткен сейсенбі\x17осы сейсенбі\x1dкелесі с" + - "ейсенбі%{0} сейсенбіден кейін\x1f{0} сейсенбі бұрын\x12өткен сей.\x0eос" + - "ы сей.\x14келесі сей.\x0fөткен сс\x0bосы сс\x11келесі сс\x1bөткен сәрсе" + - "нбі\x17осы сәрсенбі\x1dкелесі сәрсенбі%{0} сәрсенбіден кейін\x1f{0} сәр" + - "сенбі бұрын\x12өткен сәр.\x0eосы сәр.\x14келесі сәр.\x0fөткен ср\x0bосы" + - " ср\x11келесі ср\x1bөткен бейсенбі\x17осы бейсенбі\x1dкелесі бейсенбі%{0" + - "} бейсенбіден кейін\x1f{0} бейсенбі бұрын\x12өткен бей.\x0eосы бей.\x14к" + - "елесі бей.\x0fөткен бс\x0bосы бс\x11келесі бс\x02Д\x02И\x02EY\x03ƐY\x03" + - "gli\x02ma\x02me\x03gie\x02ve\x02so\x02О\x02К\x02М\x02Ы\x02А\x02С\x02Ч" + - "\x03Mar\x03Ibr\x03May\x03Cut\x05Kṭu\x03Nwa\x03Duj\x08Yebrayer\x04Mars" + - "\x05Ibrir\x06Yulyuz\x08Cutanbir\x08Kṭuber\x07Nwanbir\x08Dujanbir\x02Л" + - "\x02В\x02Г\x03Fev\x03Apr\x03Iyn\x03Iyl\x03Avg\x03Sen\x03Okt\x03Noy\x03De" + - "k" - -var bucket56 string = "" + // Size: 14174 bytes - "\x13өткен жұма\x0fосы жұма\x15келесі жұма\x1d{0} жұмадан кейін\x17{0} жұ" + - "ма бұрын\x12өткен жұм.\x0eосы жұм.\x14келесі жұм.\x0fөткен жм\x0bосы жм" + - "\x11келесі жм\x15өткен сенбі\x11осы сенбі\x17келесі сенбі\x1f{0} сенбіде" + - "н кейін\x19{0} сенбі бұрын\x12өткен сен.\x0eосы сен.\x14келесі сен.\x0f" + - "өткен сб\x0bосы сб\x11келесі сб\x09АМ/РМ\x0aсағат\x11осы сағат\x1f{0} с" + - "ағаттан кейін\x19{0} сағат бұрын\x06сағ\x16{0} сағ. кейін\x16{0} сағ. б" + - "ұрын\x11осы минут\x1f{0} минуттан кейін\x19{0} минут бұрын\x16{0} мин. " + - "кейін\x16{0} мин. бұрын\x0aқазір!{0} секундтан кейін\x1b{0} секунд бұры" + - "н\x16{0} сек. кейін\x16{0} сек. бұрын\x19уақыт белдеуі\x10{0} уақыты" + - "\x1b{0} жазғы уақыты%{0} стандартты уақыты>Дүниежүзілік үйлестірілген уа" + - "қыт.Ұлыбритания жазғы уақыты(Ирландия жазғы уақыты\x1fАуғанстан уақыты(" + - "Орталық Африка уақыты$Шығыс Африка уақыты*Оңтүстік Африка уақыты$Батыс " + - "Африка уақыты9Батыс Африка стандартты уақыты/Батыс Африка жазғы уақыты" + - "\x19Аляска уақыты.Аляска стандартты уақыты$Аляска жазғы уақыты\x19Амазон" + - " уақыты.Амазон стандартты уақыты$Амазон жазғы уақыты=Солтүстік Америка о" + - "рталық уақытыRСолтүстік Америка стандартты орталық уақытыHСолтүстік Аме" + - "рика жазғы орталық уақыты9Солтүстік Америка шығыс уақытыNСолтүстік Амер" + - "ика стандартты шығыс уақытыDСолтүстік Америка жазғы шығыс уақыты5Солтүс" + - "тік Америка тау уақытыJСолтүстік Америка стандартты тау уақыты@Солтүсті" + - "к Америка жазғы тау уақытыFСолтүстік Америка Тынық мұхиты уақыты[Солтүс" + - "тік Америка стандартты Тынық мұхиты уақытыQСолтүстік Америка жазғы Тыны" + - "қ мұхиты уақыты\x15Апиа уақыты*Апиа стандартты уақыты Апиа жазғы уақыты" + - "&Сауд Арабиясы уақыты;Сауд Арабиясы стандартты уақыты1Сауд Арабиясы жазғ" + - "ы уақыты\x1fАргентина уақыты4Аргентина стандартты уақыты*Аргентина жазғ" + - "ы уақыты*Батыс Аргентина уақыты?Батыс Аргентина стандартты уақыты5Батыс" + - " Аргентина жазғы уақыты\x1bАрмения уақыты0Армения стандартты уақыты&Арме" + - "ния жазғы уақыты\x1fАтлантика уақыты4Атлантика стандартты уақыты*Атлант" + - "ика жазғы уақыты.Австралия орталық уақытыCАвстралия стандартты орталық " + - "уақыты9Австралия жазғы орталық уақыты9Австралия орталық-батыс уақытыNАв" + - "стралия стандартты орталық-батыс уақытыDАвстралия жазғы орталық-батыс у" + - "ақыты*Австралия шығыс уақыты?Австралия стандартты шығыс уақыты5Австрали" + - "я жазғы шығыс уақыты*Австралия батыс уақыты?Австралия стандартты батыс " + - "уақыты5Австралия жазғы батыс уақыты!Әзірбайжан уақыты6Әзірбайжан станда" + - "ртты уақыты,Әзірбайжан жазғы уақыты&Азор аралдары уақыты;Азор аралдары " + - "стандартты уақыты1Азор аралдары жазғы уақыты\x1fБангладеш уақыты4Бангла" + - "деш стандартты уақыты*Бангладеш жазғы уақыты\x17Бутан уақыты\x1bБоливия" + - " уақыты\x1dБразилия уақыты2Бразилия стандартты уақыты(Бразилия жазғы уақ" + - "ыты.Бруней-Даруссалам уақыты Кабо-Верде уақыты5Кабо-Верде стандартты уа" + - "қыты+Кабо-Верде жазғы уақыты0Чаморро стандартты уақыты\x17Чатем уақыты," + - "Чатем стандартты уақыты\x22Чатем жазғы уақыты\x15Чили уақыты*Чили станд" + - "артты уақыты Чили жазғы уақыты\x17Қытай уақыты,Қытай стандартты уақыты" + - "\x22Қытай жазғы уақыты\x1fЧойбалсан уақыты4Чойбалсан стандартты уақыты*Ч" + - "ойбалсан жазғы уақыты0Рождество аралының уақыты.Кокос аралдарының уақыт" + - "ы\x1dКолумбия уақыты2Колумбия стандартты уақыты(Колумбия жазғы уақыты*К" + - "ук аралдарының уақыты?Кук аралдарының стандартты уақытыFКук аралдарының" + - " жартылай жазғы уақыты\x15Куба уақыты*Куба стандартты уақыты Куба жазғы " + - "уақыты\x19Дейвис уақыты)Дюмон-д’Юрвиль уақыты\x22Шығыс Тимор уақыты\x22" + - "Пасха аралы уақыты7Пасха аралы стандартты уақыты-Пасха аралы жазғы уақы" + - "ты\x1bЭквадор уақыты(Орталық Еуропа уақыты=Орталық Еуропа стандартты уа" + - "қыты3Орталық Еуропа жазғы уақыты$Шығыс Еуропа уақыты9Шығыс Еуропа станд" + - "артты уақыты/Шығыс Еуропа жазғы уақыты-Қиыр Шығыс Еуропа уақыты$Батыс Е" + - "уропа уақыты9Батыс Еуропа стандартты уақыты/Батыс Еуропа жазғы уақыты.Ф" + - "олкленд аралдары уақытыCФолкленд аралдары стандартты уақыты9Фолкленд ар" + - "алдары жазғы уақыты\x17Фиджи уақыты,Фиджи стандартты уақыты\x22Фиджи жа" + - "зғы уақыты,Француз Гвианасы уақыты]Францияның оңтүстік аймағы және Анта" + - "рктика уақыты\x1fГалапагос уақыты\x19Гамбье уақыты\x19Грузия уақыты.Гру" + - "зия стандартты уақыты$Грузия жазғы уақыты2Гилберт аралдарының уақыты" + - "\x1bГринвич уақыты,Шығыс Гренландия уақытыAШығыс Гренландия стандартты у" + - "ақыты7Шығыс Гренландия жазғы уақыты,Батыс Гренландия уақытыAБатыс Гренл" + - "андия стандартты уақыты7Батыс Гренландия жазғы уақыты(Парсы шығанағы уа" + - "қыты\x19Гайана уақыты<Гавай және Алеут аралдары уақытыQГавай және Алеут" + - " аралдары стандартты уақытыGГавай және Алеут аралдары жазғы уақыты\x1bГо" + - "нконг уақыты0Гонконг стандартты уақыты&Гонконг жазғы уақыты\x15Ховд уақ" + - "ыты*Ховд стандартты уақыты Ховд жазғы уақыты2Үндістан стандартты уақыты" + - "(Үнді мұхитының уақыты\x1fҮндіқытай уақыты.Орталық Индонезия уақыты*Шығы" + - "с Индонезия уақыты*Батыс Индонезия уақыты\x15Иран уақыты*Иран стандартт" + - "ы уақыты Иран жазғы уақыты\x1bИркутск уақыты0Иркутск стандартты уақыты&" + - "Иркутск жазғы уақыты\x1bИзраиль уақыты0Израиль стандартты уақыты&Израил" + - "ь жазғы уақыты\x1bЖапония уақыты0Жапония стандартты уақыты&Жапония жазғ" + - "ы уақыты*Шығыс Қазақстан уақыты*Батыс Қазақстан уақыты\x17Корея уақыты," + - "Корея стандартты уақыты\x22Корея жазғы уақыты\x19Косраэ уақыты!Краснояр" + - "ск уақыты6Красноярск стандартты уақыты,Красноярск жазғы уақыты!Қырғызст" + - "ан уақыты,Лайн аралдарының уақыты\x1cЛорд-Хау уақыты1Лорд-Хау стандартт" + - "ы уақыты'Лорд-Хау жазғы уақыты(Маккуори аралы уақыты\x1bМагадан уақыты0" + - "Магадан стандартты уақыты&Магадан жазғы уақыты\x1dМалайзия уақыты2Мальд" + - "ив аралдарының уақыты0Маркиз аралдарының уақыты2Маршалл аралдарының уақ" + - "ыты\x1dМаврикий уақыты2Маврикий стандартты уақыты(Маврикий жазғы уақыты" + - "\x19Моусон уақыты9Солтүстік-Батыс Мексика уақытыNСолтүстік-Батыс Мексика" + - " стандартты уақытыDСолтүстік-Батыс Мексика жазғы уақыты1Мексика Тынық мұ" + - "хит уақытыFМексика стандартты Тынық мұхит уақыты<Мексика жазғы Тынық мұ" + - "хит уақыты Улан-Батор уақыты5Улан-Батор стандартты уақыты+Улан-Батор жа" + - "зғы уақыты\x19Мәскеу уақыты.Мәскеу стандартты уақыты$Мәскеу жазғы уақыт" + - "ы\x19Мьянма уақыты\x17Науру уақыты\x17Непал уақыты(Жаңа Каледония уақыт" + - "ы=Жаңа Каледония стандартты уақыты3Жаңа Каледония жазғы уақыты&Жаңа Зел" + - "андия уақыты;Жаңа Зеландия стандартты уақыты1Жаңа Зеландия жазғы уақыты" + - "%Ньюфаундленд уақыты:Ньюфаундленд стандартты уақыты0Ньюфаундленд жазғы у" + - "ақыты\x15Ниуэ уақыты&Норфолк аралы уақыты1Фернанду-ди-Норонья уақытыFФе" + - "рнанду-ди-Норонья стандартты уақыты<Фернанду-ди-Норонья жазғы уақыты" + - "\x1fНовосібір уақыты4Новосібір стандартты уақыты*Новосібір жазғы уақыты" + - "\x15Омбы уақыты*Омбы стандартты уақыты Омбы жазғы уақыты\x1dПәкістан уақ" + - "ыты2Пәкістан стандартты уақыты(Пәкістан жазғы уақыты\x17Палау уақыты1Па" + - "пуа – Жаңа Гвинея уақыты\x1dПарагвай уақыты2Парагвай стандартты уақыты(" + - "Парагвай жазғы уақыты\x15Перу уақыты*Перу стандартты уақыты Перу жазғы " + - "уақыты\x1dФилиппин уақыты2Филиппин стандартты уақыты(Филиппин жазғы уақ" + - "ыты0Феникс аралдарының уақыты4Сен-Пьер және Микелон уақытыIСен-Пьер жән" + - "е Микелон стандартты уақыты?Сен-Пьер және Микелон жазғы уақыты\x1bПиткэ" + - "рн уақыты\x19Понапе уақыты\x1bПхеньян уақыты\x1bРеюньон уақыты\x19Ротер" + - "а уақыты\x1bСахалин уақыты0Сахалин стандартты уақыты&Сахалин жазғы уақы" + - "ты\x17Самоа уақыты,Самоа стандартты уақыты\x22Самоа жазғы уақыты\x1bСей" + - "шель уақыты2Сингапур стандартты уақыты2Соломон аралдарының уақыты,Оңтүс" + - "тік Георгия уақыты\x1bСуринам уақыты\x15Сёва уақыты\x17Таити уақыты\x19" + - "Тайбэй уақыты.Тайбэй стандартты уақыты$Тайбэй жазғы уақыты\x1fТәжікстан" + - " уақыты\x1bТокелау уақыты\x17Тонга уақыты,Тонга стандартты уақыты\x22Тон" + - "га жазғы уақыты\x15Чуук уақыты%Түрікменстан уақыты:Түрікменстан стандар" + - "тты уақыты0Түрікменстан жазғы уақыты\x19Тувалу уақыты\x1bУругвай уақыты" + - "0Уругвай стандартты уақыты&Уругвай жазғы уақыты\x1fӨзбекстан уақыты4Өзбе" + - "кстан стандартты уақыты*Өзбекстан жазғы уақыты\x1bВануату уақыты0Вануат" + - "у стандартты уақыты&Вануату жазғы уақыты\x1fВенесуэла уақыты#Владивосто" + - "к уақыты8Владивосток стандартты уақыты.Владивосток жазғы уақыты\x1fВолг" + - "оград уақыты4Волгоград стандартты уақыты*Волгоград жазғы уақыты\x19Вост" + - "ок уақыты&Уэйк аралының уақыты/Уоллис және Футуна уақыты\x19Якутск уақы" + - "ты.Якутск стандартты уақыты$Якутск жазғы уақыты%Екатеринбург уақыты:Ека" + - "теринбург стандартты уақыты0Екатеринбург жазғы уақыты" - -var bucket57 string = "" + // Size: 29036 bytes - "\x0ddd/MM y GGGGG\x05pamba\x05wanja\x12mbiyɔ mɛndoŋgɔ\x10Nyɔlɔmbɔŋgɔ\x0f" + - "Mɔnɔ ŋgbanja\x12Nyaŋgwɛ ŋgbanja\x08kuŋgwɛ\x03fɛ\x05njapi\x06nyukul\x0211" + - "\x0aɓulɓusɛ\x06sɔndi\x05lundi\x05mardi\x0cmɛrkɛrɛdi\x04yedi\x0cvaŋdɛrɛdi" + - "\x0dmɔnɔ sɔndi\x07dd/MM y\x04kwey\x04muka\x09nɛmɛnɔ\x07januari\x08februa" + - "ri\x06martsi\x06aprili\x04maji\x04juni\x04juli\x09augustusi\x0aseptember" + - "i\x08oktoberi\x09novemberi\x09decemberi\x06sabaat\x0eataasinngorneq\x0dm" + - "arlunngorneq\x0fpingasunngorneq\x0esisamanngorneq\x0ftallimanngorneq\x0e" + - "arfininngorneq\x02S1\x02S2\x02S3\x02S4\x18ukiup sisamararterutaa 1\x18uk" + - "iup sisamararterutaa 2\x18ukiup sisamararterutaa 3\x18ukiup sisamararter" + - "utaa 4\x04u.t.\x04u.k.\x12ulloqeqqata-tungaa\x14ulloqeqqata-kingorna\x22" + - "Kristusip inunngornerata siornagut$Kristusip inunngornerata kingornagut" + - "\x09Kr.in.si.\x0bKr.in.king.\x05Kr.s.\x05Kr.k.\x05ukioq\x0fkingulleq uki" + - "oq\x0bmanna ukioq\x0ctulleq ukioq\x0com {0} ukioq\x13for {0} ukioq siden" + - "\x07qaammat\x11kingulleq qaammat\x0dmanna qaammat\x0etulleq qaammat\x0eo" + - "m {0} qaammat\x15for {0} qaammat siden\x11sapaatip-akunnera\x1bkingulleq" + - " sapaatip-akunnera\x17manna sapaatip-akunnera\x18tulleq sapaatip-akunner" + - "a\x18om {0} sapaatip-akunnera\x1ffor {0} sapaatip-akunnera siden\x05ullo" + - "q\x0aippassaani\x08ippassaq\x06ullumi\x05aqagu\x08aqaguagu\x15om {0} ull" + - "oq unnuarlu\x1cfor {0} ulloq unnuarlu siden\x19sapaatip akunnerata ullui" + - "\x22sapaat kingulleq sapaatip-akunnera\x1esapaat manna sapaatip-akunnera" + - "\x1fsapaat tulleq sapaatip-akunnera*ataasinngorneq kingulleq sapaatip-ak" + - "unnera&ataasinngorneq manna sapaatip-akunnera'ataasinngorneq tulleq sapa" + - "atip-akunnera)marlunngorneq kingulleq sapaatip-akunnera%marlunngorneq ma" + - "nna sapaatip-akunnera&marlunngorneq tulleq sapaatip-akunnera+pingasunngo" + - "rneq kingulleq sapaatip-akunnera'pingasunngorneq manna sapaatip-akunnera" + - "(pingasunngorneq tulleq sapaatip-akunnera*sisamanngorneq kingulleq sapaa" + - "tip-akunnera&sisamanngorneq manna sapaatip-akunnera'sisamanngorneq tulle" + - "q sapaatip-akunnera+tallimanngorneq kingulleq sapaatip-akunnera'talliman" + - "ngorneq manna sapaatip-akunnera(tallimanngorneq tulleq sapaatip-akunnera" + - "*arfininngorneq kingulleq sapaatip-akunnera&arfininngorneq manna sapaati" + - "p-akunnera'arfininngorneq tulleq sapaatip-akunnera\x0fpiffissaq ulloq" + - "\x16nalunaaquttap-akunnera\x1dom {0} nalunaaquttap-akunnera$for {0} nalu" + - "naaquttap-akunnera siden\x07minutsi\x0eom {0} minutsi\x15for {0} minutsi" + - " siden\x07sekundi\x0buisoriinnaq\x0eom {0} sekundi\x15for {0} sekundi si" + - "den\x18nalunaaqutaqaqatigiissut\x06Mulgul\x0cNg’atyaato\x08Kiptaamo\x09I" + - "wootkuut\x06Mamuut\x05Paagi\x0bNg’eiyeet\x07Rooptui\x06Bureet\x06Epeeso" + - "\x11Kipsuunde ne taai\x16Kipsuunde nebo aeng’\x03Kts\x03Kot\x03Koo\x03Ko" + - "s\x03Koa\x03Kom\x03Kol\x07Kotisap\x06Kotaai\x09Koaeng’\x07Kosomok\x0bKoa" + - "ng’wan\x06Komuut\x04Kolo\x0aRobo netai\x11Robo nebo aeng’\x0fRobo nebo s" + - "omok\x13Robo nebo ang’wan\x03krn\x05koosk\x06karoon\x0akooskoliny\x11Ama" + - "it kesich Jesu\x0fKokakesich Jesu\x06Ibinta\x06Kenyit\x06Arawet\x05Wikit" + - "\x05Betut\x04Amut\x05Raini\x05Mutai\x0dBetutab wikit\x05BE/KE\x04Sait" + - "\x07Minitit\x08Sekondit\x0cSaitab sonit\x08ព.ស.\x1d{1} នៅ\u200bម៉ោង {0}" + - "\x0cមករា\x12កុម្ភៈ\x0cមីនា\x0cមេសា\x0cឧសភា\x12មិថុនា\x12កក្កដា\x0cសីហា" + - "\x0fកញ្ញា\x0cតុលា\x18វិច្ឆិកា\x0cធ្នូ\x03ម\x03ក\x03ឧ\x03ស\x03ត\x03វ\x03ធ" + - "\x15អាទិត្យ\x0fច័ន្ទ\x12អង្គារ\x09ពុធ\x1eព្រហស្បតិ៍\x0fសុក្រ\x0cសៅរ៍\x03" + - "អ\x03ច\x03ព\x06អា\x06ពុ\x09ព្រ\x06សុ\x1dត្រីមាសទី 1\x1dត្រីមាសទី 2\x1d" + - "ត្រីមាសទី 3\x1dត្រីមាសទី 4\x18អធ្រាត្រ\x1bថ្ងៃត្រង់\x0fព្រឹក\x0cរសៀល" + - "\x0fល្ងាច\x09យប់\x1eថ្ងៃ\u200bត្រង់0មុន\u200bគ្រិស្តសករាជ$គ្រិស្តសករាជ" + - "\x12មុន គ.ស.\x08គ.ស.\x0fសករាជ\x0fឆ្នាំ\x1bឆ្នាំ\u200bមុន\x1bឆ្នាំ\u200bន" + - "េះ!ឆ្នាំ\u200bក្រោយ\x1c{0} ឆ្នាំទៀត\x1f{0} ឆ្នាំ\u200bមុន\x15ត្រីមាស!ត" + - "្រីមាស\u200bមុន!ត្រីមាស\u200bនេះ'ត្រីមាស\u200bក្រោយ\x22{0} ត្រីមាសទៀត%" + - "{0} ត្រីមាស\u200bមុន\x06ខែ\x12ខែ\u200bមុន\x12ខែ\u200bនេះ\x18ខែ\u200bក្រោ" + - "យ\x13{0} ខែទៀត\x13{0} ខែមុន\x15សប្ដាហ៍!សប្ដាហ៍\u200bមុន!សប្ដាហ៍\u200bន" + - "េះ'សប្ដាហ៍\u200bក្រោយ\x22{0} សប្ដាហ៍ទៀត%{0} សប្ដាហ៍\u200bមុន\x1fសប្តាហ" + - "៍នៃ {0}\x0cថ្ងៃ!ម្សិល\u200bម៉្ងៃ\x18ម្សិលមិញ\x18ថ្ងៃ\u200bនេះ\x1eថ្ងៃ" + - "\u200bស្អែក\x1e\u200bខាន\u200bស្អែក\x19{0} ថ្ងៃទៀត\x1c{0} ថ្ងៃ\u200bមុន" + - "\x1bថ្ងៃស្អែក\x1f{0} ថ្ងៃ\u200b\u200bមុន-ថ្ងៃ\u200bនៃ\u200bសប្ដាហ៍0ថ្ងៃ" + - "\u200bអាទិត្យ\u200bមុន0ថ្ងៃ\u200bអាទិត្យ\u200bនេះ6ថ្ងៃ\u200bអាទិត្យ" + - "\u200bក្រោយDថ្ងៃអាទិត្យ {0} សប្តាហ៍ទៀតDថ្ងៃអាទិត្យ {0} សប្តាហ៍មុន*ថ្ងៃ" + - "\u200bច័ន្ទ\u200bមុន*ថ្ងៃ\u200bច័ន្ទ\u200bនេះ0ថ្ងៃ\u200bច័ន្ទ\u200bក្រោយ" + - ">ថ្ងៃច័ន្ទ {0} សប្តាហ៍ទៀត>ថ្ងៃច័ន្ទ {0} សប្តាហ៍មុន-ថ្ងៃ\u200bអង្គារ" + - "\u200bមុន-ថ្ងៃ\u200bអង្គារ\u200bនេះ3ថ្ងៃ\u200bអង្គារ\u200bក្រោយAថ្ងៃអង្គ" + - "ារ {0} សប្តាហ៍ទៀតAថ្ងៃអង្គារ {0} សប្តាហ៍មុន$ថ្ងៃ\u200bពុធ\u200bមុន$ថ្ង" + - "ៃ\u200bពុធ\u200bនេះ*ថ្ងៃ\u200bពុធ\u200bក្រោយ8ថ្ងៃពុធ {0} សប្តាហ៍ទៀត8ថ្" + - "ងៃពុធ {0} សប្តាហ៍មុន9ថ្ងៃ\u200bព្រហស្បតិ៍\u200bមុន9ថ្ងៃ\u200bព្រហស្បតិ" + - "៍\u200bនេះ?ថ្ងៃ\u200bព្រហស្បតិ៍\u200bក្រោយMថ្ងៃព្រហស្បតិ៍ {0} សប្តាហ៍ទ" + - "ៀតMថ្ងៃព្រហស្បតិ៍ {0} សប្តាហ៍មុន*ថ្ងៃ\u200bសុក្រ\u200bមុន*ថ្ងៃ\u200bសុ" + - "ក្រ\u200bនេះ0ថ្ងៃ\u200bសុក្រ\u200bក្រោយ>ថ្ងៃសុក្រ {0} សប្តាហ៍ទៀត>ថ្ងៃស" + - "ុក្រ {0} សប្តាហ៍មុន'ថ្ងៃ\u200bសៅរ៍\u200bមុន'ថ្ងៃ\u200bសៅរ៍\u200bនេះ-ថ្" + - "ងៃ\u200bសៅរ៍\u200bក្រោយ;ថ្ងៃសៅរ៍ {0} សប្តាហ៍ទៀត;ថ្ងៃសៅរ៍ {0} សប្តាហ៍មុ" + - "ន\x1fព្រឹក/ល្ងាច\x0cម៉ោង\x15ម៉ោងនេះ8ក្នុង\u200bរយៈ\u200bពេល {0} ម៉ោង" + - "\x1c{0} ម៉ោង\u200bមុន\x19{0} ម៉ោងទៀត\x0cនាទី\x15នាទីនេះ\x19{0} នាទីទៀត" + - "\x1c{0} នាទី\u200bមុន\x1f{0} នាទី\u200b\u200bមុន\x12វិនាទី\x0cឥឡូវ\x1f{0" + - "} វិនាទីទៀត\x22{0} វិនាទី\u200bមុន\x1bល្វែងម៉ោង\x1cម៉ោង\u200bនៅ\u200b {0" + - "}7ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200b {0}7ម៉ោង\u200bស្តង់ដារ\u200bនៅ " + - "\u200b{0}fម៉ោង\u200bរដូវ\u200bក្ដៅ\u200b\u200bនៅ\u200bចក្រភព\u200bអង់គ្ល" + - "េសKម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអៀរឡង់\u200bHម៉ោង\u200bនៅ" + - "\u200bអាហ្វហ្គានីស្ថានHម៉ោង\u200bនៅ\u200bអាហ្វ្រិក\u200bកណ្ដាលKម៉ោង" + - "\u200bនៅ\u200bអាហ្វ្រិក\u200bខាង\u200bកើតQម៉ោង\u200bនៅ\u200bអាហ្វ្រិក" + - "\u200bខាង\u200bត្បូងKម៉ោង\u200bនៅ\u200bអាហ្វ្រិក\u200bខាង\u200bលិចfម៉ោង" + - "\u200bស្តង់ដារ\u200bនៅ\u200bអាហ្វ្រិក\u200bខាង\u200bលិចoម៉ោង\u200b\u200b" + - "រដូវ\u200bក្ដៅ\u200bនៅ\u200bអាហ្វ្រិក\u200b\u200b\u200bខាងលិច0ម៉ោង" + - "\u200bនៅ\u200bអាឡាស្កាKម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាឡាស្កាNម៉ោង" + - "\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200b\u200bអាឡាស្កា0ម៉ោង\u200bនៅ\u200bអាម៉ាស" + - "ូនKម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាម៉ាសូនNម៉ោង\u200bរដូវ\u200bក្ដៅ" + - "\u200bនៅ\u200bអាម៉ាសូនfម៉ោង\u200bភាគ\u200bកណ្ដាល\u200bនៅ\u200bអាមេរិក" + - "\u200bខាង\u200bជើង\x81ម៉ោង\u200bស្តង់ដារ\u200bភាគ\u200bកណ្ដាល\u200bនៅ" + - "\u200bអាមេរិក\u200bខាង\u200bជើង\x81ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bភាគ" + - "\u200bកណ្ដាល\u200bនៅ\u200bអាមេរិក\u200bខាង\u200bជើងiម៉ោង\u200bភាគ\u200bខ" + - "ាង\u200bកើត\u200bនៅ\u200bអាមេរិក\u200bខាង\u200bជើង\x84ម៉ោង\u200bស្តង់ដ" + - "ារ\u200bភាគ\u200bខាង\u200bកើត\u200bនៅ\u200bអាមេរិក\u200bខាង\u200bជើង~ម" + - "៉ោង\u200bពេល\u200bថ្ងៃ\u200bភាគខាង\u200bកើតនៅ\u200bអាមេរិក\u200bខាង" + - "\u200bជើងrម៉ោង\u200bនៅ\u200bតំបន់\u200bភ្នំ\u200bអាមេរិក\u200bភាគ\u200bខ" + - "ាង\u200bជើង\x81ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bតំបន់\u200bភ្នំ\u200bអា" + - "មេរិក\u200bខាង\u200bជើង\x8dម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bតំបន់" + - "\u200bភ្នំ\u200bអាមេរិក\u200bភាគ\u200bខាង\u200bជើងfម៉ោង\u200bភាគ\u200bខា" + - "ង\u200bលិច\u200bនៅ\u200bអាមរិក\u200bខាង\u200bជើង\x84ម៉ោង\u200bស្តង់ដារ" + - "\u200bភាគ\u200bខាង\u200bលិច\u200bនៅ\u200bអាមេរិក\u200bខាង\u200bជើង\x90ម៉" + - "ោង\u200bពេល\u200bថ្ងៃ\u200b\u200bភាគ\u200bខាងលិច\u200bនៅ\u200bអាមេរិក" + - "\u200bភាគ\u200bខាង\u200bជើង*ម៉ោង\u200bនៅ\u200bអាប្យាBម៉ោង\u200bស្តង់ដា" + - "\u200bនៅ\u200bអាប្យាEម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bអាប្យា-ម៉ោង" + - "\u200bនៅ\u200bអារ៉ាប់Hម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអារ៉ាប់Hម៉ោង\u200b" + - "ពេល\u200bថ្ងៃ\u200bនៅ\u200bអារ៉ាប់0ម៉ោង\u200bនៅ\u200bអាសង់ទីនNម៉ោង" + - "\u200b\u200bស្តង់ដារ\u200bនៅ\u200bអាសង់ទីនNម៉ោង\u200bរដូវ\u200bក្ដៅ" + - "\u200bនៅ\u200bអាសង់ទីនNម៉ោង\u200bនៅ\u200bអាសង់\u200bទីន\u200b\u200bខាង" + - "\u200bលិចfម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាសង់ទីន\u200b\u200bខាង\u200bល" + - "ិចiម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអាសង់ទីន\u200b\u200bខាង\u200b" + - "លិច*ម៉ោង\u200bនៅ\u200bអាមេនីEម៉ោង\u200bស្ដង់ដារ\u200bនៅ\u200bអាមេនីHម៉" + - "ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអាមេនី6ម៉ោង\u200bនៅ\u200bអាត្លង់ទិ" + - "កQម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាត្លង់ទិកQម៉ោង\u200bពេល\u200bថ្ងៃ" + - "\u200bនៅ\u200bអាត្លង់ទិកHម៉ោង\u200bនៅអូស្ត្រាលី\u200bកណ្ដាលfម៉ោង\u200bស្" + - "តង់ដារ\u200bនៅ\u200bអូស្ត្រាលី\u200bកណ្ដាលlម៉ោង\u200bពេលថ្ងៃ\u200b" + - "\u200b\u200b\u200bនៅ\u200bអូស្ត្រាលី\u200bកណ្ដាល~ម៉ោង\u200bនៅ\u200b" + - "\u200b\u200bភាគ\u200bខាង\u200bលិច\u200bនៅ\u200bអូស្ត្រាលី\u200bកណ្ដាល" + - "\x93ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bភាគ\u200bខាង\u200bលិច\u200bនៃ\u200bអ" + - "ូស្ត្រាលី\u200bកណ្ដាល\x96ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200b\u200bភា" + - "គ\u200bខាង\u200bលិច\u200bនៃ\u200bអូស្ត្រាលី\u200bកណ្ដាលNម៉ោង\u200bនៅ" + - "\u200bអូស្ត្រាលី\u200bខាង\u200bកើតiម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអូស្ត" + - "្រាលី\u200bខាង\u200bកើតiម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bអូស្ត្រាល" + - "ី\u200bខាង\u200bកើតTម៉ោង\u200b\u200b\u200bនៅ\u200bអូស្ត្រាលី\u200bខាង" + - "\u200bលិចlម៉ោង\u200b\u200bស្តង់ដារ\u200bនៅ\u200bអូស្ត្រាលី\u200bខាង" + - "\u200bលិចiម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bអូស្ត្រាលី\u200bខាង\u200b" + - "លិច<ម៉ោង\u200bនៅ\u200bអាស៊ែបៃហ្សង់Wម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអាស" + - "៊ែបៃហ្សង់Zម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអាស៊ែបៃហ្សង់*ម៉ោង" + - "\u200bនៅ\u200bអេហ្សសEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអេហ្សសHម៉ោង\u200bរដ" + - "ូវ\u200bក្ដៅ\u200bនៅ\u200bអេហ្សស6ម៉ោង\u200bនៅ\u200bបង់ក្លាដែសQម៉ោង" + - "\u200bស្ដង់ដារ\u200bនៅ\u200bបង់ក្លាដែសTម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ" + - "\u200bបង់ក្លាដែស$ម៉ោងនៅប៊ូតាន*ម៉ោង\u200bនៅ\u200bបូលីវី<ម៉ោង\u200bនៅ" + - "\u200bប្រាស៊ីលីយ៉ាWម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bប្រាស៊ីលីយ៉ា]ម៉ោង" + - "\u200b\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bប្រាស៊ីលីយ៉ាEម៉ោងនៅប្រ៊ុយណេដារូស" + - "ាឡឹម-ម៉ោង\u200bនៅ\u200bកាប់វែរHម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bកាប់វែរ" + - "Kម៉ោង\u200b\u200bរដូវ\u200bក្ដៅនៅ\u200bកាប់វែរ3ម៉ោង\u200bនៅ\u200bចាំម៉ូរ" + - "៉ូ'ម៉ោង\u200bនៅ\u200bចាថាំBម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bចាថាំBម៉ោង" + - "\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bចាថាំ\x1eម៉ោងនៅឈីលី6ម៉ោងស្តង់ដារនៅឈីលី6" + - "ម៉ោងរដូវក្តៅនៅឈីលី!ម៉ោង\u200bនៅ\u200bចិន<ម៉ោង\u200bស្តង់ដារ\u200bនៅ" + - "\u200bចិន<ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bចិន3ម៉ោង\u200bនៅ\u200bឆូប" + - "ាល់សានNម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bឆូបាល់សានQម៉ោង\u200bរដូវ\u200bក" + - "្ដៅ\u200bនៅ\u200bឆូបាល់សាន?ម៉ោង\u200bនៅ\u200bកោះ\u200bគ្រីស្មាស3ម៉ោង" + - "\u200bនៅ\u200bកោះ\u200bកូកូស0ម៉ោង\u200bនៅ\u200bកូឡុំប៊ីKម៉ោង\u200bស្តង់ដ" + - "ារ\u200bនៅ\u200bកូឡុំប៊ីNម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bកូឡុំប៊" + - "ី-ម៉ោង\u200bនៅ\u200bកោះ\u200bខូកHម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bកោះ" + - "\u200bខូកoម៉ោង\u200b\u200bពាក់កណ្ដាល\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bកោ" + - "ះ\u200bខូក'ម៉ោង\u200bនៅ\u200bគុយបាBម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bគុយ" + - "បាBម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bគុយបា'ម៉ោង\u200bនៅ\u200bដាវីសH" + - "ម៉ោង\u200bនៅ\u200bឌុយម៉ុងដឺអ៊ុយវីលBម៉ោង\u200bនៅ\u200b\u200bទីម័រ\u200b" + - "ខាង\u200bកើត<ម៉ោង\u200bនៅ\u200bកោះ\u200b\u200bខាង\u200bកើតZម៉ោង\u200bស" + - "្តង់ដារ\u200bនៅ\u200bកោះ\u200b\u200b\u200bខាង\u200bកើតZម៉ោង\u200bរដូវ" + - "\u200bក្ដៅ\u200bនៅ\u200bកោះ\u200b\u200bខាង\u200bកើត3ម៉ោង\u200bនៅ\u200bអេ" + - "ក្វាទ័រ?ម៉ោង\u200bនៅ\u200bអឺរ៉ុប\u200bកណ្ដាលZម៉ោង\u200bស្តង់ដារ\u200bន" + - "ៅ\u200bអឺរ៉ុប\u200bកណ្ដាល]ម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអឺរ៉ុប" + - "\u200bកណ្ដាលHម៉ោង\u200bនៅ\u200bអឺរ៉ុប\u200b\u200bខាង\u200bកើត\u200bfម៉ោង" + - "\u200bស្តង់ដារ\u200b\u200bនៅ\u200bអឺរ៉ុប\u200b\u200bខាង\u200bកើត\u200bfម" + - "៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអឺរ៉ុប\u200b\u200bខាង\u200bកើត" + - "\u200bZម៉ោង\u200bនៅ\u200bចុងភាគ\u200bខាង\u200bកើត\u200bអឺរ៉ុប\u200bBម៉ោង" + - "\u200bនៅ\u200bអឺរ៉ុប\u200bខាង\u200bលិច]ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអ" + - "ឺរ៉ុប\u200bខាង\u200bលិច`ម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអឺរ៉ុប" + - "\u200bខាង\u200bលិច<ម៉ោង\u200bនៅ\u200bកោះ\u200bហ្វក់ឡែនWម៉ោង\u200bស្តង់ដា" + - "រ\u200bនៅ\u200bកោះ\u200bហ្វក់ឡែនZម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ" + - "\u200bកោះ\u200bហ្វក់ឡែន*ម៉ោង\u200bនៅ\u200bហ្វីជីHម៉ោង\u200bស្តង់ដារ" + - "\u200bនៅ\u200bហ៊្វីជីNម៉ោង\u200b\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bហ៊្វីជ" + - "ីEម៉ោង\u200bនៅ\u200bឃ្វីយ៉ាន\u200bបារាំងjម៉ោង\u200bនៅ\u200bអែតាឃីត និង" + - "\u200bបារាំង\u200bខាង\u200bត្បូង6ម៉ោង\u200bនៅ\u200bកាឡាប៉ាកូស'ម៉ោង\u200b" + - "នៅ\u200bកាំបៀ3ម៉ោង\u200bនៅ\u200bហ្សកហ្ស៊ីNម៉ោង\u200bស្តង់ដារ\u200bនៅ" + - "\u200bហ្សកហ្ស៊ីTម៉ោង\u200b\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bហ្សកហ្ស៊ី6ម៉" + - "ោង\u200bនៅ\u200bកោះ\u200bកីប៊ឺត*ម៉ោងនៅគ្រីនវិចQម៉ោង\u200b\u200bនៅ" + - "\u200bហ្គ្រីនលែន\u200bខាង\u200bកើតrម៉ោង\u200b\u200b\u200bស្តង់ដារ\u200bន" + - "ៅ\u200b\u200bហ្គ្រីនលែន\u200bខាង\u200bកើតiម៉ោង\u200bរដូវ\u200bក្ដៅ" + - "\u200bនៅ\u200bហ្គ្រីនលែនខាង\u200bកើតBម៉ោងនៅហ្គ្រីនលែនខាងលិចZម៉ោងស្តង់ដារ" + - "នៅហ្គ្រីនលែនខាងលិចZម៉ោងរដូវក្តៅនៅហ្គ្រីនលែនខាងលិច<ម៉ោង\u200bស្តង់ដា" + - "\u200bនៅ\u200bកាល់0ម៉ោង\u200bនៅ\u200bឃ្វីយ៉ានIម៉ោង\u200b\u200bនៅ\u200bហា" + - "វៃ-អាល់ដ្យូសិនdម៉ោង\u200bស្តង់ដារ\u200b\u200bនៅ\u200bហាវៃ-អាល់ដ្យូសិនa" + - "ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bហាវៃ-អាល់ដ្យូសិន*ម៉ោង\u200bនៅ" + - "\u200bហុងកុងEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bហុងកុងHម៉ោង\u200bរដូវ\u200b" + - "ក្ដៅ\u200bនៅ\u200bហុងកុង!ម៉ោង\u200bនៅ\u200bហូវ9ម៉ោង\u200bស្តង់ដារ" + - "\u200bនៅហូវ?ម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bហូវ'ម៉ោង\u200bនៅ\u200b" + - "ឥណ្ឌាEម៉ោង\u200bនៅ\u200bមហាសមុទ្រ\u200bឥណ្ឌា0ម៉ោង\u200bនៅ\u200bឥណ្ឌូចិ" + - "នQម៉ោង\u200bនៅ\u200bឥណ្ឌូណេស៊ី\u200b\u200b\u200bកណ្ដាលQម៉ោង\u200bនៅ" + - "\u200bឥណ្ឌូណេស៊ី\u200b\u200bខាង\u200bកើតQម៉ោង\u200bនៅ\u200bឥណ្ឌូណេស៊ី" + - "\u200b\u200bខាង\u200bលិច-ម៉ោង\u200bនៅ\u200bអ៊ីរ៉ង់Hម៉ោង\u200bស្តង់ដារ" + - "\u200bនៅ\u200bអ៊ីរ៉ង់Hម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bអ៊ីរ៉ង់*ម៉ោង" + - "\u200bនៅ\u200bអ៊ីគុតEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអ៊ីគុតHម៉ោង\u200bនៅ" + - "\u200bអ៊ីគុត\u200bរដូវ\u200bក្ដៅ6ម៉ោង\u200bនៅ\u200bអ៊ីស្រាអែលQម៉ោង\u200b" + - "ស្តង់ដារ\u200bនៅ\u200bអ៊ីស្រាអែលQម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200b" + - "អ៊ីស្រាអែល'ម៉ោង\u200bនៅ\u200bជប៉ុនBម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bជប៉" + - "ុន?ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅជប៉ុនQម៉ោង\u200bកាហ្សាក់ស្ថាន\u200b" + - "\u200bខាង\u200bកើត]ម៉ោង\u200bនៅ\u200bកាហ្សាក់ស្ថាន\u200bខាង\u200b\u200b" + - "\u200bលិច'ម៉ោង\u200bនៅ\u200bកូរ៉េBម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bកូរ៉េB" + - "ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bកូរ៉េ*ម៉ោង\u200bនៅ\u200bកូស្រៃ6ម៉" + - "ោង\u200bនៅ\u200bក្រាណូយ៉ាសQម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bក្រាណូយ៉ាសT" + - "ម៉ោង\u200bនៅ\u200bក្រាណូយ៉ាស\u200bរដូវ\u200bក្ដៅ6ម៉ោងនៅគៀរហ្គីស្តង់-ម៉" + - "ោង\u200bនៅ\u200bកោះ\u200bឡាញ$ម៉ោង\u200bនៅ\u200bឡតហៅBម៉ោង\u200bស្តង់ដារ" + - "\u200bនៅ\u200bឡត\u200bហៅ?ម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bឡតហៅ<ម៉ោង" + - "\u200bនៅ\u200bកោះ\u200bម៉ាកគែរី6ម៉ោង\u200bនៅ\u200bម៉ាហ្កាដានQម៉ោង\u200bស" + - "្តង់ដារ\u200bនៅ\u200bម៉ាហ្កាដានTម៉ោង\u200bនៅ\u200bម៉ាហ្កាដាន\u200bរដូវ" + - "\u200bក្ដៅ0ម៉ោង\u200bនៅ\u200bម៉ាឡេស៊ី0ម៉ោង\u200bនៅ\u200bម៉ាល់ឌីវ?ម៉ោង" + - "\u200bនៅ\u200bកោះ\u200bម៉ាគឺសាស់*ម៉ោង\u200bនៅ\u200bម៉ាសាល*ម៉ោង\u200bនៅ" + - "\u200bម៉ូរីសEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bម៉ូរីសHម៉ោង\u200b\u200bរដូវ" + - "\u200bក្ដៅនៅ\u200bម៉ូរីស0ម៉ោង\u200bនៅ\u200bម៉ៅ\u200bសាន់Kម៉ោង\u200bនៅ" + - "\u200bម៉ិកស៊ិកភាគពាយព្យcម៉ោង\u200bស្តង់ដា\u200bនៅ\u200bម៉ិកស៊ិកភាគពាយព្យ" + - "fម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bម៉ិកស៊ិកភាគពាយព្យTម៉ោង\u200bនៅ" + - "\u200bប៉ាសីុហ្វិក\u200bម៉ិកស៊ិកlម៉ោង\u200bស្តង់ដា\u200bនៅ\u200bប៉ាសីុហ្វ" + - "ិក\u200bម៉ិកស៊ិកoម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bប៉ាសីុហ្វិក" + - "\u200bម៉ិកស៊ិក9ម៉ោង\u200bនៅ\u200bអ៊ូឡាន\u200bបាទូTម៉ោង\u200bស្តង់ដារ" + - "\u200bនៅ\u200bអ៊ូឡាន\u200bបាទូWម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអ៊ូ" + - "ឡាន\u200bបាទូ*ម៉ោង\u200bនៅ\u200bមូស្គូEម៉ោង\u200bស្តង់ដារ\u200bនៅ" + - "\u200bមូស្គូIម៉ោង\u200bនៅ\u200bមូស្គូ\u200b រដូវ\u200bក្ដៅ$ម៉ោង\u200bនៅ" + - "\u200bភូមា$ម៉ោង\u200bនៅ\u200bណូរូ'ម៉ោងនៅនេប៉ាល់0ម៉ោង\u200bនៅ\u200bកាឡេដូ" + - "នៀKម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bកាឡេដូនៀUម៉ោង\u200bនៅ\u200bញូ\u200b" + - "កាឡេដូនៀ រដូវ\u200bក្ដៅ6ម៉ោង\u200bនៅ\u200bនូវែលសេឡង់Qម៉ោង\u200bស្តង់ដា" + - "រ\u200bនៅ\u200bនូវែលសេឡង់Qម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bនូវែលសេ" + - "ឡង់9ម៉ោង\u200b\u200bនៅ\u200bញូហ្វោនឡែនWម៉ោង\u200b\u200bស្តង់ដារ\u200b" + - "\u200bនៅ\u200bញូហ្វោនឡែនNម៉ោង\u200bពេលថ្ងៃ\u200bនៅ\u200bញូហ្វោនឡែន'ម៉ោងន" + - "ៅ\u200bដ្យូអៀ<ម៉ោង\u200bនៅ\u200bកោះ\u200bន័រហ្វក់Wម៉ោង\u200bនៅ\u200bហ្" + - "វឺណាន់ដូ\u200bដឺណូរ៉ុនហាuម៉ោង\u200b\u200bស្តង់ដារ\u200bនៅ\u200bហ្វឺណាន" + - "់ដូ\u200bដឺណូរ៉ុនហាuម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bហ្វឺណាន់ដូ" + - "\u200bដឺណូរ៉ុនហា<ម៉ោង\u200bនៅ\u200bណូវ៉ូស៊ីប៊ីកWម៉ោង\u200bស្តង់ដារ\u200b" + - "នៅ\u200bណូវ៉ូស៊ីប៊ីកZម៉ោង\u200bនៅ\u200bណូវ៉ូស៊ីប៊ីក\u200bរដូវ\u200bក្ដ" + - "ៅ!ម៉ោង\u200bនៅ\u200bអូម<ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអូម?ម៉ោង\u200b" + - "នៅ\u200bអូម\u200bរដូវ\u200bក្ដៅ6ម៉ោង\u200bនៅ\u200bប៉ាគីស្ថានQម៉ោង" + - "\u200bស្ដង់ដារ\u200bនៅ\u200bប៉ាគីស្ថានTម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ" + - "\u200bប៉ាគីស្ថាន$ម៉ោង\u200bនៅ\u200bផាឡៅ9ម៉ោង\u200bនៅ\u200bប៉ាបៅញូកីនៀ9ម៉" + - "ោង\u200bនៅ\u200bប៉ារ៉ាហ្គាយTម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bប៉ារ៉ាហ្គា" + - "យTម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅប៉ារ៉ាហ្គាយ'ម៉ោង\u200bនៅ\u200bប៉េរូB" + - "ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bប៉េរូEម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ" + - "\u200bប៉េរូ3ម៉ោង\u200bនៅ\u200bហ្វីលីពីនNម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200b" + - "ហ្វីលីពីនTម៉ោង\u200bរដូវ\u200bក្ដៅ\u200b\u200bនៅ\u200bហ្វីលីពីន3ម៉ោង" + - "\u200bនៅ\u200bកោះ\u200bផូនីក[ម៉ោង\u200b\u200b\u200bនៅសង់\u200bព្យែរ និង" + - "\u200bមីគុយឡុងpម៉ោង\u200bស្តង់ដារ\u200bនៅសង់\u200bព្យែរ និង\u200bមីគុយឡុ" + - "ងpម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅសង់\u200bព្យែរ និង\u200bមីគុយឡុង'ម៉ោង" + - "\u200bនៅ\u200bភីឃឺន-ម៉ោង\u200bនៅ\u200bប៉ូណាប់-ម៉ោងនៅព្យុងយ៉ាង-ម៉ោងនៅរេអ៊" + - "ុយ៉ុង0ម៉ោង\u200bនៅ\u200bរ៉ូធឺរ៉ា3ម៉ោង\u200bនៅ\u200bសាក់ខាលីនNម៉ោង" + - "\u200bស្តង់ដារ\u200bនៅ\u200bសាក់ខាលីនQម៉ោង\u200bនៅ\u200bសាក់ខាលីន\u200bរ" + - "ដួវ\u200bក្ដៅ'ម៉ោង\u200bនៅ\u200bសាម៉ៅ?ម៉ោង\u200bស្តង់ដារនៅ\u200bសាម៉ៅE" + - "ម៉ោង\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bសាម៉ៅ-ម៉ោង\u200bនៅ\u200bសីស្ហែល3" + - "ម៉ោង\u200bនៅ\u200bសិង្ហបូរី<ម៉ោង\u200bនៅ\u200bកោះ\u200bសូឡូម៉ុន?ម៉ោង" + - "\u200bនៅ\u200bកោះ\u200bហ្សកហ្ស៊ី-ម៉ោង\u200bនៅ\u200bសូរីណាម0ម៉ោង\u200bនៅ" + - "\u200bស៊ីអូវ៉ា*ម៉ោង\u200bនៅ\u200bតាហិទី'ម៉ោង\u200bនៅ\u200bតៃប៉ិBម៉ោង" + - "\u200bស្តង់ដារ\u200bនៅ\u200bតៃប៉ិBម៉ោង\u200bពេល\u200bថ្ងៃ\u200bនៅ\u200bត" + - "ៃប៉ិ3ម៉ោងនៅតាជីគីស្តង់*ម៉ោង\u200bនៅ\u200bតូខេឡៅ'ម៉ោង\u200bនៅ\u200bតុងក" + - "ាEម៉ោង\u200bស្តង់ដារ\u200b\u200bនៅ\u200bតុងកាEម៉ោង\u200bរដូវ\u200bក្ដៅ" + - "\u200bនៅ\u200bតុងកា'ម៉ោង\u200bនៅ\u200bចូអុក?ម៉ោង\u200bនៅ\u200bតួកម៉េនីស្" + - "ថានWម៉ោង\u200bស្តង់ដារ\u200bនៅតួកម៉េនីស្ថាន`ម៉ោង\u200bរដូវ\u200bក្ដៅ" + - "\u200bនៅ\u200bតួកម៉េនីស្ថាន\u200b0ម៉ោង\u200bនៅ\u200bទុយវ៉ាឡុ9ម៉ោង\u200bន" + - "ៅ\u200bអ៊ុយរូហ្គាយTម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអ៊ុយរូហ្គាយZម៉ោង" + - "\u200b\u200bរដូវ\u200bក្ដៅ\u200bនៅ\u200bអ៊ុយរូហ្គាយ?ម៉ោង\u200bនៅ\u200bអ៊" + - "ូសបេគីស្ថានZម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bអ៊ូសបេគីស្ថាន]ម៉ោង\u200bរដ" + - "ូវ\u200bក្ដៅ\u200bនៅ\u200bអ៊ូសបេគីស្ថាន-ម៉ោង\u200bនៅ\u200bវ៉ានូទូKម៉ោង" + - "\u200b\u200bស្តង់ដារ\u200bនៅ\u200bវ៉ានូទូKម៉ោង\u200bរដូវ\u200bក្ដៅ\u200b" + - "នៅ\u200bវ៉ានូទូ?ម៉ោង\u200bនៅ\u200bវ៉េណេស៊ុយអេឡាBម៉ោង\u200bនៅ\u200bវ៉្ល" + - "ាឌីវ៉ូស្តក]ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bវ៉្លាឌីវ៉ូស្តក`ម៉ោង\u200bនៅ" + - "\u200bវ៉្លាឌីវ៉ូស្តក\u200bរដូវ\u200bក្ដៅ<ម៉ោង\u200bនៅ\u200bវ៉ូហ្កាក្រាតW" + - "ម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bវ៉ូហ្កាក្រាតZម៉ោង\u200bនៅ\u200bវ៉ូហ្កា" + - "ក្រាត\u200bរដូវ\u200bក្ដៅ0ម៉ោង\u200bនៅ\u200bវ័រស្តុក*ម៉ោង\u200bនៅ" + - "\u200bកោះវេកIម៉ោង\u200bនៅ\u200bវ៉ាលីស និង\u200bផូទូណា*ម៉ោង\u200bនៅ\u200b" + - "យ៉ាគុតEម៉ោង\u200bស្តង់ដារ\u200bនៅ\u200bយ៉ាគុតHម៉ោង\u200bនៅ\u200bយ៉ាគុត" + - "\u200bរដូវ\u200bក្ដៅBម៉ោង\u200bនៅ\u200bអ៊ិខាធឺរីនប៊័ក]ម៉ោង\u200bស្តង់ដារ" + - "\u200bនៅ\u200bអ៊ិខាធឺរីនប៊័កcម៉ោង\u200bនៅ\u200bអ៊ិខាធឺរីនប៊័ក\u200bរដួវ" + - "\u200b\u200bក្ដៅ\x05maart\x05april\x03mei\x04juni\x04juli\x08augustus" + - "\x09september\x07oktober\x08november\x08december\x03mei\x04mars\x05april" + - "\x03maj\x04juni\x04juli\x07augusti\x09september\x07oktober\x08november" + - "\x08december\x04mars\x03maj\x04juni\x04juli" - -var bucket58 string = "" + // Size: 23849 bytes - "\x16{1} {0}ದಲ್ಲಿ\x06ಜನ\x0fಫೆಬ್ರ\x12ಮಾರ್ಚ್\x0fಏಪ್ರಿ\x06ಮೇ\x0cಜೂನ್\x0cಜುಲೈ" + - "\x06ಆಗ\x15ಸೆಪ್ಟೆಂ\x0fಅಕ್ಟೋ\x0cನವೆಂ\x0fಡಿಸೆಂ\x03ಜ\x06ಫೆ\x06ಮಾ\x03ಏ\x06ಜೂ" + - "\x06ಜು\x03ಆ\x06ಸೆ\x03ಅ\x03ನ\x06ಡಿ\x0fಜನವರಿ\x18ಫೆಬ್ರವರಿ\x15ಏಪ್ರಿಲ್\x12ಆಗಸ" + - "್ಟ್\x1eಸೆಪ್ಟೆಂಬರ್\x18ಅಕ್ಟೋಬರ್\x15ನವೆಂಬರ್\x18ಡಿಸೆಂಬರ್\x0cಭಾನು\x09ಸೋಮ" + - "\x0cಮಂಗಳ\x09ಬುಧ\x0cಗುರು\x0fಶುಕ್ರ\x09ಶನಿ\x06ಭಾ\x06ಸೋ\x06ಮಂ\x06ಬು\x06ಗು" + - "\x06ಶು\x03ಶ\x15ಭಾನುವಾರ\x12ಸೋಮವಾರ\x15ಮಂಗಳವಾರ\x12ಬುಧವಾರ\x15ಗುರುವಾರ\x18ಶುಕ್" + - "ರವಾರ\x12ಶನಿವಾರ\x0eತ್ರೈ 1\x0eತ್ರೈ 2\x0eತ್ರೈ 3\x0eತ್ರೈ 4#1ನೇ ತ್ರೈಮಾಸಿಕ#2" + - "ನೇ ತ್ರೈಮಾಸಿಕ#3ನೇ ತ್ರೈಮಾಸಿಕ#4ನೇ ತ್ರೈಮಾಸಿಕ\x1fಮಧ್ಯ ರಾತ್ರಿ\x1bಪೂರ್ವಾಹ್ನ" + - "\x15ಅಪರಾಹ್ನ\x15ಬೆಳಗ್ಗೆ\x18ಮಧ್ಯಾಹ್ನ\x0cಸಂಜೆ\x12ರಾತ್ರಿ\x1eಮಧ್ಯರಾತ್ರಿ\x06ಪೂ" + - "%ಕ್ರಿಸ್ತ ಪೂರ್ವ\x1dಕ್ರಿ.ಪೂ.ಕಾಲ\x1cಕ್ರಿಸ್ತ ಶಕ\x1cಪ್ರಸಕ್ತ ಶಕ\x13ಕ್ರಿ.ಪೂ\x10" + - "ಕ್ರಿ.ಶ\x09ಯುಗ\x0cವರ್ಷ\x1fಹಿಂದಿನ ವರ್ಷ\x10ಈ ವರ್ಷ\x1fಮುಂದಿನ ವರ್ಷ\x1f{0} ವ" + - "ರ್ಷದಲ್ಲಿ\x22{0} ವರ್ಷಗಳಲ್ಲಿ#{0} ವರ್ಷದ ಹಿಂದೆ&{0} ವರ್ಷಗಳ ಹಿಂದೆ\x19ಕಳೆದ ವರ" + - "್ಷ\x1bತ್ರೈಮಾಸಿಕ.ಹಿಂದಿನ ತ್ರೈಮಾಸಿಕ\x1fಈ ತ್ರೈಮಾಸಿಕ.ಮುಂದಿನ ತ್ರೈಮಾಸಿಕ.{0} ತ" + - "್ರೈಮಾಸಿಕದಲ್ಲಿ1{0} ತ್ರೈಮಾಸಿಕಗಳಲ್ಲಿ2{0} ತ್ರೈಮಾಸಿಕದ ಹಿಂದೆ5{0} ತ್ರೈಮಾಸಿಕಗಳ" + - " ಹಿಂದೆ(ಕಳೆದ ತ್ರೈಮಾಸಿಕ'{0} ತ್ರೈ.ಮಾ.ದಲ್ಲಿ({0} ತ್ರೈ.ಮಾ. ಹಿಂದೆ\x22+{0} ತ್ರೈ." + - " ಹಿಂದೆ\x12ತಿಂಗಳು\x1fಕಳೆದ ತಿಂಗಳು\x16ಈ ತಿಂಗಳು%ಮುಂದಿನ ತಿಂಗಳು\x1f{0} ತಿಂಗಳಲ್" + - "ಲಿ({0} ತಿಂಗಳುಗಳಲ್ಲಿ,{0} ತಿಂಗಳುಗಳ ಹಿಂದೆ&{0} ತಿಂಗಳು ಹಿಂದೆ#{0} ತಿಂಗಳ ಹಿಂದ" + - "ೆ\x09ವಾರ\x16ಕಳೆದ ವಾರ\x0dಈ ವಾರ\x1cಮುಂದಿನ ವಾರ\x1c{0} ವಾರದಲ್ಲಿ\x1f{0} ವಾರ" + - "ಗಳಲ್ಲಿ {0} ವಾರದ ಹಿಂದೆ#{0} ವಾರಗಳ ಹಿಂದೆ\x0d{0} ವಾರ\x09ದಿನ\x12ಮೊನ್ನೆ\x12ನ" + - "ಿನ್ನೆ\x0cಇಂದು\x0cನಾಳೆ\x18ನಾಡಿದ್ದು\x1c{0} ದಿನದಲ್ಲಿ\x1f{0} ದಿನಗಳಲ್ಲಿ {0}" + - " ದಿನದ ಹಿಂದೆ#{0} ದಿನಗಳ ಹಿಂದೆ\x16ವಾರದ ದಿನ\x22ಕಳೆದ ಭಾನುವಾರ\x19ಈ ಭಾನುವಾರ(ಮುಂ" + - "ದಿನ ಭಾನುವಾರ%{0} ಭಾನುವಾರದಂದು({0} ಭಾನುವಾರಗಳಂದು,{0} ಭಾನುವಾರದ ಹಿಂದೆ/{0} ಭಾ" + - "ನುವಾರಗಳ ಹಿಂದೆ\x1fಕಳೆದ ಸೋಮವಾರ\x16ಈ ಸೋಮವಾರ%ಮುಂದಿನ ಸೋಮವಾರ\x22{0} ಸೋಮವಾರದಂ" + - "ದು%{0} ಸೋಮವಾರಗಳಂದು){0} ಸೋಮವಾರದ ಹಿಂದೆ,{0} ಸೋಮವಾರಗಳ ಹಿಂದೆ\x22ಕಳೆದ ಮಂಗಳವಾ" + - "ರ\x19ಈ ಮಂಗಳವಾರ(ಮುಂದಿನ ಮಂಗಳವಾರ%{0} ಮಂಗಳವಾರದಂದು({0} ಮಂಗಳವಾರಗಳಂದು,{0} ಮಂಗ" + - "ಳವಾರದ ಹಿಂದೆ/{0} ಮಂಗಳವಾರಗಳ ಹಿಂದೆ\x1fಕಳೆದ ಬುಧವಾರ\x16ಈ ಬುಧವಾರ%ಮುಂದಿನ ಬುಧವ" + - "ಾರ\x22{0} ಬುಧವಾರದಂದು%{0} ಬುಧವಾರಗಳಂದು){0} ಬುಧವಾರದ ಹಿಂದೆ,{0} ಬುಧವಾರಗಳ ಹಿ" + - "ಂದೆ\x22ಕಳೆದ ಗುರುವಾರ\x19ಈ ಗುರುವಾರ(ಮುಂದಿನ ಗುರುವಾರ%{0} ಗುರುವಾರದಂದು({0} ಗು" + - "ರುವಾರಗಳಂದು,{0} ಗುರುವಾರದ ಹಿಂದೆ/{0} ಗುರುವಾರಗಳ ಹಿಂದೆ%ಕಳೆದ ಶುಕ್ರವಾರ\x1cಈ ಶ" + - "ುಕ್ರವಾರ+ಮುಂದಿನ ಶುಕ್ರವಾರ({0} ಶುಕ್ರವಾರದಂದು.{0} ಶುಕ್ರವಾರಗಳಲ್ಲಿ/{0} ಶುಕ್ರವ" + - "ಾರದ ಹಿಂದೆ2{0} ಶುಕ್ರವಾರಗಳ ಹಿಂದೆ\x1fಕಳೆದ ಶನಿವಾರ\x16ಈ ಶನಿವಾರ%ಮುಂದಿನ ಶನಿವಾ" + - "ರ\x22{0} ಶನಿವಾರದಂದು%{0} ಶನಿವಾರಗಳಂದು){0} ಶನಿವಾರದ ಹಿಂದೆ,{0} ಶನಿವಾರಗಳ ಹಿಂ" + - "ದೆ1ಪೂರ್ವಾಹ್ನ/ಅಪರಾಹ್ನ\x0cಗಂಟೆ\x10ಈ ಗಂಟೆ\x1f{0} ಗಂಟೆಯಲ್ಲಿ\x22{0} ಗಂಟೆಗಳಲ" + - "್ಲಿ {0} ಗಂಟೆ ಹಿಂದೆ&{0} ಗಂಟೆಗಳ ಹಿಂದೆ\x0fನಿಮಿಷ\x13ಈ ನಿಮಿಷ\x22{0} ನಿಮಿಷದಲ" + - "್ಲಿ%{0} ನಿಮಿಷಗಳಲ್ಲಿ){0} ನಿಮಿಷಗಳ ಹಿಂದೆ&{0} ನಿಮಿಷದ ಹಿಂದೆ\x15ಸೆಕೆಂಡ್\x06ಈ" + - "ಗ+{0} ಸೆಕೆಂಡ್\u200cನಲ್ಲಿ.{0} ಸೆಕೆಂಡ್\u200cಗಳಲ್ಲಿ){0} ಸೆಕೆಂಡ್ ಹಿಂದೆ/{0}" + - " ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ\x13ಸಮಯ ವಲಯ\x0d{0} ಸಮಯ\x1a{0} ದಿನದ ಸಮಯ&{0} ಪ್ರಮಾಣಿತ ಸಮಯ5" + - "ಬ್ರಿಟಿಷ್ ಬೇಸಿಗೆ ಸಮಯ2ಐರಿಷ್ ಪ್ರಮಾಣಿತ ಸಮಯ\x16ಏಕರ್ ಸಮಯ/ಏಕರ್ ಪ್ರಮಾಣಿತ ಸಮಯ)ಏ" + - "ಕರ್ ಬೇಸಿಗೆ ಸಮಯ+ಅಫಘಾನಿಸ್ತಾನ ಸಮಯ,ಮಧ್ಯ ಆಫ್ರಿಕಾ ಸಮಯ/ಪೂರ್ವ ಆಫ್ರಿಕಾ ಸಮಯKದಕ್ಷ" + - "ಿಣ ಆಫ್ರಿಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ2ಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಸಮಯKಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ" + - "Eಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಬೇಸಿಗೆ ಸಮಯ\x1fಅಲಾಸ್ಕಾ ಸಮಯ5ಅಲಸ್ಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ/\u200cಅಲಾಸ" + - "್ಕಾ ಹಗಲು ಸಮಯ\x1fಆಲ್ಮೇಟಿ ಸಮಯ8ಆಲ್ಮೇಟಿ ಪ್ರಮಾಣಿತ ಸಮಯ2ಆಲ್ಮೇಟಿ ಬೇಸಿಗೆ ಸಮಯ" + - "\x1fಅಮೆಜಾನ್ ಸಮಯ8ಅಮೆಜಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಅಮೆಜಾನ್ ಬೇಸಿಗೆ ಸಮಯBಉತ್ತರ ಅಮೆರಿಕದ ಕೇ" + - "ಂದ್ರ ಸಮಯ[ಉತ್ತರ ಅಮೆರಿಕದ ಕೇಂದ್ರ ಪ್ರಮಾಣಿತ ಸಮಯUಉತ್ತರ ಅಮೆರಿಕದ ಕೇಂದ್ರೀಯ ದಿನದ" + - " ಸಮಯBಉತ್ತರ ಅಮೆರಿಕದ ಪೂರ್ವದ ಸಮಯ[ಉತ್ತರ ಅಮೆರಿಕದ ಪೂರ್ವದ ಪ್ರಮಾಣಿತ ಸಮಯOಉತ್ತರ ಅಮ" + - "ೆರಿಕದ ಪೂರ್ವದ ದಿನದ ಸಮಯ?ಉತ್ತರ ಅಮೆರಿಕದ ಪರ್ವತ ಸಮಯXಉತ್ತರ ಅಮೆರಿಕದ ಪರ್ವತ ಪ್ರಮ" + - "ಾಣಿತ ಸಮಯLಉತ್ತರ ಅಮೆರಿಕದ ಪರ್ವತ ದಿನದ ಸಮಯHಉತ್ತರ ಅಮೆರಿಕದ ಪೆಸಿಫಿಕ್ ಸಮಯaಉತ್ತರ" + - " ಅಮೆರಿಕದ ಪೆಸಿಫಿಕ್ ಪ್ರಮಾಣಿತ ಸಮಯUಉತ್ತರ ಅಮೆರಿಕದ ಪೆಸಿಫಿಕ್ ದಿನದ ಸಮಯ\x1fಅನಡೀರ್" + - "\u200c ಸಮಯ8ಅನಡೀರ್\u200c ಪ್ರಮಾಣಿತ ಸಮಯ,ಅನಡೀರ್\u200c ಹಗಲು ಸಮಯ\x19ಅಪಿಯಾ ಸಮಯ2" + - "ಅಪಿಯಾ ಪ್ರಮಾಣಿತ ಸಮಯ&ಅಪಿಯಾ ಹಗಲು ಸಮಯ\x19ಅಕ್ಟೌ ಸಮಯ2ಅಕ್ಟೌ ಪ್ರಮಾಣಿತ ಸಮಯ,ಅಕ್ಟ" + - "ೌ ಬೇಸಿಗೆ ಸಮಯ\x1fಅಕ್ಟೋಬೆ ಸಮಯ8ಅಕ್ಟೋಬೆ ಪ್ರಮಾಣಿತ ಸಮಯ2ಅಕ್ಟೋಬೆ ಬೇಸಿಗೆ ಸಮಯ" + - "\x22ಅರೇಬಿಯನ್ ಸಮಯ;ಅರೇಬಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ/ಅರೇಬಿಯನ್ ಹಗಲು ಸಮಯ(ಅರ್ಜೆಂಟಿನಾ ಸಮಯA" + - "ಅರ್ಜೆಂಟೀನಾ ಪ್ರಮಾಣಿತ ಸಮಯ;ಅರ್ಜೆಂಟಿನಾ ಬೇಸಿಗೆ ಸಮಯ;ಪಶ್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಸಮಯTಪಶ" + - "್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಪ್ರಮಾಣಿತ ಸಮಯNಪಶ್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಬೇಸಿಗೆ ಸಮಯ\x22ಅರ್ಮೇನಿಯ " + - "ಸಮಯ;ಅರ್ಮೇನಿಯ ಪ್ರಮಾಣಿತ ಸಮಯ5ಅರ್ಮೇನಿಯ ಬೇಸಿಗೆ ಸಮಯ(ಅಟ್ಲಾಂಟಿಕ್ ಸಮಯAಅಟ್ಲಾಂಟಿಕ" + - "್ ಪ್ರಮಾಣಿತ ಸಮಯ5ಅಟ್ಲಾಂಟಿಕ್ ದಿನದ ಸಮಯ>ಕೇಂದ್ರ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯZಆಸ್ಟ್ರೇಲಿಯಾದ" + - " ಕೇಂದ್ರ ಪ್ರಮಾಣಿತ ಸಮಯNಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಹಗಲು ಸಮಯTಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪಶ" + - "್ಚಿಮ ಸಮಯmಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪಶ್ಚಿಮ ಪ್ರಮಾಣಿತ ಸಮಯaಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪ" + - "ಶ್ಚಿಮ ಹಗಲು ಸಮಯ;ಪೂರ್ವ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯWಆಸ್ಟ್ರೇಲಿಯಾದ ಪೂರ್ವ ಪ್ರಮಾಣಿತ ಸಮಯKಪ" + - "ೂರ್ವ ಆಸ್ಟ್ರೇಲಿಯಾದ ಹಗಲು ಸಮಯ>ಪಶ್ಚಿಮ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯZಆಸ್ಟ್ರೇಲಿಯಾದ ಪಶ್ಚಿಮ " + - "ಪ್ರಮಾಣಿತ ಸಮಯNಆಸ್ಟ್ರೇಲಿಯಾದ ಪಶ್ಚಿಮ ಹಗಲು ಸಮಯ(ಅಜರ್ಬೈಜಾನ್ ಸಮಯAಅಜರ್ಬೈಜಾನ್ ಪ್" + - "ರಮಾಣಿತ ಸಮಯ;ಅಜರ್ಬೈಜಾನ್ ಬೇಸಿಗೆ ಸಮಯ\x1cಅಜೋರಸ್ ಸಮಯ5ಅಜೋರಸ್ ಪ್ರಮಾಣಿತ ಸಮಯ/ಅಜೋ" + - "ರಸ್ ಬೇಸಿಗೆ ಸಮಯ(ಬಾಂಗ್ಲಾದೇಶ ಸಮಯAಬಾಂಗ್ಲಾದೇಶ ಪ್ರಮಾಣಿತ ಸಮಯ;ಬಾಂಗ್ಲಾದೇಶ ಬೇಸಿಗ" + - "ೆ ಸಮಯ\x1cಭೂತಾನ್ ಸಮಯ\x22ಬೊಲಿವಿಯಾ ಸಮಯ+ಬ್ರೆಸಿಲಿಯಾದ ಸಮಯAಬ್ರೆಸಿಲಿಯಾ ಪ್ರಮಾಣಿ" + - "ತ ಸಮಯ;ಬ್ರೆಸಿಲಿಯಾ ಬೇಸಿಗೆ ಸಮಯ8ಬ್ರೂನಿ ದಾರುಸಲೆಮ್ ಸಮಯ&ಕೇಪ್ ವರ್ಡ್ ಸಮಯ?ಕೇಪ್ ವ" + - "ರ್ಡ್ ಪ್ರಮಾಣಿತ ಸಮಯ9ಕೇಪ್ ವರ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ2ಚಮೋರೋ ಪ್ರಮಾಣಿತ ಸಮಯ\x19ಚಥಾಮ್ ಸಮ" + - "ಯ2ಚಥಾಮ್ ಪ್ರಮಾಣಿತ ಸಮಯ&ಚಥಾಮ್ ಹಗಲು ಸಮಯ\x16ಚಿಲಿ ಸಮಯ/ಚಿಲಿ ಪ್ರಮಾಣಿತ ಸಮಯ)ಚಿಲಿ" + - " ಬೇಸಿಗೆ ಸಮಯ\x16ಚೀನಾ ಸಮಯ/ಚೀನಾ ಪ್ರಮಾಣಿತ ಸಮಯ#ಚೀನಾ ಹಗಲು ಸಮಯ.ಚೊಯ್\u200cಬಲ್ಸಾನ" + - "್ ಸಮಯMಚೊಯ್\u200c\u200cಬಲ್ಸಾನ್\u200c ಪ್ರಮಾಣಿತ ಸಮಯAಚೊಯ್\u200cಬಲ್ಸಾನ್ ಬೇಸ" + - "ಿಗೆ ಸಮಯ5ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪ ಸಮಯ2ಕೋಕೋಸ್ ದ್ವೀಪಗಳ ಸಮಯ\x22ಕೊಲಂಬಿಯಾ ಸಮಯ;ಕೊಲಂಬಿಯ" + - "ಾ ಪ್ರಮಾಣಿತ ಸಮಯ5ಕೊಲಂಬಿಯಾ ಬೇಸಿಗೆ ಸಮಯ,ಕುಕ್ ದ್ವೀಪಗಳ ಸಮಯEಕುಕ್ ದ್ವೀಪಗಳ ಪ್ರಮಾ" + - "ಣಿತ ಸಮಯ[ಕುಕ್ ದ್ವೀಪಗಳ ಮಧ್ಯಕಾಲೀನ ಬೇಸಿಗೆ ಸಮಯ\x1cಕ್ಯೂಬಾ ಸಮಯ5ಕ್ಯೂಬಾ ಪ್ರಮಾಣಿ" + - "ತ ಸಮಯ)ಕ್ಯೂಬಾ ದಿನದ ಸಮಯ\x1cಡೇವಿಸ್ ಸಮಯ9ಡುಮಂಟ್-ಡಿ ಉರ್ವಿಲೆ ಸಮಯ,ಪೂರ್ವ ಟಿಮೋರ್" + - " ಸಮಯ,ಈಸ್ಟರ್ ದ್ವೀಪ ಸಮಯEಈಸ್ಟರ್ ದ್ವೀಪ ಪ್ರಮಾಣಿತ ಸಮಯ?ಈಸ್ಟರ್ ದ್ವೀಪ ಬೇಸಿಗೆ ಸಮಯ%" + - "ಈಕ್ವೆಡಾರ್ ಸಮಯ2ಮಧ್ಯ ಯುರೋಪಿಯನ್ ಸಮಯKಮಧ್ಯ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯEಮಧ್ಯ ಯುರೋ" + - "ಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯ5ಪೂರ್ವ ಯುರೋಪಿಯನ್ ಸಮಯNಪೂರ್ವ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯHಪೂರ್" + - "ವ ಯುರೋಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯNಮತ್ತಷ್ಟು-ಪೂರ್ವ ಯುರೋಪಿಯನ್ ಸಮಯ8ಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಸ" + - "ಮಯQಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯKಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯJಫಾಲ್ಕ್" + - "\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಸಮಯcಫಾಲ್ಕ್\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಪ್ರಮಾಣಿತ ಸಮಯ]ಫಾಲ್ಕ" + - "್\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಬೇಸಿಗೆ ಸಮಯ\x16ಫಿಜಿ ಸಮಯ/ಫಿಜಿ ಪ್ರಮಾಣಿತ ಸಮಯ)ಫಿಜಿ ಬ" + - "ೇಸಿಗೆ ಸಮಯ/ಫ್ರೆಂಚ್ ಗಯಾನಾ ಸಮಯaದಕ್ಷಿಣ ಫ್ರೆಂಚ್ ಮತ್ತು ಅಂಟಾರ್ಟಿಕಾ ಸಮಯ(ಗಾಲಾಪಾ" + - "ಗೋಸ್ ಸಮಯ(ಗ್ಯಾಂಬಿಯರ್ ಸಮಯ\x22ಜಾರ್ಜಿಯಾ ಸಮಯ;ಜಾರ್ಜಿಯಾ ಪ್ರಮಾಣಿತ ಸಮಯ5ಜಾರ್ಜಿಯಾ" + - " ಬೇಸಿಗೆ ಸಮಯ;ಗಿಲ್ಬರ್ಟ್ ದ್ವೀಪಗಳ ಸಮಯGಗ್ರೀನ್\u200cವಿಚ್ ಸರಾಸರಿ ಕಾಲಮಾನDಪೂರ್ವ ಗ" + - "್ರೀನ್\u200cಲ್ಯಾಂಡ್ ಸಮಯ]ಪೂರ್ವ ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯWಪೂರ್ವ ಗ್" + - "ರೀನ್\u200cಲ್ಯಾಂಡ್ ಬೇಸಿಗೆ ಸಮಯGಪಶ್ಚಿಮ ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ ಸಮಯ`ಪಶ್ಚಿಮ ಗ್ರ" + - "ೀನ್\u200cಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯZಪಶ್ಚಿಮ ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ ಬೇಸಿಗೆ ಸಮಯ5ಗು" + - "ವಾಮ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಗಲ್ಫ್ ಪ್ರಮಾಣಿತ ಸಮಯ\x19ಗಯಾನಾ ಸಮಯ8ಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಸಮಯ" + - "Qಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯEಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಹಗಲು ಸಮಯ)ಹಾಂಗ್ ಕಾಂಗ್ ಸಮಯ" + - "Bಹಾಂಗ್ ಕಾಂಗ್ ಪ್ರಮಾಣಿತ ಸಮಯ<ಹಾಂಗ್ ಕಾಂಗ್ ಬೇಸಿಗೆ ಸಮಯ\x19ಹವ್ಡ್ ಸಮಯ2ಹವ್ಡ್ ಪ್ರಮ" + - "ಾಣಿತ ಸಮಯ,ಹವ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ5ಭಾರತೀಯ ಪ್ರಮಾಣಿತ ಸಮಯ/ಹಿಂದೂ ಮಹಾಸಾಗರ ಸಮಯ\x22ಇಂಡ" + - "ೊಚೈನಾ ಸಮಯ5ಮಧ್ಯ ಇಂಡೋನೇಷಿಯಾ ಸಮಯ8ಪೂರ್ವ ಇಂಡೋನೇಷಿಯಾ ಸಮಯ8ಪಶ್ಚಿಮ ಇಂಡೋನೇಷಿಯ ಸಮ" + - "ಯ\x19ಇರಾನ್ ಸಮಯ2ಇರಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ&ಇರಾನ್ ಹಗಲು ಸಮಯ+ಇರ್\u200cಕುಟಸ್ಕ್ ಸಮಯD" + - "ಇರ್\u200cಕುಟಸ್ಕ್ ಪ್ರಮಾಣಿತ ಸಮಯ>ಇರ್\u200cಕುಟಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ\x1fಇಸ್ರೇಲ್ ಸ" + - "ಮಯ8ಇಸ್ರೇಲ್ ಪ್ರಮಾಣಿತ ಸಮಯ,ಇಸ್ರೇಲ್ ಹಗಲು ಸಮಯ\x19ಜಪಾನ್ ಸಮಯ2ಜಪಾನ್ ಪ್ರಮಾಣಿತ ಸ" + - "ಮಯ&ಜಪಾನ್ ಹಗಲು ಸಮಯbಪೆತ್ರೋಪಾವ್ಲೋಸ್ಕ್\u200c\u200c-ಕಮ್ಚತ್ಸ್\u200cಕೀ ಸಮಯ{ಪೆ" + - "ತ್ರೋಪಾವ್ಲೋಸ್ಕ್\u200c\u200c-ಕಮ್ಚತ್ಸ್\u200cಕೀ ಪ್ರಮಾಣಿತ ಸಮಯuಪೆತ್ರೋಪಾವ್ಲೋಸ" + - "್ಕ್\u200c\u200c-ಕಮ್ಚತ್ಸ್\u200cಕೀ ಬೇಸಿಗೆ ಸಮಯ8ಪೂರ್ವ ಕಜಕಿಸ್ತಾನ್ ಸಮಯ;ಪಶ್ಚಿ" + - "ಮ ಕಜಕಿಸ್ತಾನ್ ಸಮಯ\x1fಕೊರಿಯನ್ ಸಮಯ8ಕೊರಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ,ಕೊರಿಯನ್ ಹಗಲು ಸಮಯ" + - "\x19ಕೊಸರೆ ಸಮಯ=ಕ್ರಾಸ್\u200cನೊಯಾರ್ಸ್ಕ್ ಸಮಯVಕ್ರಾಸ್\u200cನೊಯಾರ್ಸ್ಕ್ ಪ್ರಮಾಣಿತ" + - " ಸಮಯPಕ್ರಾಸ್\u200cನೊಯಾರ್ಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ.ಕಿರ್ಗಿಸ್ತಾನ್ ಸಮಯ\x16ಲಂಕಾ ಸಮಯ,ಲೈನ್" + - " ದ್ವೀಪಗಳ ಸಮಯ)ಲಾರ್ಡ್ ಹೋವ್ ಸಮಯBಲಾರ್ಡ್ ಹೋವ್ ಪ್ರಮಾಣಿತ ಸಮಯ<ಲಾರ್ಡ್ ಹೋವ್ ಬೆಳಗಿನ" + - " ಸಮಯ\x19ಮಕಾವ್ ಸಮಯ2ಮಕಾವ್ ಪ್ರಮಾಣಿತ ಸಮಯ,ಮಕಾವ್ ಬೇಸಿಗೆ ಸಮಯAಮ್ಯಾಕ್\u200cಕ್ಯುರೈ" + - " ದ್ವೀಪ ಸಮಯ\x1cಮಗಡಾನ್ ಸಮಯ5ಮಗಡಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ/ಮಗಡಾನ್ ಬೇಸಿಗೆ ಸಮಯ\x1fಮಲೇಷಿಯ" + - "ಾ ಸಮಯ(ಮಾಲ್ಡೀವ್ಸ್ ಸಮಯ+ಮಾರ್ಕ್ಯುಸಸ್ ಸಮಯ5ಮಾರ್ಷಲ್ ದ್ವೀಪಗಳ ಸಮಯ\x1fಮಾರಿಷಸ್ ಸಮ" + - "ಯ8ಮಾರಿಷಸ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಮಾರಿಷಸ್ ಬೇಸಿಗೆ ಸಮಯ\x22ಮಾವ್\u200cಸನ್ ಸಮಯ5ವಾಯವ್ಯ " + - "ಮೆಕ್ಸಿಕೊ ಸಮಯNವಾಯವ್ಯ ಮೆಕ್ಸಿಕೊ ಪ್ರಮಾಣಿತ ಸಮಯBವಾಯವ್ಯ ಮೆಕ್ಸಿಕೊ ಹಗಲು ಸಮಯ>ಮೆಕ" + - "್ಸಿಕನ್ ಪೆಸಿಫಿಕ್ ಸಮಯWಮೆಕ್ಸಿಕನ್ ಪೆಸಿಫಿಕ್ ಪ್ರಮಾಣಿತ ಸಮಯKಮೆಕ್ಸಿಕನ್ ಪೆಸಿಫಿಕ್" + - " ಹಗಲು ಸಮಯ,ಉಲನ್ ಬ್ಯಾಟರ್ ಸಮಯEಉಲನ್ ಬ್ಯಾಟರ್ ಪ್ರಮಾಣಿತ ಸಮಯ?ಉಲನ್ ಬ್ಯಾಟರ್ ಬೇಸಿಗೆ" + - " ಸಮಯ\x1cಮಾಸ್ಕೋ ಸಮಯ5ಮಾಸ್ಕೋ ಪ್ರಮಾಣಿತ ಸಮಯ/ಮಾಸ್ಕೋ ಬೇಸಿಗೆ ಸಮಯ(ಮ್ಯಾನ್ಮಾರ್ ಸಮಯ" + - "\x16ನೌರು ಸಮಯ\x19ನೇಪಾಳ ಸಮಯ8ಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಸಮಯQಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಪ್ರಮಾಣಿತ" + - " ಸಮಯNಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಬೇಸಿಗೆಯ ಸಮಯ1ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಸಮಯJನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಪ್ರಮಾಣ" + - "ಿತ ಸಮಯ>ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಹಗಲು ಸಮಯ=ನ್ಯೂಫೌಂಡ್\u200cಲ್ಯಾಂಡ್ ಸಮಯVನ್ಯೂಫೌಂಡ್" + - "\u200cಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯJನ್ಯೂಫೌಂಡ್\u200cಲ್ಯಾಂಡ್ ದಿನದ ಸಮಯ\x16ನಿಯು ಸಮಯ2ನ" + - "ಾರ್ಫೋಕ್ ದ್ವೀಪ ಸಮಯEಫೆರ್ನಾಂಡೋ ಡೆ ನೊರೊನ್ಹಾ ಸಮಯ^ಫೆರ್ನಾಂಡೋ ಡೆ ನೊರೊನ್ಹಾ ಪ್ರಮ" + - "ಾಣಿತ ಸಮಯUಫರ್ನಾಂಡೋ ದೆ ನೊರೊನ್ಹಾ ಬೇಸಿಗೆ ಸಮಯEಉತ್ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳ ಸಮಯ7ನೊವ" + - "ೊಸಿಬಿರ್\u200cಸ್ಕ್ ಸಮಯPನೊವೊಸಿಬಿರ್\u200cಸ್ಕ್ ಪ್ರಮಾಣಿತ ಸಮಯJನೊವೊಸಿಬಿರ್" + - "\u200cಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ\x1fಒಮಾಸ್ಕ್ ಸಮಯ8ಒಮಾಸ್ಕ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಒಮಾಸ್ಕ್ ಬೇಸಿಗೆ" + - " ಸಮಯ%ಪಾಕಿಸ್ತಾನ ಸಮಯ>ಪಾಕಿಸ್ತಾನ ಪ್ರಮಾಣಿತ ಸಮಯ8ಪಾಕಿಸ್ತಾನ ಬೇಸಿಗೆ ಸಮಯ\x1cಪಾಲಾವ್" + - " ಸಮಯ9ಪಪುವಾ ನ್ಯೂ ಗಿನಿಯಾ ಸಮಯ\x1fಪರಾಗ್ವೇ ಸಮಯ8ಪರಾಗ್ವೇ ಪ್ರಮಾಣಿತ ಸಮಯ2ಪರಾಗ್ವೇ ಬ" + - "ೇಸಿಗೆ ಸಮಯ\x16ಪೆರು ಸಮಯ/ಪೆರು ಪ್ರಮಾಣಿತ ಸಮಯ)ಪೆರು ಬೇಸಿಗೆ ಸಮಯ\x22ಫಿಲಿಫೈನ್ ಸಮ" + - "ಯ;ಫಿಲಿಫೈನ್ ಪ್ರಮಾಣಿತ ಸಮಯ5ಫಿಲಿಫೈನ್ ಬೇಸಿಗೆ ಸಮಯ8ಫಿನಿಕ್ಸ್ ದ್ವೀಪಗಳ ಸಮಯUಸೇಂಟ್" + - " ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಸಮಯnಸೇಂಟ್ ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಪ್ರಮಾಣಿತ ಸಮಯbಸೇಂಟ" + - "್ ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಹಗಲು ಸಮಯ+ಪಿಟ್\u200cಕೈರ್ನ್ ಸಮಯ\x1cಪೊನಾಪೆ ಸಮಯ.ಪ್" + - "ಯೊಂಗ್ಯಾಂಗ್ ಸಮಯ(ಕೋಜಿಲೋರ್ಡಾ ಸಮಯAಕೋಜಿಲೋರ್ಡಾ ಪ್ರಮಾಣಿತ ಸಮಯ;ಕೋಜಿಲೋರ್ಡಾ ಬೇಸಿಗ" + - "ೆ ಸಮಯ%ರಿಯೂನಿಯನ್ ಸಮಯ\x1cರೊತೇರಾ ಸಮಯ.ಸ್ಯಾಕ್\u200cಹಲಿನ್ ಸಮಯGಸ್ಯಾಕ್\u200cಹಲ" + - "ಿನ್ ಪ್ರಮಾಣಿತ ಸಮಯAಸ್ಯಾಕ್\u200cಹಲಿನ್ ಬೇಸಿಗೆ ಸಮಯ\x13ಸಮರ ಸಮಯ,ಸಮರ ಪ್ರಮಾಣಿತ " + - "ಸಮಯ&ಸಮರ ಬೇಸಿಗೆ ಸಮಯ\x19ಸಮೋವಾ ಸಮಯ2ಸಮೋವಾ ಪ್ರಮಾಣಿತ ಸಮಯ,ಸಮೋವಾ ಬೇಸಿಗೆ ಸಮಯ" + - "\x22ಸೀಷೆಲ್ಸ್ ಸಮಯ>ಸಿಂಗಾಪುರ್ ಪ್ರಮಾಣಿತ ಸಮಯ2ಸಾಲಮನ್ ದ್ವೀಪಗಳ ಸಮಯ5ದಕ್ಷಿಣ ಜಾರ್ಜಿ" + - "ಯಾ ಸಮಯ\x22ಸುರಿನೇಮ್ ಸಮಯ\x1cಸ್ಯೊವಾ ಸಮಯ\x1cತಾಹಿತಿ ಸಮಯ\x16ತೈಪೆ ಸಮಯ/ತೈಪೆ ಪ್" + - "ರಮಾಣಿತ ಸಮಯ#ತೈಪೆ ಹಗಲು ಸಮಯ(ತಝಕಿಸ್ತಾನ್ ಸಮಯ\x22ಟೊಕೆಲಾವ್ ಸಮಯ\x19ಟೊಂಗಾ ಸಮಯ2ಟ" + - "ೊಂಗಾ ಪ್ರಮಾಣಿತ ಸಮಯ,ಟೊಂಗಾ ಬೇಸಿಗೆ ಸಮಯ\x16ಚುಕ್ ಸಮಯ=ತುರ್ಕ್\u200cಮೇನಿಸ್ತಾನ್ " + - "ಸಮಯVತುರ್ಕ್\u200cಮೇನಿಸ್ತಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯPತುರ್ಕ್\u200cಮೇನಿಸ್ತಾನ್ ಬೇಸಿಗೆ " + - "ಸಮಯ\x1cತುವಾಲು ಸಮಯ\x1fಉರುಗ್ವೇ ಸಮಯ8ಉರುಗ್ವೇ ಪ್ರಮಾಣಿತ ಸಮಯ2ಉರುಗ್ವೇ ಬೇಸಿಗೆ ಸ" + - "ಮಯ1ಉಜ್ಬೇಕಿಸ್ತಾನ್ ಸಮಯJಉಜ್ಬೇಕಿಸ್ತಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯDಉಜ್ಬೇಕಿಸ್ತಾನ್ ಬೇಸಿಗೆ ಸ" + - "ಮಯ\x19ವನೌತು ಸಮಯ2ವನೌತು ಪ್ರಮಾಣಿತ ಸಮಯ,ವನೌತು ಬೇಸಿಗೆ ಸಮಯ(ವೆನಿಜುವೆಲಾ ಸಮಯ4ವ್ಲ" + - "ಾಡಿವೋಸ್ಟೋಕ್ ಸಮಯMವ್ಲಾಡಿವೋಸ್ಟೋಕ್ ಪ್ರಮಾಣಿತ ಸಮಯGವ್ಲಾಡಿವೋಸ್ಟೋಕ್ ಬೇಸಿಗೆ ಸಮಯ." + - "ವೋಲ್ಗೋಗಾರ್ಡ್ ಸಮಯGವೋಲ್ಗೋಗಾರ್ಡ್ ಪ್ರಮಾಣಿತ ಸಮಯAವೋಲ್ಗೋಗಾರ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ\x22" + - "ವೋಸ್ಟೊಕ್ ಸಮಯ&ವೇಕ್ ದ್ವೀಪ ಸಮಯKವ್ಯಾಲೀಸ್ ಮತ್ತು ಫ್ಯುಟುನಾ ಸಮಯ%ಯಾಕುಟ್ಸಕ್ ಸಮಯ>" + - "ಯಾಕುಟ್ಸಕ್ ಪ್ರಮಾಣಿತ ಸಮಯ8ಯಾಕುಟ್ಸಕ್ ಬೇಸಿಗೆ ಸಮಯ4ಯೇಕಟರಿನ್\u200cಬರ್ಗ್ ಸಮಯMಯೇ" + - "ಕಟರಿನ್\u200cಬರ್ಗ್ ಪ್ರಮಾಣಿತ ಸಮಯJಯೇಕೇಟರಿನ್\u200dಬರ್ಗ್ ಬೇಸಿಗೆ ಸಮಯ" - -var bucket59 string = "" + // Size: 8218 bytes - "\x06불기\x041월\x042월\x043월\x044월\x045월\x046월\x047월\x048월\x049월\x0510월\x051" + - "1월\x0512월\x06윤{0}\x06입춘\x06우수\x06경칩\x06춘분\x06청명\x06곡우\x06입하\x06소만\x06망종" + - "\x06하지\x06소서\x06대서\x06입추\x06처서\x06백로\x06추분\x06한로\x06상강\x06입동\x06소설\x06대설" + - "\x06동지\x06소한\x06대한\x06갑자\x06을축\x06병인\x06정묘\x06무진\x06기사\x06경오\x06신미\x06임신" + - "\x06계유\x06갑술\x06을해\x06병자\x06정축\x06무인\x06기묘\x06경진\x06신사\x06임오\x06계미\x06갑신" + - "\x06을유\x06병술\x06정해\x06무자\x06기축\x06경인\x06신묘\x06임진\x06계사\x06갑오\x06을미\x06병신" + - "\x06정유\x06무술\x06기해\x06경자\x06신축\x06임인\x06계묘\x06갑진\x06을사\x06병오\x06정미\x06무신" + - "\x06기유\x06경술\x06신해\x06임자\x06계축\x06갑인\x06을묘\x06병진\x06정사\x06무오\x06기미\x06경신" + - "\x06신유\x06임술\x06계해\x12U년 MMM d일 EEEE\x0dU년 MMM d일\x08y. M. d.\x06투트\x09바" + - "바흐\x09하투르\x0c키야흐크\x09투바흐\x09암쉬르\x0c바라마트\x0f바라문다흐\x09바샨스\x0c바우나흐\x09아비브" + - "\x09미스라\x06나시\x03자\x03축\x03인\x03묘\x03진\x03사\x03오\x03미\x03신\x03유\x03술\x03" + - "해\x0c매스캐램\x09테켐트\x09헤다르\x0c타흐사스\x06테르\x0c얘카티트\x0c매가비트\x0c미야지야\x09겐보트" + - "\x06새네\x06함레\x09내하세\x09파구맨\x15G y년 M월 d일 EEEE\x10G y년 M월 d일\x0aG y. M. d" + - ".\x03일\x03월\x03화\x03수\x03목\x03금\x03토\x09일요일\x09월요일\x09화요일\x09수요일\x09목요일" + - "\x09금요일\x09토요일\x071분기\x072분기\x073분기\x074분기\x0d제 1/4분기\x0d제 2/4분기\x0d제 3/" + - "4분기\x0d제 4/4분기\x06자정\x06정오\x06새벽\x06오전\x06오후\x06저녁\x03밤\x09기원전\x06서기\x13" + - "y년 M월 d일 EEEE\x0ey년 M월 d일\x09yy. M. d.\x15a h시 m분 s초 zzzz\x12a h시 m분 s초 " + - "z\x09a h:mm:ss\x06a h:mm\x0c디스리월\x0c말케스월\x0c기슬르월\x09데벳월\x09스밧월\x0b아달월 1" + - "\x09아달월\x0b아달월 2\x09닛산월\x0c이야르월\x09시완월\x0c담무르월\x06압월\x09엘룰월\x09무하람\x09사파" + - "르\x11라비 알 아왈\x11라비 알 쎄니\x14주마다 알 아왈\x14주마다 알 쎄니\x06라잡\x09쉐아반\x09라마단" + - "\x06쉐왈\x0e듀 알 까다\x0e듀 알 히자\x15다이카 (645 ~ 650)\x15하쿠치 (650 ~ 671)\x15하쿠호 " + - "(672 ~ 686)\x12슈초 (686 ~ 701)\x15다이호 (701 ~ 704)\x15게이운 (704 ~ 708)\x12와" + - "도 (708 ~ 715)\x15레이키 (715 ~ 717)\x12요로 (717 ~ 724)\x12진키 (724 ~ 729)" + - "\x12덴표 (729 ~ 749)\x18덴표칸포 (749 ~ 749)\x18덴표쇼호 (749 ~ 757)\x18덴표호지 (757 " + - "~ 765)\x18덴표진고 (765 ~ 767)\x1b진고케이운 (767 ~ 770)\x12호키 (770 ~ 780)\x12덴오 " + - "(781 ~ 782)\x15엔랴쿠 (782 ~ 806)\x15다이도 (806 ~ 810)\x12고닌 (810 ~ 824)\x12덴" + - "초 (824 ~ 834)\x12조와 (834 ~ 848)\x12가쇼 (848 ~ 851)\x12닌주 (851 ~ 854)" + - "\x15사이코 (854 ~ 857)\x12덴난 (857 ~ 859)\x12조간 (859 ~ 877)\x12간교 (877 ~ 885" + - ")\x12닌나 (885 ~ 889)\x12간표 (889 ~ 898)\x15쇼타이 (898 ~ 901)\x12엔기 (901 ~ 92" + - "3)\x12엔초 (923 ~ 931)\x15조헤이 (931 ~ 938)\x12덴교 (938 ~ 947)\x15덴랴쿠 (947 ~ " + - "957)\x15덴토쿠 (957 ~ 961)\x12오와 (961 ~ 964)\x12고호 (964 ~ 968)\x12안나 (968 ~" + - " 970)\x15덴로쿠 (970 ~ 973)\x12덴엔 (973 ~ 976)\x12조겐 (976 ~ 978)\x12덴겐 (978 " + - "~ 983)\x15에이간 (983 ~ 985)\x12간나 (985 ~ 987)\x15에이엔 (987 ~ 989)\x15에이소 (9" + - "89 ~ 990)\x15쇼랴쿠 (990 ~ 995)\x15조토쿠 (995 ~ 999)\x13조호 (999 ~ 1004)\x14간코" + - " (1004 ~ 1012)\x14조와 (1012 ~ 1017)\x14간닌 (1017 ~ 1021)\x14지안 (1021 ~ 102" + - "4)\x14만주 (1024 ~ 1028)\x14조겐 (1028 ~ 1037)\x17조랴쿠 (1037 ~ 1040)\x14조큐 (1" + - "040 ~ 1044)\x17간토쿠 (1044 ~ 1046)\x17에이쇼 (1046 ~ 1053)\x14덴기 (1053 ~ 1058" + - ")\x17고헤이 (1058 ~ 1065)\x17지랴쿠 (1065 ~ 1069)\x14엔큐 (1069 ~ 1074)\x14조호 (1" + - "074 ~ 1077)\x17쇼랴쿠 (1077 ~ 1081)\x17에이호 (1081 ~ 1084)\x17오토쿠 (1084 ~ 108" + - "7)\x14간지 (1087 ~ 1094)\x14가호 (1094 ~ 1096)\x17에이초 (1096 ~ 1097)\x17조토쿠 (" + - "1097 ~ 1099)\x14고와 (1099 ~ 1104)\x14조지 (1104 ~ 1106)\x14가쇼 (1106 ~ 1108)" + - "\x14덴닌 (1108 ~ 1110)\x17덴에이 (1110 ~ 1113)\x17에이큐 (1113 ~ 1118)\x17겐에이 (1" + - "118 ~ 1120)\x14호안 (1120 ~ 1124)\x14덴지 (1124 ~ 1126)\x17다이지 (1126 ~ 1131)" + - "\x14덴쇼 (1131 ~ 1132)\x14조쇼 (1132 ~ 1135)\x14호엔 (1135 ~ 1141)\x17에이지 (114" + - "1 ~ 1142)\x14고지 (1142 ~ 1144)\x14덴요 (1144 ~ 1145)\x14규안 (1145 ~ 1151)" + - "\x17닌페이 (1151 ~ 1154)\x14규주 (1154 ~ 1156)\x14호겐 (1156 ~ 1159)\x17헤이지 (11" + - "59 ~ 1160)\x1a에이랴쿠 (1160 ~ 1161)\x14오호 (1161 ~ 1163)\x14조칸 (1163 ~ 1165)" + - "\x17에이만 (1165 ~ 1166)\x14닌난 (1166 ~ 1169)\x14가오 (1169 ~ 1171)\x14조안 (117" + - "1 ~ 1175)\x14안겐 (1175 ~ 1177)\x14지쇼 (1177 ~ 1181)\x14요와 (1181 ~ 1182)" + - "\x17주에이 (1182 ~ 1184)\x17겐랴쿠 (1184 ~ 1185)\x14분지 (1185 ~ 1190)\x14겐큐 (11" + - "90 ~ 1199)\x14쇼지 (1199 ~ 1201)\x14겐닌 (1201 ~ 1204)\x14겐큐 (1204 ~ 1206)" + - "\x17겐에이 (1206 ~ 1207)\x14조겐 (1207 ~ 1211)\x17겐랴쿠 (1211 ~ 1213)\x14겐포 (12" + - "13 ~ 1219)\x14조큐 (1219 ~ 1222)\x14조오 (1222 ~ 1224)\x14겐닌 (1224 ~ 1225)" + - "\x17가로쿠 (1225 ~ 1227)\x17안테이 (1227 ~ 1229)\x14간키 (1229 ~ 1232)\x17조에이 (1" + - "232 ~ 1233)\x17덴푸쿠 (1233 ~ 1234)\x17분랴쿠 (1234 ~ 1235)\x17가테이 (1235 ~ 123" + - "8)\x17랴쿠닌 (1238 ~ 1239)\x14엔오 (1239 ~ 1240)\x14닌지 (1240 ~ 1243)\x14간겐 (1" + - "243 ~ 1247)\x14호지 (1247 ~ 1249)\x14겐초 (1249 ~ 1256)\x14고겐 (1256 ~ 1257)" + - "\x14쇼카 (1257 ~ 1259)\x14쇼겐 (1259 ~ 1260)\x14분오 (1260 ~ 1261)\x14고초 (1261" + - " ~ 1264)\x17분에이 (1264 ~ 1275)\x14겐지 (1275 ~ 1278)\x14고안 (1278 ~ 1288)" + - "\x14쇼오 (1288 ~ 1293)\x17에이닌 (1293 ~ 1299)\x14쇼안 (1299 ~ 1302)\x14겐겐 (130" + - "2 ~ 1303)\x14가겐 (1303 ~ 1306)\x17도쿠지 (1306 ~ 1308)\x14엔쿄 (1308 ~ 1311)" + - "\x14오초 (1311 ~ 1312)\x14쇼와 (1312 ~ 1317)\x14분포 (1317 ~ 1319)\x14겐오 (1319" + - " ~ 1321)\x14겐코 (1321 ~ 1324)\x14쇼추 (1324 ~ 1326)\x17가랴쿠 (1326 ~ 1329)" + - "\x17겐토쿠 (1329 ~ 1331)\x14겐코 (1331 ~ 1334)\x14겐무 (1334 ~ 1336)\x14엔겐 (133" + - "6 ~ 1340)\x17고코쿠 (1340 ~ 1346)\x17쇼헤이 (1346 ~ 1370)\x17겐토쿠 (1370 ~ 1372)" + - "\x14분추 (1372 ~ 1375)\x14덴주 (1375 ~ 1379)\x17고랴쿠 (1379 ~ 1381)\x14고와 (138" + - "1 ~ 1384)\x14겐추 (1384 ~ 1392)\x1a메이토쿠 (1384 ~ 1387)\x14가쿄 (1387 ~ 1389)" + - "\x14고오 (1389 ~ 1390)\x1a메이토쿠 (1390 ~ 1394)\x17오에이 (1394 ~ 1428)\x14쇼초 (1" + - "428 ~ 1429)\x17에이쿄 (1429 ~ 1441)\x17가키쓰 (1441 ~ 1444)\x14분안 (1444 ~ 1449" + - ")\x17호토쿠 (1449 ~ 1452)\x17교토쿠 (1452 ~ 1455)\x14고쇼 (1455 ~ 1457)\x17조로쿠 (" + - "1457 ~ 1460)\x14간쇼 (1460 ~ 1466)\x14분쇼 (1466 ~ 1467)\x14오닌 (1467 ~ 1469)" + - "\x17분메이 (1469 ~ 1487)\x15조쿄 (1487 ~ 1489)<\x17엔토쿠 (1489 ~ 1492)\x17메이오 (" + - "1492 ~ 1501)\x14분키 (1501 ~ 1504)\x17에이쇼 (1504 ~ 1521)\x1a다이에이 (1521 ~ 15" + - "28)\x17교로쿠 (1528 ~ 1532)\x14덴분 (1532 ~ 1555)\x14고지 (1555 ~ 1558)\x1a에이로쿠" + - " (1558 ~ 1570)\x14겐키 (1570 ~ 1573)\x14덴쇼 (1573 ~ 1592)\x17분로쿠 (1592 ~ 15" + - "96)\x17게이초 (1596 ~ 1615)\x14겐나 (1615 ~ 1624)\x17간에이 (1624 ~ 1644)\x14쇼호 " + - "(1644 ~ 1648)\x17게이안 (1648 ~ 1652)\x14조오 (1652 ~ 1655)\x1a메이레키 (1655 ~ 1" + - "658)\x14만지 (1658 ~ 1661)\x14간분 (1661 ~ 1673)\x14엔포 (1673 ~ 1681)\x14덴나 (" + - "1681 ~ 1684)\x14조쿄 (1684 ~ 1688)\x17겐로쿠 (1688 ~ 1704)\x17호에이 (1704 ~ 171" + - "1)\x17쇼토쿠 (1711 ~ 1716)\x14교호 (1716 ~ 1736)\x14겐분 (1736 ~ 1741)\x14간포 (1" + - "741 ~ 1744)\x14엔쿄 (1744 ~ 1748)\x14간엔 (1748 ~ 1751)\x17호레키 (1751 ~ 1764)" + - "\x17메이와 (1764 ~ 1772)\x17안에이 (1772 ~ 1781)\x17덴메이 (1781 ~ 1789)\x17간세이 (" + - "1789 ~ 1801)\x14교와 (1801 ~ 1804)\x14분카 (1804 ~ 1818)\x17분세이 (1818 ~ 1830" + - ")\x14덴포 (1830 ~ 1844)\x14고카 (1844 ~ 1848)\x17가에이 (1848 ~ 1854)\x17안세이 (1" + - "854 ~ 1860)\x14만엔 (1860 ~ 1861)\x14분큐 (1861 ~ 1864)\x14겐지 (1864 ~ 1865)" + - "\x17게이오 (1865 ~ 1868)\x09메이지\x09다이쇼\x06쇼와\x0c헤이세이\x0c화르바딘\x15오르디베헤쉬트\x0c" + - "호르다드\x06티르\x0c모르다드\x0f샤흐리바르\x09메흐르\x06아반\x09아자르\x06다이\x09바흐만\x0c에스판드" + - "\x0f중화민국전\x0c중화민국\x06연호\x03년\x06작년\x06올해\x06내년\x0a{0}년 후\x0a{0}년 전\x06분기" + - "\x0d지난 분기\x0d이번 분기\x0d다음 분기\x0d{0}분기 후\x0d{0}분기 전\x09지난달\x0a이번 달\x0a다음 달" + - "\x0d{0}개월 후\x0d{0}개월 전\x03주\x09지난주\x0a이번 주\x0a다음 주\x0a{0}주 후\x0a{0}주 전" + - "\x0d{0}번째 주\x09그저께\x06어제\x06오늘\x06내일\x06모레\x0a{0}일 후\x0a{0}일 전\x06요일\x10" + - "지난 일요일\x10이번 일요일\x10다음 일요일\x14{0}주 후 일요일\x14{0}주 전 일요일\x10지난 월요일\x10이번" + - " 월요일\x10다음 월요일\x14{0}주 후 월요일\x14{0}주 전 월요일\x10지난 화요일\x10이번 화요일\x10다음 화요일" + - "\x14{0}주 후 화요일\x14{0}주 전 화요일\x10지난 수요일\x10이번 수요일\x10다음 수요일\x14{0}주 후 수요일" + - "\x14{0}주 전 수요일\x10지난 목요일\x10이번 목요일\x10다음 목요일\x14{0}주 후 목요일\x14{0}주 전 목요일" + - "\x10지난 금요일\x10이번 금요일\x10다음 금요일\x14{0}주 후 금요일\x14{0}주 전 금요일\x10지난 토요일\x10" + - "이번 토요일\x10다음 토요일\x14{0}주 후 토요일\x14{0}주 전 토요일\x0d오전/오후\x03시\x0d현재 시간" + - "\x0d{0}시간 후\x0d{0}시간 전\x03분\x0a현재 분\x0a{0}분 후\x0a{0}분 전\x03초\x06지금\x0a{0" + - "}초 후\x0a{0}초 전\x09시간대\x0a{0} 시간\x14{0} 하계 표준시\x0d{0} 표준시" - -var bucket60 string = "" + // Size: 8425 bytes - "\x10협정 세계시\x17영국 하계 표준시\x16아일랜드 표준시\x10아크레 시간\x13아크레 표준시\x1a아크레 하계 표준시" + - "\x19아프가니스탄 시간\x19중앙아프리카 시간\x16동아프리카 시간\x16남아프리카 시간\x16서아프리카 시간\x19서아프리카 " + - "표준시 서아프리카 하계 표준시\x13알래스카 시간\x16알래스카 표준시\x1d알래스카 하계 표준시\x17알마티 표준 시간" + - "\x1a알마티 표준 표준시\x1a알마티 하계 표준시\x10아마존 시간\x13아마존 표준시\x1a아마존 하계 표준시\x11미 중부 " + - "시간\x14미 중부 표준시\x1b미 중부 하계 표준시\x11미 동부 시간\x14미 동부 표준시\x1b미 동부 하계 표준시" + - "\x11미 산지 시간\x14미 산악 표준시\x1b미 산지 하계 표준시\x14미 태평양 시간\x17미 태평양 표준시\x1e미 태평양" + - " 하계 표준시\x13아나디리 시간\x16아나디리 표준시\x1d아나디리 하계 표준시\x10아피아 시간\x13아피아 표준시\x1a아피" + - "아 하계 표준시\x17악타우 표준 시간\x1a악타우 표준 표준시\x1a악타우 하계 표준시\x17악퇴베 표준 시간\x1a악퇴베 " + - "표준 표준시\x1a악퇴베 하계 표준시\x13아라비아 시간\x16아라비아 표준시\x1d아라비아 하계 표준시\x16아르헨티나 시간" + - "\x19아르헨티나 표준시 아르헨티나 하계 표준시\x1d아르헨티나 서부 시간 아르헨티나 서부 표준시'아르헨티나 서부 하계 표준시" + - "\x16아르메니아 시간\x19아르메니아 표준시 아르메니아 하계 표준시\x10대서양 시간\x13대서양 표준시\x1e미 대서양 하계 " + - "표준시#오스트레일리아 중부 시간&오스트레일리아 중부 표준시-오스트레일리아 중부 하계 표준시&오스트레일리아 중서부 시간)오스트레" + - "일리아 중서부 표준시0오스트레일리아 중서부 하계 표준시#오스트레일리아 동부 시간&오스트레일리아 동부 표준시-오스트레일리아 동부" + - " 하계 표준시#오스트레일리아 서부 시간&오스트레일리아 서부 표준시-오스트레일리아 서부 하계 표준시\x19아제르바이잔 시간\x1c아" + - "제르바이잔 표준시#아제르바이잔 하계 표준시\x13아조레스 시간\x16아조레스 표준시\x1d아조레스 하계 표준시\x16방글라데시" + - " 시간\x19방글라데시 표준시 방글라데시 하계 표준시\x0d부탄 시간\x13볼리비아 시간\x16브라질리아 시간\x19브라질리아 표" + - "준시 브라질리아 하계 표준시\x13브루나이 시간\x17카보 베르데 시간\x1a카보 베르데 표준시!카보 베르데 하계 표준시" + - "\x10케이시 시간\x10차모로 시간\x0d채텀 시간\x10채텀 표준시\x17채텀 하계 표준시\x0d칠레 시간\x10칠레 표준시" + - "\x17칠레 하계 표준시\x0d중국 시간\x10중국 표준시\x17중국 하계 표준시\x13초이발산 시간\x16초이발산 표준시\x1d" + - "초이발산 하계 표준시\x19크리스마스섬 시간\x17코코스 제도 시간\x13콜롬비아 시간\x16콜롬비아 표준시\x1d콜롬비아 하" + - "계 표준시\x11쿡 제도 시간\x14쿡 제도 표준시\x22쿡 제도 절반 하계 표준시\x0d쿠바 시간\x10쿠바 표준시\x17쿠" + - "바 하계 표준시\x13데이비스 시간\x16뒤몽뒤르빌 시간\x13동티모르 시간\x13이스터섬 시간\x16이스터섬 표준시\x1d이" + - "스터섬 하계 표준시\x13에콰도르 시간\x14중부 유럽 시간\x17중부 유럽 표준시\x1e중부 유럽 하계 표준시\x10동유럽 " + - "시간\x13동유럽 표준시\x1a동유럽 하계 표준시\x17극동 유럽 표준시\x10서유럽 시간\x13서유럽 표준시\x1a서유럽 하" + - "계 표준시\x1a포클랜드 제도 시간\x1d포클랜드 제도 표준시$포클랜드 제도 하계 표준시\x0d피지 시간\x10피지 표준시" + - "\x17피지 하계 표준시 프랑스령 가이아나 시간/프랑스령 남부 식민지 및 남극 시간\x16갈라파고스 시간\x10감비에 시간\x13" + - "그루지아 시간\x16그루지아 표준시\x1d그루지아 하계 표준시\x17길버트 제도 시간\x16그리니치 표준시\x1a그린란드 동부" + - " 시간\x1d그린란드 동부 표준시$그린란드 동부 하계 표준시\x1a그린란드 서부 시간\x1d그린란드 서부 표준시$그린란드 서부 하" + - "계 표준시\x11괌 표준 시간\x13걸프만 표준시\x13가이아나 시간\x1a하와이 알류샨 시간\x1d하와이 알류샨 표준시$하와" + - "이 알류샨 하계 표준시\x0d홍콩 시간\x10홍콩 표준시\x17홍콩 하계 표준시\x10호브드 시간\x13호브드 표준시\x1a호" + - "브드 하계 표준시\x10인도 표준시\x10인도양 시간\x16인도차이나 시간\x1d중부 인도네시아 시간\x1d동부 인도네시아 시" + - "간\x1d서부 인도네시아 시간\x0d이란 시간\x10이란 표준시\x17이란 하계 표준시\x16이르쿠츠크 시간\x19이르쿠츠크 " + - "표준시 이르쿠츠크 하계 표준시\x13이스라엘 시간\x16이스라엘 표준시\x1d이스라엘 하계 표준시\x0d일본 시간\x10일본 " + - "표준시\x17일본 하계 표준시,페트로파블롭스크-캄차츠키 시간/페트로파블롭스크-캄차츠키 표준시6페트로파블롭스크-캄차츠키 하계 표" + - "준시\x1d동부 카자흐스탄 시간\x1d서부 카자흐스탄 시간\x13대한민국 시간\x16대한민국 표준시\x1d대한민국 하계 표준시" + - "\x16코스라에섬 시간\x1f크라스노야르스크 시간\x22크라스노야르스크 표준시)크라스노야르스크 하계 표준시\x19키르기스스탄 시간" + - "\x14랑카 표준 시간\x14라인 제도 시간\x14로드 하우 시간\x17로드 하우 표준시\x1e로드 하우 하계 표준시\x10마카오" + - " 시간\x17마카오 표준 시간\x1a마카오 하계 표준시\x13매쿼리섬 시간\x10마가단 시간\x13마가단 표준시\x1a마가단 하계" + - " 표준시\x16말레이시아 시간\x10몰디브 시간\x1a마르키즈 제도 시간\x14마셜 제도 시간\x13모리셔스 시간\x16모리셔스 " + - "표준시\x1d모리셔스 하계 표준시\x0d모슨 시간\x1a멕시코 북서부 시간\x1d멕시코 북서부 표준시$멕시코 북서부 하계 표준" + - "시\x1a멕시코 태평양 시간\x1d멕시코 태평양 표준시$멕시코 태평양 하계 표준시\x16울란바토르 시간\x19울란바토르 표준시" + - " 울란바토르 하계 표준시\x13모스크바 시간\x16모스크바 표준시\x1d모스크바 하계 표준시\x10미얀마 시간\x10나우루 시간" + - "\x0d네팔 시간\x19뉴칼레도니아 시간\x1c뉴칼레도니아 표준시#뉴칼레도니아 하계 표준시\x13뉴질랜드 시간\x16뉴질랜드 표준" + - "시\x1d뉴질랜드 하계 표준시\x16뉴펀들랜드 시간\x19뉴펀들랜드 표준시 뉴펀들랜드 하계 표준시\x10니우에 시간\x10노퍽" + - "섬 시간!페르난도 데 노로냐 시간$페르난도 데 노로냐 표준시+페르난도 데 노로냐 하계 표준시$북마리아나 제도 표준 시간\x1c" + - "노보시비르스크 시간\x1f노보시비르스크 표준시&노보시비르스크 하계 표준시\x10옴스크 시간\x13옴스크 표준시\x1a옴스크 하" + - "계 표준시\x13파키스탄 시간\x16파키스탄 표준시\x1d파키스탄 하계 표준시\x10팔라우 시간\x19파푸아뉴기니 시간\x13" + - "파라과이 시간\x16파라과이 표준시\x1d파라과이 하계 표준시\x0d페루 시간\x10페루 표준시\x17페루 하계 표준시\x10" + - "필리핀 시간\x13필리핀 표준시\x1a필리핀 하계 표준시\x17피닉스 제도 시간#세인트피에르 미클롱 시간&세인트피에르 미클롱 " + - "표준시-세인트피에르 미클롱 하계 표준시\x10핏케언 시간\x10포나페 시간\x0d평양 시간\x16키질로르다 시간\x1d키질로르" + - "다 표준 시간 키질로르다 하계 표준시\x13레위니옹 시간\x10로데라 시간\x10사할린 시간\x13사할린 표준시\x1a사할린 " + - "하계 표준시\x10사마라 시간\x13사마라 표준시\x1a사마라 하계 표준시\x10사모아 시간\x13사모아 표준시\x1a사모아 " + - "하계 표준시\x10세이셸 시간\x16싱가포르 표준시\x17솔로몬 제도 시간\x1a사우스 조지아 시간\x10수리남 시간\x0d쇼" + - "와 시간\x10타히티 시간\x0d대만 시간\x10대만 표준시\x17대만 하계 표준시\x16타지키스탄 시간\x13토켈라우 시간" + - "\x0d통가 시간\x10통가 표준시\x17통가 하계 표준시\x0d추크 시간\x1c투르크메니스탄 시간\x1f투르크메니스탄 표준시&투" + - "르크메니스탄 하계 표준시\x10투발루 시간\x13우루과이 시간\x16우루과이 표준시\x1d우루과이 하계 표준시\x19우즈베키스" + - "탄 시간\x1c우즈베키스탄 표준시#우즈베키스탄 하계 표준시\x13바누아투 시간\x16바누아투 표준시\x1d바누아투 하계 표준시" + - "\x16베네수엘라 시간\x1c블라디보스토크 시간\x1f블라디보스토크 표준시&블라디보스토크 하계 표준시\x16볼고그라드 시간\x19" + - "볼고그라드 표준시 볼고그라드 하계 표준시\x10보스톡 시간\x13웨이크섬 시간 월리스푸투나 제도 시간\x13야쿠츠크 시간" + - "\x16야쿠츠크 표준시\x1d야쿠츠크 하계 표준시\x1c예카테린부르크 시간\x1f예카테린부르크 표준시&예카테린부르크 하계 표준시" - -var bucket61 string = "" + // Size: 13526 bytes - "\x0d조선 시간\x10조선 표준시\x17조선 하계 표준시\x18जानेवारी\x1eफेब्रुवारी\x0fमार्च\x12ए" + - "प्रिल\x06मे\x09जून\x0cजुलै\x0fओगस्ट\x1bसेप्टेंबर\x15ओक्टोबर\x1bनोव्हें" + - "बर\x15डिसेंबर\x1bआदित्यवार\x12सोमवार\x12मंगळार\x12बुधवार\x15गुरुवार" + - "\x18शुक्रवार\x12शनिवार\x0bम.पू.\x0bम.नं.$क्रिस्तपूर्व\x1eक्रिस्तशखा\x06d" + - "-M-yy\x1cभारतीय समय\x10EEEE, MMMM d, Gy\x0aMMMM d, Gy\x09MMM d, Gy\x06M/" + - "d/Gy\x0aجنؤری\x0aفرؤری\x0aمارٕچ\x0aاپریل\x06میٔ\x08جوٗن\x0eجوٗلایی\x08اگ" + - "ست\x0aستمبر\x0eاکتوٗبر\x0aنومبر\x0aدسمبر\x0cآتھوار\x14ژٔنٛدٕروار\x0eبوٚ" + - "موار\x0cبودوار\x12برٛٮ۪سوار\x08جُمہ\x0aبٹوار\x0eاَتھوار\x16ژٔنٛدرٕروار" + - "\x0aژۄباگ\x17دوٚیِم ژۄباگ\x17ترٛیِم ژۄباگ\x17ژوٗرِم ژۄباگ\x19گۄڑنیُک ژۄب" + - "اگ\x13قبٕل مسیٖح\x15عیٖسوی سنہٕ\x09بی سی\x09اے ڈی\x06دور\x06ؤری\x0aرٮ۪ت" + - "ھ\x0aہفتہٕ\x06دۄہ\x08راتھ\x06اَز\x08پگاہ\x11ہفتُک دۄہ\x0dصبح/رات\x0eگٲن" + - "ٛٹہٕ\x0aمِنَٹ\x0eسٮ۪کَنڑ\x06زون$برطٲنوی سَمَر ٹایِم\x22اَیرِش سَمَر ٹای" + - "ِم\x17اٮ۪کرے ٹایِم&اٮ۪کرے سٹینڑاڑ ٹایِم\x22اٮ۪کرے سَمَر ٹایِم\x1fافغانِ" + - "ستان ٹایِم$مرکزی افریٖقا ٹایِم$مشرقی افریٖقا ٹایِم$جنوٗبی افریقا ٹایِم$" + - "مغربی افریٖقا ٹایِم3مغربی افریٖقا سٹینڑاڑ ٹایِم/مغربی افریٖقا سَمَر ٹای" + - "ِم\x1bاٮ۪لاسکا ٹایِم*اٮ۪لاسکا سٹینڑاڑ ٹایِم,اٮ۪لاسکا ڈےلایِٔٹ ٹایِم\x1d" + - "اٮ۪لمٮ۪ٹی ٹایِم,اٮ۪لمٮ۪ٹی سٹینڑاڑ ٹایِم(اٮ۪لمٮ۪ٹی سَمَر ٹایِم\x1bاٮ۪مَز" + - "َن ٹایِم*اٮ۪مَزَن سٹینڑاڑ ٹایِم&اٮ۪مَزَن سَمَر ٹایِم\x15مرکزی ٹایِم$مرک" + - "زی سٹینڑاڑ ٹایِم&مرکزی ڈےلایِٔٹ ٹایِم\x15مشرقی ٹایِم$مشرقی سٹینڑاڑ ٹایِ" + - "م&مشرقی ڈےلایِٔٹ ٹایِم\x19ماونٹین ٹایِم(ماونٹین سٹینڑاڑ ٹایِم*ماونٹین ڈ" + - "ےلایِٔٹ ٹایِم\x19پیسِفِک ٹایِم(پیسِفِک سٹینڑاڑ ٹایِم*پیسِفِک ڈےلایِٔٹ ٹ" + - "ایِم\x1dاٮ۪نَڑیٖر ٹایِم,اٮ۪نَڑیٖر سٹینڑاڑ ٹایِم&اٮ۪نڑیٖر سَمَر ٹایِم" + - "\x19اٮ۪کٹاؤ ٹایِم(اٮ۪کٹاؤ سٹینڑاڑ ٹایِم$اٮ۪کٹاؤ سَمَر ٹایِم\x19اٮ۪کٹوب ٹ" + - "ایِم(اٮ۪کٹوب سٹینڑاڑ ٹایِم$اٮ۪کٹوب سَمَر ٹایِم\x1dارٮ۪بِیَن ٹایِم,ارٮ۪ب" + - "ِیَن سٹینڑاڑ ٹایِم.ارٮ۪بِیَن ڈےلایِٔٹ ٹایِم!ارجٮ۪نٹیٖنا ٹایِم0ارجٮ۪نٹیٖ" + - "نا سٹینڑاڑ ٹایِم,ارجٮ۪نٹیٖنا سَمَر ٹایِم,مغربی ارجٮ۪نٹیٖنا ٹایِم;مغربی " + - "ارجٮ۪نٹیٖنا سٹینڑاڑ ٹایِم7مغربی ارجٮ۪نٹیٖنا سَمَر ٹایِم\x1dارمیٖنِیا ٹا" + - "یِم,ارمیٖنِیا سٹینڑاڑ ٹایِم(ارمیٖنِیا سَمَر ٹایِم\x1fاٮ۪ٹلانٹِک ٹایِم.ا" + - "ٮ۪ٹلانٹِک سٹینڑاڑ ٹایِم0اٮ۪ٹلانٹِک ڈےلایِٔٹ ٹایِم*مرکزی آسٹریلِیَن ٹایِ" + - "م9آسٹریلِیَن مرکزی سٹینڑاڑ ٹایِم;آسٹریلِیَن مرکزی ڈےلایِٔٹ ٹایِم5آسٹریل" + - "ِیَن مرکزی مغربی ٹایِمDآسٹریلِیَن مرکزی مغربی سٹینڑاڑ ٹایِمFآسٹریلِیَن " + - "مرکزی مغربی ڈےلایِٔٹ ٹایِم*مشرِقی آسٹریلِیا ٹایِم9آسٹریلِیَن مشرقی سٹین" + - "ڑاڑ ٹایِم;آسٹریلِیَن مشرقی ڈےلایِٔٹ ٹایِم*مغرِبی آسٹریلِیا ٹایِم;آسٹریل" + - "ِیَن مغرِبی سٹینڑاڑ ٹایِم=آسٹریلِیَن مغرِبیٖ ڈےلایٔٹ ٹایِم\x1fاَزَربیجا" + - "ن ٹایِم.اَزَربیجان سٹینڑاڑ ٹایِم*اَزَربیجان سَمَر ٹایِم\x1bاٮ۪زورٕس ٹای" + - "ِم*اٮ۪زورٕس سٹینڑاڑ ٹایِم\x1eاٮ۪زورٕس سَمَر ٹ\x1fبَنٛگلادیش ٹایِم.بَنٛگ" + - "لادیش سٹینڑاڑ ٹایِم*بَنٛگلادیش سَمَر ٹایِم\x17بوٗٹان ٹایِم\x1bبولِوِیا " + - "ٹایِم\x1fبرٮ۪سِلِیا ٹایِم.برٮ۪سِلِیا سٹینڑاڑ ٹایِم*برٮ۪سِلِیا سَمَر ٹای" + - "ِم0برٛوٗنَے دَروٗسَلَم ٹایِم\x1aکیپ ؤرڑو ٹایِم)کیپ ؤرڑو سٹینڑاڑ ٹایِم" + - "\x1cکیپ سَمَر ٹایِم(کٮ۪مورو سٹینڑاڑ ٹایِم\x19کٮ۪تھَم ٹایِم(کٮ۪تھَم سٹینڑ" + - "اڑ ٹایِم$چٮ۪تھَم سَمَر ٹایِم\x13چِلی ٹایِم\x22چِلی سٹینڑاڑ ٹایِم\x1eچِل" + - "ی سَمَر ٹایِم\x15چَینا ٹایِم$چَینا سٹینڑاڑ ٹایِم&چَینا ڈےلایِٔٹ ٹایِم" + - "\x1fکوےبٮ۪لسَن ٹایِم.کوےبٮ۪لسَن سٹینڑاڑ ٹایِم*کوےبٮ۪لسَن سَمَر ٹایِم\x19" + - "کرٛسمَس ٹایِم&کوکوز اَیلینڑز ٹایِم\x1dکولومبِیا ٹایِم,کولومبِیا سٹینڑاڑ" + - " ٹایِم(کولومبِیا سَمَر ٹایِم\x22کُک اَیلینڑز ٹایِم1کُک اَیلینڑز سٹینڑاڑ " + - "ٹایِم4کُک اَیلینڑز حاف سَمَر ٹایِم\x17کیوٗبا ٹایِم&کیوٗبا سٹینڑاڑ ٹایِم" + - "(کیوٗبا ڈےلایِٔٹ ٹایِم\x15ڑیوِس ٹایِم)ڑمانٹ ڈی اُرویٖل ٹایِم\x22ایٖسٹ ٹی" + - "ٖمَر ٹایِم\x19ایٖسٹَر ٹایِم(ایٖسٹَر سٹینڑاڑ ٹایِم$ایٖسٹَر سَمَر ٹایِم" + - "\x1bاِکویڑَر ٹایِم\x22مرکزی یوٗرپی ٹایِم1مرکزی یوٗرپی سٹینڑاڑ ٹایِم-مرکز" + - "ی یوٗرپی سَمَر ٹایِم\x22مشرقی یوٗرپی ٹایِم1مشرقی یوٗرپی سٹینڑاڑ ٹایِم-م" + - "شرقی یوٗرپی سَمَر ٹایِم$مغرِبی یوٗرپی ٹایِم3مغرِبی یوٗرپی سٹینڑاڑ ٹایِم" + - "1مغرِبی یوٗرِپی سَمَر ٹایِم\x19فاکلینڑ ٹایِم(فاکلینڑ سٹینڑاڑ ٹایِم$فاکلی" + - "نڑ سَمَر ٹایِم\x15فیٖجی ٹایِم$فیٖجی سٹینڑاڑ ٹایِم فیٖجی سَمَر ٹایِم,فرٛ" + - "ٮ۪نٛچ گیوٗٮ۪نا ٹایِم&جنوٗبی فرٮ۪نٛچ ٹایِم#گٮ۪لٮ۪پیٚگوز ٹایِم\x1dگٮ۪مبِی" + - "َر ٹایِم\x1fجورجِیاہُک ٹایِم.جورجِیاہُک سٹینڑاڑ ٹایِم*جورجِیاہُک سَمَر " + - "ٹایِم&گِلبٲٹ ججیٖرُک ٹایِم'گرٛیٖن وِچ میٖن ٹایِم/مشرِقی گریٖن لینڑُک ٹا" + - "یِم>مشرِقی گریٖن لینڑُک سٹینڑاڑ ٹایِم:مشرِقی گریٖن لینڑُک سَمَر ٹایِم/م" + - "غرِبی گریٖن لینڑُک ٹایِم>مغرِبی گریٖن لینڑُک سٹینڑاڑ ٹایِم:مغرِبی گریٖن" + - " لینڑُک سَمَر ٹایِم\x17گُوٮ۪م ٹایِم\x22گَلف سٹینڑاڑ ٹایِم\x17گُیَنا ٹایِ" + - "م.حَواے اٮ۪لیوٗٹِیَن ٹایِم=حَواے اٮ۪لیوٗٹِیَن سٹینڑاڑ ٹایِم9حَواے اٮ۪لی" + - "وٗٹِیَن سَمَر ٹایِم\x1eحانگ کانٛگ ٹایِم-حانگ کانٛگ سٹینڑاڑ ٹایِم+حانٛگ " + - "کانٛگ سَمَر ٹایِم\x13حووڑ ٹایِم\x22حووڑ سٹینڑاڑ ٹایِم\x1eحووڑ سَمَر ٹای" + - "ِم\x14ہِنٛدوستان*ہِندوستٲنۍ اوشَن ٹایِن\x1fاِنڑوچَینا ٹایِم,مرکزی اِنڑو" + - "نیشِیا ٹایِم.مشرِقی اِنڑونیشِیا ٹایِم.مغرِبی اِنڑونیشِیا ٹایِم\x1bاِیٖر" + - "ٲنۍ ٹایِم*اِیٖرٲنۍ سٹینڑاڑ ٹایِم&اِیٖرٲنی سَمَر ٹایِم\x1bاِرکُٹسک ٹایِم" + - "*اِرکُٹسک سٹینڑاڑ ٹایِم&اِرکُٹسک سَمَر ٹایِم\x1dاِسرٲیِلی ٹایِم,اِسرٲیِل" + - "ی سٹینڑاڑ ٹایِم.اِسرٲیِلی ڑےلایِٔٹ ٹایِم\x17جاپٲنۍ ٹایِم&جاپٲنۍ سٹینڑاڑ" + - " ٹایِم(جاپٲنۍ ڑےلایِٔٹ ٹایِم\x1bکَمچَٹکا ٹایِم*کَمچَٹکا سٹینڑاڑ ٹایِم&کَ" + - "مچَٹکا سَمَر ٹایِم.مشرِقی کَزاکھِستان ٹایِم.مغرِبی کَزاکھِستان ٹایِم" + - "\x17کورِیا ٹایِم&کورِیا سٹینڑاڑ ٹایِم(کورِیا ڑےلایِٔٹ ٹایِم\x17کورسَے ٹا" + - "یِم%کرٮ۪سنوےیارسک ٹایِم4کرٮ۪سنوےیارسک سٹینڑاڑ ٹایِم0کرٮ۪سنوےیارسک سَمَر" + - " ٹایِم\x1dکِرگِستان ٹایِم\x17لَنٛکا ٹایِم&لایِٔن ججیٖرُک ٹایِم\x1cلعاڑ ح" + - "ووے ٹایِم+لعاڑ حووے سٹینڑاڑ ٹایِم\x22لعاڑ ڑےلایٔٹ ٹایِم\x19مَکَعوٗ ٹایِ" + - "م(مَکَعوٗ سٹینڑاڑ ٹایِم$مَکَعوٗ سَمَر ٹایِم\x19مَگَدَن ٹایِم(مَگَدَن سٹ" + - "ینڑاڑ ٹایِم$مَگَدَن سَمَر ٹایِم\x1bمَلیشِیا ٹایِم\x1dمالدیٖوٕز ٹایِم" + - "\x1fمارقیوٗسَس ٹایِم&مارشَل ججیٖرُک ٹایِم\x19مورِشَس ٹایِم(مورِشَس سٹینڑ" + - "اڑ ٹایِم$مورِشَس سَمَر ٹایِم\x15ماسَن ٹایِم\x1dمونگولِیا ٹایِم,مونگولِی" + - "ا سٹینڑاڑ ٹایِم(مونگولِیا سَمَر ٹایِم\x17ماسکَو ٹایِم$ماسکو سٹینڑاڑ ٹای" + - "ِم ماسکو سَمَر ٹایِم\x1bمِیانمَر ٹایِم\x1bنَعوٗروٗ ٹایِم\x19نٮ۪پٲلۍ ٹای" + - "ِم(نِو کیلٮ۪ڑونِیا ٹایِم7نِو کیلٮ۪ڑونِیا سٹینڑاڑ ٹایِم3نِو کیلٮ۪ڑونِیس " + - "سَمَر ٹایِم\x1dنِوزِلینڑ ٹایِم,نِوزِلینڑ سٹینڑاڑ ٹایِم,نِوزِلینڑ ڑےلایٔ" + - "ٹ ٹایِم&نیوٗ فاونڑلینڑ ٹایِم5نیوٗ فاونڑلینڑ سٹینڑاڑ ٹایِم8نیوٗ فاونڑ لی" + - "نڑ ڑےلایِٔٹ ٹایِم\x15نِیوٗ ٹایِم\x19نورفعاک ٹایِم\x19نورونہا ٹایِم(نورو" + - "نہا سٹینڑاڑ ٹایِم$نورونہا سَمَر ٹایِم(شُمٲلی مَرِیانا ٹایِم!نۄوۄسِبٔرسک" + - " ٹایِم0نۄوۄسِبٔرسک سٹینڑاڑ ٹایِم,نۄوۄسِبٔرسک سَمَر ٹایِم\x15اۄمسک ٹایِم$" + - "اۄمسک سٹینڑاڑ ٹایِم اۄمسک سَمَر ٹایِم\x1bپاکِستان ٹایِم*پاکِستان سٹینڑا" + - "ڑ ٹایِم&پاکِستان سَمَر ٹایِم\x15پَلاو ٹایِم+پاپُعا نیوٗ گٮ۪نی ٹایِم\x1b" + - "پیرٮ۪گوے ٹایِم*پیرٮ۪گوے سٹینڑاڑ ٹایِم&پیرٮ۪گوے سَمَر ٹایِم\x15پٔروٗ ٹای" + - "ِم$پٔروٗ سٹینڑاڑ ٹایِم پٔروٗ سَمَر ٹایِم\x1fپھِلِپایِن ٹایِم.پھِلِپایِن" + - " سٹینڑاڑ ٹایِم*پھِلِپایِن سَمَر ٹایِم(پھونِکس ججیٖرُک ٹایِم3سینٛٹ پَیری " + - "مِقیوٗلَن ٹایِمBسینٛٹ پَیری مِقیوٗلَن سٹینڑاڑ ٹایِمDسینٛٹ پَیری مِقیوٗل" + - "َن ڑےلایِٔٹ ٹایِم\x1bپِٹکیرٕن ٹایِم\x15پونیپ ٹایِم\x19قِزلوڑا ٹایِم(قِز" + - "لوڑا سٹینڑاڑ ٹایِم$قِزلوڑا سَمَر ٹایِم\x1fرِیوٗنِیَن ٹایِم\x1bروتھٮ۪را " + - "ٹایِم\x1dسَکھٮ۪لِن ٹایِم,سَکھٮ۪لِن سٹینڑاڑ ٹایِم(سَکھٮ۪لِن سَمَر ٹایِم" + - "\x17سمٮ۪را ٹایِم&سمٮ۪را سٹینڑاڑ ٹایِم\x22سمٮ۪را سَمَر ٹایِم\x17سٮ۪موآ ٹا" + - "یِم&سٮ۪موآ سٹینڑاڑ ٹایِم\x22سٮ۪موآ سَمَر ٹایِم\x1bسیشٮ۪لٕز ٹایِم\x1fسِن" + - "ٛگاپوٗر ٹایِم3سولومَن ججیٖرَن ہُنٛد ٹایِم&شُمٲلی جورجِیا ٹایِم\x19سُرِن" + - "ام ٹایِم\x15سیووا ٹایِم\x17ٹاہِٹی ٹایِم\x1fتازِکِستان ٹایِم\x19ٹوکٮ۪لو " + - "ٹایِم\x19ٹعانٛگا ٹایِم(ٹعانٛگا سٹینڑاڑ ٹایِم$ٹعانٛگا سَمَر ٹایِم\x13ٹٔر" + - "ک ٹایِم%تُرکمٮ۪نِستان ٹایِم4تُرکمٮ۪نِستان سٹینڑاڑ ٹایِم0تُرکمٮ۪نِستان س" + - "َمَر ٹایِم\x1bٹوٗوَلوٗ ٹایِم\x1fیوٗرٮ۪گوَے ٹایِم.یوٗرٮ۪گوَے سٹینڑاڑ ٹای" + - "ِم*یوٗرٮ۪گوَے سَمَر ٹایِم!اُزبیکِستان ٹایِم0اُزبیکِستان سٹینڑاڑ ٹایِم0ا" + - "ُزبیکِستانُک سَمَر ٹایِم\x1fوَنوٗاَٹوٗ ٹایِم.وَنوٗاَٹوٗ سٹینڑاڑ ٹایِم*و" + - "َنوٗاَٹوٗ سَمَر ٹایِم#وٮ۪نٮ۪زیوٗلا ٹایِم!ولاڑِووسٹوک ٹایِم0ولاڑِووسٹوک " + - "سٹینڑاڑ ٹایِم,ولاڑِووسٹوک سَمَر ٹایِم\x1dوولگوگریڑ ٹایِم,وولگوگریڑ سٹین" + - "ڑاڑ ٹایِم(وولگوگریڑ سَمَر ٹایِم\x17ووسٹوک ٹایِم ویک ججیٖرُک ٹایِم1والِس" + - " تہٕ فیوٗٹیوٗنا ٹایِم\x19یَکُٹسک ٹایِم(یَکُٹسک سٹینڑاڑ ٹایِم&یَکُٹُسک سَ" + - "مَر ٹایِم'یٮ۪کَٹٔرِنبٔرگ ٹایِم6یٮ۪کَٹٔرِنبٔرگ سٹینڑاڑ ٹایِم0یٮ۪کَٹرِنبٔ" + - "رگ سَمَر ٹایِم\x0fमार्च\x06मे\x09जून\x0cजुलै\x0fऑगस्ट\x18सप्टेंबर\x15ऑक" + - "्टोबर\x0fमार्च\x06मे\x09जून\x0cजुलै" - -var bucket62 string = "" + // Size: 8432 bytes - "\x07Januali\x08Febluali\x05Machi\x06Aplili\x03Mei\x04Juni\x05Julai\x06Ag" + - "osti\x08Septemba\x06Oktoba\x07Novemba\x07Desemba\x08Jumaapii\x09Jumaatat" + - "u\x07Jumaane\x09Jumaatano\x08Alhamisi\x06Ijumaa\x09Jumaamosi\x0cLobo ya " + - "bosi\x0cLobo ya mbii\x11Lobo ya nnd’atu\x0bLobo ya nne\x05makeo\x08nyiag" + - "huo\x0fKabla ya Klisto\x0fBaada ya Klisto\x05Mishi\x09Ng’waka\x08Ng’ezi" + - "\x04Niki\x04Siku\x04Ghuo\x06Evi eo\x05Keloi\x0fMwesiku za wiki\x07Namshi" + - "i\x06Majila\x03ŋ1\x03ŋ2\x03ŋ3\x03ŋ4\x03ŋ5\x03ŋ6\x03ŋ7\x03ŋ8\x03ŋ9\x04ŋ10" + - "\x04ŋ11\x04ŋ12\x14ŋwíí a ntɔ́ntɔ\x14ŋwíí akǝ bɛ́ɛ\x12ŋwíí akǝ ráá\x10ŋwí" + - "í akǝ nin\x12ŋwíí akǝ táan\x15ŋwíí akǝ táafɔk\x16ŋwíí akǝ táabɛɛ\x14ŋwí" + - "í akǝ táaraa\x14ŋwíí akǝ táanin\x12ŋwíí akǝ ntɛk\x1cŋwíí akǝ ntɛk di bɔ" + - "́k\x1dŋwíí akǝ ntɛk di bɛ́ɛ\x09sɔ́ndǝ\x07lǝndí\x06maadí\x0amɛkrɛdí\x08j" + - "ǝǝdí\x07júmbá\x06samdí\x02i1\x02i2\x02i3\x02i4\x22id́ɛ́n kǝbǝk kǝ ntɔ́n" + - "tɔ́\x1eidɛ́n kǝbǝk kǝ kǝbɛ́ɛ\x1cidɛ́n kǝbǝk kǝ kǝráá\x1aidɛ́n kǝbǝk kǝ k" + - "ǝnin\x09sárúwá\x0acɛɛ́nko\x17di Yɛ́sus aká yálɛ\x19cámɛɛn kǝ kǝbɔpka Y" + - "\x04d.Y.\x04k.Y.\x0aByámɛɛn\x04Bǝk\x07Ŋwíí\x09Sɔ́ndǝ\x06Ŋwós\x0aRinkɔɔ́" + - "\x0aGɛ́ɛnǝ\x0aRidúrǝ́\x14Mǝrú mǝ sɔ́ndǝ\x16Sárúwá / Cɛɛ́nko\x09Cámɛɛn" + - "\x07Mǝnít\x04Háu\x05Wáas\x17EEEE, 'dä' d. MMMM y G\x0bd. MMM. y G\x0dd. " + - "M. y GGGGG\x07Jannewa\x08Fäbrowa\x06Määz\x06Aprell\x03Mai\x05Juuni\x05Ju" + - "uli\x06Oujoß\x0aSeptämber\x08Oktohber\x09Novämber\x09Dezämber\x09Sunndaa" + - "ch\x09Mohndaach\x0aDinnsdaach\x07Metwoch\x0cDunnersdaach\x09Friidaach" + - "\x09Samsdaach\x041.Q.\x042.Q.\x043.Q.\x044.Q.\x0b1. Quattahl\x0b2. Quatt" + - "ahl\x0b3. Quattahl\x0b4. Quattahl\x021Q\x022Q\x023Q\x024Q\x04v.M.\x04n.M" + - ".\x11Uhr vörmiddaachs\x10Uhr nommendaachs\x0cVörmeddaach\x0bNommendaach" + - "\x0cvür Krestos%vür de jewöhnlejje Ziggrääschnong\x0bnoh Krestos#en de j" + - "ewöhnlejje Ziggrääschnong\x06v. Kr.\x05n. K.\x02vC\x02nC\x15EEEE, 'dä' d" + - ". MMMM y\x09d. MMM. y\x05Ähra\x04Johr\x09läz Johr\x09diß Johr\x09näx Joh" + - "r\x0een keinem Johr\x0ben {0} Johr\x0cen {0} Johre\x11vör keijnem Johr" + - "\x0dvör {0} Johr\x0evör {0} Johre\x02J.\x08Quattahl\x02Q.\x05Mohnd\x0dlä" + - "tzde Mohnd\x0bdiese Mohnd\x0enächste Mohnd\x04Woch\x09läz Woch\x07di Woc" + - "h\x0enächste Woche\x05Daach\x0bvörjestere\x07jestere\x05hück\x05morje" + - "\x0bövvermorje\x02D.\x0aWochedaach\x16Sunndaach letzte Woche\x15Sunndaac" + - "h diese Woche\x18Sunndaach nächste Woche\x16Moondaach letzte Woche\x15Mo" + - "ondaach diese Woche\x18Moondaach nächste Woche\x17Dinnsdaach letzte Woch" + - "e\x16Dinnsdaach diese Woche\x19Dinnsdaach nächste Woche\x14Metwoch letzt" + - "e Woche\x13Metwoch diese Woche\x16Metwoch nächste Woche\x19Dunnersdaach " + - "letzte Woche\x18Dunnersdaach diese Woche\x1bDunnersdaach nächste Woche" + - "\x16Friidaach letzte Woche\x15Friidaach diese Woche\x18Friidaach nächste" + - " Woche\x16Samsdaach letzte Woche\x15Samsdaach diese Woche\x18Samsdaach n" + - "ächste Woche\x09Daachteil\x02S.\x06Menutt\x06Sekond\x08Zickzohn\x0cZick" + - " vun {0}\x12Summerzick vun {0}\x16Schtandattzick vun {0}\x1fJrußbretanni" + - "je sing Summerzick\x16Irland sing Summerzick\x1cZentraal-Affrekaanesche " + - "Zigg\x17Oß-Affrekaanesche Zigg\x18Söd-Affrekaanesche Zigg\x19Wäß-Affreka" + - "anesche Zigg&Jewöhnlijje Wäß-Affrekaanesche Zigg\x1fWäß-Affrekaanesche S" + - "ommerzigg\x11de Azore ier Zick\x1ede Azore ier jewöhnlijje Zick\x17de Az" + - "ore ier Summerzick\x16Kapvärdejaansche Zigg#Jewöhnlijje Kapvärdejaansche" + - " Zigg\x1cKapvärdejaansche Sommerzigg\x18Meddel-Europpa sing Zick%Meddel-" + - "Europpa sing jewöhnlijje Zick\x1eMeddel-Europpa sing Summerzick\x15Oß-Eu" + - "roppa sing Zick\x22Oß-Europpa sing jewöhnlijje Zick\x1bOß-Europpa sing S" + - "ummerzick\x16Weß-Europpa sing Zick#Weß-Europpa sing jewöhnlijje Zick\x1c" + - "Weß-Europpa sing Summerzick\x1bGreenwich sing Standat-Zick\x1ddem Indisc" + - "he Ozejan sing Zick\x12Zigg vun Mauritius\x1fJewöhnlijje Zigg vun Maurit" + - "ius\x18Summerzigg vun Mauritius\x10Zigg vun Reunion\x17Zigg vun de Seisc" + - "hälle\x03Gen\x03Hwe\x03Meu\x03Ebr\x02Me\x03Met\x03Gor\x03Est\x03Gwn\x03H" + - "ed\x02Du\x03Kev\x0amis Genver\x0bmis Hwevrer\x0amis Meurth\x09mis Ebrel" + - "\x06mis Me\x0cmis Metheven\x0dmis Gortheren\x07mis Est\x0dmis Gwynngala" + - "\x09mis Hedra\x06mis Du\x0cmis Kevardhu\x06dy Sul\x06dy Lun\x09dy Meurth" + - "\x09dy Merher\x06dy Yow\x09dy Gwener\x09dy Sadorn\x07Bledhen\x03Mis\x07S" + - "eythun\x04Dedh\x0fDedh an seythun\x03Eur\x16EEEE, G d-MMMM y-'ж'.\x10d-M" + - "MMM G y-'ж'.\x07янв.\x07фев.\x07мар.\x07апр.\x06май\x07июн.\x07июл.\x07а" + - "вг.\x07сен.\x07окт.\x07ноя.\x07дек.\x02Я\x02Ф\x02М\x02А\x02И\x02С\x02О" + - "\x02Н\x02Д\x06Янв\x06Фев\x06Мар\x06Апр\x06Май\x06Июн\x06Июл\x06Авг\x06Се" + - "н\x06Окт\x06Ноя\x06Дек\x0cЯнварь\x0eФевраль\x08Март\x0cАпрель\x08Июнь" + - "\x08Июль\x0cАвгуст\x10Сентябрь\x0eОктябрь\x0cНоябрь\x0eДекабрь\x07жек." + - "\x07дүй.\x09шейш.\x09шарш.\x09бейш.\x08жума\x07ишм.\x10жекшемби\x10дүйшө" + - "мбү\x10шейшемби\x10шаршемби\x10бейшемби\x0cишемби\x04жк\x05дш.\x05шш." + - "\x05шр.\x05бш.\x05жм.\x05иш.\x091-чей.\x092-чей.\x093-чей.\x094-чей.\x0e" + - "1-чейрек\x0e2-чейрек\x0e3-чейрек\x0e4-чейрек\x051-ч.\x052-ч.\x053-ч.\x05" + - "4-ч.\x13түн ортосу\x04тң\x0dчак түш\x04тк\x15эртең менен\x17түштөн кийин" + - "\x0eкечинде\x13түн ичинде\x0dтүн орт\x0dэртң мн\x0fтүшт кйн\x08кечк\x0aт" + - "аңкы\x1bтүштөн кийинки\x10кечкурун&биздин заманга чейин\x09б.з.ч.\x17би" + - "здин заман\x06б.з.\x15y-'ж'., d-MMMM, EEEE\x0fy-'ж'., d-MMMM\x0ey-'ж'.," + - " d-MMM\x0aзаман\x0cбылтыр\x0aбыйыл\x15эмдиги жылы\x1b{0} жылдан кийин" + - "\x15{0} жыл мурун\x16{0} жыл. кийин\x0cчейрек\x19акыркы чейрек\x13бул че" + - "йрек\x1bкийинки чейрек!{0} чейректен кийин\x1b{0} чейрек мурун\x09чейр." + - "\x16акыркы чейр.\x10бул чейр.\x18кийинки чейр.\x18{0} чейр. мурун\x18{0}" + - " чейр. кийин\x13өткөн айда\x0fбул айда\x15эмдиги айда\x19{0} айдан кийин" + - "\x13{0} ай мурун\x16{0} айд. кийин\x14{0} айд. кийн\x11{0} ай мурн\x17өт" + - "көн аптада\x15ушул аптада\x1bкелерки аптада\x1d{0} аптадан кийин\x17{0}" + - " апта мурун\x19{0} апта ичинде\x06апт\x12өткөн апт.\x10ушул апт.\x16келе" + - "рки апт.\x16{0} апт. кийин\x16{0} апт. мурун\x17мурдагы күнү\x0aкечээ" + - "\x0aбүгүн\x0aэртеӊ\x12бүрсүгүнү\x1b{0} күндөн кийин\x15{0} күн мурун\x16" + - "{0} күн. кийин\x17аптанын күнү\x1fөткөн жекшембиде\x1dушул жекшембиде#ке" + - "лерки жекшембиде%{0} жекшембиден кийин\x1f{0} жекшемби мурун\x14өткөн ж" + - "екш.\x12ушул жекш.\x18келерки жекш.\x1c{0} жекшемб. кийн\x1c{0} жекшемб" + - ". мурн\x1fөткөн дүйшөмбүдө\x1dушул дүйшөмбүдө#келерки дүйшөмбүдө%{0} дүй" + - "шөмбүдөн кийин\x1f{0} дүйшөмбү мурун\x14өткөн дүйш.\x12ушул дүйш.\x18ке" + - "лерки дүйш.\x16{0} дүйш. кийн\x16{0} дүйш. мурн\x10өткөн дш.\x0eушул дш" + - ".\x14келерки дш.\x12{0} дш. кийн\x12{0} дш. мурн\x1fөткөн шейшембиде\x1d" + - "ушул шейшембиде#келерки шейшембиде%{0} шейшембиден кийин\x1f{0} шейшемб" + - "и мурун\x14өткөн шейш.\x12ушул шейш.\x18келерки шейш.\x16{0} шейш. кийн" + - "\x16{0} шейш. мурн\x1fөткөн шаршембиде\x1dушул шаршембиде#келерки шаршем" + - "биде%{0} шаршембиден кийин\x1f{0} шаршемби мурун\x14өткөн шарш.\x12ушул" + - " шарш.\x18келерки шарш.\x16{0} шарш. кийн\x16{0} шарш. мурн\x10өткөн шр." + - "\x0eушул шр.\x14келерки шр.\x12{0} шр. кийн\x12{0} шр. мурн\x1fөткөн бей" + - "шембиде\x1dушул бейшембиде#келерки бейшембиде%{0} бейшембиден кийин\x1f" + - "{0} бейшемби мурун\x14өткөн бейш.\x12ушул бейш.\x18келерки бейш.\x18{0} " + - "бейш. кийин\x18{0} бейш. мурун\x10өткөн бш.\x0eушул бш.\x14келерки бш." + - "\x12{0} бш. кийн\x12{0} бш. мурн\x1cөткөн жума күнү\x1aушул жума күнү ке" + - "лерки жума күнү\x1d{0} жумадан кийин\x17{0} жума мурун\x10өткөн жм.\x14" + - "келерки жм.\x13{0} жм кийин\x11{0} жм мурн\x0fөткөн жм\x0dушул жм\x13ке" + - "лерки жм\x11{0} жм кийн\x1bөткөн ишембиде\x19ушул ишембиде\x1fкелерки и" + - "шембиде!{0} ишембиден кийин\x1b{0} ишемби мурун\x12өткөн ишм.\x10ушул и" + - "шм.\x16келерки ишм.\x16{0} ишм. кийин\x14{0} ишм. мурн\x09ТЧ/ТК\x08саат" + - "\x15ушул саатта\x1d{0} сааттан кийин\x17{0} саат мурун\x04ст\x18{0} саат" + - ". кийин\x18{0} саат. мурун\x10{0} с. кийн\x10{0} с. мурн\x0aмүнөт\x17ушу" + - "л мүнөттө\x1f{0} мүнөттөн кийин\x19{0} мүнөт мурун\x07мүн.\x07фев.\x07м" + - "ар.\x07апр.\x08майы\x08июны\x08июлы\x07авг.\x07окт.\x07дек.\x02И\x02Д" + - "\x0cМартъи\x06Май\x08Июнь\x08Июль\x02Lu\x02Ma\x02Mi\x02Jo\x02Vi\x03Sâ" + - "\x02Ma\x02Mi\x09февр.\x06мая\x09сент.\x09нояб.\x02М\x02С\x02Д\x08март" + - "\x06май\x08июнь\x08июль\x02П\x02В\x02С\x02Ч\x02М\x02А\x02О\x02Ж\x02Ш\x05" + - "+J.C." - -var bucket63 string = "" + // Size: 13490 bytes - "\x16{0} мүн. кийин\x16{0} мүн. мурун\x03м.\x14{0} мүн. кийн\x14{0} мүн. " + - "мурн\x08азыр!{0} секунддан кийин\x1b{0} секунд мурун\x16{0} сек. кийин" + - "\x16{0} сек. мурун\x14{0} сек. кийн\x14{0} сек. мурн\x19убакыт алкагы" + - "\x14{0} убактысы\x08{0} (+1)\x08{0} (+0),Британия жайкы убактысы*Ирланди" + - "я кышкы убакыты%Афганистан убактысы0Борбордук Африка убактысы(Чыгыш Афр" + - "ика убактысы*Түштүк Африка убактысы(Батыш Африка убактысы1Батыш Африка " + - "кышкы убакыты3Батыш Африка жайкы убактысы\x1dАляска убактысы(Аляска кыш" + - "кы убактысы(Аляска жайкы убактысы\x1dАмазон убактысы(Амазон кышкы убакт" + - "ысы(Амазон жайкы убактысы<Түндүк Америка, борбордук убакытKТүндүк Амери" + - "ка, борбордук кышкы убактысыGТүндүк Америка, борбордук жайкы убакыт8Түн" + - "дүк Америка, чыгыш убактысыCТүндүк Америка, чыгыш кышкы убактысыCТүндүк" + - " Америка, чыгыш жайкы убактысы4Түндүк Америка, тоо убактысы?Түндүк Амери" + - "ка, тоо кышкы убактысы?Түндүк Америка, тоо жайкы убактысыAТүндүк Америк" + - "а, Тынч океан убактысыLТүндүк Америка, Тынч океан кышкы убактысыLТүндүк" + - " Америка, Тынч океан жайкы убактысы\x19Апиа убактысы\x22Апиа кышкы убакы" + - "ты$Апиа жайкы убактысы\x1dАрабия убактысы&Арабия кышкы убакыты&Арабия ж" + - "айкы убакыты#Аргентина убактысы.Аргентина кышкы убактысы.Аргентина жайк" + - "ы убактысы.Батыш Аргентина убактысы9Батыш Аргентина кышкы убактысы9Баты" + - "ш Аргентина жайкы убактысы\x1fАрмения убактысы(Армения кышкы убакыты*Ар" + - "мения жайкы убактысы#Атлантика убактысы.Атлантика кышкы убактысы.Атлант" + - "ика жайкы убактысы6Австралия борбордук убактысы?Австралия борбордук кыш" + - "кы убакытыAАвстралия борбордук жайкы убактысыAАвстралия борбордук батыш" + - " убактысыJАвстралия борбордук батыш кышкы убакытыLАвстралия борбордук чы" + - "гыш жайкы убактысы.Австралия чыгыш убактысы7Австралия чыгыш кышкы убакы" + - "ты9Австралия чыгыш жайкы убактысы.Австралия батыш убактысы7Австралия ба" + - "тыш кышкы убакыты9Австралия батыш жайкы убактысы%Азербайжан убактысы.Аз" + - "ербайжан кышкы убакыты0Азербайжан жайкы убактысы\x19Азор убактысы\x22Аз" + - "ор кышкы убакыты&Азорс жайкы убактысы#Бангладеш убактысы,Бангладеш кышк" + - "ы убакыты.Бангладеш жайкы убактысы\x1bБутан убактысы\x1fБоливия убактыс" + - "ы!Бразилия убактысы,Бразилия кышкы убактысы,Бразилия жайкы убактысы2Бру" + - "ней Даруссалам убактысы$Капе Верде убактысы-Капе Верде кышкы убакыты/Ка" + - "пе Верде жайкы убактысы\x1fЧаморро убактысы\x1bЧатам убактысы\x22Чатам " + - "кышкы убакыт&Чатам жайкы убактысы\x19Чили убактысы$Чили кышкы убактысы$" + - "Чили жайкы убактысы\x1bКытай убактысы$Кытай кышкы убакыты$Кытай жайкы у" + - "бакыты#Чойбалсан убактысы,Чойбалсан кышкы убакыты.Чойбалсан жайкы убакт" + - "ысы0Крисмас аралынын убактысы2Кокос аралдарынын убактысы!Колумбия убакт" + - "ысы,Колумбия кышкы убактысы,Колумбия жайкы убактысы.Кук аралдарынын уба" + - "ктысы7Кук аралдарынын кышкы убакытыDКук аралдарынын жарым жайкы убактыс" + - "ы\x19Куба убактысы$Куба кышкы убактысы$Куба жайкы убактысы\x1bДэвис уба" + - "ктысы)Дюмон-д-Урвил убактысы&Чыгыш Тимор убактысы,Истер аралынын убакты" + - "сы5Истер аралынын кышкы убакыты5Истер аралынын жайкы убакыты\x1fЭкуадор" + - " убактысы0Борбордук Европа убактысы9Борбордук Европа кышкы убакыты;Борбо" + - "рдук Европа жайкы убактысы(Чыгыш Европа убактысы1Чыгыш Европа кышкы уба" + - "кыты3Чыгыш Европа жайкы убактысы;Калининград жана Минск убактысы(Батыш " + - "Европа убактысы1Батыш Европа кышкы убакыты3Батыш Европа жайкы убактысы8" + - "Фолкленд аралдарынын убактысыAФолкленд аралдарынын кышкы убакытыCФолкле" + - "нд аралдарынын жайкы убактысы\x19Фижи убактысы\x22Фижи кышкы убакыты$Фи" + - "жи жайкы убактысы,Француз Гвиана убактысыLФранцуз Түштүгү жана Антаркти" + - "ка убактысы#Галапагос убактысы\x1dГамбие убактысы\x1dГрузия убактысы&Гр" + - "узия кышкы убакыты(Грузия жайкы убактысы\x1fГилберт убактысы\x1eGMT, кы" + - "шкы убакыты0Чыгыш Гренландия убактысы;Чыгыш Гренландия кышкы убактысы;Ч" + - "ыгыш Гренландия жайкы убактысы0Батыш Гренландия убактысы;Батыш Гренланд" + - "ия кышкы убактысы;Батыш Гренландия жайкы убактысы9Персия булуңунун жайк" + - "ы убакыты\x1dГвиана убактысы(Гавайи-Алеут убактысы3Гавайи-Алеут кышкы у" + - "бактысы3Гавайи-Алеут жайкы убактысы\x1fГонконг убактысы(Гонконг кышкы у" + - "бакыты*Гонконг жайкы убактысы\x19Ховд убактысы\x22Ховд кышкы убакыты$Хо" + - "вд жайкы убактысы\x1bИндия убактысы$Инди океан убактысы#Индокытай убакт" + - "ысы6Борбордук Индонезия убактысы.Чыгыш Индонезия убактысы.Батыш Индонез" + - "ия убактысы\x19Иран убактысы\x22Иран кышкы убакыты*Иран күндүзгү убакты" + - "сы\x1fИркутск убактысы(Иркутск кышкы убакыты(Иркутск жайкы убакыты\x1dИ" + - "зраиль убакыты(Израиль кышкы убакыты(Израиль жайкы убакыты\x1bЖапон уба" + - "ктысы$Жапон кышкы убакыты&Жапон жайкы убактысы.Чыгыш Казакстан убактысы" + - ".Батыш Казакстан убактысы\x1bКорея убактысы$Корея кышкы убакыты$Корея жа" + - "йкы убакыты\x1dКосрае убактысы%Красноярск убактысы.Красноярск кышкы уба" + - "кыты0Красноярск жайкы убактысы%Кыргызстан убактысы0Лайн аралдарынын уба" + - "ктысы Лорд Хау убактысы)Лорд Хау кышкы убакыты+Лорд Хау жайкы убактысы" + - "\x1fМакуари убактысы\x1fМагадан убактысы(Магадан кышкы убакыты*Магадан ж" + - "айкы убактысы!Малайзия убактысы\x1fМальдив убактысы!Маркезас убактысы6М" + - "аршалл аралдарынын убактысы!Маврикий убактысы*Маврикий кышкы убакыты,Ма" + - "врикий жайкы убактысы\x1dМоусон убактысы7Түндүк-чыгыш Мексика убактысыB" + - "Түндүк-чыгыш Мексика кышкы убактысыBТүндүк-чыгыш Мексика жайкы убактысы" + - "4Мексика, Тынч океан убактысы?Мексика, Тынч океан кышкы убактысы?Мексика" + - ", Тынч океан жайкы убактысы$Улан Батор убактысы-Улан Батор кышкы убакыты" + - "/Улан Батор жайкы убактысы\x1dМосква убактысы&Москва кышкы убакыты(Москв" + - "а жайкы убактысы\x1fМйанмар убактысы\x1bНауру убактысы\x1bНепал убактыс" + - "ы,Жаӊы Каледония убактысы5Жаӊы Каледония кышкы убакыты7Жаӊы Каледония ж" + - "айкы убактысы*Жаӊы Зеландия убактысы3Жаӊы Зеландия кышкы убакыты3Жаңы З" + - "еландия жайкы убакыты'Нюфаундлэнд убактысы2Нюфаундлэнд кышкы убактысы2Н" + - "юфаундлэнд жайкы убактысы\x19Ниуэ убактысы\x1fНорфолк убактысы5Фернандо" + - " де Норонья убактысы@Фернандо де Норонья кышкы убактысы@Фернандо де Норо" + - "нья жайкы убактысы'Новосибирск убактысы0Новосибирск кышкы убакыты2Новос" + - "ибирск жайкы убактысы\x19Омск убактысы\x22Омск кышкы убакыты$Омск жайкы" + - " убактысы!Пакистан убактысы*Пакистан кышкы убакыты,Пакистан жайкы убакты" + - "сы\x1bПалау убактысы1Папуа-Жаңы Гвинея убактысы!Парагвай убактысы,Параг" + - "вай кышкы убактысы,Парагвай жайкы убактысы\x19Перу убактысы$Перу кышкы " + - "убактысы$Перу жайкы убактысы8Филиппин аралдарынын убактысыCФилиппин ара" + - "лдарынын кышкы убактысыCФилиппин аралдарынын жайкы убактысы4Феникс арал" + - "дарынын убактысы8Сен Пьер жана Микелон убактысыCСен Пьер жана Микелон к" + - "ышкы убактысыCСен Пьер жана Микелон жайкы убактысы!Питкэрнг убактысы" + - "\x1dПонапе убактысы\x1dПхеньян убакыты\x1fРеюнион убактысы\x1dРотера уба" + - "ктысы\x1fСахалин убактысы(Сахалин кышкы убакыты*Сахалин жайкы убактысы" + - "\x1bСамоа убактысы$Самоа кышкы убакыты&Самоа жайкы убактысы\x1dСейшел уб" + - "актысы!Сингапур убактысы6Соломон аралдарынын убактысы*Түштүк Жоржия уба" + - "ктысы!Суринаме убактысы\x19Саоа убактысы\x1bТаити убактысы\x1dТайпей уб" + - "актысы&Тайпей кышкы убакыты&Тайпей жайкы убакыты#Тажикстан убактысы\x1f" + - "Токелау убактысы\x1bТонга убактысы$Тонга кышкы убакыты&Тонга жайкы убак" + - "тысы\x19Чуук убактысы'Түркмөнстан убактысы0Түркмөнстан кышкы убакыты2Тү" + - "ркмөнстан жайкы убактысы\x1dТувалу убактысы\x1fУругвай убактысы*Уругвай" + - " кышкы убактысы*Уругвай жайкы убактысы#Өзбекстан убактысы,Өзбекстан кышк" + - "ы убакыты.Өзбекстан жайкы убактысы\x1fВануату убактысы(Вануату кышкы уб" + - "акыты*Вануату жайкы убактысы#Венесуэла убактысы'Владивосток убактысы0Вл" + - "адивосток кышкы убакыты2Владивосток жайкы убактысы#Волгоград убактысы,В" + - "олгоград кышкы убакыты.Волгоград жайкы убактысы\x1dВосток убактысы0Уейк" + - " аралдарынын убактысы1Уолис жана Футуна убактысы\x1dЯкутск убактысы&Якут" + - "ск кышкы убакыты(Якутск жайкы убактысы)Екатеринбург убактысы2Екатеринбу" + - "рг кышкы убакыты4Екатеринбург жайкы убактысы" - -var bucket64 string = "" + // Size: 9745 bytes - "\x09Fúngatɨ\x06Naanɨ\x06Keenda\x06Ikúmi\x09Inyambala\x07Idwaata\x0aMʉʉnc" + - "hɨ\x08Vɨɨrɨ\x06Saatʉ\x04Inyi\x05Saano\x07Sasatʉ\x0cKʉfúngatɨ\x09Kʉnaanɨ" + - "\x09Kʉkeenda\x08Kwiikumi\x0dKwiinyambála\x0aKwiidwaata\x0dKʉmʉʉnchɨ\x0bK" + - "ʉvɨɨrɨ\x09Kʉsaatʉ\x07Kwiinyi\x08Kʉsaano\x0aKʉsasatʉ\x06Píili\x06Táatu" + - "\x04Íne\x06Táano\x03Alh\x03Ijm\x06Móosi\x0aJumapíiri\x09Jumatátu\x08Juma" + - "íne\x0aJumatáano\x09Alamíisi\x07Ijumáa\x0aJumamóosi\x06Ncho 1\x06Ncho 2" + - "\x06Ncho 3\x06Ncho 4\x0bNcholo ya 1\x0bNcholo ya 2\x0bNcholo ya 3\x0bNch" + - "olo ya 4\x03TOO\x03MUU\x18Kɨrɨsitʉ sɨ anavyaal\x16Kɨrɨsitʉ akavyaalwe" + - "\x03KSA\x02KA\x0aMpɨɨndɨ\x07Mwaáka\x07Mweéri\x06Wíiki\x05Sikʉ\x05Niijo" + - "\x06Isikʉ\x0bLamʉtoondo\x0eSikʉ ya júma\x13Mpɨɨndɨ ja sikʉ\x04Sáa\x07Dak" + - "íka\x09Sekúunde\x16Mpɨɨndɨ ja mɨɨtʉ\x04Son.\x05Méi.\x05Dën.\x05Mët.\x04" + - "Don.\x04Fre.\x04Sam.\x07Sonndeg\x08Méindeg\x0aDënschdeg\x09Mëttwoch\x0bD" + - "onneschdeg\x07Freideg\x09Samschdeg\x03Son\x04Méi\x04Dën\x04Mët\x03Don" + - "\x03Fre\x03Sam\x05moies\x09nomëttes\x06nomë.\x08v. e. Z.\x08n. e. Z.\x05" + - "Epoch\x04Joer\x0blescht Joer\x0adëst Joer\x0cnächst Joer\x0ban {0} Joer" + - "\x0da(n) {0} Joer\x0evirun {0} Joer\x10viru(n) {0} Joer\x09an {0} J.\x0b" + - "a(n) {0} J.\x0cvirun {0} J.\x0eviru(n) {0} J.\x07+{0} J.\x07-{0} J.\x0ea" + - "n {0} Quartal\x12a(n) {0} Quartaler\x11virun {0} Quartal\x15viru(n) {0} " + - "Quartaler\x09an {0} Q.\x0ba(n) {0} Q.\x0cvirun {0} Q.\x0eviru(n) {0} Q." + - "\x07+{0} Q.\x07-{0} Q.\x05Mount\x0dleschte Mount\x0bdëse Mount\x0enächst" + - "e Mount\x0can {0} Mount\x0fa(n) {0} Méint\x0fvirun {0} Mount\x12viru(n) " + - "{0} Méint\x09an {0} M.\x0ba(n) {0} M.\x0cvirun {0} M.\x0eviru(n) {0} M." + - "\x07+{0} M.\x07-{0} M.\x0blescht Woch\x09dës Woch\x0cnächst Woch\x0ban {" + - "0} Woch\x0fa(n) {0} Wochen\x0evirun {0} Woch\x12viru(n) {0} Wochen\x09an" + - " {0} W.\x0ba(n) {0} W.\x0cvirun {0} W.\x0eviru(n) {0} W.\x07+{0} W.\x07-" + - "{0} W.\x03Dag\x09gëschter\x04haut\x04muer\x0aan {0} Dag\x0da(n) {0} Deeg" + - "\x0dvirun {0} Dag\x10viru(n) {0} Deeg\x09an {0} D.\x0ba(n) {0} D.\x0cvir" + - "un {0} D.\x0eviru(n) {0} D.\x07+{0} D.\x07-{0} D.\x09Wochendag\x0flescht" + - "e Sonndeg\x0ddëse Sonndeg\x10nächste Sonndeg\x0cleschte Son.\x0adëse Son" + - ".\x0dnächste Son.\x0bleschte So.\x09dëse So.\x0cnächste So.\x10leschte M" + - "éindeg\x0edëse Méindeg\x11nächste Méindeg\x0dleschte Méi.\x0bdëse Méi." + - "\x0enächste Méi.\x0cleschte Mé.\x0adëse Mé.\x0dnächste Mé.\x13leschten D" + - "ënschdeg\x11dësen Dënschdeg\x14nächsten Dënschdeg\x0dleschten Dë.\x0bdë" + - "sen Dë.\x0enächsten Dë.\x11leschte Mëttwoch\x0fdëse Mëttwoch\x12nächste " + - "Mëttwoch\x0dleschte Mët.\x0bdëse Mët.\x0enächste Mët.\x0cleschte Më.\x0a" + - "dëse Më.\x0dnächste Më.\x14leschten Donneschdeg\x12dësen Donneschdeg\x15" + - "nächsten Donneschdeg\x0dleschten Don.\x0bdësen Don.\x0enächsten Don.\x0c" + - "leschten Do.\x0adësen Do.\x0dnächsten Do.\x0fleschte Freideg\x0ddëse Fre" + - "ideg\x10nächste Freideg\x0cleschte Fre.\x0adëse Fre.\x0dnächste Fre.\x0b" + - "leschte Fr.\x09dëse Fr.\x0cnächste Fr.\x11leschte Samschdeg\x0fdëse Sams" + - "chdeg\x12nächste Samschdeg\x0cleschte Sam.\x0adëse Sam.\x0dnächste Sam." + - "\x0bleschte Sa.\x09dëse Sa.\x0cnächste Sa.\x0fDageshallschent\x05Stonn" + - "\x0can {0} Stonn\x10a(n) {0} Stonnen\x0fvirun {0} Stonn\x13viru(n) {0} S" + - "tonnen\x03St.\x0aan {0} St.\x0ca(n) {0} St.\x0dvirun {0} St.\x0fviru(n) " + - "{0} St.\x08+{0} St.\x08-{0} St.\x06Minutt\x0dan {0} Minutt\x11a(n) {0} M" + - "inutten\x10virun {0} Minutt\x14viru(n) {0} Minutten\x0ban {0} Min.\x0da(" + - "n) {0} Min.\x0evirun {0} Min.\x10viru(n) {0} Min.\x06Sekonn\x0dan {0} Se" + - "konn\x11a(n) {0} Sekonnen\x10virun {0} Sekonn\x14viru(n) {0} Sekonnen" + - "\x0ban {0} Sek.\x0da(n) {0} Sek.\x0evirun {0} Sek.\x10viru(n) {0} Sek." + - "\x09+{0} Sek.\x09-{0} Sek.\x08Zäitzon\x09{0} Zäit\x0f{0} Summerzäit\x0f{" + - "0} Normalzäit\x14Britesch Summerzäit\x12Iresch Summerzäit\x0aAcre-Zäit" + - "\x10Acre-Normalzäit\x10Acre-Summerzäit\x11Afghanistan-Zäit\x18Zentralafr" + - "ikanesch Zäit\x14Ostafrikanesch Zäit\x15Südafrikanesch Zäit\x15Westafrik" + - "anesch Zäit\x1bWestafrikanesch Normalzäit\x1bWestafrikanesch Summerzäit" + - "\x0cAlaska-Zäit\x12Alaska-Normalzäit\x12Alaska-Summerzäit\x0cAlmaty-Zäit" + - "\x12Almaty-Normalzäit\x12Almaty-Summerzäit\x0eAmazonas-Zäit\x14Amazonas-" + - "Normalzäit\x14Amazonas-Summerzäit\x1cNordamerikanesch Inlandzäit#Nordame" + - "rikanesch Inland-Normalzäit#Nordamerikanesch Inland-Summerzäit Nordameri" + - "kanesch Ostküstenzäit'Nordamerikanesch Ostküsten-Normalzäit'Nordamerikan" + - "esch Ostküsten-Summerzäit\x14Rocky-Mountain-Zäit\x1aRocky-Mountain-Norma" + - "lzäit\x1aRocky-Mountain-Summerzäit!Nordamerikanesch Westküstenzäit(Norda" + - "merikanesch Westküsten-Normalzäit(Nordamerikanesch Westküsten-Summerzäit" + - "\x0cAnadyr-Zäit\x12Anadyr-Normalzäit\x12Anadyr-Summerzäit\x0eArabesch Zä" + - "it\x14Arabesch Normalzäit\x14Arabesch Summerzäit\x12Argentinesch Zäit" + - "\x18Argentinesch Normalzäit\x18Argentinesch Summerzäit\x16Westargentines" + - "ch Zäit\x1cWestargentinesch Normalzäit\x1cWestargentinesch Summerzäit" + - "\x0fArmenesch Zäit\x15Armenesch Normalzäit\x15Armenesch Summerzäit\x0eAt" + - "lantik-Zäit\x14Atlantik-Normalzäit\x14Atlantik-Summerzäit\x18Zentralaust" + - "ralesch Zäit\x1eZentralaustralesch Normalzäit\x1eZentralaustralesch Summ" + - "erzäit\x1eZentral-/Westaustralesch Zäit$Zentral-/Westaustralesch Normalz" + - "äit$Zentral-/Westaustralesch Summerzäit\x14Ostaustralesch Zäit\x1aOstau" + - "stralesch Normalzäit\x1aOstaustralesch Summerzäit\x15Westaustralesch Zäi" + - "t\x1bWestaustralesch Normalzäit\x1bWestaustralesch Summerzäit\x17Aserbai" + - "dschanesch Zäit\x1dAserbeidschanesch Normalzäit\x1dAserbaidschanesch Sum" + - "merzäit\x0cAzoren-Zäit\x12Azoren-Normalzäit\x12Azoren-Summerzäit\x11Bang" + - "ladesch-Zäit\x17Bangladesch-Normalzäit\x17Bangladesch-Summerzäit\x0cBhut" + - "an-Zäit\x12Bolivianesch Zäit\x0fBrasília-Zäit\x15Brasília-Normalzäit\x15" + - "Brasília-Summerzäit\x0cBrunei-Zäit\x0fKap-Verde-Zäit\x15Kap-Verde-Normal" + - "zäit\x15Kap-Verde-Summerzäit\x0eChamorro-Zäit\x0dChatham-Zäit\x13Chatham" + - "-Normalzäit\x13Chatham-Summerzäit\x10Chilenesch Zäit\x16Chilenesch Norma" + - "lzäit\x16Chilenesch Summerzäit\x10Chinesesch Zäit\x16Chinesesch Normalzä" + - "it\x16Chinesesch Summerzäit\x10Choibalsan-Zäit\x16Choibalsan-Normalzäit" + - "\x16Choibalsan-Summerzäit\x18Chrëschtdagsinsel-Zäit\x12Kokosinselen-Zäit" + - "\x13Kolumbianesch Zäit\x19Kolumbianesch Normalzäit\x19Kolumbianesch Summ" + - "erzäit\x11Cookinselen-Zäit\x17Cookinselen-Normalzäit\x17Cookinselen-Summ" + - "erzäit\x0fKubanesch Zäit\x15Kubanesch Normalzäit\x15Kubanesch Summerzäit" + - "\x0bDavis-Zäit\x18Dumont-d’Urville-Zäit\x0eOsttimor-Zäit\x13Ouschterinse" + - "l-Zäit\x19Ouschterinsel-Normalzäit\x19Ouschterinsel-Summerzäit\x14Ecuado" + - "rianesch Zäit\x18Mëtteleuropäesch Zäit\x1eMëtteleuropäesch Normalzäit" + - "\x1eMëtteleuropäesch Summerzäit\x14Osteuropäesch Zäit\x1aOsteuropäesch N" + - "ormalzäit\x1aOsteuropäesch Summerzäit\x15Westeuropäesch Zäit\x1bWesteuro" + - "päesch Normalzäit\x1bWesteuropäesch Summerzäit\x15Falklandinselen-Zäit" + - "\x1bFalklandinselen-Normalzäit\x1bFalklandinselen-Summerzäit\x0dFidschi-" + - "Zäit\x13Fidschi-Normalzäit\x13Fidschi-Summerzäit\x19Franséisch-Guayane-Z" + - "äit,Franséisch Süd- an Antarktisgebidder-Zäit\x0fGalapagos-Zäit\x0dGamb" + - "ier-Zäit\x0fGeorgesch Zäit\x15Georgesch Normalzäit\x15Georgesch Summerzä" + - "it\x15Gilbert-Inselen-Zäit\x18Mëttler Greenwich-Zäit\x12Ostgrönland-Zäit" + - "\x18Ostgrönland-Normalzäit\x18Ostgrönland-Summerzäit\x13Westgrönland-Zäi" + - "t\x19Westgrönland-Normalzäit\x19Westgrönland-Summerzäit\x0aGuam-Zäit\x0a" + - "Golf-Zäit\x0cGuyana-Zäit\x14Hawaii-Aleuten-Zäit\x1aHawaii-Aleuten-Normal" + - "zäit\x1aHawaii-Aleuten-Summerzäit\x0fHong-Kong-Zäit\x15Hong-Kong-Normalz" + - "äit\x15Hong-Kong-Summerzäit\x0aHovd-Zäit\x10Hovd-Normalzäit\x10Hovd-Sum" + - "merzäit\x0dIndesch Zäit\x15Indeschen Ozean-Zäit\x0fIndochina-Zäit\x18Zen" + - "tralindonesesch Zäit\x14Ostindonesesch Zäit\x15Westindonesesch Zäit\x0eI" + - "ranesch Zäit\x14Iranesch Normalzäit\x14Iranesch Summerzäit\x0dIrkutsk-Zä" + - "it\x13Irkutsk-Normalzäit\x13Irkutsk-Summerzäit\x10Israelesch Zäit\x16Isr" + - "aelesch Normalzäit\x16Israelesch Summerzäit\x0fJapanesch Zäit\x15Japanes" + - "ch Normalzäit\x15Japanesch Summerzäit\x11Kamtschatka-Zäit\x17Kamtschatka" + - "-Normalzäit\x17Kamtschatka-Summerzäit\x13Ostkasachesch Zäit\x14Westkasac" + - "hesch Zäit\x10Koreanesch Zäit\x16Koreanesch Normalzäit\x16Koreanesch Sum" + - "merzäit\x0cKosrae-Zäit\x11Krasnojarsk-Zäit\x17Krasnojarsk-Normalzäit\x17" + - "Krasnojarsk-Summerzäit\x11Kirgisistan-Zäit\x13Linneninselen-Zäit\x0fLord" + - "-Howe-Zäit\x15Lord-Howe-Normalzäit\x15Lord-Howe-Summerzäit\x14Macquariei" + - "nsel-Zäit\x0dMagadan-Zäit\x13Magadan-Normalzäit\x13Magadan-Summerzäit" + - "\x10Malaysesch Zäit\x0eMaldiven-Zäit\x0fMarquesas-Zäit\x15Marshallinsele" + - "n-Zäit\x0fMauritius-Zäit\x15Mauritius-Normalzäit\x15Mauritius-Summerzäit" + - "\x0cMawson-Zäit\x15Nordwest-Mexiko-Zäit\x1bNordwest-Mexiko-Normalzäit" + - "\x1bNordwest-Mexiko-Summerzäit\x18Mexikanesch Pazifikzäit\x1fMexikanesch" + - " Pazifik-Normalzäit\x1fMexikanesch Pazifik-Summerzäit\x11Ulaanbaatar-Zäi" + - "t\x17Ulaanbaatar-Normalzäit\x17Ulaanbaatar-Summerzäit\x0eMoskauer Zäit" + - "\x14Moskauer Normalzäit\x14Moskauer Summerzäit\x0dMyanmar-Zäit\x0bNauru-" + - "Zäit\x11Nepalesesch Zäit\x14Neikaledonesch Zäit\x1aNeikaledonesch Normal" + - "zäit\x1aNeikaledonesch Summerzäit\x11Neiséiland-Zäit\x17Neiséiland-Norma" + - "lzäit\x17Neiséiland-Summerzäit\x11Neifundland-Zäit\x17Neifundland-Normal" + - "zäit\x17Neifundland-Summerzäit\x0aNiue-Zäit\x14Norfolkinselen-Zäit\x19Fe" + - "rnando-de-Noronha-Zäit\x1fFernando-de-Noronha-Normalzäit\x1fFernando-de-" + - "Noronha-Summerzäit\x11Nowosibirsk-Zäit\x17Nowosibirsk-Normalzäit\x17Nowo" + - "sibirsk-Summerzäit\x0aOmsk-Zäit\x10Omsk-Normalzäit\x10Omsk-Summerzäit" + - "\x12Pakistanesch Zäit\x18Pakistanesch Normalzäit\x18Pakistanesch Summerz" + - "äit\x0bPalau-Zäit\x15Papua-Neiguinea-Zäit\x14Paraguayanesch Zäit\x1aPar" + - "aguayanesch Normalzäit\x1aParaguayanesch Summerzäit\x10Peruanesch Zäit" + - "\x16Peruanesch Normalzäit\x16Peruanesch Summerzäit\x14Philippinnesch Zäi" + - "t\x1aPhilippinnesch Normalzäit\x1aPhilippinnesch Summerzäit\x14Phoenixin" + - "selen-Zäit\x1dSaint-Pierre-a-Miquelon-Zäit#Saint-Pierre-a-Miquelon-Norma" + - "lzäit#Saint-Pierre-a-Miquelon-Summerzäit\x15Pitcairninselen-Zäit\x0cPona" + - "pe-Zäit\x0eRéunion-Zäit\x0dRothera-Zäit\x0eSakhalin-Zäit\x14Sakhalin-Nor" + - "malzäit\x14Sakhalin-Summerzäit\x0cSamara-Zäit\x12Samara-Normalzäit\x12Sa" + - "mara-Summerzäit\x0bSamoa-Zäit\x11Samoa-Normalzäit\x11Samoa-Summerzäit" + - "\x10Seychellen-Zäit\x16Singapur-Standardzäit\x14Salomoninselen-Zäit\x13S" + - "üdgeorgesch Zäit\x0eSuriname-Zäit\x0bSyowa-Zäit\x0cTahiti-Zäit\x0cTaipe" + - "i-Zäit\x12Taipei-Normalzäit\x12Taipei-Summerzäit\x13Tadschikistan-Zäit" + - "\x0dTokelau-Zäit\x10Tonganesch Zäit\x16Tonganesch Normalzäit\x16Tonganes" + - "ch Summerzäit\x0bChuuk-Zäit\x12Turkmenistan-Zäit\x18Turkmenistan-Normalz" + - "äit\x18Turkmenistan-Summerzäit\x0cTuvalu-Zäit\x13Uruguayanesch Zäit\x18" + - "Uruguyanesch Normalzäit\x19Uruguayanesch Summerzäit\x10Usbekistan-Zäit" + - "\x16Usbekistan-Normalzäit\x16Usbekistan-Summerzäit\x0dVanuatu-Zäit\x13Va" + - "nuatu-Normalzäit\x13Vanuatu-Summerzäit\x0fVenezuela-Zäit\x11Wladiwostok-" + - "Zäit\x17Wladiwostok-Normalzäit\x17Wladiwostok-Summerzäit\x0fWolgograd-Zä" + - "it\x15Wolgograd-Normalzäit\x15Wolgograd-Summerzäit\x0cWostok-Zäit\x10Wak" + - "e-Insel-Zäit\x15Wallis-a-Futuna-Zäit\x0dJakutsk-Zäit\x13Jakutsk-Normalzä" + - "it\x13Jakutsk-Summerzäit\x14Jekaterinbuerg-Zäit\x1aJekaterinbuerg-Normal" + - "zäit\x1aJekaterinbuerg-Summerzäit\x02Ma\x02De\x02Wu\x02Do\x02Fr\x03Sat" + - "\x03Mvu\x03Sib\x03Sit\x03Sin\x03Sih\x03Mgq\x03Mso\x03Bil\x03Tha\x03Hla" - -var bucket65 string = "" + // Size: 14752 bytes - "\x09Janwaliyo\x09Febwaliyo\x06Marisi\x05Apuli\x05Maayi\x05Juuni\x07Julaa" + - "yi\x07Agusito\x0aSebuttemba\x08Okitobba\x07Novemba\x07Desemba\x08Sabbiit" + - "i\x06Balaza\x09Lwakubiri\x09Lwakusatu\x07Lwakuna\x0aLwakutaano\x0aLwamuk" + - "aaga\x04Kya1\x04Kya2\x04Kya3\x04Kya4\x09Kyakuna 1\x09Kyakuna 2\x09Kyakun" + - "a 3\x09Kyakuna 4\x14Kulisito nga tannaza\x14Bukya Kulisito Azaal\x07Mule" + - "mbe\x05Mwezi\x06Lunaku\x05Ggulo\x08Lwaleero\x04Nkya\x18Lunaku lw’omu sab" + - "biiti\x05Saawa\x07Dakiika\x09Kasikonda\x0aSsaawa za:\x10Wiótheȟika Wí" + - "\x13Thiyóȟeyuŋka Wí\x16Ištáwičhayazaŋ Wí\x10Pȟežítȟo Wí\x13Čhaŋwápetȟo W" + - "í\x17Wípazukȟa-wašté Wí\x13Čhaŋpȟásapa Wí\x0fWasútȟuŋ Wí\x12Čhaŋwápeǧi " + - "Wí\x16Čhaŋwápe-kasná Wí\x0dWaníyetu Wí\x13Tȟahékapšuŋ Wí\x10Aŋpétuwakȟaŋ" + - "\x0fAŋpétuwaŋži\x0eAŋpétunuŋpa\x0dAŋpétuyamni\x0cAŋpétutopa\x0fAŋpétuzap" + - "taŋ\x11Owáŋgyužažapi\x08Ómakȟa\x17Ómakȟa kʼuŋ héhaŋ\x11Lé ómakȟa kiŋ\x1c" + - "Tȟokáta ómakȟa kiŋháŋ\x22Letáŋhaŋ ómakȟa {0} kiŋháŋ\x22Hékta ómakȟa {0} " + - "kʼuŋ héhaŋ\x03Wí\x12Wí kʼuŋ héhaŋ\x0cLé wí kiŋ\x17Tȟokáta wí kiŋháŋ#Letá" + - "ŋhaŋ wíyawapi {0} kiŋháŋ#Hékta wíyawapi {0} kʼuŋ héhaŋ\x04Okó\x13Okó kʼ" + - "uŋ héhaŋ\x0dLé okó kiŋ\x18Tȟokáta okó kiŋháŋ\x1eLetáŋhaŋ okó {0} kiŋháŋ" + - "\x1eHékta okó {0} kʼuŋ héhaŋ\x08Aŋpétu\x0bȞtálehaŋ\x11Lé aŋpétu kiŋ\x15H" + - "íŋhaŋni kiŋháŋ!Letáŋhaŋ {0}-čháŋ kiŋháŋ\x22Hékta {0}-čháŋ k’uŋ héhaŋ" + - "\x0dOkó-aŋpétu Aŋpétuwakȟáŋ kʼuŋ héhaŋ\x1aAŋpétuwakȟáŋ kiŋ lé\x1bAŋpétuw" + - "akȟáŋ kiŋháŋ\x1fAŋpétutȟokahe kʼuŋ héhaŋ\x19Aŋpétutȟokahe kiŋ lé\x1aAŋpé" + - "tutȟokahe kiŋháŋ\x1dAŋpétunuŋpa kʼuŋ héhaŋ\x17Aŋpétunuŋpa kiŋ lé\x18Aŋpé" + - "tunuŋpa kiŋháŋ\x1cAŋpétuyamni kʼuŋ héhaŋ\x16Aŋpétuyamni kiŋ lé\x17Aŋpétu" + - "yamni kiŋháŋ\x1bAŋpétutopa kʼuŋ héhaŋ\x15Aŋpétutopa kiŋ lé\x16Aŋpétutopa" + - " kiŋháŋ Aŋpétuzaŋptaŋ kʼuŋ héhaŋ\x16Apétuzaptaŋ kiŋ lé\x19Aŋpétuzaptaŋ k" + - "iŋháŋ!Owáŋkayužažapi kʼuŋ héhaŋ\x1bOwáŋkayužažapi kiŋ lé\x1cOwáŋkayužaža" + - "pi kiŋháŋ\x08Owápȟe\x22Letáŋhaŋ owápȟe {0} kiŋháŋ\x22Hékta owápȟe {0} kʼ" + - "uŋ héhaŋ\x16Owápȟe oȟʼáŋkȟo(Letáŋhaŋ oȟ’áŋkȟo {0} kiŋháŋ)Hékta oȟ’áŋkȟo " + - "{0} k’uŋ héhaŋ\x05Okpí\x1fLetáŋhaŋ okpí {0} kiŋháŋ Hékta okpí {0} k’uŋ h" + - "éhaŋ\x10sánzá ya yambo\x13sánzá ya míbalé\x13sánzá ya mísáto\x11sánzá y" + - "a mínei\x13sánzá ya mítáno\x13sánzá ya motóbá\x11sánzá ya nsambo\x11sánz" + - "á ya mwambe\x10sánzá ya libwa\x10sánzá ya zómi\x1esánzá ya zómi na mɔ̌k" + - "ɔ́\x1csánzá ya zómi na míbalé\x03eye\x03ybo\x03mbl\x03mst\x03min\x03mtn" + - "\x03mps\x06eyenga\x12mokɔlɔ mwa yambo\x15mokɔlɔ mwa míbalé\x15mokɔlɔ mwa" + - " mísáto\x13mokɔlɔ ya mínéi\x14mokɔlɔ ya mítáno\x09mpɔ́sɔ\x03SM1\x03SM2" + - "\x03SM3\x03SM4\x19sánzá mísáto ya yambo\x1csánzá mísáto ya míbalé\x1csán" + - "zá mísáto ya mísáto\x1asánzá mísáto ya mínei\x0cntɔ́ngɔ́\x07mpókwa\x14Ya" + - "mbo ya Yézu Krís\x14Nsima ya Yézu Krís\x0alibóso ya\x0ansima ya Y\x07Ntá" + - "ngo\x05Mobú\x07Sánzá\x08Pɔ́sɔ\x08Mokɔlɔ\x0dLóbi elékí\x08Lɛlɔ́\x0cLóbi e" + - "koyâ\x14Mokɔlɔ ya pɔ́sɔ\x11Eleko ya mokɔlɔ\x06Ngonga\x07Monúti\x0cSɛkɔ́n" + - "dɛ\x11Ntáká ya ngonga\x0dNgonga ya {0}\x15Ntángo ya Lubumbashi\x1eNtángo" + - " ya Afríka ya Ɛ́sita\x1aNtángo ya Afríka ya Sidi\x12Ntángo ya Londoni" + - "\x12Ntángo ya Seyshel\x08ພ.ສ.\x06ຊີ\x06ຊູ\x09ຢິນ\x0cເມົາ\x0cເຊັນ\x09ຊື່" + - "\x06ວູ\x0cເວີຍ\x0fເຊິ່ນ\x06ຢູ\x09ຊູ່\x06ໄຮ\x10ເຈຍ-ຊິ\x0dຢີ-ຊູ\x13ບິງ-ຢິນ" + - "\x16ດິງ-ເມົາ\x13ວູ-ເຊັນ\x0dຈີ-ຊິ\x10ແກງ-ວູ\x16ຊິນ-ເວີຍ\x13ເຣນ-ເຊນ\x10ກຸຍ" + - "-ຢູ\x0dໄຈ-ຊູ\x0dຢີ-ໄຮ\x10ບິງ-ຊີ\x10ດິງ-ຊູ\x10ວູ-ຢິນ\x13ຈີ-ເມົາ\x13ແກງ-ເຊ" + - "ນ\x10ຊິນ-ຊິ\x10ເຣນ-ວູ\x16ກຸຍ-ເວີຍ\x13ເຈຍ-ເຊນ\x0dຢີ-ຢູ\x10ບິງ-ຊູ\x10ດິງ" + - "-ໄຫ\x0dວູ-ຊິ\x0dຈີ-ຊູ\x13ເກງ-ຢິນ\x16ຊິນ-ເມົາ\x18ເຣນເຊິ່ນ\x10ກຸຍ-ຊິ\x0dໄຈ" + - "-ວູ\x13ຢີ-ເວີຍ\x13ບິງ-ເຊນ\x10ດິງ-ຢູ\x0dວູ-ຊູ\x0dຈີ-ໄຫ\x10ເກງ-ຊິ\x10ຊິນ-ຊ" + - "ູ\x13ເຣຍ-ຢິນ\x16ກຸຍ-ເມົາ\x10ໄຈ-ເຊນ\x0dຢີ-ຊິ\x10ບິງ-ວູ\x16ດິງ-ເວີຍ\x10ວ" + - "ູ-ເກນ\x0dຈີ-ຢູ\x10ເກງ-ຊູ\x10ຊິນ-ໄຫ\x10ເຣນ-ຊິ\x10ກຸຍ-ຊູ\x13ເຈຍ-ຢິນ\x13ຢ" + - "ິ-ເມົາ\x18ບິງເຊິ່ນ\x10ດິງ-ຊິ\x0dວູ-ວູ\x13ຈີ-ເວີຍ\x13ເກງ-ເຊນ\x10ຊິນ-ຢູ" + - "\x10ເຣນ-ຊູ\x15ກຸຍຮ່າຍ\x06ໜູ\x12ງົວຜູ້\x0cເສືອ\x12ກະຕ່າຍ\x12ມັງກອນ\x06ງູ" + - "\x09ມ້າ\x09ແກະ\x09ລິງ\x12ໄກ່ຜູ້\x06ໝາ\x06ໝູ\x0cເທົາ\x0cບາບາ\x0cຮາໂຕ\x09ເ" + - "ຄຍ\x0cໂທບາ\x0fອຳເຊີ\x15ບາລຳຮາດ\x18ບາລາມູດາ\x12ບາສຮານ\x12ເປົານາ\x0fອີແປ" + - "ບ\x0fມາສລາ\x0fນາຊິວ\x0fອາເຊີ\x0fນາຊີວ\x1bແມສເຄີແຣມ\x0fເຕເກມ\x0cເຮດາ" + - "\x0fທາຊັສ\x09ເທີ\x15ເຍຄາທິດ\x15ເມກາບິດ\x12ເມຍເຊຍ\x12ເຈນບອດ\x0cເຊເນ\x0cຮຳ" + - "ເລ\x12ເນແຮສ໌\x15ພາກູເມນ\x15EEEEທີ d MMMM y G\x08ມ.ກ.\x08ກ.ພ.\x08ມ.ນ." + - "\x08ມ.ສ.\x08ພ.ພ.\x0bມິ.ຖ.\x08ກ.ລ.\x08ສ.ຫ.\x08ກ.ຍ.\x08ຕ.ລ.\x08ພ.ຈ.\x08ທ.ວ" + - ".\x0fກຸມພາ\x0cມີນາ\x0cເມສາ\x15ພຶດສະພາ\x12ມິຖຸນາ\x15ກໍລະກົດ\x0fສິງຫາ\x0fກ" + - "ັນຍາ\x0cຕຸລາ\x0fພະຈິກ\x0fທັນວາ\x0fອາທິດ\x09ຈັນ\x12ອັງຄານ\x09ພຸດ\x0fພະຫ" + - "ັດ\x09ສຸກ\x0cເສົາ\x06ອາ\x03ຈ\x03ອ\x03ພ\x06ພຫ\x06ສຸ\x03ສ\x07ອາ.\x04ຈ." + - "\x04ອ.\x04ພ.\x07ພຫ.\x07ສຸ.\x04ສ.\x18ວັນອາທິດ\x12ວັນຈັນ\x1bວັນອັງຄານ\x12ວ" + - "ັນພຸດ\x18ວັນພະຫັດ\x12ວັນສຸກ\x15ວັນເສົາ\x07ຕມ1\x07ຕມ2\x07ຕມ3\x07ຕມ4\x14" + - "ໄຕຣມາດ 1\x14ໄຕຣມາດ 2\x14ໄຕຣມາດ 3\x14ໄຕຣມາດ 4\x04ຕ1\x04ຕ2\x04ຕ3\x04ຕ4" + - "\x15ທ່ຽງຄືນ\x18ກ່ອນທ່ຽງ\x15ຕອນທ່ຽງ\x18ຫຼັງທ່ຽງ\x18ຕອນເຊົ້າ\x15ຕອນບ່າຍ" + - "\x12ຕອນແລງ\x12ກາງຄືນ\x06ທຄ\x06ກທ\x03ທ\x09ຫຼທ\x13ກາງຄືນ1\x1bຕອນກາງຄືນ\x18" + - "ທ່ຽງ\u200bຄືນ\x0cທ່ຽງ\x12\u200bເຊົ້າ\x09ສວຍ\x09ແລງ\x18\u200bກາງ\u200bຄ" + - "ືນ\x03ຊ\x03ລ\x06ກຄ0ກ່ອນຄຣິດສັກກະລາດ3ກ່ອນສາກົນສັກກະລາດ$ຄຣິດສັກກະລາດ'ສາກ" + - "ົນສັກກະລາດ\x15ກ່ອນ ຄ.ສ.\x1dກ່ອນຍຸກ ຄ.ສ\x08ຄ.ສ.\x11ຍຸກ ຄ.ສ\x16EEEE ທີ d" + - " MMMM G y5H ໂມງ m ນາທີ ss ວິນາທີ zzzz2H ໂມງ m ນາທີ ss ວິນາທີ z\x12ທຣິດຣີ" + - "\x0fເຮວານ\x12ກິດເລບ\x0fເຕເວດ\x0fຊີວັດ\x0eອາດາ I\x0cອາດາ\x0fອາດາ II\x12ນິ" + - "ດຊານ\x0fອີຍາຣ\x0fສີວານ\x0cຕາມູ\x09ເອບ\x0cອີລູ\x0fຈິຕຣາ\x12ວິສາຂະ\x0fເຊ" + - "ດຖາ\x0fອັດສາ\x18ສາຣາວານາ\x0fພະຕຣາ\x15ອັສວິຊາ\x15ການຕິກາ!ອັກຣາຮາຢານາ" + - "\x0cປຸສາ\x0cມາຄະ\x15ຜາລກຸນີ\x12ປຸສະຍາ\x0fມຸຮັດ\x0cເຄາະ\x11ຮອດບີ 1\x11ຮອກ" + - "ບີ 2\x0eນຸມາ 1\x0eນຸມາ 2\x0cເຮາະ\x0cຊະອ໌\x12ເຮາະມະ\x0cເຊົາ\x15ຊຸລກິອຸ" + - "\x12ຊຸລຫິຈ\x15ມຸຣະຮອມ\x0fຊາຟາຣ\x11ຮອດບີ 2\x14ຈຸມາດາ 1\x14ຈຸມາດາ 2\x0fຮາຈ" + - "ັບ\x0fຊະບານ\x15ຮາມາດອນ\x15ເຊົາວັດ\x1bດຸອັດກິດະ\x1bດຸອັດກິຈະ\x11ຮອກບີ 1" + - "\x06ຊາ\x1eທະອິກະ (645–650)\x1eຮາກູຊິ (650–671)\x1eຮາກູໂຮ (672–686)\x18ຊູ" + - "ໂຊ (686–701)\x1eທາອິໂຮ (701–704)\x1bເຄອຸງ (704–708)\x18ວະໂດ (708–715)" + - "\x1eເຣອິກິ (715–717)\x18ໂຢໂຣ (717–724)\x1bຈິງກິ (724–729)!ເທັມປຽວ (729–7" + - "49)1ເທັມປຽວ-ຄໍາໂປ (749–749).ເທັມປຽວ-ໂຊໂຮ (749–757).ເທັມປຽວ-ໂຮຈິ (757–765" + - ")4ເທັມປຽວ-ຈິງໂງະ (765–767).ຈິງໂງະ-ເຄອຸງ (767–770)\x18ໂຮກິ (770–780)\x1fເ" + - "ທັນ-ໂອ (781–782)'ເອັນຣຢາກຸ (782–806)\x1eດາອິໂດ (806–810)\x1bໂກນິນ (810" + - "–824)\x1eເທັນໂຊ (824–834)\x18ໂຊວະ (834–848)\x18ກະໂຈ (848–851)\x1bນິນຈູ" + - " (851–854)!ສະອິໂກະ (854–857)!ເທັນນານ (857–859)\x1bໂຈງານ (859–877)\x1eເກັ" + - "ນເກ (877–885)\x1bນິນນາ (885–889)\x1eກໍາປຽວ (889–898)\x1eໂຊຕາອິ (898–90" + - "1)\x1eເອັນງິ (901–923)\x1eເອັນໂຊ (923–931)\x18ໂຊເຮ (931–938)!ເທັນງຽວ (93" + - "8–947)'ເທັນຣຢາກູ (947–957)'ເທັນໂຕະກຸ (957–961)\x18ໂອວະ (961–964)\x18ໂກໂຮ" + - " (964–968)\x18ອານະ (968–970)'ເທັນໂຣະກຸ (970–973)%ເທັນ-ເອັນ (973–976)\x1e" + - "ໂຈເງັນ (976–978)$ເທັນເງັນ (978–983)\x1bເອການ (983–985)\x1bການນະ (985–9" + - "87)\x1fເອ-ເອັນ (987–989)\x18ເອໂຊ (989–990)!ໂຊຣຢະກຸ (990–995)!ໂຊໂຕະກຸ (99" + - "5–999)\x19ໂຊໂຮ (999–1004)\x1dການໂກ (1004–1012)\x1dໂຊຫວະ (1012–1017) ການນ" + - "ິງ (1017–1021)\x1dຈິອານ (1021–1024)\x1dມານຈຸ (1024–1028) ໂຊເງັນ (1028–" + - "1037)&ໂຊເຣຢະກຸ (1037–1040)\x1dໂຊຄິວ (1040–1044)&ການໂຕະກຸ (1044–1046)\x1d" + - "ເອະໂຊ (1046–1053) ເທັນງິ (1053–1058)\x1aໂກເຮ (1058–1065)&ຈິເຣຢະກຸ (106" + - "5–1069)#ເອັນຄິວ (1069–1074)\x1dໂຊະໂຮ (1074–1077))ໂຊະເຣຢະກຸ (1077–1081)" + - "\x1dເອໂຊະ (1081–1084)#ໂອໂຕະກຸ (1084–1087)\x1dການຈິ (1087–1094)\x1aກາໂຊ (" + - "1094–1096) ເອະໂຊະ (1096–1097)&ໂຊະໂຕະກຸ (1097–1099)\x1dໂກະວະ (1099–1104)" + - "\x1dໂຊະຈິ (1104–1106)\x1dກາໂຊະ (1106–1108)#ເທັນນິນ (1108–1110)!ເທັນ-ອິ (" + - "1110–1113)\x1dເອກິວ (1113–1118)!ເຄັນ-ເອ (1118–1120) ໂຮະອານ (1120–1124) ເ" + - "ທັນຈິ (1124–1126) ດາອິຈິ (1126–1131)#ເທັນໂຊະ (1131–1132) ໂຊະໂຊະ (1132–" + - "1135) ໂຮເອັນ (1135–1141)\x1aເອຈິ (1141–1142)\x1dໂກະຈິ (1142–1144)#ເທັນໂຢ" + - "ະ (1144–1145) ຄິວອານ (1145–1151)\x1dນິນເປ (1151–1154)\x1dຄິວຈຸ (1154–1" + - "156) ໂຮເຄັນ (1156–1159)\x1aເຮຈິ (1159–1160)&ເອເຣຢະກຸ (1160–1161)\x1aໂອໂຊ" + - " (1161–1163) ໂຊະການ (1163–1165)\x1dເອມານ (1165–1166)!ນິນ-ອານ (1166–1169)" + - "\x1aກະໂອ (1169–1171) ໂຊະອານ (1171–1175)#ອານເຄັນ (1175–1177)\x1dຈິໂຊະ (11" + - "77–1181)\x1dໂຢະວະ (1181–1182)\x1dຈຸເອະ (1182–1184),ເຄັນເຣຢຸກິ (1184–1185" + - ")\x1dບັນຈິ (1185–1190)#ເກັນຄິວ (1190–1199)\x1aໂຊຈິ (1199–1201)#ເກັນນິນ (" + - "1201–1204)#ເຄັນກິວ (1204–1206)$ເກັນ-ເອະ (1206–1207)#ໂຊະເຄັນ (1207–1211)," + - "ເກັນເຣຢະກຸ (1211–1213)#ເກັນໂປະ (1213–1219) ໂຊະກິວ (1219–1222) ໂຈະໂອະ (" + - "1222–1224)#ເຄັນນິນ (1224–1225) ກາໂຮກຸ (1225–1227) ອານເຕະ (1227–1229)\x1d" + - "ການກິ (1229–1232) ໂຈະເອະ (1232–1233)&ເທັມປຸກຸ (1233–1234))ບັນເຣຢະກຸ (1" + - "234–1235)\x1dກາເຕະ (1235–1238))ເຣຢະກຸນິນ (1238–1239)!ເອັນ-ໂອ (1239–1240)" + - "\x1dນິນຈີ (1240–1243) ຄານເຈນ (1243–1247)\x1aໂຫຈີ (1247–1249)\x1dເຄນໂຊ (1" + - "249–1256)\x1dໂຄເຈນ (1256–1257)\x1aໂຊກາ (1257–1259)\x1dໂຊເກນ (1259–1260)" + - "\x1eບຸນ-ໂອ (1260–1261)\x1aໂຄໂຊ (1261–1264)\x1eບຸນ-ອີ (1264–1275)\x1dເຄນຈ" + - "ີ (1275–1278)\x1aເຄິນ (1278–1288)\x14ໂຊ (1288–1293) ອິນນິນ (1293–1299)" + - "\x1aເຊີນ (1299–1302) ເຄນເຈນ (1302–1303)\x1dຄາເຈນ (1303–1306) ໂຕກູຈິ (130" + - "6–1308)\x1dອິນກິ (1308–1311)\x1aໂອໂຊ (1300–1312)\x1aໂຊວາ (1312–1317)\x1d" + - "ບຸນໂປ (1317–1319)\x1aຈີໂນ (1319–1321) ເຈນກຽວ (1321–1324)\x1aໂຊຊິ (1324" + - "–1326) ຄາຣາກິ (1326–1329)#ເຈນໂຕກູ (1329–1331)\x1dເຈນໂກ (1331–1334) ເກັ" + - "ມມຸ (1334–1336)&ເອັນເຈັນ (1336–1340) ໂກໂກກຸ (1340–1346)\x1aໂຊຊິ (1346–" + - "1370)#ເຄນໂຕກຸ (1370–1372)\x1dບຸນຊຸ (1372–1375) ເທັນຈຸ (1375–1379) ຄໍຢາກຸ" + - " (1379–1381)\x1aໂກວາ (1381–1384) ເຈັນຊຸ (1384–1392) ມີໂຕກຸ (1384–1387)" + - "\x1aກາກິ (1387–1389)\x14ຄູ (1389–1390) ມິໂຕກຸ (1390–1394)\x1aໂອອິ (1394–" + - "1428)\x1aໂຊໂຊ (1428–1429)\x1dອິກຽວ (1429–1441) ກາກິຊຸ (1441–1444)!ບຸນ-ອາ" + - "ນ (1444–1449) ໂຫໂຕກຸ (1449–1452)#ກຽວໂຕກຸ (1452–1455)\x1aເກໂຊ (1455–145" + - "7) ໂຊໂຣກຸ (1457–1460)\x1dຄານໂຊ (1460–1466)\x1dບຸນໂຊ (1466–1467)\x1dໂອນິນ" + - " (1467–1469)\x1dບຸນມິ (1469–1487)\x1dໂຊກຽວ (1487–1489)&ເອັນໂຕກຸ (1489–14" + - "92)\x1aມິໂອ (1492–1501)\x1dບຸນກິ (1501–1504)\x1aອິໂຊ (1504–1521)\x1aໄຕອິ" + - " (1521–1528)#ກຽວໂຣກຸ (1528–1532)#ເທັນມອນ (1532–1555)\x1aໂກຈິ (1555–1558)" + - " ອິໂຣກຸ (1558–1570) ເຈັນກິ (1570–1573) ເທັນໂຊ (1573–1592)#ບຸນໂຣກຸ (1592–" + - "1596)\x1aຄິໂຊ (1596–1615) ເກັນວາ (1615–1624)\x1eຄານ-ອິ (1624–1644)\x1aໂຊ" + - "ໂຊ (1644–1648)\x17ຄຽນ (1648–1652)\x14ຊຸ (1652–1655)#ເມຍຢາກຸ (1655–1658" + - ")\x1dແມນຈິ (1658–1661) ການບຸນ (1661–1673) ເອັນໂປ (1673–1681) ເທັນວາ (168" + - "1–1684)\x1dໂຈກຽວ (1684–1688)&ເຈັນໂຣກຸ (1688–1704)\x1aໂຫອິ (1704–1711) ຊຸ" + - "ຕຸກຸ (1711–1716)\x1dກຽວຫຸ (1716–1736)#ເຈັນບຸນ (1736–1741)\x1dຄານໂປ (17" + - "41–1744)#ເອັນກຽວ (1744–1748)!ຄານ-ອິນ (1748–1751) ໂຫຢາກຸ (1751–1764)\x1dເ" + - "ມຍວາ (1764–1772)!ເອັນ-ອິ (1772–1781) ເທັນມິ (1781–1789)\x1dຄານຊິ (1789" + - "–1801)\x1dກຽວວາ (1801–1804)\x1dບຸນກາ (1804–1818)\x1dບຸນຊິ (1818–1830) " + - "ເທັນໂປ (1830–1844)\x1aກຸກາ (1844–1848)\x1aກາອິ (1848–1854) ແອັນຊິ (185" + - "4–1860)'ແມັນ-ເອັນ (1860–1861)\x1dບຸນກຸ (1861–1864)\x1dເຈນຈີ (1864–1865)" + - "\x1aຄີໂອ (1865–1868)\x0cມີຈີ\x0cໄຕໂຊ\x0cໂຊວາ\x0cຮີຊີ\x07Novemba\x07Desem" + - "ba" - -var bucket66 string = "" + // Size: 24113 bytes - "\x18ຟາຣວາດິນ!ອໍຣດີບີເຫຣດ\x12ຄໍຣເດດ\x09ແຕຣ\x12ມໍຣເດດ\x15ຊາຣຫິວາ\x09ເມີ" + - "\x0fອາບານ\x0cອາຊາ\x09ດີຣ\x12ບຣາມານ\x12ເອສຟານ\x18ຟຣາວາດິນ\x0fອາຊາຣ\x12ບຣາ" + - "ແມນ!ອໍຣດີບີເຫຮດ\x15ຊາຣລິວາ\x18ປີເປີເຊຍ\x13ກ່ອນ R.O.C.\x0cສະໄໝ\x06ປີ" + - "\x0fປີກາຍ\x0fປີນີ້\x0fປີໜ້າ\x1aໃນອີກ {0} ປີ\x16{0} ປີກ່ອນ\x12ໄຕຣມາດ'ໄຕຣມ" + - "າດກ່ອນໜ້າ\x1bໄຕຣມາດນີ້\x1bໄຕຣມາດໜ້າ&ໃນອີກ {0} ໄຕຣມາດ\x22{0} ໄຕຣມາດກ່ອນ" + - "\x07ຕມ.\x12ໃນ {0} ຕມ.\x18{0} ຕມ. ກ່ອນ\x0fເດືອນ\x1bເດືອນແລ້ວ\x18ເດືອນນີ້" + - "\x18ເດືອນໜ້າ#ໃນອີກ {0} ເດືອນ\x1f{0} ເດືອນກ່ອນ\x04ດ.\x18ໃນອີກ {0} ດ.\x15{" + - "0} ດ. ກ່ອນ\x1bອາທິດແລ້ວ\x18ອາທິດນີ້\x18ອາທິດໜ້າ#ໃນອີກ {0} ອາທິດ\x1f{0} ອ" + - "າທິດກ່ອນ\x19ອາທິດທີ {0}\x1bໃນອີກ {0} ອທ.\x18{0} ອທ. ກ່ອນ\x09ມື້\x15ມື້" + - "ກ່ອນ\x12ມື້ວານ\x12ມື້ນີ້\x15ມື້ອື່ນ\x0fມື້ຮື\x1dໃນອີກ {0} ມື້\x19{0} ມ" + - "ື້ກ່ອນ!ມື້ຂອງອາທິດ$ວັນອາທິດແລ້ວ!ວັນອາທິດນີ້!ວັນອາທິດໜ້າ#ໃນ {0} ວັນອາທິ" + - "ດ({0} ວັນອາທິດກ່ອນ\x1eວັນທິດແລ້ວ\x1bວັນທິດນີ້\x1bວັນທິດໜ້າ\x14ອາ. ແລ້ວ" + - "\x11ອາ. ນີ້\x11ອາ. ໜ້າ\x1eວັນຈັນແລ້ວ\x1bວັນຈັນນີ້\x1bວັນຈັນໜ້າ\x1dໃນ {0}" + - " ວັນຈັນ\x22{0} ວັນຈັນກ່ອນ\x15ຈັນແລ້ວ\x12ຈັນນີ້\x12ຈັນໜ້າ\x11ຈ. ແລ້ວ\x0eຈ" + - ". ນີ້\x0eຈ. ໜ້າ'ວັນອັງຄານແລ້ວ$ວັນອັງຄານນີ້$ວັນອັງຄານໜ້າ&ໃນ {0} ວັນອັງຄານ" + - "+{0} ວັນອັງຄານກ່ອນ\x1eອັງຄານແລ້ວ\x1bອັງຄານນີ້\x1bອັງຄານໜ້າ\x1eວັນພຸດແລ້ວ" + - "\x1bວັນພຸດນີ້\x1bວັນພຸດໜ້າ\x1dໃນ {0} ວັນພຸດ\x22{0} ວັນພຸດກ່ອນ\x15ພຸດແລ້ວ" + - "\x12ພຸດນີ້\x12ພຸດໜ້າ\x14ພຸ. ແລ້ວ\x11ພຸ. ນີ້\x11ພຸ. ໜ້າ$ວັນພະຫັດແລ້ວ!ວັນພ" + - "ະຫັດນີ້!ວັນພະຫັດໜ້າ#ໃນ {0} ວັນພະຫັດ({0} ວັນພະຫັດກ່ອນ\x1bພະຫັດແລ້ວ\x18ພ" + - "ະຫັດນີ້\x18ພະຫັດໜ້າ\x14ພຫ. ແລ້ວ\x11ພຫ. ນີ້\x11ພຫ. ໜ້າ\x1eວັນສຸກແລ້ວ" + - "\x1bວັນສຸກນີ້\x1bວັນສຸກໜ້າ&ໃນອີກ {0} ວັນສຸກ\x22{0} ວັນສຸກກ່ອນ\x15ສຸກແລ້ວ" + - "\x12ສຸກນີ້\x12ສຸກໜ້າ\x14ສຸ. ແລ້ວ\x11ສຸ. ນີ້\x11ສຸ. ໜ້າ!ວັນເສົາແລ້ວ\x1eວັ" + - "ນເສົານີ້\x1eວັນເສົາໜ້າ ໃນ {0} ວັນເສົາ%{0} ວັນເສົາກ່ອນ\x18ເສົາແລ້ວ\x15ເ" + - "ສົານີ້\x15ເສົາໜ້າ\x11ສ. ແລ້ວ\x0eສ. ນີ້\x0eສ. ໜ້າ1ກ່ອນທ່ຽງ/ຫຼັງທ່ຽງ\x15" + - "ຊົ່ວໂມງ\x1eຊົ່ວໂມງນີ້)ໃນອີກ {0} ຊົ່ວໂມງ%{0} ຊົ່ວໂມງກ່ອນ\x07ຊມ.\x1bໃນອີ" + - "ກ {0} ຊມ.\x18{0} ຊມ. ກ່ອນ\x0cນາທີ\x15ນາທີນີ້\x22{0} ໃນອີກ 0 ນາທີ\x1c{0" + - "} ນາທີກ່ອນ\x07ນທ.\x12ໃນ {0} ນທ.\x18{0} ນທ. ກ່ອນ\x12ວິນາທີ\x12ຕອນນີ້&ໃນອີ" + - "ກ {0} ວິນາທີ\x22{0} ວິນາທີກ່ອນ\x07ວິ.\x12ໃນ {0} ວິ.\x18{0} ວິ. ກ່ອນ" + - "\x15ເຂດເວລາ\x10ເວລາ {0}%ເວລາກາງເວັນ {0}(ເວລາມາດຕະຖານ {0}Hເວ\u200bລາ" + - "\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bອັງ\u200bກິດHເວ\u200bລາ\u200bມາດ\u200bຕະ" + - "\u200bຖານ\u200bໄອ\u200bຣິ\u200bຊ$ເວລາຂອງອາເກຣ<ເວລາມາດຕະຖານຂອງອາເກຣ<ເວລາລ" + - "ະດູຮ້ອນຂອງອາເກຣ.ເວລາ ອັຟການິສຖານ9ເວ\u200bລາ\u200bອາ\u200bຟຣິ\u200bກາ" + - "\u200bກາງQເວ\u200bລາ\u200bອາ\u200bຟຣິ\u200bກາ\u200bຕາ\u200bເວັນ\u200bອອກ" + - "9ເວ\u200bລາ\u200bອາ\u200bຟຣິ\u200bກາ\u200bໃຕ້Qເວ\u200bລາ\u200bອາ\u200bຟຣ" + - "ິ\u200bກາ\u200bຕາ\u200bເວັນ\u200bຕົກrເວ\u200bລາ\u200bມາດ\u200bຕະ\u200b" + - "ຖານ\u200bອາ\u200bຟຣິ\u200bກາ\u200bຕາ\u200bເວັນ\u200bຕົກrເວ\u200bລາ" + - "\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bອາ\u200bຟຣິ\u200bກາ\u200bຕາ\u200bເວັນ" + - "\u200bຕົກ!ເວລາອະແລສກາ9ເວລາມາດຕະຖານອະແລສກາ6ເວລາກາງເວັນອະແລສກາ\x1eເວລາອໍມາ" + - "ຕີ6ເວລາມາດຕະຖານອໍມາຕີ6ເວລາລະດູຮ້ອນອໍມາຕີ3ເວລາຕາມເຂດອາເມຊອນKເວ\u200bລາ" + - "\u200bມາດ\u200bຕະ\u200bຖານອາ\u200bເມ\u200bຊອນKເວ\u200bລາ\u200bລະ\u200bດູ" + - "\u200bຮ້ອນອາ\u200bເມ\u200bຊອນ\x15ເວລາກາງ-ເວລາມາດຕະຖານກາງ*ເວລາກາງເວັນກາງ'" + - "ເວລາຕາເວັນອອກ?ເວລາມາດຕະຖານຕາເວັນອອກ<ເວລາກາງເວັນຕາເວັນອອກ'ເວລາແຖບພູເຂົາ" + - "?ເວລາມາດຕະຖານແຖບພູເຂົາ<ເວລາກາງເວັນແຖບພູເຂົາ!ເວລາແປຊິຟິກ9ເວລາມາດຕະຖານແປຊິ" + - "ຟິກ6ເວລາກາງເວັນແປຊິຟິກ\x1bເວລາເອເພຍ3ເວລາມາດຕະຖານເອເພຍ0ເວລາກາງເວັນອາເພຍ" + - "!ເວລາອັດຕາອູ9ເວລາມາດຕະຖານອັດຕາອູ9ເວລາລະດູຮ້ອນອັດຕາອູ!ເວລາອັດໂຕເບ9ເວລາມາດ" + - "ຕະຖານອັດໂຕເບ9ເວລາລະດູຮ້ອນອັດໂຕເບ-ເວ\u200bລາ\u200bອາ\u200bຣາ\u200bບຽນKເ" + - "ວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອາ\u200bຣາ\u200bບຽນ6ເວລາກາງເວັນອາຣາ" + - "ບຽນ3ເວ\u200bລາ\u200bອາ\u200bເຈ\u200bທິ\u200bນາW\u200bເວ\u200bລາ\u200bມ" + - "າດ\u200bຕະ\u200bຖານອາ\u200bເຈນ\u200bທິ\u200bນາZ\u200bເວ\u200bລາ\u200bລ" + - "ະ\u200bດູ\u200bຮ້ອນ\u200bອາ\u200bເຈນ\u200bທິ\u200bນາQເວ\u200bລາ\u200bເ" + - "ວ\u200bສ\u200bເທິນອາ\u200bເຈນ\u200bທິ\u200bນາoເວ\u200bລາ\u200bມາດ" + - "\u200bຕະ\u200bຖານເວ\u200bສ\u200bເທິນອາ\u200bເຈນ\u200bທິ\u200bນາoເວ\u200b" + - "ລາ\u200bລະ\u200bດູ\u200bຮ້ອນເວ\u200bສ\u200bເທິນອາ\u200bເຈນ\u200bທິ" + - "\u200bນາ!ເວລາອາເມເນຍ9ເວລາມາດຕະຖານອາເມເນຍ9ເວລາລະດູຮ້ອນອາເມເນຍ-ເວລາຂອງອາແລ" + - "ນຕິກEເວລາມາດຕະຖານຂອງອາແລນຕິກBເວລາກາງເວັນຂອງອາແລນຕິກ?ເວ\u200bລາອອ\u200b" + - "ສ\u200bເຕຣ\u200bເລຍ\u200bກາງ`ເວ\u200bລາມາດ\u200bຕະ\u200bຖານອອ\u200bສ" + - "\u200bເຕຣ\u200bເລຍ\u200bກ\u200bາງZເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bອອສ" + - "\u200bເຕຣ\u200bເລຍ\u200bກາງ`ເວ\u200bລາອອສ\u200bເຕຣ\u200bລຽນ\u200bກາງ" + - "\u200bຕາ\u200bເວັນ\u200bຕົກ\x81ເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອອສ" + - "\u200bເຕຣ\u200bລຽນ\u200bກາງ\u200bຕາ\u200bເວັນ\u200bຕົກ~ເວ\u200bລາ\u200bຕ" + - "ອນ\u200bທ່ຽງ\u200bອອສ\u200bເຕຣ\u200bລຽນ\u200bກາງ\u200bຕາ\u200bເວັນ" + - "\u200bຕົກTເວ\u200bລາອອສ\u200bເຕຣ\u200bລຽນ\u200bຕາ\u200bເວັນ\u200bອອກxເວ" + - "\u200bລາ\u200bມາດຕະຖານ\u200b\u200b\u200bອອສ\u200bເຕຣ\u200bລຽນ\u200bຕາ" + - "\u200bເວັນ\u200bອອກrເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bອອສ\u200bເຕຣ" + - "\u200bລຽນ\u200bຕາ\u200bເວັນ\u200bອອກWເວ\u200bລາ\u200bອອສ\u200bເຕຣ\u200bເ" + - "ລຍ\u200bຕາ\u200bເວັນ\u200bຕົກxເວ\u200bລາ\u200bມາ\u200bດ\u200bຕະ\u200bຖ" + - "ານອອສ\u200bເຕຣ\u200bລຽນ\u200bຕາ\u200bເວັນ\u200bຕົກrເວ\u200bລາ\u200bຕອນ" + - "\u200bທ່ຽງ\u200bອອສ\u200bເຕຣ\u200bລຽນ\u200bຕາ\u200bເວັນ\u200bຕົກ-ເວລາອັສ" + - "ເຊີໄບຈັນEເວລາມາດຕະຖານອັສເຊີໄບຈັນEເວລາລະດູຮ້ອນອັສເຊີໄບຈັນ0ເວ\u200bລາ" + - "\u200bອາ\u200bໂຊ\u200bເຣ\u200bສNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອາ" + - "\u200bໂຊ\u200bເຣ\u200bສNເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນອາ\u200bໂຊ" + - "\u200bເຣ\u200bສ+ເວລາ ບັງກະລາເທດCເວລາມາດຕະຖານ ບັງກະລາເທດDເວລາ ລະດູຮ້ອນ ບັ" + - "ງກະລາເທດ$ເວ\u200bລາ\u200bພູ\u200bຖານ-ເວ\u200bລາ\u200bໂບ\u200bລິ\u200bເ" + - "ວຍ6ເວລາຕາມເຂດບຣາຊິເລຍ<ເວລາມາດຕາຖານເບຣຊີເລຍ`ເວລາຕາມເຂດລະດູຮ້ອນຕາມເຂດບຣາ" + - "ຊີເລຍK\u200bເວ\u200bລາບຣູ\u200bໄນດາ\u200bຣຸສ\u200bຊາ\u200bລາມ*ເວ\u200b" + - "ລາ\u200bເຄບ\u200bເວີດN\u200bເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200b" + - "ເຄບ\u200bເວີດKເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bເຄບ\u200bເວີດ" + - "\x18ເວລາເຄຊີ*ເວ\u200bລາ\u200bຈາ\u200bໂມ\u200bໂຣ$ເວ\u200bລາ\u200bຊາ\u200b" + - "ທາມEເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bຊາ\u200bທາມ?ເວ\u200bລາ" + - "\u200bຕອນ\u200bທ່ຽງ\u200bຊາ\u200bທາມ!ເວ\u200bລາ\u200bຊິ\u200bລີ?ເວ\u200b" + - "ລາ\u200bມາດ\u200bຕະ\u200bຖານຊິ\u200bລີ?ເວ\u200bລາ\u200bລະ\u200bດູ" + - "\u200bຮ້ອນຊິ\u200bລີ\x1bເວ\u200bລາ\u200bຈີນ-ເວລາມາດຕະຖານຈີນ9\u200bເວ" + - "\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bຈີນ0ເວ\u200bລາ\u200bໂຊຍ\u200bບາ\u200bຊັ" + - "ນ<ເວລາມາດຕະຖານໂຊຍບາຊັນBເວລາລະ\u200bດູ\u200bຮ້ອນໂຊຍບາຊັນ<ເວ\u200bລາ" + - "\u200bເກາະ\u200bຄ\u200bຣິສ\u200bມາສ3ເວລາຫມູ່ເກາະໂກໂກສ$ເວລາໂຄລໍາເບຍ9ເວລາມ" + - "າດຕະຖານໂຄລຳເບຍ<ເວລາລະດູຮ້ອນໂຄລໍາເບຍ-ເວລາຫມູ່ເກາະຄຸກEເວລາມາດຕະຖານຫມູ່ເກ" + - "າະຄຸກiເວ\u200bລາ\u200bເຄິ່ງ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bໝູ່\u200bເກ" + - "າະ\u200bຄຸກ\x1bເວລາຄິວບາ<ເວລາມາດຕະຖານຂອງຄິວບາ0ເວລາກາງເວັນຄິວບາ\x1bເວລາ" + - "ເດວິດ*ເວລາດູມອງດູວິລ3ເວລາຕີມໍຕາເວັນອອກ9ເວ\u200bລາ\u200bເກາະ\u200bອີ" + - "\u200bສ\u200bເຕີWເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານເກາະ\u200bອີ\u200bສ" + - "\u200bເຕີWເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນເກາະ\u200bອີ\u200bສ\u200bເ" + - "ຕີ-ເວ\u200bລາ\u200bເອ\u200bກົວ\u200bດໍ0ເວ\u200bລາ\u200bຢູ\u200bໂຣບ" + - "\u200bກາງNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bຢູ\u200bໂຣບກາງT" + - "\u200bເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bຢູ\u200bໂຣບ\u200bກາງHເວ" + - "\u200bລາ\u200bຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bອອກlເວ\u200bລາ\u200bມາ" + - "\u200bດ\u200bຕະ\u200bຖານ\u200bຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bອອກfເວ" + - "\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bອອກ" + - "]ເວ\u200bລາ\u200b\u200bຢູ\u200bໂຣ\u200bປຽນ\u200bຕາ\u200bເວັນ\u200bອອກ" + - "\u200bໄກHເວ\u200bລາ\u200bຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bຕົກfເວ\u200b" + - "ລາ\u200bມາດ\u200bຕະ\u200bຖານຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bຕົກfເວ" + - "\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນຢູ\u200bໂຣບ\u200bຕາ\u200bເວັນ\u200bຕົກ" + - "N\u200bເວ\u200bລາ\u200bໝູ່\u200bເກາະ\u200bຟອ\u200bລ໌ກ\u200bແລນl\u200bເວ" + - "\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານໝູ່\u200bເກາະ\u200bຟອ\u200bລ໌ກ\u200bແລ" + - "ນl\u200bເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນໝູ່\u200bເກາະ\u200bຟອ" + - "\u200bລ໌ກ\u200bແລນ\x18ເວລາຟິຈິ0ເວລາມາດຕະຖານຟິຈິ0ເວລາລະດູຮ້ອນຟິຈິ?ເວ" + - "\u200bລາ\u200bເຟ\u200bຣນ\u200bຊ໌\u200bເກຍ\u200bນາSເວລາຝຣັ່ງຕອນໃຕ້ ແລະ ແອ" + - "ນຕາກຕິກ9ເວ\u200bລາ\u200bກາ\u200bລາ\u200bປາ\u200bກອ\u200bສ\x1eເວລາແກມເບ" + - "ຍ\x1bເວລາຈໍເຈຍ3ເວລາມາດຕະຖານຈໍເຈຍ3ເວລາລະດູຮ້ອນຈໍເຈຍ9ເວລາຫມູ່ເກາະກິລເບີດ" + - "*ເວ\u200bລາກຣີນ\u200bວິ\u200bຊEເວລາຕາເວັນອອກຂອງກຣີນແລນTເວລາມາດຕະຖານຕາເວັ" + - "ນອອກກຣີນແລນTເວລາລະດູຮ້ອນກຣີນແລນຕາເວັນອອກ<ເວລາກຣີນແລນຕາເວັນຕົກTເວລາມາດຕ" + - "ະຖານກຣີນແລນຕາເວັນຕົກQເວລາຕອນທ່ຽງກຣີນແລນຕາເວັນຕົກ\x15ເວລາກວມ'ເວ\u200bລາ" + - "\u200bກູ\u200bລ\u200b໌ຟ!ເວລາກາຍອານາ1ເວລາຮາວາຍ-ເອລູທຽນIເວລາມາດຕະຖານຮາວາຍ-" + - "ເອລູທຽນFເວລາຕອນທ່ຽງຮາວາຍ-ເອລູທຽນ'ເວ\u200bລາ\u200bຮອງ\u200bກົງHເວ\u200b" + - "ລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bຮອງ\u200bກົງK\u200bເວ\u200bລາ\u200bລ" + - "ະ\u200bດູ\u200bຮ້ອນ\u200bຮອງ\u200bກົງ$ເວ\u200bລາ\u200bຮອບ\u200bດ໌H" + - "\u200bເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bຮອບ\u200bດ໌H\u200bເວ" + - "\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bຮອບ\u200bດ໌\x1fເວລາ ອິນເດຍ?ເວລາຫ" + - "ມະຫາສະຫມຸດອິນເດຍ$ເວລາອິນດູຈີນEເວ\u200bລາ\u200bອິນ\u200bໂດ\u200bເນ" + - "\u200bເຊຍ\u200bກາງ]ເວ\u200bລາ\u200bອິນ\u200bໂດ\u200bເນ\u200bເຊຍ\u200bຕາ" + - "\u200bເວັນ\u200bອອກ]ເວ\u200bລາ\u200bອິນ\u200bໂດ\u200bເນ\u200bເຊຍ\u200bຕາ" + - "\u200bເວັນ\u200bຕົກ$ເວ\u200bລາ\u200bອີ\u200bຣານBເວ\u200bລາ\u200bມາດ" + - "\u200bຕະ\u200bຖານອີ\u200bຣານBເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bອີ\u200b" + - "ຣາ\u200bນ3ເວ\u200bລ\u200bາອີ\u200bຄຸດ\u200bສ\u200bຄ໌Nເວ\u200bລາມາດ" + - "\u200bຕະ\u200bຖານອີ\u200bຄຸດ\u200bສ\u200bຄ໌Nເວ\u200bລາລະ\u200bດູ\u200bຮ້" + - "ອນອີ\u200bຄຸດ\u200bສ\u200bຄ໌3ເວ\u200bລາ\u200bອິ\u200bສ\u200bຣາ\u200bເອ" + - "ວQເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອິ\u200bສ\u200bຣາ\u200bເອວ9ເວລາກ" + - "າງເວັນອິສຣາເອວ*ເວ\u200bລາ\u200bຍີ່\u200bປຸ່ນKເວ\u200bລາ\u200bມາດ\u200b" + - "ຕະ\u200bຖານ\u200bຍີ່\u200bປຸ່ນEເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bຍີ່" + - "\u200bປຸ່ນZເວ\u200bລາ\u200bຄາ\u200bຊັກ\u200bສ\u200bຖານ\u200bຕາ\u200bເວັນ" + - "\u200bອອກZເວ\u200bລາ\u200bຄາ\u200bຊັກ\u200bສ\u200bຖານ\u200bຕາ\u200bເວັນ" + - "\u200bຕົກ!ເວລາເກົາຫຼີKເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bເກົາ" + - "\u200bຫລີEເວ\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bເກົາ\u200bຫລີ\x1bເວລາຄອສແຣ?" + - "ເວ\u200bລາ\u200bຄຣັສ\u200bໂນ\u200bຢາ\u200bສ\u200bຄ໌]ເວ\u200bລາ\u200bມາ" + - "ດ\u200bຕະ\u200bຖານຄຣັສ\u200bໂນ\u200bຢາ\u200bສ\u200bຄ໌]ເວ\u200bລາ\u200b" + - "ລະ\u200bດູ\u200bຮ້ອນຄຣັສ\u200bໂນ\u200bຢາ\u200bສ\u200bຄ໌'ເວລາເຄຍກິສຖານ" + - "\x1bເວລາລັງກາ6ເວ\u200bລາ\u200bໝູ່\u200bເກາະ\u200bລາຍ*ເວ\u200bລາ\u200bລອດ" + - "\u200bເຮົາKເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bລອດ\u200bເຮົາT" + - "\u200bເວ\u200bລ\u200bສາ\u200bຕອນ\u200b\u200bທ່ຽງ\u200bລອດ\u200bເຮົາ" + - "\u200b\x1eເວລາມາເກົາ6ເວລາມາດຕະຖານມາເກົາ6ເວລາລະດູຮ້ອນມາເກົາBເວ\u200bລາ" + - "\u200bເກາະ\u200bແມັກ\u200bຄົວ\u200bຣີ'ເວລາເມັກກາເດນ?ເວລາມາດຕະຖານເມັກກາເດ" + - "ນ?ເວລາລະດູຮ້ອນເມັກກາເດນ-ເວ\u200bລາ\u200bມາ\u200bເລ\u200bເຊຍ\x1eເວລາມັນ" + - "ດີຟ$ເວລາມາເຄີຊັສ?ເວ\u200bລາ\u200bໝູ່\u200bເກາະ\u200bມາ\u200bແຊວ6ເວ" + - "\u200bລາ\u200bເມົາ\u200bຣິ\u200bທຽ\u200bສTເວ\u200bລາ\u200bມາດ\u200bຕະ" + - "\u200bຖານເມົາ\u200bຣິ\u200bທຽ\u200bສZ\u200bເວ\u200bລາ\u200bລະ\u200bດູ" + - "\u200bຮ້ອນ\u200bເມົາ\u200bຣິ\u200bທຽ\u200bສ\x1bເວລາມໍສັນN\u200bເວ\u200bລ" + - "າ\u200bນອດ\u200bເວ\u200bສ\u200bເມັກ\u200bຊິ\u200bໂກl\u200bເວ\u200bລາ" + - "\u200bມາດ\u200bຕະ\u200bຖານນອດ\u200bເວ\u200bສ\u200bເມັກ\u200bຊິ\u200bໂກNເ" + - "ວລາກາງເວັນເມັກຊິກັນນອດເວສ<ເວລາແປຊິຟິກເມັກຊິກັນTເວລາມາດຕະຖານແປຊິຟິກເມັກ" + - "ຊິກັນQເວລາກາງເວັນແປຊິຟິກເມັກຊິກັນ+ເວລາ ອູລານບາເຕີCເວລາມາດຕະຖານ ອູລານບາ" + - "ເຕີBເວລາລະດູຮ້ອນອູລານບາເຕີ'ເວ\u200bລາ\u200bມອ\u200bສ\u200bໂຄEເວ\u200bລ" + - "າ\u200bມາດ\u200bຕະ\u200bຖານມອ\u200bສ\u200bໂຄEເວ\u200bລາ\u200bລະ\u200bດ" + - "ູ\u200bຮ້ອນມອ\u200bສ\u200bໂຄ\x1bເວລາມຽນມາ*ເວ\u200bລາ\u200bນາ\u200bອູ" + - "\u200bຣຸ'\u200bເວ\u200bລາ\u200bເນ\u200bປານ0ເວລານິວແຄລິໂດເນຍHເວລາມາດຕະຖານ" + - "ນິວແຄລິໂດເນຍHເວລາລະດູຮ້ອນນິວແຄລິໂດເນຍ0ເວ\u200bລາ\u200bນິວ\u200bຊີ" + - "\u200bແລນNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານນິວ\u200bຊີ\u200bແລນKເວ" + - "\u200bລາ\u200bຕອນ\u200bທ່ຽງ\u200bນິວ\u200bຊີ\u200bແລນ3ເວ\u200bລາ\u200bນິ" + - "ວ\u200bຟາວ\u200bແລນTເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bນິວ" + - "\u200bຟາວ\u200bແລນ<ເວລາກາງເວັນນິວຟາວແລນ\x1eເວລານິອູເອ<ເວ\u200bລາ\u200bເກ" + - "າະ\u200bນໍ\u200bຟອ\u200bລ໌ກ<ເວລາເຟນັນໂດເດໂນຮອນຮາTເວລາມາດຕະຖານເຟນັນໂດເດ" + - "ໂນຮອນຮາTເວລາລະດູຮ້ອນເຟນັນໂດເດໂນຮອນຮາHເວລາຫມູ່ເກາະມາເຣຍນາເຫນືອBເວ\u200b" + - "ລາ\u200bໂນ\u200bໂບ\u200bຊິ\u200bບິ\u200bສ\u200bຄ໌`ເວ\u200bລາ\u200bມາດ" + - "\u200bຕະ\u200bຖານໂນ\u200bໂບ\u200bຊິ\u200bບິ\u200bສ\u200bຄ໌`ເວ\u200bລາ" + - "\u200bລະ\u200bດູ\u200bຮ້ອນໂນ\u200bໂບ\u200bຊິ\u200bບິ\u200bສ\u200bຄ໌*" + - "\u200bເວ\u200bລາອອມ\u200bສ\u200bຄ໌Hເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານອ" + - "ອມ\u200bສ\u200bຄ໌Hເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນອອມ\u200bສ\u200b" + - "ຄ໌-ເວ\u200bລາ\u200bປາ\u200bກີສຖານNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ" + - "\u200bປາ\u200bກີສຖານTເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bປາ\u200bກ" + - "ີ\u200bສ\u200bຖານ\x1eເວລາປາເລົາ'ເວລາປາປົວກິນີ-ເວ\u200bລາ\u200bປາ\u200b" + - "ຣາ\u200bກວຍNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bປາ\u200bຣາ\u200b" + - "ກວຍNເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bປາ\u200bຣາ\u200bກວຍ!ເວ" + - "\u200bລາ\u200bເປ\u200bຣູEເວ\u200bລາ\u200b\u200bມາ\u200bດ\u200bຕະ\u200bຖາ" + - "ນເປ\u200bຣູBເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bເປ\u200bຣູ3" + - "\u200bເວ\u200bລາ\u200bຟິ\u200bລິບ\u200bປິນQເວ\u200bລາ\u200bມາດ\u200bຕະ" + - "\u200bຖານ\u200bຟິ\u200bລິບ\u200bປິນQເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ" + - "\u200bຟິ\u200bລິບ\u200bປິນ3ເວລາຫມູ່ເກາະຟີນິກX\u200bເວ\u200bລາເຊນ\u200bປີ" + - "\u200bແອ ແລະ\u200bມິ\u200bກົວ\u200bລອນv\u200bເວ\u200bລາມາດ\u200bຕະ\u200b" + - "ຖານເຊນ\u200bປີ\u200bແອ ແລະ\u200bມິ\u200bກົວ\u200bລອນp\u200bເວ\u200bລາຕ" + - "ອນ\u200bທ່ຽງເຊນ\u200bປີ\u200bແອ ແລະ\u200bມິ\u200bກົວ\u200bລອນ$ເວລາພິດແ" + - "ຄຣ໌ນ\x1bເວລາໂປເນບ\x1eເວລາປຽງຢາງ!ເວລາຄີວລໍດາ9ເວລາມາດຕະຖານຄີວລໍດາ9ເວລາລະ" + - "ດູຮ້ອນຄີວລໍດາ6ເວ\u200bລາ\u200bເຣ\u200bອູ\u200bນິ\u200bຢົງ\x1fເວລາ ໂຣທີ" + - "ຕາ-ເວ\u200bລາ\u200bຊາ\u200bຮາ\u200bລິນKເວ\u200bລາ\u200bມາດ\u200bຕະ" + - "\u200bຖານຊາ\u200bຮາ\u200bລິນKເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນຊາ" + - "\u200bຮາ\u200bລິນ\x1bເວລາຊາມົວ3ເວລາມາດຕະຖານຊາມົວ3ເວລາລະດູຮ້ອນຊາມົວ0ເວ" + - "\u200bລາ\u200bເຊ\u200bເຊ\u200bລ\u200bສ໌-ເວ\u200bລາ\u200bສິງ\u200bກະ" + - "\u200bໂປ9ເວລາຫມູ່ເກາະໂຊໂລມອນ$ເວລາຈໍເຈຍໃຕ້-ເວ\u200bລາ\u200bຊຸ\u200bຣິ" + - "\u200bນາມ\x19ເວລາ ໂຊວາ\x1eເວລາທາຮິຕິ!ເວ\u200bລາ\u200bໄທ\u200bເປBເວ\u200b" + - "ລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bໄທ\u200bເປ?ເວ\u200bລາ\u200bຕອນ\u200b" + - "ທ່\u200bຽງ\u200bໄທ\u200bເປ*ເວລາທາຈິກິສຖານ$ເວລາໂຕເກເລົາ\x1bເວລາຕອງກາ3ເວ" + - "ລາມາດຕະຖານຕອງກາ3ເວລາລະດູຮ້ອນຕອງກາ\x15ເວລາຊຸກ-ເວລາຕວກເມນິສຖານEເວລາມາດຕະ" + - "ຖານຕວກເມນິສຖານEເວລາລະດູຮ້ອນຕວກເມນິສຖານ\x1eເວລາຕູວາລູ0\u200bເວ\u200bລາ" + - "\u200bອູ\u200bຣູ\u200bກວຍNເວ\u200bລາ\u200bມາດ\u200bຕະ\u200bຖານ\u200bອູ" + - "\u200bຣູ\u200bກວຍNເວ\u200bລາ\u200bລະ\u200bດູ\u200bຮ້ອນ\u200bອູ\u200bຣູ" + - "\u200bກວຍ3ເວລາອຸສເບກິດສະຖານKເວລາມາດຕະຖານອຸສເບກິດສະຖານKເວລາລະດູຮ້ອນອຸສເບກ" + - "ິດສະຖານ$ເວລາວານູອາຕູ<ເວລາມາດຕະຖານວານູອາຕູ<ເວລາລະດູຮ້ອນວານູອາຕູ<ເວ" + - "\u200bລາ\u200bເວ\u200bເນ\u200bຊູ\u200bເອ\u200bລາ*ເວລາລາດີໂວສຕົກBເວລາມາດຕ" + - "ະຖານລາດີໂວສຕົກBເວລາລະດູຮ້ອນລາດີໂວສຕົກ$ເວລາໂວໂກກຣາດ<ເວລາມາດຕະຖານໂວໂກກຣາ" + - "ດ<ເວລາລະດູຮ້ອນໂວໂກກຣາດ\x1fເວລາ ວອສໂຕກ!ເວລາເກາະເວກ;ເວລາວາລລິສ ແລະ ຟູຕູນ" + - "າ\x1eເວລາຢາກູດສ6ເວລາມາດຕະຖານຢາກູດສ6ເວລາລະດູຮ້ອນຢາກູດສ3ເວລາເຢກາເຕລິນເບີ" + - "ກKເວລາມາດຕະຖານເຢກາເຕລິນເບີກKເວລາລະດູຮ້ອນເຢກາເຕລິນເບີກ" - -var bucket67 string = "" + // Size: 13208 bytes - "\x0cجانڤیە\x0cفئڤریە\x08مارس\x0aآڤریل\x06مئی\x0aجوٙأن\x0aجوٙلا\x0aآگوست" + - "\x0eسئپتامر\x0eئوکتوڤر\x0cنوڤامر\x0cدئسامر\x13چارأک أڤأل\x02Q2\x02Q3\x02" + - "Q4\x15چارأک دویوم\x15چارأک سئیوم\x15چارأک چاروم\x08سأرۉ\x0aچارأک\x04ما" + - "\x0aھأفتە\x08روٙز\x0cدیروٙز\x0aأمروٙ\x0cشوٙصوٙ\x13روٙز ھأفتە\x0fگات روٙز" + - "\x08ساأت\x0aدئیقە\x0aثانیە\x0cراساگە\x19گاٛت مینجاٛیی0گاٛت مینجاٛیی ئستا" + - "ٛنداٛرد(روٙشنایی نئهادار روٙز\x12pavasario pradžia\x0elietaus vanduo" + - "\x14vabzdžių pabudimas\x15pavasario lygiadienis\x07šviesu\x0dlietus java" + - "ms\x10vasaros pradžia\x07liūtys\x13varpų formavimasis\x15vasaros saulėgr" + - "įža\x12nedidelis karštis\x10didelis karštis\x0frudens pradžia\x12karšči" + - "ų pabaiga\x0ašerkšnas\x12rudens lygiadienis\x0bšalta rasa\x07šalnos\x10" + - "žiemos pradžia\x12nesmarkus snigimas\x10smarkus snigimas\x15žiemos saul" + - "ėgrįža\x11nedidelis šaltis\x0fdidelis šaltis\x08Žiurkė\x06Jautis\x06Tig" + - "ras\x08Triušis\x08Drakonas\x07Gyvatė\x06Arklys\x05Ožka\x0cBeždžionė\x06G" + - "aidys\x04Šuo\x07Kiaulė\x0eU MMMM d, EEEE\x10y MMMM d G, EEEE\x0ay MMMM d" + - " G\x09y MMM d G\x09y-MM-dd G\x05saus.\x04vas.\x04kov.\x04bal.\x04geg." + - "\x06birž.\x05liep.\x05rugp.\x05rugs.\x05spal.\x06lapkr.\x06gruod.\x06sau" + - "sio\x07vasario\x04kovo\x0abalandžio\x09gegužės\x09birželio\x06liepos\x0b" + - "rugpjūčio\x08rugsėjo\x06spalio\x0alapkričio\x09gruodžio\x06sausis\x07vas" + - "aris\x05kovas\x08balandis\x08gegužė\x09birželis\x05liepa\x0arugpjūtis" + - "\x09rugsėjis\x06spalis\x09lapkritis\x07gruodis\x02sk\x02pr\x02an\x02tr" + - "\x02kt\x02pn\x03št\x02Sk\x02Pr\x02An\x02Tr\x02Kt\x02Pn\x03Št\x0bsekmadie" + - "nis\x0bpirmadienis\x0bantradienis\x0dtrečiadienis\x0eketvirtadienis\x0cp" + - "enktadienis\x0dšeštadienis\x04I k.\x05II k.\x06III k.\x05IV k.\x0bI ketv" + - "irtis\x0cII ketvirtis\x0dIII ketvirtis\x0cIV ketvirtis\x07I ketv.\x08II " + - "ketv.\x09III ketv.\x08IV ketv.\x0bvidurnaktis\x0apriešpiet\x07perpiet" + - "\x06popiet\x05rytas\x08popietė\x07vakaras\x06naktis\x06pr. p.\x0bvidurdi" + - "enis\x05diena\x0eprieš Kristų\x12prieš mūsų erą\x0bpo Kristaus\x0cmūsų e" + - "roje\x09pr. m. e.\x04prme\x04pome\x18y 'm'. MMMM d 'd'., EEEE\x12y 'm'. " + - "MMMM d 'd'.\x0dPrieš R.O.C.\x06R.O.C.\x05metai\x13praėjusiais metais\x0d" + - "šiais metais\x0dkitais metais\x0cpo {0} metų\x10prieš {0} metus\x10prie" + - "š {0} metų\x09po {0} m.\x0dprieš {0} m.\x09ketvirtis\x13praėjęs ketvirt" + - "is\x0ešis ketvirtis\x0fkitas ketvirtis\x11po {0} ketvirčio\x12po {0} ket" + - "virčių\x14prieš {0} ketvirtį\x16prieš {0} ketvirčius\x15prieš {0} ketvir" + - "čio\x16prieš {0} ketvirčių\x05ketv.\x0cpo {0} ketv.\x10prieš {0} ketv." + - "\x06mėnuo\x13praėjusį mėnesį\x0dšį mėnesį\x0ekitą mėnesį\x0fpo {0} mėnes" + - "io\x10po {0} mėnesių\x13prieš {0} mėnesį\x14prieš {0} mėnesius\x13prieš " + - "{0} mėnesio\x14prieš {0} mėnesių\x05mėn.\x0cpo {0} mėn.\x10prieš {0} mėn" + - ".\x08savaitė\x14praėjusią savaitę\x0ešią savaitę\x0ekitą savaitę\x10po {" + - "0} savaitės\x11po {0} savaičių\x13prieš {0} savaitę\x13prieš {0} savaite" + - "s\x14prieš {0} savaitės\x15prieš {0} savaičių\x0c{0} savaitę\x04sav.\x0b" + - "po {0} sav.\x0fprieš {0} sav.\x08užvakar\x05vakar\x09šiandien\x05rytoj" + - "\x05poryt\x0dpo {0} dienos\x0dpo {0} dienų\x11prieš {0} dieną\x11prieš {" + - "0} dienas\x11prieš {0} dienos\x11prieš {0} dienų\x09po {0} d.\x0dprieš {" + - "0} d.\x0fsavaitės diena\x16praėjusį sekmadienį\x10šį sekmadienį\x11kitą " + - "sekmadienį\x12po {0} sekmadienio\x13po {0} sekmadienių\x16prieš {0} sekm" + - "adienį\x17prieš {0} sekmadienius\x16prieš {0} sekmadienio\x17prieš {0} s" + - "ekmadienių\x10praėjusį sekm.\x0ašį sekm.\x0bkitą sekm.\x16praėjusį pirma" + - "dienį\x10šį pirmadienį\x11kitą pirmadienį\x12po {0} pirmadienio\x13po {0" + - "} pirmadienių\x16prieš {0} pirmadienį\x17prieš {0} pirmadienius\x16prieš" + - " {0} pirmadienio\x17prieš {0} pirmadienių\x10praėjusį pirm.\x0ašį pirm." + - "\x0bkitą pirm.\x16praėjusį antradienį\x10šį antradienį\x11kitą antradien" + - "į\x12po {0} antradienio\x13po {0} antradienių\x16prieš {0} antradienį" + - "\x17prieš {0} antradienius\x16prieš {0} antradienio\x17prieš {0} antradi" + - "enių\x10praėjusį antr.\x0ašį antr.\x0bkitą antr.\x18praėjusį trečiadienį" + - "\x12šį trečiadienį\x13kitą trečiadienį\x14po {0} trečiadienio\x15po {0} " + - "trečiadienių\x18prieš {0} trečiadienį\x19prieš {0} trečiadienius\x18prie" + - "š {0} trečiadienio\x19prieš {0} trečiadienių\x11praėjusį treč.\x0bšį tr" + - "eč.\x0ckitą treč.\x19praėjusį ketvirtadienį\x13šį ketvirtadienį\x14kitą " + - "ketvirtadienį\x15po {0} ketvirtadienio\x16po {0} ketvirtadienių\x19prieš" + - " {0} ketvirtadienį\x1aprieš {0} ketvirtadienius\x19prieš {0} ketvirtadie" + - "nio\x1aprieš {0} ketvirtadienių\x10praėjusį ketv.\x0ašį ketv.\x0bkitą ke" + - "tv.\x17praėjusį penktadienį\x11šį penktadienį\x12kitą penktadienį\x13po " + - "{0} penktadienio\x14po {0} penktadienių\x17prieš {0} penktadienį\x18prie" + - "š {0} penktadienius\x17prieš {0} penktadienio\x18prieš {0} penktadienių" + - "\x11praėjusį penkt.\x0bšį penkt.\x0ckitą penkt.\x18praėjusį šeštadienį" + - "\x12šį šeštadienį\x13kitą šeštadienį\x14po {0} šeštadienio\x15po {0} šeš" + - "tadienių\x18prieš {0} šeštadienį\x19prieš {0} šeštadienius\x18prieš {0} " + - "šeštadienio\x19prieš {0} šeštadienių\x12praėjusį šešt.\x0cšį šešt.\x0dk" + - "itą šešt.\x16iki pietų / po pietų\x07valanda\x0ešią valandą\x0fpo {0} va" + - "landos\x0fpo {0} valandų\x13prieš {0} valandą\x13prieš {0} valandas\x13p" + - "rieš {0} valandos\x13prieš {0} valandų\x04val.\x0bpo {0} val.\x0fprieš {" + - "0} val.\x07minutė\x0dšią minutę\x0fpo {0} minutės\x10po {0} minučių\x12p" + - "rieš {0} minutę\x12prieš {0} minutes\x13prieš {0} minutės\x14prieš {0} m" + - "inučių\x0bpo {0} min.\x0fprieš {0} min.\x08sekundė\x05dabar\x10po {0} se" + - "kundės\x12po {0} sekundžių\x13prieš {0} sekundę\x13prieš {0} sekundes" + - "\x14prieš {0} sekundės\x16prieš {0} sekundžių\x0bpo {0} sek.\x0fprieš {0" + - "} sek.\x08po {0} s\x0cprieš {0} s\x0claiko juosta\x0bLaikas: {0}\x13Vasa" + - "ros laikas: {0}\x13Žiemos laikas: {0}\x1eSuderintasis pasaulinis laikas" + - "\x19Britanijos vasaros laikas\x16Airijos vasaros laikas\x0aAko laikas" + - "\x17Ako standartinis laikas\x12Ako vasaros laikas\x12Afganistano laikas" + - "\x19Centrinės Afrikos laikas\x14Rytų Afrikos laikas\x15Pietų Afrikos lai" + - "kas\x16Vakarų Afrikos laikas\x1eVakarų Afrikos žiemos laikas\x1eVakarų A" + - "frikos vasaros laikas\x0fAliaskos laikas\x17Aliaskos žiemos laikas\x17Al" + - "iaskos vasaros laikas\x0eAlmatos laikas\x16Almatos žiemos laikas\x16Alma" + - "tos vasaros laikas\x10Amazonės laikas\x18Amazonės žiemos laikas\x18Amazo" + - "nės vasaros laikas Šiaurės Amerikos centro laikas(Šiaurės Amerikos centr" + - "o žiemos laikas(Šiaurės Amerikos centro vasaros laikas\x1fŠiaurės Amerik" + - "os rytų laikas'Šiaurės Amerikos rytų žiemos laikas'Šiaurės Amerikos rytų" + - " vasaros laikas Šiaurės Amerikos kalnų laikas(Šiaurės Amerikos kalnų žie" + - "mos laikas(Šiaurės Amerikos kalnų vasaros laikas+Šiaurės Amerikos Ramioj" + - "o vandenyno laikas3Šiaurės Amerikos Ramiojo vandenyno žiemos laikas3Šiau" + - "rės Amerikos Ramiojo vandenyno vasaros laikas\x10Anadyrės laikas\x18Anad" + - "yrės žiemos laikas\x18Anadyrės vasaros laikas\x0dApijos laikas\x15Apijos" + - " žiemos laikas\x15Apijos vasaros laikas\x0cAktau laikas\x14Aktau žiemos " + - "laikas\x14Aktau vasaros laikas\x0fAktobės laikas\x17Aktobės žiemos laika" + - "s\x17Aktobės vasaros laikas\x0fArabijos laikas\x17Arabijos žiemos laikas" + - "\x17Arabijos vasaros laikas\x11Argentinos laikas\x19Argentinos žiemos la" + - "ikas\x19Argentinos vasaros laikas\x19Vakarų Argentinos laikas!Vakarų Arg" + - "entinos žiemos laikas!Vakarų Argentinos vasaros laikas\x11Armėnijos laik" + - "as\x19Armėnijos žiemos laikas\x19Armėnijos vasaros laikas\x0eAtlanto lai" + - "kas\x16Atlanto žiemos laikas\x16Atlanto vasaros laikas\x1dCentrinės Aust" + - "ralijos laikas%Centrinės Australijos žiemos laikas%Centrinės Australijos" + - " vasaros laikas%Centrinės vakarų Australijos laikas-Centrinės vakarų Aus" + - "tralijos žiemos laikas-Centrinės vakarų Australijos vasaros laikas\x18Ry" + - "tų Australijos laikas Rytų Australijos žiemos laikas Rytų Australijos va" + - "saros laikas\x1aVakarų Australijos laikas\x22Vakarų Australijos žiemos l" + - "aikas\x22Vakarų Australijos vasaros laikas\x14Azerbaidžano laikas\x1cAze" + - "rbaidžano žiemos laikas\x1cAzerbaidžano vasaros laikas\x13Azorų Salų lai" + - "kas\x1bAzorų Salų žiemos laikas\x1bAzorų Salų vasaros laikas\x12Banglade" + - "šo laikas\x1aBangladešo žiemos laikas\x1aBangladešo vasaros laikas\x0dB" + - "utano laikas\x10Bolivijos laikas\x11Brazilijos laikas\x19Brazilijos žiem" + - "os laikas\x19Brazilijos vasaros laikas\x1cBrunėjaus Darusalamo laikas" + - "\x18Žaliojo Kyšulio laikas Žaliojo Kyšulio žiemos laikas Žaliojo Kyšulio" + - " vasaros laikas\x0dKeisio laikas\x0eČamoro laikas\x0eČatamo laikas\x16Ča" + - "tamo žiemos laikas\x16Čatamo vasaros laikas\x0eČilės laikas\x16Čilės žie" + - "mos laikas\x16Čilės vasaros laikas\x0eKinijos laikas\x16Kinijos žiemos l" + - "aikas\x16Kinijos vasaros laikas\x12Čoibalsano laikas\x1aČoibalsano žiemo" + - "s laikas\x1aČoibalsano vasaros laikas\x15Kalėdų Salos laikas\x14Kokosų S" + - "alų laikas\x11Kolumbijos laikas\x19Kolumbijos žiemos laikas\x19Kolumbijo" + - "s vasaros laikas\x11Kuko Salų laikas\x19Kuko Salų žiemos laikas Kuko Sal" + - "ų pusės vasaros laikas\x0cKubos laikas\x14Kubos žiemos laikas\x14Kubos " + - "vasaros laikas\x0eDeiviso laikas\x1aDiumono d’Urvilio laikas\x13Rytų Tim" + - "oro laikas\x14Velykų Salos laikas\x1cVelykų salos žiemos laikas\x1cVelyk" + - "ų Salos vasaros laikas\x0fEkvadoro laikas\x16Vidurio Europos laikas\x1e" + - "Vidurio Europos žiemos laikas\x1eVidurio Europos vasaros laikas\x14Rytų " + - "Europos laikas\x1cRytų Europos žiemos laikas\x1cRytų Europos vasaros lai" + - "kas\x1fTolimųjų rytų Europos laikas\x16Vakarų Europos laikas\x1eVakarų E" + - "uropos žiemos laikas\x1eVakarų Europos vasaros laikas\x16Folklando Salų " + - "laikas\x1fFolklandų Salų žiemos laikas\x1eFolklando Salų vasaros laikas" + - "\x0eFidžio laikas\x16Fidžio žiemos laikas\x16Fidžio vasaros laikas\x1bPr" + - "ancūzijos Gvianos laikas)Pietų Prancūzijos ir antarktinis laikas\x10Gala" + - "pagų laikas\x0eGambyro laikas\x0fGruzijos laikas\x17Gruzijos žiemos laik" + - "as\x17Gruzijos vasaros laikas\x15Gilberto Salų laikas\x10Grinvičo laikas" + - "\x19Grenlandijos rytų laikas!Grenlandijos rytų žiemos laikas!Grenlandijo" + - "s rytų vasaros laikas\x1bGrenlandijos vakarų laikas#Grenlandijos vakarų " + - "žiemos laikas#Grenlandijos vakarų vasaros laikas\x0cGuamo laikas\x18Per" + - "sijos įlankos laikas\x0eGajanos laikas\x16Havajų-Aleutų laikas Havajų–Al" + - "eutų žiemos laikas Havajų–Aleutų vasaros laikas\x0fHonkongo laikas\x17Ho" + - "nkongo žiemos laikas\x17Honkongo vasaros laikas\x0cHovdo laikas\x14Hovdo" + - " žiemos laikas\x14Hovdo vasaros laikas\x0eIndijos laikas\x18Indijos vand" + - "enyno laikas\x12Indokinijos laikas\x1dCentrinės Indonezijos laikas\x18Ry" + - "tų Indonezijos laikas\x1aVakarų Indonezijos laikas\x0cIrano laikas\x14Ir" + - "ano žiemos laikas\x14Irano vasaros laikas\x0fIrkutsko laikas\x17Irkutsko" + - " žiemos laikas\x17Irkutsko vasaros laikas\x0fIzraelio laikas\x17Izraelio" + - " žiemos laikas\x17Izraelio vasaros laikas\x10Japonijos laikas\x18Japonij" + - "os žiemos laikas\x18Japonijos vasaros laikas!Kamčiatkos Petropavlovsko l" + - "aikas)Kamčiatkos Petropavlovsko žiemos laikas)Kamčiatkos Petropavlovsko " + - "vasaros laikas\x18Rytų Kazachstano laikas\x1aVakarų Kazachstano laikas" + - "\x0fKorėjos laikas\x17Korėjos žiemos laikas\x17Korėjos vasaros laikas" + - "\x0fKosrajė laikas\x13Krasnojarsko laikas\x1bKrasnojarsko žiemos laikas" + - "\x1bKrasnojarsko vasaros laikas\x11Kirgistano laikas\x0dLankos laikas" + - "\x12Laino Salų laikas\x10Lordo Hau laikas\x18Lordo Hau žiemos laikas\x18" + - "Lordo Hau vasaros laikas\x0cMakau laikas\x14Makau žiemos laikas\x14Makau" + - " vasaros laikas\x15Makvorio Salos laikas\x0fMagadano laikas\x17Magadano " + - "žiemos laikas\x17Magadano vasaros laikas\x11Malaizijos laikas\x0fMaldyv" + - "ų laikas\x14Markizo Salų laikas\x15Maršalo Salų laikas\x12Mauricijaus l" + - "aikas\x1aMauricijaus žiemos laikas\x1aMauricijaus vasaros laikas\x0dMoso" + - "no laikas!Šiaurės Vakarų Meksikos laikas)Šiaurės Vakarų Meksikos žiemos " + - "laikas)Šiaurės Vakarų Meksikos vasaros laikas!Meksikos Ramiojo vandenyno" + - " laikas)Meksikos Ramiojo vandenyno žiemos laikas)Meksikos Ramiojo vanden" + - "yno vasaros laikas\x12Ulan Batoro laikas\x1aUlan Batoro žiemos laikas" + - "\x1aUlan Batoro vasaros laikas\x0eMaskvos laikas\x16Maskvos žiemos laika" + - "s\x16Maskvos vasaros laikas\x0fMianmaro laikas\x0cNauru laikas\x0dNepalo" + - " laikas\x1cNaujosios Kaledonijos laikas$Naujosios Kaledonijos žiemos lai" + - "kas$Naujosios Kaledonijos vasaros laikas\x1bNaujosios Zelandijos laikas#" + - "Naujosios Zelandijos žiemos laikas#Naujosios Zelandijos vasaros laikas" + - "\x14Niufaundlendo laikas\x1cNiufaundlendo žiemos laikas\x1cNiufaundlendo" + - " vasaros laikas\x0dNiujė laikas\x15Norfolko Salų laikas\x1bFernando de N" + - "oronjos laikas#Fernando de Noronjos žiemos laikas#Fernando de Noronjos v" + - "asaros laikas\x1fŠiaurės Marianos Salų laikas\x13Novosibirsko laikas\x1b" + - "Novosibirsko žiemos laikas\x1bNovosibirsko vasaros laikas\x0cOmsko laika" + - "s\x14Omsko žiemos laikas\x14Omsko vasaros laikas\x10Pakistano laikas\x18" + - "Pakistano žiemos laikas\x18Pakistano vasaros laikas\x0cPalau laikas Papu" + - "a Naujosios Gvinėjos laikas\x12Paragvajaus laikas\x1aParagvajaus žiemos " + - "laikas\x1aParagvajaus vasaros laikas\x0bPeru laikas\x13Peru žiemos laika" + - "s\x13Peru vasaros laikas\x10Filipinų laikas\x18Filipinų žiemos laikas" + - "\x18Filipinų vasaros laikas\x14Fenikso Salų laikas\x1cSen Pjero ir Mikel" + - "ono laikas$Sen Pjero ir Mikelono žiemos laikas$Sen Pjero ir Mikelono vas" + - "aros laikas\x0fPitkerno laikas\x0fPonapės laikas\x10Pchenjano laikas\x11" + - "Kyzylordos laikas\x19Kyzylordos žiemos laikas\x19Kyzylordos vasaros laik" + - "as\x0fReunjono laikas\x0eRoteros laikas\x10Sachalino laikas\x18Sachalino" + - " žiemos laikas\x18Sachalino vasaros laikas\x0eSamaros laikas\x16Samaros " + - "žiemos laikas\x16Samaros vasaros laikas\x0cSamoa laikas\x14Samoa žiemos" + - " laikas\x14Samoa vasaros laikas\x11Seišelių laikas\x11Singapūro laikas" + - "\x16Saliamono Salų laikas\x1aPietų Džordžijos laikas\x0fSurinamo laikas" + - "\x0dSiovos laikas\x0fTahičio laikas\x11Taipėjaus laikas\x19Taipėjaus žie" + - "mos laikas\x19Taipėjaus vasaros laikas\x14Tadžikistano laikas\x0eTokelau" + - " laikas\x0dTongos laikas\x15Tongos žiemos laikas\x15Tongos vasaros laika" + - "s\x0cČuko laikas\x15Turkmėnistano laikas\x1dTurkmėnistano žiemos laikas" + - "\x1dTurkmėnistano vasaros laikas\x0dTuvalu laikas\x11Urugvajaus laikas" + - "\x19Urugvajaus žiemos laikas\x19Urugvajaus vasaros laikas\x12Uzbekistano" + - " laikas\x1aUzbekistano žiemos laikas\x1aUzbekistano vasaros laikas\x0eVa" + - "nuatu laikas\x16Vanuatu žiemos laikas\x16Vanuatu vasaros laikas\x11Venes" + - "uelos laikas\x13Vladivostoko laikas\x1bVladivostoko žiemos laikas\x1bVla" + - "divostoko vasaros laikas\x11Volgogrado laikas\x19Volgogrado žiemos laika" + - "s\x19Volgogrado vasaros laikas\x0eVostoko laikas\x12Veiko Salos laikas" + - "\x19Voliso ir Futūnos laikas\x0fJakutsko laikas\x17Jakutsko žiemos laika" + - "s\x17Jakutsko vasaros laikas\x15Jekaterinburgo laikas\x1dJekaterinburgo " + - "žiemos laikas\x1dJekaterinburgo vasaros laikas" - -var bucket68 string = "" + // Size: 12623 bytes - "\x03Cio\x03Lui\x03Lus\x03Muu\x03Lum\x03Luf\x03Kab\x04Lush\x03Lut\x03Lun" + - "\x03Kas\x03Cis\x06Ciongo\x07Lùishi\x07Lusòlo\x07Mùuyà\x0cLumùngùlù\x07Lu" + - "fuimi\x0fKabàlàshìpù\x0aLùshìkà\x09Lutongolo\x08Lungùdi\x0cKaswèkèsè\x06" + - "Ciswà\x03Nko\x03Ndy\x03Ndg\x03Njw\x03Ngv\x03Lub\x07Lumingu\x06Nkodya\x08" + - "Ndàayà\x07Ndangù\x06Njòwa\x07Ngòvya\x07Lubingu\x02M1\x02M2\x02M3\x02M4" + - "\x07Mueji 1\x07Mueji 2\x07Mueji 3\x07Mueji 4\x05Dinda\x06Dilolo\x14Kumpa" + - "la kwa Yezu Kli\x14Kunyima kwa Yezu Kli\x09kmp. Y.K.\x0akny. Y. K.\x09Ts" + - "hipungu\x08Tshidimu\x06Ngondo\x06Dituku\x08Makelela\x04Lelu\x06Malaba" + - "\x12Dituku dia lubingu\x11Mutantshi wa diba\x04Diba\x07Kasunsu\x0bKasuns" + - "ukusu\x06Nzeepu\x03DAC\x03DAR\x03DAD\x03DAN\x03DAH\x03DAU\x03DAO\x03DAB" + - "\x03DOC\x03DAP\x03DGI\x03DAG\x0eDwe mar Achiel\x0dDwe mar Ariyo\x0cDwe m" + - "ar Adek\x11Dwe mar Ang’wen\x0dDwe mar Abich\x0fDwe mar Auchiel\x0fDwe ma" + - "r Abiriyo\x0dDwe mar Aboro\x0eDwe mar Ochiko\x0cDwe mar Apar\x11Dwe mar " + - "gi achiel\x15Dwe mar Apar gi ariyo\x03JMP\x03WUT\x03TAR\x03TAD\x03TAN" + - "\x03TAB\x03NGS\x07Jumapil\x09Wuok Tich\x0aTich Ariyo\x09Tich Adek\x0eTic" + - "h Ang’wen\x0aTich Abich\x05Ngeso\x04NMN1\x04NMN2\x04NMN3\x04NMN4\x0dnus " + - "mar nus 1\x0dnus mar nus 2\x0dnus mar nus 3\x0dnus mar nus 4\x02OD\x02OT" + - "\x12Kapok Kristo obiro\x11Ka Kristo osebiro\x05ndalo\x04higa\x03dwe\x09c" + - "hieng’\x05nyoro\x07kawuono\x04kiny\x0endalo mar juma\x15odieochieng’/oti" + - "eno\x03saa\x06dakika\x0fnyiriri mar saa\x07kar saa\x02J2\x02J3\x02J4\x02" + - "J5\x02Al\x02Ij\x02J1\x08Jumapiri\x08Jumatatu\x07Jumanne\x08Jumatano\x0eM" + - "urwa wa Kanne\x0fMurwa wa Katano\x08Jumamosi\x0cRobo ya Kala\x0eRobo ya " + - "Kaviri\x0eRobo ya Kavaga\x0dRobo ya Kanne\x13Imberi ya Kuuza Kwa\x13Muhi" + - "ga Kuvita Kuuza\x07Rimenya\x06Muhiga\x06Risiza\x06Ridiku\x07Mgorova\x04L" + - "ero\x06Mgamba\x07Mrisiza\x0bVuche/Vwira\x04Isaa\x07Idagika\x07Havundu" + - "\x19EEEE, y. 'gada' d. MMMM G\x13y. 'gada' d. MMMM G\x12y. 'gada' d. MMM" + - " G\x10{1} 'plkst'. {0}\x09janvāris\x0afebruāris\x05marts\x08aprīlis\x05m" + - "aijs\x07jūnijs\x07jūlijs\x07augusts\x0aseptembris\x08oktobris\x09novembr" + - "is\x09decembris\x05marts\x05maijs\x07svētd.\x06pirmd.\x05otrd.\x07trešd." + - "\x08ceturtd.\x07piektd.\x06sestd.\x02Sv\x02Pr\x02Ot\x02Tr\x02Ce\x02Pk" + - "\x02Se\x0asvētdiena\x09pirmdiena\x08otrdiena\x0atrešdiena\x0bceturtdiena" + - "\x0apiektdiena\x09sestdiena\x07Svētd.\x06Pirmd.\x05Otrd.\x07Trešd.\x08Ce" + - "turtd.\x07Piektd.\x06Sestd.\x0aSvētdiena\x09Pirmdiena\x08Otrdiena\x0aTre" + - "šdiena\x0bCeturtdiena\x0aPiektdiena\x09Sestdiena\x081.\u00a0cet.\x082." + - "\u00a0cet.\x083.\u00a0cet.\x084.\u00a0cet.\x0d1. ceturksnis\x0d2. ceturk" + - "snis\x0d3. ceturksnis\x0d4. ceturksnis\x09pusnaktī\x09priekšp.\x05pusd." + - "\x06pēcp.\x08no rīta\x09pēcpusd.\x07vakarā\x06naktī\x0dpēcpusdienā\x10pr" + - "iekšpusdienā\x0dpusdienlaikā\x08pusnakts\x05rīts\x0cpēcpusdiena\x06vakar" + - "s\x05nakts\x0fpriekšpusdiena\x0cpusdienlaiks\x11pirms mūsu ēras\x0bmūsu " + - "ērā\x07p.m.ē.\x05m.ē.\x04pmē\x03mē\x17EEEE, y. 'gada' d. MMMM\x11y. 'ga" + - "da' d. MMMM\x10y. 'gada' d. MMM\x06tišri\x08hešvans\x08kisļevs\x06tevets" + - "\x07ševats\x081. adars\x05adars\x082. adars\x06nisans\x05ijars\x06sivans" + - "\x06tamuzs\x03avs\x05eluls\x08muharams\x06safars\x081. rabī\x082. rabī" + - "\x0d1. džumādā\x0d2. džumādā\x08radžabs\x07šabans\x09ramadāns\x08šauvals" + - "\x0bdu al-kidā\x0ddu al-hidžā\x04ēra\x04gads\x13pagājušajā gadā\x0cšajā " + - "gadā\x10nākamajā gadā\x0fpēc {0} gadiem\x0dpēc {0} gada\x10pirms {0} gad" + - "iem\x0epirms {0} gada\x0bpēc {0} g.\x0cpirms {0} g.\x0aceturksnis\x15pēd" + - "ējais ceturksnis\x0fšis ceturksnis\x14nākamais ceturksnis\x17pēc {0}" + - "\u00a0ceturkšņiem\x15pēc {0}\u00a0ceturkšņa\x18pirms {0}\u00a0ceturkšņie" + - "m\x16pirms {0}\u00a0ceturkšņa\x04cet.\x0epēc {0}\u00a0cet.\x0fpirms {0}" + - "\u00a0cet.\x08mēnesis\x16pagājušajā mēnesī\x0fšajā mēnesī\x13nākamajā mē" + - "nesī\x13pēc {0} mēnešiem\x11pēc {0} mēneša\x14pirms {0} mēnešiem\x12pirm" + - "s {0} mēneša\x05mēn.\x0epēc {0} mēn.\x0fpirms {0} mēn.\x08nedēļa\x17pagā" + - "jušajā nedēļā\x10šajā nedēļā\x14nākamajā nedēļā\x13pēc {0} nedēļām\x12pē" + - "c {0} nedēļas\x14pirms {0} nedēļām\x13pirms {0} nedēļas\x0d{0}. nedēļa" + - "\x04ned.\x0dpēc {0} ned.\x0epirms {0} ned.\x08aizvakar\x05vakar\x07šodie" + - "n\x04rīt\x06parīt\x10pēc {0} dienām\x0fpēc {0} dienas\x11pirms {0} dienā" + - "m\x10pirms {0} dienas\x0bpēc {0} d.\x0cpēc {0}\u00a0d.\x0cpirms {0} d." + - "\x0dpirms {0}\u00a0d.\x0fnedēļas diena\x19pagājušajā svētdienā\x12šajā s" + - "vētdienā\x16nākamajā svētdienā\x15pēc {0} svētdienām\x14pēc {0} svētdien" + - "as\x16pirms {0} svētdienām\x15pirms {0} svētdienas\x0cpag. svētd.\x0ešaj" + - "ā svētd.\x0dnāk. svētd.\x18pagājušajā pirmdienā\x11šajā pirmdienā\x15nā" + - "kamajā pirmdienā\x14pēc {0} pirmdienām\x13pēc {0} pirmdienas\x15pirms {0" + - "} pirmdienām\x14pirms {0} pirmdienas\x0bpag. pirmd.\x0dšajā pirmd.\x0cnā" + - "k. pirmd.\x17pagājušajā otrdienā\x10šajā otrdienā\x14nākamajā otrdienā" + - "\x13pēc {0} otrdienām\x12pēc {0} otrdienas\x14pirms {0} otrdienām\x13pir" + - "ms {0} otrdienas\x0apag. otrd.\x0cšajā otrd.\x0bnāk. otrd.\x19pagājušajā" + - " trešdienā\x12šajā trešdienā\x16nākamajā trešdienā\x15pēc {0} trešdienām" + - "\x14pēc {0} trešdienas\x16pirms {0} trešdienām\x15pirms {0} trešdienas" + - "\x0cpag. trešd.\x0ešajā trešd.\x0dnāk. trešd.\x1apagājušajā ceturtdienā" + - "\x13šajā ceturtdienā\x17nākamajā ceturtdienā\x16pēc {0} ceturtdienām\x15" + - "pēc {0} ceturtdienas\x17pirms {0} ceturtdienām\x16pirms {0} ceturtdienas" + - "\x0dpag. ceturtd.\x0fšajā ceturtd.\x0enāk. ceturtd.\x19pagājušajā piektd" + - "ienā\x12šajā piektdienā\x16nākamajā piektdienā\x15pēc {0} piektdienām" + - "\x14pēc {0} piektdienas\x16pirms {0} piektdienām\x15pirms {0} piektdiena" + - "s\x0cpag. piektd.\x0ešajā piektd.\x0dnāk. piektd.\x18pagājušajā sestdien" + - "ā\x11šajā sestdienā\x15nākamajā sestdienā\x14pēc {0} sestdienām\x13pēc " + - "{0} sestdienas\x15pirms {0} sestdienām\x14pirms {0} sestdienas\x0bpag. s" + - "estd.\x0dšajā sestd.\x0cnāk. sestd.\x1epriekšpusdienā/pēcpusdienā\x07stu" + - "ndas\x0ešajā stundā\x11pēc {0} stundām\x10pēc {0} stundas\x12pirms {0} s" + - "tundām\x11pirms {0} stundas\x03st.\x0dpēc {0}\u00a0st.\x0epirms {0}" + - "\u00a0st.\x0apēc {0} h\x0bpirms {0} h\x08minūtes\x0fšajā minūtē\x12pēc {" + - "0} minūtēm\x11pēc {0} minūtes\x13pirms {0} minūtēm\x12pirms {0} minūtes" + - "\x0dpēc {0} min.\x0epirms {0} min.\x0cpēc {0} min\x0dpēc {0}\u00a0min" + - "\x0epirms {0}\u00a0min\x08sekundes\x05tagad\x12pēc {0} sekundēm\x11pēc {" + - "0} sekundes\x13pirms {0} sekundēm\x12pirms {0} sekundes\x0dpēc {0} sek." + - "\x0epirms {0} sek.\x0bpēc {0}\u00a0s\x0cpirms {0}\u00a0s\x0bpirms {0} s" + - "\x0blaika josla\x10Laika josla: {0}\x12{0}: vasaras laiks\x14{0}: standa" + - "rta laiks!Universālais koordinētais laiks\x1dLielbritānijas vasaras laik" + - "s\x14Īrijas ziemas laiks\x13Afganistānas laiks\x16Centrālāfrikas laiks" + - "\x15Austrumāfrikas laiks\x1cDienvidāfrikas ziemas laiks\x14Rietumāfrikas" + - " laiks\x1bRietumāfrikas ziemas laiks\x1cRietumāfrikas vasaras laiks\x0eA" + - "ļaskas laiks\x15Aļaskas ziemas laiks\x16Aļaskas vasaras laiks\x0eAmazon" + - "es laiks\x15Amazones ziemas laiks\x16Amazones vasaras laiks\x11Centrālai" + - "s laiks\x18Centrālais ziemas laiks\x19Centrālais vasaras laiks\x0eAustru" + - "mu laiks\x15Austrumu ziemas laiks\x16Austrumu vasaras laiks\x0bKalnu lai" + - "ks\x12Kalnu ziemas laiks\x13Kalnu vasaras laiks\x14Klusā okeāna laiks" + - "\x1bKlusā okeāna ziemas laiks\x1cKlusā okeāna vasaras laiks\x0eAnadiras " + - "laiks\x15Anadiras ziemas laiks\x16Anadiras vasaras laiks\x0cApijas laiks" + - "\x13Apijas ziemas laiks\x14Apijas vasaras laiks\x18Arābijas pussalas lai" + - "ks\x1fArābijas pussalas ziemas laiks Arābijas pussalas vasaras laiks\x11" + - "Argentīnas laiks\x18Argentīnas ziemas laiks\x19Argentīnas vasaras laiks" + - "\x17Rietumargentīnas laiks\x1eRietumargentīnas ziemas laiks\x1fRietumarg" + - "entīnas vasaras laiks\x10Armēnijas laiks\x17Armēnijas ziemas laiks\x18Ar" + - "mēnijas vasaras laiks\x10Atlantijas laiks\x17Atlantijas ziemas laiks\x18" + - "Atlantijas vasaras laiks\x1eAustrālijas centrālais laiks%Austrālijas cen" + - "trālais ziemas laiks&Austrālijas centrālais vasaras laiks&Austrālijas ce" + - "ntrālais rietumu laiks-Austrālijas centrālais rietumu ziemas laiks.Austr" + - "ālijas centrālais rietumu vasaras laiks\x1bAustrālijas austrumu laiks" + - "\x22Austrālijas austrumu ziemas laiks#Austrālijas austrumu vasaras laiks" + - "\x1aAustrālijas rietumu laiks!Austrālijas rietumu ziemas laiks\x22Austrā" + - "lijas rietumu vasaras laiks\x15Azerbaidžānas laiks\x1cAzerbaidžānas ziem" + - "as laiks\x1dAzerbaidžānas vasaras laiks\x10Azoru salu laiks\x17Azoru sal" + - "u ziemas laiks\x18Azoru salu vasaras laiks\x12Bangladešas laiks\x19Bangl" + - "adešas ziemas laiks\x1aBangladešas vasaras laiks\x0eButānas laiks\x10Bol" + - "īvijas laiks\x11Brazīlijas laiks\x18Brazīlijas ziemas laiks\x19Brazīlij" + - "as vasaras laiks\x1aBrunejas Darusalamas laiks\x10Kaboverdes laiks\x17Ka" + - "boverdes ziemas laiks\x18Kaboverdes vasaras laiks\x15Čamorra ziemas laik" + - "s\x0eČetemas laiks\x15Četemas ziemas laiks\x16Četemas vasaras laiks\x0dČ" + - "īles laiks\x14Čīles ziemas laiks\x15Čīles vasaras laiks\x0dĶīnas laiks" + - "\x14Ķīnas ziemas laiks\x15Ķīnas vasaras laiks\x12Čoibalsanas laiks\x19Čo" + - "ibalsanas ziemas laiks\x1aČoibalsanas vasaras laiks\x17Ziemsvētku salas " + - "laiks\x1cKokosu (Kīlinga) salu laiks\x10Kolumbijas laiks\x17Kolumbijas z" + - "iemas laiks\x18Kolumbijas vasaras laiks\x0fKuka salu laiks\x16Kuka salu " + - "ziemas laiks\x17Kuka salu vasaras laiks\x0bKubas laiks\x12Kubas ziemas l" + - "aiks\x13Kubas vasaras laiks\x0eDeivisas laiks\x13Dimondirvilas laiks\x14" + - "Austrumtimoras laiks\x15Lieldienu salas laiks\x1cLieldienu salas ziemas " + - "laiks\x1dLieldienu salas vasaras laiks\x0fEkvadoras laiks\x15Centrāleiro" + - "pas laiks\x1cCentrāleiropas ziemas laiks\x1dCentrāleiropas vasaras laiks" + - "\x14Austrumeiropas laiks\x1bAustrumeiropas ziemas laiks\x1cAustrumeiropa" + - "s vasaras laiks Austrumeiropas laika josla (FET)\x13Rietumeiropas laiks" + - "\x1aRietumeiropas ziemas laiks\x1bRietumeiropas vasaras laiks\x1eFolklen" + - "da (Malvinu) salu laiks%Folklenda (Malvinu) salu ziemas laiks&Folklenda " + - "(Malvinu) salu vasaras laiks\x0cFidži laiks\x13Fidži ziemas laiks\x14Fid" + - "ži vasaras laiks\x16Franču Gviānas laiks7Francijas Dienvidjūru un Antar" + - "ktikas teritorijas laiks\x0eGalapagu laiks\x12Gambjē salu laiks\x0eGruzi" + - "jas laiks\x15Gruzijas ziemas laiks\x16Gruzijas vasaras laiks\x13Gilberta" + - " salu laiks\x0fGriničas laiks\x17Austrumgrenlandes laiks\x1eAustrumgrenl" + - "andes ziemas laiks\x1fAustrumgrenlandes vasaras laiks\x16Rietumgrenlande" + - "s laiks\x1dRietumgrenlandes ziemas laiks\x1eRietumgrenlandes vasaras lai" + - "ks\x15Persijas līča laiks\x0eGajānas laiks\x15Havaju–Aleutu laiks\x1cHav" + - "aju–Aleutu ziemas laiks\x1dHavaju–Aleutu vasaras laiks\x0fHonkongas laik" + - "s\x16Honkongas ziemas laiks\x17Honkongas vasaras laiks\x0cHovdas laiks" + - "\x13Hovdas ziemas laiks\x14Hovdas vasaras laiks\x14Indijas ziemas laiks" + - "\x15Indijas okeāna laiks\x11Indoķīnas laiks\x1aCentrālindonēzijas laiks" + - "\x19Austrumindonēzijas laiks\x18Rietumindonēzijas laiks\x0dIrānas laiks" + - "\x14Irānas ziemas laiks\x15Irānas vasaras laiks\x0fIrkutskas laiks\x16Ir" + - "kutskas ziemas laiks\x17Irkutskas vasaras laiks\x0fIzraēlas laiks\x16Izr" + - "aēlas ziemas laiks\x17Izraēlas vasaras laiks\x0eJapānas laiks\x15Japānas" + - " ziemas laiks\x16Japānas vasaras laiks!Petropavlovskas-Kamčatskas laiks(" + - "Petropavlovskas-Kamčatskas ziemas laiks)Petropavlovskas-Kamčatskas vasar" + - "as laiks\x19Austrumkazahstānas laiks\x18Rietumkazahstānas laiks\x0dKorej" + - "as laiks\x14Korejas ziemas laiks\x15Korejas vasaras laiks\x0cKosrae laik" + - "s\x13Krasnojarskas laiks\x1aKrasnojarskas ziemas laiks\x1bKrasnojarskas " + - "vasaras laiks\x13Kirgizstānas laiks\x11Lainas salu laiks\x16Lorda Hava s" + - "alas laiks\x1dLorda Hava salas ziemas laiks\x1eLorda Hava salas vasaras " + - "laiks\x15Makvorija salas laiks\x0fMagadanas laiks\x16Magadanas ziemas la" + - "iks\x17Magadanas vasaras laiks\x10Malaizijas laiks\x11Maldīvijas laiks" + - "\x14Marķīza salu laiks\x14Māršala salu laiks\x11Maurīcijas laiks\x18Maur" + - "īcijas ziemas laiks\x19Maurīcijas vasaras laiks\x0dMosonas laiks\x1dZie" + - "meļrietumu Meksikas laiks$Ziemeļrietumu Meksikas ziemas laiks%Ziemeļriet" + - "umu Meksikas vasaras laiks(Meksikas Klusā okeāna piekrastes laiks/Meksik" + - "as Klusā okeāna piekrastes ziemas laiks0Meksikas Klusā okeāna piekrastes" + - " vasaras laiks\x11Ulanbatoras laiks\x18Ulanbatoras ziemas laiks\x19Ulanb" + - "atoras vasaras laiks\x0eMaskavas laiks\x15Maskavas ziemas laiks\x16Maska" + - "vas vasaras laiks\x0dMjanmas laiks\x0bNauru laiks\x0eNepālas laiks\x15Ja" + - "unkaledonijas laiks\x1cJaunkaledonijas ziemas laiks\x1dJaunkaledonijas v" + - "asaras laiks\x13Jaunzēlandes laiks\x1aJaunzēlandes ziemas laiks\x1bJaunz" + - "ēlandes vasaras laiks\x15Ņūfaundlendas laiks\x1cŅūfaundlendas ziemas la" + - "iks\x1dŅūfaundlendas vasaras laiks\x0aNiue laiks\x15Norfolkas salas laik" + - "s\x1aFernandu di Noroņas laiks!Fernandu di Noroņas ziemas laiks\x22Ferna" + - "ndu di Noroņas vasaras laiks\x13Novosibirskas laiks\x1aNovosibirskas zie" + - "mas laiks\x1bNovosibirskas vasaras laiks\x0cOmskas laiks\x13Omskas ziema" + - "s laiks\x14Omskas vasaras laiks\x11Pakistānas laiks\x18Pakistānas ziemas" + - " laiks\x19Pakistānas vasaras laiks\x0bPalau laiks\x18Papua-Jaungvinejas " + - "laiks\x10Paragvajas laiks\x17Paragvajas ziemas laiks\x18Paragvajas vasar" + - "as laiks\x0aPeru laiks\x11Peru ziemas laiks\x12Peru vasaras laiks\x0fFil" + - "ipīnu laiks\x16Filipīnu ziemas laiks\x17Filipīnu vasaras laiks\x13Fēniks" + - "a salu laiks\x1dSenpjēras un Mikelonas laiks$Senpjēras un Mikelonas ziem" + - "as laiks%Senpjēras un Mikelonas vasaras laiks\x10Pitkērnas laiks\x0dPona" + - "pē laiks\x0fPhenjanas laiks\x0fReinjonas laiks\x0dRoteras laiks\x10Sahal" + - "īnas laiks\x17Sahalīnas ziemas laiks\x18Sahalīnas vasaras laiks\x0dSama" + - "ras laiks\x14Samaras ziemas laiks\x15Samaras vasaras laiks\x0bSamoa laik" + - "s\x12Samoa ziemas laiks\x13Samoa vasaras laiks\x14Seišeļu salu laiks\x11" + - "Singapūras laiks\x14Zālamana salu laiks\x19Dienviddžordžijas laiks\x0fSu" + - "rinamas laiks\x0cŠovas laiks\x0bTaiti laiks\x0cTaibei laiks\x13Taibei zi" + - "emas laiks\x14Taibei vasaras laiks\x15Tadžikistānas laiks\x0dTokelau lai" + - "ks\x0cTongas laiks\x13Tongas ziemas laiks\x14Tongas vasaras laiks\x0dČūk" + - "as laiks\x15Turkmenistānas laiks\x1cTurkmenistānas ziemas laiks\x1dTurkm" + - "enistānas vasaras laiks\x0cTuvalu laiks\x0fUrugvajas laiks\x16Urugvajas " + - "ziemas laiks\x17Urugvajas vasaras laiks\x13Uzbekistānas laiks\x1aUzbekis" + - "tānas ziemas laiks\x1bUzbekistānas vasaras laiks\x0dVanuatu laiks\x14Van" + - "uatu ziemas laiks\x15Vanuatu vasaras laiks\x11Venecuēlas laiks\x13Vladiv" + - "ostokas laiks\x1aVladivostokas ziemas laiks\x1bVladivostokas vasaras lai" + - "ks\x11Volgogradas laiks\x18Volgogradas ziemas laiks\x19Volgogradas vasar" + - "as laiks\x0eVostokas laiks\x11Veika salas laiks\x18Volisas un Futunas la" + - "iks\x0fJakutskas laiks\x16Jakutskas ziemas laiks\x17Jakutskas vasaras la" + - "iks\x15Jekaterinburgas laiks\x1cJekaterinburgas ziemas laiks\x1dJekateri" + - "nburgas vasaras laiks\x02A2\x02N4\x02F5\x02I6\x02A7\x02I8\x02K9\x0210" + - "\x0211\x0212\x02M5\x02M6\x02M7\x02M8\x02M9\x03M10\x03M11\x03M12\x04pon." + - "\x04tor.\x04sre.\x05čet.\x04pet.\x04sob.\x02Mu\x02Cp\x02Ct\x02Cn\x02Cs" + - "\x02Mg\x03ut.\x03sr.\x04sub." - -var bucket69 string = "" + // Size: 11188 bytes - "\x03Dal\x04Ará\x05Ɔɛn\x03Doy\x04Lép\x03Rok\x04Sás\x06Bɔ́r\x04Kús\x04Gís" + - "\x06Shʉ́\x06Ntʉ́\x0aOladalʉ́\x05Arát\x12Ɔɛnɨ́ɔɨŋɔk\x1aOlodoyíóríê inkókú" + - "â\x1bOloilépūnyīē inkókúâ\x0cKújúɔrɔk\x0bMórusásin\x16Ɔlɔ́ɨ́bɔ́rárɛ\x08" + - "Kúshîn\x08Olgísan\x0bPʉshʉ́ka\x0dNtʉ́ŋʉ́s\x0aJumapílí\x09Jumatátu\x06Jum" + - "ane\x0aJumatánɔ\x09Alaámisi\x06Jumáa\x09Jumamósi\x07Erobo 1\x07Erobo 2" + - "\x07Erobo 3\x07Erobo 4\x0cƐnkakɛnyá\x09Ɛndámâ\x10Meínō Yɛ́sʉ\x0fEínō Yɛ́" + - "sʉ\x09Ɛnkátá\x08Ɔlárì\x08Ɔlápà\x07Ewíkî\x0dƐnkɔlɔ́ŋ\x06Ŋolé\x07Táatá\x0c" + - "Tááisérè\x15Ɛnkɔ́lɔŋ ewíkî\x16Ɛnkakɛnyá/Ɛndámâ\x09Ɛ́sáâ\x0bOldákikaè\x14" + - "Ɛ́sáâ o inkuapí\x03JAN\x03FEB\x03MAC\x04ĨPU\x05MĨĨ\x03NJU\x03NJR\x03AGA" + - "\x03SPT\x03OKT\x03NOV\x03DEC\x08Januarĩ\x0aFeburuarĩ\x05Machi\x07Ĩpurũ" + - "\x05Mĩĩ\x05Njuni\x07Njuraĩ\x06Agasti\x08Septemba\x07Oktũba\x07Novemba" + - "\x07Dicemba\x03KIU\x03MRA\x03WAI\x03WET\x03WEN\x03WTN\x03JUM\x11Ĩmwe kĩr" + - "ĩ inya\x13Ijĩrĩ kĩrĩ inya\x13Ithatũ kĩrĩ inya\x10Inya kĩrĩ inya\x03RŨ" + - "\x03ŨG\x10Mbere ya Kristũ\x10Nyuma ya Kristũ\x06Ĩgita\x06Ntukũ\x11Ntukũ " + - "ya ngũgĩ\x06Ĩthaa\x07Ndagika\x10Gũntũ kwa thaa\x06zanvie\x07fevriye\x04m" + - "ars\x05avril\x02me\x03zin\x05zilye\x03out\x06septam\x05oktob\x05novam" + - "\x05desam\x03dim\x03lin\x03mar\x03mer\x02ze\x03van\x03sam\x06dimans\x05l" + - "indi\x05mardi\x08merkredi\x04zedi\x08vandredi\x05samdi\x091e trimes\x0a2" + - "em trimes\x0a3em trimes\x0a4em trimes\x0favan Zezi-Krist\x0fapre Zezi-Kr" + - "ist\x07av. Z-K\x07ap. Z-K\x05Lepok\x04Lane\x03Mwa\x06Semenn\x04Zour\x03Y" + - "er\x05Zordi\x05Demin\x0dZour lasemenn\x13Peryod dan lazourne\x03Ler\x05M" + - "init\x06Segonn\x0cPeryod letan\x07Janoary\x08Febroary\x06Martsa\x06April" + - "y\x03Mey\x04Jona\x05Jolay\x09Aogositra\x09Septambra\x07Oktobra\x08Novamb" + - "ra\x08Desambra\x03Mey\x04Alah\x05Alats\x03Tal\x04Alar\x04Alak\x03Zom\x04" + - "Asab\x07Alahady\x0bAlatsinainy\x06Talata\x08Alarobia\x09Alakamisy\x04Zom" + - "a\x08Asabotsy\x14Telovolana voalohany\x12Telovolana faharoa\x13Telovolan" + - "a fahatelo\x14Telovolana fahefatra\x0dAlohan’i JK\x0dAorian’i JK\x05Taon" + - "a\x06Volana\x0aHerinandro\x05Andro\x05Omaly\x04Anio\x0aRahampitso\x07Min" + - "itra\x08Segondra\x03Kwa\x03Una\x03Rar\x03Che\x03Tha\x03Moc\x03Sab\x03Nan" + - "\x03Tis\x03Kum\x03Moj\x03Yel\x0fMweri wo kwanza\x10Mweri wo unayeli\x10M" + - "weri wo uneraru\x12Mweri wo unecheshe\x11Mweri wo unethanu\x17Mweri wo t" + - "hanu na mocha\x0dMweri wo saba\x0dMweri wo nane\x0dMweri wo tisa\x0dMwer" + - "i wo kumi\x15Mweri wo kumi na moja\x19Mweri wo kumi na yel’li\x03Jtt\x03" + - "Jnn\x03Jtn\x03Ara\x03Iju\x03Jmo\x06Sabato\x08Jumatatu\x07Jumanne\x08Juma" + - "tano\x09Arahamisi\x06Ijumaa\x08Jumamosi\x08wichishu\x0cmchochil’l\x0dHin" + - "apiya yesu\x0aYopia yesu\x02HY\x02YY\x09kal’lai\x04yaka\x05mweri\x0biwik" + - "i mocha\x06nihuku\x09n’chana\x08lel’lo\x08me’llo\x18nihuku no mwisho wa " + - "wiki\x04isaa\x07idakika\x08isekunde\x07mbegtug\x0dimeg àbùbì\x10imeg mbə" + - "ŋchubi\x0eiməg ngwə̀t\x09iməg fog\x0fiməg ichiibɔd\x13iməg àdùmbə̀ŋ\x0c" + - "iməg ichika\x09iməg kud\x0eiməg tèsiʼe\x09iməg zò\x0diməg krizmed\x0dimə" + - "g mbegtug\x06Aneg 1\x06Aneg 2\x06Aneg 3\x06Aneg 4\x06Aneg 5\x06Aneg 6" + - "\x06Aneg 7\x06fituʼ\x05iməg\x04nkap\x05anəg\x06ikwiri\x0btèchɔ̀ŋ\x03isu" + - "\x07isu ywi\x0eanəg agu nkap\x17EEEE, dd MMMM y 'г'. G\x11dd MMMM y 'г'." + - " G\x08dd.M.y G\x0cdd.M.y GGGGG\x07јан.\x07фев.\x07мар.\x07апр.\x06мај" + - "\x07јун.\x07јул.\x07авг.\x09септ.\x07окт.\x09ноем.\x07дек.\x0eјануари" + - "\x10февруари\x08март\x0aаприл\x08јуни\x08јули\x0cавгуст\x12септември\x10" + - "октомври\x0eноември\x10декември\x07нед.\x07пон.\x05вт.\x07сре.\x07чет." + - "\x07пет.\x07саб.\x07вто.\x0cнедела\x14понеделник\x0eвторник\x0aсреда\x10" + - "четврток\x0aпеток\x0cсабота\x0dјан-мар\x0dапр-јун\x0dјул-сеп\x0dокт-дек" + - "\x1dпрво тромесечје\x1fвторо тромесечје\x1fтрето тромесечје#четврто тром" + - "есечје\x0cполноќ\x0dпретпл.\x10напладне\x09попл.\x0cнаутро\x0eнавечер" + - "\x08ноќе\x09полн.\x09напл.\x08утро\x07веч.\x14претпладне\x10попладне\x11" + - "по полноќ\x0cпладне\x11на полноќ\x1cпред нашата ера\x18од нашата ера" + - "\x0cпр. н.е.\x06dd.M.y\x07dd.M.yy\x1dминатата година\x15оваа година\x1dс" + - "ледната година\x19пред {0} година\x19пред {0} години\x07год.\x14тромесе" + - "чје)последното тромесечје\x1bова тромесечје%следното тромесечје\x1dза {" + - "0} тромесечје\x1dза {0} тромесечја!пред {0} тромесечје!пред {0} тромесеч" + - "ја\x0dтромес.\x16за {0} тромес.\x1aпред {0} тромес.\x1bминатиот месец" + - "\x13овој месец\x1bследниот месец\x17пред {0} месец\x19пред {0} месеци" + - "\x1fминатата седмица\x17оваа седмица\x1fследната седмица\x17за {0} седми" + - "ца\x17за {0} седмици\x1bпред {0} седмица\x1bпред {0} седмици\x12{0} сед" + - "мица\x07сед.\x0eзавчера\x0aвчера\x0aденес\x08утре\x0eзадутре\x0fза {0} " + - "ден\x11за {0} дена\x13пред {0} ден\x15пред {0} дена\x1cден во неделата" + - "\x1dминатата недела\x15оваа недела\x1dследната недела\x15за {0} недела" + - "\x15за {0} недели\x19пред {0} недела\x19пред {0} недели%минатиот понедел" + - "ник\x1dовој понеделник%следниот понеделник\x1dза {0} понеделник\x1fза {" + - "0} понеделници!пред {0} понеделник#пред {0} понеделници\x1fминатиот втор" + - "ник\x17овој вторник\x1fследниот вторник\x17за {0} вторник\x19за {0} вто" + - "рници\x1bпред {0} вторник\x1dпред {0} вторници\x0dмин. вт.\x1bминатата " + - "среда\x13оваа среда\x1bследната среда\x13за {0} среда\x13за {0} среди" + - "\x17пред {0} среда\x17пред {0} среди!минатиот четврток\x19овој четврток!" + - "следниот четврток\x19за {0} четврток\x1bза {0} четвртоци\x1dпред {0} че" + - "тврток\x1fпред {0} четвртоци\x1bминатиот петок\x13овој петок\x1bследнио" + - "т петок\x13за {0} петок\x15за {0} петоци\x19пред {0} петоци\x1dминатата" + - " сабота\x15оваа сабота\x1dследната сабота\x15за {0} сабота\x15за {0} саб" + - "оти\x19пред {0} сабота\x19пред {0} саботи%претпладне/попладне\x0aчасов" + - "\x0fза {0} час\x11за {0} часа\x13пред {0} час\x15пред {0} часа\x15оваа м" + - "инута\x19пред {0} минута\x19пред {0} минути\x17за {0} секунда\x17за {0}" + - " секунди\x1bпред {0} секунда\x1bпред {0} секунди\x1bвременска зона\x13Вр" + - "еме во {0}\x08{0} (+1)\x08{0} (+0):Координирано универзално време(Брита" + - "нско летно време*Ирско стандардно време6Акре летно сметање на времетоPЗ" + - "ападноафриканско летно сметање на времето?Летно сметање на времето во А" + - "љаска?Летно сметање на времето во Амазон@Централно летно сметање на вре" + - "мето<Источно летно сметање на времето@Планинско летно сметање на времет" + - "о@Пацифичко летно сметање на времето(Анадирско летно време%Летно време " + - "во Апија<Арапско летно сметање на времетоEЛетно сметање на времето во А" + - "ргентинаTЛетно сметање на времето во западна Аргентина+Летно време во Е" + - "рменија@Атлантско летно сметање на времетоZЛетно сметање на времето во " + - "Централна АвстралијаlЛетно сметање на времето во Централна и Западна Ав" + - "стралијаVЛетно сметање на времето во Источна АвстралијаVЛетно сметање н" + - "а времето во Западна Австралија/Летно време во Азербејџан'Летно време в" + - "о Азорес-Летно време во БангладешEЛетно сметање на времето во Бразилија" + - "3Летно време на Зелениот ‘Рт=Летно сметање на времето во Четем;Летно сме" + - "тање на времето во Чиле;Летно сметање на времето во Кина-Летно време во" + - " ЧојбалсанEЛетно сметање на времето во Колумбија4Летно време на Островит" + - "е Кук;Летно сметање на времето во КубаBЛетно време на Велигденскиот Ост" + - "ров2Средноевропско летно време4Источноевропско летно време4Западноевроп" + - "ско летно време\\Летно сметање на времето на Фолкландските Острови#Летн" + - "о време во Фиџи)Летно време во ГрузијаRЛетно сметање на времето во Исто" + - "чен ГренландRЛетно сметање на времето во Западен Гренланд_Летно сметање" + - " на времето во Хаваи - Алеутски острови,Летно време во Хонг Конг#Летно в" + - "реме во Ховд;Летно сметање на времето во Иран)Летно време во Иркутск?Ле" + - "тно сметање на времето во ИзраелCЛетно сметање на времето во Јапонија?Л" + - "етно сметање на времето во Кореја1Летно време во КраснојарскBЛетно смет" + - "ање на времето во Лорд Хау)Летно време во МагаданEЛетно сметање на врем" + - "ето на Маврициус\\Летно сметање на времето во северозападно МексикоBЛет" + - "но тихоокеанско време во Мексико.Летно време во Улан Батор?Летно сметањ" + - "е на времето во Москва8Летно време во Нова КаледонијаFЛетно сметање на " + - "времето во Нов ЗеландIЛетно сметање на времето на ЊуфаундлендUЛетно сме" + - "тање на времето на Фернандо де Нороња1Летно време во Новосибирск#Летно " + - "време во Омск+Летно време во ПакистанCЛетно сметање на времето во Параг" + - "вај;Летно сметање на времето во Перу+Летно време во ФилипиниVЛетно смет" + - "ање на времето на Сент Пјер и Микелан)Летно време во Сакалин:Самара лет" + - "но сметање на времето%Летно време во Самоа?Летно сметање на времето во " + - "Таипеи%Летно време во Тонга3Летно време во ТуркменистанAЛетно сметање н" + - "а времето во Уругвај/Летно време во Узбекистан)Летно време во Вануату1Л" + - "етно време во ВладивостокEЛетно сметање на времето во Волгоград)Летно в" + - "реме во Јакутск3Летно време во Екатеринбург\x07феб.\x08март\x07апр.\x06" + - "мај\x06јун\x06јул\x07авг.\x07окт.\x07нов.\x07дец.\x05ут.\x05ср.\x07суб." + - "\x03Muk\x03Dun\x03Mar\x03Mod\x03Jol\x03Ped\x03Sok\x03Tib\x03Lab\x03Poo" - -var bucket70 string = "" + // Size: 27713 bytes - "\x11G y, MMMM d, EEEE\x0bG y, MMMM d\x0aG y, MMM d\x09ജനു\x12ഫെബ്രു\x09മ" + - "ാർ\x0fഏപ്രി\x0cമേയ്\x09ജൂൺ\x0cജൂലൈ\x06ഓഗ\x18സെപ്റ്റം\x0fഒക്ടോ\x09നവം" + - "\x0cഡിസം\x03ജ\x03ഫ\x06മാ\x03ഏ\x06മെ\x06ജൂ\x03ഓ\x06സെ\x03ഒ\x03ന\x06ഡി\x12" + - "ജനുവരി\x1bഫെബ്രുവരി\x15മാർച്ച്\x12ഏപ്രിൽ\x18ഓഗസ്റ്റ്\x1eസെപ്റ്റംബർ\x18" + - "ഒക്\u200cടോബർ\x0fനവംബർ\x12ഡിസംബർ\x06ഫെ\x0cഞായർ\x12തിങ്കൾ\x0fചൊവ്വ\x0cബ" + - "ുധൻ\x12വ്യാഴം\x12വെള്ളി\x09ശനി\x03ഞ\x06തി\x06ചൊ\x06ബു\x0cവ്യാ\x06വെ" + - "\x03ശ\x06ഞാ\x1bഞായറാഴ്\u200cച!തിങ്കളാഴ്\u200cച\x1bചൊവ്വാഴ്ച\x1bബുധനാഴ്" + - "\u200cച\x1eവ്യാഴാഴ്\u200cച$വെള്ളിയാഴ്\u200cച\x1bശനിയാഴ്\u200cച\x1eചൊവ്വാ" + - "ഴ്\u200cച\x1fഒന്നാം പാദം\x1fരണ്ടാം പാദം\x22മൂന്നാം പാദം\x1cനാലാം പാദം!" + - "അർദ്ധരാത്രി\x0cഉച്ച\x18പുലർച്ചെ\x12രാവിലെ\x1eഉച്ചയ്ക്ക്$ഉച്ചതിരിഞ്ഞ്" + - "\x1eവൈകുന്നേരം\x12സന്ധ്യ\x12രാത്രി\x03അ\x12ഉച്ചയ്\x12ഉച്ചതി\x06വൈ:ക്രിസ്" + - "\u200cതുവിന് മുമ്പ്\x12ബി.സി.ഇ.\x22ആന്നോ ഡൊമിനി\x0bസി.ഇ.\x14ക്രി.മു.\x0f" + - "ബിസിഇ\x09എഡി\x09സിഇ\x0fy, MMMM d, EEEE\x09y, MMMM d\x08y, MMM d\x12ചൈത" + - "്രം\x12വൈശാഖം\x18ജ്യേഷ്ഠം\x0fആഷാഢം\x15ശ്രാവണം\x1bഭാദ്രപാദം\x15ആശ്വിനം" + - "\x1bകാർത്തികം\x1bമാർഗശീർഷം\x0cപൗഷം\x0cമാഘം\x12ഫൽഗുനം\x06ചൈ\x0cജ്യേ\x03ആ" + - "\x0cശ്രാ\x06ഭാ\x06കാ\x06പൗ\x06ശക\x0fമുഹറം\x09സഫർ\x22റബീഹുൽ അവ്വൽ\x1fറബീഹ" + - "ുൽ ആഖിർ\x22ജമാദുൽ അവ്വൽ\x1fജമാദുൽ ആഖിർ\x0cറജബ്\x0fശഹബാൻ\x0fറമളാൻ\x12ശവ" + - "്വാൽ\x16ദുൽ ഖഹദ്\x19ദുൽ ഹിജ്ജ\x06മു\x03സ\x03റ\x06ദു\x0cഹിജറ\x18കാലഘട്ട" + - "ം\x0cവർഷം\x1fകഴിഞ്ഞ വർഷം\x13ഈ വർ\u200cഷം\x1eഅടുത്തവർഷം\x1c{0} വർഷത്തിൽ" + - "#{0} വർഷം മുമ്പ്\x04വ.\x0cപാദം\x1fകഴിഞ്ഞ പാദം\x10ഈ പാദം\x1fഅടുത്ത പാദം" + - "\x1c{0} പാദത്തിൽ#{0} പാദം മുമ്പ്\x0cമാസം\x1fകഴിഞ്ഞ മാസം\x10ഈ മാസം\x1fഅടു" + - "ത്ത മാസം\x1c{0} മാസത്തിൽ#{0} മാസം മുമ്പ്\x07മാ.\x0cആഴ്ച\x22കഴിഞ്ഞ ആഴ്" + - "\u200cച\x10ഈ ആഴ്ച\x1fഅടുത്ത ആഴ്ച\x19{0} ആഴ്ചയിൽ#{0} ആഴ്ച മുമ്പ്#{0} വരുന" + - "്ന ആഴ്ച\x04ആ.\x0fദിവസം$മിനിഞ്ഞാന്ന്\x12ഇന്നലെ\x0fഇന്ന്\x0cനാളെ\x1bമറ്റ" + - "ന്നാൾ\x1f{0} ദിവസത്തിൽ&{0} ദിവസം മുമ്പ്(ആഴ്ചയിലെ ദിവസം+കഴിഞ്ഞ ഞായറാഴ്ച" + - "\x1cഈ ഞായറാഴ്ച+അടുത്ത ഞായറാഴ്ച%{0} ഞായറാഴ്ചയിൽ/{0} ഞായറാഴ്ച മുമ്പ്\x1fകഴ" + - "ിഞ്ഞ ഞായർ\x10ഈ ഞായർ\x1fഅടുത്ത ഞായർ1കഴിഞ്ഞ തിങ്കളാഴ്ച\x22ഈ തിങ്കളാഴ്ച1അ" + - "ടുത്ത തിങ്കളാഴ്ച+{0} തിങ്കളാഴ്ചയിൽ5{0} തിങ്കളാഴ്ച മുമ്പ്%കഴിഞ്ഞ തിങ്കൾ" + - "\x16ഈ തിങ്കൾ%അടുത്ത തിങ്കൾ.കഴിഞ്ഞ ചൊവ്വാഴ്ച\x1fഈ ചൊവ്വാഴ്ച.അടുത്ത ചൊവ്വാ" + - "ഴ്ച({0} ചൊവ്വാഴ്ചയിൽ2{0} ചൊവ്വാഴ്ച മുമ്പ്\x22കഴിഞ്ഞ ചൊവ്വ\x13ഈ ചൊവ്വ" + - "\x22അടുത്ത ചൊവ്വ+കഴിഞ്ഞ ബുധനാഴ്ച\x1cഈ ബുധനാഴ്ച+അടുത്ത ബുധനാഴ്ച%{0} ബുധനാ" + - "ഴ്ചയിൽ/{0} ബുധനാഴ്ച മുമ്പ്\x1fകഴിഞ്ഞ ബുധൻ\x10ഈ ബുധൻ\x1fഅടുത്ത ബുധൻ.കഴി" + - "ഞ്ഞ വ്യാഴാഴ്ച\x1fഈ വ്യാഴാഴ്ച.അടുത്ത വ്യാഴാഴ്ച({0} വ്യാഴാഴ്ചയിൽ2{0} വ്യ" + - "ാഴാഴ്ച മുമ്പ്%കഴിഞ്ഞ വ്യാഴം\x16ഈ വ്യാഴം%അടുത്ത വ്യാഴം4കഴിഞ്ഞ വെള്ളിയാഴ" + - "്ച%ഈ വെള്ളിയാഴ്ച4അടുത്ത വെള്ളിയാഴ്ച.{0} വെള്ളിയാഴ്ചയിൽ8{0} വെള്ളിയാഴ്ച" + - " മുമ്പ്%കഴിഞ്ഞ വെള്ളി\x16ഈ വെള്ളി%അടുത്ത വെള്ളി+കഴിഞ്ഞ ശനിയാഴ്ച\x1cഈ ശനി" + - "യാഴ്ച+അടുത്ത ശനിയാഴ്ച%{0} ശനിയാഴ്ചയിൽ/{0} ശനിയാഴ്ച മുമ്പ്\x1cകഴിഞ്ഞ ശന" + - "ി\x0dഈ ശനി\x1cഅടുത്ത ശനി\x18മണിക്കൂർ\x22ഈ മണിക്കൂറിൽ\x22{0} മണിക്കൂറിൽ" + - "/{0} മണിക്കൂർ മുമ്പ്\x04മ.\x18മിനിറ്റ്\x1fഈ മിനിറ്റിൽ\x1f{0} മിനിറ്റിൽ/{" + - "0} മിനിറ്റ് മുമ്പ്\x07മി.\x18സെക്കൻഡ്\x12ഇപ്പോൾ\x1f{0} സെക്കൻഡിൽ/{0} സെക" + - "്കൻഡ് മുമ്പ്\x07സെ.\x16സമയ മേഖല\x10{0} സമയം){0} ഡേലൈറ്റ് സമയം5{0} സ്റ്" + - "റാൻഡേർഡ് സമയംPകോർഡിനേറ്റഡ് യൂണിവേഴ്\u200cസൽ ടൈംMബ്രിട്ടീഷ് ഗ്രീഷ്" + - "\u200cമകാല സമയംAഐറിഷ് സ്റ്റാൻഡേർഡ് സമയം\x22എയ്ക്കർ സമയംGഎയ്ക്കർ സ്റ്റാൻഡ" + - "േർഡ് സമയം>എയ്ക്കർ വേനൽക്കാല സമയം4അഫ്\u200cഗാനിസ്ഥാൻ സമയം2മധ്യ ആഫ്രിക്ക" + - " സമയം;കിഴക്കൻ ആഫ്രിക്ക സമയം\\ദക്ഷിണാഫ്രിക്ക സ്റ്റാൻഡേർഡ് സമയംAപടിഞ്ഞാറൻ " + - "ആഫ്രിക്ക സമയംfപടിഞ്ഞാറൻ ആഫ്രിക്ക സ്റ്റാൻഡേർഡ് സമയംcപടിഞ്ഞാറൻ ആഫ്രിക്ക " + - "ഗ്രീഷ്\u200cമകാല സമയം\x22അലാസ്\u200cക സമയംDഅലാസ്ക സ്റ്റാൻഡേർഡ് സമയം;അല" + - "ാസ്\u200cക ഡേലൈറ്റ് സമയം\x1cഅൽമതി സമയംAഅൽമതി സ്റ്റാൻഡേർഡ് സമയം8അൽമതി വ" + - "േനൽക്കാല സമയം\x1cആമസോൺ സമയംAആമസോൺ സ്റ്റാൻഡേർഡ് സമയം>ആമസോൺ ഗ്രീഷ്\u200c" + - "മകാല സമയംQവടക്കെ അമേരിക്കൻ സെൻട്രൽ സമയംvവടക്കെ അമേരിക്കൻ സെൻട്രൽ സ്റ്റ" + - "ാൻഡേർഡ് സമയംjവടക്കെ അമേരിക്കൻ സെൻട്രൽ ഡേലൈറ്റ് സമയംQവടക്കെ അമേരിക്കൻ ക" + - "ിഴക്കൻ സമയംvവടക്കെ അമേരിക്കൻ കിഴക്കൻ സ്റ്റാൻഡേർഡ് സമയംjവടക്കെ അമേരിക്ക" + - "ൻ കിഴക്കൻ ഡേലൈറ്റ് സമയംNവടക്കെ അമേരിക്കൻ മൌണ്ടൻ സമയംsവടക്കെ അമേരിക്കൻ " + - "മൗണ്ടൻ സ്റ്റാൻഡേർഡ് സമയംgവടക്കെ അമേരിക്കൻ മൗണ്ടൻ ഡേലൈറ്റ് സമയംNവടക്കെ " + - "അമേരിക്കൻ പസഫിക് സമയംsവടക്കെ അമേരിക്കൻ പസഫിക് സ്റ്റാൻഡേർഡ് സമയംgവടക്കെ" + - " അമേരിക്കൻ പസഫിക് ഡേലൈറ്റ് സമയം\x1fഅനാഡിർ സമയംDഅനാഡിർ സ്റ്റാൻഡേർഡ് സമയം;" + - "അനാഡിർ വേനൽക്കാല സമയം\x19അപിയ സമയം>അപിയ സ്റ്റാൻഡേർഡ് സമയം2അപിയ ഡേലൈറ്റ" + - "് സമയം\x1cഅഖ്തൌ സമയംAഅഖ്തൌ സ്റ്റാൻഡേർഡ് സമയം8അഖ്തൌ വേനൽക്കാല സമയം\x22അ" + - "ഖ്തോബ് സമയംGഅഖ്തോബ് സ്റ്റാൻഡേർഡ് സമയം>അഖ്തോബ് വേനൽക്കാല സമയം\x22അറേബ്യ" + - "ൻ സമയംGഅറേബ്യൻ സ്റ്റാൻഡേർഡ് സമയം;അറേബ്യൻ ഡേലൈറ്റ് സമയം%അർജന്റീന സമയംJഅ" + - "ർജന്റീന സ്റ്റാൻഡേർഡ് സമയംGഅർജന്റീന ഗ്രീഷ്\u200cമകാല സമയംAപടിഞ്ഞാറൻ അർജ" + - "ന്റീന സമയംfപടിഞ്ഞാറൻ അർജന്റീന സ്റ്റാൻഡേർഡ് സമയംcപടിഞ്ഞാറൻ അർജന്റീന ഗ്ര" + - "ീഷ്\u200cമകാല സമയം\x22അർമേനിയ സമയംGഅർമേനിയ സ്റ്റാൻഡേർഡ് സമയംDഅർമേനിയ ഗ" + - "്രീഷ്\u200cമകാല സമയം7അറ്റ്\u200cലാന്റിക് സമയം\\അറ്റ്\u200cലാന്റിക് സ്റ" + - "്റാൻഡേർഡ് സമയംPഅറ്റ്\u200cലാന്റിക് ഡേലൈറ്റ് സമയംAസെൻട്രൽ ഓസ്ട്രേലിയ സമ" + - "യംiഓസ്ട്രേലിയൻ സെൻട്രൽ സ്റ്റാൻഡേർഡ് സമയം]ഓസ്ട്രേലിയൻ സെൻട്രൽ ഡേലൈറ്റ് " + - "സമയം`ഓസ്ട്രേലിയൻ സെൻട്രൽ പടിഞ്ഞാറൻ സമയം\x85ഓസ്ട്രേലിയൻ സെൻട്രൽ പടിഞ്ഞാ" + - "റൻ സ്റ്റാൻഡേർഡ് സമയംyഓസ്ട്രേലിയൻ സെൻട്രൽ പടിഞ്ഞാറൻ ഡേലൈറ്റ് സമയംDകിഴക്" + - "കൻ ഓസ്\u200cട്രേലിയ സമയംlഓസ്\u200cട്രേലിയൻ കിഴക്കൻ സ്റ്റാൻഡേർഡ് സമയം`ഓ" + - "സ്\u200cട്രേലിയൻ കിഴക്കൻ ഡേലൈറ്റ് സമയംJപടിഞ്ഞാറൻ ഓസ്\u200cട്രേലിയ സമയം" + - "rഓസ്\u200cട്രേലിയൻ പടിഞ്ഞാറൻ സ്റ്റാൻഡേർഡ് സമയംfഓസ്\u200cട്രേലിയൻ പടിഞ്ഞാ" + - "റൻ ഡേലൈറ്റ് സമയം%അസർബൈജാൻ സമയംJഅസർബൈജാൻ സ്റ്റാൻഡേർഡ് സമയംGഅസർബൈജാൻ ഗ്ര" + - "ീഷ്\u200cമകാല സമയം\x1fഅസോർസ് സമയംDഅസോർസ് സ്റ്റാൻഡേർഡ് സമയംAഅസോർസ് ഗ്രീ" + - "ഷ്\u200cമകാല സമയം+ബംഗ്ലാദേശ് സമയംPബംഗ്ലാദേശ് സ്റ്റാൻഡേർഡ് സമയംMബംഗ്ലാദ" + - "േശ് ഗ്രീഷ്\u200cമകാല സമയം\x22ഭൂട്ടാൻ സമയം\x22ബൊളീവിയ സമയം%ബ്രസീലിയ സമയ" + - "ംJബ്രസീലിയ സ്റ്റാൻഡേർഡ് സമയംGബ്രസീലിയ ഗ്രീഷ്\u200cമകാല സമയം>ബ്രൂണൈ ദാറ" + - "ുസ്സലാം സമയം)കേപ് വെർദെ സമയംNകേപ് വെർദെ സ്റ്റാൻഡേർഡ് സമയംKകേപ് വെർദെ ഗ" + - "്രീഷ്\u200cമകാല സമയംAചമോറോ സ്റ്റാൻഡേർഡ് സമയം\x1fചാത്തം സമയംDചാത്തം സ്റ" + - "്റാൻഡേർഡ് സമയംAചാത്തം ഗ്രീഷ്\u200cമകാല സമയം\x19ചിലി സമയം>ചിലി സ്റ്റാൻഡ" + - "േർഡ് സമയം;ചിലി ഗ്രീഷ്\u200cമകാല സമയം\x16ചൈന സമയം;ചൈന സ്റ്റാൻഡേർഡ് സമയം" + - "/ചൈന ഡേലൈറ്റ് സമയം+ചോയി\u200dബൽസാൻ സമയംPചോയ്\u200cബൽസാൻ സ്റ്റാൻഡേർഡ് സമയ" + - "ംJചോയിബൽസാൻ ഗ്രീഷ്\u200cമകാല സമയം>ക്രിസ്\u200cമസ് ദ്വീപ് സമയം>കൊക്കോസ്" + - " ദ്വീപുകൾ സമയം\x22കൊളംബിയ സമയംGകൊളംബിയ സ്റ്റാൻഡേർഡ് സമയംDകൊളംബിയ ഗ്രീഷ്" + - "\u200cമകാല സമയം8കുക്ക് ദ്വീപുകൾ സമയം]കുക്ക് ദ്വീപുകൾ സ്റ്റാൻഡേർഡ് സമയംjക" + - "ുക്ക് ദ്വീപുകൾ അർദ്ധ ഗ്രീഷ്\u200cമകാല സമയം\x1cക്യൂബ സമയംAക്യൂബ സ്റ്റാൻ" + - "ഡേർഡ് സമയം5ക്യൂബ ഡേലൈറ്റ് സമയം\x1fഡേവിസ് സമയംEഡുമോണ്ട് ഡി ഉർവില്ലെ സമയ" + - "ം2കിഴക്കൻ തിമോർ സമയം5ഈസ്റ്റർ ദ്വീപ് സമയംZഈസ്റ്റർ ദ്വീപ് സ്റ്റാൻഡേർഡ് സ" + - "മയംWഈസ്റ്റർ ദ്വീപ് ഗ്രീഷ്\u200cമകാല സമയം\x22ഇക്വഡോർ സമയം;സെൻട്രൽ യൂറോപ" + - "്യൻ സമയം`സെൻട്രൽ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയംZസെൻട്രൽ യൂറോപ്യൻ ഗ്രീഷ്മകാ" + - "ല സമയം;കിഴക്കൻ യൂറോപ്യൻ സമയം`കിഴക്കൻ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയംZകിഴക്ക" + - "ൻ യൂറോപ്യൻ ഗ്രീഷ്മകാല സമയംSകിഴക്കേയറ്റത്തെ യൂറോപ്യൻ സമയംAപടിഞ്ഞാറൻ യൂറ" + - "ോപ്യൻ സമയംfപടിഞ്ഞാറൻ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയംcപടിഞ്ഞാറൻ യൂറോപ്യൻ ഗ്ര" + - "ീഷ്\u200cമകാല സമയംJഫാക്ക്\u200cലാൻഡ് ദ്വീപുകൾ സമയംoഫാക്ക്\u200cലാൻഡ് ദ" + - "്വീപുകൾ സ്റ്റാൻഡേർഡ് സമയംlഫാക്ക്\u200cലാൻഡ് ദ്വീപുകൾ ഗ്രീഷ്\u200cമകാല " + - "സമയം\x19ഫിജി സമയം>ഫിജി സ്റ്റാൻഡേർഡ് സമയം;ഫിജി ഗ്രീഷ്\u200cമകാല സമയം/ഫ്" + - "രഞ്ച് ഗയാന സമയംUഫ്രഞ്ച് സതേൺ, അന്റാർട്ടിക് സമയം+ഗാലപ്പഗോസ് സമയം%ഗാമ്പി" + - "യർ സമയം%ജോർജ്ജിയ സമയംJജോർജ്ജിയ സ്റ്റാൻഡേർഡ് സമയംGജോർജ്ജിയ ഗ്രീഷ്\u200c" + - "മകാല സമയംDഗിൽബേർട്ട് ദ്വീപുകൾ സമയം8ഗ്രീൻവിച്ച് മീൻ സമയംAകിഴക്കൻ ഗ്രീൻല" + - "ാൻഡ് സമയംfകിഴക്കൻ ഗ്രീൻലാൻഡ് സ്റ്റാൻഡേർഡ് സമയംcകിഴക്കൻ ഗ്രീൻലാൻഡ് ഗ്രീ" + - "ഷ്\u200cമകാല സമയംGപടിഞ്ഞാറൻ ഗ്രീൻലാൻഡ് സമയംlപടിഞ്ഞാറൻ ഗ്രീൻലാൻഡ് സ്റ്റ" + - "ാൻഡേർഡ് സമയംiപടിഞ്ഞാറൻ ഗ്രീൻലാൻഡ് ഗ്രീഷ്\u200cമകാല സമയംAഗ്വാം സ്റ്റാൻഡ" + - "േർഡ് സമയം>ഗൾഫ് സ്റ്റാൻഡേർഡ് സമയം\x19ഗയാന സമയം2ഹവായ്-അലൂഷ്യൻ സമയംWഹവായ്" + - "-അലൂഷ്യൻ സ്റ്റാൻഡേർഡ് സമയംKഹവായ്-അലൂഷ്യൻ ഡേലൈറ്റ് സമയം+ഹോങ്കോങ്ങ് സമയംPഹ" + - "ോങ്കോങ്ങ് സ്റ്റാൻഡേർഡ് സമയംMഹോങ്കോങ്ങ് ഗ്രീഷ്\u200cമകാല സമയം\x19ഹോഡ് സ" + - "മയം>ഹോഡ് സ്റ്റാൻഡേർഡ് സമയം;ഹോഡ് ഗ്രീഷ്\u200cമകാല സമയംGഇന്ത്യൻ സ്റ്റാൻഡ" + - "േർഡ് സമയം>ഇന്ത്യൻ മഹാസമുദ്ര സമയം\x22ഇൻഡോചൈന സമയം8മധ്യ ഇന്തോനേഷ്യ സമയംA" + - "കിഴക്കൻ ഇന്തോനേഷ്യ സമയംGപടിഞ്ഞാറൻ ഇന്തോനേഷ്യ സമയം\x19ഇറാൻ സമയം>ഇറാൻ സ്" + - "റ്റാൻഡേർഡ് സമയം2ഇറാൻ ഡേലൈറ്റ് സമയം\x22ഇർകസ്ക് സമയംGഇർകസ്ക് സ്റ്റാൻഡേർഡ" + - "് സമയംGഇർകസ്\u200cക് ഗ്രീഷ്\u200cമകാല സമയം%ഇസ്രായേൽ സമയംJഇസ്രായേൽ സ്റ്" + - "റാൻഡേർഡ് സമയം>ഇസ്രായേൽ ഡേലൈറ്റ് സമയം\x1fജപ്പാൻ സമയംDജപ്പാൻ സ്റ്റാൻഡേർഡ" + - "് സമയം8ജപ്പാൻ ഡേലൈറ്റ് സമയംYപെട്രോപാവ്\u200cലോസ്ക് കംചാസ്കി സമയം~പെട്ര" + - "ോപാവ്\u200cലോസ്ക് കംചാസ്കി സ്റ്റാൻഡേർഡ് സമയംuപെട്രോപാവ്\u200cലോസ്ക് കം" + - "ചാസ്കി വേനൽക്കാല സമയംAകിഴക്കൻ കസാഖിസ്ഥാൻ സമയംGപടിഞ്ഞാറൻ കസാഖിസ്ഥാൻ സമയ" + - "ം\x1fകൊറിയൻ സമയംDകൊറിയൻ സ്റ്റാൻഡേർഡ് സമയം8കൊറിയൻ ഡേലൈറ്റ് സമയം\x1cകൊസ്" + - "ര സമയം@ക്രാസ്\u200cനോയാർസ്\u200cക് സമയംeക്രാസ്\u200cനോയാർസ്\u200cക് സ്" + - "റ്റാൻഡേർഡ് സമയംbക്രാസ്\u200cനോയാർസ്\u200cക് ഗ്രീഷ്\u200cമകാല സമയം+കിർഗ" + - "ിസ്ഥാൻ സമയം\x19ലങ്ക സമയം/ലൈൻ ദ്വീപുകൾ സമയം)ലോർഡ് ഹോവ് സമയംNലോർഡ് ഹോവ് " + - "സ്റ്റാൻഡേർഡ് സമയംBലോർഡ് ഹോവ് ഡേലൈറ്റ് സമയം\x16മകൌ സമയം;മകൌ സ്റ്റാൻഡേർഡ" + - "് സമയം2മകൌ വേനൽക്കാല സമയം5മക്വാറി ദ്വീപ് സമയം\x1cമഗാദൻ സമയംAമഗാദൻ സ്റ്" + - "റാൻഡേർഡ് സമയം>മഗാദൻ ഗ്രീഷ്\u200cമകാല സമയം\x1fമലേഷ്യ സമയം1മാലിദ്വീപുകൾ " + - "സമയം%മർക്കസസ് സമയം5മാർഷൽ ദ്വീപുകൾ സമയം(മൗറീഷ്യസ് സമയംMമൗറീഷ്യസ് സ്റ്റാ" + - "ൻഡേർഡ് സമയംJമൗറീഷ്യസ് ഗ്രീഷ്\u200cമകാല സമയം\x19മാസൺ സമയംYവടക്കുപടിഞ്ഞാ" + - "റൻ മെക്സിക്കൻ സമയം\x81വടക്കുപടിഞ്ഞാറൻ മെക്\u200cസിക്കൻ സ്റ്റാൻഡേർഡ് സമ" + - "യംrവടക്കുപടിഞ്ഞാറൻ മെക്സിക്കൻ ഡേലൈറ്റ് സമയം>മെക്സിക്കൻ പസഫിക് സമയംfമെക" + - "്\u200cസിക്കൻ പസഫിക് സ്റ്റാൻഡേർഡ് സമയംWമെക്സിക്കൻ പസഫിക് ഡേലൈറ്റ് സമയം" + - "&ഉലൻ ബറ്റർ സമയംKഉലൻ ബറ്റർ സ്റ്റാൻഡേർഡ് സമയംHഉലൻ ബറ്റർ ഗ്രീഷ്\u200cമകാല സ" + - "മയം\x1fമോസ്കോ സമയംDമോസ്കോ സ്റ്റാൻഡേർഡ് സമയംDമോസ്\u200cകോ ഗ്രീഷ്\u200cമ" + - "കാല സമയം%മ്യാൻമാർ സമയം\x19നൗറു സമയം\x22നേപ്പാൾ സമയം5ന്യൂ കാലിഡോണിയ സമയ" + - "ംZന്യൂ കാലിഡോണിയ സ്റ്റാൻഡേർഡ് സമയംWന്യൂ കാലിഡോണിയ ഗ്രീഷ്\u200cമകാല സമയ" + - "ം.ന്യൂസിലാൻഡ് സമയംSന്യൂസിലാൻഡ് സ്റ്റാൻഡേർഡ് സമയംGന്യൂസിലാൻഡ് ഡേലൈറ്റ് " + - "സമയം@ന്യൂഫൗണ്ട്\u200cലാന്റ് സമയംeന്യൂഫൗണ്ട്\u200cലാന്റ് സ്റ്റാൻഡേർഡ് സ" + - "മയംYന്യൂഫൗണ്ട്\u200cലാന്റ് ഡേലൈറ്റ് സമയം\x1fന്യൂയി സമയംAനോർഫാക്ക് ദ്വീ" + - "പുകൾ സമയം<ഫെർണാഡോ ഡി നൊറോൻഹ സമയംaഫെർണാഡോ ഡി നൊറോൻഹ സ്റ്റാൻഡേർഡ് സമയം^ഫ" + - "െർണാഡോ ഡി നൊറോൻഹ ഗ്രീഷ്\u200cമകാല സമയംQനോർത്ത് മറിയാനാ ദ്വീപുകൾ സമയം7ന" + - "ോവോസിബിർസ്\u200cക് സമയംYനോവോസിബിർസ്ക് സ്റ്റാൻഡേർഡ് സമയംYനോവോസിബിർസ്" + - "\u200cക് ഗ്രീഷ്\u200cമകാല സമയം(ഓംസ്\u200cക്ക് സമയംMഓംസ്\u200cക്ക് സ്റ്റാ" + - "ൻഡേർഡ് സമയംJഓംസ്\u200cക്ക് ഗ്രീഷ്\u200cമകാല സമയം.പാക്കിസ്ഥാൻ സമയംSപാക്" + - "കിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയംPപാക്കിസ്ഥാൻ ഗ്രീഷ്\u200cമകാല സമയം\x1cപലാവു സ" + - "മയം?പാപ്പുവ ന്യൂ ഗിനിയ സമയം\x22പരാഗ്വേ സമയംGപരാഗ്വേ സ്റ്റാൻഡേർഡ് സമയംD" + - "പരാഗ്വേ ഗ്രീഷ്\u200cമകാല സമയം\x19പെറു സമയം>പെറു സ്റ്റാൻഡേർഡ് സമയം;പെറു" + - " ഗ്രീഷ്\u200cമകാല സമയം(ഫിലിപ്പൈൻ സമയംMഫിലിപ്പൈൻ സ്റ്റാൻഡേർഡ് സമയംJഫിലിപ്" + - "പൈൻ ഗ്രീഷ്\u200cമകാല സമയംAഫിനിക്\u200cസ് ദ്വീപുകൾ സമയംRസെന്റ് പിയറി ആൻ" + - "ഡ് മിക്വലൻ സമയംwസെന്റ് പിയറി ആൻഡ് മിക്വലൻ സ്റ്റാൻഡേർഡ് സമയംkസെന്റ് പിയ" + - "റി ആൻഡ് മിക്വലൻ ഡേലൈറ്റ് സമയം(പിറ്റ്കേൻ സമയം%പൊനാപ്പ് സമയം4പ്യോംഗ്" + - "\u200cയാംഗ് സമയം%ഖിസിലോർഡ സമയംJഖിസിലോർഡ സ്റ്റാൻഡേർഡ് സമയംAഖിസിലോർഡ വേനൽക" + - "്കാല സമയം%റീയൂണിയൻ സമയം\x1cറോഥെറ സമയം\x1fസഖാലിൻ സമയംDസഖാലിൻ സ്റ്റാൻഡേർ" + - "ഡ് സമയംAസഖാലിൻ ഗ്രീഷ്\u200cമകാല സമയം\x19സമാര സമയം>സമാറ സ്റ്റാൻഡേർഡ് സമ" + - "യം5സമാറ വേനൽക്കാല സമയം\x19സമോവ സമയം>സമോവ സ്റ്റാൻഡേർഡ് സമയം>സമോവാ ഗ്രീഷ" + - "്\u200cമകാല സമയം\x22സീഷെൽസ് സമയംMസിംഗപ്പൂർ സ്റ്റാൻഡേർഡ് സമയം5സോളമൻ ദ്വ" + - "ീപുകൾ സമയം;ദക്ഷിണ ജോർജ്ജിയൻ സമയം(സുരിനെയിം സമയം\x19സയോവ സമയം\x1fതാഹിതി" + - " സമയം(തായ്\u200cപെയ് സമയംMതായ്\u200cപെയ് സ്റ്റാൻഡേർഡ് സമയംAതായ്\u200cപെയ" + - "് ഡേലൈറ്റ് സമയം4താജിക്കിസ്ഥാൻ സമയം%ടോക്കെലൂ സമയം\x19ടോംഗ സമയം>ടോംഗ സ്റ" + - "്റാൻഡേർഡ് സമയം;ടോംഗ ഗ്രീഷ്\u200cമകാല സമയം\x1fചൂക്ക് സമയം@തുർക്ക്\u200c" + - "മെനിസ്ഥാൻ സമയംeതുർക്ക്\u200cമെനിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയംbതുർക്ക്\u200cമ" + - "െനിസ്ഥാൻ ഗ്രീഷ്\u200cമകാല സമയം\x1fടുവാലു സമയം\x22ഉറുഗ്വേ സമയംGഉറുഗ്വേ " + - "സ്റ്റാൻഡേർഡ് സമയംDഉറുഗ്വേ ഗ്രീഷ്\u200cമകാല സമയം:ഉസ്\u200cബെക്കിസ്ഥാൻ സ" + - "മയം_ഉസ്\u200cബെക്കിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയം\\ഉസ്\u200cബെക്കിസ്ഥാൻ ഗ്രീഷ" + - "്\u200cമകാല സമയം\x22വന്വാതു സമയംGവന്വാതു സ്റ്റാൻഡേർഡ് സമയംDവന്വാതു ഗ്ര" + - "ീഷ്\u200cമകാല സമയം(വെനിസ്വേല സമയം=വ്ലാഡിവോസ്റ്റോക് സമയംbവ്ലാഡിവോസ്റ്റോ" + - "ക് സ്റ്റാൻഡേർഡ് സമയം_വ്ലാഡിവോസ്റ്റോക് ഗ്രീഷ്\u200cമകാല സമയം.വോൾഗോഗ്രാഡ" + - "് സമയംSവോൾഗോഗ്രാഡ് സ്റ്റാൻഡേർഡ് സമയംPവോൾഗോഗ്രാഡ് ഗ്രീഷ്\u200cമകാല സമയം" + - "+വോസ്റ്റോക് സമയം2വേക്ക് ദ്വീപ് സമയംKവാലിസ് ആന്റ് ഫ്യൂച്യുന സമയം+യാകസ്" + - "\u200cക്ക് സമയംPയാകസ്\u200cക്ക് സ്റ്റാൻഡേർഡ് സമയംMയാകസ്\u200cക്ക് ഗ്രീഷ്" + - "\u200cമകാല സമയം=യെക്കാറ്റരിൻബർഗ് സമയംbയെക്കാറ്റരിൻബർഗ് സ്റ്റാൻഡേർഡ് സമയം" + - "_യെക്കാറ്റരിൻബർഗ് ഗ്രീഷ്\u200cമകാല സമയം" - -var bucket71 string = "" + // Size: 15224 bytes - "#EEEE, y 'оны' MM 'сарын' dd\x1dy 'оны' MM 'сарын' dd\x06y MM d\x0b1-р с" + - "ар\x0b2-р сар\x0b3-р сар\x0b4-р сар\x0b5-р сар\x0b6-р сар\x0b7-р сар" + - "\x0b8-р сар\x0b9-р сар\x0c10-р сар\x0c11-р сар\x0c12-р сар\x19Нэгдүгээр " + - "сар\x1bХоёрдугаар сар\x1dГуравдугаар сар\x1dДөрөвдүгээр сар\x19Тавдугаа" + - "р сар\x1dЗургадугаар сар\x19Долдугаар сар\x1bНаймдугаар сар\x17Есдүгээр" + - " сар\x1bАравдугаар сар$Арван нэгдүгээр сар&Арван хоёрдугаар сар\x04Ня" + - "\x04Да\x04Мя\x04Лх\x04Пү\x04Ба\x04Бя\x06ням\x0aдаваа\x0cмягмар\x0cлхагва" + - "\x0aпүрэв\x0cбаасан\x0aбямба\x03У1\x03У2\x03У3\x03У4\x111-р улирал\x112-" + - "р улирал\x113-р улирал\x114-р улирал\x11шөнө дунд\x04ҮӨ\x0dүд дунд\x04Ү" + - "Х\x0aөглөө\x08өдөр\x08орой\x08шөнө\x04үө\x04үд\x04үх\x05ү.ө\x05ү.х\x22м" + - "анай эриний өмнөх\x06НТӨ\x17манай эриний\x04НТ\x08м.э.ө\x06м.э.\x06МЭӨ" + - "\x04МЭ\x22EEEE, y 'оны' MM 'сарын' d&y'оны' MMMM'сарын' d'өдөр'\x08эрин" + - "\x06жил\x17өнгөрсөн жил\x0dэнэ жил\x0fирэх жил\x1b{0} жилийн дараа\x19{0" + - "} жилийн өмнө\x0d+{0} жилд\x17-{0} жил.н өмнө\x0cулирал\x1dөнгөрсөн улир" + - "ал\x13энэ улирал\x1fдараагийн улирал\x1d{0} улирлын дараа\x1b{0} улирлы" + - "н өмнө\x06сар\x17өнгөрсөн сар\x0dэнэ сар\x0fирэх сар\x19{0} сарын дараа" + - "\x17{0} сарын өмнө\x0d+{0} сард\x15долоо хоног&өнгөрсөн долоо хоног\x1cэ" + - "нэ долоо хоног\x1eирэх долоо хоног\x19{0} 7х-ийн дараа\x17{0} 7х-ийн өм" + - "нө {0} дэх долоо хоног\x037х\x10уржигдар\x0eөчигдөр\x0eөнөөдөр\x0eмарга" + - "аш\x10нөгөөдөр\x1b{0} өдрийн дараа\x19{0} өдрийн өмнө\x0e{0} өдөрт\x0aг" + - "араг\x22өнгөрсөн ням гараг\x18энэ ням гараг\x1aирэх ням гараг\x17{0} ня" + - "м гарагт${0} ням гарагийн өмнө\x18өнгөрсөн ням.\x0eэнэ ням.\x10ирэх ням" + - ".\x0dэнэ ням&өнгөрсөн даваа гараг\x1cэнэ даваа гараг\x1eирэх даваа гараг" + - "\x1b{0} даваа гарагт({0} даваа гарагийн өмнө\x1bөнгөрсөн даваа\x11энэ да" + - "ваа\x13ирэх даваа(өнгөрсөн мягмар гараг\x1eэнэ мягмар гараг ирэх мягмар" + - " гараг\x1d{0} мягмар гарагт*{0} мягмар гарагийн өмнө\x1dөнгөрсөн мягмар" + - "\x13энэ мягмар\x15ирэх мягмар(өнгөрсөн лхагва гараг\x1eэнэ лхагва гараг " + - "ирэх лхагва гараг\x1d{0} лхагва гарагт*{0} лхагва гарагийн өмнө\x1dөнгө" + - "рсөн лхагва\x13энэ лхагва\x15ирэх лхагва\x15өнгөрсөн лх\x0bэнэ лх\x0dир" + - "эх лх&өнгөрсөн пүрэв гараг\x1cэнэ пүрэв гараг\x1eирэх пүрэв гараг\x1b{0" + - "} пүрэв гарагт({0} пүрэв гарагийн өмнө\x1bөнгөрсөн пүрэв\x11энэ пүрэв" + - "\x13ирэх пүрэв\x15өнгөрсөн пү\x0bэнэ пү\x0dирэх пү(өнгөрсөн баасан гараг" + - "\x1eэнэ баасан гараг ирэх баасан гараг\x1d{0} баасан гарагт*{0} баасан г" + - "арагийн өмнө&өнгөрсөн бямба гараг\x1cэнэ бямба гараг\x1eирэх бямба гара" + - "г\x1b{0} бямба гарагт({0} бямба гарагийн өмнө\x1bөнгөрсөн бямба\x11энэ " + - "бямба\x13ирэх бямба\x0dү.ө./ү.х.\x06цаг\x0dэнэ цаг\x1b{0} цагийн дараа" + - "\x19{0} цагийн өмнө\x03ц.\x12{0} ц. дараа\x10{0} ц. өмнө\x11энэ минут" + - "\x1d{0} минутын дараа\x1b{0} минутын өмнө\x16{0} мин. дараа\x14{0} мин. " + - "өмнө\x08одоо\x1f{0} секундын дараа\x1d{0} секундын өмнө\x16{0} сек. дар" + - "аа\x14{0} сек. өмнө\x13цагийн бүс\x13{0}-н цагаар\x08{0} (+1)\x08{0} (+" + - "0)1Олон Улсын Зохицуулсан Цаг\x22Британийн зуны цаг(Ирландын стандарт ца" + - "г\x1dАфганистаны цаг\x1eТөв Африкийн цаг Зүүн Африкийн цаг3Өмнөд Африки" + - "йн стандарт цаг$Баруун Африкийн цаг5Баруун Африкийн стандарт цаг-Баруун" + - " Африкийн зуны цаг\x17Аляскийн цаг(Аляскийн стандарт цаг Аляскийн зуны ц" + - "аг\x15Амазоны цаг&Амазоны стандарт цаг\x1eАмазоны зуны цаг\x0dТөв цаг" + - "\x1eТөв стандарт цаг\x16Төв зуны цаг\x1cЗүүн эргийн цаг-Зүүн эргийн стан" + - "дарт цаг%Зүүн эргийн зуны цаг\x11Уулын цаг\x22Уулын стандарт цаг\x1aУул" + - "ын зуны цаг Номхон далайн цаг1Номхон далайн стандарт цаг)Номхон далайн " + - "зуны цаг\x17Апиагийн цаг(Апиагийн стандарт цаг Апиагийн зуны цаг\x13Ара" + - "бын цаг$Арабын стандарт цаг\x1cАрабын зуны цаг\x19Аргентины цаг*Аргенти" + - "ны стандарт цаг\x22Аргентины зуны цаг&Баруун Аргентины цаг7Баруун Арген" + - "тины стандарт цаг/Баруун Аргентины зуны цаг\x17Арменийн цаг(Арменийн ст" + - "андарт цаг Арменийн зуны цаг\x17Атлантын цаг(Атлантын стандарт цаг Атла" + - "нтын зуны цаг\x22Төв Австралийн цаг3Төв Австралийн стандарт цаг+Төв Авс" + - "тралийн зуны цаг<Австралийн төв баруун эргийн цагMАвстралийн төв баруун" + - " эргийн стандарт цагEАвстралийн төв баруун эргийн зуны цаг$Зүүн Австрали" + - "йн цагBАвстралийн зүүн эргийн стандарт цаг:Австралийн зүүн эргийн зуны " + - "цаг(Баруун Австралийн цагFАвстралийн баруун эргийн стандарт цаг>Австрал" + - "ийн баруун эргийн зуны цаг\x1dАзербайжаны цаг.Азербайжаны стандарт цаг&" + - "Азербайжаны зуны цаг\x13Азорын цаг$Азорын стандарт цаг\x1cАзорын зуны ц" + - "аг\x1fБангладешийн цаг0Бангладешийн стандарт цаг(Бангладешийн зуны цаг" + - "\x13Бутаны цаг\x17Боливийн цаг\x19Бразилийн цаг*Бразилийн стандарт цаг" + - "\x22Бразилийн зуны цаг,Бруней Дарассаламын цаг\x1eКэйп Вердийн цаг/Кэйп " + - "Вердийн стандарт цаг'Кэйп Вердийн зуны цаг\x1dЧаморрогийн цаг\x15Чатемы" + - "н цаг&Чатемын стандарт цаг\x1eЧатемын зуны цаг\x13Чилийн цаг$Чилийн ста" + - "ндарт цаг\x1cЧилийн зуны цаг\x15Хятадын цаг&Хятадын стандарт цаг\x1eХят" + - "адын зуны цаг!Чойбалсангийн цаг2Чойбалсангийн стандарт цаг*Чойбалсангий" + - "н зуны цаг Крисмас арлын цаг\x1cКокос арлын цаг\x17Колумбын цаг(Колумбы" + - "н стандарт цаг Колумбын зуны цаг\x1aКүүк арлын цаг+Күүк арлын стандарт " + - "цаг.Күүк арлын хагас зуны цаг\x11Кубын цаг\x22Кубын стандарт цаг\x1aКуб" + - "ын зуны цаг\x17Дэвисийн цаг'Дюмон д’Юрвилийн цаг\x1eЗүүн Тиморын цаг Зү" + - "үн Исландын цаг1Зүүн Исландын стандарт цаг)Зүүн Исландын зуны цаг\x19Эк" + - "вадорын цаг\x1cТөв Европын цаг-Төв Европын стандарт цаг%Төв Европын зун" + - "ы цаг\x1eЗүүн Европын цаг/Зүүн Европын стандарт цаг'Зүүн Европын зуны ц" + - "аг)Алс дорнод Европын цаг\x22Баруун Европын цаг3Баруун Европын стандарт" + - " цаг+Баруун Европын зуны цаг.Фолькландын Арлуудын цаг?Фолькландын Арлууд" + - "ын стандарт цаг7Фолькландын Арлуудын зуны цаг\x17Фижигийн цаг(Фижигийн " + - "стандарт цаг Фижигийн зуны цаг*Францын Гияанагийн цаг8Францын Өмнөд ба " + - "Антарктик цаг\x1dГалапагосын цаг\x1bГамбьегийн цаг\x15Гүржийн цаг&Гүржи" + - "йн стандарт цаг\x1eГүржийн зуны цаг Жильбер арлын цаг(Гринвичийн үндсэн" + - " цаг$Зүүн Гринландын цаг5Зүүн Гринландын стандарт цаг-Зүүн Гринландын зу" + - "ны цаг(Баруун Гринландын цаг9Баруун Гринландын стандарт цаг1Баруун Грин" + - "ландын зуны цаг(Гольфийн стандарт цаг\x1bГуяанагийн цаг Хавай-Алеутын ц" + - "аг1Хавай-Алеутын стандарт цаг)Хавай-Алеутын зуны цаг\x1eХонг Конгийн ца" + - "г/Хонг Конгийн стандарт цаг'Хонг Конгийн зуны цаг\x13Ховдын цаг$Ховдын " + - "стандарт цаг\x1cХовдын зуны цаг\x1bЭнэтхэгийн цаг(Энэтхэгийн далайн цаг" + - "3Энэтхэг-Хятадын хойгийн цаг\x22Төв Индонезийн цаг$Зүүн Индонезийн цаг(Б" + - "аруун Индонезийн цаг\x11Ираны цаг\x22Ираны стандарт цаг\x1aИраны зуны ц" + - "аг\x19Эрхүүгийн цаг*Эрхүүгийн стандарт цаг\x22Эрхүүгийн зуны цаг\x19Изр" + - "аилийн цаг*Израилийн стандарт цаг\x22Израилийн зуны цаг\x11Японы цаг" + - "\x22Японы стандарт цаг\x1aЯпоны зуны цаг$Зүүн Казахстаны цаг(Баруун Каза" + - "хстаны цаг\x1bСолонгосын цаг,Солонгосын стандарт цаг$Солонгосын зуны ца" + - "г\x19Косрэгийн цаг!Красноярскийн цаг2Красноярскийн стандарт цаг*Красноя" + - "рскийн зуны цаг\x1dКыргызстаны цаг\x1aЛайн арлын цаг\x1eЛорд Хоугийн ца" + - "г/Лорд Хоугийн стандарт цаг'Лорд Хоугийн зуны цаг\x22Маккуори Арлын цаг" + - "\x17Магаданы цаг(Магаданы стандарт цаг Магаданы зуны цаг\x17Малайзын цаг" + - "\x1bМальдивийн цаг\x1bМаркесасын цаг$Маршаллын арлын цаг\x1bМавритусын ц" + - "аг,Мавритусын стандарт цаг$Мавритусын зуны цаг\x15Моусоны цаг/Баруун хо" + - "йд Мексикийн цаг@Баруун хойд Мексикийн стандарт цаг8Баруун хойд Мексики" + - "йн зуны цаг3Мексикийн номхон далайн цагDМексикийн номхон далайн стандар" + - "т цаг<Мексикийн номхон далайн зуны цаг!Улаанбаатарын цаг2Улаанбаатарын " + - "стандарт цаг*Улаанбаатарын зуны цаг\x1bМосквагийн цаг,Москвагийн станда" + - "рт цаг$Москвагийн зуны цаг\x19Мьянмарын цаг\x19Науругийн цаг\x13Балбын " + - "цаг$Шинэ Каледонийн цаг5Шинэ Каледонийн стандарт цаг-Шинэ Каледонийн зу" + - "ны цаг Шинэ Зеландын цаг1Шинэ Зеландын стандарт цаг)Шинэ Зеландын зуны " + - "цаг$Нью-Фаундлендын цаг5Нью-Фаундлендын стандарт цаг-Нью-Фаундлендын зу" + - "ны цаг\x17Ниуэгийн цаг Норфолк арлын цаг1Фернандо де Норонагийн цагBФер" + - "нандо де Норонагийн стандарт цаг:Фернандо де Норонагийн зуны цаг#Новоси" + - "бирскийн цаг4Новосибирскийн стандарт цаг,Новосибирскийн зуны цаг\x15Омс" + - "кийн цаг&Омскийн стандарт цаг\x1eОмскийн зуны цаг\x19Пакистаны цаг*Паки" + - "станы стандарт цаг\x22Пакистаны зуны цаг\x19Палаугийн цаг)Папуа Шинэ Гв" + - "инейн цаг\x19Парагвайн цаг*Парагвайн стандарт цаг\x22Парагвайн зуны цаг" + - "\x17Перугийн цаг(Перугийн стандарт цаг Перугийн зуны цаг\x19Филиппины ца" + - "г*Филиппины стандарт цаг\x22Филиппины зуны цаг\x1eФеникс арлын цаг.Сент" + - "-Пьер ба Микелоны цагCСент-Пьерре ба Микелоны стандарт цаг7Сент-Пьер ба " + - "Микелоны зуны цаг\x1bПиткернийн цаг\x1bПонапегийн цаг\x17Пхеньяны цаг" + - "\x17Реюньоны цаг\x1bРотерагийн цаг\x17Сахалины цаг(Сахалины стандарт цаг" + - " Сахалины зуны цаг\x19Самоагийн цаг*Самоагийн стандарт цаг\x22Самоагийн " + - "зуны цаг\x19Сейшелийн цаг\x1bСингапурын цаг(Соломоны арлуудын цаг Өмнөд" + - " Жоржийн цаг\x19Суринамын цаг\x17Сёвагийн цаг\x19Таитигийн цаг\x15Тайпей" + - "н цаг&Тайпейн стандарт цаг\x1eТайпейн зуны цаг\x1dТажикистаны цаг\x1dТо" + - "келаугийн цаг\x19Тонгагийн цаг*Тонгагийн стандарт цаг\x22Тонгагийн зуны" + - " цаг\x15Чүүкийн цаг!Туркменистаны цаг2Туркменистаны стандарт цаг*Туркмен" + - "истаны зуны цаг\x1bТувалугийн цаг\x17Уругвайн цаг(Уругвайн стандарт цаг" + - " Уругвайн зуны цаг\x1dУзбекистаны цаг.Узбекистаны стандарт цаг&Узбекиста" + - "ны зуны цаг\x1dВануатугийн цаг.Вануатугийн стандарт цаг&Вануатугийн зун" + - "ы цаг\x1dВенесуэлийн цаг#Владивостокийн цаг4Владивостокийн стандарт цаг" + - ",Владивостокийн зуны цаг\x1dВолгоградын цаг.Волгоградын стандарт цаг&Вол" + - "гоградын зуны цаг\x19Востокийн цаг\x1aВейк арлын цаг-Уоллис ба Футунаги" + - "йн цаг\x13Якутын цаг$Якутын стандарт цаг\x1cЯкутын зуны цаг%Екатеринбур" + - "гийн цаг6Екатеринбургийн стандарт цаг.Екатеринбургийн зуны цаг" - -var bucket72 string = "" + // Size: 24118 bytes - "\x17{1} {0} वाजता\x0cजाने\x12फेब्रु\x0fमार्च\x0fएप्रि\x06मे\x09जून\x0cजु" + - "लै\x06ऑग\x12सप्टें\x0fऑक्टो\x15नोव्हें\x0fडिसें\x06जा\x06फे\x06मा\x03ए" + - "\x06जू\x06जु\x03ऑ\x03स\x06नो\x06डि\x0fमार्च\x06मे\x09जून\x0cजुलै\x09ति१" + - "\x09ति२\x09ति३\x09ति४\x03१\x03२\x03३\x03४\x22प्रथम तिमाही(द्वितीय तिमाही" + - "\x22तृतीय तिमाही%चतुर्थ तिमाही\x1bमध्यरात्र\x18मध्यान्ह\x08म.उ.\x0cपहाट" + - "\x0cसकाळ\x0fदुपार\x1bसंध्याकाळ\x15सायंकाळ\x0fरात्र\x0bम.रा.\x06दु\x06सं" + - "\x03प\x06सा\x06रा!ईसवीसनपूर्व\x22ईसापूर्व युग\x12ईसवीसन\x1eख्रिस्तयुग" + - "\x11इ. स. पू.\x1bइ. स. पू. युग\x09इ. स.\x15ख्रि. यु.\x14{1} रोजी {0}\x1c" + - "मागील वर्ष\x13हे वर्ष\x1cपुढील वर्ष\x22{0} वर्षामध्ये%{0} वर्षांमध्ये%" + - "{0} वर्षापूर्वी({0} वर्षांपूर्वी\x11+{0} वर्ष\x11-{0} वर्ष\x22मागील तिमा" + - "ही\x19ही तिमाही\x22पुढील तिमाही%{0} तिमाहीमध्ये({0} तिमाहींमध्ये({0} त" + - "िमाहीपूर्वी+{0} तिमाहींपूर्वी\x0fमहिना\x1fमागील महिना\x16हा महिना\x1fप" + - "ुढील महिना({0} महिन्यामध्ये+{0} महिन्यांमध्ये+{0} महिन्यापूर्वी.{0} मह" + - "िन्यांपूर्वी\x0fआठवडा\x1fमागील आठवडा\x16हा आठवडा\x1fपुढील आठवडा({0} आठ" + - "वड्यामध्ये+{0} आठवड्यांमध्ये+{0} आठवड्यापूर्वी.{0} आठवड्यांपूर्वी\x1a{" + - "0} चा आठवडा\x0cदिवस\x09काल\x06आज\x0fउद्या\x22{0} दिवसामध्ये%{0} दिवसांमध" + - "्ये%{0} दिवसापूर्वी({0} दिवसांपूर्वी(आठवड्याचा दिवस\x22मागील रविवार" + - "\x19हा रविवार\x22पुढील रविवार,येत्या {0} रविवारी)येत्या {0} रविवार)मागील" + - " {0} रविवारी&मागील {0} रविवार\x1aमागील रवि.\x11हा रवि.\x1aपुढील रवि.;येत" + - "्या {0} रविवारामध्ये>येत्या {0} रविवारांमध्ये({0} रविवारपूर्वी.{0} रवि" + - "वारांपूर्वी\x13मागील र\x0aहा र\x13पुढील र\x22मागील सोमवार\x19हा सोमवार" + - "\x22पुढील सोमवार,येत्या {0} सोमवारी({0} सोमवारपूर्वी.{0} सोमवारांपूर्वी" + - "\x1aमागील सोम.\x11हा सोम.\x1aपुढील सोम.)येत्या {0} सोमवार+{0} सोमवारापूर" + - "्वी\x16मागील सो\x0dहा सो\x16पुढील सो;येत्या {0} सोमवारामध्ये>येत्या {0" + - "} सोमवारांमध्ये%मागील मंगळवार\x1cहा मंगळवार%पुढील मंगळवार/येत्या {0} मंग" + - "ळवारी,येत्या {0} मंगळवार+{0} मंगळवारपूर्वी1{0} मंगळवारांपूर्वी\x1dमागी" + - "ल मंगळ.\x14हा मंगळ.\x1dपुढील मंगळ.;येत्या {0} मंगळवारमध्येAयेत्या {0} " + - "मंगळवारांमध्ये.{0} मंगळवारापूर्वी\x16मागील मं\x0dहा मं\x16पुढील मं>येत" + - "्या {0} मंगळवारामध्ये\x22मागील बुधवार\x19हा बुधवार\x22पुढील बुधवार,येत" + - "्या {0} बुधवारी)येत्या {0} बुधवार({0} बुधवारपूर्वी.{0} बुधवारांपूर्वी" + - "\x1aमागील बुध.\x11हा बुध.\x1aपुढील बुध.\x16मागील बु\x0dहा बु\x16पुढील बु" + - "%मागील गुरुवार\x1cहा गुरुवार%पुढील गुरुवार/येत्या {0} गुरूवारी,येत्या {0" + - "} गुरूवार+{0} गुरूवारपूर्वी1{0} गुरूवारांपूर्वी\x1dमागील गुरू.\x14हा गुर" + - "ू.\x1dपुढील गुरू.\x16मागील गु\x0dहा गु\x16पुढील गु(मागील शुक्रवार\x1fह" + - "ा शुक्रवार(पुढील शुक्रवार2येत्या {0} शुक्रवारी/येत्या {0} शुक्रवार.{0}" + - " शुक्रवारपूर्वी4{0} शुक्रवारांपूर्वी मागील शुक्र.\x17हा शुक्र. पुढील शुक" + - "्र.\x16मागील शु\x0dहा शु\x16पुढील शु\x22मागील शनिवार\x19हा शनिवार\x22प" + - "ुढील शनिवार,येत्या {0} शनिवारी)येत्या {0} शनिवार({0} शनिवारपूर्वी.{0} " + - "शनिवारांपूर्वी\x1aमागील शनि.\x11हा शनि.\x1aपुढील शनि.)पुढील {0} शनिवार" + - "ी&पुढील {0} शनिवार)मागील {0} शनिवारी&मागील {0} शनिवार\x13मागील श\x0aहा" + - " श\x13पुढील श\x16[म.पू./म.उ.]\x09तास\x0fतासात\x1f{0} तासामध्ये\x22{0} ता" + - "सांमध्ये\x22{0} तासापूर्वी%{0} तासांपूर्वी\x0fमिनिट\x1cया मिनिटात%{0} " + - "मिनिटामध्ये({0} मिनिटांमध्ये({0} मिनिटापूर्वी+{0} मिनिटांपूर्वी!{0} मि" + - "नि. मध्ये${0} मिनि. पूर्वी\x0fसेकंद\x0fआत्ता%{0} सेकंदामध्ये({0} सेकंद" + - "ांमध्ये({0} सेकंदापूर्वी+{0} सेकंदांपूर्वी\x1b{0} से. मध्ये\x1e{0} से." + - " पूर्वी\x1fवेळ क्षेत्र\x0d{0} वेळ/{0} सूर्यप्रकाश वेळ {0} प्रमाण वेळ5ब्र" + - "िटिश उन्हाळी वेळ,आयरिश प्रमाण वेळ\x13एकर वेळ%एकर प्रमाणवेळ)ऐकर ग्रीष्म" + - " वेळ+अफगाणिस्तान वेळ/मध्\u200dय आफ्रिका वेळ/पूर्व आफ्रिका वेळEदक्षिण आफ्" + - "रिका प्रमाण वेळ2पश्चिम आफ्रिका वेळEपश्चिम आफ्रिका प्रमाण वेळHपश्चिम आफ" + - "्रिका उन्हाळी वेळ\x1fअलास्का वेळ2अलास्का प्रमाण वेळAअलास्का सूर्यप्रका" + - "श वेळ\x1fअल्माटी वेळ1अल्माटी प्रमाणवेळDअल्माटी ग्रीष्मकालीन वेळ\x1fअॅम" + - "ेझॉन वेळ5अ\u200dॅमेझॉन प्रमाण वेळ8अ\u200dॅमेझॉन उन्हाळी वेळ\x22केंद्री" + - "य वेळ5केंद्रीय प्रमाण वेळDकेंद्रीय सूर्यप्रकाश वेळ%पौर्वात्य वेळ8पौर्व" + - "ात्य प्रमाण वेळGपौर्वात्य सूर्यप्रकाश वेळ\x1fपर्वतीय वेळ2पर्वतीय प्रमा" + - "ण वेळAपर्वतीय सूर्यप्रकाश वेळ\x1fपॅसिफिक वेळ2पॅसिफिक प्रमाण वेळAपॅसिफि" + - "क सूर्यप्रकाश वेळ\x1fएनाडीयर वेळ.अनादीर प्रमाणवेळAअनादीर ग्रीष्मकालीन " + - "वेळ\x19एपिया वेळ,एपिया प्रमाण वेळ;एपिया सूर्यप्रकाश वेळ\x22अ\u200dॅक्त" + - "ाउ वेळ4अ\u200dॅक्ताउ प्रमाणवेळGअ\u200dॅक्ताउ ग्रीष्मकालीन वेळ%अ\u200dॅ" + - "क्टोबे वेळ7अ\u200dॅक्टोबे प्रमाणवेळJअ\u200dॅक्टोबे ग्रीष्मकालीन वेळ" + - "\x1fअरेबियन वेळ2अरेबियन प्रमाण वेळAअरेबियन सूर्यप्रकाश वेळ(अर्जेंटिना वे" + - "ळ;अर्जेंटिना प्रमाण वेळ>अर्जेंटिना उन्हाळी वेळ>पश्चिमी अर्जेंटिना वेळQ" + - "पश्चिमी अर्जेंटिना प्रमाण वेळTपश्चिमी अर्जेंटिना उन्हाळी वेळ%आर्मेनिया" + - " वेळ8आर्मेनिया प्रमाण वेळ;आर्मेनिया उन्हाळी वेळ\x22अटलांटिक वेळ5अटलांटिक" + - " प्रमाण वेळDअटलांटिक सूर्यप्रकाश वेळ8मध्य ऑस्ट्रेलिया वेळKऑस्ट्रेलियन मध" + - "्य प्रमाण वेळZऑस्ट्रेलियन मध्य सूर्यप्रकाश वेळKऑस्ट्रेलियन मध्य-पश्चिम" + - " वेळ^ऑस्ट्रेलियन मध्य-पश्चिम प्रमाण वेळmऑस्ट्रेलियन मध्य-पश्चिम सूर्यप्र" + - "काश वेळ;पूर्व ऑस्ट्रेलिया वेळNऑस्ट्रेलियन पूर्व प्रमाण वेळ]ऑस्ट्रेलियन" + - " पूर्व सूर्यप्रकाश वेळ>पश्चिम ऑस्ट्रेलिया वेळQऑस्ट्रेलियन पश्चिम प्रमाण " + - "वेळ`ऑस्ट्रेलियन पश्चिम सूर्यप्रकाश वेळ\x22अझरबैजान वेळ5अझरबैजान प्रमाण" + - " वेळ8अझरबैजान उन्हाळी वेळ\x22अ\u200dॅझोरेस वेळ5अ\u200dॅझोरेस प्रमाण वेळ8" + - "अ\u200dॅझोरेस उन्हाळी वेळ%बांगलादेश वेळ8बांगलादेश प्रमाण वेळ;बांगलादेश" + - " उन्हाळी वेळ\x19भूतान वेळ(बोलिव्हिया वेळ(ब्राझिलिया वेळ;ब्राझिलिया प्रमा" + - "ण वेळ>ब्राझिलिया उन्हाळी वेळ8ब्रुनेई दारूसलाम वेळ)केप व्हर्डे वेळ<केप " + - "व्हर्डे प्रमाण वेळ?केप व्हर्डे उन्हाळी वेळ/चामोरो प्रमाण वेळ\x16चॅथम व" + - "ेळ)चॅथम प्रमाण वेळ8चॅथम सूर्यप्रकाश वेळ\x16चिली वेळ)चिली प्रमाण वेळ,चि" + - "ली उन्हाळी वेळ\x16चीनी वेळ)चीनी प्रमाण वेळ8चीनी सूर्यप्रकाश वेळ%चोईबाल" + - "्सन वेळ8चोईबाल्सन प्रमाण वेळ;चोईबाल्सन उन्हाळी वेळ)ख्रिसमस बेट वेळ&कॉक" + - "ोस बेटे वेळ\x22कोलंबिया वेळ5कोलंबिया प्रमाण वेळ8कोलंबिया उन्हाळी वेळ क" + - "ुक बेटे वेळ3कुक बेटे प्रमाण वेळCकुक बेटे अर्ध उन्हाळी वेळ\x1cक्यूबा वे" + - "ळ/क्यूबा प्रमाण वेळ>क्यूबा सूर्यप्रकाश वेळ\x1fडेव्हिस वेळAड्युमॉन्ट-ड्" + - "युर्विल वेळ)पूर्व तिमोर वेळ#इस्टर बेट वेळ6इस्टर बेट प्रमाण वेळ9इस्टर ब" + - "ेट उन्हाळी वेळ\x22इक्वेडोर वेळ2मध्\u200dय युरोपियन वेळEमध्\u200dय युरो" + - "पियन प्रमाण वेळHमध्\u200dय युरोपियन उन्हाळी वेळ2पूर्व युरोपियन वेळEपूर" + - "्व युरोपियन प्रमाण वेळHपूर्व युरोपियन उन्हाळी वेळKअग्र-पौर्वात्य यूरोप" + - "ीयन वेळ5पश्चिम युरोपियन वेळHपश्चिम युरोपियन प्रमाण वेळKपश्चिम युरोपियन" + - " उन्हाळी वेळ)फॉकलंड बेटे वेळ<फॉकलंड बेटे प्रमाण वेळ?फॉकलंड बेटे उन्हाळी " + - "वेळ\x16फिजी वेळ)फिजी प्रमाण वेळ,फिजी उन्हाळी वेळ,फ्रेंच गयाना वेळ[फ्रे" + - "ंच दक्षिण आणि अंटार्क्टिक वेळ%गॅलापागोस वेळ\x22गॅम्बियर वेळ\x22जॉर्जिय" + - "ा वेळ5जॉर्जिया प्रमाण वेळ8जॉर्जिया उन्हाळी वेळ/गिल्बर्ट बेटे वेळ2ग्रीन" + - "िच प्रमाण वेळ2पूर्व ग्रीनलँड वेळEपूर्व ग्रीनलँड प्रमाण वेळHपूर्व ग्रीन" + - "लँड उन्हाळी वेळ5पश्चिम ग्रीनलँड वेळHपश्चिम ग्रीनलँड प्रमाण वेळKपश्चिम " + - "ग्रीनलँड उन्हाळी वेळ(गुआम प्रमाणवेळ)खाडी प्रमाण वेळ\x19गयाना वेळ&हवाई-" + - "अलूशन वेळ9हवाई-अलूशन प्रमाण वेळHहवाई-अलूशन सूर्यप्रकाश वेळ#हाँग काँग व" + - "ेळ6हाँग काँग प्रमाण वेळ9हाँग काँग उन्हाळी वेळ\x1fहोव्ह्ड वेळ2होव्ह्ड प" + - "्रमाण वेळ5होव्ह्ड उन्हाळी वेळ/भारतीय प्रमाण वेळ+हिंदमहासागर वेळ%इंडोचा" + - "यना वेळ8मध्\u200dय इंडोनेशिया वेळDपौर्वात्य इंडोनेशिया वेळ>पश्चिमी इंड" + - "ोनेशिया वेळ\x16इराण वेळ)इराण प्रमाण वेळ8इराण सूर्यप्रकाश वेळ%इर्कुत्सक" + - " वेळ8इर्कुत्सक प्रमाण वेळ;इर्कुत्सक उन्हाळी वेळ\x15इस्रायल2इस्रायल प्रमा" + - "ण वेळAइस्रायल सूर्यप्रकाश वेळ\x16जपान वेळ)जपान प्रमाण वेळ8जपान सूर्यप्" + - "रकाश वेळ]पेट्रोपाव्हलोस्क- कामचाट्स्की वेळoपेट्रोपाव्हलोस्क- कामचाट्स्" + - "की प्रमाणवेळ\x82पेट्रोपाव्हलोस्क- कामचाट्स्की ग्रीष्मकालीन वेळ5पूर्व क" + - "झाकस्तान वेळ8पश्चिम कझाकस्तान वेळ\x1cकोरियन वेळ/कोरियन प्रमाण वेळ>कोरि" + - "यन सूर्यप्रकाश वेळ\x1fकोस्राई वेळ7क्रास्नोयार्स्क वेळJक्रास्नोयार्स्क " + - "प्रमाण वेळMक्रास्नोयार्क्स उन्हाळी वेळ(किरगिस्तान वेळ\x16लंका वेळ#लाइन" + - " बेटे वेळ&लॉर्ड होवे वेळ9लॉर्ड होवे प्रमाण वेळHलॉर्ड होवे सूर्यप्रकाश वे" + - "ळ\x16मकाऊ वेळ(मकाऊ प्रमाणवेळ;मकाऊ ग्रीष्मकालीन वेळ,मॅक्वेरी बेट वेळ" + - "\x1cमॅगाडन वेळ/मॅगाडन प्रमाण वेळ2मॅगाडन उन्हाळी वेळ\x1fमलेशिया वेळ\x1cमा" + - "लदिव वेळ+मार्क्वेसास वेळ)मार्शल बेटे वेळ\x1cमॉरीशस वेळ/मॉरीशस प्रमाण व" + - "ेळ2मॉरीशस उन्हाळी वेळ\x16मॉसन वेळ5वायव्य मेक्सिको वेळHवायव्य मेक्सिको " + - "प्रमाण वेळWवायव्य मेक्सिको सूर्यप्रकाश वेळ8मेक्सिको पॅसिफिक वेळKमेक्सि" + - "को पॅसिफिक प्रमाण वेळZमेक्सिको पॅसिफिक सूर्यप्रकाश वेळ&उलान बाटोर वेळ9" + - "उलान बाटोर प्रमाण वेळ<उलान बाटोर उन्हाळी वेळ\x1cमॉस्को वेळ/मॉस्को प्रम" + - "ाण वेळ2मॉस्को उन्हाळी वेळ\x22म्यानमार वेळ\x16नउरु वेळ\x19नेपाळ वेळ5न्य" + - "ू कॅलेडोनिया वेळHन्यू कॅलेडोनिया प्रमाण वेळKन्यू कॅलेडोनिया उन्हाळी वे" + - "ळ%न्यूझीलंड वेळ8न्यूझीलंड प्रमाण वेळGन्यूझीलंड सूर्यप्रकाश वेळ/न्यू फा" + - "उंडलंड वेळBन्यू फाउंडलंड प्रमाण वेळQन्यू फाउंडलंड सूर्यप्रकाश वेळ\x19न" + - "्युए वेळ&नॉरफोक बेट वेळBफर्नांडो दी नोरोन्हा वेळUफर्नांडो दी नोरोन्हा " + - "प्रमाण वेळXफर्नांडो दी नोरोन्हा उन्हाळी वेळ6उत्तर मरिना बेटे वेळ1नोवोस" + - "िबिर्स्क वेळDनोवोसिबिर्स्क प्रमाण वेळGनोवोसिबिर्स्क उन्हाळी वेळ\x1cओम्" + - "स्क वेळ/ओम्स्क प्रमाण वेळ2ओम्स्क उन्हाळी वेळ%पाकिस्तान वेळ8पाकिस्तान प" + - "्रमाण वेळ;पाकिस्तान उन्हाळी वेळ\x16पलाऊ वेळ3पापुआ न्यू गिनी वेळ\x22पॅर" + - "ाग्वे वेळ5पॅराग्वे प्रमाण वेळ8पॅराग्वे उन्हाळी वेळ\x16पेरु वेळ)पेरु प्" + - "रमाण वेळ,पेरु उन्हाळी वेळ\x22फिलिपाइन वेळ5फिलिपाइन प्रमाण वेळ8फिलिपाइन" + - " उन्हाळी वेळ/\u200dफोनिक्स बेटे वेळIसेंट पियर आणि मिक्वेलोन वेळ\\सेंट पि" + - "यर आणि मिक्वेलोन प्रमाण वेळkसेंट पियर आणि मिक्वेलोन सूर्यप्रकाश वेळ" + - "\x22पिटकैर्न वेळ\x1cपोनॅपे वेळ(प्योंगयंँग वेळ+क़िझीलोर्डा वेळ=क़िझीलोर्ड" + - "ा प्रमाणवेळPक़िझीलोर्डा ग्रीष्मकालीन वेळ\x22रियुनियन वेळ\x1cरोथेरा वेळ" + - "\x19सखलिन वेळ,सखलिन प्रमाण वेळ/सखलिन उन्हाळी वेळ\x19समारा वेळ+सामरा प्रम" + - "ाणवेळ>सामरा ग्रीष्मकालीन वेळ\x19सामोआ वेळ,सामोआ प्रमाण वेळ;सामोआ सूर्य" + - "प्रकाश वेळ\x1fसेशेल्स वेळ5सिंगापूर प्रमाण वेळ,सोलोमॉन बेटे वेळ5दक्षिण " + - "जॉर्जिया वेळ\x1fसुरिनाम वेळ\x1cस्योवा वेळ\x1cताहिती वेळ\x19तैपेई वेळ,त" + - "ैपेई प्रमाण वेळ;तैपेई सूर्यप्रकाश वेळ+ताजिकिस्तान वेळ\x1fटोकेलाऊ वेळ" + - "\x19टोंगा वेळ,टोंगा प्रमाण वेळ/टोंगा उन्हाळी वेळ\x13चूक वेळ4तुर्कमेनिस्त" + - "ान वेळGतुर्कमेनिस्तान प्रमाण वेळJतुर्कमेनिस्तान उन्हाळी वेळ\x1cतुवालू " + - "वेळ\x1fउरुग्वे वेळ2उरुग्वे प्रमाण वेळ5उरुग्वे उन्हाळी वेळ+उझबेकिस्तान " + - "वेळ>उझबेकिस्तान प्रमाण वेळAउझबेकिस्तान उन्हाळी वेळ\x1fवानुआतु वेळ2वानु" + - "आतु प्रमाण वेळ5वानुआतु उन्हाळी वेळ+व्हेनेझुएला वेळ1व्लादिवोस्तोक वेळDव" + - "्लादिवोस्तोक प्रमाण वेळGव्लादिवोस्तोक उन्हाळी वेळ1व्होल्गोग्राड वेळDव्" + - "होल्गोग्राड प्रमाण वेळGव्होल्गोग्राड उन्हाळी वेळ%व्होस्टॉक वेळ\x1dवेक " + - "बेट वेळ6वॉलिस आणि फुटुना वेळ\x22याकुत्सक वेळ5याकुत्सक प्रमाण वेळ8याकुत" + - "्सक उन्हाळी वेळ+येकतरिनबर्ग वेळ>येकतरिनबर्ग प्रमाण वेळAयेकतरिनबर्ग उन्" + - "हाळी वेळ\x03५\x03६\x03७\x03८\x03९\x06१०\x06११\x06१२" - -var bucket73 string = "" + // Size: 8196 bytes - "\x02Jn\x02Fb\x02Mc\x02Ap\x02Me\x02Ju\x02Jl\x02Og\x02Sp\x02Ok\x02Nv\x02Ds" + - "\x02Fe\x03Ahd\x03Isn\x03Sel\x03Rab\x03Kha\x03Jum\x03Sab\x02Ah\x02Is\x02S" + - "e\x02Ra\x02Kh\x02Sa\x04Ahad\x05Isnin\x06Selasa\x04Rabu\x06Khamis\x06Juma" + - "at\x05Sabtu\x0cSuku pertama\x09Suku Ke-2\x09Suku Ke-3\x09Suku Ke-4\x02PG" + - "\x03PTG\x06petang\x04S.M.\x02TM\x0edalam {0} saat\x0e{0} tahun lalu\x03t" + - "hn\x09thn lepas\x07thn ini\x09thn depan\x0ddalam {0} thn\x0aSuku Tahun" + - "\x0fsuku tahun lalu\x0esuku tahun ini\x15suku tahun seterusnya\x14dalam " + - "{0} suku tahun\x13{0} suku tahun lalu\x04suku\x0asuku lepas\x08suku ini" + - "\x0fsuku seterusnya\x12dlm {0} suku tahun\x0fdalam {0} bulan\x0e{0} bula" + - "n lalu\x03bln\x08bln lalu\x07bln ini\x09bln depan\x10dalam {0} minggu" + - "\x0f{0} minggu lalu\x03mgu\x09mng lepas\x07mng ini\x09mng depan\x0bdlm {" + - "0} mgu\x0c{0} mgu lalu\x08kelmarin\x07semalam\x08hari ini\x04esok\x04lus" + - "a\x0edalam {0} hari\x0d{0} hari lalu\x04hari\x05semlm\x0cdlm {0} hari" + - "\x11Hari dalam Minggu\x09Ahad lalu\x08Ahad ini\x0aAhad depan\x0dpada {0}" + - " Ahad\x12pada {0} Ahad lalu\x08Aha lalu\x07Aha ini\x09Aha depan\x08Ahd l" + - "alu\x07Ahd ini\x09Ahd depan\x0aIsnin lalu\x09Isnin ini\x0bIsnin depan" + - "\x0epada {0} Isnin\x13pada {0} Isnin lalu\x08Isn lalu\x07Isn ini\x09Isn " + - "depan\x0fpada {0} Selasa\x14pada {0} Selasa lalu\x08Sel lalu\x07Sel ini" + - "\x09Sel depan\x0dpada {0} Rabu\x12pada {0} Rabu lalu\x08Rab lalu\x07Rab " + - "ini\x09Rab depan\x0bKhamis lalu\x0aKhamis ini\x0cKhamis depan\x0fpada {0" + - "} Khamis\x14pada {0} Khamis lalu\x08Kha lalu\x07Kha ini\x09Kha depan\x0b" + - "Jumaat lalu\x0aJumaat ini\x0cJumaat depan\x0fpada {0} Jumaat\x14pada {0}" + - " Jumaat lalu\x08Jum lalu\x07Jum ini\x09Jum depan\x0epada {0} Sabtu\x13pa" + - "da {0} Sabtu lalu\x08Sab lalu\x07Sab ini\x09Sab depan\x06PG/PTG\x0ddalam" + - " {0} jam\x0bdlm {0} jam\x0epada minit ini\x0fdalam {0} minit\x0e{0} mini" + - "t lalu\x0bdlm {0} min\x0c{0} min lalu\x0d{0} saat lalu\x0cdlm {0} saat" + - "\x09Zon Waktu\x17Waktu Universal Selaras\x19Waktu Musim Panas British" + - "\x19Waktu Musim Panas Ireland\x11Waktu Afghanistan\x13Waktu Afrika Tenga" + - "h\x12Waktu Afrika Timur\x1bWaktu Piawai Afrika Selatan\x19Waktu Piawai A" + - "frika Barat\x13Waktu Piawai Alaska\x13Waktu Piawai Amazon\x12Waktu Piawa" + - "i Pusat\x12Waktu Piawai Timur\x18Waktu Piawai Pergunungan\x14Waktu Piawa" + - "i Pasifik\x13Waktu Piawai Anadyr\x13Waktu Standard Apia\x11Waktu Piawai " + - "Arab\x16Waktu Piawai Argentina\x1cWaktu Piawai Argentina Barat\x14Waktu " + - "Piawai Armenia\x15Waktu Piawai Atlantik\x1dWaktu Piawai Australia Tengah" + - "#Waktu Piawai Barat Tengah Australia\x1cWaktu Piawai Timur Australia\x1c" + - "Waktu Piawai Australia Barat\x17Waktu Piawai Azerbaijan\x13Waktu Piawai " + - "Azores\x17Waktu Piawai Bangladesh\x0cWaktu Bhutan\x0dWaktu Bolivia\x15Wa" + - "ktu Piawai Brasilia\x17Waktu Brunei Darussalam\x1aWaktu Piawai Tanjung V" + - "erde\x15Waktu Piawai Chamorro\x14Waktu Piawai Chatham\x12Waktu Piawai Ch" + - "ile\x12Waktu Piawai China\x17Waktu Piawai Choibalsan\x15Waktu Pulau Chri" + - "stmas\x15Waktu Kepulauan Cocos\x15Waktu Piawai Colombia\x1bWaktu Piawai " + - "Kepulauan Cook\x11Waktu Piawai Cuba\x0bWaktu Davis\x18Waktu Dumont-d’Urv" + - "ille\x11Waktu Timor Timur\x19Waktu Piawai Pulau Easter\x0dWaktu Ecuador" + - "\x1aWaktu Piawai Eropah Tengah\x19Waktu Piawai Eropah Timur\x18Waktu Ero" + - "pah ceruk timur\x19Waktu Piawai Eropah Barat\x1fWaktu Piawai Kepulauan F" + - "alkland\x11Waktu Piawai Fiji\x15Waktu Guyana Perancis$Waktu Perancis Sel" + - "atan dan Antartika\x0fWaktu Galapagos\x0dWaktu Gambier\x14Waktu Piawai G" + - "eorgia\x17Waktu Kepulauan Gilbert\x13Waktu Min Greenwich\x1cWaktu Piawai" + - " Greenland Timur\x1cWaktu Piawai Greenland Barat\x0bWaktu Teluk\x0cWaktu" + - " Guyana\x1cWaktu Piawai Hawaii-Aleutian\x16Waktu Piawai Hong Kong\x11Wak" + - "tu Piawai Hovd\x12Waktu Piawai India\x12Waktu Lautan Hindi\x0fWaktu Indo" + - "china\x16Waktu Indonesia Tengah\x15Waktu Indonesia Timur\x15Waktu Indone" + - "sia Barat\x11Waktu Piawai Iran\x14Waktu Piawai Irkutsk\x13Waktu Piawai I" + - "srael\x12Waktu Piawai Jepun%Waktu Piawai Petropavlovsk-Kamchatski\x16Wak" + - "tu Kazakhstan Timur\x16Waktu Kazakhstan Barat\x12Waktu Piawai Korea\x0cW" + - "aktu Kosrae\x18Waktu Piawai Krasnoyarsk\x0fWaktu Kyrgystan\x14Waktu Kepu" + - "lauan Line\x16Waktu Piawai Lord Howe\x15Waktu Pulau Macquarie\x14Waktu P" + - "iawai Magadan\x0eWaktu Malaysia\x0eWaktu Maldives\x0fWaktu Marquesas\x18" + - "Waktu Kepulauan Marshall\x16Waktu Piawai Mauritius\x0cWaktu Mawson\x1eWa" + - "ktu Piawai Barat Laut Mexico\x1bWaktu Piawai Pasifik Mexico\x17Waktu Pia" + - "wai Ulan Bator\x13Waktu Piawai Moscow\x0dWaktu Myanmar\x0bWaktu Nauru" + - "\x0bWaktu Nepal\x1aWaktu Piawai New Caledonia\x18Waktu Piawai New Zealan" + - "d\x19Waktu Piawai Newfoundland\x0aWaktu Niue\x17Waktu Kepulauan Norfolk " + - "Waktu Piawai Fernando de Noronha\x18Waktu Piawai Novosibirsk\x11Waktu Pi" + - "awai Omsk\x15Waktu Piawai Pakistan\x0bWaktu Palau\x16Waktu Papua New Gui" + - "nea\x15Waktu Piawai Paraguay\x11Waktu Piawai Peru\x15Waktu Piawai Filipi" + - "na\x17Waktu Kepulauan Phoenix&Waktu Piawai Saint Pierre dan Miquelon\x0e" + - "Waktu Pitcairn\x0cWaktu Ponape\x0fWaktu Pyongyang\x0dWaktu Reunion\x0dWa" + - "ktu Rothera\x15Waktu Piawai Sakhalin\x13Waktu Piawai Samara\x12Waktu Pia" + - "wai Samoa\x10Waktu Seychelles\x16Waktu Piawai Singapura\x17Waktu Kepulau" + - "an Solomon\x15Waktu Georgia Selatan\x0eWaktu Suriname\x0bWaktu Syowa\x0c" + - "Waktu Tahiti\x13Waktu Piawai Taipei\x10Waktu Tajikistan\x0dWaktu Tokelau" + - "\x12Waktu Piawai Tonga\x0bWaktu Chuuk\x19Waktu Piawai Turkmenistan\x0cWa" + - "ktu Tuvalu\x14Waktu Piawai Uruguay\x17Waktu Piawai Uzbekistan\x14Waktu P" + - "iawai Vanuatu\x0fWaktu Venezuela\x18Waktu Piawai Vladivostok\x16Waktu Pi" + - "awai Volgograd\x0cWaktu Vostok\x10Waktu Pulau Wake\x17Waktu Wallis dan F" + - "utuna\x14Waktu Piawai Yakutsk\x1aWaktu Piawai Yekaterinburg\x18EEEE, d '" + - "ta'’ MMMM y G\x12d 'ta'’ MMMM y G\x06Jannar\x04Frar\x05Marzu\x05April" + - "\x05Mejju\x06Ġunju\x05Lulju\x07Awwissu\x09Settembru\x07Ottubru\x08Novemb" + - "ru\x09Diċembru\x02Fr\x02Mz\x02Mj\x03Ġn\x02Lj\x02Aw\x02St\x02Ob\x03Dċ\x04" + - "Ħad\x03Tne\x03Tli\x03Erb\x04Ħam\x04Ġim\x03Sib\x03Ħd\x01T\x02Tl\x02Er" + - "\x03Ħm\x03Ġm\x02Sb\x08Il-Ħadd\x08It-Tnejn\x09It-Tlieta\x09L-Erbgħa\x09Il" + - "-Ħamis\x0bIl-Ġimgħa\x07Is-Sibt\x02Tn\x091el kwart\x092ni kwart\x093et kw" + - "art\x0c4ba’ kwart\x0cQabel Kristu\x0bWara Kristu\x02QK\x03QEK\x02WK\x02E" + - "K\x16EEEE, d 'ta'’ MMMM y\x10d 'ta'’ MMMM y\x05Epoka\x04Sena\x14Is-sena " + - "li għaddiet\x0bdin is-sena\x11Is-sena d-dieħla\x0c{0} sena ilu\x0c{0} sn" + - "in ilu\x05Xahar\x13Ix-xahar li għadda\x0cDan ix-xahar\x13Ix-xahar id-die" + - "ħel\x08Ġimgħa\x18Il-ġimgħa li għaddiet\x0fDin il-ġimgħa\x15Il-ġimgħa d-" + - "dieħla\x09Ilbieraħ\x05Illum\x06Għada\x10Jum tal-Ġimgħa\x13Il-Ħadd li għa" + - "dda\x0cDan il-Ħadd\x10Il-Ħadd li ġej\x13It-Tnejn li għadda\x0cDan It-Tne" + - "jn\x10It-Tnejn li ġej\x05QN/WN\x07Siegħa\x06Minuta\x07Sekonda\x05Żona" + - "\x0eĦin ta’ {0}\x08{0} (+1)\x11{0} Ħin Standard\x16Ħin Ċentrali Ewropew" + - "\x1fĦin Ċentrali Ewropew Standard\x1fĦin Ċentrali Ewropew tas-Sajf\x03FL" + - "O\x03CLA\x03CKI\x03FMF\x03MAD\x03MBI\x03MLI\x03MAM\x03FDE\x03FMU\x03FGW" + - "\x03FYU\x08Fĩi Loo\x0dCokcwaklaŋne\x0aCokcwaklii\x0bFĩi Marfoo\x12Madǝǝu" + - "utǝbijaŋ\x12Mamǝŋgwãafahbii\x0fMamǝŋgwãalii\x09Madǝmbii\x0dFĩi Dǝɓlii" + - "\x0cFĩi Mundaŋ\x0cFĩi Gwahlle\x09Fĩi Yuru\x03Cya\x03Cla\x03Czi\x03Cko" + - "\x03Cka\x03Cga\x03Cze\x0bCom’yakke\x0aComlaaɗii\x0bComzyiiɗii\x08Comkoll" + - "e\x0eComkaldǝɓlii\x09Comgaisuu\x0bComzyeɓsuu\x1cTai fĩi sai ma tǝn kee z" + - "ah Tai fĩi sai zah lǝn gwa ma kee Tai fĩi sai zah lǝn sai ma kee!Tai fĩi" + - " sai ma coo kee zah ‘na\x05comme\x05lilli\x0dKǝPel Kristu\x0aPel Kristu" + - "\x0cSyii ma tãa\x04Syii\x04Fĩi\x04Luma\x11Zah’nane/ Comme\x06Tǝsoo\x0bTǝ" + - "’nahko\x0aTǝ’nane\x0cKǝsyil luma\x09Cok comme\x13Cok comme ma laŋne" + - "\x1aCok comme ma laŋ tǝ biŋ\x0eWaŋ cok comme\x10EEEE G dd MMMM y\x0bG dd" + - " MMMM y\x0eGGGGG dd-MM-yy\x09ဇန်\x06ဖေ\x09မတ်\x03ဧ\x06မေ\x0cဇွန်\x06ဇူ" + - "\x03ဩ\x09စက်\x0fအောက်\x09နို\x06ဒီ\x03ဇ\x03ဖ\x03မ\x03စ\x03အ\x03န\x03ဒ" + - "\x18ဇန်နဝါရီ\x1eဖေဖော်ဝါရီ\x0cဧပြီ\x15ဇူလိုင်\x0fဩဂုတ်\x18စက်တင်ဘာ\x1eအေ" + - "ာက်တိုဘာ\x18နိုဝင်ဘာ\x15ဒီဇင်ဘာ\x1bတနင်္ဂနွေ\x15တနင်္လာ\x12အင်္ဂါ\x18ဗ" + - "ုဒ္ဓဟူး\x18ကြာသပတေး\x12သောကြာ\x09စနေ\x03တ\x03ဗ\x03က\x03သ\x22ပထမ သုံးလပ" + - "တ်(ဒုတိယ သုံးလပတ်%တတိယ သုံးလပတ်+စတုတ္ထ သုံးလပတ်\x03ပ\x06ဒု!သန်းခေါင်ယံ" + - "\x0fနံနက်\x1bမွန်းတည့်\x09ညနေ\x12နေ့လယ်\x03ည:ခရစ်တော် မပေါ်မီနှစ်>သာမန်က" + - "ာလ မတိုင်မီ ခေတ်\x18ခရစ်နှစ်\x18သာမန်ကာလ\x0cဘီစီ\x15ဘီစီအီး\x0cအေဒီ" + - "\x0fစီအီး\x0dzzzz HH:mm:ss\x0az HH:mm:ss\x0cခေတ်\x0cနှစ်\x18ယမန်နှစ်\x15" + - "ယခုနှစ်\x1eလာမည့်နှစ်\x22{0} နှစ်အတွင်း2ပြီးခဲ့သည့် {0} နှစ်\x18သုံးလပ" + - "တ်:ပြီးခဲ့သည့် သုံးလပတ်\x22ယခု သုံးလပတ်+လာမည့် သုံးလပတ်8သုံးလပတ်ကာလ {0" + - "} အတွင်း`ပြီးခဲ့သည့် သုံးလပတ်ကာလ {0} ခုအတွင်း6ပြီးခဲ့သောသုံးလပတ်!ယခုသုံး" + - "လပတ်9နောက်လာမည့်သုံးလပတ်>သုံးလပတ်ကာလ {0} ခုအတွင်း\x03လ$ပြီးခဲ့သည့်လ" + - "\x0cယခုလ\x15လာမည့်လ\x19{0} လအတွင်း)ပြီးခဲ့သည့် {0} လ\x09ပတ်\x03Bar\x03Aa" + - "r\x03Uni\x03Ung\x03Kan\x03Sab" - -var bucket74 string = "" + // Size: 22754 bytes - "=ပြီးခဲ့သည့် သီတင်းပတ်%ယခု သီတင်းပတ်.လာမည့် သီတင်းပတ်\x1f{0} ပတ်အတွင်း/ပ" + - "ြီးခဲ့သည့် {0} ပတ်;{0} ပတ်မြောက် သီတင်းပတ်\x09ရက်\x15တစ်နေ့က\x0fမနေ့က" + - "\x0cယနေ့\x18မနက်ဖြန်\x18သန်ဘက်ခါ\x1f{0} ရက်အတွင်း/ပြီးခဲ့သည့် {0} ရက်" + - "\x09နေ့Fပြီးခဲ့သည့် တနင်္ဂနွေနေ့'ဤတနင်္ဂနွေနေ့7လာမည့် တနင်္ဂနွေနေ့;တနင်္" + - "ဂနွေ {0} ပတ်အတွင်းKပြီးခဲ့သည့် တနင်္ဂနွေ {0} ပတ်@ပြီးခဲ့သည့် တနင်္လာနေ" + - "့!ဤတနင်္လာနေ့1လာမည့် တနင်္လာနေ့5တနင်္လာ {0} ပတ်အတွင်းEပြီးခဲ့သည့် တနင်" + - "္လာ {0} ပတ်=ပြီးခဲ့သည့် အင်္ဂါနေ့\x1eဤအင်္ဂါနေ့.လာမည့် အင်္ဂါနေ့2အင်္ဂ" + - "ါ {0} ပတ်အတွင်းBပြီးခဲ့သည့် အင်္ဂါ {0} ပတ်Cပြီးခဲ့သည့် ဗုဒ္ဓဟူးနေ့$ဤဗု" + - "ဒ္ဓဟူးနေ့4လာမည့် ဗုဒ္ဓဟူးနေ့8ဗုဒ္ဓဟူး {0} ပတ်အတွင်းHပြီးခဲ့သည့် ဗုဒ္ဓဟ" + - "ူး {0} ပတ်Cပြီးခဲ့သည့် ကြာသပတေးနေ့$ဤကြာသပတေးနေ့4လာမည့် ကြာသပတေးနေ့8ကြာ" + - "သပတေး {0} ပတ်အတွင်းHပြီးခဲ့သည့် ကြာသပတေး {0} ပတ်=ပြီးခဲ့သည့် သောကြာနေ့" + - "\x1eဤသောကြာနေ့.လာမည့် သောကြာနေ့2သောကြာ {0} ပတ်အတွင်းTပြီးခဲ့သည့် သောကြာ " + - "{0} ပတ်အတွင်း4ပြီးခဲ့သည့် စနေနေ့\x15ဤစနေနေ့%လာမည့် စနေနေ့)စနေ {0} ပတ်အတွ" + - "င်းKပြီးခဲ့သည့် စနေ {0} ပတ်အတွင်း\x19နံနက်/ညနေ\x0cနာရီ\x15ဤအချိန်\x22{" + - "0} နာရီအတွင်း2ပြီးခဲ့သည့် {0} နာရီ\x0fမိနစ်\x12ဤမိနစ်%{0} မိနစ်အတွင်း5ပြ" + - "ီးခဲ့သည့် {0} မိနစ်\x15စက္ကန့်\x09ယခု+{0} စက္ကန့်အတွင်း;ပြီးခဲ့သည့် {0" + - "} စက္ကန့်\x0cဇုန်\x16{0} အချိန်;{0} နွေရာသီ စံတော်ချိန်%{0} စံတော်ချိန်S" + - "ညှိထားသည့် ကမ္ဘာ့ စံတော်ချိန်<ဗြိတိန်နွေရာသီအချိန်Eအိုင်းရစ်ရှ်စံတော်ခ" + - "ျိန်:အာဖဂန်နစ္စတန် အချိန်1အလယ်အာဖရိက အချိန်4အရှေ့အာဖရိက အချိန်4တောင်အာ" + - "ဖရိက အချိန်7အနောက်အာဖရိက အချိန်Fအနောက်အာဖရိက စံတော်ချိန်Mအနောက်အာဖရိက " + - "နွေရာသီ အချိန်*အလားစကားအချိန်9အလားစကားစံတော်ချိန်Oအလားစကား နွေရာသီစံတေ" + - "ာ်ချိန်(အာမေဇုံ အချိန်7အာမေဇုံ စံတော်ချိန်=အာမေဇုံ နွေရာသီအချိန်Uမြောက" + - "်အမေရိက အလယ်ပိုင်းအချိန်dမြောက်အမေရိက အလယ်ပိုင်းစံတော်ချိန်zမြောက်အမေရ" + - "ိက အလယ်ပိုင်း နွေရာသီစံတော်ချိန်Xမြောက်အမေရိက အရှေ့ပိုင်းအချိန်gမြောက်" + - "အမေရိက အရှေ့ပိုင်းစံတော်ချိန်}မြောက်အမေရိက အရှေ့ပိုင်း နွေရာသီစံတော်ချ" + - "ိန်[မြောက်အမေရိက တောင်တန်းဒေသအချိန်jမြောက်အမေရိက တောင်တန်းဒေသစံတော်ချိ" + - "န်\x80မြောက်အမေရိက တောင်တန်းဒေသ နွေရာသီစံတော်ချိန်Lမြောက်အမေရိက ပစိဖိတ" + - "်အချိန်[မြောက်အမေရိက ပစိဖိတ်စံတော်ချိန်qမြောက်အမေရိက ပစိဖိတ် နွေရာသီစံ" + - "တော်ချိန်!အပီယာအချိန်0အပီယာစံတော်ချိန်8အပီယာ နွေရာသီ အချိန်%အာရေဗျ အချ" + - "ိန်4အာရေဗျ စံတော်ချိန်;အာရေဗျ နွေရာသီ အချိန်7အာဂျင်တီးနား အချိန်Fအာဂျင" + - "်တီးနား စံတော်ချိန်Lအာဂျင်တီးနား နွေရာသီအချိန်Jအနောက် အာဂျင်တီးနား အချ" + - "ိန်Yအနောက် အာဂျင်တီးနား စံတော်ချိန်`အနောက် အာဂျင်တီးနား နွေရာသီ အချိန်" + - "4အာမေးနီးယား အချိန်Cအာမေးနီးယား စံတော်ချိန်Jအာမေးနီးယား နွေရာသီ အချိန်1အ" + - "တ္တလန်တစ် အချိန်@အတ္တလန်တစ် စံတော်ချိန်Vအတ္တလန်တစ် နွေရာသီ စံတော်ချိန်" + - "Pဩစတြေးလျား အလယ်ပိုင်း အချိန်_ဩစတြေးလျား အလယ်ပိုင်း စံတော်ချိန်fဩစတြေးလျ" + - "ား အလယ်ပိုင်း နွေရာသီ အချိန်bဩစတြေးလျား အလယ်အနောက်ပိုင်း အချိန်qဩစတြေး" + - "လျား အလယ်အနောက်ပိုင်း စံတော်ချိန်xဩစတြေးလျား အလယ်အနောက်ပိုင်း နွေရာသီ " + - "အချိန်@အရှေ့ဩစတြေးလျား အချိန်Oအရှေ့ဩစတြေးလျား စံတော်ချိန်Vအရှေ့ဩစတြေးလ" + - "ျား နွေရာသီ အချိန်Cအနောက်ဩစတြေးလျား အချိန်Rအနောက်ဩစတြေးလျား စံတော်ချိန" + - "်Gဩစတြေးလျား နွေရာသီ အချိန်7အဇာဘိုင်ဂျန် အချိန်Fအဇာဘိုင်ဂျန် စံတော်ချိ" + - "န်Mအဇာဘိုင်ဂျန် နွေရာသီ အချိန်4အေဇိုးရီးစ် အချိန်Cအေဇိုးရီးစ် စံတော်ချ" + - "ိန်Jအေဇိုးရီးစ် နွေရာသီ အချိန်=ဘင်္ဂလားဒေ့ရှ် အချိန်Lဘင်္ဂလားဒေ့ရှ် စံ" + - "တော်ချိန်Sဘင်္ဂလားဒေ့ရှ် နွေရာသီ အချိန်\x22ဘူတန် အချိန်7ဘိုလီးဘီးယား အ" + - "ချိန်%ဘရာဇီး အချိန်4ဘရာဇီး စံတော်ချိန်;ဘရာဇီး နွေရာသီ အချိန်=ဘရူနိုင်း" + - " စံတော်ချိန်2ကိတ်ပ် ဗာဒီ အချိန်Aကိတ်ပ် ဗာဒီ စံတော်ချိန်Hကိတ်ပ် ဗာဒီ နွေရ" + - "ာသီ အချိန်-ချာမိုရိုအချိန်'ချားသမ်အချိန်6ချားသမ်စံတော်ချိန်;ချာသမ် နွေ" + - "ရာသီ အချိန်\x22ချီလီ အချိန်1ချီလီ စံတော်ချိန်8ချီလီ နွေရာသီ အချိန်\x22" + - "တရုတ် အချိန်1တရုတ် စံတော်ချိန်8တရုတ် နွေရာသီ အချိန်6ချွဲဘော်ဆန်းအချိန်" + - "Eချွဲဘော်ဆန်းစံတော်ချိန်Kချွဲဘော်ဆန်းနွေရာသီအချိန်<ခရစ်စမတ်ကျွန်းအချိန်9" + - "ကိုကိုးကျွန်းအချိန်.ကိုလံဘီယာ အချိန်=ကိုလံဘီယာ စံတော်ချိန်Dကိုလံဘီယာ န" + - "ွေရာသီ အချိန်<ကွတ်ခ်ကျွန်းစုအချိန်Kကွတ်ခ်ကျွန်းစုစံတော်ချိန်Qကွတ်က်ကျွ" + - "န်းစုနွေရာသီအချိန်(ကျူးဘား အချိန်7ကျူးဘား စံတော်ချိန်Mကျူးဘား နွေရာသီ " + - "စံတော်ချိန်$ဒေးဗစ်အချိန်Iဒူးမော့တ် ဒါရ်ဗီးလ်အချိန်1အရှေ့တီမော အချိန်3အ" + - "ီစတာကျွန်းအချိန်Bအီစတာကျွန်းစံတော်ချိန်Hအီစတာကျွန်းနွေရာသီအချိန်+အီကွေ" + - "ဒေါ အချိန်?ဥရောပအလယ်ပိုင်းအချိန်Pဥရောပ အလယ်ပိုင်း စံတော်ချိန်Wဥရောပ အလ" + - "ယ်ပိုင်း နွေရာသီ အချိန်1အရှေ့ဥရောပ အချိန်@အရှေ့ဥရောပ စံတော်ချိန်Gအရှေ့" + - "ဥရောပ နွေရာသီ အချိန်Wထပ်တိုးအရှေ့ပိုင်းဥရောပအချိန်4အနောက်ဥရောပ အချိန်C" + - "အနောက်ဥရောပ စံတော်ချိန်Jအနောက်ဥရောပ နွေရာသီ အချိန်@ဖော့ကလန်ကွန်းစု အချ" + - "ိန်Rဖော့ကလန်ကျွန်းစု စံတော်ချိန်Yဖော့ကလန်ကျွန်းစု နွေရာသီ အချိန်!ဖီဂျီ" + - "အချိန်0ဖီဂျီစံတော်ချိန်6ဖီဂျီနွေရာသီအချိန်Aပြင်သစ် ဂီအားနား အချိန်sပြင" + - "်သစ်တောင်ပိုင်းနှင့် အန္တာတိတ်အချိန်9ဂါလားပါဂိုးစ်အချိန်(ဂမ်ဘီယာ အချိန" + - "်1ဂျော်ဂျီယာ အချိန်@ဂျော်ဂျီယာ စံတော်ချိန်Gဂျော်ဂျီယာ နွေရာသီ အချိန်?ဂ" + - "ီလ်ဘတ်ကျွန်းစုအချိန်:ဂရင်းနစ် စံတော်ချိန်=အရှေ့ဂရင်းလန်း အချိန်Lအရှေ့ဂ" + - "ရင်းလန်း စံတော်ချိန်_အရှေ့ဂရင်းလန် နွေရာသီ စံတော်ချိန်Aအနောက် ဂရင်းလန်" + - "း အချိန်Pအနောက် ဂရင်းလန်း စံတော်ချိန်cအနောက် ဂရင်းလန် နွေရာသီ စံတော်ချ" + - "ိန်1ပင်လယ်ကွေ့ အချိန်.ဂိုင်ယာနာ အချိန်Pဟာဝိုင်ယီ အယ်လူးရှန်း အချိန်_ဟာ" + - "ဝိုင်ယီ အယ်လူးရှန်း စံတော်ချိန်uဟာဝိုင်ယီ အယ်လူးရှန်း နွေရာသီ စံတော်ချ" + - "ိန်1ဟောင်ကောင် အချိန်@ဟောင်ကောင် စံတော်ချိန်Gဟောင်ကောင် နွေရာသီ အချိန်" + - "$ဟိုးဗ်အချိန်3ဟိုးဗ်စံတော်ချိန်9ဟိုးဗ်နွေရာသီအချိန်7အိန္ဒိယ စံတော်ချိန်A" + - "အိန္ဒိယ သမုဒ္ဒရာ အချိန်Cအင်ဒိုချိုင်းနား အချိန်Yအလယ်ပိုင်း အင်ဒိုနီးရှ" + - "ား အချိန်\\အရှေ့ပိုင်း အင်ဒိုနီးရှား အချိန်_အနောက်ပိုင်း အင်ဒိုနီးရှား" + - " အချိန်\x22အီရန် အချိန်1အီရန် စံတော်ချိန်8အီရန် နွေရာသီ အချိန်*အီရူခူတ်အ" + - "ချိန်9အီရူခူတ်စံတော်ချိန်?အီရူခူတ်နွေရာသီအချိန်(အစ္စရေး အချိန်7အစ္စရေး" + - " စံတော်ချိန်>အစ္စရေး နွေရာသီ အချိန်\x22ဂျပန် အချိန်1ဂျပန် စံတော်ချိန်8ဂျ" + - "ပန် နွေရာသီ အချိန်=အရှေ့ကာဇက်စတန် အချိန်?အနောက်ကာဇက်စတန်အချိန်.ကိုရီးယ" + - "ား အချိန်=ကိုရီးယား စံတော်ချိန်Dကိုရီးယား နွေရာသီ အချိန်0ခိုစ်ရိုင်အချ" + - "ိန်9ခရာ့စ်နိုရာစ်အချိန်Hခရာ့စ်နိုရာစ်စံတော်ချိန်Nခရာ့စ်နိုရာစ်နွေရာသီအ" + - "ချိန်1ကာဂျစ္စတန် အချိန်1သီရိလင်္ကာ အချိန်<လိုင်းကျွန်းစုအချိန်3လော့ဒ်ဟ" + - "ောင်အချိန်Bလော့ဒ်ဟောင်စံတော်ချိန်Jလော့ဒ်ဟောင် နွေရာသီ အချိန်%မကာအို အခ" + - "ျိန်4မကာအို စံတော်ချိန်;မကာအို နွေရာသီ အချိန်@မက်ကွယ်ရီကျွန်း အချိန်*မ" + - "ာဂါဒန်းအချိန်9မာဂါဒန်းစံတော်ချိန်?မာဂါဒန်းနွေရာသီအချိန်+မလေးရှား အချိန" + - "်1မော်လဒိုက် အချိန်0မာခေးအပ်စ်အချိန်<မာရှယ်ကျွန်းစုအချိန်.မောရစ်ရှ် အခ" + - "ျိန်=မောရစ်ရှ် စံတော်ချိန်Dမောရစ်ရှ် နွေရာသီ အချိန်*မော်စွန်အချိန်Pအနေ" + - "ာက်တောင် မက္ကဆီကို အချိန်_အနောက်တောင် မက္ကဆီကို စံတော်ချိန်uအနောက်တောင" + - "် မက္ကစီကို နွေရာသီ စံတော်ချိန်Cမက္ကဆီကန် ပစိဖိတ်အချိန်Sမက္ကဆီကန် ပစိဖ" + - "ိတ် စံတော်ချိန်iမက္ကစီကန် ပစိဖိတ် နွေရာသီ စံတော်ချိန်-ဥလန်ဘာတောအချိန်<" + - "ဥလန်ဘာတောစံတော်ချိန်Bဥလန်ဘာတောနွေရာသီအချိန်\x18မော်စကို9မော်စကိုစံတော်" + - "ချိန်Aမော်စကို နွေရာသီ အချိန်%မြန်မာ အချိန်$နာဥူရူအချိန်\x22နီပေါ အချိ" + - "န်Kနယူးကယ်လီဒိုးနီးယားအချိန်Wနယူးကာလီဒိုးနီးယားစံတော်ချိန်]နယူးကာလီဒို" + - "းနီးယားနွေရာသီအချိန်.နယူးဇီလန် အချိန်=နယူးဇီလန် စံတော်ချိန်Dနယူးဇီလန် " + - "နွေရာသီ အချိန်7နယူးဖောင်လန် အချိန်Fနယူးဖောင်လန် စံတော်ချိန်\\နယူးဖောင်" + - "လန် နွေရာသီ စံတော်ချိန်$နီဦးအေအချိန်?နောဖော့ခ်ကျွန်းအချိန်Qဖာနန်ဒိုးဒီ" + - "နိုးရိုးညာအချိန်`ဖာနန်ဒိုးဒီနိုးရိုးညာစံတော်ချိန်fဖာနန်ဒိုးဒီနိုးရိုးည" + - "ာနွေရာသီအချိန်Bနိုဗိုစဲဘီအဲယ်စ်အချိန်Qနိုဗိုစဲဘီအဲယ်စ်စံတော်ချိန်Wနိုဗ" + - "ိုစဲဘီအဲယ်စ်နွေရာသီအချိန်-အွမ်းစ်ခ်အချိန်<အွမ်းစ်ခ်စံတော်ချိန်Bအွမ်းစ်" + - "ခ်နွေရာသီအချိန်.ပါကစ္စတန် အချိန်=ပါကစ္စတန် စံတော်ချိန်Dပါကစ္စတန် နွေရာ" + - "သီ အချိန်%ပလာအို အချိန်=ပါပူအာနယူးဂီနီ အချိန်+ပါရာဂွေး အချိန်:ပါရာဂွေး" + - " စံတော်ချိန်Aပါရာဂွေး နွေရာသီ အချိန်\x22ပီရူး အချိန်1ပီရူး စံတော်ချိန်8ပ" + - "ီရူး နွေရာသီ အချိန်1ဖိလစ်ပိုင် အချိန်@ဖိလစ်ပိုင် စံတော်ချိန်Gဖိလစ်ပိုင" + - "် နွေရာသီ အချိန်<ဖီးနစ်ကျွန်းစုအချိန်Wစိန့်ပီအဲနှင့်မီခွီလွန်အချိန်fစိ" + - "န့်ပီအဲနှင့်မီခွီလွန်စံတော်ချိန်~စိန့်ပီအဲနှင့် မီခွီလွန် နွေရာသီ စံတေ" + - "ာ်ချိန်1ပါတ်ကယ်ရင် အချိန်-ဖိုနာဖဲအ်အချိန်+ပြုံယန်း အချိန်%ဟေညွန် အချိန" + - "်'ရိုသီရာအချိန်(ဆာခါလင် အချိန်6ဆာခါလင်စံတော်ချိန်>ဆာခါလင် နွေရာသီ အချိ" + - "န်*ဆမိုးအားအချိန်9ဆမိုးအားစံတော်ချိန်Aဆမိုးအား နွေရာသီ အချိန်%ဆေးရှဲ အ" + - "ချိန်+စင်္ကာပူ အချိန်Eဆော်လမွန်ကျွန်းစုအချိန်@တောင်ဂျော်ဂျီယာ အချိန်-စ" + - "ူးရီနာမ်အချိန်$ရှိုဝါအချိန်!တဟီတီအချိန်(ထိုင်ပေ အချိန်7ထိုင်ပေ စံတော်ခ" + - "ျိန်>ထိုင်ပေ နွေရာသီ အချိန်:တာဂျစ်ကစ္စတန် အချိန်+တိုကီလာဥ အချိန်$တွန်ဂ" + - "ါအချိန်3တွန်ဂါစံတော်ချိန်9တွန်ဂါနွေရာသီအချိန်!ချုခ်အချိန်@တာ့ခ်မင်နစ္စ" + - "တန် အချိန်Oတာ့ခ်မင်နစ္စတန် စံတော်ချိန်Vတာ့ခ်မင်နစ္စတန် နွေရာသီ အချိန်'" + - "တူဗားလူအချိန်(ဥရုဂွေး အချိန်7ဥရုဂွေး စံတော်ချိန်>ဥရုဂွေး နွေရာသီ အချိန" + - "်7ဥဇဘက်ကစ္စတန် အချိန်Fဥဇဘက်ကစ္စတန် စံတော်ချိန်Mဥဇဘက်ကစ္စတန် နွေရာသီ အခ" + - "ျိန်'ဗနွားတူအချိန်6ဗနွားတူစံတော်ချိန်<ဗနွားတူနွေရာသီအချိန်4ဗင်နီဇွဲလား" + - " အချိန်Cဗလာဒီဗော့စတော့ခ် အချိန်Rဗလာဒီဗော့စတော့ခ် စံတော်ချိန်Yဗလာဒီဗော့စတ" + - "ော့ခ် နွေရာသီ အချိန်6ဗိုလ်ဂိုဂရက်အချိန်Eဗိုလ်ဂိုဂရက်စံတော်ချိန်Kဗိုလ်ဂ" + - "ိုဂရက်နွေရာသီအချိန်0ဗိုစ်တိုခ်အချိန်6ဝိတ်ခ်ကျွန်းအချိန်Mဝေါလီစ်နှင့် ဖ" + - "ူကျူနာ အချိန်-ယူခူးတ်စ်အချိန်<ယူခူးတ်စ်စံတော်ချိန်Bယူခူးတ်စ်နွေရာသီအချ" + - "ိန်Bရယ်ခါးတီရင်ဘားခ်အချိန်Qရယ်ခါးတီရင်ဘားခ်စံတော်ချိန်Tရယ်ခါးတီရင်ဘာခ်" + - "နွေရာသီအချိန်" - -var bucket75 string = "" + // Size: 10525 bytes - "\x11قبل میلاد\x1eقبل میلادی تقویم\x11بعد میلاد\x0cمیلادی\x05پ.م\x06پ.م." + - "\x03م.\x02م\x0aتقویم\x0cپارسال\x0aامسال\x0fسال دیگه\x11{0} سال دله\x06رب" + - "ع\x11{0} ربع دله\x11{0} ربع پیش\x0dماه قبل\x0dاین ماه\x0fماه ِبعد\x11{0" + - "} ماه دله\x11قبلی هفته\x0fاین هفته\x11بعدی هفته\x13{0} هفته دله\x11{0} ر" + - "وز دله\x16هفته\u200cی ِروز\x15قبلی یکشنبه\x13این یکشنبه\x15بعدی یکشنبه" + - "\x13یکشنبه قبل\x13یکشنبه بعد\x15قبلی دِشنبه\x13این دِشنبه\x15بعدی دِشنبه" + - "\x18قبلی سه\u200cشنبه\x16این سه\u200cشنبه\x18بعدی سه\u200cشنبه\x17قبلی چ" + - "ارشنبه\x15این چارشنبه\x17بعدی چارشنبه\x17قبلی پنجشنبه\x15این پنجشنبه" + - "\x17بعدی پنجشنبه\x11قبلی جومه\x0fاین جومه\x11بعدی جومه\x11قبلی شنبه\x0fا" + - "ین شنبه\x11بعدی شنبه\x11صواحی/ظُر\x0aساعِت\x15{0} ساعِت دله\x15{0} ساعِ" + - "ت پیش\x13{0} ساعت دله\x15{0} دقیقه دله\x13{0} دَقه پیش\x08دَقه\x13{0} د" + - "َقه دله\x15{0} ثانیه دله\x15زمونی منقطه\x08ǃKhanni\x0dǃKhanǀgôab\x0dǀKh" + - "uuǁkhâb\x0dǃHôaǂkhaib\x0bǃKhaitsâb\x09Gamaǀaeb\x0aǂKhoesaob\x12Aoǁkhuumû" + - "ǁkhâb\x14Taraǀkhuumûǁkhâb\x0eǂNûǁnâiseb\x0bǀHooǂgaeb\x0fHôasoreǁkhâb" + - "\x0bSontaxtsees\x0bMantaxtsees\x0cDenstaxtsees\x0cWunstaxtsees\x0eDonder" + - "taxtsees\x0cFraitaxtsees\x0dSatertaxtsees\x03KW1\x03KW2\x03KW3\x03KW4" + - "\x0c1ro kwartals\x0e2ǁî kwartals\x0e3ǁî kwartals\x0e4ǁî kwartals\x08ǁgoa" + - "gas\x06ǃuias\x0eXristub aiǃâ\x11Xristub khaoǃgâ\x0aǁAeǃgâs\x05Kurib\x07ǁ" + - "Khâb\x06Wekheb\x05Tsees\x0cWekheb tsees\x0cǁgoas/ǃuis\x04Iiri\x04Haib" + - "\x07ǀGâub\x0dǁAeb ǀharib\x09vårstart\x08regnvann\x10insekter våkner\x0dv" + - "årjevndøgn\x0dlyst og klart\x08kornregn\x0bsommerstart\x0atidl. korn" + - "\x0akorn i aks\x0dsommersolverv\x0bliten varme\x0astor varme\x0ahøststar" + - "t\x0avarmeslutt\x09hvit dugg\x0ehøstjevndøgn\x08kalddugg\x0dførste frost" + - "\x0bvinterstart\x09litt snø\x08mye snø\x0dvintersolverv\x0bliten kulde" + - "\x0astor kulde\x11EEEE d. MMMM r(U)\x0cd. MMMM r(U)\x08d. MMM r\x05d.M.r" + - "\x0c0. tidsalder\x0c1. tidsalder\x070. t.a.\x071. t.a.\x03TA0\x03TA1\x08" + - "meskerem\x06tekemt\x05hedar\x06tahsas\x03ter\x07yekatit\x07megabit\x06mi" + - "azia\x06genbot\x04sene\x05hamle\x07nehasse\x07pagumen\x04sø.\x03ma.\x03t" + - "i.\x03on.\x03to.\x03fr.\x04lø.\x05midn.\x05form.\x07etterm.\x05kveld\x04" + - "natt\x03mg.\x03fm.\x03em.\x03nt.\x07midnatt\x08morgenen\x0bformiddagen" + - "\x0dettermiddagen\x07kvelden\x06natten\x0bettermiddag\x0cfør Kristus\x15" + - "før vår tidsregning\x0detter Kristus\x16etter vår tidsregning\x04fvt." + - "\x04evt.\x03vt.\x06tishri\x07heshvan\x06kislev\x05tevet\x06shevat\x06ada" + - "r I\x04adar\x07adar II\x05nisan\x04iyar\x05sivan\x05tamuz\x02av\x04elul" + - "\x04saka\x07d.M y G\x09farvardin\x0bordibehesht\x07khordad\x03tir\x06mor" + - "dad\x09shahrivar\x04mehr\x04aban\x04azar\x03dey\x06bahman\x06esfand\x09t" + - "idsalder\x06i fjor\x05i år\x09neste år\x08+{0} år\x0a–{0} år\x0fforrige " + - "kvartal\x0fdette kvartalet\x0dneste kvartal\x0bforrige kv.\x09dette kv." + - "\x09neste kv.\x0aom {0} kv.\x11for {0} kv. siden\x0a–{0} kv.\x0eforrige " + - "måned\x0edenne måneden\x0cneste måned\x04mnd.\x0bforrige md.\x09denne md" + - ".\x09neste md.\x08+{0} md.\x08-{0} md.\x03uke\x0bforrige uke\x0adenne uk" + - "en\x09neste uke\x0aom {0} uke\x0bom {0} uker\x11for {0} uke siden\x12for" + - " {0} uker siden\x08uken {0}\x09om {0} u.\x10for {0} u. siden\x06u. {0}" + - "\x0com {0} døgn\x13for {0} døgn siden\x09om {0} d.\x10for {0} d. siden" + - "\x07+{0} d.\x07-{0} d.\x06ukedag\x10søndag sist uke\x12søndag denne uken" + - "\x11søndag neste uke\x0asist søn.\x0bdenne søn.\x0bneste søn.\x0com {0} " + - "søn.\x13for {0} søn. siden\x09sist sø.\x0adenne sø.\x0aneste sø.\x0bom {" + - "0} sø.\x12for {0} sø. siden\x0fmandag sist uke\x11mandag denne uken\x10m" + - "andag neste uke\x09sist man.\x0adenne man.\x0aneste man.\x0bom {0} man." + - "\x12for {0} man. siden\x08sist ma.\x09denne ma.\x09neste ma.\x0aom {0} m" + - "a.\x11for {0} ma. siden\x10tirsdag sist uke\x12tirsdag denne uken\x11tir" + - "sdag neste uke\x09sist tir.\x0adenne tir.\x0aneste tir.\x0bom {0} tir." + - "\x12for {0} tir. siden\x08sist ti.\x09denne ti.\x09neste ti.\x0aom {0} t" + - "i.\x11for {0} ti. siden\x0fonsdag sist uke\x11onsdag denne uken\x10onsda" + - "g neste uke\x09sist ons.\x0adenne ons.\x0aneste ons.\x0bom {0} ons.\x12f" + - "or {0} ons. siden\x08sist on.\x09denne on.\x09neste on.\x0aom {0} on." + - "\x11for {0} on. siden\x10torsdag sist uke\x12torsdag denne uken\x11torsd" + - "ag neste uke\x09sist tor.\x0adenne tor.\x0aneste tor.\x0bom {0} tor.\x12" + - "for {0} tor. siden\x08sist to.\x09denne to.\x09neste to.\x0aom {0} to." + - "\x11for {0} to. siden\x0ffredag sist uke\x11fredag denne uken\x10fredag " + - "neste uke\x09sist fre.\x0adenne fre.\x0aneste fre.\x0bom {0} fre.\x12for" + - " {0} fre. siden\x08sist fr.\x09denne fr.\x09neste fr.\x0aom {0} fr.\x11f" + - "or {0} fr. siden\x10lørdag sist uke\x12lørdag denne uken\x11lørdag neste" + - " uke\x0asist lør.\x0bdenne lør.\x0bneste lør.\x0com {0} lør.\x13for {0} " + - "lør. siden\x09sist lø.\x0adenne lø.\x0aneste lø.\x0bom {0} lø.\x12for {0" + - "} lø. siden\x0bdenne timen\x08om {0} t\x0ffor {0} t siden\x06+{0} t\x06-" + - "{0} t\x06minutt\x0edette minuttet\x0dom {0} minutt\x0fom {0} minutter" + - "\x14for {0} minutt siden\x16for {0} minutter siden\x0aom {0} min\x11for " + - "{0} min siden\x03nå\x0aom {0} sek\x11for {0} sek siden\x08tidssone\x10ti" + - "dssone for {0}\x11sommertid – {0}\x11normaltid – {0}\x17Koordinert unive" + - "rsaltid\x11britisk sommertid\x0eirsk sommertid\x0eAcre normaltid\x0eAcre" + - " sommertid\x0cafghansk tid\x14sentralafrikansk tid\x11østafrikansk tid" + - "\x11sørafrikansk tid\x17vestafrikansk normaltid\x17vestafrikansk sommert" + - "id\x12alaskisk normaltid\x12alaskisk sommertid\x13Almaty, standardtid" + - "\x11Almaty, sommertid\x16normaltid for Amazonas\x16sommertid for Amazona" + - "s'normaltid for det sentrale Nord-Amerika'sommertid for det sentrale Nor" + - "d-Amerika,normaltid for den nordamerikanske østkysten,sommertid for den " + - "nordamerikanske østkysten#normaltid for Rocky Mountains (USA)#sommertid " + - "for Rocky Mountains (USA)2normaltid for den nordamerikanske Stillehavsky" + - "sten2sommertid for den nordamerikanske Stillehavskysten\x1aRussisk (Anad" + - "yr) normaltid\x1aRussisk (Anadyr) sommertid\x12normaltid for Apia\x12som" + - "mertid for Apia\x12Aqtau, standardtid\x10Aqtau, sommertid\x13Aqtobe, sta" + - "ndardtid\x11Aqtobe, sommertid\x13arabisk standardtid\x11arabisk sommerti" + - "d\x14argentinsk normaltid\x14argentinsk sommertid\x18vestargentinsk norm" + - "altid\x18vestargentinsk sommertid\x11armensk normaltid\x11armensk sommer" + - "tid\x1fatlanterhavskystlig standardtid\x1datlanterhavskystlig sommertid" + - "\x1asentralaustralsk normaltid\x1asentralaustralsk sommertid\x1fvest-sen" + - "tralaustralsk normaltid\x1fvest-sentralaustralsk sommertid\x17østaustral" + - "sk normaltid\x17østaustralsk sommertid\x17vestaustralsk normaltid\x17ves" + - "taustralsk sommertid\x18aserbajdsjansk normaltid\x18aserbajdsjansk somme" + - "rtid\x11asorisk normaltid\x11asorisk sommertid\x17bangladeshisk normalti" + - "d\x17bangladeshisk sommertid\x0cbhutansk tid\x0eboliviansk tid\x16normal" + - "tid for Brasilia\x16sommertid for Brasilia\x1etidssone for Brunei Daruss" + - "alam\x18normaltid for Kapp Verde\x18sommertid for Kapp Verde\x09Casey-ti" + - "d\x15tidssone for Chamorro\x15normaltid for Chatham\x15sommertid for Cha" + - "tham\x12chilensk normaltid\x12chilensk sommertid\x12kinesisk normaltid" + - "\x12kinesisk sommertid\x19normaltid for Tsjojbalsan\x19sommertid for Tsj" + - "ojbalsan\x1atidssone for Christmasøya\x18tidssone for Kokosøyene\x15colo" + - "mbiansk normaltid\x15colombiansk sommertid\x18normaltid for Cookøyene" + - "\x1dhalv sommertid for Cookøyene\x11cubansk normaltid\x11cubansk sommert" + - "id\x12tidssone for Davis\x1ftidssone for Dumont d’Urville\x12østtimoresi" + - "sk tid\x18normaltid for Påskeøya\x18sommertid for Påskeøya\x10ecuadorian" + - "sk tid\x1asentraleuropeisk normaltid\x1asentraleuropeisk sommertid\x17øs" + - "teuropeisk normaltid\x17østeuropeisk sommertid\x17fjern-østeuropeisk tid" + - "\x17vesteuropeisk normaltid\x17vesteuropeisk sommertid\x1dnormaltid for " + - "Falklandsøyene\x1dsommertid for Falklandsøyene\x12fijiansk normaltid\x12" + - "fijiansk sommertid\x1atidssone for Fransk Guyana'tidssone for De franske" + - " sørterritorier\x1dtidssone for Galápagosøyene\x14tidssone for Gambier" + - "\x12georgisk normaltid\x12georgisk sommertid\x1atidssone for Gilbertøyen" + - "e\x13Greenwich middeltid\x19østgrønlandsk normaltid\x19østgrønlandsk som" + - "mertid\x19vestgrønlandsk normaltid\x19vestgrønlandsk sommertid\x08Guam-t" + - "id\x18tidssone for Persiabukta\x0bguyansk tid normaltid for Hawaii og Al" + - "eutene sommertid for Hawaii og Aleutene\x16normaltid for Hongkong\x16som" + - "mertid for Hongkong\x13normaltid for Khovd\x13sommertid for Khovd\x0aind" + - "isk tid\x17tidssone for Indiahavet\x10indokinesisk tid\x15sentralindones" + - "isk tid\x12østindonesisk tid\x12vestindonesisk tid\x10iransk normaltid" + - "\x10iransk sommertid\x15normaltid for Irkutsk\x15sommertid for Irkutsk" + - "\x12israelsk normaltid\x12israelsk sommertid\x11japansk normaltid\x11jap" + - "ansk sommertid.Russisk (Petropavlovsk-Kamtsjatskij) normaltid.Russisk (P" + - "etropavlovsk-Kamtsjatskij) sommertid\x14østkasakhstansk tid\x14vestkasak" + - "hstansk tid\x12koreansk normaltid\x12koreansk sommertid\x13tidssone for " + - "Kosrae\x19normaltid for Krasnojarsk\x19sommertid for Krasnojarsk\x0dkirg" + - "isisk tid\x09Lanka-tid\x18tidssone for Linjeøyene\x1cnormaltid for Lord " + - "Howe-øya\x1csommertid for Lord Howe-øya\x12Macau, standardtid\x10Macau, " + - "sommertid\x1atidssone for Macquarieøya\x15normaltid for Magadan\x15somme" + - "rtid for Magadan\x0dmalaysisk tid\x0dmaldivisk tid\x1ctidssone for Marqu" + - "esasøyene\x1btidssone for Marshalløyene\x13mauritisk normaltid\x13maurit" + - "isk sommertid\x13tidssone for Mawson!normaltid for nordvestlige Mexico!s" + - "ommertid for nordvestlige Mexico.normaltid for den meksikanske Stillehav" + - "skysten.sommertid for den meksikanske Stillehavskysten\x18normaltid for " + - "Ulan Bator\x18sommertid for Ulan Bator\x14normaltid for Moskva\x14sommer" + - "tid for Moskva\x0dmyanmarsk tid\x0bnaurisk tid\x0bnepalsk tid\x13kaledon" + - "sk normaltid\x13kaledonsk sommertid\x16newzealandsk normaltid\x16newzeal" + - "andsk sommertid\x1anormaltid for Newfoundland\x1asommertid for Newfoundl" + - "and\x11tidssone for Niue\x18tidssone for Norfolkøya!normaltid for Fernan" + - "do de Noronha!sommertid for Fernando de Noronha\x12Nord-Marianene-tid" + - "\x19normaltid for Novosibirsk\x19sommertid for Novosibirsk\x12normaltid " + - "for Omsk\x12sommertid for Omsk\x14pakistansk normaltid\x14pakistansk som" + - "mertid\x0cpalauisk tid\x0cpapuansk tid\x16paraguayansk normaltid\x16para" + - "guayansk sommertid\x12peruansk normaltid\x12peruansk sommertid\x14filipp" + - "insk normaltid\x14filippinsk sommertid\x1atidssone for Phoenixøyene&norm" + - "altid for Saint-Pierre-et-Miquelon&sommertid for Saint-Pierre-et-Miquelo" + - "n\x15tidssone for Pitcairn\x14tidssone for Pohnpei\x16tidssone for Pyong" + - "yang\x16Qyzylorda, standardtid\x14Qyzylorda, sommertid\x15tidssone for R" + - "éunion\x14tidssone for Rothera\x16normaltid for Sakhalin\x16sommertid f" + - "or Sakhalin\x1aRussisk (Samara) normaltid\x1aRussisk (Samara) sommertid" + - "\x12samoansk normaltid\x12samoansk sommertid\x0fseychellisk tid\x0esinga" + - "porsk tid\x1atidssone for Salomonøyene\x19tidssone for Sør-Georgia\x0dsu" + - "rinamsk tid\x12tidssone for Syowa\x0ctahitisk tid\x14normaltid for Taipe" + - "i\x14sommertid for Taipei\x0etadsjikisk tid\x14tidssone for Tokelau\x12t" + - "ongansk normaltid\x12tongansk sommertid\x18tidssone for Chuukøyene\x13tu" + - "rkmensk normaltid\x13turkmensk sommertid\x0btuvalsk tid\x15uruguayansk n" + - "ormaltid\x15uruguayansk sommertid\x12usbekisk normaltid\x12usbekisk somm" + - "ertid\x13vanuatisk normaltid\x13vanuatisk sommertid\x10venezuelansk tid" + - "\x19normaltid for Vladivostok\x19sommertid for Vladivostok\x17normaltid " + - "for Volgograd\x17sommertid for Volgograd\x13tidssone for Vostok\x18tidss" + - "one for Wake Island$tidssone for Wallis- og Futunaøyene\x15normaltid for" + - " Jakutsk\x15sommertid for Jakutsk\x1bnormaltid for Jekaterinburg\x1bsomm" + - "ertid for Jekaterinburg\x04må.\x03ty.\x03la.\x09dette år\x09denne uke" + - "\x11austafrikansk tid\x19vestafrikansk standardtid\x1csentralaustralsk s" + - "tandardtid!vest-sentralaustralsk standardtid\x19austaustralsk standardti" + - "d\x19vestaustralsk standardtid\x1csentraleuropeisk standardtid\x19austeu" + - "ropeisk standardtid\x0eKaliningradtid\x19vesteuropeisk standardtid\x13gr" + - "eenwich middeltid\x06taqemt\x03ter\x06nehase\x08khordād\x07mordād\x06ābā" + - "n\x05āzar" - -var bucket76 string = "" + // Size: 22272 bytes - "\x03Zib\x04Nhlo\x03Mbi\x03Mab\x03Nkw\x04Nhla\x03Ntu\x03Ncw\x04Mpan\x03Mf" + - "u\x03Lwe\x04Mpal\x0aZibandlela\x09Nhlolanja\x09Mbimbitho\x06Mabasa\x0aNk" + - "wenkwezi\x09Nhlangula\x09Ntulikazi\x0aNcwabakazi\x08Mpandula\x06Mfumfu" + - "\x05Lwezi\x09Mpalakazi\x05Sonto\x05Mvulo\x06Sibili\x08Sithathu\x04Sine" + - "\x07Sihlanu\x08Mgqibelo\x06Kota 1\x06Kota 2\x06Kota 3\x06Kota 4\x12UKris" + - "to angakabuyi\x0fUkristo ebuyile\x07Umnyaka\x0bInyangacale\x05Iviki\x06I" + - "langa\x05Izolo\x07Lamuhla\x06Kusasa\x0dIlanga leviki\x05Ihola\x07Umuzuzu" + - "\x08Isekendi\x09Isikhathi\x16EEEE, 'de' d. MMMM y G\x0dd.MM.yy GGGGG\x07" + - "Januaar\x08Februaar\x05März\x05April\x03Mai\x04Juni\x04Juli\x06August" + - "\x09September\x07Oktover\x08November\x08Dezember\x05März\x03Mai\x04Juni" + - "\x04Juli\x04Sü.\x03Ma.\x03Di.\x03Mi.\x03Du.\x03Fr.\x03Sa.\x08Sünndag\x07" + - "Maandag\x08Dingsdag\x0aMiddeweken\x0aDunnersdag\x07Freedag\x0aSünnavend" + - "\x03Q.1\x03Q.2\x03Q.3\x03Q.4\x0b1. Quartaal\x0b2. Quartaal\x0b3. Quartaa" + - "l\x0b4. Quartaal\x04Q. I\x05Q. II\x06Q. III\x05Q. IV\x02vm\x02nm\x0dvör " + - "Christus\x0dvör uns Tiet\x0bna Christus\x0fbinnen uns Tiet\x06v.Chr.\x06" + - "v.u.T.\x06n.Chr.\x06b.u.T.\x03vuT\x03buT\x14EEEE, 'de' d. MMMM y\x16'Klo" + - "ck' H.mm:ss (zzzz)\x13'Klock' H.mm:ss (z)\x0f'Klock' H.mm:ss\x0a'Kl'. H." + - "mm\x04Ära\x0dverleden Johr\x08dit Johr\x0cnakamen Jahr\x08Quartaal\x05Ma" + - "and\x0everleden Maand\x0bdisse Maand\x0dnakamen Maand\x0dverleden Week" + - "\x0adisse Week\x0cnakamen Week\x03Wk.\x08güstern\x07vundaag\x06morgen" + - "\x08Wekendag\x07Halvdag\x06Stünn\x06Minuut\x06Sekunn\x0aTietrebeet\x08{0" + - "}-Tiet\x0e{0}-Summertiet\x10{0}-Standardtiet\x18Zentraalafrikaansch Tiet" + - "\x14Oostafrikaansch Tiet\x16Söödafrikaansch Tiet\x14Westafrikaansch Tiet" + - "\x1cWestafrikaansch Standardtiet\x1aWestafrikaansch Summertiet\x1eNoorda" + - "merikaansch Zentraaltiet'Noordamerikaansch zentraal Standardtiet%Noordam" + - "erikaansch zentraal Summertiet\x1dNoordamerikaansch oosten Tiet%Noordame" + - "rikaansch oosten Standardtiet#Noordamerikaansch oosten Summertiet\x1aNoo" + - "rdamerikaansch Bargtiet#Noordamerikaansch Barg-Standardtiet!Noordamerika" + - "ansch Barg-Summertiet\x1dNoordamerikaansch Pazifiktiet&Noordamerikaansch" + - " Pazifik-Standardtiet$Noordamerikaansch Pazifik-Summertiet\x0dAraabsch T" + - "iet\x15Araabsch Standardtiet\x13Araabsch Summertiet\x1eNoordamerikaansch" + - " Atlantiktiet'Noordamerikaansch Atlantik-Standardtiet%Noordamerikaansch " + - "Atlantik-Summertiet\x18Zentraalaustraalsch Tiet Zentraalaustraalsch Stan" + - "dardtiet\x1eZentraalaustraalsch Summertiet\x1cWestzentraalaustraalsch Ti" + - "et$Westzentraalaustraalsch Standardtiet\x22Westzentraalaustraalsch Summe" + - "rtiet\x14Oostaustraalsch Tiet\x1cOostaustraalsch Standardtiet\x1aOostaus" + - "traalsch Summertiet\x14Westaustraalsch Tiet\x1cWestaustraalsch Standardt" + - "iet\x1aWestaustraalsch Summertiet\x0aChina-Tiet\x12China-Standardtiet" + - "\x10China-Summertiet\x19Zentraaleuropääsch Tiet!Zentraaleuropääsch Stand" + - "ardtiet\x1fZentraaleuropääsch Summertiet\x15Oosteuropääsch Tiet\x1dOoste" + - "uropääsch Standardtiet\x1bOosteuropääsch Summertiet\x15Westeuropääsch Ti" + - "et\x1dWesteuropääsch Standardtiet\x1bWesteuropääsch Summertiet\x15Gröönw" + - "isch-Welttiet\x0bIndien-Tiet\x18Söödoostasiaatsch Tiet\x17Indoneesch Zen" + - "traaltiet\x13Oostindoneesch Tiet\x13Westindoneesch Tiet\x0bIsrael-Tiet" + - "\x13Israel-Standardtiet\x11Israel-Summertiet\x0eJapaansch Tiet\x16Japaan" + - "sch Standardtiet\x14Japaansch Summertiet\x0fKoreaansch Tiet\x17Koreaansc" + - "h Standardtiet\x15Koreaansch Summertiet\x0bMoskau-Tiet\x13Moskau-Standar" + - "dtiet\x11Moskau-Summertiet\x0c{1}{0}मा\x07{1},{0}\x09आइत\x09सोम\x0fमङ्गल" + - "\x09बुध\x0cबिहि\x0fशुक्र\x09शनि\x12आइतबार\x12सोमबार\x18मङ्गलबार\x12बुधबा" + - "र\x15बिहिबार\x18शुक्रबार\x12शनिबार\x1cपहिलो सत्र\x1fदोस्रो सत्र\x1fतेस" + - "्रो सत्र\x19चौथो सत्र\x15मध्यरात\x0fबिहान\x15अपरान्ह\x0cसाँझ\x12बेलुका" + - "\x19ईसा पूर्व\x1eइस्वीपूर्व\x09सन्\x13ईसा काल\x13गत वर्ष\x13यो वर्ष\x1cअ" + - "र्को वर्ष\x16{0} वर्षमा\x1a{0} वर्ष अघि\x0cबर्ष\x0cसत्र\x22अघिल्लो सत्" + - "र\x13यो सत्र\x1cअर्को सत्र\x17+{0} सत्रमा\x15{0}सत्रमा\x19{0}सत्र अघि" + - "\x16गत महिना\x16यो महिना\x1fअर्को महिना\x19{0} महिनामा#{0} महिना पहिले" + - "\x0fहप्ता\x16गत हप्ता\x16यो हप्ता\x1cआउने हप्ता\x19{0} हप्तामा#{0} हप्ता" + - " पहिले\x19{0}को हप्ता\x1a{0} को हप्ता\x09बार\x0fअस्ति\x0cहिजो\x06आज\x0cभ" + - "ोलि\x0fपर्सि\x13{0} दिनमा\x1d{0} दिन पहिले\x1fहप्ताको बार\x19गत आइतबार" + - "\x19यो आइतबार\x22अर्को आइतबार\x1c{0} आइतबारमा%{0} आइतबारहरूमा%{0}आइतबार " + - "पहिले/{0} आइतबारहरू पहिले\x19गत सोमबार\x19यो सोमबार\x22अर्को सोमबार%{0" + - "} सोमबारहरूमा${0}सोमबारहरूमा.{0}सोमबारहरू पहिले\x1cगत मंगलबार\x1cयो मंगल" + - "बार%अर्को मंगलबार\x1e{0}मंगलबारमा({0} मंगलबारहरूमा({0}मंगलबार पहिले){0" + - "} मंगलबार पहिले2{0} मंगलबारहरू पहिले\x19गत बुधबार\x19यो बुधबार\x22अर्को " + - "बुधबार\x1c{0} बुधबारमा+{0} बुधबारमाहरूमा%{0}बुधबार पहिले.{0}बुधबारहरू " + - "पहिले%{0} बुधबारहरूमा${0}बुधबारहरूमा\x1cगत बिहिबार\x1cयो बिहिबार%अर्को" + - " बिहिबार'{0}बिहिबारहरूमा({0}बिहिबार पहिले1{0}बिहिबारहरू पहिले\x1fगत शुक्" + - "रबार\x1fयो शुक्रबार(अर्को शुक्रबार!{0}शुक्रबारमा*{0}शुक्रबारहरूमा+{0}श" + - "ुक्रबार पहिले4{0}शुक्रबारहरू पहिले\x19गत शनिबार\x19यो शनिबार\x22अर्को " + - "शनिबार\x1b{0}शनिबारमा${0}शनिबारहरूमा%{0}शनिबार पहिले.{0}शनिबारहरू पहिल" + - "े3पूर्वाह्न / अपराह्न\x0fघण्टा\x16यो घडीमा\x19{0} घण्टामा#{0} घण्टा पह" + - "िले\x0fमिनेट\x1fयही मिनेटमा\x19{0} मिनेटमा#{0} मिनेट पहिले\x15सेकेन्ड" + - "\x1f{0} सेकेण्डमा){0} सेकेण्ड पहिले/समन्वित विश्व समयDबेलायती ग्रीष्मकाल" + - "ीन समय&आइरिश मानक समय+अफगानिस्तान समय;केन्द्रीय अफ्रिकी समय2पूर्वी अफ्" + - "रिकी समय2दक्षिण अफ्रिकी समय2पश्चिम अफ्रिकी समय?पश्चिम अफ्रिकी मानक समय" + - "Wपश्चिम अफ्रिकी ग्रीष्मकालीन समय\x22अलस्काको समय/अलस्काको मानक समय/अलस्क" + - "ाको दिवा समय\x19अमेजन समय&अमेजन मानक समय>अमेजन ग्रीष्मकालीन समय%केन्द्" + - "रीय समय2केन्द्रीय मानक समय2केन्द्रीय दिवा समय\x1cपूर्वी समय)पूर्वी मान" + - "क समय)पूर्वी दिवा समय\x1cहिमाली समय)हिमाली मानक समय)हिमाली दिवा समय%प्" + - "यासिफिक समय2प्यासिफिक मानक समय2प्यासिफिक दिवा समय\x19आपिया समय&आपिया म" + - "ानक समय&आपिया दिवा समय\x16अरबी समय#अरबी मानक समय#अरबी दिवा समय(अर्जेनट" + - "िनी समय5अर्जेनटिनी मानक समयMअर्जेनटिनी ग्रीष्मकालीन समय>पश्चिमी अर्जेन" + - "टिनी समयKपश्चिमी अर्जेनटिनी मानक समयcपश्चिमी अर्जेनटिनी ग्रीष्मकालीन स" + - "मय%अर्मेनिया समय2अर्मेनिया मानक समयJअर्मेनिया ग्रीष्मकालीन समय(एट्लान्" + - "टिक समय5एट्लान्टिक मानक समय5एट्लान्टिक दिवा समयGकेन्द्रीय अस्ट्रेलिया " + - "समयTकेन्द्रीय अस्ट्रेलिया मानक समयTकेन्द्रीय अस्ट्रेलिया दिवा समय]केन्" + - "द्रीय पश्चिमी अस्ट्रेलिया समयjकेन्द्रीय पश्चिमी अस्ट्रेलिया मानक समयjक" + - "ेन्द्रीय पश्चिमी अस्ट्रेलिया दिवा समय>पूर्वी अस्ट्रेलिया समयKपूर्वी अस" + - "्ट्रेलिया मानक समयKपूर्वी अस्ट्रेलिया दिवा समयAपश्चिमी अस्ट्रेलिया समय" + - "Nपश्चिमी अस्ट्रेलिया मानक समयNपश्चिमी अस्ट्रेलिया दिवा समय\x22अजरबैजान स" + - "मय/अजरबैजान मानक समयGअजरबैजान ग्रीष्मकालीन समय\x1fएजोरेस् समय,एजोरेस् " + - "मानक समयDएजोरेस् ग्रीष्मकालीन समय%बंगलादेशी समय2बंगलादेशी मानक समयJबंग" + - "लादेशी ग्रीष्मकालीन समय\x1cभुटानी समय\x22बोलिभिया समय(ब्राजिलीया समय5ब" + - "्राजिलिया मानक समयMब्राजिलीया ग्रीष्मकालीन समय;ब्रुनाइ दारूस्सलम समय#क" + - "ेप भर्दे समय0केप भर्दे मानक समयHकेप भर्दे ग्रीष्मकालीन समय/चामोर्रो मा" + - "नक समय\x19चाथाम समय&चाथाम मानक समय&चाथाम दिवा समय\x16चिली समय#चिली मान" + - "क समय;चिली ग्रीष्मकालीन समय\x13चीन समय चीन मानक समय चीन दिवा समय%चोइबा" + - "ल्सन समय2चोइबाल्सन मानक समयJचोइबाल्सन ग्रीष्मकालीन समय/क्रिस्मस टापु स" + - "मय&कोकोस टापु समय+कोलम्बियाली समय8कोलम्बियाली मानक समयPकोलम्बियाली ग्र" + - "ीष्मकालीन समय कुक टापु समय-कुक टापु मानक समयOकुक टापु आधा ग्रीष्मकालीन" + - " समय\x22क्यूबाको समय/क्यूबाको मानक समय/क्यूबाको दिवा समय\x19डेभिस समय?डु" + - "मोन्ट-डी‘ उर्भिले समय,पूर्वी टिमोर समय&इस्टर टापू समय3इस्टर टापू मानक " + - "समय<इस्टर टापू ग्रीष्म समय\x22ईक्वोडोर समय>केन्द्रीय युरोपेली समयKकेन्" + - "द्रीय युरोपेली मानक समयcकेन्द्रीय युरोपेली ग्रीष्मकालीन समय5पूर्वी युर" + - "ोपेली समयBपूर्वी युरोपेली मानक समयZपूर्वी युरोपेली ग्रीष्मकालीन समय<थप" + - "-पूर्वी युरोपेली समय8पश्चिमी युरोपेली समयEपश्चिमी युरोपेली मानक समयGयुरो" + - "पेली ग्रीष्मकालीन समय8फल्कल्यान्ड टापू समयEफल्कल्यान्ड टापू मानक समय]फ" + - "ल्कल्यान्ड टापू ग्रीष्मकालीन समय\x16फिजी समय#फिजी मानक समय;फिजी ग्रीष्" + - "मकालीन समय2फ्रेन्च ग्वाना समयXफ्रेन्च दक्षिणी र अन्टार्टिक समय(गालापाग" + - "ोस् समय(ग्याम्बियर समय\x1fजर्जिया समय,जर्जिया मानक समयDजर्जिया ग्रीष्म" + - "कालीन समय/गिल्बर्ट टापु समय,ग्रीनविच मिन समयGपूर्वी ग्रीनल्यान्डको समय" + - "Tपूर्वी ग्रीनल्यान्डको मानक समयlपूर्वी ग्रीनल्यान्डको ग्रीष्मकालीन समयJप" + - "श्चिमी ग्रीनल्यान्डको समयWपश्चिमी ग्रीनल्यान्डको मानक समयoपश्चिमी ग्री" + - "नल्यान्डको ग्रीष्मकालीन समय#खाडी मानक समय\x1cगुयाना समय,हवाई-एलुटियन स" + - "मय9हवाई-एलुटियन मानक समय9हवाई-एलुटियन दिवा समय\x16हङकङ समय#हङकङ मानक स" + - "मय;हङकङ ग्रीष्मकालीन समय\x19होब्ड समय&होब्ड मानक समय>होब्ड ग्रीष्मकाली" + - "न समय)भारतीय मानक समय/हिन्द महासागर समय(इन्डोचाइना समयGकेन्द्रीय इन्डो" + - "नेशिया समय>पूर्वी इन्डोनेशिया समयAपश्चिमी इन्डोनेशिया समय\x19इरानी समय" + - "&इरानी मानक समय&इरानी दिवा समय(ईर्कुट्स्क समय5ईर्कुट्स्क मानक समयMईर्कुट" + - "्स्क ग्रीष्मकालीन समय\x1cइजरायल समय)इजरायल मानक समय)इजरायल दिवा समय" + - "\x19जापान समय&जापान मानक समय&जापान दिवा समय8पूर्वी काजकस्तान समय8पश्चिम " + - "काजकस्तान समय\x22कोरियाली समय/कोरियाली मानक समय/कोरियाली दिवा समय\x1cक" + - "ोसराए समय.क्रासनोयार्क समय;क्रासनोयार्क मानक समयSक्रासनोयार्क ग्रीष्मक" + - "ालीन समय+किर्गिस्तान समय#लाइन टापु समय#लर्ड हावे समय0लर्ड हावे मानक सम" + - "य0लर्ड हावे दिवा समय/माक्वेरी टापु समय\x1fमागादान समय,मागादान मानक समय" + - "Dमागादान ग्रीष्मकालीन समय\x1fमलेसिया समय%माल्दिभ्स समय\x22मार्किसस समय)म" + - "ार्शल टापु समय\x1cमउरिटस समय)मउरिटस मानक समयAमउरिटस ग्रीष्मकालीन समय" + - "\x19म्वसन समयEउत्तर पश्चिम मेक्सिको समयXउत्तर पश्चिम मेक्सिकोको मानक समय" + - "Xउत्तर पश्चिम मेक्सिकोको दिवा समय>मेक्सिकन प्यासिफिक समयKमेक्सिकन प्यासि" + - "फिक मानक समयKमेक्सिकन प्यासिफिक दिवा समय&उलान बाटोर समय3उलान बाटोर मान" + - "क समयKउलान बाटोर ग्रीष्मकालीन समय\x19मस्को समय&मस्को मानक समय>मस्को ग्" + - "रीष्मकालीन समय\x22म्यानमार समय\x19नाउरु समय\x1cनेपाली समय5नयाँ कालेदोन" + - "िया समयBनयाँ कालेदोनिया मानक समयZनयाँ कालेदोनिया ग्रीष्मकालीन समय1न्यू" + - "जिल्यान्ड समय>न्यूजिल्यान्ड मानक समय>न्यूजिल्यान्ड दिवा समयCन्यूफाउन्ड" + - "ल्यान्डको समयMन्यूफाउनडल्यान्डको मानक समयJन्यूफाउनल्यान्डको दिवा समय" + - "\x16निउए समय/नोर्फल्क टापू समयEफर्नान्डो डे नोरोन्हा समयRफर्नान्डो डे नो" + - "रोन्हा मानक समयjफर्नान्डो डे नोरोन्हा ग्रीष्मकालीन समय1नोभोसिविर्स्क स" + - "मय>नोभोसिविर्स्क मानक समयVनोभोसिविर्स्क ग्रीष्मकालीन समय\x1cओम्स्क समय" + - ")ओम्स्क मानक समयAओम्स्क ग्रीष्मकालीन समय(पाकिस्तानी समय5पाकिस्तानी मानक " + - "समयMपाकिस्तानी ग्रीष्मकालीन समय\x19पालाउ समय3पपूवा न्यू गिनी समय\x22पा" + - "राग्वे समय/पाराग्वे मानक समयGपाराग्वे ग्रीष्मकालीन समय\x16पेरु समय#पेर" + - "ू मानक समय;पेरु ग्रीष्मकालीन समय\x22फिलिपिनी समय/फिलिपिनी मानक समयGफिल" + - "िपिनी ग्रीष्मकालीन समय,फिनिक्स टापु समयUसेन्ट पियर्रे र मिक्युलोनको सम" + - "यbसेन्ट पियर्रे र मिक्युलोनको मानक समयbसेन्ट पियर्रे र मिक्युलोनको दिव" + - "ा समय\x1fपिटकैरण समय\x1cपोनापे समय\x22प्योङयाङ समय\x22रियुनियन समय\x1c" + - "रोथेरा समय\x1fसाखालिन समय,साखालिन मानक समयDसाखालिन ग्रीष्मकालीन समय" + - "\x19सामोअ समय&सामोअ मानक समय&सामोअ दिवा समय(सेयेचेलास् समय/सिंगापुर मानक" + - " समय,सोलोमोन टापु समय2दक्षिण जर्जिया समय\x22सुरिनामा समय\x1cस्योवा समय" + - "\x1cताहिती समय\x1cताइपेइ समय)ताइपेइ मानक समय)ताइपेइ दिवा समय(ताजिकस्तान " + - "समय\x1fतोकेलाउ समय\x19टोंगा समय&टोंगा मानक समय>टोंगा ग्रीष्मकालीन समय" + - "\x16चुउक समय4तुर्कमेनिस्तान समयAतुर्कमेनिस्तान मानक समयfतुर्कमेनिस्तान ग" + - "्रीष्मकालीन मानक समय\x1cटुभालु समय\x1fउरुग्वे समय,उरूग्वे मानक समयDउरु" + - "ग्वे ग्रीष्मकालीन समय.उज्बेकिस्तान समय;उज्बेकिस्तान मानक समयSउज्बेकिस्" + - "तान ग्रीष्मकालीन समय\x1fभानुआतु समय,भानुआतु मानक समयDभानुआतु ग्रीष्मका" + - "लीन समय+भेनेज्युएला समय1भ्लादिभास्टोक समय>भ्लादिभास्टोक मानक समयVभ्लाद" + - "िभास्टोक ग्रीष्मकालीन समय+भोल्गाग्राड समय8भोल्गाग्राद मानक समयPभोल्गाग" + - "्राद ग्रीष्मकालीन समय\x1fभास्टोक समय वेक टापु समय3वालिस् र फुटुना समय" + - "\x1fयाकुस्ट समय,याकुस्ट मानक समयDयाकुस्ट ग्रीष्मकालीन समय1येकाटेरिनबर्ग " + - "समय>येकाटेरिनबर्ग मानक समयVयेकाटेरिनबर्ग ग्रीष्मकालीन समय" - -var bucket77 string = "" + // Size: 10614 bytes - "\x05mnd 1\x05mnd 2\x05mnd 3\x05mnd 4\x05mnd 5\x05mnd 6\x05mnd 7\x05mnd 8" + - "\x05mnd 9\x06mnd 10\x06mnd 11\x06mnd 12\x07maand 1\x07maand 2\x07maand 3" + - "\x07maand 4\x07maand 5\x07maand 6\x07maand 7\x07maand 8\x07maand 9\x08ma" + - "and 10\x08maand 11\x08maand 12\x12begin van de lente\x0aregenwater\x11in" + - "secten ontwaken\x09lentepunt\x0flicht en helder\x09nat graan\x12begin va" + - "n de zomer\x09vol graan\x0boogst graan\x09zomerpunt\x04warm\x04heet\x13b" + - "egin van de herfst\x12einde van de hitte\x0awitte dauw\x0aherfstpunt\x0a" + - "koude dauw\x0ceerste vorst\x13begin van de winter\x0dlichte sneeuw\x0czw" + - "are sneeuw\x0awinterpunt\x04koel\x04koud\x02zo\x02ma\x02di\x02wo\x02do" + - "\x02vr\x02za\x06zondag\x07maandag\x07dinsdag\x08woensdag\x09donderdag" + - "\x07vrijdag\x08zaterdag\x0b1e kwartaal\x0b2e kwartaal\x0b3e kwartaal\x0b" + - "4e kwartaal\x0bmiddernacht\x07ochtend\x05avond\x05nacht\x0d‘s ochtends" + - "\x0c‘s middags\x0b‘s avonds\x0b‘s nachts\x19vóór gewone jaartelling\x12g" + - "ewone jaartelling\x0bvoor R.O.C.\x06Minguo\x08tijdperk\x0avorig jaar\x08" + - "dit jaar\x0cvolgend jaar\x0dover {0} jaar\x10{0} jaar geleden\x02jr\x0ev" + - "orig kwartaal\x0cdit kwartaal\x10volgend kwartaal\x11over {0} kwartaal" + - "\x12over {0} kwartalen\x14{0} kwartaal geleden\x15{0} kwartalen geleden" + - "\x0cvorige maand\x0adeze maand\x0evolgende maand\x0eover {0} maand\x10ov" + - "er {0} maanden\x11{0} maand geleden\x13{0} maanden geleden\x03mnd\x0bvor" + - "ige week\x09deze week\x0dvolgende week\x0dover {0} week\x0eover {0} weke" + - "n\x10{0} week geleden\x11{0} weken geleden\x0fde week van {0}\x0cover {0" + - "} dag\x0eover {0} dagen\x0f{0} dag geleden\x11{0} dagen geleden\x0cover " + - "{0} dgn\x0f{0} dgn geleden\x0fdag van de week\x10afgelopen zondag\x0bdez" + - "e zondag\x14volgende week zondag\x0fover {0} zondag\x11over {0} zondagen" + - "\x12{0} zondag geleden\x14{0} zondagen geleden\x0eafgelopen zon.\x09deze" + - " zon.\x12volgende week zon.\x0dover {0} zon.\x10{0} zon. geleden\x0cafge" + - "lopen zo\x07deze zo\x10volgende week zo\x0bover {0} zo\x0e{0} zo geleden" + - "\x11afgelopen maandag\x0cdeze maandag\x15volgende week maandag\x10over {" + - "0} maandag\x12over {0} maandagen\x13{0} maandag geleden\x15{0} maandagen" + - " geleden\x0fafgelopen maan.\x0adeze maan.\x13volgende week maan.\x0eover" + - " {0} maan.\x11{0} maan. geleden\x0cafgelopen ma\x07deze ma\x10volgende w" + - "eek ma\x0bover {0} ma\x0e{0} ma geleden\x11afgelopen dinsdag\x0cdeze din" + - "sdag\x15volgende week dinsdag\x10over {0} dinsdag\x12over {0} dinsdagen" + - "\x13{0} dinsdag geleden\x15{0} dinsdagen geleden\x0fafgelopen dins.\x0ad" + - "eze dins.\x13volgende week dins.\x0eover {0} dins.\x11{0} dins. geleden" + - "\x0cafgelopen di\x07deze di\x10volgende week di\x0bover {0} di\x0e{0} di" + - " geleden\x12afgelopen woensdag\x0ddeze woensdag\x16volgende week woensda" + - "g\x11over {0} woensdag\x13over {0} woensdagen\x14{0} woensdag geleden" + - "\x16{0} woensdagen geleden\x10afgelopen woens.\x0bdeze woens.\x14volgend" + - "e week woens.\x0fover {0} woens.\x12{0} woens. geleden\x0cafgelopen wo" + - "\x07deze wo\x10volgende week wo\x0bover {0} wo\x0e{0} wo geleden\x13afge" + - "lopen donderdag\x0edeze donderdag\x17volgende week donderdag\x12over {0}" + - " donderdag\x14over {0} donderdagen\x15{0} donderdag geleden\x17{0} donde" + - "rdagen geleden\x11afgelopen donder.\x0cdeze donder.\x15volgende week don" + - "der.\x10over {0} donder.\x13{0} donder. geleden\x0cafgelopen do\x07deze " + - "do\x10volgende week do\x0bover {0} do\x0e{0} do geleden\x11afgelopen vri" + - "jdag\x0cdeze vrijdag\x15volgende week vrijdag\x10over {0} vrijdag\x12ove" + - "r {0} vrijdagen\x13{0} vrijdag geleden\x15{0} vrijdagen geleden\x0fafgel" + - "open vrij.\x0adeze vrij.\x13volgende week vrij.\x0eover {0} vrij.\x11{0}" + - " vrij. geleden\x0cafgelopen vr\x07deze vr\x10volgende week vr\x0bover {0" + - "} vr\x0e{0} vr geleden\x12afgelopen zaterdag\x0ddeze zaterdag\x16volgend" + - "e week zaterdag\x11over {0} zaterdag\x13over {0} zaterdagen\x14{0} zater" + - "dag geleden\x16{0} zaterdagen geleden\x10afgelopen zater.\x0bdeze zater." + - "\x14volgende week zater.\x0fover {0} zater.\x12{0} zater. geleden\x0cafg" + - "elopen za\x07deze za\x10volgende week za\x0bover {0} za\x0e{0} za gelede" + - "n\x07dagdeel\x0ebinnen een uur\x0cover {0} uur\x0f{0} uur geleden\x11bin" + - "nen een minuut\x0fover {0} minuut\x10over {0} minuten\x12{0} minuut gele" + - "den\x13{0} minuten geleden\x0dover {0} min.\x10{0} min. geleden\x10over " + - "{0} seconde\x11over {0} seconden\x13{0} seconde geleden\x14{0} seconden " + - "geleden\x0dover {0} sec.\x10{0} sec. geleden\x08tijdzone\x08{0}-tijd\x0d" + - "zomertijd {0}\x11standaardtijd {0}\x1aGecoördineerde wereldtijd\x10Brits" + - "e zomertijd\x0fIerse zomertijd\x09Acre-tijd\x12Acre-standaardtijd\x0eAcr" + - "e-zomertijd\x0eAfghaanse tijd\x18Centraal-Afrikaanse tijd\x14Oost-Afrika" + - "anse tijd\x14Zuid-Afrikaanse tijd\x14West-Afrikaanse tijd\x1dWest-Afrika" + - "anse standaardtijd\x19West-Afrikaanse zomertijd\x0bAlaska-tijd\x14Alaska" + - "-standaardtijd\x10Alaska-zomertijd\x0dAlma-Ata-tijd\x16Alma-Ata-standaar" + - "dtijd\x12Alma-Ata-zomertijd\x0cAmazone-tijd\x15Amazone-standaardtijd\x11" + - "Amazone-zomertijd\x0cCentral-tijd\x15Central-standaardtijd\x11Central-zo" + - "mertijd\x0cEastern-tijd\x15Eastern-standaardtijd\x11Eastern-zomertijd" + - "\x0dMountain-tijd\x16Mountain-standaardtijd\x12Mountain-zomertijd\x0cPac" + - "ific-tijd\x15Pacific-standaardtijd\x11Pacific-zomertijd\x0bAnadyr-tijd" + - "\x14Anadyr-standaardtijd\x10Anadyr-zomertijd\x09Apia-tijd\x12Apia-standa" + - "ardtijd\x0eApia-zomertijd\x0aAqtau-tijd\x13Aqtau-standaardtijd\x0fAqtau-" + - "zomertijd\x0cAqtöbe-tijd\x15Aqtöbe-standaardtijd\x11Aqtöbe-zomertijd\x0e" + - "Arabische tijd\x17Arabische standaardtijd\x13Arabische zomertijd\x10Arge" + - "ntijnse tijd\x19Argentijnse standaardtijd\x15Argentijnse zomertijd\x15We" + - "st-Argentijnse tijd\x1eWest-Argentijnse standaardtijd\x1aWest-Argentijns" + - "e zomertijd\x0dArmeense tijd\x16Armeense standaardtijd\x12Armeense zomer" + - "tijd\x0dAtlantic-tijd\x16Atlantic-standaardtijd\x12Atlantic-zomertijd" + - "\x18Midden-Australische tijd!Midden-Australische standaardtijd\x1dMidden" + - "-Australische zomertijd#Midden-Australische westelijke tijd,Midden-Austr" + - "alische westelijke standaardtijd(Midden-Australische westelijke zomertij" + - "d\x16Oost-Australische tijd\x1fOost-Australische standaardtijd\x1bOost-A" + - "ustralische zomertijd\x16West-Australische tijd\x1fWest-Australische sta" + - "ndaardtijd\x1bWest-Australische zomertijd\x14Azerbeidzjaanse tijd\x1dAze" + - "rbeidzjaanse standaardtijd\x19Azerbeidzjaanse zomertijd\x0bAzoren-tijd" + - "\x14Azoren-standaardtijd\x10Azoren-zomertijd\x0eBengalese tijd\x17Bengal" + - "ese standaardtijd\x13Bengalese zomertijd\x0eBhutaanse tijd\x10Boliviaans" + - "e tijd\x11Braziliaanse tijd\x1aBraziliaanse standaardtijd\x16Braziliaans" + - "e zomertijd\x0dBruneise tijd\x12Kaapverdische tijd\x1bKaapverdische stan" + - "daardtijd\x17Kaapverdische zomertijd\x0aCasey tijd\x0dChamorro-tijd\x0cC" + - "hatham-tijd\x15Chatham-standaardtijd\x11Chatham-zomertijd\x0eChileense t" + - "ijd\x17Chileense standaardtijd\x13Chileense zomertijd\x0cChinese tijd" + - "\x15Chinese standaardtijd\x11Chinese zomertijd\x10Tsjojbalsan-tijd\x19Ts" + - "jojbalsan-standaardtijd\x15Tsjojbalsan-zomertijd\x16Christmaseilandse ti" + - "jd\x12Cocoseilandse tijd\x11Colombiaanse tijd\x1aColombiaanse standaardt" + - "ijd\x16Colombiaanse zomertijd\x11Cookeilandse tijd\x1aCookeilandse stand" + - "aardtijd\x1cCookeilandse halve zomertijd\x0dCubaanse tijd\x16Cubaanse st" + - "andaardtijd\x12Cubaanse zomertijd\x0aDavis-tijd\x17Dumont-d’Urville-tijd" + - "\x12Oost-Timorese tijd\x11Paaseilandse tijd\x1aPaaseilandse standaardtij" + - "d\x16Paaseilandse zomertijd\x11Ecuadoraanse tijd\x14Midden-Europese tijd" + - "\x1dMidden-Europese standaardtijd\x19Midden-Europese zomertijd\x12Oost-E" + - "uropese tijd\x1bOost-Europese standaardtijd\x17Oost-Europese zomertijd" + - "\x1eVerder-oostelijk-Europese tijd\x12West-Europese tijd\x1bWest-Europes" + - "e standaardtijd\x17West-Europese zomertijd\x15Falklandeilandse tijd\x1eF" + - "alklandeilandse standaardtijd\x1aFalklandeilandse zomertijd\x0dFijische " + - "tijd\x16Fijische standaardtijd\x12Fijische zomertijd\x13Frans-Guyaanse t" + - "ijd&Franse zuidelijke en Antarctische tijd\x16Galapagoseilandse tijd\x14" + - "Gambiereilandse tijd\x0fGeorgische tijd\x18Georgische standaardtijd\x14G" + - "eorgische zomertijd\x14Gilberteilandse tijd\x13Greenwich Mean Time\x15Oo" + - "st-Groenlandse tijd\x1eOost-Groenlandse standaardtijd\x1aOost-Groenlands" + - "e zomertijd\x15West-Groenlandse tijd\x1eWest-Groenlandse standaardtijd" + - "\x1aWest-Groenlandse zomertijd\x15Guamese standaardtijd\x12Golf-standaar" + - "dtijd\x0dGuyaanse tijd\x17Hawaii-Aleoetische tijd Hawaii-Aleoetische sta" + - "ndaardtijd\x1cHawaii-Aleoetische zomertijd\x0fHongkongse tijd\x18Hongkon" + - "gse standaardtijd\x14Hongkongse zomertijd\x09Hovd-tijd\x12Hovd-standaard" + - "tijd\x0eHovd-zomertijd\x0cIndiase tijd\x14Indische Oceaan-tijd\x10Indoch" + - "inese tijd\x1aCentraal-Indonesische tijd\x16Oost-Indonesische tijd\x16We" + - "st-Indonesische tijd\x0cIraanse tijd\x15Iraanse standaardtijd\x11Iraanse" + - " zomertijd\x0dIrkoetsk-tijd\x16Irkoetsk-standaardtijd\x12Irkoetsk-zomert" + - "ijd\x11Israëlische tijd\x1aIsraëlische standaardtijd\x16Israëlische zome" + - "rtijd\x0cJapanse tijd\x15Japanse standaardtijd\x11Japanse zomertijd\x1eP" + - "etropavlovsk-Kamtsjatski-tijd'Petropavlovsk-Kamtsjatski-standaardtijd#Pe" + - "tropavlovsk-Kamtsjatski-zomertijd\x12Oost-Kazachse tijd\x12West-Kazachse" + - " tijd\x0eKoreaanse tijd\x17Koreaanse standaardtijd\x13Koreaanse zomertij" + - "d\x0dKosraese tijd\x10Krasnojarsk-tijd\x19Krasnojarsk-standaardtijd\x15K" + - "rasnojarsk-zomertijd\x10Kirgizische tijd\x0aLanka-tijd\x12Line-eilandse " + - "tijd\x17Lord Howe-eilandse tijd Lord Howe-eilandse standaardtijd\x1cLord" + - " Howe-eilandse zomertijd\x0cMacause tijd\x15Macause standaardtijd\x11Mac" + - "ause zomertijd\x17Macquarie-eilandse tijd\x0cMagadan-tijd\x15Magadan-sta" + - "ndaardtijd\x11Magadan-zomertijd\x10Maleisische tijd\x10Maldivische tijd" + - "\x16Marquesaseilandse tijd\x15Marshalleilandse tijd\x11Mauritiaanse tijd" + - "\x1aMauritiaanse standaardtijd\x16Mauritiaanse zomertijd\x0bMawson-tijd" + - "\x19Noordwest-Mexicaanse tijd\x22Noordwest-Mexicaanse standaardtijd\x1eN" + - "oordwest-Mexicaanse zomertijd\x17Mexicaanse Pacific-tijd Mexicaanse Paci" + - "fic-standaardtijd\x1cMexicaanse Pacific-zomertijd\x10Ulaanbaatar-tijd" + - "\x19Ulaanbaatar-standaardtijd\x15Ulaanbaatar-zomertijd\x0bMoskou-tijd" + - "\x14Moskou-standaardtijd\x10Moskou-zomertijd\x0fMyanmarese tijd\x0fNauru" + - "aanse tijd\x0dNepalese tijd\x17Nieuw-Caledonische tijd Nieuw-Caledonisch" + - "e standaardtijd\x1cNieuw-Caledonische zomertijd\x14Nieuw-Zeelandse tijd" + - "\x1dNieuw-Zeelandse standaardtijd\x19Nieuw-Zeelandse zomertijd\x11Newfou" + - "ndland-tijd\x1aNewfoundland-standaardtijd\x16Newfoundland-zomertijd\x0bN" + - "iuese tijd\x14Norfolkeilandse tijd\x18Fernando de Noronha-tijd!Fernando " + - "de Noronha-standaardtijd\x1dFernando de Noronha-zomertijd\x19Noordelijk " + - "Mariaanse tijd\x10Novosibirsk-tijd\x19Novosibirsk-standaardtijd\x15Novos" + - "ibirsk-zomertijd\x09Omsk-tijd\x12Omsk-standaardtijd\x0eOmsk-zomertijd" + - "\x10Pakistaanse tijd\x19Pakistaanse standaardtijd\x15Pakistaanse zomerti" + - "jd\x0cBelause tijd\x1aPapoea-Nieuw-Guineese tijd\x12Paraguayaanse tijd" + - "\x1bParaguayaanse standaardtijd\x17Paraguayaanse zomertijd\x0ePeruaanse " + - "tijd\x17Peruaanse standaardtijd\x13Peruaanse zomertijd\x0fFilipijnse tij" + - "d\x18Filipijnse standaardtijd\x14Filipijnse zomertijd\x14Phoenixeilandse" + - " tijd\x1dSaint Pierre en Miquelon-tijd&Saint Pierre en Miquelon-standaar" + - "dtijd\x22Saint Pierre en Miquelon-zomertijd\x15Pitcairneilandse tijd\x0c" + - "Pohnpei-tijd\x0ePyongyang-tijd\x0eQyzylorda-tijd\x17Qyzylorda-standaardt" + - "ijd\x13Qyzylorda-zomertijd\x0fRéunionse tijd\x0cRothera-tijd\x0dSachalin" + - "-tijd\x16Sachalin-standaardtijd\x12Sachalin-zomertijd\x0bSamara-tijd\x14" + - "Samara-standaardtijd\x10Samara-zomertijd\x0eSamoaanse tijd\x17Samoaanse " + - "standaardtijd\x13Samoaanse zomertijd\x0eSeychelse tijd\x19Singaporese st" + - "andaardtijd\x15Salomonseilandse tijd\x14Zuid-Georgische tijd\x0fSurinaam" + - "se tijd\x0aSyowa-tijd\x10Tahitiaanse tijd\x0bTaipei-tijd\x14Taipei-stand" + - "aardtijd\x10Taipei-zomertijd\x0fTadzjiekse tijd\x15Tokelau-eilandse tijd" + - "\x0eTongaanse tijd\x17Tongaanse standaardtijd\x13Tongaanse zomertijd\x0c" + - "Chuukse tijd\x0fTurkmeense tijd\x18Turkmeense standaardtijd\x14Turkmeens" + - "e zomertijd\x10Tuvaluaanse tijd\x11Uruguayaanse tijd\x1aUruguayaanse sta" + - "ndaardtijd\x16Uruguayaanse zomertijd\x0eOezbeekse tijd\x17Oezbeekse stan" + - "daardtijd\x13Oezbeekse zomertijd\x11Vanuatuaanse tijd\x1aVanuatuaanse st" + - "andaardtijd\x16Vanuatuaanse zomertijd\x11Venezolaanse tijd\x10Vladivosto" + - "k-tijd\x19Vladivostok-standaardtijd\x15Vladivostok-zomertijd\x0eWolgogra" + - "d-tijd\x17Wolgograd-standaardtijd\x13Wolgograd-zomertijd\x0bVostok-tijd" + - "\x12Wake-eilandse tijd\x17Wallis en Futunase tijd\x0dJakoetsk-tijd\x16Ja" + - "koetsk-standaardtijd\x12Jakoetsk-zomertijd\x14Jekaterinenburg-tijd\x1dJe" + - "katerinenburg-standaardtijd\x19Jekaterinenburg-zomertijd" - -var bucket78 string = "" + // Size: 8165 bytes - "\x03SRT\x03ng1\x03ng2\x03ng3\x03ng4\x03ng5\x03ng6\x03ng7\x03ng8\x03ng9" + - "\x04ng10\x04ng11\x04kris\x0fngwɛn matáhra\x0cngwɛn ńmba\x0cngwɛn ńlal" + - "\x0bngwɛn ńna\x0cngwɛn ńtan\x0dngwɛn ńtuó\x12ngwɛn hɛmbuɛrí\x0dngwɛn lɔm" + - "bi\x0fngwɛn rɛbvuâ\x0angwɛn wum\x11ngwɛn wum navǔr\x09krísimin\x0cTindɛ " + - "nvúr\x0cTindɛ ńmba\x0cTindɛ ńlal\x0bTindɛ ńna\x05maná\x05kugú\x0cBó Lahl" + - "ɛ̄\x0bPfiɛ Burī\x02BL\x02PB\x0dPīl/Lahlɛ̄\x04Mbvu\x06Ngwɛn\x04Duö\x07Na" + - "kugú\x04Dɔl\x08Namáná\x19Máná, Muó, Kugú, Bvul\x05Wulā\x07Mpálâ\x06Nyiɛl" + - "\x0dNkɛ̌l wulā\x04f.m.\x04e.m.\x13'kl'. HH:mm:ss zzzz\x13'kl'. HH.mm.ss " + - "zzzz\x06månad\x0eforrige månad\x0cdenne månad\x0cneste månad\x04veke\x0c" + - "uken med {0}\x07vekedag\x14søndag forrige veke\x12søndag denne veke\x12s" + - "øndag neste veke\x14måndag forrige veke\x12måndag denne veke\x12måndag " + - "neste veke\x13tysdag forrige veke\x11tysdag denne veke\x11tysdag neste v" + - "eke\x13onsdag forrige veke\x11onsdag denne veke\x12onsdage neste veke" + - "\x14torsdag forrige veke\x12torsdag denne veke\x12torsdag neste veke\x13" + - "fredag forrige veke\x11fredag denne veke\x11fredag neste veke\x14laurdag" + - " forrige veke\x12laurdag denne veke\x12laurdag neste veke\x0df.m./e.m.-v" + - "al\x04sone\x17vestafrikansk sommartid\x1asentralaustralsk sommartid\x1fv" + - "est-sentralaustralsk sommartid\x17austaustralsk sommartid\x17vestaustral" + - "sk sommartid\x1asentraleuropeisk sommartid\x17austeuropeisk sommartid" + - "\x17vesteuropeisk sommartid\x22EEEE , 'lyɛ'̌ʼ d 'na' MMMM, y G\x1b'lyɛ'̌" + - "ʼ d 'na' MMMM, y G\x15saŋ tsetsɛ̀ɛ lùm\x11saŋ kàg ngwóŋ\x11saŋ lepyè sh" + - "úm\x0asaŋ cÿó\x13saŋ tsɛ̀ɛ cÿó\x0fsaŋ njÿoláʼ\x1dsaŋ tyɛ̀b tyɛ̀b mbʉ̀ŋ" + - "\x0dsaŋ mbʉ̀ŋ\x15saŋ ngwɔ̀ʼ mbÿɛ\x15saŋ tàŋa tsetsáʼ\x0esaŋ mejwoŋó\x09s" + - "aŋ lùm\x16lyɛʼɛ́ sẅíŋtè\x0emvfò lyɛ̌ʼ\x1bmbɔ́ɔntè mvfò lyɛ̌ʼ\x15tsètsɛ̀ɛ" + - " lyɛ̌ʼ!mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ\x14mvfò màga lyɛ̌ʼ\x0emàga lyɛ̌ʼ\x0cmbaʼá" + - "mbaʼ\x0ancwònzém\x0fmé zyé Yěsô\x16mé gÿo ńzyé Yěsô\x06m.z.Y.\x08m.g.n.Y" + - ". EEEE , 'lyɛ'̌ʼ d 'na' MMMM, y\x19'lyɛ'̌ʼ d 'na' MMMM, y\x0etsɔ́ fʉ̀ʼ" + - "\x06ngùʼ\x08lyɛ̌ʼ\x19jǔɔ gẅie à ka tɔ̌g\x0dlyɛ̌ʼɔɔn\x18jǔɔ gẅie à ne ntó" + - "o\x0cngàba láʼ\x0cfʉ̀ʼ nèm\x04Tiop\x04Pɛt\x0aDuɔ̱ɔ̱\x04Guak\x04Duä\x03Ko" + - "r\x03Pay\x04Thoo\x05Tɛɛ\x03Laa\x03Kur\x03Tid\x0eTiop thar pɛt\x0cDuɔ̱ɔ̱ŋ" + - "\x05Duät\x08Kornyoot\x0cPay yie̱tni\x09Tho̱o̱r\x06Tɛɛr\x05Laath\x12Tio̱p" + - " in di̱i̱t\x05Cäŋ\x04Jiec\x04Rɛw\x07Diɔ̱k\x06Ŋuaan\x06Dhieec\x07Bäkɛl" + - "\x0cCäŋ kuɔth\x0aJiec la̱t\x0bRɛw lätni\x0eDiɔ̱k lätni\x0dŊuaan lätni" + - "\x0dDhieec lätni\x0eBäkɛl lätni\x15Päth diɔk tin nhiam\x16Päth diɔk tin " + - "guurɛ\x1ePäth diɔk tin wä kɔɔriɛn\x1bPäth diɔk tin jiɔakdiɛn\x02RW\x03TŊ" + - "\x13A ka̱n Yecu ni dap\x0eƐ ca Yecu dap\x0ezzzz h:mm:ss a\x0bz h:mm:ss a" + - "\x10Gua̱a̱th Ruëc\x07Ruɔ̱n\x05Jiɔk\x03Pan\x05Walɛ\x04Ruun\x0bNi̱n jokä" + - "\x05Thaak\x09Thɛkɛni\x0aEshaaha za\x03Ama\x03Gur\x03Bit\x03Elb\x03Cam" + - "\x03Wax\x03Ado\x03Hag\x03Ful\x03Onk\x03Sad\x03Mud\x07Amajjii\x0bGuraandh" + - "ala\x0bBitooteessa\x04Elba\x06Caamsa\x0aWaxabajjii\x0aAdooleessa\x07Haga" + - "yya\x08Fuulbana\x0cOnkololeessa\x07Sadaasa\x06Muddee\x03Dil\x03Wix\x03Qi" + - "b\x03Rob\x03Kam\x03Jim\x03San\x07Dilbata\x07Wiixata\x07Qibxata\x06Roobii" + - "\x07Kamiisa\x07Jimaata\x07Sanbata\x0aKurmaana 1\x0aKurmaana 2\x0aKurmaan" + - "a 3\x0aKurmaana 4\x02WD\x02WB\x10Dheengadda Jeesu\x02KD\x15ଜାନୁଆରୀ\x15ଫେ" + - "ବୃଆରୀ\x15ମାର୍ଚ୍ଚ\x12ଅପ୍ରେଲ\x06ମଇ\x09ଜୁନ\x0fଜୁଲାଇ\x0fଅଗଷ୍ଟ\x1eସେପ୍ଟେମ୍ବ" + - "ର\x15ଅକ୍ଟୋବର\x15ନଭେମ୍ବର\x18ଡିସେମ୍ବର\x06ଜା\x06ଫେ\x06ମା\x03ଅ\x06ଜୁ\x06ସେ" + - "\x03ନ\x06ଡି\x09ରବି\x09ସୋମ\x0fମଙ୍ଗଳ\x09ବୁଧ\x0cଗୁରୁ\x0fଶୁକ୍ର\x09ଶନି\x12ରବି" + - "ବାର\x12ସୋମବାର\x18ମଙ୍ଗଳବାର\x12ବୁଧବାର\x15ଗୁରୁବାର\x18ଶୁକ୍ରବାର\x12ଶନିବାର" + - "\x03ର\x06ସୋ\x03ମ\x06ବୁ\x06ଗୁ\x06ଶୁ\x03ଶDଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡ ସମୟ(ଗାଲାପାଗ" + - "ୋସ୍ ସମୟ\x18EEEE, d MMMM, y 'аз' G\x12d MMMM, y 'аз' G\x11dd MMM y 'аз'" + - " G\x0cянвары\x0eфевралы\x10мартъийы\x0cапрелы\x08майы\x08июны\x08июлы" + - "\x0eавгусты\x10сентябры\x0eоктябры\x0cноябры\x0eдекабры\x07Янв.\x09Февр." + - "\x09Март.\x07Апр.\x06Май\x08Июнь\x08Июль\x07Авг.\x09Сент.\x07Окт.\x09Ноя" + - "б.\x07Дек.\x06хцб\x06крс\x06дцг\x06ӕрт\x06цпр\x06мрб\x06сбт\x02Х\x02К" + - "\x02Д\x02Ӕ\x02Ц\x02М\x02С\x12хуыцаубон\x12къуырисӕр\x0cдыццӕг\x10ӕртыццӕ" + - "г\x10цыппӕрӕм\x12майрӕмбон\x0aсабат\x06Хцб\x06Крс\x06Дцг\x06Ӕрт\x06Цпр" + - "\x06Мрб\x06Сбт\x12Хуыцаубон\x12Къуырисӕр\x0cДыццӕг\x10Ӕртыццӕг\x10Цыппӕр" + - "ӕм\x12Майрӕмбон\x0aСабат\x0c1-аг кв.\x0c2-аг кв.\x0c3-аг кв.\x0c4-ӕм кв" + - ".\x151-аг квартал\x152-аг квартал\x153-аг квартал\x154-ӕм квартал\x1dӕмб" + - "исбоны размӕ\x1dӕмбисбоны фӕстӕ\x09н.д.а.\x06н.д.\x16EEEE, d MMMM, y 'а" + - "з'\x10d MMMM, y 'аз'\x0fdd MMM y 'аз'\x06Дуг\x04Аз\x06Мӕй\x0cКъуыри\x06" + - "Бон\x12Ӕндӕрӕбон\x08Знон\x08Абон\x06Сом\x0eИннӕбон\x17{0} боны фӕстӕ" + - "\x17{0} бон раздӕр\x17{0} боны размӕ\x17Къуырийы бон\x15Боны период\x0aС" + - "ахат\x1b{0} сахаты фӕстӕ\x1b{0} сахаты размӕ\x0aМинут\x0cСекунд\x19Рӕст" + - "ӕджы зонӕ\x10{0} рӕстӕг2Астӕуккаг Европӕйаг рӕстӕгGАстӕуккаг Европӕйаг " + - "стандартон рӕстӕгCАстӕуккаг Европӕйаг сӕрдыгон рӕстӕг,Скӕсӕн Европӕйаг " + - "рӕстӕгAСкӕсӕн Европӕйаг стандартон рӕстӕг=Скӕсӕн Европӕйаг сӕрдыгон рӕс" + - "тӕг2Ныгъуылӕн Европӕйаг рӕстӕгGНыгъуылӕн Европӕйаг стандартон рӕстӕгCНы" + - "гъуылӕн Европӕйаг сӕрдыгон рӕстӕг%Гуырдзыстоны рӕстӕг:Гуырдзыстоны стан" + - "дартон рӕстӕг6Гуырдзыстоны сӕрдыгон рӕстӕг0Гринвичы рӕстӕмбис рӕстӕг" + - "\x1dМӕскуыйы рӕстӕг2Мӕскуыйы стандартон рӕстӕг.Мӕскуыйы сӕрдыгон рӕстӕг" + - "\x06ਜਨ\x09ਫ਼ਰ\x0cਮਾਰਚ\x0fਅਪ੍ਰੈ\x06ਮਈ\x09ਜੂਨ\x0cਜੁਲਾ\x06ਅਗ\x09ਸਤੰ\x0cਅਕਤੂ" + - "\x09ਨਵੰ\x09ਦਸੰ\x03ਜ\x06ਫ਼\x06ਮਾ\x03ਅ\x03ਮ\x06ਜੂ\x06ਜੁ\x03ਸ\x03ਨ\x03ਦ\x0f" + - "ਜਨਵਰੀ\x12ਫ਼ਰਵਰੀ\x12ਅਪ੍ਰੈਲ\x0fਜੁਲਾਈ\x0cਅਗਸਤ\x0fਸਤੰਬਰ\x12ਅਕਤੂਬਰ\x0fਨਵੰਬਰ" + - "\x0fਦਸੰਬਰ\x06ਐਤ\x09ਸੋਮ\x0cਮੰਗਲ\x0cਬੁੱਧ\x09ਵੀਰ\x12ਸ਼ੁੱਕਰ\x15ਸ਼ਨਿੱਚਰ\x03ਐ" + - "\x06ਸੋ\x06ਮੰ\x09ਬੁੱ\x06ਵੀ\x0cਸ਼ੁੱ\x06ਸ਼\x09ਮੰਗ\x0fਸ਼ੁੱਕ\x0fਸ਼ਨਿੱ\x0fਐਤਵਾ" + - "ਰ\x12ਸੋਮਵਾਰ\x15ਮੰਗਲਵਾਰ\x15ਬੁੱਧਵਾਰ\x12ਵੀਰਵਾਰ\x1bਸ਼ੁੱਕਰਵਾਰ\x1eਸ਼ਨਿੱਚਰਵਾਰ" + - "\x13ਤਿਮਾਹੀ1\x13ਤਿਮਾਹੀ2\x13ਤਿਮਾਹੀ3\x13ਤਿਮਾਹੀ4\x22ਪਹਿਲੀ ਤਿਮਾਹੀ\x1fਦੂਜੀ ਤਿਮ" + - "ਾਹੀ\x1fਤੀਜੀ ਤਿਮਾਹੀ\x1fਚੌਥੀ ਤਿਮਾਹੀ\x16ਅੱਧੀ ਰਾਤ\x0eਪੂ.ਦੁ.\x0eਬਾ.ਦੁ.\x0fਸ" + - "ਵੇਰੇ\x15ਦੁਪਹਿਰੇ\x12ਸ਼ਾਮੀਂ\x0fਰਾਤੀਂ\x04ਸ.\x07ਸ਼.\x0cਸ਼ਾਮ\x09ਰਾਤ\x19ਈਸਵੀ" + - " ਪੂਰਵ&ਈਸਵੀ ਪੂਰਵ ਯੁੱਗ\x16ਈਸਵੀ ਸੰਨ\x19ਈਸਵੀ ਯੁੱਗ\x0cਈ. ਪੂ.\x14ਈ. ਪੂ. ਸੰ." + - "\x09ਸੰਨ\x0cਈ. ਸੰ.\x0bਈ.ਪੂ.\x12ਈ.ਪੂ.ਸੰ.\x0bਈ.ਸੰ.\x09ਚੇਤ\x0fਵੈਸਾਖ\x09ਜੇਠ" + - "\x09ਹਾੜ\x0cਸਾਉਣ\x0fਭਾਦੋਂ\x0cਅੱਸੂ\x0cਕੱਤਕ\x0cਮੱਘਰ\x09ਪੋਹ\x09ਮਾਘ\x0cਫੱਗਣ" + - "\x03੧\x03੨\x03੩\x03੪\x03੫\x03੬\x03੭\x03੮\x03੯\x06੧੦\x06੧੧\x06੧੨\x0cਸਾਕਾ" + - "\x0cਸੰਮਤ\x09ਸਾਲ\x19ਪਿਛਲਾ ਸਾਲ\x10ਇਹ ਸਾਲ\x16ਅਗਲਾ ਸਾਲ\x1a{0} ਸਾਲ ਵਿੱਚ {0} ਸ" + - "ਾਲਾਂ ਵਿੱਚ {0} ਸਾਲ ਪਹਿਲਾਂ\x12ਤਿਮਾਹੀ\x22ਪਿਛਲੀ ਤਿਮਾਹੀ\x19ਇਸ ਤਿਮਾਹੀ\x1fਅਗਲ" + - "ੀ ਤਿਮਾਹੀ#{0} ਤਿਮਾਹੀ ਵਿੱਚ){0} ਤਿਮਾਹੀਆਂ ਵਿੱਚ){0} ਤਿਮਾਹੀ ਪਹਿਲਾਂ/{0} ਤਿਮਾਹ" + - "ੀਆਂ ਪਹਿਲਾਂ\x19ਇਹ ਤਿਮਾਹੀ\x0fਮਹੀਨਾ\x1fਪਿਛਲਾ ਮਹੀਨਾ\x16ਇਹ ਮਹੀਨਾ\x1cਅਗਲਾ ਮਹ" + - "ੀਨਾ {0} ਮਹੀਨੇ ਵਿੱਚ&{0} ਮਹੀਨਿਆਂ ਵਿੱਚ&{0} ਮਹੀਨਾ ਪਹਿਲਾਂ&{0} ਮਹੀਨੇ ਪਹਿਲਾਂ" + - "\x0fਹਫ਼ਤਾ\x1fਪਿਛਲਾ ਹਫ਼ਤਾ\x16ਇਹ ਹਫ਼ਤਾ\x1cਅਗਲਾ ਹਫ਼ਤਾ {0} ਹਫ਼ਤੇ ਵਿੱਚ&{0} ਹਫ" + - "਼ਤਿਆਂ ਵਿੱਚ&{0} ਹਫ਼ਤਾ ਪਹਿਲਾਂ&{0} ਹਫ਼ਤੇ ਪਹਿਲਾਂ\x1a{0} ਦਾ ਹਫ਼ਤਾ\x09ਦਿਨ" + - "\x1fਬੀਤਿਆ ਕੱਲ੍ਹ\x09ਅੱਜ\x0cਭਲਕੇ" - -var bucket79 string = "" + // Size: 19781 bytes - "\x1a{0} ਦਿਨ ਵਿੱਚ {0} ਦਿਨਾਂ ਵਿੱਚ {0} ਦਿਨ ਪਹਿਲਾਂ ਹਫ਼ਤੇ ਦਾ ਦਿਨ\x1fਪਿਛਲਾ ਐਤਵ" + - "ਾਰ\x16ਇਸ ਐਤਵਾਰ\x1cਅਗਲਾ ਐਤਵਾਰ {0} ਐਤਵਾਰ ਵਿੱਚ&{0} ਐਤਵਾਰਾਂ ਵਿੱਚ&{0} ਐਤਵਾਰ" + - " ਪਹਿਲਾਂ\x16ਪਿਛਲਾ ਐਤ\x0dਇਹ ਐਤ\x13ਅਗਲਾ ਐਤ\x22ਪਿਛਲਾ ਸੋਮਵਾਰ\x19ਇਸ ਸੋਮਵਾਰ\x1f" + - "ਅਗਲਾ ਸੋਮਵਾਰ#{0} ਸੋਮਵਾਰ ਵਿੱਚ){0} ਸੋਮਵਾਰਾਂ ਵਿੱਚ){0} ਸੋਮਵਾਰ ਪਹਿਲਾਂ\x19ਪਿਛ" + - "ਲਾ ਸੋਮ\x10ਇਸ ਸੋਮ\x16ਅਗਲਾ ਸੋਮ%ਪਿਛਲਾ ਮੰਗਲਵਾਰ\x1cਇਹ ਮੰਗਲਵਾਰ\x22ਅਗਲਾ ਮੰਗਲਵ" + - "ਾਰ&{0} ਮੰਗਲਵਾਰ ਵਿੱਚ,{0} ਮੰਗਲਵਾਰਾਂ ਵਿੱਚ,{0} ਮੰਗਲਵਾਰ ਪਹਿਲਾਂ\x1cਪਿਛਲਾ ਮੰਗ" + - "ਲ\x13ਇਹ ਮੰਗਲ\x19ਅਗਲਾ ਮੰਗਲ%ਪਿਛਲਾ ਬੁੱਧਵਾਰ\x1cਇਹ ਬੁੱਧਵਾਰ\x22ਅਗਲਾ ਬੁੱਧਵਾਰ&" + - "{0} ਬੁੱਧਵਾਰ ਵਿੱਚ,{0} ਬੁੱਧਵਾਰਾਂ ਵਿੱਚ,{0} ਬੁੱਧਵਾਰ ਪਹਿਲਾਂ\x1cਪਿਛਲਾ ਬੁੱਧ\x13" + - "ਇਹ ਬੁੱਧ\x19ਅਗਲਾ ਬੁੱਧ\x22ਪਿਛਲਾ ਵੀਰਵਾਰ\x19ਇਹ ਵੀਰਵਾਰ\x1fਅਗਲਾ ਵੀਰਵਾਰ#{0} ਵ" + - "ੀਰਵਾਰ ਵਿੱਚ){0} ਵੀਰਵਾਰਾਂ ਵਿੱਚ){0} ਵੀਰਵਾਰ ਪਹਿਲਾਂ\x19ਪਿਛਲਾ ਵੀਰ\x10ਇਹ ਵੀਰ" + - "\x16ਅਗਲਾ ਵੀਰ+ਪਿਛਲਾ ਸ਼ੁੱਕਰਵਾਰ\x22ਇਹ ਸ਼ੁੱਕਰਵਾਰ(ਅਗਲਾ ਸ਼ੁੱਕਰਵਾਰ,{0} ਸ਼ੁੱਕਰਵਾ" + - "ਰ ਵਿੱਚ2{0} ਸ਼ੁੱਕਰਵਾਰਾਂ ਵਿੱਚ2{0} ਸ਼ੁੱਕਰਵਾਰ ਪਹਿਲਾਂ\x22ਪਿਛਲਾ ਸ਼ੁੱਕਰ\x19ਇਹ" + - " ਸ਼ੁੱਕਰ\x1fਅਗਲਾ ਸ਼ੁੱਕਰ\x1cਪਿਛਲਾ ਸ਼ੁੱ\x13ਇਹ ਸ਼ੁੱ\x19ਅਗਲਾ ਸ਼ੁੱ.ਪਿਛਲਾ ਸ਼ਨਿੱ" + - "ਚਰਵਾਰ%ਇਹ ਸ਼ਨਿੱਚਰਵਾਰ+ਅਗਲਾ ਸ਼ਨਿੱਚਰਵਾਰ/{0} ਸ਼ਨਿੱਚਰਵਾਰ ਵਿੱਚ5{0} ਸ਼ਨਿੱਚਰਵਾਰ" + - "ਾਂ ਵਿੱਚ5{0} ਸ਼ਨਿੱਚਰਵਾਰ ਪਹਿਲਾਂ%ਪਿਛਲਾ ਸ਼ਨਿੱਚਰ\x1cਇਹ ਸ਼ਨਿੱਚਰ\x22ਅਗਲਾ ਸ਼ਨਿ" + - "ੱਚਰ\x1fਪਿਛਲਾ ਸ਼ਨਿੱ\x16ਇਹ ਸ਼ਨਿੱ\x1cਅਗਲਾ ਸ਼ਨਿੱ\x1dਪੂ.ਦੁ./ਬਾ.ਦੁ.\x0cਘੰਟਾ" + - "\x13ਇਸ ਘੰਟੇ\x1d{0} ਘੰਟੇ ਵਿੱਚ#{0} ਘੰਟਿਆਂ ਵਿੱਚ#{0} ਘੰਟਾ ਪਹਿਲਾਂ#{0} ਘੰਟੇ ਪਹ" + - "ਿਲਾਂ\x06ਘੰ\x0cਮਿੰਟ\x13ਇਸ ਮਿੰਟ\x1d{0} ਮਿੰਟ ਵਿੱਚ#{0} ਮਿੰਟਾਂ ਵਿੱਚ#{0} ਮਿੰ" + - "ਟ ਪਹਿਲਾਂ\x0fਸਕਿੰਟ\x09ਹੁਣ {0} ਸਕਿੰਟ ਵਿੱਚ&{0} ਸਕਿੰਟਾਂ ਵਿੱਚ&{0} ਸਕਿੰਟ ਪਹਿ" + - "ਲਾਂ\x1fਇਲਾਕਾਈ ਵੇਲਾ\x10{0} ਵੇਲਾ&{0} ਪ੍ਰਕਾਸ਼ ਵੇਲਾ {0} ਮਿਆਰੀ ਵੇਲਾ?ਬ੍ਰਿਟਿਸ" + - "਼ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ/ਆਇਰਿਸ਼ ਮਿਆਰੀ ਵੇਲਾ.ਅਫ਼ਗਾਨਿਸਤਾਨ ਵੇਲਾ2ਕੇਂਦਰੀ ਅਫਰੀਕਾ ਵੇਲਾ" + - "/ਪੂਰਬੀ ਅਫਰੀਕਾ ਵੇਲਾBਦੱਖਣੀ ਅਫ਼ਰੀਕਾ ਮਿਆਰੀ ਵੇਲਾ/ਪੱਛਮੀ ਅਫਰੀਕਾ ਵੇਲਾ?ਪੱਛਮੀ ਅਫਰੀ" + - "ਕਾ ਮਿਆਰੀ ਵੇਲਾIਪੱਛਮੀ ਅਫਰੀਕਾ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1fਅਲਾਸਕਾ ਵੇਲਾ/ਅਲਾਸਕਾ ਮਿਆਰੀ " + - "ਵੇਲਾ5ਅਲਾਸਕਾ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1fਅਲਮਾਟੀ ਸਮਾਂ/ਅਲਮਾਟੀ ਮਿਆਰੀ ਸਮਾਂ9ਅਲਮਾਟੀ ਗਰਮੀ-" + - "ਰੁੱਤ ਸਮਾਂ\x1fਅਮੇਜ਼ਨ ਵੇਲਾ/ਅਮੇਜ਼ਨ ਮਿਆਰੀ ਵੇਲਾ9ਅਮੇਜ਼ਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾBਉੱਤਰੀ" + - " ਅਮਰੀਕੀ ਕੇਂਦਰੀ ਵੇਲਾRਉੱਤਰੀ ਅਮਰੀਕੀ ਕੇਂਦਰੀ ਮਿਆਰੀ ਵੇਲਾXਉੱਤਰੀ ਅਮਰੀਕੀ ਕੇਂਦਰੀ ਪ" + - "੍ਰਕਾਸ਼ ਵੇਲਾ?ਉੱਤਰੀ ਅਮਰੀਕੀ ਪੂਰਬੀ ਵੇਲਾOਉੱਤਰੀ ਅਮਰੀਕੀ ਪੂਰਬੀ ਮਿਆਰੀ ਵੇਲਾUਉੱਤਰ" + - "ੀ ਅਮਰੀਕੀ ਪੂਰਬੀ ਪ੍ਰਕਾਸ਼ ਵੇਲਾEਉੱਤਰੀ ਅਮਰੀਕੀ ਮਾਉਂਟੇਨ ਵੇਲਾUਉੱਤਰੀ ਅਮਰੀਕੀ ਮਾਉ" + - "ਂਟੇਨ ਮਿਆਰੀ ਵੇਲਾ[ਉੱਤਰੀ ਅਮਰੀਕੀ ਮਾਉਂਟੇਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾEਉੱਤਰੀ ਅਮਰੀਕੀ ਪੈਸਿਫਿਕ" + - " ਵੇਲਾUਉੱਤਰੀ ਅਮਰੀਕੀ ਪੈਸਿਫਿਕ ਮਿਆਰੀ ਵੇਲਾ[ਉੱਤਰੀ ਅਮਰੀਕੀ ਪੈਸਿਫਿਕ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ" + - "\x19ਐਪੀਆ ਵੇਲਾ)ਐਪੀਆ ਮਿਆਰੀ ਵੇਲਾ/ਐਪੀਆ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1cਅਕਤਾਉ ਸਮਾਂ,ਅਕਤਾਉ ਮਿਆਰ" + - "ੀ ਸਮਾਂ6ਅਕਤਾਉ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ\x1cਅਕਤੋਬ ਸਮਾਂ,ਅਕਤੋਬ ਮਿਆਰੀ ਸਮਾਂ6ਅਕਤੋਬ ਗਰਮੀ-" + - "ਰੁੱਤ ਸਮਾਂ\x19ਅਰਬੀ ਵੇਲਾ)ਅਰਬੀ ਮਿਆਰੀ ਵੇਲਾ/ਅਰਬੀ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ%ਅਰਜਨਟੀਨਾ ਵੇਲਾ" + - "5ਅਰਜਨਟੀਨਾ ਮਿਆਰੀ ਵੇਲਾ?ਅਰਜਨਟੀਨਾ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ5ਪੱਛਮੀ ਅਰਜਨਟੀਨਾ ਵੇਲਾEਪੱਛਮੀ ਅ" + - "ਰਜਨਟੀਨਾ ਮਿਆਰੀ ਵੇਲਾOਪੱਛਮੀ ਅਰਜਨਟੀਨਾ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਅਰਮੀਨੀਆ ਵੇਲਾ2ਅਰਮੀਨ" + - "ੀਆ ਮਿਆਰੀ ਵੇਲਾ<ਅਰਮੀਨੀਆ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ%ਅਟਲਾਂਟਿਕ ਵੇਲਾ5ਅਟਲਾਂਟਿਕ ਮਿਆਰੀ ਵੇਲਾ" + - ";ਅਟਲਾਂਟਿਕ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ>ਕੇਂਦਰੀ ਆਸਟ੍ਰੇਲੀਆਈ ਵੇਲਾNਆਸਟ੍ਰੇਲੀਆਈ ਕੇਂਦਰੀ ਮਿਆਰੀ ਵੇ" + - "ਲਾTਆਸਟ੍ਰੇਲੀਆਈ ਕੇਂਦਰੀ ਪ੍ਰਕਾਸ਼ ਵੇਲਾNਆਸਟ੍ਰੇਲੀਆਈ ਕੇਂਦਰੀ ਪੱਛਮੀ ਵੇਲਾ^ਆਸਟ੍ਰੇਲ" + - "ੀਆਈ ਕੇਂਦਰੀ ਪੱਛਮੀ ਮਿਆਰੀ ਵੇਲਾdਆਸਟ੍ਰੇਲੀਆਈ ਕੇਂਦਰੀ ਪੱਛਮੀ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ;ਪੂਰਬੀ" + - " ਆਸਟ੍ਰੇਲੀਆਈ ਵੇਲਾKਆਸਟ੍ਰੇਲੀਆਈ ਪੂਰਬੀ ਮਿਆਰੀ ਵੇਲਾQਆਸਟ੍ਰੇਲੀਆਈ ਪੂਰਬੀ ਪ੍ਰਕਾਸ਼ ਵੇ" + - "ਲਾ;ਪੱਛਮੀ ਆਸਟ੍ਰੇਲੀਆਈ ਵੇਲਾKਆਸਟ੍ਰੇਲੀਆਈ ਪੱਛਮੀ ਮਿਆਰੀ ਵੇਲਾQਆਸਟ੍ਰੇਲੀਆਈ ਪੱਛਮੀ " + - "ਪ੍ਰਕਾਸ਼ ਵੇਲਾ+ਅਜ਼ਰਬਾਈਜਾਨ ਵੇਲਾ;ਅਜ਼ਰਬਾਈਜਾਨ ਮਿਆਰੀ ਵੇਲਾEਅਜ਼ਰਬਾਈਜਾਨ ਗਰਮੀਆਂ ਦ" + - "ਾ ਵੇਲਾ\x1fਅਜੋਰੇਸ ਵੇਲਾ/ਅਜੋਰੇਸ ਮਿਆਰੀ ਵੇਲਾ9ਅਜੋਰੇਸ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ(ਬੰਗਲਾਦੇਸ" + - "਼ ਵੇਲਾ8ਬੰਗਲਾਦੇਸ਼ ਮਿਆਰੀ ਵੇਲਾBਬੰਗਲਾਦੇਸ਼ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1cਭੂਟਾਨ ਵੇਲਾ\x22" + - "ਬੋਲੀਵੀਆ ਵੇਲਾ+ਬ੍ਰਾਜ਼ੀਲੀਆ ਵੇਲਾ;ਬ੍ਰਾਜ਼ੀਲੀਆ ਮਿਆਰੀ ਵੇਲਾEਬ੍ਰਾਜ਼ੀਲੀਆ ਗਰਮੀਆਂ ਦ" + - "ਾ ਵੇਲਾ8ਬਰੂਨੇਈ ਦਾਰੂਸਲਾਮ ਵੇਲਾ ਕੇਪ ਵਰਡ ਵੇਲਾ0ਕੇਪ ਵਰਡ ਮਿਆਰੀ ਵੇਲਾ:ਕੇਪ ਵਰਡ ਗਰ" + - "ਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਕੇਸੀ ਸਮਾਂ/ਚਾਮੋਰੋ ਮਿਆਰੀ ਵੇਲਾ\x19ਚੈਥਮ ਵੇਲਾ)ਚੈਥਮ ਮਿਆਰੀ ਵੇ" + - "ਲਾ/ਚੈਥਮ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x19ਚਿਲੀ ਵੇਲਾ)ਚਿਲੀ ਮਿਆਰੀ ਵੇਲਾ3ਚਿਲੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ" + - "\x16ਚੀਨ ਵੇਲਾ&ਚੀਨ ਮਿਆਰੀ ਵੇਲਾ,ਚੀਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ%ਚੌਇਬਾਲਸਨ ਵੇਲਾ5ਚੌਇਬਾਲਸਨ ਮਿਆਰ" + - "ੀ ਵੇਲਾ?ਚੌਇਬਾਲਸਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ5ਕ੍ਰਿਸਮਸ ਆਈਲੈਂਡ ਵੇਲਾ,ਕੋਕਸ ਆਈਲੈਂਡ ਵੇਲਾ" + - "\x22ਕੋਲੰਬੀਆ ਵੇਲਾ2ਕੋਲੰਬੀਆ ਮਿਆਰੀ ਵੇਲਾ<ਕੋਲੰਬੀਆ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ,ਕੁੱਕ ਆਈਲੈਂਡ ਵ" + - "ੇਲਾ<ਕੁੱਕ ਆਈਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾPਕੁੱਕ ਆਈਲੈਂਡ ਅੱਧ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1cਕਿਊਬਾ ਵੇਲ" + - "ਾ,ਕਿਊਬਾ ਮਿਆਰੀ ਵੇਲਾ2ਕਿਊਬਾ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1cਡੇਵਿਸ ਵੇਲਾ;ਡਿਉਮੋਂਟ ਡਿਉਰਵਿਲੇ ਵ" + - "ੇਲਾ,ਪੂਰਬੀ ਤਿਮੂਰ ਵੇਲਾ,ਈਸਟਰ ਆਈਲੈਂਡ ਵੇਲਾ<ਈਸਟਰ ਆਈਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾFਈਸਟਰ ਆਈਲੈ" + - "ਂਡ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਇਕਵੇਡੋਰ ਵੇਲਾ&ਮੱਧ ਯੂਰਪੀ ਵੇਲਾ6ਮੱਧ ਯੂਰਪੀ ਮਿਆਰੀ ਵੇਲਾ@" + - "ਮੱਧ ਯੂਰਪੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ,ਪੂਰਬੀ ਯੂਰਪੀ ਵੇਲਾ<ਪੂਰਬੀ ਯੂਰਪੀ ਮਿਆਰੀ ਵੇਲਾFਪੂਰਬੀ" + - " ਯੂਰਪੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ6ਹੋਰ-ਪੂਰਬੀ ਯੂਰਪੀ ਵੇਲਾ,ਪੱਛਮੀ ਯੂਰਪੀ ਵੇਲਾ<ਪੱਛਮੀ ਯੂਰਪੀ " + - "ਮਿਆਰੀ ਵੇਲਾFਪੱਛਮੀ ਯੂਰਪੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ;ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਵੇਲਾKਫ਼ਾਕਲੈਂਡ ਆ" + - "ਈਲੈਂਡਸ ਮਿਆਰੀ ਵੇਲਾUਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1fਫ਼ਿਜ਼ੀ ਵੇਲਾ/ਫ਼ਿਜ਼" + - "ੀ ਮਿਆਰੀ ਵੇਲਾ9ਫ਼ਿਜ਼ੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ/ਫ੍ਰੈਂਚ ਗੁਏਨਾ ਵੇਲਾRਫ੍ਰੈਂਚ ਦੱਖਣੀ ਅਤੇ " + - "ਐਂਟਾਰਟਿਕ ਵੇਲਾ%ਗਲਾਪਾਗੋਸ ਵੇਲਾ\x22ਗੈਂਬੀਅਰ ਵੇਲਾ\x1fਜਾਰਜੀਆ ਵੇਲਾ/ਜਾਰਜੀਆ ਮਿਆਰ" + - "ੀ ਵੇਲਾ9ਜਾਰਜੀਆ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ2ਗਿਲਬਰਟ ਆਈਲੈਂਡ ਵੇਲਾ/ਗ੍ਰੀਨਵਿਚ ਮੀਨ ਵੇਲਾ8ਪੂਰਬ" + - "ੀ ਗ੍ਰੀਨਲੈਂਡ ਵੇਲਾHਪੂਰਬੀ ਗ੍ਰੀਨਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾRਪੂਰਬੀ ਗ੍ਰੀਨਲੈਂਡ ਗਰਮੀਆਂ ਦਾ " + - "ਵੇਲਾ8ਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਵੇਲਾHਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾRਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਗ" + - "ਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਗੁਆਮ ਸਮਾਂ)ਖਾੜੀ ਮਿਆਰੀ ਵੇਲਾ\x1fਗੁਯਾਨਾ ਵੇਲਾ8ਹਵਾਈ-ਅਲੇਯੂਸ਼" + - "ਿਅਨ ਵੇਲਾHਹਵਾਈ-ਅਲੇਯੂਸ਼ਿਅਨ ਮਿਆਰੀ ਵੇਲਾNਹਵਾਈ-ਅਲੇਯੂਸ਼ਿਅਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ&ਹਾਂਗ " + - "ਕਾਂਗ ਵੇਲਾ6ਹਾਂਗ ਕਾਂਗ ਮਿਆਰੀ ਵੇਲਾ@ਹਾਂਗ ਕਾਂਗ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਹੋਵਡ ਵੇਲਾ)ਹ" + - "ੋਵਡ ਮਿਆਰੀ ਵੇਲਾ3ਹੋਵਡ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ,ਭਾਰਤੀ ਮਿਆਰੀ ਵੇਲਾ2ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਵੇਲਾ" + - "(ਇੰਡੋਚਾਈਨਾ ਵੇਲਾ8ਮੱਧ ਇੰਡੋਨੇਸ਼ੀਆਈ ਵੇਲਾ;ਪੂਰਬੀ ਇੰਡੋਨੇਸ਼ੀਆ ਵੇਲਾ;ਪੱਛਮੀ ਇੰਡੋਨੇਸ" + - "਼ੀਆ ਵੇਲਾ\x19ਈਰਾਨ ਵੇਲਾ)ਈਰਾਨ ਮਿਆਰੀ ਵੇਲਾ/ਈਰਾਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x22ਇਰਕੁਤਸਕ ਵੇਲ" + - "ਾ2ਇਰਕੁਤਸਕ ਮਿਆਰੀ ਵੇਲਾ<ਇਰਕੁਤਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਇਜ਼ਰਾਈਲ ਵੇਲਾ2ਇਜ਼ਰਾਈਲ ਮਿ" + - "ਆਰੀ ਵੇਲਾ8ਇਜ਼ਰਾਈਲ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x19ਜਪਾਨ ਵੇਲਾ)ਜਪਾਨ ਮਿਆਰੀ ਵੇਲਾ/ਜਪਾਨ ਪ੍ਰਕਾਸ" + - "਼ ਵੇਲਾ;ਪੂਰਬੀ ਕਜ਼ਾਖ਼ਸਤਾਨ ਵੇਲਾ;ਪੱਛਮੀ ਕਜ਼ਾਖ਼ਸਤਾਨ ਵੇਲਾ\x1fਕੋਰੀਆਈ ਵੇਲਾ/ਕੋਰੀ" + - "ਆਈ ਮਿਆਰੀ ਵੇਲਾ5ਕੋਰੀਆਈ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1cਕੋਸਰੇ ਵੇਲਾ1ਕ੍ਰਾਸਨੋਯਾਰਸਕ ਵੇਲਾAਕ੍ਰਾ" + - "ਸਨੋਯਾਰਸਕ ਮਿਆਰੀ ਵੇਲਾKਕ੍ਰਾਸਨੋਯਾਰਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ(ਕਿਰਗਿਸਤਾਨ ਵੇਲਾ\x19ਲੰਕਾ" + - " ਸਮਾਂ,ਲਾਈਨ ਆਈਲੈਂਡ ਵੇਲਾ&ਲੌਰਡ ਹੋਵੇ ਵੇਲਾ6ਲੌਰਡ ਹੋਵੇ ਮਿਆਰੀ ਵੇਲਾ<ਲੌਰਡ ਹੋਵੇ ਪ੍ਰ" + - "ਕਾਸ਼ ਵੇਲਾ\x19ਮਕਾਉ ਸਮਾਂ)ਮਕਾਉ ਮਿਆਰੀ ਸਮਾਂ3ਮਕਾਉ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ8ਮੈਕਕਵੇਰੀ ਆਈ" + - "ਲੈਂਡ ਵੇਲਾ\x1fਮੈਗੇਡਨ ਵੇਲਾ/ਮੈਗੇਡਨ ਮਿਆਰੀ ਵੇਲਾ9ਮੈਗੇਡਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਮਲ" + - "ੇਸ਼ੀਆ ਵੇਲਾ\x1fਮਾਲਦੀਵ ਵੇਲਾ%ਮਾਰਕਿਸਾਸ ਵੇਲਾ2ਮਾਰਸ਼ਲ ਆਈਲੈਂਡ ਵੇਲਾ\x22ਮੌਰਿਸ਼ਸ " + - "ਵੇਲਾ2ਮੌਰਿਸ਼ਸ ਮਿਆਰੀ ਵੇਲਾ<ਮੌਰਿਸ਼ਸ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਮੌਸਨ ਵੇਲਾ?ਉੱਤਰ ਪੱਛਮੀ" + - " ਮੈਕਸੀਕੋ ਵੇਲਾOਉੱਤਰ ਪੱਛਮੀ ਮੈਕਸੀਕੋ ਮਿਆਰੀ ਵੇਲਾUਉੱਤਰ ਪੱਛਮੀ ਮੈਕਸੀਕੋ ਪ੍ਰਕਾਸ਼ ਵ" + - "ੇਲਾ8ਮੈਕਸੀਕਨ ਪੈਸਿਫਿਕ ਵੇਲਾHਮੈਕਸੀਕਨ ਪੈਸਿਫਿਕ ਮਿਆਰੀ ਵੇਲਾNਮੈਕਸੀਕਨ ਪੈਸਿਫਿਕ ਪ੍" + - "ਰਕਾਸ਼ ਵੇਲਾ#ਉਲਨ ਬਟੋਰ ਵੇਲਾ3ਉਲਨ ਬਟੋਰ ਮਿਆਰੀ ਵੇਲਾ=ਉਲਨ ਬਟੋਰ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ" + - "\x1cਮਾਸਕੋ ਵੇਲਾ,ਮਾਸਕੋ ਮਿਆਰੀ ਵੇਲਾ6ਮਾਸਕੋ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਮਿਆਂਮਾਰ ਵੇਲਾ\x1c" + - "ਨਾਉਰੂ ਵੇਲਾ\x1cਨੇਪਾਲ ਵੇਲਾ2ਨਿਊ ਕੈਲੇਡੋਨੀਆ ਵੇਲਾBਨਿਊ ਕੈਲੇਡੋਨੀਆ ਮਿਆਰੀ ਵੇਲਾLਨ" + - "ਿਊ ਕੈਲੇਡੋਨੀਆ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ+ਨਿਊਜ਼ੀਲੈਂਡ ਵੇਲਾ;ਨਿਊਜ਼ੀਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾAਨਿਊਜ" + - "਼ੀਲੈਂਡ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ1ਨਿਊਫਾਉਂਡਲੈਂਡ ਵੇਲਾAਨਿਊਫਾਉਂਡਲੈਂਡ ਮਿਆਰੀ ਵੇਲਾGਨਿਊਫਾਉਂਡ" + - "ਲੈਂਡ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x16ਨੀਊ ਵੇਲਾ2ਨੋਰਫੌਕ ਆਈਲੈਂਡ ਵੇਲਾ?ਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਵੇ" + - "ਲਾOਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਮਿਆਰੀ ਵੇਲਾYਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾBਉੱਤ" + - "ਰੀ ਮਰਿਆਨਾ ਆਈਲੈਂਡ ਸਮਾਂ.ਨੌਵੋਸਿਬੀਰਸਕ ਵੇਲਾ>ਨੌਵੋਸਿਬੀਰਸਕ ਮਿਆਰੀ ਵੇਲਾHਨੌਵੋਸਿਬੀ" + - "ਰਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਓਮਸਕ ਵੇਲਾ)ਓਮਸਕ ਮਿਆਰੀ ਵੇਲਾ3ਓਮਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ%ਪਾ" + - "ਕਿਸਤਾਨ ਵੇਲਾ5ਪਾਕਿਸਤਾਨ ਮਿਆਰੀ ਵੇਲਾ?ਪਾਕਿਸਤਾਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x19ਪਲਾਉ ਵੇਲਾ3ਪ" + - "ਾਪੂਆ ਨਿਊ ਗਿਨੀ ਵੇਲਾ\x22ਪੈਰਾਗਵੇ ਵੇਲਾ2ਪੈਰਾਗਵੇ ਮਿਆਰੀ ਵੇਲਾ<ਪੈਰਾਗਵੇ ਗਰਮੀਆਂ ਦ" + - "ਾ ਵੇਲਾ\x19ਪੇਰੂ ਵੇਲਾ)ਪੇਰੂ ਮਿਆਰੀ ਵੇਲਾ3ਪੇਰੂ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ%ਫਿਲਿਪੀਨੀ ਵੇਲਾ5" + - "ਫਿਲਿਪੀਨੀ ਮਿਆਰੀ ਵੇਲਾ?ਫਿਲਿਪੀਨੀ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ2ਫਿਨਿਕਸ ਆਈਲੈਂਡ ਵੇਲਾFਸੈਂਟ ਪੀ" + - "ਅਰੇ ਅਤੇ ਮਿਕੇਲਨ ਵੇਲਾVਸੈਂਟ ਪੀਅਰੇ ਅਤੇ ਮਿਕੇਲਨ ਮਿਆਰੀ ਵੇਲਾ\\ਸੈਂਟ ਪੀਅਰੇ ਅਤੇ ਮ" + - "ਿਕੇਲਨ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x22ਪਿਟਕੈਰਨ ਵੇਲਾ\x1fਪੋਨਾਪੇ ਵੇਲਾ(ਪਯੋਂਗਯਾਂਗ ਵੇਲਾ(ਕਿਜ਼ਲ" + - "ੋਰਡਾ ਸਮਾਂ8ਕਿਜ਼ਲੋਰਡਾ ਮਿਆਰੀ ਸਮਾਂBਕਿਜ਼ਲੋਰਡਾ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ%ਰਿਯੂਨੀਅਨ ਵੇਲਾ" + - "\x1fਰੋਥੇਰਾ ਵੇਲਾ\x1cਸਖਲੀਨ ਵੇਲਾ,ਸਖਲੀਨ ਮਿਆਰੀ ਵੇਲਾ6ਸਖਲੀਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1cਸ" + - "ਾਮੋਆ ਵੇਲਾ,ਸਾਮੋਆ ਮਿਆਰੀ ਵੇਲਾ2ਸਾਮੋਆ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ\x1fਸੇਸ਼ਲਸ ਵੇਲਾ5ਸਿੰਗਾਪੁਰ " + - "ਮਿਆਰੀ ਵੇਲਾ5ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ ਵੇਲਾ/ਦੱਖਣੀ ਜਾਰਜੀਆ ਵੇਲਾ\x22ਸੂਰੀਨਾਮ ਵੇਲਾ\x1cਸਿ" + - "ਓਵਾ ਵੇਲਾ\x1fਤਾਹੀਤੀ ਵੇਲਾ\x19ਤੈਪਈ ਵੇਲਾ)ਤੈਪਈ ਮਿਆਰੀ ਵੇਲਾ/ਤੈਪਈ ਪ੍ਰਕਾਸ਼ ਵੇਲਾ" + - "+ਤਾਜਿਕਿਸਤਾਨ ਵੇਲਾ\x22ਟੋਕੇਲਾਉ ਵੇਲਾ\x1cਟੋਂਗਾ ਵੇਲਾ,ਟੋਂਗਾ ਮਿਆਰੀ ਵੇਲਾ6ਟੋਂਗਾ ਗਰ" + - "ਮੀਆਂ ਦਾ ਵੇਲਾ\x16ਚੂਕ ਵੇਲਾ1ਤੁਰਕਮੇਨਿਸਤਾਨ ਵੇਲਾAਤੁਰਕਮੇਨਿਸਤਾਨ ਮਿਆਰੀ ਵੇਲਾKਤੁਰ" + - "ਕਮੇਨਿਸਤਾਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1fਟੁਵਾਲੂ ਵੇਲਾ\x1fਉਰੂਗਵੇ ਵੇਲਾ/ਉਰੂਗਵੇ ਮਿਆਰੀ ਵੇ" + - "ਲਾ9ਉਰੂਗਵੇ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ.ਉਜ਼ਬੇਕਿਸਤਾਨ ਵੇਲਾ>ਉਜ਼ਬੇਕਿਸਤਾਨ ਮਿਆਰੀ ਵੇਲਾHਉਜ਼ਬੇ" + - "ਕਿਸਤਾਨ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ\x22ਵਾਨੂਆਟੂ ਵੇਲਾ2ਵਾਨੂਆਟੂ ਮਿਆਰੀ ਵੇਲਾ<ਵਾਨੂਆਟੂ ਗਰਮੀਆ" + - "ਂ ਦਾ ਵੇਲਾ+ਵੈਨੇਜ਼ੂਏਲਾ ਵੇਲਾ+ਵਲਾਦੀਵੋਸਤਕ ਵੇਲਾ;ਵਲਾਦੀਵੋਸਤਕ ਮਿਆਰੀ ਵੇਲਾEਵਲਾਦੀਵ" + - "ੋਸਤਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ+ਵੋਲਗੋਗ੍ਰੇਡ ਵੇਲਾ;ਵੋਲਗੋਗ੍ਰੇਡ ਮਿਆਰੀ ਵੇਲਾEਵੋਲਗੋਗ੍ਰੇਡ ਗ" + - "ਰਮੀਆਂ ਦਾ ਵੇਲਾ\x1fਵੋਸਟੋਕ ਵੇਲਾ)ਵੇਕ ਆਈਲੈਂਡ ਵੇਲਾ9ਵਾਲਿਸ ਅਤੇ ਫੁਟੂਨਾ ਵੇਲਾ\x1f" + - "ਯਕੁਤਸਕ ਵੇਲਾ/ਯਕੁਤਸਕ ਮਿਆਰੀ ਵੇਲਾ9ਯਕੁਤਸਕ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ+ਯਕੇਤਰਿਨਬਰਗ ਵੇਲਾ;ਯਕ" + - "ੇਤਰਿਨਬਰਗ ਮਿਆਰੀ ਵੇਲਾEਯਕੇਤਰਿਨਬਰਗ ਗਰਮੀਆਂ ਦਾ ਵੇਲਾ" - -var bucket80 string = "" + // Size: 10586 bytes - "\x0aاتوار\x06پیر\x08منگل\x08بُدھ\x0cجمعرات\x08جمعہ\x08ہفتہ\x17چوتھاي پہل" + - "اں\x15چوتھاي دوجا\x15چوتھاي تيجا\x17چوتھاي چوتھا\x10ايساپورو\x04سں\x08و" + - "رھا\x0aمہينا\x06دئن\x12ہفتے دا دن\x0aگھنٹا\x06منٹ\x06ٹپہ\x0eEEEE, d MMM" + - "M U\x03sty\x03lut\x03mar\x03kwi\x03maj\x03cze\x03lip\x03sie\x03wrz\x04pa" + - "ź\x03lis\x03gru\x08stycznia\x06lutego\x05marca\x08kwietnia\x04maja\x07c" + - "zerwca\x05lipca\x08sierpnia\x09września\x0dpaździernika\x09listopada\x07" + - "grudnia\x08styczeń\x04luty\x06marzec\x09kwiecień\x08czerwiec\x06lipiec" + - "\x09sierpień\x09wrzesień\x0cpaździernik\x08listopad\x09grudzień\x06niedz" + - ".\x04pon.\x03wt.\x04śr.\x04czw.\x03pt.\x04sob.\x03nie\x03pon\x03wto\x04ś" + - "ro\x03czw\x04pią\x03sob\x09niedziela\x0dponiedziałek\x06wtorek\x06środa" + - "\x08czwartek\x07piątek\x06sobota\x05I kw.\x06II kw.\x07III kw.\x06IV kw." + - "\x0aI kwartał\x0bII kwartał\x0cIII kwartał\x0bIV kwartał\x0bo północy" + - "\x0bw południe\x04rano\x10przed południem\x0cpo południu\x09wieczorem" + - "\x06w nocy\x09o półn.\x07w poł.\x0bprzed poł.\x08po poł.\x06wiecz.\x08pó" + - "łnoc\x09południe\x0eprzedpołudnie\x0bpopołudnie\x08wieczór\x07półn.\x05" + - "poł.\x0aprzedpoł.\x07popoł.\x11przed naszą erą\x06p.n.e.\x0anaszej ery" + - "\x04n.e.\x06Tiszri\x08Cheszwan\x06Kislew\x05Tewet\x05Szwat\x06Adar I\x04" + - "Adar\x07Adar II\x05Nisan\x04Ijar\x05Siwan\x05Tamuz\x02Aw\x04Elul\x09Farw" + - "ardin\x0bOrdibeheszt\x08Chordād\x03Tir\x07Mordād\x09Szahriwar\x04Mehr" + - "\x06Ābān\x05Āsar\x04Déi\x06Bahman\x06Esfand\x09Przed ROC\x03ROC\x0fw zes" + - "złym roku\x0aw tym roku\x11w przyszłym roku\x0c{0} rok temu\x0d{0} lata " + - "temu\x0c{0} lat temu\x0d{0} roku temu\x08kwartał\x13w zeszłym kwartale" + - "\x0ew tym kwartale\x15w przyszłym kwartale\x0fza {0} kwartał\x10za {0} k" + - "wartały\x12za {0} kwartałów\x10za {0} kwartału\x11{0} kwartał temu\x12{0" + - "} kwartały temu\x14{0} kwartałów temu\x12{0} kwartału temu\x0c{0} kw. te" + - "mu\x08+{0} kw.\x0a–{0} kw.\x08miesiąc\x14w zeszłym miesiącu\x0fw tym mie" + - "siącu\x16w przyszłym miesiącu\x0fza {0} miesiąc\x10za {0} miesiące\x10za" + - " {0} miesięcy\x10za {0} miesiąca\x11{0} miesiąc temu\x12{0} miesiące tem" + - "u\x12{0} miesięcy temu\x12{0} miesiąca temu\x05mies.\x0cza {0} mies.\x0e" + - "{0} mies. temu\x02mc\x0a+{0} mies.\x0c–{0} mies.\x08tydzień\x13w zeszłym" + - " tygodniu\x0ew tym tygodniu\x15w przyszłym tygodniu\x0fza {0} tydzień" + - "\x0fza {0} tygodnie\x0eza {0} tygodni\x0fza {0} tygodnia\x11{0} tydzień " + - "temu\x11{0} tygodnie temu\x10{0} tygodni temu\x11{0} tygodnia temu\x0cty" + - "dzień {0}\x05tydz.\x0cza {0} tydz.\x0bza {0} tyg.\x0e{0} tydz. temu\x0d{" + - "0} tyg. temu\x06dzień\x0cprzedwczoraj\x07wczoraj\x07dzisiaj\x05jutro\x08" + - "pojutrze\x0dza {0} dzień\x0aza {0} dni\x0bza {0} dnia\x0f{0} dzień temu" + - "\x0c{0} dni temu\x0d{0} dnia temu\x0fdzień tygodnia\x15w zeszłą niedziel" + - "ę\x10w tę niedzielę\x17w przyszłą niedzielę\x11za {0} niedzielę\x10za {" + - "0} niedziele\x0fza {0} niedziel\x10za {0} niedzieli\x13{0} niedzielę tem" + - "u\x12{0} niedziele temu\x11{0} niedziel temu\x12{0} niedzieli temu\x17w " + - "zeszły poniedziałek\x13w ten poniedziałek\x19w przyszły poniedziałek\x14" + - "za {0} poniedziałek\x14za {0} poniedziałki\x16za {0} poniedziałków\x14za" + - " {0} poniedziałku\x16{0} poniedziałek temu\x16{0} poniedziałki temu\x18{" + - "0} poniedziałków temu\x16{0} poniedziałku temu\x10w zeszły wtorek\x0cw t" + - "en wtorek\x12w przyszły wtorek\x0dza {0} wtorek\x0dza {0} wtorki\x0fza {" + - "0} wtorków\x0dza {0} wtorku\x0f{0} wtorek temu\x0f{0} wtorki temu\x11{0}" + - " wtorków temu\x0f{0} wtorku temu\x12w zeszłą środę\x0dw tę środę\x14w pr" + - "zyszłą środę\x0eza {0} środę\x0dza {0} środy\x0dza {0} śród\x10{0} środę" + - " temu\x0f{0} środy temu\x0f{0} śród temu\x12w zeszły czwartek\x0ew ten c" + - "zwartek\x14w przyszły czwartek\x0fza {0} czwartek\x0fza {0} czwartki\x11" + - "za {0} czwartków\x0fza {0} czwartku\x11{0} czwartek temu\x11{0} czwartki" + - " temu\x13{0} czwartków temu\x11{0} czwartku temu\x11w zeszły piątek\x0dw" + - " ten piątek\x13w przyszły piątek\x0eza {0} piątek\x0eza {0} piątki\x10za" + - " {0} piątków\x0eza {0} piątku\x10{0} piątek temu\x10{0} piątki temu\x12{" + - "0} piątków temu\x10{0} piątku temu\x12w zeszłą sobotę\x0dw tę sobotę\x14" + - "w przyszłą sobotę\x0eza {0} sobotę\x0dza {0} soboty\x0dza {0} sobót\x10{" + - "0} sobotę temu\x0f{0} soboty temu\x0f{0} sobót temu\x1frano / po południ" + - "u / wieczorem\x07godzina\x0ata godzina\x0fza {0} godzinę\x0eza {0} godzi" + - "ny\x0dza {0} godzin\x11{0} godzinę temu\x10{0} godziny temu\x0f{0} godzi" + - "n temu\x05godz.\x0cza {0} godz.\x0e{0} godz. temu\x0b{0} g. temu\x09ta m" + - "inuta\x0eza {0} minutę\x0dza {0} minuty\x0cza {0} minut\x10{0} minutę te" + - "mu\x0f{0} minuty temu\x0e{0} minut temu\x0c{0} min temu\x05teraz\x0fza {" + - "0} sekundę\x0eza {0} sekundy\x0dza {0} sekund\x11{0} sekundę temu\x10{0}" + - " sekundy temu\x0f{0} sekund temu\x0d{0} sek. temu\x0a{0} s temu\x0estref" + - "a czasowa\x09Czas: {0}\x10{0} (czas letni)\x16{0} (czas standardowy)\x1d" + - "Uniwersalny czas koordynowany\x14Brytyjski czas letni\x15Irlandia (czas " + - "letni)\x0aAfganistan\x19Czas środkowoafrykański\x19Czas wschodnioafrykań" + - "ski\x1bCzas południowoafrykański\x19Czas zachodnioafrykański%Czas zachod" + - "nioafrykański standardowy\x1fCzas zachodnioafrykański letni\x06Alaska" + - "\x19Alaska (czas standardowy)\x13Alaska (czas letni)\x0fCzas amazoński" + - "\x1bCzas amazoński standardowy\x15Czas amazoński letni\x1aCzas środkowoa" + - "merykański&Czas środkowoamerykański standardowy Czas środkowoamerykański" + - " letni\x1aCzas wschodnioamerykański&Czas wschodnioamerykański standardow" + - "y Czas wschodnioamerykański letni\x0cCzas górski\x18Czas górski standard" + - "owy\x12Czas górski letni\x0fCzas pacyficzny\x1bCzas pacyficzny standardo" + - "wy\x15Czas pacyficzny letni\x0bCzas Anadyr\x17Czas standardowy Anadyr" + - "\x11Czas Anadyr letni\x04Apia\x17Apia (czas standardowy)\x11Apia (czas l" + - "etni)\x12Półwysep Arabski%Półwysep Arabski (czas standardowy)\x1fPółwyse" + - "p Arabski (czas letni)\x09Argentyna\x1cArgentyna (czas standardowy)\x16A" + - "rgentyna (czas letni)\x13Argentyna Zachodnia&Argentyna Zachodnia (czas s" + - "tandardowy) Argentyna Zachodnia (czas letni)\x07Armenia\x1aArmenia (czas" + - " standardowy)\x14Armenia (czas letni)\x0fCzas atlantycki\x1bCzas atlanty" + - "cki standardowy\x15Czas atlantycki letni\x1aCzas środkowoaustralijski&Cz" + - "as środkowoaustralijski standardowy Czas środkowoaustralijski letni$Czas" + - " środkowo-zachodnioaustralijski0Czas środkowo-zachodnioaustralijski stan" + - "dardowy*Czas środkowo-zachodnioaustralijski letni\x1aCzas wschodnioaustr" + - "alijski&Czas wschodnioaustralijski standardowy Czas wschodnioaustralijsk" + - "i letni\x1aCzas zachodnioaustralijski&Czas zachodnioaustralijski standar" + - "dowy Czas zachodnioaustralijski letni\x0cAzerbejdżan\x1fAzerbejdżan (cza" + - "s standardowy)\x19Azerbejdżan (czas letni)\x05Azory\x18Azory (czas stand" + - "ardowy)\x12Azory (czas letni)\x0aBangladesz\x1dBangladesz (czas standard" + - "owy)\x17Bangladesz (czas letni)\x06Bhutan\x07Boliwia\x09Brasília\x1cBras" + - "ília (czas standardowy)\x16Brasília (czas letni)\x11Brunei Darussalam" + - "\x1aWyspy Zielonego Przylądka-Wyspy Zielonego Przylądka (czas standardow" + - "y)'Wyspy Zielonego Przylądka (czas letni)\x08Czamorro\x07Chatham\x1aChat" + - "ham (czas standardowy)\x14Chatham (czas letni)\x05Chile\x18Chile (czas s" + - "tandardowy)\x12Chile (czas letni)\x05Chiny\x18Chiny (czas standardowy)" + - "\x12Chiny (czas letni)\x0aCzojbalsan\x1dCzojbalsan (czas standardowy)" + - "\x17Czojbalsan (czas letni)\x18Wyspa Bożego Narodzenia\x0eWyspy Kokosowe" + - "\x08Kolumbia\x1bKolumbia (czas standardowy)\x15Kolumbia (czas letni)\x0b" + - "Wyspy Cooka\x1eWyspy Cooka (czas standardowy)\x18Wyspy Cooka (czas letni" + - ")\x04Kuba\x17Kuba (czas standardowy)\x11Kuba (czas letni)\x05Davis\x12Du" + - "mont-d’Urville\x0eTimor Wschodni\x11Wyspa Wielkanocna$Wyspa Wielkanocna " + - "(czas standardowy)\x1eWyspa Wielkanocna (czas letni)\x07Ekwador\x18Czas " + - "środkowoeuropejski$Czas środkowoeuropejski standardowy\x1eCzas środkowo" + - "europejski letni\x18Czas wschodnioeuropejski$Czas wschodnioeuropejski st" + - "andardowy\x1eCzas wschodnioeuropejski letni\x1fCzas wschodnioeuropejski " + - "dalszy\x18Czas zachodnioeuropejski$Czas zachodnioeuropejski standardowy" + - "\x1eCzas zachodnioeuropejski letni\x09Falklandy\x1cFalklandy (czas stand" + - "ardowy)\x16Falklandy (czas letni)\x06Fidżi\x19Fidżi (czas standardowy)" + - "\x13Fidżi (czas letni)\x10Gujana Francuska/Francuskie Terytoria Południo" + - "we i Antarktyczne\x09Galapagos\x07Gambier\x06Gruzja\x19Gruzja (czas stan" + - "dardowy)\x13Gruzja (czas letni)\x0eWyspy Gilberta\x10Czas uniwersalny" + - "\x14Grenlandia Wschodnia'Grenlandia Wschodnia (czas standardowy)!Grenlan" + - "dia Wschodnia (czas letni)\x14Grenlandia Zachodnia'Grenlandia Zachodnia " + - "(czas standardowy)!Grenlandia Zachodnia (czas letni)\x0dZatoka Perska" + - "\x06Gujana\x0dHawaje-Aleuty Hawaje-Aleuty (czas standardowy)\x1aHawaje-A" + - "leuty (czas letni)\x08Hongkong\x1bHongkong (czas standardowy)\x15Hongkon" + - "g (czas letni)\x05Kobdo\x18Kobdo (czas standardowy)\x12Kobdo (czas letni" + - ")\x0dCzas indyjski\x0eOcean Indyjski\x11Czas indochiński\x13Indonezja Śr" + - "odkowa\x13Indonezja Wschodnia\x13Indonezja Zachodnia\x04Iran\x17Iran (cz" + - "as standardowy)\x11Iran (czas letni)\x06Irkuck\x19Irkuck (czas standardo" + - "wy)\x13Irkuck (czas letni)\x06Izrael\x19Izrael (czas standardowy)\x13Izr" + - "ael (czas letni)\x07Japonia\x1aJaponia (czas standardowy)\x14Japonia (cz" + - "as letni)\x1eCzas Pietropawłowsk Kamczacki*Czas standardowy Pietropawłow" + - "sk Kamczacki$Czas Pietropawłowsk Kamczacki letni\x13Kazachstan Wschodni" + - "\x13Kazachstan Zachodni\x05Korea\x18Korea (czas standardowy)\x12Korea (c" + - "zas letni)\x06Kosrae\x0bKrasnojarsk\x1eKrasnojarsk (czas standardowy)" + - "\x18Krasnojarsk (czas letni)\x09Kirgistan\x1eSporady Środkowopolinezyjsk" + - "ie\x09Lord Howe\x1cLord Howe (czas standardowy)\x16Lord Howe (czas letni" + - ")\x09Macquarie\x07Magadan\x1aMagadan (czas standardowy)\x14Magadan (czas" + - " letni)\x07Malezja\x08Malediwy\x07Markizy\x0fWyspy Marshalla\x09Mauritiu" + - "s\x1cMauritius (czas standardowy)\x16Mauritius (czas letni)\x06Mawson" + - "\x1aMeksyk Północno-Zachodni-Meksyk Północno-Zachodni (czas standardowy)" + - "'Meksyk Północno-Zachodni (czas letni)\x18Meksyk (czas pacyficzny)$Meksy" + - "k (czas pacyficzny standardowy)\x1eMeksyk (czas pacyficzny letni)\x0bUła" + - "n Bator\x1eUłan Bator (czas standardowy)\x18Ułan Bator (czas letni)\x0fC" + - "zas moskiewski\x1bCzas moskiewski standardowy\x15Czas moskiewski letni" + - "\x06Mjanma\x05Nauru\x05Nepal\x0eNowa Kaledonia!Nowa Kaledonia (czas stan" + - "dardowy)\x1bNowa Kaledonia (czas letni)\x0dNowa Zelandia Nowa Zelandia (" + - "czas standardowy)\x1aNowa Zelandia (czas letni)\x0fNowa Fundlandia\x22No" + - "wa Fundlandia (czas standardowy)\x1cNowa Fundlandia (czas letni)\x04Niue" + - "\x07Norfolk\x13Fernando de Noronha&Fernando de Noronha (czas standardowy" + - ") Fernando de Noronha (czas letni)\x0bNowosybirsk\x1eNowosybirsk (czas s" + - "tandardowy)\x18Nowosybirsk (czas letni)\x04Omsk\x17Omsk (czas standardow" + - "y)\x11Omsk (czas letni)\x08Pakistan\x1bPakistan (czas standardowy)\x15Pa" + - "kistan (czas letni)\x05Palau\x11Papua-Nowa Gwinea\x08Paragwaj\x1bParagwa" + - "j (czas standardowy)\x15Paragwaj (czas letni)\x04Peru\x17Peru (czas stan" + - "dardowy)\x11Peru (czas letni)\x08Filipiny\x1bFilipiny (czas standardowy)" + - "\x15Filipiny (czas letni)\x06Feniks\x17Saint-Pierre i Miquelon*Saint-Pie" + - "rre i Miquelon (czas standardowy)$Saint-Pierre i Miquelon (czas letni)" + - "\x08Pitcairn\x07Pohnpei\x09Pjongjang\x07Reunion\x07Rothera\x08Sachalin" + - "\x1bSachalin (czas standardowy)\x15Sachalin (czas letni)\x0bCzas Samara" + - "\x17Czas standardowy Samara\x11Czas Samara letni\x05Samoa\x18Samoa (czas" + - " standardowy)\x12Samoa (czas letni)\x07Seszele\x08Singapur\x0eWyspy Salo" + - "mona\x13Georgia Południowa\x07Surinam\x05Syowa\x06Tahiti\x06Tajpej\x19Ta" + - "jpej (czas standardowy)\x13Tajpej (czas letni)\x0cTadżykistan\x07Tokelau" + - "\x05Tonga\x18Tonga (czas standardowy)\x12Tonga (czas letni)\x05Chuuk\x0c" + - "Turkmenistan\x1fTurkmenistan (czas standardowy)\x19Turkmenistan (czas le" + - "tni)\x06Tuvalu\x07Urugwaj\x1aUrugwaj (czas standardowy)\x14Urugwaj (czas" + - " letni)\x0aUzbekistan\x1dUzbekistan (czas standardowy)\x17Uzbekistan (cz" + - "as letni)\x07Vanuatu\x1aVanuatu (czas standardowy)\x14Vanuatu (czas letn" + - "i)\x09Wenezuela\x0cWładywostok\x1fWładywostok (czas standardowy)\x19Wład" + - "ywostok (czas letni)\x0aWołgograd\x1dWołgograd (czas standardowy)\x17Woł" + - "gograd (czas letni)\x06Wostok\x04Wake\x0fWallis i Futuna\x06Jakuck\x19Ja" + - "kuck (czas standardowy)\x13Jakuck (czas letni)\x0dJekaterynburg Jekatery" + - "nburg (czas standardowy)\x1aJekaterynburg (czas letni)\x0dza {0} minuta" + - "\x0cسوموار\x06بدھ" - -var bucket81 string = "" + // Size: 13986 bytes - "\x1aEEEE, y 'mettas' d. MMMM G\x14y 'mettas' d. MMMM G\x0fdd.MM 'st'. y " + - "G\x03rag\x03was\x04pūl\x03sak\x03zal\x04sīm\x04līp\x03dag\x03sil\x03spa" + - "\x03lap\x03sal\x04rags\x09wassarins\x06pūlis\x06sakkis\x07zallaws\x08sīm" + - "enis\x05līpa\x06daggis\x07sillins\x08spallins\x0alapkrūtis\x07sallaws" + - "\x03nad\x03pan\x03wis\x03pus\x03ket\x04pēn\x03sab\x07nadīli\x09panadīli" + - "\x0awisasīdis\x0cpussisawaiti\x0aketwirtiks\x09pēntniks\x09sabattika\x05" + - "1. k.\x052. k.\x053. k.\x054. k.\x0b1. ketwirts\x0b2. ketwirts\x0b3. ket" + - "wirts\x0b4. ketwirts\x081. ketw.\x082. ketw.\x083. ketw.\x084. ketw.\x0b" + - "ankstāinan\x0epa pussideinan\x18EEEE, y 'mettas' d. MMMM\x12y 'mettas' d" + - ". MMMM\x0ddd.MM 'st'. y\x06mettan\x11panzdauman mettan\x09this year\x09n" + - "ext year\x08ketwirts\x05ketw.\x06mīnss\x04mī.\x08sawaīti\x04saw.\x06dein" + - "ā\x06bītan\x0bšandēinan\x10sawaītis deinā\x1cankstāinan / pa pussideina" + - "n\x07stūndi\x07minūti\x08sekūndi\x0bkerdaszōni\x0bKerdā: {0}\x12Daggas k" + - "erdā: {0}\x13Zēimas kerdā: {0}\x1bCentrālas Amērikas kerdā#Centrālas Amē" + - "rikas zēimas kerdā\x22Centrālas Amērikas daggas kerdā\x1bDēiniskas Amēri" + - "kas kerdā#Dēiniskas Amērikas zēimas kerdā\x22Dēiniskas Amērikas daggas k" + - "erdā\x18Amērikas gārban kerdā Amērikas gārban zēimas kerdā\x1fAmērikas g" + - "ārban daggas kerdā\x1cPacīfiskas Amērikas kerdā$Pacīfiskas Amērikas zēi" + - "mas kerdā#Pacīfiskas Amērikas daggas kerdā\x12Atlāntiska kerdā\x1aAtlānt" + - "iska zēimas kerdā\x19Atlāntiska daggas kerdā\x1aCentrālas Eurōpas kerdā" + - "\x22Centrālas Eurōpas zēimas kerdā!Centrālas Eurōpas daggas kerdā\x1aDēi" + - "niskas Eurōpas kerdā\x22Dēiniskas Eurōpas zēimas kerdā!Dēiniskas Eurōpas" + - " daggas kerdā\x1bWakkariskas Eurōpas kerdā#Wakkariskas Eurōpas zēimas ke" + - "rdā\x22Wakkariskas Eurōpas daggas kerdā\x10Greenwich kerdā\x15EEEE د G y" + - " د MMMM d\x10د G y د MMMM d\x0bGGGGG y/M/d\x0aجنوري\x0cفبروري\x08مارچ" + - "\x0aاپریل\x04مۍ\x06جون\x0aجولای\x08اګست\x0cسپتمبر\x0cاکتوبر\x0aنومبر\x0a" + - "دسمبر\x13لومړۍ ربعه\x0f۲مه ربعه\x0f۳مه ربعه\x0f۴مه ربعه\x06غ.م.\x06غ.و." + - "#له میلاد څخه وړاندې#له میلاد څخه وروسته\x1cله میلاد وړاندې\x03م.\x13EEE" + - "E د y د MMMM d\x0eد y د MMMM d\x06وری\x08غویی\x0eغبرگولی\x0aچنگاښ\x08زمر" + - "ی\x06وږی\x06تله\x06لړم\x0aلیندۍ\x0cمرغومی\x0cسلواغه\x04کب\x12د {0} په و" + - "خت\x18الماتا په وخت لوېديزې اروپا وخت\x06Mês 1\x06Mês 2\x06Mês 3\x06Mês" + - " 4\x06Mês 5\x06Mês 6\x06Mês 7\x06Mês 8\x06Mês 9\x07Mês 10\x07Mês 11\x07M" + - "ês 12\x18EEEE, d 'de' MMMM 'de' U\x12d 'de' MMMM 'de' U\x07dd/MM U\x07j" + - "aneiro\x09fevereiro\x06março\x05abril\x04maio\x05junho\x05julho\x06agost" + - "o\x08setembro\x07outubro\x08novembro\x08dezembro\x0ameia-noite\x08meio-d" + - "ia\x09da manhã\x06manhã\x12antes da Era Comum\x09Era Comum\x0fAntes de R" + - ".O.C.\x06R.O.C.\x0bano passado\x08este ano\x0cpróximo ano\x0aem {0} ano" + - "\x0bem {0} anos\x0bhá {0} ano\x0chá {0} anos\x08+{0} ano\x09+{0} anos" + - "\x08-{0} ano\x09-{0} anos\x11último trimestre\x0eeste trimestre\x12próxi" + - "mo trimestre\x10em {0} trimestre\x11em {0} trimestres\x11há {0} trimestr" + - "e\x12há {0} trimestres\x0cem {0} trim.\x0dem {0} trims.\x0dhá {0} trim." + - "\x0ehá {0} trims.\x0cmês passado\x09este mês\x0dpróximo mês\x0bem {0} mê" + - "s\x0cem {0} meses\x0chá {0} mês\x0dhá {0} meses\x09+{0} mês\x0a+{0} mese" + - "s\x09-{0} mês\x0a-{0} meses\x0esemana passada\x0besta semana\x0fpróxima " + - "semana\x0dem {0} semana\x0eem {0} semanas\x0ehá {0} semana\x0fhá {0} sem" + - "anas\x0fa semana de {0}\x0bem {0} sem.\x0chá {0} sem.\x09anteontem\x05on" + - "tem\x04hoje\x07amanhã\x11depois de amanhã\x0aem {0} dia\x0bem {0} dias" + - "\x0bhá {0} dia\x0chá {0} dias\x08+{0} dia\x09+{0} dias\x08-{0} dia\x09-{" + - "0} dias\x0ddia da semana\x0fdomingo passado\x0ceste domingo\x10próximo d" + - "omingo\x0eem {0} domingo\x0fem {0} domingos\x0fhá {0} domingo\x10há {0} " + - "domingos\x0cdom. passado\x09este dom.\x0dpróximo dom.\x15segunda-feira p" + - "assada\x12esta segunda-feira\x16próxima segunda-feira\x14em {0} segunda-" + - "feira\x16em {0} segundas-feiras\x15há {0} segunda-feira\x17há {0} segund" + - "as-feiras\x0cseg. passada\x09esta seg.\x0dpróxima seg.\x14terça-feira pa" + - "ssada\x11esta terça-feira\x15próxima terça-feira\x13em {0} terça-feira" + - "\x15em {0} terças-feiras\x14há {0} terça-feira\x16há {0} terças-feiras" + - "\x0cter. passada\x09esta ter.\x0dpróxima ter.\x14quarta-feira passada" + - "\x11esta quarta-feira\x15próxima quarta-feira\x15em {0} quartas-feiras" + - "\x16há {0} quartas-feiras\x0cqua. passada\x09esta qua.\x0dpróxima qua." + - "\x14quinta-feira passada\x11esta quinta-feira\x15próxima quinta-feira" + - "\x15em {0} quintas-feiras\x16há {0} quintas-feiras\x0cqui. passada\x09es" + - "ta qui.\x0apróx. qui\x13sexta-feira passada\x10esta sexta-feira\x14próxi" + - "ma sexta-feira\x14em {0} sextas-feiras\x15há {0} sextas-feiras\x0csex. p" + - "assada\x09esta sex.\x0dpróxima sex.\x0fsábado passado\x0ceste sábado\x10" + - "próximo sábado\x0eem {0} sábado\x0fem {0} sábados\x0fhá {0} sábado\x10há" + - " {0} sábados\x0dsáb. passado\x0aeste sáb.\x0epróximo sáb.\x0bem {0} hora" + - "\x0cem {0} horas\x0chá {0} hora\x0dhá {0} horas\x08em {0} h\x09há {0} h" + - "\x0dem {0} minuto\x0eem {0} minutos\x0ehá {0} minuto\x0fhá {0} minutos" + - "\x0bem {0} min.\x0cem {0} mins.\x0chá {0} min.\x0dhá {0} mins.\x0eem {0}" + - " segundo\x0fem {0} segundos\x0fhá {0} segundo\x10há {0} segundos\x0bem {" + - "0} seg.\x0cem {0} segs.\x0chá {0} seg.\x0dfuso horário\x0cHorário {0}" + - "\x08{0} (+1)\x08{0} (+0)\x1dHorário de Verão Britânico\x1bHorário Padrão" + - " da Irlanda\x10Horário do Acre\x18Horário Padrão do Acre\x1aHorário de V" + - "erão do Acre\x18Horário do Afeganistão\x1bHorário da África Central\x1cH" + - "orário da África Oriental\x1aHorário da África do Sul\x1dHorário da Áfri" + - "ca Ocidental%Horário Padrão da África Ocidental'Horário de Verão da Áfri" + - "ca Ocidental\x12Horário do Alasca\x1aHorário Padrão do Alasca\x1cHorário" + - " de Verão do Alasca\x12Horário do Almaty\x1aHorário Padrão do Almaty\x1c" + - "Horário de Verão do Almaty\x14Horário do Amazonas\x1cHorário Padrão do A" + - "mazonas\x1eHorário de Verão do Amazonas\x10Horário Central\x18Horário Pa" + - "drão Central\x1aHorário de Verão Central\x11Horário Oriental\x19Horário " + - "Padrão Oriental\x1bHorário de Verão Oriental\x14Horário da Montanha\x1cH" + - "orário Padrão da Montanha\x1eHorário de Verão da Montanha\x15Horário do " + - "Pacífico\x1dHorário Padrão do Pacífico\x1fHorário de Verão do Pacífico" + - "\x12Horário de Anadyr\x1aHorário Padrão do Anadyr\x1cHorário de Verão do" + - " Anadyr\x10Horário de Apia\x18Horário Padrão de Apia\x1aHorário de Verão" + - " de Apia\x11Horário do Aqtau\x19Horário Padrão do Aqtau\x1bHorário de Ve" + - "rão do Aqtau\x12Horário do Aqtobe\x1aHorário Padrão do Aqtobe\x1cHorário" + - " de Verão do Aqtobe\x13Horário da Arábia\x1bHorário Padrão da Arábia\x1d" + - "Horário de Verão da Arábia\x15Horário da Argentina\x1dHorário Padrão da " + - "Argentina\x1fHorário de Verão da Argentina\x1fHorário da Argentina Ocide" + - "ntal'Horário Padrão da Argentina Ocidental)Horário de Verão da Argentina" + - " Ocidental\x14Horário da Armênia\x1cHorário Padrão da Armênia\x1eHorário" + - " de Verão da Armênia\x16Horário do Atlântico\x1eHorário Padrão do Atlânt" + - "ico Horário de Verão do Atlântico\x1eHorário da Austrália Central&Horári" + - "o Padrão da Austrália Central(Horário de Verão da Austrália Central'Horá" + - "rio da Austrália Centro-Ocidental/Horário Padrão da Austrália Centro-Oci" + - "dental1Horário de Verão da Austrália Centro-Ocidental\x1fHorário da Aust" + - "rália Oriental'Horário Padrão da Austrália Oriental)Horário de Verão da " + - "Austrália Oriental Horário da Austrália Ocidental(Horário Padrão da Aust" + - "rália Ocidental*Horário de Verão da Austrália Ocidental\x18Horário do Ar" + - "zeibaijão Horário Padrão do Arzeibaijão\x22Horário de Verão do Arzeibaij" + - "ão\x14Horário dos Açores\x1cHorário Padrão dos Açores\x1eHorário de Ver" + - "ão dos Açores\x16Horário de Bangladesh\x1eHorário Padrão de Bangladesh " + - "Horário de Verão de Bangladesh\x12Horário do Butão\x14Horário da Bolívia" + - "\x15Horário de Brasília\x1dHorário Padrão de Brasília\x1fHorário de Verã" + - "o de Brasília\x1dHorário de Brunei Darussalam\x16Horário do Cabo Verde" + - "\x1eHorário Padrão do Cabo Verde Horário de Verão do Cabo Verde\x14Horár" + - "io de Chamorro\x13Horário de Chatham\x1bHorário Padrão de Chatham\x1dHor" + - "ário de Verão de Chatham\x11Horário do Chile\x19Horário Padrão do Chile" + - "\x1bHorário de Verão do Chile\x11Horário da China\x19Horário Padrão da C" + - "hina\x1bHorário de Verão da China\x16Horário de Choibalsan\x1eHorário Pa" + - "drão de Choibalsan Horário de Verão de Choibalsan\x1aHorário da Ilha Chr" + - "istmas\x17Horário das Ilhas Coco\x15Horário da Colômbia\x1dHorário Padrã" + - "o da Colômbia\x1fHorário de Verão da Colômbia\x17Horário das Ilhas Cook" + - "\x1fHorário Padrão das Ilhas Cook&Meio Horário de Verão das Ilhas Cook" + - "\x10Horário de Cuba\x18Horário Padrão de Cuba\x1aHorário de Verão de Cub" + - "a\x11Horário de Davis\x1eHorário de Dumont-d’Urville\x17Horário do Timor" + - "-Leste\x1bHorário da Ilha de Páscoa#Horário Padrão da Ilha de Páscoa%Hor" + - "ário de Verão da Ilha de Páscoa\x13Horário do Equador\x1aHorário da Eur" + - "opa Central\x22Horário Padrão da Europa Central$Horário de Verão da Euro" + - "pa Central\x1bHorário da Europa Oriental#Horário Padrão da Europa Orient" + - "al%Horário de Verão da Europa Oriental!Horário do Extremo Leste Europeu" + - "\x1cHorário da Europa Ocidental$Horário Padrão da Europa Ocidental&Horár" + - "io de Verão da Europa Ocidental\x1bHorário das Ilhas Falkland#Horário Pa" + - "drão das Ilhas Falkland%Horário de Verão das Ilhas Falkland\x10Horário d" + - "e Fiji\x18Horário Padrão de Fiji\x1aHorário de Verão de Fiji\x1bHorário " + - "da Guiana Francesa*Horário da Antártida e do Sul da França\x16Horário de" + - " Galápagos\x13Horário de Gambier\x14Horário da Geórgia\x1cHorário Padrão" + - " da Geórgia\x1eHorário de Verão da Geórgia\x1bHorário das Ilhas Gilberto" + - "\x22Horário do Meridiano de Greenwich Horário da Groelândia Oriental(Hor" + - "ário Padrão da Groelândia Oriental*Horário de Verão da Groelândia Orien" + - "tal\x22Horário da Groenlândia Ocidental*Horário Padrão da Groenlândia Oc" + - "idental,Horário de Verão da Groenlândia Ocidental\x18Horário Padrão de G" + - "uam\x11Horário do Golfo\x12Horário da Guiana\x22Horário do Havaí e Ilhas" + - " Aleutas*Horário Padrão do Havaí e Ilhas Aleutas,Horário de Verão do Hav" + - "aí e Ilhas Aleutas\x15Horário de Hong Kong\x1dHorário Padrão de Hong Kon" + - "g\x1fHorário de Verão de Hong Kong\x10Horário de Hovd\x18Horário Padrão " + - "de Hovd\x1aHorário de Verão de Hovd\x1aHorário Padrão da Índia\x1aHorári" + - "o do Oceano Índico\x15Horário da Indochina\x1eHorário da Indonésia Centr" + - "al\x1fHorário da Indonésia Oriental Horário da Indonésia Ocidental\x10Ho" + - "rário do Irã\x18Horário Padrão do Irã\x1aHorário de Verão do Irã\x13Horá" + - "rio de Irkutsk\x1bHorário Padrão de Irkutsk\x1dHorário de Verão de Irkut" + - "sk\x12Horário de Israel\x1aHorário Padrão de Israel\x1cHorário de Verão " + - "de Israel\x12Horário do Japão\x1aHorário Padrão do Japão\x1cHorário de V" + - "erão do Japão$Horário de Petropavlovsk-Kamchatski,Horário Padrão de Petr" + - "opavlovsk-Kamchatski.Horário de Verão de Petropavlovsk-Kamchatski!Horári" + - "o do Casaquistão Oriental\x22Horário do Casaquistão Ocidental\x12Horário" + - " da Coreia\x1aHorário Padrão da Coreia\x1cHorário de Verão da Coreia\x12" + - "Horário de Kosrae\x17Horário de Krasnoyarsk\x1fHorário Padrão de Krasnoy" + - "arsk!Horário de Verão de Krasnoyarsk\x18Horário do Quirguistão\x11Horári" + - "o de Lanka\x17Horário das Ilhas Line\x15Horário de Lord Howe\x1dHorário " + - "Padrão de Lord Howe\x1fHorário de Verão de Lord Howe\x11Horário de Macau" + - "\x19Horário Padrão de Macau\x1bHorário de Verão de Macau\x1aHorário da I" + - "lha Macquarie\x13Horário de Magadan\x1bHorário Padrão de Magadan\x1dHorá" + - "rio de Verão de Magadan\x14Horário da Malásia\x1bHorário das Ilhas Maldi" + - "vas\x16Horário das Marquesas\x1bHorário das Ilhas Marshall\x1cHorário da" + - "s Ilhas Maurício$Horário Padrão das Ilhas Maurício&Horário de Verão das " + - "Ilhas Maurício\x12Horário de Mawson\x1fHorário do Noroeste do México'Hor" + - "ário Padrão do Noroeste do México)Horário de Verão do Noroeste do Méxic" + - "o Horário do Pacífico do México(Horário Padrão do Pacífico do México*Hor" + - "ário de Verão do Pacífico do México\x16Horário de Ulan Bator\x1eHorário" + - " Padrão de Ulan Bator Horário de Verão de Ulan Bator\x12Horário de Mosco" + - "u\x1aHorário Padrão de Moscou\x1cHorário de Verão de Moscou\x13Horário d" + - "e Mianmar\x11Horário de Nauru\x11Horário do Nepal\x1bHorário da Nova Cal" + - "edônia#Horário Padrão da Nova Caledônia%Horário de Verão da Nova Caledôn" + - "ia\x1aHorário da Nova Zelândia\x22Horário Padrão da Nova Zelândia$Horári" + - "o de Verão da Nova Zelândia\x16Horário de Terra Nova\x1eHorário Padrão d" + - "e Terra Nova Horário de Verão de Terra Nova\x10Horário de Niue\x18Horári" + - "o da Ilha Norfolk\x1fHorário de Fernando de Noronha'Horário Padrão de Fe" + - "rnando de Noronha)Horário de Verão de Fernando de Noronha#Horário das Il" + - "has Mariana do Norte\x17Horário de Novosibirsk\x1fHorário Padrão de Novo" + - "sibirsk!Horário de Verão de Novosibirsk\x10Horário de Omsk\x18Horário Pa" + - "drão de Omsk\x1aHorário de Verão de Omsk\x16Horário do Paquistão\x1eHorá" + - "rio Padrão do Paquistão Horário de Verão do Paquistão\x11Horário de Pala" + - "u\x1dHorário de Papua Nova Guiné\x14Horário do Paraguai\x1cHorário Padrã" + - "o do Paraguai\x1eHorário de Verão do Paraguai\x10Horário do Peru\x18Horá" + - "rio Padrão do Peru\x1aHorário de Verão do Peru\x16Horário das Filipinas" + - "\x1eHorário Padrão das Filipinas Horário de Verão das Filipinas\x19Horár" + - "io das Ilhas Fênix#Horário de Saint Pierre e Miquelon+Horário Padrão de " + - "Saint Pierre e Miquelon-Horário de Verão de Saint Pierre e Miquelon\x14H" + - "orário de Pitcairn\x12Horário de Ponape\x15Horário de Pyongyang\x15Horár" + - "io de Qyzylorda\x1dHorário Padrão de Qyzylorda\x1fHorário de Verão de Qy" + - "zylorda\x1bHorário das Ilhas Reunião\x13Horário de Rothera\x14Horário de" + - " Sacalina\x1cHorário Padrão de Sacalina\x1eHorário de Verão de Sacalina" + - "\x12Horário de Samara\x1aHorário Padrão de Samara\x1cHorário de Verão de" + - " Samara\x11Horário de Samoa\x19Horário Padrão de Samoa\x1bHorário de Ver" + - "ão de Samoa\x1dHorário das Ilhas Seychelles\x1dHorário Padrão de Cingap" + - "ura\x1bHorário das Ilhas Salomão\x1bHorário da Geórgia do Sul\x14Horário" + - " do Suriname\x11Horário de Syowa\x11Horário do Taiti\x12Horário de Taipe" + - "i\x1aHorário Padrão de Taipei\x1cHorário de Verão de Taipei\x18Horário d" + - "o Tajiquistão\x13Horário de Tokelau\x11Horário de Tonga\x19Horário Padrã" + - "o de Tonga\x1bHorário de Verão de Tonga\x11Horário de Chuuk\x1aHorário d" + - "o Turcomenistão\x22Horário Padrão do Turcomenistão$Horário de Verão do T" + - "urcomenistão\x12Horário de Tuvalu\x13Horário do Uruguai\x1bHorário Padrã" + - "o do Uruguai\x1dHorário de Verão do Uruguai\x18Horário do Uzbequistão Ho" + - "rário Padrão do Uzbequistão\x22Horário de Verão do Uzbequistão\x13Horári" + - "o de Vanuatu\x1bHorário Padrão de Vanuatu\x1dHorário de Verão de Vanuatu" + - "\x15Horário da Venezuela\x17Horário de Vladivostok\x1fHorário Padrão de " + - "Vladivostok!Horário de Verão de Vladivostok\x16Horário de Volgogrado\x1e" + - "Horário Padrão de Volgogrado Horário de Verão de Volgogrado\x12Horário d" + - "e Vostok\x17Horário das Ilhas Wake\x1bHorário de Wallis e Futuna\x13Horá" + - "rio de Yakutsk\x1bHorário Padrão de Yakutsk\x1dHorário de Verão de Yakut" + - "sk\x19Horário de Ecaterimburgo!Horário Padrão de Ecaterimburgo#Horário d" + - "e Verão de Ecaterimburgo\x0dpróxima qui." - -var bucket82 string = "" + // Size: 9387 bytes - "\x11d 'de' MMM 'de' U\x0d{1} 'às' {0}\x11dentro de {0} ano\x12dentro de " + - "{0} anos\x11trimestre passado\x0eeste trimestre\x12próximo trimestre\x0d" + - "trim. passado\x0aeste trim.\x0epróximo trim.\x12dentro de {0} mês\x13den" + - "tro de {0} meses\x0da sem. de {0}\x11dentro de {0} dia\x12dentro de {0} " + - "dias\x0chá {0} dom.\x1bdentro de {0} segunda-feira\x1ddentro de {0} segu" + - "ndas-feiras\x0fsegunda passada\x0cesta segunda\x10próxima segunda\x15den" + - "tro de {0} segunda\x16dentro de {0} segundas\x0fhá {0} segunda\x10há {0}" + - " segundas\x1adentro de {0} terça-feira\x1cdentro de {0} terças-feiras" + - "\x0eterça passada\x0besta terça\x0fpróxima terça\x14dentro de {0} terça" + - "\x15dentro de {0} terças\x0ehá {0} terça\x0fhá {0} terças\x12dentro de {" + - "0} ter.\x0chá {0} ter.\x1adentro de {0} quarta-feira\x1cdentro de {0} qu" + - "artas-feiras\x14há {0} quarta-feira\x16há {0} quartas-feiras\x0equarta p" + - "assada\x0besta quarta\x0fpróxima quarta\x12dentro de {0} qua.\x0chá {0} " + - "qua.\x1adentro de {0} quinta-feira\x1cdentro de {0} quintas-feiras\x14há" + - " {0} quinta-feira\x16há {0} quintas-feiras\x0equinta passada\x0besta qui" + - "nta\x0fpróxima quinta\x14dentro de {0} quinta\x15dentro de {0} quintas" + - "\x0ehá {0} quinta\x0fhá {0} quintas\x12dentro de {0} qui.\x0chá {0} qui." + - "\x19dentro de {0} sexta-feira\x1bdentro de {0} sextas-feiras\x13há {0} s" + - "exta-feira\x15há {0} sextas-feiras\x0dsexta passada\x0aesta sexta\x0epró" + - "xima sexta\x13dentro de {0} sexta\x14dentro de {0} sextas\x0dhá {0} sext" + - "a\x0ehá {0} sextas\x12dentro de {0} sex.\x0chá {0} sex.\x0dhá {0} sáb." + - "\x0bhá {0} min\x09há {0} s\x19Hora de verão Britânica\x19Hora de verão d" + - "a Irlanda\x0cHora do Acre\x14Hora padrão do Acre\x16Hora de verão do Acr" + - "e\x14Hora do Afeganistão\x17Hora da África Central\x18Hora da África Ori" + - "ental\x16Hora da África do Sul\x19Hora da África Ocidental!Hora padrão d" + - "a África Ocidental#Hora de verão da África Ocidental\x0eHora do Alasca" + - "\x16Hora padrão do Alasca\x18Hora de verão do Alasca\x0eHora de Almaty" + - "\x16Hora padrão de Almaty\x18Hora de verão de Almaty\x10Hora do Amazonas" + - "\x18Hora padrão do Amazonas\x1aHora de verão do Amazonas\x0cHora Central" + - "\x14Hora padrão Central\x16Hora de verão Central\x0dHora Oriental\x15Hor" + - "a padrão Oriental\x17Hora de verão Oriental\x10Hora de Montanha\x18Hora " + - "padrão da Montanha\x1aHora de verão da Montanha\x11Hora do Pacífico\x19H" + - "ora padrão do Pacífico\x1bHora de verão do Pacífico\x0eHora de Anadyr" + - "\x16Hora padrão de Anadyr\x18Hora de verão de Anadyr\x0cHora de Apia\x14" + - "Hora padrão de Apia\x16Hora de verão de Apia\x0dHora de Aqtau\x15Hora pa" + - "drão de Aqtau\x17Hora de verão de Aqtau\x0eHora de Aqtobe\x16Hora padrão" + - " de Aqtobe\x18Hora de verão de Aqtobe\x0fHora da Arábia\x17Hora padrão d" + - "a Arábia\x19Hora de verão da Arábia\x11Hora da Argentina\x19Hora padrão " + - "da Argentina\x1bHora de verão da Argentina\x1bHora da Argentina Ocidenta" + - "l#Hora padrão da Argentina Ocidental%Hora de verão da Argentina Ocidenta" + - "l\x10Hora da Arménia\x18Hora padrão da Arménia\x1aHora de verão da Armén" + - "ia\x12Hora do Atlântico\x1aHora padrão do Atlântico\x1cHora de verão do " + - "Atlântico\x1aHora da Austrália Central\x22Hora padrão da Austrália Centr" + - "al$Hora de verão da Austrália Central$Hora da Austrália Central Ocidenta" + - "l,Hora padrão da Austrália Central Ocidental.Hora de verão da Austrália " + - "Central Ocidental\x1bHora da Austrália Oriental#Hora padrão da Austrália" + - " Oriental%Hora de verão da Austrália Oriental\x1cHora da Austrália Ocide" + - "ntal$Hora padrão da Austrália Ocidental&Hora de verão da Austrália Ocide" + - "ntal\x13Hora do Azerbaijão\x1bHora padrão do Azerbaijão\x1dHora de verão" + - " do Azerbaijão\x10Hora dos Açores\x18Hora padrão dos Açores\x1aHora de v" + - "erão dos Açores\x12Hora do Bangladesh\x1aHora padrão do Bangladesh\x1cHo" + - "ra de verão do Bangladesh\x0eHora do Butão\x10Hora da Bolívia\x11Hora de" + - " Brasília\x19Hora padrão de Brasília\x1bHora de verão de Brasília\x19Hor" + - "a do Brunei Darussalam\x12Hora de Cabo Verde\x1aHora padrão de Cabo Verd" + - "e\x1cHora de verão de Cabo Verde\x18Hora padrão do Chamorro\x0fHora do C" + - "hatham\x17Hora padrão do Chatham\x19Hora de verão do Chatham\x0dHora do " + - "Chile\x15Hora padrão do Chile\x17Hora de verão do Chile\x0dHora da China" + - "\x15Hora padrão da China\x17Hora de verão da China\x12Hora de Choibalsan" + - "\x1aHora padrão de Choibalsan\x1cHora de verão de Choibalsan\x15Hora da " + - "Ilha do Natal\x14Hora das Ilhas Cocos\x11Hora da Colômbia\x19Hora padrão" + - " da Colômbia\x1bHora de verão da Colômbia\x13Hora das Ilhas Cook\x1bHora" + - " padrão das Ilhas Cook\x1dHora de verão das Ilhas Cook\x0cHora de Cuba" + - "\x14Hora padrão de Cuba\x16Hora de verão de Cuba\x0dHora de Davis\x1aHor" + - "a de Dumont-d’Urville\x13Hora de Timor Leste\x17Hora da Ilha da Páscoa" + - "\x1fHora padrão da Ilha da Páscoa!Hora de verão da Ilha da Páscoa\x0fHor" + - "a do Equador\x16Hora da Europa Central\x1eHora padrão da Europa Central " + - "Hora de verão da Europa Central\x17Hora da Europa Oriental\x1fHora padrã" + - "o da Europa Oriental!Hora de verão da Europa Oriental\x1fHora do Extremo" + - " Leste da Europa\x18Hora da Europa Ocidental Hora padrão da Europa Ocide" + - "ntal\x22Hora de verão da Europa Ocidental\x17Hora das Ilhas Falkland\x1f" + - "Hora padrão das Ilhas Falkland!Hora de verão das Ilhas Falkland\x0cHora " + - "de Fiji\x14Hora padrão de Fiji\x16Hora de verão de Fiji\x17Hora da Guian" + - "a Francesa1Hora das Terras Austrais e Antárcticas Francesas\x13Hora das " + - "Galápagos\x0fHora de Gambier\x10Hora da Geórgia\x18Hora padrão da Geórgi" + - "a\x1aHora de verão da Geórgia\x16Hora das Ilhas Gilbert\x11Hora de Green" + - "wich\x1dHora da Gronelândia Oriental%Hora padrão da Gronelândia Oriental" + - "'Hora de verão da Gronelândia Oriental\x1eHora da Gronelândia Ocidental&" + - "Hora padrão da Gronelândia Ocidental(Hora de verão da Gronelândia Ociden" + - "tal\x14Hora padrão de Guam\x15Hora padrão do Golfo\x0eHora da Guiana\x17" + - "Hora do Havai e Aleutas\x1fHora padrão do Havai e Aleutas!Hora de verão " + - "do Havai e Aleutas\x11Hora de Hong Kong\x19Hora padrão de Hong Kong\x1bH" + - "ora de verão de Hong Kong\x0cHora de Hovd\x14Hora padrão de Hovd\x16Hora" + - " de verão de Hovd\x16Hora padrão da Índia\x16Hora do Oceano Índico\x11Ho" + - "ra da Indochina\x1aHora da Indonésia Central\x1bHora da Indonésia Orient" + - "al\x1cHora da Indonésia Ocidental\x0dHora do Irão\x15Hora padrão do Irão" + - "\x17Hora de verão do Irão\x0fHora de Irkutsk\x17Hora padrão de Irkutsk" + - "\x19Hora de verão de Irkutsk\x0eHora de Israel\x16Hora padrão de Israel" + - "\x18Hora de verão de Israel\x0eHora do Japão\x16Hora padrão do Japão\x18" + - "Hora de verão do Japão Hora de Petropavlovsk-Kamchatski(Hora padrão de P" + - "etropavlovsk-Kamchatski*Hora de verão de Petropavlovsk-Kamchatski\x1dHor" + - "a do Cazaquistão Oriental\x1eHora do Cazaquistão Ocidental\x0eHora da Co" + - "reia\x16Hora padrão da Coreia\x18Hora de verão da Coreia\x0eHora de Kosr" + - "ae\x13Hora de Krasnoyarsk\x1bHora padrão de Krasnoyarsk\x1dHora de verão" + - " de Krasnoyarsk\x14Hora do Quirguistão\x11Hora do Sri Lanka\x13Hora das " + - "Ilhas Line\x11Hora de Lord Howe\x19Hora padrão de Lord Howe\x1bHora de v" + - "erão de Lord Howe\x0dHora de Macau\x15Hora padrão de Macau\x17Hora de ve" + - "rão de Macau\x16Hora da Ilha Macquarie\x0fHora de Magadan\x17Hora padrão" + - " de Magadan\x19Hora de verão de Magadan\x10Hora da Malásia\x11Hora das M" + - "aldivas\x18Hora das Ilhas Marquesas\x17Hora das Ilhas Marshall\x11Hora d" + - "a Maurícia\x19Hora padrão da Maurícia\x1bHora de verão da Maurícia\x0eHo" + - "ra de Mawson\x1bHora do Noroeste do México#Hora padrão do Noroeste do Mé" + - "xico%Hora de verão do Noroeste do México\x1aHora do Pacífico Mexicano" + - "\x22Hora padrão do Pacífico Mexicano$Hora de verão do Pacífico Mexicano" + - "\x12Hora de Ulan Bator\x1aHora padrão de Ulan Bator\x1cHora de verão de " + - "Ulan Bator\x0fHora de Moscovo\x17Hora padrão de Moscovo\x19Hora de verão" + - " de Moscovo\x0fHora de Mianmar\x0dHora de Nauru\x0dHora do Nepal\x17Hora" + - " da Nova Caledónia\x1fHora padrão da Nova Caledónia!Hora de verão da Nov" + - "a Caledónia\x16Hora da Nova Zelândia\x1eHora padrão da Nova Zelândia Hor" + - "a de verão da Nova Zelândia\x12Hora da Terra Nova\x1aHora padrão da Terr" + - "a Nova\x1cHora de verão da Terra Nova\x0cHora de Niue\x14Hora da Ilha No" + - "rfolk\x1bHora de Fernando de Noronha#Hora padrão de Fernando de Noronha%" + - "Hora de verão de Fernando de Noronha\x1fHora das Ilhas Mariana do Norte" + - "\x13Hora de Novosibirsk\x1bHora padrão de Novosibirsk\x1dHora de verão d" + - "e Novosibirsk\x0cHora de Omsk\x14Hora padrão de Omsk\x16Hora de verão de" + - " Omsk\x12Hora do Paquistão\x1aHora padrão do Paquistão\x1cHora de verão " + - "do Paquistão\x0dHora de Palau\x19Hora de Papua Nova Guiné\x10Hora do Par" + - "aguai\x18Hora padrão do Paraguai\x1aHora de verão do Paraguai\x0cHora do" + - " Peru\x14Hora padrão do Peru\x16Hora de verão do Peru\x12Hora das Filipi" + - "nas\x1aHora padrão das Filipinas\x1cHora de verão das Filipinas\x15Hora " + - "das Ilhas Fénix\x1eHora de São Pedro e Miquelão&Hora padrão de São Pedro" + - " e Miquelão(Hora de verão de São Pedro e Miquelão\x10Hora de Pitcairn" + - "\x0eHora de Ponape\x11Hora de Pyongyang\x11Hora de Qyzylorda\x19Hora pad" + - "rão de Qyzylorda\x1bHora de verão de Qyzylorda\x10Hora de Reunião\x0fHor" + - "a de Rothera\x10Hora de Sacalina\x18Hora padrão de Sacalina\x1aHora de v" + - "erão de Sacalina\x0eHora de Samara\x16Hora padrão de Samara\x18Hora de v" + - "erão de Samara\x0dHora de Samoa\x15Hora padrão de Samoa\x17Hora de verão" + - " de Samoa\x12Hora das Seicheles\x19Hora padrão de Singapura\x17Hora das " + - "Ilhas Salomão\x17Hora da Geórgia do Sul\x10Hora do Suriname\x0dHora de S" + - "yowa\x0dHora do Taiti\x0eHora de Taipé\x16Hora padrão de Taipé\x18Hora d" + - "e verão de Taipé\x14Hora do Tajiquistão\x0fHora de Tokelau\x0dHora de To" + - "nga\x15Hora padrão de Tonga\x17Hora de verão de Tonga\x0dHora de Chuuk" + - "\x17Hora do Turquemenistão\x1fHora padrão do Turquemenistão!Hora de verã" + - "o do Turquemenistão\x0eHora de Tuvalu\x0fHora do Uruguai\x17Hora padrão " + - "do Uruguai\x19Hora de verão do Uruguai\x14Hora do Uzbequistão\x1cHora pa" + - "drão do Uzbequistão\x1eHora de verão do Uzbequistão\x0fHora do Vanuatu" + - "\x17Hora padrão do Vanuatu\x19Hora de verão do Vanuatu\x11Hora da Venezu" + - "ela\x13Hora de Vladivostok\x1bHora padrão de Vladivostok\x1dHora de verã" + - "o de Vladivostok\x12Hora de Volgogrado\x1aHora padrão de Volgogrado\x1cH" + - "ora de verão de Volgogrado\x0eHora de Vostok\x11Hora da Ilha Wake\x17Hor" + - "a de Wallis e Futuna\x0fHora de Yakutsk\x17Hora padrão de Yakutsk\x19Hor" + - "a de verão de Yakutsk\x15Hora de Ecaterimburgo\x1dHora padrão de Ecateri" + - "mburgo\x1fHora de verão de Ecaterimburgo" - -var bucket83 string = "" + // Size: 14257 bytes - "\x03Qul\x03Hat\x03Pau\x03Ayr\x03Aym\x03Int\x03Ant\x03Qha\x03Uma\x03Kan" + - "\x03Aya\x03Kap\x0bQulla puquy\x0bHatun puquy\x0cPauqar waray\x06Ayriwa" + - "\x07Aymuray\x0aInti raymi\x0aAnta Sitwa\x0cQhapaq Sitwa\x09Uma raymi\x08" + - "Kantaray\x0aAyamarqʼa\x0bKapaq Raymi\x03Dom\x03Lun\x03Mar\x04Mié\x03Jue" + - "\x03Vie\x03Sab\x1bEEEE, 'ils' d 'da' MMMM y G\x0fd 'da' MMMM y G\x06scha" + - "n.\x05favr.\x04mars\x04avr.\x04matg\x06zercl.\x04fan.\x05avust\x05sett." + - "\x04oct.\x04nov.\x04dec.\x07schaner\x06favrer\x06avrigl\x09zercladur\x07" + - "fanadur\x09settember\x07october\x08november\x08december\x08dumengia\x09g" + - "lindesdi\x05mardi\x07mesemna\x07gievgia\x08venderdi\x05sonda\x0a1. quart" + - "al\x0a2. quartal\x0a3. quartal\x0a4. quartal\x0davant Cristus\x0fsuenter" + - " Cristus\x07av. Cr.\x06s. Cr.\x19EEEE, 'ils' d 'da' MMMM y\x0dd 'da' MMM" + - "M y\x05epoca\x03onn\x04mais\x04emna\x07stersas\x03ier\x02oz\x06damaun" + - "\x09puschmaun\x0edi da l’emna\x0emesadad dal di\x03ura\x07secunda\x0ezon" + - "a d’urari\x04Mut.\x04Gas.\x04Wer.\x04Mat.\x04Gic.\x04Kam.\x04Nya.\x04Kan" + - ".\x04Nze.\x04Ukw.\x04Ugu.\x04Uku.\x05Nzero\x08Ruhuhuma\x09Ntwarante\x09N" + - "damukiza\x06Rusama\x07Ruheshi\x08Mukakaro\x0aNyandagaro\x08Nyakanga\x08G" + - "itugutu\x08Munyonyo\x08Kigarama\x03cu.\x04mbe.\x04kab.\x04gtu.\x04kan." + - "\x04gnu.\x04gnd.\x0cKu w’indwi\x0bKu wa mbere\x0cKu wa kabiri\x0cKu wa g" + - "atatu\x0aKu wa kane\x0cKu wa gatanu\x0fKu wa gatandatu\x02I1\x02I2\x02I3" + - "\x02I4\x19Igice ca mbere c’umwaka\x1aIgice ca kabiri c’umwaka\x1aIgice c" + - "a gatatu c’umwaka\x18Igice ca kane c’umwaka\x05Z.MU.\x05Z.MW.\x0dMbere y" + - "a Yezu\x0dNyuma ya Yezu\x05Mb.Y.\x04Ny.Y\x05Igihe\x06Ukwezi\x0dIndwi, Iy" + - "inga\x05Umusi\x0cEjo (haheze)\x08Uyu musi\x0cEjo (hazoza)\x11Iminsi y’iy" + - "inga\x07M.s/N.s\x05Isaha\x07Umunota\x08Isegonda\x11Isaha yo mukarere\x0c" + - "era budistă\x04e.b.\x0c{1} 'la' {0}\x04ian.\x04feb.\x04mar.\x04apr.\x03m" + - "ai\x04iun.\x04iul.\x04aug.\x05sept.\x08ianuarie\x09februarie\x06martie" + - "\x07aprilie\x05iunie\x05iulie\x06august\x0aseptembrie\x09octombrie\x09no" + - "iembrie\x09decembrie\x04dum.\x04lun.\x04mie.\x03joi\x04vin.\x05sâm.\x09d" + - "uminică\x04luni\x06marți\x08miercuri\x03joi\x06vineri\x0asâmbătă\x03joi" + - "\x07trim. I\x08trim. II\x09trim. III\x08trim. IV\x0ctrimestrul I\x14trim" + - "estrul al II-lea\x15trimestrul al III-lea\x14trimestrul al IV-lea\x0emie" + - "zul nopții\x07amiază\x0adimineața\x0cdupă-amiaza\x05seara\x07noaptea\x0b" + - "dimineață\x0ddupă-amiază\x11la miezul nopții\x0ala amiază\x13înainte de " + - "Hristos\x16înaintea erei noastre\x0ddupă Hristos\x0cera noastră\x06î.Hr." + - "\x06î.e.n\x05d.Hr.\x04e.n.\x07Tișrei\x07Heșvan\x06Kislev\x05Tevet\x06Șev" + - "at\x06Adar I\x04Adar\x07Adar II\x05Nisan\x04Iyar\x05Sivan\x06Tammuz\x02A" + - "v\x04Elul\x04eră\x0banul trecut\x0banul acesta\x0banul viitor\x0cpeste {" + - "0} an\x0dpeste {0} ani\x10peste {0} de ani\x0bacum {0} an\x0cacum {0} an" + - "i\x0facum {0} de ani\x07+{0} an\x08+{0} ani\x07-{0} an\x08-{0} ani\x09tr" + - "imestru\x11trimestrul trecut\x11trimestrul acesta\x11trimestrul viitor" + - "\x13peste {0} trimestru\x13peste {0} trimestre\x16peste {0} de trimestre" + - "\x12acum {0} trimestru\x12acum {0} trimestre\x15acum {0} de trimestre" + - "\x0ctrim. trecut\x0ctrim. acesta\x0ctrim. viitor\x0fpeste {0} trim.\x0ea" + - "cum {0} trim.\x05lună\x0dluna trecută\x0cluna aceasta\x0dluna viitoare" + - "\x0fpeste {0} lună\x0epeste {0} luni\x11peste {0} de luni\x0eacum {0} lu" + - "nă\x0dacum {0} luni\x10acum {0} de luni\x0a+{0} lună\x09+{0} luni\x0a-{0" + - "} lună\x09-{0} luni\x0dsăptămână\x15săptămâna trecută\x14săptămâna aceas" + - "ta\x15săptămâna viitoare\x17peste {0} săptămână\x16peste {0} săptămâni" + - "\x19peste {0} de săptămâni\x16acum {0} săptămână\x15acum {0} săptămâni" + - "\x18acum {0} de săptămâni\x13săptămâna cu {0}\x06săpt.\x10peste {0} săpt" + - ".\x0facum {0} săpt.\x0dsăpt. cu {0}\x0b+{0} săpt.\x0b-{0} săpt.\x0balalt" + - "ăieri\x04ieri\x03azi\x06mâine\x09poimâine\x0cpeste {0} zi\x0epeste {0} " + - "zile\x11peste {0} de zile\x0bacum {0} zi\x0dacum {0} zile\x10acum {0} de" + - " zile\x07+{0} zi\x09+{0} zile\x07-{0} zi\x09-{0} zile\x12Zi a săptămânii" + - "\x11duminica trecută\x10duminica aceasta\x11duminica viitoare\x22duminic" + - "ă, peste {0} săptămână!duminică, peste {0} săptămâni$duminică, peste {0" + - "} de săptămâni!duminică, acum {0} săptămână duminică, acum {0} săptămâni" + - "#duminică, acum {0} de săptămâni\x0ddum. trecută\x0cdum. aceasta\x0ddum." + - " viitoare\x1bduminică, peste {0} săpt.\x1aduminică, acum {0} săpt.\x0cdu" + - ". trecută\x0bdu. aceasta\x0cdu. viitoare\x0fdu. +{0} săpt.\x0fdu. -{0} s" + - "ăpt.\x0elunea trecută\x0dlunea aceasta\x0elunea viitoare\x1dluni, peste" + - " {0} săptămână\x1cluni, peste {0} săptămâni\x1fluni, peste {0} de săptăm" + - "âni\x1cluni, acum {0} săptămână\x1bluni, acum {0} săptămâni\x1eluni, ac" + - "um {0} de săptămâni\x0dlun. trecută\x0clun. aceasta\x0dlun. viitoare\x16" + - "luni, peste {0} săpt.\x15luni, acum {0} săpt.\x0clu. trecută\x0blu. acea" + - "sta\x0clu. viitoare\x0flu. +{0} săpt.\x0flu. -{0} săpt.\x10marțea trecut" + - "ă\x0fmarțea aceasta\x10marțea viitoare\x1fmarți, peste {0} săptămână" + - "\x1emarți, peste {0} săptămâni!marți, peste {0} de săptămâni\x1emarți, a" + - "cum {0} săptămână\x1dmarți, acum {0} săptămâni marți, acum {0} de săptăm" + - "âni\x0dmar. trecută\x0cmar. aceasta\x0dmar. viitoare\x18marți, peste {0" + - "} săpt.\x17marți, acum {0} săpt.\x0cma. trecută\x0bma. aceasta\x0cma. vi" + - "itoare\x0fma. +{0} săpt.\x0fma. -{0} săpt.\x12miercurea trecută\x11mierc" + - "urea aceasta\x12miercurea viitoare!miercuri, peste {0} săptămână miercur" + - "i, peste {0} săptămâni#miercuri, peste {0} de săptămâni miercuri, acum {" + - "0} săptămână\x1fmiercuri, acum {0} săptămâni\x22miercuri, acum {0} de să" + - "ptămâni\x0dmie. trecută\x0cmie. aceasta\x0dmie. viitoare\x1amiercuri, pe" + - "ste {0} săpt.\x19miercuri, acum {0} săpt.\x0cmi. trecută\x0bmi. aceasta" + - "\x0cmi. viitoare\x0fmi. +{0} săpt.\x0fmi. -{0} săpt.\x0djoia trecută\x0c" + - "joia aceasta\x0djoia viitoare\x1cjoi, peste {0} săptămână\x1bjoi, peste " + - "{0} săptămâni\x1ejoi, peste {0} de săptămâni\x1bjoi, acum {0} săptămână" + - "\x1ajoi, acum {0} săptămâni\x1djoi, acum {0} de săptămâni\x0cjoi trecută" + - "\x0bjoi aceasta\x15joi, peste {0} săpt.\x14joi, acum {0} săpt.\x0cjo. tr" + - "ecută\x0bjo. aceasta\x0cjo. viitoare\x0fjo. +{0} săpt.\x0fjo. -{0} săpt." + - "\x10vinerea trecută\x0fvinerea aceasta\x10vinerea viitoare\x1fvineri, pe" + - "ste {0} săptămână\x1evineri, peste {0} săptămâni!vineri, peste {0} de să" + - "ptămâni\x1evineri, acum {0} săptămână\x1dvineri, acum {0} săptămâni vine" + - "ri, acum {0} de săptămâni\x0dvin. trecută\x0cvin. aceasta\x0dvin. viitoa" + - "re\x18vineri, peste {0} săpt.\x17vineri, acum {0} săpt.\x0cvi. trecută" + - "\x0bvi. aceasta\x0cvi. viitoare\x0fvi. +{0} săpt.\x0fvi. -{0} săpt.\x12s" + - "âmbăta trecută\x11sâmbăta aceasta\x12sâmbăta viitoare#sâmbătă, peste {0" + - "} săptămână\x22sâmbătă, peste {0} săptămâni%sâmbătă, peste {0} de săptăm" + - "âni\x22sâmbătă, acum {0} săptămână!sâmbătă, acum {0} săptămâni$sâmbătă," + - " acum de {0} săptămâni\x0esâm. trecută\x0dsâm. aceasta\x0esâm. viitoare" + - "\x1csâmbătă, peste {0} săpt.\x1bsâmbătă, acum {0} săpt.\x0dsâ. trecută" + - "\x0csâ. aceasta\x0dsâ. viitoare\x10sâ. +{0} săpt.\x10sâ. -{0} săpt.\x08a" + - ".m/p.m.\x04oră\x0bora aceasta\x0epeste {0} oră\x0dpeste {0} ore\x10peste" + - " {0} de ore\x0dacum {0} oră\x0cacum {0} ore\x0facum {0} de ore\x0bpeste " + - "{0} h\x0aacum {0} h\x0eminutul acesta\x0fpeste {0} minut\x10peste {0} mi" + - "nute\x13peste {0} de minute\x0eacum {0} minut\x0facum {0} minute\x12acum" + - " {0} de minute\x0epeste {0} min.\x0dacum {0} min.\x08secundă\x04acum\x12" + - "peste {0} secundă\x11peste {0} secunde\x14peste {0} de secunde\x11acum {" + - "0} secundă\x10acum {0} secunde\x13acum {0} de secunde\x0epeste {0} sec." + - "\x0dacum {0} sec.\x08fus orar\x0bOra din {0}\x14Ora de vară din {0}\x14O" + - "ra standard din {0}\x1aTimpul universal coordonat\x17Ora de vară britani" + - "că\x17Ora de vară a Irlandei\x08Ora Acre\x11Ora standard Acre\x11Ora de " + - "vară Acre\x12Ora Afganistanului\x14Ora Africii Centrale\x15Ora Africii O" + - "rientale\x17Ora Africii Meridionale\x17Ora Africii Occidentale\x22Ora st" + - "andard a Africii Occidentale\x22Ora de vară a Africii Occidentale\x0eOra" + - " din Alaska\x17Ora standard din Alaska\x17Ora de vară din Alaska\x0aOra " + - "Almaty\x13Ora standard Almaty\x13Ora de vară Almaty\x0eOra Amazonului" + - "\x19Ora standard a Amazonului\x19Ora de vară a Amazonului\x1dOra central" + - "ă nord-americană&Ora standard centrală nord-americană&Ora de vară centr" + - "ală nord-americană\x1eOra orientală nord-americană'Ora standard oriental" + - "ă nord-americană'Ora de vară orientală nord-americană Ora zonei montane" + - " nord-americane.Ora standard în zona montană nord-americană.Ora de vară " + - "în zona montană nord-americană Ora zonei Pacific nord-americane-Ora sta" + - "ndard în zona Pacific nord-americană-Ora de vară în zona Pacific nord-am" + - "ericană\x0eOra din Anadyr\x17Ora standard din Anadyr\x17Ora de vară din " + - "Anadyr\x0cOra din Apia\x15Ora standard din Apia\x15Ora de vară din Apia" + - "\x09Ora Aqtau\x12Ora standard Aqtau\x1aOra de vară a zonei Aqtau\x0aOra " + - "Aqtobe\x13Ora standard Aqtobe\x1bOra de vară a zonei Aqtobe\x0aOra arabă" + - "\x13Ora standard arabă\x13Ora de vară arabă\x0eOra Argentinei\x19Ora sta" + - "ndard a Argentinei\x19Ora de vară a Argentinei\x1aOra Argentinei Occiden" + - "tale%Ora standard a Argentinei Occidentale%Ora de vară a Argentinei Occi" + - "dentale\x0cOra Armeniei\x17Ora standard a Armeniei\x17Ora de vară a Arme" + - "niei!Ora zonei Atlantic nord-americane.Ora standard în zona Atlantic nor" + - "d-americană.Ora de vară în zona Atlantic nord-americană\x17Ora Australie" + - "i Centrale\x22Ora standard a Australiei Centrale\x22Ora de vară a Austra" + - "liei Centrale\x22Ora Australiei Central Occidentale-Ora standard a Austr" + - "aliei Central Occidentale-Ora de vară a Australiei Central Occidentale" + - "\x18Ora Australiei Orientale#Ora standard a Australiei Orientale#Ora de " + - "vară a Australiei Orientale\x1aOra Australiei Occidentale%Ora standard a" + - " Australiei Occidentale%Ora de vară a Australiei Occidentale\x13Ora Azer" + - "baidjanului\x1eOra standard a Azerbaidjanului\x1eOra de vară a Azerbaidj" + - "anului\x0dOra din Azore\x16Ora standard din Azore\x16Ora de vară din Azo" + - "re\x12Ora din Bangladesh\x1bOra standard din Bangladesh\x1bOra de vară d" + - "in Bangladesh\x0eOra Bhutanului\x0cOra Boliviei\x0dOra Brasiliei\x18Ora " + - "standard a Brasiliei\x18Ora de vară a Brasiliei\x19Ora din Brunei Daruss" + - "alam\x13Ora din Capul Verde\x1cOra standard din Capul Verde\x1cOra de va" + - "ră din Capul Verde\x10Ora din Chamorro\x0fOra din Chatham\x18Ora standar" + - "d din Chatham\x18Ora de vară din Chatham\x0dOra din Chile\x16Ora standar" + - "d din Chile\x16Ora de vară din Chile\x0aOra Chinei\x15Ora standard a Chi" + - "nei\x15Ora de vară a Chinei\x12Ora din Choibalsan\x1bOra standard din Ch" + - "oibalsan\x1bOra de vară din Choibalsan\x18Ora din Insula Christmas\x13Or" + - "a Insulelor Cocos\x0dOra Columbiei\x18Ora standard a Columbiei\x18Ora de" + - " vară a Columbiei\x12Ora Insulelor Cook\x1dOra standard a Insulelor Cook" + - "\x1dOra de vară a Insulelor Cook\x09Ora Cubei\x14Ora standard a Cubei" + - "\x14Ora de vară a Cubei\x0dOra din Davis\x1aOra din Dumont-d’Urville\x14" + - "Ora Timorului de Est\x18Ora din Insula Paștelui!Ora standard din Insula " + - "Paștelui!Ora de vară din Insula Paștelui\x0fOra Ecuadorului\x14Ora Europ" + - "ei Centrale\x1fOra standard a Europei Centrale\x1fOra de vară a Europei " + - "Centrale\x12Ora Europei de Est\x1dOra standard a Europei de Est\x1dOra d" + - "e vară a Europei de Est Ora Europei de Est îndepărtate\x13Ora Europei de" + - " Vest\x1eOra standard a Europei de Vest\x1eOra de vară a Europei de Vest" + - "\x19Ora din Insulele Falkland\x22Ora standard din Insulele Falkland\x22O" + - "ra de vară din Insulele Falkland\x0cOra din Fiji\x15Ora standard din Fij" + - "i\x15Ora de vară din Fiji\x18Ora din Guyana Franceză4Ora din Teritoriile" + - " Australe și Antarctice Franceze\x11Ora din Galapagos\x0fOra din Gambier" + - "\x0cOra Georgiei\x17Ora standard a Georgiei\x17Ora de vară a Georgiei" + - "\x15Ora Insulelor Gilbert\x11Ora de Greenwhich\x19Ora Groenlandei orient" + - "ale$Ora standard a Groenlandei orientale$Ora de vară a Groenlandei orien" + - "tale\x1bOra Groenlandei occidentale&Ora standard a Groenlandei occidenta" + - "le&Ora de vară a Groenlandei occidentale\x17Ora standard a Golfului\x0eO" + - "ra din Guyana\x17Ora din Hawaii-Aleutine Ora standard din Hawaii-Aleutin" + - "e Ora de vară din Hawaii-Aleutine\x11Ora din Hong Kong\x1aOra standard d" + - "in Hong Kong\x1aOra de vară din Hong Kong\x0cOra din Hovd\x15Ora standar" + - "d din Hovd\x15Ora de vară din Hovd\x0aOra Indiei\x14Ora Oceanului Indian" + - "\x0eOra Indochinei\x17Ora Indoneziei Centrale\x15Ora Indoneziei de Est" + - "\x16Ora Indoneziei de Vest\x0cOra Iranului\x17Ora standard a Iranului" + - "\x17Ora de vară a Iranului\x0fOra din Irkuțk\x18Ora standard din Irkuțk" + - "\x18Ora de vară din Irkuțk\x0eOra Israelului\x19Ora standard a Israelulu" + - "i\x19Ora de vară a Israelului\x0cOra Japoniei\x17Ora standard a Japoniei" + - "\x17Ora de vară a Japoniei Ora din Petropavlovsk-Kamciațki)Ora standard " + - "din Petropavlovsk-Kamciațki)Ora de vară din Petropavlovsk-Kamciațki\x1aO" + - "ra din Kazahstanul de Est\x1bOra din Kazahstanul de Vest\x0aOra Coreei" + - "\x15Ora standard a Coreei\x15Ora de vară a Coreei\x0eOra din Kosrae\x13O" + - "ra din Krasnoiarsk\x1cOra standard din Krasnoiarsk\x1cOra de vară din Kr" + - "asnoiarsk\x14Ora din Kârgâzstan\x15Ora din Insulele Line\x11Ora din Lord" + - " Howe\x1aOra standard din Lord Howe\x1aOra de vară din Lord Howe\x11Ora " + - "din Macquarie\x0fOra din Magadan\x18Ora standard din Magadan\x18Ora de v" + - "ară din Magadan\x10Ora din Malaysia\x0fOra din Maldive\x16Ora Insulelor " + - "Marchize\x16Ora Insulelor Marshall\x11Ora din Mauritius\x1aOra standard " + - "din Mauritius\x1aOra de vară din Mauritius\x0eOra din Mawson\x1aOra Mexi" + - "cului de nord-vest%Ora standard a Mexicului de nord-vest%Ora de vară a M" + - "exicului de nord-vest\x1aOra zonei Pacific mexicane%Ora standard a zonei" + - " Pacific mexicane%Ora de vară a zonei Pacific mexicane\x12Ora din Ulan B" + - "ator\x1bOra standard din Ulan Bator\x1bOra de vară din Ulan Bator\x0cOra" + - " Moscovei\x17Ora standard a Moscovei\x17Ora de vară a Moscovei\x0fOra My" + - "anmarului\x0dOra din Nauru\x0dOra Nepalului\x12Ora Noii Caledonii\x1dOra" + - " standard a Noii Caledonii\x1dOra de vară a Noii Caledonii\x11Ora Noii Z" + - "eelande\x1cOra standard a Noii Zeelande\x1cOra de vară a Noii Zeelande" + - "\x14Ora din Newfoundland\x1dOra standard din Newfoundland\x1dOra de vară" + - " din Newfoundland\x0cOra din Niue\x15Ora Insulelor Norfolk\x1bOra din Fe" + - "rnando de Noronha$Ora standard din Fernando de Noronha$Ora de vară din F" + - "ernando de Noronha\x13Ora din Novosibirsk\x1cOra standard din Novosibirs" + - "k\x1cOra de vară din Novosibirsk\x0cOra din Omsk\x15Ora standard din Oms" + - "k\x15Ora de vară din Omsk\x10Ora Pakistanului\x1bOra standard a Pakistan" + - "ului\x1bOra de vară a Pakistanului\x0dOra din Palau\x19Ora din Papua Nou" + - "a Guinee\x10Ora din Paraguay\x19Ora standard din Paraguay\x19Ora de vară" + - " din Paraguay\x0cOra din Peru\x15Ora standard din Peru\x15Ora de vară di" + - "n Peru\x10Ora din Filipine\x19Ora standard din Filipine\x19Ora de vară d" + - "in Filipine\x15Ora Insulelor Phoenix!Ora din Saint-Pierre și Miquelon*Or" + - "a standard din Saint-Pierre și Miquelon*Ora de vară din Saint-Pierre și " + - "Miquelon\x10Ora din Pitcairn\x0eOra din Ponape\x11Ora din Pyongyang\x0fO" + - "ra din Reunion\x0fOra din Rothera\x0fOra din Sahalin\x18Ora standard din" + - " Sahalin\x18Ora de vară din Sahalin\x0eOra din Samara\x17Ora standard di" + - "n Samara\x17Ora de vară din Samara\x0dOra din Samoa\x16Ora standard din " + - "Samoa\x16Ora de vară din Samoa\x12Ora din Seychelles\x11Ora din Singapor" + - "e\x15Ora Insulelor Solomon\x13Ora Georgiei de Sud\x0fOra Surinamului\x0d" + - "Ora din Syowa\x0eOra din Tahiti\x0eOra din Taipei\x17Ora standard din Ta" + - "ipei\x17Ora de vară din Taipei\x13Ora din Tadjikistan\x0fOra din Tokelau" + - "\x0dOra din Tonga\x16Ora standard din Tonga\x16Ora de vară din Tonga\x0d" + - "Ora din Chuuk\x14Ora din Turkmenistan\x1dOra standard din Turkmenistan" + - "\x1dOra de vară din Turkmenistan\x0eOra din Tuvalu\x0fOra Uruguayului" + - "\x1aOra standard a Uruguayului\x1aOra de vară a Uruguayului\x12Ora din U" + - "zbekistan\x1bOra standard din Uzbekistan\x1bOra de vară din Uzbekistan" + - "\x0fOra din Vanuatu\x18Ora standard din Vanuatu\x18Ora de vară din Vanua" + - "tu\x0eOra Venezuelei\x13Ora din Vladivostok\x1cOra standard din Vladivos" + - "tok\x1cOra de vară din Vladivostok\x11Ora din Volgograd\x1aOra standard " + - "din Volgograd\x1aOra de vară din Volgograd\x0eOra din Vostok\x10Ora Insu" + - "lei Wake\x19Ora din Wallis și Futuna\x0fOra din Yakuțk\x18Ora standard d" + - "in Yakuțk\x18Ora de vară din Yakuțk\x14Ora din Ekaterinburg\x1dOra stand" + - "ard din Ekaterinburg\x1dOra de vară din Ekaterinburg" - -var bucket84 string = "" + // Size: 10540 bytes - "\x03Dum\x03Lun\x03Mar\x03Mie\x03Joi\x03Vin\x04Sâm\x07trim. 1\x07trim. 2" + - "\x07trim. 3\x07trim. 4\x0ctrimestrul 1\x0ctrimestrul 2\x0ctrimestrul 3" + - "\x0ctrimestrul 4\x07Trim. 1\x07Trim. 2\x07Trim. 3\x07Trim. 4\x0cTrimestr" + - "ul 1\x0cTrimestrul 2\x0cTrimestrul 3\x0cTrimestrul 4\x06seară\x06noapte" + - "\x07î.e.n.\x0fMweri wa kwanza\x0eMweri wa kaili\x0fMweri wa katatu\x0eMw" + - "eri wa kaana\x0dMweri wa tanu\x0dMweri wa sita\x0dMweri wa saba\x0dMweri" + - " wa nane\x0dMweri wa tisa\x0eMweri wa ikumi\x16Mweri wa ikumi na moja" + - "\x17Mweri wa ikumi na mbili\x03Ijp\x03Ijt\x03Ijn\x04Ijtn\x03Alh\x03Iju" + - "\x03Ijm\x09Ijumapili\x09Ijumatatu\x08Ijumanne\x09Ijumatano\x08Alhamisi" + - "\x06Ijumaa\x09Ijumamosi\x0eRobo ya kwanza\x0dRobo ya kaili\x0eRobo ya ka" + - "tatu\x0dRobo ya kaana\x0akang’ama\x07kingoto\x0fKabla ya Mayesu\x0fBaada" + - " ya Mayesu\x05Muaka\x05Iwiki\x04Hiyo\x04Linu\x08Ng’ama\x0dMfiri a iwiki" + - "\x06Nkwaya\x06Тот\x08Бабэ\x0aХатур\x0aКихак\x08Тубэ\x0aАмшир\x10Барамхат" + - "\x0eБармуда\x0cБашнас\x0aБауна\x08Абиб\x0aМисра\x08Наси\x0fd MMM y 'г'. " + - "G\x0cянваря\x0eфевраля\x0aмарта\x0cапреля\x06мая\x08июня\x08июля\x0eавгу" + - "ста\x10сентября\x0eоктября\x0cноября\x0eдекабря\x04вс\x04пн\x04вт\x04ср" + - "\x04чт\x04пт\x04сб\x16воскресенье\x16понедельник\x0eвторник\x0aсреда\x0e" + - "четверг\x0eпятница\x0eсуббота\x0a1-й кв.\x0a2-й кв.\x0a3-й кв.\x0a4-й к" + - "в.\x131-й квартал\x132-й квартал\x133-й квартал\x134-й квартал\x09полд." + - "\x08утра\x06дня\x0cвечера\x08ночи\x0eполночь\x0eполдень\x08день\x08ночь" + - "\x0aвечер(до Рождества Христова\x16до нашей эры(от Рождества Христова" + - "\x11нашей эры\x0cдо н. э.\x07н. э.\x0bдо н.э.\x06н.э.\x0dd MMM y 'г'." + - "\x0cТишрей\x0cХешван\x0cКислев\x0aТевет\x0aШеват\x0aАдар I\x08Адар\x0bАд" + - "ар II\x0aНисан\x06Ияр\x0aСиван\x0cТаммуз\x04Ав\x08Элул\x0cЧайтра\x10Ваи" + - "сакха\x10Джанштха\x0cАсадха\x0eСравана\x0cБхадра\x0cАзвина\x0eКартика" + - "\x14Аграхайана\x0aПауза\x0aМагха\x10Пхалгуна\x10Мухаррам\x0aСафар\x1cРаб" + - "и-уль-авваль\x18Раби-уль-ахир Джумад-уль-авваль\x1cДжумад-уль-ахир\x0cР" + - "аджаб\x0cШаабан\x0eРамадан\x0eШавваль\x13Зуль-Каада\x15Зуль-Хиджжа!Эпох" + - "а Тайка (645–650)#Эпоха Хакути (650–671)#Эпоха Хакухо (672–686)\x1fЭпох" + - "а Сючё (686–701)!Эпоха Тайхо (701–704)\x1fЭпоха Кёюн (704–708)\x1fЭпоха" + - " Вадо (708–715)!Эпоха Рэйки (715–717)\x1dЭпоха Ёро (717–724)#Эпоха Дзинк" + - "и (724–729)#Эпоха Темпьё (729–749)#Эпоха Темпьё (749–749),Эпоха Темпьё-" + - "Сьохо (749-757),Эпоха Темпьё-Ходзи (757-765),Эпоха Темпьё-Ходзи (765-76" + - "7)*Эпоха Джинго-Кёюн (767-770)\x1fЭпоха Хоки (770–780)!Эпоха Теньё (781–" + - "782)#Эпоха Енряку (782–806)!Эпоха Дайдо (806–810)!Эпоха Конин (810–824)#" + - "Эпоха Тентьо (824–834)\x1fЭпоха Шова (834–848)\x1fЭпоха Кайо (848–851)#" + - "Эпоха Ниндзю (851–854)!Эпоха Сайко (854–857)#Эпоха Теннан (857–859)!Эпо" + - "ха Йоган (859–877)#Эпоха Генкей (877–885)!Эпоха Нинна (885–889)#Эпоха К" + - "ампьё (889–898)#Эпоха Сьотай (898–901)\x1fЭпоха Энги (901–923)!Эпоха Ен" + - "тьо (923–931)#Эпоха Сьёхэй (931–938)#Эпоха Тенгьо (938–947)'Эпоха Тенри" + - "яку (947–957)%Эпоха Тентоку (957–961)\x1dЭпоха Ова (961–964)\x1fЭпоха К" + - "охо (964–968)\x1fЭпоха Анна (968–970)%Эпоха Тенроку (970–973)#Эпоха Тен" + - "ьен (973–976)%Эпоха Дзьоген (976–978)#Эпоха Тенген (978–983)!Эпоха Ейка" + - "н (983–985)!Эпоха Канна (985–987)\x1fЭпоха Ейен (987–989)\x1fЭпоха Ейсо" + - " (989–990)#Эпоха Сёряку (990–995)#Эпоха Тётоку (995–999) Эпоха Тёхо (999" + - "–1004)#Эпоха Канко (1004–1012)!Эпоха Тёва (1012–1017)%Эпоха Каннин (10" + - "17–1021)#Эпоха Дзиан (1021–1024)%Эпоха Мандзю (1024–1028)#Эпоха Тёгэн (1" + - "028–1037)%Эпоха Тёряку (1037–1040)!Эпоха Тёкю (1040–1044)%Эпоха Катоку (" + - "1044–1046)!Эпоха Эйсо (1046–1053)#Эпоха Тэнги (1053–1058)#Эпоха Кохэй (1" + - "058–1065)'Эпоха Дзиряку (1065–1069)!Эпоха Энкю (1069–1074)!Эпоха Сёхо (1" + - "074–1077)%Эпоха Сёряку (1077–1081)!Эпоха Эйхо (1081–1084)#Эпоха Отоку (1" + - "084–1087)%Эпоха Кандзи (1087–1094)!Эпоха Кахо (1094–1096)!Эпоха Эйтё (10" + - "96–1097)%Эпоха Сётоку (1097–1099)!Эпоха Кова (1099–1104)#Эпоха Тёдзи (11" + - "04–1106)!Эпоха Касё (1106–1108)%Эпоха Тэннин (1108–1110)%Эпоха Тэнъэй (1" + - "110–1113)!Эпоха Эйкю (1113–1118)%Эпоха Гэнъэй (1118–1120)!Эпоха Хоан (11" + - "20–1124)%Эпоха Тэндзи (1124–1126)%Эпоха Дайдзи (1126–1131)#Эпоха Тэнсё (" + - "1131–1132)!Эпоха Тёсё (1132–1135)!Эпоха Хоэн (1135–1141)#Эпоха Эйдзи (11" + - "41–1142)#Эпоха Кодзи (1142–1144)!Эпоха Тэнё (1144–1145)!Эпоха Кюан (1145" + - "–1151)%Эпоха Нимпэй (1151–1154)#Эпоха Кюдзю (1154–1156)#Эпоха Хогэн (1" + - "156–1159)%Эпоха Хэйдзи (1159–1160)%Эпоха Эйряку (1160–1161)\x1fЭпоха Охо" + - " (1161–1163)#Эпоха Тёкан (1163–1165)#Эпоха Эйман (1165–1166)%Эпоха Нинъа" + - "н (1166–1169)\x1fЭпоха Као (1169–1171)!Эпоха Сёан (1171–1175)#Эпоха Анг" + - "эн (1175–1177)#Эпоха Дзисё (1177–1181)\x1fЭпоха Ёва (1181–1182)#Эпоха Д" + - "зюэй (1182–1184)'Эпоха Гэнрюку (1184–1185)%Эпоха Бундзи (1185–1190)#Эпо" + - "ха Кэнкю (1190–1199)#Эпоха Сёдзи (1199–1201)%Эпоха Кэннин (1201–1204)#Э" + - "поха Гэнкю (1204–1206)%Эпоха Кэнъэй (1206–1207)#Эпоха Сёгэн (1207–1211)" + - "'Эпоха Кэнряку (1211–1213)#Эпоха Кэмпо (1213–1219)!Эпоха Сёкю (1219–1222" + - ")!Эпоха Дзёо (1222–1224)%Эпоха Гэннин (1224–1225)%Эпоха Кароку (1225–122" + - "7)#Эпоха Антэй (1227–1229)#Эпоха Канки (1229–1232)#Эпоха Дзёэй (1232–123" + - "3)'Эпоха Тэмпуку (1233–1234)'Эпоха Бунряку (1234–1235)#Эпоха Катэй (1235" + - "–1238)'Эпоха Рякунин (1238–1239)!Эпоха Энъо (1239–1240)%Эпоха Ниндзи (" + - "1240–1243)%Эпоха Кангэн (1243–1247)#Эпоха Ходзи (1247–1249)#Эпоха Кэнтё " + - "(1249–1256)#Эпоха Когэн (1256–1257)!Эпоха Сёка (1257–1259)#Эпоха Сёгэн (" + - "1259–1260)#Эпоха Бунъо (1260–1261)!Эпоха Котё (1261–1264)%Эпоха Бунъэй (" + - "1264–1275)%Эпоха Кэндзи (1275–1278)!Эпоха Коан (1278–1288)\x1fЭпоха Сёо " + - "(1288–1293)#Эпоха Эйнин (1293–1299)!Эпоха Сёан (1299–1302)%Эпоха Кэнгэн " + - "(1302–1303)#Эпоха Кагэн (1303–1306)'Эпоха Токудзи (1306–1308)#Эпоха Энкэ" + - "й (1308–1311)\x1fЭпоха Отё (1311–1312)!Эпоха Сёва (1312–1317)#Эпоха Бум" + - "по (1317–1319)!Эпоха Гэно (1319–1321)#Эпоха Гэнкё (1321–1324)!Эпоха Сёт" + - "ю (1324–1326)%Эпоха Карэки (1326–1329)'Эпоха Гэнтоку (1329–1331)#Эпоха " + - "Гэнко (1331–1334)#Эпоха Кэмму (1334–1336)#Эпоха Энгэн (1336–1340)%Эпоха" + - " Кококу (1340–1346)#Эпоха Сёхэй (1346–1370)'Эпоха Кэнтоку (1370–1372)#Эп" + - "оха Бунтю (1372–1375)%Эпоха Иэндзю (1375–1379)%Эпоха Коряку (1379–1381)" + - "!Эпоха Кова (1381–1384)#Эпоха Гэнтю (1384–1392)'Эпоха Мэйтоку (1384–1387" + - ")#Эпоха Какэй (1387–1389)\x1fЭпоха Коо (1389–1390)'Эпоха Мэйтоку (1390–1" + - "394)\x1fЭпоха Оэй (1394–1428)!Эпоха Сётё (1428–1429)!Эпоха Эйкё (1429–14" + - "41)%Эпоха Какицу (1441–1444)%Эпоха Банъан (1444–1449)%Эпоха Хотоку (1449" + - "–1452)%Эпоха Кётоку (1452–1455)!Эпоха Косё (1455–1457)%Эпоха Тёроку (1" + - "457–1460)#Эпоха Кансё (1460–1466)#Эпоха Бунсё (1466–1467)!Эпоха Онин (14" + - "67–1469)%Эпоха Буммэй (1469–1487)!Эпоха Тёкё (1487–1489)%Эпоха Энтоку (1" + - "489–1492)!Эпоха Мэйо (1492–1501)#Эпоха Бунки (1501–1504)!Эпоха Эйсё (150" + - "4–1521)#Эпоха Тайэй (1521–1528)%Эпоха Кёроку (1528–1532)%Эпоха Тэммон (1" + - "532–1555)#Эпоха Кодзи (1555–1558)%Эпоха Эйроку (1558–1570)#Эпоха Гэнки (" + - "1570–1573)#Эпоха Тэнсё (1573–1592)'Эпоха Бунроку (1592–1596)#Эпоха Кэйтё" + - " (1596–1615)#Эпоха Гэнва (1615–1624)%Эпоха Канъэй (1624–1644)!Эпоха Сёхо" + - " (1644–1648)#Эпоха Кэйан (1648–1652)\x1dЭпоха Сё (1652–1655)'Эпоха Мэйря" + - "ку (1655–1658)%Эпоха Мандзи (1658–1661)%Эпоха Камбун (1661–1673)!Эпоха " + - "Эмпо (1673–1681)#Эпоха Тэнва (1681–1684)#Эпоха Дзёкё (1684–1688)'Эпоха " + - "Гэнроку (1688–1704)!Эпоха Хоэй (1704–1711)%Эпоха Сётоку (1711–1716)!Эпо" + - "ха Кёхо (1716–1736)%Эпоха Гэмбун (1736–1741)#Эпоха Кампо (1741–1744)!Эп" + - "оха Энкё (1744–1748)%Эпоха Канъэн (1748–1751)%Эпоха Хоряку (1751–1764)#" + - "Эпоха Мэйва (1764–1772)#Эпоха Анъэй (1772–1781)%Эпоха Тэммэй (1781–1789" + - ")%Эпоха Кансэй (1789–1801)!Эпоха Кёва (1801–1804)#Эпоха Бунка (1804–1818" + - ")%Эпоха Бунсэй (1818–1830)#Эпоха Тэмпо (1830–1844)!Эпоха Кока (1844–1848" + - ")!Эпоха Каэй (1848–1854)#Эпоха Ансэй (1854–1860)%Эпоха Манъэн (1860–1861" + - ")#Эпоха Бункю (1861–1864)%Эпоха Гендзи (1864–1865)!Эпоха Кейо (1865–1868" + - ")\x17Эпоха Мэйдзи\x17Эпоха Тайсьо\x0aСьова\x17Эпоха Хэйсэй" - -var bucket85 string = "" + // Size: 18668 bytes - "\x12Фарвардин\x14Ордибехешт\x0cХордад\x06Тир\x0cМордад\x10Шахривер\x08Ме" + - "хр\x08Абан\x08Азер\x06Дей\x0cБахман\x0cЭсфанд\x1aв прошлом году\x14в эт" + - "ом году\x1eв следующем году\x15через {0} год\x17через {0} года\x15через" + - " {0} лет\x15{0} год назад\x17{0} года назад\x15{0} лет назад\x12через {0" + - "} г.\x12через {0} л.\x12{0} г. назад\x12{0} л. назад\x08+{0} г.\x08+{0} " + - "л.\x08-{0} г.\x08-{0} л.\x22в прошлом квартале\x22в текущем квартале&в " + - "следующем квартале\x1dчерез {0} квартал\x1fчерез {0} квартала!через {0}" + - " кварталов\x1d{0} квартал назад\x1f{0} квартала назад!{0} кварталов наза" + - "д\x18последний кв.\x14текущий кв.\x18следующий кв.\x14через {0} кв.\x14" + - "{0} кв. назад\x0fпосл. кв.\x0dтек. кв.\x0fслед. кв.\x0a+{0} кв.\x0a-{0} " + - "кв.\x1eв прошлом месяце\x18в этом месяце\x22в следующем месяце\x19через" + - " {0} месяц\x1bчерез {0} месяца\x1dчерез {0} месяцев\x19{0} месяц назад" + - "\x1b{0} месяца назад\x1d{0} месяцев назад\x16через {0} мес.\x16{0} мес. " + - "назад\x0c+{0} мес.\x0c-{0} мес. на прошлой неделе\x1aна этой неделе$на " + - "следующей неделе\x1bчерез {0} неделю\x1bчерез {0} недели\x1bчерез {0} н" + - "едель\x1b{0} неделю назад\x1b{0} недели назад\x1b{0} недель назад\x15на" + - " неделе {0}\x16через {0} нед.\x16{0} нед. назад\x10на нед. {0}\x0c+{0} н" + - "ед.\x0c-{0} нед.\x12позавчера\x0aвчера\x0eсегодня\x0cзавтра\x16послезав" + - "тра\x17через {0} день\x15через {0} дня\x17через {0} дней\x17{0} день на" + - "зад\x15{0} дня назад\x17{0} дней назад\x05дн.\x12через {0} д.\x14через " + - "{0} дн.\x13{0}\u00a0д. назад\x14{0} дн. назад\x08+{0} д.\x08-{0} д.\x15д" + - "ень недели(в прошлое воскресенье в это воскресенье,в следующее воскресе" + - "нье%через {0} воскресенье%через {0} воскресенья%через {0} воскресений%{" + - "0} воскресенье назад%{0} воскресенья назад%{0} воскресений назад\x12в пр" + - "ош. вс.\x0fв это вс.\x12в след. вс.\x14через {0} вс.\x14{0} вс. назад" + - "\x0a+{0} вс.\x0a-{0} вс.(в прошлый понедельник\x22в этот понедельник,в с" + - "ледующий понедельник%через {0} понедельник'через {0} понедельника)через" + - " {0} понедельников%{0} понедельник назад'{0} понедельника назад){0} поне" + - "дельников назад\x12в прош. пн.\x11в этот пн.\x12в след. пн.\x14через {0" + - "} пн.\x14{0} пн. назад\x0a+{0} пн.\x0a-{0} пн. в прошлый вторник\x1aв эт" + - "от вторник$в следующий вторник\x1dчерез {0} вторник\x1fчерез {0} вторни" + - "ка!через {0} вторников\x1d{0} вторник назад\x1f{0} вторника назад!{0} в" + - "торников назад\x12в прош. вт.\x11в этот вт.\x12в след. вт.\x14через {0}" + - " вт.\x14{0} вт. назад\x0a+{0} вт.\x0a-{0} вт.\x1cв прошлую среду\x14в эт" + - "у среду в следующую среду\x19через {0} среду\x19через {0} среды\x17чере" + - "з {0} сред\x19{0} среду назад\x19{0} среды назад\x17{0} сред назад\x12в" + - " прош. ср.\x0fв эту ср.\x12в след. ср.\x14через {0} ср.\x14{0} ср. назад" + - "\x0a+{0} ср.\x0a-{0} ср. в прошлый четверг\x1aв этот четверг$в следующий" + - " четверг\x1dчерез {0} четверг\x1fчерез {0} четверга!через {0} четвергов" + - "\x1d{0} четверг назад\x1f{0} четверга назад!{0} четвергов назад\x12в про" + - "ш. чт.\x11в этот чт.\x12в след. чт.\x14через {0} чт.\x14{0} чт. назад" + - "\x0a+{0} чт.\x0a-{0} чт. в прошлую пятницу\x18в эту пятницу$в следующую " + - "пятницу\x1dчерез {0} пятницу\x1dчерез {0} пятницы\x1bчерез {0} пятниц" + - "\x1d{0} пятницу назад\x1d{0} пятницы назад\x1b{0} пятниц назад\x12в прош" + - ". пт.\x0fв эту пт.\x12в след. пт.\x14через {0} пт.\x14{0} пт. назад\x0a+" + - "{0} пт.\x0a-{0} пт. в прошлую субботу\x18в эту субботу$в следующую суббо" + - "ту\x1dчерез {0} субботу\x1dчерез {0} субботы\x1bчерез {0} суббот\x1d{0}" + - " субботу назад\x1d{0} субботы назад\x1b{0} суббот назад\x12в прош. сб." + - "\x0fв эту сб.\x12в след. сб.\x14через {0} сб.\x14{0} сб. назад\x0a+{0} с" + - "б.\x0a-{0} сб.\x14в этом часе\x15через {0} час\x17через {0} часа\x19чер" + - "ез {0} часов\x15{0} час назад\x17{0} часа назад\x19{0} часов назад\x03ч" + - ".\x13через {0}\u00a0ч.\x12через {0} ч.\x13{0}\u00a0ч. назад\x12{0} ч. на" + - "зад\x08+{0} ч.\x08-{0} ч.\x16в эту минуту\x1bчерез {0} минуту\x1bчерез " + - "{0} минуты\x19через {0} минут\x1b{0} минуту назад\x1b{0} минуты назад" + - "\x19{0} минут назад\x16через {0} мин.\x16{0} мин. назад\x0c+{0} мин.\x0c" + - "-{0} мин.\x0cсейчас\x1dчерез {0} секунду\x1dчерез {0} секунды\x1bчерез {" + - "0} секунд\x1d{0} секунду назад\x1d{0} секунды назад\x1b{0} секунд назад" + - "\x17через {0}\u00a0сек.\x16{0} сек. назад\x0c+{0} сек.\x0c-{0} сек.\x17ч" + - "асовой пояс>Всемирное координированное время5Великобритания, летнее вре" + - "мя3Ирландия, стандартное время\x13Акри время*Акри стандартное время Акр" + - "и летнее время\x14Афганистан#Центральная Африка\x1fВосточная Африка\x17" + - "Южная Африка\x1dЗападная Африка@Западная Африка, стандартное время6Запа" + - "дная Африка, летнее время\x0cАляска/Аляска, стандартное время%Аляска, л" + - "етнее время\x1aАлма-Ата время1Алма-Ата стандартное время'Алма-Ата летне" + - "е время\x10Амазонка3Амазонка, стандартное время)Амазонка, летнее время%" + - "Центральная АмерикаHЦентральная Америка, стандартное время>Центральная " + - "Америка, летнее время!Восточная АмерикаDВосточная Америка, стандартное " + - "время:Восточная Америка, летнее время Горное время (США)7Горное стандар" + - "тное время (США)-Горное летнее время (США)%Тихоокеанское время<Тихоокеа" + - "нское стандартное время2Тихоокеанское летнее время\x1eВремя по Анадырю0" + - "Анадырь стандартное время&Анадырь летнее время\x08Апиа+Апиа, стандартно" + - "е время!Апиа, летнее время\x15Актау время-Актау, стандартное время\x22А" + - "ктау летнее время\x17Актобе время.Актобе стандартное время$Актобе летне" + - "е время!Саудовская АравияDСаудовская Аравия, стандартное время:Саудовск" + - "ая Аравия, летнее время\x12Аргентина5Аргентина, стандартное время+Арген" + - "тина, летнее время#Западная АргентинаFЗападная Аргентина, стандартное в" + - "ремя<Западная Аргентина, летнее время\x0eАрмения1Армения, стандартное в" + - "ремя'Армения, летнее время%Атлантическое время<Атлантическое стандартно" + - "е время2Атлантическое летнее время)Центральная АвстралияLЦентральная Ав" + - "стралия, стандартное времяBЦентральная Австралия, летнее времяFЦентраль" + - "ная Австралия, западное время]Центральная Австралия, западное стандартн" + - "ое времяSЦентральная Австралия, западное летнее время%Восточная Австрал" + - "ияHВосточная Австралия, стандартное время>Восточная Австралия, летнее в" + - "ремя#Западная АвстралияFЗападная Австралия, стандартное время<Западная " + - "Австралия, летнее время\x16Азербайджан9Азербайджан, стандартное время/А" + - "зербайджан, летнее время\x18Азорские о-ва;Азорские о-ва, стандартное вр" + - "емя1Азорские о-ва, летнее время\x12Бангладеш5Бангладеш, стандартное вре" + - "мя+Бангладеш, летнее время\x0aБутан\x0eБоливия\x10Бразилия3Бразилия, ст" + - "андартное время)Бразилия, летнее время!Бруней-Даруссалам\x13Кабо-Верде6" + - "Кабо-Верде, стандартное время,Кабо-Верде, летнее время\x0aКейси\x0eЧамо" + - "рро\x0aЧатем-Чатем, стандартное время#Чатем, летнее время\x08Чили+Чили," + - " стандартное время!Чили, летнее время\x0aКитай-Китай, стандартное время#" + - "Китай, летнее время\x12Чойбалсан5Чойбалсан, стандартное время+Чойбалсан" + - ", летнее время\x18о-в Рождества\x1aКокосовые о-ва\x10Колумбия3Колумбия, " + - "стандартное время)Колумбия, летнее время\x17Острова Кука:Острова Кука, " + - "стандартное время8Острова Кука, полулетнее время\x08Куба+Куба, стандарт" + - "ное время!Куба, летнее время\x0cДейвис\x1cДюмон-д’Юрвиль\x1dВосточный Т" + - "имор\x10О-в Пасхи3О-в Пасхи, стандартное время)О-в Пасхи, летнее время" + - "\x0eЭквадор#Центральная ЕвропаFЦентральная Европа, стандартное время<Цен" + - "тральная Европа, летнее время\x1fВосточная ЕвропаBВосточная Европа, ста" + - "ндартное время8Восточная Европа, летнее время\x19Минское время\x1dЗапад" + - "ная Европа@Западная Европа, стандартное время6Западная Европа, летнее в" + - "ремя Фолклендские о-ваCФолклендские о-ва, стандартное время9Фолклендски" + - "е о-ва, летнее время\x0aФиджи-Фиджи, стандартное время#Фиджи, летнее вр" + - "емя#Французская ГвианаVФранцузские Южные и Антарктические территории" + - "\x22Галапагосские о-ва\x0cГамбье\x0cГрузия/Грузия, стандартное время%Гру" + - "зия, летнее время\x18о-ва Гилберта/Среднее время по Гринвичу'Восточная " + - "ГренландияHВосточная Гренландия, стандарное время@Восточная Гренландия," + - " летнее время%Западная ГренландияHЗападная Гренландия, стандартное время" + - ">Западная Гренландия, летнее время\x08Гуам\x1fПерсидский залив\x0cГайана" + - ".Гавайско-алеутское времяEГавайско-алеутское стандартное время;Гавайско-" + - "алеутское летнее время\x0eГонконг1Гонконг, стандартное время'Гонконг, л" + - "етнее время\x08Ховд+Ховд, стандартное время!Ховд, летнее время\x0aИндия" + - "\x1dИндийский океан\x12Индокитай)Центральная Индонезия%Восточная Индонез" + - "ия#Западная Индонезия\x08Иран+Иран, стандартное время!Иран, летнее врем" + - "я\x0eИркутск1Иркутск, стандартное время'Иркутск, летнее время\x0eИзраил" + - "ь1Израиль, стандартное время'Израиль, летнее время\x0cЯпония/Япония, ст" + - "андартное время%Япония, летнее время/Петропавловск-КамчатскийRПетропавл" + - "овск-Камчатский, стандартное времяHПетропавловск-Камчатский, летнее вре" + - "мя%Восточный Казахстан#Западный Казахстан\x0aКорея-Корея, стандартное в" + - "ремя#Корея, летнее время\x0cКосрае\x14Красноярск7Красноярск, стандартно" + - "е время-Красноярск, летнее время\x10Киргизия\x11Шри-Ланка\x10о-ва Лайн" + - "\x0fЛорд-Хау2Лорд-Хау, стандартное время(Лорд-Хау, летнее время\x0aМакао" + - "-Макао, стандартное время#Макао, летнее время\x10Маккуори\x0eМагадан1Маг" + - "адан, стандартное время'Магадан, летнее время\x10Малайзия\x10Мальдивы" + - "\x1cМаркизские о-ва#Маршалловы Острова\x10Маврикий3Маврикий, стандартное" + - " время)Маврикий, летнее время\x0cМоусонAСеверо-западное мексиканское вре" + - "мяXСеверо-западное мексиканское стандартное времяNСеверо-западное мекси" + - "канское летнее время>Тихоокеанское мексиканское времяUТихоокеанское мек" + - "сиканское стандартное времяKТихоокеанское мексиканское летнее время\x13" + - "Улан-Батор6Улан-Батор, стандартное время,Улан-Батор, летнее время\x0cМо" + - "сква/Москва, стандартное время%Москва, летнее время\x0cМьянма\x0aНауру" + - "\x0aНепал\x1dНовая Каледония@Новая Каледония, стандартное время6Новая Ка" + - "ледония, летнее время\x1bНовая Зеландия>Новая Зеландия, стандартное вре" + - "мя4Новая Зеландия, летнее время\x18Ньюфаундленд;Ньюфаундленд, стандартн" + - "ое время1Ньюфаундленд, летнее время\x08Ниуэ\x0eНорфолк$Фернанду-ди-Норо" + - "ньяGФернанду-ди-Норонья, стандартное время=Фернанду-ди-Норонья, летнее " + - "время-Северные Марианские о-ва\x16Новосибирск9Новосибирск, стандартное " + - "время/Новосибирск, летнее время\x08Омск+Омск, стандартное время!Омск, л" + - "етнее время\x10Пакистан3Пакистан, стандартное время)Пакистан, летнее вр" + - "емя\x0aПалау&Папуа – Новая Гвинея\x10Парагвай3Парагвай, стандартное вре" + - "мя)Парагвай, летнее время\x08Перу+Перу, стандартное время!Перу, летнее " + - "время\x12Филиппины5Филиппины, стандартное время+Филиппины, летнее время" + - "\x14о-ва Феникс!Сен-Пьер и МикелонDСен-Пьер и Микелон, стандартное время" + - ":Сен-Пьер и Микелон, летнее время\x0eПиткэрн\x0cПонпеи\x0eПхеньян\x13Кыз" + - "ылорда*6Кызылорда, стандартное время*,Кызылорда, летнее время*\x0eРеюнь" + - "он\x0cРотера\x0eСахалин1Сахалин, стандартное время'Сахалин, летнее врем" + - "я\x1aВремя в Самаре4Самарское стандартное время*Самарское летнее время" + - "\x0aСамоа-Самоа, стандартное время#Самоа, летнее время%Сейшельские Остро" + - "ва\x10Сингапур#Соломоновы Острова\x19Южная Георгия\x0eСуринам\x08Сёва" + - "\x0aТаити\x0eТайвань1Тайвань, стандартное время'Тайвань, летнее время" + - "\x16Таджикистан\x0eТокелау\x0aТонга-Тонга, стандартное время#Тонга, летн" + - "ее время\x08Трук\x12Туркмения5Туркмения, стандартное время+Туркмения, л" + - "етнее время\x0cТувалу\x0eУругвай1Уругвай, стандартное время'Уругвай, ле" + - "тнее время\x14Узбекистан7Узбекистан, стандартное время-Узбекистан, летн" + - "ее время\x0eВануату1Вануату, стандартное время'Вануату, летнее время" + - "\x12Венесуэла\x16Владивосток9Владивосток, стандартное время/Владивосток," + - " летнее время\x12Волгоград5Волгоград, стандартное время+Волгоград, летне" + - "е время\x0cВосток\x08Уэйк\x1cУоллис и Футуна\x0cЯкутск/Якутск, стандарт" + - "ное время%Якутск, летнее время\x18Екатеринбург;Екатеринбург, стандартно" + - "е время1Екатеринбург, летнее время\x1fчерез {0} квартали!через {0} квар" + - "талів\x1fчерез {0} кварталу\x15через {0} дні\x17через {0} днів\x1dчерез" + - " {0} секунди" - -var bucket86 string = "" + // Size: 8275 bytes - "\x04mut.\x04gas.\x04wer.\x04mat.\x04gic.\x04kam.\x04nya.\x04kan.\x04nze." + - "\x04ukw.\x04ugu.\x04uku.\x08Mutarama\x0bGashyantare\x07Werurwe\x04Mata" + - "\x09Gicuransi\x06Kamena\x08Nyakanga\x06Kanama\x05Nzeli\x08Ukwakira\x0aUg" + - "ushyingo\x07Ukuboza\x04cyu.\x04mbe.\x04kab.\x04gtu.\x04gnu.\x04gnd.\x0bK" + - "u cyumweru\x0aKuwa mbere\x0bKuwa kabiri\x0bKuwa gatatu\x09Kuwa kane\x0bK" + - "uwa gatanu\x0eKuwa gatandatu\x13igihembwe cya mbere\x14igihembwe cya kab" + - "iri\x14igihembwe cya gatatu\x12igihembwe cya kane$G y 'сыл' MMMM d 'күнэ" + - "', EEEE\x0cGGGGG yy/M/d\x08Тохс\x08Олун\x06Клн\x06Мсу\x06Ыам\x06Бэс\x06О" + - "тй\x06Атр\x06Блҕ\x06Алт\x06Сэт\x06Ахс\x12Тохсунньу\x0eОлунньу\x15Кулун " + - "тутар\x13Муус устар\x0fЫам ыйын\x0fБэс ыйын\x0dОт ыйын\x19Атырдьых ыйын" + - "\x17Балаҕан ыйын\x10Алтынньы\x10Сэтинньи\x10ахсынньы\x12тохсунньу\x0eолу" + - "нньу\x15кулун тутар\x13муус устар\x0dыам ыйа\x0dбэс ыйа\x0bот ыйа\x17ат" + - "ырдьых ыйа\x15балаҕан ыйа\x10алтынньы\x10сэтинньи\x04бс\x04бн\x04оп\x04" + - "сэ\x04чп\x04бэ\x04сб\x18баскыһыанньа\x18бэнидиэнньик\x18оптуорунньук" + - "\x0cсэрэдэ\x0eчэппиэр\x10Бээтиҥсэ\x0eсубуота\x0b1-кы кб\x092-с кб\x093-с" + - " кб\x094-с кб\x191-кы кыбаартал\x172-с кыбаартал\x173-с кыбаартал\x174-с" + - " кыбаартал\x04ЭИ\x04ЭК\x0bб. э. и.(биһиги ээрэбит иннинэ\x06б. э\x1bбиһи" + - "ги ээрэбит\x22y 'сыл' MMMM d 'күнэ', EEEE\x08Ээрэ\x06Сыл\x10Былырыын" + - "\x0aбыйыл\x0aэһиил\x12{0} сылынан&{0} сыл ынараа өттүгэр\x0eЧиэппэр\x1fа" + - "аспыт кыбаартал\x17бу кыбаартал\x1dкэлэр кыбаартал\x1e{0} кыбаарталынан" + - "2{0} кыбаартал анараа өттүгэр\x07чпр.'{0} кыб. анараа өттүгэр\x04Ый\x11а" + - "аспыт ый\x09бу ый\x15аныгыскы ый\x10{0} ыйынан${0} ый ынараа өттүгэр" + - "\x0eНэдиэлэ\x1bааспыт нэдиэлэ\x13бу нэдиэлэ\x19кэлэр нэдиэлэ\x1a{0} нэди" + - "элэннэн.{0} нэдиэлэ анараа өттүгэр\x16{0} нэдиэлэтэ\x06Күн\x15Иллэрээ к" + - "үн\x0eБэҕэһээ\x0aБүгүн\x0cСарсын\x0aӨйүүн\x12{0} күнүнэн&{0} күн ынараа" + - " өттүгэр\x17Нэдиэлэ күнэ%ааспыт баскыһыанньа\x1dбу баскыһыанньа#кэлэр ба" + - "скыһыанньа\x22{0} баскыһыанньанан8{0} баскыһыанньа анараа өттүгэр\x12аа" + - "спыт бс.\x0aбу бс.\x10кэлэр бс.%{0} бс. анараа өттүгэр%ааспыт бэнидиэнн" + - "ьик\x1dбу бэнидиэнньик#кэлэр бэнидиэнньик${0} бэнидиэнньигинэн8{0} бэни" + - "диэнньик анараа өттүгэр\x12ааспыт бн.\x0aбу бн.\x10кэлэр бн.%{0} бн. ан" + - "араа өттүгэр%ааспыт оптуорунньук\x1dбу оптуорунньук#кэлэр оптуорунньук$" + - "{0} оптуорунньугунан8{0} оптуорунньук анараа өттүгэр\x12ааспыт оп.\x0aбу" + - " оп.\x10кэлэр оп.%{0} оп. анараа өттүгэр\x19ааспыт сэрэдэ\x11бу сэрэдэ" + - "\x17кэлэр сэрэдэ\x16{0} сэрэдэнэн,{0} сэрэдэ анараа өттүгэр\x12ааспыт сэ" + - ".\x0aбу сэ.\x10кэлэр сэ.%{0} сэ. анараа өттүгэр\x1bааспыт чэппиэр\x13бу " + - "чэппиэр\x19кэлэр чэппиэр\x1a{0} чэппиэринэн.{0} чэппиэр анараа өттүгэр" + - "\x12ааспыт чп.\x0aбу чп.\x10кэлэр чп.%{0} чп. анараа өттүгэр\x1dааспыт б" + - "ээтиҥсэ\x15бу бээтиҥсэ\x1bкэлэр бээтиҥсэ\x1a{0} бээтиҥсэнэн0{0} бээтиҥс" + - "э анараа өттүгэр\x12ааспыт бэ.\x0aбу бэ.\x10кэлэр бэ.%{0} бэ. анараа өт" + - "түгэр\x1bааспыт субуота\x13бу субуота\x19кэлэр субуота\x18{0} субуотана" + - "н.{0} субуота анараа өттүгэр\x12ааспыт сб.\x0aбу сб.\x10кэлэр сб.%{0} с" + - "б. анараа өттүгэр\x09ЭИ/ЭК\x08Чаас\x11бу чааска\x14{0} чааһынан({0} чаа" + - "с ынараа өттүгэр\x0eМүнүүтэ\x17бу мүнүүтэҕэ\x1a{0} мүнүүтэннэн.{0} мүнү" + - "үтэ ынараа өттүгэр\x10Сөкүүндэ\x0eбилигин\x1c{0} сөкүүндэннэн0{0} сөкүү" + - "ндэ ынараа өттүгэр'{0} сөк. анараа өттүгэр\x17Кэм балаһата\x13Арааб кэм" + - "э\x1eАрааб сүрүн кэмэ\x22Арааб сайыҥҥы кэмэ\x15Эрмээн кэмэ Эрмээн сүрүн" + - " кэмэ$Эрмээн сайыҥҥы кэмэ$Киин Австралия кэмэ/Киин Австралия сүрүн кэмэ3" + - "Киин Австралия сайыҥҥы кэмэ$Илин Австралия кэмэ/Илин Австралия сүрүн кэ" + - "мэ3Илин Австралия сайыҥҥы кэмэ&Арҕаа Австралия кэмэ1Арҕаа Австралия сүр" + - "үн кэмэ5Арҕаа Австралия сайыҥҥы кэмэ\x13Кытай кэмэ\x1eКытай сүрүн кэмэ" + - "\x22Кытай сайыҥҥы кэмэ\x1bЧойбалсан кэмэ&Чойбалсан сүрүн кэмэ*Чойбалсан " + - "сайыҥҥы кэмэ\x19Курусуун кэмэ$Курусуун сүрүн кэмэ(Курусуун сайыҥҥы кэмэ" + - "\x22Ииндийэ сүрүн кэмэ\x13Ираан кэмэ\x1eИраан сүрүн кэмэ\x22Ыраан сайыҥҥ" + - "ы кэмэ\x19Дьоппуон кэмэ$Дьоппуон сүрүн кэмэ(Дьоппуон сайыҥҥы кэмэ&Илин " + - "Казахстаан кэмэ(Арҕаа Казахстаан кэмэ\x15Кэриэй кэмэ Кэриэй сүрүн кэмэ$" + - "Кэриэй сайыҥҥы кэмэ!Красноярскай кэмэ,Красноярскай сүрүн кэмэ0Красноярс" + - "кай сайыҥҥы кэмэ\x1dКыргыстаан кэмэ\x19Магадаан кэмэ$Магадаан сүрүн кэм" + - "э(Магадаан сайыҥҥы кэмэ\x1eУлан Баатар кэмэ)Улан Баатар сүрүн кэмэ-Улан" + - " Баатар сайыҥҥы кэмэ\x17Москуба кэмэ\x22Москуба сүрүн кэмэ&Москуба сайыҥ" + - "ҥы кэмэ\x22Саҥа Зеландия кэмэ+Саҥа Сэйлэнд сүрүн кэмэ/Саҥа Сэйлэнд сайы" + - "ҥҥы кэмэ#Новосибирскай кэмэ.Новосибирскай сүрүн кэмэ2Новосибирскай сайы" + - "ҥҥы кэмэ\x15Омскай кэмэ Омскай сүрүн кэмэ$Омскай сайыҥҥы кэмэ\x1bПакист" + - "аан кэмэ&Пакистаан сүрүн кэмэ*Пакистаан сайыҥҥы кэмэ\x19Сахалиин кэмэ$С" + - "ахалыын сүрүн кэмэ(Сахалыын сайыҥҥы кэмэ\x1fВладивосток кэмэ0Быладьыбас" + - "тыак сүрүн кэмэ4Быладьыбастыак сайыҥҥы кэмэ\x1bВолгоград кэмэ&Волгоград" + - " сүрүн кэмэ*Волгоград сайыҥҥы кэмэ\x1dДьокуускай кэмэ(Дьокуускай сүрүн к" + - "эмэ,Дьокуускай сайыҥҥы кэмэ!Екатеринбург кэмэ,Екатеринбуур сүрүн кэмэ0Е" + - "катеринбуур сайыҥҥы кэмэ\x03Obo\x03Waa\x03Oku\x03Ong\x03Ime\x03Ile\x03S" + - "ap\x03Isi\x03Saa\x03Tom\x03Tob\x03Tow\x0bLapa le obo\x0dLapa le waare" + - "\x0dLapa le okuni\x11Lapa le ong’wan\x0cLapa le imet\x0bLapa le ile\x0cL" + - "apa le sapa\x0dLapa le isiet\x0cLapa le saal\x0dLapa le tomon\x11Lapa le" + - " tomon obo\x13Lapa le tomon waare\x03Are\x03Kun\x03Ine\x03Kwe\x0dMderot " + - "ee are\x0eMderot ee kuni\x13Mderot ee ong’wan\x0eMderot ee inet\x0dMdero" + - "t ee ile\x0eMderot ee sapa\x0dMderot ee kwe\x07Tesiran\x05Teipa\x10Kabla" + - " ya Christo\x10Baada ya Christo\x07Nyamata\x04Lari\x04Lapa\x0aSaipa napo" + - "\x05Mpari\x08Ng’ole\x03Duo\x07Taisere\x05TS/TP\x04Saai\x07Idakika\x08Ise" + - "kondi\x03Mup\x03Mwi\x03Msh\x03Mun\x03Mag\x03Muj\x03Msp\x03Mpg\x03Mye\x03" + - "Mok\x03Mus\x03Muh\x0cMupalangulwa\x07Mwitope\x08Mushende\x05Munyi\x0fMus" + - "hende Magali\x07Mujimbi\x09Mushipepo\x08Mupuguto\x08Munyense\x05Mokhu" + - "\x0eMusongandembwe\x07Muhaano\x07Mulungu\x08Jumatatu\x07Jumanne\x08Jumat" + - "ano\x09Alahamisi\x06Ijumaa\x08Jumamosi\x09Lwamilawu\x09Pashamihe\x12Asha" + - "nali uKilisito\x13Pamwandi ya Kilisto\x0cUluhaavi lwa\x06Mwakha\x05Mwesi" + - "\x07Ilijuma\x06Lusiku\x05Imehe\x0bIneng’uni\x09Pamulaawu\x12Ulusiku lwa " + - "Lijuma\x13Uluhaavi lwa lusiku\x07Ilisala\x08Isekunde\x12Uluhaavi lwa lis" + - "aa\x06ođđj\x04guov\x04njuk\x03cuo\x04mies\x04geas\x04suoi\x04borg\x06čak" + - "č\x04golg\x05skáb\x04juov\x10ođđajagemánnu\x0cguovvamánnu\x0dnjukčamánn" + - "u\x0ccuoŋománnu\x0cmiessemánnu\x0cgeassemánnu\x0dsuoidnemánnu\x0bborgemá" + - "nnu\x0dčakčamánnu\x0dgolggotmánnu\x0dskábmamánnu\x0cjuovlamánnu" - -var bucket87 string = "" + // Size: 8265 bytes - "\x04sotn\x04vuos\x04maŋ\x04gask\x04duor\x04bear\x04láv\x0bsotnabeaivi" + - "\x0avuossárga\x0dmaŋŋebárga\x0bgaskavahkku\x09duorasdat\x09bearjadat\x0a" + - "lávvardat\x04i.b.\x0ciđitbeaivet\x0deahketbeaivet\x0biđitbeaivi\x0ceahke" + - "tbeaivi\x0fovdal Kristtusa\x12maŋŋel Kristtusa\x05o.Kr.\x05m.Kr.\x04ooá" + - "\x03oá\x06jáhki\x14{0} jahki maŋŋilit\x15{0} jahkki maŋŋilit\x0f{0} jahk" + - "i árat\x10{0} jahkki árat\x06mánnu\x1a{0} mánotbadji maŋŋilit\x15{0} mán" + - "otbadji árat\x07váhkku\x14{0} vahku maŋŋilit\x15{0} vahkku maŋŋilit\x0f{" + - "0} vahku árat\x10{0} vahkku árat\x06beaivi\x0coovdebpeivvi\x04ikte\x04od" + - "ne\x06ihttin\x0epaijeelittáá\x16{0} jándor maŋŋilit\x17{0} jándor amaŋŋi" + - "lit\x17{0} jándora maŋŋilit\x11{0} jándor árat\x12{0} jándora árat\x0dvá" + - "hkkubeaivi\x13beaivi ráidodássi\x06diibmu\x15{0} diibmu maŋŋilit\x16{0} " + - "diibmur maŋŋilit\x10{0} diibmu árat\x11{0} diibmur árat\x08minuhtta\x16{" + - "0} minuhta maŋŋilit\x17{0} minuhtta maŋŋilit\x11{0} minuhta árat\x12{0} " + - "minuhtta árat\x02na\x16{0} sekunda maŋŋilit\x17{0} sekundda maŋŋilit\x11" + - "{0} sekunda árat\x12{0} sekundda árat\x0cáigeavádat\x09{0} áigi\x0f{0} g" + - "eassiáigi\x13{0} dábálašáigi\x14gaska-Eurohpá áigi\x1egaska-Eurohpá dábá" + - "lašáigi\x1agaska-Eurohpá geassiáigi\x15nuorti-Eurohpá áigi\x1fnuorti-Eur" + - "ohpá dábálašáigi\x1bnuorti-Eurohpá geassiáigi\x14oarje-Eurohpá áigi\x1eo" + - "arje-Eurohpá dábálašáigi\x1aoarje-Eurohpá geassiáigi\x16Greenwich gaskka" + - " áigi\x0cMoskva-áigi\x16Moskva-dábálašáigi\x12Moskva-geassiáigi\x0bvuoss" + - "árgga\x0emaŋŋebárgga\x0agaskavahku\x0aduorastaga\x0abearjadaga\x0blávva" + - "rdaga\x08áigodat\x05jahki\x0bmannan jagi\x09dán jagi\x0cboahtte jagi\x0e" + - "{0} jagi siste\x0e{0} jagi árat\x10jahkenjealjádas\x06vahkku\x0cvahkkobe" + - "aivi\x07Janeiro\x08Fevreiro\x05Marco\x05Abril\x04Maio\x05Junho\x05Julho" + - "\x07Augusto\x08Setembro\x06Otubro\x08Novembro\x08Decembro\x07Dimingu\x07" + - "Chiposi\x07Chipiri\x07Chitatu\x06Chinai\x08Chishanu\x06Sabudu\x0fAntes d" + - "e Cristo\x0bAnno Domini\x02AC\x02AD\x05Chaka\x06Ntsiku\x04Zuro\x04Lero" + - "\x08Manguana\x04Hora\x03Nye\x03Ful\x04Mbä\x03Ngu\x04Bêl\x04Fön\x03Len" + - "\x04Kük\x03Mvu\x03Ngb\x03Nab\x03Kak\x06Nyenye\x0aFulundïgi\x08Mbängü\x07" + - "Ngubùe\x09Bêläwü\x06Föndo\x06Lengua\x09Kükürü\x05Mvuka\x08Ngberere\x0bNa" + - "bändüru\x07Kakauka\x03Bk1\x03Bk2\x03Bk3\x03Bk4\x03Bk5\x04Lâp\x04Lây\x0aB" + - "ikua-ôko\x0bBïkua-ûse\x0bBïkua-ptâ\x0dBïkua-usïö\x0bBïkua-okü\x09Lâpôsö" + - "\x08Lâyenga\x06F4–1\x06F4–2\x06F4–3\x06F4–4\x11Fângbisïö ôko\x11Fângbisï" + - "ö ûse\x11Fângbisïö otâ\x13Fângbisïö usïö\x02ND\x02LK\x10Kôzo na Krîstu" + - "\x14Na pekô tî Krîstu\x03KnK\x03NpK\x0aKùotângo\x04Ngû\x03Nze\x07Dimâsi" + - "\x03Lâ\x06Bîrï\x06Lâsô\x0aKêkerêke\x06Bïkua\x06Na lâ\x07Ngbonga\x0eNdurü" + - " ngbonga\x0eNzîna ngbonga\x0bZukangbonga\x09ⵉⵏⵏ\x09ⴱⵕⴰ\x09ⵎⴰⵕ\x09ⵉⴱⵔ\x09" + - "ⵎⴰⵢ\x09ⵢⵓⵏ\x09ⵢⵓⵍ\x09ⵖⵓⵛ\x09ⵛⵓⵜ\x09ⴽⵜⵓ\x09ⵏⵓⵡ\x09ⴷⵓⵊ\x12ⵉⵏⵏⴰⵢⵔ\x0fⴱⵕⴰⵢ" + - "ⵕ\x0cⵎⴰⵕⵚ\x0fⵉⴱⵔⵉⵔ\x0fⵎⴰⵢⵢⵓ\x0fⵢⵓⵏⵢⵓ\x12ⵢⵓⵍⵢⵓⵣ\x0cⵖⵓⵛⵜ\x18ⵛⵓⵜⴰⵏⴱⵉⵔ\x0f" + - "ⴽⵜⵓⴱⵔ\x18ⵏⵓⵡⴰⵏⴱⵉⵔ\x18ⴷⵓⵊⴰⵏⴱⵉⵔ\x03ⵉ\x03ⴱ\x03ⵎ\x03ⵢ\x03ⵖ\x03ⵛ\x03ⴽ\x03ⵏ" + - "\x03ⴷ\x09ⴰⵙⴰ\x09ⴰⵢⵏ\x09ⴰⵙⵉ\x09ⴰⴽⵕ\x09ⴰⴽⵡ\x0cⴰⵙⵉⵎ\x0cⴰⵙⵉⴹ\x12ⴰⵙⴰⵎⴰⵙ\x0fⴰⵢ" + - "ⵏⴰⵙ\x12ⴰⵙⵉⵏⴰⵙ\x0fⴰⴽⵕⴰⵙ\x0fⴰⴽⵡⴰⵙ\x12ⵙⵉⵎⵡⴰⵙ\x15ⴰⵙⵉⴹⵢⴰⵙ\x08ⴰⴽ 1\x08ⴰⴽ 2" + - "\x08ⴰⴽ 3\x08ⴰⴽ 4\x1aⴰⴽⵕⴰⴹⵢⵓⵔ 1\x1aⴰⴽⵕⴰⴹⵢⵓⵔ 2\x1aⴰⴽⵕⴰⴹⵢⵓⵔ 3\x1aⴰⴽⵕⴰⴹⵢⵓⵔ 4" + - "\x12ⵜⵉⴼⴰⵡⵜ\x18ⵜⴰⴷⴳⴳⵯⴰⵜ\x1aⴷⴰⵜ ⵏ ⵄⵉⵙⴰ ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ\x09ⴷⴰⵄ\x09ⴷⴼⵄ\x0fⵜⴰⵙⵓⵜ" + - "\x15ⴰⵙⴳⴳⵯⴰⵙ\x0fⴰⵢⵢⵓⵔ\x15ⵉⵎⴰⵍⴰⵙⵙ\x09ⴰⵙⵙ\x0fⵉⴹⵍⵍⵉ\x0cⴰⵙⵙⴰ\x0fⴰⵙⴽⴽⴰ#ⴰⵙⵙ ⴳ ⵉ" + - "ⵎⴰⵍⴰⵙⵙJⵜⵉⵣⵉ ⴳ ⵡⴰⵙⵙ: ⵜⵉⴼⴰⵡⵜ/ⵜⴰⴷⴳⴳⵯⴰⵜ\x15ⵜⴰⵙⵔⴰⴳⵜ\x15ⵜⵓⵙⴷⵉⴷⵜ\x12ⵜⴰⵙⵉⵏⵜ#ⴰⴽ" + - "ⵓⴷ ⵏ ⵓⴳⵎⵎⴰⴹ\x03inn\x05bṛa\x05maṛ\x03ibr\x03may\x03yun\x03yul\x04ɣuc" + - "\x03cut\x03ktu\x03nuw\x03duj\x06innayr\x09bṛayṛ\x08maṛṣ\x05ibrir\x05mayy" + - "u\x05yunyu\x06yulyuz\x05ɣuct\x08cutanbir\x05ktubr\x08nuwanbir\x08dujanbi" + - "r\x01i\x01b\x01m\x01y\x02ɣ\x01c\x01k\x01n\x01d\x03asa\x03ayn\x03asi\x05a" + - "kṛ\x03akw\x04asim\x06asiḍ\x06asamas\x05aynas\x06asinas\x07akṛas\x05akwas" + - "\x07asimwas\x09asiḍyas\x04ak 1\x04ak 2\x04ak 3\x04ak 4\x0eakṛaḍyur 1\x0e" + - "akṛaḍyur 2\x0eakṛaḍyur 3\x0eakṛaḍyur 4\x06tifawt\x09tadggʷat\x0bdat n ɛi" + - "sa\x0ddffir n ɛisa\x04daɛ\x04dfɛ\x05tasut\x08asggʷas\x05ayyur\x07imalass" + - "\x03ass\x07iḍlli\x04assa\x05askka\x0dass g imalass\x1ftizi g wass: tifaw" + - "t / tadggʷat\x07tasragt\x07tusdidt\x06tasint\x0fakud n ugmmaḍ\x06ජන\x09ප" + - "ෙබ\x12මාර්තු\x18අප්\u200dරේල්\x0cමැයි\x0cජූනි\x0cජූලි\x09අගෝ\x0cසැප්" + - "\x09ඔක්\x0cනොවැ\x0cදෙසැ\x03ජ\x06පෙ\x06මා\x03අ\x06මැ\x06ජූ\x06සැ\x03ඔ\x06" + - "නෙ\x06දෙ\x12ජනවාරි\x18පෙබරවාරි\x15අගෝස්තු!සැප්තැම්බර්\x18ඔක්තෝබර්\x1bන" + - "ොවැම්බර්\x1bදෙසැම්බර්\x0cමාර්\x0fඉරිදා\x0fසඳුදා\x09අඟහ\x0fබදාදා\x15බ්" + - "\u200dරහස්\x0cසිකු\x09සෙන\x03ඉ\x03ස\x03බ\x0cබ්\u200dර\x06සි\x06සෙ\x09ඉරි" + - "\x09සඳු\x06අඟ\x09බදා\x0fබ්\u200dරහ\x1bඅඟහරුවාදා*බ්\u200dරහස්පතින්දා\x18ස" + - "ිකුරාදා\x1bසෙනසුරාදා\x0eකාර්:1\x0eකාර්:2\x0eකාර්:3\x0eකාර්:4\x1e1 වන ක" + - "ාර්තුව\x1e2 වන කාර්තුව\x1e3 වන කාර්තුව\x1e4 වන කාර්තුව\x12මැදියම\x0bපෙ" + - ".ව.\x1eමධ්\u200dයාහ්නය\x08ප.ව.\x12පාන්දර\x09උදේ\x0cදවල්\x09හවස\x06රෑ\x1f" + - "මැදියමට පසු\x03ම\x03ප\x06පා\x03උ\x03ද\x03හ+ක්\u200dරිස්තු පූර්ව&පොදු ය" + - "ුගයට පෙර(ක්\u200dරිස්තු වර්ෂ\x19පොදු යුගය\x17ක්\u200dරි.පූ.\x0cපොපෙ" + - "\x14ක්\u200dරි.ව.\x0dපො.යු\x0cයුගය\x0fවර්ෂය\x1cපසුගිය වසර\x13මෙම වසර\x13" + - "ඊළඟ වසර\x19වසර {0}කින්\x1dවසර {0}කට පෙර\x0aවර්.\x15කාර්තුව(පසුගිය කාර්" + - "තුව\x1fමෙම කාර්තුව\x1fඊළඟ කාර්තුව\x22කාර්තු {0}කින්&කාර්තු {0}කට පෙර" + - "\x0dකාර්. පසුගිය කාර්.\x17මෙම කාර්.\x17ඊළඟ කාර්.\x1dකාර්. {0}කින්!කාර්. " + - "{0}කට පෙර\x0cමාසය\x1fපසුගිය මාසය\x16මෙම මාසය\x16ඊළඟ මාසය\x19මාස {0}කින්" + - "\x1dමාස {0}කට පෙර\x0aමාස.\x1dපසුගිය මාස.\x14මෙම මාස.\x14ඊළඟ මාස.\x0cසතිය" + - "\x1fපසුගිය සතිය\x16මෙම සතිය\x16ඊළඟ සතිය\x19සති {0}කින්\x1dසති {0}කට පෙර" + - "\x1d{0} වෙනි සතිය\x0aසති.\x1dපසුගිය සති.\x14මෙම සති.\x14ඊළඟ සති.\x0cදිනය" + - "\x12පෙරේදා\x09ඊයේ\x06අද\x09හෙට\x15අනිද්දා\x13දින {0}න්\x1dදින {0}කට පෙර" + - "\x1cසතියේ දිනය\x22පසුගිය ඉරිදා\x16මේ ඉරිදා\x19ඊළඟ ඉරිදා\x22{0} ඉරිදාවකින" + - "්)ඉරිදාවන් {0} කින්&{0} ඉරිදාවකට පෙර-ඉරිදාවන් {0} කට පෙර\x22පසුගිය සඳු" + - "දා\x16මේ සඳුදා\x19ඊළඟ සඳුදා\x22{0} සඳුදාවකින්)සඳුදාවන් {0} කින්&{0} සඳ" + - "ුදාවකට පෙර-සඳුදාවන් {0} කට පෙර.පසුගිය අඟහරුවාදා\x22මේ අඟහරුවාදා%ඊළඟ අඟ" + - "හරුවාදා.{0} අඟහරුවාදාවකින්5අඟහරුවාදාවන් {0} කින්2{0} අඟහරුවාදාවකට පෙර9" + - "අඟහරුවාදාවන් {0} කට පෙර\x22පසුගිය බදාදා\x16මේ බදාදා\x19ඊළඟ බදාදා\x22{0" + - "} බදාදාවකින්)බදාදාවන් {0} කින්&{0} බදාදාවකට පෙර-බදාදාවන් {0} කට පෙර=පසුග" + - "ිය බ්\u200dරහස්පතින්දා1මේ බ්\u200dරහස්පතින්දා4ඊළඟ බ්\u200dරහස්පතින්දා=" + - "{0} බ්\u200dරහස්පතින්දාවකින්Dබ්\u200dරහස්පතින්දාවන් {0} කින්A{0} බ්" + - "\u200dරහස්පතින්දාවකට පෙරHබ්\u200dරහස්පතින්දාවන් {0} කට පෙර+පසුගිය සිකුරා" + - "දා\x1fමේ සිකුරාදා\x22ඊළඟ සිකුරාදා)+{0} සිකුරදාවකින්0සිකුරදාවන් +{0} කි" + - "න්,{0} සිකුරදාවකට පෙර3සිකුරදාවන් {0} කට පෙර\x15ⴰⵙⵉⵎⵡⴰⵙ" - -var bucket88 string = "" + // Size: 18811 bytes - ".පසුගිය සෙනසුරාදා\x22මේ සෙනසුරාදා%ඊළඟ සෙනසුරාදා-සෙනසුරාදා +{0} කින්6සෙනස" + - "ුරාදාවන් +{0} කින්0සෙනසුරාදා {0} කට පෙර9සෙනසුරාදාවන් {0} කට පෙර\x12පෙ." + - "ව/ප.ව\x09පැය\x13මෙම පැය\x19පැය {0}කින්\x1dපැය {0}කට පෙර\x06පැ\x1bමිනිත" + - "්තුව%මෙම මිනිත්තුව(මිනිත්තු {0}කින්,මිනිත්තු {0}කට පෙර\x0dමිනි.\x06මි" + - "\x12තත්පරය\x0cදැන්\x1fතත්පර {0}කින්#තත්පර {0}කට පෙර\x0aතත්.\x03ත\x19කාල " + - "කලාපය\x13{0} වේලාව,{0} දිවාආලෝක වේලාව#{0} සම්මත වේලාවDබ්\u200dරිතාන්" + - "\u200dය ගිම්හාන කාලය;අයර්ලන්ත ගිම්හාන කාලය1ඇෆ්ගනිස්ථාන වේලාවAමධ්\u200dයම" + - " අප්\u200dරිකානු වේලාවGනැගෙනහිර අප්\u200dරිකානු වේලාව>දකුණු අප්\u200dරික" + - "ානු වේලාව>බටහිර අප්\u200dරිකානු වේලාවNබටහිර අප්\u200dරිකානු සම්මත වේලා" + - "වTබටහිර අප්\u200dරිකානු ග්\u200dරීෂ්ම කාලය\x22ඇලස්කා වේලාව2ඇලස්කා සම්ම" + - "ත වේලාව;ඇලස්කා දිවාආලෝක වේලාව%ඇමර්සන් වේලාව5ඇමර්සන් සම්මත වේලාව;ඇමර්සන" + - "් ග්\u200dරීෂ්ම කාලයKඋතුරු ඇමරිකානු මධ්\u200dයම වේලාව[උතුරු ඇමරිකානු ම" + - "ධ්\u200dයම සම්මත වේලාවdඋතුරු ඇමරිකානු මධ්\u200dයම දිවාආලෝක වේලාවQඋතුරු" + - " ඇමරිකානු නැගෙනහිර වේලාවaඋතුරු ඇමරිකානු නැගෙනහිර සම්මත වේලාවjඋතුරු ඇමරික" + - "ානු නැගෙනහිර දිවාආලෝක වේලාවHඋතුරු ඇමරිකානු කඳුකර වේලාවXඋතුරු ඇමරිකානු " + - "කඳුකර සම්මත වේලාවaඋතුරු ඇමරිකානු කඳුකර දිවාආලෝක වේලාවQඋතුරු ඇමරිකානු ප" + - "ැසිෆික් වේලාවaඋතුරු ඇමරිකානු පැසිෆික් සම්මත වේලාවjඋතුරු ඇමරිකානු පැසිෆ" + - "ික් දිවාආලෝක වේලාව\x1fඅපියා වේලාව/අපියා සම්මත වේලාව,අපියා දිවා වේලාව" + - "\x1fඅරාබි වේලාව/අරාබි සම්මත වේලාව/අරාබි දහවල් වේලාව.ආර්ජන්ටිනා වේලාව>ආර්" + - "ජන්ටිනා සම්මත වේලාවDආර්ජන්ටිනා ග්\u200dරීෂ්ම කාලය>බටහිර ආර්ජන්ටිනා වේල" + - "ාවNබටහිර ආර්ජන්ටිනා සම්මත වේලාවTබටහිර ආර්ජන්ටිනා ග්\u200dරීෂ්ම කාලය+ආම" + - "ේනියානු වේලාව;ආමේනියානු සම්මත වේලාවDආමේනියානු ග්\u200dරීෂ්ම වේලාව1අත්ල" + - "ාන්තික් වේලාවAඅත්ලාන්තික් සම්මත වේලාවJඅත්ලාන්තික් දිවාආලෝක වේලාවMමධ්" + - "\u200dයම ඕස්ට්\u200dරේලියානු වේලාවJඕස්ට්\u200dරේලියානු සම්මත වේලාව]මධ්" + - "\u200dයම ඔස්ට්\u200dරේලියානු දහවල් වේලාව]මධ්\u200dයම බටහිර ඔස්ට්\u200dරේ" + - "ලියානු වේලාවmමධ්\u200dයම බටහිර ඔස්ට්\u200dරේලියානු සම්මත වේලාවmමධ්" + - "\u200dයම බටහිර ඔස්ට්\u200dරේලියානු දහවල් වේලාවSනැගෙනහිර ඕස්ට්\u200dරේලිය" + - "ානු වේලාවcනැගෙනහිර ඕස්ට්\u200dරේලියානු සම්මත වේලාවcනැඟෙනහිර ඕස්ට්" + - "\u200dරේලියානු දහවල් වේලාවJබටහිර ඕස්ට්\u200dරේලියානු වේලාවZබටහිර ඕස්ට්" + - "\u200dරේලියානු සම්මත වේලාවZබටහිර ඔස්ට්\u200dරේලියානු දහවල් වේලාව1අසර්බයි" + - "ජාන් වේලාවAඅසර්බයිජාන් සම්මත වේලාවJඅසර්බයිජාන් ග්\u200dරීෂ්ම වේලාව%ඇසො" + - "ර්ස් වේලාව5ඇසොර්ස් සම්මත වේලාව>ඇසොර්ස් ග්\u200dරීෂ්ම වේලාව(බංගලාදේශ වේ" + - "ලාව8බංගලාදේශ සම්මත වේලාව>බංගලාදේශ ග්\u200dරීෂ්ම කාලය\x1fභුතාන වේලාව(බො" + - "ලිවියා වේලාව%බ්\u200dරසීල වේලාව5බ්\u200dරසීල සම්මත වේලාව;බ්\u200dරසීල " + - "ග්\u200dරීෂ්ම කාලයAබෘනායි දරුස්සලාම් වේලාව(කේප්වේඩ් වේලාව8කේප්වේඩ් සම්" + - "මත වේලාව>කේප්වේඩ් ග්\u200dරීෂ්ම කාලය\x1fචමොරෝ වේලාව\x1fචැතම් වේලාව/චැත" + - "ම් සම්මත වේලාව,චැතම් දිවා වේලාව\x1cචිලී වේලාව,චිලී සම්මත වේලාව2චිලී ග්" + - "\u200dරීෂ්ම කාලය\x19චීන වේලාව)චීන සම්මත වේලාව)චීන දහවල් වේලාව1චොයිබල්සාන" + - "් වේලාවAචොයිබල්සාන් සම්මත වේලාවJචොයිබල්සාන් ග්\u200dරීෂ්ම වේලාව>ක්" + - "\u200dරිස්මස් දුපත් වේලාව2කොකෝස් දුපත් වේලාව.කොලොම්බියා වේලාව>කොලොම්බියා" + - " සම්මත වේලාවDකොලොම්බියා ග්\u200dරීෂ්ම කාලය,කුක් දුපත් වේලාව<කුක් දුපත් ස" + - "ම්මත වේලාවOකුක් දුපත් භාග ග්\u200dරීෂ්ම වේලාව(කියුබානු වේලාව8කියුබානු " + - "සම්මත වේලාවAකියුබානු දිවාආලෝක වේලාව\x22ඩාවිස් වේලාවDදුමොන්ත්-ඩ්උර්විල්" + - " වේලාව;නැගෙනහිර ටිමෝර් වේලාව2ඊස්ටර් දූපත් වේලාවBඊස්ටර් දූපත් සම්මත වේලාව" + - "Hඊස්ටර් දූපත් ග්\u200dරීෂ්ම කාලය(ඉක්වදෝර් වේලාව8මධ්\u200dයම යුරෝපීය වේලා" + - "වHමධ්\u200dයම යුරෝපීය සම්මත වේලාවQමධ්\u200dයම යුරෝපීය ග්\u200dරීෂ්ම වේ" + - "ලාව>නැගෙනහිර යුරෝපීය වේලාවNනැගෙනහිර යුරෝපීය සම්මත වේලාවWනැගෙනහිර යුරෝප" + - "ීය ග්\u200dරීෂ්ම වේලාවKතවත්-නැගෙනහිර යුරෝපීය වේලාව5බටහිර යුරෝපීය වේලාව" + - "Eබටහිර යුරෝපීය සම්මත වේලාවNබටහිර යුරෝපීය ග්\u200dරීෂ්ම වේලාව;ෆෝක්ලන්ඩ් ද" + - "ූපත් වේලාවKෆෝක්ලන්ඩ් දූපත් සම්මත වේලාවQෆෝක්ලන්ඩ් දූපත් ග්\u200dරීෂ්ම ක" + - "ාලය\x1cෆිජි වේලාව,ෆිජි සම්මත වේලාව5ෆිජි ග්\u200dරීෂ්ම වේලාව/ප්\u200dරං" + - "ශ ගයනා වේලාවjප්\u200dරංශ දකුණුදිග සහ ඇන්ටාර්ක්ටික් වේලාව%ගලපගොස් වේලාව" + - "+ගැම්බියර් වේලාව.ජෝර්ජියානු වේලාව>ජෝර්ජියානු සම්මත වේලාවGජෝර්ජියානු ග්" + - "\u200dරීෂ්ම වේලාව;ගිල්බර්ට් දුපත් වේලාව>ග්\u200dරිනිච් මධ්\u200dයම වේලාව" + - "Jනැගෙනහිර ග්\u200dරීන්ලන්ත වේලාවZනැගෙනහිර ග්\u200dරීන්ලන්ත සම්මත වේලාව`න" + - "ැගෙනහිර ග්\u200dරීන්ලන්ත ග්\u200dරීෂ්ම කාලයAබටහිර ග්\u200dරීන්ලන්ත වේල" + - "ාවQබටහිර ග්\u200dරීන්ලන්ත සම්මත වේලාවWබටහිර ග්\u200dරීන්ලන්ත ග්\u200dර" + - "ීෂ්ම කාලය\x1fගල්ෆ් වේලාව\x1cගයනා වේලාවAහවායි-අලෙයුතියාන් වේලාවQහවායි-අ" + - "ලෙයුතියාන් සම්මත වේලාවZහවායි-අලෙයුතියාන් දිවාආලෝක වේලාව\x22හොංකොං වේලා" + - "ව2හොංකොං සම්මත වේලාව;හොංකොං ග්\u200dරීෂ්ම වේලාව\x22හොව්ඩ් වේලාව2හොව්ඩ්" + - " සම්මත වේලාව;හොව්ඩ් ග්\u200dරීෂ්ම වේලාව+ඉන්දියානු වේලාව5ඉන්දියන් සාගර වේ" + - "ලාව(ඉන්දුචීන වේලාවJමධ්\u200dයම ඉන්දුනීසියානු වේලාවPනැගෙනහිර ඉන්දුනීසිය" + - "ානු වේලාවGබටහිර ඉන්දුනීසියානු වේලාව\x1cඉරාන වේලාව,ඉරාන සම්මත වේලාව&ඉරා" + - "න දිවා කාලය1ඉර්කුට්ස්ක් වේලාවAඉර්කුට්ස්ක් සම්මත වේලාවJඉර්කුට්ස්ක් ග්" + - "\u200dරීෂ්ම වේලාව(ඊශ්\u200dරායල වේලාව8ඊශ්\u200dරායල සම්මත වේලාව8ඊශ්" + - "\u200dරායල දහවල් වේලාව\x1cජපාන වේලාව,ජපාන සම්මත වේලාව,ජපාන දහවල් වේලාවAන" + - "ැගෙනහිර කසකස්තාන වේලාව8බටහිර කසකස්තාන වේලාව(කොරියානු වේලාව8කොරියානු සම" + - "්මත වේලාව8කොරියානු දහවල් වේලාව\x22කොස්රේ වේලාව@ක්\u200dරස්නොයාර්ස්ක් ව" + - "ේලාවPක්\u200dරස්නොයාර්ස්ක් සම්මත වේලාවYක්\u200dරස්නොයාර්ස්ක් ග්\u200dර" + - "ීෂ්ම වේලාව1කිර්ගිස්තාන වේලාව,ශ්\u200dරී ලංකා වේලාව/ලයින් දුපත් වේලාව/ල" + - "ෝර්ඩ් හෝව් වේලාව?ලෝර්ඩ් හෝව් සම්මත වේලාව<ලෝර්ඩ් හෝව් දිවා වේලාව;මැක්කු" + - "අරි දුපත් වේලාව\x22මෙගඩන් වේලාව2මෙගඩන් සම්මත වේලාව;මෙගඩන් ග්\u200dරීෂ්" + - "ම වේලාව.මැලේසියානු වේලාව.මාලදිවයින් වේලාව1මාර්කුඑසාස් වේලාව5මාර්ෂල් දු" + - "පත් වේලාව\x22මුරුසි වේලාව2මුරුසි සම්මත වේලාව8මුරුසි ග්\u200dරීෂ්ම කාලය" + - "%මොව්සන් වේලාව2වයඹ මෙක්සිකෝ වේලාවBවයඹ මෙක්සිකෝ සම්මත වේලාවKවයඹ මෙක්සිකෝ " + - "දිවාආලෝක වේලාවAමෙක්සිකෝ පැසිෆික් වේලාවQමෙක්සිකෝ පැසිෆික් සම්මත වේලාවZම" + - "ෙක්සිකෝ පැසිෆික් දිවාආලෝක වේලාව/උලාන් බාටර් වේලාව?උලාන් බාටර් සම්මත වේ" + - "ලාවHඋලාන් බාටර් ග්\u200dරීෂ්ම වේලාව%මොස්කව් වේලාව5මොස්කව් සම්මත වේලාව>" + - "මොස්කව් ග්\u200dරීෂ්ම වේලාව+මියන්මාර් වේලාව\x22නාවුරු වේලාව\x1fනේපාල ව" + - "ේලාව8නව සෙලඩොනියානු වේලාවHනව සෙලඩොනියානු සම්මත වේලාවQනව සෙලඩොනියානු ග්" + - "\u200dරීෂ්ම වේලාව(නවසීලන්ත වේලාව8නවසීලන්ත සම්මත වේලාව5නවසීලන්ත දිවා වේලා" + - "ව7නිව්ෆවුන්ලන්ත වේලාවGනිව්ෆවුන්ලන්ත සම්මත වේලාවPනිව්ෆවුන්ලන්ත දිවාආලෝක" + - " වේලාව\x1cනියු වේලාව8නොෆොල්ක් දුපත් වේලාවKෆර්නැන්ඩෝ ඩි නොරොන්හා වේලාව[ෆර" + - "්නැන්ඩෝ ඩි නොරොන්හා සම්මත වේලාවaෆර්නැන්ඩෝ ඩි නොරොන්හා ග්\u200dරීෂ්ම කා" + - "ලය7නොවසිබිර්ස්ක් වේලාවGනොවසිබිර්ස්ක් සම්මත වේලාවPනොවසිබිර්ස්ක් ග්" + - "\u200dරීෂ්ම වේලාව%ඔම්ස්ක් වේලාව5ඔම්ස්ක් සම්මත වේලාව>ඔම්ස්ක් ග්\u200dරීෂ්" + - "ම වේලාව+පාකිස්ථාන වේලාව;පාකිස්ථාන සම්මත වේලාවAපාකිස්ථාන ග්\u200dරීෂ්ම " + - "කාලය\x1fපලාවු වේලාවBපැපුවා නිව් ගිනීයා වේලාව%පැරගුවේ වේලාව5පැරගුවේ සම්" + - "මත වේලාව;පැරගුවේ ග්\u200dරීෂ්ම කාලය\x1cපේරු වේලාව,පේරු සම්මත වේලාව2පේර" + - "ු ග්\u200dරීෂ්ම කාලය%පිලිපීන වේලාව5පිලිපීන සම්මත වේලාව>පිලිපීන ග්" + - "\u200dරීෂ්ම වේලාව8ෆීනික්ස් දුපත් වේලාවLශාන්ත පියරේ සහ මැකෝලන් වේලාව\\ශාන" + - "්ත පියරේ සහ මැකෝලන් සම්මත වේලාවeශාන්ත පියරේ සහ මැකෝලන් දිවාආලෝක වේලාව." + - "පිට්කෙයාන් වේලාව\x1fපොනපේ වේලාව1ප්යොන්ග්යන් වේලාව+රියුනියන් වේලාව\x22ර" + - "ොතෙරා වේලාව\x22සඛලින් වේලාව2සඛලින් සම්මත වේලාව;සඛලින් ග්\u200dරීෂ්ම වේ" + - "ලාව\x22සැමෝවා වේලාව2සැමෝවා සම්මත වේලාව;සැමෝවා ග්\u200dරීෂ්ම වේලාව(සීෂෙ" + - "ල්ස් වේලාව.සිංගප්පුරු වේලාව5සොලොමන් දූපත් වේලාව2දකුණු ජෝජියා වේලාව%සුර" + - "ිනාම වේලාව\x22ස්යෝවා වේලාව\x22ටාහිටි වේලාව\x22තායිපේ වේලාව2තායිපේ සම්ම" + - "ත වේලාව2තායිපේ දහවල් වේලාව.ටජිකිස්තාන වේලාව(ටොකෙලාවු වේලාව\x1fටොංගා වේ" + - "ලාව/ටොංගා සම්මත වේලාව8ටොංගා ග්\u200dරීෂ්ම වේලාව\x1cචුක් වේලාව:ටර්ක්මෙන" + - "ිස්තාන වේලාවJටර්ක්මෙනිස්තාන සම්මත වේලාවSටර්ක්මෙනිස්තාන ග්\u200dරීෂ්ම ව" + - "ේලාව\x22ටුවාලු වේලාව%උරුගුවේ වේලාව5උරුගුවේ සම්මත වේලාව;උරුගුවේ ග්" + - "\u200dරීෂ්ම කාලය4උස්බෙකිස්තාන වේලාවDඋස්බෙකිස්තාන සම්මත වේලාවMඋස්බෙකිස්තා" + - "න ග්\u200dරීෂ්ම වේලාව\x22වනුආටු වේලාව2වනුආටු සම්මත වේලාව8වනුආටු ගිම්හා" + - "න වේලාව.වෙනිසියුලා වේලාව7ව්ලදිවෝස්ටෝක් වේලාවGව්ලදිවෝස්ටෝක් සම්මත වේලාව" + - "Pව්ලදිවෝස්ටෝක් ග්\u200dරීෂ්ම වේලාව7වොල්ගොග්\u200dරාඩ් වේලාවGවොල්ගොග්" + - "\u200dරාඩ් සම්මත වේලාවPවොල්ගොග්\u200dරාඩ් ග්\u200dරීෂ්ම වේලාව(වොස්ටොක් ව" + - "ේලාව,වේක් දූපත් වේලාව<වැලිස් සහ ෆුටුනා වේලාව+යකුට්ස්ක් වේලාව;යකුට්ස්ක්" + - " සම්මත වේලාවDයකුට්ස්ක් ග්\u200dරීෂ්ම වේලාව:යෙකටෙරින්බර්ග් වේලාවJයෙකටෙරින" + - "්බර්ග් සම්මත වේලාවSයෙකටෙරින්බර්ග් ග්\u200dරීෂ්ම වේලාව" - -var bucket89 string = "" + // Size: 11457 bytes - "\x0fEEEE, d. M. y G\x08januára\x09februára\x05marca\x07apríla\x05mája" + - "\x05júna\x05júla\x07augusta\x09septembra\x08októbra\x08novembra\x08decem" + - "bra\x07nedeľa\x08pondelok\x06utorok\x06streda\x08štvrtok\x06piatok\x06so" + - "bota\x0d1. štvrťrok\x0d2. štvrťrok\x0d3. štvrťrok\x0d4. štvrťrok\x07o po" + - "ln.\x06napol.\x06dopol.\x06popol.\x04nap.\x09o polnoci\x0anapoludnie\x0a" + - "dopoludnia\x0apopoludní\x05poln.\x06polnoc\x08poludnie\x0adopoludnie\x0a" + - "popoludnie\x0cpred Kristom\x18pred naším letopočtom\x0bpo Kristovi\x12ná" + - "šho letopočtu\x08pred Kr.\x0apred n. l.\x06po Kr.\x05n. l.\x09o {0} rok" + - "\x0ao {0} roky\x0ao {0} roka\x0bo {0} rokov\x0epred {0} rokom\x0epred {0" + - "} rokmi\x0dpred {0} roka\x08o {0} r.\x0bpred {0} r.\x0aštvrťrok\x12minul" + - "ý štvrťrok\x10tento štvrťrok\x12budúci štvrťrok\x10o {0} štvrťrok\x11o " + - "{0} štvrťroky\x11o {0} štvrťroka\x12o {0} štvrťrokov\x15pred {0} štvrťro" + - "kom\x15pred {0} štvrťrokmi\x14pred {0} štvrťroka\x11minulý štvrťr.\x0fte" + - "nto štvrťr.\x11budúci štvrťr.\x0fo {0} štvrťr.\x12pred {0} štvrťr.\x06me" + - "siac\x0eminulý mesiac\x0ctento mesiac\x0ebudúci mesiac\x0co {0} mesiac" + - "\x0do {0} mesiace\x0do {0} mesiaca\x0eo {0} mesiacov\x11pred {0} mesiaco" + - "m\x11pred {0} mesiacmi\x10pred {0} mesiaca\x04mes.\x0ao {0} mes.\x0dpred" + - " {0} mes.\x09týždeň\x11minulý týždeň\x0ftento týždeň\x11budúci týždeň" + - "\x0fo {0} týždeň\x0eo {0} týždne\x0fo {0} týždňa\x10o {0} týždňov\x13pre" + - "d {0} týždňom\x14pred {0} týždňami\x12pred {0} týždňa\x12týždeň dňa {0}" + - "\x06týž.\x0co {0} týž.\x0fpred {0} týž.\x0ftýž. dňa {0}\x04deň\x0bpredvč" + - "erom\x06včera\x04dnes\x06zajtra\x08pozajtra\x0ao {0} deň\x09o {0} dni" + - "\x0ao {0} dňa\x0ao {0} dní\x0epred {0} dňom\x0fpred {0} dňami\x0dpred {0" + - "} dňa\x08o {0} d.\x0bpred {0} d.\x0edeň týždňa\x0fminulú nedeľu\x0dtúto " + - "nedeľu\x0fbudúcu nedeľu\x0do {0} nedeľu\x0co {0} nedele\x0do {0} nedieľ" + - "\x11pred {0} nedeľou\x12pred {0} nedeľami\x0fpred {0} nedele\x0cminulú n" + - "ed.\x0atúto ned.\x0cbudúcu ned.\x0ao {0} ned.\x0dpred {0} ned.\x0bminulú" + - " ne.\x09túto ne.\x0bbudúcu ne.\x09o {0} ne.\x0cpred {0} ne.\x10minulý po" + - "ndelok\x0etento pondelok\x10budúci pondelok\x0eo {0} pondelok\x0eo {0} p" + - "ondelky\x0eo {0} pondelka\x0fo {0} pondelkov\x12pred {0} pondelkom\x13pr" + - "ed {0} pondelkami\x11pred {0} pondelka\x0dminulý pond.\x0btento pond." + - "\x0dbudúci pond.\x0bo {0} pond.\x0epred {0} pond.\x0bminulý po.\x09tento" + - " po.\x0bbudúci po.\x09o {0} po.\x0cpred {0} po.\x0eminulý utorok\x0ctent" + - "o utorok\x0ebudúci utorok\x0co {0} utorok\x0co {0} utorky\x0co {0} utork" + - "a\x0do {0} utorkov\x10pred {0} utorkom\x11pred {0} utorkami\x0fpred {0} " + - "utorka\x0dminulý utor.\x0btento utor.\x0dbudúci utor.\x0bo {0} utor.\x0e" + - "pred {0} utor.\x0bminulý ut.\x09tento ut.\x0bbudúci ut.\x09o {0} ut.\x0c" + - "pred {0} ut.\x0eminulú stredu\x0ctúto stredu\x0ebudúcu stredu\x0co {0} s" + - "tredu\x0co {0} stredy\x0co {0} stried\x10pred {0} stredou\x11pred {0} st" + - "redami\x0fpred {0} stredy\x0cminulú str.\x0atúto str.\x0cbudúcu str.\x0a" + - "o {0} str.\x0dpred {0} str.\x0bminulú st.\x09túto st.\x0bbudúcu st.\x09o" + - " {0} st.\x0cpred {0} st.\x10minulý štvrtok\x0etento štvrtok\x10budúci št" + - "vrtok\x0eo {0} štvrtok\x0eo {0} štvrtky\x0eo {0} štvrtka\x0fo {0} štvrtk" + - "ov\x12pred {0} štvrtkom\x13pred {0} štvrtkami\x11pred {0} štvrtka\x0cmin" + - "ulý št.\x0atento št.\x0cbudúci št.\x0ao {0} št.\x0dpred {0} št.\x0eminul" + - "ý piatok\x0ctento piatok\x0ebudúci piatok\x0co {0} piatok\x0co {0} piat" + - "ky\x0co {0} piatka\x0do {0} piatkov\x10pred {0} piatkom\x11pred {0} piat" + - "kami\x0fpred {0} piatka\x0bminulý pi.\x09tento pi.\x0bbudúci pi.\x09o {0" + - "} pi.\x0cpred {0} pi.\x0eminulú sobotu\x0ctúto sobotu\x0ebudúcu sobotu" + - "\x0co {0} sobotu\x0co {0} soboty\x0co {0} sobôt\x10pred {0} sobotou\x11p" + - "red {0} sobotami\x0fpred {0} soboty\x0bminulú so.\x09túto so.\x0bbudúcu " + - "so.\x09o {0} so.\x0cpred {0} so.\x0bčasť dňa\x0ev tejto hodine\x0co {0} " + - "hodinu\x0co {0} hodiny\x0co {0} hodín\x10pred {0} hodinou\x11pred {0} ho" + - "dinami\x07o {0} h\x0apred {0} h\x07minúta\x0fv tejto minúte\x0do {0} min" + - "útu\x0do {0} minúty\x0co {0} minút\x11pred {0} minútou\x12pred {0} minú" + - "tami\x10pred {0} minúty\x09o {0} min\x0cpred {0} min\x0do {0} sekundu" + - "\x0do {0} sekundy\x0do {0} sekúnd\x11pred {0} sekundou\x12pred {0} sekun" + - "dami\x10pred {0} sekundy\x07o {0} s\x0apred {0} s\x13časové pásmo {0}" + - "\x08{0} (+1)\x08{0} (+0)\x1bKoordinovaný svetový čas\x14britský letný ča" + - "s\x18írsky štandardný čas\x0eafganský čas\x13stredoafrický čas\x15východ" + - "oafrický čas\x11juhoafrický čas\x14západoafrický čas!západoafrický štand" + - "ardný čas\x1bzápadoafrický letný čas\x0faljašský čas\x1caljašský štandar" + - "dný čas\x16aljašský letný čas\x0famazonský čas\x1camazonský štandardný č" + - "as\x16amazonský letný čas\x1fseveroamerický centrálny čas,severoamerický" + - " centrálny štandardný čas&severoamerický centrálny letný čas\x1fseveroam" + - "erický východný čas,severoamerický východný štandardný čas&severoamerick" + - "ý východný letný čas\x1cseveroamerický horský čas)severoamerický horský" + - " štandardný čas#severoamerický horský letný čas!severoamerický tichomors" + - "ký čas.severoamerický tichomorský štandardný čas(severoamerický tichomor" + - "ský letný čas\x0fAnadyrský čas\x1cAnadyrský štandardný čas\x16Anadyrský " + - "letný čas\x0dapijský čas\x1aapijský štandardný čas\x14apijský letný čas" + - "\x0darabský čas\x1aarabský štandardný čas\x14arabský letný čas\x11argent" + - "ínsky čas\x1eargentínsky štandardný čas\x18argentínsky letný čas\x18záp" + - "adoargentínsky čas%západoargentínsky štandardný čas\x1fzápadoargentínsky" + - " letný čas\x0earménsky čas\x1barménsky štandardný čas\x15arménsky letný " + - "čas\x10atlantický čas\x1datlantický štandardný čas\x17atlantický letný " + - "čas\x16stredoaustrálsky čas#stredoaustrálsky štandardný čas\x1dstredoau" + - "strálsky letný čas stredozápadný austrálsky čas-stredozápadný austrálsky" + - " štandardný čas'stredozápadný austrálsky letný čas\x18východoaustrálsky " + - "čas%východoaustrálsky štandardný čas\x1fvýchodoaustrálsky letný čas\x17" + - "západoaustrálsky čas$západoaustrálsky štandardný čas\x1ezápadoaustrálsky" + - " letný čas\x15azerbajdžanský čas\x22azerbajdžanský štandardný čas\x1caze" + - "rbajdžanský letný čas\x0dazorský čas\x1aazorský štandardný čas\x14azorsk" + - "ý letný čas\x13bangladéšsky čas bangladéšsky štandardný čas\x1abangladé" + - "šsky letný čas\x0fbhutánsky čas\x11bolívijský čas\x0fbrazílsky čas\x1cb" + - "razílsky štandardný čas\x16brazílsky letný čas\x0fbrunejský čas\x10kapve" + - "rdský čas\x1dkapverdský štandardný čas\x17kapverdský letný čas\x1dchamor" + - "rský štandardný čas\x10chathamský čas\x1dchathamský štandardný čas\x17ch" + - "athamský letný čas\x0dčilský čas\x1ačilský štandardný čas\x14čilský letn" + - "ý čas\x0dčínsky čas\x1ačínsky štandardný čas\x14čínsky letný čas\x13čoj" + - "balsanský čas čojbalsanský štandardný čas\x1ačojbalsanský letný čas\x19č" + - "as Vianočného ostrova\x19čas Kokosových ostrovov\x11kolumbijský čas\x1ek" + - "olumbijský štandardný čas\x18kolumbijský letný čas\x18čas Cookových ostr" + - "ovov%štandardný čas Cookových ostrovov\x1fletný čas Cookových ostrovov" + - "\x0ekubánsky čas\x1bkubánsky štandardný čas\x15kubánsky letný čas\x16čas" + - " Davisovej stanice!čas stanice Dumonta d’Urvillea\x16východotimorský čas" + - "\x1cčas Veľkonočného ostrova)štandardný čas Veľkonočného ostrova#letný č" + - "as Veľkonočného ostrova\x11ekvádorský čas\x14stredoeurópsky čas!stredoeu" + - "rópsky štandardný čas\x1bstredoeurópsky letný čas\x16východoeurópsky čas" + - "#východoeurópsky štandardný čas\x1dvýchodoeurópsky letný čas\x0cminský č" + - "as\x15západoeurópsky čas\x22západoeurópsky štandardný čas\x1czápadoeuróp" + - "sky letný čas\x11falklandský čas\x1efalklandský štandardný čas\x18falkla" + - "ndský letný čas\x10fidžijský čas\x1dfidžijský štandardný čas\x17fidžijsk" + - "ý letný čas\x19francúzskoguyanský čas5čas Francúzskych južných a antark" + - "tických území\x10galapágsky čas\x10gambierský čas\x0fgruzínsky čas\x1cgr" + - "uzínsky štandardný čas\x16gruzínsky letný čas\x1bčas Gilbertových ostrov" + - "ov\x12greenwichský čas\x15východogrónsky čas\x22východogrónsky štandardn" + - "ý čas\x1cvýchodogrónsky letný čas\x14západogrónsky čas!západogrónsky št" + - "andardný čas\x1bzápadogrónsky letný čas$štandardný čas Perzského zálivu" + - "\x0eguyanský čas\x17havajsko-aleutský čas$havajsko-aleutský štandardný č" + - "as\x1ehavajsko-aleutský letný čas\x10hongkonský čas\x1dhongkonský štanda" + - "rdný čas\x17hongkonský letný čas\x0echovdský čas\x1bchovdský štandardný " + - "čas\x15chovdský letný čas\x0dindický čas\x15indickooceánsky čas\x11indo" + - "čínsky čas\x16stredoindonézsky čas\x18východoindonézsky čas\x17západoin" + - "donézsky čas\x0diránsky čas\x1airánsky štandardný čas\x14iránsky letný č" + - "as\x0eirkutský čas\x1birkutský štandardný čas\x15irkutský letný čas\x0fi" + - "zraelský čas\x1cizraelský štandardný čas\x16izraelský letný čas\x0ejapon" + - "ský čas\x1bjaponský štandardný čas\x15japonský letný čas\x1ePetropavlovs" + - "k-Kamčatský čas+Petropavlovsk-Kamčatský štandardný čas)Petropavlovsk-Kam" + - "čatskijský letný čas\x1bvýchodokazachstanský čas\x1azápadokazachstanský" + - " čas\x0fkórejský čas\x1ckórejský štandardný čas\x16kórejský letný čas" + - "\x0fkosrajský čas\x12krasnojarský čas\x1fkrasnojarský štandardný čas\x19" + - "krasnojarský letný čas\x0fkirgizský čas\x1bčas Rovníkových ostrovov\x17č" + - "as ostrova lorda Howa$štandardný čas ostrova lorda Howa\x1eletný čas ost" + - "rova lorda Howa\x16čas ostrova Macquarie\x10magadanský čas\x1dmagadanský" + - " štandardný čas\x17magadanský letný čas\x11malajzijský čas\x0fmaldivský " + - "čas\x0fmarkézsky čas\x1cčas Marshallových ostrovov\x12maurícijský čas" + - "\x1fmaurícijský štandardný čas\x19maurícijský letný čas\x17čas Mawsonove" + - "j stanice\x1dseverozápadný mexický čas*severozápadný mexický štandardný " + - "čas$severozápadný mexický letný čas\x1amexický tichomorský čas'mexický " + - "tichomorský štandardný čas!mexický tichomorský letný čas\x13ulanbátarský" + - " čas ulanbátarský štandardný čas\x1aulanbátarský letný čas\x0fmoskovský " + - "čas\x1cmoskovský štandardný čas\x16moskovský letný čas\x10mjanmarský ča" + - "s\x0enauruský čas\x0enepálsky čas\x14novokaledónsky čas!novokaledónsky š" + - "tandardný čas\x1bnovokaledónsky letný čas\x14novozélandský čas!novozélan" + - "dský štandardný čas\x1bnovozélandský letný čas\x15newfoundlandský čas" + - "\x22newfoundlandský štandardný čas\x1cnewfoundlandský letný čas\x0eniuej" + - "ský čas\x0fnorfolský čas$čas súostrovia Fernando de Noronha1štandardný č" + - "as súostrovia Fernando de Noronha+letný čas súostrovia Fernando de Noron" + - "ha\x12novosibirský čas\x1fnovosibirský štandardný čas\x19novosibirský le" + - "tný čas\x0bomský čas\x18omský štandardný čas\x12omský letný čas\x11pakis" + - "tanský čas\x1epakistanský štandardný čas\x18pakistanský letný čas\x0epal" + - "auský čas\x17čas Papuy-Novej Guiney\x11paraguajský čas\x1eparaguajský št" + - "andardný čas\x18paraguajský letný čas\x0fperuánsky čas\x1cperuánsky štan" + - "dardný čas\x16peruánsky letný čas\x10filipínsky čas\x1dfilipínsky štanda" + - "rdný čas\x17filipínsky letný čas\x1ačas Fénixových ostrovov\x18pierre-mi" + - "quelonský čas%pierre-miquelonský štandardný čas\x1fpierre-miquelonský le" + - "tný čas\x1cčas Pitcairnových ostrovov\x0eponapský čas\x13pchjongjanský č" + - "as\x11réunionský čas\x17čas Rotherovej stanice\x11sachalinský čas\x1esac" + - "halinský štandardný čas\x18sachalinský letný čas\x0eSamarský čas\x1bSama" + - "rský štandardný čas\x15Samarský letný čas\x0esamojský čas\x1bsamojský št" + - "andardný čas\x15samojský letný čas\x10seychelský čas\x1esingapurský štan" + - "dardný čas\x1dčas Šalamúnových ostrovov\x14čas Južnej Georgie\x10surinam" + - "ský čas\x13čas stanice Šówa\x0etahitský čas\x11tchajpejský čas\x1etchajp" + - "ejský štandardný čas\x18tchajpejský letný čas\x0ftadžický čas\x10tokelau" + - "ský čas\x0etonžský čas\x1btonžský štandardný čas\x15tonžský letný čas" + - "\x0echuukský čas\x10turkménsky čas\x1dturkménsky štandardný čas\x17turkm" + - "énsky letný čas\x0etuvalský čas\x10uruguajský čas\x1duruguajský štandar" + - "dný čas\x17uruguajský letný čas\x0duzbecký čas\x1auzbecký štandardný čas" + - "\x14uzbecký letný čas\x0fvanuatský čas\x1cvanuatský štandardný čas\x16va" + - "nuatský letný čas\x11venezuelský čas\x13vladivostocký čas vladivostocký " + - "štandardný čas\x1avladivostocký letný čas\x12volgogradský čas\x1fvolgog" + - "radský štandardný čas\x19volgogradský letný čas\x13čas stanice Vostok" + - "\x11čas ostrova Wake\x1dčas ostrovov Wallis a Futuna\x0ejakutský čas\x1b" + - "jakutský štandardný čas\x15jakutský letný čas\x15jekaterinburský čas\x22" + - "jekaterinburský štandardný čas\x1cjekaterinburský letný čas" - -var bucket90 string = "" + // Size: 10850 bytes - "\x0cdd. MMMM y G\x0fd. MM. yy GGGGG\x07nedelja\x0aponedeljek\x05torek" + - "\x05sreda\x08četrtek\x05petek\x06sobota\x081. čet.\x082. čet.\x083. čet." + - "\x084. čet.\x0e1. četrtletje\x0e2. četrtletje\x0e3. četrtletje\x0e4. čet" + - "rtletje\x06opoln.\x06opold.\x05zjut.\x06zveč.\x04noč\x0524.00\x0512.00" + - "\x02zj\x02zv\x09opolnoči\x07opoldne\x07zjutraj\x08dopoldan\x08popoldan" + - "\x07zvečer\x07ponoči\x05pold.\x04jut.\x07polnoč\x08dopoldne\x06poldne" + - "\x08popoldne\x0epred Kristusom\x14pred našim štetjem\x0bpo Kristusu\x11p" + - "o našem štetju\x0bpr. n. št.\x0apo n. št.\x10EEEE, dd. MMMM y\x0add. MMM" + - "M y\x09d. MM. yy\x04leto\x04lani\x05letos\x0enaslednje leto\x0dčez {0} l" + - "eto\x0dčez {0} leti\x0dčez {0} leta\x0cčez {0} let\x0epred {0} letom\x0f" + - "pred {0} letoma\x0dpred {0} leti\x0bčetrtletje\x12zadnje četrtletje\x0et" + - "o četrtletje\x15naslednje četrtletje\x14čez {0} četrtletje\x14čez {0} če" + - "trtletji\x14čez {0} četrtletja\x14čez {0} četrtletij\x15pred {0} četrtle" + - "tjem\x16pred {0} četrtletjema\x14pred {0} četrtletji\x08četrtl.\x11čez {" + - "0} četrtl.\x11pred {0} četrtl.\x06četr.\x0fčez {0} četr.\x0fpred {0} čet" + - "r.\x05mesec\x0fprejšnji mesec\x08ta mesec\x0fnaslednji mesec\x0ečez {0} " + - "mesec\x0fčez {0} meseca\x0fčez {0} mesece\x10čez {0} mesecev\x10pred {0}" + - " mesecem\x11pred {0} mesecema\x0fpred {0} meseci\x0dčez {0} mes.\x05tede" + - "n\x0fprejšnji teden\x08ta teden\x0fnaslednji teden\x0ečez {0} teden\x0eč" + - "ez {0} tedna\x0ečez {0} tedne\x0fčez {0} tednov\x0fpred {0} tednom\x10pr" + - "ed {0} tednoma\x0epred {0} tedni\x0bv tednu {0}\x04ted.\x0dčez {0} ted." + - "\x0dpred {0} ted.\x11predvčerajšnjim\x07včeraj\x05danes\x05jutri\x0dpoju" + - "trišnjem\x0cčez {0} dan\x0ečez {0} dneva\x0cčez {0} dni\x0fpred {0} dnev" + - "om\x10pred {0} dnevoma\x0epred {0} dnevi\x0bdan v tednu\x11prejšnjo nede" + - "ljo\x0ato nedeljo\x11naslednjo nedeljo\x10čez {0} nedeljo\x10čez {0} ned" + - "elji\x10čez {0} nedelje\x0fčez {0} nedelj\x10pred {0} nedeljo\x12pred {0" + - "} nedeljama\x12pred {0} nedeljami\x0eprejšnjo ned.\x07to ned.\x0enasledn" + - "jo ned.\x0cprejš. ned.\x0anasl. ned.\x14prejšnji ponedeljek\x0dta ponede" + - "ljek\x14naslednji ponedeljek\x13čez {0} ponedeljek\x13čez {0} ponedeljka" + - "\x13čez {0} ponedeljke\x14čez {0} ponedeljkov\x14pred {0} ponedeljkom" + - "\x15pred {0} ponedeljkoma\x13pred {0} ponedeljki\x0eprejšnji pon.\x07ta " + - "pon.\x0enaslednji pon.\x0cprejš. pon.\x0anasl. pon.\x0fprejšnji torek" + - "\x08ta torek\x0fnaslednji torek\x0ečez {0} torek\x0ečez {0} torka\x0ečez" + - " {0} torke\x0fčez {0} torkov\x0fpred {0} torkom\x10pred {0} torkoma\x0ep" + - "red {0} torki\x0eprejšnji tor.\x07ta tor.\x0enaslednji tor.\x0cprejš. to" + - "r.\x0anasl. tor.\x0fprejšnjo sredo\x08to sredo\x0fnaslednjo sredo\x0ečez" + - " {0} sredo\x0ečez {0} sredi\x0ečez {0} srede\x0dčez {0} sred\x0epred {0}" + - " sredo\x10pred {0} sredama\x10pred {0} sredami\x0eprejšnjo sre.\x07to sr" + - "e.\x0enaslednjo sre.\x0cprejš. sre.\x0anasl. sre.\x12prejšnji četrtek" + - "\x0bta četrtek\x12naslednji četrtek\x11čez {0} četrtek\x11čez {0} četrtk" + - "a\x11čez {0} četrtke\x12čez {0} četrtkov\x12pred {0} četrtkom\x13pred {0" + - "} četrtkoma\x11pred {0} četrtki\x0fprejšnji čet.\x08ta čet.\x0fnaslednji" + - " čet.\x0dprejš. čet.\x0bnasl. čet.\x0fprejšnji petek\x08ta petek\x0fnasl" + - "ednji petek\x0ečez {0} petek\x0ečez {0} petka\x0ečez {0} petke\x0fčez {0" + - "} petkov\x0fpred {0} petkom\x10pred {0} petkoma\x0epred {0} petki\x0epre" + - "jšnji pet.\x07ta pet.\x0enaslednji pet.\x0cprejš. pet.\x0anasl. pet.\x10" + - "prejšnjo soboto\x09to soboto\x10naslednjo soboto\x0fčez {0} soboto\x0fče" + - "z {0} soboti\x0fčez {0} sobote\x0ečez {0} sobot\x0fpred {0} soboto\x11pr" + - "ed {0} sobotama\x11pred {0} sobotami\x0eprejšnjo sob.\x07to sob.\x0enasl" + - "ednjo sob.\x0cprejš. sob.\x0anasl. sob.\x07dop/pop\x09v tej uri\x0cčez {" + - "0} uro\x0cčez {0} uri\x0cčez {0} ure\x0bčez {0} ur\x0cpred {0} uro\x0epr" + - "ed {0} urama\x0epred {0} urami\x0ačez {0} h\x09to minuto\x0fčez {0} minu" + - "to\x0fčez {0} minuti\x0fčez {0} minute\x0ečez {0} minut\x0fpred {0} minu" + - "to\x11pred {0} minutama\x11pred {0} minutami\x0dčez {0} min.\x0dpred {0}" + - " min.\x0cčez {0} min\x04zdaj\x10čez {0} sekundo\x10čez {0} sekundi\x10če" + - "z {0} sekunde\x0fčez {0} sekund\x10pred {0} sekundo\x12pred {0} sekundam" + - "a\x12pred {0} sekundami\x0ačez {0} s\x0cčasovni pas\x08{0} čas\x10{0} po" + - "letni čas\x13{0} standardni čas\x1dUniverzalni koordinirani čas\x16brita" + - "nski poletni čas\x15irski standardni čas\x12Afganistanski čas\x16Central" + - "noafriški čas\x14Vzhodnoafriški čas\x13Južnoafriški čas\x14Zahodnoafrišk" + - "i čas\x1fZahodnoafriški standardni čas\x1cZahodnoafriški poletni čas\x0d" + - "Aljaški čas\x18Aljaški standardni čas\x15Aljaški poletni čas\x0eAmazonsk" + - "i čas\x19Amazonski standardni čas\x16Amazonski poletni čas\x0eCentralni " + - "čas\x19Centralni standardni čas\x16Centralni poletni čas\x0cVzhodni čas" + - "\x17Vzhodni standardni čas\x14Vzhodni poletni čas\x0bGorski čas\x16Gorsk" + - "i standardni čas\x13Gorski poletni čas\x0fPacifiški čas\x1aPacifiški sta" + - "ndardni čas\x17Pacifiški poletni čas\x0eAnadirski čas\x19Anadirski stand" + - "ardni čas\x16Anadirski poletni čas\x0aČas: Apia\x15Standardni čas: Apia" + - "\x12Poletni čas: Apia\x0cArabski čas\x17Arabski standardni čas\x14Arabsk" + - "i poletni čas\x10Argentinski čas\x1bArgentinski standardni čas\x18Argent" + - "inski poletni čas\x18Argentinski zahodni čas#Argentinski zahodni standar" + - "dni čas Argentinski zahodni poletni čas\x0dArmenski čas\x18Armenski stan" + - "dardni čas\x15Armenski poletni čas\x0eAtlantski čas\x19Atlantski standar" + - "dni čas\x16Atlantski poletni čas\x19Avstralski centralni čas$Avstralski " + - "centralni standardni čas!Avstralski centralni poletni čas!Avstralski cen" + - "tralni zahodni čas,Avstralski centralni zahodni standardni čas)Avstralsk" + - "i centralni zahodni poletni čas\x17Avstralski vzhodni čas\x22Avstralski " + - "vzhodni standardni čas\x1fAvstralski vzhodni poletni čas\x17Avstralski z" + - "ahodni čas\x22Avstralski zahodni standardni čas\x1fAvstralski zahodni po" + - "letni čas\x14Azerbajdžanski čas\x1fAzerbajdžanski standardni čas\x1cAzer" + - "bajdžanski poletni čas\x0cAzorski čas\x17Azorski standardni čas\x14Azors" + - "ki poletni čas\x11Bangladeški čas\x1cBangladeški standardni čas\x19Bangl" + - "adeški poletni čas\x0dButanski čas\x0fBolivijski čas\x0eBrasilski čas" + - "\x19Brasilski standardni čas\x16Brasilski poletni čas\x0eBrunejski čas" + - "\x0fKapverdski čas\x1aKapverdski standardni čas\x17Kapverdski poletni ča" + - "s\x19Čamorski standardni čas\x0eČatamski čas\x19Čatamski standardni čas" + - "\x16Čatamski poletni čas\x0cČilski čas\x17Čilski standardni čas\x14Čilsk" + - "i poletni čas\x0dKitajski čas\x18Kitajski standardni čas\x15Kitajski pol" + - "etni čas\x12Čojbalsanski čas\x1dČojbalsanski standardni čas\x1aČojbalsan" + - "ski poletni čas\x15Božičnootoški čas\x14Čas: Kokosovi otoki\x10Kolumbijs" + - "ki čas\x1bKolumbijski standardni čas\x18Kolumbijski poletni čas\x13Cooko" + - "vootoški čas\x1eCookovootoški standardni čas\x22Cookovootoški srednjepol" + - "etni čas\x0dKubanski čas\x18Kubanski standardni čas\x15Kubanski poletni " + - "čas\x0bČas: Davis\x18Čas: Dumont-d’Urville\x14Vzhodnotimorski čas\x17Ča" + - "s: Velikonočni otok\x22Standardni čas: Velikonočni otok\x1fPoletni čas: " + - "Velikonočni otok\x0fEkvadorski čas\x14Srednjeevropski čas\x1fSrednjeevro" + - "pski standardni čas\x1cSrednjeevropski poletni čas\x14Vzhodnoevropski ča" + - "s\x1fVzhodnoevropski standardni čas\x1cVzhodnoevropski poletni čas\x1cDo" + - "datni vzhodnoevropski čas\x14Zahodnoevropski čas\x1fZahodnoevropski stan" + - "dardni čas\x1cZahodnoevropski poletni čas\x19Čas: Falklandsko otočje$Sta" + - "ndardni čas: Falklandsko otočje!Poletni čas: Falklandsko otočje\x0fFidži" + - "jski čas\x1aFidžijski standardni čas\x17Fidžijski poletni čas\x17Čas: Fr" + - "ancoska Gvajana%Francoski južni in antarktični čas\x0fGalapaški čas\x0fG" + - "ambierski čas\x0eGruzijski čas\x19Gruzijski standardni čas\x16Gruzijski " + - "poletni čas\x16Čas: Gilbertovi otoki\x18Greenwiški srednji čas\x17Vzhodn" + - "ogrenlandski čas\x22Vzhodnogrenlandski standardni čas\x1fVzhodnogrenland" + - "ski poletni čas\x17Zahodnogrenlandski čas\x22Zahodnogrenlandski standard" + - "ni čas\x1fZahodnogrenlandski poletni čas\x18Zalivski standardni čas\x0eG" + - "vajanski čas\x16Havajski aleutski čas!Havajski aleutski standardni čas" + - "\x1eHavajski aleutski poletni čas\x10Hongkonški čas\x1bHongkonški standa" + - "rdni čas\x18Hongkonški poletni čas\x0cHovdski čas\x17Hovdski standardni " + - "čas\x14Hovdski poletni čas\x18Indijski standardni čas\x15Indijskooceans" + - "ki čas\x11Indokitajski čas\x1aIndonezijski osrednji čas\x19Indonezijski " + - "vzhodni čas\x19Indonezijski zahodni čas\x0cIranski čas\x17Iranski standa" + - "rdni čas\x14Iranski poletni čas\x0dIrkutski čas\x18Irkutski standardni č" + - "as\x15Irkutski poletni čas\x0eIzraelski čas\x19Izraelski standardni čas" + - "\x16Izraelski poletni čas\x0dJaponski čas\x18Japonski standardni čas\x15" + - "Japonski poletni čas\x1dPetropavlovsk-Kamčatski čas(Petropavlovsk-Kamčat" + - "ski standardni čas%Petropavlovsk-Kamčatski poletni čas\x19Vzhodni kazahs" + - "tanski čas\x19Zahodni kazahstanski čas\x0dKorejski čas\x18Korejski stand" + - "ardni čas\x15Korejski poletni čas\x0fKosrajški čas\x11Krasnojarski čas" + - "\x1cKrasnojarski standardni čas\x19Krasnojarski poletni čas\x13Kirgizist" + - "anski čas\x16Ekvatorski otoki: Čas\x14Čas otoka Lord Howe\x1fStandardni " + - "čas otoka Lord Howe\x1cPoletni čas otoka Lord Howe\x11Macquarieski čas" + - "\x0fMagadanski čas\x1aMagadanski standardni čas\x17Magadanski poletni ča" + - "s\x0fMalezijski čas\x0eMaldivski čas\x14Čas: Markizni otoki\x17Čas: Mars" + - "hallovi otoki\x10Mauricijski čas\x1bMauricijski standardni čas\x18Mauric" + - "ijski poletni čas\x0eMawsonski čas\x1bmehiški severozahodni čas&mehiški " + - "severozahodni standardni čas#mehiški severozahodni poletni čas\x18mehišk" + - "i pacifiški čas#mehiški pacifiški standardni čas mehiški pacifiški polet" + - "ni čas\x11Ulanbatorski čas\x1cUlanbatorski standardni čas\x19Ulanbatorsk" + - "i poletni čas\x0eMoskovski čas\x19Moskovski standardni čas\x16Moskovski " + - "poletni čas\x0fMjanmarski čas\x0eNaurujski čas\x0dNepalski čas\x15Novoka" + - "ledonijski čas Novokaledonijski standardni čas\x1dNovokaledonijski polet" + - "ni čas\x12Novozelandski čas\x1dNovozelandski standardni čas\x1aNovozelan" + - "dski poletni čas\x14Novofundlandski čas\x1fNovofundlandski standardni ča" + - "s\x1cNovofundlandski poletni čas\x0dNiuejski čas\x16Čas: Norfolški otoki" + - "\x1aFernando de Noronški čas%Fernando de Noronški standardni čas\x22Fern" + - "ando de Noronški poletni čas\x11Novosibirski čas\x1cNovosibirski standar" + - "dni čas\x19Novosibirski poletni čas\x0aOmski čas\x15Omski standardni čas" + - "\x12Omski poletni čas\x10Pakistanski čas\x1bPakistanski standardni čas" + - "\x18Pakistanski poletni čas\x0dPalavski čas\x0ePapuanski čas\x10Paragvaj" + - "ski čas\x1bParagvajski standardni čas\x18Paragvajski poletni čas\x0dPeru" + - "jski čas\x18Perujski standardni čas\x15Perujski poletni čas\x0fFilipinsk" + - "i čas\x1aFilipinski standardni čas\x17Filipinski poletni čas\x14Čas: Oto" + - "čje Feniks\x1eČas: Saint Pierre in Miquelon)Standardni čas: Saint Pierr" + - "e in Miquelon&Poletni čas: Saint Pierre in Miquelon\x10Pitcairnski čas" + - "\x0dPonapski čas\x11Pjongjanški čas\x0fReunionski čas\x0eRotherski čas" + - "\x0fSahalinski čas\x1aSahalinski standardni čas\x17Sahalinski poletni ča" + - "s\x0dSamarski čas\x18Samarski standardni čas\x15Samarski poletni čas\x0e" + - "Samoanski čas\x19Samoanski standardni čas\x16Samoanski poletni čas\x0fSe" + - "jšelski čas\x1bSingapurski standardni čas\x16Salomonovootoški čas\x15Juž" + - "nogeorgijski čas\x0fSurinamski čas\x0bČas: Syowa\x0fTahitijski čas\x0eTa" + - "jpejski čas\x19Tajpejski standardni čas\x16Tajpejski poletni čas\x14Tadž" + - "ikistanski čas\x0fTokelavski čas\x0eTongovski čas\x19Tongovski standardn" + - "i čas\x16Tongovski poletni čas\x10Čas: Otok Chuuk\x14Turkmenistanski čas" + - "\x1fTurkmenistanski standardni čas\x1cTurkmenistanski poletni čas\x0fTuv" + - "alujski čas\x0fUrugvajski čas\x1aUrugvajski standardni čas\x17Urugvajski" + - " poletni čas\x12Uzbekistanski čas\x1dUzbekistanski standardni čas\x1aUzb" + - "ekistanski poletni čas\x10Vanuatujski čas\x1bVanuatujski standardni čas" + - "\x18Vanuatujski poletni čas\x10Venezuelski čas\x13Vladivostoški čas\x1eV" + - "ladivostoški standardni čas\x1bVladivostoški poletni čas\x11Volgograjski" + - " čas\x1cVolgograjski standardni čas\x19Volgograjski poletni čas\x0evosto" + - "ški čas\x0fČas: Otok Wake\x16Čas: Wallis in Futuna\x0dJakutski čas\x18J" + - "akutski standardni čas\x15Jakutski poletni čas\x15Jekaterinburški čas Je" + - "katerinburški standardni čas\x1dJekaterinburški poletni čas\x0aponedelja" + - "k\x06utorak\x09četvrtak\x05petak\x06subota" - -var bucket91 string = "" + // Size: 12727 bytes - "\x10cccc MMMM d. y G\x0bMMMM d. y G\x0d{1} 'tme' {0}\x05uđiv\x06kuovâ" + - "\x08njuhčâ\x08cuáŋui\x05vyesi\x04kesi\x06syeini\x05porge\x08čohčâ\x08roo" + - "vvâd\x07skammâ\x07juovlâ\x11uđđâivemáánu\x0dkuovâmáánu\x0fnjuhčâmáánu" + - "\x0fcuáŋuimáánu\x0cvyesimáánu\x0bkesimáánu\x0dsyeinimáánu\x0cporgemáánu" + - "\x0fčohčâmáánu\x0froovvâdmáánu\x0eskammâmáánu\x0ejuovlâmáánu\x03pas\x03v" + - "uo\x03maj\x03kos\x03tuo\x04vás\x04láv\x02pa\x02vu\x02ma\x02ko\x02tu\x03v" + - "á\x03lá\x0apasepeeivi\x0bvuossaargâ\x0bmajebaargâ\x07koskoho\x0atuorâst" + - "uv\x0dvástuppeeivi\x09lávurduv\x09pasepeivi\x0avuossargâ\x0amajebargâ" + - "\x08koskokko\x0btuorâstâh\x0cvástuppeivi\x0alávurdâh\x0a1. niälj.\x0a2. " + - "niälj.\x0a3. niälj.\x0a4. niälj.\x0f1. niäljádâs\x0f2. niäljádâs\x0f3. n" + - "iäljádâs\x0f4. niäljádâs\x03ep.\x16Ovdil Kristus šoddâm\x1eOvdil ääigire" + - "kinistem älgim\x16maŋa Kristus šoddâm\x1emaŋa ääigirekinistem älgim\x04o" + - "Kr.\x06oää.\x04mKr.\x06mää.\x0fcccc, MMMM d. y\x09MMMM d. y\x08MMM d. y" + - "\x03Ndi\x03Kuk\x03Kur\x03Kub\x03Chv\x03Chk\x03Chg\x03Nya\x03Gun\x03Gum" + - "\x03Mbu\x03Zvi\x05Ndira\x07Kukadzi\x06Kurume\x08Kubvumbi\x08Chivabvu\x07" + - "Chikumi\x0aChikunguru\x0bNyamavhuvhu\x07Gunyana\x08Gumiguru\x06Mbudzi" + - "\x05Zvita\x03Svo\x03Muv\x03Chp\x03Cht\x03Chn\x03Chs\x03Mug\x06Svondo\x07" + - "Muvhuro\x07Chipiri\x07Chitatu\x05China\x08Chishanu\x08Mugovera\x11Kristo" + - " asati auya\x13mugore ramambo vedu\x06Mukore\x04Gore\x05Vhiki\x04Zuva" + - "\x06Nezuro\x05Nhasi\x08Mangwana\x0cZuva revhiki\x05Nguva\x12EEEE, MMMM d" + - "d, y G\x03Kob\x03Lab\x03Sad\x03Afr\x03Sha\x03Lix\x03Tod\x03Sid\x03Sag" + - "\x03Tob\x03KIT\x03LIT\x0dBisha Koobaad\x0cBisha Labaad\x0fBisha Saddexaa" + - "d\x0cBisha Afraad\x0dBisha Shanaad\x0cBisha Lixaad\x0eBisha Todobaad\x0f" + - "Bisha Sideedaad\x0fBisha Sagaalaad\x0dBisha Tobnaad\x15Bisha Kow iyo Tob" + - "naad\x16Bisha Laba iyo Tobnaad\x03Axd\x03Isn\x03Tal\x03Arb\x03Kha\x03Jim" + - "\x03Sab\x04Axad\x06Isniin\x07Talaado\x06Arbaco\x07Khamiis\x05Jimco\x05Sa" + - "bti\x0bRubaca 1aad\x0bRubaca 2aad\x0bRubaca 3aad\x0bRubaca 4aad\x03gn." + - "\x02CK\x02CD\x10EEEE, MMMM dd, y\x06Shalay\x06Maanta\x05Berri\x11Waqtiga" + - " Kolambiya!Waqtiyada Caadiga ah ee kolambiya\x1bWaqtiyada Xagaaga Kolamb" + - "iya\x11Waqtiga Galabagos\x0fEEEE, d MMM y G\x0d{1} 'në' {0}\x05janar\x06" + - "shkurt\x04mars\x05prill\x03maj\x07qershor\x06korrik\x05gusht\x07shtator" + - "\x05tetor\x07nëntor\x07dhjetor\x05Janar\x06Shkurt\x04Mars\x05Prill\x03Ma" + - "j\x07Qershor\x06Korrik\x05Gusht\x07Shtator\x05Tetor\x07Nëntor\x07Dhjetor" + - "\x03Die\x04Hën\x03Mar\x04Mër\x03Enj\x03Pre\x03Sht\x06e diel\x08e hënë" + - "\x08e martë\x0be mërkurë\x07e enjte\x08e premte\x09e shtunë\x06E diel" + - "\x08E hënë\x08E martë\x0bE mërkurë\x07E enjte\x08E premte\x09E shtunë" + - "\x0btremujori I\x0ctremujori II\x0dtremujori III\x0ctremujori IV\x11trem" + - "ujori i parë\x11tremujori i dytë\x12tremujori i tretë\x13tremujori i kat" + - "ërt\x0bTremujori I\x0cTremujori II\x0dTremujori III\x0cTremujori IV\x11" + - "Tremujori i 1-rë\x11Tremujori i 2-të\x11Tremujori i 3-të\x0fTremujori i " + - "4-t\x0be mesnatës\x0be paradites\x0be mesditës\x0ae pasdites\x0ce mëngje" + - "sit\x0be mbrëmjes\x08e natës\x08mesnatë\x08paradite\x08mesditë\x07pasdit" + - "e\x08mëngjes\x08mbrëmje\x05natë\x0dpara Krishtit\x10para erës sonë\x0dmb" + - "as Krishtit\x0berës sonë\x04p.K.\x06p.e.s.\x05mb.K.\x04e.s.\x0fh:mm:ss a" + - ", zzzz\x0ch:mm:ss a, z\x04erë\x03vit\x0evitin e kaluar\x0akëtë vit\x11vi" + - "tin e ardhshëm\x0cpas {0} viti\x10pas {0} vjetësh\x11{0} vit më parë\x12" + - "{0} vjet më parë\x08tremujor\x13tremujorin e kaluar\x0fkëtë tremujor\x16" + - "tremujorin e ardhshëm\x11pas {0} tremujori\x14pas {0} tremujorësh\x16{0}" + - " tremujor më parë\x18{0} tremujorë më parë\x04muaj\x0fmuajin e kaluar" + - "\x0bkëtë muaj\x12muajin e ardhshëm\x0dpas {0} muaji\x0epas {0} muajsh" + - "\x12{0} muaj më parë\x05javë\x0fjavën e kaluar\x0ckëtë javë\x11javën e a" + - "rdhshme\x0cpas {0} jave\x0fpas {0} javësh\x13{0} javë më parë\x0ajava e " + - "{0}\x05ditë\x03dje\x03sot\x06nesër\x0cpas {0} dite\x0fpas {0} ditësh\x13" + - "{0} ditë më parë\x0editë e javës\x14të dielën e kaluar\x0fkëtë të diel" + - "\x16të dielën e ardhshme\x11pas {0} të diele\x13pas {0} të dielash\x17{0" + - "} të diele më parë\x19{0} të dielash më parë\x14të hënën e kaluar\x11kët" + - "ë të hënë\x16të hënën e ardhshme\x11pas {0} të hëne\x13pas {0} të hënas" + - "h\x17{0} të hëne më parë\x19{0} të hënash më parë\x14të martën e kaluar" + - "\x11këtë të martë\x16të martën e ardhshme\x11pas {0} të marte\x13pas {0}" + - " të martash\x17{0} të marte më parë\x19{0} të martash më parë\x17të mërk" + - "urën e kaluar\x14këtë të mërkurë\x19të mërkurën e ardhshme\x14pas {0} të" + - " mërkure\x16pas {0} të mërkurash\x1a{0} të mërkure më parë\x1c{0} të mër" + - "kurash më parë\x13të enjten e kaluar\x10këtë të enjte\x15të enjten e ard" + - "hshme\x11pas {0} të enjte\x13pas {0} të enjtesh\x17{0} të enjte më parë" + - "\x19{0} të enjtesh më parë\x14të premten e kaluar\x11këtë të premte\x16t" + - "ë premten e ardhshme\x12pas {0} të premte\x14pas {0} të premtesh\x18{0}" + - " të premte më parë\x1a{0} të premtesh më parë\x15të shtunën e kaluar\x12" + - "këtë të shtunë\x17të shtunën e ardhshme\x12pas {0} të shtune\x14pas {0} " + - "të shtunash\x18{0} të shtune më parë\x1a{0} të shtunash më parë\x10parad" + - "ite/pasdite\x04orë\x0bkëtë orë\x0bpas {0} ore\x0epas {0} orësh\x12{0} or" + - "ë më parë\x07minutë\x0ekëtë minutë\x0epas {0} minute\x10pas {0} minutas" + - "h\x15{0} minutë më parë\x14{0} minuta më parë\x0cpas {0} min.\x12{0} min" + - ". më parë\x08sekondë\x04tani\x0fpas {0} sekonde\x11pas {0} sekondash\x16" + - "{0} sekondë më parë\x15{0} sekonda më parë\x0cpas {0} sek.\x12{0} sek. m" + - "ë parë\x0abrezi orar\x08Ora: {0}\x0fOra verore: {0}\x12Ora standarde: {" + - "0}\x1bOra universale e koordinuar\x14Ora verore britanike\x1aOra stranda" + - "rde e Irlandës\x12Ora e Ejkrit [Ako]\x1cOra standarde e Ejkrit [Ako]\x19" + - "Ora verore e Ejkrit [Ako]\x12Ora e Afganistanit\x17Ora e Afrikës Qendror" + - "e\x16Ora e Afrikës Lindore\x1fOra standarde e Afrikës Jugore\x1bOra e Af" + - "rikës Perëndimore%Ora standarde e Afrikës Perëndimore\x22Ora verore e Af" + - "rikës Perëndimore\x0eOra e Alaskës\x18Ora standarde e Alaskës\x16Ora ver" + - "ore e Alsaskës\x0dOra e Almatit\x17Ora standarde e Almatit\x14Ora verore" + - " e Almatit\x0fOra e Amazonës\x19Ora standarde e Amazonës\x16Ora verore e" + - " Amazonës\x17Ora e SHBA-së Qendrore!Ora standarde e SHBA-së Qendrore\x1e" + - "Ora verore e SHBA-së Qendrore\x16Ora e SHBA-së Lindore Ora standarde e S" + - "HBA-së Lindore\x1dOra verore e SHBA-së Lindore\x1cOra amerikane e Brezit" + - " Malor&Ora standarde amerikane e Brezit Malor#Ora verore amerikane e Bre" + - "zit Malor%Ora amerikane e Bregut të Paqësorit/Ora standarde amerikane e " + - "Bregut të Paqësorit,Ora verore amerikane e Bregut të Paqësorit\x0eOra e " + - "Anadirit\x18Ora standarde e Anadirit\x15Ora verore e Anadirit\x0bOra e A" + - "pias\x15Ora standarde e Apias\x12Ora verore e Apias\x0cOra e Aktaut\x16O" + - "ra standarde e Aktaut\x13Ora verore e Aktaut\x0dOra e Aktobit\x17Ora sta" + - "ndarde e Aktobit\x14Ora verore e Aktobit\x09Ora arabe\x13Ora standarde a" + - "rabe\x10Ora verore arabe\x12Ora e Argjentinës\x1cOra standarde e Argjent" + - "inës\x19Ora verore e Argjentinës\x1fOra e Argjentinës Perëndimore)Ora st" + - "andarde e Argjentinës Perëndimore&Ora verore e Argjentinës Perëndimore" + - "\x0fOra e Armenisë\x19Ora standarde e Armenisë\x16Ora verore e Armenisë" + - "\x10Ora e Atlantikut\x1aOra standarde e Atlantikut\x17Ora verore e Atlan" + - "tikut\x1aOra e Australisë Qendrore$Ora standarde e Australisë Qendrore!O" + - "ra verore e Australisë Qendrore'Ora e Australisë Qendroro-Perëndimore1Or" + - "a standarde e Australisë Qendroro-Perëndimore.Ora verore e Australisë Qe" + - "ndroro-Perëndimore\x19Ora e Australisë Lindore#Ora standarde e Australis" + - "ë Lindore Ora verore e Australisë Lindore\x1eOra e Australisë Perëndimo" + - "re(Ora standarde e Australisë Perëndimore%Ora verore e Australisë Perënd" + - "imore\x13Ora e Azerbajxhanit\x1dOra standarde e Azerbajxhanit\x1aOra ver" + - "ore e Azerbajxhanit\x0dOra e Azoreve\x17Ora standarde e Azoreve\x14Ora v" + - "erore e Azoreve\x12Ora e Bangladeshit\x1cOra standarde e Bangladeshit" + - "\x19Ora verore e Bangladeshit\x0dOra e Butanit\x0fOra e Bolivisë\x0fOra " + - "e Brasilës\x19Ora standarde e Brasilës\x16Ora verore e Brasilës\x18Ora e" + - " Brunei-Durasalamit\x18Ora e Kepit të Gjelbër\x22Ora standarde e Kepit t" + - "ë Gjelbër\x1fOra verore e Kepit të Gjelbër\x0cOra e Kejsit\x0eOra e Kam" + - "orros\x0dOra e Katamit\x17Ora standarde e Katamit\x14Ora verore e Katami" + - "t\x0bOra e Kilit\x15Ora standarde e Kilit\x12Ora verore e Kilit\x0cOra e" + - " Kinës\x16Ora standarde e Kinës\x13Ora verore e Kinës\x12Ora e Çoibalsan" + - "it\x1cOra standarde e Çoibalsanit\x19Ora verore e Çoibalsanit!Ora e Ishu" + - "llit të Krishtlindjeve\x13Ora e Ishujve Kokos\x10Ora e Kolumbisë\x1aOra " + - "standarde e Kolumbisë\x17Ora verore e Kolumbisë\x11Ora e Ishujve Kuk\x1b" + - "Ora standarde e Ishujve Kuk\x18Ora verore e Ishujve Kuk\x0cOra e Kubës" + - "\x16Ora standarde e Kubës\x13Ora verore e Kubës\x0eOra e Dejvisit\x19Ora" + - " e Dumont-d’Urvilës\x14Ora e Timorit Lindor\x1bOra e Ishullit të Pashkës" + - "%Ora standarde e Ishullit të Pashkës\x22Ora verore e Ishullit të Pashkës" + - "\x0fOra e Ekuadorit\x17Ora e Evropës Qendrore!Ora standarde e Evropës Qe" + - "ndrore\x1eOra verore e Evropës Qendrore\x16Ora e Evropës Lindore Ora sta" + - "ndarde e Evropës Lindore\x1dOra verore e Evropës Lindore\x22Ora e Evropë" + - "s së Largët Lindore\x1bOra e Evropës Perëndimore%Ora standarde e Evropës" + - " Perëndimore\x22Ora verore e Evropës Perëndimore\x16Ora e Ishujve Falkla" + - "nd Ora standarde e Ishujve Falkland\x1dOra verore e Ishujve Falkland\x0c" + - "Ora e Fixhit\x16Ora standarde e Fixhit\x13Ora verore e Fixhit\x18Ora e G" + - "uajanës Franceze0Ora e Territoreve Jugore dhe Antarktike Franceze\x11Ora" + - " e Galapagosit\x0fOra e Gambierit\x11Ora e Gjeorgjisë\x1bOra standarde e" + - " Gjeorgjisë\x18Ora verore e Gjeorgjisë\x15Ora e Ishujve Gilbert\x1fOra e" + - " Meridianit të Grinuiçit\x19Ora e Grenlandës Lindore#Ora standarde e Gre" + - "nlandës Lindore Ora verore e Grenlandës Lindore\x1eOra e Grenlandës Perë" + - "ndimore(Ora standarde e Grenlandës Perëndimore%Ora verore e Grenlandës P" + - "erëndimore\x0cOra e Guamit\x0cOra e Gjirit\x0fOra e Guajanës\x1cOra e Is" + - "hujve Hauai-Aleutian&Ora standarde e Ishujve Hauai-Aleutian#Ora verore e" + - " Ishujve Hauai-Aleutian\x11Ora e Hong-Kongut\x1bOra standarde e Hong-Kon" + - "gut\x18Ora verore e Hong-Kongut\x0cOra e Hovdit\x16Ora standarde e Hovdi" + - "t\x13Ora verore e Hovdit\x17Ora standarde e Indisë\x14Ora e Oqeanit Indi" + - "an\x10Ora e Indokinës\x1aOra e Indonezisë Qendrore\x19Ora e Indonezisë L" + - "indore\x1eOra e Indonezisë Perëndimore\x0cOra e Iranit\x16Ora standarde " + - "e Iranit\x13Ora verore e Iranit\x0fOra e Irkutskut\x19Ora standarde e Ir" + - "kutskut\x16Ora verore e Irkutskut\x0eOra e Izraelit\x18Ora standarde e I" + - "zraelit\x15Ora verore e Izraelit\x0fOra e Japonisë\x19Ora standarde e Ja" + - "ponisë\x16Ora verore e Japonisë Ora e Petropavllovsk-Kamçatkës*Ora stand" + - "arde e Petropavllovsk-Kamçatkës'Ora verore e Petropavllovsk-Kamçatkës" + - "\x19Ora e Kazakistanit Lindor\x1eOra e Kazakistanit Perëndimor\x0bOra ko" + - "reane\x15Ora standarde koreane\x12Ora verore koreane\x0dOra e Kosrës\x13" + - "Ora e Krasnojarskut\x1dOra standarde e Krasnojarskut\x1aOra verore e Kra" + - "snojarskut\x11Ora e Kirgistanit\x0eOra e Lankasë%Ora e Ishujve Sporadikë" + - " Ekuatorialë\x10Ora e Lord-Houit\x1aOra standarde e Lord-Houit\x17Ora ve" + - "rore e Lord-Houit\x0cOra e Makaos\x16Ora standarde e Makaos\x13Ora veror" + - "e e Makaos\x16Ora e Ishullit Makuari\x0fOra e Magadanit\x19Ora standarde" + - " e Magadanit\x16Ora verore e Magadanit\x10Ora e Malajzisë\x0eOra e Maldi" + - "vit\x16Ora e Ishujve Markezë\x18Ora e Ishujve Marshallë\x11Ora e Mauriti" + - "usit\x1bOra standarde e Mauritiusit\x18Ora verore e Mauritiusit\x0eOra e" + - " Mausonit Ora e Meksikës Veriperëndimore*Ora standarde e Meksikës Veripe" + - "rëndimore'Ora verore e Meksikës Veriperëndimore%Ora meksikane e Bregut t" + - "ë Paqësorit/Ora standarde meksikane e Bregut të Paqësorit,Ora verore me" + - "ksikane e Bregut të Paqësorit\x12Ora e Ulan-Batorit\x1cOra standarde e U" + - "lan-Batorit\x19Ora verore e Ulan-Batorit\x0dOra e Moskës\x17Ora standard" + - "e e Moskës\x14Ora verore e Moskës\x0fOra e Mianmarit\x0eOra e Naurusë" + - "\x0dOra e Nepalit\x18Ora e Kaledonisë së Re\x22Ora standarde e Kaledonis" + - "ë së Re\x1fOra verore e Kaledonisë së Re\x16Ora e Zelandës së Re Ora st" + - "andarde e Zelandës së Re\x1dOra verore e Zelandës së Re$Ora e Njufaundle" + - "ndit [Tokës së Re].Ora standarde e Njufaundlendit [Tokës së Re]+Ora vero" + - "re e Njufaundlendit [Tokës së Re]\x0dOra e Niuesë\x16Ora e Ishullit Norf" + - "olk\x1bOra e Fernando-de-Noronjës%Ora standarde e Fernando-de-Noronjës" + - "\x22Ora verore e Fernando-de-Noronjës&Ora e Ishujve të Marianës së Veriu" + - "t\x13Ora e Novosibirskut\x1dOra standarde e Novosibirskut\x1aOra verore " + - "e Novosibirskut\x0cOra e Omskut\x16Ora standarde e Omskut\x13Ora verore " + - "e Omskut\x10Ora e Pakistanit\x1aOra standarde e Pakistanit\x17Ora verore" + - " e Pakistanit\x0cOra e Palaut\x1bOra e Papua-Guinesë së Re\x0fOra e Para" + - "guait\x19Ora standarde e Paraguait\x16Ora Verore e Paraguait\x0dOra e Pe" + - "rusë\x17Ora standarde e Perusë\x14Ora verore e Perusë\x10Ora e Filipinev" + - "e\x1aOra standarde e Filipineve\x17Ora verore e Filipineve\x14Ora e Ishu" + - "jve Feniks\x1dOra e Shën-Pier dhe Mikuelon'Ora standarde e Shën-Pier dhe" + - " Mikuelon$Ora verore e Shën-Pier dhe Mikuelon\x0fOra e Pitkernit\x0eOra " + - "e Ponapeit\x0eOra e Penianit\x10Ora e Kizilordit\x1aOra standarde e Kizi" + - "lordit\x17Ora verore e Kizilordit\x0fOra e Reunionit\x0fOra e Rodherës" + - "\x0fOra e Sakalinit\x19Ora standarde e Sakalinit\x16Ora verore e Sakalin" + - "it\x0eOra e Samarës\x18Ora standarde e Samarës\x15Ora verore e Samarës" + - "\x0cOra e Samoas\x16Ora standarde e Samoas\x13Ora verore e Samoas\x0fOra" + - " e Sishelës\x10Ora e Singaporit\x15Ora e Ishujve Solomon\x18Ora e Xhorxh" + - "as të Jugut\x0fOra e Surinamit\x0cOra e Sjouit\x0dOra e Tahitit\x0dOra e" + - " Tajpeit\x17Ora standarde e Tajpeit\x14Ora verore e Tajpeit\x13Ora e Tax" + - "hikistanit\x0eOra e Tokelaut\x0dOra e Tongës\x17Ora standarde e Tongës" + - "\x14Ora verore e Tongës\x0cOra e Çukut\x14Ora e Turkmenistanit\x1eOra st" + - "andarde e Turkmenistanit\x1bOra verore e Turkmenistanit\x0fOra e Tuvalus" + - "ë\x0eOra e Uruguait\x18Ora standarde e Uruguait\x15Ora verore e Uruguai" + - "t\x12Ora e Uzbekistanit\x1cOra standarde e Uzbekistanit\x19Ora verore e " + - "Uzbekistanit\x10Ora e Vanuatusë\x1aOra standarde e Vanuatusë\x17Ora vero" + - "re e Vanuatusë\x11Ora e Venezuelës\x13Ora e Vladivostokut\x1dOra standar" + - "de e Vladivostokut\x1aOra verore e Vladivostokut\x11Ora e Volgogradit" + - "\x1bOra standarde e Volgogradit\x18Ora verore e Volgogradit\x0eOra e Vos" + - "tokut\x13Ora e Ishullit Uejk\x1bOra e Uollisit dhe Futunës\x0fOra e Jaku" + - "tskut\x19Ora standarde e Jakutskut\x16Ora verore e Jakutskut\x14Ora e Ek" + - "aterinburgut\x1eOra standarde e Ekaterinburgut\x1bOra verore e Ekaterinb" + - "urgut" - -var bucket92 string = "" + // Size: 14219 bytes - "\x09d.MM.y. G\x04не\x04по\x04ут\x04ср\x04че\x04пе\x04су\x17први квартал" + - "\x19други квартал\x19трећи квартал\x1dчетврти квартал\x0aпоноћ\x0aподне" + - "\x0fпо подне\x0cујутро\x0aувече\x08ноћу\x0dу поноћ\x0dу подне\x0cујутру" + - "\x0aјутро\x08вече\x06ноћ\x16пре нове ере\x0fнове ере\x19прошле године" + - "\x13ове године\x1bследеће године\x10за {0} год.\x12пре {0} год.\x0cза {0" + - "} г.\x0eпре {0} г.\x1fпрошлог квартала\x19овог квартала!следећег квартал" + - "а\x17за {0} квартал\x19за {0} квартала\x1bпре {0} квартала\x0eза {0} кв" + - ".\x10пре {0} кв.\x1bпрошлог месеца\x15овог месеца\x1dследећег месеца\x10" + - "за {0} мес.\x12пре {0} мес.\x0cза {0} м.\x0eпре {0} м.\x19прошле недеље" + - "\x13ове недеље\x1bследеће недеље'недеља која почиње {0}.\x10за {0} нед." + - "\x12пре {0} нед.\x03н.\x0cза {0} н.\x0eпре {0} н.\x0cза {0} д.\x0eпре {0" + - "} д.\x0fу недељу\x13прошле нед\x09у нед\x15следеће нед!прошлог понедељка" + - "\x15у понедељак#следећег понедељка\x1bза {0} понедељак\x1bза {0} понедељ" + - "ка\x1dза {0} понедељака\x1dпре {0} понедељка\x1fпре {0} понедељака\x15п" + - "рошлог пон\x09у пон\x17следећег пон\x1aза {0} понедељкa\x1bпрошлог утор" + - "ка\x0fу уторак\x1dследећег уторка\x15за {0} уторак\x15за {0} уторка\x17" + - "за {0} уторака\x17пре {0} уторка\x19пре {0} уторака\x15прошлог уто\x09у" + - " уто\x17следећег уто\x17прошле среде\x0dу среду\x19следеће среде\x13за {" + - "0} среду\x13за {0} среде\x13за {0} среда\x15пре {0} среде\x15пре {0} сре" + - "да\x13прошле сре\x09у сре\x15следеће сре\x1fпрошлог четвртка\x13у четвр" + - "так!следећег четвртка\x19за {0} четвртак\x19за {0} четвртка\x1bза {0} ч" + - "етвртака\x1bпре {0} четвртка\x1dпре {0} четвртака\x15прошлог чет\x09у ч" + - "ет\x17следећег чет\x19прошлог петка\x0dу петак\x1bследећег петка\x13за " + - "{0} петак\x13за {0} петка\x15за {0} петака\x15пре {0} петка\x17пре {0} п" + - "етака\x15прошлог пет\x09у пет\x17следећег пет\x19прошле суботе\x0fу суб" + - "оту\x1bследеће суботе\x15за {0} суботу\x15за {0} суботе\x15за {0} субот" + - "а\x17пре {0} суботе\x17пре {0} субота\x13прошле суб\x09у суб\x15следеће" + - " суб!пре подне/по подне\x06сат\x11овог сата\x0cза {0} ч.\x0eпре {0} ч." + - "\x15овог минута\x10за {0} мин.\x12пре {0} мин.\x08сада\x17за {0} секунду" + - "\x17за {0} секунде\x17за {0} секунди\x10за {0} сек.\x12пре {0} сек.\x03с" + - ".\x0cза {0} с.\x0eпре {0} с.:Координисано универзално време=Британија ле" + - "тње рачунање времена*Ирска стандардно време\x0eнедјеља\x12понедељак\x0c" + - "уторак\x0eсриједа\x10четвртак\x0aпетак\x0cсубота\x15прије подне\x0cпо п" + - "од.\x1aприје нове ере\x04Taut\x04Baba\x05Hator\x05Kiahk\x04Toba\x06Amši" + - "r\x08Baramhat\x08Baramuda\x07Bašans\x05Paona\x04Epep\x05Mesra\x04Nasi" + - "\x0cprvi kvartal\x0ddrugi kvartal\x0etreći kvartal\x10četvrti kvartal" + - "\x09pre podne\x08po podne\x06uveče\x08u ponoć\x07u podne\x06ujutru\x05ve" + - "če\x04noć\x0cpre nove ere\x08nove ere\x06Tišri\x07Hešvan\x06Kislev\x05T" + - "evet\x06Ševat\x06Adar I\x04Adar\x07Adar II\x05Nisan\x04Ijar\x05Sivan\x05" + - "Tamuz\x02Av\x04Elul\x07Čaitra\x07Vaisaka\x07Jiaista\x05Asada\x07Sravana" + - "\x05Badra\x06Asvina\x07Kartika\x08Argajana\x05Pauza\x04Maga\x07Falguna" + - "\x07Muraham\x05Safar\x08Rabiʻ I\x09Rabiʻ II\x08Jumada I\x09Jumada II\x06" + - "Rađab\x08Šaʻban\x07Ramadan\x06Šaval\x0cDuʻl-Kiʻda\x0bDuʻl-hiđa\x07Muhare" + - "m\x05Safer\x06Rebi 1\x06Rebi 2\x0aDžumade 1\x0aDžumade 2\x07Redžeb\x07Ra" + - "mazan\x06Ševal\x08Zul-kade\x0aZul-hidže\x09Faravadin\x0bOrdibehešt\x06Ko" + - "rdad\x03Tir\x06Mordad\x09Šahrivar\x04Mehr\x04Aban\x04Azar\x03Dej\x06Bahm" + - "an\x06Esfand\x06Pre RK\x02RK\x0epre {0} godine\x0epre {0} godina\x0cpre " + - "{0} god.\x0apre {0} g.\x11prošlog kvartala\x0dovog kvartala\x12sledećeg " + - "kvartala\x10pre {0} kvartala\x0bpre {0} kv.\x0fprošlog meseca\x0bovog me" + - "seca\x10sledećeg meseca\x0cza {0} mesec\x0dza {0} meseca\x0dza {0} mesec" + - "i\x0epre {0} meseca\x0epre {0} meseci\x0bza {0} mes.\x0cpre {0} mes.\x09" + - "za {0} m.\x0apre {0} m.\x0fprošle nedelje\x0bove nedelje\x10sledeće nede" + - "lje\x0eza {0} nedelju\x0eza {0} nedelje\x0eza {0} nedelja\x0fpre {0} ned" + - "elje\x0fpre {0} nedelja\x1anedelja koja počinje {0}.\x0bza {0} ned.\x0cp" + - "re {0} ned.\x09za {0} n.\x0apre {0} n.\x09prekjuče\x05juče\x05danas\x05s" + - "utra\x0aprekosutra\x0cpre {0} dana\x0apre {0} d.\x0ddan u nedelji\x09u n" + - "edelju\x0bprošle ned\x05u ned\x0csledeće ned\x13prošlog ponedeljka\x0cu " + - "ponedeljak\x14sledećeg ponedeljka\x11za {0} ponedeljak\x11za {0} ponedel" + - "jka\x12za {0} ponedeljaka\x12pre {0} ponedeljka\x13pre {0} ponedeljaka" + - "\x0cprošlog pon\x05u pon\x0dsledećeg pon\x0fprošlog utorka\x08u utorak" + - "\x10sledećeg utorka\x0epre {0} utorka\x0fpre {0} utoraka\x0cprošlog uto" + - "\x05u uto\x0dsledećeg uto\x0dprošle srede\x07u sredu\x0esledeće srede" + - "\x0cza {0} sredu\x0cza {0} srede\x0cza {0} sreda\x0dpre {0} srede\x0dpre" + - " {0} sreda\x0bprošle sre\x05u sre\x0csledeće sre\x12prošlog četvrtka\x0b" + - "u četvrtak\x13sledećeg četvrtka\x11pre {0} četvrtka\x12pre {0} četvrtaka" + - "\x0dprošlog čet\x06u čet\x0esledećeg čet\x0eprošlog petka\x07u petak\x0f" + - "sledećeg petka\x0dpre {0} petka\x0epre {0} petaka\x0cprošlog pet\x05u pe" + - "t\x0dsledećeg pet\x0eprošle subote\x08u subotu\x0fsledeće subote\x0epre " + - "{0} subote\x0epre {0} subota\x0bprošle sub\x05u sub\x0csledeće sub\x12pr" + - "e podne/po podne\x09ovog sata\x0cpre {0} sata\x0cpre {0} sati\x03č.\x0az" + - "a {0} č.\x0bpre {0} č.\x0bovog minuta\x0epre {0} minuta\x0cpre {0} min." + - "\x0fpre {0} sekunde\x0fpre {0} sekundi\x0cpre {0} sek.\x09za {0} s.\x0ap" + - "re {0} s.\x1eKoordinisano univerzalno vreme#Britanija letnje računanje v" + - "remena\x16Irska standardno vreme\x0aAkre vreme\x15Akre standardno vreme" + - "\x1eAkre letnje računanje vremena\x10Avganistan vreme\x18Centralno-afrič" + - "ko vreme\x17Istočno-afričko vreme\x15Južno-afričko vreme\x16Zapadno-afri" + - "čko vreme!Zapadno-afričko standardno vreme*Zapadno-afričko letnje račun" + - "anje vremena\x07Aljaska\x19Aljaska, standardno vreme\x22Aljaska, letnje " + - "računanje vremena\x0cAlmati vreme\x17Almati standardno vreme Almati letn" + - "je računanje vremena\x0cAmazon vreme\x17Amazon standardno vreme Amazon l" + - "etnje računanje vremena Severnoameričko centralno vreme+Severnoameričko " + - "centralno standardno vreme'Severnoameričko centralno letnje vreme\x1fSev" + - "ernoameričko istočno vreme*Severnoameričko istočno standardno vreme&Seve" + - "rnoameričko istočno letnje vreme Severnoameričko planinsko vreme+Severno" + - "američko planinsko standardno vreme'Severnoameričko planinsko letnje vre" + - "me!Severnoameričko pacifičko vreme,Severnoameričko pacifičko standardno " + - "vreme(Severnoameričko pacifičko letnje vreme\x0cAnadir vreme\x17Anadir s" + - "tandardno vreme Anadir letnje računanje vremena\x0bApija vreme\x16Apija " + - "standardno vreme\x1fApija letnje računanje vremena\x0dAkvatau vreme\x18A" + - "kvatau standardno vreme!Akvatau letnje računanje vremena\x0dAkutobe vrem" + - "e\x18Akutobe standardno vreme!Akutobe letnje računanje vremena\x0fArabij" + - "sko vreme\x1aArabijsko standardno vreme#Arabijsko letnje računanje vreme" + - "na\x0fArgentina vreme\x1aArgentina standardno vreme#Argentina letnje rač" + - "unanje vremena\x17Zapadna Argentina vreme\x22Zapadna Argentina standardn" + - "o vreme+Zapadna Argentina letnje računanje vremena\x0fJermenija vreme" + - "\x1aJermenija standardno vreme#Jermenija letnje računanje vremena\x0fAtl" + - "antsko vreme\x1aAtlantsko standardno vreme#Atlantsko letnje računanje vr" + - "emena\x1cAustralijsko centralno vreme'Australijsko centralno standardno " + - "vreme0Australijsko centralno letnje računanje vremena$Australijsko centr" + - "alno zapadno vreme/Australijsko centralno zapadno standardno vreme8Austr" + - "alijsko centralno zapadno letnje računanje vremena\x1bAustralijsko istoč" + - "no vreme&Australijsko istočno standardno vreme/Australijsko istočno letn" + - "je računanje vremena\x1aAustralijsko zapadno vreme%Australijsko zapadno " + - "standardno vreme.Australijsko zapadno letnje računanje vremena\x12Azerbe" + - "jdžan vreme\x1dAzerbejdžan standardno vreme&Azerbejdžan letnje računanje" + - " vremena\x0bAzori vreme\x16Azori standardno vreme\x1fAzori letnje računa" + - "nje vremena\x10Bangladeš vreme\x1bBangladeš standardno vreme$Bangladeš l" + - "etnje računanje vremena\x0bButan vreme\x0eBolivija vreme\x0fBrazilija vr" + - "eme\x1aBrazilija standardno vreme#Brazilija letnje računanje vremena\x16" + - "Brunej Darusalum vreme\x18Zelenortska Ostrva vreme#Zelenortska Ostrva st" + - "andardno vreme,Zelenortska Ostrva letnje računanje vremena\x0dČamoro vre" + - "me\x0cČatam vreme\x17Čatam standardno vreme Čatam letnje računanje vreme" + - "na\x0bČile vreme\x16Čile standardno vreme\x1fČile letnje računanje vreme" + - "na\x0aKina vreme\x18Kinesko standardno vreme\x1eKina letnje računanje vr" + - "emena\x10Čojbalsan vreme\x1bČojbalsan standardno vreme$Čojbalsan letnje " + - "računanje vremena\x16Božićno ostrvo vreme\x1bKokos (Keling) Ostrva vreme" + - "\x0fKolumbija vreme\x1aKolumbija standardno vreme#Kolumbija letnje račun" + - "anje vremena\x13Kukova ostrva vreme\x1eKukova ostrva standardno vreme,Ku" + - "kova ostrva polu-letnje računanje vremena\x0aKuba vreme\x15Kuba standard" + - "no vreme\x1eKuba letnje računanje vremena\x0cDejvis vreme\x15Dimon d’Urv" + - "il vreme\x14Istočni timor vreme\x16Uskršnja ostrva vreme!Uskršnja ostrva" + - " standardno vreme*Uskršnja ostrva letnje računanje vremena\x0dEkvador vr" + - "eme\x15Srednjeevropsko vreme Srednjeevropsko standardno vreme)Srednjeevr" + - "opsko letnje računanje vremena\x16Istočnoevropsko vreme!Istočnoevropsko " + - "standardno vreme*Istočnoevropsko letnje računanje vremena\x12dalji istok" + - " Evrope\x15Zapadnoevropsko vreme Zapadnoevropsko standardno vreme)Zapadn" + - "oevropsko letnje računanje vremena\x18Folklandska Ostrva vreme#Folklands" + - "ka Ostrva standardno vreme,Folklandska Ostrva letnje računanje vremena" + - "\x0cFidži vreme\x17Fidži standardno vreme Fidži letnje računanje vremena" + - "\x17Francuska Gvajana vreme%Francusko južno i antarktičko vreme\x0fGalap" + - "agos vreme\x0dGambije vreme\x0dGruzija vreme\x18Gruzija standardno vreme" + - "!Gruzija letnje računanje vremena\x14Gilbert ostrva vreme\x19Srednje vre" + - "me po Griniču\x17Istočni Grenland vreme\x22Istočni Grenland standardno v" + - "reme+Istočni Grenland letnje računanje vremena\x16Zapadni Grenland vreme" + - "!Zapadni Grenland standardno vreme*Zapadni Grenland letnje računanje vre" + - "mena\x15Guam standardno vreme\x0eZalivsko vreme\x0dGvajana vreme\x17Hava" + - "jsko-aleutsko vreme\x22Havajsko-aleutsko standardno vreme+Havajsko-aleut" + - "sko letnje računanje vremena\x0fHong Kong vreme\x1aHong Kong standardno " + - "vreme#Hong Kong letnje računanje vremena\x0aHovd vreme\x15Hovd standardn" + - "o vreme\x1eHovd letnje računanje vremena\x19Indijsko standardno vreme" + - "\x17Indijsko okeansko vreme\x0eIndokina vreme\x1cCentralno-indonezijsko " + - "vreme\x1bIstočno-indonezijsko vreme\x1aZapadno-indonezijsko vreme\x0aIra" + - "n vreme\x15Iran standardno vreme\x1eIran letnje računanje vremena\x0cIrk" + - "uck vreme\x17Irkuck standardno vreme Irkuck letnje računanje vremena\x0f" + - "Izraelsko vreme\x1aIzraelsko standardno vreme#Izraelsko letnje računanje" + - " vremena\x0eJapansko vreme\x19Japansko standardno vreme\x22Japansko letn" + - "je računanje vremena\x1fPetropavlovsko-kamčatsko vreme*Petropavlovsko-ka" + - "mčatsko standardno vreme3Petropavlovsko-kamčatsko letnje računanje vreme" + - "na\x1bIstočno-kazahstansko vreme\x1aZapadno-kazahstansko vreme\x0eKorejs" + - "ko vreme\x19Korejsko standardno vreme\x22Korejsko letnje računanje vreme" + - "na\x0cKošre vreme\x11Krasnojarsk vreme\x1cKrasnojarsk standardno vreme%K" + - "rasnojarsk letnje računanje vremena\x0fKirgistan vreme\x10Šri Lanka vrem" + - "e\x11Ostrva Lajn vreme\x0eLord Hov vreme\x19Lord Hov standardno vreme" + - "\x22Lord Hov letnje računanje vremena\x0bMakao vreme\x16Makao standardno" + - " vreme\x1fMakao letnje računanje vremena\x14Ostrvo Makveri vreme\x0dMaga" + - "dan vreme\x18Magadan standardno vreme!Magadan letnje računanje vremena" + - "\x0eMalezija vreme\x0dMaldivi vreme\x0cMarkiz vreme\x17Maršalska Ostrva " + - "vreme\x10Mauricijus vreme\x1bMauricijus standardno vreme$Mauricijus letn" + - "je računanje vremena\x0bMoson vreme\x15Severozapadni Meksiko&Severozapad" + - "ni Meksiko standardno vreme/Severozapadni Meksiko letnje računanje vreme" + - "na\x11Meksički Pacifik\x22Meksički Pacifik standardno vreme+Meksički Pac" + - "ifik letnje računanje vremena\x10Ulan Bator vreme\x1bUlan Bator standard" + - "no vreme$Ulan Bator letnje računanje vremena\x0cMoskva vreme\x17Moskva s" + - "tandardno vreme Moskva letnje računanje vremena\x0eMijanmar vreme\x0bNau" + - "ru vreme\x0bNepal vreme\x15Nova Kaledonija vreme Nova Kaledonija standar" + - "dno vreme)Nova Kaledonija letnje računanje vremena\x11Novi Zeland vreme" + - "\x1cNovi Zeland standardno vreme%Novi Zeland letnje računanje vremena" + - "\x12Njufaundlend vreme\x1dNjufaundlend standardno vreme&Njufaundlend let" + - "nje računanje vremena\x0aNiue vreme\x14Norfolk Ostrvo vreme\x19Fernando " + - "de Noronja vreme$Fernando de Noronja standardno vreme-Fernando de Noronj" + - "a letnje računanje vremena\x1fSeverna Marijanska Ostrva vreme\x11Novosib" + - "irsk vreme\x1cNovosibirsk standardno vreme%Novosibirsk letnje računanje " + - "vremena\x0aOmsk vreme\x15Omsk standardno vreme\x1eOmsk letnje računanje " + - "vremena\x0ePakistan vreme\x19Pakistan standardno vreme\x22Pakistan letnj" + - "e računanje vremena\x0bPalau vreme\x18Papua Nova Gvineja vreme\x0eParagv" + - "aj vreme\x19Paragvaj standardno vreme\x22Paragvaj letnje računanje vreme" + - "na\x0aPeru vreme\x15Peru standardno vreme\x1ePeru letnje računanje vreme" + - "na\x0eFilipini vreme\x19Filipini standardno vreme\x22Filipini letnje rač" + - "unanje vremena\x13Feniks ostrva vreme\x18Sen Pjer i Mikelon vreme#Sen Pj" + - "er i Mikelon standardno vreme,Sen Pjer i Mikelon letnje računanje vremen" + - "a\x0dPitkern vreme\x0cPonpej vreme\x12Pjongjanško vreme\x0fKizilorda vre" + - "me\x1aKizilorda standardno vreme#Kizilorda letnje računanje vremena\x0dR" + - "einion vreme\x0cRotera vreme\x0dSahalin vreme\x18Sahalin standardno vrem" + - "e!Sahalin letnje računanje vremena\x0cSamara vreme\x17Samara standardno " + - "vreme Samara letnje računanje vremena\x0bSamoa vreme\x16Samoa standardno" + - " vreme\x1fSamoa letnje računanje vremena\x0eSejšeli vreme\x19Singapur st" + - "andardno vreme\x17Solomonska Ostrva vreme\x18Južna Džordžija vreme\x0dSu" + - "rinam vreme\x0bŠova vreme\x0cTahiti vreme\x0cTajpej vreme\x17Tajpej stan" + - "dardno vreme\x13Tajpej letnje vreme\x12Tadžikistan vreme\x0dTokelau vrem" + - "e\x0bTonga vreme\x16Tonga standardno vreme\x1fTonga letnje računanje vre" + - "mena\x0bČuuk vreme\x12Turkmenistan vreme\x1dTurkmenistan standardno vrem" + - "e&Turkmenistan letnje računanje vremena\x0cTuvalu vreme\x0dUrugvaj vreme" + - "\x18Urugvaj standardno vreme!Urugvaj letnje računanje vremena\x10Uzbekis" + - "tan vreme\x1bUzbekistan standardno vreme$Uzbekistan letnje računanje vre" + - "mena\x0dVanuatu vreme\x18Vanuatu standardno vreme!Vanuatu letnje računan" + - "je vremena\x0fVenecuela vreme\x11Vladivostok vreme\x1cVladivostok standa" + - "rdno vreme%Vladivostok letnje računanje vremena\x0fVolgograd vreme\x1aVo" + - "lgograd standardno vreme#Volgograd letnje računanje vremena\x0cVostok vr" + - "eme\x11Vejk ostrvo vreme\x1bValis i Futuna Ostrva vreme\x0dJakutsk vreme" + - "\x18Jakutsk standardno vreme!Jakutsk letnje računanje vremena\x13Jekater" + - "inburg vreme\x1eJekaterinburg standardno vreme'Jekaterinburg letnje raču" + - "nanje vremena\x0a+{0} дн." - -var bucket93 string = "" + // Size: 10123 bytes - "\x0bprije podne\x07po pod.\x10första månaden\x0eandra månaden\x0ftredje " + - "månaden\x10fjärde månaden\x0efemte månaden\x10sjätte månaden\x0fsjunde m" + - "ånaden\x11åttonde månaden\x0fnionde månaden\x0ftionde månaden\x0eelfte " + - "månaden\x0ftolfte månaden\x04sön\x04mån\x03tis\x03ons\x04tors\x03fre\x04" + - "lör\x03sö\x03må\x02ti\x02on\x02to\x02fr\x03lö\x07söndag\x07måndag\x06tis" + - "dag\x06onsdag\x07torsdag\x06fredag\x07lördag\x0d1:a kvartalet\x0d2:a kva" + - "rtalet\x0d3:e kvartalet\x0d4:e kvartalet\x02fm\x02em\x09på morg.\x0apå f" + - "örm.\x0bpå efterm.\x0cpå kvällen\x0apå natten\x0cpå morgonen\x10på förm" + - "iddagen\x11på eftermiddagen\x06morgon\x06förm.\x07efterm.\x06kväll\x0afö" + - "rmiddag\x0dföre Kristus!före västerländsk tideräkning\x0defter Kristus" + - "\x1bvästerländsk tideräkning\x07tishrí\x08heshván\x07kislév\x06tevét\x07" + - "shevát\x07adár I\x05adár\x08adár II\x06nisán\x06ijjár\x06siván\x07tammúz" + - "\x02ab\x05elúl\x07Tishrí\x08Heshván\x07Kislév\x06Tevét\x07Shevát\x07Adár" + - " I\x05Adár\x08Adár II\x06Nisán\x06Ijjár\x06Siván\x07Tammúz\x02Ab\x05Elúl" + - "\x09Saka-eran\x0aföre R.K.\x04R.K.\x06i fjol\x05i år\x0anästa år\x12för " + - "{0} år sedan\x0a−{0} år\x10förra kvartalet\x0ddetta kvartal\x0enästa kva" + - "rtal\x16för {0} kvartal sedan\x0aförra kv.\x09detta kv.\x0anästa kv.\x12" + - "för {0} kv. sedan\x09−{0} kv\x0fförra månaden\x0cdenna månad\x0dnästa må" + - "nad\x0dom {0} månad\x0fom {0} månader\x15för {0} månad sedan\x17för {0} " + - "månader sedan\x0cförra mån.\x0bdenna mån.\x0cnästa mån.\x0com {0} mån." + - "\x14för {0} mån. sedan\x0a+{0} mån.\x0b−{0} mån\x05vecka\x0dförra veckan" + - "\x0bdenna vecka\x0cnästa vecka\x0com {0} vecka\x0dom {0} veckor\x14för {" + - "0} vecka sedan\x15för {0} veckor sedan\x0fveckan för {0}\x09förra v.\x08" + - "denna v.\x09nästa v.\x09om {0} v.\x11för {0} v. sedan\x07+{0} v.\x08−{0}" + - " v\x0bi förrgår\x06i går\x05i dag\x08i morgon\x0di övermorgon\x12för {0}" + - " dag sedan\x14för {0} dagar sedan\x08om {0} d\x10för {0} d sedan\x12för" + - "\u00a0{0}\u00a0d sedan\x08−{0} d\x08veckodag\x15söndag förra veckan\x13s" + - "öndag denna vecka\x14söndag nästa vecka\x0eom {0} söndag\x10om {0} sönd" + - "agar\x16för {0} söndag sedan\x18för {0} söndagar sedan\x13sön. förra vec" + - "kan\x11sön. denna vecka\x12sön. nästa vecka\x0com {0} sön.\x12för {0} sö" + - "n. sen\x0cförra sön.\x0bdenna sön.\x0cnästa sön.\x09+{0} sön\x0b−{0} sön" + - "\x15måndag förra veckan\x13måndag denna vecka\x14måndag nästa vecka\x0eo" + - "m {0} måndag\x10om {0} måndagar\x16för {0} måndag sedan\x18för {0} månda" + - "gar sedan\x13mån. förra veckan\x11mån. denna vecka\x12mån. nästa vecka" + - "\x0dom {0} månd.\x13för {0} månd. sen\x09+{0} må.\x0c–{0} månd\x14tisdag" + - " förra veckan\x12tisdag denna vecka\x13tisdag nästa vecka\x0dom {0} tisd" + - "ag\x0fom {0} tisdagar\x15för {0} tisdag sedan\x17för {0} tisdagar sedan" + - "\x12tis. förra veckan\x10tis. denna vecka\x11tis. nästa vecka\x0bom {0} " + - "tis.\x11för {0} tis. sen\x0bförra tis.\x0adenna tis.\x0bnästa tis.\x08+{" + - "0} tis\x0a−{0} tis\x14onsdag förra veckan\x12onsdag denna vecka\x13onsda" + - "g nästa vecka\x15för {0} onsdag sedan\x17för {0} onsdagar sedan\x12ons. " + - "förra veckan\x10ons. denna vecka\x11ons. nästa vecka\x11för {0} ons. sen" + - "\x0bförra ons.\x0adenna ons.\x0bnästa ons.\x08+{0} ons\x0a−{0} ons\x15to" + - "rsdag förra veckan\x13torsdag denna vecka\x14torsdag nästa vecka\x16för " + - "{0} torsdag sedan\x18för {0} torsdagar sedan\x13tors. förra veckan\x11to" + - "rs. denna vecka\x12tors. nästa vecka\x0com {0} tors.\x12för {0} tors. se" + - "n\x0cförra tors.\x0bdenna tors.\x0cnästa tors.\x09+{0} tors\x0b−{0} tors" + - "\x14fredag förra veckan\x12fredag denna vecka\x13fredag nästa vecka\x15f" + - "ör {0} fredag sedan\x17för {0} fredagar sedan\x12fre. förra veckan\x10f" + - "re. denna vecka\x11fre. nästa vecka\x11för {0} fre. sen\x12för {0} fred." + - " sen\x0bförra fre.\x0adenna fre.\x0bnästa fre.\x08+{0} fre\x0a−{0} fre" + - "\x15lördag förra veckan\x13lördag denna vecka\x14lördag nästa vecka\x0eo" + - "m {0} lördag\x10om {0} lördagar\x16för {0} lördag sedan\x18för {0} lörda" + - "gar sedan\x13lör. förra veckan\x11lör. denna vecka\x12lör. nästa vecka" + - "\x0com {0} lör.\x12för {0} lör. sen\x0cförra lör.\x0bdenna lör.\x0cnästa" + - " lör.\x09+{0} lör\x0b−{0} lör\x05fm/em\x05timme\x0bdenna timme\x0com {0}" + - " timme\x0dom {0} timmar\x14för {0} timme sedan\x15för {0} timmar sedan" + - "\x03tim\x0aom {0} tim\x12för {0} tim sedan\x08−{0} h\x0bdenna minut\x14f" + - "ör {0} minut sedan\x16för {0} minuter sedan\x0bom\u00a0{0} min\x13för" + - "\u00a0{0} min sedan\x0a−{0} min\x15för {0} sekund sedan\x17för {0} sekun" + - "der sedan\x0bom\u00a0{0} sek\x0aom {0} sek\x13för\u00a0{0} sek sedan\x08" + - "−{0} s\x07tidszon\x06{0}tid\x0f{0} (sommartid)\x0f{0} (normaltid)\x1aK" + - "oordinerad universell tid\x12brittisk sommartid\x13irländsk sommartid" + - "\x0bHonolulutid\x11Honolulunormaltid\x11Honolulusommartid\x14västbrasili" + - "ansk tid\x1avästbrasiliansk normaltid\x1avästbrasiliansk sommartid\x0caf" + - "ghansk tid\x14centralafrikansk tid\x11östafrikansk tid\x10sydafrikansk t" + - "id\x12västafrikansk tid\x18västafrikansk normaltid\x18västafrikansk somm" + - "artid\x09Alaskatid\x11Alaska, normaltid\x11Alaska, sommartid\x09Almatyti" + - "d\x0fAlmatynormaltid\x0fAlmatysommartid\x0bAmazonastid\x13Amazonas, norm" + - "altid\x13Amazonas, sommartid\x19centralnordamerikansk tid\x1fcentralnord" + - "amerikansk normaltid\x1fcentralnordamerikansk sommartid\x16östnordamerik" + - "ansk tid\x1cöstnordamerikansk normaltid\x1cöstnordamerikansk sommartid" + - "\x12Klippiga bergentid\x1aKlippiga bergen, normaltid\x1aKlippiga bergen," + - " sommartid\x17västnordamerikansk tid\x1dvästnordamerikansk normaltid\x1d" + - "västnordamerikansk sommartid\x09Anadyrtid\x0fAnadyrnormaltid\x0fAnadyrso" + - "mmartid\x07Apiatid\x0fApia, normaltid\x0fApia, sommartid\x08Aqtautid\x0e" + - "Aqtaunormaltid\x0eAqtausommartid\x0aAqtöbetid\x10Aqtöbenormaltid\x10Aqtö" + - "besommartid\x10saudiarabisk tid\x16saudiarabisk normaltid\x16saudiarabis" + - "k sommartid\x12östargentinsk tid\x18östargentinsk normaltid\x18östargent" + - "insk sommartid\x13västargentinsk tid\x19västargentinsk normaltid\x19väst" + - "argentinsk sommartid\x0carmenisk tid\x12armenisk normaltid\x12armenisk s" + - "ommartid\x18nordamerikansk atlanttid\x1enordamerikansk atlantnormaltid" + - "\x1enordamerikansk atlantsommartid\x15centralaustralisk tid\x1bcentralau" + - "stralisk normaltid\x1bcentralaustralisk sommartid\x1avästcentralaustrali" + - "sk tid västcentralaustralisk normaltid västcentralaustralisk sommartid" + - "\x12östaustralisk tid\x18östaustralisk normaltid\x18östaustralisk sommar" + - "tid\x13västaustralisk tid\x19västaustralisk normaltid\x19västaustralisk " + - "sommartid\x12azerbajdzjansk tid\x18azerbajdzjansk normaltid\x18azerbajdz" + - "jansk sommartid\x0bazorisk tid\x11azorisk normaltid\x11azorisk sommartid" + - "\x11bangladeshisk tid\x17bangladeshisk normaltid\x17bangladeshisk sommar" + - "tid\x0cbhutansk tid\x0eboliviansk tid\x0bBrasiliatid\x13Brasilia, normal" + - "tid\x13Brasilia, sommartid\x09Bruneitid\x0cKap Verdetid\x14Kap Verde, no" + - "rmaltid\x14Kap Verde, sommartid\x08Caseytid\x0bChamorrotid\x0aChathamtid" + - "\x12Chatham, normaltid\x12Chatham, sommartid\x0cchilensk tid\x12chilensk" + - " normaltid\x12chilensk sommartid\x0ckinesisk tid\x12kinesisk normaltid" + - "\x12kinesisk sommartid\x0dTjojbalsantid\x15Tjojbalsan, normaltid\x15Tjoj" + - "balsan, sommartid\x0bJulöns tid\x12Keelingöarnas tid\x0fcolombiansk tid" + - "\x15colombiansk normaltid\x15colombiansk sommartid\x0fCooköarnas tid\x15" + - "Cooköarnas normaltid\x15Cooköarnas sommartid\x0bkubansk tid\x11kubansk n" + - "ormaltid\x11kubansk sommartid\x08Davistid\x16Dumont d’Urville-tid\x10öst" + - "timorisk tid\x0aPåskötid\x13Påskön, normaltid\x13Påskön, sommartid\x10ec" + - "uadoriansk tid\x14centraleuropeisk tid\x1acentraleuropeisk normaltid\x1a" + - "centraleuropeisk sommartid\x11östeuropeisk tid\x17östeuropeisk normaltid" + - "\x17östeuropeisk sommartid\x0eKaliningradtid\x12västeuropeisk tid\x18väs" + - "teuropeisk normaltid\x18västeuropeisk sommartid\x14Falklandsöarnas tid" + - "\x1aFalklandsöarna, normaltid\x1aFalklandsöarna, sommartid\x07Fijitid" + - "\x0fFiji, normaltid\x0fFiji, sommartid\x11Franska Guyanatid\x1dFranska S" + - "ydterritoriernas tid\x0dGalápagostid\x0aGambiertid\x0cgeorgisk tid\x12ge" + - "orgisk normaltid\x12georgisk sommartid\x0bKiribatitid\x0cGreenwichtid" + - "\x14östgrönländsk tid\x1aöstgrönländsk normaltid\x1aöstgrönländsk sommar" + - "tid\x15västgrönländsk tid\x1bvästgrönländsk normaltid\x1bvästgrönländsk " + - "sommartid\x07Guamtid\x11Persiska vikentid\x09Guyanatid\x13Honolulu, norm" + - "altid\x13Honolulu, sommartid\x0bHongkongtid\x13Hongkong, normaltid\x13Ho" + - "ngkong, sommartid\x08Chovdtid\x10Chovd, normaltid\x10Chovd, sommartid" + - "\x0aindisk tid\x22Brittiska Indiska oceanöarnas tid\x10indokinesisk tid" + - "\x15centralindonesisk tid\x12östindonesisk tid\x13västindonesisk tid\x0a" + - "iransk tid\x10iransk normaltid\x10iransk sommartid\x0aIrkutsktid\x12Irku" + - "tsk, normaltid\x12Irkutsk, sommartid\x0disraelisk tid\x13israelisk norma" + - "ltid\x13israelisk sommartid\x0bjapansk tid\x11japansk normaltid\x11japan" + - "sk sommartid\x0cKamtjatkatid\x12Kamtjatkanormaltid\x12Kamtjatkasommartid" + - "\x13östkazakstansk tid\x14västkazakstansk tid\x0ckoreansk tid\x12koreans" + - "k normaltid\x12koreansk sommartid\x09Kosraetid\x0eKrasnojarsktid\x16Kras" + - "nojarsk, normaltid\x16Krasnojarsk, sommartid\x0dkirgizisk tid\x0cSri Lan" + - "katid\x0fLineöarnas tid\x0cLord Howetid\x14Lord Howe, normaltid\x14Lord " + - "Howe, sommartid\x08Macautid\x0eMacaunormaltid\x0eMacausommartid\x0cMacqu" + - "arietid\x0aMagadantid\x12Magadan, normaltid\x12Magadan, sommartid\x0dmal" + - "aysisk tid\x0dMaldivernatid\x0cMarquesastid\x13Marshallöarnas tid\x0cMau" + - "ritiustid\x14Mauritius, normaltid\x14Mauritius, sommartid\x09Mawsontid" + - "\x16nordvästmexikansk tid\x1cnordvästmexikansk normaltid\x1cnordvästmexi" + - "kansk sommartid\x17mexikansk stillahavstid\x22mexikansk stillahavstid, n" + - "ormaltid\x22mexikansk stillahavstid, sommartid\x0eUlaanbaatartid\x16Ulaa" + - "nbaatar, normaltid\x16Ulaanbaatar, sommartid\x09Moskvatid\x11Moskva, nor" + - "maltid\x11Moskva, sommartid\x0dburmesisk tid\x08Naurutid\x0enepalesisk t" + - "id\x11Nya Kaledonientid\x19Nya Kaledonien, normaltid\x19Nya Kaledonien, " + - "sommartid\x10nyzeeländsk tid\x16nyzeeländsk normaltid\x16nyzeeländsk som" + - "martid\x0fNewfoundlandtid\x17Newfoundland, normaltid\x17Newfoundland, so" + - "mmartid\x07Niuetid\x0fNorfolköns tid\x16Fernando de Noronhatid\x1eFernan" + - "do de Noronha, normaltid\x1eFernando de Noronha, sommartid\x13Nordmarian" + - "ernas tid\x0eNovosibirsktid\x16Novosibirsk, normaltid\x16Novosibirsk, so" + - "mmartid\x07Omsktid\x0fOmsk, normaltid\x0fOmsk, sommartid\x0epakistansk t" + - "id\x14pakistansk normaltid\x14pakistansk sommartid\x08Palautid\x15Papua " + - "Nya Guineas tid\x10paraguayansk tid\x16paraguayansk normaltid\x16paragua" + - "yansk sommartid\x0cperuansk tid\x12peruansk normaltid\x12peruansk sommar" + - "tid\x0efilippinsk tid\x14filippinsk normaltid\x14filippinsk sommartid" + - "\x0cEnderburytid\x1aS:t Pierre och Miquelontid\x22S:t Pierre och Miquelo" + - "n, normaltid\x22S:t Pierre och Miquelon, sommartid\x0bPitcairntid\x09Pon" + - "apetid\x0cPyongyangtid\x0cQyzylordatid\x12Qyzylordanormaltid\x12Qyzylord" + - "asommartid\x0bRéuniontid\x0aRotheratid\x0bSachalintid\x13Sachalin, norma" + - "ltid\x13Sachalin, sommartid\x09Samaratid\x0fSamaranormaltid\x0fSamarasom" + - "martid\x0csamoansk tid\x12samoansk normaltid\x12samoansk sommartid\x0fSe" + - "ychellernatid\x0cSingaporetid\x12Salomonöarnas tid\x0fsydgeorgisk tid" + - "\x0aSurinamtid\x08Syowatid\x09Tahititid\x09Taipeitid\x11Taipei, normalti" + - "d\x11Taipei, sommartid\x0fTadzjikistantid\x0aTokelautid\x08Tongatid\x10T" + - "onga, normaltid\x10Tonga, sommartid\x08Chuuktid\x0dturkmensk tid\x13turk" + - "mensk normaltid\x13turkmensk sommartid\x09Tuvalutid\x0furuguayansk tid" + - "\x15uruguayansk normaltid\x15uruguayansk sommartid\x0cuzbekisk tid\x12uz" + - "bekisk normaltid\x12uzbekisk sommartid\x0aVanuatutid\x12Vanuatu, normalt" + - "id\x12Vanuatu, sommartid\x10venezuelansk tid\x0eVladivostoktid\x16Vladiv" + - "ostok, normaltid\x16Vladivostok, sommartid\x0cVolgogradtid\x14Volgograd," + - " normaltid\x14Volgograd, sommartid\x09Vostoktid\x0fWakeöarnas tid\x1dWal" + - "lis- och Futunaöarnas tid\x0aJakutsktid\x12Jakutsk, normaltid\x12Jakutsk" + - ", sommartid\x10Jekaterinburgtid\x18Jekaterinburg, normaltid\x18Jekaterin" + - "burg, sommartid" - -var bucket94 string = "" + // Size: 9767 bytes - "\x09Robo ya 1\x09Robo ya 2\x09Robo ya 3\x09Robo ya 4\x11saa sita za usik" + - "u\x12saa sita za mchana\x08alfajiri\x07asubuhi\x06mchana\x05jioni\x05usi" + - "ku\x07Asubuhi\x06Mchana\x04enzi\x05mwaka\x0emwaka uliopita\x09mwaka huu" + - "\x0amwaka ujao\x12baada ya mwaka {0}\x12baada ya miaka {0}\x12mwaka {0} " + - "uliopita\x13miaka {0} iliyopita\x04robo\x17robo ya mwaka iliyopita\x11ro" + - "bo hii ya mwaka\x18robo ya mwaka inayofuata\x11baada ya robo {0}\x12robo" + - " {0} iliyopita\x13robo {0} zilizopita\x05mwezi\x0emwezi uliopita\x09mwez" + - "i huu\x0amwezi ujao\x12baada ya mwezi {0}\x12baada ya miezi {0}\x12mwezi" + - " {0} uliopita\x13miezi {0} iliyopita\x04wiki\x0ewiki iliyopita\x08wiki h" + - "ii\x0awiki ijayo\x11baada ya wiki {0}\x12wiki {0} iliyopita\x13wiki {0} " + - "zilizopita\x0bwiki ya {0}\x04siku\x04juzi\x04jana\x03leo\x05kesho\x0bkes" + - "ho kutwa\x11baada ya siku {0}\x12siku {0} iliyopita\x13siku {0} zilizopi" + - "ta\x0csiku ya wiki\x12Jumapili iliyopita\x0cJumapili hii\x0eJumapili ija" + - "yo\x15baada ya Jumapili {0}\x16Jumapili {0} iliyopita\x17Jumapili {0} zi" + - "lizopita\x12Jumatatu iliyopita\x0cJumatatu hii\x0eJumatatu ijayo\x15baad" + - "a ya Jumatatu {0}\x16Jumatatu {0} iliyopita\x17Jumatatu {0} zilizopita" + - "\x11Jumanne iliyopita\x0bJumanne hii\x0dJumanne ijayo\x14baada ya Jumann" + - "e {0}\x15Jumanne {0} iliyopita\x16Jumanne {0} zilizopita\x12Jumatano ili" + - "yopita\x0cJumatano hii\x0eJumatano ijayo\x15baada ya Jumatano {0}\x16Jum" + - "atano {0} iliyopita\x17Jumatano {0} zilizopita\x12Alhamisi iliyopita\x0c" + - "Alhamisi hii\x0eAlhamisi ijayo\x15baada ya Alhamisi {0}\x16Alhamisi {0} " + - "iliyopita\x17Alhamisi {0} zilizopita\x10Ijumaa iliyopita\x0aIjumaa hii" + - "\x0cIjumaa ijayo\x13baada ya Ijumaa {0}\x14Ijumaa {0} iliyopita\x15Ijuma" + - "a {0} zilizopita\x12Jumamosi iliyopita\x0cJumamosi hii\x0eJumamosi ijayo" + - "\x15baada ya Jumamosi {0}\x16Jumamosi {0} iliyopita\x17Jumamosi {0} zili" + - "zopita\x07saa hii\x10baada ya saa {0}\x11saa {0} iliyopita\x12saa {0} zi" + - "lizopita\x11Saa {0} iliyopita\x12Saa {0} zilizopita\x0adakika hii\x13baa" + - "da ya dakika {0}\x14dakika {0} iliyopita\x15dakika {0} zilizopita\x03dak" + - "\x07sekunde\x09sasa hivi\x14baada ya sekunde {0}\x15Sekunde {0} iliyopit" + - "a\x16Sekunde {0} zilizopita\x15sekunde {0} iliyopita\x16sekunde {0} zili" + - "zopita\x0bsaa za eneo\x0aSaa za {0}\x14Saa za Mchana za {0}\x15Saa za wa" + - "stani za {0}#Muda wa Majira ya Joto wa Uingereza\x22Muda wa Majira ya Jo" + - "to wa Ayalandi\x12Saa za Afghanistan\x15Saa za Afrika ya Kati\x17Saa za " + - "Afrika Mashariki\x1cSaa Wastani za Afrika Kusini\x17Saa za Afrika Maghar" + - "ibi\x22Saa za Wastani za Afrika Magharibi)Saa za Majira ya joto za Afrik" + - "a Magharibi\x0dSaa za Alaska\x18Saa za Wastani za Alaska\x17Saa za Mchan" + - "a za Alaska\x0dSaa za Amazon\x18Saa za Wastani za Amazon\x1fSaa za Majir" + - "a ya joto za Amazon\x0bSaa za Kati\x16Saa za Wastani za Kati\x15Saa za M" + - "chana za Kati\x10Saa za Mashariki\x1bSaa za Wastani za Mashariki\x1aSaa " + - "za Mchana za Mashariki\x0fSaa za Mountain\x1aSaa za Wastani za Mountain" + - "\x19Saa za Mchana za Mountain\x0fSaa za Pasifiki\x1aSaa za Wastani za Pa" + - "sifiki\x19Saa za Mchana za Pasifiki\x0dSaa za Anadyr\x18Saa za Wastani z" + - "a Anadyr\x19Saa za Kiangazi za Anadyr\x0bSaa za Apia\x13Saa Wastani za A" + - "pia\x15Saa za Mchana za Apia\x0fSaa za Uarabuni\x17Saa Wastani za Uarabu" + - "ni\x19Saa za Mchana za Arabiani\x10Saa za Argentina\x1bSaa za Wastani za" + - " Argentina\x22Saa za Majira ya joto za Argentina\x1eSaa za Magharibi mwa" + - " Argentina&Saa Wastani za Magharibi mwa Argentina0Saa za Majira ya joto " + - "za Magharibi mwa Argentina\x0eSaa za Armenia\x16Saa Wastani za Armenia S" + - "aa za Majira ya joto za Armenia\x10Saa za Atlantiki\x1bSaa za Wastani za" + - " Atlantiki\x1aSaa za Mchana za Atlantiki\x18Saa za Australia ya Kati Saa" + - " Wastani za Australia ya Kati\x22Saa za Mchana za Australia ya Kati%Saa " + - "za Magharibi ya Kati ya Australia-Saa Wastani za Magharibi ya Kati ya Au" + - "stralia/Saa za Mchana za Magharibi ya Kati ya Australia\x1aSaa za Austra" + - "lia Mashariki&Saa Wastani za Mashariki mwa Australia(Saa za Mchana za Ma" + - "shariki mwa Australia\x1aSaa za Australia Magharibi\x22Saa Wastani za Au" + - "stralia Magharibi$Saa za Mchana za Australia Magharibi\x13Saa za Azeriba" + - "ijani\x1bSaa Wastani za Azeribaijani%Saa za Majira ya joto za Azeribaija" + - "ni\x0dSaa za Azores\x15Saa Wastani za Azores\x1fSaa za Majira ya joto za" + - " Azores\x11Saa za Bangladesh\x19Saa Wastani za Bangladesh#Saa za Majira " + - "ya joto za Bangladesh\x0dSaa za Bhutan\x0eSaa za Bolivia\x0fSaa za Brasi" + - "lia\x1aSaa za Wastani za Brasilia!Saa za Majira ya joto za Brasilia\x18S" + - "aa za Brunei Darussalam\x11Saa za Cape Verde\x1cSaa za Wastani za Cape V" + - "erde#Saa za Majira ya joto za Cape Verde\x17Saa Wastani za Chamorro\x0eS" + - "aa za Chatham\x16Saa Wastani za Chatham\x18Saa za Mchana za Chatham\x0cS" + - "aa za Chile\x17Saa za Wastani za Chile\x1eSaa za Majira ya joto za Chile" + - "\x0dSaa za Uchina\x15Saa Wastani za Uchina\x17Saa za Mchana za Uchina" + - "\x11Saa za Choibalsan\x19Saa Wastani za Choibalsan#Saa za Majira ya joto" + - " za Choibalsan\x1bSaa za Kisiwa cha Christmas\x17Saa za Visiwa vya Cocos" + - "\x0fSaa za Colombia\x1aSaa za Wastani za Colombia!Saa za Majira ya joto " + - "za Colombia\x16Saa za Visiwa vya Cook\x1eSaa Wastani za Visiwa vya Cook)" + - "Saa za Majira nusu ya joto za Visiwa Cook\x0bSaa za Cuba\x16Saa za Wasta" + - "ni ya Cuba\x15Saa za Mchana za Cuba\x0cSaa za Davis\x19Saa za Dumont-d’U" + - "rville\x16Saa za Timor Mashariki\x18Saa za Kisiwa cha Pasaka Saa Wastani" + - " za Kisiwa cha Pasaka*Saa za Majira ya joto za Kisiwa cha Pasaka\x0eSaa " + - "za Ecuador\x14Saa za Ulaya ya Kati\x1cSaa Wastani za Ulaya ya kati&Saa z" + - "a Majira ya joto za Ulaya ya Kati\x1aSaa za Mashariki mwa Ulaya\x22Saa W" + - "astani za Mashariki mwa Ulaya,Saa za Majira ya joto za Mashariki mwa Ula" + - "ya$Saa za Further-eastern European Time\x1aSaa za Magharibi mwa Ulaya" + - "\x22Saa Wastani za Magharibi mwa Ulaya,Saa za Majira ya joto za Magharib" + - "i mwa Ulaya\x1aSaa za Visiwa vya Falkland\x22Saa Wastani za Visiwa vya F" + - "alkland,Saa za Majira ya joto za Visiwa vya Falkland\x0bSaa za Fiji\x13S" + - "aa Wastani za Fiji\x1dSaa za Majira ya joto za Fiji\x19Saa za Guiana ya " + - "Ufaransa'Saa za Kusini mwa Ufaransa na Antaktiki\x10Saa za Galapagos\x0e" + - "Saa za Gambier\x0cSaa za Jojia\x14Saa Wastani za Jojia\x1eSaa za Majira " + - "ya joto za Jojia\x19Saa za Visiwa vya Gilbert\x10Saa za Greenwich\x1aSaa" + - " za Greenland Mashariki%Saa za Wastani za Greenland Mashariki,Saa za Maj" + - "ira ya joto za Greenland Mashariki\x1aSaa za Greenland Magharibi%Saa za " + - "Wastani za Greenland Magharibi,Saa za Majira ya joto za Greenland Maghar" + - "ibi\x13Saa Wastani za Gulf\x0dSaa za Guyana\x16Saa za Hawaii-Aleutian!Sa" + - "a za Wastani za Hawaii-Aleutian Saa za Mchana za Hawaii-Aleutian\x10Saa " + - "za Hong Kong\x18Saa Wastani za Hong Kong\x22Saa za Majira ya joto za Hon" + - "g Kong\x0bSaa za Hovd\x13Saa Wastani za Hovd\x1dSaa za Majira ya joto za" + - " Hovd\x14Saa Wastani za India\x13Saa za Bahari Hindi\x10Saa za Indochina" + - "\x18Saa za Indonesia ya Kati\x1eSaa za Mashariki mwa Indonesia\x1eSaa za" + - " Magharibi mwa Indonesia\x0bSaa za Iran\x13Saa Wastani za Iran\x15Saa za" + - " Mchana za Iran\x0eSaa za Irkutsk\x19Saa za Wastani za Irkutsk Saa za Ma" + - "jira ya joto za Irkutsk\x0eSaa za Israeli\x16Saa Wastani za Israeli\x18S" + - "aa za Mchana za Israeli\x0cSaa za Japan\x14Saa Wastani za Japan\x16Saa z" + - "a Mchana za Japan\x1fSaa za Petropavlovsk-Kamchatski*Saa za Wastani za P" + - "etropavlovsk-Kamchatski+Saa za Kiangazi za Petropavlovsk-Kamchatski\x1bS" + - "aa za Kazakhstan Mashariki\x1bSaa za Kazakhstan Magharibi\x0cSaa za Kore" + - "a\x14Saa Wastani za Korea\x16Saa za Mchana za Korea\x0dSaa za Kosrae\x12" + - "Saa za Krasnoyarsk\x1cSaa za Wastani za Krasnoyask$Saa za Majira ya joto" + - " za Krasnoyarsk\x10Saa za Kyrgystan\x16Saa za Visiwa vya Line\x10Saa za " + - "Lord Howe\x18Saa Wastani za Lord Howe\x1aSaa za Mchana za Lord Howe\x1bS" + - "aa za kisiwa cha Macquarie\x0eSaa za Magadan\x19Saa za Wastani za Magada" + - "n Saa za Majira ya joto za Magadan\x0fSaa za Malaysia\x0fSaa za Maldives" + - "\x10Saa za Marquesas\x1aSaa za Visiwa vya Marshall\x10Saa za Mauritius" + - "\x1bSaa za Wastani za Mauritius\x22Saa za Majira ya joto za Mauritius" + - "\x0dSaa za Mawson!Saa za Mexico Kaskazini Magharibi)Saa Wastani za Mexic" + - "o Kaskazini Magharibi+Saa za mchana za Mexico Kaskazini Magharibi\x19Saa" + - " za pasifiki za Mexico$Saa za wastani za pasifiki za Mexico#Saa za mchan" + - "a za pasifiki za Mexico\x11Saa za Ulan Bator\x19Saa Wastani za Ulan Bato" + - "r#Saa za Majira ya joto za Ulan Bator\x0dSaa za Moscow\x18Saa za Wastani" + - " za Moscow\x1fSaa za Majira ya joto za Moscow\x0eSaa za Myanmar\x0cSaa z" + - "a Nauru\x0cSaa za Nepal\x14Saa za New Caledonia\x1cSaa Wastani za New Ca" + - "ledonia&Saa za Majira ya joto za New Caledonia\x12Saa za New Zealand\x1a" + - "Saa Wastani za New Zealand\x1cSaa za Mchana za New Zealand\x13Saa za New" + - "foundland\x1eSaa za Wastani za Newfoundland\x1dSaa za Mchana za Newfound" + - "land\x0bSaa za Niue\x19Saa za Kisiwa cha Norfolk\x1aSaa za Fernando de N" + - "oronha\x22Saa Wastani za Fernando de Noronha,Saa za Majira ya joto za Fe" + - "rnando de Noronha\x12Saa za Novosibirsk\x1dSaa za Wastani za Novosibirsk" + - "$Saa za Majira ya joto za Novosibirsk\x0bSaa za Omsk\x16Saa za Wastani z" + - "a Omsk\x1dSaa za Majira ya joto za Omsk\x0fSaa za Pakistan\x17Saa Wastan" + - "i za Pakistan!Saa za Majira ya joto za Pakistan\x0cSaa za Palau\x17Saa z" + - "a Papua New Guinea\x0fSaa za Paraguay\x1aSaa za Wastani za Paraguay!Saa " + - "za Majira ya joto za Paraguay\x0bSaa za Peru\x16Saa za Wastani za Peru" + - "\x1dSaa za Majira ya joto za Peru\x10Saa za Ufilipino\x18Saa Wastani za " + - "Ufilipino\x22Saa za Majira ya joto za Ufilipino\x19Saa za Visiwa vya Pho" + - "enix\x1fSaa za Saint-Pierre na Miquelon*Saa za Wastani ya Saint-Pierre n" + - "a Miquelon)Saa za Mchana za Saint-Pierre na Miquelon\x0fSaa za Pitcairn" + - "\x0dSaa za Ponape\x10Saa za Pyongyang\x0eSaa za Reunion\x0eSaa za Rother" + - "a\x0fSaa za Sakhalin\x1aSaa za Wastani za Sakhalin!Saa za Majira ya joto" + - " za Sakhalin\x0dSaa za Samara\x18Saa za Wastani za Samara\x19Saa za Kian" + - "gazi za Samara\x0cSaa za Samoa\x14Saa Wastani za Samoa\x1eSaa za Majira " + - "ya joto za Samoa\x12Saa za Ushelisheli\x18Saa Wastani za Singapore\x19Sa" + - "a za Visiwa vya Solomon\x13Saa za Jojia Kusini\x0fSaa za Suriname\x0cSaa" + - " za Syowa\x0dSaa za Tahiti\x0dSaa za Taipei\x15Saa Wastani za Taipei\x17" + - "Saa za Mchana za Taipei\x11Saa za Tajikistan\x0eSaa za Tokelau\x0cSaa za" + - " Tonga\x14Saa Wastani za Tonga\x1eSaa za Majira ya joto za Tonga\x0cSaa " + - "za Chuuk\x13Saa za Turkmenistan\x1eSaa za Wastani za Turkmenistan%Saa za" + - " Majira ya joto za Turkmenistan\x0dSaa za Tuvalu\x0eSaa za Uruguay\x19Sa" + - "a za Wastani za Uruguay Saa za Majira ya joto za Uruguay\x11Saa za Uzbek" + - "istan\x1cSaa za Wastani za Uzbekistan#Saa za Majira ya joto za Uzbekista" + - "n\x0eSaa za Vanuatu\x16Saa Wastani za Vanuatu Saa za Majira ya joto za V" + - "anuatu\x10Saa za Venezuela\x12Saa za Vladivostok\x1dSaa za Wastani za Vl" + - "adivostok$Saa za Majira ya joto za Vladivostok\x10Saa za Volgograd\x1bSa" + - "a za Wastani za Volgograd\x22Saa za Majira ya joto za Volgograd\x0dSaa z" + - "a Vostok\x16Saa za Kisiwa cha Wake\x17Saa za Wallis na Futuna\x0eSaa za " + - "Yakutsk\x19Saa za Wastani za Yakutsk Saa za Majira ya joto za Yakutsk" + - "\x14Saa za Yekaterinburg\x1fSaa za Wastani za Yekaterinburg&Saa za Majir" + - "a ya joto za Yekaterinburg" - -var bucket95 string = "" + // Size: 27593 bytes - "\x06Wakati\x0cSiku ya juma\x0cMuda wa siku\x0d{1} 'saa' {0}\x07மா1\x07மா" + - "2\x07மா3\x07மா4\x07மா5\x07மா6\x07மா7\x07மா8\x07மா9\x08மா10\x08மா11\x08மா" + - "12\x10மாதம்1\x10மாதம்2\x10மாதம்3\x10மாதம்4\x10மாதம்5\x10மாதம்6\x10மாதம்7" + - "\x10மாதம்8\x10மாதம்9\x11மாதம்10\x11மாதம்11\x11மாதம்12\x09U, d MMMM\x08U," + - " d MMM\x17{1} அன்று {0}\x07ஜன.\x0dபிப்.\x0dமார்.\x0aஏப்.\x06மே\x0cஜூன்" + - "\x0cஜூலை\x07ஆக.\x0dசெப்.\x0aஅக்.\x07நவ.\x0aடிச.\x03ஜ\x06பி\x06மா\x03ஏ" + - "\x06ஜூ\x03ஆ\x06செ\x03அ\x03ந\x06டி\x0fஜனவரி\x18பிப்ரவரி\x12மார்ச்\x12ஏப்ர" + - "ல்\x12ஆகஸ்ட்\x1eசெப்டம்பர்\x18அக்டோபர்\x15நவம்பர்\x18டிசம்பர்\x0dஞாயி." + - "\x0dதிங்.\x0dசெவ்.\x0aபுத.\x0dவியா.\x0dவெள்.\x09சனி\x06ஞா\x06தி\x06பு" + - "\x06வி\x06வெ\x03ச\x12ஞாயிறு\x15திங்கள்\x18செவ்வாய்\x0fபுதன்\x15வியாழன்" + - "\x12வெள்ளி\x0eகாலா.1\x0eகாலா.2\x0eகாலா.3\x0eகாலா.4.ஒன்றாம் காலாண்டு1இரண்" + - "டாம் காலாண்டு1மூன்றாம் காலாண்டு1நான்காம் காலாண்டு\x18நள்ளிரவு\x18முற்ப" + - "கல்\x15நண்பகல்\x18பிற்பகல்\x15அதிகாலை\x0cகாலை\x12மதியம்\x0cமாலை\x1cஅந்" + - "தி மாலை\x0cஇரவு\x0aநள்.\x0aமு.ப\x0aநண்.\x0aபி.ப\x0aஅதி.\x07கா.\x0aமதி." + - "\x0dபிற்.\x07மா.\x17அந்தி மா.\x07இர.\x04இ.7கிறிஸ்துவுக்கு முன்\x11பொ.ச.ம" + - "ு\x22அன்னோ டோமினி\x0aபொ.ச\x0eகி.மு.\x0eகி.பி.\x0ea h:mm:ss zzzz\x0ba h" + - ":mm:ss z\x1d{1} ’அன்று’ {0}\x0fகாலம்\x0fஆண்டு\x1fகடந்த ஆண்டு\x1cஇந்த ஆண்" + - "டு\x22அடுத்த ஆண்டு\x19{0} ஆண்டில்\x22{0} ஆண்டுகளில்,{0} ஆண்டிற்கு முன்" + - "5{0} ஆண்டுகளுக்கு முன்\x04ஆ.\x08{0} ஆ.\x15{0} ஆ. முன்\x18காலாண்டு(கடந்த " + - "காலாண்டு%இந்த காலாண்டு+அடுத்த காலாண்டு#+{0} காலாண்டில்+{0} காலாண்டுகளி" + - "ல்5{0} காலாண்டுக்கு முன்>{0} காலாண்டுகளுக்கு முன்\x0dகாலா.(இறுதி காலாண" + - "்டு\x11{0} காலா.\x1e{0} காலா. முன்\x0b{0} கா.\x18{0} கா. முன்\x0fமாதம்" + - "\x1fகடந்த மாதம்\x1cஇந்த மாதம்\x22அடுத்த மாதம்\x1f{0} மாதத்தில்\x22{0} மா" + - "தங்களில்2{0} மாதத்துக்கு முன்5{0} மாதங்களுக்கு முன்\x0aமாத.\x0e{0} மாத" + - ".\x1b{0} மாத. முன்\x0b{0} மா.\x18{0} மா. முன்\x0fவாரம்\x1fகடந்த வாரம்" + - "\x1cஇந்த வாரம்\x22அடுத்த வாரம்\x1f{0} வாரத்தில்\x22{0} வாரங்களில்8{0} வா" + - "ரத்திற்கு முன்பு5{0} வாரங்களுக்கு முன்\x1e{0} -இன் வாரம்\x0e{0} வார." + - "\x1b{0} வார. முன்\x07வா.\x0b{0} வா.\x18{0} வா. முன்\x0cநாள்/நேற்று முன் " + - "தினம்\x12நேற்று\x0fஇன்று\x0cநாளை\x22நாளை மறுநாள்\x16{0} நாளில்\x1f{0} " + - "நாட்களில்){0} நாளுக்கு முன்2{0} நாட்களுக்கு முன்\x07நா.\x0b{0} நா.\x18" + - "{0} நா. முன்(வாரத்தின் நாள்\x22கடந்த ஞாயிறு\x1fஇந்த ஞாயிறு%அடுத்த ஞாயிறு" + - "\x1c{0} ஞாயிறில்%{0} ஞாயிறுகளில்5{0} ஞாயிறுக்கு முன்பு>{0} ஞாயிறுகளுக்கு" + - " முன்பு\x1dகடந்த ஞாயி.\x1aஇந்த ஞாயி. அடுத்த ஞாயி.\x11{0} ஞாயி.\x1e{0} ஞா" + - "யி. முன்\x17கடந்த ஞா.\x14இந்த ஞா.\x1aஅடுத்த ஞா.\x0b{0} ஞா.\x18{0} ஞா. " + - "முன்%கடந்த திங்கள்\x22இந்த திங்கள்(அடுத்த திங்கள்\x1f{0} திங்களில்({0}" + - " திங்கள்களில்2{0} திங்களுக்கு முன்;{0} திங்கள்களுக்கு முன்\x1dகடந்த திங்" + - ".\x1aஇந்த திங். அடுத்த திங்.\x11{0} திங்.\x1e{0} திங். முன்(கடந்த செவ்வா" + - "ய்%இந்த செவ்வாய்+அடுத்த செவ்வாய்\x22{0} செவ்வாயில்+{0} செவ்வாய்களில்/{" + - "0} செவ்வாய் முன்பு8{0} செவ்வாய்கள் முன்பு\x1dகடந்த செவ்.\x1aஇந்த செவ். அ" + - "டுத்த செவ்.\x11{0} செவ்.>{0} செவ்வாய்களுக்கு முன்${0} செவ். முன்பு\x1f" + - "கடந்த புதன்\x1cஇந்த புதன்\x22அடுத்த புதன்\x19{0} புதனில்\x22{0} புதன்க" + - "ளில்,{0} புதனுக்கு முன்5{0} புதன்களுக்கு முன்\x1aகடந்த புத.\x17இந்த பு" + - "த.\x1dஅடுத்த புத.\x0e{0} புத.\x1b{0} புத. முன்%கடந்த வியாழன்\x22இந்த வ" + - "ியாழன்(அடுத்த வியாழன்\x1f{0} வியாழனில்({0} வியாழன்களில்2{0} வியாழனுக்க" + - "ு முன்;{0} வியாழன்களுக்கு முன்\x1dகடந்த வியா.\x1aஇந்த வியா. அடுத்த விய" + - "ா.\x11{0} வியா.\x1e{0} வியா. முன்\x22கடந்த வெள்ளி\x1fஇந்த வெள்ளி%அடுத்" + - "த வெள்ளி\x22{0} வெள்ளியில்%{0} வெள்ளிகளில்/{0} வெள்ளிக்கு முன்8{0} வெள" + - "்ளிகளுக்கு முன்\x1dகடந்த வெள்.\x1aஇந்த வெள். அடுத்த வெள்.\x11{0} வெள்." + - "\x1e{0} வெள். முன்\x19கடந்த சனி\x16இந்த சனி\x1cஅடுத்த சனி\x19{0} சனியில்" + - "\x1c{0} சனிகளில்&{0} சனிக்கு முன்/{0} சனிகளுக்கு முன்\x0e{0} சனி.\x1b{0}" + - " சனி. முன்1முற்பகல்/பிற்பகல்\x09மணி;இந்த ஒரு மணிநேரத்தில்({0} மணிநேரத்தி" + - "ல்){0} மணிநேரம் முன்\x0aமணி.\x0e{0} மணி.\x1b{0} மணி. முன்\x04ம.\x08{0}" + - " ம.\x15{0} ம. முன்\x15நிமிடம்8இந்த ஒரு நிமிடத்தில்%{0} நிமிடத்தில்({0} ந" + - "ிமிடங்களில்8{0} நிமிடத்திற்கு முன்;{0} நிமிடங்களுக்கு முன்\x0dநிமி." + - "\x11{0} நிமி.\x1e{0} நிமி. முன்\x0b{0} நி.\x18{0} நி. முன்\x12விநாடி\x15" + - "இப்போது\x22{0} விநாடியில்%{0} விநாடிகளில்/{0} விநாடிக்கு முன்8{0} விநா" + - "டிகளுக்கு முன்\x0dவிநா.\x11{0} விநா.\x1e{0} விநா. முன்\x07வி.\x0b{0} வ" + - "ி.\x18{0} வி. முன்\x1fநேர மண்டலம்\x13{0} நேரம்&{0} பகலொளி நேரம்){0} நி" + - "லையான நேரம்;பிரிட்டிஷ் கோடை நேரம்5ஐரிஷ் நிலையான நேரம்\x1fஅக்ரே நேரம்&அ" + - "க்ரே தர நேரம்,அக்ரே கோடை நேரம்:ஆஃப்கானிஸ்தான் நேரம்Aமத்திய ஆப்பிரிக்க " + - "நேரம்Dகிழக்கு ஆப்பிரிக்க நேரம்Qதென் ஆப்பிரிக்க நிலையான நேரம்Aமேற்கு ஆப" + - "்பிரிக்க நேரம்Wமேற்கு ஆப்பிரிக்க நிலையான நேரம்Nமேற்கு ஆப்பிரிக்க கோடை " + - "நேரம்%அலாஸ்கா நேரம்;அலாஸ்கா நிலையான நேரம்8அலாஸ்கா பகலொளி நேரம்%அல்மாடி" + - " நேரம்,அல்மாடி தர நேரம்2அல்மாடி கோடை நேரம்%அமேசான் நேரம்;அமேசான் நிலையான" + - " நேரம்2அமேசான் கோடை நேரம்\x22மத்திய நேரம்8மத்திய நிலையான நேரம்5மத்திய பக" + - "லொளி நேரம்1கிழக்கத்திய நேரம்Gகிழக்கத்திய நிலையான நேரம்Dகிழக்கத்திய பகல" + - "ொளி நேரம்+மவுன்டைன் நேரம்Aமவுன்டைன் நிலையான நேரம்>மவுன்டைன் பகலொளி நேர" + - "ம்%பசிபிக் நேரம்;பசிபிக் நிலையான நேரம்8பசிபிக் பகலொளி நேரம்\x22அனடீர் " + - "நேரம்/அனாடையர் தர நேரம்5அனாடையர் கோடை நேரம்\x1fஏபியா நேரம்5ஏபியா நிலைய" + - "ான நேரம்2ஏபியா பகலொளி நேரம்\x1fஅட்டௌ நேரம்&அட்டௌ தர நேரம்,அட்டௌ கோடை ந" + - "ேரம்%அட்டோபே நேரம்,அட்டோபே தர நேரம்2அட்டோபே கோடை நேரம்\x22அரேபிய நேரம்" + - "8அரேபிய நிலையான நேரம்5அரேபிய பகலொளி நேரம்1அர்ஜென்டினா நேரம்Gஅர்ஜென்டினா " + - "நிலையான நேரம்>அர்ஜென்டினா கோடை நேரம்Pமேற்கத்திய அர்ஜென்டினா நேரம்fமேற்" + - "கத்திய அர்ஜென்டினா நிலையான நேரம்]மேற்கத்திய அர்ஜென்டினா கோடை நேரம்(ஆர்" + - "மேனிய நேரம்>ஆர்மேனிய நிலையான நேரம்5ஆர்மேனிய கோடை நேரம்1அட்லாண்டிக் நேர" + - "ம்Gஅட்லாண்டிக் நிலையான நேரம்Dஅட்லாண்டிக் பகலொளி நேரம்Aமத்திய ஆஸ்திரேலி" + - "ய நேரம்]ஆஸ்திரேலியன் மத்திய நிலையான நேரம்Zஆஸ்திரேலியன் மத்திய பகலொளி ந" + - "ேரம்fஆஸ்திரேலியன் மத்திய மேற்கத்திய நேரம்|ஆஸ்திரேலியன் மத்திய மேற்கத்த" + - "ிய நிலையான நேரம்yஆஸ்திரேலியன் மத்திய மேற்கத்திய பகலொளி நேரம்Pகிழக்கத்த" + - "ிய ஆஸ்திரேலிய நேரம்lஆஸ்திரேலியன் கிழக்கத்திய நிலையான நேரம்iஆஸ்திரேலியன" + - "் கிழக்கத்திய பகலொளி நேரம்Mமேற்கத்திய ஆஸ்திரேலிய நேரம்iஆஸ்திரேலியன் மே" + - "ற்கத்திய நிலையான நேரம்fஆஸ்திரேலியன் மேற்கத்திய பகலொளி நேரம்.அசர்பைஜான்" + - " நேரம்Dஅசர்பைஜான் நிலையான நேரம்;அசர்பைஜான் கோடை நேரம்\x22அசோரஸ் நேரம்8அச" + - "ோரஸ் நிலையான நேரம்2அசோர்ஸ் கோடை நேரம்%வங்கதேச நேரம்;வங்கதேச நிலையான நே" + - "ரம்2வங்கதேச கோடை நேரம்\x22பூடான் நேரம்(பொலிவியா நேரம்.பிரேசிலியா நேரம்" + - "Dபிரேசிலியா நிலையான நேரம்;பிரேசிலியா கோடை நேரம்Aபுருனே டருஸ்ஸலாம் நேரம்/" + - "கேப் வெர்டே நேரம்Eகேப் வெர்டே நிலையான நேரம்<கேப் வெர்டே கோடை நேரம்8சாம" + - "ோரோ நிலையான நேரம்%சத்தாம் நேரம்;சத்தாம் நிலையான நேரம்8சத்தாம் பகலொளி ந" + - "ேரம்\x1cசிலி நேரம்2சிலி நிலையான நேரம்)சிலி கோடை நேரம்\x19சீன நேரம்/சீன" + - " நிலையான நேரம்,சீன பகலொளி நேரம்1சோய்பால்சன் நேரம்Gசோய்பால்சன் நிலையான நே" + - "ரம்>சோய்பால்சன் கோடை நேரம்>கிறிஸ்துமஸ் தீவு நேரம்8கோகோஸ் தீவுகள் நேரம்" + - "+கொலம்பியா நேரம்Aகொலம்பியா நிலையான நேரம்8கொலம்பியா கோடை நேரம்2குக் தீவுக" + - "ள் நேரம்Hகுக் தீவுகள் நிலையான நேரம்Iகுக் தீவுகள் அரை கோடை நேரம்\x22கிய" + - "ூபா நேரம்8கியூபா நிலையான நேரம்5கியூபா பகலொளி நேரம்\x22டேவிஸ் நேரம்Kடும" + - "ோண்ட்-டி உர்வில்லே நேரம்8கிழக்கு திமோர் நேரம்/ஈஸ்டர் தீவு நேரம்Eஈஸ்டர்" + - " தீவு நிலையான நேரம்<ஈஸ்டர் தீவு கோடை நேரம்(ஈக்வடார் நேரம்;மத்திய ஐரோப்பி" + - "ய நேரம்Qமத்திய ஐரோப்பிய நிலையான நேரம்Hமத்திய ஐரோப்பிய கோடை நேரம்Jகிழக்" + - "கத்திய ஐரோப்பிய நேரம்`கிழக்கத்திய ஐரோப்பிய நிலையான நேரம்Wகிழக்கத்திய ஐ" + - "ரோப்பிய கோடை நேரம்Hதூர-கிழக்கு ஐரோப்பிய நேரம்Gமேற்கத்திய ஐரோப்பிய நேரம" + - "்]மேற்கத்திய ஐரோப்பிய நிலையான நேரம்Tமேற்கத்திய ஐரோப்பிய கோடை நேரம்Gஃபா" + - "க்லாந்து தீவுகள் நேரம்]ஃபாக்லாந்து தீவுகள் நிலையான நேரம்Tஃபாக்லாந்து த" + - "ீவுகள் கோடை நேரம்\x1fஃபிஜி நேரம்5ஃபிஜி நிலையான நேரம்,ஃபிஜி கோடை நேரம்8" + - "ஃபிரஞ்சு கயானா நேரம்kபிரெஞ்சு தெற்கத்திய & அண்டார்டிக் நேரம்%கலபகோஸ் ந" + - "ேரம்+கேம்பியர் நேரம்(ஜார்ஜியா நேரம்>ஜார்ஜியா நிலையான நேரம்5ஜார்ஜியா கோ" + - "டை நேரம்Aகில்பர்ட் தீவுகள் நேரம்Aகிரீன்விச் சராசரி நேரம்Jகிழக்கு கிரீன" + - "்லாந்து நேரம்`கிழக்கு கிரீன்லாந்து நிலையான நேரம்Wகிழக்கு கிரீன்லாந்து " + - "கோடை நேரம்Gமேற்கு கிரீன்லாந்து நேரம்]மேற்கு கிரீன்லாந்து நிலையான நேரம்" + - "Tமேற்கு கிரீன்லாந்து கோடை நேரம் கம் தர நேரம்;வளைகுடா நிலையான நேரம்\x1fகய" + - "ானா நேரம்8ஹவாய்-அலேஷியன் நேரம்Nஹவாய்-அலேஷியன் நிலையான நேரம்Kஹவாய்-அலேஷ" + - "ியன் பகலொளி நேரம்(ஹாங்காங் நேரம்>ஹாங்காங் நிலையான நேரம்5ஹாங்காங் கோடை " + - "நேரம்\x22ஹோவ்த் நேரம்8ஹோவ்த் நிலையான நேரம்/ஹோவ்த் கோடை நேரம்8இந்திய நி" + - "லையான நேரம்Gஇந்தியப் பெருங்கடல் நேரம்(இந்தோசீன நேரம்Aமத்திய இந்தோனேசிய" + - " நேரம்Pகிழக்கத்திய இந்தோனேசிய நேரம்Mமேற்கத்திய இந்தோனேசிய நேரம்\x1fஈரான்" + - " நேரம்5ஈரான் நிலையான நேரம்2ஈரான் பகலொளி நேரம்1இர்குட்ஸ்க் நேரம்Gஇர்குட்ஸ" + - "்க் நிலையான நேரம்>இர்குட்ஸ்க் கோடை நேரம்%இஸ்ரேல் நேரம்;இஸ்ரேல் நிலையான" + - " நேரம்8இஸ்ரேல் பகலொளி நேரம்%ஜப்பான் நேரம்;ஜப்பான் நிலையான நேரம்8ஜப்பான் " + - "பகலொளி நேரம்bபெட்ரோபவ்லோவ்ஸ்க் கம்சட்ஸ்கி நேரம்iபெட்ரோபவ்லோவ்ஸ்க் கம்ச" + - "ட்ஸ்கி தர நேரம்oபெட்ரோபவ்லோவ்ஸ்க் கம்சட்ஸ்கி கோடை நேரம்Aகிழக்கு கஜகஸ்த" + - "ான் நேரம்>மேற்கு கஜகஸ்தான் நேரம்\x1fகொரிய நேரம்5கொரிய நிலையான நேரம்2கொ" + - "ரிய பகலொளி நேரம்\x22கோஸ்ரே நேரம்=க்ரஸ்னோயார்ஸ்க் நேரம்Sக்ரஸ்னோயார்ஸ்க்" + - " நிலையான நேரம்Jக்ரஸ்னோயார்ஸ்க் கோடை நேரம்4கிர்கிஸ்தான் நேரம்\x1fலங்கா நே" + - "ரம்2லைன் தீவுகள் நேரம்/லார்ட் ஹோவ் நேரம்Eலார்ட் ஹோவ் நிலையான நேரம்Bலார" + - "்ட் ஹோவ் பகலொளி நேரம்%மக்காவ் நேரம்,மக்காவ் தர நேரம்2மக்காவ் கோடை நேரம" + - "்;மாக்கியூரி தீவு நேரம்\x1fமகதன் நேரம்5மகதன் நிலையான நேரம்,மகதன் கோடை " + - "நேரம்\x22மலேஷிய நேரம்4மாலத்தீவுகள் நேரம்4மார்கியூசாஸ் நேரம்;மார்ஷல் தீ" + - "வுகள் நேரம்+மொரிஷியஸ் நேரம்Aமொரிஷியஸ் நிலையான நேரம்8மொரிஷியஸ் கோடை நேர" + - "ம்\x1fமாசன் நேரம்Aவடமேற்கு மெக்ஸிகோ நேரம்Wவடமேற்கு மெக்ஸிகோ நிலையான நே" + - "ரம்Tவடமேற்கு மெக்ஸிகோ பகலொளி நேரம்Aமெக்ஸிகன் பசிபிக் நேரம்Wமெக்ஸிகன் ப" + - "சிபிக் நிலையான நேரம்Tமெக்ஸிகன் பசிபிக் பகலொளி நேரம்,உலன் பாடர் நேரம்Bஉ" + - "லன் பாடர் நிலையான நேரம்9உலன் பாடர் கோடை நேரம்\x22மாஸ்கோ நேரம்8மாஸ்கோ ந" + - "ிலையான நேரம்/மாஸ்கோ கோடை நேரம்+மியான்மர் நேரம்\x1fநவ்ரூ நேரம்\x1fநேபாள" + - " நேரம்8நியூ கலிடோனியா நேரம்Nநியூ கலிடோனியா நிலையான நேரம்Eநியூ கலிடோனியா " + - "கோடை நேரம்4நியூசிலாந்து நேரம்Jநியூசிலாந்து நிலையான நேரம்Gநியூசிலாந்து " + - "பகலொளி நேரம்Fநியூஃபவுண்ட்லாந்து நேரம்\\நியூஃபவுண்ட்லாந்து நிலையான நேரம" + - "்Yநியூஃபவுண்ட்லாந்து பகலொளி நேரம்\x1cநியு நேரம்8நார்ஃபோக் தீவு நேரம்Kப" + - "ெர்னாண்டோ டி நோரன்ஹா நேரம்dபெர்னான்டோ டி நோரோன்ஹா நிலையான நேரம்[பெர்னா" + - "ன்டோ டி நோரோன்ஹா கோடை நேரம்Hவடக்கு மரினா தீவுகள் நேரம்:நோவோசிபிரிஸ்க் " + - "நேரம்Pநோவோசிபிரிஸ்க் நிலையான நேரம்Gநோவோசிபிரிஸ்க் கோடை நேரம்%ஓம்ஸ்க் ந" + - "ேரம்;ஓம்ஸ்க் நிலையான நேரம்2ஓம்ஸ்க் கோடை நேரம்.பாகிஸ்தான் நேரம்Dபாகிஸ்த" + - "ான் நிலையான நேரம்;பாகிஸ்தான் கோடை நேரம்\x1fபாலவ் நேரம்?பபுவா நியூ கினி" + - "யா நேரம்%பராகுவே நேரம்;பராகுவே நிலையான நேரம்2பராகுவே கோடை நேரம்\x1cபெர" + - "ு நேரம்2பெரு நிலையான நேரம்)பெரு கோடை நேரம்.பிலிப்பைன் நேரம்Dபிலிப்பைன்" + - " நிலையான நேரம்;பிலிப்பைன் கோடை நேரம்Aஃபோனிக்ஸ் தீவுகள் நேரம்_செயின்ட் பி" + - "யரி & மிக்குயிலான் நேரம்uசெயின்ட் பியரி & மிக்குயிலான் நிலையான நேரம்rச" + - "ெயின்ட் பியரி & மிக்குயிலான் பகலொளி நேரம்4பிட்கெய்ர்ன் நேரம்\x22போனாபே" + - " நேரம்.பியாங்யாங் நேரம்.கைஜைலோர்டா நேரம்5கைஜைலோர்டா தர நேரம்;கைஜைலோர்டா " + - "கோடை நேரம்+ரீயூனியன் நேரம்\x22ரோதேரா நேரம்\x22சகலின் நேரம்8சகலின் நிலை" + - "யான நேரம்/சகலின் கோடை நேரம்\x1cசமரா நேரம்#சமரா தர நேரம்)சமரா கோடை நேரம" + - "்\x1fசமோவா நேரம்5சமோவா நிலையான நேரம்2சமோவா பகலொளி நேரம்(சீசெல்ஸ் நேரம்" + - "Gசிங்கப்பூர் நிலையான நேரம்8சாலமன் தீவுகள் நேரம்;தெற்கு ஜார்ஜியா நேரம்(சு" + - "ரினாம் நேரம்\x22ஸ்யோவா நேரம்\x1fதஹிதி நேரம்\x22தாய்பே நேரம்8தாய்பே நில" + - "ையான நேரம்5தாய்பே பகலொளி நேரம்1தஜிகிஸ்தான் நேரம்.டோக்கெலாவ் நேரம்\x22ட" + - "ோங்கா நேரம்8டோங்கா நிலையான நேரம்/டோங்கா கோடை நேரம்\x1cசுக் நேரம்@துர்க" + - "்மெனிஸ்தான் நேரம்Vதுர்க்மெனிஸ்தான் நிலையான நேரம்Mதுர்க்மெனிஸ்தான் கோடை" + - " நேரம்\x22துவாலு நேரம்%உருகுவே நேரம்;உருகுவே நிலையான நேரம்2உருகுவே கோடை " + - "நேரம்7உஸ்பெகிஸ்தான் நேரம்Mஉஸ்பெகிஸ்தான் நிலையான நேரம்Dஉஸ்பெகிஸ்தான் கோ" + - "டை நேரம்+வனுவாட்டு நேரம்Aவனுவாட்டு நிலையான நேரம்8வனுவாட்டு கோடை நேரம்(" + - "வெனிசுலா நேரம்:விளாடிவோஸ்டோக் நேரம்Pவிளாடிவோஸ்டோக் நிலையான நேரம்Gவிளாட" + - "ிவோஸ்டோக் கோடை நேரம்4வோல்கோக்ராட் நேரம்Jவோல்கோக்ராட் நிலையான நேரம்Aவோல" + - "்கோக்ராட் கோடை நேரம்(வோஸ்டோக் நேரம்)வேக் தீவு நேரம்Tவாலிஸ் மற்றும் ஃப்" + - "யூடுனா நேரம்+யகுட்ஸ்க் நேரம்Aயகுட்ஸ்க் நிலையான நேரம்8யகுட்ஸ்க் கோடை நே" + - "ரம்=யேகாடெரின்பர்க் நேரம்Sயேகாடெரின்பர்க் நிலையான நேரம்Jயேகாடெரின்பர்க" + - "் கோடை நேரம்" - -var bucket96 string = "" + // Size: 26015 bytes - "\x06జన\x0fఫిబ్ర\x12మార్చి\x0fఏప్రి\x06మే\x0cజూన్\x0cజులై\x06ఆగ\x15సెప్టె" + - "ం\x0fఅక్టో\x09నవం\x0fడిసెం\x03జ\x06ఫి\x06మా\x03ఏ\x06జూ\x06జు\x03ఆ\x06స" + - "ె\x03అ\x03న\x06డి\x0fజనవరి\x18ఫిబ్రవరి\x15ఏప్రిల్\x12ఆగస్టు\x1eసెప్టెం" + - "బర్\x18అక్టోబర్\x12నవంబర్\x18డిసెంబర్\x09ఆది\x09సోమ\x0cమంగళ\x09బుధ\x0c" + - "గురు\x0fశుక్ర\x09శని\x06సో\x03మ\x06బు\x06గు\x06శు\x03శ\x06మం\x15ఆదివార" + - "ం\x15సోమవారం\x18మంగళవారం\x15బుధవారం\x18గురువారం\x1bశుక్రవారం\x15శనివార" + - "ం\x0dత్రై1\x0dత్రై2\x0dత్రై3\x0dత్రై4\x1d1వ త్రైమాసం\x1d2వ త్రైమాసం" + - "\x1d3వ త్రైమాసం\x1d4వ త్రైమాసం.మొదటి త్రైమాసికం.రెండవ త్రైమాసికం+మూడవ త్" + - "రైమాసికం1నాల్గవ త్రైమాసికం\x1eఅర్థరాత్రి\x0cఉదయం\x1bమధ్యాహ్నం\x18సాయంత" + - "్రం\x12రాత్రి\x03ఉ\x06సా+క్రీస్తు పూర్వంAప్రస్తుత శకానికి పూర్వం\x22క్" + - "రీస్తు శకం\x22ప్రస్తుత శకం\x12క్రీపూ\x0fక్రీశ\x0fd, MMMM y, EEEE\x12చై" + - "త్రం\x12వైశాఖం\x18జ్యేష్ఠం\x0fఆషాఢం\x15శ్రావణం\x18భాద్రపదం\x18ఆశ్వయుజం" + - "\x18కార్తీకం\x1bమార్గశిరం\x12పుష్యం\x0cమాఘం\x15ఫల్గుణం\x06శక\x1aయుగం, శక" + - "ము\x18సంవత్సరం\x1fగత సంవత్సరం\x1cఈ సంవత్సరం+తదుపరి సంవత్సరం\x22{0} సంవ" + - "త్సరంలో({0} సంవత్సరాల్లో/{0} సంవత్సరం క్రితం2{0} సంవత్సరాల క్రితం\x07స" + - "ం.\x11{0} సం.లో\x1e{0} సం. క్రితం\x1eత్రైమాసికం%గత త్రైమాసికం\x22ఈ త్ర" + - "ైమాసికం1తదుపరి త్రైమాసికం({0} త్రైమాసికంలో.{0} త్రైమాసికాల్లో5{0} త్రై" + - "మాసికం క్రితం8{0} త్రైమాసికాల క్రితం\x0dత్రై.\x1d{0} త్రైమా.లో#{0} త్ర" + - "ైమా.ల్లో*{0} త్రైమా. క్రితం\x09నెల\x10గత నెల\x0dఈ నెల\x1cతదుపరి నెల" + - "\x13{0} నెలలో\x19{0} నెలల్లో {0} నెల క్రితం#{0} నెలల క్రితం\x06నె\x0fవార" + - "ము\x13గత వారం\x10ఈ వారం\x1fతదుపరి వారం\x16{0} వారంలో\x1c{0} వారాల్లో#{" + - "0} వారం క్రితం&{0} వారాల క్రితం\x10{0} రోజు\x06వా\x0cదినం\x0fమొన్న\x0fని" + - "న్న\x10ఈ రోజు\x0cరేపు\x18ఎల్లుండి\x16{0} రోజులో\x1c{0} రోజుల్లో#{0} రో" + - "జు క్రితం&{0} రోజుల క్రితం\x06ది\x11+{0} రోజు\x1fవారంలో రోజు\x1cగత ఆది" + - "వారం\x19ఈ ఆదివారం(తదుపరి ఆదివారం\x1f{0} ఆదివారంలో%{0} ఆదివారాల్లో/{0} " + - "ఆదివారాల క్రితం\x11గత ఆది.\x0eఈ ఆది.\x1dతదుపరి ఆది.\x0aగత ఆ\x07ఈ ఆ\x16" + - "తదుపరి ఆ\x1cగత సోమవారం\x19ఈ సోమవారం(తదుపరి సోమవారం\x1f{0} సోమవారంలో" + - "\x22{0} సోమవారాలలో,{0} సోమవారం క్రితం/{0} సోమవారాల క్రితం\x11గత సోమ.\x0e" + - "ఈ సోమ.\x1dతదుపరి సోమ.\x0dగత సో\x0aఈ సో\x19తదుపరి సో\x1fగత మంగళవారం\x1c" + - "ఈ మంగళవారం+తదుపరి మంగళవారం\x22{0} మంగళవారంలో%{0} మంగళవారాలలో/{0} మంగళవ" + - "ారం క్రితం2{0} మంగళవారాల క్రితం\x14గత మంగళ.\x11ఈ మంగళ. తదుపరి మంగళ." + - "\x0dగత మం\x0aఈ మం\x19తదుపరి మం\x1cగత బుధవారం\x19ఈ బుధవారం(తదుపరి బుధవారం" + - "\x1f{0} బుధవారంలో\x22{0} బుధవారాలలో,{0} బుధవారం క్రితం/{0} బుధవారాల క్రి" + - "తం\x11గత బుధ.\x0eఈ బుధ.\x1dతదుపరి బుధ.\x0dగత బు\x0aఈ బు\x19తదుపరి బు" + - "\x1fగత గురువారం\x1cఈ గురువారం+తదుపరి గురువారం\x22{0} గురువారంలో%{0} గురు" + - "వారాలలో/{0} గురువారం క్రితం2{0} గురువారాల క్రితం\x14గత గురు.\x11ఈ గురు" + - ". తదుపరి గురు.\x0dగత గు\x0aఈ గు\x19తదుపరి గు\x22గత శుక్రవారం\x1fఈ శుక్రవ" + - "ారం.తదుపరి శుక్రవారం%{0} శుక్రవారంలో({0} శుక్రవారాలలో2{0} శుక్రవారం క్" + - "రితం5{0} శుక్రవారాల క్రితం\x17గత శుక్ర.\x14ఈ శుక్ర.#తదుపరి శుక్ర.\x0dగ" + - "త శు\x0aఈ శు\x19తదుపరి శు\x1cగత శనివారం\x19ఈ శనివారం(తదుపరి శనివారం" + - "\x1f{0} శనివారంలో\x22{0} శనివారాలలో,{0} శనివారం క్రితం/{0} శనివారాల క్రి" + - "తం\x11గత శని.\x0eఈ శని.\x1dతదుపరి శని.\x0aగత శ\x07ఈ శ\x16తదుపరి శ\x09గ" + - "ంట\x0dఈ గంట\x13{0} గంటలో\x19{0} గంటల్లో {0} గంట క్రితం#{0} గంటల క్రితం" + - "\x07గం.\x11{0} గం.లో\x1e{0} గం. క్రితం\x06గం\x15నిమిషము\x16ఈ నిమిషం\x1c{" + - "0} నిమిషంలో\x22{0} నిమిషాల్లో){0} నిమిషం క్రితం,{0} నిమిషాల క్రితం\x0dని" + - "మి.\x17{0} నిమి.లో${0} నిమి. క్రితం\x06ని\x0b+{0} ని\x0b-{0} ని\x0fసెక" + - "ను\x1bప్రస్తుతం\x19{0} సెకనులో\x1c{0} సెకన్లలో&{0} సెకను క్రితం){0} సె" + - "కన్ల క్రితం\x0aసెక.\x15{0} సెక. లో!{0} సెక. క్రితం\x0b+{0} సె\x19కాల మ" + - "ండలం\x10{0} సమయం\x1d{0} పగటి సమయం,{0} ప్రామాణిక సమయం5బ్రిటీష్ వేసవి సమ" + - "యం8ఐరిష్ ప్రామాణిక సమయం\x19ఏకర్ సమయం5ఏకర్ ప్రామాణిక సమయం)ఏకర్ వేసవి సమ" + - "యం1ఆఫ్ఘనిస్థాన్ సమయం;సెంట్రల్ ఆఫ్రికా సమయం5తూర్పు ఆఫ్రికా సమయంQదక్షిణ " + - "ఆఫ్రికా ప్రామాణిక సమయం5పశ్చిమ ఆఫ్రికా సమయంQపశ్చిమ ఆఫ్రికా ప్రామాణిక సమ" + - "యంEపశ్చిమ ఆఫ్రికా వేసవి సమయం\x22అలాస్కా సమయం>అలాస్కా ప్రామాణిక సమయం/అల" + - "ాస్కా పగటి సమయం\x22అల్మాటి సమయం>అల్మాటి ప్రామాణిక సమయం2అల్మాటి వేసవి స" + - "మయం\x22అమెజాన్ సమయం>అమెజాన్ ప్రామాణిక సమయం2అమెజాన్ వేసవి సమయం\x1cమధ్యమ" + - " సమయం8మధ్యమ ప్రామాణిక సమయం)మధ్యమ పగటి సమయం\x1fతూర్పు సమయం;తూర్పు ప్రామాణ" + - "ిక సమయం,తూర్పు పగటి సమయం(మౌంటెయిన్ సమయంDమౌంటెయిన్ ప్రామాణిక సమయం5మౌంటె" + - "యిన్ పగటి సమయం\x22పసిఫిక్ సమయం>పసిఫిక్ ప్రామాణిక సమయం/పసిఫిక్ పగటి సమయ" + - "ం\x1fఅనడైర్ సమయంDఅనాన్డ్రి ప్రామాణిక సమయం8అనాన్డ్రి వేసవి సమయం\x1cఏపియ" + - "ా సమయం8ఏపియా ప్రామాణిక సమయం)ఏపియా పగటి సమయం\x22అక్వాటు సమయం>అక్వాటు ప్" + - "రామాణిక సమయం2అక్వాటు వేసవి సమయం\x22అక్టోబె సమయం>అక్టోబె ప్రామాణిక సమయం" + - "2అక్టోబె వేసవి సమయం%అరేబియన్ సమయంAఅరేబియన్ ప్రామాణిక సమయంKఅరేబియన్ పగటి " + - "వెలుతురు సమయం+అర్జెంటీనా సమయంGఅర్జెంటీనా ప్రామాణిక సమయం;ఆర్జెంటీనా వేస" + - "వి సమయం>పశ్చిమ అర్జెంటీనా సమయంZపశ్చిమ అర్జెంటీనా ప్రామాణిక సమయంNపశ్చిమ" + - " అర్జెంటీనా వేసవి సమయం(ఆర్మేనియా సమయంDఆర్మేనియా ప్రామాణిక సమయం8ఆర్మేనియా" + - " వేసవి సమయం+అట్లాంటిక్ సమయంGఅట్లాంటిక్ ప్రామాణిక సమయం8అట్లాంటిక్ పగటి సమ" + - "యం>ఆస్ట్రేలియా మధ్యమ సమయంZఆస్ట్రేలియా మధ్యమ ప్రామాణిక సమయంKఆస్ట్రేలియా" + - " మధ్యమ పగటి సమయంTమధ్యమ ఆస్ట్రేలియన్ పశ్చిమ సమయంmమధ్యమ ఆస్ట్రేలియా పశ్చిమ" + - " ప్రామాణిక సమయంaమధ్యమ ఆస్ట్రేలియన్ పశ్చిమ పగటి సమయంAతూర్పు ఆస్ట్రేలియా స" + - "మయం]తూర్పు ఆస్ట్రేలియా ప్రామాణిక సమయంNతూర్పు ఆస్ట్రేలియా పగటి సమయంAపశ్" + - "చిమ ఆస్ట్రేలియా సమయం`పశ్చిమ ఆస్ట్రేలియన్ ప్రామాణిక సమయంQపశ్చిమ ఆస్ట్రే" + - "లియన్ పగటి సమయం+అజర్బైజాన్ సమయంGఅజర్బైజాన్ ప్రామాణిక సమయం;అజర్బైజాన్ వ" + - "ేసవి సమయం\x22అజోర్స్ సమయం>అజోర్స్ ప్రామాణిక సమయం2అజోర్స్ వేసవి సమయం+బం" + - "గ్లాదేశ్ సమయంGబంగ్లాదేశ్ ప్రామాణిక సమయం;బంగ్లాదేశ్ వేసవి సమయం\x1fభూటాన" + - "్ సమయం%బొలీవియా సమయం+బ్రెజిలియా సమయంGబ్రెజిలియా ప్రామాణిక సమయం;బ్రెజిల" + - "ియా వేసవి సమయం8బ్రూనే దరుసలామ్ సమయం,కేప్ వెర్డె సమయంHకేప్ వెర్డె ప్రామ" + - "ాణిక సమయం<కేప్ వెర్డె వేసవి సమయం>చామర్రో ప్రామాణిక సమయం\x1cచాథమ్ సమయం8" + - "చాథమ్ ప్రామాణిక సమయంBచాథమ్ పగటి వెలుతురు సమయం\x19చిలీ సమయం5చిలీ ప్రామా" + - "ణిక సమయం)చిలీ వేసవి సమయం\x19చైనా సమయం5చైనా ప్రామాణిక సమయం?చైనా పగటి వె" + - "లుతురు సమయం.చోయిబల్సాన్ సమయంJచోయిబల్సాన్ ప్రామాణిక సమయం>చోయిబల్సాన్ వే" + - "సవి సమయం5క్రిస్మస్ దీవి సమయం/కాకోస్ దీవుల సమయం%కొలంబియా సమయంAకొలంబియా " + - "ప్రామాణిక సమయం5కొలంబియా వేసవి సమయం)కుక్ దీవుల సమయంEకుక్ దీవుల ప్రామాణి" + - "క సమయంFకుక్ దీవుల అర్థ వేసవి సమయం\x1fక్యూబా సమయం;క్యూబా ప్రామాణిక సమయం" + - ",క్యూబా పగటి సమయం\x1fడేవిస్ సమయంMడ్యూమాంట్-డి’ఉర్విల్లే సమయం2తూర్పు తైమూ" + - "ర్ సమయం,ఈస్టర్ దీవి సమయంHఈస్టర్ దీవి ప్రామాణిక సమయం<ఈస్టర్ దీవి వేసవి " + - "సమయం%ఈక్వడార్ సమయంAసెంట్రల్ యూరోపియన్ సమయం]సెంట్రల్ యూరోపియన్ ప్రామాణి" + - "క సమయంQసెంట్రల్ యూరోపియన్ వేసవి సమయం;తూర్పు యూరోపియన్ సమయంWతూర్పు యూరో" + - "పియన్ ప్రామాణిక సమయంKతూర్పు యూరోపియన్ వేసవి సమయంKసుదూర-తూర్పు యూరోపియన" + - "్ సమయం;పశ్చిమ యూరోపియన్ సమయంWపశ్చిమ యూరోపియన్ ప్రామాణిక సమయంKపశ్చిమ యూ" + - "రోపియన్ వేసవి సమయంAఫాక్\u200cల్యాండ్ దీవుల సమయం]ఫాక్\u200cల్యాండ్ దీవు" + - "ల ప్రామాణిక సమయంQఫాక్\u200cల్యాండ్ దీవుల వేసవి సమయం\x19ఫిజీ సమయం5ఫిజీ " + - "ప్రామాణిక సమయం)ఫిజీ వేసవి సమయం2ఫ్రెంచ్ గయానా సమయంjఫ్రెంచ్ దక్షిణ మరియు" + - " అంటార్కిటిక్ సమయం+గాలాపాగోస్ సమయం%గాంబియర్ సమయం%జార్జియా సమయంAజార్జియా " + - "ప్రామాణిక సమయం5జార్జియా వేసవి సమయం8గిల్బర్ట్ దీవుల సమయం;గ్రీన్\u200cవి" + - "చ్ సగటు సమయంJతూర్పు గ్రీన్\u200cల్యాండ్ సమయంfతూర్పు గ్రీన్\u200cల్యాండ" + - "్ ప్రామాణిక సమయంZతూర్పు గ్రీన్\u200cల్యాండ్ వేసవి సమయంJపశ్చిమ గ్రీన్" + - "\u200cల్యాండ్ సమయంfపశ్చిమ గ్రీన్\u200cల్యాండ్ ప్రామాణిక సమయంZపశ్చిమ గ్రీ" + - "న్\u200cల్యాండ్ వేసవి సమయం;గ్వామ్ ప్రామాణిక సమయం8గల్ఫ్ ప్రామాణిక సమయం" + - "\x1cగయానా సమయం;హవాయ్-అల్యూషియన్ సమయంWహవాయ్-అల్యూషియన్ ప్రామాణిక సమయంaహవా" + - "య్-అల్యూషియన్ పగటి వెలుతురు సమయం%హాంకాంగ్ సమయంAహాంకాంగ్ ప్రామాణిక సమయం" + - "5హాంకాంగ్ వేసవి సమయం\x1fహోవ్డ్ సమయం;హోవ్డ్ ప్రామాణిక సమయం/హోవ్డ్ వేసవి స" + - "మయం\x22భారతదేశ సమయం9హిందూ మహా సముద్ర సమయం%ఇండోచైనా సమయంDసెంట్రల్ ఇండోన" + - "ేషియా సమయం>తూర్పు ఇండోనేషియా సమయం>పశ్చిమ ఇండోనేషియా సమయం\x1cఇరాన్ సమయం" + - "8ఇరాన్ ప్రామాణిక సమయంBఇరాన్ పగటి వెలుతురు సమయం1ఇరక్వుట్స్క్ సమయంMఇరక్వుట" + - "్స్క్ ప్రామాణిక సమయంAఇరక్వుట్స్క్ వేసవి సమయం(ఇజ్రాయిల్ సమయంDఇజ్రాయిల్ " + - "ప్రామాణిక సమయంNఇజ్రాయిల్ పగటి వెలుతురు సమయం\x1cజపాన్ సమయం8జపాన్ ప్రామా" + - "ణిక సమయంBజపాన్ పగటి వెలుతురు సమయంhపెట్రోపావ్లోవ్స్క్-కామ్ఛాట్స్కి సమయం" + - "\x84పెట్రోపావ్లోవ్స్క్-కామ్ఛాట్స్కి ప్రామాణిక సమయంxపెట్రోపావ్లోవ్స్క్-కా" + - "మ్ఛాట్స్కి వేసవి సమయంAతూర్పు కజకి\u200cస్తాన్ సమయం>పశ్చిమ కజకిస్తాన్ స" + - "మయం\x22కొరియన్ సమయం>కొరియన్ ప్రామాణిక సమయంHకొరియన్ పగటి వెలుతురు సమయం%" + - "కోస్రాయి సమయం=క్రాస్నోయార్స్క్ సమయంYక్రాస్నోయార్స్క్ ప్రామాణిక సమయంMక్" + - "రాస్నోయార్స్క్ వేసవి సమయం1కిర్గిస్థాన్ సమయం\x19లంకా సమయం)లైన్ దీవుల సమ" + - "యం,లార్డ్ హోవ్ సమయంHలార్డ్ హోవ్ ప్రామాణిక సమయం9లార్డ్ హోవ్ పగటి సమయం" + - "\x1cమకావ్ సమయం8మకావ్ ప్రామాణిక సమయం,మకావ్ వేసవి సమయం8మాక్క్వారీ దీవి సమయ" + - "ం\x1fమగడాన్ సమయం;మగడాన్ ప్రామాణిక సమయం/మగడాన్ వేసవి సమయం\x22మలేషియా సమ" + - "యం(మాల్దీవుల సమయం1మార్క్వేసాస్ సమయం2మార్షల్ దీవుల సమయం\x22మారిషస్ సమయం" + - ">మారిషస్ ప్రామాణిక సమయం2మారిషస్ వేసవి సమయం\x22మావ్సన్ సమయం8వాయవ్య మెక్సి" + - "కో సమయంTవాయవ్య మెక్సికో ప్రామాణిక సమయంEవాయవ్య మెక్సికో పగటి సమయం>మెక్స" + - "ికన్ పసిఫిక్ సమయంZమెక్సికన్ పసిఫిక్ ప్రామాణిక సమయంKమెక్సికన్ పసిఫిక్ ప" + - "గటి సమయం)ఉలన్ బతోర్ సమయంEఉలన్ బతోర్ ప్రామాణిక సమయం9ఉలన్ బతోర్ వేసవి సమ" + - "యం\x1fమాస్కో సమయం;మాస్కో ప్రామాణిక సమయం/మాస్కో వేసవి సమయం%మయన్మార్ సమయ" + - "ం\x19నౌరు సమయం\x1fనేపాల్ సమయం8న్యూ కాలెడోనియా సమయంTన్యూ కాలెడోనియా ప్ర" + - "ామాణిక సమయంHన్యూ కాలెడోనియా వేసవి సమయం4న్యూజిల్యాండ్ సమయంPన్యూజిల్యాండ" + - "్ ప్రామాణిక సమయంZన్యూజిల్యాండ్ పగటి వెలుతురు సమయం>న్యూఫౌండ్ ల్యాండ్ సమ" + - "యంZన్యూఫౌండ్ ల్యాండ్ ప్రామాణిక సమయంKన్యూఫౌండ్ ల్యాండ్ పగటి సమయం\x19నియ" + - "ూ సమయం2నార్ఫోక్ దీవి సమయంHఫెర్నాండో డి నొరోన్హా సమయంdఫెర్నాండో డి నొరో" + - "న్హా ప్రామాణిక సమయంXఫెర్నాండో డి నొరోన్హా వేసవి సమయంEఉత్తర మారియానా దీ" + - "వుల సమయం7నోవోసిబిర్స్క్ సమయంSనోవోసిబిర్క్స్ ప్రామాణిక సమయంGనోవోసిబిర్స" + - "్క్ వేసవి సమయం\x22ఓమ్స్క్ సమయం>ఓమ్స్క్ ప్రామాణిక సమయం2ఓమ్స్క్ వేసవి సమ" + - "యం+పాకిస్థాన్ సమయంGపాకిస్తాన్ ప్రామాణిక సమయం;పాకిస్థాన్ వేసవి సమయం\x1f" + - "పాలావ్ సమయం?పాపువా న్యూ గినియా సమయం\x22పరాగ్వే సమయం>పరాగ్వే ప్రామాణిక " + - "సమయం2పరాగ్వే వేసవి సమయం\x19పెరూ సమయం5పెరూ ప్రామాణిక సమయం)పెరూ వేసవి సమ" + - "యం+ఫిలిప్పైన్ సమయంGఫిలిప్పైన్ ప్రామాణిక సమయం;ఫిలిప్పైన్ వేసవి సమయం5ఫిన" + - "ిక్స్ దీవుల సమయంdసెయింట్ పియెర్ మరియు మిక్వెలాన్ సమయం\x80సెయింట్ పియెర" + - "్ మరియు మిక్వెలాన్ ప్రామాణిక సమయంnసెయింట్ పియర్ మరియు మిక్వెలాన్ పగటి " + - "సమయం(పిట్కైరన్ సమయం\x1fపొనేప్ సమయం+ప్యోంగాంగ్ సమయం+కిజిలోర్డా సమయంGకిజ" + - "ిలోర్డా ప్రామాణిక సమయం;కిజిలోర్డా వేసవి సమయం(రీయూనియన్ సమయం\x1fరొతేరా " + - "సమయం\x22సఖాలిన్ సమయం>సఖాలిన్ ప్రామాణిక సమయం2సఖాలిన్ వేసవి సమయం\x1cసమార" + - "ా సమయం8సమారా ప్రామాణిక సమయం,సమారా వేసవి సమయం\x1cసమోవా సమయం8సమోవా ప్రామ" + - "ాణిక సమయం,సమోవా వేసవి సమయం%సీషెల్స్ సమయంAసింగపూర్ ప్రామాణిక సమయం2సొలొమ" + - "న్ దీవుల సమయం8దక్షిణ జార్జియా సమయం%సూరినామ్ సమయం\x1fస్యోవా సమయం\x1cతహి" + - "తి సమయం\x19తైపీ సమయం5తైపీ ప్రామాణిక సమయం<తైపీ పగటి వెలుతరు సమయం.తజికిస" + - "్తాన్ సమయం%టోకెలావ్ సమయం\x1cటాంగా సమయం8టాంగా ప్రామాణిక సమయం,టాంగా వేసవ" + - "ి సమయం\x16చక్ సమయం=తుర్క్మెనిస్థాన్ సమయంYతుర్క్మెనిస్థాన్ ప్రామాణిక సమ" + - "యంMతుర్క్మెనిస్థాన్ వేసవి సమయం\x1fతువాలు సమయం\x22ఉరుగ్వే సమయం>ఉరుగ్వే " + - "ప్రామాణిక సమయం2ఉరుగ్వే వేసవి సమయం4ఉజ్బెకిస్తాన్ సమయంPఉజ్బెకిస్తాన్ ప్ర" + - "ామాణిక సమయంDఉజ్బెకిస్తాన్ వేసవి సమయం\x1cవనౌటు సమయం8వనౌటు ప్రామాణిక సమయ" + - "ం,వనౌటు వేసవి సమయం%వెనిజులా సమయం7వ్లాడివోస్టోక్ సమయంSవ్లాడివోస్టోక్ ప్" + - "రామాణిక సమయంGవ్లాడివోస్టోక్ వేసవి సమయం1వోల్గోగ్రాడ్ సమయంMవోల్గోగ్రాడ్ " + - "ప్రామాణిక సమయంAవోల్గోగ్రాడ్ వేసవి సమయం%వోస్టోక్ సమయం&వేక్ దీవి సమయంBవా" + - "లీస్ మరియు ఫుటునా సమయం+యాకుట్స్క్ సమయంGయాకుట్స్క్ ప్రామాణిక సమయం;యాకుట" + - "్స్క్ వేసవి సమయం7ఏకాటెరిన్బర్గ్ సమయంSఏకాటెరిన్బర్గ్ ప్రామాణిక సమయంGఏకా" + - "టెరిన్బర్గ్ వేసవి సమయం" - -var bucket97 string = "" + // Size: 12661 bytes - "\x05Orara\x04Omuk\x09Okwamg’\x0aOdung’el\x06Omaruk\x12Omodok’king’ol\x05" + - "Ojola\x06Opedel\x0bOsokosokoma\x06Otibar\x06Olabor\x04Opoo\x09Nakaejuma" + - "\x0bNakaebarasa\x07Nakaare\x07Nakauni\x0cNakaung’on\x08Nakakany\x0aNakas" + - "abiti\x0aAkwota abe\x0bAkwota Aane\x0bAkwota auni\x10Akwota Aung’on\x09T" + - "aparachu\x06Ebongi\x04Enzi\x04Ekan\x04Elap\x05Ewiki\x06Aparan\x04Jaan" + - "\x04Lolo\x03Moi\x05TA/EB\x04Esaa\x08Isekonde\x1eพุทธศักราช\x08พ.ศ.\x18EE" + - "EEที่ d MMMM G y\x0cจื่อ\x0cโฉ่ว\x0cอิ๋น\x0fเหม่า\x0cเฉิน\x0cซื่อ\x09อู้" + - "\x0cเว่ย\x0cเซิน\x0fโหย่ว\x06ซู\x0cฮ่าย\x12ลี่ชุน\x1bเจี่ยจื่อ\x15อี๋โฉ่" + - "ว\x18ปิ่งอิ๋น\x18ติงเหม่า\x15อู้เฉิน\x15จี่ซื่อ\x15เกิงอู้\x15ซินเว่ย" + - "\x1bเหรินเซิน\x1eกุ๋่ยโหย่ว\x15เจ่ียซู\x15อี๋ฮ่าย\x1eปิ๋ิ่งจื่อ\x15ติงโฉ" + - "่ว\x15อู้อิ๋น\x18จี๋เหม่า\x18เกิงเฉิน\x15ซินซื่อ\x18เหรินอู้\x18กุ่ยเว" + - "่ย\x1bเจี่ยเซิน\x18อี๋โหย่ว\x12ปิ่งซู\x15ติงฮ่าย\x15อู้จื่อ\x15จี๋โฉ่ว" + - "\x18เกิงอิ๋น\x18ซินเหม่า\x1bเหรินเฉิน\x15กุ่ยซ่อ\x18เจ่ียอู้\x15อี่เว่ย" + - "\x18ป่ิงเซิน\x18ติงโหย่ว\x0fอู้ซู\x15จี่ฮ่าย\x18เกิงจื่อ\x15ซินโฉ่ว\x1bเ" + - "หรินอิ๋น\x1bกุ๋ยเหม่า\x1bเจี่ยเฉิน\x15อี่ซ่ือ\x15ป่ิงอู้\x15ติงเว่ย" + - "\x15อู้เซิน\x18จี๋โหย่ว\x12เกิงซู\x15ซินฮ่าย\x1bเหรินจ่ือ\x1bกุ๋่ยโฉ่ว" + - "\x1bเจี่ยอิ๋น\x18อ๋ีเหม่า\x18ปิ่งเฉิน\x15ติงซื่อ\x12อู้อู้\x15จ่ีเว่ย" + - "\x18เกิงเซิน\x18ซินโหย่ว\x15เหรินซู\x18กุ่ยฮ่าย\x09หนู\x09วัว\x0cเสือ" + - "\x15กระต่าย\x0fมังกร\x06งู\x09ม้า\x09แพะ\x09ลิง\x1bไก่ตัวผู้\x0fสุนัข" + - "\x09หมู\x0eEEEE, U MMMM d\x0fเทาท์\x0cบาบา\x15ฮาเทอร์\x0fเคียฟ\x0cโทบา" + - "\x18อัมเชอร์\x18บารัมฮัท\x1bบาราเมาดา\x15บาชันส์\x12พาโอนา\x0fอีเปป\x0fเ" + - "มสรา\x0cนาซี\x1bเมสเคอเรม\x12เตเกมท\x12เฮดาร์\x15ทาฮ์ซัส\x0fเทอร์\x15เ" + - "ยคาทิท\x15เมกาบิต\x18เมียเซีย\x12เจนบอต\x0cเซเน\x0fฮัมเล\x0fเนแฮซ\x15พ" + - "ากูเมน\x0ad MMMM G y\x09d MMM G y\x08ม.ค.\x08ก.พ.\x0bมี.ค.\x0bเม.ย." + - "\x08พ.ค.\x0bมิ.ย.\x08ก.ค.\x08ส.ค.\x08ก.ย.\x08ต.ค.\x08พ.ย.\x08ธ.ค.\x12มกร" + - "าคม\x1eกุมภาพันธ์\x12มีนาคม\x12เมษายน\x15พฤษภาคม\x18มิถุนายน\x15กรกฎาค" + - "ม\x15สิงหาคม\x15กันยายน\x12ตุลาคม\x1bพฤศจิกายน\x15ธันวาคม\x07อา.\x04จ." + - "\x04อ.\x04พ.\x07พฤ.\x04ศ.\x04ส.\x06อา\x03จ\x03อ\x03พ\x06พฤ\x03ศ\x03ส\x1e" + - "วันอาทิตย์\x1bวันจันทร์\x1bวันอังคาร\x12วันพุธ!วันพฤหัสบดี\x18วันศุกร์" + - "\x18วันเสาร์\x14ไตรมาส 1\x14ไตรมาส 2\x14ไตรมาส 3\x14ไตรมาส 4\x1bเที่ยงคื" + - "น\x1eก่อนเที่ยง\x12เที่ยง\x1eหลังเที่ยง\x1bในตอนเช้า\x1bในตอนบ่าย\x0cบ" + - "่าย\x1bในตอนเย็น\x09ค่ำ\x15กลางคืน\x0cเช้า\x0cเย็น\x1eช่วงเที่ยง6ปีก่อ" + - "นคริสต์ศักราช-ก่อนสามัญศักราช$คริสต์ศักราช!สามัญศักราช\x1bปีก่อน ค.ศ." + - "\x0cก.ส.ศ.\x08ค.ศ.\x08ส.ศ.\x15ก่อน ค.ศ.?H นาฬิกา mm นาที ss วินาที zzzz<" + - "H นาฬิกา mm นาที ss วินาที z\x0fทิชรี\x0fเฮวาน\x12กีสเลฟ\x0fเตเวต\x0fเชว" + - "ัต\x14อาดาร์ I\x12อาดาร์\x15อาดาร์ II\x12นิสซาน\x12อิยาร์\x0fสีวัน\x0f" + - "ตามูซ\x09อัฟ\x12เอลอุล\x08ย.ศ.\x0fจิตรา\x12วิสาขา\x0fเชษฐา\x0fอัษฎา" + - "\x0fศรวณา\x0fพัตรา\x15อัศวิชา\x15การติกา\x15มฤคศิรา\x0fปุษยา\x0cมาฆะ\x12" + - "ผลคุณี\x08ม.ศ.\x10มุฮัร.\x0dเศาะ.\x0eรอบี I\x0fรอบี II\x14จุมาดา I\x15" + - "จุมาดา II\x0dเราะ.\x0dชะอ์.\x13เราะมะ.\x0dเชาว.\x16ซุลกิอฺ.\x13ซุลหิจ." + - "\x1bมุฮะร์รอม\x12ซอฟาร์\x0fรอจับ\x15ชะอะบาน\x15รอมะดอน\x12เชาวัล!ซุลกิอฺ" + - "ดะฮฺ\x1eซุลหิจญะฮฺ-ฮิจเราะห์ศักราช\x08ฮ.ศ.\x1eทะอิกะ (645–650)\x1eฮะกุ" + - "ชิ (650–671)\x1eฮากุโฮ (672–686)\x18ชุโช (686–701)\x1eทะอิโฮ (701–704)" + - "\x1bเคอุง (704–708)\x18วะโด (708–715)\x18เรกิ (715–717)\x18โยโร (717–724" + - ")\x1bจิงกิ (724–729)'เท็มเพียว (729–749)5เท็มเพียว-คัมโป (749-749)2เท็มเ" + - "พียว-โชโฮ (749-757)2เท็มเพียว-โฮจิ (757-765)8เท็มเพียว-จิงโงะ (765-767" + - "),จิงโงะ-เคอุง (767-770)\x18โฮกิ (770–780)\x1eเท็นโอ (781–782)-เอ็นเรียะ" + - "กุ (782–806)\x1eดะอิโด (806–810)\x1bโคนิง (810–824)\x1eเท็นโช (824–834" + - ")\x18โชวะ (834–848)\x18คะโจ (848–851)\x1bนินจุ (851–854)!ซะอิโกะ (854–85" + - "7)!เท็นนัง (857–859)\x1bโจงัง (859–877)\x1eเก็งเก (877–885)\x1bนินนะ (88" + - "5–889)$คัมเพียว (889–898)\x1eโชตะอิ (898–901)\x1eเอ็งงิ (901–923)\x1eเอ็" + - "นโช (923–931)\x18โชเฮ (931–938)'เท็งเงียว (938–947)-เท็นเรียะกุ (947–9" + - "57)'เท็นโตะกุ (957–961)\x18โอวะ (961–964)\x18โคโฮ (964–968)\x1bอันนะ (96" + - "8–970)'เท็นโระกุ (970–973)$เท็นเอ็ง (973–976)\x1eโจเง็ง (976–978)$เท็งเง" + - "็ง (978–983)\x1bเอกัง (983–985)\x1bคันนะ (985–987)\x1eเอเอ็ง (987–989)" + - "\x18เอโซ (989–990)'โชเรียะกุ (990–995)!โชโตะกุ (995–999)\x19โชโฮ (999–10" + - "04)\x1dคันโก (1004–1012)\x1aโชวะ (1012–1017) คันนิง (1017–1021)\x1dจิอัง" + - " (1021–1024)\x1dมันจุ (1024–1028) โชเง็ง (1028–1037))โชเรียะกุ (1037–104" + - "0)\x1dโชคีว (1040–1044)&คันโตะกุ (1044–1046)\x1aเอโช (1046–1053) เท็งงิ " + - "(1053–1058)\x1aโคเฮ (1058–1065))จิเรียะกุ (1065–1069)#เอ็งคีว (1069–1074" + - ")\x1aโชโฮ (1074–1077))โชเรียะกุ (1077–1081)\x1dเอโฮะ (1081–1084)#โอโตะกุ" + - " (1084–1087)\x1dคันจิ (1087–1094)\x1dคะโฮะ (1094–1096)\x1aเอโช (1096–109" + - "7)#โชโตะกุ (1097–1099)\x1aโควะ (1099–1104)\x1aโชจิ (1104–1106)\x1aคะโช (" + - "1106–1108)#เท็นนิง (1108–1110) เท็นเอ (1110–1113)\x1dเอกีว (1113–1118) เ" + - "ก็นเอ (1118–1120) โฮะอัง (1120–1124) เท็นจิ (1124–1126) ดะอิจิ (1126–1" + - "131) เท็นโช (1131–1132)\x1aโชโช (1132–1135)#โฮะเอ็ง (1135–1141)\x1aเอจิ " + - "(1141–1142)\x1aโคจิ (1142–1144) เท็นโย (1144–1145) คีวอัง (1145–1151)" + - "\x1dนิมเป (1151–1154)\x1dคีวจุ (1154–1156)#โฮะเง็ง (1156–1159)\x1aเฮจิ (" + - "1159–1160))เอเรียะกุ (1160–1161)\x1aโอโฮ (1161–1163)\x1dโชกัง (1163–1165" + - ")\x1dเอมัง (1165–1166) นินอัง (1166–1169)\x1aคะโอ (1169–1171)\x1dโชอัง (" + - "1171–1175)#อังเง็ง (1175–1177)\x1aจิโช (1177–1181)\x1aโยวะ (1181–1182)" + - "\x1aจุเอ (1182–1184)/เก็นเรียะกุ (1184–1185)\x1dบุนจิ (1185–1190)#เค็งกี" + - "ว (1190–1199)\x1aโชจิ (1199–1201)#เค็นนิง (1201–1204)#เก็งกีว (1204–12" + - "06) เค็นเอ (1206–1207) โชเก็ง (1207–1211)/เค็นเรียะกุ (1211–1213) เค็มโป" + - " (1213–1219)\x1dโชกีว (1219–1222)\x1aโจโอ (1222–1224)#เก็นนิง (1224–1225" + - ")#คะโระกุ (1225–1227)\x1dอันเต (1227–1229)\x1dคังกิ (1229–1232)\x1aโจเอ " + - "(1232–1233)&เท็มปุกุ (1233–1234),บุนเรียะกุ (1234–1235)\x1aคะเต (1235–12" + - "38),เรียะกุนิง (1238–1239) เอ็นโอ (1239–1240)\x1dนินจิ (1240–1243)#คังเง" + - "็ง (1243–1247)\x1aโฮจิ (1247–1249) เค็นโช (1249–1256) โคเง็ง (1256–125" + - "7)\x1aโชกะ (1257–1259) โชเง็ง (1259–1260)\x1dบุนโอ (1260–1261)\x1aโคโช (" + - "1261–1264)\x1dบุนเอ (1264–1275) เค็นจิ (1275–1278)\x1dโคอัง (1278–1288)" + - "\x1aโชโอ (1288–1293)\x1dเอนิง (1293–1299)\x1dโชอัง (1299–1302)&เค็งเง็ง " + - "(1302–1303) คะเง็ง (1303–1306)#โทะกุจิ (1306–1308) เอ็งเก (1308–1311)" + - "\x1aโอโช (1311–1312)\x1aโชวะ (1312–1317)\x1dบุมโป (1317–1319) เก็นโอ (13" + - "19–1321))เก็งเกียว (1321–1324)\x1aโชชู (1324–1326)#คะเระกิ (1326–1329))เ" + - "ก็นโตะกุ (1329–1331) เก็งโก (1331–1334) เค็มมุ (1334–1336)&เอ็งเง็ง (1" + - "336–1340)#โคโกะกุ (1340–1346)\x1aโชเฮ (1346–1370))เค็นโตะกุ (1370–1372)" + - "\x1dบุนชู (1372–1375) เท็นจุ (1375–1379))โคเรียะกุ (1379–1381)\x1aโควะ (" + - "1381–1384) เก็นชู (1384–1392)#เมโตะกุ (1384–1387)\x1aคะเค (1387–1389)" + - "\x1aโคโอ (1389–1390)#เมโตะกุ (1390–1394)\x1aโอเอ (1394–1428)\x1aโชโช (14" + - "28–1429)#เอเกียว (1429–1441) คะกิสึ (1441–1444) บุนอัง (1444–1449)#โฮโตะ" + - "กุ (1449–1452),เคียวโตะกุ (1452–1455)\x1aโคโช (1455–1457)#โชโระกุ (145" + - "7–1460)\x1dคันโช (1460–1466)\x1dบุนโช (1466–1467)\x1dโอนิง (1467–1469)" + - "\x1dบุมเม (1469–1487)#โชเกียว (1487–1489))เอ็นโตะกุ (1489–1492)\x1aเมโอ " + - "(1492–1501)\x1dบุงกิ (1501–1504)\x1aเอโช (1504–1521) ทะอิเอ (1521–1528)," + - "เคียวโระกุ (1528–1532) เท็มมน (1532–1555)\x1aโคจิ (1555–1558)#เอโระกุ " + - "(1558–1570) เก็งกิ (1570–1573) เท็นโช (1573–1592)&บุนโระกุ (1592–1596)" + - "\x1aเคโช (1596–1615) เก็งวะ (1615–1624)\x1dคันเอ (1624–1644)\x1aโชโฮ (16" + - "44–1648)\x1dเคอัง (1648–1652)\x1aโชโอ (1652–1655))เมเรียะกุ (1655–1658)" + - "\x1dมันจิ (1658–1661) คัมบุง (1661–1673) เอ็มโป (1673–1681) เท็นวะ (1681" + - "–1684)#โจเกียว (1684–1688))เก็นโระกุ (1688–1704)\x1aโฮเอ (1704–1711)#โ" + - "ชโตะกุ (1711–1716)#เคียวโฮ (1716–1736)#เก็มบุง (1736–1741)\x1dคัมโป (1" + - "741–1744))เอ็งเกียว (1744–1748)#คันเอ็ง (1748–1751))โฮเรียะกุ (1751–1764" + - ")\x1aเมวะ (1764–1772)\x1dอันเอ (1772–1781) เท็มเม (1781–1789)\x1dคันเซ (" + - "1789–1801)#เคียววะ (1801–1804)\x1dบุงกะ (1804–1818)\x1dบุนเซ (1818–1830)" + - " เท็มโป (1830–1844)\x1aโคกะ (1844–1848)\x1aคะเอ (1848–1854)\x1dอันเซ (18" + - "54–1860)#มันเอ็ง (1860–1861) บุงกีว (1861–1864) เก็นจิ (1864–1865)\x1aเค" + - "โอ (1865–1868)\x0cเมจิ\x12ทะอิโช\x0cโชวะ\x0cเฮเซ" - -var bucket98 string = "" + // Size: 22887 bytes - "'EEEEที่ d MMMM ปีGที่ y\x10d MMMM ปีG y!ฟาร์วาร์ดิน'ออร์ดิเบเฮชต์\x15คอ" + - "ร์แดด\x0fเตอร์\x15มอร์แดด\x1bชาหริวาร์\x0fเมฮร์\x0fอะบาน\x12อะซาร์\x0c" + - "เดย์\x15บาฮ์มาน\x18เอสฟานด์!ปีเปอร์เซีย'ปีก่อนไต้หวัน\x15ไต้หวัน\x0cสม" + - "ัย\x06ปี\x1bปีที่แล้ว\x0fปีนี้\x12ปีหน้า\x1aในอีก {0} ปี\x1f{0} ปีที่แ" + - "ล้ว\x11ใน {0} ปี\x12ไตรมาส'ไตรมาสที่แล้ว\x1bไตรมาสนี้\x1eไตรมาสหน้า&ใน" + - "อีก {0} ไตรมาส+{0} ไตรมาสที่แล้ว\x1dใน {0} ไตรมาส\x0fเดือน$เดือนที่แล้" + - "ว\x18เดือนนี้\x1bเดือนหน้า#ในอีก {0} เดือน.{0} เดือนที่ผ่านมา\x1aใน {0" + - "} เดือน({0} เดือนที่แล้ว\x15สัปดาห์*สัปดาห์ที่แล้ว\x1eสัปดาห์นี้!สัปดาห์" + - "หน้า)ในอีก {0} สัปดาห์4{0} สัปดาห์ที่ผ่านมาHสัปดาห์ที่เริ่มต้นวันที่ ใ" + - "น {0} สัปดาห์.{0} สัปดาห์ที่แล้ว\x09วัน!เมื่อวานซืน\x18เมื่อวาน\x12วัน" + - "นี้\x18พรุ่งนี้\x18มะรืนนี้\x1dในอีก {0} วัน({0} วันที่ผ่านมา\x14ใน {0" + - "} วัน\x22{0} วันที่แล้ว$วันในสัปดาห์3วันอาทิตย์ที่แล้ว'วันอาทิตย์นี้*วัน" + - "อาทิตย์หน้าGวันอาทิตย์ในอีก {0} สัปดาห์\\วันอาทิตย์เมื่อ {0} สัปดาห์ที" + - "่แล้ว'จันทร์ที่แล้ว\x1bจันทร์นี้\x1eจันทร์หน้า&ในอีก {0} จันทร์+{0} จั" + - "นทร์ที่แล้ว อีก {0} จันทร์-จันทร์ที่ผ่านมา'อังคารที่แล้ว\x1bอังคารนี้" + - "\x1eอังคารหน้า&ในอีก {0} อังคาร+{0} อังคารที่แล้ว อีก {0} อังคาร-อังคารท" + - "ี่ผ่านมา\x1eพุธที่แล้ว\x12พุธนี้\x15พุธหน้า\x1dในอีก {0} พุธ\x22{0} พุ" + - "ธที่แล้ว\x17อีก {0} พุธ$พุธที่ผ่านมา$พฤหัสที่แล้ว\x18พฤหัสนี้\x1bพฤหัส" + - "หน้า#ในอีก {0} พฤหัส({0} พฤหัสที่แล้ว\x1dอีก {0} พฤหัส*พฤหัสที่ผ่านมา$" + - "ศุกร์ที่แล้ว\x18ศุกร์นี้\x1bศุกร์หน้า#ในอีก {0} ศุกร์({0} ศุกร์ที่แล้ว" + - "\x1dอีก {0} ศุกร์*ศุกร์ที่ผ่านมา$เสาร์ที่แล้ว\x18เสาร์นี้\x1bเสาร์หน้า#ใ" + - "นอีก {0} เสาร์({0} เสาร์ที่แล้ว\x1dอีก {0} เสาร์*เสาร์ที่ผ่านมา\x15ช่ว" + - "งวัน\x15ชั่วโมง\x1eชั่วโมงนี้)ในอีก {0} ชั่วโมง4{0} ชั่วโมงที่ผ่านมา" + - "\x07ชม.\x12ใน {0} ชม.!{0} ชม. ที่แล้ว\x0cนาที\x15นาทีนี้ ในอีก {0} นาที+" + - "{0} นาทีที่ผ่านมา\x04น.\x17ใน {0} นาที%{0} นาทีที่แล้ว\x12วินาที\x12ขณะน" + - "ี้&ในอีก {0} วินาที1{0} วินาทีที่ผ่านมา\x06วิ\x1dใน {0} วินาที+{0} วิน" + - "าทีที่แล้ว\x15เขตเวลา\x0fเวลา{0}!เวลาออมแสง{0}$เวลามาตรฐาน{0}3เวลาสากล" + - "เชิงพิกัด3เวลาฤดูร้อนอังกฤษ<เวลามาตรฐานไอร์แลนด์\x1bเวลาอาเกร0เวลามาตร" + - "ฐานอาเกร0เวลาฤดูร้อนอาเกร-เวลาอัฟกานิสถาน-เวลาแอฟริกากลาง9เวลาแอฟริกาต" + - "ะวันออก*เวลาแอฟริกาใต้6เวลาแอฟริกาตะวันตกKเวลามาตรฐานแอฟริกาตะวันตกKเว" + - "ลาฤดูร้อนแอฟริกาตะวันตก!เวลาอะแลสกา6เวลามาตรฐานอะแลสกา<เวลาออมแสงของอะ" + - "แลสกา!เวลาอัลมาตี6เวลามาตรฐานอัลมาตี6เวลาฤดูร้อนอัลมาตี!เวลาแอมะซอน6เว" + - "ลามาตรฐานแอมะซอน6เวลาฤดูร้อนแอมะซอนKเวลาตอนกลางในอเมริกาเหนือ`เวลามาตร" + - "ฐานตอนกลางในอเมริกาเหนือ]เวลาออมแสงตอนกลางในอเมริกาเหนือWเวลาทางตะวันอ" + - "อกในอเมริกาเหนือlเวลามาตรฐานทางตะวันออกในอเมริกาเหนือiเวลาออมแสงทางตะว" + - "ันออกในอเมริกาเหนือNเวลาแถบภูเขาในอเมริกาเหนือcเวลามาตรฐานแถบภูเขาในอเ" + - "มริกาเหนือ`เวลาออมแสงแถบภูเขาในอเมริกาเหนือKเวลาแปซิฟิกในอเมริกาเหนือ`" + - "เวลามาตรฐานแปซิฟิกในอเมริกาเหนือ]เวลาออมแสงแปซิฟิกในอเมริกาเหนือ$เวลาอ" + - "ะนาดีร์9เวลามาตรฐานอะนาดีร์9เวลาฤดูร้อนอะนาดีร์\x1eเวลาอาปีอา3เวลามาตร" + - "ฐานอาปีอา0เวลาออมแสงอาปีอา!เวลาอัคตาอู6เวลามาตรฐานอัคตาอู6เวลาฤดูร้อนอ" + - "ัคตาอู!เวลาอัคโทเบ6เวลามาตรฐานอัคโทเบ6เวลาฤดูร้อนอัคโทเบ\x1eเวลาอาหรับ" + - "3เวลามาตรฐานอาหรับ0เวลาออมแสงอาหรับ-เวลาอาร์เจนตินาBเวลามาตรฐานอาร์เจนติ" + - "นาBเวลาฤดูร้อนอาร์เจนตินาKเวลาตะวันตกของอาร์เจนตินาiเวลามาตรฐานทางตะวั" + - "นตกของอาร์เจนตินาiเวลาฤดูร้อนทางตะวันตกของอาร์เจนตินา*เวลาอาร์เมเนีย?เ" + - "วลามาตรฐานอาร์เมเนีย?เวลาฤดูร้อนอาร์เมเนีย'เวลาแอตแลนติก<เวลามาตรฐานแอ" + - "ตแลนติกBเวลาออมแสงของแอตแลนติก6เวลาออสเตรเลียกลางfเวลามาตรฐานทางตอนกลา" + - "งของออสเตรเลียcเวลาออมแสงทางตอนกลางของออสเตรเลียfเวลาทางตะวันตกตอนกลาง" + - "ของออสเตรเลีย{เวลามาตรฐานทางตะวันตกตอนกลางของออสเตรเลียxเวลาออมแสงทางต" + - "ะวันตกตอนกลางของออสเตรเลียBเวลาออสเตรเลียตะวันออกiเวลามาตรฐานทางตะวันอ" + - "อกของออสเตรเลียfเวลาออมแสงทางตะวันออกของออสเตรเลีย?เวลาออสเตรเลียตะวัน" + - "ตกfเวลามาตรฐานทางตะวันตกของออสเตรเลียcเวลาออมแสงทางตะวันตกของออสเตรเลี" + - "ย0เวลาอาเซอร์ไบจานEเวลามาตรฐานอาเซอร์ไบจานEเวลาฤดูร้อนอาเซอร์ไบจาน!เวล" + - "าอะโซร์ส6เวลามาตรฐานอะโซร์ส6เวลาฤดูร้อนอะโซร์ส'เวลาบังกลาเทศ<เวลามาตรฐ" + - "านบังกลาเทศ<เวลาฤดูร้อนบังกลาเทศ\x1bเวลาภูฏาน$เวลาโบลิเวีย'เวลาบราซิเล" + - "ีย<เวลามาตรฐานบราซิเลีย<เวลาฤดูร้อนบราซิเลีย9เวลาบรูไนดารุสซาลาม'เวลาเ" + - "คปเวิร์ด<เวลามาตรฐานเคปเวิร์ด<เวลาฤดูร้อนเคปเวิร์ด\x1eเวลาเคซีย์$เวลาช" + - "ามอร์โร\x1bเวลาแชทัม0เวลามาตรฐานแชทัม-เวลาออมแสงแชทัม\x18เวลาชิลี-เวลา" + - "มาตรฐานชิลี-เวลาฤดูร้อนชิลี\x15เวลาจีน*เวลามาตรฐานจีน'เวลาออมแสงจีน'เว" + - "ลาชอยปาลชาน<เวลามาตรฐานชอยปาลชาน<เวลาฤดูร้อนชอยปาลชาน3เวลาเกาะคริสต์มา" + - "ส3เวลาหมู่เกาะโคโคส'เวลาโคลอมเบีย<เวลามาตรฐานโคลอมเบีย<เวลาฤดูร้อนโคลอ" + - "มเบีย-เวลาหมู่เกาะคุกBเวลามาตรฐานหมู่เกาะคุกQเวลาครึ่งฤดูร้อนหมู่เกาะค" + - "ุก\x1bเวลาคิวบา0เวลามาตรฐานคิวบา6เวลาออมแสงของคิวบา\x1bเวลาเดวิส<เวลาด" + - "ูมองต์ดูร์วิลล์6เวลาติมอร์ตะวันออก0เวลาเกาะอีสเตอร์Eเวลามาตรฐานเกาะอีส" + - "เตอร์Eเวลาฤดูร้อนเกาะอีสเตอร์'เวลาเอกวาดอร์'เวลายุโรปกลาง<เวลามาตรฐานย" + - "ุโรปกลาง<เวลาฤดูร้อนยุโรปกลาง3เวลายุโรปตะวันออกHเวลามาตรฐานยุโรปตะวันอ" + - "อกHเวลาฤดูร้อนยุโรปตะวันออก<เวลายุโรปตะวันออกไกล0เวลายุโรปตะวันตกEเวลา" + - "มาตรฐานยุโรปตะวันตกEเวลาฤดูร้อนยุโรปตะวันตกBเวลาหมู่เกาะฟอล์กแลนด์Wเวล" + - "ามาตรฐานหมู่เกาะฟอล์กแลนด์Wเวลาฤดูร้อนหมู่เกาะฟอล์กแลนด์\x18เวลาฟิจิ-เ" + - "วลามาตรฐานฟิจิ-เวลาฤดูร้อนฟิจิ0เวลาเฟรนช์เกียนาcเวลาเฟรนช์เซาเทิร์นและ" + - "แอนตาร์กติก'เวลากาลาปาโกส'เวลาแกมเบียร์$เวลาจอร์เจีย9เวลามาตรฐานจอร์เจ" + - "ีย9เวลาฤดูร้อนจอร์เจีย?เวลาหมู่เกาะกิลเบิร์ต3เวลามาตรฐานกรีนิช?เวลากรี" + - "นแลนด์ตะวันออกTเวลามาตรฐานกรีนแลนด์ตะวันออกTเวลาฤดูร้อนกรีนแลนด์ตะวันอ" + - "อก<เวลากรีนแลนด์ตะวันตกQเวลามาตรฐานกรีนแลนด์ตะวันตกQเวลาฤดูร้อนกรีนแลน" + - "ด์ตะวันตก\x15เวลากวม\x1bเวลากัลฟ์!เวลากายอานา7เวลาฮาวาย-อะลูเชียนLเวลา" + - "มาตรฐานฮาวาย-อะลูเชียนIเวลาออมแสงฮาวาย-อะลูเชียน\x1eเวลาฮ่องกง3เวลามาต" + - "รฐานฮ่องกง3เวลาฤดูร้อนฮ่องกง\x1bเวลาฮอฟด์0เวลามาตรฐานฮอฟด์0เวลาฤดูร้อน" + - "ฮอฟด์!เวลาอินเดีย9เวลามหาสมุทรอินเดีย$เวลาอินโดจีนBเวลาอินโดนีเซียตอนก" + - "ลางQเวลาอินโดนีเซียฝั่งตะวันออกNเวลาอินโดนีเซียฝั่งตะวันตก!เวลาอิหร่าน" + - "6เวลามาตรฐานอิหร่าน3เวลาออมแสงอิหร่าน*เวลาอีร์คุตสค์?เวลามาตรฐานอีร์คุตส" + - "ค์?เวลาฤดูร้อนอีร์คุตสค์$เวลาอิสราเอล9เวลามาตรฐานอิสราเอล6เวลาออมแสงอิ" + - "สราเอล!เวลาญี่ปุ่น6เวลามาตรฐานญี่ปุ่น3เวลาออมแสงญี่ปุ่น$เวลาคัมชัตคาRเ" + - "วลาเปโตรปัฟลอฟสค์-คัมชัตสกีgเวลาฤดูร้อนเปโตรปัฟลอฟสค์-คัมชัตสกี?เวลาคา" + - "ซัคสถานตะวันออก<เวลาคาซัคสถานตะวันตก\x1eเวลาเกาหลี3เวลามาตรฐานเกาหลี0เ" + - "วลาออมแสงเกาหลี\x1bเวลาคอสไร-เวลาครัสโนยาสค์Bเวลามาตรฐานครัสโนยาสค์Bเว" + - "ลาฤดูร้อนครัสโนยาสค์-เวลาคีร์กีซสถาน\x1bเวลาลังกา0เวลาหมู่เกาะไลน์'เวล" + - "าลอร์ดโฮว์<เวลามาตรฐานลอร์ดโฮว์9เวลาออมแสงลอร์ดโฮว์\x1eเวลามาเก๊า3เวลา" + - "มาตรฐานมาเก๊า3เวลาฤดูร้อนมาเก๊า0เวลาเกาะแมกควอรี!เวลามากาดาน6เวลามาตรฐ" + - "านมากาดาน6เวลาฤดูร้อนมากาดาน$เวลามาเลเซีย$เวลามัลดีฟส์'เวลามาร์เคซัส?เ" + - "วลาหมู่เกาะมาร์แชลล์'เวลามอริเชียส<เวลามาตรฐานมอริเชียสEเวลาฤดูร้อนของ" + - "มอริเชียส!เวลามอว์สันWเวลาเม็กซิโกตะวันตกเฉียงเหนือlเวลามาตรฐานเม็กซิโ" + - "กตะวันตกเฉียงเหนือiเวลาออมแสงเม็กซิโกตะวันตกเฉียงเหนือ9เวลาแปซิฟิกเม็ก" + - "ซิโกNเวลามาตรฐานแปซิฟิกเม็กซิโกKเวลาออมแสงแปซิฟิกเม็กซิโก-เวลาอูลานบาต" + - "อร์Bเวลามาตรฐานอูลานบาตอร์Bเวลาฤดูร้อนอูลานบาตอร์\x1bเวลามอสโก0เวลามาต" + - "รฐานมอสโก0เวลาฤดูร้อนมอสโก\x18เวลาพม่า\x1eเวลานาอูรู\x1bเวลาเนปาล3เวลา" + - "นิวแคลิโดเนียHเวลามาตรฐานนิวแคลิโดเนียHเวลาฤดูร้อนนิวแคลิโดเนีย*เวลานิ" + - "วซีแลนด์?เวลามาตรฐานนิวซีแลนด์<เวลาออมแสงนิวซีแลนด์3เวลานิวฟันด์แลนด์H" + - "เวลามาตรฐานนิวฟันด์แลนด์Eเวลาออมแสงนิวฟันด์แลนด์\x1eเวลานีอูเอ3เวลาเกา" + - "ะนอร์ฟอล์กBเวลาหมู่เกาะเฟอร์นันโดWเวลามาตรฐานหมู่เกาะเฟอร์นันโด`เวลาฤด" + - "ูร้อนของหมู่เกาะเฟอร์นันโดKเวลาหมู่เกาะมาเรียนาเหนือ-เวลาโนโวซีบีสค์Bเ" + - "วลามาตรฐานโนโวซีบีสค์Bเวลาฤดูร้อนโนโวซีบีสค์\x1eเวลาออมสค์3เวลามาตรฐาน" + - "ออมสค์3เวลาฤดูร้อนออมสค์$เวลาปากีสถาน9เวลามาตรฐานปากีสถาน9เวลาฤดูร้อนป" + - "ากีสถาน\x1bเวลาปาเลา0เวลาปาปัวนิวกินี$เวลาปารากวัย9เวลามาตรฐานปารากวัย" + - "9เวลาฤดูร้อนปารากวัย\x18เวลาเปรู-เวลามาตรฐานเปรู-เวลาฤดูร้อนเปรู*เวลาฟิล" + - "ิปปินส์?เวลามาตรฐานฟิลิปปินส์?เวลาฤดูร้อนฟิลิปปินส์9เวลาหมู่เกาะฟินิกซ" + - "์Eเวลาแซงปีแยร์และมีเกอลงZเวลามาตรฐานแซงปีแยร์และมีเกอลง`เวลาออมแสงของ" + - "แซงปีแยร์และมีเกอลง$เวลาพิตแคร์น\x1eเวลาโปนาเป$เวลาเปียงยาง0เวลาคืยซิล" + - "ออร์ดาEเวลามาตรฐานคืยซิลออร์ดาEเวลาฤดูร้อนคืยซิลออร์ดา$เวลาเรอูนียง" + - "\x1eเวลาโรธีรา!เวลาซาคาลิน6เวลามาตรฐานซาคาลิน6เวลาฤดูร้อนซาคาลิน\x1eเวลา" + - "ซามารา3เวลามาตรฐานซามารา3เวลาฤดูร้อนซามารา\x1bเวลาซามัว0เวลามาตรฐานซาม" + - "ัว0เวลาฤดูร้อนซามัว!เวลาเซเชลส์$เวลาสิงคโปร์9เวลาหมู่เกาะโซโลมอน3เวลาเ" + - "ซาท์จอร์เจีย$เวลาซูรินาเม\x1eเวลาไซโยวา\x1eเวลาตาฮีตี\x18เวลาไทเป-เวลา" + - "มาตรฐานไทเป*เวลาออมแสงไทเป*เวลาทาจิกิสถาน!เวลาโตเกเลา\x1bเวลาตองกา0เวล" + - "ามาตรฐานตองกา0เวลาฤดูร้อนตองกา\x15เวลาชุก6เวลาเติร์กเมนิสถานKเวลามาตรฐ" + - "านเติร์กเมนิสถานKเวลาฤดูร้อนเติร์กเมนิสถาน\x1eเวลาตูวาลู$เวลาอุรุกวัย9" + - "เวลามาตรฐานอุรุกวัย9เวลาฤดูร้อนอุรุกวัย-เวลาอุซเบกิสถานBเวลามาตรฐานอุซ" + - "เบกิสถานBเวลาฤดูร้อนอุซเบกิสถาน$เวลาวานูอาตู9เวลามาตรฐานวานูอาตู9เวลาฤ" + - "ดูร้อนวานูอาตู*เวลาเวเนซุเอลา-เวลาวลาดีวอสตอคBเวลามาตรฐานวลาดีวอสตอคBเ" + - "วลาฤดูร้อนวลาดีวอสตอค'เวลาวอลโกกราด<เวลามาตรฐานวอลโกกราด<เวลาฤดูร้อนวอ" + - "ลโกกราด\x1eเวลาวอสตอค!เวลาเกาะเวก9เวลาวาลลิสและฟุตูนา$เวลายาคุตสค์9เวล" + - "ามาตรฐานยาคุตสค์9เวลาฤดูร้อนยาคุตสค์6เวลาเยคาเตรินบูร์กKเวลามาตรฐานเยค" + - "าเตรินบูร์กKเวลาฤดูร้อนเยคาเตรินบูร์ก" - -var bucket99 string = "" + // Size: 8220 bytes - "\x06ጥሪ\x06ለካ\x06መጋ\x06ሚያ\x06ግን\x06ሰነ\x06ሓም\x06ነሓ\x06መስ\x06ጥቅ\x06ሕዳ\x06ታሕ" + - "\x03ጥ\x03ለ\x03መ\x03ሚ\x03ግ\x03ሰ\x03ሓ\x03ነ\x03ሕ\x03ታ\x0cለካቲት\x0cመጋቢት\x0cሚያ" + - "ዝያ\x0cግንቦት\x09ሓምለ\x09ነሓሰ\x0fመስከረም\x0cጥቅምቲ\x09ሕዳር\x0cታሕሳስ\x06ሰን\x06ሰኑ" + - "\x06ሰሉ\x06ረቡ\x06ሓሙ\x06ዓር\x06ቀዳ\x03ረ\x03ዓ\x03ቀ\x0cሰንበት\x09ሰኑይ\x09ሠሉስ\x09ረ" + - "ቡዕ\x09ኃሙስ\x09ዓርቢ\x09ቀዳም\x03ሠ\x09ሰሉስ\x09ሓሙስ\x04ር1\x04ር2\x04ር3\x04ር4\x16" + - "ቀዳማይ ርብዒ\x16ካልኣይ ርብዒ\x16ሳልሳይ ርብዒ\x16ራብዓይ ርብዒ\x13ንጉሆ ሰዓተ\x13ድሕር ሰዓት\x0b" + - "ቅ.ል.ክ\x0bድ.ል.ክ EEEE፣ dd MMMM መዓልቲ y G EEEE፡ dd MMMM መዓልቲ y G#ቅድሚ ልደተ ክ" + - "ርስቶስ#ድሕሪ ልደተ ክርስቶስ\x03ýb\x02db\x02sb\x03çb\x02pb\x02an\x03şb\x0aýekşen" + - "be\x08duşenbe\x08sişenbe\x0açarşenbe\x09penşenbe\x04anna\x06şenbe\x02Ý" + - "\x01D\x01S\x02Ç\x01P\x01A\x02Ş\x0fd MMMM y G EEEE\x04ýan\x03few\x04mart" + - "\x03apr\x04maý\x05iýun\x05iýul\x03awg\x03sen\x03okt\x04noý\x03dek\x07ýan" + - "war\x06fewral\x05aprel\x06awgust\x09sentýabr\x08oktýabr\x07noýabr\x06dek" + - "abr\x01F\x01M\x01I\x01O\x01N\x0dd MMMM y EEEE\x07döwür\x04ýyl\x0bgeçen ý" + - "yl\x08şu ýyl\x0bindiki ýyl\x0b{0} ýyldan\x0d{0} ýyl öň\x03ý.\x0a{0}ý.-da" + - "n\x0b{0}ý. öň\x08çarýek\x10{0} çärýekden\x12{0} çärýek öň\x06çär.\x0d{0}" + - " çär-den\x0f{0} çär. öň\x0a{0} ç-den\x0c{0} ç. öň\x03aý\x0ageçen aý\x07ş" + - "u aý\x0aindiki aý\x0a{0} aýdan\x0c{0} aý öň\x05hepde\x0cgeçen hepde\x09ş" + - "u hepde\x0cindiki hepde\x0c{0} hepdeden\x0e{0} hepde öň\x04hep.\x0b{0} h" + - "ep-den\x0d{0} hep. öň\x09{0} h-den\x0b{0} h. öň\x04gün\x06düýn\x08şu gün" + - "\x05ertir\x0b{0} günden\x0d{0} gün öň\x09{0} g-den\x0b{0} g. öň\x10hepdä" + - "niň güni\x0egüniň dowamy\x05sagat\x0c{0} sagatdan\x0e{0} sagat öň\x04sag" + - ".\x0b{0} sag-dan\x0d{0} sag. öň\x0c{0} minutdan\x0e{0} minut öň\x0b{0} m" + - "in-dan\x0d{0} min. öň\x06sekunt\x0d{0} sekuntdan\x0f{0} sekunt öň\x0b{0}" + - " sek-dan\x0d{0} sek. öň\x10sagat guşaklygy\x09{0} wagty\x11{0}, tomusky " + - "wagt\x12{0}, standart wagt\x1fBeýik Britaniýa, tomusky wagt\x19Irlandiýa" + - ", standart wagt\x0aOwganystan\x0eMerkezi Afrika\x10Gündogar Afrika\x1eGü" + - "norta Afrika, standart wagt\x10Günbatar Afrika\x1fGünbatar Afrika, stand" + - "art wagt\x1eGünbatar Afrika, tomusky wagt\x08Alýaska\x17Alýaska, standar" + - "t wagt\x16Alýaska, tomusky wagt\x08Amazonka\x17Amazonka, standart wagt" + - "\x16Amazonka, tomusky wagt\x0fMerkezi Amerika\x1eMerkezi Amerika, standa" + - "rt wagt\x1dMerkezi Amerika, tomusky wagt\x10Günorta Amerika\x1fGünorta A" + - "merika, standart wagt\x1eGünorta Amerika, tomusky wagt\x13Daglyk ýeri (A" + - "BŞ)\x22Daglyk ýeri, standart wagt (ABŞ)!Daglyk ýeri, tomusky wagt (ABŞ)" + - "\x0dÝuwaş umman\x1cÝuwaş umman, standart wagt\x1bÝuwaş umman, tomusky wa" + - "gt\x04Apia\x13Apia, standart wagt\x12Apia, tomusky wagt\x0eArap ýurtlary" + - "\x1dArap ýurtlary, standart wagt\x1cArap ýurtlary, tomusky wagt\x09Argen" + - "tina\x18Argentina, standart wagt\x17Argentina, tomusky wagt\x13Günbatar " + - "Argentina\x22Günbatar Argentina, standart wagt!Günbatar Argentina, tomus" + - "ky wagt\x0aErmenistan\x19Ermenistan, standart wagt\x18Ermenistan, tomusk" + - "y wagt\x09Atlantika\x18Atlantika, standart wagt\x17Atlantika, tomusky wa" + - "gt\x13Merkezi Awstraliýa\x22Merkezi Awstraliýa, standart wagt!Merkezi Aw" + - "straliýa, tomusky wagt$Merkezi Awstraliýa, günbatar tarap3Merkezi Awstra" + - "liýa, günbatar tarap, standart wagt2Merkezi Awstraliýa, günbatar tarap, " + - "tomusky wagt\x15Gündogar Awstraliýa$Gündogar Awstraliýa, standart wagt#G" + - "ündogar Awstraliýa, tomusky wagt\x15Günbatar Awstraliýa$Günbatar Awstra" + - "liýa, standart wagt#Günbatar Awstraliýa, tomusky wagt\x0bAzerbaýjan\x1aA" + - "zerbaýjan, standart wagt\x19Azerbaýjan, tomusky wagt\x0cAzor adalary\x1b" + - "Azor adalary, standart wagt\x1aAzor adalary, tomusky wagt\x0aBangladeş" + - "\x19Bangladeş, standart wagt\x18Bangladeş, tomusky wagt\x05Butan\x09Boli" + - "wiýa\x0aBraziliýa\x19Braziliýa, standart wagt\x18Braziliýa, tomusky wagt" + - "\x12Bruneý-Darussalam\x0aKabo-Werde\x19Kabo-Werde, standart wagt\x18Kabo" + - "-Werde, tomusky wagt\x08Çamorro\x06Çatem\x15Çatem, standart wagt\x14Çate" + - "m, tomusky wagt\x05Çili\x14Çili, standart wagt\x13Çili, tomusky wagt\x06" + - "Hytaý\x15Hytaý, standart wagt\x14Hytaý, tomusky wagt\x0bÇoýbalsan\x1aÇoý" + - "balsan, standart wagt\x19Çoýbalsan, tomusky wagt\x0dKrismas adasy\x0dKok" + - "os adalary\x0aKolumbiýa\x19Kolumbiýa, standart wagt\x18Kolumbiýa, tomusk" + - "y wagt\x0cKuka adalary\x1bKuka adalary, standart wagt\x1aKuka adalary, t" + - "omusky wagt\x04Kuba\x13Kuba, standart wagt\x12Kuba, tomusky wagt\x07Deýw" + - "is\x11Dýumon-d-Ýurwil\x0fGündogar Timor\x0bPasha adasy\x1aPasha adasy, s" + - "tandart wagt\x19Pasha adasy, tomusky wagt\x07Ekwador\x10Merkezi Ýewropa" + - "\x1fMerkezi Ýewropa, standart wagt\x1eMerkezi Ýewropa, tomusky wagt\x12G" + - "ündogar Ýewropa!Gündogar Ýewropa, standart wagt Gündogar Ýewropa, tomus" + - "ky wagt\x17Uzak Gündogar Ýewropa\x12Günbatar Ýewropa!Günbatar Ýewropa, s" + - "tandart wagt Günbatar Ýewropa, tomusky wagt\x10Folklend adalary\x1fFolkl" + - "end adalary, standart wagt\x1eFolklend adalary, tomusky wagt\x04Fiji\x13" + - "Fiji, standart wagt\x12Fiji, tomusky wagt\x0eFransuz Gwiana\x1eGünorta F" + - "ransuz we Antarktika\x11Galapagos adalary\x07Gambýe\x08Gruziýa\x17Gruziý" + - "a, standart wagt\x16Gruziýa, tomusky wagt\x10Gilberta adalary\x1cGrinwiç" + - " boýunça orta wagt\x16Gündogar Grenlandiýa%Gündogar Grenlandiýa, standar" + - "t wagt$Gündogar Grenlandiýa, tomusky wagt\x16Günbatar Grenlandiýa%Günbat" + - "ar Grenlandiýa, standart wagt$Günbatar Grenlandiýa, tomusky wagt\x1bPars" + - " aýlagy, standart wagt\x07Gaýana\x0cGawaý-Aleut\x1bGawaý-Aleut, standart" + - " wagt\x1aGawaý-Aleut, tomusky wagt\x07Gonkong\x16Gonkong, standart wagt" + - "\x15Gonkong, tomusky wagt\x04Howd\x13Howd, standart wagt\x12Howd, tomusk" + - "y wagt\x09Hindistan\x0cHindi ummany\x0bHindihytaý\x13Merkezi Indoneziýa" + - "\x15Gündogar Indoneziýa\x15Günbatar Indoneziýa\x06Eýran\x15Eýran, standa" + - "rt wagt\x14Eýran, tomusky wagt\x07Irkutsk\x16Irkutsk, standart wagt\x15I" + - "rkutsk, tomusky wagt\x08Ysraýyl\x17Ysraýyl, standart wagt\x16Ysraýyl, to" + - "musky wagt\x0aÝaponiýa\x19Ýaponiýa, standart wagt\x18Ýaponiýa, tomusky w" + - "agt\x14Gündogar Gazagystan\x14Günbatar Gazagystan\x07Koreýa\x16Koreýa, s" + - "tandart wagt\x15Koreýa, tomusky wagt\x08Kosraýe\x0cKrasnoýarsk\x1bKrasno" + - "ýarsk, standart wagt\x1aKrasnoýarsk, tomusky wagt\x0aGyrgyzstan\x0dLaýn" + - " adalary\x08Lord-Hau\x17Lord-Hau, standart wagt\x16Lord-Hau, tomusky wag" + - "t\x08Makkuori\x07Magadan\x16Magadan, standart wagt\x15Magadan, tomusky w" + - "agt\x0bMalaýziýa\x09Maldiwler\x0eMarkiz adalary\x0fMarşal adalary\x09Maw" + - "rikiý\x18Mawrikiý, standart wagt\x17Mawrikiý, tomusky wagt\x06Mouson\x11" + - "D.g.-G.b. Meksika D.g.-G.b. Meksika, standart wagt\x1fD.g.-G.b. Meksika," + - " tomusky wagt\x16Meksikan Ýuwaş umman%Meksikan Ýuwaş umman, standart wag" + - "t$Meksikan Ýuwaş umman, tomusky wagt\x0aUlan-Bator\x19Ulan-Bator, standa" + - "rt wagt\x18Ulan-Bator, tomusky wagt\x06Moskwa\x15Moskwa, standart wagt" + - "\x14Moskwa, tomusky wagt\x07Mýanma\x05Nauru\x05Nepal\x11Täze Kaledoniýa " + - "Täze Kaledoniýa, standart wagt\x1fTäze Kaledoniýa, tomusky wagt\x10Täze " + - "Zelandiýa\x1fTäze Zelandiýa, standart wagt\x1eTäze Zelandiýa, tomusky wa" + - "gt\x0dNýufaundlend\x1cNýufaundlend, standart wagt\x1bNýufaundlend, tomus" + - "ky wagt\x04Niue\x07Norfolk\x14Fernandu-di-Noronýa#Fernandu-di-Noronýa, s" + - "tandart wagt\x22Fernandu-di-Noronýa, tomusky wagt\x0bNowosibirsk\x1aNowo" + - "sibirsk, standart wagt\x18Nowosibisk, tomusky wagt\x04Omsk\x13Omsk, stan" + - "dart wagt\x12Omsk, tomusky wagt\x09Päkistan\x18Päkistan, standart wagt" + - "\x17Päkistan, tomusky wagt\x05Palau\x16Papua - Täze Gwineýa\x09Paragwaý" + - "\x18Paragwaý, standart wagt\x17Paragwaý, tomusky wagt\x04Peru\x13Peru, s" + - "tandart wagt\x12Peru, tomusky wagt\x0bFilippinler\x1aFilippinler, standa" + - "rt wagt\x19Filippinler, tomusky wagt\x0eFeniks adalary\x14Sen Pýer we Mi" + - "kelon#Sen Pýer we Mikelon, standart wagt\x22Sen Pýer we Mikelon, tomusky" + - " wagt\x07Pitkern\x06Ponape\x0aReýunýon\x06Rotera\x07Sahalin\x16Sahalin, " + - "standart wagt\x15Sahalin, tomusky wagt\x05Samoa\x14Samoa, standart wagt" + - "\x13Samoa, tomusky wagt\x10Seýşel adalary\x17Singapur, standart wagt\x0f" + - "Solomon adalary\x12Günorta Georgiýa\x07Surinam\x06Sýowa\x07Taýiti\x08Taý" + - "beý\x17Taýbeý, standart wagt\x16Taýbeý, tomusky wagt\x0bTäjigistan\x07To" + - "kelau\x05Tonga\x14Tonga, standart wagt\x13Tonga, tomusky wagt\x05Çuuk" + - "\x0dTürkmenistan\x1cTürkmenistan, standart wagt\x1bTürkmenistan, tomusky" + - " wagt\x03TMT\x04TMST\x06Tuwalu\x08Urugwaý\x17Urugwaý, standart wagt\x16U" + - "rugwaý, tomusky wagt\x0bÖzbekistan\x1aÖzbekistan, standart wagt\x19Özbek" + - "istan, tomusky wagt\x07Wanuatu\x16Wanuatu, standart wagt\x15Wanuatu, tom" + - "usky wagt\x09Wenesuela\x0bWladiwostok\x1aWladiwostok, standart wagt\x19W" + - "ladiwostok, tomusky wagt\x09Wolgograd\x18Wolgograd, standart wagt\x17Wol" + - "gograd, tomusky wagt\x06Wostok\x0bWeýk adasy\x10Wollis we Futuna\x08Ýaku" + - "tsk\x17Ýakutsk, standart wagt\x16Ýakutsk, tomusky wagt\x0eÝekaterinburg" + - "\x1dÝekaterinburg, standart wagt\x1cÝekaterinburg, tomusky wagt\x04Sān" + - "\x04Fēp\x05Maʻa\x05ʻEpe\x03Mē\x03Sun\x03Siu\x05ʻAok\x03Sep\x05ʻOka\x04Nō" + - "v\x04Tīs\x01E\x01T\x08Sānuali\x08Fēpueli\x07Maʻasi\x09ʻEpeleli\x04Sune" + - "\x06Siulai\x08ʻAokosi\x08Sepitema\x09ʻOkatopa\x07Nōvema\x07Tīsema\x04Sāp" + - "\x04Mōn\x04Tūs\x03Pul\x05Tuʻa\x03Fal\x03Tok\x07Sāpate\x07Mōnite\x07Tūsit" + - "e\x08Pulelulu\x0dTuʻapulelulu\x07Falaite\x08Tokonaki\x0ekuata ʻuluaki" + - "\x08kuata ua\x0akuata tolu\x09kuata fā\x07kuata 1\x07kuata 2\x07kuata 3" + - "\x07kuata 4\x0ahengihengi\x06efiafi\x02HH\x02EA\x01H\x01K\x01C\x01L\x01S" + - "\x04Män\x04Ziš\x03Mit\x04Fró\x03Fri\x03Sam" - -var bucket100 string = "" + // Size: 11818 bytes - "\x08ki muʻa\x10taʻu ʻo Sīsū\x06kuonga\x05taʻu\x0etaʻu kuoʻosi\x09taʻú ni" + - "\x0dtaʻu kahaʻu\x14ʻi he taʻu ʻe {0}\x16taʻu ʻe {0} kuoʻosi\x05kuata\x0e" + - "kuata kuoʻosi\x0dkuata koʻeni\x0akuata hoko\x14ʻi he kuata ʻe {0}\x16kua" + - "ta ʻe {0} kuoʻosi\x07māhina\x10māhina kuoʻosi\x0bmāhiná ni\x0fmāhina kah" + - "aʻu\x16ʻi he māhina ʻe {0}\x18māhina ʻe {0} kuoʻosi\x04uike\x0duike kuoʻ" + - "osi\x08uiké ni\x0cuike kahaʻu\x13ʻi he uike ʻe {0}\x15uike ʻe {0} kuoʻos" + - "i\x15ʻi he uike ʻo e {0}\x05ʻaho\x0aʻaneheafi\x08ʻaneafi\x09ʻahó ni\x0dʻ" + - "apongipongi\x0fʻahepongipongi\x14ʻi he ʻaho ʻe {0}\x16ʻaho ʻe {0} kuoʻos" + - "i\x10ʻaho ʻo e uike\x10Sāpate kuoʻosi\x0bSāpaté ni\x0fSāpate kahaʻu%Ngaa" + - "hi Sāpate ʻe {0} ʻi he kahaʻu%Ngaahi Sāpate ʻe {0} ʻi he kuohili\x1eSāpa" + - "te ʻe {0} ʻi he kahaʻu\x1eSāpate ʻe {0} ʻi he kuohili\x10Mōnite kuoʻosi" + - "\x0bMōnité ni\x0fMōnite kahaʻu%Ngaahi Mōnite ʻe {0} ʻi he kahaʻu%Ngaahi " + - "Mōnite ʻe {0} ʻi he kuohili\x1eMōnite ʻe {0} ʻi he kahaʻu\x1eMōnite ʻe {" + - "0} ʻi he kuohili\x10Tūsite kuoʻosi\x0bTūsité ni\x0fTūsite kahaʻu%Ngaahi " + - "Tūsite ʻe {0} ʻi he kahaʻu%Ngaahi Tūsite ʻe {0} ʻi he kuohili\x1eTūsite " + - "ʻe {0} ʻi he kahaʻu\x1eTūsite ʻe {0} ʻi he kuohili\x11Pulelulu kuoʻosi" + - "\x0cPulelulú ni\x10Pulelulu kahaʻu&Ngaahi Pulelulu ʻe {0} ʻi he kahaʻu&N" + - "gaahi Pulelulu ʻe {0} ʻi he kuohili\x1fPulelulu ʻe {0} ʻi he kahaʻu\x1fP" + - "ulelulu ʻe {0} ʻi he kuohili\x16Tuʻapulelulu kuoʻosi\x11Tuʻapulelulú ni" + - "\x15Tuʻapulelulu kahaʻu+Ngaahi Tuʻapulelulu ʻe {0} ʻi he kahaʻu+Ngaahi T" + - "uʻapulelulu ʻe {0} ʻi he kuohili$Tuʻapulelulu ʻe {0} ʻi he kahaʻu$Tuʻapu" + - "lelulu ʻe {0} ʻi he kuohili\x10Falaite kuoʻosi\x0bFalaité ni\x0fFalaite " + - "kahaʻu%Ngaahi Falaite ʻe {0} ʻi he kahaʻu%Ngaahi Falaite ʻe {0} ʻi he ku" + - "ohili\x1eFalaite ʻe {0} ʻi he kahaʻu\x1eFalaite ʻe {0} ʻi he kuohili\x11" + - "Tokonaki kuoʻosi\x0cTokonakí ni\x10Tokonaki kahaʻu&Ngaahi Tokonaki ʻe {0" + - "} ʻi he kahaʻu&Ngaahi Tokonaki ʻe {0} ʻi he kuohili\x1fTokonaki ʻe {0} ʻ" + - "i he kahaʻu\x1fTokonaki ʻe {0} ʻi he kuohili\x04houa\x0fko e houa ʻeni" + - "\x13ʻi he houa ʻe {0}\x15houa ʻe {0} kuoʻosi\x11ko e miniti ʻeni\x15ʻi h" + - "e miniti ʻe {0}\x17miniti ʻe {0} kuoʻosi\x06sekoni\x09taimí ni\x15ʻi he " + - "sekoni ʻe {0}\x17sekoni ʻe {0} kuoʻosi\x0etaimi fakavahe\x09Taimi {0}" + - "\x0f{0} Taimi liliu\x10{0} Taimi totonu\x1fhoua fakapilitānia taimi lili" + - "u\x1fhoua fakaʻaealani taimi totonu\x11houa fakaʻakelī\x1ehoua fakaʻakel" + - "ī taimi totonu\x1dhoua fakaʻakelī taimi liliu\x19houa fakaʻafikānisitan" + - "i\x17houa fakaʻafelika-loto\x19houa fakaʻafelika-hahake\x18houa fakaʻafe" + - "lika-tonga\x19houa fakaʻafelika-hihifo&houa fakaʻafelika-hihifo taimi to" + - "tonu%houa fakaʻafelika-hihifo taimi liliu\x12houa fakaʻalasika\x1fhoua f" + - "akaʻalasika taimi totonu\x1ehoua fakaʻalasika taimi liliu\x12houa fakaʻa" + - "lamati\x1fhoua fakaʻalamati taimi totonu\x1ehoua fakaʻalamati taimi lili" + - "u\x13houa fakaʻamasōne houa fakaʻamasōne taimi totonu\x1fhoua fakaʻamasō" + - "ne taimi liliu\x1fhoua fakaʻamelika-tokelau loto,houa fakaʻamelika-tokel" + - "au loto taimi totonu+houa fakaʻamelika-tokelau loto taimi liliu!houa fak" + - "aʻamelika-tokelau hahake.houa fakaʻamelika-tokelau hahake taimi totonu-h" + - "oua fakaʻamelika-tokelau hahake taimi liliu#houa fakaʻamelika-tokelau mo" + - "ʻunga0houa fakaʻamelika-tokelau moʻunga taimi totonu/houa fakaʻamelika-" + - "tokelau moʻunga taimi liliu#houa fakaʻamelika-tokelau pasifika0houa faka" + - "ʻamelika-tokelau pasifika taimi totonu/houa fakaʻamelika-tokelau pasifi" + - "ka taimi liliu\x19houa fakalūsia-ʻanatili&houa fakalūsia-ʻanatili taimi " + - "totonu%houa fakalūsia-ʻanatili taimi liliu\x0dhoua fakaapia\x1ahoua faka" + - "apia taimi totonu\x19houa fakaapia taimi liliu\x11houa fakaʻakitau\x1eho" + - "ua fakaʻakitau taimi totonu\x1dhoua fakaʻakitau taimi liliu\x13houa faka" + - "ʻakitōpe houa fakaʻakitōpe taimi totonu\x1fhoua fakaʻakitōpe taimi lili" + - "u\x11houa fakaʻalepea\x1ehoua fakaʻalepea taimi totonu\x1dhoua fakaʻalep" + - "ea taimi liliu\x14houa fakaʻasenitina!houa fakaʻasenitina taimi totonu h" + - "oua fakaʻasenitina taimi liliu\x1bhoua fakaʻasenitina-hihifo(houa fakaʻa" + - "senitina-hihifo taimi totonu'houa fakaʻasenitina-hihifo taimi liliu\x12h" + - "oua fakaʻāmenia\x1fhoua fakaʻāmenia taimi totonu\x1ehoua fakaʻāmenia tai" + - "mi liliu(houa fakaʻamelika-tokelau ʻatalanitiki5houa fakaʻamelika-tokela" + - "u ʻatalanitiki taimi totonu4houa fakaʻamelika-tokelau ʻatalanitiki taimi" + - " liliu\x1choua fakaʻaositelēlia-loto)houa fakaʻaositelēlia-loto taimi to" + - "tonu(houa fakaʻaositelēlia-loto taimi liliu#houa fakaʻaositelēlia-loto-h" + - "ihifo0houa fakaʻaositelēlia-loto-hihifo taimi totonu/houa fakaʻaositelēl" + - "ia-loto-hihifo taimi liliu\x1ehoua fakaʻaositelēlia-hahake+houa fakaʻaos" + - "itelēlia-hahake taimi totonu*houa fakaʻaositelēlia-hahake taimi liliu" + - "\x1ehoua fakaʻaositelēlia-hihifo+houa fakaʻaositelēlia-hihifo taimi toto" + - "nu*houa fakaʻaositelēlia-hihifo taimi liliu\x15houa fakaʻasapaisani\x22h" + - "oua fakaʻasapaisani taimi totonu!houa fakaʻasapaisani taimi liliu\x13hou" + - "a fakaʻāsolesi houa fakaʻāsolesi taimi totonu\x1fhoua fakaʻāsolesi taimi" + - " liliu\x15houa fakapengilātesi\x22houa fakapengilātesi taimi totonu!houa" + - " fakapengilātesi taimi liliu\x10houa fakapūtani\x11houa fakapolīvia\x12h" + - "oua fakapalāsila\x1fhoua fakapalāsila taimi totonu\x1ehoua fakapalāsila " + - "taimi liliu\x10houa fakapulunei\x15houa fakamuiʻi-vēte\x22houa fakamuiʻi" + - "-vēte taimi totonu!houa fakamuiʻi-vēte taimi liliu\x0ehoua fakakeesi\x0f" + - "houa fakakamolo\x11houa fakasatihami\x1ehoua fakasatihami taimi totonu" + - "\x1dhoua fakasatihami taimi liliu\x0dhoua fakasili\x1ahoua fakasili taim" + - "i totonu\x19houa fakasili taimi liliu\x0fhoua fakasiaina\x1choua fakasia" + - "ina taimi totonu\x1bhoua fakasiaina taimi liliu\x14houa fakakoipalisani!" + - "houa fakakoipalisani taimi totonu houa fakakoipalisani taimi liliu\x17ho" + - "ua fakamotukilisimasi\x13houa fakamotukokosi\x12houa fakakolomipia\x1fho" + - "ua fakakolomipia taimi totonu\x1ehoua fakakolomipia taimi liliu\x16houa " + - "fakaʻotumotukuki#houa fakaʻotumotukuki taimi totonu\x22houa fakaʻotumotu" + - "kuki taimi liliu\x0ehoua fakakiupa\x1bhoua fakakiupa taimi totonu\x1ahou" + - "a fakakiupa taimi liliu\x0fhoua fakatavisi\x18houa fakatūmoni-tūvile\x15" + - "houa fakatimoa-hahake\x10houa fakalapanui\x1dhoua fakalapanui taimi toto" + - "nu\x1choua fakalapanui taimi liliu\x12houa fakaʻekuetoa\x16houa fakaʻeul" + - "ope-loto#houa fakaʻeulope-loto taimi totonu\x22houa fakaʻeulope-loto tai" + - "mi liliu\x18houa fakaʻeulope-hahake%houa fakaʻeulope-hahake taimi totonu" + - "$houa fakaʻeulope-hahake taimi liliu\x1dhoua fakaʻeulope-hahake-ange\x18" + - "houa fakaʻeulope-hihifo%houa fakaʻeulope-hihifo taimi totonu$houa fakaʻe" + - "ulope-hihifo taimi liliu\x1bhoua fakaʻotumotu-fokulani(houa fakaʻotumotu" + - "-fokulani taimi totonu'houa fakaʻotumotu-fokulani taimi liliu\x0dhoua fa" + - "kafisi\x1ahoua fakafisi taimi totonu\x19houa fakafisi taimi liliu\x1dhou" + - "a fakakuiana-fakafalanisē\x1ehoua fakaʻanetātikafalanisē\x13houa fakakal" + - "apakosi\x11houa fakakamipiē\x10houa fakaseōsia\x1dhoua fakaseōsia taimi " + - "totonu\x1choua fakaseōsia taimi liliu\x11houa fakakilipasi\x1ahoua fakak" + - "iliniuisi mālie\x19houa fakafonuamata-hahake&houa fakafonuamata-hahake t" + - "aimi totonu%houa fakafonuamata-hahake taimi liliu\x19houa fakafonuamata-" + - "hihifo&houa fakafonuamata-hihifo taimi totonu%houa fakafonuamata-hihifo " + - "taimi liliu\x0ehoua fakakuami\x10houa fakakūlifi\x0fhoua fakakuiana\x10h" + - "oua fakahauaʻi\x1dhoua fakahauaʻi taimi totonu\x1choua fakahauaʻi taimi " + - "liliu\x14houa fakahongi-kongi!houa fakahongi-kongi taimi totonu houa fak" + - "ahongi-kongi taimi liliu\x0fhoua fakahovite\x1choua fakahovite taimi tot" + - "onu\x1bhoua fakahovite taimi liliu\x11houa fakaʻinitia\x16houa fakamoana" + - "ʻinitia\x16houa fakaʻinitosiaina\x1ahoua fakaʻinitonisia-loto\x1choua f" + - "akaʻinitonisia-hahake\x1choua fakaʻinitonisia-hihifo\x11houa fakaʻilaani" + - "\x1ehoua fakaʻilaani taimi totonu\x1dhoua fakaʻilaani taimi liliu\x1chou" + - "a fakalūsia-ʻīkutisiki)houa fakalūsia-ʻīkutisiki taimi totonu(houa fakal" + - "ūsia-ʻīkutisiki taimi liliu\x12houa fakaʻisileli\x1fhoua fakaʻisileli t" + - "aimi totonu\x1ehoua fakaʻisileli taimi liliu\x10houa fakasiapani\x1dhoua" + - " fakasiapani taimi totonu\x1choua fakasiapani taimi liliu\x22houa fakalū" + - "sia-petelopavilovisiki/houa fakalūsia-petelopavilovisiki taimi totonu.ho" + - "ua fakalūsia-petelopavilovisiki taimi liliu\x1ahoua fakakasakitani-hahak" + - "e\x1ahoua fakakasakitani-hihifo\x0fhoua fakakōlea\x1choua fakakōlea taim" + - "i totonu\x1bhoua fakakōlea taimi liliu\x10houa fakakosilae\x1fhoua fakal" + - "ūsia-kalasinoiāsiki,houa fakalūsia-kalasinoiāsiki taimi totonu+houa fak" + - "alūsia-kalasinoiāsiki taimi liliu\x14houa fakakīkisitani\x11houa fakalan" + - "gikā\x17houa fakaʻotumotulaine\x17houa fakamotuʻeikihoue$houa fakamotuʻe" + - "ikihoue taimi totonu#houa fakamotuʻeikihoue taimi liliu\x0ehoua fakamaka" + - "u\x1bhoua fakamakau taimi totonu\x1ahoua fakamakau taimi liliu\x14houa f" + - "akamotumakuali\x18houa fakalūsia-makatani%houa fakalūsia-makatani taimi " + - "totonu$houa fakalūsia-makatani taimi liliu\x11houa fakamaleisia\x13houa " + - "fakamalativisi\x12houa fakamākesasi\x18houa fakaʻotumotumasolo\x13houa f" + - "akamaulitiusi houa fakamaulitiusi taimi totonu\x1fhoua fakamaulitiusi ta" + - "imi liliu\x10houa fakamausoni houa fakamekisikou-tokelauhihifo-houa faka" + - "mekisikou-tokelauhihifo taimi totonu,houa fakamekisikou-tokelauhihifo ta" + - "imi liliu\x1bhoua fakamekisikou-pasifika(houa fakamekisikou-pasifika tai" + - "mi totonu'houa fakamekisikou-pasifika taimi liliu\x17houa fakaʻulānipātā" + - "$houa fakaʻulānipātā taimi totonu#houa fakaʻulānipātā taimi liliu\x17hou" + - "a fakalūsia-mosikou$houa fakalūsia-mosikou taimi totonu#houa fakalūsia-m" + - "osikou taimi liliu\x0dhoua fakapema\x0ehoua fakanaulu\x0fhoua fakanepali" + - "\x19houa fakakaletōniafoʻou&houa fakakaletōniafoʻou taimi totonu%houa fa" + - "kakaletōniafoʻou taimi liliu\x12houa fakanuʻusila\x1fhoua fakanuʻusila t" + - "aimi totonu\x1ehoua fakanuʻusila taimi liliu\x19houa fakafonuaʻilofoʻou&" + - "houa fakafonuaʻilofoʻou taimi totonu%houa fakafonuaʻilofoʻou taimi liliu" + - "\x0ehoua fakaniuē\x11houa fakanoafōki\x1ehoua fakafēnanito-te-nolōnia+ho" + - "ua fakafēnanito-te-nolōnia taimi totonu*houa fakafēnanito-te-nolōnia tai" + - "mi liliu\x17houa fakamalianatokelau\x1dhoua fakalūsia-novosipīsiki*houa " + - "fakalūsia-novosipīsiki taimi totonu)houa fakalūsia-novosipīsiki taimi li" + - "liu\x19houa fakalūsia-ʻomisiki&houa fakalūsia-ʻomisiki taimi totonu%houa" + - " fakalūsia-ʻomisiki taimi liliu\x14houa fakapākisitani!houa fakapākisita" + - "ni taimi totonu houa fakapākisitani taimi liliu\x0ehoua fakapalau\x15hou" + - "a fakapapuaniukini\x11houa fakapalakuai\x1ehoua fakapalakuai taimi toton" + - "u\x1dhoua fakapalakuai taimi liliu\x0ehoua fakapelū\x1bhoua fakapelū tai" + - "mi totonu\x1ahoua fakapelū taimi liliu\x12houa fakafilipaine\x1fhoua fak" + - "afilipaine taimi totonu\x1ehoua fakafilipaine taimi liliu\x1bhoua fakaʻo" + - "tumotufoinikisi\x1dhoua fakasā-piea-mo-mikeloni*houa fakasā-piea-mo-mike" + - "loni taimi totonu)houa fakasā-piea-mo-mikeloni taimi liliu\x11houa fakap" + - "itikani\x11houa fakapōnapē\x12houa fakakisilōta\x1fhoua fakakisilōta tai" + - "mi totonu\x1ehoua fakakisilōta taimi liliu\x12houa fakalēunioni\x0fhoua " + - "fakalotela\x19houa fakalūsia-sakāline&houa fakalūsia-sakāline taimi toto" + - "nu%houa fakalūsia-sakāline taimi liliu\x16houa fakalūsia-samala#houa fak" + - "alūsia-samala taimi totonu\x22houa fakalūsia-samala taimi liliu\x11houa " + - "fakahaʻamoa\x1ehoua fakahaʻamoa taimi totonu\x1dhoua fakahaʻamoa taimi l" + - "iliu\x1ahoua fakaʻotumotu-seiseli\x11houa fakasingapoa\x1ahoua fakaʻotum" + - "otusolomone\x14houa fakasiosiatonga\x11houa fakasuliname\x0ehoua fakasio" + - "ua\x0fhoua fakatahisi\x0fhoua fakataipei\x1choua fakataipei taimi totonu" + - "\x1bhoua fakataipei taimi liliu\x13houa fakatasikitani\x10houa fakatokel" + - "au\x0ehoua fakatonga\x1bhoua fakatonga taimi totonu\x1ahoua fakatonga ta" + - "imi liliu\x0ehoua fakatūke\x18houa fakatūkimenisitani%houa fakatūkimenis" + - "itani taimi totonu$houa fakatūkimenisitani taimi liliu\x10houa fakatūval" + - "u\x12houa fakaʻulukuai\x1fhoua fakaʻulukuai taimi totonu\x1ehoua fakaʻul" + - "ukuai taimi liliu\x16houa fakaʻusipekitani#houa fakaʻusipekitani taimi t" + - "otonu\x22houa fakaʻusipekitani taimi liliu\x10houa fakavanuatu\x1dhoua f" + - "akavanuatu taimi totonu\x1choua fakavanuatu taimi liliu\x12houa fakavene" + - "suela\x1ehoua fakalūsia-valativositoki+houa fakalūsia-valativositoki tai" + - "mi totonu*houa fakalūsia-valativositoki taimi liliu\x1choua fakalūsia-vo" + - "likokalati)houa fakalūsia-volikokalati taimi totonu(houa fakalūsia-volik" + - "okalati taimi liliu\x11houa fakavositoki\x11houa fakamotuueke\x19houa fa" + - "kaʻuvea mo futuna\x1dhoua fakalūsia-ʻiākutisiki*houa fakalūsia-ʻiākutisi" + - "ki taimi totonu)houa fakalūsia-ʻiākutisiki taimi liliu!houa fakalūsia-ʻi" + - "ekatelinepūki.houa fakalūsia-ʻiekatelinepūki taimi totonu-houa fakalūsia" + - "-ʻiekatelinepūki taimi liliu" - -var bucket101 string = "" + // Size: 9487 bytes - "\x04Tût\x05Bâbe\x05Hatur\x06Keyhek\x05Tûbe\x06Imşir\x08Bermuhat\x07Bermu" + - "de\x08Peyştes\x04Bune\x04Ebip\x07Mısrî\x05Nesî\x0fG d MMMM y EEEE\x0cGGG" + - "GG d.MM.y\x03Oca\x04Şub\x03Mar\x03Nis\x03May\x03Haz\x03Tem\x04Ağu\x03Eyl" + - "\x03Eki\x03Kas\x03Ara\x04Ocak\x06Şubat\x04Mart\x05Nisan\x06Mayıs\x07Hazi" + - "ran\x06Temmuz\x08Ağustos\x06Eylül\x04Ekim\x06Kasım\x07Aralık\x03Paz\x03P" + - "zt\x03Sal\x04Çar\x03Per\x03Cum\x03Cmt\x02Pa\x02Pt\x02Sa\x03Ça\x02Pe\x02C" + - "u\x02Ct\x05Pazar\x09Pazartesi\x05Salı\x0aÇarşamba\x09Perşembe\x04Cuma" + - "\x09Cumartesi\x03Ç1\x03Ç2\x03Ç3\x03Ç4\x0a1. çeyrek\x0a2. çeyrek\x0a3. çe" + - "yrek\x0a4. çeyrek\x0dgece yarısı\x04ÖÖ\x06öğle\x03ÖS\x0föğleden önce\x0f" + - "öğleden sonra\x0cakşamüstü\x06akşam\x04gece\x02ö\x03ös\x0eMilattan Önce" + - "\x10İsa’dan Önce\x0eMilattan Sonra\x10İsa’dan Sonra\x03MÖ\x04İÖ\x02MS" + - "\x03İS\x06Tişri\x07Heşvan\x06Kislev\x05Tevet\x06Şevat\x06Veadar\x04Adar" + - "\x07Adar II\x05İyar\x05Sivan\x05Tamuz\x02Av\x04Elul\x08Muharrem\x05Safer" + - "\x0cRebiülevvel\x0bRebiülahir\x0eCemaziyelevvel\x0dCemaziyelahir\x05Rece" + - "p\x06Şaban\x07Ramazan\x07Şevval\x07Zilkade\x08Zilhicce\x05Hicri\x08d.MM." + - "y G\x09Ferverdin\x0bOrdibeheşt\x06Hordad\x03Tir\x06Mordad\x09Şehriver" + - "\x04Mehr\x04Aban\x04Azer\x03Dey\x06Behmen\x06Esfend\x0dMiladi Dönem\x04y" + - "ıl\x0bgeçen yıl\x07bu yıl\x0cgelecek yıl\x0e{0} yıl sonra\x0e{0} yıl ön" + - "ce\x07çeyrek\x0egeçen çeyrek\x0abu çeyrek\x0fgelecek çeyrek\x11{0} çeyre" + - "k sonra\x11{0} çeyrek önce\x05çyr.\x0f{0} çyr. sonra\x0f{0} çyr. önce" + - "\x09geçen ay\x05bu ay\x0agelecek ay\x0c{0} ay sonra\x0c{0} ay önce\x05ha" + - "fta\x0cgeçen hafta\x08bu hafta\x0dgelecek hafta\x0f{0} hafta sonra\x0f{0" + - "} hafta önce\x0c{0} haftası\x03hf.\x0d{0} hf. sonra\x0d{0} hf. önce\x0ce" + - "vvelsi gün\x04dün\x06bugün\x06yarın\x0böbür gün\x0e{0} gün sonra\x0e{0} " + - "gün önce\x10haftanın günü\x0cgeçen pazar\x08bu pazar\x0dgelecek pazar" + - "\x0f{0} pazar sonra\x0f{0} pazar önce\x0bgeçen paz.\x07bu paz.\x0cgelece" + - "k paz.\x0e{0} paz. sonra\x0e{0} paz. önce\x10geçen pazartesi\x0cbu pazar" + - "tesi\x11gelecek pazartesi\x13{0} pazartesi sonra\x13{0} pazartesi önce" + - "\x0bgeçen pzt.\x07bu pzt.\x0cgelecek pzt.\x0e{0} pzt. sonra\x0e{0} pzt. " + - "önce\x0cgeçen salı\x08bu salı\x0dgelecek salı\x0f{0} salı sonra\x0f{0} " + - "salı önce\x11geçen çarşamba\x0dbu çarşamba\x12gelecek çarşamba\x14{0} ça" + - "rşamba sonra\x14{0} çarşamba önce\x0cgeçen çar.\x08bu çar.\x0dgelecek ça" + - "r.\x0f{0} çar. sonra\x0f{0} çar. önce\x10geçen perşembe\x0cbu perşembe" + - "\x11gelecek perşembe\x13{0} perşembe sonra\x13{0} perşembe önce\x0bgeçen" + - " per.\x07bu per.\x0cgelecek per.\x0e{0} per. sonra\x0e{0} per. önce\x0bg" + - "eçen cuma\x07bu cuma\x0cgelecek cuma\x0e{0} cuma sonra\x0e{0} cuma önce" + - "\x10geçen cumartesi\x0cbu cumartesi\x11gelecek cumartesi\x13{0} cumartes" + - "i sonra\x13{0} cumartesi önce\x0bgeçen cmt.\x07bu cmt.\x0cgelecek cmt." + - "\x0e{0} cmt. sonra\x0e{0} cmt. önce\x08ÖÖ/ÖS\x0e{0} saat sonra\x0e{0} sa" + - "at önce\x03sa.\x0d{0} sa. sonra\x0d{0} sa. önce\x09bu dakika\x10{0} daki" + - "ka sonra\x10{0} dakika önce\x03dk.\x0d{0} dk. sonra\x0d{0} dk. önce\x06s" + - "aniye\x06şimdi\x10{0} saniye sonra\x10{0} saniye önce\x0d{0} sn. sonra" + - "\x0d{0} sn. önce\x0bsaat dilimi\x09{0} Saati\x0d{0} Yaz Saati\x12{0} Sta" + - "ndart Saati\x1cEşgüdümlü Evrensel Zaman\x14İngiltere Yaz Saati\x17İrland" + - "a Standart Saati\x0aAcre Saati\x13Acre Standart Saati\x0eAcre Yaz Saati" + - "\x10Afganistan Saati\x11Orta Afrika Saati\x12Doğu Afrika Saati\x1cGüney " + - "Afrika Standart Saati\x12Batı Afrika Saati\x1bBatı Afrika Standart Saati" + - "\x16Batı Afrika Yaz Saati\x0cAlaska Saati\x15Alaska Standart Saati\x10Al" + - "aska Yaz Saati\x0dAlmatı Saati\x16Almatı Standart Saati\x11Almatı Yaz Sa" + - "ati\x0cAmazon Saati\x15Amazon Standart Saati\x10Amazon Yaz Saati\x1bKuze" + - "y Amerika Merkezi Saati$Kuzey Amerika Merkezi Standart Saati\x1fKuzey Am" + - "erika Merkezi Yaz Saati\x19Kuzey Amerika Doğu Saati\x22Kuzey Amerika Doğ" + - "u Standart Saati\x1dKuzey Amerika Doğu Yaz Saati\x18Kuzey Amerika Dağ Sa" + - "ati!Kuzey Amerika Dağ Standart Saati\x1cKuzey Amerika Dağ Yaz Saati\x1bK" + - "uzey Amerika Pasifik Saati$Kuzey Amerika Pasifik Standart Saati\x1fKuzey" + - " Amerika Pasifik Yaz Saati\x0cAnadyr Saati\x16Anadır Standart Saati\x11A" + - "nadır Yaz Saati\x0aApia Saati\x13Apia Standart Saati\x0eApia Yaz Saati" + - "\x0bAktav Saati\x14Aktav Standart Saati\x0fAktav Yaz Saati\x0dAktöbe Saa" + - "ti\x16Aktöbe Standart Saati\x11Aktöbe Yaz Saati\x0fArabistan Saati\x18Ar" + - "abistan Standart Saati\x13Arabistan Yaz Saati\x0eArjantin Saati\x17Arjan" + - "tin Standart Saati\x12Arjantin Yaz Saati\x14Batı Arjantin Saati\x1dBatı " + - "Arjantin Standart Saati\x18Batı Arjantin Yaz Saati\x10Ermenistan Saati" + - "\x19Ermenistan Standart Saati\x14Ermenistan Yaz Saati\x0eAtlantik Saati" + - "\x17Atlantik Standart Saati\x12Atlantik Yaz Saati\x15Orta Avustralya Saa" + - "ti\x1eOrta Avustralya Standart Saati\x19Orta Avustralya Yaz Saati\x1aİçb" + - "atı Avustralya Saati#İçbatı Avustralya Standart Saati\x1eİçbatı Avustral" + - "ya Yaz Saati\x16Doğu Avustralya Saati\x1fDoğu Avustralya Standart Saati" + - "\x1aDoğu Avustralya Yaz Saati\x16Batı Avustralya Saati\x1fBatı Avustraly" + - "a Standart Saati\x1aBatı Avustralya Yaz Saati\x10Azerbaycan Saati\x19Aze" + - "rbaycan Standart Saati\x14Azerbaycan Yaz Saati\x0dAzorlar Saati\x16Azorl" + - "ar Standart Saati\x11Azorlar Yaz Saati\x10Bangladeş Saati\x19Bangladeş S" + - "tandart Saati\x14Bangladeş Yaz Saati\x0cBhutan Saati\x0dBolivya Saati" + - "\x0eBrasilia Saati\x17Brasilia Standart Saati\x12Brasilia Yaz Saati\x1cB" + - "runei Darü’s-Selam Saati\x10Cape Verde Saati\x19Cape Verde Standart Saat" + - "i\x14Cape Verde Yaz Saati\x0bCasey Saati\x0eChamorro Saati\x0dChatham Sa" + - "ati\x16Chatham Standart Saati\x11Chatham Yaz Saati\x0bŞili Saati\x14Şili" + - " Standart Saati\x0fŞili Yaz Saati\x0aÇin Saati\x13Çin Standart Saati\x0e" + - "Çin Yaz Saati\x10Çoybalsan Saati\x19Çoybalsan Standart Saati\x14Çoybals" + - "an Yaz Saati\x16Christmas Adası Saati\x14Cocos Adaları Saati\x0fKolombiy" + - "a Saati\x18Kolombiya Standart Saati\x13Kolombiya Yaz Saati\x13Cook Adala" + - "rı Saati\x1cCook Adaları Standart Saati\x1dCook Adaları Yarı Yaz Saati" + - "\x0bKüba Saati\x14Küba Standart Saati\x0fKüba Yaz Saati\x0bDavis Saati" + - "\x18Dumont-d’Urville Saati\x11Doğu Timor Saati\x15Paskalya Adası Saati" + - "\x1ePaskalya Adası Standart Saati\x19Paskalya Adası Yaz Saati\x0dEkvador" + - " Saati\x11Orta Avrupa Saati\x1aOrta Avrupa Standart Saati\x15Orta Avrupa" + - " Yaz Saati\x12Doğu Avrupa Saati\x1bDoğu Avrupa Standart Saati\x16Doğu Av" + - "rupa Yaz Saati\x17Daha Doğu Avrupa Saati\x12Batı Avrupa Saati\x1bBatı Av" + - "rupa Standart Saati\x16Batı Avrupa Yaz Saati\x17Falkland Adaları Saati F" + - "alkland Adaları Standart Saati\x1bFalkland Adaları Yaz Saati\x0aFiji Saa" + - "ti\x13Fiji Standart Saati\x0eFiji Yaz Saati\x18Fransız Guyanası Saati#Fr" + - "ansız Güney ve Antarktika Saati\x0fGalapagos Saati\x0dGambier Saati\x10G" + - "ürcistan Saati\x19Gürcistan Standart Saati\x14Gürcistan Yaz Saati\x16Gi" + - "lbert Adaları Saati\x18Greenwich Ortalama Saati\x15Doğu Grönland Saati" + - "\x1eDoğu Grönland Standart Saati\x19Doğu Grönland Yaz Saati\x15Batı Grön" + - "land Saati\x1eBatı Grönland Standart Saati\x19Batı Grönland Yaz Saati" + - "\x13Guam Standart Saati\x0dKörfez Saati\x0cGuyana Saati\x12Hawaii-Aleut " + - "Saati\x1bHawaii-Aleut Standart Saati\x16Hawaii-Aleut Yaz Saati\x0fHong K" + - "ong Saati\x18Hong Kong Standart Saati\x13Hong Kong Yaz Saati\x0aHovd Saa" + - "ti\x13Hovd Standart Saati\x0eHovd Yaz Saati\x18Hindistan Standart Saati" + - "\x13Hint Okyanusu Saati\x0fHindiçin Saati\x14Orta Endonezya Saati\x15Doğ" + - "u Endonezya Saati\x15Batı Endonezya Saati\x0bİran Saati\x14İran Standart" + - " Saati\x0fİran Yaz Saati\x0eİrkutsk Saati\x17İrkutsk Standart Saati\x12İ" + - "rkutsk Yaz Saati\x0dİsrail Saati\x16İsrail Standart Saati\x11İsrail Yaz " + - "Saati\x0dJaponya Saati\x16Japonya Standart Saati\x11Japonya Yaz Saati" + - "\x1ePetropavlovsk-Kamçatski Saati'Petropavlovsk-Kamçatski Standart Saati" + - "\x22Petropavlovsk-Kamçatski Yaz Saati\x16Doğu Kazakistan Saati\x16Batı K" + - "azakistan Saati\x0aKore Saati\x13Kore Standart Saati\x0eKore Yaz Saati" + - "\x0cKosrae Saati\x11Krasnoyarsk Saati\x1aKrasnoyarsk Standart Saati\x15K" + - "rasnoyarsk Yaz Saati\x13Kırgızistan Saati\x0bLanka Saati\x13Line Adaları" + - " Saati\x0fLord Howe Saati\x18Lord Howe Standart Saati\x13Lord Howe Yaz S" + - "aati\x0bMakao Saati\x14Makao Standart Saati\x0fMakao Yaz Saati\x16Macqua" + - "rie Adası Saati\x0dMagadan Saati\x16Magadan Standart Saati\x11Magadan Ya" + - "z Saati\x0dMalezya Saati\x0fMaldivler Saati\x15Markiz Adaları Saati\x17M" + - "arshall Adaları Saati\x0fMauritius Saati\x18Mauritius Standart Saati\x13" + - "Mauritius Yaz Saati\x0cMawson Saati\x18Kuzeybatı Meksika Saati!Kuzeybatı" + - " Meksika Standart Saati\x1cKuzeybatı Meksika Yaz Saati\x1fMeksika Pasifi" + - "k Kıyısı Saati(Meksika Pasifik Kıyısı Standart Saati#Meksika Pasifik Kıy" + - "ısı Yaz Saati\x10Ulan Batur Saati\x19Ulan Batur Standart Saati\x14Ulan " + - "Batur Yaz Saati\x0dMoskova Saati\x16Moskova Standart Saati\x11Moskova Ya" + - "z Saati\x0dMyanmar Saati\x0bNauru Saati\x0bNepal Saati\x14Yeni Kaledonya" + - " Saati\x1dYeni Kaledonya Standart Saati\x18Yeni Kaledonya Yaz Saati\x12Y" + - "eni Zelanda Saati\x1bYeni Zelanda Standart Saati\x16Yeni Zelanda Yaz Saa" + - "ti\x12Newfoundland Saati\x1bNewfoundland Standart Saati\x16Newfoundland " + - "Yaz Saati\x0aNiue Saati\x14Norfolk Adası Saati\x19Fernando de Noronha Sa" + - "ati\x22Fernando de Noronha Standart Saati\x1dFernando de Noronha Yaz Saa" + - "ti\x1cKuzey Mariana Adaları Saati\x11Novosibirsk Saati\x1aNovosibirsk St" + - "andart Saati\x15Novosibirsk Yaz Saati\x0aOmsk Saati\x13Omsk Standart Saa" + - "ti\x0eOmsk Yaz Saati\x0ePakistan Saati\x17Pakistan Standart Saati\x12Pak" + - "istan Yaz Saati\x0bPalau Saati\x15Papua Yeni Gine Saati\x0eParaguay Saat" + - "i\x17Paraguay Standart Saati\x12Paraguay Yaz Saati\x0aPeru Saati\x13Peru" + - " Standart Saati\x0ePeru Yaz Saati\x10Filipinler Saati\x19Filipinler Stan" + - "dart Saati\x14Filipinler Yaz Saati\x16Phoenix Adaları Saati\x1eSaint Pie" + - "rre ve Miquelon Saati'Saint Pierre ve Miquelon Standart Saati\x22Saint P" + - "ierre ve Miquelon Yaz Saati\x0ePitcairn Saati\x0cPonape Saati\x0fPyongya" + - "ng Saati\x11Kızılorda Saati\x1aKızılorda Standart Saati\x15Kızılorda Yaz" + - " Saati\x0dReunion Saati\x0dRothera Saati\x0dSahalin Saati\x16Sahalin Sta" + - "ndart Saati\x11Sahalin Yaz Saati\x0cSamara Saati\x15Samara Standart Saat" + - "i\x10Samara Yaz Saati\x0bSamoa Saati\x14Samoa Standart Saati\x0fSamoa Ya" + - "z Saati\x10Seyşeller Saati\x17Singapur Standart Saati\x16Solomon Adaları" + - " Saati\x14Güney Georgia Saati\x0dSurinam Saati\x0bShowa Saati\x0cTahiti " + - "Saati\x0cTaipei Saati\x15Taipei Standart Saati\x10Taipei Yaz Saati\x10Ta" + - "cikistan Saati\x0dTokelau Saati\x0bTonga Saati\x14Tonga Standart Saati" + - "\x0fTonga Yaz Saati\x0bChuuk Saati\x13Türkmenistan Saati\x1cTürkmenistan" + - " Standart Saati\x17Türkmenistan Yaz Saati\x0cTuvalu Saati\x0dUruguay Saa" + - "ti\x16Uruguay Standart Saati\x11Uruguay Yaz Saati\x11Özbekistan Saati" + - "\x1aÖzbekistan Standart Saati\x15Özbekistan Yaz Saati\x0dVanuatu Saati" + - "\x16Vanuatu Standart Saati\x11Vanuatu Yaz Saati\x0fVenezuela Saati\x11Vl" + - "adivostok Saati\x1aVladivostok Standart Saati\x15Vladivostok Yaz Saati" + - "\x0fVolgograd Saati\x18Volgograd Standart Saati\x13Volgograd Yaz Saati" + - "\x0cVostok Saati\x11Wake Adası Saati\x16Wallis ve Futuna Saati\x0dYakuts" + - "k Saati\x16Yakutsk Standart Saati\x11Yakutsk Yaz Saati\x13Yekaterinburg " + - "Saati\x1cYekaterinburg Standart Saati\x17Yekaterinburg Yaz Saati" - -var bucket102 string = "" + // Size: 16624 bytes - "\x06Asamas\x05Aynas\x06Asinas\x05Akras\x05Akwas\x07Asimwas\x09Asiḍyas" + - "\x03IA1\x03IA2\x03IA3\x03IA4\x0eImir adamsan 1\x0eImir adamsan 2\x0eImir" + - " adamsan 3\x0eImir adamsan 4\x09Zdat azal\x0cḌeffir aza\x11Zdat Ɛisa (TA" + - "Ɣ)\x15Ḍeffir Ɛisa (TAƔ)\x03ZƐ\x05ḌƐ\x08Asseggas\x04Ayur\x07Imalass\x09A" + - "ssenaṭ\x04Assa\x06Asekka\x0dAss n Imalass\x15Zdat azal/Deffir azal\x07Ta" + - "sragt\x06Tusdat\x06Tusnat\x1dبۇددا يىلنامەسى\x06Month1\x06Month2\x06Mont" + - "h3\x06Month4\x06Month5\x06Month6\x06Month7\x06Month8\x06Month9\x07Month1" + - "0\x07Month11\x07Month12\x0cچاشقان\x08كالا\x0cيولۋاس\x0cتوشقان\x0eئەجدىھا" + - "\x0aيىلان\x06ئات\x06قوي\x0cمايمۇن\x08توخۇ\x06ئىت\x0aچوشقا\x11EEEE، MMMM " + - "d، U\x0aMMMM d، U\x09MMM d، U\x13EEEE، MMMM d، y G\x0cMMMM d، y G\x0bMMM" + - " d، y G\x09{1}، {0}\x0cيانۋار\x0cفېۋرال\x08مارت\x0cئاپرېل\x06ماي\x0aئىيۇ" + - "ن\x0aئىيۇل\x0eئاۋغۇست\x10سېنتەبىر\x10ئۆكتەبىر\x0eنويابىر\x0eدېكابىر\x04" + - "يە\x04دۈ\x04سە\x04چا\x04پە\x04جۈ\x04شە\x10يەكشەنبە\x0eدۈشەنبە\x10سەيشەن" + - "بە\x10چارشەنبە\x10پەيشەنبە\x08جۈمە\x0aشەنبە\x0c1-پەسىل\x0c2-پەسىل\x0c3-" + - "پەسىل\x0c4-پەسىل\x19بىرىنچى پەسىل\x1bئىككىنچى پەسىل\x19ئۈچىنچى پەسىل" + - "\x19تۆتىنچى پەسىل\x05چ.ب\x05چ.ك\x17چۈشتىن بۇرۇن\x17چۈشتىن كېيىن!مىلادىيە" + - "دىن بۇرۇن\x10مىلادىيە\x0fy d-MMMM، EEEE\x0ad-MMMM، y\x09d-MMM، y\x10مۇھ" + - "ەررەم\x0aسەپەر\x1aرەبىئۇلئەۋۋەل\x18رەبىئۇلئاخىر\x1eجەمادىيەلئەۋۋەل\x1cج" + - "ەمادىيەلئاخىر\x0aرەجەب\x0cشەئبان\x0eرامىزان\x0cشەۋۋال\x10زۇلقەئدە\x10زۇ" + - "لھەججە\x0eھىجرىيە\x12EEEE, MMMM d، y G(جۇڭخۇا مىنگودىن بۇرۇن\x0aمىنگو" + - "\x06يىل\x13ئۆتكەن يىل\x0bبۇ يىل\x11كېلەر يىل\x1b{0} يىلدىن كېيىن\x19{0} " + - "يىل ئىلگىرى\x06ئاي\x13ئۆتكەن ئاي\x0bبۇ ئاي\x11كېلەر ئاي\x1b{0} ئايدىن ك" + - "ېيىن\x19{0} ئاي ئىلگىرى\x0aھەپتە\x17ئۆتكەن ھەپتە\x0fبۇ ھەپتە\x15كېلەر ھ" + - "ەپتە\x1f{0} ھەپتىدىن كېيىن\x1d{0} ھەپتە ئىلگىرى\x06كۈن\x0eتۈنۈگۈن\x0aبۈ" + - "گۈن\x08ئەتە\x1b{0} كۈندىن كېيىن\x19{0} كۈن ئىلگىرى\x19ھەپتە كۈنلىرى\x1d" + - "ئۆتكەن يەكشەنبە\x15بۇ يەكشەنبە\x1bكېلەر يەكشەنبە\x1bئۆتكەن دۈشەنبە\x13ب" + - "ۇ دۈشەنبە\x19كېلەر دۈشەنبە\x1dئۆتكەن سەيشەنبە\x15بۇ سەيشەنبە\x1bكېلەر س" + - "ەيشەنبە\x1dئۆتكەن چارشەنبە\x15بۇ چارشەنبە\x1bكېلەر چارشەنبە\x1dئۆتكەن پ" + - "ەيشەنبە\x15بۇ پەيشەنبە\x1bكېلەر پەيشەنبە\x15ئۆتكەن جۈمە\x0dبۇ جۈمە\x13ك" + - "ېلەر جۈمە\x17ئۆتكەن شەنبە\x0fبۇ شەنبە\x15كېلەر شەنبە/چۈشتىن بۇرۇن/چۈشتى" + - "ن كېيىن\x0aسائەت\x1f{0} سائەتتىن كېيىن\x1d{0} سائەت ئىلگىرى\x0aمىنۇت" + - "\x1f{0} مىنۇتتىن كېيىن\x1d{0} مىنۇت ئىلگىرى\x0cسېكۇنت!{0} سېكۇنتتىن كېيى" + - "ن\x1f{0} سېكۇنت ئىلگىرى\x17ۋاقىت رايونى\x0e{0} ۋاقتى\x1b{0} يازلىق ۋاقت" + - "ى!{0} ئۆلچەملىك ۋاقتى(ئەنگلىيە يازلىق ۋاقتى(ئىرېلاند يازلىق ۋاقتى\x15ئا" + - "كرې ۋاقتى(ئاكرې ئۆلچەملىك ۋاقتى\x22ئاكرى يازلىق ۋاقتى!ئافغانىستان ۋاقتى" + - "(ئوتتۇرا ئافرىقا ۋاقتى&شەرقىي ئافرىقا ۋاقتى;جەنۇبىي ئافرىقا ئۆلچەملىك ۋا" + - "قتى&غەربىي ئافرىقا ۋاقتى9غەربىي ئافرىقا ئۆلچەملىك ۋاقتى3غەربىي ئافرىقا " + - "يازلىق ۋاقتى\x1bئالياسكا ۋاقتى.ئالياسكا ئۆلچەملىك ۋاقتى(ئالياسكا يازلىق" + - " ۋاقتى\x19ئالمۇتا ۋاقتى,ئالمۇتا ئۆلچەملىك ۋاقتى&ئالمۇتا يازلىق ۋاقتى\x19" + - "ئامازون ۋاقتى,ئامازون ئۆلچەملىك ۋاقتى&ئامازون يازلىق ۋاقتى$ئوتتۇرا قىسى" + - "م ۋاقتى7ئوتتۇرا قىسىم ئۆلچەملىك ۋاقتى1ئوتتۇرا قىسىم يازلىق ۋاقتى\x22شەر" + - "قىي قىسىم ۋاقتى5شەرقىي قىسىم ئۆلچەملىك ۋاقتى/شەرقىي قىسىم يازلىق ۋاقتى" + - "\x11تاغ ۋاقتى$تاغ ئۆلچەملىك ۋاقتى\x1eتاغ يازلىق ۋاقتى تىنچ ئوكيان ۋاقتى3" + - "تىنچ ئوكيان ئۆلچەملىك ۋاقتى-تىنچ ئوكيان يازلىق ۋاقتى\x19ئانادىر ۋاقتى,ئ" + - "انادىر ئۆلچەملىك ۋاقتى&ئانادىر يازلىق ۋاقتى\x17ئاقتاي ۋاقتى*ئاقتاي ئۆلچ" + - "ەملىك ۋاقتى$ئاقتاي يازلىق ۋاقتى\x19ئاقتۆبە ۋاقتى,ئاقتۆبە ئۆلچەملىك ۋاقت" + - "ى&ئاقتۆبە يازلىق ۋاقتى\x15ئەرەب ۋاقتى(ئەرەب ئۆلچەملىك ۋاقتى\x22ئەرەب يا" + - "زلىق ۋاقتى\x1fئارگېنتىنا ۋاقتى2ئارگېنتىنا ئۆلچەملىك ۋاقتى,ئارگېنتىنا يا" + - "زلىق ۋاقتى,غەربىي ئارگېنتىنا ۋاقتى?غەربىي ئارگېنتىنا ئۆلچەملىك ۋاقتى9غە" + - "ربىي ئارگېنتىنا يازلىق ۋاقتى\x1dئەرمېنىيە ۋاقتى0ئەرمېنىيە ئۆلچەملىك ۋاق" + - "تى*ئەرمېنىيە يازلىق ۋاقتى*ئاتلانتىك ئوكيان ۋاقتى=ئاتلانتىك ئوكيان ئۆلچە" + - "ملىك ۋاقتى7ئاتلانتىك ئوكيان يازلىق ۋاقتى;ئاۋسترالىيە ئوتتۇرا قىسىم ۋاقت" + - "ىNئاۋسترالىيە ئوتتۇرا قىسىم ئۆلچەملىك ۋاقتىHئاۋسترالىيە ئوتتۇرا قىسىم ي" + - "ازلىق ۋاقتىHئاۋسترالىيە ئوتتۇرا غەربىي قىسىم ۋاقتى]ئاۋستىرالىيە ئوتتۇرا" + - " غەربىي قىسىم ئۆلچەملىك ۋاقتىUئاۋسترالىيە ئوتتۇرا غەربىي قىسىم يازلىق ۋا" + - "قتى9ئاۋسترالىيە شەرقىي قىسىم ۋاقتىLئاۋسترالىيە شەرقىي قىسىم ئۆلچەملىك ۋ" + - "اقتىFئاۋسترالىيە شەرقىي قىسىم يازلىق ۋاقتى9ئاۋسترالىيە غەربىي قىسىم ۋاق" + - "تىLئاۋسترالىيە غەربىي قىسىم ئۆلچەملىك ۋاقتىFئاۋسترالىيە غەربىي قىسىم يا" + - "زلىق ۋاقتى!ئەزەربەيجان ۋاقتى4ئەزەربەيجان ئۆلچەملىك ۋاقتى.ئەزەربەيجان يا" + - "زلىق ۋاقتى\x15ئازور ۋاقتى(ئازور ئۆلچەملىك ۋاقتى\x22ئازور يازلىق ۋاقتى" + - "\x1bباڭلادىش ۋاقتى.باڭلادىش ئۆلچەملىك ۋاقتى(باڭلادىش يازلىق ۋاقتى\x15بۇت" + - "ان ۋاقتى\x1bبولىۋىيە ۋاقتى\x1fبىرازىلىيە ۋاقتى2بىرازىلىيە ئۆلچەملىك ۋاق" + - "تى,بىرازىلىيە يازلىق ۋاقتى.بىرۇنىي دارۇسسالام ۋاقتى\x22يېشىل تۇمشۇق ۋاق" + - "تى5يېشىل تۇمشۇق ئۆلچەملىك ۋاقتى/يېشىل تۇمشۇق يازلىق ۋاقتى\x15كاسېي ۋاقت" + - "ى,چاموررو ئۆلچەملىك ۋاقتى\x15چاتام ۋاقتى(چاتام ئۆلچەملىك ۋاقتى\x22چاتام" + - " يازلىق ۋاقتى\x13چىلى ۋاقتى&چىلى ئۆلچەملىك ۋاقتى چىلى يازلىق ۋاقتى\x15جۇ" + - "ڭگو ۋاقتى(جۇڭگو ئۆلچەملىك ۋاقتى\x22جۇڭگو يازلىق ۋاقتى\x1dچويبالسان ۋاقت" + - "ى0چويبالسان ئۆلچەملىك ۋاقتى*چويبالسان يازلىق ۋاقتى*روژدېستۋو ئارىلى ۋاق" + - "تى\x22كوكۇس ئارىلى ۋاقتى\x1dكولومبىيە ۋاقتى0كولومبىيە ئۆلچەملىك ۋاقتى*ك" + - "ولومبىيە يازلىق ۋاقتى$كۇك ئاراللىرى ۋاقتى7كۇك ئاراللىرى ئۆلچەملىك ۋاقتى" + - "<كۇك ئاراللىرى يېرىم يازلىق ۋاقتى\x13كۇبا ۋاقتى&كۇبا ئۆلچەملىك ۋاقتى كۇب" + - "ا يازلىق ۋاقتى\x15داۋىس ۋاقتى$دۇمونت-دۇرۋىل ۋاقتى\x22شەرقىي تىمور ۋاقتى" + - "$ئېستېر ئارىلى ۋاقتى;پاسكاليا ئارىلى ئۆلچەملىك ۋاقتى1ئېستېر ئارىلى يازلى" + - "ق ۋاقتى\x1bئېكۋادور ۋاقتى(ئوتتۇرا ياۋروپا ۋاقتى;ئوتتۇرا ياۋروپا ئۆلچەمل" + - "ىك ۋاقتى5ئوتتۇرا ياۋروپا يازلىق ۋاقتى&شەرقىي ياۋروپا ۋاقتى9شەرقىي ياۋرو" + - "پا ئۆلچەملىك ۋاقتى3شەرقىي ياۋروپا يازلىق ۋاقتى&غەربىي ياۋروپا ۋاقتى9غەر" + - "بىي ياۋروپا ئۆلچەملىك ۋاقتى3غەربىي ياۋروپا يازلىق ۋاقتى.فالكلاند ئارالل" + - "ىرى ۋاقتىAفالكلاند ئاراللىرى ئۆلچەملىك ۋاقتى;فالكلاند ئاراللىرى يازلىق " + - "ۋاقتى\x13فىجى ۋاقتى&فىجى ئۆلچەملىك ۋاقتى فىجى يازلىق ۋاقتىCفىرانسىيەگە " + - "قاراشلىق گىۋىيانا ۋاقتى]فىرانسىيەگە قاراشلىق جەنۇبىي ۋە ئانتاركتىكا ۋاق" + - "تى\x1dگالاپاگوس ۋاقتى\x1bگامبىيېر ۋاقتى\x1bگىرۇزىيە ۋاقتى.گىرۇزىيە ئۆلچ" + - "ەملىك ۋاقتى(گىرۇزىيە يازلىق ۋاقتى,گىلبېرت ئاراللىرى ۋاقتى\x1bگىرىنۋىچ ۋ" + - "اقتى*شەرقىي گىرېنلاند ۋاقتى=شەرقىي گىرېنلاند ئۆلچەملىك ۋاقتى7شەرقىي گىر" + - "ېنلاند يازلىق ۋاقتى*غەربىي گىرېنلاند ۋاقتى=غەربىي گىرېنلاند ئۆلچەملىك ۋ" + - "اقتى7غەربىي گىرېنلاند يازلىق ۋاقتى(گۇئام ئۆلچەملىك ۋاقتى&گۇلف ئۆلچەملىك" + - " ۋاقتى\x1bگىۋىيانا ۋاقتى$ھاۋاي-ئالېيۇت ۋاقتى7ھاۋاي-ئالېيۇت ئۆلچەملىك ۋاق" + - "تى1ھاۋاي-ئالېيۇت يازلىق ۋاقتى\x19شياڭگاڭ ۋاقتى,شياڭگاڭ ئۆلچەملىك ۋاقتى&" + - "شياڭگاڭ يازلىق ۋاقتى\x13خوۋد ۋاقتى&خوۋد ئۆلچەملىك ۋاقتى خوۋد يازلىق ۋاق" + - "تى0ھىندىستان ئۆلچەملىك ۋاقتى\x22ھىندى ئوكيان ۋاقتى\x1eھىندى چىنى ۋاقتى0" + - "ئوتتۇرا ھىندونېزىيە ۋاقتى.شەرقىي ھىندونېزىيە ۋاقتى.غەربىي ھىندونېزىيە ۋ" + - "اقتى\x15ئىران ۋاقتى(ئىران ئۆلچەملىك ۋاقتى\x22ئىران يازلىق ۋاقتى\x1bئىرك" + - "ۇتسك ۋاقتى.ئىركۇتسك ئۆلچەملىك ۋاقتى(ئىركۇتسك يازلىق ۋاقتى!ئىسرائىلىيە ۋ" + - "اقتى4ئىسرائىلىيە ئۆلچەملىك ۋاقتى.ئىسرائىلىيە يازلىق ۋاقتى\x1bياپونىيە ۋ" + - "اقتى.ياپونىيە ئۆلچەملىك ۋاقتى(ياپونىيە يازلىق ۋاقتى:پېتروپاۋلوۋسك-كامچا" + - "تكسكى ۋاقتىMپېتروپاۋلوۋسك-كامچاتكسكى ئۆلچەملىك ۋاقتىGپېتروپاۋلوۋسك-كامچ" + - "اتكسكى يازلىق ۋاقتى,شەرقىي قازاقىستان ۋاقتى,غەربىي قازاقىستان ۋاقتى\x17" + - "كورىيە ۋاقتى*كورىيە ئۆلچەملىك ۋاقتى$كورىيە يازلىق ۋاقتى\x19كوسرائې ۋاقت" + - "ى#كىراسنويارسك ۋاقتى6كىراسنويارسك ئۆلچەملىك ۋاقتى0كىراسنويارسك يازلىق ۋ" + - "اقتى!قىرغىزىستان ۋاقتى\x1eسىرى لانكا ۋاقتى&لاين ئاراللىرى ۋاقتى\x1aلورد" + - "-خاي ۋاقتى-لورد-خاي ئۆلچەملىك ۋاقتى'لورد-خاي يازلىق ۋاقتى\x17ئاۋمېن ۋاقت" + - "ى*ئاۋمېن ئۆلچەملىك ۋاقتى$ئاۋمېن يازلىق ۋاقتى0ماككۇۋارى ئاراللىرى ۋاقتى" + - "\x19ماگادان ۋاقتى,ماگادان ئۆلچەملىك ۋاقتى&ماگادان يازلىق ۋاقتى\x1dمالايش" + - "ىيا ۋاقتى\x19مالدىۋې ۋاقتى\x17ماركىز ۋاقتى*مارشال ئاراللىرى ۋاقتى\x1fما" + - "ۋرىتىئۇس ۋاقتى2ماۋرىتىئۇس ئۆلچەملىك ۋاقتى,ماۋرىتىئۇس يازلىق ۋاقتى\x17ما" + - "ۋسون ۋاقتى@مېكسىكا غەربىي شىمالىي قىسىم ۋاقتىSمېكسىكا غەربىي شىمالىي قى" + - "سىم ئۆلچەملىك ۋاقتىMمېكسىكا غەربىي شىمالىي قىسىم يازلىق ۋاقتى/مېكسىكا ت" + - "ىنچ ئوكيان ۋاقتىBمېكسىكا تىنچ ئوكيان ئۆلچەملىك ۋاقتى<مېكسىكا تىنچ ئوكيا" + - "ن يازلىق ۋاقتى\x1fئۇلانباتور ۋاقتى2ئۇلانباتور ئۆلچەملىك ۋاقتى,ئۇلانباتو" + - "ر يازلىق ۋاقتى\x17موسكۋا ۋاقتى*موسكۋا ئۆلچەملىك ۋاقتى$موسكۋا يازلىق ۋاق" + - "تى\x15بىرما ۋاقتى\x15ناۋرۇ ۋاقتى\x15نېپال ۋاقتى(يېڭى كالېدونىيە ۋاقتى;ي" + - "ېڭى كالېدونىيە ئۆلچەملىك ۋاقتى5يېڭى كالېدونىيە يازلىق ۋاقتى&يېڭى زېلاند" + - "ىيە ۋاقتى9يېڭى زېلاندىيە ئۆلچەملىك ۋاقتى3يېڭى زېلاندىيە يازلىق ۋاقتى#نى" + - "ۋفوئۇنلاند ۋاقتى6نىۋفوئۇنلاند ئۆلچەملىك ۋاقتى0نىۋفوئۇنلاند يازلىق ۋاقتى" + - "\x17نىيۇئې ۋاقتى,نورفولك ئاراللىرى ۋاقتى*فېرناندو-نورونخا ۋاقتى=فېرناندو" + - "-نورونخا ئۆلچەملىك ۋاقتى7فېرناندو-نورونخا يازلىق ۋاقتى=شىمالىي مارىيانا " + - "ئاراللىرى ۋاقتى!نوۋوسىبىرسك ۋاقتى4نوۋوسىبىرسك ئۆلچەملىك ۋاقتى.نوۋوسىبىر" + - "سك يازلىق ۋاقتى\x15ئومسك ۋاقتى(ئومسك ئۆلچەملىك ۋاقتى\x22ئومسك يازلىق ۋا" + - "قتى\x1bپاكىستان ۋاقتى.پاكىستان ئۆلچەملىك ۋاقتى(پاكىستان يازلىق ۋاقتى" + - "\x15پالاۋ ۋاقتى5پاپۇئا يېڭى گىۋىنېيەسى ۋاقتى\x1bپاراگۋاي ۋاقتى.پاراگۋاي " + - "ئۆلچەملىك ۋاقتى(پاراگۋاي يازلىق ۋاقتى\x13پېرۇ ۋاقتى&پېرۇ ئۆلچەملىك ۋاقت" + - "ى پېرۇ يازلىق ۋاقتى\x1bفىلىپپىن ۋاقتى.فىلىپپىن ئۆلچەملىك ۋاقتى(فىلىپپىن" + - " يازلىق ۋاقتى*فېنىكس ئاراللىرى ۋاقتى6ساينىت پىئېر ۋە مىكېلون ۋاقتىIساينى" + - "ت پىئېر ۋە مىكېلون ئۆلچەملىك ۋاقتىCساينىت پىئېر ۋە مىكېلون يازلىق ۋاقتى" + - "\x19پىتكاير ۋاقتى\x17پونپېي ۋاقتى\x1fقىزىلئوردا ۋاقتى2قىزىلئوردا ئۆلچەمل" + - "ىك ۋاقتى,قىزىلئوردا يازلىق ۋاقتى\x1dرېئونىيون ۋاقتى\x17روتېرا ۋاقتى\x19" + - "ساخارىن ۋاقتى,ساخارىن ئۆلچەملىك ۋاقتى&ساخارىن يازلىق ۋاقتى\x17سامارا ۋا" + - "قتى*سامارا ئۆلچەملىك ۋاقتى$سامارا يازلىق ۋاقتى\x17ساموئا ۋاقتى*ساموئا ئ" + - "ۆلچەملىك ۋاقتى*سەمەرقەنت يازلىق ۋاقتى\x17سېيشېل ۋاقتى\x1bسىنگاپور ۋاقتى" + - ",سولومون ئاراللىرى ۋاقتى(جەنۇبىي جورجىيە ۋاقتى\x19سۇرىنام ۋاقتى\x13شوۋا " + - "ۋاقتى\x15تايتى ۋاقتى\x17تەيبېي ۋاقتى*تەيبېي ئۆلچەملىك ۋاقتى$تەيبېي يازل" + - "ىق ۋاقتى\x1fتاجىكىستان ۋاقتى\x19توكېلاۋ ۋاقتى\x15تونگا ۋاقتى(تونگا ئۆلچ" + - "ەملىك ۋاقتى\x22تونگا يازلىق ۋاقتى\x11چۇك ۋاقتى#تۈركمەنىستان ۋاقتى6تۈركم" + - "ەنىستان ئۆلچەملىك ۋاقتى0تۈركمەنىستان يازلىق ۋاقتى\x17تۇۋالۇ ۋاقتى\x1bئۇ" + - "رۇگۋاي ۋاقتى.ئۇرۇگۋاي ئۆلچەملىك ۋاقتى(ئۇرۇگۋاي يازلىق ۋاقتى!ئۆزبېكىستان" + - " ۋاقتى4ئۆزبېكىستان ئۆلچەملىك ۋاقتى.ئۆزبېكىستان يازلىق ۋاقتى\x1bۋانۇئاتۇ " + - "ۋاقتى.ۋانۇئاتۇ ئۆلچەملىك ۋاقتى(ۋانۇئاتۇ يازلىق ۋاقتى\x1fۋېنېزۇئېلا ۋاقت" + - "ى#ۋىلادىۋوستوك ۋاقتى6ۋىلادىۋوستوك ئۆلچەملىك ۋاقتى0ۋىلادىۋوستوك يازلىق ۋ" + - "اقتى\x1dۋولگاگراد ۋاقتى0ۋولگاگراد ئۆلچەملىك ۋاقتى*ۋولگاگراد يازلىق ۋاقت" + - "ى\x17ۋوستوك ۋاقتى ۋېيك ئارىلى ۋاقتى)ۋاللىس ۋە فۇتۇنا ۋاقتى\x19ياكۇتسك ۋ" + - "اقتى,ياكۇتسك ئۆلچەملىك ۋاقتى&ياكۇتسك يازلىق ۋاقتى%يېكاتېرىنبۇرگ ۋاقتى8ي" + - "ېكاتېرىنبۇرگ ئۆلچەملىك ۋاقتى2يېكاتېرىنبۇرگ يازلىق ۋاقتى" - -var bucket103 string = "" + // Size: 8263 bytes - "\x06тот\x07баб.\x07хат.\x07кіх.\x07тоб.\x07амш.\x0bбарам.\x09барм.\x07ба" + - "ш.\x09баун.\x05аб.\x07мис.\x07нас.\x08бабе\x0aхатур\x0aкіхак\x08тобе" + - "\x0aамшир\x10барамхат\x0eбармуда\x0cбашнас\x0aбауна\x08абіб\x0aмисра\x08" + - "насі\x06баб\x06хат\x06кіх\x06тоб\x06амш\x0aбарам\x08барм\x06баш\x08баун" + - "\x04аб\x06мис\x06нас\x12мескерема\x0eтекемта\x0cхедара\x0eтахсаса\x08тер" + - "а\x0eєкатіта\x10мегабіта\x0cміязія\x0eгенбота\x08сене\x0aхамле\x0cнехас" + - "е\x10пагумена\x0cтекемт\x16EEEE, d MMMM y 'р'. G\x10d MMMM y 'р'. G\x0c" + - "{1} 'о' {0}\x07січ.\x07лют.\x07бер.\x09квіт.\x09трав.\x09черв.\x07лип." + - "\x09серп.\x07вер.\x09жовт.\x09лист.\x09груд.\x0aсічня\x0cлютого\x0eберез" + - "ня\x0cквітня\x0cтравня\x0cчервня\x0aлипня\x0cсерпня\x0eвересня\x0cжовтн" + - "я\x12листопада\x0cгрудня\x06січ\x06лют\x06бер\x06кві\x06тра\x06чер\x06л" + - "ип\x06сер\x06вер\x06жов\x06лис\x06гру\x0cсічень\x0aлютий\x10березень" + - "\x0eквітень\x0eтравень\x0eчервень\x0cлипень\x0eсерпень\x10вересень\x0eжо" + - "втень\x10листопад\x0eгрудень\x0cнеділя\x12понеділок\x10вівторок\x0cсере" + - "да\x0cчетвер\x10пʼятниця\x0cсубота\x10опівночі\x04дп\x12пополудні\x04пп" + - "\x0aранку\x0cвечора\x08ночі\x0cпівніч\x10полудень\x0aранок\x0aвечір\x06н" + - "іч\x16до нашої ери\x16до нової ери\x11нашої ери\x11нової ери\x0cдо н. е" + - ".\x07н. е.\x0bдо н.е.\x06н.е.\x14EEEE, d MMMM y 'р'.\x0ed MMMM y 'р'." + - "\x0dd MMM y 'р'.\x0aтішри\x12марчешван\x0eчисльов\x0aтебет\x0aшеват\x0aа" + - "дар I\x08адар\x0bадар II\x0aнісан\x06іар\x0aсиван\x0cтаммуз\x08елул\x0c" + - "хешван\x0cкіслев\x0aтевет\x08шват\x06іяр\x04ав\x09чайт.\x09вайс.\x09джа" + - "й.\x09асад.\x09шрав.\x09бхад.\x07асв.\x07кар.\x07агр.\x09паус.\x07маг." + - "\x09фаль.\x07мух.\x07саф.\x0aрабі I\x0bрабі II\x0bджум. I\x0cджум. II" + - "\x09радж.\x09шааб.\x07рам.\x07дав.\x0dзу-ль-к.\x0dзу-ль-х.\x10мухаррам" + - "\x0aсафар\x10джумада I\x11джумада II\x0cраджаб\x0cшаабан\x0eрамадан\x0cд" + - "аввал\x14зу-ль-каада\x14зу-ль-хіджа\x06мух\x06саф\x0aджум I\x0bджум II" + - "\x08радж\x08шааб\x06рам\x06дав\x0cзу-ль-к\x0cзу-ль-х\x16Тайка (645–650)" + - "\x18Хакуті (650–671)\x18Хакухо (672–686)\x16Сютьо (686–701)\x16Тайхо (70" + - "1–704)\x16Кейун (704–708)\x14Вадо (708–715)\x16Рейкі (715–717)\x14Йоро (" + - "717–724)\x18Дзінгі (724–729)\x18Темпьо (729–749)#Темпьо-кампо (749–749)#" + - "Темпьо-сьохо (749–757)#Темпьо-ходзі (757–765)%Темпьо-дзінго (765–767)#Д" + - "зінго кейун (767–770)\x14Хокі (770–780)\x17Тен’о (781–782)\x18Енряку (7" + - "82–806)\x16Дайдо (806–810)\x16Конін (810–824)\x18Тентьо (824–834)\x16Сьо" + - "ва (834–848)\x18Кадзьо (848–851)\x18Ніндзю (851–854)\x16Сайко (854–857)" + - "\x18Теннан (857–859)\x1aДзьоган (859–877)\x18Генкей (877–885)\x16Нінна (" + - "885–889)\x18Кампьо (889–898)\x18Сьотай (898–901)\x14Енгі (901–923)\x16Ен" + - "тьо (923–931)\x18Сьохей (931–938)\x18Тенгьо (938–947)\x1aТенряку (947–9" + - "57)\x1aТентоку (957–961)\x12Ова (961–964)\x14Кохо (964–968)\x14Анна (968" + - "–970)\x1aТенроку (970–973)\x19Тен’ен (973–976)\x1aДзьоген (976–978)" + - "\x18Тенген (978–983)\x16Ейкан (983–985)\x16Канна (985–987)\x14Ейен (987–" + - "989)\x14Ейсо (989–990)\x1aСьоряку (990–995)\x1aТьотоку (995–999)\x17Тьох" + - "о (999–1004)\x18Канко (1004–1012)\x18Тьова (1012–1017)\x1aКаннін (1017–" + - "1021)\x18Дзіан (1021–1024)\x1aМандзю (1024–1028)\x1aТьоген (1028–1037)" + - "\x1cТьоряку (1037–1040)\x18Тьокю (1040–1044)\x1cКантоку (1044–1046)\x18Е" + - "йсьо (1046–1053)\x18Тенгі (1053–1058)\x18Кохей (1058–1065)\x1cДзіряку (" + - "1065–1069)\x16Енкю (1069–1074)\x18Сьохо (1074–1077)\x1cСьоряку (1077–108" + - "1)\x16Ейхо (1081–1084)\x18Отоку (1084–1087)\x1aКандзі (1087–1094)\x16Ках" + - "о (1094–1096)\x18Ейсьо (1096–1097)\x1cСьотоку (1097–1099)\x16Кова (1099" + - "–1104)\x1aТьодзі (1104–1106)\x1aКадзьо (1106–1108)\x1aТеннін (1108–111" + - "0)\x1bТен’ей (1110–1113)\x16Ейкю (1113–1118)\x1bГен’ей (1118–1120)\x16Хо" + - "ан (1120–1124)\x1aТендзі (1124–1126)\x1aДайдзі (1126–1131)\x1aТенсьо (1" + - "131–1132)\x1aТьосьо (1132–1135)\x16Хоен (1135–1141)\x18Ейдзі (1141–1142)" + - "\x18Кодзі (1142–1144)\x18Теньо (1144–1145)\x16Кюан (1145–1151)\x1aНімпей" + - " (1151–1154)\x18Кюдзю (1154–1156)\x18Хоген (1156–1159)\x1aХейдзі (1159–1" + - "160)\x1aЕйряку (1160–1161)\x14Охо (1161–1163)\x1aТьокан (1163–1165)\x18Е" + - "йман (1165–1166)\x1bНін’ан (1166–1169)\x14Као (1169–1171)\x18Сьоан (117" + - "1–1175)\x18Анген (1175–1177)\x1aДзісьо (1177–1181)\x16Йова (1181–1182)" + - "\x18Дзюей (1182–1184)\x1cГенряку (1184–1185)\x1aБундзі (1185–1190)\x18Ке" + - "нкю (1190–1199)\x1aСьодзі (1199–1201)\x1aКеннін (1201–1204)\x18Генкю (1" + - "204–1206)\x1bКен’ей (1206–1207)\x1aСьоген (1207–1211)\x1cКенряку (1211–1" + - "213)\x18Кенпо (1213–1219)\x1aДзьокю (1219–1222)\x18Дзьоо (1222–1224)\x1a" + - "Геннін (1224–1225)\x1aКароку (1225–1227)\x18Антей (1227–1229)\x18Канкі " + - "(1229–1232)\x18Дзюей (1232–1233)\x1cТемпуку (1233–1234)\x1cБунряку (1234" + - "–1235)\x18Катей (1235–1238)\x1cРякунін (1238–1239)\x17Ен’о (1239–1240)" + - "\x1aНіндзі (1240–1243)\x1aКанген (1243–1247)\x1aХейдзі (1247–1249)\x1aКе" + - "нтьо (1249–1256)\x18Коген (1256–1257)\x18Сьока (1257–1259)\x1aСьоген (1" + - "259–1260)\x19Бун’о (1260–1261)\x18Котьо (1261–1264)\x1bБун’ей (1264–1275" + - ")\x1aКендзі (1275–1278)\x16Коан (1278–1288)\x16Сьоо (1288–1293)\x18Ейнін" + - " (1293–1299)\x18Сьоан (1299–1302)\x1aКенген (1302–1303)\x18Каген (1303–1" + - "306)\x1cТокудзі (1306–1308)\x18Енкей (1308–1311)\x16Отьо (1311–1312)\x18" + - "Сьова (1312–1317)\x18Бумпо (1317–1319)\x19Ген’о (1319–1321)\x1aГенкьо (" + - "1321–1324)\x18Сьотю (1324–1326)\x1aКарекі (1326–1329)\x1cГентоку (1329–1" + - "331)\x18Генко (1331–1334)\x18Кемму (1334–1336)\x18Ейген (1336–1340)\x1aК" + - "ококу (1340–1346)\x1aСьохей (1346–1370)\x1cКентоку (1370–1372)\x18Бунтю" + - " (1372–1375)\x1aТендзю (1375–1379)\x1aКоряку (1379–1381)\x16Кова (1381–1" + - "384)\x18Гентю (1384–1392)\x1cМейтоку (1384–1387)\x18Какей (1387–1389)" + - "\x14Коо (1389–1390)\x1cМейтоку (1390–1394)\x14Оей (1394–1428)\x1aСьотьо " + - "(1428–1429)\x18Ейкьо (1429–1441)\x1aКакіцу (1441–1444)\x1aБуннан (1444–1" + - "449)\x1aХотоку (1449–1452)\x1cКьотоку (1452–1455)\x18Косьо (1455–1457)" + - "\x1cТьороку (1457–1460)\x1aКансьо (1460–1466)\x1aБунсьо (1466–1467)\x16О" + - "нін (1467–1469)\x1aБуммей (1469–1487)\x1aТьокьо (1487–1489)\x1aЕнтоку (" + - "1489–1492)\x16Мейо (1492–1501)\x18Бункі (1501–1504)\x18Ейсьо (1504–1521)" + - "\x18Тайей (1521–1528)\x1cКьороку (1528–1532)\x1aТеммон (1532–1555)\x18Ко" + - "дзі (1555–1558)\x1aЕйроку (1558–1570)\x18Генкі (1570–1573)\x1aТенсьо (1" + - "573–1592)\x1cБунроку (1592–1596)\x1aКейтьо (1596–1615)\x18Генна (1615–16" + - "24)\x1bКан’ей (1624–1644)\x18Сьохо (1644–1648)\x18Кейан (1648–1652)\x16С" + - "ьоо (1652–1655)\x1cМейряку (1655–1658)\x1aМандзі (1658–1661)\x1aКамбун " + - "(1661–1673)\x16Емпо (1673–1681)\x18Тенва (1681–1684)\x1cДзьокьо (1684–16" + - "88)\x1cГенроку (1688–1704)\x16Хоей (1704–1711)\x1cСьотоку (1711–1716)" + - "\x18Кьохо (1716–1736)\x1aГембун (1736–1741)\x18Канпо (1741–1744)\x18Енкь" + - "о (1744–1748)\x1bКан’ен (1748–1751)\x1aХоряку (1751–1764)\x18Мейва (176" + - "4–1772)\x19Ан’ей (1772–1781)\x1aТеммей (1781–1789)\x1aКансей (1789–1801)" + - "\x18Кьова (1801–1804)\x18Бунка (1804–1818)\x1aБунсей (1818–1830)\x18Тенп" + - "о (1830–1844)\x16Кока (1844–1848)\x16Каей (1848–1854)\x18Ансей (1854–18" + - "60)\x1bМан’ен (1860–1861)\x18Бункю (1861–1864)\x1aГендзі (1864–1865)\x16" + - "Кейо (1865–1868)\x0cМейдзі\x0cТайсьо\x0aСьова\x0cХейсей" - -var bucket104 string = "" + // Size: 23490 bytes - "\x07фар.\x07орд.\x07хор.\x06тір\x07мор.\x07шах.\x07мех.\x08абан\x08азер" + - "\x06дей\x07бах.\x07есф.\x12фарвардін\x14ордібехешт\x0cхордад\x0cмордад" + - "\x10шахрівер\x08мехр\x0cбахман\x0cесфанд\x06фар\x06орд\x06хор\x06мор\x06" + - "шах\x06мех\x06бах\x06есф\x06рік\x0aторік\x13цього року\x1dнаступного ро" + - "ку\x15через {0} рік\x17через {0} роки\x19через {0} років\x17через {0} р" + - "оку\x13{0} рік тому\x15{0} роки тому\x17{0} років тому\x15{0} року тому" + - "\x03р.\x12через {0} р.\x10{0} р. тому\x0cза {0} р.!минулого кварталу\x1b" + - "цього кварталу%наступного кварталу\x1b{0} квартал тому\x1d{0} квартали " + - "тому\x1f{0} кварталів тому\x1d{0} кварталу тому\x16минулого кв.\x10цьог" + - "о кв.\x1aнаступного кв.\x12{0} кв. тому\x0cмісяць\x1dминулого місяця" + - "\x17цього місяця!наступного місяця\x1bчерез {0} місяць\x1bчерез {0} міся" + - "ці\x1dчерез {0} місяців\x1bчерез {0} місяця\x19{0} місяць тому\x19{0} м" + - "ісяці тому\x1b{0} місяців тому\x19{0} місяця тому\x07міс.\x16через {0} " + - "міс.\x14{0} міс. тому\x10за {0} міс.\x0eтиждень\x1bминулого тижня\x15ць" + - "ого тижня\x1fнаступного тижня\x1dчерез {0} тиждень\x19через {0} тижні" + - "\x1bчерез {0} тижнів\x19через {0} тижня\x1b{0} тиждень тому\x17{0} тижні" + - " тому\x19{0} тижнів тому\x17{0} тижня тому\x15тиждень з {0}\x07тиж.\x16ч" + - "ерез {0} тиж.\x14{0} тиж. тому\x10за {0} тиж.\x12позавчора\x0aучора\x10" + - "сьогодні\x0cзавтра\x16післязавтра\x15{0} день тому\x13{0} дні тому\x15{" + - "0} днів тому\x13{0} дня тому\x12{0} дн. тому\x10{0} д. тому\x0a-{0} дн." + - "\x13день тижня\x1bминулої неділі\x15цієї неділі\x1fнаступної неділі\x1bч" + - "ерез {0} неділю\x1bчерез {0} неділі\x1bчерез {0} неділь\x19{0} неділю т" + - "ому\x19{0} неділі тому\x19{0} неділь тому\x13минулої нд\x0dцієї нд\x17н" + - "аступної нд\x0cмин. нд\x0eнаст. нд#минулого понеділка\x1dцього понеділк" + - "а'наступного понеділка!через {0} понеділок!через {0} понеділки#через {0" + - "} понеділків!через {0} понеділка\x1f{0} понеділок тому\x1f{0} понеділки " + - "тому!{0} понеділків тому\x1f{0} понеділка тому\x15минулого пн\x0fцього " + - "пн\x19наступного пн\x0cмин. пн\x0eнаст. пн!минулого вівторка\x1bцього в" + - "івторка%наступного вівторка\x1fчерез {0} вівторок\x1fчерез {0} вівторки" + - "!через {0} вівторків\x1fчерез {0} вівторка\x1d{0} вівторок тому\x1d{0} в" + - "івторки тому\x1f{0} вівторків тому\x1d{0} вівторка тому\x15минулого вт" + - "\x0fцього вт\x19наступного вт\x0cмин. вт\x0eнаст. вт\x1bминулої середи" + - "\x15цієї середи\x1fнаступної середи\x1bчерез {0} середу\x1bчерез {0} сер" + - "еди\x19через {0} серед\x19{0} середу тому\x19{0} середи тому\x17{0} сер" + - "ед тому\x13минулої ср\x0dцієї ср\x17наступної ср\x0cмин. ср\x0eнаст. ср" + - "!минулого четверга\x1bцього четверга%наступного четверга\x1bчерез {0} че" + - "твер\x1fчерез {0} четверги!через {0} четвергів\x1fчерез {0} четверга" + - "\x19{0} четвер тому\x1d{0} четверги тому\x1f{0} четвергів тому\x1d{0} че" + - "тверга тому\x15минулого чт\x0fцього чт\x19наступного чт\x0cмин. чт\x0eн" + - "аст. чт\x1fминулої пʼятниці\x19цієї пʼятниці#наступної пʼятниці\x1fчере" + - "з {0} пʼятницю\x1fчерез {0} пʼятниці\x1fчерез {0} пʼятниць\x1d{0} пʼятн" + - "ицю тому\x1d{0} пʼятниці тому\x1d{0} пʼятниць тому\x13минулої пт\x0dціє" + - "ї пт\x17наступної пт\x0cмин. пт\x0eнаст. пт\x1bминулої суботи\x15цієї с" + - "уботи\x1fнаступної суботи\x1bчерез {0} суботу\x1bчерез {0} суботи\x19че" + - "рез {0} субот\x19{0} суботу тому\x19{0} суботи тому\x17{0} субот тому" + - "\x13минулої сб\x0dцієї сб\x17наступної сб\x0cмин. сб\x0eнаст. сб\x17част" + - "ина доби\x15цієї години\x1bчерез {0} годину\x1bчерез {0} години\x19чере" + - "з {0} годин\x19{0} годину тому\x19{0} години тому\x17{0} годин тому\x13" + - "{0} год тому\x0fза {0} год\x0eхвилина\x17цієї хвилини\x1dчерез {0} хвили" + - "ну\x1dчерез {0} хвилини\x1bчерез {0} хвилин\x1b{0} хвилину тому\x1b{0} " + - "хвилини тому\x19{0} хвилин тому\x13через {0} хв\x11{0} хв тому\x0dза {0" + - "} хв\x0aзараз\x1b{0} секунду тому\x1b{0} секунди тому\x19{0} секунд тому" + - "\x11через {0} с\x0f{0} с тому\x0bза {0} с\x17часовий пояс\x0bчас: {0}" + - "\x19час: {0}, літній#час: {0}, стандартний6Всесвітній координований час?" + - "за літнім часом у Великій Британії0за літнім часом в Ірландії\x10час: А" + - "крі(час: Акрі, стандартний\x1eчас: Акрі, літній)за часом в Афганістані<" + - "за центральноафриканським часом4за східноафриканським часом8за південно" + - "африканським часом6за західноафриканським часомMза західноафриканським " + - "стандартним часомCза західноафриканським літнім часом!за часом на Алясц" + - "і8за стандартним часом на Алясці.за літнім часом на Алясці%за часом на " + - "Амазонці<за стандартним часом на Амазонці2за літнім часом на АмазонціQз" + - "а північноамериканським центральним часомhза північноамериканським цент" + - "ральним стандартним часом^за північноамериканським центральним літнім ч" + - "асомIза північноамериканським східним часом`за північноамериканським сх" + - "ідним стандартним часомVза північноамериканським східним літнім часомKз" + - "а північноамериканським гірським часомbза північноамериканським гірськи" + - "м стандартним часомXза північноамериканським гірським літнім часомWза п" + - "івнічноамериканським тихоокеанським часомnза північноамериканським тихо" + - "океанським стандартним часомdза північноамериканським тихоокеанським лі" + - "тнім часом\x14час: Анадир,час: Анадир, стандартний\x22час: Анадир, літн" + - "ій\x1bза часом в Апіа2за стандартним часом в Апіа(за літнім часом в Апі" + - "а\x22за арабським часом9за арабським стандартним часом/за арабським літ" + - "нім часом*за аргентинським часомAза стандартним аргентинським часом7за " + - "літнім аргентинським часом8за західноаргентинським часомOза стандартним" + - " західноаргентинським часомJза літнім за західноаргентинським часом&за в" + - "ірменським часом=за вірменським стандартним часом3за вірменським літнім" + - " часом&за атлантичним часом=за атлантичним стандартним часом3за атлантич" + - "ним літнім часом@за центральноавстралійським часомWза стандартним центр" + - "альноавстралійським часомMза літнім центральноавстралійським часомQза ц" + - "ентральнозахідним австралійським часомhза стандартним центральнозахідни" + - "м австралійським часом^за літнім центральнозахідним австралійським часо" + - "м8за східноавстралійським часомOза стандартним східноавстралійським час" + - "омEза літнім східноавстралійським часом:за західноавстралійським часомQ" + - "за стандартним західноавстралійським часомGза літнім західноавстралійсь" + - "ким часом+за часом в АзербайджаніBза стандартним часом в Азербайджані8з" + - "а літнім часом в Азербайджані8за часом на Азорських ОстровахOза стандар" + - "тним часом на Азорських ОстровахEза літнім часом на Азорських Островах%" + - "за часом у Бангладеш<за стандартним часом у Бангладеш2за літнім часом у" + - " Бангладеш\x1fза часом у Бутані(за болівійським часом(за бразильським ча" + - "сом?за стандартним бразильським часом5за літнім бразильським часом\x1fз" + - "а часом у Брунеї9за часом на островах Кабо-ВердеPза стандартним часом н" + - "а островах Кабо-ВердеFза літнім часом на островах Кабо-ВердеOза часом н" + - "а Північних Маріанських островах4за часом на архіпелазі ЧатемKза станда" + - "ртним часом на архіпелазі ЧатемAза літнім часом на архіпелазі Чатем$за " + - "чилійським часом;за стандартним чилійським часом1за літнім чилійським ч" + - "асом$за китайським часом;за китайським стандартним часом1за китайським " + - "літнім часом%за часом у Чойбалсан<за стандартним часом у Чойбалсан2за л" + - "ітнім часом у Чойбалсан0за часом на острові Різдва8за часом на Кокосови" + - "х Островах*за колумбійським часомAза стандартним колумбійським часом7за" + - " літнім колумбійським часом.за часом на Островах КукаEза стандартним час" + - "ом на Островах Кука;за літнім часом на Островах Кука\x1dза часом на Куб" + - "і4за стандартним часом на Кубі*за літнім часом на Кубі\x1dза часом у Де" + - "віс.за часом у Дюмон дʼЮрвіль0за часом у Східному Тиморі.за часом на ос" + - "трові ПасхиEза стандартним часом на острові Пасхи;за літнім часом на ос" + - "трові Пасхи#за часом в Еквадорі<за центральноєвропейським часомSза цент" + - "ральноєвропейським стандартним часомIза центральноєвропейським літнім ч" + - "асом4за східноєвропейським часомKза східноєвропейським стандартним часо" + - "мAза східноєвропейським літнім часомCза далекосхідним європейським часо" + - "м6за західноєвропейським часомMза західноєвропейським стандартним часом" + - "Cза західноєвропейським літнім часом@за часом на Фолклендських ОстровахW" + - "за стандартним часом на Фолклендських ОстровахMза літнім часом на Фолкл" + - "ендських Островах\x1fза часом на Фіджі6за стандартним часом на Фіджі,за" + - " літнім часом на Фіджі3за часом Французької Гвіаниoза часом на Французьк" + - "их Південних і Антарктичних територіях@за часом на Галапагоських остров" + - "ах1за часом на острові Гамб’є\x1fза часом у Грузії6за стандартним часом" + - " у Грузії,за літнім часом у Грузії6за часом на островах Гілберта\x17за Г" + - "ринвічем6за східним часом у ГренландіїMза стандартним східним часом у Г" + - "ренландіїCза літнім східним часом у Гренландії8за західним часом у Грен" + - "ландіїOза стандартним західним часом у ГренландіїEза літнім західним ча" + - "сом у Гренландії,за часом на острові Гуам-за часом Перської затоки\x1dз" + - "а часом у Гаяні7за гавайсько-алеутським часомNза стандартним гавайсько-" + - "алеутським часомDза літнім гавайсько-алеутським часом#за часом у Гонкон" + - "зі:за стандартним часом у Гонконзі0за літнім часом у Гонконзі\x1dза час" + - "ом у Ховді4за стандартним часом у Ховді*за літнім часом у Ховді;за інді" + - "йським стандартним часом6за часом в Індійському Океані%за часом в Індок" + - "итаї@за центральноіндонезійським часом8за східноіндонезійським часом:за" + - " західноіндонезійським часом\x22за іранським часом9за іранським стандарт" + - "ним часом/за іранським літнім часом$за іркутським часом;за іркутським с" + - "тандартним часом1за іркутським літнім часом(за ізраїльським часом?за із" + - "раїльським стандартним часом5за ізраїльським літнім часом\x22за японськ" + - "им часом9за японським стандартним часом/за японським літнім часом&за ка" + - "мчатським часом=за камчатським стандартним часом3за камчатським літнім " + - "часом6за східним часом у Казахстані8за західним часом у Казахстані$за к" + - "орейським часом;за корейським стандартним часом1за корейським літнім ча" + - "сом0за часом на острові Косрае*за красноярським часомAза красноярським " + - "стандартним часом7за красноярським літнім часом)за часом у Киргизстані" + - "\x12час: Ланка,за часом на острові Лайн3за часом на острові Лорд-ХауJза " + - "стандартним часом на острові Лорд-Хау@за літнім часом на острові Лорд-Х" + - "ау4за часом на острові Маккуорі(за магаданським часом?за магаданським с" + - "тандартним часом5за магаданським літнім часом#за часом у Малайзії'за ча" + - "сом на Мальдівах:за часом на Маркізьких островах:за часом на Маршалових" + - " Островах4за часом на острові МаврикійKза стандартним часом на острові М" + - "аврикійAза літнім часом на острові Маврикій0за часом на станції МоусонB" + - "за північнозахідним часом у МексиціYза стандартним північнозахідним час" + - "ом у МексиціOза літнім північнозахідним часом у Мексиці>за тихоокеанськ" + - "им часом у МексиціUза стандартним тихоокеанським часом у МексиціKза літ" + - "нім тихоокеанським часом у Мексиці(за часом в Улан-Баторі?за стандартни" + - "м часом в Улан-Баторі5за літнім часом в Улан-Баторі&за московським часо" + - "м=за московським стандартним часом3за московським літнім часом\x1fза ча" + - "сом у Мʼянмі.за часом на острові Науру\x1fза часом у НепаліCза часом на" + - " островах Нової КаледоніїZза стандартним часом на островах Нової Каледон" + - "іїPза літнім часом на островах Нової Каледонії.за часом у Новій Зеланді" + - "їEза стандартним часом у Новій Зеландії;за літнім часом у Новій Зеланді" + - "ї<за часом на острові НьюфаундлендSза стандартним часом на острові Ньюф" + - "аундленд8за літнім часом у Ньюфаундленд,за часом на острові Ніуе2за час" + - "ом на острові НорфолкNза часом на архіпелазі Фернанду-ді-Нороньяeза ста" + - "ндартним часом на архіпелазі Фернанду-ді-Норонья[за літнім часом на арх" + - "іпелазі Фернанду-ді-Норонья,за новосибірським часомCза новосибірським с" + - "тандартним часом9за новосибірським літнім часом\x1eза омським часом5за " + - "омським стандартним часом+за омським літнім часом%за часом у Пакистані<" + - "за стандартним часом у Пакистані2за літнім часом у Пакистані.за часом н" + - "а острові ПалауFза часом на островах Папуа Нова Гвінея*за парагвайським" + - " часомAза стандартним парагвайським часом7за літнім парагвайським часом" + - "\x1bза часом у Перу2за стандартним часом у Перу(за літнім часом у Перу)з" + - "а часом на Філіппінах@за стандартним часом на Філіппінах6за літнім часо" + - "м на Філіппінах2за часом на островах ФеніксHза часом на островах Сен-П’" + - "єр і Мікелон_за стандартним часом на островах Сен-П’єр і МікелонUза літ" + - "нім часом на островах Сен-П’єр і Мікелон4за часом на островах Піткерн0з" + - "а часом на острові Понапе#за часом у Пхеньяні\x1aчас: Кизилорда2час: Ки" + - "зилорда, стандартний(час: Кизилорда, літній4за часом на острові Реюньйо" + - "н0за часом на станції Ротера(за сахалінським часом?за сахалінським стан" + - "дартним часом5за сахалінським літнім часом$за самарським часом;за самар" + - "ським стандартним часом1за самарським літнім часом.за часом на острові " + - "СамоаEза стандартним часом на острові Самоа;за літнім часом на острові " + - "Самоа>за часом на Сейшельських Островах%за часом у Сінгапурі<за часом н" + - "а Соломонових островахEза часом на острові Південна Джорджія#за часом у" + - " Суринамі,за часом на станції Сева.за часом на острові Таїті\x1fза часом" + - " у Тайбеї6за стандартним часом у Тайбеї,за літнім часом у Тайбеї+за часо" + - "м у Таджикистані4за часом на островах Токелау0за часом на островах Тонг" + - "аGза стандартним часом на островах Тонга=за літнім часом на островах То" + - "нга.за часом на островах Чуук-за часом у ТуркменістаніDза стандартним ч" + - "асом у Туркменістані:за літнім часом у Туркменістані2за часом на остров" + - "ах Тувалу!за часом в Уругваї8за стандартним часом в Уругваї.за літнім ч" + - "асом в Уругваї)за часом в Узбекистані@за стандартним часом в Узбекистан" + - "і6за літнім часом в Узбекистані4за часом на островах ВануатуKза стандар" + - "тним часом на островах ВануатуAза літнім часом на островах Вануату%за ч" + - "асом у Венесуелі.за владивостоцьким часомEза владивостоцьким стандартни" + - "м часом;за владивостоцьким літнім часом,за волгоградським часомCза волг" + - "оградським стандартним часом9за волгоградським літнім часом0за часом на" + - " станції Восток,за часом на острові ВейкBза часом на островах Уолліс і Ф" + - "утуна\x22за якутським часом9за якутським стандартним часом/за якутським" + - " літнім часом0за єкатеринбурзьким часомGза єкатеринбурзьким стандартним " + - "часом=за єкатеринбурзьким літнім часом" - -var bucket105 string = "" + // Size: 13457 bytes - "\x16پہلی سہ ماہی\x18دوسری سہ ماہی\x18تیسری سہ ماہی\x18چوتهی سہ ماہی\x0fآ" + - "دھی رات\x0aدوپہر\x0bسہ پہر\x06رات\x0fقبل مسیح\x19عام دور سے قبل\x0aعیسو" + - "ی\x0dعام دور\x05ق م\x0fعیسوی سن\x06عہد\x11گزشتہ سال\x0bاس سال\x0fاگلے س" + - "ال\x11{0} سال میں\x13{0} سال پہلے\x0dسہ ماہی\x18گزشتہ سہ ماہی\x12اس سہ " + - "ماہی\x16اگلے سہ ماہی\x12+{0} سہ ماہی\x12-{0} سہ ماہی\x18{0} سہ ماہی میں" + - "\x18{0} سہ ماہی قبل\x1a{0} سہ ماہی پہلے\x0aمہینہ\x15پچھلے مہینہ\x0fاس مہ" + - "ینہ\x13اگلے مہینہ\x15{0} مہینہ میں\x15{0} مہینے میں\x17{0} مہینہ پہلے" + - "\x17{0} مہینے پہلے\x06ماہ\x11{0} ماہ میں\x11{0} ماہ قبل\x12+{0} ماہ میں" + - "\x13{0} ماہ پہلے\x13پچھلے ہفتہ\x0dاس ہفتہ\x11اگلے ہفتہ\x13{0} ہفتہ میں" + - "\x13{0} ہفتے میں\x15{0} ہفتہ پہلے\x15{0} ہفتے پہلے\x11{0} کے ہفتے\x04دن" + - "\x15گزشتہ پرسوں\x0fگزشتہ کل\x04آج\x0fآئندہ کل\x1aآنے والا پرسوں\x0f{0} د" + - "ن میں\x13{0} دنوں میں\x11{0} دن پہلے\x15{0} دنوں پہلے\x12ہفتے کا دن\x15" + - "گزشتہ اتوار\x0fاس اتوار\x13اگلے اتوار\x15{0} اتوار میں\x15{0} اتوار قبل" + - "\x17گزشتہ سوموار\x11اس سوموار\x15اگلے سوموار\x11{0} پیر میں\x11{0} پیر ق" + - "بل\x17{0} سوموار میں\x13گزشتہ منگل\x0dاس منگل\x11اگلے منگل\x13{0} منگل " + - "میں\x13{0} منگل قبل\x11گزشتہ بدھ\x0bاس بدھ\x0fاگلے بدھ\x11{0} بدھ میں" + - "\x11{0} بدھ قبل\x17گزشتہ جمعرات\x11اس جمعرات\x15اگلے جمعرات\x17{0} جمعرا" + - "ت میں\x17{0} جمعرات قبل\x15اگلی جمعرات\x13گزشتہ جمعہ\x0dاس جمعہ\x11اگلے" + - " جمعہ\x13{0} جمعہ میں\x13{0} جمعہ قبل\x15گزشتہ سنیچر\x0fاس سنیچر\x13اگلے" + - " سنیچر\x15{0} سنیچر میں\x15{0} سنیچر قبل#قبل دوپہر/بعد دوپہر\x0aگھنٹہ" + - "\x0fاس گھنٹے\x15{0} گھنٹہ میں\x15{0} گھنٹے میں\x17{0} گھنٹہ پہلے\x17{0} " + - "گھنٹے پہلے\x17{0} گھنٹوں میں\x0bاس منٹ\x11{0} منٹ میں\x13{0} منٹ پہلے" + - "\x0aسیکنڈ\x04اب\x15{0} سیکنڈ میں\x17{0} سیکنڈ پہلے\x11منطقۂ وقت\x0a{0} و" + - "قت\x08{0} (+1)\x08{0} (+0).کوآرڈینیٹڈ یونیورسل ٹائم\x18برٹش سمر ٹائم" + - "\x22آئرش اسٹینڈرڈ ٹائم\x1eافغانستان کا وقت\x1eوسطی افریقہ ٹائم مشرقی افر" + - "یقہ ٹائم/جنوبی افریقہ سٹینڈرڈ ٹائم مغربی افریقہ ٹائم/مغربی افریقہ سٹینڈ" + - "رڈ ٹائم'مغربی افریقہ سمر ٹائم\x15الاسکا ٹائم&الاسکا اسٹینڈرڈ ٹائم#الاسک" + - "ا ڈے لائٹ ٹائم\x15امیزون ٹائم&ایمیزون سٹینڈرڈ ٹائم/امیزون کا موسم گرما " + - "کا وقت\x13سنٹرل ٹائم$سنٹرل اسٹینڈرڈ ٹائم!سنٹرل ڈے لائٹ ٹائم\x15ایسٹرن ٹ" + - "ائم&ایسٹرن اسٹینڈرڈ ٹائم#ایسٹرن ڈے لائٹ ٹائم\x17ماؤنٹین ٹائم(ماؤنٹین اس" + - "ٹینڈرڈ ٹائم%ماؤنٹین ڈے لائٹ ٹائم\x13پیسفک ٹائم$پیسفک اسٹینڈرڈ ٹائم!پیسف" + - "ک ڈے لائٹ ٹائم\x13انیدر ٹائم$انیدر اسٹینڈرڈ ٹائم\x1aانیدر سمر ٹائم\x13ا" + - "یپیا ٹائم\x22ایپیا سٹینڈرڈ ٹائم!ایپیا ڈے لائٹ ٹائم\x12عرب کا وقت\x1fعرب" + - " کا معیاری وقت\x1dعرب ڈے لائٹ ٹائم\x19ارجنٹینا ٹائم(ارجنٹینا سٹینڈرڈ ٹائ" + - "م ارجنٹینا سمر ٹائم'مغربی ارجنٹینا کا وقت4مغربی ارجنٹینا کا معیاری وقت>" + - "مغربی ارجنٹینا کا موسم گرما کا وقت\x1aآرمینیا کا وقت'آرمینیا کا معیاری " + - "وقت1آرمینیا کا موسم گرما کا وقت\x17اٹلانٹک ٹائم(اٹلانٹک اسٹینڈرڈ ٹائم%ا" + - "ٹلانٹک ڈے لائٹ ٹائم$سنٹرل آسٹریلیا ٹائم5آسٹریلین سنٹرل اسٹینڈرڈ ٹائم2آس" + - "ٹریلین سنٹرل ڈے لائٹ ٹائم1آسٹریلین سنٹرل ویسٹرن ٹائمBآسٹریلین سنٹرل ویس" + - "ٹرن اسٹینڈرڈ ٹائم?آسٹریلین سنٹرل ویسٹرن ڈے لائٹ ٹائم&ایسٹرن آسٹریلیا ٹا" + - "ئم7آسٹریلین ایسٹرن اسٹینڈرڈ ٹائم4آسٹریلین ایسٹرن ڈے لائٹ ٹائم&ویسٹرن آس" + - "ٹریلیا ٹائم7آسٹریلیا ویسٹرن اسٹینڈرڈ ٹائم4آسٹریلین ویسٹرن ڈے لائٹ ٹائم " + - "آذربائیجان کا وقت-آذربائیجان کا معیاری وقت7آذربائیجان کا موسم گرما کا و" + - "قت\x18ازوریس کا وقت%ازوریس کا معیاری وقت/ازوریس کا موسم گرما کا وقت\x1d" + - "بنگلہ دیش کا وقت*بنگلہ دیش کا معیاری وقت4بنگلہ دیش کا موسم گرما کا وقت" + - "\x18بھوٹان کا وقت\x1aبولیویا کا وقت\x19برازیلیا ٹائم*برازیلیا اسٹینڈرڈ ٹ" + - "ائم برازیلیا سمر ٹائم(برونئی دارالسلام ٹائم\x18کیپ ورڈی ٹائم'کیپ ورڈی س" + - "ٹینڈرڈ ٹائم\x1fکیپ ورڈی سمر ٹائم$چامورو سٹینڈرڈ ٹائم\x13چیتھم ٹائم$چیتھ" + - "م اسٹینڈرڈ ٹائم!چیتھم ڈے لائٹ ٹائم\x12چلی کا وقت\x1fچلی کا معیاری وقت)چ" + - "لی کا موسم گرما کا وقت\x0fچین ٹائم\x1eچین سٹینڈرڈ ٹائم\x1fچینی ڈے لائٹ " + - "ٹائم\x19کوئبلسان ٹائم(کوئبلسان سٹینڈرڈ ٹائم\x22کوائبلسان سمر ٹائم کرسمس" + - " آئلینڈ ٹائم\x22کوکوس آئلینڈز ٹائم\x17کولمبیا ٹائم'کولمبیا کا معیاری وقت" + - "1کولمبیا کا موسم گرما کا وقت\x1cکک آئلینڈز ٹائم+کک آئلینڈز سٹینڈرڈ ٹائم*" + - "کک آئلینڈز نصف سمر ٹائم\x13کیوبا ٹائم$کیوبا اسٹینڈرڈ ٹائم!کیوبا ڈے لائٹ" + - " ٹائم\x11ڈیوس ٹائم)ڈومونٹ-ڈی’ارویلے ٹائم\x1eمشرقی تیمور ٹائم#ایسٹر آئلین" + - "ڈ کا وقت0ایسٹر آئلینڈ کا معیاری وقت:ایسٹر آئلینڈ کا موسم گرما کا وقت" + - "\x1cایکواڈور کا وقت\x1bوسط یورپ کا وقت*وسطی یورپ کا معیاری وقت4وسطی یورپ" + - " کا موسم گرما کا وقت\x1fمشرقی یورپ کا وقت,مشرقی یورپ کا معیاری وقت6مشرقی" + - " یورپ کا موسم گرما کا وقت%بعید مشرقی یورپی وقت\x1fمغربی یورپ کا وقت,مغرب" + - "ی یورپ کا معیاری وقت6مغربی یورپ کا موسم گرما کا وقت*فاک لینڈ آئلینڈز کا" + - " وقت7فاک لینڈ آئلینڈز کا معیاری وقتAفاک لینڈ آئلینڈز کا موسم گرما کا وقت" + - "\x0fفجی ٹائم\x1eفجی سٹینڈرڈ ٹائم\x16فجی سمر ٹائم!فرینچ گیانا کا وقت6فرین" + - "چ جنوبی اور انٹارکٹک ٹائم\x1eگالاپاگوز کا وقت\x17گیمبیئر ٹائم\x18جارجیا" + - " کا وقت%جارجیا کا معیاری وقت/جارجیا کا موسم گرما کا وقت\x22جلبرٹ آئلینڈز" + - " ٹائم گرین وچ کا اصل وقت%مشرقی گرین لینڈ ٹائم6مشرقی گرین لینڈ اسٹینڈرڈ ٹ" + - "ائم?مشرقی گرین لینڈ کا موسم گرما کا وقت%مغربی گرین لینڈ ٹائم6مغربی گرین" + - " لینڈ اسٹینڈرڈ ٹائم?مغربی گرین لینڈ کا موسم گرما کا وقت!خلیج کا معیاری و" + - "قت\x16گیانا کا وقت$ہوائی الیوٹیئن ٹائم5ہوائی الیوٹیئن اسٹینڈرڈ ٹائم2ہوا" + - "ئی الیوٹیئن ڈے لائٹ ٹائم\x1aہانگ کانگ ٹائم)ہانگ کانگ سٹینڈرڈ ٹائم!ہانگ " + - "کانگ سمر ٹائم\x11ہووڈ ٹائم ہووڈ سٹینڈرڈ ٹائم\x18ہووڈ سمر ٹائم)ہندوستان " + - "کا معیاری وقت\x16بحر ہند ٹائم\x16ہند چین ٹائم$وسطی انڈونیشیا ٹائم&مشرقی" + - " انڈونیشیا ٹائم&مغربی انڈونیشیا ٹائم\x16ایران کا وقت#ایران کا معیاری وقت" + - "!ایران ڈے لائٹ ٹائم\x15ارکتسک ٹائم$ارکتسک سٹینڈرڈ ٹائم\x1cارکتسک سمر ٹائ" + - "م\x1aاسرائیل کا وقت'اسرائیل کا معیاری وقت%اسرائیل ڈے لائٹ ٹائم\x13جاپان" + - " ٹائم\x22جاپان سٹینڈرڈ ٹائم!جاپان ڈے لائٹ ٹائم2پیٹروپاؤلووسک-کیمچسکی ٹائ" + - "مCپیٹروپاؤلووسک-کیمچسکی اسٹینڈرڈ ٹائم9پیٹروپاؤلووسک-کیمچسکی سمر ٹائم'مش" + - "رقی قزاخستان کا وقت'مغربی قزاخستان کا وقت\x13کوریا ٹائم\x22کوریا سٹینڈر" + - "ڈ ٹائم!کوریا ڈے لائٹ ٹائم\x13کوسرے ٹائم\x1fکریسنویارسک ٹائم,کرسنویارسک " + - "سٹینڈرڈ ٹائم&کریسنویارسک سمر ٹائم\x1aکرغستان کا وقت لائن آئلینڈز ٹائم" + - "\x1aلارڈ ہووے ٹائم+لارڈ ہووے اسٹینڈرڈ ٹائم(لارڈ ہووے ڈے لائٹ ٹائم%مکوآری" + - " آئلینڈ کا وقت\x15میگیدن ٹائم&مگادان اسٹینڈرڈ ٹائم\x1cمیگیدن سمر ٹائم" + - "\x15ملیشیا ٹائم\x18مالدیپ کا وقت\x17مارکیسس ٹائم\x22مارشل آئلینڈز ٹائم" + - "\x15ماریشس ٹائم$ماریشس سٹینڈرڈ ٹائم\x1cماریشس سمر ٹائم\x13ماؤسن ٹائم+شما" + - "ل مغربی میکسیکو ٹائم<شمال مغربی میکسیکو اسٹینڈرڈ ٹائم9شمال مغربی میکسیک" + - "و ڈے لائٹ ٹائم\x22میکسیکن پیسفک ٹائم3میکسیکن پیسفک اسٹینڈرڈ ٹائم0میکسیک" + - "ن پیسفک ڈے لائٹ ٹائم\x1eیولان بیتور ٹائم-یولان بیتور سٹینڈرڈ ٹائم%یولان" + - " بیتور سمر ٹائم\x13ماسکو ٹائم$ماسکو اسٹینڈرڈ ٹائم\x1aماسکو سمر ٹائم\x17م" + - "یانمار ٹائم\x13ناؤرو ٹائم\x16نیپال کا وقت\x22نیو کیلیڈونیا ٹائم1نیو کیل" + - "یڈونیا سٹینڈرڈ ٹائم)نیو کیلیڈونیا سمر ٹائم\x1fنیوزی لینڈ کا وقت,نیوزی ل" + - "ینڈ کا معیاری وقت*نیوزی لینڈ ڈے لائٹ ٹائم#نیو فاؤنڈ لینڈ ٹائم4نیو فاؤنڈ" + - " لینڈ اسٹینڈرڈ ٹائم1نیو فاؤنڈ لینڈ ڈے لائٹ ٹائم\x11نیئو ٹائم%نارفوک آئلی" + - "نڈ کا وقت,فرنانڈو ڈی نورنہا کا وقت9فرنانڈو ڈی نورنہا کا معیاری وقت2فرنا" + - "نڈو ڈی نورونہا سمر ٹائم\x1dنوووسیبرسک ٹائم,نوووسیبرسک سٹینڈرڈ ٹائم$نووو" + - "سیبرسک سمر ٹائم\x13اومسک ٹائم\x22اومسک سٹینڈرڈ ٹائم\x1aاومسک سمر ٹائم" + - "\x1aپاکستان کا وقت'پاکستان کا معیاری وقت1پاکستان کا موسم گرما کا وقت\x11" + - "پلاؤ ٹائم!پاپوآ نیو گنی ٹائم\x1cپیراگوئے کا وقت)پیراگوئے کا معیاری وقت3" + - "پیراگوئے کا موسم گرما کا وقت\x14پیرو کا وقت!پیرو کا معیاری وقت+پیرو کا " + - "موسم گرما کا وقت\x15فلپائن ٹائم$فلپائن سٹینڈرڈ ٹائم\x1cفلپائن سمر ٹائم" + - "\x22فینکس آئلینڈز ٹائم0سینٹ پیئر اور مکلیئون ٹائمAسینٹ پیئر اور مکلیئون " + - "اسٹینڈرڈ ٹائم>سینٹ پیئر اور مکلیئون ڈے لائٹ ٹائم\x17پٹکائرن ٹائم\x15پون" + - "اپے ٹائم\x1aپیانگ یانگ وقت\x18ری یونین ٹائم\x1aروتھیرا کا وقت\x15سخالین" + - " ٹائم$سخالین سٹینڈرڈ ٹائم\x1cسخالین سمر ٹائم\x13سمارا ٹائم$سمارا اسٹینڈر" + - "ڈ ٹائم\x1aسمارا سمر ٹائم\x13ساموآ ٹائم\x22ساموآ سٹینڈرڈ ٹائم!ساموآ ڈے ل" + - "ائٹ ٹائم\x15سیشلیز ٹائم&سنگاپور سٹینڈرڈ ٹائم\x22سولمن آئلینڈز ٹائم جنوب" + - "ی جارجیا ٹائم\x1aسورینام کا وقت\x13سیووا ٹائم\x15تاہیتی ٹائم\x1aتائی پی" + - "ئی ٹائم+تائی پیئی اسٹینڈرڈ ٹائم&تئی پیئی ڈے لائٹ ٹائم\x1cتاجکستان کا وق" + - "ت\x17ٹوکیلاؤ ٹائم\x13ٹونگا ٹائم\x22ٹونگا سٹینڈرڈ ٹائم\x1aٹونگا سمر ٹائم" + - "\x0fچوک ٹائم ترکمانستان کا وقت-ترکمانستان کا معیاری وقت7ترکمانستان کا مو" + - "سم گرما کا وقت\x13ٹوالو ٹائم\x1cیوروگوئے کا وقت)یوروگوئے کا معیاری وقت3" + - "یوروگوئے کا موسم گرما کا وقت\x1cازبکستان کا وقت)ازبکستان کا معیاری وقت3" + - "ازبکستان کا موسم گرما کا وقت\x17وانوآٹو ٹائم&وانوآٹو سٹینڈرڈ ٹائم\x1eوا" + - "نوآٹو سمر ٹائم\x1eوینزوئیلا کا وقت\x1eولادی ووستک ٹائم-ولادی ووستک سٹین" + - "ڈرڈ ٹائم%ولادی ووستک سمر ٹائم\x1bوولگوگراد ٹائم,وولگوگراد اسٹینڈرڈ ٹائم" + - "\x22وولگوگراد سمر ٹائم\x18ووسٹاک کا وقت\x1cویک آئلینڈ ٹائم%والیز اور فٹو" + - "نا ٹائم\x15یکوتسک ٹائم&یکوتسک اسٹینڈرڈ ٹائم\x1cیکوتسک سمر ٹائم\x1fیکاٹی" + - "رِنبرگ ٹائم0یکاٹیرِنبرگ اسٹینڈرڈ ٹائم&یکاٹیرِنبرگ سمر ٹائم\x15{0} سالوں" + - " میں\x17{0} سالوں پہلے\x15{0} ہفتوں میں" - -var bucket106 string = "" + // Size: 11797 bytes - "\x11گزشتہ ماہ\x0bاس ماہ\x0fاگلے ماہ\x13گزشتہ ہفتہ\x0dاس ہفتہ\x11اگلے ہفت" + - "ہ\x13{0} ہفتہ قبل\x13{0} ہفتے قبل\x0f{0} دن قبل\x17پچھلے سوموار\x11اس س" + - "وموار\x15اگلے سوموار\x13پچھلے منگل\x0dاس منگل\x11اگلے منگل\x11پچھلے بدھ" + - "\x0bاس بدھ\x0fاگلے بدھ\x17پچھلے جمعرات\x11اس جمعرات\x15اگلے جمعرات\x13پچ" + - "ھلے جمعہ\x0dاس جمعہ\x11اگلے جمعہ\x15{0} گھنٹے قبل\x15{0} گھنٹہ قبل\x11{" + - "0} منٹ قبل\x15{0} سیکنڈ قبل\x14{0} دن کا وقت\x17{0} معیاری وقت\x1bافغانس" + - "تان ٹائم\x17ایمیزون ٹائم&ایمیزون سٹینڈرڈ ٹائم\x1eایمیزون سمر ٹائم\x0fعر" + - "ب ٹائم\x1eعرب سٹینڈرڈ ٹائم\x1dعرب ڈے لائٹ ٹائم$مغربی ارجنٹینا ٹائم3مغرب" + - "ی ارجنٹینا سٹینڈرڈ ٹائم+مغربی ارجنٹینا سمر ٹائم\x17آرمینیا ٹائم&آرمینیا" + - " سٹینڈرڈ ٹائم\x1eآرمینیا سمر ٹائم\x1dآذربائیجان ٹائم,آذربائیجان سٹینڈرڈ " + - "ٹائم$آذربائیجان سمر ٹائم\x1aبنگلہ دیش ٹائم)بنگلہ دیش سٹینڈرڈ ٹائم!بنگلہ" + - " دیش سمر ٹائم\x15بھوٹان ٹائم\x17بولیویا ٹائم\x19برازیلیا ٹائم(برازیلیا س" + - "ٹینڈرڈ ٹائم برازیلیا سمر ٹائم\x0fچلی ٹائم\x1eچلی سٹینڈرڈ ٹائم\x16چلی سم" + - "ر ٹائم\x17کولمبیا ٹائم&کولمبیا سٹینڈرڈ ٹائم\x1eکولمبیا سمر ٹائم ایسٹر آ" + - "ئلینڈ ٹائم/ایسٹر آئلینڈ سٹینڈرڈ ٹائم'ایسٹر آئلینڈ سمر ٹائم\x19ایکواڈور " + - "ٹائم\x1dوسطی یورپ کا وقت*وسطی یورپ کا معیاری وقت4وسطی یورپ کا موسم گرما" + - " کا وقت'فاک لینڈ آئلینڈز ٹائم6فاک لینڈ آئلینڈز سٹینڈرڈ ٹائم.فاک لینڈ آئل" + - "ینڈز سمر ٹائم\x1eفرینچ گیانا ٹائم\x1bگالاپاگوز ٹائم\x15جارجیا ٹائم$جارج" + - "یا سٹینڈرڈ ٹائم\x1cجارجیا سمر ٹائم\x1dگرین وچ مین ٹائم خلیج سٹینڈرڈ ٹائ" + - "م\x13گیانا ٹائم\x22انڈیا سٹینڈرڈ ٹائم\x13ایران ٹائم\x22ایران سٹینڈرڈ ٹا" + - "ئم!ایران ڈے لائٹ ٹائم\x17اسرائیل ٹائم&اسرائیل سٹینڈرڈ ٹائم%اسرائیل ڈے ل" + - "ائٹ ٹائم$مشرقی قزاخستان ٹائم$مغربی قزاخستان ٹائم\x17کرغستان ٹائم\x22مکو" + - "آری آئلینڈ ٹائم\x15مالدیپ ٹائم\x13نیپال ٹائم\x1cنیوزی لینڈ ٹائم+نیوزی ل" + - "ینڈ سٹینڈرڈ ٹائم*نیوزی لینڈ ڈے لائٹ ٹائم)فرنانڈو ڈی نورنہا ٹائم8فرنانڈو" + - " ڈی نورنہا سٹینڈرڈ ٹائم2فرنانڈو ڈی نورونہا سمر ٹائم\x17پاکستان ٹائم&پاکس" + - "تان سٹینڈرڈ ٹائم\x1eپاکستان سمر ٹائم\x19پیراگوئے ٹائم(پیراگوئے سٹینڈرڈ " + - "ٹائم پیراگوئے سمر ٹائم\x11پیرو ٹائم پیرو سٹینڈرڈ ٹائم\x18پیرو سمر ٹائم" + - "\x17روتھیرا ٹائم\x17سورینام ٹائم\x19تاجکستان ٹائم\x1dترکمانستان ٹائم,ترک" + - "مانستان سٹینڈرڈ ٹائم$ترکمانستان سمر ٹائم\x19یوروگوئے ٹائم(یوروگوئے سٹین" + - "ڈرڈ ٹائم یوروگوئے سمر ٹائم\x19ازبکستان ٹائم(ازبکستان سٹینڈرڈ ٹائم ازبکس" + - "تان سمر ٹائم\x1bوینزوئیلا ٹائم\x15ووسٹاک ٹائم\x13EEEE, d-MMMM, y (G)" + - "\x0dd-MMMM, y (G)\x0cd-MMM, y (G)\x0fdd.MM.y (GGGGG)\x03Yak\x04Dush\x04S" + - "esh\x04Chor\x03Pay\x03Jum\x04Shan\x02Ya\x02Du\x02Se\x02Ch\x02Pa\x02Ju" + - "\x02Sh\x09yakshanba\x08dushanba\x08seshanba\x0achorshanba\x09payshanba" + - "\x04juma\x06shanba\x041-ch\x042-ch\x043-ch\x044-ch\x081-chorak\x082-chor" + - "ak\x083-chorak\x084-chorak\x09yarim tun\x02TO\x0atush payti\x07ertalab" + - "\x07kunduzi\x09kechqurun\x07kechasi\x10miloddan avvalgi\x11eramizdan avv" + - "algi\x07milodiy\x04m.a.\x04e.a.\x04mil.\x0fEEEE, d-MMMM, y\x09d-MMMM, y" + - "\x08d-MMM, y\x03yil\x0co‘tgan yil\x07shu yil\x0bkeyingi yil\x10{0} yilda" + - "n keyin\x0d{0} yil oldin\x0boʻtgan yil\x06bu yil\x06chorak\x0fo‘tgan cho" + - "rak\x0ashu chorak\x0ekeyingi chorak\x13{0} chorakdan keyin\x10{0} chorak" + - " oldin\x02ch\x02oy\x0bo‘tgan oy\x06shu oy\x0akeyingi oy\x0f{0} oydan key" + - "in\x0c{0} oy oldin\x0eo‘tgan hafta\x09shu hafta\x0dkeyingi hafta\x12{0} " + - "haftadan keyin\x0f{0} hafta oldin\x09{0}-hafta\x03kun\x05kecha\x05bugun" + - "\x06ertaga\x10{0} kundan keyin\x0d{0} kun oldin\x0ahafta kuni\x12o‘tgan " + - "yakshanba\x0dshu yakshanba\x11keyingi yakshanba\x19{0} ta yakshanbadan k" + - "eyin\x16{0} ta yakshanba oldin\x11o‘tgan dushanba\x0cshu dushanba\x10key" + - "ingi dushanba\x18{0} ta dushanbadan keyin\x15{0} ta dushanba oldin\x11o‘" + - "tgan seshanba\x0cshu seshanba\x10keyingi seshanba\x18{0} ta seshanbadan " + - "keyin\x15{0} ta seshanba oldin\x13o‘tgan chorshanba\x0eshu chorshanba" + - "\x12keyingi chorshanba\x1a{0} ta chorshanbadan keyin\x17{0} ta chorshanb" + - "a oldin\x12o‘tgan payshanba\x0dshu payshanba\x11keyingi payshanba\x19{0}" + - " ta payshanbadan keyin\x16{0} ta payshanba oldin\x0do‘tgan juma\x08shu j" + - "uma\x0ckeyingi juma\x14{0} ta jumadan keyin\x11{0} ta juma oldin\x0fo‘tg" + - "an shanba\x0ashu shanba\x0ekeyingi shanba\x16{0} ta shanbadan keyin\x13{" + - "0} ta shanba oldin\x05TO/TK\x04soat\x0ashu soatda\x11{0} soatdan keyin" + - "\x0e{0} soat oldin\x06daqiqa\x0cshu daqiqada\x13{0} daqiqadan keyin\x10{" + - "0} daqiqa oldin\x04daq.\x06soniya\x05hozir\x13{0} soniyadan keyin\x10{0}" + - " soniya oldin\x04son.\x0evaqt mintaqasi\x15Britaniya yozgi vaqti\x15Irla" + - "ndiya yozgi vaqti\x12Afgʻoniston vaqti\x15Markaziy Afrika vaqti\x14Sharq" + - "iy Afrika vaqti\x1dJanubiy Afrika standart vaqti\x15Gʻarbiy Afrika vaqti" + - "\x1eGʻarbiy Afrika standart vaqti\x1bGʻarbiy Afrika yozgi vaqti\x0dAlyas" + - "ka vaqti\x16Alyaska standart vaqti\x13Alyaska yozgi vaqti\x0eAmazonka va" + - "qti\x17Amazonka standart vaqti\x14Amazonka yozgi vaqti\x16Markaziy Ameri" + - "ka vaqti\x1fMarkaziy Amerika standart vaqti\x1cMarkaziy Amerika yozgi va" + - "qti\x15Sharqiy Amerika vaqti\x1eSharqiy Amerika standart vaqti\x1bSharqi" + - "y Amerika yozgi vaqti\x13Tog‘ vaqti (AQSH)\x1cTog‘ standart vaqti (AQSH)" + - "\x19Tog‘ yozgi vaqti (AQSH)\x12Tinch okeani vaqti\x1bTinch okeani standa" + - "rt vaqti\x18Tinch okeani yozgi vaqti\x0aApia vaqti\x13Apia standart vaqt" + - "i\x10Apia yozgi vaqti\x18Saudiya Arabistoni vaqti!Saudiya Arabistoni sta" + - "ndart vaqti\x1eSaudiya Arabistoni yozgi vaqti\x0fArgentina vaqti\x18Arge" + - "ntina standart vaqti\x15Argentina yozgi vaqti\x18Gʻarbiy Argentina vaqti" + - "!Gʻarbiy Argentina standart vaqti\x1eGʻarbiy Argentina yozgi vaqti\x10Ar" + - "maniston vaqti\x19Armaniston standart vaqti\x16Armaniston yozgi vaqti" + - "\x0fAtlantika vaqti\x18Atlantika standart vaqti\x15Atlantika yozgi vaqti" + - "\x19Markaziy Avstraliya vaqti\x22Markaziy Avstraliya standart vaqti\x1fM" + - "arkaziy Avstraliya yozgi vaqti#Markaziy Avstraliya g‘arbiy vaqti,Markazi" + - "y Avstraliya g‘arbiy standart vaqti)Markaziy Avstraliya g‘arbiy yozgi va" + - "qti\x18Sharqiy Avstraliya vaqti!Sharqiy Avstraliya standart vaqti\x1eSha" + - "rqiy Avstraliya yozgi vaqti\x1aG‘arbiy Avstraliya vaqti#G‘arbiy Avstrali" + - "ya standart vaqti G‘arbiy Avstraliya yozgi vaqti\x10Ozarbayjon vaqti\x19" + - "Ozarbayjon standart vaqti\x16Ozarbayjon yozgi vaqti\x13Azor orollari vaq" + - "ti\x1cAzor orollari standart vaqti\x19Azor orollari yozgi vaqti\x10Bangl" + - "adesh vaqti\x19Bangladesh standart vaqti\x16Bangladesh yozgi vaqti\x0bBu" + - "tan vaqti\x0eBoliviya vaqti\x0fBraziliya vaqti\x18Braziliya standart vaq" + - "ti\x15Braziliya yozgi vaqti\x17Bruney-Dorussalom vaqti\x10Kabo-Verde vaq" + - "ti\x19Kabo-Verde standart vaqti\x16Kabo-Verde yozgi vaqti\x17Chamorro st" + - "andart vaqti\x0cChatem vaqti\x15Chatem standart vaqti\x12Chatem yozgi va" + - "qti\x0bChili vaqti\x14Chili standart vaqti\x11Chili yozgi vaqti\x0bXitoy" + - " vaqti\x14Xitoy standart vaqti\x11Xitoy yozgi vaqti\x10Choybalsan vaqti" + - "\x19Choybalsan standart vaqti\x16Choybalsan yozgi vaqti\x15Rojdestvo oro" + - "li vaqti\x14Kokos orollari vaqti\x0fKolumbiya vaqti\x18Kolumbiya standar" + - "t vaqti\x15Kolumbiya yozgi vaqti\x12Kuk orollari vaqti\x1bKuk orollari s" + - "tandart vaqti\x1eKuk orollari yarim yozgi vaqti\x0aKuba vaqti\x13Kuba st" + - "andart vaqti\x10Kuba yozgi vaqti\x0cDeyvis vaqti\x17Dyumon-d’Yurvil vaqt" + - "i\x13Sharqiy Timor vaqti\x11Pasxa oroli vaqti\x1aPasxa oroli standart va" + - "qti\x17Pasxa oroli yozgi vaqti\x0dEkvador vaqti\x16Markaziy Yevropa vaqt" + - "i\x1fMarkaziy Yevropa standart vaqti\x1cMarkaziy Yevropa yozgi vaqti\x15" + - "Sharqiy Yevropa vaqti\x1eSharqiy Yevropa standart vaqti\x1bSharqiy Yevro" + - "pa yozgi vaqti\x1aKaliningrad va Minsk vaqti\x17G‘arbiy Yevropa vaqti G‘" + - "arbiy Yevropa standart vaqti\x1dG‘arbiy Yevropa yozgi vaqti\x17Folklend " + - "orollari vaqti Folklend orollari standart vaqti\x1dFolklend orollari yoz" + - "gi vaqti\x0aFiji vaqti\x13Fiji standart vaqti\x10Fiji yozgi vaqti\x16Fra" + - "nsuz Gvianasi vaqti-Fransuz Janubiy hududlari va Antarktika vaqti\x0fGal" + - "apagos vaqti\x0cGambye vaqti\x0dGruziya vaqti\x16Gruziya standart vaqti" + - "\x13Gruziya yozgi vaqti\x16Gilbert orollari vaqti\x19Grinvich o‘rtacha v" + - "aqti\x19Sharqiy Grenlandiya vaqti\x22Sharqiy Grenlandiya standart vaqti" + - "\x1fSharqiy Grenlandiya yozgi vaqti\x1bG‘arbiy Grenlandiya vaqti$G‘arbiy" + - " Grenlandiya standart vaqti!G‘arbiy Grenlandiya yozgi vaqti\x1eFors ko‘r" + - "fazi standart vaqti\x0cGayana vaqti\x12Gavayi-aleut vaqti\x1bGavayi-aleu" + - "t standart vaqti\x18Gavayi-aleut yozgi vaqti\x0dGonkong vaqti\x16Gonkong" + - " standart vaqti\x13Gonkong yozgi vaqti\x0aXovd vaqti\x13Xovd standart va" + - "qti\x10Xovd yozgi vaqti\x0fHindiston vaqti\x11Hind okeani vaqti\x10Hindi" + - "xitoy vaqti\x19Markaziy Indoneziya vaqti\x18Sharqiy Indoneziya vaqti\x19" + - "Gʻarbiy Indoneziya vaqti\x0aEron vaqti\x13Eron standart vaqti\x10Eron yo" + - "zgi vaqti\x0dIrkutsk vaqti\x16Irkutsk standart vaqti\x13Irkutsk yozgi va" + - "qti\x0cIsroil vaqti\x15Isroil standart vaqti\x12Isroil yozgi vaqti\x0eYa" + - "poniya vaqti\x17Yaponiya standart vaqti\x14Yaponiya yozgi vaqti\x1aSharq" + - "iy Qozogʻiston vaqti\x1bGʻarbiy Qozogʻiston vaqti\x0cKoreya vaqti\x15Kor" + - "eya standart vaqti\x12Koreya yozgi vaqti\x0cKosrae vaqti\x11Krasnoyarsk " + - "vaqti\x1aKrasnoyarsk standart vaqti\x17Krasnoyarsk yozgi vaqti\x13Qirgʻi" + - "ziston vaqti\x13Layn orollari vaqti\x0eLord-Xau vaqti\x17Lord-Xau standa" + - "rt vaqti\x14Lord-Xau yozgi vaqti\x14Makkuori oroli vaqti\x0dMagadan vaqt" + - "i\x16Magadan standart vaqti\x13Magadan yozgi vaqti\x0fMalayziya vaqti" + - "\x15Maldiv orollari vaqti\x15Markiz orollari vaqti\x17Marshall orollari " + - "vaqti\x0eMavrikiy vaqti\x17Mavrikiy standart vaqti\x14Mavrikiy yozgi vaq" + - "ti\x0cMouson vaqti\x1fShimoli-g‘arbiy Meksika vaqti(Shimoli-g‘arbiy Meks" + - "ika standart vaqti%Shimoli-g‘arbiy Meksika yozgi vaqti\x1aMeksika Tinch " + - "okeani vaqti#Meksika Tinch okeani standart vaqti Meksika Tinch okeani yo" + - "zgi vaqti\x10Ulan-Bator vaqti\x19Ulan-Bator standart vaqti\x16Ulan-Bator" + - " yozgi vaqti\x0cMoskva vaqti\x15Moskva standart vaqti\x12Moskva yozgi va" + - "qti\x0cMyanma vaqti\x0bNauru vaqti\x0bNepal vaqti\x16Yangi Kaledoniya va" + - "qti\x1fYangi Kaledoniya standart vaqti\x1cYangi Kaledoniya yozgi vaqti" + - "\x15Yangi Zelandiya vaqti\x1eYangi Zelandiya standart vaqti\x1bYangi Zel" + - "andiya yozgi vaqti\x12Nyufaundlend vaqti\x1bNyufaundlend standart vaqti" + - "\x18Nyufaundlend yozgi vaqti\x0bNiuye vaqti\x13Norfolk oroli vaqti\x19Fe" + - "rnandu-di-Noronya vaqti\x22Fernandu-di-Noronya standart vaqti\x1fFernand" + - "u-di-Noronya yozgi vaqti\x11Novosibirsk vaqti\x1aNovosibirsk standart va" + - "qti\x17Novosibirsk yozgi vaqti\x0aOmsk vaqti\x13Omsk standart vaqti\x10O" + - "msk yozgi vaqti\x0ePokiston vaqti\x17Pokiston standart vaqti\x14Pokiston" + - " yozgi vaqti\x0bPalau vaqti\x19Papua-Yangi Gvineya vaqti\x0eParagvay vaq" + - "ti\x17Paragvay standart vaqti\x14Paragvay yozgi vaqti\x0aPeru vaqti\x13P" + - "eru standart vaqti\x10Peru yozgi vaqti\x0eFilippin vaqti\x17Filippin sta" + - "ndart vaqti\x14Filippin yozgi vaqti\x15Feniks orollari vaqti\x19Sen-Pyer" + - " va Mikelon vaqti\x22Sen-Pyer va Mikelon standart vaqti\x1fSen-Pyer va M" + - "ikelon yozgi vaqti\x0dPitkern vaqti\x0cPonape vaqti\x0dPxenyan vaqti\x0e" + - "Reyunion vaqti\x0cRotera vaqti\x0dSaxalin vaqti\x16Saxalin standart vaqt" + - "i\x13Saxalin yozgi vaqti\x0bSamoa vaqti\x14Samoa standart vaqti\x11Samoa" + - " yozgi vaqti\x16Seyshel orollari vaqti\x0eSingapur vaqti\x16Solomon orol" + - "lari vaqti\x16Janubiy Georgiya vaqti\x0dSurinam vaqti\x0bSyova vaqti\x0b" + - "Taiti vaqti\x0cTayvan vaqti\x15Tayvan standart vaqti\x12Tayvan yozgi vaq" + - "ti\x10Tojikiston vaqti\x0dTokelau vaqti\x0bTonga vaqti\x14Tonga standart" + - " vaqti\x11Tonga yozgi vaqti\x0bChuuk vaqti\x12Turkmaniston vaqti\x1bTurk" + - "maniston standart vaqti\x18Turkmaniston yozgi vaqti\x0cTuvalu vaqti\x0dU" + - "rugvay vaqti\x16Urugvay standart vaqti\x13Urugvay yozgi vaqti\x13O‘zbeki" + - "ston vaqti\x1cO‘zbekiston standart vaqti\x19O‘zbekiston yozgi vaqti\x0dV" + - "anuatu vaqti\x16Vanuatu standart vaqti\x13Vanuatu yozgi vaqti\x0fVenesue" + - "la vaqti\x11Vladivostok vaqti\x1aVladivostok standart vaqti\x17Vladivost" + - "ok yozgi vaqti\x0fVolgograd vaqti\x18Volgograd standart vaqti\x15Volgogr" + - "ad yozgi vaqti\x0cVostok vaqti\x10Ueyk oroli vaqti\x16Uollis va Futuna v" + - "aqti\x0dYakutsk vaqti\x16Yakutsk standart vaqti\x13Yakutsk yozgi vaqti" + - "\x13Yekaterinburg vaqti\x1cYekaterinburg standart vaqti\x19Yekaterinburg" + - " yozgi vaqti" - -var bucket107 string = "" + // Size: 14027 bytes - "-G y نچی ییل d نچی MMMM EEEE کونی\x11d نچی MMMM y G\x03ی.\x03د.\x03س." + - "\x03چ.\x03پ.\x03ج.\x03ش.+y نچی ییل d نچی MMMM EEEE کونی\x0fd نچی MMMM y" + - "\x1bافغانستان وقتی\x0aянвар\x0cфеврал\x08март\x0aапрел\x06май\x06июн\x06" + - "июл\x0cавгуст\x0eсентябр\x0cоктябр\x0aноябр\x0cдекабр\x0aЯнвар\x0cФевра" + - "л\x08Март\x0aАпрел\x06Май\x06Июн\x06Июл\x0cАвгуст\x0eСентябр\x0cОктябр" + - "\x0aНоябр\x0cДекабр\x06якш\x06душ\x06сеш\x06чор\x06пай\x06жум\x06шан\x04" + - "Як\x04Ду\x04Се\x04Чо\x04Па\x04Жу\x04Ша\x0eякшанба\x0eдушанба\x0eсешанба" + - "\x10чоршанба\x10пайшанба\x08жума\x0aшанба\x06Якш\x06Душ\x06Сеш\x06Чор" + - "\x06Пай\x06Жум\x06Шан\x0eЯкшанба\x0eДушанба\x0eСешанба\x10Чоршанба\x10Па" + - "йшанба\x08Жума\x0aШанба\x041-ч\x042-ч\x043-ч\x044-ч\x0c1-чорак\x0c2-чор" + - "ак\x0c3-чорак\x0c4-чорак\x0fярим тун\x04ТО\x11туш пайти\x04ТК\x0eэртала" + - "б\x0eкундузи\x10кечқурун\x0cкечаси\x1fмилоддан аввалги!эрамиздан аввалг" + - "и\x0eмилодий\x06м.а.\x06э.а.\x10Муҳаррам\x0aСафар\x17Рабиул-аввал\x15Ра" + - "биул-охир\x17Жумодиул-уло\x19Жумодиул-ухро\x0aРажаб\x0cШаъбон\x0eРамазо" + - "н\x0cШаввол\x11Зил-қаъда\x11Зил-ҳижжа\x06Эра\x06Йил\x11ўтган йил\x0bбу " + - "йил\x15кейинги йил\x19{0} йилдан сўнг\x15{0} йил аввал\x04Ой\x0fўтган о" + - "й\x09бу ой\x13кейинги ой\x17{0} ойдан сўнг\x13{0} ой аввал\x0aҲафта\x15" + - "ўтган ҳафта\x0fбу ҳафта\x19кейинги ҳафта\x1d{0} ҳафтадан сўнг\x19{0} ҳа" + - "фта олдин\x06Кун\x08кеча\x0aбугун\x0cэртага\x19{0} кундан сўнг\x15{0} к" + - "ун олдин\x13Ҳафта куни\x19ўтган якшанба\x13бу якшанба\x1dкейинги якшанб" + - "а\x19ўтган душанба\x13бу душанба\x1dкейинги душанба\x19ўтган сешанба" + - "\x13бу сешанба\x1dкейинги сешанба\x1bўтган чоршанба\x0ethis Wednesday" + - "\x1fкейинги чоршанба\x1bўтган пайшанба\x15бу пайшанба\x1fкейинги пайшанб" + - "а\x13ўтган жума\x0dбу жума\x17кейинги жума\x15ўтган шанба\x0fбу шанба" + - "\x19кейинги шанба\x11Кун вақти\x08Соат\x1b{0} соатдан сўнг\x17{0} соат о" + - "лдин\x0cДақиқа\x1f{0} дақиқадан сўнг\x1b{0} дақиқа олдин\x0aСония\x0aҳо" + - "зир\x1d{0} сониядан сўнг\x19{0} сония олдин\x0eМинтақа\x0e{0} вақти\x1f" + - "{0} кундузги вақти\x1f{0} стандарт вақти$Британия ёзги вақти$Ирландия ёз" + - "ги вақти\x1fАфғонистон вақти(Марказий Африка вақти$Шарқий Африка вақти&" + - "Жанубий Африка вақти$Ғарбий Африка вақти5Ғарбий Африка стандарт вақти-Ғ" + - "арбий Африка ёзги вақти\x17Аляска вақти(Аляска стандарт вақти(Аляска ку" + - "ндузги вақти\x1bАмазонка вақти,Амазонка стандарт вақти$Амазонка ёзги ва" + - "қти\x1dШимолий АмерикаJШимолий Америка марказий стандарт вақтиJШимолий " + - "Америка марказий кундузги вақти5Шимолий Америка шарқий вақтиFШимолий Ам" + - "ерика шарқий стандарт вақтиFШимолий Америка шарқий кундузги вақти/Шимол" + - "ий Америка тоғ вақти@Шимолий Америка тоғ стандарт вақти@Шимолий Америка" + - " тоғ кундузги вақти>Шимолий Америка тинч океани вақтиOШимолий Америка ти" + - "нч океани стандарт вақтиOШимолий Америка тинч океани кундузги вақти\x1d" + - "Арабистон вақти.Арабистон стандарт вақти.Арабистон кундузги вақти\x1dАр" + - "гентина вақти.Аргентина стандарт вақти&Аргентина ёзги вақти*Ғарбий Арге" + - "нтина вақти;Ғарбий Аргентина стандарт вақти3Ғарбий Аргентина ёзги вақти" + - "\x1fАрамнистон вақти0Арманистон стандарт вақти(Арманистон ёзги вақти\x1d" + - "Атлантика вақти.Атлантика стандарт вақти.Атлантика кундузги вақти.Марка" + - "зий Австралия вақти?Марказий Австралия стандарт вақти?Марказий Австрали" + - "я кундузги вақти;Марказий Австралия Ғарбий вақтиLМарказий Австралия Ғар" + - "бий стандарт вақтиLМарказий Австралия Ғарбий кундузги вақти*Шарқий Авст" + - "ралия вақти;Шарқий Австралия стандарт вақти;Шарқий Австралия кундузги в" + - "ақти*Ғарбий Австралия вақти;Ғарбий Австралия стандарт вақти;Ғарбий Авст" + - "ралия кундузги вақти\x1fОзарбайжон вақти0Озарбайжон стандарт вақти(Озар" + - "байжон ёзги вақти\x13Азор вақти$Азор стандарт вақти\x1cАзор ёзги вақти" + - "\x1dБангладеш вақти.Бангладеш стандарт вақти&Бангладеш ёзги вақти\x15Бут" + - "ан вақти\x19Боливия вақти\x1bБразилия вақти,Бразилия стандарт вақти$Бра" + - "зилия ёзги вақти,Бруней Даруссалом вақти\x1eКабо-Верде вақти/Кабо-Верде" + - " стандарт вақти'Кабо-Верде ёзги вақти\x19Каморро вақти\x17Чатхам вақти(Ч" + - "атхам стандарт вақти(Чатхам кундузги вақти\x13Чили вақти$Чили стандарт " + - "вақти\x1cЧили ёзги вақти\x15Хитой вақти&Хитой стандарт вақти&Хитой кунд" + - "узги вақти\x1dЧойбалсан вақти.Чойбалсан стандарт вақти&Чойбалсан ёзги в" + - "ақти(Рождество ороли вақти&Кокос ороллари вақти\x1bКолумбия вақти,Колум" + - "бия стандарт вақти$Колумбия ёзги вақти\x22Кук ороллари вақти3Кук оролла" + - "ри стандарт вақти4Кук ороллари ярим ёзги вақти\x13Куба вақти$Куба станд" + - "арт вақти$Куба кундузги вақти\x15Дэвис вақти%Думонт-д-Урвил вақти\x22Ша" + - "рқий Тимор вақти Пасхи Ороли вақти1Пасхи ороли стандарт вақти)Пасхи оро" + - "ли ёзги вақти\x19Эквадор вақти(Марказий Европа вақти9Марказий Европа ст" + - "андарт вақти1Марказий Европа ёзги вақти$Шарқий Европа вақти5Шарқий Евро" + - "па стандарт вақти-Шарқий Европа ёзги вақти$Ғарбий Европа вақти5Ғарбий Е" + - "вропа стандарт вақти-Ғарбий Европа ёзги вақти.Фолькленд ороллари вақти?" + - "Фолькленд ороллари стандарт вақти7Фолькленд ороллари ёзги вақти\x13Фижи" + - " вақти$Фижи стандарт вақти\x1cФижи ёзги вақти*Француз Гвианаси вақтиBФра" + - "нцуз жанубий ва Антарктика вақти\x1dГалапагос вақти\x19Гамбиер вақти" + - "\x17Грузия вақти(Грузия стандарт вақти Грузия ёзги вақти*Гилберт ороллар" + - "и вақти\x19Гринвич вақти,Шарқий Гренландия вақти=Шарқий Гренландия стан" + - "дарт вақти5Шарқий Гренландия ёзги вақти,Ғарбий Гренландия вақти=Ғарбий " + - "Гренландия стандарт вақти5Ғарбий Гренландия ёзги вақти\x17Кўрфаз вақти" + - "\x17Гайана вақти\x22Гавайи-алеут вақти3Гавайи-алеут стандарт вақти3Гавай" + - "и-алеут кундузги вақти\x19Гонконг вақти*Гонконг стандарт вақти\x22Гонко" + - "нг ёзги вақти\x13Ховд вақти$Ховд стандарт вақти\x1cХовд ёзги вақти\x1dҲ" + - "индистон вақти Ҳинд океани вақти\x1eҲинд-Хитой вақти.Марказий Индонезия" + - " вақти*Шарқий Индонезия вақти*Ғарбий Индонезия вақти\x13Эрон вақти$Эрон " + - "стандарт вақти$Эрон кундузги вақти\x19Иркутск вақти*Иркутск стандарт ва" + - "қти\x22Иркутск ёзги вақти\x17Исроил вақти(Исроил стандарт вақти(Исроил " + - "кундузги вақти\x17Япония вақти(Япония стандарт вақти(Япония кундузги ва" + - "қти,Шарқий Қозоғистон вақти,Ғарбий Қозоғистон вақти\x15Корея вақти&Коре" + - "я стандарт вақти&Корея кундузги вақти\x17Косрае вақти\x1fКрасноярск вақ" + - "ти0Красноярск стандарт вақти(Красноярск ёзги вақти!Қирғизистон вақти$Ла" + - "йн ороллари вақти\x1cЛорд Хове вақти-Лорд Хове стандарт вақти-Лорд Хове" + - " кундузги вақти$Маквари ороли вақти\x19Магадан вақти*Магадан стандарт ва" + - "қти\x22Магадан ёзги вақти\x1bМалайзия вақти\x1dМальдив ороллар\x1bМарке" + - "зас вақти*Маршалл ороллари вақти\x1bМаврикий вақти,Маврикий стандарт ва" + - "қти$Маврикий ёзги вақти\x19Моувсон вақти\x1eУлан-Батор вақти/Улан-Батор" + - " стандарт вақти'Улан-Батор ёзги вақти\x17Москва вақти(Москва стандарт ва" + - "қти Москва ёзги вақти\x17Мьянма вақти\x15Науру вақти\x15Непал вақти&Янг" + - "и Каледония вақти7Янги Каледония стандарт вақти/Янги Каледония ёзги вақ" + - "ти$Янги Зеландия вақти5Янги Зеландия стандарт вақти5Янги Зеландия кунду" + - "зги вақти#Ньюфаундленд вақти4Ньюфаундленд стандарт вақти4Ньюфаундленд к" + - "ундузги вақти\x13Ниуе вақти$Норфолк ороли вақти/Фернандо де Норонья вақ" + - "ти@Фернандо де Норонья стандарт вақти8Фернандо де Норонья ёзги вақти!Но" + - "восибирск вақти2Новосибирск стандарт вақти*Новосибирск ёзги вақти\x13Ом" + - "ск вақти$Омск стандарт вақти\x1cОмск ёзги вақти\x1bПокистон вақти,Покис" + - "тон стандарт вақти$Покистон ёзги вақти\x15Палау вақти+Папуа-Янги Гвинея" + - " вақти\x1bПарагвай вақти,Парагвай стандарт вақти$Парагвай ёзги вақти\x13" + - "Перу вақти$Перу стандарт вақти\x1cПеру ёзги вақти\x1bФилиппин вақти,Фил" + - "иппин стандарт вақти$Филиппин ёзги вақти(Феникс ороллари вақти0Сент-Пье" + - "р ва Микелон вақтиAСент-Пьер ва Микелон стандарт вақтиAСент-Пьер ва Мик" + - "елон кундузги вақти\x19Питкерн вақти\x17Понапе вақти\x19Реюньон вақти" + - "\x17Ротера вақти\x19Сахалин вақти*Сахалин стандарт вақти\x22Сахалин ёзги" + - " вақти\x15Самоа вақти&Самоа стандарт вақти&Самоа кундузги вақти(Сейшел о" + - "роллари вақти\x1bСингапур вақти*Соломон ороллари вақти*Жанубий Джорджия" + - " вақти\x19Суринам вақти\x15Сьова вақти\x15Таити вақти\x17Тайпей вақти(Та" + - "йпей стандарт вақти(Тайпей кундузги вақти\x1fТожикистон вақти\x19Токела" + - "у вақти\x15Тонга вақти&Тонга стандарт вақти\x1eТонга ёзги вақти\x13Чуук" + - " вақти#Туркманистон вақти4Туркманистон стандарт вақти,Туркманистон ёзги " + - "вақти\x17Тувалу вақти\x19Уругвай вақти*Уругвай стандарт вақти\x22Уругва" + - "й ёзги вақти\x1fЎзбекистон вақти0Ўзбекистон стандарт вақти(Ўзбекистон ё" + - "зги вақти\x19Вануату вақти*Вануату стандарт вақти\x22Вануату ёзги вақти" + - "\x1dВенесуэла вақти!Владивосток вақти2Владивосток стандарт вақти*Владиво" + - "сток ёзги вақти\x1dВолгоград вақти.Волгоград стандарт вақти&Волгоград ё" + - "зги вақти\x17Восток вақти\x1eУэйк ороли вақти)Уэллис ва Футуна вақти" + - "\x17Якутск вақти(Якутск стандарт вақти Якутск ёзги вақти#Екатеринбург ва" + - "қти4Екатеринбург стандарт вақти,Екатеринбург ёзги вақти" - -var bucket108 string = "" + // Size: 11442 bytes - "\x10ꖨꕪꖃ ꔞꕮ\x0cꕒꕡꖝꖕ\x06ꕾꖺ\x06ꖢꖕ\x06ꖑꕱ\x016\x017\x06ꗛꔕ\x06ꕢꕌ\x06ꕭꖃ\x16ꔞꘋꕔꕿ" + - " ꕸꖃꗏ\x10ꖨꕪꕱ ꗏꕮ\x09ꕞꕌꔵ\x09ꗳꗡꘉ\x09ꕚꕞꕚ\x09ꕉꕞꕒ\x0cꕉꔤꕆꕢ\x0cꕉꔤꕀꕮ\x09ꔻꔬꔳ\x06ꕢꘋ" + - "\x06ꕪꖃ\x09ꔨꔤꕃ\x06ꔎꔒ\x06ꖴꖸ\x06ꗦꗷ\x06ꔻꕯ\x10ꔨꕃꕮ ꔎꔒ\x06ꕌꕎ\x06ꕆꕇ\x0cꕧꕃꕧꕪ\x0cl" + - "uukao kemã\x09ɓandaɓu\x05vɔɔ\x04fulu\x03goo\x06kɔnde\x04saah\x04galo\x11" + - "kenpkato ɓololɔ\x0cluukao lɔma\x06lahadi\x0atɛɛnɛɛ\x06talata\x05alaba" + - "\x06aimisa\x06aijima\x07siɓiti\x04saŋ\x04tele\x0ewikiyɛma tele\x04hawa" + - "\x04mini\x09jaki-jaka EEEE, 'ngày' dd MMMM 'năm' y G\x0b{0} Nhuận\x03Tý" + - "\x05Sửu\x05Dần\x04Mão\x05Thìn\x04Tỵ\x05Ngọ\x04Mùi\x05Thân\x05Dậu\x06Tuất" + - "\x05Hợi\x0bLập Xuân\x0aVũ Thủy\x0bKinh Trập\x0bXuân Phân\x0aThanh Minh" + - "\x09Cốc Vũ\x0aLập Hạ\x0bTiểu Mãn\x0cMang Chủng\x09Hạ Chí\x0cTiểu Thử\x0c" + - "Đại Thử\x09Lập Thu\x0aXử Thử\x0bBạch Lộ\x09Thu Phân\x09Hàn Lộ\x0eSương " + - "Giáng\x0cLập Đông\x0eTiểu Tuyết\x0eĐại Tuyết\x0bĐông Chí\x0bTiểu Hàn\x0b" + - "Đại Hàn\x09Giáp Tý\x0aẤt Sửu\x0bBính Dần\x0aĐinh Mão\x0bMậu Thìn\x09Kỷ " + - "Tỵ\x0aCanh Ngọ\x09Tân Mùi\x0bNhâm Thân\x0aQuý Dậu\x0cGiáp Tuất\x0aẤt Hợi" + - "\x09Bính Tý\x0bĐinh Sửu\x0bMậu Dần\x09Kỷ Mão\x0aCanh Thìn\x09Tân Tỵ\x0bN" + - "hâm Ngọ\x09Quý Mùi\x0bGiáp Thân\x0aẤt Dậu\x0cBính Tuất\x0bĐinh Hợi\x09Mậ" + - "u Tý\x0aKỷ Sửu\x0aCanh Dần\x09Tân Mão\x0bNhâm Thìn\x09Quý Tỵ\x0bGiáp Ngọ" + - "\x09Ất Mùi\x0bBính Thân\x0bĐinh Dậu\x0cMậu Tuất\x0aKỷ Hợi\x08Canh Tý\x0a" + - "Tân Sửu\x0bNhâm Dần\x09Quý Mão\x0bGiáp Thìn\x09Ất Tỵ\x0bBính Ngọ\x0aĐinh" + - " Mùi\x0bMậu Thân\x0aKỷ Dậu\x0bCanh Tuất\x0aTân Hợi\x09Nhâm Tý\x0aQuý Sửu" + - "\x0bGiáp Dần\x09Ất Mão\x0bBính Thìn\x0aĐinh Tỵ\x0bMậu Ngọ\x09Kỷ Mùi\x0aC" + - "anh Thân\x0aTân Dậu\x0cNhâm Tuất\x0aQuý Hợi\x1eEEEE, 'ngày' dd MMMM 'năm" + - "' U\x1e'Ngày' dd 'tháng' M 'năm' U\x07dd-MM U'EEEE, 'ngày' dd 'tháng' MM" + - " 'năm' y G 'Ngày' dd 'tháng' M 'năm' y G\x0e{1} 'lúc' {0}\x05thg 1\x05th" + - "g 2\x05thg 3\x05thg 4\x05thg 5\x05thg 6\x05thg 7\x05thg 8\x05thg 9\x06th" + - "g 10\x06thg 11\x06thg 12\x08tháng 1\x08tháng 2\x08tháng 3\x08tháng 4\x08" + - "tháng 5\x08tháng 6\x08tháng 7\x08tháng 8\x08tháng 9\x09tháng 10\x09tháng" + - " 11\x09tháng 12\x05Thg 1\x05Thg 2\x05Thg 3\x05Thg 4\x05Thg 5\x05Thg 6" + - "\x05Thg 7\x05Thg 8\x05Thg 9\x06Thg 10\x06Thg 11\x06Thg 12\x08Tháng 1\x08" + - "Tháng 2\x08Tháng 3\x08Tháng 4\x08Tháng 5\x08Tháng 6\x08Tháng 7\x08Tháng " + - "8\x08Tháng 9\x09Tháng 10\x09Tháng 11\x09Tháng 12\x02CN\x04Th 2\x04Th 3" + - "\x04Th 4\x04Th 5\x04Th 6\x04Th 7\x02T2\x02T3\x02T4\x02T5\x02T6\x02T7\x0c" + - "Chủ Nhật\x09Thứ Hai\x08Thứ Ba\x09Thứ Tư\x0aThứ Năm\x0aThứ Sáu\x0bThứ Bảy" + - "\x06Quý 1\x06Quý 2\x06Quý 3\x06Quý 4\x06quý 1\x06quý 2\x06quý 3\x06quý 4" + - "\x0bnửa đêm\x02TR\x02CH\x05sáng\x07chiều\x05tối\x05đêm\x05trưa\x0bTrước " + - "CN\x06sau CN\x06tr. CN\x0eTrước R.O.C\x06R.O.C.\x0dThời đại\x04Năm\x0bnă" + - "m ngoái\x08năm nay\x08năm sau\x12sau {0} năm nữa\x11{0} năm trước\x04Quý" + - "\x0dquý trước\x09quý này\x08quý sau\x12sau {0} quý nữa\x11{0} quý trước" + - "\x06Tháng\x0ftháng trước\x0btháng này\x0atháng sau\x14sau {0} tháng nữa" + - "\x13{0} tháng trước\x06Tuần\x0ftuần trước\x0btuần này\x0atuần sau\x14sau" + - " {0} tuần nữa\x13{0} tuần trước\x0atuần {0}\x05Ngày\x08Hôm kia\x08Hôm qu" + - "a\x08Hôm nay\x09Ngày mai\x09Ngày kia\x13sau {0} ngày nữa\x12{0} ngày trư" + - "ớc\x12Ngày trong tuần\x1cChủ Nhật tuần trước\x18Chủ Nhật tuần này\x17C" + - "hủ Nhật tuần sau\x1asau {0} Chủ Nhật nữa\x19{0} Chủ Nhật trước\x19Thứ Ha" + - "i tuần trước\x15Thứ Hai tuần này\x14Thứ Hai tuần sau\x17sau {0} Thứ Hai " + - "nữa\x16{0} Thứ Hai trước\x18Thứ Ba tuần trước\x14Thứ Ba tuần này\x13Thứ " + - "Ba tuần sau\x16sau {0} Thứ Ba nữa\x15{0} Thứ Ba trước\x19Thứ Tư tuần trư" + - "ớc\x15Thứ Tư tuần này\x14Thứ Tư tuần sau\x17sau {0} Thứ Tư nữa\x16{0} " + - "Thứ Tư trước\x1aThứ Năm tuần trước\x16Thứ Năm tuần này\x15Thứ Năm tuần s" + - "au\x18sau {0} Thứ Năm nữa\x17{0} Thứ Năm trước\x1aThứ Sáu tuần trước\x16" + - "Thứ Sáu tuần này\x15Thứ Sáu tuần sau\x18sau {0} Thứ Sáu nữa\x17{0} Thứ S" + - "áu trước\x1bThứ Bảy tuần trước\x17Thứ Bảy tuần này\x16Thứ Bảy tuần sau" + - "\x19sau {0} Thứ Bảy nữa\x18{0} Thứ Bảy trước\x05SA/CH\x05Giờ\x0agiờ này" + - "\x13sau {0} giờ nữa\x12{0} giờ trước\x05Phút\x0aphút này\x13sau {0} phút" + - " nữa\x12{0} phút trước\x05Giây\x0abây giờ\x13sau {0} giây nữa\x12{0} giâ" + - "y trước\x0aMúi giờ\x09Giờ {0}\x12Giờ mùa hè {0}\x11Giờ chuẩn {0}\x1eGiờ " + - "phối hợp quốc tế\x12Giờ Mùa Hè Anh\x14Giờ chuẩn Ai-len\x0aGiờ Acre\x12Gi" + - "ờ Chuẩn Acre\x13Giờ Mùa Hè Acre\x11Giờ Afghanistan\x0fGiờ Trung Phi" + - "\x10Giờ Đông Phi\x15Giờ Chuẩn Nam Phi\x0eGiờ Tây Phi\x16Giờ Chuẩn Tây Ph" + - "i\x17Giờ Mùa Hè Tây Phi\x0cGiờ Alaska\x14Giờ Chuẩn Alaska\x15Giờ Mùa Hè " + - "Alaska\x0cGiờ Almaty\x14Giờ Chuẩn Almaty\x15Giờ Mùa Hè Almaty\x0cGiờ Ama" + - "zon\x14Giờ Chuẩn Amazon\x15Giờ Mùa Hè Amazon\x12Giờ miền trung\x1aGiờ ch" + - "uẩn miền trung\x1bGiờ mùa hè miền trung\x13Giờ miền đông\x1bGiờ chuẩn mi" + - "ền đông\x1cGiờ mùa hè miền đông\x11Giờ miền núi\x19Giờ chuẩn miền núi" + - "\x1aGiờ mùa hè miền núi\x19Giờ Thái Bình Dương!Giờ chuẩn Thái Bình Dương" + - "\x22Giờ Mùa hè Thái Bình Dương\x0cGiờ Anadyr\x14Giờ Chuẩn Anadyr\x15Giờ " + - "mùa hè Anadyr\x0aGiờ Apia\x12Giờ Chuẩn Apia\x13Giờ Mùa Hè Apia\x0bGiờ Aq" + - "tau\x13Giờ Chuẩn Aqtau\x14Giờ Mùa Hè Aqtau\x0cGiờ Aqtobe\x14Giờ Chuẩn Aq" + - "tobe\x15Giờ Mùa Hè Aqtobe\x0fGiờ Ả Rập\x17Giờ chuẩn Ả Rập\x18Giờ Mùa Hè " + - "Ả Rập\x0fGiờ Argentina\x17Giờ Chuẩn Argentina\x18Giờ Mùa Hè Argentina" + - "\x1bGiờ miền tây Argentina#Giờ chuẩn miền mây Argentina$Giờ mùa hè miền " + - "tây Argentina\x0dGiờ Armenia\x15Giờ Chuẩn Armenia\x16Giờ Mùa Hè Armenia" + - "\x19Giờ Đại Tây Dương!Giờ Chuẩn Đại Tây Dương\x22Giờ Mùa hè Đại Tây Dươn" + - "g\x1eGiờ Miền Trung Nước Úc&Giờ Chuẩn Miền Trung Nước Úc'Giờ Mùa Hè Miền" + - " Trung Nước Úc#Giờ Miền Trung Tây Nước Úc+Giờ Chuẩn Miền Trung Tây Nước " + - "Úc,Giờ Mùa Hè Miền Trung Tây Nước Úc\x1fGiờ Miền Đông Nước Úc'Giờ Chuẩn" + - " Miền Đông Nước Úc(Giờ Mùa Hè Miền Đông Nước Úc\x1dGiờ Miền Tây Nước Úc%" + - "Giờ Chuẩn Miền Tây Nước Úc&Giờ Mùa Hè Miền Tây Nước Úc\x10Giờ Azerbaijan" + - "\x18Giờ Chuẩn Azerbaijan\x19Giờ Mùa Hè Azerbaijan\x0cGiờ Azores\x14Giờ C" + - "huẩn Azores\x15Giờ Mùa Hè Azores\x10Giờ Bangladesh\x18Giờ Chuẩn Banglade" + - "sh\x19Giờ Mùa Hè Bangladesh\x0cGiờ Bhutan\x0dGiờ Bolivia\x0eGiờ Brasilia" + - "\x16Giờ Chuẩn Brasilia\x17Giờ Mùa Hè Brasilia\x17Giờ Brunei Darussalam" + - "\x10Giờ Cape Verde\x18Giờ Chuẩn Cape Verde\x19Giờ Mùa Hè Cape Verde\x0eG" + - "iờ Chamorro\x0dGiờ Chatham\x15Giờ Chuẩn Chatham\x16Giờ Mùa Hè Chatham" + - "\x0bGiờ Chile\x13Giờ Chuẩn Chile\x14Giờ Mùa Hè Chile\x12Giờ Trung Quốc" + - "\x1aGiờ Chuẩn Trung Quốc\x1bGiờ Mùa Hè Trung Quốc\x10Giờ Choibalsan\x18G" + - "iờ Chuẩn Choibalsan\x19Giờ Mùa Hè Choibalsan\x16Giờ Đảo Christmas\x19Giờ" + - " Quần Đảo Cocos\x0eGiờ Colombia\x16Giờ Chuẩn Colombia\x17Giờ Mùa Hè Colo" + - "mbia\x18Giờ Quần Đảo Cook Giờ Chuẩn Quần Đảo Cook'Giờ Nửa Mùa Hè Quần Đả" + - "o Cook\x0aGiờ Cuba\x12Giờ Chuẩn Cuba\x13Giờ Mùa Hè Cuba\x0bGiờ Davis\x18" + - "Giờ Dumont-d’Urville\x12Giờ Đông Timor\x18Giờ Đảo Phục Sinh Giờ Chuẩn Đả" + - "o Phục Sinh!Giờ Mùa Hè Đảo Phục Sinh\x0dGiờ Ecuador\x0fGiờ Trung Âu\x17G" + - "iờ Chuẩn Trung Âu\x18Giờ Mùa Hè Trung Âu\x10Giờ Đông Âu\x18Giờ Chuẩn Đôn" + - "g Âu\x19Giờ Mùa Hè Đông Âu\x1dGiờ Châu Âu Viễn Đông\x0eGiờ Tây Âu\x16Giờ" + - " Chuẩn Tây Âu\x17Giờ Mùa hè Tây Âu\x1cGiờ Quần Đảo Falkland$Giờ Chuẩn Qu" + - "ần Đảo Falkland%Giờ Mùa Hè Quần Đảo Falkland\x0aGiờ Fiji\x12Giờ Chuẩn " + - "Fiji\x13Giờ Mùa Hè Fiji\x1aGiờ Guiana thuộc Pháp%Giờ Nam Cực và Nam Nước" + - " Pháp\x0fGiờ Galapagos\x0dGiờ Gambier\x0cGiờ Gruzia\x14Giờ Chuẩn Gruzia" + - "\x15Giờ Mùa Hè Gruzia\x1bGiờ Quần Đảo Gilbert\x1bGiờ Trung bình Greenwic" + - "h\x1dGiờ Miền Đông Greenland%Giờ Chuẩn Miền Đông Greenland&Giờ Mùa Hè Mi" + - "ền Đông Greenland\x1bGiờ Miền Tây Greenland#Giờ Chuẩn Miền Tây Greenla" + - "nd$Giờ Mùa Hè Miền Tây Greenland\x12Giờ Chuẩn Guam\x1aGiờ Chuẩn Vùng Vịn" + - "h\x0cGiờ Guyana\x15Giờ Hawaii-Aleutian\x1dGiờ Chuẩn Hawaii-Aleutian\x1eG" + - "iờ Mùa Hè Hawaii-Aleutian\x12Giờ Hồng Kông\x1aGiờ Chuẩn Hồng Kông\x1bGiờ" + - " Mùa Hè Hồng Kông\x0aGiờ Hovd\x12Giờ Chuẩn Hovd\x13Giờ Mùa Hè Hovd\x18Gi" + - "ờ Chuẩn Ấn Độ\x18Giờ Ấn Độ Dương\x14Giờ Đông Dương\x1cGiờ Miền Trung I" + - "ndonesia\x1dGiờ Miền Đông Indonesia\x1bGiờ Miền Tây Indonesia\x0aGiờ Ira" + - "n\x12Giờ Chuẩn Iran\x13Giờ Mùa Hè Iran\x0dGiờ Irkutsk\x15Giờ Chuẩn Irkut" + - "sk\x16Giờ Mùa Hè Irkutsk\x0cGiờ Israel\x14Giờ Chuẩn Israel\x15Giờ Mùa Hè" + - " Israel\x12Giờ Nhật Bản\x1aGiờ Chuẩn Nhật Bản\x1bGiờ Mùa Hè Nhật Bản\x1e" + - "Giờ Petropavlovsk-Kamchatski&Giờ chuẩn Petropavlovsk-Kamchatski'Giờ mùa " + - "hè Petropavlovsk-Kamchatski\x1eGiờ Miền Đông Kazakhstan\x1cGiờ Miền Tây " + - "Kazakhstan\x11Giờ Hàn Quốc\x19Giờ Chuẩn Hàn Quốc\x1aGiờ Mùa Hè Hàn Quốc" + - "\x0cGiờ Kosrae\x11Giờ Krasnoyarsk\x19Giờ Chuẩn Krasnoyarsk\x1aGiờ Mùa Hè" + - " Krasnoyarsk\x0fGiờ Kyrgystan\x0bGiờ Lanka\x18Giờ Quần Đảo Line\x0fGiờ L" + - "ord Howe\x17Giờ Chuẩn Lord Howe\x18Giờ Mùa Hè Lord Howe\x0cGiờ Ma Cao" + - "\x14Giờ Chuẩn Ma Cao\x15Giờ Mùa Hè Ma Cao\x16Giờ đảo Macquarie\x0dGiờ Ma" + - "gadan\x15Giờ Chuẩn Magadan\x16Giờ mùa hè Magadan\x0eGiờ Malaysia\x0eGiờ " + - "Maldives\x0fGiờ Marquesas\x1cGiờ Quần Đảo Marshall\x0fGiờ Mauritius\x17G" + - "iờ Chuẩn Mauritius\x18Giờ Mùa Hè Mauritius\x0cGiờ Mawson\x17Giờ Tây Bắc " + - "Mexico\x1fGiờ Chuẩn Tây Bắc Mexico Giờ Mùa Hè Tây Bắc Mexico Giờ Thái Bì" + - "nh Dương Mexico(Giờ Chuẩn Thái Bình Dương Mexico)Giờ Mùa Hè Thái Bình Dư" + - "ơng Mexico\x10Giờ Ulan Bator\x18Giờ chuẩn Ulan Bator\x19Giờ mùa hè Ulan" + - " Bator\x0fGiờ Matxcơva\x17Giờ Chuẩn Matxcơva\x18Giờ Mùa Hè Matxcơva\x0dG" + - "iờ Myanmar\x0bGiờ Nauru\x0bGiờ Nepal\x13Giờ New Caledonia\x1bGiờ Chuẩn N" + - "ew Caledonia\x1cGiờ Mùa Hè New Caledonia\x11Giờ New Zealand\x19Giờ Chuẩn" + - " New Zealand\x1aGiờ Mùa Hè New Zealand\x12Giờ Newfoundland\x1aGiờ Chuẩn " + - "Newfoundland\x1bGiờ Mùa Hè Newfoundland\x0aGiờ Niue\x14Giờ đảo Norfolk" + - "\x19Giờ Fernando de Noronha!Giờ Chuẩn Fernando de Noronha\x22Giờ Mùa Hè " + - "Fernando de Noronha!Giờ Quần Đảo Bắc Mariana\x11Giờ Novosibirsk\x19Giờ c" + - "huẩn Novosibirsk\x1aGiờ mùa hè Novosibirsk\x0aGiờ Omsk\x12Giờ chuẩn Omsk" + - "\x13Giờ mùa hè Omsk\x0eGiờ Pakistan\x16Giờ Chuẩn Pakistan\x17Giờ Mùa Hè " + - "Pakistan\x0bGiờ Palau\x16Giờ Papua New Guinea\x0eGiờ Paraguay\x16Giờ Chu" + - "ẩn Paraguay\x17Giờ Mùa Hè Paraguay\x0aGiờ Peru\x12Giờ Chuẩn Peru\x13Gi" + - "ờ Mùa Hè Peru\x0fGiờ Philippin\x17Giờ Chuẩn Philippin\x18Giờ Mùa Hè Ph" + - "ilippin\x1bGiờ Quần Đảo Phoenix\x1dGiờ St. Pierre và Miquelon%Giờ Chuẩn " + - "St. Pierre và Miquelon(Giờ Mùa Hè Saint Pierre và Miquelon\x0eGiờ Pitcai" + - "rn\x0cGiờ Ponape\x15Giờ Bình Nhưỡng\x0fGiờ Qyzylorda\x17Giờ Chuẩn Qyzylo" + - "rda\x18Giờ Mùa Hè Qyzylorda\x0dGiờ Reunion\x0dGiờ Rothera\x0eGiờ Sakhali" + - "n\x16Giờ Chuẩn Sakhalin\x17Giờ mùa hè Sakhalin\x0cGiờ Samara\x14Giờ Chuẩ" + - "n Samara\x15Giờ mùa hè Samara\x0bGiờ Samoa\x13Giờ Chuẩn Samoa\x15Giờ ban" + - " ngày Samoa\x10Giờ Seychelles\x0fGiờ Singapore\x1bGiờ Quần Đảo Solomon" + - "\x11Giờ Nam Georgia\x0eGiờ Suriname\x0bGiờ Syowa\x0cGiờ Tahiti\x11Giờ Đà" + - "i Bắc\x19Giờ Chuẩn Đài Bắc\x1aGiờ Mùa Hè Đài Bắc\x10Giờ Tajikistan\x0dGi" + - "ờ Tokelau\x0bGiờ Tonga\x13Giờ Chuẩn Tonga\x14Giờ Mùa Hè Tonga\x0bGiờ C" + - "huuk\x12Giờ Turkmenistan\x1aGiờ Chuẩn Turkmenistan\x1bGiờ Mùa Hè Turkmen" + - "istan\x0cGiờ Tuvalu\x0dGiờ Uruguay\x15Giờ Chuẩn Uruguay\x16Giờ Mùa Hè Ur" + - "uguay\x10Giờ Uzbekistan\x18Giờ Chuẩn Uzbekistan\x19Giờ Mùa Hè Uzbekistan" + - "\x0dGiờ Vanuatu\x15Giờ Chuẩn Vanuatu\x16Giờ Mùa Hè Vanuatu\x0fGiờ Venezu" + - "ela\x11Giờ Vladivostok\x19Giờ Chuẩn Vladivostok\x1aGiờ mùa hè Vladivosto" + - "k\x0fGiờ Volgograd\x17Giờ Chuẩn Volgograd\x18Giờ Mùa Hè Volgograd\x0cGiờ" + - " Vostok\x11Giờ Đảo Wake\x17Giờ Wallis và Futuna\x0dGiờ Yakutsk\x15Giờ Ch" + - "uẩn Yakutsk\x16Giờ mùa hè Yakutsk\x13Giờ Yekaterinburg\x1bGiờ Chuẩn Yeka" + - "terinburg\x1cGiờ mùa hè Yekaterinburg" - -var bucket109 string = "" + // Size: 14311 bytes - "\x16G y MMMM'a' 'd'. d'id'\x0aG y MMM. d\x05yanul\x05febul\x06mäzul\x06p" + - "rilul\x05mayul\x05yunul\x05yulul\x06gustul\x05setul\x05tobul\x05novul" + - "\x05dekul\x05sudel\x05mudel\x05tudel\x05vedel\x06dödel\x06fridel\x06zäde" + - "l\x03Yf1\x03Yf2\x03Yf3\x03Yf4\x0e1id yelafoldil\x0e2id yelafoldil\x0e3id" + - " yelafoldil\x0e4id yelafoldil\x09b. t. kr.\x09p. t. kr.\x14y MMMM'a' 'd'" + - ". d'id'\x08y MMM. d\x03yel\x06äyelo\x05ayelo\x05oyelo\x03mul\x06ämulo" + - "\x05amulo\x05omulo\x03vig\x06ävigo\x05avigo\x05ovigo\x05edelo\x06ädelo" + - "\x05adelo\x05odelo\x05udelo\x07vodabel\x07delalaf\x04düp\x05sekun\x03zon" + - "\x06Jenner\x06Hornig\x06Märze\x07Abrille\x05Meije\x08Bráčet\x06Heiwet" + - "\x08Öigšte\x0dHerbštmánet\x09Wímánet\x0cWintermánet\x0dChrištmánet\x07Su" + - "nntag\x07Mäntag\x07Zištag\x08Mittwuč\x08Fróntag\x06Fritag\x08Samštag\x06" + - "Epoča\x04Jár\x0aI {0} jár\x0cvor {0} jár\x0ccor {0} jár\x06Mánet\x0cI {0" + - "} mánet\x0evor {0} mánet\x05Wuča\x0bi {0} wuča\x0ci {0} wučä\x0dvor {0} " + - "wuča\x0ecor {0} wučä\x0aVorgešter\x07Gešter\x05Hitte\x05Móre\x09Ubermóre" + - "\x09i {0} tag\x0ai {0} täg\x0bvor {0} tag\x0cvor {0} täg\x08Wučetag\x0bi" + - " {0} stund\x0ci {0} stunde\x0dvor {0} stund\x0evor {0} stunde\x09Mínütta" + - "\x0di {0} minüta\x0di {0} minüte\x0fvor {0} minüta\x0fvor {0} minüte\x07" + - "Sekunda\x0ci {0} sekund\x0di {0} sekunde\x0evor {0} sekund\x0fvor {0} se" + - "kunde\x08Zitzóna\x07{0} zit\x0eAtlantiši Zit\x16Atlantiši Standardzit" + - "\x14Atlantiši Summerzit\x15Mitteleuropäiši Zit\x1dMitteleuropäiši Standa" + - "rdzit\x1bMitteleuropäiši Summerzit\x13Ošteuropäiši Zit\x1bOšteuropäiši S" + - "tandardzit\x19Ošteuropäiši Summerzit\x14Wešteuropäiši Zit\x1cWešteuropäi" + - "ši Standardzit\x1aWešteuropäiši Summerzit\x04Sabi\x04Bala\x04Kubi\x04Ku" + - "sa\x04Kuna\x04Kuta\x04Muka\x07Sabiiti\x06Balaza\x09Owokubili\x09Owokusat" + - "u\x07Olokuna\x0aOlokutaanu\x0aOlomukaaga\x19Ebisera ebyomwaka ebisoka" + - "\x1cEbisera ebyomwaka ebyokubiri\x1cEbisera ebyomwaka ebyokusatu\x1aEbis" + - "era ebyomwaka ebyokuna\x06Munkyo\x06Eigulo\x13Kulisto nga azilawo\x12Kul" + - "isto nga affile\x02AZ\x02AF\x08Emulembe\x08Esabiiti\x07Olunaku\x04Edho" + - "\x11Olwaleelo (leelo)\x05Enkyo\x13Olunaka lwa sabiiti\x0dmunkyo/Eigulo" + - "\x06Essawa\x0bObutikitiki\x0bEssawa edha\x03o.1\x03o.2\x03o.3\x03o.4\x03" + - "o.5\x03o.6\x03o.7\x03o.8\x03o.9\x04o.10\x04o.11\x04o.12!pikítíkítie, oól" + - "í ú kutúan\x1dsiɛyɛ́, oóli ú kándíɛ!ɔnsúmbɔl, oóli ú kátátúɛ\x17mesiŋ, " + - "oóli ú kénie\x1aensil, oóli ú kátánuɛ\x06ɔsɔn\x05efute\x07pisuyú\x0eimɛŋ" + - " i puɔs!imɛŋ i putúk,oóli ú kátíɛ\x0amakandikɛ\x0bpilɔndɔ́\x02sd\x02md" + - "\x02mw\x02et\x02kl\x02fl\x02ss\x0asɔ́ndiɛ\x07móndie\x11muányáŋmóndie\x0e" + - "metúkpíápɛ\x14kúpélimetúkpiapɛ\x07feléte\x08séselé\x0bndátúɛ 1\x0bndátúɛ" + - " 2\x0bndátúɛ 3\x0bndátúɛ 4\x0ckiɛmɛ́ɛm\x0bkisɛ́ndɛ\x13katikupíen Yésuse" + - "\x16ékélémkúnupíén n\x0akipéŋén\x07yɔɔŋ\x05oóli\x0bpuɔ́sɛ́\x07púyoó\x06í" + - "naan\x09nakinyám\x16metúk mɔ́sɔ́ndiɛ\x18kiɛmɛ́ɛm,kisɛ́ndɛ\x09kisikɛl," + - "\x06minít\x07síkɛn\x1dkinúki kisikɛl ɔ́ pitɔŋ\x10יאַנואַר\x12פֿעברואַר" + - "\x08מערץ\x0eאַפּריל\x06מיי\x08יוני\x08יולי\x0eאויגוסט\x14סעפּטעמבער\x0eא" + - "קטאבער\x12נאוועמבער\x10דעצעמבער\x08יאַנ\x08פֿעב\x0aאַפּר\x08אויג\x08סעפ" + - "ּ\x06אקט\x08נאוו\x06דעצ\x0cזונטיק\x0eמאָנטיק\x0eדינסטיק\x0eמיטוואך\x12ד" + - "אנערשטיק\x10פֿרײַטיק\x06שבת\x16פֿאַרמיטאָג\x14נאָכמיטאָג\x12EEEE, dטן M" + - "MMM y\x0cdטן MMMM y\x0bdטן MMM y\x04תש\x04חש\x04כס\x04טב\x04שב\x04אא\x04" + - "אד\x03א2\x04ני\x04אי\x04סי\x04תמ\x04אב\x04אל\x04אב\x0cתקופֿה\x08יאָר" + - "\x16פֿאַראַיאָר\x0fהײַ יאָר\x16איבער א יאָר\x17איבער {0} יאָר\x17פֿאַר {" + - "0} יאָר\x0cמאנאַט#פֿאַרגאנגענעם חודש\x0fדעם חודש\x1bקומענדיקן חודש\x17אי" + - "בער {0} חודש\x19איבער {0} חדשים\x17פֿאַר {0} חודש\x19פֿאַר {0} חדשים" + - "\x08וואך\x08טאָג\x0aנעכטן\x0aהיינט\x0aמארגן\x1eאין {0} טאָג אַרום\x1cאין" + - " {0} טעג אַרום\x1fטאָג אין דער וואך\x0aמינוט\x0eסעקונדע\x10צײַטזאנע\x0eṢ" + - "ẹ́rẹ́\x08Èrèlè\x0cẸrẹ̀nà\x06Ìgbé\x09Ẹ̀bibi\x07Òkúdu\x09Agẹmọ\x06Ògún" + - "\x05Owewe\x0bỌ̀wàrà\x06Bélú\x0bỌ̀pẹ̀\x15Oṣù Ṣẹ́rẹ́\x0fOṣù Èrèlè\x13Oṣù Ẹ" + - "rẹ̀nà\x0dOṣù Ìgbé\x10Oṣù Ẹ̀bibi\x0eOṣù Òkúdu\x10Oṣù Agẹmọ\x0dOṣù Ògún" + - "\x0cOṣù Owewe\x12Oṣù Ọ̀wàrà\x0dOṣù Bélú\x12Oṣù Ọ̀pẹ̀\x07Àìkú\x04Ajé\x0bÌ" + - "sẹ́gun\x0cỌjọ́rú\x0dỌjọ́bọ\x06Ẹtì\x0dÀbámẹ́ta\x11Ọjọ́ Àìkú\x0eỌjọ́ Ajé" + - "\x15Ọjọ́ Ìsẹ́gun\x10Ọjọ́ Ẹtì\x17Ọjọ́ Àbámẹ́ta\x11Kọ́tà Kínní\x0fKọ́tà Ke" + - "jì\x0dKọ́à Keta\x11Kọ́tà Kẹrin\x0aÀárọ̀\x09Ọ̀sán\x0bSaju Kristi\x0cLehin" + - " Kristi\x06Ìgbà\x07Ọdún\x04Osù\x08Ọ̀sè\x09Ọjọ́\x08íjẹta\x05Àná\x05Òní" + - "\x07Ọ̀la\x0aòtúùnla\x15Ọjọ́ Ọ̀sẹ̀\x14Àárọ̀/ọ̀sán\x09wákàtí\x0bÌsẹ́jú\x13" + - "Ìsẹ́jú Ààyá\x16Ibi Àkókò Àgbáyé\x0bShɛ́rɛ́\x0aƐrɛ̀nà\x08Ɛ̀bibi\x07Agɛmɔ" + - "\x0aƆ̀wàrà\x09Ɔ̀pɛ̀\x11Oshù Shɛ́rɛ́\x0eOshù Èrèlè\x10Oshù Ɛrɛ̀nà\x0cOshù" + - " Ìgbé\x0eOshù Ɛ̀bibi\x0dOshù Òkúdu\x0dOshù Agɛmɔ\x0cOshù Ògún\x0bOshù Ow" + - "ewe\x10Oshù Ɔ̀wàrà\x0cOshù Bélú\x0fOshù Ɔ̀pɛ̀\x0aÌsɛ́gun\x0aƆjɔ́rú\x0aƆj" + - "ɔ́bɔ\x05Ɛtì\x0cÀbámɛ́ta\x0fƆjɔ́ Àìkú\x0cƆjɔ́ Ajé\x12Ɔjɔ́ Ìsɛ́gun\x0dƆjɔ" + - "́ Ɛtì\x14Ɔjɔ́ Àbámɛ́ta\x10Kɔ́tà Kínní\x0eKɔ́tà Kejì\x0cKɔ́à Keta\x0fKɔ́" + - "tà Kɛrin\x09Àárɔ̀\x08Ɔ̀sán\x06Ɔdún\x07Ɔ̀sè\x07Ɔjɔ́\x07íjɛta\x06Ɔ̀la\x11Ɔ" + - "jɔ́ Ɔ̀sɛ̀\x12Àárɔ̀/ɔ̀sán\x0aÌsɛ́jú\x12Ìsɛ́jú Ààyá\x06佛曆\x11U (r) 年MMMdEE" + - "EE\x0dU (r) 年MMMd\x08r年MMMd\x05r/M/d\x05U/M/d\x13G y年M月d日 EEEE\x0eG y年M月" + - "d日\x07G y/M/d\x06{1}{0}\x06週日\x06週一\x06週二\x06週三\x06週四\x06週五\x06週六\x09星期日" + - "\x09星期一\x09星期二\x09星期三\x09星期四\x09星期五\x09星期六\x07第1季\x07第2季\x07第3季\x07第4季" + - "\x06午夜\x06上午\x06下午\x06清晨\x06朝早\x06中午\x06下晝\x06夜晚\x06凌晨\x09西元前\x09公元前\x06" + - "西元\x06公元\x11y年M月d日 EEEE\x0fah:mm:ss [zzzz]\x0cah:mm:ss [z]\x08ah:mm:ss" + - "\x05ah:mm\x0c提斯利月\x0c瑪西班月\x0c基斯流月\x09提別月\x0c細罷特月\x0b亞達月 I\x09亞達月\x0c亞達月 " + - "II\x09尼散月\x09以珥月\x09西彎月\x0c搭模斯月\x09埃波月\x09以祿月\x0c創世紀元\x0c制檀邏月\x0c吠舍佉月" + - "\x0c逝瑟吒月\x0c頞沙荼月\x0f室羅伐拏月\x0f婆羅鉢陀月\x12頞涇縛庚闍月\x0f迦剌底迦月\x0f末伽始羅月\x09報沙月" + - "\x09磨祛月\x0f頗勒窶拏月\x09印度曆\x0f穆哈蘭姆月\x0c色法爾月\x0b賴比月 I\x0c賴比月 II\x0e主馬達月 I" + - "\x0f主馬達月 II\x0c賴哲卜月\x0c舍爾邦月\x0c賴買丹月\x0c閃瓦魯月\x12都爾喀爾德月\x0f都爾黑哲月\x0c伊斯蘭曆" + - "\x09波斯曆\x09民國前\x06民國\x12Gy年M月d日 EEEE\x06年代\x06舊年\x06今年\x06下年\x03季\x09上一季" + - "\x06今季\x09下一季\x0a{0} 季後\x0a{0} 季前\x06上季\x06下季\x09上個月\x09今個月\x09下個月\x0d{0" + - "} 個月後\x0d{0} 個月前\x09上星期\x0c今個星期\x09下星期\x10{0} 個星期後\x10{0} 個星期前\x0c{0}嘅星期" + - "\x06前天\x06尋日\x06今日\x06聽日\x06後天\x06週天\x0c上星期日\x0f今個星期日\x0c下星期日\x13{0} 個星期" + - "日後\x13{0} 個星期日前\x0c上星期一\x0f今個星期一\x0c下星期一\x13{0} 個星期一後\x13{0} 個星期一前\x0c" + - "上星期二\x0f今個星期二\x0c下星期二\x13{0} 個星期二後\x13{0} 個星期二前\x0c上星期三\x0f今個星期三\x0c下星" + - "期三\x13{0} 個星期三後\x13{0} 個星期三前\x0c上星期四\x0f今個星期四\x0c下星期四\x13{0} 個星期四後\x13" + - "{0} 個星期四前\x0c上星期五\x0f今個星期五\x0c下星期五\x13{0} 個星期五後\x13{0} 個星期五前\x0c上星期六\x0f" + - "今個星期六\x0c下星期六\x13{0} 個星期六後\x13{0} 個星期六前\x0d上午/下午\x06小時\x0c呢個小時\x0d{0} " + - "小時後\x0d{0} 小時前\x06分鐘\x09呢分鐘\x0d{0} 分鐘後\x0d{0} 分鐘前\x06宜家\x06時區\x12英國夏令時" + - "間\x15愛爾蘭標準時間\x0c艾克時間\x12艾克標準時間\x12艾克夏令時間\x0f阿富汗時間\x0c中非時間\x0c東非時間\x12南" + - "非標準時間\x0c西非時間\x12西非標準時間\x12西非夏令時間\x12阿拉斯加時間\x18阿拉斯加標準時間\x18阿拉斯加夏令時間" + - "\x12阿拉木圖時間\x18阿拉木圖標準時間\x18阿拉木圖夏令時間\x0f亞馬遜時間\x15亞馬遜標準時間\x15亞馬遜夏令時間\x0c中部時" + - "間\x12中部標準時間\x12中部夏令時間\x0c東部時間\x12東部標準時間\x12東部夏令時間\x0c山區時間\x12山區標準時間" + - "\x12山區夏令時間\x0f太平洋時間\x15太平洋標準時間\x15太平洋夏令時間\x12阿納德爾時間\x18阿那底河標準時間\x18阿那底河夏" + - "令時間\x0f阿皮亞時間\x15阿皮亞標準時間\x15阿皮亞夏令時間\x0f阿克陶時間\x15阿克陶標準時間\x15阿克陶夏令時間\x12阿" + - "克托比時間\x18阿克托比標準時間\x18阿克托比夏令時間\x0f阿拉伯時間\x15阿拉伯標準時間\x15阿拉伯夏令時間\x0f阿根廷時間" + - "\x15阿根廷標準時間\x15阿根廷夏令時間\x15阿根廷西部時間\x1b阿根廷西部標準時間\x1b阿根廷西部夏令時間\x12亞美尼亞時間" + - "\x18亞美尼亞標準時間\x18亞美尼亞夏令時間\x0f大西洋時間\x15大西洋標準時間\x15大西洋夏令時間\x12澳洲中部時間\x18澳洲中" + - "部標準時間\x18澳洲中部夏令時間\x15澳洲中西部時間\x1b澳洲中西部標準時間\x1b澳洲中西部夏令時間\x12澳洲東部時間\x18澳洲" + - "東部標準時間\x18澳洲東部夏令時間\x12澳洲西部時間\x18澳洲西部標準時間\x18澳洲西部夏令時間\x12亞塞拜然時間\x18亞塞拜然" + - "標準時間\x18亞塞拜然夏令時間\x15亞速爾群島時間\x1b亞速爾群島標準時間\x1b亞速爾群島夏令時間\x0f孟加拉時間\x15孟加拉標" + - "準時間\x15孟加拉夏令時間\x0c不丹時間\x12玻利維亞時間\x12巴西利亞時間\x18巴西利亞標準時間\x18巴西利亞夏令時間\x0c" + - "汶萊時間\x0f維德角時間\x15維德角標準時間\x15維德角夏令時間\x0f凱西站時間\x0f查莫洛時間\x12查坦群島時間\x18查坦群" + - "島標準時間\x18查坦群島夏令時間\x0c智利時間\x12智利標準時間\x12智利夏令時間\x0c中國時間\x12中國標準時間\x12中國夏" + - "令時間\x0f喬巴山時間\x15喬巴山標準時間\x15喬巴山夏令時間\x0f聖誕島時間\x15科科斯群島時間\x12哥倫比亞時間\x18哥倫" + - "比亞標準時間\x18哥倫比亞夏令時間\x12庫克群島時間\x18庫克群島標準時間\x1b庫克群島半夏令時間\x0c古巴時間\x12古巴標準時" + - "間\x12古巴夏令時間\x0f戴維斯時間\x15杜蒙杜比爾時間\x0f東帝汶時間\x12復活節島時間\x18復活節島標準時間\x18復活節島" + - "夏令時間\x0f厄瓜多時間\x0c中歐時間\x12中歐標準時間\x12中歐夏令時間\x0c東歐時間\x12東歐標準時間\x12東歐夏令時間" + - "\x12歐洲遠東時間\x0c西歐時間\x12西歐標準時間\x12西歐夏令時間\x15福克蘭群島時間\x1b福克蘭群島標準時間\x1b福克蘭群島夏" + - "令時間\x0c斐濟時間\x12斐濟標準時間\x12斐濟夏令時間\x15法屬圭亞那時間\x1b法國南方及南極時間\x18加拉巴哥群島時間" + - "\x15甘比爾群島時間\x0f喬治亞時間\x15喬治亞標準時間\x15喬治亞夏令時間\x18吉爾伯特群島時間\x18格林威治標準時間\x15格陵" + - "蘭東部時間\x1b格陵蘭東部標準時間\x1b格陵蘭東部夏令時間\x15格陵蘭西部時間\x1b格陵蘭西部標準時間\x1b格陵蘭西部夏令時間" + - "\x12關島標準時間\x1b波斯灣海域標準時間\x0f蓋亞那時間\x19夏威夷-阿留申時間\x1f夏威夷-阿留申標準時間\x1f夏威夷-阿留申夏" + - "令時間\x0c香港時間\x12香港標準時間\x12香港夏令時間\x0f科布多時間\x15科布多標準時間\x15科布多夏令時間\x12印度標準" + - "時間\x0f印度洋時間\x12印度支那時間\x12印尼中部時間\x12印尼東部時間\x12印尼西部時間\x0c伊朗時間\x12伊朗標準時間" + - "\x12伊朗夏令時間\x15伊爾庫次克時間\x1b伊爾庫次克標準時間\x1b伊爾庫次克夏令時間\x0f以色列時間\x15以色列標準時間\x15以" + - "色列夏令時間\x0c日本時間\x12日本標準時間\x12日本夏令時間!彼得羅巴甫洛夫斯克時間'彼得羅巴甫洛夫斯克標準時間-彼得羅巴甫洛夫斯克" + - "日光節約時間\x12東哈薩克時間\x12西哈薩克時間\x0c韓國時間\x12韓國標準時間\x12韓國夏令時間\x0f科斯瑞時間\x1e克拉斯" + - "諾亞爾斯克時間$克拉斯諾亞爾斯克標準時間$克拉斯諾亞爾斯克夏令時間\x12吉爾吉斯時間\x0c蘭卡時間\x12萊恩群島時間\x12豪勳爵島時" + - "間\x18豪勳爵島標準時間\x18豪勳爵島夏令時間\x0c澳門時間\x12澳門標準時間\x12澳門夏令時間\x0f麥覺理時間\x0f馬加丹時" + - "間\x15馬加丹標準時間\x15馬加丹夏令時間\x12馬來西亞時間\x12馬爾地夫時間\x12馬可薩斯時間\x15馬紹爾群島時間\x12模里" + - "西斯時間\x18模里西斯標準時間\x18模里西斯夏令時間\x0c莫森時間\x18墨西哥西北部時間\x1e墨西哥西北部標準時間\x1e墨西哥西" + - "北部夏令時間\x18墨西哥太平洋時間\x1e墨西哥太平洋標準時間\x1e墨西哥太平洋夏令時間\x12烏蘭巴托時間\x18烏蘭巴托標準時間" + - "\x18烏蘭巴托夏令時間\x0f莫斯科時間\x15莫斯科標準時間\x15莫斯科夏令時間\x0c緬甸時間\x0c諾魯時間\x0f尼泊爾時間\x18" + - "新喀里多尼亞時間\x1e新喀里多尼亞標準時間$新喀里多尼亞群島夏令時間\x0f紐西蘭時間\x15紐西蘭標準時間\x15紐西蘭夏令時間\x0f" + - "紐芬蘭時間\x15紐芬蘭標準時間\x15紐芬蘭夏令時間\x0f紐埃島時間\x12諾福克島時間$費爾南多 - 迪諾羅尼亞時間*費爾南多 - 迪" + - "諾羅尼亞標準時間*費爾南多 - 迪諾羅尼亞夏令時間\x1b北馬里亞納群島時間\x15新西伯利亞時間\x1b新西伯利亞標準時間\x1b新西伯利" + - "亞夏令時間\x12鄂木斯克時間\x18鄂木斯克標準時間\x18鄂木斯克夏令時間\x12巴基斯坦時間\x18巴基斯坦標準時間\x18巴基斯坦夏" + - "令時間\x0c帛琉時間\x1b巴布亞紐幾內亞時間\x0f巴拉圭時間\x15巴拉圭標準時間\x15巴拉圭夏令時間\x0c秘魯時間\x12秘魯標" + - "準時間\x12秘魯夏令時間\x0f菲律賓時間\x15菲律賓標準時間\x15菲律賓夏令時間\x12鳳凰群島時間$聖皮埃爾和密克隆群島時間*聖皮" + - "埃爾和密克隆群島標準時間*聖皮埃爾和密克隆群島夏令時間\x0f皮特肯時間\x0f波納佩時間\x18克孜勒奧爾達時間\x1e克孜勒奧爾達標準時" + - "間\x1e克孜勒奧爾達夏令時間\x0f留尼旺時間\x0f羅瑟拉時間\x0f庫頁島時間\x15庫頁島標準時間\x15庫頁島夏令時間\x0f薩馬" + - "拉時間\x15薩馬拉標準時間\x15薩馬拉夏令時間\x0f薩摩亞時間\x15薩摩亞標準時間\x15薩摩亞夏令時間\x0f塞席爾時間\x15新" + - "加坡標準時間\x15索羅門群島時間\x12南喬治亞時間\x0f蘇利南時間\x12昭和基地時間\x0f大溪地時間\x0c台北時間\x12台北標" + - "準時間\x12台北夏令時間\x0f塔吉克時間\x15托克勞群島時間\x0c東加時間\x12東加標準時間\x12東加夏令時間\x0f楚克島時間" + - "\x0f土庫曼時間\x15土庫曼標準時間\x15土庫曼夏令時間\x0f吐瓦魯時間\x0f烏拉圭時間\x15烏拉圭標準時間\x15烏拉圭夏令時間" + - "\x12烏茲別克時間\x18烏茲別克標準時間\x18烏茲別克夏令時間\x0f萬那杜時間\x15萬那杜標準時間\x15萬那杜夏令時間\x12委內瑞" + - "拉時間\x0f海參崴時間\x15海參崴標準時間\x15海參崴夏令時間\x15伏爾加格勒時間\x1b伏爾加格勒標準時間\x1b伏爾加格勒夏令時" + - "間\x12沃斯托克時間\x0f威克島時間!瓦利斯和富圖納群島時間\x12雅庫次克時間\x18雅庫次克標準時間\x18雅庫次克夏令時間\x15" + - "葉卡捷琳堡時間\x1b葉卡捷琳堡標準時間\x1b葉卡捷琳堡夏令時間\x06昨天\x06今天\x06明天\x06后天\x09這一季\x06本月" + - "\x0c平壤時間\x09本星期\x0c本星期日\x0c本星期一\x0c本星期二\x0c本星期三\x0c本星期四\x0c本星期五\x0c本星期六" + - "\x18北美東部夏令時間\x18北美山區夏令時間\x1b北美太平洋夏令時間\x18亞塞拜疆夏令時間\x15佛得角夏令時間\x18格魯吉亞夏令時間" + - "\x1b伊爾庫茨克夏令時間\x18毛里裘斯夏令時間\x1e新喀里多尼亞夏令時間'費爾南多迪諾羅尼亞夏令時間\x12湯加夏令時間\x18瓦努阿圖夏" + - "令時間\x18雅庫茨克夏令時間" - -var bucket110 string = "" + // Size: 8518 bytes - "\x06佛历\x06Gy-M-d\x06闰{0}\x0drU年MMMdEEEE\x09rU年MMMd\x06一月\x06二月\x06三月\x06" + - "四月\x06五月\x06六月\x06七月\x06八月\x06九月\x06十月\x09十一月\x09十二月\x09十三月\x0f科普特历前" + - "\x0c科普特历\x15埃塞俄比亚历前\x12埃塞俄比亚历$埃塞俄比亚阿米特阿莱姆历\x12Gy年MM月d日EEEE\x0eGy年MM月d日" + - "\x06周日\x06周一\x06周二\x06周三\x06周四\x06周五\x06周六\x071季度\x072季度\x073季度\x074季度" + - "\x0c第一季度\x0c第二季度\x0c第三季度\x0c第四季度\x06晚上\x06早上\x0dzzzz ah:mm:ss\x0az ah:mm" + - ":ss\x09闰七月\x0c希伯来历\x09印度历\x0c伊斯兰历\x12大化 (645–650)\x12白雉 (650–671)\x12白凤 " + - "(672–686)\x12朱鸟 (686–701)\x12大宝 (701–704)\x12庆云 (704–708)\x12和铜 (708–715" + - ")\x12灵龟 (715–717)\x12养老 (717–724)\x12神龟 (724–729)\x12天平 (729–749)\x18天平感" + - "宝 (749–749)\x18天平胜宝 (749–757)\x18天平宝字 (757–765)\x18天平神护 (765–767)\x18神" + - "护景云 (767–770)\x12宝龟 (770–780)\x12天应 (781–782)\x12延历 (782–806)\x12大同 (8" + - "06–810)\x12弘仁 (810–824)\x12天长 (824–834)\x12承和 (834–848)\x12嘉祥 (848–851)" + - "\x12仁寿 (851–854)\x12齐衡 (854–857)\x12天安 (857–859)\x12贞观 (859–877)\x12元庆 (" + - "877–885)\x12仁和 (885–889)\x12宽平 (889–898)\x12昌泰 (898–901)\x12延喜 (901–923)" + - "\x12延长 (923–931)\x12承平 (931–938)\x12天庆 (938–947)\x12天历 (947–957)\x12天德 (" + - "957–961)\x12应和 (961–964)\x12康保 (964–968)\x12安和 (968–970)\x12天禄 (970–973)" + - "\x12天延 (973–976)\x12贞元 (976–978)\x12天元 (978–983)\x12永观 (983–985)\x12宽和 (" + - "985–987)\x12永延 (987–989)\x12永祚 (989–990)\x12正历 (990–995)\x12长德 (995–999)" + - "\x13长保 (999–1004)\x14宽弘 (1004–1012)\x14长和 (1012–1017)\x14宽仁 (1017–1021)" + - "\x14治安 (1021–1024)\x14万寿 (1024–1028)\x14长元 (1028–1037)\x14长历 (1037–1040)" + - "\x14长久 (1040–1044)\x14宽德 (1044–1046)\x14永承 (1046–1053)\x14天喜 (1053–1058)" + - "\x14康平 (1058–1065)\x14治历 (1065–1069)\x14延久 (1069–1074)\x14承保 (1074–1077)" + - "\x14正历 (1077–1081)\x14永保 (1081–1084)\x14应德 (1084–1087)\x14宽治 (1087–1094)" + - "\x14嘉保 (1094–1096)\x14永长 (1096–1097)\x14承德 (1097–1099)\x14康和 (1099–1104)" + - "\x14长治 (1104–1106)\x14嘉承 (1106–1108)\x14天仁 (1108–1110)\x14天永 (1110–1113)" + - "\x14永久 (1113–1118)\x14元永 (1118–1120)\x14保安 (1120–1124)\x14天治 (1124–1126)" + - "\x14大治 (1126–1131)\x14天承 (1131–1132)\x14长承 (1132–1135)\x14保延 (1135–1141)" + - "\x14永治 (1141–1142)\x14康治 (1142–1144)\x14天养 (1144–1145)\x14久安 (1145–1151)" + - "\x14仁平 (1151–1154)\x14久寿 (1154–1156)\x14保元 (1156–1159)\x14平治 (1159–1160)" + - "\x14永历 (1160–1161)\x14应保 (1161–1163)\x14长宽 (1163–1165)\x14永万 (1165–1166)" + - "\x14仁安 (1166–1169)\x14嘉应 (1169–1171)\x14承安 (1171–1175)\x14安元 (1175–1177)" + - "\x14治承 (1177–1181)\x14养和 (1181–1182)\x14寿永 (1182–1184)\x14元历 (1184–1185)" + - "\x14文治 (1185–1190)\x14建久 (1190–1199)\x14正治 (1199–1201)\x14建仁 (1201–1204)" + - "\x14元久 (1204–1206)\x14建永 (1206–1207)\x14承元 (1207–1211)\x14建历 (1211–1213)" + - "\x14建保 (1213–1219)\x14承久 (1219–1222)\x14贞应 (1222–1224)\x14元仁 (1224–1225)" + - "\x14嘉禄 (1225–1227)\x14安贞 (1227–1229)\x14宽喜 (1229–1232)\x14贞永 (1232–1233)" + - "\x14天福 (1233–1234)\x14文历 (1234–1235)\x14嘉祯 (1235–1238)\x14历仁 (1238–1239)" + - "\x14延应 (1239–1240)\x14仁治 (1240–1243)\x14宽元 (1243–1247)\x14宝治 (1247–1249)" + - "\x14建长 (1249–1256)\x14康元 (1256–1257)\x14正嘉 (1257–1259)\x14正元 (1259–1260)" + - "\x14文应 (1260–1261)\x14弘长 (1261–1264)\x14文永 (1264–1275)\x14建治 (1275–1278)" + - "\x14弘安 (1278–1288)\x14正应 (1288–1293)\x14永仁 (1293–1299)\x14正安 (1299–1302)" + - "\x14干元 (1302–1303)\x14嘉元 (1303–1306)\x14德治 (1306–1308)\x14延庆 (1308–1311)" + - "\x14应长 (1311–1312)\x14正和 (1312–1317)\x14文保 (1317–1319)\x14元应 (1319–1321)" + - "\x14元亨 (1321–1324)\x14正中 (1324–1326)\x14嘉历 (1326–1329)\x14元德 (1329–1331)" + - "\x14元弘 (1331–1334)\x14建武 (1334–1336)\x14延元 (1336–1340)\x14兴国 (1340–1346)" + - "\x14正平 (1346–1370)\x14建德 (1370–1372)\x14文中 (1372–1375)\x14天授 (1375–1379)" + - "\x14康历 (1379–1381)\x14弘和 (1381–1384)\x14元中 (1384–1392)\x14至德 (1384–1387)" + - "\x14嘉庆 (1387–1389)\x14康应 (1389–1390)\x14明德 (1390–1394)\x14应永 (1394–1428)" + - "\x14正长 (1428–1429)\x14永享 (1429–1441)\x14嘉吉 (1441–1444)\x14文安 (1444–1449)" + - "\x14宝德 (1449–1452)\x14享德 (1452–1455)\x14康正 (1455–1457)\x14长禄 (1457–1460)" + - "\x14宽正 (1460–1466)\x14文正 (1466–1467)\x14应仁 (1467–1469)\x14文明 (1469–1487)" + - "\x14长享 (1487–1489)\x14延德 (1489–1492)\x14明应 (1492–1501)\x14文龟 (1501–1504)" + - "\x14永正 (1504–1521)\x14大永 (1521–1528)\x14享禄 (1528–1532)\x14天文 (1532–1555)" + - "\x14弘治 (1555–1558)\x14永禄 (1558–1570)\x14元龟 (1570–1573)\x14天正 (1573–1592)" + - "\x14文禄 (1592–1596)\x14庆长 (1596–1615)\x14元和 (1615–1624)\x14宽永 (1624–1644)" + - "\x14正保 (1644–1648)\x14庆安 (1648–1652)\x14承应 (1652–1655)\x14明历 (1655–1658)" + - "\x14万治 (1658–1661)\x14宽文 (1661–1673)\x14延宝 (1673–1681)\x14天和 (1681–1684)" + - "\x14贞享 (1684–1688)\x14元禄 (1688–1704)\x14宝永 (1704–1711)\x14正德 (1711–1716)" + - "\x14享保 (1716–1736)\x14元文 (1736–1741)\x14宽保 (1741–1744)\x14延享 (1744–1748)" + - "\x14宽延 (1748–1751)\x14宝历 (1751–1764)\x14明和 (1764–1772)\x14安永 (1772–1781)" + - "\x14天明 (1781–1789)\x14宽政 (1789–1801)\x14享和 (1801–1804)\x14文化 (1804–1818)" + - "\x14文政 (1818–1830)\x14天保 (1830–1844)\x14弘化 (1844–1848)\x14嘉永 (1848–1854)" + - "\x14安政 (1854–1860)\x14万延 (1860–1861)\x14文久 (1861–1864)\x14元治 (1864–1865)" + - "\x14庆应 (1865–1868)\x06明治\x06大正\x06昭和\x06平成\x11大化(645–650)\x11白雉(650–671)" + - "\x11白凤(672–686)\x11朱鸟(686–701)\x11大宝(701–704)\x11庆云(704–708)\x11和铜(708–7" + - "15)\x11灵龟(715–717)\x11养老(717–724)\x11神龟(724–729)\x11天平(729–749)\x17天平感宝(" + - "749–749)\x17天平胜宝(749–757)\x17天平宝字(757–765)\x17天平神护(765–767)\x17神护景云(767–" + - "770)\x11宝龟(770–780)\x11天应(781–782)\x11延历(782–806)\x11大同(806–810)\x11弘仁(8" + - "10–824)\x11天长(824–834)\x11承和(834–848)\x11嘉祥(848–851)\x11仁寿(851–854)\x11齐" + - "衡(854–857)\x11天安(857–859)\x11贞观(859–877)\x11元庆(877–885)\x11仁和(885–889)" + - "\x11宽平(889–898)\x11昌泰(898–901)\x11延喜(901–923)\x11延长(923–931)\x11承平(931–9" + - "38)\x11天庆(938–947)\x11天历(947–957)\x11天德(957–961)\x11应和(961–964)\x11康保(96" + - "4–968)\x11安和(968–970)\x11天禄(970–973)\x11天延(973–976)\x11贞元(976–978)\x11天元" + - "(978–983)\x11永观(983–985)\x11宽和(985–987)\x11永延(987–989)\x11永祚(989–990)" + - "\x11正历(990–995)\x11长德(995–999)\x12长保(999–1004)\x13宽弘(1004–1012)\x13长和(10" + - "12–1017)\x13宽仁(1017–1021)\x13治安(1021–1024)\x13万寿(1024–1028)\x13长元(1028–1" + - "037)\x13长历(1037–1040)\x13长久(1040–1044)\x13宽德(1044–1046)\x13永承(1046–1053)" + - "\x13天喜(1053–1058)\x13康平(1058–1065)\x13治历(1065–1069)\x13延久(1069–1074)\x13" + - "承保(1074–1077)\x13承历(1077–1081)\x13永保(1081–1084)\x13应德(1084–1087)\x13宽治" + - "(1087–1094)\x13嘉保(1094–1096)\x13永长(1096–1097)\x13承德(1097–1099)\x13康和(109" + - "9–1104)\x13长治(1104–1106)\x13嘉承(1106–1108)\x13天仁(1108–1110)\x13天永(1110–11" + - "13)\x13永久(1113–1118)\x13元永(1118–1120)\x13保安(1120–1124)\x13天治(1124–1126)" + - "\x13大治(1126–1131)\x13天承(1131–1132)\x13长承(1132–1135)\x13保延(1135–1141)\x13" + - "永治(1141–1142)\x13康治(1142–1144)\x13天养(1144–1145)\x13久安(1145–1151)\x13仁平" + - "(1151–1154)\x13久寿(1154–1156)\x13保元(1156–1159)\x13平治(1159–1160)\x13永历(116" + - "0–1161)\x13应保(1161–1163)\x13长宽(1163–1165)\x13永万(1165–1166)\x13仁安(1166–11" + - "69)\x13嘉应(1169–1171)\x13承安(1171–1175)\x13安元(1175–1177)\x13治承(1177–1181)" + - "\x13养和(1181–1182)\x13寿永(1182–1184)\x13元历(1184–1185)\x13文治(1185–1190)\x13" + - "建久(1190–1199)\x13正治(1199–1201)\x13建仁(1201–1204)\x13元久(1204–1206)\x13建永" + - "(1206–1207)\x13承元(1207–1211)\x13建历(1211–1213)\x13建保(1213–1219)\x13承久(121" + - "9–1222)\x13贞应(1222–1224)\x13元仁(1224–1225)\x13嘉禄(1225–1227)\x13安贞(1227–12" + - "29)\x13宽喜(1229–1232)\x13贞永(1232–1233)\x13天福(1233–1234)\x13文历(1234–1235)" + - "\x13嘉祯(1235–1238)\x13历仁(1238–1239)\x13延应(1239–1240)\x13仁治(1240–1243)\x13" + - "宽元(1243–1247)\x13宝治(1247–1249)\x13建长(1249–1256)\x13康元(1256–1257)\x13正嘉" + - "(1257–1259)\x13正元(1259–1260)\x13文应(1260–1261)\x13弘长(1261–1264)\x13文永(126" + - "4–1275)\x13建治(1275–1278)\x13弘安(1278–1288)\x13正应(1288–1293)\x13永仁(1293–12" + - "99)\x13正安(1299–1302)\x13乾元(1302–1303)\x13嘉元(1303–1306)\x13德治(1306–1308)" + - "\x13延庆(1308–1311)\x13应长(1311–1312)\x13正和(1312–1317)\x13文保(1317–1319)\x13" + - "元应(1319–1321)\x13元亨(1321–1324)\x13正中(1324–1326)\x13嘉历(1326–1329)\x13元德" + - "(1329–1331)\x13元弘(1331–1334)\x13建武(1334–1336)\x13延元(1336–1340)\x13兴国(134" + - "0–1346)\x13正平(1346–1370)\x13建德(1370–1372)\x13文中(1372–1375)\x13天授(1375–13" + - "79)" - -var bucket111 string = "" + // Size: 8319 bytes - "\x09Gyy-MM-dd\x09波斯历\x07Gyy/M/d\x06纪元\x06去年\x06今年\x06明年\x09{0}年后\x06季度" + - "\x09上季度\x09本季度\x09下季度\x0f{0}个季度后\x0f{0}个季度前\x09上个月\x06本月\x09下个月\x0c{0}个月" + - "后\x0c{0}个月前\x03周\x06上周\x06本周\x06下周\x09{0}周后\x09{0}周前\x09{0}这周\x09{0}天后" + - "\x09{0}天前\x09工作日\x09上周日\x09本周日\x09下周日\x0f{0}个周日后\x0f{0}个周日前\x09上周一\x09本周" + - "一\x09下周一\x0f{0}个周一后\x0f{0}个周一前\x09上周二\x09本周二\x09下周二\x0f{0}个周二后\x0f{0}个" + - "周二前\x09上周三\x09本周三\x09下周三\x0f{0}个周三后\x0f{0}个周三前\x09上周四\x09本周四\x09下周四" + - "\x0f{0}个周四后\x0f{0}个周四前\x09上周五\x09本周五\x09下周五\x0f{0}个周五后\x0f{0}个周五前\x09上周六" + - "\x09本周六\x09下周六\x0f{0}个周六后\x0f{0}个周六前\x06小时\x15这一时间 / 此时\x0c{0}小时后\x0c{0}" + - "小时前\x06分钟\x06此刻\x0c{0}分钟后\x0c{0}分钟前\x06现在\x0c{0}秒钟后\x0c{0}秒钟前\x09{0}秒后" + - "\x06时区\x09{0}时间\x0f{0}夏令时间\x0f{0}标准时间\x0f协调世界时\x12英国夏令时间\x15爱尔兰标准时间\x0f阿" + - "克里时间\x15阿克里标准时间\x15阿克里夏令时间\x0f阿富汗时间\x12中部非洲时间\x12东部非洲时间\x12南部非洲时间\x12西" + - "部非洲时间\x18西部非洲标准时间\x18西部非洲夏令时间\x12阿拉斯加时间\x18阿拉斯加标准时间\x18阿拉斯加夏令时间\x12阿拉木" + - "图时间\x18阿拉木图标准时间\x18阿拉木图夏令时间\x0f亚马逊时间\x15亚马逊标准时间\x15亚马逊夏令时间\x12北美中部时间" + - "\x18北美中部标准时间\x18北美中部夏令时间\x12北美东部时间\x18北美东部标准时间\x18北美东部夏令时间\x12北美山区时间\x18" + - "北美山区标准时间\x18北美山区夏令时间\x15北美太平洋时间\x1b北美太平洋标准时间\x1b北美太平洋夏令时间\x12阿纳德尔时间" + - "\x18阿纳德尔标准时间\x18阿纳德尔夏令时间\x0f阿皮亚时间\x15阿皮亚标准时间\x15阿皮亚夏令时间\x0f阿克套时间\x15阿克套标" + - "准时间\x15阿克套夏令时间\x12阿克托别时间\x18阿克托别标准时间\x18阿克托别夏令时间\x0f阿拉伯时间\x15阿拉伯标准时间" + - "\x15阿拉伯夏令时间\x0f阿根廷时间\x15阿根廷标准时间\x15阿根廷夏令时间\x15阿根廷西部时间\x1b阿根廷西部标准时间\x1b阿根" + - "廷西部夏令时间\x12亚美尼亚时间\x18亚美尼亚标准时间\x18亚美尼亚夏令时间\x0f大西洋时间\x15大西洋标准时间\x15大西洋夏令" + - "时间\x18澳大利亚中部时间\x1e澳大利亚中部标准时间\x1e澳大利亚中部夏令时间\x1b澳大利亚中西部时间!澳大利亚中西部标准时间!澳大" + - "利亚中西部夏令时间\x18澳大利亚东部时间\x1e澳大利亚东部标准时间\x1e澳大利亚东部夏令时间\x18澳大利亚西部时间\x1e澳大利亚西" + - "部标准时间\x1e澳大利亚西部夏令时间\x12阿塞拜疆时间\x18阿塞拜疆标准时间\x18阿塞拜疆夏令时间\x15亚速尔群岛时间\x1b亚速" + - "尔群岛标准时间\x1b亚速尔群岛夏令时间\x0f孟加拉时间\x15孟加拉标准时间\x15孟加拉夏令时间\x0c不丹时间\x18玻利维亚标准时" + - "间\x12巴西利亚时间\x18巴西利亚标准时间\x18巴西利亚夏令时间\x18文莱达鲁萨兰时间\x0f佛得角时间\x15佛得角标准时间" + - "\x15佛得角夏令时间\x0c凯西时间\x0f查莫罗时间\x0c查坦时间\x12查坦标准时间\x12查坦夏令时间\x0c智利时间\x12智利标准" + - "时间\x12智利夏令时间\x0c中国时间\x12中国标准时间\x12中国夏令时间\x0f乔巴山时间\x15乔巴山标准时间\x15乔巴山夏令时" + - "间\x0f圣诞岛时间\x15科科斯群岛时间\x12哥伦比亚时间\x18哥伦比亚标准时间\x18哥伦比亚夏令时间\x12库克群岛时间\x18库" + - "克群岛标准时间\x18库克群岛仲夏时间\x0c古巴时间\x12古巴标准时间\x12古巴夏令时间\x0f戴维斯时间\x18迪蒙迪尔维尔时间" + - "\x0f东帝汶时间\x12复活节岛时间\x18复活节岛标准时间\x18复活节岛夏令时间\x18厄瓜多尔标准时间\x0c中欧时间\x12中欧标准时" + - "间\x12中欧夏令时间\x0c东欧时间\x12东欧标准时间\x12东欧夏令时间\x12远东标准时间\x0c西欧时间\x12西欧标准时间" + - "\x12西欧夏令时间\x15福克兰群岛时间\x1b福克兰群岛标准时间\x1b福克兰群岛夏令时间\x0c斐济时间\x12斐济标准时间\x12斐济夏" + - "令时间\x1b法属圭亚那标准时间!法属南方和南极领地时间\x15加拉帕戈斯时间\x0f甘比尔时间\x12格鲁吉亚时间\x18格鲁吉亚标准时间" + - "\x18格鲁吉亚夏令时间\x18吉尔伯特群岛时间\x18格林尼治标准时间\x18格陵兰岛东部时间\x1e格陵兰岛东部标准时间\x1e格陵兰岛东部" + - "夏令时间\x18格陵兰岛西部时间\x1e格陵兰岛西部标准时间\x1e格陵兰岛西部夏令时间\x0c关岛时间\x12海湾标准时间\x0f圭亚那时" + - "间\x19夏威夷-阿留申时间\x1f夏威夷-阿留申标准时间\x1f夏威夷-阿留申夏令时间\x0c香港时间\x12香港标准时间\x12香港夏令" + - "时间\x0f科布多时间\x15科布多标准时间\x15科布多夏令时间\x0c印度时间\x0f印度洋时间\x12印度支那时间\x1b印度尼西亚中" + - "部时间\x1b印度尼西亚东部时间\x1b印度尼西亚西部时间\x0c伊朗时间\x12伊朗标准时间\x12伊朗夏令时间\x15伊尔库茨克时间" + - "\x1b伊尔库茨克标准时间\x1b伊尔库茨克夏令时间\x0f以色列时间\x15以色列标准时间\x15以色列夏令时间\x0c日本时间\x12日本标" + - "准时间\x12日本夏令时间+彼得罗巴甫洛夫斯克-堪察加时间1彼得罗巴甫洛夫斯克-堪察加标准时间1彼得罗巴甫洛夫斯克-堪察加夏令时间\x1b哈" + - "萨克斯坦东部时间\x1b哈萨克斯坦西部时间\x0c韩国时间\x12韩国标准时间\x12韩国夏令时间\x0f科斯雷时间\x1e克拉斯诺亚尔斯克" + - "时间$克拉斯诺亚尔斯克标准时间$克拉斯诺亚尔斯克夏令时间\x18吉尔吉斯斯坦时间\x0c兰卡时间\x12莱恩群岛时间\x12豪勋爵岛时间" + - "\x18豪勋爵岛标准时间\x18豪勋爵岛夏令时间\x0c澳门时间\x12澳门标准时间\x12澳门夏令时间\x12麦夸里岛时间\x0f马加丹时间" + - "\x15马加丹标准时间\x15马加丹夏令时间\x12马来西亚时间\x12马尔代夫时间\x18马克萨斯群岛时间\x15马绍尔群岛时间\x12毛里求" + - "斯时间\x18毛里求斯标准时间\x18毛里求斯夏令时间\x0c莫森时间\x18墨西哥西北部时间\x1e墨西哥西北部标准时间\x1e墨西哥西北" + - "部夏令时间\x18墨西哥太平洋时间\x1e墨西哥太平洋标准时间\x1e墨西哥太平洋夏令时间\x12乌兰巴托时间\x18乌兰巴托标准时间" + - "\x18乌兰巴托夏令时间\x0f莫斯科时间\x15莫斯科标准时间\x15莫斯科夏令时间\x0c缅甸时间\x0c瑙鲁时间\x0f尼泊尔时间\x18" + - "新喀里多尼亚时间\x1e新喀里多尼亚标准时间\x1e新喀里多尼亚夏令时间\x0f新西兰时间\x15新西兰标准时间\x15新西兰夏令时间" + - "\x0f纽芬兰时间\x15纽芬兰标准时间\x15纽芬兰夏令时间\x0c纽埃时间\x12诺福克岛时间%费尔南多-迪诺罗尼亚岛时间+费尔南多-迪诺罗" + - "尼亚岛标准时间+费尔南多-迪诺罗尼亚岛夏令时间\x1b北马里亚纳群岛时间\x15新西伯利亚时间\x1b新西伯利亚标准时间\x1b新西伯利亚夏" + - "令时间\x12鄂木斯克时间\x18鄂木斯克标准时间\x18鄂木斯克夏令时间\x12巴基斯坦时间\x18巴基斯坦标准时间\x18巴基斯坦夏令时" + - "间\x0c帕劳时间\x1b巴布亚新几内亚时间\x0f巴拉圭时间\x15巴拉圭标准时间\x15巴拉圭夏令时间\x0c秘鲁时间\x12秘鲁标准时" + - "间\x12秘鲁夏令时间\x0f菲律宾时间\x15菲律宾标准时间\x15菲律宾夏令时间\x18菲尼克斯群岛时间$圣皮埃尔和密克隆群岛时间*圣皮" + - "埃尔和密克隆群岛标准时间*圣皮埃尔和密克隆群岛夏令时间\x12皮特凯恩时间\x0f波纳佩时间\x0c平壤时间\x15克孜洛尔达时间\x1b克" + - "孜洛尔达标准时间\x1b克孜洛尔达夏令时间\x0f留尼汪时间\x0f罗瑟拉时间\x0f库页岛时间\x15库页岛标准时间\x15库页岛夏令时间" + - "\x0f萨马拉时间\x15萨马拉标准时间\x15萨马拉夏令时间\x0f萨摩亚时间\x15萨摩亚标准时间\x15萨摩亚夏令时间\x0f塞舌尔时间" + - "\x15新加坡标准时间\x15所罗门群岛时间\x15南乔治亚岛时间\x0f苏里南时间\x0c昭和时间\x12塔希提岛时间\x0c台北时间\x12" + - "台北标准时间\x12台北夏令时间\x15塔吉克斯坦时间\x0f托克劳时间\x0c汤加时间\x12汤加标准时间\x12汤加夏令时间\x0c楚克" + - "时间\x15土库曼斯坦时间\x1b土库曼斯坦标准时间\x1b土库曼斯坦夏令时间\x0f图瓦卢时间\x0f乌拉圭时间\x15乌拉圭标准时间" + - "\x15乌拉圭夏令时间\x18乌兹别克斯坦时间\x1e乌兹别克斯坦标准时间\x1e乌兹别克斯坦夏令时间\x12瓦努阿图时间\x18瓦努阿图标准时" + - "间\x18瓦努阿图夏令时间\x12委内瑞拉时间\x0f海参崴时间\x15海参崴标准时间\x15海参崴夏令时间\x15伏尔加格勒时间\x1b伏" + - "尔加格勒标准时间\x1b伏尔加格勒夏令时间\x12沃斯托克时间\x0f威克岛时间\x1b瓦利斯和富图纳时间\x12雅库茨克时间\x18雅库茨" + - "克标准时间\x18雅库茨克夏令时间\x15叶卡捷琳堡时间\x1b叶卡捷琳堡标准时间\x1b叶卡捷琳堡夏令时间" - -var bucket112 string = "" + // Size: 14786 bytes - "\x07Gd/M/yy\x0bd/M/yyGGGGG\x0ddd/MM/yyGGGGG\x0erU年MMMd EEEE\x041季\x042季" + - "\x043季\x044季\x06上週\x06本週\x06下週\x0a{0} 週後\x0a{0} 週前\x0a{0} 當週\x0a{0} 天後" + - "\x0a{0} 天前\x09上週日\x09本週日\x09下週日\x10{0} 個週日後\x10{0} 個週日前\x09上週一\x09本週一" + - "\x09下週一\x10{0} 個週一後\x10{0} 個週一前\x09上週二\x09本週二\x09下週二\x10{0} 個週二後\x10{0} " + - "個週二前\x09上週三\x09本週三\x09下週三\x10{0} 個週三後\x10{0} 個週三前\x09上週四\x09本週四\x09下週四" + - "\x10{0} 個週四後\x10{0} 個週四前\x09上週五\x09本週五\x09下週五\x10{0} 個週五後\x10{0} 個週五前" + - "\x09上週六\x09本週六\x09下週六\x10{0} 個週六後\x10{0} 個週六前\x0c這一小時\x0c這一分鐘\x06現在\x12世" + - "界標準時間\x13U(r)年MMMdEEEE\x0fU(r)年MMMd\x08U年MMMd\x0a第1季度\x0a第2季度\x0a第3季度" + - "\x0a第4季度\x06上年\x06今年\x06下年\x05+{0}Q\x05-{0}Q\x06上月\x06本月\x06下月\x0c{0}個月後" + - "\x0c{0}個月前\x06星期\x0d{0} 星期後\x0d{0} 星期前\x09{0}週後\x09{0}週前\x06前日\x06昨日\x06" + - "今日\x06明日\x06後日\x09星期幾\x0c這個小時\x0c{0}小時後\x0c{0}小時前\x09這分鐘\x0f{0}夏令時間" + - "\x0f{0}標準時間\x0c南非時間\x12北美中部時間\x18北美中部標準時間\x12北美東部時間\x18北美東部標準時間\x12北美山區時" + - "間\x18北美山區標準時間\x15北美太平洋時間\x1b北美太平洋標準時間\x12亞塞拜疆時間\x18亞塞拜疆標準時間\x0f佛得角時間" + - "\x15佛得角標準時間\x15可可斯群島時間\x15迪蒙迪維爾時間\x12厄瓜多爾時間\x18加拉帕戈群島時間\x12格魯吉亞時間\x18格魯吉" + - "亞標準時間\x15波斯灣海域時間\x0f圭亞那時間\x0c印度時間\x12中南半島時間\x15伊爾庫茨克時間\x1b伊爾庫茨克標準時間" + - "\x0f科斯雷時間\x15麥夸里群島時間\x12馬爾代夫時間\x12馬克薩斯時間\x12毛里裘斯時間\x18毛里裘斯標準時間\x0c瑙魯時間" + - "\x18新喀里多尼亞時間\x1e新喀里多尼亞標準時間!費爾南多迪諾羅尼亞時間'費爾南多迪諾羅尼亞標準時間\x1b巴布亞新畿內亞時間\x0f皮特康" + - "時間\x0f塞舌爾時間\x0f新加坡時間\x15所羅門群島時間\x0f蘇里南時間\x0c湯加時間\x12湯加標準時間\x0f圖瓦盧時間" + - "\x12瓦努阿圖時間\x18瓦努阿圖標準時間\x12雅庫茨克時間\x18雅庫茨克標準時間\x0aUMasingana\x09Februwari" + - "\x05Mashi\x07Ephreli\x04Meyi\x04Juni\x06Julayi\x06Agasti\x09Septhemba" + - "\x07Okthoba\x07Novemba\x07Disemba\x08Januwari\x06ISonto\x0bUMsombuluko" + - "\x0aULwesibili\x0cULwesithathu\x08ULwesine\x0bULwesihlanu\x09UMgqibelo" + - "\x0cikota yesi-1\x0cikota yesi-2\x0cikota yesi-3\x0cikota yesi-4\x0benta" + - "thakusa\x07ekuseni\x05emini\x08ntambama\x07ebusuku\x06Unyaka\x0fonyakeni" + - " odlule\x0akulo nyaka\x0cunyaka ozayo\x17onyakeni ongu-{0} ozayo\x19emin" + - "yakeni engu-{0} ezayo\x11{0} unyaka odlule\x13{0} iminyaka edlule\x05Iko" + - "ta\x0cikota edlule\x07le kota\x0bikota ezayo\x16kwikota engu-{0} ezayo" + - "\x17kumakota angu-{0} ezayo\x10{0} ikota edlule\x12{0} amakota adlule" + - "\x12{0} amakota edlule\x11kumakota angu-{0}\x07Inyanga\x0einyanga edlule" + - "\x09le nyanga\x0dinyanga ezayo\x12enyangeni engu-{0}\x1eezinyangeni ezin" + - "gu-{0} ezizayo\x12{0} inyanga edlule\x16{0} izinyanga ezedlule\x18enyang" + - "eni engu-{0} ezayo\x0eiviki eledlule\x09leli viki\x0diviki elizayo\x12ev" + - "ikini elingu-{0}\x12emavikini angu-{0}\x1bevikini elingu-{0} eledlule" + - "\x17amaviki angu-{0} edlule\x0eevikini le-{0}\x1aevikini elingu-{0} eliz" + - "ayo\x18emavikini angu-{0} ezayo\x05Usuku\x1cusuku olwandulela olwayizolo" + - "\x05izolo\x09namhlanje\x06kusasa\x1busuku olulandela olwakusasa\x1bosukw" + - "ini olungu-{0} oluzayo\x1eezinsukwini ezingu-{0} ezizayo\x1dosukwini olu" + - "ngu-{0} olwedlule ezinsukwini ezingu-{0} ezedlule.\x13{0} usuku olwedlul" + - "e\x15{0} izinsuku ezedlule\x0dUsuku evikini\x0fiSonto eledlule\x0ckuleli" + - " Sonto\x0eiSonto elizayo\x13kwiSonto elingu-{0}\x12kumaSonto angu-{0}" + - "\x13{0} iSonto eledlule\x13{0} amaSonto edlule\x12uMsombuluko odlule\x0f" + - "kulo Msombuluko\x11uMsombuluko ozayo\x13ngoMsombuluko o-{0}\x14ngeMisomb" + - "uluko e-{0}\x1angoMsombuluko o-{0} odlule\x1angeMsombuluko e-{0} edlule" + - "\x13uLwesibili oludlule\x0ekulo Lwesibili\x12uLwesibili oluzayo\x14ngoLw" + - "esibili olu-{0}\x17ngoLwezibili abangu-{0}\x1engoLwesibili ongu-{0} owed" + - "lule ngoLwezibili abangu-{0} abedlule\x10{0} ngoLwezibili\x1a{0} ngoLwez" + - "ibili olwedlule\x15uLwesithathu oludlule\x10kulo Lwesithathu\x14uLwesith" + - "athu oluzayo\x14ngoLwesithathu o-{0}\x19ngoLwezithathu abangu-{0}#ngoLwe" + - "sithathu olungu-{0} olwedlule\x22ngoLwezithathu abangu-{0} abedlule\x11u" + - "Lwesine oludlule\x0ckulo Lwesine\x10uLwesine oluzayo\x12ngoLwesine olu-{" + - "0}\x15ngoLwezine abangu-{0}\x1cngoLwesine olu-{0} olwedlule\x1engoLwezin" + - "e abangu-{0} abedlule\x12uLwesine olwedlule\x14uLwesihlanu oludlule\x0fk" + - "ulo Lwesihlanu\x13uLwesihlanu oluzayo\x12ngo {0} Lwesihlanu\x12ngo {0} L" + - "wezihlanu\x17{0} Lwesihlanu oludlule\x17{0} Lwezihlanu oludlule\x10uMgqi" + - "belo odlule\x0dkulo Mgqibelo\x0fuMgqibelo ozayo\x11ngoMgqibelo o-{0}\x14" + - "ngeMgqibelo engu-{0}\x18ngoMgqibelo o-{0} odlule\x1bngeMgqibelo engu-{0}" + - " edlule\x05Ihora\x09leli hora\x1aehoreni elingu-{0} elizayo\x18emahoreni" + - " angu-{0} ezayo\x12{0} ihora eledlule\x19emahoreni angu-{0} edlule\x12{0" + - "} amahora edlule\x08Iminithi\x0cleli minithi\x1ckuminithi elingu-{0} eli" + - "zayo\x1akumaminithi angu-{0} ezayo\x15{0} iminithi eledlule\x15{0} amami" + - "nithi edlule\x09Isekhondi\x05manje\x1dkusekhondi elingu-{0} elizayo\x1bk" + - "umasekhondi angu-{0} ezayo\x16{0} isekhondi eledlule\x16{0} amasekhondi " + - "edlule\x11Isikhathi sendawo\x12Isikhathi sase-{0}\x16{0} Isikhathi sasem" + - "ini\x17{0} isikhathi esivamile isikhathi sase-British sasehlobo\x1eisikh" + - "athi sase-Irish esivamile\x1aIsikhathi sase-Afghanistan\x1dIsikhathi sas" + - "e-Central Africa\x1fIsikhathi saseMpumalanga Afrika-Isikhathi esijwayele" + - "kile saseNingizimu Afrika!Isikhathi saseNtshonalanga Afrika0Isikhathi es" + - "ijwayelekile saseNtshonalanga Afrika+Isikhathi sasehlobo saseNtshonalang" + - "a Afrika\x15Isikhathi sase-Alaska$Isikhathi sase-Alaska esijwayelekile" + - "\x1eIsikhathi sase-Alaska sasemini\x15Isikhathi sase-Amazon$Isikhathi sa" + - "se-Amazon esijwayelekile\x1fIsikhathi sase-Amazon sasehlobo%Isikhathi sa" + - "se-North American Central4Isikhathi sase-North American Central esijwaye" + - "lekile.Isikhathi sase-North American Central sasemini\x22Isikhathi sase-" + - "North American East1Isikhathi sase-North American East esijwayelekile+Is" + - "ikhathi sase-North American East sasemini&Isikhathi sase-North American " + - "Mountain5Isikhathi sase-North American Mountain esijwayelekile/Isikhathi" + - " sase-North American Mountain sasemini%Isikhathi sase-North American Pac" + - "ific4Isikhathi sase-North American Pacific esijwayelekile.Isikhathi sase" + - "-North American Pacific sasemini\x11esase-Anadyr Time\x1aesase-Anadyr St" + - "andard Time\x18esase-Anadyr Summer Time\x13Isikhathi sase-Apia\x1dIsikha" + - "thi sase-Apia esivamile\x1cIsikhathi sase-Apia sasemini\x16Isikhathi sas" + - "e-Arabian Isikhathi esivamile sase-Arabian\x1dIsikhathi semini sase-Arab" + - "ian\x18Isikhathi sase-Argentina'Isikhathi sase-Argentina esijwayelekile" + - "\x22Isikhathi sase-Argentina sasehlobo#Isikhathi saseNyakatho ne-Argenti" + - "na2Isikhathi saseNyakatho ne-Argentina esijwayelekile-Isikhathi saseNyak" + - "atho ne-Argentina sasehlobo\x15Isikhathi saseArmenia!Isikhathi esezingen" + - "i sase-Armenia\x1eIsikhathi sehlobo sase-Armenia\x17Isikhathi sase-Atlan" + - "tic&Isikhathi sase-Atlantic esijwayelekile Isikhathi sase-Atlantic sasem" + - "ini Isikhathi sase-Central Australia+Isikhathi sase-Australian Central e" + - "sivamile*Isikhathi sase-Australian Central sasemini&Isikhathi sase-Austr" + - "alian Central West0Isikhathi sase-Australian Central West esivamile/Isik" + - "hathi sasemini sase-Australian Central West Isikhathi sase-Eastern Austr" + - "alia(Isikhathi esivamile sase-Australian East'Isikhathi sasemini sase-Au" + - "stralian East Isikhathi sase-Western Australia+Isikhathi sase-Australian" + - " Western esivamile*Isikhathi sase-Australian Western sasemini\x19Isikhat" + - "hi sase-Azerbaijan#Isikhathi esivamile sase-Azerbaijan!Isikhathi sehlobo" + - " sase-Azerbaijan\x15Isikhathi sase-Azores$Isikhathi esijwayelekile sase-" + - "Azores\x1fIsikhathi sasehlobo sase-Azores\x19Isikhathi sase-Bangladesh#I" + - "sikhathi sase-Bangladesh esivamile#Isikhathi sase-Bangladesh sasehlobo" + - "\x15Isikhathi sase-Bhutan\x16Isikhathi sase-Bolivia\x17Isikhathi sase-Br" + - "asilia&Isikhathi sase-Brasilia esijwayelekile!Isikhathi sase-Brasilia sa" + - "sehlobo Isikhathi sase-Brunei Darussalam\x19Isikhathi sase-Cape Verde$Is" + - "ikhathi esezingeni sase-Cape Verde!Isikhathi sehlobo sase-Cape Verde&Isi" + - "khathi esijwayelekile sase-Chamorro\x16Isikhathi sase-Chatham Isikhathi " + - "esivamile sase-Chatham\x1fIsikhathi sasemini sase-Chatham\x14Isikhathi s" + - "ase-Chile#Isikhathi sase-Chile esijwayelekile\x1eIsikhathi sase-Chile sa" + - "sehlobo\x14Isikhathi sase-China\x1eIsikhathi esivamile sase-China\x1bIsi" + - "khathi semini sase-China\x19Isikhathi sase-Choibalsan#Isikhathi Esimisiw" + - "e sase-Choibalsan\x1eIsikhathi sehlobo e-Choibalsan\x1fIsikhathi sase-Ch" + - "ristmas Island\x1cIsikhathi sase-Cocos Islands\x17Isikhathi sase-Colombi" + - "a&Isikhathi sase-Colombia esijwayelekile!Isikhathi sase-Colombia sasehlo" + - "bo\x1bIsikhathi sase-Cook Islands%Isikhathi esivamile sase-Cook Islands2" + - "Isikhathi esiyingxenye yasehlobo sase-Cook Islands\x13Isikhathi sase-Cub" + - "a\x22Isikhathi sase-Cuba esijwayelekile\x1cIsikhathi sase-Cuba sasemini" + - "\x14Isikhathi sase-Davis!Isikhathi sase-Dumont-d’Urville\x19Isikhathi sa" + - "se-East Timor\x1cIsikhathi sase-Easter Island+Isikhathi sase-Easter Isla" + - "nd esijwayelekile&Isikhathi sase-Easter Island sasehlobo\x16Isikhathi sa" + - "se-Ecuador\x1dIsikhathi sase-Central Europe,Isikhathi esijwayelekile sas" + - "e-Central Europe'Isikhathi sasehlobo sase-Central Europe\x1dIsikhathi sa" + - "se-Eastern Europe,Isikhathi esijwayelekile sase-Eastern Europe'Isikhathi" + - " sasehlobo sase-Eastern Europe%Isikhathi sase-Further-eastern Europe\x1d" + - "Isikhathi sase-Western Europe,Isikhathi esijwayelekile sase-Western Euro" + - "pe'Isikhathi sasehlobo sase-Western Europe\x1fIsikhathi sase-Falkland Is" + - "lands.Isikhathi sase-Falkland Islands esijwayelekile)Isikhathi sase-Falk" + - "land Islands sasehlobo\x13Isikhathi sase-Fiji\x1dIsikhathi esivamile sas" + - "e-Fiji\x1bIsikhathi sehlobo sase-Fiji\x1cIsikhathi sase-French Guiana-Is" + - "ikhathi sase-French Southern nase-Antarctic\x18Isikhathi sase-Galapagos" + - "\x16Isikhathi sase-Gambier\x16Isikhathi sase-Georgia Isikhathi esivamile" + - " sase-Georgia\x1eIsikhathi sehlobo sase-Georgia\x1eIsikhathi sase-Gilber" + - "t Islands\x1dIsikhathi sase-Greenwich Mean\x1dIsikhathi sase-East Greenl" + - "and,Isikhathi sase-East Greenland esijwayelekile&Isikhathi sase-East Gre" + - "enland sasemini\x1dIsikhathi sase-West Greenland,Isikhathi sase-West Gre" + - "enland esijwayelekile'Isikhathi sase-West Greenland sasehlobo\x1dIsikhat" + - "hi esivamile sase-Gulf\x15Isikhathi sase-Guyana\x1dIsikhathi sase-Hawaii" + - "-Aleutia,Isikhathi sase-Hawaii-Aleutia esijwayelekile&Isikhathi sase-Haw" + - "aii-Aleutia sasemini\x18Isikhathi sase-Hong Kong\x22Isikhathi esivamile " + - "sase-Hong Kong Isikhathi sehlobo sase-Hong Kong\x13Isikhathi sase-Hovd" + - "\x1dIsikhathi Esimisiwe sase-Hovd\x18Isikhathi sehlobo e-Hovd\x1eIsikhat" + - "hi sase-India esivamile\x1bIsikhathi sase-Indian Ocean\x18Isikhathi sase" + - "-Indochina Isikhathi sase-Central Indonesia Isikhathi sase-Eastern Indon" + - "esia Isikhathi sase-Western Indonesia\x13Isikhathi sase-Iran\x1dIsikhath" + - "i sase-Iran esivamile\x1cIsikhathi sase-Iran sasemini\x16Isikhathi sase-" + - "Irkutsk Isikhathi Esimisiwe sase-Irkutsk\x1dIsikhathi sasehlobo e-Irkuts" + - "k\x15Isikhathi sase-Israel\x1fIsikhathi esivamile sase-Israel\x1fIsikhat" + - "hi sasemini sakwa-Israel\x14Isikhathi sase-Japan\x1eIsikhathi esivamile " + - "sase-Japan\x1bIsikhathi semini sase-Japan#esase-Petropavlovsk-Kamchatski" + - " Time,esase-Petropavlovsk-Kamchatski Standard Time*esase-Petropavlovsk-K" + - "amchatski Summer Time'Isikhathi sase-Mpumalanga ne-Kazakhstan(Isikhathi " + - "saseNtshonalanga ne-Kazakhstan\x14Isikhathi sase-Korea!Isikhathi esiseze" + - "ngeni sase-Korea\x1bIsikhathi semini sase-Korea\x15Isikhathi sase-Kosrae" + - "\x1aIsikhathi sase-Krasnoyarsk$Isikhathi Esimisiwe sase-Krasnoyarsk!Isik" + - "hathi sasehlobo e-Krasnoyarsk\x18Isikhathi sase-Kyrgystan\x1bIsikhathi s" + - "ase-Line Islands\x18Isikhathi sase-Lord Howe\x22Isikhathi sase-Lord Howe" + - " esivamile!Isikhathi sase-Lord Howe sasemini\x1fIsikhathi sase-Macquarie" + - " Island\x16Isikhathi sase-Magadan Isikhathi Esimisiwe sase-Magadan\x1dIs" + - "ikhathi sasehlobo e-Magadan\x17Isikhathi sase-Malaysia\x17Isikhathi sase" + - "-Maldives\x18Isikhathi sase-Marquesas\x1fIsikhathi sase-Marshall Islands" + - "\x18Isikhathi sase-Mauritius\x22Isikhathi esivamile sase-Mauritius Isikh" + - "athi sehlobo sase-Mauritius\x15Isikhathi sase-Mawson\x1fIsikhathi sase-N" + - "orthwest Mexico.Isikhathi sase-Northwest Mexico esijwayelekile(Isikhathi" + - " sase-Northwest Mexico sasemini\x1eIsikhathi sase-Mexican Pacific-Isikha" + - "thi sase-Mexican Pacific esijwayelekile'Isikhathi sase-Mexican Pacific s" + - "asemini\x19Isikhathi sase-Ulan Bator#Isikhathi Esimisiwe sase-Ulan Bator" + - "\x1eIsikhathi sehlobo e-Ulan Bator\x15Isikhathi sase-Moscow$Isikhathi sa" + - "se-Moscow esijwayelekile\x1cIsikhathi sasehlobo e-Moscow\x16Isikhathi sa" + - "se-Myanmar\x14Isikhathi sase-Nauru\x14Isikhathi sase-Nepal\x1cIsikhathi " + - "sase-New Caledonia+Isikhathi sase-New Caledonia esijwayelekile&Isikhathi" + - " sase-New Caledonia sasehlobo\x1aIsikhathi sase-New Zealand$Isikhathi es" + - "ivamile sase-New Zealand#Isikhathi sasemini sase-New Zealand\x1bIsikhath" + - "i sase-Newfoundland*Isikhathi sase-Newfoundland esijwayelekile$Isikhathi" + - " sase-Newfoundland sasemini\x13Isikhathi sase-Niue\x1eIsikhathi sase-Nor" + - "folk Islands\x22Isikhathi sase-Fernando de Noronha1Isikhathi sase-Fernan" + - "do de Noronha esijwayelekile,Isikhathi sase-Fernando de Noronha sasehlob" + - "o\x1aIsikhathi sase-Novosibirsk$Isikhathi Esimisiwe sase-Novosibirsk$Isi" + - "khathi sasehlobo sase-Novosibirsk\x13Isikhathi sase-Omsk\x1dIsikhathi Es" + - "imisiwe sase-Omsk\x1dIsikhathi sasehlobo sase-Omsk\x17Isikhathi sase-Pak" + - "istan!Isikhathi sase-Pakistan esivamile!Isikhathi sase-Pakistan sasehlob" + - "o\x14Isikhathi sase-Palau\x1fIsikhathi sase-Papua New Guinea\x17Isikhath" + - "i sase-Paraguay&Isikhathi sase-Paraguay esijwayelekile!Isikhathi sase-Pa" + - "raguay sasehlobo\x13Isikhathi sase-Peru\x22Isikhathi sase-Peru esijwayel" + - "ekile\x1dIsikhathi sase-Peru sasehlobo\x19Isikhathi sase-Philippine#Isik" + - "hathi esivamile sase-Philippine!Isikhathi sehlobo sase-Philippine\x1eIsi" + - "khathi sase-Phoenix Islands)Isikhathi sase-Saint Pierre nase-Miquelon7Ii" + - "khathi sase-Saint Pierre nase-Miquelon esijwayelekile2Isikhathi sase-Sai" + - "nt Pierre nase-Miquelon sasemini\x17Isikhathi sase-Pitcairn\x15Isikhathi" + - " sase-Ponape\x18Isikhathi sase-Pyongyang\x16Isikhathi sase-Reunion\x16Is" + - "ikhathi sase-Rothera\x17Isikhathi sase-Sakhalin!Isikhathi Esimisiwe sase" + - "-Sakhalin\x1eIsikhathi sasehlobo e-Sakhalin\x11esase-Samara Time\x1aesas" + - "e-Samara Standard Time\x18esase-Samara Summer Time\x14Isikhathi sase-Sam" + - "oa#Isikhathi sase-Samoa esijwayelekile\x1dIsikhathi sase-Samoa sasemini" + - "\x19Isikhathi sase-Seychelles\x22Isikhathi esivamile sase-Singapore\x1eI" + - "sikhathi sase-Solomon Islands\x1cIsikhathi sase-South Georgia\x17Isikhat" + - "hi sase-Suriname\x14Isikhathi sase-Syowa\x15Isikhathi sase-Tahiti\x15Isi" + - "khathi sase-Taipei\x1fIsikhathi esivamile sase-Taipei\x1cIsikhathi semin" + - "i sase-Taipei\x19Isikhathi sase-Tajikistan\x16Isikhathi sase-Tokelau\x14" + - "Isikhathi sase-Tonga#Isikhathi sase-Tonga esijwayelekile\x1eIsikhathi sa" + - "se-Tonga sasehlobo\x14Isikhathi sase-Chuuk\x1bIsikhathi sase-Turkmenista" + - "n%Isikhathi esivamile sase-Turkmenistan#Isikhathi sehlobo sase-Turkmenis" + - "tan\x15Isikhathi sase-Tuvalu\x16Isikhathi sase-Uruguay%Isikhathi sase-Ur" + - "uguay esijwayelekile Isikhathi sase-Uruguay sasehlobo\x19Isikhathi sase-" + - "Uzbekistan#Isikhathi esivamile sase-Uzbekistan!Isikhathi sehlobo sase-Uz" + - "bekistan\x16Isikhathi sase-Vanuatu%Isikhathi sase-Vanuatu esijwayelekile" + - " Isikhathi sase-Vanuatu sasehlobo\x18Isikhathi sase-Venezuela\x1aIsikhat" + - "hi sase-Vladivostok$Isikhathi Esimisiwe sase-Vladivostok!Isikhathi saseh" + - "lobo e-Vladivostok\x18Isikhathi sase-Volgograd\x22Isikhathi Esimisiwe sa" + - "se-Volgograd\x22Isikhathi sase-Volgograd sasehlobo\x15Isikhathi sase-Vos" + - "tok\x1aIsikhathi sase-Wake Island!Isikhathi sase-Wallis nase-Futuna\x16I" + - "sikhathi sase-Yakutsk Isikhathi Esimisiwe sase-Yakutsk\x1dIsikhathi sase" + - "hlobo e-Yakutsk\x1cIsikhathi sase-Yekaterinburg&Isikhathi Esimisiwe sase" + - "-Yekaterinburg#Isikhathi sasehlobo e-Yekaterinburg" - -// CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "31" - -// Total table size 2247870 bytes (2195KiB); checksum: 9BEC8C56 diff --git a/vendor/golang.org/x/text/doc.go b/vendor/golang.org/x/text/doc.go deleted file mode 100644 index a48e2843..00000000 --- a/vendor/golang.org/x/text/doc.go +++ /dev/null @@ -1,13 +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. - -//go:generate go run gen.go - -// text is a repository of text-related packages related to internationalization -// (i18n) and localization (l10n), such as character encodings, text -// transformations, and locale-specific text handling. -package text - -// TODO: more documentation on general concepts, such as Transformers, use -// of normalization, etc. diff --git a/vendor/golang.org/x/text/encoding/charmap/charmap_test.go b/vendor/golang.org/x/text/encoding/charmap/charmap_test.go deleted file mode 100644 index 03dd76eb..00000000 --- a/vendor/golang.org/x/text/encoding/charmap/charmap_test.go +++ /dev/null @@ -1,258 +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 charmap - -import ( - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/enctest" - "golang.org/x/text/transform" -) - -func dec(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Decode", e.NewDecoder(), nil -} - -func encASCIISuperset(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Encode", e.NewEncoder(), internal.ErrASCIIReplacement -} - -func encEBCDIC(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Encode", e.NewEncoder(), internal.RepertoireError(0x3f) -} - -func TestNonRepertoire(t *testing.T) { - testCases := []struct { - init func(e encoding.Encoding) (string, transform.Transformer, error) - e encoding.Encoding - src, want string - }{ - {dec, Windows1252, "\x81", "\ufffd"}, - - {encEBCDIC, CodePage037, "갂", ""}, - - {encEBCDIC, CodePage1047, "갂", ""}, - {encEBCDIC, CodePage1047, "a¤갂", "\x81\x9F"}, - - {encEBCDIC, CodePage1140, "갂", ""}, - {encEBCDIC, CodePage1140, "a€갂", "\x81\x9F"}, - - {encASCIISuperset, Windows1252, "갂", ""}, - {encASCIISuperset, Windows1252, "a갂", "a"}, - {encASCIISuperset, Windows1252, "\u00E9갂", "\xE9"}, - } - for _, tc := range testCases { - dir, tr, wantErr := tc.init(tc.e) - - dst, _, err := transform.String(tr, tc.src) - if err != wantErr { - t.Errorf("%s %v(%q): got %v; want %v", dir, tc.e, tc.src, err, wantErr) - } - if got := string(dst); got != tc.want { - t.Errorf("%s %v(%q):\ngot %q\nwant %q", dir, tc.e, tc.src, got, tc.want) - } - } -} - -func TestBasics(t *testing.T) { - testCases := []struct { - e encoding.Encoding - encoded string - utf8 string - }{{ - e: CodePage037, - encoded: "\xc8\x51\xba\x93\xcf", - utf8: "Hé[lõ", - }, { - e: CodePage437, - encoded: "H\x82ll\x93 \x9d\xa7\xf4\x9c\xbe", - utf8: "Héllô ¥º⌠£╛", - }, { - e: CodePage866, - encoded: "H\xf3\xd3o \x98\xfd\x9f\xdd\xa1", - utf8: "Hє╙o Ш¤Я▌б", - }, { - e: CodePage1047, - encoded: "\xc8\x54\x93\x93\x9f", - utf8: "Hèll¤", - }, { - e: CodePage1140, - encoded: "\xc8\x9f\x93\x93\xcf", - utf8: "H€llõ", - }, { - e: ISO8859_2, - encoded: "Hel\xe5\xf5", - utf8: "Helĺő", - }, { - e: ISO8859_3, - encoded: "He\xbd\xd4", - utf8: "He½Ô", - }, { - e: ISO8859_4, - encoded: "Hel\xb6\xf8", - utf8: "Helļø", - }, { - e: ISO8859_5, - encoded: "H\xd7\xc6o", - utf8: "HзЦo", - }, { - e: ISO8859_6, - encoded: "Hel\xc2\xc9", - utf8: "Helآة", - }, { - e: ISO8859_7, - encoded: "H\xeel\xebo", - utf8: "Hξlλo", - }, { - e: ISO8859_8, - encoded: "Hel\xf5\xed", - utf8: "Helץם", - }, { - e: ISO8859_9, - encoded: "\xdeayet", - utf8: "Şayet", - }, { - e: ISO8859_10, - encoded: "H\xea\xbfo", - utf8: "Hęŋo", - }, { - e: ISO8859_13, - encoded: "H\xe6l\xf9o", - utf8: "Hęlło", - }, { - e: ISO8859_14, - encoded: "He\xfe\xd0o", - utf8: "HeŷŴo", - }, { - e: ISO8859_15, - encoded: "H\xa4ll\xd8", - utf8: "H€llØ", - }, { - e: ISO8859_16, - encoded: "H\xe6ll\xbd", - utf8: "Hællœ", - }, { - e: KOI8R, - encoded: "He\x93\xad\x9c", - utf8: "He⌠╜°", - }, { - e: KOI8U, - encoded: "He\x93\xad\x9c", - utf8: "He⌠ґ°", - }, { - e: Macintosh, - encoded: "He\xdf\xd7", - utf8: "Hefl◊", - }, { - e: MacintoshCyrillic, - encoded: "He\xbe\x94", - utf8: "HeЊФ", - }, { - e: Windows874, - encoded: "He\xb7\xf0", - utf8: "Heท๐", - }, { - e: Windows1250, - encoded: "He\xe5\xe5o", - utf8: "Heĺĺo", - }, { - e: Windows1251, - encoded: "H\xball\xfe", - utf8: "Hєllю", - }, { - e: Windows1252, - encoded: "H\xe9ll\xf4 \xa5\xbA\xae\xa3\xd0", - utf8: "Héllô ¥º®£Ð", - }, { - e: Windows1253, - encoded: "H\xe5ll\xd6", - utf8: "HεllΦ", - }, { - e: Windows1254, - encoded: "\xd0ello", - utf8: "Ğello", - }, { - e: Windows1255, - encoded: "He\xd4o", - utf8: "Heװo", - }, { - e: Windows1256, - encoded: "H\xdbllo", - utf8: "Hغllo", - }, { - e: Windows1257, - encoded: "He\xeflo", - utf8: "Heļlo", - }, { - e: Windows1258, - encoded: "Hell\xf5", - utf8: "Hellơ", - }, { - e: XUserDefined, - encoded: "\x00\x40\x7f\x80\xab\xff", - utf8: "\u0000\u0040\u007f\uf780\uf7ab\uf7ff", - }} - - for _, tc := range testCases { - enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, "", "") - } -} - -var windows1255TestCases = []struct { - b byte - ok bool - r rune -}{ - {'\x00', true, '\u0000'}, - {'\x1a', true, '\u001a'}, - {'\x61', true, '\u0061'}, - {'\x7f', true, '\u007f'}, - {'\x80', true, '\u20ac'}, - {'\x95', true, '\u2022'}, - {'\xa0', true, '\u00a0'}, - {'\xc0', true, '\u05b0'}, - {'\xfc', true, '\ufffd'}, - {'\xfd', true, '\u200e'}, - {'\xfe', true, '\u200f'}, - {'\xff', true, '\ufffd'}, - {encoding.ASCIISub, false, '\u0400'}, - {encoding.ASCIISub, false, '\u2603'}, - {encoding.ASCIISub, false, '\U0001f4a9'}, -} - -func TestDecodeByte(t *testing.T) { - for _, tc := range windows1255TestCases { - if !tc.ok { - continue - } - - got := Windows1255.DecodeByte(tc.b) - want := tc.r - if got != want { - t.Errorf("DecodeByte(%#02x): got %#08x, want %#08x", tc.b, got, want) - } - } -} - -func TestEncodeRune(t *testing.T) { - for _, tc := range windows1255TestCases { - // There can be multiple tc.b values that map to tc.r = '\ufffd'. - if tc.r == '\ufffd' { - continue - } - - gotB, gotOK := Windows1255.EncodeRune(tc.r) - wantB, wantOK := tc.b, tc.ok - if gotB != wantB || gotOK != wantOK { - t.Errorf("EncodeRune(%#08x): got (%#02x, %t), want (%#02x, %t)", tc.r, gotB, gotOK, wantB, wantOK) - } - } -} - -func TestFiles(t *testing.T) { enctest.TestFile(t, Windows1252) } - -func BenchmarkEncoding(b *testing.B) { enctest.Benchmark(b, Windows1252) } diff --git a/vendor/golang.org/x/text/encoding/encoding_test.go b/vendor/golang.org/x/text/encoding/encoding_test.go deleted file mode 100644 index 17381476..00000000 --- a/vendor/golang.org/x/text/encoding/encoding_test.go +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package encoding_test - -import ( - "io/ioutil" - "strings" - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/transform" -) - -func TestEncodeInvalidUTF8(t *testing.T) { - inputs := []string{ - "hello.", - "wo\ufffdld.", - "ABC\xff\x80\x80", // Invalid UTF-8. - "\x80\x80\x80\x80\x80", - "\x80\x80D\x80\x80", // Valid rune at "D". - "E\xed\xa0\x80\xed\xbf\xbfF", // Two invalid UTF-8 runes (surrogates). - "G", - "H\xe2\x82", // U+20AC in UTF-8 is "\xe2\x82\xac", which we split over two - "\xacI\xe2\x82", // input lines. It maps to 0x80 in the Windows-1252 encoding. - } - // Each invalid source byte becomes '\x1a'. - want := strings.Replace("hello.wo?ld.ABC??????????D??E??????FGH\x80I??", "?", "\x1a", -1) - - transformer := encoding.ReplaceUnsupported(charmap.Windows1252.NewEncoder()) - gotBuf := make([]byte, 0, 1024) - src := make([]byte, 0, 1024) - for i, input := range inputs { - dst := make([]byte, 1024) - src = append(src, input...) - atEOF := i == len(inputs)-1 - nDst, nSrc, err := transformer.Transform(dst, src, atEOF) - gotBuf = append(gotBuf, dst[:nDst]...) - src = src[nSrc:] - if err != nil && err != transform.ErrShortSrc { - t.Fatalf("i=%d: %v", i, err) - } - if atEOF && err != nil { - t.Fatalf("i=%d: atEOF: %v", i, err) - } - } - if got := string(gotBuf); got != want { - t.Fatalf("\ngot %+q\nwant %+q", got, want) - } -} - -func TestReplacement(t *testing.T) { - for _, direction := range []string{"Decode", "Encode"} { - enc, want := (transform.Transformer)(nil), "" - if direction == "Decode" { - enc = encoding.Replacement.NewDecoder() - want = "\ufffd" - } else { - enc = encoding.Replacement.NewEncoder() - want = "AB\x00CD\ufffdYZ" - } - sr := strings.NewReader("AB\x00CD\x80YZ") - g, err := ioutil.ReadAll(transform.NewReader(sr, enc)) - if err != nil { - t.Errorf("%s: ReadAll: %v", direction, err) - continue - } - if got := string(g); got != want { - t.Errorf("%s:\ngot %q\nwant %q", direction, got, want) - continue - } - } -} - -func TestUTF8Validator(t *testing.T) { - testCases := []struct { - desc string - dstSize int - src string - atEOF bool - want string - wantErr error - }{ - { - "empty input", - 100, - "", - false, - "", - nil, - }, - { - "valid 1-byte 1-rune input", - 100, - "a", - false, - "a", - nil, - }, - { - "valid 3-byte 1-rune input", - 100, - "\u1234", - false, - "\u1234", - nil, - }, - { - "valid 5-byte 3-rune input", - 100, - "a\u0100\u0101", - false, - "a\u0100\u0101", - nil, - }, - { - "perfectly sized dst (non-ASCII)", - 5, - "a\u0100\u0101", - false, - "a\u0100\u0101", - nil, - }, - { - "short dst (non-ASCII)", - 4, - "a\u0100\u0101", - false, - "a\u0100", - transform.ErrShortDst, - }, - { - "perfectly sized dst (ASCII)", - 5, - "abcde", - false, - "abcde", - nil, - }, - { - "short dst (ASCII)", - 4, - "abcde", - false, - "abcd", - transform.ErrShortDst, - }, - { - "partial input (!EOF)", - 100, - "a\u0100\xf1", - false, - "a\u0100", - transform.ErrShortSrc, - }, - { - "invalid input (EOF)", - 100, - "a\u0100\xf1", - true, - "a\u0100", - encoding.ErrInvalidUTF8, - }, - { - "invalid input (!EOF)", - 100, - "a\u0100\x80", - false, - "a\u0100", - encoding.ErrInvalidUTF8, - }, - { - "invalid input (above U+10FFFF)", - 100, - "a\u0100\xf7\xbf\xbf\xbf", - false, - "a\u0100", - encoding.ErrInvalidUTF8, - }, - { - "invalid input (surrogate half)", - 100, - "a\u0100\xed\xa0\x80", - false, - "a\u0100", - encoding.ErrInvalidUTF8, - }, - } - for _, tc := range testCases { - dst := make([]byte, tc.dstSize) - nDst, nSrc, err := encoding.UTF8Validator.Transform(dst, []byte(tc.src), tc.atEOF) - if nDst < 0 || len(dst) < nDst { - t.Errorf("%s: nDst=%d out of range", tc.desc, nDst) - continue - } - got := string(dst[:nDst]) - if got != tc.want || nSrc != len(tc.want) || err != tc.wantErr { - t.Errorf("%s:\ngot %+q, %d, %v\nwant %+q, %d, %v", - tc.desc, got, nSrc, err, tc.want, len(tc.want), tc.wantErr) - continue - } - } -} - -func TestErrorHandler(t *testing.T) { - testCases := []struct { - desc string - handler func(*encoding.Encoder) *encoding.Encoder - sizeDst int - src, want string - nSrc int - err error - }{ - { - desc: "one rune replacement", - handler: encoding.ReplaceUnsupported, - sizeDst: 100, - src: "\uAC00", - want: "\x1a", - nSrc: 3, - }, - { - desc: "mid-stream rune replacement", - handler: encoding.ReplaceUnsupported, - sizeDst: 100, - src: "a\uAC00bcd\u00e9", - want: "a\x1abcd\xe9", - nSrc: 9, - }, - { - desc: "at end rune replacement", - handler: encoding.ReplaceUnsupported, - sizeDst: 10, - src: "\u00e9\uAC00", - want: "\xe9\x1a", - nSrc: 5, - }, - { - desc: "short buffer replacement", - handler: encoding.ReplaceUnsupported, - sizeDst: 1, - src: "\u00e9\uAC00", - want: "\xe9", - nSrc: 2, - err: transform.ErrShortDst, - }, - { - desc: "one rune html escape", - handler: encoding.HTMLEscapeUnsupported, - sizeDst: 100, - src: "\uAC00", - want: "&#44032;", - nSrc: 3, - }, - { - desc: "mid-stream html escape", - handler: encoding.HTMLEscapeUnsupported, - sizeDst: 100, - src: "\u00e9\uAC00dcba", - want: "\xe9&#44032;dcba", - nSrc: 9, - }, - { - desc: "short buffer html escape", - handler: encoding.HTMLEscapeUnsupported, - sizeDst: 9, - src: "ab\uAC01", - want: "ab", - nSrc: 2, - err: transform.ErrShortDst, - }, - } - for i, tc := range testCases { - tr := tc.handler(charmap.Windows1250.NewEncoder()) - b := make([]byte, tc.sizeDst) - nDst, nSrc, err := tr.Transform(b, []byte(tc.src), true) - if err != tc.err { - t.Errorf("%d:%s: error was %v; want %v", i, tc.desc, err, tc.err) - } - if got := string(b[:nDst]); got != tc.want { - t.Errorf("%d:%s: result was %q: want %q", i, tc.desc, got, tc.want) - } - if nSrc != tc.nSrc { - t.Errorf("%d:%s: nSrc was %d; want %d", i, tc.desc, nSrc, tc.nSrc) - } - - } -} diff --git a/vendor/golang.org/x/text/encoding/example_test.go b/vendor/golang.org/x/text/encoding/example_test.go deleted file mode 100644 index 4f923530..00000000 --- a/vendor/golang.org/x/text/encoding/example_test.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package encoding_test - -import ( - "fmt" - "io" - "os" - "strings" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/unicode" - "golang.org/x/text/transform" -) - -func ExampleDecodeWindows1252() { - sr := strings.NewReader("Gar\xe7on !") - tr := charmap.Windows1252.NewDecoder().Reader(sr) - io.Copy(os.Stdout, tr) - // Output: Garçon ! -} - -func ExampleUTF8Validator() { - for i := 0; i < 2; i++ { - var transformer transform.Transformer - transformer = unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM).NewEncoder() - if i == 1 { - transformer = transform.Chain(encoding.UTF8Validator, transformer) - } - dst := make([]byte, 256) - src := []byte("abc\xffxyz") // src is invalid UTF-8. - nDst, nSrc, err := transformer.Transform(dst, src, true) - fmt.Printf("i=%d: produced %q, consumed %q, error %v\n", - i, dst[:nDst], src[:nSrc], err) - } - // Output: - // i=0: produced "\x00a\x00b\x00c\xff\xfd\x00x\x00y\x00z", consumed "abc\xffxyz", error <nil> - // i=1: produced "\x00a\x00b\x00c", consumed "abc", error encoding: invalid UTF-8 -} diff --git a/vendor/golang.org/x/text/encoding/htmlindex/htmlindex_test.go b/vendor/golang.org/x/text/encoding/htmlindex/htmlindex_test.go deleted file mode 100644 index 3fdab0f4..00000000 --- a/vendor/golang.org/x/text/encoding/htmlindex/htmlindex_test.go +++ /dev/null @@ -1,144 +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 htmlindex - -import ( - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/encoding/unicode" - "golang.org/x/text/language" -) - -func TestGet(t *testing.T) { - for i, tc := range []struct { - name string - canonical string - err error - }{ - {"utf-8", "utf-8", nil}, - {" utf-8 ", "utf-8", nil}, - {" l5 ", "windows-1254", nil}, - {"latin5 ", "windows-1254", nil}, - {"latin 5", "", errInvalidName}, - {"latin-5", "", errInvalidName}, - } { - enc, err := Get(tc.name) - if err != tc.err { - t.Errorf("%d: error was %v; want %v", i, err, tc.err) - } - if err != nil { - continue - } - if got, err := Name(enc); got != tc.canonical { - t.Errorf("%d: Name(Get(%q)) = %q; want %q (%v)", i, tc.name, got, tc.canonical, err) - } - } -} - -func TestTables(t *testing.T) { - for name, index := range nameMap { - got, err := Get(name) - if err != nil { - t.Errorf("%s:err: expected non-nil error", name) - } - if want := encodings[index]; got != want { - t.Errorf("%s:encoding: got %v; want %v", name, got, want) - } - mib, _ := got.(identifier.Interface).ID() - if mibMap[mib] != index { - t.Errorf("%s:mibMab: got %d; want %d", name, mibMap[mib], index) - } - } -} - -func TestName(t *testing.T) { - for i, tc := range []struct { - desc string - enc encoding.Encoding - name string - err error - }{{ - "defined encoding", - charmap.ISO8859_2, - "iso-8859-2", - nil, - }, { - "defined Unicode encoding", - unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), - "utf-16be", - nil, - }, { - "undefined Unicode encoding in HTML standard", - unicode.UTF16(unicode.BigEndian, unicode.UseBOM), - "", - errUnsupported, - }, { - "undefined other encoding in HTML standard", - charmap.CodePage437, - "", - errUnsupported, - }, { - "unknown encoding", - encoding.Nop, - "", - errUnknown, - }} { - name, err := Name(tc.enc) - if name != tc.name || err != tc.err { - t.Errorf("%d:%s: got %q, %v; want %q, %v", i, tc.desc, name, err, tc.name, tc.err) - } - } -} - -func TestLanguageDefault(t *testing.T) { - for _, tc := range []struct{ tag, want string }{ - {"und", "windows-1252"}, // The default value. - {"ar", "windows-1256"}, - {"ba", "windows-1251"}, - {"be", "windows-1251"}, - {"bg", "windows-1251"}, - {"cs", "windows-1250"}, - {"el", "iso-8859-7"}, - {"et", "windows-1257"}, - {"fa", "windows-1256"}, - {"he", "windows-1255"}, - {"hr", "windows-1250"}, - {"hu", "iso-8859-2"}, - {"ja", "shift_jis"}, - {"kk", "windows-1251"}, - {"ko", "euc-kr"}, - {"ku", "windows-1254"}, - {"ky", "windows-1251"}, - {"lt", "windows-1257"}, - {"lv", "windows-1257"}, - {"mk", "windows-1251"}, - {"pl", "iso-8859-2"}, - {"ru", "windows-1251"}, - {"sah", "windows-1251"}, - {"sk", "windows-1250"}, - {"sl", "iso-8859-2"}, - {"sr", "windows-1251"}, - {"tg", "windows-1251"}, - {"th", "windows-874"}, - {"tr", "windows-1254"}, - {"tt", "windows-1251"}, - {"uk", "windows-1251"}, - {"vi", "windows-1258"}, - {"zh-hans", "gb18030"}, - {"zh-hant", "big5"}, - // Variants and close approximates of the above. - {"ar_EG", "windows-1256"}, - {"bs", "windows-1250"}, // Bosnian Latin maps to Croatian. - // Use default fallback in case of miss. - {"nl", "windows-1252"}, - } { - if got := LanguageDefault(language.MustParse(tc.tag)); got != tc.want { - t.Errorf("LanguageDefault(%s) = %s; want %s", tc.tag, got, tc.want) - } - } -} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/example_test.go b/vendor/golang.org/x/text/encoding/ianaindex/example_test.go deleted file mode 100644 index e2a3a7ef..00000000 --- a/vendor/golang.org/x/text/encoding/ianaindex/example_test.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ianaindex_test - -import ( - "fmt" - - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/ianaindex" -) - -func ExampleIndex() { - fmt.Println(ianaindex.MIME.Name(charmap.ISO8859_7)) - fmt.Println(ianaindex.IANA.Name(charmap.ISO8859_7)) - fmt.Println(ianaindex.MIB.Name(charmap.ISO8859_7)) - - e, _ := ianaindex.IANA.Encoding("cp437") - fmt.Println(ianaindex.IANA.Name(e)) - - // Output: - // ISO-8859-7 <nil> - // ISO_8859-7:1987 <nil> - // ISOLatinGreek <nil> - // IBM437 <nil> -} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/gen.go b/vendor/golang.org/x/text/encoding/ianaindex/gen.go deleted file mode 100644 index 1b61b820..00000000 --- a/vendor/golang.org/x/text/encoding/ianaindex/gen.go +++ /dev/null @@ -1,192 +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. - -// +build ignore - -package main - -import ( - "encoding/xml" - "fmt" - "io" - "log" - "sort" - "strconv" - "strings" - - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/internal/gen" -) - -type registry struct { - XMLName xml.Name `xml:"registry"` - Updated string `xml:"updated"` - Registry []struct { - ID string `xml:"id,attr"` - Record []struct { - Name string `xml:"name"` - Xref []struct { - Type string `xml:"type,attr"` - Data string `xml:"data,attr"` - } `xml:"xref"` - Desc struct { - Data string `xml:",innerxml"` - } `xml:"description,"` - MIB string `xml:"value"` - Alias []string `xml:"alias"` - MIME string `xml:"preferred_alias"` - } `xml:"record"` - } `xml:"registry"` -} - -func main() { - r := gen.OpenIANAFile("assignments/character-sets/character-sets.xml") - reg := &registry{} - if err := xml.NewDecoder(r).Decode(&reg); err != nil && err != io.EOF { - log.Fatalf("Error decoding charset registry: %v", err) - } - if len(reg.Registry) == 0 || reg.Registry[0].ID != "character-sets-1" { - log.Fatalf("Unexpected ID %s", reg.Registry[0].ID) - } - - x := &indexInfo{} - - for _, rec := range reg.Registry[0].Record { - mib := identifier.MIB(parseInt(rec.MIB)) - x.addEntry(mib, rec.Name) - for _, a := range rec.Alias { - a = strings.Split(a, " ")[0] // strip comments. - x.addAlias(a, mib) - // MIB name aliases are prefixed with a "cs" (character set) in the - // registry to identify them as display names and to ensure that - // the name starts with a lowercase letter in case it is used as - // an identifier. We remove it to be left with a nice clean name. - if strings.HasPrefix(a, "cs") { - x.setName(2, a[2:]) - } - } - if rec.MIME != "" { - x.addAlias(rec.MIME, mib) - x.setName(1, rec.MIME) - } - } - - w := gen.NewCodeWriter() - - fmt.Fprintln(w, `import "golang.org/x/text/encoding/internal/identifier"`) - - writeIndex(w, x) - - w.WriteGoFile("tables.go", "ianaindex") -} - -type alias struct { - name string - mib identifier.MIB -} - -type indexInfo struct { - // compacted index from code to MIB - codeToMIB []identifier.MIB - alias []alias - names [][3]string -} - -func (ii *indexInfo) Len() int { - return len(ii.codeToMIB) -} - -func (ii *indexInfo) Less(a, b int) bool { - return ii.codeToMIB[a] < ii.codeToMIB[b] -} - -func (ii *indexInfo) Swap(a, b int) { - ii.codeToMIB[a], ii.codeToMIB[b] = ii.codeToMIB[b], ii.codeToMIB[a] - // Co-sort the names. - ii.names[a], ii.names[b] = ii.names[b], ii.names[a] -} - -func (ii *indexInfo) setName(i int, name string) { - ii.names[len(ii.names)-1][i] = name -} - -func (ii *indexInfo) addEntry(mib identifier.MIB, name string) { - ii.names = append(ii.names, [3]string{name, name, name}) - ii.addAlias(name, mib) - ii.codeToMIB = append(ii.codeToMIB, mib) -} - -func (ii *indexInfo) addAlias(name string, mib identifier.MIB) { - // Don't add duplicates for the same mib. Adding duplicate aliases for - // different MIBs will cause the compiler to barf on an invalid map: great!. - for i := len(ii.alias) - 1; i >= 0 && ii.alias[i].mib == mib; i-- { - if ii.alias[i].name == name { - return - } - } - ii.alias = append(ii.alias, alias{name, mib}) - lower := strings.ToLower(name) - if lower != name { - ii.addAlias(lower, mib) - } -} - -const maxMIMENameLen = '0' - 1 // officially 40, but we leave some buffer. - -func writeIndex(w *gen.CodeWriter, x *indexInfo) { - sort.Stable(x) - - // Write constants. - fmt.Fprintln(w, "const (") - for i, m := range x.codeToMIB { - if i == 0 { - fmt.Fprintf(w, "enc%d = iota\n", m) - } else { - fmt.Fprintf(w, "enc%d\n", m) - } - } - fmt.Fprintln(w, "numIANA") - fmt.Fprintln(w, ")") - - w.WriteVar("ianaToMIB", x.codeToMIB) - - var ianaNames, mibNames []string - for _, names := range x.names { - n := names[0] - if names[0] != names[1] { - // MIME names are mostly identical to IANA names. We share the - // tables by setting the first byte of the string to an index into - // the string itself (< maxMIMENameLen) to the IANA name. The MIME - // name immediately follows the index. - x := len(names[1]) + 1 - if x > maxMIMENameLen { - log.Fatalf("MIME name length (%d) > %d", x, maxMIMENameLen) - } - n = string(x) + names[1] + names[0] - } - ianaNames = append(ianaNames, n) - mibNames = append(mibNames, names[2]) - } - - w.WriteVar("ianaNames", ianaNames) - w.WriteVar("mibNames", mibNames) - - w.WriteComment(` - TODO: Instead of using a map, we could use binary search strings doing - on-the fly lower-casing per character. This allows to always avoid - allocation and will be considerably more compact.`) - fmt.Fprintln(w, "var ianaAliases = map[string]int{") - for _, a := range x.alias { - fmt.Fprintf(w, "%q: enc%d,\n", a.name, a.mib) - } - fmt.Fprintln(w, "}") -} - -func parseInt(s string) int { - x, err := strconv.ParseInt(s, 10, 64) - if err != nil { - log.Fatalf("Could not parse integer: %v", err) - } - return int(x) -} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go b/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go deleted file mode 100644 index 49b30704..00000000 --- a/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go +++ /dev/null @@ -1,209 +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. - -//go:generate go run gen.go - -// Package ianaindex maps names to Encodings as specified by the IANA registry. -// This includes both the MIME and IANA names. -// -// See http://www.iana.org/assignments/character-sets/character-sets.xhtml for -// more details. -package ianaindex - -import ( - "errors" - "sort" - "strings" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/encoding/japanese" - "golang.org/x/text/encoding/korean" - "golang.org/x/text/encoding/simplifiedchinese" - "golang.org/x/text/encoding/traditionalchinese" - "golang.org/x/text/encoding/unicode" -) - -// TODO: remove the "Status... incomplete" in the package doc comment. -// TODO: allow users to specify their own aliases? -// TODO: allow users to specify their own indexes? -// TODO: allow canonicalizing names - -// NOTE: only use these top-level variables if we can get the linker to drop -// the indexes when they are not used. Make them a function or perhaps only -// support MIME otherwise. - -var ( - // MIME is an index to map MIME names. - MIME *Index = mime - - // IANA is an index that supports all names and aliases using IANA names as - // the canonical identifier. - IANA *Index = iana - - // MIB is an index that associates the MIB display name with an Encoding. - MIB *Index = mib - - mime = &Index{mimeName, ianaToMIB, ianaAliases, encodings[:]} - iana = &Index{ianaName, ianaToMIB, ianaAliases, encodings[:]} - mib = &Index{mibName, ianaToMIB, ianaAliases, encodings[:]} -) - -// Index maps names registered by IANA to Encodings. -// Currently different Indexes only differ in the names they return for -// encodings. In the future they may also differ in supported aliases. -type Index struct { - names func(i int) string - toMIB []identifier.MIB // Sorted slice of supported MIBs - alias map[string]int - enc []encoding.Encoding -} - -var ( - errInvalidName = errors.New("ianaindex: invalid encoding name") - errUnknown = errors.New("ianaindex: unknown Encoding") - errUnsupported = errors.New("ianaindex: unsupported Encoding") -) - -// Encoding returns an Encoding for IANA-registered names. Matching is -// case-insensitive. -func (x *Index) Encoding(name string) (encoding.Encoding, error) { - name = strings.TrimSpace(name) - // First try without lowercasing (possibly creating an allocation). - i, ok := x.alias[name] - if !ok { - i, ok = x.alias[strings.ToLower(name)] - if !ok { - return nil, errInvalidName - } - } - return x.enc[i], nil -} - -// Name reports the canonical name of the given Encoding. It will return an -// error if the e is not associated with a known encoding scheme. -func (x *Index) Name(e encoding.Encoding) (string, error) { - id, ok := e.(identifier.Interface) - if !ok { - return "", errUnknown - } - mib, _ := id.ID() - if mib == 0 { - return "", errUnknown - } - v := findMIB(x.toMIB, mib) - if v == -1 { - return "", errUnsupported - } - return x.names(v), nil -} - -// TODO: the coverage of this index is rather spotty. Allowing users to set -// encodings would allow: -// - users to increase coverage -// - allow a partially loaded set of encodings in case the user doesn't need to -// them all. -// - write an OS-specific wrapper for supported encodings and set them. -// The exact definition of Set depends a bit on if and how we want to let users -// write their own Encoding implementations. Also, it is not possible yet to -// only partially load the encodings without doing some refactoring. Until this -// is solved, we might as well not support Set. -// // Set sets the e to be used for the encoding scheme identified by name. Only -// // canonical names may be used. An empty name assigns e to its internally -// // associated encoding scheme. -// func (x *Index) Set(name string, e encoding.Encoding) error { -// panic("TODO: implement") -// } - -func findMIB(x []identifier.MIB, mib identifier.MIB) int { - i := sort.Search(len(x), func(i int) bool { return x[i] >= mib }) - if i < len(x) && x[i] == mib { - return i - } - return -1 -} - -const maxMIMENameLen = '0' - 1 // officially 40, but we leave some buffer. - -func mimeName(x int) string { - n := ianaNames[x] - // See gen.go for a description of the encoding. - if n[0] <= maxMIMENameLen { - return n[1:n[0]] - } - return n -} - -func ianaName(x int) string { - n := ianaNames[x] - // See gen.go for a description of the encoding. - if n[0] <= maxMIMENameLen { - return n[n[0]:] - } - return n -} - -func mibName(x int) string { - return mibNames[x] -} - -var encodings = [numIANA]encoding.Encoding{ - enc106: unicode.UTF8, - enc1015: unicode.UTF16(unicode.BigEndian, unicode.UseBOM), - enc1013: unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), - enc1014: unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), - enc2028: charmap.CodePage037, - enc2011: charmap.CodePage437, - enc2009: charmap.CodePage850, - enc2010: charmap.CodePage852, - enc2046: charmap.CodePage855, - enc2089: charmap.CodePage858, - enc2048: charmap.CodePage860, - enc2013: charmap.CodePage862, - enc2050: charmap.CodePage863, - enc2052: charmap.CodePage865, - enc2086: charmap.CodePage866, - enc2102: charmap.CodePage1047, - enc2091: charmap.CodePage1140, - enc4: charmap.ISO8859_1, - enc5: charmap.ISO8859_2, - enc6: charmap.ISO8859_3, - enc7: charmap.ISO8859_4, - enc8: charmap.ISO8859_5, - enc9: charmap.ISO8859_6, - enc81: charmap.ISO8859_6E, - enc82: charmap.ISO8859_6I, - enc10: charmap.ISO8859_7, - enc11: charmap.ISO8859_8, - enc84: charmap.ISO8859_8E, - enc85: charmap.ISO8859_8I, - enc12: charmap.ISO8859_9, - enc13: charmap.ISO8859_10, - enc109: charmap.ISO8859_13, - enc110: charmap.ISO8859_14, - enc111: charmap.ISO8859_15, - enc112: charmap.ISO8859_16, - enc2084: charmap.KOI8R, - enc2088: charmap.KOI8U, - enc2027: charmap.Macintosh, - enc2109: charmap.Windows874, - enc2250: charmap.Windows1250, - enc2251: charmap.Windows1251, - enc2252: charmap.Windows1252, - enc2253: charmap.Windows1253, - enc2254: charmap.Windows1254, - enc2255: charmap.Windows1255, - enc2256: charmap.Windows1256, - enc2257: charmap.Windows1257, - enc2258: charmap.Windows1258, - enc18: japanese.EUCJP, - enc39: japanese.ISO2022JP, - enc17: japanese.ShiftJIS, - enc38: korean.EUCKR, - enc114: simplifiedchinese.GB18030, - enc113: simplifiedchinese.GBK, - enc2085: simplifiedchinese.HZGB2312, - enc2026: traditionalchinese.Big5, -} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go b/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go deleted file mode 100644 index 20a2131f..00000000 --- a/vendor/golang.org/x/text/encoding/ianaindex/ianaindex_test.go +++ /dev/null @@ -1,192 +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 ianaindex - -import ( - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/encoding/japanese" - "golang.org/x/text/encoding/korean" - "golang.org/x/text/encoding/simplifiedchinese" - "golang.org/x/text/encoding/traditionalchinese" - "golang.org/x/text/encoding/unicode" -) - -var All = [][]encoding.Encoding{ - unicode.All, - charmap.All, - japanese.All, - korean.All, - simplifiedchinese.All, - traditionalchinese.All, -} - -// TestAllIANA tests whether an Encoding supported in x/text is defined by IANA but -// not supported by this package. -func TestAllIANA(t *testing.T) { - for _, ea := range All { - for _, e := range ea { - mib, _ := e.(identifier.Interface).ID() - if x := findMIB(ianaToMIB, mib); x != -1 && encodings[x] == nil { - t.Errorf("supported MIB %v (%v) not in index", mib, e) - } - } - } -} - -// TestNotSupported reports the encodings in IANA, but not by x/text. -func TestNotSupported(t *testing.T) { - mibs := map[identifier.MIB]bool{} - for _, ea := range All { - for _, e := range ea { - mib, _ := e.(identifier.Interface).ID() - mibs[mib] = true - } - } - - // Many encodings in the IANA index will likely not be suppored by the - // Go encodings. That is fine. - // TODO: consider wheter we should add this test. - // for code, mib := range ianaToMIB { - // t.Run(fmt.Sprint("IANA:", mib), func(t *testing.T) { - // if !mibs[mib] { - // t.Skipf("IANA encoding %s (MIB %v) not supported", - // ianaNames[code], mib) - // } - // }) - // } -} - -func TestEncoding(t *testing.T) { - testCases := []struct { - index *Index - name string - canonical string - err error - }{ - {MIME, "utf-8", "UTF-8", nil}, - {MIME, " utf-8 ", "UTF-8", nil}, - {MIME, " l5 ", "ISO-8859-9", nil}, - {MIME, "latin5 ", "ISO-8859-9", nil}, - {MIME, "LATIN5 ", "ISO-8859-9", nil}, - {MIME, "latin 5", "", errInvalidName}, - {MIME, "latin-5", "", errInvalidName}, - - {IANA, "utf-8", "UTF-8", nil}, - {IANA, " utf-8 ", "UTF-8", nil}, - {IANA, " l5 ", "ISO_8859-9:1989", nil}, - {IANA, "latin5 ", "ISO_8859-9:1989", nil}, - {IANA, "LATIN5 ", "ISO_8859-9:1989", nil}, - {IANA, "latin 5", "", errInvalidName}, - {IANA, "latin-5", "", errInvalidName}, - - {MIB, "utf-8", "UTF8", nil}, - {MIB, " utf-8 ", "UTF8", nil}, - {MIB, " l5 ", "ISOLatin5", nil}, - {MIB, "latin5 ", "ISOLatin5", nil}, - {MIB, "LATIN5 ", "ISOLatin5", nil}, - {MIB, "latin 5", "", errInvalidName}, - {MIB, "latin-5", "", errInvalidName}, - } - for i, tc := range testCases { - enc, err := tc.index.Encoding(tc.name) - if err != tc.err { - t.Errorf("%d: error was %v; want %v", i, err, tc.err) - } - if err != nil { - continue - } - if got, err := tc.index.Name(enc); got != tc.canonical { - t.Errorf("%d: Name(Encoding(%q)) = %q; want %q (%v)", i, tc.name, got, tc.canonical, err) - } - } -} - -func TestTables(t *testing.T) { - for i, x := range []*Index{MIME, IANA} { - for name, index := range x.alias { - got, err := x.Encoding(name) - if err != nil { - t.Errorf("%d%s:err: unexpected error %v", i, name, err) - } - if want := x.enc[index]; got != want { - t.Errorf("%d%s:encoding: got %v; want %v", i, name, got, want) - } - if got != nil { - mib, _ := got.(identifier.Interface).ID() - if i := findMIB(x.toMIB, mib); i != index { - t.Errorf("%d%s:mib: got %d; want %d", i, name, i, index) - } - } - } - } -} - -type unsupported struct { - encoding.Encoding -} - -func (unsupported) ID() (identifier.MIB, string) { return 9999, "" } - -func TestName(t *testing.T) { - testCases := []struct { - desc string - enc encoding.Encoding - f func(e encoding.Encoding) (string, error) - name string - err error - }{{ - "defined encoding", - charmap.ISO8859_2, - MIME.Name, - "ISO-8859-2", - nil, - }, { - "defined Unicode encoding", - unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), - IANA.Name, - "UTF-16BE", - nil, - }, { - "another defined Unicode encoding", - unicode.UTF16(unicode.BigEndian, unicode.UseBOM), - MIME.Name, - "UTF-16", - nil, - }, { - "unknown Unicode encoding", - unicode.UTF16(unicode.BigEndian, unicode.ExpectBOM), - MIME.Name, - "", - errUnknown, - }, { - "undefined encoding", - unsupported{}, - MIME.Name, - "", - errUnsupported, - }, { - "undefined other encoding in HTML standard", - charmap.CodePage437, - IANA.Name, - "IBM437", - nil, - }, { - "unknown encoding", - encoding.Nop, - IANA.Name, - "", - errUnknown, - }} - for i, tc := range testCases { - name, err := tc.f(tc.enc) - if name != tc.name || err != tc.err { - t.Errorf("%d:%s: got %q, %v; want %q, %v", i, tc.desc, name, err, tc.name, tc.err) - } - } -} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/tables.go b/vendor/golang.org/x/text/encoding/ianaindex/tables.go deleted file mode 100644 index 98a1d77c..00000000 --- a/vendor/golang.org/x/text/encoding/ianaindex/tables.go +++ /dev/null @@ -1,2348 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package ianaindex - -import "golang.org/x/text/encoding/internal/identifier" - -const ( - enc3 = iota - enc4 - enc5 - enc6 - enc7 - enc8 - enc9 - enc10 - enc11 - enc12 - enc13 - enc14 - enc15 - enc16 - enc17 - enc18 - enc19 - enc20 - enc21 - enc22 - enc23 - enc24 - enc25 - enc26 - enc27 - enc28 - enc29 - enc30 - enc31 - enc32 - enc33 - enc34 - enc35 - enc36 - enc37 - enc38 - enc39 - enc40 - enc41 - enc42 - enc43 - enc44 - enc45 - enc46 - enc47 - enc48 - enc49 - enc50 - enc51 - enc52 - enc53 - enc54 - enc55 - enc56 - enc57 - enc58 - enc59 - enc60 - enc61 - enc62 - enc63 - enc64 - enc65 - enc66 - enc67 - enc68 - enc69 - enc70 - enc71 - enc72 - enc73 - enc74 - enc75 - enc76 - enc77 - enc78 - enc79 - enc80 - enc81 - enc82 - enc83 - enc84 - enc85 - enc86 - enc87 - enc88 - enc89 - enc90 - enc91 - enc92 - enc93 - enc94 - enc95 - enc96 - enc97 - enc98 - enc99 - enc100 - enc101 - enc102 - enc103 - enc104 - enc105 - enc106 - enc109 - enc110 - enc111 - enc112 - enc113 - enc114 - enc115 - enc116 - enc117 - enc118 - enc119 - enc1000 - enc1001 - enc1002 - enc1003 - enc1004 - enc1005 - enc1006 - enc1007 - enc1008 - enc1009 - enc1010 - enc1011 - enc1012 - enc1013 - enc1014 - enc1015 - enc1016 - enc1017 - enc1018 - enc1019 - enc1020 - enc2000 - enc2001 - enc2002 - enc2003 - enc2004 - enc2005 - enc2006 - enc2007 - enc2008 - enc2009 - enc2010 - enc2011 - enc2012 - enc2013 - enc2014 - enc2015 - enc2016 - enc2017 - enc2018 - enc2019 - enc2020 - enc2021 - enc2022 - enc2023 - enc2024 - enc2025 - enc2026 - enc2027 - enc2028 - enc2029 - enc2030 - enc2031 - enc2032 - enc2033 - enc2034 - enc2035 - enc2036 - enc2037 - enc2038 - enc2039 - enc2040 - enc2041 - enc2042 - enc2043 - enc2044 - enc2045 - enc2046 - enc2047 - enc2048 - enc2049 - enc2050 - enc2051 - enc2052 - enc2053 - enc2054 - enc2055 - enc2056 - enc2057 - enc2058 - enc2059 - enc2060 - enc2061 - enc2062 - enc2063 - enc2064 - enc2065 - enc2066 - enc2067 - enc2068 - enc2069 - enc2070 - enc2071 - enc2072 - enc2073 - enc2074 - enc2075 - enc2076 - enc2077 - enc2078 - enc2079 - enc2080 - enc2081 - enc2082 - enc2083 - enc2084 - enc2085 - enc2086 - enc2087 - enc2088 - enc2089 - enc2090 - enc2091 - enc2092 - enc2093 - enc2094 - enc2095 - enc2096 - enc2097 - enc2098 - enc2099 - enc2100 - enc2101 - enc2102 - enc2103 - enc2104 - enc2105 - enc2106 - enc2107 - enc2108 - enc2109 - enc2250 - enc2251 - enc2252 - enc2253 - enc2254 - enc2255 - enc2256 - enc2257 - enc2258 - enc2259 - enc2260 - numIANA -) - -var ianaToMIB = []identifier.MIB{ // 257 elements - // Entry 0 - 3F - 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, - 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, - 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, - 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, - 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, - 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, - 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, - 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, - // Entry 40 - 7F - 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, - 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, - 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, - 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, - 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, - 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x03e8, 0x03e9, 0x03ea, 0x03eb, 0x03ec, - 0x03ed, 0x03ee, 0x03ef, 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03f4, - // Entry 80 - BF - 0x03f5, 0x03f6, 0x03f7, 0x03f8, 0x03f9, 0x03fa, 0x03fb, 0x03fc, - 0x07d0, 0x07d1, 0x07d2, 0x07d3, 0x07d4, 0x07d5, 0x07d6, 0x07d7, - 0x07d8, 0x07d9, 0x07da, 0x07db, 0x07dc, 0x07dd, 0x07de, 0x07df, - 0x07e0, 0x07e1, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, - 0x07e8, 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, - 0x07f0, 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, - 0x07f8, 0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, - 0x0800, 0x0801, 0x0802, 0x0803, 0x0804, 0x0805, 0x0806, 0x0807, - // Entry C0 - FF - 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e, 0x080f, - 0x0810, 0x0811, 0x0812, 0x0813, 0x0814, 0x0815, 0x0816, 0x0817, - 0x0818, 0x0819, 0x081a, 0x081b, 0x081c, 0x081d, 0x081e, 0x081f, - 0x0820, 0x0821, 0x0822, 0x0823, 0x0824, 0x0825, 0x0826, 0x0827, - 0x0828, 0x0829, 0x082a, 0x082b, 0x082c, 0x082d, 0x082e, 0x082f, - 0x0830, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837, - 0x0838, 0x0839, 0x083a, 0x083b, 0x083c, 0x083d, 0x08ca, 0x08cb, - 0x08cc, 0x08cd, 0x08ce, 0x08cf, 0x08d0, 0x08d1, 0x08d2, 0x08d3, - // Entry 100 - 13F - 0x08d4, -} // Size: 538 bytes - -var ianaNames = []string{ // 257 elements - "US-ASCII", - "\vISO-8859-1ISO_8859-1:1987", - "\vISO-8859-2ISO_8859-2:1987", - "\vISO-8859-3ISO_8859-3:1988", - "\vISO-8859-4ISO_8859-4:1988", - "\vISO-8859-5ISO_8859-5:1988", - "\vISO-8859-6ISO_8859-6:1987", - "\vISO-8859-7ISO_8859-7:1987", - "\vISO-8859-8ISO_8859-8:1988", - "\vISO-8859-9ISO_8859-9:1989", - "ISO-8859-10", - "ISO_6937-2-add", - "JIS_X0201", - "JIS_Encoding", - "Shift_JIS", - "\x07EUC-JPExtended_UNIX_Code_Packed_Format_for_Japanese", - "Extended_UNIX_Code_Fixed_Width_for_Japanese", - "BS_4730", - "SEN_850200_C", - "IT", - "ES", - "DIN_66003", - "NS_4551-1", - "NF_Z_62-010", - "ISO-10646-UTF-1", - "ISO_646.basic:1983", - "INVARIANT", - "ISO_646.irv:1983", - "NATS-SEFI", - "NATS-SEFI-ADD", - "NATS-DANO", - "NATS-DANO-ADD", - "SEN_850200_B", - "KS_C_5601-1987", - "ISO-2022-KR", - "EUC-KR", - "ISO-2022-JP", - "ISO-2022-JP-2", - "JIS_C6220-1969-jp", - "JIS_C6220-1969-ro", - "PT", - "greek7-old", - "latin-greek", - "NF_Z_62-010_(1973)", - "Latin-greek-1", - "ISO_5427", - "JIS_C6226-1978", - "BS_viewdata", - "INIS", - "INIS-8", - "INIS-cyrillic", - "ISO_5427:1981", - "ISO_5428:1980", - "GB_1988-80", - "GB_2312-80", - "NS_4551-2", - "videotex-suppl", - "PT2", - "ES2", - "MSZ_7795.3", - "JIS_C6226-1983", - "greek7", - "ASMO_449", - "iso-ir-90", - "JIS_C6229-1984-a", - "JIS_C6229-1984-b", - "JIS_C6229-1984-b-add", - "JIS_C6229-1984-hand", - "JIS_C6229-1984-hand-add", - "JIS_C6229-1984-kana", - "ISO_2033-1983", - "ANSI_X3.110-1983", - "T.61-7bit", - "T.61-8bit", - "ECMA-cyrillic", - "CSA_Z243.4-1985-1", - "CSA_Z243.4-1985-2", - "CSA_Z243.4-1985-gr", - "\rISO-8859-6-EISO_8859-6-E", - "\rISO-8859-6-IISO_8859-6-I", - "T.101-G2", - "\rISO-8859-8-EISO_8859-8-E", - "\rISO-8859-8-IISO_8859-8-I", - "CSN_369103", - "JUS_I.B1.002", - "IEC_P27-1", - "JUS_I.B1.003-serb", - "JUS_I.B1.003-mac", - "greek-ccitt", - "NC_NC00-10:81", - "ISO_6937-2-25", - "GOST_19768-74", - "ISO_8859-supp", - "ISO_10367-box", - "latin-lap", - "JIS_X0212-1990", - "DS_2089", - "us-dk", - "dk-us", - "KSC5636", - "UNICODE-1-1-UTF-7", - "ISO-2022-CN", - "ISO-2022-CN-EXT", - "UTF-8", - "ISO-8859-13", - "ISO-8859-14", - "ISO-8859-15", - "ISO-8859-16", - "GBK", - "GB18030", - "OSD_EBCDIC_DF04_15", - "OSD_EBCDIC_DF03_IRV", - "OSD_EBCDIC_DF04_1", - "ISO-11548-1", - "KZ-1048", - "ISO-10646-UCS-2", - "ISO-10646-UCS-4", - "ISO-10646-UCS-Basic", - "ISO-10646-Unicode-Latin1", - "ISO-10646-J-1", - "ISO-Unicode-IBM-1261", - "ISO-Unicode-IBM-1268", - "ISO-Unicode-IBM-1276", - "ISO-Unicode-IBM-1264", - "ISO-Unicode-IBM-1265", - "UNICODE-1-1", - "SCSU", - "UTF-7", - "UTF-16BE", - "UTF-16LE", - "UTF-16", - "CESU-8", - "UTF-32", - "UTF-32BE", - "UTF-32LE", - "BOCU-1", - "ISO-8859-1-Windows-3.0-Latin-1", - "ISO-8859-1-Windows-3.1-Latin-1", - "ISO-8859-2-Windows-Latin-2", - "ISO-8859-9-Windows-Latin-5", - "hp-roman8", - "Adobe-Standard-Encoding", - "Ventura-US", - "Ventura-International", - "DEC-MCS", - "IBM850", - "IBM852", - "IBM437", - "PC8-Danish-Norwegian", - "IBM862", - "PC8-Turkish", - "IBM-Symbols", - "IBM-Thai", - "HP-Legal", - "HP-Pi-font", - "HP-Math8", - "Adobe-Symbol-Encoding", - "HP-DeskTop", - "Ventura-Math", - "Microsoft-Publishing", - "Windows-31J", - "GB2312", - "Big5", - "macintosh", - "IBM037", - "IBM038", - "IBM273", - "IBM274", - "IBM275", - "IBM277", - "IBM278", - "IBM280", - "IBM281", - "IBM284", - "IBM285", - "IBM290", - "IBM297", - "IBM420", - "IBM423", - "IBM424", - "IBM500", - "IBM851", - "IBM855", - "IBM857", - "IBM860", - "IBM861", - "IBM863", - "IBM864", - "IBM865", - "IBM868", - "IBM869", - "IBM870", - "IBM871", - "IBM880", - "IBM891", - "IBM903", - "IBM904", - "IBM905", - "IBM918", - "IBM1026", - "EBCDIC-AT-DE", - "EBCDIC-AT-DE-A", - "EBCDIC-CA-FR", - "EBCDIC-DK-NO", - "EBCDIC-DK-NO-A", - "EBCDIC-FI-SE", - "EBCDIC-FI-SE-A", - "EBCDIC-FR", - "EBCDIC-IT", - "EBCDIC-PT", - "EBCDIC-ES", - "EBCDIC-ES-A", - "EBCDIC-ES-S", - "EBCDIC-UK", - "EBCDIC-US", - "UNKNOWN-8BIT", - "MNEMONIC", - "MNEM", - "VISCII", - "VIQR", - "KOI8-R", - "HZ-GB-2312", - "IBM866", - "IBM775", - "KOI8-U", - "IBM00858", - "IBM00924", - "IBM01140", - "IBM01141", - "IBM01142", - "IBM01143", - "IBM01144", - "IBM01145", - "IBM01146", - "IBM01147", - "IBM01148", - "IBM01149", - "Big5-HKSCS", - "IBM1047", - "PTCP154", - "Amiga-1251", - "KOI7-switched", - "BRF", - "TSCII", - "CP51932", - "windows-874", - "windows-1250", - "windows-1251", - "windows-1252", - "windows-1253", - "windows-1254", - "windows-1255", - "windows-1256", - "windows-1257", - "windows-1258", - "TIS-620", - "CP50220", -} // Size: 7088 bytes - -var mibNames = []string{ // 257 elements - "ASCII", - "ISOLatin1", - "ISOLatin2", - "ISOLatin3", - "ISOLatin4", - "ISOLatinCyrillic", - "ISOLatinArabic", - "ISOLatinGreek", - "ISOLatinHebrew", - "ISOLatin5", - "ISOLatin6", - "ISOTextComm", - "HalfWidthKatakana", - "JISEncoding", - "ShiftJIS", - "EUCPkdFmtJapanese", - "EUCFixWidJapanese", - "ISO4UnitedKingdom", - "ISO11SwedishForNames", - "ISO15Italian", - "ISO17Spanish", - "ISO21German", - "ISO60Norwegian1", - "ISO69French", - "ISO10646UTF1", - "ISO646basic1983", - "INVARIANT", - "ISO2IntlRefVersion", - "NATSSEFI", - "NATSSEFIADD", - "NATSDANO", - "NATSDANOADD", - "ISO10Swedish", - "KSC56011987", - "ISO2022KR", - "EUCKR", - "ISO2022JP", - "ISO2022JP2", - "ISO13JISC6220jp", - "ISO14JISC6220ro", - "ISO16Portuguese", - "ISO18Greek7Old", - "ISO19LatinGreek", - "ISO25French", - "ISO27LatinGreek1", - "ISO5427Cyrillic", - "ISO42JISC62261978", - "ISO47BSViewdata", - "ISO49INIS", - "ISO50INIS8", - "ISO51INISCyrillic", - "ISO54271981", - "ISO5428Greek", - "ISO57GB1988", - "ISO58GB231280", - "ISO61Norwegian2", - "ISO70VideotexSupp1", - "ISO84Portuguese2", - "ISO85Spanish2", - "ISO86Hungarian", - "ISO87JISX0208", - "ISO88Greek7", - "ISO89ASMO449", - "ISO90", - "ISO91JISC62291984a", - "ISO92JISC62991984b", - "ISO93JIS62291984badd", - "ISO94JIS62291984hand", - "ISO95JIS62291984handadd", - "ISO96JISC62291984kana", - "ISO2033", - "ISO99NAPLPS", - "ISO102T617bit", - "ISO103T618bit", - "ISO111ECMACyrillic", - "ISO121Canadian1", - "ISO122Canadian2", - "ISO123CSAZ24341985gr", - "ISO88596E", - "ISO88596I", - "ISO128T101G2", - "ISO88598E", - "ISO88598I", - "ISO139CSN369103", - "ISO141JUSIB1002", - "ISO143IECP271", - "ISO146Serbian", - "ISO147Macedonian", - "ISO150GreekCCITT", - "ISO151Cuba", - "ISO6937Add", - "ISO153GOST1976874", - "ISO8859Supp", - "ISO10367Box", - "ISO158Lap", - "ISO159JISX02121990", - "ISO646Danish", - "USDK", - "DKUS", - "KSC5636", - "Unicode11UTF7", - "ISO2022CN", - "ISO2022CNEXT", - "UTF8", - "ISO885913", - "ISO885914", - "ISO885915", - "ISO885916", - "GBK", - "GB18030", - "OSDEBCDICDF0415", - "OSDEBCDICDF03IRV", - "OSDEBCDICDF041", - "ISO115481", - "KZ1048", - "Unicode", - "UCS4", - "UnicodeASCII", - "UnicodeLatin1", - "UnicodeJapanese", - "UnicodeIBM1261", - "UnicodeIBM1268", - "UnicodeIBM1276", - "UnicodeIBM1264", - "UnicodeIBM1265", - "Unicode11", - "SCSU", - "UTF7", - "UTF16BE", - "UTF16LE", - "UTF16", - "CESU-8", - "UTF32", - "UTF32BE", - "UTF32LE", - "BOCU-1", - "Windows30Latin1", - "Windows31Latin1", - "Windows31Latin2", - "Windows31Latin5", - "HPRoman8", - "AdobeStandardEncoding", - "VenturaUS", - "VenturaInternational", - "DECMCS", - "PC850Multilingual", - "PCp852", - "PC8CodePage437", - "PC8DanishNorwegian", - "PC862LatinHebrew", - "PC8Turkish", - "IBMSymbols", - "IBMThai", - "HPLegal", - "HPPiFont", - "HPMath8", - "HPPSMath", - "HPDesktop", - "VenturaMath", - "MicrosoftPublishing", - "Windows31J", - "GB2312", - "Big5", - "Macintosh", - "IBM037", - "IBM038", - "IBM273", - "IBM274", - "IBM275", - "IBM277", - "IBM278", - "IBM280", - "IBM281", - "IBM284", - "IBM285", - "IBM290", - "IBM297", - "IBM420", - "IBM423", - "IBM424", - "IBM500", - "IBM851", - "IBM855", - "IBM857", - "IBM860", - "IBM861", - "IBM863", - "IBM864", - "IBM865", - "IBM868", - "IBM869", - "IBM870", - "IBM871", - "IBM880", - "IBM891", - "IBM903", - "IBBM904", - "IBM905", - "IBM918", - "IBM1026", - "IBMEBCDICATDE", - "EBCDICATDEA", - "EBCDICCAFR", - "EBCDICDKNO", - "EBCDICDKNOA", - "EBCDICFISE", - "EBCDICFISEA", - "EBCDICFR", - "EBCDICIT", - "EBCDICPT", - "EBCDICES", - "EBCDICESA", - "EBCDICESS", - "EBCDICUK", - "EBCDICUS", - "Unknown8BiT", - "Mnemonic", - "Mnem", - "VISCII", - "VIQR", - "KOI8R", - "HZ-GB-2312", - "IBM866", - "PC775Baltic", - "KOI8U", - "IBM00858", - "IBM00924", - "IBM01140", - "IBM01141", - "IBM01142", - "IBM01143", - "IBM01144", - "IBM01145", - "IBM01146", - "IBM01147", - "IBM01148", - "IBM01149", - "Big5HKSCS", - "IBM1047", - "PTCP154", - "Amiga1251\n(Aliases", - "KOI7switched", - "BRF", - "TSCII", - "CP51932", - "windows874", - "windows1250", - "windows1251", - "windows1252", - "windows1253", - "windows1254", - "windows1255", - "windows1256", - "windows1257", - "windows1258", - "TIS620", - "CP50220", -} // Size: 6776 bytes - -// TODO: Instead of using a map, we could use binary search strings doing -// on-the fly lower-casing per character. This allows to always avoid -// allocation and will be considerably more compact. -var ianaAliases = map[string]int{ - "US-ASCII": enc3, - "us-ascii": enc3, - "iso-ir-6": enc3, - "ANSI_X3.4-1968": enc3, - "ansi_x3.4-1968": enc3, - "ANSI_X3.4-1986": enc3, - "ansi_x3.4-1986": enc3, - "ISO_646.irv:1991": enc3, - "iso_646.irv:1991": enc3, - "ISO646-US": enc3, - "iso646-us": enc3, - "us": enc3, - "IBM367": enc3, - "ibm367": enc3, - "cp367": enc3, - "csASCII": enc3, - "csascii": enc3, - "ISO_8859-1:1987": enc4, - "iso_8859-1:1987": enc4, - "iso-ir-100": enc4, - "ISO_8859-1": enc4, - "iso_8859-1": enc4, - "ISO-8859-1": enc4, - "iso-8859-1": enc4, - "latin1": enc4, - "l1": enc4, - "IBM819": enc4, - "ibm819": enc4, - "CP819": enc4, - "cp819": enc4, - "csISOLatin1": enc4, - "csisolatin1": enc4, - "ISO_8859-2:1987": enc5, - "iso_8859-2:1987": enc5, - "iso-ir-101": enc5, - "ISO_8859-2": enc5, - "iso_8859-2": enc5, - "ISO-8859-2": enc5, - "iso-8859-2": enc5, - "latin2": enc5, - "l2": enc5, - "csISOLatin2": enc5, - "csisolatin2": enc5, - "ISO_8859-3:1988": enc6, - "iso_8859-3:1988": enc6, - "iso-ir-109": enc6, - "ISO_8859-3": enc6, - "iso_8859-3": enc6, - "ISO-8859-3": enc6, - "iso-8859-3": enc6, - "latin3": enc6, - "l3": enc6, - "csISOLatin3": enc6, - "csisolatin3": enc6, - "ISO_8859-4:1988": enc7, - "iso_8859-4:1988": enc7, - "iso-ir-110": enc7, - "ISO_8859-4": enc7, - "iso_8859-4": enc7, - "ISO-8859-4": enc7, - "iso-8859-4": enc7, - "latin4": enc7, - "l4": enc7, - "csISOLatin4": enc7, - "csisolatin4": enc7, - "ISO_8859-5:1988": enc8, - "iso_8859-5:1988": enc8, - "iso-ir-144": enc8, - "ISO_8859-5": enc8, - "iso_8859-5": enc8, - "ISO-8859-5": enc8, - "iso-8859-5": enc8, - "cyrillic": enc8, - "csISOLatinCyrillic": enc8, - "csisolatincyrillic": enc8, - "ISO_8859-6:1987": enc9, - "iso_8859-6:1987": enc9, - "iso-ir-127": enc9, - "ISO_8859-6": enc9, - "iso_8859-6": enc9, - "ISO-8859-6": enc9, - "iso-8859-6": enc9, - "ECMA-114": enc9, - "ecma-114": enc9, - "ASMO-708": enc9, - "asmo-708": enc9, - "arabic": enc9, - "csISOLatinArabic": enc9, - "csisolatinarabic": enc9, - "ISO_8859-7:1987": enc10, - "iso_8859-7:1987": enc10, - "iso-ir-126": enc10, - "ISO_8859-7": enc10, - "iso_8859-7": enc10, - "ISO-8859-7": enc10, - "iso-8859-7": enc10, - "ELOT_928": enc10, - "elot_928": enc10, - "ECMA-118": enc10, - "ecma-118": enc10, - "greek": enc10, - "greek8": enc10, - "csISOLatinGreek": enc10, - "csisolatingreek": enc10, - "ISO_8859-8:1988": enc11, - "iso_8859-8:1988": enc11, - "iso-ir-138": enc11, - "ISO_8859-8": enc11, - "iso_8859-8": enc11, - "ISO-8859-8": enc11, - "iso-8859-8": enc11, - "hebrew": enc11, - "csISOLatinHebrew": enc11, - "csisolatinhebrew": enc11, - "ISO_8859-9:1989": enc12, - "iso_8859-9:1989": enc12, - "iso-ir-148": enc12, - "ISO_8859-9": enc12, - "iso_8859-9": enc12, - "ISO-8859-9": enc12, - "iso-8859-9": enc12, - "latin5": enc12, - "l5": enc12, - "csISOLatin5": enc12, - "csisolatin5": enc12, - "ISO-8859-10": enc13, - "iso-8859-10": enc13, - "iso-ir-157": enc13, - "l6": enc13, - "ISO_8859-10:1992": enc13, - "iso_8859-10:1992": enc13, - "csISOLatin6": enc13, - "csisolatin6": enc13, - "latin6": enc13, - "ISO_6937-2-add": enc14, - "iso_6937-2-add": enc14, - "iso-ir-142": enc14, - "csISOTextComm": enc14, - "csisotextcomm": enc14, - "JIS_X0201": enc15, - "jis_x0201": enc15, - "X0201": enc15, - "x0201": enc15, - "csHalfWidthKatakana": enc15, - "cshalfwidthkatakana": enc15, - "JIS_Encoding": enc16, - "jis_encoding": enc16, - "csJISEncoding": enc16, - "csjisencoding": enc16, - "Shift_JIS": enc17, - "shift_jis": enc17, - "MS_Kanji": enc17, - "ms_kanji": enc17, - "csShiftJIS": enc17, - "csshiftjis": enc17, - "Extended_UNIX_Code_Packed_Format_for_Japanese": enc18, - "extended_unix_code_packed_format_for_japanese": enc18, - "csEUCPkdFmtJapanese": enc18, - "cseucpkdfmtjapanese": enc18, - "EUC-JP": enc18, - "euc-jp": enc18, - "Extended_UNIX_Code_Fixed_Width_for_Japanese": enc19, - "extended_unix_code_fixed_width_for_japanese": enc19, - "csEUCFixWidJapanese": enc19, - "cseucfixwidjapanese": enc19, - "BS_4730": enc20, - "bs_4730": enc20, - "iso-ir-4": enc20, - "ISO646-GB": enc20, - "iso646-gb": enc20, - "gb": enc20, - "uk": enc20, - "csISO4UnitedKingdom": enc20, - "csiso4unitedkingdom": enc20, - "SEN_850200_C": enc21, - "sen_850200_c": enc21, - "iso-ir-11": enc21, - "ISO646-SE2": enc21, - "iso646-se2": enc21, - "se2": enc21, - "csISO11SwedishForNames": enc21, - "csiso11swedishfornames": enc21, - "IT": enc22, - "it": enc22, - "iso-ir-15": enc22, - "ISO646-IT": enc22, - "iso646-it": enc22, - "csISO15Italian": enc22, - "csiso15italian": enc22, - "ES": enc23, - "es": enc23, - "iso-ir-17": enc23, - "ISO646-ES": enc23, - "iso646-es": enc23, - "csISO17Spanish": enc23, - "csiso17spanish": enc23, - "DIN_66003": enc24, - "din_66003": enc24, - "iso-ir-21": enc24, - "de": enc24, - "ISO646-DE": enc24, - "iso646-de": enc24, - "csISO21German": enc24, - "csiso21german": enc24, - "NS_4551-1": enc25, - "ns_4551-1": enc25, - "iso-ir-60": enc25, - "ISO646-NO": enc25, - "iso646-no": enc25, - "no": enc25, - "csISO60DanishNorwegian": enc25, - "csiso60danishnorwegian": enc25, - "csISO60Norwegian1": enc25, - "csiso60norwegian1": enc25, - "NF_Z_62-010": enc26, - "nf_z_62-010": enc26, - "iso-ir-69": enc26, - "ISO646-FR": enc26, - "iso646-fr": enc26, - "fr": enc26, - "csISO69French": enc26, - "csiso69french": enc26, - "ISO-10646-UTF-1": enc27, - "iso-10646-utf-1": enc27, - "csISO10646UTF1": enc27, - "csiso10646utf1": enc27, - "ISO_646.basic:1983": enc28, - "iso_646.basic:1983": enc28, - "ref": enc28, - "csISO646basic1983": enc28, - "csiso646basic1983": enc28, - "INVARIANT": enc29, - "invariant": enc29, - "csINVARIANT": enc29, - "csinvariant": enc29, - "ISO_646.irv:1983": enc30, - "iso_646.irv:1983": enc30, - "iso-ir-2": enc30, - "irv": enc30, - "csISO2IntlRefVersion": enc30, - "csiso2intlrefversion": enc30, - "NATS-SEFI": enc31, - "nats-sefi": enc31, - "iso-ir-8-1": enc31, - "csNATSSEFI": enc31, - "csnatssefi": enc31, - "NATS-SEFI-ADD": enc32, - "nats-sefi-add": enc32, - "iso-ir-8-2": enc32, - "csNATSSEFIADD": enc32, - "csnatssefiadd": enc32, - "NATS-DANO": enc33, - "nats-dano": enc33, - "iso-ir-9-1": enc33, - "csNATSDANO": enc33, - "csnatsdano": enc33, - "NATS-DANO-ADD": enc34, - "nats-dano-add": enc34, - "iso-ir-9-2": enc34, - "csNATSDANOADD": enc34, - "csnatsdanoadd": enc34, - "SEN_850200_B": enc35, - "sen_850200_b": enc35, - "iso-ir-10": enc35, - "FI": enc35, - "fi": enc35, - "ISO646-FI": enc35, - "iso646-fi": enc35, - "ISO646-SE": enc35, - "iso646-se": enc35, - "se": enc35, - "csISO10Swedish": enc35, - "csiso10swedish": enc35, - "KS_C_5601-1987": enc36, - "ks_c_5601-1987": enc36, - "iso-ir-149": enc36, - "KS_C_5601-1989": enc36, - "ks_c_5601-1989": enc36, - "KSC_5601": enc36, - "ksc_5601": enc36, - "korean": enc36, - "csKSC56011987": enc36, - "csksc56011987": enc36, - "ISO-2022-KR": enc37, - "iso-2022-kr": enc37, - "csISO2022KR": enc37, - "csiso2022kr": enc37, - "EUC-KR": enc38, - "euc-kr": enc38, - "csEUCKR": enc38, - "cseuckr": enc38, - "ISO-2022-JP": enc39, - "iso-2022-jp": enc39, - "csISO2022JP": enc39, - "csiso2022jp": enc39, - "ISO-2022-JP-2": enc40, - "iso-2022-jp-2": enc40, - "csISO2022JP2": enc40, - "csiso2022jp2": enc40, - "JIS_C6220-1969-jp": enc41, - "jis_c6220-1969-jp": enc41, - "JIS_C6220-1969": enc41, - "jis_c6220-1969": enc41, - "iso-ir-13": enc41, - "katakana": enc41, - "x0201-7": enc41, - "csISO13JISC6220jp": enc41, - "csiso13jisc6220jp": enc41, - "JIS_C6220-1969-ro": enc42, - "jis_c6220-1969-ro": enc42, - "iso-ir-14": enc42, - "jp": enc42, - "ISO646-JP": enc42, - "iso646-jp": enc42, - "csISO14JISC6220ro": enc42, - "csiso14jisc6220ro": enc42, - "PT": enc43, - "pt": enc43, - "iso-ir-16": enc43, - "ISO646-PT": enc43, - "iso646-pt": enc43, - "csISO16Portuguese": enc43, - "csiso16portuguese": enc43, - "greek7-old": enc44, - "iso-ir-18": enc44, - "csISO18Greek7Old": enc44, - "csiso18greek7old": enc44, - "latin-greek": enc45, - "iso-ir-19": enc45, - "csISO19LatinGreek": enc45, - "csiso19latingreek": enc45, - "NF_Z_62-010_(1973)": enc46, - "nf_z_62-010_(1973)": enc46, - "iso-ir-25": enc46, - "ISO646-FR1": enc46, - "iso646-fr1": enc46, - "csISO25French": enc46, - "csiso25french": enc46, - "Latin-greek-1": enc47, - "latin-greek-1": enc47, - "iso-ir-27": enc47, - "csISO27LatinGreek1": enc47, - "csiso27latingreek1": enc47, - "ISO_5427": enc48, - "iso_5427": enc48, - "iso-ir-37": enc48, - "csISO5427Cyrillic": enc48, - "csiso5427cyrillic": enc48, - "JIS_C6226-1978": enc49, - "jis_c6226-1978": enc49, - "iso-ir-42": enc49, - "csISO42JISC62261978": enc49, - "csiso42jisc62261978": enc49, - "BS_viewdata": enc50, - "bs_viewdata": enc50, - "iso-ir-47": enc50, - "csISO47BSViewdata": enc50, - "csiso47bsviewdata": enc50, - "INIS": enc51, - "inis": enc51, - "iso-ir-49": enc51, - "csISO49INIS": enc51, - "csiso49inis": enc51, - "INIS-8": enc52, - "inis-8": enc52, - "iso-ir-50": enc52, - "csISO50INIS8": enc52, - "csiso50inis8": enc52, - "INIS-cyrillic": enc53, - "inis-cyrillic": enc53, - "iso-ir-51": enc53, - "csISO51INISCyrillic": enc53, - "csiso51iniscyrillic": enc53, - "ISO_5427:1981": enc54, - "iso_5427:1981": enc54, - "iso-ir-54": enc54, - "ISO5427Cyrillic1981": enc54, - "iso5427cyrillic1981": enc54, - "csISO54271981": enc54, - "csiso54271981": enc54, - "ISO_5428:1980": enc55, - "iso_5428:1980": enc55, - "iso-ir-55": enc55, - "csISO5428Greek": enc55, - "csiso5428greek": enc55, - "GB_1988-80": enc56, - "gb_1988-80": enc56, - "iso-ir-57": enc56, - "cn": enc56, - "ISO646-CN": enc56, - "iso646-cn": enc56, - "csISO57GB1988": enc56, - "csiso57gb1988": enc56, - "GB_2312-80": enc57, - "gb_2312-80": enc57, - "iso-ir-58": enc57, - "chinese": enc57, - "csISO58GB231280": enc57, - "csiso58gb231280": enc57, - "NS_4551-2": enc58, - "ns_4551-2": enc58, - "ISO646-NO2": enc58, - "iso646-no2": enc58, - "iso-ir-61": enc58, - "no2": enc58, - "csISO61Norwegian2": enc58, - "csiso61norwegian2": enc58, - "videotex-suppl": enc59, - "iso-ir-70": enc59, - "csISO70VideotexSupp1": enc59, - "csiso70videotexsupp1": enc59, - "PT2": enc60, - "pt2": enc60, - "iso-ir-84": enc60, - "ISO646-PT2": enc60, - "iso646-pt2": enc60, - "csISO84Portuguese2": enc60, - "csiso84portuguese2": enc60, - "ES2": enc61, - "es2": enc61, - "iso-ir-85": enc61, - "ISO646-ES2": enc61, - "iso646-es2": enc61, - "csISO85Spanish2": enc61, - "csiso85spanish2": enc61, - "MSZ_7795.3": enc62, - "msz_7795.3": enc62, - "iso-ir-86": enc62, - "ISO646-HU": enc62, - "iso646-hu": enc62, - "hu": enc62, - "csISO86Hungarian": enc62, - "csiso86hungarian": enc62, - "JIS_C6226-1983": enc63, - "jis_c6226-1983": enc63, - "iso-ir-87": enc63, - "x0208": enc63, - "JIS_X0208-1983": enc63, - "jis_x0208-1983": enc63, - "csISO87JISX0208": enc63, - "csiso87jisx0208": enc63, - "greek7": enc64, - "iso-ir-88": enc64, - "csISO88Greek7": enc64, - "csiso88greek7": enc64, - "ASMO_449": enc65, - "asmo_449": enc65, - "ISO_9036": enc65, - "iso_9036": enc65, - "arabic7": enc65, - "iso-ir-89": enc65, - "csISO89ASMO449": enc65, - "csiso89asmo449": enc65, - "iso-ir-90": enc66, - "csISO90": enc66, - "csiso90": enc66, - "JIS_C6229-1984-a": enc67, - "jis_c6229-1984-a": enc67, - "iso-ir-91": enc67, - "jp-ocr-a": enc67, - "csISO91JISC62291984a": enc67, - "csiso91jisc62291984a": enc67, - "JIS_C6229-1984-b": enc68, - "jis_c6229-1984-b": enc68, - "iso-ir-92": enc68, - "ISO646-JP-OCR-B": enc68, - "iso646-jp-ocr-b": enc68, - "jp-ocr-b": enc68, - "csISO92JISC62991984b": enc68, - "csiso92jisc62991984b": enc68, - "JIS_C6229-1984-b-add": enc69, - "jis_c6229-1984-b-add": enc69, - "iso-ir-93": enc69, - "jp-ocr-b-add": enc69, - "csISO93JIS62291984badd": enc69, - "csiso93jis62291984badd": enc69, - "JIS_C6229-1984-hand": enc70, - "jis_c6229-1984-hand": enc70, - "iso-ir-94": enc70, - "jp-ocr-hand": enc70, - "csISO94JIS62291984hand": enc70, - "csiso94jis62291984hand": enc70, - "JIS_C6229-1984-hand-add": enc71, - "jis_c6229-1984-hand-add": enc71, - "iso-ir-95": enc71, - "jp-ocr-hand-add": enc71, - "csISO95JIS62291984handadd": enc71, - "csiso95jis62291984handadd": enc71, - "JIS_C6229-1984-kana": enc72, - "jis_c6229-1984-kana": enc72, - "iso-ir-96": enc72, - "csISO96JISC62291984kana": enc72, - "csiso96jisc62291984kana": enc72, - "ISO_2033-1983": enc73, - "iso_2033-1983": enc73, - "iso-ir-98": enc73, - "e13b": enc73, - "csISO2033": enc73, - "csiso2033": enc73, - "ANSI_X3.110-1983": enc74, - "ansi_x3.110-1983": enc74, - "iso-ir-99": enc74, - "CSA_T500-1983": enc74, - "csa_t500-1983": enc74, - "NAPLPS": enc74, - "naplps": enc74, - "csISO99NAPLPS": enc74, - "csiso99naplps": enc74, - "T.61-7bit": enc75, - "t.61-7bit": enc75, - "iso-ir-102": enc75, - "csISO102T617bit": enc75, - "csiso102t617bit": enc75, - "T.61-8bit": enc76, - "t.61-8bit": enc76, - "T.61": enc76, - "t.61": enc76, - "iso-ir-103": enc76, - "csISO103T618bit": enc76, - "csiso103t618bit": enc76, - "ECMA-cyrillic": enc77, - "ecma-cyrillic": enc77, - "iso-ir-111": enc77, - "KOI8-E": enc77, - "koi8-e": enc77, - "csISO111ECMACyrillic": enc77, - "csiso111ecmacyrillic": enc77, - "CSA_Z243.4-1985-1": enc78, - "csa_z243.4-1985-1": enc78, - "iso-ir-121": enc78, - "ISO646-CA": enc78, - "iso646-ca": enc78, - "csa7-1": enc78, - "csa71": enc78, - "ca": enc78, - "csISO121Canadian1": enc78, - "csiso121canadian1": enc78, - "CSA_Z243.4-1985-2": enc79, - "csa_z243.4-1985-2": enc79, - "iso-ir-122": enc79, - "ISO646-CA2": enc79, - "iso646-ca2": enc79, - "csa7-2": enc79, - "csa72": enc79, - "csISO122Canadian2": enc79, - "csiso122canadian2": enc79, - "CSA_Z243.4-1985-gr": enc80, - "csa_z243.4-1985-gr": enc80, - "iso-ir-123": enc80, - "csISO123CSAZ24341985gr": enc80, - "csiso123csaz24341985gr": enc80, - "ISO_8859-6-E": enc81, - "iso_8859-6-e": enc81, - "csISO88596E": enc81, - "csiso88596e": enc81, - "ISO-8859-6-E": enc81, - "iso-8859-6-e": enc81, - "ISO_8859-6-I": enc82, - "iso_8859-6-i": enc82, - "csISO88596I": enc82, - "csiso88596i": enc82, - "ISO-8859-6-I": enc82, - "iso-8859-6-i": enc82, - "T.101-G2": enc83, - "t.101-g2": enc83, - "iso-ir-128": enc83, - "csISO128T101G2": enc83, - "csiso128t101g2": enc83, - "ISO_8859-8-E": enc84, - "iso_8859-8-e": enc84, - "csISO88598E": enc84, - "csiso88598e": enc84, - "ISO-8859-8-E": enc84, - "iso-8859-8-e": enc84, - "ISO_8859-8-I": enc85, - "iso_8859-8-i": enc85, - "csISO88598I": enc85, - "csiso88598i": enc85, - "ISO-8859-8-I": enc85, - "iso-8859-8-i": enc85, - "CSN_369103": enc86, - "csn_369103": enc86, - "iso-ir-139": enc86, - "csISO139CSN369103": enc86, - "csiso139csn369103": enc86, - "JUS_I.B1.002": enc87, - "jus_i.b1.002": enc87, - "iso-ir-141": enc87, - "ISO646-YU": enc87, - "iso646-yu": enc87, - "js": enc87, - "yu": enc87, - "csISO141JUSIB1002": enc87, - "csiso141jusib1002": enc87, - "IEC_P27-1": enc88, - "iec_p27-1": enc88, - "iso-ir-143": enc88, - "csISO143IECP271": enc88, - "csiso143iecp271": enc88, - "JUS_I.B1.003-serb": enc89, - "jus_i.b1.003-serb": enc89, - "iso-ir-146": enc89, - "serbian": enc89, - "csISO146Serbian": enc89, - "csiso146serbian": enc89, - "JUS_I.B1.003-mac": enc90, - "jus_i.b1.003-mac": enc90, - "macedonian": enc90, - "iso-ir-147": enc90, - "csISO147Macedonian": enc90, - "csiso147macedonian": enc90, - "greek-ccitt": enc91, - "iso-ir-150": enc91, - "csISO150": enc91, - "csiso150": enc91, - "csISO150GreekCCITT": enc91, - "csiso150greekccitt": enc91, - "NC_NC00-10:81": enc92, - "nc_nc00-10:81": enc92, - "cuba": enc92, - "iso-ir-151": enc92, - "ISO646-CU": enc92, - "iso646-cu": enc92, - "csISO151Cuba": enc92, - "csiso151cuba": enc92, - "ISO_6937-2-25": enc93, - "iso_6937-2-25": enc93, - "iso-ir-152": enc93, - "csISO6937Add": enc93, - "csiso6937add": enc93, - "GOST_19768-74": enc94, - "gost_19768-74": enc94, - "ST_SEV_358-88": enc94, - "st_sev_358-88": enc94, - "iso-ir-153": enc94, - "csISO153GOST1976874": enc94, - "csiso153gost1976874": enc94, - "ISO_8859-supp": enc95, - "iso_8859-supp": enc95, - "iso-ir-154": enc95, - "latin1-2-5": enc95, - "csISO8859Supp": enc95, - "csiso8859supp": enc95, - "ISO_10367-box": enc96, - "iso_10367-box": enc96, - "iso-ir-155": enc96, - "csISO10367Box": enc96, - "csiso10367box": enc96, - "latin-lap": enc97, - "lap": enc97, - "iso-ir-158": enc97, - "csISO158Lap": enc97, - "csiso158lap": enc97, - "JIS_X0212-1990": enc98, - "jis_x0212-1990": enc98, - "x0212": enc98, - "iso-ir-159": enc98, - "csISO159JISX02121990": enc98, - "csiso159jisx02121990": enc98, - "DS_2089": enc99, - "ds_2089": enc99, - "DS2089": enc99, - "ds2089": enc99, - "ISO646-DK": enc99, - "iso646-dk": enc99, - "dk": enc99, - "csISO646Danish": enc99, - "csiso646danish": enc99, - "us-dk": enc100, - "csUSDK": enc100, - "csusdk": enc100, - "dk-us": enc101, - "csDKUS": enc101, - "csdkus": enc101, - "KSC5636": enc102, - "ksc5636": enc102, - "ISO646-KR": enc102, - "iso646-kr": enc102, - "csKSC5636": enc102, - "csksc5636": enc102, - "UNICODE-1-1-UTF-7": enc103, - "unicode-1-1-utf-7": enc103, - "csUnicode11UTF7": enc103, - "csunicode11utf7": enc103, - "ISO-2022-CN": enc104, - "iso-2022-cn": enc104, - "csISO2022CN": enc104, - "csiso2022cn": enc104, - "ISO-2022-CN-EXT": enc105, - "iso-2022-cn-ext": enc105, - "csISO2022CNEXT": enc105, - "csiso2022cnext": enc105, - "UTF-8": enc106, - "utf-8": enc106, - "csUTF8": enc106, - "csutf8": enc106, - "ISO-8859-13": enc109, - "iso-8859-13": enc109, - "csISO885913": enc109, - "csiso885913": enc109, - "ISO-8859-14": enc110, - "iso-8859-14": enc110, - "iso-ir-199": enc110, - "ISO_8859-14:1998": enc110, - "iso_8859-14:1998": enc110, - "ISO_8859-14": enc110, - "iso_8859-14": enc110, - "latin8": enc110, - "iso-celtic": enc110, - "l8": enc110, - "csISO885914": enc110, - "csiso885914": enc110, - "ISO-8859-15": enc111, - "iso-8859-15": enc111, - "ISO_8859-15": enc111, - "iso_8859-15": enc111, - "Latin-9": enc111, - "latin-9": enc111, - "csISO885915": enc111, - "csiso885915": enc111, - "ISO-8859-16": enc112, - "iso-8859-16": enc112, - "iso-ir-226": enc112, - "ISO_8859-16:2001": enc112, - "iso_8859-16:2001": enc112, - "ISO_8859-16": enc112, - "iso_8859-16": enc112, - "latin10": enc112, - "l10": enc112, - "csISO885916": enc112, - "csiso885916": enc112, - "GBK": enc113, - "gbk": enc113, - "CP936": enc113, - "cp936": enc113, - "MS936": enc113, - "ms936": enc113, - "windows-936": enc113, - "csGBK": enc113, - "csgbk": enc113, - "GB18030": enc114, - "gb18030": enc114, - "csGB18030": enc114, - "csgb18030": enc114, - "OSD_EBCDIC_DF04_15": enc115, - "osd_ebcdic_df04_15": enc115, - "csOSDEBCDICDF0415": enc115, - "csosdebcdicdf0415": enc115, - "OSD_EBCDIC_DF03_IRV": enc116, - "osd_ebcdic_df03_irv": enc116, - "csOSDEBCDICDF03IRV": enc116, - "csosdebcdicdf03irv": enc116, - "OSD_EBCDIC_DF04_1": enc117, - "osd_ebcdic_df04_1": enc117, - "csOSDEBCDICDF041": enc117, - "csosdebcdicdf041": enc117, - "ISO-11548-1": enc118, - "iso-11548-1": enc118, - "ISO_11548-1": enc118, - "iso_11548-1": enc118, - "ISO_TR_11548-1": enc118, - "iso_tr_11548-1": enc118, - "csISO115481": enc118, - "csiso115481": enc118, - "KZ-1048": enc119, - "kz-1048": enc119, - "STRK1048-2002": enc119, - "strk1048-2002": enc119, - "RK1048": enc119, - "rk1048": enc119, - "csKZ1048": enc119, - "cskz1048": enc119, - "ISO-10646-UCS-2": enc1000, - "iso-10646-ucs-2": enc1000, - "csUnicode": enc1000, - "csunicode": enc1000, - "ISO-10646-UCS-4": enc1001, - "iso-10646-ucs-4": enc1001, - "csUCS4": enc1001, - "csucs4": enc1001, - "ISO-10646-UCS-Basic": enc1002, - "iso-10646-ucs-basic": enc1002, - "csUnicodeASCII": enc1002, - "csunicodeascii": enc1002, - "ISO-10646-Unicode-Latin1": enc1003, - "iso-10646-unicode-latin1": enc1003, - "csUnicodeLatin1": enc1003, - "csunicodelatin1": enc1003, - "ISO-10646": enc1003, - "iso-10646": enc1003, - "ISO-10646-J-1": enc1004, - "iso-10646-j-1": enc1004, - "csUnicodeJapanese": enc1004, - "csunicodejapanese": enc1004, - "ISO-Unicode-IBM-1261": enc1005, - "iso-unicode-ibm-1261": enc1005, - "csUnicodeIBM1261": enc1005, - "csunicodeibm1261": enc1005, - "ISO-Unicode-IBM-1268": enc1006, - "iso-unicode-ibm-1268": enc1006, - "csUnicodeIBM1268": enc1006, - "csunicodeibm1268": enc1006, - "ISO-Unicode-IBM-1276": enc1007, - "iso-unicode-ibm-1276": enc1007, - "csUnicodeIBM1276": enc1007, - "csunicodeibm1276": enc1007, - "ISO-Unicode-IBM-1264": enc1008, - "iso-unicode-ibm-1264": enc1008, - "csUnicodeIBM1264": enc1008, - "csunicodeibm1264": enc1008, - "ISO-Unicode-IBM-1265": enc1009, - "iso-unicode-ibm-1265": enc1009, - "csUnicodeIBM1265": enc1009, - "csunicodeibm1265": enc1009, - "UNICODE-1-1": enc1010, - "unicode-1-1": enc1010, - "csUnicode11": enc1010, - "csunicode11": enc1010, - "SCSU": enc1011, - "scsu": enc1011, - "csSCSU": enc1011, - "csscsu": enc1011, - "UTF-7": enc1012, - "utf-7": enc1012, - "csUTF7": enc1012, - "csutf7": enc1012, - "UTF-16BE": enc1013, - "utf-16be": enc1013, - "csUTF16BE": enc1013, - "csutf16be": enc1013, - "UTF-16LE": enc1014, - "utf-16le": enc1014, - "csUTF16LE": enc1014, - "csutf16le": enc1014, - "UTF-16": enc1015, - "utf-16": enc1015, - "csUTF16": enc1015, - "csutf16": enc1015, - "CESU-8": enc1016, - "cesu-8": enc1016, - "csCESU8": enc1016, - "cscesu8": enc1016, - "csCESU-8": enc1016, - "cscesu-8": enc1016, - "UTF-32": enc1017, - "utf-32": enc1017, - "csUTF32": enc1017, - "csutf32": enc1017, - "UTF-32BE": enc1018, - "utf-32be": enc1018, - "csUTF32BE": enc1018, - "csutf32be": enc1018, - "UTF-32LE": enc1019, - "utf-32le": enc1019, - "csUTF32LE": enc1019, - "csutf32le": enc1019, - "BOCU-1": enc1020, - "bocu-1": enc1020, - "csBOCU1": enc1020, - "csbocu1": enc1020, - "csBOCU-1": enc1020, - "csbocu-1": enc1020, - "ISO-8859-1-Windows-3.0-Latin-1": enc2000, - "iso-8859-1-windows-3.0-latin-1": enc2000, - "csWindows30Latin1": enc2000, - "cswindows30latin1": enc2000, - "ISO-8859-1-Windows-3.1-Latin-1": enc2001, - "iso-8859-1-windows-3.1-latin-1": enc2001, - "csWindows31Latin1": enc2001, - "cswindows31latin1": enc2001, - "ISO-8859-2-Windows-Latin-2": enc2002, - "iso-8859-2-windows-latin-2": enc2002, - "csWindows31Latin2": enc2002, - "cswindows31latin2": enc2002, - "ISO-8859-9-Windows-Latin-5": enc2003, - "iso-8859-9-windows-latin-5": enc2003, - "csWindows31Latin5": enc2003, - "cswindows31latin5": enc2003, - "hp-roman8": enc2004, - "roman8": enc2004, - "r8": enc2004, - "csHPRoman8": enc2004, - "cshproman8": enc2004, - "Adobe-Standard-Encoding": enc2005, - "adobe-standard-encoding": enc2005, - "csAdobeStandardEncoding": enc2005, - "csadobestandardencoding": enc2005, - "Ventura-US": enc2006, - "ventura-us": enc2006, - "csVenturaUS": enc2006, - "csventuraus": enc2006, - "Ventura-International": enc2007, - "ventura-international": enc2007, - "csVenturaInternational": enc2007, - "csventurainternational": enc2007, - "DEC-MCS": enc2008, - "dec-mcs": enc2008, - "dec": enc2008, - "csDECMCS": enc2008, - "csdecmcs": enc2008, - "IBM850": enc2009, - "ibm850": enc2009, - "cp850": enc2009, - "850": enc2009, - "csPC850Multilingual": enc2009, - "cspc850multilingual": enc2009, - "PC8-Danish-Norwegian": enc2012, - "pc8-danish-norwegian": enc2012, - "csPC8DanishNorwegian": enc2012, - "cspc8danishnorwegian": enc2012, - "IBM862": enc2013, - "ibm862": enc2013, - "cp862": enc2013, - "862": enc2013, - "csPC862LatinHebrew": enc2013, - "cspc862latinhebrew": enc2013, - "PC8-Turkish": enc2014, - "pc8-turkish": enc2014, - "csPC8Turkish": enc2014, - "cspc8turkish": enc2014, - "IBM-Symbols": enc2015, - "ibm-symbols": enc2015, - "csIBMSymbols": enc2015, - "csibmsymbols": enc2015, - "IBM-Thai": enc2016, - "ibm-thai": enc2016, - "csIBMThai": enc2016, - "csibmthai": enc2016, - "HP-Legal": enc2017, - "hp-legal": enc2017, - "csHPLegal": enc2017, - "cshplegal": enc2017, - "HP-Pi-font": enc2018, - "hp-pi-font": enc2018, - "csHPPiFont": enc2018, - "cshppifont": enc2018, - "HP-Math8": enc2019, - "hp-math8": enc2019, - "csHPMath8": enc2019, - "cshpmath8": enc2019, - "Adobe-Symbol-Encoding": enc2020, - "adobe-symbol-encoding": enc2020, - "csHPPSMath": enc2020, - "cshppsmath": enc2020, - "HP-DeskTop": enc2021, - "hp-desktop": enc2021, - "csHPDesktop": enc2021, - "cshpdesktop": enc2021, - "Ventura-Math": enc2022, - "ventura-math": enc2022, - "csVenturaMath": enc2022, - "csventuramath": enc2022, - "Microsoft-Publishing": enc2023, - "microsoft-publishing": enc2023, - "csMicrosoftPublishing": enc2023, - "csmicrosoftpublishing": enc2023, - "Windows-31J": enc2024, - "windows-31j": enc2024, - "csWindows31J": enc2024, - "cswindows31j": enc2024, - "GB2312": enc2025, - "gb2312": enc2025, - "csGB2312": enc2025, - "csgb2312": enc2025, - "Big5": enc2026, - "big5": enc2026, - "csBig5": enc2026, - "csbig5": enc2026, - "macintosh": enc2027, - "mac": enc2027, - "csMacintosh": enc2027, - "csmacintosh": enc2027, - "IBM037": enc2028, - "ibm037": enc2028, - "cp037": enc2028, - "ebcdic-cp-us": enc2028, - "ebcdic-cp-ca": enc2028, - "ebcdic-cp-wt": enc2028, - "ebcdic-cp-nl": enc2028, - "csIBM037": enc2028, - "csibm037": enc2028, - "IBM038": enc2029, - "ibm038": enc2029, - "EBCDIC-INT": enc2029, - "ebcdic-int": enc2029, - "cp038": enc2029, - "csIBM038": enc2029, - "csibm038": enc2029, - "IBM273": enc2030, - "ibm273": enc2030, - "CP273": enc2030, - "cp273": enc2030, - "csIBM273": enc2030, - "csibm273": enc2030, - "IBM274": enc2031, - "ibm274": enc2031, - "EBCDIC-BE": enc2031, - "ebcdic-be": enc2031, - "CP274": enc2031, - "cp274": enc2031, - "csIBM274": enc2031, - "csibm274": enc2031, - "IBM275": enc2032, - "ibm275": enc2032, - "EBCDIC-BR": enc2032, - "ebcdic-br": enc2032, - "cp275": enc2032, - "csIBM275": enc2032, - "csibm275": enc2032, - "IBM277": enc2033, - "ibm277": enc2033, - "EBCDIC-CP-DK": enc2033, - "ebcdic-cp-dk": enc2033, - "EBCDIC-CP-NO": enc2033, - "ebcdic-cp-no": enc2033, - "csIBM277": enc2033, - "csibm277": enc2033, - "IBM278": enc2034, - "ibm278": enc2034, - "CP278": enc2034, - "cp278": enc2034, - "ebcdic-cp-fi": enc2034, - "ebcdic-cp-se": enc2034, - "csIBM278": enc2034, - "csibm278": enc2034, - "IBM280": enc2035, - "ibm280": enc2035, - "CP280": enc2035, - "cp280": enc2035, - "ebcdic-cp-it": enc2035, - "csIBM280": enc2035, - "csibm280": enc2035, - "IBM281": enc2036, - "ibm281": enc2036, - "EBCDIC-JP-E": enc2036, - "ebcdic-jp-e": enc2036, - "cp281": enc2036, - "csIBM281": enc2036, - "csibm281": enc2036, - "IBM284": enc2037, - "ibm284": enc2037, - "CP284": enc2037, - "cp284": enc2037, - "ebcdic-cp-es": enc2037, - "csIBM284": enc2037, - "csibm284": enc2037, - "IBM285": enc2038, - "ibm285": enc2038, - "CP285": enc2038, - "cp285": enc2038, - "ebcdic-cp-gb": enc2038, - "csIBM285": enc2038, - "csibm285": enc2038, - "IBM290": enc2039, - "ibm290": enc2039, - "cp290": enc2039, - "EBCDIC-JP-kana": enc2039, - "ebcdic-jp-kana": enc2039, - "csIBM290": enc2039, - "csibm290": enc2039, - "IBM297": enc2040, - "ibm297": enc2040, - "cp297": enc2040, - "ebcdic-cp-fr": enc2040, - "csIBM297": enc2040, - "csibm297": enc2040, - "IBM420": enc2041, - "ibm420": enc2041, - "cp420": enc2041, - "ebcdic-cp-ar1": enc2041, - "csIBM420": enc2041, - "csibm420": enc2041, - "IBM423": enc2042, - "ibm423": enc2042, - "cp423": enc2042, - "ebcdic-cp-gr": enc2042, - "csIBM423": enc2042, - "csibm423": enc2042, - "IBM424": enc2043, - "ibm424": enc2043, - "cp424": enc2043, - "ebcdic-cp-he": enc2043, - "csIBM424": enc2043, - "csibm424": enc2043, - "IBM437": enc2011, - "ibm437": enc2011, - "cp437": enc2011, - "437": enc2011, - "csPC8CodePage437": enc2011, - "cspc8codepage437": enc2011, - "IBM500": enc2044, - "ibm500": enc2044, - "CP500": enc2044, - "cp500": enc2044, - "ebcdic-cp-be": enc2044, - "ebcdic-cp-ch": enc2044, - "csIBM500": enc2044, - "csibm500": enc2044, - "IBM851": enc2045, - "ibm851": enc2045, - "cp851": enc2045, - "851": enc2045, - "csIBM851": enc2045, - "csibm851": enc2045, - "IBM852": enc2010, - "ibm852": enc2010, - "cp852": enc2010, - "852": enc2010, - "csPCp852": enc2010, - "cspcp852": enc2010, - "IBM855": enc2046, - "ibm855": enc2046, - "cp855": enc2046, - "855": enc2046, - "csIBM855": enc2046, - "csibm855": enc2046, - "IBM857": enc2047, - "ibm857": enc2047, - "cp857": enc2047, - "857": enc2047, - "csIBM857": enc2047, - "csibm857": enc2047, - "IBM860": enc2048, - "ibm860": enc2048, - "cp860": enc2048, - "860": enc2048, - "csIBM860": enc2048, - "csibm860": enc2048, - "IBM861": enc2049, - "ibm861": enc2049, - "cp861": enc2049, - "861": enc2049, - "cp-is": enc2049, - "csIBM861": enc2049, - "csibm861": enc2049, - "IBM863": enc2050, - "ibm863": enc2050, - "cp863": enc2050, - "863": enc2050, - "csIBM863": enc2050, - "csibm863": enc2050, - "IBM864": enc2051, - "ibm864": enc2051, - "cp864": enc2051, - "csIBM864": enc2051, - "csibm864": enc2051, - "IBM865": enc2052, - "ibm865": enc2052, - "cp865": enc2052, - "865": enc2052, - "csIBM865": enc2052, - "csibm865": enc2052, - "IBM868": enc2053, - "ibm868": enc2053, - "CP868": enc2053, - "cp868": enc2053, - "cp-ar": enc2053, - "csIBM868": enc2053, - "csibm868": enc2053, - "IBM869": enc2054, - "ibm869": enc2054, - "cp869": enc2054, - "869": enc2054, - "cp-gr": enc2054, - "csIBM869": enc2054, - "csibm869": enc2054, - "IBM870": enc2055, - "ibm870": enc2055, - "CP870": enc2055, - "cp870": enc2055, - "ebcdic-cp-roece": enc2055, - "ebcdic-cp-yu": enc2055, - "csIBM870": enc2055, - "csibm870": enc2055, - "IBM871": enc2056, - "ibm871": enc2056, - "CP871": enc2056, - "cp871": enc2056, - "ebcdic-cp-is": enc2056, - "csIBM871": enc2056, - "csibm871": enc2056, - "IBM880": enc2057, - "ibm880": enc2057, - "cp880": enc2057, - "EBCDIC-Cyrillic": enc2057, - "ebcdic-cyrillic": enc2057, - "csIBM880": enc2057, - "csibm880": enc2057, - "IBM891": enc2058, - "ibm891": enc2058, - "cp891": enc2058, - "csIBM891": enc2058, - "csibm891": enc2058, - "IBM903": enc2059, - "ibm903": enc2059, - "cp903": enc2059, - "csIBM903": enc2059, - "csibm903": enc2059, - "IBM904": enc2060, - "ibm904": enc2060, - "cp904": enc2060, - "904": enc2060, - "csIBBM904": enc2060, - "csibbm904": enc2060, - "IBM905": enc2061, - "ibm905": enc2061, - "CP905": enc2061, - "cp905": enc2061, - "ebcdic-cp-tr": enc2061, - "csIBM905": enc2061, - "csibm905": enc2061, - "IBM918": enc2062, - "ibm918": enc2062, - "CP918": enc2062, - "cp918": enc2062, - "ebcdic-cp-ar2": enc2062, - "csIBM918": enc2062, - "csibm918": enc2062, - "IBM1026": enc2063, - "ibm1026": enc2063, - "CP1026": enc2063, - "cp1026": enc2063, - "csIBM1026": enc2063, - "csibm1026": enc2063, - "EBCDIC-AT-DE": enc2064, - "ebcdic-at-de": enc2064, - "csIBMEBCDICATDE": enc2064, - "csibmebcdicatde": enc2064, - "EBCDIC-AT-DE-A": enc2065, - "ebcdic-at-de-a": enc2065, - "csEBCDICATDEA": enc2065, - "csebcdicatdea": enc2065, - "EBCDIC-CA-FR": enc2066, - "ebcdic-ca-fr": enc2066, - "csEBCDICCAFR": enc2066, - "csebcdiccafr": enc2066, - "EBCDIC-DK-NO": enc2067, - "ebcdic-dk-no": enc2067, - "csEBCDICDKNO": enc2067, - "csebcdicdkno": enc2067, - "EBCDIC-DK-NO-A": enc2068, - "ebcdic-dk-no-a": enc2068, - "csEBCDICDKNOA": enc2068, - "csebcdicdknoa": enc2068, - "EBCDIC-FI-SE": enc2069, - "ebcdic-fi-se": enc2069, - "csEBCDICFISE": enc2069, - "csebcdicfise": enc2069, - "EBCDIC-FI-SE-A": enc2070, - "ebcdic-fi-se-a": enc2070, - "csEBCDICFISEA": enc2070, - "csebcdicfisea": enc2070, - "EBCDIC-FR": enc2071, - "ebcdic-fr": enc2071, - "csEBCDICFR": enc2071, - "csebcdicfr": enc2071, - "EBCDIC-IT": enc2072, - "ebcdic-it": enc2072, - "csEBCDICIT": enc2072, - "csebcdicit": enc2072, - "EBCDIC-PT": enc2073, - "ebcdic-pt": enc2073, - "csEBCDICPT": enc2073, - "csebcdicpt": enc2073, - "EBCDIC-ES": enc2074, - "ebcdic-es": enc2074, - "csEBCDICES": enc2074, - "csebcdices": enc2074, - "EBCDIC-ES-A": enc2075, - "ebcdic-es-a": enc2075, - "csEBCDICESA": enc2075, - "csebcdicesa": enc2075, - "EBCDIC-ES-S": enc2076, - "ebcdic-es-s": enc2076, - "csEBCDICESS": enc2076, - "csebcdicess": enc2076, - "EBCDIC-UK": enc2077, - "ebcdic-uk": enc2077, - "csEBCDICUK": enc2077, - "csebcdicuk": enc2077, - "EBCDIC-US": enc2078, - "ebcdic-us": enc2078, - "csEBCDICUS": enc2078, - "csebcdicus": enc2078, - "UNKNOWN-8BIT": enc2079, - "unknown-8bit": enc2079, - "csUnknown8BiT": enc2079, - "csunknown8bit": enc2079, - "MNEMONIC": enc2080, - "mnemonic": enc2080, - "csMnemonic": enc2080, - "csmnemonic": enc2080, - "MNEM": enc2081, - "mnem": enc2081, - "csMnem": enc2081, - "csmnem": enc2081, - "VISCII": enc2082, - "viscii": enc2082, - "csVISCII": enc2082, - "csviscii": enc2082, - "VIQR": enc2083, - "viqr": enc2083, - "csVIQR": enc2083, - "csviqr": enc2083, - "KOI8-R": enc2084, - "koi8-r": enc2084, - "csKOI8R": enc2084, - "cskoi8r": enc2084, - "HZ-GB-2312": enc2085, - "hz-gb-2312": enc2085, - "IBM866": enc2086, - "ibm866": enc2086, - "cp866": enc2086, - "866": enc2086, - "csIBM866": enc2086, - "csibm866": enc2086, - "IBM775": enc2087, - "ibm775": enc2087, - "cp775": enc2087, - "csPC775Baltic": enc2087, - "cspc775baltic": enc2087, - "KOI8-U": enc2088, - "koi8-u": enc2088, - "csKOI8U": enc2088, - "cskoi8u": enc2088, - "IBM00858": enc2089, - "ibm00858": enc2089, - "CCSID00858": enc2089, - "ccsid00858": enc2089, - "CP00858": enc2089, - "cp00858": enc2089, - "PC-Multilingual-850+euro": enc2089, - "pc-multilingual-850+euro": enc2089, - "csIBM00858": enc2089, - "csibm00858": enc2089, - "IBM00924": enc2090, - "ibm00924": enc2090, - "CCSID00924": enc2090, - "ccsid00924": enc2090, - "CP00924": enc2090, - "cp00924": enc2090, - "ebcdic-Latin9--euro": enc2090, - "ebcdic-latin9--euro": enc2090, - "csIBM00924": enc2090, - "csibm00924": enc2090, - "IBM01140": enc2091, - "ibm01140": enc2091, - "CCSID01140": enc2091, - "ccsid01140": enc2091, - "CP01140": enc2091, - "cp01140": enc2091, - "ebcdic-us-37+euro": enc2091, - "csIBM01140": enc2091, - "csibm01140": enc2091, - "IBM01141": enc2092, - "ibm01141": enc2092, - "CCSID01141": enc2092, - "ccsid01141": enc2092, - "CP01141": enc2092, - "cp01141": enc2092, - "ebcdic-de-273+euro": enc2092, - "csIBM01141": enc2092, - "csibm01141": enc2092, - "IBM01142": enc2093, - "ibm01142": enc2093, - "CCSID01142": enc2093, - "ccsid01142": enc2093, - "CP01142": enc2093, - "cp01142": enc2093, - "ebcdic-dk-277+euro": enc2093, - "ebcdic-no-277+euro": enc2093, - "csIBM01142": enc2093, - "csibm01142": enc2093, - "IBM01143": enc2094, - "ibm01143": enc2094, - "CCSID01143": enc2094, - "ccsid01143": enc2094, - "CP01143": enc2094, - "cp01143": enc2094, - "ebcdic-fi-278+euro": enc2094, - "ebcdic-se-278+euro": enc2094, - "csIBM01143": enc2094, - "csibm01143": enc2094, - "IBM01144": enc2095, - "ibm01144": enc2095, - "CCSID01144": enc2095, - "ccsid01144": enc2095, - "CP01144": enc2095, - "cp01144": enc2095, - "ebcdic-it-280+euro": enc2095, - "csIBM01144": enc2095, - "csibm01144": enc2095, - "IBM01145": enc2096, - "ibm01145": enc2096, - "CCSID01145": enc2096, - "ccsid01145": enc2096, - "CP01145": enc2096, - "cp01145": enc2096, - "ebcdic-es-284+euro": enc2096, - "csIBM01145": enc2096, - "csibm01145": enc2096, - "IBM01146": enc2097, - "ibm01146": enc2097, - "CCSID01146": enc2097, - "ccsid01146": enc2097, - "CP01146": enc2097, - "cp01146": enc2097, - "ebcdic-gb-285+euro": enc2097, - "csIBM01146": enc2097, - "csibm01146": enc2097, - "IBM01147": enc2098, - "ibm01147": enc2098, - "CCSID01147": enc2098, - "ccsid01147": enc2098, - "CP01147": enc2098, - "cp01147": enc2098, - "ebcdic-fr-297+euro": enc2098, - "csIBM01147": enc2098, - "csibm01147": enc2098, - "IBM01148": enc2099, - "ibm01148": enc2099, - "CCSID01148": enc2099, - "ccsid01148": enc2099, - "CP01148": enc2099, - "cp01148": enc2099, - "ebcdic-international-500+euro": enc2099, - "csIBM01148": enc2099, - "csibm01148": enc2099, - "IBM01149": enc2100, - "ibm01149": enc2100, - "CCSID01149": enc2100, - "ccsid01149": enc2100, - "CP01149": enc2100, - "cp01149": enc2100, - "ebcdic-is-871+euro": enc2100, - "csIBM01149": enc2100, - "csibm01149": enc2100, - "Big5-HKSCS": enc2101, - "big5-hkscs": enc2101, - "csBig5HKSCS": enc2101, - "csbig5hkscs": enc2101, - "IBM1047": enc2102, - "ibm1047": enc2102, - "IBM-1047": enc2102, - "ibm-1047": enc2102, - "csIBM1047": enc2102, - "csibm1047": enc2102, - "PTCP154": enc2103, - "ptcp154": enc2103, - "csPTCP154": enc2103, - "csptcp154": enc2103, - "PT154": enc2103, - "pt154": enc2103, - "CP154": enc2103, - "cp154": enc2103, - "Cyrillic-Asian": enc2103, - "cyrillic-asian": enc2103, - "Amiga-1251": enc2104, - "amiga-1251": enc2104, - "Ami1251": enc2104, - "ami1251": enc2104, - "Amiga1251": enc2104, - "amiga1251": enc2104, - "Ami-1251": enc2104, - "ami-1251": enc2104, - "csAmiga1251\n(Aliases": enc2104, - "csamiga1251\n(aliases": enc2104, - "KOI7-switched": enc2105, - "koi7-switched": enc2105, - "csKOI7switched": enc2105, - "cskoi7switched": enc2105, - "BRF": enc2106, - "brf": enc2106, - "csBRF": enc2106, - "csbrf": enc2106, - "TSCII": enc2107, - "tscii": enc2107, - "csTSCII": enc2107, - "cstscii": enc2107, - "CP51932": enc2108, - "cp51932": enc2108, - "csCP51932": enc2108, - "cscp51932": enc2108, - "windows-874": enc2109, - "cswindows874": enc2109, - "windows-1250": enc2250, - "cswindows1250": enc2250, - "windows-1251": enc2251, - "cswindows1251": enc2251, - "windows-1252": enc2252, - "cswindows1252": enc2252, - "windows-1253": enc2253, - "cswindows1253": enc2253, - "windows-1254": enc2254, - "cswindows1254": enc2254, - "windows-1255": enc2255, - "cswindows1255": enc2255, - "windows-1256": enc2256, - "cswindows1256": enc2256, - "windows-1257": enc2257, - "cswindows1257": enc2257, - "windows-1258": enc2258, - "cswindows1258": enc2258, - "TIS-620": enc2259, - "tis-620": enc2259, - "csTIS620": enc2259, - "cstis620": enc2259, - "ISO-8859-11": enc2259, - "iso-8859-11": enc2259, - "CP50220": enc2260, - "cp50220": enc2260, - "csCP50220": enc2260, - "cscp50220": enc2260, -} - -// Total table size 14402 bytes (14KiB); checksum: CEBAA10C diff --git a/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go b/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go deleted file mode 100644 index 0cccae04..00000000 --- a/vendor/golang.org/x/text/encoding/internal/enctest/enctest.go +++ /dev/null @@ -1,180 +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 enctest - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "strings" - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// Encoder or Decoder -type Transcoder interface { - transform.Transformer - Bytes([]byte) ([]byte, error) - String(string) (string, error) -} - -func TestEncoding(t *testing.T, e encoding.Encoding, encoded, utf8, prefix, suffix string) { - for _, direction := range []string{"Decode", "Encode"} { - t.Run(fmt.Sprintf("%v/%s", e, direction), func(t *testing.T) { - - var coder Transcoder - var want, src, wPrefix, sPrefix, wSuffix, sSuffix string - if direction == "Decode" { - coder, want, src = e.NewDecoder(), utf8, encoded - wPrefix, sPrefix, wSuffix, sSuffix = "", prefix, "", suffix - } else { - coder, want, src = e.NewEncoder(), encoded, utf8 - wPrefix, sPrefix, wSuffix, sSuffix = prefix, "", suffix, "" - } - - dst := make([]byte, len(wPrefix)+len(want)+len(wSuffix)) - nDst, nSrc, err := coder.Transform(dst, []byte(sPrefix+src+sSuffix), true) - if err != nil { - t.Fatal(err) - } - if nDst != len(wPrefix)+len(want)+len(wSuffix) { - t.Fatalf("nDst got %d, want %d", - nDst, len(wPrefix)+len(want)+len(wSuffix)) - } - if nSrc != len(sPrefix)+len(src)+len(sSuffix) { - t.Fatalf("nSrc got %d, want %d", - nSrc, len(sPrefix)+len(src)+len(sSuffix)) - } - if got := string(dst); got != wPrefix+want+wSuffix { - t.Fatalf("\ngot %q\nwant %q", got, wPrefix+want+wSuffix) - } - - for _, n := range []int{0, 1, 2, 10, 123, 4567} { - input := sPrefix + strings.Repeat(src, n) + sSuffix - g, err := coder.String(input) - if err != nil { - t.Fatalf("Bytes: n=%d: %v", n, err) - } - if len(g) == 0 && len(input) == 0 { - // If the input is empty then the output can be empty, - // regardless of whatever wPrefix is. - continue - } - got1, want1 := string(g), wPrefix+strings.Repeat(want, n)+wSuffix - if got1 != want1 { - t.Fatalf("ReadAll: n=%d\ngot %q\nwant %q", - n, trim(got1), trim(want1)) - } - } - }) - } -} - -func TestFile(t *testing.T, e encoding.Encoding) { - for _, dir := range []string{"Decode", "Encode"} { - t.Run(fmt.Sprintf("%s/%s", e, dir), func(t *testing.T) { - dst, src, transformer, err := load(dir, e) - if err != nil { - t.Fatalf("load: %v", err) - } - buf, err := transformer.Bytes(src) - if err != nil { - t.Fatalf("transform: %v", err) - } - if !bytes.Equal(buf, dst) { - t.Error("transformed bytes did not match golden file") - } - }) - } -} - -func Benchmark(b *testing.B, enc encoding.Encoding) { - for _, direction := range []string{"Decode", "Encode"} { - b.Run(fmt.Sprintf("%s/%s", enc, direction), func(b *testing.B) { - _, src, transformer, err := load(direction, enc) - if err != nil { - b.Fatal(err) - } - b.SetBytes(int64(len(src))) - b.ResetTimer() - for i := 0; i < b.N; i++ { - r := transform.NewReader(bytes.NewReader(src), transformer) - io.Copy(ioutil.Discard, r) - } - }) - } -} - -// testdataFiles are files in testdata/*.txt. -var testdataFiles = []struct { - mib identifier.MIB - basename, ext string -}{ - {identifier.Windows1252, "candide", "windows-1252"}, - {identifier.EUCPkdFmtJapanese, "rashomon", "euc-jp"}, - {identifier.ISO2022JP, "rashomon", "iso-2022-jp"}, - {identifier.ShiftJIS, "rashomon", "shift-jis"}, - {identifier.EUCKR, "unsu-joh-eun-nal", "euc-kr"}, - {identifier.GBK, "sunzi-bingfa-simplified", "gbk"}, - {identifier.HZGB2312, "sunzi-bingfa-gb-levels-1-and-2", "hz-gb2312"}, - {identifier.Big5, "sunzi-bingfa-traditional", "big5"}, - {identifier.UTF16LE, "candide", "utf-16le"}, - {identifier.UTF8, "candide", "utf-8"}, - {identifier.UTF32BE, "candide", "utf-32be"}, - - // GB18030 is a superset of GBK and is nominally a Simplified Chinese - // encoding, but it can also represent the entire Basic Multilingual - // Plane, including codepoints like 'â' that aren't encodable by GBK. - // GB18030 on Simplified Chinese should perform similarly to GBK on - // Simplified Chinese. GB18030 on "candide" is more interesting. - {identifier.GB18030, "candide", "gb18030"}, -} - -func load(direction string, enc encoding.Encoding) ([]byte, []byte, Transcoder, error) { - basename, ext, count := "", "", 0 - for _, tf := range testdataFiles { - if mib, _ := enc.(identifier.Interface).ID(); tf.mib == mib { - basename, ext = tf.basename, tf.ext - count++ - } - } - if count != 1 { - if count == 0 { - return nil, nil, nil, fmt.Errorf("no testdataFiles for %s", enc) - } - return nil, nil, nil, fmt.Errorf("too many testdataFiles for %s", enc) - } - dstFile := fmt.Sprintf("../testdata/%s-%s.txt", basename, ext) - srcFile := fmt.Sprintf("../testdata/%s-utf-8.txt", basename) - var coder Transcoder = encoding.ReplaceUnsupported(enc.NewEncoder()) - if direction == "Decode" { - dstFile, srcFile = srcFile, dstFile - coder = enc.NewDecoder() - } - dst, err := ioutil.ReadFile(dstFile) - if err != nil { - if dst, err = ioutil.ReadFile("../" + dstFile); err != nil { - return nil, nil, nil, err - } - } - src, err := ioutil.ReadFile(srcFile) - if err != nil { - if src, err = ioutil.ReadFile("../" + srcFile); err != nil { - return nil, nil, nil, err - } - } - return dst, src, coder, nil -} - -func trim(s string) string { - if len(s) < 120 { - return s - } - return s[:50] + "..." + s[len(s)-50:] -} diff --git a/vendor/golang.org/x/text/encoding/japanese/all_test.go b/vendor/golang.org/x/text/encoding/japanese/all_test.go deleted file mode 100644 index 9cffe10d..00000000 --- a/vendor/golang.org/x/text/encoding/japanese/all_test.go +++ /dev/null @@ -1,248 +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 japanese - -import ( - "fmt" - "strings" - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/enctest" - "golang.org/x/text/transform" -) - -func dec(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Decode", e.NewDecoder(), nil -} -func enc(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Encode", e.NewEncoder(), internal.ErrASCIIReplacement -} - -func TestNonRepertoire(t *testing.T) { - // Pick n to cause the destination buffer in transform.String to overflow. - const n = 100 - long := strings.Repeat(".", n) - testCases := []struct { - init func(e encoding.Encoding) (string, transform.Transformer, error) - e encoding.Encoding - src, want string - }{ - {enc, EUCJP, "갂", ""}, - {enc, EUCJP, "a갂", "a"}, - {enc, EUCJP, "丌갂", "\x8f\xb0\xa4"}, - - {enc, ISO2022JP, "갂", ""}, - {enc, ISO2022JP, "a갂", "a"}, - {enc, ISO2022JP, "朗갂", "\x1b$BzF\x1b(B"}, // switch back to ASCII mode at end - - {enc, ShiftJIS, "갂", ""}, - {enc, ShiftJIS, "a갂", "a"}, - {enc, ShiftJIS, "\u2190갂", "\x81\xa9"}, - - // Continue correctly after errors - {dec, EUCJP, "\x8e\xa0", "\ufffd\ufffd"}, - {dec, EUCJP, "\x8e\xe0", "\ufffd"}, - {dec, EUCJP, "\x8e\xff", "\ufffd\ufffd"}, - {dec, EUCJP, "\x8ea", "\ufffda"}, - {dec, EUCJP, "\x8f\xa0", "\ufffd\ufffd"}, - {dec, EUCJP, "\x8f\xa1\xa0", "\ufffd\ufffd"}, - {dec, EUCJP, "\x8f\xa1a", "\ufffda"}, - {dec, EUCJP, "\x8f\xa1a", "\ufffda"}, - {dec, EUCJP, "\x8f\xa1a", "\ufffda"}, - {dec, EUCJP, "\x8f\xa2\xa2", "\ufffd"}, - {dec, EUCJP, "\xfe", "\ufffd"}, - {dec, EUCJP, "\xfe\xfc", "\ufffd"}, - {dec, EUCJP, "\xfe\xff", "\ufffd\ufffd"}, - // Correct handling of end of source - {dec, EUCJP, strings.Repeat("\x8e", n), strings.Repeat("\ufffd", n)}, - {dec, EUCJP, strings.Repeat("\x8f", n), strings.Repeat("\ufffd", n)}, - {dec, EUCJP, strings.Repeat("\x8f\xa0", n), strings.Repeat("\ufffd", 2*n)}, - {dec, EUCJP, "a" + strings.Repeat("\x8f\xa1", n), "a" + strings.Repeat("\ufffd", n)}, - {dec, EUCJP, "a" + strings.Repeat("\x8f\xa1\xff", n), "a" + strings.Repeat("\ufffd", 2*n)}, - - // Continue correctly after errors - {dec, ShiftJIS, "\x80", "\u0080"}, // It's what the spec says. - {dec, ShiftJIS, "\x81", "\ufffd"}, - {dec, ShiftJIS, "\x81\x7f", "\ufffd\u007f"}, - {dec, ShiftJIS, "\xe0", "\ufffd"}, - {dec, ShiftJIS, "\xe0\x39", "\ufffd\u0039"}, - {dec, ShiftJIS, "\xe0\x9f", "燹"}, - {dec, ShiftJIS, "\xe0\xfd", "\ufffd"}, - {dec, ShiftJIS, "\xef\xfc", "\ufffd"}, - {dec, ShiftJIS, "\xfc\xfc", "\ufffd"}, - {dec, ShiftJIS, "\xfc\xfd", "\ufffd"}, - {dec, ShiftJIS, "\xfdaa", "\ufffdaa"}, - - {dec, ShiftJIS, strings.Repeat("\x81\x81", n), strings.Repeat("=", n)}, - {dec, ShiftJIS, strings.Repeat("\xe0\xfd", n), strings.Repeat("\ufffd", n)}, - {dec, ShiftJIS, "a" + strings.Repeat("\xe0\xfd", n), "a" + strings.Repeat("\ufffd", n)}, - - {dec, ISO2022JP, "\x1b$", "\ufffd$"}, - {dec, ISO2022JP, "\x1b(", "\ufffd("}, - {dec, ISO2022JP, "\x1b@", "\ufffd@"}, - {dec, ISO2022JP, "\x1bZ", "\ufffdZ"}, - // incomplete escapes - {dec, ISO2022JP, "\x1b$", "\ufffd$"}, - {dec, ISO2022JP, "\x1b$J.", "\ufffd$J."}, // illegal - {dec, ISO2022JP, "\x1b$B.", "\ufffd"}, // JIS208 - {dec, ISO2022JP, "\x1b$(", "\ufffd$("}, // JIS212 - {dec, ISO2022JP, "\x1b$(..", "\ufffd$(.."}, // JIS212 - {dec, ISO2022JP, "\x1b$(" + long, "\ufffd$(" + long}, // JIS212 - {dec, ISO2022JP, "\x1b$(D.", "\ufffd"}, // JIS212 - {dec, ISO2022JP, "\x1b$(D..", "\ufffd"}, // JIS212 - {dec, ISO2022JP, "\x1b$(D...", "\ufffd\ufffd"}, // JIS212 - {dec, ISO2022JP, "\x1b(B.", "."}, // ascii - {dec, ISO2022JP, "\x1b(B..", ".."}, // ascii - {dec, ISO2022JP, "\x1b(J.", "."}, // roman - {dec, ISO2022JP, "\x1b(J..", ".."}, // roman - {dec, ISO2022JP, "\x1b(I\x20", "\ufffd"}, // katakana - {dec, ISO2022JP, "\x1b(I\x20\x20", "\ufffd\ufffd"}, // katakana - // recover to same state - {dec, ISO2022JP, "\x1b(B\x1b.", "\ufffd."}, - {dec, ISO2022JP, "\x1b(I\x1b.", "\ufffdョ"}, - {dec, ISO2022JP, "\x1b(I\x1b$.", "\ufffd、ョ"}, - {dec, ISO2022JP, "\x1b(I\x1b(.", "\ufffdィョ"}, - {dec, ISO2022JP, "\x1b$B\x7e\x7e", "\ufffd"}, - {dec, ISO2022JP, "\x1b$@\x0a.", "\x0a."}, - {dec, ISO2022JP, "\x1b$B\x0a.", "\x0a."}, - {dec, ISO2022JP, "\x1b$(D\x0a.", "\x0a."}, - {dec, ISO2022JP, "\x1b$(D\x7e\x7e", "\ufffd"}, - {dec, ISO2022JP, "\x80", "\ufffd"}, - - // TODO: according to https://encoding.spec.whatwg.org/#iso-2022-jp, - // these should all be correct. - // {dec, ISO2022JP, "\x1b(B\x0E", "\ufffd"}, - // {dec, ISO2022JP, "\x1b(B\x0F", "\ufffd"}, - {dec, ISO2022JP, "\x1b(B\x5C", "\u005C"}, - {dec, ISO2022JP, "\x1b(B\x7E", "\u007E"}, - // {dec, ISO2022JP, "\x1b(J\x0E", "\ufffd"}, - // {dec, ISO2022JP, "\x1b(J\x0F", "\ufffd"}, - // {dec, ISO2022JP, "\x1b(J\x5C", "\u00A5"}, - // {dec, ISO2022JP, "\x1b(J\x7E", "\u203E"}, - } - for _, tc := range testCases { - dir, tr, wantErr := tc.init(tc.e) - t.Run(fmt.Sprintf("%s/%v/%q", dir, tc.e, tc.src), func(t *testing.T) { - dst := make([]byte, 100000) - src := []byte(tc.src) - for i := 0; i <= len(tc.src); i++ { - nDst, nSrc, err := tr.Transform(dst, src[:i], false) - if err != nil && err != transform.ErrShortSrc && err != wantErr { - t.Fatalf("error on first call to Transform: %v", err) - } - n, _, err := tr.Transform(dst[nDst:], src[nSrc:], true) - nDst += n - if err != wantErr { - t.Fatalf("(%q|%q): got %v; want %v", tc.src[:i], tc.src[i:], err, wantErr) - } - if got := string(dst[:nDst]); got != tc.want { - t.Errorf("(%q|%q):\ngot %q\nwant %q", tc.src[:i], tc.src[i:], got, tc.want) - } - } - }) - } -} - -func TestCorrect(t *testing.T) { - testCases := []struct { - init func(e encoding.Encoding) (string, transform.Transformer, error) - e encoding.Encoding - src, want string - }{ - {dec, ShiftJIS, "\x9f\xfc", "滌"}, - {dec, ShiftJIS, "\xfb\xfc", "髙"}, - {dec, ShiftJIS, "\xfa\xb1", "﨑"}, - {enc, ShiftJIS, "滌", "\x9f\xfc"}, - {enc, ShiftJIS, "﨑", "\xed\x95"}, - } - for _, tc := range testCases { - dir, tr, _ := tc.init(tc.e) - - dst, _, err := transform.String(tr, tc.src) - if err != nil { - t.Errorf("%s %v(%q): got %v; want %v", dir, tc.e, tc.src, err, nil) - } - if got := string(dst); got != tc.want { - t.Errorf("%s %v(%q):\ngot %q\nwant %q", dir, tc.e, tc.src, got, tc.want) - } - } -} - -func TestBasics(t *testing.T) { - // The encoded forms can be verified by the iconv program: - // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd - testCases := []struct { - e encoding.Encoding - encPrefix string - encSuffix string - encoded string - utf8 string - }{{ - // "A。カ゚ 0208: etc 0212: etc" is a nonsense string that contains ASCII, half-width - // kana, JIS X 0208 (including two near the kink in the Shift JIS second byte - // encoding) and JIS X 0212 encodable codepoints. - // - // "月日は百代の過客にして、行かふ年も又旅人也。" is from the 17th century poem - // "Oku no Hosomichi" and contains both hiragana and kanji. - e: EUCJP, - encoded: "A\x8e\xa1\x8e\xb6\x8e\xdf " + - "0208: \xa1\xa1\xa1\xa2\xa1\xdf\xa1\xe0\xa1\xfd\xa1\xfe\xa2\xa1\xa2\xa2\xf4\xa6 " + - "0212: \x8f\xa2\xaf\x8f\xed\xe3", - utf8: "A。カ゚ " + - "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199 " + - "0212: \u02d8\u9fa5", - }, { - e: EUCJP, - encoded: "\xb7\xee\xc6\xfc\xa4\xcf\xc9\xb4\xc2\xe5\xa4\xce\xb2\xe1\xb5\xd2" + - "\xa4\xcb\xa4\xb7\xa4\xc6\xa1\xa2\xb9\xd4\xa4\xab\xa4\xd5\xc7\xaf" + - "\xa4\xe2\xcb\xf4\xce\xb9\xbf\xcd\xcc\xe9\xa1\xa3", - utf8: "月日は百代の過客にして、行かふ年も又旅人也。", - }, { - e: ISO2022JP, - encSuffix: "\x1b\x28\x42", - encoded: "\x1b\x28\x49\x21\x36\x5f\x1b\x28\x42 " + - "0208: \x1b\x24\x42\x21\x21\x21\x22\x21\x5f\x21\x60\x21\x7d\x21\x7e\x22\x21\x22\x22\x74\x26", - utf8: "。カ゚ " + - "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199", - }, { - e: ISO2022JP, - encPrefix: "\x1b\x24\x42", - encSuffix: "\x1b\x28\x42", - encoded: "\x37\x6e\x46\x7c\x24\x4f\x49\x34\x42\x65\x24\x4e\x32\x61\x35\x52" + - "\x24\x4b\x24\x37\x24\x46\x21\x22\x39\x54\x24\x2b\x24\x55\x47\x2f" + - "\x24\x62\x4b\x74\x4e\x39\x3f\x4d\x4c\x69\x21\x23", - utf8: "月日は百代の過客にして、行かふ年も又旅人也。", - }, { - e: ShiftJIS, - encoded: "A\xa1\xb6\xdf " + - "0208: \x81\x40\x81\x41\x81\x7e\x81\x80\x81\x9d\x81\x9e\x81\x9f\x81\xa0\xea\xa4", - utf8: "A。カ゚ " + - "0208: \u3000\u3001\u00d7\u00f7\u25ce\u25c7\u25c6\u25a1\u7199", - }, { - e: ShiftJIS, - encoded: "\x8c\x8e\x93\xfa\x82\xcd\x95\x53\x91\xe3\x82\xcc\x89\xdf\x8b\x71" + - "\x82\xc9\x82\xb5\x82\xc4\x81\x41\x8d\x73\x82\xa9\x82\xd3\x94\x4e" + - "\x82\xe0\x96\x94\x97\xb7\x90\x6c\x96\xe7\x81\x42", - utf8: "月日は百代の過客にして、行かふ年も又旅人也。", - }} - - for _, tc := range testCases { - enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, tc.encPrefix, tc.encSuffix) - } -} - -func TestFiles(t *testing.T) { - enctest.TestFile(t, EUCJP) - enctest.TestFile(t, ISO2022JP) - enctest.TestFile(t, ShiftJIS) -} - -func BenchmarkEncoding(b *testing.B) { - enctest.Benchmark(b, EUCJP) - enctest.Benchmark(b, ISO2022JP) - enctest.Benchmark(b, ShiftJIS) -} diff --git a/vendor/golang.org/x/text/encoding/korean/all_test.go b/vendor/golang.org/x/text/encoding/korean/all_test.go deleted file mode 100644 index 8225ce62..00000000 --- a/vendor/golang.org/x/text/encoding/korean/all_test.go +++ /dev/null @@ -1,94 +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 korean - -import ( - "strings" - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/enctest" - "golang.org/x/text/transform" -) - -func dec(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Decode", e.NewDecoder(), nil -} -func enc(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Encode", e.NewEncoder(), internal.ErrASCIIReplacement -} - -func TestNonRepertoire(t *testing.T) { - // Pick n large enough to cause an overflow in the destination buffer of - // transform.String. - const n = 10000 - testCases := []struct { - init func(e encoding.Encoding) (string, transform.Transformer, error) - e encoding.Encoding - src, want string - }{ - {dec, EUCKR, "\xfe\xfe", "\ufffd"}, - // {dec, EUCKR, "א", "\ufffd"}, // TODO: why is this different? - - {enc, EUCKR, "א", ""}, - {enc, EUCKR, "aא", "a"}, - {enc, EUCKR, "\uac00א", "\xb0\xa1"}, - // TODO: should we also handle Jamo? - - {dec, EUCKR, "\x80", "\ufffd"}, - {dec, EUCKR, "\xff", "\ufffd"}, - {dec, EUCKR, "\x81", "\ufffd"}, - {dec, EUCKR, "\xb0\x40", "\ufffd@"}, - {dec, EUCKR, "\xb0\xff", "\ufffd"}, - {dec, EUCKR, "\xd0\x20", "\ufffd "}, - {dec, EUCKR, "\xd0\xff", "\ufffd"}, - - {dec, EUCKR, strings.Repeat("\x81", n), strings.Repeat("걖", n/2)}, - } - for _, tc := range testCases { - dir, tr, wantErr := tc.init(tc.e) - - dst, _, err := transform.String(tr, tc.src) - if err != wantErr { - t.Errorf("%s %v(%q): got %v; want %v", dir, tc.e, tc.src, err, wantErr) - } - if got := string(dst); got != tc.want { - t.Errorf("%s %v(%q):\ngot %q\nwant %q", dir, tc.e, tc.src, got, tc.want) - } - } -} - -func TestBasics(t *testing.T) { - // The encoded forms can be verified by the iconv program: - // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd - testCases := []struct { - e encoding.Encoding - encoded string - utf8 string - }{{ - // Korean tests. - // - // "A\uac02\uac35\uac56\ud401B\ud408\ud620\ud624C\u4f3d\u8a70D" is a - // nonsense string that contains ASCII, Hangul and CJK ideographs. - // - // "세계야, 안녕" translates as "Hello, world". - e: EUCKR, - encoded: "A\x81\x41\x81\x61\x81\x81\xc6\xfeB\xc7\xa1\xc7\xfe\xc8\xa1C\xca\xa1\xfd\xfeD", - utf8: "A\uac02\uac35\uac56\ud401B\ud408\ud620\ud624C\u4f3d\u8a70D", - }, { - e: EUCKR, - encoded: "\xbc\xbc\xb0\xe8\xbe\xdf\x2c\x20\xbe\xc8\xb3\xe7", - utf8: "세계야, 안녕", - }} - - for _, tc := range testCases { - enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, "", "") - } -} - -func TestFiles(t *testing.T) { enctest.TestFile(t, EUCKR) } - -func BenchmarkEncoding(b *testing.B) { enctest.Benchmark(b, EUCKR) } diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go deleted file mode 100644 index b369da21..00000000 --- a/vendor/golang.org/x/text/encoding/simplifiedchinese/all_test.go +++ /dev/null @@ -1,143 +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 simplifiedchinese - -import ( - "strings" - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/enctest" - "golang.org/x/text/transform" -) - -func dec(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Decode", e.NewDecoder(), nil -} -func enc(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Encode", e.NewEncoder(), internal.ErrASCIIReplacement -} - -func TestNonRepertoire(t *testing.T) { - // Pick n large enough to overflow the destination buffer of transform.String. - const n = 10000 - testCases := []struct { - init func(e encoding.Encoding) (string, transform.Transformer, error) - e encoding.Encoding - src, want string - }{ - {dec, GBK, "a\xfe\xfeb", "a\ufffdb"}, - {dec, HZGB2312, "~{z~", "\ufffd"}, - - {enc, GBK, "갂", ""}, - {enc, GBK, "a갂", "a"}, - {enc, GBK, "\u4e02갂", "\x81@"}, - - {enc, HZGB2312, "갂", ""}, - {enc, HZGB2312, "a갂", "a"}, - {enc, HZGB2312, "\u6cf5갂", "~{1C~}"}, - - {dec, GB18030, "\x80", "€"}, - {dec, GB18030, "\x81", "\ufffd"}, - {dec, GB18030, "\x81\x20", "\ufffd "}, - {dec, GB18030, "\xfe\xfe", "\ufffd"}, - {dec, GB18030, "\xfe\xff", "\ufffd\ufffd"}, - {dec, GB18030, "\xfe\x30", "\ufffd0"}, - {dec, GB18030, "\xfe\x30\x30 ", "\ufffd00 "}, - {dec, GB18030, "\xfe\x30\xff ", "\ufffd0\ufffd "}, - {dec, GB18030, "\xfe\x30\x81\x21", "\ufffd0\ufffd!"}, - - {dec, GB18030, strings.Repeat("\xfe\x30", n), strings.Repeat("\ufffd0", n)}, - - {dec, HZGB2312, "~/", "\ufffd"}, - {dec, HZGB2312, "~{a\x80", "\ufffd"}, - {dec, HZGB2312, "~{a\x80", "\ufffd"}, - {dec, HZGB2312, "~{" + strings.Repeat("z~", n), strings.Repeat("\ufffd", n)}, - {dec, HZGB2312, "~{" + strings.Repeat("\xfe\x30", n), strings.Repeat("\ufffd", n*2)}, - } - for _, tc := range testCases { - dir, tr, wantErr := tc.init(tc.e) - - dst, _, err := transform.String(tr, tc.src) - if err != wantErr { - t.Errorf("%s %v(%q): got %v; want %v", dir, tc.e, tc.src, err, wantErr) - } - if got := string(dst); got != tc.want { - t.Errorf("%s %v(%q):\ngot %q\nwant %q", dir, tc.e, tc.src, got, tc.want) - } - } -} - -func TestBasics(t *testing.T) { - // The encoded forms can be verified by the iconv program: - // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd - testCases := []struct { - e encoding.Encoding - encPrefix string - encoded string - utf8 string - }{{ - // "\u0081\u00de\u00df\u00e0\u00e1\u00e2\u00e3\uffff\U00010000" is a - // nonsense string that contains GB18030 encodable codepoints of which - // only U+00E0 and U+00E1 are GBK encodable. - // - // "A\u3000\u554a\u4e02\u4e90\u72dc\u7349\u02ca\u2588Z€" is a nonsense - // string that contains ASCII and GBK encodable codepoints from Levels - // 1-5 as well as the Euro sign. - // - // "A\u43f0\u4c32\U00027267\u3000\U0002910d\u79d4Z€" is a nonsense string - // that contains ASCII and Big5 encodable codepoints from the Basic - // Multilingual Plane and the Supplementary Ideographic Plane as well as - // the Euro sign. - // - // "花间一壶酒,独酌无相亲。" (simplified) and - // "花間一壺酒,獨酌無相親。" (traditional) - // are from the 8th century poem "Yuè Xià Dú Zhuó". - e: GB18030, - encoded: "\x81\x30\x81\x31\x81\x30\x89\x37\x81\x30\x89\x38\xa8\xa4\xa8\xa2" + - "\x81\x30\x89\x39\x81\x30\x8a\x30\x84\x31\xa4\x39\x90\x30\x81\x30", - utf8: "\u0081\u00de\u00df\u00e0\u00e1\u00e2\u00e3\uffff\U00010000", - }, { - e: GB18030, - encoded: "\xbb\xa8\xbc\xe4\xd2\xbb\xba\xf8\xbe\xc6\xa3\xac\xb6\xc0\xd7\xc3" + - "\xce\xde\xcf\xe0\xc7\xd7\xa1\xa3", - utf8: "花间一壶酒,独酌无相亲。", - }, { - e: GBK, - encoded: "A\xa1\xa1\xb0\xa1\x81\x40\x81\x80\xaa\x40\xaa\x80\xa8\x40\xa8\x80Z\x80", - utf8: "A\u3000\u554a\u4e02\u4e90\u72dc\u7349\u02ca\u2588Z€", - }, { - e: GBK, - encoded: "\xbb\xa8\xbc\xe4\xd2\xbb\xba\xf8\xbe\xc6\xa3\xac\xb6\xc0\xd7\xc3" + - "\xce\xde\xcf\xe0\xc7\xd7\xa1\xa3", - utf8: "花间一壶酒,独酌无相亲。", - }, { - e: HZGB2312, - encoded: "A~{\x21\x21~~\x30\x21~}Z~~", - utf8: "A\u3000~\u554aZ~", - }, { - e: HZGB2312, - encPrefix: "~{", - encoded: ";(<dR;:x>F#,6@WCN^O`GW!#", - utf8: "花间一壶酒,独酌无相亲。", - }} - - for _, tc := range testCases { - enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, tc.encPrefix, "") - } -} - -func TestFiles(t *testing.T) { - enctest.TestFile(t, GB18030) - enctest.TestFile(t, GBK) - enctest.TestFile(t, HZGB2312) -} - -func BenchmarkEncoding(b *testing.B) { - enctest.Benchmark(b, GB18030) - enctest.Benchmark(b, GBK) - enctest.Benchmark(b, HZGB2312) -} diff --git a/vendor/golang.org/x/text/encoding/testdata/candide-gb18030.txt b/vendor/golang.org/x/text/encoding/testdata/candide-gb18030.txt deleted file mode 100644 index bd7a5722..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/candide-gb18030.txt +++ /dev/null @@ -1,510 +0,0 @@ -This file was derived from -http://www.gutenberg.org/cache/epub/4650/pg4650.txt --------- - - CANDIDE, - - ou - - L'OPTIMISME, - - TRADUIT DE L'ALLEMAND - - DE M. LE DOCTEUR RALPH, - - AVEC LES ADDITIONS - - QU'ON A TROUV07ES DANS LA POCHE DU DOCTEUR, LORSQU'IL MOURUT - - 08 MINDEN, L'AN DE GR00CE 1759 - - 1759 - - - -CHAPITRE I. - -Comment Candide fut lev dans un beau ch09teau, et comment il fut -chass d'icelui. - -Il y avait en Vestphalie, dans le ch09teau de M. le baron de -Thunder-ten-tronckh, un jeune gar04on qui la nature avait donn -les moeurs les plus douces. Sa physionomie annon04ait son 09me. -Il avait le jugement assez droit, avec l'esprit le plus simple; -c'est, je crois, pour cette raison qu'on le nommait Candide. Les -anciens domestiques de la maison soup04onnaient qu'il tait fils -de la soeur de monsieur le baron et d'un bon et honnte -gentilhomme du voisinage, que cette demoiselle ne voulut jamais -pouser parce qu'il n'avait pu prouver que soixante et onze -quartiers, et que le reste de son arbre gnalogique avait t -perdu par l'injure du temps. - -Monsieur le baron tait un des plus puissants seigneurs de la -Westphalie, car son ch09teau avait une porte et des fentres. Sa -grande salle mme tait orne d'une tapisserie. Tous les chiens -de ses basses-cours composaient une meute dans le besoin; ses -palefreniers taient ses piqueurs; le vicaire du village tait -son grand-aum00nier. Ils l'appelaient tous monseigneur, et ils -riaient quand il fesait des contes. - -Madame la baronne, qui pesait environ trois cent cinquante -livres, s'attirait par l une trs grande considration, et -fesait les honneurs de la maison avec une dignit qui la rendait -encore plus respectable. Sa fille Cungonde, 09ge de dix-sept -ans, tait haute en couleur, fra06che, grasse, apptissante. Le -fils du baron paraissait en tout digne de son pre. Le -prcepteur Pangloss[1] tait l'oracle de la maison, et le petit -Candide coutait ses le04ons avec toute la bonne foi de son 09ge et -de son caractre. - - [1] De _pan_, tout, et _glossa_, langue. B. - - -Pangloss enseignait la mtaphysico-thologo-cosmolonigologie. Il -prouvait admirablement qu'il n'y a point d'effet sans cause, et -que, dans ce meilleur des mondes possibles, le ch09teau de -monseigneur le baron tait le plus beau des ch09teaux, et madame -la meilleure des baronnes possibles. - -Il est dmontr, disait-il, que les choses ne peuvent tre -autrement; car tout tant fait pour une fin, tout est -ncessairement pour la meilleure fin. Remarquez bien que les nez -ont t faits pour porter des lunettes; aussi avons-nous des -lunettes[2]. Les jambes sont visiblement institues pour tre -chausses, et nous avons des chausses. Les pierres ont t -formes pour tre tailles et pour en faire des ch09teaux; aussi -monseigneur a un trs beau ch09teau: le plus grand baron de la -province doit tre le mieux log; et les cochons tant faits pour -tre mangs, nous mangeons du porc toute l'anne: par consquent, -ceux qui ont avanc que tout est bien ont dit une sottise; il -fallait dire que tout est au mieux. - - [2] Voyez tome XXVII, page 528; et dans les _Mlanges_, anne - 1738, le chapitre XI de la troisime partie des _07lments de la - philosophie de Newton_; et anne 1768, le chapitre X des - _Singularits de la nature_. B. - - -Candide coutait attentivement, et croyait innocemment; car il -trouvait mademoiselle Cungonde extrmement belle, quoiqu'il ne -pr06t jamais la hardiesse de le lui dire. Il concluait qu'aprs -le bonheur d'tre n baron de Thunder-ten-tronckh, le second -degr de bonheur tait d'tre mademoiselle Cungonde; le -troisime, de la voir tous les jours; et le quatrime, d'entendre -ma06tre Pangloss, le plus grand philosophe de la province, et par -consquent de toute la terre. - -Un jour Cungonde, en se promenant auprs du ch09teau, dans le -petit bois qu'on appelait parc, vit entre des broussailles le -docteur Pangloss qui donnait une le04on de physique exprimentale - la femme de chambre de sa mre, petite brune trs jolie et trs -docile. Comme mademoiselle Cungonde avait beaucoup de -disposition pour les sciences, elle observa, sans souffler, les -expriences ritres dont elle fut tmoin; elle vit clairement -la raison suffisante du docteur, les effets et les causes, et -s'en retourna tout agite, toute pensive, toute remplie du dsir -d'tre savante, songeant qu'elle pourrait bien tre la raison -suffisante du jeune Candide, qui pouvait aussi tre la sienne. - -Elle rencontra Candide en revenant au ch09teau, et rougit: Candide -rougit aussi . Elle lui dit bonjour d'une voix entrecoupe; et -Candide lui parla sans savoir ce qu'il disait. Le lendemain, -aprs le d06ner, comme on sortait de table, Cungonde et Candide -se trouvrent derrire un paravent; Cungonde laissa tomber son -mouchoir, Candide le ramassa; elle lui prit innocemment la main; -le jeune homme baisa innocemment la main de la jeune demoiselle -avec une vivacit, une sensibilit, une gr09ce toute particulire; -leurs bouches se rencontrrent, leurs yeux s'enflammrent, leurs -genoux tremblrent, leurs mains s'garrent. M. le baron de -Thunder-ten-tronckh passa auprs du paravent, et voyant cette -cause et cet effet, chassa Candide du ch09teau grands coups de -pied dans le derrire. Cungonde s'vanouit: elle fut soufflete -par madame la baronne ds qu'elle fut revenue elle-mme; et -tout fut constern dans le plus beau et le plus agrable des -ch09teaux possibles. - - - -CHAPITRE II - -Ce que devint Candide parmi les Bulgares. - - -Candide, chass du paradis terrestre, marcha longtemps sans -savoir o, pleurant, levant les yeux au ciel, les tournant -souvent vers le plus beau des ch09teaux qui renfermait la plus -belle des baronnettes; il se coucha sans souper au milieu des -champs entre deux sillons; la neige tombait gros flocons. -Candide, tout transi, se tra06na le lendemain vers la ville -voisine, qui s'appelle _Valdberghoff-trarbk-dikdorff_, n'ayant -point d'argent, mourant de faim et de lassitude. Il s'arrta -tristement la porte d'un cabaret. Deux hommes habills de bleu -le remarqurent: Camarade, dit l'un, voil un jeune homme trs -bien fait, et qui a la taille requise; ils s'avancrent vers -Candide et le prirent d06ner trs civilement.--Messieurs, leur -dit Candide avec une modestie charmante, vous me faites beaucoup -d'honneur, mais je n'ai pas de quoi payer mon cot.--Ah! -monsieur, lui dit un des bleus, les personnes de votre figure et -de votre mrite ne paient jamais rien: n'avez-vous pas cinq pieds -cinq pouces de haut?--Oui, messieurs, c'est ma taille, dit-il en -fesant la rvrence.--Ah! monsieur, mettez-vous table; non -seulement nous vous dfraierons, mais nous ne souffrirons jamais -qu'un homme comme vous manque d'argent; les hommes ne sont faits -que pour se secourir les uns les autres.--Vous avez raison, dit -Candide; c'est ce que M. Pangloss m'a toujours dit, et je vois -bien que tout est au mieux. On le prie d'accepter quelques cus, -il les prend et veut faire son billet; on n'en veut point, on se -met table. N'aimez-vous pas tendrement?....--Oh! oui, -rpond-il, j'aime tendrement mademoiselle Cungonde.--Non, dit -l'un de ces messieurs, nous vous demandons si vous n'aimez pas -tendrement le roi des Bulgares?--Point du tout, dit-il, car je ne -l'ai jamais vu.--Comment! c'est le plus charmant des rois, et il -faut boire sa sant.--Oh! trs volontiers, messieurs. Et il -boit. C'en est assez, lui dit-on, vous voil l'appui, le -soutien, le dfenseur, le hros des Bulgares; votre fortune est -faite, et votre gloire est assure. On lui met sur-le-champ les -fers aux pieds, et on le mne au rgiment. On le fait tourner -droite, gauche, hausser la baguette, remettre la baguette, -coucher en joue, tirer, doubler le pas, et on lui donne trente -coups de b09ton; le lendemain, il fait l'exercice un peu moins -mal, et il ne re04oit que vingt coups; le surlendemain, on ne lui -en donne que dix, et il est regard par ses camarades comme un -prodige. - -Candide, tout stupfait, ne dmlait pas encore trop bien comment -il tait un hros. Il s'avisa un beau jour de printemps de -s'aller promener, marchant tout droit devant lui, croyant que -c'tait un privilge de l'espce humaine, comme de l'espce -animale, de se servir de ses jambes son plaisir. Il n'eut pas -fait deux lieues que voil quatre autres hros de six pieds qui -l'atteignent, qui le lient, qui le mnent dans un cachot. On lui -demanda juridiquement ce qu'il aimait le mieux d'tre fustig -trente-six fois par tout le rgiment, ou de recevoir -la-fois -douze balles de plomb dans la cervelle. Il eut beau dire que les -volonts sont libres, et qu'il ne voulait ni l'un ni l'autre, il -fallut faire un choix; il se dtermina, en vertu du don de Dieu -qu'on nomme _libert_, passer trente-six fois par les -baguettes; il essuya deux promenades. Le rgiment tait compos -de deux mille hommes; cela lui composa quatre mille coups de -baguette, qui, depuis la nuque du cou jusqu'au cul, lui -dcouvrirent les muscles et les nerfs. Comme on allait procder - la troisime course, Candide, n'en pouvant plus, demanda en -gr09ce qu'on voul04t bien avoir la bont de lui casser la tte; il -obtint cette faveur; on lui bande les yeux; on le fait mettre -genoux. Le roi des Bulgares passe dans ce moment, s'informe du -crime du patient; et comme ce roi avait un grand gnie, il -comprit, par tout ce qu'il apprit de Candide, que c'tait un -jeune mtaphysicien fort ignorant des choses de ce monde, et il -lui accorda sa gr09ce avec une clmence qui sera loue dans tous -les journaux et dans tous les sicles. Un brave chirurgien -gurit Candide en trois semaines avec les mollients enseigns -par Dioscoride. Il avait dj un peu de peau et pouvait marcher, -quand le roi des Bulgares livra bataille au roi des Abares. - - - -CHAPITRE III. - -Comment Candide se sauva d'entre les Bulgares, et ce qu'il -devint. - - -Rien n'tait si beau, si leste, si brillant, si bien ordonn que -les deux armes. Les trompettes, les fifres, les hautbois, les -tambours, les canons; formaient une harmonie telle qu'il n'y en -eut jamais en enfer. Les canons renversrent d'abord peu prs -six mille hommes de chaque c00t; ensuite la mousqueterie 00ta du -meilleur des mondes environ neuf dix mille coquins qui en -infectaient la surface. La ba07onnette fut aussi la raison -suffisante de la mort de quelques milliers d'hommes. Le tout -pouvait bien se monter une trentaine de mille 09mes. Candide, -qui tremblait comme un philosophe, se cacha du mieux qu'il put -pendant cette boucherie hro07que. - -Enfin, tandis que les deux rois fesaient chanter des _Te Deum_, -chacun dans son camp, il prit le parti d'aller raisonner ailleurs -des effets et des causes. Il passa par-dessus des tas de morts -et de mourants, et gagna d'abord un village voisin; il tait en -cendres: c'tait un village abare que les Bulgares avaient br04l, -selon les lois du droit public. Ici des vieillards cribls de -coups regardaient mourir leurs femmes gorges, qui tenaient -leurs enfants leurs mamelles sanglantes; l des filles -ventres aprs avoir assouvi les besoins naturels de quelques -hros, rendaient les derniers soupirs; d'autres demi br04les -criaient qu'on achev09t de leur donner la mort. Des cervelles -taient rpandues sur la terre c00t de bras et de jambes -coups. - -Candide s'enfuit au plus vite dans un autre village: il -appartenait des Bulgares, et les hros abares l'avaient trait -de mme. Candide, toujours marchant sur des membres palpitants -ou travers des ruines, arriva enfin hors du th09tre de la -guerre, portant quelques petites provisions dans son bissac, et -n'oubliant jamais mademoiselle Cungonde. Ses provisions lui -manqurent quand il fut en Hollande; mais ayant entendu dire que -tout le monde tait riche dans ce pays-l, et qu'on y tait -chrtien, il ne douta pas qu'on ne le trait09t aussi bien qu'il -l'avait t dans le ch09teau de M. le baron, avant qu'il en e04t -t chass pour les beaux yeux de mademoiselle Cungonde. - -Il demanda l'aum00ne plusieurs graves personnages, qui lui -rpondirent tous que, s'il continuait faire ce mtier, on -l'enfermerait dans une maison de correction pour lui apprendre -vivre. - -Il s'adressa ensuite un homme qui venait de parler tout seul -une heure de suite sur la charit dans une grande assemble. Cet -orateur le regardant de travers lui dit: Que venez-vous faire -ici? y tes-vous pour la bonne cause? Il n'y a point d'effet sans -cause, rpondit modestement Candide; tout est encha06n -ncessairement et arrang pour le mieux. Il a fallu que je fusse -chass d'auprs de mademoiselle Cungonde, que j'aie pass par -les baguettes, et il faut que je demande mon pain, jusqu' ce que -je puisse en gagner; tout cela ne pouvait tre autrement. Mon -ami, lui dit l'orateur, croyez-vous que le pape soit -l'antechrist? Je ne l'avais pas encore entendu dire, rpondit -Candide: mais qu'il le soit, ou qu'il ne le soit pas, je manque -de pain. Tu ne mrites pas d'en manger, dit l'autre: va, coquin, -va, misrable, ne m'approche de ta vie. La femme de l'orateur -ayant mis la tte la fentre, et avisant un homme qui doutait -que le pape f04t antechrist, lui rpandit sur le chef un -plein..... O ciel! quel excs se porte le zle de la religion -dans les dames! - -Un homme qui n'avait point t baptis, un bon anabaptiste, nomm -Jacques, vit la manire cruelle et ignominieuse dont on traitait -ainsi un de ses frres, un tre deux pieds sans plumes, qui -avait une 09me; il l'amena chez lui, le nettoya, lui donna du pain -et de la bire, lui fit prsent de deux florins, et voulut mme -lui apprendre travailler dans ses manufactures aux toffes de -Perse qu'on fabrique en Hollande. Candide se prosternant presque -devant lui, s'criait: Ma06tre Pangloss me l'avait bien dit que -tout est au mieux dans ce monde, car je suis infiniment plus -touch de votre extrme gnrosit que de la duret de ce -monsieur manteau noir, et de madame son pouse. - -Le lendemain, en se promenant, il rencontra un gueux tout couvert -de pustules, les yeux morts, le bout du nez rong, la bouche de -travers, les dents noires, et parlant de la gorge, tourment -d'une toux violente, et crachant une dent chaque effort. - - - -CHAPITRE IV. - -Comment Candide rencontra son ancien ma06tre de philosophie, le -docteur Pangloss, et ce qui en advint. - - -Candide, plus mu encore de compassion que d'horreur, donna cet -pouvantable gueux les deux florins qu'il avait re04us de son -honnte anabaptiste Jacques. Le fant00me le regarda fixement, -versa des larmes, et sauta son cou. Candide effray recule. -Hlas! dit le misrable l'autre misrable, ne reconnaissez-vous -plus votre cher Pangloss? Qu'entends-je? vous, mon cher ma06tre! -vous, dans cet tat horrible! quel malheur vous est-il donc -arriv? pourquoi n'tes-vous plus dans le plus beau des ch09teaux? -qu'est devenue mademoiselle Cungonde, la perle des filles, le -chef-d'oeuvre de la nature? Je n'en peux plus, dit Pangloss. -Aussit00t Candide le mena dans l'table de l'anabaptiste, o il -lui fit manger un peu de pain; et quand Pangloss fut refait: Eh -bien! lui dit-il, Cungonde? Elle est morte, reprit l'autre. -Candide s'vanouit ce mot: son ami rappela ses sens avec un peu -de mauvais vinaigre qui se trouva par hasard dans l'table. -Candide rouvre les yeux. Cungonde est morte! Ah! meilleur des -mondes, o tes-vous? Mais de quelle maladie est-elle morte? ne -serait-ce point de m'avoir vu chasser du beau ch09teau de monsieur -son pre grands coups de pied? Non, dit Pangloss, elle a t -ventre par des soldats bulgares, aprs avoir t viole autant -qu'on peut l'tre; ils ont cass la tte monsieur le baron qui -voulait la dfendre; madame la baronne a t coupe en morceaux; -mon pauvre pupille trait prcisment comme sa soeur; et quant au -ch09teau, il n'est pas rest pierre sur pierre, pas une grange, -pas un mouton, pas un canard, pas un arbre; mais nous avons t -bien vengs, car les Abares en ont fait autant dans une baronnie -voisine qui appartenait un seigneur bulgare. - -A ce discours, Candide s'vanouit encore; mais revenu soi, et -ayant dit tout ce qu'il devait dire, il s'enquit de la cause et -de l'effet, et de la raison suffisante qui avait mis Pangloss -dans un si piteux tat. Hlas! dit l'autre, c'est l'amour: -l'amour, le consolateur du genre humain, le conservateur de -l'univers, l'09me de tous les tres sensibles, le tendre amour. -Hlas! dit Candide, je l'ai connu cet amour, ce souverain des -coeurs, cette 09me de notre 09me; il ne m'a jamais valu qu'un -baiser et vingt coups de pied au cul. Comment cette belle cause -a-t-elle pu produire en vous un effet si abominable? - -Pangloss rpondit en ces termes: O mon cher Candide! vous avez -connu Paquette, cette jolie suivante de notre auguste baronne: -j'ai go04t dans ses bras les dlices du paradis, qui ont produit -ces tourments d'enfer dont vous me voyez dvor; elle en tait -infecte, elle en est peut-tre morte. Paquette tenait ce -prsent d'un cordelier trs savant qui avait remont la source, -car il l'avait eu d'une vieille comtesse, qui l'avait re04u d'un -capitaine de cavalerie, qui le devait une marquise, qui le -tenait d'un page, qui l'avait re04u d'un jsuite, qui, tant -novice, l'avait eu en droite ligne d'un des compagnons de -Christophe Colomb. Pour moi, je ne le donnerai personne, car -je me meurs. - -O Pangloss! s'cria Candide, voil une trange gnalogie! -n'est-ce pas le diable qui en fut la souche? Point du tout, -rpliqua ce grand homme; c'tait une chose indispensable dans le -meilleur des mondes, un ingrdient ncessaire; car si Colomb -n'avait pas attrap dans une 06le de l'Amrique cette maladie[1] -qui empoisonne la source de la gnration, qui souvent mme -empche la gnration, et qui est videmment l'oppos du grand -but de la nature, nous n'aurions ni le chocolat ni la cochenille; -il faut encore observer que jusqu'aujourd'hui, dans notre -continent, cette maladie nous est particulire, comme la -controverse. Les Turcs, les Indiens, les Persans, les Chinois, -les Siamois, les Japonais, ne la connaissent pas encore; mais il -y a une raison suffisante pour qu'ils la connaissent leur tour -dans quelques sicles. En attendant elle a fait un merveilleux -progrs parmi nous, et surtout dans ces grandes armes composes -d'honntes stipendiaires bien levs, qui dcident du destin des -tats; on peut assurer que, quand trente mille hommes combattent -en bataille range contre des troupes gales en nombre, il y a -environ vingt mille vrols de chaque c00t. - - [1] Voyez tome XXXI, page 7. B. - - -Voil qui est admirable, dit Candide; mais il faut vous faire -gurir. Et comment le puis-je? dit Pangloss; je n'ai pas le sou, -mon ami, et dans toute l'tendue de ce globe on ne peut ni se -faire saigner, ni prendre un lavement sans payer, ou sans qu'il y -ait quelqu'un qui paie pour nous. - -Ce dernier discours dtermina Candide; il alla se jeter aux pieds -de son charitable anabaptiste Jacques, et lui fit une peinture si -touchante de l'tat o son ami tait rduit, que le bon-homme -n'hsita pas recueillir le docteur Pangloss; il le fit gurir -ses dpens. Pangloss, dans la cure, ne perdit qu'un oeil et une -oreille. Il crivait bien, et savait parfaitement -l'arithmtique. L'anabaptiste Jacques en fit son teneur de -livres. Au bout de deux mois, tant oblig d'aller Lisbonne -pour les affaires de son commerce, il mena dans son vaisseau ses -deux philosophes. Pangloss lui expliqua comment tout tait on ne -peut mieux. Jacques n'tait pas de cet avis. Il faut bien, -disait-il, que les hommes aient un peu corrompu la nature, car -ils ne sont point ns loups, et ils sont devenus loups. Dieu ne -leur a donn ni canons de vingt-quatre, ni ba07onnettes, et ils se -sont fait des ba07onnettes et des canons pour se dtruire. Je -pourrais mettre en ligne de compte les banqueroutes, et la -justice qui s'empare des biens des banqueroutiers pour en -frustrer les cranciers. Tout cela tait indispensable, -rpliquait le docteur borgne, et les malheurs particuliers font -le bien gnral; de sorte que plus il y a de malheurs -particuliers, et plus tout est bien. Tandis qu'il raisonnait, -l'air s'obscurcit, les vents soufflrent des quatre coins du -monde, et le vaisseau fut assailli de la plus horrible tempte, -la vue du port de Lisbonne. - - -CHAPITRE V. - -Tempte, naufrage, tremblement de terre, et ce qui advint du -docteur Pangloss, de Candide, et de l'anabaptiste Jacques. - -La moiti des passagers affaiblis, expirants de ces angoisses -inconcevables que le roulis d'un vaisseau porte dans les nerfs et -dans toutes les humeurs du corps agites en sens contraires, -n'avait pas mme la force de s'inquiter du danger. L'autre -moiti jetait des cris et fesait des prires; les voiles taient -dchires, les m09ts briss, le vaisseau entr'ouvert. Travaillait -qui pouvait, personne ne s'entendait, personne ne commandait. -L'anabaptiste aidait un peu la manoeuvre; il tait sur le -tillac; un matelot furieux le frappe rudement et l'tend sur les -planches; mais du coup qu'il lui donna, il eut lui-mme une si -violente secousse, qu'il tomba hors du vaisseau, la tte la -premire. Il restait suspendu et accroch une partie de m09t -rompu. Le bon Jacques court son secours, l'aide remonter, et -de l'effort qu'il fait, il est prcipit dans la mer la vue du -matelot, qui le laissa prir sans daigner seulement le regarder. -Candide approche, voit son bienfaiteur qui repara06t un moment, et -qui est englouti pour jamais. Il veut se jeter aprs lui dans la -mer: le philosophe Pangloss l'en empche, en lui prouvant que la -rade de Lisbonne avait t forme exprs pour que cet anabaptiste -s'y noy09t. Tandis qu'il le prouvait _ priori_, le vaisseau -s'entr'ouvre, tout prit la rserve de Pangloss, de Candide, et -de ce brutal de matelot qui avait noy le vertueux anabaptiste; -le coquin nagea heureusement jusqu'au rivage, o Pangloss et -Candide furent ports sur une planche. - -Quand ils furent revenus un peu eux, ils marchrent vers -Lisbonne; il leur restait quelque argent, avec lequel ils -espraient se sauver de la faim aprs avoir chapp la tempte. - -A peine ont-ils mis le pied dans la ville, en pleurant la mort de -leur bienfaiteur, qu'ils sentent la terre trembler sous leurs -pas[1]; la mer s'lve en bouillonnant dans le port, et brise les -vaisseaux qui sont l'ancre. Des tourbillons de flammes et de -cendres couvrent les rues et les places publiques; les maisons -s'croulent, les toits sont renverss sur les fondements, et les -fondements se dispersent; trente mille habitants de tout 09ge et -de tout sexe sont crass sous des ruines. Le matelot disait en -sifflant et en jurant: il y aura quelque chose gagner ici. -Quelle peut tre la raison suffisante de ce phnomne? disait -Pangloss. Voici le dernier jour du monde! s'criait Candide. -Le matelot court incontinent au milieu des dbris, affronte la -mort pour trouver de l'argent, en trouve, s'en empare, s'enivre, -et ayant cuv son vin, achte les faveurs de la premire fille de -bonne volont qu'il rencontre sur les ruines des maisons -dtruites, et au milieu des mourants et des morts. Pangloss le -tirait cependant par la manche: Mon ami, lui disait-il, cela -n'est pas bien, vous manquez la raison universelle, vous prenez -mal votre temps. Tte et sang, rpondit l'autre, je suis matelot -et n Batavia; j'ai march quatre fois sur le crucifix dans -quatre voyages au Japon[2]; tu as bien trouv ton homme avec ta -raison universelle! - - - [1] Le tremblement de terre de Lisbonne est du 1er novembre 1755. - B. - - [2] Voyez tome XVIII, page 470. B. - - -Quelques clats de pierre avaient bless Candide; il tait tendu -dans la rue et couvert de dbris. Il disait Pangloss: Hlas! -procure-moi un peu de vin et d'huile; je me meurs. Ce -tremblement de terre n'est pas une chose nouvelle, rpondit -Pangloss; la ville de Lima prouva les mmes secousses en -Amrique l'anne passe; mmes causes, mmes effets; il y a -certainement une tra06ne de soufre sous terre depuis Lima jusqu' -Lisbonne. Rien n'est plus probable, dit Candide; mais, pour -Dieu, un peu d'huile et de vin. Comment probable? rpliqua le -philosophe, je soutiens que la chose est dmontre. Candide -perdit connaissance, et Pangloss lui apporta un peu d'eau d'une -fontaine voisine. - -Le lendemain, ayant trouv quelques provisions de bouche en se -glissant travers des dcombres, ils rparrent un peu leurs -forces. Ensuite ils travaillrent comme les autres soulager -les habitants chapps la mort. Quelques citoyens, secourus -par eux, leur donnrent un aussi bon d06ner qu'on le pouvait dans -un tel dsastre: il est vrai que le repas tait triste; les -convives arrosaient leur pain de leurs larmes; mais Pangloss les -consola, en les assurant que les choses ne pouvaient tre -autrement: Car, dit-il, tout ceci est ce qu'il y a de mieux; car -s'il y a un volcan Lisbonne, il ne pouvait tre ailleurs; car -il est impossible que les choses ne soient pas o elles sont, car -tout est bien. - -Un petit homme noir, familier de l'inquisition, lequel tait -c00t de lui, prit poliment la parole et dit: Apparemment que -monsieur ne croit pas au pch originel; car si tout est au -mieux, il n'y a donc eu ni chute ni punition. - -Je demande trs humblement pardon votre excellence, rpondit -Pangloss encore plus poliment, car la chute de l'homme et la -maldiction entraient ncessairement dans le meilleur des mondes -possibles. Monsieur ne croit donc pas la libert? dit le -familier. Votre excellence m'excusera, dit Pangloss; la libert -peut subsister avec la ncessit absolue; car il tait ncessaire -que nous fussions libres; car enfin la volont dtermine...... -Pangloss tait au milieu de sa phrase, quand Je familier fit un -signe de tte son estafier qui lui servait boire du vin de -Porto ou d'Oporto. diff --git a/vendor/golang.org/x/text/encoding/testdata/candide-utf-16le.txt b/vendor/golang.org/x/text/encoding/testdata/candide-utf-16le.txt deleted file mode 100644 index 820608bf..00000000 Binary files a/vendor/golang.org/x/text/encoding/testdata/candide-utf-16le.txt and /dev/null differ diff --git a/vendor/golang.org/x/text/encoding/testdata/candide-utf-32be.txt b/vendor/golang.org/x/text/encoding/testdata/candide-utf-32be.txt deleted file mode 100644 index c540e201..00000000 Binary files a/vendor/golang.org/x/text/encoding/testdata/candide-utf-32be.txt and /dev/null differ diff --git a/vendor/golang.org/x/text/encoding/testdata/candide-utf-8.txt b/vendor/golang.org/x/text/encoding/testdata/candide-utf-8.txt deleted file mode 100644 index a4fd6299..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/candide-utf-8.txt +++ /dev/null @@ -1,510 +0,0 @@ -This file was derived from -http://www.gutenberg.org/cache/epub/4650/pg4650.txt --------- - - CANDIDE, - - ou - - L'OPTIMISME, - - TRADUIT DE L'ALLEMAND - - DE M. LE DOCTEUR RALPH, - - AVEC LES ADDITIONS - - QU'ON A TROUVÉES DANS LA POCHE DU DOCTEUR, LORSQU'IL MOURUT - - À MINDEN, L'AN DE GRÂCE 1759 - - 1759 - - - -CHAPITRE I. - -Comment Candide fut élevé dans un beau château, et comment il fut -chassé d'icelui. - -Il y avait en Vestphalie, dans le château de M. le baron de -Thunder-ten-tronckh, un jeune garçon à qui la nature avait donné -les moeurs les plus douces. Sa physionomie annonçait son âme. -Il avait le jugement assez droit, avec l'esprit le plus simple; -c'est, je crois, pour cette raison qu'on le nommait Candide. Les -anciens domestiques de la maison soupçonnaient qu'il était fils -de la soeur de monsieur le baron et d'un bon et honnête -gentilhomme du voisinage, que cette demoiselle ne voulut jamais -épouser parce qu'il n'avait pu prouver que soixante et onze -quartiers, et que le reste de son arbre généalogique avait été -perdu par l'injure du temps. - -Monsieur le baron était un des plus puissants seigneurs de la -Westphalie, car son château avait une porte et des fenêtres. Sa -grande salle même était ornée d'une tapisserie. Tous les chiens -de ses basses-cours composaient une meute dans le besoin; ses -palefreniers étaient ses piqueurs; le vicaire du village était -son grand-aumônier. Ils l'appelaient tous monseigneur, et ils -riaient quand il fesait des contes. - -Madame la baronne, qui pesait environ trois cent cinquante -livres, s'attirait par là une très grande considération, et -fesait les honneurs de la maison avec une dignité qui la rendait -encore plus respectable. Sa fille Cunégonde, âgée de dix-sept -ans, était haute en couleur, fraîche, grasse, appétissante. Le -fils du baron paraissait en tout digne de son père. Le -précepteur Pangloss[1] était l'oracle de la maison, et le petit -Candide écoutait ses leçons avec toute la bonne foi de son âge et -de son caractère. - - [1] De _pan_, tout, et _glossa_, langue. B. - - -Pangloss enseignait la métaphysico-théologo-cosmolonigologie. Il -prouvait admirablement qu'il n'y a point d'effet sans cause, et -que, dans ce meilleur des mondes possibles, le château de -monseigneur le baron était le plus beau des châteaux, et madame -la meilleure des baronnes possibles. - -Il est démontré, disait-il, que les choses ne peuvent être -autrement; car tout étant fait pour une fin, tout est -nécessairement pour la meilleure fin. Remarquez bien que les nez -ont été faits pour porter des lunettes; aussi avons-nous des -lunettes[2]. Les jambes sont visiblement instituées pour être -chaussées, et nous avons des chausses. Les pierres ont été -formées pour être taillées et pour en faire des châteaux; aussi -monseigneur a un très beau château: le plus grand baron de la -province doit être le mieux logé; et les cochons étant faits pour -être mangés, nous mangeons du porc toute l'année: par conséquent, -ceux qui ont avancé que tout est bien ont dit une sottise; il -fallait dire que tout est au mieux. - - [2] Voyez tome XXVII, page 528; et dans les _Mélanges_, année - 1738, le chapitre XI de la troisième partie des _Éléments de la - philosophie de Newton_; et année 1768, le chapitre X des - _Singularités de la nature_. B. - - -Candide écoutait attentivement, et croyait innocemment; car il -trouvait mademoiselle Cunégonde extrêmement belle, quoiqu'il ne -prît jamais la hardiesse de le lui dire. Il concluait qu'après -le bonheur d'être né baron de Thunder-ten-tronckh, le second -degré de bonheur était d'être mademoiselle Cunégonde; le -troisième, de la voir tous les jours; et le quatrième, d'entendre -maître Pangloss, le plus grand philosophe de la province, et par -conséquent de toute la terre. - -Un jour Cunégonde, en se promenant auprès du château, dans le -petit bois qu'on appelait parc, vit entre des broussailles le -docteur Pangloss qui donnait une leçon de physique expérimentale -à la femme de chambre de sa mère, petite brune très jolie et très -docile. Comme mademoiselle Cunégonde avait beaucoup de -disposition pour les sciences, elle observa, sans souffler, les -expériences réitérées dont elle fut témoin; elle vit clairement -la raison suffisante du docteur, les effets et les causes, et -s'en retourna tout agitée, toute pensive, toute remplie du désir -d'être savante, songeant qu'elle pourrait bien être la raison -suffisante du jeune Candide, qui pouvait aussi être la sienne. - -Elle rencontra Candide en revenant au château, et rougit: Candide -rougit aussi . Elle lui dit bonjour d'une voix entrecoupée; et -Candide lui parla sans savoir ce qu'il disait. Le lendemain, -après le dîner, comme on sortait de table, Cunégonde et Candide -se trouvèrent derrière un paravent; Cunégonde laissa tomber son -mouchoir, Candide le ramassa; elle lui prit innocemment la main; -le jeune homme baisa innocemment la main de la jeune demoiselle -avec une vivacité, une sensibilité, une grâce toute particulière; -leurs bouches se rencontrèrent, leurs yeux s'enflammèrent, leurs -genoux tremblèrent, leurs mains s'égarèrent. M. le baron de -Thunder-ten-tronckh passa auprès du paravent, et voyant cette -cause et cet effet, chassa Candide du château à grands coups de -pied dans le derrière. Cunégonde s'évanouit: elle fut souffletée -par madame la baronne dès qu'elle fut revenue à elle-même; et -tout fut consterné dans le plus beau et le plus agréable des -châteaux possibles. - - - -CHAPITRE II - -Ce que devint Candide parmi les Bulgares. - - -Candide, chassé du paradis terrestre, marcha longtemps sans -savoir où, pleurant, levant les yeux au ciel, les tournant -souvent vers le plus beau des châteaux qui renfermait la plus -belle des baronnettes; il se coucha sans souper au milieu des -champs entre deux sillons; la neige tombait à gros flocons. -Candide, tout transi, se traîna le lendemain vers la ville -voisine, qui s'appelle _Valdberghoff-trarbk-dikdorff_, n'ayant -point d'argent, mourant de faim et de lassitude. Il s'arrêta -tristement à la porte d'un cabaret. Deux hommes habillés de bleu -le remarquèrent: Camarade, dit l'un, voilà un jeune homme très -bien fait, et qui a la taille requise; ils s'avancèrent vers -Candide et le prièrent à dîner très civilement.--Messieurs, leur -dit Candide avec une modestie charmante, vous me faites beaucoup -d'honneur, mais je n'ai pas de quoi payer mon écot.--Ah! -monsieur, lui dit un des bleus, les personnes de votre figure et -de votre mérite ne paient jamais rien: n'avez-vous pas cinq pieds -cinq pouces de haut?--Oui, messieurs, c'est ma taille, dit-il en -fesant la révérence.--Ah! monsieur, mettez-vous à table; non -seulement nous vous défraierons, mais nous ne souffrirons jamais -qu'un homme comme vous manque d'argent; les hommes ne sont faits -que pour se secourir les uns les autres.--Vous avez raison, dit -Candide; c'est ce que M. Pangloss m'a toujours dit, et je vois -bien que tout est au mieux. On le prie d'accepter quelques écus, -il les prend et veut faire son billet; on n'en veut point, on se -met à table. N'aimez-vous pas tendrement?....--Oh! oui, -répond-il, j'aime tendrement mademoiselle Cunégonde.--Non, dit -l'un de ces messieurs, nous vous demandons si vous n'aimez pas -tendrement le roi des Bulgares?--Point du tout, dit-il, car je ne -l'ai jamais vu.--Comment! c'est le plus charmant des rois, et il -faut boire à sa santé.--Oh! très volontiers, messieurs. Et il -boit. C'en est assez, lui dit-on, vous voilà l'appui, le -soutien, le défenseur, le héros des Bulgares; votre fortune est -faite, et votre gloire est assurée. On lui met sur-le-champ les -fers aux pieds, et on le mène au régiment. On le fait tourner à -droite, à gauche, hausser la baguette, remettre la baguette, -coucher en joue, tirer, doubler le pas, et on lui donne trente -coups de bâton; le lendemain, il fait l'exercice un peu moins -mal, et il ne reçoit que vingt coups; le surlendemain, on ne lui -en donne que dix, et il est regardé par ses camarades comme un -prodige. - -Candide, tout stupéfait, ne démêlait pas encore trop bien comment -il était un héros. Il s'avisa un beau jour de printemps de -s'aller promener, marchant tout droit devant lui, croyant que -c'était un privilège de l'espèce humaine, comme de l'espèce -animale, de se servir de ses jambes à son plaisir. Il n'eut pas -fait deux lieues que voilà quatre autres héros de six pieds qui -l'atteignent, qui le lient, qui le mènent dans un cachot. On lui -demanda juridiquement ce qu'il aimait le mieux d'être fustigé -trente-six fois par tout le régiment, ou de recevoir à-la-fois -douze balles de plomb dans la cervelle. Il eut beau dire que les -volontés sont libres, et qu'il ne voulait ni l'un ni l'autre, il -fallut faire un choix; il se détermina, en vertu du don de Dieu -qu'on nomme _liberté_, à passer trente-six fois par les -baguettes; il essuya deux promenades. Le régiment était composé -de deux mille hommes; cela lui composa quatre mille coups de -baguette, qui, depuis la nuque du cou jusqu'au cul, lui -découvrirent les muscles et les nerfs. Comme on allait procéder -à la troisième course, Candide, n'en pouvant plus, demanda en -grâce qu'on voulût bien avoir la bonté de lui casser la tête; il -obtint cette faveur; on lui bande les yeux; on le fait mettre à -genoux. Le roi des Bulgares passe dans ce moment, s'informe du -crime du patient; et comme ce roi avait un grand génie, il -comprit, par tout ce qu'il apprit de Candide, que c'était un -jeune métaphysicien fort ignorant des choses de ce monde, et il -lui accorda sa grâce avec une clémence qui sera louée dans tous -les journaux et dans tous les siècles. Un brave chirurgien -guérit Candide en trois semaines avec les émollients enseignés -par Dioscoride. Il avait déjà un peu de peau et pouvait marcher, -quand le roi des Bulgares livra bataille au roi des Abares. - - - -CHAPITRE III. - -Comment Candide se sauva d'entre les Bulgares, et ce qu'il -devint. - - -Rien n'était si beau, si leste, si brillant, si bien ordonné que -les deux armées. Les trompettes, les fifres, les hautbois, les -tambours, les canons; formaient une harmonie telle qu'il n'y en -eut jamais en enfer. Les canons renversèrent d'abord à peu près -six mille hommes de chaque côté; ensuite la mousqueterie ôta du -meilleur des mondes environ neuf à dix mille coquins qui en -infectaient la surface. La baïonnette fut aussi la raison -suffisante de la mort de quelques milliers d'hommes. Le tout -pouvait bien se monter à une trentaine de mille âmes. Candide, -qui tremblait comme un philosophe, se cacha du mieux qu'il put -pendant cette boucherie héroïque. - -Enfin, tandis que les deux rois fesaient chanter des _Te Deum_, -chacun dans son camp, il prit le parti d'aller raisonner ailleurs -des effets et des causes. Il passa par-dessus des tas de morts -et de mourants, et gagna d'abord un village voisin; il était en -cendres: c'était un village abare que les Bulgares avaient brûlé, -selon les lois du droit public. Ici des vieillards criblés de -coups regardaient mourir leurs femmes égorgées, qui tenaient -leurs enfants à leurs mamelles sanglantes; là des filles -éventrées après avoir assouvi les besoins naturels de quelques -héros, rendaient les derniers soupirs; d'autres à demi brûlées -criaient qu'on achevât de leur donner la mort. Des cervelles -étaient répandues sur la terre à côté de bras et de jambes -coupés. - -Candide s'enfuit au plus vite dans un autre village: il -appartenait à des Bulgares, et les héros abares l'avaient traité -de même. Candide, toujours marchant sur des membres palpitants -ou à travers des ruines, arriva enfin hors du théâtre de la -guerre, portant quelques petites provisions dans son bissac, et -n'oubliant jamais mademoiselle Cunégonde. Ses provisions lui -manquèrent quand il fut en Hollande; mais ayant entendu dire que -tout le monde était riche dans ce pays-là, et qu'on y était -chrétien, il ne douta pas qu'on ne le traitât aussi bien qu'il -l'avait été dans le château de M. le baron, avant qu'il en eût -été chassé pour les beaux yeux de mademoiselle Cunégonde. - -Il demanda l'aumône à plusieurs graves personnages, qui lui -répondirent tous que, s'il continuait à faire ce métier, on -l'enfermerait dans une maison de correction pour lui apprendre à -vivre. - -Il s'adressa ensuite à un homme qui venait de parler tout seul -une heure de suite sur la charité dans une grande assemblée. Cet -orateur le regardant de travers lui dit: Que venez-vous faire -ici? y êtes-vous pour la bonne cause? Il n'y a point d'effet sans -cause, répondit modestement Candide; tout est enchaîné -nécessairement et arrangé pour le mieux. Il a fallu que je fusse -chassé d'auprès de mademoiselle Cunégonde, que j'aie passé par -les baguettes, et il faut que je demande mon pain, jusqu'à ce que -je puisse en gagner; tout cela ne pouvait être autrement. Mon -ami, lui dit l'orateur, croyez-vous que le pape soit -l'antechrist? Je ne l'avais pas encore entendu dire, répondit -Candide: mais qu'il le soit, ou qu'il ne le soit pas, je manque -de pain. Tu ne mérites pas d'en manger, dit l'autre: va, coquin, -va, misérable, ne m'approche de ta vie. La femme de l'orateur -ayant mis la tête à la fenêtre, et avisant un homme qui doutait -que le pape fût antechrist, lui répandit sur le chef un -plein..... O ciel! à quel excès se porte le zèle de la religion -dans les dames! - -Un homme qui n'avait point été baptisé, un bon anabaptiste, nommé -Jacques, vit la manière cruelle et ignominieuse dont on traitait -ainsi un de ses frères, un être à deux pieds sans plumes, qui -avait une âme; il l'amena chez lui, le nettoya, lui donna du pain -et de la bière, lui fit présent de deux florins, et voulut même -lui apprendre à travailler dans ses manufactures aux étoffes de -Perse qu'on fabrique en Hollande. Candide se prosternant presque -devant lui, s'écriait: Maître Pangloss me l'avait bien dit que -tout est au mieux dans ce monde, car je suis infiniment plus -touché de votre extrême générosité que de la dureté de ce -monsieur à manteau noir, et de madame son épouse. - -Le lendemain, en se promenant, il rencontra un gueux tout couvert -de pustules, les yeux morts, le bout du nez rongé, la bouche de -travers, les dents noires, et parlant de la gorge, tourmenté -d'une toux violente, et crachant une dent à chaque effort. - - - -CHAPITRE IV. - -Comment Candide rencontra son ancien maître de philosophie, le -docteur Pangloss, et ce qui en advint. - - -Candide, plus ému encore de compassion que d'horreur, donna à cet -épouvantable gueux les deux florins qu'il avait reçus de son -honnête anabaptiste Jacques. Le fantôme le regarda fixement, -versa des larmes, et sauta à son cou. Candide effrayé recule. -Hélas! dit le misérable à l'autre misérable, ne reconnaissez-vous -plus votre cher Pangloss? Qu'entends-je? vous, mon cher maître! -vous, dans cet état horrible! quel malheur vous est-il donc -arrivé? pourquoi n'êtes-vous plus dans le plus beau des châteaux? -qu'est devenue mademoiselle Cunégonde, la perle des filles, le -chef-d'oeuvre de la nature? Je n'en peux plus, dit Pangloss. -Aussitôt Candide le mena dans l'étable de l'anabaptiste, où il -lui fit manger un peu de pain; et quand Pangloss fut refait: Eh -bien! lui dit-il, Cunégonde? Elle est morte, reprit l'autre. -Candide s'évanouit à ce mot: son ami rappela ses sens avec un peu -de mauvais vinaigre qui se trouva par hasard dans l'étable. -Candide rouvre les yeux. Cunégonde est morte! Ah! meilleur des -mondes, où êtes-vous? Mais de quelle maladie est-elle morte? ne -serait-ce point de m'avoir vu chasser du beau château de monsieur -son père à grands coups de pied? Non, dit Pangloss, elle a été -éventrée par des soldats bulgares, après avoir été violée autant -qu'on peut l'être; ils ont cassé la tête à monsieur le baron qui -voulait la défendre; madame la baronne a été coupée en morceaux; -mon pauvre pupille traité précisément comme sa soeur; et quant au -château, il n'est pas resté pierre sur pierre, pas une grange, -pas un mouton, pas un canard, pas un arbre; mais nous avons été -bien vengés, car les Abares en ont fait autant dans une baronnie -voisine qui appartenait à un seigneur bulgare. - -A ce discours, Candide s'évanouit encore; mais revenu à soi, et -ayant dit tout ce qu'il devait dire, il s'enquit de la cause et -de l'effet, et de la raison suffisante qui avait mis Pangloss -dans un si piteux état. Hélas! dit l'autre, c'est l'amour: -l'amour, le consolateur du genre humain, le conservateur de -l'univers, l'âme de tous les êtres sensibles, le tendre amour. -Hélas! dit Candide, je l'ai connu cet amour, ce souverain des -coeurs, cette âme de notre âme; il ne m'a jamais valu qu'un -baiser et vingt coups de pied au cul. Comment cette belle cause -a-t-elle pu produire en vous un effet si abominable? - -Pangloss répondit en ces termes: O mon cher Candide! vous avez -connu Paquette, cette jolie suivante de notre auguste baronne: -j'ai goûté dans ses bras les délices du paradis, qui ont produit -ces tourments d'enfer dont vous me voyez dévoré; elle en était -infectée, elle en est peut-être morte. Paquette tenait ce -présent d'un cordelier très savant qui avait remonté à la source, -car il l'avait eu d'une vieille comtesse, qui l'avait reçu d'un -capitaine de cavalerie, qui le devait à une marquise, qui le -tenait d'un page, qui l'avait reçu d'un jésuite, qui, étant -novice, l'avait eu en droite ligne d'un des compagnons de -Christophe Colomb. Pour moi, je ne le donnerai à personne, car -je me meurs. - -O Pangloss! s'écria Candide, voilà une étrange généalogie! -n'est-ce pas le diable qui en fut la souche? Point du tout, -répliqua ce grand homme; c'était une chose indispensable dans le -meilleur des mondes, un ingrédient nécessaire; car si Colomb -n'avait pas attrapé dans une île de l'Amérique cette maladie[1] -qui empoisonne la source de la génération, qui souvent même -empêche la génération, et qui est évidemment l'opposé du grand -but de la nature, nous n'aurions ni le chocolat ni la cochenille; -il faut encore observer que jusqu'aujourd'hui, dans notre -continent, cette maladie nous est particulière, comme la -controverse. Les Turcs, les Indiens, les Persans, les Chinois, -les Siamois, les Japonais, ne la connaissent pas encore; mais il -y a une raison suffisante pour qu'ils la connaissent à leur tour -dans quelques siècles. En attendant elle a fait un merveilleux -progrès parmi nous, et surtout dans ces grandes armées composées -d'honnêtes stipendiaires bien élevés, qui décident du destin des -états; on peut assurer que, quand trente mille hommes combattent -en bataille rangée contre des troupes égales en nombre, il y a -environ vingt mille vérolés de chaque côté. - - [1] Voyez tome XXXI, page 7. B. - - -Voilà qui est admirable, dit Candide; mais il faut vous faire -guérir. Et comment le puis-je? dit Pangloss; je n'ai pas le sou, -mon ami, et dans toute l'étendue de ce globe on ne peut ni se -faire saigner, ni prendre un lavement sans payer, ou sans qu'il y -ait quelqu'un qui paie pour nous. - -Ce dernier discours détermina Candide; il alla se jeter aux pieds -de son charitable anabaptiste Jacques, et lui fit une peinture si -touchante de l'état où son ami était réduit, que le bon-homme -n'hésita pas à recueillir le docteur Pangloss; il le fit guérir à -ses dépens. Pangloss, dans la cure, ne perdit qu'un oeil et une -oreille. Il écrivait bien, et savait parfaitement -l'arithmétique. L'anabaptiste Jacques en fit son teneur de -livres. Au bout de deux mois, étant obligé d'aller à Lisbonne -pour les affaires de son commerce, il mena dans son vaisseau ses -deux philosophes. Pangloss lui expliqua comment tout était on ne -peut mieux. Jacques n'était pas de cet avis. Il faut bien, -disait-il, que les hommes aient un peu corrompu la nature, car -ils ne sont point nés loups, et ils sont devenus loups. Dieu ne -leur a donné ni canons de vingt-quatre, ni baïonnettes, et ils se -sont fait des baïonnettes et des canons pour se détruire. Je -pourrais mettre en ligne de compte les banqueroutes, et la -justice qui s'empare des biens des banqueroutiers pour en -frustrer les créanciers. Tout cela était indispensable, -répliquait le docteur borgne, et les malheurs particuliers font -le bien général; de sorte que plus il y a de malheurs -particuliers, et plus tout est bien. Tandis qu'il raisonnait, -l'air s'obscurcit, les vents soufflèrent des quatre coins du -monde, et le vaisseau fut assailli de la plus horrible tempête, à -la vue du port de Lisbonne. - - -CHAPITRE V. - -Tempête, naufrage, tremblement de terre, et ce qui advint du -docteur Pangloss, de Candide, et de l'anabaptiste Jacques. - -La moitié des passagers affaiblis, expirants de ces angoisses -inconcevables que le roulis d'un vaisseau porte dans les nerfs et -dans toutes les humeurs du corps agitées en sens contraires, -n'avait pas même la force de s'inquiéter du danger. L'autre -moitié jetait des cris et fesait des prières; les voiles étaient -déchirées, les mâts brisés, le vaisseau entr'ouvert. Travaillait -qui pouvait, personne ne s'entendait, personne ne commandait. -L'anabaptiste aidait un peu à la manoeuvre; il était sur le -tillac; un matelot furieux le frappe rudement et l'étend sur les -planches; mais du coup qu'il lui donna, il eut lui-même une si -violente secousse, qu'il tomba hors du vaisseau, la tête la -première. Il restait suspendu et accroché à une partie de mât -rompu. Le bon Jacques court à son secours, l'aide à remonter, et -de l'effort qu'il fait, il est précipité dans la mer à la vue du -matelot, qui le laissa périr sans daigner seulement le regarder. -Candide approche, voit son bienfaiteur qui reparaît un moment, et -qui est englouti pour jamais. Il veut se jeter après lui dans la -mer: le philosophe Pangloss l'en empêche, en lui prouvant que la -rade de Lisbonne avait été formée exprès pour que cet anabaptiste -s'y noyât. Tandis qu'il le prouvait _à priori_, le vaisseau -s'entr'ouvre, tout périt à la réserve de Pangloss, de Candide, et -de ce brutal de matelot qui avait noyé le vertueux anabaptiste; -le coquin nagea heureusement jusqu'au rivage, où Pangloss et -Candide furent portés sur une planche. - -Quand ils furent revenus un peu à eux, ils marchèrent vers -Lisbonne; il leur restait quelque argent, avec lequel ils -espéraient se sauver de la faim après avoir échappé à la tempête. - -A peine ont-ils mis le pied dans la ville, en pleurant la mort de -leur bienfaiteur, qu'ils sentent la terre trembler sous leurs -pas[1]; la mer s'élève en bouillonnant dans le port, et brise les -vaisseaux qui sont à l'ancre. Des tourbillons de flammes et de -cendres couvrent les rues et les places publiques; les maisons -s'écroulent, les toits sont renversés sur les fondements, et les -fondements se dispersent; trente mille habitants de tout âge et -de tout sexe sont écrasés sous des ruines. Le matelot disait en -sifflant et en jurant: il y aura quelque chose à gagner ici. -Quelle peut être la raison suffisante de ce phénomène? disait -Pangloss. Voici le dernier jour du monde! s'écriait Candide. -Le matelot court incontinent au milieu des débris, affronte la -mort pour trouver de l'argent, en trouve, s'en empare, s'enivre, -et ayant cuvé son vin, achète les faveurs de la première fille de -bonne volonté qu'il rencontre sur les ruines des maisons -détruites, et au milieu des mourants et des morts. Pangloss le -tirait cependant par la manche: Mon ami, lui disait-il, cela -n'est pas bien, vous manquez à la raison universelle, vous prenez -mal votre temps. Tête et sang, répondit l'autre, je suis matelot -et né à Batavia; j'ai marché quatre fois sur le crucifix dans -quatre voyages au Japon[2]; tu as bien trouvé ton homme avec ta -raison universelle! - - - [1] Le tremblement de terre de Lisbonne est du 1er novembre 1755. - B. - - [2] Voyez tome XVIII, page 470. B. - - -Quelques éclats de pierre avaient blessé Candide; il était étendu -dans la rue et couvert de débris. Il disait à Pangloss: Hélas! -procure-moi un peu de vin et d'huile; je me meurs. Ce -tremblement de terre n'est pas une chose nouvelle, répondit -Pangloss; la ville de Lima éprouva les mêmes secousses en -Amérique l'année passée; mêmes causes, mêmes effets; il y a -certainement une traînée de soufre sous terre depuis Lima jusqu'à -Lisbonne. Rien n'est plus probable, dit Candide; mais, pour -Dieu, un peu d'huile et de vin. Comment probable? répliqua le -philosophe, je soutiens que la chose est démontrée. Candide -perdit connaissance, et Pangloss lui apporta un peu d'eau d'une -fontaine voisine. - -Le lendemain, ayant trouvé quelques provisions de bouche en se -glissant à travers des décombres, ils réparèrent un peu leurs -forces. Ensuite ils travaillèrent comme les autres à soulager -les habitants échappés à la mort. Quelques citoyens, secourus -par eux, leur donnèrent un aussi bon dîner qu'on le pouvait dans -un tel désastre: il est vrai que le repas était triste; les -convives arrosaient leur pain de leurs larmes; mais Pangloss les -consola, en les assurant que les choses ne pouvaient être -autrement: Car, dit-il, tout ceci est ce qu'il y a de mieux; car -s'il y a un volcan à Lisbonne, il ne pouvait être ailleurs; car -il est impossible que les choses ne soient pas où elles sont, car -tout est bien. - -Un petit homme noir, familier de l'inquisition, lequel était à -côté de lui, prit poliment la parole et dit: Apparemment que -monsieur ne croit pas au péché originel; car si tout est au -mieux, il n'y a donc eu ni chute ni punition. - -Je demande très humblement pardon à votre excellence, répondit -Pangloss encore plus poliment, car la chute de l'homme et la -malédiction entraient nécessairement dans le meilleur des mondes -possibles. Monsieur ne croit donc pas à la liberté? dit le -familier. Votre excellence m'excusera, dit Pangloss; la liberté -peut subsister avec la nécessité absolue; car il était nécessaire -que nous fussions libres; car enfin la volonté déterminée...... -Pangloss était au milieu de sa phrase, quand Je familier fit un -signe de tête à son estafier qui lui servait à boire du vin de -Porto ou d'Oporto. diff --git a/vendor/golang.org/x/text/encoding/testdata/candide-windows-1252.txt b/vendor/golang.org/x/text/encoding/testdata/candide-windows-1252.txt deleted file mode 100644 index 1f8f9eaa..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/candide-windows-1252.txt +++ /dev/null @@ -1,510 +0,0 @@ -This file was derived from -http://www.gutenberg.org/cache/epub/4650/pg4650.txt --------- - - CANDIDE, - - ou - - L'OPTIMISME, - - TRADUIT DE L'ALLEMAND - - DE M. LE DOCTEUR RALPH, - - AVEC LES ADDITIONS - - QU'ON A TROUVES DANS LA POCHE DU DOCTEUR, LORSQU'IL MOURUT - - MINDEN, L'AN DE GRCE 1759 - - 1759 - - - -CHAPITRE I. - -Comment Candide fut lev dans un beau chteau, et comment il fut -chass d'icelui. - -Il y avait en Vestphalie, dans le chteau de M. le baron de -Thunder-ten-tronckh, un jeune garon qui la nature avait donn -les moeurs les plus douces. Sa physionomie annonait son me. -Il avait le jugement assez droit, avec l'esprit le plus simple; -c'est, je crois, pour cette raison qu'on le nommait Candide. Les -anciens domestiques de la maison souponnaient qu'il tait fils -de la soeur de monsieur le baron et d'un bon et honnte -gentilhomme du voisinage, que cette demoiselle ne voulut jamais -pouser parce qu'il n'avait pu prouver que soixante et onze -quartiers, et que le reste de son arbre gnalogique avait t -perdu par l'injure du temps. - -Monsieur le baron tait un des plus puissants seigneurs de la -Westphalie, car son chteau avait une porte et des fentres. Sa -grande salle mme tait orne d'une tapisserie. Tous les chiens -de ses basses-cours composaient une meute dans le besoin; ses -palefreniers taient ses piqueurs; le vicaire du village tait -son grand-aumnier. Ils l'appelaient tous monseigneur, et ils -riaient quand il fesait des contes. - -Madame la baronne, qui pesait environ trois cent cinquante -livres, s'attirait par l une trs grande considration, et -fesait les honneurs de la maison avec une dignit qui la rendait -encore plus respectable. Sa fille Cungonde, ge de dix-sept -ans, tait haute en couleur, frache, grasse, apptissante. Le -fils du baron paraissait en tout digne de son pre. Le -prcepteur Pangloss[1] tait l'oracle de la maison, et le petit -Candide coutait ses leons avec toute la bonne foi de son ge et -de son caractre. - - [1] De _pan_, tout, et _glossa_, langue. B. - - -Pangloss enseignait la mtaphysico-thologo-cosmolonigologie. Il -prouvait admirablement qu'il n'y a point d'effet sans cause, et -que, dans ce meilleur des mondes possibles, le chteau de -monseigneur le baron tait le plus beau des chteaux, et madame -la meilleure des baronnes possibles. - -Il est dmontr, disait-il, que les choses ne peuvent tre -autrement; car tout tant fait pour une fin, tout est -ncessairement pour la meilleure fin. Remarquez bien que les nez -ont t faits pour porter des lunettes; aussi avons-nous des -lunettes[2]. Les jambes sont visiblement institues pour tre -chausses, et nous avons des chausses. Les pierres ont t -formes pour tre tailles et pour en faire des chteaux; aussi -monseigneur a un trs beau chteau: le plus grand baron de la -province doit tre le mieux log; et les cochons tant faits pour -tre mangs, nous mangeons du porc toute l'anne: par consquent, -ceux qui ont avanc que tout est bien ont dit une sottise; il -fallait dire que tout est au mieux. - - [2] Voyez tome XXVII, page 528; et dans les _Mlanges_, anne - 1738, le chapitre XI de la troisime partie des _lments de la - philosophie de Newton_; et anne 1768, le chapitre X des - _Singularits de la nature_. B. - - -Candide coutait attentivement, et croyait innocemment; car il -trouvait mademoiselle Cungonde extrmement belle, quoiqu'il ne -prt jamais la hardiesse de le lui dire. Il concluait qu'aprs -le bonheur d'tre n baron de Thunder-ten-tronckh, le second -degr de bonheur tait d'tre mademoiselle Cungonde; le -troisime, de la voir tous les jours; et le quatrime, d'entendre -matre Pangloss, le plus grand philosophe de la province, et par -consquent de toute la terre. - -Un jour Cungonde, en se promenant auprs du chteau, dans le -petit bois qu'on appelait parc, vit entre des broussailles le -docteur Pangloss qui donnait une leon de physique exprimentale - la femme de chambre de sa mre, petite brune trs jolie et trs -docile. Comme mademoiselle Cungonde avait beaucoup de -disposition pour les sciences, elle observa, sans souffler, les -expriences ritres dont elle fut tmoin; elle vit clairement -la raison suffisante du docteur, les effets et les causes, et -s'en retourna tout agite, toute pensive, toute remplie du dsir -d'tre savante, songeant qu'elle pourrait bien tre la raison -suffisante du jeune Candide, qui pouvait aussi tre la sienne. - -Elle rencontra Candide en revenant au chteau, et rougit: Candide -rougit aussi . Elle lui dit bonjour d'une voix entrecoupe; et -Candide lui parla sans savoir ce qu'il disait. Le lendemain, -aprs le dner, comme on sortait de table, Cungonde et Candide -se trouvrent derrire un paravent; Cungonde laissa tomber son -mouchoir, Candide le ramassa; elle lui prit innocemment la main; -le jeune homme baisa innocemment la main de la jeune demoiselle -avec une vivacit, une sensibilit, une grce toute particulire; -leurs bouches se rencontrrent, leurs yeux s'enflammrent, leurs -genoux tremblrent, leurs mains s'garrent. M. le baron de -Thunder-ten-tronckh passa auprs du paravent, et voyant cette -cause et cet effet, chassa Candide du chteau grands coups de -pied dans le derrire. Cungonde s'vanouit: elle fut soufflete -par madame la baronne ds qu'elle fut revenue elle-mme; et -tout fut constern dans le plus beau et le plus agrable des -chteaux possibles. - - - -CHAPITRE II - -Ce que devint Candide parmi les Bulgares. - - -Candide, chass du paradis terrestre, marcha longtemps sans -savoir o, pleurant, levant les yeux au ciel, les tournant -souvent vers le plus beau des chteaux qui renfermait la plus -belle des baronnettes; il se coucha sans souper au milieu des -champs entre deux sillons; la neige tombait gros flocons. -Candide, tout transi, se trana le lendemain vers la ville -voisine, qui s'appelle _Valdberghoff-trarbk-dikdorff_, n'ayant -point d'argent, mourant de faim et de lassitude. Il s'arrta -tristement la porte d'un cabaret. Deux hommes habills de bleu -le remarqurent: Camarade, dit l'un, voil un jeune homme trs -bien fait, et qui a la taille requise; ils s'avancrent vers -Candide et le prirent dner trs civilement.--Messieurs, leur -dit Candide avec une modestie charmante, vous me faites beaucoup -d'honneur, mais je n'ai pas de quoi payer mon cot.--Ah! -monsieur, lui dit un des bleus, les personnes de votre figure et -de votre mrite ne paient jamais rien: n'avez-vous pas cinq pieds -cinq pouces de haut?--Oui, messieurs, c'est ma taille, dit-il en -fesant la rvrence.--Ah! monsieur, mettez-vous table; non -seulement nous vous dfraierons, mais nous ne souffrirons jamais -qu'un homme comme vous manque d'argent; les hommes ne sont faits -que pour se secourir les uns les autres.--Vous avez raison, dit -Candide; c'est ce que M. Pangloss m'a toujours dit, et je vois -bien que tout est au mieux. On le prie d'accepter quelques cus, -il les prend et veut faire son billet; on n'en veut point, on se -met table. N'aimez-vous pas tendrement?....--Oh! oui, -rpond-il, j'aime tendrement mademoiselle Cungonde.--Non, dit -l'un de ces messieurs, nous vous demandons si vous n'aimez pas -tendrement le roi des Bulgares?--Point du tout, dit-il, car je ne -l'ai jamais vu.--Comment! c'est le plus charmant des rois, et il -faut boire sa sant.--Oh! trs volontiers, messieurs. Et il -boit. C'en est assez, lui dit-on, vous voil l'appui, le -soutien, le dfenseur, le hros des Bulgares; votre fortune est -faite, et votre gloire est assure. On lui met sur-le-champ les -fers aux pieds, et on le mne au rgiment. On le fait tourner -droite, gauche, hausser la baguette, remettre la baguette, -coucher en joue, tirer, doubler le pas, et on lui donne trente -coups de bton; le lendemain, il fait l'exercice un peu moins -mal, et il ne reoit que vingt coups; le surlendemain, on ne lui -en donne que dix, et il est regard par ses camarades comme un -prodige. - -Candide, tout stupfait, ne dmlait pas encore trop bien comment -il tait un hros. Il s'avisa un beau jour de printemps de -s'aller promener, marchant tout droit devant lui, croyant que -c'tait un privilge de l'espce humaine, comme de l'espce -animale, de se servir de ses jambes son plaisir. Il n'eut pas -fait deux lieues que voil quatre autres hros de six pieds qui -l'atteignent, qui le lient, qui le mnent dans un cachot. On lui -demanda juridiquement ce qu'il aimait le mieux d'tre fustig -trente-six fois par tout le rgiment, ou de recevoir -la-fois -douze balles de plomb dans la cervelle. Il eut beau dire que les -volonts sont libres, et qu'il ne voulait ni l'un ni l'autre, il -fallut faire un choix; il se dtermina, en vertu du don de Dieu -qu'on nomme _libert_, passer trente-six fois par les -baguettes; il essuya deux promenades. Le rgiment tait compos -de deux mille hommes; cela lui composa quatre mille coups de -baguette, qui, depuis la nuque du cou jusqu'au cul, lui -dcouvrirent les muscles et les nerfs. Comme on allait procder - la troisime course, Candide, n'en pouvant plus, demanda en -grce qu'on voult bien avoir la bont de lui casser la tte; il -obtint cette faveur; on lui bande les yeux; on le fait mettre -genoux. Le roi des Bulgares passe dans ce moment, s'informe du -crime du patient; et comme ce roi avait un grand gnie, il -comprit, par tout ce qu'il apprit de Candide, que c'tait un -jeune mtaphysicien fort ignorant des choses de ce monde, et il -lui accorda sa grce avec une clmence qui sera loue dans tous -les journaux et dans tous les sicles. Un brave chirurgien -gurit Candide en trois semaines avec les mollients enseigns -par Dioscoride. Il avait dj un peu de peau et pouvait marcher, -quand le roi des Bulgares livra bataille au roi des Abares. - - - -CHAPITRE III. - -Comment Candide se sauva d'entre les Bulgares, et ce qu'il -devint. - - -Rien n'tait si beau, si leste, si brillant, si bien ordonn que -les deux armes. Les trompettes, les fifres, les hautbois, les -tambours, les canons; formaient une harmonie telle qu'il n'y en -eut jamais en enfer. Les canons renversrent d'abord peu prs -six mille hommes de chaque ct; ensuite la mousqueterie ta du -meilleur des mondes environ neuf dix mille coquins qui en -infectaient la surface. La baonnette fut aussi la raison -suffisante de la mort de quelques milliers d'hommes. Le tout -pouvait bien se monter une trentaine de mille mes. Candide, -qui tremblait comme un philosophe, se cacha du mieux qu'il put -pendant cette boucherie hroque. - -Enfin, tandis que les deux rois fesaient chanter des _Te Deum_, -chacun dans son camp, il prit le parti d'aller raisonner ailleurs -des effets et des causes. Il passa par-dessus des tas de morts -et de mourants, et gagna d'abord un village voisin; il tait en -cendres: c'tait un village abare que les Bulgares avaient brl, -selon les lois du droit public. Ici des vieillards cribls de -coups regardaient mourir leurs femmes gorges, qui tenaient -leurs enfants leurs mamelles sanglantes; l des filles -ventres aprs avoir assouvi les besoins naturels de quelques -hros, rendaient les derniers soupirs; d'autres demi brles -criaient qu'on achevt de leur donner la mort. Des cervelles -taient rpandues sur la terre ct de bras et de jambes -coups. - -Candide s'enfuit au plus vite dans un autre village: il -appartenait des Bulgares, et les hros abares l'avaient trait -de mme. Candide, toujours marchant sur des membres palpitants -ou travers des ruines, arriva enfin hors du thtre de la -guerre, portant quelques petites provisions dans son bissac, et -n'oubliant jamais mademoiselle Cungonde. Ses provisions lui -manqurent quand il fut en Hollande; mais ayant entendu dire que -tout le monde tait riche dans ce pays-l, et qu'on y tait -chrtien, il ne douta pas qu'on ne le traitt aussi bien qu'il -l'avait t dans le chteau de M. le baron, avant qu'il en et -t chass pour les beaux yeux de mademoiselle Cungonde. - -Il demanda l'aumne plusieurs graves personnages, qui lui -rpondirent tous que, s'il continuait faire ce mtier, on -l'enfermerait dans une maison de correction pour lui apprendre -vivre. - -Il s'adressa ensuite un homme qui venait de parler tout seul -une heure de suite sur la charit dans une grande assemble. Cet -orateur le regardant de travers lui dit: Que venez-vous faire -ici? y tes-vous pour la bonne cause? Il n'y a point d'effet sans -cause, rpondit modestement Candide; tout est enchan -ncessairement et arrang pour le mieux. Il a fallu que je fusse -chass d'auprs de mademoiselle Cungonde, que j'aie pass par -les baguettes, et il faut que je demande mon pain, jusqu' ce que -je puisse en gagner; tout cela ne pouvait tre autrement. Mon -ami, lui dit l'orateur, croyez-vous que le pape soit -l'antechrist? Je ne l'avais pas encore entendu dire, rpondit -Candide: mais qu'il le soit, ou qu'il ne le soit pas, je manque -de pain. Tu ne mrites pas d'en manger, dit l'autre: va, coquin, -va, misrable, ne m'approche de ta vie. La femme de l'orateur -ayant mis la tte la fentre, et avisant un homme qui doutait -que le pape ft antechrist, lui rpandit sur le chef un -plein..... O ciel! quel excs se porte le zle de la religion -dans les dames! - -Un homme qui n'avait point t baptis, un bon anabaptiste, nomm -Jacques, vit la manire cruelle et ignominieuse dont on traitait -ainsi un de ses frres, un tre deux pieds sans plumes, qui -avait une me; il l'amena chez lui, le nettoya, lui donna du pain -et de la bire, lui fit prsent de deux florins, et voulut mme -lui apprendre travailler dans ses manufactures aux toffes de -Perse qu'on fabrique en Hollande. Candide se prosternant presque -devant lui, s'criait: Matre Pangloss me l'avait bien dit que -tout est au mieux dans ce monde, car je suis infiniment plus -touch de votre extrme gnrosit que de la duret de ce -monsieur manteau noir, et de madame son pouse. - -Le lendemain, en se promenant, il rencontra un gueux tout couvert -de pustules, les yeux morts, le bout du nez rong, la bouche de -travers, les dents noires, et parlant de la gorge, tourment -d'une toux violente, et crachant une dent chaque effort. - - - -CHAPITRE IV. - -Comment Candide rencontra son ancien matre de philosophie, le -docteur Pangloss, et ce qui en advint. - - -Candide, plus mu encore de compassion que d'horreur, donna cet -pouvantable gueux les deux florins qu'il avait reus de son -honnte anabaptiste Jacques. Le fantme le regarda fixement, -versa des larmes, et sauta son cou. Candide effray recule. -Hlas! dit le misrable l'autre misrable, ne reconnaissez-vous -plus votre cher Pangloss? Qu'entends-je? vous, mon cher matre! -vous, dans cet tat horrible! quel malheur vous est-il donc -arriv? pourquoi n'tes-vous plus dans le plus beau des chteaux? -qu'est devenue mademoiselle Cungonde, la perle des filles, le -chef-d'oeuvre de la nature? Je n'en peux plus, dit Pangloss. -Aussitt Candide le mena dans l'table de l'anabaptiste, o il -lui fit manger un peu de pain; et quand Pangloss fut refait: Eh -bien! lui dit-il, Cungonde? Elle est morte, reprit l'autre. -Candide s'vanouit ce mot: son ami rappela ses sens avec un peu -de mauvais vinaigre qui se trouva par hasard dans l'table. -Candide rouvre les yeux. Cungonde est morte! Ah! meilleur des -mondes, o tes-vous? Mais de quelle maladie est-elle morte? ne -serait-ce point de m'avoir vu chasser du beau chteau de monsieur -son pre grands coups de pied? Non, dit Pangloss, elle a t -ventre par des soldats bulgares, aprs avoir t viole autant -qu'on peut l'tre; ils ont cass la tte monsieur le baron qui -voulait la dfendre; madame la baronne a t coupe en morceaux; -mon pauvre pupille trait prcisment comme sa soeur; et quant au -chteau, il n'est pas rest pierre sur pierre, pas une grange, -pas un mouton, pas un canard, pas un arbre; mais nous avons t -bien vengs, car les Abares en ont fait autant dans une baronnie -voisine qui appartenait un seigneur bulgare. - -A ce discours, Candide s'vanouit encore; mais revenu soi, et -ayant dit tout ce qu'il devait dire, il s'enquit de la cause et -de l'effet, et de la raison suffisante qui avait mis Pangloss -dans un si piteux tat. Hlas! dit l'autre, c'est l'amour: -l'amour, le consolateur du genre humain, le conservateur de -l'univers, l'me de tous les tres sensibles, le tendre amour. -Hlas! dit Candide, je l'ai connu cet amour, ce souverain des -coeurs, cette me de notre me; il ne m'a jamais valu qu'un -baiser et vingt coups de pied au cul. Comment cette belle cause -a-t-elle pu produire en vous un effet si abominable? - -Pangloss rpondit en ces termes: O mon cher Candide! vous avez -connu Paquette, cette jolie suivante de notre auguste baronne: -j'ai got dans ses bras les dlices du paradis, qui ont produit -ces tourments d'enfer dont vous me voyez dvor; elle en tait -infecte, elle en est peut-tre morte. Paquette tenait ce -prsent d'un cordelier trs savant qui avait remont la source, -car il l'avait eu d'une vieille comtesse, qui l'avait reu d'un -capitaine de cavalerie, qui le devait une marquise, qui le -tenait d'un page, qui l'avait reu d'un jsuite, qui, tant -novice, l'avait eu en droite ligne d'un des compagnons de -Christophe Colomb. Pour moi, je ne le donnerai personne, car -je me meurs. - -O Pangloss! s'cria Candide, voil une trange gnalogie! -n'est-ce pas le diable qui en fut la souche? Point du tout, -rpliqua ce grand homme; c'tait une chose indispensable dans le -meilleur des mondes, un ingrdient ncessaire; car si Colomb -n'avait pas attrap dans une le de l'Amrique cette maladie[1] -qui empoisonne la source de la gnration, qui souvent mme -empche la gnration, et qui est videmment l'oppos du grand -but de la nature, nous n'aurions ni le chocolat ni la cochenille; -il faut encore observer que jusqu'aujourd'hui, dans notre -continent, cette maladie nous est particulire, comme la -controverse. Les Turcs, les Indiens, les Persans, les Chinois, -les Siamois, les Japonais, ne la connaissent pas encore; mais il -y a une raison suffisante pour qu'ils la connaissent leur tour -dans quelques sicles. En attendant elle a fait un merveilleux -progrs parmi nous, et surtout dans ces grandes armes composes -d'honntes stipendiaires bien levs, qui dcident du destin des -tats; on peut assurer que, quand trente mille hommes combattent -en bataille range contre des troupes gales en nombre, il y a -environ vingt mille vrols de chaque ct. - - [1] Voyez tome XXXI, page 7. B. - - -Voil qui est admirable, dit Candide; mais il faut vous faire -gurir. Et comment le puis-je? dit Pangloss; je n'ai pas le sou, -mon ami, et dans toute l'tendue de ce globe on ne peut ni se -faire saigner, ni prendre un lavement sans payer, ou sans qu'il y -ait quelqu'un qui paie pour nous. - -Ce dernier discours dtermina Candide; il alla se jeter aux pieds -de son charitable anabaptiste Jacques, et lui fit une peinture si -touchante de l'tat o son ami tait rduit, que le bon-homme -n'hsita pas recueillir le docteur Pangloss; il le fit gurir -ses dpens. Pangloss, dans la cure, ne perdit qu'un oeil et une -oreille. Il crivait bien, et savait parfaitement -l'arithmtique. L'anabaptiste Jacques en fit son teneur de -livres. Au bout de deux mois, tant oblig d'aller Lisbonne -pour les affaires de son commerce, il mena dans son vaisseau ses -deux philosophes. Pangloss lui expliqua comment tout tait on ne -peut mieux. Jacques n'tait pas de cet avis. Il faut bien, -disait-il, que les hommes aient un peu corrompu la nature, car -ils ne sont point ns loups, et ils sont devenus loups. Dieu ne -leur a donn ni canons de vingt-quatre, ni baonnettes, et ils se -sont fait des baonnettes et des canons pour se dtruire. Je -pourrais mettre en ligne de compte les banqueroutes, et la -justice qui s'empare des biens des banqueroutiers pour en -frustrer les cranciers. Tout cela tait indispensable, -rpliquait le docteur borgne, et les malheurs particuliers font -le bien gnral; de sorte que plus il y a de malheurs -particuliers, et plus tout est bien. Tandis qu'il raisonnait, -l'air s'obscurcit, les vents soufflrent des quatre coins du -monde, et le vaisseau fut assailli de la plus horrible tempte, -la vue du port de Lisbonne. - - -CHAPITRE V. - -Tempte, naufrage, tremblement de terre, et ce qui advint du -docteur Pangloss, de Candide, et de l'anabaptiste Jacques. - -La moiti des passagers affaiblis, expirants de ces angoisses -inconcevables que le roulis d'un vaisseau porte dans les nerfs et -dans toutes les humeurs du corps agites en sens contraires, -n'avait pas mme la force de s'inquiter du danger. L'autre -moiti jetait des cris et fesait des prires; les voiles taient -dchires, les mts briss, le vaisseau entr'ouvert. Travaillait -qui pouvait, personne ne s'entendait, personne ne commandait. -L'anabaptiste aidait un peu la manoeuvre; il tait sur le -tillac; un matelot furieux le frappe rudement et l'tend sur les -planches; mais du coup qu'il lui donna, il eut lui-mme une si -violente secousse, qu'il tomba hors du vaisseau, la tte la -premire. Il restait suspendu et accroch une partie de mt -rompu. Le bon Jacques court son secours, l'aide remonter, et -de l'effort qu'il fait, il est prcipit dans la mer la vue du -matelot, qui le laissa prir sans daigner seulement le regarder. -Candide approche, voit son bienfaiteur qui reparat un moment, et -qui est englouti pour jamais. Il veut se jeter aprs lui dans la -mer: le philosophe Pangloss l'en empche, en lui prouvant que la -rade de Lisbonne avait t forme exprs pour que cet anabaptiste -s'y noyt. Tandis qu'il le prouvait _ priori_, le vaisseau -s'entr'ouvre, tout prit la rserve de Pangloss, de Candide, et -de ce brutal de matelot qui avait noy le vertueux anabaptiste; -le coquin nagea heureusement jusqu'au rivage, o Pangloss et -Candide furent ports sur une planche. - -Quand ils furent revenus un peu eux, ils marchrent vers -Lisbonne; il leur restait quelque argent, avec lequel ils -espraient se sauver de la faim aprs avoir chapp la tempte. - -A peine ont-ils mis le pied dans la ville, en pleurant la mort de -leur bienfaiteur, qu'ils sentent la terre trembler sous leurs -pas[1]; la mer s'lve en bouillonnant dans le port, et brise les -vaisseaux qui sont l'ancre. Des tourbillons de flammes et de -cendres couvrent les rues et les places publiques; les maisons -s'croulent, les toits sont renverss sur les fondements, et les -fondements se dispersent; trente mille habitants de tout ge et -de tout sexe sont crass sous des ruines. Le matelot disait en -sifflant et en jurant: il y aura quelque chose gagner ici. -Quelle peut tre la raison suffisante de ce phnomne? disait -Pangloss. Voici le dernier jour du monde! s'criait Candide. -Le matelot court incontinent au milieu des dbris, affronte la -mort pour trouver de l'argent, en trouve, s'en empare, s'enivre, -et ayant cuv son vin, achte les faveurs de la premire fille de -bonne volont qu'il rencontre sur les ruines des maisons -dtruites, et au milieu des mourants et des morts. Pangloss le -tirait cependant par la manche: Mon ami, lui disait-il, cela -n'est pas bien, vous manquez la raison universelle, vous prenez -mal votre temps. Tte et sang, rpondit l'autre, je suis matelot -et n Batavia; j'ai march quatre fois sur le crucifix dans -quatre voyages au Japon[2]; tu as bien trouv ton homme avec ta -raison universelle! - - - [1] Le tremblement de terre de Lisbonne est du 1er novembre 1755. - B. - - [2] Voyez tome XVIII, page 470. B. - - -Quelques clats de pierre avaient bless Candide; il tait tendu -dans la rue et couvert de dbris. Il disait Pangloss: Hlas! -procure-moi un peu de vin et d'huile; je me meurs. Ce -tremblement de terre n'est pas une chose nouvelle, rpondit -Pangloss; la ville de Lima prouva les mmes secousses en -Amrique l'anne passe; mmes causes, mmes effets; il y a -certainement une trane de soufre sous terre depuis Lima jusqu' -Lisbonne. Rien n'est plus probable, dit Candide; mais, pour -Dieu, un peu d'huile et de vin. Comment probable? rpliqua le -philosophe, je soutiens que la chose est dmontre. Candide -perdit connaissance, et Pangloss lui apporta un peu d'eau d'une -fontaine voisine. - -Le lendemain, ayant trouv quelques provisions de bouche en se -glissant travers des dcombres, ils rparrent un peu leurs -forces. Ensuite ils travaillrent comme les autres soulager -les habitants chapps la mort. Quelques citoyens, secourus -par eux, leur donnrent un aussi bon dner qu'on le pouvait dans -un tel dsastre: il est vrai que le repas tait triste; les -convives arrosaient leur pain de leurs larmes; mais Pangloss les -consola, en les assurant que les choses ne pouvaient tre -autrement: Car, dit-il, tout ceci est ce qu'il y a de mieux; car -s'il y a un volcan Lisbonne, il ne pouvait tre ailleurs; car -il est impossible que les choses ne soient pas o elles sont, car -tout est bien. - -Un petit homme noir, familier de l'inquisition, lequel tait -ct de lui, prit poliment la parole et dit: Apparemment que -monsieur ne croit pas au pch originel; car si tout est au -mieux, il n'y a donc eu ni chute ni punition. - -Je demande trs humblement pardon votre excellence, rpondit -Pangloss encore plus poliment, car la chute de l'homme et la -maldiction entraient ncessairement dans le meilleur des mondes -possibles. Monsieur ne croit donc pas la libert? dit le -familier. Votre excellence m'excusera, dit Pangloss; la libert -peut subsister avec la ncessit absolue; car il tait ncessaire -que nous fussions libres; car enfin la volont dtermine...... -Pangloss tait au milieu de sa phrase, quand Je familier fit un -signe de tte son estafier qui lui servait boire du vin de -Porto ou d'Oporto. diff --git a/vendor/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt b/vendor/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt deleted file mode 100644 index 7b03a990..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/rashomon-euc-jp.txt +++ /dev/null @@ -1,178 +0,0 @@ -This file was derived from -http://www.gutenberg.org/cache/epub/1982/pg1982.txt --------- - - -ζǷ - -λǤ롣ͤβͤβDZߤԤäƤ -βˤϡˤγï⤤ʤ꡹ðɤ礭ʱˡ꤮ -ꤹɤȤޤäƤ롣礬ϩˤʾϡˤγˤ⡢ -򤹤Խޤ汨˹Ҥ⤦󻰿ͤϤꤽʤΤǤ롣줬ˤγ -ï⤤ʤ -ΤȱȡǯԤˤϡϿ̤ȤȤлȤȤ -ĤŤƵäΤӤϰ̤Ǥʤ쵭ˤȡʩ -ʩǺդơðĤꡢʤϤˤĤꤷڤϩФ -Ĥ߽ŤͤƿŤʤˤäƤȱȤǤ롣椬λǤ뤫顢 -νʤɤϡïΤƤƸܤߤԤʤäȤιӤ̤Ƥ -褤ˤơìʤˤࡣͤࡣȤȤޤˤϡ -ʤͤ򡢤ػäơΤƤƹԤȱ褿ǡ -ʤʤȡïǤⵤ̣򰭤äơζؤ­֤ߤ򤷤ʤˤʤ -ƤޤäΤǤ롣 -褫餫󽸤ޤä褿ָȡȤ -ؤơ⤤ʤӡˤΤޤƤʤ顢ӤޤäƤ롣 -ζͼƤǤʤˤϡ줬ޤ褦ˤϤä긫 -ϡξˤͤߤΤǤ롣⺣ϡ¤ -챩⸫ʤͣ꡹줫äƤܤĹ -Ϥʤξˡʵʤˤ򤯤ӤĤƤΤ롣 -ϼʤʤΰ־ʤ餷βʤˤοơˤ˽ -褿礭⮡ʤˤӡˤ򵤤ˤʤ顢ܤꡢΤդΤįƤΤ -롣 -ԤϤäֲͤߤԤäƤפȽ񤤤ͤϡ -Ǥ̤ɤ褦ȱƤϤʤդʤ顢ͤβȤصĤȦǤ -롣꤬μͤϡ͸˲ˤФ줿ˤ񤤤褦ˡԤ -Įϰ̤ʤ餺ƤβͤǯȤƤͤˤФ -줿Τ⡢οξ;Ȥ˳ʤʤ顢ֲͤߤԤäƤ -ȱ⡢ֱˤդꤳ줿ͤԤ꤬ʤơˤƤפ -ŬǤ롣ξ塢ζͤ⾯ʤ餺ʿīβͤ -Sentimentalisme˱ƶʤˤιﲼ꤫դФϡ̤˾ -뤱ʤǡͤϡƤ⺹뤷ɤˤ -ȤơФɤˤʤʤ򡢤ɤˤ褦ȤơȤȤʤ -򤿤ɤʤ顢äϩˤդ뱫βʹȤʤʹƤ -ĤĤǡ󤯤顢äȱ򤢤ĤƤ롣ͼǤϼ˶ -㤯ơ夲ȡβФˤĤФᰡʤ餫ˤˡŤ -Ť٤Ƥ롣 -ɤˤʤʤ򡢤ɤˤ٤ˤϡʤǤʤȤޡˤϤʤ -ǤСϡʤĤˤβƻФڤξǡʤˡˤ򤹤 -Ǥ롣ơξػäơΤ褦˼ΤƤƤޤФ -Ǥ롣ФʤȤСͤιͤϡ٤Ʊƻˤȶˡä -ζɽذ夷Ρ֤СפϡĤǤäƤ⡢ɡ֤Сפ -äͤϡʤФʤȤꤷʤ⡢Ρ֤СפΤ -Ĥ٤ˡθĤͤˤʤ곰˻ʤפȱ -ѶŪ˹ꤹΡͦФˤΤǤ롣 -ͤ礭ʤˤ򤷤ơ줫顢絷Ω夬äͼ䤨Τ -Ԥϡ⤦вߤδǤ롣Ȥδ֤ͼǤȶ˱θ -ʤ᤭̤롣ðɤˤȤޤäƤ꤮ꤹ⡢⤦ɤعԤäƤޤ - -ͤϡ¤ʤ顢δΡʤߡˤ˽Ťͤβθ⤯ -Τޤ򸫤ޤ路δΤʤܤˤΤʤճڤˤͤ줽 -ʽ꤬СǤȤ⤫⡢ȻפäǤ롣ȡ -ξϰؾ롢ιǷðɤäҤˤĤʤ顢ͤˤ -Ƥ⡢ɤͤФǤ롣ͤϡǹˤʤҤŤˤ -ʤ褦˵Ĥʤ顢Ϥ­򡢤Ҥΰֲʤؤ -ߤ -줫顢ʬθǤ롣ϰξؽФ롢ιҤʤˡ -ˤǭΤ褦˿Ȥ¤ơ©򻦤ʤ顢ƻҤ򱮤äƤϰξ夫 -餵Фθˡˤαˤ̤餷Ƥ롣ûʤҤˤˡ -֤ǿä⮤ΤˤǤ롣ͤϡϤᤫ顢ξˤԤϡͤФ -ȹäƤ줬ҤʾäƸȡǤïФȤܤơ -⤽βФ¶躡ưƤ餷ϡä -򤫤ŷ΢ˡʤǤäΤǡˤΤ줿ΤǤ -롣αˡξǡФȤ⤷Ƥ뤫ϡɤͣμԤǤϤ - -ͤϡܼʤˤΤ褦­̤ǡäȵޤҤ򡢰־ʤ -礦褦ˤƾĤ᤿Τʿˤʤ顢 -ؽФơ붲롢ϰƸ -ȡϰˤϡʹ̤ꡢĤλӳʤˤ̵¤˴Ƥ -뤬ФθεڤϰϤפä궹ΤǡϴĤȤ狼ʤͣ -ܤʤ顢ΤΤϡλӳȡʪ夿ӳȤȱ -롣ˤϽˤޤäƤ餷ơλӳϳ줬 -ʤĤơˡƤʹ֤ȱ¤ڤԤͤ¤äͷ -褦ˡ򳫤ꡢФꤷơξˤäƤ -⡢ȤȤι⤯ʤäƤʬˡܤꤷФθ򤦤ơ㤯ʤä -ʬαƤذŤʤ顢ʵפ˰ʤˤǡۤäƤ -ͤϡλӳ।˻פ鷺ɡäʤäˡ -μϡνִ֤ˤϡ⤦ɡ椦˺Ƥ붯ؼʤۤȤ -ɤȤȤˤˤ̳ФåäƤޤäǤ롣 -ͤδϡλϤơ¶ӳäƤʤޤäƤ˿ʹ -򸫤ȩʤҤϤˤʪؤ㤤餻ȱƬΡΤ褦 -Ϸ̤Ǥ롣Ϸ̤ϡμ˲ФȤ⤷Ҥäơλӳΰ -δ褦įƤȱӤĹ򸫤ȡ¿ʬλӳǤ -ͤϡϻʬζݤȻʬι񿴤ȤươûϸƵۡʤˤ򤹤Τ -˺Ƥ쵭εԤθڤСƬȡʤȤˤӤפ褦˴ -ΤǤ롣ȡϷ̤ϡҤ򡢾Ĥδ֤ޤơ줫顢ޤį -Ƥӳμξ򤫤ȡ١οƤλҤ͡ʤߡˤȤ褦 -ˡĹȱӤܤȴϤ᤿ȱϼ˽äȴ餷 -ȱӤܤȴΤ˽äƲͤοϡݤľäƹԤ -ơƱˡϷ̤ФϤư褿 -䡢Ϸ̤ФȱäƤϡ뤫Τʤǫʤषˡ -밭Фȿʬ˶褿ΤǤ롣λïβͤˡ -äβǤˤͤƤʤˡˤ򤹤뤫ͤˤʤ뤫ȱ -򡢲ƻФ顢餯ͤϡ̤ʤǤ -ۤɡˤΰ࿴ϡϷ̤ξޤҤΤ褦ˡ褯dz -ƤΤǤ롣 -ͤˤϡϷ̤ͤȱӤȴ狼ʤääơŪ -ˤϡβҤŤƤ褤ΤʤäͤˤȤäƤϡ -ˡξǡͤȱӤȴȱǴ˵ -餶밭Ǥäͤϡäʬͤˤʤ뵤Ǥʤϡ -˺ƤΤǤ롣 -ǡͤϡξ­ϤơʤꡢҤӾ夬ä -ʤҤŤˤ˼򤫤ʤ顢ԤϷ̤ߤäϷ̤ -äΤϡʤ -Ϸ̤ϡܲͤ򸫤ȡޤ׸ʤߡˤˤǤƤ줿褦ˡӾ夬 - -֤Τ졢ɤعԤ -ͤϡϷ̤ӳˤĤޤŤʤ顢Ƥդᤤƨ褦ȤԼɤǡ -ͤäϷ̤ϡǤⲼͤĤΤƹԤȤ롣ͤԤ -ޤȤơɤͤϻӳǡá̵ΤޤޡĤ߹ä -ϡϤᤫ顢狼äƤ롣ͤϤȤȤϷ̤ӤĤǡ̵ -ؤͤݤ١ܡʤȤˤεӤΤ褦ʡФӤǤ롣 -ֲ򤷤Ƥ򤷤Ƥ̤ȡ衣 -ͤϡϷ̤Ĥȡʤꡢξʧäơ򤤹ݡʤϤ͡ˤο -δؤĤĤɤ⡢Ϸ̤ۤäƤ롣ξʤʤդ碌ơ -©ڤʤ顢򡢴夬ޤ֤γؽФˤʤơΤ褦 -˼ٹʤ夦͡ˤۤäƤ롣򸫤ȡͤϻϤˤϷ̤ -ʬΰջ֤˻ۤƤȱռơΰռϡ -ޤǤϤdzƤο򲿻ʤġˤδ֤ˤޤƤޤä˻Ĥ -ΤϡͣŻ򤷤ơ줬Ρ¤餫դ­Ȥ -ФǤ롣ǡͤϡϷ̤򡢸ʤ顢Ƥä -ָʤϸȡʤӤˤģͤʤɤǤϤʤβ̤꤫ -ιμԤ餪򤫤ơɤ褦ȱ褦ʻϤʤͣʬ -ξǡ򤷤ƤΤʤäФΤ -ȡϷ̤ϡ򡢰礭ơäȤβͤδ򸫼ä -ޤ֤֤ʤäĻΤ褦ʡԤǸΤǤ롣줫顢Ⲥǡء -ɡȰĤˤʤä򲿤ʪǤǤ褦ư٤ǡäʩ -ưƤΤ롣λι顢ʤ餹ˤƤ褦ä -ͤμä褿 -֤ȱȴƤʡνȱȴƤʡʤĤˤˤ褦Ȼפ -㡣 -ͤϡϷ̤¸ʿޤʤΤ˼˾Ƽ˾Ʊˡ -ΤȰ줷ˡؤϤä褿ȡεʤˤ -ؤ̤ΤǤϷ̤ϡҼˡޤӳƬåʤȡˤäĹȴ -Ӥäʤꡢ걡ʤҤˤΤĤ֤䤯褦ǡʤ顢ʻ򱾤 - -ͤȱӤȴȱϡΤ̡ͤ -¿ϡΰ̤ʻ򡢤Ƥ⤤ʹ֤ФǤ롣ˡʬȱȴ -ʤɤϡؤФꤺĤڤäƴΤ򡢴ʤۤˤȱäơ -ӡʤϤˤοؤ˹Ԥä¤ˤäƻʤʤäʤ顢Ǥ -˹ԤäƤ⤷ʤ⡢ν봳ϡ̣褤ȱΤǡ -Ӥ礫äƤΤǤ롣ʬϡνΤȤ -פʤʤСʤˡˤ򤹤ΤǡʤǤ롣 -顢ʬΤƤⰭȤϻפʤϤꤷʤС -򤹤ΤǡʤǤ롣ơλʤ򡢤褯 -ΤäƤνϡʬΤƤΤˤʤȻפǤ -롣Ϸ̤ϡΤʰ̣λ򱾤ä -ͤϡˤơ򺸤μǤʤ顢Ȥơ -äʹƤμǤϡ֤ˤǿ礭⮡ʤˤӡˤ -ˤʤ顢ʹƤΤǤ롣ǷʹƤˡͤοˤϡ -ͦޤ褿ϡäβǤˤ˷礱ƤͦǤ롣 -ơäξؾʤˤäơϷ̤ᤨͦȤϡ -ȿФưȤͦǤ롣ͤϡ򤹤뤫ͤˤʤ뤫¤ʤ -ФǤϤʤλΤˤο鱾Сʤɤȱϡء -ʤռγɤФƤ -֤äȡ -Ϸ̤äȡͤޡʤˤ褦ǰ򲡤ơ­ -ؽФȡ԰դˡμ⮤ΥơϷ̤ζ߾ʤ꤬ߡˤĤߤʤ顢 -ä -֤ǤϡʤʤҤϤˤ򤷤褦Ⱥޤʡʤ⤽ʤС -ΤʤΤ -ͤϡФ䤯Ϸ̤ʪȤä줫顢­ˤߤĤȤϷ -̤򡢼ӤӳξؽݤҤθޤǤϡϤ˸ФǤ롣 -ͤϡȤäɰȩʪ來ˤơޤ֤˵ޤҤ -ꤿ -á褦ݤƤϷ̤ӳ椫顢Τ򵯤Τϡ -줫֤ʤλǤ롣Ϸ̤ϡĤ֤䤯褦ʡ᤯褦ΩƤʤ顢 -ޤdzƤФθ򤿤ˡҤθޤǡäƹԤäơ顢 -ûȱݡʤޡˤˤơβˤϡͣƶʤ -Ȥˤ뤬ФǤ롣 -ͤϡˡơԤĮضƯ˵ޤǤ diff --git a/vendor/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt b/vendor/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt deleted file mode 100644 index 0bc24bc1..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/rashomon-iso-2022-jp.txt +++ /dev/null @@ -1,178 +0,0 @@ -This file was derived from -http://www.gutenberg.org/cache/epub/1982/pg1982.txt --------- -$BMe@8Lg(B - -$B3)@nN6G72p(B - -$B!!0?F|$NJkJ}$N;v$G$"$k!#0l?M$N2<?M$,!"Me@8Lg$N2<$G1+$d$_$rBT$C$F$$$?!#!!9-$$Lg(B -$B$N2<$K$O!"$3$NCK$N30$KC/$b$$$J$$!#$?$@!"=j!9C0EI$NGm$2$?!"Bg$-$J1_Cl$K!"$-$j$.(B -$B$j$9$,0lI$$H$^$C$F$$$k!#Me@8Lg$,!"<k?}BgO)$K$"$k0J>e$O!"$3$NCK$N30$K$b!"1+$d$_(B -$B$r$9$k;T=w3^$dYf1(K9;R$,!"$b$&Fs;0?M$O$"$j$=$&$J$b$N$G$"$k!#$=$l$,!"$3$NCK$N30(B -$B$KC/$b$$$J$$!#(B -$B!!2?8N$+$H1>$&$H!"$3$NFs;0G/!"5~ET$K$O!"CO?L$H$+DTIw$H$+2P;v$H$+q@q<$H$+1>$&:R(B -$B$$$,$D$E$$$F5/$3$C$?!#$=$3$GMlCf$N$5$S$lJ}$O0lDL$j$G$J$$!#5l5-$K$h$k$H!"J)A|$d(B -$BJ)6q$rBG:U$$$F!"$=$NC0$,$D$$$?$j!"6b6d$NGs!J$O$/!K$,$D$$$?$j$7$?LZ$r!"O)$P$?$K(B -$B$D$_=E$M$F?E$NNA!J$7$m!K$KGd$C$F$$$?$H1>$&$3$H$G$"$k!#MlCf$,$=$N;OKv$G$"$k$+$i!"(B -$BMe@8Lg$N=$M}$J$I$O!"85$h$jC/$b<N$F$F8\$_$k<T$,$J$+$C$?!#$9$k$H$=$N9S$l2L$F$?$N(B -$B$r$h$$;v$K$7$F!"8QC,!J$3$j!K$,@3$`!#Ep?M$,@3$`!#$H$&$H$&$7$^$$$K$O!"0z<h$j<j$N(B -$B$J$$;`?M$r!"$3$NLg$X;}$C$FMh$F!"<N$F$F9T$/$H1>$&=,47$5$(=PMh$?!#$=$3$G!"F|$NL\(B -$B$,8+$($J$/$J$k$H!"C/$G$b5$L#$r0-$,$C$F!"$3$NLg$N6a=j$X$OB-$V$_$r$7$J$$;v$K$J$C(B -$B$F$7$^$C$?$N$G$"$k!#(B -$B!!$=$NBe$jKtrm$,2?=h$+$i$+!"$?$/$5$s=8$^$C$FMh$?!#Ck4V8+$k$H!"$=$Nrm$,2?1)$H$J(B -$B$/NX$rIA$$$F!"9b$$rvHx!J$7$S!K$N$^$o$j$rSF$-$J$,$i!"Ht$S$^$o$C$F$$$k!#<l$KLg$N(B -$B>e$N6u$,!"M<>F$1$G$"$+$/$J$k;~$K$O!"$=$l$,8UKc$r$^$$$?$h$&$K$O$C$-$j8+$($?!#rm(B -$B$O!"L^O@!"Lg$N>e$K$"$k;`?M$NFy$r!"Bo$_$KMh$k$N$G$"$k!#!<!<L`$b:#F|$O!"9o8B$,CY(B -$B$$$;$$$+!"0l1)$b8+$($J$$!#M#!"=j!9!"Jx$l$+$+$C$?!"$=$&$7$F$=$NJx$lL\$KD9$$Ap$N(B -$B$O$($?@PCJ$N>e$K!"rm$NJ5!J$/$=!K$,!"E@!9$HGr$/$3$S$j$D$$$F$$$k$N$,8+$($k!#2<?M(B -$B$O<7CJ$"$k@PCJ$N0lHV>e$NCJ$K@v$$$6$i$7$?:0$N2(!J$"$*!K$N?,$r?x$($F!"1&$NKK$K=P(B -$BMh$?!"Bg$-$JLLb.!J$K$-$S!K$r5$$K$7$J$,$i!"$\$s$d$j!"1+$N$U$k$N$rD/$a$F$$$k$N$G(B -$B$"$k!#(B -$B!!:n<T$O$5$C$-!"!V2<?M$,1+$d$_$rBT$C$F$$$?!W$H=q$$$?!#$7$+$7!"2<?M$O!"1+$,$d$s(B -$B$G$b3JJL$I$&$7$h$&$H1>$&Ev$F$O$J$$!#$U$@$s$J$i!"L^O@!"<g?M$N2H$X5"$k2D$-H&$G$"(B -$B$k!#=j$,$=$N<g?M$+$i$O!";M8^F|A0$K2K$r=P$5$l$?!#A0$K$b=q$$$?$h$&$K!"Ev;~5~ET$N(B -$BD.$O0lDL$j$J$i$:?jHy$7$F$$$?!#:#$3$N2<?M$,!"1JG/!";H$o$l$F$$$?<g?M$+$i2K$r=P$5(B -$B$l$?$N$b!"$3$N?jHy$N>.$5$JM>GH$K30$J$i$J$$!#$@$+$i!"!V2<?M$,1+$d$_$rBT$C$F$$$?!W(B -$B$H1>$&$h$j$b!"!V1+$K$U$j$3$a$i$l$?2<?M$,!"9T$-=j$,$J$/$F!"ESJ}$K$/$l$F$$$?!W$H(B -$B1>$&J}$,!"E,Ev$G$"$k!#$=$N>e!":#F|$N6uLOMM$b>/$J$+$i$:$3$NJ?0BD+$N2<?M$N(B -Sentimentalisme$B$K1F6A$7$?!#?=!J$5$k!K$N9o2<$,$j$+$i$U$j=P$7$?1+$O!"L$$@$K>e(B -$B$,$k$1$7$-$,$J$$!#$=$3$G!"2<?M$O!"2?$rA<$$$F$b:9Ev$?$jL@F|$NJk$7$r$I$&$K$+$7$h(B -$B$&$H$7$F!<!<1>$o$P$I$&$K$b$J$i$J$$;v$r!"$I$&$K$+$7$h$&$H$7$F!"$H$j$H$a$b$J$$9M(B -$B$($r$?$I$j$J$,$i!"$5$C$-$+$i<k?}BgO)$K$U$k1+$N2;$rJ9$/$H$b$J$/J9$$$F$$$?!#(B -$B!!1+$OMe@8Lg$r$D$D$s$G!"1s$/$+$i!"$6$"$C$H1>$&2;$r$"$D$a$F$/$k!#M<0G$O<!Bh$K6u(B -$B$rDc$/$7$F!"8+>e$2$k$H!"Lg$N20:,$,!"<P$a$K$D$-=P$7$?a0!J$$$i$+!K$N@h$K!"=E$?$/(B -$B$&$90E$$1@$r;Y$($F$$$k!#(B -$B!!$I$&$K$b$J$i$J$$;v$r!"$I$&$K$+$9$k0Y$K$O!"<jCJ$rA*$s$G$$$kn#!J$$$H$^!K$O$J$$!#(B -$BA*$s$G$$$l$P!"C[CO!J$D$$$8!K$N2<$+!"F;$P$?$NEZ$N>e$G!"q@;`!J$&$($8$K!K$r$9$k$P(B -$B$+$j$G$"$k!#$=$&$7$F!"$3$NLg$N>e$X;}$C$FMh$F!"8$$N$h$&$K<N$F$i$l$F$7$^$&$P$+$j(B -$B$G$"$k!#A*$P$J$$$H$9$l$P!<!<2<?M$N9M$($O!"2?EY$bF1$8F;$rDcWK$7$?MH6g$K!"$d$C$H(B -$B$3$N6I=j$X0)Ce$7$?!#$7$+$7$3$N!V$9$l$P!W$O!"$$$D$b$G$?$C$F$b!"7k6I!V$9$l$P!W$G(B -$B$"$C$?!#2<?M$O!"<jCJ$rA*$P$J$$$H$$$&;v$r9NDj$7$J$,$i$b!"$3$N!V$9$l$P!W$N$+$?$r(B -$B$D$1$k0Y$K!"EvA3!"$3$N8e$KMh$k2D$-!VEp?M$K$J$k$h$j30$K;EJ}$,$J$$!W$H1>$&;v$r!"(B -$B@Q6KE*$K9NDj$9$k$@$1$N!"M&5$$,=P$:$K$$$?$N$G$"$k!#(B -$B!!2<?M$OBg$-$JSj!J$/$5$a!K$r$7$F!"$=$l$+$i!"Bg57$=$&$KN)>e$,$C$?!#M<Nd$($N$9$k(B -$B5~ET$O!"$b$&2P23$,M_$7$$Dx$N4($5$G$"$k!#Iw$OLg$NCl$HCl$H$N4V$r!"M<0G$H6&$K1sN8(B -$B$J$/!"?a$-$L$1$k!#C0EI$NCl$K$H$^$C$F$$$?$-$j$.$j$9$b!"$b$&$I$3$+$X9T$C$F$7$^$C(B -$B$?!#(B -$B!!2<?M$O!"pt$r$A$B$a$J$,$i!";3?a$N4@jN!J$+$6$_!K$K=E$M$?!":0$N2($N8*$r9b$/$7$F(B -$BLg$N$^$o$j$r8+$^$o$7$?!#1+Iw$N45$N$J$$!"?ML\$K$+$+$kW|$N$J$$!"0lHU3Z$K$M$i$l$=(B -$B$&$J=j$,$"$l$P!"$=$3$G$H$b$+$/$b!"Lk$rL@$+$=$&$H;W$C$?$+$i$G$"$k!#$9$k$H!"9,Lg(B -$B$N>e$NO0$X>e$k!"I}$N9-$$!"G7$bC0$rEI$C$?Dt;R$,4c$K$D$$$?!#>e$J$i!"?M$,$$$?$K$7(B -$B$F$b!"$I$&$;;`?M$P$+$j$G$"$k!#2<?M$O!"$=$3$G9x$K$5$2$?@;JA!J$R$8$j$E$+!K$NB@Ea(B -$B$,>dAv$i$J$$$h$&$K5$$r$D$1$J$,$i!"ONApMz$r$O$$$?B-$r!"$=$NDt;R$N0lHV2<$NCJ$X$U(B -$B$_$+$1$?!#(B -$B!!$=$l$+$i!"2?J,$+$N8e$G$"$k!#Me@8Lg$NO0$N>e$X=P$k!"I}$N9-$$Dt;R$NCfCJ$K!"0l?M(B -$B$NCK$,!"G-$N$h$&$K?H$r$A$B$a$F!"B)$r;&$7$J$,$i!">e$NMF;R$r1.$C$F$$$?!#O0$N>e$+(B -$B$i$5$92P$N8w$,!"$+$9$+$K!"$=$NCK$N1&$NKK$r$L$i$7$F$$$k!#C;$$r$!J$R$2!K$NCf$K!"(B -$B@V$/G?$r;}$C$?LLb.$N$"$kKK$G$"$k!#2<?M$O!";O$a$+$i!"$3$N>e$K$$$k<T$O!";`?M$P$+(B -$B$j$@$H9b$r3g$C$F$$$?!#$=$l$,!"Dt;R$rFs;0CJ>e$C$F8+$k$H!">e$G$OC/$+2P$r$H$\$7$F!"(B -$B$7$+$b$=$N2P$rB6=h:!=h$HF0$+$7$F$$$k$i$7$$!#$3$l$O!"$=$NBy$C$?!"2+$$$m$$8w$,!"(B -$B6y!9$KCXia$NAc$r$+$1$?E70fN"$K!"$f$l$J$,$i1G$C$?$N$G!"$9$0$K$=$l$HCN$l$?$N$G$"(B -$B$k!#$3$N1+$NLk$K!"$3$NMe@8Lg$N>e$G!"2P$r$H$b$7$F$$$k$+$i$O!"$I$&$;M#$N<T$G$O$J(B -$B$$!#(B -$B!!2<?M$O!"5\<i!J$d$b$j!K$N$h$&$KB-2;$r$L$9$s$G!"$d$C$H5^$JDt;R$r!"0lHV>e$NCJ$^(B -$B$GGg$&$h$&$K$7$F>e$j$D$a$?!#$=$&$7$FBN$r=PMh$k$@$1!"J?$K$7$J$,$i!"pt$r=PMh$k$@(B -$B$1!"A0$X=P$7$F!"62$k62$k!"O0$NFb$rGA$$$F8+$?!#(B -$B!!8+$k$H!"O0$NFb$K$O!"1=$KJ9$$$?DL$j!"4v$D$+$N;S3<!J$7$,$$!K$,!"L5B$:n$K4~$F$F(B -$B$"$k$,!"2P$N8w$N5Z$VHO0O$,!";W$C$?$h$j69$$$N$G!"?t$O4v$D$H$b$o$+$i$J$$!#M#!"$*(B -$B$\$m$2$J$,$i!"CN$l$k$N$O!"$=$NCf$KMg$N;S3<$H!"CeJ*$rCe$?;S3<$H$,$"$k$H1>$&;v$G(B -$B$"$k!#L^O@!"Cf$K$O=w$bCK$b$^$8$C$F$$$k$i$7$$!#$=$&$7$F!"$=$N;S3<$O3'!"$=$l$,!"(B -$B>(!J$+$D$F!K!"@8$-$F$$$??M4V$@$H1>$&;v<B$5$(5?$o$l$kDx!"EZ$rYT$M$FB$$C$??M7A$N(B -$B$h$&$K!"8}$r3+$$$?$j!"<j$r1d$P$7$?$j$7$F!"$4$m$4$m>2$N>e$K$3$m$,$C$F$$$?!#$7$+(B -$B$b!"8*$H$+6;$H$+$N9b$/$J$C$F$$$kItJ,$K!"$\$s$d$j$7$?2P$N8w$r$&$1$F!"Dc$/$J$C$F(B -$B$$$kItJ,$N1F$r0lAX0E$/$7$J$,$i!"1J5W$K0"!J$*$7!K$NG!$/L[$C$F$$$?!#(B -$B!!2<?M$O!"$=$l$i$N;S3<$NIe`%$7$?=-5$$K;W$o$:!"I!$r1f$C$?!J$*$*$C$?!K!#$7$+$7!"(B -$B$=$N<j$O!"<!$N=V4V$K$O!"$b$&I!$r1f$&;v$rK:$l$F$$$?!#0?$k6/$$46>p$,KX<=!J$[$H$s(B -$B$I$3$H$4$H$/!K$3$NCK$NSL3P$rC%$C$F$7$^$C$?$+$i$G$"$k!#(B -$B!!2<?M$N4c$O!"$=$N;~!"$O$8$a$F!"B6;S3<$NCf$Km-$C$F$$$k!J$&$:$/$^$C$F$$$k!K?M4V(B -$B$r8+$?!#[XH)?'!J$R$O$@$$$m!K$NCeJ*$rCx$?!"GX$NDc$$!"Ai$;$?!"GrH1F,$N!"1n$N$h$&(B -$B$JO7GL$G$"$k!#$=$NO7GL$O!"1&$N<j$K2P$r$H$b$7$?>>$NLZJR$r;}$C$F!"$=$N;S3<$N0l$D(B -$B$N4i$rGA$-$3$`$h$&$KD/$a$F$$$?!#H1$NLS$ND9$$=j$r8+$k$H!"B?J,=w$N;S3<$G$"$m$&!#(B -$B!!2<?M$O!"O;J,$N62I]$H;MJ,$N9%4q?4$H$KF0$+$5$l$F!";C;~$O8F5[!J$$$-!K$r$9$k$N$5(B -$B$(K:$l$F$$$?!#5l5-$N5-<T$N8l$r<Z$j$l$P!"!VF,?H!J$H$&$7$s!K$NLS$bB@$k!W$h$&$K46(B -$B$8$?$N$G$"$k!#$9$k$H!"O7GL$O!">>$NLZJR$r!">2HD$N4V$KA^$7$F!"$=$l$+$i!":#$^$GD/(B -$B$a$F$$$?;S3<$N<s$KN><j$r$+$1$k$H!"CzEY!"1n$N?F$,1n$N;R$NiM!J$7$i$_!K$r$H$k$h$&(B -$B$K!"$=$ND9$$H1$NLS$r0lK\$:$DH4$-$O$8$a$?!#H1$O<j$K=>$C$FH4$1$k$i$7$$!#(B -$B!!$=$NH1$NLS$,!"0lK\$:$DH4$1$k$N$K=>$C$F2<?M$N?4$+$i$O!"62I]$,>/$7$:$D>C$($F9T$C(B -$B$?!#$=$&$7$F!"$=$l$HF1;~$K!"$=$NO7GL$KBP$9$k$O$2$7$$A~0-$,!">/$7$:$DF0$$$FMh$?!#(B -$B$$$d!"$3$NO7GL$KBP$9$k$H1>$C$F$O!"8lJ@$,$"$k$+$bCN$l$J$$!#G+!J$`$7$m!K!"$"$i$f(B -$B$k0-$KBP$9$kH?46$,!"0lJ,Kh$K6/$5$rA}$7$FMh$?$N$G$"$k!#$3$N;~!"C/$+$,$3$N2<?M$K!"(B -$B$5$C$-Lg$N2<$G$3$NCK$,9M$($F$$$?!"q@;`!J$&$($8$K!K$r$9$k$+Ep?M$K$J$k$+$H1>$&Ld(B -$BBj$r!"2~$a$F;}=P$7$?$i!"62$i$/2<?M$O!"2?$NL$N}$b$J$/!"q@;`$rA*$s$@;v$G$"$m$&!#(B -$B$=$l$[$I!"$3$NCK$N0-$rA~$`?4$O!"O7GL$N>2$KA^$7$?>>$NLZJR$N$h$&$K!"@*$h$/G3$(>e(B -$B$,$j$@$7$F$$$?$N$G$"$k!#(B -$B!!2<?M$K$O!"L^O@!"2?8NO7GL$,;`?M$NH1$NLS$rH4$/$+$o$+$i$J$+$C$?!#=>$C$F!"9gM}E*(B -$B$K$O!"$=$l$rA10-$N2?$l$KJR$E$1$F$h$$$+CN$i$J$+$C$?!#$7$+$72<?M$K$H$C$F$O!"$3$N(B -$B1+$NLk$K!"$3$NMe@8Lg$N>e$G!";`?M$NH1$NLS$rH4$/$H1>$&;v$,!"$=$l$@$1$G4{$K5v$92D(B -$B$i$6$k0-$G$"$C$?!#L^O@!!2<?M$O!!$5$C$-Kx<+J,$,!"Ep?M$K$J$k5$$G$$$?;v$J$>$O!!$H(B -$B$&$KK:$l$F$$$k$N$G$"$k!#(B -$B!!$=$3$G!"2<?M$O!"N>B-$KNO$rF~$l$F!"$$$+$J$j!"Dt;R$+$i>e$XHt$S>e$,$C$?!!$=$&$7(B -$B$F@;JA!J$R$8$j$E$+!K$NB@Ea$K<j$r$+$1$J$,$i!"Bg8T$KO7GL$NA0$XJb$_$h$C$?!#O7GL$,(B -$B6C$$$?$N$O!!1>$&Kx$b$J$$!#(B -$B!!O7GL$O!"0lL\2<?M$r8+$k$H!"$^$k$GW8!J$$$7$f$_!K$K$G$bCF$+$l$?$h$&$K!!Ht$S>e$,$C(B -$B$?!#(B -$B!!!V$*$N$l!"$I$3$X9T$/!#!W(B -$B!!2<?M$O!"O7GL$,;S3<$K$D$^$E$-$J$,$i!"92$F$U$?$a$$$FF($2$h$&$H$9$k9T<j$r:I$$$G!"(B -$B$3$&GM$C$?!#O7GL$O!"$=$l$G$b2<?M$r$D$-$N$1$F9T$3$&$H$9$k!#2<?M$OKt!"$=$l$r9T$+(B -$B$9$^$$$H$7$F!"2!$7$b$I$9!#Fs?M$O;S3<$NCf$G!";C!"L58@$N$^$^!"$D$+$_9g$C$?!#$7$+(B -$B$7>!Ii$O!"$O$8$a$+$i!"$o$+$C$F$$$k!#2<?M$O$H$&$H$&!"O7GL$NOS$r$D$+$s$G!"L5M}$K(B -$B$=$3$X$M$8E]$7$?!#CzEY!"7\!J$H$j!K$N5S$N$h$&$J!"9|$HHi$P$+$j$NOS$G$"$k!#(B -$B!!!V2?$r$7$F$$$?!#$5$"2?$r$7$F$$$?!#1>$(!#1>$o$L$H!!$3$l$@$>$h!#!W(B -$B!!2<?M$O!"O7GL$r$D$-J|$9$H!"$$$-$J$j!"B@Ea$N>d$rJ'$C$F!"Gr$$9]!J$O$,$M!K$N?'$r(B -$B$=$N4c$NA0$X$D$-$D$1$?!#$1$l$I$b!"O7GL$OL[$C$F$$$k!#N><j$r$o$J$o$J$U$k$o$;$F!"(B -$B8*$GB)$r@Z$j$J$,$i!"4c$r!"4c5e$,$^$V$?$N30$X=P$=$&$K$J$kDx!"8+3+$$$F!"0"$N$h$&(B -$B$K<9Y9!J$7$e$&$M!K$/L[$C$F$$$k!#$3$l$r8+$k$H!"2<?M$O;O$a$FL@Gr$K$3$NO7GL$N@8;`(B -$B$,!"A4A3!"<+J,$N0U;V$K;YG[$5$l$F$$$k$H1>$&;v$r0U<1$7$?!#$=$&$7$F!"$3$N0U<1$O!"(B -$B:#$^$G$O$2$7$/G3$($F$$$?A~0-$N?4$r2?;~!J$$$D!K$N4V$K$+Nd$^$7$F$7$^$C$?!#8e$K;D$C(B -$B$?$N$O!"M#!"0?;E;v$r$7$F!"$=$l$,1_K~$K@.="$7$?;~$N!"0B$i$+$JF@0U$HK~B-$H$,$"$k(B -$B$P$+$j$G$"$k!#$=$3$G!"2<?M$O!"O7GL$r!"8+2<$2$J$,$i!">/$7@<$r=@$2$F$3$&1>$C$?!#(B -$B!!!V8J$O8!Hs0c;H!J$1$S$$$7!K$ND#$NLr?M$J$I$G$O$J$$!#:#$7J}$3$NLg$N2<$rDL$j$+$+$C(B -$B$?N9$N<T$@!#$@$+$i$*A0$KFl$r$+$1$F!"$I$&$7$h$&$H1>$&$h$&$J;v$O$J$$!#M#:#;~J,!"(B -$B$3$NLg$N>e$G!"2?$r$7$F$$$?$N$@$+!"$=$l$r8J$KOC$5$($9$l$P$$$$$N$@!#!W(B -$B!!$9$k$H!"O7GL$O!"8+3+$$$?4c$r!"0lAXBg$-$/$7$F!"$8$C$H$=$N2<?M$N4i$r8+<i$C$?!#(B -$B$^$V$?$N@V$/$J$C$?!"Fy?)D;$N$h$&$J!"1T$$4c$G8+$?$N$G$"$k!#$=$l$+$i!"b2$G!"KX!"(B -$BI!$H0l$D$K$J$C$??0$r2?$+J*$G$b3z$s$G$$$k$h$&$KF0$+$7$?!#:Y$$9"$G!"@m$C$?9"J)$N(B -$BF0$$$F$$$k$N$,8+$($k!#$=$N;~!"$=$N9"$+$i!"rm!J$+$i$9!K$NSF$/$h$&$J@<$,!"SC$.SC(B -$B$.!"2<?M$N<*$XEA$o$C$FMh$?!#(B -$B!!!V$3$NH1$rH4$$$F$J!"$3$N=w$NH1$rH4$$$F$J!"r#!J$+$D$i!K$K$7$h$&$H;W$&$?$N(B -$B$8$c!#!W(B -$B!!2<?M$O!"O7GL$NEz$,B830!"J?K^$J$N$K<:K>$7$?!#$=$&$7$F<:K>$9$k$HF1;~$K!"KtA0$N(B -$BA~0-$,!"Nd$JInJN$H0l$7$g$K!"?4$NCf$X$O$$$C$FMh$?!#$9$k$H!!$=$N5$?'!J$1$7$-!K$,!"(B -$B@hJ}$X$bDL$8$?$N$G$"$m$&!#O7GL$O!"JR<j$K!"$^$@;S3<$NF,$+$iC%!J$H!K$C$?D9$$H4$1(B -$BLS$r;}$C$?$J$j!"j1!J$R$-!K$N$D$V$d$/$h$&$J@<$G!"8}$4$b$j$J$,$i!"$3$s$J;v$r1>$C(B -$B$?!#(B -$B!!@.Dx!";`?M$NH1$NLS$rH4$/$H1>$&;v$O!"0-$$;v$+$MCN$l$L!#$7$+$7!"$3$&1>$&;`?M$N(B -$BB?$/$O!"3'!!$=$N0L$J;v$r!"$5$l$F$b$$$$?M4V$P$+$j$G$"$k!#8=$K!"<+J,$,:#!"H1$rH4(B -$B$$$?=w$J$I$O!"<X$r;M@#$P$+$j$:$D$K@Z$C$F43$7$?$N$r!"435{!J$[$7$&$*!K$@$H1>$C$F!"(B -$BB@EaBS!J$?$A$O$-!K$N?X$XGd$j$K9T$C$?!#1VIB$K$+$+$C$F;`$J$J$+$C$?$J$i!":#$G$bGd(B -$B$j$K9T$C$F$$$?$+$b$7$l$J$$!#$7$+$b!"$3$N=w$NGd$k435{$O!"L#$,$h$$$H1>$&$N$G!"B@(B -$BEaBS$?$A$,!"7g$+$5$::ZNA$KGc$C$F$$$?$N$G$"$k!#<+J,$O!"$3$N=w$N$7$?;v$,0-$$$H$O(B -$B;W$o$J$$!#$7$J$1$l$P!"q@;`!J$($&$8$K!K$r$9$k$N$G!";EJ}$,$J$/$7$?;v$@$+$i$G$"$k!#(B -$B$@$+$i!"Kt:#!"<+J,$N$7$F$$$?;v$b0-$$;v$H$O;W$o$J$$!#$3$l$b$d$O$j$7$J$1$l$P!"q@(B -$B;`$r$9$k$N$G!";EJ}$,$J$/$9$k;v$@$+$i$G$"$k!#$=$&$7$F!"$=$N;EJ}$,$J$$;v$r!"$h$/(B -$BCN$C$F$$$?$3$N=w$O!"<+J,$N$9$k;v$r5v$7$F$/$l$k$N$K$A$,$$$J$$$H;W$&$+$i$G$"(B -$B$k!#!<!<O7GL$O!"BgBN$3$s$J0UL#$N;v$r1>$C$?!#(B -$B!!2<?M$O!"B@Ea$r>d$K$*$5$a$F!"$=$NB@Ea$NJA$r:8$N<j$G$*$5$($J$,$i!"NdA3$H$7$F!"(B -$B$3$NOC$rJ9$$$F$$$?!#L^O@!"!!1&$N<j$G$O!"@V$/KK$KG?$r;}$?Bg$-$JLLb.!J$K$-$S!K$r(B -$B5$$K$7$J$,$i!"J9$$$F$$$k$N$G$"$k!#$7$+$7!"G7$rJ9$$$F$$$kCf$K!"2<?M$N?4$K$O!"0?(B -$BM&5$$,@8$^$l$FMh$?!#$=$l$O!!$5$C$-!"Lg$N2<$G$3$NCK$K7g$1$F$$$?M&5$$G$"$k!#$=$&(B -$B$7$F!"Kt$5$C$-!"$3$NLg$N>e$X>e!J$"$,!K$C$F!"$=$NO7GL$rJa$($?;~$NM&5$$H$O!"A4A3!"(B -$BH?BP$JJ}8~$KF0$3$&$H$9$kM&5$$G$"$k!#2<?M$O!"q@;`$r$9$k$+Ep?M$K$J$k$+$KLB$o$J$+$C(B -$B$?$P$+$j$G$O$J$$!#$=$N;~$N$3$NCK$N?4$b$A$+$i1>$($P!"q@;`$J$I$H1>$&;v$O!"KX!"9M(B -$B$($k;v$5$(=PMh$J$$Dx!"0U<1$N30$KDI$$=P$5$l$F$$$?!#(B -$B!!!V$-$C$H!"$=$&$+!#!W(B -$B!!O7GL$NOC$,40$k$H!"2<?M$OS^!J$"$6$1!K$k$h$&$J@<$GG0$r2!$7$?!#$=$&$7$F!"0lB-A0(B -$B$X=P$k$H!"IT0U$K!"1&$N<j$rLLb.$+$iN%$7$F!"O7GL$N6_>e!J$($j$,$_!K$r$D$+$_$J$,$i!"(B -$B$3$&1>$C$?!#(B -$B!!!V$G$O!"8J$,0zGm!J$R$O$.!K$r$7$h$&$H:($`$^$$$J!#8J$b$=$&$7$J$1$l$P!"q@;`$r$9(B -$B$kBN$J$N$@!#!W(B -$B!!2<?M$O!"$9$P$d$/!"O7GL$NCeJ*$rGm$.$H$C$?!#$=$l$+$i!"B-$K$7$,$_$D$3$&$H$9$kO7(B -$BGL$r!"<j9S$/;S3<$N>e$X=3E]$7$?!#Dt;R$N8}$^$G$O!"6O$K8^Jb$r?t$($k$P$+$j$G$"$k!#(B -$B2<?M$O!"Gm$.$H$C$?I0H)?'$NCeJ*$r$o$-$K$+$+$($F!"$^$?$?$/4V$K5^$JDt;R$rLk$NDl$X(B -$B$+$12<$j$?!#(B -$B!!;C!";`$s$@$h$&$KE]$l$F$$$?O7GL$,!";S3<$NCf$+$i!"$=$NMg$NBN$r5/$3$7$?$N$O!"$=(B -$B$l$+$i4V$b$J$/$N;v$G$"$k!#O7GL$O!"$D$V$d$/$h$&$J!"$&$a$/$h$&$J@<$rN)$F$J$,$i!"(B -$B$^$@G3$($F$$$k2P$N8w$r$?$h$j$K!"Dt;R$N8}$^$G!"Gg$C$F9T$C$?!#$=$&$7$F!"$=$3$+$i!"(B -$BC;$$GrH1$rE]!J$5$+$5$^!K$K$7$F!"Lg$N2<$rGA$-$3$s$@!#30$K$O!"M#!"9uF6!9!J$3$/$H(B -$B$&$H$&!K$?$kLk$,$"$k$P$+$j$G$"$k!#(B -$B!!2<?M$O!"4{$K!"1+$rKA$7$F!"5~ET$ND.$X6/Ep$rF/$-$K5^$$$G$$$?!#(B diff --git a/vendor/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt b/vendor/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt deleted file mode 100644 index 7a54b957..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/rashomon-shift-jis.txt +++ /dev/null @@ -1,178 +0,0 @@ -This file was derived from -http://www.gutenberg.org/cache/epub/1982/pg1982.txt --------- - - -H열V - -@̎̕łBl̉lẢʼnJ݂҂ĂB@L -̉ɂ́A̒j̊OɒNȂBAXOh̔A傫ȉ~ɁA肬 -肷CƂ܂ĂB傪A鐝Hɂȏ́A̒j̊OɂAJ -s}❆GXqAOl͂肻Ȃ̂łBꂪA̒j̊O -ɒNȂB -@̂Ɖ]ƁA̓ONAsɂ́AnkƂҕƂΎƂ_[Ƃ] -‚ÂċNBŗ̂т͈ʂłȂBLɂƁA -ōӂāA̒O‚A̔i͂j‚肵؂AH΂ -‚ݏd˂Đd̗ijɔĂƉ]ƂłB̎nł邩A -̏CȂǂ́AN̂ĂČڂ݂҂ȂBƂ̍rʂĂ -悢ɂāAϒKijށBlށBƂƂ܂ɂ́A -ȂlA̖֎ėāÂĂčsƉ]KoBŁA̖ -ȂȂƁANłCāA̖̋ߏւ͑Ԃ݂ȂɂȂ -Ă܂̂łB -@̑薔낪炩AW܂ėBԌƁA낪HƂ -ւ`āAiсĵ܂eȂAт܂ĂBɖ -̋󂪁A[ĂłȂ鎞ɂ́AꂪӖ܂悤ɂ͂茩B -́Aܘ_Ȁɂ鎀l̓A݂ɗ̂łB[[ނ́Ax -AHȂBBAXAꂩAĂ̕ڂɒ -͂ΒȉɁA̕ijA_XƔт‚Ă̂Bl -͎iΒïԏ̒iɐ􂢂炵̉ij̐K𐘂āAE̖jɏo -A傫ȖᬁiɂсjCɂȂAڂAĴӂ̂𒭂߂Ă̂ -B -@҂͂AulJ݂҂ĂvƏBAĺAJ -łiʂǂ悤Ɖ]Ă͂ȂBӂȂAܘ_Al̉Ƃ֋A‚ł -B̎ĺAlܓOɉɂoꂽBOɂ悤ɁAs -͈ʂȂ炸ĂB̉lAiNAgĂlɂo -ꂽ̂A̐̏ȗ]gɊOȂȂBAulJ݂҂Ăv -Ɖ]AuJɂӂ肱߂ꂽlAsȂāArɂĂv -]AKłB̏A̋͗lȂ炸̉̕l -SentimentalismeɉeB\ij̍肩ӂoJ́Aɏ -邯ȂBŁAĺA[Ă薾̕邵ǂɂ -Ƃā[[]΂ǂɂȂȂAǂɂ悤ƂāAƂƂ߂Ȃl -ǂȂA鐝HɂӂJ̉𕷂ƂȂĂB -@J͗‚‚ŁAAƉ]‚߂ĂB[ł͎ɋ -ႭāAグƁẢA΂߂ɂ‚oOi炩j̐ɁAd -Â_xĂB -@ǂɂȂȂAǂɂׂɂ́AiIł硁iƂ܁j͂ȂB -Ił΁Azni‚j̉A΂̓y̏ŁA_iɁj -łBāȀ̖֎ėāÂ悤Ɏ̂ĂĂ܂΂ -łBI΂ȂƂ΁[[l̍ĺAxjgɁA -̋ǏֈB́u΁v́A‚łĂAǁu΁v -BĺAiI΂ȂƂm肵ȂÁu΁v̂ -‚ׂɁARǍɗ‚ulɂȂOɎdȂvƉ]A -ϋɓIɍm肷邾́AECoɂ̂łB -@l͑傫Ți߁jāAꂩAVɗオB[₦̂ -śAΉ~̊łB͖̒ƒƂ̊ԂA[łƋɉ -ȂAʂBOh̒ɂƂ܂Ă肬肷Aǂ֍sĂ܂ -B -@ĺA߂ȂAR̊́i݁jɏd˂Ả̌ -̂܂܂킵BJ̊̂ȂAlڂɂ霜̂ȂAӊyɂ˂ꂻ -ȏ΁AłƂA𖾂ƎvłBƁAK -̘̏O֏A̍LAVOhqɂ‚BȂAlɂ -ĂAǂl΂łBĺAōɂiЂÂj̑ -⑖Ȃ悤ɋC‚ȂAm͂A̒q̈ԉ̒iւ -݂B -@ꂩǍłB̘Ȍ֏oA̍Lq̒iɁAl -̒jAL̂悤ɐg߂āAEȂA̗eqMĂBȌォ -炳΂̌AɁA̒j̉E̖jʂ炵ĂBZ颁iЂj̒ɁA -Ԃ^ᬂ̂jłBĺAn߂Ȁɂ҂́Al΂ -肾ƍĂBꂪAqOiČƁAł͒N΂ƂڂāA -̉΂𑴏ƓĂ炵B́ȂA낢A -Xɒw偂̑V䗠ɁAȂf̂ŁAɂƒmꂽ̂ł -B̉J̖ɁȀ̗ŁA΂ƂĂ邩́AǂB̎҂ł͂ -B -@ĺA{iĵ悤ɑʂŁAƋ}ȒqAԏ̒i -Ŕ悤ɂď‚߂Bđ̂o邾AɂȂAo邾 -AO֏oāA鋰AO̓`ČB -@ƁAO̓ɂ́A\ɕʂA‚̎r[ijAɊĂ -邪A΂̌̋yԔ͈͂Av苷̂ŁA͊‚Ƃ킩ȂBBA -ڂ낰ȂAm̂́A̒ɗ̎r[ƁA𒅂r[ƂƉ] -Bܘ_Aɂ͏j܂Ă炵BāA̎r[͊FAꂪA -i‚ājAĂlԂƉ]^Ays˂đl` -悤ɁAJA΂肵āA낲돰̏ɂ낪ĂB -AƂƂ̍ȂĂ镔ɁAڂ肵΂̌āAႭȂ -镔̉ewÂȂAivɈij̔@قĂB -@ĺA̎r[̕ࣂLCɎv킸A@ijBA -̎́ȀuԂɂ́A@YĂB鋭wiقƂ -ǂƂƂj̒j̚koDĂ܂łB -@l̊́A̎A͂߂āAr[̒LĂi܂Ăjl -BwFiЂ͂j̒𒘂Aw̒ႢAÁÂ悤 -ȘVkłB̘VḱAE̎ɉ΂Ƃ̖ؕЂāA̎r[̈ -̊`ނ悤ɒ߂ĂB̖т̒ƁA̎r[ł낤B -@ĺAZ̋|Ǝl̍DSƂɓāAb͌ċziĵ -YĂBL̋L҂̌؂΁AugiƂj̖тv悤Ɋ -̂łBƁAVḱA̖ؕЂA‚̊Ԃɑ}āAꂩA܂Œ -߂Ăr[̎ɗƁAxA̐e̎qli݁jƂ悤 -ɁA̖̒т{”͂߂B͎ɏ]Ĕ炵B -@̖̔тA{”̂ɏ]ĉl̐ŚA|čs -BāAƓɁA̘Vkɑ΂͂A“ėB -A̘Vkɑ΂Ɖ]ẮAꕾ邩mȂBJiނjA -鈫ɑ΂锽Aꕪɋ𑝂ė̂łB̎AN̉lɁA -̉ł̒jlĂA_iɁj邩lɂȂ邩Ɖ] -A߂ĎoA炭ĺA̖ȂA_I񂾎ł낤B -قǁA̒j̈𑞂ސŚAVk̏ɑ}̖ؕЂ̂悤ɁA悭R -肾Ă̂łB -@lɂ́Aܘ_A̘Vkl̖̔т𔲂킩ȂB]āAI -ɂ́AP̉ɕЂÂĂ悢mȂBlɂƂẮA -J̖ɁȀ̗ŁAl̖̔т𔲂Ɖ]AꂾŊɋ -炴鈫łBܘ_@ĺ@AlɂȂCłȂ́@ -ɖYĂ̂łB -@ŁAĺAɗ͂āAȂAq֔яオ@ -ĐiЂÂj̑ɎȂA҂ɘVk̑O݂֕BVk -̂́@]ȂB -@VḱAډlƁA܂ŜWi݁jɂłeꂽ悤Ɂ@яオ -B -@ûAǂ֍sBv -@ĺAVkr[ɂ‚܂ÂȂAQĂӂ߂ē悤ƂsǂŁA -lBVḱAłl‚̂čsƂBl͖As -܂ƂāAǂBl͎r[̒ŁAbÂ܂܁A‚ݍB -́A͂߂A킩ĂBl͂ƂƂAVk̘r‚ŁA -ւ˂|BxA{iƂj̋r̂悤ȁAƔ΂̘rłB -@uĂBĂB]B]ʂƁ@ꂾBv -@ĺAVk‚ƁAȂȀ𕥂āA|i͂ˁj̐F -̊̑Oւ‚‚BǂAVk͖قĂBȂȂӂ킹āA -ő؂ȂAAዅ܂Ԃ̊O֏oɂȂAJāÂ悤 -ɎXiイˁjقĂBƁAl͎n߂Ėɂ̘Vk̐ -ASRÄӎuɎxzĂƉ]ӎBāÄӎ́A -܂ł͂RĂ̐Sij̊Ԃɂ܂Ă܂BɎc -̂́ABAdāAꂪ~ɐÁA炩ȓӂƖƂ -΂łBŁAĺAVkAȂA_Ă]B -@uȂ͌giтj̖̒lȂǂł͂ȂB̖̉ʂ肩 -̎҂B炨OɓāAǂ悤Ɖ]悤Ȏ͂ȂBBA -̖̏ŁAĂ̂AȂɘb΂̂Bv -@ƁAVḱAJAw傫āAƂ̉l̊B -܂Ԃ̐ԂȂAĤ悤ȁAsŌ̂łBꂩAᰂŁAwA -@ƈ‚ɂȂOłł悤ɓBׂAŁAA -Ă̂B̎A̍AAi炷j̚e悤ȐAbb -Al̎֓`ėB -@u̔𔲂ĂȁȀ̔𔲂ĂȁA顁i‚jɂ悤Ǝv -Bv -@ĺAVk̓OA}Ȃ̂Ɏ]BĎ]ƓɁAO -Aȕ̂ƈꂵɁAS̒ւ͂ėBƁ@̋CFijA -ւʂ̂ł낤BVḱAЎɁA܂r[̓DiƁj -тȂA寁iЂĵ‚Ԃ₭悤ȐŁAȂAȎ] -B -@Al̖̔т𔲂Ɖ]́A˒mʁBA]l -́AF@̈ʂȎAĂlԂ΂łBɁAA -Ȃǂ́Aւl΂肸‚ɐ؂Ċ̂AiقjƉ]āA -сi͂j̐w֔ɍsBuaɂĎȂȂȂAł -ɍsĂȂBȀ̔銱́A悢Ɖ]̂ŁA -тAؗɔĂ̂łB́Ȁ̂Ƃ -vȂBȂ΁A_iɁĵŁAdȂłB -AÂĂƂ͎vȂB͂肵Ȃ΁A_ -̂ŁAdȂ鎖łBāA̎dȂA悭 -mĂ̏́Â鎖Ă̂ɂȂƎvł -B[[VḱÂȈӖ̎]B -@ĺAɂ߂āȂ̎̕łȂARƂāA -̘b𕷂ĂBܘ_A@E̎ł́AԂjɔ^傫Ȗᬁiɂсj -CɂȂAĂ̂łBAV𕷂Ă钆ɁAl̐Sɂ́A -EC܂ėB́@Ảł̒jɌĂECłB -āAȀ̖֏ijāA̘Vk߂̗ECƂ́ASRA -΂ȕɓƂECłBĺA_邩lɂȂ邩ɖȂ -΂ł͂ȂB̎̂̒j̐S]΁A_ȂǂƉ]́AwAl -鎖oȂAӎ̊OɒǂoĂB -@uƁABv -@Vk̘bƁAl͚}ij悤ȐŔOBāAꑫO -֏oƁAsӂɁAE̎ᬂ痣āAVk̋ݏi肪݁j‚݂ȂA -]B -@uł́AȂiЂ͂j悤ƍނ܂ȁBȂȂ΁A_ -̂Ȃ̂Bv -@ĺA΂₭AVk̒𔍂ƂBꂩAɂ݂‚ƂV -kArr[̏֏R|Bq̌܂ł́A͂Ɍܕ𐔂΂łB -ĺAƂOF̒킫ɂāA܂Ԃɋ}Ȓq̒ -肽B -@bA񂾂悤ɓ|ĂVkAr[̒Ȃ̗̂N̂́A -ꂩԂȂ̎łBVḱA‚Ԃ₭悤ȁA߂悤Ȑ𗧂ĂȂA -܂RĂ΂̌ɁAq̌܂ŁAčsBāAA -Z|i܁jɂāẢ`񂾁BOɂ́ABAXi -Ƃj邪΂łB -@ĺAɁAJ`āAs̒֋𓭂ɋ}łB diff --git a/vendor/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt b/vendor/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt deleted file mode 100644 index a8903283..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/rashomon-utf-8.txt +++ /dev/null @@ -1,178 +0,0 @@ -This file was derived from -http://www.gutenberg.org/cache/epub/1982/pg1982.txt --------- -羅生門 - -芥川龍之介 - - 或日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。 広い門 -の下には、この男の外に誰もいない。ただ、所々丹塗の剥げた、大きな円柱に、きりぎ -りすが一匹とまっている。羅生門が、朱雀大路にある以上は、この男の外にも、雨やみ -をする市女笠や揉烏帽子が、もう二三人はありそうなものである。それが、この男の外 -に誰もいない。 - 何故かと云うと、この二三年、京都には、地震とか辻風とか火事とか饑饉とか云う災 -いがつづいて起こった。そこで洛中のさびれ方は一通りでない。旧記によると、仏像や -仏具を打砕いて、その丹がついたり、金銀の箔(はく)がついたりした木を、路ばたに -つみ重ねて薪の料(しろ)に売っていたと云うことである。洛中がその始末であるから、 -羅生門の修理などは、元より誰も捨てて顧みる者がなかった。するとその荒れ果てたの -をよい事にして、狐狸(こり)が棲む。盗人が棲む。とうとうしまいには、引取り手の -ない死人を、この門へ持って来て、捨てて行くと云う習慣さえ出来た。そこで、日の目 -が見えなくなると、誰でも気味を悪がって、この門の近所へは足ぶみをしない事になっ -てしまったのである。 - その代り又鴉が何処からか、たくさん集まって来た。昼間見ると、その鴉が何羽とな -く輪を描いて、高い鴟尾(しび)のまわりを啼きながら、飛びまわっている。殊に門の -上の空が、夕焼けであかくなる時には、それが胡麻をまいたようにはっきり見えた。鴉 -は、勿論、門の上にある死人の肉を、啄みに来るのである。ーー尤も今日は、刻限が遅 -いせいか、一羽も見えない。唯、所々、崩れかかった、そうしてその崩れ目に長い草の -はえた石段の上に、鴉の糞(くそ)が、点々と白くこびりついているのが見える。下人 -は七段ある石段の一番上の段に洗いざらした紺の襖(あお)の尻を据えて、右の頬に出 -来た、大きな面皰(にきび)を気にしながら、ぼんやり、雨のふるのを眺めているので -ある。 - 作者はさっき、「下人が雨やみを待っていた」と書いた。しかし、下人は、雨がやん -でも格別どうしようと云う当てはない。ふだんなら、勿論、主人の家へ帰る可き筈であ -る。所がその主人からは、四五日前に暇を出された。前にも書いたように、当時京都の -町は一通りならず衰微していた。今この下人が、永年、使われていた主人から暇を出さ -れたのも、この衰微の小さな余波に外ならない。だから、「下人が雨やみを待っていた」 -と云うよりも、「雨にふりこめられた下人が、行き所がなくて、途方にくれていた」と -云う方が、適当である。その上、今日の空模様も少なからずこの平安朝の下人の -Sentimentalismeに影響した。申(さる)の刻下がりからふり出した雨は、未だに上 -がるけしきがない。そこで、下人は、何を措いても差当たり明日の暮しをどうにかしよ -うとしてーー云わばどうにもならない事を、どうにかしようとして、とりとめもない考 -えをたどりながら、さっきから朱雀大路にふる雨の音を聞くともなく聞いていた。 - 雨は羅生門をつつんで、遠くから、ざあっと云う音をあつめてくる。夕闇は次第に空 -を低くして、見上げると、門の屋根が、斜めにつき出した甍(いらか)の先に、重たく -うす暗い雲を支えている。 - どうにもならない事を、どうにかする為には、手段を選んでいる遑(いとま)はない。 -選んでいれば、築地(ついじ)の下か、道ばたの土の上で、饑死(うえじに)をするば -かりである。そうして、この門の上へ持って来て、犬のように捨てられてしまうばかり -である。選ばないとすればーー下人の考えは、何度も同じ道を低徊した揚句に、やっと -この局所へ逢着した。しかしこの「すれば」は、いつもでたっても、結局「すれば」で -あった。下人は、手段を選ばないという事を肯定しながらも、この「すれば」のかたを -つける為に、当然、この後に来る可き「盗人になるより外に仕方がない」と云う事を、 -積極的に肯定するだけの、勇気が出ずにいたのである。 - 下人は大きな嚏(くさめ)をして、それから、大儀そうに立上がった。夕冷えのする -京都は、もう火桶が欲しい程の寒さである。風は門の柱と柱との間を、夕闇と共に遠慮 -なく、吹きぬける。丹塗の柱にとまっていたきりぎりすも、もうどこかへ行ってしまっ -た。 - 下人は、頸をちぢめながら、山吹の汗衫(かざみ)に重ねた、紺の襖の肩を高くして -門のまわりを見まわした。雨風の患のない、人目にかかる惧のない、一晩楽にねられそ -うな所があれば、そこでともかくも、夜を明かそうと思ったからである。すると、幸門 -の上の楼へ上る、幅の広い、之も丹を塗った梯子が眼についた。上なら、人がいたにし -ても、どうせ死人ばかりである。下人は、そこで腰にさげた聖柄(ひじりづか)の太刀 -が鞘走らないように気をつけながら、藁草履をはいた足を、その梯子の一番下の段へふ -みかけた。 - それから、何分かの後である。羅生門の楼の上へ出る、幅の広い梯子の中段に、一人 -の男が、猫のように身をちぢめて、息を殺しながら、上の容子を窺っていた。楼の上か -らさす火の光が、かすかに、その男の右の頬をぬらしている。短い鬚(ひげ)の中に、 -赤く膿を持った面皰のある頬である。下人は、始めから、この上にいる者は、死人ばか -りだと高を括っていた。それが、梯子を二三段上って見ると、上では誰か火をとぼして、 -しかもその火を其処此処と動かしているらしい。これは、その濁った、黄いろい光が、 -隅々に蜘蛛の巣をかけた天井裏に、ゆれながら映ったので、すぐにそれと知れたのであ -る。この雨の夜に、この羅生門の上で、火をともしているからは、どうせ唯の者ではな -い。 - 下人は、宮守(やもり)のように足音をぬすんで、やっと急な梯子を、一番上の段ま -で這うようにして上りつめた。そうして体を出来るだけ、平にしながら、頸を出来るだ -け、前へ出して、恐る恐る、楼の内を覗いて見た。 - 見ると、楼の内には、噂に聞いた通り、幾つかの屍骸(しがい)が、無造作に棄てて -あるが、火の光の及ぶ範囲が、思ったより狭いので、数は幾つともわからない。唯、お -ぼろげながら、知れるのは、その中に裸の屍骸と、着物を着た屍骸とがあると云う事で -ある。勿論、中には女も男もまじっているらしい。そうして、その屍骸は皆、それが、 -嘗(かつて)、生きていた人間だと云う事実さえ疑われる程、土を捏ねて造った人形の -ように、口を開いたり、手を延ばしたりして、ごろごろ床の上にころがっていた。しか -も、肩とか胸とかの高くなっている部分に、ぼんやりした火の光をうけて、低くなって -いる部分の影を一層暗くしながら、永久に唖(おし)の如く黙っていた。 - 下人は、それらの屍骸の腐爛した臭気に思わず、鼻を掩った(おおった)。しかし、 -その手は、次の瞬間には、もう鼻を掩う事を忘れていた。或る強い感情が殆悉(ほとん -どことごとく)この男の嗅覚を奪ってしまったからである。 - 下人の眼は、その時、はじめて、其屍骸の中に蹲っている(うずくまっている)人間 -を見た。檜肌色(ひはだいろ)の着物を著た、背の低い、痩せた、白髪頭の、猿のよう -な老婆である。その老婆は、右の手に火をともした松の木片を持って、その屍骸の一つ -の顔を覗きこむように眺めていた。髪の毛の長い所を見ると、多分女の屍骸であろう。 - 下人は、六分の恐怖と四分の好奇心とに動かされて、暫時は呼吸(いき)をするのさ -え忘れていた。旧記の記者の語を借りれば、「頭身(とうしん)の毛も太る」ように感 -じたのである。すると、老婆は、松の木片を、床板の間に挿して、それから、今まで眺 -めていた屍骸の首に両手をかけると、丁度、猿の親が猿の子の虱(しらみ)をとるよう -に、その長い髪の毛を一本ずつ抜きはじめた。髪は手に従って抜けるらしい。 - その髪の毛が、一本ずつ抜けるのに従って下人の心からは、恐怖が少しずつ消えて行っ -た。そうして、それと同時に、その老婆に対するはげしい憎悪が、少しずつ動いて来た。 -いや、この老婆に対すると云っては、語弊があるかも知れない。寧(むしろ)、あらゆ -る悪に対する反感が、一分毎に強さを増して来たのである。この時、誰かがこの下人に、 -さっき門の下でこの男が考えていた、饑死(うえじに)をするか盗人になるかと云う問 -題を、改めて持出したら、恐らく下人は、何の未練もなく、饑死を選んだ事であろう。 -それほど、この男の悪を憎む心は、老婆の床に挿した松の木片のように、勢よく燃え上 -がりだしていたのである。 - 下人には、勿論、何故老婆が死人の髪の毛を抜くかわからなかった。従って、合理的 -には、それを善悪の何れに片づけてよいか知らなかった。しかし下人にとっては、この -雨の夜に、この羅生門の上で、死人の髪の毛を抜くと云う事が、それだけで既に許す可 -らざる悪であった。勿論 下人は さっき迄自分が、盗人になる気でいた事なぞは と -うに忘れているのである。 - そこで、下人は、両足に力を入れて、いかなり、梯子から上へ飛び上がった そうし -て聖柄(ひじりづか)の太刀に手をかけながら、大股に老婆の前へ歩みよった。老婆が -驚いたのは 云う迄もない。 - 老婆は、一目下人を見ると、まるで弩(いしゆみ)にでも弾かれたように 飛び上がっ -た。 - 「おのれ、どこへ行く。」 - 下人は、老婆が屍骸につまづきながら、慌てふためいて逃げようとする行手を塞いで、 -こう罵った。老婆は、それでも下人をつきのけて行こうとする。下人は又、それを行か -すまいとして、押しもどす。二人は屍骸の中で、暫、無言のまま、つかみ合った。しか -し勝負は、はじめから、わかっている。下人はとうとう、老婆の腕をつかんで、無理に -そこへねじ倒した。丁度、鶏(とり)の脚のような、骨と皮ばかりの腕である。 - 「何をしていた。さあ何をしていた。云え。云わぬと これだぞよ。」 - 下人は、老婆をつき放すと、いきなり、太刀の鞘を払って、白い鋼(はがね)の色を -その眼の前へつきつけた。けれども、老婆は黙っている。両手をわなわなふるわせて、 -肩で息を切りながら、眼を、眼球がまぶたの外へ出そうになる程、見開いて、唖のよう -に執拗(しゅうね)く黙っている。これを見ると、下人は始めて明白にこの老婆の生死 -が、全然、自分の意志に支配されていると云う事を意識した。そうして、この意識は、 -今まではげしく燃えていた憎悪の心を何時(いつ)の間にか冷ましてしまった。後に残っ -たのは、唯、或仕事をして、それが円満に成就した時の、安らかな得意と満足とがある -ばかりである。そこで、下人は、老婆を、見下げながら、少し声を柔げてこう云った。 - 「己は検非違使(けびいし)の庁の役人などではない。今し方この門の下を通りかかっ -た旅の者だ。だからお前に縄をかけて、どうしようと云うような事はない。唯今時分、 -この門の上で、何をしていたのだか、それを己に話さえすればいいのだ。」 - すると、老婆は、見開いた眼を、一層大きくして、じっとその下人の顔を見守った。 -まぶたの赤くなった、肉食鳥のような、鋭い眼で見たのである。それから、皺で、殆、 -鼻と一つになった唇を何か物でも噛んでいるように動かした。細い喉で、尖った喉仏の -動いているのが見える。その時、その喉から、鴉(からす)の啼くような声が、喘ぎ喘 -ぎ、下人の耳へ伝わって来た。 - 「この髪を抜いてな、この女の髪を抜いてな、鬘(かつら)にしようと思うたの -じゃ。」 - 下人は、老婆の答が存外、平凡なのに失望した。そうして失望すると同時に、又前の -憎悪が、冷な侮蔑と一しょに、心の中へはいって来た。すると その気色(けしき)が、 -先方へも通じたのであろう。老婆は、片手に、まだ屍骸の頭から奪(と)った長い抜け -毛を持ったなり、蟇(ひき)のつぶやくような声で、口ごもりながら、こんな事を云っ -た。 - 成程、死人の髪の毛を抜くと云う事は、悪い事かね知れぬ。しかし、こう云う死人の -多くは、皆 その位な事を、されてもいい人間ばかりである。現に、自分が今、髪を抜 -いた女などは、蛇を四寸ばかりずつに切って干したのを、干魚(ほしうお)だと云って、 -太刀帯(たちはき)の陣へ売りに行った。疫病にかかって死ななかったなら、今でも売 -りに行っていたかもしれない。しかも、この女の売る干魚は、味がよいと云うので、太 -刀帯たちが、欠かさず菜料に買っていたのである。自分は、この女のした事が悪いとは -思わない。しなければ、饑死(えうじに)をするので、仕方がなくした事だからである。 -だから、又今、自分のしていた事も悪い事とは思わない。これもやはりしなければ、饑 -死をするので、仕方がなくする事だからである。そうして、その仕方がない事を、よく -知っていたこの女は、自分のする事を許してくれるのにちがいないと思うからであ -る。ーー老婆は、大体こんな意味の事を云った。 - 下人は、太刀を鞘におさめて、その太刀の柄を左の手でおさえながら、冷然として、 -この話を聞いていた。勿論、 右の手では、赤く頬に膿を持た大きな面皰(にきび)を -気にしながら、聞いているのである。しかし、之を聞いている中に、下人の心には、或 -勇気が生まれて来た。それは さっき、門の下でこの男に欠けていた勇気である。そう -して、又さっき、この門の上へ上(あが)って、その老婆を捕えた時の勇気とは、全然、 -反対な方向に動こうとする勇気である。下人は、饑死をするか盗人になるかに迷わなかっ -たばかりではない。その時のこの男の心もちから云えば、饑死などと云う事は、殆、考 -える事さえ出来ない程、意識の外に追い出されていた。 - 「きっと、そうか。」 - 老婆の話が完ると、下人は嘲(あざけ)るような声で念を押した。そうして、一足前 -へ出ると、不意に、右の手を面皰から離して、老婆の襟上(えりがみ)をつかみながら、 -こう云った。 - 「では、己が引剥(ひはぎ)をしようと恨むまいな。己もそうしなければ、饑死をす -る体なのだ。」 - 下人は、すばやく、老婆の着物を剥ぎとった。それから、足にしがみつこうとする老 -婆を、手荒く屍骸の上へ蹴倒した。梯子の口までは、僅に五歩を数えるばかりである。 -下人は、剥ぎとった桧肌色の着物をわきにかかえて、またたく間に急な梯子を夜の底へ -かけ下りた。 - 暫、死んだように倒れていた老婆が、屍骸の中から、その裸の体を起こしたのは、そ -れから間もなくの事である。老婆は、つぶやくような、うめくような声を立てながら、 -まだ燃えている火の光をたよりに、梯子の口まで、這って行った。そうして、そこから、 -短い白髪を倒(さかさま)にして、門の下を覗きこんだ。外には、唯、黒洞々(こくと -うとう)たる夜があるばかりである。 - 下人は、既に、雨を冒して、京都の町へ強盗を働きに急いでいた。 diff --git a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt b/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt deleted file mode 100644 index 5a142ce3..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-hz-gb2312.txt +++ /dev/null @@ -1,107 +0,0 @@ -This file was derived from -http://www.gutenberg.org/files/23864/23864-0.txt -after converting from Traditional Chinese to Simplified Chinese. --------- -~{J<<F5ZR;~} - -~{KoWST;#:1xU_#,9zV.4sJB#,K@IzV.5X#,4fMvV.5@#,2;?I2;2lR2!#~} - -~{9J>-V.RTNeJB#,P#V.RT<F#,6xKwFdGi#:R;T;5@#,6~T;Ll#,H}T;5X#,KDT;=+#,NeT;7(!#~} - -~{5@U_#,AnCqSkIOM,Rb#,?ISkV.K@#,?ISkV.Iz#,6x2;N7N#R2#;LlU_#,RuQt!":.Jn!"J1VFR2#;5XU_#,T6=|!"OURW!"9cOA!"K@IzR2#;=+U_#,VG!"PE!"HJ!"SB!"QOR2#;7(U_#,GzVF!"9Y5@!"VwSCR2!#724KNeU_#,=+D*2;NE#,V*V.U_J$#,2;V*U_2;J$!#~} - -~{9JP#V.RT<F#,6xKwFdGi#,T;#:VwJkSP5@#?=+JkSPD\#?Ll5XJk5C#?7(AnJkPP#?1x~}?~{JkG?#?J?WdJkA7#?IM7#JkCw#?NaRT4KV*J$8:RS!#~} - -~{=+L}Na<F#,SCV.1XJ$#,AtV.#;=+2;L}Na<F#,SCV.1X0\#,H%V.!#~} - -~{<F@{RTL}#,DK~}?~{V.JF#,RTWtFdMb!#JFU_#,Rr@{6xVFH(R2!#~} - -~{1xU_#,9n5@R2!#9JD\6xJ>V.2;D\#,SC6xJ>V.2;SC#,=|6xJ>V.T6#,T66xJ>V.=|!#@{6xSUV.#,BR6xH!V.#,J56x18V.#,G?6x1\V.#,E-6xDSV.#,106x=>V.#,X}6x@MV.#,GW6x@kV.#,9%FdN^18#,3vFd2;Rb!#4K1x<RV.J$#,2;?IOH4+R2!#~} - -~{7rN4U=6xCmKcJ$U_#,5CKc6`R2#;N4U=6xCmKc2;J$U_#,5CKcIYR2!#6`KcJ$#,IYKc2;J$#,6x?vN^Kc:u#!NaRT4K9[V.#,J$8:<{RS!#~} - -~{WwU=5Z6~~} - -~{KoWST;#:72SC1xV.7(#,3[35G'~}?~{#,8o35G'3K#,4x<WJ.Mr#,G'@o@!A8!#TrDZMbV.7Q#,1v?MV.SC#,=:FaV.2D#,35<WV.7n#,HU7QG'=p#,H;:sJ.MrV.J&>YRS!#~} - -~{FdSCU=R2#,9sJ$#,>CTr6[1x4lHq#,9%3GTrA&G|#,>C1)J&Tr9zSC2;Wc!#7r6[1x4lHq#,G|A&~}?~{;u#,TrVn:n3KFd1W6xFp#,KdSPVGU_#,2;D\IFFd:sRS!#9J1xNEW>KY#,N46CGIV.>CR2!#7r1x>C6x9z@{U_#,N4V.SPR2!#9J2;>!V*SC1xV.:&U_#,Tr2;D\>!V*SC1xV.@{R2!#~} - -~{IFSC1xU_#,R[2;TY<.#,A82;H}TX#,H!SCl69z#,RrA8l65P#,9J>|J3?IWcR2!#9zV.F6l6J&U_T6Jd#,T6JdTr0YPUF6#;=|l6J&U_9sBt#,9sBtTr0YPU=_#,2F=_Tr<1l6GpR[!#A&G|2F~}?~{#,VPT-DZPil6<R#,0YPUV.7Q#,J.H%FdF_#;9+<RV.7Q#,FF>|0UBm#,<WkPJ8es#,j*~}?~{C,~}?~{#,GpE#4s35#,J.H%FdAy!#~} - -~{9JVG=+NqJ3l65P#,J35PR;VS#,51Na6~J.VS#;]=8QR;J/#,51Na6~J.J/!#9JI15PU_#,E-R2#;H!5PV.@{U_#,;uR2!#9J35U=#,5C35J.3KRTIO#,IMFdOH5CU_#,6x8|Fdl:Fl!#35TS6x3KV.#,WdIF6xQxV.#,JGN=J$5P6xRfG?!#~} - -~{9J1x9sJ$#,2;9s>C!#9JV*1xV.=+#,CqV.K>C|!#9z<R02N#V.VwR2!#~} - -~{D19%5ZH}~} - -~{KoWST;#:72SC1xV.7(#,H+9z~}?~{IO#,FF9z4NV.#;H+>|~}?~{IO#,FF>|4NV.#;H+BC~}?~{IO#,FFBC4NV.#;H+Wd~}?~{IO#,FFWd4NV.#;H+Ni~}?~{IO#,FFNi4NV.!#JG9J0YU=0YJ$#,7GIFV.IFU_R2#;2;U=6xG|HKV.1x#,IFV.IFU_R2!#~} - -~{9JIO1x7%D1#,Fd4N7%=;#,Fd4N7%1x#,FdOB9%3G!#9%3GV.7(#,~}?~{2;5CRQ!#P^~}???~{#,>_FwP5#,H}TB6x:s3I#;>`~}?~{#,SVH}TB6x:sRQ!#=+2;J$Fd7^#,6xRO8=V.#,I1J?H}7VV.R;#,6x3G2;0NU_#,4K9%V.TVR2!#~} - -~{9JIFSC1xU_#,G|HKV.1x#,6x7GU=R2#,0NHKV.3G6x7G9%R2#,;YHKV.9z6x7G>CR2#,1XRTH+Uyl6LlOB#,9J1x2;6Y6x@{?IH+#,4KD19%V.7(R2!#~} - -~{9JSC1xV.7(#,J.TrN'V.#,NeTr9%V.#,16Tr7VV.#,5PTrD\U=V.#,IYTrD\LSV.#,2;HtTrD\1\V.!#9JP!5PV.<a#,4s5PV.G\R2!#~} - -~{7r=+U_#,9zV.8(R2!#8(V\Tr9z1XG?#,8(O6Tr9z1XHu!#9J>}V.KyRT;<l6>|U_H}#:2;V*>|V.2;?IRT=x6xN=V.=x#,2;V*>|V.2;?IRTMK6xN=V.MK#,JGN=wc>|#;2;V*H}>|V.JB#,6xM,H}>|V.U~#,Tr>|J?;sRS#;2;V*H}>|V.H(#,6xM,H}>|V.HN#,Tr>|J?RIRS!#H}>|<H;sGRRI#,TrVn:nV.DQVARS!#JGN=BR>|R}J$!#~} - -~{9JV*J$SPNe#:V*?IRTU=Sk2;?IRTU=U_#,J$!#J6~}?~{9QV.SCU_#,J$!#IOOBM,S{U_#,J$!#RTS]4}2;S]U_#,J$!#=+D\6x>}2;SyU_#,J$!#4KNeU_#,V*J$V.5@R2!#~} - -~{9JT;#:V*<:V*1K#,0YU=2;~}?~{#;2;V*1K6xV*<:#,R;J$R;8:#;2;V*1K2;V*<:#,C?U=1X0\!#~} - -~{>|PN5ZKD~} - -~{KoWST;#:NtV.IFU=U_#,OH~}?~{2;?IJ$#,RT4}5PV.?IJ$!#2;?IJ$TZ<:#,?IJ$TZ5P!#9JIFU=U_#,D\~}?~{2;?IJ$#,2;D\J95P1X?IJ$!#9JT;#:J$?IV*#,6x2;?I~}?~{!#~} - -~{2;?IJ$U_#,JXR2#;?IJ$U_#,9%R2!#JXTr2;Wc#,9%TrSP~}?~{!#IFJXU_#,2Xl6>E5XV.OB#,IF9%U_#,6/l6>ELlV.IO#,9JD\WT1#6xH+J$R2!#~} - -~{<{J$2;9}~}?~{HKV.KyV*#,7GIFV.IFU_R2#;U=J$6xLlOBT;IF#,7GIFV.IFU_R2!#9J>YGo:A2;~}?~{6`A&#,<{HUTB2;~}?~{CwD?#,NE@Wv*2;~}?~{4O6z!#9EV.IFU=U_#,J$l6RWJ$U_R2!#9JIFU=U_V.J$R2#,N^VGC{#,N^SB9&#,9JFdU=J$2;_/!#2;_/U_#,FdKy4k1XJ$#,J$RQ0\U_R2!#9JIFU=U_#,OHA"l62;0\V.5X#,6x2;J'5PV.0\R2!#JG9JJ$1xOHJ$#,6x:sGsU=#,0\1xOHU=6x:sGsJ$!#IFSC1xU_#,P^5@6x1#7(#,9JD\~}?~{J$0\V.U~!#~} - -~{1x7(#:R;T;6H#,6~T;A?#,H}T;J}#,KDT;3F#,NeT;J$!#5XIz6H#,6HIzA?#,A?IzJ}#,J}Iz3F#,3FIzJ$!#9JJ$1xHtRT~}?~{3F~}?~{#,0\1xHtRT~}?~{3F~}?~{!#J$U_V.U=#,Ht>v;}K.l6G'XpV.~}?~{U_#,PNR2!#~} - -~{1xJF5ZNe~} - -~{KoWST;#:72VN~}?~{HgVN9Q#,7VJ}JGR2#;67~}?~{Hg679Q#,PNC{JGR2#;H}>|V.~}?~{#,?IJ91XJ\5P6xN^0\U_#,FfU}JGR2#;1xV.Ky<S#,HgRT~}?~{M6BQU_#,PiJ5JGR2!#~} - -~{72U=U_#,RTU}:O#,RTFfJ$!#9JIF3vFfU_#,N^GnHgLl5X#,2;=_Hg=-:#!#VU6x84J<#,HUTBJGR2!#K@6x~}?~{Iz#,KDJ1JGR2!#Iy2;9}Ne#,NeIyV.1d#,2;?IJ$L}R2#;I+2;9}Ne#,NeI+V.1d#,2;?IJ$9[R2#;N62;9}Ne#,NeN6V.1d#,2;?IJ$3"R2#;U=JF#,2;9}FfU}#,FfU}V.1d#,2;?IJ$GnR2!#FfU}O`Iz#,HgQ-;7V.N^6K#,JlD\GnV.TU#?~} - -~{<$K.V.<2#,VAl6F/J/U_#,JFR2#;~}?~{DqV.<2#,VAl6;YU[U_#,=ZR2!#JG9JIFU=U_#,FdJFOU#,Fd=Z6L!#JFHgUEes#,=ZHg7";z!#~} - -~{7W7W~}??~{#,67BR6x2;?IBRR2#;;k;kcgcg#,PNT26x2;?I0\R2!#BRIzl6VN#,GSIzl6SB#,HuIzl6G?!#VNBR#,J}R2#;SBGS#,JFR2#;G?Hu#,PNR2!#9JIF6/5PU_#,PNV.#,5P1X4SV.#;ShV.#,5P1XH!V.!#RT@{6/V.#,RTWd4}V.!#~} - -~{9JIFU=U_#,GsV.l6JF#,2;Tpl6HK#;9JD\TqHK6xHNJF!#HNJFU_#,FdU=HKR2#,HgW*D>J/!#D>J/V.PT#,02Tr>2#,N#Tr6/#,7=TrV9#,T2TrPP!#9JIFU=HKV.JF#,HgW*T2J/l6G'XpV.I=U_#,JFR2!#~} - -~{PiJ55ZAy~} - -~{KoWST;#:72OH4&U=5X6x4}5PU_X}#,:s4&U=5X6xGwU=U_@M!#~} - -~{9JIFU=U_#,VBHK6x2;VBl6HK!#D\J95PHKWTVAU_#,@{V.R2#;D\J95PHK2;5CVAU_#,:&V.R2!#9J5PX}D\@MV.#,1%D\<"V.#,02D\6/V.!#3vFdKy1XGw#,GwFdKy2;Rb!#PPG'@o6x2;@MU_#,PPl6N^HKV.5XR2#;9%6x1XH!U_#,9%FdKy2;JXR2!#JX6x1X9LU_#,JXFdKy2;9%R2!#~} - -~{9JIF9%U_#,5P2;V*FdKyJX#;IFJXU_#,5P2;V*FdKy9%!#N":uN":u#,VAl6N^PN#;Iq:uIq:u#,VAl6N^Iy#,9JD\~}?~{5PV.K>C|!#=x6x2;?ISyU_#,3eFdPiR2#;MK6x2;?IW7U_#,KY6x2;?I<0R2!#9JNRS{U=#,5PKd8_@]In95#,2;5C2;SkNRU=U_#,9%FdKy1X>HR2#;NR2;S{U=#,Kd;-5X6xJXV.#,5P2;5CSkNRU=U_#,9TFdKyV.R2!#9JPNHK6xNRN^PN#,TrNRW(6x5P7V!#NRW(~}?~{R;#,5P7V~}?~{J.#,JGRTJ.9%FdR;R2!#TrNR~}?~{5P9Q#,D\RT~}?~{;w9QU_#,TrNaV.KySkU=U_T<RS!#NaKySkU=V.5X2;?IV*#,2;?IV*Tr5PKy18U_6`#,5PKy18U_6`#,TrNaKySkU=U_9QRS!#9J18G0Tr:s9Q#,18:sTrG09Q#,18WsTrSR9Q#,18SRTrWs9Q#,N^Ky2;18#,TrN^Ky2;9Q!#9QU_#,18HKU_R2#;~}?~{U_#,J9HK18<:U_R2!#9JV*U=V.5X#,V*U=V.HU#,Tr?IG'@o6x;aU=#;2;V*U=V.5X#,2;V*U=HU#,TrWs2;D\>HSR#,SR2;D\>HWs#,G02;D\>H:s#,:s2;D\>HG0#,6x?vT6U_J}J.@o#,=|U_J}@o:u#!RTNa6HV.#,T=HKV.1xKd6`#,R`^IRfl6J$TU#!9JT;#:J$?I~}?~{R2!#5PKd~}?~{#,?IJ9N^67!#9J2_V.6xV*5CJ'V.<F#,:rV.6xV*6/>2V.@m#,PNV.6xV*K@IzV.5X#,=GV.6xV*SP~}?~{2;WcV.4&!#9JPN1xV.<+#,VAl6N^PN!#N^PNTrIn<d2;D\?z#,VGU_2;D\D1!#RrPN6x4kJ$l6~}?~{#,~}?~{2;D\V*!#HK=TV*NRKyRTJ$V.PN#,6xD*V*NaKyRTVFJ$V.PN!#9JFdU=J$2;~}?~{#,6xS&PNl6N^Gn!#7r1xPNOsK.#,K.V.PP1\8_6xGwOB#,1xV.PN1\J56x;wPi#;K.Rr5X6xVFAw#,1xRr5P6xVFJ$!#9J1xN^3#JF#,K.N^3#PN!#D\Rr5P1d;/6xH!J$U_#,N=V.Iq!#9JNePPN^3#J$#,KDJ1N^3#N;#,HUSP6L3$#,TBSPK@Iz!#~} - -~{>|Uy5ZF_~} - -~{KoWST;#:~} ~{72SC1xV.7(#,=+J\C|l6>}#,:O>|>[~}?~{#,=;:M6xIa#,D*DQl6>|Uy!#>|UyV.DQU_#,RTSX~}?~{V1#,RT;<~}?~{@{!#9JSXFdM>#,6xSUV.RT@{#,:sHK7"#,OHHKVA#,4KV*SXV1V.<FU_R2!#>|Uy~}?~{@{#,>|Uy~}?~{N#!#>Y>|6xUy@{Tr2;<0#,N/>|6xUy@{Tr~}?~{VX>h!#JG9J~}?~{<W6xGw#,HUR92;4&#,165@<fPP#,0Y~}?~{6xUy@{#,TrG\H}=+>|#,>"U_OH#,F#U_:s#,Fd7(J.R;6xVA#;NeJ.@o6xUy@{#,TrujIO=+>|#,Fd7(0kVA#;H}J.@o6xUy@{#,TrH}7VV.6~VA!#JG9J>|N^~}?~{VXTrMv#,N^A8J3TrMv#,N^N/;}TrMv!#9J2;V*Vn:nV.D1U_#,2;D\T%=;#;2;V*I=AV!"OUWh!">ZTsV.PNU_#,2;D\PP>|#;2;SCOg5<U_#,2;D\5C5X@{!#9J1xRTU)A"#,RT@{6/#,RT7V:M~}?~{1dU_R2!#9JFd<2Hg7g#,FdPlHgAV#,GVBSHg;p#,2;6/HgI=#,DQV*HgRu#,6/Hg@WUp!#BSOg7V~}?~{#,@*5X7V@{#,P|H(6x6/!#OHV*SXV1V.<FU_J$#,4K>|UyV.7(R2!#!6>|U~!7T;#:!0QT2;O`NE#,9J~}?~{V.=p9D#;JS2;O`<{#,9J~}?~{V.l:Fl!#!17r=p9Dl:FlU_#,KyRTR;CqV.6zD?R2!#Cq<HW(R;#,TrSBU_2;5C6@=x#,GSU_2;5C6@MK#,4KSC~}?~{V.7(R2!#9JR9U=6`=p9D#,VgU=6`l:Fl#,KyRT1dHKV.6zD?R2!#H}>|?I6aFx#,=+>|?I6aPD!#JG9J3/FxHq#,VgFx6h#,D:Fx9i!#IFSC1xU_#,1\FdHqFx#,;wFd6h9i#,4KVNFxU_R2!#RTVN4}BR#,RT>24};)#,4KVNPDU_R2!#RT=|4}T6#,RTX}4}@M#,RT1%4}<"#,4KVNA&U_R2!#N^Q{U}U}V.Fl#,N^;wLCLCV.3B#,4KVN1dU_R2!#9JSC1xV.7(#,8_AjNpOr#,13GpNpDf#,Qp11Np4S#,HqWdNp9%#,6|1xNpJ3#,9iJ&Np6t#,N'J&RE~}?~{#,Gn?\NpFH#,4KSC1xV.7(R2!#~} - -~{>E1d5Z0K~} - -~{KoWST;#:~} ~{72SC1xV.7(#,=+J\C|l6>}#,:O>|>[:O!#7:5XN^Ia#,ai5X:O=;#,>x5XN^At#,N'5XTrD1#,K@5XTrU=#,M>SPKy2;SI#,>|SPKy2;;w#,3GSPKy2;9%#,5XSPKy2;Uy#,>}C|SPKy2;J\!#9J=+M(l6>E1dV.@{U_#,V*SC1xRS#;=+2;M(>E1dV.@{#,KdV*5XPN#,2;D\5C5XV.@{RS#;VN1x2;V*>E1dV.Ju#,KdV*Ne@{#,2;D\5CHKV.SCRS!#JG9JVGU_V.BG#,1XTSl6@{:&#,TSl6@{6xNq?IPER2#,TSl6:&6x;<?I=bR2!#JG9JG|Vn:nU_RT:&#,R[Vn:nU_RTR5#,GwVn:nU_RT@{!#9JSC1xV.7(#,N^JQFd2;@4#,JQNaSPRT4}V.#;N^JQFd2;9%#,JQNaSPKy2;?I9%R2!#9J=+SPNeN##,1XK@?II1#,1XIz?IB2#,7^KY?INj#,A.=`?IHh#,0.Cq?I73!#724KNeU_#,=+V.9}R2#,SC1xV.TVR2!#82>|I1=+#,1XRTNeN##,2;?I2;2lR2!#~} - -~{PP>|5Z>E~} - -~{KoWST;#:724&>|O`5P#,>xI=R@~}?~{#,JSIz4&8_#,U=B!N^5G#,4K4&I=V.>|R2!#>xK.1XT6K.#,?M>xK.6x@4#,NpS-V.l6K.DZ#,An0k6I6x;wV.@{#,S{U=U_#,N^8=l6K.6xS-?M#,JSIz4&8_#,N^S-K.Aw#,4K4&K.IOV.>|R2!#>x3bTs#,N(X=H%N^At#,Ht=;>|l63bTsV.VP#,1XR@K.2]6x13~}?~{Jw#,4K4&3bTsV.>|R2!#F=B=4&RW#,SR138_#,G0K@:sIz#,4K4&F=B=V.>|R2!#724KKD>|V.@{#,;F5[V.KyRTJ$KD5[R2!#72>|:C8_6x6qOB#,9sQt6x<zRu#,QxIz6x4&J5#,>|N^0Y<2#,JGN=1XJ$!#GpAj5L7@#,1X4&FdQt6xSR13V.#,4K1xV.@{#,5XV.VzR2!#IOSjK.AwVA#,S{IfU_#,4}Fd6(R2!#725XSP>x='!"Ll>.!"Ll@N!"LlB^!"LlO]!"LlO6#,1XX=H%V.#,Np=|R2!#NaT6V.#,5P=|V.#;NaS-V.#,5P13V.!#>|ETSPOUWh!"dj>.!"]s]g!"P!AV!"~}??~{U_#,1X=w82KwV.#,4K7|~}?~{V.Ky4&R2!#5P=|6x>2U_#,JQFdOUR2#;T66xLtU=U_#,S{HKV.=xR2#;FdKy>SRWU_#,@{R2#;~}?~{Jw6/U_#,@4R2#;~}?~{2]6`UOU_#,RIR2#;DqFpU_#,7|R2#;J^:'U_#,82R2#;3>8_6xHqU_#,35@4R2#;106x9cU_#,M=@4R2#;I"6xLu4oU_#,iT~}?~{R2#;IY6xMy@4U_#,S*>|R2#;4G106x18U_#,=xR2#;4GG?6x=xG}U_#,MKR2#;Ga35OH3v>SFd2`U_#,3BR2#;N^T<6xGk:MU_#,D1R2#;1<W_6x3B1xU_#,FZR2#;0k=x0kMKU_#,SUR2#;UH6xA"U_#,<"R2#;<36xOHR{U_#,?JR2#;<{@{6x2;=xU_#,@MR2#;Dq</U_#,PiR2#;R9:tU_#,?VR2#;>|HEU_#,=+2;VXR2#;l:Fl6/U_#,BRR2#;@tE-U_#,>kR2#;I1BmHbJ3U_#,>|N^A8R2#;P|~}?~{2;75FdIaU_#,Gn?\R2#;W;W;tbtb#,PlSkHKQTU_#,J'~}?~{R2#;J}IMU_#,>=R2#;J}7#U_#,@'R2#;OH1)6x:sN7Fd~}?~{U_#,2;>+V.VAR2#;@4N/P;U_#,S{P]O"R2!#1xE-6xO`S-#,>C6x2;:O#,SV2;O`H%#,1X=w2lV.!#1x7G9sRf6`R2#,N)N^Nd=x#,WcRT2"A&AO5PH!HK6xRQ!#7rN)N^BG6xRW5PU_#,1XG\l6HK!#WdN4GW6x7#V.#,Tr2;7~#,2;7~TrDQSC!#WdRQGW8=6x7#2;PP#,Tr2;?ISC!#9J:OV.RTND#,FkV.RTNd#,JGN=1XH!!#AnKXPPRT=LFdCq#,TrCq7~#;AnKX2;PPRT=LFdCq#,TrCq2;7~!#AnKXPPU_#,Sk~}?~{O`5CR2!#~} - -~{5XPN5ZJ.~} - -~{KoWST;#:5XPNSPM(U_!"SP~}?~{U_!"SPV'U_!"SP0/U_!"SPOUU_!"SPT6U_!#NR?IRTMy#,1K?IRT@4#,T;M(!#M(PNU_#,OH>S8_Qt#,@{A85@#,RTU=Tr@{!#?IRTMy#,DQRT75#,T;~}?~{!#~}?~{PNU_#,5PN^18#,3v6xJ$V.#,5PHtSP18#,3v6x2;J$#,DQRT75#,2;@{!#NR3v6x2;@{#,1K3v6x2;@{#,T;V'!#V'PNU_#,5PKd@{NR#,NRN^3vR2#,R}6xH%V.#,An5P0k3v6x;wV.@{!#0/PNU_#,NROH>SV.#,1XS/V.RT4}5P!#Ht5POH>SV.#,S/6xNp4S#,2;S/6x4SV.!#OUPNU_#,NROH>SV.#,1X>S8_QtRT4}5P#;Ht5POH>SV.#,R}6xH%V.#,Np4SR2!#T6PNU_#,JF>yDQRTLtU=#,U=6x2;@{!#724KAyU_#,5XV.5@R2#,=+V.VAHN#,2;?I2;2lR2!#721xSPW_U_!"SP3[U_!"SPO]U_!"SP1@U_!"SPBRU_!"SP11U_!#724KAyU_#,7GLl5XV.TV#,=+V.9}R2!#7rJF>y#,RTR;;wJ.#,T;W_#;WdG?@tHu#,T;3[#;@tG?WdHu#,T;O]#;4s@tE-6x2;7~#,Sv5P~}?~{6xWTU=#,=+2;V*FdD\#,T;1@#;=+Hu2;QO#,=L5@2;Cw#,@tWdN^3##,3B1xW]:a#,T;BR#;=+2;D\AO5P#,RTIY:O~}?~{#,RTHu;wG?#,1xN^Q!7f#,T;11!#724KAyU_#,0\V.5@R2#,=+V.VAHN#,2;?I2;2lR2!#7r5XPNU_#,1xV.VzR2!#AO5PVFJ$#,<FOU0/T6=|#,IO=+V.5@R2!#V*4K6xSCU=U_1XJ$#,2;V*4K6xSCU=U_1X0\!#9JU=5@1XJ$#,VwT;N^U=#,1XU=?IR2#;U=5@2;J$#,VwT;1XU=#,N^U=?IR2!#9J=x2;GsC{#,MK2;1\Wo#,N(CqJG1##,6x@{l6Vw#,9zV.1&R2!#JSWdHgS$6y#,9J?IRTSkV.80InO*#;JSWdHg0.WS#,9J?ISkV.>cK@!#:q6x2;D\J9#,0.6x2;D\An#,BR6x2;D\VN#,F)Ht=>WS#,2;?ISCR2!#V*NaWdV.?IRT;w#,6x2;V*5PV.2;?I;w#,J$V.0kR2#;V*5PV.?I;w#,6x2;V*NaWdV.2;?IRT;w#,J$V.0kR2#;V*5PV.?I;w#,V*NaWdV.?IRT;w#,6x2;V*5XPNV.2;?IRTU=#,J$V.0kR2!#9JV*1xU_#,6/6x2;CT#,>Y6x2;Gn!#9JT;#:V*1KV*<:#,J$DK2;4y#;V*LlV*5X#,J$DK?IH+!#~} - -~{>E5X5ZJ.R;~} - -~{KoWST;#:SC1xV.7(#,SPI"5X#,SPGa5X#,SPUy5X#,SP=;5X#,SPai5X#,SPVX5X#,SP7:5X#,SPN'5X#,SPK@5X!#Vn:nWTU=Fd5XU_#,~}?~{I"5X#;HkHKV.5X2;InU_#,~}?~{Ga5X#;NR5CR`@{#,1K5CR`@{U_#,~}?~{Uy5X#;NR?IRTMy#,1K?IRT@4U_#,~}?~{=;5X#;Vn:nV.5XH}Jt#,OHVA6x5CLlOB~}?~{U_#,~}?~{ai5X#;HkHKV.5XIn#,133GRX6`U_#,~}?~{VX5X#;I=AV!"OUWh!">ZTs#,72DQPPV.5@U_#,~}?~{7:5X#;KySIHkU_0/#,Ky4S9iU_SX#,1K9Q?IRT;wNaV.~}?~{U_#,~}?~{N'5X#;<2U=Tr4f#,2;<2U=TrMvU_#,~}?~{K@5X!#JG9JI"5XTrN^U=#,Ga5XTrN^V9#,Uy5XTrN^9%#,=;5XTrN^>x#,ai5XTr:O=;#,VX5XTrBS#,7:5XTrPP#,N'5XTrD1#,K@5XTrU=!#9EV.IFSC1xU_#,D\J95PHKG0:s2;O`<0#,~}?~{9Q2;O`JQ#,9s<z2;O`>H#,IOOB2;O`JU#,Wd@k6x2;</#,1x:O6x2;Fk!#:Ol6@{6x6/#,2;:Ol6@{6xV9!#8RNJ5P~}?~{6xU{=+@4#,4}V.Ht:NT;#:OH6aFdKy0.TrL}RS!#1xV.GiVwKY#,3KHKV.2;<0!#SI2;S]V.5@#,9%FdKy2;=dR2!#72~}?~{?MV.5@#,InHkTrW(!#VwHK2;?K#,BSl6HDR0#,H}>|WcJ3!#=wQx6xNp@M#,2"Fx;}A&#,TK1x<FD1#,~}?~{2;?I2b!#M6V.N^KyMy#,K@GR2;11!#K@QI2;5C#,J?HK>!A&!#1xJ?IuO]Tr2;>e#,N^KyMyTr9L#,InHkTr>P#,2;5CRQTr67!#JG9JFd1x2;P^6x=d#,2;Gs6x5C#,2;T<6xGW#,2;An6xPE#,={OiH%RI#,VAK@N^KyV.!#NaJ?N^~}?~{2F#,7G6q;uR2#;N^~}?~{C|#,7G6qJYR2!#An7"V.HU#,J?WdWxU_LiU4=s#,YHNTU_Li=;RC#,M6V.N^KyMy#,Vn!"~}?~{V.SBR2!#9JIFSC1xU_#,F)HgBJH;!#BJH;U_#,3#I=V.I_R2!#;wFdJWTrN2VA#,;wFdN2TrJWVA#,;wFdVPTrJWN2>cVA!#8RNJ1x?IJ9HgBJH;:u#?T;?I!#7rNbHKSkT=HKO`6qR2#,51FdM,V[6x<C6xSv7g#,FdO`>HR2HgWsSRJV!#JG9J7=BmBqBV#,N4WcJQR2#;FkSBHgR;#,U~V.5@R2#;8UHa=T5C#,5XV.@mR2!#9JIFSC1xU_#,P/JVHtJ9R;HK#,2;5CRQR2!#=+>|V.JB#,>2RTSD#,U}RTVN#,D\S^J?WdV.6zD?#,J9V.N^V*#;RWFdJB#,8oFdD1#,J9HKN^J6#;RWFd>S#,SXFdM>#,J9Cq2;5CBG!#K'SkV.FZ#,Hg5G8_6xH%FdL]#;K'SkV.InHkVn:nV.5X#,6x7"Fd;z!#HtG}H:Qr#,G}6xMy#,G}6x@4#,D*V*KyV.!#>[H}>|V.~}?~{#,M6V.l6OU#,4KN==+>|V.JBR2!#>E5XV.1d#,G|IlV.A&#,HKGiV.@m#,2;?I2;2lR2!#72~}?~{?MV.5@#,InTrW(#,G3TrI"!#H%9zT=>36xJ&U_#,>x5XR2#;KD39U_#,ai5XR2#;HkInU_#,VX5XR2#;HkG3U_#,Ga5XR2#;139LG00/U_#,N'5XR2#;N^KyMyU_#,K@5XR2!#JG9JI"5XNa=+R;FdV>#,Ga5XNa=+J9V.Jt#,Uy5XNa=+GwFd:s#,=;5XNa=+=wFdJX#,=;5XNa=+9LFd=a#,ai5XNa=+=wFdJQ#,VX5XNa=+<LFdJ3#,7:5XNa=+=xFdM>#,N'5XNa=+H{Fd~}?~{#,K@5XNa=+J>V.RT2;;n!#9J1xV.Gi#:N'TrSy#,2;5CRQTr67#,9}Tr4S!#JG9J2;V*Vn:nV.D1U_#,2;D\T$=;#;2;V*I=AV!"OUWh!">ZTsV.PNU_#,2;D\PP>|#;2;SCOg5<#,2;D\5C5X@{!#KDNeU_#,R;2;V*#,7G0TMuV.1xR2!#7r0TMuV.1x#,7%4s9z#,TrFd~}?~{2;5C>[#;M~<Sl65P#,TrFd=;2;5C:O!#JG9J2;UyLlOBV.=;#,2;QxLlOBV.H(#,PE<:V.K=#,M~<Sl65P#,TrFd3G?I0N#,Fd9z?IcD!#J)N^7(V.IM#,P|N^U~V.An!#78H}>|V.~}?~{#,HtJ9R;HK!#78V.RTJB#,Np8fRTQT#;78V.RT:&#,Np8fRT@{!#M6V.Mv5XH;:s4f#,O]V.K@5XH;:sIz!#7r~}?~{O]l6:&#,H;:sD\~}?~{J$0\!#9J~}?~{1xV.JB#,TZK3Oj5PV.Rb#,2"5PR;Or#,G'@oI1=+#,JGN=GID\3IJB!#JG9JU~>YV.HU#,RD9XU[7{#,N^M(FdJ9#,@wl6@HCmV.IO#,RTVoFdJB!#5PHK?*~}?~{#,1XX=HkV.#,OHFdKy0.#,N"SkV.FZ#,<yD+Kf5P#,RT>vU=JB!#JG9JJ<Hg4&E.#,5PHK?*;'#;:sHgMQMC#,5P2;<0>\!#~} - -~{;p9%5ZJ.6~~} - -~{KoWST;#:72;p9%SPNe#:R;T;;pHK#,6~T;;p;}#,H}T;;p~}?~{#,KDT;;p?b#,NeT;;p6S!#PP;p1XSPRr#,Rr1XKX>_!#7";pSPJ1#,Fp;pSPHU!#J1U_#,LlV.ToR2!#HUU_#,TBTZ;~!"1Z!"Rm!"~}?~{R2!#724KKDK^U_#,7gFpV.HUR2!#72;p9%#,1XRrNe;pV.1d6xS&V.#:;p7"l6DZ#,TrTgS&V.l6Mb#;;p7"6xFd1x>2U_#,4}6xNp9%#,<+Fd;pA&#,?I4S6x4SV.#,2;?I4STrIO!#;p?I7"l6Mb#,N^4}l6DZ#,RTJ17"V.#,;p7"IO7g#,N^9%OB7g#,Vg7g>C#,R97gV9!#72>|1XV*Ne;pV.1d#,RTJ}JXV.!#9JRT;pWt9%U_Cw#,RTK.Wt9%U_G?!#K.?IRT>x#,2;?IRT6a!#7rU=J$9%H!6x2;6hFd9&U_PW#,C|T;!07QAt!1!#9JT;#:CwVwBGV.#,A<=+6hV.#,7G@{2;6/#,7G5C2;SC#,7GN#2;U=!#Vw2;?IRTE-6xPKJ&#,=+2;?IRT~}?~{6x9%U=!#:Ol6@{6x6/#,2;:Ol6@{6xIO!#E-?IRT84O2#,~}?~{?IRT84K5#,Mv9z2;?IRT844f#,K@U_2;?IRT84Iz!#9JCwVwIwV.#,A<=+>/V.!#4K029zH+>|V.5@R2!#~} - -~{SC<d5ZJ.H}~} - -~{KoWST;#:~} ~{72PKJ&J.Mr#,3vUwG'@o#,0YPUV.7Q#,9+<RV.7n#,HU7QG'=p#,DZMbI'6/#,5!l65@B7#,2;5C2YJBU_#,F_J.Mr<R!#O`JXJ}Dj#,RTUyR;HUV.J$#,6x0.>tB;0Y=p#,2;V*5PV.GiU_#,2;HJV.VAR2#,7GCqV.=+R2#,7GVwV.WtR2#,7GJ$V.VwR2!#9JCw>}OM=+KyRT6/6xJ$HK#,3I9&3vl6~}?~{U_#,OHV*R2!#OHV*U_#,2;?IH!l69mIq#,2;?IOsl6JB#,2;?IQil66H#,1XH!l6HK#,V*5PV.GiU_R2!#9JSC<dSPNe#:SPRr<d#,SPDZ<d#,SP74<d#,SPK@<d#,SPIz<d!#Ne<d>cFp#,D*V*Fd5@#,JGN=Iq<M#,HK>}V.1&R2!#Og<dU_#,RrFdOgHK6xSCV.#;DZ<dU_#,RrFd9YHK6xSCV.#;74<dU_#,RrFd5P<d6xSCV.#;K@<dU_#,~}??~{JBl6Mb#,AnNaNEV*V.6x4+l65P<dR2#;Iz<dU_#,741(R2!#9JH}>|V.JB#,D*GWl6<d#,IMD*:ql6<d#,JBD*C\l6<d#,7GJ%OM2;D\SC<d#,7GHJRe2;D\J9<d#,7GN"Cn2;D\5C<dV.J5!#N"TUN"TU#!N^Ky2;SC<dR2!#<dJBN47"6xOHNEU_#,<dSkKy8fU_<fK@!#72>|V.KyS{;w#,3GV.KyS{9%#,HKV.KyS{I1#,1XOHV*FdJX=+!"WsSR!"~}?~{U_!"CEU_!"IaHKV.PUC{#,AnNa<d1XKwV*V.!#5P<dV.@4<dNRU_#,Rr6x@{V.#,5<6xIaV.#,9J74<d?I5C6xSCR2#;RrJG6xV*V.#,9JOg<d!"DZ<d?I5C6xJ9R2#;RrJG6xV*V.#,9JK@<d~}??~{JB#,?IJ98f5P#;RrJG6xV*V.#,9JIz<d?IJ9HgFZ!#Ne<dV.JB#,Vw1XV*V.#,V*V.1XTZl674<d#,9J74<d2;?I2;:qR2!#NtRsV.PKR2#,RAV?TZOD#;V\V.PKR2#,B@Q@TZRs!#9JCw>}OM=+#,D\RTIOVG~}?~{<dU_#,1X3I4s9&!#4K1xV.R*#,H}>|V.KyJQ6x6/R2!#~} diff --git a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt b/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt deleted file mode 100644 index e15fe5c1..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-gb-levels-1-and-2-utf-8.txt +++ /dev/null @@ -1,107 +0,0 @@ -This file was derived from -http://www.gutenberg.org/files/23864/23864-0.txt -after converting from Traditional Chinese to Simplified Chinese. --------- -始计第一 - -孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。 - -故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。 - -道者,令民与上同意,可与之死,可与之生,而不畏危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知者不胜。 - -故校之以计,而索其情,曰:主孰有道?将孰有能?天地孰得?法令孰行?兵?孰强?士卒孰练?赏罚孰明?吾以此知胜负矣。 - -将听吾计,用之必胜,留之;将不听吾计,用之必败,去之。 - -计利以听,乃?之势,以佐其外。势者,因利而制权也。 - -兵者,诡道也。故能而示之不能,用而示之不用,近而示之远,远而示之近。利而诱之,乱而取之,实而备之,强而避之,怒而挠之,卑而骄之,佚而劳之,亲而离之,攻其无备,出其不意。此兵家之胜,不可先传也。 - -夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜,少算不胜,而况无算乎!吾以此观之,胜负见矣。 - -作战第二 - -孙子曰:凡用兵之法,驰车千?,革车千乘,带甲十万,千里馈粮。则内外之费,宾客之用,胶漆之材,车甲之奉,日费千金,然后十万之师举矣。 - -其用战也,贵胜,久则钝兵挫锐,攻城则力屈,久暴师则国用不足。夫钝兵挫锐,屈力?货,则诸侯乘其弊而起,虽有智者,不能善其后矣。故兵闻拙速,未睹巧之久也。夫兵久而国利者,未之有也。故不尽知用兵之害者,则不能尽知用兵之利也。 - -善用兵者,役不再籍,粮不三载,取用於国,因粮於敌,故军食可足也。国之贫於师者远输,远输则百姓贫;近於师者贵卖,贵卖则百姓竭,财竭则急於丘役。力屈财?,中原内虚於家,百姓之费,十去其七;公家之费,破军罢马,甲胄矢弩,戟?矛?,丘牛大车,十去其六。 - -故智将务食於敌,食敌一钟,当吾二十钟;萁秆一石,当吾二十石。故杀敌者,怒也;取敌之利者,货也。故车战,得车十乘以上,赏其先得者,而更其旌旗。车杂而乘之,卒善而养之,是谓胜敌而益强。 - -故兵贵胜,不贵久。故知兵之将,民之司命。国家安危之主也。 - -谋攻第三 - -孙子曰:凡用兵之法,全国?上,破国次之;全军?上,破军次之;全旅?上,破旅次之;全卒?上,破卒次之;全伍?上,破伍次之。是故百战百胜,非善之善者也;不战而屈人之兵,善之善者也。 - -故上兵伐谋,其次伐交,其次伐兵,其下攻城。攻城之法,?不得已。修???,具器械,三月而后成;距?,又三月而后已。将不胜其忿,而蚁附之,杀士三分之一,而城不拔者,此攻之灾也。 - -故善用兵者,屈人之兵,而非战也,拔人之城而非攻也,毁人之国而非久也,必以全争於天下,故兵不顿而利可全,此谋攻之法也。 - -故用兵之法,十则围之,五则攻之,倍则分之,敌则能战之,少则能逃之,不若则能避之。故小敌之坚,大敌之擒也。 - -夫将者,国之辅也。辅周则国必强,辅隙则国必弱。故君之所以患於军者三:不知军之不可以进而谓之进,不知军之不可以退而谓之退,是谓縻军;不知三军之事,而同三军之政,则军士惑矣;不知三军之权,而同三军之任,则军士疑矣。三军既惑且疑,则诸侯之难至矣。是谓乱军引胜。 - -故知胜有五:知可以战与不可以战者,胜。识?寡之用者,胜。上下同欲者,胜。以虞待不虞者,胜。将能而君不御者,胜。此五者,知胜之道也。 - -故曰:知己知彼,百战不?;不知彼而知己,一胜一负;不知彼不知己,每战必败。 - -军形第四 - -孙子曰:昔之善战者,先?不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能?不可胜,不能使敌必可胜。故曰:胜可知,而不可?。 - -不可胜者,守也;可胜者,攻也。守则不足,攻则有?。善守者,藏於九地之下,善攻者,动於九天之上,故能自保而全胜也。 - -见胜不过?人之所知,非善之善者也;战胜而天下曰善,非善之善者也。故举秋毫不?多力,见日月不?明目,闻雷霆不?聪耳。古之善战者,胜於易胜者也。故善战者之胜也,无智名,无勇功,故其战胜不忒。不忒者,其所措必胜,胜已败者也。故善战者,先立於不败之地,而不失敌之败也。是故胜兵先胜,而后求战,败兵先战而后求胜。善用兵者,修道而保法,故能?胜败之政。 - -兵法:一曰度,二曰量,三曰数,四曰称,五曰胜。地生度,度生量,量生数,数生称,称生胜。故胜兵若以?称?,败兵若以?称?。胜者之战,若决积水於千仞之?者,形也。 - -兵势第五 - -孙子曰:凡治?如治寡,分数是也;斗?如斗寡,形名是也;三军之?,可使必受敌而无败者,奇正是也;兵之所加,如以?投卵者,虚实是也。 - -凡战者,以正合,以奇胜。故善出奇者,无穷如天地,不竭如江海。终而复始,日月是也。死而?生,四时是也。声不过五,五声之变,不可胜听也;色不过五,五色之变,不可胜观也;味不过五,五味之变,不可胜尝也;战势,不过奇正,奇正之变,不可胜穷也。奇正相生,如循环之无端,熟能穷之哉? - -激水之疾,至於漂石者,势也;?鸟之疾,至於毁折者,节也。是故善战者,其势险,其节短。势如张弩,节如发机。 - -纷纷??,斗乱而不可乱也;浑浑沌沌,形圆而不可败也。乱生於治,怯生於勇,弱生於强。治乱,数也;勇怯,势也;强弱,形也。故善动敌者,形之,敌必从之;予之,敌必取之。以利动之,以卒待之。 - -故善战者,求之於势,不责於人;故能择人而任势。任势者,其战人也,如转木石。木石之性,安则静,危则动,方则止,圆则行。故善战人之势,如转圆石於千仞之山者,势也。 - -虚实第六 - -孙子曰:凡先处战地而待敌者佚,后处战地而趋战者劳。 - -故善战者,致人而不致於人。能使敌人自至者,利之也;能使敌人不得至者,害之也。故敌佚能劳之,饱能饥之,安能动之。出其所必趋,趋其所不意。行千里而不劳者,行於无人之地也;攻而必取者,攻其所不守也。守而必固者,守其所不攻也。 - -故善攻者,敌不知其所守;善守者,敌不知其所攻。微乎微乎,至於无形;神乎神乎,至於无声,故能?敌之司命。进而不可御者,冲其虚也;退而不可追者,速而不可及也。故我欲战,敌虽高垒深沟,不得不与我战者,攻其所必救也;我不欲战,虽画地而守之,敌不得与我战者,乖其所之也。故形人而我无形,则我专而敌分。我专?一,敌分?十,是以十攻其一也。则我?敌寡,能以?击寡者,则吾之所与战者约矣。吾所与战之地不可知,不可知则敌所备者多,敌所备者多,则吾所与战者寡矣。故备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。寡者,备人者也;?者,使人备己者也。故知战之地,知战之日,则可千里而会战;不知战之地,不知战日,则左不能救右,右不能救左,前不能救后,后不能救前,而况远者数十里,近者数里乎!以吾度之,越人之兵虽多,亦奚益於胜哉!故曰:胜可?也。敌虽?,可使无斗。故策之而知得失之计,候之而知动静之理,形之而知死生之地,角之而知有?不足之处。故形兵之极,至於无形。无形则深间不能窥,智者不能谋。因形而措胜於?,?不能知。人皆知我所以胜之形,而莫知吾所以制胜之形。故其战胜不?,而应形於无穷。夫兵形象水,水之行避高而趋下,兵之形避实而击虚;水因地而制流,兵因敌而制胜。故兵无常势,水无常形。能因敌变化而取胜者,谓之神。故五行无常胜,四时无常位,日有短长,月有死生。 - -军争第七 - -孙子曰: 凡用兵之法,将受命於君,合军聚?,交和而舍,莫难於军争。军争之难者,以迂?直,以患?利。故迂其途,而诱之以利,后人发,先人至,此知迂直之计者也。军争?利,军争?危。举军而争利则不及,委军而争利则?重捐。是故?甲而趋,日夜不处,倍道兼行,百?而争利,则擒三将军,劲者先,疲者后,其法十一而至;五十里而争利,则蹶上将军,其法半至;三十里而争利,则三分之二至。是故军无?重则亡,无粮食则亡,无委积则亡。故不知诸侯之谋者,不能豫交;不知山林、险阻、沮泽之形者,不能行军;不用乡导者,不能得地利。故兵以诈立,以利动,以分和?变者也。故其疾如风,其徐如林,侵掠如火,不动如山,难知如阴,动如雷震。掠乡分?,廓地分利,悬权而动。先知迂直之计者胜,此军争之法也。《军政》曰:“言不相闻,故?之金鼓;视不相见,故?之旌旗。”夫金鼓旌旗者,所以一民之耳目也。民既专一,则勇者不得独进,怯者不得独退,此用?之法也。故夜战多金鼓,昼战多旌旗,所以变人之耳目也。三军可夺气,将军可夺心。是故朝气锐,昼气惰,暮气归。善用兵者,避其锐气,击其惰归,此治气者也。以治待乱,以静待哗,此治心者也。以近待远,以佚待劳,以饱待饥,此治力者也。无邀正正之旗,无击堂堂之陈,此治变者也。故用兵之法,高陵勿向,背丘勿逆,佯北勿从,锐卒勿攻,饵兵勿食,归师勿遏,围师遗?,穷寇勿迫,此用兵之法也。 - -九变第八 - -孙子曰: 凡用兵之法,将受命於君,合军聚合。泛地无舍,衢地合交,绝地无留,围地则谋,死地则战,途有所不由,军有所不击,城有所不攻,地有所不争,君命有所不受。故将通於九变之利者,知用兵矣;将不通九变之利,虽知地形,不能得地之利矣;治兵不知九变之术,虽知五利,不能得人之用矣。是故智者之虑,必杂於利害,杂於利而务可信也,杂於害而患可解也。是故屈诸侯者以害,役诸侯者以业,趋诸侯者以利。故用兵之法,无恃其不来,恃吾有以待之;无恃其不攻,恃吾有所不可攻也。故将有五危,必死可杀,必生可虏,忿速可侮,廉洁可辱,爱民可烦。凡此五者,将之过也,用兵之灾也。覆军杀将,必以五危,不可不察也。 - -行军第九 - -孙子曰:凡处军相敌,绝山依?,视生处高,战隆无登,此处山之军也。绝水必远水,客绝水而来,勿迎之於水内,令半渡而击之利,欲战者,无附於水而迎客,视生处高,无迎水流,此处水上之军也。绝斥泽,唯亟去无留,若交军於斥泽之中,必依水草而背?树,此处斥泽之军也。平陆处易,右背高,前死后生,此处平陆之军也。凡此四军之利,黄帝之所以胜四帝也。凡军好高而恶下,贵阳而贱阴,养生而处实,军无百疾,是谓必胜。丘陵堤防,必处其阳而右背之,此兵之利,地之助也。上雨水流至,欲涉者,待其定也。凡地有绝涧、天井、天牢、天罗、天陷、天隙,必亟去之,勿近也。吾远之,敌近之;吾迎之,敌背之。军旁有险阻、潢井、蒹葭、小林、??者,必谨覆索之,此伏?之所处也。敌近而静者,恃其险也;远而挑战者,欲人之进也;其所居易者,利也;?树动者,来也;?草多障者,疑也;鸟起者,伏也;兽骇者,覆也;尘高而锐者,车来也;卑而广者,徒来也;散而条达者,樵?也;少而往来者,营军也;辞卑而备者,进也;辞强而进驱者,退也;轻车先出居其侧者,陈也;无约而请和者,谋也;奔走而陈兵者,期也;半进半退者,诱也;杖而立者,饥也;汲而先饮者,渴也;见利而不进者,劳也;鸟集者,虚也;夜呼者,恐也;军扰者,将不重也;旌旗动者,乱也;吏怒者,倦也;杀马肉食者,军无粮也;悬?不返其舍者,穷寇也;谆谆翕翕,徐与人言者,失?也;数赏者,窘也;数罚者,困也;先暴而后畏其?者,不精之至也;来委谢者,欲休息也。兵怒而相迎,久而不合,又不相去,必谨察之。兵非贵益多也,惟无武进,足以并力料敌取人而已。夫惟无虑而易敌者,必擒於人。卒未亲而罚之,则不服,不服则难用。卒已亲附而罚不行,则不可用。故合之以文,齐之以武,是谓必取。令素行以教其民,则民服;令素不行以教其民,则民不服。令素行者,与?相得也。 - -地形第十 - -孙子曰:地形有通者、有?者、有支者、有隘者、有险者、有远者。我可以往,彼可以来,曰通。通形者,先居高阳,利粮道,以战则利。可以往,难以返,曰?。?形者,敌无备,出而胜之,敌若有备,出而不胜,难以返,不利。我出而不利,彼出而不利,曰支。支形者,敌虽利我,我无出也,引而去之,令敌半出而击之利。隘形者,我先居之,必盈之以待敌。若敌先居之,盈而勿从,不盈而从之。险形者,我先居之,必居高阳以待敌;若敌先居之,引而去之,勿从也。远形者,势均难以挑战,战而不利。凡此六者,地之道也,将之至任,不可不察也。凡兵有走者、有驰者、有陷者、有崩者、有乱者、有北者。凡此六者,非天地之灾,将之过也。夫势均,以一击十,曰走;卒强吏弱,曰驰;吏强卒弱,曰陷;大吏怒而不服,遇敌?而自战,将不知其能,曰崩;将弱不严,教道不明,吏卒无常,陈兵纵横,曰乱;将不能料敌,以少合?,以弱击强,兵无选锋,曰北。凡此六者,败之道也,将之至任,不可不察也。夫地形者,兵之助也。料敌制胜,计险隘远近,上将之道也。知此而用战者必胜,不知此而用战者必败。故战道必胜,主曰无战,必战可也;战道不胜,主曰必战,无战可也。故进不求名,退不避罪,唯民是保,而利於主,国之宝也。视卒如婴儿,故可以与之赴深溪;视卒如爱子,故可与之俱死。厚而不能使,爱而不能令,乱而不能治,譬若骄子,不可用也。知吾卒之可以击,而不知敌之不可击,胜之半也;知敌之可击,而不知吾卒之不可以击,胜之半也;知敌之可击,知吾卒之可以击,而不知地形之不可以战,胜之半也。故知兵者,动而不迷,举而不穷。故曰:知彼知己,胜乃不殆;知天知地,胜乃可全。 - -九地第十一 - -孙子曰:用兵之法,有散地,有轻地,有争地,有交地,有衢地,有重地,有泛地,有围地,有死地。诸侯自战其地者,?散地;入人之地不深者,?轻地;我得亦利,彼得亦利者,?争地;我可以往,彼可以来者,?交地;诸侯之地三属,先至而得天下?者,?衢地;入人之地深,背城邑多者,?重地;山林、险阻、沮泽,凡难行之道者,?泛地;所由入者隘,所从归者迂,彼寡可以击吾之?者,?围地;疾战则存,不疾战则亡者,?死地。是故散地则无战,轻地则无止,争地则无攻,交地则无绝,衢地则合交,重地则掠,泛地则行,围地则谋,死地则战。古之善用兵者,能使敌人前后不相及,?寡不相恃,贵贱不相救,上下不相收,卒离而不集,兵合而不齐。合於利而动,不合於利而止。敢问敌?而整将来,待之若何曰:先夺其所爱则听矣。兵之情主速,乘人之不及。由不虞之道,攻其所不戒也。凡?客之道,深入则专。主人不克,掠於饶野,三军足食。谨养而勿劳,并气积力,运兵计谋,?不可测。投之无所往,死且不北。死焉不得,士人尽力。兵士甚陷则不惧,无所往则固,深入则拘,不得已则斗。是故其兵不修而戒,不求而得,不约而亲,不令而信,禁祥去疑,至死无所之。吾士无?财,非恶货也;无?命,非恶寿也。令发之日,士卒坐者涕沾襟,偃卧者涕交颐,投之无所往,诸、?之勇也。故善用兵者,譬如率然。率然者,常山之蛇也。击其首则尾至,击其尾则首至,击其中则首尾俱至。敢问兵可使如率然乎?曰可。夫吴人与越人相恶也,当其同舟而济而遇风,其相救也如左右手。是故方马埋轮,未足恃也;齐勇如一,政之道也;刚柔皆得,地之理也。故善用兵者,携手若使一人,不得已也。将军之事,静以幽,正以治,能愚士卒之耳目,使之无知;易其事,革其谋,使人无识;易其居,迂其途,使民不得虑。帅与之期,如登高而去其梯;帅与之深入诸侯之地,而发其机。若驱群羊,驱而往,驱而来,莫知所之。聚三军之?,投之於险,此谓将军之事也。九地之变,屈伸之力,人情之理,不可不察也。凡?客之道,深则专,浅则散。去国越境而师者,绝地也;四彻者,衢地也;入深者,重地也;入浅者,轻地也;背固前隘者,围地也;无所往者,死地也。是故散地吾将一其志,轻地吾将使之属,争地吾将趋其后,交地吾将谨其守,交地吾将固其结,衢地吾将谨其恃,重地吾将继其食,泛地吾将进其途,围地吾将塞其?,死地吾将示之以不活。故兵之情:围则御,不得已则斗,过则从。是故不知诸侯之谋者,不能预交;不知山林、险阻、沮泽之形者,不能行军;不用乡导,不能得地利。四五者,一不知,非霸王之兵也。夫霸王之兵,伐大国,则其?不得聚;威加於敌,则其交不得合。是故不争天下之交,不养天下之权,信己之私,威加於敌,则其城可拔,其国可隳。施无法之赏,悬无政之令。犯三军之?,若使一人。犯之以事,勿告以言;犯之以害,勿告以利。投之亡地然后存,陷之死地然后生。夫?陷於害,然后能?胜败。故?兵之事,在顺详敌之意,并敌一向,千里杀将,是谓巧能成事。是故政举之日,夷关折符,无通其使,厉於廊庙之上,以诛其事。敌人开?,必亟入之,先其所爱,微与之期,践墨随敌,以决战事。是故始如处女,敌人开户;后如脱兔,敌不及拒。 - -火攻第十二 - -孙子曰:凡火攻有五:一曰火人,二曰火积,三曰火?,四曰火库,五曰火队。行火必有因,因必素具。发火有时,起火有日。时者,天之燥也。日者,月在箕、壁、翼、?也。凡此四宿者,风起之日也。凡火攻,必因五火之变而应之:火发於内,则早应之於外;火发而其兵静者,待而勿攻,极其火力,可从而从之,不可从则上。火可发於外,无待於内,以时发之,火发上风,无攻下风,昼风久,夜风止。凡军必知五火之变,以数守之。故以火佐攻者明,以水佐攻者强。水可以绝,不可以夺。夫战胜攻取而不惰其功者凶,命曰“费留”。故曰:明主虑之,良将惰之,非利不动,非得不用,非危不战。主不可以怒而兴师,将不可以?而攻战。合於利而动,不合於利而上。怒可以复喜,?可以复说,亡国不可以复存,死者不可以复生。故明主慎之,良将警之。此安国全军之道也。 - -用间第十三 - -孙子曰: 凡兴师十万,出征千里,百姓之费,公家之奉,日费千金,内外骚动,怠於道路,不得操事者,七十万家。相守数年,以争一日之胜,而爱爵禄百金,不知敌之情者,不仁之至也,非民之将也,非主之佐也,非胜之主也。故明君贤将所以动而胜人,成功出於?者,先知也。先知者,不可取於鬼神,不可象於事,不可验於度,必取於人,知敌之情者也。故用间有五:有因间,有内间,有反间,有死间,有生间。五间俱起,莫知其道,是谓神纪,人君之宝也。乡间者,因其乡人而用之;内间者,因其官人而用之;反间者,因其敌间而用之;死间者,??事於外,令吾闻知之而传於敌间也;生间者,反报也。故三军之事,莫亲於间,赏莫厚於间,事莫密於间,非圣贤不能用间,非仁义不能使间,非微妙不能得间之实。微哉微哉!无所不用间也。间事未发而先闻者,间与所告者兼死。凡军之所欲击,城之所欲攻,人之所欲杀,必先知其守将、左右、?者、门者、舍人之姓名,令吾间必索知之。敌间之来间我者,因而利之,导而舍之,故反间可得而用也;因是而知之,故乡间、内间可得而使也;因是而知之,故死间??事,可使告敌;因是而知之,故生间可使如期。五间之事,主必知之,知之必在於反间,故反间不可不厚也。昔殷之兴也,伊挚在夏;周之兴也,吕牙在殷。故明君贤将,能以上智?间者,必成大功。此兵之要,三军之所恃而动也。 diff --git a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt b/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt deleted file mode 100644 index ef38e4b6..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-gbk.txt +++ /dev/null @@ -1,107 +0,0 @@ -This file was derived from -http://www.gutenberg.org/files/23864/23864-0.txt -after converting from Traditional Chinese to Simplified Chinese. --------- -ʼƵһ - -Իߣ֮£֮أ֮ɲҲ - -ʾ֮£У֮Լƣ飺һԻԻ죬ԻأԻԻ - -ߣͬ⣬֮֮ηΣҲߣʱҲߣԶסҲߣǡšʡ¡ҲߣơٵҲߣĪţ֪֮ʤ֪߲ʤ - -У֮Լƣ飬ԻеܣãУǿʿͷԴ֪ʤӡ - -ƣ֮ʤ֮ƣ֮ذܣȥ֮ - -˞֮ƣ⡣ߣȨҲ - -ߣҲܶʾ֮ܣöʾ֮ãʾ֮ԶԶʾ֮֮Ҷȡ֮ʵ֮ǿ֮ŭ֮֮֮׶֮ޱ䲻⡣˱֮ʤȴҲ - -δսʤߣҲδս㲻ʤߣҲʤ㲻ʤԴ˹֮ʤӡ - -սڶ - -Իñ֮۳ǧ񆣬ﳵǧˣʮǧ֮ѣ֮ã֮ģ֮շǧȻʮ֮ʦӡ - -սҲʤ۱񣬹ñʦò㡣۱׶ߣӡʱ׾٣δ֮Ҳöߣδ֮Ҳʲ֪ñ֮ߣܾ֪ñ֮Ҳ - -ñߣ۲ټأȡ춹춵УʾʳҲ֮ƶʦԶ䣬Զƶʦ߹սߣƽۡƚԭ춼ң֮ѣʮȥߣ֮ѣƾʸꪘJìţ󳵣ʮȥ - -ǽʳ춵УʳһӣʮӣݽһʯʮʯɱߣŭҲȡ֮ߣҲʳսóʮϣȵߣ졣Ӷ֮ƶ֮νʤжǿ - -ʱʤá֪֮֮˾ҰΣ֮Ҳ - -ı - -Իñ֮ȫϣƹ֮ȫϣƾ֮ȫÞϣô֮ȫϣ֮ȫϣ֮ǹʰսʤ֮Ҳս֮֮Ҳ - -ϱıηη¹ǡ֮鲻ѡޙMݜе¶ɣ鞣¶ѡʤޣϸ֮ɱʿ֮һDzߣ˹֮Ҳ - -ñߣ֮սҲ֮ǶǹҲ֮ǾҲȫ£ʱٶȫı֮Ҳ - -ñ֮ʮΧ֮֮֮սܱ֮֮֮С֮ᣬ֮Ҳ - -ߣ֮Ҳǿ϶ʾ֮Ի춾֪֮Խν֪֮֮˶ν֮ˣν֪֮£֮ͬʿӣ֪֮Ȩ֮ͬΣʿӡȻɣ֮ӡνҾʤ - -֪ʤ壺֪ս벻սߣʤʶ֮ߣʤͬߣʤݴߣʤܶߣʤߣ֪ʤ֮Ҳ - -Ի֪֪ˣսO֪˶֪һʤһ֪˲֪ÿսذܡ - -ε - -Ի֮սߣȞ鲻ʤԴ֮ʤʤڼʤڵСսߣܞ鲻ʤʹбؿʤԻʤ֪ɞ顣 - -ʤߣҲʤߣҲ㣬Nߣ춾ŵ֮£ƹߣ춾֮ϣԱȫʤҲ - -ʤ֪֮֮ҲսʤԻƣ֮Ҳʾ²Ŀ϶֮սߣʤʤҲս֮ʤҲ¹սʤ߯߯ߣʤʤѰҲսߣ춲֮أʧ֮Ҳǹʤʤսܱսʤñߣ޵ܞʤ֮ - -һԻȣԻԻԻƣԻʤȣƣʤʤ愳㏣ܱ㏳愡ʤ֮սˮǧ֮GߣҲ - -Ƶ - -ԻαιѣҲ綷ѣҲ֮ʹܵжްߣҲ֮ӣԴVͶߣʵҲ - -սߣϣʤƳߣأ罭նʼҲʱҲ壬֮䣬ʤҲɫ壬ɫ֮䣬ʤҲζ壬ζ֮䣬ʤҲսƣ֮䣬ʤҲѭ֮޶ˣ֮գ - -ˮ֮ƯʯߣҲv֮춻ߣҲǹսߣգڶ̡󣬽緢 - -׷׼ҶҲ磬ԲɰҲΣ£ǿңҲӣҲǿҲƶߣ֮бش֮֮бȡ֮֮֮ - -սߣ֮ƣˣ˶ơߣսҲתľʯľʯ֮ԣ򾲣Σ򶯣ֹԲСս֮ƣתԲʯǧ֮ɽߣҲ - -ʵ - -Իȴսضսضս͡ - -սߣ˶ˡʹߣ֮Ҳʹ˲ߣ֮Ҳʵܼ֮֮֮ܶ⡣ǧߣ֮ҲȡߣҲضعߣҲ - -ƹߣв֪أߣв֪΢΢Σܞ֮˾ߣҲ˶׷ߣٶɼҲսòսߣؾҲҲս仭ض֮вսߣ֮Ҳ˶Σרз֡רһз֞ʮʮһҲұйѣԱߣ֮սԼӡս֮ز֪֪߶࣬߶࣬ս߹ӡʱǰѣǰѣҹѣѣѡߣҲߣʹ˱Ҳ֪ս֮أ֪ս֮գǧս֪ս֮أ֪սգܾңҲܾǰܾȺ󣬺ܾǰԶʮ֮Խ֮࣬ʤգԻʤɞҲ䱊ʹ޶ʲ֪֮ʧ֮ƣ֪֪֮֮֮֮أ֪֮N֮α֮Ρ䲻߲ܿıζʤ춱֪˽֪ʤ֮ΣĪ֪ʤ֮ΡսʤͣӦˮˮ֮бܸ߶£֮αʵ飻ˮضжʤʱ޳ƣˮ޳Ρб仯ȡʤߣν֮񡣹޳ʤʱ޳λж̳ - - - -Ի ñ֮춾Ͼ۱ͶᣬĪ춾֮ߣ؞ֱԻ;֮˷ֱ֪֮ҲΣپ򲻼ίwؾ衣ǹʒԼ׶ҹУeȣƣߺ䷨ʮһʮϽ䷨ʮ֮ǹʾwʳίʲ֪֮ıߣԥ֪ɽ֡衢֮ߣо絼ߣܵõʱթԷֺ͞Ҳ伲磬֣𣬲ɽֱ֪طȨֱ֪֮ʤ˾֮ҲԻԲţʞ֮ģӲʞ֮졣ߣһ֮ĿҲרһ߲ö߲öˣñ֮Ҳҹսģս죬Ա֮ĿҲɶɶġǹʳ裬ĺ顣ñߣ飬ҲδңԾҲԽԶͣԱҲ֮죬޻֮£αҲñ֮򣬱棬ӣ𹥣ʳʦΧʦIȣñ֮Ҳ - -űڰ - -Ի ñ֮춾ϾۺϡᣬغϽΧıս;ɣܡʽͨ춾ű֮ߣ֪ñӣͨű֪֮Σܵõ֮ӣα֪ű֪֮֮ܵӡǹ֮ǣҲ춺ɽҲǹԺҵñ֮䲻Դ֮䲻ɹҲʽΣɱ²ٿ꣬裬ɷߣ֮Ҳñ֮ҲɱΣɲҲ - -оھ - -ԻУɽYߣս¡޵ǣ˴ɽ֮ҲˮԶˮ;ˮӭ֮ˮڣɶ֮սߣ޸ˮӭͣߣӭˮ˴ˮ֮ҲΨؽȥ춳֮Уˮݶ˴֮Ҳƽ½ףұߣǰ˴ƽ½֮Ҳľ֮Ƶ֮ʤĵҲø߶£ʵްټνʤ̷شұ֮˱֮֮Ҳˮߣ䶨Ҳо쾮Ρޡݡ϶ؽȥ֮ҲԶ֮н֮ӭ֮б֮衢꾮硢С֡[Cߣؽ֮˷֮ҲнߣҲԶսߣ֮ҲߣҲߣҲݶߣҲߣҲ޺ߣҲ߶ߣҲߣͽҲɢߣԒҲٶߣӪҲDZߣҲǿߣҲᳵȳߣҲԼߣıҲ߶±ߣҲߣҲȶߣҲߣҲߣҲߣҲҹߣҲߣҲ춯ߣҲŭߣҲɱʳߣҲIߣҲ׻׻⣬ߣʧҲߣҲߣҲȱη䱊ߣ֮ҲίлߣϢҲŭӭöϣֲȥؽ֮ǹҲΩԲϵȡ˶ѡΩǶ׵ߣˡδ׶֮򲻷á׸У򲻿áʺ֮ģ֮䣬νȡԽزԽ񲻷ߣ뱊Ҳ - -εʮ - -ԻͨߡВߡ֧ߡаߡߡԶߡҿ˿ԻͨͨߣȾӸսԷԻ졣ߣޱʤ֮бʤԷҳ˳Ի֧֧ߣң޳Ҳȥ֮а֮ߣȾ֮ӯ֮ԴСȾ֮ӯӣӯ֮ߣȾ֮ؾӸԴУȾ֮ȥ֮ҲԶߣƾսսߣ֮Ҳ֮ΣɲҲߡгߡߡбߡߡбߡߣ֣֮֮ҲƾһʮԻߣǿԻۣǿԻݣŭБս֪ܣԻϣ̵޳±ݺᣬԻңϵУٺϱǿѡ棬Իߣ֮Ҳ֮ΣɲҲߣ֮ҲϵʤհԶϽ֮Ҳ֪˶ս߱ʤ֪˶ս߱ذܡսʤԻսսҲսʤԻսսҲʽ˲ΨDZ֮ҲӤʿ֮Ϫ簮ӣʿ֮ʹҶΣƩӣҲ֪֮Ի֪֮ɻʤ֮Ҳ֪֮ɻ֪֮Իʤ֮Ҳ֪֮ɻ֪֮Ի֪֮սʤ֮Ҳ֪ߣԣٶԻ֪֪ʤ˲֪֪أʤ˿ȫ - -ŵصʮһ - -Իñ֮ɢأأأнأأصأзأΧأءսߣɢأ֮زߣأҵ˵ߣأҿ˿ߣ齻أ֮±ߣأ֮ضߣصأɽ֡衢󣬷֮ߣ鷺أ߰ӹأ˹ѿԻ֮ߣΧأս棬սߣءǹɢսֹ޹޾ϽصӣУΧıս֮ñߣʹǰ༰Ѳѣȣ²գ϶롣ֹʵб֮Իȶӡ֮٣֮ɲ֮Ҳ֮ר˲ˣҰʳͣ˱ı鲻ɲ⡣Ͷ֮Ҳɲãʿ˾ʿ򲻾壬̣У򶷡ǹ޶䣬ãԼףţȥɣ֮ʿNƣǶҲNǶҲ֮գʿմ齻ãͶ֮֮ҲñߣƩȻȻߣɽ֮ҲβββʱʹȻԻɡԽҲͬ۶ö磬Ҳ֡ǹʷ֣δҲһ֮ҲԵã֮ҲñߣЯʹһˣҲ֮£ģΣʿ֮Ŀʹ֪֮£ıʹʶӣ;ʹ񲻵ǡ˧֮ڣǸ߶ȥݣ˧֮֮أȺĪ֪֮֮Ͷ֮գν֮Ҳŵ֮䣬֮֮ɲҲ֮רdzɢȥԽʦߣҲijߣҲߣصҲdzߣҲǰߣΧҲߣҲǹɢὫһ־Ὣʹ֮Ὣ󣬽ὫأὫᣬὫѣصὫʳὫ;ΧὫIὫʾ֮Բʱ֮飺Χ򶷣ӡǹʲ֪֮ıߣԤ֪ɽ֡衢֮ߣо絼ܵõߣһ֪ǰ֮Ҳ֮䱊þۣ춵У佻úϡǹʲ֮֮Ȩż֮˽춵УǿɰΣġʩ޷֮֮ͣ֮ʹһˡ֮£ԣ֮ԺͶ֮Ȼ棬֮Ȼ춺Ȼܞʤܡʞ֮£˳֮⣬һǧɱνܳ¡ǹ֮գĹ۷ͨʹ֮ϣ¡˿Hؽ֮΢֮ڣīУԾս¡ǹʼ紦Ů˿ãвܡ - -𹥵ʮ - -Ի壺һԻˣԻԻwԻ⣬Իӡлؾߡʱաʱߣ֮ҲߣڻڡFҲߣ֮Ҳ𹥣֮Ӧ֮ڣӦ֮⣻𷢶ߣ𹥣ɴӶ֮ɴϡɷ⣬޴ڣʱ֮Ϸ磬޹·磬ãҹֹ֪֮䣬֮ԻˮǿˮԾԶᡣսʤȡ书ףԻԻ֮֮ǵòãΣսŭʦԑCսϡŭԸϲCԸ˵Ը棬߲Ը֮֮˰ȫ֮Ҳ - -üʮ - -Ի ʦʮ򣬳ǧ֮ѣ֮շǧɧ춵·òߣʮҡ꣬һ֮ʤ»ٽ𣬲֪֮ߣ֮Ҳ֮Ҳ֮Ҳʤ֮ҲͽԶʤˣɹ춱ߣ֪Ҳ֪ߣȡ춹񣬲£춶ȣȡˣ֪֮Ҳü壺䣬ڼ䣬з䣬䣬䡣Ī֪νͣ˾֮Ҳߣ˶֮ڼߣ˶֮ߣм֮ߣN⣬֪֮춵мҲߣҲ֮£Ī춼䣬Ī춼䣬Ī춼䣬ʥͲü䣬岻ʹ䣬΢ܵü֮ʵ΢΢գüҲδߣ߼֮֮֮ɱ֪ؽҡ]ߡߡ֪֮֮м֮ߣ֮֮ʷɵöҲǶ֪֮䡢ڼɵöʹҲǶ֪֮N£ʹУǶ֪֮ʹڡ֮£֪֪֮֮춷䣬ʷ䲻ɲҲ֮Ҳֿģ֮Ҳ󡣹ͽǞߣسɴ󹦡˱֮Ҫ֮ѶҲ diff --git a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt b/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt deleted file mode 100644 index 375e1adb..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-simplified-utf-8.txt +++ /dev/null @@ -1,107 +0,0 @@ -This file was derived from -http://www.gutenberg.org/files/23864/23864-0.txt -after converting from Traditional Chinese to Simplified Chinese. --------- -始计第一 - -孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。 - -故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。 - -道者,令民与上同意,可与之死,可与之生,而不畏危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知者不胜。 - -故校之以计,而索其情,曰:主孰有道?将孰有能?天地孰得?法令孰行?兵眾孰强?士卒孰练?赏罚孰明?吾以此知胜负矣。 - -将听吾计,用之必胜,留之;将不听吾计,用之必败,去之。 - -计利以听,乃為之势,以佐其外。势者,因利而制权也。 - -兵者,诡道也。故能而示之不能,用而示之不用,近而示之远,远而示之近。利而诱之,乱而取之,实而备之,强而避之,怒而挠之,卑而骄之,佚而劳之,亲而离之,攻其无备,出其不意。此兵家之胜,不可先传也。 - -夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜,少算不胜,而况无算乎!吾以此观之,胜负见矣。 - -作战第二 - -孙子曰:凡用兵之法,驰车千駟,革车千乘,带甲十万,千里馈粮。则内外之费,宾客之用,胶漆之材,车甲之奉,日费千金,然后十万之师举矣。 - -其用战也,贵胜,久则钝兵挫锐,攻城则力屈,久暴师则国用不足。夫钝兵挫锐,屈力殫货,则诸侯乘其弊而起,虽有智者,不能善其后矣。故兵闻拙速,未睹巧之久也。夫兵久而国利者,未之有也。故不尽知用兵之害者,则不能尽知用兵之利也。 - -善用兵者,役不再籍,粮不三载,取用於国,因粮於敌,故军食可足也。国之贫於师者远输,远输则百姓贫;近於师者贵卖,贵卖则百姓竭,财竭则急於丘役。力屈财殫,中原内虚於家,百姓之费,十去其七;公家之费,破军罢马,甲胄矢弩,戟楯矛櫓,丘牛大车,十去其六。 - -故智将务食於敌,食敌一钟,当吾二十钟;萁秆一石,当吾二十石。故杀敌者,怒也;取敌之利者,货也。故车战,得车十乘以上,赏其先得者,而更其旌旗。车杂而乘之,卒善而养之,是谓胜敌而益强。 - -故兵贵胜,不贵久。故知兵之将,民之司命。国家安危之主也。 - -谋攻第三 - -孙子曰:凡用兵之法,全国為上,破国次之;全军為上,破军次之;全旅為上,破旅次之;全卒為上,破卒次之;全伍為上,破伍次之。是故百战百胜,非善之善者也;不战而屈人之兵,善之善者也。 - -故上兵伐谋,其次伐交,其次伐兵,其下攻城。攻城之法,為不得已。修櫓轒轀,具器械,三月而后成;距闉,又三月而后已。将不胜其忿,而蚁附之,杀士三分之一,而城不拔者,此攻之灾也。 - -故善用兵者,屈人之兵,而非战也,拔人之城而非攻也,毁人之国而非久也,必以全争於天下,故兵不顿而利可全,此谋攻之法也。 - -故用兵之法,十则围之,五则攻之,倍则分之,敌则能战之,少则能逃之,不若则能避之。故小敌之坚,大敌之擒也。 - -夫将者,国之辅也。辅周则国必强,辅隙则国必弱。故君之所以患於军者三:不知军之不可以进而谓之进,不知军之不可以退而谓之退,是谓縻军;不知三军之事,而同三军之政,则军士惑矣;不知三军之权,而同三军之任,则军士疑矣。三军既惑且疑,则诸侯之难至矣。是谓乱军引胜。 - -故知胜有五:知可以战与不可以战者,胜。识眾寡之用者,胜。上下同欲者,胜。以虞待不虞者,胜。将能而君不御者,胜。此五者,知胜之道也。 - -故曰:知己知彼,百战不貽;不知彼而知己,一胜一负;不知彼不知己,每战必败。 - -军形第四 - -孙子曰:昔之善战者,先為不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能為不可胜,不能使敌必可胜。故曰:胜可知,而不可為。 - -不可胜者,守也;可胜者,攻也。守则不足,攻则有餘。善守者,藏於九地之下,善攻者,动於九天之上,故能自保而全胜也。 - -见胜不过眾人之所知,非善之善者也;战胜而天下曰善,非善之善者也。故举秋毫不為多力,见日月不為明目,闻雷霆不為聪耳。古之善战者,胜於易胜者也。故善战者之胜也,无智名,无勇功,故其战胜不忒。不忒者,其所措必胜,胜已败者也。故善战者,先立於不败之地,而不失敌之败也。是故胜兵先胜,而后求战,败兵先战而后求胜。善用兵者,修道而保法,故能為胜败之政。 - -兵法:一曰度,二曰量,三曰数,四曰称,五曰胜。地生度,度生量,量生数,数生称,称生胜。故胜兵若以鎰称銖,败兵若以銖称鎰。胜者之战,若决积水於千仞之谿者,形也。 - -兵势第五 - -孙子曰:凡治眾如治寡,分数是也;斗眾如斗寡,形名是也;三军之眾,可使必受敌而无败者,奇正是也;兵之所加,如以碫投卵者,虚实是也。 - -凡战者,以正合,以奇胜。故善出奇者,无穷如天地,不竭如江海。终而复始,日月是也。死而復生,四时是也。声不过五,五声之变,不可胜听也;色不过五,五色之变,不可胜观也;味不过五,五味之变,不可胜尝也;战势,不过奇正,奇正之变,不可胜穷也。奇正相生,如循环之无端,熟能穷之哉? - -激水之疾,至於漂石者,势也;鷙鸟之疾,至於毁折者,节也。是故善战者,其势险,其节短。势如张弩,节如发机。 - -纷纷紜紜,斗乱而不可乱也;浑浑沌沌,形圆而不可败也。乱生於治,怯生於勇,弱生於强。治乱,数也;勇怯,势也;强弱,形也。故善动敌者,形之,敌必从之;予之,敌必取之。以利动之,以卒待之。 - -故善战者,求之於势,不责於人;故能择人而任势。任势者,其战人也,如转木石。木石之性,安则静,危则动,方则止,圆则行。故善战人之势,如转圆石於千仞之山者,势也。 - -虚实第六 - -孙子曰:凡先处战地而待敌者佚,后处战地而趋战者劳。 - -故善战者,致人而不致於人。能使敌人自至者,利之也;能使敌人不得至者,害之也。故敌佚能劳之,饱能饥之,安能动之。出其所必趋,趋其所不意。行千里而不劳者,行於无人之地也;攻而必取者,攻其所不守也。守而必固者,守其所不攻也。 - -故善攻者,敌不知其所守;善守者,敌不知其所攻。微乎微乎,至於无形;神乎神乎,至於无声,故能為敌之司命。进而不可御者,冲其虚也;退而不可追者,速而不可及也。故我欲战,敌虽高垒深沟,不得不与我战者,攻其所必救也;我不欲战,虽画地而守之,敌不得与我战者,乖其所之也。故形人而我无形,则我专而敌分。我专為一,敌分為十,是以十攻其一也。则我眾敌寡,能以眾击寡者,则吾之所与战者约矣。吾所与战之地不可知,不可知则敌所备者多,敌所备者多,则吾所与战者寡矣。故备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。寡者,备人者也;眾者,使人备己者也。故知战之地,知战之日,则可千里而会战;不知战之地,不知战日,则左不能救右,右不能救左,前不能救后,后不能救前,而况远者数十里,近者数里乎!以吾度之,越人之兵虽多,亦奚益於胜哉!故曰:胜可為也。敌虽眾,可使无斗。故策之而知得失之计,候之而知动静之理,形之而知死生之地,角之而知有餘不足之处。故形兵之极,至於无形。无形则深间不能窥,智者不能谋。因形而措胜於眾,眾不能知。人皆知我所以胜之形,而莫知吾所以制胜之形。故其战胜不復,而应形於无穷。夫兵形象水,水之行避高而趋下,兵之形避实而击虚;水因地而制流,兵因敌而制胜。故兵无常势,水无常形。能因敌变化而取胜者,谓之神。故五行无常胜,四时无常位,日有短长,月有死生。 - -军争第七 - -孙子曰: 凡用兵之法,将受命於君,合军聚眾,交和而舍,莫难於军争。军争之难者,以迂為直,以患為利。故迂其途,而诱之以利,后人发,先人至,此知迂直之计者也。军争為利,军争為危。举军而争利则不及,委军而争利则輜重捐。是故捲甲而趋,日夜不处,倍道兼行,百裡而争利,则擒三将军,劲者先,疲者后,其法十一而至;五十里而争利,则蹶上将军,其法半至;三十里而争利,则三分之二至。是故军无輜重则亡,无粮食则亡,无委积则亡。故不知诸侯之谋者,不能豫交;不知山林、险阻、沮泽之形者,不能行军;不用乡导者,不能得地利。故兵以诈立,以利动,以分和為变者也。故其疾如风,其徐如林,侵掠如火,不动如山,难知如阴,动如雷震。掠乡分眾,廓地分利,悬权而动。先知迂直之计者胜,此军争之法也。《军政》曰:“言不相闻,故為之金鼓;视不相见,故為之旌旗。”夫金鼓旌旗者,所以一民之耳目也。民既专一,则勇者不得独进,怯者不得独退,此用眾之法也。故夜战多金鼓,昼战多旌旗,所以变人之耳目也。三军可夺气,将军可夺心。是故朝气锐,昼气惰,暮气归。善用兵者,避其锐气,击其惰归,此治气者也。以治待乱,以静待哗,此治心者也。以近待远,以佚待劳,以饱待饥,此治力者也。无邀正正之旗,无击堂堂之陈,此治变者也。故用兵之法,高陵勿向,背丘勿逆,佯北勿从,锐卒勿攻,饵兵勿食,归师勿遏,围师遗闕,穷寇勿迫,此用兵之法也。 - -九变第八 - -孙子曰: 凡用兵之法,将受命於君,合军聚合。泛地无舍,衢地合交,绝地无留,围地则谋,死地则战,途有所不由,军有所不击,城有所不攻,地有所不争,君命有所不受。故将通於九变之利者,知用兵矣;将不通九变之利,虽知地形,不能得地之利矣;治兵不知九变之术,虽知五利,不能得人之用矣。是故智者之虑,必杂於利害,杂於利而务可信也,杂於害而患可解也。是故屈诸侯者以害,役诸侯者以业,趋诸侯者以利。故用兵之法,无恃其不来,恃吾有以待之;无恃其不攻,恃吾有所不可攻也。故将有五危,必死可杀,必生可虏,忿速可侮,廉洁可辱,爱民可烦。凡此五者,将之过也,用兵之灾也。覆军杀将,必以五危,不可不察也。 - -行军第九 - -孙子曰:凡处军相敌,绝山依穀,视生处高,战隆无登,此处山之军也。绝水必远水,客绝水而来,勿迎之於水内,令半渡而击之利,欲战者,无附於水而迎客,视生处高,无迎水流,此处水上之军也。绝斥泽,唯亟去无留,若交军於斥泽之中,必依水草而背眾树,此处斥泽之军也。平陆处易,右背高,前死后生,此处平陆之军也。凡此四军之利,黄帝之所以胜四帝也。凡军好高而恶下,贵阳而贱阴,养生而处实,军无百疾,是谓必胜。丘陵堤防,必处其阳而右背之,此兵之利,地之助也。上雨水流至,欲涉者,待其定也。凡地有绝涧、天井、天牢、天罗、天陷、天隙,必亟去之,勿近也。吾远之,敌近之;吾迎之,敌背之。军旁有险阻、潢井、蒹葭、小林、蘙薈者,必谨覆索之,此伏姦之所处也。敌近而静者,恃其险也;远而挑战者,欲人之进也;其所居易者,利也;眾树动者,来也;眾草多障者,疑也;鸟起者,伏也;兽骇者,覆也;尘高而锐者,车来也;卑而广者,徒来也;散而条达者,樵採也;少而往来者,营军也;辞卑而备者,进也;辞强而进驱者,退也;轻车先出居其侧者,陈也;无约而请和者,谋也;奔走而陈兵者,期也;半进半退者,诱也;杖而立者,饥也;汲而先饮者,渴也;见利而不进者,劳也;鸟集者,虚也;夜呼者,恐也;军扰者,将不重也;旌旗动者,乱也;吏怒者,倦也;杀马肉食者,军无粮也;悬甀不返其舍者,穷寇也;谆谆翕翕,徐与人言者,失眾也;数赏者,窘也;数罚者,困也;先暴而后畏其眾者,不精之至也;来委谢者,欲休息也。兵怒而相迎,久而不合,又不相去,必谨察之。兵非贵益多也,惟无武进,足以并力料敌取人而已。夫惟无虑而易敌者,必擒於人。卒未亲而罚之,则不服,不服则难用。卒已亲附而罚不行,则不可用。故合之以文,齐之以武,是谓必取。令素行以教其民,则民服;令素不行以教其民,则民不服。令素行者,与眾相得也。 - -地形第十 - -孙子曰:地形有通者、有掛者、有支者、有隘者、有险者、有远者。我可以往,彼可以来,曰通。通形者,先居高阳,利粮道,以战则利。可以往,难以返,曰掛。掛形者,敌无备,出而胜之,敌若有备,出而不胜,难以返,不利。我出而不利,彼出而不利,曰支。支形者,敌虽利我,我无出也,引而去之,令敌半出而击之利。隘形者,我先居之,必盈之以待敌。若敌先居之,盈而勿从,不盈而从之。险形者,我先居之,必居高阳以待敌;若敌先居之,引而去之,勿从也。远形者,势均难以挑战,战而不利。凡此六者,地之道也,将之至任,不可不察也。凡兵有走者、有驰者、有陷者、有崩者、有乱者、有北者。凡此六者,非天地之灾,将之过也。夫势均,以一击十,曰走;卒强吏弱,曰驰;吏强卒弱,曰陷;大吏怒而不服,遇敌懟而自战,将不知其能,曰崩;将弱不严,教道不明,吏卒无常,陈兵纵横,曰乱;将不能料敌,以少合眾,以弱击强,兵无选锋,曰北。凡此六者,败之道也,将之至任,不可不察也。夫地形者,兵之助也。料敌制胜,计险隘远近,上将之道也。知此而用战者必胜,不知此而用战者必败。故战道必胜,主曰无战,必战可也;战道不胜,主曰必战,无战可也。故进不求名,退不避罪,唯民是保,而利於主,国之宝也。视卒如婴儿,故可以与之赴深溪;视卒如爱子,故可与之俱死。厚而不能使,爱而不能令,乱而不能治,譬若骄子,不可用也。知吾卒之可以击,而不知敌之不可击,胜之半也;知敌之可击,而不知吾卒之不可以击,胜之半也;知敌之可击,知吾卒之可以击,而不知地形之不可以战,胜之半也。故知兵者,动而不迷,举而不穷。故曰:知彼知己,胜乃不殆;知天知地,胜乃可全。 - -九地第十一 - -孙子曰:用兵之法,有散地,有轻地,有争地,有交地,有衢地,有重地,有泛地,有围地,有死地。诸侯自战其地者,為散地;入人之地不深者,為轻地;我得亦利,彼得亦利者,為争地;我可以往,彼可以来者,為交地;诸侯之地三属,先至而得天下眾者,為衢地;入人之地深,背城邑多者,為重地;山林、险阻、沮泽,凡难行之道者,為泛地;所由入者隘,所从归者迂,彼寡可以击吾之眾者,為围地;疾战则存,不疾战则亡者,為死地。是故散地则无战,轻地则无止,争地则无攻,交地则无绝,衢地则合交,重地则掠,泛地则行,围地则谋,死地则战。古之善用兵者,能使敌人前后不相及,眾寡不相恃,贵贱不相救,上下不相收,卒离而不集,兵合而不齐。合於利而动,不合於利而止。敢问敌眾而整将来,待之若何曰:先夺其所爱则听矣。兵之情主速,乘人之不及。由不虞之道,攻其所不戒也。凡為客之道,深入则专。主人不克,掠於饶野,三军足食。谨养而勿劳,并气积力,运兵计谋,為不可测。投之无所往,死且不北。死焉不得,士人尽力。兵士甚陷则不惧,无所往则固,深入则拘,不得已则斗。是故其兵不修而戒,不求而得,不约而亲,不令而信,禁祥去疑,至死无所之。吾士无餘财,非恶货也;无餘命,非恶寿也。令发之日,士卒坐者涕沾襟,偃卧者涕交颐,投之无所往,诸、劌之勇也。故善用兵者,譬如率然。率然者,常山之蛇也。击其首则尾至,击其尾则首至,击其中则首尾俱至。敢问兵可使如率然乎?曰可。夫吴人与越人相恶也,当其同舟而济而遇风,其相救也如左右手。是故方马埋轮,未足恃也;齐勇如一,政之道也;刚柔皆得,地之理也。故善用兵者,携手若使一人,不得已也。将军之事,静以幽,正以治,能愚士卒之耳目,使之无知;易其事,革其谋,使人无识;易其居,迂其途,使民不得虑。帅与之期,如登高而去其梯;帅与之深入诸侯之地,而发其机。若驱群羊,驱而往,驱而来,莫知所之。聚三军之眾,投之於险,此谓将军之事也。九地之变,屈伸之力,人情之理,不可不察也。凡為客之道,深则专,浅则散。去国越境而师者,绝地也;四彻者,衢地也;入深者,重地也;入浅者,轻地也;背固前隘者,围地也;无所往者,死地也。是故散地吾将一其志,轻地吾将使之属,争地吾将趋其后,交地吾将谨其守,交地吾将固其结,衢地吾将谨其恃,重地吾将继其食,泛地吾将进其途,围地吾将塞其闕,死地吾将示之以不活。故兵之情:围则御,不得已则斗,过则从。是故不知诸侯之谋者,不能预交;不知山林、险阻、沮泽之形者,不能行军;不用乡导,不能得地利。四五者,一不知,非霸王之兵也。夫霸王之兵,伐大国,则其眾不得聚;威加於敌,则其交不得合。是故不争天下之交,不养天下之权,信己之私,威加於敌,则其城可拔,其国可隳。施无法之赏,悬无政之令。犯三军之眾,若使一人。犯之以事,勿告以言;犯之以害,勿告以利。投之亡地然后存,陷之死地然后生。夫眾陷於害,然后能為胜败。故為兵之事,在顺详敌之意,并敌一向,千里杀将,是谓巧能成事。是故政举之日,夷关折符,无通其使,厉於廊庙之上,以诛其事。敌人开闔,必亟入之,先其所爱,微与之期,践墨随敌,以决战事。是故始如处女,敌人开户;后如脱兔,敌不及拒。 - -火攻第十二 - -孙子曰:凡火攻有五:一曰火人,二曰火积,三曰火輜,四曰火库,五曰火队。行火必有因,因必素具。发火有时,起火有日。时者,天之燥也。日者,月在箕、壁、翼、軫也。凡此四宿者,风起之日也。凡火攻,必因五火之变而应之:火发於内,则早应之於外;火发而其兵静者,待而勿攻,极其火力,可从而从之,不可从则上。火可发於外,无待於内,以时发之,火发上风,无攻下风,昼风久,夜风止。凡军必知五火之变,以数守之。故以火佐攻者明,以水佐攻者强。水可以绝,不可以夺。夫战胜攻取而不惰其功者凶,命曰“费留”。故曰:明主虑之,良将惰之,非利不动,非得不用,非危不战。主不可以怒而兴师,将不可以慍而攻战。合於利而动,不合於利而上。怒可以复喜,慍可以复说,亡国不可以复存,死者不可以复生。故明主慎之,良将警之。此安国全军之道也。 - -用间第十三 - -孙子曰: 凡兴师十万,出征千里,百姓之费,公家之奉,日费千金,内外骚动,怠於道路,不得操事者,七十万家。相守数年,以争一日之胜,而爱爵禄百金,不知敌之情者,不仁之至也,非民之将也,非主之佐也,非胜之主也。故明君贤将所以动而胜人,成功出於眾者,先知也。先知者,不可取於鬼神,不可象於事,不可验於度,必取於人,知敌之情者也。故用间有五:有因间,有内间,有反间,有死间,有生间。五间俱起,莫知其道,是谓神纪,人君之宝也。乡间者,因其乡人而用之;内间者,因其官人而用之;反间者,因其敌间而用之;死间者,為誑事於外,令吾闻知之而传於敌间也;生间者,反报也。故三军之事,莫亲於间,赏莫厚於间,事莫密於间,非圣贤不能用间,非仁义不能使间,非微妙不能得间之实。微哉微哉!无所不用间也。间事未发而先闻者,间与所告者兼死。凡军之所欲击,城之所欲攻,人之所欲杀,必先知其守将、左右、謁者、门者、舍人之姓名,令吾间必索知之。敌间之来间我者,因而利之,导而舍之,故反间可得而用也;因是而知之,故乡间、内间可得而使也;因是而知之,故死间為誑事,可使告敌;因是而知之,故生间可使如期。五间之事,主必知之,知之必在於反间,故反间不可不厚也。昔殷之兴也,伊挚在夏;周之兴也,吕牙在殷。故明君贤将,能以上智為间者,必成大功。此兵之要,三军之所恃而动也。 diff --git a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt b/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt deleted file mode 100644 index 1918c8fa..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-big5.txt +++ /dev/null @@ -1,106 +0,0 @@ -This file was derived from -http://www.gutenberg.org/files/23864/23864-0.txt --------- -lpĤ@ - -]lGL̡AꤧjơAͤaAs`DAi]C - -GgHơAդHpAӯ䱡G@DAGѡATaA|NAkC - -D̡AOPWPNAiPAiP͡AӤȦM]FѪ̡ABHBɨ]Fa̡ABIBsUBͤ]FN̡ABHBBiBY]Fk̡ABxDBDΤ]CZ̡ANDA̳ӡA̤ӡC - -GդHpAӯ䱡AGDEDHNEHѦaEoHkOEHLEjHhEmH@EH^HӭtoC - -Nť^pAΤӡAdFNť^pAΤѡAhC - -pQHťADաAH~Cժ̡A]QӨv]C - -L̡A޹D]CGӥܤAΦӥܤΡAӥܤAӥܤCQӻAæӨAӳƤAjפAӼAźAHӳҤA˦ALơAX䤣NCLaӡAiǤ]C - -ҥԦӼqӪ̡Aoh]FԦӼq⤣Ӫ̡Ao֤]ChӡAֺ⤣ӡAӪpLGI^H[AӭtoC - -@ԲĤG - -]lGZΧLkAdoAdAaҤQUAdX³Ch~OAȤΡAAҤ^AOdAMQUv|oC - -ξԤ]AQӡA[hwLUA𫰫hO}A[ɮvhΤCҶwLUA}OfAhѫJӰ_A̡AൽoCGLDtA@[]CҧL[ӰQ̡A]CGɪΧL`̡AhɪΧLQ]C - -ΧL̡AФAyA³TAΩA]³ġAGxi]Cꤧhv̻AhʩmhFv̶QAQhʩmܡA]ܫhCСCO}]A줺aAʩmOAQhCFaOA}x}AҭHکAurACjAQh䤻C - -GNȭġAĤ@A^GQFmz@ۡA^GQۡCGĪ̡A]FĤQ̡Af]CGԡAoQHWAo̡AӧܺXCӭA򵽦ӾiAO׳ӼĦӯqjC - -GLQӡAQ[CGLNAqRCawMD]C - -ѧĤT - -]lGZΧLkAꬰWA}ꦸFxWA}xFȬWA}ȦF򬰤WA}򦸤FWA}COGʾԦʳӡAD̤]FԦө}HLA̤]C - -GWLѡA䦸A䦸LAU𫰡C𫰤kAowCrVA㾹ATӫᦨFZASTӫwCNӨAƪAhT@Aӫު̡A𤧨a]C - -GΧL̡A}HLAӫDԤ]AޤHӫD]AHӫD[]AHѤUAGLyӧQiAѧ𤧪k]C - -GΧLkAQh򤧡Ah𤧡AhAīhԤA֫hkAYhפCGpĤAjĤ]C - -ұN̡Aꤧ]CPhꥲjAثhꥲzCGgҥHwx̤TGxiHiӿפiAxiHhӿפhAOݭxFTxơAӦPTxFAhxhboFTxvAӦPTxAhxhèoCTxJbBáAhѫJܨoCO׶íx޳ӡC - -GӦGiHԻPiHԪ̡AӡCѲ褧Ϊ̡AӡCWUP̡AӡCHݤ̡AӡCNӧgs̡AӡC̡AӤD]C - -GGvAʾԤMFӪvA@Ӥ@tFvACԥѡC - -xβĥ| - -]lGԪ̡AiӡAHݼĤiӡCiӦbvAiӦbġCGԪ̡AରiӡAϼĥiӡCGGӥiAӤiC - -iӪ̡Au]FiӪ̡A]CuhAhlCu̡AéEaUA̡AʩEѤWAG۫OӥӤ]C - -ӤLHҪAD̤]FԳӦӤѤU굽AD̤]CG|@hOA뤣ءADp^oաCjԪ̡AөӪ̤]CGԪ̤Ӥ]ALWALi\AGԳӤ֡C̡֪AұӡAӤwѪ̤]CGԪ̡Aߩ󤣱ѤaAӤĤѤ]COGӧLӡAӫDԡAѧLԦӫDӡCΧL̡A׹DӫOkAGରӱѤFC - -LkG@סAGqATơA|١AӡCaͫסAץͶqAqͼơAƥͺ١A٥ͳӡCGӧLYHٻˡAѧLYH˺CӪ̤ԡAYMndQƪ̡AΤ]C - -LղĤ - -]lGZvpvAƬO]FpAΦWO]FTxAiϥĦӵLѪ̡A_O]FLҥ[ApHZ̡AO]C - -ZԪ̡AHXAH_ӡCGX_̡ALapѦaAܦpCצӽƩlAO]CӴ_͡A|ɬO]CnLAnܡAiť]F⤣LA⤧ܡAi[]FLAܡAiӹ]FԶաAL_A_ܡAiӽa]C_ۥ͡Ap`LݡAavH - -EeAܩ}̡۪Aդ]FeAܩ󷴧̡A`]COGԪ̡AIA`uCզpiA`poC - -ɯɯƯơAæӤiä]FPPAζӤiѤ]CåͩvAĥͩiAzͩjCváAƤ]FiġAդ]FjzAΤ]CGʼĪ̡AΤAĥqFAĥCHQʤAHݤC - -GԪ̡ADաAdHFGܤHӥաCժ̡AԤH]ApۡCۤʡAwhRAMhʡAhAhCGԤHաAp۩dQs̡Aդ]C - -Ĥ - -]lGZBԦaӫݼĪ̧HABԦa;Ԫ̳ҡC - -GԪ̡APHӤPHCϼĤHۦܪ̡AQ]FϼĤHoܪ̡A`]CGħHҤAȤAwʤCXҥ͡AͨҤNCdӤҪ̡ALHa]Fӥ̡AҤu]CuӥT̡AuҤ]C - -G̡AĤҦuFu̡AĤҧCLGLGAܩLΡFGGAܩLnAGରĤqRCiӤim̡AR]FhӤil̡AtӤiΤ]CGڱԡAS`AoPھԪ̡AҥϤ]FڤԡAeaӦuAĤoPھԪ̡AĨҤ]CGΤHӧڵLΡAhڱMӼĤCڱM@AĤQAOHQ@]ChڲĹAH̡Ah^һPԪ̬oC^һPԤaiAihĩҳƪ̦hAĩҳƪ̦hAh^һPԪ̹oCGƫehAƫheAƥhkAƥkhALҤơAhLҤC̡AƤH̤]F̡AϤHƤv̤]CGԤaAԤAhidӷ|ԡFԤaAԤAhϥkAkϥAeϫAᤣϫeAӪp̼ƤQءA̼إGIH^פAVHLhAOqӫvIGGӥi]CAiϵLCGӪopAԤӪRzAΤӪͤaAӪlBCGΧLAܩLΡCLΫh`sA̤ѡC]Φӱө󲳡AાCHҪکҥHӤΡAӲ^ҥHӤΡCGԳӤ_AΩLaCҧLζHAװͤUAL׹F]aӨyAL]ĦӨӡCGLL`աAL`ΡC]ܤƦӨӪ̡AפCGL`ӡA|ɵL`A馳uA릳͡C - -xĤC - -]lG ZΧLkANRgAXxEAMӪ١AxCx̡AHAHwQCG~AӻHQAHoAHܡAp̤]CxQAxMC|xӪQhΡAexӪQhCOGҦ͡A]BADݦAʸ̦ӪQAhTNxAl̥Ah̫AkQ@ӦܡFQئӪQAhݤWNxAkbܡFTQئӪQAhTGܡCOGxLh`AL³h`ALenh`CGѫJѪ̡AݥFsLBIBqAΪ̡AxFζmɪ̡AoaQCGLHBߡAHQʡAHMܪ̤]CGepA}pLAIpAʦpsApAʦpp_CmAaQAavӰʡCp̳ӡAxk]CmxFnGۻDAGFۨAGܺXCҪܺX̡AҥH@եؤ]CJM@Ahi̤oWiAĪ̤oWhAβk]CG]ԦhA޾ԦhܺXAҥHܤHեؤ]CTxiܮANxiܤߡCOG®UAޮkAǮkCΧL̡AרUAkkAv̤]CHvݶáAHRݼMAvߪ̤]CHݻAHHݳҡAHȡAvO̤]CLܥXAL󤧳Avܪ̤]CGΧLkAŦVAICŰfA˥_űqAUŧALŭAkvŹKAvAaFŭAΧLk]C - -EܲĤK - -]lG ZΧLkANRgAXxEXCxaL١AaXAaLdAahѡAahԡA~ҤѡAxҤAҤAaҤAgRҤCGNqEܤQ̡AΧLoFNqEܤQAaΡAoaQoFvLEܤNAQAoHΨoCOG̤{AQ`AQӰȥiH]A`ӱwiѤ]COG}ѫJ̥H`AнѫJ̥H~AͽѫJ̥HQCGΧLkAL䤣ӡA^HݤFL䤣A^Ҥi]CGNMAiAͥiAtiVAGidARiСCZ̡ANL]AΧLa]CЭxNAHMAi]C - -xĤE - -]lGZBxۼġAs̽\AͳBAԶLnABsx]CAȵӨӡAŪ蠟AObQAԪ̡ALӪȡAͳBALyABWx]CAA߫EhLdAYx󥸿AA̤ӭIABAx]CBAkIAe͡ABx]CZ|xQAҤҥHӥ|Ҥ]CZxnӴcUAQӽ⳱AiͦӳBAxLʯeAOץӡCCAB䶧ӥkIALQAaU]CWByܡAA̡Aݨw]CZaBѤBѨcBùBѳBѻءAEhAŪ]C^AĪ񤧡F^蠟AĭICxǦIBCB㶸BpLBP̡AЯAҳB]CĪR̡AI]FӬDԪ̡AHi]Fҩ~̡AQ]Fʪ̡AӤ]Fh٪̡Aä]F_̡A]F~b̡AФ]FаӾU̡AӤ]FӼs̡A{Ӥ]FӱF̡AĤ]F֦өӪ̡Ax]Fӳƪ̡Ai]FjӶiX̡Ah]FX~䰼̡A]FLӽЩM̡AѤ]FbӳL̡A]Fbibh̡A]Fӥߪ̡AȤ]FVӥ̡A]FQӤi̡AҤ]F̡A]F]I̡A]FxZ̡AN]FܺXʪ̡Aä]FO̡A¤]F׭̡AxL³]Faդ٪̡AaF]FνεA}PH̡A]Fƽ̡A~]Fƻ@̡Ax]FɦӫȨ䲳̡A뤧ܤ]Fөeª̡A𮧤]CLӬ۪A[ӤXASۥhAԹCLDQqh]ALZiAHäOƼĨHӤwCұL{өĪ̡AHC򥼿˦ӻ@AhAAAhΡCw˪ӻ@AhiΡCGXHAHZAOץCOHШAhAFOHШAhACO̡AP۱o]C - -aβĤQ - -]lGaΦq̡B̡B̡Bi̡BI̡B̡CڥiHAiHӡAqCqΪ̡A~AQ³DAHԫhQCiHAHA걾CΪ̡AĵLơAXӳӤAĭYơAXӤӡAHAQCڥXӤQAXӤQACΪ̡AQڡAڵLX]AަӥhAOĥbXQCiΪ̡Aڥ~AդHݼġCYĥ~AզӤűqAզӱqCIΪ̡Aڥ~A~HݼġFYĥ~AަӥhAűq]CΪ̡AէHDԡAԦӤQCZ̡AaD]ANܥAi]CZL̡B̡B̡BY̡Bê̡B_̡CZ̡ADѦaaANL]CҶէAH@QAꨫFjOzA깣FOjzA곴FjOӤAAJȦӦ۾ԡANAYFNzYAйDAOL`ALaAáFNƼġAH֦XAHzjALLWA_CZ̡AѤD]ANܥAi]CҦaΪ̡ALU]CƼĨӡApIiAWND]CӥξԪ̥ӡAӥξԪ̥ѡCGԹDӡADLԡAԥi]FԹDӡADꥲԡALԥi]CGiDWAh׸oAߥOOAӧQDAꤧ_]CpAGiHPu`ˡFpRlAGiPѦCpӤϡARӤOAæӤvAĴYźlAiΤ]C^򤧥iHAӤĤiAӤb]FĤiAӤ^򤧤iHAӤb]FĤiA^򤧥iHAӤaΤiHԡAӤb]CGL̡AʦӤgA|ӤaCGGvAӤDpFѪaAӤDiC - -EaĤQ@ - -]lGΧLkAaAaAaAaAaAaAxaAaAaCѫJ۾Ԩa̡AaFJHa`̡AaFڱoQAoQ̡AaFڥiHAiHӪ̡AaFѫJaTݡAܦӱoѤU̡AaFJHa`AIh̡AaFsLBIBqAAZ椧D̡AxaFҥѤJ̹iAұqk̨AiH^̡AaFeԫhsAeԫh`̡AaCOGahLԡAahLAahLAahLAahXAahAxahAahѡAahԡCjΧL̡AϼĤHeᤣۤΡA褣۫AQ⤣۱ϡAWUۦAӤALXӤCXQӰʡAXQӤCݼIJӾNӡAݤYGܨҷRhťoCLDtAHΡCѤDAҤ٤]CZȤDA`JhMCDHJAdzATxCԾiӤųҡAînOABLpѡAiC뤧LҩAB_CjoAhHɤOCLhƳhߡALҩhTA`JhAowhCOGLצӧ١ADӱoAӿˡAOӫHATháAܦLҤC^hLl]ADcf]FLlRADcؤ]COoAh򧤪̮g̡Aת̮[A뤧LҩAѡB󤧫i]CGΧL̡AĴpvMCvM̡A`sD]C䭺hܡAhܡA䤤hѦܡCݧLiϦpvMGHiCҧdHPVH۴c]AP٦ӹJA۱Ϥ]pkCOG谨IA]Fip@AFD]FXұoAaz]CGΧL̡AYϤ@HAow]CNxơARHաAHvAMh򤧦եءAϤLFơAѡAϤHLѡF~A~Aϥo{CӻPApnӥhFӻP`JѫJaAӵoCYXsϡAXөAXӨӡAҤCETxA뤧IAױNxƤ]CEaܡA}OAHzAi]CZȤDA`hMALhChVҦӮv̡Aa]F|̡Aa]FJ`̡Aa]FJL̡Aa]FITei̡Aa]FLҩ̡Aa]COGa^N@ӡAa^NϤݡAa^NͨAa^NԨuAa^NT䵲Aa^NԨAa^N~䭹Axa^Ni~Aa^NAa^NܤHCGLGhmAowhALhqCOGѫJѪ̡AwFsLBIBqAΪ̡AxFζmɡAoaQC|̡A@ADQL]CQLAjAh䲳oEF¥[ġAh椣oXCOGѤUAiѤUvAHvpA¥[ġAh䫰iޡAioCILkAaLFOCǤTxAYϤ@HCǤHơAŧiHFǤH`AŧiHQC뤧`aMsAaM͡CҲ`AMରӱѡCGLơAbԼĤNAüĤ@VAdNAOץনơCOGF|AišALqϡAFYqWAHݨơCĤH}AEJAҷRALPAHġAHMԨơCOGlpBkAĤH}FpߡAĤΩڡC - -ĤQG - -]lGZ𦳤G@HAGnATA|wAC]A]CoɡA_Cɪ̡AѤ]C̡AbߡBBlBH]CZ|J̡A_]CZA]ܦGo󤺡Ah~FoӨLR̡AݦӤŧAOAiqӱqAiqhWCio~ALݩ󤺡AHɵoAoWALUAޭ[A]CZxܡAHƦuCGH̩AH̱jCiHAiHܡCҾԳӧӤk\̤ARꡧOdCGGD{A}NkADQʡADoΡADMԡCDiHӿvANiHYӧԡCXQӰʡAXQӤWCiHƳߡAYiHƻA`ꤣiHƦsA̤iHƥ͡CGDVA}NĵCwxD]C - -ζĤQT - -]lG ZvQUAXdAʩmOAa^AOdA~̰ʡADAoިƪ̡ACQUaCۦuƦ~AH@餧ӡAӷRSʪAĤ̡Aܤ]ADN]ADD]ADӤD]CGgNҥHʦӳӤHA\X󲳪̡A]C̡Ai󰭯AiHơAiסAHAĤ̤]CGζG]AA϶AAͶCѰ_ADAOׯAHg_]Cm̡A]mHӥΤF̡A]xHӥΤF϶̡A]ĶӥΤF̡AƩ~AO^DӶǩĶ]FͶ̡Aϳ]CGTxơA˩󶡡Ap󶡡AƲK󶡡ADt夣ζADq϶ADLoCLvLvILҤζ]CƥoӥD̡APҧi̭ݦCZxұAұAHұAuNBkB̡֪B̡B٤HmWAO^CĶӶڪ̡A]ӧQAɦӪ٤AG϶ioӥΤ]F]OӪAGmBioӨϤ]F]OӪAGơAiϧiġF]OӪAGͶiϦpCơADAb϶AG϶ip]C蠟]A켰bLFP]AfbCGgNAHW̡Aj\CLnATxҫӰʤ]C diff --git a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt b/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt deleted file mode 100644 index 5797b374..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/sunzi-bingfa-traditional-utf-8.txt +++ /dev/null @@ -1,106 +0,0 @@ -This file was derived from -http://www.gutenberg.org/files/23864/23864-0.txt --------- -始計第一 - -孫子曰:兵者,國之大事,死生之地,存亡之道,不可不察也。 - -故經之以五事,校之以計,而索其情:一曰道,二曰天,三曰地,四曰將,五曰法。 - -道者,令民與上同意,可與之死,可與之生,而不畏危也;天者,陰陽、寒暑、時制也;地者,遠近、險易、廣狹、死生也;將者,智、信、仁、勇、嚴也;法者,曲制、官道、主用也。凡此五者,將莫不聞,知之者勝,不知者不勝。 - -故校之以計,而索其情,曰:主孰有道?將孰有能?天地孰得?法令孰行?兵眾孰強?士卒孰練?賞罰孰明?吾以此知勝負矣。 - -將聽吾計,用之必勝,留之;將不聽吾計,用之必敗,去之。 - -計利以聽,乃為之勢,以佐其外。勢者,因利而制權也。 - -兵者,詭道也。故能而示之不能,用而示之不用,近而示之遠,遠而示之近。利而誘之,亂而取之,實而備之,強而避之,怒而撓之,卑而驕之,佚而勞之,親而離之,攻其無備,出其不意。此兵家之勝,不可先傳也。 - -夫未戰而廟算勝者,得算多也;未戰而廟算不勝者,得算少也。多算勝,少算不勝,而況無算乎!吾以此觀之,勝負見矣。 - -作戰第二 - -孫子曰:凡用兵之法,馳車千駟,革車千乘,帶甲十萬,千里饋糧。則內外之費,賓客之用,膠漆之材,車甲之奉,日費千金,然後十萬之師舉矣。 - -其用戰也,貴勝,久則鈍兵挫銳,攻城則力屈,久暴師則國用不足。夫鈍兵挫銳,屈力殫貨,則諸侯乘其弊而起,雖有智者,不能善其後矣。故兵聞拙速,未睹巧之久也。夫兵久而國利者,未之有也。故不盡知用兵之害者,則不能盡知用兵之利也。 - -善用兵者,役不再籍,糧不三載,取用於國,因糧於敵,故軍食可足也。國之貧於師者遠輸,遠輸則百姓貧;近於師者貴賣,貴賣則百姓竭,財竭則急於丘役。力屈財殫,中原內虛於家,百姓之費,十去其七;公家之費,破軍罷馬,甲胄矢弩,戟楯矛櫓,丘牛大車,十去其六。 - -故智將務食於敵,食敵一鍾,當吾二十鍾;萁稈一石,當吾二十石。故殺敵者,怒也;取敵之利者,貨也。故車戰,得車十乘以上,賞其先得者,而更其旌旗。車雜而乘之,卒善而養之,是謂勝敵而益強。 - -故兵貴勝,不貴久。故知兵之將,民之司命。國家安危之主也。 - -謀攻第三 - -孫子曰:凡用兵之法,全國為上,破國次之;全軍為上,破軍次之;全旅為上,破旅次之;全卒為上,破卒次之;全伍為上,破伍次之。是故百戰百勝,非善之善者也;不戰而屈人之兵,善之善者也。 - -故上兵伐謀,其次伐交,其次伐兵,其下攻城。攻城之法,為不得已。修櫓轒轀,具器械,三月而後成;距闉,又三月而後已。將不勝其忿,而蟻附之,殺士三分之一,而城不拔者,此攻之災也。 - -故善用兵者,屈人之兵,而非戰也,拔人之城而非攻也,毀人之國而非久也,必以全爭於天下,故兵不頓而利可全,此謀攻之法也。 - -故用兵之法,十則圍之,五則攻之,倍則分之,敵則能戰之,少則能逃之,不若則能避之。故小敵之堅,大敵之擒也。 - -夫將者,國之輔也。輔周則國必強,輔隙則國必弱。故君之所以患於軍者三:不知軍之不可以進而謂之進,不知軍之不可以退而謂之退,是謂縻軍;不知三軍之事,而同三軍之政,則軍士惑矣;不知三軍之權,而同三軍之任,則軍士疑矣。三軍既惑且疑,則諸侯之難至矣。是謂亂軍引勝。 - -故知勝有五:知可以戰與不可以戰者,勝。識眾寡之用者,勝。上下同欲者,勝。以虞待不虞者,勝。將能而君不御者,勝。此五者,知勝之道也。 - -故曰:知己知彼,百戰不貽;不知彼而知己,一勝一負;不知彼不知己,每戰必敗。 - -軍形第四 - -孫子曰:昔之善戰者,先為不可勝,以待敵之可勝。不可勝在己,可勝在敵。故善戰者,能為不可勝,不能使敵必可勝。故曰:勝可知,而不可為。 - -不可勝者,守也;可勝者,攻也。守則不足,攻則有餘。善守者,藏於九地之下,善攻者,動於九天之上,故能自保而全勝也。 - -見勝不過眾人之所知,非善之善者也;戰勝而天下曰善,非善之善者也。故舉秋毫不為多力,見日月不為明目,聞雷霆不為聰耳。古之善戰者,勝於易勝者也。故善戰者之勝也,無智名,無勇功,故其戰勝不忒。不忒者,其所措必勝,勝已敗者也。故善戰者,先立於不敗之地,而不失敵之敗也。是故勝兵先勝,而後求戰,敗兵先戰而後求勝。善用兵者,修道而保法,故能為勝敗之政。 - -兵法:一曰度,二曰量,三曰數,四曰稱,五曰勝。地生度,度生量,量生數,數生稱,稱生勝。故勝兵若以鎰稱銖,敗兵若以銖稱鎰。勝者之戰,若決積水於千仞之谿者,形也。 - -兵勢第五 - -孫子曰:凡治眾如治寡,分數是也;鬥眾如鬥寡,形名是也;三軍之眾,可使必受敵而無敗者,奇正是也;兵之所加,如以碫投卵者,虛實是也。 - -凡戰者,以正合,以奇勝。故善出奇者,無窮如天地,不竭如江海。終而複始,日月是也。死而復生,四時是也。聲不過五,五聲之變,不可勝聽也;色不過五,五色之變,不可勝觀也;味不過五,五味之變,不可勝嘗也;戰勢,不過奇正,奇正之變,不可勝窮也。奇正相生,如循環之無端,熟能窮之哉? - -激水之疾,至於漂石者,勢也;鷙鳥之疾,至於毀折者,節也。是故善戰者,其勢險,其節短。勢如張弩,節如發機。 - -紛紛紜紜,鬥亂而不可亂也;渾渾沌沌,形圓而不可敗也。亂生於治,怯生於勇,弱生於強。治亂,數也;勇怯,勢也;強弱,形也。故善動敵者,形之,敵必從之;予之,敵必取之。以利動之,以卒待之。 - -故善戰者,求之於勢,不責於人;故能擇人而任勢。任勢者,其戰人也,如轉木石。木石之性,安則靜,危則動,方則止,圓則行。故善戰人之勢,如轉圓石於千仞之山者,勢也。 - -虛實第六 - -孫子曰:凡先處戰地而待敵者佚,後處戰地而趨戰者勞。 - -故善戰者,致人而不致於人。能使敵人自至者,利之也;能使敵人不得至者,害之也。故敵佚能勞之,飽能饑之,安能動之。出其所必趨,趨其所不意。行千里而不勞者,行於無人之地也;攻而必取者,攻其所不守也。守而必固者,守其所不攻也。 - -故善攻者,敵不知其所守;善守者,敵不知其所攻。微乎微乎,至於無形;神乎神乎,至於無聲,故能為敵之司命。進而不可禦者,沖其虛也;退而不可追者,速而不可及也。故我欲戰,敵雖高壘深溝,不得不與我戰者,攻其所必救也;我不欲戰,雖畫地而守之,敵不得與我戰者,乖其所之也。故形人而我無形,則我專而敵分。我專為一,敵分為十,是以十攻其一也。則我眾敵寡,能以眾擊寡者,則吾之所與戰者約矣。吾所與戰之地不可知,不可知則敵所備者多,敵所備者多,則吾所與戰者寡矣。故備前則後寡,備後則前寡,備左則右寡,備右則左寡,無所不備,則無所不寡。寡者,備人者也;眾者,使人備己者也。故知戰之地,知戰之日,則可千里而會戰;不知戰之地,不知戰日,則左不能救右,右不能救左,前不能救後,後不能救前,而況遠者數十裏,近者數裏乎!以吾度之,越人之兵雖多,亦奚益於勝哉!故曰:勝可為也。敵雖眾,可使無鬥。故策之而知得失之計,候之而知動靜之理,形之而知死生之地,角之而知有餘不足之處。故形兵之極,至於無形。無形則深間不能窺,智者不能謀。因形而措勝於眾,眾不能知。人皆知我所以勝之形,而莫知吾所以制勝之形。故其戰勝不復,而應形於無窮。夫兵形象水,水之行避高而趨下,兵之形避實而擊虛;水因地而制流,兵因敵而制勝。故兵無常勢,水無常形。能因敵變化而取勝者,謂之神。故五行無常勝,四時無常位,日有短長,月有死生。 - -軍爭第七 - -孫子曰: 凡用兵之法,將受命於君,合軍聚眾,交和而舍,莫難於軍爭。軍爭之難者,以迂為直,以患為利。故迂其途,而誘之以利,後人發,先人至,此知迂直之計者也。軍爭為利,軍爭為危。舉軍而爭利則不及,委軍而爭利則輜重捐。是故捲甲而趨,日夜不處,倍道兼行,百裡而爭利,則擒三將軍,勁者先,疲者後,其法十一而至;五十裏而爭利,則蹶上將軍,其法半至;三十裏而爭利,則三分之二至。是故軍無輜重則亡,無糧食則亡,無委積則亡。故不知諸侯之謀者,不能豫交;不知山林、險阻、沮澤之形者,不能行軍;不用鄉導者,不能得地利。故兵以詐立,以利動,以分和為變者也。故其疾如風,其徐如林,侵掠如火,不動如山,難知如陰,動如雷震。掠鄉分眾,廓地分利,懸權而動。先知迂直之計者勝,此軍爭之法也。《軍政》曰:“言不相聞,故為之金鼓;視不相見,故為之旌旗。”夫金鼓旌旗者,所以一民之耳目也。民既專一,則勇者不得獨進,怯者不得獨退,此用眾之法也。故夜戰多金鼓,晝戰多旌旗,所以變人之耳目也。三軍可奪氣,將軍可奪心。是故朝氣銳,晝氣惰,暮氣歸。善用兵者,避其銳氣,擊其惰歸,此治氣者也。以治待亂,以靜待嘩,此治心者也。以近待遠,以佚待勞,以飽待饑,此治力者也。無邀正正之旗,無擊堂堂之陳,此治變者也。故用兵之法,高陵勿向,背丘勿逆,佯北勿從,銳卒勿攻,餌兵勿食,歸師勿遏,圍師遺闕,窮寇勿迫,此用兵之法也。 - -九變第八 - -孫子曰: 凡用兵之法,將受命於君,合軍聚合。泛地無舍,衢地合交,絕地無留,圍地則謀,死地則戰,途有所不由,軍有所不擊,城有所不攻,地有所不爭,君命有所不受。故將通於九變之利者,知用兵矣;將不通九變之利,雖知地形,不能得地之利矣;治兵不知九變之術,雖知五利,不能得人之用矣。是故智者之慮,必雜於利害,雜於利而務可信也,雜於害而患可解也。是故屈諸侯者以害,役諸侯者以業,趨諸侯者以利。故用兵之法,無恃其不來,恃吾有以待之;無恃其不攻,恃吾有所不可攻也。故將有五危,必死可殺,必生可虜,忿速可侮,廉潔可辱,愛民可煩。凡此五者,將之過也,用兵之災也。覆軍殺將,必以五危,不可不察也。 - -行軍第九 - -孫子曰:凡處軍相敵,絕山依穀,視生處高,戰隆無登,此處山之軍也。絕水必遠水,客絕水而來,勿迎之於水內,令半渡而擊之利,欲戰者,無附於水而迎客,視生處高,無迎水流,此處水上之軍也。絕斥澤,唯亟去無留,若交軍於斥澤之中,必依水草而背眾樹,此處斥澤之軍也。平陸處易,右背高,前死後生,此處平陸之軍也。凡此四軍之利,黃帝之所以勝四帝也。凡軍好高而惡下,貴陽而賤陰,養生而處實,軍無百疾,是謂必勝。丘陵堤防,必處其陽而右背之,此兵之利,地之助也。上雨水流至,欲涉者,待其定也。凡地有絕澗、天井、天牢、天羅、天陷、天隙,必亟去之,勿近也。吾遠之,敵近之;吾迎之,敵背之。軍旁有險阻、潢井、蒹葭、小林、蘙薈者,必謹覆索之,此伏姦之所處也。敵近而靜者,恃其險也;遠而挑戰者,欲人之進也;其所居易者,利也;眾樹動者,來也;眾草多障者,疑也;鳥起者,伏也;獸駭者,覆也;塵高而銳者,車來也;卑而廣者,徒來也;散而條達者,樵採也;少而往來者,營軍也;辭卑而備者,進也;辭強而進驅者,退也;輕車先出居其側者,陳也;無約而請和者,謀也;奔走而陳兵者,期也;半進半退者,誘也;杖而立者,饑也;汲而先飲者,渴也;見利而不進者,勞也;鳥集者,虛也;夜呼者,恐也;軍擾者,將不重也;旌旗動者,亂也;吏怒者,倦也;殺馬肉食者,軍無糧也;懸甀不返其舍者,窮寇也;諄諄翕翕,徐與人言者,失眾也;數賞者,窘也;數罰者,困也;先暴而後畏其眾者,不精之至也;來委謝者,欲休息也。兵怒而相迎,久而不合,又不相去,必謹察之。兵非貴益多也,惟無武進,足以並力料敵取人而已。夫惟無慮而易敵者,必擒於人。卒未親而罰之,則不服,不服則難用。卒已親附而罰不行,則不可用。故合之以文,齊之以武,是謂必取。令素行以教其民,則民服;令素不行以教其民,則民不服。令素行者,與眾相得也。 - -地形第十 - -孫子曰:地形有通者、有掛者、有支者、有隘者、有險者、有遠者。我可以往,彼可以來,曰通。通形者,先居高陽,利糧道,以戰則利。可以往,難以返,曰掛。掛形者,敵無備,出而勝之,敵若有備,出而不勝,難以返,不利。我出而不利,彼出而不利,曰支。支形者,敵雖利我,我無出也,引而去之,令敵半出而擊之利。隘形者,我先居之,必盈之以待敵。若敵先居之,盈而勿從,不盈而從之。險形者,我先居之,必居高陽以待敵;若敵先居之,引而去之,勿從也。遠形者,勢均難以挑戰,戰而不利。凡此六者,地之道也,將之至任,不可不察也。凡兵有走者、有馳者、有陷者、有崩者、有亂者、有北者。凡此六者,非天地之災,將之過也。夫勢均,以一擊十,曰走;卒強吏弱,曰馳;吏強卒弱,曰陷;大吏怒而不服,遇敵懟而自戰,將不知其能,曰崩;將弱不嚴,教道不明,吏卒無常,陳兵縱橫,曰亂;將不能料敵,以少合眾,以弱擊強,兵無選鋒,曰北。凡此六者,敗之道也,將之至任,不可不察也。夫地形者,兵之助也。料敵制勝,計險隘遠近,上將之道也。知此而用戰者必勝,不知此而用戰者必敗。故戰道必勝,主曰無戰,必戰可也;戰道不勝,主曰必戰,無戰可也。故進不求名,退不避罪,唯民是保,而利於主,國之寶也。視卒如嬰兒,故可以與之赴深溪;視卒如愛子,故可與之俱死。厚而不能使,愛而不能令,亂而不能治,譬若驕子,不可用也。知吾卒之可以擊,而不知敵之不可擊,勝之半也;知敵之可擊,而不知吾卒之不可以擊,勝之半也;知敵之可擊,知吾卒之可以擊,而不知地形之不可以戰,勝之半也。故知兵者,動而不迷,舉而不窮。故曰:知彼知己,勝乃不殆;知天知地,勝乃可全。 - -九地第十一 - -孫子曰:用兵之法,有散地,有輕地,有爭地,有交地,有衢地,有重地,有泛地,有圍地,有死地。諸侯自戰其地者,為散地;入人之地不深者,為輕地;我得亦利,彼得亦利者,為爭地;我可以往,彼可以來者,為交地;諸侯之地三屬,先至而得天下眾者,為衢地;入人之地深,背城邑多者,為重地;山林、險阻、沮澤,凡難行之道者,為泛地;所由入者隘,所從歸者迂,彼寡可以擊吾之眾者,為圍地;疾戰則存,不疾戰則亡者,為死地。是故散地則無戰,輕地則無止,爭地則無攻,交地則無絕,衢地則合交,重地則掠,泛地則行,圍地則謀,死地則戰。古之善用兵者,能使敵人前後不相及,眾寡不相恃,貴賤不相救,上下不相收,卒離而不集,兵合而不齊。合於利而動,不合於利而止。敢問敵眾而整將來,待之若何曰:先奪其所愛則聽矣。兵之情主速,乘人之不及。由不虞之道,攻其所不戒也。凡為客之道,深入則專。主人不克,掠於饒野,三軍足食。謹養而勿勞,並氣積力,運兵計謀,為不可測。投之無所往,死且不北。死焉不得,士人盡力。兵士甚陷則不懼,無所往則固,深入則拘,不得已則鬥。是故其兵不修而戒,不求而得,不約而親,不令而信,禁祥去疑,至死無所之。吾士無餘財,非惡貨也;無餘命,非惡壽也。令發之日,士卒坐者涕沾襟,偃臥者涕交頤,投之無所往,諸、劌之勇也。故善用兵者,譬如率然。率然者,常山之蛇也。擊其首則尾至,擊其尾則首至,擊其中則首尾俱至。敢問兵可使如率然乎?曰可。夫吳人與越人相惡也,當其同舟而濟而遇風,其相救也如左右手。是故方馬埋輪,未足恃也;齊勇如一,政之道也;剛柔皆得,地之理也。故善用兵者,攜手若使一人,不得已也。將軍之事,靜以幽,正以治,能愚士卒之耳目,使之無知;易其事,革其謀,使人無識;易其居,迂其途,使民不得慮。帥與之期,如登高而去其梯;帥與之深入諸侯之地,而發其機。若驅群羊,驅而往,驅而來,莫知所之。聚三軍之眾,投之於險,此謂將軍之事也。九地之變,屈伸之力,人情之理,不可不察也。凡為客之道,深則專,淺則散。去國越境而師者,絕地也;四徹者,衢地也;入深者,重地也;入淺者,輕地也;背固前隘者,圍地也;無所往者,死地也。是故散地吾將一其志,輕地吾將使之屬,爭地吾將趨其後,交地吾將謹其守,交地吾將固其結,衢地吾將謹其恃,重地吾將繼其食,泛地吾將進其途,圍地吾將塞其闕,死地吾將示之以不活。故兵之情:圍則禦,不得已則鬥,過則從。是故不知諸侯之謀者,不能預交;不知山林、險阻、沮澤之形者,不能行軍;不用鄉導,不能得地利。四五者,一不知,非霸王之兵也。夫霸王之兵,伐大國,則其眾不得聚;威加於敵,則其交不得合。是故不爭天下之交,不養天下之權,信己之私,威加於敵,則其城可拔,其國可隳。施無法之賞,懸無政之令。犯三軍之眾,若使一人。犯之以事,勿告以言;犯之以害,勿告以利。投之亡地然後存,陷之死地然後生。夫眾陷於害,然後能為勝敗。故為兵之事,在順詳敵之意,並敵一向,千里殺將,是謂巧能成事。是故政舉之日,夷關折符,無通其使,厲於廊廟之上,以誅其事。敵人開闔,必亟入之,先其所愛,微與之期,踐墨隨敵,以決戰事。是故始如處女,敵人開戶;後如脫兔,敵不及拒。 - -火攻第十二 - -孫子曰:凡火攻有五:一曰火人,二曰火積,三曰火輜,四曰火庫,五曰火隊。行火必有因,因必素具。發火有時,起火有日。時者,天之燥也。日者,月在箕、壁、翼、軫也。凡此四宿者,風起之日也。凡火攻,必因五火之變而應之:火發於內,則早應之於外;火發而其兵靜者,待而勿攻,極其火力,可從而從之,不可從則上。火可發於外,無待於內,以時發之,火發上風,無攻下風,晝風久,夜風止。凡軍必知五火之變,以數守之。故以火佐攻者明,以水佐攻者強。水可以絕,不可以奪。夫戰勝攻取而不惰其功者凶,命曰“費留”。故曰:明主慮之,良將惰之,非利不動,非得不用,非危不戰。主不可以怒而興師,將不可以慍而攻戰。合於利而動,不合於利而上。怒可以複喜,慍可以複說,亡國不可以複存,死者不可以複生。故明主慎之,良將警之。此安國全軍之道也。 - -用間第十三 - -孫子曰: 凡興師十萬,出征千里,百姓之費,公家之奉,日費千金,內外騷動,怠於道路,不得操事者,七十萬家。相守數年,以爭一日之勝,而愛爵祿百金,不知敵之情者,不仁之至也,非民之將也,非主之佐也,非勝之主也。故明君賢將所以動而勝人,成功出於眾者,先知也。先知者,不可取於鬼神,不可象於事,不可驗於度,必取於人,知敵之情者也。故用間有五:有因間,有內間,有反間,有死間,有生間。五間俱起,莫知其道,是謂神紀,人君之寶也。鄉間者,因其鄉人而用之;內間者,因其官人而用之;反間者,因其敵間而用之;死間者,為誑事於外,令吾聞知之而傳於敵間也;生間者,反報也。故三軍之事,莫親於間,賞莫厚於間,事莫密於間,非聖賢不能用間,非仁義不能使間,非微妙不能得間之實。微哉微哉!無所不用間也。間事未發而先聞者,間與所告者兼死。凡軍之所欲擊,城之所欲攻,人之所欲殺,必先知其守將、左右、謁者、門者、舍人之姓名,令吾間必索知之。敵間之來間我者,因而利之,導而舍之,故反間可得而用也;因是而知之,故鄉間、內間可得而使也;因是而知之,故死間為誑事,可使告敵;因是而知之,故生間可使如期。五間之事,主必知之,知之必在於反間,故反間不可不厚也。昔殷之興也,伊摯在夏;周之興也,呂牙在殷。故明君賢將,能以上智為間者,必成大功。此兵之要,三軍之所恃而動也。 diff --git a/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt b/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt deleted file mode 100644 index c9ba04c4..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-euc-kr.txt +++ /dev/null @@ -1,175 +0,0 @@ -This file was derived from -http://www.ibrary.co.kr/index.php/book-list/short-stories/34-short-stories-korean/150-2008-04-20-13-22-32 --------- -[Ұ] - ̷ ΰ ϰ Ѵ. 츮 ִ ̶ 巯 . ϱ ̷ , ¦ 츮 ķ ̷ 츮 տ 𸥴. յ 鿡Դ ڽ ü ٽ δٴ ׷ ⵵ ִ... - -ٽ о . Ĺ ô Ͽ , . 21⸦ 츮鿡 ׷ ƿ ο ó ̴. ׷ ׷? ̷ 𸣰 ְ, ƴ ̴. 쿬 ̴. Ƴ ڴϴ ÷ ... Ƣ ڰ, ׷ ִ. - -[۰ Ұ] - (, 1900-1943) : Ҽ. ѱ Ҽ Ʋ ۰̴. (). ȣ (޻). 1920 ݱ⿡ Ұ üҼ <ó> < ϴ ȸ>, () ٷ <B簨 극> < > 1920 ߹ Ŀ <ǾƳ> <> <> <> ¿ ɰ Ĺ Ȳ ν ε巯 ǰ ǥߴ. < > ̷ 迭 ϴ ǰ̴. 1930 Ŀ ǽİ а ٰ Ҽ ߽ <ž> <ġ()> <ȭ> Ҽ ǥߴ. - -ħϰ 帰 ǰ ϴ ƴ ٰ . - -̳̾߸ ҹ ȿ η°Ų 븩 ϴ ÷Դ ģ ̾. ȿ(ű⵵ ƴ) ô Ŵ 帰 ࿩ մ ϰ 忡 ϸ ϳϳ ִٰ ħ 纹̸ б() ¿ ֱ Ǿ. - -ù , ° - ħ ٶ ׸ ġ ̾. ׾߸ Ⱥپ 浵 ÷ ¥ ȭ Ǭ, Ǵ ټ Ǭ ϰ չٴڿ 긱 ŭ ⻼. ̳ ̶ Ƚ ̶ ׿ 󸶳 . ܵ ְŴϿ ׺ٵ δ Ƴ ׸ ̴. - - Ƴ ħ 𷰰Ÿ Ѿ. 䵵 ⸦ Դٽ ϴ ̴ ø . ¿ ٵ ƴϷε ״ ̶ 𿡰 ־ ̸ ٿ ڲ ´ٴ ڱ () Ͽ. ǻ翡 ݵ , Ͼ ε ° . ̴뵵 ԰ ü ̴. - -׶ ÷  ǿ ¥ ־ ÷ ϸ õ(۰) . ϰ ұ ʾ ä ΰ Ѽ ָԵ Ȥ Ұ ó ϴϸ ׳ , 谡 бٰ ȩ߰ Ͽ. ׶ ÷ ȭ , - -, , պ , Ծ , Ծ , ¼ ̾! ٷ !ϰ ÷ δ ķ. ȩ ٷǸ ̽ . ÷ ÿﵵ ߲߲Ͽ. - - ȯڰ ׷ Դ ʾҴ. ð ʹٰ . - -̷ ! 䵵 Դ , ó԰ ϰ., ߴ ĺҰǸ, ִ ÿġ ʾҴ. - - ִ. δ 翡 ä ( ) ִ. - Ƚ տ ÷ ǬǬϿ. ׷ װɷ ġ ʾҴ. 帣 ̸ ⸧ָӴϰ ָ , б Ƴ . ڿ <η°!> ϰ θ Ҹ . ڱ⸦ ҷ б л ÷ ־. л ¥¥, 빮 󸶿?, . - -Ƹ б 翡 ִ ̷ ̿Ͽ Ϸ ̸. ϿǸ , ְ ؼ 𸣴ٰ ħ ÷ پ̸. ׷ θ ä ؼ , <> 纹ϸ ̷ ÷ Ѿ . - -빮 Դϱ.ϰ ÷ Ͽ. ״ ߿ 嵵 öŸ Ⱑ Ⱦϱ? ó , ° ׸ Ͽϱ? ƴϴ, ƴϴ. ̻ϰԵ ¹ տ ̴.׸ Ƴ Ź б. - ׼ θ 󱼿 ޸ ũ ְϴ , ƿ. п پ־. ̷ µ, Ҹ ߾Ÿ ɱ׷ɱ׷ Ͽ. - -׶ ÷ , д, , Ҹ ϳ. ºٵ ɾ Կ 츱 ˾.ϰ, ½ پϱ ȯڴ , ׷, ׷ Ϳ.ϰ, Ҹ ڸ . - - , ޸ ŭ , Ƴ ÷ տ Ͽ. ׷ 빮 󸶶 ̿?ϰ л η°Ų ٶ󺸸 ȥ㸻, õ ְ, ̵簡., ߾Ÿ. - - ݽÿ. ̿ Ҿ ÷ Կ . θ û ׼ . Ѳ ̷ ݾ ҷ 󸶸ΰ! ׷ Ⱑ ڿ 縣 Ҵ.  ;. ִ ģ ͺٵ ĥ Ͽ. - - ʹ ѵ. ̷ ϸ л Ͽ. - -ƴϿýô. ռ ġ ⼭ űⰡ ÿ Ѵ´ϴ. ̷ ּž.ϰ ۺ 󱼿 귶. - -׷ ޶ ̴ .  մ ׷ ʵ ԰ ìⷯ . - - л ¿ ÷ ٸ ̻ϰ ŻϿ. ѴٴϺ Ͽ.  ٴϺ ġ ij <Ʈ> ̲ Ͽ. ̲⵵ Ͽ. - - ٸ ſ. ڱ ٴٸ ̴. コ . < ƿ. ̷ µ!> ̷ Ϳ ȴ. ׸  ϴ ڱ⸦ 븮 Ͽ. ׷ ϰ  ʹ. ϰ Ҹ ʹ. ̸, ġڱ.ϰ ź θ¢ Ϳ Դ. ÷ η°Ÿ ä Ѻǿ . - -, .ϰ, ÷ Ǵٽ Ͽ. ־ ÷ ٽñ Ͽ. ٸ ߸ ڱ Ӹ ٽɰ . - - ְ ¦ տ 翡, Ǵ ¾ ܰŸ ƴϰ, Դ. γ ⻼. ڽ ۿ ȵǴ  մԿ 㸮 , ȳ ٳɽÿ. ƴ. - -׷ η°Ÿ аŸ ߿ ư ޹̾. 뵿 Ͽ 帥 ľ ָ âڿ, 帣 ʿ  ѱⰡ ھƳ ϸ ̶ 󸶳 ο . ߱ ϳ . ¸ ˼۱׷ ڸ Ͼ Ҵ. - - ! η°Ÿ аŸ Ƹ . ̷ , ҹ̸ ! - -״ ȱ ̳ ϴ ԰ɰŷȴ. ׷ Ӹ ο Ƴ װ <̷ ƴ϶ ó ⸦ ٸ մ ¿ ɴ > ̾. ϰԵ ϱ ׷ ѹ Ϸ. ڱ⸦ ٸ ִٰ ⸦ ص Ǿ. ׷ٰ η°Ų տ . - -׷ ״ غ ̶ ٷ 忡 , ٴϴ ƴ η°Ÿ ڱ ó ϱ Ͽ. 󸶸 ԰, ̳ Ǵ Դ. ߿ մ ϴ ÷ Ӹ θ Ű <> θ , л . ״ ٽ ٰ. - -ƾ, η° ƴ Ÿöÿ? - - л ſ Ȱ Լ ٹ ä ÷ ŵ鶰 ʾҴ. ÷ ϴ ؿ Ǹ, ƾ, ֵ麸 ΰ Ŵ 帮ϴ. Ű.ϰ, ߱߱ϰԵ ִ Ϻ ¦ . - - ̷, ġʰ. Ҹ ° Ƽ. ÷ ÿ ϰ . - - Դ. ÷ Ÿ ̸ 븮 ־. ׷ () Ʋ ʾҴ. ϰ ư ̱ Ͽ Ÿ ϳ ־. ϰ ū ִ° Ƹ պ ȿ ũ Ͽ 忡 з ġ. ÷ . - -η°Ÿ Ÿöÿ. - -ѵ °̸ ϴٰ λ絿 ¿ֱ Ͽ. η°Ű ſ ̻ϰԵ ׸ η°Ű ٽñ ſǸ ̹ ´. ڲ տ Ÿ ٶ . ̳ ٸ ¢ ٴ ۿ . - - η°ű ذ , ϸŭ ȲϿ. 帮 ϴ ħħϰ Ȳȥ ϴ. â ձ ٴ޾Ƽ ״ ο Ҵ. Ϳü ϰ ׷. ׷ ׷ Ƚɿ ƴϿ, ڱ⸦ ģ ƴ ˰ ڵ ηϴ ̴. - -״ ࿡ ٴġ ð ̶ ø ŷȴ. () ̸ Ͽٴ ϰ ;. ״ θθ Ǿ. ġ ڱ - ϰ ޷ ٸ δ ٰ, ٰ ϴ Ͽ. - -׷ ħ 氡 ģ ġ̰ ´. ۿ 󱼿 ȫ , ΰ Ŀݰ Ŵ, 븣 ¦ а, ִ ιؿ ġ ̸ Ųٷ ٿ ÷ dzäϰ ־. - - ÷, ڳ  ϼ׷. ״ . - -׶׺ ̸ ÿ θ¢. Ҹ ϰ ϽϿ. ÷ ģ  ݰ . ڱ⸦ ̳ ⵵ Ͽ. - -ڳ״ ϼ׷. ڳ׵ ̰ ƺ.ϰ, ÷ 켭 . - -д, ٰ . ׷ , ڳ ޸ ° ?  ̸ . - - ϰ ߶Ͽ. ߾ ̴ ܶѲ Թ , 迡 ʺƴ ̸ ̸ ̸ ̸ Ͼ 붱 ϰ þ Źڿ ÷ ڱ ߵ . ̸ ű ִ ̸ ׸ ѵ ÿġ ʾҴ. ϵ ̴ з 붱 ̱⵵ ϰ ߾ ׸ ûϿ. - -ָ âڴ ĸ ڲڲ ̶̶ Ͽ. İ κο ̲ٸ ׸ ׳ Ű Ҵ. ° ׸ ޾Ƶ . ġ̿ ̶ ϰ âڿ ȭϿ. ̴. - - ÷ Ǯ Ͽ. 迡  ҷŸ ξ Ͽ. - -ġ Ǿ ÷ , ״ٴ, 츮 ܾ Ծ, ϼ. ǽ״. - -Ƶ ̳, ׸ ϳ. . Ҵ. - -׷ 󸶸 ΰ? - - , ! ̷ Ⱥξ , Ծ . ̰ µ. - -, ߱, ׸μ. - -̳, ̰ ԰ ,  Ծ.ϰ ġ ͸ ä ̴ θ¢. ׸ ״ ټ ߴ밡Է ޷, ̳, , ʾ. ߴ ƴ. ߴ밡 ġ ϴ Ͽ. ġ ˾ƺ ȭ , ̸ , ̳ ˰.ڸ 㸮 ĩĩ ϴ ¥ ߴ밡 տ ½ . ǰ Ǭ ߱׶ ϸ . - - , . ̷ ϸ Ϻ ݴ´. ÷ ߿ ó Ǵ ũ ٺٰ ҽÿ ϴ ʹ ٴ ҽġ , ! , , ٸٱ .ϰ ġ ִֿ ޾, ! ø !ϸ鼭, Ǯ ģ. ¾ ٽ ̴ Ǭ Ÿ ´´ٴ ¸ϰ . - - ξ ܸ Ҵ. ÷ Լ Ƶ̰ ſ ٵ, ξ, ξ., ƴ. - - ԰ ÷ ġ ġ ´. Ҹ  Ǵ ִ ÷Է . ̴ , ġ, 콺 ̾߱ ϳ ұ. ° 忡 ʾҰڳ. - -׷. - -ٰ Ⱑ Ƶ׷. ׷ 忡 ϸ մ ϳ ¿ ø ʾҳ. ű ħ ̽ л̽ - ٴϿ ư ִ - <> θ ° ְ. ٽ η° Ÿöÿ ϰ հ ϱ Ź Ѹġ ȴ Ƽϸ < ̷ !> Ҹ߸ Ҳ Ҹ, ! - - ÷ ϰԵ Ҳ Ҹ . Ͻÿ . - - , ¼, < !> ̱ Ҹ óŵ , . - - Ҹ . ׷ Ҹ ÷ ½½ Ͽ. - -ġ ̾ ̸ ٶ󺸸, ݹ ϴ ΰ. - - ÷ ڸ 鿩ø, 츮 ׾ٳ. - -, ״ٴ, ? - -̳ . . - - ģ , . - - , ׾, ... ü ij Դٴ, ̾, ̾.ϰ ÷ Ҹ . - -ġ 󱼷, , ϳ ϳ. ׷ , .ϰ ƴ. - -ġ Ѹġ ÷ ۽۽ ̱׷ ´. - -ױ ׾.ϰ ǰ . - -ױ ׾, Ƹ ִܴ. . ӾҴ.ϰ  ջ ġ ´. - - ƴ ΰ. ָճװ δ´ µ.ϰ, ġ̵ Ҿ ÷ ư Ͽ. - - ׾, ׾뵵׷. - - ÷ ȱ Ȯְ Ҹ Ҹ ־ ־. ġ ä ܾ ԰ Դ. ǿ . - - ÷ ߿ 簡 ٴ޾Ҵ. ̶ ص ̿, ü ƴ϶ Ȱ Ҷ ε ޿ ̴. ÷ ֱ⸦ ʾҴ 빮 鿩 װ ϴ ù () - dz찡 ٴ ٸ . - -Ÿ ħ Ҹ . ׸Ÿ Ҹ . ٸ ħ ߸ - ߸ٴϺ ħ ϰ ұϰ ϴ ϴ Ҹ,  Ҹ ̴. û() Ҹ ̿, ܶܶ ϰ Ѿ Ҹ ٴ ͵ Ҵ 𸣸. - -Ȥ ÷ ұ ħ ߴ 𸥴. ׷ 빮 ڸ , , µ ͺ ʾ, .̶ ģ ϴ. ̾߸ ؿ ù Ѿƹ 强() ̴. - -Ͽ ÷ 湮 Ĭ . ϴ ߱ - ڸ ؿ , Ϳ ˳ ܳ, ʳ, ߱Ⱑ ÷ ڸ 񷶴. - -ȿ  ѱ ̵ û ִ ȣ ƴ. - -̷ , ־õ() ̾! ͵ Ͼ . Ҹ Բ ߱ ٸ á. ׷ ߱濡 ä̴ ƴϰ ɰ ־. ̶ Ҹ Ҹ Ͽ. ̰ . 뵵 ׷ ٿ, ٴ ǥ ̴. Ҹ Կ ƴϰ ġ ӿ Ͽ. ٰ ٰ . - -߷ Ƴ Ӹ ޷ ׾߸ ġ ȯ Ӹ , , , ! پ, ! - - - -, ̰ , ƹ . - - -̳, ׾ ̳, . - - - -. , ׾. - -̷ٰ â , ġ ˾ƺڸ, ! ! ٶ ϰ õ , .ϴ ޾. ׷ þ. ÷ ĥ 󱼿 ߾ŷȴ. - - ٳҴµ ϴ, ϴ... ϰԵ ! ϸ... diff --git a/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt b/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt deleted file mode 100644 index e10a3d46..00000000 --- a/vendor/golang.org/x/text/encoding/testdata/unsu-joh-eun-nal-utf-8.txt +++ /dev/null @@ -1,175 +0,0 @@ -This file was derived from -http://www.ibrary.co.kr/index.php/book-list/short-stories/34-short-stories-korean/150-2008-04-20-13-22-32 --------- -[소개] -잔인한 운명은 이렇게 인간을 조롱하곤 한다. 우리가 평소 마음 속 저 깊은 곳에 움켜쥐고 있던 자존심 따위는 어느 한 순간 전혀 무용지물이란 것이 드러나고 만다. 하기야 이렇게 삶의 한 순간, 눈 깜짝할 새에 우리를 후려 갈기고 지나가는 그 진실이 미래의 어느날에는 또 남김없이 우리 눈 앞에 펼쳐질지도 모른다. 죽음을 앞둔 사람들에게는 자신의 삶 전체가 한 순간에 다시 보인다는 그런 얘기도 있던데... - -다시 읽어보니 끔찍한 생각도 든다. 식민지 시대의 암울한 삶, 그 끈끈한 냄새를 피할 수 없다. 21세기를 사는 우리들에겐 그런 냄새는 아예 인연이 없는 것처럼 느껴질 수도 있을 것이다. 그러나 과연 그럴까? 이런 냄새를 모르고 평생 사는 사람도 있겠지만, 전혀 관련이 없는 것은 아닐 것이다. 그저 우연일 뿐이다. 아내를 박대하는 김 첨지의 모습... 요새 같으면 간이 배 밖으로 튀어나온 남자겠지만, 그래도 그 애정은 더 진한 것일 수도 있다. - -[작가 소개] -현 진 건(玄鎭健, 1900-1943) : 소설가. 한국 사실주의 단편소설의 기틀을 다진 작가이다. 본관은 연주(延州). 아호는 빙허(憑虛). 1920년대 전반기에는 자전적 요소가 강한 개인적 체험소설인 <빈처> <술 권하는 사회>, 성(性)의 문제와 애정문제를 다룬 <B사감과 러브레터> <새빨간 웃음> 등이 있으며 1920년대 중반 이후에는 <피아노> <우편국에서> <불> <고향> 등 세태에의 관심과 식민지 상황하의 현실인식이 두드러진 작품을 많이 발표했다. <운수 좋은 날>도 이러한 계열에 속하는 작품이다. 1930년대 이후에는 역사의식과 예언주의적 문학관에 근거한 역사소설 중심의 <무영탑> <흑치상지(黑齒常之)> <선화공주> 등 장편소설을 발표했다. - -새침하게 흐린 품이 눈이 올 듯하더니 눈은 아니 오고 얼다가 만 비가 추적추적 내리었다. - -이날이야말로 동소문 안에서 인력거꾼 노릇을 하는 김 첨지에게는 오래간만에도 닥친 운수 좋은 날이었다. 문안에(거기도 문밖은 아니지만) 들어간답시는 앞집 마나님을 전찻길까지 모셔다 드린 것을 비롯으로 행여나 손님이 있을까 하고 정류장에서 어정어정하며 내리는 사람 하나하나에게 거의 비는 듯한 눈결을 보내고 있다가 마침내 교원인 듯한 양복장이를 동광학교(東光學校)까지 태워다 주기로 되었다. - -첫번에 삼십 전, 둘째 번에 오십 전 - 아침 댓바람에 그리 흔치 않은 일이었다. 그야말로 재수가 옴붙어서 근 열흘 동안 돈 구경도 못한 김 첨지는 십 전짜리 백통화 서 푼, 또는 다섯 푼이 찰깍하고 손바닥에 떨어질 제 거의 눈물을 흘릴 만큼 기뻤었다. 더구나 이날 이때에 이 팔십 전이라는 돈이 그에게 얼마나 유용한지 몰랐다. 컬컬한 목에 모주 한 잔도 적실 수 있거니와 그보다도 앓는 아내에게 설렁탕 한 그릇도 사다줄 수 있음이다. - -그의 아내가 기침으로 쿨럭거리기는 벌써 달포가 넘었다. 조밥도 굶기를 먹다시피 하는 형편이니 물론 약 한 첩 써 본 일이 없다. 구태여 쓰려면 못 쓸 바도 아니로되 그는 병이란 놈에게 약을 주어 보내면 재미를 붙여서 자꾸 온다는 자기의 신조(信條)에 어디까지 충실하였다. 따라서 의사에게 보인 적이 없으니 무슨 병인지는 알 수 없으되 반듯이 누워 가지고, 일어나기는 새로 모로도 못 눕는걸 보면 중증은 중증인 듯. 병이 이대도록 심해지기는 열흘 전에 조밥을 먹고 체한 때문이다. - -그때도 김 첨지가 오래간만에 돈을 얻어서 좁쌀 한 되와 십 전짜리 나무 한 단을 사다 주었더니 김 첨지의 말에 의지하면 그 오라질 년이 천방지축(天方地軸)으로 남비에 대고 끓였다. 마음은 급하고 불길은 달지 않아 채 익지도 않은 것을 그 오라질 년이 숟가락은 고만두고 손으로 움켜서 두 뺨에 주먹덩이 같은 혹이 불거지도록 누가 빼앗을 듯이 처박질 하더니만 그날 저녁부터 가슴이 땅긴다, 배가 켕긴다고 눈을 홉뜨고 지랄병을 하였다. 그때 김 첨지는 열화와 같이 성을 내며, - -“에이, 오라질 년, 조롱복은 할 수가 없어, 못 먹어 병, 먹어서 병, 어쩌란 말이야! 왜 눈을 바루 뜨지 못해!”하고 김 첨지는 앓는 이의 뺨을 한 번 후려갈겼다. 홉뜬 눈은 조금 바루어졌건만 이슬이 맺히었다. 김 첨지의 눈시울도 뜨끈뜨끈하였다. - -이 환자가 그러고도 먹는 데는 물리지 않았다. 사흘 전부터 설렁탕 국물이 마시고 싶다고 남편을 졸랐다. - -“이런 오라질 년! 조밥도 못 먹는 년이 설렁탕은, 또 처먹고 지랄병을 하게.”라고, 야단을 쳐보았건만, 못 사주는 마음이 시원치는 않았다. - -인제 설렁탕을 사줄 수도 있다. 앓는 어미 곁에서 배고파 보채는 개똥이(세 살먹이)에게 죽을 사줄 수도 있다. - 팔십 전을 손에 쥔 김 첨지의 마음은 푼푼하였다. 그러나 그의 행운은 그걸로 그치지 않았다. 땀과 빗물이 섞여 흐르는 목덜미를 기름주머니가 다 된 왜목 수건으로 닦으며, 그 학교 문을 돌아나올 때였다. 뒤에서 <인력거!> 하고 부르는 소리가 난다. 자기를 불러 멈춘 사람이 그 학교 학생인 줄 김 첨지는 한 번 보고 짐작할 수 있었다. 그 학생은 다짜고짜로, “남대문 정거장까지 얼마요?”라고, 물었다. - -아마도 그 학교 기숙사에 있는 이로 동기방학을 이용하여 귀향하려 함이리라. 오늘 가기로 작정은 하였건만 비는 오고, 짐은 있고 해서 어찌할 줄 모르다가 마침 김 첨지를 보고 뛰어나왔음이리라. 그렇지 않으면 왜 구두를 채 신지 못해서 질질 끌고, 비록 <고구라> 양복일망정 노박이로 비를 맞으며 김첨지를 뒤쫓아 나왔으랴. - -“남대문 정거장까지 말씀입니까.”하고 김 첨지는 잠깐 주저하였다. 그는 이 우중에 우장도 없이 그 먼 곳을 철벅거리고 가기가 싫었음일까? 처음 것, 둘째 것으로 그만 만족하였음일까? 아니다, 결코 아니다. 이상하게도 꼬리를 맞물고 덤비는 이 행운 앞에 조금 겁이 났음이다.그리고 집을 나올 제 아내의 부탁이 마음에 켕기었다. - 앞집 마나님한테서 부르러 왔을 제 병인은 그 뼈만 남은 얼굴에 유일의 생물 같은 유달리 크고 움폭한 눈에 애걸하는 빛을 띠우며, “오늘은 나가지 말아요. 제발 덕분에 집에 붙어있어요. 내가 이렇게 아픈데……”라고, 모기 소리같이 중얼거리고 숨을 걸그렁걸그렁 하였다. - -그때에 김 첨지는 대수롭지 않은 듯이, “압다, 젠장맞을 년, 별 빌어먹을 소리를 다 하네. 맞붙들고 앉았으면 누가 먹여 살릴 줄 알아.”하고, 훌쩍 뛰어나오려니까 환자는 붙잡을 듯이 팔을 내저으며, “나가지 말라도 그래, 그러면 일찌기 들어와요.”하고, 목메인 소리가 뒤를 따랐다. - -정거장까지 가잔 말을 들은 순간에 경련적으로 떠는 손, 유달리 큼직한 눈, 울 듯한 아내의 얼굴이 김 첨지의 눈앞에 어른어른하였다. “그래 남대문 정거장까지 얼마란 말이요?”하고 학생은 초조한 듯이 인력거꾼의 얼굴을 바라보며 혼잣말같이, “인천 차가 열 한 점에 있고, 그 다음에는 새로 두 점이든가.”라고, 중얼거린다. - -“일 원 오십 전만 줍시요.” 이 말이 저도 모를 사이에 불쑥 김 첨지의 입에서 떨어졌다. 제 입으로 부르고도 스스로 그 엄청난 돈 액수에 놀래었다. 한꺼번에 이런 금액을 불러라도 본 지가 그 얼마만인가! 그러자 그 돈 벌 용기가 병자에 대한 염려를 사르고 말았다. 설마 오늘 내로 어떠랴 싶었다. 무슨 일이 있더라도 제일 제이의 행운을 곱친 것보다도 오히려 갑절이 많은 이 행운을 놓칠 수 없다 하였다. - -“일 원 오십 전은 너무 과한데.” 이런 말을 하며 학생은 고개를 기웃하였다. - -“아니올시다. 잇수로 치면 여기서 거기가 시오리가 넘는답니다. 또 이런 진 날에 좀더 주셔야지요.”하고 빙글빙글 웃는 차부의 얼굴에는 숨길 수 없는 기쁨이 넘쳐 흘렀다. - -“그러면 달라는 대로 줄 터이니 빨리 가요.” 관대한 어린 손님은 그런 말을 남기고 총총히 옷도 입고 짐도 챙기러 갈 데로 갔다. - -그 학생을 태우고 나선 김 첨지의 다리는 이상하게 거뿐하였다. 달음질을 한다느니보다 거의 나는 듯하였다. 바퀴도 어떻게 속히 도는지 군다느니보다 마치 얼음을 지쳐나가는 <스케이트> 모양으로 미끄러져 가는 듯하였다. 얼은 땅에 비가 내려 미끄럽기도 하였지만. - -이윽고 끄는 이의 다리는 무거워졌다. 자기 집 가까이 다다른 까닭이다. 새삼스러운 염려가 그의 가슴을 눌렀다. <오늘은 나가지 말아요. 내가 이렇게 아픈데!> 이런 말이 잉잉 그의 귀에 울렸다. 그리고 병자의 움쑥 들어간 눈이 원망하는 듯이 자기를 노리는 듯하였다. 그러자 엉엉하고 우는 개똥이의 곡성을 들은 듯싶다. 딸국딸국 하고 숨 모으는 소리도 나는 듯싶다.“왜 이리우, 기차 놓치겠구먼.”하고 탄 이의 초조한 부르짖음이 간신히 그의 귀에 들어왔다. 언뜻 깨달으니 김 첨지는 인력거를 쥔 채 길 한복판에 엉거주춤 멈춰있지 않은가. - -“예, 예.”하고, 김 첨지는 또다시 달음질하였다. 집이 차차 멀어갈수록 김 첨지의 걸음에는 다시금 신이 나기 시작하였다. 다리를 재게 놀려야만 쉴새없이 자기의 머리에 떠오르는 모든 근심과 걱정을 잊을 듯이. - -정거장까지 끌어다주고 그 깜짝 놀란 일 원 오십 전을 정말 제 손에 쥠에, 제 말마따나 십 리나 되는 길을 비를 맞아 가며 질퍽거리고 온 생각은 아니하고, 거저나 얻은 듯이 고마왔다. 졸부나 된 듯이 기뻤다. 제자식 뻘밖에 안되는 어린 손님에게 몇 번 허리를 굽히며, “안녕히 다녀옵시요.”라고 깍듯이 재우쳤다. - -그러나 빈 인력거를 털털거리며 이 우중에 돌아갈 일이 꿈밖이었다. 노동으로 하여 흐른 땀이 식어지자 굶주린 창자에서, 물 흐르는 옷에서 어슬어슬 한기가 솟아나기 비롯하매 일 원 오십 전이란 돈이 얼마나 괜찮고 괴로운 것인 줄 절절히 느끼었다. 정거장을 떠나는 그의 발길은 힘 하나 없었다. 온몸이 옹송그려지며 당장 그 자리에 엎어져 못 일어날 것 같았다. - -“젠장맞을 것! 이 비를 맞으며 빈 인력거를 털털거리고 돌아를 간담. 이런 빌어먹을, 제 할미를 붙을 비가 왜 남의 상판을 딱딱 때려!” - -그는 몹시 홧증을 내며 누구에게 반항이나 하는 듯이 게걸거렸다. 그럴 즈음에 그의 머리엔 또 새로운 광명이 비쳤나니 그것은 <이러구 갈 게 아니라 이 근처를 빙빙 돌며 차 오기를 기다리면 또 손님을 태우게 될는지도 몰라>란 생각이었다. 오늘 운수가 괴상하게도 좋으니까 그런 요행이 또한번 없으리라고 누가 보증하랴. 꼬리를 굴리는 행운이 꼭 자기를 기다리고 있다고 내기를 해도 좋을 만한 믿음을 얻게 되었다. 그렇다고 정거장 인력거꾼의 등살이 무서우니 정거장 앞에 섰을 수는 없었다. - -그래 그는 이전에도 여러 번 해본 일이라 바로 정거장 앞 전차 정류장에서 조금 떨어지게, 사람 다니는 길과 전찻길 틈에 인력거를 세워놓고 자기는 그 근처를 빙빙 돌며 형세를 관망하기로 하였다. 얼마만에 기차는 왔고, 수십 명이나 되는 손이 정류장으로 쏟아져 나왔다. 그 중에서 손님을 물색하는 김 첨지의 눈엔 양머리에 뒤축 높은 구두를 신고 <망토>까지 두른 기생 퇴물인 듯, 난봉 여학생인 듯한 여편네의 모양이 띄었다. 그는 슬근슬근 그 여자의 곁으로 다가들었다. - -“아씨, 인력거 아니 타시랍시요?” - -그 여학생인지 뭔지가 한참은 매우 탯갈을 빼며 입술을 꼭 다문 채 김 첨지를 거들떠보지도 않았다. 김 첨지는 구걸하는 거지나 무엇같이 연해연방 그의 기색을 살피며, “아씨, 정거장 애들보담 아주 싸게 모셔다 드리겠읍니다. 댁이 어디신가요.”하고, 추근추근하게도 그 여자의 들고 있는 일본식 버들고리짝에 제 손을 대었다. - -“왜 이래, 남 귀치않게.” 소리를 벽력같이 지르고는 돌아선다. 김 첨지는 어랍시요 하고 물러섰다. - -전차는 왔다. 김 첨지는 원망스럽게 전차 타는 이를 노리고 있었다. 그러나 그의 예감(豫感)은 틀리지 않았다. 전차가 빡빡하게 사람을 싣고 움직이기 시작하였을 때 타고 남은 손 하나이 있었다. 굉장하게 큰 가방을 들고 있는걸 보면 아마 붐비는 차 안에 짐이 크다 하여 차장에게 밀려내려온 눈치였다. 김 첨지는 대어섰다. - -“인력거를 타시랍시요.” - -한동안 값으로 승강이를 하다가 육십 전에 인사동까지 태워다주기로 하였다. 인력거가 무거워지매 그의 몸은 이상하게도 가벼워졌고 그리고 또 인력거가 가벼워지니 몸은 다시금 무거워졌건만 이번에는 마음조차 초조해 온다. 집의 광경이 자꾸 눈앞에 어른거리어 인제 요행을 바랄 여유도 없었다. 나무 등걸이나 무엇 같고 제 것 같지도 않은 다리를 연해 꾸짖으며 갈팡질팡 뛰는 수밖에 없었다. - -저놈의 인력거군이 저렇게 술이 취해가지고 이 진 땅에 어찌 가노, 라고 길 가는 사람이 걱정을 하리만큼 그의 걸음은 황급하였다. 흐리고 비오는 하늘은 어둠침침하게 벌써 황혼에 가까운 듯하다. 창경원 앞까지 다달아서야 그는 턱에 닿은 숨을 돌리고 걸음도 늦추잡았다. 한 걸음 두 걸음 집이 가까와올수록 그의 마음조차 괴상하게 누그러웠다. 그런데 이 누그러움은 안심에서 오는 게 아니요, 자기를 덮친 무서운 불행을 빈틈없이 알게 될 때가 박두한 것을 두려워하는 마음에서 오는 것이다. - -그는 불행에 다닥치기 전 시간을 얼마쯤이라도 늘리려고 버르적거렸다. 기적(奇蹟)에 가까운 벌이를 하였다는 기쁨을 할 수 있으면 오래 지니고 싶었다. 그는 두리번두리번 사면을 살피었다. 그 모양은 마치 자기 집 - 곧 불행을 향하고 달려가는 제 다리를 제 힘으로는 도저히 어찌할 수 없으니 누구든지 나를 좀 잡아 다고, 구해 다고 하는 듯하였다. - -그럴 즈음에 마침 길가 선술집에서 그의 친구 치삼이가 나온다. 그의 우글우글 살찐 얼굴에 주홍이 돋는 듯, 온 턱과 뺨을 시커멓게 구레나룻이 덮였거늘, 노르탱탱한 얼굴이 바짝 말라서 여기저기 고랑이 패고, 수염도 있대야 턱밑에만 마치 솔잎 송이를 거꾸로 붙여놓은 듯한 김 첨지의 풍채하고는 기이한 대상을 짓고 있었다. - -“여보게 김 첨지, 자네 문안 들어갔다 오는 모양일세그려. 돈 많이 벌었을 테니 한 잔 빨리게.” - -뚱뚱보는 말라깽이를 보든 맡에 부르짖었다. 그 목소리는 몸짓과 딴판으로 연하고 싹싹하였다. 김 첨지는 이 친구를 만난 게 어떻게 반가운지 몰랐다. 자기를 살려준 은인이나 무엇같이 고맙기도 하였다. - -“자네는 벌써 한잔 한 모양일세그려. 자네도 오늘 재미가 좋아보이.”하고, 김 첨지는 얼굴을 펴서 웃었다. - -“압다, 재미 안 좋다고 술 못 먹을 낸가. 그런데 여보게, 자네 왼몸이 어째 물독에 빠진 새앙쥐 같은가? 어서 이리 들어와 말리게.” - -선술집은 훈훈하고 뜨뜻하였다. 추어탕을 끓이는 솥뚜껑을 열 적마다 뭉게뭉게 떠오르는 흰 김, 석쇠에서 뻐지짓뻐지짓 구워지는 너비아니 구이며 제육이며 간이며 콩팥이며 북어며 빈대떡……이 너저분하게 늘어놓인 안주 탁자에 김 첨지는 갑자기 속이 쓰려서 견딜 수 없었다. 마음대로 할 양이면 거기 있는 모든 먹음 먹이를 모조리 깡그리 집어삼켜도 시원치 않았다. 하되 배고픈 이는 위선 분량 많은 빈대떡 두 개를 쪼이기도 하고 추어탕을 한 그릇 청하였다. - -주린 창자는 음식맛을 보더니 더욱더욱 비어지며 자꾸자꾸 들이라들이라 하였다. 순식간에 두부와 미꾸리 든 국 한 그릇을 그냥 물같이 들이키고 말았다. 세째 그릇을 받아들었을 제 데우던 막걸이 곱배기 두 잔이 더웠다. 치삼이와 같이 마시자 원원히 비었던 속이라 찌르르하고 창자에 퍼지며 얼굴이 화끈하였다. 눌러 곱배기 한 잔을 또 마셨다. - -김 첨지의 눈은 벌써 개개 풀리기 시작하였다. 석쇠에 얹힌 떡 두 개를 숭덩숭덩 썰어서 볼을 불룩거리며 또 곱배기 두 잔을 부어라 하였다. - -치삼은 의아한 듯이 김 첨지를 보며, “여보게 또 붓다니, 벌써 우리가 넉 잔씩 먹었네, 돈이 사십 전일세.”라고 주의시켰다. - -“아따 이놈아, 사십 전이 그리 끔찍하냐. 오늘 내가 돈을 막 벌었어. 참 오늘 운수가 좋았느니.” - -“그래 얼마를 벌었단 말인가?” - -“삼십 원을 벌었어, 삼십 원을! 이런 젠장맞을 술을 왜 안부어……괜찮다 괜찮다, 막 먹어도 상관이 없어. 오늘 돈 산더미같이 벌었는데.” - -“어, 이 사람 취했군, 그만두세.” - -“이놈아, 이걸 먹고 취할 내냐, 어서 더 먹어.”하고는 치삼의 귀를 잡아채며 취한 이는 부르짖었다. 그리고 술을 붓는 열 다섯 살 됨직한 중대가리에게로 달려들며, “이놈, 오라질 놈, 왜 술을 붓지 않어.”라고 야단을 쳤다. 중대가리는 히히 웃고 치삼을 보며 문의하는 듯이 눈짓을 하였다. 주정꾼이 눈치를 알아보고 화를 버럭내며, “에미를 붙을 이 오라질 놈들 같으니, 이놈 내가 돈이 없을 줄 알고.”하자마자 허리춤을 훔칫훔칫 하더니 일 원짜리 한 장을 꺼내어 중대가리 앞에 펄쩍 집어던졌다. 그 사품에 몇 푼 은전이 잘그랑 하며 떨어진다. - -“여보게 돈 떨어졌네, 왜 돈을 막 끼얹나.” 이런 말을 하며 일변 돈을 줍는다. 김 첨지는 취한 중에도 돈의 거처를 살피는 듯이 눈을 크게 떠서 땅을 내려다보다가 불시에 제 하는 짓이 너무 더럽다는 듯이 고개를 소스라치자 더욱 성을 내며, “봐라 봐! 이 더러운 놈들아, 내가 돈이 없나, 다리뼉다구를 꺾어놓을 놈들 같으니.”하고 치삼의 주워주는 돈을 받아, “이 원수엣 돈! 이 육시를 할 돈!”하면서, 풀매질을 친다. 벽에 맞아 떨어진 돈은 다시 술 끓이는 양푼에 떨어지며 정당한 매를 맞는다는 듯이 쨍하고 울었다. - -곱배기 두 잔은 또 부어질 겨를도 없이 말려가고 말았다. 김 첨지는 입술과 수염에 붙은 술을 빨아들이고 나서 매우 만족한 듯이 그 솔잎 송이 수염을 쓰다듬으며, “또 부어, 또 부어.”라고, 외쳤다. - -또 한 잔 먹고 나서 김 첨지는 치삼의 어깨를 치며 문득 껄껄 웃는다. 그 웃음 소리가 어떻게 컸는지 술집에 있는 이의 눈은 모두 김 첨지에게로 몰리었다. 웃는 이는 더욱 웃으며, “여보게 치삼이, 내 우스운 이야기 하나 할까. 오늘 손을 태고 정거장에까지 가지 않았겠나.” - -“그래서.” - -“갔다가 그저 오기가 안 됐데그려. 그래 전차 정류장에서 어름어름하며 손님 하나를 태울 궁리를 하지 않았나. 거기 마침 마나님이신지 여학생님이신지 - 요새야 어디 논다니와 아가씨를 구별할 수가 있던가 - <망토>를 두르고 비를 맞고 서 있겠지. 슬근슬근 가까이 가서 인력거 타시랍시요 하고 손가방을 받으랴니까 내 손을 탁 뿌리치고 홱 돌아서더니만 <왜 남을 이렇게 귀찮게 굴어!> 그 소리야말로 꾀꼬리 소리지, 허허!” - -김 첨지는 교묘하게도 정말 꾀꼬리 같은 소리를 내었다. 모든 사람은 일시에 웃었다. - -“빌어먹을 깍쟁이 같은 년, 누가 저를 어쩌나, <왜 남을 귀찮게 굴어!> 어이구 소리가 처신도 없지, 허허.” - -웃음 소리들은 높아졌다. 그러나 그 웃음 소리들이 사라지기 전에 김 첨지는 훌쩍훌쩍 울기 시작하였다. - -치삼은 어이없이 주정뱅이를 바라보며, “금방 웃고 지랄을 하더니 우는 건 또 무슨 일인가.” - -김 첨지는 연해 코를 들여마시며, “우리 마누라가 죽었다네.” - -“뭐, 마누라가 죽다니, 언제?” - -“이놈아 언제는. 오늘이지.” - -“엑기 미친 놈, 거짓말 말아.” - -“거짓말은 왜, 참말로 죽었어, 참말로... 마누라 시체를 집어 뻐들쳐놓고 내가 술을 먹다니, 내가 죽일 놈이야, 죽일 놈이야.”하고 김 첨지는 엉엉 소리를 내어 운다. - -치삼은 흥이 조금 깨어지는 얼굴로, “원 이 사람이, 참말을 하나 거짓말을 하나. 그러면 집으로 가세, 가.”하고 우는 이의 팔을 잡아당기었다. - -치삼의 끄는 손을 뿌리치더니 김 첨지는 눈물이 글썽글썽한 눈으로 싱그레 웃는다. - -“죽기는 누가 죽어.”하고 득의가 양양. - -“죽기는 왜 죽어, 생때같이 살아만 있단다. 그 오라질 년이 밥을 죽이지. 인제 나한테 속았다.”하고 어린애 모양으로 손뼉을 치며 웃는다. - -“이 사람이 정말 미쳤단 말인가. 나도 아주먼네가 앓는단 말은 들었는데.”하고, 치삼이도 어느 불안을 느끼는 듯이 김 첨지에게 또 돌아가라고 권하였다. - -“안 죽었어, 안 죽었대도그래.” - -김 첨지는 홧증을 내며 확신있게 소리를 질렀으되 그 소리엔 안 죽은 것을 믿으려고 애쓰는 가락이 있었다. 기어이 일 원어치를 채워서 곱배기 한 잔씩 더 먹고 나왔다. 궂은 비는 의연히 추적추적 내린다. - -김 첨지는 취중에도 설렁탕을 사가지고 집에 다달았다. 집이라 해도 물론 셋집이요, 또 집 전체를 세든 게 아니라 안과 뚝떨어진 행랑방 한 간을 빌려 든 것인데 물을 길어대고 한 달에 일 원씩 내는 터이다. 만일 김 첨지가 주기를 띠지 않았던들 한 발을 대문에 들여놓았을 제 그곳을 지배하는 무시무시한 정적(靜寂) - 폭풍우가 지나간 뒤의 바다 같은 정적에 다리가 떨렸으리라. - -쿨룩거리는 기침 소리도 들을 수 없다. 그르렁거리는 숨소리조차 들을 수 없다. 다만 이 무덤같은 침묵을 깨뜨리는 - 깨뜨린다느니보다 한층 더 침묵을 깊게 하고 불길하게 하는 빡빡하는 그윽한 소리, 어린애의 젖 빠는 소리가 날 뿐이다. 만일 청각(聽覺)이 예민한 이 같으면 그 빡빡 소리는 빨 따름이요, 꿀떡꿀떡 하고 젖 넘어가는 소리가 없으니 빈 젖을 빤다는 것도 짐작할는지 모르리라. - -혹은 김 첨지도 이 불길한 침묵을 짐작했는지도 모른다. 그렇지 않으면 대문에 들어서자마자 전에 없이, “이 난장 맞을 년, 남편이 들어오는데 나와보지도 않아, 이 오라질 년.”이라고 고함을 친 게 수상하다. 이 고함이야말로 제 몸을 엄습해오는 무시무시한 증을 쫓아버리려는 허장성세(虛張聲勢)인 까닭이다. - -하여간 김 첨지는 방문을 왈칵 열었다. 구역을 나게 하는 추기 - 떨어진 삿자리 밑에서 나온 먼지내, 빨지 않은 기저귀에서 나는 똥내와 오줌내, 가지각색 때가 케케히 앉은 옷내, 병인의 땀 썩은 내가 섞인 추기가 무딘 김 첨지의 코를 찔렀다. - -방안에 들어서며 설렁탕을 한구석에 놓을 사이도 없이 주정군은 목청을 있는 대로 다 내어 호통을 쳤다. - -“이런 오라질 년, 주야장천(晝夜長川) 누워만 있으면 제일이야! 남편이 와도 일어나지를 못해.”라는 소리와 함께 발길로 누운 이의 다리를 몹시 찼다. 그러나 발길에 채이는 건 사람의 살이 아니고 나무등걸과 같은 느낌이 있었다. 이때에 빽빽 소리가 응아 소리로 변하였다. 개똥이가 물었던 젖을 빼어놓고 운다. 운대도 온 얼굴을 찡그려 붙여서, 운다는 표정을 할 뿐이다. 응아 소리도 입에서 나는 게 아니고 마치 뱃속에서 나는 듯하였다. 울다가 울다가 목도 잠겼고 또 울 기운조차 시진한 것 같다. - -발로 차도 그 보람이 없는 걸 보자 남편은 아내의 머리맡으로 달려들어 그야말로 까치집 같은 환자의 머리를 꺼들어 흔들며, “이 년아, 말을 해, 말을! 입이 붙었어, 이 오라질 년!” - -“…” - -“으응, 이것 봐, 아무 말이 없네.” -“…” - -“이년아, 죽었단 말이냐, 왜 말이 없어.” - -“…” - -“으응. 또 대답이 없네, 정말 죽었나버이.” - -이러다가 누운 이의 흰 창을 덮은, 위로 치뜬 눈을 알아보자마자, “이 눈깔! 이 눈깔! 왜 나를 바라보지 못하고 천정만 보느냐, 응.”하는 말 끝엔 목이 메었다. 그러자 산 사람의 눈에서 떨어진 닭의 똥 같은 눈물이 죽은 이의 뻣뻣한 얼굴을 어룽어룽 적시었다. 문득 김 첨지는 미칠 듯이 제 얼굴을 죽은 이의 얼굴에 한테 비비대며 중얼거렸다. - -“설렁탕을 사다놓았는데 왜 먹지를 못하니, 왜 먹지를 못하니... 괴상하게도 오늘은! 운수가 좋더니만... ” diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go b/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go deleted file mode 100644 index 3825c767..00000000 --- a/vendor/golang.org/x/text/encoding/traditionalchinese/all_test.go +++ /dev/null @@ -1,114 +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 traditionalchinese - -import ( - "fmt" - "io/ioutil" - "strings" - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal" - "golang.org/x/text/encoding/internal/enctest" - "golang.org/x/text/transform" -) - -func dec(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Decode", e.NewDecoder(), nil -} -func enc(e encoding.Encoding) (dir string, t transform.Transformer, err error) { - return "Encode", e.NewEncoder(), internal.ErrASCIIReplacement -} - -func TestNonRepertoire(t *testing.T) { - testCases := []struct { - init func(e encoding.Encoding) (string, transform.Transformer, error) - e encoding.Encoding - src, want string - }{ - {dec, Big5, "\x80", "\ufffd"}, - {dec, Big5, "\x81", "\ufffd"}, - {dec, Big5, "\x81\x30", "\ufffd\x30"}, - {dec, Big5, "\x81\x40", "\ufffd"}, - {dec, Big5, "\x81\xa0", "\ufffd"}, - {dec, Big5, "\xff", "\ufffd"}, - - {enc, Big5, "갂", ""}, - {enc, Big5, "a갂", "a"}, - {enc, Big5, "\u43f0갂", "\x87@"}, - } - for _, tc := range testCases { - dir, tr, wantErr := tc.init(tc.e) - t.Run(fmt.Sprintf("%s/%v/%q", dir, tc.e, tc.src), func(t *testing.T) { - dst := make([]byte, 100) - src := []byte(tc.src) - for i := 0; i <= len(tc.src); i++ { - nDst, nSrc, err := tr.Transform(dst, src[:i], false) - if err != nil && err != transform.ErrShortSrc && err != wantErr { - t.Fatalf("error on first call to Transform: %v", err) - } - n, _, err := tr.Transform(dst[nDst:], src[nSrc:], true) - nDst += n - if err != wantErr { - t.Fatalf("(%q|%q): got %v; want %v", tc.src[:i], tc.src[i:], err, wantErr) - } - if got := string(dst[:nDst]); got != tc.want { - t.Errorf("(%q|%q):\ngot %q\nwant %q", tc.src[:i], tc.src[i:], got, tc.want) - } - } - }) - } -} - -func TestBasics(t *testing.T) { - // The encoded forms can be verified by the iconv program: - // $ echo 月日は百代 | iconv -f UTF-8 -t SHIFT-JIS | xxd - testCases := []struct { - e encoding.Encoding - encPrefix string - encSuffix string - encoded string - utf8 string - }{{ - e: Big5, - encoded: "A\x87\x40\x87\x41\x87\x45\xa1\x40\xfe\xfd\xfe\xfeZ\xa3\xe1", - utf8: "A\u43f0\u4c32\U00027267\u3000\U0002910d\u79d4Z€", - }, { - e: Big5, - encoded: "\xaa\xe1\xb6\xa1\xa4\x40\xb3\xfd\xb0\x73\xa1\x41\xbf\x57\xb0\x75" + - "\xb5\x4c\xac\xdb\xbf\xcb\xa1\x43", - utf8: "花間一壺酒,獨酌無相親。", - }} - - for _, tc := range testCases { - enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, "", "") - } -} - -func TestFiles(t *testing.T) { enctest.TestFile(t, Big5) } - -func BenchmarkEncoding(b *testing.B) { enctest.Benchmark(b, Big5) } - -// TestBig5CircumflexAndMacron tests the special cases listed in -// http://encoding.spec.whatwg.org/#big5 -// Note that these special cases aren't preserved by round-tripping through -// decoding and encoding (since -// http://encoding.spec.whatwg.org/index-big5.txt does not have an entry for -// U+0304 or U+030C), so we can't test this in TestBasics. -func TestBig5CircumflexAndMacron(t *testing.T) { - src := "\x88\x5f\x88\x60\x88\x61\x88\x62\x88\x63\x88\x64\x88\x65\x88\x66 " + - "\x88\xa2\x88\xa3\x88\xa4\x88\xa5\x88\xa6" - want := "ÓǑÒ\u00ca\u0304Ế\u00ca\u030cỀÊ " + - "ü\u00ea\u0304ế\u00ea\u030cề" - dst, err := ioutil.ReadAll(transform.NewReader( - strings.NewReader(src), Big5.NewDecoder())) - if err != nil { - t.Fatal(err) - } - if got := string(dst); got != want { - t.Fatalf("\ngot %q\nwant %q", got, want) - } -} diff --git a/vendor/golang.org/x/text/encoding/unicode/unicode_test.go b/vendor/golang.org/x/text/encoding/unicode/unicode_test.go deleted file mode 100644 index 51b4712d..00000000 --- a/vendor/golang.org/x/text/encoding/unicode/unicode_test.go +++ /dev/null @@ -1,499 +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 unicode - -import ( - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/internal/enctest" - "golang.org/x/text/transform" -) - -func TestBasics(t *testing.T) { - testCases := []struct { - e encoding.Encoding - encPrefix string - encSuffix string - encoded string - utf8 string - }{{ - e: utf16BEIB, - encoded: "\x00\x57\x00\xe4\xd8\x35\xdd\x65", - utf8: "\x57\u00e4\U0001d565", - }, { - e: utf16BEEB, - encPrefix: "\xfe\xff", - encoded: "\x00\x57\x00\xe4\xd8\x35\xdd\x65", - utf8: "\x57\u00e4\U0001d565", - }, { - e: utf16LEIB, - encoded: "\x57\x00\xe4\x00\x35\xd8\x65\xdd", - utf8: "\x57\u00e4\U0001d565", - }, { - e: utf16LEEB, - encPrefix: "\xff\xfe", - encoded: "\x57\x00\xe4\x00\x35\xd8\x65\xdd", - utf8: "\x57\u00e4\U0001d565", - }} - - for _, tc := range testCases { - enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, tc.encPrefix, tc.encSuffix) - } -} - -func TestFiles(t *testing.T) { - enctest.TestFile(t, UTF8) - enctest.TestFile(t, utf16LEIB) -} - -func BenchmarkEncoding(b *testing.B) { - enctest.Benchmark(b, UTF8) - enctest.Benchmark(b, utf16LEIB) -} - -var ( - utf16LEIB = UTF16(LittleEndian, IgnoreBOM) // UTF-16LE (atypical interpretation) - utf16LEUB = UTF16(LittleEndian, UseBOM) // UTF-16, LE - utf16LEEB = UTF16(LittleEndian, ExpectBOM) // UTF-16, LE, Expect - utf16BEIB = UTF16(BigEndian, IgnoreBOM) // UTF-16BE (atypical interpretation) - utf16BEUB = UTF16(BigEndian, UseBOM) // UTF-16 default - utf16BEEB = UTF16(BigEndian, ExpectBOM) // UTF-16 Expect -) - -func TestUTF16(t *testing.T) { - testCases := []struct { - desc string - src string - notEOF bool // the inverse of atEOF - sizeDst int - want string - nSrc int - err error - t transform.Transformer - }{{ - desc: "utf-16 IgnoreBOM dec: empty string", - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16 UseBOM dec: empty string", - t: utf16BEUB.NewDecoder(), - }, { - desc: "utf-16 ExpectBOM dec: empty string", - err: ErrMissingBOM, - t: utf16BEEB.NewDecoder(), - }, { - desc: "utf-16 dec: BOM determines encoding BE (RFC 2781:3.3)", - src: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 12, - t: utf16BEUB.NewDecoder(), - }, { - desc: "utf-16 dec: BOM determines encoding LE (RFC 2781:3.3)", - src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 12, - t: utf16LEUB.NewDecoder(), - }, { - desc: "utf-16 dec: BOM determines encoding LE, change default (RFC 2781:3.3)", - src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 12, - t: utf16BEUB.NewDecoder(), - }, { - desc: "utf-16 dec: Fail on missing BOM when required", - src: "\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x00\x52\x00\x61", - sizeDst: 100, - want: "", - nSrc: 0, - err: ErrMissingBOM, - t: utf16BEEB.NewDecoder(), - }, { - desc: "utf-16 dec: SHOULD interpret text as big-endian when BOM not present (RFC 2781:4.3)", - src: "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 10, - t: utf16BEUB.NewDecoder(), - }, { - // This is an error according to RFC 2781. But errors in RFC 2781 are - // open to interpretations, so I guess this is fine. - desc: "utf-16le dec: incorrect BOM is an error (RFC 2781:4.1)", - src: "\xFE\xFF\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - sizeDst: 100, - want: "\uFFFE\U00012345=Ra", - nSrc: 12, - t: utf16LEIB.NewDecoder(), - }, { - desc: "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - nSrc: 7, - t: utf16LEUB.NewEncoder(), - }, { - desc: "utf-16 enc: SHOULD write BOM (RFC 2781:3.3)", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - nSrc: 7, - t: utf16BEUB.NewEncoder(), - }, { - desc: "utf-16le enc: MUST NOT write BOM (RFC 2781:3.3)", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00", - nSrc: 7, - t: utf16LEIB.NewEncoder(), - }, { - desc: "utf-16be dec: incorrect UTF-16: odd bytes", - src: "\x00", - sizeDst: 100, - want: "\uFFFD", - nSrc: 1, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16be dec: unpaired surrogate, odd bytes", - src: "\xD8\x45\x00", - sizeDst: 100, - want: "\uFFFD\uFFFD", - nSrc: 3, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16be dec: unpaired low surrogate + valid text", - src: "\xD8\x45\x00a", - sizeDst: 100, - want: "\uFFFDa", - nSrc: 4, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16be dec: unpaired low surrogate + valid text + single byte", - src: "\xD8\x45\x00ab", - sizeDst: 100, - want: "\uFFFDa\uFFFD", - nSrc: 5, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16le dec: unpaired high surrogate", - src: "\x00\x00\x00\xDC\x12\xD8", - sizeDst: 100, - want: "\x00\uFFFD\uFFFD", - nSrc: 6, - t: utf16LEIB.NewDecoder(), - }, { - desc: "utf-16be dec: two unpaired low surrogates", - src: "\xD8\x45\xD8\x12", - sizeDst: 100, - want: "\uFFFD\uFFFD", - nSrc: 4, - t: utf16BEIB.NewDecoder(), - }, { - desc: "utf-16be dec: short dst", - src: "\x00a", - sizeDst: 0, - want: "", - nSrc: 0, - t: utf16BEIB.NewDecoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16be dec: short dst surrogate", - src: "\xD8\xF5\xDC\x12", - sizeDst: 3, - want: "", - nSrc: 0, - t: utf16BEIB.NewDecoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16be dec: short dst trailing byte", - src: "\x00", - sizeDst: 2, - want: "", - nSrc: 0, - t: utf16BEIB.NewDecoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16be dec: short src", - src: "\x00", - notEOF: true, - sizeDst: 3, - want: "", - nSrc: 0, - t: utf16BEIB.NewDecoder(), - err: transform.ErrShortSrc, - }, { - desc: "utf-16 enc", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - nSrc: 7, - t: utf16BEUB.NewEncoder(), - }, { - desc: "utf-16 enc: short dst normal", - src: "\U00012345=Ra", - sizeDst: 9, - want: "\xD8\x08\xDF\x45\x00\x3D\x00\x52", - nSrc: 6, - t: utf16BEIB.NewEncoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16 enc: short dst surrogate", - src: "\U00012345=Ra", - sizeDst: 3, - want: "", - nSrc: 0, - t: utf16BEIB.NewEncoder(), - err: transform.ErrShortDst, - }, { - desc: "utf-16 enc: short src", - src: "\U00012345=Ra\xC2", - notEOF: true, - sizeDst: 100, - want: "\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61", - nSrc: 7, - t: utf16BEIB.NewEncoder(), - err: transform.ErrShortSrc, - }, { - desc: "utf-16be dec: don't change byte order mid-stream", - src: "\xFE\xFF\xD8\x08\xDF\x45\x00\x3D\xFF\xFE\x00\x52\x00\x61", - sizeDst: 100, - want: "\U00012345=\ufffeRa", - nSrc: 14, - t: utf16BEUB.NewDecoder(), - }, { - desc: "utf-16le dec: don't change byte order mid-stream", - src: "\xFF\xFE\x08\xD8\x45\xDF\x3D\x00\xFF\xFE\xFE\xFF\x52\x00\x61\x00", - sizeDst: 100, - want: "\U00012345=\ufeff\ufffeRa", - nSrc: 16, - t: utf16LEUB.NewDecoder(), - }} - for i, tc := range testCases { - b := make([]byte, tc.sizeDst) - nDst, nSrc, err := tc.t.Transform(b, []byte(tc.src), !tc.notEOF) - if err != tc.err { - t.Errorf("%d:%s: error was %v; want %v", i, tc.desc, err, tc.err) - } - if got := string(b[:nDst]); got != tc.want { - t.Errorf("%d:%s: result was %q: want %q", i, tc.desc, got, tc.want) - } - if nSrc != tc.nSrc { - t.Errorf("%d:%s: nSrc was %d; want %d", i, tc.desc, nSrc, tc.nSrc) - } - } -} - -func TestUTF8Decoder(t *testing.T) { - testCases := []struct { - desc string - src string - notEOF bool // the inverse of atEOF - sizeDst int - want string - nSrc int - err error - }{{ - desc: "empty string, empty dest buffer", - }, { - desc: "empty string", - sizeDst: 8, - }, { - desc: "empty string, streaming", - notEOF: true, - sizeDst: 8, - }, { - desc: "ascii", - src: "abcde", - sizeDst: 8, - want: "abcde", - nSrc: 5, - }, { - desc: "ascii and error", - src: "ab\x80de", - sizeDst: 7, - want: "ab\ufffdde", - nSrc: 5, - }, { - desc: "valid two-byte sequence", - src: "a\u0300bc", - sizeDst: 7, - want: "a\u0300bc", - nSrc: 5, - }, { - desc: "valid three-byte sequence", - src: "a\u0300中", - sizeDst: 7, - want: "a\u0300中", - nSrc: 6, - }, { - desc: "valid four-byte sequence", - src: "a中\U00016F50", - sizeDst: 8, - want: "a中\U00016F50", - nSrc: 8, - }, { - desc: "short source buffer", - src: "abc\xf0\x90", - notEOF: true, - sizeDst: 10, - want: "abc", - nSrc: 3, - err: transform.ErrShortSrc, - }, { - // We don't check for the maximal subpart of an ill-formed subsequence - // at the end of an open segment. - desc: "complete invalid that looks like short at end", - src: "abc\xf0\x80", - notEOF: true, - sizeDst: 10, - want: "abc", // instead of "abc\ufffd\ufffd", - nSrc: 3, - err: transform.ErrShortSrc, - }, { - desc: "incomplete sequence at end", - src: "a\x80bc\xf0\x90", - sizeDst: 9, - want: "a\ufffdbc\ufffd", - nSrc: 6, - }, { - desc: "invalid second byte", - src: "abc\xf0dddd", - sizeDst: 10, - want: "abc\ufffddddd", - nSrc: 8, - }, { - desc: "invalid second byte at end", - src: "abc\xf0d", - sizeDst: 10, - want: "abc\ufffdd", - nSrc: 5, - }, { - desc: "invalid third byte", - src: "a\u0300bc\xf0\x90dddd", - sizeDst: 12, - want: "a\u0300bc\ufffddddd", - nSrc: 11, - }, { - desc: "invalid third byte at end", - src: "a\u0300bc\xf0\x90d", - sizeDst: 12, - want: "a\u0300bc\ufffdd", - nSrc: 8, - }, { - desc: "invalid fourth byte, tight buffer", - src: "a\u0300bc\xf0\x90\x80d", - sizeDst: 9, - want: "a\u0300bc\ufffdd", - nSrc: 9, - }, { - desc: "invalid fourth byte at end", - src: "a\u0300bc\xf0\x90\x80", - sizeDst: 8, - want: "a\u0300bc\ufffd", - nSrc: 8, - }, { - desc: "invalid fourth byte and short four byte sequence", - src: "a\u0300bc\xf0\x90\x80\xf0\x90\x80", - notEOF: true, - sizeDst: 20, - want: "a\u0300bc\ufffd", - nSrc: 8, - err: transform.ErrShortSrc, - }, { - desc: "valid four-byte sequence overflowing short buffer", - src: "a\u0300bc\xf0\x90\x80\x80", - notEOF: true, - sizeDst: 8, - want: "a\u0300bc", - nSrc: 5, - err: transform.ErrShortDst, - }, { - desc: "invalid fourth byte at end short, but short dst", - src: "a\u0300bc\xf0\x90\x80\xf0\x90\x80", - notEOF: true, - sizeDst: 8, - // More bytes would fit in the buffer, but this seems to require a more - // complicated and slower algorithm. - want: "a\u0300bc", // instead of "a\u0300bc" - nSrc: 5, - err: transform.ErrShortDst, - }, { - desc: "short dst for error", - src: "abc\x80", - notEOF: true, - sizeDst: 5, - want: "abc", - nSrc: 3, - err: transform.ErrShortDst, - }, { - desc: "adjusting short dst buffer", - src: "abc\x80ef", - notEOF: true, - sizeDst: 6, - want: "abc\ufffd", - nSrc: 4, - err: transform.ErrShortDst, - }} - tr := UTF8.NewDecoder() - for i, tc := range testCases { - b := make([]byte, tc.sizeDst) - nDst, nSrc, err := tr.Transform(b, []byte(tc.src), !tc.notEOF) - if err != tc.err { - t.Errorf("%d:%s: error was %v; want %v", i, tc.desc, err, tc.err) - } - if got := string(b[:nDst]); got != tc.want { - t.Errorf("%d:%s: result was %q: want %q", i, tc.desc, got, tc.want) - } - if nSrc != tc.nSrc { - t.Errorf("%d:%s: nSrc was %d; want %d", i, tc.desc, nSrc, tc.nSrc) - } - } -} - -func TestBOMOverride(t *testing.T) { - dec := BOMOverride(charmap.CodePage437.NewDecoder()) - dst := make([]byte, 100) - for i, tc := range []struct { - src string - atEOF bool - dst string - nSrc int - err error - }{ - 0: {"H\x82ll\x93", true, "Héllô", 5, nil}, - 1: {"\uFEFFHéllö", true, "Héllö", 10, nil}, - 2: {"\xFE\xFF\x00H\x00e\x00l\x00l\x00o", true, "Hello", 12, nil}, - 3: {"\xFF\xFEH\x00e\x00l\x00l\x00o\x00", true, "Hello", 12, nil}, - 4: {"\uFEFF", true, "", 3, nil}, - 5: {"\xFE\xFF", true, "", 2, nil}, - 6: {"\xFF\xFE", true, "", 2, nil}, - 7: {"\xEF\xBB", true, "\u2229\u2557", 2, nil}, - 8: {"\xEF", true, "\u2229", 1, nil}, - 9: {"", true, "", 0, nil}, - 10: {"\xFE", true, "\u25a0", 1, nil}, - 11: {"\xFF", true, "\u00a0", 1, nil}, - 12: {"\xEF\xBB", false, "", 0, transform.ErrShortSrc}, - 13: {"\xEF", false, "", 0, transform.ErrShortSrc}, - 14: {"", false, "", 0, transform.ErrShortSrc}, - 15: {"\xFE", false, "", 0, transform.ErrShortSrc}, - 16: {"\xFF", false, "", 0, transform.ErrShortSrc}, - 17: {"\xFF\xFE", false, "", 0, transform.ErrShortSrc}, - } { - dec.Reset() - nDst, nSrc, err := dec.Transform(dst, []byte(tc.src), tc.atEOF) - got := string(dst[:nDst]) - if nSrc != tc.nSrc { - t.Errorf("%d: nSrc: got %d; want %d", i, nSrc, tc.nSrc) - } - if got != tc.dst { - t.Errorf("%d: got %+q; want %+q", i, got, tc.dst) - } - if err != tc.err { - t.Errorf("%d: error: got %v; want %v", i, err, tc.err) - } - } -} diff --git a/vendor/golang.org/x/text/encoding/unicode/utf32/utf32.go b/vendor/golang.org/x/text/encoding/unicode/utf32/utf32.go deleted file mode 100644 index 48b21521..00000000 --- a/vendor/golang.org/x/text/encoding/unicode/utf32/utf32.go +++ /dev/null @@ -1,296 +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 utf32 provides the UTF-32 Unicode encoding. -// -// Please note that support for UTF-32 is discouraged as it is a rare and -// inefficient encoding, unfit for use as an interchange format. For use -// on the web, the W3C strongly discourages its use -// (https://www.w3.org/TR/html5/document-metadata.html#charset) -// while WHATWG directly prohibits supporting it -// (https://html.spec.whatwg.org/multipage/syntax.html#character-encodings). -package utf32 // import "golang.org/x/text/encoding/unicode/utf32" - -import ( - "errors" - "unicode/utf8" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal/identifier" - "golang.org/x/text/transform" -) - -// All lists a configuration for each IANA-defined UTF-32 variant. -var All = []encoding.Encoding{ - UTF32(BigEndian, UseBOM), - UTF32(BigEndian, IgnoreBOM), - UTF32(LittleEndian, IgnoreBOM), -} - -// ErrMissingBOM means that decoding UTF-32 input with ExpectBOM did not -// find a starting byte order mark. -var ErrMissingBOM = errors.New("encoding: missing byte order mark") - -// UTF32 returns a UTF-32 Encoding for the given default endianness and -// byte order mark (BOM) policy. -// -// When decoding from UTF-32 to UTF-8, if the BOMPolicy is IgnoreBOM then -// neither BOMs U+FEFF nor ill-formed code units 0xFFFE0000 in the input -// stream will affect the endianness used for decoding. Instead BOMs will -// be output as their standard UTF-8 encoding "\xef\xbb\xbf" while -// 0xFFFE0000 code units will be output as "\xef\xbf\xbd", the standard -// UTF-8 encoding for the Unicode replacement character. If the BOMPolicy -// is UseBOM or ExpectBOM a starting BOM is not written to the UTF-8 -// output. Instead, it overrides the default endianness e for the remainder -// of the transformation. Any subsequent BOMs U+FEFF or ill-formed code -// units 0xFFFE0000 will not affect the endianness used, and will instead -// be output as their standard UTF-8 (replacement) encodings. For UseBOM, -// if there is no starting BOM, it will proceed with the default -// Endianness. For ExpectBOM, in that case, the transformation will return -// early with an ErrMissingBOM error. -// -// When encoding from UTF-8 to UTF-32, a BOM will be inserted at the start -// of the output if the BOMPolicy is UseBOM or ExpectBOM. Otherwise, a BOM -// will not be inserted. The UTF-8 input does not need to contain a BOM. -// -// There is no concept of a 'native' endianness. If the UTF-32 data is -// produced and consumed in a greater context that implies a certain -// endianness, use IgnoreBOM. Otherwise, use ExpectBOM and always produce -// and consume a BOM. -// -// In the language of http://www.unicode.org/faq/utf_bom.html#bom10, -// IgnoreBOM corresponds to "Where the precise type of the data stream is -// known... the BOM should not be used" and ExpectBOM corresponds to "A -// particular protocol... may require use of the BOM". -func UTF32(e Endianness, b BOMPolicy) encoding.Encoding { - return utf32Encoding{config{e, b}, mibValue[e][b&bomMask]} -} - -// mibValue maps Endianness and BOMPolicy settings to MIB constants for UTF-32. -// Note that some configurations map to the same MIB identifier. -var mibValue = map[Endianness][numBOMValues]identifier.MIB{ - BigEndian: [numBOMValues]identifier.MIB{ - IgnoreBOM: identifier.UTF32BE, - UseBOM: identifier.UTF32, - }, - LittleEndian: [numBOMValues]identifier.MIB{ - IgnoreBOM: identifier.UTF32LE, - UseBOM: identifier.UTF32, - }, - // ExpectBOM is not widely used and has no valid MIB identifier. -} - -// BOMPolicy is a UTF-32 encodings's byte order mark policy. -type BOMPolicy uint8 - -const ( - writeBOM BOMPolicy = 0x01 - acceptBOM BOMPolicy = 0x02 - requireBOM BOMPolicy = 0x04 - bomMask BOMPolicy = 0x07 - - // HACK: numBOMValues == 8 triggers a bug in the 1.4 compiler (cannot have a - // map of an array of length 8 of a type that is also used as a key or value - // in another map). See golang.org/issue/11354. - // TODO: consider changing this value back to 8 if the use of 1.4.* has - // been minimized. - numBOMValues = 8 + 1 - - // IgnoreBOM means to ignore any byte order marks. - IgnoreBOM BOMPolicy = 0 - // Unicode-compliant interpretation for UTF-32BE/LE. - - // UseBOM means that the UTF-32 form may start with a byte order mark, - // which will be used to override the default encoding. - UseBOM BOMPolicy = writeBOM | acceptBOM - // Unicode-compliant interpretation for UTF-32. - - // ExpectBOM means that the UTF-32 form must start with a byte order mark, - // which will be used to override the default encoding. - ExpectBOM BOMPolicy = writeBOM | acceptBOM | requireBOM - // Consistent with BOMPolicy definition in golang.org/x/text/encoding/unicode -) - -// Endianness is a UTF-32 encoding's default endianness. -type Endianness bool - -const ( - // BigEndian is UTF-32BE. - BigEndian Endianness = false - // LittleEndian is UTF-32LE. - LittleEndian Endianness = true -) - -type config struct { - endianness Endianness - bomPolicy BOMPolicy -} - -type utf32Encoding struct { - config - mib identifier.MIB -} - -func (u utf32Encoding) NewDecoder() *encoding.Decoder { - return &encoding.Decoder{Transformer: &utf32Decoder{ - initial: u.config, - current: u.config, - }} -} - -func (u utf32Encoding) NewEncoder() *encoding.Encoder { - return &encoding.Encoder{Transformer: &utf32Encoder{ - endianness: u.endianness, - initialBOMPolicy: u.bomPolicy, - currentBOMPolicy: u.bomPolicy, - }} -} - -func (u utf32Encoding) ID() (mib identifier.MIB, other string) { - return u.mib, "" -} - -func (u utf32Encoding) String() string { - e, b := "B", "" - if u.endianness == LittleEndian { - e = "L" - } - switch u.bomPolicy { - case ExpectBOM: - b = "Expect" - case UseBOM: - b = "Use" - case IgnoreBOM: - b = "Ignore" - } - return "UTF-32" + e + "E (" + b + " BOM)" -} - -type utf32Decoder struct { - initial config - current config -} - -func (u *utf32Decoder) Reset() { - u.current = u.initial -} - -func (u *utf32Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if len(src) == 0 { - if atEOF && u.current.bomPolicy&requireBOM != 0 { - return 0, 0, ErrMissingBOM - } - return 0, 0, nil - } - if u.current.bomPolicy&acceptBOM != 0 { - if len(src) < 4 { - return 0, 0, transform.ErrShortSrc - } - switch { - case src[0] == 0x00 && src[1] == 0x00 && src[2] == 0xfe && src[3] == 0xff: - u.current.endianness = BigEndian - nSrc = 4 - case src[0] == 0xff && src[1] == 0xfe && src[2] == 0x00 && src[3] == 0x00: - u.current.endianness = LittleEndian - nSrc = 4 - default: - if u.current.bomPolicy&requireBOM != 0 { - return 0, 0, ErrMissingBOM - } - } - u.current.bomPolicy = IgnoreBOM - } - - var r rune - var dSize, sSize int - for nSrc < len(src) { - if nSrc+3 < len(src) { - x := uint32(src[nSrc+0])<<24 | uint32(src[nSrc+1])<<16 | - uint32(src[nSrc+2])<<8 | uint32(src[nSrc+3]) - if u.current.endianness == LittleEndian { - x = x>>24 | (x >> 8 & 0x0000FF00) | (x << 8 & 0x00FF0000) | x<<24 - } - r, sSize = rune(x), 4 - if dSize = utf8.RuneLen(r); dSize < 0 { - r, dSize = utf8.RuneError, 3 - } - } else if atEOF { - // 1..3 trailing bytes. - r, dSize, sSize = utf8.RuneError, 3, len(src)-nSrc - } else { - err = transform.ErrShortSrc - break - } - if nDst+dSize > len(dst) { - err = transform.ErrShortDst - break - } - nDst += utf8.EncodeRune(dst[nDst:], r) - nSrc += sSize - } - return nDst, nSrc, err -} - -type utf32Encoder struct { - endianness Endianness - initialBOMPolicy BOMPolicy - currentBOMPolicy BOMPolicy -} - -func (u *utf32Encoder) Reset() { - u.currentBOMPolicy = u.initialBOMPolicy -} - -func (u *utf32Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if u.currentBOMPolicy&writeBOM != 0 { - if len(dst) < 4 { - return 0, 0, transform.ErrShortDst - } - dst[0], dst[1], dst[2], dst[3] = 0x00, 0x00, 0xfe, 0xff - u.currentBOMPolicy = IgnoreBOM - nDst = 4 - } - - r, size := rune(0), 0 - for nSrc < len(src) { - r = rune(src[nSrc]) - - // Decode a 1-byte rune. - if r < utf8.RuneSelf { - size = 1 - - } else { - // Decode a multi-byte rune. - r, size = utf8.DecodeRune(src[nSrc:]) - if size == 1 { - // All valid runes of size 1 (those below utf8.RuneSelf) were - // handled above. We have invalid UTF-8 or we haven't seen the - // full character yet. - if !atEOF && !utf8.FullRune(src[nSrc:]) { - err = transform.ErrShortSrc - break - } - } - } - - if nDst+4 > len(dst) { - err = transform.ErrShortDst - break - } - - dst[nDst+0] = uint8(r >> 24) - dst[nDst+1] = uint8(r >> 16) - dst[nDst+2] = uint8(r >> 8) - dst[nDst+3] = uint8(r) - nDst += 4 - nSrc += size - } - - if u.endianness == LittleEndian { - for i := 0; i < nDst; i += 4 { - dst[i], dst[i+1], dst[i+2], dst[i+3] = dst[i+3], dst[i+2], dst[i+1], dst[i] - } - } - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go b/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go deleted file mode 100644 index cd6158e5..00000000 --- a/vendor/golang.org/x/text/encoding/unicode/utf32/utf32_test.go +++ /dev/null @@ -1,248 +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 utf32 - -import ( - "testing" - - "golang.org/x/text/encoding" - "golang.org/x/text/encoding/internal/enctest" - "golang.org/x/text/transform" -) - -var ( - utf32LEIB = UTF32(LittleEndian, IgnoreBOM) // UTF-32LE (atypical interpretation) - utf32LEUB = UTF32(LittleEndian, UseBOM) // UTF-32, LE - // utf32LEEB = UTF32(LittleEndian, ExpectBOM) // UTF-32, LE, Expect - covered in encoding_test.go - utf32BEIB = UTF32(BigEndian, IgnoreBOM) // UTF-32BE (atypical interpretation) - utf32BEUB = UTF32(BigEndian, UseBOM) // UTF-32 default - utf32BEEB = UTF32(BigEndian, ExpectBOM) // UTF-32 Expect -) - -func TestBasics(t *testing.T) { - testCases := []struct { - e encoding.Encoding - encPrefix string - encSuffix string - encoded string - utf8 string - }{{ - e: utf32BEIB, - encoded: "\x00\x00\x00\x57\x00\x00\x00\xe4\x00\x01\xd5\x65", - utf8: "\x57\u00e4\U0001d565", - }, { - e: UTF32(BigEndian, ExpectBOM), - encPrefix: "\x00\x00\xfe\xff", - encoded: "\x00\x00\x00\x57\x00\x00\x00\xe4\x00\x01\xd5\x65", - utf8: "\x57\u00e4\U0001d565", - }, { - e: UTF32(LittleEndian, IgnoreBOM), - encoded: "\x57\x00\x00\x00\xe4\x00\x00\x00\x65\xd5\x01\x00", - utf8: "\x57\u00e4\U0001d565", - }, { - e: UTF32(LittleEndian, ExpectBOM), - encPrefix: "\xff\xfe\x00\x00", - encoded: "\x57\x00\x00\x00\xe4\x00\x00\x00\x65\xd5\x01\x00", - utf8: "\x57\u00e4\U0001d565", - }} - - for _, tc := range testCases { - enctest.TestEncoding(t, tc.e, tc.encoded, tc.utf8, tc.encPrefix, tc.encSuffix) - } -} - -func TestFiles(t *testing.T) { enctest.TestFile(t, utf32BEIB) } - -func BenchmarkEncoding(b *testing.B) { enctest.Benchmark(b, utf32BEIB) } - -func TestUTF32(t *testing.T) { - testCases := []struct { - desc string - src string - notEOF bool // the inverse of atEOF - sizeDst int - want string - nSrc int - err error - t transform.Transformer - }{{ - desc: "utf-32 IgnoreBOM dec: empty string", - t: utf32BEIB.NewDecoder(), - }, { - desc: "utf-32 UseBOM dec: empty string", - t: utf32BEUB.NewDecoder(), - }, { - desc: "utf-32 ExpectBOM dec: empty string", - err: ErrMissingBOM, - t: utf32BEEB.NewDecoder(), - }, { - desc: "utf-32be dec: Doesn't interpret U+FEFF as BOM", - src: "\x00\x00\xFE\xFF\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61", - sizeDst: 100, - want: "\uFEFF\U00012345=Ra", - nSrc: 20, - t: utf32BEIB.NewDecoder(), - }, { - desc: "utf-32be dec: Interprets little endian U+FEFF as invalid", - src: "\xFF\xFE\x00\x00\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61", - sizeDst: 100, - want: "\uFFFD\U00012345=Ra", - nSrc: 20, - t: utf32BEIB.NewDecoder(), - }, { - desc: "utf-32le dec: Doesn't interpret U+FEFF as BOM", - src: "\xFF\xFE\x00\x00\x45\x23\x01\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61\x00\x00\x00", - sizeDst: 100, - want: "\uFEFF\U00012345=Ra", - nSrc: 20, - t: utf32LEIB.NewDecoder(), - }, { - desc: "utf-32le dec: Interprets big endian U+FEFF as invalid", - src: "\x00\x00\xFE\xFF\x45\x23\x01\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61\x00\x00\x00", - sizeDst: 100, - want: "\uFFFD\U00012345=Ra", - nSrc: 20, - t: utf32LEIB.NewDecoder(), - }, { - desc: "utf-32 enc: Writes big-endian BOM", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\x00\x00\xFE\xFF\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61", - nSrc: 7, - t: utf32BEUB.NewEncoder(), - }, { - desc: "utf-32 enc: Writes little-endian BOM", - src: "\U00012345=Ra", - sizeDst: 100, - want: "\xFF\xFE\x00\x00\x45\x23\x01\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61\x00\x00\x00", - nSrc: 7, - t: utf32LEUB.NewEncoder(), - }, { - desc: "utf-32 dec: Interprets text using big-endian default when BOM not present", - src: "\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 16, - t: utf32BEUB.NewDecoder(), - }, { - desc: "utf-32 dec: Interprets text using little-endian default when BOM not present", - src: "\x45\x23\x01\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61\x00\x00\x00", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 16, - t: utf32LEUB.NewDecoder(), - }, { - desc: "utf-32 dec: BOM determines encoding BE", - src: "\x00\x00\xFE\xFF\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 20, - t: utf32BEUB.NewDecoder(), - }, { - desc: "utf-32 dec: BOM determines encoding LE", - src: "\xFF\xFE\x00\x00\x45\x23\x01\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61\x00\x00\x00", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 20, - t: utf32LEUB.NewDecoder(), - }, { - desc: "utf-32 dec: BOM determines encoding LE, change default", - src: "\xFF\xFE\x00\x00\x45\x23\x01\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61\x00\x00\x00", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 20, - t: utf32BEUB.NewDecoder(), - }, { - desc: "utf-32 dec: BOM determines encoding BE, change default", - src: "\x00\x00\xFE\xFF\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61", - sizeDst: 100, - want: "\U00012345=Ra", - nSrc: 20, - t: utf32LEUB.NewDecoder(), - }, { - desc: "utf-32 dec: Don't change big-endian byte order mid-stream", - src: "\x00\x01\x23\x45\x00\x00\x00\x3D\xFF\xFE\x00\x00\x00\x00\xFE\xFF\x00\x00\x00\x52\x00\x00\x00\x61", - sizeDst: 100, - want: "\U00012345=\uFFFD\uFEFFRa", - nSrc: 24, - t: utf32BEUB.NewDecoder(), - }, { - desc: "utf-32 dec: Don't change little-endian byte order mid-stream", - src: "\x45\x23\x01\x00\x3D\x00\x00\x00\x00\x00\xFE\xFF\xFF\xFE\x00\x00\x52\x00\x00\x00\x61\x00\x00\x00", - sizeDst: 100, - want: "\U00012345=\uFFFD\uFEFFRa", - nSrc: 24, - t: utf32LEUB.NewDecoder(), - }, { - desc: "utf-32 dec: Fail on missing BOM when required", - src: "\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61", - sizeDst: 100, - want: "", - nSrc: 0, - err: ErrMissingBOM, - t: utf32BEEB.NewDecoder(), - }, { - desc: "utf-32 enc: Short dst", - src: "\U00012345=Ra", - sizeDst: 15, - want: "\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52", - nSrc: 6, - err: transform.ErrShortDst, - t: utf32BEIB.NewEncoder(), - }, { - desc: "utf-32 enc: Short src", - src: "\U00012345=Ra\xC2", - notEOF: true, - sizeDst: 100, - want: "\x00\x01\x23\x45\x00\x00\x00\x3D\x00\x00\x00\x52\x00\x00\x00\x61", - nSrc: 7, - err: transform.ErrShortSrc, - t: utf32BEIB.NewEncoder(), - }, { - desc: "utf-32 enc: Invalid input", - src: "\x80\xC1\xC2\x7F\xC2", - sizeDst: 100, - want: "\x00\x00\xFF\xFD\x00\x00\xFF\xFD\x00\x00\xFF\xFD\x00\x00\x00\x7F\x00\x00\xFF\xFD", - nSrc: 5, - t: utf32BEIB.NewEncoder(), - }, { - desc: "utf-32 dec: Short dst", - src: "\x00\x00\x00\x41", - sizeDst: 0, - want: "", - nSrc: 0, - err: transform.ErrShortDst, - t: utf32BEIB.NewDecoder(), - }, { - desc: "utf-32 dec: Short src", - src: "\x00\x00\x00", - notEOF: true, - sizeDst: 4, - want: "", - nSrc: 0, - err: transform.ErrShortSrc, - t: utf32BEIB.NewDecoder(), - }, { - desc: "utf-32 dec: Invalid input", - src: "\x00\x00\xD8\x00\x00\x00\xDF\xFF\x00\x11\x00\x00\x00\x00\x00", - sizeDst: 100, - want: "\uFFFD\uFFFD\uFFFD\uFFFD", - nSrc: 15, - t: utf32BEIB.NewDecoder(), - }} - for i, tc := range testCases { - b := make([]byte, tc.sizeDst) - nDst, nSrc, err := tc.t.Transform(b, []byte(tc.src), !tc.notEOF) - if err != tc.err { - t.Errorf("%d:%s: error was %v; want %v", i, tc.desc, err, tc.err) - } - if got := string(b[:nDst]); got != tc.want { - t.Errorf("%d:%s: result was %q: want %q", i, tc.desc, got, tc.want) - } - if nSrc != tc.nSrc { - t.Errorf("%d:%s: nSrc was %d; want %d", i, tc.desc, nSrc, tc.nSrc) - } - } -} diff --git a/vendor/golang.org/x/text/feature/plural/common.go b/vendor/golang.org/x/text/feature/plural/common.go deleted file mode 100644 index fdcb373f..00000000 --- a/vendor/golang.org/x/text/feature/plural/common.go +++ /dev/null @@ -1,70 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package plural - -// Form defines a plural form. -// -// Not all languages support all forms. Also, the meaning of each form varies -// per language. It is important to note that the name of a form does not -// necessarily correspond one-to-one with the set of numbers. For instance, -// for Croation, One matches not only 1, but also 11, 21, etc. -// -// Each language must at least support the form "other". -type Form byte - -const ( - Other Form = iota - Zero - One - Two - Few - Many -) - -var countMap = map[string]Form{ - "other": Other, - "zero": Zero, - "one": One, - "two": Two, - "few": Few, - "many": Many, -} - -type pluralCheck struct { - // category: - // 3..7: opID - // 0..2: category - cat byte - setID byte -} - -// opID identifies the type of operand in the plural rule, being i, n or f. -// (v, w, and t are treated as filters in our implementation.) -type opID byte - -const ( - opMod opID = 0x1 // is '%' used? - opNotEqual opID = 0x2 // using "!=" to compare - opI opID = 0 << 2 // integers after taking the absolute value - opN opID = 1 << 2 // full number (must be integer) - opF opID = 2 << 2 // fraction - opV opID = 3 << 2 // number of visible digits - opW opID = 4 << 2 // number of visible digits without trailing zeros - opBretonM opID = 5 << 2 // hard-wired rule for Breton - opItalian800 opID = 6 << 2 // hard-wired rule for Italian - opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan -) -const ( - // Use this plural form to indicate the next rule needs to match as well. - // The last condition in the list will have the correct plural form. - andNext = 0x7 - formMask = 0x7 - - opShift = 3 - - // numN indicates the maximum integer, or maximum mod value, for which we - // have inclusion masks. - numN = 100 - // The common denominator of the modulo that is taken. - maxMod = 100 -) diff --git a/vendor/golang.org/x/text/feature/plural/data_test.go b/vendor/golang.org/x/text/feature/plural/data_test.go deleted file mode 100644 index bd4c240f..00000000 --- a/vendor/golang.org/x/text/feature/plural/data_test.go +++ /dev/null @@ -1,197 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package plural - -type pluralTest struct { - locales string - form int - integer []string - decimal []string -} - -var ordinalTests = []pluralTest{ // 66 elements - 0: {locales: "af am ar bg bs ce cs da de dsb el es et eu fa fi fy gl gsw he hr hsb id in is iw ja km kn ko ky lt lv ml mn my nb nl pa pl prg ps pt root ru sd sh si sk sl sr sw ta te th tr ur uz yue zh zu", form: 0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 1: {locales: "sv", form: 2, integer: []string{"1", "2", "21", "22", "31", "32", "41", "42", "51", "52", "61", "62", "71", "72", "81", "82", "101", "1001"}, decimal: []string(nil)}, - 2: {locales: "sv", form: 0, integer: []string{"0", "3~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 3: {locales: "fil fr ga hy lo mo ms ro tl vi", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 4: {locales: "fil fr ga hy lo mo ms ro tl vi", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 5: {locales: "hu", form: 2, integer: []string{"1", "5"}, decimal: []string(nil)}, - 6: {locales: "hu", form: 0, integer: []string{"0", "2~4", "6~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 7: {locales: "ne", form: 2, integer: []string{"1~4"}, decimal: []string(nil)}, - 8: {locales: "ne", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 9: {locales: "be", form: 4, integer: []string{"2", "3", "22", "23", "32", "33", "42", "43", "52", "53", "62", "63", "72", "73", "82", "83", "102", "1002"}, decimal: []string(nil)}, - 10: {locales: "be", form: 0, integer: []string{"0", "1", "4~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 11: {locales: "uk", form: 4, integer: []string{"3", "23", "33", "43", "53", "63", "73", "83", "103", "1003"}, decimal: []string(nil)}, - 12: {locales: "uk", form: 0, integer: []string{"0~2", "4~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 13: {locales: "tk", form: 4, integer: []string{"6", "9", "10", "16", "19", "26", "29", "36", "39", "106", "1006"}, decimal: []string(nil)}, - 14: {locales: "tk", form: 0, integer: []string{"0~5", "7", "8", "11~15", "17", "18", "20", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 15: {locales: "kk", form: 5, integer: []string{"6", "9", "10", "16", "19", "20", "26", "29", "30", "36", "39", "40", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 16: {locales: "kk", form: 0, integer: []string{"0~5", "7", "8", "11~15", "17", "18", "21", "101", "1001"}, decimal: []string(nil)}, - 17: {locales: "it", form: 5, integer: []string{"8", "11", "80", "800"}, decimal: []string(nil)}, - 18: {locales: "it", form: 0, integer: []string{"0~7", "9", "10", "12~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 19: {locales: "ka", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 20: {locales: "ka", form: 5, integer: []string{"0", "2~16", "102", "1002"}, decimal: []string(nil)}, - 21: {locales: "ka", form: 0, integer: []string{"21~36", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 22: {locales: "sq", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 23: {locales: "sq", form: 5, integer: []string{"4", "24", "34", "44", "54", "64", "74", "84", "104", "1004"}, decimal: []string(nil)}, - 24: {locales: "sq", form: 0, integer: []string{"0", "2", "3", "5~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 25: {locales: "en", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, - 26: {locales: "en", form: 3, integer: []string{"2", "22", "32", "42", "52", "62", "72", "82", "102", "1002"}, decimal: []string(nil)}, - 27: {locales: "en", form: 4, integer: []string{"3", "23", "33", "43", "53", "63", "73", "83", "103", "1003"}, decimal: []string(nil)}, - 28: {locales: "en", form: 0, integer: []string{"0", "4~18", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 29: {locales: "mr", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 30: {locales: "mr", form: 3, integer: []string{"2", "3"}, decimal: []string(nil)}, - 31: {locales: "mr", form: 4, integer: []string{"4"}, decimal: []string(nil)}, - 32: {locales: "mr", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 33: {locales: "ca", form: 2, integer: []string{"1", "3"}, decimal: []string(nil)}, - 34: {locales: "ca", form: 3, integer: []string{"2"}, decimal: []string(nil)}, - 35: {locales: "ca", form: 4, integer: []string{"4"}, decimal: []string(nil)}, - 36: {locales: "ca", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 37: {locales: "mk", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, - 38: {locales: "mk", form: 3, integer: []string{"2", "22", "32", "42", "52", "62", "72", "82", "102", "1002"}, decimal: []string(nil)}, - 39: {locales: "mk", form: 5, integer: []string{"7", "8", "27", "28", "37", "38", "47", "48", "57", "58", "67", "68", "77", "78", "87", "88", "107", "1007"}, decimal: []string(nil)}, - 40: {locales: "mk", form: 0, integer: []string{"0", "3~6", "9~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 41: {locales: "az", form: 2, integer: []string{"1", "2", "5", "7", "8", "11", "12", "15", "17", "18", "20~22", "25", "101", "1001"}, decimal: []string(nil)}, - 42: {locales: "az", form: 4, integer: []string{"3", "4", "13", "14", "23", "24", "33", "34", "43", "44", "53", "54", "63", "64", "73", "74", "100", "1003"}, decimal: []string(nil)}, - 43: {locales: "az", form: 5, integer: []string{"0", "6", "16", "26", "36", "40", "46", "56", "106", "1006"}, decimal: []string(nil)}, - 44: {locales: "az", form: 0, integer: []string{"9", "10", "19", "29", "30", "39", "49", "59", "69", "79", "109", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 45: {locales: "gu hi", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 46: {locales: "gu hi", form: 3, integer: []string{"2", "3"}, decimal: []string(nil)}, - 47: {locales: "gu hi", form: 4, integer: []string{"4"}, decimal: []string(nil)}, - 48: {locales: "gu hi", form: 5, integer: []string{"6"}, decimal: []string(nil)}, - 49: {locales: "gu hi", form: 0, integer: []string{"0", "5", "7~20", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 50: {locales: "as bn", form: 2, integer: []string{"1", "5", "7~10"}, decimal: []string(nil)}, - 51: {locales: "as bn", form: 3, integer: []string{"2", "3"}, decimal: []string(nil)}, - 52: {locales: "as bn", form: 4, integer: []string{"4"}, decimal: []string(nil)}, - 53: {locales: "as bn", form: 5, integer: []string{"6"}, decimal: []string(nil)}, - 54: {locales: "as bn", form: 0, integer: []string{"0", "11~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 55: {locales: "or", form: 2, integer: []string{"1", "5", "7~9"}, decimal: []string(nil)}, - 56: {locales: "or", form: 3, integer: []string{"2", "3"}, decimal: []string(nil)}, - 57: {locales: "or", form: 4, integer: []string{"4"}, decimal: []string(nil)}, - 58: {locales: "or", form: 5, integer: []string{"6"}, decimal: []string(nil)}, - 59: {locales: "or", form: 0, integer: []string{"0", "10~24", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 60: {locales: "cy", form: 1, integer: []string{"0", "7~9"}, decimal: []string(nil)}, - 61: {locales: "cy", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 62: {locales: "cy", form: 3, integer: []string{"2"}, decimal: []string(nil)}, - 63: {locales: "cy", form: 4, integer: []string{"3", "4"}, decimal: []string(nil)}, - 64: {locales: "cy", form: 5, integer: []string{"5", "6"}, decimal: []string(nil)}, - 65: {locales: "cy", form: 0, integer: []string{"10~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, -} // Size: 4776 bytes - -var cardinalTests = []pluralTest{ // 113 elements - 0: {locales: "bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo root sah ses sg th to vi wo yo yue zh", form: 0, integer: []string{"0~15", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 1: {locales: "am as bn fa gu hi kn mr zu", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.0", "0.00~0.04"}}, - 2: {locales: "am as bn fa gu hi kn mr zu", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"1.1~2.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 3: {locales: "ff fr hy kab", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.5"}}, - 4: {locales: "ff fr hy kab", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"2.0~3.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 5: {locales: "pt", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.5"}}, - 6: {locales: "pt", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"2.0~3.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 7: {locales: "ast ca de en et fi fy gl io it ji nl pt_PT sv sw ur yi", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 8: {locales: "ast ca de en et fi fy gl io it ji nl pt_PT sv sw ur yi", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 9: {locales: "si", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0", "0.1", "1.0", "0.00", "0.01", "1.00", "0.000", "0.001", "1.000", "0.0000", "0.0001", "1.0000"}}, - 10: {locales: "si", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.2~0.9", "1.1~1.8", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 11: {locales: "ak bh guw ln mg nso pa ti wa", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0", "1.0", "0.00", "1.00", "0.000", "1.000", "0.0000", "1.0000"}}, - 12: {locales: "ak bh guw ln mg nso pa ti wa", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 13: {locales: "tzm", form: 2, integer: []string{"0", "1", "11~24"}, decimal: []string{"0.0", "1.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "19.0", "20.0", "21.0", "22.0", "23.0", "24.0"}}, - 14: {locales: "tzm", form: 0, integer: []string{"2~10", "100~106", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 15: {locales: "af asa az bem bez bg brx ce cgg chr ckb dv ee el eo es eu fo fur gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq sd sdh seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts ug uz ve vo vun wae xh xog", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 16: {locales: "af asa az bem bez bg brx ce cgg chr ckb dv ee el eo es eu fo fur gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq sd sdh seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts ug uz ve vo vun wae xh xog", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 17: {locales: "da", form: 2, integer: []string{"1"}, decimal: []string{"0.1~1.6"}}, - 18: {locales: "da", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "2.0~3.4", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 19: {locales: "is", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1~1.6", "10.1", "100.1", "1000.1"}}, - 20: {locales: "is", form: 0, integer: []string{"0", "2~16", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 21: {locales: "mk", form: 2, integer: []string{"1", "11", "21", "31", "41", "51", "61", "71", "101", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, - 22: {locales: "mk", form: 0, integer: []string{"0", "2~10", "12~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.2~1.0", "1.2~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 23: {locales: "fil tl", form: 2, integer: []string{"0~3", "5", "7", "8", "10~13", "15", "17", "18", "20", "21", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.3", "0.5", "0.7", "0.8", "1.0~1.3", "1.5", "1.7", "1.8", "2.0", "2.1", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 24: {locales: "fil tl", form: 0, integer: []string{"4", "6", "9", "14", "16", "19", "24", "26", "104", "1004"}, decimal: []string{"0.4", "0.6", "0.9", "1.4", "1.6", "1.9", "2.4", "2.6", "10.4", "100.4", "1000.4"}}, - 25: {locales: "lv prg", form: 1, integer: []string{"0", "10~20", "30", "40", "50", "60", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 26: {locales: "lv prg", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1", "1.0", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, - 27: {locales: "lv prg", form: 0, integer: []string{"2~9", "22~29", "102", "1002"}, decimal: []string{"0.2~0.9", "1.2~1.9", "10.2", "100.2", "1000.2"}}, - 28: {locales: "lag", form: 1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, - 29: {locales: "lag", form: 2, integer: []string{"1"}, decimal: []string{"0.1~1.6"}}, - 30: {locales: "lag", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"2.0~3.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 31: {locales: "ksh", form: 1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, - 32: {locales: "ksh", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 33: {locales: "ksh", form: 0, integer: []string{"2~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 34: {locales: "iu kw naq se sma smi smj smn sms", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 35: {locales: "iu kw naq se sma smi smj smn sms", form: 3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, - 36: {locales: "iu kw naq se sma smi smj smn sms", form: 0, integer: []string{"0", "3~17", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 37: {locales: "shi", form: 2, integer: []string{"0", "1"}, decimal: []string{"0.0~1.0", "0.00~0.04"}}, - 38: {locales: "shi", form: 4, integer: []string{"2~10"}, decimal: []string{"2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "2.00", "3.00", "4.00", "5.00", "6.00", "7.00", "8.00"}}, - 39: {locales: "shi", form: 0, integer: []string{"11~26", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"1.1~1.9", "2.1~2.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 40: {locales: "mo ro", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 41: {locales: "mo ro", form: 4, integer: []string{"0", "2~16", "101", "1001"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 42: {locales: "mo ro", form: 0, integer: []string{"20~35", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 43: {locales: "bs hr sh sr", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, - 44: {locales: "bs hr sh sr", form: 4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string{"0.2~0.4", "1.2~1.4", "2.2~2.4", "3.2~3.4", "4.2~4.4", "5.2", "10.2", "100.2", "1000.2"}}, - 45: {locales: "bs hr sh sr", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.5~1.0", "1.5~2.0", "2.5~2.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 46: {locales: "gd", form: 2, integer: []string{"1", "11"}, decimal: []string{"1.0", "11.0", "1.00", "11.00", "1.000", "11.000", "1.0000"}}, - 47: {locales: "gd", form: 3, integer: []string{"2", "12"}, decimal: []string{"2.0", "12.0", "2.00", "12.00", "2.000", "12.000", "2.0000"}}, - 48: {locales: "gd", form: 4, integer: []string{"3~10", "13~19"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "19.0", "3.00"}}, - 49: {locales: "gd", form: 0, integer: []string{"0", "20~34", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 50: {locales: "sl", form: 2, integer: []string{"1", "101", "201", "301", "401", "501", "601", "701", "1001"}, decimal: []string(nil)}, - 51: {locales: "sl", form: 3, integer: []string{"2", "102", "202", "302", "402", "502", "602", "702", "1002"}, decimal: []string(nil)}, - 52: {locales: "sl", form: 4, integer: []string{"3", "4", "103", "104", "203", "204", "303", "304", "403", "404", "503", "504", "603", "604", "703", "704", "1003"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 53: {locales: "sl", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 54: {locales: "dsb hsb", form: 2, integer: []string{"1", "101", "201", "301", "401", "501", "601", "701", "1001"}, decimal: []string{"0.1", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1", "7.1", "10.1", "100.1", "1000.1"}}, - 55: {locales: "dsb hsb", form: 3, integer: []string{"2", "102", "202", "302", "402", "502", "602", "702", "1002"}, decimal: []string{"0.2", "1.2", "2.2", "3.2", "4.2", "5.2", "6.2", "7.2", "10.2", "100.2", "1000.2"}}, - 56: {locales: "dsb hsb", form: 4, integer: []string{"3", "4", "103", "104", "203", "204", "303", "304", "403", "404", "503", "504", "603", "604", "703", "704", "1003"}, decimal: []string{"0.3", "0.4", "1.3", "1.4", "2.3", "2.4", "3.3", "3.4", "4.3", "4.4", "5.3", "5.4", "6.3", "6.4", "7.3", "7.4", "10.3", "100.3", "1000.3"}}, - 57: {locales: "dsb hsb", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "0.5~1.0", "1.5~2.0", "2.5~2.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 58: {locales: "he iw", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 59: {locales: "he iw", form: 3, integer: []string{"2"}, decimal: []string(nil)}, - 60: {locales: "he iw", form: 5, integer: []string{"20", "30", "40", "50", "60", "70", "80", "90", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 61: {locales: "he iw", form: 0, integer: []string{"0", "3~17", "101", "1001"}, decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 62: {locales: "cs sk", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 63: {locales: "cs sk", form: 4, integer: []string{"2~4"}, decimal: []string(nil)}, - 64: {locales: "cs sk", form: 5, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 65: {locales: "cs sk", form: 0, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 66: {locales: "pl", form: 2, integer: []string{"1"}, decimal: []string(nil)}, - 67: {locales: "pl", form: 4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string(nil)}, - 68: {locales: "pl", form: 5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 69: {locales: "pl", form: 0, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 70: {locales: "be", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "71.0", "81.0", "101.0", "1001.0"}}, - 71: {locales: "be", form: 4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string{"2.0", "3.0", "4.0", "22.0", "23.0", "24.0", "32.0", "33.0", "102.0", "1002.0"}}, - 72: {locales: "be", form: 5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "11.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 73: {locales: "be", form: 0, integer: []string(nil), decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.1", "1000.1"}}, - 74: {locales: "lt", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "71.0", "81.0", "101.0", "1001.0"}}, - 75: {locales: "lt", form: 4, integer: []string{"2~9", "22~29", "102", "1002"}, decimal: []string{"2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "22.0", "102.0", "1002.0"}}, - 76: {locales: "lt", form: 5, integer: []string(nil), decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.1", "1000.1"}}, - 77: {locales: "lt", form: 0, integer: []string{"0", "10~20", "30", "40", "50", "60", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 78: {locales: "mt", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 79: {locales: "mt", form: 4, integer: []string{"0", "2~10", "102~107", "1002"}, decimal: []string{"0.0", "2.0", "3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "10.0", "102.0", "1002.0"}}, - 80: {locales: "mt", form: 5, integer: []string{"11~19", "111~117", "1011"}, decimal: []string{"11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "111.0", "1011.0"}}, - 81: {locales: "mt", form: 0, integer: []string{"20~35", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 82: {locales: "ru uk", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "71", "81", "101", "1001"}, decimal: []string(nil)}, - 83: {locales: "ru uk", form: 4, integer: []string{"2~4", "22~24", "32~34", "42~44", "52~54", "62", "102", "1002"}, decimal: []string(nil)}, - 84: {locales: "ru uk", form: 5, integer: []string{"0", "5~19", "100", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 85: {locales: "ru uk", form: 0, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 86: {locales: "br", form: 2, integer: []string{"1", "21", "31", "41", "51", "61", "81", "101", "1001"}, decimal: []string{"1.0", "21.0", "31.0", "41.0", "51.0", "61.0", "81.0", "101.0", "1001.0"}}, - 87: {locales: "br", form: 3, integer: []string{"2", "22", "32", "42", "52", "62", "82", "102", "1002"}, decimal: []string{"2.0", "22.0", "32.0", "42.0", "52.0", "62.0", "82.0", "102.0", "1002.0"}}, - 88: {locales: "br", form: 4, integer: []string{"3", "4", "9", "23", "24", "29", "33", "34", "39", "43", "44", "49", "103", "1003"}, decimal: []string{"3.0", "4.0", "9.0", "23.0", "24.0", "29.0", "33.0", "34.0", "103.0", "1003.0"}}, - 89: {locales: "br", form: 5, integer: []string{"1000000"}, decimal: []string{"1000000.0", "1000000.00", "1000000.000"}}, - 90: {locales: "br", form: 0, integer: []string{"0", "5~8", "10~20", "100", "1000", "10000", "100000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.0", "100.0", "1000.0", "10000.0", "100000.0"}}, - 91: {locales: "ga", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 92: {locales: "ga", form: 3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, - 93: {locales: "ga", form: 4, integer: []string{"3~6"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "3.00", "4.00", "5.00", "6.00", "3.000", "4.000", "5.000", "6.000", "3.0000", "4.0000", "5.0000", "6.0000"}}, - 94: {locales: "ga", form: 5, integer: []string{"7~10"}, decimal: []string{"7.0", "8.0", "9.0", "10.0", "7.00", "8.00", "9.00", "10.00", "7.000", "8.000", "9.000", "10.000", "7.0000", "8.0000", "9.0000", "10.0000"}}, - 95: {locales: "ga", form: 0, integer: []string{"0", "11~25", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.0~0.9", "1.1~1.6", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 96: {locales: "gv", form: 2, integer: []string{"1", "11", "21", "31", "41", "51", "61", "71", "101", "1001"}, decimal: []string(nil)}, - 97: {locales: "gv", form: 3, integer: []string{"2", "12", "22", "32", "42", "52", "62", "72", "102", "1002"}, decimal: []string(nil)}, - 98: {locales: "gv", form: 4, integer: []string{"0", "20", "40", "60", "80", "100", "120", "140", "1000", "10000", "100000", "1000000"}, decimal: []string(nil)}, - 99: {locales: "gv", form: 5, integer: []string(nil), decimal: []string{"0.0~1.5", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 100: {locales: "gv", form: 0, integer: []string{"3~10", "13~19", "23", "103", "1003"}, decimal: []string(nil)}, - 101: {locales: "ar ars", form: 1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, - 102: {locales: "ar ars", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 103: {locales: "ar ars", form: 3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, - 104: {locales: "ar ars", form: 4, integer: []string{"3~10", "103~110", "1003"}, decimal: []string{"3.0", "4.0", "5.0", "6.0", "7.0", "8.0", "9.0", "10.0", "103.0", "1003.0"}}, - 105: {locales: "ar ars", form: 5, integer: []string{"11~26", "111", "1011"}, decimal: []string{"11.0", "12.0", "13.0", "14.0", "15.0", "16.0", "17.0", "18.0", "111.0", "1011.0"}}, - 106: {locales: "ar ars", form: 0, integer: []string{"100~102", "200~202", "300~302", "400~402", "500~502", "600", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.1", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, - 107: {locales: "cy", form: 1, integer: []string{"0"}, decimal: []string{"0.0", "0.00", "0.000", "0.0000"}}, - 108: {locales: "cy", form: 2, integer: []string{"1"}, decimal: []string{"1.0", "1.00", "1.000", "1.0000"}}, - 109: {locales: "cy", form: 3, integer: []string{"2"}, decimal: []string{"2.0", "2.00", "2.000", "2.0000"}}, - 110: {locales: "cy", form: 4, integer: []string{"3"}, decimal: []string{"3.0", "3.00", "3.000", "3.0000"}}, - 111: {locales: "cy", form: 5, integer: []string{"6"}, decimal: []string{"6.0", "6.00", "6.000", "6.0000"}}, - 112: {locales: "cy", form: 0, integer: []string{"4", "5", "7~20", "100", "1000", "10000", "100000", "1000000"}, decimal: []string{"0.1~0.9", "1.1~1.7", "10.0", "100.0", "1000.0", "10000.0", "100000.0", "1000000.0"}}, -} // Size: 8160 bytes - -// Total table size 12936 bytes (12KiB); checksum: 8456DC5D diff --git a/vendor/golang.org/x/text/feature/plural/example_test.go b/vendor/golang.org/x/text/feature/plural/example_test.go deleted file mode 100644 index c75408c0..00000000 --- a/vendor/golang.org/x/text/feature/plural/example_test.go +++ /dev/null @@ -1,46 +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 plural_test - -import ( - "golang.org/x/text/feature/plural" - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -func ExampleSelect() { - // Manually set some translations. This is typically done programmatically. - message.Set(language.English, "%d files remaining", - plural.Selectf(1, "%d", - "=0", "done!", - plural.One, "one file remaining", - plural.Other, "%[1]d files remaining", - )) - message.Set(language.Dutch, "%d files remaining", - plural.Selectf(1, "%d", - "=0", "klaar!", - // One can also use a string instead of a Kind - "one", "nog één bestand te gaan", - "other", "nog %[1]d bestanden te gaan", - )) - - p := message.NewPrinter(language.English) - p.Printf("%d files remaining", 5) - p.Println() - p.Printf("%d files remaining", 1) - p.Println() - - p = message.NewPrinter(language.Dutch) - p.Printf("%d files remaining", 1) - p.Println() - p.Printf("%d files remaining", 0) - p.Println() - - // Output: - // 5 files remaining - // one file remaining - // nog één bestand te gaan - // klaar! -} diff --git a/vendor/golang.org/x/text/feature/plural/gen.go b/vendor/golang.org/x/text/feature/plural/gen.go deleted file mode 100644 index a0de986a..00000000 --- a/vendor/golang.org/x/text/feature/plural/gen.go +++ /dev/null @@ -1,513 +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. - -// +build ignore - -package main - -// This file generates data for the CLDR plural rules, as defined in -// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules -// -// We assume a slightly simplified grammar: -// -// condition = and_condition ('or' and_condition)* samples -// and_condition = relation ('and' relation)* -// relation = expr ('=' | '!=') range_list -// expr = operand ('%' '10' '0'* )? -// operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w' -// range_list = (range | value) (',' range_list)* -// range = value'..'value -// value = digit+ -// digit = 0|1|2|3|4|5|6|7|8|9 -// -// samples = ('@integer' sampleList)? -// ('@decimal' sampleList)? -// sampleList = sampleRange (',' sampleRange)* (',' ('…'|'...'))? -// sampleRange = decimalValue ('~' decimalValue)? -// decimalValue = value ('.' value)? -// -// Symbol Value -// n absolute value of the source number (integer and decimals). -// i integer digits of n. -// v number of visible fraction digits in n, with trailing zeros. -// w number of visible fraction digits in n, without trailing zeros. -// f visible fractional digits in n, with trailing zeros. -// t visible fractional digits in n, without trailing zeros. -// -// The algorithm for which the data is generated is based on the following -// observations -// -// - the number of different sets of numbers which the plural rules use to -// test inclusion is limited, -// - most numbers that are tested on are < 100 -// -// This allows us to define a bitmap for each number < 100 where a bit i -// indicates whether this number is included in some defined set i. -// The function matchPlural in plural.go defines how we can subsequently use -// this data to determine inclusion. -// -// There are a few languages for which this doesn't work. For one Italian and -// Azerbaijan, which both test against numbers > 100 for ordinals and Breton, -// which considers whether numbers are multiples of hundreds. The model here -// could be extended to handle Italian and Azerbaijan fairly easily (by -// considering the numbers 100, 200, 300, ..., 800, 900 in addition to the first -// 100), but for now it seems easier to just hard-code these cases. - -import ( - "bufio" - "bytes" - "flag" - "fmt" - "log" - "strconv" - "strings" - - "golang.org/x/text/internal" - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -var ( - test = flag.Bool("test", false, - "test existing tables; can be used to compare web data with package data.") - outputFile = flag.String("output", "tables.go", "output file") - outputTestFile = flag.String("testoutput", "data_test.go", "output file") - - draft = flag.String("draft", - "contributed", - `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) -) - -func main() { - gen.Init() - - const pkg = "plural" - - gen.Repackage("gen_common.go", "common.go", pkg) - // Read the CLDR zip file. - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("supplemental", "main") - d.SetSectionFilter("numbers", "plurals") - data, err := d.DecodeZip(r) - if err != nil { - log.Fatalf("DecodeZip: %v", err) - } - - w := gen.NewCodeWriter() - defer w.WriteGoFile(*outputFile, pkg) - - gen.WriteCLDRVersion(w) - - genPlurals(w, data) - - w = gen.NewCodeWriter() - defer w.WriteGoFile(*outputTestFile, pkg) - - genPluralsTests(w, data) -} - -type pluralTest struct { - locales string // space-separated list of locales for this test - form int // Use int instead of Form to simplify generation. - integer []string // Entries of the form \d+ or \d+~\d+ - decimal []string // Entries of the form \f+ or \f+ +~\f+, where f is \d+\.\d+ -} - -func genPluralsTests(w *gen.CodeWriter, data *cldr.CLDR) { - w.WriteType(pluralTest{}) - - for _, plurals := range data.Supplemental().Plurals { - if plurals.Type == "" { - // The empty type is reserved for plural ranges. - continue - } - tests := []pluralTest{} - - for _, pRules := range plurals.PluralRules { - for _, rule := range pRules.PluralRule { - test := pluralTest{ - locales: pRules.Locales, - form: int(countMap[rule.Count]), - } - scan := bufio.NewScanner(strings.NewReader(rule.Data())) - scan.Split(splitTokens) - var p *[]string - for scan.Scan() { - switch t := scan.Text(); t { - case "@integer": - p = &test.integer - case "@decimal": - p = &test.decimal - case ",", "…": - default: - if p != nil { - *p = append(*p, t) - } - } - } - tests = append(tests, test) - } - } - w.WriteVar(plurals.Type+"Tests", tests) - } -} - -func genPlurals(w *gen.CodeWriter, data *cldr.CLDR) { - for _, plurals := range data.Supplemental().Plurals { - if plurals.Type == "" { - continue - } - // Initialize setMap and inclusionMasks. They are already populated with - // a few entries to serve as an example and to assign nice numbers to - // common cases. - - // setMap contains sets of numbers represented by boolean arrays where - // a true value for element i means that the number i is included. - setMap := map[[numN]bool]int{ - // The above init func adds an entry for including all numbers. - [numN]bool{1: true}: 1, // fix {1} to a nice value - [numN]bool{2: true}: 2, // fix {2} to a nice value - [numN]bool{0: true}: 3, // fix {0} to a nice value - } - - // inclusionMasks contains bit masks for every number under numN to - // indicate in which set the number is included. Bit 1 << x will be set - // if it is included in set x. - inclusionMasks := [numN]uint64{ - // Note: these entries are not complete: more bits will be set along the way. - 0: 1 << 3, - 1: 1 << 1, - 2: 1 << 2, - } - - // Create set {0..99}. We will assign this set the identifier 0. - var all [numN]bool - for i := range all { - // Mark number i as being included in the set (which has identifier 0). - inclusionMasks[i] |= 1 << 0 - // Mark number i as included in the set. - all[i] = true - } - // Register the identifier for the set. - setMap[all] = 0 - - rules := []pluralCheck{} - index := []byte{0} - langMap := map[int]byte{0: 0} // From compact language index to index - - for _, pRules := range plurals.PluralRules { - // Parse the rules. - var conds []orCondition - for _, rule := range pRules.PluralRule { - form := countMap[rule.Count] - conds = parsePluralCondition(conds, rule.Data(), form) - } - // Encode the rules. - for _, c := range conds { - // If an or condition only has filters, we create an entry for - // this filter and the set that contains all values. - empty := true - for _, b := range c.used { - empty = empty && !b - } - if empty { - rules = append(rules, pluralCheck{ - cat: byte(opMod<<opShift) | byte(c.form), - setID: 0, // all values - }) - continue - } - // We have some entries with values. - for i, set := range c.set { - if !c.used[i] { - continue - } - index, ok := setMap[set] - if !ok { - index = len(setMap) - setMap[set] = index - for i := range inclusionMasks { - if set[i] { - inclusionMasks[i] |= 1 << uint64(index) - } - } - } - rules = append(rules, pluralCheck{ - cat: byte(i<<opShift | andNext), - setID: byte(index), - }) - } - // Now set the last entry to the plural form the rule matches. - rules[len(rules)-1].cat &^= formMask - rules[len(rules)-1].cat |= byte(c.form) - } - // Point the relevant locales to the created entries. - for _, loc := range strings.Split(pRules.Locales, " ") { - if strings.TrimSpace(loc) == "" { - continue - } - lang, ok := language.CompactIndex(language.MustParse(loc)) - if !ok { - log.Printf("No compact index for locale %q", loc) - } - langMap[lang] = byte(len(index) - 1) - } - index = append(index, byte(len(rules))) - } - w.WriteVar(plurals.Type+"Rules", rules) - w.WriteVar(plurals.Type+"Index", index) - // Expand the values. - langToIndex := make([]byte, language.NumCompactTags) - for i := range langToIndex { - for p := i; ; p = int(internal.Parent[p]) { - if x, ok := langMap[p]; ok { - langToIndex[i] = x - break - } - } - } - w.WriteVar(plurals.Type+"LangToIndex", langToIndex) - // Need to convert array to slice because of golang.org/issue/7651. - // This will allow tables to be dropped when unused. This is especially - // relevant for the ordinal data, which I suspect won't be used as much. - w.WriteVar(plurals.Type+"InclusionMasks", inclusionMasks[:]) - - if len(rules) > 0xFF { - log.Fatalf("Too many entries for rules: %#x", len(rules)) - } - if len(index) > 0xFF { - log.Fatalf("Too many entries for index: %#x", len(index)) - } - if len(setMap) > 64 { // maximum number of bits. - log.Fatalf("Too many entries for setMap: %d", len(setMap)) - } - w.WriteComment( - "Slots used for %s: %X of 0xFF rules; %X of 0xFF indexes; %d of 64 sets", - plurals.Type, len(rules), len(index), len(setMap)) - // Prevent comment from attaching to the next entry. - fmt.Fprint(w, "\n\n") - } -} - -type orCondition struct { - original string // for debugging - - form Form - used [32]bool - set [32][numN]bool -} - -func (o *orCondition) add(op opID, mod int, v []int) (ok bool) { - ok = true - for _, x := range v { - if x >= maxMod { - ok = false - break - } - } - for i := 0; i < numN; i++ { - m := i - if mod != 0 { - m = i % mod - } - if !intIn(m, v) { - o.set[op][i] = false - } - } - if ok { - o.used[op] = true - } - return ok -} - -func intIn(x int, a []int) bool { - for _, y := range a { - if x == y { - return true - } - } - return false -} - -var operandIndex = map[string]opID{ - "i": opI, - "n": opN, - "f": opF, - "v": opV, - "w": opW, -} - -// parsePluralCondition parses the condition of a single pluralRule and appends -// the resulting or conditions to conds. -// -// Example rules: -// // Category "one" in English: only allow 1 with no visible fraction -// i = 1 and v = 0 @integer 1 -// -// // Category "few" in Czech: all numbers with visible fractions -// v != 0 @decimal ... -// -// // Category "zero" in Latvian: all multiples of 10 or the numbers 11-19 or -// // numbers with a fraction 11..19 and no trailing zeros. -// n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer ... -// -// @integer and @decimal are followed by examples and are not relevant for the -// rule itself. The are used here to signal the termination of the rule. -func parsePluralCondition(conds []orCondition, s string, f Form) []orCondition { - scan := bufio.NewScanner(strings.NewReader(s)) - scan.Split(splitTokens) - for { - cond := orCondition{original: s, form: f} - // Set all numbers to be allowed for all number classes and restrict - // from here on. - for i := range cond.set { - for j := range cond.set[i] { - cond.set[i][j] = true - } - } - andLoop: - for { - var token string - scan.Scan() // Must exist. - switch class := scan.Text(); class { - case "t": - class = "w" // equal to w for t == 0 - fallthrough - case "n", "i", "f", "v", "w": - op := scanToken(scan) - opCode := operandIndex[class] - mod := 0 - if op == "%" { - opCode |= opMod - - switch v := scanUint(scan); v { - case 10, 100: - mod = v - case 1000: - // A more general solution would be to allow checking - // against multiples of 100 and include entries for the - // numbers 100..900 in the inclusion masks. At the - // moment this would only help Azerbaijan and Italian. - - // Italian doesn't use '%', so this must be Azerbaijan. - cond.used[opAzerbaijan00s] = true - return append(conds, cond) - - case 1000000: - cond.used[opBretonM] = true - return append(conds, cond) - - default: - log.Fatalf("Modulo value not supported %d", v) - } - op = scanToken(scan) - } - if op != "=" && op != "!=" { - log.Fatalf("Unexpected op %q", op) - } - if op == "!=" { - opCode |= opNotEqual - } - a := []int{} - v := scanUint(scan) - if class == "w" && v != 0 { - log.Fatalf("Must compare against zero for operand type %q", class) - } - token = scanToken(scan) - for { - switch token { - case "..": - end := scanUint(scan) - for ; v <= end; v++ { - a = append(a, v) - } - token = scanToken(scan) - default: // ",", "or", "and", "@..." - a = append(a, v) - } - if token != "," { - break - } - v = scanUint(scan) - token = scanToken(scan) - } - if !cond.add(opCode, mod, a) { - // Detected large numbers. As we ruled out Azerbaijan, this - // must be the many rule for Italian ordinals. - cond.set[opItalian800] = cond.set[opN] - cond.used[opItalian800] = true - } - - case "@integer", "@decimal": // "other" entry: tests only. - return conds - default: - log.Fatalf("Unexpected operand class %q (%s)", class, s) - } - switch token { - case "or": - conds = append(conds, cond) - break andLoop - case "@integer", "@decimal": // examples - // There is always an example in practice, so we always terminate here. - if err := scan.Err(); err != nil { - log.Fatal(err) - } - return append(conds, cond) - case "and": - // keep accumulating - default: - log.Fatalf("Unexpected token %q", token) - } - } - } -} - -func scanToken(scan *bufio.Scanner) string { - scan.Scan() - return scan.Text() -} - -func scanUint(scan *bufio.Scanner) int { - scan.Scan() - val, err := strconv.ParseUint(scan.Text(), 10, 32) - if err != nil { - log.Fatal(err) - } - return int(val) -} - -// splitTokens can be used with bufio.Scanner to tokenize CLDR plural rules. -func splitTokens(data []byte, atEOF bool) (advance int, token []byte, err error) { - condTokens := [][]byte{ - []byte(".."), - []byte(","), - []byte("!="), - []byte("="), - } - advance, token, err = bufio.ScanWords(data, atEOF) - for _, t := range condTokens { - if len(t) >= len(token) { - continue - } - switch p := bytes.Index(token, t); { - case p == -1: - case p == 0: - advance = len(t) - token = token[:len(t)] - return advance - len(token) + len(t), token[:len(t)], err - case p < advance: - // Don't split when "=" overlaps "!=". - if t[0] == '=' && token[p-1] == '!' { - continue - } - advance = p - token = token[:p] - } - } - return advance, token, err -} diff --git a/vendor/golang.org/x/text/feature/plural/gen_common.go b/vendor/golang.org/x/text/feature/plural/gen_common.go deleted file mode 100644 index 24aa4150..00000000 --- a/vendor/golang.org/x/text/feature/plural/gen_common.go +++ /dev/null @@ -1,74 +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. - -// +build ignore - -package main - -// Form defines a plural form. -// -// Not all languages support all forms. Also, the meaning of each form varies -// per language. It is important to note that the name of a form does not -// necessarily correspond one-to-one with the set of numbers. For instance, -// for Croation, One matches not only 1, but also 11, 21, etc. -// -// Each language must at least support the form "other". -type Form byte - -const ( - Other Form = iota - Zero - One - Two - Few - Many -) - -var countMap = map[string]Form{ - "other": Other, - "zero": Zero, - "one": One, - "two": Two, - "few": Few, - "many": Many, -} - -type pluralCheck struct { - // category: - // 3..7: opID - // 0..2: category - cat byte - setID byte -} - -// opID identifies the type of operand in the plural rule, being i, n or f. -// (v, w, and t are treated as filters in our implementation.) -type opID byte - -const ( - opMod opID = 0x1 // is '%' used? - opNotEqual opID = 0x2 // using "!=" to compare - opI opID = 0 << 2 // integers after taking the absolute value - opN opID = 1 << 2 // full number (must be integer) - opF opID = 2 << 2 // fraction - opV opID = 3 << 2 // number of visible digits - opW opID = 4 << 2 // number of visible digits without trailing zeros - opBretonM opID = 5 << 2 // hard-wired rule for Breton - opItalian800 opID = 6 << 2 // hard-wired rule for Italian - opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan -) -const ( - // Use this plural form to indicate the next rule needs to match as well. - // The last condition in the list will have the correct plural form. - andNext = 0x7 - formMask = 0x7 - - opShift = 3 - - // numN indicates the maximum integer, or maximum mod value, for which we - // have inclusion masks. - numN = 100 - // The common denominator of the modulo that is taken. - maxMod = 100 -) diff --git a/vendor/golang.org/x/text/feature/plural/message.go b/vendor/golang.org/x/text/feature/plural/message.go deleted file mode 100644 index f931f8a6..00000000 --- a/vendor/golang.org/x/text/feature/plural/message.go +++ /dev/null @@ -1,244 +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 plural - -import ( - "fmt" - "io/ioutil" - "reflect" - "strconv" - - "golang.org/x/text/internal/catmsg" - "golang.org/x/text/internal/number" - "golang.org/x/text/language" - "golang.org/x/text/message/catalog" -) - -// TODO: consider deleting this interface. Maybe VisibleDigits is always -// sufficient and practical. - -// Interface is used for types that can determine their own plural form. -type Interface interface { - // PluralForm reports the plural form for the given language of the - // underlying value. It also returns the integer value. If the integer value - // is larger than fits in n, PluralForm may return a value modulo - // 10,000,000. - PluralForm(t language.Tag, scale int) (f Form, n int) -} - -// Selectf returns the first case for which its selector is a match for the -// arg-th substitution argument to a formatting call, formatting it as indicated -// by format. -// -// The cases argument are pairs of selectors and messages. Selectors are of type -// string or Form. Messages are of type string or catalog.Message. A selector -// matches an argument if: -// - it is "other" or Other -// - it matches the plural form of the argument: "zero", "one", "two", "few", -// or "many", or the equivalent Form -// - it is of the form "=x" where x is an integer that matches the value of -// the argument. -// - it is of the form "<x" where x is an integer that is larger than the -// argument. -// -// The format argument determines the formatting parameters for which to -// determine the plural form. This is especially relevant for non-integer -// values. -// -// The format string may be "", in which case a best-effort attempt is made to -// find a reasonable representation on which to base the plural form. Examples -// of format strings are: -// - %.2f decimal with scale 2 -// - %.2e scientific notation with precision 3 (scale + 1) -// - %d integer -func Selectf(arg int, format string, cases ...interface{}) catalog.Message { - var p parser - // Intercept the formatting parameters of format by doing a dummy print. - fmt.Fprintf(ioutil.Discard, format, &p) - m := &message{arg, kindDefault, 0, cases} - switch p.verb { - case 'g': - m.kind = kindPrecision - m.scale = p.scale - case 'f': - m.kind = kindScale - m.scale = p.scale - case 'e': - m.kind = kindScientific - m.scale = p.scale - case 'd': - m.kind = kindScale - m.scale = 0 - default: - // TODO: do we need to handle errors? - } - return m -} - -type parser struct { - verb rune - scale int -} - -func (p *parser) Format(s fmt.State, verb rune) { - p.verb = verb - p.scale = -1 - if prec, ok := s.Precision(); ok { - p.scale = prec - } -} - -type message struct { - arg int - kind int - scale int - cases []interface{} -} - -const ( - // Start with non-ASCII to allow skipping values. - kindDefault = 0x80 + iota - kindScale // verb f, number of fraction digits follows - kindScientific // verb e, number of fraction digits follows - kindPrecision // verb g, number of significant digits follows -) - -var handle = catmsg.Register("golang.org/x/text/feature/plural:plural", execute) - -func (m *message) Compile(e *catmsg.Encoder) error { - e.EncodeMessageType(handle) - - e.EncodeUint(uint64(m.arg)) - - e.EncodeUint(uint64(m.kind)) - if m.kind > kindDefault { - e.EncodeUint(uint64(m.scale)) - } - - forms := validForms(cardinal, e.Language()) - - for i := 0; i < len(m.cases); { - if err := compileSelector(e, forms, m.cases[i]); err != nil { - return err - } - if i++; i >= len(m.cases) { - return fmt.Errorf("plural: no message defined for selector %v", m.cases[i-1]) - } - var msg catalog.Message - switch x := m.cases[i].(type) { - case string: - msg = catalog.String(x) - case catalog.Message: - msg = x - default: - return fmt.Errorf("plural: message of type %T; must be string or catalog.Message", x) - } - if err := e.EncodeMessage(msg); err != nil { - return err - } - i++ - } - return nil -} - -func compileSelector(e *catmsg.Encoder, valid []Form, selector interface{}) error { - form := Other - switch x := selector.(type) { - case string: - if x == "" { - return fmt.Errorf("plural: empty selector") - } - if c := x[0]; c == '=' || c == '<' { - val, err := strconv.ParseUint(x[1:], 10, 16) - if err != nil { - return fmt.Errorf("plural: invalid number in selector %q: %v", selector, err) - } - e.EncodeUint(uint64(c)) - e.EncodeUint(val) - return nil - } - var ok bool - form, ok = countMap[x] - if !ok { - return fmt.Errorf("plural: invalid plural form %q", selector) - } - case Form: - form = x - default: - return fmt.Errorf("plural: selector of type %T; want string or Form", selector) - } - - ok := false - for _, f := range valid { - if f == form { - ok = true - break - } - } - if !ok { - return fmt.Errorf("plural: form %q not supported for language %q", selector, e.Language()) - } - e.EncodeUint(uint64(form)) - return nil -} - -func execute(d *catmsg.Decoder) bool { - lang := d.Language() - argN := int(d.DecodeUint()) - kind := int(d.DecodeUint()) - scale := -1 // default - if kind > kindDefault { - scale = int(d.DecodeUint()) - } - form := Other - n := -1 - if arg := d.Arg(argN); arg == nil { - // Default to Other. - } else if x, ok := arg.(number.VisibleDigits); ok { - d := x.Digits(nil, lang, scale) - form, n = cardinal.matchDisplayDigits(lang, &d) - } else if x, ok := arg.(Interface); ok { - // This covers lists and formatters from the number package. - form, n = x.PluralForm(lang, scale) - } else { - var f number.Formatter - switch kind { - case kindScale: - f.InitDecimal(lang) - f.SetScale(scale) - case kindScientific: - f.InitScientific(lang) - f.SetScale(scale) - case kindPrecision: - f.InitDecimal(lang) - f.SetPrecision(scale) - case kindDefault: - // sensible default - f.InitDecimal(lang) - if k := reflect.TypeOf(arg).Kind(); reflect.Int <= k && k <= reflect.Uintptr { - f.SetScale(0) - } else { - f.SetScale(2) - } - } - var dec number.Decimal // TODO: buffer in Printer - dec.Convert(f.RoundingContext, arg) - v := number.FormatDigits(&dec, f.RoundingContext) - if !v.NaN && !v.Inf { - form, n = cardinal.matchDisplayDigits(d.Language(), &v) - } - } - for !d.Done() { - f := d.DecodeUint() - if (f == '=' && n == int(d.DecodeUint())) || - (f == '<' && 0 <= n && n < int(d.DecodeUint())) || - form == Form(f) || - Other == Form(f) { - return d.ExecuteMessage() - } - d.SkipMessage() - } - return false -} diff --git a/vendor/golang.org/x/text/feature/plural/message_test.go b/vendor/golang.org/x/text/feature/plural/message_test.go deleted file mode 100644 index b5bc47e8..00000000 --- a/vendor/golang.org/x/text/feature/plural/message_test.go +++ /dev/null @@ -1,197 +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 plural - -import ( - "fmt" - "strings" - "testing" - - "golang.org/x/text/internal/catmsg" - "golang.org/x/text/language" - "golang.org/x/text/message/catalog" -) - -func TestSelect(t *testing.T) { - lang := language.English - type test struct { - arg interface{} - result string - err string - } - testCases := []struct { - desc string - msg catalog.Message - err string - tests []test - }{{ - desc: "basic", - msg: Selectf(1, "%d", "one", "foo", "other", "bar"), - tests: []test{ - {arg: 0, result: "bar"}, - {arg: 1, result: "foo"}, - {arg: 2, result: "bar"}, - {arg: opposite(1), result: "bar"}, - {arg: opposite(2), result: "foo"}, - {arg: "unknown", result: "bar"}, // other - }, - }, { - desc: "comparisons", - msg: Selectf(1, "%d", - "=0", "zero", - "=1", "one", - "one", "cannot match", // never matches - "<5", "<5", // never matches - "=5", "=5", - Other, "other"), - tests: []test{ - {arg: 0, result: "zero"}, - {arg: 1, result: "one"}, - {arg: 2, result: "<5"}, - {arg: 4, result: "<5"}, - {arg: 5, result: "=5"}, - {arg: 6, result: "other"}, - {arg: "unknown", result: "other"}, - }, - }, { - desc: "fractions", - msg: Selectf(1, "%.2f", "one", "foo", "other", "bar"), - tests: []test{ - // fractions are always plural in english - {arg: 0, result: "bar"}, - {arg: 1, result: "bar"}, - }, - }, { - desc: "decimal without fractions", - msg: Selectf(1, "%.0f", "one", "foo", "other", "bar"), - tests: []test{ - // fractions are always plural in english - {arg: 0, result: "bar"}, - {arg: 1, result: "foo"}, - }, - }, { - desc: "scientific", - msg: Selectf(1, "%.0e", "one", "foo", "other", "bar"), - tests: []test{ - {arg: 0, result: "bar"}, - {arg: 1, result: "foo"}, - }, - }, { - desc: "variable", - msg: Selectf(1, "%.1g", "one", "foo", "other", "bar"), - tests: []test{ - // fractions are always plural in english - {arg: 0, result: "bar"}, - {arg: 1, result: "foo"}, - {arg: 2, result: "bar"}, - }, - }, { - desc: "default", - msg: Selectf(1, "", "one", "foo", "other", "bar"), - tests: []test{ - {arg: 0, result: "bar"}, - {arg: 1, result: "foo"}, - {arg: 2, result: "bar"}, - {arg: 1.0, result: "bar"}, - }, - }, { - desc: "nested", - msg: Selectf(1, "", "other", Selectf(2, "", "one", "foo", "other", "bar")), - tests: []test{ - {arg: 0, result: "bar"}, - {arg: 1, result: "foo"}, - {arg: 2, result: "bar"}, - }, - }, { - desc: "arg unavailable", - msg: Selectf(100, "%.2f", "one", "foo", "other", "bar"), - tests: []test{{arg: 1, result: "bar"}}, - }, { - desc: "no match", - msg: Selectf(1, "%.2f", "one", "foo"), - tests: []test{{arg: 0, result: "bar", err: catmsg.ErrNoMatch.Error()}}, - }, { - desc: "error invalid form", - err: `invalid plural form "excessive"`, - msg: Selectf(1, "%d", "excessive", "foo"), - }, { - desc: "error form not used by language", - err: `form "many" not supported for language "en"`, - msg: Selectf(1, "%d", "many", "foo"), - }, { - desc: "error invalid selector", - err: `selector of type int; want string or Form`, - msg: Selectf(1, "%d", 1, "foo"), - }, { - desc: "error missing message", - err: `no message defined for selector one`, - msg: Selectf(1, "%d", "one"), - }, { - desc: "error invalid number", - err: `invalid number in selector "<1.00"`, - msg: Selectf(1, "%d", "<1.00"), - }, { - desc: "error empty selector", - err: `empty selector`, - msg: Selectf(1, "%d", "", "foo"), - }, { - desc: "error invalid message", - err: `message of type int; must be string or catalog.Message`, - msg: Selectf(1, "%d", "one", 3), - }, { - desc: "nested error", - err: `empty selector`, - msg: Selectf(1, "", "other", Selectf(2, "", "")), - }} - for _, tc := range testCases { - t.Run(tc.desc, func(t *testing.T) { - data, err := catmsg.Compile(lang, nil, tc.msg) - chkError(t, err, tc.err) - for _, tx := range tc.tests { - t.Run(fmt.Sprint(tx.arg), func(t *testing.T) { - r := renderer{arg: tx.arg} - d := catmsg.NewDecoder(lang, &r, nil) - err := d.Execute(data) - chkError(t, err, tx.err) - if r.result != tx.result { - t.Errorf("got %q; want %q", r.result, tx.result) - } - }) - } - }) - } -} - -func chkError(t *testing.T, got error, want string) { - if (got == nil && want != "") || - (got != nil && (want == "" || !strings.Contains(got.Error(), want))) { - t.Fatalf("got %v; want %v", got, want) - } - if got != nil { - t.SkipNow() - } -} - -type renderer struct { - arg interface{} - result string -} - -func (r *renderer) Render(s string) { r.result += s } -func (r *renderer) Arg(i int) interface{} { - if i > 10 { // Allow testing "arg unavailable" path - return nil - } - return r.arg -} - -type opposite int - -func (o opposite) PluralForm(lang language.Tag, scale int) (Form, int) { - if o == 1 { - return Other, 1 - } - return One, int(o) -} diff --git a/vendor/golang.org/x/text/feature/plural/plural.go b/vendor/golang.org/x/text/feature/plural/plural.go deleted file mode 100644 index 61faf187..00000000 --- a/vendor/golang.org/x/text/feature/plural/plural.go +++ /dev/null @@ -1,258 +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 plural provides utilities for handling linguistic plurals in text. -// -// The definitions in this package are based on the plural rule handling defined -// in CLDR. See -// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules for -// details. -package plural - -import ( - "golang.org/x/text/internal/number" - "golang.org/x/text/language" -) - -// Rules defines the plural rules for all languages for a certain plural type. -// -// -// This package is UNDER CONSTRUCTION and its API may change. -type Rules struct { - rules []pluralCheck - index []byte - langToIndex []byte - inclusionMasks []uint64 -} - -var ( - // Cardinal defines the plural rules for numbers indicating quantities. - Cardinal *Rules = cardinal - - // Ordinal defines the plural rules for numbers indicating position - // (first, second, etc.). - Ordinal *Rules = ordinal - - ordinal = &Rules{ - ordinalRules, - ordinalIndex, - ordinalLangToIndex, - ordinalInclusionMasks[:], - } - - cardinal = &Rules{ - cardinalRules, - cardinalIndex, - cardinalLangToIndex, - cardinalInclusionMasks[:], - } -) - -// getIntApprox converts the digits in slice digits[start:end] to an integer -// according to the following rules: -// - Let i be asInt(digits[start:end]), where out-of-range digits are assumed -// to be zero. -// - Result n is big if i / 10^nMod > 1. -// - Otherwise the result is i % 10^nMod. -// -// For example, if digits is {1, 2, 3} and start:end is 0:5, then the result -// for various values of nMod is: -// - when nMod == 2, n == big -// - when nMod == 3, n == big -// - when nMod == 4, n == big -// - when nMod == 5, n == 12300 -// - when nMod == 6, n == 12300 -// - when nMod == 7, n == 12300 -func getIntApprox(digits []byte, start, end, nMod, big int) (n int) { - // Leading 0 digits just result in 0. - p := start - if p < 0 { - p = 0 - } - // Range only over the part for which we have digits. - mid := end - if mid >= len(digits) { - mid = len(digits) - } - // Check digits more significant that nMod. - if q := end - nMod; q > 0 { - if q > mid { - q = mid - } - for ; p < q; p++ { - if digits[p] != 0 { - return big - } - } - } - for ; p < mid; p++ { - n = 10*n + int(digits[p]) - } - // Multiply for trailing zeros. - for ; p < end; p++ { - n *= 10 - } - return n -} - -// MatchDigits computes the plural form for the given language and the given -// decimal floating point digits. The digits are stored in big-endian order and -// are of value byte(0) - byte(9). The floating point position is indicated by -// exp and the number of visible decimals is scale. All leading and trailing -// zeros may be omitted from digits. -// -// The following table contains examples of possible arguments to represent -// the given numbers. -// decimal digits exp scale -// 123 []byte{1, 2, 3} 3 0 -// 123.4 []byte{1, 2, 3, 4} 3 1 -// 123.40 []byte{1, 2, 3, 4} 3 2 -// 100000 []byte{1} 6 0 -// 100000.00 []byte{1} 6 3 -func (p *Rules) MatchDigits(t language.Tag, digits []byte, exp, scale int) Form { - index, _ := language.CompactIndex(t) - - // Differentiate up to including mod 1000000 for the integer part. - n := getIntApprox(digits, 0, exp, 6, 1000000) - - // Differentiate up to including mod 100 for the fractional part. - f := getIntApprox(digits, exp, exp+scale, 2, 100) - - return matchPlural(p, index, n, f, scale) -} - -func (p *Rules) matchDisplayDigits(t language.Tag, d *number.Digits) (Form, int) { - n := getIntApprox(d.Digits, 0, int(d.Exp), 6, 1000000) - return p.MatchDigits(t, d.Digits, int(d.Exp), d.NumFracDigits()), n -} - -func validForms(p *Rules, t language.Tag) (forms []Form) { - index, _ := language.CompactIndex(t) - offset := p.langToIndex[index] - rules := p.rules[p.index[offset]:p.index[offset+1]] - - forms = append(forms, Other) - last := Other - for _, r := range rules { - if cat := Form(r.cat & formMask); cat != andNext && last != cat { - forms = append(forms, cat) - last = cat - } - } - return forms -} - -func (p *Rules) matchComponents(t language.Tag, n, f, scale int) Form { - index, _ := language.CompactIndex(t) - return matchPlural(p, index, n, f, scale) -} - -// MatchPlural returns the plural form for the given language and plural -// operands (as defined in -// http://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules): -// where -// n absolute value of the source number (integer and decimals) -// input -// i integer digits of n. -// v number of visible fraction digits in n, with trailing zeros. -// w number of visible fraction digits in n, without trailing zeros. -// f visible fractional digits in n, with trailing zeros (f = t * 10^(v-w)) -// t visible fractional digits in n, without trailing zeros. -// -// If any of the operand values is too large to fit in an int, it is okay to -// pass the value modulo 10,000,000. -func (p *Rules) MatchPlural(lang language.Tag, i, v, w, f, t int) Form { - index, _ := language.CompactIndex(lang) - return matchPlural(p, index, i, f, v) -} - -func matchPlural(p *Rules, index int, n, f, v int) Form { - nMask := p.inclusionMasks[n%maxMod] - // Compute the fMask inline in the rules below, as it is relatively rare. - // fMask := p.inclusionMasks[f%maxMod] - vMask := p.inclusionMasks[v%maxMod] - - // Do the matching - offset := p.langToIndex[index] - rules := p.rules[p.index[offset]:p.index[offset+1]] - for i := 0; i < len(rules); i++ { - rule := rules[i] - setBit := uint64(1 << rule.setID) - var skip bool - switch op := opID(rule.cat >> opShift); op { - case opI: // i = x - skip = n >= numN || nMask&setBit == 0 - - case opI | opNotEqual: // i != x - skip = n < numN && nMask&setBit != 0 - - case opI | opMod: // i % m = x - skip = nMask&setBit == 0 - - case opI | opMod | opNotEqual: // i % m != x - skip = nMask&setBit != 0 - - case opN: // n = x - skip = f != 0 || n >= numN || nMask&setBit == 0 - - case opN | opNotEqual: // n != x - skip = f == 0 && n < numN && nMask&setBit != 0 - - case opN | opMod: // n % m = x - skip = f != 0 || nMask&setBit == 0 - - case opN | opMod | opNotEqual: // n % m != x - skip = f == 0 && nMask&setBit != 0 - - case opF: // f = x - skip = f >= numN || p.inclusionMasks[f%maxMod]&setBit == 0 - - case opF | opNotEqual: // f != x - skip = f < numN && p.inclusionMasks[f%maxMod]&setBit != 0 - - case opF | opMod: // f % m = x - skip = p.inclusionMasks[f%maxMod]&setBit == 0 - - case opF | opMod | opNotEqual: // f % m != x - skip = p.inclusionMasks[f%maxMod]&setBit != 0 - - case opV: // v = x - skip = v < numN && vMask&setBit == 0 - - case opV | opNotEqual: // v != x - skip = v < numN && vMask&setBit != 0 - - case opW: // w == 0 - skip = f != 0 - - case opW | opNotEqual: // w != 0 - skip = f == 0 - - // Hard-wired rules that cannot be handled by our algorithm. - - case opBretonM: - skip = f != 0 || n == 0 || n%1000000 != 0 - - case opAzerbaijan00s: - // 100,200,300,400,500,600,700,800,900 - skip = n == 0 || n >= 1000 || n%100 != 0 - - case opItalian800: - skip = (f != 0 || n >= numN || nMask&setBit == 0) && n != 800 - } - if skip { - // advance over AND entries. - for ; i < len(rules) && rules[i].cat&formMask == andNext; i++ { - } - continue - } - // return if we have a final entry. - if cat := rule.cat & formMask; cat != andNext { - return Form(cat) - } - } - return Other -} diff --git a/vendor/golang.org/x/text/feature/plural/plural_test.go b/vendor/golang.org/x/text/feature/plural/plural_test.go deleted file mode 100644 index b3cf4c44..00000000 --- a/vendor/golang.org/x/text/feature/plural/plural_test.go +++ /dev/null @@ -1,216 +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 plural - -import ( - "fmt" - "reflect" - "strconv" - "strings" - "testing" - - "golang.org/x/text/language" -) - -func TestGetIntApprox(t *testing.T) { - const big = 1234567890 - testCases := []struct { - digits string - start int - end int - nMod int - want int - }{ - {"123", 0, 1, 1, 1}, - {"123", 0, 2, 1, big}, - {"123", 0, 2, 2, 12}, - {"123", 3, 4, 2, 0}, - {"12345", 3, 4, 2, 4}, - {"40", 0, 1, 2, 4}, - {"1", 0, 7, 2, big}, - - {"123", 0, 5, 2, big}, - {"123", 0, 5, 3, big}, - {"123", 0, 5, 4, big}, - {"123", 0, 5, 5, 12300}, - {"123", 0, 5, 6, 12300}, - {"123", 0, 5, 7, 12300}, - - // Translation of examples in MatchDigits. - // Integer parts - {"123", 0, 3, 3, 123}, // 123 - {"1234", 0, 3, 3, 123}, // 123.4 - {"1", 0, 6, 8, 100000}, // 100000 - - // Fraction parts - {"123", 3, 3, 3, 0}, // 123 - {"1234", 3, 4, 3, 4}, // 123.4 - {"1234", 3, 5, 3, 40}, // 123.40 - {"1", 6, 8, 8, 0}, // 100000.00 - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s:%d:%d/%d", tc.digits, tc.start, tc.end, tc.nMod), func(t *testing.T) { - got := getIntApprox(mkDigits(tc.digits), tc.start, tc.end, tc.nMod, big) - if got != tc.want { - t.Errorf("got %d; want %d", got, tc.want) - } - }) - } -} - -func mkDigits(s string) []byte { - b := []byte(s) - for i := range b { - b[i] -= '0' - } - return b -} - -func TestValidForms(t *testing.T) { - testCases := []struct { - tag language.Tag - want []Form - }{ - {language.AmericanEnglish, []Form{Other, One}}, - {language.Portuguese, []Form{Other, One}}, - {language.Latvian, []Form{Other, Zero, One}}, - {language.Arabic, []Form{Other, Zero, One, Two, Few, Many}}, - {language.Russian, []Form{Other, One, Few, Many}}, - } - for _, tc := range testCases { - got := validForms(cardinal, tc.tag) - if !reflect.DeepEqual(got, tc.want) { - t.Errorf("validForms(%v): got %v; want %v", tc.tag, got, tc.want) - } - } -} - -func TestOrdinal(t *testing.T) { - testPlurals(t, Ordinal, ordinalTests) -} - -func TestCardinal(t *testing.T) { - testPlurals(t, Cardinal, cardinalTests) -} - -func testPlurals(t *testing.T, p *Rules, testCases []pluralTest) { - for _, tc := range testCases { - for _, loc := range strings.Split(tc.locales, " ") { - tag := language.MustParse(loc) - // Test integers - for _, s := range tc.integer { - a := strings.Split(s, "~") - from := parseUint(t, a[0]) - to := from - if len(a) > 1 { - to = parseUint(t, a[1]) - } - for n := from; n <= to; n++ { - t.Run(fmt.Sprintf("%s/int(%d)", loc, n), func(t *testing.T) { - if f := p.matchComponents(tag, n, 0, 0); f != Form(tc.form) { - t.Errorf("matchComponents: got %v; want %v", f, Form(tc.form)) - } - digits := []byte(fmt.Sprint(n)) - for i := range digits { - digits[i] -= '0' - } - if f := p.MatchDigits(tag, digits, len(digits), 0); f != Form(tc.form) { - t.Errorf("MatchDigits: got %v; want %v", f, Form(tc.form)) - } - }) - } - } - // Test decimals - for _, s := range tc.decimal { - a := strings.Split(s, "~") - from, scale := parseFixedPoint(t, a[0]) - to := from - if len(a) > 1 { - var toScale int - if to, toScale = parseFixedPoint(t, a[1]); toScale != scale { - t.Fatalf("%s:%s: non-matching scales %d versus %d", loc, s, scale, toScale) - } - } - m := 1 - for i := 0; i < scale; i++ { - m *= 10 - } - for n := from; n <= to; n++ { - num := fmt.Sprintf("%[1]d.%0[3]*[2]d", n/m, n%m, scale) - name := fmt.Sprintf("%s:dec(%s)", loc, num) - t.Run(name, func(t *testing.T) { - ff := n % m - tt := ff - w := scale - for tt > 0 && tt%10 == 0 { - w-- - tt /= 10 - } - if f := p.MatchPlural(tag, n/m, scale, w, ff, tt); f != Form(tc.form) { - t.Errorf("MatchPlural: got %v; want %v", f, Form(tc.form)) - } - if f := p.matchComponents(tag, n/m, n%m, scale); f != Form(tc.form) { - t.Errorf("matchComponents: got %v; want %v", f, Form(tc.form)) - } - exp := strings.IndexByte(num, '.') - digits := []byte(strings.Replace(num, ".", "", 1)) - for i := range digits { - digits[i] -= '0' - } - if f := p.MatchDigits(tag, digits, exp, scale); f != Form(tc.form) { - t.Errorf("MatchDigits: got %v; want %v", f, Form(tc.form)) - } - }) - } - } - } - } -} - -func parseUint(t *testing.T, s string) int { - val, err := strconv.ParseUint(s, 10, 32) - if err != nil { - t.Fatal(err) - } - return int(val) -} - -func parseFixedPoint(t *testing.T, s string) (val, scale int) { - p := strings.Index(s, ".") - s = strings.Replace(s, ".", "", 1) - v, err := strconv.ParseUint(s, 10, 32) - if err != nil { - t.Fatal(err) - } - return int(v), len(s) - p -} - -func BenchmarkPluralSimpleCases(b *testing.B) { - p := Cardinal - en, _ := language.CompactIndex(language.English) - zh, _ := language.CompactIndex(language.Chinese) - for i := 0; i < b.N; i++ { - matchPlural(p, en, 0, 0, 0) // 0 - matchPlural(p, en, 1, 0, 0) // 1 - matchPlural(p, en, 2, 12, 3) // 2.120 - matchPlural(p, zh, 0, 0, 0) // 0 - matchPlural(p, zh, 1, 0, 0) // 1 - matchPlural(p, zh, 2, 12, 3) // 2.120 - } -} - -func BenchmarkPluralComplexCases(b *testing.B) { - p := Cardinal - ar, _ := language.CompactIndex(language.Arabic) - lv, _ := language.CompactIndex(language.Latvian) - for i := 0; i < b.N; i++ { - matchPlural(p, lv, 0, 19, 2) // 0.19 - matchPlural(p, lv, 11, 0, 3) // 11.000 - matchPlural(p, lv, 100, 123, 4) // 0.1230 - matchPlural(p, ar, 0, 0, 0) // 0 - matchPlural(p, ar, 110, 0, 0) // 110 - matchPlural(p, ar, 99, 99, 2) // 99.99 - } -} diff --git a/vendor/golang.org/x/text/feature/plural/tables.go b/vendor/golang.org/x/text/feature/plural/tables.go deleted file mode 100644 index 64f9fe31..00000000 --- a/vendor/golang.org/x/text/feature/plural/tables.go +++ /dev/null @@ -1,548 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package plural - -// CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "32" - -var ordinalRules = []pluralCheck{ // 64 elements - 0: {cat: 0x2f, setID: 0x4}, - 1: {cat: 0x3a, setID: 0x5}, - 2: {cat: 0x22, setID: 0x1}, - 3: {cat: 0x22, setID: 0x6}, - 4: {cat: 0x22, setID: 0x7}, - 5: {cat: 0x2f, setID: 0x8}, - 6: {cat: 0x3c, setID: 0x9}, - 7: {cat: 0x2f, setID: 0xa}, - 8: {cat: 0x3c, setID: 0xb}, - 9: {cat: 0x2c, setID: 0xc}, - 10: {cat: 0x24, setID: 0xd}, - 11: {cat: 0x2d, setID: 0xe}, - 12: {cat: 0x2d, setID: 0xf}, - 13: {cat: 0x2f, setID: 0x10}, - 14: {cat: 0x35, setID: 0x3}, - 15: {cat: 0xc5, setID: 0x11}, - 16: {cat: 0x2, setID: 0x1}, - 17: {cat: 0x5, setID: 0x3}, - 18: {cat: 0xd, setID: 0x12}, - 19: {cat: 0x22, setID: 0x1}, - 20: {cat: 0x2f, setID: 0x13}, - 21: {cat: 0x3d, setID: 0x14}, - 22: {cat: 0x2f, setID: 0x15}, - 23: {cat: 0x3a, setID: 0x16}, - 24: {cat: 0x2f, setID: 0x17}, - 25: {cat: 0x3b, setID: 0x18}, - 26: {cat: 0x2f, setID: 0xa}, - 27: {cat: 0x3c, setID: 0xb}, - 28: {cat: 0x22, setID: 0x1}, - 29: {cat: 0x23, setID: 0x19}, - 30: {cat: 0x24, setID: 0x1a}, - 31: {cat: 0x22, setID: 0x1b}, - 32: {cat: 0x23, setID: 0x2}, - 33: {cat: 0x24, setID: 0x1a}, - 34: {cat: 0xf, setID: 0x15}, - 35: {cat: 0x1a, setID: 0x16}, - 36: {cat: 0xf, setID: 0x17}, - 37: {cat: 0x1b, setID: 0x18}, - 38: {cat: 0xf, setID: 0x1c}, - 39: {cat: 0x1d, setID: 0x1d}, - 40: {cat: 0xa, setID: 0x1e}, - 41: {cat: 0xa, setID: 0x1f}, - 42: {cat: 0xc, setID: 0x20}, - 43: {cat: 0xe4, setID: 0x0}, - 44: {cat: 0x5, setID: 0x3}, - 45: {cat: 0xd, setID: 0xe}, - 46: {cat: 0xd, setID: 0x21}, - 47: {cat: 0x22, setID: 0x1}, - 48: {cat: 0x23, setID: 0x19}, - 49: {cat: 0x24, setID: 0x1a}, - 50: {cat: 0x25, setID: 0x22}, - 51: {cat: 0x22, setID: 0x23}, - 52: {cat: 0x23, setID: 0x19}, - 53: {cat: 0x24, setID: 0x1a}, - 54: {cat: 0x25, setID: 0x22}, - 55: {cat: 0x22, setID: 0x24}, - 56: {cat: 0x23, setID: 0x19}, - 57: {cat: 0x24, setID: 0x1a}, - 58: {cat: 0x25, setID: 0x22}, - 59: {cat: 0x21, setID: 0x25}, - 60: {cat: 0x22, setID: 0x1}, - 61: {cat: 0x23, setID: 0x2}, - 62: {cat: 0x24, setID: 0x26}, - 63: {cat: 0x25, setID: 0x27}, -} // Size: 152 bytes - -var ordinalIndex = []uint8{ // 22 elements - 0x00, 0x00, 0x02, 0x03, 0x04, 0x05, 0x07, 0x09, - 0x0b, 0x0f, 0x10, 0x13, 0x16, 0x1c, 0x1f, 0x22, - 0x28, 0x2f, 0x33, 0x37, 0x3b, 0x40, -} // Size: 46 bytes - -var ordinalLangToIndex = []uint8{ // 768 elements - // Entry 0 - 3F - 0x00, 0x0e, 0x0c, 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, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x05, - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 40 - 7F - 0x00, 0x00, 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, - 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 80 - BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - // Entry C0 - FF - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 100 - 13F - 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, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, - 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, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - // Entry 180 - 1BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0a, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x08, 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 1C0 - 1FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 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, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x0d, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 200 - 23F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x04, 0x04, 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, 0x13, 0x13, - 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 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, 0x00, 0x00, - // Entry 280 - 2BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, - 0x0b, 0x0b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 2C0 - 2FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 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, -} // Size: 792 bytes - -var ordinalInclusionMasks = []uint64{ // 100 elements - // Entry 0 - 1F - 0x0000002000010009, 0x00000018482000d3, 0x0000000042840195, 0x000000410a040581, - 0x00000041040c0081, 0x0000009840040041, 0x0000008400045001, 0x0000003850040001, - 0x0000003850060001, 0x0000003800049001, 0x0000000800052001, 0x0000000040660031, - 0x0000000041840331, 0x0000000100040f01, 0x00000001001c0001, 0x0000000040040001, - 0x0000000000045001, 0x0000000070040001, 0x0000000070040001, 0x0000000000049001, - 0x0000000080050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501, - 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001, - 0x0000000050000001, 0x0000000000009001, 0x0000000000010001, 0x0000000040200011, - // Entry 20 - 3F - 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001, - 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001, - 0x0000000200050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501, - 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001, - 0x0000000050000001, 0x0000000000009001, 0x0000000080010001, 0x0000000040200011, - 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001, - 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001, - 0x0000000200050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501, - // Entry 40 - 5F - 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001, - 0x0000000050000001, 0x0000000000009001, 0x0000000080010001, 0x0000000040200011, - 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001, - 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001, - 0x0000000080070001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501, - 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001, - 0x0000000050000001, 0x0000000000009001, 0x0000000200010001, 0x0000000040200011, - 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001, - // Entry 60 - 7F - 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001, -} // Size: 824 bytes - -// Slots used for ordinal: 40 of 0xFF rules; 16 of 0xFF indexes; 40 of 64 sets - -var cardinalRules = []pluralCheck{ // 166 elements - 0: {cat: 0x2, setID: 0x3}, - 1: {cat: 0x22, setID: 0x1}, - 2: {cat: 0x2, setID: 0x4}, - 3: {cat: 0x2, setID: 0x4}, - 4: {cat: 0x7, setID: 0x1}, - 5: {cat: 0x62, setID: 0x3}, - 6: {cat: 0x22, setID: 0x4}, - 7: {cat: 0x7, setID: 0x3}, - 8: {cat: 0x42, setID: 0x1}, - 9: {cat: 0x22, setID: 0x4}, - 10: {cat: 0x22, setID: 0x4}, - 11: {cat: 0x22, setID: 0x5}, - 12: {cat: 0x22, setID: 0x1}, - 13: {cat: 0x22, setID: 0x1}, - 14: {cat: 0x7, setID: 0x4}, - 15: {cat: 0x92, setID: 0x3}, - 16: {cat: 0xf, setID: 0x6}, - 17: {cat: 0x1f, setID: 0x7}, - 18: {cat: 0x82, setID: 0x3}, - 19: {cat: 0x92, setID: 0x3}, - 20: {cat: 0xf, setID: 0x6}, - 21: {cat: 0x62, setID: 0x3}, - 22: {cat: 0x4a, setID: 0x6}, - 23: {cat: 0x7, setID: 0x8}, - 24: {cat: 0x62, setID: 0x3}, - 25: {cat: 0x1f, setID: 0x9}, - 26: {cat: 0x62, setID: 0x3}, - 27: {cat: 0x5f, setID: 0x9}, - 28: {cat: 0x72, setID: 0x3}, - 29: {cat: 0x29, setID: 0xa}, - 30: {cat: 0x29, setID: 0xb}, - 31: {cat: 0x4f, setID: 0xb}, - 32: {cat: 0x61, setID: 0x2}, - 33: {cat: 0x2f, setID: 0x6}, - 34: {cat: 0x3a, setID: 0x7}, - 35: {cat: 0x4f, setID: 0x6}, - 36: {cat: 0x5f, setID: 0x7}, - 37: {cat: 0x62, setID: 0x2}, - 38: {cat: 0x4f, setID: 0x6}, - 39: {cat: 0x72, setID: 0x2}, - 40: {cat: 0x21, setID: 0x3}, - 41: {cat: 0x7, setID: 0x4}, - 42: {cat: 0x32, setID: 0x3}, - 43: {cat: 0x21, setID: 0x3}, - 44: {cat: 0x22, setID: 0x1}, - 45: {cat: 0x22, setID: 0x1}, - 46: {cat: 0x23, setID: 0x2}, - 47: {cat: 0x2, setID: 0x3}, - 48: {cat: 0x22, setID: 0x1}, - 49: {cat: 0x24, setID: 0xc}, - 50: {cat: 0x7, setID: 0x1}, - 51: {cat: 0x62, setID: 0x3}, - 52: {cat: 0x74, setID: 0x3}, - 53: {cat: 0x24, setID: 0x3}, - 54: {cat: 0x2f, setID: 0xd}, - 55: {cat: 0x34, setID: 0x1}, - 56: {cat: 0xf, setID: 0x6}, - 57: {cat: 0x1f, setID: 0x7}, - 58: {cat: 0x62, setID: 0x3}, - 59: {cat: 0x4f, setID: 0x6}, - 60: {cat: 0x5a, setID: 0x7}, - 61: {cat: 0xf, setID: 0xe}, - 62: {cat: 0x1f, setID: 0xf}, - 63: {cat: 0x64, setID: 0x3}, - 64: {cat: 0x4f, setID: 0xe}, - 65: {cat: 0x5c, setID: 0xf}, - 66: {cat: 0x22, setID: 0x10}, - 67: {cat: 0x23, setID: 0x11}, - 68: {cat: 0x24, setID: 0x12}, - 69: {cat: 0xf, setID: 0x1}, - 70: {cat: 0x62, setID: 0x3}, - 71: {cat: 0xf, setID: 0x2}, - 72: {cat: 0x63, setID: 0x3}, - 73: {cat: 0xf, setID: 0x13}, - 74: {cat: 0x64, setID: 0x3}, - 75: {cat: 0x74, setID: 0x3}, - 76: {cat: 0xf, setID: 0x1}, - 77: {cat: 0x62, setID: 0x3}, - 78: {cat: 0x4a, setID: 0x1}, - 79: {cat: 0xf, setID: 0x2}, - 80: {cat: 0x63, setID: 0x3}, - 81: {cat: 0x4b, setID: 0x2}, - 82: {cat: 0xf, setID: 0x13}, - 83: {cat: 0x64, setID: 0x3}, - 84: {cat: 0x4c, setID: 0x13}, - 85: {cat: 0x7, setID: 0x1}, - 86: {cat: 0x62, setID: 0x3}, - 87: {cat: 0x7, setID: 0x2}, - 88: {cat: 0x63, setID: 0x3}, - 89: {cat: 0x2f, setID: 0xa}, - 90: {cat: 0x37, setID: 0x14}, - 91: {cat: 0x65, setID: 0x3}, - 92: {cat: 0x7, setID: 0x1}, - 93: {cat: 0x62, setID: 0x3}, - 94: {cat: 0x7, setID: 0x15}, - 95: {cat: 0x64, setID: 0x3}, - 96: {cat: 0x75, setID: 0x3}, - 97: {cat: 0x7, setID: 0x1}, - 98: {cat: 0x62, setID: 0x3}, - 99: {cat: 0xf, setID: 0xe}, - 100: {cat: 0x1f, setID: 0xf}, - 101: {cat: 0x64, setID: 0x3}, - 102: {cat: 0xf, setID: 0x16}, - 103: {cat: 0x17, setID: 0x1}, - 104: {cat: 0x65, setID: 0x3}, - 105: {cat: 0xf, setID: 0x17}, - 106: {cat: 0x65, setID: 0x3}, - 107: {cat: 0xf, setID: 0xf}, - 108: {cat: 0x65, setID: 0x3}, - 109: {cat: 0x2f, setID: 0x6}, - 110: {cat: 0x3a, setID: 0x7}, - 111: {cat: 0x2f, setID: 0xe}, - 112: {cat: 0x3c, setID: 0xf}, - 113: {cat: 0x2d, setID: 0xa}, - 114: {cat: 0x2d, setID: 0x17}, - 115: {cat: 0x2d, setID: 0x18}, - 116: {cat: 0x2f, setID: 0x6}, - 117: {cat: 0x3a, setID: 0xb}, - 118: {cat: 0x2f, setID: 0x19}, - 119: {cat: 0x3c, setID: 0xb}, - 120: {cat: 0x55, setID: 0x3}, - 121: {cat: 0x22, setID: 0x1}, - 122: {cat: 0x24, setID: 0x3}, - 123: {cat: 0x2c, setID: 0xc}, - 124: {cat: 0x2d, setID: 0xb}, - 125: {cat: 0xf, setID: 0x6}, - 126: {cat: 0x1f, setID: 0x7}, - 127: {cat: 0x62, setID: 0x3}, - 128: {cat: 0xf, setID: 0xe}, - 129: {cat: 0x1f, setID: 0xf}, - 130: {cat: 0x64, setID: 0x3}, - 131: {cat: 0xf, setID: 0xa}, - 132: {cat: 0x65, setID: 0x3}, - 133: {cat: 0xf, setID: 0x17}, - 134: {cat: 0x65, setID: 0x3}, - 135: {cat: 0xf, setID: 0x18}, - 136: {cat: 0x65, setID: 0x3}, - 137: {cat: 0x2f, setID: 0x6}, - 138: {cat: 0x3a, setID: 0x1a}, - 139: {cat: 0x2f, setID: 0x1b}, - 140: {cat: 0x3b, setID: 0x1c}, - 141: {cat: 0x2f, setID: 0x1d}, - 142: {cat: 0x3c, setID: 0x1e}, - 143: {cat: 0x37, setID: 0x3}, - 144: {cat: 0xa5, setID: 0x0}, - 145: {cat: 0x22, setID: 0x1}, - 146: {cat: 0x23, setID: 0x2}, - 147: {cat: 0x24, setID: 0x1f}, - 148: {cat: 0x25, setID: 0x20}, - 149: {cat: 0xf, setID: 0x6}, - 150: {cat: 0x62, setID: 0x3}, - 151: {cat: 0xf, setID: 0x1b}, - 152: {cat: 0x63, setID: 0x3}, - 153: {cat: 0xf, setID: 0x21}, - 154: {cat: 0x64, setID: 0x3}, - 155: {cat: 0x75, setID: 0x3}, - 156: {cat: 0x21, setID: 0x3}, - 157: {cat: 0x22, setID: 0x1}, - 158: {cat: 0x23, setID: 0x2}, - 159: {cat: 0x2c, setID: 0x22}, - 160: {cat: 0x2d, setID: 0x5}, - 161: {cat: 0x21, setID: 0x3}, - 162: {cat: 0x22, setID: 0x1}, - 163: {cat: 0x23, setID: 0x2}, - 164: {cat: 0x24, setID: 0x23}, - 165: {cat: 0x25, setID: 0x24}, -} // Size: 356 bytes - -var cardinalIndex = []uint8{ // 36 elements - 0x00, 0x00, 0x02, 0x03, 0x04, 0x06, 0x09, 0x0a, - 0x0c, 0x0d, 0x10, 0x14, 0x17, 0x1d, 0x28, 0x2b, - 0x2d, 0x2f, 0x32, 0x38, 0x42, 0x45, 0x4c, 0x55, - 0x5c, 0x61, 0x6d, 0x74, 0x79, 0x7d, 0x89, 0x91, - 0x95, 0x9c, 0xa1, 0xa6, -} // Size: 60 bytes - -var cardinalLangToIndex = []uint8{ // 768 elements - // Entry 0 - 3F - 0x00, 0x04, 0x04, 0x08, 0x08, 0x08, 0x00, 0x00, - 0x06, 0x06, 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x01, 0x01, 0x08, 0x08, 0x04, 0x04, - 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x1a, - 0x1a, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, - // Entry 40 - 7F - 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x1e, 0x1e, 0x08, 0x08, 0x13, 0x00, 0x00, 0x13, - 0x13, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x18, 0x18, 0x00, 0x00, 0x22, 0x22, - 0x09, 0x09, 0x09, 0x00, 0x00, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x16, - 0x16, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - // Entry 80 - BF - 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 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, 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, 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, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - // Entry 100 - 13F - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x04, 0x04, 0x08, 0x08, 0x00, 0x00, 0x01, 0x01, - 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, - 0x0c, 0x0c, 0x08, 0x08, 0x08, 0x02, 0x02, 0x02, - 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, 0x08, 0x08, 0x04, 0x04, - 0x1f, 0x1f, 0x14, 0x14, 0x04, 0x04, 0x08, 0x08, - 0x08, 0x08, 0x01, 0x01, 0x06, 0x00, 0x00, 0x20, - 0x20, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x17, - 0x17, 0x01, 0x01, 0x13, 0x13, 0x13, 0x16, 0x16, - 0x08, 0x08, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - // Entry 180 - 1BF - 0x00, 0x00, 0x04, 0x0a, 0x0a, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, - 0x08, 0x08, 0x00, 0x08, 0x08, 0x02, 0x02, 0x08, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x0f, 0x0f, 0x08, 0x10, 0x10, 0x08, - // Entry 1C0 - 1FF - 0x08, 0x0e, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1b, 0x1b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0d, 0x0d, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, - 0x08, 0x08, 0x0b, 0x0b, 0x08, 0x08, 0x08, 0x08, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, - // Entry 200 - 23F - 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x00, 0x08, 0x06, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x06, 0x00, 0x00, 0x06, 0x06, - 0x08, 0x19, 0x19, 0x0d, 0x0d, 0x08, 0x08, 0x03, - 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - // Entry 240 - 27F - 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x08, 0x00, 0x00, 0x12, 0x12, 0x12, 0x08, - 0x08, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, - 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, - 0x00, 0x00, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, - 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x11, 0x11, 0x05, 0x05, 0x18, 0x18, - 0x15, 0x15, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - // Entry 280 - 2BF - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x08, 0x08, - 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, - // Entry 2C0 - 2FF - 0x00, 0x00, 0x07, 0x07, 0x08, 0x08, 0x1d, 0x1d, - 0x04, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x06, 0x08, - 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, - 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -} // Size: 792 bytes - -var cardinalInclusionMasks = []uint64{ // 100 elements - // Entry 0 - 1F - 0x0000000200500419, 0x0000000000512153, 0x000000000a327105, 0x0000000ca23c7101, - 0x00000004a23c7201, 0x0000000482943001, 0x0000001482943201, 0x0000000502943001, - 0x0000000502943001, 0x0000000522943201, 0x0000000540543401, 0x00000000454128e1, - 0x000000005b02e821, 0x000000006304e821, 0x000000006304ea21, 0x0000000042842821, - 0x0000000042842a21, 0x0000000042842821, 0x0000000042842821, 0x0000000062842a21, - 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, - 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, - 0x0000000002800021, 0x0000000022800221, 0x0000000000400421, 0x0000000000400061, - // Entry 20 - 3F - 0x000000000a004021, 0x0000000022004021, 0x0000000022004221, 0x0000000002800021, - 0x0000000002800221, 0x0000000002800021, 0x0000000002800021, 0x0000000022800221, - 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, - 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, - 0x0000000002800021, 0x0000000022800221, 0x0000000000400421, 0x0000000000400061, - 0x000000000a004021, 0x0000000022004021, 0x0000000022004221, 0x0000000002800021, - 0x0000000002800221, 0x0000000002800021, 0x0000000002800021, 0x0000000022800221, - 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, - // Entry 40 - 5F - 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, - 0x0000000002800021, 0x0000000022800221, 0x0000000040400421, 0x0000000044400061, - 0x000000005a004021, 0x0000000062004021, 0x0000000062004221, 0x0000000042800021, - 0x0000000042800221, 0x0000000042800021, 0x0000000042800021, 0x0000000062800221, - 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, - 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, - 0x0000000002800021, 0x0000000022800221, 0x0000000040400421, 0x0000000044400061, - 0x000000005a004021, 0x0000000062004021, 0x0000000062004221, 0x0000000042800021, - // Entry 60 - 7F - 0x0000000042800221, 0x0000000042800021, 0x0000000042800021, 0x0000000062800221, -} // Size: 824 bytes - -// Slots used for cardinal: A6 of 0xFF rules; 24 of 0xFF indexes; 37 of 64 sets - -// Total table size 3846 bytes (3KiB); checksum: B8556665 diff --git a/vendor/golang.org/x/text/gen.go b/vendor/golang.org/x/text/gen.go deleted file mode 100644 index 757fefb7..00000000 --- a/vendor/golang.org/x/text/gen.go +++ /dev/null @@ -1,319 +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. - -// +build ignore - -// gen runs go generate on Unicode- and CLDR-related package in the text -// repositories, taking into account dependencies and versions. -package main - -import ( - "bytes" - "flag" - "fmt" - "go/build" - "go/format" - "io/ioutil" - "os" - "os/exec" - "path" - "path/filepath" - "regexp" - "runtime" - "strings" - "sync" - "unicode" - - "golang.org/x/text/collate" - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" -) - -var ( - verbose = flag.Bool("v", false, "verbose output") - force = flag.Bool("force", false, "ignore failing dependencies") - doCore = flag.Bool("core", false, "force an update to core") - excludeList = flag.String("exclude", "", - "comma-separated list of packages to exclude") - - // The user can specify a selection of packages to build on the command line. - args []string -) - -func exclude(pkg string) bool { - if len(args) > 0 { - return !contains(args, pkg) - } - return contains(strings.Split(*excludeList, ","), pkg) -} - -// TODO: -// - Better version handling. -// - Generate tables for the core unicode package? -// - Add generation for encodings. This requires some retooling here and there. -// - Running repo-wide "long" tests. - -var vprintf = fmt.Printf - -func main() { - gen.Init() - args = flag.Args() - if !*verbose { - // Set vprintf to a no-op. - vprintf = func(string, ...interface{}) (int, error) { return 0, nil } - } - - // TODO: create temporary cache directory to load files and create and set - // a "cache" option if the user did not specify the UNICODE_DIR environment - // variable. This will prevent duplicate downloads and also will enable long - // tests, which really need to be run after each generated package. - - updateCore := *doCore - if gen.UnicodeVersion() != unicode.Version { - fmt.Printf("Requested Unicode version %s; core unicode version is %s.\n", - gen.UnicodeVersion(), - unicode.Version) - c := collate.New(language.Und, collate.Numeric) - if c.CompareString(gen.UnicodeVersion(), unicode.Version) < 0 && !*force { - os.Exit(2) - } - updateCore = true - goroot := os.Getenv("GOROOT") - appendToFile( - filepath.Join(goroot, "api", "except.txt"), - fmt.Sprintf("pkg unicode, const Version = %q\n", unicode.Version), - ) - const lines = `pkg unicode, const Version = %q -// TODO: add a new line of the following form for each new script and property. -pkg unicode, var <new script or property> *RangeTable -` - appendToFile( - filepath.Join(goroot, "api", "next.txt"), - fmt.Sprintf(lines, gen.UnicodeVersion()), - ) - } - - var unicode = &dependency{} - if updateCore { - fmt.Printf("Updating core to version %s...\n", gen.UnicodeVersion()) - unicode = generate("unicode") - - // Test some users of the unicode packages, especially the ones that - // keep a mirrored table. These may need to be corrected by hand. - generate("regexp", unicode) - generate("strconv", unicode) // mimics Unicode table - generate("strings", unicode) - generate("testing", unicode) // mimics Unicode table - } - - var ( - cldr = generate("./unicode/cldr", unicode) - language = generate("./language", cldr) - internal = generate("./internal", unicode, language) - norm = generate("./unicode/norm", unicode) - rangetable = generate("./unicode/rangetable", unicode) - cases = generate("./cases", unicode, norm, language, rangetable) - width = generate("./width", unicode) - bidi = generate("./unicode/bidi", unicode, norm, rangetable) - mib = generate("./encoding/internal/identifier", unicode) - number = generate("./internal/number", unicode, cldr, language, internal) - _ = generate("./encoding/htmlindex", unicode, language, mib) - _ = generate("./encoding/ianaindex", unicode, language, mib) - _ = generate("./secure/precis", unicode, norm, rangetable, cases, width, bidi) - _ = generate("./internal/cldrtree", language) - _ = generate("./currency", unicode, cldr, language, internal, number) - _ = generate("./feature/plural", unicode, cldr, language, internal, number) - _ = generate("./internal/export/idna", unicode, bidi, norm) - _ = generate("./language/display", unicode, cldr, language, internal, number) - _ = generate("./collate", unicode, norm, cldr, language, rangetable) - _ = generate("./search", unicode, norm, cldr, language, rangetable) - ) - all.Wait() - - // Copy exported packages to the destination golang.org repo. - copyExported("golang.org/x/net/idna") - - if updateCore { - copyVendored() - } - - if hasErrors { - fmt.Println("FAIL") - os.Exit(1) - } - vprintf("SUCCESS\n") -} - -func appendToFile(file, text string) { - fmt.Println("Augmenting", file) - w, err := os.OpenFile(file, os.O_APPEND|os.O_WRONLY, 0600) - if err != nil { - fmt.Println("Failed to open file:", err) - os.Exit(1) - } - defer w.Close() - if _, err := w.WriteString(text); err != nil { - fmt.Println("Failed to write to file:", err) - os.Exit(1) - } -} - -var ( - all sync.WaitGroup - hasErrors bool -) - -type dependency struct { - sync.WaitGroup - hasErrors bool -} - -func generate(pkg string, deps ...*dependency) *dependency { - var wg dependency - if exclude(pkg) { - return &wg - } - wg.Add(1) - all.Add(1) - go func() { - defer wg.Done() - defer all.Done() - // Wait for dependencies to finish. - for _, d := range deps { - d.Wait() - if d.hasErrors && !*force { - fmt.Printf("--- ABORT: %s\n", pkg) - wg.hasErrors = true - return - } - } - vprintf("=== GENERATE %s\n", pkg) - args := []string{"generate"} - if *verbose { - args = append(args, "-v") - } - args = append(args, pkg) - cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), args...) - w := &bytes.Buffer{} - cmd.Stderr = w - cmd.Stdout = w - if err := cmd.Run(); err != nil { - fmt.Printf("--- FAIL: %s:\n\t%v\n\tError: %v\n", pkg, indent(w), err) - hasErrors = true - wg.hasErrors = true - return - } - - vprintf("=== TEST %s\n", pkg) - args[0] = "test" - cmd = exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), args...) - wt := &bytes.Buffer{} - cmd.Stderr = wt - cmd.Stdout = wt - if err := cmd.Run(); err != nil { - fmt.Printf("--- FAIL: %s:\n\t%v\n\tError: %v\n", pkg, indent(wt), err) - hasErrors = true - wg.hasErrors = true - return - } - vprintf("--- SUCCESS: %s\n\t%v\n", pkg, indent(w)) - fmt.Print(wt.String()) - }() - return &wg -} - -// copyExported copies a package in x/text/internal/export to the -// destination repository. -func copyExported(p string) { - copyPackage( - filepath.Join("internal", "export", path.Base(p)), - filepath.Join("..", filepath.FromSlash(p[len("golang.org/x"):])), - "golang.org/x/text/internal/export/"+path.Base(p), - p) -} - -// copyVendored copies packages used by Go core into the vendored directory. -func copyVendored() { - root := filepath.Join(build.Default.GOROOT, filepath.FromSlash("src/vendor/golang_org/x")) - - err := filepath.Walk(root, func(dir string, info os.FileInfo, err error) error { - if err != nil || !info.IsDir() || root == dir { - return err - } - src := dir[len(root)+1:] - const slash = string(filepath.Separator) - if c := strings.Split(src, slash); c[0] == "text" { - // Copy a text repo package from its normal location. - src = strings.Join(c[1:], slash) - } else { - // Copy the vendored package if it exists in the export directory. - src = filepath.Join("internal", "export", filepath.Base(src)) - } - copyPackage(src, dir, "golang.org", "golang_org") - return nil - }) - if err != nil { - fmt.Printf("Seeding directory %s has failed %v:", root, err) - os.Exit(1) - } -} - -// goGenRE is used to remove go:generate lines. -var goGenRE = regexp.MustCompile("//go:generate[^\n]*\n") - -// copyPackage copies relevant files from a directory in x/text to the -// destination package directory. The destination package is assumed to have -// the same name. For each copied file go:generate lines are removed and -// and package comments are rewritten to the new path. -func copyPackage(dirSrc, dirDst, search, replace string) { - err := filepath.Walk(dirSrc, func(file string, info os.FileInfo, err error) error { - base := filepath.Base(file) - if err != nil || info.IsDir() || - !strings.HasSuffix(base, ".go") || - strings.HasSuffix(base, "_test.go") || - // Don't process subdirectories. - filepath.Dir(file) != dirSrc { - return nil - } - b, err := ioutil.ReadFile(file) - if err != nil || bytes.Contains(b, []byte("\n// +build ignore")) { - return err - } - // Fix paths. - b = bytes.Replace(b, []byte(search), []byte(replace), -1) - // Remove go:generate lines. - b = goGenRE.ReplaceAllLiteral(b, nil) - comment := "// Code generated by running \"go generate\" in golang.org/x/text. DO NOT EDIT.\n\n" - if *doCore { - comment = "// Code generated by running \"go run gen.go -core\" in golang.org/x/text. DO NOT EDIT.\n\n" - } - if !bytes.HasPrefix(b, []byte(comment)) { - b = append([]byte(comment), b...) - } - if b, err = format.Source(b); err != nil { - fmt.Println("Failed to format file:", err) - os.Exit(1) - } - file = filepath.Join(dirDst, base) - vprintf("=== COPY %s\n", file) - return ioutil.WriteFile(file, b, 0666) - }) - if err != nil { - fmt.Println("Copying exported files failed:", err) - os.Exit(1) - } -} - -func contains(a []string, s string) bool { - for _, e := range a { - if s == e { - return true - } - } - return false -} - -func indent(b *bytes.Buffer) string { - return strings.Replace(strings.TrimSpace(b.String()), "\n", "\n\t", -1) -} 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 32d6c205..00000000 --- a/vendor/golang.org/x/text/internal/catmsg/catmsg.go +++ /dev/null @@ -1,376 +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 - numFixed -) - -const prefix = "golang.org/x/text/internal/catmsg." - -var ( - mutex sync.Mutex - names = map[string]Handle{ - prefix + "Vars": msgVars, - prefix + "First": msgFirst, - prefix + "Raw": msgRaw, - prefix + "String": msgString, - } - handlers = make([]Handler, numFixed) -) - -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 - } -} - -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 -} diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go deleted file mode 100644 index 485d19c9..00000000 --- a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go +++ /dev/null @@ -1,316 +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" - "strings" - "testing" - - "golang.org/x/text/language" -) - -type renderer struct { - args []int - result string -} - -func (r *renderer) Arg(i int) interface{} { - if i >= len(r.args) { - return nil - } - return r.args[i] -} - -func (r *renderer) Render(s string) { - if r.result != "" { - r.result += "|" - } - r.result += s -} - -func TestCodec(t *testing.T) { - type test struct { - args []int - out string - decErr string - } - single := func(out, err string) []test { return []test{{out: out, decErr: err}} } - testCases := []struct { - desc string - m Message - enc string - encErr string - tests []test - }{{ - desc: "unused variable", - m: &Var{"name", String("foo")}, - encErr: errIsVar.Error(), - tests: single("", ""), - }, { - desc: "empty", - m: empty{}, - tests: single("", ""), - }, { - desc: "sequence with empty", - m: seq{empty{}}, - tests: single("", ""), - }, { - desc: "raw string", - m: Raw("foo"), - tests: single("foo", ""), - }, { - desc: "raw string no sub", - m: Raw("${foo}"), - enc: "\x02${foo}", - tests: single("${foo}", ""), - }, { - desc: "simple string", - m: String("foo"), - tests: single("foo", ""), - }, { - desc: "missing var", - m: String("foo${bar}"), - enc: "\x03\x03foo\x02\x03bar", - encErr: `unknown var "bar"`, - tests: single("foo|bar", ""), - }, { - desc: "empty var", - m: seq{ - &Var{"bar", seq{}}, - String("foo${bar}"), - }, - enc: "\x00\x05\x04\x02bar\x03\x03foo\x00\x00", - // TODO: recognize that it is cheaper to substitute bar. - tests: single("foo|bar", ""), - }, { - desc: "var after value", - m: seq{ - String("foo${bar}"), - &Var{"bar", String("baz")}, - }, - encErr: errIsVar.Error(), - tests: single("foo|bar", ""), - }, { - desc: "substitution", - m: seq{ - &Var{"bar", String("baz")}, - String("foo${bar}"), - }, - tests: single("foo|baz", ""), - }, { - desc: "shadowed variable", - m: seq{ - &Var{"bar", String("baz")}, - seq{ - &Var{"bar", String("BAZ")}, - String("foo${bar}"), - }, - }, - tests: single("foo|BAZ", ""), - }, { - desc: "nested value", - m: nestedLang{nestedLang{empty{}}}, - tests: single("nl|nl", ""), - }, { - desc: "not shadowed variable", - m: seq{ - &Var{"bar", String("baz")}, - seq{ - String("foo${bar}"), - &Var{"bar", String("BAZ")}, - }, - }, - encErr: errIsVar.Error(), - tests: single("foo|baz", ""), - }, { - desc: "duplicate variable", - m: seq{ - &Var{"bar", String("baz")}, - &Var{"bar", String("BAZ")}, - String("${bar}"), - }, - encErr: "catmsg: duplicate variable \"bar\"", - tests: single("baz", ""), - }, { - desc: "complete incomplete variable", - m: seq{ - &Var{"bar", incomplete{}}, - String("${bar}"), - }, - enc: "\x00\t\b\x01\x01\x04\x04\x02bar\x03\x00\x00\x00", - // TODO: recognize that it is cheaper to substitute bar. - tests: single("bar", ""), - }, { - desc: "incomplete sequence", - m: seq{ - incomplete{}, - incomplete{}, - }, - encErr: ErrIncomplete.Error(), - tests: single("", ErrNoMatch.Error()), - }, { - desc: "compile error variable", - m: seq{ - &Var{"bar", errorCompileMsg{}}, - String("${bar}"), - }, - encErr: errCompileTest.Error(), - tests: single("bar", ""), - }, { - desc: "compile error message", - m: errorCompileMsg{}, - encErr: errCompileTest.Error(), - tests: single("", ""), - }, { - desc: "compile error sequence", - m: seq{ - errorCompileMsg{}, - errorCompileMsg{}, - }, - encErr: errCompileTest.Error(), - tests: single("", ""), - }, { - desc: "macro", - m: String("${exists(1)}"), - tests: single("you betya!", ""), - }, { - desc: "macro incomplete", - m: String("${incomplete(1)}"), - enc: "\x03\x00\x01\nincomplete\x01", - tests: single("incomplete", ""), - }, { - desc: "macro undefined at end", - m: String("${undefined(1)}"), - enc: "\x03\x00\x01\tundefined\x01", - tests: single("undefined", "catmsg: undefined macro \"undefined\""), - }, { - desc: "macro undefined with more text following", - m: String("${undefined(1)}."), - enc: "\x03\x00\x01\tundefined\x01\x01.", - tests: single("undefined|.", "catmsg: undefined macro \"undefined\""), - }, { - desc: "macro missing paren", - m: String("${missing(1}"), - encErr: "catmsg: missing ')'", - tests: single("$!(MISSINGPAREN)", ""), - }, { - desc: "macro bad num", - m: String("aa${bad(a)}"), - encErr: "catmsg: invalid number \"a\"", - tests: single("aa$!(BADNUM)", ""), - }, { - desc: "var missing brace", - m: String("a${missing"), - encErr: "catmsg: missing '}'", - tests: single("a$!(MISSINGBRACE)", ""), - }} - r := &renderer{} - dec := NewDecoder(language.Und, r, macros) - for _, tc := range testCases { - t.Run(tc.desc, func(t *testing.T) { - // Use a language other than Und so that we can test - // passing the language to nested values. - data, err := Compile(language.Dutch, macros, tc.m) - if failErr(err, tc.encErr) { - t.Errorf("encoding error: got %+q; want %+q", err, tc.encErr) - } - if tc.enc != "" && data != tc.enc { - t.Errorf("encoding: got %+q; want %+q", data, tc.enc) - } - for _, st := range tc.tests { - t.Run("", func(t *testing.T) { - *r = renderer{args: st.args} - if err = dec.Execute(data); failErr(err, st.decErr) { - t.Errorf("decoding error: got %+q; want %+q", err, st.decErr) - } - if r.result != st.out { - t.Errorf("decode: got %+q; want %+q", r.result, st.out) - } - }) - } - }) - } -} - -func failErr(got error, want string) bool { - if got == nil { - return want != "" - } - return want == "" || !strings.Contains(got.Error(), want) -} - -type seq []Message - -func (s seq) Compile(e *Encoder) (err error) { - err = ErrIncomplete - e.EncodeMessageType(msgFirst) - for _, m := range s { - // Pass only the last error, but allow erroneous or complete messages - // here to allow testing different scenarios. - err = e.EncodeMessage(m) - } - return err -} - -type empty struct{} - -func (empty) Compile(e *Encoder) (err error) { return nil } - -var msgIncomplete = Register( - "golang.org/x/text/internal/catmsg.incomplete", - func(d *Decoder) bool { return false }) - -type incomplete struct{} - -func (incomplete) Compile(e *Encoder) (err error) { - e.EncodeMessageType(msgIncomplete) - return ErrIncomplete -} - -var msgNested = Register( - "golang.org/x/text/internal/catmsg.nested", - func(d *Decoder) bool { - d.Render(d.DecodeString()) - d.ExecuteMessage() - return true - }) - -type nestedLang struct{ Message } - -func (n nestedLang) Compile(e *Encoder) (err error) { - e.EncodeMessageType(msgNested) - e.EncodeString(e.Language().String()) - e.EncodeMessage(n.Message) - return nil -} - -type errorCompileMsg struct{} - -var errCompileTest = errors.New("catmsg: compile error test") - -func (errorCompileMsg) Compile(e *Encoder) (err error) { - return errCompileTest -} - -type dictionary struct{} - -var ( - macros = dictionary{} - dictMessages = map[string]string{ - "exists": compile(String("you betya!")), - "incomplete": compile(incomplete{}), - } -) - -func (d dictionary) Lookup(key string) (data string, ok bool) { - data, ok = dictMessages[key] - return -} - -func compile(m Message) (data string) { - data, _ = Compile(language.Und, macros, m) - return data -} 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 49c9fc97..00000000 --- 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 a2cee2cf..00000000 --- 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/catmsg/varint_test.go b/vendor/golang.org/x/text/internal/catmsg/varint_test.go deleted file mode 100644 index 04d881d4..00000000 --- a/vendor/golang.org/x/text/internal/catmsg/varint_test.go +++ /dev/null @@ -1,123 +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 ( - "fmt" - "testing" -) - -func TestEncodeUint(t *testing.T) { - testCases := []struct { - x uint64 - enc string - }{ - {0, "\x00"}, - {1, "\x01"}, - {2, "\x02"}, - {0x7f, "\x7f"}, - {0x80, "\x80\x01"}, - {1 << 14, "\x80\x80\x01"}, - {0xffffffff, "\xff\xff\xff\xff\x0f"}, - {0xffffffffffffffff, "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01"}, - } - for _, tc := range testCases { - buf := [maxVarintBytes]byte{} - got := string(buf[:encodeUint(buf[:], tc.x)]) - if got != tc.enc { - t.Errorf("EncodeUint(%#x) = %q; want %q", tc.x, got, tc.enc) - } - } -} - -func TestDecodeUint(t *testing.T) { - testCases := []struct { - x uint64 - size int - enc string - err error - }{{ - x: 0, - size: 0, - enc: "", - err: errIllegalVarint, - }, { - x: 0, - size: 1, - enc: "\x80", - err: errIllegalVarint, - }, { - x: 0, - size: 3, - enc: "\x80\x80\x80", - err: errIllegalVarint, - }, { - x: 0, - size: 1, - enc: "\x00", - }, { - x: 1, - size: 1, - enc: "\x01", - }, { - x: 2, - size: 1, - enc: "\x02", - }, { - x: 0x7f, - size: 1, - enc: "\x7f", - }, { - x: 0x80, - size: 2, - enc: "\x80\x01", - }, { - x: 1 << 14, - size: 3, - enc: "\x80\x80\x01", - }, { - x: 0xffffffff, - size: 5, - enc: "\xff\xff\xff\xff\x0f", - }, { - x: 0xffffffffffffffff, - size: 10, - enc: "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01", - }, { - x: 0xffffffffffffffff, - size: 10, - enc: "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00", - }, { - x: 0, - size: 10, - enc: "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01", - err: errVarintTooLarge, - }} - forms := []struct { - name string - decode func(s string) (x uint64, size int, err error) - }{ - {"decode", func(s string) (x uint64, size int, err error) { - return decodeUint([]byte(s)) - }}, - {"decodeString", decodeUintString}, - } - for _, f := range forms { - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s:%q", f.name, tc.enc), func(t *testing.T) { - x, size, err := f.decode(tc.enc) - if err != tc.err { - t.Errorf("err = %q; want %q", err, tc.err) - } - if size != tc.size { - t.Errorf("size = %d; want %d", size, tc.size) - } - if x != tc.x { - t.Errorf("decode = %#x; want %#x", x, tc.x) - } - }) - } - } -} diff --git a/vendor/golang.org/x/text/internal/cldrtree/cldrtree.go b/vendor/golang.org/x/text/internal/cldrtree/cldrtree.go deleted file mode 100644 index 7530831d..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/cldrtree.go +++ /dev/null @@ -1,353 +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 cldrtree builds and generates a CLDR index file, including all -// inheritance. -// -package cldrtree - -//go:generate go test -gen - -// cldrtree stores CLDR data in a tree-like structure called Tree. In the CLDR -// data each branch in the tree is indicated by either an element name or an -// attribute value. A Tree does not distinguish between these two cases, but -// rather assumes that all branches can be accessed by an enum with a compact -// range of positive integer values starting from 0. -// -// Each Tree consists of three parts: -// - a slice mapping compact language identifiers to an offset into a set of -// indices, -// - a set of indices, stored as a large blob of uint16 values that encode -// the actual tree structure of data, and -// - a set of buckets that each holds a collection of strings. -// each of which is explained in more detail below. -// -// -// Tree lookup -// A tree lookup is done by providing a locale and a "path", which is a -// sequence of enum values. The search starts with getting the index for the -// given locale and then incrementally jumping into the index using the path -// values. If an element cannot be found in the index, the search starts anew -// for the locale's parent locale. The path may change during lookup by means -// of aliasing, described below. -// -// Buckets -// Buckets hold the actual string data of the leaf values of the CLDR tree. -// This data is stored in buckets, rather than one large string, for multiple -// reasons: -// - it allows representing leaf values more compactly, by storing all leaf -// values in a single bucket and then needing only needing a uint16 to index -// into this bucket for all leaf values, -// - (TBD) allow multiple trees to share subsets of buckets, mostly to allow -// linking in a smaller amount of data if only a subset of the buckets is -// needed, -// - to be nice to go fmt and the compiler. -// -// indices -// An index is a slice of uint16 for which the values are interpreted in one of -// two ways: as a node or a set of leaf values. -// A set of leaf values has the following form: -// <max_size>, <bucket>, <offset>... -// max_size indicates the maximum enum value for which an offset is defined. -// An offset value of 0xFFFF (missingValue) also indicates an undefined value. -// If defined offset indicates the offset within the given bucket of the string. -// A node value has the following form: -// <max_size>, <offset_or_alias>... -// max_size indicates the maximum value for which an offset is defined. -// A missing offset may also be indicated with 0. If the high bit (0x8000, or -// inheritMask) is not set, the offset points to the offset within the index -// for the current locale. -// An offset with high bit set is an alias. In this case the uint16 has the form -// bits: -// 15: 1 -// 14-12: negative offset into path relative to current position -// 0-11: new enum value for path element. -// On encountering an alias, the path is modified accordingly and the lookup is -// restarted for the given locale. - -import ( - "fmt" - "reflect" - "regexp" - "strings" - "unicode/utf8" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -// TODO: -// - allow two Trees to share the same set of buckets. - -// A Builder allows storing CLDR data in compact form. -type Builder struct { - table []string - - rootMeta *metaData - locales []locale - strToBucket map[string]stringInfo - buckets [][]byte - enums []*enum - err error - - // Stats - size int - sizeAll int - bucketWaste int -} - -const ( - maxBucketSize = 8 * 1024 // 8K - maxStrlen = 254 // allow 0xFF sentinel -) - -func (b *Builder) setError(err error) { - if b.err == nil { - b.err = err - } -} - -func (b *Builder) addString(data string) stringInfo { - data = b.makeString(data) - info, ok := b.strToBucket[data] - if !ok { - b.size += len(data) - x := len(b.buckets) - 1 - bucket := b.buckets[x] - if len(bucket)+len(data) < maxBucketSize { - info.bucket = uint16(x) - info.bucketPos = uint16(len(bucket)) - b.buckets[x] = append(bucket, data...) - } else { - info.bucket = uint16(len(b.buckets)) - info.bucketPos = 0 - b.buckets = append(b.buckets, []byte(data)) - } - b.strToBucket[data] = info - } - return info -} - -func (b *Builder) addStringToBucket(data string, bucket uint16) stringInfo { - data = b.makeString(data) - info, ok := b.strToBucket[data] - if !ok || info.bucket != bucket { - if ok { - b.bucketWaste += len(data) - } - b.size += len(data) - bk := b.buckets[bucket] - info.bucket = bucket - info.bucketPos = uint16(len(bk)) - b.buckets[bucket] = append(bk, data...) - b.strToBucket[data] = info - } - return info -} - -func (b *Builder) makeString(data string) string { - if len(data) > maxStrlen { - b.setError(fmt.Errorf("string %q exceeds maximum length of %d", data, maxStrlen)) - data = data[:maxStrlen] - for i := len(data) - 1; i > len(data)-4; i-- { - if utf8.RuneStart(data[i]) { - data = data[:i] - break - } - } - } - data = string([]byte{byte(len(data))}) + data - b.sizeAll += len(data) - return data -} - -type stringInfo struct { - bufferPos uint32 - bucket uint16 - bucketPos uint16 -} - -// New creates a new Builder. -func New(tableName string) *Builder { - b := &Builder{ - strToBucket: map[string]stringInfo{}, - buckets: [][]byte{nil}, // initialize with first bucket. - } - b.rootMeta = &metaData{ - b: b, - typeInfo: &typeInfo{}, - } - return b -} - -// Gen writes all the tables and types for the collected data. -func (b *Builder) Gen(w *gen.CodeWriter) error { - t, err := build(b) - if err != nil { - return err - } - return generate(b, t, w) -} - -// GenTestData generates tables useful for testing data generated with Gen. -func (b *Builder) GenTestData(w *gen.CodeWriter) error { - return generateTestData(b, w) -} - -type locale struct { - tag language.Tag - root *Index -} - -// Locale creates an index for the given locale. -func (b *Builder) Locale(t language.Tag) *Index { - index := &Index{ - meta: b.rootMeta, - } - b.locales = append(b.locales, locale{tag: t, root: index}) - return index -} - -// An Index holds a map of either leaf values or other indices. -type Index struct { - meta *metaData - - subIndex []*Index - values []keyValue -} - -func (i *Index) setError(err error) { i.meta.b.setError(err) } - -type keyValue struct { - key enumIndex - value stringInfo -} - -// Element is a CLDR XML element. -type Element interface { - GetCommon() *cldr.Common -} - -// Index creates a subindex where the type and enum values are not shared -// with siblings by default. The name is derived from the elem. If elem is -// an alias reference, the alias will be resolved and linked. If elem is nil -// Index returns nil. -func (i *Index) Index(elem Element, opt ...Option) *Index { - if elem == nil || reflect.ValueOf(elem).IsNil() { - return nil - } - c := elem.GetCommon() - o := &options{ - parent: i, - name: c.GetCommon().Element(), - } - o.fill(opt) - o.setAlias(elem) - return i.subIndexForKey(o) -} - -// IndexWithName is like Section but derives the name from the given name. -func (i *Index) IndexWithName(name string, opt ...Option) *Index { - o := &options{parent: i, name: name} - o.fill(opt) - return i.subIndexForKey(o) -} - -// IndexFromType creates a subindex the value of tye type attribute as key. It -// will also configure the Index to share the enumeration values with all -// sibling values. If elem is an alias, it will be resolved and linked. -func (i *Index) IndexFromType(elem Element, opts ...Option) *Index { - o := &options{ - parent: i, - name: elem.GetCommon().Type, - } - o.fill(opts) - o.setAlias(elem) - useSharedType()(o) - return i.subIndexForKey(o) -} - -// IndexFromAlt creates a subindex the value of tye alt attribute as key. It -// will also configure the Index to share the enumeration values with all -// sibling values. If elem is an alias, it will be resolved and linked. -func (i *Index) IndexFromAlt(elem Element, opts ...Option) *Index { - o := &options{ - parent: i, - name: elem.GetCommon().Alt, - } - o.fill(opts) - o.setAlias(elem) - useSharedType()(o) - return i.subIndexForKey(o) -} - -func (i *Index) subIndexForKey(opts *options) *Index { - key := opts.name - if len(i.values) > 0 { - panic(fmt.Errorf("cldrtree: adding Index for %q when value already exists", key)) - } - meta := i.meta.sub(key, opts) - for _, x := range i.subIndex { - if x.meta == meta { - return x - } - } - if alias := opts.alias; alias != nil { - if a := alias.GetCommon().Alias; a != nil { - if a.Source != "locale" { - i.setError(fmt.Errorf("cldrtree: non-locale alias not supported %v", a.Path)) - } - if meta.inheritOffset < 0 { - i.setError(fmt.Errorf("cldrtree: alias was already set %v", a.Path)) - } - path := a.Path - for ; strings.HasPrefix(path, "../"); path = path[len("../"):] { - meta.inheritOffset-- - } - m := aliasRe.FindStringSubmatch(path) - if m == nil { - i.setError(fmt.Errorf("cldrtree: could not parse alias %q", a.Path)) - } else { - key := m[4] - if key == "" { - key = m[1] - } - meta.inheritIndex = key - } - } - } - x := &Index{meta: meta} - i.subIndex = append(i.subIndex, x) - return x -} - -var aliasRe = regexp.MustCompile(`^([a-zA-Z]+)(\[@([a-zA-Z-]+)='([a-zA-Z-]+)'\])?`) - -// SetValue sets the value, the data from a CLDR XML element, for the given key. -func (i *Index) SetValue(key string, value Element, opt ...Option) { - if len(i.subIndex) > 0 { - panic(fmt.Errorf("adding value for key %q when index already exists", key)) - } - o := &options{parent: i} - o.fill(opt) - c := value.GetCommon() - if c.Alias != nil { - i.setError(fmt.Errorf("cldrtree: alias not supported for SetValue %v", c.Alias.Path)) - } - i.setValue(key, c.Data(), o) -} - -func (i *Index) setValue(key, data string, o *options) { - index, _ := i.meta.typeInfo.lookupSubtype(key, o) - kv := keyValue{key: index} - if len(i.values) > 0 { - // Add string to the same bucket as the other values. - bucket := i.values[0].value.bucket - kv.value = i.meta.b.addStringToBucket(data, bucket) - } else { - kv.value = i.meta.b.addString(data) - } - i.values = append(i.values, kv) -} diff --git a/vendor/golang.org/x/text/internal/cldrtree/cldrtree_test.go b/vendor/golang.org/x/text/internal/cldrtree/cldrtree_test.go deleted file mode 100644 index d93c7633..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/cldrtree_test.go +++ /dev/null @@ -1,456 +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 cldrtree - -import ( - "bytes" - "flag" - "io/ioutil" - "log" - "math/rand" - "path/filepath" - "reflect" - "regexp" - "strconv" - "strings" - "testing" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -var genOutput = flag.Bool("gen", false, "generate output files") - -func TestAliasRegexp(t *testing.T) { - testCases := []struct { - alias string - want []string - }{{ - alias: "miscPatterns[@numberSystem='latn']", - want: []string{ - "miscPatterns[@numberSystem='latn']", - "miscPatterns", - "[@numberSystem='latn']", - "numberSystem", - "latn", - }, - }, { - alias: `calendar[@type='greg-foo']/days/`, - want: []string{ - "calendar[@type='greg-foo']", - "calendar", - "[@type='greg-foo']", - "type", - "greg-foo", - }, - }, { - alias: "eraAbbr", - want: []string{ - "eraAbbr", - "eraAbbr", - "", - "", - "", - }, - }, { - // match must be anchored at beginning. - alias: `../calendar[@type='gregorian']/days/`, - }} - for _, tc := range testCases { - t.Run(tc.alias, func(t *testing.T) { - got := aliasRe.FindStringSubmatch(tc.alias) - if !reflect.DeepEqual(got, tc.want) { - t.Errorf("got %v; want %v", got, tc.want) - } - }) - } -} - -func TestBuild(t *testing.T) { - tree1, _ := loadTestdata(t, "test1") - tree2, _ := loadTestdata(t, "test2") - - // Constants for second test test - const ( - calendar = iota - field - ) - const ( - month = iota - era - filler - cyclicNameSet - ) - const ( - abbreviated = iota - narrow - wide - ) - - testCases := []struct { - desc string - tree *Tree - locale string - path []uint16 - isFeature bool - result string - }{{ - desc: "und/chinese month format wide m1", - tree: tree1, - locale: "und", - path: path(calendar, 0, month, 0, wide, 1), - result: "cM01", - }, { - desc: "und/chinese month format wide m12", - tree: tree1, - locale: "und", - path: path(calendar, 0, month, 0, wide, 12), - result: "cM12", - }, { - desc: "und/non-existing value", - tree: tree1, - locale: "und", - path: path(calendar, 0, month, 0, wide, 13), - result: "", - }, { - desc: "und/dangi:chinese month format wide", - tree: tree1, - locale: "und", - path: path(calendar, 1, month, 0, wide, 1), - result: "cM01", - }, { - desc: "und/chinese month format abbreviated:wide", - tree: tree1, - locale: "und", - path: path(calendar, 0, month, 0, abbreviated, 1), - result: "cM01", - }, { - desc: "und/chinese month format narrow:wide", - tree: tree1, - locale: "und", - path: path(calendar, 0, month, 0, narrow, 1), - result: "cM01", - }, { - desc: "und/gregorian month format wide", - tree: tree1, - locale: "und", - path: path(calendar, 2, month, 0, wide, 2), - result: "gM02", - }, { - desc: "und/gregorian month format:stand-alone narrow", - tree: tree1, - locale: "und", - path: path(calendar, 2, month, 0, narrow, 1), - result: "1", - }, { - desc: "und/gregorian month stand-alone:format abbreviated", - tree: tree1, - locale: "und", - path: path(calendar, 2, month, 1, abbreviated, 1), - result: "gM01", - }, { - desc: "und/gregorian month stand-alone:format wide ", - tree: tree1, - locale: "und", - path: path(calendar, 2, month, 1, abbreviated, 1), - result: "gM01", - }, { - desc: "und/dangi:chinese month format narrow:wide ", - tree: tree1, - locale: "und", - path: path(calendar, 1, month, 0, narrow, 4), - result: "cM04", - }, { - desc: "und/field era displayname 0", - tree: tree2, - locale: "und", - path: path(field, 0, 0, 0), - result: "Era", - }, { - desc: "en/field era displayname 0", - tree: tree2, - locale: "en", - path: path(field, 0, 0, 0), - result: "era", - }, { - desc: "und/calendar hebrew format wide 7-leap", - tree: tree2, - locale: "und", - path: path(calendar, 7, month, 0, wide, 0), - result: "Adar II", - }, { - desc: "en-GB:en-001:en:und/calendar hebrew format wide 7-leap", - tree: tree2, - locale: "en-GB", - path: path(calendar, 7, month, 0, wide, 0), - result: "Adar II", - }, { - desc: "und/buddhist month format wide 11", - tree: tree2, - locale: "und", - path: path(calendar, 0, month, 0, wide, 12), - result: "genWideM12", - }, { - desc: "en-GB/gregorian month stand-alone narrow 2", - tree: tree2, - locale: "en-GB", - path: path(calendar, 6, month, 1, narrow, 3), - result: "gbNarrowM3", - }, { - desc: "en-GB/gregorian month format narrow 3/missing in en-GB", - tree: tree2, - locale: "en-GB", - path: path(calendar, 6, month, 0, narrow, 4), - result: "enNarrowM4", - }, { - desc: "en-GB/gregorian month format narrow 3/missing in en and en-GB", - tree: tree2, - locale: "en-GB", - path: path(calendar, 6, month, 0, narrow, 7), - result: "gregNarrowM7", - }, { - desc: "en-GB/gregorian month format narrow 3/missing in en and en-GB", - tree: tree2, - locale: "en-GB", - path: path(calendar, 6, month, 0, narrow, 7), - result: "gregNarrowM7", - }, { - desc: "en-GB/gregorian era narrow", - tree: tree2, - locale: "en-GB", - path: path(calendar, 6, era, abbreviated, 0, 1), - isFeature: true, - result: "AD", - }, { - desc: "en-GB/gregorian era narrow", - tree: tree2, - locale: "en-GB", - path: path(calendar, 6, era, narrow, 0, 0), - isFeature: true, - result: "BC", - }, { - desc: "en-GB/gregorian era narrow", - tree: tree2, - locale: "en-GB", - path: path(calendar, 6, era, wide, 1, 0), - isFeature: true, - result: "Before Common Era", - }, { - desc: "en-GB/dangi:chinese cyclicName, months, format, narrow:abbreviated 2", - tree: tree2, - locale: "en-GB", - path: path(calendar, 1, cyclicNameSet, 3, 0, 1, 2), - isFeature: true, - result: "year2", - }, { - desc: "en-GB/field era-narrow ", - tree: tree2, - locale: "en-GB", - path: path(field, 2, 0, 0), - result: "era", - }, { - desc: "en-GB/field month-narrow relativeTime future one", - tree: tree2, - locale: "en-GB", - path: path(field, 5, 2, 0, 1), - isFeature: true, - result: "001NarrowFutMOne", - }, { - // Don't fall back to the one of "en". - desc: "en-GB/field month-short relativeTime past one:other", - tree: tree2, - locale: "en-GB", - path: path(field, 4, 2, 1, 1), - isFeature: true, - result: "001ShortPastMOther", - }, { - desc: "en-GB/field month relativeTime future two:other", - tree: tree2, - locale: "en-GB", - path: path(field, 3, 2, 0, 2), - isFeature: true, - result: "enFutMOther", - }} - - for _, tc := range testCases { - t.Run(tc.desc, func(t *testing.T) { - tag, _ := language.CompactIndex(language.MustParse(tc.locale)) - s := tc.tree.lookup(tag, tc.isFeature, tc.path...) - if s != tc.result { - t.Errorf("got %q; want %q", s, tc.result) - } - }) - } -} - -func path(e ...uint16) []uint16 { return e } - -func TestGen(t *testing.T) { - testCases := []string{"test1", "test2"} - for _, tc := range testCases { - t.Run(tc, func(t *testing.T) { - _, got := loadTestdata(t, tc) - - // Remove sizes that may vary per architecture. - re := regexp.MustCompile("// Size: [0-9]*") - got = re.ReplaceAllLiteral(got, []byte("// Size: xxxx")) - re = regexp.MustCompile("// Total table size [0-9]*") - got = re.ReplaceAllLiteral(got, []byte("// Total table size: xxxx")) - - file := filepath.Join("testdata", tc, "output.go") - if *genOutput { - ioutil.WriteFile(file, got, 0700) - t.SkipNow() - } - - b, err := ioutil.ReadFile(file) - if err != nil { - t.Fatalf("failed to open file: %v", err) - } - if want := string(b); string(got) != want { - t.Log(string(got)) - t.Errorf("files differ") - } - }) - } -} - -func loadTestdata(t *testing.T, test string) (tree *Tree, file []byte) { - b := New("test") - - var d cldr.Decoder - - data, err := d.DecodePath(filepath.Join("testdata", test)) - if err != nil { - t.Fatalf("error decoding testdata: %v", err) - } - - context := Enum("context") - widthMap := func(s string) string { - // Align era with width values. - if r, ok := map[string]string{ - "eraAbbr": "abbreviated", - "eraNarrow": "narrow", - "eraNames": "wide", - }[s]; ok { - s = r - } - return "w" + strings.Title(s) - } - width := EnumFunc("width", widthMap, "abbreviated", "narrow", "wide") - month := Enum("month", "leap7") - relative := EnumFunc("relative", func(s string) string { - x, err := strconv.ParseInt(s, 10, 8) - if err != nil { - log.Fatal("Invalid number:", err) - } - return []string{ - "before1", - "current", - "after1", - }[x+1] - }) - cycleType := EnumFunc("cycleType", func(s string) string { - return "cyc" + strings.Title(s) - }) - r := rand.New(rand.NewSource(0)) - - for _, loc := range data.Locales() { - ldml := data.RawLDML(loc) - x := b.Locale(language.Make(loc)) - - if x := x.Index(ldml.Dates.Calendars); x != nil { - for _, cal := range ldml.Dates.Calendars.Calendar { - x := x.IndexFromType(cal) - if x := x.Index(cal.Months); x != nil { - for _, mc := range cal.Months.MonthContext { - x := x.IndexFromType(mc, context) - for _, mw := range mc.MonthWidth { - x := x.IndexFromType(mw, width) - for _, m := range mw.Month { - x.SetValue(m.Yeartype+m.Type, m, month) - } - } - } - } - if x := x.Index(cal.CyclicNameSets); x != nil { - for _, cns := range cal.CyclicNameSets.CyclicNameSet { - x := x.IndexFromType(cns, cycleType) - for _, cc := range cns.CyclicNameContext { - x := x.IndexFromType(cc, context) - for _, cw := range cc.CyclicNameWidth { - x := x.IndexFromType(cw, width) - for _, c := range cw.CyclicName { - x.SetValue(c.Type, c) - } - } - } - } - } - if x := x.Index(cal.Eras); x != nil { - opts := []Option{width, SharedType()} - if x := x.Index(cal.Eras.EraNames, opts...); x != nil { - for _, e := range cal.Eras.EraNames.Era { - x.IndexFromAlt(e).SetValue(e.Type, e) - } - } - if x := x.Index(cal.Eras.EraAbbr, opts...); x != nil { - for _, e := range cal.Eras.EraAbbr.Era { - x.IndexFromAlt(e).SetValue(e.Type, e) - } - } - if x := x.Index(cal.Eras.EraNarrow, opts...); x != nil { - for _, e := range cal.Eras.EraNarrow.Era { - x.IndexFromAlt(e).SetValue(e.Type, e) - } - } - } - { - // Ensure having more than 2 buckets. - f := x.IndexWithName("filler") - b := make([]byte, maxStrlen) - opt := &options{parent: x} - r.Read(b) - f.setValue("0", string(b), opt) - } - } - } - if x := x.Index(ldml.Dates.Fields); x != nil { - for _, f := range ldml.Dates.Fields.Field { - x := x.IndexFromType(f) - for _, d := range f.DisplayName { - x.Index(d).SetValue("", d) - } - for _, r := range f.Relative { - x.Index(r).SetValue(r.Type, r, relative) - } - for _, rt := range f.RelativeTime { - x := x.Index(rt).IndexFromType(rt) - for _, p := range rt.RelativeTimePattern { - x.SetValue(p.Count, p) - } - } - for _, rp := range f.RelativePeriod { - x.Index(rp).SetValue("", rp) - } - } - } - } - - tree, err = build(b) - if err != nil { - t.Fatal("error building tree:", err) - } - w := gen.NewCodeWriter() - generate(b, tree, w) - generateTestData(b, w) - buf := &bytes.Buffer{} - if _, err = w.WriteGo(buf, "test", ""); err != nil { - t.Log(buf.String()) - t.Fatal("error generating code:", err) - } - return tree, buf.Bytes() -} diff --git a/vendor/golang.org/x/text/internal/cldrtree/generate.go b/vendor/golang.org/x/text/internal/cldrtree/generate.go deleted file mode 100644 index 0f0b5f3b..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/generate.go +++ /dev/null @@ -1,208 +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 cldrtree - -import ( - "bytes" - "fmt" - "io" - "reflect" - "strconv" - "strings" - - "golang.org/x/text/internal/gen" -) - -func generate(b *Builder, t *Tree, w *gen.CodeWriter) error { - fmt.Fprintln(w, `import "golang.org/x/text/internal/cldrtree"`) - fmt.Fprintln(w) - - fmt.Fprintf(w, "var tree = &cldrtree.Tree{locales, indices, buckets}\n\n") - - w.WriteComment("Path values:\n" + b.stats()) - fmt.Fprintln(w) - - // Generate enum types. - for _, e := range b.enums { - // Build enum types. - w.WriteComment("%s specifies a property of a CLDR field.", e.name) - fmt.Fprintf(w, "type %s uint16\n", e.name) - } - - d, err := getEnumData(b) - if err != nil { - return err - } - fmt.Fprintln(w, "const (") - for i, k := range d.keys { - fmt.Fprintf(w, "%s %s = %d // %s\n", toCamel(k), d.enums[i], d.m[k], k) - } - fmt.Fprintln(w, ")") - - w.WriteVar("locales", t.Locales) - w.WriteVar("indices", t.Indices) - - // Generate string buckets. - fmt.Fprintln(w, "var buckets = []string{") - for i := range t.Buckets { - fmt.Fprintf(w, "bucket%d,\n", i) - } - fmt.Fprint(w, "}\n\n") - w.Size += int(reflect.TypeOf("").Size()) * len(t.Buckets) - - // Generate string buckets. - for i, bucket := range t.Buckets { - w.WriteVar(fmt.Sprint("bucket", i), bucket) - } - return nil -} - -func generateTestData(b *Builder, w *gen.CodeWriter) error { - d, err := getEnumData(b) - if err != nil { - return err - } - - fmt.Fprintln(w) - fmt.Fprintln(w, "var enumMap = map[string]uint16{") - fmt.Fprintln(w, `"": 0,`) - for _, k := range d.keys { - fmt.Fprintf(w, "%q: %d,\n", k, d.m[k]) - } - fmt.Fprintln(w, "}") - return nil -} - -func toCamel(s string) string { - p := strings.Split(s, "-") - for i, s := range p[1:] { - p[i+1] = strings.Title(s) - } - return strings.Replace(strings.Join(p, ""), "/", "", -1) -} - -func (b *Builder) stats() string { - w := &bytes.Buffer{} - - b.rootMeta.validate() - for _, es := range b.enums { - fmt.Fprintf(w, "<%s>\n", es.name) - printEnumValues(w, es, 1, nil) - } - fmt.Fprintln(w) - printEnums(w, b.rootMeta.typeInfo, 0) - fmt.Fprintln(w) - fmt.Fprintln(w, "Nr elem: ", len(b.strToBucket)) - fmt.Fprintln(w, "uniqued size: ", b.size) - fmt.Fprintln(w, "total string size: ", b.sizeAll) - fmt.Fprintln(w, "bucket waste: ", b.bucketWaste) - - return w.String() -} - -func printEnums(w io.Writer, s *typeInfo, indent int) { - idStr := strings.Repeat(" ", indent) + "- " - e := s.enum - if e == nil { - if len(s.entries) > 0 { - panic(fmt.Errorf("has entries but no enum values: %#v", s.entries)) - } - return - } - if e.name != "" { - fmt.Fprintf(w, "%s<%s>\n", idStr, e.name) - } else { - printEnumValues(w, e, indent, s) - } - if s.sharedKeys() { - for _, v := range s.entries { - printEnums(w, v, indent+1) - break - } - } -} - -func printEnumValues(w io.Writer, e *enum, indent int, info *typeInfo) { - idStr := strings.Repeat(" ", indent) + "- " - for i := 0; i < len(e.keys); i++ { - fmt.Fprint(w, idStr) - k := e.keys[i] - if u, err := strconv.ParseUint(k, 10, 16); err == nil { - fmt.Fprintf(w, "%s", k) - // Skip contiguous integers - var v, last uint64 - for i++; i < len(e.keys); i++ { - k = e.keys[i] - if v, err = strconv.ParseUint(k, 10, 16); err != nil { - break - } - last = v - } - if u < last { - fmt.Fprintf(w, `..%d`, last) - } - fmt.Fprintln(w) - if err != nil { - fmt.Fprintf(w, "%s%s\n", idStr, k) - } - } else if k == "" { - fmt.Fprintln(w, `""`) - } else { - fmt.Fprintf(w, "%s\n", k) - } - if info != nil && !info.sharedKeys() { - if e := info.entries[enumIndex(i)]; e != nil { - printEnums(w, e, indent+1) - } - } - } -} - -func getEnumData(b *Builder) (*enumData, error) { - d := &enumData{m: map[string]int{}} - if errStr := d.insert(b.rootMeta.typeInfo); errStr != "" { - // TODO: consider returning the error. - return nil, fmt.Errorf("cldrtree: %s", errStr) - } - return d, nil -} - -type enumData struct { - m map[string]int - keys []string - enums []string -} - -func (d *enumData) insert(t *typeInfo) (errStr string) { - e := t.enum - if e == nil { - return "" - } - for i, k := range e.keys { - if _, err := strconv.ParseUint(k, 10, 16); err == nil { - // We don't include any enum that has integer values. - break - } - if v, ok := d.m[k]; ok { - if v != i { - return fmt.Sprintf("%q has value %d and %d", k, i, v) - } - } else { - d.m[k] = i - if k != "" { - d.keys = append(d.keys, k) - d.enums = append(d.enums, e.name) - } - } - } - for i := range t.enum.keys { - if e := t.entries[enumIndex(i)]; e != nil { - if errStr := d.insert(e); errStr != "" { - return fmt.Sprintf("%q>%v", t.enum.keys[i], errStr) - } - } - } - return "" -} diff --git a/vendor/golang.org/x/text/internal/cldrtree/option.go b/vendor/golang.org/x/text/internal/cldrtree/option.go deleted file mode 100644 index f91e250b..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/option.go +++ /dev/null @@ -1,86 +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 cldrtree - -import ( - "reflect" - - "golang.org/x/text/unicode/cldr" -) - -// An Option configures an Index. -type Option func(*options) - -type options struct { - parent *Index - - name string - alias *cldr.Common - - sharedType *typeInfo - sharedEnums *enum -} - -func (o *options) fill(opt []Option) { - for _, f := range opt { - f(o) - } -} - -// aliasOpt sets an alias from the given node, if the node defines one. -func (o *options) setAlias(n Element) { - if n != nil && !reflect.ValueOf(n).IsNil() { - o.alias = n.GetCommon() - } -} - -// Enum defines a enumeration type. The resulting option may be passed for the -// construction of multiple Indexes, which they will share the same enum values. -// Calling Gen on a Builder will generate the Enum for the given name. The -// optional values fix the values for the given identifier to the argument -// position (starting at 0). Other values may still be added and will be -// assigned to subsequent values. -func Enum(name string, value ...string) Option { - return EnumFunc(name, nil, value...) -} - -// EnumFunc is like Enum but also takes a function that allows rewriting keys. -func EnumFunc(name string, rename func(string) string, value ...string) Option { - enum := &enum{name: name, rename: rename, keyMap: map[string]enumIndex{}} - for _, e := range value { - enum.lookup(e) - } - return func(o *options) { - found := false - for _, e := range o.parent.meta.b.enums { - if e.name == enum.name { - found = true - break - } - } - if !found { - o.parent.meta.b.enums = append(o.parent.meta.b.enums, enum) - } - o.sharedEnums = enum - } -} - -// SharedType returns an option which causes all Indexes to which this option is -// passed to have the same type. -func SharedType() Option { - info := &typeInfo{} - return func(o *options) { o.sharedType = info } -} - -func useSharedType() Option { - return func(o *options) { - sub := o.parent.meta.typeInfo.keyTypeInfo - if sub == nil { - sub = &typeInfo{} - o.parent.meta.typeInfo.keyTypeInfo = sub - } - o.sharedType = sub - } -} diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/common/main/root.xml b/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/common/main/root.xml deleted file mode 100644 index f9d3b5dc..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/common/main/root.xml +++ /dev/null @@ -1,89 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<ldml> - <identity> - <language type="root"/> - </identity> - <dates> - <calendars> - <calendar type="chinese"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">cM01</month> - <month type="2">cM02</month> - <month type="3">cM03</month> - <month type="4">cM04</month> - <month type="5">cM05</month> - <month type="6">cM06</month> - <month type="7">cM07</month> - <month type="8">cM08</month> - <month type="9">cM09</month> - <month type="10">cM10</month> - <month type="11">cM11</month> - <month type="12">cM12</month> - </monthWidth> - </monthContext> - </months> - </calendar> - <calendar type="dangi"> - <months> - <alias source="locale" path="../../calendar[@type='chinese']/months"/> - </months> - </calendar> - <calendar type="gregorian"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">gM01</month> - <month type="2">gM02</month> - <month type="3">gM03</month> - <month type="4">gM04</month> - <month type="5">gM05</month> - <month type="6">gM06</month> - <month type="7">gM07</month> - <month type="8">gM08</month> - <month type="9">gM09</month> - <month type="10">gM10</month> - <month type="11">gM11</month> - <month type="12">gM12</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/> - </monthWidth> - <monthWidth type="narrow"> - <month type="1">1</month> - <month type="2">2</month> - <month type="3">3</month> - <month type="4">4</month> - <month type="5">5</month> - <month type="6">6</month> - <month type="7">7</month> - <month type="8">8</month> - <month type="9">9</month> - <month type="10">10</month> - <month type="11">11</month> - <month type="12">12</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - </calendar> - </calendars> - </dates> -</ldml> diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/output.go b/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/output.go deleted file mode 100644 index abbfa9bc..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/testdata/test1/output.go +++ /dev/null @@ -1,350 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package test - -import "golang.org/x/text/internal/cldrtree" - -var tree = &cldrtree.Tree{locales, indices, buckets} - -// Path values: -// <context> -// - format -// - stand-alone -// <width> -// - wAbbreviated -// - wNarrow -// - wWide -// <month> -// - leap7 -// - 1..12 -// -// - calendars -// - chinese -// - dangi -// - gregorian -// - months -// - <context> -// - <width> -// - <month> -// - filler -// - 0 -// -// Nr elem: 39 -// uniqued size: 912 -// total string size: 912 -// bucket waste: 0 - -// context specifies a property of a CLDR field. -type context uint16 - -// width specifies a property of a CLDR field. -type width uint16 - -// month specifies a property of a CLDR field. -type month uint16 - -const ( - calendars = 0 // calendars - chinese = 0 // chinese - dangi = 1 // dangi - gregorian = 2 // gregorian - months = 0 // months - filler = 1 // filler - format context = 0 // format - standAlone context = 1 // stand-alone - wAbbreviated width = 0 // wAbbreviated - wNarrow width = 1 // wNarrow - wWide width = 2 // wWide - leap7 month = 0 // leap7 -) - -var locales = []uint32{ // 768 elements - // Entry 0 - 1F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 20 - 3F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 40 - 5F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 60 - 7F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 80 - 9F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry A0 - BF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry C0 - DF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry E0 - FF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 100 - 11F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 120 - 13F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 140 - 15F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 160 - 17F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 180 - 19F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 1A0 - 1BF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 1C0 - 1DF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 1E0 - 1FF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 200 - 21F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 220 - 23F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 240 - 25F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 260 - 27F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 280 - 29F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 2A0 - 2BF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 2C0 - 2DF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 2E0 - 2FF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, -} // Size: xxxx bytes - -var indices = []uint16{ // 86 elements - // Entry 0 - 3F - 0x0001, 0x0002, 0x0003, 0x0006, 0x0021, 0x0027, 0x0002, 0x0009, - 0x001e, 0x0001, 0x000b, 0x0003, 0x8002, 0x8002, 0x000f, 0x000d, - 0x0000, 0xffff, 0x0000, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, - 0x001e, 0x0023, 0x0028, 0x002d, 0x0032, 0x0037, 0x0001, 0x0000, - 0x003c, 0x0002, 0x9000, 0x0024, 0x0001, 0x0000, 0x013b, 0x0002, - 0x002a, 0x0053, 0x0002, 0x002d, 0x0040, 0x0003, 0x8002, 0x9001, - 0x0031, 0x000d, 0x0000, 0xffff, 0x023a, 0x023f, 0x0244, 0x0249, - 0x024e, 0x0253, 0x0258, 0x025d, 0x0262, 0x0267, 0x026c, 0x0271, - // Entry 40 - 7F - 0x0003, 0x9000, 0x0044, 0x9000, 0x000d, 0x0000, 0xffff, 0x0276, - 0x0278, 0x027a, 0x027c, 0x027e, 0x0280, 0x0282, 0x0284, 0x0286, - 0x0288, 0x028b, 0x028e, 0x0001, 0x0000, 0x0291, -} // Size: xxxx bytes - -var buckets = []string{ - bucket0, -} - -var bucket0 string = "" + // Size: xxxx bytes - "\x04cM01\x04cM02\x04cM03\x04cM04\x04cM05\x04cM06\x04cM07\x04cM08\x04cM09" + - "\x04cM10\x04cM11\x04cM12\xfe\x01\x94\xfd\xc2\xfa/\xfc\xc0A\xd3\xff\x12" + - "\x04[s\xc8nO\xf9_\xf6b\xa5\xee\xe8*\xbd\xf4J-\x0bu\xfb\x18\x0d\xafH\xa7" + - "\x9e\xe0\xb1\x0d9FQ\x85\x0fԡx\x89.\xe2\x85\xec\xe1Q\x14Ux\x08u\xd6N\xe2" + - "\xd3\xd0\xd0\xdek\xf8\xf9\xb4L\xe8_\xf0DƱ\xf8;\x8e\x88;\xbf\x85z\xab\x99" + - "ŲR\xc7B\x9c2\U000e8bb7\x9e\xf8V\xf6Y\xc1\x8f\x0d\xce\xccw\xc7^z\x81\xbf" + - "\xde'_g\xcf\xe2B\xcf<\xc3T\xf3\xed\xe2־\xccN\xa3\xae^\x88Rj\x9fJW\x8b˞" + - "\xf2ԦS\x14v\x8dm)\x97a\xea\x9eOZ\xa6\xae\xc3\xfcxƪ\xe0\x81\xac\x81 \xc7 " + - "\xef\xcdlꄶ\x92^`{\xe0cqo\x96\xdd\xcd\xd0\x1du\x04\\?\x00\x0f\x8ayk\xcelQ" + - ",8\x01\xaa\xca\xee߭[Pfd\xe8\xc0\xe4\xa7q\xecื\xc1\x96]\x91\x81%\x1b|\x9c" + - "\x9c\xa5 Z\xfc\x16\xa26\xa2\xef\xcd\xd2\xd1-*y\xd0\xfet\xa8(\x0a\xe9C" + - "\x9e\xb0֮\xca\x08#\xae\x02\xd6}\x86j\xc2\xc4\xfeJrPS\xda\x11\x9b\x9dOQQ@" + - "\xa2\xd7#\x9c@\xb4ZÕ\x0d\x94\x1f\xc4\xfe\x1c\x0c\xb9j\xd3\x22\xd6\x22" + - "\x82)_\xbf\xe1\x1e&\xa43\x07m\xb5\xc1DL:4\xd3*\\J\x7f\xfb\xe8с\xf7\xed;" + - "\x8c\xfe\x90O\x93\xf8\xf0m)\xbc\xd9\xed\x84{\x18.\x04d\x10\xf4Kİ\xf3\xf0" + - ":\x0d\x06\x82\x0a0\xf2W\xf8\x11A0g\x8a\xc0E\x86\xc1\xe3\xc94,\x8b\x80U" + - "\xc4f؆D\x1d%\x99\x06͉֚K\x96\x8a\xe9\xf0띖\\\xe6\xa4i<N\xbe\x88\x15\x01" + - "\xb7لkf\xeb\x02\xb5~\\\xda{l\xbah\x91\xd6\x16\xbdhl7\xb84a:Ⱥ\xa2,\x00" + - "\x8f\xfeh\x83RsJ\xe4\xe3\xf1!z\xcd_\x83'\x08\x140\x18g\xb5\xd0g\x11\xb28" + - "\x00\x1cyW\xb2w\x19\xce?1\x88\xdf\xe5}\xee\xbfo\x82YZ\x10\xf7\xbbV,\xa0M" + - "\\='\x04gM01\x04gM02\x04gM03\x04gM04\x04gM05\x04gM06\x04gM07\x04gM08\x04" + - "gM09\x04gM10\x04gM11\x04gM12\x011\x012\x013\x014\x015\x016\x017\x018\x01" + - "9\x0210\x0211\x0212\xfe\x94)X\xc6\xdb2bg\x06I\xf3\xbc\x97٢1g5\xed悥\xdf" + - "\xe6\xf1\xa0\x11\xfbɊ\xd0\xfb\xe7\x90\x00<\x01\xe8\xe9\x96w\x03\xaff^" + - "\x9fr@\x7fK\x03\xd4\xfd\xb4t\xaa\xfe\x8a\x0d>\x05\x15\xddFP\xcfQ\x17+" + - "\x81$\x8b\xcb\x7f\x96\x9e@\x0bl[\x12wh\xb1\xc4\x12\xfa\xe9\x8c\xf5v1\xcf" + - "7\x03;KJ\xba}~\xd3\x19\xba\x14rI\xc9\x08\xacp\xd1\xc4\x06\xda\xde\x0e" + - "\x82\x8e\xb6\xba\x0dʨ\x82\x85T>\x10!<d?\xc8`;X`#fp\xba\xbc\xad\x0b\xd7" + - "\xf4\xc4\x19\x0e26#\xa8h\xd1\xea\xe1v\x9f@\xa2f1C\x1b;\xd5!V\x05\xd2\x08" + - "o\xeaԙ\xacc\xa4e=\x12(=V\x01\x9c7\x95\xa9\x8a\x12m\x09\xcf\xcb\xe3l\xdc" + - "\xc97\x88\xa5@\x9f\x8bnB\xc2݃\xaaFa\x18R\xad\x0bP(w\\w\x16\x90\xb6\x85N" + - "\x05\xb3w$\x1es\xa8\x83\xddw\xaf\xf00,m\xa8f\\B4\x1d\xdaJ\xda\xea" - -var enumMap = map[string]uint16{ - "": 0, - "calendars": 0, - "chinese": 0, - "dangi": 1, - "gregorian": 2, - "months": 0, - "filler": 1, - "format": 0, - "stand-alone": 1, - "wAbbreviated": 0, - "wNarrow": 1, - "wWide": 2, - "leap7": 0, -} - -// Total table size: xxxx bytes (4KiB); checksum: EB82B0F5 diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en.xml b/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en.xml deleted file mode 100644 index ae7f1481..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en.xml +++ /dev/null @@ -1,171 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<ldml> - <identity> - <language type="en"/> - </identity> - <dates> - <calendars> - <calendar type="buddhist"> - <eras> - <eraAbbr> - <era type="0">BE</era> - </eraAbbr> - </eras> - </calendar> - <calendar type="chinese"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <month type="1">Mo1</month> - <month type="2">Mo2</month> - <month type="3">Mo3</month> - <month type="4">Mo4</month> - <month type="5">Mo5</month> - <month type="6">Mo6</month> - <month type="7">Mo7</month> - <month type="8">Mo8</month> - <month type="9">Mo9</month> - <month type="10">Mo10</month> - <month type="11">Mo11</month> - <month type="12">Mo12</month> - </monthWidth> - <monthWidth type="wide"> - <month type="1">First Month</month> - <month type="2">Second Month</month> - <month type="3">Third Month</month> - <month type="4">Fourth Month</month> - <month type="5">Fifth Month</month> - <month type="6">Sixth Month</month> - <month type="7">Seventh Month</month> - <month type="8">Eighth Month</month> - <month type="9">Ninth Month</month> - <month type="10">Tenth Month</month> - <month type="11">Eleventh Month</month> - <month type="12">Twelfth Month</month> - </monthWidth> - </monthContext> - </months> - <cyclicNameSets> - <cyclicNameSet type="zodiacs"> - <cyclicNameContext type="format"> - <cyclicNameWidth type="abbreviated"> - <cyclicName type="1">Rat</cyclicName> - <cyclicName type="2">Ox</cyclicName> - <cyclicName type="3">Tiger</cyclicName> - <cyclicName type="4">Rabbit</cyclicName> - <cyclicName type="5">Dragon</cyclicName> - <cyclicName type="6">Snake</cyclicName> - <cyclicName type="7">Horse</cyclicName> - <cyclicName type="8">Goat</cyclicName> - <cyclicName type="9">Monkey</cyclicName> - <cyclicName type="10">Rooster</cyclicName> - <cyclicName type="11">Dog</cyclicName> - <cyclicName type="12">Pig</cyclicName> - </cyclicNameWidth> - </cyclicNameContext> - </cyclicNameSet> - </cyclicNameSets> - </calendar> - <calendar type="generic"> - </calendar> - <calendar type="gregorian"> - <months> - <monthContext type="format"> - <monthWidth type="wide"> - <month type="1">enWideM1</month> - <month type="2">enWideM2</month> - <month type="3">enWideM3</month> - <month type="4">enWideM4</month> - <month type="5">enWideM5</month> - <month type="6">enWideM6</month> - <month type="7">enWideM7</month> - <month type="8">enWideM8</month> - <month type="9">enWideM9</month> - <month type="10">enWideM10</month> - <month type="11">enWideM11</month> - <month type="12">enWideM12</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="narrow"> - <month type="1">enNarrowM1</month> - <month type="2">enNarrowM2</month> - <month type="3">enNarrowM3</month> - <month type="4">enNarrowM4</month> - <month type="5">enNarrowM5</month> - <month type="6">enNarrowM6</month> - <!-- missing --> - <month type="8">enNarrowM8</month> - <month type="9">enNarrowM9</month> - <month type="10">enNarrowM10</month> - <month type="11">enNarrowM11</month> - <month type="12">enNarrowM12</month> - </monthWidth> - </monthContext> - </months> - <eras> - <eraNames> - <era type="0">Before Christ</era> - <era type="0" alt="variant">Before Common Era</era> - <era type="1">Anno Domini</era> - <era type="1" alt="variant">Common Era</era> - </eraNames> - <eraAbbr> - <era type="0">BC</era> - <era type="0" alt="variant">BCE</era> - <era type="1">AD</era> - <era type="1" alt="variant">CE</era> - </eraAbbr> - <!-- nothing for eraNarrow --> - </eras> - </calendar> - <calendar type="hebrew"> - <eras> - <eraAbbr> - <era type="0">AM</era> - </eraAbbr> - </eras> - </calendar> - <calendar type="islamic"> - <eras> - <eraAbbr> - <era type="0">AH</era> - </eraAbbr> - </eras> - </calendar> - </calendars> - <fields> - <field type="era"> - <displayName>era</displayName> - </field> - <field type="month"> - <displayName>month</displayName> - <relative type="-1">last month</relative> - <relative type="0">this month</relative> - <relative type="1">next month</relative> - <relativeTime type="future"> - <relativeTimePattern count="one">enFutMOne</relativeTimePattern> - <relativeTimePattern count="other">enFutMOther</relativeTimePattern> - </relativeTime> - <relativeTime type="past"> - <relativeTimePattern count="one">enPastMOne</relativeTimePattern> - <relativeTimePattern count="other">enPastMOther</relativeTimePattern> - </relativeTime> - </field> - <field type="month-short"> - <displayName>mo.</displayName> - <relative type="-1">last mo.</relative> - <relative type="0">this mo.</relative> - <relative type="1">next mo.</relative> - <relativeTime type="future"> - <relativeTimePattern count="one">enShortFutMOne</relativeTimePattern> - <relativeTimePattern count="other">enShortFutMOther</relativeTimePattern> - </relativeTime> - <relativeTime type="past"> - <relativeTimePattern count="one">enShortPastMOne</relativeTimePattern> - <relativeTimePattern count="other">enShortPastMOther</relativeTimePattern> - </relativeTime> - </field> - </fields> - </dates> -</ldml> diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_001.xml b/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_001.xml deleted file mode 100644 index e5854488..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_001.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<ldml> - <identity> - <language type="en"/> - <territory type="001"/> - </identity> - <dates> - <calendars> - <calendar type="chinese"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <month type="1">001AbbrMo1</month> - <month type="2">001AbbrMo2</month> - <month type="3">001AbbrMo3</month> - <month type="4">001AbbrMo4</month> - <month type="5">001AbbrMo5</month> - <month type="6">001AbbrMo6</month> - <month type="7">001AbbrMo7</month> - <month type="8">001AbbrMo8</month> - <month type="9">001AbbrMo9</month> - <month type="10">001AbbrMo10</month> - <month type="11">001AbbrMo11</month> - <month type="12">001AbbrMo12</month> - </monthWidth> - </monthContext> - </months> - </calendar> - <calendar type="generic"> - </calendar> - <calendar type="gregorian"> - </calendar> - </calendars> - <fields> - <field type="month-short"> - <displayName>mo</displayName> - <relativeTime type="future"> - <relativeTimePattern count="one">001ShortFutMOne</relativeTimePattern> - <relativeTimePattern count="other">001ShortFutMOther</relativeTimePattern> - </relativeTime> - <relativeTime type="past"> - <!-- missing --> - <relativeTimePattern count="other">001ShortPastMOther</relativeTimePattern> - </relativeTime> - </field> - <field type="month-narrow"> - <displayName>mo</displayName> - <relativeTime type="future"> - <relativeTimePattern count="one">001NarrowFutMOne</relativeTimePattern> - <relativeTimePattern count="two">001NarrowFutMTwo</relativeTimePattern> - <relativeTimePattern count="other">001NarrowFutMOther</relativeTimePattern> - </relativeTime> - <relativeTime type="past"> - <relativeTimePattern count="one">001NarrowPastMOne</relativeTimePattern> - <relativeTimePattern count="other">001NarrowPastMOther</relativeTimePattern> - </relativeTime> - </field> - </fields> - </dates> -</ldml> diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_GB.xml b/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_GB.xml deleted file mode 100644 index 948ad732..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/en_GB.xml +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<ldml> - <identity> - <language type="en"/> - <territory type="GB"/> - </identity> - <dates> - <calendars> - <calendar type="gregorian"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <month type="1">gbAbbrM1</month> - <month type="2">gbAbbrM2</month> - <month type="3">gbAbbrM3</month> - <month type="4">gbAbbrM4</month> - <month type="5">gbAbbrM5</month> - <month type="6">gbAbbrM6</month> - <month type="7">gbAbbrM7</month> - <month type="8">gbAbbrM8</month> - <month type="9">gbAbbrM9</month> - <month type="10">gbAbbrM10</month> - <month type="11">gbAbbrM11</month> - <month type="12">gbAbbrM12</month> - </monthWidth> - <monthWidth type="wide"> - <month type="1">gbWideM1</month> - <month type="2">gbWideM2</month> - <month type="3">gbWideM3</month> - <month type="4">gbWideM4</month> - <month type="5">gbWideM5</month> - <month type="6">gbWideM6</month> - <month type="7">gbWideM7</month> - <month type="8">gbWideM8</month> - <month type="9">gbWideM9</month> - <month type="10">gbWideM10</month> - <month type="11">gbWideM11</month> - <month type="12">gbWideM12</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="narrow"> - <month type="1">gbNarrowM1</month> - <month type="2">gbNarrowM2</month> - <month type="3">gbNarrowM3</month> - <!-- missing --> - <month type="5">gbNarrowM5</month> - <month type="6">gbNarrowM6</month> - <!-- missing --> - <month type="8">gbNarrowM8</month> - <month type="9">gbNarrowM9</month> - <month type="10">gbNarrowM10</month> - <month type="11">gbNarrowM11</month> - <month type="12">gbNarrowM12</month> - </monthWidth> - </monthContext> - </months> - </calendar> - <calendar type="islamic"> - </calendar> - </calendars> - </dates> -</ldml> diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/root.xml b/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/root.xml deleted file mode 100644 index 7f807203..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/common/main/root.xml +++ /dev/null @@ -1,646 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<ldml> - <identity> - <language type="root"/> - </identity> - <dates> - <calendars> - <calendar type="buddhist"> - <months> - <alias source="locale" path="../../calendar[@type='generic']/months"/> <!-- gregorian in original --> - </months> - <eras> - <eraNames> - <alias source="locale" path="../eraAbbr"/> - </eraNames> - <eraAbbr> - <era type="0">BE</era> - </eraAbbr> - <eraNarrow> - <alias source="locale" path="../eraAbbr"/> - </eraNarrow> - </eras> - </calendar> - <calendar type="chinese"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">chineseWideM01</month> - <month type="2">chineseWideM02</month> - <month type="3">chineseWideM03</month> - <month type="4">chineseWideM04</month> - <month type="5">chineseWideM05</month> - <month type="6">chineseWideM06</month> - <month type="7">chineseWideM07</month> - <month type="8">chineseWideM08</month> - <month type="9">chineseWideM09</month> - <month type="10">chineseWideM10</month> - <month type="11">chineseWideM11</month> - <month type="12">chineseWideM12</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/> - </monthWidth> - <monthWidth type="narrow"> - <month type="1">chineseNarrowM1</month> - <month type="2">chineseNarrowM2</month> - <month type="3">chineseNarrowM3</month> - <month type="4">chineseNarrowM4</month> - <month type="5">chineseNarrowM5</month> - <month type="6">chineseNarrowM6</month> - <month type="7">chineseNarrowM7</month> - <month type="8">chineseNarrowM8</month> - <month type="9">chineseNarrowM9</month> - <month type="10">chineseNarrowM10</month> - <month type="11">chineseNarrowM11</month> - <month type="12">chineseNarrowM12</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - <!-- chinese eras are computed, and don't fall back to gregorian --> - <cyclicNameSets> - <cyclicNameSet type="dayParts"> - <cyclicNameContext type="format"> - <cyclicNameWidth type="abbreviated"> - <cyclicName type="1">dpAbbr1</cyclicName> - <cyclicName type="2">dpAbbr2</cyclicName> - <cyclicName type="3">dpAbbr3</cyclicName> - <cyclicName type="4">dpAbbr4</cyclicName> - <cyclicName type="5">dpAbbr5</cyclicName> - <cyclicName type="6">dpAbbr6</cyclicName> - <cyclicName type="7">dpAbbr7</cyclicName> - <cyclicName type="8">dpAbbr8</cyclicName> - <cyclicName type="9">dpAbbr9</cyclicName> - <cyclicName type="10">dpAbbr10</cyclicName> - <cyclicName type="11">dpAbbr11</cyclicName> - <cyclicName type="12">dpAbbr12</cyclicName> - </cyclicNameWidth> - <cyclicNameWidth type="narrow"> - <alias source="locale" path="../cyclicNameWidth[@type='abbreviated']"/> - </cyclicNameWidth> - <cyclicNameWidth type="wide"> - <alias source="locale" path="../cyclicNameWidth[@type='abbreviated']"/> - </cyclicNameWidth> - </cyclicNameContext> - </cyclicNameSet> - <cyclicNameSet type="days"> - <alias source="locale" path="../cyclicNameSet[@type='years']"/> - </cyclicNameSet> - <cyclicNameSet type="months"> - <alias source="locale" path="../cyclicNameSet[@type='years']"/> - </cyclicNameSet> - <cyclicNameSet type="years"> - <cyclicNameContext type="format"> - <cyclicNameWidth type="abbreviated"> - <cyclicName type="1">year1</cyclicName> - <cyclicName type="2">year2</cyclicName> - <cyclicName type="3">year3</cyclicName> - <cyclicName type="4">year4</cyclicName> - <cyclicName type="5">year5</cyclicName> - <cyclicName type="6">year6</cyclicName> - <cyclicName type="7">year7</cyclicName> - <cyclicName type="8">year8</cyclicName> - <cyclicName type="9">year9</cyclicName> - <cyclicName type="10">year10</cyclicName> - <cyclicName type="11">year11</cyclicName> - <cyclicName type="12">year12</cyclicName> - <cyclicName type="13">year13</cyclicName> - <cyclicName type="14">year14</cyclicName> - <cyclicName type="15">year15</cyclicName> - <cyclicName type="16">year16</cyclicName> - <cyclicName type="17">year17</cyclicName> - <cyclicName type="18">year18</cyclicName> - <cyclicName type="19">year19</cyclicName> - <cyclicName type="20">year20</cyclicName> - <cyclicName type="21">year21</cyclicName> - <cyclicName type="22">year22</cyclicName> - <cyclicName type="23">year23</cyclicName> - <cyclicName type="24">year24</cyclicName> - <cyclicName type="25">year25</cyclicName> - <cyclicName type="26">year26</cyclicName> - <cyclicName type="27">year27</cyclicName> - <cyclicName type="28">year28</cyclicName> - <cyclicName type="29">year29</cyclicName> - <cyclicName type="30">year30</cyclicName> - <cyclicName type="31">year31</cyclicName> - <cyclicName type="32">year32</cyclicName> - <cyclicName type="33">year33</cyclicName> - <cyclicName type="34">year34</cyclicName> - <cyclicName type="35">year35</cyclicName> - <cyclicName type="36">year36</cyclicName> - <cyclicName type="37">year37</cyclicName> - <cyclicName type="38">year38</cyclicName> - <cyclicName type="39">year39</cyclicName> - <cyclicName type="40">year40</cyclicName> - <cyclicName type="41">year41</cyclicName> - <cyclicName type="42">year42</cyclicName> - <cyclicName type="43">year43</cyclicName> - <cyclicName type="44">year44</cyclicName> - <cyclicName type="45">year45</cyclicName> - <cyclicName type="46">year46</cyclicName> - <cyclicName type="47">year47</cyclicName> - <cyclicName type="48">year48</cyclicName> - <cyclicName type="49">year49</cyclicName> - <cyclicName type="50">year50</cyclicName> - <cyclicName type="51">year51</cyclicName> - <cyclicName type="52">year52</cyclicName> - <cyclicName type="53">year53</cyclicName> - <cyclicName type="54">year54</cyclicName> - <cyclicName type="55">year55</cyclicName> - <cyclicName type="56">year56</cyclicName> - <cyclicName type="57">year57</cyclicName> - <cyclicName type="58">year58</cyclicName> - <cyclicName type="59">year59</cyclicName> - <cyclicName type="60">year60</cyclicName> - </cyclicNameWidth> - <cyclicNameWidth type="narrow"> - <alias source="locale" path="../cyclicNameWidth[@type='abbreviated']"/> - </cyclicNameWidth> - <cyclicNameWidth type="wide"> - <alias source="locale" path="../cyclicNameWidth[@type='abbreviated']"/> - </cyclicNameWidth> - </cyclicNameContext> - </cyclicNameSet> - <cyclicNameSet type="zodiacs"> - <cyclicNameContext type="format"> - <cyclicNameWidth type="abbreviated"> - <alias source="locale" path="../../../cyclicNameSet[@type='dayParts']/cyclicNameContext[@type='format']/cyclicNameWidth[@type='abbreviated']"/> - </cyclicNameWidth> - <cyclicNameWidth type="narrow"> - <alias source="locale" path="../cyclicNameWidth[@type='abbreviated']"/> - </cyclicNameWidth> - <cyclicNameWidth type="wide"> - <alias source="locale" path="../cyclicNameWidth[@type='abbreviated']"/> - </cyclicNameWidth> - </cyclicNameContext> - </cyclicNameSet> - </cyclicNameSets> - </calendar> - <calendar type="dangi"> - <months> - <alias source="locale" path="../../calendar[@type='chinese']/months"/> - </months> - <cyclicNameSets> - <alias source="locale" path="../../calendar[@type='chinese']/cyclicNameSets"/> - </cyclicNameSets> - </calendar> - <calendar type="ethiopic"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">Meskerem</month> - <month type="2">Tekemt</month> - <month type="3">Hedar</month> - <month type="4">Tahsas</month> - <month type="5">Ter</month> - <month type="6">Yekatit</month> - <month type="7">Megabit</month> - <month type="8">Miazia</month> - <month type="9">Genbot</month> - <month type="10">Sene</month> - <month type="11">Hamle</month> - <month type="12">Nehasse</month> - <month type="13">Pagumen</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/> - </monthWidth> - <monthWidth type="narrow"> - <month type="1">1</month> - <month type="2">2</month> - <month type="3">3</month> - <month type="4">4</month> - <month type="5">5</month> - <month type="6">6</month> - <month type="7">7</month> - <month type="8">8</month> - <month type="9">9</month> - <month type="10">10</month> - <month type="11">11</month> - <month type="12">12</month> - <month type="13">13</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - <eras> - <eraNames> - <alias source="locale" path="../eraAbbr"/> - </eraNames> - <eraAbbr> - <era type="0">ERA0</era> - <era type="1">ERA1</era> - </eraAbbr> - <eraNarrow> - <alias source="locale" path="../eraAbbr"/> - </eraNarrow> - </eras> - </calendar> - <calendar type="ethiopic-amete-alem"> - <months> - <alias source="locale" path="../../calendar[@type='ethiopic']/months"/> - </months> - <eras> - <eraNames> - <alias source="locale" path="../eraAbbr"/> - </eraNames> - <eraAbbr> - <era type="0">ERA0</era> - </eraAbbr> - <eraNarrow> - <alias source="locale" path="../eraAbbr"/> - </eraNarrow> - </eras> - </calendar> - <calendar type="generic"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">genWideM01</month> - <month type="2">genWideM02</month> - <month type="3">genWideM03</month> - <month type="4">genWideM04</month> - <month type="5">genWideM05</month> - <month type="6">genWideM06</month> - <month type="7">genWideM07</month> - <month type="8">genWideM08</month> - <month type="9">genWideM09</month> - <month type="10">genWideM10</month> - <month type="11">genWideM11</month> - <month type="12">genWideM12</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/> - </monthWidth> - <monthWidth type="narrow"> - <month type="1">genNarrowM1</month> - <month type="2">genNarrowM2</month> - <month type="3">genNarrowM3</month> - <month type="4">genNarrowM4</month> - <month type="5">genNarrowM5</month> - <month type="6">genNarrowM6</month> - <month type="7">genNarrowM7</month> - <month type="8">genNarrowM8</month> - <month type="9">genNarrowM9</month> - <month type="10">genNarrowM10</month> - <month type="11">genNarrowM11</month> - <month type="12">genNarrowM12</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - <eras> - <eraNames> - <alias source="locale" path="../eraAbbr"/> - </eraNames> - <eraAbbr> - <era type="0">ERA0</era> - <era type="1">ERA1</era> - </eraAbbr> - <eraNarrow> - <alias source="locale" path="../eraAbbr"/> - </eraNarrow> - </eras> - </calendar> - <calendar type="gregorian"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">gregWideM01</month> - <month type="2">gregWideM02</month> - <month type="3">gregWideM03</month> - <month type="4">gregWideM04</month> - <month type="5">gregWideM05</month> - <month type="6">gregWideM06</month> - <month type="7">gregWideM07</month> - <month type="8">gregWideM08</month> - <month type="9">gregWideM09</month> - <month type="10">gregWideM10</month> - <month type="11">gregWideM11</month> - <month type="12">gregWideM12</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/> - </monthWidth> - <monthWidth type="narrow"> - <month type="1">gregNarrowM1</month> - <month type="2">gregNarrowM2</month> - <month type="3">gregNarrowM3</month> - <month type="4">gregNarrowM4</month> - <month type="5">gregNarrowM5</month> - <month type="6">gregNarrowM6</month> - <month type="7">gregNarrowM7</month> - <month type="8">gregNarrowM8</month> - <month type="9">gregNarrowM9</month> - <month type="10">gregNarrowM10</month> - <month type="11">gregNarrowM11</month> - <month type="12">gregNarrowM12</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - <eras> - <eraNames> - <alias source="locale" path="../eraAbbr"/> - </eraNames> - <eraAbbr> - <era type="0">BCE</era> - <era type="1">CE</era> - </eraAbbr> - <eraNarrow> - <alias source="locale" path="../eraAbbr"/> - </eraNarrow> - </eras> - </calendar> - <calendar type="hebrew"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">Tishri</month> - <month type="2">Heshvan</month> - <month type="3">Kislev</month> - <month type="4">Tevet</month> - <month type="5">Shevat</month> - <month type="6">Adar I</month> - <month type="7">Adar</month> - <month type="7" yeartype="leap">Adar II</month> - <month type="8">Nisan</month> - <month type="9">Iyar</month> - <month type="10">Sivan</month> - <month type="11">Tamuz</month> - <month type="12">Av</month> - <month type="13">Elul</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/> - </monthWidth> - <monthWidth type="narrow"> - <month type="1">1</month> - <month type="2">2</month> - <month type="3">3</month> - <month type="4">4</month> - <month type="5">5</month> - <month type="6">6</month> - <month type="7">7</month> - <month type="7" yeartype="leap">7</month> - <month type="8">8</month> - <month type="9">9</month> - <month type="10">10</month> - <month type="11">11</month> - <month type="12">12</month> - <month type="13">13</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - <eras> - <eraNames> - <alias source="locale" path="../eraAbbr"/> - </eraNames> - <eraAbbr> - <era type="0">AM</era> - <!-- HY = Anno Mundi = -180799862400000 milliseconds since 1/1/1970 AD --> - </eraAbbr> - <eraNarrow> - <alias source="locale" path="../eraAbbr"/> - </eraNarrow> - </eras> - </calendar> - <calendar type="islamic"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <month type="1">islAbbr1</month> - <month type="2">islAbbr2</month> - <month type="3">islAbbr3</month> - <month type="4">islAbbr4</month> - <month type="5">islAbbr5</month> - <month type="6">islAbbr6</month> - <month type="7">islAbbr7</month> - <month type="8">islAbbr8</month> - <month type="9">islAbbr9</month> - <month type="10">islAbbr10</month> - <month type="11">islAbbr11</month> - <month type="12">islAbbr12</month> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">islWide1</month> - <month type="2">islWide2</month> - <month type="3">islWide3</month> - <month type="4">islWide4</month> - <month type="5">islWide5</month> - <month type="6">islWide6</month> - <month type="7">islWide7</month> - <month type="8">islWide8</month> - <month type="9">islWide9</month> - <month type="10">islWide10</month> - <month type="11">islWide11</month> - <month type="12">islWide12</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/> - </monthWidth> - <monthWidth type="narrow"> - <month type="1">1</month> - <month type="2">2</month> - <month type="3">3</month> - <month type="4">4</month> - <month type="5">5</month> - <month type="6">6</month> - <month type="7">7</month> - <month type="8">8</month> - <month type="9">9</month> - <month type="10">10</month> - <month type="11">11</month> - <month type="12">12</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - <eras> - <eraNames> - <alias source="locale" path="../eraAbbr"/> - </eraNames> - <eraAbbr> - <era type="0">AH</era> - </eraAbbr> - <eraNarrow> - <alias source="locale" path="../eraAbbr"/> - </eraNarrow> - </eras> - </calendar> - <calendar type="islamic-civil"> - <months> - <alias source="locale" path="../../calendar[@type='islamic']/months"/> - </months> - <eras> - <alias source="locale" path="../../calendar[@type='islamic']/eras"/> - </eras> - </calendar> - <calendar type="islamic-rgsa"> - <months> - <alias source="locale" path="../../calendar[@type='islamic']/months"/> - </months> - <eras> - <alias source="locale" path="../../calendar[@type='islamic']/eras"/> - </eras> - </calendar> - <calendar type="islamic-tbla"> - <months> - <alias source="locale" path="../../calendar[@type='islamic']/months"/> - </months> - </calendar> - <calendar type="islamic-umalqura"> - <months> - <alias source="locale" path="../../calendar[@type='islamic']/months"/> - </months> - </calendar> - <calendar type="persian"> - <months> - <monthContext type="format"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../monthWidth[@type='wide']"/> - </monthWidth> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">Farvardin</month> - <month type="2">Ordibehesht</month> - <month type="3">Khordad</month> - <month type="4">Tir</month> - <month type="5">Mordad</month> - <month type="6">Shahrivar</month> - <month type="7">Mehr</month> - <month type="8">Aban</month> - <month type="9">Azar</month> - <month type="10">Dey</month> - <month type="11">Bahman</month> - <month type="12">Esfand</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="abbreviated"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/> - </monthWidth> - <monthWidth type="narrow"> - <month type="1">1</month> - <month type="2">2</month> - <month type="3">3</month> - <month type="4">4</month> - <month type="5">5</month> - <month type="6">6</month> - <month type="7">7</month> - <month type="8">8</month> - <month type="9">9</month> - <month type="10">10</month> - <month type="11">11</month> - <month type="12">12</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - <eras> - <eraNames> - <alias source="locale" path="../eraAbbr"/> - </eraNames> - <eraAbbr> - <era type="0">AP</era> - </eraAbbr> - <eraNarrow> - <alias source="locale" path="../eraAbbr"/> - </eraNarrow> - </eras> - </calendar> - </calendars> - <fields> - <field type="era"> - <displayName>Era</displayName> - </field> - <field type="era-short"> - <alias source="locale" path="../field[@type='era']"/> - </field> - <field type="era-narrow"> - <alias source="locale" path="../field[@type='era-short']"/> - </field> - <field type="month"> - <displayName>Month</displayName> - <relative type="-1">last month</relative> - <relative type="0">this month</relative> - <relative type="1">next month</relative> - <relativeTime type="future"> - <relativeTimePattern count="other">+{0} m</relativeTimePattern> - </relativeTime> - <relativeTime type="past"> - <relativeTimePattern count="other">-{0} m</relativeTimePattern> - </relativeTime> - </field> - <field type="month-short"> - <alias source="locale" path="../field[@type='month']"/> - </field> - <field type="month-narrow"> - <alias source="locale" path="../field[@type='month-short']"/> - </field> - </fields> - </dates> -</ldml> diff --git a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/output.go b/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/output.go deleted file mode 100644 index f688889b..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/testdata/test2/output.go +++ /dev/null @@ -1,889 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package test - -import "golang.org/x/text/internal/cldrtree" - -var tree = &cldrtree.Tree{locales, indices, buckets} - -// Path values: -// <width> -// - wAbbreviated -// - wNarrow -// - wWide -// <context> -// - format -// - stand-alone -// <month> -// - leap7 -// - 1..13 -// <cycleType> -// - cycDayParts -// - cycDays -// - cycMonths -// - cycYears -// - cycZodiacs -// <relative> -// - before1 -// - current -// - after1 -// -// - calendars -// - buddhist -// - chinese -// - dangi -// - ethiopic -// - ethiopic-amete-alem -// - generic -// - gregorian -// - hebrew -// - islamic -// - islamic-civil -// - islamic-rgsa -// - islamic-tbla -// - islamic-umalqura -// - persian -// - months -// - <context> -// - <width> -// - <month> -// - eras -// - <width> -// - "" -// - variant -// - 0..1 -// - filler -// - 0 -// - cyclicNameSets -// - <cycleType> -// - <context> -// - <width> -// - 0..60 -// - fields -// - era -// - era-short -// - era-narrow -// - month -// - month-short -// - month-narrow -// - displayName -// - "" -// - relative -// - <relative> -// - relativeTime -// - future -// - past -// - other -// - one -// - two -// -// Nr elem: 394 -// uniqued size: 9778 -// total string size: 9931 -// bucket waste: 0 - -// width specifies a property of a CLDR field. -type width uint16 - -// context specifies a property of a CLDR field. -type context uint16 - -// month specifies a property of a CLDR field. -type month uint16 - -// cycleType specifies a property of a CLDR field. -type cycleType uint16 - -// relative specifies a property of a CLDR field. -type relative uint16 - -const ( - calendars = 0 // calendars - fields = 1 // fields - buddhist = 0 // buddhist - chinese = 1 // chinese - dangi = 2 // dangi - ethiopic = 3 // ethiopic - ethiopicAmeteAlem = 4 // ethiopic-amete-alem - generic = 5 // generic - gregorian = 6 // gregorian - hebrew = 7 // hebrew - islamic = 8 // islamic - islamicCivil = 9 // islamic-civil - islamicRgsa = 10 // islamic-rgsa - islamicTbla = 11 // islamic-tbla - islamicUmalqura = 12 // islamic-umalqura - persian = 13 // persian - months = 0 // months - eras = 1 // eras - filler = 2 // filler - cyclicNameSets = 3 // cyclicNameSets - format context = 0 // format - standAlone context = 1 // stand-alone - wAbbreviated width = 0 // wAbbreviated - wNarrow width = 1 // wNarrow - wWide width = 2 // wWide - leap7 month = 0 // leap7 - variant = 1 // variant - cycDayParts cycleType = 0 // cycDayParts - cycDays cycleType = 1 // cycDays - cycMonths cycleType = 2 // cycMonths - cycYears cycleType = 3 // cycYears - cycZodiacs cycleType = 4 // cycZodiacs - era = 0 // era - eraShort = 1 // era-short - eraNarrow = 2 // era-narrow - month = 3 // month - monthShort = 4 // month-short - monthNarrow = 5 // month-narrow - displayName = 0 // displayName - relative = 1 // relative - relativeTime = 2 // relativeTime - before1 relative = 0 // before1 - current relative = 1 // current - after1 relative = 2 // after1 - future = 0 // future - past = 1 // past - other = 0 // other - one = 1 // one - two = 2 // two -) - -var locales = []uint32{ // 768 elements - // Entry 0 - 1F - 0x00000000, 0x00000000, 0x0000027a, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 20 - 3F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 40 - 5F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 60 - 7F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 80 - 9F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x0000027a, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000027a, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000027a, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - // Entry A0 - BF - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x000003dd, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000027a, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000027a, - // Entry C0 - DF - 0x0000037f, 0x0000027a, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000027a, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - // Entry E0 - FF - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000027a, - 0x0000027a, 0x0000037f, 0x0000037f, 0x0000027a, - 0x0000037f, 0x0000037f, 0x0000037f, 0x0000037f, - 0x0000037f, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 100 - 11F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 120 - 13F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 140 - 15F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 160 - 17F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 180 - 19F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 1A0 - 1BF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 1C0 - 1DF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 1E0 - 1FF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 200 - 21F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 220 - 23F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 240 - 25F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 260 - 27F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 280 - 29F - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 2A0 - 2BF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 2C0 - 2DF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - // Entry 2E0 - 2FF - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, -} // Size: xxxx bytes - -var indices = []uint16{ // 1070 elements - // Entry 0 - 3F - 0x0002, 0x0003, 0x0259, 0x000e, 0x0012, 0x0022, 0x00b9, 0x00c1, - 0x00fd, 0x010d, 0x0147, 0x0181, 0x01bc, 0x0204, 0x020b, 0x0212, - 0x0219, 0x0220, 0x0003, 0x9005, 0x0016, 0x001f, 0x0003, 0x001a, - 0x8000, 0x8000, 0x0001, 0x001c, 0x0001, 0x0000, 0x0000, 0x0001, - 0x0000, 0x0003, 0x0004, 0x0027, 0x0000, 0x00b6, 0x0050, 0x0002, - 0x002a, 0x003d, 0x0003, 0x8002, 0x9001, 0x002e, 0x000d, 0x0000, - 0xffff, 0x0102, 0x0111, 0x0120, 0x012f, 0x013e, 0x014d, 0x015c, - 0x016b, 0x017a, 0x0189, 0x0198, 0x01a7, 0x0003, 0x9000, 0x0041, - // Entry 40 - 7F - 0x9000, 0x000d, 0x0000, 0xffff, 0x01b6, 0x01c6, 0x01d6, 0x01e6, - 0x01f6, 0x0206, 0x0216, 0x0226, 0x0236, 0x0246, 0x0257, 0x0268, - 0x0005, 0x0056, 0x8003, 0x8003, 0x006b, 0x00b0, 0x0001, 0x0058, - 0x0003, 0x005c, 0x8000, 0x8000, 0x000d, 0x0000, 0xffff, 0x0279, - 0x0281, 0x0289, 0x0291, 0x0299, 0x02a1, 0x02a9, 0x02b1, 0x02b9, - 0x02c1, 0x02ca, 0x02d3, 0x0001, 0x006d, 0x0003, 0x0071, 0x8000, - 0x8000, 0x003d, 0x0000, 0xffff, 0x02dc, 0x02e2, 0x02e8, 0x02ee, - 0x02f4, 0x02fa, 0x0300, 0x0306, 0x030c, 0x0312, 0x0319, 0x0320, - // Entry 80 - BF - 0x0327, 0x032e, 0x0335, 0x033c, 0x0343, 0x034a, 0x0351, 0x0358, - 0x035f, 0x0366, 0x036d, 0x0374, 0x037b, 0x0382, 0x0389, 0x0390, - 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03b3, 0x03ba, 0x03c1, 0x03c8, - 0x03cf, 0x03d6, 0x03dd, 0x03e4, 0x03eb, 0x03f2, 0x03f9, 0x0400, - 0x0407, 0x040e, 0x0415, 0x041c, 0x0423, 0x042a, 0x0431, 0x0438, - 0x043f, 0x0446, 0x044d, 0x0454, 0x045b, 0x0462, 0x0469, 0x0470, - 0x0001, 0x00b2, 0x0003, 0xa000, 0x8000, 0x8000, 0x0001, 0x0000, - 0x0477, 0x0004, 0x9001, 0x0000, 0x00be, 0x9001, 0x0001, 0x0000, - // Entry C0 - FF - 0x0576, 0x0003, 0x00c5, 0x00f0, 0x00fa, 0x0002, 0x00c8, 0x00dc, - 0x0003, 0x8002, 0x9001, 0x00cc, 0x000e, 0x0000, 0xffff, 0x0675, - 0x067e, 0x0685, 0x068b, 0x0692, 0x0696, 0x069e, 0x06a6, 0x06ad, - 0x06b4, 0x06b9, 0x06bf, 0x06c7, 0x0003, 0x9000, 0x00e0, 0x9000, - 0x000e, 0x0000, 0xffff, 0x06cf, 0x06d1, 0x06d3, 0x06d5, 0x06d7, - 0x06d9, 0x06db, 0x06dd, 0x06df, 0x06e1, 0x06e4, 0x06e7, 0x06ea, - 0x0003, 0x00f4, 0x8000, 0x8000, 0x0001, 0x00f6, 0x0002, 0x0000, - 0x06ed, 0x06f2, 0x0001, 0x0000, 0x06f7, 0x0003, 0x9003, 0x0101, - // Entry 100 - 13F - 0x010a, 0x0003, 0x0105, 0x8000, 0x8000, 0x0001, 0x0107, 0x0001, - 0x0000, 0x06ed, 0x0001, 0x0000, 0x07f6, 0x0003, 0x0111, 0x013a, - 0x0144, 0x0002, 0x0114, 0x0127, 0x0003, 0x8002, 0x9001, 0x0118, - 0x000d, 0x0000, 0xffff, 0x08f5, 0x0900, 0x090b, 0x0916, 0x0921, - 0x092c, 0x0937, 0x0942, 0x094d, 0x0958, 0x0963, 0x096e, 0x0003, - 0x9000, 0x012b, 0x9000, 0x000d, 0x0000, 0xffff, 0x0979, 0x0985, - 0x0991, 0x099d, 0x09a9, 0x09b5, 0x09c1, 0x09cd, 0x09d9, 0x09e5, - 0x09f2, 0x09ff, 0x0003, 0x013e, 0x8000, 0x8000, 0x0001, 0x0140, - // Entry 140 - 17F - 0x0002, 0x0000, 0x06ed, 0x06f2, 0x0001, 0x0000, 0x0a0c, 0x0003, - 0x014b, 0x0174, 0x017e, 0x0002, 0x014e, 0x0161, 0x0003, 0x8002, - 0x9001, 0x0152, 0x000d, 0x0000, 0xffff, 0x0b0b, 0x0b17, 0x0b23, - 0x0b2f, 0x0b3b, 0x0b47, 0x0b53, 0x0b5f, 0x0b6b, 0x0b77, 0x0b83, - 0x0b8f, 0x0003, 0x9000, 0x0165, 0x9000, 0x000d, 0x0000, 0xffff, - 0x0b9b, 0x0ba8, 0x0bb5, 0x0bc2, 0x0bcf, 0x0bdc, 0x0be9, 0x0bf6, - 0x0c03, 0x0c10, 0x0c1e, 0x0c2c, 0x0003, 0x0178, 0x8000, 0x8000, - 0x0001, 0x017a, 0x0002, 0x0000, 0x0c3a, 0x0c3e, 0x0001, 0x0000, - // Entry 180 - 1BF - 0x0c41, 0x0003, 0x0185, 0x01b0, 0x01b9, 0x0002, 0x0188, 0x019c, - 0x0003, 0x8002, 0x9001, 0x018c, 0x000e, 0x0000, 0x0d6f, 0x0d40, - 0x0d47, 0x0d4f, 0x0d56, 0x0d5c, 0x0d63, 0x0d6a, 0x0d77, 0x0d7d, - 0x0d82, 0x0d88, 0x0d8e, 0x0d91, 0x0003, 0x9000, 0x01a0, 0x9000, - 0x000e, 0x0000, 0x06db, 0x06cf, 0x06d1, 0x06d3, 0x06d5, 0x06d7, - 0x06d9, 0x06db, 0x06dd, 0x06df, 0x06e1, 0x06e4, 0x06e7, 0x06ea, - 0x0003, 0x01b4, 0x8000, 0x8000, 0x0001, 0x01b6, 0x0001, 0x0000, - 0x0d96, 0x0001, 0x0000, 0x0d99, 0x0003, 0x01c0, 0x01f8, 0x0201, - // Entry 1C0 - 1FF - 0x0002, 0x01c3, 0x01e5, 0x0003, 0x01c7, 0x9001, 0x01d6, 0x000d, - 0x0000, 0xffff, 0x0e98, 0x0ea1, 0x0eaa, 0x0eb3, 0x0ebc, 0x0ec5, - 0x0ece, 0x0ed7, 0x0ee0, 0x0ee9, 0x0ef3, 0x0efd, 0x000d, 0x0000, - 0xffff, 0x0f07, 0x0f10, 0x0f19, 0x0f22, 0x0f2b, 0x0f34, 0x0f3d, - 0x0f46, 0x0f4f, 0x0f58, 0x0f62, 0x0f6c, 0x0003, 0x9000, 0x01e9, - 0x9000, 0x000d, 0x0000, 0xffff, 0x06cf, 0x06d1, 0x06d3, 0x06d5, - 0x06d7, 0x06d9, 0x06db, 0x06dd, 0x06df, 0x06e1, 0x06e4, 0x06e7, - 0x0003, 0x01fc, 0x8000, 0x8000, 0x0001, 0x01fe, 0x0001, 0x0000, - // Entry 200 - 23F - 0x0f76, 0x0001, 0x0000, 0x0f79, 0x0003, 0x9008, 0x9008, 0x0208, - 0x0001, 0x0000, 0x1078, 0x0003, 0x9008, 0x9008, 0x020f, 0x0001, - 0x0000, 0x1177, 0x0003, 0x9008, 0x0000, 0x0216, 0x0001, 0x0000, - 0x1276, 0x0003, 0x9008, 0x0000, 0x021d, 0x0001, 0x0000, 0x1375, - 0x0003, 0x0224, 0x024d, 0x0256, 0x0002, 0x0227, 0x023a, 0x0003, - 0x8002, 0x9001, 0x022b, 0x000d, 0x0000, 0xffff, 0x1474, 0x147e, - 0x148a, 0x1492, 0x1496, 0x149d, 0x14a7, 0x14ac, 0x14b1, 0x14b6, - 0x14ba, 0x14c1, 0x0003, 0x9000, 0x023e, 0x9000, 0x000d, 0x0000, - // Entry 240 - 27F - 0xffff, 0x06cf, 0x06d1, 0x06d3, 0x06d5, 0x06d7, 0x06d9, 0x06db, - 0x06dd, 0x06df, 0x06e1, 0x06e4, 0x06e7, 0x0003, 0x0251, 0x8000, - 0x8000, 0x0001, 0x0253, 0x0001, 0x0000, 0x14c8, 0x0001, 0x0000, - 0x14cb, 0x0006, 0x0260, 0x8000, 0x8001, 0x0265, 0x8003, 0x8004, - 0x0001, 0x0262, 0x0001, 0x0000, 0x15ca, 0x0003, 0x0269, 0x026c, - 0x0271, 0x0001, 0x0000, 0x15ce, 0x0003, 0x0000, 0x15d4, 0x15df, - 0x15ea, 0x0002, 0x0274, 0x0277, 0x0001, 0x0000, 0x15f5, 0x0001, - 0x0000, 0x15fc, 0x0002, 0x0003, 0x00cc, 0x0009, 0x000d, 0x001b, - // Entry 280 - 2BF - 0x0000, 0x0000, 0x0000, 0x0060, 0x0067, 0x00b0, 0x00be, 0x0003, - 0x0000, 0x0011, 0x0018, 0x0001, 0x0013, 0x0001, 0x0015, 0x0001, - 0x0000, 0x0000, 0x0001, 0x0000, 0x1603, 0x0004, 0x0020, 0x0000, - 0x005d, 0x0044, 0x0001, 0x0022, 0x0003, 0x0026, 0x0000, 0x0035, - 0x000d, 0x0000, 0xffff, 0x1702, 0x1706, 0x170a, 0x170e, 0x1712, - 0x1716, 0x171a, 0x171e, 0x1722, 0x1726, 0x172b, 0x1730, 0x000d, - 0x0000, 0xffff, 0x1735, 0x1741, 0x174e, 0x175a, 0x1767, 0x1773, - 0x177f, 0x178d, 0x179a, 0x17a6, 0x17b2, 0x17c1, 0x0005, 0x0000, - // Entry 2C0 - 2FF - 0x0000, 0x0000, 0x0000, 0x004a, 0x0001, 0x004c, 0x0001, 0x004e, - 0x000d, 0x0000, 0xffff, 0x17cf, 0x17d3, 0x17d6, 0x17dc, 0x17e3, - 0x17ea, 0x17f0, 0x17f6, 0x17fb, 0x1802, 0x180a, 0x180e, 0x0001, - 0x0000, 0x1812, 0x0003, 0x0000, 0x0000, 0x0064, 0x0001, 0x0000, - 0x1911, 0x0003, 0x006b, 0x0093, 0x00ad, 0x0002, 0x006e, 0x0081, - 0x0003, 0x0000, 0x0000, 0x0072, 0x000d, 0x0000, 0xffff, 0x1a10, - 0x1a19, 0x1a22, 0x1a2b, 0x1a34, 0x1a3d, 0x1a46, 0x1a4f, 0x1a58, - 0x1a61, 0x1a6b, 0x1a75, 0x0002, 0x0000, 0x0084, 0x000d, 0x0000, - // Entry 300 - 33F - 0xffff, 0x1a7f, 0x1a8a, 0x1a95, 0x1aa0, 0x1aab, 0x1ab6, 0xffff, - 0x1ac1, 0x1acc, 0x1ad7, 0x1ae3, 0x1aef, 0x0003, 0x00a2, 0x0000, - 0x0097, 0x0002, 0x009a, 0x009e, 0x0002, 0x0000, 0x1afb, 0x1b1b, - 0x0002, 0x0000, 0x1b09, 0x1b27, 0x0002, 0x00a5, 0x00a9, 0x0002, - 0x0000, 0x1b32, 0x1b35, 0x0002, 0x0000, 0x0c3a, 0x0c3e, 0x0001, - 0x0000, 0x1b38, 0x0003, 0x0000, 0x00b4, 0x00bb, 0x0001, 0x00b6, - 0x0001, 0x00b8, 0x0001, 0x0000, 0x0d96, 0x0001, 0x0000, 0x1c37, - 0x0003, 0x0000, 0x00c2, 0x00c9, 0x0001, 0x00c4, 0x0001, 0x00c6, - // Entry 340 - 37F - 0x0001, 0x0000, 0x0f76, 0x0001, 0x0000, 0x1d36, 0x0005, 0x00d2, - 0x0000, 0x0000, 0x00d7, 0x00ee, 0x0001, 0x00d4, 0x0001, 0x0000, - 0x1e35, 0x0003, 0x00db, 0x00de, 0x00e3, 0x0001, 0x0000, 0x1e39, - 0x0003, 0x0000, 0x15d4, 0x15df, 0x15ea, 0x0002, 0x00e6, 0x00ea, - 0x0002, 0x0000, 0x1e49, 0x1e3f, 0x0002, 0x0000, 0x1e60, 0x1e55, - 0x0003, 0x00f2, 0x00f5, 0x00fa, 0x0001, 0x0000, 0x1e6d, 0x0003, - 0x0000, 0x1e71, 0x1e7a, 0x1e83, 0x0002, 0x00fd, 0x0101, 0x0002, - 0x0000, 0x1e9b, 0x1e8c, 0x0002, 0x0000, 0x1ebc, 0x1eac, 0x0002, - // Entry 380 - 3BF - 0x0003, 0x0033, 0x0007, 0x0000, 0x000b, 0x0000, 0x0000, 0x0000, - 0x0025, 0x002c, 0x0003, 0x000f, 0x0000, 0x0022, 0x0001, 0x0011, - 0x0001, 0x0013, 0x000d, 0x0000, 0xffff, 0x1ece, 0x1ed9, 0x1ee4, - 0x1eef, 0x1efa, 0x1f05, 0x1f10, 0x1f1b, 0x1f26, 0x1f31, 0x1f3d, - 0x1f49, 0x0001, 0x0001, 0x0000, 0x0003, 0x0000, 0x0000, 0x0029, - 0x0001, 0x0001, 0x00ff, 0x0003, 0x0000, 0x0000, 0x0030, 0x0001, - 0x0001, 0x01fe, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x003a, - 0x004b, 0x0003, 0x003e, 0x0000, 0x0041, 0x0001, 0x0001, 0x02fd, - // Entry 3C0 - 3FF - 0x0002, 0x0044, 0x0048, 0x0002, 0x0001, 0x0310, 0x0300, 0x0001, - 0x0001, 0x0322, 0x0003, 0x004f, 0x0000, 0x0052, 0x0001, 0x0001, - 0x02fd, 0x0002, 0x0055, 0x005a, 0x0003, 0x0001, 0x0357, 0x0335, - 0x0346, 0x0002, 0x0001, 0x037c, 0x036a, 0x0001, 0x0002, 0x0009, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0000, - 0x004a, 0x0003, 0x0010, 0x0000, 0x0047, 0x0002, 0x0013, 0x0035, - 0x0003, 0x0017, 0x0000, 0x0026, 0x000d, 0x0001, 0xffff, 0x0390, - 0x0399, 0x03a2, 0x03ab, 0x03b4, 0x03bd, 0x03c6, 0x03cf, 0x03d8, - // Entry 400 - 43F - 0x03e1, 0x03eb, 0x03f5, 0x000d, 0x0001, 0xffff, 0x03ff, 0x0408, - 0x0411, 0x041a, 0x0423, 0x042c, 0x0435, 0x043e, 0x0447, 0x0450, - 0x045a, 0x0464, 0x0002, 0x0000, 0x0038, 0x000d, 0x0001, 0xffff, - 0x046e, 0x0479, 0x0484, 0xffff, 0x048f, 0x049a, 0xffff, 0x04a5, - 0x04b0, 0x04bb, 0x04c7, 0x04d3, 0x0001, 0x0001, 0x04df, 0x0003, - 0x0000, 0x0000, 0x004e, 0x0001, 0x0001, 0x05de, -} // Size: xxxx bytes - -var buckets = []string{ - bucket0, - bucket1, -} - -var bucket0 string = "" + // Size: xxxx bytes - "\x02BE\xfe\x01\x94\xfd\xc2\xfa/\xfc\xc0A\xd3\xff\x12\x04[s\xc8nO\xf9_" + - "\xf6b\xa5\xee\xe8*\xbd\xf4J-\x0bu\xfb\x18\x0d\xafH\xa7\x9e\xe0\xb1\x0d9F" + - "Q\x85\x0fԡx\x89.\xe2\x85\xec\xe1Q\x14Ux\x08u\xd6N\xe2\xd3\xd0\xd0\xdek" + - "\xf8\xf9\xb4L\xe8_\xf0DƱ\xf8;\x8e\x88;\xbf\x85z\xab\x99ŲR\xc7B\x9c2" + - "\U000e8bb7\x9e\xf8V\xf6Y\xc1\x8f\x0d\xce\xccw\xc7^z\x81\xbf\xde'_g\xcf" + - "\xe2B\xcf<\xc3T\xf3\xed\xe2־\xccN\xa3\xae^\x88Rj\x9fJW\x8b˞\xf2ԦS\x14v" + - "\x8dm)\x97a\xea\x9eOZ\xa6\xae\xc3\xfcxƪ\xe0\x81\xac\x81 \xc7 \xef\xcdlꄶ" + - "\x92^`{\xe0cqo\x96\xdd\xcd\xd0\x1du\x04\\?\x00\x0f\x8ayk\xcelQ,8\x01\xaa" + - "\xca\xee߭[Pfd\xe8\xc0\xe4\xa7q\xecื\xc1\x96]\x91\x81%\x1b|\x9c\x9c\xa5 Z" + - "\xfc\x16\xa26\xa2\xef\xcd\xd2\xd1-*y\xd0\x0echineseWideM01\x0echineseWid" + - "eM02\x0echineseWideM03\x0echineseWideM04\x0echineseWideM05\x0echineseWid" + - "eM06\x0echineseWideM07\x0echineseWideM08\x0echineseWideM09\x0echineseWid" + - "eM10\x0echineseWideM11\x0echineseWideM12\x0fchineseNarrowM1\x0fchineseNa" + - "rrowM2\x0fchineseNarrowM3\x0fchineseNarrowM4\x0fchineseNarrowM5\x0fchine" + - "seNarrowM6\x0fchineseNarrowM7\x0fchineseNarrowM8\x0fchineseNarrowM9\x10c" + - "hineseNarrowM10\x10chineseNarrowM11\x10chineseNarrowM12\x07dpAbbr1\x07dp" + - "Abbr2\x07dpAbbr3\x07dpAbbr4\x07dpAbbr5\x07dpAbbr6\x07dpAbbr7\x07dpAbbr8" + - "\x07dpAbbr9\x08dpAbbr10\x08dpAbbr11\x08dpAbbr12\x05year1\x05year2\x05yea" + - "r3\x05year4\x05year5\x05year6\x05year7\x05year8\x05year9\x06year10\x06ye" + - "ar11\x06year12\x06year13\x06year14\x06year15\x06year16\x06year17\x06year" + - "18\x06year19\x06year20\x06year21\x06year22\x06year23\x06year24\x06year25" + - "\x06year26\x06year27\x06year28\x06year29\x06year30\x06year31\x06year32" + - "\x06year33\x06year34\x06year35\x06year36\x06year37\x06year38\x06year39" + - "\x06year40\x06year41\x06year42\x06year43\x06year44\x06year45\x06year46" + - "\x06year47\x06year48\x06year49\x06year50\x06year51\x06year52\x06year53" + - "\x06year54\x06year55\x06year56\x06year57\x06year58\x06year59\x06year60" + - "\xfet\xa8(\x0a\xe9C\x9e\xb0֮\xca\x08#\xae\x02\xd6}\x86j\xc2\xc4\xfeJrPS" + - "\xda\x11\x9b\x9dOQQ@\xa2\xd7#\x9c@\xb4ZÕ\x0d\x94\x1f\xc4\xfe\x1c\x0c\xb9" + - "j\xd3\x22\xd6\x22\x82)_\xbf\xe1\x1e&\xa43\x07m\xb5\xc1DL:4\xd3*\\J\x7f" + - "\xfb\xe8с\xf7\xed;\x8c\xfe\x90O\x93\xf8\xf0m)\xbc\xd9\xed\x84{\x18.\x04d" + - "\x10\xf4Kİ\xf3\xf0:\x0d\x06\x82\x0a0\xf2W\xf8\x11A0g\x8a\xc0E\x86\xc1" + - "\xe3\xc94,\x8b\x80U\xc4f؆D\x1d%\x99\x06͉֚K\x96\x8a\xe9\xf0띖\\\xe6\xa4i<N" + - "\xbe\x88\x15\x01\xb7لkf\xeb\x02\xb5~\\\xda{l\xbah\x91\xd6\x16\xbdhl7\xb8" + - "4a:Ⱥ\xa2,\x00\x8f\xfeh\x83RsJ\xe4\xe3\xf1!z\xcd_\x83'\x08\x140\x18g\xb5" + - "\xd0g\x11\xb28\x00\x1cyW\xb2w\x19\xce?1\x88\xdf\xe5}\xee\xbfo\x82YZ\x10" + - "\xf7\xbbV,\xa0M\\='\xfe\x94)X\xc6\xdb2bg\x06I\xf3\xbc\x97٢1g5\xed悥\xdf" + - "\xe6\xf1\xa0\x11\xfbɊ\xd0\xfb\xe7\x90\x00<\x01\xe8\xe9\x96w\x03\xaff^" + - "\x9fr@\x7fK\x03\xd4\xfd\xb4t\xaa\xfe\x8a\x0d>\x05\x15\xddFP\xcfQ\x17+" + - "\x81$\x8b\xcb\x7f\x96\x9e@\x0bl[\x12wh\xb1\xc4\x12\xfa\xe9\x8c\xf5v1\xcf" + - "7\x03;KJ\xba}~\xd3\x19\xba\x14rI\xc9\x08\xacp\xd1\xc4\x06\xda\xde\x0e" + - "\x82\x8e\xb6\xba\x0dʨ\x82\x85T>\x10!<d?\xc8`;X`#fp\xba\xbc\xad\x0b\xd7" + - "\xf4\xc4\x19\x0e26#\xa8h\xd1\xea\xe1v\x9f@\xa2f1C\x1b;\xd5!V\x05\xd2\x08" + - "o\xeaԙ\xacc\xa4e=\x12(=V\x01\x9c7\x95\xa9\x8a\x12m\x09\xcf\xcb\xe3l\xdc" + - "\xc97\x88\xa5@\x9f\x8bnB\xc2݃\xaaFa\x18R\xad\x0bP(w\\w\x16\x90\xb6\x85N" + - "\x05\xb3w$\x1es\xa8\x83\xddw\xaf\xf00,m\xa8f\\B4\x1d\xdaJ\xda\xea\x08Mes" + - "kerem\x06Tekemt\x05Hedar\x06Tahsas\x03Ter\x07Yekatit\x07Megabit\x06Miazi" + - "a\x06Genbot\x04Sene\x05Hamle\x07Nehasse\x07Pagumen\x011\x012\x013\x014" + - "\x015\x016\x017\x018\x019\x0210\x0211\x0212\x0213\x04ERA0\x04ERA1\xfeYZ" + - "\xb1\x89_\x96RH\x9d\xd2δ\x9c$t0<\xbbD¹C\x03\xdbf,\x9cf\xb8x)\x05\x19\x0f" + - "\x1e\x165\xb6>4\x87\x8d?$o\xad\xfc\xe3D\xe7N\xf8\x13\x09\x0f\x800\xbc" + - "\xd5%\xac\x10e?\xf1\x82\xe0\x01 \xf7\xe1\xf7\x96\xfa\x0f\xc1k\xa7\xbb" + - "\x90\xbe*3\xe8|=`\xabb\x84q\xa4 \x83C\x83f\x18\x01\xbb\x0b\xfd\x8el\x14" + - "\x00q\xdb\x1e\xb2\xf7\xa1\x81\x94\xf1\xa0E\xa9L\x07\x885\xc7]\xff/>\x83a" + - "\x80\xba\xad\x9e\x95]\xa8@\xdct\xc4\xdc$\x98\xf8\xc2\x01\xae\xc2T\xa0" + - "\xe3dv\xb2\xee\xb1$\xfdƯ\xc1\xb7\xd8\x09\xc5\xe0\x8b^\x0e\x84Z\xaf\x9bl9" + - "W\xe9Z\xb4\xaa\x8e\x10|ۇ?-\xacR\x7f\x16\xc4լ\x87`v\x8aq^Fi˄\x0c%1\x7f" + - "\x9a6\x87t\xe5\x064\x1a\xfbFP>(\xe9.Q\xbd\x7f}KS\xb9\x02=V\xf9\xb9\xec" + - "\x99\x1a©ټE\xffd\xbb+\xf1M@Q\xa7`K\xfe(\xba\xd4M\x98\xbf\xe3\x0eT\xeb" + - "\xc0\x7f\xa4_b\xaa\xbe9\\\xc9O\xa0\xa0\xf2F\xb5ҋ.?m\xeb)\x90\x18pX\xe4" + - "\xbf\xd2\xd1d\x06S\xfc8\xa3\x0b\x0f\x83#\x1a\x96[A;\x0f&\x92~\x0d\x03." + - "\x83\x0bs+\u07b3\x09L\xb1\xa5\xfam\xec\x9f\x067^\xa2_\xe5|(S\xea\x092" + - "\x0aȀ9v\xeaʠ\x95\xc0/\x86\x9f\xd7\xdc1\x07$u\x94\x0c7Q\xd5b\x83Ğ/\xef" + - "\xd4\x1d\xf6v\xbd\xcbXU\xa0G\x0e\xfd-\xabzr\xcc^_9\xff~\xea\x0fC:\x9f綦u" + - "\xbc*\xc5\x0c\xd2\x18\xc0\x09\xe2\x1f\x91\x0f\x9d\xdb\x09\xa0\xd0Y\xc4" + - "\xcd},\xa6Z#I\xdfz\x86}\xbe݁\xe9ԉ\x16\x19\xc8<B\x89\\\xe1\xb6q\xcbzK\xca" + - "\xed\x910\xab\x1d\xd4\xcc-\x81G\xa1YPV\xb5_\x92\xa3U\xdbvZ܍=\xf8\x8e\xb9" + - "=R\x7f\x7f~\xc8i\xa7W\x03\xba\x86Գa\x10\xe9\xa0DY<\x96h\x15\xd1S\x0agenW" + - "ideM01\x0agenWideM02\x0agenWideM03\x0agenWideM04\x0agenWideM05\x0agenWid" + - "eM06\x0agenWideM07\x0agenWideM08\x0agenWideM09\x0agenWideM10\x0agenWideM" + - "11\x0agenWideM12\x0bgenNarrowM1\x0bgenNarrowM2\x0bgenNarrowM3\x0bgenNarr" + - "owM4\x0bgenNarrowM5\x0bgenNarrowM6\x0bgenNarrowM7\x0bgenNarrowM8\x0bgenN" + - "arrowM9\x0cgenNarrowM10\x0cgenNarrowM11\x0cgenNarrowM12\xfefS\x87\xdc8" + - "\xe5\x07\xe7E\x8d\xf3\xe6\xb0\xf0@5\xef\x94\x19\x88>\x03\xc0\x8e-u;\x08" + - "\xc9\x09\x0a\xab\xf1u\xfd\xb6>\x8c\xf9\xa5\xf0x7\x04\xc7A\xc1\x95\x15v&@" + - "\x1d\x94\x9e\xaam\xbd\x04\u05ed\xe5t\x9e\xabTp\xbf^\x9c\x18\xccyݤ\xe1." + - "\xfeVNˊ@\x19\xe1\xc4\x1f-\x82\x17\xc0ä7\x12\xae\x22o\xcewf1\xae\x19\xb3&" + - "\xa4\x11\xa2\x84t\x1b\xe0\x1f\xb4\xf3\xae\xfc]\uf58e\xb6\xcc\xeb\x86\x04" + - "\x86KK\x9a\xd3sˬ\x10\xea~f[)J\x8ay\x06\x91\xaaRF\xe6\xff\x8fз\xfb\x9b" + - "\x9aj\x95\x8e\xbf(\xec^\x8f\xaacJu*\xc9q\xc0\xbc\x0ccp\x04\xce\xe2b\xce" + - "\xf1.|\xf6\xd9\xcdwrQ=\xbdFav\xa0z\xb7\xc4\xf4e\xfe\x09twy\xc3\x14\x95扶_" + - "U{\x0aJ\xf6SX\x80\xb8%S\xd1&\xffr\x13T)\x05Zdt\x95\x993>\x96U\xb4:\xa3g(" + - "\xbbc\xbd(d'D\x0bgregWideM01\x0bgregWideM02\x0bgregWideM03\x0bgregWideM0" + - "4\x0bgregWideM05\x0bgregWideM06\x0bgregWideM07\x0bgregWideM08\x0bgregWid" + - "eM09\x0bgregWideM10\x0bgregWideM11\x0bgregWideM12\x0cgregNarrowM1\x0cgre" + - "gNarrowM2\x0cgregNarrowM3\x0cgregNarrowM4\x0cgregNarrowM5\x0cgregNarrowM" + - "6\x0cgregNarrowM7\x0cgregNarrowM8\x0cgregNarrowM9\x0dgregNarrowM10\x0dgr" + - "egNarrowM11\x0dgregNarrowM12\x03BCE\x02CE\xfe\x1b\xaa\x9f0]\\%\xe0R)\xbb" + - "3/~\x83u\xb7\xc4^\x1e\xa0F\x1d3<<r_tg\xb4A\xb7\xd0\xf5\xe8\x02B\xb7\xa4" + - "\xa1\x8e\xda\xe8z\xf2b\xa1\x0d3\xfc\x0d}\x9a\x0aF4\xf0{\xea\\Z\x00!/\xbc" + - "Y\x1b\xdd\xfe\xbb\x943OJ-\x92\x86s\xd2b\xad\xab\xaa\x82\x98;\x94\x96_U˒" + - "\x8ch?GB\xc1 \x99\xb72\xbd\x03c\x9c\x19yu-\x83u\x18$;t\xd6s\x01$^\xfeVa" + - "\xea\xa0B\x89\x17\xf5ZX\xcc3\xdb(M\x1f,\xaa\x05\xf1\xfd{f\x02\x98\x0f" + - "\x06\xd1\x07#\x0b\xf3\x10\xb4\x8c\xf6)B\x01}\xd6h\x0e\xb3\xab\x131\x0e" + - "\xca\x15\x81\xaf\xb3Ŷ\x19\xe5\xce\x06\x82\xd0\xdf\xc1\xfa\xde9(\x17\x9a" + - "\x9d\u008c\xd1p\xb5\xb5TN\x7f\x9bc\xb8=\xa3t\xaf\xa2\x8e\x14x\xdc\\)\x97" + - "\xa9\x83G\xec\x1eqQN\xb2h\x22\x16-\xc7Ù/\xd4\x1f\x0b,\xcc&\xe5^{\xd8\xf3" + - "\xfa7!_wKR\x16\xb5\x06Tishri\x07Heshvan\x06Kislev\x05Tevet\x06Shevat\x06" + - "Adar I\x04Adar\x07Adar II\x05Nisan\x04Iyar\x05Sivan\x05Tamuz\x02Av\x04El" + - "ul\x02AM\xfe\xb8r\xb6\xc28\x8d\xd9P\x16\x0e?\xfa;\xf0b<C\x86U\xbb\\\x8cv" + - "\x8a\xb3:\xe2\xee9!\x86t\x00\x86e\xe2\x0a:\xcd\xf8J\xbe\xf3\\\xab\xccH" + - "\x91X\xc0\x85?տ\xa9T\x22a9\xfcD\xc4\xf5\x06nQ\xdbr\xb73\xe9\xff\xb1|\xbf" + - "\x9eeIl\x07\u05c9g7͐x\x1c\xb7re\x02\xc8Ar\xcaYh\xffɽ\xd0H\x0e|\xe6\xe2_}" + - "\x0b\x80\xbe\x87B\x93\x18\xc8P8g\x9b\xa0e\xbc\x9f\xdf\xfa\xe3\xfa\x84" + - "\x86\xfc\xef݂\xce\x09\xaf\x9e\xa5\xa6H\x87\xe0k\xa7g@=\x0bx\x8a\xb0\xae" + - "\x9e#\xc1\xf7\x89\x1f\x8c\x00\x07\x0dN\xf5Ak\xf1\u0558\xac^\xb59\xf1\x13" + - "\x97\xf0g\xeb\xd1\xe4\x91\xd5\xfc\xf6\x1a\xb5\xee*\xb8/\xb7w\xadS\x8c" + - "\xfc\x11|<Pҳ\xf9\x14=Uw\x0c\x85s7\x8f+\xa3C\x84\xcc\x13\xdc\x1c+<\x93" + - "\xa3K\xbbp\xdbh)\xf2ŋ\xed\x1c|\xf8\xf7\xa2\xbaA\x0apЭI\x06\x03U\xb9\xde" + - "\x08islAbbr1\x08islAbbr2\x08islAbbr3\x08islAbbr4\x08islAbbr5\x08islAbbr6" + - "\x08islAbbr7\x08islAbbr8\x08islAbbr9\x09islAbbr10\x09islAbbr11\x09islAbb" + - "r12\x08islWide1\x08islWide2\x08islWide3\x08islWide4\x08islWide5\x08islWi" + - "de6\x08islWide7\x08islWide8\x08islWide9\x09islWide10\x09islWide11\x09isl" + - "Wide12\x02AH\xfe\xb9p\x124V\x03\xd9\xd0\xd1ܰޟ\xcc\xd2 \x13kc\xa31b\x06" + - "\xe6\x889\x80+\xa7\xc3\x0c\xa3\xf8\xddj[\x8fú\x16\x0e\x91\x83\x80W\xa8ZG" + - "\x09S0\xf8\x82\xe6M\xbb\x12\x80\x0cS\xefm\xbe.\x85,\xe6\x0b\xbb\x09\xc4." + - "\\X\xa9\xf6,Y\x04\xd6_\xbc\xb0\xa3X\xd6\xe12\xe7}ٷ\xb9\x89>\x86Nm\xac" + - "\x1a\xac\xb8\x87\xbd\x03\x01裑:\xact%\xd2٦\xf6\xee+T\x93\xac\xb09\xac(E" + - "\xeb\x0e\xfa.\xdd\x0a<\xf9k\xa9z\xd7\x1d\xae\x00U`\xab\xa2\xa2\x00z\x0f" + - "\xa0Hc\xcbiF\x9f\x94\xa3n\x89\x1e9\xad\xcb̛^4\xca(\x13\xd1\xd7CZ\xc8\xfc" + - "\xacv\xa8\x96T<}\xcdn\xd0F\x01\x1f3\x0b\xcc\xe8H\x0d4&\x8eg$\x02q\xe3M" + - "\xd9\x13\xd5\xfd\xe1d\xa1\xe0\x14\xc9\x17ދ\xd4q\xb8\xe7\x0bww\x0b\x05h" + - "\x022k8?n:\x11^\xc9\\\xb3\x01\xc7y2\x1d9\x1a\x140\xdaR\x8d,\xfe\xf0;po" + - "\x9d\x12T\x96\x90\x9b\xa8\xeex\x04\xc1\x98L,C\xb6\x89\xb53\xddƇVZ\xf5i" + - "\xfcg7\x9e\xac\xb2F9\xeczw*\x17N Y\x8fg\xbc\xb5\xebfn\xef\xcd\xe0ʇ'\xad" + - "\xfa\xb2WB\x8a\x8f2\xa8˄l\xff\xe5:-\xe15\xb4\xfe/\x0di^+\xc6\xe7\x07\xc0" + - "\xafi\x17\x88\x10\xcay\xf4.x@!LxF\x06\xab\x9b_!\xf3N\x9d\xae\x83Z?\xa8" + - "\x01\xf0{錒'>\xc6D\x7fW\xe7\x89\x18r_/X\xfd\x9d\x04\x07\x14L\xce*^}kz\xae" + - "\x1b\x9cPg\x89\x0e\x05toS\xf5g\xd4VlA\xdb\xc1:\x092\x88\xf5\xd0\xe6\x00" + - "\x1dp\x90m\x80x\x9ek:\xf6e\xa9\x12\xb8\xfb\xbfx\xf6\x86\x1dm\xb48g\x97#" + - "\xf3\xf1\xc5s\x1e\xfeh\xce\x19Cӽ\x8b\xe3\x08\xac\xd4D0\xf6}\xfbj\xfd\xf5" + - "\x22{\x8f\xf1\x0d\x87\xcf~\xeb\x0e\xbc\x03\x1d\xf9\x1c\xbcE\xad\xc6gz" + - "\x971\x11+j\xe9\x85\xe0\xfe\xc5FУ\x8d\xe1=~p\x9e1(\x89\x89\xc7l\xbd\x90" + - "\xd2h\xb35\xf0\xd2A\xf7o@KT}\xc4^=`\xe4\xa1\\\x00nNK\x86&j`\x95)\x88\xf6" + - "\xb1O\xde\x11\x92\x9e\xe5\x9b S\xcfV\x04\xdf\x09hf4\xf26\xac\x14\x16&d" + - "\x0b\xe0\x9dL\xf9\xa7\xb6\xc90'\x95j\xef\xef[b\x9e̺u\x97\xb2o\xe2\x8e" + - "\xc0\xae\xa3\xf42\xd5&\x02:\xb1b\x89\x00\xd6Y\xe0IE\x16F\xba\xfb\xbcm" + - "\x14s\x84\x91\x08\xf9\xa3\xd4:\x8b\x0f\xb7&_o\x0d\xd4X\x7fX\x90\x1b\xb4" + - "\xa3^<\\\xc8X\x1f\xb8+\x1b\xa1J\xaf\x11\xaaL8C\xb3l\xa9\x13\xa7\xb8h7" + - "\x97\xed\xa5\xb6\x90\x14~o\xe5}o\x8f\x05\xbd%.\xc2\xe1\xcf(\x1dO\x89u" + - "\xdc\xff!\xaf\xe4\x11\x99\x97yj\x88?\xb1\x1eY\xe40\\I8\x22h\xe8\xbda\xe4" + - "\x19\xf2m\x15nޕ\x98>d\xf3y*X&\xa2\xfe:r\x15\x22\xa4\xb16\x0dyw\x09\x98" + - "\x9d,\xfe\x93\x98 {\xb1u\xf0\x1e\x8b\xea2\xa8\xfc\xe3\xc1\xf0b\x9f\xe6" + - "\x08\xf9\xe8\xf1OÒ\x18r\x0cK\xb1\x88\x82\xa4܈\x95\x0b\x99a\x89\xa9&\xfb" + - "\xd6p\x814\xbf\x96\xfe\x0c\xce\x12mhI\x8f\xbf\x9f2B\xaa\x8a1|\xe3\xb4" + - "\xf5\xfdD\x0fl\x10\x8d㕄\xab\xa34Dž\xf8\x8d\x16\xd46\x1f\x04m1߭\xe7MA\x93" + - "\xd1G\xeeǐ\xd2[2$\x09\xcbA\xdb\x0dVd\xc7\x05\xb1W\xf88%)%\xa0#\xaa\xd5" + - "\xe7+:Ly+\x0a\xa7Ytئ\xc4jj\xd1x\x22\xd5\x14\x94\xebYHc\xd6&\xfb.\xfab" + - "\x0e\xa4=\xd14X\x22m\x22.\x22\xb4E\x9f\xef\x7f\xff7\xebP\xb6\xcf\xe4\xa7" + - "{վ\xa6\xfe\xc6\xe5\xf4\x02\x10\xf3\x9dØMI`\xce\xe8*\xd0\x0ac=\xe0um\x13w" + - "\xfd*\xa4\x11\xf7_$\xbfb\xf57>\x91\\J%`\x12\x10\x91\x02}\x06#\xb5\xcb%" + - "\x1d=,\x01\x95\xc0\xb1\x8b*\xdb\x10۸\x17\xc8\xe3\xfeo\xb0\xdeZ\xb1\x8e" + - "\xad\x0e\u0557!s\xb8M`\xa2u\xee>o\\\x0c*d\x81\xe7zf`\xce\xf5\x84\x11\x05" + - "\x1d\xfdů\x89\xc1\xa0\x14k\x05\x9a\x08\x9c\xbe\x0c\xa3\xc3s\x83_h\x85" + - "\xeb\x0a\xf6\u0090\xac\x1e\xf4A\x02\xe2\x8c^\xb0sS\x08\xcf_|\xee۱\xcaji." + - "4ň\xb5\x96w\x91A~\xfc\xe1:$^\x92\xd3p\xbf\xe7_\x0b\xb8]Z\x85\xbbF\x95x" + - "\xbe\x83D\x14\x01R\x18\x15R\xa2\xf0\xb0\x0b\xe3\x9d\xc9J kU\x00\x04\x97R" + - "o\xae\xd4ct\xb7\x8aeX\xe5$\xe8\x10\x0f\x1eTV\xfe\xa9vAU\xedw\x06~`\xd6" + - "\xc2\xefhƹ>\xd1k\x0f9(\x9c6\xa3-<ù\xde\x0dп]\x92-\x02\xd9i\xc7Oܭ\x82\x0c" + - "\x992\x9c6K\xec\xb6kI\xd6\xecZ+j\xff\x92\xd4?pVP\xa9\xe1\x03g\xb4\xb1" + - "\xf6d\x85!XqTu\xd1\xe5w~\xec\x91u\xe1\xcau\x99^!\x12\xf7N\x17\xac\xfa" + - "\xeb\x1e\x09Farvardin\x0bOrdibehesht\x07Khordad\x03Tir\x06Mordad\x09Shah" + - "rivar\x04Mehr\x04Aban\x04Azar\x03Dey\x06Bahman\x06Esfand\x02AP\xfeo4E" + - "\xf1\xca6\xd8\xc0>\xf0x\x90Գ\x09\xfe\xf7\x01\xaf\xd1Y7x\x89\x0e\xe4/\xb9" + - "\x8f{@\xdb@\xa1~\xf4\x83T\xc9D\xb5\xb1;\x1fe\xe2F\x8a|P\xe0\xf2\xb9\xdc." + - "9\xf2\x88\x17\xb5\xf8\xb6(\xb1\xa34\x94\xd6\xcd1\xa9_&\xdbñҎ\x01\xf0\xce" + - "yX\xd5\xffY\xe9*sBR\xb4\xa7\x92uh\xd14gn H\xab\x09\x86*\x11\x91j\xb5\xb1" + - "\x00\x95\x93f?\x17\xdc\x03\x06\xc1\xb1\xe8n\x1d\xf7\xdaw\xdat\xa5%\xaa:b" + - "'\x81\x977B;M=\x1c\xeb\x8a\xfa\xac\xcf\xf5f\x0c;+\x98\xb0ꅴ\xf37L\xa5\x93" + - "(\x08sG\x06\xf8\xbe\x0d\xfd\x1f\x18\x87\x12ݷ\x0d\x05\xe1w\xb3t\xb4e ka" + - "\x8dD\xa4-\xeaP\u05f7\x8d\xcbU2`WV\xf1\xc3G\xfd\x95Y;\x22\x8f\x8a\x0c;" + - "\xcdp֙\xf7.1o\xd2\u0590\xa1\xe7cla\xfcJ\x99\xbd>\xc73]r\x8eCk!\x95Jo\xd5" + - "\xe7W\xd1\xc3\x03Era\x05Month\x0alast month\x0athis month\x0anext month" + - "\x06+{0} m\x06-{0} m\xfeQHs\xc6\xd4tx*\xf5b\xe27\xdaT\xee\x1a\xb1\x84" + - "\x14\xb1\xd2E\x95R=\x9d\x00u\xe5u\x7fT\xd5\x14\xe0\xdf\xd5\x18\xe5q\x8e" + - "\xb4\x15S\x0c\x94\u05ff\xd3.vE\xacn\x99\xb1\xf9(ƃ\xcc\xef\xeej32y\xc0" + - "\xc1\x03X\xf4\x02\xc2\x084\x9b\xa3;\xaf\xb0X1æ\xe68\x8f\xa9E8=U\xefӐB4" + - "\xff\xc4O\xc9R\xab\xafN\x05H\xc9\x1d\xa2\x15U\x80\x9c\xd0\xc8\x1ay\xbb*r" + - "f\x9cW\x16^\xa4\xaf_/\xbc\xf2\xe7\xf68\xcf\xdc\xd8q\xcaRE\x00Yp06\x9a" + - "\xc90\xa3\x08\xce\x19Y\xff\x22H\x83\xbf\x00`\x94\x06r\x85\x965\xc9\x0d^J" + - "{Ks,\xe3o\xed(\x1f$\x10ݱ\x9a\xbf{J^3\xf5_\x9a\x1d\xb6\xd4m\x1a2P\xafR`" + - "\xbeTB+\xb9\x1b<\x08&\xa8\x8a\x18\xf8\x8cy\xc0\xcb\xed\xf1@}\x0b\xbf\xac" + - "H\x048\xf9\x0co\x92\xfa!$\x9b6\xabnY\xc05\x0cݷ\xf3\xa5\x0dE\x97\x03Mo1" + - "\x03Mo2\x03Mo3\x03Mo4\x03Mo5\x03Mo6\x03Mo7\x03Mo8\x03Mo9\x04Mo10\x04Mo11" + - "\x04Mo12\x0bFirst Month\x0cSecond Month\x0bThird Month\x0cFourth Month" + - "\x0bFifth Month\x0bSixth Month\x0dSeventh Month\x0cEighth Month\x0bNinth" + - " Month\x0bTenth Month\x0eEleventh Month\x0dTwelfth Month\x03Rat\x02Ox" + - "\x05Tiger\x06Rabbit\x06Dragon\x05Snake\x05Horse\x04Goat\x06Monkey\x07Roo" + - "ster\x03Dog\x03Pig\xfeѝ\xe0T\xfc\x12\xac\xf3cD\xd0<\xe5Wu\xa5\xc45\x0b" + - "\x9al\x9f?ium\xfc\x96\xb4\xf4\x7f\xfb\xc6\xf1\xff\x9e\x22\xe2\xc9m\x8f" + - "\xd25rg\x87L\x15Y\x10\x80\xd2t\xb5\xe5\x90\x08xH7\xfa\xdb\x02\xf70\x1fИJ" + - "\x88G\x99\xd6\x1a\x83\xb8\xbdz<\xf1\xc9t\U000953c1\xa5N\xa8\x0e\xbe\x05." + - "n\x87R\xf1\xbf\xc8>m%O?@4\xd4\xe8\xf1\x04Y\xb1_\x11\x1b\xb3\x17\xc8R\xed" + - "EHn\xa5\xf7>\xaf9:1?\x9eG\x0cg\xd0M \xbc\xcf+)\x86A\xd2qo\xbd\x18\x12N" + - "\xe4`:\x8fk|?\x8d/\x90\x8c\xe7d\xe4\x08\x9e\x8dO\x15L\x92@\xa5w}F\x7f" + - "\x84r7u\x10\x12/AΞ\xc0\xf9\x89\xb57\x1ct\xbe\x9e&\x9e\xfba\x85;\u05cb" + - "\xc2S\xc0\x97\xe3\x81]\xedg\xf6\xf6t\xd2\xfc\x1ezM\xf0\x08\x87\xeb\x12" + - "\x8f\xffd\x8a>\x09\xa5\xaa\x9ag&?\x0d\xadV\x93x!Xi{\x99\x04\xf4A r\xfeho" + - "\xd1\xffQ\x8f\xd4\xc1\xe1\x83i\x88\x9a\xfe\xfc<\x14\xd3G\x10\x94GA|\x17M" + - "2\x13\x22W@\x07\x8c-F\x81A\xe1\xb4y$S\xf18\x87v)\x07\x9b\x13R\x02\xf7<" + - "\x86\x1eD,3\xf6\xc9̳\xc3\xc3)HYX\xfbmI\x86\x93^\xe5\xa9\xe9\x12!\x82Y" + - "\xcf}a*-y\xf3\x1e6&\x91N\xe2\xec\x14\x95\x16,\x80\x1e=[E\x80\xca\xc9]." + - "\xed\x0fH:X\xd1lN}\x1d\xe0\xf1\xba'\xd6\x04\xf6u\x06\xc2\xdf\xd1g\x032" + - "\xabp55Yu'\xef\x1e>\x7f\x07\x92\xa7\x0eg\x12\xbb\xdaX\xe0p\x9c;\xd82." + - "\xa4\xc9w\xfa!\xfb\x9eD\xdd\xe7\xb7\xe2\xfa\xb9\xd8ٽ\xf4mB\x9a\xa1\xafo" + - "\x83ˣŷ#m<\x86WU\x8e\xea\xa5p:\xd4e_ܜ\xd2\xcf\x1e\u07fb$W\x96i\xa0\xc1" + - "\x00\x15o\xf8\x10\xb6h\xc2ײ:\x80\xfdO\xf5\xed\xf0\xcf4\x8d!L\x03Dc\xf2&" + - "\x8c\xcf\x15\xf6\xe3\xc3L\xbak\x08enWideM1\x08enWideM2\x08enWideM3\x08en" + - "WideM4\x08enWideM5\x08enWideM6\x08enWideM7\x08enWideM8\x08enWideM9\x09en" + - "WideM10\x09enWideM11\x09enWideM12\x0aenNarrowM1\x0aenNarrowM2\x0aenNarro" + - "wM3\x0aenNarrowM4\x0aenNarrowM5\x0aenNarrowM6\x0aenNarrowM8\x0aenNarrowM" + - "9\x0benNarrowM10\x0benNarrowM11\x0benNarrowM12\x0dBefore Christ\x11Befor" + - "e Common Era\x0bAnno Domini\x0aCommon Era\x02BC\x02AD\xfe\xfe\x1f8{\x91g" + - "\xb7\xd7\xcd\xde#Xk\xe6\x85\xd8Ì\x8e\xf7g\xf0\x10\xd02\xbdJN\x8f\xf8\x15" + - "A\xad\xfd\xcae\xac\xb6\xf7\xe1$9\xb9\xa2 \xb5\x8a\xf1f\x1d/N\xd0\xff\xb2" + - "_\xaaC͑Y\x1d\xcd$ua[\xaa\x1e\x01I\xf0\xbc\xb7\x0b\xc426\x15Ș\x19\x88\x94" + - "\x8b\xd5\xf7\xb0\xa4\xbd\\\xdb=\xafZ\x98A\xa9\xbc'\xdc\xec\xa9wCB\xaf" + - "\xe0\xdb\xf3\xb9\x03\xa2\xa0\x1ad\x98ـ-\xb4C\xa45K\xb5\xa6\x15\x87\xa9" + - "\xe9\x94j?\xb1\x9e\x10\xdf\x0dv\x7f\x1ai \x087\xe5\x17\xd2!y\x93M[\xa7ܳ" + - "\xfa\xae1ר\xe5\xfe\xe9y\xb9\xfc\x80F}Zje\xed\xbc\xc8Y.h\xfb\xb5 * S\xba" + - "\xba\xa8\xce\u07be\x03\xa6\x05\xcf\xe7,\x16i\x0ap\xbd\x16\xd6\xda$\xaf}0" + - "\xf1&\x0bCT\x19\x82x\xd5\x0c\xc7\x13\xf8\xa2R&~\x0b\xa5F\x8f\xa6\x8cݺ\\_" + - "\x06\xf8\xfc$\xbc\xda\xc1H\xe2\xf4\x7f\x84}L\x83\xfb{\xfe@\x09\xa8HF\xaf" + - "\xedRx\x9f\xbd\x0c\x0d\x06\xa5b\xebm\x9e#\xebwI\xfeDp}K\xc1\xd7\xe0\x86#" + - "\x1c;\x0f\xed\x0e`\x05\x9b\x86EI5w\xd9\x05\xfe\xb0zx\xc7T0v֚?S\xaf\xb2" + - "\x9b\x1a\x86\x12ꔚg\x14FB\xe8\x8fKvͫ\xfaz\x9c\x82\x87e\x08\x1f\x9c\x97" + - "\xc3\xc2 \x7f\x1a\xd2M#\x1f\xc2B\xcdJ\x05\xf5\x22\x94ʸ\x11\x05\xf9̄PA" + - "\x15\x8f\x0e5\xf3\xa6v\\ll\xd89y\x06\x08\x01!~\x06\xe3\x04_\xa3\x97j\xec" + - "\xeamZ\xb0\x10\x13\xdaW\x18pN\x1a\xab!\xf2k<\xea\xca\xe9%\x19\xf1\xb9" + - "\x0a\x84\xc1\x06\x84\xcb\x08\xe4\xe2\x037\xf2\x92ǭ\xd4\x0c\xf3;4b<\xc5.%" + - "\xc2!\x079\x8b\x9dG\xc9U\x86\xe6\\22\xf6\xee\xb5lʆ%\xbd\x9e\xfeQV\xf3u" + - "\xa7\xd4r \xecV\xc8V\xb1\x96\xb4\x9f2D\x88m\x13\x94\xa6X瘳\xc9\xcc\xe8K[y" + - "\xa4L\x01'IPP\xfe\xaaI+\xef)l\x86lE\xb8\xd4=\x81\x0f\x0b9렭\xf7_H\xaa\xf1" + - "\x0c\x17\xcf6\xa4\x02\xe1T\xf9\x14\xe9\x0e\xd5WmE}\xa5)\xe7s\xfc\x0c16" + - "\xd4U\xaa\x8d\xc9\xe0m\xd6\x0a\x0e\xf5ȷ9\xfen_\x02=U&vcX\x80EY U\x93\x02" + - "9\x02A\x86\xe5HGX\xf4\xed\x9ckFx(\xa2?\xfa7\x17\x8eCce\xb9\x0f5\xac\xbc" + - "\xf4\xa6\xe2C5\xdd\x08{\x1e\xd9c\x96>K\xc3\xf83\xaaܾ%\xf3\x91\x1b\xf8U" + - "\x1f\xfa<\xfd\xefв\x1b̹\x19f\xb2O\x81>f渃@\xf47l\xc9k\x13F\x1a\xa3\x84" + - "\xad\xa0\xda=_z\xf1́\x13l\xf6J\xd0\xdb\xe6\xed\x9d^ݹ\x19\x0fK\xa1H\x0b-" + - "\x7f\xed\xa8\xde&V\xbc\x9ak\xb8\x15\xc2\x12bWU\x08N1#\xe1W9ޗӬ\xacG\x80" + - "\xb2\x83ozH\xcd?\xd0T\x04ϭ\x03\xccfi\x05\xec\x02k\x9ej\x94\xa9S\xf2\xd4" + - "\xf8\x16r\x03era\x05month\x09enFutMOne\x0benFutMOther\x0aenPastMOne\x0ce" + - "nPastMOther\x03mo.\x08last mo.\x08this mo.\x08next mo.\x0eenShortFutMOne" + - "\x10enShortFutMOther\x0fenShortPastMOne\x11enShortPastMOther\x0a001AbbrM" + - "o1\x0a001AbbrMo2\x0a001AbbrMo3\x0a001AbbrMo4\x0a001AbbrMo5\x0a001AbbrMo6" + - "\x0a001AbbrMo7\x0a001AbbrMo8\x0a001AbbrMo9\x0b001AbbrMo10\x0b001AbbrMo11" + - "\x0b001AbbrMo12" - -var bucket1 string = "" + // Size: xxxx bytes - "\xfe\x99ҧ\xa2ݭ\x8a\xb6\xc7&\xe6\xbe.\xca:\xec\xeb4\x0f\xd7;\xfc\x09xhhkw" + - "'\x1f\x0fb\xfb8\xe3UU^S%0XxD\x83Zg\xff\xe7\x1ds\x97n\xef\xf95\xd3k\xbf$:" + - "\x99\xbbnU\xba:n\xdeM.\xa4st\xa6E\x0eG\xf5\xf0\xd6.Q-\x1e8\x87\x11X\xf2" + - "\x19\xc1J\xacI57\xdc\x07\xf0\x87\xc1cMc\x9e\xdc\x0a\xb3%\xff\x03\xe2aR" + - "\x06,\xbf!4J\x8b]4ΙWš\x1dY2\x88:\xb9Q\x16\xfc\xb5r\xf7\xc5d^\x97\x08\xce" + - "\x04EG@\u05fa\x88\x885\x08\x8c/\x83r\x92\xb8\x96\xd4\xfa\x8d\x18\x0fF" + - "\xfd\xa2\x01\xfb\xb0\xa0ڐӔ\xca\xcd\xf7@=\xe2\x96\x03\x87\x8aH\xfa\xc3L" + - "\xa2\xe90H\x93\xf6\x80\x8ck\x05)u{d\xa4\x19D\xd4{\xfd\xb8\xc5\xc0)\xea" + - "\x01\x9b\xcb&\x12\x87y\xf6{\xbb\xcdm\x0az/\xcb\xce#\x1c\x86R\xccy\xdbC" + - "\x7f\xa2\x96\x94\xc2\x22O/\xe4t\xfe\xba4 \xc3\xf1Hdy{܃L\x9aG\xa3\xa9\xea" + - "!LmW\x05\x9d$\x01\xe5wp\x8a'<\xc1\xcao\x8d\x1b\x8d\xd8h\xccX\xdc\xe4\xfd" + - "j\xf6\x0b\xa5'\xad\xe2\x1a\x16\x8fD\xde5\x0d\xaeL\xeft\xe1\x1f/\xd8\xec" + - "\xc9\xc0\xc6C#\x18\xfa\x93\x11Wt\x82\xfc\xa7\x1c\x82\x1b\xfd\x95`\xbd" + - "\x9f;[\xb3\x9e'\xe8DmA/^Ŭ]\x15-\xf9ـb\xea\xe9\x1f\xd9̂\x92\xc8\xddL%\xaf" + - "\xd0\xcc\xc7\x02L\xbb:P3\x22\xbfU\x81\U000d06a1\xa2\xf9q\x96\xbc2\x8e" + - "\x8f\xb4\x80\xbe\x06`\x8b\x0b\xaf\xd2\xd2J\xccV>\xc7d\xf5\xfd\x1c?\xbc7⏟" + - "\xb9%\xf0\xc4\xfe\xf3P\xed\x13V<CG\x99\x12\xc2 \x8e1\x0e\xcej\x12}\xe2P" + - "\xe4\x22\xba\xf5\xb0\x98q|A\xc5\xc8\xc2\xc8\x18w\xb7yb;n\x97\\6F\xe8\xd1" + - "1\xe2Eh\x0b\x95\x09v\xc0Ze?y\xeb\xcc\xe2\xa3\xf26ۦ\xec\x02f\x11oto\xe9z" + - "\x89\xfe\x0e\x7fh\xd1\xf3\x02\x86\xde]\x86\x0a\xbeq7R\xb0\xa1\xf8\x9eLj" + - "\x05\xc4\xfd\xa7B\xe4\xbc8\xff\x1ao\xff\xc7r\xb2I\xec\x94a\x84ԯ\xe6\x919" + - "\x8a\xe3\xc5kM\xe1\x09\x02?\x18jtstj\xbe\xe3P}G\xd0e\xc8Ď\x1e\xaa$\x97" + - "\xbce\x18mx6\xaf\xe10vP\xde\xc5#\xb0\xca\xc7N\x94駢\xf0\xc35\xf6\xb6c\x00" + - ":\x18\x22\x1dM\xd2\x1a\\\xdb`\xc1v\x18\xfdh\xae\x1d\xc0\x96}{mSXn]\xd29" + - "\xfdϧT\xccu\xd5\xc0\x88JΆ\x9c:\xd3\x7fﺉc\x1a%Œ:\x9cln\xaa\x08\x1e\x85U+e" + - "\x958V `\xc3C\x0d\xd9ُB\xb0ҁt\xa7\x16\x90_\x84\xc1e\xd4m\x17M\x04\xbe*`" + - "\x9dS\x0e\x01M\xa6\xb7va\xa0\xeb\xf9\xb6\xaeP>ܦ\xd7FR\x9b7\xabPu\xaa\xcf" + - "\xfca;k\xb2+\xe0zXKL\xbd\xce\xde.&\xf5ԛ\xbck\x1b\xd4F\x84\xac\x08#\x02mo" + - "\x0f001ShortFutMOne\x11001ShortFutMOther\x12001ShortPastMOther\x10001Nar" + - "rowFutMOne\x10001NarrowFutMTwo\x12001NarrowFutMOther\x11001NarrowPastMOn" + - "e\x13001NarrowPastMOther\x08gbAbbrM1\x08gbAbbrM2\x08gbAbbrM3\x08gbAbbrM4" + - "\x08gbAbbrM5\x08gbAbbrM6\x08gbAbbrM7\x08gbAbbrM8\x08gbAbbrM9\x09gbAbbrM1" + - "0\x09gbAbbrM11\x09gbAbbrM12\x08gbWideM1\x08gbWideM2\x08gbWideM3\x08gbWid" + - "eM4\x08gbWideM5\x08gbWideM6\x08gbWideM7\x08gbWideM8\x08gbWideM9\x09gbWid" + - "eM10\x09gbWideM11\x09gbWideM12\x0agbNarrowM1\x0agbNarrowM2\x0agbNarrowM3" + - "\x0agbNarrowM5\x0agbNarrowM6\x0agbNarrowM8\x0agbNarrowM9\x0bgbNarrowM10" + - "\x0bgbNarrowM11\x0bgbNarrowM12\xfeG*:*\x8e\xf9f̷\xb2p\xaa\xb9\x12{и\xf7c" + - "\u0088\xdb\x0ce\xfd\xd7\xfc_T\x0f\x05\xf9\xf1\xc1(\x80\xa2)H\x09\x02\x15" + - "\xe8Y!\xc2\xc8\xc3뿓d\x03vԧi%\xb5\xc0\x8c\x05m\x87\x0d\x02y\xe9F\xa9\xe1" + - "\xe1!e\xbc\x1a\x8d\xa0\x93q\x8b\x0c߮\xcdF\xd1Kpx\x87/is\xcc\xdd\xe0\xafʍ" + - "~\xfeҜl\xc2B\xc5\x1a\xa4#ث,kF\xe89\xec\xe6~\xaa\x12\xbf\x1a\xf6L\x0a\xba" + - "\xa9\x96n\xf1\x03Ӊ<\xf5\x03\x84dp\x98\xe1d\xf7'\x94\xe6\x97\x1a4/\x05" + - "\x99\x8f.\x7foH@\xe9\x1a\xda6`MQ\xad\x0d\x08\x99؟+\xe53\xbf\x97\x88~\xe6" + - "eh\xb7\xaf\xaf<\xe1|\xb9\x0cF\xe0\xda\xf2\xbd\xff\x19\xaa\x95\x9b\x81" + - "\xc3\x04\xe3\x1f\xd5o]$\xf5\x0f\xbbzU\xf2a\xb0\x92[\xfeX\x03\x1f\xdc\x0c" + - "\xd5I\xc0a_\xbd\xd8\xde\u009a\x1a@t\x1e\x7f\x8f&\x0c\x8d\xfeM\xd7ڟX\x90" + - "\x97\xfe%\xa3'\x88\x81\xb5\x14l\x0bL\xd9>\x8d\x99\xe2=ƭu,\x9aT \x06\xc1y" + - "\\\x01wf\xdcx\xab\xa1\xee\xec\x82\x1e8\xb09$\x88\xfe<\xb5\x13g\x95\x15NS" + - "\x83`vx\xb9\xb7\xd8h\xc7 \x9e\x9fL\x06\x9a\xadtV\xc9\x13\x85\x0d8\xc15R" + - "\xe5\xadEL\xf0\x0f\x8b:\xf6\x90\x16i۰W\x9dv\xee\xb6B\x80`Ωb\xc7w\x11\xa3" + - "N\x17\xee\xb7\xe0\xbf\xd4a\x0a\x8a\x18g\xb82\x8e\xaaVCG\xc3Ip\xc0^6\xa8N" + - "\xf1\xebt\xa6\xa4\x0cO\xd9c\x97\x8f\xfa\x11)\x1bHY\xa2ӄ\x1bLc\xd6\x08" + - "\x06\xbfj`?3s\x89\xb8\x82(\xaf\xef\x84\xdfz\xc3\x12\xf1b\xd4\xf7ir\xe8," + - "\x8apœ\x00F\xa6b+\xfa}\x03\x14..\xcb1l\xac\x93\xee\x19\x12\xaa\xbbo\x95" + - "\xf3?ݔ7\x84\xb2b\x0c4\x81\x17\xf2K@\xde\x18\x99Q\x17n\xe5?\xdao\xc6(\xfc" + - "\x9b\xees\xc6V\x91\x0dْ\x1d\x06g9o" - -var enumMap = map[string]uint16{ - "": 0, - "calendars": 0, - "fields": 1, - "buddhist": 0, - "chinese": 1, - "dangi": 2, - "ethiopic": 3, - "ethiopic-amete-alem": 4, - "generic": 5, - "gregorian": 6, - "hebrew": 7, - "islamic": 8, - "islamic-civil": 9, - "islamic-rgsa": 10, - "islamic-tbla": 11, - "islamic-umalqura": 12, - "persian": 13, - "months": 0, - "eras": 1, - "filler": 2, - "cyclicNameSets": 3, - "format": 0, - "stand-alone": 1, - "wAbbreviated": 0, - "wNarrow": 1, - "wWide": 2, - "leap7": 0, - "variant": 1, - "cycDayParts": 0, - "cycDays": 1, - "cycMonths": 2, - "cycYears": 3, - "cycZodiacs": 4, - "era": 0, - "era-short": 1, - "era-narrow": 2, - "month": 3, - "month-short": 4, - "month-narrow": 5, - "displayName": 0, - "relative": 1, - "relativeTime": 2, - "before1": 0, - "current": 1, - "after1": 2, - "future": 0, - "past": 1, - "other": 0, - "one": 1, - "two": 2, -} - -// Total table size: xxxx bytes (14KiB); checksum: 4BFC5D9 diff --git a/vendor/golang.org/x/text/internal/cldrtree/tree.go b/vendor/golang.org/x/text/internal/cldrtree/tree.go deleted file mode 100644 index 6d4084b8..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/tree.go +++ /dev/null @@ -1,181 +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 cldrtree - -import ( - "golang.org/x/text/internal" - "golang.org/x/text/language" -) - -const ( - inheritOffsetShift = 12 - inheritMask uint16 = 0x8000 - inheritValueMask uint16 = 0x0FFF - - missingValue uint16 = 0xFFFF -) - -// Tree holds a tree of CLDR data. -type Tree struct { - Locales []uint32 - Indices []uint16 - Buckets []string -} - -// Lookup looks up CLDR data for the given path. The lookup adheres to the alias -// and locale inheritance rules as defined in CLDR. -// -// Each subsequent element in path indicates which subtree to select data from. -// The last element of the path must select a leaf node. All other elements -// of the path select a subindex. -func (t *Tree) Lookup(tag int, path ...uint16) string { - return t.lookup(tag, false, path...) -} - -// LookupFeature is like Lookup, but will first check whether a value of "other" -// as a fallback before traversing the inheritance chain. -func (t *Tree) LookupFeature(tag int, path ...uint16) string { - return t.lookup(tag, true, path...) -} - -func (t *Tree) lookup(tag int, isFeature bool, path ...uint16) string { - origLang := tag -outer: - for { - index := t.Indices[t.Locales[tag]:] - - k := uint16(0) - for i := range path { - max := index[k] - if i < len(path)-1 { - // index (non-leaf) - if path[i] >= max { - break - } - k = index[k+1+path[i]] - if k == 0 { - break - } - if v := k &^ inheritMask; k != v { - offset := v >> inheritOffsetShift - value := v & inheritValueMask - path[uint16(i)-offset] = value - tag = origLang - continue outer - } - } else { - // leaf value - offset := missingValue - if path[i] < max { - offset = index[k+2+path[i]] - } - if offset == missingValue { - if !isFeature { - break - } - // "other" feature must exist - offset = index[k+2] - } - data := t.Buckets[index[k+1]] - n := uint16(data[offset]) - return data[offset+1 : offset+n+1] - } - } - if tag == 0 { - break - } - tag = int(internal.Parent[tag]) - } - return "" -} - -func build(b *Builder) (*Tree, error) { - var t Tree - - t.Locales = make([]uint32, language.NumCompactTags) - - for _, loc := range b.locales { - tag, _ := language.CompactIndex(loc.tag) - t.Locales[tag] = uint32(len(t.Indices)) - var x indexBuilder - x.add(loc.root) - t.Indices = append(t.Indices, x.index...) - } - // Set locales for which we don't have data to the parent's data. - for i, v := range t.Locales { - p := uint16(i) - for v == 0 && p != 0 { - p = internal.Parent[p] - v = t.Locales[p] - } - t.Locales[i] = v - } - - for _, b := range b.buckets { - t.Buckets = append(t.Buckets, string(b)) - } - if b.err != nil { - return nil, b.err - } - return &t, nil -} - -type indexBuilder struct { - index []uint16 -} - -func (b *indexBuilder) add(i *Index) uint16 { - offset := len(b.index) - - max := enumIndex(0) - switch { - case len(i.values) > 0: - for _, v := range i.values { - if v.key > max { - max = v.key - } - } - b.index = append(b.index, make([]uint16, max+3)...) - - b.index[offset] = uint16(max) + 1 - - b.index[offset+1] = i.values[0].value.bucket - for i := offset + 2; i < len(b.index); i++ { - b.index[i] = missingValue - } - for _, v := range i.values { - b.index[offset+2+int(v.key)] = v.value.bucketPos - } - return uint16(offset) - - case len(i.subIndex) > 0: - for _, s := range i.subIndex { - if s.meta.index > max { - max = s.meta.index - } - } - b.index = append(b.index, make([]uint16, max+2)...) - - b.index[offset] = uint16(max) + 1 - - for _, s := range i.subIndex { - x := b.add(s) - b.index[offset+int(s.meta.index)+1] = x - } - return uint16(offset) - - case i.meta.inheritOffset < 0: - v := uint16(-(i.meta.inheritOffset + 1)) << inheritOffsetShift - p := i.meta - for k := i.meta.inheritOffset; k < 0; k++ { - p = p.parent - } - v += uint16(p.typeInfo.enum.lookup(i.meta.inheritIndex)) - v |= inheritMask - return v - } - - return 0 -} diff --git a/vendor/golang.org/x/text/internal/cldrtree/type.go b/vendor/golang.org/x/text/internal/cldrtree/type.go deleted file mode 100644 index 65f9b467..00000000 --- a/vendor/golang.org/x/text/internal/cldrtree/type.go +++ /dev/null @@ -1,139 +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 cldrtree - -import ( - "log" - "strconv" -) - -// enumIndex is the numerical value of an enum value. -type enumIndex int - -// An enum is a collection of enum values. -type enum struct { - name string // the Go type of the enum - rename func(string) string - keyMap map[string]enumIndex - keys []string -} - -// lookup returns the index for the enum corresponding to the string. If s -// currently does not exist it will add the entry. -func (e *enum) lookup(s string) enumIndex { - if e.rename != nil { - s = e.rename(s) - } - x, ok := e.keyMap[s] - if !ok { - if e.keyMap == nil { - e.keyMap = map[string]enumIndex{} - } - u, err := strconv.ParseUint(s, 10, 32) - if err == nil { - for len(e.keys) <= int(u) { - x := enumIndex(len(e.keys)) - s := strconv.Itoa(int(x)) - e.keyMap[s] = x - e.keys = append(e.keys, s) - } - if e.keyMap[s] != enumIndex(u) { - // TODO: handle more gracefully. - log.Fatalf("cldrtree: mix of integer and non-integer for %q %v", s, e.keys) - } - return enumIndex(u) - } - x = enumIndex(len(e.keys)) - e.keyMap[s] = x - e.keys = append(e.keys, s) - } - return x -} - -// A typeInfo indicates the set of possible enum values and a mapping from -// these values to subtypes. -type typeInfo struct { - enum *enum - entries map[enumIndex]*typeInfo - keyTypeInfo *typeInfo - shareKeys bool -} - -func (t *typeInfo) sharedKeys() bool { - return t.shareKeys -} - -func (t *typeInfo) lookupSubtype(s string, opts *options) (x enumIndex, sub *typeInfo) { - if t.enum == nil { - if t.enum = opts.sharedEnums; t.enum == nil { - t.enum = &enum{} - } - } - if opts.sharedEnums != nil && t.enum != opts.sharedEnums { - panic("incompatible enums defined") - } - x = t.enum.lookup(s) - if t.entries == nil { - t.entries = map[enumIndex]*typeInfo{} - } - sub, ok := t.entries[x] - if !ok { - sub = opts.sharedType - if sub == nil { - sub = &typeInfo{} - } - t.entries[x] = sub - } - t.shareKeys = opts.sharedType != nil // For analysis purposes. - return x, sub -} - -// metaData includes information about subtypes, possibly sharing commonality -// with sibling branches, and information about inheritance, which may differ -// per branch. -type metaData struct { - b *Builder - - parent *metaData - - index enumIndex // index into the parent's subtype index - key string - elem string // XML element corresponding to this type. - typeInfo *typeInfo - - lookup map[enumIndex]*metaData - subs []*metaData - - inheritOffset int // always negative when applicable - inheritIndex string // new value for field indicated by inheritOffset - // inheritType *metaData -} - -func (m *metaData) sub(key string, opts *options) *metaData { - if m.lookup == nil { - m.lookup = map[enumIndex]*metaData{} - } - enum, info := m.typeInfo.lookupSubtype(key, opts) - sub := m.lookup[enum] - if sub == nil { - sub = &metaData{ - b: m.b, - parent: m, - - index: enum, - key: key, - typeInfo: info, - } - m.lookup[enum] = sub - m.subs = append(m.subs, sub) - } - return sub -} - -func (m *metaData) validate() { - for _, s := range m.subs { - s.validate() - } -} diff --git a/vendor/golang.org/x/text/internal/colltab/collate_test.go b/vendor/golang.org/x/text/internal/colltab/collate_test.go deleted file mode 100644 index 580c85c2..00000000 --- a/vendor/golang.org/x/text/internal/colltab/collate_test.go +++ /dev/null @@ -1,121 +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_test - -// This file contains tests which need to import package collate, which causes -// an import cycle when done within package colltab itself. - -import ( - "bytes" - "testing" - "unicode" - - "golang.org/x/text/collate" - "golang.org/x/text/language" - "golang.org/x/text/unicode/rangetable" -) - -// assigned is used to only test runes that are inside the scope of the Unicode -// version used to generation the collation table. -var assigned = rangetable.Assigned(collate.UnicodeVersion) - -func TestNonDigits(t *testing.T) { - c := collate.New(language.English, collate.Loose, collate.Numeric) - - // Verify that all non-digit numbers sort outside of the number range. - for r, hi := rune(unicode.N.R16[0].Lo), rune(unicode.N.R32[0].Hi); r <= hi; r++ { - if unicode.In(r, unicode.Nd) || !unicode.In(r, assigned) { - continue - } - if a := string(r); c.CompareString(a, "0") != -1 && c.CompareString(a, "999999") != 1 { - t.Errorf("%+q non-digit number is collated as digit", a) - } - } -} - -func TestNumericCompare(t *testing.T) { - c := collate.New(language.English, collate.Loose, collate.Numeric) - - // Iterate over all digits. - for _, r16 := range unicode.Nd.R16 { - testDigitCompare(t, c, rune(r16.Lo), rune(r16.Hi)) - } - for _, r32 := range unicode.Nd.R32 { - testDigitCompare(t, c, rune(r32.Lo), rune(r32.Hi)) - } -} - -func testDigitCompare(t *testing.T, c *collate.Collator, zero, nine rune) { - if !unicode.In(zero, assigned) { - return - } - n := int(nine - zero + 1) - if n%10 != 0 { - t.Fatalf("len([%+q, %+q]) = %d; want a multiple of 10", zero, nine, n) - } - for _, tt := range []struct { - prefix string - b [11]string - }{ - { - prefix: "", - b: [11]string{ - "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", - }, - }, - { - prefix: "1", - b: [11]string{ - "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", - }, - }, - { - prefix: "0", - b: [11]string{ - "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", - }, - }, - { - prefix: "00", - b: [11]string{ - "000", "001", "002", "003", "004", "005", "006", "007", "008", "009", "010", - }, - }, - { - prefix: "9", - b: [11]string{ - "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", - }, - }, - } { - for k := 0; k <= n; k++ { - i := k % 10 - a := tt.prefix + string(zero+rune(i)) - for j, b := range tt.b { - want := 0 - switch { - case i < j: - want = -1 - case i > j: - want = 1 - } - got := c.CompareString(a, b) - if got != want { - t.Errorf("Compare(%+q, %+q) = %d; want %d", a, b, got, want) - return - } - } - } - } -} - -func BenchmarkNumericWeighter(b *testing.B) { - c := collate.New(language.English, collate.Numeric) - input := bytes.Repeat([]byte("Testing, testing 123..."), 100) - b.SetBytes(int64(2 * len(input))) - for i := 0; i < b.N; i++ { - c.Compare(input, input) - } -} diff --git a/vendor/golang.org/x/text/internal/colltab/collelem_test.go b/vendor/golang.org/x/text/internal/colltab/collelem_test.go deleted file mode 100644 index f131ecc3..00000000 --- a/vendor/golang.org/x/text/internal/colltab/collelem_test.go +++ /dev/null @@ -1,183 +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" - "testing" - "unicode" -) - -func (e Elem) String() string { - q := "" - if v := e.Quaternary(); v == MaxQuaternary { - q = "max" - } else { - q = fmt.Sprint(v) - } - return fmt.Sprintf("[%d, %d, %d, %s]", - e.Primary(), - e.Secondary(), - e.Tertiary(), - q) -} - -type ceTest struct { - f func(inout []int) (Elem, ceType) - arg []int -} - -func makeCE(weights []int) Elem { - ce, _ := MakeElem(weights[0], weights[1], weights[2], uint8(weights[3])) - return ce -} - -var defaultValues = []int{0, defaultSecondary, defaultTertiary, 0} - -func e(w ...int) Elem { - return makeCE(append(w, defaultValues[len(w):]...)) -} - -func makeContractIndex(index, n, offset int) Elem { - const ( - contractID = 0xC0000000 - maxNBits = 4 - maxTrieIndexBits = 12 - maxContractOffsetBits = 13 - ) - ce := Elem(contractID) - ce += Elem(offset << (maxNBits + maxTrieIndexBits)) - ce += Elem(index << maxNBits) - ce += Elem(n) - return ce -} - -func makeExpandIndex(index int) Elem { - const expandID = 0xE0000000 - return expandID + Elem(index) -} - -func makeDecompose(t1, t2 int) Elem { - const decompID = 0xF0000000 - return Elem(t2<<8+t1) + decompID -} - -func normalCE(inout []int) (ce Elem, t ceType) { - ce = makeCE(inout) - inout[0] = ce.Primary() - inout[1] = ce.Secondary() - inout[2] = int(ce.Tertiary()) - inout[3] = int(ce.CCC()) - return ce, ceNormal -} - -func expandCE(inout []int) (ce Elem, t ceType) { - ce = makeExpandIndex(inout[0]) - inout[0] = splitExpandIndex(ce) - return ce, ceExpansionIndex -} - -func contractCE(inout []int) (ce Elem, t ceType) { - ce = makeContractIndex(inout[0], inout[1], inout[2]) - i, n, o := splitContractIndex(ce) - inout[0], inout[1], inout[2] = i, n, o - return ce, ceContractionIndex -} - -func decompCE(inout []int) (ce Elem, t ceType) { - ce = makeDecompose(inout[0], inout[1]) - t1, t2 := splitDecompose(ce) - inout[0], inout[1] = int(t1), int(t2) - return ce, ceDecompose -} - -var ceTests = []ceTest{ - {normalCE, []int{0, 0, 0, 0}}, - {normalCE, []int{0, 30, 3, 0}}, - {normalCE, []int{0, 30, 3, 0xFF}}, - {normalCE, []int{100, defaultSecondary, defaultTertiary, 0}}, - {normalCE, []int{100, defaultSecondary, defaultTertiary, 0xFF}}, - {normalCE, []int{100, defaultSecondary, 3, 0}}, - {normalCE, []int{0x123, defaultSecondary, 8, 0xFF}}, - - {contractCE, []int{0, 0, 0}}, - {contractCE, []int{1, 1, 1}}, - {contractCE, []int{1, (1 << maxNBits) - 1, 1}}, - {contractCE, []int{(1 << maxTrieIndexBits) - 1, 1, 1}}, - {contractCE, []int{1, 1, (1 << maxContractOffsetBits) - 1}}, - - {expandCE, []int{0}}, - {expandCE, []int{5}}, - {expandCE, []int{(1 << maxExpandIndexBits) - 1}}, - - {decompCE, []int{0, 0}}, - {decompCE, []int{1, 1}}, - {decompCE, []int{0x1F, 0x1F}}, -} - -func TestColElem(t *testing.T) { - for i, tt := range ceTests { - inout := make([]int, len(tt.arg)) - copy(inout, tt.arg) - ce, typ := tt.f(inout) - if ce.ctype() != typ { - t.Errorf("%d: type is %d; want %d (ColElem: %X)", i, ce.ctype(), typ, ce) - } - for j, a := range tt.arg { - if inout[j] != a { - t.Errorf("%d: argument %d is %X; want %X (ColElem: %X)", i, j, inout[j], a, ce) - } - } - } -} - -type implicitTest struct { - r rune - p int -} - -var implicitTests = []implicitTest{ - {0x33FF, 0x533FF}, - {0x3400, 0x23400}, - {0x4DC0, 0x54DC0}, - {0x4DFF, 0x54DFF}, - {0x4E00, 0x14E00}, - {0x9FCB, 0x19FCB}, - {0xA000, 0x5A000}, - {0xF8FF, 0x5F8FF}, - {0xF900, 0x1F900}, - {0xFA23, 0x1FA23}, - {0xFAD9, 0x1FAD9}, - {0xFB00, 0x5FB00}, - {0x20000, 0x40000}, - {0x2B81C, 0x4B81C}, - {unicode.MaxRune, 0x15FFFF}, // maximum primary value -} - -func TestImplicit(t *testing.T) { - for _, tt := range implicitTests { - if p := implicitPrimary(tt.r); p != tt.p { - t.Errorf("%U: was %X; want %X", tt.r, p, tt.p) - } - } -} - -func TestUpdateTertiary(t *testing.T) { - tests := []struct { - in, out Elem - t uint8 - }{ - {0x4000FE20, 0x0000FE8A, 0x0A}, - {0x4000FE21, 0x0000FEAA, 0x0A}, - {0x0000FE8B, 0x0000FE83, 0x03}, - {0x82FF0188, 0x9BFF0188, 0x1B}, - {0xAFF0CC02, 0xAFF0CC1B, 0x1B}, - } - for i, tt := range tests { - if out := tt.in.updateTertiary(tt.t); out != tt.out { - t.Errorf("%d: was %X; want %X", i, out, tt.out) - } - } -} diff --git a/vendor/golang.org/x/text/internal/colltab/colltab_test.go b/vendor/golang.org/x/text/internal/colltab/colltab_test.go deleted file mode 100644 index c403ac34..00000000 --- a/vendor/golang.org/x/text/internal/colltab/colltab_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package colltab - -import ( - "testing" - - "golang.org/x/text/language" -) - -func TestMatchLang(t *testing.T) { - tags := []language.Tag{ - 0: language.Und, - 1: language.MustParse("bs"), - 2: language.German, - 3: language.English, - 4: language.AmericanEnglish, - 5: language.MustParse("en-US-u-va-posix"), - 6: language.Portuguese, - 7: language.Serbian, - 8: language.MustParse("sr-Latn"), - 9: language.Chinese, - 10: language.MustParse("zh-u-co-stroke"), - 11: language.MustParse("zh-Hant-u-co-pinyin"), - 12: language.TraditionalChinese, - } - for i, tc := range []struct { - x int - t language.Tag - }{ - {0, language.Und}, - {0, language.Persian}, // Default to first element when no match. - {3, language.English}, - {4, language.AmericanEnglish}, - {5, language.MustParse("en-US-u-va-posix")}, // Ext. variant match. - {4, language.MustParse("en-US-u-va-noposix")}, // Ext. variant mismatch. - {3, language.MustParse("en-UK-u-va-noposix")}, // Ext. variant mismatch. - {7, language.Serbian}, - {0, language.Croatian}, // Don't match to close language! - {0, language.MustParse("gsw")}, // Don't match to close language! - {1, language.MustParse("bs-Cyrl")}, // Odd, but correct. - {1, language.MustParse("bs-Latn")}, // Estimated script drops. - {8, language.MustParse("sr-Latn")}, - {9, language.Chinese}, - {9, language.SimplifiedChinese}, - {12, language.TraditionalChinese}, - {11, language.MustParse("zh-Hant-u-co-pinyin")}, - // TODO: should this be 12? Either inherited value (10) or default is - // fine in this case, though. Other locales are not affected. - {10, language.MustParse("zh-Hant-u-co-stroke")}, - // There is no "phonebk" sorting order for zh-Hant, so use default. - {12, language.MustParse("zh-Hant-u-co-phonebk")}, - {10, language.MustParse("zh-u-co-stroke")}, - {12, language.MustParse("und-TW")}, // Infer script and language. - {12, language.MustParse("und-HK")}, // Infer script and language. - {6, language.MustParse("und-BR")}, // Infer script and language. - {6, language.MustParse("und-PT")}, // Infer script and language. - {2, language.MustParse("und-Latn-DE")}, // Infer language. - {0, language.MustParse("und-Jpan-BR")}, // Infers "ja", so no match. - {0, language.MustParse("zu")}, // No match past index. - } { - if x := MatchLang(tc.t, tags); x != tc.x { - t.Errorf("%d: MatchLang(%q, tags) = %d; want %d", i, tc.t, x, tc.x) - } - } -} diff --git a/vendor/golang.org/x/text/internal/colltab/contract_test.go b/vendor/golang.org/x/text/internal/colltab/contract_test.go deleted file mode 100644 index ce2871dd..00000000 --- a/vendor/golang.org/x/text/internal/colltab/contract_test.go +++ /dev/null @@ -1,131 +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 ( - "testing" -) - -type lookupStrings struct { - str string - offset int - n int // bytes consumed from input -} - -type LookupTest struct { - lookup []lookupStrings - n int - tries ContractTrieSet -} - -var lookupTests = []LookupTest{{ - []lookupStrings{ - {"abc", 1, 3}, - {"a", 0, 0}, - {"b", 0, 0}, - {"c", 0, 0}, - {"d", 0, 0}, - }, - 1, - ContractTrieSet{ - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 0xFF}, - {'c', 'c', 0, 1}, - }, -}, { - []lookupStrings{ - {"abc", 1, 3}, - {"abd", 2, 3}, - {"abe", 3, 3}, - {"a", 0, 0}, - {"ab", 0, 0}, - {"d", 0, 0}, - {"f", 0, 0}, - }, - 1, - ContractTrieSet{ - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 0xFF}, - {'c', 'e', 0, 1}, - }, -}, { - []lookupStrings{ - {"abc", 1, 3}, - {"ab", 2, 2}, - {"a", 3, 1}, - {"abcd", 1, 3}, - {"abe", 2, 2}, - }, - 1, - ContractTrieSet{ - {'a', 0, 1, 3}, - {'b', 0, 1, 2}, - {'c', 'c', 0, 1}, - }, -}, { - []lookupStrings{ - {"abc", 1, 3}, - {"abd", 2, 3}, - {"ab", 3, 2}, - {"ac", 4, 2}, - {"a", 5, 1}, - {"b", 6, 1}, - {"ba", 6, 1}, - }, - 2, - ContractTrieSet{ - {'b', 'b', 0, 6}, - {'a', 0, 2, 5}, - {'c', 'c', 0, 4}, - {'b', 0, 1, 3}, - {'c', 'd', 0, 1}, - }, -}, { - []lookupStrings{ - {"bcde", 2, 4}, - {"bc", 7, 2}, - {"ab", 6, 2}, - {"bcd", 5, 3}, - {"abcd", 1, 4}, - {"abc", 4, 3}, - {"bcdf", 3, 4}, - }, - 2, - ContractTrieSet{ - {'b', 3, 1, 0xFF}, - {'a', 0, 1, 0xFF}, - {'b', 0, 1, 6}, - {'c', 0, 1, 4}, - {'d', 'd', 0, 1}, - {'c', 0, 1, 7}, - {'d', 0, 1, 5}, - {'e', 'f', 0, 2}, - }, -}} - -func lookup(c *ContractTrieSet, nnode int, s []uint8) (i, n int) { - scan := c.scanner(0, nnode, s) - scan.scan(0) - return scan.result() -} - -func TestLookupContraction(t *testing.T) { - for i, tt := range lookupTests { - cts := ContractTrieSet(tt.tries) - for j, lu := range tt.lookup { - str := lu.str - for _, s := range []string{str, str + "X"} { - const msg = `%d:%d: %s of "%s" %v; want %v` - offset, n := lookup(&cts, tt.n, []byte(s)) - if offset != lu.offset { - t.Errorf(msg, i, j, "offset", s, offset, lu.offset) - } - if n != lu.n { - t.Errorf(msg, i, j, "bytes consumed", s, n, len(str)) - } - } - } - } -} diff --git a/vendor/golang.org/x/text/internal/colltab/iter_test.go b/vendor/golang.org/x/text/internal/colltab/iter_test.go deleted file mode 100644 index 5783534c..00000000 --- a/vendor/golang.org/x/text/internal/colltab/iter_test.go +++ /dev/null @@ -1,63 +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 - -import ( - "testing" -) - -func TestDoNorm(t *testing.T) { - const div = -1 // The insertion point of the next block. - tests := []struct { - in, out []int - }{{ - in: []int{4, div, 3}, - out: []int{3, 4}, - }, { - in: []int{4, div, 3, 3, 3}, - out: []int{3, 3, 3, 4}, - }, { - in: []int{0, 4, div, 3}, - out: []int{0, 3, 4}, - }, { - in: []int{0, 0, 4, 5, div, 3, 3}, - out: []int{0, 0, 3, 3, 4, 5}, - }, { - in: []int{0, 0, 1, 4, 5, div, 3, 3}, - out: []int{0, 0, 1, 3, 3, 4, 5}, - }, { - in: []int{0, 0, 1, 4, 5, div, 4, 4}, - out: []int{0, 0, 1, 4, 4, 4, 5}, - }, - } - for j, tt := range tests { - i := Iter{} - var w, p int - for k, cc := range tt.in { - - if cc == div { - w = 100 - p = k - continue - } - i.Elems = append(i.Elems, makeCE([]int{w, defaultSecondary, 2, cc})) - } - i.doNorm(p, i.Elems[p].CCC()) - if len(i.Elems) != len(tt.out) { - t.Errorf("%d: length was %d; want %d", j, len(i.Elems), len(tt.out)) - } - prevCCC := uint8(0) - for k, ce := range i.Elems { - if int(ce.CCC()) != tt.out[k] { - t.Errorf("%d:%d: unexpected CCC. Was %d; want %d", j, k, ce.CCC(), tt.out[k]) - } - if k > 0 && ce.CCC() == prevCCC && i.Elems[k-1].Primary() > ce.Primary() { - t.Errorf("%d:%d: normalization crossed across CCC boundary.", j, k) - } - } - } - - // Combining rune overflow is tested in search/pattern_test.go. -} diff --git a/vendor/golang.org/x/text/internal/colltab/numeric_test.go b/vendor/golang.org/x/text/internal/colltab/numeric_test.go deleted file mode 100644 index e9406ae3..00000000 --- a/vendor/golang.org/x/text/internal/colltab/numeric_test.go +++ /dev/null @@ -1,159 +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 ( - "reflect" - "strings" - "testing" - - "golang.org/x/text/internal/testtext" -) - -const ( - digSec = defaultSecondary - digTert = defaultTertiary -) - -var tPlus3 = e(0, 50, digTert+3) - -// numWeighter is a testWeighter used for testing numericWeighter. -var numWeighter = testWeighter{ - "0": p(100), - "0": []Elem{e(100, digSec, digTert+1)}, // U+FF10 FULLWIDTH DIGIT ZERO - "₀": []Elem{e(100, digSec, digTert+5)}, // U+2080 SUBSCRIPT ZERO - - "1": p(101), - // Allow non-primary collation elements to be inserted. - "١": append(p(101), tPlus3), // U+0661 ARABIC-INDIC DIGIT ONE - // Allow varying tertiary weight if the number is Nd. - "1": []Elem{e(101, digSec, digTert+1)}, // U+FF11 FULLWIDTH DIGIT ONE - "2": p(102), - // Allow non-primary collation elements to be inserted. - "٢": append(p(102), tPlus3), // U+0662 ARABIC-INDIC DIGIT TWO - // Varying tertiary weights should be ignored. - "2": []Elem{e(102, digSec, digTert+3)}, // U+FF12 FULLWIDTH DIGIT TWO - "3": p(103), - "4": p(104), - "5": p(105), - "6": p(106), - "7": p(107), - // Weights must be strictly monotonically increasing, but do not need to be - // consecutive. - "8": p(118), - "9": p(119), - // Allow non-primary collation elements to be inserted. - "٩": append(p(119), tPlus3), // U+0669 ARABIC-INDIC DIGIT NINE - // Varying tertiary weights should be ignored. - "9": []Elem{e(119, digSec, digTert+1)}, // U+FF19 FULLWIDTH DIGIT NINE - "₉": []Elem{e(119, digSec, digTert+5)}, // U+2089 SUBSCRIPT NINE - - "a": p(5), - "b": p(6), - "c": p(8, 2), - - "klm": p(99), - - "nop": p(121), - - "x": p(200), - "y": p(201), -} - -func p(w ...int) (elems []Elem) { - for _, x := range w { - e, _ := MakeElem(x, digSec, digTert, 0) - elems = append(elems, e) - } - return elems -} - -func TestNumericAppendNext(t *testing.T) { - for _, tt := range []struct { - in string - w []Elem - }{ - {"a", p(5)}, - {"klm", p(99)}, - {"aa", p(5, 5)}, - {"1", p(120, 1, 101)}, - {"0", p(120, 0)}, - {"01", p(120, 1, 101)}, - {"0001", p(120, 1, 101)}, - {"10", p(120, 2, 101, 100)}, - {"99", p(120, 2, 119, 119)}, - {"9999", p(120, 4, 119, 119, 119, 119)}, - {"1a", p(120, 1, 101, 5)}, - {"0b", p(120, 0, 6)}, - {"01c", p(120, 1, 101, 8, 2)}, - {"10x", p(120, 2, 101, 100, 200)}, - {"99y", p(120, 2, 119, 119, 201)}, - {"9999nop", p(120, 4, 119, 119, 119, 119, 121)}, - - // Allow follow-up collation elements if they have a zero non-primary. - {"١٢٩", []Elem{e(120), e(3), e(101), tPlus3, e(102), tPlus3, e(119), tPlus3}}, - { - "129", - []Elem{ - e(120), e(3), - e(101, digSec, digTert+1), - e(102, digSec, digTert+3), - e(119, digSec, digTert+1), - }, - }, - - // Ensure AppendNext* adds to the given buffer. - {"a10", p(5, 120, 2, 101, 100)}, - } { - nw := NewNumericWeighter(numWeighter) - - b := []byte(tt.in) - got := []Elem(nil) - for n, sz := 0, 0; n < len(b); { - got, sz = nw.AppendNext(got, b[n:]) - n += sz - } - if !reflect.DeepEqual(got, tt.w) { - t.Errorf("AppendNext(%q) =\n%v; want\n%v", tt.in, got, tt.w) - } - - got = nil - for n, sz := 0, 0; n < len(tt.in); { - got, sz = nw.AppendNextString(got, tt.in[n:]) - n += sz - } - if !reflect.DeepEqual(got, tt.w) { - t.Errorf("AppendNextString(%q) =\n%v; want\n%v", tt.in, got, tt.w) - } - } -} - -func TestNumericOverflow(t *testing.T) { - manyDigits := strings.Repeat("9", maxDigits+1) + "a" - - nw := NewNumericWeighter(numWeighter) - - got, n := nw.AppendNextString(nil, manyDigits) - - if n != maxDigits { - t.Errorf("n: got %d; want %d", n, maxDigits) - } - - if got[1].Primary() != maxDigits { - t.Errorf("primary(e[1]): got %d; want %d", n, maxDigits) - } -} - -func TestNumericWeighterAlloc(t *testing.T) { - buf := make([]Elem, 100) - w := NewNumericWeighter(numWeighter) - s := "1234567890a" - - nNormal := testtext.AllocsPerRun(3, func() { numWeighter.AppendNextString(buf, s) }) - nNumeric := testtext.AllocsPerRun(3, func() { w.AppendNextString(buf, s) }) - if n := nNumeric - nNormal; n > 0 { - t.Errorf("got %f; want 0", n) - } -} diff --git a/vendor/golang.org/x/text/internal/colltab/trie_test.go b/vendor/golang.org/x/text/internal/colltab/trie_test.go deleted file mode 100644 index b056a811..00000000 --- a/vendor/golang.org/x/text/internal/colltab/trie_test.go +++ /dev/null @@ -1,106 +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 ( - "testing" -) - -// We take the smallest, largest and an arbitrary value for each -// of the UTF-8 sequence lengths. -var testRunes = []rune{ - 0x01, 0x0C, 0x7F, // 1-byte sequences - 0x80, 0x100, 0x7FF, // 2-byte sequences - 0x800, 0x999, 0xFFFF, // 3-byte sequences - 0x10000, 0x10101, 0x10FFFF, // 4-byte sequences - 0x200, 0x201, 0x202, 0x210, 0x215, // five entries in one sparse block -} - -// Test cases for illegal runes. -type trietest struct { - size int - bytes []byte -} - -var tests = []trietest{ - // illegal runes - {1, []byte{0x80}}, - {1, []byte{0xFF}}, - {1, []byte{t2, tx - 1}}, - {1, []byte{t2, t2}}, - {2, []byte{t3, tx, tx - 1}}, - {2, []byte{t3, tx, t2}}, - {1, []byte{t3, tx - 1, tx}}, - {3, []byte{t4, tx, tx, tx - 1}}, - {3, []byte{t4, tx, tx, t2}}, - {1, []byte{t4, t2, tx, tx - 1}}, - {2, []byte{t4, tx, t2, tx - 1}}, - - // short runes - {0, []byte{t2}}, - {0, []byte{t3, tx}}, - {0, []byte{t4, tx, tx}}, - - // we only support UTF-8 up to utf8.UTFMax bytes (4 bytes) - {1, []byte{t5, tx, tx, tx, tx}}, - {1, []byte{t6, tx, tx, tx, tx, tx}}, -} - -func TestLookupTrie(t *testing.T) { - for i, r := range testRunes { - b := []byte(string(r)) - v, sz := testTrie.lookup(b) - if int(v) != i { - t.Errorf("lookup(%U): found value %#x, expected %#x", r, v, i) - } - if sz != len(b) { - t.Errorf("lookup(%U): found size %d, expected %d", r, sz, len(b)) - } - } - for i, tt := range tests { - v, sz := testTrie.lookup(tt.bytes) - if int(v) != 0 { - t.Errorf("lookup of illegal rune, case %d: found value %#x, expected 0", i, v) - } - if sz != tt.size { - t.Errorf("lookup of illegal rune, case %d: found size %d, expected %d", i, sz, tt.size) - } - } -} - -// test data is taken from exp/collate/locale/build/trie_test.go -var testValues = [832]uint32{ - 0x000c: 0x00000001, - 0x007f: 0x00000002, - 0x00c0: 0x00000003, - 0x0100: 0x00000004, - 0x0140: 0x0000000c, 0x0141: 0x0000000d, 0x0142: 0x0000000e, - 0x0150: 0x0000000f, - 0x0155: 0x00000010, - 0x01bf: 0x00000005, - 0x01c0: 0x00000006, - 0x0219: 0x00000007, - 0x027f: 0x00000008, - 0x0280: 0x00000009, - 0x02c1: 0x0000000a, - 0x033f: 0x0000000b, -} - -var testLookup = [640]uint16{ - 0x0e0: 0x05, 0x0e6: 0x06, - 0x13f: 0x07, - 0x140: 0x08, 0x144: 0x09, - 0x190: 0x03, - 0x1ff: 0x0a, - 0x20f: 0x05, - 0x242: 0x01, 0x244: 0x02, - 0x248: 0x03, - 0x25f: 0x04, - 0x260: 0x01, - 0x26f: 0x02, - 0x270: 0x04, 0x274: 0x06, -} - -var testTrie = Trie{testLookup[6*blockSize:], testValues[:], testLookup[:], testValues[:]} diff --git a/vendor/golang.org/x/text/internal/colltab/weighter_test.go b/vendor/golang.org/x/text/internal/colltab/weighter_test.go deleted file mode 100644 index b5f8487b..00000000 --- a/vendor/golang.org/x/text/internal/colltab/weighter_test.go +++ /dev/null @@ -1,42 +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 - -// testWeighter is a simple Weighter that returns weights from a user-defined map. -type testWeighter map[string][]Elem - -func (t testWeighter) Start(int, []byte) int { return 0 } -func (t testWeighter) StartString(int, string) int { return 0 } -func (t testWeighter) Domain() []string { return nil } -func (t testWeighter) Top() uint32 { return 0 } - -// maxContractBytes is the maximum length of any key in the map. -const maxContractBytes = 10 - -func (t testWeighter) AppendNext(buf []Elem, s []byte) ([]Elem, int) { - n := len(s) - if n > maxContractBytes { - n = maxContractBytes - } - for i := n; i > 0; i-- { - if e, ok := t[string(s[:i])]; ok { - return append(buf, e...), i - } - } - panic("incomplete testWeighter: could not find " + string(s)) -} - -func (t testWeighter) AppendNextString(buf []Elem, s string) ([]Elem, int) { - n := len(s) - if n > maxContractBytes { - n = maxContractBytes - } - for i := n; i > 0; i-- { - if e, ok := t[s[:i]]; ok { - return append(buf, e...), i - } - } - panic("incomplete testWeighter: could not find " + s) -} diff --git a/vendor/golang.org/x/text/internal/export/README b/vendor/golang.org/x/text/internal/export/README deleted file mode 100644 index 350b93d3..00000000 --- a/vendor/golang.org/x/text/internal/export/README +++ /dev/null @@ -1,4 +0,0 @@ -The export directory contains packages that are generated using the x/text -infrastructure, but live elsewhere. -At some point we can expose some of the infrastructure, but for now this -is not done. diff --git a/vendor/golang.org/x/text/internal/export/idna/common_test.go b/vendor/golang.org/x/text/internal/export/idna/common_test.go deleted file mode 100644 index 0b07c12d..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/common_test.go +++ /dev/null @@ -1,55 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package idna - -// This file contains code that is common between the generation code and the -// package's test code. - -import ( - "log" - - "golang.org/x/text/internal/ucd" -) - -func catFromEntry(p *ucd.Parser) (cat category) { - r := p.Rune(0) - switch s := p.String(1); s { - case "valid": - cat = valid - case "disallowed": - cat = disallowed - case "disallowed_STD3_valid": - cat = disallowedSTD3Valid - case "disallowed_STD3_mapped": - cat = disallowedSTD3Mapped - case "mapped": - cat = mapped - case "deviation": - cat = deviation - case "ignored": - cat = ignored - default: - log.Fatalf("%U: Unknown category %q", r, s) - } - if s := p.String(3); s != "" { - if cat != valid { - log.Fatalf(`%U: %s defined for %q; want "valid"`, r, s, p.String(1)) - } - switch s { - case "NV8": - cat = validNV8 - case "XV8": - cat = validXV8 - default: - log.Fatalf("%U: Unexpected exception %q", r, s) - } - } - return cat -} - -var joinType = map[string]info{ - "L": joiningL, - "D": joiningD, - "T": joiningT, - "R": joiningR, -} diff --git a/vendor/golang.org/x/text/internal/export/idna/example_test.go b/vendor/golang.org/x/text/internal/export/idna/example_test.go deleted file mode 100644 index 6e6b8727..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/example_test.go +++ /dev/null @@ -1,68 +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 idna_test - -import ( - "fmt" - - "golang.org/x/text/internal/export/idna" -) - -func ExampleProfile() { - // Raw Punycode has no restrictions and does no mappings. - fmt.Println(idna.ToASCII("")) - fmt.Println(idna.ToASCII("*.faß.com")) - fmt.Println(idna.Punycode.ToASCII("*.faß.com")) - - // Rewrite IDN for lookup. This (currently) uses transitional mappings to - // find a balance between IDNA2003 and IDNA2008 compatibility. - fmt.Println(idna.Lookup.ToASCII("")) - fmt.Println(idna.Lookup.ToASCII("www.faß.com")) - - // Convert an IDN to ASCII for registration purposes. This changes the - // encoding, but reports an error if the input was illformed. - fmt.Println(idna.Registration.ToASCII("")) - fmt.Println(idna.Registration.ToASCII("www.faß.com")) - - // Output: - // <nil> - // *.xn--fa-hia.com <nil> - // *.xn--fa-hia.com <nil> - // <nil> - // www.fass.com <nil> - // idna: invalid label "" - // www.xn--fa-hia.com <nil> -} - -func ExampleNew() { - var p *idna.Profile - - // Raw Punycode has no restrictions and does no mappings. - p = idna.New() - fmt.Println(p.ToASCII("*.faß.com")) - - // Do mappings. Note that star is not allowed in a DNS lookup. - p = idna.New( - idna.MapForLookup(), - idna.Transitional(true)) // Map ß -> ss - fmt.Println(p.ToASCII("*.faß.com")) - - // Lookup for registration. Also does not allow '*'. - p = idna.New(idna.ValidateForRegistration()) - fmt.Println(p.ToUnicode("*.faß.com")) - - // Set up a profile maps for lookup, but allows wild cards. - p = idna.New( - idna.MapForLookup(), - idna.Transitional(true), // Map ß -> ss - idna.StrictDomainName(false)) // Set more permissive ASCII rules. - fmt.Println(p.ToASCII("*.faß.com")) - - // Output: - // *.xn--fa-hia.com <nil> - // *.fass.com idna: disallowed rune U+002A - // *.faß.com idna: disallowed rune U+002A - // *.fass.com <nil> -} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen.go b/vendor/golang.org/x/text/internal/export/idna/gen.go deleted file mode 100644 index 4ad98046..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/gen.go +++ /dev/null @@ -1,276 +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. - -// +build ignore - -// This program generates the trie for idna operations. The Unicode casing -// algorithm requires the lookup of various properties and mappings for each -// rune. The table generated by this generator combines several of the most -// frequently used of these into a single trie so that they can be accessed -// with a single lookup. -package main - -import ( - "fmt" - "io" - "log" - "unicode" - "unicode/utf8" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/triegen" - "golang.org/x/text/internal/ucd" - "golang.org/x/text/unicode/bidi" -) - -func main() { - gen.Init() - genTables() - gen.Repackage("gen_trieval.go", "trieval.go", "idna") - gen.Repackage("gen_common.go", "common_test.go", "idna") -} - -var runes = map[rune]info{} - -func genTables() { - t := triegen.NewTrie("idna") - - ucd.Parse(gen.OpenUCDFile("DerivedNormalizationProps.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - if p.String(1) == "NFC_QC" { // p.String(2) is "N" or "M" - runes[r] = mayNeedNorm - } - }) - ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - - const cccVirama = 9 - if p.Int(ucd.CanonicalCombiningClass) == cccVirama { - runes[p.Rune(0)] = viramaModifier - } - switch { - case unicode.In(r, unicode.Mark): - runes[r] |= modifier | mayNeedNorm - } - // TODO: by using UnicodeData.txt we don't mark undefined codepoints - // that are earmarked as RTL properly. However, an undefined cp will - // always fail, so there is no need to store this info. - switch p, _ := bidi.LookupRune(r); p.Class() { - case bidi.R, bidi.AL, bidi.AN: - if x := runes[r]; x != 0 && x != mayNeedNorm { - log.Fatalf("%U: rune both modifier and RTL letter/number", r) - } - runes[r] = rtl - } - }) - - ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) { - switch v := p.String(1); v { - case "L", "D", "T", "R": - runes[p.Rune(0)] |= joinType[v] << joinShift - } - }) - - ucd.Parse(gen.OpenUnicodeFile("idna", "", "IdnaMappingTable.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - - // The mappings table explicitly defines surrogates as invalid. - if !utf8.ValidRune(r) { - return - } - - cat := catFromEntry(p) - isMapped := cat == mapped || cat == disallowedSTD3Mapped || cat == deviation - if !isMapped { - // Only include additional category information for non-mapped - // runes. The additional information is only used after mapping and - // the bits would clash with mapping information. - // TODO: it would be possible to inline this data and avoid - // additional lookups. This is quite tedious, though, so let's first - // see if we need this. - cat |= category(runes[r]) - } - - s := string(p.Runes(2)) - if s != "" && !isMapped { - log.Fatalf("%U: Mapping with non-mapping category %d", r, cat) - } - t.Insert(r, uint64(makeEntry(r, s))+uint64(cat)) - }) - - w := gen.NewCodeWriter() - defer w.WriteVersionedGoFile("tables.go", "idna") - - gen.WriteUnicodeVersion(w) - - w.WriteVar("mappings", string(mappings)) - w.WriteVar("xorData", string(xorData)) - - sz, err := t.Gen(w, triegen.Compact(&normCompacter{})) - if err != nil { - log.Fatal(err) - } - w.Size += sz -} - -var ( - // mappings contains replacement strings for mapped runes, each prefixed - // with a byte containing the length of the following string. - mappings = []byte{} - mapCache = map[string]int{} - - // xorData is like mappings, except that it contains XOR data. - // We split these two tables so that we don't get an overflow. - xorData = []byte{} - xorCache = map[string]int{} -) - -// makeEntry creates a trie entry. -func makeEntry(r rune, mapped string) info { - orig := string(r) - - if len(orig) != len(mapped) { - // Store the mapped value as is in the mappings table. - index := len(mappings) - if x, ok := mapCache[mapped]; ok { - index = x - } else { - mapCache[mapped] = index - mappings = append(mappings, byte(len(mapped))) - mappings = append(mappings, mapped...) - } - return info(index) << indexShift - } - - // Create per-byte XOR mask. - var b []byte - for i := 0; i < len(orig); i++ { - b = append(b, orig[i]^mapped[i]) - } - - // Remove leading 0 bytes, but keep at least one byte. - for ; len(b) > 1 && b[0] == 0; b = b[1:] { - } - - if len(b) == 1 { - return xorBit | inlineXOR | info(b[0])<<indexShift - } - mapped = string(b) - - // Store the mapped value as is in the mappings table. - index := len(xorData) - if x, ok := xorCache[mapped]; ok { - index = x - } else { - xorCache[mapped] = index - xorData = append(xorData, byte(len(mapped))) - xorData = append(xorData, mapped...) - } - return xorBit | info(index)<<indexShift -} - -// The following code implements a triegen.Compacter that was originally -// designed for normalization. The IDNA table has some similarities with the -// norm table. Using this compacter, together with the XOR pattern approach, -// reduces the table size by roughly 100K. It can probably be compressed further -// by also including elements of the compacter used by cases, but for now it is -// good enough. - -const maxSparseEntries = 16 - -type normCompacter struct { - sparseBlocks [][]uint64 - sparseOffset []uint16 - sparseCount int -} - -func mostFrequentStride(a []uint64) int { - counts := make(map[int]int) - var v int - for _, x := range a { - if stride := int(x) - v; v != 0 && stride >= 0 { - counts[stride]++ - } - v = int(x) - } - var maxs, maxc int - for stride, cnt := range counts { - if cnt > maxc || (cnt == maxc && stride < maxs) { - maxs, maxc = stride, cnt - } - } - return maxs -} - -func countSparseEntries(a []uint64) int { - stride := mostFrequentStride(a) - var v, count int - for _, tv := range a { - if int(tv)-v != stride { - if tv != 0 { - count++ - } - } - v = int(tv) - } - return count -} - -func (c *normCompacter) Size(v []uint64) (sz int, ok bool) { - if n := countSparseEntries(v); n <= maxSparseEntries { - return (n+1)*4 + 2, true - } - return 0, false -} - -func (c *normCompacter) Store(v []uint64) uint32 { - h := uint32(len(c.sparseOffset)) - c.sparseBlocks = append(c.sparseBlocks, v) - c.sparseOffset = append(c.sparseOffset, uint16(c.sparseCount)) - c.sparseCount += countSparseEntries(v) + 1 - return h -} - -func (c *normCompacter) Handler() string { - return "idnaSparse.lookup" -} - -func (c *normCompacter) Print(w io.Writer) (retErr error) { - p := func(f string, x ...interface{}) { - if _, err := fmt.Fprintf(w, f, x...); retErr == nil && err != nil { - retErr = err - } - } - - ls := len(c.sparseBlocks) - p("// idnaSparseOffset: %d entries, %d bytes\n", ls, ls*2) - p("var idnaSparseOffset = %#v\n\n", c.sparseOffset) - - ns := c.sparseCount - p("// idnaSparseValues: %d entries, %d bytes\n", ns, ns*4) - p("var idnaSparseValues = [%d]valueRange {", ns) - for i, b := range c.sparseBlocks { - p("\n// Block %#x, offset %#x", i, c.sparseOffset[i]) - var v int - stride := mostFrequentStride(b) - n := countSparseEntries(b) - p("\n{value:%#04x,lo:%#02x},", stride, uint8(n)) - for i, nv := range b { - if int(nv)-v != stride { - if v != 0 { - p(",hi:%#02x},", 0x80+i-1) - } - if nv != 0 { - p("\n{value:%#04x,lo:%#02x", nv, 0x80+i) - } - } - v = int(nv) - } - if v != 0 { - p(",hi:%#02x},", 0x80+len(b)-1) - } - } - p("\n}\n\n") - return -} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen10.0.0_test.go b/vendor/golang.org/x/text/internal/export/idna/gen10.0.0_test.go deleted file mode 100644 index c5dfdde6..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/gen10.0.0_test.go +++ /dev/null @@ -1,93 +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. - -// +build go1.10 - -package idna - -import ( - "testing" - "unicode" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/internal/ucd" -) - -func TestTables(t *testing.T) { - testtext.SkipIfNotLong(t) - - lookup := func(r rune) info { - v, _ := trie.lookupString(string(r)) - return info(v) - } - - ucd.Parse(gen.OpenUnicodeFile("idna", "", "IdnaMappingTable.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - x := lookup(r) - if got, want := x.category(), catFromEntry(p); got != want { - t.Errorf("%U:category: got %x; want %x", r, got, want) - } - - mapped := false - switch p.String(1) { - case "mapped", "disallowed_STD3_mapped", "deviation": - mapped = true - } - if x.isMapped() != mapped { - t.Errorf("%U:isMapped: got %v; want %v", r, x.isMapped(), mapped) - } - if !mapped { - return - } - want := string(p.Runes(2)) - got := string(x.appendMapping(nil, string(r))) - if got != want { - t.Errorf("%U:mapping: got %+q; want %+q", r, got, want) - } - - if x.isMapped() { - return - } - wantMark := unicode.In(r, unicode.Mark) - gotMark := x.isModifier() - if gotMark != wantMark { - t.Errorf("IsMark(%U) = %v; want %v", r, gotMark, wantMark) - } - }) - - ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - x := lookup(r) - got := x.isViramaModifier() - - const cccVirama = 9 - want := p.Int(ucd.CanonicalCombiningClass) == cccVirama - if got != want { - t.Errorf("IsVirama(%U) = %v; want %v", r, got, want) - } - - rtl := false - switch p.String(ucd.BidiClass) { - case "R", "AL", "AN": - rtl = true - } - if got := x.isBidi("A"); got != rtl && !x.isMapped() { - t.Errorf("IsBidi(%U) = %v; want %v", r, got, rtl) - } - }) - - ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - x := lookup(r) - if x.isMapped() { - return - } - got := x.joinType() - want := joinType[p.String(1)] - if got != want { - t.Errorf("JoinType(%U) = %x; want %x", r, got, want) - } - }) -} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen9.0.0_test.go b/vendor/golang.org/x/text/internal/export/idna/gen9.0.0_test.go deleted file mode 100644 index 0e66f0b1..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/gen9.0.0_test.go +++ /dev/null @@ -1,84 +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. - -// +build !go1.10 - -package idna - -import ( - "testing" - "unicode" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/internal/ucd" -) - -func TestTables(t *testing.T) { - testtext.SkipIfNotLong(t) - - lookup := func(r rune) info { - v, _ := trie.lookupString(string(r)) - return info(v) - } - - ucd.Parse(gen.OpenUnicodeFile("idna", "", "IdnaMappingTable.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - x := lookup(r) - if got, want := x.category(), catFromEntry(p); got != want { - t.Errorf("%U:category: got %x; want %x", r, got, want) - } - - mapped := false - switch p.String(1) { - case "mapped", "disallowed_STD3_mapped", "deviation": - mapped = true - } - if x.isMapped() != mapped { - t.Errorf("%U:isMapped: got %v; want %v", r, x.isMapped(), mapped) - } - if !mapped { - return - } - want := string(p.Runes(2)) - got := string(x.appendMapping(nil, string(r))) - if got != want { - t.Errorf("%U:mapping: got %+q; want %+q", r, got, want) - } - - if x.isMapped() { - return - } - wantMark := unicode.In(r, unicode.Mark) - gotMark := x.isModifier() - if gotMark != wantMark { - t.Errorf("IsMark(%U) = %v; want %v", r, gotMark, wantMark) - } - }) - - ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - x := lookup(r) - got := x.isViramaModifier() - - const cccVirama = 9 - want := p.Int(ucd.CanonicalCombiningClass) == cccVirama - if got != want { - t.Errorf("IsVirama(%U) = %v; want %v", r, got, want) - } - }) - - ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - x := lookup(r) - if x.isMapped() { - return - } - got := x.joinType() - want := joinType[p.String(1)] - if got != want { - t.Errorf("JoinType(%U) = %x; want %x", r, got, want) - } - }) -} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen_common.go b/vendor/golang.org/x/text/internal/export/idna/gen_common.go deleted file mode 100644 index 360a02b8..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/gen_common.go +++ /dev/null @@ -1,59 +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. - -// +build ignore - -package main - -// This file contains code that is common between the generation code and the -// package's test code. - -import ( - "log" - - "golang.org/x/text/internal/ucd" -) - -func catFromEntry(p *ucd.Parser) (cat category) { - r := p.Rune(0) - switch s := p.String(1); s { - case "valid": - cat = valid - case "disallowed": - cat = disallowed - case "disallowed_STD3_valid": - cat = disallowedSTD3Valid - case "disallowed_STD3_mapped": - cat = disallowedSTD3Mapped - case "mapped": - cat = mapped - case "deviation": - cat = deviation - case "ignored": - cat = ignored - default: - log.Fatalf("%U: Unknown category %q", r, s) - } - if s := p.String(3); s != "" { - if cat != valid { - log.Fatalf(`%U: %s defined for %q; want "valid"`, r, s, p.String(1)) - } - switch s { - case "NV8": - cat = validNV8 - case "XV8": - cat = validXV8 - default: - log.Fatalf("%U: Unexpected exception %q", r, s) - } - } - return cat -} - -var joinType = map[string]info{ - "L": joiningL, - "D": joiningD, - "T": joiningT, - "R": joiningR, -} diff --git a/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go b/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go deleted file mode 100644 index 0de99b08..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/gen_trieval.go +++ /dev/null @@ -1,123 +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. - -// +build ignore - -package main - -// This file contains definitions for interpreting the trie value of the idna -// trie generated by "go run gen*.go". It is shared by both the generator -// program and the resultant package. Sharing is achieved by the generator -// copying gen_trieval.go to trieval.go and changing what's above this comment. - -// info holds information from the IDNA mapping table for a single rune. It is -// the value returned by a trie lookup. In most cases, all information fits in -// a 16-bit value. For mappings, this value may contain an index into a slice -// with the mapped string. Such mappings can consist of the actual mapped value -// or an XOR pattern to be applied to the bytes of the UTF8 encoding of the -// input rune. This technique is used by the cases packages and reduces the -// table size significantly. -// -// The per-rune values have the following format: -// -// if mapped { -// if inlinedXOR { -// 15..13 inline XOR marker -// 12..11 unused -// 10..3 inline XOR mask -// } else { -// 15..3 index into xor or mapping table -// } -// } else { -// 15..14 unused -// 13 mayNeedNorm -// 12..11 attributes -// 10..8 joining type -// 7..3 category type -// } -// 2 use xor pattern -// 1..0 mapped category -// -// See the definitions below for a more detailed description of the various -// bits. -type info uint16 - -const ( - catSmallMask = 0x3 - catBigMask = 0xF8 - indexShift = 3 - xorBit = 0x4 // interpret the index as an xor pattern - inlineXOR = 0xE000 // These bits are set if the XOR pattern is inlined. - - joinShift = 8 - joinMask = 0x07 - - // Attributes - attributesMask = 0x1800 - viramaModifier = 0x1800 - modifier = 0x1000 - rtl = 0x0800 - - mayNeedNorm = 0x2000 -) - -// A category corresponds to a category defined in the IDNA mapping table. -type category uint16 - -const ( - unknown category = 0 // not currently defined in unicode. - mapped category = 1 - disallowedSTD3Mapped category = 2 - deviation category = 3 -) - -const ( - valid category = 0x08 - validNV8 category = 0x18 - validXV8 category = 0x28 - disallowed category = 0x40 - disallowedSTD3Valid category = 0x80 - ignored category = 0xC0 -) - -// join types and additional rune information -const ( - joiningL = (iota + 1) - joiningD - joiningT - joiningR - - //the following types are derived during processing - joinZWJ - joinZWNJ - joinVirama - numJoinTypes -) - -func (c info) isMapped() bool { - return c&0x3 != 0 -} - -func (c info) category() category { - small := c & catSmallMask - if small != 0 { - return category(small) - } - return category(c & catBigMask) -} - -func (c info) joinType() info { - if c.isMapped() { - return 0 - } - return (c >> joinShift) & joinMask -} - -func (c info) isModifier() bool { - return c&(modifier|catSmallMask) == modifier -} - -func (c info) isViramaModifier() bool { - return c&(attributesMask|catSmallMask) == viramaModifier -} diff --git a/vendor/golang.org/x/text/internal/export/idna/idna10.0.0.go b/vendor/golang.org/x/text/internal/export/idna/idna10.0.0.go deleted file mode 100644 index 92b4a393..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/idna10.0.0.go +++ /dev/null @@ -1,733 +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. - -// +build go1.10 -//go:generate go run gen.go gen_trieval.go gen_common.go - -// Package idna implements IDNA2008 using the compatibility processing -// defined by UTS (Unicode Technical Standard) #46, which defines a standard to -// deal with the transition from IDNA2003. -// -// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC -// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894. -// UTS #46 is defined in http://www.unicode.org/reports/tr46. -// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the -// differences between these two standards. -package idna // import "golang.org/x/text/internal/export/idna" - -import ( - "fmt" - "strings" - "unicode/utf8" - - "golang.org/x/text/secure/bidirule" - "golang.org/x/text/unicode/bidi" - "golang.org/x/text/unicode/norm" -) - -// NOTE: Unlike common practice in Go APIs, the functions will return a -// sanitized domain name in case of errors. Browsers sometimes use a partially -// evaluated string as lookup. -// TODO: the current error handling is, in my opinion, the least opinionated. -// Other strategies are also viable, though: -// Option 1) Return an empty string in case of error, but allow the user to -// specify explicitly which errors to ignore. -// Option 2) Return the partially evaluated string if it is itself a valid -// string, otherwise return the empty string in case of error. -// Option 3) Option 1 and 2. -// Option 4) Always return an empty string for now and implement Option 1 as -// needed, and document that the return string may not be empty in case of -// error in the future. -// I think Option 1 is best, but it is quite opinionated. - -// ToASCII is a wrapper for Punycode.ToASCII. -func ToASCII(s string) (string, error) { - return Punycode.process(s, true) -} - -// ToUnicode is a wrapper for Punycode.ToUnicode. -func ToUnicode(s string) (string, error) { - return Punycode.process(s, false) -} - -// An Option configures a Profile at creation time. -type Option func(*options) - -// Transitional sets a Profile to use the Transitional mapping as defined in UTS -// #46. This will cause, for example, "ß" to be mapped to "ss". Using the -// transitional mapping provides a compromise between IDNA2003 and IDNA2008 -// compatibility. It is used by most browsers when resolving domain names. This -// option is only meaningful if combined with MapForLookup. -func Transitional(transitional bool) Option { - return func(o *options) { o.transitional = true } -} - -// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts -// are longer than allowed by the RFC. -func VerifyDNSLength(verify bool) Option { - return func(o *options) { o.verifyDNSLength = verify } -} - -// RemoveLeadingDots removes leading label separators. Leading runes that map to -// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. -// -// This is the behavior suggested by the UTS #46 and is adopted by some -// browsers. -func RemoveLeadingDots(remove bool) Option { - return func(o *options) { o.removeLeadingDots = remove } -} - -// ValidateLabels sets whether to check the mandatory label validation criteria -// as defined in Section 5.4 of RFC 5891. This includes testing for correct use -// of hyphens ('-'), normalization, validity of runes, and the context rules. -func ValidateLabels(enable bool) Option { - return func(o *options) { - // Don't override existing mappings, but set one that at least checks - // normalization if it is not set. - if o.mapping == nil && enable { - o.mapping = normalize - } - o.trie = trie - o.validateLabels = enable - o.fromPuny = validateFromPunycode - } -} - -// StrictDomainName limits the set of permissible ASCII characters to those -// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the -// hyphen). This is set by default for MapForLookup and ValidateForRegistration. -// -// This option is useful, for instance, for browsers that allow characters -// outside this range, for example a '_' (U+005F LOW LINE). See -// http://www.rfc-editor.org/std/std3.txt for more details This option -// corresponds to the UseSTD3ASCIIRules option in UTS #46. -func StrictDomainName(use bool) Option { - return func(o *options) { - o.trie = trie - o.useSTD3Rules = use - o.fromPuny = validateFromPunycode - } -} - -// NOTE: the following options pull in tables. The tables should not be linked -// in as long as the options are not used. - -// BidiRule enables the Bidi rule as defined in RFC 5893. Any application -// that relies on proper validation of labels should include this rule. -func BidiRule() Option { - return func(o *options) { o.bidirule = bidirule.ValidString } -} - -// ValidateForRegistration sets validation options to verify that a given IDN is -// properly formatted for registration as defined by Section 4 of RFC 5891. -func ValidateForRegistration() Option { - return func(o *options) { - o.mapping = validateRegistration - StrictDomainName(true)(o) - ValidateLabels(true)(o) - VerifyDNSLength(true)(o) - BidiRule()(o) - } -} - -// MapForLookup sets validation and mapping options such that a given IDN is -// transformed for domain name lookup according to the requirements set out in -// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894, -// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option -// to add this check. -// -// The mappings include normalization and mapping case, width and other -// compatibility mappings. -func MapForLookup() Option { - return func(o *options) { - o.mapping = validateAndMap - StrictDomainName(true)(o) - ValidateLabels(true)(o) - } -} - -type options struct { - transitional bool - useSTD3Rules bool - validateLabels bool - verifyDNSLength bool - removeLeadingDots bool - - trie *idnaTrie - - // fromPuny calls validation rules when converting A-labels to U-labels. - fromPuny func(p *Profile, s string) error - - // mapping implements a validation and mapping step as defined in RFC 5895 - // or UTS 46, tailored to, for example, domain registration or lookup. - mapping func(p *Profile, s string) (mapped string, isBidi bool, err error) - - // bidirule, if specified, checks whether s conforms to the Bidi Rule - // defined in RFC 5893. - bidirule func(s string) bool -} - -// A Profile defines the configuration of an IDNA mapper. -type Profile struct { - options -} - -func apply(o *options, opts []Option) { - for _, f := range opts { - f(o) - } -} - -// New creates a new Profile. -// -// With no options, the returned Profile is the most permissive and equals the -// Punycode Profile. Options can be passed to further restrict the Profile. The -// MapForLookup and ValidateForRegistration options set a collection of options, -// for lookup and registration purposes respectively, which can be tailored by -// adding more fine-grained options, where later options override earlier -// options. -func New(o ...Option) *Profile { - p := &Profile{} - apply(&p.options, o) - return p -} - -// ToASCII converts a domain or domain label to its ASCII form. For example, -// ToASCII("bücher.example.com") is "xn--bcher-kva.example.com", and -// ToASCII("golang") is "golang". If an error is encountered it will return -// an error and a (partially) processed result. -func (p *Profile) ToASCII(s string) (string, error) { - return p.process(s, true) -} - -// ToUnicode converts a domain or domain label to its Unicode form. For example, -// ToUnicode("xn--bcher-kva.example.com") is "bücher.example.com", and -// ToUnicode("golang") is "golang". If an error is encountered it will return -// an error and a (partially) processed result. -func (p *Profile) ToUnicode(s string) (string, error) { - pp := *p - pp.transitional = false - return pp.process(s, false) -} - -// String reports a string with a description of the profile for debugging -// purposes. The string format may change with different versions. -func (p *Profile) String() string { - s := "" - if p.transitional { - s = "Transitional" - } else { - s = "NonTransitional" - } - if p.useSTD3Rules { - s += ":UseSTD3Rules" - } - if p.validateLabels { - s += ":ValidateLabels" - } - if p.verifyDNSLength { - s += ":VerifyDNSLength" - } - return s -} - -var ( - // Punycode is a Profile that does raw punycode processing with a minimum - // of validation. - Punycode *Profile = punycode - - // Lookup is the recommended profile for looking up domain names, according - // to Section 5 of RFC 5891. The exact configuration of this profile may - // change over time. - Lookup *Profile = lookup - - // Display is the recommended profile for displaying domain names. - // The configuration of this profile may change over time. - Display *Profile = display - - // Registration is the recommended profile for checking whether a given - // IDN is valid for registration, according to Section 4 of RFC 5891. - Registration *Profile = registration - - punycode = &Profile{} - lookup = &Profile{options{ - transitional: true, - useSTD3Rules: true, - validateLabels: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, - }} - display = &Profile{options{ - useSTD3Rules: true, - validateLabels: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, - }} - registration = &Profile{options{ - useSTD3Rules: true, - validateLabels: true, - verifyDNSLength: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateRegistration, - bidirule: bidirule.ValidString, - }} - - // TODO: profiles - // Register: recommended for approving domain names: don't do any mappings - // but rather reject on invalid input. Bundle or block deviation characters. -) - -type labelError struct{ label, code_ string } - -func (e labelError) code() string { return e.code_ } -func (e labelError) Error() string { - return fmt.Sprintf("idna: invalid label %q", e.label) -} - -type runeError rune - -func (e runeError) code() string { return "P1" } -func (e runeError) Error() string { - return fmt.Sprintf("idna: disallowed rune %U", e) -} - -// process implements the algorithm described in section 4 of UTS #46, -// see http://www.unicode.org/reports/tr46. -func (p *Profile) process(s string, toASCII bool) (string, error) { - var err error - var isBidi bool - if p.mapping != nil { - s, isBidi, err = p.mapping(p, s) - } - // Remove leading empty labels. - if p.removeLeadingDots { - for ; len(s) > 0 && s[0] == '.'; s = s[1:] { - } - } - // TODO: allow for a quick check of the tables data. - // It seems like we should only create this error on ToASCII, but the - // UTS 46 conformance tests suggests we should always check this. - if err == nil && p.verifyDNSLength && s == "" { - err = &labelError{s, "A4"} - } - labels := labelIter{orig: s} - for ; !labels.done(); labels.next() { - label := labels.label() - if label == "" { - // Empty labels are not okay. The label iterator skips the last - // label if it is empty. - if err == nil && p.verifyDNSLength { - err = &labelError{s, "A4"} - } - continue - } - if strings.HasPrefix(label, acePrefix) { - u, err2 := decode(label[len(acePrefix):]) - if err2 != nil { - if err == nil { - err = err2 - } - // Spec says keep the old label. - continue - } - isBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight - labels.set(u) - if err == nil && p.validateLabels { - err = p.fromPuny(p, u) - } - if err == nil { - // This should be called on NonTransitional, according to the - // spec, but that currently does not have any effect. Use the - // original profile to preserve options. - err = p.validateLabel(u) - } - } else if err == nil { - err = p.validateLabel(label) - } - } - if isBidi && p.bidirule != nil && err == nil { - for labels.reset(); !labels.done(); labels.next() { - if !p.bidirule(labels.label()) { - err = &labelError{s, "B"} - break - } - } - } - if toASCII { - for labels.reset(); !labels.done(); labels.next() { - label := labels.label() - if !ascii(label) { - a, err2 := encode(acePrefix, label) - if err == nil { - err = err2 - } - label = a - labels.set(a) - } - n := len(label) - if p.verifyDNSLength && err == nil && (n == 0 || n > 63) { - err = &labelError{label, "A4"} - } - } - } - s = labels.result() - if toASCII && p.verifyDNSLength && err == nil { - // Compute the length of the domain name minus the root label and its dot. - n := len(s) - if n > 0 && s[n-1] == '.' { - n-- - } - if len(s) < 1 || n > 253 { - err = &labelError{s, "A4"} - } - } - return s, err -} - -func normalize(p *Profile, s string) (mapped string, isBidi bool, err error) { - // TODO: consider first doing a quick check to see if any of these checks - // need to be done. This will make it slower in the general case, but - // faster in the common case. - mapped = norm.NFC.String(s) - isBidi = bidirule.DirectionString(mapped) == bidi.RightToLeft - return mapped, isBidi, nil -} - -func validateRegistration(p *Profile, s string) (idem string, bidi bool, err error) { - // TODO: filter need for normalization in loop below. - if !norm.NFC.IsNormalString(s) { - return s, false, &labelError{s, "V1"} - } - for i := 0; i < len(s); { - v, sz := trie.lookupString(s[i:]) - if sz == 0 { - return s, bidi, runeError(utf8.RuneError) - } - bidi = bidi || info(v).isBidi(s[i:]) - // Copy bytes not copied so far. - switch p.simplify(info(v).category()) { - // TODO: handle the NV8 defined in the Unicode idna data set to allow - // for strict conformance to IDNA2008. - case valid, deviation: - case disallowed, mapped, unknown, ignored: - r, _ := utf8.DecodeRuneInString(s[i:]) - return s, bidi, runeError(r) - } - i += sz - } - return s, bidi, nil -} - -func (c info) isBidi(s string) bool { - if !c.isMapped() { - return c&attributesMask == rtl - } - // TODO: also store bidi info for mapped data. This is possible, but a bit - // cumbersome and not for the common case. - p, _ := bidi.LookupString(s) - switch p.Class() { - case bidi.R, bidi.AL, bidi.AN: - return true - } - return false -} - -func validateAndMap(p *Profile, s string) (vm string, bidi bool, err error) { - var ( - b []byte - k int - ) - // combinedInfoBits contains the or-ed bits of all runes. We use this - // to derive the mayNeedNorm bit later. This may trigger normalization - // overeagerly, but it will not do so in the common case. The end result - // is another 10% saving on BenchmarkProfile for the common case. - var combinedInfoBits info - for i := 0; i < len(s); { - v, sz := trie.lookupString(s[i:]) - if sz == 0 { - b = append(b, s[k:i]...) - b = append(b, "\ufffd"...) - k = len(s) - if err == nil { - err = runeError(utf8.RuneError) - } - break - } - combinedInfoBits |= info(v) - bidi = bidi || info(v).isBidi(s[i:]) - start := i - i += sz - // Copy bytes not copied so far. - switch p.simplify(info(v).category()) { - case valid: - continue - case disallowed: - if err == nil { - r, _ := utf8.DecodeRuneInString(s[start:]) - err = runeError(r) - } - continue - case mapped, deviation: - b = append(b, s[k:start]...) - b = info(v).appendMapping(b, s[start:i]) - case ignored: - b = append(b, s[k:start]...) - // drop the rune - case unknown: - b = append(b, s[k:start]...) - b = append(b, "\ufffd"...) - } - k = i - } - if k == 0 { - // No changes so far. - if combinedInfoBits&mayNeedNorm != 0 { - s = norm.NFC.String(s) - } - } else { - b = append(b, s[k:]...) - if norm.NFC.QuickSpan(b) != len(b) { - b = norm.NFC.Bytes(b) - } - // TODO: the punycode converters require strings as input. - s = string(b) - } - return s, bidi, err -} - -// A labelIter allows iterating over domain name labels. -type labelIter struct { - orig string - slice []string - curStart int - curEnd int - i int -} - -func (l *labelIter) reset() { - l.curStart = 0 - l.curEnd = 0 - l.i = 0 -} - -func (l *labelIter) done() bool { - return l.curStart >= len(l.orig) -} - -func (l *labelIter) result() string { - if l.slice != nil { - return strings.Join(l.slice, ".") - } - return l.orig -} - -func (l *labelIter) label() string { - if l.slice != nil { - return l.slice[l.i] - } - p := strings.IndexByte(l.orig[l.curStart:], '.') - l.curEnd = l.curStart + p - if p == -1 { - l.curEnd = len(l.orig) - } - return l.orig[l.curStart:l.curEnd] -} - -// next sets the value to the next label. It skips the last label if it is empty. -func (l *labelIter) next() { - l.i++ - if l.slice != nil { - if l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == "" { - l.curStart = len(l.orig) - } - } else { - l.curStart = l.curEnd + 1 - if l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' { - l.curStart = len(l.orig) - } - } -} - -func (l *labelIter) set(s string) { - if l.slice == nil { - l.slice = strings.Split(l.orig, ".") - } - l.slice[l.i] = s -} - -// acePrefix is the ASCII Compatible Encoding prefix. -const acePrefix = "xn--" - -func (p *Profile) simplify(cat category) category { - switch cat { - case disallowedSTD3Mapped: - if p.useSTD3Rules { - cat = disallowed - } else { - cat = mapped - } - case disallowedSTD3Valid: - if p.useSTD3Rules { - cat = disallowed - } else { - cat = valid - } - case deviation: - if !p.transitional { - cat = valid - } - case validNV8, validXV8: - // TODO: handle V2008 - cat = valid - } - return cat -} - -func validateFromPunycode(p *Profile, s string) error { - if !norm.NFC.IsNormalString(s) { - return &labelError{s, "V1"} - } - // TODO: detect whether string may have to be normalized in the following - // loop. - for i := 0; i < len(s); { - v, sz := trie.lookupString(s[i:]) - if sz == 0 { - return runeError(utf8.RuneError) - } - if c := p.simplify(info(v).category()); c != valid && c != deviation { - return &labelError{s, "V6"} - } - i += sz - } - return nil -} - -const ( - zwnj = "\u200c" - zwj = "\u200d" -) - -type joinState int8 - -const ( - stateStart joinState = iota - stateVirama - stateBefore - stateBeforeVirama - stateAfter - stateFAIL -) - -var joinStates = [][numJoinTypes]joinState{ - stateStart: { - joiningL: stateBefore, - joiningD: stateBefore, - joinZWNJ: stateFAIL, - joinZWJ: stateFAIL, - joinVirama: stateVirama, - }, - stateVirama: { - joiningL: stateBefore, - joiningD: stateBefore, - }, - stateBefore: { - joiningL: stateBefore, - joiningD: stateBefore, - joiningT: stateBefore, - joinZWNJ: stateAfter, - joinZWJ: stateFAIL, - joinVirama: stateBeforeVirama, - }, - stateBeforeVirama: { - joiningL: stateBefore, - joiningD: stateBefore, - joiningT: stateBefore, - }, - stateAfter: { - joiningL: stateFAIL, - joiningD: stateBefore, - joiningT: stateAfter, - joiningR: stateStart, - joinZWNJ: stateFAIL, - joinZWJ: stateFAIL, - joinVirama: stateAfter, // no-op as we can't accept joiners here - }, - stateFAIL: { - 0: stateFAIL, - joiningL: stateFAIL, - joiningD: stateFAIL, - joiningT: stateFAIL, - joiningR: stateFAIL, - joinZWNJ: stateFAIL, - joinZWJ: stateFAIL, - joinVirama: stateFAIL, - }, -} - -// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are -// already implicitly satisfied by the overall implementation. -func (p *Profile) validateLabel(s string) (err error) { - if s == "" { - if p.verifyDNSLength { - return &labelError{s, "A4"} - } - return nil - } - if !p.validateLabels { - return nil - } - trie := p.trie // p.validateLabels is only set if trie is set. - if len(s) > 4 && s[2] == '-' && s[3] == '-' { - return &labelError{s, "V2"} - } - if s[0] == '-' || s[len(s)-1] == '-' { - return &labelError{s, "V3"} - } - // TODO: merge the use of this in the trie. - v, sz := trie.lookupString(s) - x := info(v) - if x.isModifier() { - return &labelError{s, "V5"} - } - // Quickly return in the absence of zero-width (non) joiners. - if strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 { - return nil - } - st := stateStart - for i := 0; ; { - jt := x.joinType() - if s[i:i+sz] == zwj { - jt = joinZWJ - } else if s[i:i+sz] == zwnj { - jt = joinZWNJ - } - st = joinStates[st][jt] - if x.isViramaModifier() { - st = joinStates[st][joinVirama] - } - if i += sz; i == len(s) { - break - } - v, sz = trie.lookupString(s[i:]) - x = info(v) - } - if st == stateFAIL || st == stateAfter { - return &labelError{s, "C"} - } - return nil -} - -func ascii(s string) bool { - for i := 0; i < len(s); i++ { - if s[i] >= utf8.RuneSelf { - return false - } - } - return true -} diff --git a/vendor/golang.org/x/text/internal/export/idna/idna10.0.0_test.go b/vendor/golang.org/x/text/internal/export/idna/idna10.0.0_test.go deleted file mode 100644 index d0390911..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/idna10.0.0_test.go +++ /dev/null @@ -1,140 +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. - -// +build go1.10 - -package idna - -import "testing" - -// TestLabelErrors tests strings returned in case of error. All results should -// be identical to the reference implementation and can be verified at -// http://unicode.org/cldr/utility/idna.jsp. The reference implementation, -// however, seems to not display Bidi and ContextJ errors. -// -// In some cases the behavior of browsers is added as a comment. In all cases, -// whenever a resolve search returns an error here, Chrome will treat the input -// string as a search string (including those for Bidi and Context J errors), -// unless noted otherwise. -func TestLabelErrors(t *testing.T) { - encode := func(s string) string { s, _ = encode(acePrefix, s); return s } - type kind struct { - name string - f func(string) (string, error) - } - punyA := kind{"PunycodeA", punycode.ToASCII} - resolve := kind{"ResolveA", Lookup.ToASCII} - display := kind{"ToUnicode", Display.ToUnicode} - p := New(VerifyDNSLength(true), MapForLookup(), BidiRule()) - lengthU := kind{"CheckLengthU", p.ToUnicode} - lengthA := kind{"CheckLengthA", p.ToASCII} - p = New(MapForLookup(), StrictDomainName(false)) - std3 := kind{"STD3", p.ToASCII} - - testCases := []struct { - kind - input string - want string - wantErr string - }{ - {lengthU, "", "", "A4"}, // From UTS 46 conformance test. - {lengthA, "", "", "A4"}, - - {lengthU, "xn--", "", "A4"}, - {lengthU, "foo.xn--", "foo.", "A4"}, // TODO: is dropping xn-- correct? - {lengthU, "xn--.foo", ".foo", "A4"}, - {lengthU, "foo.xn--.bar", "foo..bar", "A4"}, - - {display, "xn--", "", ""}, - {display, "foo.xn--", "foo.", ""}, // TODO: is dropping xn-- correct? - {display, "xn--.foo", ".foo", ""}, - {display, "foo.xn--.bar", "foo..bar", ""}, - - {lengthA, "a..b", "a..b", "A4"}, - {punyA, ".b", ".b", ""}, - // For backwards compatibility, the Punycode profile does not map runes. - {punyA, "\u3002b", "xn--b-83t", ""}, - {punyA, "..b", "..b", ""}, - - {lengthA, ".b", ".b", "A4"}, - {lengthA, "\u3002b", ".b", "A4"}, - {lengthA, "..b", "..b", "A4"}, - {lengthA, "b..", "b..", ""}, - - // Sharpened Bidi rules for Unicode 10.0.0. Apply for ALL labels in ANY - // of the labels is RTL. - {lengthA, "\ufe05\u3002\u3002\U0002603e\u1ce0", "..xn--t6f5138v", "A4"}, - {lengthA, "FAX\u2a77\U0001d186\u3002\U0001e942\U000e0181\u180c", "", "B6"}, - - {resolve, "a..b", "a..b", ""}, - // Note that leading dots are not stripped. This is to be consistent - // with the Punycode profile as well as the conformance test. - {resolve, ".b", ".b", ""}, - {resolve, "\u3002b", ".b", ""}, - {resolve, "..b", "..b", ""}, - {resolve, "b..", "b..", ""}, - {resolve, "\xed", "", "P1"}, - - // Raw punycode - {punyA, "", "", ""}, - {punyA, "*.foo.com", "*.foo.com", ""}, - {punyA, "Foo.com", "Foo.com", ""}, - - // STD3 rules - {display, "*.foo.com", "*.foo.com", "P1"}, - {std3, "*.foo.com", "*.foo.com", ""}, - - // Don't map U+2490 (DIGIT NINE FULL STOP). This is the behavior of - // Chrome, Safari, and IE. Firefox will first map ⒐ to 9. and return - // lab9.be. - {resolve, "lab⒐be", "xn--labbe-zh9b", "P1"}, // encode("lab⒐be") - {display, "lab⒐be", "lab⒐be", "P1"}, - - {resolve, "plan⒐faß.de", "xn--planfass-c31e.de", "P1"}, // encode("plan⒐fass") + ".de" - {display, "Plan⒐faß.de", "plan⒐faß.de", "P1"}, - - // Chrome 54.0 recognizes the error and treats this input verbatim as a - // search string. - // Safari 10.0 (non-conform spec) decomposes "⒈" and computes the - // punycode on the result using transitional mapping. - // Firefox 49.0.1 goes haywire on this string and prints a bunch of what - // seems to be nested punycode encodings. - {resolve, "日本⒈co.ßßß.de", "xn--co-wuw5954azlb.ssssss.de", "P1"}, - {display, "日本⒈co.ßßß.de", "日本⒈co.ßßß.de", "P1"}, - - {resolve, "a\u200Cb", "ab", ""}, - {display, "a\u200Cb", "a\u200Cb", "C"}, - - {resolve, encode("a\u200Cb"), encode("a\u200Cb"), "C"}, - {display, "a\u200Cb", "a\u200Cb", "C"}, - - {resolve, "grﻋﺮﺑﻲ.de", "xn--gr-gtd9a1b0g.de", "B"}, - { - // Notice how the string gets transformed, even with an error. - // Chrome will use the original string if it finds an error, so not - // the transformed one. - display, - "gr\ufecb\ufeae\ufe91\ufef2.de", - "gr\u0639\u0631\u0628\u064a.de", - "B", - }, - - {resolve, "\u0671.\u03c3\u07dc", "xn--qib.xn--4xa21s", "B"}, // ٱ.σߜ - {display, "\u0671.\u03c3\u07dc", "\u0671.\u03c3\u07dc", "B"}, - - // normalize input - {resolve, "a\u0323\u0322", "xn--jta191l", ""}, // ạ̢ - {display, "a\u0323\u0322", "\u1ea1\u0322", ""}, - - // Non-normalized strings are not normalized when they originate from - // punycode. Despite the error, Chrome, Safari and Firefox will attempt - // to look up the input punycode. - {resolve, encode("a\u0323\u0322") + ".com", "xn--a-tdbc.com", "V1"}, - {display, encode("a\u0323\u0322") + ".com", "a\u0323\u0322.com", "V1"}, - } - - for _, tc := range testCases { - doTest(t, tc.f, tc.name, tc.input, tc.want, tc.wantErr) - } -} diff --git a/vendor/golang.org/x/text/internal/export/idna/idna9.0.0.go b/vendor/golang.org/x/text/internal/export/idna/idna9.0.0.go deleted file mode 100644 index c7d06c88..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/idna9.0.0.go +++ /dev/null @@ -1,681 +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. - -// +build !go1.10 -//go:generate go run gen.go gen_trieval.go gen_common.go - -// Package idna implements IDNA2008 using the compatibility processing -// defined by UTS (Unicode Technical Standard) #46, which defines a standard to -// deal with the transition from IDNA2003. -// -// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC -// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894. -// UTS #46 is defined in http://www.unicode.org/reports/tr46. -// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the -// differences between these two standards. -package idna // import "golang.org/x/text/internal/export/idna" - -import ( - "fmt" - "strings" - "unicode/utf8" - - "golang.org/x/text/secure/bidirule" - "golang.org/x/text/unicode/norm" -) - -// NOTE: Unlike common practice in Go APIs, the functions will return a -// sanitized domain name in case of errors. Browsers sometimes use a partially -// evaluated string as lookup. -// TODO: the current error handling is, in my opinion, the least opinionated. -// Other strategies are also viable, though: -// Option 1) Return an empty string in case of error, but allow the user to -// specify explicitly which errors to ignore. -// Option 2) Return the partially evaluated string if it is itself a valid -// string, otherwise return the empty string in case of error. -// Option 3) Option 1 and 2. -// Option 4) Always return an empty string for now and implement Option 1 as -// needed, and document that the return string may not be empty in case of -// error in the future. -// I think Option 1 is best, but it is quite opinionated. - -// ToASCII is a wrapper for Punycode.ToASCII. -func ToASCII(s string) (string, error) { - return Punycode.process(s, true) -} - -// ToUnicode is a wrapper for Punycode.ToUnicode. -func ToUnicode(s string) (string, error) { - return Punycode.process(s, false) -} - -// An Option configures a Profile at creation time. -type Option func(*options) - -// Transitional sets a Profile to use the Transitional mapping as defined in UTS -// #46. This will cause, for example, "ß" to be mapped to "ss". Using the -// transitional mapping provides a compromise between IDNA2003 and IDNA2008 -// compatibility. It is used by most browsers when resolving domain names. This -// option is only meaningful if combined with MapForLookup. -func Transitional(transitional bool) Option { - return func(o *options) { o.transitional = true } -} - -// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts -// are longer than allowed by the RFC. -func VerifyDNSLength(verify bool) Option { - return func(o *options) { o.verifyDNSLength = verify } -} - -// RemoveLeadingDots removes leading label separators. Leading runes that map to -// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. -// -// This is the behavior suggested by the UTS #46 and is adopted by some -// browsers. -func RemoveLeadingDots(remove bool) Option { - return func(o *options) { o.removeLeadingDots = remove } -} - -// ValidateLabels sets whether to check the mandatory label validation criteria -// as defined in Section 5.4 of RFC 5891. This includes testing for correct use -// of hyphens ('-'), normalization, validity of runes, and the context rules. -func ValidateLabels(enable bool) Option { - return func(o *options) { - // Don't override existing mappings, but set one that at least checks - // normalization if it is not set. - if o.mapping == nil && enable { - o.mapping = normalize - } - o.trie = trie - o.validateLabels = enable - o.fromPuny = validateFromPunycode - } -} - -// StrictDomainName limits the set of permissable ASCII characters to those -// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the -// hyphen). This is set by default for MapForLookup and ValidateForRegistration. -// -// This option is useful, for instance, for browsers that allow characters -// outside this range, for example a '_' (U+005F LOW LINE). See -// http://www.rfc-editor.org/std/std3.txt for more details This option -// corresponds to the UseSTD3ASCIIRules option in UTS #46. -func StrictDomainName(use bool) Option { - return func(o *options) { - o.trie = trie - o.useSTD3Rules = use - o.fromPuny = validateFromPunycode - } -} - -// NOTE: the following options pull in tables. The tables should not be linked -// in as long as the options are not used. - -// BidiRule enables the Bidi rule as defined in RFC 5893. Any application -// that relies on proper validation of labels should include this rule. -func BidiRule() Option { - return func(o *options) { o.bidirule = bidirule.ValidString } -} - -// ValidateForRegistration sets validation options to verify that a given IDN is -// properly formatted for registration as defined by Section 4 of RFC 5891. -func ValidateForRegistration() Option { - return func(o *options) { - o.mapping = validateRegistration - StrictDomainName(true)(o) - ValidateLabels(true)(o) - VerifyDNSLength(true)(o) - BidiRule()(o) - } -} - -// MapForLookup sets validation and mapping options such that a given IDN is -// transformed for domain name lookup according to the requirements set out in -// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894, -// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option -// to add this check. -// -// The mappings include normalization and mapping case, width and other -// compatibility mappings. -func MapForLookup() Option { - return func(o *options) { - o.mapping = validateAndMap - StrictDomainName(true)(o) - ValidateLabels(true)(o) - RemoveLeadingDots(true)(o) - } -} - -type options struct { - transitional bool - useSTD3Rules bool - validateLabels bool - verifyDNSLength bool - removeLeadingDots bool - - trie *idnaTrie - - // fromPuny calls validation rules when converting A-labels to U-labels. - fromPuny func(p *Profile, s string) error - - // mapping implements a validation and mapping step as defined in RFC 5895 - // or UTS 46, tailored to, for example, domain registration or lookup. - mapping func(p *Profile, s string) (string, error) - - // bidirule, if specified, checks whether s conforms to the Bidi Rule - // defined in RFC 5893. - bidirule func(s string) bool -} - -// A Profile defines the configuration of a IDNA mapper. -type Profile struct { - options -} - -func apply(o *options, opts []Option) { - for _, f := range opts { - f(o) - } -} - -// New creates a new Profile. -// -// With no options, the returned Profile is the most permissive and equals the -// Punycode Profile. Options can be passed to further restrict the Profile. The -// MapForLookup and ValidateForRegistration options set a collection of options, -// for lookup and registration purposes respectively, which can be tailored by -// adding more fine-grained options, where later options override earlier -// options. -func New(o ...Option) *Profile { - p := &Profile{} - apply(&p.options, o) - return p -} - -// ToASCII converts a domain or domain label to its ASCII form. For example, -// ToASCII("bücher.example.com") is "xn--bcher-kva.example.com", and -// ToASCII("golang") is "golang". If an error is encountered it will return -// an error and a (partially) processed result. -func (p *Profile) ToASCII(s string) (string, error) { - return p.process(s, true) -} - -// ToUnicode converts a domain or domain label to its Unicode form. For example, -// ToUnicode("xn--bcher-kva.example.com") is "bücher.example.com", and -// ToUnicode("golang") is "golang". If an error is encountered it will return -// an error and a (partially) processed result. -func (p *Profile) ToUnicode(s string) (string, error) { - pp := *p - pp.transitional = false - return pp.process(s, false) -} - -// String reports a string with a description of the profile for debugging -// purposes. The string format may change with different versions. -func (p *Profile) String() string { - s := "" - if p.transitional { - s = "Transitional" - } else { - s = "NonTransitional" - } - if p.useSTD3Rules { - s += ":UseSTD3Rules" - } - if p.validateLabels { - s += ":ValidateLabels" - } - if p.verifyDNSLength { - s += ":VerifyDNSLength" - } - return s -} - -var ( - // Punycode is a Profile that does raw punycode processing with a minimum - // of validation. - Punycode *Profile = punycode - - // Lookup is the recommended profile for looking up domain names, according - // to Section 5 of RFC 5891. The exact configuration of this profile may - // change over time. - Lookup *Profile = lookup - - // Display is the recommended profile for displaying domain names. - // The configuration of this profile may change over time. - Display *Profile = display - - // Registration is the recommended profile for checking whether a given - // IDN is valid for registration, according to Section 4 of RFC 5891. - Registration *Profile = registration - - punycode = &Profile{} - lookup = &Profile{options{ - transitional: true, - useSTD3Rules: true, - validateLabels: true, - removeLeadingDots: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, - }} - display = &Profile{options{ - useSTD3Rules: true, - validateLabels: true, - removeLeadingDots: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, - }} - registration = &Profile{options{ - useSTD3Rules: true, - validateLabels: true, - verifyDNSLength: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateRegistration, - bidirule: bidirule.ValidString, - }} - - // TODO: profiles - // Register: recommended for approving domain names: don't do any mappings - // but rather reject on invalid input. Bundle or block deviation characters. -) - -type labelError struct{ label, code_ string } - -func (e labelError) code() string { return e.code_ } -func (e labelError) Error() string { - return fmt.Sprintf("idna: invalid label %q", e.label) -} - -type runeError rune - -func (e runeError) code() string { return "P1" } -func (e runeError) Error() string { - return fmt.Sprintf("idna: disallowed rune %U", e) -} - -// process implements the algorithm described in section 4 of UTS #46, -// see http://www.unicode.org/reports/tr46. -func (p *Profile) process(s string, toASCII bool) (string, error) { - var err error - if p.mapping != nil { - s, err = p.mapping(p, s) - } - // Remove leading empty labels. - if p.removeLeadingDots { - for ; len(s) > 0 && s[0] == '.'; s = s[1:] { - } - } - // It seems like we should only create this error on ToASCII, but the - // UTS 46 conformance tests suggests we should always check this. - if err == nil && p.verifyDNSLength && s == "" { - err = &labelError{s, "A4"} - } - labels := labelIter{orig: s} - for ; !labels.done(); labels.next() { - label := labels.label() - if label == "" { - // Empty labels are not okay. The label iterator skips the last - // label if it is empty. - if err == nil && p.verifyDNSLength { - err = &labelError{s, "A4"} - } - continue - } - if strings.HasPrefix(label, acePrefix) { - u, err2 := decode(label[len(acePrefix):]) - if err2 != nil { - if err == nil { - err = err2 - } - // Spec says keep the old label. - continue - } - labels.set(u) - if err == nil && p.validateLabels { - err = p.fromPuny(p, u) - } - if err == nil { - // This should be called on NonTransitional, according to the - // spec, but that currently does not have any effect. Use the - // original profile to preserve options. - err = p.validateLabel(u) - } - } else if err == nil { - err = p.validateLabel(label) - } - } - if toASCII { - for labels.reset(); !labels.done(); labels.next() { - label := labels.label() - if !ascii(label) { - a, err2 := encode(acePrefix, label) - if err == nil { - err = err2 - } - label = a - labels.set(a) - } - n := len(label) - if p.verifyDNSLength && err == nil && (n == 0 || n > 63) { - err = &labelError{label, "A4"} - } - } - } - s = labels.result() - if toASCII && p.verifyDNSLength && err == nil { - // Compute the length of the domain name minus the root label and its dot. - n := len(s) - if n > 0 && s[n-1] == '.' { - n-- - } - if len(s) < 1 || n > 253 { - err = &labelError{s, "A4"} - } - } - return s, err -} - -func normalize(p *Profile, s string) (string, error) { - return norm.NFC.String(s), nil -} - -func validateRegistration(p *Profile, s string) (string, error) { - if !norm.NFC.IsNormalString(s) { - return s, &labelError{s, "V1"} - } - for i := 0; i < len(s); { - v, sz := trie.lookupString(s[i:]) - // Copy bytes not copied so far. - switch p.simplify(info(v).category()) { - // TODO: handle the NV8 defined in the Unicode idna data set to allow - // for strict conformance to IDNA2008. - case valid, deviation: - case disallowed, mapped, unknown, ignored: - r, _ := utf8.DecodeRuneInString(s[i:]) - return s, runeError(r) - } - i += sz - } - return s, nil -} - -func validateAndMap(p *Profile, s string) (string, error) { - var ( - err error - b []byte - k int - ) - for i := 0; i < len(s); { - v, sz := trie.lookupString(s[i:]) - start := i - i += sz - // Copy bytes not copied so far. - switch p.simplify(info(v).category()) { - case valid: - continue - case disallowed: - if err == nil { - r, _ := utf8.DecodeRuneInString(s[start:]) - err = runeError(r) - } - continue - case mapped, deviation: - b = append(b, s[k:start]...) - b = info(v).appendMapping(b, s[start:i]) - case ignored: - b = append(b, s[k:start]...) - // drop the rune - case unknown: - b = append(b, s[k:start]...) - b = append(b, "\ufffd"...) - } - k = i - } - if k == 0 { - // No changes so far. - s = norm.NFC.String(s) - } else { - b = append(b, s[k:]...) - if norm.NFC.QuickSpan(b) != len(b) { - b = norm.NFC.Bytes(b) - } - // TODO: the punycode converters require strings as input. - s = string(b) - } - return s, err -} - -// A labelIter allows iterating over domain name labels. -type labelIter struct { - orig string - slice []string - curStart int - curEnd int - i int -} - -func (l *labelIter) reset() { - l.curStart = 0 - l.curEnd = 0 - l.i = 0 -} - -func (l *labelIter) done() bool { - return l.curStart >= len(l.orig) -} - -func (l *labelIter) result() string { - if l.slice != nil { - return strings.Join(l.slice, ".") - } - return l.orig -} - -func (l *labelIter) label() string { - if l.slice != nil { - return l.slice[l.i] - } - p := strings.IndexByte(l.orig[l.curStart:], '.') - l.curEnd = l.curStart + p - if p == -1 { - l.curEnd = len(l.orig) - } - return l.orig[l.curStart:l.curEnd] -} - -// next sets the value to the next label. It skips the last label if it is empty. -func (l *labelIter) next() { - l.i++ - if l.slice != nil { - if l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == "" { - l.curStart = len(l.orig) - } - } else { - l.curStart = l.curEnd + 1 - if l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' { - l.curStart = len(l.orig) - } - } -} - -func (l *labelIter) set(s string) { - if l.slice == nil { - l.slice = strings.Split(l.orig, ".") - } - l.slice[l.i] = s -} - -// acePrefix is the ASCII Compatible Encoding prefix. -const acePrefix = "xn--" - -func (p *Profile) simplify(cat category) category { - switch cat { - case disallowedSTD3Mapped: - if p.useSTD3Rules { - cat = disallowed - } else { - cat = mapped - } - case disallowedSTD3Valid: - if p.useSTD3Rules { - cat = disallowed - } else { - cat = valid - } - case deviation: - if !p.transitional { - cat = valid - } - case validNV8, validXV8: - // TODO: handle V2008 - cat = valid - } - return cat -} - -func validateFromPunycode(p *Profile, s string) error { - if !norm.NFC.IsNormalString(s) { - return &labelError{s, "V1"} - } - for i := 0; i < len(s); { - v, sz := trie.lookupString(s[i:]) - if c := p.simplify(info(v).category()); c != valid && c != deviation { - return &labelError{s, "V6"} - } - i += sz - } - return nil -} - -const ( - zwnj = "\u200c" - zwj = "\u200d" -) - -type joinState int8 - -const ( - stateStart joinState = iota - stateVirama - stateBefore - stateBeforeVirama - stateAfter - stateFAIL -) - -var joinStates = [][numJoinTypes]joinState{ - stateStart: { - joiningL: stateBefore, - joiningD: stateBefore, - joinZWNJ: stateFAIL, - joinZWJ: stateFAIL, - joinVirama: stateVirama, - }, - stateVirama: { - joiningL: stateBefore, - joiningD: stateBefore, - }, - stateBefore: { - joiningL: stateBefore, - joiningD: stateBefore, - joiningT: stateBefore, - joinZWNJ: stateAfter, - joinZWJ: stateFAIL, - joinVirama: stateBeforeVirama, - }, - stateBeforeVirama: { - joiningL: stateBefore, - joiningD: stateBefore, - joiningT: stateBefore, - }, - stateAfter: { - joiningL: stateFAIL, - joiningD: stateBefore, - joiningT: stateAfter, - joiningR: stateStart, - joinZWNJ: stateFAIL, - joinZWJ: stateFAIL, - joinVirama: stateAfter, // no-op as we can't accept joiners here - }, - stateFAIL: { - 0: stateFAIL, - joiningL: stateFAIL, - joiningD: stateFAIL, - joiningT: stateFAIL, - joiningR: stateFAIL, - joinZWNJ: stateFAIL, - joinZWJ: stateFAIL, - joinVirama: stateFAIL, - }, -} - -// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are -// already implicitly satisfied by the overall implementation. -func (p *Profile) validateLabel(s string) error { - if s == "" { - if p.verifyDNSLength { - return &labelError{s, "A4"} - } - return nil - } - if p.bidirule != nil && !p.bidirule(s) { - return &labelError{s, "B"} - } - if !p.validateLabels { - return nil - } - trie := p.trie // p.validateLabels is only set if trie is set. - if len(s) > 4 && s[2] == '-' && s[3] == '-' { - return &labelError{s, "V2"} - } - if s[0] == '-' || s[len(s)-1] == '-' { - return &labelError{s, "V3"} - } - // TODO: merge the use of this in the trie. - v, sz := trie.lookupString(s) - x := info(v) - if x.isModifier() { - return &labelError{s, "V5"} - } - // Quickly return in the absence of zero-width (non) joiners. - if strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 { - return nil - } - st := stateStart - for i := 0; ; { - jt := x.joinType() - if s[i:i+sz] == zwj { - jt = joinZWJ - } else if s[i:i+sz] == zwnj { - jt = joinZWNJ - } - st = joinStates[st][jt] - if x.isViramaModifier() { - st = joinStates[st][joinVirama] - } - if i += sz; i == len(s) { - break - } - v, sz = trie.lookupString(s[i:]) - x = info(v) - } - if st == stateFAIL || st == stateAfter { - return &labelError{s, "C"} - } - return nil -} - -func ascii(s string) bool { - for i := 0; i < len(s); i++ { - if s[i] >= utf8.RuneSelf { - return false - } - } - return true -} diff --git a/vendor/golang.org/x/text/internal/export/idna/idna9.0.0_test.go b/vendor/golang.org/x/text/internal/export/idna/idna9.0.0_test.go deleted file mode 100644 index d60394c2..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/idna9.0.0_test.go +++ /dev/null @@ -1,136 +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. - -// +build !go1.10 - -package idna - -import "testing" - -// TestLabelErrors tests strings returned in case of error. All results should -// be identical to the reference implementation and can be verified at -// http://unicode.org/cldr/utility/idna.jsp. The reference implementation, -// however, seems to not display Bidi and ContextJ errors. -// -// In some cases the behavior of browsers is added as a comment. In all cases, -// whenever a resolve search returns an error here, Chrome will treat the input -// string as a search string (including those for Bidi and Context J errors), -// unless noted otherwise. -func TestLabelErrors(t *testing.T) { - encode := func(s string) string { s, _ = encode(acePrefix, s); return s } - type kind struct { - name string - f func(string) (string, error) - } - punyA := kind{"PunycodeA", punycode.ToASCII} - resolve := kind{"ResolveA", Lookup.ToASCII} - display := kind{"ToUnicode", Display.ToUnicode} - p := New(VerifyDNSLength(true), MapForLookup(), BidiRule()) - lengthU := kind{"CheckLengthU", p.ToUnicode} - lengthA := kind{"CheckLengthA", p.ToASCII} - p = New(MapForLookup(), StrictDomainName(false)) - std3 := kind{"STD3", p.ToASCII} - - testCases := []struct { - kind - input string - want string - wantErr string - }{ - {lengthU, "", "", "A4"}, // From UTS 46 conformance test. - {lengthA, "", "", "A4"}, - - {lengthU, "xn--", "", "A4"}, - {lengthU, "foo.xn--", "foo.", "A4"}, // TODO: is dropping xn-- correct? - {lengthU, "xn--.foo", ".foo", "A4"}, - {lengthU, "foo.xn--.bar", "foo..bar", "A4"}, - - {display, "xn--", "", ""}, - {display, "foo.xn--", "foo.", ""}, // TODO: is dropping xn-- correct? - {display, "xn--.foo", ".foo", ""}, - {display, "foo.xn--.bar", "foo..bar", ""}, - - {lengthA, "a..b", "a..b", "A4"}, - {punyA, ".b", ".b", ""}, - // For backwards compatibility, the Punycode profile does not map runes. - {punyA, "\u3002b", "xn--b-83t", ""}, - {punyA, "..b", "..b", ""}, - // Only strip leading empty labels for certain profiles. Stripping - // leading empty labels here but not for "empty" punycode above seems - // inconsistent, but seems to be applied by both the conformance test - // and Chrome. So we turn it off by default, support it as an option, - // and enable it in profiles where it seems commonplace. - {lengthA, ".b", "b", ""}, - {lengthA, "\u3002b", "b", ""}, - {lengthA, "..b", "b", ""}, - {lengthA, "b..", "b..", ""}, - - {resolve, "a..b", "a..b", ""}, - {resolve, ".b", "b", ""}, - {resolve, "\u3002b", "b", ""}, - {resolve, "..b", "b", ""}, - {resolve, "b..", "b..", ""}, - - // Raw punycode - {punyA, "", "", ""}, - {punyA, "*.foo.com", "*.foo.com", ""}, - {punyA, "Foo.com", "Foo.com", ""}, - - // STD3 rules - {display, "*.foo.com", "*.foo.com", "P1"}, - {std3, "*.foo.com", "*.foo.com", ""}, - - // Don't map U+2490 (DIGIT NINE FULL STOP). This is the behavior of - // Chrome, Safari, and IE. Firefox will first map ⒐ to 9. and return - // lab9.be. - {resolve, "lab⒐be", "xn--labbe-zh9b", "P1"}, // encode("lab⒐be") - {display, "lab⒐be", "lab⒐be", "P1"}, - - {resolve, "plan⒐faß.de", "xn--planfass-c31e.de", "P1"}, // encode("plan⒐fass") + ".de" - {display, "Plan⒐faß.de", "plan⒐faß.de", "P1"}, - - // Chrome 54.0 recognizes the error and treats this input verbatim as a - // search string. - // Safari 10.0 (non-conform spec) decomposes "⒈" and computes the - // punycode on the result using transitional mapping. - // Firefox 49.0.1 goes haywire on this string and prints a bunch of what - // seems to be nested punycode encodings. - {resolve, "日本⒈co.ßßß.de", "xn--co-wuw5954azlb.ssssss.de", "P1"}, - {display, "日本⒈co.ßßß.de", "日本⒈co.ßßß.de", "P1"}, - - {resolve, "a\u200Cb", "ab", ""}, - {display, "a\u200Cb", "a\u200Cb", "C"}, - - {resolve, encode("a\u200Cb"), encode("a\u200Cb"), "C"}, - {display, "a\u200Cb", "a\u200Cb", "C"}, - - {resolve, "grﻋﺮﺑﻲ.de", "xn--gr-gtd9a1b0g.de", "B"}, - { - // Notice how the string gets transformed, even with an error. - // Chrome will use the original string if it finds an error, so not - // the transformed one. - display, - "gr\ufecb\ufeae\ufe91\ufef2.de", - "gr\u0639\u0631\u0628\u064a.de", - "B", - }, - - {resolve, "\u0671.\u03c3\u07dc", "xn--qib.xn--4xa21s", "B"}, // ٱ.σߜ - {display, "\u0671.\u03c3\u07dc", "\u0671.\u03c3\u07dc", "B"}, - - // normalize input - {resolve, "a\u0323\u0322", "xn--jta191l", ""}, // ạ̢ - {display, "a\u0323\u0322", "\u1ea1\u0322", ""}, - - // Non-normalized strings are not normalized when they originate from - // punycode. Despite the error, Chrome, Safari and Firefox will attempt - // to look up the input punycode. - {resolve, encode("a\u0323\u0322") + ".com", "xn--a-tdbc.com", "V1"}, - {display, encode("a\u0323\u0322") + ".com", "a\u0323\u0322.com", "V1"}, - } - - for _, tc := range testCases { - doTest(t, tc.f, tc.name, tc.input, tc.want, tc.wantErr) - } -} diff --git a/vendor/golang.org/x/text/internal/export/idna/idna_test.go b/vendor/golang.org/x/text/internal/export/idna/idna_test.go deleted file mode 100644 index f9dadc03..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/idna_test.go +++ /dev/null @@ -1,178 +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 idna - -import ( - "fmt" - "strconv" - "strings" - "testing" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/internal/ucd" -) - -func TestAllocToUnicode(t *testing.T) { - avg := testtext.AllocsPerRun(1000, func() { - ToUnicode("www.golang.org") - }) - if avg > 0 { - t.Errorf("got %f; want 0", avg) - } -} - -func TestAllocToASCII(t *testing.T) { - avg := testtext.AllocsPerRun(1000, func() { - ToASCII("www.golang.org") - }) - if avg > 0 { - t.Errorf("got %f; want 0", avg) - } -} - -func TestProfiles(t *testing.T) { - testCases := []struct { - name string - want, got *Profile - }{ - {"Punycode", punycode, New()}, - {"Registration", registration, New(ValidateForRegistration())}, - {"Registration", registration, New( - ValidateForRegistration(), - VerifyDNSLength(true), - BidiRule(), - )}, - {"Lookup", lookup, New(MapForLookup(), BidiRule(), Transitional(true))}, - {"Display", display, New(MapForLookup(), BidiRule())}, - } - for _, tc := range testCases { - // Functions are not comparable, but the printed version will include - // their pointers. - got := fmt.Sprintf("%#v", tc.got) - want := fmt.Sprintf("%#v", tc.want) - if got != want { - t.Errorf("%s: \ngot %#v,\nwant %#v", tc.name, got, want) - } - } -} - -// doTest performs a single test f(input) and verifies that the output matches -// out and that the returned error is expected. The errors string contains -// all allowed error codes as categorized in -// http://www.unicode.org/Public/idna/9.0.0/IdnaTest.txt: -// P: Processing -// V: Validity -// A: to ASCII -// B: Bidi -// C: Context J -func doTest(t *testing.T, f func(string) (string, error), name, input, want, errors string) { - errors = strings.Trim(errors, "[]") - test := "ok" - if errors != "" { - test = "err:" + errors - } - // Replace some of the escape sequences to make it easier to single out - // tests on the command name. - in := strings.Trim(strconv.QuoteToASCII(input), `"`) - in = strings.Replace(in, `\u`, "#", -1) - in = strings.Replace(in, `\U`, "#", -1) - name = fmt.Sprintf("%s/%s/%s", name, in, test) - - testtext.Run(t, name, func(t *testing.T) { - got, err := f(input) - - if err != nil { - code := err.(interface { - code() string - }).code() - if strings.Index(errors, code) == -1 { - t.Errorf("error %q not in set of expected errors {%v}", code, errors) - } - } else if errors != "" { - t.Errorf("no errors; want error in {%v}", errors) - } - - if want != "" && got != want { - t.Errorf(`string: got %+q; want %+q`, got, want) - } - }) -} - -func TestConformance(t *testing.T) { - testtext.SkipIfNotLong(t) - - r := gen.OpenUnicodeFile("idna", "", "IdnaTest.txt") - defer r.Close() - - section := "main" - started := false - p := ucd.New(r, ucd.CommentHandler(func(s string) { - if started { - section = strings.ToLower(strings.Split(s, " ")[0]) - } - })) - transitional := New(Transitional(true), VerifyDNSLength(true), BidiRule(), MapForLookup()) - nonTransitional := New(VerifyDNSLength(true), BidiRule(), MapForLookup()) - for p.Next() { - started = true - - // What to test - profiles := []*Profile{} - switch p.String(0) { - case "T": - profiles = append(profiles, transitional) - case "N": - profiles = append(profiles, nonTransitional) - case "B": - profiles = append(profiles, transitional) - profiles = append(profiles, nonTransitional) - } - - src := unescape(p.String(1)) - - wantToUnicode := unescape(p.String(2)) - if wantToUnicode == "" { - wantToUnicode = src - } - wantToASCII := unescape(p.String(3)) - if wantToASCII == "" { - wantToASCII = wantToUnicode - } - wantErrToUnicode := "" - if strings.HasPrefix(wantToUnicode, "[") { - wantErrToUnicode = wantToUnicode - wantToUnicode = "" - } - wantErrToASCII := "" - if strings.HasPrefix(wantToASCII, "[") { - wantErrToASCII = wantToASCII - wantToASCII = "" - } - - // TODO: also do IDNA tests. - // invalidInIDNA2008 := p.String(4) == "NV8" - - for _, p := range profiles { - name := fmt.Sprintf("%s:%s", section, p) - doTest(t, p.ToUnicode, name+":ToUnicode", src, wantToUnicode, wantErrToUnicode) - doTest(t, p.ToASCII, name+":ToASCII", src, wantToASCII, wantErrToASCII) - } - } -} - -func unescape(s string) string { - s, err := strconv.Unquote(`"` + s + `"`) - if err != nil { - panic(err) - } - return s -} - -func BenchmarkProfile(b *testing.B) { - for i := 0; i < b.N; i++ { - Lookup.ToASCII("www.yahoogle.com") - } -} diff --git a/vendor/golang.org/x/text/internal/export/idna/punycode.go b/vendor/golang.org/x/text/internal/export/idna/punycode.go deleted file mode 100644 index f0cbd487..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/punycode.go +++ /dev/null @@ -1,201 +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 idna - -// This file implements the Punycode algorithm from RFC 3492. - -import ( - "math" - "strings" - "unicode/utf8" -) - -// These parameter values are specified in section 5. -// -// All computation is done with int32s, so that overflow behavior is identical -// regardless of whether int is 32-bit or 64-bit. -const ( - base int32 = 36 - damp int32 = 700 - initialBias int32 = 72 - initialN int32 = 128 - skew int32 = 38 - tmax int32 = 26 - tmin int32 = 1 -) - -func punyError(s string) error { return &labelError{s, "A3"} } - -// decode decodes a string as specified in section 6.2. -func decode(encoded string) (string, error) { - if encoded == "" { - return "", nil - } - pos := 1 + strings.LastIndex(encoded, "-") - if pos == 1 { - return "", punyError(encoded) - } - if pos == len(encoded) { - return encoded[:len(encoded)-1], nil - } - output := make([]rune, 0, len(encoded)) - if pos != 0 { - for _, r := range encoded[:pos-1] { - output = append(output, r) - } - } - i, n, bias := int32(0), initialN, initialBias - for pos < len(encoded) { - oldI, w := i, int32(1) - for k := base; ; k += base { - if pos == len(encoded) { - return "", punyError(encoded) - } - digit, ok := decodeDigit(encoded[pos]) - if !ok { - return "", punyError(encoded) - } - pos++ - i += digit * w - if i < 0 { - return "", punyError(encoded) - } - t := k - bias - if t < tmin { - t = tmin - } else if t > tmax { - t = tmax - } - if digit < t { - break - } - w *= base - t - if w >= math.MaxInt32/base { - return "", punyError(encoded) - } - } - x := int32(len(output) + 1) - bias = adapt(i-oldI, x, oldI == 0) - n += i / x - i %= x - if n > utf8.MaxRune || len(output) >= 1024 { - return "", punyError(encoded) - } - output = append(output, 0) - copy(output[i+1:], output[i:]) - output[i] = n - i++ - } - return string(output), nil -} - -// encode encodes a string as specified in section 6.3 and prepends prefix to -// the result. -// -// The "while h < length(input)" line in the specification becomes "for -// remaining != 0" in the Go code, because len(s) in Go is in bytes, not runes. -func encode(prefix, s string) (string, error) { - output := make([]byte, len(prefix), len(prefix)+1+2*len(s)) - copy(output, prefix) - delta, n, bias := int32(0), initialN, initialBias - b, remaining := int32(0), int32(0) - for _, r := range s { - if r < 0x80 { - b++ - output = append(output, byte(r)) - } else { - remaining++ - } - } - h := b - if b > 0 { - output = append(output, '-') - } - for remaining != 0 { - m := int32(0x7fffffff) - for _, r := range s { - if m > r && r >= n { - m = r - } - } - delta += (m - n) * (h + 1) - if delta < 0 { - return "", punyError(s) - } - n = m - for _, r := range s { - if r < n { - delta++ - if delta < 0 { - return "", punyError(s) - } - continue - } - if r > n { - continue - } - q := delta - for k := base; ; k += base { - t := k - bias - if t < tmin { - t = tmin - } else if t > tmax { - t = tmax - } - if q < t { - break - } - output = append(output, encodeDigit(t+(q-t)%(base-t))) - q = (q - t) / (base - t) - } - output = append(output, encodeDigit(q)) - bias = adapt(delta, h+1, h == b) - delta = 0 - h++ - remaining-- - } - delta++ - n++ - } - return string(output), nil -} - -func decodeDigit(x byte) (digit int32, ok bool) { - switch { - case '0' <= x && x <= '9': - return int32(x - ('0' - 26)), true - case 'A' <= x && x <= 'Z': - return int32(x - 'A'), true - case 'a' <= x && x <= 'z': - return int32(x - 'a'), true - } - return 0, false -} - -func encodeDigit(digit int32) byte { - switch { - case 0 <= digit && digit < 26: - return byte(digit + 'a') - case 26 <= digit && digit < 36: - return byte(digit + ('0' - 26)) - } - panic("idna: internal error in punycode encoding") -} - -// adapt is the bias adaptation function specified in section 6.1. -func adapt(delta, numPoints int32, firstTime bool) int32 { - if firstTime { - delta /= damp - } else { - delta /= 2 - } - delta += delta / numPoints - k := int32(0) - for delta > ((base-tmin)*tmax)/2 { - delta /= base - tmin - k += base - } - return k + (base-tmin+1)*delta/(delta+skew) -} diff --git a/vendor/golang.org/x/text/internal/export/idna/punycode_test.go b/vendor/golang.org/x/text/internal/export/idna/punycode_test.go deleted file mode 100644 index 2d99239e..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/punycode_test.go +++ /dev/null @@ -1,198 +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 idna - -import ( - "strings" - "testing" -) - -var punycodeTestCases = [...]struct { - s, encoded string -}{ - {"", ""}, - {"-", "--"}, - {"-a", "-a-"}, - {"-a-", "-a--"}, - {"a", "a-"}, - {"a-", "a--"}, - {"a-b", "a-b-"}, - {"books", "books-"}, - {"bücher", "bcher-kva"}, - {"Hello世界", "Hello-ck1hg65u"}, - {"ü", "tda"}, - {"üý", "tdac"}, - - // The test cases below come from RFC 3492 section 7.1 with Errata 3026. - { - // (A) Arabic (Egyptian). - "\u0644\u064A\u0647\u0645\u0627\u0628\u062A\u0643\u0644" + - "\u0645\u0648\u0634\u0639\u0631\u0628\u064A\u061F", - "egbpdaj6bu4bxfgehfvwxn", - }, - { - // (B) Chinese (simplified). - "\u4ED6\u4EEC\u4E3A\u4EC0\u4E48\u4E0D\u8BF4\u4E2D\u6587", - "ihqwcrb4cv8a8dqg056pqjye", - }, - { - // (C) Chinese (traditional). - "\u4ED6\u5011\u7232\u4EC0\u9EBD\u4E0D\u8AAA\u4E2D\u6587", - "ihqwctvzc91f659drss3x8bo0yb", - }, - { - // (D) Czech. - "\u0050\u0072\u006F\u010D\u0070\u0072\u006F\u0073\u0074" + - "\u011B\u006E\u0065\u006D\u006C\u0075\u0076\u00ED\u010D" + - "\u0065\u0073\u006B\u0079", - "Proprostnemluvesky-uyb24dma41a", - }, - { - // (E) Hebrew. - "\u05DC\u05DE\u05D4\u05D4\u05DD\u05E4\u05E9\u05D5\u05D8" + - "\u05DC\u05D0\u05DE\u05D3\u05D1\u05E8\u05D9\u05DD\u05E2" + - "\u05D1\u05E8\u05D9\u05EA", - "4dbcagdahymbxekheh6e0a7fei0b", - }, - { - // (F) Hindi (Devanagari). - "\u092F\u0939\u0932\u094B\u0917\u0939\u093F\u0928\u094D" + - "\u0926\u0940\u0915\u094D\u092F\u094B\u0902\u0928\u0939" + - "\u0940\u0902\u092C\u094B\u0932\u0938\u0915\u0924\u0947" + - "\u0939\u0948\u0902", - "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd", - }, - { - // (G) Japanese (kanji and hiragana). - "\u306A\u305C\u307F\u3093\u306A\u65E5\u672C\u8A9E\u3092" + - "\u8A71\u3057\u3066\u304F\u308C\u306A\u3044\u306E\u304B", - "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa", - }, - { - // (H) Korean (Hangul syllables). - "\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774" + - "\uD55C\uAD6D\uC5B4\uB97C\uC774\uD574\uD55C\uB2E4\uBA74" + - "\uC5BC\uB9C8\uB098\uC88B\uC744\uAE4C", - "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5j" + - "psd879ccm6fea98c", - }, - { - // (I) Russian (Cyrillic). - "\u043F\u043E\u0447\u0435\u043C\u0443\u0436\u0435\u043E" + - "\u043D\u0438\u043D\u0435\u0433\u043E\u0432\u043E\u0440" + - "\u044F\u0442\u043F\u043E\u0440\u0443\u0441\u0441\u043A" + - "\u0438", - "b1abfaaepdrnnbgefbadotcwatmq2g4l", - }, - { - // (J) Spanish. - "\u0050\u006F\u0072\u0071\u0075\u00E9\u006E\u006F\u0070" + - "\u0075\u0065\u0064\u0065\u006E\u0073\u0069\u006D\u0070" + - "\u006C\u0065\u006D\u0065\u006E\u0074\u0065\u0068\u0061" + - "\u0062\u006C\u0061\u0072\u0065\u006E\u0045\u0073\u0070" + - "\u0061\u00F1\u006F\u006C", - "PorqunopuedensimplementehablarenEspaol-fmd56a", - }, - { - // (K) Vietnamese. - "\u0054\u1EA1\u0069\u0073\u0061\u006F\u0068\u1ECD\u006B" + - "\u0068\u00F4\u006E\u0067\u0074\u0068\u1EC3\u0063\u0068" + - "\u1EC9\u006E\u00F3\u0069\u0074\u0069\u1EBF\u006E\u0067" + - "\u0056\u0069\u1EC7\u0074", - "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g", - }, - { - // (L) 3<nen>B<gumi><kinpachi><sensei>. - "\u0033\u5E74\u0042\u7D44\u91D1\u516B\u5148\u751F", - "3B-ww4c5e180e575a65lsy2b", - }, - { - // (M) <amuro><namie>-with-SUPER-MONKEYS. - "\u5B89\u5BA4\u5948\u7F8E\u6075\u002D\u0077\u0069\u0074" + - "\u0068\u002D\u0053\u0055\u0050\u0045\u0052\u002D\u004D" + - "\u004F\u004E\u004B\u0045\u0059\u0053", - "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n", - }, - { - // (N) Hello-Another-Way-<sorezore><no><basho>. - "\u0048\u0065\u006C\u006C\u006F\u002D\u0041\u006E\u006F" + - "\u0074\u0068\u0065\u0072\u002D\u0057\u0061\u0079\u002D" + - "\u305D\u308C\u305E\u308C\u306E\u5834\u6240", - "Hello-Another-Way--fc4qua05auwb3674vfr0b", - }, - { - // (O) <hitotsu><yane><no><shita>2. - "\u3072\u3068\u3064\u5C4B\u6839\u306E\u4E0B\u0032", - "2-u9tlzr9756bt3uc0v", - }, - { - // (P) Maji<de>Koi<suru>5<byou><mae> - "\u004D\u0061\u006A\u0069\u3067\u004B\u006F\u0069\u3059" + - "\u308B\u0035\u79D2\u524D", - "MajiKoi5-783gue6qz075azm5e", - }, - { - // (Q) <pafii>de<runba> - "\u30D1\u30D5\u30A3\u30FC\u0064\u0065\u30EB\u30F3\u30D0", - "de-jg4avhby1noc0d", - }, - { - // (R) <sono><supiido><de> - "\u305D\u306E\u30B9\u30D4\u30FC\u30C9\u3067", - "d9juau41awczczp", - }, - { - // (S) -> $1.00 <- - "\u002D\u003E\u0020\u0024\u0031\u002E\u0030\u0030\u0020" + - "\u003C\u002D", - "-> $1.00 <--", - }, -} - -func TestPunycode(t *testing.T) { - for _, tc := range punycodeTestCases { - if got, err := decode(tc.encoded); err != nil { - t.Errorf("decode(%q): %v", tc.encoded, err) - } else if got != tc.s { - t.Errorf("decode(%q): got %q, want %q", tc.encoded, got, tc.s) - } - - if got, err := encode("", tc.s); err != nil { - t.Errorf(`encode("", %q): %v`, tc.s, err) - } else if got != tc.encoded { - t.Errorf(`encode("", %q): got %q, want %q`, tc.s, got, tc.encoded) - } - } -} - -var punycodeErrorTestCases = [...]string{ - "decode -", // A sole '-' is invalid. - "decode foo\x00bar", // '\x00' is not in [0-9A-Za-z]. - "decode foo#bar", // '#' is not in [0-9A-Za-z]. - "decode foo\u00A3bar", // '\u00A3' is not in [0-9A-Za-z]. - "decode 9", // "9a" decodes to codepoint \u00A3; "9" is truncated. - "decode 99999a", // "99999a" decodes to codepoint \U0048A3C1, which is > \U0010FFFF. - "decode 9999999999a", // "9999999999a" overflows the int32 calculation. - - "encode " + strings.Repeat("x", 65536) + "\uff00", // int32 overflow. -} - -func TestPunycodeErrors(t *testing.T) { - for _, tc := range punycodeErrorTestCases { - var err error - switch { - case strings.HasPrefix(tc, "decode "): - _, err = decode(tc[7:]) - case strings.HasPrefix(tc, "encode "): - _, err = encode("", tc[7:]) - } - if err == nil { - if len(tc) > 256 { - tc = tc[:100] + "..." + tc[len(tc)-100:] - } - t.Errorf("no error for %s", tc) - } - } -} diff --git a/vendor/golang.org/x/text/internal/export/idna/tables10.0.0.go b/vendor/golang.org/x/text/internal/export/idna/tables10.0.0.go deleted file mode 100644 index 8e46655b..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/tables10.0.0.go +++ /dev/null @@ -1,4559 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build go1.10 - -package idna - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "10.0.0" - -var mappings string = "" + // Size: 8176 bytes - "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + - "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + - "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + - "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" + - "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" + - "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" + - "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" + - "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" + - "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" + - "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" + - "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" + - "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" + - "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" + - "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" + - "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" + - "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" + - "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" + - "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" + - "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" + - "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" + - "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" + - "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" + - "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" + - "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" + - "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" + - "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" + - ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" + - "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" + - "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" + - "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" + - "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" + - "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" + - "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" + - "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" + - "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" + - "月\x0511月\x0512月\x02hg\x02ev\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニング\x09" + - "インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー\x09ガロ" + - "ン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0fキロワッ" + - "ト\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル\x0fサンチ" + - "ーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット\x09ハイツ" + - "\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0cフィート" + - "\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ\x0cポイ" + - "ント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク\x0fマ" + - "ンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09ユアン" + - "\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x042点" + - "\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" + - "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" + - "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" + - "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" + - "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" + - "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" + - "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" + - "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" + - "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" + - "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" + - "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" + - "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x04𤋮\x04𢡊\x04𢡄\x04𣏕\x04𥉉" + - "\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ\x04יִ" + - "\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּׂ\x04א" + - "ַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04ךּ\x04" + - "כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ\x04תּ" + - "\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ\x02ڤ" + - "\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ\x02ڳ" + - "\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ\x02ۅ" + - "\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02ی\x04" + - "ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04تح" + - "\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج\x04حم" + - "\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح\x04ضخ" + - "\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ\x04فم" + - "\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل\x04كم" + - "\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ\x04مم" + - "\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى\x04هي" + - "\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 ٍّ\x05" + - " َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04تر\x04تز" + - "\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04ين\x04ئخ" + - "\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه\x04شم\x04شه" + - "\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي\x04سى\x04سي" + - "\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي\x04ضى\x04ضي" + - "\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06تحج\x06تحم" + - "\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سجح\x06سجى" + - "\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم\x06ضحى" + - "\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي\x06غمى" + - "\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح\x06محج" + - "\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم\x06نحم" + - "\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى\x06تخي" + - "\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي\x06ضحي" + - "\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي\x06كمي" + - "\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي\x06سخي" + - "\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08عليه" + - "\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:\x01!" + - "\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$" + - "\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ\x02إ" + - "\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز\x02س" + - "\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن\x02ه" + - "\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~\x02¢" + - "\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲\x08𝆹" + - "𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η\x02" + - "κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ\x02ڡ" + - "\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)" + - "\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)" + - "\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)" + - "\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03ppv\x02w" + - "c\x02mc\x02md\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ\x03二\x03多\x03解" + - "\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終\x03生\x03販\x03声" + - "\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指\x03走\x03打\x03禁" + - "\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔三〕\x09〔二〕\x09〔安" + - "〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03丸\x03乁\x03你\x03" + - "侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03具\x03㒹\x03內\x03" + - "冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03㔕\x03勇\x03勉\x03" + - "勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03灰\x03及\x03叟\x03" + - "叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03啣\x03善\x03喙\x03" + - "喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03埴\x03堍\x03型\x03" + - "堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03姘\x03婦\x03㛮\x03" + - "嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03屮\x03峀\x03岍\x03" + - "嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03㡢\x03㡼\x03庰\x03" + - "庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03忍\x03志\x03忹\x03" + - "悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03憤\x03憯\x03懞\x03" + - "懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03掃\x03揤\x03搢\x03" + - "揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03書\x03晉\x03㬙\x03" + - "暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03朡\x03杞\x03杓\x03" + - "㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03槪\x03檨\x03櫛\x03" + - "㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03汧\x03洖\x03派\x03" + - "海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03淹\x03潮\x03濆\x03" + - "瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03爵\x03牐\x03犀\x03" + - "犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03㼛\x03甤\x03甾\x03" + - "異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03䂖\x03硎\x03碌\x03" + - "磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03築\x03䈧\x03糒\x03" + - "䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03罺\x03羕\x03翺\x03" + - "者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03䑫\x03芑\x03芋\x03" + - "芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03莽\x03菧\x03著\x03" + - "荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03䕫\x03虐\x03虜\x03" + - "虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03蠁\x03䗹\x03衠\x03" + - "衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03豕\x03貫\x03賁\x03" + - "贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03鈸\x03鋗\x03鋘\x03" + - "鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03䩶\x03韠\x03䪲\x03" + - "頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03鳽\x03䳎\x03䳭\x03" + - "鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻" - -var xorData string = "" + // Size: 4855 bytes - "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + - "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" + - "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" + - "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" + - "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" + - "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" + - "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" + - "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" + - "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" + - "\x03\x037 \x03\x0b+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1c\x02" + - "\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03\xc1r\x02" + - "\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<\x03\xc1s*" + - "\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03\x83\xab" + - "\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96\xe1\xcd" + - "\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03\x9a\xec" + - "\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c!\x03" + - "\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03ʦ\x93" + - "\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7\x03" + - "\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca\xfa" + - "\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e\x03" + - "\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca\xe3" + - "\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99\x03" + - "\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca\xe8" + - "\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03\x0b" + - "\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05" + - "\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03\x0786" + - "\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/\x03" + - "\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f\x03" + - "\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03" + - "\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03\x07" + - "\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07" + - "\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03\x07" + - "\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b\x0a" + - "\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03\x07" + - "\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+\x03" + - "\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03\x04" + - "4\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ " + - "\x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!\x22" + - "\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03" + - "\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>\x03" + - "\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03\x054" + - "\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05)" + - ":\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1e" + - "\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226\x03" + - "\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05\x1b" + - "\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05\x03" + - "\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06" + - "\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08\x03" + - "\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03\x0a6" + - "\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a\x1f" + - "\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03\x0a" + - "\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f\x02" + - "\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/\x03" + - "\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a\x00" + - "\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+\x10" + - "\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#<" + - "\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!\x00" + - "\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18.\x03" + - "\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15\x22" + - "\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b\x12" + - "\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05<" + - "\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" + - "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" + - "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" + - "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" + - "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" + - "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" + - "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" + - "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" + - "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" + - "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" + - "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" + - "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" + - "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" + - "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" + - "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" + - "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" + - "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" + - "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" + - "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" + - "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" + - "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" + - "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" + - "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" + - "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" + - "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" + - "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" + - "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" + - "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," + - "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" + - "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" + - "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" + - "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" + - ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" + - "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" + - "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" + - "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" + - "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" + - "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" + - "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" + - "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" + - "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" + - "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" + - "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" + - "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" + - "(\x04\x023 \x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!\x10\x03\x0b!0" + - "\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b\x03\x09\x1f" + - "\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14\x03\x0a\x01" + - "\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03\x08='\x03" + - "\x08\x1a\x0a\x03\x07</\x03\x07:+\x03\x07\x07*\x03\x06&\x1c\x03\x09\x0c" + - "\x16\x03\x09\x10\x0e\x03\x08'\x0f\x03\x08+\x09\x03\x074%\x03\x06!3\x03" + - "\x06\x03+\x03\x0b\x1e\x19\x03\x0a))\x03\x09\x08\x19\x03\x08,\x05\x03\x07" + - "<2\x03\x06\x1c>\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07\x01\x00" + - "\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03\x09\x11" + - "\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03\x0a/1" + - "\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03\x07<3" + - "\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06\x13\x00" + - "\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(;\x03" + - "\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08\x14$" + - "\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03\x0a" + - "\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19\x01" + - "\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18\x03" + - "\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03\x07" + - "\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03\x0a" + - "\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03\x0b" + - "\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03\x08" + - "\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05\x03" + - "\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11\x03" + - "\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03\x09" + - "\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a." + - "\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" + - "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" + - "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " + - "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" + - "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" + - "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" + - "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" + - "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" + - "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" + - "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," + - "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" + - "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" + - "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" + - "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" + - "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" + - "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" + - "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" + - "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" + - "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" + - "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" + - "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" + - "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" + - "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" + - "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" + - "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" + - "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" + - "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" + - "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" + - "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" + - "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" + - "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" + - "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" + - "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" + - "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" + - "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" + - "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" + - "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" + - "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" + - "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" + - "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" + - "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" + - "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" + - "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" + - "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" + - "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" + - "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" + - "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" + - "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" + - "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," + - "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" + - "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" + - "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" + - "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" + - "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" + - "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" + - "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" + - "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" + - "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" + - "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" + - "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" + - "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" + - "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" + - "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" + - "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" + - "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" + - "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" + - "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" + - "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" + - "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" + - "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" + - "\x04\x03\x0c?\x05\x03\x0c<?\x03\x0c=\x00\x03\x0c=\x06\x03\x0c=\x05\x03" + - "\x0c=\x0c\x03\x0c=\x0f\x03\x0c=\x0d\x03\x0c=\x0b\x03\x0c=\x07\x03\x0c=" + - "\x19\x03\x0c=\x15\x03\x0c=\x11\x03\x0c=1\x03\x0c=3\x03\x0c=0\x03\x0c=>" + - "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" + - "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" + - "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" + - "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" + - "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" + - "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" + - "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" + - "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" + - "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" + - "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" + - "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" + - "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" + - "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" + - "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" + - "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" + - "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" + - "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" + - "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" + - "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" + - "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" + - "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" + - "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" + - "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" + - "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" + - "\x05\x22\x05\x03\x050\x1d" - -// 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 *idnaTrie) lookup(s []byte) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return idnaValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = idnaIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = idnaIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = idnaIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *idnaTrie) lookupUnsafe(s []byte) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return idnaValues[c0] - } - i := idnaIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = idnaIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = idnaIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *idnaTrie) lookupString(s string) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return idnaValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = idnaIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = idnaIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = idnaIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return idnaValues[c0] - } - i := idnaIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = idnaIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = idnaIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// idnaTrie. Total size: 29052 bytes (28.37 KiB). Checksum: ef06e7ecc26f36dd. -type idnaTrie struct{} - -func newIdnaTrie(i int) *idnaTrie { - return &idnaTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { - switch { - case n < 125: - return uint16(idnaValues[n<<6+uint32(b)]) - default: - n -= 125 - return uint16(idnaSparse.lookup(n, b)) - } -} - -// idnaValues: 127 blocks, 8128 entries, 16256 bytes -// The third block is the zero block. -var idnaValues = [8128]uint16{ - // Block 0x0, offset 0x0 - 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, - 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, - 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080, - 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080, - 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080, - 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080, - 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080, - 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080, - 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008, - 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080, - 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080, - // Block 0x1, offset 0x40 - 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105, - 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105, - 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105, - 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105, - 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080, - 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008, - 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008, - 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008, - 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008, - 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080, - 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, - 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, - 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, - 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, - 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, - 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018, - 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018, - 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a, - 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005, - 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018, - 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018, - // Block 0x4, offset 0x100 - 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008, - 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008, - 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008, - 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008, - 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008, - 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008, - 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008, - 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008, - 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008, - 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d, - 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199, - // Block 0x5, offset 0x140 - 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, - 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008, - 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008, - 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008, - 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008, - 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008, - 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008, - 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008, - 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008, - 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d, - 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9, - // Block 0x6, offset 0x180 - 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008, - 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d, - 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d, - 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d, - 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155, - 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008, - 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d, - 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd, - 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d, - 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008, - 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9, - 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d, - 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d, - 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d, - 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008, - 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008, - 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008, - 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008, - 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008, - 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008, - 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008, - // Block 0x8, offset 0x200 - 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008, - 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008, - 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008, - 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008, - 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008, - 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008, - 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008, - 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008, - 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008, - 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d, - 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008, - // Block 0x9, offset 0x240 - 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018, - 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008, - 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008, - 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018, - 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a, - 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369, - 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018, - 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018, - 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018, - 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, - 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, - // Block 0xa, offset 0x280 - 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, - 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308, - 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308, - 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308, - 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308, - 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308, - 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308, - 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308, - 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, - 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, - 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, - 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040, - 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105, - 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105, - 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105, - 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d, - 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d, - 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008, - 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008, - 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008, - 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008, - // Block 0xc, offset 0x300 - 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008, - 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008, - 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd, - 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008, - 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008, - 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008, - 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008, - 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008, - 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd, - 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008, - 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d, - // Block 0xd, offset 0x340 - 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008, - 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008, - 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008, - 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008, - 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008, - 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008, - 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008, - 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008, - 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008, - 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, - 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, - // Block 0xe, offset 0x380 - 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308, - 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008, - 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, - 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, - 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, - 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008, - 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008, - 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008, - 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008, - 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008, - 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d, - 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d, - 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008, - 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008, - 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008, - 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008, - 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008, - 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008, - 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008, - 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008, - 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008, - // Block 0x10, offset 0x400 - 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008, - 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008, - 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008, - 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008, - 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008, - 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008, - 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008, - 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008, - 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5, - 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, - 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, - // Block 0x11, offset 0x440 - 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840, - 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818, - 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308, - 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308, - 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040, - 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08, - 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08, - 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08, - 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08, - 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08, - 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08, - // Block 0x12, offset 0x480 - 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08, - 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308, - 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308, - 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308, - 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308, - 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808, - 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808, - 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08, - 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429, - 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08, - 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08, - 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08, - 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08, - 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308, - 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840, - 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308, - 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018, - 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08, - 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008, - 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08, - 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08, - // Block 0x14, offset 0x500 - 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818, - 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818, - 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308, - 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08, - 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08, - 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08, - 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08, - 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08, - 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308, - 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308, - 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308, - // Block 0x15, offset 0x540 - 0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08, - 0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08, - 0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08, - 0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808, - 0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040, - 0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08, - 0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08, - 0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040, - 0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, - 0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040, - 0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040, - // Block 0x16, offset 0x580 - 0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308, - 0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008, - 0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308, - 0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308, - 0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1, - 0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308, - 0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, - 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, - 0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008, - 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008, - 0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008, - 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008, - 0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, - 0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008, - 0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008, - 0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008, - 0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040, - 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, - 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040, - 0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, - 0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008, - // Block 0x18, offset 0x600 - 0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040, - 0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008, - 0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040, - 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008, - 0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1, - 0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308, - 0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008, - 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, - 0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018, - 0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018, - 0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x0040, 0x63f: 0x0040, - // Block 0x19, offset 0x640 - 0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008, - 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040, - 0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040, - 0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008, - 0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008, - 0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008, - 0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040, - 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, - 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008, - 0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, - 0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008, - // Block 0x1a, offset 0x680 - 0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040, - 0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308, - 0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308, - 0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040, - 0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040, - 0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040, - 0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008, - 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, - 0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308, - 0x6b6: 0x0040, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040, - 0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008, - 0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008, - 0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008, - 0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008, - 0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008, - 0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008, - 0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040, - 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, - 0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008, - 0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, - 0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008, - // Block 0x1c, offset 0x700 - 0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308, - 0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008, - 0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040, - 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040, - 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040, - 0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308, - 0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008, - 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, - 0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040, - 0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308, - 0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308, - // Block 0x1d, offset 0x740 - 0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008, - 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008, - 0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, - 0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008, - 0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008, - 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008, - 0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040, - 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008, - 0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008, - 0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040, - 0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308, - // Block 0x1e, offset 0x780 - 0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040, - 0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008, - 0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, - 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008, - 0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9, - 0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308, - 0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008, - 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008, - 0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018, - 0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040, - 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040, - // Block 0x1f, offset 0x7c0 - 0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008, - 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040, - 0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, - 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040, - 0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040, - 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008, - 0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008, - 0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008, - 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008, - 0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040, - 0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008, - // Block 0x20, offset 0x800 - 0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040, - 0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308, - 0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, - 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040, - 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, - 0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308, - 0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008, - 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, - 0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, - 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018, - 0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018, - // Block 0x21, offset 0x840 - 0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0040, 0x845: 0x0008, - 0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008, - 0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040, - 0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008, - 0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008, - 0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008, - 0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040, - 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, - 0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008, - 0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040, - 0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308, - // Block 0x22, offset 0x880 - 0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040, - 0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008, - 0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, - 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040, - 0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040, - 0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308, - 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008, - 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, - 0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040, - 0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040, - 0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040, - // Block 0x23, offset 0x8c0 - 0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040, - 0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008, - 0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040, - 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008, - 0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018, - 0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308, - 0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008, - 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008, - 0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018, - 0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008, - 0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008, - // Block 0x24, offset 0x900 - 0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040, - 0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040, - 0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040, - 0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008, - 0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008, - 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, - 0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040, - 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008, - 0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308, - 0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308, - 0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040, - // Block 0x25, offset 0x940 - 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008, - 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, - 0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, - 0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79, - 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008, - 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008, - 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9, - 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040, - 0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59, - 0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308, - 0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008, - // Block 0x26, offset 0x980 - 0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018, - 0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, - 0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308, - 0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308, - 0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11, - 0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308, - 0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308, - 0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308, - 0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308, - 0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308, - 0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018, - // Block 0x27, offset 0x9c0 - 0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008, - 0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008, - 0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008, - 0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008, - 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008, - 0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008, - 0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008, - 0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008, - 0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41, - 0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008, - 0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269, - // Block 0x28, offset 0xa00 - 0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1, - 0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011, - 0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041, - 0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9, - 0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099, - 0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269, - 0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1, - 0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008, - 0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008, - 0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008, - 0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008, - // Block 0x29, offset 0xa40 - 0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008, - 0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008, - 0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008, - 0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, - 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169, - 0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9, - 0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251, - 0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9, - 0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359, - 0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1, - 0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429, - // Block 0x2a, offset 0xa80 - 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008, - 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008, - 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008, - 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008, - 0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008, - 0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008, - 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008, - 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008, - 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008, - 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008, - 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008, - // Block 0x2b, offset 0xac0 - 0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008, - 0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008, - 0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008, - 0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008, - 0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008, - 0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008, - 0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008, - 0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008, - 0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008, - 0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008, - 0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008, - // Block 0x2c, offset 0xb00 - 0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008, - 0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045, - 0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008, - 0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008, - 0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045, - 0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008, - 0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045, - 0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045, - 0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489, - 0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1, - 0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040, - // Block 0x2d, offset 0xb40 - 0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1, - 0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591, - 0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1, - 0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1, - 0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771, - 0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891, - 0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831, - 0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951, - 0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040, - 0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459, - 0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686, - // Block 0x2e, offset 0xb80 - 0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040, - 0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489, - 0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008, - 0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008, - 0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2, - 0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61, - 0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045, - 0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa, - 0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040, - 0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9, - 0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040, - // Block 0x2f, offset 0xbc0 - 0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a, - 0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0, - 0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d, - 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e, - 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018, - 0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, - 0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040, - 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a, - 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018, - 0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, - 0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018, - // Block 0x30, offset 0xc00 - 0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018, - 0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018, - 0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018, - 0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9, - 0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018, - 0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340, - 0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040, - 0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340, - 0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61, - 0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd, - 0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71, - // Block 0x31, offset 0xc40 - 0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61, - 0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5, - 0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09, - 0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359, - 0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040, - 0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018, - 0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018, - 0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018, - 0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018, - 0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018, - 0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018, - // Block 0x32, offset 0xc80 - 0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e, - 0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249, - 0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41, - 0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018, - 0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269, - 0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018, - 0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018, - 0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09, - 0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9, - 0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd, - 0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109, - // Block 0x33, offset 0xcc0 - 0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9, - 0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018, - 0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151, - 0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279, - 0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399, - 0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439, - 0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369, - 0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61, - 0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451, - 0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5, - 0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61, - // Block 0x34, offset 0xd00 - 0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018, - 0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040, - 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040, - 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040, - 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040, - 0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51, - 0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601, - 0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691, - 0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26, - 0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6, - 0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a, - // Block 0x35, offset 0xd40 - 0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a, - 0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040, - 0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040, - 0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040, - 0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46, - 0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06, - 0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6, - 0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86, - 0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46, - 0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199, - 0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259, - // Block 0x36, offset 0xd80 - 0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99, - 0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089, - 0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9, - 0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249, - 0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71, - 0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9, - 0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1, - 0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018, - 0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018, - 0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, - 0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018, - // Block 0x37, offset 0xdc0 - 0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008, - 0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008, - 0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008, - 0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008, - 0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008, - 0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd, - 0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d, - 0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9, - 0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d, - 0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008, - 0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9, - // Block 0x38, offset 0xe00 - 0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008, - 0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008, - 0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008, - 0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008, - 0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008, - 0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008, - 0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, - 0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308, - 0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040, - 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018, - 0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, - // Block 0x39, offset 0xe40 - 0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d, - 0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d, - 0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d, - 0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040, - 0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040, - 0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040, - 0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040, - 0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040, - 0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040, - 0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040, - 0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040, - // Block 0x3a, offset 0xe80 - 0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008, - 0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018, - 0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018, - 0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018, - 0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018, - 0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018, - 0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018, - 0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018, - 0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018, - 0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018, - 0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018, - // Block 0x3b, offset 0xec0 - 0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd, - 0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd, - 0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d, - 0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d, - 0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d, - 0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd, - 0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d, - 0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd, - 0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d, - 0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd, - 0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d, - // Block 0x3c, offset 0xf00 - 0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd, - 0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d, - 0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018, - 0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd, - 0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d, - 0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008, - 0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008, - 0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008, - 0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008, - 0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040, - 0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040, - // Block 0x3d, offset 0xf40 - 0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd, - 0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018, - 0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761, - 0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1, - 0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881, - 0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd, - 0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d, - 0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d, - 0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd, - 0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d, - 0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018, - // Block 0x3e, offset 0xf80 - 0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d, - 0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d, - 0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd, - 0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd, - 0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d, - 0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d, - 0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd, - 0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d, - 0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999, - 0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29, - 0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89, - // Block 0x3f, offset 0xfc0 - 0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69, - 0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69, - 0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15, - 0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75, - 0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded, - 0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d, - 0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5, - 0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d, - 0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d, - 0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd, - 0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040, - // Block 0x40, offset 0x1000 - 0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9, - 0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1, - 0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9, - 0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549, - 0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1, - 0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11, - 0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91, - 0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9, - 0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011, - 0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209, - 0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361, - // Block 0x41, offset 0x1040 - 0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541, - 0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781, - 0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979, - 0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89, - 0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1, - 0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99, - 0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9, - 0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9, - 0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069, - 0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9, - 0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9, - // Block 0x42, offset 0x1080 - 0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271, - 0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9, - 0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed, - 0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371, - 0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9, - 0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d, - 0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211, - 0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1, - 0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599, - 0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9, - 0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611, - // Block 0x43, offset 0x10c0 - 0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671, - 0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709, - 0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781, - 0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1, - 0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811, - 0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901, - 0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1, - 0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11, - 0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31, - 0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51, - 0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d, - // Block 0x44, offset 0x1100 - 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008, - 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008, - 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008, - 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008, - 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008, - 0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008, - 0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008, - 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308, - 0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308, - 0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308, - 0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008, - // Block 0x45, offset 0x1140 - 0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008, - 0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008, - 0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008, - 0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008, - 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11, - 0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008, - 0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008, - 0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008, - 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, - 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008, - 0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008, - // Block 0x46, offset 0x1180 - 0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018, - 0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018, - 0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018, - 0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008, - 0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008, - 0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008, - 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, - 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008, - 0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008, - 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008, - 0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008, - // Block 0x47, offset 0x11c0 - 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008, - 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008, - 0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008, - 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008, - 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008, - 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008, - 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008, - 0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008, - 0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008, - 0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d, - 0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008, - // Block 0x48, offset 0x1200 - 0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008, - 0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d, - 0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008, - 0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008, - 0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008, - 0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008, - 0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008, - 0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0040, - 0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008, - 0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0040, 0x123a: 0x0040, 0x123b: 0x0040, - 0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040, - // Block 0x49, offset 0x1240 - 0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575, - 0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635, - 0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008, - 0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715, - 0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5, - 0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008, - 0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008, - 0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935, - 0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5, - 0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5, - 0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35, - // Block 0x4a, offset 0x1280 - 0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35, - 0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5, - 0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19, - 0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91, - 0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040, - 0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040, - 0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040, - 0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040, - 0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040, - 0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040, - 0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040, - // Block 0x4b, offset 0x12c0 - 0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001, - 0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040, - 0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040, - 0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9, - 0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1, - 0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149, - 0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2, - 0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1, - 0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1, - 0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479, - 0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040, - // Block 0x4c, offset 0x1300 - 0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040, - 0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659, - 0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721, - 0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751, - 0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769, - 0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799, - 0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1, - 0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1, - 0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9, - 0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829, - 0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841, - // Block 0x4d, offset 0x1340 - 0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871, - 0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9, - 0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9, - 0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919, - 0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931, - 0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961, - 0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991, - 0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1, - 0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818, - 0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818, - 0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818, - // Block 0x4e, offset 0x1380 - 0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040, - 0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040, - 0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040, - 0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09, - 0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479, - 0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81, - 0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1, - 0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19, - 0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91, - 0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1, - 0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09, - // Block 0x4f, offset 0x13c0 - 0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1, - 0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1, - 0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1, - 0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991, - 0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81, - 0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a, - 0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99, - 0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89, - 0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79, - 0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19, - 0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469, - // Block 0x50, offset 0x1400 - 0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649, - 0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9, - 0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49, - 0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21, - 0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9, - 0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01, - 0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91, - 0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9, - 0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171, - 0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289, - 0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329, - // Block 0x51, offset 0x1440 - 0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1, - 0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621, - 0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739, - 0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1, - 0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9, - 0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29, - 0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079, - 0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1, - 0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171, - 0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261, - 0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301, - // Block 0x52, offset 0x1480 - 0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1, - 0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1, - 0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171, - 0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261, - 0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351, - 0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441, - 0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509, - 0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1, - 0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081, - 0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239, - 0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018, - // Block 0x53, offset 0x14c0 - 0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040, - 0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040, - 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609, - 0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721, - 0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839, - 0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919, - 0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9, - 0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9, - 0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9, - 0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1, - 0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79, - // Block 0x54, offset 0x1500 - 0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989, - 0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040, - 0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040, - 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040, - 0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040, - 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040, - 0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040, - 0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, - 0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9, - 0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12, - 0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040, - // Block 0x55, offset 0x1540 - 0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0, - 0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0, - 0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55, - 0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75, - 0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040, - 0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308, - 0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308, - 0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308, - 0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2, - 0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35, - 0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55, - // Block 0x56, offset 0x1580 - 0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018, - 0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56, - 0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95, - 0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa, - 0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95, - 0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99, - 0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda, - 0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040, - 0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040, - 0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081, - 0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1, - // Block 0x57, offset 0x15c0 - 0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141, - 0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171, - 0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1, - 0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1, - 0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201, - 0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219, - 0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249, - 0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291, - 0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1, - 0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9, - 0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1, - // Block 0x58, offset 0x1600 - 0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321, - 0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339, - 0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369, - 0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381, - 0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1, - 0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9, - 0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9, - 0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1, - 0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441, - 0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9, - 0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0, - // Block 0x59, offset 0x1640 - 0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea, - 0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2, - 0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9, - 0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81, - 0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2, - 0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159, - 0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41, - 0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9, - 0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9, - 0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a, - 0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a, - // Block 0x5a, offset 0x1680 - 0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09, - 0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51, - 0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039, - 0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279, - 0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a, - 0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115, - 0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5, - 0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295, - 0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355, - 0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415, - 0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215, - // Block 0x5b, offset 0x16c0 - 0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515, - 0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595, - 0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5, - 0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655, - 0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115, - 0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735, - 0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5, - 0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5, - 0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5, - 0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5, - 0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040, - // Block 0x5c, offset 0x1700 - 0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5, - 0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715, - 0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040, - 0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935, - 0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040, - 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6, - 0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35, - 0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040, - 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040, - 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340, - 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, - // Block 0x5d, offset 0x1740 - 0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08, - 0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808, - 0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08, - 0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908, - 0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08, - 0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808, - 0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040, - 0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18, - 0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818, - 0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040, - 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040, - // Block 0x5e, offset 0x1780 - 0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08, - 0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08, - 0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08, - 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040, - 0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040, - 0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040, - 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18, - 0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818, - 0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040, - 0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040, - 0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040, - // Block 0x5f, offset 0x17c0 - 0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008, - 0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008, - 0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040, - 0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008, - 0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008, - 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008, - 0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040, - 0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008, - 0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008, - 0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x0040, - 0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008, - // Block 0x60, offset 0x1800 - 0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040, - 0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008, - 0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040, - 0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008, - 0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008, - 0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008, - 0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308, - 0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040, - 0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040, - 0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040, - 0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040, - // Block 0x61, offset 0x1840 - 0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199, - 0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359, - 0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269, - 0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369, - 0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9, - 0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259, - 0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99, - 0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089, - 0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9, - 0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249, - 0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359, - // Block 0x62, offset 0x1880 - 0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269, - 0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369, - 0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9, - 0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259, - 0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99, - 0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089, - 0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9, - 0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249, - 0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71, - 0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9, - 0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369, - // Block 0x63, offset 0x18c0 - 0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9, - 0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259, - 0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99, - 0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089, - 0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040, - 0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040, - 0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71, - 0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9, - 0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1, - 0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199, - 0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259, - // Block 0x64, offset 0x1900 - 0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99, - 0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089, - 0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9, - 0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249, - 0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71, - 0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9, - 0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1, - 0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199, - 0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359, - 0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269, - 0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089, - // Block 0x65, offset 0x1940 - 0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9, - 0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040, - 0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71, - 0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9, - 0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040, - 0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199, - 0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359, - 0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269, - 0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369, - 0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9, - 0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040, - // Block 0x66, offset 0x1980 - 0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040, - 0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9, - 0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040, - 0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199, - 0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359, - 0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269, - 0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369, - 0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9, - 0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259, - 0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99, - 0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9, - // Block 0x67, offset 0x19c0 - 0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1, - 0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199, - 0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359, - 0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269, - 0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369, - 0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9, - 0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259, - 0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99, - 0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089, - 0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9, - 0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199, - // Block 0x68, offset 0x1a00 - 0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359, - 0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269, - 0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369, - 0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9, - 0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259, - 0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99, - 0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089, - 0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9, - 0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249, - 0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71, - 0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269, - // Block 0x69, offset 0x1a40 - 0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369, - 0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9, - 0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259, - 0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99, - 0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089, - 0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9, - 0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249, - 0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71, - 0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9, - 0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1, - 0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9, - // Block 0x6a, offset 0x1a80 - 0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259, - 0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99, - 0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089, - 0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9, - 0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249, - 0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71, - 0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9, - 0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1, - 0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199, - 0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359, - 0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99, - // Block 0x6b, offset 0x1ac0 - 0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089, - 0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9, - 0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249, - 0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71, - 0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9, - 0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1, - 0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099, - 0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429, - 0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71, - 0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9, - 0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9, - // Block 0x6c, offset 0x1b00 - 0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9, - 0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11, - 0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109, - 0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1, - 0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429, - 0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099, - 0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429, - 0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71, - 0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9, - 0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01, - 0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9, - // Block 0x6d, offset 0x1b40 - 0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11, - 0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109, - 0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1, - 0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429, - 0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099, - 0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429, - 0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71, - 0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9, - 0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01, - 0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1, - 0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11, - // Block 0x6e, offset 0x1b80 - 0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109, - 0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1, - 0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429, - 0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099, - 0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429, - 0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71, - 0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9, - 0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01, - 0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1, - 0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41, - 0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109, - // Block 0x6f, offset 0x1bc0 - 0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1, - 0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429, - 0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099, - 0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429, - 0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71, - 0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9, - 0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01, - 0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1, - 0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41, - 0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1, - 0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1, - // Block 0x70, offset 0x1c00 - 0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429, - 0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41, - 0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079, - 0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1, - 0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61, - 0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9, - 0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81, - 0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079, - 0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1, - 0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61, - 0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1, - // Block 0x71, offset 0x1c40 - 0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115, - 0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135, - 0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115, - 0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175, - 0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115, - 0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08, - 0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08, - 0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08, - 0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08, - 0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08, - 0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08, - // Block 0x72, offset 0x1c80 - 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411, - 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1, - 0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9, - 0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231, - 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949, - 0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040, - 0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429, - 0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, - 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, - 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351, - 0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040, - // Block 0x73, offset 0x1cc0 - 0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040, - 0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1, - 0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9, - 0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231, - 0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949, - 0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040, - 0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429, - 0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339, - 0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1, - 0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351, - 0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040, - // Block 0x74, offset 0x1d00 - 0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411, - 0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1, - 0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9, - 0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231, - 0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040, - 0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249, - 0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429, - 0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339, - 0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1, - 0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351, - 0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040, - // Block 0x75, offset 0x1d40 - 0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02, - 0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018, - 0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2, - 0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72, - 0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32, - 0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2, - 0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2, - 0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0040, - 0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199, - 0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359, - 0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99, - // Block 0x76, offset 0x1d80 - 0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089, - 0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1, - 0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018, - 0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018, - 0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018, - 0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018, - 0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018, - 0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040, - 0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018, - 0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018, - 0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018, - // Block 0x77, offset 0x1dc0 - 0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040, - 0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040, - 0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289, - 0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349, - 0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409, - 0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9, - 0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589, - 0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649, - 0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709, - 0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9, - 0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040, - // Block 0x78, offset 0x1e00 - 0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79, - 0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39, - 0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9, - 0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39, - 0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9, - 0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79, - 0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39, - 0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9, - 0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059, - 0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9, - 0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179, - // Block 0x79, offset 0x1e40 - 0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239, - 0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9, - 0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399, - 0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459, - 0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309, - 0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559, - 0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9, - 0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679, - 0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9, - 0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d, - 0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9, - // Block 0x7a, offset 0x1e80 - 0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9, - 0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959, - 0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d, - 0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d, - 0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9, - 0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99, - 0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9, - 0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9, - 0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99, - 0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39, - 0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99, - // Block 0x7b, offset 0x1ec0 - 0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639, - 0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9, - 0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d, - 0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9, - 0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d, - 0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd, - 0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979, - 0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19, - 0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d, - 0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d, - 0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59, - // Block 0x7c, offset 0x1f00 - 0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99, - 0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39, - 0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9, - 0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39, - 0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd, - 0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19, - 0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9, - 0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59, - 0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd, - 0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d, - 0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079, - // Block 0x7d, offset 0x1f40 - 0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d, - 0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d, - 0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879, - 0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919, - 0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd, - 0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9, - 0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99, - 0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39, - 0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9, - 0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d, - 0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79, - // Block 0x7e, offset 0x1f80 - 0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19, - 0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9, - 0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59, - 0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9, - 0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d, - 0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040, - 0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040, - 0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040, - 0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040, - 0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040, - 0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040, -} - -// idnaIndex: 36 blocks, 2304 entries, 4608 bytes -// Block 0 is the zero block. -var idnaIndex = [2304]uint16{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, - 0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, - 0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84, - 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88, - 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, - 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, - 0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21, - // Block 0x4, offset 0x100 - 0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16, - 0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d, - 0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91, - 0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96, - // Block 0x5, offset 0x140 - 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e, - 0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6, - 0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f, - 0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae, - 0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6, - 0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe, - 0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3, - 0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c, - // Block 0x6, offset 0x180 - 0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b, - 0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b, - 0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, - 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, - 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, - 0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0, - 0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5, - 0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1, - 0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41, - 0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f, - 0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f, - 0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f, - 0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f, - 0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f, - 0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f, - // Block 0x8, offset 0x200 - 0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f, - 0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f, - 0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f, - 0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f, - 0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f, - 0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f, - 0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b, - 0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f, - // Block 0x9, offset 0x240 - 0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f, - 0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f, - 0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f, - 0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f, - 0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f, - 0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f, - 0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f, - 0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f, - // Block 0xa, offset 0x280 - 0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f, - 0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f, - 0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f, - 0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f, - 0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f, - 0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f, - 0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f, - 0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f, - 0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f, - 0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f, - 0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8, - 0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0, - 0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8, - 0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f, - 0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f, - // Block 0xc, offset 0x300 - 0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f, - 0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f, - 0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f, - 0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa, - // Block 0xd, offset 0x340 - 0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba, - 0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba, - 0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba, - 0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba, - 0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba, - 0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba, - 0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba, - 0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba, - // Block 0xe, offset 0x380 - 0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba, - 0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba, - 0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba, - 0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba, - 0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe, - 0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c, - 0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52, - 0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108, - 0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e, - 0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba, - 0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba, - 0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c, - 0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba, - 0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba, - 0x3f8: 0xba, 0x3f9: 0x126, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba, - // Block 0x10, offset 0x400 - 0x400: 0x127, 0x401: 0x128, 0x402: 0x129, 0x403: 0x12a, 0x404: 0x12b, 0x405: 0x12c, 0x406: 0x12d, 0x407: 0x12e, - 0x408: 0x12f, 0x409: 0xba, 0x40a: 0x130, 0x40b: 0x131, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba, - 0x410: 0x132, 0x411: 0x133, 0x412: 0x134, 0x413: 0x135, 0x414: 0xba, 0x415: 0xba, 0x416: 0x136, 0x417: 0x137, - 0x418: 0x138, 0x419: 0x139, 0x41a: 0x13a, 0x41b: 0x13b, 0x41c: 0x13c, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba, - 0x420: 0xba, 0x421: 0xba, 0x422: 0x13d, 0x423: 0x13e, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba, - 0x428: 0x13f, 0x429: 0x140, 0x42a: 0x141, 0x42b: 0x142, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba, - 0x430: 0x143, 0x431: 0x144, 0x432: 0x145, 0x433: 0xba, 0x434: 0x146, 0x435: 0x147, 0x436: 0xba, 0x437: 0xba, - 0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba, - // Block 0x11, offset 0x440 - 0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f, - 0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x148, 0x44f: 0xba, - 0x450: 0x9b, 0x451: 0x149, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x14a, 0x456: 0xba, 0x457: 0xba, - 0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba, - 0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba, - 0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba, - 0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba, - 0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba, - // Block 0x12, offset 0x480 - 0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f, - 0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f, - 0x490: 0x14b, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba, - 0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba, - 0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba, - 0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba, - 0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba, - 0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba, - // Block 0x13, offset 0x4c0 - 0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba, - 0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba, - 0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f, - 0x4d8: 0x9f, 0x4d9: 0x14c, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba, - 0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba, - 0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba, - 0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba, - 0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba, - // Block 0x14, offset 0x500 - 0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba, - 0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba, - 0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba, - 0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba, - 0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f, - 0x528: 0x142, 0x529: 0x14d, 0x52a: 0xba, 0x52b: 0x14e, 0x52c: 0x14f, 0x52d: 0x150, 0x52e: 0x151, 0x52f: 0xba, - 0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba, - 0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x152, 0x53e: 0x153, 0x53f: 0x154, - // Block 0x15, offset 0x540 - 0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f, - 0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f, - 0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f, - 0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x155, - 0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f, - 0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x156, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba, - 0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba, - 0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba, - // Block 0x16, offset 0x580 - 0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x157, 0x585: 0x158, 0x586: 0x9f, 0x587: 0x9f, - 0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x159, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba, - 0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba, - 0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba, - 0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba, - 0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba, - 0x5b0: 0x9f, 0x5b1: 0x15a, 0x5b2: 0x15b, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba, - 0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x15c, 0x5c4: 0x15d, 0x5c5: 0x15e, 0x5c6: 0x15f, 0x5c7: 0x160, - 0x5c8: 0x9b, 0x5c9: 0x161, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x162, 0x5ce: 0xba, 0x5cf: 0xba, - 0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66, - 0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e, - 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, - 0x5e8: 0x163, 0x5e9: 0x164, 0x5ea: 0x165, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba, - 0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba, - 0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba, - // Block 0x18, offset 0x600 - 0x600: 0x166, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba, - 0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba, - 0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba, - 0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba, - 0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x167, 0x624: 0x6f, 0x625: 0x168, 0x626: 0xba, 0x627: 0xba, - 0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba, - 0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba, - 0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x169, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba, - // Block 0x19, offset 0x640 - 0x640: 0x16a, 0x641: 0x9b, 0x642: 0x16b, 0x643: 0x16c, 0x644: 0x73, 0x645: 0x74, 0x646: 0x16d, 0x647: 0x16e, - 0x648: 0x75, 0x649: 0x16f, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, - 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, - 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x170, 0x65c: 0x9b, 0x65d: 0x171, 0x65e: 0x9b, 0x65f: 0x172, - 0x660: 0x173, 0x661: 0x174, 0x662: 0x175, 0x663: 0xba, 0x664: 0x176, 0x665: 0x177, 0x666: 0x178, 0x667: 0x179, - 0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba, - 0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba, - 0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba, - // Block 0x1a, offset 0x680 - 0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f, - 0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f, - 0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f, - 0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x17a, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f, - 0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f, - 0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f, - 0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f, - 0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f, - 0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f, - 0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f, - 0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x17b, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f, - 0x6e0: 0x17c, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f, - 0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f, - 0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f, - 0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f, - // Block 0x1c, offset 0x700 - 0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f, - 0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f, - 0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f, - 0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f, - 0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f, - 0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f, - 0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f, - 0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x17d, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f, - // Block 0x1d, offset 0x740 - 0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f, - 0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f, - 0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f, - 0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f, - 0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f, - 0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x17e, - 0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba, - 0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba, - // Block 0x1e, offset 0x780 - 0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba, - 0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba, - 0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba, - 0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba, - 0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x17f, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x180, 0x7a7: 0x7b, - 0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba, - 0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba, - 0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba, - // Block 0x1f, offset 0x7c0 - 0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07, - 0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17, - 0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07, - 0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c, - 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, - 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, - // Block 0x20, offset 0x800 - 0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b, - 0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b, - 0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b, - 0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b, - 0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b, - 0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b, - 0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b, - 0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b, - // Block 0x21, offset 0x840 - 0x840: 0x181, 0x841: 0x182, 0x842: 0xba, 0x843: 0xba, 0x844: 0x183, 0x845: 0x183, 0x846: 0x183, 0x847: 0x184, - 0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba, - 0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba, - 0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba, - 0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba, - 0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba, - 0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba, - 0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba, - // Block 0x22, offset 0x880 - 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, - 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, - 0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b, - 0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b, - 0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b, - 0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b, - 0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b, - 0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b, - // Block 0x23, offset 0x8c0 - 0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b, - 0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b, -} - -// idnaSparseOffset: 264 entries, 528 bytes -var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x8a, 0x93, 0xa3, 0xb1, 0xbd, 0xc9, 0xda, 0xe4, 0xeb, 0xf8, 0x109, 0x110, 0x11b, 0x12a, 0x138, 0x142, 0x144, 0x149, 0x14c, 0x14f, 0x151, 0x15d, 0x168, 0x170, 0x176, 0x17c, 0x181, 0x186, 0x189, 0x18d, 0x193, 0x198, 0x1a4, 0x1ae, 0x1b4, 0x1c5, 0x1cf, 0x1d2, 0x1da, 0x1dd, 0x1ea, 0x1f2, 0x1f6, 0x1fd, 0x205, 0x215, 0x221, 0x223, 0x22d, 0x239, 0x245, 0x251, 0x259, 0x25e, 0x268, 0x279, 0x27d, 0x288, 0x28c, 0x295, 0x29d, 0x2a3, 0x2a8, 0x2ab, 0x2af, 0x2b5, 0x2b9, 0x2bd, 0x2c3, 0x2ca, 0x2d0, 0x2d8, 0x2df, 0x2ea, 0x2f4, 0x2f8, 0x2fb, 0x301, 0x305, 0x307, 0x30a, 0x30c, 0x30f, 0x319, 0x31c, 0x32b, 0x32f, 0x334, 0x337, 0x33b, 0x340, 0x345, 0x34b, 0x351, 0x360, 0x366, 0x36a, 0x379, 0x37e, 0x386, 0x390, 0x39b, 0x3a3, 0x3b4, 0x3bd, 0x3cd, 0x3da, 0x3e4, 0x3e9, 0x3f6, 0x3fa, 0x3ff, 0x401, 0x405, 0x407, 0x40b, 0x414, 0x41a, 0x41e, 0x42e, 0x438, 0x43d, 0x440, 0x446, 0x44d, 0x452, 0x456, 0x45c, 0x461, 0x46a, 0x46f, 0x475, 0x47c, 0x483, 0x48a, 0x48e, 0x493, 0x496, 0x49b, 0x4a7, 0x4ad, 0x4b2, 0x4b9, 0x4c1, 0x4c6, 0x4ca, 0x4da, 0x4e1, 0x4e5, 0x4e9, 0x4f0, 0x4f2, 0x4f5, 0x4f8, 0x4fc, 0x500, 0x506, 0x50f, 0x51b, 0x522, 0x52b, 0x533, 0x53a, 0x548, 0x555, 0x562, 0x56b, 0x56f, 0x57d, 0x585, 0x590, 0x599, 0x59f, 0x5a7, 0x5b0, 0x5ba, 0x5bd, 0x5c9, 0x5cc, 0x5d1, 0x5de, 0x5e7, 0x5f3, 0x5f6, 0x600, 0x609, 0x615, 0x622, 0x62a, 0x62d, 0x632, 0x635, 0x638, 0x63b, 0x642, 0x649, 0x64d, 0x658, 0x65b, 0x661, 0x666, 0x66a, 0x66d, 0x670, 0x673, 0x676, 0x679, 0x67e, 0x688, 0x68b, 0x68f, 0x69e, 0x6aa, 0x6ae, 0x6b3, 0x6b8, 0x6bc, 0x6c1, 0x6ca, 0x6d5, 0x6db, 0x6e3, 0x6e7, 0x6eb, 0x6f1, 0x6f7, 0x6fc, 0x6ff, 0x70f, 0x716, 0x719, 0x71c, 0x720, 0x726, 0x72b, 0x730, 0x735, 0x738, 0x73d, 0x740, 0x743, 0x747, 0x74b, 0x74e, 0x75e, 0x76f, 0x774, 0x776, 0x778} - -// idnaSparseValues: 1915 entries, 7660 bytes -var idnaSparseValues = [1915]valueRange{ - // Block 0x0, offset 0x0 - {value: 0x0000, lo: 0x07}, - {value: 0xe105, lo: 0x80, hi: 0x96}, - {value: 0x0018, lo: 0x97, hi: 0x97}, - {value: 0xe105, lo: 0x98, hi: 0x9e}, - {value: 0x001f, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xb7}, - {value: 0x0008, lo: 0xb8, hi: 0xbf}, - // Block 0x1, offset 0x8 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0xe01d, lo: 0x81, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0x82}, - {value: 0x0335, lo: 0x83, hi: 0x83}, - {value: 0x034d, lo: 0x84, hi: 0x84}, - {value: 0x0365, lo: 0x85, hi: 0x85}, - {value: 0xe00d, lo: 0x86, hi: 0x86}, - {value: 0x0008, lo: 0x87, hi: 0x87}, - {value: 0xe00d, lo: 0x88, hi: 0x88}, - {value: 0x0008, lo: 0x89, hi: 0x89}, - {value: 0xe00d, lo: 0x8a, hi: 0x8a}, - {value: 0x0008, lo: 0x8b, hi: 0x8b}, - {value: 0xe00d, lo: 0x8c, hi: 0x8c}, - {value: 0x0008, lo: 0x8d, hi: 0x8d}, - {value: 0xe00d, lo: 0x8e, hi: 0x8e}, - {value: 0x0008, lo: 0x8f, hi: 0xbf}, - // Block 0x2, offset 0x19 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x0249, lo: 0xb0, hi: 0xb0}, - {value: 0x037d, lo: 0xb1, hi: 0xb1}, - {value: 0x0259, lo: 0xb2, hi: 0xb2}, - {value: 0x0269, lo: 0xb3, hi: 0xb3}, - {value: 0x034d, lo: 0xb4, hi: 0xb4}, - {value: 0x0395, lo: 0xb5, hi: 0xb5}, - {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, - {value: 0x0279, lo: 0xb7, hi: 0xb7}, - {value: 0x0289, lo: 0xb8, hi: 0xb8}, - {value: 0x0008, lo: 0xb9, hi: 0xbf}, - // Block 0x3, offset 0x25 - {value: 0x0000, lo: 0x01}, - {value: 0x3308, lo: 0x80, hi: 0xbf}, - // Block 0x4, offset 0x27 - {value: 0x0000, lo: 0x04}, - {value: 0x03f5, lo: 0x80, hi: 0x8f}, - {value: 0xe105, lo: 0x90, hi: 0x9f}, - {value: 0x049d, lo: 0xa0, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x5, offset 0x2c - {value: 0x0000, lo: 0x07}, - {value: 0xe185, lo: 0x80, hi: 0x8f}, - {value: 0x0545, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x98}, - {value: 0x0008, lo: 0x99, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x0008, lo: 0xa1, hi: 0xbf}, - // Block 0x6, offset 0x34 - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0401, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x88}, - {value: 0x0018, lo: 0x89, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x3308, lo: 0x91, hi: 0xbd}, - {value: 0x0818, lo: 0xbe, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, - // Block 0x7, offset 0x3f - {value: 0x0000, lo: 0x0b}, - {value: 0x0818, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x82}, - {value: 0x0818, lo: 0x83, hi: 0x83}, - {value: 0x3308, lo: 0x84, hi: 0x85}, - {value: 0x0818, lo: 0x86, hi: 0x86}, - {value: 0x3308, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0808, lo: 0x90, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0808, lo: 0xb0, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x8, offset 0x4b - {value: 0x0000, lo: 0x03}, - {value: 0x0a08, lo: 0x80, hi: 0x87}, - {value: 0x0c08, lo: 0x88, hi: 0x99}, - {value: 0x0a08, lo: 0x9a, hi: 0xbf}, - // Block 0x9, offset 0x4f - {value: 0x0000, lo: 0x0e}, - {value: 0x3308, lo: 0x80, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8c}, - {value: 0x0c08, lo: 0x8d, hi: 0x8d}, - {value: 0x0a08, lo: 0x8e, hi: 0x98}, - {value: 0x0c08, lo: 0x99, hi: 0x9b}, - {value: 0x0a08, lo: 0x9c, hi: 0xaa}, - {value: 0x0c08, lo: 0xab, hi: 0xac}, - {value: 0x0a08, lo: 0xad, hi: 0xb0}, - {value: 0x0c08, lo: 0xb1, hi: 0xb1}, - {value: 0x0a08, lo: 0xb2, hi: 0xb2}, - {value: 0x0c08, lo: 0xb3, hi: 0xb4}, - {value: 0x0a08, lo: 0xb5, hi: 0xb7}, - {value: 0x0c08, lo: 0xb8, hi: 0xb9}, - {value: 0x0a08, lo: 0xba, hi: 0xbf}, - // Block 0xa, offset 0x5e - {value: 0x0000, lo: 0x04}, - {value: 0x0808, lo: 0x80, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xb0}, - {value: 0x0808, lo: 0xb1, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xb, offset 0x63 - {value: 0x0000, lo: 0x07}, - {value: 0x0808, lo: 0x80, hi: 0x89}, - {value: 0x0a08, lo: 0x8a, hi: 0xaa}, - {value: 0x3308, lo: 0xab, hi: 0xb3}, - {value: 0x0808, lo: 0xb4, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xb9}, - {value: 0x0818, lo: 0xba, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0xc, offset 0x6b - {value: 0x0000, lo: 0x0b}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x3308, lo: 0x96, hi: 0x99}, - {value: 0x0808, lo: 0x9a, hi: 0x9a}, - {value: 0x3308, lo: 0x9b, hi: 0xa3}, - {value: 0x0808, lo: 0xa4, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xa7}, - {value: 0x0808, lo: 0xa8, hi: 0xa8}, - {value: 0x3308, lo: 0xa9, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0818, lo: 0xb0, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xd, offset 0x77 - {value: 0x0000, lo: 0x0d}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0a08, lo: 0xa0, hi: 0xa9}, - {value: 0x0c08, lo: 0xaa, hi: 0xac}, - {value: 0x0808, lo: 0xad, hi: 0xad}, - {value: 0x0c08, lo: 0xae, hi: 0xae}, - {value: 0x0a08, lo: 0xaf, hi: 0xb0}, - {value: 0x0c08, lo: 0xb1, hi: 0xb2}, - {value: 0x0a08, lo: 0xb3, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xb5}, - {value: 0x0a08, lo: 0xb6, hi: 0xb8}, - {value: 0x0c08, lo: 0xb9, hi: 0xb9}, - {value: 0x0a08, lo: 0xba, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0xe, offset 0x85 - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x93}, - {value: 0x3308, lo: 0x94, hi: 0xa1}, - {value: 0x0840, lo: 0xa2, hi: 0xa2}, - {value: 0x3308, lo: 0xa3, hi: 0xbf}, - // Block 0xf, offset 0x8a - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0xb9}, - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, - // Block 0x10, offset 0x93 - {value: 0x0000, lo: 0x0f}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x3008, lo: 0x81, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x85}, - {value: 0x3008, lo: 0x86, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x3008, lo: 0x8a, hi: 0x8c}, - {value: 0x3b08, lo: 0x8d, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x96}, - {value: 0x3008, lo: 0x97, hi: 0x97}, - {value: 0x0040, lo: 0x98, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x11, offset 0xa3 - {value: 0x0000, lo: 0x0d}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x3008, lo: 0x81, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, - {value: 0x0008, lo: 0x92, hi: 0xa8}, - {value: 0x0040, lo: 0xa9, hi: 0xa9}, - {value: 0x0008, lo: 0xaa, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x3308, lo: 0xbe, hi: 0xbf}, - // Block 0x12, offset 0xb1 - {value: 0x0000, lo: 0x0b}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, - {value: 0x0008, lo: 0x92, hi: 0xba}, - {value: 0x3b08, lo: 0xbb, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, - // Block 0x13, offset 0xbd - {value: 0x0000, lo: 0x0b}, - {value: 0x0040, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x99}, - {value: 0x0008, lo: 0x9a, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xb2}, - {value: 0x0008, lo: 0xb3, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x14, offset 0xc9 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x89}, - {value: 0x3b08, lo: 0x8a, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8e}, - {value: 0x3008, lo: 0x8f, hi: 0x91}, - {value: 0x3308, lo: 0x92, hi: 0x94}, - {value: 0x0040, lo: 0x95, hi: 0x95}, - {value: 0x3308, lo: 0x96, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x3008, lo: 0x98, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xb1}, - {value: 0x3008, lo: 0xb2, hi: 0xb3}, - {value: 0x0018, lo: 0xb4, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x15, offset 0xda - {value: 0x0000, lo: 0x09}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0xb0}, - {value: 0x3308, lo: 0xb1, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xb2}, - {value: 0x08f1, lo: 0xb3, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb9}, - {value: 0x3b08, lo: 0xba, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbe}, - {value: 0x0018, lo: 0xbf, hi: 0xbf}, - // Block 0x16, offset 0xe4 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x3308, lo: 0x87, hi: 0x8e}, - {value: 0x0018, lo: 0x8f, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0xbf}, - // Block 0x17, offset 0xeb - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0x85}, - {value: 0x0008, lo: 0x86, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x3308, lo: 0x88, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9b}, - {value: 0x0961, lo: 0x9c, hi: 0x9c}, - {value: 0x0999, lo: 0x9d, hi: 0x9d}, - {value: 0x0008, lo: 0x9e, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x18, offset 0xf8 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x8a}, - {value: 0x0008, lo: 0x8b, hi: 0x8b}, - {value: 0xe03d, lo: 0x8c, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0x97}, - {value: 0x3308, lo: 0x98, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xb6}, - {value: 0x3308, lo: 0xb7, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xb8}, - {value: 0x3308, lo: 0xb9, hi: 0xb9}, - {value: 0x0018, lo: 0xba, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, - // Block 0x19, offset 0x109 - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x85}, - {value: 0x3308, lo: 0x86, hi: 0x86}, - {value: 0x0018, lo: 0x87, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8d}, - {value: 0x0018, lo: 0x8e, hi: 0x9a}, - {value: 0x0040, lo: 0x9b, hi: 0xbf}, - // Block 0x1a, offset 0x110 - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x3008, lo: 0xab, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xb0}, - {value: 0x3008, lo: 0xb1, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb7}, - {value: 0x3008, lo: 0xb8, hi: 0xb8}, - {value: 0x3b08, lo: 0xb9, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbc}, - {value: 0x3308, lo: 0xbd, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x1b, offset 0x11b - {value: 0x0000, lo: 0x0e}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x95}, - {value: 0x3008, lo: 0x96, hi: 0x97}, - {value: 0x3308, lo: 0x98, hi: 0x99}, - {value: 0x0008, lo: 0x9a, hi: 0x9d}, - {value: 0x3308, lo: 0x9e, hi: 0xa0}, - {value: 0x0008, lo: 0xa1, hi: 0xa1}, - {value: 0x3008, lo: 0xa2, hi: 0xa4}, - {value: 0x0008, lo: 0xa5, hi: 0xa6}, - {value: 0x3008, lo: 0xa7, hi: 0xad}, - {value: 0x0008, lo: 0xae, hi: 0xb0}, - {value: 0x3308, lo: 0xb1, hi: 0xb4}, - {value: 0x0008, lo: 0xb5, hi: 0xbf}, - // Block 0x1c, offset 0x12a - {value: 0x0000, lo: 0x0d}, - {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x3308, lo: 0x82, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x84}, - {value: 0x3308, lo: 0x85, hi: 0x86}, - {value: 0x3008, lo: 0x87, hi: 0x8c}, - {value: 0x3308, lo: 0x8d, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x8e}, - {value: 0x3008, lo: 0x8f, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x3008, lo: 0x9a, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x1d, offset 0x138 - {value: 0x0000, lo: 0x09}, - {value: 0x0040, lo: 0x80, hi: 0x86}, - {value: 0x055d, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8c}, - {value: 0x055d, lo: 0x8d, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbb}, - {value: 0xe105, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbf}, - // Block 0x1e, offset 0x142 - {value: 0x0000, lo: 0x01}, - {value: 0x0018, lo: 0x80, hi: 0xbf}, - // Block 0x1f, offset 0x144 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xa0}, - {value: 0x2018, lo: 0xa1, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0x20, offset 0x149 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xa7}, - {value: 0x2018, lo: 0xa8, hi: 0xbf}, - // Block 0x21, offset 0x14c - {value: 0x0000, lo: 0x02}, - {value: 0x2018, lo: 0x80, hi: 0x82}, - {value: 0x0018, lo: 0x83, hi: 0xbf}, - // Block 0x22, offset 0x14f - {value: 0x0000, lo: 0x01}, - {value: 0x0008, lo: 0x80, hi: 0xbf}, - // Block 0x23, offset 0x151 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0x98}, - {value: 0x0040, lo: 0x99, hi: 0x99}, - {value: 0x0008, lo: 0x9a, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x24, offset 0x15d - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb7}, - {value: 0x0008, lo: 0xb8, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x25, offset 0x168 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0040, lo: 0x81, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0xbf}, - // Block 0x26, offset 0x170 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, - {value: 0x0008, lo: 0x92, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0xbf}, - // Block 0x27, offset 0x176 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x9a}, - {value: 0x0040, lo: 0x9b, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x28, offset 0x17c - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x29, offset 0x181 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb7}, - {value: 0xe045, lo: 0xb8, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x2a, offset 0x186 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0xbf}, - // Block 0x2b, offset 0x189 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xac}, - {value: 0x0018, lo: 0xad, hi: 0xae}, - {value: 0x0008, lo: 0xaf, hi: 0xbf}, - // Block 0x2c, offset 0x18d - {value: 0x0000, lo: 0x05}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9c}, - {value: 0x0040, lo: 0x9d, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x2d, offset 0x193 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x0018, lo: 0xab, hi: 0xb0}, - {value: 0x0008, lo: 0xb1, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0x2e, offset 0x198 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x91}, - {value: 0x3308, lo: 0x92, hi: 0x93}, - {value: 0x3b08, lo: 0x94, hi: 0x94}, - {value: 0x0040, lo: 0x95, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb3}, - {value: 0x3b08, lo: 0xb4, hi: 0xb4}, - {value: 0x0018, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x2f, offset 0x1a4 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x91}, - {value: 0x3308, lo: 0x92, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xad}, - {value: 0x0008, lo: 0xae, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0x30, offset 0x1ae - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0xb3}, - {value: 0x3340, lo: 0xb4, hi: 0xb5}, - {value: 0x3008, lo: 0xb6, hi: 0xb6}, - {value: 0x3308, lo: 0xb7, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, - // Block 0x31, offset 0x1b4 - {value: 0x0000, lo: 0x10}, - {value: 0x3008, lo: 0x80, hi: 0x85}, - {value: 0x3308, lo: 0x86, hi: 0x86}, - {value: 0x3008, lo: 0x87, hi: 0x88}, - {value: 0x3308, lo: 0x89, hi: 0x91}, - {value: 0x3b08, lo: 0x92, hi: 0x92}, - {value: 0x3308, lo: 0x93, hi: 0x93}, - {value: 0x0018, lo: 0x94, hi: 0x96}, - {value: 0x0008, lo: 0x97, hi: 0x97}, - {value: 0x0018, lo: 0x98, hi: 0x9b}, - {value: 0x0008, lo: 0x9c, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x32, offset 0x1c5 - {value: 0x0000, lo: 0x09}, - {value: 0x0018, lo: 0x80, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x86}, - {value: 0x0218, lo: 0x87, hi: 0x87}, - {value: 0x0018, lo: 0x88, hi: 0x8a}, - {value: 0x33c0, lo: 0x8b, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0208, lo: 0xa0, hi: 0xbf}, - // Block 0x33, offset 0x1cf - {value: 0x0000, lo: 0x02}, - {value: 0x0208, lo: 0x80, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x34, offset 0x1d2 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x84}, - {value: 0x3308, lo: 0x85, hi: 0x86}, - {value: 0x0208, lo: 0x87, hi: 0xa8}, - {value: 0x3308, lo: 0xa9, hi: 0xa9}, - {value: 0x0208, lo: 0xaa, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x35, offset 0x1da - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0x36, offset 0x1dd - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x3308, lo: 0xa0, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa6}, - {value: 0x3308, lo: 0xa7, hi: 0xa8}, - {value: 0x3008, lo: 0xa9, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb2}, - {value: 0x3008, lo: 0xb3, hi: 0xb8}, - {value: 0x3308, lo: 0xb9, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x37, offset 0x1ea - {value: 0x0000, lo: 0x07}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0040, lo: 0x81, hi: 0x83}, - {value: 0x0018, lo: 0x84, hi: 0x85}, - {value: 0x0008, lo: 0x86, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x38, offset 0x1f2 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x39, offset 0x1f6 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0028, lo: 0x9a, hi: 0x9a}, - {value: 0x0040, lo: 0x9b, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0xbf}, - // Block 0x3a, offset 0x1fd - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x3308, lo: 0x97, hi: 0x98}, - {value: 0x3008, lo: 0x99, hi: 0x9a}, - {value: 0x3308, lo: 0x9b, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x3b, offset 0x205 - {value: 0x0000, lo: 0x0f}, - {value: 0x0008, lo: 0x80, hi: 0x94}, - {value: 0x3008, lo: 0x95, hi: 0x95}, - {value: 0x3308, lo: 0x96, hi: 0x96}, - {value: 0x3008, lo: 0x97, hi: 0x97}, - {value: 0x3308, lo: 0x98, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x3b08, lo: 0xa0, hi: 0xa0}, - {value: 0x3008, lo: 0xa1, hi: 0xa1}, - {value: 0x3308, lo: 0xa2, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xac}, - {value: 0x3008, lo: 0xad, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, - // Block 0x3c, offset 0x215 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa6}, - {value: 0x0008, lo: 0xa7, hi: 0xa7}, - {value: 0x0018, lo: 0xa8, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xbd}, - {value: 0x3318, lo: 0xbe, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x3d, offset 0x221 - {value: 0x0000, lo: 0x01}, - {value: 0x0040, lo: 0x80, hi: 0xbf}, - // Block 0x3e, offset 0x223 - {value: 0x0000, lo: 0x09}, - {value: 0x3308, lo: 0x80, hi: 0x83}, - {value: 0x3008, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb4}, - {value: 0x3008, lo: 0xb5, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x3008, lo: 0xbd, hi: 0xbf}, - // Block 0x3f, offset 0x22d - {value: 0x0000, lo: 0x0b}, - {value: 0x3008, lo: 0x80, hi: 0x81}, - {value: 0x3308, lo: 0x82, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x83}, - {value: 0x3808, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0xaa}, - {value: 0x3308, lo: 0xab, hi: 0xb3}, - {value: 0x0018, lo: 0xb4, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x40, offset 0x239 - {value: 0x0000, lo: 0x0b}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xa0}, - {value: 0x3008, lo: 0xa1, hi: 0xa1}, - {value: 0x3308, lo: 0xa2, hi: 0xa5}, - {value: 0x3008, lo: 0xa6, hi: 0xa7}, - {value: 0x3308, lo: 0xa8, hi: 0xa9}, - {value: 0x3808, lo: 0xaa, hi: 0xaa}, - {value: 0x3b08, lo: 0xab, hi: 0xab}, - {value: 0x3308, lo: 0xac, hi: 0xad}, - {value: 0x0008, lo: 0xae, hi: 0xbf}, - // Block 0x41, offset 0x245 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xa6}, - {value: 0x3008, lo: 0xa7, hi: 0xa7}, - {value: 0x3308, lo: 0xa8, hi: 0xa9}, - {value: 0x3008, lo: 0xaa, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xad}, - {value: 0x3008, lo: 0xae, hi: 0xae}, - {value: 0x3308, lo: 0xaf, hi: 0xb1}, - {value: 0x3808, lo: 0xb2, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbb}, - {value: 0x0018, lo: 0xbc, hi: 0xbf}, - // Block 0x42, offset 0x251 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x3008, lo: 0xa4, hi: 0xab}, - {value: 0x3308, lo: 0xac, hi: 0xb3}, - {value: 0x3008, lo: 0xb4, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbf}, - // Block 0x43, offset 0x259 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0x8c}, - {value: 0x0008, lo: 0x8d, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x44, offset 0x25e - {value: 0x0000, lo: 0x09}, - {value: 0x0e29, lo: 0x80, hi: 0x80}, - {value: 0x0e41, lo: 0x81, hi: 0x81}, - {value: 0x0e59, lo: 0x82, hi: 0x82}, - {value: 0x0e71, lo: 0x83, hi: 0x83}, - {value: 0x0e89, lo: 0x84, hi: 0x85}, - {value: 0x0ea1, lo: 0x86, hi: 0x86}, - {value: 0x0eb9, lo: 0x87, hi: 0x87}, - {value: 0x057d, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0xbf}, - // Block 0x45, offset 0x268 - {value: 0x0000, lo: 0x10}, - {value: 0x0018, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x3308, lo: 0x90, hi: 0x92}, - {value: 0x0018, lo: 0x93, hi: 0x93}, - {value: 0x3308, lo: 0x94, hi: 0xa0}, - {value: 0x3008, lo: 0xa1, hi: 0xa1}, - {value: 0x3308, lo: 0xa2, hi: 0xa8}, - {value: 0x0008, lo: 0xa9, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xad}, - {value: 0x0008, lo: 0xae, hi: 0xb1}, - {value: 0x3008, lo: 0xb2, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb4}, - {value: 0x0008, lo: 0xb5, hi: 0xb6}, - {value: 0x3008, lo: 0xb7, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x46, offset 0x279 - {value: 0x0000, lo: 0x03}, - {value: 0x3308, lo: 0x80, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xba}, - {value: 0x3308, lo: 0xbb, hi: 0xbf}, - // Block 0x47, offset 0x27d - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x87}, - {value: 0xe045, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0xe045, lo: 0x98, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa7}, - {value: 0xe045, lo: 0xa8, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb7}, - {value: 0xe045, lo: 0xb8, hi: 0xbf}, - // Block 0x48, offset 0x288 - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x3318, lo: 0x90, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xbf}, - // Block 0x49, offset 0x28c - {value: 0x0000, lo: 0x08}, - {value: 0x0018, lo: 0x80, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x84}, - {value: 0x0018, lo: 0x85, hi: 0x88}, - {value: 0x24c1, lo: 0x89, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0x4a, offset 0x295 - {value: 0x0000, lo: 0x07}, - {value: 0x0018, lo: 0x80, hi: 0xab}, - {value: 0x24f1, lo: 0xac, hi: 0xac}, - {value: 0x2529, lo: 0xad, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xae}, - {value: 0x2579, lo: 0xaf, hi: 0xaf}, - {value: 0x25b1, lo: 0xb0, hi: 0xb0}, - {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0x4b, offset 0x29d - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x9f}, - {value: 0x0080, lo: 0xa0, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xad}, - {value: 0x0080, lo: 0xae, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x4c, offset 0x2a3 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0xa8}, - {value: 0x09c5, lo: 0xa9, hi: 0xa9}, - {value: 0x09e5, lo: 0xaa, hi: 0xaa}, - {value: 0x0018, lo: 0xab, hi: 0xbf}, - // Block 0x4d, offset 0x2a8 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xbf}, - // Block 0x4e, offset 0x2ab - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, - {value: 0x28c1, lo: 0x8c, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0xbf}, - // Block 0x4f, offset 0x2af - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0xb3}, - {value: 0x0e66, lo: 0xb4, hi: 0xb4}, - {value: 0x292a, lo: 0xb5, hi: 0xb5}, - {value: 0x0e86, lo: 0xb6, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x50, offset 0x2b5 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x9b}, - {value: 0x2941, lo: 0x9c, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0xbf}, - // Block 0x51, offset 0x2b9 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0x52, offset 0x2bd - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0x0018, lo: 0x98, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbc}, - {value: 0x0018, lo: 0xbd, hi: 0xbf}, - // Block 0x53, offset 0x2c3 - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x92}, - {value: 0x0040, lo: 0x93, hi: 0xab}, - {value: 0x0018, lo: 0xac, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x54, offset 0x2ca - {value: 0x0000, lo: 0x05}, - {value: 0xe185, lo: 0x80, hi: 0x8f}, - {value: 0x03f5, lo: 0x90, hi: 0x9f}, - {value: 0x0ea5, lo: 0xa0, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x55, offset 0x2d0 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x0040, lo: 0xa6, hi: 0xa6}, - {value: 0x0008, lo: 0xa7, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xac}, - {value: 0x0008, lo: 0xad, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x56, offset 0x2d8 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xae}, - {value: 0xe075, lo: 0xaf, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0x57, offset 0x2df - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x0008, lo: 0xb8, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x58, offset 0x2ea - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x8e}, - {value: 0x0040, lo: 0x8f, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x3308, lo: 0xa0, hi: 0xbf}, - // Block 0x59, offset 0x2f4 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xae}, - {value: 0x0008, lo: 0xaf, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x5a, offset 0x2f8 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0xbf}, - // Block 0x5b, offset 0x2fb - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9e}, - {value: 0x0edd, lo: 0x9f, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xbf}, - // Block 0x5c, offset 0x301 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xb2}, - {value: 0x0efd, lo: 0xb3, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0x5d, offset 0x305 - {value: 0x0020, lo: 0x01}, - {value: 0x0f1d, lo: 0x80, hi: 0xbf}, - // Block 0x5e, offset 0x307 - {value: 0x0020, lo: 0x02}, - {value: 0x171d, lo: 0x80, hi: 0x8f}, - {value: 0x18fd, lo: 0x90, hi: 0xbf}, - // Block 0x5f, offset 0x30a - {value: 0x0020, lo: 0x01}, - {value: 0x1efd, lo: 0x80, hi: 0xbf}, - // Block 0x60, offset 0x30c - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0xbf}, - // Block 0x61, offset 0x30f - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x98}, - {value: 0x3308, lo: 0x99, hi: 0x9a}, - {value: 0x29e2, lo: 0x9b, hi: 0x9b}, - {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, - {value: 0x0008, lo: 0x9d, hi: 0x9e}, - {value: 0x2a31, lo: 0x9f, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa0}, - {value: 0x0008, lo: 0xa1, hi: 0xbf}, - // Block 0x62, offset 0x319 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xbe}, - {value: 0x2a69, lo: 0xbf, hi: 0xbf}, - // Block 0x63, offset 0x31c - {value: 0x0000, lo: 0x0e}, - {value: 0x0040, lo: 0x80, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xb0}, - {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, - {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, - {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, - {value: 0x2a7d, lo: 0xb4, hi: 0xb4}, - {value: 0x2a5d, lo: 0xb5, hi: 0xb5}, - {value: 0x2a9d, lo: 0xb6, hi: 0xb6}, - {value: 0x2abd, lo: 0xb7, hi: 0xb7}, - {value: 0x2add, lo: 0xb8, hi: 0xb9}, - {value: 0x2afd, lo: 0xba, hi: 0xbb}, - {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, - {value: 0x2afd, lo: 0xbe, hi: 0xbf}, - // Block 0x64, offset 0x32b - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x65, offset 0x32f - {value: 0x0030, lo: 0x04}, - {value: 0x2aa2, lo: 0x80, hi: 0x9d}, - {value: 0x305a, lo: 0x9e, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x30a2, lo: 0xa0, hi: 0xbf}, - // Block 0x66, offset 0x334 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xbf}, - // Block 0x67, offset 0x337 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0x68, offset 0x33b - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x69, offset 0x340 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xbf}, - // Block 0x6a, offset 0x345 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x0018, lo: 0xa6, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb1}, - {value: 0x0018, lo: 0xb2, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x6b, offset 0x34b - {value: 0x0000, lo: 0x05}, - {value: 0x0040, lo: 0x80, hi: 0xb6}, - {value: 0x0008, lo: 0xb7, hi: 0xb7}, - {value: 0x2009, lo: 0xb8, hi: 0xb8}, - {value: 0x6e89, lo: 0xb9, hi: 0xb9}, - {value: 0x0008, lo: 0xba, hi: 0xbf}, - // Block 0x6c, offset 0x351 - {value: 0x0000, lo: 0x0e}, - {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x3308, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0x85}, - {value: 0x3b08, lo: 0x86, hi: 0x86}, - {value: 0x0008, lo: 0x87, hi: 0x8a}, - {value: 0x3308, lo: 0x8b, hi: 0x8b}, - {value: 0x0008, lo: 0x8c, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xa6}, - {value: 0x3008, lo: 0xa7, hi: 0xa7}, - {value: 0x0018, lo: 0xa8, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x6d, offset 0x360 - {value: 0x0000, lo: 0x05}, - {value: 0x0208, lo: 0x80, hi: 0xb1}, - {value: 0x0108, lo: 0xb2, hi: 0xb2}, - {value: 0x0008, lo: 0xb3, hi: 0xb3}, - {value: 0x0018, lo: 0xb4, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x6e, offset 0x366 - {value: 0x0000, lo: 0x03}, - {value: 0x3008, lo: 0x80, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0xb3}, - {value: 0x3008, lo: 0xb4, hi: 0xbf}, - // Block 0x6f, offset 0x36a - {value: 0x0000, lo: 0x0e}, - {value: 0x3008, lo: 0x80, hi: 0x83}, - {value: 0x3b08, lo: 0x84, hi: 0x84}, - {value: 0x3308, lo: 0x85, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x8d}, - {value: 0x0018, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x3308, lo: 0xa0, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xba}, - {value: 0x0008, lo: 0xbb, hi: 0xbb}, - {value: 0x0018, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x70, offset 0x379 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x71, offset 0x37e - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x3308, lo: 0x87, hi: 0x91}, - {value: 0x3008, lo: 0x92, hi: 0x92}, - {value: 0x3808, lo: 0x93, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x72, offset 0x386 - {value: 0x0000, lo: 0x09}, - {value: 0x3308, lo: 0x80, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb3}, - {value: 0x3008, lo: 0xb4, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xb9}, - {value: 0x3008, lo: 0xba, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x3008, lo: 0xbd, hi: 0xbf}, - // Block 0x73, offset 0x390 - {value: 0x0000, lo: 0x0a}, - {value: 0x3808, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8e}, - {value: 0x0008, lo: 0x8f, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x74, offset 0x39b - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xa8}, - {value: 0x3308, lo: 0xa9, hi: 0xae}, - {value: 0x3008, lo: 0xaf, hi: 0xb0}, - {value: 0x3308, lo: 0xb1, hi: 0xb2}, - {value: 0x3008, lo: 0xb3, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x75, offset 0x3a3 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x82}, - {value: 0x3308, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x8b}, - {value: 0x3308, lo: 0x8c, hi: 0x8c}, - {value: 0x3008, lo: 0x8d, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9b}, - {value: 0x0018, lo: 0x9c, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xb9}, - {value: 0x0008, lo: 0xba, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x3008, lo: 0xbd, hi: 0xbd}, - {value: 0x0008, lo: 0xbe, hi: 0xbf}, - // Block 0x76, offset 0x3b4 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb0}, - {value: 0x0008, lo: 0xb1, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb4}, - {value: 0x0008, lo: 0xb5, hi: 0xb6}, - {value: 0x3308, lo: 0xb7, hi: 0xb8}, - {value: 0x0008, lo: 0xb9, hi: 0xbd}, - {value: 0x3308, lo: 0xbe, hi: 0xbf}, - // Block 0x77, offset 0x3bd - {value: 0x0000, lo: 0x0f}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x9a}, - {value: 0x0008, lo: 0x9b, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xaa}, - {value: 0x3008, lo: 0xab, hi: 0xab}, - {value: 0x3308, lo: 0xac, hi: 0xad}, - {value: 0x3008, lo: 0xae, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xb4}, - {value: 0x3008, lo: 0xb5, hi: 0xb5}, - {value: 0x3b08, lo: 0xb6, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x78, offset 0x3cd - {value: 0x0000, lo: 0x0c}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x88}, - {value: 0x0008, lo: 0x89, hi: 0x8e}, - {value: 0x0040, lo: 0x8f, hi: 0x90}, - {value: 0x0008, lo: 0x91, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x79, offset 0x3da - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9b}, - {value: 0x4465, lo: 0x9c, hi: 0x9c}, - {value: 0x447d, lo: 0x9d, hi: 0x9d}, - {value: 0x2971, lo: 0x9e, hi: 0x9e}, - {value: 0xe06d, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa5}, - {value: 0x0040, lo: 0xa6, hi: 0xaf}, - {value: 0x4495, lo: 0xb0, hi: 0xbf}, - // Block 0x7a, offset 0x3e4 - {value: 0x0000, lo: 0x04}, - {value: 0x44b5, lo: 0x80, hi: 0x8f}, - {value: 0x44d5, lo: 0x90, hi: 0x9f}, - {value: 0x44f5, lo: 0xa0, hi: 0xaf}, - {value: 0x44d5, lo: 0xb0, hi: 0xbf}, - // Block 0x7b, offset 0x3e9 - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xa5}, - {value: 0x3008, lo: 0xa6, hi: 0xa7}, - {value: 0x3308, lo: 0xa8, hi: 0xa8}, - {value: 0x3008, lo: 0xa9, hi: 0xaa}, - {value: 0x0018, lo: 0xab, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xac}, - {value: 0x3b08, lo: 0xad, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x7c, offset 0x3f6 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x7d, offset 0x3fa - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x8a}, - {value: 0x0018, lo: 0x8b, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x7e, offset 0x3ff - {value: 0x0020, lo: 0x01}, - {value: 0x4515, lo: 0x80, hi: 0xbf}, - // Block 0x7f, offset 0x401 - {value: 0x0020, lo: 0x03}, - {value: 0x4d15, lo: 0x80, hi: 0x94}, - {value: 0x4ad5, lo: 0x95, hi: 0x95}, - {value: 0x4fb5, lo: 0x96, hi: 0xbf}, - // Block 0x80, offset 0x405 - {value: 0x0020, lo: 0x01}, - {value: 0x54f5, lo: 0x80, hi: 0xbf}, - // Block 0x81, offset 0x407 - {value: 0x0020, lo: 0x03}, - {value: 0x5cf5, lo: 0x80, hi: 0x84}, - {value: 0x5655, lo: 0x85, hi: 0x85}, - {value: 0x5d95, lo: 0x86, hi: 0xbf}, - // Block 0x82, offset 0x40b - {value: 0x0020, lo: 0x08}, - {value: 0x6b55, lo: 0x80, hi: 0x8f}, - {value: 0x6d15, lo: 0x90, hi: 0x90}, - {value: 0x6d55, lo: 0x91, hi: 0xab}, - {value: 0x6ea1, lo: 0xac, hi: 0xac}, - {value: 0x70b5, lo: 0xad, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x70d5, lo: 0xb0, hi: 0xbf}, - // Block 0x83, offset 0x414 - {value: 0x0020, lo: 0x05}, - {value: 0x72d5, lo: 0x80, hi: 0xad}, - {value: 0x6535, lo: 0xae, hi: 0xae}, - {value: 0x7895, lo: 0xaf, hi: 0xb5}, - {value: 0x6f55, lo: 0xb6, hi: 0xb6}, - {value: 0x7975, lo: 0xb7, hi: 0xbf}, - // Block 0x84, offset 0x41a - {value: 0x0028, lo: 0x03}, - {value: 0x7c21, lo: 0x80, hi: 0x82}, - {value: 0x7be1, lo: 0x83, hi: 0x83}, - {value: 0x7c99, lo: 0x84, hi: 0xbf}, - // Block 0x85, offset 0x41e - {value: 0x0038, lo: 0x0f}, - {value: 0x9db1, lo: 0x80, hi: 0x83}, - {value: 0x9e59, lo: 0x84, hi: 0x85}, - {value: 0x9e91, lo: 0x86, hi: 0x87}, - {value: 0x9ec9, lo: 0x88, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, - {value: 0xa089, lo: 0x92, hi: 0x97}, - {value: 0xa1a1, lo: 0x98, hi: 0x9c}, - {value: 0xa281, lo: 0x9d, hi: 0xb3}, - {value: 0x9d41, lo: 0xb4, hi: 0xb4}, - {value: 0x9db1, lo: 0xb5, hi: 0xb5}, - {value: 0xa789, lo: 0xb6, hi: 0xbb}, - {value: 0xa869, lo: 0xbc, hi: 0xbc}, - {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, - {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, - // Block 0x86, offset 0x42e - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8c}, - {value: 0x0008, lo: 0x8d, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbb}, - {value: 0x0008, lo: 0xbc, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x87, offset 0x438 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0x88, offset 0x43d - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x89, offset 0x440 - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x86}, - {value: 0x0018, lo: 0x87, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x8a, offset 0x446 - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x8e}, - {value: 0x0040, lo: 0x8f, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa0}, - {value: 0x0040, lo: 0xa1, hi: 0xbf}, - // Block 0x8b, offset 0x44d - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbc}, - {value: 0x3308, lo: 0xbd, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x8c, offset 0x452 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x9c}, - {value: 0x0040, lo: 0x9d, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x8d, offset 0x456 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x9f}, - {value: 0x3308, lo: 0xa0, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x8e, offset 0x45c - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xac}, - {value: 0x0008, lo: 0xad, hi: 0xbf}, - // Block 0x8f, offset 0x461 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x90, offset 0x46a - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x91, offset 0x46f - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0xbf}, - // Block 0x92, offset 0x475 - {value: 0x0000, lo: 0x06}, - {value: 0xe145, lo: 0x80, hi: 0x87}, - {value: 0xe1c5, lo: 0x88, hi: 0x8f}, - {value: 0xe145, lo: 0x90, hi: 0x97}, - {value: 0x8ad5, lo: 0x98, hi: 0x9f}, - {value: 0x8aed, lo: 0xa0, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xbf}, - // Block 0x93, offset 0x47c - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xaf}, - {value: 0x8aed, lo: 0xb0, hi: 0xb7}, - {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, - // Block 0x94, offset 0x483 - {value: 0x0000, lo: 0x06}, - {value: 0xe145, lo: 0x80, hi: 0x87}, - {value: 0xe1c5, lo: 0x88, hi: 0x8f}, - {value: 0xe145, lo: 0x90, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x95, offset 0x48a - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x96, offset 0x48e - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xae}, - {value: 0x0018, lo: 0xaf, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x97, offset 0x493 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x98, offset 0x496 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xbf}, - // Block 0x99, offset 0x49b - {value: 0x0000, lo: 0x0b}, - {value: 0x0808, lo: 0x80, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x87}, - {value: 0x0808, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0808, lo: 0x8a, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb6}, - {value: 0x0808, lo: 0xb7, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbb}, - {value: 0x0808, lo: 0xbc, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x0808, lo: 0xbf, hi: 0xbf}, - // Block 0x9a, offset 0x4a7 - {value: 0x0000, lo: 0x05}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x96}, - {value: 0x0818, lo: 0x97, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb6}, - {value: 0x0818, lo: 0xb7, hi: 0xbf}, - // Block 0x9b, offset 0x4ad - {value: 0x0000, lo: 0x04}, - {value: 0x0808, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xa6}, - {value: 0x0818, lo: 0xa7, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x9c, offset 0x4b2 - {value: 0x0000, lo: 0x06}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xb3}, - {value: 0x0808, lo: 0xb4, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xba}, - {value: 0x0818, lo: 0xbb, hi: 0xbf}, - // Block 0x9d, offset 0x4b9 - {value: 0x0000, lo: 0x07}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x0818, lo: 0x96, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbe}, - {value: 0x0818, lo: 0xbf, hi: 0xbf}, - // Block 0x9e, offset 0x4c1 - {value: 0x0000, lo: 0x04}, - {value: 0x0808, lo: 0x80, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbb}, - {value: 0x0818, lo: 0xbc, hi: 0xbd}, - {value: 0x0808, lo: 0xbe, hi: 0xbf}, - // Block 0x9f, offset 0x4c6 - {value: 0x0000, lo: 0x03}, - {value: 0x0818, lo: 0x80, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x91}, - {value: 0x0818, lo: 0x92, hi: 0xbf}, - // Block 0xa0, offset 0x4ca - {value: 0x0000, lo: 0x0f}, - {value: 0x0808, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x3308, lo: 0x85, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x8b}, - {value: 0x3308, lo: 0x8c, hi: 0x8f}, - {value: 0x0808, lo: 0x90, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x94}, - {value: 0x0808, lo: 0x95, hi: 0x97}, - {value: 0x0040, lo: 0x98, hi: 0x98}, - {value: 0x0808, lo: 0x99, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xa1, offset 0x4da - {value: 0x0000, lo: 0x06}, - {value: 0x0818, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0818, lo: 0x90, hi: 0x98}, - {value: 0x0040, lo: 0x99, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xbc}, - {value: 0x0818, lo: 0xbd, hi: 0xbf}, - // Block 0xa2, offset 0x4e1 - {value: 0x0000, lo: 0x03}, - {value: 0x0808, lo: 0x80, hi: 0x9c}, - {value: 0x0818, lo: 0x9d, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xa3, offset 0x4e5 - {value: 0x0000, lo: 0x03}, - {value: 0x0808, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb8}, - {value: 0x0018, lo: 0xb9, hi: 0xbf}, - // Block 0xa4, offset 0x4e9 - {value: 0x0000, lo: 0x06}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0x0818, lo: 0x98, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xb7}, - {value: 0x0818, lo: 0xb8, hi: 0xbf}, - // Block 0xa5, offset 0x4f0 - {value: 0x0000, lo: 0x01}, - {value: 0x0808, lo: 0x80, hi: 0xbf}, - // Block 0xa6, offset 0x4f2 - {value: 0x0000, lo: 0x02}, - {value: 0x0808, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0xbf}, - // Block 0xa7, offset 0x4f5 - {value: 0x0000, lo: 0x02}, - {value: 0x03dd, lo: 0x80, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xbf}, - // Block 0xa8, offset 0x4f8 - {value: 0x0000, lo: 0x03}, - {value: 0x0808, lo: 0x80, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xb9}, - {value: 0x0818, lo: 0xba, hi: 0xbf}, - // Block 0xa9, offset 0x4fc - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0818, lo: 0xa0, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xaa, offset 0x500 - {value: 0x0000, lo: 0x05}, - {value: 0x3008, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xbf}, - // Block 0xab, offset 0x506 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x85}, - {value: 0x3b08, lo: 0x86, hi: 0x86}, - {value: 0x0018, lo: 0x87, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x91}, - {value: 0x0018, lo: 0x92, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xac, offset 0x50f - {value: 0x0000, lo: 0x0b}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb6}, - {value: 0x3008, lo: 0xb7, hi: 0xb8}, - {value: 0x3b08, lo: 0xb9, hi: 0xb9}, - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbc}, - {value: 0x0340, lo: 0xbd, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0xad, offset 0x51b - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x81}, - {value: 0x0040, lo: 0x82, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xa8}, - {value: 0x0040, lo: 0xa9, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0xae, offset 0x522 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xa6}, - {value: 0x3308, lo: 0xa7, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xb2}, - {value: 0x3b08, lo: 0xb3, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xb5}, - {value: 0x0008, lo: 0xb6, hi: 0xbf}, - // Block 0xaf, offset 0x52b - {value: 0x0000, lo: 0x07}, - {value: 0x0018, lo: 0x80, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb3}, - {value: 0x0018, lo: 0xb4, hi: 0xb5}, - {value: 0x0008, lo: 0xb6, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xb0, offset 0x533 - {value: 0x0000, lo: 0x06}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xb2}, - {value: 0x3008, lo: 0xb3, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xbe}, - {value: 0x3008, lo: 0xbf, hi: 0xbf}, - // Block 0xb1, offset 0x53a - {value: 0x0000, lo: 0x0d}, - {value: 0x3808, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x84}, - {value: 0x0018, lo: 0x85, hi: 0x89}, - {value: 0x3308, lo: 0x8a, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9b}, - {value: 0x0008, lo: 0x9c, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xb2, offset 0x548 - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0x92}, - {value: 0x0008, lo: 0x93, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xae}, - {value: 0x3308, lo: 0xaf, hi: 0xb1}, - {value: 0x3008, lo: 0xb2, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb4}, - {value: 0x3808, lo: 0xb5, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xbd}, - {value: 0x3308, lo: 0xbe, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xb3, offset 0x555 - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8e}, - {value: 0x0008, lo: 0x8f, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9e}, - {value: 0x0008, lo: 0x9f, hi: 0xa8}, - {value: 0x0018, lo: 0xa9, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0xb4, offset 0x562 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x3308, lo: 0x9f, hi: 0x9f}, - {value: 0x3008, lo: 0xa0, hi: 0xa2}, - {value: 0x3308, lo: 0xa3, hi: 0xa9}, - {value: 0x3b08, lo: 0xaa, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0xb5, offset 0x56b - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xb4}, - {value: 0x3008, lo: 0xb5, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xbf}, - // Block 0xb6, offset 0x56f - {value: 0x0000, lo: 0x0d}, - {value: 0x3008, lo: 0x80, hi: 0x81}, - {value: 0x3b08, lo: 0x82, hi: 0x82}, - {value: 0x3308, lo: 0x83, hi: 0x84}, - {value: 0x3008, lo: 0x85, hi: 0x85}, - {value: 0x3308, lo: 0x86, hi: 0x86}, - {value: 0x0008, lo: 0x87, hi: 0x8a}, - {value: 0x0018, lo: 0x8b, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0xb7, offset 0x57d - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb8}, - {value: 0x3008, lo: 0xb9, hi: 0xb9}, - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, - // Block 0xb8, offset 0x585 - {value: 0x0000, lo: 0x0a}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x3008, lo: 0x81, hi: 0x81}, - {value: 0x3b08, lo: 0x82, hi: 0x82}, - {value: 0x3308, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x85}, - {value: 0x0018, lo: 0x86, hi: 0x86}, - {value: 0x0008, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xb9, offset 0x590 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0xae}, - {value: 0x3008, lo: 0xaf, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb7}, - {value: 0x3008, lo: 0xb8, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xba, offset 0x599 - {value: 0x0000, lo: 0x05}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0x9b}, - {value: 0x3308, lo: 0x9c, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0xbb, offset 0x59f - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbc}, - {value: 0x3308, lo: 0xbd, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xbc, offset 0x5a7 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xbd, offset 0x5b0 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x3308, lo: 0xab, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xad}, - {value: 0x3008, lo: 0xae, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb5}, - {value: 0x3808, lo: 0xb6, hi: 0xb6}, - {value: 0x3308, lo: 0xb7, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0xbe, offset 0x5ba - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0xbf}, - // Block 0xbf, offset 0x5bd - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9f}, - {value: 0x3008, lo: 0xa0, hi: 0xa1}, - {value: 0x3308, lo: 0xa2, hi: 0xa5}, - {value: 0x3008, lo: 0xa6, hi: 0xa6}, - {value: 0x3308, lo: 0xa7, hi: 0xaa}, - {value: 0x3b08, lo: 0xab, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0018, lo: 0xba, hi: 0xbf}, - // Block 0xc0, offset 0x5c9 - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x049d, lo: 0xa0, hi: 0xbf}, - // Block 0xc1, offset 0x5cc - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0xc2, offset 0x5d1 - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x86}, - {value: 0x3008, lo: 0x87, hi: 0x88}, - {value: 0x3308, lo: 0x89, hi: 0x8a}, - {value: 0x0008, lo: 0x8b, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb3}, - {value: 0x3b08, lo: 0xb4, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb8}, - {value: 0x3008, lo: 0xb9, hi: 0xb9}, - {value: 0x0008, lo: 0xba, hi: 0xba}, - {value: 0x3308, lo: 0xbb, hi: 0xbe}, - {value: 0x0018, lo: 0xbf, hi: 0xbf}, - // Block 0xc3, offset 0x5de - {value: 0x0000, lo: 0x08}, - {value: 0x0018, lo: 0x80, hi: 0x86}, - {value: 0x3b08, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x90}, - {value: 0x3308, lo: 0x91, hi: 0x96}, - {value: 0x3008, lo: 0x97, hi: 0x98}, - {value: 0x3308, lo: 0x99, hi: 0x9b}, - {value: 0x0008, lo: 0x9c, hi: 0xbf}, - // Block 0xc4, offset 0x5e7 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x85}, - {value: 0x0008, lo: 0x86, hi: 0x89}, - {value: 0x3308, lo: 0x8a, hi: 0x96}, - {value: 0x3008, lo: 0x97, hi: 0x97}, - {value: 0x3308, lo: 0x98, hi: 0x98}, - {value: 0x3b08, lo: 0x99, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0x9c}, - {value: 0x0040, lo: 0x9d, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0xa2}, - {value: 0x0040, lo: 0xa3, hi: 0xbf}, - // Block 0xc5, offset 0x5f3 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0xc6, offset 0x5f6 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0xae}, - {value: 0x3008, lo: 0xaf, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xc7, offset 0x600 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xbf}, - // Block 0xc8, offset 0x609 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x91}, - {value: 0x3308, lo: 0x92, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xa8}, - {value: 0x3008, lo: 0xa9, hi: 0xa9}, - {value: 0x3308, lo: 0xaa, hi: 0xb0}, - {value: 0x3008, lo: 0xb1, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb3}, - {value: 0x3008, lo: 0xb4, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xc9, offset 0x615 - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0x8a}, - {value: 0x0008, lo: 0x8b, hi: 0xb0}, - {value: 0x3308, lo: 0xb1, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xb9}, - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, - // Block 0xca, offset 0x622 - {value: 0x0000, lo: 0x07}, - {value: 0x3308, lo: 0x80, hi: 0x83}, - {value: 0x3b08, lo: 0x84, hi: 0x85}, - {value: 0x0008, lo: 0x86, hi: 0x86}, - {value: 0x3308, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xcb, offset 0x62a - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xcc, offset 0x62d - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xcd, offset 0x632 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0xbf}, - // Block 0xce, offset 0x635 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xbf}, - // Block 0xcf, offset 0x638 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0xbf}, - // Block 0xd0, offset 0x63b - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0xd1, offset 0x642 - {value: 0x0000, lo: 0x06}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb4}, - {value: 0x0018, lo: 0xb5, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xd2, offset 0x649 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0xd3, offset 0x64d - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0018, lo: 0x84, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xa2}, - {value: 0x0008, lo: 0xa3, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbf}, - // Block 0xd4, offset 0x658 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0xbf}, - // Block 0xd5, offset 0x65b - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x90}, - {value: 0x3008, lo: 0x91, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xd6, offset 0x661 - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x8e}, - {value: 0x3308, lo: 0x8f, hi: 0x92}, - {value: 0x0008, lo: 0x93, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xd7, offset 0x666 - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xbf}, - // Block 0xd8, offset 0x66a - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xd9, offset 0x66d - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xbf}, - // Block 0xda, offset 0x670 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xbf}, - // Block 0xdb, offset 0x673 - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0xdc, offset 0x676 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0xdd, offset 0x679 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0xde, offset 0x67e - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9b}, - {value: 0x0018, lo: 0x9c, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x03c0, lo: 0xa0, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xbf}, - // Block 0xdf, offset 0x688 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xe0, offset 0x68b - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa8}, - {value: 0x0018, lo: 0xa9, hi: 0xbf}, - // Block 0xe1, offset 0x68f - {value: 0x0000, lo: 0x0e}, - {value: 0x0018, lo: 0x80, hi: 0x9d}, - {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, - {value: 0xb601, lo: 0x9f, hi: 0x9f}, - {value: 0xb649, lo: 0xa0, hi: 0xa0}, - {value: 0xb6b1, lo: 0xa1, hi: 0xa1}, - {value: 0xb719, lo: 0xa2, hi: 0xa2}, - {value: 0xb781, lo: 0xa3, hi: 0xa3}, - {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, - {value: 0x3018, lo: 0xa5, hi: 0xa6}, - {value: 0x3318, lo: 0xa7, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xac}, - {value: 0x3018, lo: 0xad, hi: 0xb2}, - {value: 0x0340, lo: 0xb3, hi: 0xba}, - {value: 0x3318, lo: 0xbb, hi: 0xbf}, - // Block 0xe2, offset 0x69e - {value: 0x0000, lo: 0x0b}, - {value: 0x3318, lo: 0x80, hi: 0x82}, - {value: 0x0018, lo: 0x83, hi: 0x84}, - {value: 0x3318, lo: 0x85, hi: 0x8b}, - {value: 0x0018, lo: 0x8c, hi: 0xa9}, - {value: 0x3318, lo: 0xaa, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xba}, - {value: 0xb851, lo: 0xbb, hi: 0xbb}, - {value: 0xb899, lo: 0xbc, hi: 0xbc}, - {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, - {value: 0xb949, lo: 0xbe, hi: 0xbe}, - {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, - // Block 0xe3, offset 0x6aa - {value: 0x0000, lo: 0x03}, - {value: 0xba19, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0xa8}, - {value: 0x0040, lo: 0xa9, hi: 0xbf}, - // Block 0xe4, offset 0x6ae - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x81}, - {value: 0x3318, lo: 0x82, hi: 0x84}, - {value: 0x0018, lo: 0x85, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0xbf}, - // Block 0xe5, offset 0x6b3 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xe6, offset 0x6b8 - {value: 0x0000, lo: 0x03}, - {value: 0x3308, lo: 0x80, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xba}, - {value: 0x3308, lo: 0xbb, hi: 0xbf}, - // Block 0xe7, offset 0x6bc - {value: 0x0000, lo: 0x04}, - {value: 0x3308, lo: 0x80, hi: 0xac}, - {value: 0x0018, lo: 0xad, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0xe8, offset 0x6c1 - {value: 0x0000, lo: 0x08}, - {value: 0x0018, lo: 0x80, hi: 0x83}, - {value: 0x3308, lo: 0x84, hi: 0x84}, - {value: 0x0018, lo: 0x85, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x9a}, - {value: 0x3308, lo: 0x9b, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x3308, lo: 0xa1, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0xe9, offset 0x6ca - {value: 0x0000, lo: 0x0a}, - {value: 0x3308, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x3308, lo: 0x88, hi: 0x98}, - {value: 0x0040, lo: 0x99, hi: 0x9a}, - {value: 0x3308, lo: 0x9b, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xa2}, - {value: 0x3308, lo: 0xa3, hi: 0xa4}, - {value: 0x0040, lo: 0xa5, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xbf}, - // Block 0xea, offset 0x6d5 - {value: 0x0000, lo: 0x05}, - {value: 0x0808, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0x86}, - {value: 0x0818, lo: 0x87, hi: 0x8f}, - {value: 0x3308, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0xbf}, - // Block 0xeb, offset 0x6db - {value: 0x0000, lo: 0x07}, - {value: 0x0a08, lo: 0x80, hi: 0x83}, - {value: 0x3308, lo: 0x84, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8f}, - {value: 0x0808, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9d}, - {value: 0x0818, lo: 0x9e, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xec, offset 0x6e3 - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xed, offset 0x6e7 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0xee, offset 0x6eb - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xb0}, - {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0xef, offset 0x6f1 - {value: 0x0000, lo: 0x05}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x0018, lo: 0x91, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xf0, offset 0x6f7 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x8f}, - {value: 0xc1c1, lo: 0x90, hi: 0x90}, - {value: 0x0018, lo: 0x91, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xf1, offset 0x6fc - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0xa5}, - {value: 0x0018, lo: 0xa6, hi: 0xbf}, - // Block 0xf2, offset 0x6ff - {value: 0x0000, lo: 0x0f}, - {value: 0xc7e9, lo: 0x80, hi: 0x80}, - {value: 0xc839, lo: 0x81, hi: 0x81}, - {value: 0xc889, lo: 0x82, hi: 0x82}, - {value: 0xc8d9, lo: 0x83, hi: 0x83}, - {value: 0xc929, lo: 0x84, hi: 0x84}, - {value: 0xc979, lo: 0x85, hi: 0x85}, - {value: 0xc9c9, lo: 0x86, hi: 0x86}, - {value: 0xca19, lo: 0x87, hi: 0x87}, - {value: 0xca69, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x8f}, - {value: 0xcab9, lo: 0x90, hi: 0x90}, - {value: 0xcad9, lo: 0x91, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa5}, - {value: 0x0040, lo: 0xa6, hi: 0xbf}, - // Block 0xf3, offset 0x70f - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x94}, - {value: 0x0040, lo: 0x95, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0xf4, offset 0x716 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0xf5, offset 0x719 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x94}, - {value: 0x0040, lo: 0x95, hi: 0xbf}, - // Block 0xf6, offset 0x71c - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0xf7, offset 0x720 - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xbf}, - // Block 0xf8, offset 0x726 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xbf}, - // Block 0xf9, offset 0x72b - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xfa, offset 0x730 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xbf}, - // Block 0xfb, offset 0x735 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x97}, - {value: 0x0040, lo: 0x98, hi: 0xbf}, - // Block 0xfc, offset 0x738 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0040, lo: 0x81, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xbf}, - // Block 0xfd, offset 0x73d - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0xbf}, - // Block 0xfe, offset 0x740 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xff, offset 0x743 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x100, offset 0x747 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x101, offset 0x74b - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xa0}, - {value: 0x0040, lo: 0xa1, hi: 0xbf}, - // Block 0x102, offset 0x74e - {value: 0x0020, lo: 0x0f}, - {value: 0xdeb9, lo: 0x80, hi: 0x89}, - {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, - {value: 0xdff9, lo: 0x8b, hi: 0x9c}, - {value: 0x8e1d, lo: 0x9d, hi: 0x9d}, - {value: 0xe239, lo: 0x9e, hi: 0xa2}, - {value: 0x8e3d, lo: 0xa3, hi: 0xa3}, - {value: 0xe2d9, lo: 0xa4, hi: 0xab}, - {value: 0x7ed5, lo: 0xac, hi: 0xac}, - {value: 0xe3d9, lo: 0xad, hi: 0xaf}, - {value: 0x8e5d, lo: 0xb0, hi: 0xb0}, - {value: 0xe439, lo: 0xb1, hi: 0xb6}, - {value: 0x8e7d, lo: 0xb7, hi: 0xb9}, - {value: 0xe4f9, lo: 0xba, hi: 0xba}, - {value: 0x8edd, lo: 0xbb, hi: 0xbb}, - {value: 0xe519, lo: 0xbc, hi: 0xbf}, - // Block 0x103, offset 0x75e - {value: 0x0020, lo: 0x10}, - {value: 0x937d, lo: 0x80, hi: 0x80}, - {value: 0xf099, lo: 0x81, hi: 0x86}, - {value: 0x939d, lo: 0x87, hi: 0x8a}, - {value: 0xd9f9, lo: 0x8b, hi: 0x8b}, - {value: 0xf159, lo: 0x8c, hi: 0x96}, - {value: 0x941d, lo: 0x97, hi: 0x97}, - {value: 0xf2b9, lo: 0x98, hi: 0xa3}, - {value: 0x943d, lo: 0xa4, hi: 0xa6}, - {value: 0xf439, lo: 0xa7, hi: 0xaa}, - {value: 0x949d, lo: 0xab, hi: 0xab}, - {value: 0xf4b9, lo: 0xac, hi: 0xac}, - {value: 0x94bd, lo: 0xad, hi: 0xad}, - {value: 0xf4d9, lo: 0xae, hi: 0xaf}, - {value: 0x94dd, lo: 0xb0, hi: 0xb1}, - {value: 0xf519, lo: 0xb2, hi: 0xbe}, - {value: 0x2040, lo: 0xbf, hi: 0xbf}, - // Block 0x104, offset 0x76f - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0340, lo: 0x81, hi: 0x81}, - {value: 0x0040, lo: 0x82, hi: 0x9f}, - {value: 0x0340, lo: 0xa0, hi: 0xbf}, - // Block 0x105, offset 0x774 - {value: 0x0000, lo: 0x01}, - {value: 0x0340, lo: 0x80, hi: 0xbf}, - // Block 0x106, offset 0x776 - {value: 0x0000, lo: 0x01}, - {value: 0x33c0, lo: 0x80, hi: 0xbf}, - // Block 0x107, offset 0x778 - {value: 0x0000, lo: 0x02}, - {value: 0x33c0, lo: 0x80, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, -} - -// Total table size 42115 bytes (41KiB); checksum: F4A1FA4E diff --git a/vendor/golang.org/x/text/internal/export/idna/tables9.0.0.go b/vendor/golang.org/x/text/internal/export/idna/tables9.0.0.go deleted file mode 100644 index 07696684..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/tables9.0.0.go +++ /dev/null @@ -1,4486 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build !go1.10 - -package idna - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" - -var mappings string = "" + // Size: 8176 bytes - "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + - "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + - "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + - "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" + - "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" + - "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" + - "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" + - "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" + - "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" + - "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" + - "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" + - "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" + - "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" + - "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" + - "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" + - "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" + - "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" + - "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" + - "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" + - "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" + - "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" + - "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" + - "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" + - "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" + - "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" + - "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" + - ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" + - "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" + - "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" + - "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" + - "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" + - "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" + - "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" + - "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" + - "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" + - "月\x0511月\x0512月\x02hg\x02ev\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニング\x09" + - "インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー\x09ガロ" + - "ン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0fキロワッ" + - "ト\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル\x0fサンチ" + - "ーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット\x09ハイツ" + - "\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0cフィート" + - "\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ\x0cポイ" + - "ント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク\x0fマ" + - "ンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09ユアン" + - "\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x042点" + - "\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" + - "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" + - "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" + - "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" + - "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" + - "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" + - "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" + - "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" + - "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" + - "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" + - "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" + - "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x04𤋮\x04𢡊\x04𢡄\x04𣏕\x04𥉉" + - "\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ\x04יִ" + - "\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּׂ\x04א" + - "ַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04ךּ\x04" + - "כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ\x04תּ" + - "\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ\x02ڤ" + - "\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ\x02ڳ" + - "\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ\x02ۅ" + - "\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02ی\x04" + - "ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04تح" + - "\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج\x04حم" + - "\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح\x04ضخ" + - "\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ\x04فم" + - "\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل\x04كم" + - "\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ\x04مم" + - "\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى\x04هي" + - "\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 ٍّ\x05" + - " َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04تر\x04تز" + - "\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04ين\x04ئخ" + - "\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه\x04شم\x04شه" + - "\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي\x04سى\x04سي" + - "\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي\x04ضى\x04ضي" + - "\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06تحج\x06تحم" + - "\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سجح\x06سجى" + - "\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم\x06ضحى" + - "\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي\x06غمى" + - "\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح\x06محج" + - "\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم\x06نحم" + - "\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى\x06تخي" + - "\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي\x06ضحي" + - "\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي\x06كمي" + - "\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي\x06سخي" + - "\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08عليه" + - "\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:\x01!" + - "\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$" + - "\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ\x02إ" + - "\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز\x02س" + - "\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن\x02ه" + - "\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~\x02¢" + - "\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲\x08𝆹" + - "𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η\x02" + - "κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ\x02ڡ" + - "\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)" + - "\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)" + - "\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)" + - "\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03ppv\x02w" + - "c\x02mc\x02md\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ\x03二\x03多\x03解" + - "\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終\x03生\x03販\x03声" + - "\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指\x03走\x03打\x03禁" + - "\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔三〕\x09〔二〕\x09〔安" + - "〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03丸\x03乁\x03你\x03" + - "侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03具\x03㒹\x03內\x03" + - "冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03㔕\x03勇\x03勉\x03" + - "勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03灰\x03及\x03叟\x03" + - "叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03啣\x03善\x03喙\x03" + - "喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03埴\x03堍\x03型\x03" + - "堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03姘\x03婦\x03㛮\x03" + - "嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03屮\x03峀\x03岍\x03" + - "嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03㡢\x03㡼\x03庰\x03" + - "庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03忍\x03志\x03忹\x03" + - "悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03憤\x03憯\x03懞\x03" + - "懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03掃\x03揤\x03搢\x03" + - "揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03書\x03晉\x03㬙\x03" + - "暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03朡\x03杞\x03杓\x03" + - "㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03槪\x03檨\x03櫛\x03" + - "㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03汧\x03洖\x03派\x03" + - "海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03淹\x03潮\x03濆\x03" + - "瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03爵\x03牐\x03犀\x03" + - "犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03㼛\x03甤\x03甾\x03" + - "異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03䂖\x03硎\x03碌\x03" + - "磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03築\x03䈧\x03糒\x03" + - "䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03罺\x03羕\x03翺\x03" + - "者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03䑫\x03芑\x03芋\x03" + - "芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03莽\x03菧\x03著\x03" + - "荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03䕫\x03虐\x03虜\x03" + - "虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03蠁\x03䗹\x03衠\x03" + - "衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03豕\x03貫\x03賁\x03" + - "贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03鈸\x03鋗\x03鋘\x03" + - "鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03䩶\x03韠\x03䪲\x03" + - "頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03鳽\x03䳎\x03䳭\x03" + - "鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻" - -var xorData string = "" + // Size: 4855 bytes - "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + - "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" + - "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" + - "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" + - "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" + - "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" + - "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" + - "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" + - "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" + - "\x03\x037 \x03\x0b+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1c\x02" + - "\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03\xc1r\x02" + - "\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<\x03\xc1s*" + - "\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03\x83\xab" + - "\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96\xe1\xcd" + - "\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03\x9a\xec" + - "\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c!\x03" + - "\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03ʦ\x93" + - "\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7\x03" + - "\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca\xfa" + - "\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e\x03" + - "\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca\xe3" + - "\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99\x03" + - "\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca\xe8" + - "\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03\x0b" + - "\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05" + - "\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03\x0786" + - "\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/\x03" + - "\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f\x03" + - "\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03" + - "\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03\x07" + - "\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07" + - "\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03\x07" + - "\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b\x0a" + - "\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03\x07" + - "\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+\x03" + - "\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03\x04" + - "4\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ " + - "\x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!\x22" + - "\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03" + - "\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>\x03" + - "\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03\x054" + - "\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05)" + - ":\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1e" + - "\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226\x03" + - "\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05\x1b" + - "\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05\x03" + - "\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06" + - "\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08\x03" + - "\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03\x0a6" + - "\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a\x1f" + - "\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03\x0a" + - "\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f\x02" + - "\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/\x03" + - "\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a\x00" + - "\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+\x10" + - "\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#<" + - "\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!\x00" + - "\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18.\x03" + - "\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15\x22" + - "\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b\x12" + - "\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05<" + - "\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" + - "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" + - "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" + - "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" + - "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" + - "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" + - "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" + - "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" + - "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" + - "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" + - "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" + - "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" + - "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" + - "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" + - "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" + - "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" + - "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" + - "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" + - "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" + - "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" + - "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" + - "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" + - "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" + - "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" + - "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" + - "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" + - "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" + - "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," + - "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" + - "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" + - "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" + - "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" + - ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" + - "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" + - "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" + - "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" + - "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" + - "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" + - "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" + - "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" + - "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" + - "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" + - "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" + - "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" + - "(\x04\x023 \x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!\x10\x03\x0b!0" + - "\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b\x03\x09\x1f" + - "\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14\x03\x0a\x01" + - "\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03\x08='\x03" + - "\x08\x1a\x0a\x03\x07</\x03\x07:+\x03\x07\x07*\x03\x06&\x1c\x03\x09\x0c" + - "\x16\x03\x09\x10\x0e\x03\x08'\x0f\x03\x08+\x09\x03\x074%\x03\x06!3\x03" + - "\x06\x03+\x03\x0b\x1e\x19\x03\x0a))\x03\x09\x08\x19\x03\x08,\x05\x03\x07" + - "<2\x03\x06\x1c>\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07\x01\x00" + - "\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03\x09\x11" + - "\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03\x0a/1" + - "\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03\x07<3" + - "\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06\x13\x00" + - "\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(;\x03" + - "\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08\x14$" + - "\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03\x0a" + - "\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19\x01" + - "\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18\x03" + - "\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03\x07" + - "\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03\x0a" + - "\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03\x0b" + - "\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03\x08" + - "\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05\x03" + - "\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11\x03" + - "\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03\x09" + - "\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a." + - "\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" + - "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" + - "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " + - "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" + - "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" + - "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" + - "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" + - "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" + - "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" + - "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," + - "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" + - "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" + - "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" + - "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" + - "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" + - "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" + - "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" + - "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" + - "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" + - "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" + - "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" + - "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" + - "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" + - "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" + - "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" + - "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" + - "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" + - "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" + - "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" + - "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" + - "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" + - "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" + - "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" + - "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" + - "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" + - "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" + - "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" + - "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" + - "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" + - "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" + - "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" + - "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" + - "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" + - "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" + - "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" + - "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" + - "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" + - "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" + - "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," + - "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" + - "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" + - "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" + - "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" + - "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" + - "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" + - "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" + - "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" + - "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" + - "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" + - "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" + - "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" + - "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" + - "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" + - "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" + - "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" + - "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" + - "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" + - "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" + - "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" + - "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" + - "\x04\x03\x0c?\x05\x03\x0c<?\x03\x0c=\x00\x03\x0c=\x06\x03\x0c=\x05\x03" + - "\x0c=\x0c\x03\x0c=\x0f\x03\x0c=\x0d\x03\x0c=\x0b\x03\x0c=\x07\x03\x0c=" + - "\x19\x03\x0c=\x15\x03\x0c=\x11\x03\x0c=1\x03\x0c=3\x03\x0c=0\x03\x0c=>" + - "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" + - "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" + - "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" + - "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" + - "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" + - "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" + - "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" + - "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" + - "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" + - "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" + - "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" + - "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" + - "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" + - "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" + - "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" + - "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" + - "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" + - "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" + - "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" + - "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" + - "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" + - "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" + - "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" + - "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" + - "\x05\x22\x05\x03\x050\x1d" - -// 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 *idnaTrie) lookup(s []byte) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return idnaValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = idnaIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = idnaIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = idnaIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *idnaTrie) lookupUnsafe(s []byte) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return idnaValues[c0] - } - i := idnaIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = idnaIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = idnaIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *idnaTrie) lookupString(s string) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return idnaValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = idnaIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := idnaIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = idnaIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = idnaIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return idnaValues[c0] - } - i := idnaIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = idnaIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = idnaIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// idnaTrie. Total size: 28600 bytes (27.93 KiB). Checksum: 95575047b5d8fff. -type idnaTrie struct{} - -func newIdnaTrie(i int) *idnaTrie { - return &idnaTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { - switch { - case n < 124: - return uint16(idnaValues[n<<6+uint32(b)]) - default: - n -= 124 - return uint16(idnaSparse.lookup(n, b)) - } -} - -// idnaValues: 126 blocks, 8064 entries, 16128 bytes -// The third block is the zero block. -var idnaValues = [8064]uint16{ - // Block 0x0, offset 0x0 - 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, - 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, - 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080, - 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080, - 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080, - 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080, - 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080, - 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080, - 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008, - 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080, - 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080, - // Block 0x1, offset 0x40 - 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105, - 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105, - 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105, - 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105, - 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080, - 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008, - 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008, - 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008, - 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008, - 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080, - 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, - 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, - 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, - 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, - 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, - 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018, - 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018, - 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a, - 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005, - 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018, - 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018, - // Block 0x4, offset 0x100 - 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008, - 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008, - 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008, - 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008, - 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008, - 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008, - 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008, - 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008, - 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008, - 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d, - 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199, - // Block 0x5, offset 0x140 - 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, - 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008, - 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008, - 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008, - 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008, - 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008, - 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008, - 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008, - 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008, - 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d, - 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9, - // Block 0x6, offset 0x180 - 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008, - 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d, - 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d, - 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d, - 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155, - 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008, - 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d, - 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd, - 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d, - 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008, - 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9, - 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d, - 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d, - 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d, - 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008, - 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008, - 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008, - 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008, - 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008, - 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008, - 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008, - // Block 0x8, offset 0x200 - 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008, - 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008, - 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008, - 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008, - 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008, - 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008, - 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008, - 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008, - 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008, - 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d, - 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008, - // Block 0x9, offset 0x240 - 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018, - 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008, - 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008, - 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018, - 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a, - 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369, - 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018, - 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018, - 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018, - 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, - 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, - // Block 0xa, offset 0x280 - 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, - 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308, - 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308, - 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308, - 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308, - 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308, - 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308, - 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308, - 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, - 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, - 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, - 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040, - 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105, - 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105, - 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105, - 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d, - 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d, - 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008, - 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008, - 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008, - 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008, - // Block 0xc, offset 0x300 - 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008, - 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008, - 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd, - 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008, - 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008, - 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008, - 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008, - 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008, - 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd, - 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008, - 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d, - // Block 0xd, offset 0x340 - 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008, - 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008, - 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008, - 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008, - 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008, - 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008, - 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008, - 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008, - 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008, - 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, - 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, - // Block 0xe, offset 0x380 - 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308, - 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008, - 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, - 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, - 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, - 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008, - 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008, - 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008, - 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008, - 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008, - 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d, - 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d, - 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008, - 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008, - 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008, - 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008, - 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008, - 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008, - 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008, - 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008, - 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008, - // Block 0x10, offset 0x400 - 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008, - 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008, - 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008, - 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008, - 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008, - 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008, - 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008, - 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008, - 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5, - 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, - 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, - // Block 0x11, offset 0x440 - 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840, - 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818, - 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308, - 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308, - 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040, - 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08, - 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08, - 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08, - 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08, - 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08, - 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08, - // Block 0x12, offset 0x480 - 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08, - 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308, - 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308, - 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308, - 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308, - 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808, - 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808, - 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08, - 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429, - 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08, - 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08, - 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08, - 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08, - 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308, - 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840, - 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308, - 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018, - 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08, - 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008, - 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08, - 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08, - // Block 0x14, offset 0x500 - 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818, - 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818, - 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308, - 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08, - 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08, - 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08, - 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08, - 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08, - 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308, - 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308, - 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308, - // Block 0x15, offset 0x540 - 0x540: 0x3008, 0x541: 0x3308, 0x542: 0x3308, 0x543: 0x3308, 0x544: 0x3308, 0x545: 0x3308, - 0x546: 0x3308, 0x547: 0x3308, 0x548: 0x3308, 0x549: 0x3008, 0x54a: 0x3008, 0x54b: 0x3008, - 0x54c: 0x3008, 0x54d: 0x3b08, 0x54e: 0x3008, 0x54f: 0x3008, 0x550: 0x0008, 0x551: 0x3308, - 0x552: 0x3308, 0x553: 0x3308, 0x554: 0x3308, 0x555: 0x3308, 0x556: 0x3308, 0x557: 0x3308, - 0x558: 0x04c9, 0x559: 0x0501, 0x55a: 0x0539, 0x55b: 0x0571, 0x55c: 0x05a9, 0x55d: 0x05e1, - 0x55e: 0x0619, 0x55f: 0x0651, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x3308, 0x563: 0x3308, - 0x564: 0x0018, 0x565: 0x0018, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0008, - 0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008, - 0x570: 0x0018, 0x571: 0x0008, 0x572: 0x0008, 0x573: 0x0008, 0x574: 0x0008, 0x575: 0x0008, - 0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0008, 0x57b: 0x0008, - 0x57c: 0x0008, 0x57d: 0x0008, 0x57e: 0x0008, 0x57f: 0x0008, - // Block 0x16, offset 0x580 - 0x580: 0x0008, 0x581: 0x3308, 0x582: 0x3008, 0x583: 0x3008, 0x584: 0x0040, 0x585: 0x0008, - 0x586: 0x0008, 0x587: 0x0008, 0x588: 0x0008, 0x589: 0x0008, 0x58a: 0x0008, 0x58b: 0x0008, - 0x58c: 0x0008, 0x58d: 0x0040, 0x58e: 0x0040, 0x58f: 0x0008, 0x590: 0x0008, 0x591: 0x0040, - 0x592: 0x0040, 0x593: 0x0008, 0x594: 0x0008, 0x595: 0x0008, 0x596: 0x0008, 0x597: 0x0008, - 0x598: 0x0008, 0x599: 0x0008, 0x59a: 0x0008, 0x59b: 0x0008, 0x59c: 0x0008, 0x59d: 0x0008, - 0x59e: 0x0008, 0x59f: 0x0008, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x0008, 0x5a3: 0x0008, - 0x5a4: 0x0008, 0x5a5: 0x0008, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0040, - 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, - 0x5b0: 0x0008, 0x5b1: 0x0040, 0x5b2: 0x0008, 0x5b3: 0x0040, 0x5b4: 0x0040, 0x5b5: 0x0040, - 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0040, 0x5bb: 0x0040, - 0x5bc: 0x3308, 0x5bd: 0x0008, 0x5be: 0x3008, 0x5bf: 0x3008, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x3008, 0x5c1: 0x3308, 0x5c2: 0x3308, 0x5c3: 0x3308, 0x5c4: 0x3308, 0x5c5: 0x0040, - 0x5c6: 0x0040, 0x5c7: 0x3008, 0x5c8: 0x3008, 0x5c9: 0x0040, 0x5ca: 0x0040, 0x5cb: 0x3008, - 0x5cc: 0x3008, 0x5cd: 0x3b08, 0x5ce: 0x0008, 0x5cf: 0x0040, 0x5d0: 0x0040, 0x5d1: 0x0040, - 0x5d2: 0x0040, 0x5d3: 0x0040, 0x5d4: 0x0040, 0x5d5: 0x0040, 0x5d6: 0x0040, 0x5d7: 0x3008, - 0x5d8: 0x0040, 0x5d9: 0x0040, 0x5da: 0x0040, 0x5db: 0x0040, 0x5dc: 0x0689, 0x5dd: 0x06c1, - 0x5de: 0x0040, 0x5df: 0x06f9, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x3308, 0x5e3: 0x3308, - 0x5e4: 0x0040, 0x5e5: 0x0040, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0008, - 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, - 0x5f0: 0x0008, 0x5f1: 0x0008, 0x5f2: 0x0018, 0x5f3: 0x0018, 0x5f4: 0x0018, 0x5f5: 0x0018, - 0x5f6: 0x0018, 0x5f7: 0x0018, 0x5f8: 0x0018, 0x5f9: 0x0018, 0x5fa: 0x0018, 0x5fb: 0x0018, - 0x5fc: 0x0040, 0x5fd: 0x0040, 0x5fe: 0x0040, 0x5ff: 0x0040, - // Block 0x18, offset 0x600 - 0x600: 0x0040, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3008, 0x604: 0x0040, 0x605: 0x0008, - 0x606: 0x0008, 0x607: 0x0008, 0x608: 0x0008, 0x609: 0x0008, 0x60a: 0x0008, 0x60b: 0x0040, - 0x60c: 0x0040, 0x60d: 0x0040, 0x60e: 0x0040, 0x60f: 0x0008, 0x610: 0x0008, 0x611: 0x0040, - 0x612: 0x0040, 0x613: 0x0008, 0x614: 0x0008, 0x615: 0x0008, 0x616: 0x0008, 0x617: 0x0008, - 0x618: 0x0008, 0x619: 0x0008, 0x61a: 0x0008, 0x61b: 0x0008, 0x61c: 0x0008, 0x61d: 0x0008, - 0x61e: 0x0008, 0x61f: 0x0008, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x0008, 0x623: 0x0008, - 0x624: 0x0008, 0x625: 0x0008, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0040, - 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, - 0x630: 0x0008, 0x631: 0x0040, 0x632: 0x0008, 0x633: 0x0731, 0x634: 0x0040, 0x635: 0x0008, - 0x636: 0x0769, 0x637: 0x0040, 0x638: 0x0008, 0x639: 0x0008, 0x63a: 0x0040, 0x63b: 0x0040, - 0x63c: 0x3308, 0x63d: 0x0040, 0x63e: 0x3008, 0x63f: 0x3008, - // Block 0x19, offset 0x640 - 0x640: 0x3008, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x0040, 0x644: 0x0040, 0x645: 0x0040, - 0x646: 0x0040, 0x647: 0x3308, 0x648: 0x3308, 0x649: 0x0040, 0x64a: 0x0040, 0x64b: 0x3308, - 0x64c: 0x3308, 0x64d: 0x3b08, 0x64e: 0x0040, 0x64f: 0x0040, 0x650: 0x0040, 0x651: 0x3308, - 0x652: 0x0040, 0x653: 0x0040, 0x654: 0x0040, 0x655: 0x0040, 0x656: 0x0040, 0x657: 0x0040, - 0x658: 0x0040, 0x659: 0x07a1, 0x65a: 0x07d9, 0x65b: 0x0811, 0x65c: 0x0008, 0x65d: 0x0040, - 0x65e: 0x0849, 0x65f: 0x0040, 0x660: 0x0040, 0x661: 0x0040, 0x662: 0x0040, 0x663: 0x0040, - 0x664: 0x0040, 0x665: 0x0040, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0008, - 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, - 0x670: 0x3308, 0x671: 0x3308, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0008, 0x675: 0x3308, - 0x676: 0x0040, 0x677: 0x0040, 0x678: 0x0040, 0x679: 0x0040, 0x67a: 0x0040, 0x67b: 0x0040, - 0x67c: 0x0040, 0x67d: 0x0040, 0x67e: 0x0040, 0x67f: 0x0040, - // Block 0x1a, offset 0x680 - 0x680: 0x0040, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x3008, 0x684: 0x0040, 0x685: 0x0008, - 0x686: 0x0008, 0x687: 0x0008, 0x688: 0x0008, 0x689: 0x0008, 0x68a: 0x0008, 0x68b: 0x0008, - 0x68c: 0x0008, 0x68d: 0x0008, 0x68e: 0x0040, 0x68f: 0x0008, 0x690: 0x0008, 0x691: 0x0008, - 0x692: 0x0040, 0x693: 0x0008, 0x694: 0x0008, 0x695: 0x0008, 0x696: 0x0008, 0x697: 0x0008, - 0x698: 0x0008, 0x699: 0x0008, 0x69a: 0x0008, 0x69b: 0x0008, 0x69c: 0x0008, 0x69d: 0x0008, - 0x69e: 0x0008, 0x69f: 0x0008, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x0008, 0x6a3: 0x0008, - 0x6a4: 0x0008, 0x6a5: 0x0008, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0040, - 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, - 0x6b0: 0x0008, 0x6b1: 0x0040, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0040, 0x6b5: 0x0008, - 0x6b6: 0x0008, 0x6b7: 0x0008, 0x6b8: 0x0008, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040, - 0x6bc: 0x3308, 0x6bd: 0x0008, 0x6be: 0x3008, 0x6bf: 0x3008, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x3008, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3308, 0x6c4: 0x3308, 0x6c5: 0x3308, - 0x6c6: 0x0040, 0x6c7: 0x3308, 0x6c8: 0x3308, 0x6c9: 0x3008, 0x6ca: 0x0040, 0x6cb: 0x3008, - 0x6cc: 0x3008, 0x6cd: 0x3b08, 0x6ce: 0x0040, 0x6cf: 0x0040, 0x6d0: 0x0008, 0x6d1: 0x0040, - 0x6d2: 0x0040, 0x6d3: 0x0040, 0x6d4: 0x0040, 0x6d5: 0x0040, 0x6d6: 0x0040, 0x6d7: 0x0040, - 0x6d8: 0x0040, 0x6d9: 0x0040, 0x6da: 0x0040, 0x6db: 0x0040, 0x6dc: 0x0040, 0x6dd: 0x0040, - 0x6de: 0x0040, 0x6df: 0x0040, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x3308, 0x6e3: 0x3308, - 0x6e4: 0x0040, 0x6e5: 0x0040, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0008, - 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, - 0x6f0: 0x0018, 0x6f1: 0x0018, 0x6f2: 0x0040, 0x6f3: 0x0040, 0x6f4: 0x0040, 0x6f5: 0x0040, - 0x6f6: 0x0040, 0x6f7: 0x0040, 0x6f8: 0x0040, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, - 0x6fc: 0x0040, 0x6fd: 0x0040, 0x6fe: 0x0040, 0x6ff: 0x0040, - // Block 0x1c, offset 0x700 - 0x700: 0x0040, 0x701: 0x3308, 0x702: 0x3008, 0x703: 0x3008, 0x704: 0x0040, 0x705: 0x0008, - 0x706: 0x0008, 0x707: 0x0008, 0x708: 0x0008, 0x709: 0x0008, 0x70a: 0x0008, 0x70b: 0x0008, - 0x70c: 0x0008, 0x70d: 0x0040, 0x70e: 0x0040, 0x70f: 0x0008, 0x710: 0x0008, 0x711: 0x0040, - 0x712: 0x0040, 0x713: 0x0008, 0x714: 0x0008, 0x715: 0x0008, 0x716: 0x0008, 0x717: 0x0008, - 0x718: 0x0008, 0x719: 0x0008, 0x71a: 0x0008, 0x71b: 0x0008, 0x71c: 0x0008, 0x71d: 0x0008, - 0x71e: 0x0008, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x0008, 0x723: 0x0008, - 0x724: 0x0008, 0x725: 0x0008, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0040, - 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, - 0x730: 0x0008, 0x731: 0x0040, 0x732: 0x0008, 0x733: 0x0008, 0x734: 0x0040, 0x735: 0x0008, - 0x736: 0x0008, 0x737: 0x0008, 0x738: 0x0008, 0x739: 0x0008, 0x73a: 0x0040, 0x73b: 0x0040, - 0x73c: 0x3308, 0x73d: 0x0008, 0x73e: 0x3008, 0x73f: 0x3308, - // Block 0x1d, offset 0x740 - 0x740: 0x3008, 0x741: 0x3308, 0x742: 0x3308, 0x743: 0x3308, 0x744: 0x3308, 0x745: 0x0040, - 0x746: 0x0040, 0x747: 0x3008, 0x748: 0x3008, 0x749: 0x0040, 0x74a: 0x0040, 0x74b: 0x3008, - 0x74c: 0x3008, 0x74d: 0x3b08, 0x74e: 0x0040, 0x74f: 0x0040, 0x750: 0x0040, 0x751: 0x0040, - 0x752: 0x0040, 0x753: 0x0040, 0x754: 0x0040, 0x755: 0x0040, 0x756: 0x3308, 0x757: 0x3008, - 0x758: 0x0040, 0x759: 0x0040, 0x75a: 0x0040, 0x75b: 0x0040, 0x75c: 0x0881, 0x75d: 0x08b9, - 0x75e: 0x0040, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x3308, 0x763: 0x3308, - 0x764: 0x0040, 0x765: 0x0040, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0008, - 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008, - 0x770: 0x0018, 0x771: 0x0008, 0x772: 0x0018, 0x773: 0x0018, 0x774: 0x0018, 0x775: 0x0018, - 0x776: 0x0018, 0x777: 0x0018, 0x778: 0x0040, 0x779: 0x0040, 0x77a: 0x0040, 0x77b: 0x0040, - 0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x0040, 0x77f: 0x0040, - // Block 0x1e, offset 0x780 - 0x780: 0x0040, 0x781: 0x0040, 0x782: 0x3308, 0x783: 0x0008, 0x784: 0x0040, 0x785: 0x0008, - 0x786: 0x0008, 0x787: 0x0008, 0x788: 0x0008, 0x789: 0x0008, 0x78a: 0x0008, 0x78b: 0x0040, - 0x78c: 0x0040, 0x78d: 0x0040, 0x78e: 0x0008, 0x78f: 0x0008, 0x790: 0x0008, 0x791: 0x0040, - 0x792: 0x0008, 0x793: 0x0008, 0x794: 0x0008, 0x795: 0x0008, 0x796: 0x0040, 0x797: 0x0040, - 0x798: 0x0040, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0008, 0x79d: 0x0040, - 0x79e: 0x0008, 0x79f: 0x0008, 0x7a0: 0x0040, 0x7a1: 0x0040, 0x7a2: 0x0040, 0x7a3: 0x0008, - 0x7a4: 0x0008, 0x7a5: 0x0040, 0x7a6: 0x0040, 0x7a7: 0x0040, 0x7a8: 0x0008, 0x7a9: 0x0008, - 0x7aa: 0x0008, 0x7ab: 0x0040, 0x7ac: 0x0040, 0x7ad: 0x0040, 0x7ae: 0x0008, 0x7af: 0x0008, - 0x7b0: 0x0008, 0x7b1: 0x0008, 0x7b2: 0x0008, 0x7b3: 0x0008, 0x7b4: 0x0008, 0x7b5: 0x0008, - 0x7b6: 0x0008, 0x7b7: 0x0008, 0x7b8: 0x0008, 0x7b9: 0x0008, 0x7ba: 0x0040, 0x7bb: 0x0040, - 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x3008, 0x7bf: 0x3008, - // Block 0x1f, offset 0x7c0 - 0x7c0: 0x3308, 0x7c1: 0x3008, 0x7c2: 0x3008, 0x7c3: 0x3008, 0x7c4: 0x3008, 0x7c5: 0x0040, - 0x7c6: 0x3308, 0x7c7: 0x3308, 0x7c8: 0x3308, 0x7c9: 0x0040, 0x7ca: 0x3308, 0x7cb: 0x3308, - 0x7cc: 0x3308, 0x7cd: 0x3b08, 0x7ce: 0x0040, 0x7cf: 0x0040, 0x7d0: 0x0040, 0x7d1: 0x0040, - 0x7d2: 0x0040, 0x7d3: 0x0040, 0x7d4: 0x0040, 0x7d5: 0x3308, 0x7d6: 0x3308, 0x7d7: 0x0040, - 0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0040, 0x7dd: 0x0040, - 0x7de: 0x0040, 0x7df: 0x0040, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x3308, 0x7e3: 0x3308, - 0x7e4: 0x0040, 0x7e5: 0x0040, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0008, - 0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008, - 0x7f0: 0x0040, 0x7f1: 0x0040, 0x7f2: 0x0040, 0x7f3: 0x0040, 0x7f4: 0x0040, 0x7f5: 0x0040, - 0x7f6: 0x0040, 0x7f7: 0x0040, 0x7f8: 0x0018, 0x7f9: 0x0018, 0x7fa: 0x0018, 0x7fb: 0x0018, - 0x7fc: 0x0018, 0x7fd: 0x0018, 0x7fe: 0x0018, 0x7ff: 0x0018, - // Block 0x20, offset 0x800 - 0x800: 0x0008, 0x801: 0x3308, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x0040, 0x805: 0x0008, - 0x806: 0x0008, 0x807: 0x0008, 0x808: 0x0008, 0x809: 0x0008, 0x80a: 0x0008, 0x80b: 0x0008, - 0x80c: 0x0008, 0x80d: 0x0040, 0x80e: 0x0008, 0x80f: 0x0008, 0x810: 0x0008, 0x811: 0x0040, - 0x812: 0x0008, 0x813: 0x0008, 0x814: 0x0008, 0x815: 0x0008, 0x816: 0x0008, 0x817: 0x0008, - 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0008, 0x81c: 0x0008, 0x81d: 0x0008, - 0x81e: 0x0008, 0x81f: 0x0008, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x0008, 0x823: 0x0008, - 0x824: 0x0008, 0x825: 0x0008, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0040, - 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, - 0x830: 0x0008, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0008, 0x834: 0x0040, 0x835: 0x0008, - 0x836: 0x0008, 0x837: 0x0008, 0x838: 0x0008, 0x839: 0x0008, 0x83a: 0x0040, 0x83b: 0x0040, - 0x83c: 0x3308, 0x83d: 0x0008, 0x83e: 0x3008, 0x83f: 0x3308, - // Block 0x21, offset 0x840 - 0x840: 0x3008, 0x841: 0x3008, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x3008, 0x845: 0x0040, - 0x846: 0x3308, 0x847: 0x3008, 0x848: 0x3008, 0x849: 0x0040, 0x84a: 0x3008, 0x84b: 0x3008, - 0x84c: 0x3308, 0x84d: 0x3b08, 0x84e: 0x0040, 0x84f: 0x0040, 0x850: 0x0040, 0x851: 0x0040, - 0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0040, 0x855: 0x3008, 0x856: 0x3008, 0x857: 0x0040, - 0x858: 0x0040, 0x859: 0x0040, 0x85a: 0x0040, 0x85b: 0x0040, 0x85c: 0x0040, 0x85d: 0x0040, - 0x85e: 0x0008, 0x85f: 0x0040, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x3308, 0x863: 0x3308, - 0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008, - 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, - 0x870: 0x0040, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0040, 0x874: 0x0040, 0x875: 0x0040, - 0x876: 0x0040, 0x877: 0x0040, 0x878: 0x0040, 0x879: 0x0040, 0x87a: 0x0040, 0x87b: 0x0040, - 0x87c: 0x0040, 0x87d: 0x0040, 0x87e: 0x0040, 0x87f: 0x0040, - // Block 0x22, offset 0x880 - 0x880: 0x3008, 0x881: 0x3308, 0x882: 0x3308, 0x883: 0x3308, 0x884: 0x3308, 0x885: 0x0040, - 0x886: 0x3008, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008, - 0x88c: 0x3008, 0x88d: 0x3b08, 0x88e: 0x0008, 0x88f: 0x0018, 0x890: 0x0040, 0x891: 0x0040, - 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x3008, - 0x898: 0x0018, 0x899: 0x0018, 0x89a: 0x0018, 0x89b: 0x0018, 0x89c: 0x0018, 0x89d: 0x0018, - 0x89e: 0x0018, 0x89f: 0x0008, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308, - 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008, - 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, - 0x8b0: 0x0018, 0x8b1: 0x0018, 0x8b2: 0x0018, 0x8b3: 0x0018, 0x8b4: 0x0018, 0x8b5: 0x0018, - 0x8b6: 0x0018, 0x8b7: 0x0018, 0x8b8: 0x0018, 0x8b9: 0x0018, 0x8ba: 0x0008, 0x8bb: 0x0008, - 0x8bc: 0x0008, 0x8bd: 0x0008, 0x8be: 0x0008, 0x8bf: 0x0008, - // Block 0x23, offset 0x8c0 - 0x8c0: 0x0040, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x0040, 0x8c4: 0x0008, 0x8c5: 0x0040, - 0x8c6: 0x0040, 0x8c7: 0x0008, 0x8c8: 0x0008, 0x8c9: 0x0040, 0x8ca: 0x0008, 0x8cb: 0x0040, - 0x8cc: 0x0040, 0x8cd: 0x0008, 0x8ce: 0x0040, 0x8cf: 0x0040, 0x8d0: 0x0040, 0x8d1: 0x0040, - 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0008, - 0x8d8: 0x0040, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0008, 0x8dd: 0x0008, - 0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0040, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008, - 0x8e4: 0x0040, 0x8e5: 0x0008, 0x8e6: 0x0040, 0x8e7: 0x0008, 0x8e8: 0x0040, 0x8e9: 0x0040, - 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0040, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008, - 0x8f0: 0x0008, 0x8f1: 0x3308, 0x8f2: 0x0008, 0x8f3: 0x0929, 0x8f4: 0x3308, 0x8f5: 0x3308, - 0x8f6: 0x3308, 0x8f7: 0x3308, 0x8f8: 0x3308, 0x8f9: 0x3308, 0x8fa: 0x0040, 0x8fb: 0x3308, - 0x8fc: 0x3308, 0x8fd: 0x0008, 0x8fe: 0x0040, 0x8ff: 0x0040, - // Block 0x24, offset 0x900 - 0x900: 0x0008, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x09d1, 0x904: 0x0008, 0x905: 0x0008, - 0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0040, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008, - 0x90c: 0x0008, 0x90d: 0x0a09, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008, - 0x912: 0x0a41, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0a79, - 0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0ab1, 0x91d: 0x0008, - 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, - 0x924: 0x0008, 0x925: 0x0008, 0x926: 0x0008, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0ae9, - 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0040, 0x92e: 0x0040, 0x92f: 0x0040, - 0x930: 0x0040, 0x931: 0x3308, 0x932: 0x3308, 0x933: 0x0b21, 0x934: 0x3308, 0x935: 0x0b59, - 0x936: 0x0b91, 0x937: 0x0bc9, 0x938: 0x0c19, 0x939: 0x0c51, 0x93a: 0x3308, 0x93b: 0x3308, - 0x93c: 0x3308, 0x93d: 0x3308, 0x93e: 0x3308, 0x93f: 0x3008, - // Block 0x25, offset 0x940 - 0x940: 0x3308, 0x941: 0x0ca1, 0x942: 0x3308, 0x943: 0x3308, 0x944: 0x3b08, 0x945: 0x0018, - 0x946: 0x3308, 0x947: 0x3308, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, - 0x94c: 0x0008, 0x94d: 0x3308, 0x94e: 0x3308, 0x94f: 0x3308, 0x950: 0x3308, 0x951: 0x3308, - 0x952: 0x3308, 0x953: 0x0cd9, 0x954: 0x3308, 0x955: 0x3308, 0x956: 0x3308, 0x957: 0x3308, - 0x958: 0x0040, 0x959: 0x3308, 0x95a: 0x3308, 0x95b: 0x3308, 0x95c: 0x3308, 0x95d: 0x0d11, - 0x95e: 0x3308, 0x95f: 0x3308, 0x960: 0x3308, 0x961: 0x3308, 0x962: 0x0d49, 0x963: 0x3308, - 0x964: 0x3308, 0x965: 0x3308, 0x966: 0x3308, 0x967: 0x0d81, 0x968: 0x3308, 0x969: 0x3308, - 0x96a: 0x3308, 0x96b: 0x3308, 0x96c: 0x0db9, 0x96d: 0x3308, 0x96e: 0x3308, 0x96f: 0x3308, - 0x970: 0x3308, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x3308, 0x974: 0x3308, 0x975: 0x3308, - 0x976: 0x3308, 0x977: 0x3308, 0x978: 0x3308, 0x979: 0x0df1, 0x97a: 0x3308, 0x97b: 0x3308, - 0x97c: 0x3308, 0x97d: 0x0040, 0x97e: 0x0018, 0x97f: 0x0018, - // Block 0x26, offset 0x980 - 0x980: 0x0008, 0x981: 0x0008, 0x982: 0x0008, 0x983: 0x0008, 0x984: 0x0008, 0x985: 0x0008, - 0x986: 0x0008, 0x987: 0x0008, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, - 0x98c: 0x0008, 0x98d: 0x0008, 0x98e: 0x0008, 0x98f: 0x0008, 0x990: 0x0008, 0x991: 0x0008, - 0x992: 0x0008, 0x993: 0x0008, 0x994: 0x0008, 0x995: 0x0008, 0x996: 0x0008, 0x997: 0x0008, - 0x998: 0x0008, 0x999: 0x0008, 0x99a: 0x0008, 0x99b: 0x0008, 0x99c: 0x0008, 0x99d: 0x0008, - 0x99e: 0x0008, 0x99f: 0x0008, 0x9a0: 0x0008, 0x9a1: 0x0008, 0x9a2: 0x0008, 0x9a3: 0x0008, - 0x9a4: 0x0008, 0x9a5: 0x0008, 0x9a6: 0x0008, 0x9a7: 0x0008, 0x9a8: 0x0008, 0x9a9: 0x0008, - 0x9aa: 0x0008, 0x9ab: 0x0008, 0x9ac: 0x0039, 0x9ad: 0x0ed1, 0x9ae: 0x0ee9, 0x9af: 0x0008, - 0x9b0: 0x0ef9, 0x9b1: 0x0f09, 0x9b2: 0x0f19, 0x9b3: 0x0f31, 0x9b4: 0x0249, 0x9b5: 0x0f41, - 0x9b6: 0x0259, 0x9b7: 0x0f51, 0x9b8: 0x0359, 0x9b9: 0x0f61, 0x9ba: 0x0f71, 0x9bb: 0x0008, - 0x9bc: 0x00d9, 0x9bd: 0x0f81, 0x9be: 0x0f99, 0x9bf: 0x0269, - // Block 0x27, offset 0x9c0 - 0x9c0: 0x0fa9, 0x9c1: 0x0fb9, 0x9c2: 0x0279, 0x9c3: 0x0039, 0x9c4: 0x0fc9, 0x9c5: 0x0fe1, - 0x9c6: 0x059d, 0x9c7: 0x0ee9, 0x9c8: 0x0ef9, 0x9c9: 0x0f09, 0x9ca: 0x0ff9, 0x9cb: 0x1011, - 0x9cc: 0x1029, 0x9cd: 0x0f31, 0x9ce: 0x0008, 0x9cf: 0x0f51, 0x9d0: 0x0f61, 0x9d1: 0x1041, - 0x9d2: 0x00d9, 0x9d3: 0x1059, 0x9d4: 0x05b5, 0x9d5: 0x05b5, 0x9d6: 0x0f99, 0x9d7: 0x0fa9, - 0x9d8: 0x0fb9, 0x9d9: 0x059d, 0x9da: 0x1071, 0x9db: 0x1089, 0x9dc: 0x05cd, 0x9dd: 0x1099, - 0x9de: 0x10b1, 0x9df: 0x10c9, 0x9e0: 0x10e1, 0x9e1: 0x10f9, 0x9e2: 0x0f41, 0x9e3: 0x0269, - 0x9e4: 0x0fb9, 0x9e5: 0x1089, 0x9e6: 0x1099, 0x9e7: 0x10b1, 0x9e8: 0x1111, 0x9e9: 0x10e1, - 0x9ea: 0x10f9, 0x9eb: 0x0008, 0x9ec: 0x0008, 0x9ed: 0x0008, 0x9ee: 0x0008, 0x9ef: 0x0008, - 0x9f0: 0x0008, 0x9f1: 0x0008, 0x9f2: 0x0008, 0x9f3: 0x0008, 0x9f4: 0x0008, 0x9f5: 0x0008, - 0x9f6: 0x0008, 0x9f7: 0x0008, 0x9f8: 0x1129, 0x9f9: 0x0008, 0x9fa: 0x0008, 0x9fb: 0x0008, - 0x9fc: 0x0008, 0x9fd: 0x0008, 0x9fe: 0x0008, 0x9ff: 0x0008, - // Block 0x28, offset 0xa00 - 0xa00: 0x0008, 0xa01: 0x0008, 0xa02: 0x0008, 0xa03: 0x0008, 0xa04: 0x0008, 0xa05: 0x0008, - 0xa06: 0x0008, 0xa07: 0x0008, 0xa08: 0x0008, 0xa09: 0x0008, 0xa0a: 0x0008, 0xa0b: 0x0008, - 0xa0c: 0x0008, 0xa0d: 0x0008, 0xa0e: 0x0008, 0xa0f: 0x0008, 0xa10: 0x0008, 0xa11: 0x0008, - 0xa12: 0x0008, 0xa13: 0x0008, 0xa14: 0x0008, 0xa15: 0x0008, 0xa16: 0x0008, 0xa17: 0x0008, - 0xa18: 0x0008, 0xa19: 0x0008, 0xa1a: 0x0008, 0xa1b: 0x1141, 0xa1c: 0x1159, 0xa1d: 0x1169, - 0xa1e: 0x1181, 0xa1f: 0x1029, 0xa20: 0x1199, 0xa21: 0x11a9, 0xa22: 0x11c1, 0xa23: 0x11d9, - 0xa24: 0x11f1, 0xa25: 0x1209, 0xa26: 0x1221, 0xa27: 0x05e5, 0xa28: 0x1239, 0xa29: 0x1251, - 0xa2a: 0xe17d, 0xa2b: 0x1269, 0xa2c: 0x1281, 0xa2d: 0x1299, 0xa2e: 0x12b1, 0xa2f: 0x12c9, - 0xa30: 0x12e1, 0xa31: 0x12f9, 0xa32: 0x1311, 0xa33: 0x1329, 0xa34: 0x1341, 0xa35: 0x1359, - 0xa36: 0x1371, 0xa37: 0x1389, 0xa38: 0x05fd, 0xa39: 0x13a1, 0xa3a: 0x13b9, 0xa3b: 0x13d1, - 0xa3c: 0x13e1, 0xa3d: 0x13f9, 0xa3e: 0x1411, 0xa3f: 0x1429, - // Block 0x29, offset 0xa40 - 0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008, - 0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008, - 0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008, - 0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0xe00d, 0xa57: 0x0008, - 0xa58: 0xe00d, 0xa59: 0x0008, 0xa5a: 0xe00d, 0xa5b: 0x0008, 0xa5c: 0xe00d, 0xa5d: 0x0008, - 0xa5e: 0xe00d, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008, - 0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008, - 0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008, - 0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008, - 0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008, - 0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008, - // Block 0x2a, offset 0xa80 - 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008, - 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008, - 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008, - 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008, - 0xa98: 0x0008, 0xa99: 0x0008, 0xa9a: 0x0615, 0xa9b: 0x0635, 0xa9c: 0x0008, 0xa9d: 0x0008, - 0xa9e: 0x1441, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008, - 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008, - 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008, - 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008, - 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008, - 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008, - // Block 0x2b, offset 0xac0 - 0xac0: 0x0008, 0xac1: 0x0008, 0xac2: 0x0008, 0xac3: 0x0008, 0xac4: 0x0008, 0xac5: 0x0008, - 0xac6: 0x0040, 0xac7: 0x0040, 0xac8: 0xe045, 0xac9: 0xe045, 0xaca: 0xe045, 0xacb: 0xe045, - 0xacc: 0xe045, 0xacd: 0xe045, 0xace: 0x0040, 0xacf: 0x0040, 0xad0: 0x0008, 0xad1: 0x0008, - 0xad2: 0x0008, 0xad3: 0x0008, 0xad4: 0x0008, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008, - 0xad8: 0x0040, 0xad9: 0xe045, 0xada: 0x0040, 0xadb: 0xe045, 0xadc: 0x0040, 0xadd: 0xe045, - 0xade: 0x0040, 0xadf: 0xe045, 0xae0: 0x0008, 0xae1: 0x0008, 0xae2: 0x0008, 0xae3: 0x0008, - 0xae4: 0x0008, 0xae5: 0x0008, 0xae6: 0x0008, 0xae7: 0x0008, 0xae8: 0xe045, 0xae9: 0xe045, - 0xaea: 0xe045, 0xaeb: 0xe045, 0xaec: 0xe045, 0xaed: 0xe045, 0xaee: 0xe045, 0xaef: 0xe045, - 0xaf0: 0x0008, 0xaf1: 0x1459, 0xaf2: 0x0008, 0xaf3: 0x1471, 0xaf4: 0x0008, 0xaf5: 0x1489, - 0xaf6: 0x0008, 0xaf7: 0x14a1, 0xaf8: 0x0008, 0xaf9: 0x14b9, 0xafa: 0x0008, 0xafb: 0x14d1, - 0xafc: 0x0008, 0xafd: 0x14e9, 0xafe: 0x0040, 0xaff: 0x0040, - // Block 0x2c, offset 0xb00 - 0xb00: 0x1501, 0xb01: 0x1531, 0xb02: 0x1561, 0xb03: 0x1591, 0xb04: 0x15c1, 0xb05: 0x15f1, - 0xb06: 0x1621, 0xb07: 0x1651, 0xb08: 0x1501, 0xb09: 0x1531, 0xb0a: 0x1561, 0xb0b: 0x1591, - 0xb0c: 0x15c1, 0xb0d: 0x15f1, 0xb0e: 0x1621, 0xb0f: 0x1651, 0xb10: 0x1681, 0xb11: 0x16b1, - 0xb12: 0x16e1, 0xb13: 0x1711, 0xb14: 0x1741, 0xb15: 0x1771, 0xb16: 0x17a1, 0xb17: 0x17d1, - 0xb18: 0x1681, 0xb19: 0x16b1, 0xb1a: 0x16e1, 0xb1b: 0x1711, 0xb1c: 0x1741, 0xb1d: 0x1771, - 0xb1e: 0x17a1, 0xb1f: 0x17d1, 0xb20: 0x1801, 0xb21: 0x1831, 0xb22: 0x1861, 0xb23: 0x1891, - 0xb24: 0x18c1, 0xb25: 0x18f1, 0xb26: 0x1921, 0xb27: 0x1951, 0xb28: 0x1801, 0xb29: 0x1831, - 0xb2a: 0x1861, 0xb2b: 0x1891, 0xb2c: 0x18c1, 0xb2d: 0x18f1, 0xb2e: 0x1921, 0xb2f: 0x1951, - 0xb30: 0x0008, 0xb31: 0x0008, 0xb32: 0x1981, 0xb33: 0x19b1, 0xb34: 0x19d9, 0xb35: 0x0040, - 0xb36: 0x0008, 0xb37: 0x1a01, 0xb38: 0xe045, 0xb39: 0xe045, 0xb3a: 0x064d, 0xb3b: 0x1459, - 0xb3c: 0x19b1, 0xb3d: 0x0666, 0xb3e: 0x1a31, 0xb3f: 0x0686, - // Block 0x2d, offset 0xb40 - 0xb40: 0x06a6, 0xb41: 0x1a4a, 0xb42: 0x1a79, 0xb43: 0x1aa9, 0xb44: 0x1ad1, 0xb45: 0x0040, - 0xb46: 0x0008, 0xb47: 0x1af9, 0xb48: 0x06c5, 0xb49: 0x1471, 0xb4a: 0x06dd, 0xb4b: 0x1489, - 0xb4c: 0x1aa9, 0xb4d: 0x1b2a, 0xb4e: 0x1b5a, 0xb4f: 0x1b8a, 0xb50: 0x0008, 0xb51: 0x0008, - 0xb52: 0x0008, 0xb53: 0x1bb9, 0xb54: 0x0040, 0xb55: 0x0040, 0xb56: 0x0008, 0xb57: 0x0008, - 0xb58: 0xe045, 0xb59: 0xe045, 0xb5a: 0x06f5, 0xb5b: 0x14a1, 0xb5c: 0x0040, 0xb5d: 0x1bd2, - 0xb5e: 0x1c02, 0xb5f: 0x1c32, 0xb60: 0x0008, 0xb61: 0x0008, 0xb62: 0x0008, 0xb63: 0x1c61, - 0xb64: 0x0008, 0xb65: 0x0008, 0xb66: 0x0008, 0xb67: 0x0008, 0xb68: 0xe045, 0xb69: 0xe045, - 0xb6a: 0x070d, 0xb6b: 0x14d1, 0xb6c: 0xe04d, 0xb6d: 0x1c7a, 0xb6e: 0x03d2, 0xb6f: 0x1caa, - 0xb70: 0x0040, 0xb71: 0x0040, 0xb72: 0x1cb9, 0xb73: 0x1ce9, 0xb74: 0x1d11, 0xb75: 0x0040, - 0xb76: 0x0008, 0xb77: 0x1d39, 0xb78: 0x0725, 0xb79: 0x14b9, 0xb7a: 0x0515, 0xb7b: 0x14e9, - 0xb7c: 0x1ce9, 0xb7d: 0x073e, 0xb7e: 0x075e, 0xb7f: 0x0040, - // Block 0x2e, offset 0xb80 - 0xb80: 0x000a, 0xb81: 0x000a, 0xb82: 0x000a, 0xb83: 0x000a, 0xb84: 0x000a, 0xb85: 0x000a, - 0xb86: 0x000a, 0xb87: 0x000a, 0xb88: 0x000a, 0xb89: 0x000a, 0xb8a: 0x000a, 0xb8b: 0x03c0, - 0xb8c: 0x0003, 0xb8d: 0x0003, 0xb8e: 0x0340, 0xb8f: 0x0b40, 0xb90: 0x0018, 0xb91: 0xe00d, - 0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x077e, - 0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018, - 0xb9e: 0x0018, 0xb9f: 0x0018, 0xba0: 0x0018, 0xba1: 0x0018, 0xba2: 0x0018, 0xba3: 0x0018, - 0xba4: 0x0040, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0018, 0xba8: 0x0040, 0xba9: 0x0040, - 0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x000a, - 0xbb0: 0x0018, 0xbb1: 0x0018, 0xbb2: 0x0018, 0xbb3: 0x1d69, 0xbb4: 0x1da1, 0xbb5: 0x0018, - 0xbb6: 0x1df1, 0xbb7: 0x1e29, 0xbb8: 0x0018, 0xbb9: 0x0018, 0xbba: 0x0018, 0xbbb: 0x0018, - 0xbbc: 0x1e7a, 0xbbd: 0x0018, 0xbbe: 0x079e, 0xbbf: 0x0018, - // Block 0x2f, offset 0xbc0 - 0xbc0: 0x0018, 0xbc1: 0x0018, 0xbc2: 0x0018, 0xbc3: 0x0018, 0xbc4: 0x0018, 0xbc5: 0x0018, - 0xbc6: 0x0018, 0xbc7: 0x1e92, 0xbc8: 0x1eaa, 0xbc9: 0x1ec2, 0xbca: 0x0018, 0xbcb: 0x0018, - 0xbcc: 0x0018, 0xbcd: 0x0018, 0xbce: 0x0018, 0xbcf: 0x0018, 0xbd0: 0x0018, 0xbd1: 0x0018, - 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x1ed9, - 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018, - 0xbde: 0x0018, 0xbdf: 0x000a, 0xbe0: 0x03c0, 0xbe1: 0x0340, 0xbe2: 0x0340, 0xbe3: 0x0340, - 0xbe4: 0x03c0, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0040, 0xbe8: 0x0040, 0xbe9: 0x0040, - 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x0340, - 0xbf0: 0x1f41, 0xbf1: 0x0f41, 0xbf2: 0x0040, 0xbf3: 0x0040, 0xbf4: 0x1f51, 0xbf5: 0x1f61, - 0xbf6: 0x1f71, 0xbf7: 0x1f81, 0xbf8: 0x1f91, 0xbf9: 0x1fa1, 0xbfa: 0x1fb2, 0xbfb: 0x07bd, - 0xbfc: 0x1fc2, 0xbfd: 0x1fd2, 0xbfe: 0x1fe2, 0xbff: 0x0f71, - // Block 0x30, offset 0xc00 - 0xc00: 0x1f41, 0xc01: 0x00c9, 0xc02: 0x0069, 0xc03: 0x0079, 0xc04: 0x1f51, 0xc05: 0x1f61, - 0xc06: 0x1f71, 0xc07: 0x1f81, 0xc08: 0x1f91, 0xc09: 0x1fa1, 0xc0a: 0x1fb2, 0xc0b: 0x07d5, - 0xc0c: 0x1fc2, 0xc0d: 0x1fd2, 0xc0e: 0x1fe2, 0xc0f: 0x0040, 0xc10: 0x0039, 0xc11: 0x0f09, - 0xc12: 0x00d9, 0xc13: 0x0369, 0xc14: 0x0ff9, 0xc15: 0x0249, 0xc16: 0x0f51, 0xc17: 0x0359, - 0xc18: 0x0f61, 0xc19: 0x0f71, 0xc1a: 0x0f99, 0xc1b: 0x01d9, 0xc1c: 0x0fa9, 0xc1d: 0x0040, - 0xc1e: 0x0040, 0xc1f: 0x0040, 0xc20: 0x0018, 0xc21: 0x0018, 0xc22: 0x0018, 0xc23: 0x0018, - 0xc24: 0x0018, 0xc25: 0x0018, 0xc26: 0x0018, 0xc27: 0x0018, 0xc28: 0x1ff1, 0xc29: 0x0018, - 0xc2a: 0x0018, 0xc2b: 0x0018, 0xc2c: 0x0018, 0xc2d: 0x0018, 0xc2e: 0x0018, 0xc2f: 0x0018, - 0xc30: 0x0018, 0xc31: 0x0018, 0xc32: 0x0018, 0xc33: 0x0018, 0xc34: 0x0018, 0xc35: 0x0018, - 0xc36: 0x0018, 0xc37: 0x0018, 0xc38: 0x0018, 0xc39: 0x0018, 0xc3a: 0x0018, 0xc3b: 0x0018, - 0xc3c: 0x0018, 0xc3d: 0x0018, 0xc3e: 0x0018, 0xc3f: 0x0040, - // Block 0x31, offset 0xc40 - 0xc40: 0x07ee, 0xc41: 0x080e, 0xc42: 0x1159, 0xc43: 0x082d, 0xc44: 0x0018, 0xc45: 0x084e, - 0xc46: 0x086e, 0xc47: 0x1011, 0xc48: 0x0018, 0xc49: 0x088d, 0xc4a: 0x0f31, 0xc4b: 0x0249, - 0xc4c: 0x0249, 0xc4d: 0x0249, 0xc4e: 0x0249, 0xc4f: 0x2009, 0xc50: 0x0f41, 0xc51: 0x0f41, - 0xc52: 0x0359, 0xc53: 0x0359, 0xc54: 0x0018, 0xc55: 0x0f71, 0xc56: 0x2021, 0xc57: 0x0018, - 0xc58: 0x0018, 0xc59: 0x0f99, 0xc5a: 0x2039, 0xc5b: 0x0269, 0xc5c: 0x0269, 0xc5d: 0x0269, - 0xc5e: 0x0018, 0xc5f: 0x0018, 0xc60: 0x2049, 0xc61: 0x08ad, 0xc62: 0x2061, 0xc63: 0x0018, - 0xc64: 0x13d1, 0xc65: 0x0018, 0xc66: 0x2079, 0xc67: 0x0018, 0xc68: 0x13d1, 0xc69: 0x0018, - 0xc6a: 0x0f51, 0xc6b: 0x2091, 0xc6c: 0x0ee9, 0xc6d: 0x1159, 0xc6e: 0x0018, 0xc6f: 0x0f09, - 0xc70: 0x0f09, 0xc71: 0x1199, 0xc72: 0x0040, 0xc73: 0x0f61, 0xc74: 0x00d9, 0xc75: 0x20a9, - 0xc76: 0x20c1, 0xc77: 0x20d9, 0xc78: 0x20f1, 0xc79: 0x0f41, 0xc7a: 0x0018, 0xc7b: 0x08cd, - 0xc7c: 0x2109, 0xc7d: 0x10b1, 0xc7e: 0x10b1, 0xc7f: 0x2109, - // Block 0x32, offset 0xc80 - 0xc80: 0x08ed, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0ef9, - 0xc86: 0x0ef9, 0xc87: 0x0f09, 0xc88: 0x0f41, 0xc89: 0x0259, 0xc8a: 0x0018, 0xc8b: 0x0018, - 0xc8c: 0x0018, 0xc8d: 0x0018, 0xc8e: 0x0008, 0xc8f: 0x0018, 0xc90: 0x2121, 0xc91: 0x2151, - 0xc92: 0x2181, 0xc93: 0x21b9, 0xc94: 0x21e9, 0xc95: 0x2219, 0xc96: 0x2249, 0xc97: 0x2279, - 0xc98: 0x22a9, 0xc99: 0x22d9, 0xc9a: 0x2309, 0xc9b: 0x2339, 0xc9c: 0x2369, 0xc9d: 0x2399, - 0xc9e: 0x23c9, 0xc9f: 0x23f9, 0xca0: 0x0f41, 0xca1: 0x2421, 0xca2: 0x0905, 0xca3: 0x2439, - 0xca4: 0x1089, 0xca5: 0x2451, 0xca6: 0x0925, 0xca7: 0x2469, 0xca8: 0x2491, 0xca9: 0x0369, - 0xcaa: 0x24a9, 0xcab: 0x0945, 0xcac: 0x0359, 0xcad: 0x1159, 0xcae: 0x0ef9, 0xcaf: 0x0f61, - 0xcb0: 0x0f41, 0xcb1: 0x2421, 0xcb2: 0x0965, 0xcb3: 0x2439, 0xcb4: 0x1089, 0xcb5: 0x2451, - 0xcb6: 0x0985, 0xcb7: 0x2469, 0xcb8: 0x2491, 0xcb9: 0x0369, 0xcba: 0x24a9, 0xcbb: 0x09a5, - 0xcbc: 0x0359, 0xcbd: 0x1159, 0xcbe: 0x0ef9, 0xcbf: 0x0f61, - // Block 0x33, offset 0xcc0 - 0xcc0: 0x0018, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0018, - 0xcc6: 0x0018, 0xcc7: 0x0018, 0xcc8: 0x0018, 0xcc9: 0x0018, 0xcca: 0x0018, 0xccb: 0x0040, - 0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040, - 0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040, - 0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0040, 0xcdd: 0x0040, - 0xcde: 0x0040, 0xcdf: 0x0040, 0xce0: 0x00c9, 0xce1: 0x0069, 0xce2: 0x0079, 0xce3: 0x1f51, - 0xce4: 0x1f61, 0xce5: 0x1f71, 0xce6: 0x1f81, 0xce7: 0x1f91, 0xce8: 0x1fa1, 0xce9: 0x2601, - 0xcea: 0x2619, 0xceb: 0x2631, 0xcec: 0x2649, 0xced: 0x2661, 0xcee: 0x2679, 0xcef: 0x2691, - 0xcf0: 0x26a9, 0xcf1: 0x26c1, 0xcf2: 0x26d9, 0xcf3: 0x26f1, 0xcf4: 0x0a06, 0xcf5: 0x0a26, - 0xcf6: 0x0a46, 0xcf7: 0x0a66, 0xcf8: 0x0a86, 0xcf9: 0x0aa6, 0xcfa: 0x0ac6, 0xcfb: 0x0ae6, - 0xcfc: 0x0b06, 0xcfd: 0x270a, 0xcfe: 0x2732, 0xcff: 0x275a, - // Block 0x34, offset 0xd00 - 0xd00: 0x2782, 0xd01: 0x27aa, 0xd02: 0x27d2, 0xd03: 0x27fa, 0xd04: 0x2822, 0xd05: 0x284a, - 0xd06: 0x2872, 0xd07: 0x289a, 0xd08: 0x0040, 0xd09: 0x0040, 0xd0a: 0x0040, 0xd0b: 0x0040, - 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040, - 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040, - 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0b26, 0xd1d: 0x0b46, - 0xd1e: 0x0b66, 0xd1f: 0x0b86, 0xd20: 0x0ba6, 0xd21: 0x0bc6, 0xd22: 0x0be6, 0xd23: 0x0c06, - 0xd24: 0x0c26, 0xd25: 0x0c46, 0xd26: 0x0c66, 0xd27: 0x0c86, 0xd28: 0x0ca6, 0xd29: 0x0cc6, - 0xd2a: 0x0ce6, 0xd2b: 0x0d06, 0xd2c: 0x0d26, 0xd2d: 0x0d46, 0xd2e: 0x0d66, 0xd2f: 0x0d86, - 0xd30: 0x0da6, 0xd31: 0x0dc6, 0xd32: 0x0de6, 0xd33: 0x0e06, 0xd34: 0x0e26, 0xd35: 0x0e46, - 0xd36: 0x0039, 0xd37: 0x0ee9, 0xd38: 0x1159, 0xd39: 0x0ef9, 0xd3a: 0x0f09, 0xd3b: 0x1199, - 0xd3c: 0x0f31, 0xd3d: 0x0249, 0xd3e: 0x0f41, 0xd3f: 0x0259, - // Block 0x35, offset 0xd40 - 0xd40: 0x0f51, 0xd41: 0x0359, 0xd42: 0x0f61, 0xd43: 0x0f71, 0xd44: 0x00d9, 0xd45: 0x0f99, - 0xd46: 0x2039, 0xd47: 0x0269, 0xd48: 0x01d9, 0xd49: 0x0fa9, 0xd4a: 0x0fb9, 0xd4b: 0x1089, - 0xd4c: 0x0279, 0xd4d: 0x0369, 0xd4e: 0x0289, 0xd4f: 0x13d1, 0xd50: 0x0039, 0xd51: 0x0ee9, - 0xd52: 0x1159, 0xd53: 0x0ef9, 0xd54: 0x0f09, 0xd55: 0x1199, 0xd56: 0x0f31, 0xd57: 0x0249, - 0xd58: 0x0f41, 0xd59: 0x0259, 0xd5a: 0x0f51, 0xd5b: 0x0359, 0xd5c: 0x0f61, 0xd5d: 0x0f71, - 0xd5e: 0x00d9, 0xd5f: 0x0f99, 0xd60: 0x2039, 0xd61: 0x0269, 0xd62: 0x01d9, 0xd63: 0x0fa9, - 0xd64: 0x0fb9, 0xd65: 0x1089, 0xd66: 0x0279, 0xd67: 0x0369, 0xd68: 0x0289, 0xd69: 0x13d1, - 0xd6a: 0x1f41, 0xd6b: 0x0018, 0xd6c: 0x0018, 0xd6d: 0x0018, 0xd6e: 0x0018, 0xd6f: 0x0018, - 0xd70: 0x0018, 0xd71: 0x0018, 0xd72: 0x0018, 0xd73: 0x0018, 0xd74: 0x0018, 0xd75: 0x0018, - 0xd76: 0x0018, 0xd77: 0x0018, 0xd78: 0x0018, 0xd79: 0x0018, 0xd7a: 0x0018, 0xd7b: 0x0018, - 0xd7c: 0x0018, 0xd7d: 0x0018, 0xd7e: 0x0018, 0xd7f: 0x0018, - // Block 0x36, offset 0xd80 - 0xd80: 0x0008, 0xd81: 0x0008, 0xd82: 0x0008, 0xd83: 0x0008, 0xd84: 0x0008, 0xd85: 0x0008, - 0xd86: 0x0008, 0xd87: 0x0008, 0xd88: 0x0008, 0xd89: 0x0008, 0xd8a: 0x0008, 0xd8b: 0x0008, - 0xd8c: 0x0008, 0xd8d: 0x0008, 0xd8e: 0x0008, 0xd8f: 0x0008, 0xd90: 0x0008, 0xd91: 0x0008, - 0xd92: 0x0008, 0xd93: 0x0008, 0xd94: 0x0008, 0xd95: 0x0008, 0xd96: 0x0008, 0xd97: 0x0008, - 0xd98: 0x0008, 0xd99: 0x0008, 0xd9a: 0x0008, 0xd9b: 0x0008, 0xd9c: 0x0008, 0xd9d: 0x0008, - 0xd9e: 0x0008, 0xd9f: 0x0040, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0x2971, 0xda3: 0x0ebd, - 0xda4: 0x2989, 0xda5: 0x0008, 0xda6: 0x0008, 0xda7: 0xe07d, 0xda8: 0x0008, 0xda9: 0xe01d, - 0xdaa: 0x0008, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0x0fe1, 0xdae: 0x1281, 0xdaf: 0x0fc9, - 0xdb0: 0x1141, 0xdb1: 0x0008, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0008, 0xdb5: 0xe01d, - 0xdb6: 0x0008, 0xdb7: 0x0008, 0xdb8: 0x0008, 0xdb9: 0x0008, 0xdba: 0x0008, 0xdbb: 0x0008, - 0xdbc: 0x0259, 0xdbd: 0x1089, 0xdbe: 0x29a1, 0xdbf: 0x29b9, - // Block 0x37, offset 0xdc0 - 0xdc0: 0xe00d, 0xdc1: 0x0008, 0xdc2: 0xe00d, 0xdc3: 0x0008, 0xdc4: 0xe00d, 0xdc5: 0x0008, - 0xdc6: 0xe00d, 0xdc7: 0x0008, 0xdc8: 0xe00d, 0xdc9: 0x0008, 0xdca: 0xe00d, 0xdcb: 0x0008, - 0xdcc: 0xe00d, 0xdcd: 0x0008, 0xdce: 0xe00d, 0xdcf: 0x0008, 0xdd0: 0xe00d, 0xdd1: 0x0008, - 0xdd2: 0xe00d, 0xdd3: 0x0008, 0xdd4: 0xe00d, 0xdd5: 0x0008, 0xdd6: 0xe00d, 0xdd7: 0x0008, - 0xdd8: 0xe00d, 0xdd9: 0x0008, 0xdda: 0xe00d, 0xddb: 0x0008, 0xddc: 0xe00d, 0xddd: 0x0008, - 0xdde: 0xe00d, 0xddf: 0x0008, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0xe00d, 0xde3: 0x0008, - 0xde4: 0x0008, 0xde5: 0x0018, 0xde6: 0x0018, 0xde7: 0x0018, 0xde8: 0x0018, 0xde9: 0x0018, - 0xdea: 0x0018, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0xe01d, 0xdee: 0x0008, 0xdef: 0x3308, - 0xdf0: 0x3308, 0xdf1: 0x3308, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0040, 0xdf5: 0x0040, - 0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0018, 0xdfa: 0x0018, 0xdfb: 0x0018, - 0xdfc: 0x0018, 0xdfd: 0x0018, 0xdfe: 0x0018, 0xdff: 0x0018, - // Block 0x38, offset 0xe00 - 0xe00: 0x26fd, 0xe01: 0x271d, 0xe02: 0x273d, 0xe03: 0x275d, 0xe04: 0x277d, 0xe05: 0x279d, - 0xe06: 0x27bd, 0xe07: 0x27dd, 0xe08: 0x27fd, 0xe09: 0x281d, 0xe0a: 0x283d, 0xe0b: 0x285d, - 0xe0c: 0x287d, 0xe0d: 0x289d, 0xe0e: 0x28bd, 0xe0f: 0x28dd, 0xe10: 0x28fd, 0xe11: 0x291d, - 0xe12: 0x293d, 0xe13: 0x295d, 0xe14: 0x297d, 0xe15: 0x299d, 0xe16: 0x0040, 0xe17: 0x0040, - 0xe18: 0x0040, 0xe19: 0x0040, 0xe1a: 0x0040, 0xe1b: 0x0040, 0xe1c: 0x0040, 0xe1d: 0x0040, - 0xe1e: 0x0040, 0xe1f: 0x0040, 0xe20: 0x0040, 0xe21: 0x0040, 0xe22: 0x0040, 0xe23: 0x0040, - 0xe24: 0x0040, 0xe25: 0x0040, 0xe26: 0x0040, 0xe27: 0x0040, 0xe28: 0x0040, 0xe29: 0x0040, - 0xe2a: 0x0040, 0xe2b: 0x0040, 0xe2c: 0x0040, 0xe2d: 0x0040, 0xe2e: 0x0040, 0xe2f: 0x0040, - 0xe30: 0x0040, 0xe31: 0x0040, 0xe32: 0x0040, 0xe33: 0x0040, 0xe34: 0x0040, 0xe35: 0x0040, - 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0040, 0xe3a: 0x0040, 0xe3b: 0x0040, - 0xe3c: 0x0040, 0xe3d: 0x0040, 0xe3e: 0x0040, 0xe3f: 0x0040, - // Block 0x39, offset 0xe40 - 0xe40: 0x000a, 0xe41: 0x0018, 0xe42: 0x29d1, 0xe43: 0x0018, 0xe44: 0x0018, 0xe45: 0x0008, - 0xe46: 0x0008, 0xe47: 0x0008, 0xe48: 0x0018, 0xe49: 0x0018, 0xe4a: 0x0018, 0xe4b: 0x0018, - 0xe4c: 0x0018, 0xe4d: 0x0018, 0xe4e: 0x0018, 0xe4f: 0x0018, 0xe50: 0x0018, 0xe51: 0x0018, - 0xe52: 0x0018, 0xe53: 0x0018, 0xe54: 0x0018, 0xe55: 0x0018, 0xe56: 0x0018, 0xe57: 0x0018, - 0xe58: 0x0018, 0xe59: 0x0018, 0xe5a: 0x0018, 0xe5b: 0x0018, 0xe5c: 0x0018, 0xe5d: 0x0018, - 0xe5e: 0x0018, 0xe5f: 0x0018, 0xe60: 0x0018, 0xe61: 0x0018, 0xe62: 0x0018, 0xe63: 0x0018, - 0xe64: 0x0018, 0xe65: 0x0018, 0xe66: 0x0018, 0xe67: 0x0018, 0xe68: 0x0018, 0xe69: 0x0018, - 0xe6a: 0x3308, 0xe6b: 0x3308, 0xe6c: 0x3308, 0xe6d: 0x3308, 0xe6e: 0x3018, 0xe6f: 0x3018, - 0xe70: 0x0018, 0xe71: 0x0018, 0xe72: 0x0018, 0xe73: 0x0018, 0xe74: 0x0018, 0xe75: 0x0018, - 0xe76: 0xe125, 0xe77: 0x0018, 0xe78: 0x29bd, 0xe79: 0x29dd, 0xe7a: 0x29fd, 0xe7b: 0x0018, - 0xe7c: 0x0008, 0xe7d: 0x0018, 0xe7e: 0x0018, 0xe7f: 0x0018, - // Block 0x3a, offset 0xe80 - 0xe80: 0x2b3d, 0xe81: 0x2b5d, 0xe82: 0x2b7d, 0xe83: 0x2b9d, 0xe84: 0x2bbd, 0xe85: 0x2bdd, - 0xe86: 0x2bdd, 0xe87: 0x2bdd, 0xe88: 0x2bfd, 0xe89: 0x2bfd, 0xe8a: 0x2bfd, 0xe8b: 0x2bfd, - 0xe8c: 0x2c1d, 0xe8d: 0x2c1d, 0xe8e: 0x2c1d, 0xe8f: 0x2c3d, 0xe90: 0x2c5d, 0xe91: 0x2c5d, - 0xe92: 0x2a7d, 0xe93: 0x2a7d, 0xe94: 0x2c5d, 0xe95: 0x2c5d, 0xe96: 0x2c7d, 0xe97: 0x2c7d, - 0xe98: 0x2c5d, 0xe99: 0x2c5d, 0xe9a: 0x2a7d, 0xe9b: 0x2a7d, 0xe9c: 0x2c5d, 0xe9d: 0x2c5d, - 0xe9e: 0x2c3d, 0xe9f: 0x2c3d, 0xea0: 0x2c9d, 0xea1: 0x2c9d, 0xea2: 0x2cbd, 0xea3: 0x2cbd, - 0xea4: 0x0040, 0xea5: 0x2cdd, 0xea6: 0x2cfd, 0xea7: 0x2d1d, 0xea8: 0x2d1d, 0xea9: 0x2d3d, - 0xeaa: 0x2d5d, 0xeab: 0x2d7d, 0xeac: 0x2d9d, 0xead: 0x2dbd, 0xeae: 0x2ddd, 0xeaf: 0x2dfd, - 0xeb0: 0x2e1d, 0xeb1: 0x2e3d, 0xeb2: 0x2e3d, 0xeb3: 0x2e5d, 0xeb4: 0x2e7d, 0xeb5: 0x2e7d, - 0xeb6: 0x2e9d, 0xeb7: 0x2ebd, 0xeb8: 0x2e5d, 0xeb9: 0x2edd, 0xeba: 0x2efd, 0xebb: 0x2edd, - 0xebc: 0x2e5d, 0xebd: 0x2f1d, 0xebe: 0x2f3d, 0xebf: 0x2f5d, - // Block 0x3b, offset 0xec0 - 0xec0: 0x2f7d, 0xec1: 0x2f9d, 0xec2: 0x2cfd, 0xec3: 0x2cdd, 0xec4: 0x2fbd, 0xec5: 0x2fdd, - 0xec6: 0x2ffd, 0xec7: 0x301d, 0xec8: 0x303d, 0xec9: 0x305d, 0xeca: 0x307d, 0xecb: 0x309d, - 0xecc: 0x30bd, 0xecd: 0x30dd, 0xece: 0x30fd, 0xecf: 0x0040, 0xed0: 0x0018, 0xed1: 0x0018, - 0xed2: 0x311d, 0xed3: 0x313d, 0xed4: 0x315d, 0xed5: 0x317d, 0xed6: 0x319d, 0xed7: 0x31bd, - 0xed8: 0x31dd, 0xed9: 0x31fd, 0xeda: 0x321d, 0xedb: 0x323d, 0xedc: 0x315d, 0xedd: 0x325d, - 0xede: 0x327d, 0xedf: 0x329d, 0xee0: 0x0008, 0xee1: 0x0008, 0xee2: 0x0008, 0xee3: 0x0008, - 0xee4: 0x0008, 0xee5: 0x0008, 0xee6: 0x0008, 0xee7: 0x0008, 0xee8: 0x0008, 0xee9: 0x0008, - 0xeea: 0x0008, 0xeeb: 0x0008, 0xeec: 0x0008, 0xeed: 0x0008, 0xeee: 0x0008, 0xeef: 0x0008, - 0xef0: 0x0008, 0xef1: 0x0008, 0xef2: 0x0008, 0xef3: 0x0008, 0xef4: 0x0008, 0xef5: 0x0008, - 0xef6: 0x0008, 0xef7: 0x0008, 0xef8: 0x0008, 0xef9: 0x0008, 0xefa: 0x0008, 0xefb: 0x0040, - 0xefc: 0x0040, 0xefd: 0x0040, 0xefe: 0x0040, 0xeff: 0x0040, - // Block 0x3c, offset 0xf00 - 0xf00: 0x36a2, 0xf01: 0x36d2, 0xf02: 0x3702, 0xf03: 0x3732, 0xf04: 0x32bd, 0xf05: 0x32dd, - 0xf06: 0x32fd, 0xf07: 0x331d, 0xf08: 0x0018, 0xf09: 0x0018, 0xf0a: 0x0018, 0xf0b: 0x0018, - 0xf0c: 0x0018, 0xf0d: 0x0018, 0xf0e: 0x0018, 0xf0f: 0x0018, 0xf10: 0x333d, 0xf11: 0x3761, - 0xf12: 0x3779, 0xf13: 0x3791, 0xf14: 0x37a9, 0xf15: 0x37c1, 0xf16: 0x37d9, 0xf17: 0x37f1, - 0xf18: 0x3809, 0xf19: 0x3821, 0xf1a: 0x3839, 0xf1b: 0x3851, 0xf1c: 0x3869, 0xf1d: 0x3881, - 0xf1e: 0x3899, 0xf1f: 0x38b1, 0xf20: 0x335d, 0xf21: 0x337d, 0xf22: 0x339d, 0xf23: 0x33bd, - 0xf24: 0x33dd, 0xf25: 0x33dd, 0xf26: 0x33fd, 0xf27: 0x341d, 0xf28: 0x343d, 0xf29: 0x345d, - 0xf2a: 0x347d, 0xf2b: 0x349d, 0xf2c: 0x34bd, 0xf2d: 0x34dd, 0xf2e: 0x34fd, 0xf2f: 0x351d, - 0xf30: 0x353d, 0xf31: 0x355d, 0xf32: 0x357d, 0xf33: 0x359d, 0xf34: 0x35bd, 0xf35: 0x35dd, - 0xf36: 0x35fd, 0xf37: 0x361d, 0xf38: 0x363d, 0xf39: 0x365d, 0xf3a: 0x367d, 0xf3b: 0x369d, - 0xf3c: 0x38c9, 0xf3d: 0x3901, 0xf3e: 0x36bd, 0xf3f: 0x0018, - // Block 0x3d, offset 0xf40 - 0xf40: 0x36dd, 0xf41: 0x36fd, 0xf42: 0x371d, 0xf43: 0x373d, 0xf44: 0x375d, 0xf45: 0x377d, - 0xf46: 0x379d, 0xf47: 0x37bd, 0xf48: 0x37dd, 0xf49: 0x37fd, 0xf4a: 0x381d, 0xf4b: 0x383d, - 0xf4c: 0x385d, 0xf4d: 0x387d, 0xf4e: 0x389d, 0xf4f: 0x38bd, 0xf50: 0x38dd, 0xf51: 0x38fd, - 0xf52: 0x391d, 0xf53: 0x393d, 0xf54: 0x395d, 0xf55: 0x397d, 0xf56: 0x399d, 0xf57: 0x39bd, - 0xf58: 0x39dd, 0xf59: 0x39fd, 0xf5a: 0x3a1d, 0xf5b: 0x3a3d, 0xf5c: 0x3a5d, 0xf5d: 0x3a7d, - 0xf5e: 0x3a9d, 0xf5f: 0x3abd, 0xf60: 0x3add, 0xf61: 0x3afd, 0xf62: 0x3b1d, 0xf63: 0x3b3d, - 0xf64: 0x3b5d, 0xf65: 0x3b7d, 0xf66: 0x127d, 0xf67: 0x3b9d, 0xf68: 0x3bbd, 0xf69: 0x3bdd, - 0xf6a: 0x3bfd, 0xf6b: 0x3c1d, 0xf6c: 0x3c3d, 0xf6d: 0x3c5d, 0xf6e: 0x239d, 0xf6f: 0x3c7d, - 0xf70: 0x3c9d, 0xf71: 0x3939, 0xf72: 0x3951, 0xf73: 0x3969, 0xf74: 0x3981, 0xf75: 0x3999, - 0xf76: 0x39b1, 0xf77: 0x39c9, 0xf78: 0x39e1, 0xf79: 0x39f9, 0xf7a: 0x3a11, 0xf7b: 0x3a29, - 0xf7c: 0x3a41, 0xf7d: 0x3a59, 0xf7e: 0x3a71, 0xf7f: 0x3a89, - // Block 0x3e, offset 0xf80 - 0xf80: 0x3aa1, 0xf81: 0x3ac9, 0xf82: 0x3af1, 0xf83: 0x3b19, 0xf84: 0x3b41, 0xf85: 0x3b69, - 0xf86: 0x3b91, 0xf87: 0x3bb9, 0xf88: 0x3be1, 0xf89: 0x3c09, 0xf8a: 0x3c39, 0xf8b: 0x3c69, - 0xf8c: 0x3c99, 0xf8d: 0x3cbd, 0xf8e: 0x3cb1, 0xf8f: 0x3cdd, 0xf90: 0x3cfd, 0xf91: 0x3d15, - 0xf92: 0x3d2d, 0xf93: 0x3d45, 0xf94: 0x3d5d, 0xf95: 0x3d5d, 0xf96: 0x3d45, 0xf97: 0x3d75, - 0xf98: 0x07bd, 0xf99: 0x3d8d, 0xf9a: 0x3da5, 0xf9b: 0x3dbd, 0xf9c: 0x3dd5, 0xf9d: 0x3ded, - 0xf9e: 0x3e05, 0xf9f: 0x3e1d, 0xfa0: 0x3e35, 0xfa1: 0x3e4d, 0xfa2: 0x3e65, 0xfa3: 0x3e7d, - 0xfa4: 0x3e95, 0xfa5: 0x3e95, 0xfa6: 0x3ead, 0xfa7: 0x3ead, 0xfa8: 0x3ec5, 0xfa9: 0x3ec5, - 0xfaa: 0x3edd, 0xfab: 0x3ef5, 0xfac: 0x3f0d, 0xfad: 0x3f25, 0xfae: 0x3f3d, 0xfaf: 0x3f3d, - 0xfb0: 0x3f55, 0xfb1: 0x3f55, 0xfb2: 0x3f55, 0xfb3: 0x3f6d, 0xfb4: 0x3f85, 0xfb5: 0x3f9d, - 0xfb6: 0x3fb5, 0xfb7: 0x3f9d, 0xfb8: 0x3fcd, 0xfb9: 0x3fe5, 0xfba: 0x3f6d, 0xfbb: 0x3ffd, - 0xfbc: 0x4015, 0xfbd: 0x4015, 0xfbe: 0x4015, 0xfbf: 0x0040, - // Block 0x3f, offset 0xfc0 - 0xfc0: 0x3cc9, 0xfc1: 0x3d31, 0xfc2: 0x3d99, 0xfc3: 0x3e01, 0xfc4: 0x3e51, 0xfc5: 0x3eb9, - 0xfc6: 0x3f09, 0xfc7: 0x3f59, 0xfc8: 0x3fd9, 0xfc9: 0x4041, 0xfca: 0x4091, 0xfcb: 0x40e1, - 0xfcc: 0x4131, 0xfcd: 0x4199, 0xfce: 0x4201, 0xfcf: 0x4251, 0xfd0: 0x42a1, 0xfd1: 0x42d9, - 0xfd2: 0x4329, 0xfd3: 0x4391, 0xfd4: 0x43f9, 0xfd5: 0x4431, 0xfd6: 0x44b1, 0xfd7: 0x4549, - 0xfd8: 0x45c9, 0xfd9: 0x4619, 0xfda: 0x4699, 0xfdb: 0x4719, 0xfdc: 0x4781, 0xfdd: 0x47d1, - 0xfde: 0x4821, 0xfdf: 0x4871, 0xfe0: 0x48d9, 0xfe1: 0x4959, 0xfe2: 0x49c1, 0xfe3: 0x4a11, - 0xfe4: 0x4a61, 0xfe5: 0x4ab1, 0xfe6: 0x4ae9, 0xfe7: 0x4b21, 0xfe8: 0x4b59, 0xfe9: 0x4b91, - 0xfea: 0x4be1, 0xfeb: 0x4c31, 0xfec: 0x4cb1, 0xfed: 0x4d01, 0xfee: 0x4d69, 0xfef: 0x4de9, - 0xff0: 0x4e39, 0xff1: 0x4e71, 0xff2: 0x4ea9, 0xff3: 0x4f29, 0xff4: 0x4f91, 0xff5: 0x5011, - 0xff6: 0x5061, 0xff7: 0x50e1, 0xff8: 0x5119, 0xff9: 0x5169, 0xffa: 0x51b9, 0xffb: 0x5209, - 0xffc: 0x5259, 0xffd: 0x52a9, 0xffe: 0x5311, 0xfff: 0x5361, - // Block 0x40, offset 0x1000 - 0x1000: 0x5399, 0x1001: 0x53e9, 0x1002: 0x5439, 0x1003: 0x5489, 0x1004: 0x54f1, 0x1005: 0x5541, - 0x1006: 0x5591, 0x1007: 0x55e1, 0x1008: 0x5661, 0x1009: 0x56c9, 0x100a: 0x5701, 0x100b: 0x5781, - 0x100c: 0x57b9, 0x100d: 0x5821, 0x100e: 0x5889, 0x100f: 0x58d9, 0x1010: 0x5929, 0x1011: 0x5979, - 0x1012: 0x59e1, 0x1013: 0x5a19, 0x1014: 0x5a69, 0x1015: 0x5ad1, 0x1016: 0x5b09, 0x1017: 0x5b89, - 0x1018: 0x5bd9, 0x1019: 0x5c01, 0x101a: 0x5c29, 0x101b: 0x5c51, 0x101c: 0x5c79, 0x101d: 0x5ca1, - 0x101e: 0x5cc9, 0x101f: 0x5cf1, 0x1020: 0x5d19, 0x1021: 0x5d41, 0x1022: 0x5d69, 0x1023: 0x5d99, - 0x1024: 0x5dc9, 0x1025: 0x5df9, 0x1026: 0x5e29, 0x1027: 0x5e59, 0x1028: 0x5e89, 0x1029: 0x5eb9, - 0x102a: 0x5ee9, 0x102b: 0x5f19, 0x102c: 0x5f49, 0x102d: 0x5f79, 0x102e: 0x5fa9, 0x102f: 0x5fd9, - 0x1030: 0x6009, 0x1031: 0x402d, 0x1032: 0x6039, 0x1033: 0x6051, 0x1034: 0x404d, 0x1035: 0x6069, - 0x1036: 0x6081, 0x1037: 0x6099, 0x1038: 0x406d, 0x1039: 0x406d, 0x103a: 0x60b1, 0x103b: 0x60c9, - 0x103c: 0x6101, 0x103d: 0x6139, 0x103e: 0x6171, 0x103f: 0x61a9, - // Block 0x41, offset 0x1040 - 0x1040: 0x6211, 0x1041: 0x6229, 0x1042: 0x408d, 0x1043: 0x6241, 0x1044: 0x6259, 0x1045: 0x6271, - 0x1046: 0x6289, 0x1047: 0x62a1, 0x1048: 0x40ad, 0x1049: 0x62b9, 0x104a: 0x62e1, 0x104b: 0x62f9, - 0x104c: 0x40cd, 0x104d: 0x40cd, 0x104e: 0x6311, 0x104f: 0x6329, 0x1050: 0x6341, 0x1051: 0x40ed, - 0x1052: 0x410d, 0x1053: 0x412d, 0x1054: 0x414d, 0x1055: 0x416d, 0x1056: 0x6359, 0x1057: 0x6371, - 0x1058: 0x6389, 0x1059: 0x63a1, 0x105a: 0x63b9, 0x105b: 0x418d, 0x105c: 0x63d1, 0x105d: 0x63e9, - 0x105e: 0x6401, 0x105f: 0x41ad, 0x1060: 0x41cd, 0x1061: 0x6419, 0x1062: 0x41ed, 0x1063: 0x420d, - 0x1064: 0x422d, 0x1065: 0x6431, 0x1066: 0x424d, 0x1067: 0x6449, 0x1068: 0x6479, 0x1069: 0x6211, - 0x106a: 0x426d, 0x106b: 0x428d, 0x106c: 0x42ad, 0x106d: 0x42cd, 0x106e: 0x64b1, 0x106f: 0x64f1, - 0x1070: 0x6539, 0x1071: 0x6551, 0x1072: 0x42ed, 0x1073: 0x6569, 0x1074: 0x6581, 0x1075: 0x6599, - 0x1076: 0x430d, 0x1077: 0x65b1, 0x1078: 0x65c9, 0x1079: 0x65b1, 0x107a: 0x65e1, 0x107b: 0x65f9, - 0x107c: 0x432d, 0x107d: 0x6611, 0x107e: 0x6629, 0x107f: 0x6611, - // Block 0x42, offset 0x1080 - 0x1080: 0x434d, 0x1081: 0x436d, 0x1082: 0x0040, 0x1083: 0x6641, 0x1084: 0x6659, 0x1085: 0x6671, - 0x1086: 0x6689, 0x1087: 0x0040, 0x1088: 0x66c1, 0x1089: 0x66d9, 0x108a: 0x66f1, 0x108b: 0x6709, - 0x108c: 0x6721, 0x108d: 0x6739, 0x108e: 0x6401, 0x108f: 0x6751, 0x1090: 0x6769, 0x1091: 0x6781, - 0x1092: 0x438d, 0x1093: 0x6799, 0x1094: 0x6289, 0x1095: 0x43ad, 0x1096: 0x43cd, 0x1097: 0x67b1, - 0x1098: 0x0040, 0x1099: 0x43ed, 0x109a: 0x67c9, 0x109b: 0x67e1, 0x109c: 0x67f9, 0x109d: 0x6811, - 0x109e: 0x6829, 0x109f: 0x6859, 0x10a0: 0x6889, 0x10a1: 0x68b1, 0x10a2: 0x68d9, 0x10a3: 0x6901, - 0x10a4: 0x6929, 0x10a5: 0x6951, 0x10a6: 0x6979, 0x10a7: 0x69a1, 0x10a8: 0x69c9, 0x10a9: 0x69f1, - 0x10aa: 0x6a21, 0x10ab: 0x6a51, 0x10ac: 0x6a81, 0x10ad: 0x6ab1, 0x10ae: 0x6ae1, 0x10af: 0x6b11, - 0x10b0: 0x6b41, 0x10b1: 0x6b71, 0x10b2: 0x6ba1, 0x10b3: 0x6bd1, 0x10b4: 0x6c01, 0x10b5: 0x6c31, - 0x10b6: 0x6c61, 0x10b7: 0x6c91, 0x10b8: 0x6cc1, 0x10b9: 0x6cf1, 0x10ba: 0x6d21, 0x10bb: 0x6d51, - 0x10bc: 0x6d81, 0x10bd: 0x6db1, 0x10be: 0x6de1, 0x10bf: 0x440d, - // Block 0x43, offset 0x10c0 - 0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008, - 0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008, - 0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008, - 0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008, - 0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0xe00d, 0x10dd: 0x0008, - 0x10de: 0xe00d, 0x10df: 0x0008, 0x10e0: 0xe00d, 0x10e1: 0x0008, 0x10e2: 0xe00d, 0x10e3: 0x0008, - 0x10e4: 0xe00d, 0x10e5: 0x0008, 0x10e6: 0xe00d, 0x10e7: 0x0008, 0x10e8: 0xe00d, 0x10e9: 0x0008, - 0x10ea: 0xe00d, 0x10eb: 0x0008, 0x10ec: 0xe00d, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x3308, - 0x10f0: 0x3318, 0x10f1: 0x3318, 0x10f2: 0x3318, 0x10f3: 0x0018, 0x10f4: 0x3308, 0x10f5: 0x3308, - 0x10f6: 0x3308, 0x10f7: 0x3308, 0x10f8: 0x3308, 0x10f9: 0x3308, 0x10fa: 0x3308, 0x10fb: 0x3308, - 0x10fc: 0x3308, 0x10fd: 0x3308, 0x10fe: 0x0018, 0x10ff: 0x0008, - // Block 0x44, offset 0x1100 - 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008, - 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008, - 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008, - 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008, - 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0x0ea1, 0x111d: 0x6e11, - 0x111e: 0x3308, 0x111f: 0x3308, 0x1120: 0x0008, 0x1121: 0x0008, 0x1122: 0x0008, 0x1123: 0x0008, - 0x1124: 0x0008, 0x1125: 0x0008, 0x1126: 0x0008, 0x1127: 0x0008, 0x1128: 0x0008, 0x1129: 0x0008, - 0x112a: 0x0008, 0x112b: 0x0008, 0x112c: 0x0008, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x0008, - 0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0x0008, 0x1133: 0x0008, 0x1134: 0x0008, 0x1135: 0x0008, - 0x1136: 0x0008, 0x1137: 0x0008, 0x1138: 0x0008, 0x1139: 0x0008, 0x113a: 0x0008, 0x113b: 0x0008, - 0x113c: 0x0008, 0x113d: 0x0008, 0x113e: 0x0008, 0x113f: 0x0008, - // Block 0x45, offset 0x1140 - 0x1140: 0x0018, 0x1141: 0x0018, 0x1142: 0x0018, 0x1143: 0x0018, 0x1144: 0x0018, 0x1145: 0x0018, - 0x1146: 0x0018, 0x1147: 0x0018, 0x1148: 0x0018, 0x1149: 0x0018, 0x114a: 0x0018, 0x114b: 0x0018, - 0x114c: 0x0018, 0x114d: 0x0018, 0x114e: 0x0018, 0x114f: 0x0018, 0x1150: 0x0018, 0x1151: 0x0018, - 0x1152: 0x0018, 0x1153: 0x0018, 0x1154: 0x0018, 0x1155: 0x0018, 0x1156: 0x0018, 0x1157: 0x0008, - 0x1158: 0x0008, 0x1159: 0x0008, 0x115a: 0x0008, 0x115b: 0x0008, 0x115c: 0x0008, 0x115d: 0x0008, - 0x115e: 0x0008, 0x115f: 0x0008, 0x1160: 0x0018, 0x1161: 0x0018, 0x1162: 0xe00d, 0x1163: 0x0008, - 0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008, - 0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008, - 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0xe00d, 0x1173: 0x0008, 0x1174: 0xe00d, 0x1175: 0x0008, - 0x1176: 0xe00d, 0x1177: 0x0008, 0x1178: 0xe00d, 0x1179: 0x0008, 0x117a: 0xe00d, 0x117b: 0x0008, - 0x117c: 0xe00d, 0x117d: 0x0008, 0x117e: 0xe00d, 0x117f: 0x0008, - // Block 0x46, offset 0x1180 - 0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008, - 0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0xe00d, 0x1189: 0x0008, 0x118a: 0xe00d, 0x118b: 0x0008, - 0x118c: 0xe00d, 0x118d: 0x0008, 0x118e: 0xe00d, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008, - 0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0xe00d, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008, - 0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008, - 0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008, - 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, - 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008, - 0x11b0: 0xe0fd, 0x11b1: 0x0008, 0x11b2: 0x0008, 0x11b3: 0x0008, 0x11b4: 0x0008, 0x11b5: 0x0008, - 0x11b6: 0x0008, 0x11b7: 0x0008, 0x11b8: 0x0008, 0x11b9: 0xe01d, 0x11ba: 0x0008, 0x11bb: 0xe03d, - 0x11bc: 0x0008, 0x11bd: 0x442d, 0x11be: 0xe00d, 0x11bf: 0x0008, - // Block 0x47, offset 0x11c0 - 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008, - 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0x0008, 0x11c9: 0x0018, 0x11ca: 0x0018, 0x11cb: 0xe03d, - 0x11cc: 0x0008, 0x11cd: 0x11d9, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008, - 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008, - 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008, - 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008, - 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008, - 0x11ea: 0x6e29, 0x11eb: 0x1029, 0x11ec: 0x11c1, 0x11ed: 0x6e41, 0x11ee: 0x1221, 0x11ef: 0x0040, - 0x11f0: 0x6e59, 0x11f1: 0x6e71, 0x11f2: 0x1239, 0x11f3: 0x444d, 0x11f4: 0xe00d, 0x11f5: 0x0008, - 0x11f6: 0xe00d, 0x11f7: 0x0008, 0x11f8: 0x0040, 0x11f9: 0x0040, 0x11fa: 0x0040, 0x11fb: 0x0040, - 0x11fc: 0x0040, 0x11fd: 0x0040, 0x11fe: 0x0040, 0x11ff: 0x0040, - // Block 0x48, offset 0x1200 - 0x1200: 0x64d5, 0x1201: 0x64f5, 0x1202: 0x6515, 0x1203: 0x6535, 0x1204: 0x6555, 0x1205: 0x6575, - 0x1206: 0x6595, 0x1207: 0x65b5, 0x1208: 0x65d5, 0x1209: 0x65f5, 0x120a: 0x6615, 0x120b: 0x6635, - 0x120c: 0x6655, 0x120d: 0x6675, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0x6695, 0x1211: 0x0008, - 0x1212: 0x66b5, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x66d5, 0x1216: 0x66f5, 0x1217: 0x6715, - 0x1218: 0x6735, 0x1219: 0x6755, 0x121a: 0x6775, 0x121b: 0x6795, 0x121c: 0x67b5, 0x121d: 0x67d5, - 0x121e: 0x67f5, 0x121f: 0x0008, 0x1220: 0x6815, 0x1221: 0x0008, 0x1222: 0x6835, 0x1223: 0x0008, - 0x1224: 0x0008, 0x1225: 0x6855, 0x1226: 0x6875, 0x1227: 0x0008, 0x1228: 0x0008, 0x1229: 0x0008, - 0x122a: 0x6895, 0x122b: 0x68b5, 0x122c: 0x68d5, 0x122d: 0x68f5, 0x122e: 0x6915, 0x122f: 0x6935, - 0x1230: 0x6955, 0x1231: 0x6975, 0x1232: 0x6995, 0x1233: 0x69b5, 0x1234: 0x69d5, 0x1235: 0x69f5, - 0x1236: 0x6a15, 0x1237: 0x6a35, 0x1238: 0x6a55, 0x1239: 0x6a75, 0x123a: 0x6a95, 0x123b: 0x6ab5, - 0x123c: 0x6ad5, 0x123d: 0x6af5, 0x123e: 0x6b15, 0x123f: 0x6b35, - // Block 0x49, offset 0x1240 - 0x1240: 0x7a95, 0x1241: 0x7ab5, 0x1242: 0x7ad5, 0x1243: 0x7af5, 0x1244: 0x7b15, 0x1245: 0x7b35, - 0x1246: 0x7b55, 0x1247: 0x7b75, 0x1248: 0x7b95, 0x1249: 0x7bb5, 0x124a: 0x7bd5, 0x124b: 0x7bf5, - 0x124c: 0x7c15, 0x124d: 0x7c35, 0x124e: 0x7c55, 0x124f: 0x6ec9, 0x1250: 0x6ef1, 0x1251: 0x6f19, - 0x1252: 0x7c75, 0x1253: 0x7c95, 0x1254: 0x7cb5, 0x1255: 0x6f41, 0x1256: 0x6f69, 0x1257: 0x6f91, - 0x1258: 0x7cd5, 0x1259: 0x7cf5, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x0040, - 0x125e: 0x0040, 0x125f: 0x0040, 0x1260: 0x0040, 0x1261: 0x0040, 0x1262: 0x0040, 0x1263: 0x0040, - 0x1264: 0x0040, 0x1265: 0x0040, 0x1266: 0x0040, 0x1267: 0x0040, 0x1268: 0x0040, 0x1269: 0x0040, - 0x126a: 0x0040, 0x126b: 0x0040, 0x126c: 0x0040, 0x126d: 0x0040, 0x126e: 0x0040, 0x126f: 0x0040, - 0x1270: 0x0040, 0x1271: 0x0040, 0x1272: 0x0040, 0x1273: 0x0040, 0x1274: 0x0040, 0x1275: 0x0040, - 0x1276: 0x0040, 0x1277: 0x0040, 0x1278: 0x0040, 0x1279: 0x0040, 0x127a: 0x0040, 0x127b: 0x0040, - 0x127c: 0x0040, 0x127d: 0x0040, 0x127e: 0x0040, 0x127f: 0x0040, - // Block 0x4a, offset 0x1280 - 0x1280: 0x6fb9, 0x1281: 0x6fd1, 0x1282: 0x6fe9, 0x1283: 0x7d15, 0x1284: 0x7d35, 0x1285: 0x7001, - 0x1286: 0x7001, 0x1287: 0x0040, 0x1288: 0x0040, 0x1289: 0x0040, 0x128a: 0x0040, 0x128b: 0x0040, - 0x128c: 0x0040, 0x128d: 0x0040, 0x128e: 0x0040, 0x128f: 0x0040, 0x1290: 0x0040, 0x1291: 0x0040, - 0x1292: 0x0040, 0x1293: 0x7019, 0x1294: 0x7041, 0x1295: 0x7069, 0x1296: 0x7091, 0x1297: 0x70b9, - 0x1298: 0x0040, 0x1299: 0x0040, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x70e1, - 0x129e: 0x3308, 0x129f: 0x7109, 0x12a0: 0x7131, 0x12a1: 0x20a9, 0x12a2: 0x20f1, 0x12a3: 0x7149, - 0x12a4: 0x7161, 0x12a5: 0x7179, 0x12a6: 0x7191, 0x12a7: 0x71a9, 0x12a8: 0x71c1, 0x12a9: 0x1fb2, - 0x12aa: 0x71d9, 0x12ab: 0x7201, 0x12ac: 0x7229, 0x12ad: 0x7261, 0x12ae: 0x7299, 0x12af: 0x72c1, - 0x12b0: 0x72e9, 0x12b1: 0x7311, 0x12b2: 0x7339, 0x12b3: 0x7361, 0x12b4: 0x7389, 0x12b5: 0x73b1, - 0x12b6: 0x73d9, 0x12b7: 0x0040, 0x12b8: 0x7401, 0x12b9: 0x7429, 0x12ba: 0x7451, 0x12bb: 0x7479, - 0x12bc: 0x74a1, 0x12bd: 0x0040, 0x12be: 0x74c9, 0x12bf: 0x0040, - // Block 0x4b, offset 0x12c0 - 0x12c0: 0x74f1, 0x12c1: 0x7519, 0x12c2: 0x0040, 0x12c3: 0x7541, 0x12c4: 0x7569, 0x12c5: 0x0040, - 0x12c6: 0x7591, 0x12c7: 0x75b9, 0x12c8: 0x75e1, 0x12c9: 0x7609, 0x12ca: 0x7631, 0x12cb: 0x7659, - 0x12cc: 0x7681, 0x12cd: 0x76a9, 0x12ce: 0x76d1, 0x12cf: 0x76f9, 0x12d0: 0x7721, 0x12d1: 0x7721, - 0x12d2: 0x7739, 0x12d3: 0x7739, 0x12d4: 0x7739, 0x12d5: 0x7739, 0x12d6: 0x7751, 0x12d7: 0x7751, - 0x12d8: 0x7751, 0x12d9: 0x7751, 0x12da: 0x7769, 0x12db: 0x7769, 0x12dc: 0x7769, 0x12dd: 0x7769, - 0x12de: 0x7781, 0x12df: 0x7781, 0x12e0: 0x7781, 0x12e1: 0x7781, 0x12e2: 0x7799, 0x12e3: 0x7799, - 0x12e4: 0x7799, 0x12e5: 0x7799, 0x12e6: 0x77b1, 0x12e7: 0x77b1, 0x12e8: 0x77b1, 0x12e9: 0x77b1, - 0x12ea: 0x77c9, 0x12eb: 0x77c9, 0x12ec: 0x77c9, 0x12ed: 0x77c9, 0x12ee: 0x77e1, 0x12ef: 0x77e1, - 0x12f0: 0x77e1, 0x12f1: 0x77e1, 0x12f2: 0x77f9, 0x12f3: 0x77f9, 0x12f4: 0x77f9, 0x12f5: 0x77f9, - 0x12f6: 0x7811, 0x12f7: 0x7811, 0x12f8: 0x7811, 0x12f9: 0x7811, 0x12fa: 0x7829, 0x12fb: 0x7829, - 0x12fc: 0x7829, 0x12fd: 0x7829, 0x12fe: 0x7841, 0x12ff: 0x7841, - // Block 0x4c, offset 0x1300 - 0x1300: 0x7841, 0x1301: 0x7841, 0x1302: 0x7859, 0x1303: 0x7859, 0x1304: 0x7871, 0x1305: 0x7871, - 0x1306: 0x7889, 0x1307: 0x7889, 0x1308: 0x78a1, 0x1309: 0x78a1, 0x130a: 0x78b9, 0x130b: 0x78b9, - 0x130c: 0x78d1, 0x130d: 0x78d1, 0x130e: 0x78e9, 0x130f: 0x78e9, 0x1310: 0x78e9, 0x1311: 0x78e9, - 0x1312: 0x7901, 0x1313: 0x7901, 0x1314: 0x7901, 0x1315: 0x7901, 0x1316: 0x7919, 0x1317: 0x7919, - 0x1318: 0x7919, 0x1319: 0x7919, 0x131a: 0x7931, 0x131b: 0x7931, 0x131c: 0x7931, 0x131d: 0x7931, - 0x131e: 0x7949, 0x131f: 0x7949, 0x1320: 0x7961, 0x1321: 0x7961, 0x1322: 0x7961, 0x1323: 0x7961, - 0x1324: 0x7979, 0x1325: 0x7979, 0x1326: 0x7991, 0x1327: 0x7991, 0x1328: 0x7991, 0x1329: 0x7991, - 0x132a: 0x79a9, 0x132b: 0x79a9, 0x132c: 0x79a9, 0x132d: 0x79a9, 0x132e: 0x79c1, 0x132f: 0x79c1, - 0x1330: 0x79d9, 0x1331: 0x79d9, 0x1332: 0x0818, 0x1333: 0x0818, 0x1334: 0x0818, 0x1335: 0x0818, - 0x1336: 0x0818, 0x1337: 0x0818, 0x1338: 0x0818, 0x1339: 0x0818, 0x133a: 0x0818, 0x133b: 0x0818, - 0x133c: 0x0818, 0x133d: 0x0818, 0x133e: 0x0818, 0x133f: 0x0818, - // Block 0x4d, offset 0x1340 - 0x1340: 0x0818, 0x1341: 0x0818, 0x1342: 0x0040, 0x1343: 0x0040, 0x1344: 0x0040, 0x1345: 0x0040, - 0x1346: 0x0040, 0x1347: 0x0040, 0x1348: 0x0040, 0x1349: 0x0040, 0x134a: 0x0040, 0x134b: 0x0040, - 0x134c: 0x0040, 0x134d: 0x0040, 0x134e: 0x0040, 0x134f: 0x0040, 0x1350: 0x0040, 0x1351: 0x0040, - 0x1352: 0x0040, 0x1353: 0x79f1, 0x1354: 0x79f1, 0x1355: 0x79f1, 0x1356: 0x79f1, 0x1357: 0x7a09, - 0x1358: 0x7a09, 0x1359: 0x7a21, 0x135a: 0x7a21, 0x135b: 0x7a39, 0x135c: 0x7a39, 0x135d: 0x0479, - 0x135e: 0x7a51, 0x135f: 0x7a51, 0x1360: 0x7a69, 0x1361: 0x7a69, 0x1362: 0x7a81, 0x1363: 0x7a81, - 0x1364: 0x7a99, 0x1365: 0x7a99, 0x1366: 0x7a99, 0x1367: 0x7a99, 0x1368: 0x7ab1, 0x1369: 0x7ab1, - 0x136a: 0x7ac9, 0x136b: 0x7ac9, 0x136c: 0x7af1, 0x136d: 0x7af1, 0x136e: 0x7b19, 0x136f: 0x7b19, - 0x1370: 0x7b41, 0x1371: 0x7b41, 0x1372: 0x7b69, 0x1373: 0x7b69, 0x1374: 0x7b91, 0x1375: 0x7b91, - 0x1376: 0x7bb9, 0x1377: 0x7bb9, 0x1378: 0x7bb9, 0x1379: 0x7be1, 0x137a: 0x7be1, 0x137b: 0x7be1, - 0x137c: 0x7c09, 0x137d: 0x7c09, 0x137e: 0x7c09, 0x137f: 0x7c09, - // Block 0x4e, offset 0x1380 - 0x1380: 0x85f9, 0x1381: 0x8621, 0x1382: 0x8649, 0x1383: 0x8671, 0x1384: 0x8699, 0x1385: 0x86c1, - 0x1386: 0x86e9, 0x1387: 0x8711, 0x1388: 0x8739, 0x1389: 0x8761, 0x138a: 0x8789, 0x138b: 0x87b1, - 0x138c: 0x87d9, 0x138d: 0x8801, 0x138e: 0x8829, 0x138f: 0x8851, 0x1390: 0x8879, 0x1391: 0x88a1, - 0x1392: 0x88c9, 0x1393: 0x88f1, 0x1394: 0x8919, 0x1395: 0x8941, 0x1396: 0x8969, 0x1397: 0x8991, - 0x1398: 0x89b9, 0x1399: 0x89e1, 0x139a: 0x8a09, 0x139b: 0x8a31, 0x139c: 0x8a59, 0x139d: 0x8a81, - 0x139e: 0x8aaa, 0x139f: 0x8ada, 0x13a0: 0x8b0a, 0x13a1: 0x8b3a, 0x13a2: 0x8b6a, 0x13a3: 0x8b9a, - 0x13a4: 0x8bc9, 0x13a5: 0x8bf1, 0x13a6: 0x7c71, 0x13a7: 0x8c19, 0x13a8: 0x7be1, 0x13a9: 0x7c99, - 0x13aa: 0x8c41, 0x13ab: 0x8c69, 0x13ac: 0x7d39, 0x13ad: 0x8c91, 0x13ae: 0x7d61, 0x13af: 0x7d89, - 0x13b0: 0x8cb9, 0x13b1: 0x8ce1, 0x13b2: 0x7e29, 0x13b3: 0x8d09, 0x13b4: 0x7e51, 0x13b5: 0x7e79, - 0x13b6: 0x8d31, 0x13b7: 0x8d59, 0x13b8: 0x7ec9, 0x13b9: 0x8d81, 0x13ba: 0x7ef1, 0x13bb: 0x7f19, - 0x13bc: 0x83a1, 0x13bd: 0x83c9, 0x13be: 0x8441, 0x13bf: 0x8469, - // Block 0x4f, offset 0x13c0 - 0x13c0: 0x8491, 0x13c1: 0x8531, 0x13c2: 0x8559, 0x13c3: 0x8581, 0x13c4: 0x85a9, 0x13c5: 0x8649, - 0x13c6: 0x8671, 0x13c7: 0x8699, 0x13c8: 0x8da9, 0x13c9: 0x8739, 0x13ca: 0x8dd1, 0x13cb: 0x8df9, - 0x13cc: 0x8829, 0x13cd: 0x8e21, 0x13ce: 0x8851, 0x13cf: 0x8879, 0x13d0: 0x8a81, 0x13d1: 0x8e49, - 0x13d2: 0x8e71, 0x13d3: 0x89b9, 0x13d4: 0x8e99, 0x13d5: 0x89e1, 0x13d6: 0x8a09, 0x13d7: 0x7c21, - 0x13d8: 0x7c49, 0x13d9: 0x8ec1, 0x13da: 0x7c71, 0x13db: 0x8ee9, 0x13dc: 0x7cc1, 0x13dd: 0x7ce9, - 0x13de: 0x7d11, 0x13df: 0x7d39, 0x13e0: 0x8f11, 0x13e1: 0x7db1, 0x13e2: 0x7dd9, 0x13e3: 0x7e01, - 0x13e4: 0x7e29, 0x13e5: 0x8f39, 0x13e6: 0x7ec9, 0x13e7: 0x7f41, 0x13e8: 0x7f69, 0x13e9: 0x7f91, - 0x13ea: 0x7fb9, 0x13eb: 0x7fe1, 0x13ec: 0x8031, 0x13ed: 0x8059, 0x13ee: 0x8081, 0x13ef: 0x80a9, - 0x13f0: 0x80d1, 0x13f1: 0x80f9, 0x13f2: 0x8f61, 0x13f3: 0x8121, 0x13f4: 0x8149, 0x13f5: 0x8171, - 0x13f6: 0x8199, 0x13f7: 0x81c1, 0x13f8: 0x81e9, 0x13f9: 0x8239, 0x13fa: 0x8261, 0x13fb: 0x8289, - 0x13fc: 0x82b1, 0x13fd: 0x82d9, 0x13fe: 0x8301, 0x13ff: 0x8329, - // Block 0x50, offset 0x1400 - 0x1400: 0x8351, 0x1401: 0x8379, 0x1402: 0x83f1, 0x1403: 0x8419, 0x1404: 0x84b9, 0x1405: 0x84e1, - 0x1406: 0x8509, 0x1407: 0x8531, 0x1408: 0x8559, 0x1409: 0x85d1, 0x140a: 0x85f9, 0x140b: 0x8621, - 0x140c: 0x8649, 0x140d: 0x8f89, 0x140e: 0x86c1, 0x140f: 0x86e9, 0x1410: 0x8711, 0x1411: 0x8739, - 0x1412: 0x87b1, 0x1413: 0x87d9, 0x1414: 0x8801, 0x1415: 0x8829, 0x1416: 0x8fb1, 0x1417: 0x88a1, - 0x1418: 0x88c9, 0x1419: 0x8fd9, 0x141a: 0x8941, 0x141b: 0x8969, 0x141c: 0x8991, 0x141d: 0x89b9, - 0x141e: 0x9001, 0x141f: 0x7c71, 0x1420: 0x8ee9, 0x1421: 0x7d39, 0x1422: 0x8f11, 0x1423: 0x7e29, - 0x1424: 0x8f39, 0x1425: 0x7ec9, 0x1426: 0x9029, 0x1427: 0x80d1, 0x1428: 0x9051, 0x1429: 0x9079, - 0x142a: 0x90a1, 0x142b: 0x8531, 0x142c: 0x8559, 0x142d: 0x8649, 0x142e: 0x8829, 0x142f: 0x8fb1, - 0x1430: 0x89b9, 0x1431: 0x9001, 0x1432: 0x90c9, 0x1433: 0x9101, 0x1434: 0x9139, 0x1435: 0x9171, - 0x1436: 0x9199, 0x1437: 0x91c1, 0x1438: 0x91e9, 0x1439: 0x9211, 0x143a: 0x9239, 0x143b: 0x9261, - 0x143c: 0x9289, 0x143d: 0x92b1, 0x143e: 0x92d9, 0x143f: 0x9301, - // Block 0x51, offset 0x1440 - 0x1440: 0x9329, 0x1441: 0x9351, 0x1442: 0x9379, 0x1443: 0x93a1, 0x1444: 0x93c9, 0x1445: 0x93f1, - 0x1446: 0x9419, 0x1447: 0x9441, 0x1448: 0x9469, 0x1449: 0x9491, 0x144a: 0x94b9, 0x144b: 0x94e1, - 0x144c: 0x9079, 0x144d: 0x9509, 0x144e: 0x9531, 0x144f: 0x9559, 0x1450: 0x9581, 0x1451: 0x9171, - 0x1452: 0x9199, 0x1453: 0x91c1, 0x1454: 0x91e9, 0x1455: 0x9211, 0x1456: 0x9239, 0x1457: 0x9261, - 0x1458: 0x9289, 0x1459: 0x92b1, 0x145a: 0x92d9, 0x145b: 0x9301, 0x145c: 0x9329, 0x145d: 0x9351, - 0x145e: 0x9379, 0x145f: 0x93a1, 0x1460: 0x93c9, 0x1461: 0x93f1, 0x1462: 0x9419, 0x1463: 0x9441, - 0x1464: 0x9469, 0x1465: 0x9491, 0x1466: 0x94b9, 0x1467: 0x94e1, 0x1468: 0x9079, 0x1469: 0x9509, - 0x146a: 0x9531, 0x146b: 0x9559, 0x146c: 0x9581, 0x146d: 0x9491, 0x146e: 0x94b9, 0x146f: 0x94e1, - 0x1470: 0x9079, 0x1471: 0x9051, 0x1472: 0x90a1, 0x1473: 0x8211, 0x1474: 0x8059, 0x1475: 0x8081, - 0x1476: 0x80a9, 0x1477: 0x9491, 0x1478: 0x94b9, 0x1479: 0x94e1, 0x147a: 0x8211, 0x147b: 0x8239, - 0x147c: 0x95a9, 0x147d: 0x95a9, 0x147e: 0x0018, 0x147f: 0x0018, - // Block 0x52, offset 0x1480 - 0x1480: 0x0040, 0x1481: 0x0040, 0x1482: 0x0040, 0x1483: 0x0040, 0x1484: 0x0040, 0x1485: 0x0040, - 0x1486: 0x0040, 0x1487: 0x0040, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040, - 0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x95d1, 0x1491: 0x9609, - 0x1492: 0x9609, 0x1493: 0x9641, 0x1494: 0x9679, 0x1495: 0x96b1, 0x1496: 0x96e9, 0x1497: 0x9721, - 0x1498: 0x9759, 0x1499: 0x9759, 0x149a: 0x9791, 0x149b: 0x97c9, 0x149c: 0x9801, 0x149d: 0x9839, - 0x149e: 0x9871, 0x149f: 0x98a9, 0x14a0: 0x98a9, 0x14a1: 0x98e1, 0x14a2: 0x9919, 0x14a3: 0x9919, - 0x14a4: 0x9951, 0x14a5: 0x9951, 0x14a6: 0x9989, 0x14a7: 0x99c1, 0x14a8: 0x99c1, 0x14a9: 0x99f9, - 0x14aa: 0x9a31, 0x14ab: 0x9a31, 0x14ac: 0x9a69, 0x14ad: 0x9a69, 0x14ae: 0x9aa1, 0x14af: 0x9ad9, - 0x14b0: 0x9ad9, 0x14b1: 0x9b11, 0x14b2: 0x9b11, 0x14b3: 0x9b49, 0x14b4: 0x9b81, 0x14b5: 0x9bb9, - 0x14b6: 0x9bf1, 0x14b7: 0x9bf1, 0x14b8: 0x9c29, 0x14b9: 0x9c61, 0x14ba: 0x9c99, 0x14bb: 0x9cd1, - 0x14bc: 0x9d09, 0x14bd: 0x9d09, 0x14be: 0x9d41, 0x14bf: 0x9d79, - // Block 0x53, offset 0x14c0 - 0x14c0: 0xa949, 0x14c1: 0xa981, 0x14c2: 0xa9b9, 0x14c3: 0xa8a1, 0x14c4: 0x9bb9, 0x14c5: 0x9989, - 0x14c6: 0xa9f1, 0x14c7: 0xaa29, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040, - 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x0040, 0x14d1: 0x0040, - 0x14d2: 0x0040, 0x14d3: 0x0040, 0x14d4: 0x0040, 0x14d5: 0x0040, 0x14d6: 0x0040, 0x14d7: 0x0040, - 0x14d8: 0x0040, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040, - 0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x0040, 0x14e1: 0x0040, 0x14e2: 0x0040, 0x14e3: 0x0040, - 0x14e4: 0x0040, 0x14e5: 0x0040, 0x14e6: 0x0040, 0x14e7: 0x0040, 0x14e8: 0x0040, 0x14e9: 0x0040, - 0x14ea: 0x0040, 0x14eb: 0x0040, 0x14ec: 0x0040, 0x14ed: 0x0040, 0x14ee: 0x0040, 0x14ef: 0x0040, - 0x14f0: 0xaa61, 0x14f1: 0xaa99, 0x14f2: 0xaad1, 0x14f3: 0xab19, 0x14f4: 0xab61, 0x14f5: 0xaba9, - 0x14f6: 0xabf1, 0x14f7: 0xac39, 0x14f8: 0xac81, 0x14f9: 0xacc9, 0x14fa: 0xad02, 0x14fb: 0xae12, - 0x14fc: 0xae91, 0x14fd: 0x0018, 0x14fe: 0x0040, 0x14ff: 0x0040, - // Block 0x54, offset 0x1500 - 0x1500: 0x33c0, 0x1501: 0x33c0, 0x1502: 0x33c0, 0x1503: 0x33c0, 0x1504: 0x33c0, 0x1505: 0x33c0, - 0x1506: 0x33c0, 0x1507: 0x33c0, 0x1508: 0x33c0, 0x1509: 0x33c0, 0x150a: 0x33c0, 0x150b: 0x33c0, - 0x150c: 0x33c0, 0x150d: 0x33c0, 0x150e: 0x33c0, 0x150f: 0x33c0, 0x1510: 0xaeda, 0x1511: 0x7d55, - 0x1512: 0x0040, 0x1513: 0xaeea, 0x1514: 0x03c2, 0x1515: 0xaefa, 0x1516: 0xaf0a, 0x1517: 0x7d75, - 0x1518: 0x7d95, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040, - 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x3308, 0x1521: 0x3308, 0x1522: 0x3308, 0x1523: 0x3308, - 0x1524: 0x3308, 0x1525: 0x3308, 0x1526: 0x3308, 0x1527: 0x3308, 0x1528: 0x3308, 0x1529: 0x3308, - 0x152a: 0x3308, 0x152b: 0x3308, 0x152c: 0x3308, 0x152d: 0x3308, 0x152e: 0x3308, 0x152f: 0x3308, - 0x1530: 0x0040, 0x1531: 0x7db5, 0x1532: 0x7dd5, 0x1533: 0xaf1a, 0x1534: 0xaf1a, 0x1535: 0x1fd2, - 0x1536: 0x1fe2, 0x1537: 0xaf2a, 0x1538: 0xaf3a, 0x1539: 0x7df5, 0x153a: 0x7e15, 0x153b: 0x7e35, - 0x153c: 0x7df5, 0x153d: 0x7e55, 0x153e: 0x7e75, 0x153f: 0x7e55, - // Block 0x55, offset 0x1540 - 0x1540: 0x7e95, 0x1541: 0x7eb5, 0x1542: 0x7ed5, 0x1543: 0x7eb5, 0x1544: 0x7ef5, 0x1545: 0x0018, - 0x1546: 0x0018, 0x1547: 0xaf4a, 0x1548: 0xaf5a, 0x1549: 0x7f16, 0x154a: 0x7f36, 0x154b: 0x7f56, - 0x154c: 0x7f76, 0x154d: 0xaf1a, 0x154e: 0xaf1a, 0x154f: 0xaf1a, 0x1550: 0xaeda, 0x1551: 0x7f95, - 0x1552: 0x0040, 0x1553: 0x0040, 0x1554: 0x03c2, 0x1555: 0xaeea, 0x1556: 0xaf0a, 0x1557: 0xaefa, - 0x1558: 0x7fb5, 0x1559: 0x1fd2, 0x155a: 0x1fe2, 0x155b: 0xaf2a, 0x155c: 0xaf3a, 0x155d: 0x7e95, - 0x155e: 0x7ef5, 0x155f: 0xaf6a, 0x1560: 0xaf7a, 0x1561: 0xaf8a, 0x1562: 0x1fb2, 0x1563: 0xaf99, - 0x1564: 0xafaa, 0x1565: 0xafba, 0x1566: 0x1fc2, 0x1567: 0x0040, 0x1568: 0xafca, 0x1569: 0xafda, - 0x156a: 0xafea, 0x156b: 0xaffa, 0x156c: 0x0040, 0x156d: 0x0040, 0x156e: 0x0040, 0x156f: 0x0040, - 0x1570: 0x7fd6, 0x1571: 0xb009, 0x1572: 0x7ff6, 0x1573: 0x0808, 0x1574: 0x8016, 0x1575: 0x0040, - 0x1576: 0x8036, 0x1577: 0xb031, 0x1578: 0x8056, 0x1579: 0xb059, 0x157a: 0x8076, 0x157b: 0xb081, - 0x157c: 0x8096, 0x157d: 0xb0a9, 0x157e: 0x80b6, 0x157f: 0xb0d1, - // Block 0x56, offset 0x1580 - 0x1580: 0xb0f9, 0x1581: 0xb111, 0x1582: 0xb111, 0x1583: 0xb129, 0x1584: 0xb129, 0x1585: 0xb141, - 0x1586: 0xb141, 0x1587: 0xb159, 0x1588: 0xb159, 0x1589: 0xb171, 0x158a: 0xb171, 0x158b: 0xb171, - 0x158c: 0xb171, 0x158d: 0xb189, 0x158e: 0xb189, 0x158f: 0xb1a1, 0x1590: 0xb1a1, 0x1591: 0xb1a1, - 0x1592: 0xb1a1, 0x1593: 0xb1b9, 0x1594: 0xb1b9, 0x1595: 0xb1d1, 0x1596: 0xb1d1, 0x1597: 0xb1d1, - 0x1598: 0xb1d1, 0x1599: 0xb1e9, 0x159a: 0xb1e9, 0x159b: 0xb1e9, 0x159c: 0xb1e9, 0x159d: 0xb201, - 0x159e: 0xb201, 0x159f: 0xb201, 0x15a0: 0xb201, 0x15a1: 0xb219, 0x15a2: 0xb219, 0x15a3: 0xb219, - 0x15a4: 0xb219, 0x15a5: 0xb231, 0x15a6: 0xb231, 0x15a7: 0xb231, 0x15a8: 0xb231, 0x15a9: 0xb249, - 0x15aa: 0xb249, 0x15ab: 0xb261, 0x15ac: 0xb261, 0x15ad: 0xb279, 0x15ae: 0xb279, 0x15af: 0xb291, - 0x15b0: 0xb291, 0x15b1: 0xb2a9, 0x15b2: 0xb2a9, 0x15b3: 0xb2a9, 0x15b4: 0xb2a9, 0x15b5: 0xb2c1, - 0x15b6: 0xb2c1, 0x15b7: 0xb2c1, 0x15b8: 0xb2c1, 0x15b9: 0xb2d9, 0x15ba: 0xb2d9, 0x15bb: 0xb2d9, - 0x15bc: 0xb2d9, 0x15bd: 0xb2f1, 0x15be: 0xb2f1, 0x15bf: 0xb2f1, - // Block 0x57, offset 0x15c0 - 0x15c0: 0xb2f1, 0x15c1: 0xb309, 0x15c2: 0xb309, 0x15c3: 0xb309, 0x15c4: 0xb309, 0x15c5: 0xb321, - 0x15c6: 0xb321, 0x15c7: 0xb321, 0x15c8: 0xb321, 0x15c9: 0xb339, 0x15ca: 0xb339, 0x15cb: 0xb339, - 0x15cc: 0xb339, 0x15cd: 0xb351, 0x15ce: 0xb351, 0x15cf: 0xb351, 0x15d0: 0xb351, 0x15d1: 0xb369, - 0x15d2: 0xb369, 0x15d3: 0xb369, 0x15d4: 0xb369, 0x15d5: 0xb381, 0x15d6: 0xb381, 0x15d7: 0xb381, - 0x15d8: 0xb381, 0x15d9: 0xb399, 0x15da: 0xb399, 0x15db: 0xb399, 0x15dc: 0xb399, 0x15dd: 0xb3b1, - 0x15de: 0xb3b1, 0x15df: 0xb3b1, 0x15e0: 0xb3b1, 0x15e1: 0xb3c9, 0x15e2: 0xb3c9, 0x15e3: 0xb3c9, - 0x15e4: 0xb3c9, 0x15e5: 0xb3e1, 0x15e6: 0xb3e1, 0x15e7: 0xb3e1, 0x15e8: 0xb3e1, 0x15e9: 0xb3f9, - 0x15ea: 0xb3f9, 0x15eb: 0xb3f9, 0x15ec: 0xb3f9, 0x15ed: 0xb411, 0x15ee: 0xb411, 0x15ef: 0x7ab1, - 0x15f0: 0x7ab1, 0x15f1: 0xb429, 0x15f2: 0xb429, 0x15f3: 0xb429, 0x15f4: 0xb429, 0x15f5: 0xb441, - 0x15f6: 0xb441, 0x15f7: 0xb469, 0x15f8: 0xb469, 0x15f9: 0xb491, 0x15fa: 0xb491, 0x15fb: 0xb4b9, - 0x15fc: 0xb4b9, 0x15fd: 0x0040, 0x15fe: 0x0040, 0x15ff: 0x03c0, - // Block 0x58, offset 0x1600 - 0x1600: 0x0040, 0x1601: 0xaefa, 0x1602: 0xb4e2, 0x1603: 0xaf6a, 0x1604: 0xafda, 0x1605: 0xafea, - 0x1606: 0xaf7a, 0x1607: 0xb4f2, 0x1608: 0x1fd2, 0x1609: 0x1fe2, 0x160a: 0xaf8a, 0x160b: 0x1fb2, - 0x160c: 0xaeda, 0x160d: 0xaf99, 0x160e: 0x29d1, 0x160f: 0xb502, 0x1610: 0x1f41, 0x1611: 0x00c9, - 0x1612: 0x0069, 0x1613: 0x0079, 0x1614: 0x1f51, 0x1615: 0x1f61, 0x1616: 0x1f71, 0x1617: 0x1f81, - 0x1618: 0x1f91, 0x1619: 0x1fa1, 0x161a: 0xaeea, 0x161b: 0x03c2, 0x161c: 0xafaa, 0x161d: 0x1fc2, - 0x161e: 0xafba, 0x161f: 0xaf0a, 0x1620: 0xaffa, 0x1621: 0x0039, 0x1622: 0x0ee9, 0x1623: 0x1159, - 0x1624: 0x0ef9, 0x1625: 0x0f09, 0x1626: 0x1199, 0x1627: 0x0f31, 0x1628: 0x0249, 0x1629: 0x0f41, - 0x162a: 0x0259, 0x162b: 0x0f51, 0x162c: 0x0359, 0x162d: 0x0f61, 0x162e: 0x0f71, 0x162f: 0x00d9, - 0x1630: 0x0f99, 0x1631: 0x2039, 0x1632: 0x0269, 0x1633: 0x01d9, 0x1634: 0x0fa9, 0x1635: 0x0fb9, - 0x1636: 0x1089, 0x1637: 0x0279, 0x1638: 0x0369, 0x1639: 0x0289, 0x163a: 0x13d1, 0x163b: 0xaf4a, - 0x163c: 0xafca, 0x163d: 0xaf5a, 0x163e: 0xb512, 0x163f: 0xaf1a, - // Block 0x59, offset 0x1640 - 0x1640: 0x1caa, 0x1641: 0x0039, 0x1642: 0x0ee9, 0x1643: 0x1159, 0x1644: 0x0ef9, 0x1645: 0x0f09, - 0x1646: 0x1199, 0x1647: 0x0f31, 0x1648: 0x0249, 0x1649: 0x0f41, 0x164a: 0x0259, 0x164b: 0x0f51, - 0x164c: 0x0359, 0x164d: 0x0f61, 0x164e: 0x0f71, 0x164f: 0x00d9, 0x1650: 0x0f99, 0x1651: 0x2039, - 0x1652: 0x0269, 0x1653: 0x01d9, 0x1654: 0x0fa9, 0x1655: 0x0fb9, 0x1656: 0x1089, 0x1657: 0x0279, - 0x1658: 0x0369, 0x1659: 0x0289, 0x165a: 0x13d1, 0x165b: 0xaf2a, 0x165c: 0xb522, 0x165d: 0xaf3a, - 0x165e: 0xb532, 0x165f: 0x80d5, 0x1660: 0x80f5, 0x1661: 0x29d1, 0x1662: 0x8115, 0x1663: 0x8115, - 0x1664: 0x8135, 0x1665: 0x8155, 0x1666: 0x8175, 0x1667: 0x8195, 0x1668: 0x81b5, 0x1669: 0x81d5, - 0x166a: 0x81f5, 0x166b: 0x8215, 0x166c: 0x8235, 0x166d: 0x8255, 0x166e: 0x8275, 0x166f: 0x8295, - 0x1670: 0x82b5, 0x1671: 0x82d5, 0x1672: 0x82f5, 0x1673: 0x8315, 0x1674: 0x8335, 0x1675: 0x8355, - 0x1676: 0x8375, 0x1677: 0x8395, 0x1678: 0x83b5, 0x1679: 0x83d5, 0x167a: 0x83f5, 0x167b: 0x8415, - 0x167c: 0x81b5, 0x167d: 0x8435, 0x167e: 0x8455, 0x167f: 0x8215, - // Block 0x5a, offset 0x1680 - 0x1680: 0x8475, 0x1681: 0x8495, 0x1682: 0x84b5, 0x1683: 0x84d5, 0x1684: 0x84f5, 0x1685: 0x8515, - 0x1686: 0x8535, 0x1687: 0x8555, 0x1688: 0x84d5, 0x1689: 0x8575, 0x168a: 0x84d5, 0x168b: 0x8595, - 0x168c: 0x8595, 0x168d: 0x85b5, 0x168e: 0x85b5, 0x168f: 0x85d5, 0x1690: 0x8515, 0x1691: 0x85f5, - 0x1692: 0x8615, 0x1693: 0x85f5, 0x1694: 0x8635, 0x1695: 0x8615, 0x1696: 0x8655, 0x1697: 0x8655, - 0x1698: 0x8675, 0x1699: 0x8675, 0x169a: 0x8695, 0x169b: 0x8695, 0x169c: 0x8615, 0x169d: 0x8115, - 0x169e: 0x86b5, 0x169f: 0x86d5, 0x16a0: 0x0040, 0x16a1: 0x86f5, 0x16a2: 0x8715, 0x16a3: 0x8735, - 0x16a4: 0x8755, 0x16a5: 0x8735, 0x16a6: 0x8775, 0x16a7: 0x8795, 0x16a8: 0x87b5, 0x16a9: 0x87b5, - 0x16aa: 0x87d5, 0x16ab: 0x87d5, 0x16ac: 0x87f5, 0x16ad: 0x87f5, 0x16ae: 0x87d5, 0x16af: 0x87d5, - 0x16b0: 0x8815, 0x16b1: 0x8835, 0x16b2: 0x8855, 0x16b3: 0x8875, 0x16b4: 0x8895, 0x16b5: 0x88b5, - 0x16b6: 0x88b5, 0x16b7: 0x88b5, 0x16b8: 0x88d5, 0x16b9: 0x88d5, 0x16ba: 0x88d5, 0x16bb: 0x88d5, - 0x16bc: 0x87b5, 0x16bd: 0x87b5, 0x16be: 0x87b5, 0x16bf: 0x0040, - // Block 0x5b, offset 0x16c0 - 0x16c0: 0x0040, 0x16c1: 0x0040, 0x16c2: 0x8715, 0x16c3: 0x86f5, 0x16c4: 0x88f5, 0x16c5: 0x86f5, - 0x16c6: 0x8715, 0x16c7: 0x86f5, 0x16c8: 0x0040, 0x16c9: 0x0040, 0x16ca: 0x8915, 0x16cb: 0x8715, - 0x16cc: 0x8935, 0x16cd: 0x88f5, 0x16ce: 0x8935, 0x16cf: 0x8715, 0x16d0: 0x0040, 0x16d1: 0x0040, - 0x16d2: 0x8955, 0x16d3: 0x8975, 0x16d4: 0x8875, 0x16d5: 0x8935, 0x16d6: 0x88f5, 0x16d7: 0x8935, - 0x16d8: 0x0040, 0x16d9: 0x0040, 0x16da: 0x8995, 0x16db: 0x89b5, 0x16dc: 0x8995, 0x16dd: 0x0040, - 0x16de: 0x0040, 0x16df: 0x0040, 0x16e0: 0xb541, 0x16e1: 0xb559, 0x16e2: 0xb571, 0x16e3: 0x89d6, - 0x16e4: 0xb589, 0x16e5: 0xb5a1, 0x16e6: 0x89f5, 0x16e7: 0x0040, 0x16e8: 0x8a15, 0x16e9: 0x8a35, - 0x16ea: 0x8a55, 0x16eb: 0x8a35, 0x16ec: 0x8a75, 0x16ed: 0x8a95, 0x16ee: 0x8ab5, 0x16ef: 0x0040, - 0x16f0: 0x0040, 0x16f1: 0x0040, 0x16f2: 0x0040, 0x16f3: 0x0040, 0x16f4: 0x0040, 0x16f5: 0x0040, - 0x16f6: 0x0040, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0340, 0x16fa: 0x0340, 0x16fb: 0x0340, - 0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040, - // Block 0x5c, offset 0x1700 - 0x1700: 0x0a08, 0x1701: 0x0a08, 0x1702: 0x0a08, 0x1703: 0x0a08, 0x1704: 0x0a08, 0x1705: 0x0c08, - 0x1706: 0x0808, 0x1707: 0x0c08, 0x1708: 0x0818, 0x1709: 0x0c08, 0x170a: 0x0c08, 0x170b: 0x0808, - 0x170c: 0x0808, 0x170d: 0x0908, 0x170e: 0x0c08, 0x170f: 0x0c08, 0x1710: 0x0c08, 0x1711: 0x0c08, - 0x1712: 0x0c08, 0x1713: 0x0a08, 0x1714: 0x0a08, 0x1715: 0x0a08, 0x1716: 0x0a08, 0x1717: 0x0908, - 0x1718: 0x0a08, 0x1719: 0x0a08, 0x171a: 0x0a08, 0x171b: 0x0a08, 0x171c: 0x0a08, 0x171d: 0x0c08, - 0x171e: 0x0a08, 0x171f: 0x0a08, 0x1720: 0x0a08, 0x1721: 0x0c08, 0x1722: 0x0808, 0x1723: 0x0808, - 0x1724: 0x0c08, 0x1725: 0x3308, 0x1726: 0x3308, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0040, - 0x172a: 0x0040, 0x172b: 0x0a18, 0x172c: 0x0a18, 0x172d: 0x0a18, 0x172e: 0x0a18, 0x172f: 0x0c18, - 0x1730: 0x0818, 0x1731: 0x0818, 0x1732: 0x0818, 0x1733: 0x0818, 0x1734: 0x0818, 0x1735: 0x0818, - 0x1736: 0x0818, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040, - 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, - // Block 0x5d, offset 0x1740 - 0x1740: 0x0a08, 0x1741: 0x0c08, 0x1742: 0x0a08, 0x1743: 0x0c08, 0x1744: 0x0c08, 0x1745: 0x0c08, - 0x1746: 0x0a08, 0x1747: 0x0a08, 0x1748: 0x0a08, 0x1749: 0x0c08, 0x174a: 0x0a08, 0x174b: 0x0a08, - 0x174c: 0x0c08, 0x174d: 0x0a08, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0a08, 0x1751: 0x0c08, - 0x1752: 0x0040, 0x1753: 0x0040, 0x1754: 0x0040, 0x1755: 0x0040, 0x1756: 0x0040, 0x1757: 0x0040, - 0x1758: 0x0040, 0x1759: 0x0818, 0x175a: 0x0818, 0x175b: 0x0818, 0x175c: 0x0818, 0x175d: 0x0040, - 0x175e: 0x0040, 0x175f: 0x0040, 0x1760: 0x0040, 0x1761: 0x0040, 0x1762: 0x0040, 0x1763: 0x0040, - 0x1764: 0x0040, 0x1765: 0x0040, 0x1766: 0x0040, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0c18, - 0x176a: 0x0c18, 0x176b: 0x0c18, 0x176c: 0x0c18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0818, - 0x1770: 0x0040, 0x1771: 0x0040, 0x1772: 0x0040, 0x1773: 0x0040, 0x1774: 0x0040, 0x1775: 0x0040, - 0x1776: 0x0040, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040, - 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040, - // Block 0x5e, offset 0x1780 - 0x1780: 0x3308, 0x1781: 0x3308, 0x1782: 0x3008, 0x1783: 0x3008, 0x1784: 0x0040, 0x1785: 0x0008, - 0x1786: 0x0008, 0x1787: 0x0008, 0x1788: 0x0008, 0x1789: 0x0008, 0x178a: 0x0008, 0x178b: 0x0008, - 0x178c: 0x0008, 0x178d: 0x0040, 0x178e: 0x0040, 0x178f: 0x0008, 0x1790: 0x0008, 0x1791: 0x0040, - 0x1792: 0x0040, 0x1793: 0x0008, 0x1794: 0x0008, 0x1795: 0x0008, 0x1796: 0x0008, 0x1797: 0x0008, - 0x1798: 0x0008, 0x1799: 0x0008, 0x179a: 0x0008, 0x179b: 0x0008, 0x179c: 0x0008, 0x179d: 0x0008, - 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x0008, 0x17a3: 0x0008, - 0x17a4: 0x0008, 0x17a5: 0x0008, 0x17a6: 0x0008, 0x17a7: 0x0008, 0x17a8: 0x0008, 0x17a9: 0x0040, - 0x17aa: 0x0008, 0x17ab: 0x0008, 0x17ac: 0x0008, 0x17ad: 0x0008, 0x17ae: 0x0008, 0x17af: 0x0008, - 0x17b0: 0x0008, 0x17b1: 0x0040, 0x17b2: 0x0008, 0x17b3: 0x0008, 0x17b4: 0x0040, 0x17b5: 0x0008, - 0x17b6: 0x0008, 0x17b7: 0x0008, 0x17b8: 0x0008, 0x17b9: 0x0008, 0x17ba: 0x0040, 0x17bb: 0x0040, - 0x17bc: 0x3308, 0x17bd: 0x0008, 0x17be: 0x3008, 0x17bf: 0x3008, - // Block 0x5f, offset 0x17c0 - 0x17c0: 0x3308, 0x17c1: 0x3008, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x3008, 0x17c5: 0x0040, - 0x17c6: 0x0040, 0x17c7: 0x3008, 0x17c8: 0x3008, 0x17c9: 0x0040, 0x17ca: 0x0040, 0x17cb: 0x3008, - 0x17cc: 0x3008, 0x17cd: 0x3808, 0x17ce: 0x0040, 0x17cf: 0x0040, 0x17d0: 0x0008, 0x17d1: 0x0040, - 0x17d2: 0x0040, 0x17d3: 0x0040, 0x17d4: 0x0040, 0x17d5: 0x0040, 0x17d6: 0x0040, 0x17d7: 0x3008, - 0x17d8: 0x0040, 0x17d9: 0x0040, 0x17da: 0x0040, 0x17db: 0x0040, 0x17dc: 0x0040, 0x17dd: 0x0008, - 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x3008, 0x17e3: 0x3008, - 0x17e4: 0x0040, 0x17e5: 0x0040, 0x17e6: 0x3308, 0x17e7: 0x3308, 0x17e8: 0x3308, 0x17e9: 0x3308, - 0x17ea: 0x3308, 0x17eb: 0x3308, 0x17ec: 0x3308, 0x17ed: 0x0040, 0x17ee: 0x0040, 0x17ef: 0x0040, - 0x17f0: 0x3308, 0x17f1: 0x3308, 0x17f2: 0x3308, 0x17f3: 0x3308, 0x17f4: 0x3308, 0x17f5: 0x0040, - 0x17f6: 0x0040, 0x17f7: 0x0040, 0x17f8: 0x0040, 0x17f9: 0x0040, 0x17fa: 0x0040, 0x17fb: 0x0040, - 0x17fc: 0x0040, 0x17fd: 0x0040, 0x17fe: 0x0040, 0x17ff: 0x0040, - // Block 0x60, offset 0x1800 - 0x1800: 0x0039, 0x1801: 0x0ee9, 0x1802: 0x1159, 0x1803: 0x0ef9, 0x1804: 0x0f09, 0x1805: 0x1199, - 0x1806: 0x0f31, 0x1807: 0x0249, 0x1808: 0x0f41, 0x1809: 0x0259, 0x180a: 0x0f51, 0x180b: 0x0359, - 0x180c: 0x0f61, 0x180d: 0x0f71, 0x180e: 0x00d9, 0x180f: 0x0f99, 0x1810: 0x2039, 0x1811: 0x0269, - 0x1812: 0x01d9, 0x1813: 0x0fa9, 0x1814: 0x0fb9, 0x1815: 0x1089, 0x1816: 0x0279, 0x1817: 0x0369, - 0x1818: 0x0289, 0x1819: 0x13d1, 0x181a: 0x0039, 0x181b: 0x0ee9, 0x181c: 0x1159, 0x181d: 0x0ef9, - 0x181e: 0x0f09, 0x181f: 0x1199, 0x1820: 0x0f31, 0x1821: 0x0249, 0x1822: 0x0f41, 0x1823: 0x0259, - 0x1824: 0x0f51, 0x1825: 0x0359, 0x1826: 0x0f61, 0x1827: 0x0f71, 0x1828: 0x00d9, 0x1829: 0x0f99, - 0x182a: 0x2039, 0x182b: 0x0269, 0x182c: 0x01d9, 0x182d: 0x0fa9, 0x182e: 0x0fb9, 0x182f: 0x1089, - 0x1830: 0x0279, 0x1831: 0x0369, 0x1832: 0x0289, 0x1833: 0x13d1, 0x1834: 0x0039, 0x1835: 0x0ee9, - 0x1836: 0x1159, 0x1837: 0x0ef9, 0x1838: 0x0f09, 0x1839: 0x1199, 0x183a: 0x0f31, 0x183b: 0x0249, - 0x183c: 0x0f41, 0x183d: 0x0259, 0x183e: 0x0f51, 0x183f: 0x0359, - // Block 0x61, offset 0x1840 - 0x1840: 0x0f61, 0x1841: 0x0f71, 0x1842: 0x00d9, 0x1843: 0x0f99, 0x1844: 0x2039, 0x1845: 0x0269, - 0x1846: 0x01d9, 0x1847: 0x0fa9, 0x1848: 0x0fb9, 0x1849: 0x1089, 0x184a: 0x0279, 0x184b: 0x0369, - 0x184c: 0x0289, 0x184d: 0x13d1, 0x184e: 0x0039, 0x184f: 0x0ee9, 0x1850: 0x1159, 0x1851: 0x0ef9, - 0x1852: 0x0f09, 0x1853: 0x1199, 0x1854: 0x0f31, 0x1855: 0x0040, 0x1856: 0x0f41, 0x1857: 0x0259, - 0x1858: 0x0f51, 0x1859: 0x0359, 0x185a: 0x0f61, 0x185b: 0x0f71, 0x185c: 0x00d9, 0x185d: 0x0f99, - 0x185e: 0x2039, 0x185f: 0x0269, 0x1860: 0x01d9, 0x1861: 0x0fa9, 0x1862: 0x0fb9, 0x1863: 0x1089, - 0x1864: 0x0279, 0x1865: 0x0369, 0x1866: 0x0289, 0x1867: 0x13d1, 0x1868: 0x0039, 0x1869: 0x0ee9, - 0x186a: 0x1159, 0x186b: 0x0ef9, 0x186c: 0x0f09, 0x186d: 0x1199, 0x186e: 0x0f31, 0x186f: 0x0249, - 0x1870: 0x0f41, 0x1871: 0x0259, 0x1872: 0x0f51, 0x1873: 0x0359, 0x1874: 0x0f61, 0x1875: 0x0f71, - 0x1876: 0x00d9, 0x1877: 0x0f99, 0x1878: 0x2039, 0x1879: 0x0269, 0x187a: 0x01d9, 0x187b: 0x0fa9, - 0x187c: 0x0fb9, 0x187d: 0x1089, 0x187e: 0x0279, 0x187f: 0x0369, - // Block 0x62, offset 0x1880 - 0x1880: 0x0289, 0x1881: 0x13d1, 0x1882: 0x0039, 0x1883: 0x0ee9, 0x1884: 0x1159, 0x1885: 0x0ef9, - 0x1886: 0x0f09, 0x1887: 0x1199, 0x1888: 0x0f31, 0x1889: 0x0249, 0x188a: 0x0f41, 0x188b: 0x0259, - 0x188c: 0x0f51, 0x188d: 0x0359, 0x188e: 0x0f61, 0x188f: 0x0f71, 0x1890: 0x00d9, 0x1891: 0x0f99, - 0x1892: 0x2039, 0x1893: 0x0269, 0x1894: 0x01d9, 0x1895: 0x0fa9, 0x1896: 0x0fb9, 0x1897: 0x1089, - 0x1898: 0x0279, 0x1899: 0x0369, 0x189a: 0x0289, 0x189b: 0x13d1, 0x189c: 0x0039, 0x189d: 0x0040, - 0x189e: 0x1159, 0x189f: 0x0ef9, 0x18a0: 0x0040, 0x18a1: 0x0040, 0x18a2: 0x0f31, 0x18a3: 0x0040, - 0x18a4: 0x0040, 0x18a5: 0x0259, 0x18a6: 0x0f51, 0x18a7: 0x0040, 0x18a8: 0x0040, 0x18a9: 0x0f71, - 0x18aa: 0x00d9, 0x18ab: 0x0f99, 0x18ac: 0x2039, 0x18ad: 0x0040, 0x18ae: 0x01d9, 0x18af: 0x0fa9, - 0x18b0: 0x0fb9, 0x18b1: 0x1089, 0x18b2: 0x0279, 0x18b3: 0x0369, 0x18b4: 0x0289, 0x18b5: 0x13d1, - 0x18b6: 0x0039, 0x18b7: 0x0ee9, 0x18b8: 0x1159, 0x18b9: 0x0ef9, 0x18ba: 0x0040, 0x18bb: 0x1199, - 0x18bc: 0x0040, 0x18bd: 0x0249, 0x18be: 0x0f41, 0x18bf: 0x0259, - // Block 0x63, offset 0x18c0 - 0x18c0: 0x0f51, 0x18c1: 0x0359, 0x18c2: 0x0f61, 0x18c3: 0x0f71, 0x18c4: 0x0040, 0x18c5: 0x0f99, - 0x18c6: 0x2039, 0x18c7: 0x0269, 0x18c8: 0x01d9, 0x18c9: 0x0fa9, 0x18ca: 0x0fb9, 0x18cb: 0x1089, - 0x18cc: 0x0279, 0x18cd: 0x0369, 0x18ce: 0x0289, 0x18cf: 0x13d1, 0x18d0: 0x0039, 0x18d1: 0x0ee9, - 0x18d2: 0x1159, 0x18d3: 0x0ef9, 0x18d4: 0x0f09, 0x18d5: 0x1199, 0x18d6: 0x0f31, 0x18d7: 0x0249, - 0x18d8: 0x0f41, 0x18d9: 0x0259, 0x18da: 0x0f51, 0x18db: 0x0359, 0x18dc: 0x0f61, 0x18dd: 0x0f71, - 0x18de: 0x00d9, 0x18df: 0x0f99, 0x18e0: 0x2039, 0x18e1: 0x0269, 0x18e2: 0x01d9, 0x18e3: 0x0fa9, - 0x18e4: 0x0fb9, 0x18e5: 0x1089, 0x18e6: 0x0279, 0x18e7: 0x0369, 0x18e8: 0x0289, 0x18e9: 0x13d1, - 0x18ea: 0x0039, 0x18eb: 0x0ee9, 0x18ec: 0x1159, 0x18ed: 0x0ef9, 0x18ee: 0x0f09, 0x18ef: 0x1199, - 0x18f0: 0x0f31, 0x18f1: 0x0249, 0x18f2: 0x0f41, 0x18f3: 0x0259, 0x18f4: 0x0f51, 0x18f5: 0x0359, - 0x18f6: 0x0f61, 0x18f7: 0x0f71, 0x18f8: 0x00d9, 0x18f9: 0x0f99, 0x18fa: 0x2039, 0x18fb: 0x0269, - 0x18fc: 0x01d9, 0x18fd: 0x0fa9, 0x18fe: 0x0fb9, 0x18ff: 0x1089, - // Block 0x64, offset 0x1900 - 0x1900: 0x0279, 0x1901: 0x0369, 0x1902: 0x0289, 0x1903: 0x13d1, 0x1904: 0x0039, 0x1905: 0x0ee9, - 0x1906: 0x0040, 0x1907: 0x0ef9, 0x1908: 0x0f09, 0x1909: 0x1199, 0x190a: 0x0f31, 0x190b: 0x0040, - 0x190c: 0x0040, 0x190d: 0x0259, 0x190e: 0x0f51, 0x190f: 0x0359, 0x1910: 0x0f61, 0x1911: 0x0f71, - 0x1912: 0x00d9, 0x1913: 0x0f99, 0x1914: 0x2039, 0x1915: 0x0040, 0x1916: 0x01d9, 0x1917: 0x0fa9, - 0x1918: 0x0fb9, 0x1919: 0x1089, 0x191a: 0x0279, 0x191b: 0x0369, 0x191c: 0x0289, 0x191d: 0x0040, - 0x191e: 0x0039, 0x191f: 0x0ee9, 0x1920: 0x1159, 0x1921: 0x0ef9, 0x1922: 0x0f09, 0x1923: 0x1199, - 0x1924: 0x0f31, 0x1925: 0x0249, 0x1926: 0x0f41, 0x1927: 0x0259, 0x1928: 0x0f51, 0x1929: 0x0359, - 0x192a: 0x0f61, 0x192b: 0x0f71, 0x192c: 0x00d9, 0x192d: 0x0f99, 0x192e: 0x2039, 0x192f: 0x0269, - 0x1930: 0x01d9, 0x1931: 0x0fa9, 0x1932: 0x0fb9, 0x1933: 0x1089, 0x1934: 0x0279, 0x1935: 0x0369, - 0x1936: 0x0289, 0x1937: 0x13d1, 0x1938: 0x0039, 0x1939: 0x0ee9, 0x193a: 0x0040, 0x193b: 0x0ef9, - 0x193c: 0x0f09, 0x193d: 0x1199, 0x193e: 0x0f31, 0x193f: 0x0040, - // Block 0x65, offset 0x1940 - 0x1940: 0x0f41, 0x1941: 0x0259, 0x1942: 0x0f51, 0x1943: 0x0359, 0x1944: 0x0f61, 0x1945: 0x0040, - 0x1946: 0x00d9, 0x1947: 0x0040, 0x1948: 0x0040, 0x1949: 0x0040, 0x194a: 0x01d9, 0x194b: 0x0fa9, - 0x194c: 0x0fb9, 0x194d: 0x1089, 0x194e: 0x0279, 0x194f: 0x0369, 0x1950: 0x0289, 0x1951: 0x0040, - 0x1952: 0x0039, 0x1953: 0x0ee9, 0x1954: 0x1159, 0x1955: 0x0ef9, 0x1956: 0x0f09, 0x1957: 0x1199, - 0x1958: 0x0f31, 0x1959: 0x0249, 0x195a: 0x0f41, 0x195b: 0x0259, 0x195c: 0x0f51, 0x195d: 0x0359, - 0x195e: 0x0f61, 0x195f: 0x0f71, 0x1960: 0x00d9, 0x1961: 0x0f99, 0x1962: 0x2039, 0x1963: 0x0269, - 0x1964: 0x01d9, 0x1965: 0x0fa9, 0x1966: 0x0fb9, 0x1967: 0x1089, 0x1968: 0x0279, 0x1969: 0x0369, - 0x196a: 0x0289, 0x196b: 0x13d1, 0x196c: 0x0039, 0x196d: 0x0ee9, 0x196e: 0x1159, 0x196f: 0x0ef9, - 0x1970: 0x0f09, 0x1971: 0x1199, 0x1972: 0x0f31, 0x1973: 0x0249, 0x1974: 0x0f41, 0x1975: 0x0259, - 0x1976: 0x0f51, 0x1977: 0x0359, 0x1978: 0x0f61, 0x1979: 0x0f71, 0x197a: 0x00d9, 0x197b: 0x0f99, - 0x197c: 0x2039, 0x197d: 0x0269, 0x197e: 0x01d9, 0x197f: 0x0fa9, - // Block 0x66, offset 0x1980 - 0x1980: 0x0fb9, 0x1981: 0x1089, 0x1982: 0x0279, 0x1983: 0x0369, 0x1984: 0x0289, 0x1985: 0x13d1, - 0x1986: 0x0039, 0x1987: 0x0ee9, 0x1988: 0x1159, 0x1989: 0x0ef9, 0x198a: 0x0f09, 0x198b: 0x1199, - 0x198c: 0x0f31, 0x198d: 0x0249, 0x198e: 0x0f41, 0x198f: 0x0259, 0x1990: 0x0f51, 0x1991: 0x0359, - 0x1992: 0x0f61, 0x1993: 0x0f71, 0x1994: 0x00d9, 0x1995: 0x0f99, 0x1996: 0x2039, 0x1997: 0x0269, - 0x1998: 0x01d9, 0x1999: 0x0fa9, 0x199a: 0x0fb9, 0x199b: 0x1089, 0x199c: 0x0279, 0x199d: 0x0369, - 0x199e: 0x0289, 0x199f: 0x13d1, 0x19a0: 0x0039, 0x19a1: 0x0ee9, 0x19a2: 0x1159, 0x19a3: 0x0ef9, - 0x19a4: 0x0f09, 0x19a5: 0x1199, 0x19a6: 0x0f31, 0x19a7: 0x0249, 0x19a8: 0x0f41, 0x19a9: 0x0259, - 0x19aa: 0x0f51, 0x19ab: 0x0359, 0x19ac: 0x0f61, 0x19ad: 0x0f71, 0x19ae: 0x00d9, 0x19af: 0x0f99, - 0x19b0: 0x2039, 0x19b1: 0x0269, 0x19b2: 0x01d9, 0x19b3: 0x0fa9, 0x19b4: 0x0fb9, 0x19b5: 0x1089, - 0x19b6: 0x0279, 0x19b7: 0x0369, 0x19b8: 0x0289, 0x19b9: 0x13d1, 0x19ba: 0x0039, 0x19bb: 0x0ee9, - 0x19bc: 0x1159, 0x19bd: 0x0ef9, 0x19be: 0x0f09, 0x19bf: 0x1199, - // Block 0x67, offset 0x19c0 - 0x19c0: 0x0f31, 0x19c1: 0x0249, 0x19c2: 0x0f41, 0x19c3: 0x0259, 0x19c4: 0x0f51, 0x19c5: 0x0359, - 0x19c6: 0x0f61, 0x19c7: 0x0f71, 0x19c8: 0x00d9, 0x19c9: 0x0f99, 0x19ca: 0x2039, 0x19cb: 0x0269, - 0x19cc: 0x01d9, 0x19cd: 0x0fa9, 0x19ce: 0x0fb9, 0x19cf: 0x1089, 0x19d0: 0x0279, 0x19d1: 0x0369, - 0x19d2: 0x0289, 0x19d3: 0x13d1, 0x19d4: 0x0039, 0x19d5: 0x0ee9, 0x19d6: 0x1159, 0x19d7: 0x0ef9, - 0x19d8: 0x0f09, 0x19d9: 0x1199, 0x19da: 0x0f31, 0x19db: 0x0249, 0x19dc: 0x0f41, 0x19dd: 0x0259, - 0x19de: 0x0f51, 0x19df: 0x0359, 0x19e0: 0x0f61, 0x19e1: 0x0f71, 0x19e2: 0x00d9, 0x19e3: 0x0f99, - 0x19e4: 0x2039, 0x19e5: 0x0269, 0x19e6: 0x01d9, 0x19e7: 0x0fa9, 0x19e8: 0x0fb9, 0x19e9: 0x1089, - 0x19ea: 0x0279, 0x19eb: 0x0369, 0x19ec: 0x0289, 0x19ed: 0x13d1, 0x19ee: 0x0039, 0x19ef: 0x0ee9, - 0x19f0: 0x1159, 0x19f1: 0x0ef9, 0x19f2: 0x0f09, 0x19f3: 0x1199, 0x19f4: 0x0f31, 0x19f5: 0x0249, - 0x19f6: 0x0f41, 0x19f7: 0x0259, 0x19f8: 0x0f51, 0x19f9: 0x0359, 0x19fa: 0x0f61, 0x19fb: 0x0f71, - 0x19fc: 0x00d9, 0x19fd: 0x0f99, 0x19fe: 0x2039, 0x19ff: 0x0269, - // Block 0x68, offset 0x1a00 - 0x1a00: 0x01d9, 0x1a01: 0x0fa9, 0x1a02: 0x0fb9, 0x1a03: 0x1089, 0x1a04: 0x0279, 0x1a05: 0x0369, - 0x1a06: 0x0289, 0x1a07: 0x13d1, 0x1a08: 0x0039, 0x1a09: 0x0ee9, 0x1a0a: 0x1159, 0x1a0b: 0x0ef9, - 0x1a0c: 0x0f09, 0x1a0d: 0x1199, 0x1a0e: 0x0f31, 0x1a0f: 0x0249, 0x1a10: 0x0f41, 0x1a11: 0x0259, - 0x1a12: 0x0f51, 0x1a13: 0x0359, 0x1a14: 0x0f61, 0x1a15: 0x0f71, 0x1a16: 0x00d9, 0x1a17: 0x0f99, - 0x1a18: 0x2039, 0x1a19: 0x0269, 0x1a1a: 0x01d9, 0x1a1b: 0x0fa9, 0x1a1c: 0x0fb9, 0x1a1d: 0x1089, - 0x1a1e: 0x0279, 0x1a1f: 0x0369, 0x1a20: 0x0289, 0x1a21: 0x13d1, 0x1a22: 0x0039, 0x1a23: 0x0ee9, - 0x1a24: 0x1159, 0x1a25: 0x0ef9, 0x1a26: 0x0f09, 0x1a27: 0x1199, 0x1a28: 0x0f31, 0x1a29: 0x0249, - 0x1a2a: 0x0f41, 0x1a2b: 0x0259, 0x1a2c: 0x0f51, 0x1a2d: 0x0359, 0x1a2e: 0x0f61, 0x1a2f: 0x0f71, - 0x1a30: 0x00d9, 0x1a31: 0x0f99, 0x1a32: 0x2039, 0x1a33: 0x0269, 0x1a34: 0x01d9, 0x1a35: 0x0fa9, - 0x1a36: 0x0fb9, 0x1a37: 0x1089, 0x1a38: 0x0279, 0x1a39: 0x0369, 0x1a3a: 0x0289, 0x1a3b: 0x13d1, - 0x1a3c: 0x0039, 0x1a3d: 0x0ee9, 0x1a3e: 0x1159, 0x1a3f: 0x0ef9, - // Block 0x69, offset 0x1a40 - 0x1a40: 0x0f09, 0x1a41: 0x1199, 0x1a42: 0x0f31, 0x1a43: 0x0249, 0x1a44: 0x0f41, 0x1a45: 0x0259, - 0x1a46: 0x0f51, 0x1a47: 0x0359, 0x1a48: 0x0f61, 0x1a49: 0x0f71, 0x1a4a: 0x00d9, 0x1a4b: 0x0f99, - 0x1a4c: 0x2039, 0x1a4d: 0x0269, 0x1a4e: 0x01d9, 0x1a4f: 0x0fa9, 0x1a50: 0x0fb9, 0x1a51: 0x1089, - 0x1a52: 0x0279, 0x1a53: 0x0369, 0x1a54: 0x0289, 0x1a55: 0x13d1, 0x1a56: 0x0039, 0x1a57: 0x0ee9, - 0x1a58: 0x1159, 0x1a59: 0x0ef9, 0x1a5a: 0x0f09, 0x1a5b: 0x1199, 0x1a5c: 0x0f31, 0x1a5d: 0x0249, - 0x1a5e: 0x0f41, 0x1a5f: 0x0259, 0x1a60: 0x0f51, 0x1a61: 0x0359, 0x1a62: 0x0f61, 0x1a63: 0x0f71, - 0x1a64: 0x00d9, 0x1a65: 0x0f99, 0x1a66: 0x2039, 0x1a67: 0x0269, 0x1a68: 0x01d9, 0x1a69: 0x0fa9, - 0x1a6a: 0x0fb9, 0x1a6b: 0x1089, 0x1a6c: 0x0279, 0x1a6d: 0x0369, 0x1a6e: 0x0289, 0x1a6f: 0x13d1, - 0x1a70: 0x0039, 0x1a71: 0x0ee9, 0x1a72: 0x1159, 0x1a73: 0x0ef9, 0x1a74: 0x0f09, 0x1a75: 0x1199, - 0x1a76: 0x0f31, 0x1a77: 0x0249, 0x1a78: 0x0f41, 0x1a79: 0x0259, 0x1a7a: 0x0f51, 0x1a7b: 0x0359, - 0x1a7c: 0x0f61, 0x1a7d: 0x0f71, 0x1a7e: 0x00d9, 0x1a7f: 0x0f99, - // Block 0x6a, offset 0x1a80 - 0x1a80: 0x2039, 0x1a81: 0x0269, 0x1a82: 0x01d9, 0x1a83: 0x0fa9, 0x1a84: 0x0fb9, 0x1a85: 0x1089, - 0x1a86: 0x0279, 0x1a87: 0x0369, 0x1a88: 0x0289, 0x1a89: 0x13d1, 0x1a8a: 0x0039, 0x1a8b: 0x0ee9, - 0x1a8c: 0x1159, 0x1a8d: 0x0ef9, 0x1a8e: 0x0f09, 0x1a8f: 0x1199, 0x1a90: 0x0f31, 0x1a91: 0x0249, - 0x1a92: 0x0f41, 0x1a93: 0x0259, 0x1a94: 0x0f51, 0x1a95: 0x0359, 0x1a96: 0x0f61, 0x1a97: 0x0f71, - 0x1a98: 0x00d9, 0x1a99: 0x0f99, 0x1a9a: 0x2039, 0x1a9b: 0x0269, 0x1a9c: 0x01d9, 0x1a9d: 0x0fa9, - 0x1a9e: 0x0fb9, 0x1a9f: 0x1089, 0x1aa0: 0x0279, 0x1aa1: 0x0369, 0x1aa2: 0x0289, 0x1aa3: 0x13d1, - 0x1aa4: 0xba81, 0x1aa5: 0xba99, 0x1aa6: 0x0040, 0x1aa7: 0x0040, 0x1aa8: 0xbab1, 0x1aa9: 0x1099, - 0x1aaa: 0x10b1, 0x1aab: 0x10c9, 0x1aac: 0xbac9, 0x1aad: 0xbae1, 0x1aae: 0xbaf9, 0x1aaf: 0x1429, - 0x1ab0: 0x1a31, 0x1ab1: 0xbb11, 0x1ab2: 0xbb29, 0x1ab3: 0xbb41, 0x1ab4: 0xbb59, 0x1ab5: 0xbb71, - 0x1ab6: 0xbb89, 0x1ab7: 0x2109, 0x1ab8: 0x1111, 0x1ab9: 0x1429, 0x1aba: 0xbba1, 0x1abb: 0xbbb9, - 0x1abc: 0xbbd1, 0x1abd: 0x10e1, 0x1abe: 0x10f9, 0x1abf: 0xbbe9, - // Block 0x6b, offset 0x1ac0 - 0x1ac0: 0x2079, 0x1ac1: 0xbc01, 0x1ac2: 0xbab1, 0x1ac3: 0x1099, 0x1ac4: 0x10b1, 0x1ac5: 0x10c9, - 0x1ac6: 0xbac9, 0x1ac7: 0xbae1, 0x1ac8: 0xbaf9, 0x1ac9: 0x1429, 0x1aca: 0x1a31, 0x1acb: 0xbb11, - 0x1acc: 0xbb29, 0x1acd: 0xbb41, 0x1ace: 0xbb59, 0x1acf: 0xbb71, 0x1ad0: 0xbb89, 0x1ad1: 0x2109, - 0x1ad2: 0x1111, 0x1ad3: 0xbba1, 0x1ad4: 0xbba1, 0x1ad5: 0xbbb9, 0x1ad6: 0xbbd1, 0x1ad7: 0x10e1, - 0x1ad8: 0x10f9, 0x1ad9: 0xbbe9, 0x1ada: 0x2079, 0x1adb: 0xbc21, 0x1adc: 0xbac9, 0x1add: 0x1429, - 0x1ade: 0xbb11, 0x1adf: 0x10e1, 0x1ae0: 0x1111, 0x1ae1: 0x2109, 0x1ae2: 0xbab1, 0x1ae3: 0x1099, - 0x1ae4: 0x10b1, 0x1ae5: 0x10c9, 0x1ae6: 0xbac9, 0x1ae7: 0xbae1, 0x1ae8: 0xbaf9, 0x1ae9: 0x1429, - 0x1aea: 0x1a31, 0x1aeb: 0xbb11, 0x1aec: 0xbb29, 0x1aed: 0xbb41, 0x1aee: 0xbb59, 0x1aef: 0xbb71, - 0x1af0: 0xbb89, 0x1af1: 0x2109, 0x1af2: 0x1111, 0x1af3: 0x1429, 0x1af4: 0xbba1, 0x1af5: 0xbbb9, - 0x1af6: 0xbbd1, 0x1af7: 0x10e1, 0x1af8: 0x10f9, 0x1af9: 0xbbe9, 0x1afa: 0x2079, 0x1afb: 0xbc01, - 0x1afc: 0xbab1, 0x1afd: 0x1099, 0x1afe: 0x10b1, 0x1aff: 0x10c9, - // Block 0x6c, offset 0x1b00 - 0x1b00: 0xbac9, 0x1b01: 0xbae1, 0x1b02: 0xbaf9, 0x1b03: 0x1429, 0x1b04: 0x1a31, 0x1b05: 0xbb11, - 0x1b06: 0xbb29, 0x1b07: 0xbb41, 0x1b08: 0xbb59, 0x1b09: 0xbb71, 0x1b0a: 0xbb89, 0x1b0b: 0x2109, - 0x1b0c: 0x1111, 0x1b0d: 0xbba1, 0x1b0e: 0xbba1, 0x1b0f: 0xbbb9, 0x1b10: 0xbbd1, 0x1b11: 0x10e1, - 0x1b12: 0x10f9, 0x1b13: 0xbbe9, 0x1b14: 0x2079, 0x1b15: 0xbc21, 0x1b16: 0xbac9, 0x1b17: 0x1429, - 0x1b18: 0xbb11, 0x1b19: 0x10e1, 0x1b1a: 0x1111, 0x1b1b: 0x2109, 0x1b1c: 0xbab1, 0x1b1d: 0x1099, - 0x1b1e: 0x10b1, 0x1b1f: 0x10c9, 0x1b20: 0xbac9, 0x1b21: 0xbae1, 0x1b22: 0xbaf9, 0x1b23: 0x1429, - 0x1b24: 0x1a31, 0x1b25: 0xbb11, 0x1b26: 0xbb29, 0x1b27: 0xbb41, 0x1b28: 0xbb59, 0x1b29: 0xbb71, - 0x1b2a: 0xbb89, 0x1b2b: 0x2109, 0x1b2c: 0x1111, 0x1b2d: 0x1429, 0x1b2e: 0xbba1, 0x1b2f: 0xbbb9, - 0x1b30: 0xbbd1, 0x1b31: 0x10e1, 0x1b32: 0x10f9, 0x1b33: 0xbbe9, 0x1b34: 0x2079, 0x1b35: 0xbc01, - 0x1b36: 0xbab1, 0x1b37: 0x1099, 0x1b38: 0x10b1, 0x1b39: 0x10c9, 0x1b3a: 0xbac9, 0x1b3b: 0xbae1, - 0x1b3c: 0xbaf9, 0x1b3d: 0x1429, 0x1b3e: 0x1a31, 0x1b3f: 0xbb11, - // Block 0x6d, offset 0x1b40 - 0x1b40: 0xbb29, 0x1b41: 0xbb41, 0x1b42: 0xbb59, 0x1b43: 0xbb71, 0x1b44: 0xbb89, 0x1b45: 0x2109, - 0x1b46: 0x1111, 0x1b47: 0xbba1, 0x1b48: 0xbba1, 0x1b49: 0xbbb9, 0x1b4a: 0xbbd1, 0x1b4b: 0x10e1, - 0x1b4c: 0x10f9, 0x1b4d: 0xbbe9, 0x1b4e: 0x2079, 0x1b4f: 0xbc21, 0x1b50: 0xbac9, 0x1b51: 0x1429, - 0x1b52: 0xbb11, 0x1b53: 0x10e1, 0x1b54: 0x1111, 0x1b55: 0x2109, 0x1b56: 0xbab1, 0x1b57: 0x1099, - 0x1b58: 0x10b1, 0x1b59: 0x10c9, 0x1b5a: 0xbac9, 0x1b5b: 0xbae1, 0x1b5c: 0xbaf9, 0x1b5d: 0x1429, - 0x1b5e: 0x1a31, 0x1b5f: 0xbb11, 0x1b60: 0xbb29, 0x1b61: 0xbb41, 0x1b62: 0xbb59, 0x1b63: 0xbb71, - 0x1b64: 0xbb89, 0x1b65: 0x2109, 0x1b66: 0x1111, 0x1b67: 0x1429, 0x1b68: 0xbba1, 0x1b69: 0xbbb9, - 0x1b6a: 0xbbd1, 0x1b6b: 0x10e1, 0x1b6c: 0x10f9, 0x1b6d: 0xbbe9, 0x1b6e: 0x2079, 0x1b6f: 0xbc01, - 0x1b70: 0xbab1, 0x1b71: 0x1099, 0x1b72: 0x10b1, 0x1b73: 0x10c9, 0x1b74: 0xbac9, 0x1b75: 0xbae1, - 0x1b76: 0xbaf9, 0x1b77: 0x1429, 0x1b78: 0x1a31, 0x1b79: 0xbb11, 0x1b7a: 0xbb29, 0x1b7b: 0xbb41, - 0x1b7c: 0xbb59, 0x1b7d: 0xbb71, 0x1b7e: 0xbb89, 0x1b7f: 0x2109, - // Block 0x6e, offset 0x1b80 - 0x1b80: 0x1111, 0x1b81: 0xbba1, 0x1b82: 0xbba1, 0x1b83: 0xbbb9, 0x1b84: 0xbbd1, 0x1b85: 0x10e1, - 0x1b86: 0x10f9, 0x1b87: 0xbbe9, 0x1b88: 0x2079, 0x1b89: 0xbc21, 0x1b8a: 0xbac9, 0x1b8b: 0x1429, - 0x1b8c: 0xbb11, 0x1b8d: 0x10e1, 0x1b8e: 0x1111, 0x1b8f: 0x2109, 0x1b90: 0xbab1, 0x1b91: 0x1099, - 0x1b92: 0x10b1, 0x1b93: 0x10c9, 0x1b94: 0xbac9, 0x1b95: 0xbae1, 0x1b96: 0xbaf9, 0x1b97: 0x1429, - 0x1b98: 0x1a31, 0x1b99: 0xbb11, 0x1b9a: 0xbb29, 0x1b9b: 0xbb41, 0x1b9c: 0xbb59, 0x1b9d: 0xbb71, - 0x1b9e: 0xbb89, 0x1b9f: 0x2109, 0x1ba0: 0x1111, 0x1ba1: 0x1429, 0x1ba2: 0xbba1, 0x1ba3: 0xbbb9, - 0x1ba4: 0xbbd1, 0x1ba5: 0x10e1, 0x1ba6: 0x10f9, 0x1ba7: 0xbbe9, 0x1ba8: 0x2079, 0x1ba9: 0xbc01, - 0x1baa: 0xbab1, 0x1bab: 0x1099, 0x1bac: 0x10b1, 0x1bad: 0x10c9, 0x1bae: 0xbac9, 0x1baf: 0xbae1, - 0x1bb0: 0xbaf9, 0x1bb1: 0x1429, 0x1bb2: 0x1a31, 0x1bb3: 0xbb11, 0x1bb4: 0xbb29, 0x1bb5: 0xbb41, - 0x1bb6: 0xbb59, 0x1bb7: 0xbb71, 0x1bb8: 0xbb89, 0x1bb9: 0x2109, 0x1bba: 0x1111, 0x1bbb: 0xbba1, - 0x1bbc: 0xbba1, 0x1bbd: 0xbbb9, 0x1bbe: 0xbbd1, 0x1bbf: 0x10e1, - // Block 0x6f, offset 0x1bc0 - 0x1bc0: 0x10f9, 0x1bc1: 0xbbe9, 0x1bc2: 0x2079, 0x1bc3: 0xbc21, 0x1bc4: 0xbac9, 0x1bc5: 0x1429, - 0x1bc6: 0xbb11, 0x1bc7: 0x10e1, 0x1bc8: 0x1111, 0x1bc9: 0x2109, 0x1bca: 0xbc41, 0x1bcb: 0xbc41, - 0x1bcc: 0x0040, 0x1bcd: 0x0040, 0x1bce: 0x1f41, 0x1bcf: 0x00c9, 0x1bd0: 0x0069, 0x1bd1: 0x0079, - 0x1bd2: 0x1f51, 0x1bd3: 0x1f61, 0x1bd4: 0x1f71, 0x1bd5: 0x1f81, 0x1bd6: 0x1f91, 0x1bd7: 0x1fa1, - 0x1bd8: 0x1f41, 0x1bd9: 0x00c9, 0x1bda: 0x0069, 0x1bdb: 0x0079, 0x1bdc: 0x1f51, 0x1bdd: 0x1f61, - 0x1bde: 0x1f71, 0x1bdf: 0x1f81, 0x1be0: 0x1f91, 0x1be1: 0x1fa1, 0x1be2: 0x1f41, 0x1be3: 0x00c9, - 0x1be4: 0x0069, 0x1be5: 0x0079, 0x1be6: 0x1f51, 0x1be7: 0x1f61, 0x1be8: 0x1f71, 0x1be9: 0x1f81, - 0x1bea: 0x1f91, 0x1beb: 0x1fa1, 0x1bec: 0x1f41, 0x1bed: 0x00c9, 0x1bee: 0x0069, 0x1bef: 0x0079, - 0x1bf0: 0x1f51, 0x1bf1: 0x1f61, 0x1bf2: 0x1f71, 0x1bf3: 0x1f81, 0x1bf4: 0x1f91, 0x1bf5: 0x1fa1, - 0x1bf6: 0x1f41, 0x1bf7: 0x00c9, 0x1bf8: 0x0069, 0x1bf9: 0x0079, 0x1bfa: 0x1f51, 0x1bfb: 0x1f61, - 0x1bfc: 0x1f71, 0x1bfd: 0x1f81, 0x1bfe: 0x1f91, 0x1bff: 0x1fa1, - // Block 0x70, offset 0x1c00 - 0x1c00: 0xe115, 0x1c01: 0xe115, 0x1c02: 0xe135, 0x1c03: 0xe135, 0x1c04: 0xe115, 0x1c05: 0xe115, - 0x1c06: 0xe175, 0x1c07: 0xe175, 0x1c08: 0xe115, 0x1c09: 0xe115, 0x1c0a: 0xe135, 0x1c0b: 0xe135, - 0x1c0c: 0xe115, 0x1c0d: 0xe115, 0x1c0e: 0xe1f5, 0x1c0f: 0xe1f5, 0x1c10: 0xe115, 0x1c11: 0xe115, - 0x1c12: 0xe135, 0x1c13: 0xe135, 0x1c14: 0xe115, 0x1c15: 0xe115, 0x1c16: 0xe175, 0x1c17: 0xe175, - 0x1c18: 0xe115, 0x1c19: 0xe115, 0x1c1a: 0xe135, 0x1c1b: 0xe135, 0x1c1c: 0xe115, 0x1c1d: 0xe115, - 0x1c1e: 0x8b05, 0x1c1f: 0x8b05, 0x1c20: 0x04b5, 0x1c21: 0x04b5, 0x1c22: 0x0a08, 0x1c23: 0x0a08, - 0x1c24: 0x0a08, 0x1c25: 0x0a08, 0x1c26: 0x0a08, 0x1c27: 0x0a08, 0x1c28: 0x0a08, 0x1c29: 0x0a08, - 0x1c2a: 0x0a08, 0x1c2b: 0x0a08, 0x1c2c: 0x0a08, 0x1c2d: 0x0a08, 0x1c2e: 0x0a08, 0x1c2f: 0x0a08, - 0x1c30: 0x0a08, 0x1c31: 0x0a08, 0x1c32: 0x0a08, 0x1c33: 0x0a08, 0x1c34: 0x0a08, 0x1c35: 0x0a08, - 0x1c36: 0x0a08, 0x1c37: 0x0a08, 0x1c38: 0x0a08, 0x1c39: 0x0a08, 0x1c3a: 0x0a08, 0x1c3b: 0x0a08, - 0x1c3c: 0x0a08, 0x1c3d: 0x0a08, 0x1c3e: 0x0a08, 0x1c3f: 0x0a08, - // Block 0x71, offset 0x1c40 - 0x1c40: 0xb189, 0x1c41: 0xb1a1, 0x1c42: 0xb201, 0x1c43: 0xb249, 0x1c44: 0x0040, 0x1c45: 0xb411, - 0x1c46: 0xb291, 0x1c47: 0xb219, 0x1c48: 0xb309, 0x1c49: 0xb429, 0x1c4a: 0xb399, 0x1c4b: 0xb3b1, - 0x1c4c: 0xb3c9, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0xb369, 0x1c51: 0xb2d9, - 0x1c52: 0xb381, 0x1c53: 0xb279, 0x1c54: 0xb2c1, 0x1c55: 0xb1d1, 0x1c56: 0xb1e9, 0x1c57: 0xb231, - 0x1c58: 0xb261, 0x1c59: 0xb2f1, 0x1c5a: 0xb321, 0x1c5b: 0xb351, 0x1c5c: 0xbc59, 0x1c5d: 0x7949, - 0x1c5e: 0xbc71, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040, - 0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0x0040, 0x1c69: 0xb429, - 0x1c6a: 0xb399, 0x1c6b: 0xb3b1, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339, - 0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1, - 0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0x0040, 0x1c7b: 0xb351, - 0x1c7c: 0x0040, 0x1c7d: 0x0040, 0x1c7e: 0x0040, 0x1c7f: 0x0040, - // Block 0x72, offset 0x1c80 - 0x1c80: 0x0040, 0x1c81: 0x0040, 0x1c82: 0xb201, 0x1c83: 0x0040, 0x1c84: 0x0040, 0x1c85: 0x0040, - 0x1c86: 0x0040, 0x1c87: 0xb219, 0x1c88: 0x0040, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1, - 0x1c8c: 0x0040, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0x0040, 0x1c91: 0xb2d9, - 0x1c92: 0xb381, 0x1c93: 0x0040, 0x1c94: 0xb2c1, 0x1c95: 0x0040, 0x1c96: 0x0040, 0x1c97: 0xb231, - 0x1c98: 0x0040, 0x1c99: 0xb2f1, 0x1c9a: 0x0040, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x7949, - 0x1c9e: 0x0040, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040, - 0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429, - 0x1caa: 0xb399, 0x1cab: 0x0040, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, - 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, - 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351, - 0x1cbc: 0xbc59, 0x1cbd: 0x0040, 0x1cbe: 0xbc71, 0x1cbf: 0x0040, - // Block 0x73, offset 0x1cc0 - 0x1cc0: 0xb189, 0x1cc1: 0xb1a1, 0x1cc2: 0xb201, 0x1cc3: 0xb249, 0x1cc4: 0xb3f9, 0x1cc5: 0xb411, - 0x1cc6: 0xb291, 0x1cc7: 0xb219, 0x1cc8: 0xb309, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1, - 0x1ccc: 0xb3c9, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0xb369, 0x1cd1: 0xb2d9, - 0x1cd2: 0xb381, 0x1cd3: 0xb279, 0x1cd4: 0xb2c1, 0x1cd5: 0xb1d1, 0x1cd6: 0xb1e9, 0x1cd7: 0xb231, - 0x1cd8: 0xb261, 0x1cd9: 0xb2f1, 0x1cda: 0xb321, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x0040, - 0x1cde: 0x0040, 0x1cdf: 0x0040, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0xb249, - 0x1ce4: 0x0040, 0x1ce5: 0xb411, 0x1ce6: 0xb291, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429, - 0x1cea: 0x0040, 0x1ceb: 0xb3b1, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339, - 0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0xb279, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1, - 0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0xb261, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351, - 0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040, - // Block 0x74, offset 0x1d00 - 0x1d00: 0x0040, 0x1d01: 0xbca2, 0x1d02: 0xbcba, 0x1d03: 0xbcd2, 0x1d04: 0xbcea, 0x1d05: 0xbd02, - 0x1d06: 0xbd1a, 0x1d07: 0xbd32, 0x1d08: 0xbd4a, 0x1d09: 0xbd62, 0x1d0a: 0xbd7a, 0x1d0b: 0x0018, - 0x1d0c: 0x0018, 0x1d0d: 0x0040, 0x1d0e: 0x0040, 0x1d0f: 0x0040, 0x1d10: 0xbd92, 0x1d11: 0xbdb2, - 0x1d12: 0xbdd2, 0x1d13: 0xbdf2, 0x1d14: 0xbe12, 0x1d15: 0xbe32, 0x1d16: 0xbe52, 0x1d17: 0xbe72, - 0x1d18: 0xbe92, 0x1d19: 0xbeb2, 0x1d1a: 0xbed2, 0x1d1b: 0xbef2, 0x1d1c: 0xbf12, 0x1d1d: 0xbf32, - 0x1d1e: 0xbf52, 0x1d1f: 0xbf72, 0x1d20: 0xbf92, 0x1d21: 0xbfb2, 0x1d22: 0xbfd2, 0x1d23: 0xbff2, - 0x1d24: 0xc012, 0x1d25: 0xc032, 0x1d26: 0xc052, 0x1d27: 0xc072, 0x1d28: 0xc092, 0x1d29: 0xc0b2, - 0x1d2a: 0xc0d1, 0x1d2b: 0x1159, 0x1d2c: 0x0269, 0x1d2d: 0x6671, 0x1d2e: 0xc111, 0x1d2f: 0x0040, - 0x1d30: 0x0039, 0x1d31: 0x0ee9, 0x1d32: 0x1159, 0x1d33: 0x0ef9, 0x1d34: 0x0f09, 0x1d35: 0x1199, - 0x1d36: 0x0f31, 0x1d37: 0x0249, 0x1d38: 0x0f41, 0x1d39: 0x0259, 0x1d3a: 0x0f51, 0x1d3b: 0x0359, - 0x1d3c: 0x0f61, 0x1d3d: 0x0f71, 0x1d3e: 0x00d9, 0x1d3f: 0x0f99, - // Block 0x75, offset 0x1d40 - 0x1d40: 0x2039, 0x1d41: 0x0269, 0x1d42: 0x01d9, 0x1d43: 0x0fa9, 0x1d44: 0x0fb9, 0x1d45: 0x1089, - 0x1d46: 0x0279, 0x1d47: 0x0369, 0x1d48: 0x0289, 0x1d49: 0x13d1, 0x1d4a: 0xc129, 0x1d4b: 0x65b1, - 0x1d4c: 0xc141, 0x1d4d: 0x1441, 0x1d4e: 0xc159, 0x1d4f: 0xc179, 0x1d50: 0x0018, 0x1d51: 0x0018, - 0x1d52: 0x0018, 0x1d53: 0x0018, 0x1d54: 0x0018, 0x1d55: 0x0018, 0x1d56: 0x0018, 0x1d57: 0x0018, - 0x1d58: 0x0018, 0x1d59: 0x0018, 0x1d5a: 0x0018, 0x1d5b: 0x0018, 0x1d5c: 0x0018, 0x1d5d: 0x0018, - 0x1d5e: 0x0018, 0x1d5f: 0x0018, 0x1d60: 0x0018, 0x1d61: 0x0018, 0x1d62: 0x0018, 0x1d63: 0x0018, - 0x1d64: 0x0018, 0x1d65: 0x0018, 0x1d66: 0x0018, 0x1d67: 0x0018, 0x1d68: 0x0018, 0x1d69: 0x0018, - 0x1d6a: 0xc191, 0x1d6b: 0xc1a9, 0x1d6c: 0x0040, 0x1d6d: 0x0040, 0x1d6e: 0x0040, 0x1d6f: 0x0040, - 0x1d70: 0x0018, 0x1d71: 0x0018, 0x1d72: 0x0018, 0x1d73: 0x0018, 0x1d74: 0x0018, 0x1d75: 0x0018, - 0x1d76: 0x0018, 0x1d77: 0x0018, 0x1d78: 0x0018, 0x1d79: 0x0018, 0x1d7a: 0x0018, 0x1d7b: 0x0018, - 0x1d7c: 0x0018, 0x1d7d: 0x0018, 0x1d7e: 0x0018, 0x1d7f: 0x0018, - // Block 0x76, offset 0x1d80 - 0x1d80: 0xc1d9, 0x1d81: 0xc211, 0x1d82: 0xc249, 0x1d83: 0x0040, 0x1d84: 0x0040, 0x1d85: 0x0040, - 0x1d86: 0x0040, 0x1d87: 0x0040, 0x1d88: 0x0040, 0x1d89: 0x0040, 0x1d8a: 0x0040, 0x1d8b: 0x0040, - 0x1d8c: 0x0040, 0x1d8d: 0x0040, 0x1d8e: 0x0040, 0x1d8f: 0x0040, 0x1d90: 0xc269, 0x1d91: 0xc289, - 0x1d92: 0xc2a9, 0x1d93: 0xc2c9, 0x1d94: 0xc2e9, 0x1d95: 0xc309, 0x1d96: 0xc329, 0x1d97: 0xc349, - 0x1d98: 0xc369, 0x1d99: 0xc389, 0x1d9a: 0xc3a9, 0x1d9b: 0xc3c9, 0x1d9c: 0xc3e9, 0x1d9d: 0xc409, - 0x1d9e: 0xc429, 0x1d9f: 0xc449, 0x1da0: 0xc469, 0x1da1: 0xc489, 0x1da2: 0xc4a9, 0x1da3: 0xc4c9, - 0x1da4: 0xc4e9, 0x1da5: 0xc509, 0x1da6: 0xc529, 0x1da7: 0xc549, 0x1da8: 0xc569, 0x1da9: 0xc589, - 0x1daa: 0xc5a9, 0x1dab: 0xc5c9, 0x1dac: 0xc5e9, 0x1dad: 0xc609, 0x1dae: 0xc629, 0x1daf: 0xc649, - 0x1db0: 0xc669, 0x1db1: 0xc689, 0x1db2: 0xc6a9, 0x1db3: 0xc6c9, 0x1db4: 0xc6e9, 0x1db5: 0xc709, - 0x1db6: 0xc729, 0x1db7: 0xc749, 0x1db8: 0xc769, 0x1db9: 0xc789, 0x1dba: 0xc7a9, 0x1dbb: 0xc7c9, - 0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040, - // Block 0x77, offset 0x1dc0 - 0x1dc0: 0xcaf9, 0x1dc1: 0xcb19, 0x1dc2: 0xcb39, 0x1dc3: 0x8b1d, 0x1dc4: 0xcb59, 0x1dc5: 0xcb79, - 0x1dc6: 0xcb99, 0x1dc7: 0xcbb9, 0x1dc8: 0xcbd9, 0x1dc9: 0xcbf9, 0x1dca: 0xcc19, 0x1dcb: 0xcc39, - 0x1dcc: 0xcc59, 0x1dcd: 0x8b3d, 0x1dce: 0xcc79, 0x1dcf: 0xcc99, 0x1dd0: 0xccb9, 0x1dd1: 0xccd9, - 0x1dd2: 0x8b5d, 0x1dd3: 0xccf9, 0x1dd4: 0xcd19, 0x1dd5: 0xc429, 0x1dd6: 0x8b7d, 0x1dd7: 0xcd39, - 0x1dd8: 0xcd59, 0x1dd9: 0xcd79, 0x1dda: 0xcd99, 0x1ddb: 0xcdb9, 0x1ddc: 0x8b9d, 0x1ddd: 0xcdd9, - 0x1dde: 0xcdf9, 0x1ddf: 0xce19, 0x1de0: 0xce39, 0x1de1: 0xce59, 0x1de2: 0xc789, 0x1de3: 0xce79, - 0x1de4: 0xce99, 0x1de5: 0xceb9, 0x1de6: 0xced9, 0x1de7: 0xcef9, 0x1de8: 0xcf19, 0x1de9: 0xcf39, - 0x1dea: 0xcf59, 0x1deb: 0xcf79, 0x1dec: 0xcf99, 0x1ded: 0xcfb9, 0x1dee: 0xcfd9, 0x1def: 0xcff9, - 0x1df0: 0xd019, 0x1df1: 0xd039, 0x1df2: 0xd039, 0x1df3: 0xd039, 0x1df4: 0x8bbd, 0x1df5: 0xd059, - 0x1df6: 0xd079, 0x1df7: 0xd099, 0x1df8: 0x8bdd, 0x1df9: 0xd0b9, 0x1dfa: 0xd0d9, 0x1dfb: 0xd0f9, - 0x1dfc: 0xd119, 0x1dfd: 0xd139, 0x1dfe: 0xd159, 0x1dff: 0xd179, - // Block 0x78, offset 0x1e00 - 0x1e00: 0xd199, 0x1e01: 0xd1b9, 0x1e02: 0xd1d9, 0x1e03: 0xd1f9, 0x1e04: 0xd219, 0x1e05: 0xd239, - 0x1e06: 0xd239, 0x1e07: 0xd259, 0x1e08: 0xd279, 0x1e09: 0xd299, 0x1e0a: 0xd2b9, 0x1e0b: 0xd2d9, - 0x1e0c: 0xd2f9, 0x1e0d: 0xd319, 0x1e0e: 0xd339, 0x1e0f: 0xd359, 0x1e10: 0xd379, 0x1e11: 0xd399, - 0x1e12: 0xd3b9, 0x1e13: 0xd3d9, 0x1e14: 0xd3f9, 0x1e15: 0xd419, 0x1e16: 0xd439, 0x1e17: 0xd459, - 0x1e18: 0xd479, 0x1e19: 0x8bfd, 0x1e1a: 0xd499, 0x1e1b: 0xd4b9, 0x1e1c: 0xd4d9, 0x1e1d: 0xc309, - 0x1e1e: 0xd4f9, 0x1e1f: 0xd519, 0x1e20: 0x8c1d, 0x1e21: 0x8c3d, 0x1e22: 0xd539, 0x1e23: 0xd559, - 0x1e24: 0xd579, 0x1e25: 0xd599, 0x1e26: 0xd5b9, 0x1e27: 0xd5d9, 0x1e28: 0x2040, 0x1e29: 0xd5f9, - 0x1e2a: 0xd619, 0x1e2b: 0xd619, 0x1e2c: 0x8c5d, 0x1e2d: 0xd639, 0x1e2e: 0xd659, 0x1e2f: 0xd679, - 0x1e30: 0xd699, 0x1e31: 0x8c7d, 0x1e32: 0xd6b9, 0x1e33: 0xd6d9, 0x1e34: 0x2040, 0x1e35: 0xd6f9, - 0x1e36: 0xd719, 0x1e37: 0xd739, 0x1e38: 0xd759, 0x1e39: 0xd779, 0x1e3a: 0xd799, 0x1e3b: 0x8c9d, - 0x1e3c: 0xd7b9, 0x1e3d: 0x8cbd, 0x1e3e: 0xd7d9, 0x1e3f: 0xd7f9, - // Block 0x79, offset 0x1e40 - 0x1e40: 0xd819, 0x1e41: 0xd839, 0x1e42: 0xd859, 0x1e43: 0xd879, 0x1e44: 0xd899, 0x1e45: 0xd8b9, - 0x1e46: 0xd8d9, 0x1e47: 0xd8f9, 0x1e48: 0xd919, 0x1e49: 0x8cdd, 0x1e4a: 0xd939, 0x1e4b: 0xd959, - 0x1e4c: 0xd979, 0x1e4d: 0xd999, 0x1e4e: 0xd9b9, 0x1e4f: 0x8cfd, 0x1e50: 0xd9d9, 0x1e51: 0x8d1d, - 0x1e52: 0x8d3d, 0x1e53: 0xd9f9, 0x1e54: 0xda19, 0x1e55: 0xda19, 0x1e56: 0xda39, 0x1e57: 0x8d5d, - 0x1e58: 0x8d7d, 0x1e59: 0xda59, 0x1e5a: 0xda79, 0x1e5b: 0xda99, 0x1e5c: 0xdab9, 0x1e5d: 0xdad9, - 0x1e5e: 0xdaf9, 0x1e5f: 0xdb19, 0x1e60: 0xdb39, 0x1e61: 0xdb59, 0x1e62: 0xdb79, 0x1e63: 0xdb99, - 0x1e64: 0x8d9d, 0x1e65: 0xdbb9, 0x1e66: 0xdbd9, 0x1e67: 0xdbf9, 0x1e68: 0xdc19, 0x1e69: 0xdbf9, - 0x1e6a: 0xdc39, 0x1e6b: 0xdc59, 0x1e6c: 0xdc79, 0x1e6d: 0xdc99, 0x1e6e: 0xdcb9, 0x1e6f: 0xdcd9, - 0x1e70: 0xdcf9, 0x1e71: 0xdd19, 0x1e72: 0xdd39, 0x1e73: 0xdd59, 0x1e74: 0xdd79, 0x1e75: 0xdd99, - 0x1e76: 0xddb9, 0x1e77: 0xddd9, 0x1e78: 0x8dbd, 0x1e79: 0xddf9, 0x1e7a: 0xde19, 0x1e7b: 0xde39, - 0x1e7c: 0xde59, 0x1e7d: 0xde79, 0x1e7e: 0x8ddd, 0x1e7f: 0xde99, - // Block 0x7a, offset 0x1e80 - 0x1e80: 0xe599, 0x1e81: 0xe5b9, 0x1e82: 0xe5d9, 0x1e83: 0xe5f9, 0x1e84: 0xe619, 0x1e85: 0xe639, - 0x1e86: 0x8efd, 0x1e87: 0xe659, 0x1e88: 0xe679, 0x1e89: 0xe699, 0x1e8a: 0xe6b9, 0x1e8b: 0xe6d9, - 0x1e8c: 0xe6f9, 0x1e8d: 0x8f1d, 0x1e8e: 0xe719, 0x1e8f: 0xe739, 0x1e90: 0x8f3d, 0x1e91: 0x8f5d, - 0x1e92: 0xe759, 0x1e93: 0xe779, 0x1e94: 0xe799, 0x1e95: 0xe7b9, 0x1e96: 0xe7d9, 0x1e97: 0xe7f9, - 0x1e98: 0xe819, 0x1e99: 0xe839, 0x1e9a: 0xe859, 0x1e9b: 0x8f7d, 0x1e9c: 0xe879, 0x1e9d: 0x8f9d, - 0x1e9e: 0xe899, 0x1e9f: 0x2040, 0x1ea0: 0xe8b9, 0x1ea1: 0xe8d9, 0x1ea2: 0xe8f9, 0x1ea3: 0x8fbd, - 0x1ea4: 0xe919, 0x1ea5: 0xe939, 0x1ea6: 0x8fdd, 0x1ea7: 0x8ffd, 0x1ea8: 0xe959, 0x1ea9: 0xe979, - 0x1eaa: 0xe999, 0x1eab: 0xe9b9, 0x1eac: 0xe9d9, 0x1ead: 0xe9d9, 0x1eae: 0xe9f9, 0x1eaf: 0xea19, - 0x1eb0: 0xea39, 0x1eb1: 0xea59, 0x1eb2: 0xea79, 0x1eb3: 0xea99, 0x1eb4: 0xeab9, 0x1eb5: 0x901d, - 0x1eb6: 0xead9, 0x1eb7: 0x903d, 0x1eb8: 0xeaf9, 0x1eb9: 0x905d, 0x1eba: 0xeb19, 0x1ebb: 0x907d, - 0x1ebc: 0x909d, 0x1ebd: 0x90bd, 0x1ebe: 0xeb39, 0x1ebf: 0xeb59, - // Block 0x7b, offset 0x1ec0 - 0x1ec0: 0xeb79, 0x1ec1: 0x90dd, 0x1ec2: 0x90fd, 0x1ec3: 0x911d, 0x1ec4: 0x913d, 0x1ec5: 0xeb99, - 0x1ec6: 0xebb9, 0x1ec7: 0xebb9, 0x1ec8: 0xebd9, 0x1ec9: 0xebf9, 0x1eca: 0xec19, 0x1ecb: 0xec39, - 0x1ecc: 0xec59, 0x1ecd: 0x915d, 0x1ece: 0xec79, 0x1ecf: 0xec99, 0x1ed0: 0xecb9, 0x1ed1: 0xecd9, - 0x1ed2: 0x917d, 0x1ed3: 0xecf9, 0x1ed4: 0x919d, 0x1ed5: 0x91bd, 0x1ed6: 0xed19, 0x1ed7: 0xed39, - 0x1ed8: 0xed59, 0x1ed9: 0xed79, 0x1eda: 0xed99, 0x1edb: 0xedb9, 0x1edc: 0x91dd, 0x1edd: 0x91fd, - 0x1ede: 0x921d, 0x1edf: 0x2040, 0x1ee0: 0xedd9, 0x1ee1: 0x923d, 0x1ee2: 0xedf9, 0x1ee3: 0xee19, - 0x1ee4: 0xee39, 0x1ee5: 0x925d, 0x1ee6: 0xee59, 0x1ee7: 0xee79, 0x1ee8: 0xee99, 0x1ee9: 0xeeb9, - 0x1eea: 0xeed9, 0x1eeb: 0x927d, 0x1eec: 0xeef9, 0x1eed: 0xef19, 0x1eee: 0xef39, 0x1eef: 0xef59, - 0x1ef0: 0xef79, 0x1ef1: 0xef99, 0x1ef2: 0x929d, 0x1ef3: 0x92bd, 0x1ef4: 0xefb9, 0x1ef5: 0x92dd, - 0x1ef6: 0xefd9, 0x1ef7: 0x92fd, 0x1ef8: 0xeff9, 0x1ef9: 0xf019, 0x1efa: 0xf039, 0x1efb: 0x931d, - 0x1efc: 0x933d, 0x1efd: 0xf059, 0x1efe: 0x935d, 0x1eff: 0xf079, - // Block 0x7c, offset 0x1f00 - 0x1f00: 0xf6b9, 0x1f01: 0xf6d9, 0x1f02: 0xf6f9, 0x1f03: 0xf719, 0x1f04: 0xf739, 0x1f05: 0x951d, - 0x1f06: 0xf759, 0x1f07: 0xf779, 0x1f08: 0xf799, 0x1f09: 0xf7b9, 0x1f0a: 0xf7d9, 0x1f0b: 0x953d, - 0x1f0c: 0x955d, 0x1f0d: 0xf7f9, 0x1f0e: 0xf819, 0x1f0f: 0xf839, 0x1f10: 0xf859, 0x1f11: 0xf879, - 0x1f12: 0xf899, 0x1f13: 0x957d, 0x1f14: 0xf8b9, 0x1f15: 0xf8d9, 0x1f16: 0xf8f9, 0x1f17: 0xf919, - 0x1f18: 0x959d, 0x1f19: 0x95bd, 0x1f1a: 0xf939, 0x1f1b: 0xf959, 0x1f1c: 0xf979, 0x1f1d: 0x95dd, - 0x1f1e: 0xf999, 0x1f1f: 0xf9b9, 0x1f20: 0x6815, 0x1f21: 0x95fd, 0x1f22: 0xf9d9, 0x1f23: 0xf9f9, - 0x1f24: 0xfa19, 0x1f25: 0x961d, 0x1f26: 0xfa39, 0x1f27: 0xfa59, 0x1f28: 0xfa79, 0x1f29: 0xfa99, - 0x1f2a: 0xfab9, 0x1f2b: 0xfad9, 0x1f2c: 0xfaf9, 0x1f2d: 0x963d, 0x1f2e: 0xfb19, 0x1f2f: 0xfb39, - 0x1f30: 0xfb59, 0x1f31: 0x965d, 0x1f32: 0xfb79, 0x1f33: 0xfb99, 0x1f34: 0xfbb9, 0x1f35: 0xfbd9, - 0x1f36: 0x7b35, 0x1f37: 0x967d, 0x1f38: 0xfbf9, 0x1f39: 0xfc19, 0x1f3a: 0xfc39, 0x1f3b: 0x969d, - 0x1f3c: 0xfc59, 0x1f3d: 0x96bd, 0x1f3e: 0xfc79, 0x1f3f: 0xfc79, - // Block 0x7d, offset 0x1f40 - 0x1f40: 0xfc99, 0x1f41: 0x96dd, 0x1f42: 0xfcb9, 0x1f43: 0xfcd9, 0x1f44: 0xfcf9, 0x1f45: 0xfd19, - 0x1f46: 0xfd39, 0x1f47: 0xfd59, 0x1f48: 0xfd79, 0x1f49: 0x96fd, 0x1f4a: 0xfd99, 0x1f4b: 0xfdb9, - 0x1f4c: 0xfdd9, 0x1f4d: 0xfdf9, 0x1f4e: 0xfe19, 0x1f4f: 0xfe39, 0x1f50: 0x971d, 0x1f51: 0xfe59, - 0x1f52: 0x973d, 0x1f53: 0x975d, 0x1f54: 0x977d, 0x1f55: 0xfe79, 0x1f56: 0xfe99, 0x1f57: 0xfeb9, - 0x1f58: 0xfed9, 0x1f59: 0xfef9, 0x1f5a: 0xff19, 0x1f5b: 0xff39, 0x1f5c: 0xff59, 0x1f5d: 0x979d, - 0x1f5e: 0x0040, 0x1f5f: 0x0040, 0x1f60: 0x0040, 0x1f61: 0x0040, 0x1f62: 0x0040, 0x1f63: 0x0040, - 0x1f64: 0x0040, 0x1f65: 0x0040, 0x1f66: 0x0040, 0x1f67: 0x0040, 0x1f68: 0x0040, 0x1f69: 0x0040, - 0x1f6a: 0x0040, 0x1f6b: 0x0040, 0x1f6c: 0x0040, 0x1f6d: 0x0040, 0x1f6e: 0x0040, 0x1f6f: 0x0040, - 0x1f70: 0x0040, 0x1f71: 0x0040, 0x1f72: 0x0040, 0x1f73: 0x0040, 0x1f74: 0x0040, 0x1f75: 0x0040, - 0x1f76: 0x0040, 0x1f77: 0x0040, 0x1f78: 0x0040, 0x1f79: 0x0040, 0x1f7a: 0x0040, 0x1f7b: 0x0040, - 0x1f7c: 0x0040, 0x1f7d: 0x0040, 0x1f7e: 0x0040, 0x1f7f: 0x0040, -} - -// idnaIndex: 35 blocks, 2240 entries, 4480 bytes -// Block 0 is the zero block. -var idnaIndex = [2240]uint16{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x7c, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, - 0xc8: 0x06, 0xc9: 0x7d, 0xca: 0x7e, 0xcb: 0x07, 0xcc: 0x7f, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, - 0xd0: 0x80, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x81, 0xd6: 0x82, 0xd7: 0x83, - 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x84, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87, - 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, - 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, - 0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20, - // Block 0x4, offset 0x100 - 0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x13, 0x126: 0x14, 0x127: 0x15, - 0x128: 0x16, 0x129: 0x17, 0x12a: 0x18, 0x12b: 0x19, 0x12c: 0x1a, 0x12d: 0x1b, 0x12e: 0x1c, 0x12f: 0x8d, - 0x130: 0x8e, 0x131: 0x1d, 0x132: 0x1e, 0x133: 0x1f, 0x134: 0x8f, 0x135: 0x20, 0x136: 0x90, 0x137: 0x91, - 0x138: 0x92, 0x139: 0x93, 0x13a: 0x21, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x22, 0x13e: 0x23, 0x13f: 0x96, - // Block 0x5, offset 0x140 - 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e, - 0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6, - 0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f, - 0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae, - 0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6, - 0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe, - 0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x24, 0x175: 0x25, 0x176: 0x26, 0x177: 0xc3, - 0x178: 0x27, 0x179: 0x27, 0x17a: 0x28, 0x17b: 0x27, 0x17c: 0xc4, 0x17d: 0x29, 0x17e: 0x2a, 0x17f: 0x2b, - // Block 0x6, offset 0x180 - 0x180: 0x2c, 0x181: 0x2d, 0x182: 0x2e, 0x183: 0xc5, 0x184: 0x2f, 0x185: 0x30, 0x186: 0xc6, 0x187: 0x9b, - 0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xca, - 0x190: 0xcb, 0x191: 0x31, 0x192: 0x32, 0x193: 0x33, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, - 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, - 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, - 0x1a8: 0xcc, 0x1a9: 0xcd, 0x1aa: 0x9b, 0x1ab: 0xce, 0x1ac: 0x9b, 0x1ad: 0xcf, 0x1ae: 0xd0, 0x1af: 0xd1, - 0x1b0: 0xd2, 0x1b1: 0x34, 0x1b2: 0x27, 0x1b3: 0x35, 0x1b4: 0xd3, 0x1b5: 0xd4, 0x1b6: 0xd5, 0x1b7: 0xd6, - 0x1b8: 0xd7, 0x1b9: 0xd8, 0x1ba: 0xd9, 0x1bb: 0xda, 0x1bc: 0xdb, 0x1bd: 0xdc, 0x1be: 0xdd, 0x1bf: 0x36, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x37, 0x1c1: 0xde, 0x1c2: 0xdf, 0x1c3: 0xe0, 0x1c4: 0xe1, 0x1c5: 0x38, 0x1c6: 0x39, 0x1c7: 0xe2, - 0x1c8: 0xe3, 0x1c9: 0x3a, 0x1ca: 0x3b, 0x1cb: 0x3c, 0x1cc: 0x3d, 0x1cd: 0x3e, 0x1ce: 0x3f, 0x1cf: 0x40, - 0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f, - 0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f, - 0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f, - 0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f, - 0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f, - 0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f, - // Block 0x8, offset 0x200 - 0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f, - 0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f, - 0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f, - 0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f, - 0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f, - 0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f, - 0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b, - 0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f, - // Block 0x9, offset 0x240 - 0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f, - 0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f, - 0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f, - 0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f, - 0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f, - 0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f, - 0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f, - 0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f, - // Block 0xa, offset 0x280 - 0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f, - 0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f, - 0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f, - 0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f, - 0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f, - 0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f, - 0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f, - 0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe4, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f, - 0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f, - 0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe5, 0x2d3: 0xe6, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f, - 0x2d8: 0xe7, 0x2d9: 0x41, 0x2da: 0x42, 0x2db: 0xe8, 0x2dc: 0x43, 0x2dd: 0x44, 0x2de: 0x45, 0x2df: 0xe9, - 0x2e0: 0xea, 0x2e1: 0xeb, 0x2e2: 0xec, 0x2e3: 0xed, 0x2e4: 0xee, 0x2e5: 0xef, 0x2e6: 0xf0, 0x2e7: 0xf1, - 0x2e8: 0xf2, 0x2e9: 0xf3, 0x2ea: 0xf4, 0x2eb: 0xf5, 0x2ec: 0xf6, 0x2ed: 0xf7, 0x2ee: 0xf8, 0x2ef: 0xf9, - 0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f, - 0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f, - // Block 0xc, offset 0x300 - 0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f, - 0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f, - 0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f, - 0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xfa, 0x31f: 0xfb, - // Block 0xd, offset 0x340 - 0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba, - 0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba, - 0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba, - 0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba, - 0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba, - 0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba, - 0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba, - 0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba, - // Block 0xe, offset 0x380 - 0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba, - 0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba, - 0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba, - 0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba, - 0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfc, 0x3a5: 0xfd, 0x3a6: 0xfe, 0x3a7: 0xff, - 0x3a8: 0x46, 0x3a9: 0x100, 0x3aa: 0x101, 0x3ab: 0x47, 0x3ac: 0x48, 0x3ad: 0x49, 0x3ae: 0x4a, 0x3af: 0x4b, - 0x3b0: 0x102, 0x3b1: 0x4c, 0x3b2: 0x4d, 0x3b3: 0x4e, 0x3b4: 0x4f, 0x3b5: 0x50, 0x3b6: 0x103, 0x3b7: 0x51, - 0x3b8: 0x52, 0x3b9: 0x53, 0x3ba: 0x54, 0x3bb: 0x55, 0x3bc: 0x56, 0x3bd: 0x57, 0x3be: 0x58, 0x3bf: 0x59, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x104, 0x3c1: 0x105, 0x3c2: 0x9f, 0x3c3: 0x106, 0x3c4: 0x107, 0x3c5: 0x9b, 0x3c6: 0x108, 0x3c7: 0x109, - 0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x10a, 0x3cb: 0x10b, 0x3cc: 0x10c, 0x3cd: 0x10d, 0x3ce: 0x10e, 0x3cf: 0x10f, - 0x3d0: 0x110, 0x3d1: 0x9f, 0x3d2: 0x111, 0x3d3: 0x112, 0x3d4: 0x113, 0x3d5: 0x114, 0x3d6: 0xba, 0x3d7: 0xba, - 0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x115, 0x3dd: 0x116, 0x3de: 0xba, 0x3df: 0xba, - 0x3e0: 0x117, 0x3e1: 0x118, 0x3e2: 0x119, 0x3e3: 0x11a, 0x3e4: 0x11b, 0x3e5: 0xba, 0x3e6: 0x11c, 0x3e7: 0x11d, - 0x3e8: 0x11e, 0x3e9: 0x11f, 0x3ea: 0x120, 0x3eb: 0x5a, 0x3ec: 0x121, 0x3ed: 0x122, 0x3ee: 0x5b, 0x3ef: 0xba, - 0x3f0: 0x123, 0x3f1: 0x124, 0x3f2: 0x125, 0x3f3: 0x126, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba, - 0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba, - // Block 0x10, offset 0x400 - 0x400: 0x128, 0x401: 0x129, 0x402: 0x12a, 0x403: 0x12b, 0x404: 0x12c, 0x405: 0x12d, 0x406: 0x12e, 0x407: 0x12f, - 0x408: 0x130, 0x409: 0xba, 0x40a: 0x131, 0x40b: 0x132, 0x40c: 0x5c, 0x40d: 0x5d, 0x40e: 0xba, 0x40f: 0xba, - 0x410: 0x133, 0x411: 0x134, 0x412: 0x135, 0x413: 0x136, 0x414: 0xba, 0x415: 0xba, 0x416: 0x137, 0x417: 0x138, - 0x418: 0x139, 0x419: 0x13a, 0x41a: 0x13b, 0x41b: 0x13c, 0x41c: 0x13d, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba, - 0x420: 0xba, 0x421: 0xba, 0x422: 0x13e, 0x423: 0x13f, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba, - 0x428: 0xba, 0x429: 0xba, 0x42a: 0xba, 0x42b: 0x140, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba, - 0x430: 0x141, 0x431: 0x142, 0x432: 0x143, 0x433: 0xba, 0x434: 0xba, 0x435: 0xba, 0x436: 0xba, 0x437: 0xba, - 0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba, - // Block 0x11, offset 0x440 - 0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f, - 0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x144, 0x44f: 0xba, - 0x450: 0x9b, 0x451: 0x145, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x146, 0x456: 0xba, 0x457: 0xba, - 0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba, - 0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba, - 0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba, - 0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba, - 0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba, - // Block 0x12, offset 0x480 - 0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f, - 0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f, - 0x490: 0x147, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba, - 0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba, - 0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba, - 0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba, - 0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba, - 0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba, - // Block 0x13, offset 0x4c0 - 0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba, - 0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba, - 0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f, - 0x4d8: 0x9f, 0x4d9: 0x148, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba, - 0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba, - 0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba, - 0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba, - 0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba, - // Block 0x14, offset 0x500 - 0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba, - 0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba, - 0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba, - 0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba, - 0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f, - 0x528: 0x140, 0x529: 0x149, 0x52a: 0xba, 0x52b: 0x14a, 0x52c: 0x14b, 0x52d: 0x14c, 0x52e: 0x14d, 0x52f: 0xba, - 0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba, - 0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x14e, 0x53e: 0x14f, 0x53f: 0x150, - // Block 0x15, offset 0x540 - 0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f, - 0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f, - 0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f, - 0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x151, - 0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f, - 0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x152, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba, - 0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba, - 0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba, - // Block 0x16, offset 0x580 - 0x580: 0x153, 0x581: 0xba, 0x582: 0xba, 0x583: 0xba, 0x584: 0xba, 0x585: 0xba, 0x586: 0xba, 0x587: 0xba, - 0x588: 0xba, 0x589: 0xba, 0x58a: 0xba, 0x58b: 0xba, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba, - 0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba, - 0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba, - 0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba, - 0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba, - 0x5b0: 0x9f, 0x5b1: 0x154, 0x5b2: 0x155, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba, - 0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x156, 0x5c4: 0x157, 0x5c5: 0x158, 0x5c6: 0x159, 0x5c7: 0x15a, - 0x5c8: 0x9b, 0x5c9: 0x15b, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x15c, 0x5ce: 0xba, 0x5cf: 0xba, - 0x5d0: 0x5e, 0x5d1: 0x5f, 0x5d2: 0x60, 0x5d3: 0x61, 0x5d4: 0x62, 0x5d5: 0x63, 0x5d6: 0x64, 0x5d7: 0x65, - 0x5d8: 0x66, 0x5d9: 0x67, 0x5da: 0x68, 0x5db: 0x69, 0x5dc: 0x6a, 0x5dd: 0x6b, 0x5de: 0x6c, 0x5df: 0x6d, - 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, - 0x5e8: 0x15d, 0x5e9: 0x15e, 0x5ea: 0x15f, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba, - 0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba, - 0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba, - // Block 0x18, offset 0x600 - 0x600: 0x160, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba, - 0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba, - 0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba, - 0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba, - 0x620: 0x123, 0x621: 0x123, 0x622: 0x123, 0x623: 0x161, 0x624: 0x6e, 0x625: 0x162, 0x626: 0xba, 0x627: 0xba, - 0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba, - 0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba, - 0x638: 0x6f, 0x639: 0x70, 0x63a: 0x71, 0x63b: 0x163, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba, - // Block 0x19, offset 0x640 - 0x640: 0x164, 0x641: 0x9b, 0x642: 0x165, 0x643: 0x166, 0x644: 0x72, 0x645: 0x73, 0x646: 0x167, 0x647: 0x168, - 0x648: 0x74, 0x649: 0x169, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, - 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, - 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x16a, 0x65c: 0x9b, 0x65d: 0x16b, 0x65e: 0x9b, 0x65f: 0x16c, - 0x660: 0x16d, 0x661: 0x16e, 0x662: 0x16f, 0x663: 0xba, 0x664: 0x170, 0x665: 0x171, 0x666: 0x172, 0x667: 0x173, - 0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba, - 0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba, - 0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba, - // Block 0x1a, offset 0x680 - 0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f, - 0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f, - 0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f, - 0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x174, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f, - 0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f, - 0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f, - 0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f, - 0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f, - 0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f, - 0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f, - 0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x175, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f, - 0x6e0: 0x176, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f, - 0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f, - 0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f, - 0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f, - // Block 0x1c, offset 0x700 - 0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f, - 0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f, - 0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f, - 0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f, - 0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f, - 0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f, - 0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f, - 0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x177, 0x73b: 0xba, 0x73c: 0xba, 0x73d: 0xba, 0x73e: 0xba, 0x73f: 0xba, - // Block 0x1d, offset 0x740 - 0x740: 0xba, 0x741: 0xba, 0x742: 0xba, 0x743: 0xba, 0x744: 0xba, 0x745: 0xba, 0x746: 0xba, 0x747: 0xba, - 0x748: 0xba, 0x749: 0xba, 0x74a: 0xba, 0x74b: 0xba, 0x74c: 0xba, 0x74d: 0xba, 0x74e: 0xba, 0x74f: 0xba, - 0x750: 0xba, 0x751: 0xba, 0x752: 0xba, 0x753: 0xba, 0x754: 0xba, 0x755: 0xba, 0x756: 0xba, 0x757: 0xba, - 0x758: 0xba, 0x759: 0xba, 0x75a: 0xba, 0x75b: 0xba, 0x75c: 0xba, 0x75d: 0xba, 0x75e: 0xba, 0x75f: 0xba, - 0x760: 0x75, 0x761: 0x76, 0x762: 0x77, 0x763: 0x178, 0x764: 0x78, 0x765: 0x79, 0x766: 0x179, 0x767: 0x7a, - 0x768: 0x7b, 0x769: 0xba, 0x76a: 0xba, 0x76b: 0xba, 0x76c: 0xba, 0x76d: 0xba, 0x76e: 0xba, 0x76f: 0xba, - 0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba, - 0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba, - // Block 0x1e, offset 0x780 - 0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07, - 0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17, - 0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07, - 0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b, - 0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b, - 0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b, - // Block 0x1f, offset 0x7c0 - 0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b, - 0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b, - 0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b, - 0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b, - 0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b, - 0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b, - 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, - 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, - // Block 0x20, offset 0x800 - 0x800: 0x17a, 0x801: 0x17b, 0x802: 0xba, 0x803: 0xba, 0x804: 0x17c, 0x805: 0x17c, 0x806: 0x17c, 0x807: 0x17d, - 0x808: 0xba, 0x809: 0xba, 0x80a: 0xba, 0x80b: 0xba, 0x80c: 0xba, 0x80d: 0xba, 0x80e: 0xba, 0x80f: 0xba, - 0x810: 0xba, 0x811: 0xba, 0x812: 0xba, 0x813: 0xba, 0x814: 0xba, 0x815: 0xba, 0x816: 0xba, 0x817: 0xba, - 0x818: 0xba, 0x819: 0xba, 0x81a: 0xba, 0x81b: 0xba, 0x81c: 0xba, 0x81d: 0xba, 0x81e: 0xba, 0x81f: 0xba, - 0x820: 0xba, 0x821: 0xba, 0x822: 0xba, 0x823: 0xba, 0x824: 0xba, 0x825: 0xba, 0x826: 0xba, 0x827: 0xba, - 0x828: 0xba, 0x829: 0xba, 0x82a: 0xba, 0x82b: 0xba, 0x82c: 0xba, 0x82d: 0xba, 0x82e: 0xba, 0x82f: 0xba, - 0x830: 0xba, 0x831: 0xba, 0x832: 0xba, 0x833: 0xba, 0x834: 0xba, 0x835: 0xba, 0x836: 0xba, 0x837: 0xba, - 0x838: 0xba, 0x839: 0xba, 0x83a: 0xba, 0x83b: 0xba, 0x83c: 0xba, 0x83d: 0xba, 0x83e: 0xba, 0x83f: 0xba, - // Block 0x21, offset 0x840 - 0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b, - 0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b, - 0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b, - 0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b, - 0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b, - 0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b, - 0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b, - 0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b, - // Block 0x22, offset 0x880 - 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, - 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, -} - -// idnaSparseOffset: 258 entries, 516 bytes -var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x93, 0x98, 0xa1, 0xb1, 0xbf, 0xcc, 0xd8, 0xe9, 0xf3, 0xfa, 0x107, 0x118, 0x11f, 0x12a, 0x139, 0x147, 0x151, 0x153, 0x158, 0x15b, 0x15e, 0x160, 0x16c, 0x177, 0x17f, 0x185, 0x18b, 0x190, 0x195, 0x198, 0x19c, 0x1a2, 0x1a7, 0x1b3, 0x1bd, 0x1c3, 0x1d4, 0x1de, 0x1e1, 0x1e9, 0x1ec, 0x1f9, 0x201, 0x205, 0x20c, 0x214, 0x224, 0x230, 0x232, 0x23c, 0x248, 0x254, 0x260, 0x268, 0x26d, 0x277, 0x288, 0x28c, 0x297, 0x29b, 0x2a4, 0x2ac, 0x2b2, 0x2b7, 0x2ba, 0x2bd, 0x2c1, 0x2c7, 0x2cb, 0x2cf, 0x2d5, 0x2dc, 0x2e2, 0x2ea, 0x2f1, 0x2fc, 0x306, 0x30a, 0x30d, 0x313, 0x317, 0x319, 0x31c, 0x31e, 0x321, 0x32b, 0x32e, 0x33d, 0x341, 0x346, 0x349, 0x34d, 0x352, 0x357, 0x35d, 0x363, 0x372, 0x378, 0x37c, 0x38b, 0x390, 0x398, 0x3a2, 0x3ad, 0x3b5, 0x3c6, 0x3cf, 0x3df, 0x3ec, 0x3f6, 0x3fb, 0x408, 0x40c, 0x411, 0x413, 0x417, 0x419, 0x41d, 0x426, 0x42c, 0x430, 0x440, 0x44a, 0x44f, 0x452, 0x458, 0x45f, 0x464, 0x468, 0x46e, 0x473, 0x47c, 0x481, 0x487, 0x48e, 0x495, 0x49c, 0x4a0, 0x4a5, 0x4a8, 0x4ad, 0x4b9, 0x4bf, 0x4c4, 0x4cb, 0x4d3, 0x4d8, 0x4dc, 0x4ec, 0x4f3, 0x4f7, 0x4fb, 0x502, 0x504, 0x507, 0x50a, 0x50e, 0x512, 0x518, 0x521, 0x52d, 0x534, 0x53d, 0x545, 0x54c, 0x55a, 0x567, 0x574, 0x57d, 0x581, 0x58f, 0x597, 0x5a2, 0x5ab, 0x5b1, 0x5b9, 0x5c2, 0x5cc, 0x5cf, 0x5db, 0x5de, 0x5e3, 0x5e6, 0x5f0, 0x5f9, 0x605, 0x608, 0x60d, 0x610, 0x613, 0x616, 0x61d, 0x624, 0x628, 0x633, 0x636, 0x63c, 0x641, 0x645, 0x648, 0x64b, 0x64e, 0x653, 0x65d, 0x660, 0x664, 0x673, 0x67f, 0x683, 0x688, 0x68d, 0x691, 0x696, 0x69f, 0x6aa, 0x6b0, 0x6b8, 0x6bc, 0x6c0, 0x6c6, 0x6cc, 0x6d1, 0x6d4, 0x6e2, 0x6e9, 0x6ec, 0x6ef, 0x6f3, 0x6f9, 0x6fe, 0x708, 0x70d, 0x710, 0x713, 0x716, 0x719, 0x71d, 0x720, 0x730, 0x741, 0x746, 0x748, 0x74a} - -// idnaSparseValues: 1869 entries, 7476 bytes -var idnaSparseValues = [1869]valueRange{ - // Block 0x0, offset 0x0 - {value: 0x0000, lo: 0x07}, - {value: 0xe105, lo: 0x80, hi: 0x96}, - {value: 0x0018, lo: 0x97, hi: 0x97}, - {value: 0xe105, lo: 0x98, hi: 0x9e}, - {value: 0x001f, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xb7}, - {value: 0x0008, lo: 0xb8, hi: 0xbf}, - // Block 0x1, offset 0x8 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0xe01d, lo: 0x81, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0x82}, - {value: 0x0335, lo: 0x83, hi: 0x83}, - {value: 0x034d, lo: 0x84, hi: 0x84}, - {value: 0x0365, lo: 0x85, hi: 0x85}, - {value: 0xe00d, lo: 0x86, hi: 0x86}, - {value: 0x0008, lo: 0x87, hi: 0x87}, - {value: 0xe00d, lo: 0x88, hi: 0x88}, - {value: 0x0008, lo: 0x89, hi: 0x89}, - {value: 0xe00d, lo: 0x8a, hi: 0x8a}, - {value: 0x0008, lo: 0x8b, hi: 0x8b}, - {value: 0xe00d, lo: 0x8c, hi: 0x8c}, - {value: 0x0008, lo: 0x8d, hi: 0x8d}, - {value: 0xe00d, lo: 0x8e, hi: 0x8e}, - {value: 0x0008, lo: 0x8f, hi: 0xbf}, - // Block 0x2, offset 0x19 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x0249, lo: 0xb0, hi: 0xb0}, - {value: 0x037d, lo: 0xb1, hi: 0xb1}, - {value: 0x0259, lo: 0xb2, hi: 0xb2}, - {value: 0x0269, lo: 0xb3, hi: 0xb3}, - {value: 0x034d, lo: 0xb4, hi: 0xb4}, - {value: 0x0395, lo: 0xb5, hi: 0xb5}, - {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, - {value: 0x0279, lo: 0xb7, hi: 0xb7}, - {value: 0x0289, lo: 0xb8, hi: 0xb8}, - {value: 0x0008, lo: 0xb9, hi: 0xbf}, - // Block 0x3, offset 0x25 - {value: 0x0000, lo: 0x01}, - {value: 0x3308, lo: 0x80, hi: 0xbf}, - // Block 0x4, offset 0x27 - {value: 0x0000, lo: 0x04}, - {value: 0x03f5, lo: 0x80, hi: 0x8f}, - {value: 0xe105, lo: 0x90, hi: 0x9f}, - {value: 0x049d, lo: 0xa0, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x5, offset 0x2c - {value: 0x0000, lo: 0x07}, - {value: 0xe185, lo: 0x80, hi: 0x8f}, - {value: 0x0545, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x98}, - {value: 0x0008, lo: 0x99, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x0008, lo: 0xa1, hi: 0xbf}, - // Block 0x6, offset 0x34 - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0401, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x88}, - {value: 0x0018, lo: 0x89, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x3308, lo: 0x91, hi: 0xbd}, - {value: 0x0818, lo: 0xbe, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, - // Block 0x7, offset 0x3f - {value: 0x0000, lo: 0x0b}, - {value: 0x0818, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x82}, - {value: 0x0818, lo: 0x83, hi: 0x83}, - {value: 0x3308, lo: 0x84, hi: 0x85}, - {value: 0x0818, lo: 0x86, hi: 0x86}, - {value: 0x3308, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0808, lo: 0x90, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0808, lo: 0xb0, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x8, offset 0x4b - {value: 0x0000, lo: 0x03}, - {value: 0x0a08, lo: 0x80, hi: 0x87}, - {value: 0x0c08, lo: 0x88, hi: 0x99}, - {value: 0x0a08, lo: 0x9a, hi: 0xbf}, - // Block 0x9, offset 0x4f - {value: 0x0000, lo: 0x0e}, - {value: 0x3308, lo: 0x80, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8c}, - {value: 0x0c08, lo: 0x8d, hi: 0x8d}, - {value: 0x0a08, lo: 0x8e, hi: 0x98}, - {value: 0x0c08, lo: 0x99, hi: 0x9b}, - {value: 0x0a08, lo: 0x9c, hi: 0xaa}, - {value: 0x0c08, lo: 0xab, hi: 0xac}, - {value: 0x0a08, lo: 0xad, hi: 0xb0}, - {value: 0x0c08, lo: 0xb1, hi: 0xb1}, - {value: 0x0a08, lo: 0xb2, hi: 0xb2}, - {value: 0x0c08, lo: 0xb3, hi: 0xb4}, - {value: 0x0a08, lo: 0xb5, hi: 0xb7}, - {value: 0x0c08, lo: 0xb8, hi: 0xb9}, - {value: 0x0a08, lo: 0xba, hi: 0xbf}, - // Block 0xa, offset 0x5e - {value: 0x0000, lo: 0x04}, - {value: 0x0808, lo: 0x80, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xb0}, - {value: 0x0808, lo: 0xb1, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xb, offset 0x63 - {value: 0x0000, lo: 0x07}, - {value: 0x0808, lo: 0x80, hi: 0x89}, - {value: 0x0a08, lo: 0x8a, hi: 0xaa}, - {value: 0x3308, lo: 0xab, hi: 0xb3}, - {value: 0x0808, lo: 0xb4, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xb9}, - {value: 0x0818, lo: 0xba, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0xc, offset 0x6b - {value: 0x0000, lo: 0x0b}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x3308, lo: 0x96, hi: 0x99}, - {value: 0x0808, lo: 0x9a, hi: 0x9a}, - {value: 0x3308, lo: 0x9b, hi: 0xa3}, - {value: 0x0808, lo: 0xa4, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xa7}, - {value: 0x0808, lo: 0xa8, hi: 0xa8}, - {value: 0x3308, lo: 0xa9, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0818, lo: 0xb0, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xd, offset 0x77 - {value: 0x0000, lo: 0x0d}, - {value: 0x0c08, lo: 0x80, hi: 0x80}, - {value: 0x0a08, lo: 0x81, hi: 0x85}, - {value: 0x0c08, lo: 0x86, hi: 0x87}, - {value: 0x0a08, lo: 0x88, hi: 0x88}, - {value: 0x0c08, lo: 0x89, hi: 0x89}, - {value: 0x0a08, lo: 0x8a, hi: 0x93}, - {value: 0x0c08, lo: 0x94, hi: 0x94}, - {value: 0x0a08, lo: 0x95, hi: 0x95}, - {value: 0x0808, lo: 0x96, hi: 0x98}, - {value: 0x3308, lo: 0x99, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9d}, - {value: 0x0818, lo: 0x9e, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xbf}, - // Block 0xe, offset 0x85 - {value: 0x0000, lo: 0x0d}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0a08, lo: 0xa0, hi: 0xa9}, - {value: 0x0c08, lo: 0xaa, hi: 0xac}, - {value: 0x0808, lo: 0xad, hi: 0xad}, - {value: 0x0c08, lo: 0xae, hi: 0xae}, - {value: 0x0a08, lo: 0xaf, hi: 0xb0}, - {value: 0x0c08, lo: 0xb1, hi: 0xb2}, - {value: 0x0a08, lo: 0xb3, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xb5}, - {value: 0x0a08, lo: 0xb6, hi: 0xb8}, - {value: 0x0c08, lo: 0xb9, hi: 0xb9}, - {value: 0x0a08, lo: 0xba, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0xf, offset 0x93 - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x93}, - {value: 0x3308, lo: 0x94, hi: 0xa1}, - {value: 0x0840, lo: 0xa2, hi: 0xa2}, - {value: 0x3308, lo: 0xa3, hi: 0xbf}, - // Block 0x10, offset 0x98 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0xb9}, - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, - // Block 0x11, offset 0xa1 - {value: 0x0000, lo: 0x0f}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x3008, lo: 0x81, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x85}, - {value: 0x3008, lo: 0x86, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x3008, lo: 0x8a, hi: 0x8c}, - {value: 0x3b08, lo: 0x8d, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x96}, - {value: 0x3008, lo: 0x97, hi: 0x97}, - {value: 0x0040, lo: 0x98, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x12, offset 0xb1 - {value: 0x0000, lo: 0x0d}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x3008, lo: 0x81, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, - {value: 0x0008, lo: 0x92, hi: 0xa8}, - {value: 0x0040, lo: 0xa9, hi: 0xa9}, - {value: 0x0008, lo: 0xaa, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x3308, lo: 0xbe, hi: 0xbf}, - // Block 0x13, offset 0xbf - {value: 0x0000, lo: 0x0c}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, - {value: 0x0008, lo: 0x92, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, - // Block 0x14, offset 0xcc - {value: 0x0000, lo: 0x0b}, - {value: 0x0040, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x99}, - {value: 0x0008, lo: 0x9a, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xb2}, - {value: 0x0008, lo: 0xb3, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x15, offset 0xd8 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x89}, - {value: 0x3b08, lo: 0x8a, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8e}, - {value: 0x3008, lo: 0x8f, hi: 0x91}, - {value: 0x3308, lo: 0x92, hi: 0x94}, - {value: 0x0040, lo: 0x95, hi: 0x95}, - {value: 0x3308, lo: 0x96, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x3008, lo: 0x98, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xb1}, - {value: 0x3008, lo: 0xb2, hi: 0xb3}, - {value: 0x0018, lo: 0xb4, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x16, offset 0xe9 - {value: 0x0000, lo: 0x09}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0xb0}, - {value: 0x3308, lo: 0xb1, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xb2}, - {value: 0x08f1, lo: 0xb3, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb9}, - {value: 0x3b08, lo: 0xba, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbe}, - {value: 0x0018, lo: 0xbf, hi: 0xbf}, - // Block 0x17, offset 0xf3 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x3308, lo: 0x87, hi: 0x8e}, - {value: 0x0018, lo: 0x8f, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0xbf}, - // Block 0x18, offset 0xfa - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0x85}, - {value: 0x0008, lo: 0x86, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x3308, lo: 0x88, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9b}, - {value: 0x0961, lo: 0x9c, hi: 0x9c}, - {value: 0x0999, lo: 0x9d, hi: 0x9d}, - {value: 0x0008, lo: 0x9e, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x19, offset 0x107 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x8a}, - {value: 0x0008, lo: 0x8b, hi: 0x8b}, - {value: 0xe03d, lo: 0x8c, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0x97}, - {value: 0x3308, lo: 0x98, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xb6}, - {value: 0x3308, lo: 0xb7, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xb8}, - {value: 0x3308, lo: 0xb9, hi: 0xb9}, - {value: 0x0018, lo: 0xba, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, - // Block 0x1a, offset 0x118 - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x85}, - {value: 0x3308, lo: 0x86, hi: 0x86}, - {value: 0x0018, lo: 0x87, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8d}, - {value: 0x0018, lo: 0x8e, hi: 0x9a}, - {value: 0x0040, lo: 0x9b, hi: 0xbf}, - // Block 0x1b, offset 0x11f - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x3008, lo: 0xab, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xb0}, - {value: 0x3008, lo: 0xb1, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb7}, - {value: 0x3008, lo: 0xb8, hi: 0xb8}, - {value: 0x3b08, lo: 0xb9, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbc}, - {value: 0x3308, lo: 0xbd, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x1c, offset 0x12a - {value: 0x0000, lo: 0x0e}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x95}, - {value: 0x3008, lo: 0x96, hi: 0x97}, - {value: 0x3308, lo: 0x98, hi: 0x99}, - {value: 0x0008, lo: 0x9a, hi: 0x9d}, - {value: 0x3308, lo: 0x9e, hi: 0xa0}, - {value: 0x0008, lo: 0xa1, hi: 0xa1}, - {value: 0x3008, lo: 0xa2, hi: 0xa4}, - {value: 0x0008, lo: 0xa5, hi: 0xa6}, - {value: 0x3008, lo: 0xa7, hi: 0xad}, - {value: 0x0008, lo: 0xae, hi: 0xb0}, - {value: 0x3308, lo: 0xb1, hi: 0xb4}, - {value: 0x0008, lo: 0xb5, hi: 0xbf}, - // Block 0x1d, offset 0x139 - {value: 0x0000, lo: 0x0d}, - {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x3308, lo: 0x82, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x84}, - {value: 0x3308, lo: 0x85, hi: 0x86}, - {value: 0x3008, lo: 0x87, hi: 0x8c}, - {value: 0x3308, lo: 0x8d, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x8e}, - {value: 0x3008, lo: 0x8f, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x3008, lo: 0x9a, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0x1e, offset 0x147 - {value: 0x0000, lo: 0x09}, - {value: 0x0040, lo: 0x80, hi: 0x86}, - {value: 0x055d, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8c}, - {value: 0x055d, lo: 0x8d, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbb}, - {value: 0xe105, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbf}, - // Block 0x1f, offset 0x151 - {value: 0x0000, lo: 0x01}, - {value: 0x0018, lo: 0x80, hi: 0xbf}, - // Block 0x20, offset 0x153 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xa0}, - {value: 0x2018, lo: 0xa1, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0x21, offset 0x158 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xa7}, - {value: 0x2018, lo: 0xa8, hi: 0xbf}, - // Block 0x22, offset 0x15b - {value: 0x0000, lo: 0x02}, - {value: 0x2018, lo: 0x80, hi: 0x82}, - {value: 0x0018, lo: 0x83, hi: 0xbf}, - // Block 0x23, offset 0x15e - {value: 0x0000, lo: 0x01}, - {value: 0x0008, lo: 0x80, hi: 0xbf}, - // Block 0x24, offset 0x160 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0x98}, - {value: 0x0040, lo: 0x99, hi: 0x99}, - {value: 0x0008, lo: 0x9a, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x25, offset 0x16c - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb7}, - {value: 0x0008, lo: 0xb8, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x26, offset 0x177 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0040, lo: 0x81, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0xbf}, - // Block 0x27, offset 0x17f - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, - {value: 0x0008, lo: 0x92, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0xbf}, - // Block 0x28, offset 0x185 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x9a}, - {value: 0x0040, lo: 0x9b, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x29, offset 0x18b - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x2a, offset 0x190 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb7}, - {value: 0xe045, lo: 0xb8, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x2b, offset 0x195 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0xbf}, - // Block 0x2c, offset 0x198 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xac}, - {value: 0x0018, lo: 0xad, hi: 0xae}, - {value: 0x0008, lo: 0xaf, hi: 0xbf}, - // Block 0x2d, offset 0x19c - {value: 0x0000, lo: 0x05}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9c}, - {value: 0x0040, lo: 0x9d, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x2e, offset 0x1a2 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x0018, lo: 0xab, hi: 0xb0}, - {value: 0x0008, lo: 0xb1, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0x2f, offset 0x1a7 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8d}, - {value: 0x0008, lo: 0x8e, hi: 0x91}, - {value: 0x3308, lo: 0x92, hi: 0x93}, - {value: 0x3b08, lo: 0x94, hi: 0x94}, - {value: 0x0040, lo: 0x95, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb3}, - {value: 0x3b08, lo: 0xb4, hi: 0xb4}, - {value: 0x0018, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x30, offset 0x1b3 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x91}, - {value: 0x3308, lo: 0x92, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xad}, - {value: 0x0008, lo: 0xae, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0x31, offset 0x1bd - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0xb3}, - {value: 0x3340, lo: 0xb4, hi: 0xb5}, - {value: 0x3008, lo: 0xb6, hi: 0xb6}, - {value: 0x3308, lo: 0xb7, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbf}, - // Block 0x32, offset 0x1c3 - {value: 0x0000, lo: 0x10}, - {value: 0x3008, lo: 0x80, hi: 0x85}, - {value: 0x3308, lo: 0x86, hi: 0x86}, - {value: 0x3008, lo: 0x87, hi: 0x88}, - {value: 0x3308, lo: 0x89, hi: 0x91}, - {value: 0x3b08, lo: 0x92, hi: 0x92}, - {value: 0x3308, lo: 0x93, hi: 0x93}, - {value: 0x0018, lo: 0x94, hi: 0x96}, - {value: 0x0008, lo: 0x97, hi: 0x97}, - {value: 0x0018, lo: 0x98, hi: 0x9b}, - {value: 0x0008, lo: 0x9c, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x33, offset 0x1d4 - {value: 0x0000, lo: 0x09}, - {value: 0x0018, lo: 0x80, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x86}, - {value: 0x0218, lo: 0x87, hi: 0x87}, - {value: 0x0018, lo: 0x88, hi: 0x8a}, - {value: 0x33c0, lo: 0x8b, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0208, lo: 0xa0, hi: 0xbf}, - // Block 0x34, offset 0x1de - {value: 0x0000, lo: 0x02}, - {value: 0x0208, lo: 0x80, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x35, offset 0x1e1 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x84}, - {value: 0x3308, lo: 0x85, hi: 0x86}, - {value: 0x0208, lo: 0x87, hi: 0xa8}, - {value: 0x3308, lo: 0xa9, hi: 0xa9}, - {value: 0x0208, lo: 0xaa, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x36, offset 0x1e9 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0x37, offset 0x1ec - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x3308, lo: 0xa0, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa6}, - {value: 0x3308, lo: 0xa7, hi: 0xa8}, - {value: 0x3008, lo: 0xa9, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb2}, - {value: 0x3008, lo: 0xb3, hi: 0xb8}, - {value: 0x3308, lo: 0xb9, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x38, offset 0x1f9 - {value: 0x0000, lo: 0x07}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0040, lo: 0x81, hi: 0x83}, - {value: 0x0018, lo: 0x84, hi: 0x85}, - {value: 0x0008, lo: 0x86, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0x39, offset 0x201 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x3a, offset 0x205 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0028, lo: 0x9a, hi: 0x9a}, - {value: 0x0040, lo: 0x9b, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0xbf}, - // Block 0x3b, offset 0x20c - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x3308, lo: 0x97, hi: 0x98}, - {value: 0x3008, lo: 0x99, hi: 0x9a}, - {value: 0x3308, lo: 0x9b, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x3c, offset 0x214 - {value: 0x0000, lo: 0x0f}, - {value: 0x0008, lo: 0x80, hi: 0x94}, - {value: 0x3008, lo: 0x95, hi: 0x95}, - {value: 0x3308, lo: 0x96, hi: 0x96}, - {value: 0x3008, lo: 0x97, hi: 0x97}, - {value: 0x3308, lo: 0x98, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x3b08, lo: 0xa0, hi: 0xa0}, - {value: 0x3008, lo: 0xa1, hi: 0xa1}, - {value: 0x3308, lo: 0xa2, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xac}, - {value: 0x3008, lo: 0xad, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, - // Block 0x3d, offset 0x224 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa6}, - {value: 0x0008, lo: 0xa7, hi: 0xa7}, - {value: 0x0018, lo: 0xa8, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xbd}, - {value: 0x3318, lo: 0xbe, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x3e, offset 0x230 - {value: 0x0000, lo: 0x01}, - {value: 0x0040, lo: 0x80, hi: 0xbf}, - // Block 0x3f, offset 0x232 - {value: 0x0000, lo: 0x09}, - {value: 0x3308, lo: 0x80, hi: 0x83}, - {value: 0x3008, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb4}, - {value: 0x3008, lo: 0xb5, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x3008, lo: 0xbd, hi: 0xbf}, - // Block 0x40, offset 0x23c - {value: 0x0000, lo: 0x0b}, - {value: 0x3008, lo: 0x80, hi: 0x81}, - {value: 0x3308, lo: 0x82, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x83}, - {value: 0x3808, lo: 0x84, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0xaa}, - {value: 0x3308, lo: 0xab, hi: 0xb3}, - {value: 0x0018, lo: 0xb4, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x41, offset 0x248 - {value: 0x0000, lo: 0x0b}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xa0}, - {value: 0x3008, lo: 0xa1, hi: 0xa1}, - {value: 0x3308, lo: 0xa2, hi: 0xa5}, - {value: 0x3008, lo: 0xa6, hi: 0xa7}, - {value: 0x3308, lo: 0xa8, hi: 0xa9}, - {value: 0x3808, lo: 0xaa, hi: 0xaa}, - {value: 0x3b08, lo: 0xab, hi: 0xab}, - {value: 0x3308, lo: 0xac, hi: 0xad}, - {value: 0x0008, lo: 0xae, hi: 0xbf}, - // Block 0x42, offset 0x254 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xa6}, - {value: 0x3008, lo: 0xa7, hi: 0xa7}, - {value: 0x3308, lo: 0xa8, hi: 0xa9}, - {value: 0x3008, lo: 0xaa, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xad}, - {value: 0x3008, lo: 0xae, hi: 0xae}, - {value: 0x3308, lo: 0xaf, hi: 0xb1}, - {value: 0x3808, lo: 0xb2, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbb}, - {value: 0x0018, lo: 0xbc, hi: 0xbf}, - // Block 0x43, offset 0x260 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x3008, lo: 0xa4, hi: 0xab}, - {value: 0x3308, lo: 0xac, hi: 0xb3}, - {value: 0x3008, lo: 0xb4, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbf}, - // Block 0x44, offset 0x268 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0x8c}, - {value: 0x0008, lo: 0x8d, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x45, offset 0x26d - {value: 0x0000, lo: 0x09}, - {value: 0x0e29, lo: 0x80, hi: 0x80}, - {value: 0x0e41, lo: 0x81, hi: 0x81}, - {value: 0x0e59, lo: 0x82, hi: 0x82}, - {value: 0x0e71, lo: 0x83, hi: 0x83}, - {value: 0x0e89, lo: 0x84, hi: 0x85}, - {value: 0x0ea1, lo: 0x86, hi: 0x86}, - {value: 0x0eb9, lo: 0x87, hi: 0x87}, - {value: 0x057d, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0xbf}, - // Block 0x46, offset 0x277 - {value: 0x0000, lo: 0x10}, - {value: 0x0018, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x3308, lo: 0x90, hi: 0x92}, - {value: 0x0018, lo: 0x93, hi: 0x93}, - {value: 0x3308, lo: 0x94, hi: 0xa0}, - {value: 0x3008, lo: 0xa1, hi: 0xa1}, - {value: 0x3308, lo: 0xa2, hi: 0xa8}, - {value: 0x0008, lo: 0xa9, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xad}, - {value: 0x0008, lo: 0xae, hi: 0xb1}, - {value: 0x3008, lo: 0xb2, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb4}, - {value: 0x0008, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x47, offset 0x288 - {value: 0x0000, lo: 0x03}, - {value: 0x3308, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xba}, - {value: 0x3308, lo: 0xbb, hi: 0xbf}, - // Block 0x48, offset 0x28c - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x87}, - {value: 0xe045, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0xe045, lo: 0x98, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa7}, - {value: 0xe045, lo: 0xa8, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb7}, - {value: 0xe045, lo: 0xb8, hi: 0xbf}, - // Block 0x49, offset 0x297 - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x3318, lo: 0x90, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xbf}, - // Block 0x4a, offset 0x29b - {value: 0x0000, lo: 0x08}, - {value: 0x0018, lo: 0x80, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x84}, - {value: 0x0018, lo: 0x85, hi: 0x88}, - {value: 0x24c1, lo: 0x89, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0x4b, offset 0x2a4 - {value: 0x0000, lo: 0x07}, - {value: 0x0018, lo: 0x80, hi: 0xab}, - {value: 0x24f1, lo: 0xac, hi: 0xac}, - {value: 0x2529, lo: 0xad, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xae}, - {value: 0x2579, lo: 0xaf, hi: 0xaf}, - {value: 0x25b1, lo: 0xb0, hi: 0xb0}, - {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0x4c, offset 0x2ac - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x9f}, - {value: 0x0080, lo: 0xa0, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xad}, - {value: 0x0080, lo: 0xae, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x4d, offset 0x2b2 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0xa8}, - {value: 0x09c5, lo: 0xa9, hi: 0xa9}, - {value: 0x09e5, lo: 0xaa, hi: 0xaa}, - {value: 0x0018, lo: 0xab, hi: 0xbf}, - // Block 0x4e, offset 0x2b7 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x4f, offset 0x2ba - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xbf}, - // Block 0x50, offset 0x2bd - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, - {value: 0x28c1, lo: 0x8c, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0xbf}, - // Block 0x51, offset 0x2c1 - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0xb3}, - {value: 0x0e66, lo: 0xb4, hi: 0xb4}, - {value: 0x292a, lo: 0xb5, hi: 0xb5}, - {value: 0x0e86, lo: 0xb6, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x52, offset 0x2c7 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x9b}, - {value: 0x2941, lo: 0x9c, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0xbf}, - // Block 0x53, offset 0x2cb - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0x54, offset 0x2cf - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0x0018, lo: 0x98, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbc}, - {value: 0x0018, lo: 0xbd, hi: 0xbf}, - // Block 0x55, offset 0x2d5 - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xab}, - {value: 0x0018, lo: 0xac, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x56, offset 0x2dc - {value: 0x0000, lo: 0x05}, - {value: 0xe185, lo: 0x80, hi: 0x8f}, - {value: 0x03f5, lo: 0x90, hi: 0x9f}, - {value: 0x0ea5, lo: 0xa0, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x57, offset 0x2e2 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x0040, lo: 0xa6, hi: 0xa6}, - {value: 0x0008, lo: 0xa7, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xac}, - {value: 0x0008, lo: 0xad, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x58, offset 0x2ea - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xae}, - {value: 0xe075, lo: 0xaf, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0x59, offset 0x2f1 - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x0008, lo: 0xb8, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x5a, offset 0x2fc - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x8e}, - {value: 0x0040, lo: 0x8f, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x3308, lo: 0xa0, hi: 0xbf}, - // Block 0x5b, offset 0x306 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xae}, - {value: 0x0008, lo: 0xaf, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x5c, offset 0x30a - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0xbf}, - // Block 0x5d, offset 0x30d - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9e}, - {value: 0x0edd, lo: 0x9f, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xbf}, - // Block 0x5e, offset 0x313 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xb2}, - {value: 0x0efd, lo: 0xb3, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0x5f, offset 0x317 - {value: 0x0020, lo: 0x01}, - {value: 0x0f1d, lo: 0x80, hi: 0xbf}, - // Block 0x60, offset 0x319 - {value: 0x0020, lo: 0x02}, - {value: 0x171d, lo: 0x80, hi: 0x8f}, - {value: 0x18fd, lo: 0x90, hi: 0xbf}, - // Block 0x61, offset 0x31c - {value: 0x0020, lo: 0x01}, - {value: 0x1efd, lo: 0x80, hi: 0xbf}, - // Block 0x62, offset 0x31e - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0xbf}, - // Block 0x63, offset 0x321 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x98}, - {value: 0x3308, lo: 0x99, hi: 0x9a}, - {value: 0x29e2, lo: 0x9b, hi: 0x9b}, - {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, - {value: 0x0008, lo: 0x9d, hi: 0x9e}, - {value: 0x2a31, lo: 0x9f, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa0}, - {value: 0x0008, lo: 0xa1, hi: 0xbf}, - // Block 0x64, offset 0x32b - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xbe}, - {value: 0x2a69, lo: 0xbf, hi: 0xbf}, - // Block 0x65, offset 0x32e - {value: 0x0000, lo: 0x0e}, - {value: 0x0040, lo: 0x80, hi: 0x84}, - {value: 0x0008, lo: 0x85, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xb0}, - {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, - {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, - {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, - {value: 0x2a7d, lo: 0xb4, hi: 0xb4}, - {value: 0x2a5d, lo: 0xb5, hi: 0xb5}, - {value: 0x2a9d, lo: 0xb6, hi: 0xb6}, - {value: 0x2abd, lo: 0xb7, hi: 0xb7}, - {value: 0x2add, lo: 0xb8, hi: 0xb9}, - {value: 0x2afd, lo: 0xba, hi: 0xbb}, - {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, - {value: 0x2afd, lo: 0xbe, hi: 0xbf}, - // Block 0x66, offset 0x33d - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x67, offset 0x341 - {value: 0x0030, lo: 0x04}, - {value: 0x2aa2, lo: 0x80, hi: 0x9d}, - {value: 0x305a, lo: 0x9e, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x30a2, lo: 0xa0, hi: 0xbf}, - // Block 0x68, offset 0x346 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0xbf}, - // Block 0x69, offset 0x349 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x8c}, - {value: 0x0040, lo: 0x8d, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0x6a, offset 0x34d - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0x6b, offset 0x352 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xbf}, - // Block 0x6c, offset 0x357 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x0018, lo: 0xa6, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb1}, - {value: 0x0018, lo: 0xb2, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x6d, offset 0x35d - {value: 0x0000, lo: 0x05}, - {value: 0x0040, lo: 0x80, hi: 0xb6}, - {value: 0x0008, lo: 0xb7, hi: 0xb7}, - {value: 0x2009, lo: 0xb8, hi: 0xb8}, - {value: 0x6e89, lo: 0xb9, hi: 0xb9}, - {value: 0x0008, lo: 0xba, hi: 0xbf}, - // Block 0x6e, offset 0x363 - {value: 0x0000, lo: 0x0e}, - {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x3308, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0x85}, - {value: 0x3b08, lo: 0x86, hi: 0x86}, - {value: 0x0008, lo: 0x87, hi: 0x8a}, - {value: 0x3308, lo: 0x8b, hi: 0x8b}, - {value: 0x0008, lo: 0x8c, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xa6}, - {value: 0x3008, lo: 0xa7, hi: 0xa7}, - {value: 0x0018, lo: 0xa8, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x6f, offset 0x372 - {value: 0x0000, lo: 0x05}, - {value: 0x0208, lo: 0x80, hi: 0xb1}, - {value: 0x0108, lo: 0xb2, hi: 0xb2}, - {value: 0x0008, lo: 0xb3, hi: 0xb3}, - {value: 0x0018, lo: 0xb4, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0x70, offset 0x378 - {value: 0x0000, lo: 0x03}, - {value: 0x3008, lo: 0x80, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0xb3}, - {value: 0x3008, lo: 0xb4, hi: 0xbf}, - // Block 0x71, offset 0x37c - {value: 0x0000, lo: 0x0e}, - {value: 0x3008, lo: 0x80, hi: 0x83}, - {value: 0x3b08, lo: 0x84, hi: 0x84}, - {value: 0x3308, lo: 0x85, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x8d}, - {value: 0x0018, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x3308, lo: 0xa0, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xba}, - {value: 0x0008, lo: 0xbb, hi: 0xbb}, - {value: 0x0018, lo: 0xbc, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x72, offset 0x38b - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x73, offset 0x390 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x3308, lo: 0x87, hi: 0x91}, - {value: 0x3008, lo: 0x92, hi: 0x92}, - {value: 0x3808, lo: 0x93, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0x74, offset 0x398 - {value: 0x0000, lo: 0x09}, - {value: 0x3308, lo: 0x80, hi: 0x82}, - {value: 0x3008, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb3}, - {value: 0x3008, lo: 0xb4, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xb9}, - {value: 0x3008, lo: 0xba, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x3008, lo: 0xbd, hi: 0xbf}, - // Block 0x75, offset 0x3a2 - {value: 0x0000, lo: 0x0a}, - {value: 0x3808, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8e}, - {value: 0x0008, lo: 0x8f, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0x76, offset 0x3ad - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xa8}, - {value: 0x3308, lo: 0xa9, hi: 0xae}, - {value: 0x3008, lo: 0xaf, hi: 0xb0}, - {value: 0x3308, lo: 0xb1, hi: 0xb2}, - {value: 0x3008, lo: 0xb3, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x77, offset 0x3b5 - {value: 0x0000, lo: 0x10}, - {value: 0x0008, lo: 0x80, hi: 0x82}, - {value: 0x3308, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x8b}, - {value: 0x3308, lo: 0x8c, hi: 0x8c}, - {value: 0x3008, lo: 0x8d, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9b}, - {value: 0x0018, lo: 0x9c, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xb9}, - {value: 0x0008, lo: 0xba, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbc}, - {value: 0x3008, lo: 0xbd, hi: 0xbd}, - {value: 0x0008, lo: 0xbe, hi: 0xbf}, - // Block 0x78, offset 0x3c6 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb0}, - {value: 0x0008, lo: 0xb1, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb4}, - {value: 0x0008, lo: 0xb5, hi: 0xb6}, - {value: 0x3308, lo: 0xb7, hi: 0xb8}, - {value: 0x0008, lo: 0xb9, hi: 0xbd}, - {value: 0x3308, lo: 0xbe, hi: 0xbf}, - // Block 0x79, offset 0x3cf - {value: 0x0000, lo: 0x0f}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x9a}, - {value: 0x0008, lo: 0x9b, hi: 0x9d}, - {value: 0x0018, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xaa}, - {value: 0x3008, lo: 0xab, hi: 0xab}, - {value: 0x3308, lo: 0xac, hi: 0xad}, - {value: 0x3008, lo: 0xae, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xb4}, - {value: 0x3008, lo: 0xb5, hi: 0xb5}, - {value: 0x3b08, lo: 0xb6, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x7a, offset 0x3df - {value: 0x0000, lo: 0x0c}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x88}, - {value: 0x0008, lo: 0x89, hi: 0x8e}, - {value: 0x0040, lo: 0x8f, hi: 0x90}, - {value: 0x0008, lo: 0x91, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x7b, offset 0x3ec - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9b}, - {value: 0x4465, lo: 0x9c, hi: 0x9c}, - {value: 0x447d, lo: 0x9d, hi: 0x9d}, - {value: 0x2971, lo: 0x9e, hi: 0x9e}, - {value: 0xe06d, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa5}, - {value: 0x0040, lo: 0xa6, hi: 0xaf}, - {value: 0x4495, lo: 0xb0, hi: 0xbf}, - // Block 0x7c, offset 0x3f6 - {value: 0x0000, lo: 0x04}, - {value: 0x44b5, lo: 0x80, hi: 0x8f}, - {value: 0x44d5, lo: 0x90, hi: 0x9f}, - {value: 0x44f5, lo: 0xa0, hi: 0xaf}, - {value: 0x44d5, lo: 0xb0, hi: 0xbf}, - // Block 0x7d, offset 0x3fb - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0xa2}, - {value: 0x3008, lo: 0xa3, hi: 0xa4}, - {value: 0x3308, lo: 0xa5, hi: 0xa5}, - {value: 0x3008, lo: 0xa6, hi: 0xa7}, - {value: 0x3308, lo: 0xa8, hi: 0xa8}, - {value: 0x3008, lo: 0xa9, hi: 0xaa}, - {value: 0x0018, lo: 0xab, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xac}, - {value: 0x3b08, lo: 0xad, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0x7e, offset 0x408 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0x7f, offset 0x40c - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x8a}, - {value: 0x0018, lo: 0x8b, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x80, offset 0x411 - {value: 0x0020, lo: 0x01}, - {value: 0x4515, lo: 0x80, hi: 0xbf}, - // Block 0x81, offset 0x413 - {value: 0x0020, lo: 0x03}, - {value: 0x4d15, lo: 0x80, hi: 0x94}, - {value: 0x4ad5, lo: 0x95, hi: 0x95}, - {value: 0x4fb5, lo: 0x96, hi: 0xbf}, - // Block 0x82, offset 0x417 - {value: 0x0020, lo: 0x01}, - {value: 0x54f5, lo: 0x80, hi: 0xbf}, - // Block 0x83, offset 0x419 - {value: 0x0020, lo: 0x03}, - {value: 0x5cf5, lo: 0x80, hi: 0x84}, - {value: 0x5655, lo: 0x85, hi: 0x85}, - {value: 0x5d95, lo: 0x86, hi: 0xbf}, - // Block 0x84, offset 0x41d - {value: 0x0020, lo: 0x08}, - {value: 0x6b55, lo: 0x80, hi: 0x8f}, - {value: 0x6d15, lo: 0x90, hi: 0x90}, - {value: 0x6d55, lo: 0x91, hi: 0xab}, - {value: 0x6ea1, lo: 0xac, hi: 0xac}, - {value: 0x70b5, lo: 0xad, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x70d5, lo: 0xb0, hi: 0xbf}, - // Block 0x85, offset 0x426 - {value: 0x0020, lo: 0x05}, - {value: 0x72d5, lo: 0x80, hi: 0xad}, - {value: 0x6535, lo: 0xae, hi: 0xae}, - {value: 0x7895, lo: 0xaf, hi: 0xb5}, - {value: 0x6f55, lo: 0xb6, hi: 0xb6}, - {value: 0x7975, lo: 0xb7, hi: 0xbf}, - // Block 0x86, offset 0x42c - {value: 0x0028, lo: 0x03}, - {value: 0x7c21, lo: 0x80, hi: 0x82}, - {value: 0x7be1, lo: 0x83, hi: 0x83}, - {value: 0x7c99, lo: 0x84, hi: 0xbf}, - // Block 0x87, offset 0x430 - {value: 0x0038, lo: 0x0f}, - {value: 0x9db1, lo: 0x80, hi: 0x83}, - {value: 0x9e59, lo: 0x84, hi: 0x85}, - {value: 0x9e91, lo: 0x86, hi: 0x87}, - {value: 0x9ec9, lo: 0x88, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x91}, - {value: 0xa089, lo: 0x92, hi: 0x97}, - {value: 0xa1a1, lo: 0x98, hi: 0x9c}, - {value: 0xa281, lo: 0x9d, hi: 0xb3}, - {value: 0x9d41, lo: 0xb4, hi: 0xb4}, - {value: 0x9db1, lo: 0xb5, hi: 0xb5}, - {value: 0xa789, lo: 0xb6, hi: 0xbb}, - {value: 0xa869, lo: 0xbc, hi: 0xbc}, - {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, - {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, - // Block 0x88, offset 0x440 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8c}, - {value: 0x0008, lo: 0x8d, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbb}, - {value: 0x0008, lo: 0xbc, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0x89, offset 0x44a - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0x8a, offset 0x44f - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x8b, offset 0x452 - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x82}, - {value: 0x0040, lo: 0x83, hi: 0x86}, - {value: 0x0018, lo: 0x87, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0x8c, offset 0x458 - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x8e}, - {value: 0x0040, lo: 0x8f, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa0}, - {value: 0x0040, lo: 0xa1, hi: 0xbf}, - // Block 0x8d, offset 0x45f - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbc}, - {value: 0x3308, lo: 0xbd, hi: 0xbd}, - {value: 0x0040, lo: 0xbe, hi: 0xbf}, - // Block 0x8e, offset 0x464 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x9c}, - {value: 0x0040, lo: 0x9d, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x8f, offset 0x468 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x90}, - {value: 0x0040, lo: 0x91, hi: 0x9f}, - {value: 0x3308, lo: 0xa0, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x90, offset 0x46e - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x91, offset 0x473 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x81}, - {value: 0x0008, lo: 0x82, hi: 0x89}, - {value: 0x0018, lo: 0x8a, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbf}, - // Block 0x92, offset 0x47c - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0x93, offset 0x481 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0xbf}, - // Block 0x94, offset 0x487 - {value: 0x0000, lo: 0x06}, - {value: 0xe145, lo: 0x80, hi: 0x87}, - {value: 0xe1c5, lo: 0x88, hi: 0x8f}, - {value: 0xe145, lo: 0x90, hi: 0x97}, - {value: 0x8ad5, lo: 0x98, hi: 0x9f}, - {value: 0x8aed, lo: 0xa0, hi: 0xa7}, - {value: 0x0008, lo: 0xa8, hi: 0xbf}, - // Block 0x95, offset 0x48e - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xaf}, - {value: 0x8aed, lo: 0xb0, hi: 0xb7}, - {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, - // Block 0x96, offset 0x495 - {value: 0x0000, lo: 0x06}, - {value: 0xe145, lo: 0x80, hi: 0x87}, - {value: 0xe1c5, lo: 0x88, hi: 0x8f}, - {value: 0xe145, lo: 0x90, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0xbb}, - {value: 0x0040, lo: 0xbc, hi: 0xbf}, - // Block 0x97, offset 0x49c - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0x98, offset 0x4a0 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xae}, - {value: 0x0018, lo: 0xaf, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x99, offset 0x4a5 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0x9a, offset 0x4a8 - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xbf}, - // Block 0x9b, offset 0x4ad - {value: 0x0000, lo: 0x0b}, - {value: 0x0808, lo: 0x80, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x87}, - {value: 0x0808, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0808, lo: 0x8a, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb6}, - {value: 0x0808, lo: 0xb7, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbb}, - {value: 0x0808, lo: 0xbc, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbe}, - {value: 0x0808, lo: 0xbf, hi: 0xbf}, - // Block 0x9c, offset 0x4b9 - {value: 0x0000, lo: 0x05}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x96}, - {value: 0x0818, lo: 0x97, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb6}, - {value: 0x0818, lo: 0xb7, hi: 0xbf}, - // Block 0x9d, offset 0x4bf - {value: 0x0000, lo: 0x04}, - {value: 0x0808, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xa6}, - {value: 0x0818, lo: 0xa7, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0x9e, offset 0x4c4 - {value: 0x0000, lo: 0x06}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xb3}, - {value: 0x0808, lo: 0xb4, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xba}, - {value: 0x0818, lo: 0xbb, hi: 0xbf}, - // Block 0x9f, offset 0x4cb - {value: 0x0000, lo: 0x07}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x0818, lo: 0x96, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbe}, - {value: 0x0818, lo: 0xbf, hi: 0xbf}, - // Block 0xa0, offset 0x4d3 - {value: 0x0000, lo: 0x04}, - {value: 0x0808, lo: 0x80, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbb}, - {value: 0x0818, lo: 0xbc, hi: 0xbd}, - {value: 0x0808, lo: 0xbe, hi: 0xbf}, - // Block 0xa1, offset 0x4d8 - {value: 0x0000, lo: 0x03}, - {value: 0x0818, lo: 0x80, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x91}, - {value: 0x0818, lo: 0x92, hi: 0xbf}, - // Block 0xa2, offset 0x4dc - {value: 0x0000, lo: 0x0f}, - {value: 0x0808, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x84}, - {value: 0x3308, lo: 0x85, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x8b}, - {value: 0x3308, lo: 0x8c, hi: 0x8f}, - {value: 0x0808, lo: 0x90, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x94}, - {value: 0x0808, lo: 0x95, hi: 0x97}, - {value: 0x0040, lo: 0x98, hi: 0x98}, - {value: 0x0808, lo: 0x99, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xba}, - {value: 0x0040, lo: 0xbb, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xa3, offset 0x4ec - {value: 0x0000, lo: 0x06}, - {value: 0x0818, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0818, lo: 0x90, hi: 0x98}, - {value: 0x0040, lo: 0x99, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xbc}, - {value: 0x0818, lo: 0xbd, hi: 0xbf}, - // Block 0xa4, offset 0x4f3 - {value: 0x0000, lo: 0x03}, - {value: 0x0808, lo: 0x80, hi: 0x9c}, - {value: 0x0818, lo: 0x9d, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xa5, offset 0x4f7 - {value: 0x0000, lo: 0x03}, - {value: 0x0808, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb8}, - {value: 0x0018, lo: 0xb9, hi: 0xbf}, - // Block 0xa6, offset 0x4fb - {value: 0x0000, lo: 0x06}, - {value: 0x0808, lo: 0x80, hi: 0x95}, - {value: 0x0040, lo: 0x96, hi: 0x97}, - {value: 0x0818, lo: 0x98, hi: 0x9f}, - {value: 0x0808, lo: 0xa0, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xb7}, - {value: 0x0818, lo: 0xb8, hi: 0xbf}, - // Block 0xa7, offset 0x502 - {value: 0x0000, lo: 0x01}, - {value: 0x0808, lo: 0x80, hi: 0xbf}, - // Block 0xa8, offset 0x504 - {value: 0x0000, lo: 0x02}, - {value: 0x0808, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0xbf}, - // Block 0xa9, offset 0x507 - {value: 0x0000, lo: 0x02}, - {value: 0x03dd, lo: 0x80, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xbf}, - // Block 0xaa, offset 0x50a - {value: 0x0000, lo: 0x03}, - {value: 0x0808, lo: 0x80, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xb9}, - {value: 0x0818, lo: 0xba, hi: 0xbf}, - // Block 0xab, offset 0x50e - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0818, lo: 0xa0, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xac, offset 0x512 - {value: 0x0000, lo: 0x05}, - {value: 0x3008, lo: 0x80, hi: 0x80}, - {value: 0x3308, lo: 0x81, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xbf}, - // Block 0xad, offset 0x518 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x85}, - {value: 0x3b08, lo: 0x86, hi: 0x86}, - {value: 0x0018, lo: 0x87, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x91}, - {value: 0x0018, lo: 0x92, hi: 0xa5}, - {value: 0x0008, lo: 0xa6, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xae, offset 0x521 - {value: 0x0000, lo: 0x0b}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb6}, - {value: 0x3008, lo: 0xb7, hi: 0xb8}, - {value: 0x3b08, lo: 0xb9, hi: 0xb9}, - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x0018, lo: 0xbb, hi: 0xbc}, - {value: 0x0340, lo: 0xbd, hi: 0xbd}, - {value: 0x0018, lo: 0xbe, hi: 0xbf}, - // Block 0xaf, offset 0x52d - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x81}, - {value: 0x0040, lo: 0x82, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xa8}, - {value: 0x0040, lo: 0xa9, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0xb0, offset 0x534 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xa6}, - {value: 0x3308, lo: 0xa7, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xb2}, - {value: 0x3b08, lo: 0xb3, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xb5}, - {value: 0x0008, lo: 0xb6, hi: 0xbf}, - // Block 0xb1, offset 0x53d - {value: 0x0000, lo: 0x07}, - {value: 0x0018, lo: 0x80, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb3}, - {value: 0x0018, lo: 0xb4, hi: 0xb5}, - {value: 0x0008, lo: 0xb6, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xb2, offset 0x545 - {value: 0x0000, lo: 0x06}, - {value: 0x3308, lo: 0x80, hi: 0x81}, - {value: 0x3008, lo: 0x82, hi: 0x82}, - {value: 0x0008, lo: 0x83, hi: 0xb2}, - {value: 0x3008, lo: 0xb3, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xbe}, - {value: 0x3008, lo: 0xbf, hi: 0xbf}, - // Block 0xb3, offset 0x54c - {value: 0x0000, lo: 0x0d}, - {value: 0x3808, lo: 0x80, hi: 0x80}, - {value: 0x0008, lo: 0x81, hi: 0x84}, - {value: 0x0018, lo: 0x85, hi: 0x89}, - {value: 0x3308, lo: 0x8a, hi: 0x8c}, - {value: 0x0018, lo: 0x8d, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9b}, - {value: 0x0008, lo: 0x9c, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x0018, lo: 0xa1, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xb4, offset 0x55a - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0x92}, - {value: 0x0008, lo: 0x93, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xae}, - {value: 0x3308, lo: 0xaf, hi: 0xb1}, - {value: 0x3008, lo: 0xb2, hi: 0xb3}, - {value: 0x3308, lo: 0xb4, hi: 0xb4}, - {value: 0x3808, lo: 0xb5, hi: 0xb5}, - {value: 0x3308, lo: 0xb6, hi: 0xb7}, - {value: 0x0018, lo: 0xb8, hi: 0xbd}, - {value: 0x3308, lo: 0xbe, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xb5, offset 0x567 - {value: 0x0000, lo: 0x0c}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x0008, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0x8d}, - {value: 0x0040, lo: 0x8e, hi: 0x8e}, - {value: 0x0008, lo: 0x8f, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9e}, - {value: 0x0008, lo: 0x9f, hi: 0xa8}, - {value: 0x0018, lo: 0xa9, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbf}, - // Block 0xb6, offset 0x574 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x3308, lo: 0x9f, hi: 0x9f}, - {value: 0x3008, lo: 0xa0, hi: 0xa2}, - {value: 0x3308, lo: 0xa3, hi: 0xa9}, - {value: 0x3b08, lo: 0xaa, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0040, lo: 0xba, hi: 0xbf}, - // Block 0xb7, offset 0x57d - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xb4}, - {value: 0x3008, lo: 0xb5, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xbf}, - // Block 0xb8, offset 0x581 - {value: 0x0000, lo: 0x0d}, - {value: 0x3008, lo: 0x80, hi: 0x81}, - {value: 0x3b08, lo: 0x82, hi: 0x82}, - {value: 0x3308, lo: 0x83, hi: 0x84}, - {value: 0x3008, lo: 0x85, hi: 0x85}, - {value: 0x3308, lo: 0x86, hi: 0x86}, - {value: 0x0008, lo: 0x87, hi: 0x8a}, - {value: 0x0018, lo: 0x8b, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0x9b}, - {value: 0x0040, lo: 0x9c, hi: 0x9c}, - {value: 0x0018, lo: 0x9d, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0xb9, offset 0x58f - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xb8}, - {value: 0x3008, lo: 0xb9, hi: 0xb9}, - {value: 0x3308, lo: 0xba, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbe}, - {value: 0x3308, lo: 0xbf, hi: 0xbf}, - // Block 0xba, offset 0x597 - {value: 0x0000, lo: 0x0a}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x3008, lo: 0x81, hi: 0x81}, - {value: 0x3b08, lo: 0x82, hi: 0x82}, - {value: 0x3308, lo: 0x83, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x85}, - {value: 0x0018, lo: 0x86, hi: 0x86}, - {value: 0x0008, lo: 0x87, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xbb, offset 0x5a2 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0xae}, - {value: 0x3008, lo: 0xaf, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xb7}, - {value: 0x3008, lo: 0xb8, hi: 0xbb}, - {value: 0x3308, lo: 0xbc, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xbc, offset 0x5ab - {value: 0x0000, lo: 0x05}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x97}, - {value: 0x0008, lo: 0x98, hi: 0x9b}, - {value: 0x3308, lo: 0x9c, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0xbf}, - // Block 0xbd, offset 0x5b1 - {value: 0x0000, lo: 0x07}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3008, lo: 0xb0, hi: 0xb2}, - {value: 0x3308, lo: 0xb3, hi: 0xba}, - {value: 0x3008, lo: 0xbb, hi: 0xbc}, - {value: 0x3308, lo: 0xbd, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xbe, offset 0x5b9 - {value: 0x0000, lo: 0x08}, - {value: 0x3308, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x83}, - {value: 0x0008, lo: 0x84, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xbf, offset 0x5c2 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x3308, lo: 0xab, hi: 0xab}, - {value: 0x3008, lo: 0xac, hi: 0xac}, - {value: 0x3308, lo: 0xad, hi: 0xad}, - {value: 0x3008, lo: 0xae, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb5}, - {value: 0x3808, lo: 0xb6, hi: 0xb6}, - {value: 0x3308, lo: 0xb7, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbf}, - // Block 0xc0, offset 0x5cc - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x89}, - {value: 0x0040, lo: 0x8a, hi: 0xbf}, - // Block 0xc1, offset 0x5cf - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9f}, - {value: 0x3008, lo: 0xa0, hi: 0xa1}, - {value: 0x3308, lo: 0xa2, hi: 0xa5}, - {value: 0x3008, lo: 0xa6, hi: 0xa6}, - {value: 0x3308, lo: 0xa7, hi: 0xaa}, - {value: 0x3b08, lo: 0xab, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xb9}, - {value: 0x0018, lo: 0xba, hi: 0xbf}, - // Block 0xc2, offset 0x5db - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x049d, lo: 0xa0, hi: 0xbf}, - // Block 0xc3, offset 0x5de - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xbe}, - {value: 0x0008, lo: 0xbf, hi: 0xbf}, - // Block 0xc4, offset 0x5e3 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb8}, - {value: 0x0040, lo: 0xb9, hi: 0xbf}, - // Block 0xc5, offset 0x5e6 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x89}, - {value: 0x0008, lo: 0x8a, hi: 0xae}, - {value: 0x3008, lo: 0xaf, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xb7}, - {value: 0x3308, lo: 0xb8, hi: 0xbd}, - {value: 0x3008, lo: 0xbe, hi: 0xbe}, - {value: 0x3b08, lo: 0xbf, hi: 0xbf}, - // Block 0xc6, offset 0x5f0 - {value: 0x0000, lo: 0x08}, - {value: 0x0008, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0018, lo: 0x9a, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0008, lo: 0xb2, hi: 0xbf}, - // Block 0xc7, offset 0x5f9 - {value: 0x0000, lo: 0x0b}, - {value: 0x0008, lo: 0x80, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x91}, - {value: 0x3308, lo: 0x92, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xa8}, - {value: 0x3008, lo: 0xa9, hi: 0xa9}, - {value: 0x3308, lo: 0xaa, hi: 0xb0}, - {value: 0x3008, lo: 0xb1, hi: 0xb1}, - {value: 0x3308, lo: 0xb2, hi: 0xb3}, - {value: 0x3008, lo: 0xb4, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xc8, offset 0x605 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0xbf}, - // Block 0xc9, offset 0x608 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xca, offset 0x60d - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0040, lo: 0x84, hi: 0xbf}, - // Block 0xcb, offset 0x610 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xbf}, - // Block 0xcc, offset 0x613 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0xbf}, - // Block 0xcd, offset 0x616 - {value: 0x0000, lo: 0x06}, - {value: 0x0008, lo: 0x80, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa9}, - {value: 0x0040, lo: 0xaa, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0xce, offset 0x61d - {value: 0x0000, lo: 0x06}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb4}, - {value: 0x0018, lo: 0xb5, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xcf, offset 0x624 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0xaf}, - {value: 0x3308, lo: 0xb0, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xbf}, - // Block 0xd0, offset 0x628 - {value: 0x0000, lo: 0x0a}, - {value: 0x0008, lo: 0x80, hi: 0x83}, - {value: 0x0018, lo: 0x84, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9a}, - {value: 0x0018, lo: 0x9b, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xa2}, - {value: 0x0008, lo: 0xa3, hi: 0xb7}, - {value: 0x0040, lo: 0xb8, hi: 0xbc}, - {value: 0x0008, lo: 0xbd, hi: 0xbf}, - // Block 0xd1, offset 0x633 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0xbf}, - // Block 0xd2, offset 0x636 - {value: 0x0000, lo: 0x05}, - {value: 0x0008, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x90}, - {value: 0x3008, lo: 0x91, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xd3, offset 0x63c - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x8e}, - {value: 0x3308, lo: 0x8f, hi: 0x92}, - {value: 0x0008, lo: 0x93, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xd4, offset 0x641 - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xa0}, - {value: 0x0040, lo: 0xa1, hi: 0xbf}, - // Block 0xd5, offset 0x645 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xd6, offset 0x648 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb2}, - {value: 0x0040, lo: 0xb3, hi: 0xbf}, - // Block 0xd7, offset 0x64b - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x81}, - {value: 0x0040, lo: 0x82, hi: 0xbf}, - // Block 0xd8, offset 0x64e - {value: 0x0000, lo: 0x04}, - {value: 0x0008, lo: 0x80, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xaf}, - {value: 0x0008, lo: 0xb0, hi: 0xbc}, - {value: 0x0040, lo: 0xbd, hi: 0xbf}, - // Block 0xd9, offset 0x653 - {value: 0x0000, lo: 0x09}, - {value: 0x0008, lo: 0x80, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x8f}, - {value: 0x0008, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9b}, - {value: 0x0018, lo: 0x9c, hi: 0x9c}, - {value: 0x3308, lo: 0x9d, hi: 0x9e}, - {value: 0x0018, lo: 0x9f, hi: 0x9f}, - {value: 0x03c0, lo: 0xa0, hi: 0xa3}, - {value: 0x0040, lo: 0xa4, hi: 0xbf}, - // Block 0xda, offset 0x65d - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xdb, offset 0x660 - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xa6}, - {value: 0x0040, lo: 0xa7, hi: 0xa8}, - {value: 0x0018, lo: 0xa9, hi: 0xbf}, - // Block 0xdc, offset 0x664 - {value: 0x0000, lo: 0x0e}, - {value: 0x0018, lo: 0x80, hi: 0x9d}, - {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, - {value: 0xb601, lo: 0x9f, hi: 0x9f}, - {value: 0xb649, lo: 0xa0, hi: 0xa0}, - {value: 0xb6b1, lo: 0xa1, hi: 0xa1}, - {value: 0xb719, lo: 0xa2, hi: 0xa2}, - {value: 0xb781, lo: 0xa3, hi: 0xa3}, - {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, - {value: 0x3018, lo: 0xa5, hi: 0xa6}, - {value: 0x3318, lo: 0xa7, hi: 0xa9}, - {value: 0x0018, lo: 0xaa, hi: 0xac}, - {value: 0x3018, lo: 0xad, hi: 0xb2}, - {value: 0x0340, lo: 0xb3, hi: 0xba}, - {value: 0x3318, lo: 0xbb, hi: 0xbf}, - // Block 0xdd, offset 0x673 - {value: 0x0000, lo: 0x0b}, - {value: 0x3318, lo: 0x80, hi: 0x82}, - {value: 0x0018, lo: 0x83, hi: 0x84}, - {value: 0x3318, lo: 0x85, hi: 0x8b}, - {value: 0x0018, lo: 0x8c, hi: 0xa9}, - {value: 0x3318, lo: 0xaa, hi: 0xad}, - {value: 0x0018, lo: 0xae, hi: 0xba}, - {value: 0xb851, lo: 0xbb, hi: 0xbb}, - {value: 0xb899, lo: 0xbc, hi: 0xbc}, - {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, - {value: 0xb949, lo: 0xbe, hi: 0xbe}, - {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, - // Block 0xde, offset 0x67f - {value: 0x0000, lo: 0x03}, - {value: 0xba19, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0xa8}, - {value: 0x0040, lo: 0xa9, hi: 0xbf}, - // Block 0xdf, offset 0x683 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x81}, - {value: 0x3318, lo: 0x82, hi: 0x84}, - {value: 0x0018, lo: 0x85, hi: 0x85}, - {value: 0x0040, lo: 0x86, hi: 0xbf}, - // Block 0xe0, offset 0x688 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xe1, offset 0x68d - {value: 0x0000, lo: 0x03}, - {value: 0x3308, lo: 0x80, hi: 0xb6}, - {value: 0x0018, lo: 0xb7, hi: 0xba}, - {value: 0x3308, lo: 0xbb, hi: 0xbf}, - // Block 0xe2, offset 0x691 - {value: 0x0000, lo: 0x04}, - {value: 0x3308, lo: 0x80, hi: 0xac}, - {value: 0x0018, lo: 0xad, hi: 0xb4}, - {value: 0x3308, lo: 0xb5, hi: 0xb5}, - {value: 0x0018, lo: 0xb6, hi: 0xbf}, - // Block 0xe3, offset 0x696 - {value: 0x0000, lo: 0x08}, - {value: 0x0018, lo: 0x80, hi: 0x83}, - {value: 0x3308, lo: 0x84, hi: 0x84}, - {value: 0x0018, lo: 0x85, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x9a}, - {value: 0x3308, lo: 0x9b, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xa0}, - {value: 0x3308, lo: 0xa1, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, - // Block 0xe4, offset 0x69f - {value: 0x0000, lo: 0x0a}, - {value: 0x3308, lo: 0x80, hi: 0x86}, - {value: 0x0040, lo: 0x87, hi: 0x87}, - {value: 0x3308, lo: 0x88, hi: 0x98}, - {value: 0x0040, lo: 0x99, hi: 0x9a}, - {value: 0x3308, lo: 0x9b, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xa2}, - {value: 0x3308, lo: 0xa3, hi: 0xa4}, - {value: 0x0040, lo: 0xa5, hi: 0xa5}, - {value: 0x3308, lo: 0xa6, hi: 0xaa}, - {value: 0x0040, lo: 0xab, hi: 0xbf}, - // Block 0xe5, offset 0x6aa - {value: 0x0000, lo: 0x05}, - {value: 0x0808, lo: 0x80, hi: 0x84}, - {value: 0x0040, lo: 0x85, hi: 0x86}, - {value: 0x0818, lo: 0x87, hi: 0x8f}, - {value: 0x3308, lo: 0x90, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0xbf}, - // Block 0xe6, offset 0x6b0 - {value: 0x0000, lo: 0x07}, - {value: 0x0a08, lo: 0x80, hi: 0x83}, - {value: 0x3308, lo: 0x84, hi: 0x8a}, - {value: 0x0040, lo: 0x8b, hi: 0x8f}, - {value: 0x0808, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9d}, - {value: 0x0818, lo: 0x9e, hi: 0x9f}, - {value: 0x0040, lo: 0xa0, hi: 0xbf}, - // Block 0xe7, offset 0x6b8 - {value: 0x0000, lo: 0x03}, - {value: 0x0040, lo: 0x80, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb1}, - {value: 0x0040, lo: 0xb2, hi: 0xbf}, - // Block 0xe8, offset 0x6bc - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0xab}, - {value: 0x0040, lo: 0xac, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xbf}, - // Block 0xe9, offset 0x6c0 - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x93}, - {value: 0x0040, lo: 0x94, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xae}, - {value: 0x0040, lo: 0xaf, hi: 0xb0}, - {value: 0x0018, lo: 0xb1, hi: 0xbf}, - // Block 0xea, offset 0x6c6 - {value: 0x0000, lo: 0x05}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0018, lo: 0x81, hi: 0x8f}, - {value: 0x0040, lo: 0x90, hi: 0x90}, - {value: 0x0018, lo: 0x91, hi: 0xb5}, - {value: 0x0040, lo: 0xb6, hi: 0xbf}, - // Block 0xeb, offset 0x6cc - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x8f}, - {value: 0xc1c1, lo: 0x90, hi: 0x90}, - {value: 0x0018, lo: 0x91, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xbf}, - // Block 0xec, offset 0x6d1 - {value: 0x0000, lo: 0x02}, - {value: 0x0040, lo: 0x80, hi: 0xa5}, - {value: 0x0018, lo: 0xa6, hi: 0xbf}, - // Block 0xed, offset 0x6d4 - {value: 0x0000, lo: 0x0d}, - {value: 0xc7e9, lo: 0x80, hi: 0x80}, - {value: 0xc839, lo: 0x81, hi: 0x81}, - {value: 0xc889, lo: 0x82, hi: 0x82}, - {value: 0xc8d9, lo: 0x83, hi: 0x83}, - {value: 0xc929, lo: 0x84, hi: 0x84}, - {value: 0xc979, lo: 0x85, hi: 0x85}, - {value: 0xc9c9, lo: 0x86, hi: 0x86}, - {value: 0xca19, lo: 0x87, hi: 0x87}, - {value: 0xca69, lo: 0x88, hi: 0x88}, - {value: 0x0040, lo: 0x89, hi: 0x8f}, - {value: 0xcab9, lo: 0x90, hi: 0x90}, - {value: 0xcad9, lo: 0x91, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xbf}, - // Block 0xee, offset 0x6e2 - {value: 0x0000, lo: 0x06}, - {value: 0x0018, lo: 0x80, hi: 0x92}, - {value: 0x0040, lo: 0x93, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xac}, - {value: 0x0040, lo: 0xad, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb6}, - {value: 0x0040, lo: 0xb7, hi: 0xbf}, - // Block 0xef, offset 0x6e9 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0xb3}, - {value: 0x0040, lo: 0xb4, hi: 0xbf}, - // Block 0xf0, offset 0x6ec - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x94}, - {value: 0x0040, lo: 0x95, hi: 0xbf}, - // Block 0xf1, offset 0x6ef - {value: 0x0000, lo: 0x03}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xbf}, - // Block 0xf2, offset 0x6f3 - {value: 0x0000, lo: 0x05}, - {value: 0x0018, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x99}, - {value: 0x0040, lo: 0x9a, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xbf}, - // Block 0xf3, offset 0x6f9 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x87}, - {value: 0x0040, lo: 0x88, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0xad}, - {value: 0x0040, lo: 0xae, hi: 0xbf}, - // Block 0xf4, offset 0x6fe - {value: 0x0000, lo: 0x09}, - {value: 0x0040, lo: 0x80, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0x9f}, - {value: 0x0018, lo: 0xa0, hi: 0xa7}, - {value: 0x0040, lo: 0xa8, hi: 0xaf}, - {value: 0x0018, lo: 0xb0, hi: 0xb0}, - {value: 0x0040, lo: 0xb1, hi: 0xb2}, - {value: 0x0018, lo: 0xb3, hi: 0xbe}, - {value: 0x0040, lo: 0xbf, hi: 0xbf}, - // Block 0xf5, offset 0x708 - {value: 0x0000, lo: 0x04}, - {value: 0x0018, lo: 0x80, hi: 0x8b}, - {value: 0x0040, lo: 0x8c, hi: 0x8f}, - {value: 0x0018, lo: 0x90, hi: 0x9e}, - {value: 0x0040, lo: 0x9f, hi: 0xbf}, - // Block 0xf6, offset 0x70d - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x91}, - {value: 0x0040, lo: 0x92, hi: 0xbf}, - // Block 0xf7, offset 0x710 - {value: 0x0000, lo: 0x02}, - {value: 0x0018, lo: 0x80, hi: 0x80}, - {value: 0x0040, lo: 0x81, hi: 0xbf}, - // Block 0xf8, offset 0x713 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0x96}, - {value: 0x0040, lo: 0x97, hi: 0xbf}, - // Block 0xf9, offset 0x716 - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xb4}, - {value: 0x0040, lo: 0xb5, hi: 0xbf}, - // Block 0xfa, offset 0x719 - {value: 0x0000, lo: 0x03}, - {value: 0x0008, lo: 0x80, hi: 0x9d}, - {value: 0x0040, lo: 0x9e, hi: 0x9f}, - {value: 0x0008, lo: 0xa0, hi: 0xbf}, - // Block 0xfb, offset 0x71d - {value: 0x0000, lo: 0x02}, - {value: 0x0008, lo: 0x80, hi: 0xa1}, - {value: 0x0040, lo: 0xa2, hi: 0xbf}, - // Block 0xfc, offset 0x720 - {value: 0x0020, lo: 0x0f}, - {value: 0xdeb9, lo: 0x80, hi: 0x89}, - {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, - {value: 0xdff9, lo: 0x8b, hi: 0x9c}, - {value: 0x8e1d, lo: 0x9d, hi: 0x9d}, - {value: 0xe239, lo: 0x9e, hi: 0xa2}, - {value: 0x8e3d, lo: 0xa3, hi: 0xa3}, - {value: 0xe2d9, lo: 0xa4, hi: 0xab}, - {value: 0x7ed5, lo: 0xac, hi: 0xac}, - {value: 0xe3d9, lo: 0xad, hi: 0xaf}, - {value: 0x8e5d, lo: 0xb0, hi: 0xb0}, - {value: 0xe439, lo: 0xb1, hi: 0xb6}, - {value: 0x8e7d, lo: 0xb7, hi: 0xb9}, - {value: 0xe4f9, lo: 0xba, hi: 0xba}, - {value: 0x8edd, lo: 0xbb, hi: 0xbb}, - {value: 0xe519, lo: 0xbc, hi: 0xbf}, - // Block 0xfd, offset 0x730 - {value: 0x0020, lo: 0x10}, - {value: 0x937d, lo: 0x80, hi: 0x80}, - {value: 0xf099, lo: 0x81, hi: 0x86}, - {value: 0x939d, lo: 0x87, hi: 0x8a}, - {value: 0xd9f9, lo: 0x8b, hi: 0x8b}, - {value: 0xf159, lo: 0x8c, hi: 0x96}, - {value: 0x941d, lo: 0x97, hi: 0x97}, - {value: 0xf2b9, lo: 0x98, hi: 0xa3}, - {value: 0x943d, lo: 0xa4, hi: 0xa6}, - {value: 0xf439, lo: 0xa7, hi: 0xaa}, - {value: 0x949d, lo: 0xab, hi: 0xab}, - {value: 0xf4b9, lo: 0xac, hi: 0xac}, - {value: 0x94bd, lo: 0xad, hi: 0xad}, - {value: 0xf4d9, lo: 0xae, hi: 0xaf}, - {value: 0x94dd, lo: 0xb0, hi: 0xb1}, - {value: 0xf519, lo: 0xb2, hi: 0xbe}, - {value: 0x2040, lo: 0xbf, hi: 0xbf}, - // Block 0xfe, offset 0x741 - {value: 0x0000, lo: 0x04}, - {value: 0x0040, lo: 0x80, hi: 0x80}, - {value: 0x0340, lo: 0x81, hi: 0x81}, - {value: 0x0040, lo: 0x82, hi: 0x9f}, - {value: 0x0340, lo: 0xa0, hi: 0xbf}, - // Block 0xff, offset 0x746 - {value: 0x0000, lo: 0x01}, - {value: 0x0340, lo: 0x80, hi: 0xbf}, - // Block 0x100, offset 0x748 - {value: 0x0000, lo: 0x01}, - {value: 0x33c0, lo: 0x80, hi: 0xbf}, - // Block 0x101, offset 0x74a - {value: 0x0000, lo: 0x02}, - {value: 0x33c0, lo: 0x80, hi: 0xaf}, - {value: 0x0040, lo: 0xb0, hi: 0xbf}, -} - -// Total table size 41663 bytes (40KiB); checksum: F4A1FA4E diff --git a/vendor/golang.org/x/text/internal/export/idna/trie.go b/vendor/golang.org/x/text/internal/export/idna/trie.go deleted file mode 100644 index d9099688..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/trie.go +++ /dev/null @@ -1,70 +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 idna - -// appendMapping appends the mapping for the respective rune. isMapped must be -// true. A mapping is a categorization of a rune as defined in UTS #46. -func (c info) appendMapping(b []byte, s string) []byte { - index := int(c >> indexShift) - if c&xorBit == 0 { - s := mappings[index:] - return append(b, s[1:s[0]+1]...) - } - b = append(b, s...) - if c&inlineXOR == inlineXOR { - // TODO: support and handle two-byte inline masks - b[len(b)-1] ^= byte(index) - } else { - for p := len(b) - int(xorData[index]); p < len(b); p++ { - index++ - b[p] ^= xorData[index] - } - } - return b -} - -// Sparse block handling code. - -type valueRange struct { - value uint16 // header: value:stride - lo, hi byte // header: lo:n -} - -type sparseBlocks struct { - values []valueRange - offset []uint16 -} - -var idnaSparse = sparseBlocks{ - values: idnaSparseValues[:], - offset: idnaSparseOffset[:], -} - -// Don't use newIdnaTrie to avoid unconditional linking in of the table. -var trie = &idnaTrie{} - -// lookup determines the type of block n and looks up the value for b. -// For n < t.cutoff, the block is a simple lookup table. Otherwise, the block -// is a list of ranges with an accompanying value. Given a matching range r, -// the value for b is by r.value + (b - r.lo) * stride. -func (t *sparseBlocks) lookup(n uint32, b byte) uint16 { - offset := t.offset[n] - header := t.values[offset] - lo := offset + 1 - hi := lo + uint16(header.lo) - for lo < hi { - m := lo + (hi-lo)/2 - r := t.values[m] - if r.lo <= b && b <= r.hi { - return r.value + uint16(b-r.lo)*header.value - } - if b < r.lo { - hi = m - } else { - lo = m + 1 - } - } - return 0 -} diff --git a/vendor/golang.org/x/text/internal/export/idna/trieval.go b/vendor/golang.org/x/text/internal/export/idna/trieval.go deleted file mode 100644 index 7a8cf889..00000000 --- a/vendor/golang.org/x/text/internal/export/idna/trieval.go +++ /dev/null @@ -1,119 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package idna - -// This file contains definitions for interpreting the trie value of the idna -// trie generated by "go run gen*.go". It is shared by both the generator -// program and the resultant package. Sharing is achieved by the generator -// copying gen_trieval.go to trieval.go and changing what's above this comment. - -// info holds information from the IDNA mapping table for a single rune. It is -// the value returned by a trie lookup. In most cases, all information fits in -// a 16-bit value. For mappings, this value may contain an index into a slice -// with the mapped string. Such mappings can consist of the actual mapped value -// or an XOR pattern to be applied to the bytes of the UTF8 encoding of the -// input rune. This technique is used by the cases packages and reduces the -// table size significantly. -// -// The per-rune values have the following format: -// -// if mapped { -// if inlinedXOR { -// 15..13 inline XOR marker -// 12..11 unused -// 10..3 inline XOR mask -// } else { -// 15..3 index into xor or mapping table -// } -// } else { -// 15..14 unused -// 13 mayNeedNorm -// 12..11 attributes -// 10..8 joining type -// 7..3 category type -// } -// 2 use xor pattern -// 1..0 mapped category -// -// See the definitions below for a more detailed description of the various -// bits. -type info uint16 - -const ( - catSmallMask = 0x3 - catBigMask = 0xF8 - indexShift = 3 - xorBit = 0x4 // interpret the index as an xor pattern - inlineXOR = 0xE000 // These bits are set if the XOR pattern is inlined. - - joinShift = 8 - joinMask = 0x07 - - // Attributes - attributesMask = 0x1800 - viramaModifier = 0x1800 - modifier = 0x1000 - rtl = 0x0800 - - mayNeedNorm = 0x2000 -) - -// A category corresponds to a category defined in the IDNA mapping table. -type category uint16 - -const ( - unknown category = 0 // not currently defined in unicode. - mapped category = 1 - disallowedSTD3Mapped category = 2 - deviation category = 3 -) - -const ( - valid category = 0x08 - validNV8 category = 0x18 - validXV8 category = 0x28 - disallowed category = 0x40 - disallowedSTD3Valid category = 0x80 - ignored category = 0xC0 -) - -// join types and additional rune information -const ( - joiningL = (iota + 1) - joiningD - joiningT - joiningR - - //the following types are derived during processing - joinZWJ - joinZWNJ - joinVirama - numJoinTypes -) - -func (c info) isMapped() bool { - return c&0x3 != 0 -} - -func (c info) category() category { - small := c & catSmallMask - if small != 0 { - return category(small) - } - return category(c & catBigMask) -} - -func (c info) joinType() info { - if c.isMapped() { - return 0 - } - return (c >> joinShift) & joinMask -} - -func (c info) isModifier() bool { - return c&(modifier|catSmallMask) == modifier -} - -func (c info) isViramaModifier() bool { - return c&(attributesMask|catSmallMask) == viramaModifier -} 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 ee1c57a3..00000000 --- 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 f4f37f42..00000000 --- a/vendor/golang.org/x/text/internal/format/parser.go +++ /dev/null @@ -1,357 +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 - 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/format/parser_test.go b/vendor/golang.org/x/text/internal/format/parser_test.go deleted file mode 100644 index 72299082..00000000 --- a/vendor/golang.org/x/text/internal/format/parser_test.go +++ /dev/null @@ -1,32 +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 "testing" - -// TODO: most of Parser is tested in x/message. Move some tests here. - -func TestParsenum(t *testing.T) { - testCases := []struct { - s string - start, end int - num int - isnum bool - newi int - }{ - {"a123", 0, 4, 0, false, 0}, - {"1234", 1, 1, 0, false, 1}, - {"123a", 0, 4, 123, true, 3}, - {"12a3", 0, 4, 12, true, 2}, - {"1234", 0, 4, 1234, true, 4}, - {"1a234", 1, 3, 0, false, 1}, - } - for _, tt := range testCases { - num, isnum, newi := parsenum(tt.s, tt.start, tt.end) - if num != tt.num || isnum != tt.isnum || newi != tt.newi { - t.Errorf("parsenum(%q, %d, %d) = %d, %v, %d, want %d, %v, %d", tt.s, tt.start, tt.end, num, isnum, newi, tt.num, tt.isnum, tt.newi) - } - } -} diff --git a/vendor/golang.org/x/text/internal/gen.go b/vendor/golang.org/x/text/internal/gen.go deleted file mode 100644 index 1d678af5..00000000 --- a/vendor/golang.org/x/text/internal/gen.go +++ /dev/null @@ -1,52 +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. - -// +build ignore - -package main - -import ( - "log" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -func main() { - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - data, err := d.DecodeZip(r) - if err != nil { - log.Fatalf("DecodeZip: %v", err) - } - - w := gen.NewCodeWriter() - defer w.WriteGoFile("tables.go", "internal") - - // Create parents table. - parents := make([]uint16, language.NumCompactTags) - for _, loc := range data.Locales() { - tag := language.MustParse(loc) - index, ok := language.CompactIndex(tag) - if !ok { - continue - } - parentIndex := 0 // und - for p := tag.Parent(); p != language.Und; p = p.Parent() { - if x, ok := language.CompactIndex(p); ok { - parentIndex = x - break - } - } - parents[index] = uint16(parentIndex) - } - - w.WriteComment(` - Parent maps a compact index of a tag to the compact index of the parent of - this tag.`) - w.WriteVar("Parent", parents) -} diff --git a/vendor/golang.org/x/text/internal/gen_test.go b/vendor/golang.org/x/text/internal/gen_test.go deleted file mode 100644 index a2e1981a..00000000 --- a/vendor/golang.org/x/text/internal/gen_test.go +++ /dev/null @@ -1,38 +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 - -import ( - "testing" - - "golang.org/x/text/language" -) - -func TestParents(t *testing.T) { - testCases := []struct { - tag, parent string - }{ - {"af", "und"}, - {"en", "und"}, - {"en-001", "en"}, - {"en-AU", "en-001"}, - {"en-US", "en"}, - {"en-US-u-va-posix", "en-US"}, - {"ca-ES-valencia", "ca-ES"}, - } - for _, tc := range testCases { - tag, ok := language.CompactIndex(language.MustParse(tc.tag)) - if !ok { - t.Fatalf("Could not get index of flag %s", tc.tag) - } - want, ok := language.CompactIndex(language.MustParse(tc.parent)) - if !ok { - t.Fatalf("Could not get index of parent %s of tag %s", tc.parent, tc.tag) - } - if got := int(Parent[tag]); got != want { - t.Errorf("Parent[%s] = %d; want %d (%s)", tc.tag, got, want, tc.parent) - } - } -} 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 eac83285..00000000 --- a/vendor/golang.org/x/text/internal/internal.go +++ /dev/null @@ -1,51 +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. - -//go:generate go run gen.go - -// 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/internal_test.go b/vendor/golang.org/x/text/internal/internal_test.go deleted file mode 100644 index ce1b9a38..00000000 --- a/vendor/golang.org/x/text/internal/internal_test.go +++ /dev/null @@ -1,38 +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 - -import ( - "fmt" - "strings" - "testing" - - "golang.org/x/text/language" -) - -func TestUnique(t *testing.T) { - testCases := []struct { - in, want string - }{ - {"", "[]"}, - {"en", "[en]"}, - {"en en", "[en]"}, - {"en en en", "[en]"}, - {"en-u-cu-eur en", "[en en-u-cu-eur]"}, - {"nl en", "[en nl]"}, - {"pt-Pt pt", "[pt pt-PT]"}, - } - for _, tc := range testCases { - tags := []language.Tag{} - for _, s := range strings.Split(tc.in, " ") { - if s != "" { - tags = append(tags, language.MustParse(s)) - } - } - if got := fmt.Sprint(UniqueTags(tags)); got != tc.want { - t.Errorf("Unique(%s) = %s; want %s", tc.in, got, tc.want) - } - } -} 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 a67fcaca..00000000 --- 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 http://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/match_test.go b/vendor/golang.org/x/text/internal/match_test.go deleted file mode 100644 index 8a3fe657..00000000 --- a/vendor/golang.org/x/text/internal/match_test.go +++ /dev/null @@ -1,56 +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 - -import ( - "strings" - "testing" - - "golang.org/x/text/language" -) - -func TestInheritanceMatcher(t *testing.T) { - for i, tt := range []struct { - haveTags string - wantTags string - match string - conf language.Confidence - }{ - {"und,en,en-US", "en-US", "en-US", language.Exact}, // most specific match - {"zh-Hant,zh", "zh-TW", "zh-Hant", language.High}, // zh-TW implies Hant. - {"und,zh", "zh-TW", "und", language.High}, // zh-TW does not match zh. - {"zh", "zh-TW", "und", language.No}, // zh-TW does not match zh. - {"iw,en,nl", "he", "he", language.Exact}, // matches after canonicalization - {"he,en,nl", "iw", "he", language.Exact}, // matches after canonicalization - // Prefer first match over more specific match for various reasons: - // a) consistency of user interface is more important than an exact match, - // b) _if_ und is specified, it should be considered a correct and useful match, - // Note that a call to this Match will almost always be with a single tag. - {"und,en,en-US", "he,en-US", "und", language.High}, - } { - have := parseTags(tt.haveTags) - m := NewInheritanceMatcher(have) - tag, index, conf := m.Match(parseTags(tt.wantTags)...) - want := language.Raw.Make(tt.match) - if tag != want { - t.Errorf("%d:tag: got %q; want %q", i, tag, want) - } - if conf != language.No { - if got, _ := language.All.Canonicalize(have[index]); got != want { - t.Errorf("%d:index: got %q; want %q ", i, got, want) - } - } - if conf != tt.conf { - t.Errorf("%d:conf: got %v; want %v", i, conf, tt.conf) - } - } -} - -func parseTags(list string) (out []language.Tag) { - for _, s := range strings.Split(list, ",") { - out = append(out, language.Raw.Make(strings.TrimSpace(s))) - } - return out -} 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 052876e5..00000000 --- a/vendor/golang.org/x/text/internal/number/common.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package number - -import "unicode/utf8" - -// 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 uint16 - 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 9b4035ec..00000000 --- a/vendor/golang.org/x/text/internal/number/decimal.go +++ /dev/null @@ -1,498 +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 useable 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/decimal_test.go b/vendor/golang.org/x/text/internal/number/decimal_test.go deleted file mode 100644 index 97c7e25b..00000000 --- a/vendor/golang.org/x/text/internal/number/decimal_test.go +++ /dev/null @@ -1,329 +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 ( - "fmt" - "math" - "strconv" - "strings" - "testing" -) - -func mkfloat(num string) float64 { - u, _ := strconv.ParseUint(num, 10, 32) - return float64(u) -} - -// mkdec creates a decimal from a string. All ASCII digits are converted to -// digits in the decimal. The dot is used to indicate the scale by which the -// digits are shifted. Numbers may have an additional exponent or be the special -// value NaN, Inf, or -Inf. -func mkdec(num string) (d Decimal) { - var r RoundingContext - d.Convert(r, dec(num)) - return -} - -type dec string - -func (s dec) Convert(d *Decimal, _ RoundingContext) { - num := string(s) - if num[0] == '-' { - d.Neg = true - num = num[1:] - } - switch num { - case "NaN": - d.NaN = true - return - case "Inf": - d.Inf = true - return - } - if p := strings.IndexAny(num, "eE"); p != -1 { - i64, err := strconv.ParseInt(num[p+1:], 10, 32) - if err != nil { - panic(err) - } - d.Exp = int32(i64) - num = num[:p] - } - if p := strings.IndexByte(num, '.'); p != -1 { - d.Exp += int32(p) - num = num[:p] + num[p+1:] - } else { - d.Exp += int32(len(num)) - } - d.Digits = []byte(num) - for i := range d.Digits { - d.Digits[i] -= '0' - } - *d = d.normalize() -} - -func byteNum(s string) []byte { - b := make([]byte, len(s)) - for i := 0; i < len(s); i++ { - if c := s[i]; '0' <= c && c <= '9' { - b[i] = s[i] - '0' - } else { - b[i] = s[i] - 'a' + 10 - } - } - return b -} - -func strNum(s string) string { - return string(byteNum(s)) -} - -func TestDecimalString(t *testing.T) { - for _, test := range []struct { - x Decimal - want string - }{ - {want: "0"}, - {Decimal{digits: digits{Digits: nil, Exp: 1000}}, "0"}, // exponent of 1000 is ignored - {Decimal{digits: digits{Digits: byteNum("12345"), Exp: 0}}, "0.12345"}, - {Decimal{digits: digits{Digits: byteNum("12345"), Exp: -3}}, "0.00012345"}, - {Decimal{digits: digits{Digits: byteNum("12345"), Exp: +3}}, "123.45"}, - {Decimal{digits: digits{Digits: byteNum("12345"), Exp: +10}}, "1234500000"}, - } { - if got := test.x.String(); got != test.want { - t.Errorf("%v == %q; want %q", test.x, got, test.want) - } - } -} - -func TestRounding(t *testing.T) { - testCases := []struct { - x string - n int - // modes is the result for modes. Signs are left out of the result. - // The results are stored in the following order: - // zero, negInf - // nearZero, nearEven, nearAway - // away, posInf - modes [numModes]string - }{ - {"0", 1, [numModes]string{ - "0", "0", - "0", "0", "0", - "0", "0"}}, - {"1", 1, [numModes]string{ - "1", "1", - "1", "1", "1", - "1", "1"}}, - {"5", 1, [numModes]string{ - "5", "5", - "5", "5", "5", - "5", "5"}}, - {"15", 1, [numModes]string{ - "10", "10", - "10", "20", "20", - "20", "20"}}, - {"45", 1, [numModes]string{ - "40", "40", - "40", "40", "50", - "50", "50"}}, - {"95", 1, [numModes]string{ - "90", "90", - "90", "100", "100", - "100", "100"}}, - - {"12344999", 4, [numModes]string{ - "12340000", "12340000", - "12340000", "12340000", "12340000", - "12350000", "12350000"}}, - {"12345000", 4, [numModes]string{ - "12340000", "12340000", - "12340000", "12340000", "12350000", - "12350000", "12350000"}}, - {"12345001", 4, [numModes]string{ - "12340000", "12340000", - "12350000", "12350000", "12350000", - "12350000", "12350000"}}, - {"12345100", 4, [numModes]string{ - "12340000", "12340000", - "12350000", "12350000", "12350000", - "12350000", "12350000"}}, - {"23454999", 4, [numModes]string{ - "23450000", "23450000", - "23450000", "23450000", "23450000", - "23460000", "23460000"}}, - {"23455000", 4, [numModes]string{ - "23450000", "23450000", - "23450000", "23460000", "23460000", - "23460000", "23460000"}}, - {"23455001", 4, [numModes]string{ - "23450000", "23450000", - "23460000", "23460000", "23460000", - "23460000", "23460000"}}, - {"23455100", 4, [numModes]string{ - "23450000", "23450000", - "23460000", "23460000", "23460000", - "23460000", "23460000"}}, - - {"99994999", 4, [numModes]string{ - "99990000", "99990000", - "99990000", "99990000", "99990000", - "100000000", "100000000"}}, - {"99995000", 4, [numModes]string{ - "99990000", "99990000", - "99990000", "100000000", "100000000", - "100000000", "100000000"}}, - {"99999999", 4, [numModes]string{ - "99990000", "99990000", - "100000000", "100000000", "100000000", - "100000000", "100000000"}}, - - {"12994999", 4, [numModes]string{ - "12990000", "12990000", - "12990000", "12990000", "12990000", - "13000000", "13000000"}}, - {"12995000", 4, [numModes]string{ - "12990000", "12990000", - "12990000", "13000000", "13000000", - "13000000", "13000000"}}, - {"12999999", 4, [numModes]string{ - "12990000", "12990000", - "13000000", "13000000", "13000000", - "13000000", "13000000"}}, - } - modes := []RoundingMode{ - ToZero, ToNegativeInf, - ToNearestZero, ToNearestEven, ToNearestAway, - AwayFromZero, ToPositiveInf, - } - for _, tc := range testCases { - // Create negative counterpart tests: the sign is reversed and - // ToPositiveInf and ToNegativeInf swapped. - negModes := tc.modes - negModes[1], negModes[6] = negModes[6], negModes[1] - for i, res := range negModes { - negModes[i] = "-" + res - } - for i, m := range modes { - t.Run(fmt.Sprintf("x:%s/n:%d/%s", tc.x, tc.n, m), func(t *testing.T) { - d := mkdec(tc.x) - d.round(m, tc.n) - if got := d.String(); got != tc.modes[i] { - t.Errorf("pos decimal: got %q; want %q", d.String(), tc.modes[i]) - } - - mult := math.Pow(10, float64(len(tc.x)-tc.n)) - f := mkfloat(tc.x) - f = m.roundFloat(f/mult) * mult - if got := fmt.Sprintf("%.0f", f); got != tc.modes[i] { - t.Errorf("pos float: got %q; want %q", got, tc.modes[i]) - } - - // Test the negative case. This is the same as the positive - // case, but with ToPositiveInf and ToNegativeInf swapped. - d = mkdec(tc.x) - d.Neg = true - d.round(m, tc.n) - if got, want := d.String(), negModes[i]; got != want { - t.Errorf("neg decimal: got %q; want %q", d.String(), want) - } - - f = -mkfloat(tc.x) - f = m.roundFloat(f/mult) * mult - if got := fmt.Sprintf("%.0f", f); got != negModes[i] { - t.Errorf("neg float: got %q; want %q", got, negModes[i]) - } - }) - } - } -} - -func TestConvert(t *testing.T) { - scale2 := RoundingContext{} - scale2.SetScale(2) - scale2away := RoundingContext{Mode: AwayFromZero} - scale2away.SetScale(2) - inc0_05 := RoundingContext{Increment: 5, IncrementScale: 2} - inc0_05.SetScale(2) - inc50 := RoundingContext{Increment: 50} - prec3 := RoundingContext{} - prec3.SetPrecision(3) - roundShift := RoundingContext{DigitShift: 2, MaxFractionDigits: 2} - testCases := []struct { - x interface{} - rc RoundingContext - out string - }{ - {-0.001, scale2, "-0.00"}, - {0.1234, prec3, "0.123"}, - {1234.0, prec3, "1230"}, - {1.2345e10, prec3, "12300000000"}, - - {int8(-34), scale2, "-34"}, - {int16(-234), scale2, "-234"}, - {int32(-234), scale2, "-234"}, - {int64(-234), scale2, "-234"}, - {int(-234), scale2, "-234"}, - {uint8(234), scale2, "234"}, - {uint16(234), scale2, "234"}, - {uint32(234), scale2, "234"}, - {uint64(234), scale2, "234"}, - {uint(234), scale2, "234"}, - {-1e9, scale2, "-1000000000.00"}, - // The following two causes this result to have a lot of digits: - // 1) 0.234 cannot be accurately represented as a float64, and - // 2) as strconv does not support the rounding AwayFromZero, Convert - // leaves the rounding to caller. - {0.234, scale2away, - "0.2340000000000000135447209004269097931683063507080078125"}, - - {0.0249, inc0_05, "0.00"}, - {0.025, inc0_05, "0.00"}, - {0.0251, inc0_05, "0.05"}, - {0.03, inc0_05, "0.05"}, - {0.049, inc0_05, "0.05"}, - {0.05, inc0_05, "0.05"}, - {0.051, inc0_05, "0.05"}, - {0.0749, inc0_05, "0.05"}, - {0.075, inc0_05, "0.10"}, - {0.0751, inc0_05, "0.10"}, - {324, inc50, "300"}, - {325, inc50, "300"}, - {326, inc50, "350"}, - {349, inc50, "350"}, - {350, inc50, "350"}, - {351, inc50, "350"}, - {374, inc50, "350"}, - {375, inc50, "400"}, - {376, inc50, "400"}, - - // Here the scale is 2, but the digits get shifted left. As we use - // AppendFloat to do the rounding an exta 0 gets added. - {0.123, roundShift, "0.1230"}, - - {converter(3), scale2, "100"}, - - {math.Inf(1), inc50, "Inf"}, - {math.Inf(-1), inc50, "-Inf"}, - {math.NaN(), inc50, "NaN"}, - {"clearly not a number", scale2, "NaN"}, - } - for _, tc := range testCases { - var d Decimal - t.Run(fmt.Sprintf("%T:%v-%v", tc.x, tc.x, tc.rc), func(t *testing.T) { - d.Convert(tc.rc, tc.x) - if got := d.String(); got != tc.out { - t.Errorf("got %q; want %q", got, tc.out) - } - }) - } -} - -type converter int - -func (c converter) Convert(d *Decimal, r RoundingContext) { - d.Digits = append(d.Digits, 1, 0, 0) - d.Exp = 3 -} 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 910bdeb0..00000000 --- a/vendor/golang.org/x/text/internal/number/format.go +++ /dev/null @@ -1,540 +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) - for ; ; t = t.Parent() { - if ci, ok := language.CompactIndex(t); ok { - f.Pattern = formats[index[ci]] - break - } - } -} - -// 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/format_test.go b/vendor/golang.org/x/text/internal/number/format_test.go deleted file mode 100644 index 01a08943..00000000 --- a/vendor/golang.org/x/text/internal/number/format_test.go +++ /dev/null @@ -1,522 +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 ( - "fmt" - "log" - "testing" - - "golang.org/x/text/language" -) - -func TestAppendDecimal(t *testing.T) { - type pairs map[string]string // alternates with decimal input and result - - testCases := []struct { - pattern string - // We want to be able to test some forms of patterns that cannot be - // represented as a string. - pat *Pattern - - test pairs - }{{ - pattern: "0", - test: pairs{ - "0": "0", - "1": "1", - "-1": "-1", - ".00": "0", - "10.": "10", - "12": "12", - "1.2": "1", - "NaN": "NaN", - "-Inf": "-∞", - }, - }, { - pattern: "+0;+0", - test: pairs{ - "0": "+0", - "1": "+1", - "-1": "-1", - ".00": "+0", - "10.": "+10", - "12": "+12", - "1.2": "+1", - "NaN": "NaN", - "-Inf": "-∞", - "Inf": "+∞", - }, - }, { - pattern: "0 +;0 +", - test: pairs{ - "0": "0 +", - "1": "1 +", - "-1": "1 -", - ".00": "0 +", - }, - }, { - pattern: "0;0-", - test: pairs{ - "-1": "1-", - "NaN": "NaN", - "-Inf": "∞-", - "Inf": "∞", - }, - }, { - pattern: "0000", - test: pairs{ - "0": "0000", - "1": "0001", - "12": "0012", - "12345": "12345", - }, - }, { - pattern: ".0", - test: pairs{ - "0": ".0", - "1": "1.0", - "1.2": "1.2", - "1.2345": "1.2", - }, - }, { - pattern: "#.0", - test: pairs{ - "0": ".0", - }, - }, { - pattern: "#.0#", - test: pairs{ - "0": ".0", - "1": "1.0", - }, - }, { - pattern: "0.0#", - test: pairs{ - "0": "0.0", - }, - }, { - pattern: "#0.###", - test: pairs{ - "0": "0", - "1": "1", - "1.2": "1.2", - "1.2345": "1.234", // rounding should have been done earlier - "1234.5": "1234.5", - "1234.567": "1234.567", - }, - }, { - pattern: "#0.######", - test: pairs{ - "0": "0", - "1234.5678": "1234.5678", - "0.123456789": "0.123457", - "NaN": "NaN", - "Inf": "∞", - }, - - // Test separators. - }, { - pattern: "#,#.00", - test: pairs{ - "100": "1,0,0.00", - }, - }, { - pattern: "#,0.##", - test: pairs{ - "10": "1,0", - }, - }, { - pattern: "#,0", - test: pairs{ - "10": "1,0", - }, - }, { - pattern: "#,##,#.00", - test: pairs{ - "1000": "1,00,0.00", - }, - }, { - pattern: "#,##0.###", - test: pairs{ - "0": "0", - "1234.5678": "1,234.568", - "0.123456789": "0.123", - }, - }, { - pattern: "#,##,##0.###", - test: pairs{ - "0": "0", - "123456789012": "1,23,45,67,89,012", - "0.123456789": "0.123", - }, - }, { - pattern: "0,00,000.###", - test: pairs{ - "0": "0,00,000", - "123456789012": "1,23,45,67,89,012", - "12.3456789": "0,00,012.346", - "0.123456789": "0,00,000.123", - }, - - // Support for ill-formed patterns. - }, { - pattern: "#", - test: pairs{ - ".00": "", // This is the behavior of fmt. - "0": "", // This is the behavior of fmt. - "1": "1", - "10.": "10", - }, - }, { - pattern: ".#", - test: pairs{ - "0": "", // This is the behavior of fmt. - "1": "1", - "1.2": "1.2", - "1.2345": "1.2", - }, - }, { - pattern: "#,#.##", - test: pairs{ - "10": "1,0", - }, - }, { - pattern: "#,#", - test: pairs{ - "10": "1,0", - }, - - // Special patterns - }, { - pattern: "#,max_int=2", - pat: &Pattern{ - RoundingContext: RoundingContext{ - MaxIntegerDigits: 2, - }, - }, - test: pairs{ - "2017": "17", - }, - }, { - pattern: "0,max_int=2", - pat: &Pattern{ - RoundingContext: RoundingContext{ - MaxIntegerDigits: 2, - MinIntegerDigits: 1, - }, - }, - test: pairs{ - "2000": "0", - "2001": "1", - "2017": "17", - }, - }, { - pattern: "00,max_int=2", - pat: &Pattern{ - RoundingContext: RoundingContext{ - MaxIntegerDigits: 2, - MinIntegerDigits: 2, - }, - }, - test: pairs{ - "2000": "00", - "2001": "01", - "2017": "17", - }, - }, { - pattern: "@@@@,max_int=2", - pat: &Pattern{ - RoundingContext: RoundingContext{ - MaxIntegerDigits: 2, - MinSignificantDigits: 4, - }, - }, - test: pairs{ - "2017": "17.00", - "2000": "0.000", - "2001": "1.000", - }, - - // Significant digits - }, { - pattern: "@@##", - test: pairs{ - "1": "1.0", - "0.1": "0.10", // leading zero does not count as significant digit - "123": "123", - "1234": "1234", - "12345": "12340", - }, - }, { - pattern: "@@@@", - test: pairs{ - "1": "1.000", - ".1": "0.1000", - ".001": "0.001000", - "123": "123.0", - "1234": "1234", - "12345": "12340", // rounding down - "NaN": "NaN", - "-Inf": "-∞", - }, - - // TODO: rounding - // {"@@@@": "23456": "23460"}, // rounding up - // TODO: padding - - // Scientific and Engineering notation - }, { - pattern: "#E0", - test: pairs{ - "0": "0\u202f×\u202f10⁰", - "1": "1\u202f×\u202f10⁰", - "123.456": "1\u202f×\u202f10²", - }, - }, { - pattern: "#E+0", - test: pairs{ - "0": "0\u202f×\u202f10⁺⁰", - "1000": "1\u202f×\u202f10⁺³", - "1E100": "1\u202f×\u202f10⁺¹⁰⁰", - "1E-100": "1\u202f×\u202f10⁻¹⁰⁰", - "NaN": "NaN", - "-Inf": "-∞", - }, - }, { - pattern: "##0E00", - test: pairs{ - "100": "100\u202f×\u202f10⁰⁰", - "12345": "12\u202f×\u202f10⁰³", - "123.456": "123\u202f×\u202f10⁰⁰", - }, - }, { - pattern: "##0.###E00", - test: pairs{ - "100": "100\u202f×\u202f10⁰⁰", - "12345": "12.345\u202f×\u202f10⁰³", - "123456": "123.456\u202f×\u202f10⁰³", - "123.456": "123.456\u202f×\u202f10⁰⁰", - "123.4567": "123.457\u202f×\u202f10⁰⁰", - }, - }, { - pattern: "##0.000E00", - test: pairs{ - "100": "100.000\u202f×\u202f10⁰⁰", - "12345": "12.345\u202f×\u202f10⁰³", - "123.456": "123.456\u202f×\u202f10⁰⁰", - "12.3456": "12.346\u202f×\u202f10⁰⁰", - }, - }, { - pattern: "@@E0", - test: pairs{ - "0": "0.0\u202f×\u202f10⁰", - "99": "9.9\u202f×\u202f10¹", - "0.99": "9.9\u202f×\u202f10⁻¹", - }, - }, { - pattern: "@###E00", - test: pairs{ - "0": "0\u202f×\u202f10⁰⁰", - "1": "1\u202f×\u202f10⁰⁰", - "11": "1.1\u202f×\u202f10⁰¹", - "111": "1.11\u202f×\u202f10⁰²", - "1111": "1.111\u202f×\u202f10⁰³", - "11111": "1.111\u202f×\u202f10⁰⁴", - "0.1": "1\u202f×\u202f10⁻⁰¹", - "0.11": "1.1\u202f×\u202f10⁻⁰¹", - "0.001": "1\u202f×\u202f10⁻⁰³", - }, - }, { - pattern: "*x##0", - test: pairs{ - "0": "xx0", - "10": "x10", - "100": "100", - "1000": "1000", - }, - }, { - pattern: "##0*x", - test: pairs{ - "0": "0xx", - "10": "10x", - "100": "100", - "1000": "1000", - }, - }, { - pattern: "* ###0.000", - test: pairs{ - "0": " 0.000", - "123": " 123.000", - "123.456": " 123.456", - "1234.567": "1234.567", - }, - }, { - pattern: "**0.0#######E00", - test: pairs{ - "0": "***0.0\u202f×\u202f10⁰⁰", - "10": "***1.0\u202f×\u202f10⁰¹", - "11": "***1.1\u202f×\u202f10⁰¹", - "111": "**1.11\u202f×\u202f10⁰²", - "1111": "*1.111\u202f×\u202f10⁰³", - "11111": "1.1111\u202f×\u202f10⁰⁴", - "11110": "*1.111\u202f×\u202f10⁰⁴", - "11100": "**1.11\u202f×\u202f10⁰⁴", - "11000": "***1.1\u202f×\u202f10⁰⁴", - "10000": "***1.0\u202f×\u202f10⁰⁴", - }, - }, { - pattern: "*xpre0suf", - test: pairs{ - "0": "pre0suf", - "10": "pre10suf", - }, - }, { - pattern: "*∞ pre ###0 suf", - test: pairs{ - "0": "∞∞∞ pre 0 suf", - "10": "∞∞ pre 10 suf", - "100": "∞ pre 100 suf", - "1000": " pre 1000 suf", - }, - }, { - pattern: "pre *∞###0 suf", - test: pairs{ - "0": "pre ∞∞∞0 suf", - "10": "pre ∞∞10 suf", - "100": "pre ∞100 suf", - "1000": "pre 1000 suf", - }, - }, { - pattern: "pre ###0*∞ suf", - test: pairs{ - "0": "pre 0∞∞∞ suf", - "10": "pre 10∞∞ suf", - "100": "pre 100∞ suf", - "1000": "pre 1000 suf", - }, - }, { - pattern: "pre ###0 suf *∞", - test: pairs{ - "0": "pre 0 suf ∞∞∞", - "10": "pre 10 suf ∞∞", - "100": "pre 100 suf ∞", - "1000": "pre 1000 suf ", - }, - }, { - // Take width of positive pattern. - pattern: "**###0;**-#####0x", - test: pairs{ - "0": "***0", - "-1": "*-1x", - }, - }, { - pattern: "0.00%", - test: pairs{ - "0.1": "10.00%", - }, - }, { - pattern: "0.##%", - test: pairs{ - "0.1": "10%", - "0.11": "11%", - "0.111": "11.1%", - "0.1111": "11.11%", - "0.11111": "11.11%", - }, - }, { - pattern: "‰ 0.0#", - test: pairs{ - "0.1": "‰ 100.0", - "0.11": "‰ 110.0", - "0.111": "‰ 111.0", - "0.1111": "‰ 111.1", - "0.11111": "‰ 111.11", - "0.111111": "‰ 111.11", - }, - }} - - // TODO: - // "#,##0.00¤", - // "#,##0.00 ¤;(#,##0.00 ¤)", - - for _, tc := range testCases { - pat := tc.pat - if pat == nil { - var err error - if pat, err = ParsePattern(tc.pattern); err != nil { - log.Fatal(err) - } - } - var f Formatter - f.InitPattern(language.English, pat) - for num, want := range tc.test { - buf := make([]byte, 100) - t.Run(tc.pattern+"/"+num, func(t *testing.T) { - var d Decimal - d.Convert(f.RoundingContext, dec(num)) - buf = f.Format(buf[:0], &d) - if got := string(buf); got != want { - t.Errorf("\n got %[1]q (%[1]s)\nwant %[2]q (%[2]s)", got, want) - } - }) - } - } -} - -func TestLocales(t *testing.T) { - testCases := []struct { - tag language.Tag - num string - want string - }{ - {language.Make("en"), "123456.78", "123,456.78"}, - {language.Make("de"), "123456.78", "123.456,78"}, - {language.Make("de-CH"), "123456.78", "123’456.78"}, - {language.Make("fr"), "123456.78", "123 456,78"}, - {language.Make("bn"), "123456.78", "১,২৩,৪৫৬.৭৮"}, - } - for _, tc := range testCases { - t.Run(fmt.Sprint(tc.tag, "/", tc.num), func(t *testing.T) { - var f Formatter - f.InitDecimal(tc.tag) - var d Decimal - d.Convert(f.RoundingContext, dec(tc.num)) - b := f.Format(nil, &d) - if got := string(b); got != tc.want { - t.Errorf("got %[1]q (%[1]s); want %[2]q (%[2]s)", got, tc.want) - } - }) - } -} - -func TestFormatters(t *testing.T) { - var f Formatter - testCases := []struct { - init func(t language.Tag) - num string - want string - }{ - {f.InitDecimal, "123456.78", "123,456.78"}, - {f.InitScientific, "123456.78", "1.23\u202f×\u202f10⁵"}, - {f.InitEngineering, "123456.78", "123.46\u202f×\u202f10³"}, - {f.InitEngineering, "1234", "1.23\u202f×\u202f10³"}, - - {f.InitPercent, "0.1234", "12.34%"}, - {f.InitPerMille, "0.1234", "123.40‰"}, - } - for i, tc := range testCases { - t.Run(fmt.Sprint(i, "/", tc.num), func(t *testing.T) { - tc.init(language.English) - f.SetScale(2) - var d Decimal - d.Convert(f.RoundingContext, dec(tc.num)) - b := f.Format(nil, &d) - if got := string(b); got != tc.want { - t.Errorf("got %[1]q (%[1]s); want %[2]q (%[2]s)", got, tc.want) - } - }) - } -} diff --git a/vendor/golang.org/x/text/internal/number/gen.go b/vendor/golang.org/x/text/internal/number/gen.go deleted file mode 100644 index 48f180f2..00000000 --- a/vendor/golang.org/x/text/internal/number/gen.go +++ /dev/null @@ -1,458 +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. - -// +build ignore - -package main - -import ( - "flag" - "fmt" - "log" - "reflect" - "strings" - "unicode/utf8" - - "golang.org/x/text/internal" - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/number" - "golang.org/x/text/internal/stringset" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -var ( - test = flag.Bool("test", false, - "test existing tables; can be used to compare web data with package data.") - outputFile = flag.String("output", "tables.go", "output file") - outputTestFile = flag.String("testoutput", "data_test.go", "output file") - - draft = flag.String("draft", - "contributed", - `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) -) - -func main() { - gen.Init() - - const pkg = "number" - - gen.Repackage("gen_common.go", "common.go", pkg) - // Read the CLDR zip file. - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("supplemental", "main") - d.SetSectionFilter("numbers", "numberingSystem") - data, err := d.DecodeZip(r) - if err != nil { - log.Fatalf("DecodeZip: %v", err) - } - - w := gen.NewCodeWriter() - defer w.WriteGoFile(*outputFile, pkg) - - fmt.Fprintln(w, `import "golang.org/x/text/internal/stringset"`) - - gen.WriteCLDRVersion(w) - - genNumSystem(w, data) - genSymbols(w, data) - genFormats(w, data) -} - -var systemMap = map[string]system{"latn": 0} - -func getNumberSystem(str string) system { - ns, ok := systemMap[str] - if !ok { - log.Fatalf("No index for numbering system %q", str) - } - return ns -} - -func genNumSystem(w *gen.CodeWriter, data *cldr.CLDR) { - numSysData := []systemData{ - {digitSize: 1, zero: [4]byte{'0'}}, - } - - for _, ns := range data.Supplemental().NumberingSystems.NumberingSystem { - if len(ns.Digits) == 0 { - continue - } - switch ns.Id { - case "latn": - // hard-wired - continue - case "hanidec": - // non-consecutive digits: treat as "algorithmic" - continue - } - - zero, sz := utf8.DecodeRuneInString(ns.Digits) - if ns.Digits[sz-1]+9 > 0xBF { // 1011 1111: highest continuation byte - log.Fatalf("Last byte of zero value overflows for %s", ns.Id) - } - - i := rune(0) - for _, r := range ns.Digits { - // Verify that we can do simple math on the UTF-8 byte sequence - // of zero to get the digit. - if zero+i != r { - // Runes not consecutive. - log.Fatalf("Digit %d of %s (%U) is not offset correctly from zero value", i, ns.Id, r) - } - i++ - } - var x [utf8.UTFMax]byte - utf8.EncodeRune(x[:], zero) - id := system(len(numSysData)) - systemMap[ns.Id] = id - numSysData = append(numSysData, systemData{ - id: id, - digitSize: byte(sz), - zero: x, - }) - } - w.WriteVar("numSysData", numSysData) - - algoID := system(len(numSysData)) - fmt.Fprintln(w, "const (") - for _, ns := range data.Supplemental().NumberingSystems.NumberingSystem { - id, ok := systemMap[ns.Id] - if !ok { - id = algoID - systemMap[ns.Id] = id - algoID++ - } - fmt.Fprintf(w, "num%s = %#x\n", strings.Title(ns.Id), id) - } - fmt.Fprintln(w, "numNumberSystems") - fmt.Fprintln(w, ")") - - fmt.Fprintln(w, "var systemMap = map[string]system{") - for _, ns := range data.Supplemental().NumberingSystems.NumberingSystem { - fmt.Fprintf(w, "%q: num%s,\n", ns.Id, strings.Title(ns.Id)) - w.Size += len(ns.Id) + 16 + 1 // very coarse approximation - } - fmt.Fprintln(w, "}") -} - -func genSymbols(w *gen.CodeWriter, data *cldr.CLDR) { - d, err := cldr.ParseDraft(*draft) - if err != nil { - log.Fatalf("invalid draft level: %v", err) - } - - nNumberSystems := system(len(systemMap)) - - type symbols [NumSymbolTypes]string - - type key struct { - tag int // from language.CompactIndex - system system - } - symbolMap := map[key]*symbols{} - - defaults := map[int]system{} - - for _, lang := range data.Locales() { - ldml := data.RawLDML(lang) - if ldml.Numbers == nil { - continue - } - langIndex, ok := language.CompactIndex(language.MustParse(lang)) - if !ok { - log.Fatalf("No compact index for language %s", lang) - } - if d := ldml.Numbers.DefaultNumberingSystem; len(d) > 0 { - defaults[langIndex] = getNumberSystem(d[0].Data()) - } - - syms := cldr.MakeSlice(&ldml.Numbers.Symbols) - syms.SelectDraft(d) - - getFirst := func(name string, x interface{}) string { - v := reflect.ValueOf(x) - slice := cldr.MakeSlice(x) - slice.SelectAnyOf("alt", "", "alt") - if reflect.Indirect(v).Len() == 0 { - return "" - } else if reflect.Indirect(v).Len() > 1 { - log.Fatalf("%s: multiple values of %q within single symbol not supported.", lang, name) - } - return reflect.Indirect(v).Index(0).MethodByName("Data").Call(nil)[0].String() - } - - for _, sym := range ldml.Numbers.Symbols { - if sym.NumberSystem == "" { - // This is just linking the default of root to "latn". - continue - } - symbolMap[key{langIndex, getNumberSystem(sym.NumberSystem)}] = &symbols{ - SymDecimal: getFirst("decimal", &sym.Decimal), - SymGroup: getFirst("group", &sym.Group), - SymList: getFirst("list", &sym.List), - SymPercentSign: getFirst("percentSign", &sym.PercentSign), - SymPlusSign: getFirst("plusSign", &sym.PlusSign), - SymMinusSign: getFirst("minusSign", &sym.MinusSign), - SymExponential: getFirst("exponential", &sym.Exponential), - SymSuperscriptingExponent: getFirst("superscriptingExponent", &sym.SuperscriptingExponent), - SymPerMille: getFirst("perMille", &sym.PerMille), - SymInfinity: getFirst("infinity", &sym.Infinity), - SymNan: getFirst("nan", &sym.Nan), - SymTimeSeparator: getFirst("timeSeparator", &sym.TimeSeparator), - } - } - } - - // Expand all values. - for k, syms := range symbolMap { - for t := SymDecimal; t < NumSymbolTypes; t++ { - p := k.tag - for syms[t] == "" { - p = int(internal.Parent[p]) - if pSyms, ok := symbolMap[key{p, k.system}]; ok && (*pSyms)[t] != "" { - syms[t] = (*pSyms)[t] - break - } - if p == 0 /* und */ { - // Default to root, latn. - syms[t] = (*symbolMap[key{}])[t] - } - } - } - } - - // Unique the symbol sets and write the string data. - m := map[symbols]int{} - sb := stringset.NewBuilder() - - symIndex := [][NumSymbolTypes]byte{} - - for ns := system(0); ns < nNumberSystems; ns++ { - for _, l := range data.Locales() { - langIndex, _ := language.CompactIndex(language.MustParse(l)) - s := symbolMap[key{langIndex, ns}] - if s == nil { - continue - } - if _, ok := m[*s]; !ok { - m[*s] = len(symIndex) - sb.Add(s[:]...) - var x [NumSymbolTypes]byte - for i := SymDecimal; i < NumSymbolTypes; i++ { - x[i] = byte(sb.Index((*s)[i])) - } - symIndex = append(symIndex, x) - } - } - } - w.WriteVar("symIndex", symIndex) - w.WriteVar("symData", sb.Set()) - - // resolveSymbolIndex gets the index from the closest matching locale, - // including the locale itself. - resolveSymbolIndex := func(langIndex int, ns system) symOffset { - for { - if sym := symbolMap[key{langIndex, ns}]; sym != nil { - return symOffset(m[*sym]) - } - if langIndex == 0 { - return 0 // und, latn - } - langIndex = int(internal.Parent[langIndex]) - } - } - - // Create an index with the symbols for each locale for the latn numbering - // system. If this is not the default, or the only one, for a locale, we - // will overwrite the value later. - var langToDefaults [language.NumCompactTags]symOffset - for _, l := range data.Locales() { - langIndex, _ := language.CompactIndex(language.MustParse(l)) - langToDefaults[langIndex] = resolveSymbolIndex(langIndex, 0) - } - - // Delete redundant entries. - for _, l := range data.Locales() { - langIndex, _ := language.CompactIndex(language.MustParse(l)) - def := defaults[langIndex] - syms := symbolMap[key{langIndex, def}] - if syms == nil { - continue - } - for ns := system(0); ns < nNumberSystems; ns++ { - if ns == def { - continue - } - if altSyms, ok := symbolMap[key{langIndex, ns}]; ok && *altSyms == *syms { - delete(symbolMap, key{langIndex, ns}) - } - } - } - - // Create a sorted list of alternatives per language. This will only need to - // be referenced if a user specified an alternative numbering system. - var langToAlt []altSymData - for _, l := range data.Locales() { - langIndex, _ := language.CompactIndex(language.MustParse(l)) - start := len(langToAlt) - if start >= hasNonLatnMask { - log.Fatalf("Number of alternative assignments >= %x", hasNonLatnMask) - } - // Create the entry for the default value. - def := defaults[langIndex] - langToAlt = append(langToAlt, altSymData{ - compactTag: uint16(langIndex), - system: def, - symIndex: resolveSymbolIndex(langIndex, def), - }) - - for ns := system(0); ns < nNumberSystems; ns++ { - if def == ns { - continue - } - if sym := symbolMap[key{langIndex, ns}]; sym != nil { - langToAlt = append(langToAlt, altSymData{ - compactTag: uint16(langIndex), - system: ns, - symIndex: resolveSymbolIndex(langIndex, ns), - }) - } - } - if def == 0 && len(langToAlt) == start+1 { - // No additional data: erase the entry. - langToAlt = langToAlt[:start] - } else { - // Overwrite the entry in langToDefaults. - langToDefaults[langIndex] = hasNonLatnMask | symOffset(start) - } - } - w.WriteComment(` -langToDefaults maps a compact language index to the default numbering system -and default symbol set`) - w.WriteVar("langToDefaults", langToDefaults) - - w.WriteComment(` -langToAlt is a list of numbering system and symbol set pairs, sorted and -marked by compact language index.`) - w.WriteVar("langToAlt", langToAlt) -} - -// genFormats generates the lookup table for decimal, scientific and percent -// patterns. -// -// CLDR allows for patterns to be different per language for different numbering -// systems. In practice the patterns are set to be consistent for a language -// independent of the numbering system. genFormats verifies that no language -// deviates from this. -func genFormats(w *gen.CodeWriter, data *cldr.CLDR) { - d, err := cldr.ParseDraft(*draft) - if err != nil { - log.Fatalf("invalid draft level: %v", err) - } - - // Fill the first slot with a dummy so we can identify unspecified tags. - formats := []number.Pattern{{}} - patterns := map[string]int{} - - // TODO: It would be possible to eliminate two of these slices by having - // another indirection and store a reference to the combination of patterns. - decimal := make([]byte, language.NumCompactTags) - scientific := make([]byte, language.NumCompactTags) - percent := make([]byte, language.NumCompactTags) - - for _, lang := range data.Locales() { - ldml := data.RawLDML(lang) - if ldml.Numbers == nil { - continue - } - langIndex, ok := language.CompactIndex(language.MustParse(lang)) - if !ok { - log.Fatalf("No compact index for language %s", lang) - } - type patternSlice []*struct { - cldr.Common - Numbers string `xml:"numbers,attr"` - Count string `xml:"count,attr"` - } - - add := func(name string, tags []byte, ps patternSlice) { - sl := cldr.MakeSlice(&ps) - sl.SelectDraft(d) - if len(ps) == 0 { - return - } - if len(ps) > 2 || len(ps) == 2 && ps[0] != ps[1] { - log.Fatalf("Inconsistent %d patterns for language %s", name, lang) - } - s := ps[0].Data() - - index, ok := patterns[s] - if !ok { - nf, err := number.ParsePattern(s) - if err != nil { - log.Fatal(err) - } - index = len(formats) - patterns[s] = index - formats = append(formats, *nf) - } - tags[langIndex] = byte(index) - } - - for _, df := range ldml.Numbers.DecimalFormats { - for _, l := range df.DecimalFormatLength { - if l.Type != "" { - continue - } - for _, f := range l.DecimalFormat { - add("decimal", decimal, f.Pattern) - } - } - } - for _, df := range ldml.Numbers.ScientificFormats { - for _, l := range df.ScientificFormatLength { - if l.Type != "" { - continue - } - for _, f := range l.ScientificFormat { - add("scientific", scientific, f.Pattern) - } - } - } - for _, df := range ldml.Numbers.PercentFormats { - for _, l := range df.PercentFormatLength { - if l.Type != "" { - continue - } - for _, f := range l.PercentFormat { - add("percent", percent, f.Pattern) - } - } - } - } - - // Complete the parent tag array to reflect inheritance. An index of 0 - // indicates an unspecified value. - for _, data := range [][]byte{decimal, scientific, percent} { - for i := range data { - p := uint16(i) - for ; data[p] == 0; p = internal.Parent[p] { - } - data[i] = data[p] - } - } - w.WriteVar("tagToDecimal", decimal) - w.WriteVar("tagToScientific", scientific) - w.WriteVar("tagToPercent", percent) - - value := strings.Replace(fmt.Sprintf("%#v", formats), "number.", "", -1) - // Break up the lines. This won't give ideal perfect formatting, but it is - // better than one huge line. - value = strings.Replace(value, ", ", ",\n", -1) - fmt.Fprintf(w, "var formats = %s\n", value) -} diff --git a/vendor/golang.org/x/text/internal/number/gen_common.go b/vendor/golang.org/x/text/internal/number/gen_common.go deleted file mode 100644 index f88b8387..00000000 --- a/vendor/golang.org/x/text/internal/number/gen_common.go +++ /dev/null @@ -1,55 +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. - -// +build ignore - -package main - -import "unicode/utf8" - -// 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 uint16 - symIndex symOffset - system system -} 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 2a21f07d..00000000 --- a/vendor/golang.org/x/text/internal/number/number.go +++ /dev/null @@ -1,156 +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" - "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 int, 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 = int(internal.Parent[langIndex]) - } else { - // The index points to a list of symbol data indexes. - for _, e := range langToAlt[p&^hasNonLatnMask:] { - if int(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 - // http://unicode.org/reports/tr35/#Locale_Inheritance. - ns = numLatn - langIndex = compactIndex - continue outerLoop - } - // Fall back to parent. - langIndex = int(internal.Parent[langIndex]) - } 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 { - for { - if index, ok := language.CompactIndex(t); ok { - return InfoFromLangID(index, t.TypeForKey("nu")) - } - t = t.Parent() - } -} - -// 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 { - for ; ; t = t.Parent() { - if x, ok := language.CompactIndex(t); ok { - return &formats[index[x]] - } - } -} diff --git a/vendor/golang.org/x/text/internal/number/number_test.go b/vendor/golang.org/x/text/internal/number/number_test.go deleted file mode 100644 index cbc28ab4..00000000 --- a/vendor/golang.org/x/text/internal/number/number_test.go +++ /dev/null @@ -1,104 +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 number - -import ( - "fmt" - "testing" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" -) - -func TestInfo(t *testing.T) { - testCases := []struct { - lang string - sym SymbolType - wantSym string - wantNine rune - }{ - {"und", SymDecimal, ".", '9'}, - {"de", SymGroup, ".", '9'}, - {"de-BE", SymGroup, ".", '9'}, // inherits from de (no number data in CLDR) - {"de-BE-oxendict", SymGroup, ".", '9'}, // inherits from de (no compact index) - - // U+096F DEVANAGARI DIGIT NINE ('९') - {"de-BE-u-nu-deva", SymGroup, ".", '\u096f'}, // miss -> latn -> de - {"de-Cyrl-BE", SymGroup, ",", '9'}, // inherits from root - {"de-CH", SymGroup, "’", '9'}, // overrides values in de - {"de-CH-oxendict", SymGroup, "’", '9'}, // inherits from de-CH (no compact index) - {"de-CH-u-nu-deva", SymGroup, "’", '\u096f'}, // miss -> latn -> de-CH - - {"bn-u-nu-beng", SymGroup, ",", '\u09ef'}, - {"bn-u-nu-deva", SymGroup, ",", '\u096f'}, - {"bn-u-nu-latn", SymGroup, ",", '9'}, - - {"pa", SymExponential, "E", '9'}, - - // "×۱۰^" -> U+00d7 U+06f1 U+06f0^" - // U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO - // U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE - // U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE - {"pa-u-nu-arabext", SymExponential, "\u00d7\u06f1\u06f0^", '\u06f9'}, - - // "གྲངས་མེད" - > U+0f42 U+0fb2 U+0f44 U+0f66 U+0f0b U+0f58 U+0f7a U+0f51 - // Examples: - // U+0F29 TIBETAN DIGIT NINE (༩) - {"dz", SymInfinity, "\u0f42\u0fb2\u0f44\u0f66\u0f0b\u0f58\u0f7a\u0f51", '\u0f29'}, // defaults to tibt - {"dz-u-nu-latn", SymInfinity, "∞", '9'}, // select alternative - {"dz-u-nu-tibt", SymInfinity, "\u0f42\u0fb2\u0f44\u0f66\u0f0b\u0f58\u0f7a\u0f51", '\u0f29'}, - {"en-u-nu-tibt", SymInfinity, "∞", '\u0f29'}, - - // algorithmic number systems fall back to ASCII if Digits is used. - {"en-u-nu-hanidec", SymPlusSign, "+", '9'}, - {"en-u-nu-roman", SymPlusSign, "+", '9'}, - } - for _, tc := range testCases { - t.Run(fmt.Sprintf("%s:%v", tc.lang, tc.sym), func(t *testing.T) { - info := InfoFromTag(language.MustParse(tc.lang)) - if got := info.Symbol(tc.sym); got != tc.wantSym { - t.Errorf("sym: got %q; want %q", got, tc.wantSym) - } - if got := info.Digit('9'); got != tc.wantNine { - t.Errorf("Digit(9): got %+q; want %+q", got, tc.wantNine) - } - var buf [4]byte - if got := string(buf[:info.WriteDigit(buf[:], '9')]); got != string(tc.wantNine) { - t.Errorf("WriteDigit(9): got %+q; want %+q", got, tc.wantNine) - } - if got := string(info.AppendDigit([]byte{}, 9)); got != string(tc.wantNine) { - t.Errorf("AppendDigit(9): got %+q; want %+q", got, tc.wantNine) - } - }) - } -} - -func TestFormats(t *testing.T) { - testCases := []struct { - lang string - pattern string - index []byte - }{ - {"en", "#,##0.###", tagToDecimal}, - {"de", "#,##0.###", tagToDecimal}, - {"de-CH", "#,##0.###", tagToDecimal}, - {"pa", "#,##,##0.###", tagToDecimal}, - {"pa-Arab", "#,##0.###", tagToDecimal}, // Does NOT inherit from pa! - {"mr", "#,##,##0.###", tagToDecimal}, - {"mr-IN", "#,##,##0.###", tagToDecimal}, // Inherits from mr. - {"nl", "#E0", tagToScientific}, - {"nl-MX", "#E0", tagToScientific}, // Inherits through Tag.Parent. - {"zgh", "#,##0 %", tagToPercent}, - } - for _, tc := range testCases { - testtext.Run(t, tc.lang, func(t *testing.T) { - got := formatForLang(language.MustParse(tc.lang), tc.index) - want, _ := ParsePattern(tc.pattern) - if *got != *want { - t.Errorf("\ngot %#v;\nwant %#v", got, want) - } - }) - } -} 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 b95ca40e..00000000 --- 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 -// http://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 http://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/pattern_test.go b/vendor/golang.org/x/text/internal/number/pattern_test.go deleted file mode 100644 index a7517d00..00000000 --- a/vendor/golang.org/x/text/internal/number/pattern_test.go +++ /dev/null @@ -1,438 +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 ( - "reflect" - "testing" - "unsafe" -) - -var testCases = []struct { - pat string - want *Pattern -}{{ - "#", - &Pattern{ - FormatWidth: 1, - // TODO: Should MinIntegerDigits be 1? - }, -}, { - "0", - &Pattern{ - FormatWidth: 1, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - }, - }, -}, { - "+0", - &Pattern{ - Affix: "\x01+\x00", - FormatWidth: 2, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - }, - }, -}, { - "0+", - &Pattern{ - Affix: "\x00\x01+", - FormatWidth: 2, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - }, - }, -}, { - "0000", - &Pattern{ - FormatWidth: 4, - RoundingContext: RoundingContext{ - MinIntegerDigits: 4, - }, - }, -}, { - ".#", - &Pattern{ - FormatWidth: 2, - RoundingContext: RoundingContext{ - MaxFractionDigits: 1, - }, - }, -}, { - "#0.###", - &Pattern{ - FormatWidth: 6, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxFractionDigits: 3, - }, - }, -}, { - "#0.######", - &Pattern{ - FormatWidth: 9, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxFractionDigits: 6, - }, - }, -}, { - "#,0", - &Pattern{ - FormatWidth: 3, - GroupingSize: [2]uint8{1, 0}, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - }, - }, -}, { - "#,0.00", - &Pattern{ - FormatWidth: 6, - GroupingSize: [2]uint8{1, 0}, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MinFractionDigits: 2, - MaxFractionDigits: 2, - }, - }, -}, { - "#,##0.###", - &Pattern{ - FormatWidth: 9, - GroupingSize: [2]uint8{3, 0}, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxFractionDigits: 3, - }, - }, -}, { - "#,##,##0.###", - &Pattern{ - FormatWidth: 12, - GroupingSize: [2]uint8{3, 2}, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxFractionDigits: 3, - }, - }, -}, { - // Ignore additional separators. - "#,####,##,##0.###", - &Pattern{ - FormatWidth: 17, - GroupingSize: [2]uint8{3, 2}, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxFractionDigits: 3, - }, - }, -}, { - "#E0", - &Pattern{ - FormatWidth: 3, - RoundingContext: RoundingContext{ - MaxIntegerDigits: 1, - MinExponentDigits: 1, - }, - }, -}, { - // At least one exponent digit is required. As long as this is true, one can - // determine that scientific rendering is needed if MinExponentDigits > 0. - "#E#", - nil, -}, { - "0E0", - &Pattern{ - FormatWidth: 3, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MinExponentDigits: 1, - }, - }, -}, { - "##0.###E00", - &Pattern{ - FormatWidth: 10, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxIntegerDigits: 3, - MaxFractionDigits: 3, - MinExponentDigits: 2, - }, - }, -}, { - "##00.0#E0", - &Pattern{ - FormatWidth: 9, - RoundingContext: RoundingContext{ - MinIntegerDigits: 2, - MaxIntegerDigits: 4, - MinFractionDigits: 1, - MaxFractionDigits: 2, - MinExponentDigits: 1, - }, - }, -}, { - "#00.0E+0", - &Pattern{ - FormatWidth: 8, - Flags: AlwaysExpSign, - RoundingContext: RoundingContext{ - MinIntegerDigits: 2, - MaxIntegerDigits: 3, - MinFractionDigits: 1, - MaxFractionDigits: 1, - MinExponentDigits: 1, - }, - }, -}, { - "0.0E++0", - nil, -}, { - "#0E+", - nil, -}, { - // significant digits - "@", - &Pattern{ - FormatWidth: 1, - RoundingContext: RoundingContext{ - MinSignificantDigits: 1, - MaxSignificantDigits: 1, - MaxFractionDigits: -1, - }, - }, -}, { - // significant digits - "@@@@", - &Pattern{ - FormatWidth: 4, - RoundingContext: RoundingContext{ - MinSignificantDigits: 4, - MaxSignificantDigits: 4, - MaxFractionDigits: -1, - }, - }, -}, { - "@###", - &Pattern{ - FormatWidth: 4, - RoundingContext: RoundingContext{ - MinSignificantDigits: 1, - MaxSignificantDigits: 4, - MaxFractionDigits: -1, - }, - }, -}, { - // Exponents in significant digits mode gets normalized. - "@@E0", - &Pattern{ - FormatWidth: 4, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxIntegerDigits: 1, - MinFractionDigits: 1, - MaxFractionDigits: 1, - MinExponentDigits: 1, - }, - }, -}, { - "@###E00", - &Pattern{ - FormatWidth: 7, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxIntegerDigits: 1, - MinFractionDigits: 0, - MaxFractionDigits: 3, - MinExponentDigits: 2, - }, - }, -}, { - // The significant digits mode does not allow fractions. - "@###.#E0", - nil, -}, { - //alternative negative pattern - "#0.###;(#0.###)", - &Pattern{ - Affix: "\x00\x00\x01(\x01)", - NegOffset: 2, - FormatWidth: 6, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MaxFractionDigits: 3, - }, - }, -}, { - // Rounding increment - "1.05", - &Pattern{ - FormatWidth: 4, - RoundingContext: RoundingContext{ - Increment: 105, - IncrementScale: 2, - MinIntegerDigits: 1, - MinFractionDigits: 2, - MaxFractionDigits: 2, - }, - }, -}, { - // Rounding increment with grouping - "1,05", - &Pattern{ - FormatWidth: 4, - GroupingSize: [2]uint8{2, 0}, - RoundingContext: RoundingContext{ - Increment: 105, - IncrementScale: 0, - MinIntegerDigits: 3, - MinFractionDigits: 0, - MaxFractionDigits: 0, - }, - }, -}, { - "0.0%", - &Pattern{ - Affix: "\x00\x01%", - FormatWidth: 4, - RoundingContext: RoundingContext{ - DigitShift: 2, - MinIntegerDigits: 1, - MinFractionDigits: 1, - MaxFractionDigits: 1, - }, - }, -}, { - "0.0‰", - &Pattern{ - Affix: "\x00\x03‰", - FormatWidth: 4, - RoundingContext: RoundingContext{ - DigitShift: 3, - MinIntegerDigits: 1, - MinFractionDigits: 1, - MaxFractionDigits: 1, - }, - }, -}, { - "#,##0.00¤", - &Pattern{ - Affix: "\x00\x02¤", - FormatWidth: 9, - GroupingSize: [2]uint8{3, 0}, - RoundingContext: RoundingContext{ - MinIntegerDigits: 1, - MinFractionDigits: 2, - MaxFractionDigits: 2, - }, - }, -}, { - "#,##0.00 ¤;(#,##0.00 ¤)", - &Pattern{Affix: "\x00\x04\u00a0¤\x01(\x05\u00a0¤)", - NegOffset: 6, - FormatWidth: 10, - GroupingSize: [2]uint8{3, 0}, - RoundingContext: RoundingContext{ - DigitShift: 0, - MinIntegerDigits: 1, - MinFractionDigits: 2, - MaxFractionDigits: 2, - }, - }, -}, { - // padding - "*x#", - &Pattern{ - PadRune: 'x', - FormatWidth: 1, - }, -}, { - // padding - "#*x", - &Pattern{ - PadRune: 'x', - FormatWidth: 1, - Flags: PadBeforeSuffix, - }, -}, { - "*xpre#suf", - &Pattern{ - Affix: "\x03pre\x03suf", - PadRune: 'x', - FormatWidth: 7, - }, -}, { - "pre*x#suf", - &Pattern{ - Affix: "\x03pre\x03suf", - PadRune: 'x', - FormatWidth: 7, - Flags: PadAfterPrefix, - }, -}, { - "pre#*xsuf", - &Pattern{ - Affix: "\x03pre\x03suf", - PadRune: 'x', - FormatWidth: 7, - Flags: PadBeforeSuffix, - }, -}, { - "pre#suf*x", - &Pattern{ - Affix: "\x03pre\x03suf", - PadRune: 'x', - FormatWidth: 7, - Flags: PadAfterSuffix, - }, -}, { - `* #0 o''clock`, - &Pattern{Affix: "\x00\x09 o\\'clock", - FormatWidth: 10, - PadRune: 32, - RoundingContext: RoundingContext{ - MinIntegerDigits: 0x1, - }, - }, -}, { - `'123'* #0'456'`, - &Pattern{Affix: "\x05'123'\x05'456'", - FormatWidth: 8, - PadRune: 32, - RoundingContext: RoundingContext{ - MinIntegerDigits: 0x1, - }, - Flags: PadAfterPrefix}, -}, { - // no duplicate padding - "*xpre#suf*x", nil, -}, { - // no duplicate padding - "*xpre#suf*x", nil, -}} - -func TestParsePattern(t *testing.T) { - for i, tc := range testCases { - t.Run(tc.pat, func(t *testing.T) { - f, err := ParsePattern(tc.pat) - if !reflect.DeepEqual(f, tc.want) { - t.Errorf("%d:%s:\ngot %#v;\nwant %#v", i, tc.pat, f, tc.want) - } - if got, want := err != nil, tc.want == nil; got != want { - t.Errorf("%d:%s:error: got %v; want %v", i, tc.pat, err, want) - } - }) - } -} - -func TestPatternSize(t *testing.T) { - if sz := unsafe.Sizeof(Pattern{}); sz > 56 { - t.Errorf("got %d; want <= 56", sz) - } - -} 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 f264ea54..00000000 --- a/vendor/golang.org/x/text/internal/number/roundingmode_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type RoundingMode"; DO NOT EDIT. - -package number - -import "fmt" - -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 fmt.Sprintf("RoundingMode(%d)", i) - } - 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 56a897b0..00000000 --- a/vendor/golang.org/x/text/internal/number/tables.go +++ /dev/null @@ -1,1211 +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 = [768]symOffset{ - // Entry 0 - 3F - 0x8000, 0x0006, 0x0014, 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, - // Entry 40 - 7F - 0x0000, 0x0000, 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, - // Entry 80 - BF - 0x0000, 0x0000, 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, - // Entry C0 - FF - 0x0000, 0x0000, 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, - // Entry 100 - 13F - 0x0006, 0x0006, 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, - // Entry 140 - 17F - 0x0001, 0x0001, 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, - // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x8052, 0x0006, 0x0006, 0x001d, 0x0006, - 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, - 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, 0x0000, 0x0023, - // Entry 1C0 - 1FF - 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, - 0x805a, 0x0000, 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0006, 0x0006, 0x805b, 0x0026, 0x805d, 0x0000, 0x0000, 0x0000, - // Entry 200 - 23F - 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, 0x0001, 0x0001, 0x0001, - // Entry 240 - 27F - 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, 0x0001, - 0x0001, 0x0001, 0x0001, 0x0001, 0x002c, 0x002c, 0x002d, 0x002d, - 0x002e, 0x002e, 0x0000, 0x0000, 0x0000, 0x002f, 0x002f, 0x0000, - // Entry 280 - 2BF - 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, - 0x8071, 0x0031, 0x0006, 0x0006, 0x0006, 0x0000, 0x0001, 0x0001, - // Entry 2C0 - 2FF - 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, 0x0036, 0x0036, 0x0036, 0x0000, 0x0000, -} // Size: 1536 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: 0xc, symIndex: 0x39, system: 0x3}, - 4: {compactTag: 0xc, symIndex: 0x2, system: 0x0}, - 5: {compactTag: 0x2a, symIndex: 0x0, system: 0x6}, - 6: {compactTag: 0x2e, symIndex: 0x5, system: 0x0}, - 7: {compactTag: 0x2e, symIndex: 0x3a, system: 0x3}, - 8: {compactTag: 0x2e, symIndex: 0x42, system: 0x4}, - 9: {compactTag: 0x42, symIndex: 0x0, system: 0x6}, - 10: {compactTag: 0x45, symIndex: 0x0, system: 0x0}, - 11: {compactTag: 0x45, symIndex: 0x4f, system: 0x37}, - 12: {compactTag: 0x48, symIndex: 0x1, system: 0x0}, - 13: {compactTag: 0x48, symIndex: 0x38, system: 0x3}, - 14: {compactTag: 0x56, symIndex: 0x0, system: 0x9}, - 15: {compactTag: 0x5f, symIndex: 0x3a, system: 0x3}, - 16: {compactTag: 0x5f, symIndex: 0x8, system: 0x0}, - 17: {compactTag: 0x62, symIndex: 0x1, system: 0x0}, - 18: {compactTag: 0x62, symIndex: 0x38, system: 0x3}, - 19: {compactTag: 0x62, symIndex: 0x42, system: 0x4}, - 20: {compactTag: 0x62, symIndex: 0x0, system: 0x5}, - 21: {compactTag: 0x62, symIndex: 0x0, system: 0x6}, - 22: {compactTag: 0x62, symIndex: 0x0, system: 0x8}, - 23: {compactTag: 0x62, symIndex: 0x0, system: 0x9}, - 24: {compactTag: 0x62, symIndex: 0x0, system: 0xa}, - 25: {compactTag: 0x62, symIndex: 0x0, system: 0xb}, - 26: {compactTag: 0x62, symIndex: 0x0, system: 0xc}, - 27: {compactTag: 0x62, symIndex: 0x0, system: 0xd}, - 28: {compactTag: 0x62, symIndex: 0x0, system: 0xe}, - 29: {compactTag: 0x62, symIndex: 0x0, system: 0xf}, - 30: {compactTag: 0x62, symIndex: 0x0, system: 0x11}, - 31: {compactTag: 0x62, symIndex: 0x0, system: 0x12}, - 32: {compactTag: 0x62, symIndex: 0x0, system: 0x13}, - 33: {compactTag: 0x62, symIndex: 0x0, system: 0x14}, - 34: {compactTag: 0x62, symIndex: 0x0, system: 0x15}, - 35: {compactTag: 0x62, symIndex: 0x0, system: 0x16}, - 36: {compactTag: 0x62, symIndex: 0x0, system: 0x17}, - 37: {compactTag: 0x62, symIndex: 0x0, system: 0x18}, - 38: {compactTag: 0x62, symIndex: 0x0, system: 0x19}, - 39: {compactTag: 0x62, symIndex: 0x0, system: 0x1f}, - 40: {compactTag: 0x62, symIndex: 0x0, system: 0x21}, - 41: {compactTag: 0x62, symIndex: 0x0, system: 0x23}, - 42: {compactTag: 0x62, symIndex: 0x0, system: 0x24}, - 43: {compactTag: 0x62, symIndex: 0x0, system: 0x25}, - 44: {compactTag: 0x62, symIndex: 0x0, system: 0x28}, - 45: {compactTag: 0x62, symIndex: 0x0, system: 0x29}, - 46: {compactTag: 0x62, symIndex: 0x0, system: 0x2a}, - 47: {compactTag: 0x62, symIndex: 0x0, system: 0x2b}, - 48: {compactTag: 0x62, symIndex: 0x0, system: 0x2c}, - 49: {compactTag: 0x62, symIndex: 0x0, system: 0x2d}, - 50: {compactTag: 0x62, symIndex: 0x0, system: 0x30}, - 51: {compactTag: 0x62, symIndex: 0x0, system: 0x31}, - 52: {compactTag: 0x62, symIndex: 0x0, system: 0x32}, - 53: {compactTag: 0x62, symIndex: 0x0, system: 0x33}, - 54: {compactTag: 0x62, symIndex: 0x0, system: 0x34}, - 55: {compactTag: 0x62, symIndex: 0x0, system: 0x35}, - 56: {compactTag: 0x62, symIndex: 0x0, system: 0x36}, - 57: {compactTag: 0x62, symIndex: 0x0, system: 0x37}, - 58: {compactTag: 0x62, symIndex: 0x0, system: 0x39}, - 59: {compactTag: 0x62, symIndex: 0x0, system: 0x43}, - 60: {compactTag: 0x66, symIndex: 0x0, system: 0x0}, - 61: {compactTag: 0x66, symIndex: 0x38, system: 0x3}, - 62: {compactTag: 0x66, symIndex: 0x42, system: 0x4}, - 63: {compactTag: 0x7e, symIndex: 0x50, system: 0x37}, - 64: {compactTag: 0x7e, symIndex: 0x0, system: 0x0}, - 65: {compactTag: 0x116, symIndex: 0x43, system: 0x4}, - 66: {compactTag: 0x116, symIndex: 0x18, system: 0x0}, - 67: {compactTag: 0x116, symIndex: 0x3b, system: 0x3}, - 68: {compactTag: 0x125, symIndex: 0x1, system: 0x0}, - 69: {compactTag: 0x125, symIndex: 0x3c, system: 0x3}, - 70: {compactTag: 0x125, symIndex: 0x44, system: 0x4}, - 71: {compactTag: 0x15a, symIndex: 0x0, system: 0x0}, - 72: {compactTag: 0x15a, symIndex: 0x3b, system: 0x3}, - 73: {compactTag: 0x15a, symIndex: 0x45, system: 0x4}, - 74: {compactTag: 0x162, symIndex: 0x0, system: 0x0}, - 75: {compactTag: 0x162, symIndex: 0x38, system: 0x3}, - 76: {compactTag: 0x16f, symIndex: 0x1b, system: 0x0}, - 77: {compactTag: 0x16f, symIndex: 0x0, system: 0x9}, - 78: {compactTag: 0x16f, symIndex: 0x0, system: 0xa}, - 79: {compactTag: 0x17e, symIndex: 0x0, system: 0x0}, - 80: {compactTag: 0x17e, symIndex: 0x3d, system: 0x3}, - 81: {compactTag: 0x17e, symIndex: 0x42, system: 0x4}, - 82: {compactTag: 0x183, symIndex: 0x6, system: 0x0}, - 83: {compactTag: 0x183, symIndex: 0x38, system: 0x3}, - 84: {compactTag: 0x1af, symIndex: 0x0, system: 0x0}, - 85: {compactTag: 0x1af, symIndex: 0x3e, system: 0x3}, - 86: {compactTag: 0x1b4, symIndex: 0x42, system: 0x4}, - 87: {compactTag: 0x1b4, symIndex: 0x1b, system: 0x0}, - 88: {compactTag: 0x1d0, symIndex: 0x42, system: 0x4}, - 89: {compactTag: 0x1d0, symIndex: 0x0, system: 0x0}, - 90: {compactTag: 0x1f0, symIndex: 0x0, system: 0xb}, - 91: {compactTag: 0x1fa, symIndex: 0x4e, system: 0x24}, - 92: {compactTag: 0x1fa, symIndex: 0x26, system: 0x0}, - 93: {compactTag: 0x1fc, symIndex: 0x42, system: 0x4}, - 94: {compactTag: 0x201, symIndex: 0x15, system: 0x0}, - 95: {compactTag: 0x201, symIndex: 0x3f, system: 0x3}, - 96: {compactTag: 0x201, symIndex: 0x46, system: 0x4}, - 97: {compactTag: 0x209, symIndex: 0x0, system: 0xb}, - 98: {compactTag: 0x20c, symIndex: 0x6, system: 0x0}, - 99: {compactTag: 0x20c, symIndex: 0x38, system: 0x3}, - 100: {compactTag: 0x20c, symIndex: 0x42, system: 0x4}, - 101: {compactTag: 0x22b, symIndex: 0x0, system: 0x0}, - 102: {compactTag: 0x22b, symIndex: 0x47, system: 0x4}, - 103: {compactTag: 0x22c, symIndex: 0x42, system: 0x4}, - 104: {compactTag: 0x22c, symIndex: 0x1b, system: 0x0}, - 105: {compactTag: 0x235, symIndex: 0x42, system: 0x4}, - 106: {compactTag: 0x235, symIndex: 0x28, system: 0x0}, - 107: {compactTag: 0x262, symIndex: 0x38, system: 0x3}, - 108: {compactTag: 0x262, symIndex: 0x0, system: 0x0}, - 109: {compactTag: 0x299, symIndex: 0x22, system: 0x0}, - 110: {compactTag: 0x299, symIndex: 0x40, system: 0x3}, - 111: {compactTag: 0x299, symIndex: 0x48, system: 0x4}, - 112: {compactTag: 0x299, symIndex: 0x4d, system: 0xc}, - 113: {compactTag: 0x2b8, symIndex: 0x31, system: 0x0}, - 114: {compactTag: 0x2b8, symIndex: 0x3e, system: 0x3}, - 115: {compactTag: 0x2b8, symIndex: 0x42, system: 0x4}, - 116: {compactTag: 0x2c8, symIndex: 0x1b, system: 0x0}, - 117: {compactTag: 0x2c8, symIndex: 0x49, system: 0x4}, - 118: {compactTag: 0x2c9, symIndex: 0x49, system: 0x4}, - 119: {compactTag: 0x2cb, symIndex: 0x33, system: 0x0}, - 120: {compactTag: 0x2cb, symIndex: 0x4a, system: 0x4}, - 121: {compactTag: 0x2cc, symIndex: 0x42, system: 0x4}, - 122: {compactTag: 0x2cc, symIndex: 0x28, system: 0x0}, - 123: {compactTag: 0x2ce, symIndex: 0x34, system: 0x0}, - 124: {compactTag: 0x2ce, symIndex: 0x4b, system: 0x4}, - 125: {compactTag: 0x2f4, symIndex: 0x0, system: 0x0}, - 126: {compactTag: 0x2f4, symIndex: 0x38, system: 0x3}, - 127: {compactTag: 0x2f4, symIndex: 0x42, system: 0x4}, - 128: {compactTag: 0x2fa, symIndex: 0x36, system: 0x0}, - 129: {compactTag: 0x2fa, symIndex: 0x41, system: 0x3}, - 130: {compactTag: 0x2fa, symIndex: 0x4c, system: 0x4}, -} // Size: 810 bytes - -var tagToDecimal = []uint8{ // 768 elements - // Entry 0 - 3F - 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 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, - // Entry 40 - 7F - 0x01, 0x01, 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, - // 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, 0x01, 0x01, 0x05, 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, - 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, - // 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, 0x05, 0x05, 0x05, 0x05, 0x01, 0x01, - 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, 0x05, 0x05, 0x01, 0x01, - 0x05, 0x05, 0x01, 0x01, 0x01, 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, 0x05, 0x05, - 0x01, 0x01, 0x01, 0x05, 0x01, 0x01, 0x05, 0x05, - 0x01, 0x01, 0x01, 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, 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, - // 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, -} // Size: 792 bytes - -var tagToScientific = []uint8{ // 768 elements - // Entry 0 - 3F - 0x02, 0x02, 0x09, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 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, - 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, - // 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, 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, - 0x0c, 0x0c, 0x02, 0x02, 0x02, 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, 0x0c, 0x02, 0x02, 0x0c, 0x0c, - 0x02, 0x02, 0x02, 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, 0x0d, 0x0d, 0x02, 0x02, - 0x02, 0x02, 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, -} // Size: 792 bytes - -var tagToPercent = []uint8{ // 768 elements - // Entry 0 - 3F - 0x04, 0x04, 0x0a, 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, - // Entry 40 - 7F - 0x04, 0x04, 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, - // Entry 80 - BF - 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, 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, - // 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, 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, - // Entry 100 - 13F - 0x03, 0x03, 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, - // Entry 140 - 17F - 0x03, 0x03, 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, - // 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, 0x03, - 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, - 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, - // Entry 1C0 - 1FF - 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, 0x04, 0x04, - // Entry 200 - 23F - 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, 0x04, 0x04, 0x04, - // Entry 240 - 27F - 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, 0x03, 0x03, - 0x03, 0x03, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, - // Entry 280 - 2BF - 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, 0x0e, 0x0e, 0x0e, 0x04, 0x03, 0x03, - // Entry 2C0 - 2FF - 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, 0x04, 0x04, 0x04, 0x04, 0x04, -} // Size: 792 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 8599 bytes (8KiB); checksum: F01E770E diff --git a/vendor/golang.org/x/text/internal/number/tables_test.go b/vendor/golang.org/x/text/internal/number/tables_test.go deleted file mode 100644 index 054e23d2..00000000 --- a/vendor/golang.org/x/text/internal/number/tables_test.go +++ /dev/null @@ -1,125 +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 number - -import ( - "flag" - "log" - "reflect" - "testing" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -var draft = flag.String("draft", - "contributed", - `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) - -func TestNumberSystems(t *testing.T) { - testtext.SkipIfNotLong(t) - - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("supplemental") - d.SetSectionFilter("numberingSystem") - data, err := d.DecodeZip(r) - if err != nil { - t.Fatalf("DecodeZip: %v", err) - } - - for _, ns := range data.Supplemental().NumberingSystems.NumberingSystem { - n := systemMap[ns.Id] - if int(n) >= len(numSysData) { - continue - } - info := InfoFromLangID(0, ns.Id) - val := '0' - for _, rWant := range ns.Digits { - if rGot := info.Digit(val); rGot != rWant { - t.Errorf("%s:%d: got %U; want %U", ns.Id, val, rGot, rWant) - } - val++ - } - } -} - -func TestSymbols(t *testing.T) { - testtext.SkipIfNotLong(t) - - draft, err := cldr.ParseDraft(*draft) - if err != nil { - log.Fatalf("invalid draft level: %v", err) - } - - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("main") - d.SetSectionFilter("numbers") - data, err := d.DecodeZip(r) - if err != nil { - t.Fatalf("DecodeZip: %v", err) - } - - for _, lang := range data.Locales() { - ldml := data.RawLDML(lang) - if ldml.Numbers == nil { - continue - } - langIndex, ok := language.CompactIndex(language.MustParse(lang)) - if !ok { - t.Fatalf("No compact index for language %s", lang) - } - - syms := cldr.MakeSlice(&ldml.Numbers.Symbols) - syms.SelectDraft(draft) - - for _, sym := range ldml.Numbers.Symbols { - if sym.NumberSystem == "" { - continue - } - testCases := []struct { - name string - st SymbolType - x interface{} - }{ - {"Decimal", SymDecimal, sym.Decimal}, - {"Group", SymGroup, sym.Group}, - {"List", SymList, sym.List}, - {"PercentSign", SymPercentSign, sym.PercentSign}, - {"PlusSign", SymPlusSign, sym.PlusSign}, - {"MinusSign", SymMinusSign, sym.MinusSign}, - {"Exponential", SymExponential, sym.Exponential}, - {"SuperscriptingExponent", SymSuperscriptingExponent, sym.SuperscriptingExponent}, - {"PerMille", SymPerMille, sym.PerMille}, - {"Infinity", SymInfinity, sym.Infinity}, - {"NaN", SymNan, sym.Nan}, - {"TimeSeparator", SymTimeSeparator, sym.TimeSeparator}, - } - info := InfoFromLangID(langIndex, sym.NumberSystem) - for _, tc := range testCases { - // Extract the wanted value. - v := reflect.ValueOf(tc.x) - if v.Len() == 0 { - return - } - if v.Len() > 1 { - t.Fatalf("Multiple values of %q within single symbol not supported.", tc.name) - } - want := v.Index(0).MethodByName("Data").Call(nil)[0].String() - got := info.Symbol(tc.st) - if got != want { - t.Errorf("%s:%s:%s: got %q; want %q", lang, sym.NumberSystem, tc.name, got, want) - } - } - } - } -} 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 bb2fffbc..00000000 --- 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/stringset/set_test.go b/vendor/golang.org/x/text/internal/stringset/set_test.go deleted file mode 100644 index 97b9e58b..00000000 --- a/vendor/golang.org/x/text/internal/stringset/set_test.go +++ /dev/null @@ -1,53 +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 - -import "testing" - -func TestStringSet(t *testing.T) { - testCases := [][]string{ - {""}, - {"∫"}, - {"a", "b", "c"}, - {"", "a", "bb", "ccc"}, - {" ", "aaa", "bb", "c"}, - } - test := func(tc int, b *Builder) { - set := b.Set() - if set.Len() != len(testCases[tc]) { - t.Errorf("%d:Len() = %d; want %d", tc, set.Len(), len(testCases[tc])) - } - for i, s := range testCases[tc] { - if x := b.Index(s); x != i { - t.Errorf("%d:Index(%q) = %d; want %d", tc, s, x, i) - } - if p := Search(&set, s); p != i { - t.Errorf("%d:Search(%q) = %d; want %d", tc, s, p, i) - } - if set.Elem(i) != s { - t.Errorf("%d:Elem(%d) = %s; want %s", tc, i, set.Elem(i), s) - } - } - if p := Search(&set, "apple"); p != -1 { - t.Errorf(`%d:Search("apple") = %d; want -1`, tc, p) - } - } - for i, tc := range testCases { - b := NewBuilder() - for _, s := range tc { - b.Add(s) - } - b.Add(tc...) - test(i, b) - } - for i, tc := range testCases { - b := NewBuilder() - b.Add(tc...) - for _, s := range tc { - b.Add(s) - } - test(i, b) - } -} diff --git a/vendor/golang.org/x/text/internal/tables.go b/vendor/golang.org/x/text/internal/tables.go deleted file mode 100644 index 85991d3d..00000000 --- a/vendor/golang.org/x/text/internal/tables.go +++ /dev/null @@ -1,118 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package internal - -// Parent maps a compact index of a tag to the compact index of the parent of -// this tag. -var Parent = []uint16{ // 768 elements - // Entry 0 - 3F - 0x0000, 0x0053, 0x00e8, 0x0000, 0x0003, 0x0003, 0x0000, 0x0006, - 0x0000, 0x0008, 0x0000, 0x000a, 0x0000, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x0000, 0x0000, 0x002a, 0x0000, 0x002c, 0x0000, 0x002e, - 0x0000, 0x0000, 0x0031, 0x0030, 0x0030, 0x0000, 0x0035, 0x0000, - 0x0037, 0x0000, 0x0039, 0x0000, 0x003b, 0x0000, 0x003d, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0040, 0x0000, 0x0042, 0x0042, 0x0000, 0x0045, 0x0045, - 0x0000, 0x0048, 0x0000, 0x004a, 0x0000, 0x0000, 0x004d, 0x004c, - 0x004c, 0x0000, 0x0051, 0x0051, 0x0051, 0x0051, 0x0000, 0x0056, - 0x0056, 0x0000, 0x0059, 0x0000, 0x005b, 0x0000, 0x005d, 0x0000, - 0x005f, 0x005f, 0x0000, 0x0062, 0x0000, 0x0064, 0x0000, 0x0066, - 0x0000, 0x0068, 0x0068, 0x0000, 0x006b, 0x0000, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x0000, 0x0075, 0x0000, - 0x0077, 0x0000, 0x0079, 0x0000, 0x0000, 0x007c, 0x0000, 0x007e, - // Entry 80 - BF - 0x0000, 0x0080, 0x0000, 0x0082, 0x0082, 0x0000, 0x0085, 0x0085, - 0x0000, 0x0088, 0x0089, 0x0089, 0x0089, 0x0088, 0x008a, 0x0089, - 0x0089, 0x0089, 0x0088, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x008a, 0x0089, 0x0089, 0x0089, 0x0089, 0x008a, 0x0089, - 0x008a, 0x0089, 0x0089, 0x008a, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0088, 0x0089, 0x0089, - 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0088, - // Entry C0 - FF - 0x0089, 0x0088, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x0089, 0x008a, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x0089, 0x0088, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - 0x008a, 0x0089, 0x0089, 0x008a, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0088, - 0x0088, 0x0089, 0x0089, 0x0088, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x0000, 0x00f1, 0x0000, 0x00f3, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f3, 0x00f4, - // Entry 100 - 13F - 0x00f3, 0x00f3, 0x00f4, 0x00f4, 0x00f3, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f3, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x0000, 0x0110, 0x0000, 0x0112, 0x0000, 0x0114, 0x0000, 0x0116, - 0x0116, 0x0000, 0x0119, 0x0119, 0x0119, 0x0119, 0x0000, 0x011e, - 0x0000, 0x0120, 0x0000, 0x0122, 0x0122, 0x0000, 0x0125, 0x0125, - 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, - 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, - 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, - // Entry 140 - 17F - 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, - 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, - 0x0125, 0x0125, 0x0125, 0x0125, 0x0000, 0x0154, 0x0000, 0x0156, - 0x0000, 0x0158, 0x0000, 0x015a, 0x0000, 0x015c, 0x0000, 0x015e, - 0x015e, 0x015e, 0x0000, 0x0162, 0x0000, 0x0000, 0x0165, 0x0000, - 0x0167, 0x0000, 0x0169, 0x0169, 0x0169, 0x0000, 0x016d, 0x0000, - 0x016f, 0x0000, 0x0171, 0x0000, 0x0173, 0x0173, 0x0000, 0x0176, - 0x0000, 0x0178, 0x0000, 0x017a, 0x0000, 0x017c, 0x0000, 0x017e, - // Entry 180 - 1BF - 0x0000, 0x0180, 0x0000, 0x0000, 0x0183, 0x0000, 0x0185, 0x0185, - 0x0185, 0x0185, 0x0000, 0x0000, 0x018b, 0x0000, 0x0000, 0x018e, - 0x0000, 0x0190, 0x0000, 0x0000, 0x0193, 0x0000, 0x0195, 0x0000, - 0x0000, 0x0198, 0x0000, 0x0000, 0x019b, 0x0000, 0x019d, 0x0000, - 0x019f, 0x0000, 0x01a1, 0x0000, 0x01a3, 0x0000, 0x01a5, 0x0000, - 0x01a7, 0x0000, 0x01a9, 0x0000, 0x01ab, 0x0000, 0x01ad, 0x0000, - 0x01af, 0x01af, 0x0000, 0x01b2, 0x0000, 0x01b4, 0x0000, 0x01b6, - 0x0000, 0x01b8, 0x0000, 0x01ba, 0x0000, 0x0000, 0x01bd, 0x0000, - // Entry 1C0 - 1FF - 0x01bf, 0x0000, 0x01c1, 0x0000, 0x01c3, 0x0000, 0x01c5, 0x0000, - 0x01c7, 0x0000, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x0000, 0x01ce, - 0x0000, 0x01d0, 0x01d0, 0x0000, 0x01d3, 0x0000, 0x01d5, 0x0000, - 0x01d7, 0x0000, 0x01d9, 0x0000, 0x01db, 0x0000, 0x01dd, 0x01dd, - 0x0000, 0x01e0, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6, - 0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x0000, 0x01ee, - 0x0000, 0x01f0, 0x0000, 0x01f2, 0x01f2, 0x01f2, 0x0000, 0x01f6, - 0x0000, 0x01f8, 0x0000, 0x01fa, 0x0000, 0x01fc, 0x0000, 0x0000, - // Entry 200 - 23F - 0x01ff, 0x0000, 0x0201, 0x0201, 0x0000, 0x0204, 0x0000, 0x0206, - 0x0206, 0x0000, 0x0209, 0x0209, 0x0000, 0x020c, 0x020c, 0x020c, - 0x020c, 0x020c, 0x020c, 0x020c, 0x0000, 0x0214, 0x0000, 0x0216, - 0x0000, 0x0218, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x021e, - 0x0000, 0x0000, 0x0221, 0x0000, 0x0223, 0x0223, 0x0000, 0x0226, - 0x0000, 0x0228, 0x0228, 0x0000, 0x0000, 0x022c, 0x022b, 0x022b, - 0x0000, 0x0000, 0x0231, 0x0000, 0x0233, 0x0000, 0x0235, 0x0000, - 0x0241, 0x0237, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, - // Entry 240 - 27F - 0x0241, 0x0237, 0x0241, 0x0241, 0x0000, 0x0244, 0x0244, 0x0244, - 0x0000, 0x0248, 0x0000, 0x024a, 0x0000, 0x024c, 0x024c, 0x0000, - 0x024f, 0x0000, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, - 0x0000, 0x0258, 0x0000, 0x025a, 0x0000, 0x025c, 0x0000, 0x025e, - 0x0000, 0x0260, 0x0000, 0x0262, 0x0000, 0x0000, 0x0265, 0x0265, - 0x0265, 0x0000, 0x0269, 0x0000, 0x026b, 0x0000, 0x026d, 0x0000, - 0x0000, 0x0270, 0x026f, 0x026f, 0x0000, 0x0274, 0x0000, 0x0276, - 0x0000, 0x0278, 0x0000, 0x0000, 0x0000, 0x0000, 0x027d, 0x0000, - // Entry 280 - 2BF - 0x0000, 0x0280, 0x0000, 0x0282, 0x0282, 0x0282, 0x0282, 0x0000, - 0x0287, 0x0287, 0x0287, 0x0000, 0x028b, 0x028b, 0x028b, 0x028b, - 0x028b, 0x0000, 0x0291, 0x0291, 0x0291, 0x0291, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0299, 0x0299, 0x0299, 0x0000, 0x029d, 0x029d, - 0x029d, 0x029d, 0x0000, 0x0000, 0x02a3, 0x02a3, 0x02a3, 0x02a3, - 0x0000, 0x02a8, 0x0000, 0x02aa, 0x02aa, 0x0000, 0x02ad, 0x0000, - 0x02af, 0x0000, 0x02b1, 0x02b1, 0x0000, 0x0000, 0x02b5, 0x0000, - 0x0000, 0x02b8, 0x0000, 0x02ba, 0x02ba, 0x0000, 0x0000, 0x02be, - // Entry 2C0 - 2FF - 0x0000, 0x02c0, 0x0000, 0x02c2, 0x0000, 0x02c4, 0x0000, 0x02c6, - 0x0000, 0x02c8, 0x02c8, 0x0000, 0x0000, 0x02cc, 0x0000, 0x02ce, - 0x02cb, 0x02cb, 0x0000, 0x0000, 0x02d3, 0x02d2, 0x02d2, 0x0000, - 0x0000, 0x02d8, 0x0000, 0x02da, 0x0000, 0x02dc, 0x0000, 0x0000, - 0x02df, 0x0000, 0x02e1, 0x0000, 0x0000, 0x02e4, 0x0000, 0x02e6, - 0x0000, 0x02e8, 0x0000, 0x02ea, 0x02ea, 0x0000, 0x0000, 0x02ee, - 0x02ed, 0x02ed, 0x0000, 0x02f2, 0x0000, 0x02f4, 0x02f4, 0x02f4, - 0x02f4, 0x02f4, 0x0000, 0x02fa, 0x02fb, 0x02fa, 0x0000, 0x02fe, -} // Size: 1560 bytes - -// Total table size 1560 bytes (1KiB); checksum: 4897681C diff --git a/vendor/golang.org/x/text/internal/tag/tag_test.go b/vendor/golang.org/x/text/internal/tag/tag_test.go deleted file mode 100644 index da174a24..00000000 --- a/vendor/golang.org/x/text/internal/tag/tag_test.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 tag - -import ( - "strings" - "testing" -) - -var strdata = []string{ - "aa ", - "aaa ", - "aaaa", - "aaab", - "aab ", - "ab ", - "ba ", - "xxxx", - "\xff\xff\xff\xff", -} - -var testCases = map[string]int{ - "a": 0, - "aa": 0, - "aaa": 1, - "aa ": 0, - "aaaa": 2, - "aaab": 3, - "b": 6, - "ba": 6, - " ": -1, - "aaax": -1, - "bbbb": -1, - "zzzz": -1, -} - -func TestIndex(t *testing.T) { - index := Index(strings.Join(strdata, "")) - for k, v := range testCases { - if i := index.Index([]byte(k)); i != v { - t.Errorf("%s: got %d; want %d", k, i, v) - } - } -} - -func TestFixCase(t *testing.T) { - tests := []string{ - "aaaa", "AbCD", "abcd", - "Zzzz", "AbCD", "Abcd", - "Zzzz", "AbC", "", - "XXX", "ab ", "", - "XXX", "usd", "USD", - "cmn", "AB ", "", - "gsw", "CMN", "cmn", - } - for tc := tests; len(tc) > 0; tc = tc[3:] { - b := []byte(tc[1]) - if !FixCase(tc[0], b) { - b = nil - } - if string(b) != tc[2] { - t.Errorf("FixCase(%q, %q) = %q; want %q", tc[0], tc[1], b, tc[2]) - } - } -} diff --git a/vendor/golang.org/x/text/internal/testtext/codesize.go b/vendor/golang.org/x/text/internal/testtext/codesize.go deleted file mode 100644 index 5fc5eaec..00000000 --- a/vendor/golang.org/x/text/internal/testtext/codesize.go +++ /dev/null @@ -1,53 +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 testtext - -import ( - "bytes" - "fmt" - "io/ioutil" - "os" - "os/exec" - "path/filepath" - "runtime" -) - -// CodeSize builds the given code sample and returns the binary size or en error -// if an error occurred. The code sample typically will look like this: -// package main -// import "golang.org/x/text/somepackage" -// func main() { -// somepackage.Func() // reference Func to cause it to be linked in. -// } -// See dict_test.go in the display package for an example. -func CodeSize(s string) (int, error) { - // Write the file. - tmpdir, err := ioutil.TempDir(os.TempDir(), "testtext") - if err != nil { - return 0, fmt.Errorf("testtext: failed to create tmpdir: %v", err) - } - defer os.RemoveAll(tmpdir) - filename := filepath.Join(tmpdir, "main.go") - if err := ioutil.WriteFile(filename, []byte(s), 0644); err != nil { - return 0, fmt.Errorf("testtext: failed to write main.go: %v", err) - } - - // Build the binary. - w := &bytes.Buffer{} - cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), "build", "-o", "main") - cmd.Dir = tmpdir - cmd.Stderr = w - cmd.Stdout = w - if err := cmd.Run(); err != nil { - return 0, fmt.Errorf("testtext: failed to execute command: %v\nmain.go:\n%vErrors:%s", err, s, w) - } - - // Determine the size. - fi, err := os.Stat(filepath.Join(tmpdir, "main")) - if err != nil { - return 0, fmt.Errorf("testtext: failed to get file info: %v", err) - } - return int(fi.Size()), nil -} diff --git a/vendor/golang.org/x/text/internal/testtext/flag.go b/vendor/golang.org/x/text/internal/testtext/flag.go deleted file mode 100644 index 45b32b2a..00000000 --- a/vendor/golang.org/x/text/internal/testtext/flag.go +++ /dev/null @@ -1,22 +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 testtext - -import ( - "flag" - "testing" - - "golang.org/x/text/internal/gen" -) - -var long = flag.Bool("long", false, - "run tests that require fetching data online") - -// SkipIfNotLong returns whether long tests should be performed. -func SkipIfNotLong(t *testing.T) { - if testing.Short() || !(gen.IsLocal() || *long) { - t.Skip("skipping test to prevent downloading; to run use -long or use -local or UNICODE_DIR to specify a local source") - } -} diff --git a/vendor/golang.org/x/text/internal/testtext/gc.go b/vendor/golang.org/x/text/internal/testtext/gc.go deleted file mode 100644 index a54e1bcb..00000000 --- a/vendor/golang.org/x/text/internal/testtext/gc.go +++ /dev/null @@ -1,14 +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. - -// +build !gccgo - -package testtext - -import "testing" - -// AllocsPerRun wraps testing.AllocsPerRun. -func AllocsPerRun(runs int, f func()) (avg float64) { - return testing.AllocsPerRun(runs, f) -} diff --git a/vendor/golang.org/x/text/internal/testtext/gccgo.go b/vendor/golang.org/x/text/internal/testtext/gccgo.go deleted file mode 100644 index 30e98eff..00000000 --- a/vendor/golang.org/x/text/internal/testtext/gccgo.go +++ /dev/null @@ -1,11 +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. - -// +build gccgo - -package testtext - -// AllocsPerRun always returns 0 for gccgo until gccgo implements escape -// analysis equal or better to that of gc. -func AllocsPerRun(runs int, f func()) (avg float64) { return 0 } diff --git a/vendor/golang.org/x/text/internal/testtext/go1_6.go b/vendor/golang.org/x/text/internal/testtext/go1_6.go deleted file mode 100644 index 7b238473..00000000 --- a/vendor/golang.org/x/text/internal/testtext/go1_6.go +++ /dev/null @@ -1,23 +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. - -// +build !go1.7 - -package testtext - -import "testing" - -func Run(t *testing.T, name string, fn func(t *testing.T)) bool { - t.Logf("Running %s...", name) - fn(t) - return t.Failed() -} - -// Bench runs the given benchmark function. This pre-1.7 implementation renders -// the measurement useless, but allows the code to be compiled at least. -func Bench(b *testing.B, name string, fn func(b *testing.B)) bool { - b.Logf("Running %s...", name) - fn(b) - return b.Failed() -} diff --git a/vendor/golang.org/x/text/internal/testtext/go1_7.go b/vendor/golang.org/x/text/internal/testtext/go1_7.go deleted file mode 100644 index 66f9cf78..00000000 --- a/vendor/golang.org/x/text/internal/testtext/go1_7.go +++ /dev/null @@ -1,17 +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. - -// +build go1.7 - -package testtext - -import "testing" - -func Run(t *testing.T, name string, fn func(t *testing.T)) bool { - return t.Run(name, fn) -} - -func Bench(b *testing.B, name string, fn func(b *testing.B)) bool { - return b.Run(name, fn) -} diff --git a/vendor/golang.org/x/text/internal/testtext/text.go b/vendor/golang.org/x/text/internal/testtext/text.go deleted file mode 100644 index ce40d7e7..00000000 --- a/vendor/golang.org/x/text/internal/testtext/text.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 testtext contains test data that is of common use to the text -// repository. -package testtext // import "golang.org/x/text/internal/testtext" - -const ( - - // ASCII is an ASCII string containing all letters in the English alphabet. - ASCII = "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " + - "The quick brown fox jumps over the lazy dog. " - - // Vietnamese is a snippet from http://creativecommons.org/licenses/by-sa/3.0/vn/ - Vietnamese = `Với các điều kiện sau: Ghi nhận công của tác giả. -Nếu bạn sử dụng, chuyển đổi, hoặc xây dựng dự án từ -nội dung được chia sẻ này, bạn phải áp dụng giấy phép này hoặc -một giấy phép khác có các điều khoản tương tự như giấy phép này -cho dự án của bạn. Hiểu rằng: Miễn — Bất kỳ các điều kiện nào -trên đây cũng có thể được miễn bỏ nếu bạn được sự cho phép của -người sở hữu bản quyền. Phạm vi công chúng — Khi tác phẩm hoặc -bất kỳ chương nào của tác phẩm đã trong vùng dành cho công -chúng theo quy định của pháp luật thì tình trạng của nó không -bị ảnh hưởng bởi giấy phép trong bất kỳ trường hợp nào.` - - // Russian is a snippet from http://creativecommons.org/licenses/by-sa/1.0/deed.ru - Russian = `При обязательном соблюдении следующих условий: -Attribution — Вы должны атрибутировать произведение (указывать -автора и источник) в порядке, предусмотренном автором или -лицензиаром (но только так, чтобы никоим образом не подразумевалось, -что они поддерживают вас или использование вами данного произведения). -Υπό τις ακόλουθες προϋποθέσεις:` - - // Greek is a snippet from http://creativecommons.org/licenses/by-sa/3.0/gr/ - Greek = `Αναφορά Δημιουργού — Θα πρέπει να κάνετε την αναφορά στο έργο με τον -τρόπο που έχει οριστεί από το δημιουργό ή το χορηγούντο την άδεια -(χωρίς όμως να εννοείται με οποιονδήποτε τρόπο ότι εγκρίνουν εσάς ή -τη χρήση του έργου από εσάς). Παρόμοια Διανομή — Εάν αλλοιώσετε, -τροποποιήσετε ή δημιουργήσετε περαιτέρω βασισμένοι στο έργο θα -μπορείτε να διανέμετε το έργο που θα προκύψει μόνο με την ίδια ή -παρόμοια άδεια.` - - // Arabic is a snippet from http://creativecommons.org/licenses/by-sa/3.0/deed.ar - Arabic = `بموجب الشروط التالية نسب المصنف — يجب عليك أن -تنسب العمل بالطريقة التي تحددها المؤلف أو المرخص (ولكن ليس بأي حال من -الأحوال أن توحي وتقترح بتحول أو استخدامك للعمل). -المشاركة على قدم المساواة — إذا كنت يعدل ، والتغيير ، أو الاستفادة -من هذا العمل ، قد ينتج عن توزيع العمل إلا في ظل تشابه او تطابق فى واحد -لهذا الترخيص.` - - // Hebrew is a snippet from http://creativecommons.org/licenses/by-sa/1.0/il/ - Hebrew = `בכפוף לתנאים הבאים: ייחוס — עליך לייחס את היצירה (לתת קרדיט) באופן -המצויין על-ידי היוצר או מעניק הרישיון (אך לא בשום אופן המרמז על כך -שהם תומכים בך או בשימוש שלך ביצירה). שיתוף זהה — אם תחליט/י לשנות, -לעבד או ליצור יצירה נגזרת בהסתמך על יצירה זו, תוכל/י להפיץ את יצירתך -החדשה רק תחת אותו הרישיון או רישיון דומה לרישיון זה.` - - TwoByteUTF8 = Russian + Greek + Arabic + Hebrew - - // Thai is a snippet from http://creativecommons.org/licenses/by-sa/3.0/th/ - Thai = `ภายใต้เงื่อนไข ดังต่อไปนี้ : แสดงที่มา — คุณต้องแสดงที่ -มาของงานดังกล่าว ตามรูปแบบที่ผู้สร้างสรรค์หรือผู้อนุญาตกำหนด (แต่ -ไม่ใช่ในลักษณะที่ว่า พวกเขาสนับสนุนคุณหรือสนับสนุนการที่ -คุณนำงานไปใช้) อนุญาตแบบเดียวกัน — หากคุณดัดแปลง เปลี่ยนรูป หรื -อต่อเติมงานนี้ คุณต้องใช้สัญญาอนุญาตแบบเดียวกันหรือแบบที่เหมื -อนกับสัญญาอนุญาตที่ใช้กับงานนี้เท่านั้น` - - ThreeByteUTF8 = Thai - - // Japanese is a snippet from http://creativecommons.org/licenses/by-sa/2.0/jp/ - Japanese = `あなたの従うべき条件は以下の通りです。 -表示 — あなたは原著作者のクレジットを表示しなければなりません。 -継承 — もしあなたがこの作品を改変、変形または加工した場合、 -あなたはその結果生じた作品をこの作品と同一の許諾条件の下でのみ -頒布することができます。` - - // Chinese is a snippet from http://creativecommons.org/licenses/by-sa/2.5/cn/ - Chinese = `您可以自由: 复制、发行、展览、表演、放映、 -广播或通过信息网络传播本作品 创作演绎作品 -对本作品进行商业性使用 惟须遵守下列条件: -署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。 -相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作, -您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。` - - // Korean is a snippet from http://creativecommons.org/licenses/by-sa/2.0/kr/ - Korean = `다음과 같은 조건을 따라야 합니다: 저작자표시 -— 저작자나 이용허락자가 정한 방법으로 저작물의 -원저작자를 표시하여야 합니다(그러나 원저작자가 이용자나 이용자의 -이용을 보증하거나 추천한다는 의미로 표시해서는 안됩니다). -동일조건변경허락 — 이 저작물을 이용하여 만든 이차적 저작물에는 본 -라이선스와 동일한 라이선스를 적용해야 합니다.` - - CJK = Chinese + Japanese + Korean - - All = ASCII + Vietnamese + TwoByteUTF8 + ThreeByteUTF8 + CJK -) diff --git a/vendor/golang.org/x/text/internal/triegen/data_test.go b/vendor/golang.org/x/text/internal/triegen/data_test.go deleted file mode 100644 index 91de547a..00000000 --- a/vendor/golang.org/x/text/internal/triegen/data_test.go +++ /dev/null @@ -1,875 +0,0 @@ -// This file is generated with "go test -tags generate". DO NOT EDIT! -// +build !generate - -package triegen_test - -// 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 *randTrie) lookup(s []byte) (v uint8, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return randValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := randIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := randIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = randIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := randIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = randIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = randIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *randTrie) lookupUnsafe(s []byte) uint8 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return randValues[c0] - } - i := randIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = randIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = randIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *randTrie) lookupString(s string) (v uint8, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return randValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := randIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := randIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = randIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := randIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = randIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = randIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *randTrie) lookupStringUnsafe(s string) uint8 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return randValues[c0] - } - i := randIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = randIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = randIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// randTrie. Total size: 9280 bytes (9.06 KiB). Checksum: 6debd324a8debb8f. -type randTrie struct{} - -func newRandTrie(i int) *randTrie { - return &randTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *randTrie) lookupValue(n uint32, b byte) uint8 { - switch { - default: - return uint8(randValues[n<<6+uint32(b)]) - } -} - -// randValues: 56 blocks, 3584 entries, 3584 bytes -// The third block is the zero block. -var randValues = [3584]uint8{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc9: 0x0001, - // Block 0x4, offset 0x100 - 0x100: 0x0001, - // Block 0x5, offset 0x140 - 0x155: 0x0001, - // Block 0x6, offset 0x180 - 0x196: 0x0001, - // Block 0x7, offset 0x1c0 - 0x1ef: 0x0001, - // Block 0x8, offset 0x200 - 0x206: 0x0001, - // Block 0x9, offset 0x240 - 0x258: 0x0001, - // Block 0xa, offset 0x280 - 0x288: 0x0001, - // Block 0xb, offset 0x2c0 - 0x2f2: 0x0001, - // Block 0xc, offset 0x300 - 0x304: 0x0001, - // Block 0xd, offset 0x340 - 0x34b: 0x0001, - // Block 0xe, offset 0x380 - 0x3ba: 0x0001, - // Block 0xf, offset 0x3c0 - 0x3f5: 0x0001, - // Block 0x10, offset 0x400 - 0x41d: 0x0001, - // Block 0x11, offset 0x440 - 0x442: 0x0001, - // Block 0x12, offset 0x480 - 0x4bb: 0x0001, - // Block 0x13, offset 0x4c0 - 0x4e9: 0x0001, - // Block 0x14, offset 0x500 - 0x53e: 0x0001, - // Block 0x15, offset 0x540 - 0x55f: 0x0001, - // Block 0x16, offset 0x580 - 0x5b7: 0x0001, - // Block 0x17, offset 0x5c0 - 0x5d9: 0x0001, - // Block 0x18, offset 0x600 - 0x60e: 0x0001, - // Block 0x19, offset 0x640 - 0x652: 0x0001, - // Block 0x1a, offset 0x680 - 0x68f: 0x0001, - // Block 0x1b, offset 0x6c0 - 0x6dc: 0x0001, - // Block 0x1c, offset 0x700 - 0x703: 0x0001, - // Block 0x1d, offset 0x740 - 0x741: 0x0001, - // Block 0x1e, offset 0x780 - 0x79b: 0x0001, - // Block 0x1f, offset 0x7c0 - 0x7f1: 0x0001, - // Block 0x20, offset 0x800 - 0x833: 0x0001, - // Block 0x21, offset 0x840 - 0x853: 0x0001, - // Block 0x22, offset 0x880 - 0x8a2: 0x0001, - // Block 0x23, offset 0x8c0 - 0x8f8: 0x0001, - // Block 0x24, offset 0x900 - 0x917: 0x0001, - // Block 0x25, offset 0x940 - 0x945: 0x0001, - // Block 0x26, offset 0x980 - 0x99e: 0x0001, - // Block 0x27, offset 0x9c0 - 0x9fd: 0x0001, - // Block 0x28, offset 0xa00 - 0xa0d: 0x0001, - // Block 0x29, offset 0xa40 - 0xa66: 0x0001, - // Block 0x2a, offset 0xa80 - 0xaab: 0x0001, - // Block 0x2b, offset 0xac0 - 0xaea: 0x0001, - // Block 0x2c, offset 0xb00 - 0xb2d: 0x0001, - // Block 0x2d, offset 0xb40 - 0xb54: 0x0001, - // Block 0x2e, offset 0xb80 - 0xb90: 0x0001, - // Block 0x2f, offset 0xbc0 - 0xbe5: 0x0001, - // Block 0x30, offset 0xc00 - 0xc28: 0x0001, - // Block 0x31, offset 0xc40 - 0xc7c: 0x0001, - // Block 0x32, offset 0xc80 - 0xcbf: 0x0001, - // Block 0x33, offset 0xcc0 - 0xcc7: 0x0001, - // Block 0x34, offset 0xd00 - 0xd34: 0x0001, - // Block 0x35, offset 0xd40 - 0xd61: 0x0001, - // Block 0x36, offset 0xd80 - 0xdb9: 0x0001, - // Block 0x37, offset 0xdc0 - 0xdda: 0x0001, -} - -// randIndex: 89 blocks, 5696 entries, 5696 bytes -// Block 0 is the zero block. -var randIndex = [5696]uint8{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xe1: 0x02, 0xe3: 0x03, 0xe4: 0x04, - 0xea: 0x05, 0xeb: 0x06, 0xec: 0x07, - 0xf0: 0x10, 0xf1: 0x24, 0xf2: 0x3d, 0xf3: 0x4f, 0xf4: 0x56, - // Block 0x4, offset 0x100 - 0x107: 0x01, - // Block 0x5, offset 0x140 - 0x16c: 0x02, - // Block 0x6, offset 0x180 - 0x19c: 0x03, - 0x1ae: 0x04, - // Block 0x7, offset 0x1c0 - 0x1d8: 0x05, - 0x1f7: 0x06, - // Block 0x8, offset 0x200 - 0x20c: 0x07, - // Block 0x9, offset 0x240 - 0x24a: 0x08, - // Block 0xa, offset 0x280 - 0x2b6: 0x09, - // Block 0xb, offset 0x2c0 - 0x2d5: 0x0a, - // Block 0xc, offset 0x300 - 0x31a: 0x0b, - // Block 0xd, offset 0x340 - 0x373: 0x0c, - // Block 0xe, offset 0x380 - 0x38b: 0x0d, - // Block 0xf, offset 0x3c0 - 0x3f0: 0x0e, - // Block 0x10, offset 0x400 - 0x433: 0x0f, - // Block 0x11, offset 0x440 - 0x45d: 0x10, - // Block 0x12, offset 0x480 - 0x491: 0x08, 0x494: 0x09, 0x497: 0x0a, - 0x49b: 0x0b, 0x49c: 0x0c, - 0x4a1: 0x0d, - 0x4ad: 0x0e, - 0x4ba: 0x0f, - // Block 0x13, offset 0x4c0 - 0x4c1: 0x11, - // Block 0x14, offset 0x500 - 0x531: 0x12, - // Block 0x15, offset 0x540 - 0x546: 0x13, - // Block 0x16, offset 0x580 - 0x5ab: 0x14, - // Block 0x17, offset 0x5c0 - 0x5d4: 0x11, - 0x5fe: 0x11, - // Block 0x18, offset 0x600 - 0x618: 0x0a, - // Block 0x19, offset 0x640 - 0x65b: 0x15, - // Block 0x1a, offset 0x680 - 0x6a0: 0x16, - // Block 0x1b, offset 0x6c0 - 0x6d2: 0x17, - 0x6f6: 0x18, - // Block 0x1c, offset 0x700 - 0x711: 0x19, - // Block 0x1d, offset 0x740 - 0x768: 0x1a, - // Block 0x1e, offset 0x780 - 0x783: 0x1b, - // Block 0x1f, offset 0x7c0 - 0x7f9: 0x1c, - // Block 0x20, offset 0x800 - 0x831: 0x1d, - // Block 0x21, offset 0x840 - 0x85e: 0x1e, - // Block 0x22, offset 0x880 - 0x898: 0x1f, - // Block 0x23, offset 0x8c0 - 0x8c7: 0x18, - 0x8d5: 0x14, - 0x8f7: 0x20, - 0x8fe: 0x1f, - // Block 0x24, offset 0x900 - 0x905: 0x21, - // Block 0x25, offset 0x940 - 0x966: 0x03, - // Block 0x26, offset 0x980 - 0x981: 0x07, 0x983: 0x11, - 0x989: 0x12, 0x98a: 0x13, 0x98e: 0x14, 0x98f: 0x15, - 0x992: 0x16, 0x995: 0x17, 0x996: 0x18, - 0x998: 0x19, 0x999: 0x1a, 0x99b: 0x1b, 0x99f: 0x1c, - 0x9a3: 0x1d, - 0x9ad: 0x1e, 0x9af: 0x1f, - 0x9b0: 0x20, 0x9b1: 0x21, - 0x9b8: 0x22, 0x9bd: 0x23, - // Block 0x27, offset 0x9c0 - 0x9cd: 0x22, - // Block 0x28, offset 0xa00 - 0xa0c: 0x08, - // Block 0x29, offset 0xa40 - 0xa6f: 0x1c, - // Block 0x2a, offset 0xa80 - 0xa90: 0x1a, - 0xaaf: 0x23, - // Block 0x2b, offset 0xac0 - 0xae3: 0x19, - 0xae8: 0x24, - 0xafc: 0x25, - // Block 0x2c, offset 0xb00 - 0xb13: 0x26, - // Block 0x2d, offset 0xb40 - 0xb67: 0x1c, - // Block 0x2e, offset 0xb80 - 0xb8f: 0x0b, - // Block 0x2f, offset 0xbc0 - 0xbcb: 0x27, - 0xbe7: 0x26, - // Block 0x30, offset 0xc00 - 0xc34: 0x16, - // Block 0x31, offset 0xc40 - 0xc62: 0x03, - // Block 0x32, offset 0xc80 - 0xcbb: 0x12, - // Block 0x33, offset 0xcc0 - 0xcdf: 0x09, - // Block 0x34, offset 0xd00 - 0xd34: 0x0a, - // Block 0x35, offset 0xd40 - 0xd41: 0x1e, - // Block 0x36, offset 0xd80 - 0xd83: 0x28, - // Block 0x37, offset 0xdc0 - 0xdc0: 0x15, - // Block 0x38, offset 0xe00 - 0xe1a: 0x15, - // Block 0x39, offset 0xe40 - 0xe65: 0x29, - // Block 0x3a, offset 0xe80 - 0xe86: 0x1f, - // Block 0x3b, offset 0xec0 - 0xeec: 0x18, - // Block 0x3c, offset 0xf00 - 0xf28: 0x2a, - // Block 0x3d, offset 0xf40 - 0xf53: 0x08, - // Block 0x3e, offset 0xf80 - 0xfa2: 0x2b, - 0xfaa: 0x17, - // Block 0x3f, offset 0xfc0 - 0xfc0: 0x25, 0xfc2: 0x26, - 0xfc9: 0x27, 0xfcd: 0x28, 0xfce: 0x29, - 0xfd5: 0x2a, - 0xfd8: 0x2b, 0xfd9: 0x2c, 0xfdf: 0x2d, - 0xfe1: 0x2e, 0xfe2: 0x2f, 0xfe3: 0x30, 0xfe6: 0x31, - 0xfe9: 0x32, 0xfec: 0x33, 0xfed: 0x34, 0xfef: 0x35, - 0xff1: 0x36, 0xff2: 0x37, 0xff3: 0x38, 0xff4: 0x39, - 0xffa: 0x3a, 0xffc: 0x3b, 0xffe: 0x3c, - // Block 0x40, offset 0x1000 - 0x102c: 0x2c, - // Block 0x41, offset 0x1040 - 0x1074: 0x2c, - // Block 0x42, offset 0x1080 - 0x108c: 0x08, - 0x10a0: 0x2d, - // Block 0x43, offset 0x10c0 - 0x10e8: 0x10, - // Block 0x44, offset 0x1100 - 0x110f: 0x13, - // Block 0x45, offset 0x1140 - 0x114b: 0x2e, - // Block 0x46, offset 0x1180 - 0x118b: 0x23, - 0x119d: 0x0c, - // Block 0x47, offset 0x11c0 - 0x11c3: 0x12, - 0x11f9: 0x0f, - // Block 0x48, offset 0x1200 - 0x121e: 0x1b, - // Block 0x49, offset 0x1240 - 0x1270: 0x2f, - // Block 0x4a, offset 0x1280 - 0x128a: 0x1b, - 0x12a7: 0x02, - // Block 0x4b, offset 0x12c0 - 0x12fb: 0x14, - // Block 0x4c, offset 0x1300 - 0x1333: 0x30, - // Block 0x4d, offset 0x1340 - 0x134d: 0x31, - // Block 0x4e, offset 0x1380 - 0x138e: 0x15, - // Block 0x4f, offset 0x13c0 - 0x13f4: 0x32, - // Block 0x50, offset 0x1400 - 0x141b: 0x33, - // Block 0x51, offset 0x1440 - 0x1448: 0x3e, 0x1449: 0x3f, 0x144a: 0x40, 0x144f: 0x41, - 0x1459: 0x42, 0x145c: 0x43, 0x145e: 0x44, 0x145f: 0x45, - 0x1468: 0x46, 0x1469: 0x47, 0x146c: 0x48, 0x146d: 0x49, 0x146e: 0x4a, - 0x1472: 0x4b, 0x1473: 0x4c, - 0x1479: 0x4d, 0x147b: 0x4e, - // Block 0x52, offset 0x1480 - 0x1480: 0x34, - 0x1499: 0x11, - 0x14b6: 0x2c, - // Block 0x53, offset 0x14c0 - 0x14e4: 0x0d, - // Block 0x54, offset 0x1500 - 0x1527: 0x08, - // Block 0x55, offset 0x1540 - 0x1555: 0x2b, - // Block 0x56, offset 0x1580 - 0x15b2: 0x35, - // Block 0x57, offset 0x15c0 - 0x15f2: 0x1c, 0x15f4: 0x29, - // Block 0x58, offset 0x1600 - 0x1600: 0x50, 0x1603: 0x51, - 0x1608: 0x52, 0x160a: 0x53, 0x160d: 0x54, 0x160e: 0x55, -} - -// 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 *multiTrie) lookup(s []byte) (v uint64, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return t.ascii[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := t.utf8Start[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := t.utf8Start[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = multiIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := t.utf8Start[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = multiIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = multiIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *multiTrie) lookupUnsafe(s []byte) uint64 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return t.ascii[c0] - } - i := t.utf8Start[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = multiIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = multiIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *multiTrie) lookupString(s string) (v uint64, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return t.ascii[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := t.utf8Start[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := t.utf8Start[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = multiIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := t.utf8Start[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = multiIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = multiIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *multiTrie) lookupStringUnsafe(s string) uint64 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return t.ascii[c0] - } - i := t.utf8Start[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = multiIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = multiIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// multiTrie. Total size: 18250 bytes (17.82 KiB). Checksum: a69a609d8696aa5e. -type multiTrie struct { - ascii []uint64 // index for ASCII bytes - utf8Start []uint8 // index for UTF-8 bytes >= 0xC0 -} - -func newMultiTrie(i int) *multiTrie { - h := multiTrieHandles[i] - return &multiTrie{multiValues[uint32(h.ascii)<<6:], multiIndex[uint32(h.multi)<<6:]} -} - -type multiTrieHandle struct { - ascii, multi uint8 -} - -// multiTrieHandles: 5 handles, 10 bytes -var multiTrieHandles = [5]multiTrieHandle{ - {0, 0}, // 8c1e77823143d35c: all - {0, 23}, // 8fb58ff8243b45b0: ASCII only - {0, 23}, // 8fb58ff8243b45b0: ASCII only 2 - {0, 24}, // 2ccc43994f11046f: BMP only - {30, 25}, // ce448591bdcb4733: No BMP -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *multiTrie) lookupValue(n uint32, b byte) uint64 { - switch { - default: - return uint64(multiValues[n<<6+uint32(b)]) - } -} - -// multiValues: 32 blocks, 2048 entries, 16384 bytes -// The third block is the zero block. -var multiValues = [2048]uint64{ - // Block 0x0, offset 0x0 - 0x03: 0x6e361699800b9fb8, 0x04: 0x52d3935a34f6f0b, 0x05: 0x2948319393e7ef10, - 0x07: 0x20f03b006704f663, 0x08: 0x6c15c0732bb2495f, 0x09: 0xe54e2c59d953551, - 0x0f: 0x33d8a825807d8037, 0x10: 0x6ecd93cb12168b92, 0x11: 0x6a81c9c0ce86e884, - 0x1f: 0xa03e77aac8be79b, 0x20: 0x28591d0e7e486efa, 0x21: 0x716fa3bc398dec8, - 0x3f: 0x4fd3bcfa72bce8b0, - // Block 0x1, offset 0x40 - 0x40: 0x3cbaef3db8ba5f12, 0x41: 0x2d262347c1f56357, - 0x7f: 0x782caa2d25a418a9, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc0: 0x6bbd1f937b1ff5d2, 0xc1: 0x732e23088d2eb8a4, - // Block 0x4, offset 0x100 - 0x13f: 0x56f8c4c82f5962dc, - // Block 0x5, offset 0x140 - 0x140: 0x57dc4544729a5da2, 0x141: 0x2f62f9cd307ffa0d, - // Block 0x6, offset 0x180 - 0x1bf: 0x7bf4d0ebf302a088, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x1f0d67f249e59931, 0x1c1: 0x3011def73aa550c7, - // Block 0x8, offset 0x200 - 0x23f: 0x5de81c1dff6bf29d, - // Block 0x9, offset 0x240 - 0x240: 0x752c035737b825e8, 0x241: 0x1e793399081e3bb3, - // Block 0xa, offset 0x280 - 0x2bf: 0x6a28f01979cbf059, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x373a4b0f2cbd4c74, 0x2c1: 0x4fd2c288683b767c, - // Block 0xc, offset 0x300 - 0x33f: 0x5a10ffa9e29184fb, - // Block 0xd, offset 0x340 - 0x340: 0x700f9bdb53fff6a5, 0x341: 0xcde93df0427eb79, - // Block 0xe, offset 0x380 - 0x3bf: 0x74071288fff39c76, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x481fc2f510e5268a, 0x3c1: 0x7565c28164204849, - // Block 0x10, offset 0x400 - 0x43f: 0x5676a62fd49c6bec, - // Block 0x11, offset 0x440 - 0x440: 0x2f2d15776cbafc6b, 0x441: 0x4c55e8dc0ff11a3f, - // Block 0x12, offset 0x480 - 0x4bf: 0x69d6f0fe711fafc9, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x33181de28cfb062d, 0x4c1: 0x2ef3adc6bb2f2d02, - // Block 0x14, offset 0x500 - 0x53f: 0xe03b31814c95f8b, - // Block 0x15, offset 0x540 - 0x540: 0x3bf6dc9a1c115603, 0x541: 0x6984ec9b7f51f7fc, - // Block 0x16, offset 0x580 - 0x5bf: 0x3c02ea92fb168559, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x1badfe42e7629494, 0x5c1: 0x6dc4a554005f7645, - // Block 0x18, offset 0x600 - 0x63f: 0x3bb2ed2a72748f4b, - // Block 0x19, offset 0x640 - 0x640: 0x291354cd6767ec10, 0x641: 0x2c3a4715e3c070d6, - // Block 0x1a, offset 0x680 - 0x6bf: 0x352711cfb7236418, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x3a59d34fb8bceda, 0x6c1: 0x5e90d8ebedd64fa1, - // Block 0x1c, offset 0x700 - 0x73f: 0x7191a77b28d23110, - // Block 0x1d, offset 0x740 - 0x740: 0x4ca7f0c1623423d8, 0x741: 0x4f7156d996e2d0de, - // Block 0x1e, offset 0x780 - // Block 0x1f, offset 0x7c0 -} - -// multiIndex: 29 blocks, 1856 entries, 1856 bytes -// Block 0 is the zero block. -var multiIndex = [1856]uint8{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x02, 0xc4: 0x03, 0xc7: 0x04, - 0xc8: 0x05, 0xcf: 0x06, - 0xd0: 0x07, - 0xdf: 0x08, - 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe7: 0x07, - 0xe8: 0x08, 0xef: 0x09, - 0xf0: 0x0e, 0xf1: 0x11, 0xf2: 0x13, 0xf3: 0x15, 0xf4: 0x17, - // Block 0x4, offset 0x100 - 0x120: 0x09, - 0x13f: 0x0a, - // Block 0x5, offset 0x140 - 0x140: 0x0b, - 0x17f: 0x0c, - // Block 0x6, offset 0x180 - 0x180: 0x0d, - // Block 0x7, offset 0x1c0 - 0x1ff: 0x0e, - // Block 0x8, offset 0x200 - 0x200: 0x0f, - // Block 0x9, offset 0x240 - 0x27f: 0x10, - // Block 0xa, offset 0x280 - 0x280: 0x11, - // Block 0xb, offset 0x2c0 - 0x2ff: 0x12, - // Block 0xc, offset 0x300 - 0x300: 0x13, - // Block 0xd, offset 0x340 - 0x37f: 0x14, - // Block 0xe, offset 0x380 - 0x380: 0x15, - // Block 0xf, offset 0x3c0 - 0x3ff: 0x16, - // Block 0x10, offset 0x400 - 0x410: 0x0a, - 0x41f: 0x0b, - 0x420: 0x0c, - 0x43f: 0x0d, - // Block 0x11, offset 0x440 - 0x440: 0x17, - // Block 0x12, offset 0x480 - 0x4bf: 0x18, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x0f, - 0x4ff: 0x10, - // Block 0x14, offset 0x500 - 0x500: 0x19, - // Block 0x15, offset 0x540 - 0x540: 0x12, - // Block 0x16, offset 0x580 - 0x5bf: 0x1a, - // Block 0x17, offset 0x5c0 - 0x5ff: 0x14, - // Block 0x18, offset 0x600 - 0x600: 0x1b, - // Block 0x19, offset 0x640 - 0x640: 0x16, - // Block 0x1a, offset 0x680 - // Block 0x1b, offset 0x6c0 - 0x6c2: 0x01, 0x6c3: 0x02, 0x6c4: 0x03, 0x6c7: 0x04, - 0x6c8: 0x05, 0x6cf: 0x06, - 0x6d0: 0x07, - 0x6df: 0x08, - 0x6e0: 0x02, 0x6e1: 0x03, 0x6e2: 0x04, 0x6e3: 0x05, 0x6e4: 0x06, 0x6e7: 0x07, - 0x6e8: 0x08, 0x6ef: 0x09, - // Block 0x1c, offset 0x700 - 0x730: 0x0e, 0x731: 0x11, 0x732: 0x13, 0x733: 0x15, 0x734: 0x17, -} diff --git a/vendor/golang.org/x/text/internal/triegen/example_compact_test.go b/vendor/golang.org/x/text/internal/triegen/example_compact_test.go deleted file mode 100644 index 7cf604ca..00000000 --- a/vendor/golang.org/x/text/internal/triegen/example_compact_test.go +++ /dev/null @@ -1,71 +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 triegen_test - -import ( - "fmt" - "io" - "io/ioutil" - - "golang.org/x/text/internal/triegen" -) - -func ExampleCompacter() { - t := triegen.NewTrie("root") - for r := rune(0); r < 10000; r += 64 { - t.Insert(r, 0x9015BADA55^uint64(r)) - } - sz, _ := t.Gen(ioutil.Discard) - - fmt.Printf("Size normal: %5d\n", sz) - - var c myCompacter - sz, _ = t.Gen(ioutil.Discard, triegen.Compact(&c)) - - fmt.Printf("Size compacted: %5d\n", sz) - - // Output: - // Size normal: 81344 - // Size compacted: 3224 -} - -// A myCompacter accepts a block if only the first value is given. -type myCompacter []uint64 - -func (c *myCompacter) Size(values []uint64) (sz int, ok bool) { - for _, v := range values[1:] { - if v != 0 { - return 0, false - } - } - return 8, true // the size of a uint64 -} - -func (c *myCompacter) Store(v []uint64) uint32 { - x := uint32(len(*c)) - *c = append(*c, v[0]) - return x -} - -func (c *myCompacter) Print(w io.Writer) error { - fmt.Fprintln(w, "var firstValue = []uint64{") - for _, v := range *c { - fmt.Fprintf(w, "\t%#x,\n", v) - } - fmt.Fprintln(w, "}") - return nil -} - -func (c *myCompacter) Handler() string { - return "getFirstValue" - - // Where getFirstValue is included along with the generated code: - // func getFirstValue(n uint32, b byte) uint64 { - // if b == 0x80 { // the first continuation byte - // return firstValue[n] - // } - // return 0 - // } -} diff --git a/vendor/golang.org/x/text/internal/triegen/example_test.go b/vendor/golang.org/x/text/internal/triegen/example_test.go deleted file mode 100644 index 557a152e..00000000 --- a/vendor/golang.org/x/text/internal/triegen/example_test.go +++ /dev/null @@ -1,148 +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 triegen_test - -import ( - "fmt" - "io/ioutil" - "math/rand" - "unicode" - - "golang.org/x/text/internal/triegen" -) - -const seed = 0x12345 - -var genWriter = ioutil.Discard - -func randomRunes() map[rune]uint8 { - rnd := rand.New(rand.NewSource(seed)) - m := map[rune]uint8{} - for len(m) < 100 { - // Only set our random rune if it is a valid Unicode code point. - if r := rune(rnd.Int31n(unicode.MaxRune + 1)); []rune(string(r))[0] == r { - m[r] = 1 - } - } - return m -} - -// Example_build shows how to build a simple trie. It assigns the value 1 to -// 100 random runes generated by randomRunes. -func Example_build() { - t := triegen.NewTrie("rand") - - for r, _ := range randomRunes() { - t.Insert(r, 1) - } - sz, err := t.Gen(genWriter) - - fmt.Printf("Trie size: %d bytes\n", sz) - fmt.Printf("Error: %v\n", err) - - // Output: - // Trie size: 9280 bytes - // Error: <nil> -} - -// Example_lookup demonstrates how to use the trie generated by Example_build. -func Example_lookup() { - trie := newRandTrie(0) - - // The same set of runes used by Example_build. - runes := randomRunes() - - // Verify the right value is returned for all runes. - for r := rune(0); r <= unicode.MaxRune; r++ { - // Note that the return type of lookup is uint8. - if v, _ := trie.lookupString(string(r)); v != runes[r] { - fmt.Println("FAILURE") - return - } - } - fmt.Println("SUCCESS") - - // Output: - // SUCCESS -} - -// runeValues generates some random values for a set of interesting runes. -func runeValues() map[rune]uint64 { - rnd := rand.New(rand.NewSource(seed)) - m := map[rune]uint64{} - for p := 4; p <= unicode.MaxRune; p <<= 1 { - for d := -1; d <= 1; d++ { - m[rune(p+d)] = uint64(rnd.Int63()) - } - } - return m -} - -// ExampleGen_build demonstrates the creation of multiple tries sharing common -// blocks. ExampleGen_lookup demonstrates how to use the generated tries. -func ExampleGen_build() { - var tries []*triegen.Trie - - rv := runeValues() - for _, c := range []struct { - include func(rune) bool - name string - }{ - {func(r rune) bool { return true }, "all"}, - {func(r rune) bool { return r < 0x80 }, "ASCII only"}, - {func(r rune) bool { return r < 0x80 }, "ASCII only 2"}, - {func(r rune) bool { return r <= 0xFFFF }, "BMP only"}, - {func(r rune) bool { return r > 0xFFFF }, "No BMP"}, - } { - t := triegen.NewTrie(c.name) - tries = append(tries, t) - - for r, v := range rv { - if c.include(r) { - t.Insert(r, v) - } - } - } - sz, err := triegen.Gen(genWriter, "multi", tries) - - fmt.Printf("Trie size: %d bytes\n", sz) - fmt.Printf("Error: %v\n", err) - - // Output: - // Trie size: 18250 bytes - // Error: <nil> -} - -// ExampleGen_lookup shows how to look up values in the trie generated by -// ExampleGen_build. -func ExampleGen_lookup() { - rv := runeValues() - for i, include := range []func(rune) bool{ - func(r rune) bool { return true }, // all - func(r rune) bool { return r < 0x80 }, // ASCII only - func(r rune) bool { return r < 0x80 }, // ASCII only 2 - func(r rune) bool { return r <= 0xFFFF }, // BMP only - func(r rune) bool { return r > 0xFFFF }, // No BMP - } { - t := newMultiTrie(i) - - for r := rune(0); r <= unicode.MaxRune; r++ { - x := uint64(0) - if include(r) { - x = rv[r] - } - // As we convert from a valid rune, we know it is safe to use - // lookupStringUnsafe. - if v := t.lookupStringUnsafe(string(r)); x != v { - fmt.Println("FAILURE") - return - } - } - } - fmt.Println("SUCCESS") - - // Output: - // SUCCESS -} diff --git a/vendor/golang.org/x/text/internal/triegen/gen_test.go b/vendor/golang.org/x/text/internal/triegen/gen_test.go deleted file mode 100644 index 831627d7..00000000 --- a/vendor/golang.org/x/text/internal/triegen/gen_test.go +++ /dev/null @@ -1,68 +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. - -// +build generate - -package triegen_test - -// The code in this file generates captures and writes the tries generated in -// the examples to data_test.go. To invoke it, run: -// go test -tags=generate -// -// Making the generation code a "test" allows us to link in the necessary test -// code. - -import ( - "log" - "os" - "os/exec" -) - -func init() { - const tmpfile = "tmpout" - const dstfile = "data_test.go" - - f, err := os.Create(tmpfile) - if err != nil { - log.Fatalf("Could not create output file: %v", err) - } - defer os.Remove(tmpfile) - defer f.Close() - - // We exit before this function returns, regardless of success or failure, - // so there's no need to save (and later restore) the existing genWriter - // value. - genWriter = f - - f.Write([]byte(header)) - - Example_build() - ExampleGen_build() - - if err := exec.Command("gofmt", "-w", tmpfile).Run(); err != nil { - log.Fatal(err) - } - os.Remove(dstfile) - os.Rename(tmpfile, dstfile) - - os.Exit(0) -} - -const header = `// This file is generated with "go test -tags generate". DO NOT EDIT! -// +build !generate - -package triegen_test -` - -// Stubs for generated tries. These are needed as we exclude data_test.go if -// the generate flag is set. This will clearly make the tests fail, but that -// is okay. It allows us to bootstrap. - -type trie struct{} - -func (t *trie) lookupString(string) (uint8, int) { return 0, 1 } -func (t *trie) lookupStringUnsafe(string) uint64 { return 0 } - -func newRandTrie(i int) *trie { return &trie{} } -func newMultiTrie(i int) *trie { return &trie{} } diff --git a/vendor/golang.org/x/text/internal/ucd/example_test.go b/vendor/golang.org/x/text/internal/ucd/example_test.go deleted file mode 100644 index 338a50d1..00000000 --- a/vendor/golang.org/x/text/internal/ucd/example_test.go +++ /dev/null @@ -1,81 +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 ucd_test - -import ( - "fmt" - "strings" - - "golang.org/x/text/internal/ucd" -) - -func Example() { - // Read rune-by-rune from UnicodeData. - var count int - p := ucd.New(strings.NewReader(unicodeData)) - for p.Next() { - count++ - if lower := p.Runes(ucd.SimpleLowercaseMapping); lower != nil { - fmt.Printf("lower(%U) -> %U\n", p.Rune(0), lower[0]) - } - } - if err := p.Err(); err != nil { - fmt.Println(err) - } - fmt.Println("Number of runes visited:", count) - - // Read raw ranges from Scripts. - p = ucd.New(strings.NewReader(scripts), ucd.KeepRanges) - for p.Next() { - start, end := p.Range(0) - fmt.Printf("%04X..%04X: %s\n", start, end, p.String(1)) - } - if err := p.Err(); err != nil { - fmt.Println(err) - } - - // Output: - // lower(U+00C0) -> U+00E0 - // lower(U+00C1) -> U+00E1 - // lower(U+00C2) -> U+00E2 - // lower(U+00C3) -> U+00E3 - // lower(U+00C4) -> U+00E4 - // Number of runes visited: 6594 - // 0000..001F: Common - // 0020..0020: Common - // 0021..0023: Common - // 0024..0024: Common -} - -// Excerpt from UnicodeData.txt -const unicodeData = ` -00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; -00BA;MASCULINE ORDINAL INDICATOR;Lo;0;L;<super> 006F;;;;N;;;;; -00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;; -00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; -00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; -00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; -00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; -00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; -00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; -00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; -00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; -00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; - -# A legacy rune range. -3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;; -4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;; -` - -// Excerpt from Scripts.txt -const scripts = ` -# Property: Script -# ================================================ - -0000..001F ; Common # Cc [32] <control-0000>..<control-001F> -0020 ; Common # Zs SPACE -0021..0023 ; Common # Po [3] EXCLAMATION MARK..NUMBER SIGN -0024 ; Common # Sc DOLLAR SIGN -` diff --git a/vendor/golang.org/x/text/internal/ucd/ucd_test.go b/vendor/golang.org/x/text/internal/ucd/ucd_test.go deleted file mode 100644 index 11a6542e..00000000 --- a/vendor/golang.org/x/text/internal/ucd/ucd_test.go +++ /dev/null @@ -1,105 +0,0 @@ -package ucd - -import ( - "strings" - "testing" -) - -const file = ` -# Comments should be skipped -# rune; bool; uint; int; float; runes; # Y -0..0005; Y; 0; 2; -5.25 ; 0 1 2 3 4 5; -6..0007; Yes ; 6; 1; -4.25 ; 0006 0007; -8; T ; 8 ; 0 ;-3.25 ;;# T -9; True ;9 ; -1;-2.25 ; 0009; - -# more comments to be ignored -@Part0 - -A; N; 10 ; -2; -1.25; ;# N -B; No; 11 ; -3; -0.25; -C; False;12; -4; 0.75; -D; ;13;-5;1.75; - -@Part1 # Another part. -# We test part comments get removed by not commenting the the next line. -E..10FFFF; F; 14 ; -6; 2.75; -` - -var want = []struct { - start, end rune -}{ - {0x00, 0x05}, - {0x06, 0x07}, - {0x08, 0x08}, - {0x09, 0x09}, - {0x0A, 0x0A}, - {0x0B, 0x0B}, - {0x0C, 0x0C}, - {0x0D, 0x0D}, - {0x0E, 0x10FFFF}, -} - -func TestGetters(t *testing.T) { - parts := [][2]string{ - {"Part0", ""}, - {"Part1", "Another part."}, - } - handler := func(p *Parser) { - if len(parts) == 0 { - t.Error("Part handler invoked too many times.") - return - } - want := parts[0] - parts = parts[1:] - if got0, got1 := p.String(0), p.Comment(); got0 != want[0] || got1 != want[1] { - t.Errorf(`part: got %q, %q; want %q"`, got0, got1, want) - } - } - - p := New(strings.NewReader(file), KeepRanges, Part(handler)) - for i := 0; p.Next(); i++ { - start, end := p.Range(0) - w := want[i] - if start != w.start || end != w.end { - t.Fatalf("%d:Range(0); got %#x..%#x; want %#x..%#x", i, start, end, w.start, w.end) - } - if w.start == w.end && p.Rune(0) != w.start { - t.Errorf("%d:Range(0).start: got %U; want %U", i, p.Rune(0), w.start) - } - if got, want := p.Bool(1), w.start <= 9; got != want { - t.Errorf("%d:Bool(1): got %v; want %v", i, got, want) - } - if got := p.Rune(4); got != 0 || p.Err() == nil { - t.Errorf("%d:Rune(%q): got no error; want error", i, p.String(1)) - } - p.err = nil - if got := p.Uint(2); rune(got) != start { - t.Errorf("%d:Uint(2): got %v; want %v", i, got, start) - } - if got, want := p.Int(3), 2-i; got != want { - t.Errorf("%d:Int(3): got %v; want %v", i, got, want) - } - if got, want := p.Float(4), -5.25+float64(i); got != want { - t.Errorf("%d:Int(3): got %v; want %v", i, got, want) - } - if got := p.Runes(5); got == nil { - if p.String(5) != "" { - t.Errorf("%d:Runes(5): expected non-empty list", i) - } - } else { - if got[0] != start || got[len(got)-1] != end { - t.Errorf("%d:Runes(5): got %#x; want %#x..%#x", i, got, start, end) - } - } - if got := p.Comment(); got != "" && got != p.String(1) { - t.Errorf("%d:Comment(): got %v; want %v", i, got, p.String(1)) - } - } - if err := p.Err(); err != nil { - t.Errorf("Parser error: %v", err) - } - if len(parts) != 0 { - t.Errorf("expected %d more invocations of part handler", len(parts)) - } -} diff --git a/vendor/golang.org/x/text/language/coverage_test.go b/vendor/golang.org/x/text/language/coverage_test.go deleted file mode 100644 index 8e08e5ca..00000000 --- a/vendor/golang.org/x/text/language/coverage_test.go +++ /dev/null @@ -1,154 +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 - -import ( - "fmt" - "reflect" - "testing" -) - -func TestSupported(t *testing.T) { - // To prove the results are correct for a type, we test that the number of - // results is identical to the number of results on record, that all results - // are distinct and that all results are valid. - tests := map[string]int{ - "BaseLanguages": numLanguages, - "Scripts": numScripts, - "Regions": numRegions, - "Tags": 0, - } - sup := reflect.ValueOf(Supported) - for name, num := range tests { - v := sup.MethodByName(name).Call(nil)[0] - if n := v.Len(); n != num { - t.Errorf("len(%s()) was %d; want %d", name, n, num) - } - dup := make(map[string]bool) - for i := 0; i < v.Len(); i++ { - x := v.Index(i).Interface() - // An invalid value will either cause a crash or result in a - // duplicate when passed to Sprint. - s := fmt.Sprint(x) - if dup[s] { - t.Errorf("%s: duplicate entry %q", name, s) - } - dup[s] = true - } - if len(dup) != v.Len() { - t.Errorf("%s: # unique entries was %d; want %d", name, len(dup), v.Len()) - } - } -} - -func TestNewCoverage(t *testing.T) { - bases := []Base{Base{0}, Base{3}, Base{7}} - scripts := []Script{Script{11}, Script{17}, Script{23}} - regions := []Region{Region{101}, Region{103}, Region{107}} - tags := []Tag{Make("pt"), Make("en"), Make("en-GB"), Make("en-US"), Make("pt-PT")} - fbases := func() []Base { return bases } - fscripts := func() []Script { return scripts } - fregions := func() []Region { return regions } - ftags := func() []Tag { return tags } - - tests := []struct { - desc string - list []interface{} - bases []Base - scripts []Script - regions []Region - tags []Tag - }{ - { - desc: "empty", - }, - { - desc: "bases", - list: []interface{}{bases}, - bases: bases, - }, - { - desc: "scripts", - list: []interface{}{scripts}, - scripts: scripts, - }, - { - desc: "regions", - list: []interface{}{regions}, - regions: regions, - }, - { - desc: "bases derives from tags", - list: []interface{}{tags}, - bases: []Base{Base{_en}, Base{_pt}}, - tags: tags, - }, - { - desc: "tags and bases", - list: []interface{}{tags, bases}, - bases: bases, - tags: tags, - }, - { - desc: "fully specified", - list: []interface{}{tags, bases, scripts, regions}, - bases: bases, - scripts: scripts, - regions: regions, - tags: tags, - }, - { - desc: "bases func", - list: []interface{}{fbases}, - bases: bases, - }, - { - desc: "scripts func", - list: []interface{}{fscripts}, - scripts: scripts, - }, - { - desc: "regions func", - list: []interface{}{fregions}, - regions: regions, - }, - { - desc: "tags func", - list: []interface{}{ftags}, - bases: []Base{Base{_en}, Base{_pt}}, - tags: tags, - }, - { - desc: "tags and bases", - list: []interface{}{ftags, fbases}, - bases: bases, - tags: tags, - }, - { - desc: "fully specified", - list: []interface{}{ftags, fbases, fscripts, fregions}, - bases: bases, - scripts: scripts, - regions: regions, - tags: tags, - }, - } - - for i, tt := range tests { - l := NewCoverage(tt.list...) - if a := l.BaseLanguages(); !reflect.DeepEqual(a, tt.bases) { - t.Errorf("%d:%s: BaseLanguages was %v; want %v", i, tt.desc, a, tt.bases) - } - if a := l.Scripts(); !reflect.DeepEqual(a, tt.scripts) { - t.Errorf("%d:%s: Scripts was %v; want %v", i, tt.desc, a, tt.scripts) - } - if a := l.Regions(); !reflect.DeepEqual(a, tt.regions) { - t.Errorf("%d:%s: Regions was %v; want %v", i, tt.desc, a, tt.regions) - } - if a := l.Tags(); !reflect.DeepEqual(a, tt.tags) { - t.Errorf("%d:%s: Tags was %v; want %v", i, tt.desc, a, tt.tags) - } - } -} diff --git a/vendor/golang.org/x/text/language/display/dict.go b/vendor/golang.org/x/text/language/display/dict.go deleted file mode 100644 index 52c11a93..00000000 --- a/vendor/golang.org/x/text/language/display/dict.go +++ /dev/null @@ -1,92 +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 display - -// This file contains sets of data for specific languages. Users can use these -// to create smaller collections of supported languages and reduce total table -// size. - -// The variable names defined here correspond to those in package language. - -var ( - Afrikaans *Dictionary = &af // af - Amharic *Dictionary = &am // am - Arabic *Dictionary = &ar // ar - ModernStandardArabic *Dictionary = Arabic // ar-001 - Azerbaijani *Dictionary = &az // az - Bulgarian *Dictionary = &bg // bg - Bengali *Dictionary = &bn // bn - Catalan *Dictionary = &ca // ca - Czech *Dictionary = &cs // cs - Danish *Dictionary = &da // da - German *Dictionary = &de // de - Greek *Dictionary = &el // el - English *Dictionary = &en // en - AmericanEnglish *Dictionary = English // en-US - BritishEnglish *Dictionary = English // en-GB - Spanish *Dictionary = &es // es - EuropeanSpanish *Dictionary = Spanish // es-ES - LatinAmericanSpanish *Dictionary = Spanish // es-419 - Estonian *Dictionary = &et // et - Persian *Dictionary = &fa // fa - Finnish *Dictionary = &fi // fi - Filipino *Dictionary = &fil // fil - French *Dictionary = &fr // fr - Gujarati *Dictionary = &gu // gu - Hebrew *Dictionary = &he // he - Hindi *Dictionary = &hi // hi - Croatian *Dictionary = &hr // hr - Hungarian *Dictionary = &hu // hu - Armenian *Dictionary = &hy // hy - Indonesian *Dictionary = &id // id - Icelandic *Dictionary = &is // is - Italian *Dictionary = &it // it - Japanese *Dictionary = &ja // ja - Georgian *Dictionary = &ka // ka - Kazakh *Dictionary = &kk // kk - Khmer *Dictionary = &km // km - Kannada *Dictionary = &kn // kn - Korean *Dictionary = &ko // ko - Kirghiz *Dictionary = &ky // ky - Lao *Dictionary = &lo // lo - Lithuanian *Dictionary = &lt // lt - Latvian *Dictionary = &lv // lv - Macedonian *Dictionary = &mk // mk - Malayalam *Dictionary = &ml // ml - Mongolian *Dictionary = &mn // mn - Marathi *Dictionary = &mr // mr - Malay *Dictionary = &ms // ms - Burmese *Dictionary = &my // my - Nepali *Dictionary = &ne // ne - Dutch *Dictionary = &nl // nl - Norwegian *Dictionary = &no // no - Punjabi *Dictionary = &pa // pa - Polish *Dictionary = &pl // pl - Portuguese *Dictionary = &pt // pt - BrazilianPortuguese *Dictionary = Portuguese // pt-BR - EuropeanPortuguese *Dictionary = &ptPT // pt-PT - Romanian *Dictionary = &ro // ro - Russian *Dictionary = &ru // ru - Sinhala *Dictionary = &si // si - Slovak *Dictionary = &sk // sk - Slovenian *Dictionary = &sl // sl - Albanian *Dictionary = &sq // sq - Serbian *Dictionary = &sr // sr - SerbianLatin *Dictionary = &srLatn // sr - Swedish *Dictionary = &sv // sv - Swahili *Dictionary = &sw // sw - Tamil *Dictionary = &ta // ta - Telugu *Dictionary = &te // te - Thai *Dictionary = &th // th - Turkish *Dictionary = &tr // tr - Ukrainian *Dictionary = &uk // uk - Urdu *Dictionary = &ur // ur - Uzbek *Dictionary = &uz // uz - Vietnamese *Dictionary = &vi // vi - Chinese *Dictionary = &zh // zh - SimplifiedChinese *Dictionary = Chinese // zh-Hans - TraditionalChinese *Dictionary = &zhHant // zh-Hant - Zulu *Dictionary = &zu // zu -) diff --git a/vendor/golang.org/x/text/language/display/dict_test.go b/vendor/golang.org/x/text/language/display/dict_test.go deleted file mode 100644 index 17b13898..00000000 --- a/vendor/golang.org/x/text/language/display/dict_test.go +++ /dev/null @@ -1,39 +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 display - -import ( - "fmt" - "testing" - - "golang.org/x/text/internal/testtext" -) - -func TestLinking(t *testing.T) { - base := getSize(t, `display.Tags(language.English).Name(language.English)`) - compact := getSize(t, `display.English.Languages().Name(language.English)`) - - if d := base - compact; d < 1.5*1024*1024 { - t.Errorf("size(base) - size(compact) = %d - %d = was %d; want > 1.5MB", base, compact, d) - } -} - -func getSize(t *testing.T, main string) int { - size, err := testtext.CodeSize(fmt.Sprintf(body, main)) - if err != nil { - t.Skipf("skipping link size test; binary size could not be determined: %v", err) - } - return size -} - -const body = `package main -import ( - "golang.org/x/text/language" - "golang.org/x/text/language/display" -) -func main() { - %s -} -` diff --git a/vendor/golang.org/x/text/language/display/display.go b/vendor/golang.org/x/text/language/display/display.go deleted file mode 100644 index eafe54a8..00000000 --- a/vendor/golang.org/x/text/language/display/display.go +++ /dev/null @@ -1,420 +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. - -//go:generate go run maketables.go -output tables.go - -// Package display provides display names for languages, scripts and regions in -// a requested language. -// -// The data is based on CLDR's localeDisplayNames. It includes the names of the -// draft level "contributed" or "approved". The resulting tables are quite -// large. The display package is designed so that users can reduce the linked-in -// table sizes by cherry picking the languages one wishes to support. There is a -// Dictionary defined for a selected set of common languages for this purpose. -package display // import "golang.org/x/text/language/display" - -import ( - "fmt" - "strings" - - "golang.org/x/text/internal/format" - "golang.org/x/text/language" -) - -/* -TODO: -All fairly low priority at the moment: - - Include alternative and variants as an option (using func options). - - Option for returning the empty string for undefined values. - - Support variants, currencies, time zones, option names and other data - provided in CLDR. - - Do various optimizations: - - Reduce size of offset tables. - - Consider compressing infrequently used languages and decompress on demand. -*/ - -// A Formatter formats a tag in the current language. It is used in conjunction -// with the message package. -type Formatter struct { - lookup func(tag int, x interface{}) string - x interface{} -} - -// Format implements "golang.org/x/text/internal/format".Formatter. -func (f Formatter) Format(state format.State, verb rune) { - // TODO: there are a lot of inefficiencies in this code. Fix it when we - // language.Tag has embedded compact tags. - t := state.Language() - _, index, _ := matcher.Match(t) - str := f.lookup(index, f.x) - if str == "" { - // TODO: use language-specific punctuation. - // TODO: use codePattern instead of language? - if unknown := f.lookup(index, language.Und); unknown != "" { - fmt.Fprintf(state, "%v (%v)", unknown, f.x) - } else { - fmt.Fprintf(state, "[language: %v]", f.x) - } - } else { - state.Write([]byte(str)) - } -} - -// Language returns a Formatter that renders the name for lang in the -// the current language. x may be a language.Base or a language.Tag. -// It renders lang in the default language if no translation for the current -// language is supported. -func Language(lang interface{}) Formatter { - return Formatter{langFunc, lang} -} - -// Region returns a Formatter that renders the name for region in the current -// language. region may be a language.Region or a language.Tag. -// It renders region in the default language if no translation for the current -// language is supported. -func Region(region interface{}) Formatter { - return Formatter{regionFunc, region} -} - -// Script returns a Formatter that renders the name for script in the current -// language. script may be a language.Script or a language.Tag. -// It renders script in the default language if no translation for the current -// language is supported. -func Script(script interface{}) Formatter { - return Formatter{scriptFunc, script} -} - -// Script returns a Formatter that renders the name for tag in the current -// language. tag may be a language.Tag. -// It renders tag in the default language if no translation for the current -// language is supported. -func Tag(tag interface{}) Formatter { - return Formatter{tagFunc, tag} -} - -// A Namer is used to get the name for a given value, such as a Tag, Language, -// Script or Region. -type Namer interface { - // Name returns a display string for the given value. A Namer returns an - // empty string for values it does not support. A Namer may support naming - // an unspecified value. For example, when getting the name for a region for - // a tag that does not have a defined Region, it may return the name for an - // unknown region. It is up to the user to filter calls to Name for values - // for which one does not want to have a name string. - Name(x interface{}) string -} - -var ( - // Supported lists the languages for which names are defined. - Supported language.Coverage - - // The set of all possible values for which names are defined. Note that not - // all Namer implementations will cover all the values of a given type. - // A Namer will return the empty string for unsupported values. - Values language.Coverage - - matcher language.Matcher -) - -func init() { - tags := make([]language.Tag, numSupported) - s := supported - for i := range tags { - p := strings.IndexByte(s, '|') - tags[i] = language.Raw.Make(s[:p]) - s = s[p+1:] - } - matcher = language.NewMatcher(tags) - Supported = language.NewCoverage(tags) - - Values = language.NewCoverage(langTagSet.Tags, supportedScripts, supportedRegions) -} - -// Languages returns a Namer for naming languages. It returns nil if there is no -// data for the given tag. The type passed to Name must be either language.Base -// or language.Tag. Note that the result may differ between passing a tag or its -// base language. For example, for English, passing "nl-BE" would return Flemish -// whereas passing "nl" returns "Dutch". -func Languages(t language.Tag) Namer { - if _, index, conf := matcher.Match(t); conf != language.No { - return languageNamer(index) - } - return nil -} - -type languageNamer int - -func langFunc(i int, x interface{}) string { - return nameLanguage(languageNamer(i), x) -} - -func (n languageNamer) name(i int) string { - return lookup(langHeaders[:], int(n), i) -} - -// Name implements the Namer interface for language names. -func (n languageNamer) Name(x interface{}) string { - return nameLanguage(n, x) -} - -// nonEmptyIndex walks up the parent chain until a non-empty header is found. -// It returns -1 if no index could be found. -func nonEmptyIndex(h []header, index int) int { - for ; index != -1 && h[index].data == ""; index = int(parents[index]) { - } - return index -} - -// Scripts returns a Namer for naming scripts. It returns nil if there is no -// data for the given tag. The type passed to Name must be either a -// language.Script or a language.Tag. It will not attempt to infer a script for -// tags with an unspecified script. -func Scripts(t language.Tag) Namer { - if _, index, conf := matcher.Match(t); conf != language.No { - if index = nonEmptyIndex(scriptHeaders[:], index); index != -1 { - return scriptNamer(index) - } - } - return nil -} - -type scriptNamer int - -func scriptFunc(i int, x interface{}) string { - return nameScript(scriptNamer(i), x) -} - -func (n scriptNamer) name(i int) string { - return lookup(scriptHeaders[:], int(n), i) -} - -// Name implements the Namer interface for script names. -func (n scriptNamer) Name(x interface{}) string { - return nameScript(n, x) -} - -// Regions returns a Namer for naming regions. It returns nil if there is no -// data for the given tag. The type passed to Name must be either a -// language.Region or a language.Tag. It will not attempt to infer a region for -// tags with an unspecified region. -func Regions(t language.Tag) Namer { - if _, index, conf := matcher.Match(t); conf != language.No { - if index = nonEmptyIndex(regionHeaders[:], index); index != -1 { - return regionNamer(index) - } - } - return nil -} - -type regionNamer int - -func regionFunc(i int, x interface{}) string { - return nameRegion(regionNamer(i), x) -} - -func (n regionNamer) name(i int) string { - return lookup(regionHeaders[:], int(n), i) -} - -// Name implements the Namer interface for region names. -func (n regionNamer) Name(x interface{}) string { - return nameRegion(n, x) -} - -// Tags returns a Namer for giving a full description of a tag. The names of -// scripts and regions that are not already implied by the language name will -// in appended within parentheses. It returns nil if there is not data for the -// given tag. The type passed to Name must be a tag. -func Tags(t language.Tag) Namer { - if _, index, conf := matcher.Match(t); conf != language.No { - return tagNamer(index) - } - return nil -} - -type tagNamer int - -func tagFunc(i int, x interface{}) string { - return nameTag(languageNamer(i), scriptNamer(i), regionNamer(i), x) -} - -// Name implements the Namer interface for tag names. -func (n tagNamer) Name(x interface{}) string { - return nameTag(languageNamer(n), scriptNamer(n), regionNamer(n), x) -} - -// lookup finds the name for an entry in a global table, traversing the -// inheritance hierarchy if needed. -func lookup(table []header, dict, want int) string { - for dict != -1 { - if s := table[dict].name(want); s != "" { - return s - } - dict = int(parents[dict]) - } - return "" -} - -// A Dictionary holds a collection of Namers for a single language. One can -// reduce the amount of data linked in to a binary by only referencing -// Dictionaries for the languages one needs to support instead of using the -// generic Namer factories. -type Dictionary struct { - parent *Dictionary - lang header - script header - region header -} - -// Tags returns a Namer for giving a full description of a tag. The names of -// scripts and regions that are not already implied by the language name will -// in appended within parentheses. It returns nil if there is not data for the -// given tag. The type passed to Name must be a tag. -func (d *Dictionary) Tags() Namer { - return dictTags{d} -} - -type dictTags struct { - d *Dictionary -} - -// Name implements the Namer interface for tag names. -func (n dictTags) Name(x interface{}) string { - return nameTag(dictLanguages{n.d}, dictScripts{n.d}, dictRegions{n.d}, x) -} - -// Languages returns a Namer for naming languages. It returns nil if there is no -// data for the given tag. The type passed to Name must be either language.Base -// or language.Tag. Note that the result may differ between passing a tag or its -// base language. For example, for English, passing "nl-BE" would return Flemish -// whereas passing "nl" returns "Dutch". -func (d *Dictionary) Languages() Namer { - return dictLanguages{d} -} - -type dictLanguages struct { - d *Dictionary -} - -func (n dictLanguages) name(i int) string { - for d := n.d; d != nil; d = d.parent { - if s := d.lang.name(i); s != "" { - return s - } - } - return "" -} - -// Name implements the Namer interface for language names. -func (n dictLanguages) Name(x interface{}) string { - return nameLanguage(n, x) -} - -// Scripts returns a Namer for naming scripts. It returns nil if there is no -// data for the given tag. The type passed to Name must be either a -// language.Script or a language.Tag. It will not attempt to infer a script for -// tags with an unspecified script. -func (d *Dictionary) Scripts() Namer { - return dictScripts{d} -} - -type dictScripts struct { - d *Dictionary -} - -func (n dictScripts) name(i int) string { - for d := n.d; d != nil; d = d.parent { - if s := d.script.name(i); s != "" { - return s - } - } - return "" -} - -// Name implements the Namer interface for script names. -func (n dictScripts) Name(x interface{}) string { - return nameScript(n, x) -} - -// Regions returns a Namer for naming regions. It returns nil if there is no -// data for the given tag. The type passed to Name must be either a -// language.Region or a language.Tag. It will not attempt to infer a region for -// tags with an unspecified region. -func (d *Dictionary) Regions() Namer { - return dictRegions{d} -} - -type dictRegions struct { - d *Dictionary -} - -func (n dictRegions) name(i int) string { - for d := n.d; d != nil; d = d.parent { - if s := d.region.name(i); s != "" { - return s - } - } - return "" -} - -// Name implements the Namer interface for region names. -func (n dictRegions) Name(x interface{}) string { - return nameRegion(n, x) -} - -// A SelfNamer implements a Namer that returns the name of language in this same -// language. It provides a very compact mechanism to provide a comprehensive -// list of languages to users in their native language. -type SelfNamer struct { - // Supported defines the values supported by this Namer. - Supported language.Coverage -} - -var ( - // Self is a shared instance of a SelfNamer. - Self *SelfNamer = &self - - self = SelfNamer{language.NewCoverage(selfTagSet.Tags)} -) - -// Name returns the name of a given language tag in the language identified by -// this tag. It supports both the language.Base and language.Tag types. -func (n SelfNamer) Name(x interface{}) string { - t, _ := language.All.Compose(x) - base, scr, reg := t.Raw() - baseScript := language.Script{} - if (scr == language.Script{} && reg != language.Region{}) { - // For looking up in the self dictionary, we need to select the - // maximized script. This is even the case if the script isn't - // specified. - s1, _ := t.Script() - if baseScript = getScript(base); baseScript != s1 { - scr = s1 - } - } - - i, scr, reg := selfTagSet.index(base, scr, reg) - if i == -1 { - return "" - } - - // Only return the display name if the script matches the expected script. - if (scr != language.Script{}) { - if (baseScript == language.Script{}) { - baseScript = getScript(base) - } - if baseScript != scr { - return "" - } - } - - return selfHeaders[0].name(i) -} - -// getScript returns the maximized script for a base language. -func getScript(b language.Base) language.Script { - tag, _ := language.Raw.Compose(b) - scr, _ := tag.Script() - return scr -} diff --git a/vendor/golang.org/x/text/language/display/display_test.go b/vendor/golang.org/x/text/language/display/display_test.go deleted file mode 100644 index 4f5b48e0..00000000 --- a/vendor/golang.org/x/text/language/display/display_test.go +++ /dev/null @@ -1,714 +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 display - -import ( - "fmt" - "reflect" - "strings" - "testing" - "unicode" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -// TODO: test that tables are properly dropped by the linker for various use -// cases. - -var ( - firstLang2aa = language.MustParseBase("aa") - lastLang2zu = language.MustParseBase("zu") - firstLang3ace = language.MustParseBase("ace") - lastLang3zza = language.MustParseBase("zza") - firstTagAr001 = language.MustParse("ar-001") - lastTagZhHant = language.MustParse("zh-Hant") -) - -// TestValues tests that for all languages, regions, and scripts in Values, at -// least one language has a name defined for it by checking it exists in -// English, which is assumed to be the most comprehensive. It is also tested -// that a Namer returns "" for unsupported values. -func TestValues(t *testing.T) { - type testcase struct { - kind string - n Namer - } - // checkDefined checks that a value exists in a Namer. - checkDefined := func(x interface{}, namers []testcase) { - for _, n := range namers { - testtext.Run(t, fmt.Sprintf("%s.Name(%s)", n.kind, x), func(t *testing.T) { - if n.n.Name(x) == "" { - // As of version 28 there is no data for az-Arab in English, - // although there is useful data in other languages. - if x.(fmt.Stringer).String() == "az-Arab" { - return - } - t.Errorf("supported but no result") - } - }) - } - } - // checkUnsupported checks that a value does not exist in a Namer. - checkUnsupported := func(x interface{}, namers []testcase) { - for _, n := range namers { - if got := n.n.Name(x); got != "" { - t.Fatalf("%s.Name(%s): unsupported tag gave non-empty result: %q", n.kind, x, got) - } - } - } - - tags := map[language.Tag]bool{} - namers := []testcase{ - {"Languages(en)", Languages(language.English)}, - {"Tags(en)", Tags(language.English)}, - {"English.Languages()", English.Languages()}, - {"English.Tags()", English.Tags()}, - } - for _, tag := range Values.Tags() { - checkDefined(tag, namers) - tags[tag] = true - } - for _, base := range language.Supported.BaseLanguages() { - tag, _ := language.All.Compose(base) - if !tags[tag] { - checkUnsupported(tag, namers) - } - } - - regions := map[language.Region]bool{} - namers = []testcase{ - {"Regions(en)", Regions(language.English)}, - {"English.Regions()", English.Regions()}, - } - for _, r := range Values.Regions() { - checkDefined(r, namers) - regions[r] = true - } - for _, r := range language.Supported.Regions() { - if r = r.Canonicalize(); !regions[r] { - checkUnsupported(r, namers) - } - } - - scripts := map[language.Script]bool{} - namers = []testcase{ - {"Scripts(en)", Scripts(language.English)}, - {"English.Scripts()", English.Scripts()}, - } - for _, s := range Values.Scripts() { - checkDefined(s, namers) - scripts[s] = true - } - for _, s := range language.Supported.Scripts() { - // Canonicalize the script. - tag, _ := language.DeprecatedScript.Compose(s) - if _, s, _ = tag.Raw(); !scripts[s] { - checkUnsupported(s, namers) - } - } -} - -// TestSupported tests that we have at least some Namers for languages that we -// claim to support. To test the claims in the documentation, it also verifies -// that if a Namer is returned, it will have at least some data. -func TestSupported(t *testing.T) { - supportedTags := Supported.Tags() - if len(supportedTags) != numSupported { - t.Errorf("number of supported was %d; want %d", len(supportedTags), numSupported) - } - - namerFuncs := []struct { - kind string - fn func(language.Tag) Namer - }{ - {"Tags", Tags}, - {"Languages", Languages}, - {"Regions", Regions}, - {"Scripts", Scripts}, - } - - // Verify that we have at least one Namer for all tags we claim to support. - tags := make(map[language.Tag]bool) - for _, tag := range supportedTags { - // Test we have at least one Namer for this supported Tag. - found := false - for _, kind := range namerFuncs { - if defined(t, kind.kind, kind.fn(tag), tag) { - found = true - } - } - if !found { - t.Errorf("%s: supported, but no data available", tag) - } - if tags[tag] { - t.Errorf("%s: included in Supported.Tags more than once", tag) - } - tags[tag] = true - } - - // Verify that we have no Namers for tags we don't claim to support. - for _, base := range language.Supported.BaseLanguages() { - tag, _ := language.All.Compose(base) - // Skip tags that are supported after matching. - if _, _, conf := matcher.Match(tag); conf != language.No { - continue - } - // Test there are no Namers for this tag. - for _, kind := range namerFuncs { - if defined(t, kind.kind, kind.fn(tag), tag) { - t.Errorf("%[1]s(%[2]s) returns a Namer, but %[2]s is not in the set of supported Tags.", kind.kind, tag) - } - } - } -} - -// defined reports whether n is a proper Namer, which means it is non-nil and -// must have at least one non-empty value. -func defined(t *testing.T, kind string, n Namer, tag language.Tag) bool { - if n == nil { - return false - } - switch kind { - case "Tags": - for _, t := range Values.Tags() { - if n.Name(t) != "" { - return true - } - } - case "Languages": - for _, t := range Values.BaseLanguages() { - if n.Name(t) != "" { - return true - } - } - case "Regions": - for _, t := range Values.Regions() { - if n.Name(t) != "" { - return true - } - } - case "Scripts": - for _, t := range Values.Scripts() { - if n.Name(t) != "" { - return true - } - } - } - t.Errorf("%s(%s) returns non-nil Namer without content", kind, tag) - return false -} - -func TestCoverage(t *testing.T) { - en := language.English - tests := []struct { - n Namer - x interface{} - }{ - {Languages(en), Values.Tags()}, - {Scripts(en), Values.Scripts()}, - {Regions(en), Values.Regions()}, - } - for i, tt := range tests { - uniq := make(map[string]interface{}) - - v := reflect.ValueOf(tt.x) - for j := 0; j < v.Len(); j++ { - x := v.Index(j).Interface() - // As of version 28 there is no data for az-Arab in English, - // although there is useful data in other languages. - if x.(fmt.Stringer).String() == "az-Arab" { - continue - } - s := tt.n.Name(x) - if s == "" { - t.Errorf("%d:%d:%s: missing content", i, j, x) - } else if uniq[s] != nil { - t.Errorf("%d:%d:%s: identical return value %q for %v and %v", i, j, x, s, x, uniq[s]) - } - uniq[s] = x - } - } -} - -// TestUpdate tests whether dictionary entries for certain languages need to be -// updated. For some languages, some of the headers may be empty or they may be -// identical to the parent. This code detects if such entries need to be updated -// after a table update. -func TestUpdate(t *testing.T) { - tests := []struct { - d *Dictionary - tag string - }{ - {ModernStandardArabic, "ar-001"}, - {AmericanEnglish, "en-US"}, - {EuropeanSpanish, "es-ES"}, - {BrazilianPortuguese, "pt-BR"}, - {SimplifiedChinese, "zh-Hans"}, - } - - for _, tt := range tests { - _, i, _ := matcher.Match(language.MustParse(tt.tag)) - if !reflect.DeepEqual(tt.d.lang, langHeaders[i]) { - t.Errorf("%s: lang table update needed", tt.tag) - } - if !reflect.DeepEqual(tt.d.script, scriptHeaders[i]) { - t.Errorf("%s: script table update needed", tt.tag) - } - if !reflect.DeepEqual(tt.d.region, regionHeaders[i]) { - t.Errorf("%s: region table update needed", tt.tag) - } - } -} - -func TestIndex(t *testing.T) { - notIn := []string{"aa", "xx", "zz", "aaa", "xxx", "zzz", "Aaaa", "Xxxx", "Zzzz"} - tests := []tagIndex{ - { - "", - "", - "", - }, - { - "bb", - "", - "", - }, - { - "", - "bbb", - "", - }, - { - "", - "", - "Bbbb", - }, - { - "bb", - "bbb", - "Bbbb", - }, - { - "bbccddyy", - "bbbcccdddyyy", - "BbbbCcccDdddYyyy", - }, - } - for i, tt := range tests { - // Create the test set from the tagIndex. - cnt := 0 - for sz := 2; sz <= 4; sz++ { - a := tt[sz-2] - for j := 0; j < len(a); j += sz { - s := a[j : j+sz] - if idx := tt.index(s); idx != cnt { - t.Errorf("%d:%s: index was %d; want %d", i, s, idx, cnt) - } - cnt++ - } - } - if n := tt.len(); n != cnt { - t.Errorf("%d: len was %d; want %d", i, n, cnt) - } - for _, x := range notIn { - if idx := tt.index(x); idx != -1 { - t.Errorf("%d:%s: index was %d; want -1", i, x, idx) - } - } - } -} - -func TestTag(t *testing.T) { - tests := []struct { - dict string - tag string - name string - }{ - // sr is in Value.Languages(), but is not supported by agq. - {"agq", "sr", "|[language: sr]"}, - {"nl", "nl", "Nederlands"}, - // CLDR 30 dropped Vlaams as the word for nl-BE. It is still called - // Flemish in English, though. TODO: check if this is a CLDR bug. - // {"nl", "nl-BE", "Vlaams"}, - {"nl", "nl-BE", "Nederlands (België)"}, - {"nl", "vls", "West-Vlaams"}, - {"en", "nl-BE", "Flemish"}, - {"en", "en", "English"}, - {"en", "en-GB", "British English"}, - {"en", "en-US", "American English"}, // American English in CLDR 24+ - {"ru", "ru", "русский"}, - {"ru", "ru-RU", "русский (Россия)"}, - {"ru", "ru-Cyrl", "русский (кириллица)"}, - {"en", lastLang2zu.String(), "Zulu"}, - {"en", firstLang2aa.String(), "Afar"}, - {"en", lastLang3zza.String(), "Zaza"}, - {"en", firstLang3ace.String(), "Achinese"}, - {"en", firstTagAr001.String(), "Modern Standard Arabic"}, - {"en", lastTagZhHant.String(), "Traditional Chinese"}, - {"en", "aaa", "|Unknown language (aaa)"}, - {"en", "zzj", "|Unknown language (zzj)"}, - // If full tag doesn't match, try without script or region. - {"en", "aa-Hans", "Afar (Simplified Han)"}, - {"en", "af-Arab", "Afrikaans (Arabic)"}, - {"en", "zu-Cyrl", "Zulu (Cyrillic)"}, - {"en", "aa-GB", "Afar (United Kingdom)"}, - {"en", "af-NA", "Afrikaans (Namibia)"}, - {"en", "zu-BR", "Zulu (Brazil)"}, - // Correct inheritance and language selection. - {"zh", "zh-TW", "中文 (台湾)"}, - {"zh", "zh-Hant-TW", "繁体中文 (台湾)"}, - {"zh-Hant", "zh-TW", "中文 (台灣)"}, - {"zh-Hant", "zh-Hant-TW", "繁體中文 (台灣)"}, - // Some rather arbitrary interpretations for Serbian. This is arguably - // correct and consistent with the way zh-[Hant-]TW is handled. It will - // also give results more in line with the expectations if users - // explicitly use "sh". - {"sr-Latn", "sr-ME", "srpski (Crna Gora)"}, - {"sr-Latn", "sr-Latn-ME", "srpskohrvatski (Crna Gora)"}, - // Double script and region - {"nl", "en-Cyrl-BE", "Engels (Cyrillisch, België)"}, - } - for _, tt := range tests { - t.Run(tt.dict+"/"+tt.tag, func(t *testing.T) { - name, fmtName := splitName(tt.name) - dict := language.MustParse(tt.dict) - tag := language.Raw.MustParse(tt.tag) - d := Tags(dict) - if n := d.Name(tag); n != name { - // There are inconsistencies w.r.t. capitalization in the tests - // due to CLDR's update procedure which treats modern and other - // languages differently. - // See http://unicode.org/cldr/trac/ticket/8051. - // TODO: use language capitalization to sanitize the strings. - t.Errorf("Name(%s) = %q; want %q", tag, n, name) - } - - p := message.NewPrinter(dict) - if n := p.Sprint(Tag(tag)); n != fmtName { - t.Errorf("Tag(%s) = %q; want %q", tag, n, fmtName) - } - }) - } -} - -func splitName(names string) (name, formatName string) { - split := strings.Split(names, "|") - name, formatName = split[0], split[0] - if len(split) > 1 { - formatName = split[1] - } - return name, formatName -} - -func TestLanguage(t *testing.T) { - tests := []struct { - dict string - tag string - name string - }{ - // sr is in Value.Languages(), but is not supported by agq. - {"agq", "sr", "|[language: sr]"}, - // CLDR 30 dropped Vlaams as the word for nl-BE. It is still called - // Flemish in English, though. TODO: this is probably incorrect. - // West-Vlaams (vls) is not Vlaams. West-Vlaams could be considered its - // own language, whereas Vlaams is generally Dutch. So expect to have - // to change these tests back. - {"nl", "nl", "Nederlands"}, - {"nl", "vls", "West-Vlaams"}, - {"nl", "nl-BE", "Nederlands"}, - {"en", "pt", "Portuguese"}, - {"en", "pt-PT", "European Portuguese"}, - {"en", "pt-BR", "Brazilian Portuguese"}, - {"en", "en", "English"}, - {"en", "en-GB", "British English"}, - {"en", "en-US", "American English"}, // American English in CLDR 24+ - {"en", lastLang2zu.String(), "Zulu"}, - {"en", firstLang2aa.String(), "Afar"}, - {"en", lastLang3zza.String(), "Zaza"}, - {"en", firstLang3ace.String(), "Achinese"}, - {"en", firstTagAr001.String(), "Modern Standard Arabic"}, - {"en", lastTagZhHant.String(), "Traditional Chinese"}, - {"en", "aaa", "|Unknown language (aaa)"}, - {"en", "zzj", "|Unknown language (zzj)"}, - // If full tag doesn't match, try without script or region. - {"en", "aa-Hans", "Afar"}, - {"en", "af-Arab", "Afrikaans"}, - {"en", "zu-Cyrl", "Zulu"}, - {"en", "aa-GB", "Afar"}, - {"en", "af-NA", "Afrikaans"}, - {"en", "zu-BR", "Zulu"}, - {"agq", "zh-Hant", "|[language: zh-Hant]"}, - {"en", "sh", "Serbo-Croatian"}, - {"en", "sr-Latn", "Serbo-Croatian"}, - {"en", "sr", "Serbian"}, - {"en", "sr-ME", "Serbian"}, - {"en", "sr-Latn-ME", "Serbo-Croatian"}, // See comments in TestTag. - } - for _, tt := range tests { - testtext.Run(t, tt.dict+"/"+tt.tag, func(t *testing.T) { - name, fmtName := splitName(tt.name) - dict := language.MustParse(tt.dict) - tag := language.Raw.MustParse(tt.tag) - p := message.NewPrinter(dict) - d := Languages(dict) - if n := d.Name(tag); n != name { - t.Errorf("Name(%v) = %q; want %q", tag, n, name) - } - if n := p.Sprint(Language(tag)); n != fmtName { - t.Errorf("Language(%v) = %q; want %q", tag, n, fmtName) - } - if len(tt.tag) <= 3 { - base := language.MustParseBase(tt.tag) - if n := d.Name(base); n != name { - t.Errorf("Name(%v) = %q; want %q", base, n, name) - } - if n := p.Sprint(Language(base)); n != fmtName { - t.Errorf("Language(%v) = %q; want %q", base, n, fmtName) - } - } - }) - } -} - -func TestScript(t *testing.T) { - tests := []struct { - dict string - scr string - name string - }{ - {"nl", "Arab", "Arabisch"}, - {"en", "Arab", "Arabic"}, - {"en", "Zzzz", "Unknown Script"}, - {"zh-Hant", "Hang", "韓文字"}, - {"zh-Hant-HK", "Hang", "韓文字"}, - {"zh", "Arab", "阿拉伯文"}, - {"zh-Hans-HK", "Arab", "阿拉伯文"}, // same as zh - {"zh-Hant", "Arab", "阿拉伯文"}, - {"zh-Hant-HK", "Arab", "阿拉伯文"}, // same as zh - // Canonicalized form - {"en", "Qaai", "Inherited"}, // deprecated script, now is Zinh - {"en", "sh", "Unknown Script"}, // sh canonicalizes to sr-Latn - {"en", "en", "Unknown Script"}, - // Don't introduce scripts with canonicalization. - {"en", "sh", "Unknown Script"}, // sh canonicalizes to sr-Latn - } - for _, tt := range tests { - t.Run(tt.dict+"/"+tt.scr, func(t *testing.T) { - name, fmtName := splitName(tt.name) - dict := language.MustParse(tt.dict) - p := message.NewPrinter(dict) - d := Scripts(dict) - var tag language.Tag - if unicode.IsUpper(rune(tt.scr[0])) { - x := language.MustParseScript(tt.scr) - if n := d.Name(x); n != name { - t.Errorf("Name(%v) = %q; want %q", x, n, name) - } - if n := p.Sprint(Script(x)); n != fmtName { - t.Errorf("Script(%v) = %q; want %q", x, n, fmtName) - } - tag, _ = language.Raw.Compose(x) - } else { - tag = language.Raw.MustParse(tt.scr) - } - if n := d.Name(tag); n != name { - t.Errorf("Name(%v) = %q; want %q", tag, n, name) - } - if n := p.Sprint(Script(tag)); n != fmtName { - t.Errorf("Script(%v) = %q; want %q", tag, n, fmtName) - } - }) - } -} - -func TestRegion(t *testing.T) { - tests := []struct { - dict string - reg string - name string - }{ - {"nl", "NL", "Nederland"}, - {"en", "US", "United States"}, - {"en", "ZZ", "Unknown Region"}, - {"en-GB", "NL", "Netherlands"}, - // Canonical equivalents - {"en", "UK", "United Kingdom"}, - // No region - {"en", "pt", "Unknown Region"}, - {"en", "und", "Unknown Region"}, - // Don't introduce regions with canonicalization. - {"en", "mo", "Unknown Region"}, - } - for _, tt := range tests { - t.Run(tt.dict+"/"+tt.reg, func(t *testing.T) { - dict := language.MustParse(tt.dict) - p := message.NewPrinter(dict) - d := Regions(dict) - var tag language.Tag - if unicode.IsUpper(rune(tt.reg[0])) { - // Region - x := language.MustParseRegion(tt.reg) - if n := d.Name(x); n != tt.name { - t.Errorf("Name(%v) = %q; want %q", x, n, tt.name) - } - if n := p.Sprint(Region(x)); n != tt.name { - t.Errorf("Region(%v) = %q; want %q", x, n, tt.name) - } - tag, _ = language.Raw.Compose(x) - } else { - tag = language.Raw.MustParse(tt.reg) - } - if n := d.Name(tag); n != tt.name { - t.Errorf("Name(%v) = %q; want %q", tag, n, tt.name) - } - if n := p.Sprint(Region(tag)); n != tt.name { - t.Errorf("Region(%v) = %q; want %q", tag, n, tt.name) - } - }) - } -} - -func TestSelf(t *testing.T) { - tests := []struct { - tag string - name string - }{ - {"nl", "Nederlands"}, - // CLDR 30 dropped Vlaams as the word for nl-BE. It is still called - // Flemish in English, though. TODO: check if this is a CLDR bug. - // {"nl-BE", "Vlaams"}, - {"nl-BE", "Nederlands"}, - {"en-GB", "British English"}, - {lastLang2zu.String(), "isiZulu"}, - {firstLang2aa.String(), ""}, // not defined - {lastLang3zza.String(), ""}, // not defined - {firstLang3ace.String(), ""}, // not defined - {firstTagAr001.String(), "العربية الرسمية الحديثة"}, - {"ar", "العربية"}, - {lastTagZhHant.String(), "繁體中文"}, - {"aaa", ""}, - {"zzj", ""}, - // Drop entries that are not in the requested script, even if there is - // an entry for the language. - {"aa-Hans", ""}, - {"af-Arab", ""}, - {"zu-Cyrl", ""}, - // Append the country name in the language of the matching language. - {"af-NA", "Afrikaans"}, - {"zh", "中文"}, - // zh-TW should match zh-Hant instead of zh! - {"zh-TW", "繁體中文"}, - {"zh-Hant", "繁體中文"}, - {"zh-Hans", "简体中文"}, - {"zh-Hant-TW", "繁體中文"}, - {"zh-Hans-TW", "简体中文"}, - // Take the entry for sr which has the matching script. - // TODO: Capitalization changed as of CLDR 26, but change seems - // arbitrary. Revisit capitalization with revision 27. See - // http://unicode.org/cldr/trac/ticket/8051. - {"sr", "српски"}, - // TODO: sr-ME should show up as Serbian or Montenegrin, not Serbo- - // Croatian. This is an artifact of the current algorithm, which is the - // way it is to have the preferred behavior for other languages such as - // Chinese. We can hardwire this case in the table generator or package - // code, but we first check if CLDR can be updated. - // {"sr-ME", "Srpski"}, // Is Srpskohrvatski - {"sr-Latn-ME", "srpskohrvatski"}, - {"sr-Cyrl-ME", "српски"}, - {"sr-NL", "српски"}, - // NOTE: kk is defined, but in Cyrillic script. For China, Arab is the - // dominant script. We do not have data for kk-Arab and we chose to not - // fall back in such cases. - {"kk-CN", ""}, - } - for i, tt := range tests { - d := Self - if n := d.Name(language.Raw.MustParse(tt.tag)); n != tt.name { - t.Errorf("%d:%s: was %q; want %q", i, tt.tag, n, tt.name) - } - } -} - -func TestEquivalence(t *testing.T) { - testCases := []struct { - desc string - namer Namer - }{ - {"Self", Self}, - {"Tags", Tags(language.Romanian)}, - {"Languages", Languages(language.Romanian)}, - {"Scripts", Scripts(language.Romanian)}, - } - for _, tc := range testCases { - t.Run(tc.desc, func(t *testing.T) { - ro := tc.namer.Name(language.Raw.MustParse("ro-MD")) - mo := tc.namer.Name(language.Raw.MustParse("mo")) - if ro != mo { - t.Errorf("%q != %q", ro, mo) - } - }) - } -} - -func TestDictionaryLang(t *testing.T) { - tests := []struct { - d *Dictionary - tag string - name string - }{ - {English, "en", "English"}, - {Portuguese, "af", "africâner"}, - {EuropeanPortuguese, "af", "africanês"}, - {English, "nl-BE", "Flemish"}, - } - for i, test := range tests { - tag := language.MustParse(test.tag) - if got := test.d.Tags().Name(tag); got != test.name { - t.Errorf("%d:%v: got %s; want %s", i, tag, got, test.name) - } - if base, _ := language.Compose(tag.Base()); base == tag { - if got := test.d.Languages().Name(base); got != test.name { - t.Errorf("%d:%v: got %s; want %s", i, tag, got, test.name) - } - } - } -} - -func TestDictionaryRegion(t *testing.T) { - tests := []struct { - d *Dictionary - region string - name string - }{ - {English, "FR", "France"}, - {Portuguese, "009", "Oceania"}, - {EuropeanPortuguese, "009", "Oceânia"}, - } - for i, test := range tests { - tag := language.MustParseRegion(test.region) - if got := test.d.Regions().Name(tag); got != test.name { - t.Errorf("%d:%v: got %s; want %s", i, tag, got, test.name) - } - } -} - -func TestDictionaryScript(t *testing.T) { - tests := []struct { - d *Dictionary - script string - name string - }{ - {English, "Cyrl", "Cyrillic"}, - {EuropeanPortuguese, "Gujr", "guzerate"}, - } - for i, test := range tests { - tag := language.MustParseScript(test.script) - if got := test.d.Scripts().Name(tag); got != test.name { - t.Errorf("%d:%v: got %s; want %s", i, tag, got, test.name) - } - } -} diff --git a/vendor/golang.org/x/text/language/display/examples_test.go b/vendor/golang.org/x/text/language/display/examples_test.go deleted file mode 100644 index 15d75843..00000000 --- a/vendor/golang.org/x/text/language/display/examples_test.go +++ /dev/null @@ -1,116 +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 display_test - -import ( - "fmt" - - "golang.org/x/text/language" - "golang.org/x/text/language/display" - "golang.org/x/text/message" -) - -func ExampleFormatter() { - message.SetString(language.Dutch, "In %v people speak %v.", "In %v spreekt men %v.") - - fr := language.French - region, _ := fr.Region() - for _, tag := range []string{"en", "nl"} { - p := message.NewPrinter(language.Make(tag)) - - p.Printf("In %v people speak %v.", display.Region(region), display.Language(fr)) - p.Println() - } - - // Output: - // In France people speak French. - // In Frankrijk spreekt men Frans. -} - -func ExampleNamer() { - supported := []string{ - "en-US", "en-GB", "ja", "zh", "zh-Hans", "zh-Hant", "pt", "pt-PT", "ko", "ar", "el", "ru", "uk", "pa", - } - - en := display.English.Languages() - - for _, s := range supported { - t := language.MustParse(s) - fmt.Printf("%-20s (%s)\n", en.Name(t), display.Self.Name(t)) - } - - // Output: - // American English (American English) - // British English (British English) - // Japanese (日本語) - // Chinese (中文) - // Simplified Chinese (简体中文) - // Traditional Chinese (繁體中文) - // Portuguese (português) - // European Portuguese (português europeu) - // Korean (한국어) - // Arabic (العربية) - // Greek (Ελληνικά) - // Russian (русский) - // Ukrainian (українська) - // Punjabi (ਪੰਜਾਬੀ) -} - -func ExampleTags() { - n := display.Tags(language.English) - fmt.Println(n.Name(language.Make("nl"))) - fmt.Println(n.Name(language.Make("nl-BE"))) - fmt.Println(n.Name(language.Make("nl-CW"))) - fmt.Println(n.Name(language.Make("nl-Arab"))) - fmt.Println(n.Name(language.Make("nl-Cyrl-RU"))) - - // Output: - // Dutch - // Flemish - // Dutch (Curaçao) - // Dutch (Arabic) - // Dutch (Cyrillic, Russia) -} - -// ExampleDictionary shows how to reduce the amount of data linked into your -// binary by only using the predefined Dictionary variables of the languages you -// wish to support. -func ExampleDictionary() { - tags := []language.Tag{ - language.English, - language.German, - language.Japanese, - language.Russian, - } - dicts := []*display.Dictionary{ - display.English, - display.German, - display.Japanese, - display.Russian, - } - - m := language.NewMatcher(tags) - - getDict := func(t language.Tag) *display.Dictionary { - _, i, confidence := m.Match(t) - // Skip this check if you want to support a fall-back language, which - // will be the first one passed to NewMatcher. - if confidence == language.No { - return nil - } - return dicts[i] - } - - // The matcher will match Swiss German to German. - n := getDict(language.Make("gsw")).Languages() - fmt.Println(n.Name(language.German)) - fmt.Println(n.Name(language.Make("de-CH"))) - fmt.Println(n.Name(language.Make("gsw"))) - - // Output: - // Deutsch - // Schweizer Hochdeutsch - // Schweizerdeutsch -} diff --git a/vendor/golang.org/x/text/language/display/lookup.go b/vendor/golang.org/x/text/language/display/lookup.go deleted file mode 100644 index e6dc0e01..00000000 --- a/vendor/golang.org/x/text/language/display/lookup.go +++ /dev/null @@ -1,251 +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 display - -// This file contains common lookup code that is shared between the various -// implementations of Namer and Dictionaries. - -import ( - "fmt" - "sort" - "strings" - - "golang.org/x/text/language" -) - -type namer interface { - // name gets the string for the given index. It should walk the - // inheritance chain if a value is not present in the base index. - name(idx int) string -} - -func nameLanguage(n namer, x interface{}) string { - t, _ := language.All.Compose(x) - for { - i, _, _ := langTagSet.index(t.Raw()) - if s := n.name(i); s != "" { - return s - } - if t = t.Parent(); t == language.Und { - return "" - } - } -} - -func nameScript(n namer, x interface{}) string { - t, _ := language.DeprecatedScript.Compose(x) - _, s, _ := t.Raw() - return n.name(scriptIndex.index(s.String())) -} - -func nameRegion(n namer, x interface{}) string { - t, _ := language.DeprecatedRegion.Compose(x) - _, _, r := t.Raw() - return n.name(regionIndex.index(r.String())) -} - -func nameTag(langN, scrN, regN namer, x interface{}) string { - t, ok := x.(language.Tag) - if !ok { - return "" - } - const form = language.All &^ language.SuppressScript - if c, err := form.Canonicalize(t); err == nil { - t = c - } - _, sRaw, rRaw := t.Raw() - i, scr, reg := langTagSet.index(t.Raw()) - for i != -1 { - if str := langN.name(i); str != "" { - if hasS, hasR := (scr != language.Script{}), (reg != language.Region{}); hasS || hasR { - ss, sr := "", "" - if hasS { - ss = scrN.name(scriptIndex.index(scr.String())) - } - if hasR { - sr = regN.name(regionIndex.index(reg.String())) - } - // TODO: use patterns in CLDR or at least confirm they are the - // same for all languages. - if ss != "" && sr != "" { - return fmt.Sprintf("%s (%s, %s)", str, ss, sr) - } - if ss != "" || sr != "" { - return fmt.Sprintf("%s (%s%s)", str, ss, sr) - } - } - return str - } - scr, reg = sRaw, rRaw - if t = t.Parent(); t == language.Und { - return "" - } - i, _, _ = langTagSet.index(t.Raw()) - } - return "" -} - -// header contains the data and indexes for a single namer. -// data contains a series of strings concatenated into one. index contains the -// offsets for a string in data. For example, consider a header that defines -// strings for the languages de, el, en, fi, and nl: -// -// header{ -// data: "GermanGreekEnglishDutch", -// index: []uint16{ 0, 6, 11, 18, 18, 23 }, -// } -// -// For a language with index i, the string is defined by -// data[index[i]:index[i+1]]. So the number of elements in index is always one -// greater than the number of languages for which header defines a value. -// A string for a language may be empty, which means the name is undefined. In -// the above example, the name for fi (Finnish) is undefined. -type header struct { - data string - index []uint16 -} - -// name looks up the name for a tag in the dictionary, given its index. -func (h *header) name(i int) string { - if 0 <= i && i < len(h.index)-1 { - return h.data[h.index[i]:h.index[i+1]] - } - return "" -} - -// tagSet is used to find the index of a language in a set of tags. -type tagSet struct { - single tagIndex - long []string -} - -var ( - langTagSet = tagSet{ - single: langIndex, - long: langTagsLong, - } - - // selfTagSet is used for indexing the language strings in their own - // language. - selfTagSet = tagSet{ - single: selfIndex, - long: selfTagsLong, - } - - zzzz = language.MustParseScript("Zzzz") - zz = language.MustParseRegion("ZZ") -) - -// index returns the index of the tag for the given base, script and region or -// its parent if the tag is not available. If the match is for a parent entry, -// the excess script and region are returned. -func (ts *tagSet) index(base language.Base, scr language.Script, reg language.Region) (int, language.Script, language.Region) { - lang := base.String() - index := -1 - if (scr != language.Script{} || reg != language.Region{}) { - if scr == zzzz { - scr = language.Script{} - } - if reg == zz { - reg = language.Region{} - } - - i := sort.SearchStrings(ts.long, lang) - // All entries have either a script or a region and not both. - scrStr, regStr := scr.String(), reg.String() - for ; i < len(ts.long) && strings.HasPrefix(ts.long[i], lang); i++ { - if s := ts.long[i][len(lang)+1:]; s == scrStr { - scr = language.Script{} - index = i + ts.single.len() - break - } else if s == regStr { - reg = language.Region{} - index = i + ts.single.len() - break - } - } - } - if index == -1 { - index = ts.single.index(lang) - } - return index, scr, reg -} - -func (ts *tagSet) Tags() []language.Tag { - tags := make([]language.Tag, 0, ts.single.len()+len(ts.long)) - ts.single.keys(func(s string) { - tags = append(tags, language.Raw.MustParse(s)) - }) - for _, s := range ts.long { - tags = append(tags, language.Raw.MustParse(s)) - } - return tags -} - -func supportedScripts() []language.Script { - scr := make([]language.Script, 0, scriptIndex.len()) - scriptIndex.keys(func(s string) { - scr = append(scr, language.MustParseScript(s)) - }) - return scr -} - -func supportedRegions() []language.Region { - reg := make([]language.Region, 0, regionIndex.len()) - regionIndex.keys(func(s string) { - reg = append(reg, language.MustParseRegion(s)) - }) - return reg -} - -// tagIndex holds a concatenated lists of subtags of length 2 to 4, one string -// for each length, which can be used in combination with binary search to get -// the index associated with a tag. -// For example, a tagIndex{ -// "arenesfrruzh", // 6 2-byte tags. -// "barwae", // 2 3-byte tags. -// "", -// } -// would mean that the 2-byte tag "fr" had an index of 3, and the 3-byte tag -// "wae" had an index of 7. -type tagIndex [3]string - -func (t *tagIndex) index(s string) int { - sz := len(s) - if sz < 2 || 4 < sz { - return -1 - } - a := t[sz-2] - index := sort.Search(len(a)/sz, func(i int) bool { - p := i * sz - return a[p:p+sz] >= s - }) - p := index * sz - if end := p + sz; end > len(a) || a[p:end] != s { - return -1 - } - // Add the number of tags for smaller sizes. - for i := 0; i < sz-2; i++ { - index += len(t[i]) / (i + 2) - } - return index -} - -// len returns the number of tags that are contained in the tagIndex. -func (t *tagIndex) len() (n int) { - for i, s := range t { - n += len(s) / (i + 2) - } - return n -} - -// keys calls f for each tag. -func (t *tagIndex) keys(f func(key string)) { - for i, s := range *t { - for ; s != ""; s = s[i+2:] { - f(s[:i+2]) - } - } -} diff --git a/vendor/golang.org/x/text/language/display/maketables.go b/vendor/golang.org/x/text/language/display/maketables.go deleted file mode 100644 index 8f2fd076..00000000 --- a/vendor/golang.org/x/text/language/display/maketables.go +++ /dev/null @@ -1,602 +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. - -// +build ignore - -// Generator for display name tables. - -package main - -import ( - "bytes" - "flag" - "fmt" - "log" - "reflect" - "sort" - "strings" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" - "golang.org/x/text/unicode/cldr" -) - -var ( - test = flag.Bool("test", false, - "test existing tables; can be used to compare web data with package data.") - outputFile = flag.String("output", "tables.go", "output file") - - stats = flag.Bool("stats", false, "prints statistics to stderr") - - short = flag.Bool("short", false, `Use "short" alternatives, when available.`) - draft = flag.String("draft", - "contributed", - `Minimal draft requirements (approved, contributed, provisional, unconfirmed).`) - pkg = flag.String("package", - "display", - "the name of the package in which the generated file is to be included") - - tags = newTagSet("tags", - []language.Tag{}, - "space-separated list of tags to include or empty for all") - dict = newTagSet("dict", - dictTags(), - "space-separated list or tags for which to include a Dictionary. "+ - `"" means the common list from go.text/language.`) -) - -func dictTags() (tag []language.Tag) { - // TODO: replace with language.Common.Tags() once supported. - const str = "af am ar ar-001 az bg bn ca cs da de el en en-US en-GB " + - "es es-ES es-419 et fa fi fil fr fr-CA gu he hi hr hu hy id is it ja " + - "ka kk km kn ko ky lo lt lv mk ml mn mr ms my ne nl no pa pl pt pt-BR " + - "pt-PT ro ru si sk sl sq sr sr-Latn sv sw ta te th tr uk ur uz vi " + - "zh zh-Hans zh-Hant zu" - - for _, s := range strings.Split(str, " ") { - tag = append(tag, language.MustParse(s)) - } - return tag -} - -func main() { - gen.Init() - - // Read the CLDR zip file. - r := gen.OpenCLDRCoreZip() - defer r.Close() - - d := &cldr.Decoder{} - d.SetDirFilter("main", "supplemental") - d.SetSectionFilter("localeDisplayNames") - data, err := d.DecodeZip(r) - if err != nil { - log.Fatalf("DecodeZip: %v", err) - } - - w := gen.NewCodeWriter() - defer w.WriteGoFile(*outputFile, "display") - - gen.WriteCLDRVersion(w) - - b := builder{ - w: w, - data: data, - group: make(map[string]*group), - } - b.generate() -} - -const tagForm = language.All - -// tagSet is used to parse command line flags of tags. It implements the -// flag.Value interface. -type tagSet map[language.Tag]bool - -func newTagSet(name string, tags []language.Tag, usage string) tagSet { - f := tagSet(make(map[language.Tag]bool)) - for _, t := range tags { - f[t] = true - } - flag.Var(f, name, usage) - return f -} - -// String implements the String method of the flag.Value interface. -func (f tagSet) String() string { - tags := []string{} - for t := range f { - tags = append(tags, t.String()) - } - sort.Strings(tags) - return strings.Join(tags, " ") -} - -// Set implements Set from the flag.Value interface. -func (f tagSet) Set(s string) error { - if s != "" { - for _, s := range strings.Split(s, " ") { - if s != "" { - tag, err := tagForm.Parse(s) - if err != nil { - return err - } - f[tag] = true - } - } - } - return nil -} - -func (f tagSet) contains(t language.Tag) bool { - if len(f) == 0 { - return true - } - return f[t] -} - -// builder is used to create all tables with display name information. -type builder struct { - w *gen.CodeWriter - - data *cldr.CLDR - - fromLocs []string - - // destination tags for the current locale. - toTags []string - toTagIndex map[string]int - - // list of supported tags - supported []language.Tag - - // key-value pairs per group - group map[string]*group - - // statistics - sizeIndex int // total size of all indexes of headers - sizeData int // total size of all data of headers - totalSize int -} - -type group struct { - // Maps from a given language to the Namer data for this language. - lang map[language.Tag]keyValues - headers []header - - toTags []string - threeStart int - fourPlusStart int -} - -// set sets the typ to the name for locale loc. -func (g *group) set(t language.Tag, typ, name string) { - kv := g.lang[t] - if kv == nil { - kv = make(keyValues) - g.lang[t] = kv - } - if kv[typ] == "" { - kv[typ] = name - } -} - -type keyValues map[string]string - -type header struct { - tag language.Tag - data string - index []uint16 -} - -var versionInfo = `// Version is deprecated. Use CLDRVersion. -const Version = %#v - -` - -var self = language.MustParse("mul") - -// generate builds and writes all tables. -func (b *builder) generate() { - fmt.Fprintf(b.w, versionInfo, cldr.Version) - - b.filter() - b.setData("lang", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) { - if ldn.Languages != nil { - for _, v := range ldn.Languages.Language { - lang := v.Type - if lang == "root" { - // We prefer the data from "und" - // TODO: allow both the data for root and und somehow. - continue - } - tag := tagForm.MustParse(lang) - if tags.contains(tag) { - g.set(loc, tag.String(), v.Data()) - } - } - } - }) - b.setData("script", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) { - if ldn.Scripts != nil { - for _, v := range ldn.Scripts.Script { - code := language.MustParseScript(v.Type) - if code.IsPrivateUse() { // Qaaa..Qabx - // TODO: data currently appears to be very meager. - // Reconsider if we have data for English. - if loc == language.English { - log.Fatal("Consider including data for private use scripts.") - } - continue - } - g.set(loc, code.String(), v.Data()) - } - } - }) - b.setData("region", func(g *group, loc language.Tag, ldn *cldr.LocaleDisplayNames) { - if ldn.Territories != nil { - for _, v := range ldn.Territories.Territory { - g.set(loc, language.MustParseRegion(v.Type).String(), v.Data()) - } - } - }) - - b.makeSupported() - - b.writeParents() - - b.writeGroup("lang") - b.writeGroup("script") - b.writeGroup("region") - - b.w.WriteConst("numSupported", len(b.supported)) - buf := bytes.Buffer{} - for _, tag := range b.supported { - fmt.Fprint(&buf, tag.String(), "|") - } - b.w.WriteConst("supported", buf.String()) - - b.writeDictionaries() - - b.supported = []language.Tag{self} - - // Compute the names of locales in their own language. Some of these names - // may be specified in their parent locales. We iterate the maximum depth - // of the parent three times to match successive parents of tags until a - // possible match is found. - for i := 0; i < 4; i++ { - b.setData("self", func(g *group, tag language.Tag, ldn *cldr.LocaleDisplayNames) { - parent := tag - if b, s, r := tag.Raw(); i > 0 && (s != language.Script{} && r == language.Region{}) { - parent, _ = language.Raw.Compose(b) - } - if ldn.Languages != nil { - for _, v := range ldn.Languages.Language { - key := tagForm.MustParse(v.Type) - saved := key - if key == parent { - g.set(self, tag.String(), v.Data()) - } - for k := 0; k < i; k++ { - key = key.Parent() - } - if key == tag { - g.set(self, saved.String(), v.Data()) // set does not overwrite a value. - } - } - } - }) - } - - b.writeGroup("self") -} - -func (b *builder) setData(name string, f func(*group, language.Tag, *cldr.LocaleDisplayNames)) { - b.sizeIndex = 0 - b.sizeData = 0 - b.toTags = nil - b.fromLocs = nil - b.toTagIndex = make(map[string]int) - - g := b.group[name] - if g == nil { - g = &group{lang: make(map[language.Tag]keyValues)} - b.group[name] = g - } - for _, loc := range b.data.Locales() { - // We use RawLDML instead of LDML as we are managing our own inheritance - // in this implementation. - ldml := b.data.RawLDML(loc) - - // We do not support the POSIX variant (it is not a supported BCP 47 - // variant). This locale also doesn't happen to contain any data, so - // we'll skip it by checking for this. - tag, err := tagForm.Parse(loc) - if err != nil { - if ldml.LocaleDisplayNames != nil { - log.Fatalf("setData: %v", err) - } - continue - } - if ldml.LocaleDisplayNames != nil && tags.contains(tag) { - f(g, tag, ldml.LocaleDisplayNames) - } - } -} - -func (b *builder) filter() { - filter := func(s *cldr.Slice) { - if *short { - s.SelectOnePerGroup("alt", []string{"short", ""}) - } else { - s.SelectOnePerGroup("alt", []string{"stand-alone", ""}) - } - d, err := cldr.ParseDraft(*draft) - if err != nil { - log.Fatalf("filter: %v", err) - } - s.SelectDraft(d) - } - for _, loc := range b.data.Locales() { - if ldn := b.data.RawLDML(loc).LocaleDisplayNames; ldn != nil { - if ldn.Languages != nil { - s := cldr.MakeSlice(&ldn.Languages.Language) - if filter(&s); len(ldn.Languages.Language) == 0 { - ldn.Languages = nil - } - } - if ldn.Scripts != nil { - s := cldr.MakeSlice(&ldn.Scripts.Script) - if filter(&s); len(ldn.Scripts.Script) == 0 { - ldn.Scripts = nil - } - } - if ldn.Territories != nil { - s := cldr.MakeSlice(&ldn.Territories.Territory) - if filter(&s); len(ldn.Territories.Territory) == 0 { - ldn.Territories = nil - } - } - } - } -} - -// makeSupported creates a list of all supported locales. -func (b *builder) makeSupported() { - // tags across groups - for _, g := range b.group { - for t, _ := range g.lang { - b.supported = append(b.supported, t) - } - } - b.supported = b.supported[:unique(tagsSorter(b.supported))] - -} - -type tagsSorter []language.Tag - -func (a tagsSorter) Len() int { return len(a) } -func (a tagsSorter) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a tagsSorter) Less(i, j int) bool { return a[i].String() < a[j].String() } - -func (b *builder) writeGroup(name string) { - g := b.group[name] - - for _, kv := range g.lang { - for t, _ := range kv { - g.toTags = append(g.toTags, t) - } - } - g.toTags = g.toTags[:unique(tagsBySize(g.toTags))] - - // Allocate header per supported value. - g.headers = make([]header, len(b.supported)) - for i, sup := range b.supported { - kv, ok := g.lang[sup] - if !ok { - g.headers[i].tag = sup - continue - } - data := []byte{} - index := make([]uint16, len(g.toTags), len(g.toTags)+1) - for j, t := range g.toTags { - index[j] = uint16(len(data)) - data = append(data, kv[t]...) - } - index = append(index, uint16(len(data))) - - // Trim the tail of the index. - // TODO: indexes can be reduced in size quite a bit more. - n := len(index) - for ; n >= 2 && index[n-2] == index[n-1]; n-- { - } - index = index[:n] - - // Workaround for a bug in CLDR 26. - // See http://unicode.org/cldr/trac/ticket/8042. - if cldr.Version == "26" && sup.String() == "hsb" { - data = bytes.Replace(data, []byte{'"'}, nil, 1) - } - g.headers[i] = header{sup, string(data), index} - } - g.writeTable(b.w, name) -} - -type tagsBySize []string - -func (l tagsBySize) Len() int { return len(l) } -func (l tagsBySize) Swap(i, j int) { l[i], l[j] = l[j], l[i] } -func (l tagsBySize) Less(i, j int) bool { - a, b := l[i], l[j] - // Sort single-tag entries based on size first. Otherwise alphabetic. - if len(a) != len(b) && (len(a) <= 4 || len(b) <= 4) { - return len(a) < len(b) - } - return a < b -} - -// parentIndices returns slice a of len(tags) where tags[a[i]] is the parent -// of tags[i]. -func parentIndices(tags []language.Tag) []int16 { - index := make(map[language.Tag]int16) - for i, t := range tags { - index[t] = int16(i) - } - - // Construct default parents. - parents := make([]int16, len(tags)) - for i, t := range tags { - parents[i] = -1 - for t = t.Parent(); t != language.Und; t = t.Parent() { - if j, ok := index[t]; ok { - parents[i] = j - break - } - } - } - return parents -} - -func (b *builder) writeParents() { - parents := parentIndices(b.supported) - fmt.Fprintf(b.w, "var parents = ") - b.w.WriteArray(parents) -} - -// writeKeys writes keys to a special index used by the display package. -// tags are assumed to be sorted by length. -func writeKeys(w *gen.CodeWriter, name string, keys []string) { - w.Size += int(3 * reflect.TypeOf("").Size()) - w.WriteComment("Number of keys: %d", len(keys)) - fmt.Fprintf(w, "var (\n\t%sIndex = tagIndex{\n", name) - for i := 2; i <= 4; i++ { - sub := []string{} - for _, t := range keys { - if len(t) != i { - break - } - sub = append(sub, t) - } - s := strings.Join(sub, "") - w.WriteString(s) - fmt.Fprintf(w, ",\n") - keys = keys[len(sub):] - } - fmt.Fprintln(w, "\t}") - if len(keys) > 0 { - w.Size += int(reflect.TypeOf([]string{}).Size()) - fmt.Fprintf(w, "\t%sTagsLong = ", name) - w.WriteSlice(keys) - } - fmt.Fprintln(w, ")\n") -} - -// identifier creates an identifier from the given tag. -func identifier(t language.Tag) string { - return strings.Replace(t.String(), "-", "", -1) -} - -func (h *header) writeEntry(w *gen.CodeWriter, name string) { - if len(dict) > 0 && dict.contains(h.tag) { - fmt.Fprintf(w, "\t{ // %s\n", h.tag) - fmt.Fprintf(w, "\t\t%[1]s%[2]sStr,\n\t\t%[1]s%[2]sIdx,\n", identifier(h.tag), name) - fmt.Fprintln(w, "\t},") - } else if len(h.data) == 0 { - fmt.Fprintln(w, "\t\t{}, //", h.tag) - } else { - fmt.Fprintf(w, "\t{ // %s\n", h.tag) - w.WriteString(h.data) - fmt.Fprintln(w, ",") - w.WriteSlice(h.index) - fmt.Fprintln(w, ",\n\t},") - } -} - -// write the data for the given header as single entries. The size for this data -// was already accounted for in writeEntry. -func (h *header) writeSingle(w *gen.CodeWriter, name string) { - if len(dict) > 0 && dict.contains(h.tag) { - tag := identifier(h.tag) - w.WriteConst(tag+name+"Str", h.data) - - // Note that we create a slice instead of an array. If we use an array - // we need to refer to it as a[:] in other tables, which will cause the - // array to always be included by the linker. See Issue 7651. - w.WriteVar(tag+name+"Idx", h.index) - } -} - -// WriteTable writes an entry for a single Namer. -func (g *group) writeTable(w *gen.CodeWriter, name string) { - start := w.Size - writeKeys(w, name, g.toTags) - w.Size += len(g.headers) * int(reflect.ValueOf(g.headers[0]).Type().Size()) - - fmt.Fprintf(w, "var %sHeaders = [%d]header{\n", name, len(g.headers)) - - title := strings.Title(name) - for _, h := range g.headers { - h.writeEntry(w, title) - } - fmt.Fprintln(w, "}\n") - - for _, h := range g.headers { - h.writeSingle(w, title) - } - n := w.Size - start - fmt.Fprintf(w, "// Total size for %s: %d bytes (%d KB)\n\n", name, n, n/1000) -} - -func (b *builder) writeDictionaries() { - fmt.Fprintln(b.w, "// Dictionary entries of frequent languages") - fmt.Fprintln(b.w, "var (") - parents := parentIndices(b.supported) - - for i, t := range b.supported { - if dict.contains(t) { - ident := identifier(t) - fmt.Fprintf(b.w, "\t%s = Dictionary{ // %s\n", ident, t) - if p := parents[i]; p == -1 { - fmt.Fprintln(b.w, "\t\tnil,") - } else { - fmt.Fprintf(b.w, "\t\t&%s,\n", identifier(b.supported[p])) - } - fmt.Fprintf(b.w, "\t\theader{%[1]sLangStr, %[1]sLangIdx},\n", ident) - fmt.Fprintf(b.w, "\t\theader{%[1]sScriptStr, %[1]sScriptIdx},\n", ident) - fmt.Fprintf(b.w, "\t\theader{%[1]sRegionStr, %[1]sRegionIdx},\n", ident) - fmt.Fprintln(b.w, "\t}") - } - } - fmt.Fprintln(b.w, ")") - - var s string - var a []uint16 - sz := reflect.TypeOf(s).Size() - sz += reflect.TypeOf(a).Size() - sz *= 3 - sz += reflect.TypeOf(&a).Size() - n := int(sz) * len(dict) - fmt.Fprintf(b.w, "// Total size for %d entries: %d bytes (%d KB)\n\n", len(dict), n, n/1000) - - b.w.Size += n -} - -// unique sorts the given lists and removes duplicate entries by swapping them -// past position k, where k is the number of unique values. It returns k. -func unique(a sort.Interface) int { - if a.Len() == 0 { - return 0 - } - sort.Sort(a) - k := 1 - for i := 1; i < a.Len(); i++ { - if a.Less(k-1, i) { - if k != i { - a.Swap(k, i) - } - k++ - } - } - return k -} diff --git a/vendor/golang.org/x/text/language/display/tables.go b/vendor/golang.org/x/text/language/display/tables.go deleted file mode 100644 index be0fcdc0..00000000 --- a/vendor/golang.org/x/text/language/display/tables.go +++ /dev/null @@ -1,53114 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package display - -// CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "32" - -// Version is deprecated. Use CLDRVersion. -const Version = "32" - -var parents = [261]int16{ - // Entry 0 - 3F - -1, -1, -1, -1, -1, 4, 4, 4, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 19, -1, 21, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 37, - 37, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 49, 49, 49, 49, 49, -1, - -1, 56, 57, 57, 57, 57, 57, 57, - // Entry 40 - 7F - 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, -1, -1, -1, -1, - 79, -1, -1, -1, -1, -1, 85, 85, - 85, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - // Entry 80 - BF - 127, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 181, -1, - -1, -1, -1, 186, -1, -1, 189, -1, - // Entry C0 - FF - -1, -1, -1, -1, -1, -1, 197, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 211, 211, 211, -1, - 215, 215, 215, -1, 219, -1, 221, 221, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 238, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 252, -1, -1, - // Entry 100 - 13F - -1, -1, -1, 258, -1, -} - -// Number of keys: 614 -var ( - langIndex = tagIndex{ - "aaabaeafakamanarasavayazbabebgbibmbnbobrbscacechcocrcscucvcydadedvdzeeel" + - "eneoeseteufafffifjfofrfygagdglgngugvhahehihohrhthuhyhziaidieigiiikio" + - "isitiujajvkakgkikjkkklkmknkokrkskukvkwkylalblglilnloltlulvmgmhmimkml" + - "mnmrmsmtmynandnengnlnnnonrnvnyocojomorospapiplpsptqurmrnrorurwsascsd" + - "sesgsiskslsmsnsosqsrssstsusvswtatetgthtitktntotrtstttyugukuruzvevivo" + - "wawoxhyiyozazhzu", - "aceachadaadyaebafhagqainakkakzalealnaltanganparcarnaroarparqarsarwaryarz" + - "asaaseastavkawabalbanbarbasbaxbbcbbjbejbembewbezbfdbfqbgnbhobikbinbj" + - "nbkmblabpybqibrabrhbrxbssbuabugbumbynbyvcadcarcaycchccpcebcggchbchgc" + - "hkchmchnchochpchrchyckbcopcpscrhcrscsbdakdardavdeldendgrdindjedoidsb" + - "dtpduadumdyodyudzgebuefieglegyekaelxenmesuewoextfanfilfitfonfrcfrmfr" + - "ofrpfrrfrsfurgaagaggangaygbagbzgezgilglkgmhgohgomgongorgotgrbgrcgswg" + - "ucgurguzgwihaihakhawhifhilhithmnhsbhsnhupibaibbiloinhizhjamjbojgojmc" + - "jprjrbjutkaakabkackajkamkawkbdkblkcgkdekeakenkfokgpkhakhokhqkhwkiukk" + - "jklnkmbkoikokkoskpekrckrikrjkrlkruksbksfkshkumkutladlaglahlamlezlfnl" + - "ijlivlktlmololloulozlrcltglualuilunluolusluylzhlzzmadmafmagmaimakman" + - "masmdemdfmdrmenmermfemgamghmgomicminmncmnimohmosmrjmuamulmusmwlmwrmw" + - "vmyemyvmznnannapnaqndsnewnianiunjonmgnnhnognonnovnqonsonusnwcnymnynn" + - "yonziosaotapagpalpampappaupcdpcmpdcpdtpeopflphnpmspntponprgproqucqug" + - "rajraprarrgnrifrofromrtmruerugruprwksadsahsamsaqsassatsazsbasbpscnsc" + - "osdcsdhseesehseiselsessgasgsshishnshusidslislysmasmjsmnsmssnksogsrns" + - "rrssystqsuksussuxswbsycsyrszltcytemteotertettigtivtkltkrtlhtlitlytmh" + - "togtpitrutrvtsdtsittttumtvltwqtyvtzmudmugaumbundvaivecvepvlsvmfvotvr" + - "ovunwaewalwarwaswbpwuuxalxmfxogyaoyapyavybbyrlyuezapzblzeazenzghzunz" + - "xxzza", - "", - } - langTagsLong = []string{ // 23 elements - "ar-001", - "az-Arab", - "de-AT", - "de-CH", - "en-AU", - "en-CA", - "en-GB", - "en-US", - "es-419", - "es-ES", - "es-MX", - "fa-AF", - "fr-CA", - "fr-CH", - "nds-NL", - "nl-BE", - "pt-BR", - "pt-PT", - "ro-MD", - "sr-Latn", - "sw-CD", - "zh-Hans", - "zh-Hant", - } -) - -var langHeaders = [261]header{ - { // af - afLangStr, - afLangIdx, - }, - { // agq - "AkanÀmalìÀlabìBɛ̀làlusànBùugɨlìaBɨ̀ŋgalìChɛ̂Dzamɛ̀Gɨ̀lêʔKɨŋgeleSɨ̀kpanìs" + - "KpɛɛshìaKɨ̀fàlàŋsiKɨtsɔŋkaŋEndìHɔŋgalìaÈndònɛshìaEgbòÈtalìaDzàkpànêD" + - "zàbvànêKɨmɛ̀kùulîaMàlaeBùumɛsɛ̀Nɛ̀kpalìDɔ̂sKpuwndzabìKpɔlìsKpotùwgîi" + - "LùmanyìaLushìaLùwandàSòmalìSuedìsTamìTàeTʉʉkìsÙkɛlɛnìaUudùwVìyɛtnàmê" + - "YulùbaChàenêZulùAghem", - []uint16{ // 188 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0020, 0x002b, - 0x002b, 0x002b, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, - 0x0037, 0x0037, 0x0037, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x0045, 0x0045, 0x0045, 0x0045, 0x004f, 0x0058, 0x0058, 0x0064, - 0x0064, 0x0064, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x007e, - 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x008b, - 0x008b, 0x0090, 0x0090, 0x0090, 0x0090, 0x009b, 0x009b, 0x009b, - // Entry 40 - 7F - 0x009b, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00b6, 0x00b6, 0x00c1, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00cc, 0x00cc, 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00e2, 0x00e2, 0x00ee, 0x00ee, 0x00ee, - 0x00f9, 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x010a, 0x0112, - // Entry 80 - BF - 0x0112, 0x011d, 0x011d, 0x011d, 0x011d, 0x0127, 0x012e, 0x0137, - 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, - 0x0137, 0x0137, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0146, 0x0146, 0x014b, 0x014b, 0x014b, 0x014f, 0x014f, 0x014f, - 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0164, - 0x016a, 0x016a, 0x016a, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, - 0x0177, 0x017e, 0x017e, 0x0186, 0x018b, 0x018b, 0x018b, 0x018b, - 0x018b, 0x018b, 0x018b, 0x0190, - }, - }, - { // ak - "AkanAmarikArabikBelarus kasaBɔlgeria kasaBengali kasaKyɛk kasaGyaamanGre" + - "ek kasaBorɔfoSpain kasaPɛɛhyia kasaFrɛnkyeHausaHindiHangri kasaIndon" + - "ihyia kasaIgboItaly kasaGyapan kasaGyabanis kasaKambodia kasaKorea k" + - "asaMalay kasaBɛɛmis kasaNɛpal kasaDɛɛkyePungyabi kasaPɔland kasaPɔɔt" + - "ugal kasaRomenia kasaRahyia kasaRewanda kasaSomalia kasaSweden kasaT" + - "amil kasaTaeland kasaTɛɛki kasaUkren kasaUrdu kasaViɛtnam kasaYoruba" + - "Kyaena kasaZulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001c, 0x002a, - 0x002a, 0x002a, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0051, 0x0058, 0x0058, 0x0062, - 0x0062, 0x0062, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x007d, - 0x007d, 0x0082, 0x0082, 0x0082, 0x0082, 0x008d, 0x008d, 0x008d, - // Entry 40 - 7F - 0x008d, 0x009c, 0x009c, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00aa, 0x00aa, 0x00b5, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00f0, 0x00f0, 0x00f0, - 0x00fb, 0x00fb, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, - 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0110, 0x0110, 0x011c, - // Entry 80 - BF - 0x011c, 0x012b, 0x012b, 0x012b, 0x012b, 0x0137, 0x0142, 0x014e, - 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, - 0x014e, 0x014e, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, - 0x0165, 0x0165, 0x016f, 0x016f, 0x016f, 0x017b, 0x017b, 0x017b, - 0x017b, 0x017b, 0x0187, 0x0187, 0x0187, 0x0187, 0x0187, 0x0191, - 0x019a, 0x019a, 0x019a, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01ad, 0x01ad, 0x01b8, 0x01bc, - }, - }, - { // am - amLangStr, - amLangIdx, - }, - { // ar - arLangStr, - arLangIdx, - }, - { // ar-EG - "الدنماركية", - []uint16{ // 32 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, - }, - }, - { // ar-LY - "الغورانيةاللاووالسواحيليةالتيغرينيةالمابودونجونيةصوربيا العلياسامي الجنو" + - "بيةالكرواتية الصربيةالسواحيلية الكونغولية", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - // Entry 40 - 7F - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - // Entry 80 - BF - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - // Entry C0 - FF - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - // Entry 100 - 13F - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - // Entry 140 - 17F - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - // Entry 180 - 1BF - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - // Entry 1C0 - 1FF - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - // Entry 200 - 23F - 0x007b, 0x007b, 0x007b, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - // Entry 240 - 27F - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x00b5, 0x00de, - }, - }, - { // ar-SA - "الغورانيةاللاووالسواحيليةالتيلوجوالتيغرينيةالمابودونجونيةصوربيا العلياسا" + - "مي الجنوبيةالكرواتية الصربيةالسواحيلية الكونغولية", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - // Entry 40 - 7F - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - // Entry 80 - BF - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x0032, 0x0032, 0x0042, 0x0042, 0x0042, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - // Entry C0 - FF - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - // Entry 100 - 13F - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - // Entry 140 - 17F - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - // Entry 180 - 1BF - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - // Entry 1C0 - 1FF - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - // Entry 200 - 23F - 0x008b, 0x008b, 0x008b, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - // Entry 240 - 27F - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00c5, 0x00ee, - }, - }, - { // as - "অসমীয়ালেটিন আমেৰিকান স্পেনিচ", - []uint16{ // 601 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 40 - 7F - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 80 - BF - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry C0 - FF - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 100 - 13F - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 140 - 17F - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 180 - 1BF - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 1C0 - 1FF - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 200 - 23F - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 240 - 27F - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0053, - }, - }, - { // asa - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKichekiKijerumaniKigiri" + - "kiKiingeredhaKihithpaniaKiajemiKifaranthaKihauthaKihindiKihungariKii" + - "ndonethiaKiigboKiitaliaanoKijapaniKijavaKikambodiaKikoreaKimalesiaKi" + - "burmaKinepaliKiholandhiKipunjabiKipolandiKirenoKiromaniaKiruthiKinya" + - "randwaKithomaliKithwidiKitamilKitailandiKiturukiKiukraniaKiurduKivie" + - "tinamuKiyorubaKichinaKidhuluKipare", - []uint16{ // 206 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0042, 0x0042, 0x0042, 0x0042, 0x004a, 0x0055, 0x0055, 0x0060, - 0x0060, 0x0060, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0079, - 0x0079, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, 0x0089, 0x0089, - // Entry 40 - 7F - 0x0089, 0x0095, 0x0095, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x00a6, 0x00a6, 0x00ae, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00be, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00ce, 0x00ce, 0x00d5, 0x00d5, 0x00d5, - 0x00dd, 0x00dd, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f9, - // Entry 80 - BF - 0x00f9, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0108, 0x010f, 0x011a, - 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x011a, 0x011a, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x012b, 0x012b, 0x0132, 0x0132, 0x0132, 0x013c, 0x013c, 0x013c, - 0x013c, 0x013c, 0x0144, 0x0144, 0x0144, 0x0144, 0x0144, 0x014d, - 0x0153, 0x0153, 0x0153, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - 0x015e, 0x0166, 0x0166, 0x016d, 0x0174, 0x0174, 0x0174, 0x0174, - 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, - // Entry C0 - FF - 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, - 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x017a, - }, - }, - { // ast - "afarabkhazianuavestanínafrikaansakanamháricuaragonésárabeasamésaváricuay" + - "maraazerbaixanubashkirbielorrusubúlgarubislamabambarabengalíntibetan" + - "ubretónbosniucatalánchechenuchamorrocorsucreechecueslávicu eclesiást" + - "icuchuvashgalésdanésalemándivehidzongkhaewegrieguinglésesperantoespa" + - "ñolestoniuvascupersafulahfinlandésfixanuferoésfrancésfrisón occiden" + - "talirlandésgaélicu escocésgalleguguaraníguyaratímanésḥausahebréuhind" + - "ihiri motucroatahaitianuhúngaruarmeniuhererointerlinguaindonesiuinte" + - "rlingueigboyi de Sichuáninupiaqidoislandésitalianuinuktitutxaponésxa" + - "vanésxeorxanukongokikuyukuanyamakazaquistanínkalaallisutḥemercanarés" + - "coreanukanuricachemiréscurdukomicórnicukirguistanínllatínluxemburgué" + - "sgandalimburguéslingalalaosianulituanuluba-katangaletónmalgaxemarsha" + - "llésmaorímacedoniumalayalammongolmarathimalayumaltésbirmanunaurundeb" + - "ele del nortenepalésndonganeerlandésnoruegu Nynorsknoruegu Bokmålnde" + - "bele del surnavajonyanjaoccitanuojibwaoromooriyaoséticupunyabípalipo" + - "lacupashtuportuguésquechuaromancherundirumanurusukinyarwandasánscrit" + - "usardusindhisami del nortesangocingaléseslovacueslovenusamoanushonas" + - "omalínalbanuserbiuswatisotho del sursondanéssuecusuaḥilitamiltelugut" + - "axiquistaníntailandéstigrinyaturcomanutswanatonganuturcutsongatártar" + - "utahitianuuigurucraínurduuzbequistanínvendavietnamínvolapükvalónwolo" + - "fxhosayiddishyorubazhuangchinuzulúachinésacoliadangmeadygheárabe de " + - "Túnezafrihiliaghemainuacadianualabamaaleutgheg d’Albaniaaltai del su" + - "ringlés antiguuangikaaraméumapuchearaonaarapahoárabe d’Arxeliaarawak" + - "árabe de Marruecosárabe d’Exiptuasullingua de signos americanaastur" + - "ianukotavaawadhibaluchibalinésbávarubasaabamunbatak tobaghomalabejab" + - "embabetawibenabafutbadagabalochi occidentalbhojpuribikolbinibanjarko" + - "msiksikabishnupriyabakhtiaribrajbrahuibodoakooseburiatbuginésbulubli" + - "nmedumbacaddocaribecayugaatsamcebuanuchigachibchachagataichuukésmari" + - "xíriga chinookchoctawchipewyanucheroquicheyennekurdu centralcópticuc" + - "apiznonturcu de Crimeafrancés criollu seselwakashubianudakotadargwat" + - "aitadelawareslavedogribdinkazarmadogribaxu sorbiudusun centraldualan" + - "eerlandés mediujola-fonyidyuladazagaembúefikemilianuexipciu antiguue" + - "kajukelamitainglés mediuyupik centralewondoestremeñufangfilipínfinla" + - "ndés de Tornedalenfonfrancés cajunfrancés mediufrancés antiguuarpita" + - "nufrisón del nortefrisón orientalfriulianugagagauzchinu gangayogbaya" + - "dari zoroastrianugeezgilbertésgilakialtualemán mediualtualemán antig" + - "uugoan konkanigondigorontalogóticugrebogriegu antiguualemán de Suiza" + - "wayuufrafragusiigwichʼinhaidachinu hakkahawaianuhindi de Fijihiligay" + - "nonhititahmongaltu sorbiuchinu xianghupaibanibibioilokoingushingrian" + - "uinglés criollu xamaicanulojbanngombamachamexudeo-persaxudeo-árabeju" + - "tlandéskara-kalpakkabileñukachinjjukambakawikabardianukanembutyapmak" + - "ondecabuverdianukenyangkorokaingangkhasikhotanéskoyra chiinikhowarki" + - "rmanjkikakokalenjinkimbundukomi-permyakkonkanikosraeanukpellekaracha" + - "y-balkarkriokinaray-akarelianukurukhshambalabafiacolonianukumykkuten" + - "ailadinolangilahndalambalezghianulingua franca novaligurianulivonian" + - "ulakotalombardumongoloziluri del nortelatgalianuluba-lulualuisenolun" + - "daluomizoluyiachinu lliterariulazmadurésmafamagahimaithilimakasarman" + - "dingomasáimabamokshamandarmendemerumorisyenírlandés mediumakhuwa-mee" + - "ttometa’micmacminangkabaumanchúmanipurimohawkmossimari occidentalmun" + - "dangmúltiples llingüescreekmirandésmarwarimentawaimyeneerzyamazander" + - "anichinu min nannapolitanunamabaxu alemánnewariniasniueanuao nagakwa" + - "siongiemboonnogainoruegu antiguunovialn’kosotho del nortenuernewari " + - "clásicunyamwezinyankolenyoronzimaosageturcu otomanupangasinanpahlavi" + - "pampangapapiamentopalauanupícarunixerianu simplificáualemán de Penns" + - "ylvaniaplautdietschpersa antiguualemán palatinufeniciupiamontéspónti" + - "cupohnpeianuprusianuprovenzal antiguukʼicheʼquichua del altiplanu de" + - " Chimborazorajasthanínrapanuirarotonganuromañolrifianuromboromanírot" + - "umanurusynrovianaaromanianurwasandavéssakhaaraméu samaritanusamburus" + - "asaksantalisaurashtrangambaysangusicilianuscotssardu sassaréskurdu d" + - "el sursénecasenaseriselkupkoyraboro senniirlandés antiguusamogitianu" + - "tachelhitshanárabe chadianusidamobaxu silesianuselayaréssami del sur" + - "lule samiinari samiskolt samisoninkesogdianusranan tongoserersahofri" + - "són de Saterlandsukumasususumeriucomorianusiriacu clásicusiriacusile" + - "sianutulutimnetesoterenatetumtigretivtokelautsakhurklingontlingittal" + - "ixíntamashektonga nyasatok pisinturoyotarokotsakoniutsimshiantati mu" + - "sulmántumbukatuvalutasawaqtuvinianutamazight del Atles centraludmurt" + - "ugaríticuumbundullingua desconocidavaivenecianuvepsiuflamencu occide" + - "ntalfranconianu del Mainvóticuvorovunjowalserwolayttawaraywashowarlp" + - "irichinu wucalmucomingrelianusogayaoyapésyangbenyembanheengatucanton" + - "észapotecasimbólicu Blisszeelandészenagatamazight estándar de Marru" + - "ecoszuniensin conteníu llingüísticuzazaárabe estándar modernualemán " + - "d’Austriaaltualemán de Suizainglés d’Australiainglés de Canadáinglés" + - " de Gran Bretañainglés d’Estaos Xuníosespañol d’América Llatinaespañ" + - "ol européuespañol de Méxicufrancés de Canadáfrancés de Suizabaxu sax" + - "ónflamencuportugués del Brasilportugués européumoldavuserbo-croatas" + - "uaḥili del Conguchinu simplificáuchinu tradicional", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x0018, 0x0021, 0x0025, 0x002e, 0x0037, - 0x003d, 0x0044, 0x004c, 0x0052, 0x005d, 0x0064, 0x006e, 0x0076, - 0x007d, 0x0084, 0x008d, 0x0095, 0x009c, 0x00a2, 0x00aa, 0x00b2, - 0x00ba, 0x00bf, 0x00c3, 0x00c8, 0x00df, 0x00e6, 0x00ec, 0x00f2, - 0x00f9, 0x00ff, 0x0107, 0x010a, 0x0110, 0x0117, 0x0120, 0x0128, - 0x012f, 0x0134, 0x0139, 0x013e, 0x0148, 0x014e, 0x0155, 0x015d, - 0x016f, 0x0178, 0x0189, 0x0190, 0x0198, 0x01a1, 0x01a7, 0x01ae, - 0x01b5, 0x01ba, 0x01c3, 0x01c9, 0x01d1, 0x01d9, 0x01e0, 0x01e6, - // Entry 40 - 7F - 0x01f1, 0x01fa, 0x0205, 0x0209, 0x0217, 0x021e, 0x0221, 0x022a, - 0x0232, 0x023b, 0x0243, 0x024b, 0x0253, 0x0258, 0x025e, 0x0266, - 0x0274, 0x027f, 0x0286, 0x028e, 0x0295, 0x029b, 0x02a6, 0x02ab, - 0x02af, 0x02b7, 0x02c4, 0x02cb, 0x02d8, 0x02dd, 0x02e8, 0x02ef, - 0x02f7, 0x02fe, 0x030a, 0x0310, 0x0317, 0x0322, 0x0328, 0x0331, - 0x033a, 0x0340, 0x0347, 0x034d, 0x0354, 0x035b, 0x0360, 0x0371, - 0x0379, 0x037f, 0x038a, 0x0399, 0x03a8, 0x03b7, 0x03bd, 0x03c3, - 0x03cb, 0x03d1, 0x03d6, 0x03db, 0x03e3, 0x03eb, 0x03ef, 0x03f5, - // Entry 80 - BF - 0x03fb, 0x0405, 0x040c, 0x0414, 0x0419, 0x041f, 0x0423, 0x042e, - 0x0438, 0x043d, 0x0443, 0x0451, 0x0456, 0x045f, 0x0467, 0x046f, - 0x0476, 0x047b, 0x0483, 0x0489, 0x048f, 0x0494, 0x04a1, 0x04aa, - 0x04af, 0x04b8, 0x04bd, 0x04c3, 0x04d1, 0x04db, 0x04e3, 0x04ec, - 0x04f2, 0x04f9, 0x04fe, 0x0504, 0x050c, 0x0515, 0x051a, 0x0521, - 0x0525, 0x0533, 0x0538, 0x0542, 0x054a, 0x0550, 0x0555, 0x055a, - 0x0561, 0x0567, 0x056d, 0x0572, 0x0577, 0x057f, 0x0584, 0x058b, - 0x0591, 0x05a1, 0x05a9, 0x05ae, 0x05b2, 0x05ba, 0x05c1, 0x05c6, - // Entry C0 - FF - 0x05d6, 0x05e3, 0x05f2, 0x05f8, 0x05ff, 0x0606, 0x060c, 0x0613, - 0x0625, 0x0625, 0x062b, 0x063e, 0x064f, 0x0652, 0x066d, 0x0676, - 0x067c, 0x0682, 0x0689, 0x0691, 0x0698, 0x069d, 0x06a2, 0x06ac, - 0x06b3, 0x06b7, 0x06bc, 0x06c2, 0x06c6, 0x06cb, 0x06d1, 0x06e3, - 0x06eb, 0x06f0, 0x06f4, 0x06fa, 0x06fd, 0x0704, 0x070f, 0x0718, - 0x071c, 0x0722, 0x0726, 0x072c, 0x0732, 0x073a, 0x073e, 0x0742, - 0x0749, 0x074e, 0x0754, 0x075a, 0x075f, 0x075f, 0x0766, 0x076b, - 0x0772, 0x077a, 0x0782, 0x0786, 0x0795, 0x079c, 0x07a6, 0x07ae, - // Entry 100 - 13F - 0x07b6, 0x07c3, 0x07cb, 0x07d3, 0x07e2, 0x07fa, 0x0804, 0x080a, - 0x0810, 0x0815, 0x081d, 0x0822, 0x0828, 0x082d, 0x0832, 0x0837, - 0x0842, 0x084f, 0x0854, 0x0865, 0x086f, 0x0874, 0x087a, 0x087f, - 0x0883, 0x088b, 0x089a, 0x08a0, 0x08a7, 0x08b4, 0x08c1, 0x08c7, - 0x08d1, 0x08d5, 0x08dd, 0x08f5, 0x08f8, 0x0906, 0x0914, 0x0924, - 0x092c, 0x093d, 0x094d, 0x0956, 0x0958, 0x095e, 0x0967, 0x096b, - 0x0970, 0x0981, 0x0985, 0x098f, 0x0995, 0x09a6, 0x09b9, 0x09c5, - 0x09ca, 0x09d3, 0x09da, 0x09df, 0x09ed, 0x09fd, 0x0a02, 0x0a08, - // Entry 140 - 17F - 0x0a0d, 0x0a16, 0x0a1b, 0x0a26, 0x0a2e, 0x0a3b, 0x0a45, 0x0a4b, - 0x0a50, 0x0a5b, 0x0a66, 0x0a6a, 0x0a6e, 0x0a74, 0x0a79, 0x0a7f, - 0x0a87, 0x0aa0, 0x0aa6, 0x0aac, 0x0ab3, 0x0abe, 0x0aca, 0x0ad4, - 0x0adf, 0x0ae8, 0x0aee, 0x0af1, 0x0af6, 0x0afa, 0x0b04, 0x0b0b, - 0x0b0f, 0x0b16, 0x0b22, 0x0b29, 0x0b2d, 0x0b35, 0x0b3a, 0x0b43, - 0x0b4f, 0x0b55, 0x0b5e, 0x0b62, 0x0b6a, 0x0b72, 0x0b7e, 0x0b85, - 0x0b8e, 0x0b94, 0x0ba3, 0x0ba7, 0x0bb0, 0x0bb9, 0x0bbf, 0x0bc7, - 0x0bcc, 0x0bd5, 0x0bda, 0x0be1, 0x0be7, 0x0bec, 0x0bf2, 0x0bf7, - // Entry 180 - 1BF - 0x0c00, 0x0c12, 0x0c1b, 0x0c24, 0x0c2a, 0x0c32, 0x0c37, 0x0c37, - 0x0c3b, 0x0c49, 0x0c53, 0x0c5d, 0x0c64, 0x0c69, 0x0c6c, 0x0c70, - 0x0c75, 0x0c85, 0x0c88, 0x0c90, 0x0c94, 0x0c9a, 0x0ca2, 0x0ca9, - 0x0cb1, 0x0cb7, 0x0cbb, 0x0cc1, 0x0cc7, 0x0ccc, 0x0cd0, 0x0cd8, - 0x0ce8, 0x0cf6, 0x0cfd, 0x0d03, 0x0d0e, 0x0d15, 0x0d1d, 0x0d23, - 0x0d28, 0x0d37, 0x0d3e, 0x0d52, 0x0d57, 0x0d60, 0x0d67, 0x0d6f, - 0x0d74, 0x0d79, 0x0d84, 0x0d91, 0x0d9b, 0x0d9f, 0x0dab, 0x0db1, - 0x0db5, 0x0dbc, 0x0dc3, 0x0dc9, 0x0dd2, 0x0dd7, 0x0de6, 0x0dec, - // Entry 1C0 - 1FF - 0x0df2, 0x0e01, 0x0e05, 0x0e14, 0x0e1c, 0x0e24, 0x0e29, 0x0e2e, - 0x0e33, 0x0e40, 0x0e4a, 0x0e51, 0x0e59, 0x0e63, 0x0e6b, 0x0e72, - 0x0e88, 0x0e9f, 0x0eab, 0x0eb8, 0x0ec8, 0x0ecf, 0x0ed9, 0x0ee1, - 0x0eeb, 0x0ef3, 0x0f04, 0x0f0d, 0x0f30, 0x0f3c, 0x0f43, 0x0f4e, - 0x0f56, 0x0f5d, 0x0f62, 0x0f69, 0x0f71, 0x0f76, 0x0f7d, 0x0f87, - 0x0f8a, 0x0f93, 0x0f98, 0x0faa, 0x0fb1, 0x0fb6, 0x0fbd, 0x0fc7, - 0x0fce, 0x0fd3, 0x0fdc, 0x0fe1, 0x0ff0, 0x0ffd, 0x1004, 0x1008, - 0x100c, 0x1012, 0x1021, 0x1032, 0x103d, 0x1046, 0x104a, 0x1059, - // Entry 200 - 23F - 0x105f, 0x106d, 0x1077, 0x1083, 0x108c, 0x1096, 0x10a0, 0x10a7, - 0x10af, 0x10bb, 0x10c0, 0x10c4, 0x10d8, 0x10de, 0x10e2, 0x10e9, - 0x10f2, 0x1102, 0x1109, 0x1112, 0x1116, 0x111b, 0x111f, 0x1125, - 0x112a, 0x112f, 0x1132, 0x1139, 0x1140, 0x1147, 0x114e, 0x1156, - 0x115e, 0x1169, 0x1172, 0x1178, 0x117e, 0x1186, 0x118f, 0x119d, - 0x11a4, 0x11aa, 0x11b1, 0x11ba, 0x11d5, 0x11db, 0x11e5, 0x11ec, - 0x11ff, 0x1202, 0x120b, 0x1211, 0x1224, 0x1238, 0x123f, 0x1243, - 0x1248, 0x124e, 0x1256, 0x125b, 0x1260, 0x1268, 0x1270, 0x1277, - // Entry 240 - 27F - 0x1282, 0x1286, 0x1289, 0x128f, 0x1296, 0x129b, 0x12a4, 0x12ad, - 0x12b5, 0x12c5, 0x12cf, 0x12d5, 0x12f5, 0x12f9, 0x1317, 0x131b, - 0x1333, 0x1333, 0x1346, 0x135a, 0x136f, 0x1381, 0x1399, 0x13b3, - 0x13d0, 0x13e1, 0x13f4, 0x13f4, 0x1407, 0x1418, 0x1423, 0x142b, - 0x1440, 0x1453, 0x145a, 0x1466, 0x1479, 0x148b, 0x149c, - }, - }, - { // az - azLangStr, - azLangIdx, - }, - { // az-Cyrl - "афарабхазафрикаансаканамһарарагонәрәбассамаварајмараазәрбајҹанбашгырдбел" + - "арусбулгарбисламабамбарабенгалтибетбретонбосниаккаталанчеченчаморок" + - "орсикачехславјанчувашуелсданимаркаалманмалдивдзонгаевејунанинҝилисе" + - "сперантоиспанестонбаскфарсфулафинфиҹифарерфрансызгәрби фризирландшо" + - "тланд келтгалисијагуаранигуҹаратманксһаусаивритһиндхорватһаити крео" + - "лмаҹарермәниһерероинтерлингвеиндонезијаигбоидоисландиталјанинуктиту" + - "тјапонјаваҝүрҹүкикујукуанјамагазахкалааллисуткхмерканнадакорејакану" + - "рикәшмиркүрдкомикорнгырғызлатынлүксембурггандалимбурглингалалаослит" + - "валуба-катангалатышмалагасмаршалмаоримакедонмалајаламмонголмаратһим" + - "алајмалтабирманнаурушимали ндебеленепалндонгаһолланднүнорск норвечб" + - "окмал норвечҹәнуби ндебеленавајонјанҹаокситаноромоодијаосетинпәнҹаб" + - "полјакпуштупортугалкечуароманшрундирумынрускинјарвандасанскритсарди" + - "нсиндһишимали самисангосинһаласловаксловенсамоашонасомалиалбансербс" + - "ватисесотосунданисвечсуаһилитамилтелугутаҹиктајтигринтүркмәнсванато" + - "нгантүрксонгататартахитиујғурукрајнаурдуөзбәквендавјетнамволапүквал" + - "унволофхосаидишјорубачинзулуакинадангмеадуҝеагһемајнуалеутҹәнуби ал" + - "тајанҝикаарауканҹаарапаһоасуастуријаавадһибаллибасабембабенабхочпур" + - "ибинисиксикәбодобуҝинблинсебуанчигачукизмаричоктаучерокичејенсоранс" + - "ејшел креолудакотадаргватаитадогрибзармаашағы сорбдуаладиоладазагае" + - "мбуефикекаҹукевондофилиппинфонфриулгагезгилбертгоронталоИсвечрә алм" + - "анҹасыгусигвичинһавајһилигајнонмонгјухары сорбһупаибанибибиоилокоин" + - "гушлоғбаннгомбамачамкабилекачинжукамбакабарда-чәркәзтвимакондекабув" + - "ердианкорохазикојра чииникакокаленҹинкимбундуконканикпеллегарачај-б" + - "алкаркарелкурухшамбалабафиакөлнкумыксефардланҝиләзҝилакоталозишимал" + - "и лурилуба-лулуалундалуомизолујиамадуризмагаһимаитилимакасармасајмо" + - "кшамендемеруморисиенмахува-мееттометаʼмикмакминангкабанманипүримоһа" + - "вкмосимундангчохсајлы дилләркрикмирандерзјамазандараннеаполитаннама" + - "невариниаснијуанквасионҝиембоонногајнгошимали сотонуернјанколпангас" + - "инанпампангапапјаментопалајанниҝер креолпрусскичерапануираротонганр" + - "омбоароманруасандавесахасамбурусанталнгамбајсангусиҹилијаскотссенак" + - "ојраборо сеннитачелитшанҹәнуби самилуле самиинари самисколт самисон" + - "инкесранан тонгосаһосукумакоморсуријатимнетесотетумтигреклингонток " + - "писинтарокотумбукатувалутасавагтувинјанМәркәзи Атлас тамазиҹәсиудму" + - "ртумбундунамәлум дилваивунјоваллесваламоварајкалмыксогајангбенјемба" + - "кантонтамазизунидил мәзмуну јохдурзазамүасир стандарт әрәбАвстрија " + - "алманҹасыИсвечрә јүксәк алманҹасыАвстралија инҝилисҹәсиКанада инҝил" + - "исҹәсиБританија инҝилисҹәсиАмерика инҝилисҹәсиЛатын Америкасы испан" + - "ҹасыКастилија испанҹасыМексика испанҹасыКанада франсызҹасыИсвечрә ф" + - "рансызҹасыашағы саксонфламандБразилија португалҹасыПортугалија порт" + - "угалҹасыКонго суаһилиҹәсисадәләшмиш чинәнәнәви чин", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x0012, 0x0012, 0x0024, 0x002c, 0x0036, 0x0042, - 0x004a, 0x0054, 0x005c, 0x0068, 0x007c, 0x008a, 0x0098, 0x00a4, - 0x00b2, 0x00c0, 0x00cc, 0x00d6, 0x00e2, 0x00f0, 0x00fe, 0x0108, - 0x0114, 0x0122, 0x0122, 0x0128, 0x0136, 0x0140, 0x0148, 0x015a, - 0x0164, 0x0170, 0x017c, 0x0182, 0x018c, 0x019a, 0x01ac, 0x01b6, - 0x01c0, 0x01c8, 0x01d0, 0x01d8, 0x01de, 0x01e6, 0x01f0, 0x01fe, - 0x0211, 0x021d, 0x0234, 0x0244, 0x0252, 0x0260, 0x026a, 0x0274, - 0x027e, 0x0286, 0x0286, 0x0292, 0x02a7, 0x02b1, 0x02bd, 0x02c9, - // Entry 40 - 7F - 0x02df, 0x02f3, 0x02f3, 0x02fb, 0x02fb, 0x02fb, 0x0301, 0x030d, - 0x031b, 0x032d, 0x0337, 0x033f, 0x0349, 0x0349, 0x0355, 0x0365, - 0x036f, 0x0385, 0x038f, 0x039d, 0x03a9, 0x03b5, 0x03c1, 0x03c9, - 0x03d1, 0x03d9, 0x03e5, 0x03ef, 0x0403, 0x040d, 0x041b, 0x0429, - 0x0431, 0x043b, 0x0452, 0x045c, 0x046a, 0x0476, 0x0480, 0x048e, - 0x04a0, 0x04ac, 0x04ba, 0x04c4, 0x04ce, 0x04da, 0x04e4, 0x04ff, - 0x0509, 0x0515, 0x0523, 0x053e, 0x0557, 0x0572, 0x057e, 0x058a, - 0x0598, 0x0598, 0x05a2, 0x05ac, 0x05b8, 0x05c4, 0x05c4, 0x05d0, - // Entry 80 - BF - 0x05da, 0x05ea, 0x05f4, 0x0600, 0x060a, 0x0614, 0x061a, 0x0630, - 0x0640, 0x064c, 0x0658, 0x066d, 0x0677, 0x0685, 0x0691, 0x069d, - 0x06a7, 0x06af, 0x06bb, 0x06c5, 0x06cd, 0x06d7, 0x06e3, 0x06ef, - 0x06f9, 0x0707, 0x0711, 0x071d, 0x0727, 0x072d, 0x0739, 0x0747, - 0x0751, 0x075d, 0x0765, 0x076f, 0x0779, 0x0785, 0x078f, 0x079d, - 0x07a5, 0x07af, 0x07b9, 0x07c7, 0x07d5, 0x07df, 0x07e9, 0x07f1, - 0x07f9, 0x0805, 0x0805, 0x080b, 0x0813, 0x081b, 0x081b, 0x0829, - 0x0833, 0x0833, 0x0833, 0x083d, 0x0845, 0x0845, 0x0845, 0x084f, - // Entry C0 - FF - 0x084f, 0x0866, 0x0866, 0x0872, 0x0872, 0x0884, 0x0884, 0x0892, - 0x0892, 0x0892, 0x0892, 0x0892, 0x0892, 0x0898, 0x0898, 0x08a8, - 0x08a8, 0x08b4, 0x08b4, 0x08be, 0x08be, 0x08c6, 0x08c6, 0x08c6, - 0x08c6, 0x08c6, 0x08d0, 0x08d0, 0x08d8, 0x08d8, 0x08d8, 0x08d8, - 0x08e8, 0x08e8, 0x08f0, 0x08f0, 0x08f0, 0x08fe, 0x08fe, 0x08fe, - 0x08fe, 0x08fe, 0x0906, 0x0906, 0x0906, 0x0910, 0x0910, 0x0918, - 0x0918, 0x0918, 0x0918, 0x0918, 0x0918, 0x0918, 0x0924, 0x092c, - 0x092c, 0x092c, 0x0936, 0x093e, 0x093e, 0x094a, 0x094a, 0x0956, - // Entry 100 - 13F - 0x0960, 0x096a, 0x096a, 0x096a, 0x096a, 0x0983, 0x0983, 0x098f, - 0x099b, 0x09a5, 0x09a5, 0x09a5, 0x09b1, 0x09b1, 0x09bb, 0x09bb, - 0x09ce, 0x09ce, 0x09d8, 0x09d8, 0x09e2, 0x09e2, 0x09ee, 0x09f6, - 0x09fe, 0x09fe, 0x09fe, 0x0a0a, 0x0a0a, 0x0a0a, 0x0a0a, 0x0a16, - 0x0a16, 0x0a16, 0x0a26, 0x0a26, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, - 0x0a2c, 0x0a2c, 0x0a2c, 0x0a36, 0x0a3a, 0x0a3a, 0x0a3a, 0x0a3a, - 0x0a3a, 0x0a3a, 0x0a40, 0x0a4e, 0x0a4e, 0x0a4e, 0x0a4e, 0x0a4e, - 0x0a4e, 0x0a60, 0x0a60, 0x0a60, 0x0a60, 0x0a81, 0x0a81, 0x0a81, - // Entry 140 - 17F - 0x0a89, 0x0a95, 0x0a95, 0x0a95, 0x0a9f, 0x0a9f, 0x0ab3, 0x0ab3, - 0x0abb, 0x0ad0, 0x0ad0, 0x0ad8, 0x0ae0, 0x0aec, 0x0af6, 0x0b00, - 0x0b00, 0x0b00, 0x0b0c, 0x0b18, 0x0b22, 0x0b22, 0x0b22, 0x0b22, - 0x0b22, 0x0b2e, 0x0b38, 0x0b3c, 0x0b46, 0x0b46, 0x0b61, 0x0b61, - 0x0b67, 0x0b75, 0x0b8b, 0x0b8b, 0x0b93, 0x0b93, 0x0b9b, 0x0b9b, - 0x0bb0, 0x0bb0, 0x0bb0, 0x0bb8, 0x0bc8, 0x0bd8, 0x0bd8, 0x0be6, - 0x0be6, 0x0bf2, 0x0c0d, 0x0c0d, 0x0c0d, 0x0c17, 0x0c21, 0x0c2f, - 0x0c39, 0x0c41, 0x0c4b, 0x0c4b, 0x0c57, 0x0c61, 0x0c61, 0x0c61, - // Entry 180 - 1BF - 0x0c6b, 0x0c6b, 0x0c6b, 0x0c6b, 0x0c77, 0x0c77, 0x0c77, 0x0c77, - 0x0c7f, 0x0c94, 0x0c94, 0x0ca7, 0x0ca7, 0x0cb1, 0x0cb7, 0x0cbf, - 0x0cc9, 0x0cc9, 0x0cc9, 0x0cd7, 0x0cd7, 0x0ce3, 0x0cf1, 0x0cff, - 0x0cff, 0x0d09, 0x0d09, 0x0d13, 0x0d13, 0x0d1d, 0x0d25, 0x0d35, - 0x0d35, 0x0d4e, 0x0d58, 0x0d64, 0x0d7a, 0x0d7a, 0x0d8a, 0x0d96, - 0x0d9e, 0x0d9e, 0x0dac, 0x0dc9, 0x0dd1, 0x0ddd, 0x0ddd, 0x0ddd, - 0x0ddd, 0x0de7, 0x0dfb, 0x0dfb, 0x0e0f, 0x0e17, 0x0e17, 0x0e23, - 0x0e2b, 0x0e37, 0x0e37, 0x0e43, 0x0e55, 0x0e5f, 0x0e5f, 0x0e5f, - // Entry 1C0 - 1FF - 0x0e65, 0x0e7a, 0x0e82, 0x0e82, 0x0e82, 0x0e90, 0x0e90, 0x0e90, - 0x0e90, 0x0e90, 0x0ea4, 0x0ea4, 0x0eb4, 0x0ec8, 0x0ed6, 0x0ed6, - 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, 0x0eeb, - 0x0eeb, 0x0ef5, 0x0ef5, 0x0efd, 0x0efd, 0x0efd, 0x0f0b, 0x0f1f, - 0x0f1f, 0x0f1f, 0x0f29, 0x0f29, 0x0f29, 0x0f29, 0x0f29, 0x0f35, - 0x0f3b, 0x0f49, 0x0f51, 0x0f51, 0x0f5f, 0x0f5f, 0x0f6b, 0x0f6b, - 0x0f79, 0x0f83, 0x0f93, 0x0f9d, 0x0f9d, 0x0f9d, 0x0f9d, 0x0fa5, - 0x0fa5, 0x0fa5, 0x0fc2, 0x0fc2, 0x0fc2, 0x0fd0, 0x0fd6, 0x0fd6, - // Entry 200 - 23F - 0x0fd6, 0x0fd6, 0x0fd6, 0x0feb, 0x0ffc, 0x100f, 0x1022, 0x1030, - 0x1030, 0x1047, 0x1047, 0x104f, 0x104f, 0x105b, 0x105b, 0x105b, - 0x1065, 0x1065, 0x1071, 0x1071, 0x1071, 0x107b, 0x1083, 0x1083, - 0x108d, 0x1097, 0x1097, 0x1097, 0x1097, 0x10a5, 0x10a5, 0x10a5, - 0x10a5, 0x10a5, 0x10b6, 0x10b6, 0x10c2, 0x10c2, 0x10c2, 0x10c2, - 0x10d0, 0x10dc, 0x10ea, 0x10fa, 0x1128, 0x1134, 0x1134, 0x1142, - 0x1157, 0x115d, 0x115d, 0x115d, 0x115d, 0x115d, 0x115d, 0x115d, - 0x1167, 0x1173, 0x117f, 0x1189, 0x1189, 0x1189, 0x1189, 0x1195, - // Entry 240 - 27F - 0x1195, 0x119d, 0x119d, 0x119d, 0x11ab, 0x11b5, 0x11b5, 0x11c1, - 0x11c1, 0x11c1, 0x11c1, 0x11c1, 0x11cd, 0x11d5, 0x11f7, 0x11ff, - 0x1225, 0x1225, 0x1248, 0x1276, 0x12a1, 0x12c4, 0x12ed, 0x1312, - 0x1342, 0x1367, 0x1388, 0x1388, 0x13ab, 0x13d0, 0x13e7, 0x13f5, - 0x1420, 0x144f, 0x144f, 0x144f, 0x1470, 0x148b, 0x14a0, - }, - }, - { // bas - "Hɔp u akanHɔp u amhārìkHɔp u arâbHɔp u bièlòrûsHɔp u bûlgârHɔp u bɛŋgàli" + - "Hɔp u cɛ̂kHɔp u jamânHɔp u gri ᷇kyàHɔp u ŋgisìHɔp u panyāHɔp u pɛrsì" + - "àHɔp u pulàsiHɔp u ɓausaHɔp u hindìHɔp u hɔŋgrìiHɔp u indònesìàHɔp " + - "u iɓòHɔp u italìàHɔp u yapànHɔp u yavàHɔp u kmɛ̂rHɔp u kɔrēàHɔp u ma" + - "kɛ᷆Hɔp u birmànHɔp u nepa᷆lHɔp u nlɛ̀ndiHɔp u pɛnjàbiHɔp u pɔlɔ̄nàHɔ" + - "p u pɔtɔ̄kìHɔp u rùmanìàHɔp u ruslàndHɔp u ruāndàHɔp u somàlîHɔp u s" + - "uɛ᷆dHɔp u tamu᷆lHɔp u tâyHɔp u tûrkHɔp u ukrǎnìàHɔp u urdùHɔp u vyɛ̄" + - "dnàmHɔp u yorūbàHɔp u kinàHɔp u zulùƁàsàa", - []uint16{ // 214 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001b, 0x001b, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0039, 0x0048, - 0x0048, 0x0048, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0085, 0x0093, 0x0093, 0x00a0, - 0x00a0, 0x00a0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00be, - 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00cb, - 0x00cb, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e9, 0x00e9, 0x00e9, - // Entry 40 - 7F - 0x00e9, 0x00fc, 0x00fc, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, - 0x0117, 0x0117, 0x0124, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, - 0x0130, 0x0130, 0x013e, 0x013e, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x014d, 0x014d, 0x015c, 0x015c, 0x016a, 0x016a, 0x016a, - 0x0179, 0x0179, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, - 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0199, 0x0199, 0x01ab, - // Entry 80 - BF - 0x01ab, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01ce, 0x01dd, 0x01ec, - 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, - 0x01ec, 0x01ec, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x01fb, - 0x020a, 0x020a, 0x0219, 0x0219, 0x0219, 0x0224, 0x0224, 0x0224, - 0x0224, 0x0224, 0x0230, 0x0230, 0x0230, 0x0230, 0x0230, 0x0241, - 0x024d, 0x024d, 0x024d, 0x025f, 0x025f, 0x025f, 0x025f, 0x025f, - 0x025f, 0x026e, 0x026e, 0x027a, 0x0286, 0x0286, 0x0286, 0x0286, - 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, - // Entry C0 - FF - 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, - 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, - 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x028e, - }, - }, - { // be - "афарскаяабхазскаяафрыкаансаканамхарскаяарагонскаяарабскаяасамскаяаварска" + - "яаймараазербайджанскаябашкірскаябеларускаябалгарскаябісламабамбараб" + - "енгальскаятыбецкаябрэтонскаябаснійскаякаталанскаячачэнскаячаморакар" + - "сіканскаячэшскаяцаркоўнаславянскаячувашскаявалійскаядацкаянямецкаям" + - "альдыўскаядзонг-кээвегрэчаскаяанглійскаяэсперантаіспанскаяэстонская" + - "баскскаяфарсіфулафінскаяфіджыйскаяфарэрскаяфранцузскаязаходняя фрыз" + - "скаяірландскаяшатландская гэльскаягалісійскаягуаранігуджарацімэнска" + - "яхаусаіўрытхіндзіхарвацкаягаіцянская крэольскаявенгерскаяармянскаяг" + - "ерэраінтэрлінгваінданезійскаяінтэрлінгвэігбасычуаньская йіідаісланд" + - "скаяітальянскаяінуктытутяпонскаяяванскаягрузінскаякікуйюкуаньямаказ" + - "ахскаягрэнландскаякхмерскаяканадакарэйскаяканурыкашмірскаякурдскаяк" + - "омікорнскаякіргізскаялацінскаялюксембургскаягандалімбургскаялінгала" + - "лаоскаялітоўскаялуба-катангалатышскаямалагасійскаямаршальскаямаарым" + - "акедонскаямалаяламмангольскаямаратхімалайскаямальтыйскаябірманскаян" + - "аурупаўночная ндэбеленепальскаяндонганідэрландскаянарвежская (нюнош" + - "к)нарвежская (букмол)паўднёвая ндэбеленаваханьянджааксітанскаяаджыб" + - "вааромаорыяасецінскаяпанджабіпольскаяпуштупартугальскаякечуарэтарам" + - "анскаярундзірумынскаярускаяруандасанскрытсардзінскаясіндхіпаўночнас" + - "аамскаясангасінгальскаяславацкаяславенскаясамоашонасамаліалбанскаяс" + - "ербскаясуацісесутасундашведскаясуахілітамільскаятэлугутаджыкскаятай" + - "скаятыгрыньятуркменскаятсванатанганскаятурэцкаятсонгататарскаятаіці" + - "уйгурскаяукраінскаяурдуузбекскаявендав’етнамскаявалапюквалонскаявал" + - "офкосаідышёрубакітайскаязулуачэхадангмэадыгейскаяагемайнскаяакадска" + - "яалеуцкаяпаўднёваалтайскаястараанглійскаяангікаарамейскаямапудунгун" + - "арапахаасуастурыйскаяавадхібалійскаябасаабембабеназаходняя белуджск" + - "аябхаджпурыэдаблэкфутбодабурацкаябугісбіленсебуаначыгачыбчачуукмары" + - "чоктачэрокішэйенцэнтральнакурдскаякопцкаясэсэльвадакотадаргінскаята" + - "ітадогрыбзарманіжнялужыцкаядуаладжола-фоньідазагаэмбуэфікстаражытна" + - "егіпецкаяэкаджукэвондафіліпінскаяфонстарафранцузскаяфрыульскаягагаг" + - "аузскаягеэзкірыбацігаранталастаражытнагрэчаскаяшвейцарская нямецкая" + - "гусіігуіч’інгавайскаяхілігайнонхмонгверхнялужыцкаяхупаібанібібіяіла" + - "канаінгушскаяложбаннгомбамачамбэкабільскаякачынскаядджукамбакабардз" + - "інскаят’япмакондэкабувердыянукоракхасікойра чыінікакокаленджынкімбу" + - "ндукомі-пярмяцкаяканканікпелекарачай-балкарскаякарэльскаякурухшамба" + - "лабафіякёльнскаякумыцкаяладыналангілезгінскаялакотамонгалозіпаўночн" + - "ая лурылуба-касаілундалуомізолуйямадурскаямагахімайтхілімакасарманд" + - "ынгмаасаймакшанскаямендэмерумарысьенмакуўа-меетаметамікмакмінангкаб" + - "аумейтэймохакмосімундангнекалькі моўмускогімірандыйскаяэрзянскаямаз" + - "андэранскаянеапалітанскаянаманіжненямецкаянеўарыніасніўэнгумбанг’ем" + - "боннагайскаястаранарвежскаянкопаўночная сотануэрньянколепангасінанп" + - "ампангапап’яментупалаунігерыйскі піджынстараперсідскаяфінікійскаяпр" + - "ускаястараправансальскаякічэраджастханскаярапануіраратонгромбааруму" + - "нскаяруасандаўэякуцкаясамбурусанталінгамбайсангусіцылійскаяшатландс" + - "каяпаўднёвакурдскаясенакайрабора сэністараірландскаяташэльхітшанпаў" + - "днёвасаамскаялуле-саамскаяінары-саамскаяколта-саамскаясанінкесранан" + - "-тонгасахасукумашумерскаякаморскаясірыйскаятэмнэтэсотэтумтыгрэклінга" + - "нток-пісінтарокатумбукатувалутасаўактувінскаяцэнтральнаатлаская там" + - "азіхтудмурцкаяумбундуневядомая моваваівунджовальшскаяволайтаварайва" + - "рлпірыкалмыцкаясогаянгбэнйембакантонскі дыялект кітайскайсапатэкста" + - "ндартная мараканская тамазіхтзуніняма моўнага матэрыялузазакілаціна" + - "амерыканская іспанскаяеўрапейская іспанскаямексіканская іспанскаяка" + - "надская французскаяшвейцарская французскаяніжнесаксонскаябразільска" + - "я партугальскаяеўрапейская партугальскаямалдаўская румынскаясербска" + - "харвацкаякангалезская суахілі", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0022, 0x0022, 0x0034, 0x003c, 0x004e, 0x0062, - 0x0072, 0x0082, 0x0092, 0x009e, 0x00bc, 0x00d0, 0x00e4, 0x00f8, - 0x0106, 0x0114, 0x012a, 0x013a, 0x014e, 0x0162, 0x0178, 0x018a, - 0x0196, 0x01ae, 0x01ae, 0x01bc, 0x01e0, 0x01f2, 0x0204, 0x0210, - 0x0220, 0x0236, 0x0245, 0x024b, 0x025d, 0x0271, 0x0283, 0x0295, - 0x02a7, 0x02b7, 0x02c1, 0x02c9, 0x02d7, 0x02eb, 0x02fd, 0x0313, - 0x0334, 0x0348, 0x036f, 0x0385, 0x0393, 0x03a5, 0x03b3, 0x03bd, - 0x03c7, 0x03d3, 0x03d3, 0x03e5, 0x040e, 0x0422, 0x0434, 0x0440, - // Entry 40 - 7F - 0x0456, 0x0470, 0x0486, 0x048e, 0x04a9, 0x04a9, 0x04af, 0x04c3, - 0x04d9, 0x04eb, 0x04fb, 0x050b, 0x051f, 0x051f, 0x052b, 0x053b, - 0x054d, 0x0565, 0x0577, 0x0583, 0x0595, 0x05a1, 0x05b5, 0x05c5, - 0x05cd, 0x05dd, 0x05f1, 0x0603, 0x061f, 0x0629, 0x063f, 0x064d, - 0x065b, 0x066d, 0x0684, 0x0696, 0x06b0, 0x06c6, 0x06d0, 0x06e6, - 0x06f6, 0x070c, 0x071a, 0x072c, 0x0742, 0x0756, 0x0760, 0x0781, - 0x0795, 0x07a1, 0x07bb, 0x07de, 0x0801, 0x0822, 0x082e, 0x083c, - 0x0852, 0x0860, 0x086a, 0x0872, 0x0886, 0x0896, 0x0896, 0x08a6, - // Entry 80 - BF - 0x08b0, 0x08ca, 0x08d4, 0x08ee, 0x08fa, 0x090c, 0x0918, 0x0924, - 0x0934, 0x094a, 0x0956, 0x0976, 0x0980, 0x0996, 0x09a8, 0x09bc, - 0x09c6, 0x09ce, 0x09da, 0x09ec, 0x09fc, 0x0a06, 0x0a12, 0x0a1c, - 0x0a2c, 0x0a3a, 0x0a4e, 0x0a5a, 0x0a6e, 0x0a7c, 0x0a8c, 0x0aa2, - 0x0aae, 0x0ac2, 0x0ad2, 0x0ade, 0x0af0, 0x0afa, 0x0b0c, 0x0b20, - 0x0b28, 0x0b3a, 0x0b44, 0x0b5b, 0x0b69, 0x0b7b, 0x0b85, 0x0b8d, - 0x0b95, 0x0b9f, 0x0b9f, 0x0bb1, 0x0bb9, 0x0bc1, 0x0bc1, 0x0bcf, - 0x0be3, 0x0be3, 0x0be3, 0x0beb, 0x0bf9, 0x0c09, 0x0c09, 0x0c19, - // Entry C0 - FF - 0x0c19, 0x0c3b, 0x0c59, 0x0c65, 0x0c79, 0x0c8d, 0x0c8d, 0x0c9b, - 0x0c9b, 0x0c9b, 0x0c9b, 0x0c9b, 0x0c9b, 0x0ca1, 0x0ca1, 0x0cb7, - 0x0cb7, 0x0cc3, 0x0cc3, 0x0cd5, 0x0cd5, 0x0cdf, 0x0cdf, 0x0cdf, - 0x0cdf, 0x0cdf, 0x0ce9, 0x0ce9, 0x0cf1, 0x0cf1, 0x0cf1, 0x0d16, - 0x0d28, 0x0d28, 0x0d2e, 0x0d2e, 0x0d2e, 0x0d3c, 0x0d3c, 0x0d3c, - 0x0d3c, 0x0d3c, 0x0d44, 0x0d44, 0x0d54, 0x0d5e, 0x0d5e, 0x0d68, - 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d76, 0x0d7e, - 0x0d88, 0x0d88, 0x0d90, 0x0d98, 0x0d98, 0x0da2, 0x0da2, 0x0dae, - // Entry 100 - 13F - 0x0db8, 0x0ddc, 0x0dea, 0x0dea, 0x0dea, 0x0dfa, 0x0dfa, 0x0e06, - 0x0e1a, 0x0e24, 0x0e24, 0x0e24, 0x0e30, 0x0e30, 0x0e3a, 0x0e3a, - 0x0e54, 0x0e54, 0x0e5e, 0x0e5e, 0x0e73, 0x0e73, 0x0e7f, 0x0e87, - 0x0e8f, 0x0e8f, 0x0eb5, 0x0ec3, 0x0ec3, 0x0ec3, 0x0ec3, 0x0ecf, - 0x0ecf, 0x0ecf, 0x0ee5, 0x0ee5, 0x0eeb, 0x0eeb, 0x0eeb, 0x0f0b, - 0x0f0b, 0x0f0b, 0x0f0b, 0x0f1f, 0x0f23, 0x0f37, 0x0f37, 0x0f37, - 0x0f37, 0x0f37, 0x0f3f, 0x0f4f, 0x0f4f, 0x0f4f, 0x0f4f, 0x0f4f, - 0x0f4f, 0x0f61, 0x0f61, 0x0f61, 0x0f87, 0x0fae, 0x0fae, 0x0fae, - // Entry 140 - 17F - 0x0fb8, 0x0fc7, 0x0fc7, 0x0fc7, 0x0fd9, 0x0fd9, 0x0fed, 0x0fed, - 0x0ff7, 0x1013, 0x1013, 0x101b, 0x1023, 0x102f, 0x103d, 0x104f, - 0x104f, 0x104f, 0x105b, 0x1067, 0x1075, 0x1075, 0x1075, 0x1075, - 0x1075, 0x1089, 0x109b, 0x10a3, 0x10ad, 0x10ad, 0x10c7, 0x10c7, - 0x10d0, 0x10de, 0x10f6, 0x10f6, 0x10fe, 0x10fe, 0x1108, 0x1108, - 0x111d, 0x111d, 0x111d, 0x1125, 0x1137, 0x1147, 0x1162, 0x1170, - 0x1170, 0x117a, 0x119d, 0x119d, 0x119d, 0x11b1, 0x11bb, 0x11c9, - 0x11d3, 0x11e5, 0x11f5, 0x11f5, 0x1201, 0x120b, 0x120b, 0x120b, - // Entry 180 - 1BF - 0x121f, 0x121f, 0x121f, 0x121f, 0x122b, 0x122b, 0x1235, 0x1235, - 0x123d, 0x1258, 0x1258, 0x126b, 0x126b, 0x1275, 0x127b, 0x1283, - 0x128b, 0x128b, 0x128b, 0x129d, 0x129d, 0x12a9, 0x12b9, 0x12c7, - 0x12d5, 0x12e1, 0x12e1, 0x12f5, 0x12f5, 0x12ff, 0x1307, 0x1317, - 0x1317, 0x132e, 0x1336, 0x1342, 0x1358, 0x1358, 0x1364, 0x136e, - 0x1376, 0x1376, 0x1384, 0x139b, 0x13a9, 0x13c1, 0x13c1, 0x13c1, - 0x13c1, 0x13d3, 0x13ef, 0x13ef, 0x140b, 0x1413, 0x142d, 0x1439, - 0x1441, 0x1449, 0x1449, 0x1455, 0x1466, 0x1478, 0x1496, 0x1496, - // Entry 1C0 - 1FF - 0x149c, 0x14b7, 0x14bf, 0x14bf, 0x14bf, 0x14cf, 0x14cf, 0x14cf, - 0x14cf, 0x14cf, 0x14e3, 0x14e3, 0x14f3, 0x1508, 0x1512, 0x1512, - 0x1533, 0x1533, 0x1533, 0x1551, 0x1551, 0x1567, 0x1567, 0x1567, - 0x1567, 0x1575, 0x159b, 0x15a3, 0x15a3, 0x15bf, 0x15cd, 0x15dd, - 0x15dd, 0x15dd, 0x15e7, 0x15e7, 0x15e7, 0x15e7, 0x15e7, 0x15fb, - 0x1601, 0x160f, 0x161d, 0x161d, 0x162b, 0x162b, 0x1639, 0x1639, - 0x1647, 0x1651, 0x1667, 0x167d, 0x167d, 0x169d, 0x169d, 0x16a5, - 0x16a5, 0x16a5, 0x16c0, 0x16de, 0x16de, 0x16f0, 0x16f6, 0x16f6, - // Entry 200 - 23F - 0x16f6, 0x16f6, 0x16f6, 0x1716, 0x172f, 0x174a, 0x1765, 0x1773, - 0x1773, 0x178a, 0x178a, 0x1792, 0x1792, 0x179e, 0x179e, 0x17b0, - 0x17c2, 0x17c2, 0x17d4, 0x17d4, 0x17d4, 0x17de, 0x17e6, 0x17e6, - 0x17f0, 0x17fa, 0x17fa, 0x17fa, 0x17fa, 0x1808, 0x1808, 0x1808, - 0x1808, 0x1808, 0x1819, 0x1819, 0x1825, 0x1825, 0x1825, 0x1825, - 0x1833, 0x183f, 0x184d, 0x185f, 0x1894, 0x18a6, 0x18a6, 0x18b4, - 0x18cf, 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18d5, 0x18d5, - 0x18e1, 0x18f3, 0x1901, 0x190b, 0x190b, 0x191b, 0x191b, 0x192d, - // Entry 240 - 27F - 0x192d, 0x1935, 0x1935, 0x1935, 0x1941, 0x194b, 0x194b, 0x197f, - 0x198d, 0x198d, 0x198d, 0x198d, 0x19cb, 0x19d3, 0x19fd, 0x1a09, - 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a09, - 0x1a40, 0x1a69, 0x1a94, 0x1a94, 0x1abd, 0x1aea, 0x1b08, 0x1b08, - 0x1b39, 0x1b6a, 0x1b91, 0x1bb1, 0x1bd8, - }, - }, - { // bem - "Ichi AkanIchi AmhariIchi ArabIchi BelarusIchi BulgarianiIchi BengaliIchi" + - " ChekiIchi JemaniIchi GrikiIchi SunguIchi SpanishiIchi PesiaIchi Fre" + - "nchiIchi HausaIchi HinduIchi HangarianIchi IndonesianiIchi IboIchi I" + - "talianiIchi JapanisiIchi JavanisiIchi KhmerIchi KorianiIchi Maleshan" + - "iIchi BurmaIchi NepaliIchi DachiIchi PunjabiIchi PolishiIchi Potogis" + - "iIchi RomanianiIchi RusianiIchi RwandaIchi SomaliaIchi SwideniIchi T" + - "amilIchi ThaiIchi TakishiIchi UkranianiIchi UruduIchi VietinamuIchi " + - "YorubaIchi ChainisiIchi ZuluIchibemba", - []uint16{ // 219 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0029, 0x0038, - 0x0038, 0x0038, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0063, 0x006d, 0x006d, 0x007a, - 0x007a, 0x007a, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009a, - 0x009a, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00b2, 0x00b2, 0x00b2, - // Entry 40 - 7F - 0x00b2, 0x00c2, 0x00c2, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00d7, 0x00d7, 0x00e4, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, - 0x00f1, 0x00f1, 0x00fb, 0x00fb, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0115, 0x0115, 0x011f, 0x011f, 0x011f, - 0x012a, 0x012a, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0140, 0x0140, 0x014c, - // Entry 80 - BF - 0x014c, 0x0159, 0x0159, 0x0159, 0x0159, 0x0167, 0x0173, 0x017e, - 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, 0x017e, - 0x017e, 0x017e, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, - 0x0196, 0x0196, 0x01a0, 0x01a0, 0x01a0, 0x01a9, 0x01a9, 0x01a9, - 0x01a9, 0x01a9, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01c3, - 0x01cd, 0x01cd, 0x01cd, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, - 0x01db, 0x01e6, 0x01e6, 0x01f3, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - // Entry C0 - FF - 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - 0x01fc, 0x01fc, 0x0205, - }, - }, - { // bez - "HiakanHiamhariHiharabuHibelarusiHibulgariaHibanglaHichekiHijerumaniHigir" + - "ikiHiingerezaHihispaniaHiajemiHifaransaHihausaHihindiHihungariHiindo" + - "nesiaHiiboHiitalianoHijapaniHijavaHikambodiaHikoreaHimalesiaHiburmaH" + - "inepaliHiholanziHipunjabiHipolandiHilenoHilomaniaHilusiHinyarwandaHi" + - "somaliHiswidiHitamilHitailandHitulukiHiukraniaHiurduHivietinamuHiyor" + - "ubaHichinaHizuluHibena", - []uint16{ // 221 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0055, 0x0055, 0x005f, - 0x005f, 0x005f, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x006f, - 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0076, - 0x0076, 0x007d, 0x007d, 0x007d, 0x007d, 0x0086, 0x0086, 0x0086, - // Entry 40 - 7F - 0x0086, 0x0091, 0x0091, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, - // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0142, - 0x0148, 0x0148, 0x0148, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, - 0x0153, 0x015b, 0x015b, 0x0162, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - // Entry C0 - FF - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x016e, - }, - }, - { // bg - bgLangStr, - bgLangIdx, - }, - { // bm - "akankanamarikikanlarabukanbiyelorisikanbuligarikanbamanakanbɛngalikancɛk" + - "ikanalimaɲikangɛrɛsikanangilɛkanesipaɲolkanperisanikantubabukanawusa" + - "kaninidikanoŋirikanƐndonezikanigibokanitalikanzapɔnekanjavanekankamb" + - "ojikankorekanmalɛzikanbirimanikannepalekanolandekanpɛnijabikanpolone" + - "kanpɔritigalikanrumanikanirisikanruwandakansomalikansuwɛdikantamulik" + - "antayikanturikikanukɛrɛnikanurudukanwiyɛtinamukanyorubakansiniwakanz" + - "ulukan", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0011, 0x0011, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0027, 0x0032, - 0x0032, 0x003b, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0064, 0x006e, 0x006e, 0x007a, - 0x007a, 0x007a, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x0096, - 0x0096, 0x009e, 0x009e, 0x009e, 0x009e, 0x00a7, 0x00a7, 0x00a7, - // Entry 40 - 7F - 0x00a7, 0x00b3, 0x00b3, 0x00bb, 0x00bb, 0x00bb, 0x00bb, 0x00bb, - 0x00c3, 0x00c3, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, - 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00f1, 0x00f1, 0x00fc, 0x00fc, 0x00fc, - 0x0105, 0x0105, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, - 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x011a, 0x011a, 0x0123, - // Entry 80 - BF - 0x0123, 0x0131, 0x0131, 0x0131, 0x0131, 0x013a, 0x0142, 0x014c, - 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, - 0x014c, 0x014c, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, 0x0155, - 0x015f, 0x015f, 0x0168, 0x0168, 0x0168, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0184, - 0x018c, 0x018c, 0x018c, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, - 0x019a, 0x01a3, 0x01a3, 0x01ac, 0x01b3, - }, - }, - { // bn - bnLangStr, - bnLangIdx, - }, - { // bn-IN - "কোলোনিয়ান", - []uint16{ // 378 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x001e, - }, - }, - { // bo - "བོད་སྐད་རྫོང་ཁདབྱིན་ཇིའི་སྐད།ཧིན་དིཉི་ཧོང་སྐད་ནེ་པ་ལིཨུ་རུ་སུ་སྐད་རྒྱ་སྐ" + - "ད་ཟ་ཟའ་སྐད།དབྱིན་ཇིའི་སྐད། (ཁེ་ན་ཌ་)དབྱིན་ཇིའི་སྐད། (དབྱིན་ལན་)དབྱ" + - "ིན་ཇིའི་སྐད། (ཨ་རི་)", - []uint16{ // 600 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x002a, 0x002a, 0x002a, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - // Entry 40 - 7F - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - // Entry 80 - BF - 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry C0 - FF - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry 100 - 13F - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry 140 - 17F - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry 180 - 1BF - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry 1C0 - 1FF - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry 200 - 23F - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry 240 - 27F - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00f9, - 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x013e, 0x0189, 0x01c8, - }, - }, - {}, // bo-IN - { // br - "afarabkhazegavestegafrikaansakanamharegaragonegarabegasamegavaraymaraaze" + - "rbaidjanegbachkirbelarusegbulgaregbislamabambarabengalitibetanegbrez" + - "honegbosnegkatalanegtchetchenegchamorrukorsegkritchekegslavoneg iliz" + - "tchouvatchkembraegdanegalamanegdivehidzongkhaewegresianegsaoznegespe" + - "rantegspagnolegestonegeuskaregpersegfinnegfidjiegfaeroeggallegfrizeg" + - " ar Cʼhornôgiwerzhonegskoseggalizegguaranigujaratimanaveghaousahebra" + - "eghindihiri motukroateghaitieghungaregarmenianeghererointerlinguaind" + - "onezeginterlingueigboyieg Sichuaninupiaqidoislandegitalianeginuktitu" + - "tjapanegjavanegjorjianegkongokikuyukwanyamakazakkhmerkanaregkoreaneg" + - "kanourikashmirikurdegkerneveuregkirgizlatinluksembourgeggandalimbour" + - "geglingalalaoseglituanegluba-katangalatviegmalgachegmarshallmaorimak" + - "edonegmalayalammongolegmarathimalaysegmaltegbirmanegnauruegndebele a" + - "n Norzhnepalegndonganederlandegnorvegeg nynorsknorvegeg bokmålndebel" + - "e ar Sunavacʼhonyanjaokitanegojibwaoriyaosetegpunjabipalipolonegpach" + - "toportugalegkechuaegromañchegrundiroumanegrusianegkinyarwandasanskri" + - "tegsardegsindhisámi an Norzhsangosinghalegslovakegslovenegsamoanshon" + - "asomalialbanegserbegswatisotho ar Susundanegsvedegswahilitamilegtelo" + - "ugoutadjikthaitigrignaturkmenegtswanatongaturkegtsongatatartahitiane" + - "gouigouregukrainegourdououzbekegvendavietnamegvolapükwallonegwolofxh" + - "osayiddishyoroubazhuangsinaegzoulouegachinegacoliadangmeadygeiegarab" + - "eg Tuniziaafrihiliaghemainouegakadegalabamaegaleouteggegegaltaieg ar" + - " Suhensaoznegangikaarameegaraoukanegaraonaarapahoarabeg Aljeriaarawa" + - "kegarabeg Marokoarabeg Egiptasuyezh sinoù Amerikaasturianegawadhibal" + - "outchibalinegbavariegbasaabedawiegbembabenabaloutchi ar Cʼhornôgbhoj" + - "puribikolbinibrajbrahwegbodoakoosebouriatbugiblincaddokaribegatsamce" + - "buanochibchamariegchoktawchipewyancherokeecheyennekurdeg soranikopte" + - "gturkeg Krimeakachoubegdakotadargwadelawaredogribdinkadogriizelsorab" + - "egnederlandeg krenndyulaembuefikhenegiptegekajukelamegkrennsaoznegew" + - "ondofangfilipinegfinneg traoñienn an Tornefongalleg cajunkrenncʼhall" + - "eghencʼhallegarpitanegfrizeg an Norzhfrizeg ar Reterfrioulaneggagaga" + - "ouzegsinaeg Gangayogbayagezeggilbertegkrennalamaneg uhelhenalamaneg " + - "uhelgorontalogoteggrebohencʼhresianegalamaneg Suishaidasinaeg Hakkah" + - "awaieghiligaynonhmonguhelsorabegsinaeg Xianhupaibanibibioingouchegkr" + - "eoleg Jamaikayuzev-persegyuzev-arabegkarakalpakkabilegkachinkambakab" + - "ardegkabuverdianukhasikhotanegkimbundukonkanikosraekpellekaratchay-b" + - "alkarkareliegkurukhkolunegkutenailadinolahndalambalezgilingua franca" + - " novaliguriegmongoloziluba-lulualuisenolundaluolushailuyiasinaeg len" + - "negelmagahimaithilimasaimokshamandarmendemorisegkrenniwerzhonegmanch" + - "oumanipurimohawkmarieg ar Cʼhornôgyezhoù liesmuskogimirandegerzasina" + - "eg Min Nannapolitanegalamaneg izelnewariniasniueaoegnogayhennorsegno" + - "vialsotho an Norzhnewari klaselnyamwezinyankolenyoroosageturkeg otom" + - "anpangasinanpahlavipampangapapiamentopalaupikardegalamaneg Pennsylva" + - "niahenbersegfenikianegpiemontegpontegpohnpeihenbruseghenbrovañsegkic" + - "huaeg Chimborazorajasthanirapanuirarotongaromagnolegromboromaniegaro" + - "umanegrwasandaweyakoutegarameeg ar Samaritanedsasaksantalisikiliegsk" + - "otegsasaresegheniwerzhonegtachelitegshanarabeg Tchadsidamosámi ar Su" + - "sámi Luleåsámi Inarisámi Skoltsoninkesogdiegserersumeregkomoregsirie" + - "g klaselsiriegsileziegtoulouegterenotetumtigreanegtivtokelauklingont" + - "inglittamachegnyasa tongatok pisinturoyoegtsimshiantumbukatuvalutouv" + - "atamazigteg Kreizatlasoudmourtegougaritegumbunduyezh dianavvaivenezi" + - "egvepsegflandrezeg ar c’hornôgvotyakegvoroegwalserwalamowaraywashosi" + - "naeg WukalmoukmegrelegyaoyapegkantonegzapotegBlisszelandegzenagatama" + - "cheg Maroko standartzunidiyezharabeg modernalamaneg Aostriaalamaneg " + - "uhel Suissaozneg Aostraliasaozneg Kanadasaozneg Breizh-Veursaozneg A" + - "merikaspagnoleg Amerika latinspagnoleg Europaspagnoleg Mecʼhikogalle" + - "g Kanadagalleg Suissaksoneg izelflandrezegportugaleg Brazilportugale" + - "g Europamoldovegserb-kroategswahili Kongosinaeg eeunaetsinaeg hengou" + - "nel", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x0020, 0x0027, 0x002f, - 0x0035, 0x003b, 0x003f, 0x0045, 0x0052, 0x0059, 0x0062, 0x006a, - 0x0071, 0x0078, 0x007f, 0x0088, 0x0091, 0x0097, 0x00a0, 0x00ab, - 0x00b3, 0x00b9, 0x00bc, 0x00c3, 0x00d0, 0x00da, 0x00e2, 0x00e7, - 0x00ef, 0x00f5, 0x00fd, 0x0100, 0x0109, 0x0110, 0x011a, 0x0123, - 0x012a, 0x0132, 0x0138, 0x0138, 0x013e, 0x0145, 0x014c, 0x0152, - 0x0166, 0x0170, 0x0176, 0x017d, 0x0184, 0x018c, 0x0193, 0x0199, - 0x01a0, 0x01a5, 0x01ae, 0x01b5, 0x01bc, 0x01c4, 0x01ce, 0x01d4, - // Entry 40 - 7F - 0x01df, 0x01e8, 0x01f3, 0x01f7, 0x0203, 0x020a, 0x020d, 0x0215, - 0x021e, 0x0227, 0x022e, 0x0235, 0x023e, 0x0243, 0x0249, 0x0251, - 0x0256, 0x0256, 0x025b, 0x0262, 0x026a, 0x0271, 0x0279, 0x027f, - 0x027f, 0x028a, 0x0290, 0x0295, 0x02a2, 0x02a7, 0x02b1, 0x02b8, - 0x02be, 0x02c6, 0x02d2, 0x02d9, 0x02e2, 0x02ea, 0x02ef, 0x02f8, - 0x0301, 0x0309, 0x0310, 0x0318, 0x031e, 0x0326, 0x032d, 0x033d, - 0x0344, 0x034a, 0x0355, 0x0365, 0x0375, 0x0382, 0x038b, 0x0391, - 0x0399, 0x039f, 0x039f, 0x03a4, 0x03aa, 0x03b1, 0x03b5, 0x03bc, - // Entry 80 - BF - 0x03c2, 0x03cc, 0x03d4, 0x03de, 0x03e3, 0x03eb, 0x03f3, 0x03fe, - 0x0408, 0x040e, 0x0414, 0x0422, 0x0427, 0x0430, 0x0438, 0x0440, - 0x0446, 0x044b, 0x0451, 0x0458, 0x045e, 0x0463, 0x046e, 0x0476, - 0x047c, 0x0483, 0x048a, 0x0492, 0x0498, 0x049c, 0x04a4, 0x04ad, - 0x04b3, 0x04b8, 0x04be, 0x04c4, 0x04c9, 0x04d3, 0x04dc, 0x04e4, - 0x04ea, 0x04f2, 0x04f7, 0x0500, 0x0508, 0x0510, 0x0515, 0x051a, - 0x0521, 0x0528, 0x052e, 0x0534, 0x053c, 0x0543, 0x0548, 0x054f, - 0x0557, 0x0565, 0x056d, 0x0572, 0x0579, 0x057f, 0x0588, 0x0590, - // Entry C0 - FF - 0x0595, 0x05a2, 0x05ac, 0x05b2, 0x05b9, 0x05c3, 0x05c9, 0x05d0, - 0x05de, 0x05de, 0x05e6, 0x05f3, 0x05ff, 0x0602, 0x0615, 0x061f, - 0x061f, 0x0625, 0x062e, 0x0635, 0x063d, 0x0642, 0x0642, 0x0642, - 0x0642, 0x064a, 0x064f, 0x064f, 0x0653, 0x0653, 0x0653, 0x066a, - 0x0672, 0x0677, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, 0x067b, - 0x067f, 0x0686, 0x068a, 0x0690, 0x0697, 0x069b, 0x069b, 0x069f, - 0x069f, 0x06a4, 0x06ab, 0x06ab, 0x06b0, 0x06b0, 0x06b7, 0x06b7, - 0x06be, 0x06be, 0x06be, 0x06c4, 0x06c4, 0x06cb, 0x06d4, 0x06dc, - // Entry 100 - 13F - 0x06e4, 0x06f1, 0x06f7, 0x06f7, 0x0704, 0x0704, 0x070d, 0x0713, - 0x0719, 0x0719, 0x0721, 0x0721, 0x0727, 0x072c, 0x072c, 0x0731, - 0x073c, 0x073c, 0x073c, 0x074d, 0x074d, 0x0752, 0x0752, 0x0756, - 0x075a, 0x075a, 0x0764, 0x076a, 0x0770, 0x077c, 0x077c, 0x0782, - 0x0782, 0x0786, 0x078f, 0x07a9, 0x07ac, 0x07b8, 0x07c6, 0x07d2, - 0x07db, 0x07ea, 0x07f9, 0x0803, 0x0805, 0x080e, 0x0818, 0x081c, - 0x0821, 0x0821, 0x0826, 0x082f, 0x082f, 0x0841, 0x0851, 0x0851, - 0x0851, 0x085a, 0x085f, 0x0864, 0x0873, 0x0880, 0x0880, 0x0880, - // Entry 140 - 17F - 0x0880, 0x0880, 0x0885, 0x0891, 0x0898, 0x0898, 0x08a2, 0x08a2, - 0x08a7, 0x08b2, 0x08bd, 0x08c1, 0x08c5, 0x08cb, 0x08cb, 0x08d4, - 0x08d4, 0x08e3, 0x08e3, 0x08e3, 0x08e3, 0x08ef, 0x08fb, 0x08fb, - 0x0905, 0x090c, 0x0912, 0x0912, 0x0917, 0x0917, 0x091f, 0x091f, - 0x091f, 0x091f, 0x092b, 0x092b, 0x092b, 0x092b, 0x0930, 0x0938, - 0x0938, 0x0938, 0x0938, 0x0938, 0x0938, 0x0940, 0x0940, 0x0947, - 0x094d, 0x0953, 0x0963, 0x0963, 0x0963, 0x096b, 0x0971, 0x0971, - 0x0971, 0x0978, 0x0978, 0x097f, 0x0985, 0x0985, 0x098b, 0x0990, - // Entry 180 - 1BF - 0x0995, 0x09a7, 0x09af, 0x09af, 0x09af, 0x09af, 0x09b4, 0x09b4, - 0x09b8, 0x09b8, 0x09b8, 0x09c2, 0x09c9, 0x09ce, 0x09d1, 0x09d7, - 0x09dc, 0x09eb, 0x09eb, 0x09eb, 0x09eb, 0x09f1, 0x09f9, 0x09f9, - 0x09f9, 0x09fe, 0x09fe, 0x0a04, 0x0a0a, 0x0a0f, 0x0a0f, 0x0a16, - 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a2c, 0x0a34, 0x0a3a, - 0x0a3a, 0x0a4e, 0x0a4e, 0x0a5a, 0x0a61, 0x0a69, 0x0a69, 0x0a69, - 0x0a69, 0x0a6d, 0x0a6d, 0x0a7b, 0x0a86, 0x0a86, 0x0a93, 0x0a99, - 0x0a9d, 0x0aa1, 0x0aa5, 0x0aa5, 0x0aa5, 0x0aaa, 0x0ab3, 0x0ab9, - // Entry 1C0 - 1FF - 0x0ab9, 0x0ac7, 0x0ac7, 0x0ad4, 0x0adc, 0x0ae4, 0x0ae9, 0x0ae9, - 0x0aee, 0x0afb, 0x0b05, 0x0b0c, 0x0b14, 0x0b1e, 0x0b23, 0x0b2b, - 0x0b2b, 0x0b40, 0x0b40, 0x0b49, 0x0b49, 0x0b53, 0x0b5c, 0x0b62, - 0x0b69, 0x0b72, 0x0b7f, 0x0b7f, 0x0b92, 0x0b9c, 0x0ba3, 0x0bac, - 0x0bb6, 0x0bb6, 0x0bbb, 0x0bc3, 0x0bc3, 0x0bc3, 0x0bc3, 0x0bcc, - 0x0bcf, 0x0bd6, 0x0bde, 0x0bf4, 0x0bf4, 0x0bf9, 0x0c00, 0x0c00, - 0x0c00, 0x0c00, 0x0c08, 0x0c0e, 0x0c17, 0x0c17, 0x0c17, 0x0c17, - 0x0c17, 0x0c17, 0x0c17, 0x0c24, 0x0c24, 0x0c2e, 0x0c32, 0x0c3e, - // Entry 200 - 23F - 0x0c44, 0x0c44, 0x0c44, 0x0c4f, 0x0c5b, 0x0c66, 0x0c71, 0x0c78, - 0x0c7f, 0x0c7f, 0x0c84, 0x0c84, 0x0c84, 0x0c84, 0x0c84, 0x0c8b, - 0x0c92, 0x0c9f, 0x0ca5, 0x0cad, 0x0cb5, 0x0cb5, 0x0cb5, 0x0cbb, - 0x0cc0, 0x0cc9, 0x0ccc, 0x0cd3, 0x0cd3, 0x0cda, 0x0ce1, 0x0ce1, - 0x0ce9, 0x0cf4, 0x0cfd, 0x0d05, 0x0d05, 0x0d05, 0x0d0e, 0x0d0e, - 0x0d15, 0x0d1b, 0x0d1b, 0x0d20, 0x0d35, 0x0d3f, 0x0d48, 0x0d4f, - 0x0d5a, 0x0d5d, 0x0d65, 0x0d6b, 0x0d84, 0x0d84, 0x0d8c, 0x0d92, - 0x0d92, 0x0d98, 0x0d9e, 0x0da3, 0x0da8, 0x0da8, 0x0db1, 0x0db8, - // Entry 240 - 27F - 0x0dc0, 0x0dc0, 0x0dc3, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dc8, 0x0dd0, - 0x0dd7, 0x0ddc, 0x0de4, 0x0dea, 0x0e02, 0x0e06, 0x0e0c, 0x0e0c, - 0x0e19, 0x0e19, 0x0e29, 0x0e3b, 0x0e4c, 0x0e5a, 0x0e6d, 0x0e7c, - 0x0e93, 0x0ea3, 0x0eb6, 0x0eb6, 0x0ec3, 0x0ece, 0x0edb, 0x0ee5, - 0x0ef6, 0x0f07, 0x0f0f, 0x0f1b, 0x0f28, 0x0f36, 0x0f46, - }, - }, - { // brx - "अब्खाज़ियन्अवस्तन्अफ्रीकीअकनअम्हारिक्आर्गोनीअरबीअसामीअवारिक्आयमाराअज़रबै" + - "जानीबशख़िर्बैलोरूसियन्बल्गैरियन्बिस्लामाबांबाराबंगलातिब्बतीब्रटोंब" + - "ोस्नियाईकातालान्चेचेन्चामोरोकोर्सीकन्क्रीचेक्चर्च स्लाविक्चुवाश्वै" + - "ल्श्डैनीश्ज़र्मनदीवेहीभुटानीएवेग्रीकअंग्रेज़ीएस्पेरान्तोस्पैनिशऐस्" + - "टोनियन्बास्क्फार्सीफुलाह्फिनिश्फ़ीजीफिरोज़ीफ्रांसीसीपश्चीमी फ्रीज़" + - "ियन्आईरिशस्कॉट्स् गैलिक्गैलिशियन्गुआरानीगुजरातीमैंक्सहउसाहिब्रुहिं" + - "दीहीरी मोटुक्रोएशन्हाईशीयन्हंगैरीयन्अरमेनियन्हेरेरोईन्टरलिंग्वाइन्" + - "डोनेशियन्ईन्टरलिंग्वेईग्बोसीचुआन् यीइनुपियाक़्ईडोआईस्लैंडिक्ईटालिय" + - "न्इनूक्टीटूत्जापानीजावानीसजॉर्जियन्कॉंगोकिकुयुकुआनयामाक़ज़ाख़्कलाल" + - "ीसुतख्मेरकन्नड्कोरीयन्कनुरीकश्मिरीकुर्दीकोमीकौर्नवॉलीकिरग़ीज़्लैटी" + - "न्लुक्समबुर्गीगांडालींबुर्गीलिंगालालाओसीयन्लिथुआनियन्लुबा कटांगाला" + - "टवियन् (लैट्टीश)मालागासीमार्शलीमाओरीमैसेडोनियन्मलयालममोंगोलियनमराठ" + - "ीमलायमालटीज़्बर्मीनाऊरूउत्तर न्दबेलेनेपालीन्डोंगाडच्नॉर्वेजियन् नी" + - "नॉर्स्क्नोर्वेगी बोकमालदक्षिणी न्दबेलेनावाहोन्यानजाओक्सीतानओहीबवाओ" + - "रोमो (अफ़ान)उड़ियाओस्सेटीपंजाबीपालीपोलिशपख़्तुपुर्तगालीक्वेचुआरेह्" + - "टो-रोमान्सकिरून्दीरूमानीयन्रुसीकिन्यारुआण्डासंस्कृत्सार्दीनीसिंधीउ" + - "त्तरी सामीसांग्रोसींहालास्लोवाक्स्लोवेनियन्सामोअनशोनासोमालीआल्बेनि" + - "यन्सर्बियन्स्वाटिसुन्दानीस्वीडिशस्वाहिलीतमिळतेलुगुताजिक्थाईतिग्रीन" + - "्यातुर्कमेनत्स्वानाटॉंगातुर्कीसोंगाटाटर्टाहिटिउईग़ुरयूक्रेनियन्ऊर्" + - "दुउज़बेक्वेंडावियेतनामीवोलापोकवालुनवोलोफख़ोसायीद्दीशयोरूबाज़ुआंगची" + - "नीज़ुलूअचेहनीअकोलीअडांगमेअडीगेअफ्रीहीलीऐनूअकाडिनीअलुटपुरानी अंग्रे" + - "ज़ीअंगीकाअरामाईकअरापाहोअरावाकअवधीबलूचीबालिनीबास्क़्बेजाबेंबाभोजपुर" + - "ीबिकोल्बिनीसीकसीकाब्रजबड़ोबुरियातबुगीनीब्लीनकाद्दौकारीब्आत्समचेबुआ" + - "नोचीबचाचगताईचुकेसेमारीचीनूक् जार्गन्चौक्टोचिपेवियान्चीरोकीशायान्कॉ" + - "प्टीक्तुर्की क्रिमियाकाशुबियान्डकौटादर्गवादलावार्स्लेव्डोगरीब्डींग" + - "काडोगरीसोर्बियन्डुआलामध्य डचद्युआलाएफीक्प्राचीन मिस्रीएकाजुकएलामीम" + - "ध्य अंग्रेज़ीएवौंडोफाँग्फिलिपिनोफोनमध्य फ्रांसीसीपुरानी फ्रांसीसीउ" + - "त्तरी फ्रीज़ियन्पूर्वी फ्रीज़ियन्फ्रीउलीअन्गागायोग्बायागीज़्गीलबर्" + - "टीमध्य उच्चस्तरी जर्मनपुरानी उच्चस्तरी जर्मनगाँडीगोरंटालोगॉथिकग्रे" + - "बोप्राचीन यूनानीस्वीस जर्मनग्वीचलीनहईडाहवाईअनहीलीगैनोनहीत्तीह्मौंग" + - "ऊपरी सौर्बियनहूपाईबान्ईलोकोईंगुषलोजबानयहुदी फ़ारसीयहुदी अरबीकारा क" + - "लपककाबील्कचीन्जुकंबाकावीकबार्डी भाषात्याप्कोरोख़ासीख़ोतानीकींबुंडु" + - "कोंकणीकोस्राईयन्क्पेलेकराचय् बलकार्करेलियन्कुरुख़्कुमीक्कुतेनाईलाड" + - "़ीनोलाह्डांलांबालेज़गीयानमोंगोलोज़ीलुबा लुलुआलुईसेनोलुंडालुओलुशाईम" + - "ादुरीमघीमैथीलीमक्सरमांडींगोमसाईमोक्षामंदारमेंदेमध्य आईरीश भाषामीकम" + - "ाकमिनंगकाबाउमांचुमणीपुरीमोहोकमोस्सीक्रीकमीरांडीमारवाड़ीऐर्ज़ियानेआ" + - "पोलिटननीजी स्तरिय जर्मननेवारीनियासनियुइआननोगाईपुरानी नॉर्स्न्गकोपु" + - "रानी नेवारीन्यामवेज़ीन्यानकोलेन्यौरोन्ज़ीमाओसेजतुर्की ओटोमानपांगास" + - "ीननपहलवीपंपंगापापीआमेन्तोपालाऊपुरानी फ़ारसीफीनीसीपोहनपीपुरानी प्रो" + - "वाँसालराजस्थानीरापानुईरारोटोंगारुमानीआरोमानीसंडावेयकुट्समारीती आरा" + - "माईक़सासकसंतालीसीसीलीअनस्कॉटसेलकुपपुरानी आईरीशशानसीदामोपश्चीमी साम" + - "ीलुले सामीईनारी सामीस्कोल्ट् सामीसोनिंगकेसोगडीयनस्रनान् टॉंगोसेरेर" + - "सुकुमासुसुसुमेरिअनपारंपरीक सिरिआकसिरिआकतीमनेतेरेनोतेतुमटीग्रेटीव्ट" + - "ोकेलौक्लींगदनट्लिंगीततमाशेकन्यासा टॉंगातोक पिसीनत्सीमशीआन्टुँबुकाट" + - "ुवालुटुवीउड़मुर्तउगारितीउंबुंडुअज्ञात या अवैध भाषावाईवोटीकवालामोवा" + - "रयवाशोकालमीकयाओयापीज़ज़ापोतेकब्लीस चिन्हज़ेनागाज़ुनीरिक्तज़ाज़ाजर्" + - "मन (ऑस्ट्रिया)उच्च स्तरिय स्वीस जर्मनअंग्रेज़ी (ऑस्ट्रेलिया का)अंग" + - "्रेज़ी (कनाडाई)अंग्रेजी (ब्रिटिश)अंग्रेज़ी (अमरिकी)लैटिन अमरिकी स्" + - "पैनिशईवेरियाई स्पैनिशफ्रांसीसी (कनाडाई)फ्रांसीसी (स्वीस)फ्लेमीमोल्" + - "डेवियन्सर्बो-क्रोएशन्चीनी (सरलीकृत)चीनी (पारम्परिक)", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0021, 0x0036, 0x004b, 0x0054, 0x006f, 0x0084, - 0x0090, 0x009f, 0x00b4, 0x00c6, 0x00e4, 0x00f9, 0x011a, 0x0138, - 0x0150, 0x0165, 0x0174, 0x0189, 0x019b, 0x01b6, 0x01ce, 0x01e0, - 0x01f2, 0x020d, 0x0219, 0x0225, 0x024a, 0x025c, 0x026e, 0x0280, - 0x0292, 0x02a4, 0x02b6, 0x02bf, 0x02ce, 0x02e9, 0x030a, 0x031f, - 0x033d, 0x034f, 0x0361, 0x0373, 0x0385, 0x0394, 0x03a9, 0x03c4, - 0x03f8, 0x0407, 0x0432, 0x044d, 0x0462, 0x0477, 0x0489, 0x0495, - 0x04a7, 0x04b6, 0x04cf, 0x04e7, 0x04ff, 0x051a, 0x0535, 0x0547, - // Entry 40 - 7F - 0x056b, 0x058f, 0x05b3, 0x05c2, 0x05de, 0x05fc, 0x0605, 0x0626, - 0x063e, 0x065f, 0x0671, 0x0686, 0x06a1, 0x06b0, 0x06c2, 0x06da, - 0x06f2, 0x070a, 0x0719, 0x072b, 0x0740, 0x074f, 0x0764, 0x0776, - 0x0782, 0x079d, 0x07b8, 0x07ca, 0x07ee, 0x07fd, 0x0818, 0x082d, - 0x0845, 0x0863, 0x0882, 0x08b2, 0x08ca, 0x08df, 0x08ee, 0x090f, - 0x0921, 0x093c, 0x094b, 0x0957, 0x096f, 0x097e, 0x098d, 0x09b2, - 0x09c4, 0x09d9, 0x09e2, 0x0a22, 0x0a4d, 0x0a78, 0x0a8a, 0x0a9f, - 0x0ab7, 0x0ac9, 0x0aea, 0x0afc, 0x0b11, 0x0b23, 0x0b2f, 0x0b3e, - // Entry 80 - BF - 0x0b50, 0x0b6b, 0x0b80, 0x0ba8, 0x0bc0, 0x0bdb, 0x0be7, 0x0c0e, - 0x0c26, 0x0c3e, 0x0c4d, 0x0c6c, 0x0c81, 0x0c96, 0x0cae, 0x0ccf, - 0x0ce1, 0x0ced, 0x0cff, 0x0d1d, 0x0d35, 0x0d47, 0x0d47, 0x0d5f, - 0x0d74, 0x0d8c, 0x0d98, 0x0daa, 0x0dbc, 0x0dc5, 0x0de3, 0x0dfb, - 0x0e13, 0x0e22, 0x0e34, 0x0e43, 0x0e52, 0x0e64, 0x0e76, 0x0e97, - 0x0ea6, 0x0ebb, 0x0eca, 0x0ee5, 0x0efa, 0x0f09, 0x0f18, 0x0f27, - 0x0f3c, 0x0f4e, 0x0f60, 0x0f6c, 0x0f7b, 0x0f8d, 0x0f9c, 0x0fb1, - 0x0fc0, 0x0fc0, 0x0fdb, 0x0fdb, 0x0fe4, 0x0ff9, 0x0ff9, 0x1005, - // Entry C0 - FF - 0x1005, 0x1005, 0x1033, 0x1045, 0x105a, 0x105a, 0x105a, 0x106f, - 0x106f, 0x106f, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, 0x1081, - 0x1081, 0x108d, 0x109c, 0x10ae, 0x10ae, 0x10c3, 0x10c3, 0x10c3, - 0x10c3, 0x10cf, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, 0x10de, - 0x10f3, 0x1105, 0x1111, 0x1111, 0x1111, 0x1126, 0x1126, 0x1126, - 0x1132, 0x1132, 0x113e, 0x113e, 0x1153, 0x1165, 0x1165, 0x1174, - 0x1174, 0x1186, 0x1198, 0x1198, 0x11a7, 0x11a7, 0x11bc, 0x11bc, - 0x11cb, 0x11da, 0x11ec, 0x11f8, 0x1220, 0x1232, 0x1250, 0x1262, - // Entry 100 - 13F - 0x1274, 0x1274, 0x128c, 0x128c, 0x12b7, 0x12b7, 0x12d5, 0x12e4, - 0x12f6, 0x12f6, 0x130b, 0x131d, 0x1332, 0x1344, 0x1344, 0x1353, - 0x136e, 0x136e, 0x137d, 0x1390, 0x1390, 0x13a5, 0x13a5, 0x13a5, - 0x13b4, 0x13b4, 0x13dc, 0x13ee, 0x13fd, 0x1425, 0x1425, 0x1437, - 0x1437, 0x1446, 0x145e, 0x145e, 0x1467, 0x1467, 0x148f, 0x14bd, - 0x14bd, 0x14ee, 0x151f, 0x153d, 0x1543, 0x1543, 0x1543, 0x154f, - 0x1561, 0x1561, 0x1570, 0x1588, 0x1588, 0x15c0, 0x15fe, 0x15fe, - 0x160d, 0x1625, 0x1634, 0x1646, 0x166e, 0x168d, 0x168d, 0x168d, - // Entry 140 - 17F - 0x168d, 0x16a5, 0x16b1, 0x16b1, 0x16c3, 0x16c3, 0x16de, 0x16f0, - 0x1702, 0x1727, 0x1727, 0x1733, 0x1742, 0x1742, 0x1751, 0x1760, - 0x1760, 0x1760, 0x1772, 0x1772, 0x1772, 0x1794, 0x17b0, 0x17b0, - 0x17c9, 0x17db, 0x17ea, 0x17f0, 0x17fc, 0x1808, 0x182a, 0x182a, - 0x183c, 0x183c, 0x183c, 0x183c, 0x1848, 0x1848, 0x1857, 0x186c, - 0x186c, 0x186c, 0x186c, 0x186c, 0x186c, 0x1884, 0x1884, 0x1896, - 0x18b4, 0x18c6, 0x18eb, 0x18eb, 0x18eb, 0x1903, 0x1918, 0x1918, - 0x1918, 0x1918, 0x192a, 0x193f, 0x1954, 0x1954, 0x1969, 0x1978, - // Entry 180 - 1BF - 0x1993, 0x1993, 0x1993, 0x1993, 0x1993, 0x1993, 0x19a2, 0x19a2, - 0x19b1, 0x19b1, 0x19b1, 0x19cd, 0x19e2, 0x19f1, 0x19fa, 0x1a09, - 0x1a09, 0x1a09, 0x1a09, 0x1a1b, 0x1a1b, 0x1a24, 0x1a36, 0x1a45, - 0x1a5d, 0x1a69, 0x1a69, 0x1a7b, 0x1a8a, 0x1a99, 0x1a99, 0x1a99, - 0x1ac2, 0x1ac2, 0x1ac2, 0x1ad4, 0x1af2, 0x1b01, 0x1b16, 0x1b25, - 0x1b37, 0x1b37, 0x1b37, 0x1b37, 0x1b46, 0x1b5b, 0x1b73, 0x1b73, - 0x1b73, 0x1b8b, 0x1b8b, 0x1b8b, 0x1ba6, 0x1ba6, 0x1bd5, 0x1be7, - 0x1bf6, 0x1c0b, 0x1c0b, 0x1c0b, 0x1c0b, 0x1c1a, 0x1c3f, 0x1c3f, - // Entry 1C0 - 1FF - 0x1c4e, 0x1c4e, 0x1c4e, 0x1c73, 0x1c91, 0x1cac, 0x1cbe, 0x1cd3, - 0x1cdf, 0x1d04, 0x1d1f, 0x1d2e, 0x1d40, 0x1d61, 0x1d70, 0x1d70, - 0x1d70, 0x1d70, 0x1d70, 0x1d95, 0x1d95, 0x1da7, 0x1da7, 0x1da7, - 0x1db9, 0x1db9, 0x1dea, 0x1dea, 0x1dea, 0x1e05, 0x1e1a, 0x1e35, - 0x1e35, 0x1e35, 0x1e35, 0x1e47, 0x1e47, 0x1e47, 0x1e47, 0x1e5c, - 0x1e5c, 0x1e6e, 0x1e7d, 0x1eab, 0x1eab, 0x1eb7, 0x1ec9, 0x1ec9, - 0x1ec9, 0x1ec9, 0x1ee1, 0x1ef0, 0x1ef0, 0x1ef0, 0x1ef0, 0x1ef0, - 0x1ef0, 0x1f02, 0x1f02, 0x1f24, 0x1f24, 0x1f24, 0x1f2d, 0x1f2d, - // Entry 200 - 23F - 0x1f3f, 0x1f3f, 0x1f3f, 0x1f61, 0x1f7a, 0x1f96, 0x1fbb, 0x1fd3, - 0x1fe8, 0x200d, 0x201c, 0x201c, 0x201c, 0x202e, 0x203a, 0x2052, - 0x2052, 0x207d, 0x208f, 0x208f, 0x208f, 0x209e, 0x209e, 0x20b0, - 0x20bf, 0x20d1, 0x20dd, 0x20ef, 0x20ef, 0x2107, 0x211f, 0x211f, - 0x2131, 0x2153, 0x216c, 0x216c, 0x216c, 0x216c, 0x218a, 0x218a, - 0x219f, 0x21b1, 0x21b1, 0x21bd, 0x21bd, 0x21d5, 0x21ea, 0x21ff, - 0x2232, 0x223b, 0x223b, 0x223b, 0x223b, 0x223b, 0x224a, 0x224a, - 0x224a, 0x224a, 0x225c, 0x2268, 0x2274, 0x2274, 0x2274, 0x2286, - // Entry 240 - 27F - 0x2286, 0x2286, 0x228f, 0x22a1, 0x22a1, 0x22a1, 0x22a1, 0x22a1, - 0x22b9, 0x22d8, 0x22d8, 0x22ed, 0x22ed, 0x22fc, 0x230b, 0x231d, - 0x231d, 0x231d, 0x234a, 0x2389, 0x23cf, 0x23ff, 0x242f, 0x245f, - 0x2497, 0x24c5, 0x24c5, 0x24c5, 0x24f5, 0x2522, 0x2522, 0x2534, - 0x2534, 0x2534, 0x2555, 0x257d, 0x257d, 0x25a1, 0x25cb, - }, - }, - { // bs - "afarskiabhaskiavestanskiafrikansakanamharskiaragonskiarapskiasamskiavars" + - "kiajmaraazerbejdžanskibaškirskibjeloruskibugarskibislamabambarabenga" + - "lskitibetanskibretonskibosanskikatalonskičečenskičamorokorzikanskikr" + - "ičeškistaroslavenskičuvaškivelškidanskinjemačkidivehidžongaevegrčkie" + - "ngleskiesperantošpanskiestonskibaskijskiperzijskifulahfinskifidžijsk" + - "ifarskifrancuskizapadni frizijskiirskiškotski galskigalicijskigvaran" + - "igudžaratimankshausahebrejskihindihiri motuhrvatskihaićanski kreolsk" + - "imađarskiarmenskihererointerlingvaindonezijskiinterlingveigbosičuan " + - "jiinupiakidoislandskitalijanskiinuktitutjapanskijavanskigruzijskikon" + - "gokikujukuanjamakazaškikalalisutskikmerskikanadakorejskikanurikašmir" + - "skikurdskikomikornskikirgiškilatinskiluksemburškigandalimburškilinga" + - "lalaoskilitvanskiluba-katangalatvijskimalgaškimaršalskimaorskimakedo" + - "nskimalajalammongolskimaratimalajskimalteškiburmanskinaurusjeverni n" + - "debelenepalskindongaholandskinorveški (Nynorsk)norveški (Bokmal)južn" + - "i ndebelenavahonjanjaoksitanskiojibvaoromoorijskiosetskipandžapskipa" + - "lipoljskipaštuportugalskikečuaretoromanskirundirumunskiruskikinjarua" + - "ndasanskritsardinijskisindisjeverni samisangosinhaleškislovačkislove" + - "nskisamoanskišonasomalskialbanskisrpskisvatijužni sotosundanskišveds" + - "kisvahilitamilskitelugutadžičkitajlandskitigrinjaturkmenskitsvanaton" + - "ganskiturskitsongatatarskitahićanskiujgurskiukrajinskiurduuzbečkiven" + - "davijetnamskivolapukvalunvolofhosajidišjorubanskizuangkineskizuluači" + - "nskiakoliadangmejskiadigejskiafrihiliaghemainuakadijskialeutskijužni" + - " altaistaroengleskiangikaaramejskimapuškiarapahoaravakasuasturijskia" + - "vadhibalučibalinezijskibasabamunskigomalabejabembabenabafutzapadni b" + - "elučkibojpuribikolbinikomsiksikabrajbodoakoskiburiatbugiškibulublinm" + - "edumbakadokaripskikajugaatsamcebuanočigačibčačagataičukeskimaričinuk" + - "ski žargončoktavčipvijanskičirokičejenskicentralnokurdskikoptskikrim" + - "ski turskiseselva kreolski francuskikašubijanskidakotadargvataitadel" + - "averslavedogribdinkazarmadogridonjolužičkosrpskidualasrednjovjekovni" + - " holandskijola-fonidiuladazagaembuefikstaroegipatskiekajukelamitskis" + - "rednjovjekovni engleskievondofangfilipinofonsrednjovjekovni francusk" + - "istarofrancuskisjeverni frizijskiistočnofrizijskifriulijskigagagaušk" + - "igajogbajastaroetiopskigilbertskisrednjovjekovni gornjonjemačkistaro" + - "njemačkigondigorontalogotskigrebostarogrčkinjemački (Švicarska)gusig" + - "vičinhaidahavajskihiligajnonhititehmonggornjolužičkosrpskihupaibanib" + - "ibioilokoingušetskilojbanngombamakamejudeo-perzijskijudeo-arapskikar" + - "a-kalpakkabilekačinkajukambakavikabardijskikanembutjapmakondezelenor" + - "tskikorokasikotanizijskikojra činikakokalenjinkimbundukomi-permskiko" + - "nkanikosrejskikpelekaračaj-balkarkriokarelijskikuruškišambalabafiake" + - "lnskikumikkutenailadinolangilandalambalezgijskilakotamongolozisjever" + - "ni luriluba-lulualuisenolundaluomizoluhijamadureškimafamagahimaitili" + - "makasarmandingomasaimabamokšamandarmendemerumauricijski kreolskisred" + - "njovjekovni irskimakuva-metometamikmakminangkabaumančumanipurimohavk" + - "mosimundangviše jezikakriškimirandeškimarvarimjeneerzijamazanderansk" + - "inapolitanskinamadonjonjemačkinevariniasniuekvasiongiembonnogaistaro" + - "nordijskinkosjeverni sotonuerklasični nevarinjamvezinjankolenjoronzi" + - "maosageosmanski turskipangasinskipahlavipampangapapiamentopalauanski" + - "nigerijski pidžinstaroperzijskifeničanskiponpejskipruskistaroprovans" + - "alskikičerajastanirapanuirarotonganromboromaniarumunskiruasandavejak" + - "utskisamaritanski aramejskisamburusasaksantalingambajsangusicilijans" + - "kiškotskijužni kurdskisenekasenaselkupkojraboro senistaroirskitahelh" + - "itšančadski arapskisidamojužni samilule samiinari samiskolt samisoni" + - "nkesogdiensrananski tongoserersahosukumasususumerskikomorskiklasični" + - " sirijskisirijskitimnetesoterenotetumtigretivtokelauklingonskitlingi" + - "ttamašeknjasa tongatok pisintarokotsimšiantumbukatuvalutasavaktuvini" + - "jskicentralnoatlaski tamazigtudmurtugaritskiumbundunepoznati jezikva" + - "ivotskivunjovalservalamovarejvašovarlpirikalmiksogajaojapeškijangben" + - "jembakantonskizapotečkiblis simbolizenagastandardni marokanski tamaz" + - "igtzunibez lingvističkog sadržajazazamoderni standardni arapskigornj" + - "onjemački (Švicarska)donjosaksonskiflamanskimoldavskisrpskohrvatskik" + - "ineski (pojednostavljeni)kineski (tradicionalni)", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0007, 0x000e, 0x0018, 0x0020, 0x0024, 0x002c, 0x0035, - 0x003c, 0x0043, 0x004a, 0x0050, 0x005f, 0x0069, 0x0073, 0x007b, - 0x0082, 0x0089, 0x0092, 0x009c, 0x00a5, 0x00ad, 0x00b7, 0x00c1, - 0x00c8, 0x00d3, 0x00d6, 0x00dd, 0x00eb, 0x00f4, 0x00fb, 0x0101, - 0x010a, 0x0110, 0x0117, 0x011a, 0x0120, 0x0128, 0x0131, 0x0139, - 0x0141, 0x014a, 0x0153, 0x0158, 0x015e, 0x0168, 0x016e, 0x0177, - 0x0188, 0x018d, 0x019c, 0x01a6, 0x01ad, 0x01b7, 0x01bc, 0x01c1, - 0x01ca, 0x01cf, 0x01d8, 0x01e0, 0x01f3, 0x01fc, 0x0204, 0x020a, - // Entry 40 - 7F - 0x0215, 0x0221, 0x022c, 0x0230, 0x023a, 0x0241, 0x0244, 0x024d, - 0x0257, 0x0260, 0x0268, 0x0270, 0x0279, 0x027e, 0x0284, 0x028c, - 0x0294, 0x02a0, 0x02a7, 0x02ad, 0x02b5, 0x02bb, 0x02c5, 0x02cc, - 0x02d0, 0x02d7, 0x02e0, 0x02e8, 0x02f5, 0x02fa, 0x0304, 0x030b, - 0x0311, 0x031a, 0x0326, 0x032f, 0x0338, 0x0342, 0x0349, 0x0353, - 0x035c, 0x0365, 0x036b, 0x0373, 0x037c, 0x0385, 0x038a, 0x039a, - 0x03a2, 0x03a8, 0x03b1, 0x03c4, 0x03d6, 0x03e4, 0x03ea, 0x03f0, - 0x03fa, 0x0400, 0x0405, 0x040c, 0x0413, 0x041e, 0x0422, 0x0429, - // Entry 80 - BF - 0x042f, 0x043a, 0x0440, 0x044c, 0x0451, 0x0459, 0x045e, 0x0469, - 0x0471, 0x047c, 0x0481, 0x048e, 0x0493, 0x049e, 0x04a7, 0x04b0, - 0x04b9, 0x04be, 0x04c6, 0x04ce, 0x04d4, 0x04d9, 0x04e4, 0x04ed, - 0x04f5, 0x04fc, 0x0504, 0x050a, 0x0514, 0x051e, 0x0526, 0x0530, - 0x0536, 0x053f, 0x0545, 0x054b, 0x0553, 0x055e, 0x0566, 0x0570, - 0x0574, 0x057c, 0x0581, 0x058c, 0x0593, 0x0598, 0x059d, 0x05a1, - 0x05a7, 0x05b1, 0x05b6, 0x05bd, 0x05c1, 0x05c9, 0x05ce, 0x05d9, - 0x05e2, 0x05e2, 0x05ea, 0x05ef, 0x05f3, 0x05fc, 0x05fc, 0x0604, - // Entry C0 - FF - 0x0604, 0x0610, 0x061d, 0x0623, 0x062c, 0x0634, 0x0634, 0x063b, - 0x063b, 0x063b, 0x0641, 0x0641, 0x0641, 0x0644, 0x0644, 0x064e, - 0x064e, 0x0654, 0x065b, 0x0667, 0x0667, 0x066b, 0x0673, 0x0673, - 0x0679, 0x067d, 0x0682, 0x0682, 0x0686, 0x068b, 0x068b, 0x069b, - 0x06a2, 0x06a7, 0x06ab, 0x06ab, 0x06ae, 0x06b5, 0x06b5, 0x06b5, - 0x06b9, 0x06b9, 0x06bd, 0x06c3, 0x06c9, 0x06d1, 0x06d5, 0x06d9, - 0x06e0, 0x06e4, 0x06ec, 0x06f2, 0x06f7, 0x06f7, 0x06fe, 0x0703, - 0x070a, 0x0712, 0x071a, 0x071e, 0x072f, 0x0736, 0x0742, 0x0749, - // Entry 100 - 13F - 0x0752, 0x0762, 0x0769, 0x0769, 0x0777, 0x0791, 0x079e, 0x07a4, - 0x07aa, 0x07af, 0x07b6, 0x07bb, 0x07c1, 0x07c6, 0x07cb, 0x07d0, - 0x07e4, 0x07e4, 0x07e9, 0x0802, 0x080b, 0x0810, 0x0816, 0x081a, - 0x081e, 0x081e, 0x082c, 0x0832, 0x083b, 0x0853, 0x0853, 0x0859, - 0x0859, 0x085d, 0x0865, 0x0865, 0x0868, 0x0868, 0x0881, 0x088f, - 0x088f, 0x08a1, 0x08b2, 0x08bc, 0x08be, 0x08c7, 0x08c7, 0x08cb, - 0x08d0, 0x08d0, 0x08dd, 0x08e7, 0x08e7, 0x0906, 0x0914, 0x0914, - 0x0919, 0x0922, 0x0928, 0x092d, 0x0938, 0x094e, 0x094e, 0x094e, - // Entry 140 - 17F - 0x0952, 0x0959, 0x095e, 0x095e, 0x0966, 0x0966, 0x0970, 0x0976, - 0x097b, 0x0990, 0x0990, 0x0994, 0x0998, 0x099e, 0x09a3, 0x09ae, - 0x09ae, 0x09ae, 0x09b4, 0x09ba, 0x09c0, 0x09cf, 0x09dc, 0x09dc, - 0x09e7, 0x09ed, 0x09f3, 0x09f7, 0x09fc, 0x0a00, 0x0a0b, 0x0a12, - 0x0a16, 0x0a1d, 0x0a28, 0x0a28, 0x0a2c, 0x0a2c, 0x0a30, 0x0a3c, - 0x0a47, 0x0a47, 0x0a47, 0x0a4b, 0x0a53, 0x0a5b, 0x0a67, 0x0a6e, - 0x0a77, 0x0a7c, 0x0a8b, 0x0a8f, 0x0a8f, 0x0a99, 0x0aa1, 0x0aa9, - 0x0aae, 0x0ab5, 0x0aba, 0x0ac1, 0x0ac7, 0x0acc, 0x0ad1, 0x0ad6, - // Entry 180 - 1BF - 0x0adf, 0x0adf, 0x0adf, 0x0adf, 0x0ae5, 0x0ae5, 0x0aea, 0x0aea, - 0x0aee, 0x0afb, 0x0afb, 0x0b05, 0x0b0c, 0x0b11, 0x0b14, 0x0b18, - 0x0b1e, 0x0b1e, 0x0b1e, 0x0b28, 0x0b2c, 0x0b32, 0x0b39, 0x0b40, - 0x0b48, 0x0b4d, 0x0b51, 0x0b57, 0x0b5d, 0x0b62, 0x0b66, 0x0b7a, - 0x0b8f, 0x0b9a, 0x0b9e, 0x0ba4, 0x0baf, 0x0bb5, 0x0bbd, 0x0bc3, - 0x0bc7, 0x0bc7, 0x0bce, 0x0bda, 0x0be1, 0x0bec, 0x0bf3, 0x0bf3, - 0x0bf8, 0x0bfe, 0x0c0b, 0x0c0b, 0x0c17, 0x0c1b, 0x0c29, 0x0c2f, - 0x0c33, 0x0c37, 0x0c37, 0x0c3d, 0x0c45, 0x0c4a, 0x0c58, 0x0c58, - // Entry 1C0 - 1FF - 0x0c5b, 0x0c68, 0x0c6c, 0x0c7c, 0x0c84, 0x0c8c, 0x0c91, 0x0c96, - 0x0c9b, 0x0caa, 0x0cb5, 0x0cbc, 0x0cc4, 0x0cce, 0x0cd8, 0x0cd8, - 0x0cea, 0x0cea, 0x0cea, 0x0cf8, 0x0cf8, 0x0d03, 0x0d03, 0x0d03, - 0x0d0c, 0x0d12, 0x0d23, 0x0d28, 0x0d28, 0x0d31, 0x0d38, 0x0d42, - 0x0d42, 0x0d42, 0x0d47, 0x0d4d, 0x0d4d, 0x0d4d, 0x0d4d, 0x0d56, - 0x0d59, 0x0d60, 0x0d68, 0x0d7e, 0x0d85, 0x0d8a, 0x0d91, 0x0d91, - 0x0d98, 0x0d9d, 0x0da9, 0x0db1, 0x0db1, 0x0dbf, 0x0dc5, 0x0dc9, - 0x0dc9, 0x0dcf, 0x0ddd, 0x0de7, 0x0de7, 0x0def, 0x0df3, 0x0e02, - // Entry 200 - 23F - 0x0e08, 0x0e08, 0x0e08, 0x0e13, 0x0e1c, 0x0e26, 0x0e30, 0x0e37, - 0x0e3e, 0x0e4d, 0x0e52, 0x0e56, 0x0e56, 0x0e5c, 0x0e60, 0x0e68, - 0x0e70, 0x0e82, 0x0e8a, 0x0e8a, 0x0e8a, 0x0e8f, 0x0e93, 0x0e99, - 0x0e9e, 0x0ea3, 0x0ea6, 0x0ead, 0x0ead, 0x0eb7, 0x0ebe, 0x0ebe, - 0x0ec6, 0x0ed1, 0x0eda, 0x0eda, 0x0ee0, 0x0ee0, 0x0ee9, 0x0ee9, - 0x0ef0, 0x0ef6, 0x0efd, 0x0f07, 0x0f20, 0x0f26, 0x0f2f, 0x0f36, - 0x0f45, 0x0f48, 0x0f48, 0x0f48, 0x0f48, 0x0f48, 0x0f4e, 0x0f4e, - 0x0f53, 0x0f59, 0x0f5f, 0x0f64, 0x0f69, 0x0f71, 0x0f71, 0x0f77, - // Entry 240 - 27F - 0x0f77, 0x0f7b, 0x0f7e, 0x0f86, 0x0f8d, 0x0f92, 0x0f92, 0x0f9b, - 0x0fa5, 0x0fb1, 0x0fb1, 0x0fb7, 0x0fd5, 0x0fd9, 0x0ff5, 0x0ff9, - 0x1013, 0x1013, 0x1013, 0x102f, 0x102f, 0x102f, 0x102f, 0x102f, - 0x102f, 0x102f, 0x102f, 0x102f, 0x102f, 0x102f, 0x103d, 0x1046, - 0x1046, 0x1046, 0x104f, 0x105d, 0x105d, 0x1077, 0x108e, - }, - }, - { // bs-Cyrl - "афарскиабказијскиавестанскиафриканерскиаканамхарскиарагонежанскиарапскиа" + - "семијскиаварскиајмараазербејџанскибашкирбјелорускибугарскибисламаба" + - "мбарабенгласкитибетанскибретонскибосанскикаталонскичеченскичамороко" + - "рзиканскикричешкистарославенскичувашкивелшкиданскињемачкидивехијски" + - "џонгаевегрчкиенглескиесперантошпанскиестонскибаскијскиперсијскифула" + - "хфинскифиджијскифарскифранцускифризијскиирскишкотски галскигалскигв" + - "аранигуџаратиманксхаусахебрејскихиндихири мотухрватскихаитскимађарс" + - "киерменскихерероинтерлингваиндонежанскимеђујезичкиигбосичуан јиунуп" + - "иакидоисландскииталијанскиинуктитутјапанскијаванскигрузијскиконгоки" + - "кујукуањамакозачкикалалисуткмерскиканадакорејскиканурикашмирскикурд" + - "скикомикорнишкикиргискилатинскилуксембуршкигандалимбургишлингалалао" + - "скилитванскилуба-катангалатвијскималагасијскимаршалскимаорскимакедо" + - "нскималајаламмонголскимаратималајскимелтешкибурманскинаурусјеверни " + - "ндебеленепалскиндонгахоландскинорвешки њорскнорвешки бокмалјужни нд" + - "ебеленавахоњањапровансалскиојибваоромооријскиосетскипанџабскипалипо" + - "љскипаштунскипортугалскиквенчарето-романскирундирумунскирускикинјар" + - "уандасанскритсардињаскисиндисјеверни самисангосингалескисловачкисло" + - "венскисамоанскишонасомалскиалбанскисрпскисватисесотосунданскишведск" + - "исвахилитамилскителугутађиктајландскитигрињатуркменскитсванатонгату" + - "рскитсонгататарскитахићанскиујгурскиукрајинскиурдуузбечкивендавијет" + - "намскиволапуквалунволофксхосајидишјорубажуангкинескизулуачинескиако" + - "лиадангмејскиадигејскиафрихилиаинуакадијскиаљутјужни алтаистароенгл" + - "ескиангикаармајскиароканијскиарапахоаравакастуријскиавадхибалучибал" + - "инезијскибасабејабембабојпурибиколбинисисикабрајбуриатбугинежанскиб" + - "линкадокарипскиатсамскицебуаночибчачагатаичукескимаричинукскичоктав" + - "скичипвијанскичерокичејенскикоптскикримеански турскикашубијанскидак" + - "отадаргваделаверславскидогрибдинкадогриниски сорбијанскидуаласредњи" + - " холандскиђулаембуефикскистароегипатскиекајукеламитскисредњи енглеск" + - "иевондофангфилипинскифонсредњи францускистарофранцускисеверно-фризи" + - "јскиисточни фризијскифриулијскигагајогбајаџизгилбертшкисредњи висок" + - "и немачкистаронемачкигондигоронталоготскигребостарогрчкињемачки (Шв" + - "ицарска)гвич’инхаидахавајскихилигајнонхититехмонггорњи сорбијскихуп" + - "аибанилокоингвишкилојбанјудео-персијскијудео-арапскикара-калпашкика" + - "билекачинђукамбакавикабардијскитјапкорокасикотанешкикимбундуконкани" + - "косреанскикпелекарачај-балкаркарелијскикурукхшамбалакумиккутенаилад" + - "иноландаламбалезгианмонголозилуба-лулуалуисенолундалуолушаимадурешк" + - "имагахимаитилимакасармандингомасаимокшамандармендесредњи ирскимикма" + - "кминангкабауманчуманипуримахавскимосивише језикакришкимирандешкимар" + - "вариерзијанеаполитанскиниски немачкиневариниасниуеанногаистари норс" + - "кин’косјеверни сотокласични неварињамвезињанколењоронзимаосагеотома" + - "нски турскипангасинскипахлавипампангапапиаментопалауанскистароперси" + - "јскифеничанскипонпејскистаропровансалскирађастанирапануираротонганр" + - "оманиароманијскисандавејакутсамаритански арамејскисасаксанталисицил" + - "ијанскишкотскиселкапстароирскишансидамојужни самилуле самиинари сам" + - "исколтски језиксонинкесоџијенскисранански тонгосерерсукумасусусумер" + - "скикоморскикласични сиријскисиријскитимнетеренотетумтигретивтокелау" + - "клингонскитлингиттамашекњаса тонгаток писинтсимшиантумбукатувалутув" + - "инијскиудмуртугаритскиумбундунепознати језикваивотскиваламоварајваш" + - "окалмикјаојапешкикантонскизапотечкиблисимболизенагастандардни марок" + - "ански тамазигтзунибез лингвистичког садржајазазаШвајцарски високи н" + - "емачкифламанскимолдавскисрпскохрватскикинески (поједностављен)кинес" + - "ки (традиционални)", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x0022, 0x0036, 0x004e, 0x0056, 0x0066, 0x0080, - 0x008e, 0x00a0, 0x00ae, 0x00ba, 0x00d4, 0x00e0, 0x00f4, 0x0104, - 0x0112, 0x0120, 0x0132, 0x0146, 0x0158, 0x0168, 0x017c, 0x018c, - 0x0198, 0x01ae, 0x01b4, 0x01be, 0x01da, 0x01e8, 0x01f4, 0x0200, - 0x020e, 0x0222, 0x022c, 0x0232, 0x023c, 0x024c, 0x025e, 0x026c, - 0x027c, 0x028e, 0x02a0, 0x02aa, 0x02b6, 0x02c8, 0x02d4, 0x02e6, - 0x02f8, 0x0302, 0x031d, 0x0329, 0x0337, 0x0347, 0x0351, 0x035b, - 0x036d, 0x0377, 0x0388, 0x0398, 0x03a6, 0x03b6, 0x03c6, 0x03d2, - // Entry 40 - 7F - 0x03e8, 0x0400, 0x0416, 0x041e, 0x042f, 0x043d, 0x0443, 0x0455, - 0x046b, 0x047d, 0x048d, 0x049d, 0x04af, 0x04b9, 0x04c5, 0x04d3, - 0x04e1, 0x04f3, 0x0501, 0x050d, 0x051d, 0x0529, 0x053b, 0x0549, - 0x0551, 0x0561, 0x0571, 0x0581, 0x0599, 0x05a3, 0x05b5, 0x05c3, - 0x05cf, 0x05e1, 0x05f8, 0x060a, 0x0622, 0x0634, 0x0642, 0x0656, - 0x0668, 0x067a, 0x0686, 0x0696, 0x06a6, 0x06b8, 0x06c2, 0x06e1, - 0x06f1, 0x06fd, 0x070f, 0x072a, 0x0747, 0x0760, 0x076c, 0x0774, - 0x078c, 0x0798, 0x07a2, 0x07b0, 0x07be, 0x07d0, 0x07d8, 0x07e4, - // Entry 80 - BF - 0x07f6, 0x080c, 0x0818, 0x0831, 0x083b, 0x084b, 0x0855, 0x086b, - 0x087b, 0x088f, 0x0899, 0x08b2, 0x08bc, 0x08d0, 0x08e0, 0x08f2, - 0x0904, 0x090c, 0x091c, 0x092c, 0x0938, 0x0942, 0x094e, 0x0960, - 0x096e, 0x097c, 0x098c, 0x0998, 0x09a2, 0x09b6, 0x09c4, 0x09d8, - 0x09e4, 0x09ee, 0x09fa, 0x0a06, 0x0a16, 0x0a2a, 0x0a3a, 0x0a4e, - 0x0a56, 0x0a64, 0x0a6e, 0x0a84, 0x0a92, 0x0a9c, 0x0aa6, 0x0ab2, - 0x0abc, 0x0ac8, 0x0ad2, 0x0ae0, 0x0ae8, 0x0af8, 0x0b02, 0x0b18, - 0x0b2a, 0x0b2a, 0x0b3a, 0x0b3a, 0x0b42, 0x0b54, 0x0b54, 0x0b5c, - // Entry C0 - FF - 0x0b5c, 0x0b71, 0x0b8b, 0x0b97, 0x0ba7, 0x0bbd, 0x0bbd, 0x0bcb, - 0x0bcb, 0x0bcb, 0x0bd7, 0x0bd7, 0x0bd7, 0x0bd7, 0x0bd7, 0x0beb, - 0x0beb, 0x0bf7, 0x0c03, 0x0c1b, 0x0c1b, 0x0c23, 0x0c23, 0x0c23, - 0x0c23, 0x0c2b, 0x0c35, 0x0c35, 0x0c35, 0x0c35, 0x0c35, 0x0c35, - 0x0c43, 0x0c4d, 0x0c55, 0x0c55, 0x0c55, 0x0c61, 0x0c61, 0x0c61, - 0x0c69, 0x0c69, 0x0c69, 0x0c69, 0x0c75, 0x0c8d, 0x0c8d, 0x0c95, - 0x0c95, 0x0c9d, 0x0cad, 0x0cad, 0x0cbd, 0x0cbd, 0x0ccb, 0x0ccb, - 0x0cd5, 0x0ce3, 0x0cf1, 0x0cf9, 0x0d09, 0x0d1b, 0x0d31, 0x0d3d, - // Entry 100 - 13F - 0x0d4d, 0x0d4d, 0x0d5b, 0x0d5b, 0x0d7c, 0x0d7c, 0x0d94, 0x0da0, - 0x0dac, 0x0dac, 0x0dba, 0x0dc8, 0x0dd4, 0x0dde, 0x0dde, 0x0de8, - 0x0e09, 0x0e09, 0x0e13, 0x0e32, 0x0e32, 0x0e3a, 0x0e3a, 0x0e42, - 0x0e50, 0x0e50, 0x0e6c, 0x0e78, 0x0e8a, 0x0ea7, 0x0ea7, 0x0eb3, - 0x0eb3, 0x0ebb, 0x0ecf, 0x0ecf, 0x0ed5, 0x0ed5, 0x0ef4, 0x0f10, - 0x0f10, 0x0f31, 0x0f52, 0x0f66, 0x0f6a, 0x0f6a, 0x0f6a, 0x0f72, - 0x0f7c, 0x0f7c, 0x0f82, 0x0f96, 0x0f96, 0x0fbe, 0x0fd6, 0x0fd6, - 0x0fe0, 0x0ff2, 0x0ffe, 0x1008, 0x101c, 0x103f, 0x103f, 0x103f, - // Entry 140 - 17F - 0x103f, 0x104e, 0x1058, 0x1058, 0x1068, 0x1068, 0x107c, 0x1088, - 0x1092, 0x10af, 0x10af, 0x10b7, 0x10bf, 0x10bf, 0x10c9, 0x10d9, - 0x10d9, 0x10d9, 0x10e5, 0x10e5, 0x10e5, 0x1102, 0x111b, 0x111b, - 0x1134, 0x1140, 0x114a, 0x114e, 0x1158, 0x1160, 0x1176, 0x1176, - 0x117e, 0x117e, 0x117e, 0x117e, 0x1186, 0x1186, 0x118e, 0x11a0, - 0x11a0, 0x11a0, 0x11a0, 0x11a0, 0x11a0, 0x11b0, 0x11b0, 0x11be, - 0x11d2, 0x11dc, 0x11f7, 0x11f7, 0x11f7, 0x120b, 0x1217, 0x1225, - 0x1225, 0x1225, 0x122f, 0x123d, 0x1249, 0x1249, 0x1253, 0x125d, - // Entry 180 - 1BF - 0x126b, 0x126b, 0x126b, 0x126b, 0x126b, 0x126b, 0x1275, 0x1275, - 0x127d, 0x127d, 0x127d, 0x1290, 0x129e, 0x12a8, 0x12ae, 0x12b8, - 0x12b8, 0x12b8, 0x12b8, 0x12ca, 0x12ca, 0x12d6, 0x12e4, 0x12f2, - 0x1302, 0x130c, 0x130c, 0x1316, 0x1322, 0x132c, 0x132c, 0x132c, - 0x1343, 0x1343, 0x1343, 0x134f, 0x1365, 0x136f, 0x137f, 0x138f, - 0x1397, 0x1397, 0x1397, 0x13ac, 0x13b8, 0x13cc, 0x13da, 0x13da, - 0x13da, 0x13e6, 0x13e6, 0x13e6, 0x1400, 0x1400, 0x1419, 0x1425, - 0x142d, 0x1439, 0x1439, 0x1439, 0x1439, 0x1443, 0x145a, 0x145a, - // Entry 1C0 - 1FF - 0x1463, 0x147c, 0x147c, 0x1499, 0x14a7, 0x14b5, 0x14bd, 0x14c7, - 0x14d1, 0x14f0, 0x1506, 0x1514, 0x1524, 0x1538, 0x154c, 0x154c, - 0x154c, 0x154c, 0x154c, 0x1568, 0x1568, 0x157c, 0x157c, 0x157c, - 0x158e, 0x158e, 0x15b0, 0x15b0, 0x15b0, 0x15c2, 0x15d0, 0x15e4, - 0x15e4, 0x15e4, 0x15e4, 0x15f0, 0x15f0, 0x15f0, 0x15f0, 0x1606, - 0x1606, 0x1614, 0x161e, 0x1649, 0x1649, 0x1653, 0x1661, 0x1661, - 0x1661, 0x1661, 0x1679, 0x1687, 0x1687, 0x1687, 0x1687, 0x1687, - 0x1687, 0x1693, 0x1693, 0x16a7, 0x16a7, 0x16a7, 0x16ad, 0x16ad, - // Entry 200 - 23F - 0x16b9, 0x16b9, 0x16b9, 0x16cc, 0x16dd, 0x16f0, 0x170b, 0x1719, - 0x172d, 0x174a, 0x1754, 0x1754, 0x1754, 0x1760, 0x1768, 0x1778, - 0x1788, 0x17a9, 0x17b9, 0x17b9, 0x17b9, 0x17c3, 0x17c3, 0x17cf, - 0x17d9, 0x17e3, 0x17e9, 0x17f7, 0x17f7, 0x180b, 0x1819, 0x1819, - 0x1827, 0x183a, 0x184b, 0x184b, 0x184b, 0x184b, 0x185b, 0x185b, - 0x1869, 0x1875, 0x1875, 0x1889, 0x1889, 0x1895, 0x18a7, 0x18b5, - 0x18d2, 0x18d8, 0x18d8, 0x18d8, 0x18d8, 0x18d8, 0x18e4, 0x18e4, - 0x18e4, 0x18e4, 0x18f0, 0x18fa, 0x1902, 0x1902, 0x1902, 0x190e, - // Entry 240 - 27F - 0x190e, 0x190e, 0x1914, 0x1922, 0x1922, 0x1922, 0x1922, 0x1934, - 0x1946, 0x195a, 0x195a, 0x1966, 0x19a0, 0x19a8, 0x19da, 0x19e2, - 0x19e2, 0x19e2, 0x19e2, 0x1a12, 0x1a12, 0x1a12, 0x1a12, 0x1a12, - 0x1a12, 0x1a12, 0x1a12, 0x1a12, 0x1a12, 0x1a12, 0x1a12, 0x1a24, - 0x1a24, 0x1a24, 0x1a36, 0x1a52, 0x1a52, 0x1a7f, 0x1aaa, - }, - }, - { // ca - caLangStr, - caLangIdx, - }, - { // ccp - "𑄃𑄜𑄢𑄴𑄃𑄝𑄴𑄈𑄎𑄨𑄠𑄚𑄴𑄃𑄝𑄬𑄌𑄴𑄖𑄩𑄠𑄧𑄃𑄜𑄳𑄢𑄨𑄇𑄚𑄴𑄃𑄇𑄚𑄴𑄃𑄟𑄴𑄦𑄢𑄨𑄇𑄴𑄃𑄢𑄴𑄉𑄮𑄚𑄨𑄎𑄴𑄃𑄢𑄧𑄝𑄩𑄃𑄥𑄟𑄨𑄃𑄞𑄬𑄢𑄨𑄇𑄴𑄃𑄠𑄧𑄟𑄢" + - "𑄃𑄎𑄢𑄴𑄝𑄳𑄆𑄎𑄚𑄩𑄝𑄌𑄴𑄇𑄨𑄢𑄴𑄝𑄬𑄣𑄢𑄪𑄥𑄨𑄠𑄧𑄝𑄪𑄣𑄴𑄉𑄬𑄢𑄨𑄠𑄧𑄝𑄨𑄥𑄴𑄣𑄟𑄝𑄟𑄴𑄝𑄢𑄝𑄁𑄣𑄖𑄨𑄛𑄴𑄝𑄧𑄖𑄨𑄝𑄳𑄢𑄬𑄑𑄧𑄚" + - "𑄴𑄝𑄧𑄥𑄴𑄚𑄩𑄠𑄚𑄴𑄇𑄖𑄣𑄚𑄴𑄌𑄬𑄌𑄬𑄚𑄴𑄌𑄟𑄮𑄢𑄮𑄇𑄧𑄢𑄴𑄥𑄨𑄇𑄚𑄴𑄇𑄳𑄢𑄨𑄌𑄬𑄇𑄴𑄌𑄢𑄴𑄌𑄴 𑄥𑄳𑄣𑄞𑄨𑄇𑄴𑄌𑄪𑄝𑄥𑄴𑄃𑄮𑄠𑄬" + - "𑄣𑄧𑄌𑄴𑄓𑄬𑄚𑄨𑄌𑄴𑄎𑄢𑄴𑄟𑄚𑄴𑄘𑄨𑄝𑄬𑄦𑄨𑄎𑄮𑄋𑄴𑄉𑄃𑄨𑄅𑄠𑄨𑄉𑄳𑄢𑄨𑄇𑄴𑄃𑄨𑄁𑄢𑄨𑄎𑄨𑄆𑄥𑄴𑄛𑄬𑄢𑄚𑄴𑄖𑄮𑄥𑄳𑄛𑄳𑄠𑄚𑄨𑄌𑄴𑄆" + - "𑄌𑄴𑄖𑄨𑄚𑄩𑄠𑄧𑄝𑄌𑄴𑄇𑄧𑄜𑄢𑄴𑄥𑄨𑄜𑄪𑄣𑄳𑄦𑄜𑄨𑄚𑄨𑄌𑄴𑄜𑄨𑄎𑄨𑄠𑄚𑄴𑄜𑄢𑄮𑄌𑄴𑄜𑄧𑄢𑄥𑄨𑄛𑄧𑄎𑄨𑄟𑄴 𑄜𑄳𑄢𑄨𑄥𑄨𑄠𑄚𑄴𑄃𑄭𑄢" + - "𑄨𑄌𑄴𑄃𑄨𑄌𑄴𑄇𑄧𑄖𑄴𑄥𑄧-𑄉𑄳𑄠𑄬𑄣𑄨𑄇𑄴𑄉𑄳𑄠𑄣𑄨𑄥𑄨𑄠𑄧𑄉𑄪𑄠𑄢𑄚𑄨𑄉𑄪𑄎𑄴𑄢𑄖𑄨𑄟𑄳𑄠𑄇𑄴𑄥𑄧𑄦𑄃𑄪𑄥𑄦𑄨𑄛𑄴𑄝𑄳𑄢𑄪𑄦𑄨" + - "𑄚𑄴𑄓𑄨𑄦𑄪𑄢𑄨 𑄟𑄮𑄖𑄪𑄇𑄳𑄢𑄮𑄠𑄬𑄥𑄩𑄠𑄧𑄦𑄭𑄖𑄨𑄠𑄚𑄴𑄦𑄁𑄉𑄬𑄢𑄩𑄠𑄧𑄃𑄢𑄴𑄟𑄬𑄚𑄨𑄠𑄧𑄦𑄬𑄢𑄬𑄢𑄮𑄃𑄨𑄚𑄴𑄑𑄢𑄴𑄣𑄨𑄁𑄉𑄪" + - "𑄠𑄃𑄨𑄚𑄴𑄘𑄮𑄚𑄬𑄥𑄨𑄠𑄧𑄃𑄨𑄚𑄴𑄑𑄢𑄴𑄣𑄨𑄁𑄉𑄧𑄃𑄨𑄉𑄴𑄝𑄮𑄥𑄨𑄥𑄪𑄠𑄚𑄴𑄠𑄨𑄃𑄨𑄚𑄪𑄛𑄨𑄠𑄇𑄴𑄃𑄨𑄓𑄮𑄃𑄭𑄌𑄴𑄣𑄳𑄠𑄚𑄴𑄓𑄨𑄠" + - "𑄧𑄃𑄨𑄖𑄣𑄩𑄠𑄧𑄃𑄨𑄚𑄪𑄇𑄴𑄑𑄨𑄑𑄪𑄖𑄴𑄎𑄛𑄚𑄨𑄎𑄞𑄚𑄨𑄎𑄴𑄎𑄧𑄢𑄴𑄎𑄨𑄠𑄚𑄴𑄇𑄧𑄁𑄉𑄮𑄇𑄨𑄇𑄪𑄠𑄪𑄇𑄮𑄠𑄚𑄨𑄠𑄟𑄇𑄎𑄇𑄴𑄇𑄳𑄠𑄣" + - "𑄣𑄴𑄣𑄨𑄥𑄪𑄖𑄴𑄈𑄧𑄟𑄬𑄢𑄴𑄇𑄧𑄚𑄴𑄚𑄧𑄢𑄴𑄇𑄮𑄢𑄨𑄠𑄚𑄴𑄇𑄚𑄪𑄢𑄨𑄇𑄌𑄴𑄟𑄨𑄢𑄨𑄇𑄪𑄢𑄴𑄘𑄨𑄥𑄴𑄇𑄮𑄟𑄨𑄇𑄧𑄢𑄴𑄚𑄨𑄌𑄴𑄇𑄨𑄢𑄴" + - "𑄉𑄨𑄌𑄴𑄣𑄑𑄨𑄚𑄴𑄣𑄪𑄇𑄴𑄥𑄬𑄟𑄴𑄝𑄢𑄴𑄉𑄩𑄠𑄧𑄉𑄚𑄴𑄓𑄣𑄨𑄟𑄴𑄝𑄪𑄢𑄴𑄉𑄨𑄌𑄴𑄣𑄨𑄋𑄴𑄉𑄣𑄣𑄃𑄮𑄣𑄨𑄗𑄪𑄠𑄬𑄚𑄩𑄠𑄧𑄣𑄪𑄝-𑄇𑄑" + - "𑄋𑄴𑄉𑄣𑄖𑄴𑄞𑄩𑄠𑄧𑄟𑄣𑄉𑄥𑄨𑄟𑄢𑄴𑄥𑄣𑄨𑄎𑄴𑄟𑄃𑄮𑄢𑄨𑄟𑄳𑄠𑄥𑄨𑄓𑄮𑄚𑄩𑄠𑄧𑄟𑄣𑄠𑄣𑄟𑄴𑄟𑄧𑄁𑄉𑄮𑄣𑄨𑄠𑄧𑄟𑄢𑄒𑄨𑄟𑄣𑄧𑄠𑄴𑄟𑄧" + - "𑄣𑄴𑄑𑄨𑄠𑄧𑄝𑄧𑄢𑄴𑄟𑄨𑄚𑄃𑄪𑄢𑄪𑄅𑄖𑄴𑄖𑄧𑄢𑄴 𑄆𑄚𑄴𑄘𑄬𑄝𑄨𑄣𑄨𑄚𑄬𑄛𑄣𑄨𑄆𑄚𑄴𑄘𑄮𑄋𑄴𑄉𑄓𑄌𑄴𑄚𑄧𑄢𑄴𑄃𑄮𑄠𑄬𑄎𑄩𑄠𑄚𑄴 𑄚" + - "𑄨𑄚𑄧𑄢𑄴𑄥𑄳𑄇𑄴𑄚𑄧𑄢𑄴𑄃𑄮𑄠𑄬𑄎𑄨𑄠𑄚𑄴 𑄝𑄮𑄇𑄴𑄟𑄣𑄴𑄓𑄧𑄉𑄨𑄚𑄴 𑄆𑄚𑄴𑄓𑄬𑄝𑄬𑄣𑄬𑄚𑄞𑄎𑄮𑄚𑄠𑄚𑄴𑄎𑄃𑄧𑄇𑄴𑄥𑄨𑄑𑄚𑄴𑄃" + - "𑄮𑄎𑄨𑄝𑄧𑄤𑄃𑄧𑄢𑄮𑄟𑄮𑄃𑄮𑄢𑄨𑄠𑄃𑄮𑄥𑄬𑄑𑄨𑄇𑄴𑄛𑄚𑄴𑄎𑄝𑄩𑄛𑄣𑄨𑄛𑄮𑄣𑄨𑄌𑄴𑄛𑄌𑄴𑄑𑄪𑄛𑄧𑄢𑄴𑄖𑄪𑄉𑄨𑄎𑄴𑄇𑄬𑄌𑄪𑄠𑄢𑄮𑄟𑄚𑄴" + - "𑄥𑄴𑄢𑄪𑄚𑄴𑄘𑄨𑄢𑄮𑄟𑄚𑄩𑄠𑄧𑄢𑄪𑄌𑄴𑄇𑄨𑄚𑄴𑄠𑄢𑄮𑄠𑄚𑄴𑄓𑄥𑄧𑄁𑄥𑄴𑄇𑄳𑄢𑄨𑄖𑄴𑄥𑄢𑄴𑄓𑄨𑄚𑄨𑄠𑄚𑄴𑄥𑄨𑄚𑄴𑄙𑄨𑄅𑄖𑄴𑄖𑄧𑄢𑄴 " + - "𑄢𑄬𑄌𑄴𑄎𑄮𑄢𑄴 𑄥𑄟𑄨𑄥𑄋𑄴𑄉𑄮𑄥𑄨𑄁𑄦𑄧𑄣𑄩𑄥𑄳𑄣𑄮𑄞𑄇𑄴𑄥𑄳𑄣𑄮𑄞𑄬𑄚𑄩𑄠𑄧𑄥𑄟𑄮𑄠𑄚𑄴𑄥𑄮𑄚𑄥𑄮𑄟𑄣𑄨𑄃𑄣𑄴𑄝𑄬𑄚𑄩𑄠𑄧𑄥" + - "𑄢𑄴𑄝𑄩𑄠𑄧𑄥𑄮𑄠𑄖𑄨𑄘𑄧𑄉𑄨𑄚𑄴 𑄥𑄮𑄗𑄮𑄥𑄪𑄘𑄚𑄩𑄥𑄭𑄪𑄓𑄨𑄥𑄴𑄥𑄱𑄦𑄨𑄣𑄨𑄖𑄟𑄨𑄣𑄴𑄖𑄬𑄣𑄬𑄉𑄪𑄖𑄎𑄨𑄇𑄴𑄗𑄭𑄖𑄨𑄉𑄧𑄢𑄨𑄚" + - "𑄨𑄠𑄖𑄪𑄢𑄴𑄇𑄧𑄟𑄬𑄚𑄨𑄥𑄱𑄚𑄑𑄮𑄋𑄴𑄉𑄚𑄴𑄖𑄪𑄢𑄴𑄇𑄩𑄥𑄧𑄋𑄴𑄉𑄖𑄖𑄢𑄴𑄖𑄦𑄨𑄖𑄨𑄠𑄚𑄴𑄃𑄪𑄃𑄨𑄊𑄪𑄢𑄴𑄃𑄨𑄃𑄪𑄇𑄳𑄢𑄬𑄚𑄩𑄠𑄧" + - "𑄃𑄪𑄢𑄴𑄘𑄪𑄃𑄪𑄎𑄴𑄝𑄬𑄇𑄩𑄠𑄧𑄞𑄬𑄚𑄴𑄓𑄞𑄨𑄠𑄬𑄖𑄴𑄚𑄟𑄩𑄞𑄮𑄣𑄛𑄪𑄇𑄴𑄤𑄣𑄪𑄚𑄴𑄤𑄃𑄮𑄣𑄮𑄜𑄴𑄎𑄮𑄥𑄠𑄨𑄖𑄴𑄘𑄨𑄥𑄴𑄃𑄨𑄃𑄮𑄢" + - "𑄪𑄝𑄏𑄪𑄠𑄋𑄴𑄌𑄩𑄚𑄎𑄪𑄣𑄪𑄃𑄳𑄃𑄌𑄳𑄆𑄚𑄨𑄎𑄴𑄃𑄇𑄮𑄣𑄨𑄃𑄧𑄘𑄟𑄳𑄉𑄬𑄃𑄘𑄬𑄉𑄬𑄃𑄜𑄳𑄢𑄨𑄦𑄨𑄣𑄨𑄃𑄬𑄊𑄟𑄴𑄃𑄳𑄆𑄚𑄪𑄃𑄇𑄳𑄦𑄴" + - "𑄘𑄨𑄠𑄚𑄴𑄃𑄣𑄬𑄅𑄖𑄴𑄓𑄧𑄉𑄨𑄚𑄴 𑄃𑄣𑄴𑄖𑄭𑄛𑄪𑄢𑄧𑄚𑄨 𑄃𑄟𑄧𑄣𑄧𑄢𑄴 𑄃𑄨𑄁𑄢𑄬𑄎𑄩𑄃𑄋𑄳𑄉𑄨𑄇𑄃𑄢𑄟𑄳𑄆𑄇𑄴𑄟𑄛𑄪𑄌𑄨𑄃𑄢" + - "𑄛𑄦𑄮𑄃𑄢𑄤𑄇𑄴𑄃𑄥𑄪𑄃𑄌𑄴𑄖𑄪𑄢𑄨𑄠𑄧𑄃𑄤𑄙𑄨𑄝𑄬𑄣𑄪𑄌𑄩𑄝𑄣𑄨𑄚𑄩𑄠𑄧𑄝𑄥𑄝𑄬𑄎𑄝𑄬𑄟𑄴𑄝𑄝𑄬𑄚𑄛𑄧𑄏𑄨𑄟𑄴 𑄝𑄣𑄮𑄌𑄨𑄞𑄮𑄎" + - "𑄴𑄛𑄪𑄢𑄨𑄝𑄨𑄇𑄮𑄣𑄴𑄝𑄨𑄚𑄨𑄥𑄨𑄇𑄴𑄥𑄨𑄇𑄝𑄳𑄢𑄎𑄴𑄝𑄮𑄢𑄮𑄝𑄪𑄢𑄨𑄠𑄖𑄴𑄝𑄪𑄉𑄨𑄚𑄨𑄝𑄳𑄣𑄨𑄚𑄴𑄇𑄳𑄠𑄓𑄮𑄝𑄳𑄠𑄢𑄨𑄛𑄴𑄃𑄖𑄴" + - "𑄥𑄟𑄴𑄌𑄋𑄴𑄟𑄳𑄦𑄌𑄬𑄝𑄪𑄠𑄚𑄮𑄌𑄨𑄉𑄌𑄨𑄛𑄴𑄌𑄌𑄉𑄖𑄳𑄆𑄌𑄪𑄇𑄨𑄟𑄢𑄨𑄌𑄨𑄚𑄪𑄇𑄴 𑄎𑄢𑄴𑄉𑄧𑄚𑄴𑄌𑄧𑄇𑄴𑄑𑄳𑄅𑄧𑄠𑄧𑄌𑄨𑄛𑄮𑄤" + - "𑄚𑄴𑄌𑄬𑄢𑄮𑄇𑄩𑄥𑄳𑄆𑄠𑄬𑄚𑄴𑄟𑄧𑄖𑄴𑄙𑄳𑄠𑄧 𑄇𑄪𑄢𑄴𑄘𑄨𑄌𑄴𑄇𑄧𑄛𑄴𑄑𑄨𑄇𑄴𑄇𑄳𑄢𑄨𑄟𑄨𑄠𑄚𑄴 𑄖𑄪𑄢𑄴𑄇𑄨𑄥𑄬𑄥𑄬𑄣𑄧𑄤 𑄇" + - "𑄳𑄢𑄬𑄃𑄮𑄣𑄴 𑄜𑄳𑄢𑄬𑄐𑄴𑄌𑄧𑄇𑄥𑄪𑄝𑄨𑄠𑄚𑄴𑄓𑄇𑄮𑄑𑄘𑄢𑄴𑄉𑄧𑄤𑄖𑄳𑄆𑄖𑄓𑄬𑄣𑄤𑄬𑄢𑄴𑄥𑄳𑄣𑄳𑄠𑄞𑄴𑄘𑄮𑄉𑄳𑄢𑄨𑄝𑄴𑄓𑄨𑄁𑄇𑄎" + - "𑄢𑄴𑄟𑄓𑄮𑄉𑄧𑄢𑄨𑄙𑄮𑄣𑄴𑄚𑄬𑄭𑄙𑄳𑄠𑄬 𑄥𑄮𑄢𑄴𑄝𑄨𑄠𑄚𑄴𑄘𑄱𑄣𑄟𑄧𑄖𑄴𑄙𑄳𑄠𑄧 𑄓𑄌𑄴𑄎𑄧𑄣-𑄜𑄧𑄚𑄩𑄓𑄨𑄃𑄪𑄣𑄘𑄉𑄎𑄃𑄬𑄟𑄳" + - "𑄝𑄪𑄪𑄆𑄜𑄨𑄇𑄴𑄛𑄪𑄢𑄨𑄚𑄩 𑄟𑄨𑄥𑄧𑄢𑄩𑄠𑄧𑄃𑄨𑄇𑄎𑄪𑄇𑄴𑄆𑄣𑄟𑄭𑄖𑄴𑄟𑄧𑄖𑄴𑄙𑄳𑄠𑄧 𑄃𑄨𑄁𑄢𑄬𑄎𑄨𑄄𑄃𑄮𑄚𑄴𑄓𑄮𑄜𑄳𑄠𑄋𑄴𑄉" + - "𑄧𑄜𑄨𑄣𑄨𑄛𑄨𑄚𑄮𑄜𑄧𑄚𑄴𑄟𑄧𑄖𑄴𑄙𑄳𑄠𑄧 𑄜𑄧𑄢𑄥𑄨𑄛𑄪𑄢𑄮𑄚𑄨 𑄜𑄧𑄢𑄥𑄨𑄅𑄖𑄴𑄗𑄧𑄢𑄴 𑄎𑄬𑄌𑄴𑄎𑄮𑄢𑄴 𑄜𑄳𑄢𑄨𑄥𑄨𑄠𑄚𑄴" + - "𑄛𑄪𑄉𑄮 𑄜𑄳𑄢𑄨𑄥𑄨𑄠𑄧𑄜𑄳𑄢𑄨𑄃𑄪𑄣𑄨𑄠𑄚𑄴𑄉𑄳𑄃𑄉𑄉𑄃𑄪𑄌𑄴𑄉𑄧𑄚𑄴𑄉𑄧𑄠𑄮𑄝𑄠𑄉𑄩𑄎𑄴𑄉𑄨𑄣𑄴𑄝𑄢𑄴𑄑𑄨𑄎𑄴𑄟𑄧𑄖𑄴𑄙𑄳𑄠" + - "𑄧-𑄅𑄪𑄉𑄪𑄢𑄬 𑄎𑄢𑄴𑄟𑄚𑄩𑄛𑄪𑄢𑄮𑄚𑄴 𑄅𑄪𑄉𑄪𑄢𑄬 𑄎𑄢𑄴𑄟𑄚𑄩𑄉𑄮𑄚𑄴𑄓𑄨𑄉𑄢𑄮𑄚𑄴𑄖𑄣𑄮𑄉𑄧𑄗𑄨𑄇𑄴𑄉𑄳𑄢𑄬𑄝𑄮𑄛𑄪𑄢𑄮" + - "𑄚𑄴 𑄉𑄳𑄢𑄩𑄇𑄴𑄥𑄪𑄃𑄨𑄌𑄴 𑄥𑄢𑄴𑄟𑄚𑄴𑄉𑄪𑄥𑄩𑄉𑄧𑄃𑄮𑄃𑄨𑄌𑄴𑄃𑄨𑄚𑄴𑄦𑄭𑄓𑄦𑄧𑄇𑄴𑄦𑄤𑄃𑄨𑄠𑄚𑄴𑄦𑄨𑄣𑄨𑄉𑄳𑄠𑄠𑄧𑄚𑄮𑄚𑄴" + - "𑄦𑄨𑄖𑄨𑄨𑄖𑄴𑄦𑄳𑄦𑄟𑄮𑄋𑄴𑄅𑄪𑄉𑄪𑄢𑄬 𑄥𑄮𑄢𑄴𑄥𑄨𑄠𑄚𑄴Xiang 𑄌𑄨𑄚𑄦𑄪𑄛𑄃𑄨𑄝𑄚𑄴𑄃𑄨𑄝𑄨𑄝𑄨𑄠𑄧𑄃𑄨𑄣𑄮𑄇𑄮𑄃𑄨𑄁𑄉" + - "𑄪𑄌𑄴𑄣𑄮𑄌𑄴𑄝𑄚𑄴𑄉𑄮𑄟𑄴𑄝𑄟𑄇𑄟𑄬𑄎𑄪𑄘𑄬𑄃𑄮 𑄜𑄢𑄴𑄥𑄨𑄎𑄪𑄘𑄬𑄃𑄮 𑄃𑄢𑄧𑄝𑄨𑄇𑄢-𑄇𑄣𑄴𑄛𑄇𑄴𑄇𑄝𑄭𑄣𑄬𑄇𑄌𑄨𑄚𑄴𑄃𑄧𑄌" + - "𑄴𑄎𑄪𑄇𑄟𑄴𑄝𑄇𑄃𑄪𑄃𑄨𑄇𑄝𑄢𑄴𑄓𑄨𑄠𑄚𑄴𑄑𑄃𑄨𑄠𑄛𑄴𑄟𑄇𑄮𑄚𑄴𑄘𑄬𑄇𑄝𑄪𑄞𑄢𑄴𑄘𑄨𑄠𑄚𑄪𑄇𑄮𑄢𑄮𑄈𑄥𑄨𑄈𑄮𑄑𑄚𑄨𑄎𑄴𑄇𑄮𑄠𑄧𑄢 " + - "𑄌𑄩𑄚𑄨𑄇𑄇𑄮𑄇𑄣𑄬𑄚𑄴𑄎𑄨𑄚𑄴𑄇𑄨𑄟𑄴𑄝𑄪𑄚𑄴𑄘𑄪𑄇𑄧𑄟𑄨-𑄛𑄢𑄧𑄟𑄨𑄃𑄇𑄴𑄇𑄮𑄋𑄴𑄇𑄚𑄨𑄇𑄮𑄥𑄳𑄢𑄭𑄚𑄴𑄇𑄴𑄛𑄬𑄣𑄳𑄣𑄬𑄇𑄢𑄴" + - "𑄌𑄮-𑄝𑄣𑄴𑄇𑄢𑄴𑄇𑄢𑄬𑄣𑄨𑄠𑄚𑄴𑄇𑄪𑄢𑄪𑄇𑄴𑄥𑄟𑄴𑄝𑄣𑄝𑄜𑄨𑄠𑄇𑄣𑄴𑄥𑄧𑄇𑄪𑄟𑄨𑄇𑄴𑄇𑄪𑄑𑄬𑄚𑄭𑄣𑄓𑄨𑄚𑄮𑄣𑄋𑄴𑄉𑄨𑄣𑄚𑄴𑄓𑄣𑄟" + - "𑄴𑄝𑄣𑄬𑄎𑄴𑄊𑄨𑄠𑄚𑄴𑄣𑄇𑄮𑄑𑄟𑄮𑄋𑄴𑄉𑄮𑄣𑄮𑄎𑄨𑄅𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄣𑄪𑄢𑄨𑄣𑄪𑄝-𑄣𑄪𑄣𑄪𑄠𑄣𑄭𑄪𑄥𑄬𑄚𑄮𑄣𑄪𑄚𑄴𑄓𑄣𑄪𑄠𑄮𑄟𑄨" + - "𑄎𑄮𑄣𑄭𑄪𑄠𑄟𑄘𑄪𑄢𑄬𑄥𑄬𑄟𑄉𑄦𑄨𑄟𑄳𑄆𑄧𑄗𑄨𑄣𑄨𑄟𑄳𑄠𑄇𑄥𑄢𑄴𑄟𑄳𑄠𑄚𑄴𑄓𑄨𑄁𑄉𑄮𑄟𑄥𑄭𑄟𑄮𑄇𑄴𑄥𑄟𑄳𑄠𑄚𑄴𑄓𑄢𑄴𑄟𑄬𑄚𑄴𑄓𑄬𑄟" + - "𑄬𑄢𑄪𑄟𑄢𑄨𑄥𑄨𑄠𑄚𑄴𑄟𑄧𑄖𑄴𑄙𑄳𑄠 𑄃𑄭𑄢𑄨𑄌𑄴𑄟𑄈𑄪𑄠-𑄟𑄬𑄖𑄴𑄖𑄮𑄟𑄬𑄑𑄟𑄨𑄇𑄟𑄳𑄠𑄇𑄴𑄟𑄨𑄚𑄋𑄴𑄇𑄝𑄃𑄪𑄟𑄚𑄴𑄌𑄪𑄟𑄚𑄨𑄛" + - "𑄪𑄢𑄩𑄟𑄮𑄦𑄃𑄮𑄇𑄴𑄟𑄧𑄥𑄨𑄟𑄪𑄘𑄋𑄴𑄉𑄧𑄝𑄣𑄧𑄇𑄴𑄇𑄚𑄨 𑄞𑄌𑄴𑄇𑄳𑄢𑄨𑄇𑄴𑄟𑄨𑄢𑄚𑄴𑄓𑄨𑄎𑄴𑄟𑄢𑄮𑄠𑄢𑄨𑄆𑄢𑄧𑄎𑄨𑄠𑄟𑄎𑄚𑄴𑄘" + - "𑄬𑄢𑄚𑄨𑄚𑄚𑄴𑄚𑄬𑄠𑄛𑄮𑄣𑄨𑄑𑄚𑄴𑄚𑄟𑄖𑄧𑄣𑄬 𑄎𑄢𑄴𑄟𑄚𑄨𑄚𑄬𑄃𑄮𑄠𑄢𑄨𑄚𑄨𑄠𑄌𑄴𑄚𑄨𑄃𑄪𑄠𑄚𑄴𑄇𑄱𑄥𑄨𑄃𑄮𑄚𑄨𑄋𑄴𑄉𑄬𑄟𑄴𑄝𑄪" + - "𑄚𑄴𑄚𑄮𑄉𑄭𑄛𑄪𑄢𑄮𑄚𑄴 𑄚𑄧𑄢𑄴𑄥𑄧𑄆𑄚𑄴𑄇𑄮𑄃𑄪𑄖𑄴𑄗𑄧𑄢𑄴 𑄢𑄬𑄌𑄴𑄎𑄮𑄢𑄴 𑄥𑄮𑄗𑄮𑄚𑄪𑄠𑄢𑄴𑄛𑄪𑄢𑄮𑄚𑄴 𑄚𑄬𑄃𑄮𑄠𑄢𑄩" + - "𑄚𑄳𑄠𑄠𑄟𑄴𑄃𑄮𑄠𑄬𑄎𑄨𑄚𑄳𑄠𑄠𑄋𑄴𑄇𑄮𑄣𑄬𑄚𑄧𑄱𑄢𑄮𑄆𑄚𑄴𑄎𑄨𑄟𑄃𑄮𑄥𑄬𑄌𑄴𑄃𑄧𑄑𑄮𑄟𑄚𑄴 𑄖𑄪𑄢𑄴𑄇𑄨𑄛𑄁𑄉𑄥𑄨𑄚𑄚𑄴𑄛𑄦𑄳𑄣" + - "𑄞𑄨𑄛𑄟𑄴𑄛𑄋𑄴𑄉𑄛𑄛𑄨𑄠𑄟𑄬𑄚𑄴𑄖𑄮𑄛𑄣𑄠𑄪𑄠𑄚𑄴𑄚𑄎𑄬𑄢𑄨𑄠𑄧 𑄛𑄨𑄎𑄨𑄚𑄴𑄛𑄪𑄢𑄮𑄚𑄴 𑄜𑄢𑄴𑄥𑄨𑄜𑄮𑄚𑄨𑄥𑄨𑄠𑄚𑄴𑄛𑄮𑄚𑄴" + - "𑄦𑄧𑄛𑄳𑄆𑄬𑄠𑄚𑄴𑄛𑄴𑄢𑄪𑄥𑄨𑄠𑄚𑄴𑄛𑄪𑄢𑄮𑄚𑄴 𑄛𑄳𑄢𑄮𑄞𑄬𑄚𑄴𑄥𑄣𑄴𑄇𑄳𑄦𑄨𑄌𑄬𑄢𑄎𑄴𑄥𑄳𑄦𑄚𑄨𑄢𑄛𑄚𑄳𑄆𑄪𑄢𑄢𑄮𑄑𑄮𑄁𑄉𑄚𑄴" + - "𑄢𑄧𑄟𑄴𑄝𑄮𑄢𑄮𑄟𑄚𑄨𑄃𑄢𑄴𑄟𑄬𑄚𑄨𑄠𑄚𑄴𑄢𑄤𑄥𑄳𑄠𑄚𑄴𑄓𑄃𑄮𑄠𑄬𑄥𑄈𑄥𑄟𑄢𑄨𑄑𑄚𑄴 𑄃𑄢𑄟𑄨𑄇𑄴𑄥𑄟𑄴𑄝𑄪𑄢𑄪𑄥𑄥𑄇𑄴𑄥𑄀𑄃𑄮𑄖" + - "𑄣𑄨𑄚𑄳𑄠𑄉𑄟𑄴𑄝𑄬𑄥𑄁𑄚𑄴𑄉𑄪𑄥𑄨𑄥𑄨𑄣𑄨𑄠𑄚𑄴𑄆𑄌𑄴𑄇𑄧𑄖𑄴𑄥𑄴𑄘𑄧𑄉𑄨𑄚𑄴 𑄇𑄪𑄢𑄴𑄘𑄨𑄌𑄴𑄥𑄬𑄚𑄥𑄬𑄣𑄴𑄇𑄪𑄛𑄴𑄇𑄱𑄢𑄝𑄬" + - "𑄚𑄮 𑄥𑄬𑄚𑄳𑄚𑄨𑄛𑄪𑄢𑄮𑄚𑄴 𑄃𑄭𑄢𑄨𑄌𑄴𑄖𑄌𑄬𑄣𑄴𑄦𑄨𑄖𑄴𑄥𑄚𑄴𑄥𑄨𑄓𑄟𑄮𑄘𑄧𑄉𑄨𑄚𑄴 𑄢𑄬𑄌𑄴𑄎𑄮𑄢𑄴 𑄥𑄟𑄨𑄣𑄪𑄣𑄬 𑄥𑄟" + - "𑄨𑄃𑄨𑄚𑄢𑄨 𑄥𑄟𑄨𑄥𑄳𑄇𑄧𑄣𑄳𑄑𑄧 𑄥𑄟𑄨𑄥𑄮𑄚𑄨𑄋𑄴𑄇𑄬𑄥𑄮𑄇𑄴𑄓𑄠𑄚𑄴𑄥𑄳𑄢𑄚𑄚𑄴 𑄑𑄮𑄋𑄴𑄉𑄮𑄥𑄬𑄢𑄬𑄢𑄴𑄥𑄦𑄮𑄥𑄪𑄇𑄪𑄟" + - "𑄥𑄪𑄥𑄪𑄥𑄪𑄟𑄬𑄢𑄩𑄠𑄧𑄇𑄧𑄟𑄮𑄢𑄨𑄠𑄚𑄴𑄛𑄪𑄢𑄮𑄚𑄴 𑄥𑄨𑄢𑄨𑄃𑄮𑄥𑄨𑄢𑄨𑄠𑄇𑄴𑄑𑄭𑄟𑄴𑄚𑄬𑄖𑄬𑄥𑄮𑄖𑄬𑄢𑄬𑄚𑄮𑄖𑄬𑄖𑄪𑄟𑄴𑄑𑄭" + - "𑄉𑄳𑄢𑄬𑄑𑄨𑄞𑄴𑄑𑄮𑄇𑄬𑄣𑄃𑄪𑄇𑄳𑄣𑄨𑄋𑄴𑄉𑄧𑄚𑄴𑄖𑄴𑄣𑄨𑄋𑄴𑄉𑄨𑄖𑄴𑄖𑄟𑄥𑄬𑄇𑄴𑄚𑄠𑄥𑄑𑄮𑄋𑄴𑄉𑄑𑄮𑄇𑄴 𑄛𑄨𑄥𑄨𑄚𑄴𑄖𑄢𑄮𑄇𑄮" + - "𑄥𑄨𑄟𑄴𑄥𑄨𑄠𑄚𑄴𑄖𑄪𑄟𑄴𑄝𑄪𑄇𑄑𑄪𑄞𑄣𑄪𑄖𑄥𑄤𑄇𑄴𑄑𑄪𑄞𑄨𑄚𑄨𑄠𑄚𑄴𑄥𑄬𑄚𑄴𑄑𑄳𑄢𑄣𑄴 𑄃𑄣𑄴𑄖𑄌𑄴 𑄖𑄟𑄎𑄨𑄉𑄖𑄴𑄃𑄪𑄓𑄴𑄟𑄪" + - "𑄢𑄴𑄑𑄧𑄃𑄪𑄉𑄢𑄨𑄑𑄨𑄇𑄴𑄃𑄪𑄟𑄴𑄝𑄪𑄚𑄴𑄘𑄪𑄦𑄧𑄝𑄧𑄢𑄴 𑄚𑄧𑄛𑄬𑄠𑄬 𑄞𑄌𑄴𑄞𑄭𑄞𑄮𑄑𑄨𑄇𑄴𑄞𑄪𑄚𑄴𑄏𑄮𑄤𑄣𑄧𑄥𑄬𑄢𑄴𑄤𑄣𑄟𑄮" + - "𑄤𑄢𑄬𑄤𑄥𑄮𑄤𑄢𑄴𑄣𑄴𑄛𑄨𑄢𑄨𑄤𑄌𑄨𑄚𑄇𑄣𑄴𑄟𑄳𑄆𑄧𑄇𑄴𑄥𑄮𑄉𑄃𑄨𑄠𑄃𑄮𑄃𑄨𑄠𑄛𑄬𑄥𑄬𑄠𑄋𑄴𑄉𑄧𑄝𑄬𑄚𑄴𑄠𑄮𑄟𑄴𑄝𑄇𑄳𑄠𑄚𑄴𑄑𑄮𑄚" + - "𑄩𑄎𑄴𑄎𑄛𑄮𑄑𑄬𑄇𑄴𑄃𑄉𑄬𑄠 𑄞𑄌𑄴𑄎𑄬𑄚𑄉𑄉𑄧𑄟𑄴𑄘𑄮𑄣𑄴 𑄟𑄧𑄢𑄧𑄇𑄧𑄧𑄱𑄚𑄴𑄖𑄟𑄎𑄨𑄉𑄖𑄴𑄎𑄪𑄚𑄨𑄞𑄏𑄧𑄢𑄴𑄘𑄮𑄇𑄳𑄠𑄬 𑄝" + - "𑄨𑄥𑄧𑄠𑄴 𑄚𑄳𑄄𑄬𑄎𑄎𑄚𑄱 𑄉𑄧𑄟𑄴 𑄃𑄢𑄧𑄝𑄩𑄃𑄧𑄌𑄴𑄑𑄳𑄢𑄨𑄠𑄚𑄴 𑄎𑄢𑄴𑄟𑄚𑄴𑄥𑄪𑄃𑄨𑄌𑄴 𑄦𑄭 𑄎𑄢𑄴𑄟𑄚𑄴𑄃𑄧𑄌𑄴𑄑𑄳" + - "𑄢𑄬𑄣𑄨𑄠𑄧 𑄃𑄨𑄁𑄢𑄬𑄎𑄨𑄇𑄚𑄓𑄩𑄠𑄧 𑄃𑄨𑄁𑄢𑄬𑄎𑄨𑄝𑄳𑄢𑄨𑄑𑄨𑄌𑄴 𑄃𑄨𑄁𑄢𑄬𑄎𑄨𑄃𑄟𑄬𑄢𑄨𑄇𑄢𑄴 𑄃𑄨𑄁𑄢𑄎𑄨𑄣𑄳𑄠𑄑𑄨𑄚" + - "𑄴 𑄃𑄟𑄬𑄢𑄨𑄇𑄚𑄴 𑄥𑄳𑄛𑄳𑄠𑄚𑄨𑄌𑄴𑄄𑄅𑄢𑄮𑄛𑄩𑄠𑄧 𑄥𑄳𑄛𑄳𑄠𑄚𑄨𑄌𑄴𑄟𑄳𑄠𑄇𑄴𑄥𑄨𑄇𑄚𑄴 𑄥𑄳𑄛𑄳𑄠𑄚𑄨𑄌𑄴𑄇𑄚𑄓𑄩𑄠𑄧 " + - "𑄜𑄧𑄢𑄥𑄨𑄥𑄪𑄃𑄨𑄌𑄴 𑄜𑄧𑄢𑄥𑄨𑄣𑄮𑄥𑄳𑄠𑄇𑄴𑄥𑄧𑄚𑄴𑄜𑄳𑄣𑄬𑄟𑄨𑄌𑄴𑄝𑄳𑄢𑄎𑄨𑄣𑄬𑄢𑄴 𑄛𑄧𑄢𑄴𑄖𑄪𑄉𑄨𑄎𑄴𑄃𑄨𑄃𑄪𑄢𑄮𑄛𑄬𑄢" + - "𑄴 𑄛𑄧𑄢𑄴𑄖𑄪𑄉𑄨𑄎𑄴𑄟𑄧𑄣𑄴𑄘𑄞𑄨𑄠𑄧𑄥𑄢𑄴𑄝𑄮-𑄇𑄳𑄢𑄮𑄠𑄬𑄥𑄨𑄠𑄧𑄇𑄧𑄋𑄴𑄉𑄮 𑄥𑄱𑄦𑄨𑄣𑄨𑄅𑄪𑄎𑄪𑄅𑄪𑄏𑄫 𑄌𑄩𑄚𑄢𑄨𑄘" + - "𑄨𑄥𑄪𑄘𑄮𑄟𑄴 𑄌𑄩𑄚", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0034, 0x0058, 0x0078, 0x0088, 0x00a8, 0x00cc, - 0x00e0, 0x00f0, 0x010c, 0x0120, 0x0148, 0x0164, 0x0188, 0x01b0, - 0x01c8, 0x01dc, 0x01e8, 0x0208, 0x0228, 0x024c, 0x0260, 0x0278, - 0x028c, 0x02b0, 0x02c0, 0x02d0, 0x0301, 0x0315, 0x0335, 0x034d, - 0x0365, 0x037d, 0x0391, 0x03a5, 0x03bd, 0x03d9, 0x0401, 0x0425, - 0x0449, 0x045d, 0x0471, 0x0485, 0x049d, 0x04b9, 0x04cd, 0x04e1, - 0x051e, 0x0536, 0x057f, 0x05a3, 0x05bb, 0x05d7, 0x05f3, 0x0603, - 0x0623, 0x063b, 0x065c, 0x0684, 0x06a0, 0x06c0, 0x06e4, 0x06fc, - // Entry 40 - 7F - 0x0730, 0x0760, 0x0790, 0x07a8, 0x07cc, 0x07f0, 0x0800, 0x0834, - 0x0850, 0x0880, 0x0890, 0x08a8, 0x08cc, 0x08e0, 0x08f8, 0x0914, - 0x0924, 0x0954, 0x096c, 0x098c, 0x09a8, 0x09bc, 0x09d8, 0x09f8, - 0x0a08, 0x0a28, 0x0a48, 0x0a5c, 0x0a98, 0x0aa8, 0x0ad8, 0x0af0, - 0x0afc, 0x0b24, 0x0b45, 0x0b61, 0x0b75, 0x0b95, 0x0ba9, 0x0bd5, - 0x0bed, 0x0c11, 0x0c21, 0x0c35, 0x0c55, 0x0c6d, 0x0c81, 0x0cc2, - 0x0cd6, 0x0cf6, 0x0d02, 0x0d5f, 0x0db0, 0x0ded, 0x0dfd, 0x0e11, - 0x0e35, 0x0e51, 0x0e69, 0x0e7d, 0x0e9d, 0x0eb5, 0x0ec1, 0x0ed9, - // Entry 80 - BF - 0x0eed, 0x0f15, 0x0f29, 0x0f45, 0x0f5d, 0x0f79, 0x0f89, 0x0fb5, - 0x0fe1, 0x1009, 0x1021, 0x106b, 0x107f, 0x109b, 0x10b7, 0x10df, - 0x10f7, 0x1103, 0x1117, 0x113b, 0x1157, 0x116b, 0x1194, 0x11a8, - 0x11c4, 0x11dc, 0x11f0, 0x1208, 0x121c, 0x1224, 0x1248, 0x1270, - 0x127c, 0x1298, 0x12b0, 0x12c4, 0x12d4, 0x12f4, 0x1314, 0x1344, - 0x135c, 0x1384, 0x1398, 0x13bc, 0x13d8, 0x13ec, 0x1408, 0x1414, - 0x1434, 0x1450, 0x1464, 0x1470, 0x1480, 0x14a8, 0x14bc, 0x14d8, - 0x14ec, 0x14ec, 0x1510, 0x1524, 0x1538, 0x1560, 0x1560, 0x1578, - // Entry C0 - FF - 0x1578, 0x15a5, 0x15f7, 0x160f, 0x162b, 0x163f, 0x163f, 0x1653, - 0x1653, 0x1653, 0x1667, 0x1667, 0x1667, 0x1673, 0x1673, 0x1697, - 0x1697, 0x16a7, 0x16bf, 0x16db, 0x16db, 0x16e3, 0x16e3, 0x16e3, - 0x16e3, 0x16ef, 0x1703, 0x1703, 0x170f, 0x170f, 0x170f, 0x173c, - 0x175c, 0x1774, 0x1784, 0x1784, 0x1784, 0x17a0, 0x17a0, 0x17a0, - 0x17b4, 0x17b4, 0x17c4, 0x17c4, 0x17e0, 0x17f8, 0x17f8, 0x1810, - 0x1810, 0x1824, 0x1840, 0x1840, 0x1858, 0x1870, 0x188c, 0x1898, - 0x18ac, 0x18c0, 0x18d0, 0x18dc, 0x1911, 0x1939, 0x1955, 0x196d, - // Entry 100 - 13F - 0x1989, 0x19ca, 0x19ea, 0x19ea, 0x1a27, 0x1a85, 0x1aa5, 0x1ab5, - 0x1acd, 0x1add, 0x1af9, 0x1b15, 0x1b35, 0x1b45, 0x1b55, 0x1b6d, - 0x1bbe, 0x1bbe, 0x1bca, 0x1bf7, 0x1c14, 0x1c28, 0x1c34, 0x1c50, - 0x1c64, 0x1c64, 0x1c9d, 0x1cb9, 0x1cd1, 0x1d0e, 0x1d0e, 0x1d2a, - 0x1d2a, 0x1d46, 0x1d66, 0x1d66, 0x1d76, 0x1d76, 0x1dab, 0x1dd8, - 0x1dd8, 0x1e3a, 0x1e6b, 0x1e97, 0x1ea3, 0x1ebb, 0x1ecb, 0x1edb, - 0x1ee3, 0x1ee3, 0x1ef3, 0x1f1f, 0x1f1f, 0x1f71, 0x1fbb, 0x1fbb, - 0x1fd3, 0x1ff3, 0x200b, 0x2023, 0x2054, 0x2085, 0x2085, 0x2085, - // Entry 140 - 17F - 0x2095, 0x20c5, 0x20d1, 0x20e1, 0x20fd, 0x20fd, 0x2131, 0x214d, - 0x2169, 0x21a6, 0x21b8, 0x21c4, 0x21d8, 0x21f8, 0x2210, 0x222c, - 0x222c, 0x222c, 0x2248, 0x225c, 0x226c, 0x2299, 0x22c6, 0x22c6, - 0x22e7, 0x22fb, 0x230f, 0x2327, 0x2337, 0x234b, 0x236f, 0x236f, - 0x2387, 0x23a3, 0x23cf, 0x23cf, 0x23df, 0x23df, 0x23eb, 0x2407, - 0x242c, 0x242c, 0x242c, 0x2438, 0x245c, 0x2484, 0x24b5, 0x24d1, - 0x24f1, 0x2511, 0x253e, 0x253e, 0x253e, 0x255e, 0x2576, 0x258a, - 0x259a, 0x25ae, 0x25c6, 0x25de, 0x25f2, 0x2606, 0x2616, 0x2626, - // Entry 180 - 1BF - 0x264a, 0x264a, 0x264a, 0x264a, 0x265a, 0x265a, 0x2672, 0x2672, - 0x2682, 0x26b3, 0x26b3, 0x26d4, 0x26f0, 0x2704, 0x2714, 0x2724, - 0x2734, 0x2734, 0x2734, 0x2750, 0x2750, 0x2760, 0x2780, 0x279c, - 0x27c4, 0x27d0, 0x27d0, 0x27e4, 0x2804, 0x281c, 0x282c, 0x284c, - 0x2881, 0x28aa, 0x28b6, 0x28d6, 0x28fa, 0x290e, 0x292a, 0x2946, - 0x2956, 0x2956, 0x2972, 0x299f, 0x29b7, 0x29db, 0x29f3, 0x29f3, - 0x29f3, 0x2a0b, 0x2a2f, 0x2a3b, 0x2a63, 0x2a6b, 0x2a94, 0x2ab0, - 0x2ac4, 0x2ae0, 0x2ae0, 0x2af8, 0x2b28, 0x2b38, 0x2b69, 0x2b69, - // Entry 1C0 - 1FF - 0x2b7d, 0x2bcf, 0x2be3, 0x2c18, 0x2c48, 0x2c70, 0x2c84, 0x2c9c, - 0x2cb4, 0x2ce9, 0x2d09, 0x2d21, 0x2d3d, 0x2d65, 0x2d81, 0x2d81, - 0x2db6, 0x2db6, 0x2db6, 0x2de3, 0x2de3, 0x2e07, 0x2e07, 0x2e07, - 0x2e3b, 0x2e5f, 0x2ea4, 0x2ebc, 0x2ebc, 0x2edc, 0x2ef4, 0x2f18, - 0x2f18, 0x2f18, 0x2f30, 0x2f44, 0x2f44, 0x2f44, 0x2f44, 0x2f6c, - 0x2f74, 0x2f9c, 0x2fa4, 0x2fd9, 0x2ff5, 0x3005, 0x3021, 0x3021, - 0x3041, 0x3059, 0x307d, 0x30a1, 0x30a1, 0x30da, 0x30da, 0x30e6, - 0x30e6, 0x3106, 0x313b, 0x316c, 0x316c, 0x3190, 0x319c, 0x319c, - // Entry 200 - 23F - 0x31b0, 0x31b0, 0x31b0, 0x31f6, 0x3213, 0x3234, 0x3261, 0x3281, - 0x32a1, 0x32d2, 0x32ea, 0x32f6, 0x32f6, 0x330a, 0x331a, 0x333a, - 0x335e, 0x338f, 0x33ab, 0x33ab, 0x33ab, 0x33c3, 0x33d3, 0x33eb, - 0x3403, 0x341b, 0x342b, 0x3447, 0x3447, 0x346f, 0x3497, 0x3497, - 0x34af, 0x34cf, 0x34f8, 0x34f8, 0x350c, 0x350c, 0x3530, 0x3530, - 0x354c, 0x3560, 0x3574, 0x3598, 0x35f2, 0x361a, 0x363e, 0x3666, - 0x36a4, 0x36ac, 0x36ac, 0x36ac, 0x36ac, 0x36ac, 0x36c4, 0x36c4, - 0x36dc, 0x36f8, 0x3708, 0x3714, 0x3720, 0x3744, 0x3754, 0x3778, - // Entry 240 - 27F - 0x3778, 0x3784, 0x3798, 0x37b4, 0x37d8, 0x37ec, 0x37ec, 0x3818, - 0x3834, 0x3851, 0x3851, 0x3861, 0x38c6, 0x38d6, 0x392c, 0x3934, - 0x3962, 0x3962, 0x39a7, 0x39e1, 0x3a2e, 0x3a63, 0x3aa0, 0x3ad9, - 0x3b3b, 0x3b80, 0x3bcd, 0x3bcd, 0x3bfa, 0x3c27, 0x3c53, 0x3c73, - 0x3cc0, 0x3d11, 0x3d35, 0x3d72, 0x3da3, 0x3dd0, 0x3e05, - }, - }, - { // ce - "афарийнабхазхойнафрикаансаканамхаройнарагонойнӀаьрбийнассамийнсуьйлийнай" + - "мараазербайджанийнбашкирийнбелорусийнболгарийнбисламабамбарабенгали" + - "йнтибетхойнбретонийнбоснийнкаталонийннохчийнчаморрокорсиканийнчехий" + - "нкилсславянийнчувашийнваллийндатхойннемцойнмальдивийндзонг-кээвегре" + - "кийнингалсанэсперантоиспанхойнэстонийнбаскийнгӀажарийнфулахфиннийнф" + - "иджифарерийнфранцузийнмалхбузен-фризийнирландхойнгэлийнгалисийнгуар" + - "анигуджаратимэнийнхаусажугтийнхӀиндихорватийнгаитийнвенгрийнэрмалой" + - "нгерероинтерлингваиндонезихойнигбосычуаньидоисландхойнитальянийнину" + - "ктитутяпонийняванийнгуьржийнкикуйюкунамакхазакхийнгренландхойнкхмер" + - "ийнканнадакорейнканурикашмирикурдийнкомийнкорнуоллийнгӀиргӀизойнлат" + - "инанлюксембургхойнгандалимбургийнлингалалаоссийнлитвахойнлуба-катан" + - "галатышийнмалагасийнмаршаллийнмаоримакедонхойнмалаяламмонголийнмара" + - "тхималайнмальтойнбирманийннаурукъилбаседа ндебелинепалхойнндонгагол" + - "ландхойннорвегийн нюнорскнорвегийн букмолкъилба ндебеленавахоньяндж" + - "аокситанойноромоорихӀирийнпанджабиполякийнпуштупортугалихойнкечуаро" + - "маншийнрундирумынийноьрсийнкиньяруандасанскритсардинийнсиндхикъилба" + - "седа саамийнсангосингалхойнсловакийнсловенийнсамоанойншонасомалиалб" + - "анойнсербийнсвазикъилба сотосунданхойншведийнсуахилитамилхойнтелугу" + - "таджикийнтайнтигриньятуркменийнтсванатонганийнтуркойнтсонгагӀезалой" + - "нтаитянойнуйгурийнукраинийнурдуузбекийнвендавьетнамхойнволапюквалло" + - "нойнволофкосаидишйорубацийнзулуачехийнадангмеадигейнагхӀемайнийнале" + - "утийнкъилба алтайнангикаарауканхойнарапахоасуастурийнавадхибалийнба" + - "сабембабенамалхбузен-белуджийнбходжпурибинисиксикабодобугийнбилийнс" + - "ебуаночигачукчийнмарийнчоктавийнчерокишайенийнюккъерчу курдийнсейше" + - "лийн креолийндакотадаьргӀойнтаитадогрибзармасорбийндуаладьола-фоньи" + - "дазаэмбуэфикэкаджукэвондофилиппинийнфонфриулийнгагагаузийнгеэзгильб" + - "ертийнгоронталошвейцарин немцойнгусиигвичингавайнхилигайнонхмонглак" + - "хара сербийнхупаибанийнибибиоилокогӀалгӀайнложбаннгомбамачамекабили" + - "йнкачинийнкаджикамбагӀебартойнтьяпмакондекабувердьянукорокхасикойра" + - " чииникакокаленджинкимбундукоми-пермякийнконканикпеллекхарачойн-балк" + - "харойнкарелийнкурухшамбалабафиакоьлнийнгӀумкийнладинолангилаьзгийнл" + - "акоталозикъилбаседа лурилуба-лулуалундалуо (Кени а, Танзани а)лушей" + - "лухьямадурийнмагахимайтхилимакасарийнмасаимокшанойнмендемерумаврики" + - "н креолийнмакуа-мееттометамикмакминангкабауманипурийнмохаукмосимунд" + - "ангтайп-тайпа доьзалан меттанашкрикмирандойнэрзянийнмазандеранхойнн" + - "еаполитанойннамалахара германхойнневаройнниасниуэквасионгиембундног" + - "Ӏийннкокъилбаседа сотонуэрньянколепангасинанпампангапапьяментопалау" + - "нигерийн-креолийнпруссийнкичерапануйнраротонгаромбоаруминийнруандас" + - "андавеякутийнсамбурусанталингамбайнсангусицилийншотландхойнсенакойр" + - "аборо сеннитахелхитшанойнсаамийн (къилба)луле-саамийнинари-саамийнс" + - "кольт-саамийнсонинкесранан-тонгосахосукумакоморийншемахойнтемнетесо" + - "тетумтигреклингонинток-писинседекойнтумбукатувалутасавактувинийнтам" + - "азигхтийнудмуртийнумбундубоьвзуш боцу моттваивунджоваллисийнволамов" + - "арайварлпиригӀалмакхойнсогаянгбенйембакантонийнмороккон стандартан " + - "тамазигхтийнзуньиметтан чулацам боцушзазаХӀинца болу стандартан Ӏаь" + - "рбийнавстрин немцойншвейцарин литературин немцойнАвстралин ингалсан" + - "канадан ингалсанбританин ингалсанамерикан ингалсанлатинан американ " + - "испанхойневропан испанхойнмексикан испанхойнканадан французийншвейц" + - "арин французийнлахара саксонийнфламандийнбразилин португалихойневро" + - "пан португалихойнмолдавийнсуахили (Конго)атта цийнламастан цийн", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x0020, 0x0020, 0x0032, 0x003a, 0x004a, 0x005c, - 0x006c, 0x007c, 0x008c, 0x0098, 0x00b4, 0x00c6, 0x00da, 0x00ec, - 0x00fa, 0x0108, 0x011a, 0x012c, 0x013e, 0x014c, 0x0160, 0x016e, - 0x017c, 0x0192, 0x0192, 0x019e, 0x01b8, 0x01c8, 0x01d6, 0x01e4, - 0x01f2, 0x0206, 0x0215, 0x021b, 0x0229, 0x0239, 0x024b, 0x025d, - 0x026d, 0x027b, 0x028d, 0x0297, 0x02a5, 0x02af, 0x02bf, 0x02d3, - 0x02f4, 0x0308, 0x0314, 0x0324, 0x0332, 0x0344, 0x0350, 0x035a, - 0x0368, 0x0374, 0x0374, 0x0386, 0x0394, 0x03a4, 0x03b4, 0x03c0, - // Entry 40 - 7F - 0x03d6, 0x03ee, 0x03ee, 0x03f6, 0x0404, 0x0404, 0x040a, 0x041e, - 0x0432, 0x0444, 0x0452, 0x0460, 0x0470, 0x0470, 0x047c, 0x0488, - 0x049c, 0x04b4, 0x04c4, 0x04d2, 0x04de, 0x04ea, 0x04f8, 0x0506, - 0x0512, 0x0528, 0x053e, 0x054c, 0x0568, 0x0572, 0x0586, 0x0594, - 0x05a4, 0x05b6, 0x05cd, 0x05dd, 0x05f1, 0x0605, 0x060f, 0x0625, - 0x0635, 0x0647, 0x0655, 0x0661, 0x0671, 0x0683, 0x068d, 0x06b0, - 0x06c2, 0x06ce, 0x06e4, 0x0705, 0x0724, 0x073f, 0x074b, 0x0759, - 0x076d, 0x076d, 0x0777, 0x077d, 0x078b, 0x079b, 0x079b, 0x07ab, - // Entry 80 - BF - 0x07b5, 0x07cf, 0x07d9, 0x07eb, 0x07f5, 0x0805, 0x0813, 0x0829, - 0x0839, 0x084b, 0x0857, 0x087a, 0x0884, 0x0898, 0x08aa, 0x08bc, - 0x08ce, 0x08d6, 0x08e2, 0x08f2, 0x0900, 0x090a, 0x091f, 0x0933, - 0x0941, 0x094f, 0x0961, 0x096d, 0x097f, 0x0987, 0x0997, 0x09ab, - 0x09b7, 0x09c9, 0x09d7, 0x09e3, 0x09f5, 0x0a07, 0x0a17, 0x0a29, - 0x0a31, 0x0a41, 0x0a4b, 0x0a61, 0x0a6f, 0x0a81, 0x0a8b, 0x0a93, - 0x0a9b, 0x0aa7, 0x0aa7, 0x0aaf, 0x0ab7, 0x0ac5, 0x0ac5, 0x0ad3, - 0x0ae1, 0x0ae1, 0x0ae1, 0x0aed, 0x0af9, 0x0af9, 0x0af9, 0x0b09, - // Entry C0 - FF - 0x0b09, 0x0b22, 0x0b22, 0x0b2e, 0x0b2e, 0x0b44, 0x0b44, 0x0b52, - 0x0b52, 0x0b52, 0x0b52, 0x0b52, 0x0b52, 0x0b58, 0x0b58, 0x0b68, - 0x0b68, 0x0b74, 0x0b74, 0x0b80, 0x0b80, 0x0b88, 0x0b88, 0x0b88, - 0x0b88, 0x0b88, 0x0b92, 0x0b92, 0x0b9a, 0x0b9a, 0x0b9a, 0x0bbf, - 0x0bd1, 0x0bd1, 0x0bd9, 0x0bd9, 0x0bd9, 0x0be7, 0x0be7, 0x0be7, - 0x0be7, 0x0be7, 0x0bef, 0x0bef, 0x0bef, 0x0bfb, 0x0bfb, 0x0c07, - 0x0c07, 0x0c07, 0x0c07, 0x0c07, 0x0c07, 0x0c07, 0x0c15, 0x0c1d, - 0x0c1d, 0x0c1d, 0x0c2b, 0x0c37, 0x0c37, 0x0c49, 0x0c49, 0x0c55, - // Entry 100 - 13F - 0x0c65, 0x0c84, 0x0c84, 0x0c84, 0x0c84, 0x0ca7, 0x0ca7, 0x0cb3, - 0x0cc5, 0x0ccf, 0x0ccf, 0x0ccf, 0x0cdb, 0x0cdb, 0x0ce5, 0x0ce5, - 0x0cf3, 0x0cf3, 0x0cfd, 0x0cfd, 0x0d12, 0x0d12, 0x0d1a, 0x0d22, - 0x0d2a, 0x0d2a, 0x0d2a, 0x0d38, 0x0d38, 0x0d38, 0x0d38, 0x0d44, - 0x0d44, 0x0d44, 0x0d5a, 0x0d5a, 0x0d60, 0x0d60, 0x0d60, 0x0d60, - 0x0d60, 0x0d60, 0x0d60, 0x0d70, 0x0d74, 0x0d86, 0x0d86, 0x0d86, - 0x0d86, 0x0d86, 0x0d8e, 0x0da4, 0x0da4, 0x0da4, 0x0da4, 0x0da4, - 0x0da4, 0x0db6, 0x0db6, 0x0db6, 0x0db6, 0x0dd7, 0x0dd7, 0x0dd7, - // Entry 140 - 17F - 0x0de1, 0x0ded, 0x0ded, 0x0ded, 0x0df9, 0x0df9, 0x0e0d, 0x0e0d, - 0x0e17, 0x0e34, 0x0e34, 0x0e3c, 0x0e4a, 0x0e56, 0x0e60, 0x0e72, - 0x0e72, 0x0e72, 0x0e7e, 0x0e8a, 0x0e96, 0x0e96, 0x0e96, 0x0e96, - 0x0e96, 0x0ea6, 0x0eb6, 0x0ec0, 0x0eca, 0x0eca, 0x0ede, 0x0ede, - 0x0ee6, 0x0ef4, 0x0f0c, 0x0f0c, 0x0f14, 0x0f14, 0x0f1e, 0x0f1e, - 0x0f33, 0x0f33, 0x0f33, 0x0f3b, 0x0f4d, 0x0f5d, 0x0f78, 0x0f86, - 0x0f86, 0x0f92, 0x0fb9, 0x0fb9, 0x0fb9, 0x0fc9, 0x0fd3, 0x0fe1, - 0x0feb, 0x0ffb, 0x100b, 0x100b, 0x1017, 0x1021, 0x1021, 0x1021, - // Entry 180 - 1BF - 0x1031, 0x1031, 0x1031, 0x1031, 0x103d, 0x103d, 0x103d, 0x103d, - 0x1045, 0x1062, 0x1062, 0x1075, 0x1075, 0x107f, 0x10a6, 0x10b0, - 0x10ba, 0x10ba, 0x10ba, 0x10ca, 0x10ca, 0x10d6, 0x10e6, 0x10fa, - 0x10fa, 0x1104, 0x1104, 0x1116, 0x1116, 0x1120, 0x1128, 0x1149, - 0x1149, 0x1160, 0x1168, 0x1174, 0x118a, 0x118a, 0x119e, 0x11aa, - 0x11b2, 0x11b2, 0x11c0, 0x11f5, 0x11fd, 0x120f, 0x120f, 0x120f, - 0x120f, 0x121f, 0x123b, 0x123b, 0x1255, 0x125d, 0x127e, 0x128e, - 0x1296, 0x129e, 0x129e, 0x12aa, 0x12bc, 0x12ca, 0x12ca, 0x12ca, - // Entry 1C0 - 1FF - 0x12d0, 0x12ed, 0x12f5, 0x12f5, 0x12f5, 0x1305, 0x1305, 0x1305, - 0x1305, 0x1305, 0x1319, 0x1319, 0x1329, 0x133d, 0x1347, 0x1347, - 0x1368, 0x1368, 0x1368, 0x1368, 0x1368, 0x1368, 0x1368, 0x1368, - 0x1368, 0x1378, 0x1378, 0x1380, 0x1380, 0x1380, 0x1390, 0x13a2, - 0x13a2, 0x13a2, 0x13ac, 0x13ac, 0x13ac, 0x13ac, 0x13ac, 0x13be, - 0x13ca, 0x13d8, 0x13e6, 0x13e6, 0x13f4, 0x13f4, 0x1402, 0x1402, - 0x1412, 0x141c, 0x142c, 0x1442, 0x1442, 0x1442, 0x1442, 0x144a, - 0x144a, 0x144a, 0x1467, 0x1467, 0x1467, 0x1477, 0x1483, 0x1483, - // Entry 200 - 23F - 0x1483, 0x1483, 0x1483, 0x14a0, 0x14b7, 0x14d0, 0x14eb, 0x14f9, - 0x14f9, 0x1510, 0x1510, 0x1518, 0x1518, 0x1524, 0x1524, 0x1524, - 0x1534, 0x1534, 0x1544, 0x1544, 0x1544, 0x154e, 0x1556, 0x1556, - 0x1560, 0x156a, 0x156a, 0x156a, 0x156a, 0x157c, 0x157c, 0x157c, - 0x157c, 0x157c, 0x158d, 0x158d, 0x159d, 0x159d, 0x159d, 0x159d, - 0x15ab, 0x15b7, 0x15c5, 0x15d5, 0x15ed, 0x15ff, 0x15ff, 0x160d, - 0x162d, 0x1633, 0x1633, 0x1633, 0x1633, 0x1633, 0x1633, 0x1633, - 0x163f, 0x1651, 0x165d, 0x1667, 0x1667, 0x1677, 0x1677, 0x168d, - // Entry 240 - 27F - 0x168d, 0x1695, 0x1695, 0x1695, 0x16a1, 0x16ab, 0x16ab, 0x16bd, - 0x16bd, 0x16bd, 0x16bd, 0x16bd, 0x16fb, 0x1705, 0x172b, 0x1733, - 0x176e, 0x176e, 0x178b, 0x17c3, 0x17e6, 0x1805, 0x1826, 0x1847, - 0x1879, 0x189a, 0x18bd, 0x18bd, 0x18e0, 0x1907, 0x1926, 0x193a, - 0x1965, 0x198e, 0x19a0, 0x19a0, 0x19bb, 0x19cc, 0x19e5, - }, - }, - { // cgg - "OrukaniOrumarikiOruharabuOruberarusiOruburugariyaOrubengariOruceekiOrugi" + - "rimaaniOruguriikiOrungyerezaOrusupaaniOrupaasiyaOrufaransaOruhausaOr" + - "uhindiOruhangareOruindoneziaOruiboOruyitareOrujapaaniOrujavaOrukambo" + - "diyaOrukoreyaOrumalesiyaOruburumaOrunepaliOrudaakiOrupungyabiOrupoor" + - "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" + - "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" + - "inaOruzuruRukiga", - []uint16{ // 248 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031, - 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0064, 0x0064, 0x006e, - 0x006e, 0x006e, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008a, - 0x008a, 0x0092, 0x0092, 0x0092, 0x0092, 0x009c, 0x009c, 0x009c, - // Entry 40 - 7F - 0x009c, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00b7, 0x00b7, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00e8, 0x00f1, 0x00f1, 0x00f1, - 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x010d, 0x010d, 0x0115, - // Entry 80 - BF - 0x0115, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013d, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, - 0x013d, 0x013d, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0163, 0x0163, 0x0163, - 0x0163, 0x0163, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0176, - 0x017f, 0x017f, 0x017f, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, - 0x018d, 0x0196, 0x0196, 0x019f, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry C0 - FF - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01ac, - }, - }, - { // chr - "ᎠᏩᎳᎠᏆᏏᎠᏂᎠᎬᎿᎨᏍᏛᎠᎧᎾᎠᎹᎭᎵᎩᎠᏩᎪᏂᏏᎡᎳᏈᎠᏌᎻᏏᎠᏩᎵᎧᎠᏱᎹᎳᎠᏎᏆᏣᏂᏆᏍᎯᎩᎠᏇᎳᎷᏏᏊᎵᎨᎵᎠᏂᏈᏍᎳᎹᏆᎻᏆᎳᏇᏂ" + - "ᎦᎳᏘᏇᏔᏂᏇᏙᏂᏆᏍᏂᎠᏂᎨᏔᎳᏂᏤᏤᏂᏣᎼᎶᎪᎵᏍᎢᎧᏂᏤᎩᏧᏂᎳᏫᏍᏗ ᏍᎳᏫᎪᏧᏩᏏᏪᎵᏏᏕᏂᏍᏙᎢᏥᏗᏪᎯᏓᏐᏅᎧᎡᏪᎠᏂ" + - "ᎪᎢᎩᎵᏏᎡᏍᏇᎳᏂᏙᏍᏆᏂᎡᏍᏙᏂᎠᏂᏆᏍᎨᏇᏏᎠᏂᏊᎳᏂᏈᏂᏍᏫᏥᎠᏂᏇᎶᎡᏍᎦᎸᏥᏭᏕᎵᎬ ᏗᏜ ᏟᏏᎠᏂᎨᎵᎩᏍᎦᏗ ᎨᎵᎩ" + - "ᎦᎵᏏᎠᏂᏆᎳᏂᎫᏣᎳᏘᎹᎾᎧᏏᎭᎤᏌᎠᏂᏈᎷᎯᏂᏗᎧᎶᎡᏏᏂᎮᏏᎠᏂ ᏟᏲᎵᎲᏂᎦᎵᎠᏂᎠᎳᎻᎠᏂᎮᎴᎶᎠᏰᏟ ᎦᏬᏂᎯᏍᏗᎢᏂᏙ" + - "ᏂᏏᎠᎢᎦᎪᏏᏧᏩᏂ ᏱᎢᏙᏧᏁᏍᏓᎸᎯᎢᎩᎬᏩᎵᏲᏥᎢᎢᏄᎦᏘᏚᏣᏩᏂᏏᏆᏌ ᏣᏩᏦᏥᎠᏂᎩᎫᏳᎫᏩᏂᎠᎹᎧᏌᎧᎧᎳᎵᏑᏘᎩᎻᎷᎧ" + - "ᎾᏓᎪᎵᎠᏂᎧᏄᎵᎧᏏᎻᎵᎫᏗᏏᎪᎻᏎᎷᎭᎩᎵᏣᎢᏍᎳᏘᏂᎸᎦᏏᎻᏋᎢᏍᎦᏂᏓᎴᎹᏊᎵᏏᎵᏂᎦᎳᎳᎣᎵᏚᏩᏂᎠᏂᎷᏆ-ᎧᏔᎦᎳᏘᏫᎠ" + - "ᏂᎹᎳᎦᏏᎹᏌᎵᏏᎹᏫᎹᏎᏙᏂᎠᏂᎹᎳᏯᎳᎻᎹᏂᎪᎵᎠᏂᎹᎳᏘᎹᎴᎹᎵᏘᏍᏋᎻᏍᏃᎤᎷᏧᏴᏢ ᏂᏕᏇᎴᏁᏆᎵᎾᏙᎦᏛᏥᏃᎵᏪᏥᏂ Ꮎ" + - "ᎵᏍᎩᏃᎵᏪᏥᏂ ᏉᎧᎹᎵᏧᎦᎾᏮ ᏂᏕᏇᎴᎾᏩᎰᏂᏯᏂᏣᎠᏏᏔᏂᎣᎶᎼᎣᏗᎠᎣᏎᏘᎧᏡᏂᏣᏈᏉᎵᏍᏆᏍᏙᏉᏧᎩᏍᎨᏧᏩᎠᏂᎶᎺᏂᎷ" + - "ᏂᏗᎶᎹᏂᎠᏂᏲᏅᎯᎩᏂᏯᏩᏂᏓᏍᏂᏍᎩᏗᏌᏗᏂᎠᏂᏏᏂᏗᏧᏴᏢ ᏗᏜ ᏌᎻᏌᏂᎪᏏᎾᎭᎳᏍᎶᏩᎩᏍᎶᏫᏂᎠᏂᏌᎼᏯᏂᏠᎾᏐᎹᎵᎠᎵ" + - "ᏇᏂᏒᏈᎠᏂᏍᏩᏘᏧᎦᎾᏮ ᏗᏜ ᏐᏠᏑᏂᏓᏂᏏᏍᏫᏗᏏᏍᏩᎯᎵᏔᎻᎵᏖᎷᎦᏔᏥᎩᏔᏱᏘᎩᎵᏂᎠᎠᏂᎬᎾᏧᏩᎾᏙᎾᎦᏂᎠᎬᎾᏦᎾᎦᏔ" + - "ᏔᏔᎯᏘᎠᏂᏫᎦᏳᎧᎴᏂᎠᏂᎤᎵᏚᎤᏍᏇᎩᏫᏂᏓᏫᎡᏘᎾᎻᏍᏬᎳᏊᎩᏩᎷᎾᏬᎶᏫᏠᏌᏱᏗᏍᏲᏄᏆᏓᎶᏂᎨᏑᎷᎠᏥᏂᏏᎠᏓᎾᎦᎺᎠᏗᎨ" + - "ᎠᎨᎹᎠᏱᏄᎠᎵᎤᏘᏧᎦᎾᏮ ᏗᏜ ᎠᎵᏔᎢᎠᎾᎩᎧᎹᏊᏤᎠᏩᏈᎰᎠᏑᎠᏍᏚᎵᎠᏂᎠᏩᏗᏆᎵᏁᏏᏆᏌᎠᏇᎹᏆᏇᎾᏉᏣᏊᎵᏈᏂᏏᎩᏏᎧ" + - "ᏉᏙᏈᎥᎩᏂᏍᏟᏂᎧᏳᎦᏎᏆᏃᏥᎦᏧᎨᏎᎹᎵᎠᏣᏓᏣᎳᎩᏣᏰᏂᎠᏰᏟ ᎫᏗᏏᏎᏎᎵᏩ ᏟᏲᎵ ᎠᏂᎦᎸᏓᎪᏔᏓᎳᏆᏔᎢᏔᎩᏟ ᎤᏄᎳ" + - "ᏥᏌᎹᎡᎳᏗ ᏐᏈᎠᏂᏚᎠᎳᏦᎳ-ᏬᏱᏓᏌᎦᎡᎻᏊᎡᏫᎩᎨᎧᏧᎧᎡᏬᏂᏙᎠᏈᎵᎩᏠᏂᏞᎤᎵᎠᏂᎦᎩᏏᎩᏇᏘᏏᎪᎶᏂᏔᏃᏍᏫᏏ ᎠᏂᏓ" + - "ᏥᎫᏏᏈᏥᏂᎭᏩᎼᎯᎵᎨᎾᏂᎭᎼᏂᎩᎦᎸᎳᏗᎨ ᏐᏈᎠᏂᎠᏂᎱᏆᎢᏆᏂᎢᏈᏈᎣᎢᎶᎪᎢᏂᎫᏏᎶᏣᏆᏂᎾᎪᏆᎹᏣᎺᎧᏈᎴᎧᏥᏂᏥᏧᎧᎻ" + - "ᏆᎧᏆᏗᎠᏂᏔᏯᏆᎹᎪᏕᎧᏊᏪᏗᎠᏄᎪᎶᎧᏏᎪᏱᎳ ᏥᏂᎧᎪᎧᎴᏂᏥᏂᎩᎻᏊᏚᎧᏂᎧᏂᏇᎴᎧᎳᏣᏱ-ᏆᎵᎧᎵᎧᎴᎵᎠᏂᎫᎷᎩᏝᎻᏆᎸ" + - "ᏆᏫᎠᎪᎶᏂᎠᏂᎫᎻᎧᎳᏗᏃᎳᏂᎩᎴᏏᎦᏂᎳᎪᏓᎶᏏᏧᏴᏢ ᏗᏜ ᎷᎵᎷᏆ-ᎷᎷᎠᎷᎾᏓᎷᎣᎻᏐᎷᏱᎠᎹᏚᎴᏏᎹᎦᎯᎹᏟᎵᎹᎧᏌᎹᏌ" + - "ᏱᎼᎧᏌᎺᎾᏕᎺᎷᎼᎵᏏᎡᏂᎹᎫᏩ-ᎻᏙᎺᎳ’ᎻᎧᎹᎩᎻᎾᎧᏆᎤᎺᏂᏉᎵᎼᎭᎩᎼᏍᏏᎽᏂᏓᎩᏧᏈᏍᏗ ᏗᎦᏬᏂᎯᏍᏗᎠᎫᏌᎻᎳᏕᏏᎡ" + - "ᏏᏯᎹᏌᏕᎳᏂᏂᏯᏆᎵᏔᏂᎾᎹᏁᏩᎵᏂᎠᏏᏂᏳᏫᏯᏂᏆᏏᏲᎾᏥᏰᎹᏊᏂᏃᎦᏱᎾᎪᏧᏴᏢ ᏗᏜ ᏐᏠᏄᏪᎵᏂᏯᎾᎪᎴᏇᎦᏏᎠᏂᏆᎹᏆᎾ" + - "ᎦᏆᏈᏯᎺᎾᏙᏆᎳᎤᏩᏂᎾᎩᎵᎠᏂ ᏈᏥᏂᏡᏏᎠᏂᎩᏤᎳᏆᏄᏫᎳᎶᏙᎾᎦᏂᎶᎹᏉᎠᏬᎹᏂᎠᏂᏆᏌᏅᏓᏫᏌᎧᎾᏌᎹᏊᎷᏌᏂᏔᎵᎾᎦᎹᏇ" + - "ᏌᏁᎫᏏᏏᎵᎠᏂᏍᎦᏗᏏᏂᎦᏎᎾᎪᏱᎳᏈᎶ ᏎᏂᏔᏤᎵᎯᏘᏝᏂᏧᎦᎾᏮ ᏗᏜ ᏌᎻᎷᎴ ᏌᎻᎢᎾᎵ ᏌᎻᏍᎪᎵᏘ ᏌᎻᏐᏂᏂᎨᏏᎳᎾ" + - "Ꮒ ᏙᏃᎪᏌᎰᏑᎫᎹᎪᎼᎵᎠᏂᏏᎵᎠᎩᏘᎹᏁᏖᏐᏖᏚᎼᏢᏓᏥᏟᎦᎾᏙᎩ ᏈᏏᏂᏔᎶᎪᏛᎹᏊᎧᏚᏩᎷᏔᏌᏩᎩᏚᏫᏂᎠᏂᎠᏰᏟ ᎡᎶᎯ " + - "ᏓᏟᎶᏍᏗᏓᏅᎢ ᏔᎹᏏᏘᎤᏚᎷᏘᎤᎹᏊᏅᏚᏄᏬᎵᏍᏛᎾ ᎦᏬᏂᎯᏍᏗᏩᏱᏭᎾᏦᏩᎵᏎᎵᏬᎳᏱᏔᏩᎴᎧᎳᎻᎧᏐᎦᏰᎾᎦᏇᏂᏰᎹᏋᎨᎾ" + - "ᏙᏂᏏᎠᏟᎶᏍᏗ ᎼᎶᎪ ᏔᎹᏏᏘᏑᏂᏝ ᎦᏬᏂᎯᏍᏗ ᎦᎸᏛᎢ ᏱᎩᏌᏌᎪᎯᏊ ᎢᎬᏥᎩ ᎠᏟᎶᏍᏗ ᎡᎳᏈᎠᏟᏯᏂ ᎠᏂᏓᏥᏍᏫ" + - "Ꮟ ᎦᎸᎳᏗ ᎠᏂᏓᏥᎡᎳᏗᏜ ᎩᎵᏏᎨᎾᏓ ᎩᎵᏏᎩᎵᏏᏲ ᎩᎵᏏᎠᎹᏰᏟ ᎩᎵᏏᏔᏘᏂ ᎠᎹᏰᏟ ᏍᏆᏂᎠᏂᏍᏆᏂᏱ ᏍᏆᏂᏍᏆ" + - "ᏂᏱ ᏍᏆᏂᎨᎾᏓ ᎦᎸᏥᏍᏫᏏ ᎦᎸᏥᎡᎳᏗ ᏁᏛᎳᏂᏊᎵᏥᎥᎻ ᏛᏥᏆᏏᎵᎢ ᏉᏧᎩᏍᏉᏥᎦᎳ ᏉᏧᎩᏍᎹᎵᏙᏫᎠ ᏣᎹᏂᎠᏂᎧ" + - "ᏂᎪ ᏍᏩᎯᎵᎠᎯᏗᎨ ᏓᎶᏂᎨᎤᏦᏍᏗ ᏓᎶᏂᎨ", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0018, 0x0018, 0x002a, 0x0033, 0x0042, 0x0051, - 0x005a, 0x0066, 0x0072, 0x007e, 0x008d, 0x009c, 0x00a8, 0x00ba, - 0x00c6, 0x00d2, 0x00de, 0x00ea, 0x00f3, 0x0102, 0x010e, 0x0117, - 0x0120, 0x0132, 0x0132, 0x0138, 0x0157, 0x0160, 0x0169, 0x0172, - 0x017b, 0x0184, 0x0190, 0x0196, 0x01a2, 0x01ab, 0x01bd, 0x01c6, - 0x01d8, 0x01e1, 0x01ed, 0x01f6, 0x01ff, 0x020b, 0x0217, 0x0220, - 0x0240, 0x0249, 0x025c, 0x026b, 0x0274, 0x0280, 0x028c, 0x0295, - 0x02a1, 0x02aa, 0x02aa, 0x02b9, 0x02cf, 0x02e1, 0x02f0, 0x02f9, - // Entry 40 - 7F - 0x0315, 0x0327, 0x0327, 0x0330, 0x0340, 0x0340, 0x0346, 0x035e, - 0x0370, 0x037f, 0x038b, 0x0398, 0x03a4, 0x03a4, 0x03ad, 0x03bc, - 0x03c5, 0x03d4, 0x03dd, 0x03e6, 0x03f2, 0x03fb, 0x0407, 0x0410, - 0x0416, 0x041f, 0x042e, 0x0437, 0x044c, 0x0455, 0x0464, 0x0470, - 0x0476, 0x0488, 0x0498, 0x04a7, 0x04b3, 0x04bf, 0x04c5, 0x04d7, - 0x04e6, 0x04f8, 0x0501, 0x0507, 0x0513, 0x051c, 0x0525, 0x053b, - 0x0544, 0x054d, 0x0553, 0x056f, 0x058b, 0x05a4, 0x05ad, 0x05b9, - 0x05c5, 0x05c5, 0x05ce, 0x05d7, 0x05e3, 0x05ef, 0x05ef, 0x05f8, - // Entry 80 - BF - 0x0601, 0x060d, 0x0616, 0x0625, 0x062e, 0x063d, 0x0646, 0x0658, - 0x0667, 0x0676, 0x067f, 0x0696, 0x069f, 0x06ab, 0x06b7, 0x06c9, - 0x06d5, 0x06db, 0x06e4, 0x06f0, 0x06fc, 0x0705, 0x071f, 0x072e, - 0x073a, 0x0746, 0x074f, 0x0758, 0x0761, 0x0767, 0x0776, 0x0782, - 0x078b, 0x0797, 0x07a0, 0x07a9, 0x07af, 0x07be, 0x07c4, 0x07d6, - 0x07df, 0x07eb, 0x07f4, 0x0806, 0x0812, 0x081b, 0x0824, 0x082a, - 0x0833, 0x083c, 0x083c, 0x0848, 0x084e, 0x085a, 0x085a, 0x0869, - 0x0872, 0x0872, 0x0872, 0x087b, 0x0884, 0x0884, 0x0884, 0x0890, - // Entry C0 - FF - 0x0890, 0x08b0, 0x08b0, 0x08bc, 0x08bc, 0x08c5, 0x08c5, 0x08d1, - 0x08d1, 0x08d1, 0x08d1, 0x08d1, 0x08d1, 0x08d7, 0x08d7, 0x08e9, - 0x08e9, 0x08f2, 0x08f2, 0x08fe, 0x08fe, 0x0907, 0x0907, 0x0907, - 0x0907, 0x0907, 0x0910, 0x0910, 0x0916, 0x0916, 0x0916, 0x0916, - 0x0922, 0x0922, 0x0928, 0x0928, 0x0928, 0x0934, 0x0934, 0x0934, - 0x0934, 0x0934, 0x093a, 0x093a, 0x093a, 0x0949, 0x0949, 0x094f, - 0x094f, 0x094f, 0x094f, 0x0958, 0x0958, 0x0958, 0x0961, 0x0967, - 0x0967, 0x0967, 0x0970, 0x0976, 0x0976, 0x097f, 0x097f, 0x0988, - // Entry 100 - 13F - 0x0991, 0x09a4, 0x09a4, 0x09a4, 0x09a4, 0x09c7, 0x09c7, 0x09d0, - 0x09d9, 0x09e2, 0x09e2, 0x09e2, 0x09f5, 0x09f5, 0x09fb, 0x09fb, - 0x0a11, 0x0a11, 0x0a1a, 0x0a1a, 0x0a27, 0x0a27, 0x0a30, 0x0a39, - 0x0a42, 0x0a42, 0x0a42, 0x0a4e, 0x0a4e, 0x0a4e, 0x0a4e, 0x0a5a, - 0x0a5a, 0x0a5a, 0x0a66, 0x0a66, 0x0a6c, 0x0a6c, 0x0a6c, 0x0a6c, - 0x0a6c, 0x0a6c, 0x0a6c, 0x0a7b, 0x0a7e, 0x0a7e, 0x0a7e, 0x0a7e, - 0x0a7e, 0x0a7e, 0x0a84, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a90, - 0x0a90, 0x0a9f, 0x0a9f, 0x0a9f, 0x0a9f, 0x0ab5, 0x0ab5, 0x0ab5, - // Entry 140 - 17F - 0x0abb, 0x0ac4, 0x0ac4, 0x0ac4, 0x0acd, 0x0acd, 0x0adc, 0x0adc, - 0x0ae8, 0x0b04, 0x0b04, 0x0b10, 0x0b19, 0x0b25, 0x0b2e, 0x0b3a, - 0x0b3a, 0x0b3a, 0x0b46, 0x0b4f, 0x0b58, 0x0b58, 0x0b58, 0x0b58, - 0x0b58, 0x0b61, 0x0b6a, 0x0b70, 0x0b79, 0x0b79, 0x0b88, 0x0b88, - 0x0b91, 0x0b9a, 0x0bac, 0x0bac, 0x0bb2, 0x0bb2, 0x0bb8, 0x0bb8, - 0x0bc8, 0x0bc8, 0x0bc8, 0x0bce, 0x0bdd, 0x0be9, 0x0be9, 0x0bf5, - 0x0bf5, 0x0bfb, 0x0c14, 0x0c14, 0x0c14, 0x0c23, 0x0c2c, 0x0c38, - 0x0c41, 0x0c50, 0x0c59, 0x0c59, 0x0c62, 0x0c6b, 0x0c6b, 0x0c6b, - // Entry 180 - 1BF - 0x0c77, 0x0c77, 0x0c77, 0x0c77, 0x0c80, 0x0c80, 0x0c80, 0x0c80, - 0x0c86, 0x0c9d, 0x0c9d, 0x0cad, 0x0cad, 0x0cb6, 0x0cbc, 0x0cc2, - 0x0ccb, 0x0ccb, 0x0ccb, 0x0cd7, 0x0cd7, 0x0ce0, 0x0ce9, 0x0cf2, - 0x0cf2, 0x0cfb, 0x0cfb, 0x0d04, 0x0d04, 0x0d0d, 0x0d13, 0x0d22, - 0x0d22, 0x0d32, 0x0d3b, 0x0d47, 0x0d56, 0x0d56, 0x0d62, 0x0d6b, - 0x0d74, 0x0d74, 0x0d80, 0x0da2, 0x0dab, 0x0db7, 0x0db7, 0x0db7, - 0x0db7, 0x0dc0, 0x0dcf, 0x0dcf, 0x0de1, 0x0de7, 0x0de7, 0x0df0, - 0x0df9, 0x0e08, 0x0e08, 0x0e11, 0x0e23, 0x0e2c, 0x0e2c, 0x0e2c, - // Entry 1C0 - 1FF - 0x0e32, 0x0e49, 0x0e52, 0x0e52, 0x0e52, 0x0e61, 0x0e61, 0x0e61, - 0x0e61, 0x0e61, 0x0e70, 0x0e70, 0x0e7f, 0x0e91, 0x0ea0, 0x0ea0, - 0x0eb9, 0x0eb9, 0x0eb9, 0x0eb9, 0x0eb9, 0x0eb9, 0x0eb9, 0x0eb9, - 0x0eb9, 0x0ec5, 0x0ec5, 0x0ecb, 0x0ecb, 0x0ecb, 0x0ed7, 0x0ee9, - 0x0ee9, 0x0ee9, 0x0ef2, 0x0ef2, 0x0ef2, 0x0ef2, 0x0ef2, 0x0f04, - 0x0f07, 0x0f13, 0x0f1c, 0x0f1c, 0x0f28, 0x0f28, 0x0f34, 0x0f34, - 0x0f40, 0x0f49, 0x0f58, 0x0f61, 0x0f61, 0x0f61, 0x0f6a, 0x0f70, - 0x0f70, 0x0f70, 0x0f86, 0x0f86, 0x0f86, 0x0f95, 0x0f9b, 0x0f9b, - // Entry 200 - 23F - 0x0f9b, 0x0f9b, 0x0f9b, 0x0fb5, 0x0fc2, 0x0fd2, 0x0fe5, 0x0ff1, - 0x0ff1, 0x1007, 0x1007, 0x100d, 0x100d, 0x1016, 0x1016, 0x1016, - 0x1025, 0x1025, 0x1031, 0x1031, 0x1031, 0x103a, 0x1040, 0x1040, - 0x1049, 0x1052, 0x1052, 0x1052, 0x1052, 0x105b, 0x105b, 0x105b, - 0x105b, 0x105b, 0x106b, 0x106b, 0x1074, 0x1074, 0x1074, 0x1074, - 0x1080, 0x1089, 0x1095, 0x10a4, 0x10dd, 0x10e9, 0x10e9, 0x10f8, - 0x111d, 0x1123, 0x1123, 0x1123, 0x1123, 0x1123, 0x1123, 0x1123, - 0x112c, 0x1138, 0x1144, 0x114a, 0x114a, 0x114a, 0x114a, 0x1156, - // Entry 240 - 27F - 0x1156, 0x115c, 0x115c, 0x115c, 0x116b, 0x1174, 0x1174, 0x1183, - 0x1183, 0x1183, 0x1183, 0x1183, 0x11a9, 0x11af, 0x11d9, 0x11df, - 0x120f, 0x120f, 0x1228, 0x124b, 0x1261, 0x1274, 0x128a, 0x12a0, - 0x12c0, 0x12dc, 0x12f2, 0x12f2, 0x1305, 0x1318, 0x132e, 0x1344, - 0x135d, 0x1376, 0x1395, 0x1395, 0x13ab, 0x13c4, 0x13dd, - }, - }, - { // ckb - "ئەمهەرینجیعەرەبیئاسامیئازەربایجانیبیلاڕووسیبۆلگاریبەنگلادێشیبرێتونیبۆسنی" + - "كاتالۆنیچەكیوێلزیدانماركیئاڵمانییۆنانیئینگلیزیئێسپیرانتۆئیسپانیئیست" + - "ۆنیباسکیفارسیفینلەندیفەرانسیفریسیی ڕۆژاوائیرلەندیگالیسیگووارانیگوجا" + - "راتیهیبرێهیندیكرواتیهەنگاری (مەجاری)ئەرمەنیئێەندونیزیئیسلەندیئیتالی" + - "ژاپۆنیجاڤانیگۆرجستانیکازاخیکوردیكرگیزیلاتینیلينگالالاویلیتوانیلێتۆن" + - "یماكێدۆنیمەنگۆلیماراتینیپالیهۆڵەندینۆروێژیئۆرییاپەنجابیپۆڵۆنیایی (ل" + - "ەهستانی)پەشتووپورتوگالیڕۆمانیڕووسیسانسکريتسيندیسینهەلیسلۆڤاكیسلۆڤێن" + - "یسۆمالیئەڵبانیسەربیسێسۆتۆسودانیسویدیتامیلیتەلۆگویتاجیکیتایلەندیتیگر" + - "ینیایتورکمانیتورکیئويخووریئۆكراینیئۆردووئوزبەکیڤیەتنامیچینیزولوکورد" + - "یی ناوەندیمازەندەرانیکوردیی باشووریسامی باشووریزمانی نەناسراوئازەرب" + - "ایجانی باشووریئینگلیزیی ئۆسترالیاییئینگلیزیی کەنەداییئینگلیزیی بریت" + - "انیاییئینگلیزیی ئەمەریکایی", - []uint16{ // 600 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, - 0x0020, 0x002c, 0x002c, 0x002c, 0x0044, 0x0044, 0x0056, 0x0064, - 0x0064, 0x0064, 0x0078, 0x0078, 0x0086, 0x0090, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a8, 0x00a8, 0x00a8, 0x00b2, 0x00c2, - 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00dc, 0x00ec, 0x0100, 0x010e, - 0x011c, 0x0126, 0x0130, 0x0130, 0x0140, 0x0140, 0x0140, 0x014e, - 0x0167, 0x0177, 0x0177, 0x0183, 0x0193, 0x01a3, 0x01a3, 0x01a3, - 0x01ad, 0x01b7, 0x01b7, 0x01c3, 0x01c3, 0x01e0, 0x01ee, 0x01ee, - // Entry 40 - 7F - 0x01ee, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0202, 0x0212, - 0x021e, 0x021e, 0x022a, 0x0236, 0x0248, 0x0248, 0x0248, 0x0248, - 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x025e, - 0x025e, 0x025e, 0x026a, 0x0276, 0x0276, 0x0276, 0x0276, 0x0284, - 0x028c, 0x029a, 0x029a, 0x02a6, 0x02a6, 0x02a6, 0x02a6, 0x02b6, - 0x02b6, 0x02c4, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0, 0x02d0, - 0x02dc, 0x02dc, 0x02ea, 0x02ea, 0x02f8, 0x02f8, 0x02f8, 0x02f8, - 0x02f8, 0x02f8, 0x02f8, 0x0304, 0x0304, 0x0312, 0x0312, 0x0337, - // Entry 80 - BF - 0x0343, 0x0355, 0x0355, 0x0355, 0x0355, 0x0361, 0x036b, 0x036b, - 0x037b, 0x037b, 0x0385, 0x0385, 0x0385, 0x0393, 0x03a1, 0x03af, - 0x03af, 0x03af, 0x03bb, 0x03c9, 0x03d3, 0x03d3, 0x03df, 0x03eb, - 0x03f5, 0x03f5, 0x0401, 0x040f, 0x041b, 0x042b, 0x043d, 0x044d, - 0x044d, 0x044d, 0x0457, 0x0457, 0x0457, 0x0457, 0x0467, 0x0477, - 0x0483, 0x0491, 0x0491, 0x04a1, 0x04a1, 0x04a1, 0x04a1, 0x04a1, - 0x04a1, 0x04a1, 0x04a1, 0x04a9, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - // Entry C0 - FF - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - // Entry 100 - 13F - 0x04b1, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - // Entry 140 - 17F - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - // Entry 180 - 1BF - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, 0x04cc, - 0x04cc, 0x04cc, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - // Entry 1C0 - 1FF - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04fd, 0x04fd, 0x04fd, - 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, 0x04fd, - // Entry 200 - 23F - 0x04fd, 0x04fd, 0x04fd, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, - 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, - 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, - 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, - 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, - 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, - 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, - 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, - // Entry 240 - 27F - 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, - 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, 0x052f, - 0x052f, 0x0556, 0x0556, 0x0556, 0x057f, 0x05a2, 0x05c9, 0x05f0, - }, - }, - { // cs - csLangStr, - csLangIdx, - }, - { // cy - "AffaregAbchasegAfestanegAffricânegAcanegAmharegAragonegArabegAsamegAfare" + - "gAymaregAserbaijanegBashcortegBelarwsegBwlgaregBislamaBambaregBengal" + - "egTibetegLlydawegBosniegCatalanegTsietsienegTsiamorroCorsegCriTsiece" + - "gHen SlafonegTshwfashegCymraegDanegAlmaenegDifehiDzongkhaEweGroegSae" + - "snegEsperantoSbaenegEstonegBasgegPersegFfwlaFfinnegFfijïegFfaröegFfr" + - "angegFfriseg y GorllewinGwyddelegGaeleg yr AlbanGalisiegGuaraníGwjar" + - "atiManawegHawsaHebraegHindiCroategCreol HaitiHwngaregArmenegHereroIn" + - "terlinguaIndonesegInterlingueIgboNwoswInwpiacegIdoIslandegEidalegInw" + - "ctitwtJapaneegJafanaegGeorgegCongoKikuyuKuanyamaCasachegKalaallisutC" + - "hmeregKannadaCoreegCanwriCashmiregCwrdegComiCernywegCirgisegLladinLw" + - "csembwrgegGandaLimbwrgegLingalaLaoegLithwanegLuba-KatangaLatfiegMala" + - "gasegMarsialegMaoriMacedonegMalayalamMongolegMarathiMaleiegMaltegByr" + - "manegNawrŵegNdebele GogleddolNepalegNdongaIseldiregNorwyeg NynorskNo" + - "rwyeg BokmålNdebele DeheuolNafahoNianjaOcsitanegOjibwaOromoOdiaOsete" + - "gPwnjabegPaliPwylegPashtoPortiwgeegQuechuaRománshRwndiRwmanegRwsegCi" + - "niarŵandegSansgritSardegSindhiSami GogleddolSangoSinhalegSlofacegSlo" + - "fenegSamöegShonaSomalegAlbanegSerbegSwatiSesotheg DeheuolSwndanegSwe" + - "degSwahiliTamilegTeluguTajicegThaiTigrinyaTwrcmenegTswanaTongegTyrce" + - "gTsongaegTataregTahitïegUighurWcreinegWrdwWsbecegFendegFietnamegFola" + - "pükWalwnegWoloffXhosaIddew-AlmaenegIorwbaTsieineegSwlwAcehnegAcoliAd" + - "angmegCircaseg GorllewinolArabeg TunisiaAffrihiliAghemegAinŵegAcadeg" + - "AlabamäegAlewtegGhegeg AlbaniaAltäeg DeheuolHen SaesnegAngikaAramaeg" + - "ArawcanegAraonaegArapahoArabeg AlgeriaArawacegArabeg MorocoArabeg yr" + - " AifftAswIaith Arwyddion AmericaAstwrianegAwadhiBalwtsiBalïegBasâegB" + - "amwmegBejäegBembegBenaBaffwtegBadagaBalochi GorllewinolBhojpuriBiniC" + - "omegSiksikaBrahuiBodoAcwsegBwriategBwginaegBwlwBlinCadoCaribegAtsame" + - "gCebuanoTsigaChuukaegMariegSioctoTsierocîCheyenneCwrdeg SoraniCopteg" + - "Tyrceg y CrimeaFfrangeg Seselwa CreoleDacotaegDargwaTaitaDogribDinca" + - "SarmaegDogriSorbeg IsafDiwalegIseldireg CanolJola-FonyiDazagaEmbwEfi" + - "kHen EifftegEkajukElamegSaesneg CanolEwondoExtremaduregFfilipinegFfi" + - "nneg TornedalFonFfrangeg CajwnFfrangeg CanolHen FfrangegArpitanegFfr" + - "iseg GogleddolFfriseg y DwyrainFfriwlegGaGagauzGaioGbaiaDareg y Zoro" + - "astriaidGeezGilbertegAlmaeneg Uchel CanolHen Almaeneg UchelGorontalo" + - "GothegHen RoegAlmaeneg y SwistirGusiiGwichʼinHaidaHawäiegHiligaynonH" + - "ethegHmongegSorbeg UchafHupaIbanegIbibioIlocanegIngwsiegLojbanNgomba" + - "MatsiameIddew-BersiegIddew-ArabegCara-CalpacegCabilegKachinJjuCambaC" + - "abardiegTyapegMacondegCaboferdianegKoroCàsegKoyra ChiiniChowaregKako" + - "KalenjinKimbunduKomi-PermyakConcaniKpelleKarachay-BalkarCarelegKuruk" + - "hShambalaBaffiaCwlenegCwmicegIddew-SbaenegLangiLahndaLambaLezghegLak" + - "otaLombardegMongoLoziLuri GogleddolLatgalegLuba-LuluaLwndaLŵoLwshaie" + - "gLwyiaMadwregMagahiMaithiliMacasaregMandingoMasaiMocsiaMandaregMende" + - "gMêrwMorisyenGwyddeleg CanolMakhuwa-MeettoMetaMicmacegMinangkabauMan" + - "shwManipwriMohocegMosiMari GorllewinolMundangMwy nag un iaithCreekMi" + - "randegMarwariErzyaMasanderaniNapliegNamaAlmaeneg IselNewaegNiasNiuea" + - "nAo NagaKwasioNgiemboonNogaiHen NorsegN’KoSotho GogleddolNŵeregHen N" + - "ewariNiamweziNiancoleNioroNzimegOsagegTyrceg OtomanPangasinegPahlafi" + - "PampangaPapiamentoPalawanPicardegPidgin NigeriaAlmaeneg PensylfaniaH" + - "en BersiegAlmaeneg PalatinPhoenicegPiedmontegPontegPohnpeianegPrwseg" + - "Hen BrofensalegK’iche’RajasthanegRapanŵiRaratongegRomboRomaniRotuman" + - "egAromanegRwaSandäwegSakhaAramaeg SamariaSambŵrwSasacegSantaliNgambe" + - "iegSangwSisilegSgotegSasareseg SardiniaCwrdeg DeheuolSenecaSenaSeriS" + - "elcypegKoyraboro SenniHen WyddelegSamogitegTachelhitShanArabeg ChadS" + - "idamoIs-silesiegSami DeheuolSami LwleSami InariSami ScoltSonincegSog" + - "degSranan TongoSereregSahoFfriseg SaterlandSwcwmaSwsŵegSwmeregComore" + - "gHen SyriegSyriegSilesiegTuluTimnegTesoTerenaTetumegTigregTifegTocel" + - "awegTsakhuregKlingonLlingitTalyshegTamashecegTok PisinTarokoTsaconeg" + - "TwmbwcaTwfalwegTasawaqTwfwniegTamaseit Canolbarth MorocoFotiacegWgar" + - "itegUmbunduIaith anhysbysFaiegFenisegFepsFflemeg GorllewinolFotegFun" + - "joWalseregWalamoWinarayegWashoWarlpiriCalmycegSogaIangbenIembaegCant" + - "oneegZapotecegBlisssymbolsZêlandegTamaseit SafonolSwniDim cynnwys ie" + - "ithyddolSasäegArabeg Modern SafonolAserbaijaneg DeheuolAlmaeneg Awst" + - "riaAlmaeneg Safonol y SwistirSaesneg AwstraliaSaesneg CanadaSaesneg " + - "PrydainSaesneg AmericaSbaeneg America LadinSbaeneg EwropSbaeneg Mecs" + - "icoFfrangeg CanadaFfrangeg y SwistirSacsoneg IselFflemegPortiwgeeg B" + - "rasilPortiwgeeg EwropMoldofegSerbo-CroategSwahili’r CongoTsieineeg S" + - "ymledigTsieineeg Traddodiadol", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0007, 0x000f, 0x0018, 0x0023, 0x0029, 0x0030, 0x0038, - 0x003e, 0x0044, 0x004a, 0x0051, 0x005d, 0x0067, 0x0070, 0x0078, - 0x007f, 0x0087, 0x008f, 0x0096, 0x009e, 0x00a5, 0x00ae, 0x00b9, - 0x00c2, 0x00c8, 0x00cb, 0x00d2, 0x00de, 0x00e8, 0x00ef, 0x00f4, - 0x00fc, 0x0102, 0x010a, 0x010d, 0x0112, 0x0119, 0x0122, 0x0129, - 0x0130, 0x0136, 0x013c, 0x0141, 0x0148, 0x0150, 0x0158, 0x0160, - 0x0173, 0x017c, 0x018b, 0x0193, 0x019b, 0x01a3, 0x01aa, 0x01af, - 0x01b6, 0x01bb, 0x01bb, 0x01c2, 0x01cd, 0x01d5, 0x01dc, 0x01e2, - // Entry 40 - 7F - 0x01ed, 0x01f6, 0x0201, 0x0205, 0x020a, 0x0213, 0x0216, 0x021e, - 0x0225, 0x022e, 0x0236, 0x023e, 0x0245, 0x024a, 0x0250, 0x0258, - 0x0260, 0x026b, 0x0272, 0x0279, 0x027f, 0x0285, 0x028e, 0x0294, - 0x0298, 0x02a0, 0x02a8, 0x02ae, 0x02ba, 0x02bf, 0x02c8, 0x02cf, - 0x02d4, 0x02dd, 0x02e9, 0x02f0, 0x02f9, 0x0302, 0x0307, 0x0310, - 0x0319, 0x0321, 0x0328, 0x032f, 0x0335, 0x033d, 0x0345, 0x0356, - 0x035d, 0x0363, 0x036c, 0x037b, 0x038a, 0x0399, 0x039f, 0x03a5, - 0x03ae, 0x03b4, 0x03b9, 0x03bd, 0x03c3, 0x03cb, 0x03cf, 0x03d5, - // Entry 80 - BF - 0x03db, 0x03e5, 0x03ec, 0x03f4, 0x03f9, 0x0400, 0x0405, 0x0412, - 0x041a, 0x0420, 0x0426, 0x0434, 0x0439, 0x0441, 0x0449, 0x0451, - 0x0458, 0x045d, 0x0464, 0x046b, 0x0471, 0x0476, 0x0486, 0x048e, - 0x0494, 0x049b, 0x04a2, 0x04a8, 0x04af, 0x04b3, 0x04bb, 0x04c4, - 0x04ca, 0x04d0, 0x04d6, 0x04de, 0x04e5, 0x04ee, 0x04f4, 0x04fc, - 0x0500, 0x0507, 0x050d, 0x0516, 0x051e, 0x0525, 0x052b, 0x0530, - 0x053e, 0x0544, 0x0544, 0x054d, 0x0551, 0x0558, 0x055d, 0x0565, - 0x0579, 0x0587, 0x0590, 0x0597, 0x059e, 0x05a4, 0x05ae, 0x05b5, - // Entry C0 - FF - 0x05c3, 0x05d2, 0x05dd, 0x05e3, 0x05ea, 0x05f3, 0x05fb, 0x0602, - 0x0610, 0x0610, 0x0618, 0x0625, 0x0634, 0x0637, 0x064e, 0x0658, - 0x0658, 0x065e, 0x0665, 0x066c, 0x066c, 0x0673, 0x067a, 0x067a, - 0x067a, 0x0681, 0x0687, 0x0687, 0x068b, 0x0693, 0x0699, 0x06ac, - 0x06b4, 0x06b4, 0x06b8, 0x06b8, 0x06bd, 0x06c4, 0x06c4, 0x06c4, - 0x06c4, 0x06ca, 0x06ce, 0x06d4, 0x06dc, 0x06e4, 0x06e8, 0x06ec, - 0x06ec, 0x06f0, 0x06f7, 0x06f7, 0x06fe, 0x06fe, 0x0705, 0x070a, - 0x070a, 0x070a, 0x0712, 0x0718, 0x0718, 0x071e, 0x071e, 0x0727, - // Entry 100 - 13F - 0x072f, 0x073c, 0x0742, 0x0742, 0x0751, 0x0768, 0x0768, 0x0770, - 0x0776, 0x077b, 0x077b, 0x077b, 0x0781, 0x0786, 0x078d, 0x0792, - 0x079d, 0x079d, 0x07a4, 0x07b3, 0x07bd, 0x07bd, 0x07c3, 0x07c7, - 0x07cb, 0x07cb, 0x07d6, 0x07dc, 0x07e2, 0x07ef, 0x07ef, 0x07f5, - 0x0801, 0x0801, 0x080b, 0x081b, 0x081e, 0x082c, 0x083a, 0x0846, - 0x084f, 0x0860, 0x0871, 0x0879, 0x087b, 0x0881, 0x0881, 0x0885, - 0x088a, 0x089e, 0x08a2, 0x08ab, 0x08ab, 0x08bf, 0x08d1, 0x08d1, - 0x08d1, 0x08da, 0x08e0, 0x08e0, 0x08e8, 0x08fa, 0x08fa, 0x08fa, - // Entry 140 - 17F - 0x08ff, 0x0908, 0x090d, 0x090d, 0x0915, 0x0915, 0x091f, 0x0925, - 0x092c, 0x0938, 0x0938, 0x093c, 0x0942, 0x0948, 0x0950, 0x0958, - 0x0958, 0x0958, 0x095e, 0x0964, 0x096c, 0x0979, 0x0985, 0x0985, - 0x0992, 0x0999, 0x099f, 0x09a2, 0x09a7, 0x09a7, 0x09b0, 0x09b0, - 0x09b6, 0x09be, 0x09cb, 0x09cb, 0x09cf, 0x09cf, 0x09d5, 0x09d5, - 0x09e1, 0x09e9, 0x09e9, 0x09ed, 0x09f5, 0x09fd, 0x0a09, 0x0a10, - 0x0a10, 0x0a16, 0x0a25, 0x0a25, 0x0a25, 0x0a2c, 0x0a32, 0x0a3a, - 0x0a40, 0x0a47, 0x0a4e, 0x0a4e, 0x0a5b, 0x0a60, 0x0a66, 0x0a6b, - // Entry 180 - 1BF - 0x0a72, 0x0a72, 0x0a72, 0x0a72, 0x0a78, 0x0a81, 0x0a86, 0x0a86, - 0x0a8a, 0x0a98, 0x0aa0, 0x0aaa, 0x0aaa, 0x0aaf, 0x0ab3, 0x0abb, - 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac7, 0x0ac7, 0x0acd, 0x0ad5, 0x0ade, - 0x0ae6, 0x0aeb, 0x0aeb, 0x0af1, 0x0af9, 0x0aff, 0x0b04, 0x0b0c, - 0x0b1b, 0x0b29, 0x0b2d, 0x0b35, 0x0b40, 0x0b46, 0x0b4e, 0x0b55, - 0x0b59, 0x0b69, 0x0b70, 0x0b80, 0x0b85, 0x0b8d, 0x0b94, 0x0b94, - 0x0b94, 0x0b99, 0x0ba4, 0x0ba4, 0x0bab, 0x0baf, 0x0bbc, 0x0bc2, - 0x0bc6, 0x0bcc, 0x0bd3, 0x0bd9, 0x0be2, 0x0be7, 0x0bf1, 0x0bf1, - // Entry 1C0 - 1FF - 0x0bf7, 0x0c06, 0x0c0d, 0x0c17, 0x0c1f, 0x0c27, 0x0c2c, 0x0c32, - 0x0c38, 0x0c45, 0x0c4f, 0x0c56, 0x0c5e, 0x0c68, 0x0c6f, 0x0c77, - 0x0c85, 0x0c99, 0x0c99, 0x0ca4, 0x0cb4, 0x0cbd, 0x0cc7, 0x0ccd, - 0x0cd8, 0x0cde, 0x0ced, 0x0cf8, 0x0cf8, 0x0d03, 0x0d0b, 0x0d15, - 0x0d15, 0x0d15, 0x0d1a, 0x0d20, 0x0d29, 0x0d29, 0x0d29, 0x0d31, - 0x0d34, 0x0d3d, 0x0d42, 0x0d51, 0x0d59, 0x0d60, 0x0d67, 0x0d67, - 0x0d70, 0x0d75, 0x0d7c, 0x0d82, 0x0d94, 0x0da2, 0x0da8, 0x0dac, - 0x0db0, 0x0db8, 0x0dc7, 0x0dd3, 0x0ddc, 0x0de5, 0x0de9, 0x0df4, - // Entry 200 - 23F - 0x0dfa, 0x0e05, 0x0e05, 0x0e11, 0x0e1a, 0x0e24, 0x0e2e, 0x0e36, - 0x0e3c, 0x0e48, 0x0e4f, 0x0e53, 0x0e64, 0x0e6a, 0x0e71, 0x0e78, - 0x0e7f, 0x0e89, 0x0e8f, 0x0e97, 0x0e9b, 0x0ea1, 0x0ea5, 0x0eab, - 0x0eb2, 0x0eb8, 0x0ebd, 0x0ec6, 0x0ecf, 0x0ed6, 0x0edd, 0x0ee5, - 0x0eef, 0x0eef, 0x0ef8, 0x0ef8, 0x0efe, 0x0f06, 0x0f06, 0x0f06, - 0x0f0d, 0x0f15, 0x0f1c, 0x0f24, 0x0f3e, 0x0f46, 0x0f4e, 0x0f55, - 0x0f63, 0x0f68, 0x0f6f, 0x0f73, 0x0f86, 0x0f86, 0x0f8b, 0x0f8b, - 0x0f90, 0x0f98, 0x0f9e, 0x0fa7, 0x0fac, 0x0fb4, 0x0fb4, 0x0fbc, - // Entry 240 - 27F - 0x0fbc, 0x0fc0, 0x0fc0, 0x0fc0, 0x0fc7, 0x0fce, 0x0fce, 0x0fd7, - 0x0fe0, 0x0fec, 0x0ff5, 0x0ff5, 0x1005, 0x1009, 0x101f, 0x1026, - 0x103b, 0x104f, 0x105f, 0x1079, 0x108a, 0x1098, 0x10a7, 0x10b6, - 0x10cb, 0x10d8, 0x10e7, 0x10e7, 0x10f6, 0x1108, 0x1115, 0x111c, - 0x112d, 0x113d, 0x1145, 0x1152, 0x1163, 0x1175, 0x118b, - }, - }, - { // da - daLangStr, - daLangIdx, - }, - { // dav - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluKitaita", - []uint16{ // 266 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, - // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, - // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0170, - }, - }, - { // de - deLangStr, - deLangIdx, - }, - { // de-AT - "Hausakaribische SpracheChibcha-SpracheDelawarischFriulanischHawaiianisch" + - "Miao-SpracheMuskogee-SpracheNiueanischPangasinensischSchlesischmoder" + - "nes HocharabischSerbokroatisch", - []uint16{ // 612 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - // Entry 40 - 7F - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - // Entry 80 - BF - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - // Entry C0 - FF - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - // Entry 100 - 13F - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - // Entry 140 - 17F - 0x003c, 0x003c, 0x003c, 0x003c, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - // Entry 180 - 1BF - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0064, 0x0064, 0x0064, 0x0064, - 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, - 0x0064, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - // Entry 1C0 - 1FF - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - // Entry 200 - 23F - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - // Entry 240 - 27F - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x00aa, - }, - }, - { // de-CH - "WeissrussischAceh-SpracheAcholi-SpracheBasaa-SpracheBikol-SpracheBini-Sp" + - "racheChibcha-SpracheDinka-SprachePangwe-SpracheGbaya-SpracheKimbundu" + - "-SpracheMuskogee-SpracheAltpreussisch", - []uint16{ // 474 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - // Entry 40 - 7F - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - // Entry 80 - BF - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0019, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - // Entry C0 - FF - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0041, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - // Entry 100 - 13F - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, - 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - // Entry 140 - 17F - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - // Entry 180 - 1BF - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - // Entry 1C0 - 1FF - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00b1, - }, - }, - { // de-LU - "Belarussisch", - []uint16{ // 15 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - }, - }, - { // dje - "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + - " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + - "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + - "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senniKoree" + - " senniMaleezi senniBurme senniNeepal senniHolandee senniPunjaabi sen" + - "niiPolonee senniPortugee senniRumaani senniRuusi senniRwanda senniSo" + - "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " + - "senniUrdu senniVietnaam senniYorbance senniSinuwa senniZulu senniZar" + - "maciine", - []uint16{ // 271 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, - 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, - 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, - 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, - // Entry 40 - 7F - 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0111, 0x0111, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134, - 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, - 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x015d, 0x015d, 0x016a, - // Entry 80 - BF - 0x016a, 0x0178, 0x0178, 0x0178, 0x0178, 0x0185, 0x0190, 0x019c, - 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, - 0x019c, 0x019c, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, - 0x01b6, 0x01b6, 0x01c1, 0x01c1, 0x01c1, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01d0, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01e7, - 0x01f1, 0x01f1, 0x01f1, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, - 0x01ff, 0x020d, 0x020d, 0x0219, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - // Entry C0 - FF - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - // Entry 100 - 13F - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, - 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x0223, 0x022d, - }, - }, - { // dsb - "afaršćinaabchazšćinaafrikansakanšćinaamharšćinaaragonšćinaarabšćinaasamš" + - "ćinaawaršćinaaymaršćinaazerbajdžanšćinabaškiršćinaběłorušćinabulgar" + - "šćinabislamšćinabambarabengalšćinatibetšćinabretonšćinabosnišćinaka" + - "tanlanšćinačamoršćinakorsišćinakričešćinawalizišćinadanšćinanimšćina" + - "divehidzongkhaewegrichišćinaengelšćinaesperantošpańšćinaestišćinabas" + - "kišćinapersišćinafinšćinafidžišćinaferejšćinafrancojšćinafrizišćinai" + - "ršćinašotišćinagalicišćinaguaranigudžaratšćinamanšćinahausahebrejšći" + - "nahindišćinachorwatšćinahaitišćinahungoršćinaarmeńšćinainterlinguain" + - "donešćinaigbosichuan yiinupiakidoislandšćinaitalšćinainuitšćinajapań" + - "šćinajavašćinageorgišćinakikuyukazachšćinagrönlandšćinakambodžanšći" + - "nakannadšćinakorejańšćinakašmiršćinakurdišćinakornišćinakirgišćinała" + - "tyńšćinaluxemburgšćinagandšćinalimburšćinalingalalaošćinalitawšćinal" + - "uba-katangaletišćinamalgašćinamaorišćinamakedońšćinamalajamšćinamong" + - "olšćinamaratišćinamalajšćinamaltašćinaburmašćinanaurušćinapódpołnocn" + - "e ndebelenepalšćinanižozemšćinanorwegske nynorsknorwegske bokmålnava" + - "hookcitanšćinaoromoorojišćinapandžabšćinapólšćinapaštunšćinaportugal" + - "šćinakečuaretoromańšćinakirundišćinarumunšćinarušćinakinjarwandasan" + - "skritsardinšćinasindšćinalapšćinasangosingalšćinasłowakšćinasłowjeńš" + - "ćinasamošćinašonšćinasomališćinaalbanšćinaserbišćinasiswatipódpołdn" + - "jowa sotšćina (Sesotho)sundanšćinašwedšćinaswahilišćinatamilšćinatel" + - "ugšćinatadžikišćinathailandšćinatigrinjaturkmeńšćinatswanatonganšćin" + - "aturkojšćinatsongatataršćinatahitišćinaujguršćinaukrainšćinaurdušćin" + - "ausbekšćinavietnamšćinavolapükwalonšćinawolofxhosajidišćinajorubšćin" + - "azhuangchinšćinazuluaghemanglosaksojšćinaarawkašćinapareasturšćinabe" + - "mbabenabodobugišćinachigachoctawšćinacherokeesoranitaitazarmadolnose" + - "rbšćinadualajola-fonyiembufilipinšćinagagauzšćinagotišćinašwicarska " + - "nimšćinagusiihawaiišćinagórnoserbšćinangombamachamekabylšćinakambama" + - "kondekapverdšćinakoyra chiinikalenjinkomi-permyakkonkanišambalabafia" + - "langilakotšćinaluoluhyamasaišćinamerumauriciska kreolšćinamakhuwa-me" + - "ettometa’mohawkšćinamundangkriknamadolnonimšćinakwasion’konuernyanko" + - "leprusčinakʼicheʼromborwasamburusangusicilianišćinasenakoyra sennita" + - "šelhitpódpołdnjowa samišćinalule-samišćinainari-samišćinaskolt-sami" + - "šćinasaterfrizišćinatesotasawaqcentralnoatlaski tamazightnjeznata r" + - "ěcvaivunjosogastandardny marokkański tamazightžedno rěcne wopśimjeś" + - "emoderna wusokoarabšćinaawstriska nimšćinašwicarska wusokonimšćinaaw" + - "stralska engelšćinakanadiska engelšćinabritiska engelšćinaameriska e" + - "ngelšćinałatyńskoamerikańska špańšćinaeuropejska špańšćinamexikańska" + - " špańšćinakanadiska francojšćinašwicarska francojšćinaflamšćinabrazi" + - "lska portugalšćinaeuropejska portugalšćinamoldawišćinaserbochorwatšć" + - "inakongojska swahilišćinachinšćina (zjadnorjona)chinšćina (tradicion" + - "alna)", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000b, 0x0018, 0x0018, 0x0020, 0x002b, 0x0037, 0x0044, - 0x004f, 0x005a, 0x0065, 0x0071, 0x0084, 0x0092, 0x00a1, 0x00ae, - 0x00bb, 0x00c2, 0x00cf, 0x00db, 0x00e8, 0x00f4, 0x0103, 0x0103, - 0x0110, 0x011c, 0x011f, 0x0129, 0x0129, 0x0129, 0x0136, 0x0140, - 0x014a, 0x0150, 0x0158, 0x015b, 0x0168, 0x0174, 0x017d, 0x018a, - 0x0195, 0x01a1, 0x01ad, 0x01ad, 0x01b7, 0x01c4, 0x01d0, 0x01de, - 0x01ea, 0x01f3, 0x01ff, 0x020c, 0x0213, 0x0223, 0x022d, 0x0232, - 0x023f, 0x024b, 0x024b, 0x0259, 0x0265, 0x0272, 0x027f, 0x027f, - // Entry 40 - 7F - 0x028a, 0x0297, 0x0297, 0x029b, 0x02a5, 0x02ac, 0x02af, 0x02bc, - 0x02c7, 0x02d3, 0x02e0, 0x02eb, 0x02f8, 0x02f8, 0x02fe, 0x02fe, - 0x030b, 0x031b, 0x032c, 0x0339, 0x0348, 0x0348, 0x0356, 0x0362, - 0x0362, 0x036e, 0x037a, 0x0388, 0x0398, 0x03a3, 0x03b0, 0x03b7, - 0x03c1, 0x03cd, 0x03d9, 0x03e4, 0x03f0, 0x03f0, 0x03fc, 0x040b, - 0x0419, 0x0426, 0x0433, 0x043f, 0x044b, 0x0457, 0x0463, 0x0478, - 0x0484, 0x0484, 0x0493, 0x04a4, 0x04b5, 0x04b5, 0x04bb, 0x04bb, - 0x04c9, 0x04c9, 0x04ce, 0x04da, 0x04da, 0x04e9, 0x04e9, 0x04f4, - // Entry 80 - BF - 0x0502, 0x0511, 0x0517, 0x0528, 0x0536, 0x0542, 0x054b, 0x0556, - 0x055e, 0x056b, 0x0576, 0x0580, 0x0585, 0x0592, 0x05a0, 0x05b0, - 0x05bb, 0x05c6, 0x05d3, 0x05df, 0x05eb, 0x05f2, 0x0615, 0x0622, - 0x062e, 0x063c, 0x0648, 0x0654, 0x0663, 0x0672, 0x067a, 0x0689, - 0x068f, 0x069c, 0x06a9, 0x06af, 0x06bb, 0x06c8, 0x06d4, 0x06e1, - 0x06ec, 0x06f8, 0x06f8, 0x0706, 0x070e, 0x071a, 0x071f, 0x0724, - 0x072f, 0x073b, 0x0741, 0x074c, 0x0750, 0x0750, 0x0750, 0x0750, - 0x0750, 0x0750, 0x0750, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755, - // Entry C0 - FF - 0x0755, 0x0755, 0x0767, 0x0767, 0x0767, 0x0774, 0x0774, 0x0774, - 0x0774, 0x0774, 0x0774, 0x0774, 0x0774, 0x0778, 0x0778, 0x0784, - 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, 0x0784, - 0x0784, 0x0784, 0x0789, 0x0789, 0x078d, 0x078d, 0x078d, 0x078d, - 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, 0x078d, - 0x078d, 0x078d, 0x0791, 0x0791, 0x0791, 0x079c, 0x079c, 0x079c, - 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, 0x079c, 0x07a1, - 0x07a1, 0x07a1, 0x07a1, 0x07a1, 0x07a1, 0x07af, 0x07af, 0x07b7, - // Entry 100 - 13F - 0x07b7, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, - 0x07bd, 0x07c2, 0x07c2, 0x07c2, 0x07c2, 0x07c2, 0x07c7, 0x07c7, - 0x07d7, 0x07d7, 0x07dc, 0x07dc, 0x07e6, 0x07e6, 0x07e6, 0x07ea, - 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, 0x07ea, - 0x07ea, 0x07ea, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, - 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x07f8, 0x0805, 0x0805, 0x0805, - 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, 0x0805, - 0x0805, 0x0805, 0x0810, 0x0810, 0x0810, 0x0825, 0x0825, 0x0825, - // Entry 140 - 17F - 0x082a, 0x082a, 0x082a, 0x082a, 0x0837, 0x0837, 0x0837, 0x0837, - 0x0837, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, 0x0848, - 0x0848, 0x0848, 0x0848, 0x084e, 0x0855, 0x0855, 0x0855, 0x0855, - 0x0855, 0x0861, 0x0861, 0x0861, 0x0866, 0x0866, 0x0866, 0x0866, - 0x0866, 0x086d, 0x087b, 0x087b, 0x087b, 0x087b, 0x087b, 0x087b, - 0x0887, 0x0887, 0x0887, 0x0887, 0x088f, 0x088f, 0x089b, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08aa, - 0x08af, 0x08af, 0x08af, 0x08af, 0x08af, 0x08b4, 0x08b4, 0x08b4, - // Entry 180 - 1BF - 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08c0, 0x08c0, 0x08c0, 0x08c0, - 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c3, 0x08c3, - 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, - 0x08c8, 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08d8, 0x08ef, - 0x08ef, 0x08fd, 0x0904, 0x0904, 0x0904, 0x0904, 0x0904, 0x0911, - 0x0911, 0x0911, 0x0918, 0x0918, 0x091c, 0x091c, 0x091c, 0x091c, - 0x091c, 0x091c, 0x091c, 0x091c, 0x091c, 0x0920, 0x092f, 0x092f, - 0x092f, 0x092f, 0x092f, 0x0935, 0x0935, 0x0935, 0x0935, 0x0935, - // Entry 1C0 - 1FF - 0x093b, 0x093b, 0x093f, 0x093f, 0x093f, 0x0947, 0x0947, 0x0947, - 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, - 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, 0x0947, - 0x0947, 0x0950, 0x0950, 0x0959, 0x0959, 0x0959, 0x0959, 0x0959, - 0x0959, 0x0959, 0x095e, 0x095e, 0x095e, 0x095e, 0x095e, 0x095e, - 0x0961, 0x0961, 0x0961, 0x0961, 0x0968, 0x0968, 0x0968, 0x0968, - 0x0968, 0x096d, 0x097d, 0x097d, 0x097d, 0x097d, 0x097d, 0x0981, - 0x0981, 0x0981, 0x098c, 0x098c, 0x098c, 0x0995, 0x0995, 0x0995, - // Entry 200 - 23F - 0x0995, 0x0995, 0x0995, 0x09af, 0x09bf, 0x09d0, 0x09e1, 0x09e1, - 0x09e1, 0x09e1, 0x09e1, 0x09e1, 0x09f2, 0x09f2, 0x09f2, 0x09f2, - 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f2, 0x09f6, 0x09f6, - 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, - 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, 0x09f6, - 0x09f6, 0x09f6, 0x09fd, 0x09fd, 0x0a17, 0x0a17, 0x0a17, 0x0a17, - 0x0a24, 0x0a27, 0x0a27, 0x0a27, 0x0a27, 0x0a27, 0x0a27, 0x0a27, - 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, 0x0a2c, - // Entry 240 - 27F - 0x0a2c, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a30, - 0x0a30, 0x0a30, 0x0a30, 0x0a30, 0x0a51, 0x0a51, 0x0a6b, 0x0a6b, - 0x0a84, 0x0a84, 0x0a98, 0x0ab3, 0x0aca, 0x0ae0, 0x0af5, 0x0b0a, - 0x0b2e, 0x0b46, 0x0b5f, 0x0b5f, 0x0b77, 0x0b90, 0x0b90, 0x0b9b, - 0x0bb4, 0x0bce, 0x0bdc, 0x0bef, 0x0c07, 0x0c20, 0x0c3b, - }, - }, - { // dua - "duálá", - []uint16{ // 275 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0007, - }, - }, - { // dyo - "akanamharikarabbelarusbulgaaribengalisekalmangreekangleespañolpersanfran" + - "sehausaenduongruaindoneesiigboitaliensaponeesavaneekmeerkoreemaleesi" + - "birmaninepaleesneerlandepenjabipoloneesportugeesrumeenrusruandasomal" + - "isueditamiltayturkiukrainurduvietnamyorubasinuasulujoola", - []uint16{ // 277 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x001e, - 0x001e, 0x001e, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x002d, 0x002d, 0x002d, 0x002d, 0x0032, 0x0037, 0x0037, 0x003f, - 0x003f, 0x003f, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0050, - 0x0050, 0x0054, 0x0054, 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, - // Entry 40 - 7F - 0x005a, 0x0063, 0x0063, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, - 0x006e, 0x006e, 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - 0x007c, 0x007c, 0x0081, 0x0081, 0x0086, 0x0086, 0x0086, 0x0086, - 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, - 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086, - 0x0086, 0x0086, 0x0086, 0x008d, 0x008d, 0x0094, 0x0094, 0x0094, - 0x009c, 0x009c, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00ac, 0x00ac, 0x00b4, - // Entry 80 - BF - 0x00b4, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00c3, 0x00c6, 0x00cc, - 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d7, 0x00d7, 0x00dc, 0x00dc, 0x00dc, 0x00df, 0x00df, 0x00df, - 0x00df, 0x00df, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00ea, - 0x00ee, 0x00ee, 0x00ee, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, - 0x00f5, 0x00fb, 0x00fb, 0x0100, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - // Entry C0 - FF - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - // Entry 100 - 13F - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0109, - }, - }, - { // dz - "ཨ་ཕར་ཁཨཱབ་ཁ་ཟི་ཡ་ཁཨཕ་རི་ཀཱནས་ཁཨམ་ཧ་རིཀ་ཁཨེ་ར་བིཀ་ཁཨ་ས་མིས་ཁཨ་ཛར་བྷའི་ཇཱན" + - "་ཁབེལ་ཨ་རུས་ཁབཱལ་གེ་རི་ཡཱན་ཁབངྒ་ལ་ཁབོད་ཁབྷོས་ནི་ཡཱན་ཁཀེ་ཊ་ལཱན་ཁཅེཀ" + - "་ཁཝེལཤ་ཁཌེ་ནིཤ་ཁཇཱར་མཱན་ཁདི་བེ་ཧི་ཁརྫོང་ཁགྲིཀ་ཁཨིང་ལིཤ་ཁཨེས་པ་རཱན་" + - "ཏོ་ཁཨིས་པེ་ནིཤ་ཁཨེས་ཊོ་ནི་ཡཱན་ཁབཱསཀ་ཁཔར་ཤི་ཡཱན་ཁཕི་ནིཤ་ཁཕི་ཇི་ཡཱན་" + - "ཁཕཱ་རོ་ཨིས་ཁཕྲནཅ་ཁནུབ་ཕྼི་སི་ཡན་ཁཨཱའི་རིཤ་ཁགལ་ཨིས་ཨི་ཡན་ཁགུ་ཝ་ར་ནི" + - "་ཁགུ་ཇ་ར་ཏི་ཁཧཝ་ས་ཁཧེ་བྲུ་ཁཧིན་དི་ཁཀྲོ་ཨེ་ཤི་ཡཱན་ཁཧེ་ཏི་ཡཱན་ཁཧཱང་ག" + - "ྷ་རི་ཡཱན་ཁཨར་མི་ནི་ཡཱན་ཁཨིན་ཌོ་ནེ་ཤི་ཡཱན་ཁཨིག་བོ་ཁཨ་ཡིས་ལེན་ཌིཀ་ཁཨ" + - "ི་ཊ་ལི་ཡཱན་ཁཇཱ་པཱ་ནིས་ཁཇཱ་བ་ནིས་ཁཇཽ་ཇི་ཡཱན་ཁཀ་ཛགས་ཁཁེ་མེར་ཁཀ་ན་ཌ་ཁ" + - "ཀོ་རི་ཡཱན་ཁཀཱཤ་མི་རི་ཁཀར་ཌིཤ་ཁཀིར་གིས་ཁལེ་ཊིན་ཁལག་ཛམ་བོརྒ་ཁལཱ་ཝོས་" + - "ཁལི་ཐུ་ཝེ་ནི་ཡཱན་ཁལཊ་བི་ཡཱན་ཁམ་ལ་ག་སི་ཁམ་ཨོ་རི་ཁམ་སེ་ཌོ་ནི་ཡཱན་ཁམ་" + - "ལ་ཡ་ལམ་ཁམ་ར་ཐི་ཁམ་ལེ་ཁམཱལ་ཊ་ཁབར་མིས་ཁནེ་པཱལི་ཁཌཆ་ཁནོར་ཝེ་ཇི་ཡཱན་ནོ" + - "རསཀ་ཁནོར་ཝེ་ཇི་ཡཱན་བོཀ་མཱལ་ཁཨོ་རི་ཡ་ཁཔཱན་ཇ་བི་ཁཔོ་ལིཤ་ཁཔཱཤ་ཏོ་ཁཔོར" + - "་ཅུ་གིས་ཁཀྭེ་ཆུ་ཨ་ཁརོ་མེ་ནིཤ་ཁརོ་མེ་ནི་ཡཱན་ཁཨུ་རུ་སུའི་ཁསཾསྐྲྀཏ་ཁས" + - "ིན་དཱི་ཁསིང་ཧ་ལ་ཁསུ་ལོ་བཱཀ་ཁསུ་ལོ་བི་ནི་ཡཱན་ཁསོ་མ་ལི་ཁཨཱལ་བེ་ནི་ཡཱ" + - "ན་ཁསཱར་བྷི་ཡཱན་ཁསཱུན་ད་ནིས་ཁསུའི་ཌིཤ་ཁསྭཱ་ཧི་ལི་ཁཏ་མིལ་ཁཏེ་ལུ་གུ་ཁ" + - "ཏ་ཇིཀ་ཁཐཱའི་ཁཏིག་རི་ཉ་ཁཊཱརཀ་མེན་ཁཊོང་གྷན་ཁཊཱར་ཀིཤ་ཁཊ་ཊར་ཁཝི་གུར་ཁཡ" + - "ུ་ཀེ་རེ་ནི་ཡཱན་ཁཨུར་དུ་ཁཨུས་བེཀ་ཁབེཊ་ནཱ་མིས་ཁཝོ་ལོཕ་ཁཞོ་ས་ཁཡོ་རུ་བ" + - "་ཁརྒྱ་མི་ཁཟུ་ལུ་ཁད་ཀོ་ཏ་ཁཕི་ལི་པི་ནོ་ཁསུ་ཡིས་ཇཱར་མཱན་ཁཧ་ཝ་ཡིའི་ཁཀ་" + - "ཆིན་ཁཀོ་རོ་ཁམན་ཇུ་ཁཤཱན་ཁཁ་ངོ་མ་ཤེསཔསྐད་རིག་ནང་དོན་མེདཔཨཱོས་ཊྲི་ཡཱན" + - "་ཇཱར་མཱན་ཁསུ་ཡིས་གི་མཐོ་སའི་ཇཱར་མཱན་ཁཨཱོས་ཊྲེ་ལི་ཡཱན་ཨིང་ལིཤ་ཁཀེ་ན" + - "་ཌི་ཡཱན་ཨིང་ལིཤ་ཁབྲི་ཊིཤ་ཨིང་ལིཤ་ཁཡུ་ཨེས་ཨིང་ལིཤ་ཁལེ་ཊིན་ཨ་མེ་རི་ཀ" + - "ཱན་གི་ཨིས་པེ་ནིཤ་ཁཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་ཁསུ་ཡིས་" + - "ཕྲནཅ་ཁཕྷེལེ་མིཤ་ཁབྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་" + - "ཁརྒྱ་མི་ཁ་འཇམ་སངམསྔ་དུས་ཀྱི་རྒྱ་མི་ཁ", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0012, 0x0036, 0x0036, 0x005a, 0x005a, 0x0078, 0x0078, - 0x0096, 0x00b1, 0x00b1, 0x00b1, 0x00de, 0x00de, 0x00ff, 0x012c, - 0x012c, 0x012c, 0x0141, 0x0150, 0x0150, 0x0177, 0x0195, 0x0195, - 0x0195, 0x0195, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01b6, 0x01ce, - 0x01e9, 0x0207, 0x0219, 0x0219, 0x022b, 0x0246, 0x0270, 0x0294, - 0x02c1, 0x02d3, 0x02f4, 0x02f4, 0x030c, 0x032d, 0x034e, 0x0360, - 0x038d, 0x03ab, 0x03ab, 0x03d5, 0x03f6, 0x0417, 0x0417, 0x0429, - 0x0441, 0x0459, 0x0459, 0x0486, 0x04a7, 0x04d4, 0x04fe, 0x04fe, - // Entry 40 - 7F - 0x04fe, 0x0534, 0x0534, 0x054c, 0x054c, 0x054c, 0x054c, 0x0579, - 0x05a0, 0x05a0, 0x05c1, 0x05df, 0x0600, 0x0600, 0x0600, 0x0600, - 0x0615, 0x0615, 0x062d, 0x0642, 0x0663, 0x0663, 0x0684, 0x069c, - 0x069c, 0x069c, 0x06b7, 0x06cf, 0x06f3, 0x06f3, 0x06f3, 0x06f3, - 0x070b, 0x073e, 0x073e, 0x075f, 0x077d, 0x077d, 0x0798, 0x07c8, - 0x07e6, 0x07e6, 0x07fe, 0x0810, 0x0825, 0x083d, 0x083d, 0x083d, - 0x0858, 0x0858, 0x0864, 0x08a3, 0x08e8, 0x08e8, 0x08e8, 0x08e8, - 0x08e8, 0x08e8, 0x08e8, 0x0903, 0x0903, 0x0921, 0x0921, 0x0939, - // Entry 80 - BF - 0x0951, 0x0975, 0x0993, 0x09b4, 0x09b4, 0x09de, 0x0a02, 0x0a02, - 0x0a1d, 0x0a1d, 0x0a38, 0x0a38, 0x0a38, 0x0a53, 0x0a74, 0x0aa7, - 0x0aa7, 0x0aa7, 0x0ac2, 0x0aef, 0x0b16, 0x0b16, 0x0b16, 0x0b3a, - 0x0b58, 0x0b79, 0x0b8e, 0x0bac, 0x0bc1, 0x0bd3, 0x0bf1, 0x0c0f, - 0x0c0f, 0x0c2a, 0x0c45, 0x0c45, 0x0c57, 0x0c57, 0x0c6f, 0x0ca2, - 0x0cba, 0x0cd5, 0x0cd5, 0x0cf9, 0x0cf9, 0x0cf9, 0x0d11, 0x0d23, - 0x0d23, 0x0d3e, 0x0d3e, 0x0d56, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - // Entry C0 - FF - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, - // Entry 100 - 13F - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d6b, 0x0d83, - 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, - 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, - 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, 0x0d83, - 0x0d83, 0x0d83, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, - 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, - 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, - 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0daa, 0x0dda, 0x0dda, 0x0dda, - // Entry 140 - 17F - 0x0dda, 0x0dda, 0x0dda, 0x0dda, 0x0df8, 0x0df8, 0x0df8, 0x0df8, - 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, - 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, 0x0df8, - 0x0df8, 0x0df8, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, - 0x0e0d, 0x0e0d, 0x0e0d, 0x0e0d, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - // Entry 180 - 1BF - 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, - 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e22, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - // Entry 1C0 - 1FF - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, - 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e37, 0x0e46, 0x0e46, - // Entry 200 - 23F - 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, - 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, - 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, - 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, - 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, - 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, 0x0e46, - 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, - 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, - // Entry 240 - 27F - 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, - 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0e67, 0x0ea0, 0x0ea0, - 0x0ea0, 0x0ea0, 0x0ee2, 0x0f33, 0x0f7e, 0x0fbd, 0x0ff0, 0x1020, - 0x1086, 0x10cb, 0x10cb, 0x10cb, 0x1101, 0x1128, 0x1128, 0x1149, - 0x1194, 0x11df, 0x11df, 0x11df, 0x11df, 0x120f, 0x1248, - }, - }, - { // ebu - "KĩakanKĩamhariKĩarabuKĩmbelarusiKĩbulgariaKĩbanglaKĩchekiKĩnjeremaniKĩng" + - "rikiKĩthunguKĩhispaniaKĩanjemiKĩfaransaKĩhausaKĩhindĩKĩhungariKĩindo" + - "nesiaKĩigboKĩitalianoKĩnjapaniKĩjavaKĩkambodiaKĩkoreaKĩmalesiaKĩburm" + - "aKĩnepaliKĩholanziKĩpunjabiKĩpolandiKĩrenoKĩromaniaKĩrusiKĩnyarwanda" + - "KĩsomaliKĩswidiKĩtamilKĩtailandiKĩturukiKĩukraniaKĩurduKĩvietinamuKĩ" + - "yorubaKĩchinaKĩzuluKĩembu", - []uint16{ // 280 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0024, 0x002f, - 0x002f, 0x002f, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x004c, 0x004c, 0x004c, 0x004c, 0x0055, 0x005e, 0x005e, 0x0069, - 0x0069, 0x0069, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0084, - 0x0084, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097, - // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00b5, 0x00b5, 0x00bf, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb, - 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, - 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0112, - // Entry 80 - BF - 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0123, 0x012a, 0x0136, - 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, - 0x0136, 0x0136, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x016d, - 0x0174, 0x0174, 0x0174, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0189, 0x0189, 0x0191, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - // Entry C0 - FF - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - // Entry 100 - 13F - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, 0x019f, - }, - }, - { // ee - "abkhaziagbeafrikaangbeblugbeamhariagbeArabiagbeassamegbeaymargbeazerbaij" + - "angbebelarusiagbebulgariagbebambaragbeBengaligbetibetagbebretongbebo" + - "sniagbekatalagbetsɛkgbewalesgbedenmarkgbeGermaniagbedivehgbedzongkha" + - "gbeEʋegbegrisigbeYevugbeesperantogbeSpanishgbeestoniagbebasqugbepers" + - "iagbefinlanɖgbefidzigbeFransegbeirelanɖgbegalatagbeguarangbegujarati" + - "hausagbehebrigbeHindigbekroatiagbehaitigbehungarigbearmeniagbeIndone" + - "siagbeigbogbeicelanɖgbeItaliagbeJapangbedzavangbegɔgiagbekazakhstang" + - "bekhmergbekannadagbeKoreagbekashmirgbekurdiagbekirghistangbelatinlak" + - "sembɔggbelingalalaogbelithuaniagbelatviagbemalagasegbemaorgbemakedon" + - "iagbemalayagbemongoliagbemarathiagbemalaygbemaltagbeburmagbedziehe n" + - "debelegbenepalgbeHollandgbenɔweigbe ninɔsknɔweigbe bokmålnyanjagbeor" + - "iyagbeossetiagbepundzabgbePolishgbepashtogbePortuguesegbekwetsuagber" + - "omanshgberundigberomaniagbeRussiagberuwandagbesanskrigbesindhgbedzie" + - "he samigbesangogbesinhalgbeslovakiagbesloveniagbesamoagbeshonagbesom" + - "aliagbealbaniagbeserbiagbeswatgbeanyiehe sothogbeswedengbeswahilitam" + - "ilgbetelegugbetadzikistangbeThailandgbetigrinyagbetɛkmengbetswanagbe" + - "tongagbeTurkishgbetsongagbetahitigbeuighurgbeukraingbeurdugbeuzbekis" + - "tangbevendagbevietnamgbewolofgbexhosagbeyorubagbeChinagbezulugbeaghe" + - "mgbeasagbebembagbebenagbebodogbeembugbeefigbefilipingbeswizerlanɖtɔw" + - "o ƒe germaniagbehawaigbecape verdegbelahndagbeluyiagbegbegbɔgblɔ sɔg" + - "bɔwodziehe sothogberombogberwagbesakagbekomorogbetetumgbetok pisigbe" + - "gbegbɔgblɔ manyawalsegbecantongbegbegbɔgblɔ manɔmeeGermaniagbe (Aust" + - "ria)Germaniagbe (Switzerland)Yevugbe (Australia)Yevugbe (Canada)Yevu" + - "gbe (Britain)Yevugbe (America)Spanishgbe (Latin America)Spanishgbe (" + - "Europe)Spanishgbe (Mexico)Fransegbe (Canada)Fransegbe (Switzerland)F" + - "lemishgbePortuguesegbe (Brazil)Portuguesegbe (Europe)serbo-croatiagb" + - "etsainagbeblema tsainagbe", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000b, 0x000b, 0x0016, 0x001c, 0x0026, 0x0026, - 0x002f, 0x0038, 0x0038, 0x0040, 0x004d, 0x004d, 0x0059, 0x0064, - 0x0064, 0x006e, 0x0078, 0x0081, 0x008a, 0x0093, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x00a4, 0x00a4, 0x00a4, 0x00ac, 0x00b6, - 0x00c1, 0x00c9, 0x00d4, 0x00db, 0x00e3, 0x00ea, 0x00f6, 0x0100, - 0x010a, 0x0112, 0x011b, 0x011b, 0x0126, 0x012e, 0x012e, 0x0137, - 0x0137, 0x0142, 0x0142, 0x014b, 0x0154, 0x015c, 0x015c, 0x0164, - 0x016c, 0x0174, 0x0174, 0x017e, 0x0186, 0x0190, 0x019a, 0x019a, - // Entry 40 - 7F - 0x019a, 0x01a6, 0x01a6, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b8, - 0x01c1, 0x01c1, 0x01c9, 0x01d2, 0x01db, 0x01db, 0x01db, 0x01db, - 0x01e8, 0x01e8, 0x01f0, 0x01fa, 0x0202, 0x0202, 0x020c, 0x0215, - 0x0215, 0x0215, 0x0222, 0x0227, 0x0234, 0x0234, 0x0234, 0x023b, - 0x0241, 0x024d, 0x024d, 0x0256, 0x0261, 0x0261, 0x0268, 0x0274, - 0x027d, 0x0288, 0x0293, 0x029b, 0x02a3, 0x02ab, 0x02ab, 0x02bc, - 0x02c4, 0x02c4, 0x02ce, 0x02df, 0x02f0, 0x02f0, 0x02f0, 0x02f9, - 0x02f9, 0x02f9, 0x02f9, 0x0301, 0x030b, 0x0315, 0x0315, 0x031e, - // Entry 80 - BF - 0x0327, 0x0334, 0x033e, 0x0348, 0x0350, 0x035a, 0x0363, 0x036d, - 0x0377, 0x0377, 0x037f, 0x038d, 0x0395, 0x039e, 0x03a9, 0x03b4, - 0x03bc, 0x03c4, 0x03ce, 0x03d8, 0x03e1, 0x03e8, 0x03f8, 0x03f8, - 0x0401, 0x0408, 0x0410, 0x0419, 0x0427, 0x0432, 0x043d, 0x0447, - 0x0450, 0x0458, 0x0462, 0x046b, 0x046b, 0x0474, 0x047d, 0x0486, - 0x048d, 0x049a, 0x04a2, 0x04ac, 0x04ac, 0x04ac, 0x04b4, 0x04bc, - 0x04bc, 0x04c5, 0x04c5, 0x04cd, 0x04d4, 0x04d4, 0x04d4, 0x04d4, - 0x04d4, 0x04d4, 0x04d4, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, - // Entry C0 - FF - 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, - 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x04e2, 0x04e2, 0x04ea, 0x04ea, 0x04f1, 0x04f1, 0x04f1, 0x04f1, - 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, 0x04f1, - 0x04f1, 0x04f1, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, - 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, - 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, - // Entry 100 - 13F - 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, - 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, - 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04f8, 0x04ff, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, - 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, - 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, - 0x050f, 0x050f, 0x050f, 0x050f, 0x050f, 0x052f, 0x052f, 0x052f, - // Entry 140 - 17F - 0x052f, 0x052f, 0x052f, 0x052f, 0x0537, 0x0537, 0x0537, 0x0537, - 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, - 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, - 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, 0x0537, - 0x0537, 0x0537, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, - 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, - 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, - 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x0544, 0x054d, 0x054d, - // Entry 180 - 1BF - 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, - 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, 0x054d, - 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, - 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, - 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, 0x0555, - 0x0555, 0x0555, 0x0555, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, - 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, - 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, - // Entry 1C0 - 1FF - 0x056b, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, - 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, - 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, - 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, 0x057a, - 0x057a, 0x057a, 0x0582, 0x0582, 0x0582, 0x0582, 0x0582, 0x0582, - 0x0588, 0x0588, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, - 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, - 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, - // Entry 200 - 23F - 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, - 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, 0x058f, - 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, 0x0598, - 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, - 0x05a0, 0x05a0, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, - 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, 0x05ab, - 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, 0x05bd, - 0x05bd, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, - // Entry 240 - 27F - 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05c5, 0x05ce, - 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05e3, 0x05e3, - 0x05e3, 0x05e3, 0x05f8, 0x0611, 0x0624, 0x0634, 0x0645, 0x0656, - 0x0670, 0x0683, 0x0696, 0x0696, 0x06a8, 0x06bf, 0x06bf, 0x06c9, - 0x06df, 0x06f5, 0x06f5, 0x0705, 0x0705, 0x070e, 0x071d, - }, - }, - { // el - elLangStr, - elLangIdx, - }, - { // en - enLangStr, - enLangIdx, - }, - { // en-AU - "BengalifrclouUnited States EnglishMoldovan", - []uint16{ // 611 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 80 - BF - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry C0 - FF - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 100 - 13F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - // Entry 140 - 17F - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - // Entry 180 - 1BF - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - // Entry 1C0 - 1FF - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - // Entry 200 - 23F - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - // Entry 240 - 27F - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, - 0x0022, 0x0022, 0x002a, - }, - }, - { // en-CA - "BengaliMauritianTuvaluanMoldovan", - []uint16{ // 611 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 80 - BF - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry C0 - FF - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 100 - 13F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 140 - 17F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 180 - 1BF - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - // Entry 1C0 - 1FF - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - // Entry 200 - 23F - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - // Entry 240 - 27F - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0020, - }, - }, - { // en-GB - enGBLangStr, - enGBLangIdx, - }, - { // en-IN - "BengaliOriya", - []uint16{ // 124 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x000c, - }, - }, - { // en-NZ - "Māori", - []uint16{ // 103 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, - }, - }, - { // eo - "afaraabĥazaafrikansatwamharaarabaasamaajmaraazerbajĝanabaŝkirabelorusabu" + - "lgarabislamobengalatibetabretonabosniakatalunakorsikaĉeĥakimradanage" + - "rmanamahladzonkogrekaanglaesperantohispanaestonaeŭskapersafinnafiĝia" + - "feroafrancafrisairlandagaelagalegagvaraniaguĝaratahaŭsahebreahindakr" + - "oatahaitia kreolahungaraarmenainterlingvaoindoneziaokcidentaloeskima" + - "islandaitalainuitajapanajavakartvelakazaĥagronlandakmerakanarakoreak" + - "aŝmirakurdakirgizalatinoluksemburgalingalalaŭalitovalatvamalagasamao" + - "riamakedonamalajalamamongolamaratamalajamaltabirmanauranepalanederla" + - "ndanovnorvegadannorvegaokcitanaoromaorijopanĝabapolapaŝtoaportugalak" + - "eĉuaromanĉaburundarumanarusaruandasanskritosindasangoasinhalaslovaka" + - "slovenasamoaŝonasomalaalbanaserbasvaziasotasundasvedasvahilatamilate" + - "luguataĝikatajatigrajaturkmenacvanatongaaturkacongatataraujguraukrai" + - "naurduouzbekavjetnamavolapukovolofaksosajidajorubaĝuangaĉinazuluaibi" + - "bioefikafilipinahavajaklingonanekonata lingvonelingvaĵobrazilportuga" + - "laeŭropportugalaserbo-Kroataĉina simpligitaĉina tradicia", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x000c, 0x000c, 0x0015, 0x0017, 0x001d, 0x001d, - 0x0022, 0x0027, 0x0027, 0x002d, 0x0039, 0x0041, 0x0049, 0x0050, - 0x0057, 0x0057, 0x005e, 0x0064, 0x006b, 0x0071, 0x0079, 0x0079, - 0x0079, 0x0080, 0x0080, 0x0086, 0x0086, 0x0086, 0x008b, 0x008f, - 0x0096, 0x009b, 0x00a1, 0x00a1, 0x00a6, 0x00ab, 0x00b4, 0x00bb, - 0x00c1, 0x00c7, 0x00cc, 0x00cc, 0x00d1, 0x00d7, 0x00dc, 0x00e2, - 0x00e7, 0x00ee, 0x00f3, 0x00f9, 0x0101, 0x010a, 0x010a, 0x0110, - 0x0116, 0x011b, 0x011b, 0x0121, 0x012e, 0x0135, 0x013b, 0x013b, - // Entry 40 - 7F - 0x0147, 0x0150, 0x015b, 0x015b, 0x015b, 0x0161, 0x0161, 0x0168, - 0x016d, 0x0173, 0x0179, 0x017d, 0x0185, 0x0185, 0x0185, 0x0185, - 0x018c, 0x0195, 0x019a, 0x01a0, 0x01a5, 0x01a5, 0x01ad, 0x01b2, - 0x01b2, 0x01b2, 0x01b9, 0x01bf, 0x01ca, 0x01ca, 0x01ca, 0x01d1, - 0x01d6, 0x01dc, 0x01dc, 0x01e1, 0x01e9, 0x01e9, 0x01ef, 0x01f7, - 0x0201, 0x0208, 0x020e, 0x0214, 0x0219, 0x021e, 0x0223, 0x0223, - 0x0229, 0x0229, 0x0233, 0x023d, 0x0247, 0x0247, 0x0247, 0x0247, - 0x024f, 0x024f, 0x0254, 0x0259, 0x0259, 0x0261, 0x0261, 0x0265, - // Entry 80 - BF - 0x026c, 0x0275, 0x027b, 0x0283, 0x028a, 0x0290, 0x0294, 0x029a, - 0x02a3, 0x02a3, 0x02a8, 0x02a8, 0x02ae, 0x02b5, 0x02bc, 0x02c3, - 0x02c8, 0x02cd, 0x02d3, 0x02d9, 0x02de, 0x02e4, 0x02e8, 0x02ed, - 0x02f2, 0x02f9, 0x02ff, 0x0306, 0x030d, 0x0311, 0x0318, 0x0320, - 0x0325, 0x032b, 0x0330, 0x0335, 0x033b, 0x033b, 0x0341, 0x0348, - 0x034d, 0x0353, 0x0353, 0x035b, 0x0363, 0x0363, 0x0369, 0x036e, - 0x0372, 0x0378, 0x037f, 0x0384, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - // Entry C0 - FF - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - // Entry 100 - 13F - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, 0x0394, - 0x0394, 0x0394, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, - 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, - 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, - 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, - // Entry 140 - 17F - 0x039c, 0x039c, 0x039c, 0x039c, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - // Entry 180 - 1BF - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - // Entry 1C0 - 1FF - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - // Entry 200 - 23F - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, - 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03a2, 0x03aa, 0x03aa, 0x03aa, - 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, - 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, 0x03aa, - 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, - 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, - // Entry 240 - 27F - 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, - 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03b9, 0x03c4, 0x03c4, - 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, - 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, 0x03c4, - 0x03d3, 0x03e2, 0x03e2, 0x03ee, 0x03ee, 0x03fe, 0x040c, - }, - }, - { // es - esLangStr, - esLangIdx, - }, - { // es-419 - es419LangStr, - es419LangIdx, - }, - { // es-AR - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-BO - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-CL - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-CO - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-CR - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-DO - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-EC - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-GT - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-HN - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-MX - "euskeralaondebele meridionalpunyabíkiroundisiswatisesotho meridionalsuaj" + - "ilisetswanawolofacehnésarapahobasabamunbhojpurisiksikaneerlandés med" + - "ievalinglés medievalfrancés medievalgan (China)alemán de la alta eda" + - "d mediagriego antiguokejia (China)xiang (China)kabardianokarachay-ba" + - "lkarlushaiirlandés medievalmin nan (Chino)sotho septentrionalpcmárab" + - "e chadianosiriacotetúntuvinianowuukalmyktamazight marroquí estándars" + - "uajili del Congo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x0024, 0x0024, 0x0024, - // Entry 80 - BF - 0x0024, 0x0024, 0x0024, 0x0024, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0033, 0x0045, 0x0045, - 0x0045, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0061, 0x0061, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - // Entry C0 - FF - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0068, - 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, - 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x006c, 0x0071, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - // Entry 100 - 13F - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00b5, 0x00b5, - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00c0, 0x00c0, - 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00eb, 0x00eb, 0x00eb, 0x00eb, - // Entry 140 - 17F - 0x00eb, 0x00eb, 0x00eb, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, - 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, - 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x010f, 0x010f, - 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, - 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, - 0x010f, 0x010f, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - // Entry 180 - 1BF - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, - 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, - 0x0136, 0x0136, 0x0136, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, - 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, - // Entry 1C0 - 1FF - 0x0145, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x016a, - // Entry 200 - 23F - 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016a, 0x016a, 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, - 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, - 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, 0x0177, - 0x0177, 0x0177, 0x0177, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0183, 0x0189, - // Entry 240 - 27F - 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, - 0x0189, 0x0189, 0x0189, 0x0189, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01b7, - }, - }, - { // es-NI - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-PA - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-PE - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-PR - "siswatiwolofacehnésarapahobhojpurigriego antiguosotho septentrional", - []uint16{ // 450 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - // Entry 100 - 13F - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0031, 0x0031, 0x0031, 0x0031, - // Entry 140 - 17F - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - // Entry 180 - 1BF - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - // Entry 1C0 - 1FF - 0x0031, 0x0044, - }, - }, - { // es-PY - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // es-SV - "siswatiwolofacehnésarapahobhojpurigriego antiguosotho septentrional", - []uint16{ // 450 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - // Entry 100 - 13F - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0031, 0x0031, 0x0031, 0x0031, - // Entry 140 - 17F - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - // Entry 180 - 1BF - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - // Entry 1C0 - 1FF - 0x0031, 0x0044, - }, - }, - { // es-US - "gurayatíndebele meridionalromanchekiroundisiswatisesotho meridionalsetch" + - "wanawolofacehnésaltái meridionalarapahobasabamunbhojpurisiksikaburia" + - "tneerlandés medievalinglés medievalfrancés medievalalemán de la alta" + - " edad mediagriego antiguohakkabardianokarachay-balkarlushaiirlandés " + - "medievalnansotho septentrionalpcmárabe chadianosami meridionalsiriac" + - "otetúntuvinianowuukalmykswahili del Congo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry 40 - 7F - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - // Entry 80 - BF - 0x001b, 0x001b, 0x001b, 0x0023, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x0032, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - // Entry C0 - FF - 0x005a, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0076, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x008a, 0x008a, 0x008a, - 0x008a, 0x008a, 0x008a, 0x008a, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - // Entry 100 - 13F - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00e2, 0x00e2, 0x00e2, - 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - // Entry 140 - 17F - 0x00f0, 0x00f0, 0x00f0, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, - 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, - // Entry 180 - 1BF - 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, - 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - // Entry 1C0 - 1FF - 0x0127, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, - 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x014c, - // Entry 200 - 23F - 0x014c, 0x014c, 0x014c, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, 0x015b, - 0x015b, 0x015b, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, - 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, - 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, 0x0171, 0x0174, 0x017a, - // Entry 240 - 27F - 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, - 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, - 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, - 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, - 0x017a, 0x017a, 0x017a, 0x017a, 0x018b, - }, - }, - { // es-VE - "euskeralaopunyabísiswatisuajilisetswanawolofacehnésarapahobhojpurigriego" + - " antiguosotho septentrionaltamazight marroquí estándarsuajili del Co" + - "ngo", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, 0x0012, - // Entry 80 - BF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 100 - 13F - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 140 - 17F - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 180 - 1BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 1C0 - 1FF - 0x0052, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 200 - 23F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 240 - 27F - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0093, - }, - }, - { // et - etLangStr, - etLangIdx, - }, - { // eu - "afareraabkhazieraafrikaansaakaneraamhareraaragoieraarabieraassameraavare" + - "raaimaraazerbaijanerabashkirrerabielorrusierabulgarierabislamabambar" + - "erabengaleratibeterabretoierabosnierakatalanatxetxenierachamorrerako" + - "rsikeratxekieraElizako eslavierachuvasheragalesadanieraalemanadivehi" + - "eradzongkhaeweeragrezieraingelesaesperantoaespainieraestonieraeuskar" + - "apersierafulafinlandierafijierafaroerafrantsesafrisieragaelikoaEskoz" + - "iako gaelikoagalizieraguaranieragujarateramanxerahausahebreerahindia" + - "kroazieraHaitiko kreolerahungarieraarmenierahererainterlinguaindones" + - "ierainterlingueigboeraSichuango yieraidoislandieraitalierainuiteraja" + - "ponierajaverageorgierakikongoakikuyuerakuanyamakazakheragroenlandier" + - "akhemererakannadakoreerakanurierakaxmirerakurduerakomierakornubierak" + - "irgizeralatinaluxenburgeraganderalimburgeralingalalaoseralituanieral" + - "uba-katangeraletonieramalgaxeamarshalleramaorieramazedonieramalabare" + - "ramongolieramaratheramalaysieramalterabirmanieranaurueraiparraldeko " + - "ndebeleeranepalerandongeranederlanderanynorsk norvegierabokmala (Nor" + - "vegia)hegoaldeko ndebeleranavahoeracheweraokzitanieraoromoeraoriyaos" + - "etierapunjaberapolonierapaxtueraportugesakitxuaerretorromanierarundi" + - "eraerrumanieraerrusierakinyaruandasanskritoasardinierasindhiaiparral" + - "deko samierasangoasinhalaeslovakieraeslovenierasamoerashonerasomalie" + - "raalbanieraserbieraswatierahegoaldeko sothoerasundanerasuedieraswahi" + - "liatamilerateluguatajikerathailandieratigriñeraturkmeneratswaneraton" + - "geraturkieratsongeratatareratahitierauigurreraukraineraurduauzbekera" + - "venderavietnameravolapükawaloierawoloferaxhoserayiddishajoruberatxin" + - "erazulueraacehneraacholieraadangmeraadygheraaghemeraainueraaleuterah" + - "egoaldeko altaieraangikeramaputxeaarapahoaasuaasturieraawadhierabali" + - "erabasaabemberabenerabhojpureraedoerasiksikerabodoerabuginerabilenac" + - "ebuerachigerachuukeramarierachoctawtxerokieracheyennerasoraniaseselw" + - "a frantses-kreoleradakoteradargverataiteradogriberazarmabehe-sorabie" + - "radualerafonyi joleradazagaembuaefikeraakajukaewonderafilipinerafona" + - "friulieragagagauzerage’ezgilberteragorontaloaalemana (Suitza)gusiier" + - "agwichʼinhawaiierahiligainonahmonggoi-sorabierahuperaibaneraibibioer" + - "ailokaneraingusheralojbanerangombamachamerakabilerajingpoerakaijikam" + - "berakabardierakatabamakonderaCabo Verdeko kreolakoroakashiakoyra chi" + - "inierakakoakalenjinerakimbunduakomi-permyakerakonkanerakpelleakarach" + - "ayera-balkarerakarelierakurukherashambalerabafierakolonierakumykeral" + - "adineralangieralezgieralakoteralozieraiparraldeko lureratxiluberalun" + - "deraluoeramizoaluhyeramadureramagahieramaithileramakasareramasaieram" + - "okxeramendeeramerueraMauritaniako kreoleramakhuwa-meettoerameteramik" + - "makeraminangkabaueramanipureramohawkeramoreeramudangerazenbait hizku" + - "ntzacreeramiranderaerzieramazandaranderanapolieranameranewareraniasa" + - "niuerakwasierangiembooneranogaieran’koerapedieranuereraankolerapanga" + - "sinanerapampangerapapiamentoapalaueraNigeriako pidginaprusieraquiche" + - "erarapa nuirarotongeraromboeraaromaniarwaerasandaweasakherasamburuer" + - "asantalerangambayerasanguerasizilieraeskozierasenerakoyraboro sennia" + - "tachelhitashanerahegoaldeko samieralule samierainari-samieraskolten " + - "samierasoninkerasrananerasahoasukumerakomoreeraasirieratemneatesoera" + - "tetumatigreaklingoneratok pisinatarokoatumbukeratuvalueratasawaqatuv" + - "eraErdialdeko Atlaseko amazigeraudmurteraumbunduerahizkuntza ezezagu" + - "navaieravunjoawalsererawelaytasamererakalmykerasogerajangbenerayemba" + - "kantoneraamazigera estandarrazuñiaez dago eduki linguistikorikzazaki" + - "aarabiera moderno estandarraAustriako alemanaaleman garaia (Suitza)A" + - "ustraliako ingelesaKanadako ingelesaBritainia Handiko ingelesaAEBko " + - "ingelesaLatinoamerikako espainieraespainiera (Europa)Mexikoko espain" + - "ieraKanadako frantsesaSuitzako frantsesabehe-saxoieraflandrieraBrasi" + - "lgo portugesaportugesa (Europa)moldavieraserbokroazieraKongoko swahi" + - "liatxinera soilduatxinera tradizionala", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0007, 0x0011, 0x0011, 0x001b, 0x0022, 0x002a, 0x0033, - 0x003b, 0x0043, 0x004a, 0x0050, 0x005d, 0x0068, 0x0075, 0x007f, - 0x0086, 0x008f, 0x0098, 0x00a0, 0x00a9, 0x00b1, 0x00b9, 0x00c4, - 0x00ce, 0x00d7, 0x00d7, 0x00df, 0x00f0, 0x00fa, 0x0100, 0x0107, - 0x010e, 0x0117, 0x011f, 0x0125, 0x012d, 0x0135, 0x013f, 0x0149, - 0x0152, 0x0159, 0x0161, 0x0165, 0x0170, 0x0177, 0x017e, 0x0187, - 0x018f, 0x0197, 0x01a9, 0x01b2, 0x01bc, 0x01c6, 0x01cd, 0x01d2, - 0x01da, 0x01e0, 0x01e0, 0x01e9, 0x01f9, 0x0203, 0x020c, 0x0212, - // Entry 40 - 7F - 0x021d, 0x0228, 0x0233, 0x023a, 0x0249, 0x0249, 0x024c, 0x0256, - 0x025e, 0x0266, 0x026f, 0x0275, 0x027e, 0x0286, 0x028f, 0x0297, - 0x02a0, 0x02ad, 0x02b6, 0x02bd, 0x02c4, 0x02cd, 0x02d6, 0x02de, - 0x02e5, 0x02ef, 0x02f8, 0x02fe, 0x030a, 0x0311, 0x031b, 0x0322, - 0x0329, 0x0333, 0x0341, 0x034a, 0x0352, 0x035d, 0x0365, 0x0370, - 0x037a, 0x0384, 0x038d, 0x0397, 0x039e, 0x03a8, 0x03b0, 0x03c6, - 0x03ce, 0x03d6, 0x03e2, 0x03f4, 0x0406, 0x041a, 0x0423, 0x042a, - 0x0435, 0x0435, 0x043d, 0x0442, 0x044a, 0x0453, 0x0453, 0x045c, - // Entry 80 - BF - 0x0464, 0x046d, 0x0473, 0x0483, 0x048b, 0x0496, 0x049f, 0x04aa, - 0x04b4, 0x04be, 0x04c5, 0x04d8, 0x04de, 0x04e5, 0x04f0, 0x04fb, - 0x0502, 0x0509, 0x0512, 0x051b, 0x0523, 0x052b, 0x053e, 0x0547, - 0x054f, 0x0557, 0x055f, 0x0566, 0x056e, 0x057a, 0x0584, 0x058e, - 0x0596, 0x059d, 0x05a5, 0x05ad, 0x05b5, 0x05be, 0x05c7, 0x05d0, - 0x05d5, 0x05dd, 0x05e4, 0x05ee, 0x05f7, 0x05ff, 0x0607, 0x060e, - 0x0616, 0x061e, 0x061e, 0x0625, 0x062c, 0x0634, 0x063d, 0x0646, - 0x064e, 0x064e, 0x064e, 0x0656, 0x065d, 0x065d, 0x065d, 0x0665, - // Entry C0 - FF - 0x0665, 0x0678, 0x0678, 0x0680, 0x0680, 0x0688, 0x0688, 0x0690, - 0x0690, 0x0690, 0x0690, 0x0690, 0x0690, 0x0694, 0x0694, 0x069d, - 0x069d, 0x06a6, 0x06a6, 0x06ad, 0x06ad, 0x06b2, 0x06b2, 0x06b2, - 0x06b2, 0x06b2, 0x06b9, 0x06b9, 0x06bf, 0x06bf, 0x06bf, 0x06bf, - 0x06c9, 0x06c9, 0x06cf, 0x06cf, 0x06cf, 0x06d8, 0x06d8, 0x06d8, - 0x06d8, 0x06d8, 0x06df, 0x06df, 0x06df, 0x06e7, 0x06e7, 0x06ed, - 0x06ed, 0x06ed, 0x06ed, 0x06ed, 0x06ed, 0x06ed, 0x06f4, 0x06fb, - 0x06fb, 0x06fb, 0x0703, 0x070a, 0x070a, 0x0711, 0x0711, 0x071b, - // Entry 100 - 13F - 0x0725, 0x072c, 0x072c, 0x072c, 0x072c, 0x0745, 0x0745, 0x074d, - 0x0755, 0x075c, 0x075c, 0x075c, 0x0765, 0x0765, 0x076a, 0x076a, - 0x0778, 0x0778, 0x077f, 0x077f, 0x078b, 0x078b, 0x0791, 0x0796, - 0x079d, 0x079d, 0x079d, 0x07a4, 0x07a4, 0x07a4, 0x07a4, 0x07ac, - 0x07ac, 0x07ac, 0x07b6, 0x07b6, 0x07ba, 0x07ba, 0x07ba, 0x07ba, - 0x07ba, 0x07ba, 0x07ba, 0x07c3, 0x07c5, 0x07ce, 0x07ce, 0x07ce, - 0x07ce, 0x07ce, 0x07d5, 0x07df, 0x07df, 0x07df, 0x07df, 0x07df, - 0x07df, 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07f9, 0x07f9, 0x07f9, - // Entry 140 - 17F - 0x0801, 0x080a, 0x080a, 0x080a, 0x0813, 0x0813, 0x081e, 0x081e, - 0x0823, 0x0830, 0x0830, 0x0836, 0x083d, 0x0846, 0x084f, 0x0858, - 0x0858, 0x0858, 0x0861, 0x0867, 0x0870, 0x0870, 0x0870, 0x0870, - 0x0870, 0x0878, 0x0881, 0x0886, 0x088d, 0x088d, 0x0897, 0x0897, - 0x089d, 0x08a6, 0x08b9, 0x08b9, 0x08be, 0x08be, 0x08c4, 0x08c4, - 0x08d3, 0x08d3, 0x08d3, 0x08d8, 0x08e3, 0x08ec, 0x08fb, 0x0904, - 0x0904, 0x090b, 0x0920, 0x0920, 0x0920, 0x0929, 0x0932, 0x093c, - 0x0943, 0x094c, 0x0954, 0x0954, 0x095c, 0x0964, 0x0964, 0x0964, - // Entry 180 - 1BF - 0x096c, 0x096c, 0x096c, 0x096c, 0x0974, 0x0974, 0x0974, 0x0974, - 0x097b, 0x098d, 0x098d, 0x0996, 0x0996, 0x099d, 0x09a3, 0x09a8, - 0x09af, 0x09af, 0x09af, 0x09b7, 0x09b7, 0x09c0, 0x09ca, 0x09d4, - 0x09d4, 0x09dc, 0x09dc, 0x09e3, 0x09e3, 0x09eb, 0x09f2, 0x0a07, - 0x0a07, 0x0a18, 0x0a1e, 0x0a27, 0x0a35, 0x0a35, 0x0a3f, 0x0a48, - 0x0a4f, 0x0a4f, 0x0a58, 0x0a69, 0x0a6f, 0x0a78, 0x0a78, 0x0a78, - 0x0a78, 0x0a7f, 0x0a8d, 0x0a8d, 0x0a96, 0x0a9c, 0x0a9c, 0x0aa4, - 0x0aa9, 0x0aaf, 0x0aaf, 0x0ab7, 0x0ac3, 0x0acb, 0x0acb, 0x0acb, - // Entry 1C0 - 1FF - 0x0ad4, 0x0adb, 0x0ae2, 0x0ae2, 0x0ae2, 0x0aea, 0x0aea, 0x0aea, - 0x0aea, 0x0aea, 0x0af7, 0x0af7, 0x0b01, 0x0b0c, 0x0b14, 0x0b14, - 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b25, - 0x0b25, 0x0b2d, 0x0b2d, 0x0b36, 0x0b36, 0x0b36, 0x0b3e, 0x0b49, - 0x0b49, 0x0b49, 0x0b51, 0x0b51, 0x0b51, 0x0b51, 0x0b51, 0x0b59, - 0x0b5f, 0x0b67, 0x0b6e, 0x0b6e, 0x0b78, 0x0b78, 0x0b81, 0x0b81, - 0x0b8b, 0x0b93, 0x0b9c, 0x0ba5, 0x0ba5, 0x0ba5, 0x0ba5, 0x0bab, - 0x0bab, 0x0bab, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bc5, 0x0bcc, 0x0bcc, - // Entry 200 - 23F - 0x0bcc, 0x0bcc, 0x0bcc, 0x0bde, 0x0bea, 0x0bf7, 0x0c06, 0x0c0f, - 0x0c0f, 0x0c18, 0x0c18, 0x0c1d, 0x0c1d, 0x0c25, 0x0c25, 0x0c25, - 0x0c2e, 0x0c2e, 0x0c36, 0x0c36, 0x0c36, 0x0c3c, 0x0c43, 0x0c43, - 0x0c49, 0x0c4f, 0x0c4f, 0x0c4f, 0x0c4f, 0x0c59, 0x0c59, 0x0c59, - 0x0c59, 0x0c59, 0x0c63, 0x0c63, 0x0c6a, 0x0c6a, 0x0c6a, 0x0c6a, - 0x0c73, 0x0c7c, 0x0c84, 0x0c8a, 0x0ca7, 0x0cb0, 0x0cb0, 0x0cba, - 0x0ccd, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, - 0x0cd9, 0x0ce2, 0x0ce9, 0x0cf1, 0x0cf1, 0x0cf1, 0x0cf1, 0x0cfa, - // Entry 240 - 27F - 0x0cfa, 0x0d00, 0x0d00, 0x0d00, 0x0d0a, 0x0d0f, 0x0d0f, 0x0d18, - 0x0d18, 0x0d18, 0x0d18, 0x0d18, 0x0d2c, 0x0d32, 0x0d4e, 0x0d55, - 0x0d70, 0x0d70, 0x0d81, 0x0d97, 0x0dab, 0x0dbc, 0x0dd6, 0x0de4, - 0x0dfe, 0x0e11, 0x0e24, 0x0e24, 0x0e36, 0x0e48, 0x0e55, 0x0e5f, - 0x0e71, 0x0e83, 0x0e8d, 0x0e9b, 0x0eab, 0x0eba, 0x0ece, - }, - }, - { // ewo - "Ǹkɔ́bɔ akánǸkɔ́bɔ amáriaǸkɔ́bɔ arábiaǸkɔ́bɔ belarúsianǸkɔ́bɔ buləgárianǸ" + - "kɔ́bɔ bɛngalíǸkɔ́bɔ tsɛ́gǸkɔ́bɔ ndzámanǸkɔ́bɔ gəlɛ́gǸkɔ́bɔ éngəlísǹk" + - "ɔ́bɔ kpənyáǹkɔ́bɔ fɛ́rəsianǸkɔ́bɔ fulɛnsíǸkɔ́bɔ aúsáǸkɔ́bɔ hindíǸkɔ" + - "́bɔ ungáríanǸkɔ́bɔ ɛndonésianǸkɔ́bɔ ibóǸkɔ́bɔ etáliɛnǸkɔ́bɔ hapɔ́nǸ" + - "kɔ́bɔ havanísǸkɔ́bɔ kəmɛ́rǸkɔ́bɔ koréanǸkɔ́bɔ malɛ́sianǸkɔ́bɔ birəmá" + - "nǹkɔ́bɔ nefálianǸkɔ́bɔ nɛrəlándíaǹkɔ́bɔ funəhábiaǹkɔ́bɔ fólisǹkɔ́bɔ " + - "fɔtugɛ́sńkɔ́bɔ románíaǹkɔ́bɔ rúsianǹkɔ́bɔ ruwandáǹkɔ́bɔ somáliaǹkɔ́b" + - "ɔ suwɛ́dǹkɔ́bɔ tamílǹkɔ́bɔ táilanǹkɔ́bɔ túrəkiǹkɔ́bɔ ukeléniaǹkɔ́bɔ" + - " urudúǹkɔ́bɔ hiɛdənámǹkɔ́bɔ yorúbaǸkɔ́bɔ tsainísǹkɔ́bɔ zulúewondo", - []uint16{ // 288 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0022, 0x0022, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x004a, 0x0061, - 0x0061, 0x0061, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x009a, 0x009a, 0x009a, 0x009a, 0x00ae, 0x00c3, 0x00c3, 0x00d6, - 0x00d6, 0x00d6, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0112, - 0x0112, 0x0123, 0x0123, 0x0123, 0x0123, 0x0138, 0x0138, 0x0138, - // Entry 40 - 7F - 0x0138, 0x014f, 0x014f, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - 0x0172, 0x0172, 0x0185, 0x0198, 0x0198, 0x0198, 0x0198, 0x0198, - 0x0198, 0x0198, 0x01ac, 0x01ac, 0x01be, 0x01be, 0x01be, 0x01be, - 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, - 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, - 0x01be, 0x01be, 0x01be, 0x01d4, 0x01d4, 0x01e8, 0x01e8, 0x01e8, - 0x01fc, 0x01fc, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, - 0x0215, 0x0215, 0x0215, 0x0215, 0x0215, 0x022b, 0x022b, 0x023c, - // Entry 80 - BF - 0x023c, 0x0252, 0x0252, 0x0252, 0x0252, 0x0266, 0x0278, 0x028b, - 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, - 0x028b, 0x028b, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, 0x029e, - 0x02b1, 0x02b1, 0x02c2, 0x02c2, 0x02c2, 0x02d4, 0x02d4, 0x02d4, - 0x02d4, 0x02d4, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02e7, 0x02fb, - 0x030c, 0x030c, 0x030c, 0x0322, 0x0322, 0x0322, 0x0322, 0x0322, - 0x0322, 0x0334, 0x0334, 0x0347, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - // Entry C0 - FF - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - // Entry 100 - 13F - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x035d, - }, - }, - { // fa - faLangStr, - faLangIdx, - }, - { // fa-AF - "افریکانساسامیآذربایجانیباشقیریمالدیویهسپانویفنلندیآیرلندیکروشیاییاندونیز" + - "یاییآیسلندیایتالویجاپانیکوریاییقرغزیمغلینیپالیهالندینارویژیپولندیپر" + - "تگالیالبانیاییسویدنیسواحلیتاجکیکردی سورانی", - []uint16{ // 258 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x001a, 0x001a, 0x001a, 0x002e, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0064, 0x0064, 0x0064, 0x0064, - 0x0064, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - // Entry 40 - 7F - 0x0082, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x00a6, - 0x00b4, 0x00b4, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, - 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00ec, 0x00ec, 0x00f8, 0x00f8, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0112, - // Entry 80 - BF - 0x0112, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0120, 0x0120, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x013e, 0x014a, 0x014a, 0x014a, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - // Entry C0 - FF - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - // Entry 100 - 13F - 0x0154, 0x0169, - }, - }, - { // ff - "AkaanAmarikAarabeereBelaruuseBulgariireBengaliCekkereDocceereGerkeEngele" + - "ereEspañolPerseerePulaarFarayseereHawsaŋkooreHinndiHongariireEndones" + - "iireIgibooreItaliyeereSaponeereSawaneereKemeereKoreereMalayeereBurme" + - "eseNepaaleereDacceerePunjabeerePoloneerePurtugeereRomaneereRiisRuwaa" + - "nndeereSomaliiSweedeereTamilTaayTurkeereUkereneereUrduWiyetnameereYo" + - "rrubaaSinuwaareSuluŋkoore", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000b, 0x000b, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001d, 0x0027, - 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x003d, 0x003d, 0x003d, 0x003d, 0x0042, 0x004b, 0x004b, 0x0053, - 0x0053, 0x0053, 0x005b, 0x0061, 0x0061, 0x0061, 0x0061, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0077, - 0x0077, 0x007d, 0x007d, 0x007d, 0x007d, 0x0087, 0x0087, 0x0087, - // Entry 40 - 7F - 0x0087, 0x0092, 0x0092, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x00a4, 0x00a4, 0x00ad, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00c4, 0x00c4, 0x00c4, 0x00c4, - 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, - 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, - 0x00c4, 0x00c4, 0x00c4, 0x00cd, 0x00cd, 0x00d5, 0x00d5, 0x00d5, - 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00f1, 0x00f1, 0x00fa, - // Entry 80 - BF - 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104, 0x010d, 0x0111, 0x011d, - 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, - 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x012d, 0x012d, 0x0132, 0x0132, 0x0132, 0x0136, 0x0136, 0x0136, - 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x0148, - 0x014c, 0x014c, 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0160, 0x0160, 0x0169, 0x0174, - }, - }, - { // fi - fiLangStr, - fiLangIdx, - }, - { // fil - filLangStr, - filLangIdx, - }, - { // fo - "afarabkhasisktafrikaansakanamharisktaragonisktarabisktassamesisktavarisk" + - "taymaraaserbajdsjansktbashkirhvitarussisktbulgarsktbislamabambaraben" + - "galskttibetsktbretonsktbosnisktkatalanitjetjensktchamorrokorsikanskt" + - "kekkisktkirkju slávisktchuvashwalisisktdanskttýsktdivehidzongkhaeweg" + - "riksktensktesperantospansktestisktbaskisktpersisktfulahfinsktfijimál" + - "føroysktfransktvestur frísisktírsktskotskt gælisktgalisisktguaranigu" + - "jaratimanxhausahebraiskthindikroatiskthaitisktungarsktarmensktherero" + - "interlinguaindonesisktinterlingueigbosichuan yiidoíslendsktitalsktin" + - "uktitutjapansktjavansktgeorgisktkikuyukuanyamakazakhkalaallisutkhmer" + - "kannadakoreansktkanurikashmirikurdisktkomicornisktkyrgyzlatínluksemb" + - "orgsktgandalimburgisktlingalalaosktlitavisktluba-katangalettisktmala" + - "gassisktmarshallesisktmaorimakedónsktmalayalammongolsktmarathimalaii" + - "sktmaltisktburmesisktnaurunorður ndebelenepalsktndongahálendsktnýnor" + - "sktnorskt bókmálsuður ndebelenavajonyanjaoccitansktoromooriyaossetis" + - "ktpunjabipólsktpashtoportugiskisktquechuaretoromansktrundirumensktru" + - "ssisktkinyarwandasanskritsardisktsindhinorður sámisktsangosingalesis" + - "ktslovakisktslovensktsámoisktshonasomalisktalbansktserbisktswatiskts" + - "esothosundanesisktsvensktswahilitamilskttelugutajiktailendskttigriny" + - "aturkmenskttswanatongansktturkiskttsongatatartahitisktuyghurukrainsk" + - "turduusbekisktvendavjetnamesisktvolapykkwalloonwolofxhosajiddisktyor" + - "ubakinesisktsuluachineseadangmeadygheaghemainualeutsuður altaiangika" + - "mapuchearapahoasuasturiansktawadhibalinesisktbasaabembabenavestur ba" + - "lochibhojpuribinisiksikabodobakossibuginesisktblincebuanochigachuuke" + - "semarichoctawcherokeecheyennemiðkurdisktseselwa creole fransktdakota" + - "dargwataitadogribsarmalágt sorbiandualajola-fonyidazagaembuefikekaju" + - "kewondofilipinisktfonfriulisktgagagauzgan kinesisktgeezkiribatisktgo" + - "rontalotýskt (Sveis)gusiigwich’inhakka kinesiskthawaiianskthiligayno" + - "nhmongovara sorbianxiang kinesiskthupaibanibibioilokoinguishlojbanng" + - "ombamachamekabylekachinjjukambakabardinskttyapmakondegrønhøvdaoyggja" + - "rsktkorokhasikoyra chiinikakokalenjinkimbundukomi-permyakkonkanikpel" + - "lekarachay-balkarkarelsktkurukhshambalabafiakølnsktkumykladinolangil" + - "ahndalezghianlakotalozinorður luriluba-lulualundaluomizoluyiamadures" + - "isktmagahimaithilimakasarmasaimokshamendemerumorisyenmakhuwa-meettom" + - "etaʼmicmacminangkabaumanupurimohawkmossimundangymisk málcreekmirande" + - "siskterzyamazanderanimin nan kinesisktnapolitansktnamalágt týsktnewa" + - "riniasniueankwasiongiemboonnogainʼkonorður sothonuernyankolepangasin" + - "anpampangapapiamentopalauannigeriskt pidginprusslansktkʼicheʼrapanui" + - "rarotongisktromboaromensktrwasandawesakhasamburusantalingambaysangus" + - "isilansktskotsktsuður kurdisktsenakoyraboro sennitachelhitshansuður " + - "sámisktlule sámisktinari samiskolt sámisktsoninkesranan tongosahosuk" + - "umakomorisktsyriactimnetesotetumtigreklingonskttok pisintarokotumbuk" + - "atuvalutasawaqtuvinianmiðatlasfjøll tamazightudmurtumbunduókent málv" + - "aivunjowalserwolayttawaraywarlpiriwu kinesisktkalmyksogayangbenyemba" + - "kantonesisktvanligt marokanskt tamazightzunieinki málsligt innihaldz" + - "azanútíðar vanligt arabiskthøgt týskt (Sveis)lágt saksisktflamsktpor" + - "tugiskiskt (Brasilia)portugiskiskt (Evropa)moldavisktserbokroatisktk" + - "ongo svahilieinkult kinesisktvanligt kinesiskt", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x000e, 0x0017, 0x001b, 0x0024, 0x002e, - 0x0036, 0x0041, 0x0049, 0x004f, 0x005e, 0x0065, 0x0072, 0x007b, - 0x0082, 0x0089, 0x0092, 0x009a, 0x00a3, 0x00ab, 0x00b3, 0x00bd, - 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00e8, 0x00ef, 0x00f8, 0x00fe, - 0x0104, 0x010a, 0x0112, 0x0115, 0x011c, 0x0121, 0x012a, 0x0131, - 0x0138, 0x0140, 0x0148, 0x014d, 0x0153, 0x015b, 0x0164, 0x016b, - 0x017b, 0x0181, 0x0191, 0x019a, 0x01a1, 0x01a9, 0x01ad, 0x01b2, - 0x01bb, 0x01c0, 0x01c0, 0x01c9, 0x01d1, 0x01d9, 0x01e1, 0x01e7, - // Entry 40 - 7F - 0x01f2, 0x01fd, 0x0208, 0x020c, 0x0216, 0x0216, 0x0219, 0x0223, - 0x022a, 0x0233, 0x023b, 0x0243, 0x024c, 0x024c, 0x0252, 0x025a, - 0x0260, 0x026b, 0x0270, 0x0277, 0x0280, 0x0286, 0x028e, 0x0296, - 0x029a, 0x02a2, 0x02a8, 0x02ae, 0x02bb, 0x02c0, 0x02cb, 0x02d2, - 0x02d8, 0x02e1, 0x02ed, 0x02f5, 0x0301, 0x030f, 0x0314, 0x031f, - 0x0328, 0x0331, 0x0338, 0x0341, 0x0349, 0x0353, 0x0358, 0x0367, - 0x036f, 0x0375, 0x037f, 0x0388, 0x0397, 0x03a5, 0x03ab, 0x03b1, - 0x03bb, 0x03bb, 0x03c0, 0x03c5, 0x03ce, 0x03d5, 0x03d5, 0x03dc, - // Entry 80 - BF - 0x03e2, 0x03ef, 0x03f6, 0x0402, 0x0407, 0x040f, 0x0417, 0x0422, - 0x042a, 0x0432, 0x0438, 0x0448, 0x044d, 0x0459, 0x0463, 0x046c, - 0x0475, 0x047a, 0x0483, 0x048b, 0x0493, 0x049b, 0x04a2, 0x04ae, - 0x04b5, 0x04bc, 0x04c4, 0x04ca, 0x04cf, 0x04d9, 0x04e1, 0x04eb, - 0x04f1, 0x04fa, 0x0502, 0x0508, 0x050d, 0x0516, 0x051c, 0x0525, - 0x0529, 0x0532, 0x0537, 0x0544, 0x054c, 0x0553, 0x0558, 0x055d, - 0x0565, 0x056b, 0x056b, 0x0574, 0x0578, 0x0580, 0x0580, 0x0587, - 0x058d, 0x058d, 0x058d, 0x0592, 0x0596, 0x0596, 0x0596, 0x059b, - // Entry C0 - FF - 0x059b, 0x05a7, 0x05a7, 0x05ad, 0x05ad, 0x05b4, 0x05b4, 0x05bb, - 0x05bb, 0x05bb, 0x05bb, 0x05bb, 0x05bb, 0x05be, 0x05be, 0x05c9, - 0x05c9, 0x05cf, 0x05cf, 0x05da, 0x05da, 0x05df, 0x05df, 0x05df, - 0x05df, 0x05df, 0x05e4, 0x05e4, 0x05e8, 0x05e8, 0x05e8, 0x05f6, - 0x05fe, 0x05fe, 0x0602, 0x0602, 0x0602, 0x0609, 0x0609, 0x0609, - 0x0609, 0x0609, 0x060d, 0x0614, 0x0614, 0x061f, 0x061f, 0x0623, - 0x0623, 0x0623, 0x0623, 0x0623, 0x0623, 0x0623, 0x062a, 0x062f, - 0x062f, 0x062f, 0x0637, 0x063b, 0x063b, 0x0642, 0x0642, 0x064a, - // Entry 100 - 13F - 0x0652, 0x065e, 0x065e, 0x065e, 0x065e, 0x0674, 0x0674, 0x067a, - 0x0680, 0x0685, 0x0685, 0x0685, 0x068b, 0x068b, 0x0690, 0x0690, - 0x069d, 0x069d, 0x06a2, 0x06a2, 0x06ac, 0x06ac, 0x06b2, 0x06b6, - 0x06ba, 0x06ba, 0x06ba, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x06c6, - 0x06c6, 0x06c6, 0x06d1, 0x06d1, 0x06d4, 0x06d4, 0x06d4, 0x06d4, - 0x06d4, 0x06d4, 0x06d4, 0x06dd, 0x06df, 0x06e5, 0x06f2, 0x06f2, - 0x06f2, 0x06f2, 0x06f6, 0x0701, 0x0701, 0x0701, 0x0701, 0x0701, - 0x0701, 0x070a, 0x070a, 0x070a, 0x070a, 0x0718, 0x0718, 0x0718, - // Entry 140 - 17F - 0x071d, 0x0727, 0x0727, 0x0736, 0x0741, 0x0741, 0x074b, 0x074b, - 0x0750, 0x075d, 0x076c, 0x0770, 0x0774, 0x077a, 0x077f, 0x0786, - 0x0786, 0x0786, 0x078c, 0x0792, 0x0799, 0x0799, 0x0799, 0x0799, - 0x0799, 0x079f, 0x07a5, 0x07a8, 0x07ad, 0x07ad, 0x07b8, 0x07b8, - 0x07bc, 0x07c3, 0x07d8, 0x07d8, 0x07dc, 0x07dc, 0x07e1, 0x07e1, - 0x07ed, 0x07ed, 0x07ed, 0x07f1, 0x07f9, 0x0801, 0x080d, 0x0814, - 0x0814, 0x081a, 0x0829, 0x0829, 0x0829, 0x0831, 0x0837, 0x083f, - 0x0844, 0x084c, 0x0851, 0x0851, 0x0857, 0x085c, 0x0862, 0x0862, - // Entry 180 - 1BF - 0x086a, 0x086a, 0x086a, 0x086a, 0x0870, 0x0870, 0x0870, 0x0870, - 0x0874, 0x0880, 0x0880, 0x088a, 0x088a, 0x088f, 0x0892, 0x0896, - 0x089b, 0x089b, 0x089b, 0x08a6, 0x08a6, 0x08ac, 0x08b4, 0x08bb, - 0x08bb, 0x08c0, 0x08c0, 0x08c6, 0x08c6, 0x08cb, 0x08cf, 0x08d7, - 0x08d7, 0x08e5, 0x08eb, 0x08f1, 0x08fc, 0x08fc, 0x0904, 0x090a, - 0x090f, 0x090f, 0x0916, 0x0920, 0x0925, 0x0931, 0x0931, 0x0931, - 0x0931, 0x0936, 0x0941, 0x0952, 0x095e, 0x0962, 0x096e, 0x0974, - 0x0978, 0x097e, 0x097e, 0x0984, 0x098d, 0x0992, 0x0992, 0x0992, - // Entry 1C0 - 1FF - 0x0997, 0x09a4, 0x09a8, 0x09a8, 0x09a8, 0x09b0, 0x09b0, 0x09b0, - 0x09b0, 0x09b0, 0x09ba, 0x09ba, 0x09c2, 0x09cc, 0x09d3, 0x09d3, - 0x09e3, 0x09e3, 0x09e3, 0x09e3, 0x09e3, 0x09e3, 0x09e3, 0x09e3, - 0x09e3, 0x09ee, 0x09ee, 0x09f7, 0x09f7, 0x09f7, 0x09fe, 0x0a0a, - 0x0a0a, 0x0a0a, 0x0a0f, 0x0a0f, 0x0a0f, 0x0a0f, 0x0a0f, 0x0a18, - 0x0a1b, 0x0a22, 0x0a27, 0x0a27, 0x0a2e, 0x0a2e, 0x0a35, 0x0a35, - 0x0a3c, 0x0a41, 0x0a4b, 0x0a52, 0x0a52, 0x0a61, 0x0a61, 0x0a65, - 0x0a65, 0x0a65, 0x0a74, 0x0a74, 0x0a74, 0x0a7d, 0x0a81, 0x0a81, - // Entry 200 - 23F - 0x0a81, 0x0a81, 0x0a81, 0x0a90, 0x0a9d, 0x0aa7, 0x0ab5, 0x0abc, - 0x0abc, 0x0ac8, 0x0ac8, 0x0acc, 0x0acc, 0x0ad2, 0x0ad2, 0x0ad2, - 0x0adb, 0x0adb, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae6, 0x0aea, 0x0aea, - 0x0aef, 0x0af4, 0x0af4, 0x0af4, 0x0af4, 0x0afe, 0x0afe, 0x0afe, - 0x0afe, 0x0afe, 0x0b07, 0x0b07, 0x0b0d, 0x0b0d, 0x0b0d, 0x0b0d, - 0x0b14, 0x0b1a, 0x0b21, 0x0b29, 0x0b42, 0x0b48, 0x0b48, 0x0b4f, - 0x0b5a, 0x0b5d, 0x0b5d, 0x0b5d, 0x0b5d, 0x0b5d, 0x0b5d, 0x0b5d, - 0x0b62, 0x0b68, 0x0b70, 0x0b75, 0x0b75, 0x0b7d, 0x0b89, 0x0b8f, - // Entry 240 - 27F - 0x0b8f, 0x0b93, 0x0b93, 0x0b93, 0x0b9a, 0x0b9f, 0x0b9f, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bab, 0x0bc7, 0x0bcb, 0x0be3, 0x0be7, - 0x0c02, 0x0c02, 0x0c02, 0x0c16, 0x0c16, 0x0c16, 0x0c16, 0x0c16, - 0x0c16, 0x0c16, 0x0c16, 0x0c16, 0x0c16, 0x0c16, 0x0c24, 0x0c2b, - 0x0c43, 0x0c59, 0x0c63, 0x0c71, 0x0c7e, 0x0c8f, 0x0ca0, - }, - }, - { // fr - frLangStr, - frLangIdx, - }, - { // fr-BE - "gujaratisame du Nordfranco-provençalancien haut-allemandgotiqueaosame du" + - " Sudsame de Lulesame d’Inarisame skolt", - []uint16{ // 519 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - // Entry 40 - 7F - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - // Entry 80 - BF - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 100 - 13F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - // Entry 140 - 17F - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - // Entry 180 - 1BF - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - // Entry 1C0 - 1FF - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - // Entry 200 - 23F - 0x0042, 0x0042, 0x0042, 0x004d, 0x0059, 0x0067, 0x0071, - }, - }, - { // fr-CA - frCALangStr, - frCALangIdx, - }, - { // fr-CH - "goudjratiallemand de Pennsylvaniekurde méridional", - []uint16{ // 502 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry 40 - 7F - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry 80 - BF - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry C0 - FF - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry 100 - 13F - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry 140 - 17F - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry 180 - 1BF - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry 1C0 - 1FF - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0032, - }, - }, - { // fur - "afarabcazianavestanafrikaansamaricaragonêsarapassamêsavaraymaràazerbaija" + - "nibielorùsbulgarbengalêstibetanbretonbosniaccatalancecenchamorrocors" + - "creececsclâf de glesiegalêsdanêstodescgrêcinglêsesperantospagnûlesto" + - "nbascpersianfulahfinlandêsfizianfaroêsfrancêsfrisiangaelic irlandêsg" + - "aelic scozêsgalizianguaranìgujaratimanxebraichindicravuathaitianongj" + - "arêsarmenindonesianigboinupiaqidoislandêstalianinuktitutgjaponêsgjeo" + - "rgjiankazackalaallisutkhmerkannadacoreancurdcornualiêslatinlussembur" + - "ghêslimburghêslingalalaolituanletonmalagasymaorimacedonmalayalammong" + - "ulmarathimalêsmaltêsndebele setentrionâlnepalêsolandêsnorvegjês nyno" + - "rsknorvegjês bokmålnavajoocitanoriyaoseticpunjabipolacpashtoportughê" + - "squechuarumançromenrussanscritsardegnûlsindhisami setentrionâlsangos" + - "inalêsslovacslovensamoansomalalbanêsserpswatisotho meridionâlsundanê" + - "ssvedêsswahilitamiltelegutagicthaiturcmenturctartartahitianuigurucra" + - "inurduuzbecvendavietnamitevalonwolofxhosayiddishyorubacinêszuluvieri" + - " inglêsaramaicasturiancopticsclâfvieri egjizianfilipinvieri francêsf" + - "urlangoticvieri grêcladinlenghis multiplismirandêsnapoletanbas todes" + - "cvieri norvegjêssotho setentrionâlturc otomanpapiamentovieri persian" + - "vieri provenzâlsicilianscozêsvieri irlandêssumerictetumindeterminade" + - "todesc de Austriealt todesc de Svuizareinglês australianinglês canad" + - "êsinglês britanicingles merecanspagnûl de Americhe Latinespagnûl ib" + - "ericfrancês dal Canadefrancês de Svuizareflamantportughês brasilianp" + - "ortughês ibericmoldâfcinês semplificâtcinês tradizionâl", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x001c, 0x0022, 0x002b, - 0x002f, 0x0037, 0x003b, 0x0042, 0x004d, 0x004d, 0x0056, 0x005c, - 0x005c, 0x005c, 0x0065, 0x006c, 0x0072, 0x0079, 0x0080, 0x0085, - 0x008d, 0x0091, 0x0095, 0x0098, 0x00a8, 0x00a8, 0x00ae, 0x00b4, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00bf, 0x00c6, 0x00cf, 0x00d7, - 0x00dc, 0x00e0, 0x00e7, 0x00ec, 0x00f6, 0x00fc, 0x0103, 0x010b, - 0x0112, 0x0122, 0x0130, 0x0138, 0x0140, 0x0148, 0x014c, 0x014c, - 0x0152, 0x0157, 0x0157, 0x015e, 0x0165, 0x016e, 0x0173, 0x0173, - // Entry 40 - 7F - 0x0173, 0x017d, 0x017d, 0x0181, 0x0181, 0x0188, 0x018b, 0x0194, - 0x019a, 0x01a3, 0x01ac, 0x01ac, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01bb, 0x01c6, 0x01cb, 0x01d2, 0x01d8, 0x01d8, 0x01d8, 0x01dc, - 0x01dc, 0x01e7, 0x01e7, 0x01ec, 0x01fa, 0x01fa, 0x0205, 0x020c, - 0x020f, 0x0215, 0x0215, 0x021a, 0x0222, 0x0222, 0x0227, 0x022e, - 0x0237, 0x023d, 0x0244, 0x024a, 0x0251, 0x0251, 0x0251, 0x0266, - 0x026e, 0x026e, 0x0276, 0x0288, 0x029a, 0x029a, 0x02a0, 0x02a0, - 0x02a6, 0x02a6, 0x02a6, 0x02ab, 0x02b1, 0x02b8, 0x02b8, 0x02bd, - // Entry 80 - BF - 0x02c3, 0x02cd, 0x02d4, 0x02db, 0x02db, 0x02e0, 0x02e3, 0x02e3, - 0x02eb, 0x02f5, 0x02fb, 0x030d, 0x0312, 0x031a, 0x0320, 0x0326, - 0x032c, 0x032c, 0x0331, 0x0339, 0x033d, 0x0342, 0x0353, 0x035c, - 0x0363, 0x036a, 0x036f, 0x0375, 0x037a, 0x037e, 0x037e, 0x0385, - 0x0385, 0x0385, 0x0389, 0x0389, 0x038f, 0x0397, 0x039c, 0x03a2, - 0x03a6, 0x03ab, 0x03b0, 0x03ba, 0x03ba, 0x03bf, 0x03c4, 0x03c9, - 0x03d0, 0x03d6, 0x03d6, 0x03dc, 0x03e0, 0x03e0, 0x03e0, 0x03e0, - 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e0, - // Entry C0 - FF - 0x03e0, 0x03e0, 0x03ed, 0x03ed, 0x03f4, 0x03f4, 0x03f4, 0x03f4, - 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03f4, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - // Entry 100 - 13F - 0x03fc, 0x03fc, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, 0x0402, - 0x0402, 0x0402, 0x0402, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, - 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, 0x0408, - 0x0408, 0x0408, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, 0x0416, - 0x0416, 0x0416, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x042b, - 0x042b, 0x042b, 0x042b, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, - 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, 0x0431, - 0x0431, 0x0431, 0x0436, 0x0436, 0x0441, 0x0441, 0x0441, 0x0441, - // Entry 140 - 17F - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, 0x0441, - 0x0441, 0x0441, 0x0441, 0x0441, 0x0446, 0x0446, 0x0446, 0x0446, - // Entry 180 - 1BF - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, 0x0446, - 0x0446, 0x0446, 0x0446, 0x0457, 0x0457, 0x0460, 0x0460, 0x0460, - 0x0460, 0x0460, 0x0460, 0x0460, 0x0469, 0x0469, 0x0473, 0x0473, - 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, 0x0473, 0x0483, 0x0483, - // Entry 1C0 - 1FF - 0x0483, 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, 0x0496, - 0x0496, 0x04a1, 0x04a1, 0x04a1, 0x04a1, 0x04ab, 0x04ab, 0x04ab, - 0x04ab, 0x04ab, 0x04ab, 0x04b8, 0x04b8, 0x04b8, 0x04b8, 0x04b8, - 0x04b8, 0x04b8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, - 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, - 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, 0x04c8, - 0x04c8, 0x04c8, 0x04d0, 0x04d7, 0x04d7, 0x04d7, 0x04d7, 0x04d7, - 0x04d7, 0x04d7, 0x04d7, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, - // Entry 200 - 23F - 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, - 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04e6, 0x04ed, - 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, 0x04ed, - 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, - 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, - 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, 0x04f2, - 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, - 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, - // Entry 240 - 27F - 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, - 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, 0x04ff, - 0x04ff, 0x04ff, 0x0510, 0x0526, 0x0538, 0x0548, 0x0558, 0x0566, - 0x0581, 0x0590, 0x0590, 0x0590, 0x05a3, 0x05b7, 0x05b7, 0x05be, - 0x05d2, 0x05e3, 0x05ea, 0x05ea, 0x05ea, 0x05fd, 0x0610, - }, - }, - { // fy - "AfarAbchazyskAvestyskAfrikaanskAkanAmhaarskAragoneeskArabyskAssameeskAva" + - "ryskAymaraAzerbeidzjaanskBasjkierskWyt-RussyskBulgaarskBislamaBambar" + - "aBengaalskTibetaanskBretonskBosnyskKatalaanskTsjetsjeenskChamorroKor" + - "sikaanskCreeTsjechyskKerkslavyskTsjoevasjyskWelskDeenskDútskDivehiDz" + - "ongkhaEweGryksIngelskEsperantoSpaanskEstlânskBaskyskPerzyskFulahFins" + - "kFijyskFaeröerskFrânskFryskIerskSchotsk GaelicGalisyskGuaraníGujarat" + - "iManksHausaHebreeuwskHindiHiri MotuKroatyskHaïtiaanskHongaarskArmeen" + - "skHereroInterlinguaYndonezyskInterlingueIgboSichuan YiInupiaqIdoYslâ" + - "nsItaliaanskInuktitutJapansJavaanskGeorgyskKongoKikuyuKuanyamaKazach" + - "sGrienlânsKhmerKannadaKoreaanskKanuriKasjmiriKoerdyskKomiCornishKirg" + - "izyskLatynLuxemburgsGandaLimburgsLingalaLaotiaanskLitouwsLuba-Katang" + - "aLetlânsMalagasyskMarshalleesMaoriMacedonyskMalayalamMongoolsMarathi" + - "MaleisMalteesBirmeesNauruaanskNoard-NdbeleNepaleesNdongaNederlânskNo" + - "ors - NynorskNoors - BokmålSûd-NdbeleNavajoNyanjaOccitaanskOjibwaOro" + - "moOdiaOssetyskPunjabiPaliPoalskPasjtoePortugeeskQuechuaReto-Romaansk" + - "KirundiRoemeenskRussyskKinyarwandaSanskrietSardinyskSindhiNoard-Samy" + - "skSangoSingaleesSlowaaksSloveenskSamoaanskShonaSomalyskAlbaneeskServ" + - "yskSwaziSûd-SothoSoendaneeskZweedsSwahiliTamilTeluguTadzjieksThaisTi" + - "grinyaTurkmeensTswanaTongaanskTurksTsongaTataarsTahityskOeigoersOekr" + - "aïensUrduOezbeeksVendaVietnameesVolapükWaalsWolofXhosaJiddyskYorubaZ" + - "huangSineeskZuluAtjeeskAkoliAdangmeAdygheAfrihiliAghemAinuAkkadyskAl" + - "eutSûd-AltaïskâldingelskAngikaArameeskAraukaanskArapahoArawakAsuAstu" + - "ryskAwadhiBaloetsjyskBalineeskBasaBamounGhomala’BejaBembaBenaBafutBh" + - "ojpuriBikolBiniKomSiksikaBrajBodoAkooseBuriatBugineeskBuluBlinMedumb" + - "aKaddoKaribyskCayugaAtsamCebuanoChigaChibchaChagataiChuukeeskMariChi" + - "nook-jargonChoctawChipewyanCherokeeCheyenneSoranîKoptyskKrim-Tataars" + - "kKasjoebyskDakotaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriNeders" + - "orbyskDualaMiddelnederlânskJola-FonyiDyulaDazagaEmbuEfikAldegyptyskE" + - "kajukElamityskMiddelingelskEwondoFangFilipynskFonMiddelfrânskAldfrân" + - "skNoard-FryskEast-FryskFriulyskGaGayoGbayaGeezGilberteeskMiddelheech" + - "dútskAlsheechdútskGondiGorontaloGothyskGreboAldgryksSwitsers DútskGu" + - "siiGwichʼinHaidaHawaïaanskHiligaynonHettityskHmongOppersorbyskHupaIb" + - "anIbibioIlokoIngoesjLojbanNgombaMachameJudeo-PerzyskJudeo-ArabyskKar" + - "akalpaksKabyleKachinJjuKambaKawiKabardyskKanembuTyapMakondeKaapverdy" + - "sk CreoolsKoroKhasiKhotaneeskKoyra ChiiniKakoKalenjinKimbunduKonkani" + - "KosraeaanskKpelleKarachay-BalkarKarelyskKurukhShambalaBafiaKölschKoe" + - "muksKutenaiLadinoLangiLahndaLambaLezgyskLakotaMongoLoziLuba-LuluaLui" + - "senoLundaLuoLushaiLuyiaMadureesMafaMagahiMaithiliMakassaarsMandingoM" + - "asaiMabaMokshaMandarMendeMeruMorisyenMiddeliersMakhuwa-MeettoMeta’Mi" + - "’kmaqMinangkabauMantsjoeManipoeriMohawkMossiMundangMeardere talenC" + - "reekMirandeesMarwariMyeneErzjaNapolitaanskNamaLaagduitsNewariNiasNiu" + - "eaanskNgumbaNgiemboonNogaiAldnoarskN’koNoard-SothoNuerKlassiek Newar" + - "iNyamweziNyankoleNyoroNzimaOsageOttomaansk-TurksPangasinanPahlaviPam" + - "pangaPapiamentsPalauaanskAldperzyskFoenisyskPohnpeiaanskAldprovençaa" + - "lsRajasthaniRapanuiRarotonganRomboRomaniAromaniaanskRwaSandaweJakoet" + - "sSamaritaansk-ArameeskSamburuSasakSantaliNgambaySanguSiciliaanskScho" + - "tsSenecaSenaSelkupKoyraboro SenniAldyrskTashelhiytShanTsjadysk Araby" + - "skSidamoSûd-SamyskLule SamiInari SamiSkolt SamiSoninkeSogdyskSranant" + - "ongoSererSahoSukumaSoesoeSoemeryskShimaoreKlassiek SyryskSyryskTimne" + - "TesoTerenoTetunTigreTivTokelausKlingonTlingitTamashekNyasa TongaTok " + - "PisinTarokoTsimshianToemboekaTuvaluaanskTasawaqTuvinyskTamazight (Si" + - "ntraal-Marokko)OedmoertsOegarityskUmbunduOnbekende taalVaiVotyskVunj" + - "oWalserWalamoWarayWashoKalmykSogaYaoYapeesYangbenYembaKantoneeskZapo" + - "tecBlissymbolenZenagaStandert Marokkaanske TamazightZuniGjin linguïs" + - "tyske ynhâldZazaModern standert ArabyskEastenryks DútskSwitsersk Hee" + - "chdútskAustralysk IngelskKanadeesk IngelskBritsk IngelskAmerikaansk " + - "IngelskLatynsk-Amerikaansk SpaanskEuropeesk SpaanskMeksikaansk Spaan" + - "skKanadeesk FrânskSwitserse FrânskVlaamsBrazyljaansk PortugeesEurope" + - "es PortugeesMoldavyskServokroatyskCongo SwahiliFerienfâldich Sineesk" + - "Tradisjoneel Sineesk", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0015, 0x001f, 0x0023, 0x002b, 0x0035, - 0x003c, 0x0045, 0x004c, 0x0052, 0x0061, 0x006b, 0x0076, 0x007f, - 0x0086, 0x008d, 0x0096, 0x00a0, 0x00a8, 0x00af, 0x00b9, 0x00c5, - 0x00cd, 0x00d8, 0x00dc, 0x00e5, 0x00f0, 0x00fc, 0x0101, 0x0107, - 0x010d, 0x0113, 0x011b, 0x011e, 0x0123, 0x012a, 0x0133, 0x013a, - 0x0143, 0x014a, 0x0151, 0x0156, 0x015b, 0x0161, 0x016b, 0x0172, - 0x0177, 0x017c, 0x018a, 0x0192, 0x019a, 0x01a2, 0x01a7, 0x01ac, - 0x01b6, 0x01bb, 0x01c4, 0x01cc, 0x01d7, 0x01e0, 0x01e8, 0x01ee, - // Entry 40 - 7F - 0x01f9, 0x0203, 0x020e, 0x0212, 0x021c, 0x0223, 0x0226, 0x022d, - 0x0237, 0x0240, 0x0246, 0x024e, 0x0256, 0x025b, 0x0261, 0x0269, - 0x0270, 0x027a, 0x027f, 0x0286, 0x028f, 0x0295, 0x029d, 0x02a5, - 0x02a9, 0x02b0, 0x02b9, 0x02be, 0x02c8, 0x02cd, 0x02d5, 0x02dc, - 0x02e6, 0x02ed, 0x02f9, 0x0301, 0x030b, 0x0316, 0x031b, 0x0325, - 0x032e, 0x0336, 0x033d, 0x0343, 0x034a, 0x0351, 0x035b, 0x0367, - 0x036f, 0x0375, 0x0380, 0x038f, 0x039e, 0x03a9, 0x03af, 0x03b5, - 0x03bf, 0x03c5, 0x03ca, 0x03ce, 0x03d6, 0x03dd, 0x03e1, 0x03e7, - // Entry 80 - BF - 0x03ee, 0x03f8, 0x03ff, 0x040c, 0x0413, 0x041c, 0x0423, 0x042e, - 0x0437, 0x0440, 0x0446, 0x0452, 0x0457, 0x0460, 0x0468, 0x0471, - 0x047a, 0x047f, 0x0487, 0x0490, 0x0497, 0x049c, 0x04a6, 0x04b1, - 0x04b7, 0x04be, 0x04c3, 0x04c9, 0x04d2, 0x04d7, 0x04df, 0x04e8, - 0x04ee, 0x04f7, 0x04fc, 0x0502, 0x0509, 0x0511, 0x0519, 0x0523, - 0x0527, 0x052f, 0x0534, 0x053e, 0x0546, 0x054b, 0x0550, 0x0555, - 0x055c, 0x0562, 0x0568, 0x056f, 0x0573, 0x057a, 0x057f, 0x0586, - 0x058c, 0x058c, 0x0594, 0x0599, 0x059d, 0x05a5, 0x05a5, 0x05aa, - // Entry C0 - FF - 0x05aa, 0x05b7, 0x05c2, 0x05c8, 0x05d0, 0x05da, 0x05da, 0x05e1, - 0x05e1, 0x05e1, 0x05e7, 0x05e7, 0x05e7, 0x05ea, 0x05ea, 0x05f2, - 0x05f2, 0x05f8, 0x0603, 0x060c, 0x060c, 0x0610, 0x0616, 0x0616, - 0x0620, 0x0624, 0x0629, 0x0629, 0x062d, 0x0632, 0x0632, 0x0632, - 0x063a, 0x063f, 0x0643, 0x0643, 0x0646, 0x064d, 0x064d, 0x064d, - 0x0651, 0x0651, 0x0655, 0x065b, 0x0661, 0x066a, 0x066e, 0x0672, - 0x0679, 0x067e, 0x0686, 0x068c, 0x0691, 0x0691, 0x0698, 0x069d, - 0x06a4, 0x06ac, 0x06b5, 0x06b9, 0x06c7, 0x06ce, 0x06d7, 0x06df, - // Entry 100 - 13F - 0x06e7, 0x06ee, 0x06f5, 0x06f5, 0x0702, 0x0702, 0x070c, 0x0712, - 0x0718, 0x071d, 0x0725, 0x072a, 0x0730, 0x0735, 0x073a, 0x073f, - 0x074b, 0x074b, 0x0750, 0x0761, 0x076b, 0x0770, 0x0776, 0x077a, - 0x077e, 0x077e, 0x0789, 0x078f, 0x0798, 0x07a5, 0x07a5, 0x07ab, - 0x07ab, 0x07af, 0x07b8, 0x07b8, 0x07bb, 0x07bb, 0x07c8, 0x07d2, - 0x07d2, 0x07dd, 0x07e7, 0x07ef, 0x07f1, 0x07f1, 0x07f1, 0x07f5, - 0x07fa, 0x07fa, 0x07fe, 0x0809, 0x0809, 0x081a, 0x0828, 0x0828, - 0x082d, 0x0836, 0x083d, 0x0842, 0x084a, 0x0859, 0x0859, 0x0859, - // Entry 140 - 17F - 0x085e, 0x0867, 0x086c, 0x086c, 0x0877, 0x0877, 0x0881, 0x088a, - 0x088f, 0x089b, 0x089b, 0x089f, 0x08a3, 0x08a9, 0x08ae, 0x08b5, - 0x08b5, 0x08b5, 0x08bb, 0x08c1, 0x08c8, 0x08d5, 0x08e2, 0x08e2, - 0x08ed, 0x08f3, 0x08f9, 0x08fc, 0x0901, 0x0905, 0x090e, 0x0915, - 0x0919, 0x0920, 0x0933, 0x0933, 0x0937, 0x0937, 0x093c, 0x0946, - 0x0952, 0x0952, 0x0952, 0x0956, 0x095e, 0x0966, 0x0966, 0x096d, - 0x0978, 0x097e, 0x098d, 0x098d, 0x098d, 0x0995, 0x099b, 0x09a3, - 0x09a8, 0x09af, 0x09b6, 0x09bd, 0x09c3, 0x09c8, 0x09ce, 0x09d3, - // Entry 180 - 1BF - 0x09da, 0x09da, 0x09da, 0x09da, 0x09e0, 0x09e0, 0x09e5, 0x09e5, - 0x09e9, 0x09e9, 0x09e9, 0x09f3, 0x09fa, 0x09ff, 0x0a02, 0x0a08, - 0x0a0d, 0x0a0d, 0x0a0d, 0x0a15, 0x0a19, 0x0a1f, 0x0a27, 0x0a31, - 0x0a39, 0x0a3e, 0x0a42, 0x0a48, 0x0a4e, 0x0a53, 0x0a57, 0x0a5f, - 0x0a69, 0x0a77, 0x0a7e, 0x0a87, 0x0a92, 0x0a9a, 0x0aa3, 0x0aa9, - 0x0aae, 0x0aae, 0x0ab5, 0x0ac3, 0x0ac8, 0x0ad1, 0x0ad8, 0x0ad8, - 0x0add, 0x0ae2, 0x0ae2, 0x0ae2, 0x0aee, 0x0af2, 0x0afb, 0x0b01, - 0x0b05, 0x0b0e, 0x0b0e, 0x0b14, 0x0b1d, 0x0b22, 0x0b2b, 0x0b2b, - // Entry 1C0 - 1FF - 0x0b31, 0x0b3c, 0x0b40, 0x0b4f, 0x0b57, 0x0b5f, 0x0b64, 0x0b69, - 0x0b6e, 0x0b7e, 0x0b88, 0x0b8f, 0x0b97, 0x0ba1, 0x0bab, 0x0bab, - 0x0bab, 0x0bab, 0x0bab, 0x0bb5, 0x0bb5, 0x0bbe, 0x0bbe, 0x0bbe, - 0x0bca, 0x0bca, 0x0bd9, 0x0bd9, 0x0bd9, 0x0be3, 0x0bea, 0x0bf4, - 0x0bf4, 0x0bf4, 0x0bf9, 0x0bff, 0x0bff, 0x0bff, 0x0bff, 0x0c0b, - 0x0c0e, 0x0c15, 0x0c1c, 0x0c31, 0x0c38, 0x0c3d, 0x0c44, 0x0c44, - 0x0c4b, 0x0c50, 0x0c5b, 0x0c61, 0x0c61, 0x0c61, 0x0c67, 0x0c6b, - 0x0c6b, 0x0c71, 0x0c80, 0x0c87, 0x0c87, 0x0c91, 0x0c95, 0x0ca5, - // Entry 200 - 23F - 0x0cab, 0x0cab, 0x0cab, 0x0cb6, 0x0cbf, 0x0cc9, 0x0cd3, 0x0cda, - 0x0ce1, 0x0cec, 0x0cf1, 0x0cf5, 0x0cf5, 0x0cfb, 0x0d01, 0x0d0a, - 0x0d12, 0x0d21, 0x0d27, 0x0d27, 0x0d27, 0x0d2c, 0x0d30, 0x0d36, - 0x0d3b, 0x0d40, 0x0d43, 0x0d4b, 0x0d4b, 0x0d52, 0x0d59, 0x0d59, - 0x0d61, 0x0d6c, 0x0d75, 0x0d75, 0x0d7b, 0x0d7b, 0x0d84, 0x0d84, - 0x0d8d, 0x0d98, 0x0d9f, 0x0da7, 0x0dc3, 0x0dcc, 0x0dd6, 0x0ddd, - 0x0deb, 0x0dee, 0x0dee, 0x0dee, 0x0dee, 0x0dee, 0x0df4, 0x0df4, - 0x0df9, 0x0dff, 0x0e05, 0x0e0a, 0x0e0f, 0x0e0f, 0x0e0f, 0x0e15, - // Entry 240 - 27F - 0x0e15, 0x0e19, 0x0e1c, 0x0e22, 0x0e29, 0x0e2e, 0x0e2e, 0x0e38, - 0x0e3f, 0x0e4b, 0x0e4b, 0x0e51, 0x0e70, 0x0e74, 0x0e8e, 0x0e92, - 0x0ea9, 0x0ea9, 0x0eba, 0x0ecf, 0x0ee1, 0x0ef2, 0x0f00, 0x0f13, - 0x0f2e, 0x0f3f, 0x0f52, 0x0f52, 0x0f63, 0x0f74, 0x0f74, 0x0f7a, - 0x0f90, 0x0fa2, 0x0fab, 0x0fb8, 0x0fc5, 0x0fdb, 0x0fef, - }, - }, - { // ga - "AfáirisAbcáisisAivéistisAfracáinisAcáinisAmáirisAragóinisAraibisAsaimisA" + - "váirisAidhmirisAsarbaiseáinisBaiscírisBealarúisisBulgáirisBioslaimis" + - "bmBeangáilisTibéidisBriotáinisBoisnisCatalóinisSeisnisSeamóirisCorsa" + - "icisCraísSeicisSlavais na hEaglaiseSuvaisisBreatnaisDanmhairgisGearm" + - "áinisDivéihisSeoiniciseeGréigisBéarlaEsperantoSpáinnisEastóinisBasc" + - "aisPeirsisFuláinisFionlainnisFidsisFaróisFraincisFreaslainnis Iartha" + - "rachGaeilgeGaeilge na hAlbanGailísisGuaráinisGúisearáitisManainnisHá" + - "saisEabhraisHiondúisMotúis HíríCróitisCriól HáítíochUngáirisAirméini" + - "sHeiréirisInterlinguaIndinéisisInterlingueÍogbóisiiIniúipiaicisIdoÍo" + - "slainnisIodáilisIonúitisSeapáinisIáivisSeoirsisCongóisCiocúisCuainiá" + - "imisCasaicisKalaallisutCiméirisCannadaisCóiréisCanúirisCaismírisCoir" + - "disCoimisCoirnisCirgisisLaidinLucsambuirgisLugandaisLiombuirgisLiong" + - "áilisLaoisisLiotuáinisLúba-CataingisLaitvisMalagáisisMairsillisMaor" + - "aisMacadóinisMailéalaimisMongóilisMaraitisMalaeisMáltaisBurmaisNárúi" + - "sNdeibéilis an TuaiscirtNeipeailisNdongaisOllainnisNua-IoruaisIoruai" + - "s BokmålNdeibéilis an DeiscirtNavachóisSiséivisOcsatáinisÓisibisOrai" + - "misOirísisOiséitisPuinseáibisPáilisPolainnisPaistisPortaingéilisCeat" + - "suaisRómainisRúindisRómáinisRúisisCiniaruaindisSanscraitSairdínisSin" + - "disSáimis ThuaidhSangóisSiolóinisSlóvaicisSlóivéinisSamóisSeoinisSom" + - "áilisAlbáinisSeirbisSuaisisSeasóitisSundaisSualainnisSvahaílisTamai" + - "lisTeileagúisTáidsícisTéalainnisTigrinisTuircméinisSuáinisTongaisTui" + - "rcisSongaisTatairisTaihítisUigiúirisÚcráinisUrdúisÚisbéiceastáinisVe" + - "indisVítneaimisVolapükVallúnaisVolaifisCóisisGiúdaisIarúibisSiuáingi" + - "sSínisSúlúisaceadaAdaigéisagqAidhniúisAcáidisalealtSean-BhéarlaanpAr" + - "amaisMapúitsisarpasaAstúirisawaBailísBaváirisbasBeimbisbezbhobinblab" + - "rxBuiriáitisBuiginisbynSeabúáiniscggchkMairischoSeiricischyCoirdis L" + - "árnachCoptaisCriól Fraincise SeselwaCaisiúibisdakdarTaitadgrZarmais" + - "Sorbais ÍochtarachduaMeán-OllainnisdyodzgebuefiSean-ÉigiptisekaMeán-" + - "BhéarlaewoFilipínisfonMeán-FhraincisSean-FhraincisFreaslainnis an Tu" + - "aiscirtFriúilisgaaSínis GanAetóipisCireabaitisMeán-Ard-GhearmáinisSe" + - "an-Ard-GhearmáinisgorSean-GhréigisGearmáinis EilvéiseachUaúisguzgwiH" + - "aicéisHaváisHiondúis FhidsíHilgeanóinisHitisMongaisSorbais Uachtarac" + - "hSínis XiangHúipisibaIbibisiloIongúisLojbanjgojmcIútlainnisCara-Chal" + - "páiskabkackajkamkbdkcgkdeKabuverdianukfokhakhqkkjklnkmbConcáiniskpek" + - "rcCairéilisCurúicisksbksfkshkumLaidínislagPuinseáibis IartharachlezL" + - "iogúirisLiovóinislktLombairdislozlrclualunluolusluymadmagmaimakmasmd" + - "fMeindismermfeMeán-GhaeilgemghmgomicminManapúirisMóháicismosMairis I" + - "artharachmuaIlteangachamusMioraindéisMarmhairismyvmznSínis Min NanNa" + - "póilisnaqGearmáinis ÍochtarachnewniaNíobhaisnmgnnhnogSean-Lochlainni" + - "snqoSútúis an TuaiscirtnusnynpagpampappaupcmSean-PheirsisPrúisisCuit" + - "séisraprarrofRomainisArómáinisrwksadSachaisAramais ShamárachsaqSantá" + - "ilissbasbpSicilisAlbainissehsesSean-GhaeilgeTachelhitshnSáimis Theas" + - "Sáimis LuleSáimis InariSáimis SkoltsnkSogdánaissrnssysukSuiméirisCom" + - "óirisSiricisSiléisistemteotettigKlingonTok PisintrvtumtvltwqtyvTama" + - "zight Atlais LáirUdmairtisumbTeanga AnaithnidvaiVeinéisisPléimeannai" + - "s IartharachvunwaewalwarwuuCailmícisxogyavybbCantainisSéalainnisTama" + - "zight Caighdeánach MharacóZúinisGan ábhar teangeolaíochzzaAraibis Ch" + - "aighdeánachGearmáinis OstarachArd-Ghearmáinis EilvéiseachBéarla Astr" + - "álachBéarla CeanadachBéarla BriotanachBéarla MeiriceánachSpáinnis M" + - "heiriceá LaidinighSpáinnis EorpachSpáinnis MheicsiceachFraincis Chea" + - "nadachFraincis EilvéiseachSacsainis ÍochtarachPléimeannaisPortaingéi" + - "lis BhrasaíleachPortaingéilis IbéarachMoldáivisSeirbea-ChróitisSvaha" + - "ílis an ChongóSínis ShimplitheSínis Thraidisiúnta", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x0011, 0x001b, 0x0026, 0x002e, 0x0036, 0x0040, - 0x0047, 0x004e, 0x0056, 0x005f, 0x006e, 0x0078, 0x0084, 0x008e, - 0x0098, 0x009a, 0x00a5, 0x00ae, 0x00b9, 0x00c0, 0x00cb, 0x00d2, - 0x00dc, 0x00e5, 0x00eb, 0x00f1, 0x0105, 0x010d, 0x0116, 0x0121, - 0x012c, 0x0135, 0x013e, 0x0140, 0x0148, 0x014f, 0x0158, 0x0161, - 0x016b, 0x0172, 0x0179, 0x0182, 0x018d, 0x0193, 0x019a, 0x01a2, - 0x01b9, 0x01c0, 0x01d1, 0x01da, 0x01e4, 0x01f2, 0x01fb, 0x0202, - 0x020a, 0x0213, 0x0221, 0x0229, 0x023b, 0x0244, 0x024e, 0x0258, - // Entry 40 - 7F - 0x0263, 0x026e, 0x0279, 0x0282, 0x0284, 0x0291, 0x0294, 0x029f, - 0x02a8, 0x02b1, 0x02bb, 0x02c2, 0x02ca, 0x02d2, 0x02da, 0x02e6, - 0x02ee, 0x02f9, 0x0302, 0x030b, 0x0314, 0x031d, 0x0327, 0x032e, - 0x0334, 0x033b, 0x0343, 0x0349, 0x0356, 0x035f, 0x036a, 0x0375, - 0x037c, 0x0387, 0x0396, 0x039d, 0x03a8, 0x03b2, 0x03b9, 0x03c4, - 0x03d1, 0x03db, 0x03e3, 0x03ea, 0x03f2, 0x03f9, 0x0401, 0x0419, - 0x0423, 0x042b, 0x0434, 0x043f, 0x044e, 0x0465, 0x046f, 0x0478, - 0x0483, 0x048b, 0x0492, 0x049a, 0x04a3, 0x04af, 0x04b6, 0x04bf, - // Entry 80 - BF - 0x04c6, 0x04d4, 0x04dd, 0x04e6, 0x04ee, 0x04f8, 0x04ff, 0x050c, - 0x0515, 0x051f, 0x0525, 0x0534, 0x053c, 0x0546, 0x0550, 0x055c, - 0x0563, 0x056a, 0x0573, 0x057c, 0x0583, 0x058a, 0x0594, 0x059b, - 0x05a5, 0x05af, 0x05b7, 0x05c2, 0x05cd, 0x05d8, 0x05e0, 0x05ec, - 0x05f4, 0x05fb, 0x0602, 0x0609, 0x0611, 0x061a, 0x0624, 0x062e, - 0x0635, 0x0648, 0x064f, 0x065a, 0x0662, 0x066c, 0x0674, 0x067b, - 0x0683, 0x068c, 0x0696, 0x069c, 0x06a4, 0x06a7, 0x06a7, 0x06aa, - 0x06b3, 0x06b3, 0x06b3, 0x06b6, 0x06c0, 0x06c8, 0x06c8, 0x06cb, - // Entry C0 - FF - 0x06cb, 0x06ce, 0x06db, 0x06de, 0x06e5, 0x06ef, 0x06ef, 0x06f2, - 0x06f2, 0x06f2, 0x06f2, 0x06f2, 0x06f2, 0x06f5, 0x06f5, 0x06fe, - 0x06fe, 0x0701, 0x0701, 0x0708, 0x0711, 0x0714, 0x0714, 0x0714, - 0x0714, 0x0714, 0x071b, 0x071b, 0x071e, 0x071e, 0x071e, 0x071e, - 0x0721, 0x0721, 0x0724, 0x0724, 0x0724, 0x0727, 0x0727, 0x0727, - 0x0727, 0x0727, 0x072a, 0x072a, 0x0735, 0x073d, 0x073d, 0x0740, - 0x0740, 0x0740, 0x0740, 0x0740, 0x0740, 0x0740, 0x074c, 0x074f, - 0x074f, 0x074f, 0x0752, 0x0758, 0x0758, 0x075b, 0x075b, 0x0763, - // Entry 100 - 13F - 0x0766, 0x0776, 0x077d, 0x077d, 0x077d, 0x0795, 0x07a0, 0x07a3, - 0x07a6, 0x07ab, 0x07ab, 0x07ab, 0x07ae, 0x07ae, 0x07b5, 0x07b5, - 0x07c8, 0x07c8, 0x07cb, 0x07da, 0x07dd, 0x07dd, 0x07e0, 0x07e3, - 0x07e6, 0x07e6, 0x07f4, 0x07f7, 0x07f7, 0x0805, 0x0805, 0x0808, - 0x0808, 0x0808, 0x0812, 0x0812, 0x0815, 0x0815, 0x0824, 0x0832, - 0x0832, 0x084b, 0x084b, 0x0854, 0x0857, 0x0857, 0x0861, 0x0861, - 0x0861, 0x0861, 0x086a, 0x0875, 0x0875, 0x088b, 0x08a0, 0x08a0, - 0x08a0, 0x08a3, 0x08a3, 0x08a3, 0x08b1, 0x08c9, 0x08cf, 0x08cf, - // Entry 140 - 17F - 0x08d2, 0x08d5, 0x08d5, 0x08dd, 0x08e4, 0x08f5, 0x0902, 0x0907, - 0x090e, 0x0920, 0x092c, 0x0933, 0x0936, 0x093c, 0x093f, 0x0947, - 0x0947, 0x0947, 0x094d, 0x0950, 0x0953, 0x0953, 0x0953, 0x095e, - 0x096c, 0x096f, 0x0972, 0x0975, 0x0978, 0x0978, 0x097b, 0x097b, - 0x097e, 0x0981, 0x098d, 0x098d, 0x0990, 0x0990, 0x0993, 0x0993, - 0x0996, 0x0996, 0x0996, 0x0999, 0x099c, 0x099f, 0x099f, 0x09a9, - 0x09a9, 0x09ac, 0x09af, 0x09af, 0x09af, 0x09b9, 0x09c2, 0x09c5, - 0x09c8, 0x09cb, 0x09ce, 0x09ce, 0x09d7, 0x09da, 0x09f1, 0x09f1, - // Entry 180 - 1BF - 0x09f4, 0x09f4, 0x09fe, 0x0a08, 0x0a0b, 0x0a15, 0x0a15, 0x0a15, - 0x0a18, 0x0a1b, 0x0a1b, 0x0a1e, 0x0a1e, 0x0a21, 0x0a24, 0x0a27, - 0x0a2a, 0x0a2a, 0x0a2a, 0x0a2d, 0x0a2d, 0x0a30, 0x0a33, 0x0a36, - 0x0a36, 0x0a39, 0x0a39, 0x0a3c, 0x0a3c, 0x0a43, 0x0a46, 0x0a49, - 0x0a57, 0x0a5a, 0x0a5d, 0x0a60, 0x0a63, 0x0a63, 0x0a6e, 0x0a78, - 0x0a7b, 0x0a8c, 0x0a8f, 0x0a9a, 0x0a9d, 0x0aa9, 0x0ab3, 0x0ab3, - 0x0ab3, 0x0ab6, 0x0ab9, 0x0ac7, 0x0ad0, 0x0ad3, 0x0aea, 0x0aed, - 0x0af0, 0x0af9, 0x0af9, 0x0afc, 0x0aff, 0x0b02, 0x0b12, 0x0b12, - // Entry 1C0 - 1FF - 0x0b15, 0x0b2a, 0x0b2d, 0x0b2d, 0x0b2d, 0x0b30, 0x0b30, 0x0b30, - 0x0b30, 0x0b30, 0x0b33, 0x0b33, 0x0b36, 0x0b39, 0x0b3c, 0x0b3c, - 0x0b3f, 0x0b3f, 0x0b3f, 0x0b4c, 0x0b4c, 0x0b4c, 0x0b4c, 0x0b4c, - 0x0b4c, 0x0b54, 0x0b54, 0x0b5d, 0x0b5d, 0x0b5d, 0x0b60, 0x0b63, - 0x0b63, 0x0b63, 0x0b66, 0x0b6e, 0x0b6e, 0x0b6e, 0x0b6e, 0x0b79, - 0x0b7c, 0x0b7f, 0x0b86, 0x0b98, 0x0b9b, 0x0b9b, 0x0ba5, 0x0ba5, - 0x0ba8, 0x0bab, 0x0bb2, 0x0bba, 0x0bba, 0x0bba, 0x0bba, 0x0bbd, - 0x0bbd, 0x0bbd, 0x0bc0, 0x0bcd, 0x0bcd, 0x0bd6, 0x0bd9, 0x0bd9, - // Entry 200 - 23F - 0x0bd9, 0x0bd9, 0x0bd9, 0x0be6, 0x0bf2, 0x0bff, 0x0c0c, 0x0c0f, - 0x0c19, 0x0c1c, 0x0c1c, 0x0c1f, 0x0c1f, 0x0c22, 0x0c22, 0x0c2c, - 0x0c35, 0x0c35, 0x0c3c, 0x0c45, 0x0c45, 0x0c48, 0x0c4b, 0x0c4b, - 0x0c4e, 0x0c51, 0x0c51, 0x0c51, 0x0c51, 0x0c58, 0x0c58, 0x0c58, - 0x0c58, 0x0c58, 0x0c61, 0x0c61, 0x0c64, 0x0c64, 0x0c64, 0x0c64, - 0x0c67, 0x0c6a, 0x0c6d, 0x0c70, 0x0c86, 0x0c8f, 0x0c8f, 0x0c92, - 0x0ca2, 0x0ca5, 0x0caf, 0x0caf, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, - 0x0cca, 0x0ccd, 0x0cd0, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd6, 0x0ce0, - // Entry 240 - 27F - 0x0ce0, 0x0ce3, 0x0ce3, 0x0ce3, 0x0ce6, 0x0ce9, 0x0ce9, 0x0cf2, - 0x0cf2, 0x0cf2, 0x0cfd, 0x0cfd, 0x0d1d, 0x0d24, 0x0d3d, 0x0d40, - 0x0d56, 0x0d56, 0x0d6a, 0x0d87, 0x0d99, 0x0daa, 0x0dbc, 0x0dd1, - 0x0def, 0x0e00, 0x0e16, 0x0e16, 0x0e29, 0x0e3e, 0x0e53, 0x0e60, - 0x0e7c, 0x0e94, 0x0e9e, 0x0eaf, 0x0ec4, 0x0ed5, 0x0eea, - }, - }, - { // gd - "AfarAbchasaisAvestanaisAfraganaisAkanAmtharaisAragonaisArabaisAsamaisAva" + - "raisAymaraAsarbaideànaisBashkirBealaruisisBulgaraisBislamaBambaraBan" + - "glaTibeitisBreatnaisBosnaisCatalanaisDeideanaisChamorroCorsaisCreeSe" + - "icisSlàbhais na h-EaglaiseChuvashCuimrisDanmhairgisGearmailtisDivehi" + - "DzongkhaEweGreugaisBeurlaEsperantoSpàinntisEastoinisBasgaisPeirsisFu" + - "lahFionnlannaisFìdisFàrothaisFraingisFrìoslannais ShiarachGaeilgeGài" + - "dhligGailìsisGuaraníGujaratiGaelgHausaEabhraHindisHiri MotuCròthaisi" + - "sCrìtheol HaidhtiUngairisAirmeinisHereroInterlinguaInnd-InnsisInterl" + - "ingueIgboYi SichuanInupiaqIdoInnis TìlisEadailtisInuktitutSeapanaisD" + - "eàbhanaisCairtbheilisKongoKikuyuKuanyamaCasachaisKalaallisutCmèarKan" + - "nadaCoirèanaisKanuriCaismirisCùrdaisKomiCòrnaisCìorgasaisLaideannLug" + - "samburgaisGandaCànan LimburgLingalaLàthoLiotuainisLuba-KatangaLaitbh" + - "eisMalagasaisMarshallaisMāoriMasadonaisMalayalamMongolaisMarathiMala" + - "idhisMaltaisBurmaisNabhruNdebele ThuathachNeapàlaisNdongaDuitsisNyno" + - "rsk na NirribhidhBokmål na NirribhidhNdebele DheasachNavajoNyanjaOgs" + - "atanaisOjibwaOromoOdiaOsseticPanjabiPaliPòlainnisPashtoPortagailisQu" + - "echuaRumainsKirundiRomàinisRuisisKinyarwandaSanskritSàrdaisSindhiSàm" + - "ais ThuathachSangoSinhalaSlòbhacaisSlòbhainisSamothaisShonaSomàilisA" + - "lbàinisSèirbisSwatiSesothoCànan SundaSuainisKiswahiliTaimilisTeluguT" + - "aidigisCànan nan TàidhTigrinyaTurcmanaisTswanaTongaTurcaisTsongaTata" + - "raisCànan TahitiÙigiuraisUcràinisÙrduUsbagaisVendaBhiet-NamaisVolapü" + - "kWalloonWolofXhosaIùdhaisYorubaZhuangSìnisZuluBasa AcèhAcoliAdangmeA" + - "dygheArabais ThuiniseachAfrihiliAghemAinuAcadaisAlabamaAleutaisAlbài" + - "nis GhegeachAltais DheasachSeann-BheurlaAngikaAramaisMapudungunAraon" + - "aArapahoArabais AildireachArawakArabais MhorocachArabais Èipheiteach" + - "AsuCainnt-shanais na h-AimeireagaAstùraisKotavaAwadhiBaluchìCànan Ba" + - "liBasaaBamunBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaBalochi S" + - "hiarachBhojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrah" + - "uiBodoAkooseBuriatCànan nam BugisBuluBlinMedumbaCaddoCaribCayugaAtsa" + - "mCebuanoChigaChibchaChagataiCànan ChuukMariChinuk WawaChoctawChipewy" + - "anCherokeeCheyenneCùrdais MheadhanachCoptaisCapiznonTurcais Chriomac" + - "hSeiseallaisCaisiubaisDakotaDargwaTaitaDelawareSlaveyDogribDinkaZarm" + - "aDogriSòrbais ÌochdarachDusun MheadhanachDualaMeadhan-DhuitsisJola-F" + - "onyiDyulaDazagaEmbuEfikÈipheitis ÀrsaidhEkajukElamaisMeadhan-Bheurla" + - "Yupik MheadhanachEwondoCànan na h-ExtremaduraFangFilipinisMeänkieliF" + - "onFraingis nan CajunMeadhan-FhraingisSeann-FhraingisArpitanFrìoslann" + - "ais ThuathachFrìoslannais EarachFriùilisGaGagauzGanGayoGbayaDari Zor" + - "oastrachGe’ezCiribeasaisGilakiMeadhan-Àrd-GearmailtisSeann-Àrd-Gearm" + - "ailtisKonkani GoaGondiGorontaloGotaisGreboGreugais ÀrsaidhGearmailti" + - "s EilbheiseachWayuuFrafraGusiiGwichʼinHaidaHakkaCànan Hawai’iHindis " + - "FhìditheachHiligaynonCànan HetHmongSòrbais UachdarachXiangHupaIbanIb" + - "ibioIlokoIngushBeurla Crìtheolach DiameugaLojbanNgombaMachamePeirsis" + - " IùdhachArabais IùdhachKara-KalpakKabyleKachinJjuKambaKawiCabardaisK" + - "anembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiCànan KhotanKoy" + - "ra ChiiniKhowarKirmanjkiKakoKalenjinKimbunduKomi-PermyakKonkaniKpell" + - "eKarachay-BalkarKrioKinaray-aCairealaisKurukhShambalaBafiaGearmailti" + - "s ChologneKumykKutenaiLadinoLangiLahndaLambaLeasgaisLingua Franca No" + - "vaLiogùraisLakhótaLombardaisMongoLoziLuri ThuathachLuba-LuluaLuiseño" + - "LundaLuoMizoLuyiaSìnis an LitreachaisLazCànan MadhuraMafaMagahiMaith" + - "iliMakasarMandingoMaasaiMabaMokshaMandarMendeMeruMorisyenMeadhan-Gha" + - "eilgeMakhuwa-MeettoMeta’Mi’kmaqMinangkabauManchuManipuriMohawkMossiM" + - "ari ShiarachMundangIomadh cànanCreekMiorandaisMarwariMentawaiMyeneEr" + - "zyaMazanderaniMin NanEadailtis NapoliNamaGearmailtis ÌochdarachNewar" + - "iNiasCànan NiueAo NagaKwasioNgiemboonNogaiSeann-LochlannaisNovialN’K" + - "oSesotho sa LeboaNuerNewari ChlasaigeachNyamweziNyankoleNyoroNzimaOs" + - "ageTurcais OtomanachPangasinanPahlaviPampangaPapiamentuPalabhaisPica" + - "rdBeurla NigèiriachGearmailtis PhennsylvaniaPlautdietschSeann-Pheirs" + - "isPhenicisPiedmonteseCànan PohnpeiPruisisSeann-PhrovençalK’iche’Quic" + - "hua Àrd-tìr ChimborazoRajasthaniRapa NuiCànan RarotongaRomagnolRombo" + - "RomanaisRusynRovianaAromanaisRwaSandaweSakhaAramais ShamaritanachSam" + - "buruSasakSantaliSaurashtraNgambaySanguSisilisAlbaisSassareseCùrdais " + - "DheasachSenecaSenaSeriSelkupKoyraboro SenniSeann-GhaeilgeTachelhitSh" + - "anArabais SeàdachSidamoSelayarSàmais DheasachSàmais LuleSàmais Inari" + - "Sàmais SkoltSoninkeSranan TongoSererSahoSukumaSusuCànan SumerComorai" + - "sSuraidheac ChlasaigeachSuraidheacTuluTimneTesoTerênaTetumTigreTivTo" + - "kelauTsakhurKlingonTlingitTalyshTamashekNyasa TongaTok PisinTuroyoTa" + - "rokoTsimshianTatiTumbukaTubhaluTasawaqCànan TuvaTamazight an Atlais " + - "MheadhanaichUdmurtUmbunduCànan neo-aithnichteVaiVepsFlannrais Siarac" + - "hVõroVunjoGearmailtis WallisWolayttaWarayWashoWarlpiriWuKalmykSogaYa" + - "oCànan YapYangbenYembaNheengatuCantonaisZapotecComharran BlissCànan " + - "ZeelandZenagaTamazight Stannardach MorocoZuñiSusbaint nach eil ’na c" + - "hànanZazakiNuadh-Arabais StannardachGearmailtis na h-OstaireÀrd-Ghea" + - "rmailtis na h-EilbheiseBeurla AstràiliaBeurla ChanadaBeurla Bhreatai" + - "nnBeurla na h-AimeireagaSpàinntis na h-Aimeireaga LaidinneachSpàinnt" + - "is EòrpachSpàinntis MheagsagachFraingis ChanadaFraingis Eilbheiseach" + - "Sagsannais ÌochdarachFlannraisPortagailis BhraisileachPortagailis Eò" + - "rpachMoldobhaisSèirb-ChròthaisisKiswahili na CongoSìnis ShimplichteS" + - "ìnis Thradaiseanta", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0017, 0x0021, 0x0025, 0x002e, 0x0037, - 0x003e, 0x0045, 0x004c, 0x0052, 0x0061, 0x0068, 0x0073, 0x007c, - 0x0083, 0x008a, 0x0090, 0x0098, 0x00a1, 0x00a8, 0x00b2, 0x00bc, - 0x00c4, 0x00cb, 0x00cf, 0x00d5, 0x00ec, 0x00f3, 0x00fa, 0x0105, - 0x0110, 0x0116, 0x011e, 0x0121, 0x0129, 0x012f, 0x0138, 0x0142, - 0x014b, 0x0152, 0x0159, 0x015e, 0x016a, 0x0170, 0x017a, 0x0182, - 0x0198, 0x019f, 0x01a8, 0x01b1, 0x01b9, 0x01c1, 0x01c6, 0x01cb, - 0x01d1, 0x01d7, 0x01e0, 0x01eb, 0x01fc, 0x0204, 0x020d, 0x0213, - // Entry 40 - 7F - 0x021e, 0x0229, 0x0234, 0x0238, 0x0242, 0x0249, 0x024c, 0x0258, - 0x0261, 0x026a, 0x0273, 0x027e, 0x028a, 0x028f, 0x0295, 0x029d, - 0x02a6, 0x02b1, 0x02b7, 0x02be, 0x02c9, 0x02cf, 0x02d8, 0x02e0, - 0x02e4, 0x02ec, 0x02f7, 0x02ff, 0x030c, 0x0311, 0x031f, 0x0326, - 0x032c, 0x0336, 0x0342, 0x034b, 0x0355, 0x0360, 0x0366, 0x0370, - 0x0379, 0x0382, 0x0389, 0x0392, 0x0399, 0x03a0, 0x03a6, 0x03b7, - 0x03c1, 0x03c7, 0x03ce, 0x03e3, 0x03f8, 0x0408, 0x040e, 0x0414, - 0x041e, 0x0424, 0x0429, 0x042d, 0x0434, 0x043b, 0x043f, 0x0449, - // Entry 80 - BF - 0x044f, 0x045a, 0x0461, 0x0468, 0x046f, 0x0478, 0x047e, 0x0489, - 0x0491, 0x0499, 0x049f, 0x04b0, 0x04b5, 0x04bc, 0x04c7, 0x04d2, - 0x04db, 0x04e0, 0x04e9, 0x04f2, 0x04fa, 0x04ff, 0x0506, 0x0512, - 0x0519, 0x0522, 0x052a, 0x0530, 0x0538, 0x0549, 0x0551, 0x055b, - 0x0561, 0x0566, 0x056d, 0x0573, 0x057b, 0x0588, 0x0592, 0x059b, - 0x05a0, 0x05a8, 0x05ad, 0x05b9, 0x05c1, 0x05c8, 0x05cd, 0x05d2, - 0x05da, 0x05e0, 0x05e6, 0x05ec, 0x05f0, 0x05fa, 0x05ff, 0x0606, - 0x060c, 0x061f, 0x0627, 0x062c, 0x0630, 0x0637, 0x063e, 0x0646, - // Entry C0 - FF - 0x0658, 0x0667, 0x0674, 0x067a, 0x0681, 0x068b, 0x0691, 0x0698, - 0x06aa, 0x06aa, 0x06b0, 0x06c1, 0x06d5, 0x06d8, 0x06f6, 0x06ff, - 0x0705, 0x070b, 0x0713, 0x071e, 0x071e, 0x0723, 0x0728, 0x0732, - 0x0739, 0x073d, 0x0742, 0x0748, 0x074c, 0x0751, 0x0757, 0x0767, - 0x076f, 0x0774, 0x0778, 0x077e, 0x0781, 0x0788, 0x0793, 0x079c, - 0x07a0, 0x07a6, 0x07aa, 0x07b0, 0x07b6, 0x07c6, 0x07ca, 0x07ce, - 0x07d5, 0x07da, 0x07df, 0x07e5, 0x07ea, 0x07ea, 0x07f1, 0x07f6, - 0x07fd, 0x0805, 0x0811, 0x0815, 0x0820, 0x0827, 0x0830, 0x0838, - // Entry 100 - 13F - 0x0840, 0x0854, 0x085b, 0x0863, 0x0874, 0x087f, 0x0889, 0x088f, - 0x0895, 0x089a, 0x08a2, 0x08a8, 0x08ae, 0x08b3, 0x08b8, 0x08bd, - 0x08d1, 0x08e2, 0x08e7, 0x08f7, 0x0901, 0x0906, 0x090c, 0x0910, - 0x0914, 0x0914, 0x0927, 0x092d, 0x0934, 0x0943, 0x0954, 0x095a, - 0x0971, 0x0975, 0x097e, 0x0988, 0x098b, 0x099d, 0x09ae, 0x09bd, - 0x09c4, 0x09db, 0x09ef, 0x09f8, 0x09fa, 0x0a00, 0x0a03, 0x0a07, - 0x0a0c, 0x0a1c, 0x0a23, 0x0a2e, 0x0a34, 0x0a4c, 0x0a62, 0x0a6d, - 0x0a72, 0x0a7b, 0x0a81, 0x0a86, 0x0a97, 0x0aaf, 0x0ab4, 0x0aba, - // Entry 140 - 17F - 0x0abf, 0x0ac8, 0x0acd, 0x0ad2, 0x0ae2, 0x0af5, 0x0aff, 0x0b09, - 0x0b0e, 0x0b21, 0x0b26, 0x0b2a, 0x0b2e, 0x0b34, 0x0b39, 0x0b3f, - 0x0b3f, 0x0b5b, 0x0b61, 0x0b67, 0x0b6e, 0x0b7e, 0x0b8e, 0x0b8e, - 0x0b99, 0x0b9f, 0x0ba5, 0x0ba8, 0x0bad, 0x0bb1, 0x0bba, 0x0bc1, - 0x0bc5, 0x0bcc, 0x0bd8, 0x0bdf, 0x0be3, 0x0beb, 0x0bf0, 0x0bfd, - 0x0c09, 0x0c0f, 0x0c18, 0x0c1c, 0x0c24, 0x0c2c, 0x0c38, 0x0c3f, - 0x0c3f, 0x0c45, 0x0c54, 0x0c58, 0x0c61, 0x0c6b, 0x0c71, 0x0c79, - 0x0c7e, 0x0c92, 0x0c97, 0x0c9e, 0x0ca4, 0x0ca9, 0x0caf, 0x0cb4, - // Entry 180 - 1BF - 0x0cbc, 0x0cce, 0x0cd8, 0x0cd8, 0x0ce0, 0x0cea, 0x0cef, 0x0cef, - 0x0cf3, 0x0d01, 0x0d01, 0x0d0b, 0x0d13, 0x0d18, 0x0d1b, 0x0d1f, - 0x0d24, 0x0d39, 0x0d3c, 0x0d4a, 0x0d4e, 0x0d54, 0x0d5c, 0x0d63, - 0x0d6b, 0x0d71, 0x0d75, 0x0d7b, 0x0d81, 0x0d86, 0x0d8a, 0x0d92, - 0x0da2, 0x0db0, 0x0db7, 0x0dc0, 0x0dcb, 0x0dd1, 0x0dd9, 0x0ddf, - 0x0de4, 0x0df1, 0x0df8, 0x0e05, 0x0e0a, 0x0e14, 0x0e1b, 0x0e23, - 0x0e28, 0x0e2d, 0x0e38, 0x0e3f, 0x0e4f, 0x0e53, 0x0e6a, 0x0e70, - 0x0e74, 0x0e7f, 0x0e86, 0x0e8c, 0x0e95, 0x0e9a, 0x0eab, 0x0eb1, - // Entry 1C0 - 1FF - 0x0eb7, 0x0ec7, 0x0ecb, 0x0ede, 0x0ee6, 0x0eee, 0x0ef3, 0x0ef8, - 0x0efd, 0x0f0e, 0x0f18, 0x0f1f, 0x0f27, 0x0f31, 0x0f3a, 0x0f40, - 0x0f52, 0x0f6b, 0x0f77, 0x0f85, 0x0f85, 0x0f8d, 0x0f98, 0x0f98, - 0x0fa6, 0x0fad, 0x0fbe, 0x0fc9, 0x0fe5, 0x0fef, 0x0ff7, 0x1007, - 0x100f, 0x100f, 0x1014, 0x101c, 0x101c, 0x1021, 0x1028, 0x1031, - 0x1034, 0x103b, 0x1040, 0x1055, 0x105c, 0x1061, 0x1068, 0x1072, - 0x1079, 0x107e, 0x1085, 0x108b, 0x1094, 0x10a5, 0x10ab, 0x10af, - 0x10b3, 0x10b9, 0x10c8, 0x10d6, 0x10d6, 0x10df, 0x10e3, 0x10f3, - // Entry 200 - 23F - 0x10f9, 0x10f9, 0x1100, 0x1110, 0x111c, 0x1129, 0x1136, 0x113d, - 0x113d, 0x1149, 0x114e, 0x1152, 0x1152, 0x1158, 0x115c, 0x1168, - 0x1170, 0x1187, 0x1191, 0x1191, 0x1195, 0x119a, 0x119e, 0x11a5, - 0x11aa, 0x11af, 0x11b2, 0x11b9, 0x11c0, 0x11c7, 0x11ce, 0x11d4, - 0x11dc, 0x11e7, 0x11f0, 0x11f6, 0x11fc, 0x11fc, 0x1205, 0x1209, - 0x1210, 0x1217, 0x121e, 0x1229, 0x1249, 0x124f, 0x124f, 0x1256, - 0x126b, 0x126e, 0x126e, 0x1272, 0x1283, 0x1283, 0x1283, 0x1288, - 0x128d, 0x129f, 0x12a7, 0x12ac, 0x12b1, 0x12b9, 0x12bb, 0x12c1, - // Entry 240 - 27F - 0x12c1, 0x12c5, 0x12c8, 0x12d2, 0x12d9, 0x12de, 0x12e7, 0x12f0, - 0x12f7, 0x1306, 0x1314, 0x131a, 0x1336, 0x133b, 0x135a, 0x1360, - 0x1379, 0x1379, 0x1391, 0x13b1, 0x13c2, 0x13d0, 0x13e1, 0x13f7, - 0x141d, 0x1430, 0x1446, 0x1446, 0x1456, 0x146b, 0x1481, 0x148a, - 0x14a2, 0x14b6, 0x14c0, 0x14d3, 0x14e5, 0x14f7, 0x150b, - }, - }, - { // gl - "afarabkhazoafrikaansakanamháricoaragonésárabeassamésavaraimaráacerbaixan" + - "obaskirbielorrusobúlgarobislamabambarobengalítibetanobretónbosníacoc" + - "atalánchechenochamorrocorsochecoeslavo eclesiásticochuvaxogalésdinam" + - "arquésalemándivehidzongkhaewegregoinglésesperantoespañolestonianoéus" + - "caropersafulafinésfidxianoferoésfrancésfrisón occidentalirlandésgaél" + - "ico escocésgalegoguaraníguxaratímanxhausahebreohindicroatacrioulo ha" + - "itianohúngaroarmeniohererointerlinguaindonesioiboyi sichuanésidoisla" + - "ndésitalianoinuktitutxaponésxavanésxeorxianokongokikuyukuanyamacasac" + - "ogroenlandéskhmercanaréscoreanocanuricachemirkurdokomicórnicokirguiz" + - "latínluxemburguésgandalimburguéslingalalaosianolituanoluba-katangale" + - "tónmalgaxemarshalésmaorímacedoniomalabarmongolmarathimalaiomaltésbir" + - "manonauruanondebele setentrionalnepalíndonganeerlandésnoruegués nyno" + - "rsknoruegués bokmålndebele meridionalnavajonyanjaoccitanooromooriyao" + - "ssetiopanxabianopolacopaxtoportuguésquechuaromancherundiromanésrusor" + - "uandéssánscritosardosindhisaami setentrionalsangocingaléseslovacoesl" + - "ovenosamoanoshonasomalíalbanésserbioswazisesothosundanéssuecosuahili" + - "támiltelugutaxicotailandéstigriñaturcomántswanatonganoturcotsongatár" + - "tarotahitianouigurucraínourdúuzbecovendavietnamitavolapukvalónwólofx" + - "osayiddishyorubachinészulúachinésacholíadangmeadigueoaghemainualeuti" + - "anoaltai meridionalangikaarameomapuchearapahoasuasturianoawadhibalin" + - "ésbasaabembabenabaluchi occidentalbhojpuribinisiksikábodobuginésbli" + - "ncebuanokigachuukesemarichoctawcherokeecheyennekurdo soraníseselwa (" + - "crioulo das Seychelles)dakotadargwataitadogribzarmabaixo sorbioduala" + - "jola-fonyidazagaembuefikexipcio antigoekajukewondofilipinofonfriulan" + - "ogagagauzge’ezkiribatianogorontalogrego antigoalemán suízogusiigwich" + - "ʼinhawaianohiligaynonhmongalto sorbiohupaibanibibioilocanoinguxoloj" + - "banngombamachamecabilakachinjjukambacabardianotyapmakondecaboverdian" + - "okorokhasikoyra chiinikakokalenjinkimbundukomi permiokonkanikpelleca" + - "rachaio-bálcaracareliokurukhshambalabafiakölschkumykladinolangilezgu" + - "iolakotaloziluri setentrionalluba-lulualundaluomizoluyiamadurésmagah" + - "imaithilimakasarmasaimokshamendemerucrioulo mauricianomakhuwa-meetto" + - "meta’micmacminangkabaumanipurimohawkmossimundangvarias linguascreekm" + - "irandéserzyamazandaranínapolitanonamabaixo alemánnewariniasniueanokw" + - "asiongiemboonnogain’kosesotho sa leboanuernyankolepangasinanpampanga" + - "papiamentopalauanopidgin nixerianoprusianoquichérapanuirarotonganoro" + - "mboaromanésrwasandawesakhasamburusantalingambaysangusicilianoescocés" + - "kurdo meridionalsenakoyraboro sennitachelhitshansaami meridionalsaam" + - "i de Lulesaami de Inarisaami skoltsoninkesranan tongosahosukumacomor" + - "ianosiríacotemnetesotetuntigréklingontok pisintarokotumbukatuvaluano" + - "tasawaqtuvanianotamazight de Marrocos centraludmurtoumbundulingua de" + - "scoñecidavaivunjowalserwolayttawaray-waraywalrpiricalmucosogayangben" + - "yembacantonéstamazight marroquí estándarzunisen contido lingüísticoz" + - "azakiárabe estándar modernoalemán austríacoalto alemán suízoinglés a" + - "ustralianoinglés canadenseinglés británicoinglés estadounidenseespañ" + - "ol de Américaespañol de Españaespañol de Méxicofrancés canadensefran" + - "cés suízobaixo saxónflamengoportugués do Brasilportugués de Portugal" + - "moldavoserbocroatasuahili congoléschinés simplificadochinés tradicio" + - "nal", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000b, 0x000b, 0x0014, 0x0018, 0x0021, 0x002a, - 0x0030, 0x0038, 0x003c, 0x0043, 0x004e, 0x0054, 0x005e, 0x0066, - 0x006d, 0x0074, 0x007c, 0x0084, 0x008b, 0x0094, 0x009c, 0x00a4, - 0x00ac, 0x00b1, 0x00b1, 0x00b6, 0x00ca, 0x00d1, 0x00d7, 0x00e3, - 0x00ea, 0x00f0, 0x00f8, 0x00fb, 0x0100, 0x0107, 0x0110, 0x0118, - 0x0121, 0x0129, 0x012e, 0x0132, 0x0138, 0x0140, 0x0147, 0x014f, - 0x0161, 0x016a, 0x017b, 0x0181, 0x0189, 0x0192, 0x0196, 0x019b, - 0x01a1, 0x01a6, 0x01a6, 0x01ac, 0x01bc, 0x01c4, 0x01cb, 0x01d1, - // Entry 40 - 7F - 0x01dc, 0x01e5, 0x01e5, 0x01e8, 0x01f5, 0x01f5, 0x01f8, 0x0201, - 0x0209, 0x0212, 0x021a, 0x0222, 0x022b, 0x0230, 0x0236, 0x023e, - 0x0244, 0x0250, 0x0255, 0x025d, 0x0264, 0x026a, 0x0272, 0x0277, - 0x027b, 0x0283, 0x028a, 0x0290, 0x029d, 0x02a2, 0x02ad, 0x02b4, - 0x02bc, 0x02c3, 0x02cf, 0x02d5, 0x02dc, 0x02e6, 0x02ec, 0x02f5, - 0x02fc, 0x0302, 0x0309, 0x030f, 0x0316, 0x031d, 0x0325, 0x0339, - 0x0340, 0x0346, 0x0351, 0x0363, 0x0375, 0x0387, 0x038d, 0x0393, - 0x039b, 0x039b, 0x03a0, 0x03a5, 0x03ac, 0x03b6, 0x03b6, 0x03bc, - // Entry 80 - BF - 0x03c1, 0x03cb, 0x03d2, 0x03da, 0x03df, 0x03e7, 0x03eb, 0x03f3, - 0x03fd, 0x0402, 0x0408, 0x041a, 0x041f, 0x0428, 0x0430, 0x0438, - 0x043f, 0x0444, 0x044b, 0x0453, 0x0459, 0x045e, 0x0465, 0x046e, - 0x0473, 0x047a, 0x0480, 0x0486, 0x048c, 0x0496, 0x049e, 0x04a7, - 0x04ad, 0x04b4, 0x04b9, 0x04bf, 0x04c7, 0x04d0, 0x04d5, 0x04dd, - 0x04e2, 0x04e8, 0x04ed, 0x04f7, 0x04fe, 0x0504, 0x050a, 0x050e, - 0x0515, 0x051b, 0x051b, 0x0522, 0x0527, 0x052f, 0x0536, 0x053d, - 0x0544, 0x0544, 0x0544, 0x0549, 0x054d, 0x054d, 0x054d, 0x0556, - // Entry C0 - FF - 0x0556, 0x0566, 0x0566, 0x056c, 0x0572, 0x0579, 0x0579, 0x0580, - 0x0580, 0x0580, 0x0580, 0x0580, 0x0580, 0x0583, 0x0583, 0x058c, - 0x058c, 0x0592, 0x0592, 0x059a, 0x059a, 0x059f, 0x059f, 0x059f, - 0x059f, 0x059f, 0x05a4, 0x05a4, 0x05a8, 0x05a8, 0x05a8, 0x05ba, - 0x05c2, 0x05c2, 0x05c6, 0x05c6, 0x05c6, 0x05ce, 0x05ce, 0x05ce, - 0x05ce, 0x05ce, 0x05d2, 0x05d2, 0x05d2, 0x05da, 0x05da, 0x05de, - 0x05de, 0x05de, 0x05de, 0x05de, 0x05de, 0x05de, 0x05e5, 0x05e9, - 0x05e9, 0x05e9, 0x05f1, 0x05f5, 0x05f5, 0x05fc, 0x05fc, 0x0604, - // Entry 100 - 13F - 0x060c, 0x0619, 0x0619, 0x0619, 0x0619, 0x0639, 0x0639, 0x063f, - 0x0645, 0x064a, 0x064a, 0x064a, 0x0650, 0x0650, 0x0655, 0x0655, - 0x0661, 0x0661, 0x0666, 0x0666, 0x0670, 0x0670, 0x0676, 0x067a, - 0x067e, 0x067e, 0x068c, 0x0692, 0x0692, 0x0692, 0x0692, 0x0698, - 0x0698, 0x0698, 0x06a0, 0x06a0, 0x06a3, 0x06a3, 0x06a3, 0x06a3, - 0x06a3, 0x06a3, 0x06a3, 0x06ab, 0x06ad, 0x06b3, 0x06b3, 0x06b3, - 0x06b3, 0x06b3, 0x06ba, 0x06c5, 0x06c5, 0x06c5, 0x06c5, 0x06c5, - 0x06c5, 0x06ce, 0x06ce, 0x06ce, 0x06da, 0x06e8, 0x06e8, 0x06e8, - // Entry 140 - 17F - 0x06ed, 0x06f6, 0x06f6, 0x06f6, 0x06fe, 0x06fe, 0x0708, 0x0708, - 0x070d, 0x0718, 0x0718, 0x071c, 0x0720, 0x0726, 0x072d, 0x0733, - 0x0733, 0x0733, 0x0739, 0x073f, 0x0746, 0x0746, 0x0746, 0x0746, - 0x0746, 0x074c, 0x0752, 0x0755, 0x075a, 0x075a, 0x0764, 0x0764, - 0x0768, 0x076f, 0x077b, 0x077b, 0x077f, 0x077f, 0x0784, 0x0784, - 0x0790, 0x0790, 0x0790, 0x0794, 0x079c, 0x07a4, 0x07af, 0x07b6, - 0x07b6, 0x07bc, 0x07ce, 0x07ce, 0x07ce, 0x07d5, 0x07db, 0x07e3, - 0x07e8, 0x07ef, 0x07f4, 0x07f4, 0x07fa, 0x07ff, 0x07ff, 0x07ff, - // Entry 180 - 1BF - 0x0806, 0x0806, 0x0806, 0x0806, 0x080c, 0x080c, 0x080c, 0x080c, - 0x0810, 0x0821, 0x0821, 0x082b, 0x082b, 0x0830, 0x0833, 0x0837, - 0x083c, 0x083c, 0x083c, 0x0844, 0x0844, 0x084a, 0x0852, 0x0859, - 0x0859, 0x085e, 0x085e, 0x0864, 0x0864, 0x0869, 0x086d, 0x087f, - 0x087f, 0x088d, 0x0894, 0x089a, 0x08a5, 0x08a5, 0x08ad, 0x08b3, - 0x08b8, 0x08b8, 0x08bf, 0x08cd, 0x08d2, 0x08db, 0x08db, 0x08db, - 0x08db, 0x08e0, 0x08ec, 0x08ec, 0x08f6, 0x08fa, 0x0907, 0x090d, - 0x0911, 0x0918, 0x0918, 0x091e, 0x0927, 0x092c, 0x092c, 0x092c, - // Entry 1C0 - 1FF - 0x0932, 0x0942, 0x0946, 0x0946, 0x0946, 0x094e, 0x094e, 0x094e, - 0x094e, 0x094e, 0x0958, 0x0958, 0x0960, 0x096a, 0x0972, 0x0972, - 0x0982, 0x0982, 0x0982, 0x0982, 0x0982, 0x0982, 0x0982, 0x0982, - 0x0982, 0x098a, 0x098a, 0x0991, 0x0991, 0x0991, 0x0998, 0x09a3, - 0x09a3, 0x09a3, 0x09a8, 0x09a8, 0x09a8, 0x09a8, 0x09a8, 0x09b1, - 0x09b4, 0x09bb, 0x09c0, 0x09c0, 0x09c7, 0x09c7, 0x09ce, 0x09ce, - 0x09d5, 0x09da, 0x09e3, 0x09eb, 0x09eb, 0x09fb, 0x09fb, 0x09ff, - 0x09ff, 0x09ff, 0x0a0e, 0x0a0e, 0x0a0e, 0x0a17, 0x0a1b, 0x0a1b, - // Entry 200 - 23F - 0x0a1b, 0x0a1b, 0x0a1b, 0x0a2b, 0x0a38, 0x0a46, 0x0a51, 0x0a58, - 0x0a58, 0x0a64, 0x0a64, 0x0a68, 0x0a68, 0x0a6e, 0x0a6e, 0x0a6e, - 0x0a77, 0x0a77, 0x0a7f, 0x0a7f, 0x0a7f, 0x0a84, 0x0a88, 0x0a88, - 0x0a8d, 0x0a93, 0x0a93, 0x0a93, 0x0a93, 0x0a9a, 0x0a9a, 0x0a9a, - 0x0a9a, 0x0a9a, 0x0aa3, 0x0aa3, 0x0aa9, 0x0aa9, 0x0aa9, 0x0aa9, - 0x0ab0, 0x0ab9, 0x0ac0, 0x0ac9, 0x0ae6, 0x0aed, 0x0aed, 0x0af4, - 0x0b07, 0x0b0a, 0x0b0a, 0x0b0a, 0x0b0a, 0x0b0a, 0x0b0a, 0x0b0a, - 0x0b0f, 0x0b15, 0x0b1d, 0x0b28, 0x0b28, 0x0b30, 0x0b30, 0x0b37, - // Entry 240 - 27F - 0x0b37, 0x0b3b, 0x0b3b, 0x0b3b, 0x0b42, 0x0b47, 0x0b47, 0x0b50, - 0x0b50, 0x0b50, 0x0b50, 0x0b50, 0x0b6d, 0x0b71, 0x0b8a, 0x0b90, - 0x0ba8, 0x0ba8, 0x0bba, 0x0bcd, 0x0be0, 0x0bf1, 0x0c03, 0x0c19, - 0x0c2d, 0x0c40, 0x0c53, 0x0c53, 0x0c65, 0x0c74, 0x0c80, 0x0c88, - 0x0c9c, 0x0cb2, 0x0cb9, 0x0cc4, 0x0cd5, 0x0ce9, 0x0cfc, - }, - }, - { // gsw - "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" + - "ischAwarischAymaraAserbaidschanischBaschkirischWiissrussischBulgaari" + - "schBislamaBambaraBengalischTibeetischBrötoonischBosnischKatalaanisch" + - "TschetscheenischChamorroKorsischCreeTschechischChileslawischTschuwas" + - "chischWalisischTänischTüütschMalediivischDschongkhaEweGriechischÄngl" + - "ischEschperantoSchpanischEestnischBaskischPersischFulFinnischFidschi" + - "anischFäröischFranzösischFriesischIirischSchottisch-GäälischGalizisc" + - "hGuaraniGujaratiManx-GäälischHaussaHebräischHindiHiri-MotuKroazischH" + - "aitischUngarischArmenischHereroInterlinguaIndonesischInterlingueIgbo" + - "Sezuanischs YiInupiakIdoIisländischItaliänischInukitutJapanischJavan" + - "ischGeorgischKongolesischKikuyu-SchpraachKwanyamaKasachischGröönländ" + - "ischKambodschanischKannadaKoreaanischKanuri-SchpraachKaschmirischKur" + - "dischKomi-SchpraachKornischKirgiisischLatiinLuxemburgischGanda-Schpr" + - "aachLimburgischLingalaLaozischLitauischLubaLettischMadagassischMarsc" + - "hallesischMaoriMazedonischMalayalamMongolischMarathiMalaiischMaltesi" + - "schBirmanischNauruischNord-Ndebele-SchpraachNepalesischNdongaNiderlä" + - "ndischNorwegisch NynorskNorwegisch BokmålSüüd-Ndebele-SchpraachNavaj" + - "o-SchpraachChewa-SchpraachOkzitanischOjibwa-SchpraachOromoOrijaOssez" + - "ischPandschabischPaliPolnischPaschtuPortugiisischQuechuaRätoromanisc" + - "hRundi-SchpraachRumänischRussischRuandischSanschkritSardischSindhiNo" + - "rd-SamischSangoSinghalesischSlowakischSlowenischSamoanischSchhonaSom" + - "aliAlbanischSerbischSwaziSüüd-Sotho-SchpraachSundanesischSchwedischS" + - "uaheliTamilischTeluguTadschikischThailändischTigrinjaTurkmenischTswa" + - "na-SchpraachTongaischTürkischTsongaTatarischTahitischUigurischUkrain" + - "ischUrduUsbekischVenda-SchpraachVietnamesischVolapükWallonischWolofX" + - "hosaJiddischYorubaZhuangChineesischZuluAcehAcholiAdangmeAdygaiAfrihi" + - "liAinuAkkadischAleutischSüüd-AltaischAltänglischAngikaAramääischArau" + - "kanischArapahoArawakAschturianischAwadhiBelutschischBalinesischBasaa" + - "BedauyeBembaBhodschpuriBikolischBiniBlackfoot-SchpraachBraj-BhakhaBu" + - "rjatischBugineesischBlinCaddoKariibischAtsamCebuanoTschibtschaTschag" + - "ataischTrukesischTscheremissischChinookChoctawChipewyanCherokeeCheye" + - "nneKoptischKrimtatarischKaschubischTakotaTargiinischDelaware-Schpraa" + - "chSlaveyTogribTinkaTogriNidersorbischTualaMittelniderländischTiulaEf" + - "ikischAltägyptischEkajukElamischMittelänglischEwondoPangwe-Schpraach" + - "FilipinoFonMittelfranzösischAltfranzösischNordfriesischOschtfriesisc" + - "hFriulischGaGayoGbayaGeezGilbertesischMittelhochtüütschAlthochtüütsc" + - "hGondiMongondouGotischGreboAltgriechischSchwiizertüütschKutchinischH" + - "aidaHawaiianischHiligaynonischHethitischMiaoObersorbischHupaIbanisch" + - "IlokanoInguschischLojbanischJüüdisch-PersischJüüdisch-ArabischKaraka" + - "lpakischKabylischKachin-SchpraachJjuKambaKawiKabardinischTyapKoroKha" + - "sischSakischKimbundu-SchpraachKonkaniKosraeanischKpelle-SchpraachKar" + - "atschaiisch-BalkarischKarelischOraon-SchpraachKumükischKutenai-Schpr" + - "aachLadinoLahndanischLambanischLesgischMongoRotse-SchpraachLuba-Lulu" + - "aLuiseno-SchpraachLunda-SchpraachLuo-SchpraachLushai-SchpraachMadure" + - "sischKhottaMaithiliMakassarischManding-SchpraachMassai-SchpraachMoks" + - "chamordwinischMandaresischMende-SchpraachMittelirischMicmac-Schpraac" + - "hMinangkabau-SchpraachMandschurischMeithei-SchpraachMohawk-Schpraach" + - "Mossi-SchpraachMehrschpraachigMuskogee-SchpraachMirandesischMarwaris" + - "chErzyaNeapolitanischNidertüütschNewarischNias-SchpraachNiue-Schpraa" + - "chNogaischAltnordischN’KoNord-Sotho-SchpraachAlt-NewariNyamwezi-Schp" + - "raachNyankoleNyoroNzimaOsage-SchpraachOsmanischPangasinanischMittelp" + - "ersischPampanggan-SchpraachPapiamentoPalauAltpersischPhönikischPonap" + - "eanischAltprovenzalischRajasthaniOschterinsel-SchpraachRarotonganisc" + - "hZigüünerschpraachAromunischSandawe-SchpraachJakutischSamaritanischS" + - "asakSantaliSizilianischSchottischSelkupischAltirischSchan-SchpraachS" + - "idamoSüüd-SamischLule-SamischInari-SamischSkolt-SamischSoninke-Schpr" + - "aachSogdischSrananischSerer-SchpraachSukuma-SchpraachSusuSumerischAl" + - "tsyrischSyrischTemneTereno-SchpraachTetum-SchpraachTigreTiv-Schpraac" + - "hTokelauanischKlingonischTlingit-SchpraachTamaseqTsonga-SchpraachNeu" + - "melanesischTsimshian-SchpraachTumbuka-SchpraachElliceanischTuwinisch" + - "UdmurtischUgaritischMbundu-SchpraachUnbeschtimmti SchpraachVai-Schpr" + - "aachWotischWalamo-SchpraachWarayWasho-SchpraachKalmückischYao-Schpra" + - "achYapesischZapotekischBliss-SymboolZenagaZuni-SchpraachKän schpraac" + - "hliche InhaltZazaÖschtriichischs TüütschSchwiizer HochtüütschAuschtr" + - "alischs ÄnglischKanadischs ÄnglischBritischs ÄnglischAmerikanischs Ä" + - "nglischLatiinamerikanischs SchpanischIbeerischs SchpanischKanadischs" + - " FranzösischSchwiizer FranzösischFläämischBrasilianischs Portugiisis" + - "chIberischs PortugiisischMoldawischSerbo-KroatischVeräifachts Chinee" + - "sischTradizionells Chineesisch", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, - 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008f, - 0x0096, 0x009d, 0x00a7, 0x00b1, 0x00bd, 0x00c5, 0x00d1, 0x00e1, - 0x00e9, 0x00f1, 0x00f5, 0x0100, 0x010d, 0x011b, 0x0124, 0x012c, - 0x0135, 0x0141, 0x014b, 0x014e, 0x0158, 0x0161, 0x016c, 0x0176, - 0x017f, 0x0187, 0x018f, 0x0192, 0x019a, 0x01a7, 0x01b1, 0x01bd, - 0x01c6, 0x01cd, 0x01e2, 0x01eb, 0x01f2, 0x01fa, 0x0209, 0x020f, - 0x0219, 0x021e, 0x0227, 0x0230, 0x0238, 0x0241, 0x024a, 0x0250, - // Entry 40 - 7F - 0x025b, 0x0266, 0x0271, 0x0275, 0x0283, 0x028a, 0x028d, 0x0299, - 0x02a5, 0x02ad, 0x02b6, 0x02bf, 0x02c8, 0x02d4, 0x02e4, 0x02ec, - 0x02f6, 0x0306, 0x0315, 0x031c, 0x0327, 0x0337, 0x0343, 0x034b, - 0x0359, 0x0361, 0x036c, 0x0372, 0x037f, 0x038e, 0x0399, 0x03a0, - 0x03a8, 0x03b1, 0x03b5, 0x03bd, 0x03c9, 0x03d8, 0x03dd, 0x03e8, - 0x03f1, 0x03fb, 0x0402, 0x040b, 0x0415, 0x041f, 0x0428, 0x043e, - 0x0449, 0x044f, 0x045d, 0x046f, 0x0481, 0x0499, 0x04a9, 0x04b8, - 0x04c3, 0x04d3, 0x04d8, 0x04dd, 0x04e6, 0x04f3, 0x04f7, 0x04ff, - // Entry 80 - BF - 0x0506, 0x0513, 0x051a, 0x0528, 0x0537, 0x0541, 0x0549, 0x0552, - 0x055c, 0x0564, 0x056a, 0x0576, 0x057b, 0x0588, 0x0592, 0x059c, - 0x05a6, 0x05ad, 0x05b3, 0x05bc, 0x05c4, 0x05c9, 0x05df, 0x05eb, - 0x05f5, 0x05fc, 0x0605, 0x060b, 0x0617, 0x0624, 0x062c, 0x0637, - 0x0647, 0x0650, 0x0659, 0x065f, 0x0668, 0x0671, 0x067a, 0x0684, - 0x0688, 0x0691, 0x06a0, 0x06ad, 0x06b5, 0x06bf, 0x06c4, 0x06c9, - 0x06d1, 0x06d7, 0x06dd, 0x06e8, 0x06ec, 0x06f0, 0x06f6, 0x06fd, - 0x0703, 0x0703, 0x070b, 0x070b, 0x070f, 0x0718, 0x0718, 0x0721, - // Entry C0 - FF - 0x0721, 0x0730, 0x073c, 0x0742, 0x074e, 0x0759, 0x0759, 0x0760, - 0x0760, 0x0760, 0x0766, 0x0766, 0x0766, 0x0766, 0x0766, 0x0774, - 0x0774, 0x077a, 0x0786, 0x0791, 0x0791, 0x0796, 0x0796, 0x0796, - 0x0796, 0x079d, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, - 0x07ad, 0x07b6, 0x07ba, 0x07ba, 0x07ba, 0x07cd, 0x07cd, 0x07cd, - 0x07d8, 0x07d8, 0x07d8, 0x07d8, 0x07e2, 0x07ee, 0x07ee, 0x07f2, - 0x07f2, 0x07f7, 0x0801, 0x0801, 0x0806, 0x0806, 0x080d, 0x080d, - 0x0818, 0x0825, 0x082f, 0x083e, 0x0845, 0x084c, 0x0855, 0x085d, - // Entry 100 - 13F - 0x0865, 0x0865, 0x086d, 0x086d, 0x087a, 0x087a, 0x0885, 0x088b, - 0x0896, 0x0896, 0x08a8, 0x08ae, 0x08b4, 0x08b9, 0x08b9, 0x08be, - 0x08cb, 0x08cb, 0x08d0, 0x08e4, 0x08e4, 0x08e9, 0x08e9, 0x08e9, - 0x08f1, 0x08f1, 0x08fe, 0x0904, 0x090c, 0x091b, 0x091b, 0x0921, - 0x0921, 0x0931, 0x0939, 0x0939, 0x093c, 0x093c, 0x094e, 0x095d, - 0x095d, 0x096a, 0x0978, 0x0981, 0x0983, 0x0983, 0x0983, 0x0987, - 0x098c, 0x098c, 0x0990, 0x099d, 0x099d, 0x09b0, 0x09c0, 0x09c0, - 0x09c5, 0x09ce, 0x09d5, 0x09da, 0x09e7, 0x09f9, 0x09f9, 0x09f9, - // Entry 140 - 17F - 0x09f9, 0x0a04, 0x0a09, 0x0a09, 0x0a15, 0x0a15, 0x0a23, 0x0a2d, - 0x0a31, 0x0a3d, 0x0a3d, 0x0a41, 0x0a49, 0x0a49, 0x0a50, 0x0a5b, - 0x0a5b, 0x0a5b, 0x0a65, 0x0a65, 0x0a65, 0x0a78, 0x0a8b, 0x0a8b, - 0x0a99, 0x0aa2, 0x0ab2, 0x0ab5, 0x0aba, 0x0abe, 0x0aca, 0x0aca, - 0x0ace, 0x0ace, 0x0ace, 0x0ace, 0x0ad2, 0x0ad2, 0x0ada, 0x0ae1, - 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0ae1, 0x0af3, 0x0af3, 0x0afa, - 0x0b06, 0x0b16, 0x0b2f, 0x0b2f, 0x0b2f, 0x0b38, 0x0b47, 0x0b47, - 0x0b47, 0x0b47, 0x0b51, 0x0b62, 0x0b68, 0x0b68, 0x0b73, 0x0b7d, - // Entry 180 - 1BF - 0x0b85, 0x0b85, 0x0b85, 0x0b85, 0x0b85, 0x0b85, 0x0b8a, 0x0b8a, - 0x0b99, 0x0b99, 0x0b99, 0x0ba3, 0x0bb4, 0x0bc3, 0x0bd0, 0x0be0, - 0x0be0, 0x0be0, 0x0be0, 0x0beb, 0x0beb, 0x0bf1, 0x0bf9, 0x0c05, - 0x0c16, 0x0c26, 0x0c26, 0x0c38, 0x0c44, 0x0c53, 0x0c53, 0x0c53, - 0x0c5f, 0x0c5f, 0x0c5f, 0x0c6f, 0x0c84, 0x0c91, 0x0ca2, 0x0cb2, - 0x0cc1, 0x0cc1, 0x0cc1, 0x0cd0, 0x0ce2, 0x0cee, 0x0cf8, 0x0cf8, - 0x0cf8, 0x0cfd, 0x0cfd, 0x0cfd, 0x0d0b, 0x0d0b, 0x0d19, 0x0d22, - 0x0d30, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d3e, 0x0d46, 0x0d51, 0x0d51, - // Entry 1C0 - 1FF - 0x0d57, 0x0d6b, 0x0d6b, 0x0d75, 0x0d87, 0x0d8f, 0x0d94, 0x0d99, - 0x0da8, 0x0db1, 0x0dbf, 0x0dcd, 0x0de1, 0x0deb, 0x0df0, 0x0df0, - 0x0df0, 0x0df0, 0x0df0, 0x0dfb, 0x0dfb, 0x0e06, 0x0e06, 0x0e06, - 0x0e12, 0x0e12, 0x0e22, 0x0e22, 0x0e22, 0x0e2c, 0x0e42, 0x0e50, - 0x0e50, 0x0e50, 0x0e50, 0x0e63, 0x0e63, 0x0e63, 0x0e63, 0x0e6d, - 0x0e6d, 0x0e7e, 0x0e87, 0x0e94, 0x0e94, 0x0e99, 0x0ea0, 0x0ea0, - 0x0ea0, 0x0ea0, 0x0eac, 0x0eb6, 0x0eb6, 0x0eb6, 0x0eb6, 0x0eb6, - 0x0eb6, 0x0ec0, 0x0ec0, 0x0ec9, 0x0ec9, 0x0ec9, 0x0ed8, 0x0ed8, - // Entry 200 - 23F - 0x0ede, 0x0ede, 0x0ede, 0x0eec, 0x0ef8, 0x0f05, 0x0f12, 0x0f23, - 0x0f2b, 0x0f35, 0x0f44, 0x0f44, 0x0f44, 0x0f54, 0x0f58, 0x0f61, - 0x0f61, 0x0f6b, 0x0f72, 0x0f72, 0x0f72, 0x0f77, 0x0f77, 0x0f87, - 0x0f96, 0x0f9b, 0x0fa8, 0x0fb5, 0x0fb5, 0x0fc0, 0x0fd1, 0x0fd1, - 0x0fd8, 0x0fe8, 0x0ff6, 0x0ff6, 0x0ff6, 0x0ff6, 0x1009, 0x1009, - 0x101a, 0x1026, 0x1026, 0x102f, 0x102f, 0x1039, 0x1043, 0x1053, - 0x106a, 0x1077, 0x1077, 0x1077, 0x1077, 0x1077, 0x107e, 0x107e, - 0x107e, 0x107e, 0x108e, 0x1093, 0x10a2, 0x10a2, 0x10a2, 0x10ae, - // Entry 240 - 27F - 0x10ae, 0x10ae, 0x10bb, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, - 0x10cf, 0x10dc, 0x10dc, 0x10e2, 0x10e2, 0x10f0, 0x110a, 0x110e, - 0x110e, 0x110e, 0x1128, 0x113f, 0x1157, 0x116b, 0x117e, 0x1195, - 0x11b3, 0x11c8, 0x11c8, 0x11c8, 0x11df, 0x11f5, 0x11f5, 0x1200, - 0x121c, 0x1233, 0x123d, 0x124c, 0x124c, 0x1264, 0x127d, - }, - }, - { // gu - guLangStr, - guLangIdx, - }, - { // guz - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluEkegusii", - []uint16{ // 321 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, - // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, - // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 140 - 17F - 0x0171, - }, - }, - { // gv - "Gaelg", - []uint16{ // 55 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, - }, - }, - { // ha - "AkanAmharikLarabciBelarusanciBulgaranciBengaliHarshen CakJamusanciGirkan" + - "ciTuranciIspaniyanciParisanciFaransanciHausaHarshen HindiHarshen Hun" + - "gariHarshen IndunusiyaInyamuranciItaliyanciJapananciJabananciHarshen" + - " KimarHarshen KoreyaHarshen MalaiBurmanciNepaliHolanciPunjabiHarshen" + - " PolanHarshen PortugalRomaniyanciRashanciKiniyaruwandaSomaliHarshen " + - "SuwedanTamilThaiHarshen TurkiyyaHarshen YukurenHarshen UrduHarshen B" + - "iyetinamYarbanciHarshen SinHarshen Zulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0027, - 0x0027, 0x0027, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0042, 0x0042, 0x0042, 0x0042, 0x004a, 0x0051, 0x0051, 0x005c, - 0x005c, 0x005c, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006f, - 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0074, - 0x0074, 0x0081, 0x0081, 0x0081, 0x0081, 0x0090, 0x0090, 0x0090, - // Entry 40 - 7F - 0x0090, 0x00a2, 0x00a2, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00b7, 0x00b7, 0x00c0, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, - 0x00c9, 0x00c9, 0x00d6, 0x00d6, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00f1, 0x00f1, 0x00f9, 0x00f9, 0x00f9, - 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x011a, - // Entry 80 - BF - 0x011a, 0x012a, 0x012a, 0x012a, 0x012a, 0x0135, 0x013d, 0x014a, - 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, - 0x014a, 0x014a, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, - 0x015f, 0x015f, 0x0164, 0x0164, 0x0164, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0187, - 0x0193, 0x0193, 0x0193, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01ac, 0x01ac, 0x01b7, 0x01c3, - }, - }, - { // haw - "ʻAlapiaWaleKenemakaKelemāniaHelenePelekāniaPanioloPīkīPalaniʻAilikiHeber" + - "aʻĪkāliaKepanīKōleaLākinaMāoriHōlaniPukikīLūkiaKāmoaKuekeneTongaPola" + - "polaWiekanamaPākēKuikilani KelemāniaʻŌlelo HawaiʻiʻIke ʻole ‘ia a kū" + - "pono ʻole paha ka ʻōleloPelekāne Nū HōlaniPelekāne KanakāPelekānia P" + - "ekekānePelekānia ʻAmelikaPalani KanakāKuikilaniPukikī PalakilaPākē H" + - "oʻomaʻalahi ʻiaPākē Kuʻuna", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x000c, 0x0014, - 0x001e, 0x001e, 0x001e, 0x001e, 0x0024, 0x002e, 0x002e, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003b, 0x003b, 0x0041, - 0x0041, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - // Entry 40 - 7F - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x0059, 0x0059, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, - // Entry 80 - BF - 0x007a, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x0094, 0x0099, 0x0099, 0x0099, 0x0099, 0x00a1, 0x00a1, 0x00a1, - 0x00a1, 0x00a1, 0x00a1, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - // Entry C0 - FF - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - // Entry 100 - 13F - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00c4, 0x00c4, 0x00c4, - // Entry 140 - 17F - 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - // Entry 180 - 1BF - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - // Entry 1C0 - 1FF - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - // Entry 200 - 23F - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00d5, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - // Entry 240 - 27F - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x011c, 0x012d, 0x0141, 0x0155, - 0x0155, 0x0155, 0x0155, 0x0155, 0x0163, 0x016c, 0x016c, 0x016c, - 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x0196, 0x01a4, - }, - }, - { // he - heLangStr, - heLangIdx, - }, - { // hi - hiLangStr, - hiLangIdx, - }, - { // hr - hrLangStr, - hrLangIdx, - }, - { // hsb - "afaršćinaabchazišćinaafrikaanšćinaakanšćinaamharšćinaaragonšćinaarabšćin" + - "aasamšćinaawaršćinaaymaršćinaazerbajdźanšćinabaškiršćinaběłorušćinab" + - "ołharšćinabislamšćinabambarabengalšćinatibetšćinabretonšćinabosnišći" + - "nakatalanšćinačamoršćinakorsišćinakričěšćinawalizišćinadanšćinaněmči" + - "nadivehidzongkhaewegrjekšćinajendźelšćinaesperantošpanišćinaestišćin" + - "abaskišćinapersišćinafinšćinafidźišćinafäröšćinafrancošćinafrizišćin" + - "airšćinašotiska gelšćinagalicišćinaguaranigujaratimanšćinahausahebre" + - "jšćinahindišćinachorwatšćinahaitišćinamadźaršćinaarmenšćinainterling" + - "uaindonešćinaigbosichuan yiinupiakidoislandšćinaitalšćinainuitšćinaj" + - "apanšćinajavašćinageorgišćinakikuyukazachšćinagröndlandšćinakhmeršći" + - "nakannadšćinakorejšćinakašmiršćinakurdišćinakornišćinakirgišćinałaćo" + - "nšćinaluxemburgšćinagandšćinalimburšćinalingalalaošćinalitawšćinalub" + - "a-katangaletišćinamalagassišćinamaoršćinamakedonšćinamalajamšćinamon" + - "golšćinamaratišćinamalajšćinamaltašćinaburmašćinanaurušćinasewjero-n" + - "debelenepalšćinanižozemšćinanorwegšćina (nynorsk)norwegšćina (bokmål" + - ")navahookcitanšćinaoromoorijšćinapandźabšćinapólšćinapaštunšćinaport" + - "ugalšćinakečuaretoromanšćinakirundišćinarumunšćinarušćinakinjarwanda" + - "sanskritsardinšćinasindhišćinasewjerosamišćinasangosinghalšćinasłowa" + - "kšćinasłowjenšćinasamoašćinašonašćinasomališćinaalbanšćinaserbišćina" + - "siswatijužnosotšćina (Sesotho)sundanezišćinašwedšćinasuahelšćinatami" + - "lšćinatelugutadźikšćinathailandšćinatigrinšćinaturkmenšćinatswanaton" + - "gašćinaturkowšćinatsongatataršćinatahitišćinaujguršćinaukrainšćinaur" + - "dušćinauzbekšćinavietnamšćinavolapükwalonšćinawolofxhosajidišćinajor" + - "ubašćinazhuangchinšćinazulušćinaaghemšćinaanglosakšćinaarawkanšćinap" + - "areasturšćinabembabenabodobuginezišćinachigachoctawšćinacherokeesora" + - "nitaitazarmadelnjoserbšćinadualajola-fonyiembufilipinšćinagagauzišći" + - "nagotšćinašwicarska němčinagusiihawaiišćinahornjoserbšćinangombamach" + - "amekabylšćinakambamakondekapverdšćinakoyra chiinikalenjinpermska kom" + - "išćinakonkanišambalabafialangilakotaluoluhyamasaišćinamerumauriciska" + - " kreolšćinamakhuwa-meettometa’mohawkšćinamundangkriknamadelnjoněmčin" + - "akwasion’konuernyankoleprušćinakʼicheʼromborwasamburusangusicilšćina" + - "senakoyra sennitašelhitjužnosamišćinalule-samišćinainari-samišćinask" + - "olt-samišćinasaterfrizišćinatesotasawaqtamazight (srjedźny Marokko)n" + - "jeznata rěčvaivunjosogatamazightžadyn rěčny wobsahmoderna wysokoarab" + - "šćinaawstriska němčinašwicarska wysokoněmčinaawstralska jendźelšćin" + - "akanadiska jendźelšćinabritiska jendźelšćinaameriska jendźelšćinałać" + - "onskoameriska španišćinaeuropska španišćinamexiska španišćinakanadis" + - "ka francošćinašwicarska francošćinaflamšćinabrazilska portugalšćinae" + - "uropska portugalšćinamoldawšćinaserbochorwatšćinakongoska suahelšćin" + - "achinšćina (zjednorjena)chinšćina (tradicionalna)", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000b, 0x0019, 0x0019, 0x0028, 0x0033, 0x003f, 0x004c, - 0x0057, 0x0062, 0x006d, 0x0079, 0x008c, 0x009a, 0x00a9, 0x00b7, - 0x00c4, 0x00cb, 0x00d8, 0x00e4, 0x00f1, 0x00fd, 0x010b, 0x010b, - 0x0118, 0x0124, 0x0127, 0x0132, 0x0132, 0x0132, 0x013f, 0x0149, - 0x0152, 0x0158, 0x0160, 0x0163, 0x016f, 0x017e, 0x0187, 0x0194, - 0x019f, 0x01ab, 0x01b7, 0x01b7, 0x01c1, 0x01ce, 0x01db, 0x01e8, - 0x01f4, 0x01fd, 0x0210, 0x021d, 0x0224, 0x022c, 0x0236, 0x023b, - 0x0248, 0x0254, 0x0254, 0x0262, 0x026e, 0x027c, 0x0288, 0x0288, - // Entry 40 - 7F - 0x0293, 0x02a0, 0x02a0, 0x02a4, 0x02ae, 0x02b5, 0x02b8, 0x02c5, - 0x02d0, 0x02dc, 0x02e8, 0x02f3, 0x0300, 0x0300, 0x0306, 0x0306, - 0x0313, 0x0324, 0x0330, 0x033d, 0x0349, 0x0349, 0x0357, 0x0363, - 0x0363, 0x036f, 0x037b, 0x0389, 0x0399, 0x03a4, 0x03b1, 0x03b8, - 0x03c2, 0x03ce, 0x03da, 0x03e5, 0x03f5, 0x03f5, 0x0400, 0x040e, - 0x041c, 0x0429, 0x0436, 0x0442, 0x044e, 0x045a, 0x0466, 0x0475, - 0x0481, 0x0481, 0x0490, 0x04a7, 0x04be, 0x04be, 0x04c4, 0x04c4, - 0x04d2, 0x04d2, 0x04d7, 0x04e2, 0x04e2, 0x04f1, 0x04f1, 0x04fc, - // Entry 80 - BF - 0x050a, 0x0519, 0x051f, 0x052f, 0x053d, 0x0549, 0x0552, 0x055d, - 0x0565, 0x0572, 0x057f, 0x0591, 0x0596, 0x05a4, 0x05b2, 0x05c1, - 0x05cd, 0x05d9, 0x05e6, 0x05f2, 0x05fe, 0x0605, 0x061f, 0x062f, - 0x063b, 0x0648, 0x0654, 0x065a, 0x0668, 0x0677, 0x0684, 0x0692, - 0x0698, 0x06a4, 0x06b1, 0x06b7, 0x06c3, 0x06d0, 0x06dc, 0x06e9, - 0x06f4, 0x0700, 0x0700, 0x070e, 0x0716, 0x0722, 0x0727, 0x072c, - 0x0737, 0x0744, 0x074a, 0x0755, 0x0760, 0x0760, 0x0760, 0x0760, - 0x0760, 0x0760, 0x0760, 0x076c, 0x076c, 0x076c, 0x076c, 0x076c, - // Entry C0 - FF - 0x076c, 0x076c, 0x077b, 0x077b, 0x077b, 0x0789, 0x0789, 0x0789, - 0x0789, 0x0789, 0x0789, 0x0789, 0x0789, 0x078d, 0x078d, 0x0799, - 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, 0x0799, - 0x0799, 0x0799, 0x079e, 0x079e, 0x07a2, 0x07a2, 0x07a2, 0x07a2, - 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, 0x07a2, - 0x07a2, 0x07a2, 0x07a6, 0x07a6, 0x07a6, 0x07b5, 0x07b5, 0x07b5, - 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07b5, 0x07ba, - 0x07ba, 0x07ba, 0x07ba, 0x07ba, 0x07ba, 0x07c8, 0x07c8, 0x07d0, - // Entry 100 - 13F - 0x07d0, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, 0x07d6, - 0x07d6, 0x07db, 0x07db, 0x07db, 0x07db, 0x07db, 0x07e0, 0x07e0, - 0x07f1, 0x07f1, 0x07f6, 0x07f6, 0x0800, 0x0800, 0x0800, 0x0804, - 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, 0x0804, - 0x0804, 0x0804, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, - 0x0812, 0x0812, 0x0812, 0x0812, 0x0812, 0x0820, 0x0820, 0x0820, - 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, 0x0820, - 0x0820, 0x0820, 0x082a, 0x082a, 0x082a, 0x083e, 0x083e, 0x083e, - // Entry 140 - 17F - 0x0843, 0x0843, 0x0843, 0x0843, 0x0850, 0x0850, 0x0850, 0x0850, - 0x0850, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, 0x0861, - 0x0861, 0x0861, 0x0861, 0x0867, 0x086e, 0x086e, 0x086e, 0x086e, - 0x086e, 0x087a, 0x087a, 0x087a, 0x087f, 0x087f, 0x087f, 0x087f, - 0x087f, 0x0886, 0x0894, 0x0894, 0x0894, 0x0894, 0x0894, 0x0894, - 0x08a0, 0x08a0, 0x08a0, 0x08a0, 0x08a8, 0x08a8, 0x08bb, 0x08c2, - 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08c2, 0x08ca, - 0x08cf, 0x08cf, 0x08cf, 0x08cf, 0x08cf, 0x08d4, 0x08d4, 0x08d4, - // Entry 180 - 1BF - 0x08d4, 0x08d4, 0x08d4, 0x08d4, 0x08da, 0x08da, 0x08da, 0x08da, - 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08da, 0x08dd, 0x08dd, - 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, 0x08e2, - 0x08e2, 0x08ee, 0x08ee, 0x08ee, 0x08ee, 0x08ee, 0x08f2, 0x0909, - 0x0909, 0x0917, 0x091e, 0x091e, 0x091e, 0x091e, 0x091e, 0x092b, - 0x092b, 0x092b, 0x0932, 0x0932, 0x0936, 0x0936, 0x0936, 0x0936, - 0x0936, 0x0936, 0x0936, 0x0936, 0x0936, 0x093a, 0x0949, 0x0949, - 0x0949, 0x0949, 0x0949, 0x094f, 0x094f, 0x094f, 0x094f, 0x094f, - // Entry 1C0 - 1FF - 0x0955, 0x0955, 0x0959, 0x0959, 0x0959, 0x0961, 0x0961, 0x0961, - 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, - 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, 0x0961, - 0x0961, 0x096b, 0x096b, 0x0974, 0x0974, 0x0974, 0x0974, 0x0974, - 0x0974, 0x0974, 0x0979, 0x0979, 0x0979, 0x0979, 0x0979, 0x0979, - 0x097c, 0x097c, 0x097c, 0x097c, 0x0983, 0x0983, 0x0983, 0x0983, - 0x0983, 0x0988, 0x0994, 0x0994, 0x0994, 0x0994, 0x0994, 0x0998, - 0x0998, 0x0998, 0x09a3, 0x09a3, 0x09a3, 0x09ac, 0x09ac, 0x09ac, - // Entry 200 - 23F - 0x09ac, 0x09ac, 0x09ac, 0x09bd, 0x09cd, 0x09de, 0x09ef, 0x09ef, - 0x09ef, 0x09ef, 0x09ef, 0x09ef, 0x0a00, 0x0a00, 0x0a00, 0x0a00, - 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a04, 0x0a04, - 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, - 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, 0x0a04, - 0x0a04, 0x0a04, 0x0a0b, 0x0a0b, 0x0a28, 0x0a28, 0x0a28, 0x0a28, - 0x0a36, 0x0a39, 0x0a39, 0x0a39, 0x0a39, 0x0a39, 0x0a39, 0x0a39, - 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a3e, - // Entry 240 - 27F - 0x0a3e, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a42, - 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a4b, 0x0a4b, 0x0a60, 0x0a60, - 0x0a79, 0x0a79, 0x0a8c, 0x0aa6, 0x0ac0, 0x0ad9, 0x0af1, 0x0b09, - 0x0b29, 0x0b3f, 0x0b54, 0x0b54, 0x0b6b, 0x0b83, 0x0b83, 0x0b8e, - 0x0ba7, 0x0bbf, 0x0bcc, 0x0bdf, 0x0bf5, 0x0c0e, 0x0c29, - }, - }, - { // hu - huLangStr, - huLangIdx, - }, - { // hy - hyLangStr, - hyLangIdx, - }, - { // id - idLangStr, - idLangIdx, - }, - { // ig - "AkanAmariikịArabiikịBelaruusuBọlụgarịaBengaliCheekịJamaanGiriikịOyiboPan" + - "yaPeshanFụrenchAwụsaHindiMagịyaIndonisiaIgboItaloJapaneseJavaKeme, E" + - "titiKoriaMaleyiMịanmaNepaliDọọchPunjabiPoliishiPotokiRumeniaRọshanRụ" + - "wandaSomaliSụwidiishiTamụlụTaịTọkiishiUkureenịUruduViyetịnaamụYoruba" + - "MandarịịnịZulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000e, 0x000e, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0021, 0x0030, - 0x0030, 0x0030, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, - 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x0045, 0x0045, 0x0045, 0x0045, 0x004e, 0x0053, 0x0053, 0x0058, - 0x0058, 0x0058, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0067, - 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x006e, - 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007b, 0x007b, 0x007b, - // Entry 40 - 7F - 0x007b, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, - 0x008d, 0x008d, 0x0095, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, - 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00a9, 0x00af, 0x00af, 0x00b7, 0x00b7, 0x00b7, - 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d5, - // Entry 80 - BF - 0x00d5, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e2, 0x00ea, 0x00f3, - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - 0x00f3, 0x00f3, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, - 0x0105, 0x0105, 0x010f, 0x010f, 0x010f, 0x0114, 0x0114, 0x0114, - 0x0114, 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, - 0x012d, 0x012d, 0x012d, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x0142, 0x0142, 0x0152, 0x0156, - }, - }, - { // ii - "ꄓꇩꉙꑱꇩꉙꑭꀠꑸꉙꃔꇩꉙꆈꌠꉙꑴꄊꆺꉙꏝꀪꉙꁍꄨꑸꉙꊉꇩꉙꍏꇩꉙꅉꀋꌠꅇꂷꀠꑟꁍꄨꑸꉙꈝꐯꍏꇩꉙꀎꋏꍏꇩꉙ", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0012, 0x0012, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - // Entry 40 - 7F - 0x0027, 0x0027, 0x0027, 0x0027, 0x0030, 0x0030, 0x0030, 0x0030, - 0x003c, 0x003c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - // Entry 80 - BF - 0x0045, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry C0 - FF - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry 100 - 13F - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry 140 - 17F - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry 180 - 1BF - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry 1C0 - 1FF - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry 200 - 23F - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - // Entry 240 - 27F - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0093, 0x00a2, - }, - }, - { // is - isLangStr, - isLangIdx, - }, - { // it - itLangStr, - itLangIdx, - }, - { // ja - jaLangStr, - jaLangIdx, - }, - { // jgo - "AlâbɛNjámanŊgɛlɛ̂kAŋgɛlúshiFɛlánciShinwâNdaꞌacú-pʉɔ yi pɛ́ ká kɛ́ jí", - []uint16{ // 561 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x000e, 0x000e, 0x000e, 0x000e, 0x0019, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - // Entry 40 - 7F - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - // Entry 80 - BF - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry 100 - 13F - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry 140 - 17F - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - // Entry 180 - 1BF - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - // Entry 1C0 - 1FF - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - // Entry 200 - 23F - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x005c, - }, - }, - { // jmc - "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" + - "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" + - "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" + - "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" + - "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" + - "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKim" + - "achame", - []uint16{ // 341 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, - 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b, - 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085, - 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097, - // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea, - 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111, - // Entry 80 - BF - 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135, - 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, - 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, - 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry C0 - FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 100 - 13F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 140 - 17F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x01a2, - }, - }, - { // ka - kaLangStr, - kaLangIdx, - }, - { // kab - "TakanitTamahrictTaɛrabtTabilarusitTabulgaritTabengalitTačikitTalmantTagr" + - "ikitTaglizitTaspenyulitTafarisitTafransistTahwasitTahenditTahungarit" + - "TandunisitTigbutTaṭalyanitTajapunitTajavanitTakemritTakuritTamalawit" + - "TaburmisitTanipalitTadučitTapunjabitTapulunitTapurtugalitTarumanitTa" + - "rusitTaruwanditTaṣumalitTaswiditTaṭamulitTaṭaylunditTaṭurkitTukranit" + - "TurdutTabyiṭnamitTayurubitTacinwat, TamundarintTazulutTaqbaylit", - []uint16{ // 346 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0023, 0x002d, - 0x002d, 0x002d, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, - 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0056, 0x0056, 0x0061, - 0x0061, 0x0061, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x007c, - 0x007c, 0x0084, 0x0084, 0x0084, 0x0084, 0x008e, 0x008e, 0x008e, - // Entry 40 - 7F - 0x008e, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, - 0x00aa, 0x00aa, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00d4, 0x00d4, 0x00de, 0x00de, 0x00de, - 0x00e7, 0x00e7, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, - 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00f9, 0x00f9, 0x0102, - // Entry 80 - BF - 0x0102, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x011e, 0x0128, - 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, - 0x0128, 0x0128, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, 0x0133, - 0x013b, 0x013b, 0x0146, 0x0146, 0x0146, 0x0153, 0x0153, 0x0153, - 0x0153, 0x0153, 0x015d, 0x015d, 0x015d, 0x015d, 0x015d, 0x0165, - 0x016b, 0x016b, 0x016b, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0181, 0x0181, 0x0196, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - // Entry C0 - FF - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - // Entry 100 - 13F - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - // Entry 140 - 17F - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x01a6, - }, - }, - { // kam - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluKikamba", - []uint16{ // 349 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, - // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, - // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 140 - 17F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0170, - }, - }, - { // kde - "ChakanChamhaliChalabuChibelalusiChibulgaliaChibanglaChichechiChidyeluman" + - "iChigilichiChiingelezaChihispaniaChiajemiChifalansaChihausaChihindiC" + - "hihungaliChiiongonesiaChiigboChiitalianoChidyapaniChidyavaChikambodi" + - "aChikoleaChimalesiaChibulmaChinepaliChiholanziChipunjabiChipolandiCh" + - "ilenoChilomaniaChilusiChinyalwandaChisomaliChiswidiChitamilChitailan" + - "diChituluchiChiuklaniaChiulduChivietinamuChiyolubaChichinaChizuluChi" + - "makonde", - []uint16{ // 354 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0020, 0x002b, - 0x002b, 0x002b, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x0049, 0x0049, 0x0049, 0x0049, 0x0053, 0x005e, 0x005e, 0x0069, - 0x0069, 0x0069, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0083, - 0x0083, 0x008b, 0x008b, 0x008b, 0x008b, 0x0095, 0x0095, 0x0095, - // Entry 40 - 7F - 0x0095, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00b4, 0x00b4, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00d1, 0x00d1, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb, - 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, - 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0108, 0x0108, 0x0112, - // Entry 80 - BF - 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0123, 0x012a, 0x0136, - 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, 0x0136, - 0x0136, 0x0136, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, - 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry C0 - FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 100 - 13F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 140 - 17F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x01a3, - }, - }, - { // kea - "abkáziuafrikanerakanamárikuárabiasamesaimaraazerbaijanubaxkirbielorusubú" + - "lgarubambarabengalitibetanubretãubosniukatalãutxetxenukórsikutxekutx" + - "uvaxigalesdinamarkesalimãudzonkaevegreguinglessperantuspanholstonian" + - "ubaskupersafinlandesfijianufaroesfransesfríziu osidentalirlandesgale" + - "guguaranigujaratimanksauzaebraikuindikroataaitianuúngaruarméniuindon" + - "éziuibonuosuislandesitalianuinuktitutjaponesjavanesjorjianukikuiuka" + - "zakgroenlandeskmerkanareskorianukaxmirakurdukórnikukirgizlatinluxemb" + - "urgeslugandalausianulituanesletãumalgaximaorimasedóniumalaialammarat" + - "imaláiumaltesbirmanesnepalesolandesnorueges nynorsknorueges bokmålor" + - "omoodíapandjabipulakupaxtopurtugeskexuaromanxirumenurusukiniaruandas" + - "ánskritusindisingalesslovakuslovéniusomalialbanessérviusundanessuek" + - "usuaílitamiltelugutadjikitailandestigriniaturkmenutonganesturkutatar" + - "uigurukranianuurduuzbekivietnamitauolofkozaiorubaxineszuluaghemarauk" + - "anuasubembabenabodoxigaxerokikurdu sentraltaitazarmasórbiu baxuduala" + - "jola-fonyiembufilipinugagauzalimãu suísugusiiavaianusórbiu altuñomba" + - "matxamekabilakambakabuverdianukoira txiinikalenjinkomi-permiakkonkan" + - "ibafiakuaziokitxekoiraboro seniinari samitamazait di Atlas Sentrallí" + - "ngua diskonxedusen kontiudu linguístikuárabi mudernualimãu austriaku" + - "altu alimãu suisuingles australianuingles kanadianuingles britanikui" + - "ngles merkanuspanhol latinu-merkanuspanhol europeuspanhol mexikanufr" + - "anses kanadianufranses suisuflamengupurtuges brazilerupurtuges europ" + - "eurumenu moldávikusuaíli kongolesxines simplifikaduxines tradisional", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, 0x0015, 0x001d, 0x001d, - 0x0023, 0x0029, 0x0029, 0x002f, 0x003a, 0x0040, 0x0049, 0x0051, - 0x0051, 0x0058, 0x005f, 0x0067, 0x006e, 0x0074, 0x007c, 0x0084, - 0x0084, 0x008c, 0x008c, 0x0091, 0x0091, 0x0098, 0x009d, 0x00a7, - 0x00ae, 0x00ae, 0x00b4, 0x00b7, 0x00bc, 0x00c2, 0x00ca, 0x00d1, - 0x00d9, 0x00de, 0x00e3, 0x00e3, 0x00ec, 0x00f3, 0x00f9, 0x0100, - 0x0111, 0x0119, 0x0119, 0x011f, 0x0126, 0x012e, 0x0133, 0x0137, - 0x013e, 0x0142, 0x0142, 0x0148, 0x014f, 0x0156, 0x015e, 0x015e, - // Entry 40 - 7F - 0x015e, 0x0168, 0x0168, 0x016b, 0x0170, 0x0170, 0x0170, 0x0178, - 0x0180, 0x0189, 0x0190, 0x0197, 0x019f, 0x019f, 0x01a5, 0x01a5, - 0x01aa, 0x01b5, 0x01b9, 0x01c0, 0x01c7, 0x01c7, 0x01ce, 0x01d3, - 0x01d3, 0x01db, 0x01e1, 0x01e6, 0x01f1, 0x01f8, 0x01f8, 0x01f8, - 0x0200, 0x0208, 0x0208, 0x020e, 0x0215, 0x0215, 0x021a, 0x0224, - 0x022d, 0x022d, 0x0233, 0x023a, 0x0240, 0x0248, 0x0248, 0x0248, - 0x024f, 0x024f, 0x0256, 0x0266, 0x0276, 0x0276, 0x0276, 0x0276, - 0x0276, 0x0276, 0x027b, 0x0280, 0x0280, 0x0288, 0x0288, 0x028e, - // Entry 80 - BF - 0x0293, 0x029b, 0x02a0, 0x02a7, 0x02a7, 0x02ad, 0x02b1, 0x02bc, - 0x02c6, 0x02c6, 0x02cb, 0x02cb, 0x02cb, 0x02d3, 0x02da, 0x02e3, - 0x02e3, 0x02e3, 0x02e9, 0x02f0, 0x02f7, 0x02f7, 0x02f7, 0x02ff, - 0x0304, 0x030b, 0x0310, 0x0316, 0x031d, 0x0326, 0x032e, 0x0336, - 0x0336, 0x033e, 0x0343, 0x0343, 0x0348, 0x0348, 0x034d, 0x0356, - 0x035a, 0x0360, 0x0360, 0x036a, 0x036a, 0x036a, 0x036f, 0x0373, - 0x0373, 0x0379, 0x0379, 0x037e, 0x0382, 0x0382, 0x0382, 0x0382, - 0x0382, 0x0382, 0x0382, 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, - // Entry C0 - FF - 0x0387, 0x0387, 0x0387, 0x0387, 0x0387, 0x038f, 0x038f, 0x038f, - 0x038f, 0x038f, 0x038f, 0x038f, 0x038f, 0x0392, 0x0392, 0x0392, - 0x0392, 0x0392, 0x0392, 0x0392, 0x0392, 0x0392, 0x0392, 0x0392, - 0x0392, 0x0392, 0x0397, 0x0397, 0x039b, 0x039b, 0x039b, 0x039b, - 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, - 0x039b, 0x039b, 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, - 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, 0x039f, 0x03a3, - 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a9, - // Entry 100 - 13F - 0x03a9, 0x03b6, 0x03b6, 0x03b6, 0x03b6, 0x03b6, 0x03b6, 0x03b6, - 0x03b6, 0x03bb, 0x03bb, 0x03bb, 0x03bb, 0x03bb, 0x03c0, 0x03c0, - 0x03cc, 0x03cc, 0x03d1, 0x03d1, 0x03db, 0x03db, 0x03db, 0x03df, - 0x03df, 0x03df, 0x03df, 0x03df, 0x03df, 0x03df, 0x03df, 0x03df, - 0x03df, 0x03df, 0x03e7, 0x03e7, 0x03e7, 0x03e7, 0x03e7, 0x03e7, - 0x03e7, 0x03e7, 0x03e7, 0x03e7, 0x03e7, 0x03ed, 0x03ed, 0x03ed, - 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, - 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03fb, 0x03fb, 0x03fb, - // Entry 140 - 17F - 0x0400, 0x0400, 0x0400, 0x0400, 0x0407, 0x0407, 0x0407, 0x0407, - 0x0407, 0x0413, 0x0413, 0x0413, 0x0413, 0x0413, 0x0413, 0x0413, - 0x0413, 0x0413, 0x0413, 0x0419, 0x0420, 0x0420, 0x0420, 0x0420, - 0x0420, 0x0426, 0x0426, 0x0426, 0x042b, 0x042b, 0x042b, 0x042b, - 0x042b, 0x042b, 0x0437, 0x0437, 0x0437, 0x0437, 0x0437, 0x0437, - 0x0443, 0x0443, 0x0443, 0x0443, 0x044b, 0x044b, 0x0457, 0x045e, - 0x045e, 0x045e, 0x045e, 0x045e, 0x045e, 0x045e, 0x045e, 0x045e, - 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, - // Entry 180 - 1BF - 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, - 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, - 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, - 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, - 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, - 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, - 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, 0x0463, - 0x0463, 0x0463, 0x0463, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, - // Entry 1C0 - 1FF - 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, - 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, - 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, 0x0469, - 0x0469, 0x0469, 0x0469, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, - 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, - 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, - 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, 0x046e, - 0x046e, 0x046e, 0x047c, 0x047c, 0x047c, 0x047c, 0x047c, 0x047c, - // Entry 200 - 23F - 0x047c, 0x047c, 0x047c, 0x047c, 0x047c, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, 0x0486, - 0x0486, 0x0486, 0x0486, 0x0486, 0x049f, 0x049f, 0x049f, 0x049f, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - // Entry 240 - 27F - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04ca, 0x04ca, - 0x04d8, 0x04d8, 0x04e9, 0x04fb, 0x050d, 0x051d, 0x052d, 0x053b, - 0x0551, 0x0560, 0x0570, 0x0570, 0x0581, 0x058e, 0x058e, 0x0596, - 0x05a8, 0x05b8, 0x05c9, 0x05c9, 0x05d9, 0x05eb, 0x05fc, - }, - }, - { // khq - "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + - " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + - "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + - "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" + - "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" + - "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" + - "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" + - "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " + - "MandareŋJulu senniKoyra ciini", - []uint16{ // 361 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, - 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, - 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, - 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, - // Entry 40 - 7F - 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f, - 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, - 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175, - // Entry 80 - BF - 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, - 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db, - 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2, - 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry C0 - FF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 100 - 13F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 140 - 17F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0244, - }, - }, - { // ki - "KiakanKiamhariKĩarabuKibelarusiKibulgariaKibanglaKicheckiKĩnjeremaniKigi" + - "rikiGĩthungũKihispaniaKiajemiKĩbaranjaKihausaKĩhĩndĩKihungariKiindon" + - "esiaKiigboKĩtalianoKĩnjabaniKijavaGikuyuKikambodiaKikoreaKimalesiaKi" + - "burmaKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKĩraciaKinyar" + - "wandaKĩcumarĩKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietin" + - "amuKiyorubaKĩcainaKizulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x0046, 0x0046, 0x0046, 0x0046, 0x004e, 0x0058, 0x0058, 0x0062, - 0x0062, 0x0062, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a, - 0x007a, 0x0084, 0x0084, 0x0084, 0x0084, 0x008d, 0x008d, 0x008d, - // Entry 40 - 7F - 0x008d, 0x0098, 0x0098, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, - 0x00a8, 0x00a8, 0x00b2, 0x00b8, 0x00b8, 0x00b8, 0x00be, 0x00be, - 0x00be, 0x00be, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, 0x00cf, - 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, - 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, - 0x00cf, 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00df, 0x00df, 0x00df, - 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f9, 0x00f9, 0x0102, - // Entry 80 - BF - 0x0102, 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, 0x0119, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x0135, 0x0135, 0x013c, 0x013c, 0x013c, 0x0146, 0x0146, 0x0146, - 0x0146, 0x0146, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x0157, - 0x015d, 0x015d, 0x015d, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0170, 0x0170, 0x0178, 0x017e, - }, - }, - { // kk - kkLangStr, - kkLangIdx, - }, - { // kkj - "yamannumbu buykakɔ", - []uint16{ // 364 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - // Entry 40 - 7F - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - // Entry 80 - BF - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - // Entry C0 - FF - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - // Entry 100 - 13F - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - // Entry 140 - 17F - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x0013, - }, - }, - { // kl - "kalaallisut", - []uint16{ // 82 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000b, - }, - }, - { // kln - "kutitab Akakutitab Amariekkutitab Arabukkutitab Belarusakutitab Bulgaria" + - "kutitab Bengalikutitab Chekkutitab Chermanikutitab Greecekutitab Uin" + - "geresakutitab Espianikkutitab Persiakutitab Kifaransakutitab Hausaku" + - "titab Maindiikkutitab Hangarikutitab Indonesiakutitab Igbokutitab Ta" + - "lianekkutitap Japankutitap Javanesekutitab Kher nebo Kwenkutitab Kor" + - "eakutitab Malaykutitab Burmakutitab Nepalikutitab Boakutitab Punjabk" + - "utitap Polandkutitab Portugalkutitab Romaniekkutitab Russiakutitab K" + - "inyarwandakutitab Somaliekkutitab Swedenkutitab Tamilkutitab Thailan" + - "dkutitab Turkeykutitab Ukrainekutitab Urdukutitab Vietnamkutitab Yor" + - "ubakutitab Chinakutitab ZuluKalenjin", - []uint16{ // 365 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x001a, 0x001a, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0038, 0x0048, - 0x0048, 0x0048, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0081, 0x0092, 0x0092, 0x00a2, - 0x00a2, 0x00a2, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00c1, - 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00ce, - 0x00ce, 0x00de, 0x00de, 0x00de, 0x00de, 0x00ed, 0x00ed, 0x00ed, - // Entry 40 - 7F - 0x00ed, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, - 0x011a, 0x011a, 0x0127, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, - 0x0137, 0x0137, 0x014d, 0x014d, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x015a, 0x0167, 0x0167, 0x0174, 0x0174, 0x0174, - 0x0182, 0x0182, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, - 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, 0x019b, 0x019b, 0x01a9, - // Entry 80 - BF - 0x01a9, 0x01b9, 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01d7, 0x01ea, - 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, - 0x01ea, 0x01ea, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, - 0x0208, 0x0208, 0x0215, 0x0215, 0x0215, 0x0225, 0x0225, 0x0225, - 0x0225, 0x0225, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0242, - 0x024e, 0x024e, 0x024e, 0x025d, 0x025d, 0x025d, 0x025d, 0x025d, - 0x025d, 0x026b, 0x026b, 0x0278, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - // Entry C0 - FF - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - // Entry 100 - 13F - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - // Entry 140 - 17F - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, 0x0284, - 0x0284, 0x0284, 0x0284, 0x0284, 0x028c, - }, - }, - { // km - kmLangStr, - kmLangIdx, - }, - { // kn - knLangStr, - knLangIdx, - }, - { // ko - koLangStr, - koLangIdx, - }, - {}, // ko-KP - { // kok - "अफारअबखेज़ियनअफ्रिकान्सअकानअमहारिक्आरागोनिसअरेबिकआसामीअवारिकऐमराअज़रबैजा" + - "नीबष्किरबैलोरुसियन्बल्गेरियनबिसलमाबंबाराबांग्लातिबेतियनब्रेटनबोस्न" + - "ियनकटलानचिचेनचामोर्रोकोर्शियनचेकचर्च स्लेव्हीकछुवासवेळ्ष्डॅनिशजर्म" + - "नदिवेहीझोंग्खाएवग्रीक्इंग्लीशइस्परान्टोस्पॅनिशइस्टोनियन्बास्कपर्षि" + - "यन्फुलाफिन्निष्फिजीफेरोस्फ्रेन्चपश्चिमी फ्रिशियनऐरिषस्काटस् गेलिक्" + - "गेलीशियनगौरानीगुजरातीमॅन्सहौसाहिब्रूहिन्दीक्रोयेषियन्हैतियन क्रेयॉ" + - "लहंगेरियन्आर्मेनियनहिरिरोइन्टरलिंग्वाइंडोनेशियनइन्टरलिंग्इग्बोसिच्" + - "युआन यीइनूपेयाक्इदोआईस्लान्डिकइटालियनइन्युकट्टजपानीजावनीस्जार्जियन" + - "्किकुयुकुयांमाकज़ख्कालाल्लिसुटकंबोडियनकन्नडाकोरियन्कानुरीकश्मीरीकु" + - "र्दिषकोमीकोर्निशकिर्गिज़लाटिनलक्सेमबर्गीशगांडालिंबुर्गलिंगालालाअोल" + - "िथुआनियन्लुबा-काटांगालाट्वियन् (लेट्टिष्)मलागसीमार्शलीमुरीमसीडोनिय" + - "न्मळियाळममंगोलियन्मराठीमलयमालतीस्बर्मीज़्नौरोउत्तर न्डेबेलेनेपाळीड" + - "ोंगाडच्नोर्वोजियन नायनोर्स्कनोर्वेजियन बोकमालदक्षिण डेबेलेनावाजोना" + - "ंन्जाओसिटान्ओरोमोओरियाओसेटिकपंजाबीपोलिषपाष्टो (पुष्टो)पोर्तुगिजक्व" + - "ेच्वारहटो-रोमान्स्रुंदीरोमानियन्रशियनकिन्यार्वान्डासंस्कृतसार्डिनि" + - "यानसिंधीउत्तरीय सामीसांग्रोसिन्हलीस्स्लोवाकस्लोवेनियन्समोनशोनासोमा" + - "लीआल्बेनियन्सर्बियनस्वातीसेसोथोसुंदनीसस्वीदीषस्वाहिलीतमिळतेलुगूतजि" + - "कथाईतिग्रिन्यातुर्कमनसेत्स्वानातोंगातुर्किषत्सोगातटारताहीशियनउयघूर" + - "युक्रेनियन्उर्दूउज़बेकवेंदावियत्नामीज़ओलापुकवालूनउलोफ़झ़ौसाइद्दिष्" + - "यूरुबाझ्हुन्गचिनीजुलूअचायनीजअडांग्मेअडिघेअघेमआयनूआलिटदक्षिणी अल्टा" + - "यअंगिकामापुचेअरापाहोअसुअस्टुरियानअवधीबालिनिसबस्साबेम्बाबेनाभोजपुरी" + - "बिनीसिकसिकाबोडोबगिनिसब्लीनसिबौनाचिगाछुनिसमारीचोतावचिरोकीचेयनीमध्य " + - "खुर्दीशसेसेल्वा क्रयॉल फ्रेन्चडाकोटादार्ग्वातायताडोगरीबझर्मालोवर स" + - "ोर्बियनडौलजोला-फोनीडाझागाएम्बुएफीकएकाजुकएवोंडोफिलिपिनोफोनफ्रिलियनग" + - "ागेझगिलबर्टीसगोरोंटालोस्विज जर्मनगुसीग्विचहवायियानहिलीगायनॉनमोंगअप" + - "र सोर्बियनहुपाआयबनईबिबियोलोकोइंगूशलोबजानन्गोंबामचामेकाबायलेकाचीनजु" + - "कंबाकाबार्डियनत्यापमाकोंडेकाबुवर्डियनुकोरोखासीकोयरा छिनीकाकोकालेंज" + - "ीनकिंबुंडुकोंकणीपेल्लेकराची-बाल्करकारेलियनकुरुखशंबालाबाफियाकोलोनिय" + - "नकुमयकलाडिनोलांगीलेझघियानलाकोटालोझींउत्तरीय लुरीलुबा-लुलुआलुंडालुओ" + - "मिझोलुयमादुरेसेमगाहीमैथिलीमाकमसाईमोक्षमेंडेमेरूमोरिसेनमाखुवा-मिट्ट" + - "ोमेटामिक्माकमिनाग्काबौमणिपुरीमोहाकमोस्सीमुडांगसाबार भाशाक्रिकमिरां" + - "डीसएरझियामझांडेराणीनेपोलिटननामानेवरीनियासनियुनख्वासीन्गेबूननोगायनक" + - "ोउत्तरीय सोथोन्युयरनानकोलेपांगासियानपांपान्गापापिमेंटोपालुयाननायझे" + - "रियन पिडगीनप्रुसियनकिचेरापान्युरारोटोंगानरोम्बोआरोमेनियनरवासंडावेस" + - "खासांबारुसंथालीगांबेसांगूसिसिलियानस्कॉट्ससेनाकोयराबोरो सेन्नीताछेह" + - "ीटशानदक्षिणी सामीलुले सामीईनारी सामीस्कोल्ट सामीसोनिकेश्रानन टोंगो" + - "साहोसुकुमाकोमोरियनसिरियाकतिम्नेतेसोतेतमटिग्रेलिंगॉनतोक पिसीनतारोको" + - "तुंबुकातुवालूतासावाकतुविनियनकेंद्रीय अटलास तामाझायटउडमुर्तयमबुंडुअ" + - "ज्ञात भाशावाईवुंजोवाल्सरवोलायटावरयकालमायकसोगायांगबेनयेम्बाकांटोसीप" + - "्रमाणित मोरोक्कन तामाझायटझूनअणकार सामुग्री नाझाझाआधुनिक प्रमाणित अ" + - "रेबिकऑस्ट्रियन जर्मनस्वीझ म्हान जर्मनऑस्ट्रेलियन इंग्लीशकॅनाडीयन इ" + - "ंग्लीशब्रिटीश इंग्लीशअमेरिकन इंग्लीशलॅटिन अमेरिकन स्पॅनिशयुरोपियन " + - "स्पॅनिशमेक्सिकन स्पॅनिशकॅनाडीयन फ्रेन्चस्वीझ फ्रेन्चफ्लेमिशब्राझिल" + - "ियन पोर्तुगिजयुरोपियन पोर्तुगिजमोल्डावियन्सेर्बो-क्रोयेषियन्काँगो " + - "स्वाहिलीसोंपी चिनीपारंपारीक चिनी", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0027, 0x0027, 0x0045, 0x0051, 0x0069, 0x0081, - 0x0093, 0x00a2, 0x00b4, 0x00c0, 0x00de, 0x00f0, 0x0111, 0x012c, - 0x013e, 0x0150, 0x0165, 0x017d, 0x018f, 0x01a7, 0x01b6, 0x01c5, - 0x01dd, 0x01f5, 0x01f5, 0x01fe, 0x0226, 0x0235, 0x0247, 0x0256, - 0x0265, 0x0277, 0x028c, 0x0292, 0x02a4, 0x02b9, 0x02d7, 0x02ec, - 0x030a, 0x0319, 0x0331, 0x033d, 0x0355, 0x0361, 0x0373, 0x0388, - 0x03b6, 0x03c2, 0x03ea, 0x0402, 0x0414, 0x0429, 0x0438, 0x0444, - 0x0456, 0x0468, 0x0468, 0x0489, 0x04b1, 0x04cc, 0x04e7, 0x04f9, - // Entry 40 - 7F - 0x051d, 0x053b, 0x0559, 0x0568, 0x0587, 0x05a2, 0x05ab, 0x05cc, - 0x05e1, 0x05fc, 0x060b, 0x0620, 0x063b, 0x063b, 0x064d, 0x0662, - 0x0671, 0x0692, 0x06aa, 0x06bc, 0x06d1, 0x06e3, 0x06f8, 0x070d, - 0x0719, 0x072e, 0x0746, 0x0755, 0x0779, 0x0788, 0x07a0, 0x07b5, - 0x07c1, 0x07df, 0x0801, 0x0837, 0x0849, 0x085e, 0x086a, 0x0888, - 0x089d, 0x08b8, 0x08c7, 0x08d0, 0x08e5, 0x08fd, 0x0909, 0x0931, - 0x0943, 0x0952, 0x095b, 0x0998, 0x09c9, 0x09ee, 0x0a00, 0x0a15, - 0x0a2a, 0x0a2a, 0x0a39, 0x0a48, 0x0a5a, 0x0a6c, 0x0a6c, 0x0a7b, - // Entry 80 - BF - 0x0aa2, 0x0abd, 0x0ad5, 0x0afa, 0x0b09, 0x0b24, 0x0b33, 0x0b5d, - 0x0b72, 0x0b93, 0x0ba2, 0x0bc4, 0x0bd9, 0x0bf4, 0x0c09, 0x0c2a, - 0x0c36, 0x0c42, 0x0c54, 0x0c72, 0x0c87, 0x0c99, 0x0cab, 0x0cc0, - 0x0cd5, 0x0ced, 0x0cf9, 0x0d0b, 0x0d17, 0x0d20, 0x0d3e, 0x0d53, - 0x0d71, 0x0d80, 0x0d95, 0x0da7, 0x0db3, 0x0dcb, 0x0dda, 0x0dfb, - 0x0e0a, 0x0e1c, 0x0e2b, 0x0e4c, 0x0e5e, 0x0e6d, 0x0e7c, 0x0e8b, - 0x0ea0, 0x0eb2, 0x0ec7, 0x0ed3, 0x0edf, 0x0ef4, 0x0ef4, 0x0f0c, - 0x0f1b, 0x0f1b, 0x0f1b, 0x0f27, 0x0f33, 0x0f33, 0x0f33, 0x0f3f, - // Entry C0 - FF - 0x0f3f, 0x0f67, 0x0f67, 0x0f79, 0x0f79, 0x0f8b, 0x0f8b, 0x0fa0, - 0x0fa0, 0x0fa0, 0x0fa0, 0x0fa0, 0x0fa0, 0x0fa9, 0x0fa9, 0x0fc7, - 0x0fc7, 0x0fd3, 0x0fd3, 0x0fe8, 0x0fe8, 0x0ff7, 0x0ff7, 0x0ff7, - 0x0ff7, 0x0ff7, 0x1009, 0x1009, 0x1015, 0x1015, 0x1015, 0x1015, - 0x102a, 0x102a, 0x1036, 0x1036, 0x1036, 0x104b, 0x104b, 0x104b, - 0x104b, 0x104b, 0x1057, 0x1057, 0x1057, 0x1069, 0x1069, 0x1078, - 0x1078, 0x1078, 0x1078, 0x1078, 0x1078, 0x1078, 0x108a, 0x1096, - 0x1096, 0x1096, 0x10a5, 0x10b1, 0x10b1, 0x10c0, 0x10c0, 0x10d2, - // Entry 100 - 13F - 0x10e1, 0x1103, 0x1103, 0x1103, 0x1103, 0x1144, 0x1144, 0x1156, - 0x116e, 0x117d, 0x117d, 0x117d, 0x118f, 0x118f, 0x119e, 0x119e, - 0x11c3, 0x11c3, 0x11cc, 0x11cc, 0x11e5, 0x11e5, 0x11f7, 0x1206, - 0x1212, 0x1212, 0x1212, 0x1224, 0x1224, 0x1224, 0x1224, 0x1236, - 0x1236, 0x1236, 0x124e, 0x124e, 0x1257, 0x1257, 0x1257, 0x1257, - 0x1257, 0x1257, 0x1257, 0x126f, 0x1275, 0x1275, 0x1275, 0x1275, - 0x1275, 0x1275, 0x127e, 0x1299, 0x1299, 0x1299, 0x1299, 0x1299, - 0x1299, 0x12b4, 0x12b4, 0x12b4, 0x12b4, 0x12d3, 0x12d3, 0x12d3, - // Entry 140 - 17F - 0x12df, 0x12ee, 0x12ee, 0x12ee, 0x1306, 0x1306, 0x1324, 0x1324, - 0x1330, 0x1352, 0x1352, 0x135e, 0x136a, 0x137f, 0x138b, 0x139a, - 0x139a, 0x139a, 0x13ac, 0x13c1, 0x13d0, 0x13d0, 0x13d0, 0x13d0, - 0x13d0, 0x13e5, 0x13f4, 0x13fa, 0x1406, 0x1406, 0x1424, 0x1424, - 0x1433, 0x1448, 0x146c, 0x146c, 0x1478, 0x1478, 0x1484, 0x1484, - 0x14a0, 0x14a0, 0x14a0, 0x14ac, 0x14c4, 0x14dc, 0x14dc, 0x14ee, - 0x14ee, 0x1500, 0x1522, 0x1522, 0x1522, 0x153a, 0x1549, 0x155b, - 0x156d, 0x1585, 0x1594, 0x1594, 0x15a6, 0x15b5, 0x15b5, 0x15b5, - // Entry 180 - 1BF - 0x15cd, 0x15cd, 0x15cd, 0x15cd, 0x15df, 0x15df, 0x15df, 0x15df, - 0x15ee, 0x1610, 0x1610, 0x162c, 0x162c, 0x163b, 0x1644, 0x1650, - 0x1659, 0x1659, 0x1659, 0x1671, 0x1671, 0x1680, 0x1692, 0x169b, - 0x169b, 0x16a7, 0x16a7, 0x16b6, 0x16b6, 0x16c5, 0x16d1, 0x16e6, - 0x16e6, 0x170b, 0x1717, 0x172c, 0x174a, 0x174a, 0x175f, 0x176e, - 0x1780, 0x1780, 0x1792, 0x17ae, 0x17bd, 0x17d5, 0x17d5, 0x17d5, - 0x17d5, 0x17e7, 0x1805, 0x1805, 0x181d, 0x1829, 0x1829, 0x1838, - 0x1847, 0x1856, 0x1856, 0x1868, 0x187d, 0x188c, 0x188c, 0x188c, - // Entry 1C0 - 1FF - 0x1895, 0x18b7, 0x18c9, 0x18c9, 0x18c9, 0x18de, 0x18de, 0x18de, - 0x18de, 0x18de, 0x18fc, 0x18fc, 0x1917, 0x1932, 0x1947, 0x1947, - 0x1975, 0x1975, 0x1975, 0x1975, 0x1975, 0x1975, 0x1975, 0x1975, - 0x1975, 0x198d, 0x198d, 0x1999, 0x1999, 0x1999, 0x19b1, 0x19cf, - 0x19cf, 0x19cf, 0x19e1, 0x19e1, 0x19e1, 0x19e1, 0x19e1, 0x19fc, - 0x1a05, 0x1a17, 0x1a20, 0x1a20, 0x1a35, 0x1a35, 0x1a47, 0x1a47, - 0x1a56, 0x1a65, 0x1a80, 0x1a95, 0x1a95, 0x1a95, 0x1a95, 0x1aa1, - 0x1aa1, 0x1aa1, 0x1acf, 0x1acf, 0x1acf, 0x1ae4, 0x1aed, 0x1aed, - // Entry 200 - 23F - 0x1aed, 0x1aed, 0x1aed, 0x1b0f, 0x1b28, 0x1b44, 0x1b66, 0x1b78, - 0x1b78, 0x1b9a, 0x1b9a, 0x1ba6, 0x1ba6, 0x1bb8, 0x1bb8, 0x1bb8, - 0x1bd0, 0x1bd0, 0x1be5, 0x1be5, 0x1be5, 0x1bf7, 0x1c03, 0x1c03, - 0x1c0f, 0x1c21, 0x1c21, 0x1c21, 0x1c21, 0x1c33, 0x1c33, 0x1c33, - 0x1c33, 0x1c33, 0x1c4c, 0x1c4c, 0x1c5e, 0x1c5e, 0x1c5e, 0x1c5e, - 0x1c73, 0x1c85, 0x1c9a, 0x1cb2, 0x1cf3, 0x1d08, 0x1d08, 0x1d1d, - 0x1d3c, 0x1d45, 0x1d45, 0x1d45, 0x1d45, 0x1d45, 0x1d45, 0x1d45, - 0x1d54, 0x1d66, 0x1d7b, 0x1d84, 0x1d84, 0x1d84, 0x1d84, 0x1d99, - // Entry 240 - 27F - 0x1d99, 0x1da5, 0x1da5, 0x1da5, 0x1dba, 0x1dcc, 0x1dcc, 0x1de1, - 0x1de1, 0x1de1, 0x1de1, 0x1de1, 0x1e2b, 0x1e34, 0x1e63, 0x1e6f, - 0x1ead, 0x1ead, 0x1ed8, 0x1f07, 0x1f3e, 0x1f6c, 0x1f97, 0x1fc2, - 0x1ffd, 0x202b, 0x2059, 0x2059, 0x2087, 0x20ac, 0x20ac, 0x20c1, - 0x20fb, 0x212f, 0x2150, 0x2184, 0x21ac, 0x21c8, 0x21f0, - }, - }, - { // ks - "اَفاراَبخازِیاناَویستَناَفریٖکانٛزاَکاناَمہاریاَراگونیعربیاسٲمۍاَوارِکای" + - "مارااَزَربیجانیبَشکیٖربیلَروٗشیَنبینابِسلامابَمبارابَنٛگٲلۍتِبتیبری" + - "ٹَنبوسنِیَنکَتلانچیچَنکَموروکارسِکَنکریچیٚکچٔرچ سلاوِکچُواشویٚلشڈین" + - "ِشجٔرمَندِویہیزونٛگکھاایٖویوٗنٲنیاَنٛگیٖزۍایٚسپَرینٹوسپینِشایٚسٹونی" + - "َنباسکفارسیفُلاہفِنِشفِجیَنفَروسفریٚنچمغربی فرِشیَناَیرِشسکوٹِش گیے" + - "لِکگیلِشِیَنگُوارَنیگُجرٲتیمینٛکسہاوساعبرٲنۍہِندیہِری موتوٗکروشِیَن" + - "ہیتِیاںہَنٛگیریَناَرمینیَنہیٚریٖرواِنٹَرلِنٛگوااِنڈونیشیااِنٹَر لِن" + - "ٛنگویےاِگبوسِچوان یٖیاِنُپِیاکاِڈوآیِسلینڈِکاِٹیلیَناِنُکتِتوٗجاپٲن" + - "ۍجَوَنیٖزجارجِیَنکونٛگوکِکُیوٗکُوانیاماکازَخکَلالِسُتخَمیرکَنَڑکوری" + - "َنکَنوٗریکٲشُرکُردِشکومیکورنِشکِرگِزلاتیٖنیلُکھزیمبورگِشگاندالِمبٔر" + - "گِشلِنگالالاولِتھوانِیَنلوُبا کَتَنٛگالَتوِیَنمَلاگَسیمارشَلیٖزماور" + - "یمیکَڈونیَنمٔلیالَممَنٛگولیمَرٲٹھۍمَلَےمَلتیٖسبٔمیٖزناورُشُمال ڈَبی" + - "لنیٚپٲلۍڈونٛگاڈَچناروییَن نَے نورسکناروییَن بوکمالجنوب ڈیٚبیلنَواجو" + - "نِیَنجااوکسیٖٹَناوجِبوااوٚرومواوٚرِیااوٚسیٚٹِکپَنجٲبۍپالیپالِشپَشتو" + - "ٗپُرتَگیٖزکُویشُوارومانشرُندیرومٲنیروٗسیکِنیاوِنداسَنسکرٕتسراڈیٖنیس" + - "ِندیشُمٲلی سَمیسَنگوسِنہالاسلووَکسلووینیَنسَمواَنشوناسومٲلیالبانِیَ" + - "نسٔربِیَنسواتیجنوبی ستھوسَنڈَنیٖزسویٖڈِشسواہِلیتَمِلتیلگوٗتاجِکتھاے" + - "ٹِگرِنیاتُرکمینسواناٹونٛگاتُرکِشژونٛگاتَتارتاہیشِیَنیوٗکرینیٲییاُرد" + - "وٗاُزبیکوینداوِیَتنَمیٖزوولَپُکوَلوٗنوولوفکھوسایِدِشیورُبازُہانٛگچی" + - "ٖنیزُلوٗاَچَےنیٖزاَکولیاَدَنٛگمیےاَدَیٖگیےاَفرِہِلیاینوٗاَکادِیَناَ" + - "لویتیجنوٗبی اَلتاییپرون اَنٛگریٖزیاَنٛگِکااَرَمیکایرو کونِیَناَراپا" + - "ہواَراوَکایسٹوٗریَناَوَدیبَلوٗچیبالِنیٖزباسابیجابیٚمبابوجپوٗریبِکول" + - "بِنیسِکسِکابرٛجبُرِیَتبَگنیٖزبٕلِنکاڈوکارِباتسَمسیباونوچیٖبچاچھَگتا" + - "ےچُکیٖزماریچِنوٗک جارگَنچوکتَوشیپویانچیٚروکیشییونکاپٹِککرٕمیٖن تُرک" + - "یکَشوٗبِیَنڈکوٹادَرگواڈیٚلوییَرسلیوڈاگرِبڈِنکاڈوگریبوٚنِم ساربِیَند" + - "ُوالاوَستی پُرتُگالیڈِیوٗلاایٚفِکقدیٖمی مِصریایٚکاجُکایٚلامایِٹوَسط" + - "ی اَنٛگریٖزۍایٚوونڈوفینٛگفِلِپیٖنوفونوسطی فریٚنچپرون فریٚنچشُمٲلی ف" + - "رِشیَنمشرِقی فرِشیَنفروٗلِیَنگاگیےیوگبایاگیٖزگِلبٔرٹیٖزوَسطی ہاے جٔ" + - "رمَنپرون ہاے جٔرمَنگوندیگورینٹیلوگوتھِکگرِبوقدیٖم یوٗنٲنیسٕوِس جٔرم" + - "َنگُوِچ اِنہَیداہوایِیَنہِلیٖگینَنہِتایِتہمونٛگہیٚرِم ساربِیَنہُپاا" + - "ِباناِلوکواِنٛگُشلوجبانجوڈیو فارسیجوڈیو عربیکارا کَلپَککَبایِلکاچِن" + - "جُوٗکامباکَویکَبارڈِیَنتَیَپکوروکھاسیکھوتَنیٖزکِمبُندوٗکونکَنیکوسری" + - "یَنکَپیلیکراچیے بَلکارکَریلِیَنکُرُکھکُمِککُتینَےلیڈِنولَہَندالَمبا" + - "لیزگِیَنمونٛگولوزیلوٗبا لوٗلُوالویِسینولُندالُوولُسہاےمَدُریٖزمَگاے" + - "میتَھلیمَکَسارمَندِنٛگومَساےموکشامَندَرمیندیےوَستی ایرِشمِکمیکمِنَن" + - "ٛگکَباومانٛچوٗمَنیپوٗریموہاکموسیواریاہ زبانکریٖکمِراندیٖزمارواڑیایٚ" + - "رزِیانیٖپالیٹَنبوٚنِم جٔرمَننیٚوارینِیاسنِیویَننوگاےپرون نارسیایٚن " + - "کوشمالی ستھوکلاسِکَل نیوارینِیَمویٚزینِیَنکولنِیورونَظیٖمااوٚسیجاوٹ" + - "ومَن تُرکِشپَنٛگاسِنَنپَہلَویپَمپَنٛگاپَپِیامیٚنٹوپَلااُواںپرون فار" + - "سیفونیٖشیَنپانپیٚیَنپرون پروویٚنچَلراجِستھٲنۍرَپانویرَروٹونٛگَنرومَ" + - "نیاَرومانیسَندَویےیاکُتسَمارِتَن اَرامیکسَسَکسَنتالیسِچِلِیَنسکاٹسس" + - "یٚلکُپپرون ایرِششانسِداموجنوٗبی سَمیلولیے سَمیاِناری سَمیسکولٹ سَمی" + - "سونِنکیےسوگڈِیَنسرٛانَن ٹونٛگوسیٚریرسُکُماسُسوٗسُمیریَنسیٖریٲییٹِمن" + - "یےٹیٚریٚنوٹیٹَمٹاےگریےتیٖوٹوکیٖلاوکِلِنگونٹِلِنگِتتاماشیکنیاسا ٹونٛ" + - "گاٹاک پِسِنژھِمشِیانتُمبُکاتُوالوٗتُویٖنیَناُدمُرتاُگارتِکیُمبُندوٗ" + - "اَنزٲنۍ یا نَہ لَگہٕہار زبانواےووتِکوالامووَریےواشوکالمِکیاویَپیٖزز" + - "َپوتیٚکزیناگازوٗنیکانٛہہ تہِ لِسانیاتی مواد نہٕزازاآسٹرِیَن جٔرمَنس" + - "ٕوِس ہاےجٔرمَنآسٹریلیَن اَنٛگریٖزۍکینَڈِیٲیی اَنٛگریٖزۍبَرطانوی اَن" + - "ٛگریٖزۍیوٗ ایٚس اَنٛگریٖزۍلیٹٕن امریٖکی سپینِشلِبیریَن سپینِشکَنیڈی" + - "َن فریٚنچسٕوٕس فریٚنچفلیٚمِشبرازیٖلی پُتَگیٖزلِبیریَن پُرتَگیٖزمولد" + - "اوِیَنسیٚربو کروشِیَنسیٚود چیٖنیرِوٲجی چیٖنی", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000a, 0x001e, 0x002e, 0x0044, 0x004e, 0x005c, 0x006c, - 0x0074, 0x007e, 0x008c, 0x0098, 0x00ae, 0x00bc, 0x00d2, 0x00da, - 0x00e8, 0x00f6, 0x0106, 0x0110, 0x011c, 0x012c, 0x0138, 0x0142, - 0x014e, 0x015e, 0x0164, 0x016c, 0x0181, 0x018b, 0x0195, 0x019f, - 0x01ab, 0x01b7, 0x01c7, 0x01cf, 0x01dd, 0x01ef, 0x0205, 0x0211, - 0x0225, 0x022d, 0x0237, 0x0241, 0x024b, 0x0257, 0x0261, 0x026d, - 0x0286, 0x0292, 0x02ab, 0x02bd, 0x02cd, 0x02db, 0x02e7, 0x02f1, - 0x02fd, 0x0307, 0x031a, 0x032a, 0x0338, 0x034c, 0x035e, 0x036e, - // Entry 40 - 7F - 0x0388, 0x039c, 0x03bb, 0x03c5, 0x03d8, 0x03ea, 0x03f2, 0x0406, - 0x0416, 0x042a, 0x0436, 0x0446, 0x0456, 0x0462, 0x0470, 0x0482, - 0x048c, 0x049e, 0x04a8, 0x04b2, 0x04be, 0x04cc, 0x04d6, 0x04e2, - 0x04ea, 0x04f6, 0x0502, 0x0510, 0x052a, 0x0534, 0x0546, 0x0554, - 0x055a, 0x0570, 0x058b, 0x059b, 0x05ab, 0x05bd, 0x05c7, 0x05db, - 0x05eb, 0x05fb, 0x0609, 0x0613, 0x0621, 0x062d, 0x0637, 0x064c, - 0x065a, 0x0666, 0x066c, 0x068e, 0x06ab, 0x06c0, 0x06cc, 0x06da, - 0x06ec, 0x06fa, 0x0708, 0x0716, 0x0728, 0x0736, 0x073e, 0x0748, - // Entry 80 - BF - 0x0754, 0x0766, 0x0776, 0x0782, 0x078c, 0x0798, 0x07a2, 0x07b6, - 0x07c6, 0x07d6, 0x07e0, 0x07f5, 0x07ff, 0x080d, 0x0819, 0x082b, - 0x0839, 0x0841, 0x084d, 0x085f, 0x086f, 0x0879, 0x088c, 0x089e, - 0x08ac, 0x08ba, 0x08c4, 0x08d0, 0x08da, 0x08e2, 0x08f2, 0x0900, - 0x090a, 0x0916, 0x0922, 0x092e, 0x0938, 0x094a, 0x094a, 0x0960, - 0x096c, 0x0978, 0x0982, 0x0998, 0x09a6, 0x09b2, 0x09bc, 0x09c6, - 0x09d0, 0x09dc, 0x09ea, 0x09f4, 0x09fe, 0x0a10, 0x0a1c, 0x0a30, - 0x0a42, 0x0a42, 0x0a54, 0x0a54, 0x0a5e, 0x0a70, 0x0a70, 0x0a7e, - // Entry C0 - FF - 0x0a7e, 0x0a99, 0x0ab6, 0x0ac6, 0x0ad4, 0x0aeb, 0x0aeb, 0x0afb, - 0x0afb, 0x0afb, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b09, 0x0b1d, - 0x0b1d, 0x0b29, 0x0b37, 0x0b47, 0x0b47, 0x0b4f, 0x0b4f, 0x0b4f, - 0x0b4f, 0x0b57, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, 0x0b63, - 0x0b73, 0x0b7d, 0x0b85, 0x0b85, 0x0b85, 0x0b93, 0x0b93, 0x0b93, - 0x0b9b, 0x0b9b, 0x0b9b, 0x0b9b, 0x0ba9, 0x0bb7, 0x0bb7, 0x0bc1, - 0x0bc1, 0x0bc9, 0x0bd3, 0x0bd3, 0x0bdd, 0x0bdd, 0x0beb, 0x0beb, - 0x0bf7, 0x0c05, 0x0c11, 0x0c19, 0x0c32, 0x0c3e, 0x0c4c, 0x0c5a, - // Entry 100 - 13F - 0x0c64, 0x0c64, 0x0c70, 0x0c70, 0x0c89, 0x0c89, 0x0c9d, 0x0ca7, - 0x0cb3, 0x0cb3, 0x0cc5, 0x0ccd, 0x0cd9, 0x0ce3, 0x0ce3, 0x0ced, - 0x0d0a, 0x0d0a, 0x0d16, 0x0d33, 0x0d33, 0x0d41, 0x0d41, 0x0d41, - 0x0d4d, 0x0d4d, 0x0d64, 0x0d74, 0x0d88, 0x0da7, 0x0da7, 0x0db7, - 0x0db7, 0x0dc1, 0x0dd3, 0x0dd3, 0x0dd9, 0x0dd9, 0x0dee, 0x0e03, - 0x0e03, 0x0e1e, 0x0e39, 0x0e4b, 0x0e4f, 0x0e4f, 0x0e4f, 0x0e59, - 0x0e63, 0x0e63, 0x0e6b, 0x0e7f, 0x0e7f, 0x0e9d, 0x0eb9, 0x0eb9, - 0x0ec3, 0x0ed5, 0x0ee1, 0x0eeb, 0x0f04, 0x0f1b, 0x0f1b, 0x0f1b, - // Entry 140 - 17F - 0x0f1b, 0x0f2c, 0x0f36, 0x0f36, 0x0f46, 0x0f46, 0x0f5a, 0x0f68, - 0x0f74, 0x0f91, 0x0f91, 0x0f99, 0x0fa3, 0x0fa3, 0x0faf, 0x0fbd, - 0x0fbd, 0x0fbd, 0x0fc9, 0x0fc9, 0x0fc9, 0x0fde, 0x0ff1, 0x0ff1, - 0x1006, 0x1014, 0x101e, 0x1026, 0x1030, 0x1038, 0x104c, 0x104c, - 0x1056, 0x1056, 0x1056, 0x1056, 0x105e, 0x105e, 0x1068, 0x107a, - 0x107a, 0x107a, 0x107a, 0x107a, 0x107a, 0x108c, 0x108c, 0x109a, - 0x10aa, 0x10b6, 0x10cf, 0x10cf, 0x10cf, 0x10e1, 0x10ed, 0x10ed, - 0x10ed, 0x10ed, 0x10f7, 0x1105, 0x1111, 0x1111, 0x111f, 0x1129, - // Entry 180 - 1BF - 0x1139, 0x1139, 0x1139, 0x1139, 0x1139, 0x1139, 0x1145, 0x1145, - 0x114d, 0x114d, 0x114d, 0x1166, 0x1176, 0x1180, 0x1188, 0x1194, - 0x1194, 0x1194, 0x1194, 0x11a4, 0x11a4, 0x11ae, 0x11bc, 0x11ca, - 0x11dc, 0x11e6, 0x11e6, 0x11f0, 0x11fc, 0x1208, 0x1208, 0x1208, - 0x121d, 0x121d, 0x121d, 0x1229, 0x1241, 0x124f, 0x1261, 0x126b, - 0x1273, 0x1273, 0x1273, 0x1288, 0x1292, 0x12a4, 0x12b2, 0x12b2, - 0x12b2, 0x12c2, 0x12c2, 0x12c2, 0x12d6, 0x12d6, 0x12ef, 0x12fd, - 0x1307, 0x1315, 0x1315, 0x1315, 0x1315, 0x131f, 0x1332, 0x1332, - // Entry 1C0 - 1FF - 0x133f, 0x1352, 0x1352, 0x136f, 0x1383, 0x1393, 0x139f, 0x13ad, - 0x13b9, 0x13d4, 0x13ea, 0x13f8, 0x140a, 0x1422, 0x1434, 0x1434, - 0x1434, 0x1434, 0x1434, 0x1447, 0x1447, 0x1459, 0x1459, 0x1459, - 0x146b, 0x146b, 0x1488, 0x1488, 0x1488, 0x149c, 0x14aa, 0x14c0, - 0x14c0, 0x14c0, 0x14c0, 0x14cc, 0x14cc, 0x14cc, 0x14cc, 0x14dc, - 0x14dc, 0x14ec, 0x14f6, 0x1517, 0x1517, 0x1521, 0x152f, 0x152f, - 0x152f, 0x152f, 0x1541, 0x154b, 0x154b, 0x154b, 0x154b, 0x154b, - 0x154b, 0x1559, 0x1559, 0x156c, 0x156c, 0x156c, 0x1572, 0x1572, - // Entry 200 - 23F - 0x157e, 0x157e, 0x157e, 0x1593, 0x15a6, 0x15bb, 0x15ce, 0x15de, - 0x15ee, 0x1609, 0x1615, 0x1615, 0x1615, 0x1621, 0x162b, 0x163b, - 0x163b, 0x163b, 0x164b, 0x164b, 0x164b, 0x1657, 0x1657, 0x1667, - 0x1671, 0x167f, 0x1687, 0x1697, 0x1697, 0x16a7, 0x16b7, 0x16b7, - 0x16c5, 0x16dc, 0x16ed, 0x16ed, 0x16ed, 0x16ed, 0x16ff, 0x16ff, - 0x170d, 0x171b, 0x171b, 0x172d, 0x172d, 0x173b, 0x174b, 0x175d, - 0x1791, 0x1797, 0x1797, 0x1797, 0x1797, 0x1797, 0x17a1, 0x17a1, - 0x17a1, 0x17a1, 0x17ad, 0x17b7, 0x17bf, 0x17bf, 0x17bf, 0x17cb, - // Entry 240 - 27F - 0x17cb, 0x17cb, 0x17d1, 0x17dd, 0x17dd, 0x17dd, 0x17dd, 0x17dd, - 0x17ed, 0x17ed, 0x17ed, 0x17f9, 0x17f9, 0x1803, 0x1839, 0x1841, - 0x1841, 0x1841, 0x185e, 0x187b, 0x18a2, 0x18cb, 0x18f0, 0x1914, - 0x193a, 0x1957, 0x1957, 0x1957, 0x1974, 0x198b, 0x198b, 0x1999, - 0x19ba, 0x19dd, 0x19f1, 0x1a0e, 0x1a0e, 0x1a23, 0x1a3a, - }, - }, - { // ksb - "KiakanKiamhaliKialabuKibelaausiKibulgaliaKibanglaKicheckiKijeumaniKigiik" + - "iKiingeezaKihispaniaKiajemiKifalansaKihausaKihindiKihungaiKiindonesi" + - "aKiigboKiitalianoKijapaniKijavaKikambodiaKikoleaKimalesiaKibulmaKine" + - "paliKiholanziKipunjabiKipolandiKilenoKiomaniaKilusiKinyalwandaKisoma" + - "liKiswidiKitamilKitailandiKituukiKiuklaniaKiulduKivietinamuKiyolubaK" + - "ichinaKizuluKishambaa", - []uint16{ // 376 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0049, 0x0052, 0x0052, 0x005c, - 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073, - 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0082, 0x0082, 0x0082, - // Entry 40 - 7F - 0x0082, 0x008d, 0x008d, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x009d, 0x009d, 0x00a5, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00ab, 0x00ab, 0x00b5, 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00c5, 0x00c5, 0x00cc, 0x00cc, 0x00cc, - 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e6, 0x00e6, 0x00ef, - // Entry 80 - BF - 0x00ef, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00fd, 0x0103, 0x010e, - 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, - 0x010e, 0x010e, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, 0x0116, - 0x011d, 0x011d, 0x0124, 0x0124, 0x0124, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x013e, - 0x0144, 0x0144, 0x0144, 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, - 0x014f, 0x0157, 0x0157, 0x015e, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - // Entry C0 - FF - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - // Entry 100 - 13F - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - // Entry 140 - 17F - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016d, - }, - }, - { // ksf - "riakanriamarikriarabribɛlɔrísribulgaríribɛngáliricɛ́kridjɛrmanrigrɛ́krii" + - "ngɛrísrikpanyáripɛrsánripɛrɛsǝ́rikaksariíndíriɔngrɔáriindonɛsíriigbo" + - "riitalyɛ́nrijapɔ́ŋrijawanɛ́rikmɛrrikɔrɛɛ́rimalaíribirmánrinepalɛ́riɔ" + - "lándɛ́ripɛnjabíripɔlɔ́nripɔrtugɛ́rirɔmánrirísrirwandarisomalíriswɛ́d" + - "ǝritamúlritaíriturkriukrɛ́nriurdúriwyɛtnámriyúubaricinɔárizúlurikpa", - []uint16{ // 377 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x005b, 0x005b, 0x0064, - 0x0064, 0x0064, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0082, - 0x0082, 0x008a, 0x008a, 0x008a, 0x008a, 0x0095, 0x0095, 0x0095, - // Entry 40 - 7F - 0x0095, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - 0x00b3, 0x00b3, 0x00be, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, - 0x00c9, 0x00c9, 0x00d0, 0x00d0, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00e4, 0x00e4, 0x00ed, 0x00ed, 0x00ed, - 0x00f8, 0x00f8, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, - 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0110, 0x0110, 0x011b, - // Entry 80 - BF - 0x011b, 0x0128, 0x0128, 0x0128, 0x0128, 0x0131, 0x0137, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, 0x0148, - 0x0153, 0x0153, 0x015b, 0x015b, 0x015b, 0x0161, 0x0161, 0x0161, - 0x0161, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0171, - 0x0178, 0x0178, 0x0178, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, - 0x0183, 0x018b, 0x018b, 0x0194, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - // Entry C0 - FF - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - // Entry 100 - 13F - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - // Entry 140 - 17F - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x01a0, - }, - }, - { // ksh - "AfahreschAbchahseschAvästahneschAfrikaansAkahneschAmhahreschArrajonehses" + - "chArahbeschAßamehseschAvahreschAimahreschAsserbaidschahneschBaschkih" + - "reschWiißrußeschBulljahreschBislahmeschBambaraBängjahleschTibehtesch" + - "BettohneschBoßneschKattalahneschTschätschehneschChamorruKorseschTsch" + - "äscheschKerscheßlahweschTschowascheschWallihseschDähneschDeutschDiv" + - "ehjeschButahneschEweJrihscheschÄngleschEsperantoSchpahneschÄßneschBa" + - "skeschPärseschFulfuldeFinneschFihdscheschFärröhreschFranzühseschWäßf" + - "rihseschIhreschJallihzeschJuwarahneschGutscharateschMangxHaußaHebräh" + - "jeschHinndiKrowateschHa’iihteschUnnjarreschArmehneschHerrehrode Inte" + - "rlinguaIndonehseschIgboIhdoIßlänndeschEtalljähneschInuktitutJapahnes" + - "chJavahneschJe’orjeschRekohjoOschivamboKassakkeschJröhnländeschKhmer" + - "KannadaKorrejaaneschKanuhreschKaschmihreschKurrdeschKohmeschKornesch" + - "KirjihseschLateijneschLuxemborjeschLuganndaLemburjeschLingjallaLahoo" + - "teschLittoueschKilubaLätteschMadajaßkeschMaschallehseschMa’ohreschMa" + - "zedohneschMallajalamMongjohleschMarrahteschMallaijeschMaltehseschBur" + - "mehseschNauruheschNood-NdebeleNepallehseschNdongjahneschHolländeschN" + - "eu NorrwehjeschNorrwehjesch BokmålNavvachoSchi-SchewaOriijaOßeetesch" + - "PanschaabeschPollneschPaschtuuneschPochtojeseschKättschowaRätoromaan" + - "eschK-RundeschRumäneschRußßeschKinja-RuandeschSanskritSinndiNood-Lap" + - "pländeschSangjoSingjaleeseschẞlovakeschẞloveeneschSammohaneschSchi-S" + - "chonaSomahleschAlbahneschSärbeschSi-SwateschSöd-SootoSindanehseschSc" + - "hwehdeschSuahehleschTamihleschTelluhjuTadschihkeschTailändeschTijren" + - "ejahneschTörkmehneschSe-ZwahneschTongjahneschTörkeschXi-Zongjahnesch" + - "TattahreschTahihteschUj’juhreschUkraineschUrdu/HindiUßbehkeschWendaV" + - "ijätnammehseschVolapükWalohneschWoloffIsi-KhohsaJiddeschJoruhbaSchin" + - "ehsesch (Mandarin)SuhluAschenehseschAdangmeschAdygehjschTonehsesch A" + - "rahbeschAfrehihleschAghehmeschAijnuAkahdeschAle’uhteschAhl ÄngleschA" + - "njikahneschArrappahoAljehresch ArahbeschMarokahnesch ArahbeschÄjipte" + - "sch ArahbeschPareAmärrekahnesche BlendeschprohchAstuhrejahneschAwahd" + - "eschBeluhtscheschBalinehseschBaireschBasaa-SchprohcheBembaBenaBhohds" + - "chpureschEdoBischnuprejahneschBrahjeschBrahuijeschBoddoBurejahteschB" + - "ujinehseschBilihneschZebuwahneschKihja-SchprohchTrukehseschMahreschT" + - "schoktohTschärrokehTschäjännZäntrahl-KurrdeschKopteschKaschuhbeschDa" + - "kohteschDarjihneschDawedahneschDohjribeschDjermaNiddersorbeschDu’ala" + - "MeddelnehderlängschJola-FonyischDassajahneschKîembuÄffikschEmilijahn" + - "eschAhl ÄjipteschEkajukeschMeddelängleschZäntrahl-JuppikEwonndoFilli" + - "pihneschFohneschFrijauhleschJahJi’is-Ahl-ÄttejohpeschJillbättehsesch" + - "JorontalohschSchwitzerdütschHauajahneschHiligaynonHmongBovversorrbes" + - "chHupaIbahneschIbibioIlokahneschEngjuscheschIngjrijahneschJamaikahne" + - "sch-ÄngleschLodschbahnNjombaJühdesch-PärseschJütteschKabyhleschKamba" + - " vun KehnijaKabadihneschChimakondeKapvärdeschKoro vun de Älfebeijnkö" + - "ßKhasiKojra TschihniKakoKaländjihneschKimbunduKon’kahneschKpäleKara" + - "tschaj-Balkahresch-TörkeschKarehleschKorocheschBafijahneschKölschKum" + - "ykeschLadihneschLangode Landa-SchproocheLesjeschLakotaSilohziNood-Lu" + - "hreschTschilubaSchilunndaLuoLuhjeschMokschahMeitei-ManipuhreschMunda" + - "ng-ongerscheidlijje Schprohche-KrihkMirandehseschÄrsjahneschNapollet" + - "ahneschNewahreschGyeleNjijembohnNojalNood-SohtoK’ische’KiromboArroma" + - "hneschJackuteschNjambaijKojraboro SenniTaschelhitteschLule-Läpplände" + - "schInahri LappländeschKommohreschSührejakkeschTetumschTigreKlingjohn" + - "eschTok PisinTasawaqTuvinijahneschTamasicht ussem meddlere AtlasUdmu" + - "chteschUmbundesch-onbikannte-Schprooch-WalserdütschWelahmoWaray-Wara" + - "yKalmükkeschJämmbahKanton-SchinehseschSuhñikein SchproochSahsajeschS" + - "chtandatt ArahbeschSödasserbaidschahneschDeutsch uß ÖhßterichDeutsch" + - " uß de SchweijzÄnglesch uß AußtrahlijeÄnglesch uß KanadaÄnglesch uß " + - "JruhßbrettannijeAmärrekahnesch ÄngleschSchpahnesch uß Latting-Ammärr" + - "ikaSchpahnesch en SchpahnejeSchpahnesch en MäxikohFranzühsesch uß Ka" + - "nadaFranzühsesch uß de SchweijzNehdersaksesch en de NederlängFlähmes" + - "chBrasilljaanesch PochtojeseschPochtojesesch uß PochtojallSärbokowat" + - "eschSchinehsesch (eijfache Schreff)Schinehsesch (tradizjonälle Schre" + - "ff)", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0014, 0x0021, 0x002a, 0x0033, 0x003d, 0x004b, - 0x0054, 0x0060, 0x0069, 0x0073, 0x0086, 0x0093, 0x00a0, 0x00ac, - 0x00b7, 0x00be, 0x00cb, 0x00d5, 0x00e0, 0x00e9, 0x00f6, 0x0107, - 0x010f, 0x0117, 0x0117, 0x0124, 0x0135, 0x0143, 0x014e, 0x0157, - 0x015e, 0x0168, 0x0172, 0x0175, 0x0180, 0x0189, 0x0192, 0x019d, - 0x01a6, 0x01ae, 0x01b7, 0x01bf, 0x01c7, 0x01d2, 0x01df, 0x01ec, - 0x01fa, 0x0201, 0x0201, 0x020c, 0x0218, 0x0226, 0x022b, 0x0231, - 0x023d, 0x0243, 0x0243, 0x024d, 0x025a, 0x0265, 0x026f, 0x0277, - // Entry 40 - 7F - 0x0285, 0x0291, 0x0291, 0x0295, 0x0295, 0x0295, 0x0299, 0x02a6, - 0x02b4, 0x02bd, 0x02c7, 0x02d1, 0x02dd, 0x02dd, 0x02e4, 0x02ee, - 0x02f9, 0x0308, 0x030d, 0x0314, 0x0321, 0x032b, 0x0338, 0x0341, - 0x0349, 0x0351, 0x035c, 0x0367, 0x0374, 0x037c, 0x0387, 0x0390, - 0x039a, 0x03a4, 0x03aa, 0x03b3, 0x03c0, 0x03cf, 0x03db, 0x03e7, - 0x03f1, 0x03fd, 0x0408, 0x0413, 0x041e, 0x0429, 0x0433, 0x043f, - 0x044c, 0x0459, 0x0465, 0x0475, 0x0489, 0x0489, 0x0491, 0x049c, - 0x049c, 0x049c, 0x049c, 0x04a2, 0x04ac, 0x04b9, 0x04b9, 0x04c2, - // Entry 80 - BF - 0x04cf, 0x04dc, 0x04e7, 0x04f6, 0x0500, 0x050a, 0x0514, 0x0523, - 0x052b, 0x052b, 0x0531, 0x0543, 0x0549, 0x0557, 0x0563, 0x0570, - 0x057c, 0x0587, 0x0591, 0x059b, 0x05a4, 0x05af, 0x05b9, 0x05c6, - 0x05d1, 0x05dc, 0x05e6, 0x05ee, 0x05fb, 0x0607, 0x0616, 0x0623, - 0x062f, 0x063b, 0x0644, 0x0653, 0x065e, 0x0668, 0x0675, 0x067f, - 0x0689, 0x0694, 0x0699, 0x06aa, 0x06b2, 0x06bc, 0x06c2, 0x06cc, - 0x06d4, 0x06db, 0x06db, 0x06f2, 0x06f7, 0x0704, 0x0704, 0x070e, - 0x0718, 0x072c, 0x0738, 0x0742, 0x0747, 0x0750, 0x0750, 0x075d, - // Entry C0 - FF - 0x075d, 0x075d, 0x076a, 0x0776, 0x0776, 0x0776, 0x0776, 0x077f, - 0x0793, 0x0793, 0x0793, 0x07a9, 0x07bd, 0x07c1, 0x07e1, 0x07f0, - 0x07f0, 0x07f9, 0x0806, 0x0812, 0x081a, 0x082a, 0x082a, 0x082a, - 0x082a, 0x082a, 0x082f, 0x082f, 0x0833, 0x0833, 0x0833, 0x0833, - 0x0842, 0x0842, 0x0845, 0x0845, 0x0845, 0x0845, 0x0857, 0x0857, - 0x0860, 0x086b, 0x0870, 0x0870, 0x087c, 0x0888, 0x0888, 0x0892, - 0x0892, 0x0892, 0x0892, 0x0892, 0x0892, 0x0892, 0x089e, 0x08ad, - 0x08ad, 0x08ad, 0x08b8, 0x08c0, 0x08c0, 0x08c9, 0x08c9, 0x08d5, - // Entry 100 - 13F - 0x08e0, 0x08f3, 0x08fb, 0x08fb, 0x08fb, 0x08fb, 0x0907, 0x0911, - 0x091c, 0x0928, 0x0928, 0x0928, 0x0933, 0x0933, 0x0939, 0x0939, - 0x0947, 0x0947, 0x094f, 0x0963, 0x0970, 0x0970, 0x097d, 0x0984, - 0x098d, 0x099a, 0x09a8, 0x09b2, 0x09b2, 0x09c1, 0x09d1, 0x09d8, - 0x09d8, 0x09d8, 0x09e5, 0x09e5, 0x09ed, 0x09ed, 0x09ed, 0x09ed, - 0x09ed, 0x09ed, 0x09ed, 0x09f9, 0x09fc, 0x09fc, 0x09fc, 0x09fc, - 0x09fc, 0x09fc, 0x0a15, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, - 0x0a25, 0x0a32, 0x0a32, 0x0a32, 0x0a32, 0x0a42, 0x0a42, 0x0a42, - // Entry 140 - 17F - 0x0a42, 0x0a42, 0x0a42, 0x0a42, 0x0a4e, 0x0a4e, 0x0a58, 0x0a58, - 0x0a5d, 0x0a6c, 0x0a6c, 0x0a70, 0x0a79, 0x0a7f, 0x0a8a, 0x0a96, - 0x0aa4, 0x0abb, 0x0ac5, 0x0acb, 0x0acb, 0x0ade, 0x0ade, 0x0ae7, - 0x0ae7, 0x0af1, 0x0af1, 0x0af1, 0x0b02, 0x0b02, 0x0b0e, 0x0b0e, - 0x0b0e, 0x0b18, 0x0b24, 0x0b24, 0x0b3f, 0x0b3f, 0x0b44, 0x0b44, - 0x0b52, 0x0b52, 0x0b52, 0x0b56, 0x0b65, 0x0b6d, 0x0b6d, 0x0b7b, - 0x0b7b, 0x0b81, 0x0ba1, 0x0ba1, 0x0ba1, 0x0bab, 0x0bb5, 0x0bb5, - 0x0bc1, 0x0bc8, 0x0bd1, 0x0bd1, 0x0bdb, 0x0be0, 0x0bf3, 0x0bf3, - // Entry 180 - 1BF - 0x0bfb, 0x0bfb, 0x0bfb, 0x0bfb, 0x0c01, 0x0c01, 0x0c01, 0x0c01, - 0x0c08, 0x0c15, 0x0c15, 0x0c1e, 0x0c1e, 0x0c28, 0x0c2b, 0x0c2b, - 0x0c33, 0x0c33, 0x0c33, 0x0c33, 0x0c33, 0x0c33, 0x0c33, 0x0c33, - 0x0c33, 0x0c33, 0x0c33, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, - 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c3b, 0x0c4e, 0x0c4e, - 0x0c4e, 0x0c4e, 0x0c55, 0x0c72, 0x0c77, 0x0c84, 0x0c84, 0x0c84, - 0x0c84, 0x0c90, 0x0c90, 0x0c90, 0x0c9f, 0x0c9f, 0x0c9f, 0x0ca9, - 0x0ca9, 0x0ca9, 0x0ca9, 0x0cae, 0x0cb8, 0x0cbd, 0x0cbd, 0x0cbd, - // Entry 1C0 - 1FF - 0x0cbd, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, - 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, - 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, - 0x0cc7, 0x0cc7, 0x0cc7, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, 0x0cd3, - 0x0cd3, 0x0cd3, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0cda, 0x0ce6, - 0x0ce6, 0x0ce6, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, - 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, - 0x0cf8, 0x0cf8, 0x0d07, 0x0d07, 0x0d07, 0x0d16, 0x0d16, 0x0d16, - // Entry 200 - 23F - 0x0d16, 0x0d16, 0x0d16, 0x0d16, 0x0d29, 0x0d3d, 0x0d3d, 0x0d3d, - 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, 0x0d3d, - 0x0d48, 0x0d48, 0x0d56, 0x0d56, 0x0d56, 0x0d56, 0x0d56, 0x0d56, - 0x0d5e, 0x0d63, 0x0d63, 0x0d63, 0x0d63, 0x0d70, 0x0d70, 0x0d70, - 0x0d70, 0x0d70, 0x0d79, 0x0d79, 0x0d79, 0x0d79, 0x0d79, 0x0d79, - 0x0d79, 0x0d79, 0x0d80, 0x0d8e, 0x0dac, 0x0db7, 0x0db7, 0x0dc1, - 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, 0x0dd7, - 0x0dd7, 0x0de4, 0x0deb, 0x0df6, 0x0df6, 0x0df6, 0x0df6, 0x0e02, - // Entry 240 - 27F - 0x0e02, 0x0e02, 0x0e02, 0x0e02, 0x0e02, 0x0e0a, 0x0e0a, 0x0e1d, - 0x0e1d, 0x0e1d, 0x0e1d, 0x0e1d, 0x0e1d, 0x0e23, 0x0e31, 0x0e3b, - 0x0e4f, 0x0e66, 0x0e7d, 0x0e94, 0x0eae, 0x0ec2, 0x0ee1, 0x0efa, - 0x0f1c, 0x0f35, 0x0f4c, 0x0f4c, 0x0f64, 0x0f81, 0x0fa0, 0x0faa, - 0x0fc7, 0x0fe3, 0x0fe3, 0x0ff2, 0x0ff2, 0x1011, 0x1036, - }, - }, - { // kw - "kernewek", - []uint16{ // 90 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0008, - }, - }, - { // ky - kyLangStr, - kyLangIdx, - }, - { // lag - "KɨakáaniKɨmʉháariKɨaráabuKɨberalúusiKɨbulugáriaKɨbangálaKɨchéekiKɨjerʉmá" + - "aniKɨgiríkiKɨɨngeréesaKɨhispániaKɨajéemiKɨfaráansaKɨhaúusaKɨhíindiKɨ" + - "hungáriKɨɨndonésiaKiígiboKɨtaliáanoKɨjapáaniKɨjáavaKɨkambódiaKɨkoréa" + - "KɨmelésiaKɨbáamaKɨnepáaliKɨholáanziKɨpúnjabiKɨpólandiKɨréenoKɨromaní" + - "aKɨrúusiKɨnyarwáandaKɨsómáaliKɨswíidiKɨtamíiliKɨtáilandiKɨturúukiKɨu" + - "kɨraníaKɨúrduKɨvietináamuKɨyorúubaKɨchíinaKɨzúuluKɨlaangi", - []uint16{ // 382 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002d, 0x003a, - 0x003a, 0x003a, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x005d, 0x005d, 0x005d, 0x005d, 0x0067, 0x0075, 0x0075, 0x0081, - 0x0081, 0x0081, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x0097, - 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x00a1, - 0x00a1, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b6, 0x00b6, 0x00b6, - // Entry 40 - 7F - 0x00b6, 0x00c4, 0x00c4, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00d8, 0x00d8, 0x00e3, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, - 0x00ec, 0x00ec, 0x00f8, 0x00f8, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115, - 0x0120, 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, - 0x012c, 0x012c, 0x012c, 0x012c, 0x012c, 0x0137, 0x0137, 0x0142, - // Entry 80 - BF - 0x0142, 0x014b, 0x014b, 0x014b, 0x014b, 0x0156, 0x015f, 0x016d, - 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, - 0x016d, 0x016d, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, - 0x0183, 0x0183, 0x018e, 0x018e, 0x018e, 0x019a, 0x019a, 0x019a, - 0x019a, 0x019a, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01b2, - 0x01ba, 0x01ba, 0x01ba, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, - 0x01c8, 0x01d3, 0x01d3, 0x01dd, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - // Entry C0 - FF - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - // Entry 100 - 13F - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - // Entry 140 - 17F - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01ef, - }, - }, - { // lb - "AfarAbchaseschAvesteschAfrikaansAkanAmhareschAragoneseschArabeschAssames" + - "eschAwareschAymaraAserbaidschaneschBaschkireschWäissrusseschBulgares" + - "chBislamaBambara-SproochBengaleschTibeteschBretoneschBosneschKatalan" + - "eschTschetscheneschChamorro-SproochKorseschCreeTschecheschKierchesla" + - "weschTschuwascheschWaliseschDäneschDäitschMaldiveschBhutaneschEwe-Sp" + - "roochGriicheschEngleschEsperantoSpueneschEstneschBaskeschPerseschFul" + - "FinneschFidschianeschFäröeschFranséischWestfrieseschIreschSchottesch" + - "t GälleschGalizeschGuaraniGujaratiManxHausaHebräeschHindiHiri-MotuKr" + - "oateschHaitianeschUngareschArmeneschHerero-SproochInterlinguaIndones" + - "eschInterlingueIgbo-SproochSichuan YiInupiakIdo-SproochIslänneschIta" + - "lieneschInukitutJapaneschJavaneschGeorgeschKongoleseschKikuyu-Sprooc" + - "hKwanyamaKasacheschGrönlänneschKambodschaneschKannadaKoreaneschKanur" + - "i-SproochKaschmireschKurdeschKomi-SproochKorneschKirgiseschLatäinLët" + - "zebuergeschGanda-SproochLimburgeschLingalaLaoteschLitaueschLuba-Kata" + - "ngaLetteschMalagassi-SproochMarschalleseschMaoriMazedoneschMalayalam" + - "MongoleschMarathiMalaieschMalteseschBirmaneschNaurueschNord-Ndebele-" + - "SproochNepaleseschNdongaHollänneschNorwegesch NynorskNorwegesch Bokm" + - "ålSüd-Ndebele-SproochNavajoNyanja-SproochOkzitaneschOjibwa-SproochO" + - "romoOrijaOsseteschPandschabeschPaliPolneschPaschtuPortugiseschQuechu" + - "aRätoromaneschRundi-SproochRumäneschRusseschRuandeschSanskritSardesc" + - "hSindhiNordsameschSangoSinghaleseschSlowakeschSloweneschSamoaneschSh" + - "onaSomaliAlbaneschSerbeschSwaziSüd-Sotho-SproochSundaneseschSchwedes" + - "chSuaheliTamileschTeluguTadschikeschThailänneschTigrinjaTurkmeneschT" + - "swana-SproochTongaeschTierkeschTsongaTatareschTahiteschUigureschUkra" + - "ineschUrduUsbekeschVenda-SproochVietnameseschVolapükWallouneschWolof" + - "XhosaJiddeschYorubaZhuangChineseschZuluAceh-SproochAcholi-SproochAda" + - "ngmeAdygéieschTunesescht ArabeschAfrihiliAghemAinu-SproochAkkadeschA" + - "labamaAleuteschGegeschSüd-AlaeschAlengleschAngikaAramäeschMapudungun" + - "AraonaArapaho-SproochAlgerescht ArabeschArawak-SproochMarokkanescht " + - "ArabeschEgyptescht ArabeschAsu (Tanzania)Amerikanesch ZeechesproochA" + - "sturianeschKotavaAwadhiBelutscheschBalineseschBaireschBasaa-SproochB" + - "amunBatak TobaGhomálá’BedauyeBemba-SproochBetawiBenaBafutBadagaBhods" + - "chpuriBikol-SproochBini-SproochBanjareseschKomBlackfoot-SproochBishn" + - "upriyaBachtiareschBraj-BhakhaBrahuiBodoAkooseBurjateschBugineseschBu" + - "luBlinMedumbaCaddoKaribeschCayugaAtsamCebuanoKigaChibcha-SproochTsch" + - "agataeschTrukeseschMariChinookChoctawChipewyanCherokeeCheyenneSorani" + - "KopteschCapiznonKrimtatareschKaschubeschDakota-SproochDargineschTait" + - "aDelaware-SproochSlaveDogribDinka-SproochZarmaDogriNiddersorbeschZen" + - "tral-DusunDualaMëttelhollänneschJola-FonyiDyula-SproochDazagaKiembuE" + - "fikEmilianeschEgypteschEkajukElameschMëttelengleschYup’ikEwondoExtre" + - "madureschPangwe-SproochFilipinoMeänkieliFon-SproochCajunMëttelfransé" + - "ischAlfranséischFrankoprovenzaleschNordfrieseschOstfrieseschFriulesc" + - "hGa-SproochGagauseschGan-ChineseschGayoGbaya-SproochZoroastrianescht" + - " DariGeezGilberteseschGilakiMëttelhéichdäitschAlhéichdäitschGoan-Kon" + - "kaniGondi-SproochMongondouGoteschGrebo-SproochAlgriicheschSchwäizerd" + - "äitschWayuuFarefareGusii-SproochKutchin-SproochHaida-SproochHakka-C" + - "hineseschHawaieschFidschi-HindiHiligaynon-SproochHethiteschMiao-Spro" + - "ochUewersorbeschXiang-ChineseschHupaIbanIbibioIlokano-SproochIngusch" + - "eschIschoreschJamaikanesch-KreoleschLojbanNgombaMachameJiddesch-Pers" + - "eschJiddesch-ArabeschJüteschKarakalpakeschKabyleschKachin-SproochJju" + - "KambaKawiKabardineschKanembuTyapMakondeKabuverdianuKenyangKoroKainga" + - "ngKhasi-SproochSakeschKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbund" + - "u-SproochKomi-PermiakKonkaniKosraeaneschKpelle-SproochKaratschaiesch" + - "-BalkareschKrioKinaray-aKareleschOraon-SproochShambalaBafiaKölschKum" + - "ükeschKutenai-SproochLadinoLangiLahndaLamba-SproochLesgeschLingua F" + - "ranca NovaLigureschLiveschLakota-SproochLombardeschMongoRotse-Sprooc" + - "hLettgalleschLuba-LuluaLuiseno-SproochLunda-SproochLuo-SproochLushai" + - "-SproochOlulujiaKlassescht ChineseschLasesch SproochMadureseschMafaK" + - "hottaMaithiliMakassareschManding-SproochMassai-SproochMabaMokshaMand" + - "areseschMende-SproochMeru-SproochMorisyenMëttelireschMakhuwa-MeettoM" + - "eta’Micmac-SproochMinangkabau-SproochMandschureschMeithei-SproochMoh" + - "awk-SproochMossi-SproochWest-MariMundangMéisproochegMuskogee-Sprooch" + - "MirandeseschMarwariMentawaiMyeneErsja-MordwineschMazandaraniMin-Nan-" + - "ChineseschNeapolitaneschNamaNidderdäitschNewariNias-SproochNiue-Spro" + - "ochAo NagaKwasioNgiemboonNogaiAlnordeschNovialN’KoNord-Sotho-Sprooch" + - "NuerAl-NewariNyamwezi-SproochNyankoleNyoroNzimaOsage-SproochOsmanesc" + - "hPangasinan-SproochMëttelperseschPampanggan-SproochPapiamentoPalauPi" + - "cardeschPennsylvaniadäitschPlattdäitschAlperseschPfälzesch DäitschPh" + - "önikeschPiemonteseschPonteschPonapeaneschPreiseschAlprovenzaleschQu" + - "iché-SproochKichwa (Chimborazo-Gebidder)RajasthaniOuschterinsel-Spro" + - "ochRarotonganeschRomagnolTarifitRomboRomaniRotumaneschRussineschRovi" + - "anaAromuneschRwaSandawe-SproochJakuteschSamaritaneschSamburuSasakSan" + - "taliSaurashtraNgambaySanguSizilianeschSchotteschSassareseschSenecaSe" + - "naSeriSelkupeschKoyra SenniAlireschSamogiteschTaschelhitSchan-Sprooc" + - "hTschadesch-ArabeschSidamoNidderschleseschSelayarSüdsameschLule-Lapp" + - "eschInari-LappeschSkolt-LappeschSoninke-SproochSogdeschSrananeschSer" + - "er-SproochSahoSaterfrieseschSukuma-SproochSusuSumereschKomoreschAlsy" + - "reschSyreschSchleseschTuluTemneTesoTereno-SproochTetum-SproochTigreT" + - "iv-SproochTokelauaneschTsachureschKlingoneschTlingit-SproochTaleschT" + - "amaseqTsonga-SproochNeimelaneseschTuroyoSeediqTsakoneschTsimshian-Sp" + - "roochTateschTumbuka-SproochElliceaneschTasawaqTuwineschMëttlert-Atla" + - "s-TamazightUdmurteschUgariteschMbundu-SproochOnbestëmmt SproochVai-S" + - "proochVenezeschWepseschWestflämeschMainfränkeschWoteschVoroVunjoWall" + - "iserdäitschWalamo-SproochWarayWasho-SproochWu-ChineseschKalmückeschM" + - "ingrelesch SproochSogaYao-SproochYapeseschYangbenYembaNheengatuKanto" + - "neseschZapotekeschBliss-SymbolerSeelänneschZenagaMarokkanescht Stand" + - "ard-TamazightZuni-SproochKeng SproochinhalterZazaModernt Héicharabes" + - "chÉisträichescht DäitschSchwäizer HéichdäitschAustralescht EngleschK" + - "anadescht EngleschBritescht EngleschAmerikanescht EngleschLatäinamer" + - "ikanescht SpueneschEuropäescht SpueneschMexikanescht SpueneschKanade" + - "scht FranséischSchwäizer FranséischFlämeschBrasilianescht Portugises" + - "chEuropäescht PortugiseschMoldaweschSerbo-KroateschKongo-SwahiliChin" + - "esesch (vereinfacht)Chinesesch (traditionell)", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, - 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0085, 0x008f, - 0x0096, 0x00a5, 0x00af, 0x00b8, 0x00c2, 0x00ca, 0x00d5, 0x00e4, - 0x00f4, 0x00fc, 0x0100, 0x010b, 0x011a, 0x0128, 0x0131, 0x0139, - 0x0141, 0x014b, 0x0155, 0x0160, 0x016a, 0x0172, 0x017b, 0x0184, - 0x018c, 0x0194, 0x019c, 0x019f, 0x01a7, 0x01b4, 0x01be, 0x01c9, - 0x01d6, 0x01dc, 0x01f1, 0x01fa, 0x0201, 0x0209, 0x020d, 0x0212, - 0x021c, 0x0221, 0x022a, 0x0233, 0x023e, 0x0247, 0x0250, 0x025e, - // Entry 40 - 7F - 0x0269, 0x0274, 0x027f, 0x028b, 0x0295, 0x029c, 0x02a7, 0x02b2, - 0x02bd, 0x02c5, 0x02ce, 0x02d7, 0x02e0, 0x02ec, 0x02fa, 0x0302, - 0x030c, 0x031a, 0x0329, 0x0330, 0x033a, 0x0348, 0x0354, 0x035c, - 0x0368, 0x0370, 0x037a, 0x0381, 0x0390, 0x039d, 0x03a8, 0x03af, - 0x03b7, 0x03c0, 0x03cc, 0x03d4, 0x03e5, 0x03f4, 0x03f9, 0x0404, - 0x040d, 0x0417, 0x041e, 0x0427, 0x0431, 0x043b, 0x0444, 0x0458, - 0x0463, 0x0469, 0x0475, 0x0487, 0x0499, 0x04ad, 0x04b3, 0x04c1, - 0x04cc, 0x04da, 0x04df, 0x04e4, 0x04ed, 0x04fa, 0x04fe, 0x0506, - // Entry 80 - BF - 0x050d, 0x0519, 0x0520, 0x052e, 0x053b, 0x0545, 0x054d, 0x0556, - 0x055e, 0x0566, 0x056c, 0x0577, 0x057c, 0x0589, 0x0593, 0x059d, - 0x05a7, 0x05ac, 0x05b2, 0x05bb, 0x05c3, 0x05c8, 0x05da, 0x05e6, - 0x05f0, 0x05f7, 0x0600, 0x0606, 0x0612, 0x061f, 0x0627, 0x0632, - 0x0640, 0x0649, 0x0652, 0x0658, 0x0661, 0x066a, 0x0673, 0x067d, - 0x0681, 0x068a, 0x0697, 0x06a4, 0x06ac, 0x06b7, 0x06bc, 0x06c1, - 0x06c9, 0x06cf, 0x06d5, 0x06df, 0x06e3, 0x06ef, 0x06fd, 0x0704, - 0x070f, 0x0722, 0x072a, 0x072f, 0x073b, 0x0744, 0x074b, 0x0754, - // Entry C0 - FF - 0x075b, 0x0767, 0x0771, 0x0777, 0x0781, 0x078b, 0x0791, 0x07a0, - 0x07b3, 0x07b3, 0x07c1, 0x07d7, 0x07ea, 0x07f8, 0x0812, 0x081e, - 0x0824, 0x082a, 0x0836, 0x0841, 0x0849, 0x0856, 0x085b, 0x0865, - 0x0871, 0x0878, 0x0885, 0x088b, 0x088f, 0x0894, 0x089a, 0x089a, - 0x08a5, 0x08b2, 0x08be, 0x08ca, 0x08cd, 0x08de, 0x08e9, 0x08f5, - 0x0900, 0x0906, 0x090a, 0x0910, 0x091a, 0x0925, 0x0929, 0x092d, - 0x0934, 0x0939, 0x0942, 0x0948, 0x094d, 0x094d, 0x0954, 0x0958, - 0x0967, 0x0974, 0x097e, 0x0982, 0x0989, 0x0990, 0x0999, 0x09a1, - // Entry 100 - 13F - 0x09a9, 0x09af, 0x09b7, 0x09bf, 0x09cc, 0x09cc, 0x09d7, 0x09e5, - 0x09ef, 0x09f4, 0x0a04, 0x0a09, 0x0a0f, 0x0a1c, 0x0a21, 0x0a26, - 0x0a34, 0x0a41, 0x0a46, 0x0a59, 0x0a63, 0x0a70, 0x0a76, 0x0a7c, - 0x0a80, 0x0a8b, 0x0a94, 0x0a9a, 0x0aa2, 0x0ab1, 0x0ab9, 0x0abf, - 0x0acd, 0x0adb, 0x0ae3, 0x0aed, 0x0af8, 0x0afd, 0x0b0f, 0x0b1c, - 0x0b2f, 0x0b3c, 0x0b48, 0x0b51, 0x0b5b, 0x0b65, 0x0b73, 0x0b77, - 0x0b84, 0x0b99, 0x0b9d, 0x0baa, 0x0bb0, 0x0bc5, 0x0bd5, 0x0be1, - 0x0bee, 0x0bf7, 0x0bfe, 0x0c0b, 0x0c17, 0x0c29, 0x0c2e, 0x0c36, - // Entry 140 - 17F - 0x0c43, 0x0c52, 0x0c5f, 0x0c6f, 0x0c78, 0x0c85, 0x0c97, 0x0ca1, - 0x0cad, 0x0cba, 0x0cca, 0x0cce, 0x0cd2, 0x0cd8, 0x0ce7, 0x0cf2, - 0x0cfc, 0x0d12, 0x0d18, 0x0d1e, 0x0d25, 0x0d36, 0x0d47, 0x0d4f, - 0x0d5d, 0x0d66, 0x0d74, 0x0d77, 0x0d7c, 0x0d80, 0x0d8c, 0x0d93, - 0x0d97, 0x0d9e, 0x0daa, 0x0db1, 0x0db5, 0x0dbd, 0x0dca, 0x0dd1, - 0x0ddd, 0x0de3, 0x0dec, 0x0df0, 0x0df8, 0x0e08, 0x0e14, 0x0e1b, - 0x0e27, 0x0e35, 0x0e4e, 0x0e52, 0x0e5b, 0x0e64, 0x0e71, 0x0e79, - 0x0e7e, 0x0e85, 0x0e8f, 0x0e9e, 0x0ea4, 0x0ea9, 0x0eaf, 0x0ebc, - // Entry 180 - 1BF - 0x0ec4, 0x0ed6, 0x0edf, 0x0ee6, 0x0ef4, 0x0eff, 0x0f04, 0x0f04, - 0x0f11, 0x0f11, 0x0f1d, 0x0f27, 0x0f36, 0x0f43, 0x0f4e, 0x0f5c, - 0x0f64, 0x0f79, 0x0f88, 0x0f93, 0x0f97, 0x0f9d, 0x0fa5, 0x0fb1, - 0x0fc0, 0x0fce, 0x0fd2, 0x0fd8, 0x0fe4, 0x0ff1, 0x0ffd, 0x1005, - 0x1012, 0x1020, 0x1027, 0x1035, 0x1048, 0x1055, 0x1064, 0x1072, - 0x107f, 0x1088, 0x108f, 0x109c, 0x10ac, 0x10b8, 0x10bf, 0x10c7, - 0x10cc, 0x10dd, 0x10e8, 0x10fa, 0x1108, 0x110c, 0x111a, 0x1120, - 0x112c, 0x1138, 0x113f, 0x1145, 0x114e, 0x1153, 0x115d, 0x1163, - // Entry 1C0 - 1FF - 0x1169, 0x117b, 0x117f, 0x1188, 0x1198, 0x11a0, 0x11a5, 0x11aa, - 0x11b7, 0x11c0, 0x11d2, 0x11e1, 0x11f3, 0x11fd, 0x1202, 0x120c, - 0x120c, 0x1220, 0x122d, 0x1237, 0x124a, 0x1255, 0x1262, 0x126a, - 0x1276, 0x127f, 0x128e, 0x129d, 0x12b9, 0x12c3, 0x12d8, 0x12e6, - 0x12ee, 0x12f5, 0x12fa, 0x1300, 0x130b, 0x1315, 0x131c, 0x1326, - 0x1329, 0x1338, 0x1341, 0x134e, 0x1355, 0x135a, 0x1361, 0x136b, - 0x1372, 0x1377, 0x1383, 0x138d, 0x1399, 0x1399, 0x139f, 0x13a3, - 0x13a7, 0x13b1, 0x13bc, 0x13c4, 0x13cf, 0x13d9, 0x13e6, 0x13f9, - // Entry 200 - 23F - 0x13ff, 0x140f, 0x1416, 0x1421, 0x142e, 0x143c, 0x144a, 0x1459, - 0x1461, 0x146b, 0x1478, 0x147c, 0x148a, 0x1498, 0x149c, 0x14a5, - 0x14ae, 0x14b7, 0x14be, 0x14c8, 0x14cc, 0x14d1, 0x14d5, 0x14e3, - 0x14f0, 0x14f5, 0x1500, 0x150d, 0x1518, 0x1523, 0x1532, 0x1539, - 0x1540, 0x154e, 0x155c, 0x1562, 0x1568, 0x1572, 0x1583, 0x158a, - 0x1599, 0x15a5, 0x15ac, 0x15b5, 0x15ce, 0x15d8, 0x15e2, 0x15f0, - 0x1603, 0x160e, 0x1617, 0x161f, 0x162c, 0x163a, 0x1641, 0x1645, - 0x164a, 0x165a, 0x1668, 0x166d, 0x167a, 0x167a, 0x1687, 0x1693, - // Entry 240 - 27F - 0x16a6, 0x16aa, 0x16b5, 0x16be, 0x16c5, 0x16ca, 0x16d3, 0x16df, - 0x16ea, 0x16f8, 0x1704, 0x170a, 0x172a, 0x1736, 0x174a, 0x174e, - 0x1764, 0x1764, 0x177d, 0x1796, 0x17ab, 0x17be, 0x17d0, 0x17e6, - 0x1804, 0x181a, 0x1830, 0x1830, 0x1846, 0x185c, 0x185c, 0x1865, - 0x1880, 0x1899, 0x18a3, 0x18b2, 0x18bf, 0x18d7, 0x18f0, - }, - }, - { // lg - "Lu-akaaniLu-amharikiLuwarabuLubelarusiLubulugariyaLubengaliLuceekeLudaak" + - "iLugereeki/LuyonaaniLungerezaLusipanyaLuperusiLufalansaLuhawuzaLuhin" + - "duLuhangareLuyindonezyaLuyiboLuyitaleLujapaniLunnajjavaLukmeLukoreya" + - "LugandaLumalayiLubbamaLunepaliLuholandiLupunjabiLupolandiLupotugiizi" + - "LulomaniyaLulasaLunarwandaLusomaliyaLuswideniLutamiiruLuttaayiLutake" + - "LuyukurayineLu-uruduLuvyetinaamuLuyorubaLucayinaLuzzulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x0026, 0x0032, - 0x0032, 0x0032, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0049, 0x0049, 0x0049, 0x0049, 0x005c, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f, - 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x0087, - 0x0087, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097, - // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00b1, 0x00b1, 0x00b9, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c8, 0x00c8, 0x00d0, 0x00d0, 0x00d0, 0x00d0, - 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d7, 0x00d7, 0x00d7, - 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, 0x00d7, - 0x00d7, 0x00d7, 0x00d7, 0x00df, 0x00df, 0x00e6, 0x00e6, 0x00e6, - 0x00ee, 0x00ee, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x0100, 0x0100, 0x0109, - // Entry 80 - BF - 0x0109, 0x0114, 0x0114, 0x0114, 0x0114, 0x011e, 0x0124, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, - 0x0141, 0x0141, 0x014a, 0x014a, 0x014a, 0x0152, 0x0152, 0x0152, - 0x0152, 0x0152, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0164, - 0x016c, 0x016c, 0x016c, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0180, 0x0180, 0x0188, 0x018f, - }, - }, - { // lkt - "Abkhaz IyápiAvestan IyápiAfrikaans IyápiAmharic IyápiArab IyápiAssamese " + - "IyápiAvaric IyápiAzerbaijani IyápiBashkir IyápiBelarus IyápiBulgar I" + - "yápiBengali IyápiTibetan IyápiBosnia IyápiCatalan IyápiChechen Iyápi" + - "Maštíŋča Oyáte IyápiCzech IyápiChuvash IyápiWales IyápiDane IyápiIyá" + - "šiča IyápiGreece IyápiWašíčuiyapiEsperanto IyápiSpayóla IyápiEstoni" + - "a IyápiBasque IyápiPersian IyápiFinnish IyápiFiji IyápiFaroese Iyápi" + - "Wašíču Ikčéka IyápiIrish IyápiGalician IyápiGuarani IyápiGujarati Iy" + - "ápiHausa IyápiHebrew IyápiHindi IyápiCroatian IyápiHaiti IyápiHunga" + - "ry IyápiArmenia IyápiIndonesia IyápiIgbo IyápiIceland IyápiItalia Iy" + - "ápiKisúŋla IyápiJava IyápiGeoria IyápiKazakh IyápiKhmer IyápiKannad" + - "a IyápiKorea IyápiKashmir IyápiKurd IyápiKirghiz IyápiLatin IyápiLux" + - "embourg IyápiLao IyápiLithuania IyápiltLatvia IyápiMalagasy IyápiMao" + - "ri IyápiMacedonia IyápiMalayalam IyápiMarathi IyápiMalay IyápiMaltes" + - "e IyápiBurmese IyápiNepal IyápiDutch IyápiŠináglegleǧa IyápiȞaȟátȟuŋ" + - "waŋ IyápiOriya IyápiPunjabi IyápiPolish IyápiPashto IyápiPortuguese " + - "IyápiQuechua IyápiRomansh IyápiRomanian IyápiRussia IyápiSanskrit Iy" + - "ápiSindhi IyápiSinhala IyápiSlovak IyápiSlovenian IyápiSomali Iyápi" + - "Albanian IyápiSerbia IyápiSundanese IyápiSwedish IyápiSwahili IyápiT" + - "amil IyápiTelugu IyápiTajik IyápiThai IyápiTigrinya IyápiTurkmen Iyá" + - "piTongan IyápiTurkish IyápiTatar IyápiUyghur IyápiUkrain IyápiUrdu I" + - "yápiUzbek IyápiVietnamese IyápiWolof IyápiXhosa IyápiYoruba IyápiPȟe" + - "čhókaŋ Háŋska IyápiZulu IyápiAdyghe IyápiItóǧata Altai IyápiMaȟpíya" + - " Tȟó IyápiBaluchi IyápiBamun IyápiBeja IyápiBuriat IyápiMari IyápiCh" + - "erokee IyápiŠahíyela IyápiCoptic IyápiCrimean Turkish IyápiDakȟótiya" + - "piDargwa IyápiDogri IyápiFilipino IyápiGbaya IyápiHawaiian IyápiIngu" + - "sh IyápiKara-Kalpak IyápiKabardian IyápiLahnda IyápiLakȟólʼiyapiMizo" + - " IyápiNamipuri IyápiComonian IyápiTukté iyápi tȟaŋíŋ šniZaza IyápiŠa" + - "gláša WašíčuiyapiMílahaŋska WašíčuiyapiWiyóȟpeyata Spayóla IyápiSpay" + - "ólaȟča IyápiFlemish IyápiPȟečhókaŋ Háŋska Iyápi IkčékaPȟečhókaŋ Háŋ" + - "ska Iyápi Ȟče", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000d, 0x001b, 0x002b, 0x002b, 0x0039, 0x0039, - 0x0044, 0x0053, 0x0060, 0x0060, 0x0072, 0x0080, 0x008e, 0x009b, - 0x009b, 0x009b, 0x00a9, 0x00b7, 0x00b7, 0x00c4, 0x00d2, 0x00e0, - 0x00e0, 0x00e0, 0x00fa, 0x0106, 0x0106, 0x0114, 0x0120, 0x012b, - 0x013c, 0x013c, 0x013c, 0x013c, 0x0149, 0x0157, 0x0167, 0x0176, - 0x0184, 0x0191, 0x019f, 0x019f, 0x01ad, 0x01b8, 0x01c6, 0x01df, - 0x01df, 0x01eb, 0x01eb, 0x01fa, 0x0208, 0x0217, 0x0217, 0x0223, - 0x0230, 0x023c, 0x023c, 0x024b, 0x0257, 0x0265, 0x0273, 0x0273, - // Entry 40 - 7F - 0x0273, 0x0283, 0x0283, 0x028e, 0x028e, 0x028e, 0x028e, 0x029c, - 0x02a9, 0x02a9, 0x02b9, 0x02c4, 0x02d1, 0x02d1, 0x02d1, 0x02d1, - 0x02de, 0x02de, 0x02ea, 0x02f8, 0x0304, 0x0304, 0x0312, 0x031d, - 0x031d, 0x031d, 0x032b, 0x0337, 0x0348, 0x0348, 0x0348, 0x0348, - 0x0352, 0x0364, 0x0364, 0x0371, 0x0380, 0x0380, 0x038c, 0x039c, - 0x03ac, 0x03ac, 0x03ba, 0x03c6, 0x03d4, 0x03e2, 0x03e2, 0x03e2, - 0x03ee, 0x03ee, 0x03fa, 0x03fa, 0x03fa, 0x03fa, 0x0410, 0x0410, - 0x0410, 0x0428, 0x0428, 0x0434, 0x0434, 0x0442, 0x0442, 0x044f, - // Entry 80 - BF - 0x045c, 0x046d, 0x047b, 0x0489, 0x0489, 0x0498, 0x04a5, 0x04a5, - 0x04b4, 0x04b4, 0x04c1, 0x04c1, 0x04c1, 0x04cf, 0x04dc, 0x04ec, - 0x04ec, 0x04ec, 0x04f9, 0x0508, 0x0515, 0x0515, 0x0515, 0x0525, - 0x0533, 0x0541, 0x054d, 0x055a, 0x0566, 0x0571, 0x0580, 0x058e, - 0x058e, 0x059b, 0x05a9, 0x05a9, 0x05b5, 0x05b5, 0x05c2, 0x05cf, - 0x05da, 0x05e6, 0x05e6, 0x05f7, 0x05f7, 0x05f7, 0x0603, 0x060f, - 0x060f, 0x061c, 0x061c, 0x0639, 0x0644, 0x0644, 0x0644, 0x0644, - 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, - // Entry C0 - FF - 0x0651, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x0667, 0x067d, - 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, 0x067d, - 0x067d, 0x067d, 0x068b, 0x068b, 0x068b, 0x068b, 0x0697, 0x0697, - 0x0697, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, - 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06a2, - 0x06a2, 0x06a2, 0x06a2, 0x06a2, 0x06af, 0x06af, 0x06af, 0x06af, - 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, 0x06af, - 0x06af, 0x06af, 0x06af, 0x06ba, 0x06ba, 0x06ba, 0x06ba, 0x06c9, - // Entry 100 - 13F - 0x06da, 0x06da, 0x06e7, 0x06e7, 0x06fd, 0x06fd, 0x06fd, 0x070a, - 0x0717, 0x0717, 0x0717, 0x0717, 0x0717, 0x0717, 0x0717, 0x0723, - 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, - 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, 0x0723, - 0x0723, 0x0723, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, - 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, 0x0732, - 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, - 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, 0x073e, - // Entry 140 - 17F - 0x073e, 0x073e, 0x073e, 0x073e, 0x074d, 0x074d, 0x074d, 0x074d, - 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x074d, 0x075a, - 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, 0x075a, - 0x076c, 0x076c, 0x076c, 0x076c, 0x076c, 0x076c, 0x077c, 0x077c, - 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, - 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, - 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, - 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x077c, 0x0789, 0x0789, - // Entry 180 - 1BF - 0x0789, 0x0789, 0x0789, 0x0789, 0x0798, 0x0798, 0x0798, 0x0798, - 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x0798, 0x07a3, - 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, - 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, - 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07a3, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - // Entry 1C0 - 1FF - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - // Entry 200 - 23F - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, 0x07b2, - 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, - 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, - 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, - 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, 0x07c1, - 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, - 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, - // Entry 240 - 27F - 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, - 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07de, 0x07e9, - 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x07e9, 0x0802, 0x081d, - 0x083a, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x084e, 0x085c, - 0x085c, 0x085c, 0x085c, 0x085c, 0x085c, 0x0882, 0x08a5, - }, - }, - { // ln - "akanliamarikilialabolibyelorisílibiligalilibengalilitshekɛlialemáligelek" + - "ilingɛlɛ́salisipanyelipelésanɛlifalansɛ́hausalihindiliongililindonez" + - "iigbolitalianolizapɔlizavalikambodzalikoreyalingálalimalezilibilimál" + - "inepalɛlifalamálipendzabilipolonɛlipulutugɛ́siliromanilirisíkinyarwa" + - "ndalisomalilisuwedɛlitamulilitayelitilikilikrɛniliurduliviyetinámiyo" + - "rubalisinwazulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000d, 0x000d, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0059, 0x0059, 0x0062, - 0x0062, 0x0062, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x007a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007f, - 0x007f, 0x0086, 0x0086, 0x0086, 0x0086, 0x008e, 0x008e, 0x008e, - // Entry 40 - 7F - 0x008e, 0x0097, 0x0097, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x00a4, 0x00a4, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00dc, 0x00dc, 0x00dc, - 0x00e5, 0x00e5, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00f8, 0x00f8, 0x0101, - // Entry 80 - BF - 0x0101, 0x0110, 0x0110, 0x0110, 0x0110, 0x0118, 0x011f, 0x012a, - 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, 0x012a, - 0x012a, 0x012a, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x013b, 0x013b, 0x0143, 0x0143, 0x0143, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159, - 0x015f, 0x015f, 0x015f, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x0172, 0x0172, 0x0179, 0x017d, - }, - }, - { // lo - loLangStr, - loLangIdx, - }, - { // lrc - "آذأربایئجانیآفریکانسآکانأمھأریأرأڤیآسامیآذأربایئجانی ھارگەباشکیریبئلاروٙ" + - "سیبولغاریبامبارابأنگالیتأبأتیبئرئتونبوسنیاییکاتالانچئچئنیکوریسکانچو" + - "اشیڤئلزیدانمارکیآلمانیزوٙنگخائڤئیوٙنانیئینگیلیسیئسپئرانتوئسپانیاییئ" + - "ستونیاییباسکیفارسیفأنلاندیفیجیفاروٙسیفآرانسئ ئیفئریسی أفتونئشینئیرل" + - "أندیگالیسیگوٙآرانیگوجأراتیمانکسھائوساعئبریھئنیکوروڤاتیھاییتیمأجاریأ" + - "رمأنیأندونئزیاییئیگبوسی چوان ییئیسلأندیئیتالیاییئینوکتیتوٙتجاپوٙنیج" + - "اڤئ ییگورجیکیکیوٙقأزاقکالالیسوٙتخئمئرکانادکورئ ییکأشمیریکوردی کورما" + - "نجیکورنیشقئرقیزیلاتینلوٙکزامبوٙرگیگاندالینگالالاولیتوڤانیاییلوٙبا ک" + - "اتانگالاتوڤیاییمالاگاشیمائوریمأقدوٙنیمالایامموغولیمأراتیمالاییمالتی" + - "بئرمئ یینئدئبئلئ شومالینئپالیھولأندینورڤئجی نینورسکنورڤئجی بوٙکمالئ" + - "وروموٙئوریاپأنجابیلأھئستانیپأشتوٙپورتئغالیکوچوٙارومانشراندیرومانیای" + - "یروٙسیکینیاروآنداسانسکئریتسئندیسامی شومالیسانگوسینھالائسلوڤاکیئسلوڤ" + - "ئنیاییشوناسوٙمالیآلبانیسئربیسوٙدانیسوٙئدیسأڤاحیلیتامیلتئلئگوتاجیکیت" + - "ایلأندیتیگرینیاتورکأمأنیتوٙنگانتورکیتاتارئویغوٙرئوکراینیئوردوٙئوزبأ" + - "کیڤییئتنامیڤولوفخوٙسایوروباچینیزولوآقئمماپوٙچئآسوٙبیمابئنابألوٙچی أ" + - "قتوٙنئشینبودوچیگاچوروٙکیکوردی سوٙرانیتایتازارماسوربی ھاریدوٙالاجولا" + - " فوٙنییئمبوفیلیپینیگاگائوزآلمانی سوٙئیسیگوٙسیھاڤاییسوربی ڤارونئگوٙمب" + - "اماچامئکابیلئکامباماکوٙندئکاباردینوکی یورا چینیکالئجینکومی پئرمیاکک" + - "وٙنکانیشامبالابافیالانگیلاکوٙتالۊری شومالیلوٙلوٙئیاماساییمئروموٙریس" + - "یماخوڤا میتومئتاٛموٙھاڤکموٙندانگمازأندأرانیناماآلمانی ھاریکئڤاسیوٙن" + - "ئکوٙنیوٙئرنیان کوٙلئکیچیرومبورئڤاسامبوٙروٙسانگوٙکوردی ھارگەسئناکیار" + - "ابورو سئنیتاچئلھیتسامی ھارگەلۉلئ سامیئیناری سامیئسکولت سامیتئسوتاسا" + - "ڤاقتامازیغ مینجاییزوٙن نادیارڤایڤوٙنجوٙڤارلپیریسوٙگاتامازیغ مأراکئش" + - "یبی نئشوٙعروی مدرنآذأری ھارگەآلمانی ئوتریشیآلمانی سوٙییسیئینگیلیسی " + - "ئوستارالیاییئینگیلیسی کاناداییئینگیلیسی بئریتانیاییئینگیلیسی ئمریکا" + - "ییئسپانیایی ئمریکا لاتینئسپانیایی ئوروٙپائسپانیایی مئکزیکفآرانسئ ئی" + - " کانادافآرانسئ ئی سوٙییسآلمانی ھارگە جافئلاماندیپورتئغالی بئرئزیلپور" + - "تئغالی ئوروٙپاییرومانیایی مولداڤیسأڤاحیلی کونگوچینی سادە بیەچینی سو" + - "نأتی", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0018, 0x0018, 0x0028, 0x0030, 0x003c, 0x003c, - 0x0046, 0x0050, 0x0050, 0x0050, 0x0073, 0x0081, 0x0093, 0x00a1, - 0x00a1, 0x00af, 0x00bd, 0x00c9, 0x00d7, 0x00e7, 0x00f5, 0x0101, - 0x0101, 0x0111, 0x0111, 0x0111, 0x0111, 0x011b, 0x0125, 0x0135, - 0x0141, 0x0141, 0x014f, 0x0155, 0x0163, 0x0175, 0x0187, 0x0199, - 0x01ab, 0x01b5, 0x01bf, 0x01bf, 0x01cf, 0x01d7, 0x01e5, 0x01f8, - 0x0217, 0x0227, 0x0227, 0x0233, 0x0243, 0x0253, 0x025d, 0x0269, - 0x0273, 0x027b, 0x027b, 0x028b, 0x0297, 0x02a3, 0x02af, 0x02af, - // Entry 40 - 7F - 0x02af, 0x02c5, 0x02c5, 0x02cf, 0x02e1, 0x02e1, 0x02e1, 0x02f1, - 0x0303, 0x0319, 0x0327, 0x0334, 0x033e, 0x033e, 0x034a, 0x034a, - 0x0354, 0x0368, 0x0372, 0x037c, 0x0389, 0x0389, 0x0397, 0x03b2, - 0x03b2, 0x03be, 0x03cc, 0x03d6, 0x03f0, 0x03fa, 0x03fa, 0x0408, - 0x040e, 0x0424, 0x043d, 0x044f, 0x045f, 0x045f, 0x046b, 0x047b, - 0x0489, 0x0495, 0x04a1, 0x04ad, 0x04b7, 0x04c6, 0x04c6, 0x04e3, - 0x04ef, 0x04ef, 0x04fd, 0x051a, 0x0537, 0x0537, 0x0537, 0x0537, - 0x0537, 0x0537, 0x0545, 0x054f, 0x054f, 0x055d, 0x055d, 0x056f, - // Entry 80 - BF - 0x057b, 0x058d, 0x0599, 0x05a5, 0x05af, 0x05c1, 0x05cb, 0x05e1, - 0x05f3, 0x05f3, 0x05fd, 0x0612, 0x061c, 0x062a, 0x063a, 0x0650, - 0x0650, 0x0658, 0x0666, 0x0672, 0x067c, 0x067c, 0x067c, 0x068a, - 0x0696, 0x06a6, 0x06b0, 0x06bc, 0x06c8, 0x06d8, 0x06e8, 0x06fa, - 0x06fa, 0x0708, 0x0712, 0x0712, 0x071c, 0x071c, 0x072a, 0x073a, - 0x0746, 0x0754, 0x0754, 0x0766, 0x0766, 0x0766, 0x0770, 0x077a, - 0x077a, 0x0786, 0x0786, 0x078e, 0x0796, 0x0796, 0x0796, 0x0796, - 0x0796, 0x0796, 0x0796, 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, - // Entry C0 - FF - 0x079e, 0x079e, 0x079e, 0x079e, 0x079e, 0x07ac, 0x07ac, 0x07ac, - 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07ac, 0x07b4, 0x07b4, 0x07b4, - 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, 0x07b4, - 0x07b4, 0x07b4, 0x07bc, 0x07bc, 0x07c4, 0x07c4, 0x07c4, 0x07e7, - 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, - 0x07e7, 0x07e7, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, - 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07ef, 0x07f7, - 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x07f7, 0x0805, - // Entry 100 - 13F - 0x0805, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, 0x081e, - 0x081e, 0x0828, 0x0828, 0x0828, 0x0828, 0x0828, 0x0832, 0x0832, - 0x0845, 0x0845, 0x0851, 0x0851, 0x0866, 0x0866, 0x0866, 0x086e, - 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, 0x086e, - 0x086e, 0x086e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, - 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x088c, 0x088c, 0x088c, - 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, - 0x088c, 0x088c, 0x088c, 0x088c, 0x088c, 0x08a7, 0x08a7, 0x08a7, - // Entry 140 - 17F - 0x08b1, 0x08b1, 0x08b1, 0x08b1, 0x08bd, 0x08bd, 0x08bd, 0x08bd, - 0x08bd, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, - 0x08d0, 0x08d0, 0x08d0, 0x08e0, 0x08ec, 0x08ec, 0x08ec, 0x08ec, - 0x08ec, 0x08f8, 0x08f8, 0x08f8, 0x0902, 0x0902, 0x0902, 0x0902, - 0x0902, 0x0912, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, - 0x093a, 0x093a, 0x093a, 0x093a, 0x0948, 0x0948, 0x095f, 0x096f, - 0x096f, 0x096f, 0x096f, 0x096f, 0x096f, 0x096f, 0x096f, 0x097d, - 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0991, 0x0991, 0x0991, - // Entry 180 - 1BF - 0x0991, 0x0991, 0x0991, 0x0991, 0x099f, 0x099f, 0x099f, 0x099f, - 0x099f, 0x09b4, 0x09b4, 0x09b4, 0x09b4, 0x09b4, 0x09ba, 0x09ba, - 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, - 0x09c6, 0x09d2, 0x09d2, 0x09d2, 0x09d2, 0x09d2, 0x09da, 0x09e8, - 0x09e8, 0x09fd, 0x0a07, 0x0a07, 0x0a07, 0x0a07, 0x0a07, 0x0a15, - 0x0a15, 0x0a15, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, 0x0a25, - 0x0a25, 0x0a25, 0x0a3b, 0x0a3b, 0x0a3b, 0x0a43, 0x0a58, 0x0a58, - 0x0a58, 0x0a58, 0x0a58, 0x0a68, 0x0a68, 0x0a68, 0x0a68, 0x0a68, - // Entry 1C0 - 1FF - 0x0a72, 0x0a72, 0x0a7e, 0x0a7e, 0x0a7e, 0x0a91, 0x0a91, 0x0a91, - 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, - 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, 0x0a91, - 0x0a91, 0x0a91, 0x0a91, 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0a99, - 0x0a99, 0x0a99, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa3, 0x0aa3, - 0x0aab, 0x0aab, 0x0aab, 0x0aab, 0x0abd, 0x0abd, 0x0abd, 0x0abd, - 0x0abd, 0x0ac9, 0x0ac9, 0x0ac9, 0x0ac9, 0x0ade, 0x0ade, 0x0ae6, - 0x0ae6, 0x0ae6, 0x0b01, 0x0b01, 0x0b01, 0x0b11, 0x0b11, 0x0b11, - // Entry 200 - 23F - 0x0b11, 0x0b11, 0x0b11, 0x0b24, 0x0b35, 0x0b4a, 0x0b5f, 0x0b5f, - 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, - 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b5f, 0x0b67, 0x0b67, - 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, - 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, 0x0b67, - 0x0b67, 0x0b67, 0x0b75, 0x0b75, 0x0b92, 0x0b92, 0x0b92, 0x0b92, - 0x0ba7, 0x0bad, 0x0bad, 0x0bad, 0x0bad, 0x0bad, 0x0bad, 0x0bad, - 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bbb, 0x0bcb, 0x0bcb, 0x0bcb, - // Entry 240 - 27F - 0x0bcb, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, - 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bf4, 0x0bf4, 0x0c03, 0x0c03, - 0x0c14, 0x0c29, 0x0c44, 0x0c5f, 0x0c8a, 0x0cad, 0x0cd6, 0x0cf9, - 0x0d23, 0x0d44, 0x0d63, 0x0d63, 0x0d83, 0x0da3, 0x0dbf, 0x0dd1, - 0x0df2, 0x0e17, 0x0e38, 0x0e38, 0x0e53, 0x0e6b, 0x0e80, - }, - }, - { // lt - ltLangStr, - ltLangIdx, - }, - { // lu - "LiakanLiamharikiArabiBelarusiBulegariBengaliTshekiLizelumaniGilikiLingel" + - "esaLihispaniaMpepajemiMfwàlànsaHausaHindiHongiliLindoneziaIgboLitali" + - "LiyapaniJavaLikoreyaTshilubaLimalezianepaliolandiLipunjabiMpoloniMpu" + - "tulugɛsiLiromaniLirisikinyarwandaLisomaliLisuwidiMtamuiliNtailandiNt" + - "ulukiNkraniUrduLiviyetinamuNyorubashinɛNzulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0010, 0x0010, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x0025, - 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0055, - 0x0055, 0x0055, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x006e, - 0x006e, 0x0073, 0x0073, 0x0073, 0x0073, 0x007a, 0x007a, 0x007a, - // Entry 40 - 7F - 0x007a, 0x0084, 0x0084, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, - 0x008e, 0x008e, 0x0096, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00b3, 0x00b3, 0x00b3, 0x00b3, 0x00b3, - 0x00b9, 0x00b9, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, - // Entry 80 - BF - 0x00cf, 0x00db, 0x00db, 0x00db, 0x00db, 0x00e3, 0x00e9, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x0104, 0x0104, 0x010c, 0x010c, 0x010c, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0122, - 0x0126, 0x0126, 0x0126, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0139, 0x0139, 0x013f, 0x0144, - }, - }, - { // luo - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluDholuo", - []uint16{ // 399 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, - // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, - // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 140 - 17F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 180 - 1BF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x016f, - }, - }, - { // luy - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiLusunguKihispaniaKiajemiKifaransaKihausaLuhindiKihungariKiindones" + - "iaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaKin" + - "epaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKiso" + - "maliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyoru" + - "baKichinaKizuluLuluhia", - []uint16{ // 401 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0052, 0x0052, 0x005c, - 0x005c, 0x005c, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0073, - 0x0073, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083, 0x0083, 0x0083, - // Entry 40 - 7F - 0x0083, 0x008e, 0x008e, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - 0x009e, 0x009e, 0x00a6, 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x00ac, - 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00cd, - 0x00d5, 0x00d5, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00e7, 0x00e7, 0x00f0, - // Entry 80 - BF - 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x0105, 0x0110, - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, - 0x0110, 0x0110, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, - 0x011f, 0x011f, 0x0126, 0x0126, 0x0126, 0x0130, 0x0130, 0x0130, - 0x0130, 0x0130, 0x0138, 0x0138, 0x0138, 0x0138, 0x0138, 0x0141, - 0x0147, 0x0147, 0x0147, 0x0152, 0x0152, 0x0152, 0x0152, 0x0152, - 0x0152, 0x015a, 0x015a, 0x0161, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - // Entry C0 - FF - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - // Entry 100 - 13F - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - // Entry 140 - 17F - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - // Entry 180 - 1BF - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, - 0x016e, - }, - }, - { // lv - lvLangStr, - lvLangIdx, - }, - { // mas - "nkʉtʉ́k ɔ́ɔ̄ lAkannkʉtʉ́k ɔ́ɔ̄ lAmharinkʉtʉ́k ɔ́ɔ̄ lmarabunkʉtʉ́k ɔ́ɔ̄ l" + - "Belarusinkʉtʉ́k ɔ́ɔ̄ lBulgarialnkʉtʉ́k ɔ́ɔ̄ lBengalinkʉtʉ́k ɔ́ɔ̄ lch" + - "ekinkʉtʉ́k ɔ́ɔ̄ ljerumaninkʉtʉ́k ɔ́ɔ̄ lgirikinkʉtʉ́k ɔ́ɔ̄ nkɨ́resank" + - "ʉtʉ́k ɔ́ɔ̄ lspaniankʉtʉ́k ɔ́ɔ̄ lpersiankʉtʉ́k ɔ́ɔ̄ faransankʉtʉ́k ɔ" + - "́ɔ̄ hausankʉtʉ́k ɔ́ɔ̄ lmoindinkʉtʉ́k ɔ́ɔ̄ lhungarinkʉtʉ́k ɔ́ɔ̄ Indo" + - "nesiankʉtʉ́k ɔ́ɔ̄ Igbonkʉtʉ́k ɔ́ɔ̄ ltaliannkʉtʉ́k ɔ́ɔ̄ japaninkʉtʉ́k" + - " ɔ́ɔ̄ ljanankʉtʉ́k ɔ́ɔ̄ lkambodiankʉtʉ́k ɔ́ɔ̄ lkoreankʉtʉ́k ɔ́ɔ̄ mal" + - "aynkʉtʉ́k ɔ́ɔ̄ lBurmankʉtʉ́k ɔ́ɔ̄ lnepalinkʉtʉ́k ɔ́ɔ̄ lduchinkʉtʉ́k " + - "ɔ́ɔ̄ lpunjabinkʉtʉ́k ɔ́ɔ̄ lpolandnkʉtʉ́k ɔ́ɔ̄ lportuguesenkʉtʉ́k ɔ́" + - "ɔ̄ lromaniankʉtʉ́k ɔ́ɔ̄ lrusinkʉtʉ́k ɔ́ɔ̄ lruwandankʉtʉ́k ɔ́ɔ̄ lchu" + - "marinkʉtʉ́k ɔ́ɔ̄ lswidinkʉtʉ́k ɔ́ɔ̄ ltamilnkʉtʉ́k ɔ́ɔ̄ ltainkʉtʉ́k ɔ" + - "́ɔ̄ lturukinkʉtʉ́k ɔ́ɔ̄ lkraniankʉtʉ́k ɔ́ɔ̄ lurdunkʉtʉ́k ɔ́ɔ̄ lviet" + - "inamunkʉtʉ́k ɔ́ɔ̄ lyorubankʉtʉ́k ɔ́ɔ̄ lchinankʉtʉ́k ɔ́ɔ̄ lzuluMaa", - []uint16{ // 410 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x0034, 0x0034, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x006c, 0x0089, - 0x0089, 0x0089, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, - 0x00a6, 0x00a6, 0x00a6, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00f8, 0x0116, 0x0116, 0x0131, - 0x0131, 0x0131, 0x014c, 0x014c, 0x014c, 0x014c, 0x014c, 0x0167, - 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0167, 0x0180, - 0x0180, 0x019b, 0x019b, 0x019b, 0x019b, 0x01b7, 0x01b7, 0x01b7, - // Entry 40 - 7F - 0x01b7, 0x01d4, 0x01d4, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, - 0x0207, 0x0207, 0x0221, 0x023a, 0x023a, 0x023a, 0x023a, 0x023a, - 0x023a, 0x023a, 0x0257, 0x0257, 0x0271, 0x0271, 0x0271, 0x0271, - 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, - 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, 0x0271, - 0x0271, 0x0271, 0x0271, 0x028a, 0x028a, 0x02a4, 0x02a4, 0x02a4, - 0x02bf, 0x02bf, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, - 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02f5, 0x02f5, 0x0310, - // Entry 80 - BF - 0x0310, 0x032f, 0x032f, 0x032f, 0x032f, 0x034b, 0x0364, 0x0380, - 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, 0x0380, - 0x0380, 0x0380, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, - 0x03b6, 0x03b6, 0x03d0, 0x03d0, 0x03d0, 0x03e8, 0x03e8, 0x03e8, - 0x03e8, 0x03e8, 0x0403, 0x0403, 0x0403, 0x0403, 0x0403, 0x041e, - 0x0437, 0x0437, 0x0437, 0x0455, 0x0455, 0x0455, 0x0455, 0x0455, - 0x0455, 0x0470, 0x0470, 0x048a, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - // Entry C0 - FF - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - // Entry 100 - 13F - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - // Entry 140 - 17F - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - // Entry 180 - 1BF - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04a3, - 0x04a3, 0x04a6, - }, - }, - { // mer - "KĩakaniKĩamarĩkiKĩarabuKĩbelarusiKĩbulugĩriaKĩbangiraKĩchekiKĩnjamanĩKĩn" + - "girikiKĩngerethaKĩspĩniKĩpasiaKĩfuransiKĩhausaKĩhĩndiKĩhangarĩKĩindo" + - "nesiaKĩigboKĩitalĩKĩjapaniKĩjavaKĩkambodiaKĩkoreaKĩmalesiaKĩburmaKĩn" + - "epaliKĩholandiKĩpunjabuKĩpolandiKĩpochogoKĩromaniaKĩrashiaKĩrwandaKĩ" + - "somaliKĩswideniKĩtamiluKĩthailandiKĩtakĩKĩukirĩniKĩurduKĩvietinamuKĩ" + - "yorubaKĩchinaKĩzuluKĩmĩrũ", - []uint16{ // 415 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0013, 0x0013, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0026, 0x0033, - 0x0033, 0x0033, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x003d, 0x003d, 0x003d, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0050, 0x0050, 0x0050, 0x0050, 0x005a, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0088, - 0x0088, 0x0091, 0x0091, 0x0091, 0x0091, 0x009c, 0x009c, 0x009c, - // Entry 40 - 7F - 0x009c, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, - 0x00b8, 0x00b8, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00e5, 0x00e5, 0x00ed, 0x00ed, 0x00ed, - 0x00f6, 0x00f6, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x010a, 0x010a, 0x0114, - // Entry 80 - BF - 0x0114, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013a, - 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, - 0x013a, 0x013a, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, - 0x014d, 0x014d, 0x0156, 0x0156, 0x0156, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0175, - 0x017c, 0x017c, 0x017c, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, - 0x0188, 0x0191, 0x0191, 0x0199, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - // Entry C0 - FF - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - // Entry 100 - 13F - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - // Entry 140 - 17F - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - // Entry 180 - 1BF - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, - 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a9, - }, - }, - { // mfe - "akanamarikarabbielorisbilgarbengalitchekalmangrekangleespagnolpersanfran" + - "sehaoussahindihongrwaindonezienigboitalienzaponezavanekhmer, santral" + - "koreenmalebirmannepaleolandepenjabipoloneportigerouminrisrwandasomal" + - "iswedwatamoulthaïtirkikrenienourdouvietnamienyorubasinwa, mandarinzo" + - "uloukreol morisien", - []uint16{ // 416 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x001c, - 0x001c, 0x001c, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x002d, 0x002d, 0x002d, 0x002d, 0x0031, 0x0036, 0x0036, 0x003e, - 0x003e, 0x003e, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x004a, - 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x0051, - 0x0051, 0x0056, 0x0056, 0x0056, 0x0056, 0x005d, 0x005d, 0x005d, - // Entry 40 - 7F - 0x005d, 0x0067, 0x0067, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x0072, 0x0072, 0x0078, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, - 0x007e, 0x007e, 0x008c, 0x008c, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0096, 0x0096, 0x009c, 0x009c, 0x009c, - 0x00a2, 0x00a2, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b5, - // Entry 80 - BF - 0x00b5, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c2, 0x00c5, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, - 0x00d7, 0x00d7, 0x00dd, 0x00dd, 0x00dd, 0x00e2, 0x00e2, 0x00e2, - 0x00e2, 0x00e2, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00ee, - 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, - 0x00fe, 0x0104, 0x0104, 0x0113, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry C0 - FF - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry 100 - 13F - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry 140 - 17F - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry 180 - 1BF - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0127, - }, - }, - { // mg - "AkanAmharikaAraboBielorosyBiolgaraBengaliTsekyAlemaninaGrikaAnglisyEspan" + - "iolaPersaFrantsayhaoussahindihongroàIndonezianinaigboItalianinaJapon" + - "eyJavaneykhmerKoreaninaMalagasyMalayBirmanaNepaleHolandeyPenjabiPolo" + - "neyPortiogeyRomanianinaRosianinaRoandeSomalianinaSoisaTamoilaTaioane" + - "yTiorkaOkrainianinaOrdòVietnamianinaYôrobàSinoa, MandarinZolò", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x0022, - 0x0022, 0x0022, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x0037, 0x0037, 0x0037, 0x0037, 0x003c, 0x0043, 0x0043, 0x004c, - 0x004c, 0x004c, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0060, - 0x0060, 0x0065, 0x0065, 0x0065, 0x0065, 0x006d, 0x006d, 0x006d, - // Entry 40 - 7F - 0x006d, 0x007a, 0x007a, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, - 0x0088, 0x0088, 0x008f, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x0096, 0x0096, 0x009b, 0x009b, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, - 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ac, 0x00ac, 0x00ac, 0x00ac, - 0x00ac, 0x00ac, 0x00ac, 0x00b1, 0x00b1, 0x00b8, 0x00b8, 0x00b8, - 0x00be, 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00cd, 0x00cd, 0x00d4, - // Entry 80 - BF - 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f1, 0x00f7, - 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x00f7, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0107, 0x0107, 0x010e, 0x010e, 0x010e, 0x0116, 0x0116, 0x0116, - 0x0116, 0x0116, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0128, - 0x012d, 0x012d, 0x012d, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, - 0x013a, 0x0142, 0x0142, 0x0151, 0x0156, - }, - }, - { // mgh - "IkanImhariIarabuIbelausiIbulgariaIbanglaIchekiIjerimaniIgirikiIngilishiI" + - "hispaniolaIajemiIfaransaIhausaIhindiIhungariIgboItalianoIjapaniIjava" + - "IkambodiaIkoreaImalesiaIburmaInepaliIholanziIpunjabiIpolandiNrenoIro" + - "maniaIrisiInyarandaIsomaliIswidiItamilItailandiIturukiIukranIhurduIv" + - "yetinamuIyorubaIchinaIzuluMakua", - []uint16{ // 418 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000a, 0x000a, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0018, 0x0021, - 0x0021, 0x0021, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x0037, 0x0037, 0x0037, 0x0037, 0x003e, 0x0047, 0x0047, 0x0052, - 0x0052, 0x0052, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0066, - 0x0066, 0x006c, 0x006c, 0x006c, 0x006c, 0x0074, 0x0074, 0x0074, - // Entry 40 - 7F - 0x0074, 0x0074, 0x0074, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, - 0x0080, 0x0080, 0x0087, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x0095, 0x0095, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, - 0x009b, 0x009b, 0x009b, 0x00a3, 0x00a3, 0x00a9, 0x00a9, 0x00a9, - 0x00b0, 0x00b0, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, - 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00c0, 0x00c0, 0x00c8, - // Entry 80 - BF - 0x00c8, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d5, 0x00da, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00f0, 0x00f0, 0x00f6, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x010c, - 0x0112, 0x0112, 0x0112, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x0123, 0x0123, 0x0129, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - // Entry C0 - FF - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - // Entry 100 - 13F - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - // Entry 140 - 17F - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - // Entry 180 - 1BF - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x0133, - }, - }, - { // mgo - "metaʼngam tisɔʼ", - []uint16{ // 561 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - // Entry 1C0 - 1FF - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - // Entry 200 - 23F - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0012, - }, - }, - { // mk - mkLangStr, - mkLangIdx, - }, - { // ml - mlLangStr, - mlLangIdx, - }, - { // mn - mnLangStr, - mnLangIdx, - }, - { // mr - mrLangStr, - mrLangIdx, - }, - { // ms - msLangStr, - msLangIdx, - }, - { // mt - "AfarAbkażjanAvestanAfrikansAkanAmharikuAragoniżGħarbiAssamiżAvarikAymara" + - "AżerbajġaniBashkirBelarussuBulgaruBislamaBambaraBengaliTibetjanBreto" + - "nBożnijakuKatalanChechenChamorroKorsikuCreeĊekSlaviku tal-KnisjaChuv" + - "ashWelshDaniżĠermaniżDivehiDzongkhaEweGriegIngliżEsperantoSpanjolEst" + - "onjanBaskPersjanFulahFinlandiżFiġjanFaroeseFranċiżFrisian tal-Punent" + - "IrlandiżGalliku SkoċċiżGaliċjanGuaraniGujaratiManxHausaEbrajkHindiHi" + - "ri MotuKroatCreole ta’ HaitiUngeriżArmenHereroInterlinguaIndoneżjanI" + - "nterlingueIgboSichuan YiInupjakIdoIżlandiżTaljanInuktitutĠappuniżĠav" + - "aniżĠorġjanKongoKikujuKuanyamaKażakKalallisutKhmerKannadaKoreanKanur" + - "iKashmiriKurdKomiKornikuKirgiżLatinLussemburgiżGandaLimburgishLingal" + - "janLaosjanLitwanLuba-KatangaLatvjanMalagasyMarshalljaniżMaoriMaċedon" + - "janMalayalamMongoljanMarathiMalayMaltiBurmiżNaurujanNdebeli tat-Tram" + - "untanaNepaliżNdongaOlandiżNinorsk NorveġiżBokmal NorveġiżNdebele tan" + - "-NofsinharNavajoNyanjaOċċitanOġibwaOromoOdiaOssettikuPunjabiPaliPoll" + - "akkPashtoPortugiżQuechuaRomanzRundiRumenRussuKinjarwandaSanskritSard" + - "injanSindhiSami tat-TramuntanaSangoSinhalaSlovakkSlovenSamoanShonaSo" + - "maliAlbaniżSerbSwatiSoto tan-NofsinharSundaniżŻvediżSwahiliTamilTelu" + - "guTajikTajlandiżTigrinyaTurkmeniTswanaTonganTorkTsongaTatarTaħitjanU" + - "yghurUkrenUrduUzbekVendaVjetnamiżVolapukWalloonWolofXhosaYiddishYoru" + - "baZhuangĊiniżZuluAċiniżAkoliAdangmeAdygheAfriħiliAghemAjnuAkkadjenAl" + - "eutAltai tan-NofsinharIngliż AntikAngikaAramajkMapucheArapahoArawakA" + - "suAsturianAwadhiBaluċiBaliniżBasaBejaBembaBenaBhojpuriBikolBiniSiksi" + - "kaBrajBodoBurjatBugineseBlinKaddoKaribAtsamCebuanoChigaChibchaChagat" + - "aiĊukiżMariChinook JargonChoctawĊipewjanCherokeeCheyenneKurd Ċentral" + - "iKoptikuTork tal-KrimeaFranċiż tas-Seselwa CreoleKashubianDakotaDarg" + - "waTaitaDelawerjanSlavDogribDinkaZarmaDogriSorbjan KomuniDwalaOlandiż" + - " MedjevaliJola-FonyiDyulaDazagaEmbuEfikEġizzjan (Antik)EkajukElamitI" + - "ngliż MedjevaliEwondoFangFilippinFonFranċiż MedjevaliFranċiż AntikFr" + - "ijuljanGaGayoGbayaGeezGilbertjanĠermaniż Medjevali PulitĠermaniż Ant" + - "ik, PulitGondiGorontaloGotikuGreboGrieg, AntikĠermaniż tal-Iżvizzera" + - "GusiiGwiċinHaidaĦawajjanHiligaynonHittiteHmongSorbjan ta’ FuqHupaIba" + - "nIbibioIlokoIngushLojbanNgombaMachameLhudi-PersjanLhudi-GħarbiKara-K" + - "alpakKabuljanKachinJjuKambaKawiKabardianTyapMakondeCape VerdjanKoroK" + - "hasiKotaniżKoyra ChiiniKakoKalenjinKimbunduKonkaniKosrejanKpelleKara" + - "chay-BalkarKareljanKuruxShambalaBafiaKolonjanKumykKutenajLadinoLangi" + - "LahndaLambaLeżgjanLakotaMongoLożiLuri tat-TramuntanaLuba-LuluwaLuise" + - "noLundaLuoMizoLuyiaMaduriżMagahiMaithiliMakasarMandingoMasaiMokshaMa" + - "ndarMendeMeruMorisyenIrlandiż MedjevaliMakhuwa-MeettoMetàMicmacMinan" + - "gkabauManchuManipuriMohawkMossiMundangLingwi DiversiKriekMirandiżMar" + - "wariErzyaMazanderaniNaplitanNamaĠermaniż KomuniNewariNijasNiueanKwas" + - "ioNgiemboonNogaiNors AntikN’KoSoto tat-TramuntanaNuerNewari Klassiku" + - "NjamweżiNyankoleNyoroNzimaOsaġjanTork OttomanPangasinjanPahlaviPampa" + - "ngaPapiamentoPalawjanPidgin NiġerjanPersjan AntikFeniċjuPonpejanPrus" + - "suProvenzal AntikK’iche’RaġastaniRapanwiRarotonganiRomboRomaneskArom" + - "anjanRwaSandaweSakhaSamaritan AramajkSamburuSasakSantaliNgambaySangu" + - "SqalliSkoċċiżSenaSelkupKoyraboro SenniIrlandiż AntikTachelhitShanSid" + - "amoSami tan-NofsinharLule SamiInari SamiSkolt SamiSoninkeSogdienSran" + - "an TongoSererSahoSukumaSusuSumerjanKomorjanSirjanTimneTesoTerenoTetu" + - "mTigreTivTokelauKlingonTlingitTamashekNyasa TongaTok PisinTarokoTsim" + - "shianTumbukaTuvaluTasawaqTuvinjanTamazight tal-Atlas ĊentraliUdmurtU" + - "garitikuUmbunduLingwa Mhix MagħrufaVaiVotikVunjoWalserWalamoWarayWas" + - "hoKalmykSogaYaoYapeseYangbenYembaKantoniżZapotecZenagaTamazight Stan" + - "dard tal-MarokkZuniBla kontenut lingwistikuZazaGħarbi Standard Moder" + - "nĠermaniż AwstrijakĠermaniż ŻvizzeruIngliż AwstraljanIngliż KanadiżI" + - "ngliż BrittanikuIngliż AmerikanSpanjol Latin AmerikanSpanjol Ewropew" + - "Spanjol tal-MessikuFranċiż KanadiżFranċiż ŻvizzeruSassonu KomuniFjam" + - "mingPortugiż tal-BrażilPortugiż EwropewMoldovanSerbo-KroatSwahili ta" + - "r-Repubblika Demokratika tal-KongoĊiniż SimplifikatĊiniż Tradizzjona" + - "li", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0014, 0x001c, 0x0020, 0x0028, 0x0031, - 0x0038, 0x0040, 0x0046, 0x004c, 0x0059, 0x0060, 0x0069, 0x0070, - 0x0077, 0x007e, 0x0085, 0x008d, 0x0093, 0x009d, 0x00a4, 0x00ab, - 0x00b3, 0x00ba, 0x00be, 0x00c2, 0x00d4, 0x00db, 0x00e0, 0x00e6, - 0x00f0, 0x00f6, 0x00fe, 0x0101, 0x0106, 0x010d, 0x0116, 0x011d, - 0x0125, 0x0129, 0x0130, 0x0135, 0x013f, 0x0146, 0x014d, 0x0156, - 0x0168, 0x0171, 0x0183, 0x018c, 0x0193, 0x019b, 0x019f, 0x01a4, - 0x01aa, 0x01af, 0x01b8, 0x01bd, 0x01cf, 0x01d7, 0x01dc, 0x01e2, - // Entry 40 - 7F - 0x01ed, 0x01f8, 0x0203, 0x0207, 0x0211, 0x0218, 0x021b, 0x0225, - 0x022b, 0x0234, 0x023e, 0x0247, 0x0250, 0x0255, 0x025b, 0x0263, - 0x0269, 0x0273, 0x0278, 0x027f, 0x0285, 0x028b, 0x0293, 0x0297, - 0x029b, 0x02a2, 0x02a9, 0x02ae, 0x02bb, 0x02c0, 0x02ca, 0x02d3, - 0x02da, 0x02e0, 0x02ec, 0x02f3, 0x02fb, 0x0309, 0x030e, 0x0319, - 0x0322, 0x032b, 0x0332, 0x0337, 0x033c, 0x0343, 0x034b, 0x0361, - 0x0369, 0x036f, 0x0377, 0x0389, 0x039a, 0x03af, 0x03b5, 0x03bb, - 0x03c4, 0x03cb, 0x03d0, 0x03d4, 0x03dd, 0x03e4, 0x03e8, 0x03ef, - // Entry 80 - BF - 0x03f5, 0x03fe, 0x0405, 0x040b, 0x0410, 0x0415, 0x041a, 0x0425, - 0x042d, 0x0436, 0x043c, 0x044f, 0x0454, 0x045b, 0x0462, 0x0468, - 0x046e, 0x0473, 0x0479, 0x0481, 0x0485, 0x048a, 0x049c, 0x04a5, - 0x04ad, 0x04b4, 0x04b9, 0x04bf, 0x04c4, 0x04ce, 0x04d6, 0x04de, - 0x04e4, 0x04ea, 0x04ee, 0x04f4, 0x04f9, 0x0502, 0x0508, 0x050d, - 0x0511, 0x0516, 0x051b, 0x0525, 0x052c, 0x0533, 0x0538, 0x053d, - 0x0544, 0x054a, 0x0550, 0x0557, 0x055b, 0x0563, 0x0568, 0x056f, - 0x0575, 0x0575, 0x057e, 0x0583, 0x0587, 0x058f, 0x058f, 0x0594, - // Entry C0 - FF - 0x0594, 0x05a7, 0x05b4, 0x05ba, 0x05c1, 0x05c8, 0x05c8, 0x05cf, - 0x05cf, 0x05cf, 0x05d5, 0x05d5, 0x05d5, 0x05d8, 0x05d8, 0x05e0, - 0x05e0, 0x05e6, 0x05ed, 0x05f5, 0x05f5, 0x05f9, 0x05f9, 0x05f9, - 0x05f9, 0x05fd, 0x0602, 0x0602, 0x0606, 0x0606, 0x0606, 0x0606, - 0x060e, 0x0613, 0x0617, 0x0617, 0x0617, 0x061e, 0x061e, 0x061e, - 0x0622, 0x0622, 0x0626, 0x0626, 0x062c, 0x0634, 0x0634, 0x0638, - 0x0638, 0x063d, 0x0642, 0x0642, 0x0647, 0x0647, 0x064e, 0x0653, - 0x065a, 0x0662, 0x0669, 0x066d, 0x067b, 0x0682, 0x068b, 0x0693, - // Entry 100 - 13F - 0x069b, 0x06a9, 0x06b0, 0x06b0, 0x06bf, 0x06db, 0x06e4, 0x06ea, - 0x06f0, 0x06f5, 0x06ff, 0x0703, 0x0709, 0x070e, 0x0713, 0x0718, - 0x0726, 0x0726, 0x072b, 0x073d, 0x0747, 0x074c, 0x0752, 0x0756, - 0x075a, 0x075a, 0x076b, 0x0771, 0x0777, 0x0788, 0x0788, 0x078e, - 0x078e, 0x0792, 0x079a, 0x079a, 0x079d, 0x079d, 0x07b0, 0x07bf, - 0x07bf, 0x07bf, 0x07bf, 0x07c8, 0x07ca, 0x07ca, 0x07ca, 0x07ce, - 0x07d3, 0x07d3, 0x07d7, 0x07e1, 0x07e1, 0x07fb, 0x0812, 0x0812, - 0x0817, 0x0820, 0x0826, 0x082b, 0x0837, 0x0850, 0x0850, 0x0850, - // Entry 140 - 17F - 0x0855, 0x085c, 0x0861, 0x0861, 0x086a, 0x086a, 0x0874, 0x087b, - 0x0880, 0x0891, 0x0891, 0x0895, 0x0899, 0x089f, 0x08a4, 0x08aa, - 0x08aa, 0x08aa, 0x08b0, 0x08b6, 0x08bd, 0x08ca, 0x08d7, 0x08d7, - 0x08e2, 0x08ea, 0x08f0, 0x08f3, 0x08f8, 0x08fc, 0x0905, 0x0905, - 0x0909, 0x0910, 0x091c, 0x091c, 0x0920, 0x0920, 0x0925, 0x092d, - 0x0939, 0x0939, 0x0939, 0x093d, 0x0945, 0x094d, 0x094d, 0x0954, - 0x095c, 0x0962, 0x0971, 0x0971, 0x0971, 0x0979, 0x097e, 0x0986, - 0x098b, 0x0993, 0x0998, 0x099f, 0x09a5, 0x09aa, 0x09b0, 0x09b5, - // Entry 180 - 1BF - 0x09bd, 0x09bd, 0x09bd, 0x09bd, 0x09c3, 0x09c3, 0x09c8, 0x09c8, - 0x09cd, 0x09e0, 0x09e0, 0x09eb, 0x09f2, 0x09f7, 0x09fa, 0x09fe, - 0x0a03, 0x0a03, 0x0a03, 0x0a0b, 0x0a0b, 0x0a11, 0x0a19, 0x0a20, - 0x0a28, 0x0a2d, 0x0a2d, 0x0a33, 0x0a39, 0x0a3e, 0x0a42, 0x0a4a, - 0x0a5d, 0x0a6b, 0x0a70, 0x0a76, 0x0a81, 0x0a87, 0x0a8f, 0x0a95, - 0x0a9a, 0x0a9a, 0x0aa1, 0x0aaf, 0x0ab4, 0x0abd, 0x0ac4, 0x0ac4, - 0x0ac4, 0x0ac9, 0x0ad4, 0x0ad4, 0x0adc, 0x0ae0, 0x0af1, 0x0af7, - 0x0afc, 0x0b02, 0x0b02, 0x0b08, 0x0b11, 0x0b16, 0x0b20, 0x0b20, - // Entry 1C0 - 1FF - 0x0b26, 0x0b39, 0x0b3d, 0x0b4c, 0x0b55, 0x0b5d, 0x0b62, 0x0b67, - 0x0b6f, 0x0b7b, 0x0b86, 0x0b8d, 0x0b95, 0x0b9f, 0x0ba7, 0x0ba7, - 0x0bb7, 0x0bb7, 0x0bb7, 0x0bc4, 0x0bc4, 0x0bcc, 0x0bcc, 0x0bcc, - 0x0bd4, 0x0bda, 0x0be9, 0x0bf4, 0x0bf4, 0x0bfe, 0x0c05, 0x0c10, - 0x0c10, 0x0c10, 0x0c15, 0x0c1d, 0x0c1d, 0x0c1d, 0x0c1d, 0x0c26, - 0x0c29, 0x0c30, 0x0c35, 0x0c46, 0x0c4d, 0x0c52, 0x0c59, 0x0c59, - 0x0c60, 0x0c65, 0x0c6b, 0x0c75, 0x0c75, 0x0c75, 0x0c75, 0x0c79, - 0x0c79, 0x0c7f, 0x0c8e, 0x0c9d, 0x0c9d, 0x0ca6, 0x0caa, 0x0caa, - // Entry 200 - 23F - 0x0cb0, 0x0cb0, 0x0cb0, 0x0cc2, 0x0ccb, 0x0cd5, 0x0cdf, 0x0ce6, - 0x0ced, 0x0cf9, 0x0cfe, 0x0d02, 0x0d02, 0x0d08, 0x0d0c, 0x0d14, - 0x0d1c, 0x0d1c, 0x0d22, 0x0d22, 0x0d22, 0x0d27, 0x0d2b, 0x0d31, - 0x0d36, 0x0d3b, 0x0d3e, 0x0d45, 0x0d45, 0x0d4c, 0x0d53, 0x0d53, - 0x0d5b, 0x0d66, 0x0d6f, 0x0d6f, 0x0d75, 0x0d75, 0x0d7e, 0x0d7e, - 0x0d85, 0x0d8b, 0x0d92, 0x0d9a, 0x0db7, 0x0dbd, 0x0dc6, 0x0dcd, - 0x0de2, 0x0de5, 0x0de5, 0x0de5, 0x0de5, 0x0de5, 0x0dea, 0x0dea, - 0x0def, 0x0df5, 0x0dfb, 0x0e00, 0x0e05, 0x0e05, 0x0e05, 0x0e0b, - // Entry 240 - 27F - 0x0e0b, 0x0e0f, 0x0e12, 0x0e18, 0x0e1f, 0x0e24, 0x0e24, 0x0e2d, - 0x0e34, 0x0e34, 0x0e34, 0x0e3a, 0x0e57, 0x0e5b, 0x0e73, 0x0e77, - 0x0e8e, 0x0e8e, 0x0ea2, 0x0eb6, 0x0ec8, 0x0ed8, 0x0eea, 0x0efa, - 0x0f10, 0x0f1f, 0x0f32, 0x0f32, 0x0f44, 0x0f57, 0x0f65, 0x0f6d, - 0x0f82, 0x0f93, 0x0f9b, 0x0fa6, 0x0fd2, 0x0fe5, 0x0ffa, - }, - }, - { // mua - "akaŋamharikarabiyabelarussiyabulgariabengaliasyekyagermaŋgrekzah Anglofo" + - "ŋEspaniyaPersiazah sǝr Franssǝhaussahindihungariyaindonesiyaigboita" + - "liyazah sǝr JapoŋjavaniyakmerkoreamalasiyabirmaniaNepaliyazah sǝr ma" + - " kasǝŋPǝnjabiPoloniyaZah sǝr PortugalRomaniyaRussiyaZah sǝr RwandaSo" + - "maliyaSwediaTamulthTurkUkrainiaUrduVietnamiyaYorubazah SyiŋZuluMUNDA" + - "Ŋ", - []uint16{ // 427 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000c, 0x000c, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0026, - 0x0026, 0x0026, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003f, 0x004c, 0x004c, 0x0054, - 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0071, - 0x0071, 0x0076, 0x0076, 0x0076, 0x0076, 0x007f, 0x007f, 0x007f, - // Entry 40 - 7F - 0x007f, 0x0089, 0x0089, 0x008d, 0x008d, 0x008d, 0x008d, 0x008d, - 0x0094, 0x0094, 0x00a3, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00ab, 0x00ab, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00bc, 0x00bc, 0x00c4, 0x00c4, 0x00c4, - 0x00cc, 0x00cc, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, - 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00ef, - // Entry 80 - BF - 0x00ef, 0x0100, 0x0100, 0x0100, 0x0100, 0x0108, 0x010f, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, - 0x012c, 0x012c, 0x0131, 0x0131, 0x0131, 0x0133, 0x0133, 0x0133, - 0x0133, 0x0133, 0x0137, 0x0137, 0x0137, 0x0137, 0x0137, 0x013f, - 0x0143, 0x0143, 0x0143, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x0153, 0x0153, 0x015c, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - // Entry C0 - FF - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - // Entry 100 - 13F - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - // Entry 140 - 17F - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - // Entry 180 - 1BF - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0167, - }, - }, - { // my - myLangStr, - myLangIdx, - }, - { // mzn - "آبخازیآفریکانسآکانامهریعربیآسامیآذری ِترکیباشقیریبلاروسیبلغاریبامباراییب" + - "نگالیتبتیبرِتونیبوسنیاییکاتالونیچچنیکورسیکانچکیچوواشیولزیدانمارکیآل" + - "مانیدزونگخااوه\u200cیییونانیانگلیسیاسپرانتوایسپانیولیاستونیاییباسکی" + - "فارسیفینیشفیجیاییفاروییفرانسویغربی فیریزیایریشگالیکگورانیگجراتیمانک" + - "سهوساعبریهندیکرواتیهائتیاییمجاریارمنیاندونزیاییایگبوسیچوئان ییایسلن" + - "دیایتالیاییانوکتیتوتجاپونیجاواییگرجیکیکویوقزاقیکالائلیسوتخمریکانّاد" + - "اکُره\u200cییکشمیریکوردیکورنیشقرقیزیلاتینلوکزامبورگیگاندالینگالالائ" + - "وییلتونیاییلوبا-کاتانگالاتویاییمالاگاسیمائوریمقدونیمالایالاممغولیما" + - "راتیمالاییمالتیبرمه\u200cییشمالی ندبلهنپالیهلندینروژی نینورسکنروژی " + - "بوکمالاورومواوریاپنجابیلهستونیپشتوپرتغالیقوئچوئارومانشروندیرومانیای" + - "یروسیکنیاروآنداییسانسکریتسندیشمالی سامیسانگوسینهالااسلواکیاسلوونیای" + - "یشوناسومالیاییآلبانیاییصربیسوندانسیسوئدیسواحیلیتامیلیتلوگوییتاجیکیت" + - "اییتیگرینیاییترکمونیتونگانیترکیتاتاریئوغوریاوکراینیاردوازبکیویتنامی" + - "وولفیخوسایوروباچینیزولوآقمماپوچهآسوبمباییبناییغربی بلوچیبدوییچیگاچر" + - "وکیاییمیونی کوردیتایتازارماییپایین صربیدوئالاییجولا-فونیامبوفیلیپین" + - "وگاگائوزیسوییس آلمانیگوسیهاواییاییبالایی صربینگومباماچامهقبایلیکامب" + - "اییماکوندهکیپ وُردیکویرا چیینیکالنجینکومی-پرمیاککونکانیشامبالابافیا" + - "ییلانگیلاکوتاشمالی لُریلوئولوییاماساییمِروییموریسینماخوئا-میتومِتاء" + - "موهاکموندانگمازرونیناماپایین آلمانیکوئاسیونئکونوئرنیانکولهکئیچه" + - "\u200cئیرومبوروآییسامبوروسانگووجنوبی کردیسِناییکویرابورا سنیتاچلهیتج" + - "نوبی سامیلوله سامیایناری سامیسکولت سامیتسوییتاساواقیمیونی اطلس تامز" + - "یقینشناسی\u200cیه زوونواییوونجوییوالرپیریسوگامراکش ِاستاندارد ِتاما" + - "زیقتیاین زوون بشناسی\u200cیه نیّهمدرن استاندارد عربیجنوبی آذری ترکی" + - "اتریش ِآلمانیسوییس ِآلمانیاسترالیای ِانگلیسیکانادای ِانگلیسیبریتیش " + - "انگلیسیامریکن انگلیسیجنوبی آمریکای ِایسپانیولیاروپای ِایسپانیولیمکز" + - "یک ِایسپانیولیکانادای ِفرانسویسوییس ِفرانسویپایین ساکسونیفلمیشبرزیل" + - " ِپرتغالیاروپای ِپرتغالیمولداویکنگو سواحیلیساده چینیسنتی چینی", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000c, 0x000c, 0x001c, 0x0024, 0x002e, 0x002e, - 0x0036, 0x0040, 0x0040, 0x0040, 0x0053, 0x0061, 0x006f, 0x007b, - 0x007b, 0x008d, 0x0099, 0x00a1, 0x00af, 0x00bf, 0x00cf, 0x00d7, - 0x00d7, 0x00e7, 0x00e7, 0x00ed, 0x00ed, 0x00f9, 0x0101, 0x0111, - 0x011d, 0x011d, 0x012b, 0x0138, 0x0144, 0x0152, 0x0162, 0x0176, - 0x0188, 0x0192, 0x019c, 0x019c, 0x01a6, 0x01b4, 0x01c0, 0x01ce, - 0x01e3, 0x01ed, 0x01ed, 0x01f7, 0x0203, 0x020f, 0x0219, 0x0221, - 0x0229, 0x0231, 0x0231, 0x023d, 0x024d, 0x0257, 0x0261, 0x0261, - // Entry 40 - 7F - 0x0261, 0x0275, 0x0275, 0x027f, 0x0292, 0x0292, 0x0292, 0x02a0, - 0x02b2, 0x02c4, 0x02d0, 0x02dc, 0x02e4, 0x02e4, 0x02f0, 0x02f0, - 0x02fa, 0x030e, 0x0316, 0x0324, 0x0333, 0x0333, 0x033f, 0x0349, - 0x0349, 0x0355, 0x0361, 0x036b, 0x0381, 0x038b, 0x038b, 0x0399, - 0x03a5, 0x03b5, 0x03cc, 0x03dc, 0x03ec, 0x03ec, 0x03f8, 0x0404, - 0x0416, 0x0420, 0x042c, 0x0438, 0x0442, 0x0451, 0x0451, 0x0466, - 0x0470, 0x0470, 0x047a, 0x0493, 0x04aa, 0x04aa, 0x04aa, 0x04aa, - 0x04aa, 0x04aa, 0x04b6, 0x04c0, 0x04c0, 0x04cc, 0x04cc, 0x04da, - // Entry 80 - BF - 0x04e2, 0x04f0, 0x04fe, 0x050a, 0x0514, 0x0526, 0x052e, 0x0546, - 0x0556, 0x0556, 0x055e, 0x0571, 0x057b, 0x0589, 0x0597, 0x05ab, - 0x05ab, 0x05b3, 0x05c5, 0x05d7, 0x05df, 0x05df, 0x05df, 0x05ef, - 0x05f9, 0x0607, 0x0613, 0x0621, 0x062d, 0x0635, 0x0649, 0x0657, - 0x0657, 0x0665, 0x066d, 0x066d, 0x0679, 0x0679, 0x0685, 0x0695, - 0x069d, 0x06a7, 0x06a7, 0x06b5, 0x06b5, 0x06b5, 0x06bf, 0x06c7, - 0x06c7, 0x06d3, 0x06d3, 0x06db, 0x06e3, 0x06e3, 0x06e3, 0x06e3, - 0x06e3, 0x06e3, 0x06e3, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9, - // Entry C0 - FF - 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0x06f5, 0x06f5, 0x06f5, - 0x06f5, 0x06f5, 0x06f5, 0x06f5, 0x06f5, 0x06fb, 0x06fb, 0x06fb, - 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, 0x06fb, - 0x06fb, 0x06fb, 0x0707, 0x0707, 0x0711, 0x0711, 0x0711, 0x0724, - 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, 0x0724, - 0x0724, 0x0724, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, - 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x072e, 0x0736, - 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0736, 0x0746, - // Entry 100 - 13F - 0x0746, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, 0x075b, - 0x075b, 0x0765, 0x0765, 0x0765, 0x0765, 0x0765, 0x0773, 0x0773, - 0x0786, 0x0786, 0x0796, 0x0796, 0x07a7, 0x07a7, 0x07a7, 0x07af, - 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, 0x07af, - 0x07af, 0x07af, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, - 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07bf, 0x07cf, 0x07cf, 0x07cf, - 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, - 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07cf, 0x07e6, 0x07e6, 0x07e6, - // Entry 140 - 17F - 0x07ee, 0x07ee, 0x07ee, 0x07ee, 0x0800, 0x0800, 0x0800, 0x0800, - 0x0800, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, 0x0815, - 0x0815, 0x0815, 0x0815, 0x0821, 0x082d, 0x082d, 0x082d, 0x082d, - 0x082d, 0x0839, 0x0839, 0x0839, 0x0847, 0x0847, 0x0847, 0x0847, - 0x0847, 0x0855, 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, 0x0866, - 0x087b, 0x087b, 0x087b, 0x087b, 0x0889, 0x0889, 0x089e, 0x08ac, - 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ac, 0x08ba, - 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d2, 0x08d2, 0x08d2, - // Entry 180 - 1BF - 0x08d2, 0x08d2, 0x08d2, 0x08d2, 0x08de, 0x08de, 0x08de, 0x08de, - 0x08de, 0x08f1, 0x08f1, 0x08f1, 0x08f1, 0x08f1, 0x08f9, 0x08f9, - 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, 0x0903, - 0x0903, 0x090f, 0x090f, 0x090f, 0x090f, 0x090f, 0x091b, 0x0929, - 0x0929, 0x093e, 0x0948, 0x0948, 0x0948, 0x0948, 0x0948, 0x0952, - 0x0952, 0x0952, 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, 0x0960, - 0x0960, 0x0960, 0x096e, 0x096e, 0x096e, 0x0976, 0x098d, 0x098d, - 0x098d, 0x098d, 0x098d, 0x099b, 0x099b, 0x099b, 0x099b, 0x099b, - // Entry 1C0 - 1FF - 0x09a3, 0x09a3, 0x09ab, 0x09ab, 0x09ab, 0x09bb, 0x09bb, 0x09bb, - 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, - 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, 0x09bb, - 0x09bb, 0x09bb, 0x09bb, 0x09cc, 0x09cc, 0x09cc, 0x09cc, 0x09cc, - 0x09cc, 0x09cc, 0x09d6, 0x09d6, 0x09d6, 0x09d6, 0x09d6, 0x09d6, - 0x09e0, 0x09e0, 0x09e0, 0x09e0, 0x09ee, 0x09ee, 0x09ee, 0x09ee, - 0x09ee, 0x09fa, 0x09fa, 0x09fa, 0x09fa, 0x0a0d, 0x0a0d, 0x0a19, - 0x0a19, 0x0a19, 0x0a32, 0x0a32, 0x0a32, 0x0a40, 0x0a40, 0x0a40, - // Entry 200 - 23F - 0x0a40, 0x0a40, 0x0a40, 0x0a53, 0x0a64, 0x0a79, 0x0a8c, 0x0a8c, - 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, - 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a8c, 0x0a96, 0x0a96, - 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, - 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, 0x0a96, - 0x0a96, 0x0a96, 0x0aa6, 0x0aa6, 0x0ac8, 0x0ac8, 0x0ac8, 0x0ac8, - 0x0ae4, 0x0aec, 0x0aec, 0x0aec, 0x0aec, 0x0aec, 0x0aec, 0x0aec, - 0x0afa, 0x0afa, 0x0afa, 0x0afa, 0x0afa, 0x0b0a, 0x0b0a, 0x0b0a, - // Entry 240 - 27F - 0x0b0a, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b12, - 0x0b12, 0x0b12, 0x0b12, 0x0b12, 0x0b46, 0x0b46, 0x0b72, 0x0b72, - 0x0b96, 0x0bb2, 0x0bcb, 0x0be4, 0x0c07, 0x0c26, 0x0c41, 0x0c5c, - 0x0c8c, 0x0caf, 0x0cd0, 0x0cd0, 0x0cef, 0x0d0a, 0x0d23, 0x0d2d, - 0x0d48, 0x0d65, 0x0d73, 0x0d73, 0x0d8a, 0x0d9b, 0x0dac, - }, - }, - { // naq - "AkangowabAmharicgowabArabiǁî gowabBelarusanǁî gowabBulgariaǁî gowabBenga" + - "liǁî gowabCzechǁî gowabDuitsXriksEngelsSpaansPersiaǁî gowabFransHaus" + - "agowabHindigowabHungariaǁî gowabIndonesiaǁî gowabIgbogowabItaliansJa" + - "paneesJavaneseKhmerǁî gowab, CentralKoreaǁî gowabMalayǁî gowabBurmes" + - "ǁî gowabNepalǁî gowabHollandsPunjabigowabPoleǁî gowabPortugeesRoman" + - "iaǁî gowabRussiaǁî gowabRwandaǁî gowabSomaliǁî gowabSwedeǁî gowabTam" + - "ilǁî gowabThaiǁî gowabTurkeǁî gowabUkrainiaǁî gowabUrduǁî gowabVietn" + - "amǁî gowabYorubabChineesǁî gowab, MandarinniZulubKhoekhoegowab", - []uint16{ // 438 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0037, 0x0049, - 0x0049, 0x0049, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x006e, 0x006e, 0x006e, 0x006e, 0x0073, 0x0079, 0x0079, 0x007f, - 0x007f, 0x007f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x009e, - 0x009e, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00ba, 0x00ba, 0x00ba, - // Entry 40 - 7F - 0x00ba, 0x00cd, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d6, - 0x00de, 0x00de, 0x00e6, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - 0x00ee, 0x00ee, 0x0106, 0x0106, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0124, 0x0124, 0x0134, 0x0134, 0x0134, - 0x0143, 0x0143, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, - 0x014b, 0x014b, 0x014b, 0x014b, 0x014b, 0x0157, 0x0157, 0x0165, - // Entry 80 - BF - 0x0165, 0x016e, 0x016e, 0x016e, 0x016e, 0x017f, 0x018f, 0x019f, - 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, 0x019f, - 0x019f, 0x019f, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, 0x01af, - 0x01be, 0x01be, 0x01cd, 0x01cd, 0x01cd, 0x01db, 0x01db, 0x01db, - 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01fc, - 0x020a, 0x020a, 0x020a, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x0222, 0x0222, 0x023f, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - // Entry C0 - FF - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - // Entry 100 - 13F - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - // Entry 140 - 17F - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - // Entry 180 - 1BF - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, - 0x0244, 0x0244, 0x0244, 0x0244, 0x0244, 0x0251, - }, - }, - { // nd - "isi-Akhaniisi-Amaharikhiisi-Alabhuisi-Bhelarashiyaniisi-Bulgariaisi-Bhen" + - "galiisi-Czechisi-Jalimaniisi-Gilikiisi-Ngisiisi-Sipeyiniisi-Pheshiya" + - "niisi-Fulentshiisi-Hausaisi-Hindiisi-Hangariisi-Indonesiaisi-Igboisi" + - "-Italianoisi-Japhaniisi-Javaisi-Khambodiyaisi-Koriyaisi-Malayiisi-Bu" + - "rmaisiNdebeleisi-Nepaliisi-Dutchisi-Phunjabiisi-Pholoshiisi-Potukezi" + - "isi-Romaniisi-Rashiyaisi-Ruwandaisi-Somaliisi-Swidishiisi-Thamilisi-" + - "Thayiisi-Thekishiisi-Ukrainisi-Uduisi-Vietnameseisi-Yorubhaisi-China" + - "isi-Zulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0034, 0x0040, - 0x0040, 0x0040, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0061, 0x0061, 0x0061, 0x0061, 0x006b, 0x0074, 0x0074, 0x0080, - 0x0080, 0x0080, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x009b, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x00a4, - 0x00a4, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b8, 0x00b8, 0x00b8, - // Entry 40 - 7F - 0x00b8, 0x00c5, 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00d9, 0x00d9, 0x00e4, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, - 0x00ec, 0x00ec, 0x00fa, 0x00fa, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x010e, 0x010e, 0x0117, 0x0117, 0x0121, - 0x012b, 0x012b, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0140, 0x0140, 0x014c, - // Entry 80 - BF - 0x014c, 0x0158, 0x0158, 0x0158, 0x0158, 0x0162, 0x016d, 0x0178, - 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0178, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, 0x0182, - 0x018e, 0x018e, 0x0198, 0x0198, 0x0198, 0x01a1, 0x01a1, 0x01a1, - 0x01a1, 0x01a1, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01b7, - 0x01be, 0x01be, 0x01be, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01d7, 0x01d7, 0x01e0, 0x01e8, - }, - }, - { // ne - neLangStr, - neLangIdx, - }, - { // nl - nlLangStr, - nlLangIdx, - }, - { // nmg - "Kiɛl akanKiɛl amariaKiɛl b’árabeKiɛl belarussieKiɛl bulgariaKiɛl bengali" + - "aKiɛl bó tchɛkJámanKiɛl bó grɛkNgɛ̄lɛ̄nPaŋáKiɛl pɛrsiaFalaKiɛl máwús" + - "áKiɛl b’indienKiɛl b’ɔ́ngroisKiɛl indonesieKiɛl ikboKiɛl italiaKiɛl" + - " bó japonɛ̌Kiɛl bó javanɛ̌Kiɛl bó mɛrKiɛl koréKiɛl Malɛ̌siāKiɛl birm" + - "aniaKiɛl nepalKiɛl bóllandaisKiɛl pɛndjabiKiɛl pɔlɔŋeKiɛl bó pɔ̄rtug" + - "ɛ̂Kiɛl bó rumɛ̂nKiɛl russiaKiɛl rwandāKiɛl somaliāKiɛl bó suedoisKi" + - "ɛl tamulKiɛl thaïKiɛl bó turkKiɛl b’ukrɛ̄nienKiɛl úrduKiɛl viɛtnamY" + - "orúbâKiɛl bó chinoisZulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0036, 0x0044, - 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0068, 0x0068, 0x0068, 0x0068, 0x0077, 0x0083, 0x0083, 0x0089, - 0x0089, 0x0089, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x00a9, - 0x00a9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00cd, 0x00cd, 0x00cd, - // Entry 40 - 7F - 0x00cd, 0x00dc, 0x00dc, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00f2, 0x00f2, 0x0105, 0x0118, 0x0118, 0x0118, 0x0118, 0x0118, - 0x0118, 0x0118, 0x0126, 0x0126, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0131, 0x0142, 0x0142, 0x0150, 0x0150, 0x0150, - 0x015b, 0x015b, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x017b, 0x017b, 0x018a, - // Entry 80 - BF - 0x018a, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01b3, 0x01bf, 0x01cc, - 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01cc, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01eb, 0x01eb, 0x01f6, 0x01f6, 0x01f6, 0x0201, 0x0201, 0x0201, - 0x0201, 0x0201, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0224, - 0x022f, 0x022f, 0x022f, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, - 0x023d, 0x0245, 0x0245, 0x0256, 0x025a, - }, - }, - { // nn - "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamesiskavari" + - "skaymaraaserbajdsjanskbasjkirskkviterussiskbulgarskbislamabambaraben" + - "galitibetanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcr" + - "eetsjekkiskkyrkjeslavisktsjuvanskwalisiskdansktyskdivehidzongkhaeweg" + - "reskengelskesperantospanskestiskbaskiskpersiskfulfuldefinskfijianskf" + - "ærøyskfranskvestfrisiskirskskotsk-gæliskgaliciskguaranigujaratimanx" + - "hausahebraiskhindihiri motukroatiskhaitiskungarskarmenskhererointerl" + - "inguaindonesiskinterlingueibosichuan-yiinupiakidoislandskitalienskin" + - "uktitutjapanskjavanesiskgeorgiskkikongokikuyukuanyamakasakhiskgrønla" + - "ndsk (kalaallisut)khmerkannadakoreanskkanurikasjmirikurdiskkomikorni" + - "skkirgisisklatinluxemburgskgandalimburgisklingalalaotisklitauiskluba" + - "-katangalatviskmadagassiskmarshallesiskmaorimakedonskmalayalammongol" + - "skmarathimalayiskmaltesiskburmesisknaurunord-ndebelenepalskndonganed" + - "erlandsknynorskbokmålsør-ndebelenavajonyanjaoksitanskojibwaoromoodia" + - "ossetiskpanjabipalipolskpashtoportugisiskquechuaretoromanskrundirume" + - "nskrussiskkinjarwandasanskritsardinsksindhinordsamisksangosingalesis" + - "kslovakiskslovensksamoanskshonasomalialbanskserbiskswatisørsothosund" + - "anesisksvenskswahilitamiltelugutadsjikiskthaitigrinjaturkmensktswana" + - "tongansktyrkisktsongatatarisktahitiskuiguriskukrainskurduusbekiskven" + - "davietnamesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkinesiskzu" + - "luachinesiskacoliadangmeadygeiskafrihiliaghemainuakkadiskaleutisksør" + - "-altajgammalengelskangikaarameiskmapudungunarapahoarawakasu (Tanzani" + - "a)asturiskavadhibaluchibalinesiskbasabamunbejabembabena (Tanzania)bh" + - "ojpuribikolbinisiksikabrajbodobakossiburjatiskbuginesiskblincaddocar" + - "ibatsamcebuanokigachibchatsjagataiskchuukesiskmarichinookchoctawchip" + - "ewianskcherokeecheyennesoranikoptiskkrimtatariskseselwa (fransk-kreo" + - "lsk)kasjubiskdakotadargwataitadelawareslavejdogribdinkazarmadogrilåg" + - "sorbiskdualamellomnederlandskjola-fonyidyuladazagaembuefikgammalegyp" + - "tiskekajukelamitemellomengelskewondofangfilippinskfonmellomfranskgam" + - "malfransknordfrisiskaustfrisiskfriuliskgagayogbayageezgilbertesemell" + - "omhøgtyskgammalhøgtyskgondigorontalogotiskgrebogammalgresksveitserty" + - "skgusiigwichinhaidahawaiiskhiligaynonhettittiskhmonghøgsorbiskhupaib" + - "anibibioilokoingusjisklojbanngombamachamejødepersiskjødearabiskkarak" + - "alpakiskkabylekachinjjukambakawikabardisktyapmakondekabuverdianukoro" + - "khasikhotanesiskkoyra chiinikakokalenjinkimbundukonkanikosraeanskkpe" + - "llekarachay-balkarkarelskkurukhshambalabafiakølnskkumykkutenailadino" + - "langilahndalambalezghianlakotamongolozinord-luriskluba-lulualuisenol" + - "undaluolushaiolulujiamaduresiskmagahimaithilimakasarmandingomasaimok" + - "shamandarmendemerumorisyenmellomirskMakhuwa-Meettometa’micmacminangk" + - "abaumandsjumanipurimohawkmossimundangfleire språkcreekmirandesiskmar" + - "warierziamazanderaninapolitansknamalågtysknewariniasniuiskkwasiongie" + - "mboonnogaigammalnorskn’konordsothonuerklassisk newarisknyamwezinyank" + - "olenyoronzimaosageottomansk tyrkiskpangasinanpahlavipampangapapiamen" + - "topalauisknigeriansk pidgingammalpersiskfønikiskponapiskprøyssiskgam" + - "malprovençalskk’icherajasthanirapanuirarotonganskromboromaniarumensk" + - "rwasandawesakhasamaritansk arameisksamburusasaksantalingambaysangusi" + - "cilianskskotsksenaselkupiskKoyraboro Sennigammalirsktachelhitshansid" + - "amosørsamisklulesamiskenaresamiskskoltesamisksoninkesogdisksranan to" + - "ngoserersahosukumasususumeriskshimaoreklassisk syrisksyrisktemneteso" + - "terenotetumtigrétivitokelauklingontlingittamasjektonga (Nyasa)tok pi" + - "sintarokotsimshiantumbukatuvalutasawaqtuvinisksentral-tamazightudmur" + - "tugaritiskumbunduukjent språkvaivotiskvunjowalsertyskwolayttawaraywa" + - "shokalmykisksogayaoyapesiskyangbenyembakantonesiskzapotecblissymbolz" + - "enagastandard marokkansk tamazightzuniutan språkleg innhaldzazamoder" + - "ne standardarabiskbritisk engelsklågsaksiskflamskmoldaviskserbokroat" + - "iskforenkla kinesisktradisjonell kinesisk", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032, - 0x0039, 0x0043, 0x004a, 0x0050, 0x005e, 0x0067, 0x0073, 0x007b, - 0x0082, 0x0089, 0x0090, 0x0099, 0x00a1, 0x00a8, 0x00b1, 0x00bc, - 0x00c4, 0x00ce, 0x00d2, 0x00db, 0x00e8, 0x00f1, 0x00f9, 0x00fe, - 0x0102, 0x0108, 0x0110, 0x0113, 0x0118, 0x011f, 0x0128, 0x012e, - 0x0134, 0x013b, 0x0142, 0x014a, 0x014f, 0x0157, 0x0160, 0x0166, - 0x0171, 0x0175, 0x0183, 0x018b, 0x0192, 0x019a, 0x019e, 0x01a3, - 0x01ab, 0x01b0, 0x01b9, 0x01c1, 0x01c8, 0x01cf, 0x01d6, 0x01dc, - // Entry 40 - 7F - 0x01e7, 0x01f1, 0x01fc, 0x01ff, 0x0209, 0x0210, 0x0213, 0x021b, - 0x0224, 0x022d, 0x0234, 0x023e, 0x0246, 0x024d, 0x0253, 0x025b, - 0x0264, 0x027d, 0x0282, 0x0289, 0x0291, 0x0297, 0x029f, 0x02a6, - 0x02aa, 0x02b1, 0x02ba, 0x02bf, 0x02ca, 0x02cf, 0x02d9, 0x02e0, - 0x02e7, 0x02ef, 0x02fb, 0x0302, 0x030d, 0x031a, 0x031f, 0x0328, - 0x0331, 0x0339, 0x0340, 0x0348, 0x0351, 0x035a, 0x035f, 0x036b, - 0x0372, 0x0378, 0x0383, 0x038a, 0x0391, 0x039d, 0x03a3, 0x03a9, - 0x03b2, 0x03b8, 0x03bd, 0x03c1, 0x03c9, 0x03d0, 0x03d4, 0x03d9, - // Entry 80 - BF - 0x03df, 0x03ea, 0x03f1, 0x03fc, 0x0401, 0x0408, 0x040f, 0x041a, - 0x0422, 0x042a, 0x0430, 0x043a, 0x043f, 0x044a, 0x0453, 0x045b, - 0x0463, 0x0468, 0x046e, 0x0475, 0x047c, 0x0481, 0x048a, 0x0495, - 0x049b, 0x04a2, 0x04a7, 0x04ad, 0x04b7, 0x04bb, 0x04c3, 0x04cc, - 0x04d2, 0x04da, 0x04e1, 0x04e7, 0x04ef, 0x04f7, 0x04ff, 0x0507, - 0x050b, 0x0513, 0x0518, 0x0524, 0x052b, 0x0533, 0x0538, 0x053d, - 0x0544, 0x054a, 0x0550, 0x0558, 0x055c, 0x0566, 0x056b, 0x0572, - 0x057a, 0x057a, 0x0582, 0x0587, 0x058b, 0x0593, 0x0593, 0x059b, - // Entry C0 - FF - 0x059b, 0x05a5, 0x05b2, 0x05b8, 0x05c0, 0x05ca, 0x05ca, 0x05d1, - 0x05d1, 0x05d1, 0x05d7, 0x05d7, 0x05d7, 0x05e5, 0x05e5, 0x05ed, - 0x05ed, 0x05f3, 0x05fa, 0x0604, 0x0604, 0x0608, 0x060d, 0x060d, - 0x060d, 0x0611, 0x0616, 0x0616, 0x0625, 0x0625, 0x0625, 0x0625, - 0x062d, 0x0632, 0x0636, 0x0636, 0x0636, 0x063d, 0x063d, 0x063d, - 0x0641, 0x0641, 0x0645, 0x064c, 0x0655, 0x065f, 0x065f, 0x0663, - 0x0663, 0x0668, 0x066d, 0x066d, 0x0672, 0x0672, 0x0679, 0x067d, - 0x0684, 0x068f, 0x0699, 0x069d, 0x06a4, 0x06ab, 0x06b6, 0x06be, - // Entry 100 - 13F - 0x06c6, 0x06cc, 0x06d3, 0x06d3, 0x06df, 0x06f7, 0x0700, 0x0706, - 0x070c, 0x0711, 0x0719, 0x071f, 0x0725, 0x072a, 0x072f, 0x0734, - 0x073f, 0x073f, 0x0744, 0x0755, 0x075f, 0x0764, 0x076a, 0x076e, - 0x0772, 0x0772, 0x0780, 0x0786, 0x078d, 0x079a, 0x079a, 0x07a0, - 0x07a0, 0x07a4, 0x07ae, 0x07ae, 0x07b1, 0x07b1, 0x07bd, 0x07c9, - 0x07c9, 0x07d4, 0x07df, 0x07e7, 0x07e9, 0x07e9, 0x07e9, 0x07ed, - 0x07f2, 0x07f2, 0x07f6, 0x0800, 0x0800, 0x080e, 0x081c, 0x081c, - 0x0821, 0x082a, 0x0830, 0x0835, 0x0840, 0x084c, 0x084c, 0x084c, - // Entry 140 - 17F - 0x0851, 0x0858, 0x085d, 0x085d, 0x0865, 0x0865, 0x086f, 0x0879, - 0x087e, 0x0889, 0x0889, 0x088d, 0x0891, 0x0897, 0x089c, 0x08a5, - 0x08a5, 0x08a5, 0x08ab, 0x08b1, 0x08b8, 0x08c4, 0x08d0, 0x08d0, - 0x08dd, 0x08e3, 0x08e9, 0x08ec, 0x08f1, 0x08f5, 0x08fe, 0x08fe, - 0x0902, 0x0909, 0x0915, 0x0915, 0x0919, 0x0919, 0x091e, 0x0929, - 0x0935, 0x0935, 0x0935, 0x0939, 0x0941, 0x0949, 0x0949, 0x0950, - 0x095a, 0x0960, 0x096f, 0x096f, 0x096f, 0x0976, 0x097c, 0x0984, - 0x0989, 0x0990, 0x0995, 0x099c, 0x09a2, 0x09a7, 0x09ad, 0x09b2, - // Entry 180 - 1BF - 0x09ba, 0x09ba, 0x09ba, 0x09ba, 0x09c0, 0x09c0, 0x09c5, 0x09c5, - 0x09c9, 0x09d4, 0x09d4, 0x09de, 0x09e5, 0x09ea, 0x09ed, 0x09f3, - 0x09fb, 0x09fb, 0x09fb, 0x0a05, 0x0a05, 0x0a0b, 0x0a13, 0x0a1a, - 0x0a22, 0x0a27, 0x0a27, 0x0a2d, 0x0a33, 0x0a38, 0x0a3c, 0x0a44, - 0x0a4e, 0x0a5c, 0x0a63, 0x0a69, 0x0a74, 0x0a7b, 0x0a83, 0x0a89, - 0x0a8e, 0x0a8e, 0x0a95, 0x0aa2, 0x0aa7, 0x0ab2, 0x0ab9, 0x0ab9, - 0x0ab9, 0x0abe, 0x0ac9, 0x0ac9, 0x0ad4, 0x0ad8, 0x0ae0, 0x0ae6, - 0x0aea, 0x0af0, 0x0af0, 0x0af6, 0x0aff, 0x0b04, 0x0b0f, 0x0b0f, - // Entry 1C0 - 1FF - 0x0b15, 0x0b1e, 0x0b22, 0x0b33, 0x0b3b, 0x0b43, 0x0b48, 0x0b4d, - 0x0b52, 0x0b63, 0x0b6d, 0x0b74, 0x0b7c, 0x0b86, 0x0b8e, 0x0b8e, - 0x0b9f, 0x0b9f, 0x0b9f, 0x0bac, 0x0bac, 0x0bb5, 0x0bb5, 0x0bb5, - 0x0bbd, 0x0bc7, 0x0bd9, 0x0be1, 0x0be1, 0x0beb, 0x0bf2, 0x0bfe, - 0x0bfe, 0x0bfe, 0x0c03, 0x0c09, 0x0c09, 0x0c09, 0x0c09, 0x0c11, - 0x0c14, 0x0c1b, 0x0c20, 0x0c34, 0x0c3b, 0x0c40, 0x0c47, 0x0c47, - 0x0c4e, 0x0c53, 0x0c5d, 0x0c63, 0x0c63, 0x0c63, 0x0c63, 0x0c67, - 0x0c67, 0x0c70, 0x0c7f, 0x0c89, 0x0c89, 0x0c92, 0x0c96, 0x0c96, - // Entry 200 - 23F - 0x0c9c, 0x0c9c, 0x0c9c, 0x0ca6, 0x0cb0, 0x0cbb, 0x0cc7, 0x0cce, - 0x0cd5, 0x0ce1, 0x0ce6, 0x0cea, 0x0cea, 0x0cf0, 0x0cf4, 0x0cfc, - 0x0d04, 0x0d13, 0x0d19, 0x0d19, 0x0d19, 0x0d1e, 0x0d22, 0x0d28, - 0x0d2d, 0x0d33, 0x0d37, 0x0d3e, 0x0d3e, 0x0d45, 0x0d4c, 0x0d4c, - 0x0d54, 0x0d61, 0x0d6a, 0x0d6a, 0x0d70, 0x0d70, 0x0d79, 0x0d79, - 0x0d80, 0x0d86, 0x0d8d, 0x0d95, 0x0da6, 0x0dac, 0x0db5, 0x0dbc, - 0x0dc9, 0x0dcc, 0x0dcc, 0x0dcc, 0x0dcc, 0x0dcc, 0x0dd2, 0x0dd2, - 0x0dd7, 0x0de1, 0x0de9, 0x0dee, 0x0df3, 0x0df3, 0x0df3, 0x0dfc, - // Entry 240 - 27F - 0x0dfc, 0x0e00, 0x0e03, 0x0e0b, 0x0e12, 0x0e17, 0x0e17, 0x0e22, - 0x0e29, 0x0e33, 0x0e33, 0x0e39, 0x0e56, 0x0e5a, 0x0e70, 0x0e74, - 0x0e8b, 0x0e8b, 0x0e8b, 0x0e8b, 0x0e8b, 0x0e8b, 0x0e9a, 0x0e9a, - 0x0e9a, 0x0e9a, 0x0e9a, 0x0e9a, 0x0e9a, 0x0e9a, 0x0ea5, 0x0eab, - 0x0eab, 0x0eab, 0x0eb4, 0x0ec1, 0x0ec1, 0x0ed2, 0x0ee7, - }, - }, - { // nnh - "nzǎmɔ̂ɔnngilísèShwóŋò menkesaŋfelaŋséeShwóŋò pʉa mbasǎShwóŋò pamomShwóŋò" + - " pʉa nzsekàʼaShwóŋò pafudShwóŋò pʉ̀a njinikomShwóŋò pakɔsiShwóŋò mbu" + - "luShwóŋò ngáŋtÿɔʼShwóŋò pʉa YɔɔnmendiShwóŋò pʉa shÿó BɛgtùaShwóŋò ng" + - "iembɔɔnShwóŋò pʉa shÿó MbafìaShwóŋò Tsaŋ", - []uint16{ // 582 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0028, 0x0028, 0x0028, 0x0028, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - // Entry 40 - 7F - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - // Entry 80 - BF - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - // Entry C0 - FF - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0047, 0x0056, 0x0056, - 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x007e, 0x007e, 0x007e, - 0x007e, 0x007e, 0x007e, 0x007e, 0x0097, 0x0097, 0x0097, 0x0097, - 0x0097, 0x0097, 0x0097, 0x00a8, 0x00a8, 0x00a8, 0x00b7, 0x00b7, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - // Entry 100 - 13F - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - // Entry 140 - 17F - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - // Entry 180 - 1BF - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x011b, 0x011b, 0x011b, 0x011b, - // Entry 1C0 - 1FF - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - // Entry 200 - 23F - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - // Entry 240 - 27F - 0x011b, 0x011b, 0x011b, 0x011b, 0x0138, 0x0147, - }, - }, - { // no - noLangStr, - noLangIdx, - }, - { // nus - "Thok aka̱niThok bunyniThok JalabniThok bäläruthaThok bälga̱a̱rianiThok b" + - "ängaliThok cikThok jarmaniThok girikniThok liŋli̱thniThok i̱thpaani" + - "aniThok perthianiThok pɔrɔthaniThok ɣowthaniThok ɣändiniThok ɣänga̱a" + - "̱riɛniThok indunithianiThok i̱gboniThok i̱talianiThok japanniThok j" + - "abanithniThok kameeriThok kurianiThok mayɛyniThok bormi̱thniThok nap" + - "alniThok da̱cThok puɔnjabaniThok pölicniThok puɔtigaliThok ji̱ römTh" + - "ok ra̱ciaaniThok ruaandaniThok thomaalianiThok i̱thwidicniThok tamil" + - "niThok tayniThok turkicniThok ukeraaniniThok udoniThok betnaamniThok" + - " yurubaniThok caynaThok dhuluniThok Nath", - []uint16{ // 451 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0017, 0x0017, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0033, 0x0048, - 0x0048, 0x0048, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0075, 0x0086, 0x0086, 0x0098, - 0x0098, 0x0098, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00a6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c4, - 0x00c4, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00e9, 0x00e9, 0x00e9, - // Entry 40 - 7F - 0x00e9, 0x00fa, 0x00fa, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0116, 0x0116, 0x0122, 0x0131, 0x0131, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x013d, 0x013d, 0x0149, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0149, 0x0156, 0x0156, 0x0166, 0x0166, 0x0166, - 0x0172, 0x0172, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, - 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, 0x018c, 0x018c, 0x0199, - // Entry 80 - BF - 0x0199, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01b6, 0x01c5, 0x01d3, - 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, 0x01d3, - 0x01d3, 0x01d3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, 0x01e3, - 0x01f4, 0x01f4, 0x0200, 0x0200, 0x0200, 0x020a, 0x020a, 0x020a, - 0x020a, 0x020a, 0x0217, 0x0217, 0x0217, 0x0217, 0x0217, 0x0226, - 0x0230, 0x0230, 0x0230, 0x023e, 0x023e, 0x023e, 0x023e, 0x023e, - 0x023e, 0x024b, 0x024b, 0x0255, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - // Entry C0 - FF - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - // Entry 100 - 13F - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - // Entry 140 - 17F - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - // Entry 180 - 1BF - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - // Entry 1C0 - 1FF - 0x0261, 0x0261, 0x026a, - }, - }, - { // nyn - "OrukaniOrumarikiOruharabuOruberarusiOruburugariyaOrubengariOruceekiOrugi" + - "rimaaniOruguriikiOrungyerezaOrusupaaniOrupaasiyaOrufaransaOruhausaOr" + - "uhindiOruhangareOruindoneziaOruiboOruyitareOrujapaaniOrujavaOrukambo" + - "diyaOrukoreyaOrumalesiyaOruburumaOrunepaliOrudaakiOrupungyabiOrupoor" + - "iOrupocugoOruromaniaOrurrashaOrunyarwandaOrusomaariOruswidiOrutamiri" + - "OrutailandiOrukurukiOrukurainiOru-UruduOruviyetinaamuOruyorubaOrucha" + - "inaOruzuruRunyankore", - []uint16{ // 454 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0010, 0x0010, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0031, - 0x0031, 0x0031, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0064, 0x0064, 0x006e, - 0x006e, 0x006e, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x008a, - 0x008a, 0x0092, 0x0092, 0x0092, 0x0092, 0x009c, 0x009c, 0x009c, - // Entry 40 - 7F - 0x009c, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00b7, 0x00b7, 0x00c1, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00d4, 0x00d4, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00e8, 0x00f1, 0x00f1, 0x00f1, - 0x00fa, 0x00fa, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x010d, 0x010d, 0x0115, - // Entry 80 - BF - 0x0115, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, 0x0131, 0x013d, - 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, - 0x013d, 0x013d, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0163, 0x0163, 0x0163, - 0x0163, 0x0163, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x0176, - 0x017f, 0x017f, 0x017f, 0x018d, 0x018d, 0x018d, 0x018d, 0x018d, - 0x018d, 0x0196, 0x0196, 0x019f, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry C0 - FF - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry 100 - 13F - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry 140 - 17F - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry 180 - 1BF - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry 1C0 - 1FF - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01b0, - }, - }, - { // om - "AfrikootaAfaan SidaamaaArabiffaaAfaan AzerbaijaniAfaan BelarusiaAfaan Bu" + - "lgariyaAfaan BaangladeshiAfaan BosniyaaAfaan KatalaaAfaan CzechWelis" + - "hiffaaAfaan DeenmaarkAfaan JarmaniiAfaan GiriikiIngliffaAfaan Espera" + - "ntooAfaan IspeenAfaan IstooniyaAfaan BaskuuAfaan PersiaAfaan Fiilaan" + - "diAfaan FaroeseAfaan FaransaayiiAfaan FirisiyaaniAfaan AyirishiiScot" + - "s GaelicAfaan GalishiiAfaan GuaraniAfaan GujaratiAfaan HebrewAfaan H" + - "indiiAfaan CroatianAfaan HangaariInterlinguaAfaan IndoneziyaAyiislan" + - "diffaaAfaan XaaliyaaniAfaan JapaniiAfaan JavaAfaan GeorgianAfaan Kan" + - "nadaAfaan KoreaAfaan LaatiniAfaan LiituniyaaAfaan LativiyaaAfaan Mac" + - "edooniyaaMalayaalamiffaaAfaan MaratiiMalaayiffaaAfaan MaltesiiAfaan " + - "NepaliiAfaan DachiiAfaan NorwegianAfaan NorweyiiAfaan OccitOromooAfa" + - "an PunjabiiAfaan PolandiiAfaan PorchugaalAfaan RomaniyaaAfaan Rushiy" + - "aaAfaan SinhaleseAfaan SlovakAfaan IslovaniyaaAfaan AlbaniyaaAfaan S" + - "erbiyaAfaan SudaaniiAfaan SuwidiinSuwahiliiAfaan TamiliiAfaan Telugu" + - "Afaan TayiiAfaan TigireeLammii TurkiiAfaan TurkiiAfaan UkreeniiAfaan" + - " UrduAfaan UzbekAfaan VeetinamAfaan XhosaChineseAfaan ZuuluAfaan Fil" + - "ippiniiAfaan KilingonAfaan Portugali (Braazil)Afaan Protuguese", - []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0017, 0x0017, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0031, 0x0031, 0x0040, 0x004f, - 0x004f, 0x004f, 0x0061, 0x0061, 0x0061, 0x006f, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x0087, 0x0087, 0x0087, 0x0092, 0x00a1, - 0x00af, 0x00af, 0x00af, 0x00af, 0x00bc, 0x00c4, 0x00d4, 0x00e0, - 0x00ef, 0x00fb, 0x0107, 0x0107, 0x0116, 0x0116, 0x0123, 0x0134, - 0x0145, 0x0154, 0x0160, 0x016e, 0x017b, 0x0189, 0x0189, 0x0189, - 0x0195, 0x01a1, 0x01a1, 0x01af, 0x01af, 0x01bd, 0x01bd, 0x01bd, - // Entry 40 - 7F - 0x01c8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01e6, - 0x01f6, 0x01f6, 0x0203, 0x020d, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x021b, 0x021b, 0x0228, 0x0233, 0x0233, 0x0233, 0x0233, - 0x0233, 0x0233, 0x0233, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0250, 0x0250, 0x025f, 0x025f, 0x025f, 0x025f, 0x0271, - 0x0280, 0x0280, 0x028d, 0x0298, 0x02a6, 0x02a6, 0x02a6, 0x02a6, - 0x02b3, 0x02b3, 0x02bf, 0x02ce, 0x02dc, 0x02dc, 0x02dc, 0x02dc, - 0x02e7, 0x02e7, 0x02ed, 0x02ed, 0x02ed, 0x02fb, 0x02fb, 0x0309, - // Entry 80 - BF - 0x0309, 0x0319, 0x0319, 0x0319, 0x0319, 0x0328, 0x0336, 0x0336, - 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0345, 0x0351, 0x0362, - 0x0362, 0x0362, 0x0362, 0x0371, 0x037e, 0x037e, 0x037e, 0x038c, - 0x039a, 0x03a3, 0x03b0, 0x03bc, 0x03bc, 0x03c7, 0x03d4, 0x03e1, - 0x03e1, 0x03e1, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03fb, - 0x0405, 0x0410, 0x0410, 0x041e, 0x041e, 0x041e, 0x041e, 0x0429, - 0x0429, 0x0429, 0x0429, 0x0430, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - // Entry C0 - FF - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - // Entry 100 - 13F - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, 0x043b, - 0x043b, 0x043b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - // Entry 140 - 17F - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - // Entry 180 - 1BF - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - // Entry 1C0 - 1FF - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - // Entry 200 - 23F - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, - 0x044b, 0x044b, 0x044b, 0x044b, 0x044b, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - // Entry 240 - 27F - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, 0x0459, - 0x0472, 0x0482, - }, - }, - { // or - "ଅଫାର୍ଆବ୍ଖାଜିଆନ୍ଅବେସ୍ତନଆଫ୍ରିକୀୟଅକନ୍ଆମହାରକିଆର୍ଗୋନୀଆରବିକ୍ଆସାମୀୟଆଭାରିକ୍ଆୟମାର" + - "ାଆଜେରବାଇଜାନିବାଶକିର୍\u200cବେଲାରୁଷିଆନ୍ବୁଲଗେରିଆନ୍ବିସଲାମାବାମ୍ବାରାବଙ୍ଗା" + - "ଳୀତିବ୍ବତୀୟବ୍ରେଟନ୍କାଟଲାନ୍କାଟାଲାନ୍ଚେଚନ୍ଚାମୋରୋକୋର୍ସିକାନ୍କ୍ରୀଚେକ୍ଚର୍ଚ୍" + - "ଚ ସ୍ଲାଭିକ୍ଚୁଭାଶ୍ୱେଲ୍ସଡାନ୍ନିସ୍ଜର୍ମାନଡିଭେହୀଦଡଜୋଙ୍ଗଖାଇୱେଗ୍ରୀକ୍ଇଂରାଜୀଏ" + - "ସ୍ପାରେଣ୍ଟୋସ୍ପେନିୟଏସ୍ତୋନିଆନ୍ବାସ୍କ୍ୱିପର୍ସିଆନ୍ଫୁଲାହଫିନ୍ନିସ୍ଫିଜିଫାରୋଏସ" + - "େଫରାସୀପାଶ୍ଚାତ୍ୟ ଫ୍ରିସିଆନ୍ଇରିସ୍ସ୍କଟିସ୍ ଗାଏଲିକ୍ଗାଲସିଆନ୍ଗୁଆରାନୀଗୁଜୁରା" + - "ଟୀମାଁକ୍ସହୌସାହେବ୍ର୍ୟୁହିନ୍ଦୀହିରି ମୋଟୁକ୍ରୋଆଟିଆନ୍ହୈତାୟିନ୍ହଙ୍ଗେରୀୟଆର୍ମେ" + - "ନିଆନ୍ହେରେରୋଇର୍ଣ୍ଟଲିଙ୍ଗୁଆଇଣ୍ଡୋନେସୀୟଇର୍ଣ୍ଟରଲିଙ୍ଗୁଇଇଗବୋସିଚୁଆନ୍ ୟୀଇନୁପ" + - "ିୟାକ୍ଇଡୋଆଇସଲାଣ୍ଡିକ୍ଇଟାଲୀୟଇନୁକଟୁତ୍\u200cଜାପାନୀଜାଭାନୀଜ୍ଜର୍ଜିୟକଙ୍ଗୋକୀ" + - "କୁୟୁକ୍ୱାନ୍ୟାମ୍କାଜାକ୍କାଲାଲିସୁଟ୍ଖାମେର୍କନ୍ନଡକୋରିଆନ୍କନୁରୀକାଶ୍ମିରୀକୁର୍ଦ" + - "୍ଦିଶ୍କୋମିକୋର୍ନିସ୍କୀରଗୀଜ୍ଲାଟିନ୍ଲକ୍ସେମବର୍ଗିସ୍ଗନ୍ଦାଲିମ୍ବୁର୍ଗିସ୍ଲିଙ୍ଗା" + - "ଲାଲାଓଲିଥୁଆନିଆନ୍ଲ୍ୟୁବା-କାଟାଙ୍ଗାଲାଟଭିଆନ୍ମାଲାଗାସୀମାର୍ଶାଲୀଜ୍ମାଓରୀମାସେଡ" + - "ୋନିଆନ୍ମାଲାୟଲମ୍ମଙ୍ଗୋଳିୟମରାଠୀମାଲୟମାଲଟୀଜ୍ବର୍ମୀଜ୍ନାଉରୁଉତ୍ତର ନେଡବେଲେନେପ" + - "ାଳୀଡୋଙ୍ଗାଡଚ୍ନରୱେଜିଆନ୍ ନିୟୋର୍ସ୍କନରୱେଜିଆନ୍ ବୋକମଲ୍ଦକ୍ଷିଣ ନେଡବେଲେନାଭାଜ" + - "ୋନିୟାଞ୍ଜଓସିଟାନ୍ଓଜିୱାଓରୋମୋଓଡ଼ିଆଓସେଟିକ୍ପଞ୍ଜାବୀପାଲିପୋଲିଶ୍ପାସ୍ତୋପର୍ତ୍ତ" + - "ୁଗୀଜ୍\u200cକ୍ୱେଚୁଆରୋମାନଶ୍\u200cରୁଣ୍ଡିରୋମାନିଆନ୍ରୁଷିୟକିନ୍ୟାରୱାଣ୍ଡାସଂ" + - "ସ୍କୃତସର୍ଦିନିଆନ୍ସିନ୍ଧୀଉତ୍ତର ସାମିସାଙ୍ଗୋସିଂହଳସ୍ଲୋଭାକ୍ସ୍ଲୋଭେନିଆନ୍ସାମୋଆ" + - "ନ୍ଶୋନାସୋମାଲିଆଆଲବାନିଆନ୍ସର୍ବିୟସ୍ଵାତିସେସୋଥୋସୁଦାନୀଜ୍ସ୍ୱେଡିସ୍ସ୍ୱାହିଲ୍ତା" + - "ମିଲ୍ତେଲୁଗୁତାଜିକ୍ଥାଇଟ୍ରିଗିନିଆତୁର୍କମେନ୍ସୱାନାଟୋଙ୍ଗାତୁର୍କିସ୍ସୋଙ୍ଗାତାତା" + - "ର୍ତାହିତିଆନ୍ୟୁଘୁର୍ୟୁକ୍ରାନିଆନ୍ଉର୍ଦ୍ଦୁଉଜବେକ୍ଭେଣ୍ଡାଭିଏତନାମିଜ୍ବୋଲାପୁକୱା" + - "ଲୁନ୍ୱୋଲଫ୍ଖୋସାୟିଡିସ୍ୟୋରୁବାଜୁଆଙ୍ଗଚାଇନିଜ୍\u200cଜୁଲୁଆଚାଇନୀଜ୍ଆକୋଲିଆଦାଙ୍" + - "ଗେମ୍ଅଦ୍ୟଘେଆଫ୍ରିହିଲିଆଘେମଆଇନୁଆକାଡିଆନ୍ଆଲେଇଟୁଦକ୍ଷିଣ ଆଲ୍ଟାଇପୁରୁଣା ଇଁରାଜ" + - "ୀଅଁଗୀକାଆରାମାଇକ୍ମାପୁଚେଆରାପାହୋଆରୱକଆସୁଆଷ୍ଟୁରିଆନ୍ଆୱାଧିବାଲୁଚିବାଲିନୀଜ୍ବା" + - "ସାବେଜାବେମ୍ବାବେନାଭୋଜପୁରୀବିକୋଲ୍ବିନିସିକସିକାବ୍ରାଜ୍ବୋଡୋବୁରିଆଟ୍ବୁଗୀନୀଜ୍ବ" + - "୍ଲିନ୍କାଡୋକାରିବ୍ଆତ୍ସମ୍ସୀବୁଆନୋଚିଗାଚିବ୍ଚାଛଗତାଇଚୁକୀସେମାରୀଚିନୁକ୍ ଜାରଗାଁ" + - "ନ୍ଚୋଟୱାଚିପେୱାନ୍ଚେରୋକୀଚେଚେନାକେନ୍ଦ୍ରୀୟ କୁରଡିସ୍କପ୍ଟିକ୍କ୍ରୀମିନ୍ ତୁର୍କୀ" + - "ସ୍ସେସେଲୱା କ୍ରେଓଲେ ଫ୍ରେଞ୍ଚ୍କାଶୁବିଆନ୍ଡାକୋଟାଡାରାଗ୍ୱାତାଇତିଡେଲାୱେର୍ସ୍ଲେ" + - "ଭ୍ଡୋଗ୍ରିବ୍ଦିଙ୍କାଜର୍ମାଡୋଗ୍ରୀନିମ୍ନ ସର୍ବିଆନ୍\u200cଡୁଆନାମଧ୍ୟ ପର୍ତ୍ତୁଗା" + - "ଲୀଜୋଲା-ଫୋନୟିଡୁଆଲାଡାଜାଗାଏମ୍ଵୁଏଫିକ୍ପ୍ରାଚୀନ୍ ମିଶିରିଏକାଜୁକ୍ଏଲାମାଇଟ୍ମଧ୍" + - "ୟ ଇଁରାଜୀଇୱୋଣ୍ଡୋଫାଙ୍ଗଫିଲିପିନୋଫନ୍ମଧ୍ୟ ଫ୍ରେଞ୍ଚପୁରୁଣା ଫ୍ରେଞ୍ଚଉତ୍ତର ଫ୍ର" + - "ିସିୟାନ୍ପୂର୍ବ ଫ୍ରିସିୟାନ୍ଫ୍ରିୟୁଲୀୟାନ୍ଗାଗାୟୋଗବାୟାଗୀଜ୍ଜିବ୍ରାଟୀଜ୍ମିଡିଲ୍" + - " ହାଇ ଜର୍ମାନ୍ପୁରୁଣା ହାଇ ଜର୍ମାନ୍ଗୋଣ୍ଡିଗୋରୋଣ୍ଟାଲୋଗୋଥିକ୍ଗ୍ରେବୋପ୍ରାଚୀନ୍ ୟ" + - "ୁନାନୀସୁଇସ୍ ଜର୍ମାନ୍ଗୁସିଗୱିଚ’ଇନ୍ହାଇଡାହାୱାଇନ୍ହିଲିଗୈନନ୍ହିତୀତେହଁଙ୍ଗଉପର " + - "ସର୍ବିଆନ୍ହୁପାଇବାନ୍ଇବିବିଓଇଲୋକୋଇଁଙ୍ଗୁଶ୍ଲୋଜବାନ୍ନାଗୋମ୍ଵାମାଚେମେଜୁଡେଓ-ପର୍" + - "ସିଆନ୍ଜୁଡେଓ-ଆରବୀକ୍କାରା-କଲ୍ପକ୍କବାଇଲ୍କଚିନ୍ଜଜୁକମ୍ବାକାୱିକାବାର୍ଡିଆନ୍ତ୍ୟା" + - "ପ୍ମାକୋଣ୍ଡେକାବୁଭେରଡିଆନୁକୋରୋଖାସୀଖୋତାନୀଜ୍କୋୟରା ଚିନିକାକୋକାଲେନଜିନ୍କିମ୍ବ" + - "ୁଣ୍ଡୁକୋଙ୍କଣିକୋସରୈନ୍କୈପେଲେକରାଚୟ-ବଲ୍କାରକାରେଲିୟାନ୍କୁରୁଖଶାମବାଲାବାଫଲାକୋ" + - "ଲୋବନିୟକୁମୀକ୍କୁତେନାଉଲାଦିନୋଲାନଗିଲାହାଣ୍ଡାଲାମ୍ବାଲେଜଗିୟାନ୍ଲାକୋଟାମଙ୍ଗୋଲୋ" + - "ଜିଉତ୍ତର ଲୁରିଲୁବା-ଲୁଲୁଆଲୁଇସେନୋଲୁଣ୍ଡାଲୁଓମିଜୋଲୁୟିଆମାଦୁରୀସ୍ମାଗାହୀମୈଥିଳ" + - "ୀମକାସର୍ମାଣ୍ଡିଙ୍ଗୋମାସାଇମୋକ୍ଷମନ୍ଦାରମେନଡେମେରୁମୋରିସୟେନ୍ମଧ୍ୟ ଇରିଶ୍ମଖୁୱା" + - "-ମେଟ୍ଟାମେଟାମିକମୌକ୍ମିନାଙ୍ଗାବାଉମାଞ୍ଚୁମଣିପୁରୀମୋହୌକମୋସିମୁନଡାଂବିବିଧ ଭାଷାମ" + - "ାନକ୍ରୀକ୍ମିରାଣ୍ଡିଜ୍ମାରୱାରୀଏର୍ଜୟାମାଜାନଡେରାନିନୀପୋଲିଟାନ୍ନାମାଲୋ ଜର୍ମାନ୍" + - "ନେୱାରୀନୀୟାସ୍ନିୟୁଆନ୍କୱାସିଓନାଗିମବୋନ୍ନୋଗାଇପୁରୁଣା ନର୍ସଏନକୋଉତ୍ତରୀ ସୋଥୋନ" + - "ୁଏରପାରମ୍ପରିକ ନେୱାରୀନ୍ୟାମୱେଜୀନ୍ୟାନକୋଲ୍ନ୍ୟାରୋଞ୍ଜିମାୱୌସେଜ୍ଓଟ୍ଟୋମନ୍ ତୁ" + - "ର୍କିସ୍ପାଙ୍ଗାସିନିଆନ୍ପାହ୍ଲାଭିପାମ୍ପାଙ୍ଗାପାପିଆମେଣ୍ଟୋପାଲାଉଆନ୍ନାଇଜେରୀୟ ପ" + - "ିଡଗିନ୍ପୁରୁଣା ପର୍ସିଆନ୍ଫୋନେସିଆନ୍ପୋହପିଏନ୍ପ୍ରୁସିୟପୁରୁଣା ପ୍ରେଭେନେସିଆଲ୍କ" + - "ିଚେରାଜସ୍ଥାନୀରାପାନୁଇରାରୋତୋଙ୍ଗନ୍ରୋମ୍ବୋରୋମାନିଆରୋମାନିଆନ୍ଆରଡବ୍ୟୁଏସଣ୍ଡାୱ" + - "େସାଖାସାମୌରିଟନ୍ ଆରମାଇକ୍ସମବୁରୁସାସାକ୍ସାନ୍ତାଳିନଗାମବେସାନଗୁସିଶିଲିଆନ୍ସ୍କଟ" + - "ସ୍ସେନାସେଲ୍କପ୍କୋୟରା ସେନ୍ନିପୁରୁଣା ଇରିଶ୍ତାଚେଲହିଟ୍ଶାନ୍ସିଦାମୋଦକ୍ଷିଣ ସାମ" + - "ିଲୁଲେ ସାମିଇନାରୀ ସାମିସ୍କୋଲ୍ଟ ସାମୀସୋନିଙ୍କେସୋଗଡିଏନ୍ଶାରାନା ଟୋଙ୍ଗୋଶେରେର" + - "୍ସହୋସୁକୁମାଶୁଶୁସୁମେରିଆନ୍କୋମୋରିୟକ୍ଲାସିକାଲ୍ ସିରିକ୍ସିରିକ୍ତିମନେତେସାତେରେ" + - "ନୋତେତୁମ୍ଟାଇଗ୍ରେତୀଭ୍ଟୋକେଲାଉକ୍ଲିଙ୍ଗନ୍ତ୍ଲିଙ୍ଗିଟ୍ତାମାଶେକ୍ନ୍ୟାସା ଟୋଙ୍ଗୋ" + - "ଟୋକ୍ ପିସିନ୍ତାରୋକୋତିସିମିସିଆନ୍ଟୁମ୍ବୁକାତୁଭାଲୁତାସାୱାକ୍ତୁଭିନିଆନ୍କେନ୍ଦ୍ର" + - "ୀୟ ଆଟଲାସ୍ ଟାମାଜିଘାଟ୍ଉଦମୂର୍ତ୍ତୟୁଗୋରଟିକ୍ଉମ୍ବୁଣ୍ଡୁଅଜଣା ଭାଷାଭାଇଭୋଟିକ୍ଭ" + - "ୁନଜୋୱାଲସେର୍ୱାଲମୋୱାରୈୱାସୋକାଲ୍ମୀକ୍ସୋଗାୟାଓୟାପୀସ୍ୟାଂବେନ୍ୟେମବାକାନଟୋନେସେ" + - "ଜାପୋଟେକ୍ବ୍ଲିସିମ୍ବଲସ୍ଜେନାଗାମାନାଙ୍କ ମରୋକିୟ ତାମାଜିଘାଟ୍ଜୁନୀକୌଣସି ଲିଙ୍ଗ" + - "ୁଇଷ୍ଟ ସାମଗ୍ରୀ ନାହିଁଜାଜାଆଧୁନିକ ମାନାଙ୍କ ଆରବୀୟଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନସ୍ୱିସ୍" + - "\u200c ହାଇ ଜର୍ମାନଅଷ୍ଟ୍ରେଲିୟ ଇଂରାଜୀକାନାଡିୟ ଇଂରାଜୀବ୍ରିଟିଶ୍\u200c ଇଂରାଜ" + - "ୀଆମେରିକୀୟ ଇଂରାଜୀଲାଟିନ୍\u200c ଆମେରିକୀୟ ସ୍ପାନିସ୍\u200cୟୁରୋପୀୟ ସ୍ପାନି" + - "ସ୍\u200cମେକ୍ସିକାନ ସ୍ପାନିସ୍\u200cକାନାଡିୟ ଫ୍ରେଞ୍ଚସ୍ୱିସ୍ ଫ୍ରେଞ୍ଚଫ୍ଲେମ" + - "ିଶ୍ବ୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ୟୁରୋପୀୟ ପର୍ତ୍ତୁଗୀଜ୍\u200cମୋଲଡୋଭିଆନ୍ସର୍ବୋ" + - "-କ୍ରୋଆଟିଆନ୍କଙ୍ଗୋ ସ୍ୱାହିଲିସରଳୀକୃତ ଚାଇନିଜ୍\u200cପାରମ୍ପରିକ ଚାଇନିଜ୍" + - "\u200c", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x002d, 0x0042, 0x005a, 0x0066, 0x007b, 0x0090, - 0x00a2, 0x00b4, 0x00c9, 0x00db, 0x00fc, 0x0114, 0x0135, 0x0153, - 0x0168, 0x0180, 0x0195, 0x01ad, 0x01c2, 0x01d7, 0x01ef, 0x01fe, - 0x0210, 0x022e, 0x023a, 0x0246, 0x0271, 0x0283, 0x0292, 0x02aa, - 0x02bc, 0x02ce, 0x02e9, 0x02f2, 0x0304, 0x0316, 0x0337, 0x034c, - 0x036a, 0x0382, 0x039a, 0x03a9, 0x03c1, 0x03cd, 0x03e2, 0x03f1, - 0x0428, 0x0437, 0x0462, 0x047a, 0x048f, 0x04a7, 0x04b9, 0x04c5, - 0x04dd, 0x04ef, 0x0508, 0x0526, 0x053e, 0x0556, 0x0574, 0x0586, - // Entry 40 - 7F - 0x05ad, 0x05cb, 0x05f5, 0x0601, 0x061d, 0x0638, 0x0641, 0x0662, - 0x0674, 0x068f, 0x06a1, 0x06b9, 0x06cb, 0x06da, 0x06ec, 0x070a, - 0x071c, 0x073a, 0x074c, 0x075b, 0x0770, 0x077f, 0x0797, 0x07b5, - 0x07c1, 0x07d9, 0x07ee, 0x0800, 0x0827, 0x0836, 0x085a, 0x0872, - 0x087b, 0x0899, 0x08c4, 0x08dc, 0x08f4, 0x0912, 0x0921, 0x0942, - 0x095a, 0x0972, 0x0981, 0x098d, 0x09a2, 0x09b7, 0x09c6, 0x09eb, - 0x09fd, 0x0a0f, 0x0a18, 0x0a4f, 0x0a7d, 0x0aa5, 0x0ab7, 0x0acc, - 0x0ae1, 0x0af0, 0x0aff, 0x0b0e, 0x0b23, 0x0b38, 0x0b44, 0x0b56, - // Entry 80 - BF - 0x0b68, 0x0b8c, 0x0ba1, 0x0bb9, 0x0bcb, 0x0be6, 0x0bf5, 0x0c1c, - 0x0c31, 0x0c4f, 0x0c61, 0x0c7d, 0x0c8f, 0x0c9e, 0x0cb6, 0x0cd7, - 0x0cec, 0x0cf8, 0x0d0d, 0x0d28, 0x0d3a, 0x0d4c, 0x0d5e, 0x0d76, - 0x0d8e, 0x0da6, 0x0db8, 0x0dca, 0x0ddc, 0x0de5, 0x0e00, 0x0e1b, - 0x0e2a, 0x0e3c, 0x0e54, 0x0e66, 0x0e78, 0x0e93, 0x0ea5, 0x0ec6, - 0x0edb, 0x0eed, 0x0eff, 0x0f1d, 0x0f32, 0x0f44, 0x0f53, 0x0f5f, - 0x0f71, 0x0f83, 0x0f95, 0x0fad, 0x0fb9, 0x0fd1, 0x0fe0, 0x0ffb, - 0x100d, 0x100d, 0x1028, 0x1034, 0x1040, 0x1058, 0x1058, 0x106a, - // Entry C0 - FF - 0x106a, 0x108f, 0x10b4, 0x10c6, 0x10de, 0x10f0, 0x10f0, 0x1105, - 0x1105, 0x1105, 0x1111, 0x1111, 0x1111, 0x111a, 0x111a, 0x1138, - 0x1138, 0x1147, 0x1159, 0x1171, 0x1171, 0x117d, 0x117d, 0x117d, - 0x117d, 0x1189, 0x119b, 0x119b, 0x11a7, 0x11a7, 0x11a7, 0x11a7, - 0x11bc, 0x11ce, 0x11da, 0x11da, 0x11da, 0x11ef, 0x11ef, 0x11ef, - 0x1201, 0x1201, 0x120d, 0x120d, 0x1222, 0x123a, 0x123a, 0x124c, - 0x124c, 0x1258, 0x126a, 0x126a, 0x127c, 0x127c, 0x1291, 0x129d, - 0x12af, 0x12be, 0x12d0, 0x12dc, 0x1307, 0x1316, 0x132e, 0x1340, - // Entry 100 - 13F - 0x1352, 0x1383, 0x1398, 0x1398, 0x13c9, 0x140d, 0x1428, 0x143a, - 0x1452, 0x1461, 0x1479, 0x148b, 0x14a3, 0x14b5, 0x14c4, 0x14d6, - 0x1501, 0x1501, 0x1510, 0x153e, 0x155a, 0x1569, 0x157b, 0x158a, - 0x1599, 0x1599, 0x15c4, 0x15d9, 0x15f1, 0x1610, 0x1610, 0x1625, - 0x1625, 0x1634, 0x164c, 0x164c, 0x1655, 0x1655, 0x1677, 0x169f, - 0x169f, 0x16cd, 0x16fb, 0x171f, 0x1725, 0x1725, 0x1725, 0x1731, - 0x1740, 0x1740, 0x174c, 0x176a, 0x176a, 0x179c, 0x17ce, 0x17ce, - 0x17e0, 0x17fe, 0x1810, 0x1822, 0x184d, 0x1872, 0x1872, 0x1872, - // Entry 140 - 17F - 0x187e, 0x1896, 0x18a5, 0x18a5, 0x18ba, 0x18ba, 0x18d5, 0x18e7, - 0x18f6, 0x1918, 0x1918, 0x1924, 0x1933, 0x1945, 0x1954, 0x196c, - 0x196c, 0x196c, 0x1981, 0x1999, 0x19ab, 0x19d3, 0x19f5, 0x19f5, - 0x1a14, 0x1a26, 0x1a35, 0x1a3e, 0x1a4d, 0x1a59, 0x1a7a, 0x1a7a, - 0x1a8c, 0x1aa4, 0x1ac8, 0x1ac8, 0x1ad4, 0x1ad4, 0x1ae0, 0x1af8, - 0x1b14, 0x1b14, 0x1b14, 0x1b20, 0x1b3b, 0x1b59, 0x1b59, 0x1b6e, - 0x1b83, 0x1b95, 0x1bb7, 0x1bb7, 0x1bb7, 0x1bd5, 0x1be4, 0x1bf9, - 0x1c08, 0x1c20, 0x1c32, 0x1c47, 0x1c59, 0x1c68, 0x1c80, 0x1c92, - // Entry 180 - 1BF - 0x1cad, 0x1cad, 0x1cad, 0x1cad, 0x1cbf, 0x1cbf, 0x1cce, 0x1cce, - 0x1cda, 0x1cf6, 0x1cf6, 0x1d12, 0x1d27, 0x1d39, 0x1d42, 0x1d4e, - 0x1d5d, 0x1d5d, 0x1d5d, 0x1d75, 0x1d75, 0x1d87, 0x1d99, 0x1dab, - 0x1dc9, 0x1dd8, 0x1dd8, 0x1de7, 0x1df9, 0x1e08, 0x1e14, 0x1e2f, - 0x1e4b, 0x1e6d, 0x1e79, 0x1e8e, 0x1eaf, 0x1ec1, 0x1ed6, 0x1ee5, - 0x1ef1, 0x1ef1, 0x1f03, 0x1f28, 0x1f3a, 0x1f58, 0x1f6d, 0x1f6d, - 0x1f6d, 0x1f7f, 0x1fa0, 0x1fa0, 0x1fbe, 0x1fca, 0x1fe6, 0x1ff8, - 0x200a, 0x201f, 0x201f, 0x2031, 0x204c, 0x205b, 0x207a, 0x207a, - // Entry 1C0 - 1FF - 0x2086, 0x20a5, 0x20b1, 0x20df, 0x20fa, 0x2115, 0x2127, 0x2139, - 0x214b, 0x217c, 0x21a3, 0x21bb, 0x21d9, 0x21fa, 0x2212, 0x2212, - 0x2240, 0x2240, 0x2240, 0x226b, 0x226b, 0x2286, 0x2286, 0x2286, - 0x229e, 0x22b3, 0x22ed, 0x22f9, 0x22f9, 0x2314, 0x2329, 0x234a, - 0x234a, 0x234a, 0x235c, 0x236e, 0x236e, 0x236e, 0x236e, 0x238c, - 0x23a4, 0x23b9, 0x23c5, 0x23f6, 0x2408, 0x241a, 0x2432, 0x2432, - 0x2444, 0x2453, 0x246e, 0x2480, 0x2480, 0x2480, 0x2480, 0x248c, - 0x248c, 0x24a1, 0x24c3, 0x24e5, 0x24e5, 0x2500, 0x250c, 0x250c, - // Entry 200 - 23F - 0x251e, 0x251e, 0x251e, 0x253d, 0x2556, 0x2572, 0x2594, 0x25ac, - 0x25c4, 0x25e9, 0x25fb, 0x2604, 0x2604, 0x2616, 0x2622, 0x263d, - 0x2652, 0x2683, 0x2695, 0x2695, 0x2695, 0x26a4, 0x26b0, 0x26c2, - 0x26d4, 0x26e9, 0x26f5, 0x270a, 0x270a, 0x2725, 0x2743, 0x2743, - 0x275b, 0x2780, 0x279f, 0x279f, 0x27b1, 0x27b1, 0x27d2, 0x27d2, - 0x27ea, 0x27fc, 0x2814, 0x282f, 0x287c, 0x2897, 0x28b2, 0x28cd, - 0x28e6, 0x28ef, 0x28ef, 0x28ef, 0x28ef, 0x28ef, 0x2901, 0x2901, - 0x2910, 0x2925, 0x2934, 0x2940, 0x294c, 0x294c, 0x294c, 0x2964, - // Entry 240 - 27F - 0x2964, 0x2970, 0x2979, 0x298b, 0x29a0, 0x29af, 0x29af, 0x29ca, - 0x29e2, 0x2a06, 0x2a06, 0x2a18, 0x2a5f, 0x2a6b, 0x2abf, 0x2acb, - 0x2b03, 0x2b03, 0x2b34, 0x2b66, 0x2b97, 0x2bbf, 0x2bed, 0x2c18, - 0x2c62, 0x2c93, 0x2cca, 0x2cca, 0x2cf5, 0x2d1d, 0x2d1d, 0x2d35, - 0x2d78, 0x2db2, 0x2dd0, 0x2dfe, 0x2e26, 0x2e54, 0x2e88, - }, - }, - { // os - "абхазагавестӕафрикаансараббагавайрагтӕтӕйрагбашкирагболгайрагбосниагката" + - "лайнагцӕцӕйнагчехагчувашагданиагнемыцагбердзейнаганглисагесперантои" + - "спайнагестойнагбаскагперсайнагфиннагфиджифарерагфранцагирландиагуир" + - "агхорватагвенгериагсомихагиталиагяпойнаггуырдзиагкурдаглатинагмӕчъи" + - "дониронпортугалиагуырыссагкитайагадыгейаграгон англисагбурятагкопта" + - "грагон египтагфилиппинаграгон францаграгон бердзейнагмӕхъӕлонкӕсгон" + - "бӕлхъӕронхъуымыхъхъаглекъагцигайнагнӕзонгӕ ӕвзагавстралиаг немыцагш" + - "вйецариаг немыцагавстралиаг англисагканадӕйаг англисагбритайнаг анг" + - "лисагамерикаг англисаглатинаг америкаг англисагевропӕйаг англисагка" + - "надӕйаг францагшвейцариаг францагбразилиаг португалиагевропӕйаг пол" + - "тугалиагӕнцонгонд китайагтрадицион китайаг", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000e, 0x001a, 0x002c, 0x002c, 0x002c, 0x002c, - 0x003a, 0x003a, 0x0048, 0x0048, 0x0058, 0x0068, 0x0068, 0x007a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0088, 0x009c, 0x00ac, - 0x00ac, 0x00ac, 0x00ac, 0x00b6, 0x00b6, 0x00c4, 0x00c4, 0x00d0, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00f2, 0x0102, 0x0114, 0x0124, - 0x0134, 0x0140, 0x0152, 0x0152, 0x015e, 0x0168, 0x0176, 0x0184, - 0x0184, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, - 0x01a0, 0x01a0, 0x01a0, 0x01b0, 0x01b0, 0x01c2, 0x01d0, 0x01d0, - // Entry 40 - 7F - 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - 0x01de, 0x01de, 0x01ec, 0x01ec, 0x01fe, 0x01fe, 0x01fe, 0x01fe, - 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x020a, - 0x020a, 0x020a, 0x020a, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, - 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0218, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0230, 0x0230, 0x0230, 0x0230, - // Entry 80 - BF - 0x0230, 0x0246, 0x0246, 0x0246, 0x0246, 0x0246, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, - 0x0256, 0x0256, 0x0256, 0x0264, 0x0264, 0x0264, 0x0264, 0x0264, - 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, - // Entry C0 - FF - 0x0274, 0x0274, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, - 0x028f, 0x028f, 0x028f, 0x028f, 0x029d, 0x029d, 0x029d, 0x029d, - 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, - 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, 0x029d, - // Entry 100 - 13F - 0x029d, 0x029d, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02a9, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, 0x02c2, - 0x02c2, 0x02c2, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02ef, - 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, - 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x02ef, - 0x02ef, 0x02ef, 0x02ef, 0x02ef, 0x030e, 0x030e, 0x030e, 0x030e, - // Entry 140 - 17F - 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, - 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x031e, - 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, - 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x032a, 0x032a, - 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, - 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, 0x032a, - 0x032a, 0x032a, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, 0x033c, - 0x033c, 0x033c, 0x0354, 0x0354, 0x0354, 0x0354, 0x0354, 0x0354, - // Entry 180 - 1BF - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - // Entry 1C0 - 1FF - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, 0x0360, - 0x0360, 0x0360, 0x0360, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - // Entry 200 - 23F - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - // Entry 240 - 27F - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x03ac, 0x03cf, 0x03f4, 0x0417, 0x043a, 0x045b, - 0x048b, 0x04ae, 0x04ae, 0x04ae, 0x04cf, 0x04f2, 0x04f2, 0x04f2, - 0x051b, 0x0544, 0x0544, 0x0544, 0x0544, 0x0565, 0x0586, - }, - }, - { // pa - paLangStr, - paLangIdx, - }, - { // pa-Arab - "پنجابی", - []uint16{ // 126 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, - }, - }, - { // pl - plLangStr, - plLangIdx, - }, - { // prg - "prūsiskan", - []uint16{ // 474 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1C0 - 1FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000a, - }, - }, - { // ps - "افريابخازيافریکانسياکانيامهارياراگونېسيعربياسامياواريایمارياذربایجانيباش" + - "کيربېلاروسيبلغاريبسلامابامرهبنگاليتبتيبرېتونبوسنيکټلانيچيچينيچموروک" + - "ورسيکانيچېکيد کليسا سلاويچوواشيويلشيدانمارکيالمانيديویهیژونگکهايویو" + - "نانيانګریزياسپرانتوهسپانويحبشيباسکيفارسيفلاحہفینلنډيفجیانفاروئېفران" + - "سويفريزيائيرلېنډيسکاټلېنډي ګېلکګلېشياييګورانيګجراتيمینکسهوساعبريهند" + - "يکروواسيهيٽي کروليهنگريارمنيهیروروانډونېزياګبوسیچیان ییاڊوايسلنډيای" + - "ټالويانوکتیتوتجاپانيجاواييجورجيائيککوؤوکواناماقازقکلالیسٹخمرکنأډهکو" + - "ریاییکنوریکشمیريکرديکومیکرونيشيکرګيزلاتینيلوګزامبورګيګاندهلمبرگیانی" + - "لنگلالاوليتوانيلوبا-کټنګالېټوانيملغاسيمارشلیزماوريمقدونيمالايالممنګ" + - "ولیاییمراټهيملایامالټاييبرمایینایروشمالي نديبلنېپاليندونگاهالېنډينا" + - "روېئي (نائنورسک)ناروې بوکمالسويلي نديبيلنواجونیانجااوکسيټانياوروموا" + - "وڊيااوسیٹکپنجابيپولنډيپښتوپورتګاليکېچوارومانشرونډیرومانيروسيکینیارو" + - "نډاسنسکریټسارڊينيسندهيشمالي ساميسانګوسينهاليسلوواکيسلووانيساموآنشون" + - "اسوماليالبانيسربيائيسواتیسيسوتوسوډانيسویډنیسواهېليتامیلتېليګوتاجکيت" + - "ايلېنډيتيګرينيترکمنيسوواناتونګانترکيسونګاتاتارتاهیتياويغورياوکراناي" + - "ياوزبکيوینداوېتناميوالاپوکوالونولوفخوسايديشیوروباچینيزولواچينيادانگ" + - "مياديغياغیمياينويياليوتيسویل الټایانگيکيماپوچهاراپاهوياسويياستوريان" + - "ياواديبلوڅيبالنیباسابیبابينابهوجپوريبینیسکسيکابودوبگنياييبلینسیبوان" + - "ويچيگاييچواوکيماريچوکټاويچېروکيشينيمنځنۍ کورديسسيلوا ڪروئل فرانسويد" + - "اکوتادرگواټایټاداگربزرمالوړې سربيدوالاجولا فونيډزاګاایموافکاکجکاوون" + - "ڊوفلیپینيفانفرائیلیینgaaګیزگلبرتيګورن ټالوسویس جرمنګوسيګیچینهواییھل" + - "یګینونهمونګپورته صربيھوپاابنابیبیوالوکوانگشلوجباننګباماچمیکیبیلکاچی" + - "نججوکامباکابیرینتایپماکډونکابوورډیانوکوروخاسېکویرا چینیکاکوکلینجنکی" + - "مبوندوکنکنيکیليکراچی بالکرکاریلینکورخشمبلابفیاکولوگنيسيکومکلاډینولن" + - "ګیلیګغیانلکټولوزیشمالي لوریلبا لولوالندالوميزولویامدراسیمګهيمایتھلي" + - "مکاسارماسائيموکشامینڊيميروماریسیسنمکھوامیتوميټاممکقمينيگاباومانی پو" + - "ریمحاواکماسيمندانګڅو ژبوکريکيمرانديزارزيامزاندرانينيپاليننامانيواري" + - "نياسنیانکواسیونایجیموننوګینکوشمالي سوتونویرنینکولپانګاسینپمپانگاپاپ" + - "يامينتوپالاننائجیریا پیدجنپروشينکچیرپانوئيراروټانګانرومبوارومانيRwa" + - "سنډاویسخاسمبوروسنتالينګبایسانګووسیلیسيسکاټسسیناکوییرابورو سینیتاکله" + - "یټشانسویلي سامیلول سامياناري سميعسکولټ سمیعسونینګسوران ټونګوسهوسکوم" + - "اکوموريانيسوریانيتیمنيتیسوتتومتیګرکلينګانيتوک پیسینتاروکوتامبوکاتوو" + - "الوتساواقتوینیانمرکزی اطلس تمازائيٹادمورتامبوندونامعلومه ژبهوایوونج" + - "وولسیرولایټاوارۍکالمکسوګاینګبینیمباکانټونيمعياري مراکش تمازټیټزونين" + - "ه ژبني منځپانګهزازانوې معياري عربيآسترالیا آلمانسوئس لوی جرمنانګریز" + - "ي (AU)انګریزي (US)لاتیني امریکایي اسپانویاروپایی اسپانویمکسیکو اسپا" + - "نویکاناډا فرانسيسویس فرانسيفلېمېشيبرازیلي پرتګالياروپايي پرتګاليساد" + - "ه چينيدوديزه چيني", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x0014, 0x0014, 0x0026, 0x0030, 0x003c, 0x004e, - 0x0056, 0x0060, 0x006a, 0x0076, 0x008a, 0x0096, 0x00a6, 0x00b2, - 0x00be, 0x00c8, 0x00d4, 0x00dc, 0x00e8, 0x00f2, 0x00fe, 0x010a, - 0x0114, 0x0126, 0x0126, 0x012e, 0x0146, 0x0152, 0x015c, 0x016c, - 0x0178, 0x0184, 0x0190, 0x0196, 0x01a2, 0x01b0, 0x01c0, 0x01ce, - 0x01d6, 0x01e0, 0x01ea, 0x01f4, 0x0202, 0x020c, 0x0218, 0x0226, - 0x0230, 0x0242, 0x025d, 0x026d, 0x0279, 0x0285, 0x028f, 0x0297, - 0x029f, 0x02a7, 0x02a7, 0x02b5, 0x02c8, 0x02d2, 0x02dc, 0x02e8, - // Entry 40 - 7F - 0x02e8, 0x02f8, 0x02f8, 0x0300, 0x0311, 0x0311, 0x0317, 0x0325, - 0x0333, 0x0345, 0x0351, 0x035d, 0x036d, 0x036d, 0x0377, 0x0385, - 0x038d, 0x039b, 0x03a1, 0x03ab, 0x03b9, 0x03c3, 0x03cf, 0x03d7, - 0x03df, 0x03ed, 0x03f7, 0x0403, 0x0419, 0x0423, 0x0435, 0x043f, - 0x0445, 0x0453, 0x0466, 0x0474, 0x0480, 0x048e, 0x0498, 0x04a4, - 0x04b4, 0x04c6, 0x04d2, 0x04dc, 0x04ea, 0x04f6, 0x0500, 0x0515, - 0x0521, 0x052d, 0x053b, 0x055c, 0x0573, 0x058a, 0x0594, 0x05a0, - 0x05b2, 0x05b2, 0x05be, 0x05c8, 0x05d4, 0x05e0, 0x05e0, 0x05ec, - // Entry 80 - BF - 0x05f4, 0x0604, 0x060e, 0x061a, 0x0624, 0x0630, 0x0638, 0x064c, - 0x065a, 0x0668, 0x0672, 0x0685, 0x068f, 0x069d, 0x06ab, 0x06b9, - 0x06c5, 0x06cd, 0x06d9, 0x06e5, 0x06f3, 0x06fd, 0x0709, 0x0715, - 0x0721, 0x072f, 0x0739, 0x0745, 0x074f, 0x075f, 0x076d, 0x0779, - 0x0785, 0x0791, 0x0799, 0x07a3, 0x07ad, 0x07b9, 0x07c7, 0x07d9, - 0x07d9, 0x07e5, 0x07ef, 0x07fd, 0x080b, 0x0815, 0x081d, 0x0825, - 0x082d, 0x0839, 0x0839, 0x0841, 0x0849, 0x0853, 0x0853, 0x0861, - 0x086b, 0x086b, 0x086b, 0x0875, 0x0881, 0x0881, 0x0881, 0x088d, - // Entry C0 - FF - 0x088d, 0x08a0, 0x08a0, 0x08ac, 0x08ac, 0x08b8, 0x08b8, 0x08c8, - 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08c8, 0x08d2, 0x08d2, 0x08e4, - 0x08e4, 0x08ee, 0x08f8, 0x0902, 0x0902, 0x090a, 0x090a, 0x090a, - 0x090a, 0x090a, 0x0912, 0x0912, 0x091a, 0x091a, 0x091a, 0x091a, - 0x092a, 0x092a, 0x0932, 0x0932, 0x0932, 0x093e, 0x093e, 0x093e, - 0x093e, 0x093e, 0x0946, 0x0946, 0x0946, 0x0954, 0x0954, 0x095c, - 0x095c, 0x095c, 0x095c, 0x095c, 0x095c, 0x095c, 0x096c, 0x0978, - 0x0978, 0x0978, 0x0984, 0x098c, 0x098c, 0x099a, 0x099a, 0x09a6, - // Entry 100 - 13F - 0x09ae, 0x09c3, 0x09c3, 0x09c3, 0x09c3, 0x09e9, 0x09e9, 0x09f5, - 0x09ff, 0x0a09, 0x0a09, 0x0a09, 0x0a13, 0x0a13, 0x0a1b, 0x0a1b, - 0x0a2c, 0x0a2c, 0x0a36, 0x0a36, 0x0a47, 0x0a47, 0x0a51, 0x0a59, - 0x0a5f, 0x0a5f, 0x0a5f, 0x0a67, 0x0a67, 0x0a67, 0x0a67, 0x0a73, - 0x0a73, 0x0a73, 0x0a81, 0x0a81, 0x0a87, 0x0a87, 0x0a87, 0x0a87, - 0x0a87, 0x0a87, 0x0a87, 0x0a99, 0x0a9c, 0x0a9c, 0x0a9c, 0x0a9c, - 0x0a9c, 0x0a9c, 0x0aa2, 0x0aae, 0x0aae, 0x0aae, 0x0aae, 0x0aae, - 0x0aae, 0x0abf, 0x0abf, 0x0abf, 0x0abf, 0x0ad0, 0x0ad0, 0x0ad0, - // Entry 140 - 17F - 0x0ad8, 0x0ae2, 0x0ae2, 0x0ae2, 0x0aec, 0x0aec, 0x0afc, 0x0afc, - 0x0b06, 0x0b19, 0x0b19, 0x0b21, 0x0b27, 0x0b33, 0x0b3d, 0x0b45, - 0x0b45, 0x0b45, 0x0b51, 0x0b59, 0x0b63, 0x0b63, 0x0b63, 0x0b63, - 0x0b63, 0x0b6d, 0x0b77, 0x0b7d, 0x0b87, 0x0b87, 0x0b95, 0x0b95, - 0x0b9d, 0x0ba9, 0x0bbf, 0x0bbf, 0x0bc7, 0x0bc7, 0x0bcf, 0x0bcf, - 0x0be2, 0x0be2, 0x0be2, 0x0bea, 0x0bf6, 0x0c06, 0x0c06, 0x0c10, - 0x0c10, 0x0c18, 0x0c2d, 0x0c2d, 0x0c2d, 0x0c3b, 0x0c43, 0x0c4d, - 0x0c55, 0x0c67, 0x0c6f, 0x0c6f, 0x0c7b, 0x0c83, 0x0c83, 0x0c83, - // Entry 180 - 1BF - 0x0c91, 0x0c91, 0x0c91, 0x0c91, 0x0c99, 0x0c99, 0x0c99, 0x0c99, - 0x0ca1, 0x0cb4, 0x0cb4, 0x0cc5, 0x0cc5, 0x0ccd, 0x0cd1, 0x0cd9, - 0x0ce1, 0x0ce1, 0x0ce1, 0x0ced, 0x0ced, 0x0cf5, 0x0d03, 0x0d0f, - 0x0d0f, 0x0d1b, 0x0d1b, 0x0d25, 0x0d25, 0x0d2f, 0x0d37, 0x0d47, - 0x0d47, 0x0d59, 0x0d61, 0x0d69, 0x0d7b, 0x0d7b, 0x0d8c, 0x0d98, - 0x0da0, 0x0da0, 0x0dac, 0x0db7, 0x0dc1, 0x0dcf, 0x0dcf, 0x0dcf, - 0x0dcf, 0x0dd9, 0x0deb, 0x0deb, 0x0df9, 0x0e01, 0x0e01, 0x0e0d, - 0x0e15, 0x0e1d, 0x0e1d, 0x0e29, 0x0e39, 0x0e41, 0x0e41, 0x0e41, - // Entry 1C0 - 1FF - 0x0e47, 0x0e5a, 0x0e62, 0x0e62, 0x0e62, 0x0e6e, 0x0e6e, 0x0e6e, - 0x0e6e, 0x0e6e, 0x0e7e, 0x0e7e, 0x0e8c, 0x0ea0, 0x0eaa, 0x0eaa, - 0x0ec5, 0x0ec5, 0x0ec5, 0x0ec5, 0x0ec5, 0x0ec5, 0x0ec5, 0x0ec5, - 0x0ec5, 0x0ed1, 0x0ed1, 0x0ed7, 0x0ed7, 0x0ed7, 0x0ee5, 0x0ef9, - 0x0ef9, 0x0ef9, 0x0f03, 0x0f03, 0x0f03, 0x0f03, 0x0f03, 0x0f11, - 0x0f14, 0x0f20, 0x0f26, 0x0f26, 0x0f32, 0x0f32, 0x0f3e, 0x0f3e, - 0x0f48, 0x0f54, 0x0f60, 0x0f6a, 0x0f6a, 0x0f6a, 0x0f6a, 0x0f72, - 0x0f72, 0x0f72, 0x0f8f, 0x0f8f, 0x0f8f, 0x0f9d, 0x0fa3, 0x0fa3, - // Entry 200 - 23F - 0x0fa3, 0x0fa3, 0x0fa3, 0x0fb6, 0x0fc5, 0x0fd8, 0x0feb, 0x0ff7, - 0x0ff7, 0x100c, 0x100c, 0x1012, 0x1012, 0x101c, 0x101c, 0x101c, - 0x102e, 0x102e, 0x103c, 0x103c, 0x103c, 0x1046, 0x104e, 0x104e, - 0x1056, 0x105e, 0x105e, 0x105e, 0x105e, 0x106e, 0x106e, 0x106e, - 0x106e, 0x106e, 0x107f, 0x107f, 0x108b, 0x108b, 0x108b, 0x108b, - 0x1099, 0x10a5, 0x10b1, 0x10bf, 0x10e3, 0x10ef, 0x10ef, 0x10fd, - 0x1114, 0x111a, 0x111a, 0x111a, 0x111a, 0x111a, 0x111a, 0x111a, - 0x1124, 0x112e, 0x113a, 0x1142, 0x1142, 0x1142, 0x1142, 0x114c, - // Entry 240 - 27F - 0x114c, 0x1154, 0x1154, 0x1154, 0x1160, 0x1168, 0x1168, 0x1176, - 0x1176, 0x1176, 0x1176, 0x1176, 0x119c, 0x11a4, 0x11c2, 0x11ca, - 0x11e6, 0x11e6, 0x1201, 0x1219, 0x122c, 0x122c, 0x122c, 0x123f, - 0x126b, 0x1288, 0x12a3, 0x12a3, 0x12bc, 0x12d1, 0x12d1, 0x12df, - 0x12fc, 0x1319, 0x1319, 0x1319, 0x1319, 0x132a, 0x133f, - }, - }, - { // pt - ptLangStr, - ptLangIdx, - }, - { // pt-PT - ptPTLangStr, - ptPTLangIdx, - }, - { // qu - "Afrikaans SimiAmarico SimiArabe SimiAsames SimiAzerbaiyano SimiBaskir Si" + - "miBielorruso SimiBulgaro SimiBangla SimiTibetano SimiBreton SimiBosn" + - "io SimiCatalan SimiCorso SimiCheco SimiGales SimiDanes SimiAleman Si" + - "miDivehi SimiGriego SimiIngles SimiEspañol SimiEstonio SimiEuskera S" + - "imiPersa SimiFulah SimiFines SimiFeroes SimiFrances SimiFrison SimiI" + - "rlandes SimiGaelico Escoces SimiGallego SimiGujarati SimiHausa SimiH" + - "ebreo SimiHindi SimiCroata SimiHaitiano Criollo SimiHungaro SimiArme" + - "nio SimiIndonesio SimiIgbo SimiYi SimiIslandes SimiItaliano SimiInuk" + - "titut SimiJapones SimiGeorgiano SimiKazajo SimiGroenlandes SimiKhmer" + - " SimiKannada SimiCoreano SimiKirghiz SimiLuxemburgues SimiLao SimiLi" + - "tuano SimiLeton SimiMaori SimiMacedonio SimiMalayalam SimiMongol Sim" + - "iMarathi SimiMalayo SimiMaltes SimiNepali SimiNeerlandes SimiNoruego" + - " SimiOccitano SimiOdia SimiPunyabi SimiPolaco SimiPashto SimiPortugu" + - "es SimiRunasimiRomanche SimiRumano SimiRuso SimiKinyarwanda SimiSans" + - "crito SimiSindhi SimiChincha Sami SimiCingales SimiEslovaco SimiEslo" + - "veno SimiAlbanes SimiSerbio SimiSueco SimiSuajili SimiTamil SimiTelu" + - "gu SimiTayiko SimiTailandes SimiTigriña SimiTurcomano SimiSetsuana S" + - "imiTurco SimiTartaro SimiUigur SimiUcraniano SimiUrdu SimiUzbeko Sim" + - "iVietnamita SimiWolof SimiIsixhosa SimiYoruba SimiChino SimiIsizulu " + - "SimiMapuche SimiCheroqui SimiChawpi Kurdo SimiBajo Sorbio SimiFilipi" + - "no SimiAlsaciano SimiHmong Daw SimiAlto Sorbio SimiKonkani SimiMohaw" + - "k SimiSesotho Sa Leboa SimiPapiamento SimiKʼicheʼ SimiSakha SimiQull" + - "a Sami SimiSami Lule SimiSami Inari SimiSami Skolt SimiSiriaco Simi", - []uint16{ // 531 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x001a, 0x001a, - 0x0024, 0x002f, 0x002f, 0x002f, 0x003f, 0x004a, 0x0059, 0x0065, - 0x0065, 0x0065, 0x0070, 0x007d, 0x0088, 0x0093, 0x009f, 0x009f, - 0x009f, 0x00a9, 0x00a9, 0x00b3, 0x00b3, 0x00b3, 0x00bd, 0x00c7, - 0x00d2, 0x00dd, 0x00dd, 0x00dd, 0x00e8, 0x00f3, 0x00f3, 0x0100, - 0x010c, 0x0118, 0x0122, 0x012c, 0x0136, 0x0136, 0x0141, 0x014d, - 0x0158, 0x0165, 0x0179, 0x0185, 0x0185, 0x0192, 0x0192, 0x019c, - 0x01a7, 0x01b1, 0x01b1, 0x01bc, 0x01d1, 0x01dd, 0x01e9, 0x01e9, - // Entry 40 - 7F - 0x01e9, 0x01f7, 0x01f7, 0x0200, 0x0207, 0x0207, 0x0207, 0x0214, - 0x0221, 0x022f, 0x023b, 0x023b, 0x0249, 0x0249, 0x0249, 0x0249, - 0x0254, 0x0264, 0x026e, 0x027a, 0x0286, 0x0286, 0x0286, 0x0286, - 0x0286, 0x0286, 0x0292, 0x0292, 0x02a3, 0x02a3, 0x02a3, 0x02a3, - 0x02ab, 0x02b7, 0x02b7, 0x02c1, 0x02c1, 0x02c1, 0x02cb, 0x02d9, - 0x02e7, 0x02f2, 0x02fe, 0x0309, 0x0314, 0x0314, 0x0314, 0x0314, - 0x031f, 0x031f, 0x032e, 0x032e, 0x033a, 0x033a, 0x033a, 0x033a, - 0x0347, 0x0347, 0x0347, 0x0350, 0x0350, 0x035c, 0x035c, 0x0367, - // Entry 80 - BF - 0x0372, 0x0380, 0x0388, 0x0395, 0x0395, 0x03a0, 0x03a9, 0x03b9, - 0x03c7, 0x03c7, 0x03d2, 0x03e3, 0x03e3, 0x03f0, 0x03fd, 0x040a, - 0x040a, 0x040a, 0x040a, 0x0416, 0x0421, 0x0421, 0x0421, 0x0421, - 0x042b, 0x0437, 0x0441, 0x044c, 0x0457, 0x0465, 0x0472, 0x0480, - 0x048d, 0x048d, 0x0497, 0x0497, 0x04a3, 0x04a3, 0x04ad, 0x04bb, - 0x04c4, 0x04cf, 0x04cf, 0x04de, 0x04de, 0x04de, 0x04e8, 0x04f5, - 0x04f5, 0x0500, 0x0500, 0x050a, 0x0516, 0x0516, 0x0516, 0x0516, - 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, - // Entry C0 - FF - 0x0516, 0x0516, 0x0516, 0x0516, 0x0516, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, - 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x0522, 0x052f, - // Entry 100 - 13F - 0x052f, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, - 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, 0x0540, - 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, - 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, 0x0550, - 0x0550, 0x0550, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x056b, 0x056b, 0x056b, - // Entry 140 - 17F - 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, 0x056b, - 0x0579, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, - 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0589, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - // Entry 180 - 1BF - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, - 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x0595, 0x05a0, - 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, - 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, - 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, 0x05a0, - // Entry 1C0 - 1FF - 0x05a0, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, - 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05b5, 0x05c4, 0x05c4, 0x05c4, - 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, 0x05c4, - 0x05c4, 0x05c4, 0x05c4, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, - 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, 0x05d2, - 0x05d2, 0x05d2, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, - 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, - 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, 0x05dc, - // Entry 200 - 23F - 0x05dc, 0x05dc, 0x05dc, 0x05eb, 0x05f9, 0x0608, 0x0617, 0x0617, - 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, 0x0617, - 0x0617, 0x0617, 0x0623, - }, - }, - { // rm - "afarabchasianavesticafrikaansakanamaricaragonaisarabassamiavaricaymaraas" + - "erbeidschanicbaschkirbielorussbulgarbislamabambarabengaltibetanbreto" + - "nbosniaccatalantschetschenchamorrocorscreetschecslav da baselgiatsch" + - "uvaschkimricdanaistudestgmaledivicdzongkhaewegrecenglaisesperantospa" + - "gnolestonbascpersianfulahfinlandaisfidschianferraisfranzosfrisirland" + - "aisgaelic scotgalicianguaranigujaratimanxhaussaebraichindihiri motuc" + - "roathaitianungaraisarmenhererointerlinguaindonaisinterlingueigbosich" + - "uan yiinupiakidoislandaistalianinuktitutgiapunaisjavanaisgeorgiankon" + - "gokikuyukuanyamacasacgrönlandaiscambodschankannadacoreankanurikashmi" + - "ricurdkomicornickirghislatinluxemburgaisgandalimburgaislingalalaotli" + - "tuanluba-katangalettonmalagassimarschallaismaorimacedonmalayalammong" + - "olicmarathimalaicmaltaisbirmannaurundebele dal nordnepalaisndongaoll" + - "andaisnorvegiais nynorsknorvegais bokmålndebele dal sidnavajonyanjao" + - "ccitanojibwaoromooriyaosseticpunjabipalipolacpaschtoportugaisquechua" + - "rumantschrundirumenrusskinyarwandasanscritsardsindhisami dal nordsan" + - "gosingalaisslovacslovensamoanshonasomalialbanaisserbswazisotho dal s" + - "idsundanaissvedaissuahilitamiltelugutadjiktailandaistigrinyaturkment" + - "swanatongatirctsongatatartahitianuiguricucranaisurduusbecvendavietna" + - "maisvolapukvallonwolofxhosajiddicyorubazhuangchinaiszuluacehacoliand" + - "angmeadygaiafrihiliainuaccadicaleuticaltaic dal sidenglais veglangik" + - "aarameicaraucanicarapahoarawakasturianawadhibelutschibalinaisbasaabe" + - "dschabembabhojpuribikolbinisiksikabrajburiatbugiblincaddocaribicatsa" + - "mcebuanochibchatschagataicchuukaismaripatuà chinookchoctawchipewyanc" + - "herokeecheyennecoptictirc crimeankaschubicdakotadargwadelawareslavey" + - "dogribdinkadogribass sorbdualaollandais mesaundiulaefikegipzian vegl" + - "ekajukelamiticenglais mesaunewondofangfilippinofonfranzos mesaunfran" + - "zos veglfris dal nordfris da l’ostfriulangagayogbayageezgilbertaistu" + - "destg mesaunvegl tudestg da scrittiragondigorontalogoticgrebogrec ve" + - "gltudestg svizzergwichʼinhaidahawaianhiligaynonettitichmongaut sorbh" + - "upaibanilocanoingushlojbangiudaic-persiangiudaic-arabkarakalpakkabyl" + - "ekachinjjukambakawikabardictyapkorokhasikhotanaiskimbundukonkanikosr" + - "aeankpellekarachay-balkarcareliankurukhkumukkutenailadinolahndalamba" + - "lezghianlomongoloziluba-lulualuisenolundaluolushaimaduraismagahimait" + - "hilimakassarmandingomasaimokshamandarmendeirlandais mesaunmicmacmina" + - "ngkabaumanchumanipurimohawkmossiplurilingcreekmirandaismarwarierzyan" + - "eapolitanbass tudestgnewariniasniuenogainordic vegln’kosotho dal nor" + - "dnewari classicnyamwezinyankolenyoronzimaosagetirc ottomanpangasinan" + - "pahlavipampangapapiamentopalaupersian veglfenizianponapeanprovenzal " + - "veglrajasthanirapanuirarotongaromaniaromunicsandawejakutarameic sama" + - "ritansasaksantalisicilianscotselkupirlandais veglshansidamosami dal " + - "sidsami lulesami inarisami skoltsoninkesogdiansranan tongoserersukum" + - "asususumericsiric classicsirictemneterenotetumtigretivtokelauklingon" + - "ictlingittamasheqlingua tsongatok pisintsimshiantumbukatuvalutuvinia" + - "nudmurtugariticmbundulinguas betg determinadasvaivoticwalamowaraywas" + - "hokalmukyaoyapaiszapotecsimbols da Blisszenagazuninagins cuntegns li" + - "nguisticszazatudestg austriacenglais australianenglais canadaisengla" + - "is britannicenglais americanspagnol latinamericanspagnol ibericfranz" + - "os canadaisfranzos svizzerflamportugais brasilianportugais iberianmo" + - "ldavserbo-croatchinais simplifitgàchinais tradiziunal", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0027, 0x0030, - 0x0034, 0x003a, 0x0040, 0x0046, 0x0055, 0x005d, 0x0066, 0x006c, - 0x0073, 0x007a, 0x0080, 0x0087, 0x008d, 0x0094, 0x009b, 0x00a6, - 0x00ae, 0x00b2, 0x00b6, 0x00bc, 0x00cc, 0x00d6, 0x00dc, 0x00e2, - 0x00e9, 0x00f2, 0x00fa, 0x00fd, 0x0101, 0x0108, 0x0111, 0x0118, - 0x011d, 0x0121, 0x0128, 0x012d, 0x0137, 0x0140, 0x0147, 0x014e, - 0x0152, 0x015b, 0x0166, 0x016e, 0x0175, 0x017d, 0x0181, 0x0187, - 0x018d, 0x0192, 0x019b, 0x01a0, 0x01a7, 0x01af, 0x01b4, 0x01ba, - // Entry 40 - 7F - 0x01c5, 0x01cd, 0x01d8, 0x01dc, 0x01e6, 0x01ed, 0x01f0, 0x01f9, - 0x01ff, 0x0208, 0x0211, 0x0219, 0x0221, 0x0226, 0x022c, 0x0234, - 0x0239, 0x0245, 0x0250, 0x0257, 0x025d, 0x0263, 0x026b, 0x026f, - 0x0273, 0x0279, 0x0280, 0x0285, 0x0291, 0x0296, 0x02a0, 0x02a7, - 0x02ab, 0x02b1, 0x02bd, 0x02c3, 0x02cc, 0x02d8, 0x02dd, 0x02e4, - 0x02ed, 0x02f5, 0x02fc, 0x0302, 0x0309, 0x030f, 0x0314, 0x0324, - 0x032c, 0x0332, 0x033b, 0x034d, 0x035e, 0x036d, 0x0373, 0x0379, - 0x0380, 0x0386, 0x038b, 0x0390, 0x0397, 0x039e, 0x03a2, 0x03a7, - // Entry 80 - BF - 0x03ae, 0x03b7, 0x03be, 0x03c7, 0x03cc, 0x03d1, 0x03d5, 0x03e0, - 0x03e8, 0x03ec, 0x03f2, 0x03ff, 0x0404, 0x040d, 0x0413, 0x0419, - 0x041f, 0x0424, 0x042a, 0x0432, 0x0436, 0x043b, 0x0448, 0x0451, - 0x0458, 0x045f, 0x0464, 0x046a, 0x0470, 0x047a, 0x0482, 0x0489, - 0x048f, 0x0494, 0x0498, 0x049e, 0x04a3, 0x04ab, 0x04b2, 0x04ba, - 0x04be, 0x04c3, 0x04c8, 0x04d2, 0x04d9, 0x04df, 0x04e4, 0x04e9, - 0x04ef, 0x04f5, 0x04fb, 0x0502, 0x0506, 0x050a, 0x050f, 0x0517, - 0x051d, 0x051d, 0x0525, 0x0525, 0x0529, 0x0530, 0x0530, 0x0537, - // Entry C0 - FF - 0x0537, 0x0545, 0x0551, 0x0557, 0x055e, 0x0567, 0x0567, 0x056e, - 0x056e, 0x056e, 0x0574, 0x0574, 0x0574, 0x0574, 0x0574, 0x057c, - 0x057c, 0x0582, 0x058b, 0x0593, 0x0593, 0x0598, 0x0598, 0x0598, - 0x0598, 0x059f, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, - 0x05ac, 0x05b1, 0x05b5, 0x05b5, 0x05b5, 0x05bc, 0x05bc, 0x05bc, - 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c6, 0x05ca, 0x05ca, 0x05ce, - 0x05ce, 0x05d3, 0x05da, 0x05da, 0x05df, 0x05df, 0x05e6, 0x05e6, - 0x05ed, 0x05f8, 0x0600, 0x0604, 0x0612, 0x0619, 0x0622, 0x062a, - // Entry 100 - 13F - 0x0632, 0x0632, 0x0638, 0x0638, 0x0644, 0x0644, 0x064d, 0x0653, - 0x0659, 0x0659, 0x0661, 0x0667, 0x066d, 0x0672, 0x0672, 0x0677, - 0x0680, 0x0680, 0x0685, 0x0695, 0x0695, 0x069a, 0x069a, 0x069a, - 0x069e, 0x069e, 0x06ab, 0x06b1, 0x06b9, 0x06c7, 0x06c7, 0x06cd, - 0x06cd, 0x06d1, 0x06da, 0x06da, 0x06dd, 0x06dd, 0x06eb, 0x06f7, - 0x06f7, 0x0704, 0x0713, 0x071a, 0x071c, 0x071c, 0x071c, 0x0720, - 0x0725, 0x0725, 0x0729, 0x0733, 0x0733, 0x0741, 0x075a, 0x075a, - 0x075f, 0x0768, 0x076d, 0x0772, 0x077b, 0x078a, 0x078a, 0x078a, - // Entry 140 - 17F - 0x078a, 0x0793, 0x0798, 0x0798, 0x079f, 0x079f, 0x07a9, 0x07b0, - 0x07b5, 0x07bd, 0x07bd, 0x07c1, 0x07c5, 0x07c5, 0x07cc, 0x07d2, - 0x07d2, 0x07d2, 0x07d8, 0x07d8, 0x07d8, 0x07e7, 0x07f3, 0x07f3, - 0x07fd, 0x0803, 0x0809, 0x080c, 0x0811, 0x0815, 0x081d, 0x081d, - 0x0821, 0x0821, 0x0821, 0x0821, 0x0825, 0x0825, 0x082a, 0x0833, - 0x0833, 0x0833, 0x0833, 0x0833, 0x0833, 0x083b, 0x083b, 0x0842, - 0x084a, 0x0850, 0x085f, 0x085f, 0x085f, 0x0867, 0x086d, 0x086d, - 0x086d, 0x086d, 0x0872, 0x0879, 0x087f, 0x087f, 0x0885, 0x088a, - // Entry 180 - 1BF - 0x0892, 0x0892, 0x0892, 0x0892, 0x0892, 0x0892, 0x0899, 0x0899, - 0x089d, 0x089d, 0x089d, 0x08a7, 0x08ae, 0x08b3, 0x08b6, 0x08bc, - 0x08bc, 0x08bc, 0x08bc, 0x08c4, 0x08c4, 0x08ca, 0x08d2, 0x08da, - 0x08e2, 0x08e7, 0x08e7, 0x08ed, 0x08f3, 0x08f8, 0x08f8, 0x08f8, - 0x0908, 0x0908, 0x0908, 0x090e, 0x0919, 0x091f, 0x0927, 0x092d, - 0x0932, 0x0932, 0x0932, 0x093b, 0x0940, 0x0949, 0x0950, 0x0950, - 0x0950, 0x0955, 0x0955, 0x0955, 0x095f, 0x095f, 0x096b, 0x0971, - 0x0975, 0x0979, 0x0979, 0x0979, 0x0979, 0x097e, 0x0989, 0x0989, - // Entry 1C0 - 1FF - 0x098f, 0x099d, 0x099d, 0x09ab, 0x09b3, 0x09bb, 0x09c0, 0x09c5, - 0x09ca, 0x09d6, 0x09e0, 0x09e7, 0x09ef, 0x09f9, 0x09fe, 0x09fe, - 0x09fe, 0x09fe, 0x09fe, 0x0a0a, 0x0a0a, 0x0a12, 0x0a12, 0x0a12, - 0x0a1a, 0x0a1a, 0x0a28, 0x0a28, 0x0a28, 0x0a32, 0x0a39, 0x0a42, - 0x0a42, 0x0a42, 0x0a42, 0x0a48, 0x0a48, 0x0a48, 0x0a48, 0x0a50, - 0x0a50, 0x0a57, 0x0a5c, 0x0a6d, 0x0a6d, 0x0a72, 0x0a79, 0x0a79, - 0x0a79, 0x0a79, 0x0a81, 0x0a85, 0x0a85, 0x0a85, 0x0a85, 0x0a85, - 0x0a85, 0x0a8b, 0x0a8b, 0x0a99, 0x0a99, 0x0a99, 0x0a9d, 0x0a9d, - // Entry 200 - 23F - 0x0aa3, 0x0aa3, 0x0aa3, 0x0aaf, 0x0ab8, 0x0ac2, 0x0acc, 0x0ad3, - 0x0ada, 0x0ae6, 0x0aeb, 0x0aeb, 0x0aeb, 0x0af1, 0x0af5, 0x0afc, - 0x0afc, 0x0b09, 0x0b0e, 0x0b0e, 0x0b0e, 0x0b13, 0x0b13, 0x0b19, - 0x0b1e, 0x0b23, 0x0b26, 0x0b2d, 0x0b2d, 0x0b36, 0x0b3d, 0x0b3d, - 0x0b45, 0x0b52, 0x0b5b, 0x0b5b, 0x0b5b, 0x0b5b, 0x0b64, 0x0b64, - 0x0b6b, 0x0b71, 0x0b71, 0x0b79, 0x0b79, 0x0b7f, 0x0b87, 0x0b8d, - 0x0ba6, 0x0ba9, 0x0ba9, 0x0ba9, 0x0ba9, 0x0ba9, 0x0bae, 0x0bae, - 0x0bae, 0x0bae, 0x0bb4, 0x0bb9, 0x0bbe, 0x0bbe, 0x0bbe, 0x0bc4, - // Entry 240 - 27F - 0x0bc4, 0x0bc4, 0x0bc7, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, 0x0bcd, - 0x0bd4, 0x0be4, 0x0be4, 0x0bea, 0x0bea, 0x0bee, 0x0c09, 0x0c0d, - 0x0c0d, 0x0c0d, 0x0c1d, 0x0c1d, 0x0c2f, 0x0c3f, 0x0c50, 0x0c60, - 0x0c75, 0x0c83, 0x0c83, 0x0c83, 0x0c93, 0x0ca2, 0x0ca2, 0x0ca6, - 0x0cb9, 0x0cca, 0x0cd0, 0x0cdb, 0x0cdb, 0x0cef, 0x0d02, - }, - }, - { // rn - "IgikaniIkimuharikiIcarabuIkibelarusiyaIkinyabuligariyaIkibengaliIgicekeI" + - "kidageIkigerekiIcongerezaIcesipanyoloIgiperisiIgifaransaIgihawusaIgi" + - "hindiIkinyahongiriyaIkinyendoziyaIkiguboIgitaliyaniIkiyapaniIkinyeja" + - "vaIgikambodiyaIkinyakoreyaIkinyamaleziyaIkinyabirimaniyaIkinepaliIgi" + - "holandiIgipunjabiIkinyapolonyeIgiporutugariIkirundiIkinyarumaniyaIki" + - "rusiyaIkinyarwandaIgisomaliIgisuweduwaIgitamiliIkinyatayilandiIgitur" + - "ukiyaIkinyayukereniInyeyuruduIkinyaviyetinamuIkiyorubaIgishinwaIkizu" + - "lu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0012, 0x0012, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0026, 0x0036, - 0x0036, 0x0036, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x0061, 0x0061, 0x006d, - 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, - 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x00a0, 0x00a0, 0x00a0, - // Entry 40 - 7F - 0x00a0, 0x00ad, 0x00ad, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00bf, 0x00bf, 0x00c8, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00de, 0x00de, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00f8, 0x00f8, 0x0108, 0x0108, 0x0108, - 0x0111, 0x0111, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x0125, 0x0125, 0x0132, - // Entry 80 - BF - 0x0132, 0x013f, 0x013f, 0x013f, 0x0147, 0x0155, 0x015e, 0x016a, - 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016a, 0x016a, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, - 0x017e, 0x017e, 0x0187, 0x0187, 0x0187, 0x0196, 0x0196, 0x0196, - 0x0196, 0x0196, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01a1, 0x01af, - 0x01b9, 0x01b9, 0x01b9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, - 0x01c9, 0x01d2, 0x01d2, 0x01db, 0x01e2, - }, - }, - { // ro - roLangStr, - roLangIdx, - }, - { // ro-MD - "wolayttaswahili (R. D. Congo)", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1C0 - 1FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 200 - 23F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - // Entry 240 - 27F - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x001d, - }, - }, - { // rof - "KiakaniKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigi" + - "rikiKiingerezaKihispaniaKiajemiKyifaransaKihausaKihindiKihungariKiin" + - "donesiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKibur" + - "maKinepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwand" + - "aKisomaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuK" + - "iyorubaKichinaKizuluKihorombo", - []uint16{ // 483 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0056, 0x0056, 0x0060, - 0x0060, 0x0060, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0078, - 0x0078, 0x007f, 0x007f, 0x007f, 0x007f, 0x0088, 0x0088, 0x0088, - // Entry 40 - 7F - 0x0088, 0x0093, 0x0093, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, - 0x00a3, 0x00a3, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00b1, 0x00b1, 0x00bb, 0x00bb, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, 0x00c2, - 0x00c2, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00d2, 0x00d2, 0x00d2, - 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f5, - // Entry 80 - BF - 0x00f5, 0x00fb, 0x00fb, 0x00fb, 0x00fb, 0x0104, 0x010a, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, - 0x0124, 0x0124, 0x012b, 0x012b, 0x012b, 0x0135, 0x0135, 0x0135, - 0x0135, 0x0135, 0x013d, 0x013d, 0x013d, 0x013d, 0x013d, 0x0146, - 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, - 0x0157, 0x015f, 0x015f, 0x0166, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry C0 - FF - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry 100 - 13F - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry 140 - 17F - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry 180 - 1BF - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - // Entry 1C0 - 1FF - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, 0x016c, - 0x016c, 0x016c, 0x0175, - }, - }, - { // ru - ruLangStr, - ruLangIdx, - }, - {}, // ru-UA - { // rw - "IkinyafurikaneriInyetuwiInyamuharikiIcyarabuIcyasamiziInyazeribayijaniIk" + - "ibelarusiyaUrunyabuligariyaIkibengaliInyebiritoniInyebosiniyaIgikata" + - "laniIgicekeIkigaluwaIkidaninwaIkidageIkigerekiIcyongerezaIcyesiperan" + - "toIcyesipanyoloIcyesitoniyaIkibasikiInyeperisiIgifinilandeInyefaroyi" + - "ziIgifaransaIgifiriziyaniIkirilandiIkigaluwa cy’IgisweduwaIkigalisiy" + - "aInyaguwaraniInyegujaratiIgiheburayoIgihindiIgikorowasiyaIgihongiriy" + - "aIkinyarumeniyaUrurimi GahuzamiryangoIkinyendoziyaUruhuzandimiIgisil" + - "andeIgitaliyaniIkiyapaniInyejavaInyejeworujiyaIgikambodiyaIgikanadaI" + - "gikoreyaInyekuridishiInkerigiziIkilatiniIlingalaIkilawotiyaniIkilitu" + - "waniyaIkinyaletoviyaniIkimasedoniyaIkimalayalamiIkimongoliIkimaratiI" + - "kimalayiIkimalitezeIkinepaliIkinerilandeInyenoruveji (Nyonorusiki)Ik" + - "inoruvejiInyogusitaniInyoriyaIgipunjabiIgipoloneImpashitoIgiporutuga" + - "liIkinyarumaniyaIkirusiyaKinyarwandaIgisansikiriIgisindiInyesimpalez" + - "eIgisilovakiIkinyasiloveniyaIgisomaliIcyalubaniyaIgiseribeInyesesoto" + - "InyesudaniIgisuweduwaIgiswahiliIgitamiliIgiteluguIgitayiInyatigiriny" + - "aInyeturukimeniIgiturukiyaIkiwiguriIkinyayukereniInyeyuruduInyeyuzub" + - "ekiIkinyaviyetinamuInyehawusaInyeyidishiInyezuluIkinyafilipineInyeki" + - "lingoniInyeporutigali (Brezili)Inyeporutigali (Igiporutigali)Inyeser" + - "ibiya na Korowasiya", - []uint16{ // 612 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0018, 0x0024, 0x0024, - 0x002c, 0x0036, 0x0036, 0x0036, 0x0046, 0x0046, 0x0053, 0x0063, - 0x0063, 0x0063, 0x006d, 0x006d, 0x0079, 0x0085, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0097, 0x0097, 0x0097, 0x00a0, 0x00aa, - 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00ba, 0x00c5, 0x00d2, 0x00df, - 0x00eb, 0x00f4, 0x00fe, 0x00fe, 0x010a, 0x010a, 0x0116, 0x0120, - 0x012d, 0x0137, 0x0150, 0x015b, 0x0167, 0x0173, 0x0173, 0x0173, - 0x017e, 0x0186, 0x0186, 0x0193, 0x0193, 0x019f, 0x01ad, 0x01ad, - // Entry 40 - 7F - 0x01c3, 0x01d0, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01dc, 0x01e6, - 0x01f1, 0x01f1, 0x01fa, 0x0202, 0x0210, 0x0210, 0x0210, 0x0210, - 0x0210, 0x0210, 0x021c, 0x0225, 0x022e, 0x022e, 0x022e, 0x023b, - 0x023b, 0x023b, 0x0245, 0x024e, 0x024e, 0x024e, 0x024e, 0x0256, - 0x0263, 0x0270, 0x0270, 0x0280, 0x0280, 0x0280, 0x0280, 0x028d, - 0x029a, 0x02a4, 0x02ad, 0x02b6, 0x02c1, 0x02c1, 0x02c1, 0x02c1, - 0x02ca, 0x02ca, 0x02d6, 0x02f0, 0x02fb, 0x02fb, 0x02fb, 0x02fb, - 0x0307, 0x0307, 0x0307, 0x030f, 0x030f, 0x0319, 0x0319, 0x0322, - // Entry 80 - BF - 0x032b, 0x0338, 0x0338, 0x0338, 0x0338, 0x0346, 0x034f, 0x035a, - 0x0366, 0x0366, 0x036e, 0x036e, 0x036e, 0x037b, 0x0386, 0x0396, - 0x0396, 0x0396, 0x039f, 0x03ab, 0x03b4, 0x03b4, 0x03be, 0x03c8, - 0x03d3, 0x03dd, 0x03e6, 0x03ef, 0x03ef, 0x03f6, 0x0403, 0x0411, - 0x0411, 0x0411, 0x041c, 0x041c, 0x041c, 0x041c, 0x0425, 0x0433, - 0x043d, 0x0449, 0x0449, 0x0459, 0x0459, 0x0459, 0x0459, 0x0463, - 0x046e, 0x046e, 0x046e, 0x046e, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - // Entry C0 - FF - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - // Entry 100 - 13F - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, 0x0476, - 0x0476, 0x0476, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - // Entry 140 - 17F - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - // Entry 180 - 1BF - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - // Entry 1C0 - 1FF - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - // Entry 200 - 23F - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, - 0x0484, 0x0484, 0x0484, 0x0484, 0x0484, 0x0491, 0x0491, 0x0491, - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, - // Entry 240 - 27F - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, - 0x04a9, 0x04c7, 0x04c7, 0x04e1, - }, - }, - { // rwk - "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" + - "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" + - "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" + - "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" + - "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" + - "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKir" + - "uwa", - []uint16{ // 489 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, - 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b, - 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085, - 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097, - // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea, - 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111, - // Entry 80 - BF - 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135, - 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, - 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, - 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry C0 - FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 100 - 13F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 140 - 17F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 180 - 1BF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 1C0 - 1FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x019f, - }, - }, - { // sah - "АбхаастыыАппырыкааныстыыАмхаардыыАраабтыыАваардыыАдьырбайдьаанныыБөлөрүү" + - "стүүБулҕаардыыБенгаллыыТибиэттииБосныйалыыКаталаанныыЧэчиэннииЧиэхт" + - "ииДаатскайдыыНиэмэстииГириэктииАаҥыллыыЫспаанныыЭстиэнийэлииПиэрист" + - "ииПииннииБоронсуустууБэҥгиэрдииЭрмээннииЫтаалыйалыыДьоппуоннууКурус" + - "ууннууХаһаахтыыКэриэйдииКыргыстыыЛатыынныыМоҕуоллууМалаайдыыНьыпаал" + - "лыыПандьаабтыыПортугааллыыРумыынныыНууччалыыСловаактыыАлбаанныыТамы" + - "ллыыТөлүгүлүүТадьыыктыыТатаардыыУйгуурдууУкрайыыньыстыыҮзбиэктииКыт" + - "айдыыЗуулулууАлеуттууАстуурдууКиин куурдууПилипииннииНагаайдыысаха " + - "тыла", - []uint16{ // 491 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0012, 0x0012, 0x0030, 0x0030, 0x0042, 0x0042, - 0x0052, 0x0052, 0x0062, 0x0062, 0x0082, 0x0082, 0x0098, 0x00ac, - 0x00ac, 0x00ac, 0x00be, 0x00d0, 0x00d0, 0x00e4, 0x00fa, 0x010c, - 0x010c, 0x010c, 0x010c, 0x011a, 0x011a, 0x011a, 0x011a, 0x0130, - 0x0142, 0x0142, 0x0142, 0x0142, 0x0154, 0x0164, 0x0164, 0x0176, - 0x018e, 0x018e, 0x01a0, 0x01a0, 0x01ae, 0x01ae, 0x01ae, 0x01c6, - 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, - 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01c6, 0x01da, 0x01ec, 0x01ec, - // Entry 40 - 7F - 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, 0x01ec, - 0x0202, 0x0202, 0x0218, 0x0218, 0x022e, 0x022e, 0x022e, 0x022e, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0252, 0x0252, 0x0252, 0x0252, - 0x0252, 0x0252, 0x0264, 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, - 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, 0x0276, - 0x0276, 0x0288, 0x0288, 0x029a, 0x029a, 0x029a, 0x029a, 0x029a, - 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, - 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02ae, 0x02c4, 0x02c4, 0x02c4, - // Entry 80 - BF - 0x02c4, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02ee, 0x0300, 0x0300, - 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0314, 0x0314, - 0x0314, 0x0314, 0x0314, 0x0326, 0x0326, 0x0326, 0x0326, 0x0326, - 0x0326, 0x0326, 0x0336, 0x0348, 0x035c, 0x035c, 0x035c, 0x035c, - 0x035c, 0x035c, 0x035c, 0x035c, 0x036e, 0x036e, 0x0380, 0x039c, - 0x039c, 0x03ae, 0x03ae, 0x03ae, 0x03ae, 0x03ae, 0x03ae, 0x03ae, - 0x03ae, 0x03ae, 0x03ae, 0x03be, 0x03ce, 0x03ce, 0x03ce, 0x03ce, - 0x03ce, 0x03ce, 0x03ce, 0x03ce, 0x03ce, 0x03ce, 0x03ce, 0x03de, - // Entry C0 - FF - 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, - 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03de, 0x03f0, - 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, - 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, - 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, - 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, - 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, - 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, 0x03f0, - // Entry 100 - 13F - 0x03f0, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, - 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, - 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, - 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, - 0x0407, 0x0407, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - // Entry 140 - 17F - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - // Entry 180 - 1BF - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x042f, 0x042f, 0x042f, - // Entry 1C0 - 1FF - 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, - 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, - 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, - 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, - 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, 0x042f, - 0x042f, 0x042f, 0x0440, - }, - }, - { // saq - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluKisampur", - []uint16{ // 493 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, - // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, - // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 140 - 17F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 180 - 1BF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 1C0 - 1FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0171, - }, - }, - { // sbp - "IshiyakaniIshiyamuhaliIshiyalabuIshibelalusiIshibulugaliaIshibangilaIshi" + - "shekiIshijelumaniIshigilikiIshingelesaIshihisipaniyaIshiajemiIshifal" + - "ansaIshihawusaIshihindiIshihungaliIshihindonesiaIshihigiboIshihitali" + - "yanoIshijapaniIshijavaIshikambodiaIshikoleyaIshimalesiyaIshibulumaIs" + - "hinepaliIshiholansiIshipunjabiIshipolandiIshilenoIshilomaniyaIshilus" + - "iIshinyalwandaIshisomaliIshiswidiIshitamiliIshitayilandiIshitulukiIs" + - "hiyukilaniyaIshiwuludiIshivietinamuIshiyolubaIshishinaIshisuluIshisa" + - "ngu", - []uint16{ // 498 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0016, 0x0016, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002c, 0x0039, - 0x0039, 0x0039, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0063, 0x006e, 0x006e, 0x007c, - 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x009a, - 0x009a, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00ae, 0x00ae, 0x00ae, - // Entry 40 - 7F - 0x00ae, 0x00bc, 0x00bc, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00d4, 0x00d4, 0x00de, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00e6, 0x00e6, 0x00f2, 0x00f2, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x0108, 0x0108, 0x0112, 0x0112, 0x0112, - 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0132, 0x0132, 0x013d, - // Entry 80 - BF - 0x013d, 0x0145, 0x0145, 0x0145, 0x0145, 0x0151, 0x0159, 0x0166, - 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0166, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, - 0x0179, 0x0179, 0x0183, 0x0183, 0x0183, 0x0190, 0x0190, 0x0190, - 0x0190, 0x0190, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a8, - 0x01b2, 0x01b2, 0x01b2, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01bf, - 0x01bf, 0x01c9, 0x01c9, 0x01d2, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry C0 - FF - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry 100 - 13F - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry 140 - 17F - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry 180 - 1BF - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - // Entry 1C0 - 1FF - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01e3, - }, - }, - { // sd - "افارابقازیانآفريڪياڪانامهاريارگنيعربيآسامياويرسایماراآزربائيجانيبشڪربيلا" + - "روسيبلغاريائيبسلامابمبارابنگلاتبيتائيبريٽنبوسنيائيڪيٽالانچیچنچموروڪ" + - "ارسيڪائيچيڪچرچ سلاویچو واشويلشڊينشجرمندويهيزونخاايويونانيانگريزيايس" + - "پرانٽواسپينيايستونائيباسڪيفارسيفلاههفنشفجيفيروايسفرانسيمغربي فريشنآ" + - "ئرشاسڪاٽش گيلڪگليشئينگوارانيگجراتيمينڪسهوساعبرانيهنديڪروشيائيهيٽي ڪ" + - "روليهنگريارمانيهريروانٽرلنگئاانڊونيشياگبوسچوان ييادوآئيس لينڊڪاطالو" + - "يانو ڪتوتجاپانيجاونيزجارجيناڪويوڪنياماقازقڪالا ليسٽخمرڪناڊاڪوريائيڪ" + - "نوريڪشميريڪرديڪوميڪورنشڪرغيزلاطينيلگزمبرگگاندالمبرگشلنگالالائوليٿون" + - "يائيلوبا-ڪتانگالاتوينملاگاسيمارشليزمائوريميسي ڊونيائيمليالممنگوليمر" + - "اٺيمليمالٽيبرمينائواتر دبيلينيپاليڊونگاڊچنارويائي نيوناسڪنارويائي ب" + - "وڪمالڏکڻ دبيلينواجونيانجاآڪسيٽناورومواوڊيااوسيٽڪپنجابيپولشپشتوپرتگا" + - "ليڪيچوارومانشرونڊيرومانيروسيڪنيار وانڊاسنسڪرتسارڊينيسنڌياتر ساميسان" + - "گوسنهالاسلواڪيسلووينيساموآنشوناسوماليالبانيسربيائيسواتيڏکڻ سوٿيسوڊا" + - "نيسويڊنيسواحيليتاملتلگوتاجڪيٿائيتگرينيائيترڪمانيتسواناتونگنترڪسونگا" + - "تاتريتاهيتييوغوريوڪرانياردوازبڪوينڊاويتناميوالپڪولونوولفزھوسايدشيور" + - "وباچينيزولواچائينيزادنگمياديگهياگهيمآئينواليوٽڏکڻ التائيانجيڪاماپوچ" + - "ياراپائواسواسٽوريناواڌيباليباسابيمبابيناڀوجپوريبنيسڪسڪابودوبگنيزبلن" + - "سبوانوچگاچڪيزماريچوڪ توچروڪيچايانمرڪزي ڪردشسيسلوا ڪريئول فرانسيڊڪوٽ" + - "اڊارگواتائيتاداگربزارمالوئر سوربينڊيولاجولا فونيدزاگاايمبيوايفڪايڪا" + - "جڪاوانڊوفلپائنيفونفرائي لئينگاجيزگلبرٽيزگورنٽلوسوئس جرمنگشيگوچنهوائ" + - "يهلي گيانانمونگاپر سربيائيهوپاايبنابيبيوالوڪوانگشلوجبيننغومباميڪمڪب" + - "ائلڪچنپوڪيپسيڪئمباڪبارڊيئنتياپمڪونديڪيبيو ويرڊيانوڪوروخاسيڪيورا چني" + - "ڪڪوڪيلين جنڪمبونڊوڪونڪيڪپيلڪراچي بالڪرڪريلئينڪورخشمبالابافياڪلونئين" + - "ڪومڪلڊينولانگيليزگهينلڪوٽالوزياتر لوريلوبا-لولوالنڊالوميزولوهيامدور" + - "ائيمگاهيميٿليمڪاسرمسائيموڪشامينڊيميروموریسیینمخووا ميتوميتاميڪ مڪمن" + - "اڪابواماني پوريموهاڪموسيمن دانگهڪ کان وڌيڪ ٻوليونڪريڪمرانڊيزايريزيا" + - "مزيندرانينيپولٽننامانيوارينياسنوويڪويسيونغيمبوننوگائينڪواتر سوٿونيو" + - "رنايانڪولپانگا سينانپيم پينگاپاپي امينٽوپلوننائيجرين پجنپرشنڪچيريپن" + - "وئيريرو ٽينگورومبوارومينينرواسنداويساخاسيمبوروسنتالينغمبيسانگووسسلي" + - "اسڪاٽسسيناڪيورابورو سينيتيچل هاتيشانڏکڻ ساميلولي سامياناري سامياسڪا" + - "ٽ ساميسونينڪيسرانن تانگوسهوسڪوماڪمورينشاميتمنيتيسوتيتمتگريڪلونتاڪ پ" + - "سنتاروڪوتمبوڪاتوالوتساوڪيتووينيائيوچ اٽلس تمازائيٽادمورتيااومبنڊواڻ" + - "ڄاتل ٻوليياونجووالسروولايٽاواريڪيلمڪسوگايانگ بينييمباڪينٽونيزمعياري" + - " مراڪشي تامازائيٽزونيڪوئي ٻولي جو مواد ڪونهيزازاجديد معياري عربيآسٽر" + - "يائي جرمنen (آسٽريليا)يورپي اسپينيفلیمشبرازيلي پرتگالييورپي پرتگالي" + - "مالديويڪونگو سواحيلي", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x0018, 0x0018, 0x0024, 0x002c, 0x0038, 0x0042, - 0x004a, 0x0054, 0x005e, 0x006a, 0x0080, 0x0088, 0x0098, 0x00aa, - 0x00b6, 0x00c2, 0x00cc, 0x00da, 0x00e4, 0x00f4, 0x0102, 0x010a, - 0x0114, 0x0126, 0x0126, 0x012c, 0x013d, 0x0148, 0x0150, 0x0158, - 0x0160, 0x016a, 0x0174, 0x017a, 0x0186, 0x0194, 0x01a6, 0x01b2, - 0x01c4, 0x01ce, 0x01d8, 0x01e2, 0x01e8, 0x01ee, 0x01fc, 0x0208, - 0x021d, 0x0225, 0x023a, 0x0248, 0x0256, 0x0262, 0x026c, 0x0274, - 0x0280, 0x0288, 0x0288, 0x0298, 0x02ab, 0x02b5, 0x02c1, 0x02cb, - // Entry 40 - 7F - 0x02dd, 0x02ed, 0x02ed, 0x02f5, 0x0304, 0x0304, 0x030a, 0x031d, - 0x0329, 0x0338, 0x0344, 0x0350, 0x035c, 0x035c, 0x0366, 0x0372, - 0x037a, 0x038b, 0x0391, 0x039b, 0x03a9, 0x03b3, 0x03bf, 0x03c7, - 0x03cf, 0x03d9, 0x03e3, 0x03ef, 0x03fd, 0x0407, 0x0413, 0x041f, - 0x0427, 0x0439, 0x044e, 0x045a, 0x0468, 0x0476, 0x0482, 0x0499, - 0x04a5, 0x04b1, 0x04bb, 0x04c1, 0x04cb, 0x04d3, 0x04db, 0x04ec, - 0x04f8, 0x0502, 0x0506, 0x0525, 0x0542, 0x0553, 0x055d, 0x0569, - 0x0575, 0x0575, 0x0581, 0x058b, 0x0597, 0x05a3, 0x05a3, 0x05ab, - // Entry 80 - BF - 0x05b3, 0x05c1, 0x05cb, 0x05d7, 0x05e1, 0x05ed, 0x05f5, 0x060a, - 0x0616, 0x0624, 0x062c, 0x063b, 0x0645, 0x0651, 0x065d, 0x066b, - 0x0677, 0x067f, 0x068b, 0x0697, 0x06a5, 0x06af, 0x06be, 0x06ca, - 0x06d6, 0x06e4, 0x06ec, 0x06f4, 0x06fe, 0x0706, 0x0718, 0x0726, - 0x0732, 0x073c, 0x0742, 0x074c, 0x0756, 0x0762, 0x076c, 0x077a, - 0x0782, 0x078a, 0x0794, 0x07a2, 0x07ac, 0x07b4, 0x07bc, 0x07c6, - 0x07cc, 0x07d8, 0x07d8, 0x07e0, 0x07e8, 0x07f8, 0x07f8, 0x0804, - 0x0810, 0x0810, 0x0810, 0x081a, 0x0824, 0x0824, 0x0824, 0x082e, - // Entry C0 - FF - 0x082e, 0x0841, 0x0841, 0x084d, 0x084d, 0x0859, 0x0859, 0x0867, - 0x0867, 0x0867, 0x0867, 0x0867, 0x0867, 0x086d, 0x086d, 0x087b, - 0x087b, 0x0885, 0x0885, 0x088d, 0x088d, 0x0895, 0x0895, 0x0895, - 0x0895, 0x0895, 0x089f, 0x089f, 0x08a7, 0x08a7, 0x08a7, 0x08a7, - 0x08b5, 0x08b5, 0x08bb, 0x08bb, 0x08bb, 0x08c5, 0x08c5, 0x08c5, - 0x08c5, 0x08c5, 0x08cd, 0x08cd, 0x08cd, 0x08d7, 0x08d7, 0x08dd, - 0x08dd, 0x08dd, 0x08dd, 0x08dd, 0x08dd, 0x08dd, 0x08e9, 0x08ef, - 0x08ef, 0x08ef, 0x08f7, 0x08ff, 0x08ff, 0x090a, 0x090a, 0x0914, - // Entry 100 - 13F - 0x091e, 0x0931, 0x0931, 0x0931, 0x0931, 0x0957, 0x0957, 0x0961, - 0x096d, 0x0979, 0x0979, 0x0979, 0x0983, 0x0983, 0x098d, 0x098d, - 0x09a2, 0x09a2, 0x09ac, 0x09ac, 0x09bd, 0x09bd, 0x09c7, 0x09d3, - 0x09db, 0x09db, 0x09db, 0x09e7, 0x09e7, 0x09e7, 0x09e7, 0x09f3, - 0x09f3, 0x09f3, 0x0a01, 0x0a01, 0x0a07, 0x0a07, 0x0a07, 0x0a07, - 0x0a07, 0x0a07, 0x0a07, 0x0a1a, 0x0a1e, 0x0a1e, 0x0a1e, 0x0a1e, - 0x0a1e, 0x0a1e, 0x0a24, 0x0a32, 0x0a32, 0x0a32, 0x0a32, 0x0a32, - 0x0a32, 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a51, 0x0a51, 0x0a51, - // Entry 140 - 17F - 0x0a57, 0x0a5f, 0x0a5f, 0x0a5f, 0x0a69, 0x0a69, 0x0a7c, 0x0a7c, - 0x0a84, 0x0a99, 0x0a99, 0x0aa1, 0x0aa9, 0x0ab5, 0x0abf, 0x0ac7, - 0x0ac7, 0x0ac7, 0x0ad3, 0x0adf, 0x0ae7, 0x0ae7, 0x0ae7, 0x0ae7, - 0x0ae7, 0x0af1, 0x0af7, 0x0b05, 0x0b0f, 0x0b0f, 0x0b1f, 0x0b1f, - 0x0b27, 0x0b33, 0x0b4e, 0x0b4e, 0x0b56, 0x0b56, 0x0b5e, 0x0b5e, - 0x0b6f, 0x0b6f, 0x0b6f, 0x0b75, 0x0b84, 0x0b92, 0x0b92, 0x0b9c, - 0x0b9c, 0x0ba4, 0x0bb9, 0x0bb9, 0x0bb9, 0x0bc7, 0x0bcf, 0x0bdb, - 0x0be5, 0x0bf3, 0x0bfb, 0x0bfb, 0x0c05, 0x0c0f, 0x0c0f, 0x0c0f, - // Entry 180 - 1BF - 0x0c1d, 0x0c1d, 0x0c1d, 0x0c1d, 0x0c27, 0x0c27, 0x0c27, 0x0c27, - 0x0c2f, 0x0c3e, 0x0c3e, 0x0c51, 0x0c51, 0x0c59, 0x0c5d, 0x0c65, - 0x0c6f, 0x0c6f, 0x0c6f, 0x0c7d, 0x0c7d, 0x0c87, 0x0c91, 0x0c9b, - 0x0c9b, 0x0ca5, 0x0ca5, 0x0caf, 0x0caf, 0x0cb9, 0x0cc1, 0x0cd1, - 0x0cd1, 0x0ce4, 0x0cec, 0x0cf7, 0x0d07, 0x0d07, 0x0d18, 0x0d22, - 0x0d2a, 0x0d2a, 0x0d37, 0x0d58, 0x0d60, 0x0d6e, 0x0d6e, 0x0d6e, - 0x0d6e, 0x0d7c, 0x0d8e, 0x0d8e, 0x0d9c, 0x0da4, 0x0da4, 0x0db0, - 0x0db8, 0x0dc0, 0x0dc0, 0x0dcc, 0x0dda, 0x0de6, 0x0de6, 0x0de6, - // Entry 1C0 - 1FF - 0x0dec, 0x0dfb, 0x0e03, 0x0e03, 0x0e03, 0x0e13, 0x0e13, 0x0e13, - 0x0e13, 0x0e13, 0x0e28, 0x0e28, 0x0e39, 0x0e4e, 0x0e56, 0x0e56, - 0x0e6d, 0x0e6d, 0x0e6d, 0x0e6d, 0x0e6d, 0x0e6d, 0x0e6d, 0x0e6d, - 0x0e6d, 0x0e75, 0x0e75, 0x0e7b, 0x0e7b, 0x0e7b, 0x0e89, 0x0e9c, - 0x0e9c, 0x0e9c, 0x0ea6, 0x0ea6, 0x0ea6, 0x0ea6, 0x0ea6, 0x0eb6, - 0x0ebc, 0x0ec8, 0x0ed0, 0x0ed0, 0x0ede, 0x0ede, 0x0eea, 0x0eea, - 0x0ef4, 0x0f00, 0x0f08, 0x0f14, 0x0f14, 0x0f14, 0x0f14, 0x0f1c, - 0x0f1c, 0x0f1c, 0x0f37, 0x0f37, 0x0f37, 0x0f48, 0x0f4e, 0x0f4e, - // Entry 200 - 23F - 0x0f4e, 0x0f4e, 0x0f4e, 0x0f5d, 0x0f6e, 0x0f81, 0x0f94, 0x0fa2, - 0x0fa2, 0x0fb7, 0x0fb7, 0x0fbd, 0x0fbd, 0x0fc7, 0x0fc7, 0x0fc7, - 0x0fd3, 0x0fd3, 0x0fdb, 0x0fdb, 0x0fdb, 0x0fe3, 0x0feb, 0x0feb, - 0x0ff3, 0x0ffb, 0x0ffb, 0x0ffb, 0x0ffb, 0x1003, 0x1003, 0x1003, - 0x1003, 0x1003, 0x1010, 0x1010, 0x101c, 0x101c, 0x101c, 0x101c, - 0x1028, 0x1032, 0x103e, 0x1050, 0x106e, 0x107e, 0x107e, 0x108c, - 0x10a1, 0x10a5, 0x10a5, 0x10a5, 0x10a5, 0x10a5, 0x10a5, 0x10a5, - 0x10ad, 0x10b7, 0x10c5, 0x10cd, 0x10cd, 0x10cd, 0x10cd, 0x10d7, - // Entry 240 - 27F - 0x10d7, 0x10df, 0x10df, 0x10df, 0x10ee, 0x10f8, 0x10f8, 0x1108, - 0x1108, 0x1108, 0x1108, 0x1108, 0x1134, 0x113c, 0x1166, 0x116e, - 0x118c, 0x118c, 0x11a5, 0x11a5, 0x11ba, 0x11ba, 0x11ba, 0x11ba, - 0x11ba, 0x11d1, 0x11d1, 0x11d1, 0x11d1, 0x11d1, 0x11d1, 0x11db, - 0x11f8, 0x1211, 0x121f, 0x121f, 0x1238, - }, - }, - { // se - "afrikánsagiellaaragoniagiellaarábagiellavilges-ruoššagiellabulgáriagiell" + - "abengalgiellatibetagiellabretonagiellabosniagiellakatalánagiellacors" + - "icagiellačeahkagiellakymragielladánskkagielladuiskkagielladivehigiel" + - "ladzongkhagiellagreikkagiellaeaŋgalsgiellaspánskkagiellaesttegiellap" + - "ersijagiellasuomagiellafidjigiellafearagiellafránskkagiellaoarjifrii" + - "sagiellaiirragiellagujaratagiellamanksgiellahaussagiellahindigiellak" + - "roátiagiellahaitigiellaungárgiellaarmeenagiellaindonesiagiellaislánd" + - "dagiellaitáliagiellajapánagiellajavagiellageorgiagiellakazakgiellaka" + - "mbodiagiellakoreagiellakurdigiellakomigiellakornagiellaláhtengiellal" + - "uxemburggagiellalaogiellaliettuvagiellalátviagiellamaorigiellamakedo" + - "niagiellamongoliagiellamaltagiellaburmagiellanepaligiellahollánddagi" + - "ellaođđadárogiellagirjedárogiellaoksitánagiellapanjabigiellapolskkag" + - "iellaportugálagiellaromanšgiellaromániagiellaruoššagiellasardigiella" + - "davvisámegiellaslovákiagiellaslovenagiellasamoagiellaalbánagiellaser" + - "biagiellaruoŧagiellaŧaigielladurkagiellatahitigiellaukrainagiellaurd" + - "ugiellavietnamgiellavallonagiellakiinnágiellaacehgiellaboares eaŋgal" + - "asgiellaasturiagiellamarigiellafilippiinnagiellahawaiigiellagárjilgi" + - "ellamokšagiellaersagiellasisiliagiellaselkupagiellalullisámegiellaju" + - "levsámegiellaanárašgiellanuortalašgiellashimaorigiellaudmurtagiellad" + - "ovdameahttun giellakantongiellaserbokroatiagiellaálki kiinágiellaárb" + - "evirolaš kiinnágiella", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, 0x001e, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x003f, 0x004e, - 0x004e, 0x004e, 0x005a, 0x0066, 0x0073, 0x007f, 0x008e, 0x008e, - 0x008e, 0x009b, 0x009b, 0x00a8, 0x00a8, 0x00a8, 0x00b3, 0x00c1, - 0x00ce, 0x00da, 0x00e8, 0x00e8, 0x00f5, 0x0103, 0x0103, 0x0112, - 0x011d, 0x011d, 0x012a, 0x012a, 0x0135, 0x0140, 0x014b, 0x015a, - 0x016b, 0x0176, 0x0176, 0x0176, 0x0176, 0x0184, 0x018f, 0x019b, - 0x019b, 0x01a6, 0x01a6, 0x01b4, 0x01bf, 0x01cb, 0x01d8, 0x01d8, - // Entry 40 - 7F - 0x01d8, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01e7, 0x01f6, - 0x0203, 0x0203, 0x0210, 0x021a, 0x0227, 0x0227, 0x0227, 0x0227, - 0x0232, 0x0232, 0x0240, 0x0240, 0x024b, 0x024b, 0x024b, 0x0256, - 0x0260, 0x026b, 0x026b, 0x0278, 0x0289, 0x0289, 0x0289, 0x0289, - 0x0292, 0x02a0, 0x02a0, 0x02ad, 0x02ad, 0x02ad, 0x02b8, 0x02c7, - 0x02c7, 0x02d5, 0x02d5, 0x02d5, 0x02e0, 0x02eb, 0x02eb, 0x02eb, - 0x02f7, 0x02f7, 0x0307, 0x0318, 0x0328, 0x0328, 0x0328, 0x0328, - 0x0337, 0x0337, 0x0337, 0x0337, 0x0337, 0x0344, 0x0344, 0x0351, - // Entry 80 - BF - 0x0351, 0x0361, 0x0361, 0x036e, 0x036e, 0x037c, 0x038a, 0x038a, - 0x038a, 0x0395, 0x0395, 0x03a5, 0x03a5, 0x03a5, 0x03b4, 0x03c1, - 0x03cc, 0x03cc, 0x03cc, 0x03d9, 0x03e5, 0x03e5, 0x03e5, 0x03e5, - 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03f1, 0x03fb, 0x03fb, 0x03fb, - 0x03fb, 0x03fb, 0x0406, 0x0406, 0x0406, 0x0412, 0x0412, 0x041f, - 0x0429, 0x0429, 0x0429, 0x0436, 0x0436, 0x0443, 0x0443, 0x0443, - 0x0443, 0x0443, 0x0443, 0x0450, 0x0450, 0x045a, 0x045a, 0x045a, - 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, 0x045a, - // Entry C0 - FF - 0x045a, 0x045a, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, - 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x0470, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, 0x047d, - 0x047d, 0x047d, 0x047d, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, - // Entry 100 - 13F - 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, - 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, - 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, - 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, 0x0487, - 0x0487, 0x0487, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, - 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, - 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, - 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, 0x0498, - // Entry 140 - 17F - 0x0498, 0x0498, 0x0498, 0x0498, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, - 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04a4, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - // Entry 180 - 1BF - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, 0x04b1, - 0x04b1, 0x04b1, 0x04b1, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, - 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, - 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, 0x04bd, - 0x04bd, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - // Entry 1C0 - 1FF - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, 0x04c7, - 0x04c7, 0x04c7, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, 0x04d4, - 0x04d4, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, 0x04e1, - // Entry 200 - 23F - 0x04e1, 0x04e1, 0x04e1, 0x04f1, 0x0501, 0x050f, 0x051f, 0x051f, - 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, 0x051f, - 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, - 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, - 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, - 0x052d, 0x052d, 0x052d, 0x052d, 0x052d, 0x053a, 0x053a, 0x053a, - 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, - 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, - // Entry 240 - 27F - 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x054e, 0x055a, - 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, - 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, - 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, 0x055a, - 0x055a, 0x055a, 0x055a, 0x056c, 0x056c, 0x057e, 0x0599, - }, - }, - { // se-FI - "vilgesruoššagiellabengalagiellafižigiellaarmenagiellakazakhgiellakamboža" + - "giellanepalagiellapanjabagiellathaigiellavietnamagiellaačehgiellakom" + - "oragiellastandárda arábagiellanuortariikkalaš duiskkagiellašveicalaš" + - " duiskkagiellaaustrálialaš eaŋgalsgiellakanádalaš eaŋgalsgiellabriht" + - "talaš eaŋgalsgiellaamerihkálaš eaŋgalsgiellalatiinna-amerihkalaš spá" + - "nskkagiellaespánjalaš spánskkagiellameksikolaš spánskkagiellakanádal" + - "aš fránskkagiellašveicalaš fránskkagiellabelgialaš hollánddagiellabr" + - "asilialaš portugálagiellaportugálalaš portugálagiellamoldávialaš rom" + - "ániagiellaálkes kiinnágiella", - []uint16{ // 614 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0038, 0x0038, - // Entry 40 - 7F - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0044, 0x0044, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x006b, 0x006b, 0x006b, - // Entry 80 - BF - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - // Entry C0 - FF - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - // Entry 100 - 13F - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - // Entry 140 - 17F - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - // Entry 180 - 1BF - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - // Entry 1C0 - 1FF - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - // Entry 200 - 23F - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, 0x008e, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - // Entry 240 - 27F - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x00b1, 0x00b1, 0x00cf, 0x00e8, 0x0105, 0x011f, 0x0139, 0x0155, - 0x017a, 0x0196, 0x01b1, 0x01b1, 0x01cc, 0x01e7, 0x01e7, 0x0202, - 0x021f, 0x023e, 0x025a, 0x025a, 0x025a, 0x026e, - }, - }, - { // seh - "akanamáricoárabebielo-russobúlgarobengalitchecoalemãogregoinglêsespanhol" + - "persafrancêshausahindihúngaroindonésioiboitalianojaponêsjavanêscmerc" + - "oreanomalaiobirmanêsnepalêsholandêspanjabipolonêsportuguêsromenoruss" + - "okinyarwandasomalisuecotâmiltailandêsturcoucranianourduvietnamitaior" + - "ubáchinêszulusena", - []uint16{ // 504 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000c, 0x000c, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001d, 0x0025, - 0x0025, 0x0025, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0039, 0x0039, 0x0039, 0x0039, 0x003e, 0x0045, 0x0045, 0x004d, - 0x004d, 0x004d, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005f, - 0x005f, 0x0064, 0x0064, 0x0064, 0x0064, 0x006c, 0x006c, 0x006c, - // Entry 40 - 7F - 0x006c, 0x0076, 0x0076, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, - 0x0081, 0x0081, 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, - 0x0091, 0x0091, 0x0095, 0x0095, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab, - 0x00b3, 0x00b3, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00c3, 0x00c3, 0x00cb, - // Entry 80 - BF - 0x00cb, 0x00d5, 0x00d5, 0x00d5, 0x00d5, 0x00db, 0x00e0, 0x00eb, - 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, - 0x00eb, 0x00eb, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, - 0x00f6, 0x00f6, 0x00fc, 0x00fc, 0x00fc, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, - 0x0118, 0x0118, 0x0118, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, - 0x0122, 0x0129, 0x0129, 0x0130, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - // Entry C0 - FF - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - // Entry 100 - 13F - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - // Entry 140 - 17F - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - // Entry 180 - 1BF - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - // Entry 1C0 - 1FF - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0134, 0x0138, - }, - }, - { // ses - "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + - " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + - "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + - "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senniKoree" + - " senniMaleezi senniBurme senniNeepal senniHolandee senniPunjaabi sen" + - "niiPolonee senniPortugee senniRumaani senniRuusi senniRwanda senniSo" + - "maali senniSuweede senniTamil senniTaailandu senniTurku senniUkreen " + - "senniUrdu senniVietnaam senniYorbance senniSinuwa senni, MandareŋZul" + - "u senniKoyraboro senni", - []uint16{ // 507 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, - 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, - 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, - 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, - // Entry 40 - 7F - 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0111, 0x0111, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x011c, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134, - 0x0140, 0x0140, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, - 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x015d, 0x015d, 0x016a, - // Entry 80 - BF - 0x016a, 0x0178, 0x0178, 0x0178, 0x0178, 0x0185, 0x0190, 0x019c, - 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, - 0x019c, 0x019c, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, - 0x01b6, 0x01b6, 0x01c1, 0x01c1, 0x01c1, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01d0, 0x01db, 0x01db, 0x01db, 0x01db, 0x01db, 0x01e7, - 0x01f1, 0x01f1, 0x01f1, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, - 0x01ff, 0x020d, 0x020d, 0x0224, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - // Entry C0 - FF - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - // Entry 100 - 13F - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - // Entry 140 - 17F - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - // Entry 180 - 1BF - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - // Entry 1C0 - 1FF - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, 0x022e, - 0x022e, 0x022e, 0x023d, - }, - }, - { // sg - "AkâanAmarîkiArâboBielörûsiBulugäriBengäliTyêkiZâmaniGerêkiAnglëeEspanyöl" + - "FarsîFarânziHaüsäHîndiHongruäaEnndonezïiÏgböÊnndeZaponëeZavanëeKmêre" + - "KoreyëenMalëeMiamära, BirimäniNepalëeHolandëePenzäbïPolonëePortugëe," + - " PûraRumëenRûsiRuandäaSängöSomalïiSueduäaTämûliThâiTûrûkuUkrêniÛrduV" + - "ietnämYorubaShinuäaZûlu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001f, 0x0028, - 0x0028, 0x0028, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x003d, 0x003d, 0x003d, 0x003d, 0x0044, 0x004b, 0x004b, 0x0054, - 0x0054, 0x0054, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0069, - 0x0069, 0x006f, 0x006f, 0x006f, 0x006f, 0x0078, 0x0078, 0x0078, - // Entry 40 - 7F - 0x0078, 0x0083, 0x0083, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - 0x008f, 0x008f, 0x0097, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x009f, 0x00a5, 0x00a5, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00b4, 0x00b4, 0x00c7, 0x00c7, 0x00c7, - 0x00cf, 0x00cf, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00e9, - // Entry 80 - BF - 0x00e9, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0100, 0x0105, 0x010d, - 0x010d, 0x010d, 0x010d, 0x010d, 0x0114, 0x0114, 0x0114, 0x0114, - 0x0114, 0x0114, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x0124, 0x0124, 0x012c, 0x012c, 0x012c, 0x0131, 0x0131, 0x0131, - 0x0131, 0x0131, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0140, - 0x0145, 0x0145, 0x0145, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x0153, 0x0153, 0x015b, 0x0160, - }, - }, - { // shi - "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" + - "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" + - "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴼⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" + - "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" + - "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" + - "ⵓⵔⴷⵓⵜⵜⴰⴼⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵛⵍⵃⵉⵜ", - []uint16{ // 510 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078, - 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111, - 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f, - 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192, - // Entry 40 - 7F - 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, - 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279, - 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, - 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8, - // Entry 80 - BF - 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351, - 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, - 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, - 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd, - 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed, - 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry C0 - FF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 100 - 13F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 140 - 17F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 180 - 1BF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 1C0 - 1FF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0477, - }, - }, - { // shi-Latn - "TakantTamharitTaɛrabtTabilarustTablɣaritTabnɣalitTatcikitTalimantTagrigi" + - "tTangliztTasbnyulitTafursitTafransistTahawsatTahinditTahnɣaritTandun" + - "isitTigbutTaṭalyantTajabbunitTajavanitTaxmirtTakuritTamalawitTabirma" + - "nitTanibalitTahulanditTabnjabitTabulunitTabṛṭqiztTarumanitTarusitTar" + - "uwanditTasumalitTaswiditTatamiltTataylanditTaturkitTukranitTurdutTaf" + - "itnamitTayrubatTacinwitTazulutTashelḥiyt", - []uint16{ // 510 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x002a, - 0x002a, 0x002a, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, - 0x0078, 0x0080, 0x0080, 0x0080, 0x0080, 0x008a, 0x008a, 0x008a, - // Entry 40 - 7F - 0x008a, 0x0094, 0x0094, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x00a5, 0x00a5, 0x00af, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00b8, - 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, 0x00c6, - 0x00c6, 0x00c6, 0x00c6, 0x00cf, 0x00cf, 0x00d9, 0x00d9, 0x00d9, - 0x00e2, 0x00e2, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, - 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00f5, 0x00f5, 0x00fe, - // Entry 80 - BF - 0x00fe, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, 0x011b, 0x0125, - 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0125, - 0x0125, 0x0125, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x0136, 0x0136, 0x013e, 0x013e, 0x013e, 0x0149, 0x0149, 0x0149, - 0x0149, 0x0149, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0159, - 0x015f, 0x015f, 0x015f, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0171, 0x0171, 0x0179, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry C0 - FF - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry 100 - 13F - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry 140 - 17F - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry 180 - 1BF - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - // Entry 1C0 - 1FF - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x018c, - }, - }, - { // si - siLangStr, - siLangIdx, - }, - { // sk - skLangStr, - skLangIdx, - }, - { // sl - slLangStr, - slLangIdx, - }, - { // smn - "afarabhasiakielâafrikaansakankielâamharakielâaragoniakielâarabiakielâass" + - "amkielâavarkielâaymarakielâazerbaidžankielâbaškirkielâvielgisruošâki" + - "elâbulgariakielâbislamabambarakielâbanglakielâtiibetkielâbretonkielâ" + - "bosniakielâkatalankielâtšetšenkielâchamorrokielâkorsikakielâtšeekiki" + - "elâkirkkoslaavitšuvaskielâkymrikielâtanskakielâsaksakielâdivehikielâ" + - "Dzongkhaewekielâkreikakielâeŋgâlâskielâesperantokielâespanjakielâees" + - "tikielâbaskikielâpersiakielâfulakielâsuomâkielâfidžikielâfäärikielâr" + - "anskakielâviestârfriisiiirikielâskottilâš gaelikielâgaliciakielâguar" + - "anikielâgudžaratikielâmankshausakielâhepreakielâhindikielâkroatiakie" + - "lâHaiti kreoliuŋgarkielâarmeniakielâhererokielâinterlinguaindonesiak" + - "ielâigbokielâidoislandkielâitaliakielâinuktitutjaapaankielâjaavakiel" + - "âgeorgiakielâkikujukielâkuanjamakazakkielâkalaallisutkhmerkielâkann" + - "adakoreakielâkanurikielâkashmirkielâkurdikielâkomikielâkornikielâkir" + - "giskielâläättinkielâluxemburgkielâlugandalimburgkielâlingalalaokielâ" + - "liettuakielâkatangalubalatviakielâmalagaskielâmarshallkielâmaorikiel" + - "âmakedoniakielâmalajammongoliakielâmarathikielâmalaijimaltakielâbur" + - "makielânaurukielâtave-nbedelenepalkielândongahollandkielâtárukielâ n" + - "ynorsktárukielâ bokmålmaadâ-nbedelenavajokielânjanžaoksitanoromokiel" + - "âorijaossetkielâpandžabipuolakielâpaštuportugalkielâquechuaretoroom" + - "aankielârundiromaniakielâruošâkielâruandakielâsanskritsardiniakielâs" + - "indhitavekielâsangosinhalaslovakiakielâsloveniakielâsamoakielâshonas" + - "omalikielâalbaniakielâserbiakielâswazikielâmaadâsothosundakielâruotâ" + - "kielâswahilikielâtamilkielâtelugutadžikkielâthaikielâtigrinyakielâtu" + - "rkmenkielâtswanakielâtongakielâtuurkikielâtsongakielâtatarkielâtahit" + - "ikielâuigurkielâukrainakielâurduuzbekkielâvendakielâvietnamkielâvola" + - "pükwalloonkielâwolofkielâxhosakielâjiddishyorubakielâmandarinkiinaki" + - "elâzulukielâatšehkielâadangmeadygeaghemainukielâaleutkielâmaadâaltai" + - "kielâangikamapudungunarapahokielâasukielâasturiakielâawadhikielâbali" + - "kielâbasaakielâbembakielâbenakielâbhožpurikielâbinikielâsiksikakielâ" + - "bodokielâbugikielâblinkielâcebuanokielâkigakielâchuukkielâmarikielâc" + - "hoctawkielâcherokeekielâcheyennekielâsorani kurdikielâSeychellij kre" + - "oliranskadakotakielâdargikielâtaitakielâdogribkielâzarmakielâvyeliso" + - "rbidualakielâjola-fonyidazakielâembukielâefikkielâekajukewondokielâf" + - "ilipinokielâfonkielâfriulikielâgakielâge’ezkiribatikielâgorontalokie" + - "lâtoovláš kreikakielâSveitsi saksakielâgusiikielâgwich’inkielâhawaij" + - "ikielâhiligainokielâhmongkielâpajesorbihupakielâibankielâibibiokielâ" + - "ilocanoinguškielâlojbanngombamachamekabylkielâkachinjjukambakielâkab" + - "ardikielâtyapmakondeKap Verde kreolikorokhasikoyra chiinikakokalenji" + - "kielâkimbundukonkanikpellekielâkarachai-balkarkielâkärjilkielâkurukh" + - "kielâshambalabafiakölnkielâkumykkielâladinokielâlangokielâlezgikielâ" + - "lakotakielâlozitavelurilulualubalundaluolusailuhyamadurakielâmagahim" + - "aithilimakasarmasaikielâmokšakielâmendekielâmerukielâmorisyenmakua-m" + - "eettometa’micmacminangkabaumanipurimohawkkielâmooreviestârmarimundan" + - "gmaŋgâ kielâmuskogeekielâmirandeskielâersäkielâmazandaraninapolikiel" + - "ânamanewariniaskielâniuekielâkwasiongiemboonnogaikielâtoovláš táruk" + - "ielân’kotavesothonuernyankolekielâpangasinankielâpampangakielâpapiam" + - "entupalaukielâNigeria pidgintoovláš preussikielâki’che’rapanuiraroto" + - "ngaromboroomaankielâaromaniakielârwasandawejakutkielâsamburukielâsan" + - "talikielângambaysangusisiliakielâskootikielâsenakoyraboro sennitašel" + - "hitshankielâmaadâsämikielâjuulevsämikielâanarâškielânuorttâlâškielâs" + - "oninkesranantongosahosukumakielâkomorikielâsyyriakielâtemnekielâates" + - "otetumtigrekielâklingonkielâtok pisintarokotumbukakielâtuvalukielâta" + - "sawaqtuvakielâKoskâatlas tamazightudmurtkielâumbundutubdâmettumis ki" + - "elâvaikielâvepsäkielâvunjowalliskielâwolaitakielâwaraykielâkalmukkie" + - "lâsogayangbenyembakantonkielâstandard tamazightzunikielâij kielâlâš " + - "siskáldâszazakielâstandard arabiakielâNuorttâriijkâ saksakielâSveits" + - "i pajesaksakielâAustralia eŋgâlâskielâKanada eŋgâlâskielâBritannia e" + - "ŋgâlâskielâAmerika eŋgâlâskielâLäättin-Amerika espanjakielâEspanja " + - "espanjakielâMeksiko espanjakielâKanada ranskakielâSveitsi ranskakiel" + - "âVuáládâhenâmij saksakielâhollandkielâ (flaami)Brasilia portugalkie" + - "lâPortugal portugalkielâKongo swahilikielâoovtâkiärdánis kiinakielâä" + - "rbivuáválâš kiinakielâ", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x0011, 0x0011, 0x001a, 0x0024, 0x0030, 0x003e, - 0x004a, 0x0055, 0x005f, 0x006b, 0x007d, 0x008a, 0x009e, 0x00ac, - 0x00b3, 0x00c0, 0x00cc, 0x00d8, 0x00e4, 0x00f0, 0x00fd, 0x010c, - 0x011a, 0x0127, 0x0127, 0x0134, 0x0140, 0x014d, 0x0158, 0x0164, - 0x016f, 0x017b, 0x0183, 0x018c, 0x0198, 0x01a8, 0x01b7, 0x01c4, - 0x01cf, 0x01da, 0x01e6, 0x01f0, 0x01fc, 0x0208, 0x0215, 0x0221, - 0x022f, 0x0239, 0x0250, 0x025d, 0x026a, 0x027a, 0x027f, 0x028a, - 0x0296, 0x02a1, 0x02a1, 0x02ae, 0x02ba, 0x02c6, 0x02d3, 0x02df, - // Entry 40 - 7F - 0x02ea, 0x02f9, 0x02f9, 0x0303, 0x0303, 0x0303, 0x0306, 0x0312, - 0x031e, 0x0327, 0x0334, 0x033f, 0x034c, 0x034c, 0x0358, 0x0360, - 0x036b, 0x0376, 0x0381, 0x0388, 0x0393, 0x039f, 0x03ac, 0x03b7, - 0x03c1, 0x03cc, 0x03d8, 0x03e7, 0x03f6, 0x03fd, 0x040a, 0x0411, - 0x041a, 0x0427, 0x0432, 0x043e, 0x044b, 0x0459, 0x0464, 0x0473, - 0x047a, 0x0488, 0x0495, 0x049c, 0x04a7, 0x04b2, 0x04bd, 0x04c9, - 0x04d4, 0x04da, 0x04e7, 0x04fa, 0x050d, 0x051b, 0x0527, 0x052e, - 0x0535, 0x0535, 0x0540, 0x0545, 0x0550, 0x0559, 0x0559, 0x0564, - // Entry 80 - BF - 0x056a, 0x0578, 0x057f, 0x0590, 0x0595, 0x05a2, 0x05af, 0x05bb, - 0x05c3, 0x05d1, 0x05d7, 0x05e1, 0x05e6, 0x05ed, 0x05fb, 0x0609, - 0x0614, 0x0619, 0x0625, 0x0632, 0x063e, 0x0649, 0x0654, 0x065f, - 0x066b, 0x0678, 0x0683, 0x0689, 0x0696, 0x06a0, 0x06ae, 0x06bb, - 0x06c7, 0x06d2, 0x06de, 0x06ea, 0x06f5, 0x0701, 0x070c, 0x0719, - 0x071d, 0x0728, 0x0733, 0x0740, 0x0748, 0x0755, 0x0760, 0x076b, - 0x0772, 0x077e, 0x077e, 0x0791, 0x079b, 0x07a7, 0x07a7, 0x07ae, - 0x07b3, 0x07b3, 0x07b3, 0x07b8, 0x07c2, 0x07c2, 0x07c2, 0x07cd, - // Entry C0 - FF - 0x07cd, 0x07de, 0x07de, 0x07e4, 0x07e4, 0x07ee, 0x07ee, 0x07fb, - 0x07fb, 0x07fb, 0x07fb, 0x07fb, 0x07fb, 0x0804, 0x0804, 0x0811, - 0x0811, 0x081d, 0x081d, 0x0827, 0x0827, 0x0832, 0x0832, 0x0832, - 0x0832, 0x0832, 0x083d, 0x083d, 0x0847, 0x0847, 0x0847, 0x0847, - 0x0856, 0x0856, 0x0860, 0x0860, 0x0860, 0x086d, 0x086d, 0x086d, - 0x086d, 0x086d, 0x0877, 0x0877, 0x0877, 0x0881, 0x0881, 0x088b, - 0x088b, 0x088b, 0x088b, 0x088b, 0x088b, 0x088b, 0x0898, 0x08a2, - 0x08a2, 0x08a2, 0x08ad, 0x08b7, 0x08b7, 0x08c4, 0x08c4, 0x08d2, - // Entry 100 - 13F - 0x08e0, 0x08f2, 0x08f2, 0x08f2, 0x08f2, 0x0909, 0x0909, 0x0915, - 0x0920, 0x092b, 0x092b, 0x092b, 0x0937, 0x0937, 0x0942, 0x0942, - 0x094c, 0x094c, 0x0957, 0x0957, 0x0961, 0x0961, 0x096b, 0x0975, - 0x097f, 0x097f, 0x097f, 0x0985, 0x0985, 0x0985, 0x0985, 0x0991, - 0x0991, 0x0991, 0x099f, 0x099f, 0x09a8, 0x09a8, 0x09a8, 0x09a8, - 0x09a8, 0x09a8, 0x09a8, 0x09b4, 0x09bc, 0x09bc, 0x09bc, 0x09bc, - 0x09bc, 0x09bc, 0x09c3, 0x09d1, 0x09d1, 0x09d1, 0x09d1, 0x09d1, - 0x09d1, 0x09e0, 0x09e0, 0x09e0, 0x09f6, 0x0a09, 0x0a09, 0x0a09, - // Entry 140 - 17F - 0x0a14, 0x0a24, 0x0a24, 0x0a24, 0x0a31, 0x0a31, 0x0a40, 0x0a40, - 0x0a4b, 0x0a54, 0x0a54, 0x0a5e, 0x0a68, 0x0a74, 0x0a7b, 0x0a87, - 0x0a87, 0x0a87, 0x0a8d, 0x0a93, 0x0a9a, 0x0a9a, 0x0a9a, 0x0a9a, - 0x0a9a, 0x0aa5, 0x0aab, 0x0aae, 0x0ab9, 0x0ab9, 0x0ac6, 0x0ac6, - 0x0aca, 0x0ad1, 0x0ae1, 0x0ae1, 0x0ae5, 0x0ae5, 0x0aea, 0x0aea, - 0x0af6, 0x0af6, 0x0af6, 0x0afa, 0x0b07, 0x0b0f, 0x0b0f, 0x0b16, - 0x0b16, 0x0b22, 0x0b37, 0x0b37, 0x0b37, 0x0b44, 0x0b50, 0x0b58, - 0x0b5d, 0x0b68, 0x0b73, 0x0b73, 0x0b7f, 0x0b8a, 0x0b8a, 0x0b8a, - // Entry 180 - 1BF - 0x0b95, 0x0b95, 0x0b95, 0x0b95, 0x0ba1, 0x0ba1, 0x0ba1, 0x0ba1, - 0x0ba5, 0x0bad, 0x0bad, 0x0bb6, 0x0bb6, 0x0bbb, 0x0bbe, 0x0bc3, - 0x0bc8, 0x0bc8, 0x0bc8, 0x0bd4, 0x0bd4, 0x0bda, 0x0be2, 0x0be9, - 0x0be9, 0x0bf4, 0x0bf4, 0x0c00, 0x0c00, 0x0c0b, 0x0c15, 0x0c1d, - 0x0c1d, 0x0c29, 0x0c30, 0x0c36, 0x0c41, 0x0c41, 0x0c49, 0x0c55, - 0x0c5a, 0x0c66, 0x0c6d, 0x0c7b, 0x0c89, 0x0c97, 0x0c97, 0x0c97, - 0x0c97, 0x0ca2, 0x0cad, 0x0cad, 0x0cb9, 0x0cbd, 0x0cbd, 0x0cc3, - 0x0ccd, 0x0cd7, 0x0cd7, 0x0cdd, 0x0ce6, 0x0cf1, 0x0d06, 0x0d06, - // Entry 1C0 - 1FF - 0x0d0c, 0x0d15, 0x0d19, 0x0d19, 0x0d19, 0x0d27, 0x0d27, 0x0d27, - 0x0d27, 0x0d27, 0x0d37, 0x0d37, 0x0d45, 0x0d4f, 0x0d5a, 0x0d5a, - 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, 0x0d68, - 0x0d68, 0x0d7f, 0x0d7f, 0x0d8a, 0x0d8a, 0x0d8a, 0x0d91, 0x0d9a, - 0x0d9a, 0x0d9a, 0x0d9f, 0x0dac, 0x0dac, 0x0dac, 0x0dac, 0x0dba, - 0x0dbd, 0x0dc4, 0x0dcf, 0x0dcf, 0x0ddc, 0x0ddc, 0x0de9, 0x0de9, - 0x0df0, 0x0df5, 0x0e02, 0x0e0e, 0x0e0e, 0x0e0e, 0x0e0e, 0x0e12, - 0x0e12, 0x0e12, 0x0e21, 0x0e21, 0x0e21, 0x0e2a, 0x0e34, 0x0e34, - // Entry 200 - 23F - 0x0e34, 0x0e34, 0x0e34, 0x0e45, 0x0e56, 0x0e64, 0x0e77, 0x0e7e, - 0x0e7e, 0x0e89, 0x0e89, 0x0e8d, 0x0e8d, 0x0e99, 0x0e99, 0x0e99, - 0x0ea5, 0x0ea5, 0x0eb1, 0x0eb1, 0x0eb1, 0x0ebc, 0x0ec1, 0x0ec1, - 0x0ec6, 0x0ed1, 0x0ed1, 0x0ed1, 0x0ed1, 0x0ede, 0x0ede, 0x0ede, - 0x0ede, 0x0ede, 0x0ee7, 0x0ee7, 0x0eed, 0x0eed, 0x0eed, 0x0eed, - 0x0efa, 0x0f06, 0x0f0d, 0x0f17, 0x0f2c, 0x0f38, 0x0f38, 0x0f3f, - 0x0f54, 0x0f5d, 0x0f5d, 0x0f69, 0x0f69, 0x0f69, 0x0f69, 0x0f69, - 0x0f6e, 0x0f7a, 0x0f87, 0x0f92, 0x0f92, 0x0f92, 0x0f92, 0x0f9e, - // Entry 240 - 27F - 0x0f9e, 0x0fa2, 0x0fa2, 0x0fa2, 0x0fa9, 0x0fae, 0x0fae, 0x0fba, - 0x0fba, 0x0fba, 0x0fba, 0x0fba, 0x0fcc, 0x0fd6, 0x0ff0, 0x0ffa, - 0x100f, 0x100f, 0x102a, 0x1041, 0x105b, 0x1072, 0x108c, 0x10a4, - 0x10c3, 0x10d8, 0x10ed, 0x10ed, 0x1100, 0x1114, 0x1132, 0x1148, - 0x115f, 0x1176, 0x1176, 0x1176, 0x1189, 0x11a6, 0x11c3, - }, - }, - { // sn - "chiAkanichiAmaricchiArabuchiBelarusichiBulgarianchiBengalichiCzechchiJer" + - "imanichiGreekChirunguchiSpanishchiPeshiyachiFurenchichiHausachiHindi" + - "chiHungarichiIndonesiachiIgbochiTarianachiJapanichiJavachiKhemachiKo" + - "riachiMalaychiBurmachiNepalichiDutchchiPunjabichiPolishchiPutukezich" + - "iRomanianchiRashiyachiRwandachiShonachiSomalichiSwedishchiTamilchiTh" + - "aichiTurkishchiUkreniachiUrduchiVietnamchiYorubachiChinesechiZulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, - 0x0030, 0x0030, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x004d, 0x004d, 0x004d, 0x004d, 0x0055, 0x005d, 0x005d, 0x0067, - 0x0067, 0x0067, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0084, - 0x0084, 0x008c, 0x008c, 0x008c, 0x008c, 0x0096, 0x0096, 0x0096, - // Entry 40 - 7F - 0x0096, 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00b3, 0x00b3, 0x00bc, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00db, 0x00db, 0x00e3, 0x00e3, 0x00e3, - 0x00ec, 0x00ec, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00fe, 0x00fe, 0x0107, - // Entry 80 - BF - 0x0107, 0x0112, 0x0112, 0x0112, 0x0112, 0x011d, 0x0127, 0x0130, - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, - 0x0130, 0x0138, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, - 0x014b, 0x014b, 0x0153, 0x0153, 0x0153, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x017f, 0x017f, 0x017f, 0x017f, 0x017f, - 0x017f, 0x0188, 0x0188, 0x0192, 0x0199, - }, - }, - { // so - "AkanAxmaariCarabiBeleruusiyaanBulgeeriyaanBangaaliJeegJarmalGiriikIngiri" + - "isiIsbaanishFaarisiFaransiisFiriisiyan GalbeedHawsaHindiHangariyaanI" + - "ndunuusiyaanIgboTalyaaniJabbaaniisJafaaniisKamboodhianKuuriyaanMalaa" + - "yBurmeseNebaaliHolandaysBunjaabiBoolishBoortaqiisRomankaRuushRwandaS" + - "oomaaliSwiidhisTamiilTaaylandaysTurkishYukreeniyaanUrduuFiitnaamaysY" + - "oruubaJayniisZuulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000b, 0x000b, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001e, 0x002a, - 0x002a, 0x002a, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x003c, 0x003c, 0x003c, 0x003c, 0x0042, 0x004b, 0x004b, 0x0054, - 0x0054, 0x0054, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x0064, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x007b, - 0x007b, 0x0080, 0x0080, 0x0080, 0x0080, 0x008b, 0x008b, 0x008b, - // Entry 40 - 7F - 0x008b, 0x0098, 0x0098, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x00a4, 0x00a4, 0x00ae, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, - 0x00b7, 0x00b7, 0x00c2, 0x00c2, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, 0x00cb, - 0x00cb, 0x00cb, 0x00cb, 0x00d1, 0x00d1, 0x00d8, 0x00d8, 0x00d8, - 0x00df, 0x00df, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00f0, 0x00f0, 0x00f7, - // Entry 80 - BF - 0x00f7, 0x0101, 0x0101, 0x0101, 0x0101, 0x0108, 0x010d, 0x0113, - 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, - 0x0113, 0x0113, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x0123, 0x0123, 0x0129, 0x0129, 0x0129, 0x0134, 0x0134, 0x0134, - 0x0134, 0x0134, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x0147, - 0x014c, 0x014c, 0x014c, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, - 0x0157, 0x015e, 0x015e, 0x0165, 0x016a, - }, - }, - { // sq - sqLangStr, - sqLangIdx, - }, - { // sr - srLangStr, - srLangIdx, - }, - { // sr-Cyrl-BA - "бјелорускибамананканбанглахаићански креолскилаошкисинхалскиисикосаисизул" + - "умапудунгуншвајцарски немачкимохокн’којужни шилхацентралноатласки т" + - "амашекстандардни марокански тамашек", - []uint16{ // 589 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, - 0x0014, 0x0028, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0057, 0x0057, 0x0057, 0x0057, - // Entry 40 - 7F - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry 80 - BF - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0091, 0x0091, 0x0091, 0x0091, - 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, - // Entry C0 - FF - 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - // Entry 100 - 13F - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00c8, 0x00c8, 0x00c8, - // Entry 140 - 17F - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - // Entry 180 - 1BF - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - // Entry 1C0 - 1FF - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00f0, 0x00f0, 0x00f0, - // Entry 200 - 23F - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x011f, 0x011f, 0x011f, 0x011f, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, - // Entry 240 - 27F - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, - 0x011f, 0x011f, 0x011f, 0x011f, 0x0157, - }, - }, - { // sr-Cyrl-ME - "бјелорускибамананканбанглафулаххаићански креолскилаошкиисикосаисизулумап" + - "удунгунмохокн’којужни шилхацентралноатласки тамашекстандардни марок" + - "ански тамашек", - []uint16{ // 589 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, - 0x0014, 0x0028, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x0061, 0x0061, 0x0061, 0x0061, - // Entry 40 - 7F - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - // Entry 80 - BF - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - // Entry C0 - FF - 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - // Entry 100 - 13F - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - // Entry 140 - 17F - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - // Entry 180 - 1BF - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x00a7, - 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - // Entry 1C0 - 1FF - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00c5, 0x00c5, 0x00c5, - // Entry 200 - 23F - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - // Entry 240 - 27F - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x00f4, - 0x00f4, 0x00f4, 0x00f4, 0x00f4, 0x012c, - }, - }, - { // sr-Cyrl-XK - "бамананканбанглафулаххаићански креолскилаошкисинхалскиисикосаисизулушвај" + - "царски немачкимохокн’којужни шилхацентралноатласки тамашекстандардн" + - "и марокански тамашек", - []uint16{ // 589 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0014, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x004d, 0x004d, 0x004d, 0x004d, - // Entry 40 - 7F - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - // Entry 80 - BF - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0079, - 0x0079, 0x0079, 0x0079, 0x0079, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - // Entry C0 - FF - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - // Entry 100 - 13F - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x00aa, 0x00aa, 0x00aa, - // Entry 140 - 17F - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - // Entry 180 - 1BF - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - // Entry 1C0 - 1FF - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, - 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00d2, 0x00d2, 0x00d2, - // Entry 200 - 23F - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - // Entry 240 - 27F - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0139, - }, - }, - { // sr-Latn - srLatnLangStr, - srLatnLangIdx, - }, - { // sr-Latn-BA - "bjeloruskibamanankanbanglahaićanski kreolskilaoškisinhalskiisikosaisizul" + - "umapudungunšvajcarski nemačkimohokn’kojužni šilhacentralnoatlaski ta" + - "mašekstandardni marokanski tamašek", - []uint16{ // 589 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, - 0x000a, 0x0014, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x002d, 0x002d, 0x002d, 0x002d, - // Entry 40 - 7F - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - // Entry 80 - BF - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x003d, 0x003d, 0x003d, - 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - // Entry C0 - FF - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - // Entry 100 - 13F - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0069, 0x0069, 0x0069, - // Entry 140 - 17F - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - // Entry 180 - 1BF - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - // Entry 1C0 - 1FF - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0081, 0x0081, 0x0081, - // Entry 200 - 23F - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - // Entry 240 - 27F - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x00b8, - }, - }, - { // sr-Latn-ME - "bjeloruskibamanankanbanglafulahhaićanski kreolskilaoškiisikosaisizulumap" + - "udungunmohokn’kojužni šilhacentralnoatlaski tamašekstandardni maroka" + - "nski tamašek", - []uint16{ // 589 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, - 0x000a, 0x0014, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, 0x001f, - 0x001f, 0x001f, 0x001f, 0x001f, 0x0032, 0x0032, 0x0032, 0x0032, - // Entry 40 - 7F - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, 0x0032, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - // Entry 80 - BF - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - // Entry C0 - FF - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - // Entry 100 - 13F - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - // Entry 140 - 17F - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - // Entry 180 - 1BF - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - // Entry 1C0 - 1FF - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x0069, 0x0069, 0x0069, - // Entry 200 - 23F - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - // Entry 240 - 27F - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x00a0, - }, - }, - { // sr-Latn-XK - "bamanankanbanglafulahhaićanski kreolskilaoškisinhalskiisikosaisizulušvaj" + - "carski nemačkimohokn’kojužni šilhacentralnoatlaski tamašekstandardni" + - " marokanski tamašek", - []uint16{ // 589 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000a, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0028, 0x0028, 0x0028, 0x0028, - // Entry 40 - 7F - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - // Entry 80 - BF - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - // Entry C0 - FF - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - // Entry 100 - 13F - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x005a, 0x005a, 0x005a, - // Entry 140 - 17F - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - // Entry 180 - 1BF - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005f, - 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, - 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, - 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, - // Entry 1C0 - 1FF - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0072, 0x0072, 0x0072, - // Entry 200 - 23F - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - // Entry 240 - 27F - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x00a9, - }, - }, - { // sv - svLangStr, - svLangIdx, - }, - { // sv-FI - "kirgiziska", - []uint16{ // 91 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000a, - }, - }, - { // sw - swLangStr, - swLangIdx, - }, - { // sw-CD - "KiakanKiazabajaniKimanksiKikirigiziKilimburgiKimasedoniaKiyidiKiarabu ch" + - "a AljeriaKibuginiKigwichiinKihupaKilojbanKikachinKikoyra ChiiniKikak" + - "oKikomipermyakKikurukhKikumykKilambamakKimokshaKimikmakiKimohokiKimo" + - "ssiKingiemboonKiinkoPijini ya NijeriaKikiicheKiarabu cha ChadiKitong" + - "o cha SrananKikomoroKisiriaKiudumurtiKiwalserKiarabu cha Dunia Kilic" + - "hosanifishwa", - []uint16{ // 593 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0019, 0x0019, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, - // Entry 40 - 7F - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0019, 0x0023, 0x0023, 0x0023, 0x0023, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - // Entry 80 - BF - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - // Entry C0 - FF - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - // Entry 100 - 13F - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, - // Entry 140 - 17F - 0x0059, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0071, 0x0071, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, - 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, - 0x0087, 0x0087, 0x0087, 0x008d, 0x008d, 0x008d, 0x009a, 0x009a, - 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x009a, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00b0, - // Entry 180 - 1BF - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b3, - 0x00b3, 0x00b3, 0x00b3, 0x00bb, 0x00bb, 0x00bb, 0x00bb, 0x00bb, - 0x00bb, 0x00bb, 0x00bb, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00cc, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry 1C0 - 1FF - 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, - 0x00f5, 0x00f5, 0x00f5, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x010e, - // Entry 200 - 23F - 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, - 0x010e, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0128, 0x0128, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, - 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, - 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, - 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x0139, 0x0139, 0x0139, - 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, - 0x0139, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, - // Entry 240 - 27F - 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, - 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, - 0x0164, - }, - }, - { // sw-KE - "KitwiKiazabajaniKilimbugishKimasedoniaKiodiaKiwaloonAinuKiarabu cha Alje" + - "riaKibuginiKikurdi cha KatiKisorbian cha ChiniKigiriki cha KaleKisor" + - "bia cha JuuKingushiKilojbaniKikachinKikoyra ChiiniKikakoKikomipermya" + - "kKikurukhKilambaKimokshaKimicmacKimohokiKiingiemboonKiin’koPijini ya" + - " NijeriascoKikoyraboro SenniKiarabu cha ChadiKiscran TongoKicomoroKi" + - "syriaLugha ya Central Atlas TamazightKiudumurtiKiwalserTamazight San" + - "ifu ya MorokoKiarabu cha Sasa Kilichosanifishwa", - []uint16{ // 593 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - // Entry 40 - 7F - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - // Entry 80 - BF - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0038, 0x0038, 0x0038, 0x0038, - // Entry C0 - FF - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0053, 0x0053, 0x0053, - 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, - 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, - // Entry 100 - 13F - 0x0053, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0087, 0x0087, 0x0087, 0x0087, - // Entry 140 - 17F - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x009f, - 0x009f, 0x009f, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - 0x00a8, 0x00a8, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00be, 0x00be, 0x00be, 0x00c4, 0x00c4, 0x00c4, 0x00d1, 0x00d1, - 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00e0, - // Entry 180 - 1BF - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0104, 0x0104, 0x0104, 0x0104, - // Entry 1C0 - 1FF - 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, - 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, - 0x0121, 0x0121, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0143, - // Entry 200 - 23F - 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, 0x0143, - 0x0143, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, - 0x0158, 0x0158, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x017f, 0x0189, 0x0189, 0x0189, - 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, 0x0189, - 0x0189, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, - // Entry 240 - 27F - 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, - 0x0191, 0x0191, 0x0191, 0x0191, 0x01ab, 0x01ab, 0x01ab, 0x01ab, - 0x01cd, - }, - }, - { // ta - taLangStr, - taLangIdx, - }, - { // te - teLangStr, - teLangIdx, - }, - { // teo - "KiakanKiamhariKiarabuKibelarusiKibulgariaKibanglaKicheckiKijerumaniKigir" + - "ikiKingerezaKihispaniaKiajemiKifaransaKihausaKihindiKihungariKiindon" + - "esiaKiigboKiitalianoKijapaniKijavaKikambodiaKikoreaKimalesiaKiburmaK" + - "inepaliKiholanziKipunjabiKipolandiKirenoKiromaniaKirusiKinyarwandaKi" + - "somaliKiswidiKitamilKitailandiKiturukiKiukraniaKiurduKivietinamuKiyo" + - "rubaKichinaKizuluKiteso", - []uint16{ // 535 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000e, 0x000e, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001f, 0x0029, - 0x0029, 0x0029, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0043, 0x0043, 0x0043, 0x0043, 0x004b, 0x0054, 0x0054, 0x005e, - 0x005e, 0x005e, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0075, - 0x0075, 0x007c, 0x007c, 0x007c, 0x007c, 0x0085, 0x0085, 0x0085, - // Entry 40 - 7F - 0x0085, 0x0090, 0x0090, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x00a0, 0x00a0, 0x00a8, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00b8, 0x00b8, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00bf, 0x00c8, 0x00c8, 0x00cf, 0x00cf, 0x00cf, - 0x00d7, 0x00d7, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e9, 0x00e9, 0x00f2, - // Entry 80 - BF - 0x00f2, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x0101, 0x0107, 0x0112, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x013a, 0x013a, 0x013a, 0x013a, 0x013a, 0x0143, - 0x0149, 0x0149, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x015c, 0x015c, 0x0163, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry C0 - FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 100 - 13F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 140 - 17F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 180 - 1BF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 1C0 - 1FF - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - // Entry 200 - 23F - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, - 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x016f, - }, - }, - { // tg - "африкаансамҳарӣарабӣассомӣозарбойҷонӣбошқирдӣбелорусӣбулғорӣбинғолӣтибет" + - "ӣбретонӣбосниягӣкаталонӣкорсиканӣчехӣваллӣданиягӣнемисӣдивеҳӣдзонгх" + - "аюнонӣанглисӣэсперантоиспанӣэстонӣбаскӣфорсӣфулаҳфинӣфарерӣфрансузӣ" + - "фризии ғарбӣирландӣшотландии гэлӣгалисиягӣгуаранӣгуҷаротӣҳаусаиброн" + - "ӣҳиндӣхорватӣгаитии креолӣмаҷорӣарманӣҳерероиндонезӣигбоисландӣитал" + - "иявӣинуктитутӣяпонӣгурҷӣқазоқӣкхмерӣканнадакореягӣканурӣкашмирӣкурд" + - "ӣқирғизӣлотинӣлюксембургӣлаосӣлитвонӣлатишӣмалагасӣмаорӣмақдунӣмала" + - "яламӣмуғулӣмаратҳӣмалайӣмалтӣбирманӣнепалӣголландӣнорвегӣнянҷаоксит" + - "анӣоромоодияпанҷобӣлаҳистонӣпуштупортугалӣкечуаретороманӣруминӣрусӣ" + - "киняруандасанскритсиндӣсамии шимолӣсингалӣсловакӣсловенӣсомалӣалбан" + - "ӣсербӣшведӣтамилӣтелугутоҷикӣтайӣтигринятуркманӣтонганӣтуркӣтоторӣӯ" + - "йғурӣукраинӣурдуӯзбекӣвендаветнамӣволофидишйорубахитоӣбалинӣбембасе" + - "буаномарӣчерокӣкурдии марказӣсербии поёнӣфилиппинӣҳавайӣҳилигайнонс" + - "ербии болоӣибибиоконканӣкуруксмендеманипурӣмоҳокниуэӣпапиаментокиче" + - "сахасанталӣсамии ҷанубӣлуле самӣинари самӣсколти самӣсуриёнӣтамазай" + - "ти атласи марказӣзабони номаълумиспанӣ (Америкаи Лотинӣ)хитоии осон" + - "фаҳмхитоии анъанавӣ", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x001e, 0x001e, - 0x0028, 0x0034, 0x0034, 0x0034, 0x004a, 0x005a, 0x006a, 0x0078, - 0x0078, 0x0078, 0x0086, 0x0092, 0x00a0, 0x00b0, 0x00c0, 0x00c0, - 0x00c0, 0x00d2, 0x00d2, 0x00da, 0x00da, 0x00da, 0x00e4, 0x00f2, - 0x00fe, 0x010a, 0x0118, 0x0118, 0x0122, 0x0130, 0x0142, 0x014e, - 0x015a, 0x0164, 0x016e, 0x0178, 0x0180, 0x0180, 0x018c, 0x019c, - 0x01b3, 0x01c1, 0x01dc, 0x01ee, 0x01fc, 0x020c, 0x020c, 0x0216, - 0x0222, 0x022c, 0x022c, 0x023a, 0x0253, 0x025f, 0x026b, 0x0277, - // Entry 40 - 7F - 0x0277, 0x0287, 0x0287, 0x028f, 0x028f, 0x028f, 0x028f, 0x029d, - 0x02ad, 0x02c1, 0x02cb, 0x02cb, 0x02d5, 0x02d5, 0x02d5, 0x02d5, - 0x02e1, 0x02e1, 0x02ed, 0x02fb, 0x0309, 0x0315, 0x0323, 0x032d, - 0x032d, 0x032d, 0x033b, 0x0347, 0x035d, 0x035d, 0x035d, 0x035d, - 0x0367, 0x0375, 0x0375, 0x0381, 0x0391, 0x0391, 0x039b, 0x03a9, - 0x03bb, 0x03c7, 0x03d5, 0x03e1, 0x03eb, 0x03f9, 0x03f9, 0x03f9, - 0x0405, 0x0405, 0x0415, 0x0415, 0x0423, 0x0423, 0x0423, 0x042d, - 0x043d, 0x043d, 0x0447, 0x044f, 0x044f, 0x045d, 0x045d, 0x046f, - // Entry 80 - BF - 0x0479, 0x048b, 0x0495, 0x04a9, 0x04a9, 0x04b5, 0x04bd, 0x04d1, - 0x04e1, 0x04e1, 0x04eb, 0x0502, 0x0502, 0x0510, 0x051e, 0x052c, - 0x052c, 0x052c, 0x0538, 0x0544, 0x054e, 0x054e, 0x054e, 0x054e, - 0x0558, 0x0558, 0x0564, 0x0570, 0x057c, 0x0584, 0x0592, 0x05a2, - 0x05a2, 0x05b0, 0x05ba, 0x05ba, 0x05c6, 0x05c6, 0x05d2, 0x05e0, - 0x05e8, 0x05f4, 0x05fe, 0x060c, 0x060c, 0x060c, 0x0616, 0x0616, - 0x061e, 0x062a, 0x062a, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, - 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, - // Entry C0 - FF - 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, - 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, - 0x0634, 0x0634, 0x0634, 0x0640, 0x0640, 0x0640, 0x0640, 0x0640, - 0x0640, 0x0640, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, - 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, - 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, - 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x064a, 0x0658, 0x0658, - 0x0658, 0x0658, 0x0658, 0x0660, 0x0660, 0x0660, 0x0660, 0x066c, - // Entry 100 - 13F - 0x066c, 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, - 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, 0x0687, - 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, - 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, 0x069e, - 0x069e, 0x069e, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, - 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, - 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, - 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06b0, - // Entry 140 - 17F - 0x06b0, 0x06b0, 0x06b0, 0x06b0, 0x06bc, 0x06bc, 0x06d0, 0x06d0, - 0x06d0, 0x06e7, 0x06e7, 0x06e7, 0x06e7, 0x06f3, 0x06f3, 0x06f3, - 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, - 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, - 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, - 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0x0701, - 0x0701, 0x0701, 0x0701, 0x0701, 0x0701, 0x0701, 0x070d, 0x070d, - 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, - // Entry 180 - 1BF - 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, - 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, - 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, - 0x070d, 0x070d, 0x070d, 0x070d, 0x070d, 0x0717, 0x0717, 0x0717, - 0x0717, 0x0717, 0x0717, 0x0717, 0x0717, 0x0717, 0x0727, 0x0731, - 0x0731, 0x0731, 0x0731, 0x0731, 0x0731, 0x0731, 0x0731, 0x0731, - 0x0731, 0x0731, 0x0731, 0x0731, 0x0731, 0x0731, 0x0731, 0x0731, - 0x0731, 0x073b, 0x073b, 0x073b, 0x073b, 0x073b, 0x073b, 0x073b, - // Entry 1C0 - 1FF - 0x073b, 0x073b, 0x073b, 0x073b, 0x073b, 0x073b, 0x073b, 0x073b, - 0x073b, 0x073b, 0x073b, 0x073b, 0x073b, 0x074f, 0x074f, 0x074f, - 0x074f, 0x074f, 0x074f, 0x074f, 0x074f, 0x074f, 0x074f, 0x074f, - 0x074f, 0x074f, 0x074f, 0x0757, 0x0757, 0x0757, 0x0757, 0x0757, - 0x0757, 0x0757, 0x0757, 0x0757, 0x0757, 0x0757, 0x0757, 0x0757, - 0x0757, 0x0757, 0x075f, 0x075f, 0x075f, 0x075f, 0x076d, 0x076d, - 0x076d, 0x076d, 0x076d, 0x076d, 0x076d, 0x076d, 0x076d, 0x076d, - 0x076d, 0x076d, 0x076d, 0x076d, 0x076d, 0x076d, 0x076d, 0x076d, - // Entry 200 - 23F - 0x076d, 0x076d, 0x076d, 0x0784, 0x0795, 0x07a8, 0x07bd, 0x07bd, - 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, 0x07bd, - 0x07bd, 0x07bd, 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, - 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, - 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07cb, - 0x07cb, 0x07cb, 0x07cb, 0x07cb, 0x07f9, 0x07f9, 0x07f9, 0x07f9, - 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, - 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, - // Entry 240 - 27F - 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, - 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, - 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, - 0x0842, 0x0842, 0x0842, 0x0842, 0x0842, 0x0842, 0x0842, 0x0842, - 0x0842, 0x0842, 0x0842, 0x0842, 0x0842, 0x085f, 0x087c, - }, - }, - { // th - thLangStr, - thLangIdx, - }, - { // ti - "አፍሪቃንሰኛትዊአምሐረኛዓረበኛአዜርባይጃንኛቤላራሻኛቡልጋሪኛበንጋሊኛብሬቶንቦስኒያንካታላንቼክኛወልሽዴኒሽጀርመንግሪከኛእ" + - "ንግሊዝኛኤስፐራንቶስፓኒሽኤስቶኒአንባስክኛፐርሲያኛፊኒሽፋሮኛፈረንሳይኛፍሪሰኛአይሪሽእስኮትስ ጌልክኛጋለቪኛጓራ" + - "ኒጉጃራቲኛዕብራስጥሕንደኛክሮሽያንኛሀንጋሪኛኢንቴር ቋንቋእንዶኑሲኛአይስላንደኛጣሊያንኛጃፓንኛጃቫንኛጊዮርጊያኛ" + - "ካማደኛኮሪያኛኩርድሽኪሩጋዚላቲንኛሊቱአኒየንላቲቪያንማክዶኒኛማላያላምኛማራቲኛማላይኛማልቲስኛኔፖሊኛደችኖርዌይኛ" + - " (ናይ ኝኖርስክ)ኖርዌጂያንኦኪታንኛኦሪያፑንጃቢኛፖሊሽፓሽቶፖርቱጋሊኛሮማኒያንራሽኛስንሃልኛስሎቨክኛስቁቪኛአልቤኒ" + - "ኛሰርቢኛሰሴቶሱዳንኛስዊድንኛሰዋሂሊኛታሚልኛተሉጉኛታይኛትግርኛናይ ቱርኪ ሰብዓይ (ቱርካዊ)ቱርከኛዩክረኒኛኡር" + - "ዱኛኡዝበክኛቪትናምኛዞሳኛዪዲሽዙሉኛታጋሎገኛክሊንግኦንኛፖርቱጋልኛ (ናይ ብራዚል)ፖርቱጋልኛ (ናይ ፖርቱጋል)" + - "ሰርቦ- ክሮዊታን", - []uint16{ // 612 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x001b, 0x002a, 0x002a, - 0x0036, 0x0036, 0x0036, 0x0036, 0x004e, 0x004e, 0x005d, 0x006c, - 0x006c, 0x006c, 0x007b, 0x007b, 0x0087, 0x0096, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00ab, 0x00ab, 0x00ab, 0x00b4, 0x00bd, - 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00d5, 0x00e7, 0x00f9, 0x0105, - 0x0117, 0x0123, 0x0132, 0x0132, 0x013b, 0x013b, 0x0144, 0x0156, - 0x0162, 0x016e, 0x018a, 0x0196, 0x019f, 0x01ae, 0x01ae, 0x01ae, - 0x01bd, 0x01c9, 0x01c9, 0x01db, 0x01db, 0x01ea, 0x01ea, 0x01ea, - // Entry 40 - 7F - 0x0200, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0212, 0x0227, - 0x0236, 0x0236, 0x0242, 0x024e, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x026c, 0x0278, 0x0278, 0x0278, 0x0284, - 0x0284, 0x0284, 0x0290, 0x029c, 0x029c, 0x029c, 0x029c, 0x029c, - 0x029c, 0x02ae, 0x02ae, 0x02bd, 0x02bd, 0x02bd, 0x02bd, 0x02cc, - 0x02de, 0x02de, 0x02ea, 0x02f6, 0x0305, 0x0305, 0x0305, 0x0305, - 0x0311, 0x0311, 0x0317, 0x033f, 0x0351, 0x0351, 0x0351, 0x0351, - 0x0360, 0x0360, 0x0360, 0x0369, 0x0369, 0x0378, 0x0378, 0x0381, - // Entry 80 - BF - 0x038a, 0x039c, 0x039c, 0x039c, 0x039c, 0x03ab, 0x03b4, 0x03b4, - 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d2, 0x03de, - 0x03de, 0x03de, 0x03de, 0x03ed, 0x03f9, 0x03f9, 0x0402, 0x040e, - 0x041d, 0x042c, 0x0438, 0x0444, 0x0444, 0x044d, 0x0459, 0x0485, - 0x0485, 0x0485, 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x04a0, - 0x04ac, 0x04bb, 0x04bb, 0x04ca, 0x04ca, 0x04ca, 0x04ca, 0x04d3, - 0x04dc, 0x04dc, 0x04dc, 0x04dc, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - // Entry C0 - FF - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - // Entry 100 - 13F - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, 0x04e5, - 0x04e5, 0x04e5, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - // Entry 140 - 17F - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - // Entry 180 - 1BF - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - // Entry 1C0 - 1FF - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - // Entry 200 - 23F - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, - 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x04f4, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - // Entry 240 - 27F - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0531, 0x055c, 0x055c, 0x0576, - }, - }, - { // tk - "Afar diliAbhaz diliAfrikaans diliAkan diliAmhar diliAragon diliArap dili" + - "Assam diliAwar diliAýmara diliAzerbaýjan diliBaşgyrt diliBelarus dil" + - "iBolgar diliBislama diliBamanaBengal diliTibet diliBreton diliBoşnak" + - " diliKatalan diliÇeçen diliÇamorroKorsikan diliÇeh diliButhana slaw " + - "diliÇuwaş diliWalliý diliDaniýa diliNemes diliDiwehi diliDzong-ke di" + - "liEwe diliGrek diliIňlis diliEsperanto diliIspan diliEston diliBask " + - "diliPars diliFula diliFin diliFiji diliFarer diliFransuz diliGünbata" + - "r friz diliIrland diliŞotland kelt diliGalisiý diliGuarani diliGujar" + - "ati diliMen diliHausa diliÝewreý diliHindi diliHorwat diliGaiti kreo" + - "l diliWenger diliErmeni diliGerero diliInterlingwa diliIndonez diliI" + - "gbo diliSyçuan-i diliIdo diliIsland diliItalýan diliInuktitut diliÝa" + - "pon diliÝawa diliGruzin diliKikuýu diliKwanýama diliGazak diliGrenla" + - "nd diliKhmer diliKannada diliKoreý diliKanuriKaşmiri diliKürt diliKo" + - "mi diliKorn diliGyrgyz diliLatyn diliLýuksemburg diliGanda diliLimbu" + - "rg diliLingala diliLaos diliLitwa diliLuba-Katanga diliLatyş diliMal" + - "agasiý diliMarşall diliMaori diliMakedon diliMalaýalam diliMongol di" + - "liMarathi diliMalaý diliMalta diliBirma diliNauru diliDemirgazyk nde" + - "bele diliNepal diliNdonga diliNiderland diliNorwegiýa nýunorsk diliN" + - "orwegiýa bukmol diliGünorta ndebele diliNawaho diliNýanja diliOksita" + - "n diliOromo diliOriýa diliOsetin diliPenjab diliPolýak diliPeştun di" + - "liPortugal diliKeçua diliRetoroman diliRundi diliRumyn diliRus diliK" + - "inýaruanda diliSanskrit diliSardin diliSindhi diliDemirgazyk saam di" + - "liSango diliSingal diliSlowak diliSlowen diliSamoa diliŞona diliSoma" + - "li diliAlban diliSerb diliSwati diliGünorta Soto diliSundan diliŞwed" + - " diliSuahili diliTamil diliTelugu diliTäjik diliTaý diliTigrinýa dil" + - "iTürkmen diliTswana diliTongan diliTürk diliTsonga diliTatar diliTai" + - "ti diliUýgur diliUkrain diliUrduÖzbek diliWenda diliWýetnam diliWola" + - "pýuk diliWallon diliWolof diliKosa diliIdiş diliÝoruba diliHytaý dil" + - "iZulu diliAçeh diliAdangme diliAdygeý diliAhem diliAýn diliAleut dil" + - "iGünorta Altaý diliAngika diliMapuçe diliArapaho diliAsu diliAsturiý" + - " diliAwadhi diliBaliý diliBasaa diliBemba diliBena diliBhojpuri dili" + - "Bini diliSiksika diliBodo diliBugiý diliBlin diliSebuan diliKigaÇuuk" + - " diliMariý diliÇoktoÇerokiŞaýenn diliMerkezi kürt diliSeselwa kreole" + - "-fransuz diliDakota diliDargi diliTaita diliDogrib diliZarma diliAşa" + - "ky lužits diliDuala diliÝola-Fonyi diliDaza diliEmbu diliEfik diliEk" + - "ajuk diliEwondo diliFilippin diliFon diliFriul diliGa diliGeez diliG" + - "ilbert diliGorontalo diliNemes dili (Şweýsariýa)Gusii diliGwiçin dil" + - "iGawaý diliHiligaýnon diliHmong diliÝokarky lužits diliHupaIban dili" + - "Ibibio diliIloko diliInguş diliLojban diliNgomba diliMaçame diliKabi" + - "l diliKaçin diliJu diliKamba diliKabardin diliTiap diliMakonde diliK" + - "abuwerdianu diliKoro diliKhasi diliKoýra-Çini diliKako diliKalenjin " + - "diliKimbundu diliKonkani diliKpelle diliKaraçaý-balkar diliKarel dil" + - "iKuruh diliŞambala diliBafia diliKeln diliKumyk diliLadino diliLangi" + - " diliLezgin diliLakota diliLozi diliDemirgazyk luri diliLuba-Lulua d" + - "iliLunda diliLuo diliMizo diliLuýýa diliMadur diliMagahi diliMaýthil" + - "i diliMakasar diliMasai diliMokşa diliMende diliMeru diliMorisýen di" + - "liMakua-Mitto diliMeta diliMikmak diliMinangkabau diliManipuri diliM" + - "ogauk diliMossi diliMundang diliBirnäçe dilKrik diliMirand diliErzýa" + - "n diliMazanderan diliNeapolitan diliNama diliNewari diliNias diliNiu" + - "e diliKwasio diliNgembun diliNogaý diliNko diliDemirgazyk soto diliN" + - "uer diliNýankole diliPangansinan diliKapampangan diliPapýamento dili" + - "Palau diliNigeriý-pijin diliPrussiýa diliKiçe diliRapanuý diliKuk di" + - "liRombo diliAromun diliRwa diliSandawe diliÝakut diliSamburu diliSan" + - "tali diliNgambaý diliSangu diliSisiliýa diliŞotland diliSena diliKoý" + - "raboro-Senni diliTahelhit diliŞan diliGünorta saam diliLule-saam dil" + - "iInari-saam diliSkolt-saam diliSoninke diliSranan-tongo diliSaho dil" + - "iSukuma diliKomor diliSiriýa diliTemne diliTeso diliTetum diliTigre " + - "diliKlingon diliTok-pisin diliTaroko diliTumbuka diliTuwalu diliTasa" + - "wak diliTuwa diliOrta-Atlas tamazight diliUdmurt diliUmbundu diliNäb" + - "elli dilWai diliWunýo diliWalzer diliWolaýta diliWaraý diliGalmyk di" + - "liSoga diliÝangben diliÝemba diliKanton diliStandart Marokko tamazig" + - "ht diliZuni diliDilçilige degişli mazmun ýokZazaki diliHäzirki zaman" + - " standart arap diliNemes dili (Daglyk Şweýsariýa)Iňlis dili (Beýik B" + - "ritaniýa)Iňlis dili (Amerika)Ispan dili (Günorta Amerika)Ispan dili " + - "(Ýewropa)Flamand diliPortugal dili (Ýewropa)Moldaw diliKongo suahili" + - " diliÝönekeýleşdirilen hytaý diliAdaty hytaý dili", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0013, 0x0013, 0x0021, 0x002a, 0x0034, 0x003f, - 0x0048, 0x0052, 0x005b, 0x0067, 0x0077, 0x0084, 0x0090, 0x009b, - 0x00a7, 0x00ad, 0x00b8, 0x00c2, 0x00cd, 0x00d9, 0x00e5, 0x00f1, - 0x00f9, 0x0106, 0x0106, 0x010f, 0x0120, 0x012c, 0x0138, 0x0144, - 0x014e, 0x0159, 0x0166, 0x016e, 0x0177, 0x0182, 0x0190, 0x019a, - 0x01a4, 0x01ad, 0x01b6, 0x01bf, 0x01c7, 0x01d0, 0x01da, 0x01e6, - 0x01f9, 0x0204, 0x0216, 0x0223, 0x022f, 0x023c, 0x0244, 0x024e, - 0x025b, 0x0265, 0x0265, 0x0270, 0x0280, 0x028b, 0x0296, 0x02a1, - // Entry 40 - 7F - 0x02b1, 0x02bd, 0x02bd, 0x02c6, 0x02d4, 0x02d4, 0x02dc, 0x02e7, - 0x02f4, 0x0302, 0x030d, 0x0317, 0x0322, 0x0322, 0x032e, 0x033c, - 0x0346, 0x0353, 0x035d, 0x0369, 0x0374, 0x037a, 0x0387, 0x0391, - 0x039a, 0x03a3, 0x03ae, 0x03b8, 0x03c9, 0x03d3, 0x03df, 0x03eb, - 0x03f4, 0x03fe, 0x040f, 0x041a, 0x0429, 0x0436, 0x0440, 0x044c, - 0x045b, 0x0466, 0x0472, 0x047d, 0x0487, 0x0491, 0x049b, 0x04b2, - 0x04bc, 0x04c7, 0x04d5, 0x04ee, 0x0504, 0x0519, 0x0524, 0x0530, - 0x053c, 0x053c, 0x0546, 0x0551, 0x055c, 0x0567, 0x0567, 0x0573, - // Entry 80 - BF - 0x057f, 0x058c, 0x0597, 0x05a5, 0x05af, 0x05b9, 0x05c1, 0x05d2, - 0x05df, 0x05ea, 0x05f5, 0x0609, 0x0613, 0x061e, 0x0629, 0x0634, - 0x063e, 0x0648, 0x0653, 0x065d, 0x0666, 0x0670, 0x0682, 0x068d, - 0x0697, 0x06a3, 0x06ad, 0x06b8, 0x06c3, 0x06cc, 0x06da, 0x06e7, - 0x06f2, 0x06fd, 0x0707, 0x0712, 0x071c, 0x0726, 0x0731, 0x073c, - 0x0740, 0x074b, 0x0755, 0x0762, 0x0770, 0x077b, 0x0785, 0x078e, - 0x0798, 0x07a4, 0x07a4, 0x07af, 0x07b8, 0x07c2, 0x07c2, 0x07ce, - 0x07da, 0x07da, 0x07da, 0x07e3, 0x07ec, 0x07ec, 0x07ec, 0x07f6, - // Entry C0 - FF - 0x07f6, 0x080a, 0x080a, 0x0815, 0x0815, 0x0821, 0x0821, 0x082d, - 0x082d, 0x082d, 0x082d, 0x082d, 0x082d, 0x0835, 0x0835, 0x0842, - 0x0842, 0x084d, 0x084d, 0x0858, 0x0858, 0x0862, 0x0862, 0x0862, - 0x0862, 0x0862, 0x086c, 0x086c, 0x0875, 0x0875, 0x0875, 0x0875, - 0x0882, 0x0882, 0x088b, 0x088b, 0x088b, 0x0897, 0x0897, 0x0897, - 0x0897, 0x0897, 0x08a0, 0x08a0, 0x08a0, 0x08ab, 0x08ab, 0x08b4, - 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08bf, 0x08c3, - 0x08c3, 0x08c3, 0x08cd, 0x08d8, 0x08d8, 0x08de, 0x08de, 0x08e5, - // Entry 100 - 13F - 0x08f2, 0x0904, 0x0904, 0x0904, 0x0904, 0x091f, 0x091f, 0x092a, - 0x0934, 0x093e, 0x093e, 0x093e, 0x0949, 0x0949, 0x0953, 0x0953, - 0x0966, 0x0966, 0x0970, 0x0970, 0x0980, 0x0980, 0x0989, 0x0992, - 0x099b, 0x099b, 0x099b, 0x09a6, 0x09a6, 0x09a6, 0x09a6, 0x09b1, - 0x09b1, 0x09b1, 0x09be, 0x09be, 0x09c6, 0x09c6, 0x09c6, 0x09c6, - 0x09c6, 0x09c6, 0x09c6, 0x09d0, 0x09d7, 0x09d7, 0x09d7, 0x09d7, - 0x09d7, 0x09d7, 0x09e0, 0x09ec, 0x09ec, 0x09ec, 0x09ec, 0x09ec, - 0x09ec, 0x09fa, 0x09fa, 0x09fa, 0x09fa, 0x0a14, 0x0a14, 0x0a14, - // Entry 140 - 17F - 0x0a1e, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a35, 0x0a35, 0x0a45, 0x0a45, - 0x0a4f, 0x0a64, 0x0a64, 0x0a68, 0x0a71, 0x0a7c, 0x0a86, 0x0a91, - 0x0a91, 0x0a91, 0x0a9c, 0x0aa7, 0x0ab3, 0x0ab3, 0x0ab3, 0x0ab3, - 0x0ab3, 0x0abd, 0x0ac8, 0x0acf, 0x0ad9, 0x0ad9, 0x0ae6, 0x0ae6, - 0x0aef, 0x0afb, 0x0b0c, 0x0b0c, 0x0b15, 0x0b15, 0x0b1f, 0x0b1f, - 0x0b30, 0x0b30, 0x0b30, 0x0b39, 0x0b46, 0x0b53, 0x0b53, 0x0b5f, - 0x0b5f, 0x0b6a, 0x0b7f, 0x0b7f, 0x0b7f, 0x0b89, 0x0b93, 0x0ba0, - 0x0baa, 0x0bb3, 0x0bbd, 0x0bbd, 0x0bc8, 0x0bd2, 0x0bd2, 0x0bd2, - // Entry 180 - 1BF - 0x0bdd, 0x0bdd, 0x0bdd, 0x0bdd, 0x0be8, 0x0be8, 0x0be8, 0x0be8, - 0x0bf1, 0x0c05, 0x0c05, 0x0c14, 0x0c14, 0x0c1e, 0x0c26, 0x0c2f, - 0x0c3b, 0x0c3b, 0x0c3b, 0x0c45, 0x0c45, 0x0c50, 0x0c5e, 0x0c6a, - 0x0c6a, 0x0c74, 0x0c74, 0x0c7f, 0x0c7f, 0x0c89, 0x0c92, 0x0ca0, - 0x0ca0, 0x0cb0, 0x0cb9, 0x0cc4, 0x0cd4, 0x0cd4, 0x0ce1, 0x0cec, - 0x0cf6, 0x0cf6, 0x0d02, 0x0d0f, 0x0d18, 0x0d23, 0x0d23, 0x0d23, - 0x0d23, 0x0d2f, 0x0d3e, 0x0d3e, 0x0d4d, 0x0d56, 0x0d56, 0x0d61, - 0x0d6a, 0x0d73, 0x0d73, 0x0d7e, 0x0d8a, 0x0d95, 0x0d95, 0x0d95, - // Entry 1C0 - 1FF - 0x0d9d, 0x0db1, 0x0dba, 0x0dba, 0x0dba, 0x0dc8, 0x0dc8, 0x0dc8, - 0x0dc8, 0x0dc8, 0x0dd8, 0x0dd8, 0x0de8, 0x0df8, 0x0e02, 0x0e02, - 0x0e15, 0x0e15, 0x0e15, 0x0e15, 0x0e15, 0x0e15, 0x0e15, 0x0e15, - 0x0e15, 0x0e23, 0x0e23, 0x0e2d, 0x0e2d, 0x0e2d, 0x0e3a, 0x0e42, - 0x0e42, 0x0e42, 0x0e4c, 0x0e4c, 0x0e4c, 0x0e4c, 0x0e4c, 0x0e57, - 0x0e5f, 0x0e6b, 0x0e76, 0x0e76, 0x0e82, 0x0e82, 0x0e8e, 0x0e8e, - 0x0e9b, 0x0ea5, 0x0eb3, 0x0ec0, 0x0ec0, 0x0ec0, 0x0ec0, 0x0ec9, - 0x0ec9, 0x0ec9, 0x0ede, 0x0ede, 0x0ede, 0x0eeb, 0x0ef4, 0x0ef4, - // Entry 200 - 23F - 0x0ef4, 0x0ef4, 0x0ef4, 0x0f06, 0x0f14, 0x0f23, 0x0f32, 0x0f3e, - 0x0f3e, 0x0f4f, 0x0f4f, 0x0f58, 0x0f58, 0x0f63, 0x0f63, 0x0f63, - 0x0f6d, 0x0f6d, 0x0f79, 0x0f79, 0x0f79, 0x0f83, 0x0f8c, 0x0f8c, - 0x0f96, 0x0fa0, 0x0fa0, 0x0fa0, 0x0fa0, 0x0fac, 0x0fac, 0x0fac, - 0x0fac, 0x0fac, 0x0fba, 0x0fba, 0x0fc5, 0x0fc5, 0x0fc5, 0x0fc5, - 0x0fd1, 0x0fdc, 0x0fe8, 0x0ff1, 0x100a, 0x1015, 0x1015, 0x1021, - 0x102d, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, - 0x1040, 0x104b, 0x1058, 0x1063, 0x1063, 0x1063, 0x1063, 0x106e, - // Entry 240 - 27F - 0x106e, 0x1077, 0x1077, 0x1077, 0x1084, 0x108f, 0x108f, 0x109a, - 0x109a, 0x109a, 0x109a, 0x109a, 0x10b9, 0x10c2, 0x10e1, 0x10ec, - 0x110d, 0x110d, 0x110d, 0x112e, 0x112e, 0x112e, 0x114d, 0x1162, - 0x117f, 0x1194, 0x1194, 0x1194, 0x1194, 0x1194, 0x1194, 0x11a0, - 0x11a0, 0x11b8, 0x11c3, 0x11c3, 0x11d5, 0x11f6, 0x1207, - }, - }, - { // to - "lea fakaʻafālalea fakaʻapakasialea fakaʻavesitanilea fakaʻafilikanalea f" + - "akaʻakanilea fakaʻamelikilea fakaʻalakonilea fakaʻalepealea fakaʻasa" + - "mialea fakaʻavalikilea fakaʻaimalalea fakaʻasapaisanilea fakapasikil" + - "ilea fakapelalusilea fakapulukalialea fakapisilamalea fakapamipalale" + - "a fakapāngilālea fakatipetilea fakapeletonilea fakaposinialea fakaka" + - "talanilea fakaseselea fakakamololea fakakōsikalea fakakelīlea fakase" + - "kilea fakasilavia-fakasiasilea fakasuvasalea fakauēlesilea fakatenim" + - "aʻakelea fakasiamanelea fakativehilea fakatisōngikalea fakaʻeuelea f" + - "akakalisilea fakapālangilea fakaʻesipulanitolea fakasipēnisilea faka" + - "ʻesitōnialea fakapāsikilea fakapēsialea fakafulālea fakafinilanilea" + - " fakafisilea fakafaloelea fakafalanisēlea fakafilisia-hihifolea faka" + - "ʻaelanilea fakakaelikilea fakakalisialea fakakualanilea fakakutalat" + - "ilea fakamangikīlea fakahausalea fakahepelūlea fakahinitīlea fakahil" + - "i-motulea fakakuloisialea fakahaitilea fakahungakalialea fakaʻāmenia" + - "lea fakahelelolea fakavahaʻalealea fakaʻinitōnesialea fakavahaʻaling" + - "ikēlea fakaʻikipōlea fakasisiuani-īlea fakaʻinupiakilea fakaʻitolea " + - "fakaʻaisilanilea fakaʻītalilea fakaʻinuketitutilea fakasiapanilea fa" + - "kasavalea fakaseōsialea fakakongikōlea fakakikuiulea fakakuaniamalea" + - " fakakasakilea fakakalaʻalisutilea fakakamipōtialea fakakanatalea fa" + - "kakōlealea fakakanulilea fakakāsimilalea fakakulitīlea fakakomilea f" + - "akakoniualilea fakakīsisilea fakalatinalea fakalakisimipekilea fakak" + - "anitalea fakalimipūlikilea lingikalalea fakalaulea fakalituanialea f" + - "akalupa-katangalea fakalativialea fakamalakasilea fakamāsololea faka" + - "maulilea fakamasitōnialea fakaʻinitia-malāialamilea fakamongokōliale" + - "a fakamalatilea fakamaleilea fakamalitalea fakapemalea fakanaululea " + - "fakanetepele-tokelaulea fakanepalilea fakanetongikālea fakahōlanilea" + - " fakanoauē-ninosikilea fakanouaē-pokimalilea fakanetepele-tongalea f" + - "akanavaholea fakanianisalea fakaʻokitanelea fakaʻosipiuālea fakaʻolo" + - "molea faka-ʻotialea fakaʻosetikilea fakapūnusapilea fakapālilea faka" + - "polanilea fakapasitōlea fakapotukalilea fakakuetisalea fakalaito-lom" + - "ēnialea fakaluanitilea fakalōmenialea fakalūsialea fakakiniāuanital" + - "ea fakasanisukulitilea fakasaletīnialea fakasīnitilea fakasami-tokel" + - "aulea fakasangikōlea fakasingihalalea fakasolāvakilea fakasolovenial" + - "ea fakahaʻamoalea fakasionalea fakasomalilea fakaʻalapēnialea fakasē" + - "pialea fakasuatilea fakasoto-tongalea fakasunitālea fakasuētenilea f" + - "akasuahililea fakatamililea fakaʻinitia-telukulea fakatāsikilea faka" + - "tailanilea fakatikilinialea fakatēkimenilea fakatisuanalea fakatonga" + - "lea fakatoakelea fakatisongalea fakatatalelea fakatahitilea fakaʻuik" + - "ūlilea fakaʻūkalaʻinelea fakaʻūtūlea fakaʻusipekilea fakavenitālea " + - "fakavietinamilea fakavolapikilea fakaʻualonialea fakaʻuolofolea faka" + - "tōsalea fakaītisilea fakaʻiōlupalea fakasuangilea fakasiainalea faka" + - "sululea fakaʻatisēlea fakaʻakolilea fakaʻatangimēlea fakaʻatikēlea f" + - "akaʻalepea-tunīsialea fakaʻafilihililea fakaʻakihemilea fakaʻainulea" + - " fakaʻakatialea fakaʻalapamalea fakaʻaleutilea fakaʻalapēnia-kekilea" + - " fakaʻalitai-tongalea fakapālangi-motuʻalea fakaʻangikalea fakaʻalām" + - "itilea fakamapuselea fakaʻalaonalea fakaʻalapaholea fakaʻalepea-ʻais" + - "ilialea fakaʻalauakilea fakaʻalepea-molokolea fakaʻalepea-ʻisipitele" + - "a fakaʻasulea fakaʻilonga-ʻamelikalea fakaʻasitūlialea fakakotavalea" + - " fakaʻauatilea fakapalusilea fakapalilea fakapavālialea fakapasaʻale" + - "a fakapamunilea fakatōpe-pētekilea fakakomalalea fakapesalea fakapēm" + - "ipalea fakapetavilea fakapenalea fakapafutilea fakapatakalea fakapal" + - "usi-hihifolea fakaposipulilea fakapikolilea fakapinilea fakapanisali" + - "lea fakakomelea fakasikesikālea fakapisinupilialea fakapakitiālilea " + - "fakapalailea fakapalahuilea fakapōtolea fakaʻakōselea fakapuliatilea" + - " fakapukisilea fakapululea fakapilinilea fakametūmipalea fakakatolea" + - " fakakalipalea fakakaiukalea fakaʻatisamilea fakasepuanolea fakakika" + - "lea fakasīpisalea fakasakatāilea fakatūkelea fakamalīlea fakasinuki-" + - "takotelea fakasokitaulea fakasipeuianilea fakaselokīlea fakaseienele" + - "a fakakūtisi-lolotolea fakakopitikalea fakakapisenolea fakatoake-kil" + - "imealea fakaseselua-falanisēlea fakakasiupialea fakatakotalea fakata" + - "lakuālea fakataitalea fakatelaualelea fakasilavelea fakatōkelipilea " + - "fakatingikālea fakatisāmalea fakatokililea fakasōpia-hifolea fakatus" + - "uni-lolotolea fakatualalea fakahōlani-lotolotolea fakaiola-fonīlea f" + - "akatiulalea fakatasakalea fakaʻemipūlea fakaʻefikilea fakaʻemilialea" + - " fakaʻisipitemuʻalea fakaʻekaiukilea fakaʻelamitelea fakapālangi-lot" + - "olotolea fakaiūpiki-lolotolea fakaʻeuōnitolea fakaʻekisitematulalea " + - "fakafangilea fakafilipainilea fakafinilani-tōnetalelea fakafōngilea " + - "fakafalanisē-kasunilea fakafalanisē-lotolotolea fakafalanisē-motuʻal" + - "ea fakaʻāpitanolea fakafilisia-tokelaulea fakafilisia-hahakelea faka" + - "fulilānilea fakakālea fakakakausilea fakasiaina-kanilea fakakaiolea " + - "fakakapaialea fakateli-soloasitelialea fakasiʻisilea fakakilipasilea" + - " fakakilakilea fakasiamane-hake-lotolotolea fakasiamane-hake-motuʻal" + - "ea fakakonikanī-koanilea fakakonitīlea fakakolonitalolea fakakotikal" + - "ea fakakēpolea fakakalisimuʻalea fakasiamane-suisilanilea fakaʻuaiūl" + - "ea fakafalefalelea fakakusīlea fakaʻuīsinilea fakahaitalea fakasiain" + - "a-hakalea fakahauaiʻilea fakahinitī-fisilea fakahilikainonilea fakah" + - "ititelea fakamōngilea fakasōpia-hakelea fakasiaina-siangilea fakahup" + - "alea fakaʻipanilea fakaʻipipiolea fakaʻilokolea fakaʻingusilea fakaʻ" + - "ingilianilea fakapālangi-samaikalea fakalosipanilea fakanikōmipalea " + - "fakamasamelea fakaʻiuteo-pēsialea fakaʻiuteo-ʻalepealea fakaʻiutilan" + - "ilea fakakala-kalipakilea fakakapilelea fakakasinilea fakasisūlea fa" + - "kakamipalea fakakavilea fakakapālitialea fakakanēmipulea fakatiapile" + - "a fakamakōnitelea fakakapuvelitianulea fakakeniangilea fakakololea f" + - "akakaingangilea fakakāsilea fakakōtanilea fakakoila-sīnilea fakakoua" + - "lilea fakakilimanisikīlea fakakakolea fakakalenisinilea fakakimipūni" + - "tulea fakakomi-pelemiakilea fakakonikanīlea fakakosilaelea fakakepel" + - "elea fakakalate-palakililea fakakiliolea fakakinaraiālea fakakalelia" + - "lea fakakulukilea fakasiamipalalea fakapafialea fakakolongialea faka" + - "kumikilea fakakutenailea fakalatinolea fakalangilea fakalānitalea fa" + - "kalamipālea fakalesikialea fakakavakava-foʻoulea fakalikulialea faka" + - "livonialea fakalakotalea fakalomipātilea fakamongikōlea fakalosilea " + - "fakaluli-tokelaulea fakalatakalelea fakalupa-lulualea fakaluisenolea" + - " fakalunitālea fakaluolea fakamisolea fakaluīalea fakasiaina-faʻutoh" + - "ilea fakalasulea fakamatulalea fakamafalea fakamakahilea fakamaitili" + - "lea fakamakasalilea fakamanitīngikolea fakamasailea fakamapalea faka" + - "mokisiālea fakamanetalilea fakamenetīlea fakamelulea fakamolisienile" + - "a fakaʻaelani-lotolotolea fakamakūa-meʻetolea fakametālea fakamikema" + - "kilea fakaminangikapaulea fakamanisūlea fakamanipulilea fakamohaukil" + - "ea fakamosilea fakamali-hihifolea fakamunitangilea tuifiolea fakakil" + - "ekilea fakamilanitēsilea fakamaliwalilea fakamenitauailea fakamienel" + - "ea fakaʻelisialea fakamasanitelanilea fakasiaina-mininanilea fakanap" + - "oletanolea fakanamalea fakasiamane-hifolea fakaneualilea fakaniasile" + - "a fakaniuēlea fakaʻaonasalea fakakuasiolea fakangiemipōnilea fakanok" + - "ailea fakanoauē-motuʻalea fakanovialelea fakanikōlea fakasoto-tokela" + - "ulea fakanuelilea fakaneuali-motuʻalea fakaniamiuesilea fakanianikol" + - "elea fakaniololea fakanesimalea fakaʻosēselea fakatoake-ʻotomanilea " + - "fakapangasinanilea fakapālavilea fakapamipangalea fakapapiamēnitolea" + - " fakapalaulea fakapikātilea fakanaisilialea fakasiamane-penisilivani" + - "alea fakasiamane-lafalafalea fakapēsia-motuʻalea fakasiamane-palatin" + - "elea fakafoinikialea fakapiemonitelea fakaponitikilea fakaponapēlea " + - "fakapulūsialea fakapolovenisi-motuʻalea fakakīsēlea fakakuitisa-simi" + - "polasolea fakalasasitanilea fakalapanuilea fakalalotongalea fakaloma" + - "niololea fakalifilea fakalomipōlea fakalomanilea fakalotumalea fakal" + - "usinilea fakalovianalea fakaʻalomanialea fakaluālea fakasanitauelea " + - "fakasakalea fakasamalitani-ʻalāmitilea fakasamipululea fakasasakilea" + - " fakasanitalilea fakasaulasitilālea fakangāmipailea fakasangulea fak" + - "asisīlialea fakasikotilanilea fakasaletīnia-sasalesulea faka-tonga ‘" + - "o Ketesilea fakasenekalea fakasenalea fakaselilea fakaselikupilea fa" + - "kakoilapolo-senilea fakaʻaelani-motuʻalea fakasamositialea fakatasel" + - "ihitilea fakasianilea fakaʻalepea-sātilea fakasitamolea fakasilesia-" + - "hifolea fakaselaiālea fakasami-tongalea fakasami-lulelea fakasami-ʻi" + - "nalilea fakasami-sikolitalea fakasoninekēlea fakasokitianalea fakasu" + - "lanane-tongikōlea fakasēlēlelea fakasaholea fakafilisia-satēlanilea " + - "fakasukumalea fakasusūlea fakasumelialea fakakomololea fakasuliāiā-m" + - "uʻalea fakasuliāiālea fakasilesialea fakatululea fakatimenēlea fakat" + - "esolea fakatelenolea fakatetumulea fakatikilēlea fakativilea fakatok" + - "elaulea fakasākulilea fakakilingonilea fakatilingikītelea fakatalisi" + - "lea fakatamasiekilea fakaniasa-tongalea fakatoki-pisinilea fakatuloi" + - "olea fakatalokolea fakasakōnialea fakatisīmisianilea fakatati-mosele" + - "milea fakatumepukalea fakatūvalulea fakatasauakilea fakatuvīnialea f" + - "akatamasaiti-ʻatilasi-lolotolea fakaʻutimulitilea fakaʻūkalitilea fa" + - "kaʻumipūnitulea taʻeʻiloalea fakavailea fakavenēsialea fakavepisilea" + - " fakavelamingi-hihifolea fakafalanikoni-lolotolea fakavotikilea faka" + - "vōlolea fakavūnisolea fakaʻualiselilea fakaʻuolaitalea fakaʻualailea" + - " fakaʻuasiōlea fakaʻuālipililea fakasiaina-uūlea fakakalimikilea fak" + - "amingilelialea fakasokalea fakaʻiaolea fakaʻiapilea fakaʻiangipenile" + - "a fakaʻiēmipalea fakaneʻēngatūlea fakakuangitongilea fakasapotekilea" + - " fakaʻilonga-pilisilea fakasēlanilea fakasenakalea fakatamasaiti-mol" + - "okolea fakasuniʻikai ha lealea fakasāsālea fakaʻalepea (māmani)lea f" + - "akasiamane-ʻaositulialea fakasiamane-hake-suisilanilea fakapālangi-ʻ" + - "aositelēlialea fakapālangi-kānatalea fakapilitānialea fakapālangi-ʻa" + - "melikalea fakasipēnisi lātini-ʻamelikalea fakasipēnisi-‘iulopelea fa" + - "kasipēnisi-mekisikoulea fakafalanisē-kānatalea fakafalanisē-suisilan" + - "ilea fakasakisoni-hifolea fakahōlani-pelesiumelea fakapotukali-palās" + - "ililea fakapotukali-ʻiulopelea fakamolitāvialea fakakuloisia-sēpiale" + - "a fakasuahili-kongikōlea fakasiaina-fakafaingofualea fakasiaina-tuku" + - "fakaholo", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0022, 0x0035, 0x0048, 0x0057, 0x0068, 0x0079, - 0x0089, 0x0099, 0x00aa, 0x00ba, 0x00ce, 0x00de, 0x00ee, 0x00ff, - 0x010f, 0x011f, 0x0130, 0x013e, 0x014e, 0x015d, 0x016d, 0x0179, - 0x0187, 0x0196, 0x01a3, 0x01af, 0x01c8, 0x01d6, 0x01e5, 0x01f8, - 0x0207, 0x0215, 0x0227, 0x0234, 0x0242, 0x0252, 0x0267, 0x0278, - 0x028b, 0x029a, 0x02a8, 0x02b5, 0x02c5, 0x02d1, 0x02de, 0x02ef, - 0x0305, 0x0315, 0x0324, 0x0333, 0x0342, 0x0352, 0x0362, 0x036f, - 0x037e, 0x038d, 0x039e, 0x03ae, 0x03bb, 0x03cd, 0x03de, 0x03ec, - // Entry 40 - 7F - 0x03fe, 0x0413, 0x042a, 0x043a, 0x044d, 0x045f, 0x046c, 0x047e, - 0x048e, 0x04a3, 0x04b2, 0x04be, 0x04cd, 0x04dd, 0x04eb, 0x04fb, - 0x0509, 0x051e, 0x0530, 0x053e, 0x054c, 0x055a, 0x056b, 0x057a, - 0x0586, 0x0596, 0x05a5, 0x05b3, 0x05c7, 0x05d5, 0x05e8, 0x05f5, - 0x0600, 0x0610, 0x0624, 0x0633, 0x0643, 0x0652, 0x065f, 0x0671, - 0x068d, 0x06a0, 0x06ae, 0x06bb, 0x06c9, 0x06d5, 0x06e2, 0x06fa, - 0x0708, 0x071a, 0x0729, 0x0740, 0x0757, 0x076d, 0x077b, 0x078a, - 0x079b, 0x07ad, 0x07bc, 0x07cb, 0x07dc, 0x07ed, 0x07fa, 0x0808, - // Entry 80 - BF - 0x0817, 0x0827, 0x0836, 0x084c, 0x085b, 0x086b, 0x0879, 0x088d, - 0x08a1, 0x08b3, 0x08c2, 0x08d6, 0x08e6, 0x08f7, 0x0908, 0x0919, - 0x0929, 0x0936, 0x0944, 0x0957, 0x0965, 0x0972, 0x0984, 0x0993, - 0x09a3, 0x09b2, 0x09c0, 0x09d7, 0x09e6, 0x09f5, 0x0a06, 0x0a17, - 0x0a26, 0x0a33, 0x0a40, 0x0a4f, 0x0a5d, 0x0a6b, 0x0a7c, 0x0a91, - 0x0aa0, 0x0ab1, 0x0ac0, 0x0ad1, 0x0ae1, 0x0af2, 0x0b02, 0x0b0f, - 0x0b1d, 0x0b2e, 0x0b3c, 0x0b4a, 0x0b56, 0x0b66, 0x0b75, 0x0b88, - 0x0b98, 0x0bb1, 0x0bc4, 0x0bd5, 0x0be3, 0x0bf3, 0x0c04, 0x0c14, - // Entry C0 - FF - 0x0c2c, 0x0c42, 0x0c5a, 0x0c6a, 0x0c7c, 0x0c8a, 0x0c9a, 0x0cab, - 0x0cc5, 0x0cc5, 0x0cd6, 0x0ced, 0x0d07, 0x0d14, 0x0d2e, 0x0d41, - 0x0d4f, 0x0d5e, 0x0d6c, 0x0d78, 0x0d88, 0x0d97, 0x0da5, 0x0dba, - 0x0dc8, 0x0dd4, 0x0de3, 0x0df1, 0x0dfd, 0x0e0b, 0x0e19, 0x0e2e, - 0x0e3e, 0x0e4c, 0x0e58, 0x0e68, 0x0e74, 0x0e85, 0x0e98, 0x0eaa, - 0x0eb7, 0x0ec6, 0x0ed3, 0x0ee3, 0x0ef2, 0x0f00, 0x0f0c, 0x0f1a, - 0x0f2b, 0x0f37, 0x0f45, 0x0f53, 0x0f64, 0x0f64, 0x0f73, 0x0f7f, - 0x0f8e, 0x0f9e, 0x0fab, 0x0fb8, 0x0fcd, 0x0fdc, 0x0fed, 0x0ffc, - // Entry 100 - 13F - 0x100a, 0x1020, 0x1030, 0x1040, 0x1055, 0x106e, 0x107e, 0x108c, - 0x109c, 0x10a9, 0x10b9, 0x10c7, 0x10d8, 0x10e8, 0x10f7, 0x1105, - 0x1118, 0x112d, 0x113a, 0x1152, 0x1164, 0x1171, 0x117f, 0x118f, - 0x119e, 0x11ae, 0x11c4, 0x11d5, 0x11e6, 0x11ff, 0x1215, 0x1227, - 0x123e, 0x124b, 0x125c, 0x1276, 0x1284, 0x129c, 0x12b6, 0x12cf, - 0x12e1, 0x12f8, 0x130e, 0x131f, 0x132a, 0x1339, 0x134c, 0x1358, - 0x1366, 0x137f, 0x138e, 0x139e, 0x13ac, 0x13c9, 0x13e5, 0x13fc, - 0x140b, 0x141d, 0x142b, 0x1438, 0x144b, 0x1464, 0x1473, 0x1483, - // Entry 140 - 17F - 0x1490, 0x14a1, 0x14ae, 0x14c1, 0x14d1, 0x14e5, 0x14f8, 0x1506, - 0x1514, 0x1527, 0x153c, 0x1548, 0x1557, 0x1567, 0x1576, 0x1586, - 0x1599, 0x15b1, 0x15c1, 0x15d2, 0x15e0, 0x15f6, 0x160e, 0x1620, - 0x1635, 0x1643, 0x1651, 0x165e, 0x166c, 0x1678, 0x168a, 0x169b, - 0x16a8, 0x16b9, 0x16ce, 0x16de, 0x16ea, 0x16fb, 0x1708, 0x1717, - 0x172a, 0x1738, 0x174d, 0x1759, 0x176b, 0x177e, 0x1794, 0x17a5, - 0x17b4, 0x17c2, 0x17d9, 0x17e6, 0x17f7, 0x1806, 0x1814, 0x1825, - 0x1832, 0x1842, 0x1850, 0x185f, 0x186d, 0x187a, 0x1889, 0x1898, - // Entry 180 - 1BF - 0x18a7, 0x18be, 0x18cd, 0x18dc, 0x18ea, 0x18fb, 0x190b, 0x190b, - 0x1917, 0x192b, 0x193b, 0x194d, 0x195c, 0x196b, 0x1976, 0x1982, - 0x198f, 0x19a7, 0x19b3, 0x19c1, 0x19cd, 0x19db, 0x19ea, 0x19fa, - 0x1a0e, 0x1a1b, 0x1a27, 0x1a37, 0x1a47, 0x1a56, 0x1a62, 0x1a73, - 0x1a8c, 0x1aa2, 0x1aaf, 0x1abf, 0x1ad3, 0x1ae2, 0x1af2, 0x1b01, - 0x1b0d, 0x1b20, 0x1b31, 0x1b3b, 0x1b49, 0x1b5c, 0x1b6c, 0x1b7d, - 0x1b8a, 0x1b9a, 0x1bae, 0x1bc5, 0x1bd7, 0x1be3, 0x1bf7, 0x1c05, - 0x1c12, 0x1c1f, 0x1c2f, 0x1c3d, 0x1c50, 0x1c5d, 0x1c73, 0x1c82, - // Entry 1C0 - 1FF - 0x1c8f, 0x1ca3, 0x1cb0, 0x1cc6, 0x1cd7, 0x1ce8, 0x1cf5, 0x1d03, - 0x1d13, 0x1d2a, 0x1d3d, 0x1d4c, 0x1d5d, 0x1d71, 0x1d7e, 0x1d8d, - 0x1d9d, 0x1dba, 0x1dd2, 0x1de8, 0x1e00, 0x1e10, 0x1e21, 0x1e31, - 0x1e40, 0x1e50, 0x1e6a, 0x1e78, 0x1e92, 0x1ea4, 0x1eb3, 0x1ec4, - 0x1ed5, 0x1ee1, 0x1ef0, 0x1efe, 0x1f0c, 0x1f1a, 0x1f29, 0x1f3b, - 0x1f47, 0x1f57, 0x1f63, 0x1f80, 0x1f90, 0x1f9e, 0x1fae, 0x1fc2, - 0x1fd3, 0x1fe0, 0x1ff0, 0x2002, 0x201d, 0x2037, 0x2045, 0x2051, - 0x205d, 0x206d, 0x2083, 0x209b, 0x20ac, 0x20be, 0x20cb, 0x20e1, - // Entry 200 - 23F - 0x20ef, 0x2103, 0x2112, 0x2124, 0x2135, 0x2149, 0x215e, 0x216f, - 0x2180, 0x2199, 0x21a9, 0x21b5, 0x21ce, 0x21dc, 0x21e9, 0x21f8, - 0x2206, 0x221d, 0x222e, 0x223d, 0x2249, 0x2258, 0x2264, 0x2272, - 0x2280, 0x228f, 0x229b, 0x22aa, 0x22b9, 0x22ca, 0x22de, 0x22ec, - 0x22fd, 0x2310, 0x2323, 0x2331, 0x233f, 0x234f, 0x2363, 0x2378, - 0x2388, 0x2397, 0x23a7, 0x23b7, 0x23d9, 0x23ec, 0x23fe, 0x2412, - 0x2421, 0x242c, 0x243c, 0x244a, 0x2462, 0x247b, 0x2489, 0x2496, - 0x24a5, 0x24b7, 0x24c8, 0x24d7, 0x24e7, 0x24fa, 0x250c, 0x251c, - // Entry 240 - 27F - 0x252e, 0x253a, 0x2547, 0x2555, 0x2568, 0x2579, 0x258d, 0x25a0, - 0x25b0, 0x25c7, 0x25d6, 0x25e4, 0x25fc, 0x2608, 0x2615, 0x2623, - 0x263d, 0x263d, 0x2658, 0x2676, 0x2695, 0x26ad, 0x26bf, 0x26d9, - 0x26fc, 0x2717, 0x2732, 0x2732, 0x274b, 0x2766, 0x277b, 0x2794, - 0x27ae, 0x27c7, 0x27d9, 0x27f0, 0x2808, 0x2824, 0x283f, - }, - }, - { // tr - trLangStr, - trLangIdx, - }, - { // tt - "африкаансамхаргарәпассамәзәрбайҗанбашкортбелорусболгарбенгалитибетбретон" + - "босниякаталанкорсикачехуэльсданияалманмальдивдзонг-кхагрекинглизэсп" + - "ерантоиспанэстонбаскфарсыфулафинфарерфранцузирландшотланд гэльгалис" + - "иягуаранигуҗаратихаусаяһүдһиндхорватгаити креолвенгрәрмәнгерероиндо" + - "незияигбоисландитальянинуктикутяпонгрузинказакъкхмерканнадакореякан" + - "урикашмирикөрдкыргызлатинлюксембурглаослитвалатышмалагасимаоримакед" + - "онмалаяламмонголмаратхималаймальтабирманепалиголландньянҗаокситанор" + - "омоорияпәнҗабиполякпуштупортугалкечуаретороманрумынрусруандасанскри" + - "тсиндһитөньяк саамсингалсловаксловенсомалиалбансербшведтамилтелугут" + - "аҗиктайтигриньятөрекмәнтонгатөректатаруйгырукраинурдуүзбәквендавьет" + - "намволофидишйорубакытай (тәрҗемә киңәше: аерым алганда, мандарин кы" + - "тайчасы)мапучебалибембасебуаномаричерокиүзәк көрдтүбән сорбфилиппин" + - "гавайихилигайнонюгары сорбибибиоконканикурухмендеманипуримогаукниуэ" + - "папьяментокичесахасанталикөньяк саамлуле-сааминари-саамколтта-саамс" + - "үрияүзәк атлас тамазигтбилгесез телиспан (Латин Америкасы)гадиләште" + - "релгән кытайтрадицион кытай", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x001c, 0x001c, - 0x0026, 0x0030, 0x0030, 0x0030, 0x0044, 0x0052, 0x0060, 0x006c, - 0x006c, 0x006c, 0x007a, 0x0084, 0x0090, 0x009c, 0x00aa, 0x00aa, - 0x00aa, 0x00b8, 0x00b8, 0x00be, 0x00be, 0x00be, 0x00c8, 0x00d2, - 0x00dc, 0x00ea, 0x00fb, 0x00fb, 0x0103, 0x010f, 0x0121, 0x012b, - 0x0135, 0x013d, 0x0147, 0x014f, 0x0155, 0x0155, 0x015f, 0x016d, - 0x016d, 0x0179, 0x0190, 0x019e, 0x01ac, 0x01bc, 0x01bc, 0x01c6, - 0x01ce, 0x01d6, 0x01d6, 0x01e2, 0x01f7, 0x0201, 0x020b, 0x0217, - // Entry 40 - 7F - 0x0217, 0x0229, 0x0229, 0x0231, 0x0231, 0x0231, 0x0231, 0x023d, - 0x024b, 0x025d, 0x0265, 0x0265, 0x0271, 0x0271, 0x0271, 0x0271, - 0x027d, 0x027d, 0x0287, 0x0295, 0x029f, 0x02ab, 0x02b9, 0x02c1, - 0x02c1, 0x02c1, 0x02cd, 0x02d7, 0x02eb, 0x02eb, 0x02eb, 0x02eb, - 0x02f3, 0x02fd, 0x02fd, 0x0307, 0x0317, 0x0317, 0x0321, 0x032f, - 0x033f, 0x034b, 0x0359, 0x0363, 0x036f, 0x0379, 0x0379, 0x0379, - 0x0385, 0x0385, 0x0393, 0x0393, 0x0393, 0x0393, 0x0393, 0x039f, - 0x03ad, 0x03ad, 0x03b7, 0x03bf, 0x03bf, 0x03cd, 0x03cd, 0x03d7, - // Entry 80 - BF - 0x03e1, 0x03f1, 0x03fb, 0x040d, 0x040d, 0x0417, 0x041d, 0x0429, - 0x0439, 0x0439, 0x0445, 0x045a, 0x045a, 0x0466, 0x0472, 0x047e, - 0x047e, 0x047e, 0x048a, 0x0494, 0x049c, 0x049c, 0x049c, 0x049c, - 0x04a4, 0x04a4, 0x04ae, 0x04ba, 0x04c4, 0x04ca, 0x04da, 0x04ea, - 0x04ea, 0x04f4, 0x04fe, 0x04fe, 0x0508, 0x0508, 0x0512, 0x051e, - 0x0526, 0x0530, 0x053a, 0x0548, 0x0548, 0x0548, 0x0552, 0x0552, - 0x055a, 0x0566, 0x0566, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, - 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, - // Entry C0 - FF - 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05ce, 0x05da, 0x05da, 0x05da, - 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, 0x05da, - 0x05da, 0x05da, 0x05da, 0x05e2, 0x05e2, 0x05e2, 0x05e2, 0x05e2, - 0x05e2, 0x05e2, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, - 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, - 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, - 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05ec, 0x05fa, 0x05fa, - 0x05fa, 0x05fa, 0x05fa, 0x0602, 0x0602, 0x0602, 0x0602, 0x060e, - // Entry 100 - 13F - 0x060e, 0x061f, 0x061f, 0x061f, 0x061f, 0x061f, 0x061f, 0x061f, - 0x061f, 0x061f, 0x061f, 0x061f, 0x061f, 0x061f, 0x061f, 0x061f, - 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, - 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, 0x0632, - 0x0632, 0x0632, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, - 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, - 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, - 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, 0x0642, - // Entry 140 - 17F - 0x0642, 0x0642, 0x0642, 0x0642, 0x064e, 0x064e, 0x0662, 0x0662, - 0x0662, 0x0675, 0x0675, 0x0675, 0x0675, 0x0681, 0x0681, 0x0681, - 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, - 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, - 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, - 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x068f, - 0x068f, 0x068f, 0x068f, 0x068f, 0x068f, 0x068f, 0x0699, 0x0699, - 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, - // Entry 180 - 1BF - 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, - 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, - 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, - 0x0699, 0x0699, 0x0699, 0x0699, 0x0699, 0x06a3, 0x06a3, 0x06a3, - 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06b3, 0x06bf, - 0x06bf, 0x06bf, 0x06bf, 0x06bf, 0x06bf, 0x06bf, 0x06bf, 0x06bf, - 0x06bf, 0x06bf, 0x06bf, 0x06bf, 0x06bf, 0x06bf, 0x06bf, 0x06bf, - 0x06bf, 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06c7, - // Entry 1C0 - 1FF - 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06c7, - 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06c7, 0x06db, 0x06db, 0x06db, - 0x06db, 0x06db, 0x06db, 0x06db, 0x06db, 0x06db, 0x06db, 0x06db, - 0x06db, 0x06db, 0x06db, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, - 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0x06e3, - 0x06e3, 0x06e3, 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0x06f9, 0x06f9, - 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0x06f9, - 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0x06f9, - // Entry 200 - 23F - 0x06f9, 0x06f9, 0x06f9, 0x070e, 0x071f, 0x0732, 0x0747, 0x0747, - 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, - 0x0747, 0x0747, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, - 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, - 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, 0x0751, - 0x0751, 0x0751, 0x0751, 0x0751, 0x0775, 0x0775, 0x0775, 0x0775, - 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, - 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, - // Entry 240 - 27F - 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, - 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, - 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, 0x078c, - 0x07b6, 0x07b6, 0x07b6, 0x07b6, 0x07b6, 0x07b6, 0x07b6, 0x07b6, - 0x07b6, 0x07b6, 0x07b6, 0x07b6, 0x07b6, 0x07df, 0x07fc, - }, - }, - { // twq - "Akan senniAmhaarik senniLaaraw senniBelaruus senniBulagaari senniBengali" + - " senniCek senniAlmaŋ senniGrek senniInglisi senniEspaaɲe senniFarsi " + - "senniFransee senniHawsance senniInduu senniHungaari senniIndoneesi s" + - "enniIboo senniItaali senniJaponee senniJavanee senniKmeer senni, Gam" + - "e hereKoree senniMaleezi senniBurme senniNeepal senniHolandee senniP" + - "unjaabi senniiPolonee senniPortugee senniRumaani senniRuusi senniRwa" + - "nda senniSomaali senniSuweede senniTamil senniTaailandu senniTurku s" + - "enniUkreen senniUrdu senniVietnaam senniYorbance senniSinuwa senni, " + - "MandareŋZulu senniTasawaq senni", - []uint16{ // 555 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0018, 0x0018, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0032, 0x0041, - 0x0041, 0x0041, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x007a, 0x007a, 0x0088, - 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00ae, - 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00c7, 0x00c7, 0x00c7, - // Entry 40 - 7F - 0x00c7, 0x00d6, 0x00d6, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00ec, 0x00ec, 0x00f9, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x011c, 0x011c, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0134, 0x0134, 0x013f, 0x013f, 0x013f, - 0x014b, 0x014b, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, - 0x0159, 0x0159, 0x0159, 0x0159, 0x0159, 0x0168, 0x0168, 0x0175, - // Entry 80 - BF - 0x0175, 0x0183, 0x0183, 0x0183, 0x0183, 0x0190, 0x019b, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, - 0x01c1, 0x01c1, 0x01cc, 0x01cc, 0x01cc, 0x01db, 0x01db, 0x01db, - 0x01db, 0x01db, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01f2, - 0x01fc, 0x01fc, 0x01fc, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x0218, 0x0218, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry C0 - FF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 100 - 13F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 140 - 17F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 180 - 1BF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 1C0 - 1FF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 200 - 23F - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0246, - }, - }, - { // tzm - "TakanitTamharitTaεrabtTabilarusitTabelɣaritTabinɣalitTačiktTalmanitTayun" + - "anitTanglizttasbelyunitTafarisitTafṛansistTahawsatTahinditTahenɣarit" + - "TindunisitTigbutTaṭalyantTajappunitTajavanitTaxmert ,TalammastTakuri" + - "tTamalizitTaburmanitTanippalitTahulanḍitTabenjabitTappulunitTaburtuɣ" + - "alitTaṛumanitTarusitTarwanditTaṣumalitTaswiditTatamiltTaṭaytTaturkit" + - "TukranitTurdutTaviṭnamitTayurubatTacinwit,MandarintazulutTamaziɣt n " + - "laṭlaṣ", - []uint16{ // 557 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0022, 0x002d, - 0x002d, 0x002d, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0050, 0x0058, 0x0058, 0x0063, - 0x0063, 0x0063, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0078, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0080, - 0x0080, 0x0088, 0x0088, 0x0088, 0x0088, 0x0093, 0x0093, 0x0093, - // Entry 40 - 7F - 0x0093, 0x009d, 0x009d, 0x00a3, 0x00a3, 0x00a3, 0x00a3, 0x00a3, - 0x00ae, 0x00ae, 0x00b8, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, - 0x00c1, 0x00c1, 0x00d3, 0x00d3, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00e3, 0x00e3, 0x00ed, 0x00ed, 0x00ed, - 0x00f7, 0x00f7, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, - 0x0103, 0x0103, 0x0103, 0x0103, 0x0103, 0x010d, 0x010d, 0x0117, - // Entry 80 - BF - 0x0117, 0x0124, 0x0124, 0x0124, 0x0124, 0x012f, 0x0136, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, - 0x0152, 0x0152, 0x015a, 0x015a, 0x015a, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x0172, - 0x0178, 0x0178, 0x0178, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, - 0x0184, 0x018d, 0x018d, 0x019e, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry C0 - FF - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 100 - 13F - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 140 - 17F - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 180 - 1BF - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 1C0 - 1FF - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - // Entry 200 - 23F - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01bb, - }, - }, - { // ug - "ئافارچەئابخازچەئاۋېستاچەئافرىكانچەئاكانچەئامھارچەئاراگونچەئەرەبچەئاسامچە" + - "ئاۋارچەئايماراچەئەزەربەيجانچەباشقىرتچەبېلارۇسچەبۇلغارچەبىسلاماچەبام" + - "باراچەبېنگالچەتىبەتچەبىرېتونچەبوسىنچەكاتالانچەچېچىنچەچامورروچەكورسۇ" + - "چەكرىچەچېخچەقەدىمكى سلاۋيانچەچۇۋاشچەۋېلشچەدانىشچەگېرمانچەدىۋېخچەزوڭ" + - "خاچەئېۋېچەگىرېكچەئىنگلىزچەئېسپرانتوچەئىسپانچەئېستونچەباسكىچەپارسچەف" + - "ۇلاھچەفىنچەفىجىچەفائېروچەفىرانسۇزچەغەربىي فىرسچەئىرېلاندچەشوتلاندىي" + - "ە گايلچىسىگالىچەگۇئارانىچەگۇجاراتچەمانچەخائۇساچەئىبرانىيچەھىندىچەھى" + - "رى موتۇچەكىرودىچەھايتىچەۋېنگىرچەئەرمېنچەخېرېروچەئارىلىق تىلھىندونېز" + - "چەئىنتىرلىڭچەئىگبوچەيىچە (سىچۈەن)ئىنۇپىكچەئىدوچەئىسلاندچەئىتالىيانچ" + - "ەئىنۇكتىتۇتچەياپونچەياۋاچەگىرۇزچەكونگوچەكىكۇيۇچەكىۋانياماچەقازاقچەگ" + - "ىرېنلاندچەكىمېرچەكانناداچەكورېيەچەكانۇرچەكەشمىرچەكۇردچەكومىچەكورنىش" + - "چەقىرغىزچەلاتىنچەلىيۇكسېمبۇرگچەگانداچەلىمبۇرگچەلىنگالاچەلائوسچەلىتۋ" + - "انىچەلۇبا-كاتانگاچەلاتچەمالاگاسچەمارشالچەماۋرىچەماكېدونچەمالايالامچ" + - "ەموڭغۇلچەماراتىچەمالايچەمالتاچەبىرماچەناۋرۇچەشىمالى ندەبەلەچەنېپالچ" + - "ەندونگاچەگوللاندچەيېڭى نورۋېگچەنورۋىگىيە بوكمالچەجەنۇبى ندەبەلەچەنا" + - "ۋاخوچەنىيانجاچەئوكسىتچەئوجىبۋاچەئوروموچەئودىياچەئوسسېتچەچەپەنجابچەپ" + - "الىچەپولەكچەپۇشتۇچەپورتۇگالچەكېچىۋاچەرومانسچەرۇندىچەرومىنچەرۇسچەكېن" + - "ىيەرىۋانداچەسانسكرىتچەساردىنىيەچەسىندىچەشىمالىي سامىچەسانگوچەسىنگال" + - "چەسىلوۋاكچەسىلوۋېنچەساموئاچەشوناچەسومالىچەئالبانچەسېربچەسىۋاتىچەسوت" + - "وچەسۇنداچەشىۋېدچەسىۋاھىلچەتامىلچەتېلۇگۇچەتاجىكچەتايلاندچەتىگرىنياچە" + - "تۈركمەنچەسىۋاناچەتونگانچەتۈركچەسونگاچەتاتارچەتاختىچەئۇيغۇرچەئۇكرائى" + - "نچەئوردۇچەئۆزبېكچەۋېنداچەۋىيېتنامچەۋولاپۇكچەۋاللۇنچەۋولوفچەخوساچەيى" + - "ددىشچەيورۇباچەجۇاڭچەخەنزۇچەزۇلۇچەئاتجېچەئاچولىچەئاداڭمېچەئادىگېيچەئ" + - "افرىخىلىچەئاگەمچەئاينۇچەئاككادچەئالېيۇتچەجەنۇبى ئالتاي تىللىرىقەدىم" + - "كى ئىنگلىزچەئانگىكاچەئارامۇچەماپۇدۇنگۇنچەئاراپاخوچەئاراۋاكچەئاسۇچەئ" + - "استۇرىيەچەئاۋادىچەبېلۇجىچەبالىچەباساچەبامۇنچەگومالاچەبېجاچەبېمباچەب" + - "ېناچەبافۇتچەبوجپۇرىچەبىكولچەبىنىچەكومچەسىكسىكاچەبىراجچەبودوچەئاكۇسچ" + - "ەبۇرىياتچەبۇگىچەبۇلۇچەبىلىنچەمېدۇمباچەكاددوچەكارىبچەكايۇگاچەئاتسامچ" + - "ەسېبۇچەچىگاچەچىبچاچەچاغاتايچەچۇكچەمارىچەچىنۇك-ژارگونچەچوكتاۋچەچىپېۋ" + - "يانچەچېروكىچەچېيېنچەمەركىزىي كۇردچەكوپتىكچەقىرىم تۈركچەكاسزۇبىچەداك" + - "وتاچەدارگىۋاچەتايتاچەدېلاۋارېچەسلاۋچەدوگرىبچەدىنكاچەزارماچەدوگرىچەت" + - "ۆۋەن سوربچەدۇئالاچەئوتتۇرا گوللاندىيەچەجولاچەدىيۇلاچەدازاگاچەئېمبۇچ" + - "ەئېفىكچەقەدىمكى مىسىرچەئېكاجۇكچەئېلامىتچەئوتتۇرا ئەسىر ئىنگلىزچەئېۋ" + - "وندوچەفاڭچەفىلىپپىنچەفونچەئوتتۇرا ئەسىر فىرانسۇزچەقەدىمكى فىرانسۇزچ" + - "ەشىمالى فىرىزيەچەشەرقى فىرىزيەچەفىرىئۇلىچەگاچەگايوچەگىباياچەگىزچەگى" + - "لبېرتچەئوتتۇرا ئەسىر ئېگىزلىك گېرمانچەقەدىمكى ئېگىزلىك گېرمانچەگوند" + - "ىچەگورونتالوچەگوتچەگرېبوچەقەدىمكى گىرېكچەگېرمانچە شىۋىتسارىيەگۇسىچە" + - "گىۋىچىنچەھەيدەچەھاۋايچەخىلىگاينونچەخىتتىتچەمۆڭچەئۈستۈن سوربچەخۇپاچە" + - "ئىبانچەئىبىبىئوچەئىلوكانوچەئىنگۇشچەلوجبانچەنگومباچەماچامچەئىبرانى پ" + - "ارسچەئىبرانى ئەرەبچەقارا-قالپاقچەكابىلېچەكاچىنچەجۇچەكامباچەكاۋىچەكا" + - "باردەيچەكانېمبۇچەتياپچەماكوندېچەكابۇۋېردىيانچەكوروچەكاسىچەخوتەنچەكو" + - "يرا چىنىچەكاكوچەكالېنجىنچەكىمبۇندۇچەكونكانچەكوسرايېچەكىپەللېچەقاراچ" + - "اي-بالقارچەكارەلچەكۇرۇخچەشامبالاچەبافىياچەكولىشچەقۇمۇقچەكۇتەنايچەلا" + - "دىنوچەلانگىچەلانداچەلامباچەلېزگىنچەمونگوچەلوزىچەلۇبا-لۇئاچەلۇيسېنگو" + - "چەلۇنداچەلۇئوچەمىزوچەلۇياچەمادۇرېسچەمافاچەماگاخىچەمايتىلىچەماكاسارچ" + - "ەماندىنگوچەماسايچەماباچەموكشاچەماندارچەمېندېچەمېرۇچەمورىسيېنچەئوتتۇ" + - "را ئەسىر ئىرېلاندچەماكۇۋاچەمېتاچە’مىكماكچەمىناڭكابائۇچەمانجۇچەمانىپ" + - "ۇرچەموخاۋكچەموسسىچەمۇنداڭچەكۆپ تىللاركىرىكچەمىراندېسچەمارۋارىچەميېن" + - "ېچەئېرزاچەناپولىچەناماچەتۆۋەن گېرمانچەنېۋارىچەنىئاسچەنيۇئېچەكۋاسىيو" + - "چەنگېمبۇنچەنوغايچەقەدىمكى نورۋېگچەنىكوچەشىمالىي سوتوچەمۇئېرچەنېۋارچ" + - "ەنيامۋېزىچەنىيانكولېچەنىئوروچەنىزەماچەئوساگېلارچەئوسمان تۈركچەپانگا" + - "سىنانچەپەھلەۋىچەپامپانگاچەپاپىيامېنتوچەپالاۋچەقەدىمكى پارىسچەفىنىكى" + - "يەچەپوناپېئانچەقەدىمكى پروۋېنچالچەراجاستانچەراپانىيچەرومبوچەسىگانچە" + - "ئارومانچەرىۋاچەسانداۋېچەساخاچەسامارىتانچەسامبۇرۇچەساساكچەسانتالچەنگ" + - "امبايچەسانگۇچەسىتسىلىيەچەشوتلاندىيەچەسېكنېكاچەسېناچەسېلكاپچەشەرقىي " + - "سوڭخايچەقەدىمكى ئىرېلاندچەشىلخاچەشانچەچاد ئەرەبچەسىداموچەجەنۇبىي سا" + - "مىچەلۇلې سامىچەئىنارى سامىچەسكولت سامىچەسونىنكەچەسوغدىچەسىرانان-توڭ" + - "وچەسېرېرچەساخوچەسۇكۇماچەسۇسۇچەسۈمەرچەكومورىچەقەدىمىي سۇرىيەچەسۇرىيە" + - "چەتېمنېچەتېسوچەتېرېناچەتېتۇمچەتىگرېچەتىۋچەتوكېلاۋچەكىلىنگونچەتىلىنگ" + - "ىتچەتاماشېكچەنياسا توڭانچەتوك-پىسىنچەتوروكوچەسىمشيانچەتۇمبۇكاچەتۇۋا" + - "لۇچەشىمالىي سوڭخايچەتوۋاچەمەركىزىي ئاتلاس تامازايتچەئۇدمۇرتچەئۇگارى" + - "تىكچەئۇمبۇندۇچەيوچۇن تىلۋايچەۋوتېچەۋۇنجوچەۋالسېرچەۋولايتاچەۋارايچەۋ" + - "اشوچەقالماقچەسوگاچەياۋچەياپچەياڭبەنچەيېمباچەگۇاڭدوڭچەزاپوتېكچەبىلىس" + - " بەلگىلىرىزېناگاچەئۆلچەملىك ماراكەش تامازىتچەزۇنىچەتىل مەزمۇنى يوقزا" + - "زاچەھازىرقى زامان ئۆلچەملىك ئەرەبچەئاۋستىرىيە گېرمانچەشىۋىتسارىيە ئ" + - "ېگىزلىك گېرمانچەئاۋسترالىيە ئىنگلىزچەكانادا ئىنگلىزچەئەنگلىيە ئىنگل" + - "ىزچەئامېرىكا ئىنگلىزچەلاتىن ئامېرىكا ئىسپانچەياۋروپا ئىسپانچەمېكسىك" + - "ا ئىسپانچەكانادا فىرانسۇزچەشىۋىتسارىيە فىرانسۇزچەبىرازىلىيە پورتۇگا" + - "لچەياۋروپا پورتۇگالچەسېرب-كرودىيەچەكونگو سىۋالىچەئاددىي خەنچەمۇرەكك" + - "ەپ خەنچە", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x001e, 0x0030, 0x0044, 0x0052, 0x0062, 0x0074, - 0x0082, 0x0090, 0x009e, 0x00b0, 0x00ca, 0x00dc, 0x00ee, 0x00fe, - 0x0110, 0x0122, 0x0132, 0x0140, 0x0152, 0x0160, 0x0172, 0x0180, - 0x0192, 0x01a0, 0x01aa, 0x01b4, 0x01d5, 0x01e3, 0x01ef, 0x01fd, - 0x020d, 0x021b, 0x0229, 0x0235, 0x0243, 0x0255, 0x026b, 0x027b, - 0x028b, 0x0299, 0x02a5, 0x02b3, 0x02bd, 0x02c9, 0x02d9, 0x02ed, - 0x0306, 0x031a, 0x033f, 0x034b, 0x035f, 0x0371, 0x037b, 0x038b, - 0x039f, 0x03ad, 0x03c2, 0x03d2, 0x03e0, 0x03f0, 0x0400, 0x0410, - // Entry 40 - 7F - 0x0425, 0x0439, 0x044f, 0x045d, 0x0474, 0x0486, 0x0492, 0x04a4, - 0x04ba, 0x04d2, 0x04e0, 0x04ec, 0x04fa, 0x0508, 0x0518, 0x052e, - 0x053c, 0x0552, 0x0560, 0x0572, 0x0582, 0x0590, 0x05a0, 0x05ac, - 0x05b8, 0x05c8, 0x05d8, 0x05e6, 0x0602, 0x0610, 0x0622, 0x0634, - 0x0642, 0x0654, 0x066f, 0x0679, 0x068b, 0x069b, 0x06a9, 0x06bb, - 0x06d1, 0x06e1, 0x06f1, 0x06ff, 0x070d, 0x071b, 0x0729, 0x0748, - 0x0756, 0x0766, 0x0778, 0x0791, 0x07b4, 0x07d3, 0x07e3, 0x07f5, - 0x0805, 0x0817, 0x0827, 0x0837, 0x084b, 0x085b, 0x0867, 0x0875, - // Entry 80 - BF - 0x0883, 0x0897, 0x08a7, 0x08b7, 0x08c5, 0x08d3, 0x08dd, 0x08fb, - 0x090f, 0x0925, 0x0933, 0x094e, 0x095c, 0x096c, 0x097e, 0x0990, - 0x09a0, 0x09ac, 0x09bc, 0x09cc, 0x09d8, 0x09e8, 0x09f4, 0x0a02, - 0x0a10, 0x0a22, 0x0a30, 0x0a40, 0x0a4e, 0x0a60, 0x0a74, 0x0a86, - 0x0a96, 0x0aa6, 0x0ab2, 0x0ac0, 0x0ace, 0x0adc, 0x0aec, 0x0b00, - 0x0b0e, 0x0b1e, 0x0b2c, 0x0b40, 0x0b52, 0x0b62, 0x0b70, 0x0b7c, - 0x0b8c, 0x0b9c, 0x0ba8, 0x0bb6, 0x0bc2, 0x0bd0, 0x0be0, 0x0bf2, - 0x0c04, 0x0c04, 0x0c1a, 0x0c28, 0x0c36, 0x0c46, 0x0c46, 0x0c58, - // Entry C0 - FF - 0x0c58, 0x0c80, 0x0ca1, 0x0cb3, 0x0cc3, 0x0cdb, 0x0cdb, 0x0cef, - 0x0cef, 0x0cef, 0x0d01, 0x0d01, 0x0d01, 0x0d0d, 0x0d0d, 0x0d23, - 0x0d23, 0x0d33, 0x0d43, 0x0d4f, 0x0d4f, 0x0d5b, 0x0d69, 0x0d69, - 0x0d79, 0x0d85, 0x0d93, 0x0d93, 0x0d9f, 0x0dad, 0x0dad, 0x0dad, - 0x0dbf, 0x0dcd, 0x0dd9, 0x0dd9, 0x0de3, 0x0df5, 0x0df5, 0x0df5, - 0x0e03, 0x0e03, 0x0e0f, 0x0e1d, 0x0e2f, 0x0e3b, 0x0e47, 0x0e55, - 0x0e67, 0x0e75, 0x0e83, 0x0e93, 0x0ea3, 0x0ea3, 0x0eaf, 0x0ebb, - 0x0ec9, 0x0edb, 0x0ee5, 0x0ef1, 0x0f0c, 0x0f1c, 0x0f30, 0x0f40, - // Entry 100 - 13F - 0x0f4e, 0x0f6b, 0x0f7b, 0x0f7b, 0x0f92, 0x0f92, 0x0fa4, 0x0fb4, - 0x0fc6, 0x0fd4, 0x0fe8, 0x0ff4, 0x1004, 0x1012, 0x1020, 0x102e, - 0x1045, 0x1045, 0x1055, 0x107c, 0x1088, 0x1098, 0x10a8, 0x10b6, - 0x10c4, 0x10c4, 0x10e1, 0x10f3, 0x1105, 0x1131, 0x1131, 0x1143, - 0x1143, 0x114d, 0x1161, 0x1161, 0x116b, 0x116b, 0x1199, 0x11bc, - 0x11bc, 0x11db, 0x11f8, 0x120c, 0x1214, 0x1214, 0x1214, 0x1220, - 0x1230, 0x1230, 0x123a, 0x124c, 0x124c, 0x1287, 0x12b7, 0x12b7, - 0x12c5, 0x12db, 0x12e5, 0x12f3, 0x1310, 0x1337, 0x1337, 0x1337, - // Entry 140 - 17F - 0x1343, 0x1355, 0x1363, 0x1363, 0x1371, 0x1371, 0x1389, 0x1399, - 0x13a3, 0x13bc, 0x13bc, 0x13c8, 0x13d6, 0x13ea, 0x13fe, 0x140e, - 0x140e, 0x140e, 0x141e, 0x142e, 0x143c, 0x1457, 0x1474, 0x1474, - 0x148d, 0x149d, 0x14ab, 0x14b3, 0x14c1, 0x14cd, 0x14e1, 0x14f3, - 0x14ff, 0x1511, 0x152d, 0x152d, 0x1539, 0x1539, 0x1545, 0x1553, - 0x156a, 0x156a, 0x156a, 0x1576, 0x158a, 0x159e, 0x159e, 0x15ae, - 0x15c0, 0x15d2, 0x15f1, 0x15f1, 0x15f1, 0x15ff, 0x160d, 0x161f, - 0x162f, 0x163d, 0x164b, 0x165d, 0x166d, 0x167b, 0x1689, 0x1697, - // Entry 180 - 1BF - 0x16a7, 0x16a7, 0x16a7, 0x16a7, 0x16a7, 0x16a7, 0x16b5, 0x16b5, - 0x16c1, 0x16c1, 0x16c1, 0x16d6, 0x16ea, 0x16f8, 0x1704, 0x1710, - 0x171c, 0x171c, 0x171c, 0x172e, 0x173a, 0x174a, 0x175c, 0x176e, - 0x1782, 0x1790, 0x179c, 0x17aa, 0x17ba, 0x17c8, 0x17d4, 0x17e8, - 0x1816, 0x1826, 0x1835, 0x1845, 0x185f, 0x186d, 0x187f, 0x188f, - 0x189d, 0x189d, 0x18ad, 0x18c0, 0x18ce, 0x18e2, 0x18f4, 0x18f4, - 0x1902, 0x1910, 0x1910, 0x1910, 0x1920, 0x192c, 0x1947, 0x1957, - 0x1965, 0x1973, 0x1973, 0x1985, 0x1997, 0x19a5, 0x19c4, 0x19c4, - // Entry 1C0 - 1FF - 0x19d0, 0x19eb, 0x19f9, 0x1a07, 0x1a1b, 0x1a31, 0x1a41, 0x1a51, - 0x1a67, 0x1a80, 0x1a98, 0x1aaa, 0x1abe, 0x1ad8, 0x1ae6, 0x1ae6, - 0x1ae6, 0x1ae6, 0x1ae6, 0x1b03, 0x1b03, 0x1b17, 0x1b17, 0x1b17, - 0x1b2d, 0x1b2d, 0x1b52, 0x1b52, 0x1b52, 0x1b66, 0x1b78, 0x1b78, - 0x1b78, 0x1b78, 0x1b86, 0x1b94, 0x1b94, 0x1b94, 0x1b94, 0x1ba6, - 0x1bb2, 0x1bc4, 0x1bd0, 0x1be6, 0x1bf8, 0x1c06, 0x1c16, 0x1c16, - 0x1c28, 0x1c36, 0x1c4c, 0x1c64, 0x1c64, 0x1c64, 0x1c76, 0x1c82, - 0x1c82, 0x1c92, 0x1caf, 0x1cd2, 0x1cd2, 0x1ce0, 0x1cea, 0x1cff, - // Entry 200 - 23F - 0x1d0f, 0x1d0f, 0x1d0f, 0x1d2a, 0x1d3f, 0x1d58, 0x1d6f, 0x1d81, - 0x1d8f, 0x1daa, 0x1db8, 0x1dc4, 0x1dc4, 0x1dd4, 0x1de0, 0x1dee, - 0x1dfe, 0x1e1d, 0x1e2d, 0x1e2d, 0x1e2d, 0x1e3b, 0x1e47, 0x1e57, - 0x1e65, 0x1e73, 0x1e7d, 0x1e8f, 0x1e8f, 0x1ea3, 0x1eb7, 0x1eb7, - 0x1ec9, 0x1ee2, 0x1ef7, 0x1ef7, 0x1f07, 0x1f07, 0x1f19, 0x1f19, - 0x1f2b, 0x1f3b, 0x1f5a, 0x1f66, 0x1f98, 0x1faa, 0x1fc0, 0x1fd4, - 0x1fe5, 0x1fef, 0x1fef, 0x1fef, 0x1fef, 0x1fef, 0x1ffb, 0x1ffb, - 0x2009, 0x2019, 0x202b, 0x2039, 0x2045, 0x2045, 0x2045, 0x2055, - // Entry 240 - 27F - 0x2055, 0x2061, 0x206b, 0x2075, 0x2085, 0x2093, 0x2093, 0x20a5, - 0x20b7, 0x20d4, 0x20d4, 0x20e4, 0x2118, 0x2124, 0x2140, 0x214c, - 0x2187, 0x2187, 0x21ac, 0x21e4, 0x220d, 0x222c, 0x224f, 0x2272, - 0x229e, 0x22bd, 0x22dc, 0x22dc, 0x22fd, 0x2328, 0x2328, 0x2328, - 0x2351, 0x2374, 0x2374, 0x238f, 0x23aa, 0x23c1, 0x23dc, - }, - }, - { // uk - ukLangStr, - ukLangIdx, - }, - { // ur - urLangStr, - urLangIdx, - }, - { // ur-IN - "کروشینجاوانیزجارجيائىکلالیسٹکنڑکرداودھیسورانی کردیزرمہمگہیمعیاری مراقشی " + - "تمازیقیجدید معیاری عربیآسان چینی", - []uint16{ // 614 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - // Entry 40 - 7F - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x001a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x0038, 0x0038, 0x003e, 0x003e, 0x003e, 0x003e, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 80 - BF - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry C0 - FF - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x0044, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, 0x004e, - // Entry 100 - 13F - 0x004e, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - // Entry 140 - 17F - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - // Entry 180 - 1BF - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - // Entry 1C0 - 1FF - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - // Entry 200 - 23F - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - // Entry 240 - 27F - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x009b, 0x009b, 0x009b, 0x009b, - 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, - 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, - 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00ca, - }, - }, - { // uz - uzLangStr, - uzLangIdx, - }, - { // uz-Arab - "دریپشتواوزبیک", - []uint16{ // 170 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - // Entry 40 - 7F - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - // Entry 80 - BF - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x001a, - }, - }, - { // uz-Cyrl - "афарчаабхазчаафрикаансаканчаамхарчаарагонарабчаассомчааварчааймараозарба" + - "йжончабошқирдчабеларусчаболгарчабисламабамбарчабенгалчатибетчабрето" + - "нчабоснийчакаталончачечен тиличаморрокорсиканчачехчаславянча (черко" + - "в)чуваш тилиуэлсчадатчанемисчадивехидзонгкаэвечагрекчаинглизчаэспер" + - "антоиспанчаэстончабаскчафорсийфулаҳфинчафижичафарерчафранцузчағарби" + - "й фризчаирландчашотландча гаеликгалицийчагуаранигужаротчамэнчахауса" + - "ибронийҳиндихорватчагаитянчавенгерчаарманчагерероинтерлингваиндонез" + - "чаигбоидоисландчаиталянчаинуктитутяпончаяванчагрузинчакикуюқозоқчаг" + - "ренландчахмерчаканнадакорейсчаканурикашмирчакурдчакорнчақирғизчалот" + - "инчалюксембургчагандачалингалчалаосчалитвачалуба-катангалатишчамала" + - "гасийчамаршалл тилимаоримакедончамалаяламмўғулчамаратхималай тилмал" + - "тачабирманчашимолий ндебеленепалчаголландчанорвегча нюнорскнорвегча" + - " бокмалжанубий ндебелчачеваокситанчаоромоодияпанжобчаполякчапуштупор" + - "тугалчакечуароманшчарундируминчарусчакиняруандасанскритсиндҳишимоли" + - "й саамчасангосингалчасловакчасловенчашонасомаличаалбанчасербчасвати" + - "сунданчашведчасуахилитамилчателугутожикчатайчатигринячатуркманчатон" + - "ганчатуркчататарчауйғурчаукраинчаурдуўзбекчавендаветнамчаволапюквол" + - "офчахосаиддишйорубахитойчазулуачинадангмэадигейагемчаайнуалеутангик" + - "амапудунгунарапахоасучаастурийчаавадхибаличабасаабембабеначабхожпур" + - "ибинибодочабугийчаблинчасебуанчачигачачуукчамаричоктавчачерокишайен" + - "нсорани-курдчадакотчадаргинчатаитачадогрибзармақуйи-сорбчадуалачади" + - "ола-фогнидазагаэмбучаэфикэкажукэвондончафилипинчафонфриулчагагеэзги" + - "лбертчагоронталонемисча (Швейцария)гусиигвичингавайчахилигайнонхмон" + - "гчаюқори сорбчахупа тилиибан тилиибибоилокоингушчангомбамачаме тили" + - "кабилчакажикамбачамакондечакабувердианукойра-чииникакокаленжинчакон" + - "канчашамбалабафиячакёлнчалангичалакотачалакотачашимолий лурилушайлу" + - "ҳямасайчамокша тилимендемеручаморисьенмахува-миттометамикмакминангк" + - "абауманипурчамогавкмоссимундангбир нечта тилкрикчамирандесэрзянчама" + - "зандераннаманиуэчаквасионгиембуннконуэрчанянколепапияментокичэромбо" + - "чааруминруанда тилисахасамбуручасанталисангучасенакойраборо-сеннита" + - "шелхитжанубий саамчалуле-саамчаинари-саамчасколт-саамчасаҳочакоморч" + - "асуриячатесотигретасавакмарказий атлас тамазигхтномаълум тилваивунж" + - "овалсерчаволяттасогаянгбенкантончатамазигхтТил таркиби йўқстандарт " + - "арабчаинглизча (Британия)инглизча (Америка)фламандчаконго-суахилисо" + - "ддалаштирилган хитойчаанъанавий хитойча", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x001a, 0x001a, 0x002c, 0x0038, 0x0046, 0x0052, - 0x005e, 0x006c, 0x0078, 0x0084, 0x009c, 0x00ae, 0x00c0, 0x00d0, - 0x00de, 0x00ee, 0x00fe, 0x010c, 0x011c, 0x012c, 0x013e, 0x0151, - 0x015f, 0x0173, 0x0173, 0x017d, 0x019c, 0x01af, 0x01bb, 0x01c5, - 0x01d3, 0x01df, 0x01ed, 0x01f7, 0x0203, 0x0213, 0x0225, 0x0233, - 0x0241, 0x024d, 0x0259, 0x0263, 0x026d, 0x0279, 0x0287, 0x0299, - 0x02b2, 0x02c2, 0x02e1, 0x02f3, 0x0301, 0x0313, 0x031d, 0x0327, - 0x0335, 0x033f, 0x033f, 0x034f, 0x035f, 0x036f, 0x037d, 0x0389, - // Entry 40 - 7F - 0x039f, 0x03b1, 0x03b1, 0x03b9, 0x03b9, 0x03b9, 0x03bf, 0x03cf, - 0x03df, 0x03f1, 0x03fd, 0x0409, 0x0419, 0x0419, 0x0423, 0x0423, - 0x0431, 0x0445, 0x0451, 0x045f, 0x046f, 0x047b, 0x048b, 0x0497, - 0x0497, 0x04a3, 0x04b3, 0x04c1, 0x04d9, 0x04e7, 0x04e7, 0x04f7, - 0x0503, 0x0511, 0x0528, 0x0536, 0x054c, 0x0563, 0x056d, 0x057f, - 0x058f, 0x059d, 0x05ab, 0x05bc, 0x05ca, 0x05da, 0x05da, 0x05f7, - 0x0605, 0x0605, 0x0617, 0x0636, 0x0653, 0x0672, 0x0672, 0x067a, - 0x068c, 0x068c, 0x0696, 0x069e, 0x069e, 0x06ae, 0x06ae, 0x06bc, - // Entry 80 - BF - 0x06c6, 0x06da, 0x06e4, 0x06f4, 0x06fe, 0x070c, 0x0716, 0x072a, - 0x073a, 0x073a, 0x0746, 0x0761, 0x076b, 0x077b, 0x078b, 0x079b, - 0x079b, 0x07a3, 0x07b3, 0x07c1, 0x07cd, 0x07d7, 0x07d7, 0x07e7, - 0x07f3, 0x0801, 0x080f, 0x081b, 0x0829, 0x0833, 0x0845, 0x0857, - 0x0857, 0x0867, 0x0873, 0x0873, 0x0881, 0x0881, 0x088f, 0x089f, - 0x08a7, 0x08b5, 0x08bf, 0x08cf, 0x08dd, 0x08dd, 0x08eb, 0x08f3, - 0x08fd, 0x0909, 0x0909, 0x0917, 0x091f, 0x0927, 0x0927, 0x0935, - 0x0941, 0x0941, 0x0941, 0x094d, 0x0955, 0x0955, 0x0955, 0x095f, - // Entry C0 - FF - 0x095f, 0x095f, 0x095f, 0x096b, 0x096b, 0x097f, 0x097f, 0x098d, - 0x098d, 0x098d, 0x098d, 0x098d, 0x098d, 0x0997, 0x0997, 0x09a9, - 0x09a9, 0x09b5, 0x09b5, 0x09c1, 0x09c1, 0x09cb, 0x09cb, 0x09cb, - 0x09cb, 0x09cb, 0x09d5, 0x09d5, 0x09e1, 0x09e1, 0x09e1, 0x09e1, - 0x09f1, 0x09f1, 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x09f9, 0x09f9, - 0x09f9, 0x09f9, 0x0a05, 0x0a05, 0x0a05, 0x0a13, 0x0a13, 0x0a1f, - 0x0a1f, 0x0a1f, 0x0a1f, 0x0a1f, 0x0a1f, 0x0a1f, 0x0a2f, 0x0a3b, - 0x0a3b, 0x0a3b, 0x0a47, 0x0a4f, 0x0a4f, 0x0a5f, 0x0a5f, 0x0a6b, - // Entry 100 - 13F - 0x0a77, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a90, 0x0a9e, - 0x0aae, 0x0abc, 0x0abc, 0x0abc, 0x0ac8, 0x0ac8, 0x0ad2, 0x0ad2, - 0x0ae7, 0x0ae7, 0x0af5, 0x0af5, 0x0b0a, 0x0b0a, 0x0b16, 0x0b22, - 0x0b2a, 0x0b2a, 0x0b2a, 0x0b36, 0x0b36, 0x0b36, 0x0b36, 0x0b48, - 0x0b48, 0x0b48, 0x0b5a, 0x0b5a, 0x0b60, 0x0b60, 0x0b60, 0x0b60, - 0x0b60, 0x0b60, 0x0b60, 0x0b6e, 0x0b72, 0x0b72, 0x0b72, 0x0b72, - 0x0b72, 0x0b72, 0x0b7a, 0x0b8c, 0x0b8c, 0x0b8c, 0x0b8c, 0x0b8c, - 0x0b8c, 0x0b9e, 0x0b9e, 0x0b9e, 0x0b9e, 0x0bc1, 0x0bc1, 0x0bc1, - // Entry 140 - 17F - 0x0bcb, 0x0bd7, 0x0bd7, 0x0bd7, 0x0be5, 0x0be5, 0x0bf9, 0x0bf9, - 0x0c07, 0x0c1e, 0x0c1e, 0x0c2f, 0x0c40, 0x0c4a, 0x0c54, 0x0c62, - 0x0c62, 0x0c62, 0x0c62, 0x0c6e, 0x0c83, 0x0c83, 0x0c83, 0x0c83, - 0x0c83, 0x0c91, 0x0c91, 0x0c99, 0x0ca7, 0x0ca7, 0x0ca7, 0x0ca7, - 0x0ca7, 0x0cb9, 0x0cd1, 0x0cd1, 0x0cd1, 0x0cd1, 0x0cd1, 0x0cd1, - 0x0ce6, 0x0ce6, 0x0ce6, 0x0cee, 0x0d02, 0x0d02, 0x0d02, 0x0d12, - 0x0d12, 0x0d12, 0x0d12, 0x0d12, 0x0d12, 0x0d12, 0x0d12, 0x0d20, - 0x0d2e, 0x0d3a, 0x0d3a, 0x0d3a, 0x0d3a, 0x0d48, 0x0d48, 0x0d48, - // Entry 180 - 1BF - 0x0d48, 0x0d48, 0x0d48, 0x0d48, 0x0d68, 0x0d68, 0x0d68, 0x0d68, - 0x0d68, 0x0d7f, 0x0d7f, 0x0d7f, 0x0d7f, 0x0d7f, 0x0d7f, 0x0d89, - 0x0d91, 0x0d91, 0x0d91, 0x0d91, 0x0d91, 0x0d91, 0x0d91, 0x0d91, - 0x0d91, 0x0d9f, 0x0d9f, 0x0db2, 0x0db2, 0x0dbc, 0x0dc8, 0x0dd8, - 0x0dd8, 0x0def, 0x0df7, 0x0e03, 0x0e19, 0x0e19, 0x0e2b, 0x0e37, - 0x0e41, 0x0e41, 0x0e4f, 0x0e67, 0x0e73, 0x0e83, 0x0e83, 0x0e83, - 0x0e83, 0x0e91, 0x0ea5, 0x0ea5, 0x0ea5, 0x0ead, 0x0ead, 0x0ead, - 0x0ead, 0x0eb9, 0x0eb9, 0x0ec5, 0x0ed5, 0x0ed5, 0x0ed5, 0x0ed5, - // Entry 1C0 - 1FF - 0x0edb, 0x0edb, 0x0ee7, 0x0ee7, 0x0ee7, 0x0ef5, 0x0ef5, 0x0ef5, - 0x0ef5, 0x0ef5, 0x0ef5, 0x0ef5, 0x0ef5, 0x0f09, 0x0f09, 0x0f09, - 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, 0x0f09, - 0x0f09, 0x0f09, 0x0f09, 0x0f11, 0x0f11, 0x0f11, 0x0f11, 0x0f11, - 0x0f11, 0x0f11, 0x0f1f, 0x0f1f, 0x0f1f, 0x0f1f, 0x0f1f, 0x0f2b, - 0x0f40, 0x0f40, 0x0f48, 0x0f48, 0x0f5a, 0x0f5a, 0x0f68, 0x0f68, - 0x0f68, 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f76, 0x0f7e, - 0x0f7e, 0x0f7e, 0x0f9b, 0x0f9b, 0x0f9b, 0x0fab, 0x0fab, 0x0fab, - // Entry 200 - 23F - 0x0fab, 0x0fab, 0x0fab, 0x0fc6, 0x0fdb, 0x0ff2, 0x1009, 0x1009, - 0x1009, 0x1009, 0x1009, 0x1015, 0x1015, 0x1015, 0x1015, 0x1015, - 0x1023, 0x1023, 0x1031, 0x1031, 0x1031, 0x1031, 0x1039, 0x1039, - 0x1039, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, - 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, 0x1043, - 0x1043, 0x1043, 0x1051, 0x1051, 0x107f, 0x107f, 0x107f, 0x107f, - 0x1096, 0x109c, 0x109c, 0x109c, 0x109c, 0x109c, 0x109c, 0x109c, - 0x10a6, 0x10b6, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, 0x10c4, - // Entry 240 - 27F - 0x10c4, 0x10cc, 0x10cc, 0x10cc, 0x10d8, 0x10d8, 0x10d8, 0x10e8, - 0x10e8, 0x10e8, 0x10e8, 0x10e8, 0x10fa, 0x10fa, 0x1116, 0x1116, - 0x1133, 0x1133, 0x1133, 0x1133, 0x1133, 0x1133, 0x1156, 0x1177, - 0x1177, 0x1177, 0x1177, 0x1177, 0x1177, 0x1177, 0x1177, 0x1189, - 0x1189, 0x1189, 0x1189, 0x1189, 0x11a2, 0x11d1, 0x11f2, - }, - }, - { // vai - "ꕉꕪꘋꕉꕆꕌꔸꕞꕌꖝꔆꕞꖩꔻꗂꔠꗸꘋꗩꕭꔷꗿꗡꕧꕮꔧꗥꗷꘋꕶꕱꕐꘊꔧꗨꗡꔻꘂꘋꗱꘋꔻꕌꖙꕢꔦꔺꖽꔟꗸꘋꔤꖆꕇꔻꘂꘋꔤꕼꔤꕚꔷꘂꘋꕧꕐꕇꔧꕧꕙꕇꔧ" + - "ꕃꘈꗢꖏꔸꘂꘋꕮꔒꔀꗩꕆꔻꕇꕐꔷꗍꔿꖛꕨꔬꗁꔒꔻꕶꕿꕃꔤꖄꕆꕇꘂꘋꗐꖺꔻꘂꘋꕟꖙꕡꖇꕮꔷꖬꔨꗵꘋꕚꕆꔷꕚꔤꗋꕃꖳꖴꔓꕇꘂꘋꖺꖦꔲꕩꕯ" + - "ꕆꔧꖎꖄꕑꕦꕇꔧꖮꖨꕙꔤ", - []uint16{ // 562 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0015, 0x0015, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x0036, - 0x0036, 0x0036, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x004e, 0x004e, 0x004e, 0x004e, 0x0057, 0x005d, 0x005d, 0x0066, - 0x0066, 0x0066, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x007e, - 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x0087, - 0x0087, 0x008d, 0x008d, 0x008d, 0x008d, 0x0099, 0x0099, 0x0099, - // Entry 40 - 7F - 0x0099, 0x00ab, 0x00ab, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00c0, 0x00c0, 0x00cc, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00e1, 0x00e1, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00f6, 0x00f6, 0x00ff, 0x00ff, 0x00ff, - 0x0108, 0x0108, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, - 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x0117, 0x0117, 0x0120, - // Entry 80 - BF - 0x0120, 0x012c, 0x012c, 0x012c, 0x012c, 0x013b, 0x014a, 0x0153, - 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, - 0x0153, 0x0153, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, - 0x0168, 0x0168, 0x0171, 0x0171, 0x0171, 0x0177, 0x0177, 0x0177, - 0x0177, 0x0177, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x018f, - 0x0195, 0x0195, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01ad, 0x01ad, 0x01b6, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - // Entry C0 - FF - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - // Entry 100 - 13F - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - // Entry 140 - 17F - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - // Entry 180 - 1BF - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - // Entry 1C0 - 1FF - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - // Entry 200 - 23F - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01c2, - }, - }, - { // vai-Latn - "AkaŋAmiháriLahabuBhelarusaŋBhɔgerɛŋBhɛŋgáliChɛJamáĩHɛlɛŋPooPanyɛĩPɛɛsiyɛ" + - "ŋFɛŋsiHawusaHíiŋdiHɔŋgérɛŋÍndonisiyɛŋÍgboItáliyɛŋJapaníĩJavaníĩKimɛ" + - "ɛ̃ tɛKoríyɛŋMaléeeBhɛmísiNipaliDɔchiPuŋjabhiPɔ́lésiPotokíiRomíniyɛŋ" + - "RɔshiyɛŋRawundaSomáliSúwídɛŋTamíliTáiTɔ́kiYukureniyɛŋƆduViyamíĩYórób" + - "haChaniĩZúluVai", - []uint16{ // 562 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x000d, 0x000d, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x0029, - 0x0029, 0x0029, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x003f, 0x003f, 0x003f, 0x003f, 0x0047, 0x004a, 0x004a, 0x0052, - 0x0052, 0x0052, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x006b, - 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0080, 0x0080, 0x0080, - // Entry 40 - 7F - 0x0080, 0x008e, 0x008e, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x009e, 0x009e, 0x00a7, 0x00b0, 0x00b0, 0x00b0, 0x00b0, 0x00b0, - 0x00b0, 0x00b0, 0x00bd, 0x00bd, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00c7, - 0x00c7, 0x00c7, 0x00c7, 0x00ce, 0x00ce, 0x00d7, 0x00d7, 0x00d7, - 0x00dd, 0x00dd, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00ec, 0x00ec, 0x00f6, - // Entry 80 - BF - 0x00f6, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x010a, 0x0115, 0x011c, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, - 0x011c, 0x011c, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, 0x0139, 0x0139, 0x0139, - 0x0139, 0x0139, 0x0140, 0x0140, 0x0140, 0x0140, 0x0140, 0x014d, - 0x0151, 0x0151, 0x0151, 0x015a, 0x015a, 0x015a, 0x015a, 0x015a, - 0x015a, 0x0163, 0x0163, 0x016a, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - // Entry C0 - FF - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - // Entry 100 - 13F - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - // Entry 140 - 17F - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - // Entry 180 - 1BF - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - // Entry 1C0 - 1FF - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - // Entry 200 - 23F - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, 0x016f, - 0x016f, 0x0172, - }, - }, - { // vi - viLangStr, - viLangIdx, - }, - { // vun - "KiakanyiKiamharyiKyiarabuKyibelarusiKyibulgaryiaKyibanglaKyicheckiKyijer" + - "umaniKyigirikiKyingerezaKyihispaniaKyiajemiKyifaransaKyihausaKyihind" + - "iKyihungariKyiindonesiaKyiigboKyiitalianoKyijapaniKyijavaKyikambodia" + - "KyikoreaKyimalesiaKyiburmaKyinepaliKyiholanziKyipunjabiKyipolandiKyi" + - "renoKyiromaniaKyirusiKyinyarwandaKyisomalyiKyiswidiKyitamilKyitailan" + - "diKyiturukyiKyiukraniaKyiurduKyivietinamuKyiyorubaKyichinaKyizuluKyi" + - "vunjo", - []uint16{ // 569 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0011, 0x0011, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0024, 0x0030, - 0x0030, 0x0030, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x004d, 0x004d, 0x004d, 0x004d, 0x0056, 0x0060, 0x0060, 0x006b, - 0x006b, 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x0085, - 0x0085, 0x008d, 0x008d, 0x008d, 0x008d, 0x0097, 0x0097, 0x0097, - // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00aa, 0x00aa, 0x00aa, 0x00aa, 0x00aa, - 0x00b5, 0x00b5, 0x00be, 0x00c5, 0x00c5, 0x00c5, 0x00c5, 0x00c5, - 0x00c5, 0x00c5, 0x00d0, 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00e2, 0x00e2, 0x00ea, 0x00ea, 0x00ea, - 0x00f3, 0x00f3, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0107, 0x0107, 0x0111, - // Entry 80 - BF - 0x0111, 0x0118, 0x0118, 0x0118, 0x0118, 0x0122, 0x0129, 0x0135, - 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, - 0x0135, 0x0135, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x0147, 0x0147, 0x014f, 0x014f, 0x014f, 0x015a, 0x015a, 0x015a, - 0x015a, 0x015a, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x016e, - 0x0175, 0x0175, 0x0175, 0x0181, 0x0181, 0x0181, 0x0181, 0x0181, - 0x0181, 0x018a, 0x018a, 0x0192, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry C0 - FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 100 - 13F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 140 - 17F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 180 - 1BF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 1C0 - 1FF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 200 - 23F - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x01a1, - }, - }, - { // wae - "AbčasišAfrikánsAmharišArabišAssamesišAymaraSerbaidšanišWísrussišBulgariš" + - "BengališTibetišBosnišKatalanišTšečišWalisišDänišTitšMalediwišButaniš" + - "GričišEnglišSchpanišEstnišBaskišPersišFinišFidšianišWälšIrišGalizišG" + - "uaraniGujaratiHausaHebräišHindiKroatišHaitianišUngarišArmenišIndones" + - "išIgboIisländišItalienišJapanišGeorgišKazačišKambodšanišKannadaKorea" + - "nišKašmirišKurdišKirgisišLatinišLuxemburgišLingalaLaotišLitauišLetti" + - "šMalagásiMaoriMazedonišMalayalamMongolišMarathiMalaíšMaltesišBurmes" + - "išNordndebeleNepalesišHoländišNorwegiš NynorskNorwegiš BokmålNyanjaO" + - "riyaOsétišPandšabišPolnišPaštuPortugisišQuečuaRätromanišRundiRumäniš" + - "RusišRuandišSanskritSindhiNordsamišSangoSingalesišSlowakišSlowenišSa" + - "moanišShonaSomališAlbanišSerbišSwaziSüdsothoSundanesišSchwedišSuahel" + - "išTamilišTeluguTadšikišThailändišTigrinjaTurkmenišTswanaTongaTürkišT" + - "songaTaitišUigurišUkrainišUrduUsbekišVendaVietnamesišWolofXhosaYorub" + - "aChinesišZuluEfikFilipinišHawaíanišNordsothoJakutišTetumNiwmelanesiš" + - "Unbekannti SchpračWalserÖštričišes TitšSchwizer HočtitšAuštrališes E" + - "nglišKanadišes EnglišBritišes EnglišAmerikanišes EnglišLatiamerikani" + - "šes SchpanišIberišes SchpanišKanadišes WälšSchwizer WälšFlämišBrasi" + - "lianišes PortugisišIberišes PortugisišVereifačts ChinesišTraditionel" + - "ls Chinesiš", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0009, 0x0009, 0x0012, 0x0012, 0x001a, 0x001a, - 0x0021, 0x002b, 0x002b, 0x0031, 0x003f, 0x003f, 0x004a, 0x0053, - 0x0053, 0x0053, 0x005c, 0x0064, 0x0064, 0x006b, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x007e, 0x007e, 0x007e, 0x0086, 0x008d, - 0x0092, 0x009c, 0x00a4, 0x00a4, 0x00ac, 0x00b3, 0x00b3, 0x00bc, - 0x00c3, 0x00ca, 0x00d1, 0x00d1, 0x00d7, 0x00e2, 0x00e2, 0x00e8, - 0x00e8, 0x00ed, 0x00ed, 0x00f5, 0x00fc, 0x0104, 0x0104, 0x0109, - 0x0112, 0x0117, 0x0117, 0x011f, 0x0129, 0x0131, 0x0139, 0x0139, - // Entry 40 - 7F - 0x0139, 0x0143, 0x0143, 0x0147, 0x0147, 0x0147, 0x0147, 0x0152, - 0x015c, 0x015c, 0x0164, 0x0164, 0x016c, 0x016c, 0x016c, 0x016c, - 0x0175, 0x0175, 0x0182, 0x0189, 0x0192, 0x0192, 0x019c, 0x01a3, - 0x01a3, 0x01a3, 0x01ac, 0x01b4, 0x01c0, 0x01c0, 0x01c0, 0x01c7, - 0x01ce, 0x01d6, 0x01d6, 0x01dd, 0x01e6, 0x01e6, 0x01eb, 0x01f5, - 0x01fe, 0x0207, 0x020e, 0x0216, 0x021f, 0x0228, 0x0228, 0x0233, - 0x023d, 0x023d, 0x0247, 0x0258, 0x0269, 0x0269, 0x0269, 0x026f, - 0x026f, 0x026f, 0x026f, 0x0274, 0x027c, 0x0287, 0x0287, 0x028e, - // Entry 80 - BF - 0x0294, 0x029f, 0x02a6, 0x02b2, 0x02b7, 0x02c0, 0x02c6, 0x02ce, - 0x02d6, 0x02d6, 0x02dc, 0x02e6, 0x02eb, 0x02f6, 0x02ff, 0x0308, - 0x0311, 0x0316, 0x031e, 0x0326, 0x032d, 0x0332, 0x033b, 0x0346, - 0x034f, 0x0358, 0x0360, 0x0366, 0x0370, 0x037c, 0x0384, 0x038e, - 0x0394, 0x0399, 0x03a1, 0x03a7, 0x03a7, 0x03ae, 0x03b6, 0x03bf, - 0x03c3, 0x03cb, 0x03d0, 0x03dc, 0x03dc, 0x03dc, 0x03e1, 0x03e6, - 0x03e6, 0x03ec, 0x03ec, 0x03f5, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - // Entry C0 - FF - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - // Entry 100 - 13F - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, 0x03f9, - 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, 0x03fd, - 0x03fd, 0x03fd, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, - 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, - 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, - 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, 0x0407, - // Entry 140 - 17F - 0x0407, 0x0407, 0x0407, 0x0407, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - // Entry 180 - 1BF - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, 0x0412, - // Entry 1C0 - 1FF - 0x0412, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, 0x041b, - 0x041b, 0x041b, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - // Entry 200 - 23F - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, 0x0423, - 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, 0x0428, - 0x0428, 0x0428, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, - 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, 0x0435, - 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, 0x0448, - 0x0448, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, - // Entry 240 - 27F - 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, - 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, 0x044e, - 0x044e, 0x044e, 0x0462, 0x0474, 0x0489, 0x049b, 0x04ac, 0x04c1, - 0x04dc, 0x04ef, 0x04ef, 0x04ef, 0x0500, 0x050f, 0x050f, 0x0517, - 0x0531, 0x0546, 0x0546, 0x0546, 0x0546, 0x055b, 0x0572, - }, - }, - { // wo - "AfrikaansAmharikAraabAsameAserbayjaneBaskirBelarisBilgaarBaŋlaTibetanBre" + - "tonBosñakKatalanKorsCekWelsDanuwaAlmaaDiweyiDsongkaaGeregÀngaleEsper" + - "antooEspañolEstoñiyeBaskPersPëlFeylàndeFeroosFarañseIrlàndeGaluwaa b" + - "u EkosGalisiyeGaraniGujaratiHawsaEbrëEndoKrowatKereyolu AytiOngruwaa" + - "ArmaniyeHereroEndonesiyeIgboIslàndeItaliyeInuktititSaponeSorsiyeKasa" + - "xXmerKannadaaKoreyeKanuriKashmiriKurdiKirgiisLatinLiksàmbursuwaaLaaw" + - "LituyaniyeLetoniyeMalagasiMawriMaseduwaaneMalayalamMongoliyeMaratiMa" + - "layMaltBirmesNepaleNeyerlàndeNerwesiyeSewaOsitanOromoOjaPunjabiPolon" + - "ePastoPurtugeesKesuwaRomaasRumaniyeeRusKinyarwàndaSanskritSindiPenku" + - " SamiSinalaEslowaki (Eslowak)EsloweniyeSomali (làkk)AlbaneSerbSuwedu" + - "waaTamilTeluguTajisTayTigriñaTirkmenTonganTirkTatarUygurIkreniyeUrdu" + - "UsbekWendaWiyetnaamiyeWolofYidisYorubaSinuwaaBaliBembaSibiyanooMariC" + - "erokiKurdi gu DigguSorab-SuufFilipiyeHawayeHiligaynonSorab-KawIbibiy" + - "oKonkaniKuruksMendeManipuriMowakNiweyanPapiyamentoKisheSaxaSantaliSa" + - "mi gu SaalumLule SamiInari SamiEskolt SamiSiryakTamasis gu Digg Atla" + - "asLàkk wuñ xamulEspañol (Amerik Latin)Sinuwaa buñ woyofalSinuwaa bu " + - "cosaan", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0010, 0x0010, - 0x0015, 0x001a, 0x001a, 0x001a, 0x0025, 0x002b, 0x0032, 0x0039, - 0x0039, 0x0039, 0x003f, 0x0046, 0x004c, 0x0053, 0x005a, 0x005a, - 0x005a, 0x005e, 0x005e, 0x0061, 0x0061, 0x0061, 0x0065, 0x006b, - 0x0070, 0x0076, 0x007e, 0x007e, 0x0083, 0x008a, 0x0094, 0x009c, - 0x00a5, 0x00a9, 0x00ad, 0x00b1, 0x00ba, 0x00ba, 0x00c0, 0x00c8, - 0x00c8, 0x00d0, 0x00df, 0x00e7, 0x00ed, 0x00f5, 0x00f5, 0x00fa, - 0x00ff, 0x0103, 0x0103, 0x0109, 0x0116, 0x011e, 0x0126, 0x012c, - // Entry 40 - 7F - 0x012c, 0x0136, 0x0136, 0x013a, 0x013a, 0x013a, 0x013a, 0x0142, - 0x0149, 0x0152, 0x0158, 0x0158, 0x015f, 0x015f, 0x015f, 0x015f, - 0x0164, 0x0164, 0x0168, 0x0170, 0x0176, 0x017c, 0x0184, 0x0189, - 0x0189, 0x0189, 0x0190, 0x0195, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a8, 0x01b2, 0x01b2, 0x01ba, 0x01c2, 0x01c2, 0x01c7, 0x01d2, - 0x01db, 0x01e4, 0x01ea, 0x01ef, 0x01f3, 0x01f9, 0x01f9, 0x01f9, - 0x01ff, 0x01ff, 0x020a, 0x020a, 0x0213, 0x0213, 0x0213, 0x0217, - 0x021d, 0x021d, 0x0222, 0x0225, 0x0225, 0x022c, 0x022c, 0x0232, - // Entry 80 - BF - 0x0237, 0x0240, 0x0246, 0x024c, 0x024c, 0x0255, 0x0258, 0x0264, - 0x026c, 0x026c, 0x0271, 0x027b, 0x027b, 0x0281, 0x0293, 0x029d, - 0x029d, 0x029d, 0x02ab, 0x02b1, 0x02b5, 0x02b5, 0x02b5, 0x02b5, - 0x02be, 0x02be, 0x02c3, 0x02c9, 0x02ce, 0x02d1, 0x02d9, 0x02e0, - 0x02e0, 0x02e6, 0x02ea, 0x02ea, 0x02ef, 0x02ef, 0x02f4, 0x02fc, - 0x0300, 0x0305, 0x030a, 0x0316, 0x0316, 0x0316, 0x031b, 0x031b, - 0x0320, 0x0326, 0x0326, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, - 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, - // Entry C0 - FF - 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, - 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, 0x032d, - 0x032d, 0x032d, 0x032d, 0x0331, 0x0331, 0x0331, 0x0331, 0x0331, - 0x0331, 0x0331, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, - 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, - 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, - 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, 0x033f, 0x033f, - 0x033f, 0x033f, 0x033f, 0x0343, 0x0343, 0x0343, 0x0343, 0x0349, - // Entry 100 - 13F - 0x0349, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, 0x0357, - 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, - 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, - 0x0361, 0x0361, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, - 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, - 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, - 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, 0x0369, - // Entry 140 - 17F - 0x0369, 0x0369, 0x0369, 0x0369, 0x036f, 0x036f, 0x0379, 0x0379, - 0x0379, 0x0382, 0x0382, 0x0382, 0x0382, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, - 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0389, 0x0390, - 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0390, 0x0396, 0x0396, - 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, - // Entry 180 - 1BF - 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, - 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, - 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, - 0x0396, 0x0396, 0x0396, 0x0396, 0x0396, 0x039b, 0x039b, 0x039b, - 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x039b, 0x03a3, 0x03a8, - 0x03a8, 0x03a8, 0x03a8, 0x03a8, 0x03a8, 0x03a8, 0x03a8, 0x03a8, - 0x03a8, 0x03a8, 0x03a8, 0x03a8, 0x03a8, 0x03a8, 0x03a8, 0x03a8, - 0x03a8, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, - // Entry 1C0 - 1FF - 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, - 0x03af, 0x03af, 0x03af, 0x03af, 0x03af, 0x03ba, 0x03ba, 0x03ba, - 0x03ba, 0x03ba, 0x03ba, 0x03ba, 0x03ba, 0x03ba, 0x03ba, 0x03ba, - 0x03ba, 0x03ba, 0x03ba, 0x03bf, 0x03bf, 0x03bf, 0x03bf, 0x03bf, - 0x03bf, 0x03bf, 0x03bf, 0x03bf, 0x03bf, 0x03bf, 0x03bf, 0x03bf, - 0x03bf, 0x03bf, 0x03c3, 0x03c3, 0x03c3, 0x03c3, 0x03ca, 0x03ca, - 0x03ca, 0x03ca, 0x03ca, 0x03ca, 0x03ca, 0x03ca, 0x03ca, 0x03ca, - 0x03ca, 0x03ca, 0x03ca, 0x03ca, 0x03ca, 0x03ca, 0x03ca, 0x03ca, - // Entry 200 - 23F - 0x03ca, 0x03ca, 0x03ca, 0x03d8, 0x03e1, 0x03eb, 0x03f6, 0x03f6, - 0x03f6, 0x03f6, 0x03f6, 0x03f6, 0x03f6, 0x03f6, 0x03f6, 0x03f6, - 0x03f6, 0x03f6, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x03fc, - 0x03fc, 0x03fc, 0x03fc, 0x03fc, 0x0412, 0x0412, 0x0412, 0x0412, - 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, - 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, - // Entry 240 - 27F - 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, - 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, - 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, 0x0422, - 0x0439, 0x0439, 0x0439, 0x0439, 0x0439, 0x0439, 0x0439, 0x0439, - 0x0439, 0x0439, 0x0439, 0x0439, 0x0439, 0x044d, 0x045e, - }, - }, - { // xog - "OluakaaniOluamharikiOluwarabuOlubelarusiOlubulugariyaOlubengaliOluceekeO" + - "ludaakiOluyonaaniOlungerezaOlusipanyaOluperusiOlufalansaOluhawuzaOlu" + - "hinduOluhangareOluyindonezyaOluyiboOluyitaleOlujapaniOlunnajjavaOluk" + - "meOlukoreyaOlumalayiOlubbamaOlunepaliOluholandiOlupunjabiOlupolandiO" + - "lupotugiiziOlulomaniyaOlulasaOlunarwandaOlusomaliyaOluswideniOlutami" + - "iruOluttaayiOlutakeOluyukurayineOlu-uruduOluvyetinaamuOluyorubaOluca" + - "yinaOluzzuluOlusoga", - []uint16{ // 578 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0014, 0x0014, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0028, 0x0035, - 0x0035, 0x0035, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x004f, 0x004f, 0x004f, 0x004f, 0x0059, 0x0063, 0x0063, 0x006d, - 0x006d, 0x006d, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0089, - 0x0089, 0x0091, 0x0091, 0x0091, 0x0091, 0x009b, 0x009b, 0x009b, - // Entry 40 - 7F - 0x009b, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00af, 0x00af, 0x00af, - 0x00b8, 0x00b8, 0x00c1, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00e4, 0x00e4, 0x00ec, 0x00ec, 0x00ec, - 0x00f5, 0x00f5, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x0109, 0x0109, 0x0113, - // Entry 80 - BF - 0x0113, 0x011f, 0x011f, 0x011f, 0x011f, 0x012a, 0x0131, 0x013c, - 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0151, 0x0151, 0x015b, 0x015b, 0x015b, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x0178, - 0x0181, 0x0181, 0x0181, 0x018e, 0x018e, 0x018e, 0x018e, 0x018e, - 0x018e, 0x0197, 0x0197, 0x01a0, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry C0 - FF - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry 100 - 13F - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry 140 - 17F - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry 180 - 1BF - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry 1C0 - 1FF - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry 200 - 23F - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry 240 - 27F - 0x01a8, 0x01af, - }, - }, - { // yav - "akánɛamalíképakaspielúsebulgálɛpengálɛ́ɛcɛ́kɛ́ɛŋndiámanyavánɛíŋgilísénu" + - "ɛspanyɔ́lɛnupɛ́lisɛfeleŋsípakasíndíɔ́ŋgɛíndonísiɛíboitáliɛndiámanyá" + - "vanɛkímɛɛkolíemáliɛbímanɛnunipálɛnilándɛnupunsapíɛ́nupolonɛ́ɛnupɔlit" + - "ukɛ́ɛnulumɛ́ŋɛnulúsenuluándɛ́ɛnusomalíɛnusuetuanutámulenutáyɛnutúluk" + - "enukeleniɛ́ŋɛnulutúnufiɛtnamíɛŋnuyolúpasinúɛnusulúnuasue", - []uint16{ // 581 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000f, 0x000f, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x001e, 0x0027, - 0x0027, 0x0027, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x004a, 0x004a, 0x004a, 0x004a, 0x0052, 0x005e, 0x005e, 0x006e, - 0x006e, 0x006e, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0088, - 0x0088, 0x008e, 0x008e, 0x008e, 0x008e, 0x0097, 0x0097, 0x0097, - // Entry 40 - 7F - 0x0097, 0x00a3, 0x00a3, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - 0x00af, 0x00af, 0x00b7, 0x00bf, 0x00bf, 0x00bf, 0x00bf, 0x00bf, - 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00d4, 0x00d4, 0x00dc, 0x00dc, 0x00dc, - 0x00e6, 0x00e6, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, - 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00fd, 0x00fd, 0x010a, - // Entry 80 - BF - 0x010a, 0x011a, 0x011a, 0x011a, 0x011a, 0x0127, 0x012e, 0x013c, - 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x013c, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x014f, 0x014f, 0x0158, 0x0158, 0x0158, 0x0160, 0x0160, 0x0160, - 0x0160, 0x0160, 0x0169, 0x0169, 0x0169, 0x0169, 0x0169, 0x0179, - 0x0180, 0x0180, 0x0180, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, - 0x0190, 0x0199, 0x0199, 0x01a0, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - // Entry C0 - FF - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - // Entry 100 - 13F - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - // Entry 140 - 17F - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - // Entry 180 - 1BF - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - // Entry 1C0 - 1FF - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - // Entry 200 - 23F - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01a7, - // Entry 240 - 27F - 0x01a7, 0x01a7, 0x01a7, 0x01a7, 0x01ad, - }, - }, - { // yi - "אַפֿאַראַפֿריקאַנסאַמהאַרישאַראַגאנישאַראַבישאַסאַמישאַזערביידזשאַנישבעל" + - "אַרוסישבולגאַרישבענגאַלישטיבעטישברעטאנישבאסנישקאַטאַלאנישטשעכישקלוי" + - "סטער־סלאַווישוועלשישדענישדײַטשגריכישענגלישעספּעראַנטאשפּאַנישעסטישב" + - "אַסקישפּערסישפֿינישפֿידזשיפֿאַראישפֿראַנצויזישמערב־פֿריזישאירישסקאט" + - "יש געלישגאַלישישמאַנקסהאַוסאַהעברעאישהינדיקראאַטישאונגערישאַרמענישא" + - "ינדאנעזישאידאאיסלאַנדישאיטאַליענישיאַפּאַנישיאַוואַנעזישגרוזינישקאַ" + - "זאַכישכמערקאַנאַדאַקארעאישקורדישקארנישקירגיזישלאטיינישלוקסעמבורגישל" + - "אַאליטווישלעטישמאַארישמאַקעדאנישמאַלאַיאַלאַםמאנגאלישמאַלטעזישבירמא" + - "ַנישנעפּאַלישהאלענדישנײַ־נארוועגישנארוועגישאקסיטאַנישאסעטישפּוילישפ" + - "ּאַשטאָפּארטוגעזישרומענישרוסישסאַנסקריטסאַרדישסינדהינארדסאַמישסינהא" + - "ַלישסלאוואַקישסלאווענישסאַמאאַניששאנאַסאמאַלישאַלבאַנישסערביששוועדי" + - "שסוואַהילישטאַמילטורקמענישטאָטערישאוקראַאינישאורדואוזבעקישוויעטנאַמ" + - "עזישוואלאַפּוקייִדישכינעזישזולואַקאַדישאַלט ענגלישאַראַמישבאַלינעזי" + - "שבײַערישסעבואַנישקרים־טערקישקאַשובישאונטער־סארבישזשאלא־פֿאנימיטל ענ" + - "גלישפֿיליפּינאאַלט־פֿראַנצויזישדרום־פֿריזישמזרח־פֿריזישמיטל הויכדוי" + - "טשאַלט־ הויכדויטשגאטישאוראַלט־גריכישפידזשי הינדיאייבער־סארבישלאזשבא" + - "ָןיידיש־פערסישלאַדינאליווישמיזאנאַפּאליטַנישנידערדײַטשאַלט פּערסישפ" + - "ּרייסישרוסינישסיציליאַנישסקאטסאַלט־אירישאונטער שלעזישslyסומערישקאמא" + - "ריששלעזישטיגרעאומבאַוואוסטע שפּראַךמערב פֿלעמישפֿלעמישסערבא־קראאַטי" + - "שקאנגא־סוואַהיליש", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x000e, 0x000e, 0x0024, 0x0024, 0x0036, 0x004a, - 0x005a, 0x006a, 0x006a, 0x006a, 0x008a, 0x008a, 0x009e, 0x00b0, - 0x00b0, 0x00b0, 0x00c2, 0x00d0, 0x00e0, 0x00ec, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x010e, 0x0130, 0x0130, 0x013e, 0x0148, - 0x0152, 0x0152, 0x0152, 0x0152, 0x015e, 0x016a, 0x0180, 0x0190, - 0x019a, 0x01a8, 0x01b6, 0x01b6, 0x01c2, 0x01d0, 0x01e0, 0x01f8, - 0x0210, 0x021a, 0x0231, 0x0241, 0x0241, 0x0241, 0x024d, 0x025b, - 0x026b, 0x0275, 0x0275, 0x0285, 0x0285, 0x0295, 0x02a5, 0x02a5, - // Entry 40 - 7F - 0x02a5, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02b9, 0x02c1, 0x02d5, - 0x02eb, 0x02eb, 0x02ff, 0x0317, 0x0327, 0x0327, 0x0327, 0x0327, - 0x0339, 0x0339, 0x0341, 0x0353, 0x0361, 0x0361, 0x0361, 0x036d, - 0x036d, 0x0379, 0x0389, 0x0399, 0x03b1, 0x03b1, 0x03b1, 0x03b1, - 0x03b9, 0x03c7, 0x03c7, 0x03d1, 0x03d1, 0x03d1, 0x03df, 0x03f3, - 0x040d, 0x041d, 0x041d, 0x041d, 0x042f, 0x0441, 0x0441, 0x0441, - 0x0453, 0x0453, 0x0463, 0x047d, 0x048f, 0x048f, 0x048f, 0x048f, - 0x04a3, 0x04a3, 0x04a3, 0x04a3, 0x04af, 0x04af, 0x04af, 0x04bd, - // Entry 80 - BF - 0x04cd, 0x04e3, 0x04e3, 0x04e3, 0x04e3, 0x04f1, 0x04fb, 0x04fb, - 0x050d, 0x051b, 0x0527, 0x053b, 0x053b, 0x054d, 0x0561, 0x0573, - 0x0587, 0x0591, 0x05a1, 0x05b3, 0x05bf, 0x05bf, 0x05bf, 0x05bf, - 0x05cd, 0x05e1, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ed, 0x05ff, - 0x05ff, 0x05ff, 0x05ff, 0x05ff, 0x060f, 0x060f, 0x060f, 0x0625, - 0x062f, 0x063f, 0x063f, 0x0659, 0x066d, 0x066d, 0x066d, 0x066d, - 0x0679, 0x0679, 0x0679, 0x0687, 0x068f, 0x068f, 0x068f, 0x068f, - 0x068f, 0x068f, 0x068f, 0x068f, 0x068f, 0x069f, 0x069f, 0x069f, - // Entry C0 - FF - 0x069f, 0x069f, 0x06b4, 0x06b4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, - 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, 0x06c4, - 0x06c4, 0x06c4, 0x06c4, 0x06d8, 0x06e6, 0x06e6, 0x06e6, 0x06e6, - 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, - 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, - 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, - 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0x06f8, 0x06f8, - 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x06f8, - // Entry 100 - 13F - 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0x070e, 0x070e, 0x071e, 0x071e, - 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, 0x071e, - 0x0738, 0x0738, 0x0738, 0x0738, 0x074e, 0x074e, 0x074e, 0x074e, - 0x074e, 0x074e, 0x074e, 0x074e, 0x074e, 0x0763, 0x0763, 0x0763, - 0x0763, 0x0763, 0x0777, 0x0777, 0x0777, 0x0777, 0x0777, 0x0799, - 0x0799, 0x07b1, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, - 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07c9, 0x07e4, 0x0801, 0x0801, - 0x0801, 0x0801, 0x080b, 0x080b, 0x0827, 0x0827, 0x0827, 0x0827, - // Entry 140 - 17F - 0x0827, 0x0827, 0x0827, 0x0827, 0x0827, 0x083e, 0x083e, 0x083e, - 0x083e, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, 0x0858, - 0x0858, 0x0858, 0x0868, 0x0868, 0x0868, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, 0x0880, - 0x0880, 0x0880, 0x0880, 0x0880, 0x088e, 0x088e, 0x088e, 0x088e, - // Entry 180 - 1BF - 0x088e, 0x088e, 0x088e, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, - 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x089a, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08bc, 0x08bc, 0x08d0, 0x08d0, - 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, - // Entry 1C0 - 1FF - 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, - 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08d0, - 0x08d0, 0x08d0, 0x08d0, 0x08e7, 0x08e7, 0x08e7, 0x08e7, 0x08e7, - 0x08e7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, - 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x08f7, 0x0905, 0x0905, 0x0905, - 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, 0x0905, - 0x0905, 0x0905, 0x091b, 0x0925, 0x0925, 0x0925, 0x0925, 0x0925, - 0x0925, 0x0925, 0x0925, 0x0939, 0x0939, 0x0939, 0x0939, 0x0939, - // Entry 200 - 23F - 0x0939, 0x0952, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, - 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0955, 0x0963, - 0x0971, 0x0971, 0x0971, 0x097d, 0x097d, 0x097d, 0x097d, 0x097d, - 0x097d, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, - 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, - 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, 0x0987, - 0x09b0, 0x09b0, 0x09b0, 0x09b0, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - // Entry 240 - 27F - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, - 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09c7, 0x09d5, - 0x09d5, 0x09d5, 0x09d5, 0x09f1, 0x0a11, - }, - }, - { // yo - "Èdè AfrikaniÈdè AkaniÈdè AmarikiÈdè ArabikiTi AssamÈdè AzerbaijaniÈdè Be" + - "larusiÈdè BugariaÈdè BengaliÈdè BretoniÈdè BosniaÈdè CatalaÈdè seeki" + - "Èdè WelshiÈdè Ilẹ̀ DenmarkÈdè Ilẹ̀ GemaniÈdè GirikiÈdè Gẹ̀ẹ́sìÈdè E" + - "sperantoÈdè SipanisiÈdè EstoniaÈdè BaskiÈdè PasiaÈdè FinisiÈdè Faroe" + - "siÈdè FaranséÈdè FrisiaÈdè IrelandÈdè Gaelik ti Ilu ScotlandÈdè Gali" + - "ciaÈdè GuaraniÈdè GujaratiÈdè HausaÈdè HeberuÈdè HindiÈdè KroatiaÈdè" + - " HungariaÈdè Ile ArmeniaÈdè pipoÈdè IndonasiaIru ÈdèÈdè IboÈdè Icela" + - "ndicÈdè ItalianiÈdè JapanisiÈdè JavanasiÈdè GeorgiaÈdè kameriÈdè Kan" + - "nadaÈdè KoriaÈdè LatiniÈdè LithuaniaÈdè LatvianuÈdè MacedoniaÈdè mar" + - "athiÈdè MalayaÈdè MaltaÈdè BumiisiÈdè NepaliÈdè DukiÈdè NorwayÈdè Oc" + - "citaniÈdè PunjabiÈdè Ilẹ̀ PolandiÈdè PọtugiÈdè RomaniaÈdè ̣RọọsiaÈdè" + - " RuwandaÈdè awon ara IndoÈdè SindhiÈdè SinhaleseÈdè SlovakiÈdè Slove" + - "niaÈdè ara SomaliaÈdè AlbaniaÈdè SerbiaÈdè SesotoÈdè SudaniÈdè Suwid" + - "iisiÈdè SwahiliÈdè TamiliÈdè TeluguÈdè TaiÈdè TigrinyaÈdè TurkmenÈdè" + - " TọọkisiÈdè UkaniaÈdè UduÈdè UzbekÈdè JetinamuÈdè XhosaÈdè YiddishiÈ" + - "dè YorùbáÈdè MandariÈdè ṢuluÈdè FilipinoÈdè KlingoniÈdè Serbo-Croati" + - "ani", - []uint16{ // 612 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0019, 0x0026, 0x0026, - 0x0033, 0x003b, 0x003b, 0x003b, 0x004c, 0x004c, 0x005a, 0x0067, - 0x0067, 0x0067, 0x0074, 0x0074, 0x0081, 0x008d, 0x0099, 0x0099, - 0x0099, 0x0099, 0x0099, 0x00a4, 0x00a4, 0x00a4, 0x00b0, 0x00c5, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00e5, 0x00f9, 0x0108, 0x0116, - 0x0123, 0x012e, 0x0139, 0x0139, 0x0145, 0x0145, 0x0152, 0x0160, - 0x016c, 0x0179, 0x0195, 0x01a2, 0x01af, 0x01bd, 0x01bd, 0x01c8, - 0x01d4, 0x01df, 0x01df, 0x01ec, 0x01ec, 0x01fa, 0x020b, 0x020b, - // Entry 40 - 7F - 0x0215, 0x0224, 0x022d, 0x0236, 0x0236, 0x0236, 0x0236, 0x0245, - 0x0253, 0x0253, 0x0261, 0x026f, 0x027c, 0x027c, 0x027c, 0x027c, - 0x027c, 0x027c, 0x0288, 0x0295, 0x02a0, 0x02a0, 0x02a0, 0x02a0, - 0x02a0, 0x02a0, 0x02a0, 0x02ac, 0x02ac, 0x02ac, 0x02ac, 0x02ac, - 0x02ac, 0x02bb, 0x02bb, 0x02c9, 0x02c9, 0x02c9, 0x02c9, 0x02d8, - 0x02d8, 0x02d8, 0x02e5, 0x02f1, 0x02fc, 0x0309, 0x0309, 0x0309, - 0x0315, 0x0315, 0x031f, 0x031f, 0x032b, 0x032b, 0x032b, 0x032b, - 0x0339, 0x0339, 0x0339, 0x0339, 0x0339, 0x0346, 0x0346, 0x035b, - // Entry 80 - BF - 0x035b, 0x0369, 0x0369, 0x0369, 0x0369, 0x0376, 0x0388, 0x0395, - 0x03a8, 0x03a8, 0x03b4, 0x03b4, 0x03b4, 0x03c3, 0x03d0, 0x03de, - 0x03de, 0x03de, 0x03ef, 0x03fc, 0x0408, 0x0408, 0x0414, 0x0420, - 0x042f, 0x043c, 0x0448, 0x0454, 0x0454, 0x045d, 0x046b, 0x0478, - 0x0478, 0x0478, 0x0489, 0x0489, 0x0489, 0x0489, 0x0489, 0x0495, - 0x049e, 0x04a9, 0x04a9, 0x04b7, 0x04b7, 0x04b7, 0x04b7, 0x04c2, - 0x04d0, 0x04de, 0x04de, 0x04eb, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - // Entry C0 - FF - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - // Entry 100 - 13F - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, 0x04f7, - 0x04f7, 0x04f7, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - // Entry 140 - 17F - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - // Entry 180 - 1BF - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - // Entry 1C0 - 1FF - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - // Entry 200 - 23F - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, - 0x0505, 0x0505, 0x0505, 0x0505, 0x0505, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - // Entry 240 - 27F - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, 0x0513, - 0x0513, 0x0513, 0x0513, 0x0528, - }, - }, - { // yo-BJ - "Èdè Ilɛ̀ DenmarkÈdè Ilɛ̀ GemaniÈdè Gɛ̀ɛ́sìÈdè Ilɛ̀ PolandiÈdè PɔtugiÈdè " + - "̣RɔɔsiaÈdè TɔɔkisiÈdè Shulu", - []uint16{ // 181 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - // Entry 40 - 7F - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x004d, - // Entry 80 - BF - 0x004d, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, - 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, 0x0079, - 0x0079, 0x0079, 0x0079, 0x0079, 0x0084, - }, - }, - { // yue - "阿法文阿布哈茲文阿緯斯陀文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什客爾文白俄羅斯文保加利亞文比斯拉馬文班" + - "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰羅尼亞文車臣文查莫洛文科西嘉文克裡文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗" + - "卡文埃維文希臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉" + - "尼文古吉拉特文曼島文豪撒文希伯來文北印度文西里莫圖土文克羅埃西亞文海地文匈牙利文亞美尼亞文赫雷羅文國際文印尼文國際文(E)伊布文四川" + - "彝文依奴皮維克文伊多文冰島文義大利文因紐特文日文爪哇文喬治亞文剛果文吉庫尤文廣亞馬文哈薩克文格陵蘭文高棉文坎那達文韓文卡努裡文喀什米" + - "爾文庫爾德文科米文康瓦耳文吉爾吉斯文拉丁文盧森堡文干達文林堡文林加拉文寮文立陶宛文魯巴加丹加文拉脫維亞文馬拉加什文馬紹爾文毛利文馬其" + - "頓文馬來亞拉姆文蒙古文馬拉地文馬來文馬爾他文緬甸文諾魯文北地畢列文尼泊爾文恩東加文荷蘭文耐諾斯克挪威文巴克摩挪威文南地畢列文納瓦霍文" + - "尼揚賈文奧克西坦文奧杰布瓦文奧羅莫文歐利亞文奧塞提文旁遮普文巴利文波蘭文普什圖文葡萄牙文蓋楚瓦文羅曼斯文隆迪文羅馬尼亞文俄文盧安達文" + - "梵文撒丁文信德文北方薩米文桑戈文僧伽羅文斯洛伐克文斯洛維尼亞文薩摩亞文塞內加爾文索馬利文阿爾巴尼亞文塞爾維亞文斯瓦特文塞索托文巽他文" + - "瑞典文史瓦希里文坦米爾文泰盧固文塔吉克文泰文提格利尼亞文土庫曼文突尼西亞文東加文土耳其文特松加文韃靼文大溪地文維吾爾文烏克蘭文烏都文" + - "烏茲別克文溫達文越南文沃拉普克文瓦隆文沃洛夫文科薩文意第緒文約魯巴文壯文中文祖魯文亞齊文阿僑利文阿當莫文阿迪各文突尼斯阿拉伯文阿弗里" + - "希利文亞罕文阿伊努文阿卡德文阿拉巴馬文阿留申文蓋格阿爾巴尼亞文南阿爾泰文古英文昂加文阿拉米文馬普切文阿拉奧納文阿拉帕霍文阿爾及利亞阿" + - "拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿蘇文美國手語阿斯圖里亞文科塔瓦文阿瓦文俾路支文峇里文巴伐利亞文巴薩文巴姆穆文巴塔克托巴文" + - "戈馬拉文貝扎文別姆巴文貝塔維文貝納文富特文巴達加文西俾路支文博傑普爾文比科爾文比尼文班亞爾文康姆文錫克錫卡文比什奴普萊利亞文巴赫蒂亞" + - "里文布拉杰文布拉維文博多文阿庫色文布里阿特文布吉斯文布魯文比林文梅敦巴文卡多文加勒比文卡尤加文阿燦文宿霧文奇加文奇布查文查加文處奇斯" + - "文馬里文契奴克文喬克托文奇佩瓦揚文柴羅基文沙伊安文索拉尼庫爾德文科普特文卡皮茲文克里米亞半島的土耳其文;克里米亞半島的塔塔爾文法語克" + - "里奧爾混合語卡舒布文達科他文達爾格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎爾馬文多格來文下索布文中部杜順文杜亞拉文中古荷蘭文朱拉文" + - "迪尤拉文達薩文恩布文埃菲克文埃米利安文古埃及文艾卡朱克文埃蘭文中古英文中尤皮克文依汪都文埃斯特雷馬杜拉文芳族文菲律賓文托爾訥芬蘭文豐" + - "文卡真法文中古法文古法文法蘭克-普羅旺斯文北弗里西亞文東弗里西亞文弗留利文加族文加告茲文贛語加約文葛巴亞文索羅亞斯德教達里文吉茲文吉" + - "爾伯特群島文吉拉基文中古高地德文古高地日耳曼文孔卡尼文岡德文科隆達羅文哥德文格列博文古希臘文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文" + - "海達文客家話夏威夷文斐濟印地文希利蓋農文赫梯文孟文上索布文湘語胡帕文伊班文伊比比奧文伊洛闊文印古什文英格裏亞文牙買加克裏奧爾英文邏輯" + - "文恩格姆巴文馬恰美文猶太教-波斯文猶太阿拉伯文日德蘭文卡拉卡爾帕克文卡比爾文卡琴文卡捷文卡姆巴文卡威文卡巴爾達文卡念布文卡塔布文馬孔" + - "德文卡布威爾第文肯揚文科羅文坎剛文卡西文和闐文西桑海文科瓦文北紮紮其文卡庫文卡倫金文金邦杜文科米-彼爾米亞克文貢根文科斯雷恩文克佩列" + - "文卡拉柴-包爾卡爾文塞拉利昂克裏奧爾文基那來阿文卡累利阿文庫魯科文尚巴拉文巴菲亞文科隆文庫密克文庫特奈文拉迪諾文朗吉文拉亨達文蘭巴文" + - "列茲干文新共同語言利古里亞文利伏尼亞文拉科塔文倫巴底文芒戈文洛齊文北盧爾文拉特加萊文魯巴魯魯亞文路易塞諾文盧恩達文盧奧文盧晒文盧雅文" + - "文言文拉茲文馬都拉文馬法文馬加伊文邁蒂利文望加錫文曼丁哥文馬賽文馬巴文莫克沙文曼達文門德文梅魯文克里奧文(模里西斯)中古愛爾蘭文馬夸" + - "文美塔文米克馬克文米南卡堡文滿族文曼尼普裡文莫霍克文莫西文西馬裏文蒙當文多種語言克里克文米蘭德斯文馬爾尼裡文明打威文姆耶內文厄爾茲亞" + - "文馬贊德蘭文閩南語拿波里文納馬文低地德文尼瓦爾文尼亞斯文紐埃文阿沃那加文夸西奧文恩甘澎文諾蓋文古諾爾斯文諾維亞文曼德文字 (N’Ko" + - ")北索托文努埃爾文古尼瓦爾文尼揚韋齊文尼揚科萊文尼奧囉文尼茲馬文歐塞奇文鄂圖曼土耳其文潘加辛文巴列維文潘帕嘉文帕皮阿門托文帛琉文庇卡底文" + - "尼日利亞皮欽語賓夕法尼亞德文門諾低地德文古波斯文普法爾茨德文腓尼基文皮埃蒙特文旁狄希臘文波那貝文普魯士文古普羅旺斯文基切文欽博拉索海" + - "蘭蓋丘亞文拉賈斯坦諸文復活島文拉羅通加文羅馬格諾里文里菲亞諾文蘭博文吉普賽文羅圖馬島文盧森尼亞文羅維阿納文羅馬尼亞語系羅瓦文桑達韋文" + - "雅庫特文薩瑪利亞阿拉姆文薩布魯文撒撒克文散塔利文索拉什特拉文甘拜文桑古文西西里文蘇格蘭文薩丁尼亞-薩薩里文南庫爾德文塞訥卡文賽納文瑟" + - "里文瑟爾卡普文東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納裡薩米文斯" + - "科特薩米文索尼基文索格底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文古敘利亞文敘利亞文西利西亞文圖盧文提姆" + - "文特索文泰雷諾文泰頓文蒂格雷文提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩" + - "克尼恩文欽西安文穆斯林塔特文圖姆布卡文吐瓦魯文北桑海文土凡文塔馬齊格特文沃蒂艾克文烏加列文姆本杜文未知語言瓦伊文威尼斯文維普森文西佛" + - "蘭德文美茵-法蘭克尼亞文沃提克文佛羅文溫舊文瓦瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文" + - "奈恩加圖文粵語薩波特克文布列斯符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜" + - "文佛蘭芒文摩爾多瓦文塞爾維亞克羅埃西亞文史瓦希里文(剛果)簡體中文繁體中文", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a, - 0x0066, 0x0072, 0x007e, 0x008a, 0x0099, 0x00a8, 0x00b7, 0x00c6, - 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x0123, 0x012c, - 0x0138, 0x0144, 0x014d, 0x0156, 0x0168, 0x0174, 0x0180, 0x0189, - 0x018f, 0x019b, 0x01a4, 0x01ad, 0x01b6, 0x01bc, 0x01c5, 0x01d1, - 0x01e0, 0x01ec, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x021f, - 0x0231, 0x023d, 0x024f, 0x025e, 0x026a, 0x0279, 0x0282, 0x028b, - 0x0297, 0x02a3, 0x02b5, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7, - // Entry 40 - 7F - 0x0300, 0x0309, 0x0319, 0x0322, 0x032e, 0x0340, 0x0349, 0x0352, - 0x035e, 0x036a, 0x0370, 0x0379, 0x0385, 0x038e, 0x039a, 0x03a6, - 0x03b2, 0x03be, 0x03c7, 0x03d3, 0x03d9, 0x03e5, 0x03f4, 0x0400, - 0x0409, 0x0415, 0x0424, 0x042d, 0x0439, 0x0442, 0x044b, 0x0457, - 0x045d, 0x0469, 0x047b, 0x048a, 0x0499, 0x04a5, 0x04ae, 0x04ba, - 0x04cc, 0x04d5, 0x04e1, 0x04ea, 0x04f6, 0x04ff, 0x0508, 0x0517, - 0x0523, 0x052f, 0x0538, 0x054d, 0x055f, 0x056e, 0x057a, 0x0586, - 0x0595, 0x05a4, 0x05b0, 0x05bc, 0x05c8, 0x05d4, 0x05dd, 0x05e6, - // Entry 80 - BF - 0x05f2, 0x05fe, 0x060a, 0x0616, 0x061f, 0x062e, 0x0634, 0x0640, - 0x0646, 0x064f, 0x0658, 0x0667, 0x0670, 0x067c, 0x068b, 0x069d, - 0x06a9, 0x06b8, 0x06c4, 0x06d6, 0x06e5, 0x06f1, 0x06fd, 0x0706, - 0x070f, 0x071e, 0x072a, 0x0736, 0x0742, 0x0748, 0x075a, 0x0766, - 0x0775, 0x077e, 0x078a, 0x0796, 0x079f, 0x07ab, 0x07b7, 0x07c3, - 0x07cc, 0x07db, 0x07e4, 0x07ed, 0x07fc, 0x0805, 0x0811, 0x081a, - 0x0826, 0x0832, 0x0838, 0x083e, 0x0847, 0x0850, 0x085c, 0x0868, - 0x0874, 0x0889, 0x089b, 0x08a4, 0x08b0, 0x08bc, 0x08cb, 0x08d7, - // Entry C0 - FF - 0x08ef, 0x08fe, 0x0907, 0x0910, 0x091c, 0x0928, 0x0937, 0x0946, - 0x0961, 0x0961, 0x0970, 0x0985, 0x0997, 0x09a0, 0x09ac, 0x09be, - 0x09ca, 0x09d3, 0x09df, 0x09e8, 0x09f7, 0x0a00, 0x0a0c, 0x0a1e, - 0x0a2a, 0x0a33, 0x0a3f, 0x0a4b, 0x0a54, 0x0a5d, 0x0a69, 0x0a78, - 0x0a87, 0x0a93, 0x0a9c, 0x0aa8, 0x0ab1, 0x0ac0, 0x0ad8, 0x0aea, - 0x0af6, 0x0b02, 0x0b0b, 0x0b17, 0x0b26, 0x0b32, 0x0b3b, 0x0b44, - 0x0b50, 0x0b59, 0x0b65, 0x0b71, 0x0b7a, 0x0b7a, 0x0b83, 0x0b8c, - 0x0b98, 0x0ba1, 0x0bad, 0x0bb6, 0x0bc2, 0x0bce, 0x0bdd, 0x0be9, - // Entry 100 - 13F - 0x0bf5, 0x0c0a, 0x0c16, 0x0c22, 0x0c67, 0x0c82, 0x0c8e, 0x0c9a, - 0x0ca9, 0x0cb2, 0x0cbe, 0x0cc7, 0x0cd6, 0x0cdf, 0x0ceb, 0x0cf7, - 0x0d03, 0x0d12, 0x0d1e, 0x0d2d, 0x0d36, 0x0d42, 0x0d4b, 0x0d54, - 0x0d60, 0x0d6f, 0x0d7b, 0x0d8a, 0x0d93, 0x0d9f, 0x0dae, 0x0dba, - 0x0dd2, 0x0ddb, 0x0de7, 0x0df9, 0x0dff, 0x0e0b, 0x0e17, 0x0e20, - 0x0e39, 0x0e4b, 0x0e5d, 0x0e69, 0x0e72, 0x0e7e, 0x0e84, 0x0e8d, - 0x0e99, 0x0eb4, 0x0ebd, 0x0ed2, 0x0ede, 0x0ef0, 0x0f05, 0x0f11, - 0x0f1a, 0x0f29, 0x0f32, 0x0f3e, 0x0f4a, 0x0f5c, 0x0f65, 0x0f74, - // Entry 140 - 17F - 0x0f7d, 0x0f86, 0x0f8f, 0x0f98, 0x0fa4, 0x0fb3, 0x0fc2, 0x0fcb, - 0x0fd1, 0x0fdd, 0x0fe3, 0x0fec, 0x0ff5, 0x1004, 0x1010, 0x101c, - 0x102b, 0x1046, 0x104f, 0x105e, 0x106a, 0x107d, 0x108f, 0x109b, - 0x10b0, 0x10bc, 0x10c5, 0x10ce, 0x10da, 0x10e3, 0x10f2, 0x10fe, - 0x110a, 0x1116, 0x1128, 0x1131, 0x113a, 0x1143, 0x114c, 0x1155, - 0x1161, 0x116a, 0x1179, 0x1182, 0x118e, 0x119a, 0x11b3, 0x11bc, - 0x11cb, 0x11d7, 0x11f0, 0x120b, 0x121a, 0x1229, 0x1235, 0x1241, - 0x124d, 0x1256, 0x1262, 0x126e, 0x127a, 0x1283, 0x128f, 0x1298, - // Entry 180 - 1BF - 0x12a4, 0x12b3, 0x12c2, 0x12d1, 0x12dd, 0x12e9, 0x12f2, 0x12f2, - 0x12fb, 0x1307, 0x1316, 0x1328, 0x1337, 0x1343, 0x134c, 0x1355, - 0x135e, 0x1367, 0x1370, 0x137c, 0x1385, 0x1391, 0x139d, 0x13a9, - 0x13b5, 0x13be, 0x13c7, 0x13d3, 0x13dc, 0x13e5, 0x13ee, 0x140c, - 0x141e, 0x1427, 0x1430, 0x143f, 0x144e, 0x1457, 0x1466, 0x1472, - 0x147b, 0x1487, 0x1490, 0x149c, 0x14a8, 0x14b7, 0x14c6, 0x14d2, - 0x14de, 0x14ed, 0x14fc, 0x1505, 0x1511, 0x151a, 0x1526, 0x1532, - 0x153e, 0x1547, 0x1556, 0x1562, 0x156e, 0x1577, 0x1586, 0x1592, - // Entry 1C0 - 1FF - 0x15a7, 0x15b3, 0x15bf, 0x15ce, 0x15dd, 0x15ec, 0x15f8, 0x1604, - 0x1610, 0x1625, 0x1631, 0x163d, 0x1649, 0x165b, 0x1664, 0x1670, - 0x1685, 0x169a, 0x16ac, 0x16b8, 0x16ca, 0x16d6, 0x16e5, 0x16f4, - 0x1700, 0x170c, 0x171e, 0x1727, 0x1745, 0x1757, 0x1763, 0x1772, - 0x1784, 0x1793, 0x179c, 0x17a8, 0x17b7, 0x17c6, 0x17d5, 0x17e7, - 0x17f0, 0x17fc, 0x1808, 0x1820, 0x182c, 0x1838, 0x1844, 0x1856, - 0x185f, 0x1868, 0x1874, 0x1880, 0x1899, 0x18a8, 0x18b4, 0x18bd, - 0x18c6, 0x18d5, 0x18e1, 0x18f0, 0x1902, 0x190e, 0x1914, 0x192c, - // Entry 200 - 23F - 0x1938, 0x194a, 0x1956, 0x1962, 0x1971, 0x1983, 0x1995, 0x19a1, - 0x19b3, 0x19c5, 0x19d1, 0x19da, 0x19ec, 0x19f8, 0x1a01, 0x1a0a, - 0x1a13, 0x1a22, 0x1a2e, 0x1a3d, 0x1a46, 0x1a4f, 0x1a58, 0x1a64, - 0x1a6d, 0x1a79, 0x1a82, 0x1a8e, 0x1a9a, 0x1aa6, 0x1ab5, 0x1ac1, - 0x1ad0, 0x1ae8, 0x1af4, 0x1b00, 0x1b0c, 0x1b1e, 0x1b2a, 0x1b3c, - 0x1b4b, 0x1b57, 0x1b63, 0x1b6c, 0x1b7e, 0x1b8d, 0x1b99, 0x1ba5, - 0x1bb1, 0x1bba, 0x1bc6, 0x1bd2, 0x1be1, 0x1bfa, 0x1c06, 0x1c0f, - 0x1c18, 0x1c21, 0x1c2d, 0x1c36, 0x1c3f, 0x1c4b, 0x1c51, 0x1c60, - // Entry 240 - 27F - 0x1c6f, 0x1c78, 0x1c7e, 0x1c87, 0x1c90, 0x1c9c, 0x1cab, 0x1cb1, - 0x1cc0, 0x1ccf, 0x1cd8, 0x1ce4, 0x1d02, 0x1d0b, 0x1d1a, 0x1d23, - 0x1d3b, 0x1d3b, 0x1d3b, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, - 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d65, 0x1d71, - 0x1d71, 0x1d71, 0x1d80, 0x1d9e, 0x1db9, 0x1dc5, 0x1dd1, - }, - }, - { // yue-Hans - "阿法文阿布哈兹文阿纬斯陀文南非荷兰文阿坎文阿姆哈拉文阿拉贡文阿拉伯文阿萨姆文阿瓦尔文艾马拉文亚塞拜然文巴什客尔文白俄罗斯文保加利亚文比斯拉马文班" + - "巴拉文孟加拉文藏文布列塔尼文波士尼亚文加泰罗尼亚文车臣文查莫洛文科西嘉文克里文捷克文宗教斯拉夫文楚瓦什文威尔斯文丹麦文德文迪维西文宗" + - "卡文埃维文希腊文英文世界文西班牙文爱沙尼亚文巴斯克文波斯文富拉文芬兰文斐济文法罗文法文西弗里西亚文爱尔兰文苏格兰盖尔文加利西亚文瓜拉" + - "尼文古吉拉特文曼岛文豪撒文希伯来文北印度文西里莫图土文克罗埃西亚文海地文匈牙利文亚美尼亚文赫雷罗文国际文印尼文国际文(E)伊布文四川" + - "彝文依奴皮维克文伊多文冰岛文义大利文因纽特文日文爪哇文乔治亚文刚果文吉库尤文广亚马文哈萨克文格陵兰文高棉文坎那达文韩文卡努里文喀什米" + - "尔文库尔德文科米文康瓦耳文吉尔吉斯文拉丁文卢森堡文干达文林堡文林加拉文寮文立陶宛文鲁巴加丹加文拉脱维亚文马拉加什文马绍尔文毛利文马其" + - "顿文马来亚拉姆文蒙古文马拉地文马来文马尔他文缅甸文诺鲁文北地毕列文尼泊尔文恩东加文荷兰文耐诺斯克挪威文巴克摩挪威文南地毕列文纳瓦霍文" + - "尼扬贾文奥克西坦文奥杰布瓦文奥罗莫文欧利亚文奥塞提文旁遮普文巴利文波兰文普什图文葡萄牙文盖楚瓦文罗曼斯文隆迪文罗马尼亚文俄文卢安达文" + - "梵文撒丁文信德文北方萨米文桑戈文僧伽罗文斯洛伐克文斯洛维尼亚文萨摩亚文塞内加尔文索马利文阿尔巴尼亚文塞尔维亚文斯瓦特文塞索托文巽他文" + - "瑞典文史瓦希里文坦米尔文泰卢固文塔吉克文泰文提格利尼亚文土库曼文突尼西亚文东加文土耳其文特松加文鞑靼文大溪地文维吾尔文乌克兰文乌都文" + - "乌兹别克文温达文越南文沃拉普克文瓦隆文沃洛夫文科萨文意第绪文约鲁巴文壮文中文祖鲁文亚齐文阿侨利文阿当莫文阿迪各文突尼斯阿拉伯文阿弗里" + - "希利文亚罕文阿伊努文阿卡德文阿拉巴马文阿留申文盖格阿尔巴尼亚文南阿尔泰文古英文昂加文阿拉米文马普切文阿拉奥纳文阿拉帕霍文阿尔及利亚阿" + - "拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿苏文美国手语阿斯图里亚文科塔瓦文阿瓦文俾路支文峇里文巴伐利亚文巴萨文巴姆穆文巴塔克托巴文" + - "戈马拉文贝扎文别姆巴文贝塔维文贝纳文富特文巴达加文西俾路支文博杰普尔文比科尔文比尼文班亚尔文康姆文锡克锡卡文比什奴普莱利亚文巴赫蒂亚" + - "里文布拉杰文布拉维文博多文阿库色文布里阿特文布吉斯文布鲁文比林文梅敦巴文卡多文加勒比文卡尤加文阿灿文宿雾文奇加文奇布查文查加文处奇斯" + - "文马里文契奴克文乔克托文奇佩瓦扬文柴罗基文沙伊安文索拉尼库尔德文科普特文卡皮兹文克里米亚半岛的土耳其文;克里米亚半岛的塔塔尔文法语克" + - "里奥尔混合语卡舒布文达科他文达尔格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎尔马文多格来文下索布文中部杜顺文杜亚拉文中古荷兰文朱拉文" + - "迪尤拉文达萨文恩布文埃菲克文埃米利安文古埃及文艾卡朱克文埃兰文中古英文中尤皮克文依汪都文埃斯特雷马杜拉文芳族文菲律宾文托尔讷芬兰文丰" + - "文卡真法文中古法文古法文法兰克-普罗旺斯文北弗里西亚文东弗里西亚文弗留利文加族文加告兹文赣语加约文葛巴亚文索罗亚斯德教达里文吉兹文吉" + - "尔伯特群岛文吉拉基文中古高地德文古高地日耳曼文孔卡尼文冈德文科隆达罗文哥德文格列博文古希腊文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文" + - "海达文客家话夏威夷文斐济印地文希利盖农文赫梯文孟文上索布文湘语胡帕文伊班文伊比比奥文伊洛阔文印古什文英格里亚文牙买加克里奥尔英文逻辑" + - "文恩格姆巴文马恰美文犹太教-波斯文犹太阿拉伯文日德兰文卡拉卡尔帕克文卡比尔文卡琴文卡捷文卡姆巴文卡威文卡巴尔达文卡念布文卡塔布文马孔" + - "德文卡布威尔第文肯扬文科罗文坎刚文卡西文和阗文西桑海文科瓦文北扎扎其文卡库文卡伦金文金邦杜文科米-彼尔米亚克文贡根文科斯雷恩文克佩列" + - "文卡拉柴-包尔卡尔文塞拉利昂克里奥尔文基那来阿文卡累利阿文库鲁科文尚巴拉文巴菲亚文科隆文库密克文库特奈文拉迪诺文朗吉文拉亨达文兰巴文" + - "列兹干文新共同语言利古里亚文利伏尼亚文拉科塔文伦巴底文芒戈文洛齐文北卢尔文拉特加莱文鲁巴鲁鲁亚文路易塞诺文卢恩达文卢奥文卢晒文卢雅文" + - "文言文拉兹文马都拉文马法文马加伊文迈蒂利文望加锡文曼丁哥文马赛文马巴文莫克沙文曼达文门德文梅鲁文克里奥文(模里西斯)中古爱尔兰文马夸" + - "文美塔文米克马克文米南卡堡文满族文曼尼普里文莫霍克文莫西文西马里文蒙当文多种语言克里克文米兰德斯文马尔尼里文明打威文姆耶内文厄尔兹亚" + - "文马赞德兰文闽南语拿波里文纳马文低地德文尼瓦尔文尼亚斯文纽埃文阿沃那加文夸西奥文恩甘澎文诺盖文古诺尔斯文诺维亚文曼德文字 (N’Ko" + - ")北索托文努埃尔文古尼瓦尔文尼扬韦齐文尼扬科莱文尼奥啰文尼兹马文欧塞奇文鄂图曼土耳其文潘加辛文巴列维文潘帕嘉文帕皮阿门托文帛琉文庇卡底文" + - "尼日利亚皮钦语宾夕法尼亚德文门诺低地德文古波斯文普法尔茨德文腓尼基文皮埃蒙特文旁狄希腊文波那贝文普鲁士文古普罗旺斯文基切文钦博拉索海" + - "兰盖丘亚文拉贾斯坦诸文复活岛文拉罗通加文罗马格诺里文里菲亚诺文兰博文吉普赛文罗图马岛文卢森尼亚文罗维阿纳文罗马尼亚语系罗瓦文桑达韦文" + - "雅库特文萨玛利亚阿拉姆文萨布鲁文撒撒克文散塔利文索拉什特拉文甘拜文桑古文西西里文苏格兰文萨丁尼亚-萨萨里文南库尔德文塞讷卡文赛纳文瑟" + - "里文瑟尔卡普文东桑海文古爱尔兰文萨莫吉希亚文希尔哈文掸文阿拉伯文(查德)希达摩文下西利西亚文塞拉亚文南萨米文鲁勒萨米文伊纳里萨米文斯" + - "科特萨米文索尼基文索格底亚纳文苏拉南东墎文塞雷尔文萨霍文沙特菲士兰文苏库马文苏苏文苏美文葛摩文古叙利亚文叙利亚文西利西亚文图卢文提姆" + - "文特索文泰雷诺文泰顿文蒂格雷文提夫文托克劳文查库尔文克林贡文特林基特文塔里什文塔马奇克文东加文(尼亚萨)托比辛文图罗尤文太鲁阁文特萨" + - "克尼恩文钦西安文穆斯林塔特文图姆布卡文吐瓦鲁文北桑海文土凡文塔马齐格特文沃蒂艾克文乌加列文姆本杜文未知语言瓦伊文威尼斯文维普森文西佛" + - "兰德文美茵-法兰克尼亚文沃提克文佛罗文温旧文瓦瑟文瓦拉莫文瓦瑞文瓦绍文沃皮瑞文吴语卡尔梅克文明格列尔文索加文瑶文雅浦文洋卞文耶姆巴文" + - "奈恩加图文粤语萨波特克文布列斯符号西兰文泽纳加文标准摩洛哥塔马塞特文祖尼文无语言内容扎扎文现代标准阿拉伯文高地德文(瑞士)低地萨克逊" + - "文佛兰芒文摩尔多瓦文塞尔维亚克罗埃西亚文史瓦希里文(刚果)简体中文繁体中文", - []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a, - 0x0066, 0x0072, 0x007e, 0x008a, 0x0099, 0x00a8, 0x00b7, 0x00c6, - 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x0123, 0x012c, - 0x0138, 0x0144, 0x014d, 0x0156, 0x0168, 0x0174, 0x0180, 0x0189, - 0x018f, 0x019b, 0x01a4, 0x01ad, 0x01b6, 0x01bc, 0x01c5, 0x01d1, - 0x01e0, 0x01ec, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x021f, - 0x0231, 0x023d, 0x024f, 0x025e, 0x026a, 0x0279, 0x0282, 0x028b, - 0x0297, 0x02a3, 0x02b5, 0x02c7, 0x02d0, 0x02dc, 0x02eb, 0x02f7, - // Entry 40 - 7F - 0x0300, 0x0309, 0x0319, 0x0322, 0x032e, 0x0340, 0x0349, 0x0352, - 0x035e, 0x036a, 0x0370, 0x0379, 0x0385, 0x038e, 0x039a, 0x03a6, - 0x03b2, 0x03be, 0x03c7, 0x03d3, 0x03d9, 0x03e5, 0x03f4, 0x0400, - 0x0409, 0x0415, 0x0424, 0x042d, 0x0439, 0x0442, 0x044b, 0x0457, - 0x045d, 0x0469, 0x047b, 0x048a, 0x0499, 0x04a5, 0x04ae, 0x04ba, - 0x04cc, 0x04d5, 0x04e1, 0x04ea, 0x04f6, 0x04ff, 0x0508, 0x0517, - 0x0523, 0x052f, 0x0538, 0x054d, 0x055f, 0x056e, 0x057a, 0x0586, - 0x0595, 0x05a4, 0x05b0, 0x05bc, 0x05c8, 0x05d4, 0x05dd, 0x05e6, - // Entry 80 - BF - 0x05f2, 0x05fe, 0x060a, 0x0616, 0x061f, 0x062e, 0x0634, 0x0640, - 0x0646, 0x064f, 0x0658, 0x0667, 0x0670, 0x067c, 0x068b, 0x069d, - 0x06a9, 0x06b8, 0x06c4, 0x06d6, 0x06e5, 0x06f1, 0x06fd, 0x0706, - 0x070f, 0x071e, 0x072a, 0x0736, 0x0742, 0x0748, 0x075a, 0x0766, - 0x0775, 0x077e, 0x078a, 0x0796, 0x079f, 0x07ab, 0x07b7, 0x07c3, - 0x07cc, 0x07db, 0x07e4, 0x07ed, 0x07fc, 0x0805, 0x0811, 0x081a, - 0x0826, 0x0832, 0x0838, 0x083e, 0x0847, 0x0850, 0x085c, 0x0868, - 0x0874, 0x0889, 0x089b, 0x08a4, 0x08b0, 0x08bc, 0x08cb, 0x08d7, - // Entry C0 - FF - 0x08ef, 0x08fe, 0x0907, 0x0910, 0x091c, 0x0928, 0x0937, 0x0946, - 0x0961, 0x0961, 0x0970, 0x0985, 0x0997, 0x09a0, 0x09ac, 0x09be, - 0x09ca, 0x09d3, 0x09df, 0x09e8, 0x09f7, 0x0a00, 0x0a0c, 0x0a1e, - 0x0a2a, 0x0a33, 0x0a3f, 0x0a4b, 0x0a54, 0x0a5d, 0x0a69, 0x0a78, - 0x0a87, 0x0a93, 0x0a9c, 0x0aa8, 0x0ab1, 0x0ac0, 0x0ad8, 0x0aea, - 0x0af6, 0x0b02, 0x0b0b, 0x0b17, 0x0b26, 0x0b32, 0x0b3b, 0x0b44, - 0x0b50, 0x0b59, 0x0b65, 0x0b71, 0x0b7a, 0x0b7a, 0x0b83, 0x0b8c, - 0x0b98, 0x0ba1, 0x0bad, 0x0bb6, 0x0bc2, 0x0bce, 0x0bdd, 0x0be9, - // Entry 100 - 13F - 0x0bf5, 0x0c0a, 0x0c16, 0x0c22, 0x0c67, 0x0c82, 0x0c8e, 0x0c9a, - 0x0ca9, 0x0cb2, 0x0cbe, 0x0cc7, 0x0cd6, 0x0cdf, 0x0ceb, 0x0cf7, - 0x0d03, 0x0d12, 0x0d1e, 0x0d2d, 0x0d36, 0x0d42, 0x0d4b, 0x0d54, - 0x0d60, 0x0d6f, 0x0d7b, 0x0d8a, 0x0d93, 0x0d9f, 0x0dae, 0x0dba, - 0x0dd2, 0x0ddb, 0x0de7, 0x0df9, 0x0dff, 0x0e0b, 0x0e17, 0x0e20, - 0x0e39, 0x0e4b, 0x0e5d, 0x0e69, 0x0e72, 0x0e7e, 0x0e84, 0x0e8d, - 0x0e99, 0x0eb4, 0x0ebd, 0x0ed2, 0x0ede, 0x0ef0, 0x0f05, 0x0f11, - 0x0f1a, 0x0f29, 0x0f32, 0x0f3e, 0x0f4a, 0x0f5c, 0x0f65, 0x0f74, - // Entry 140 - 17F - 0x0f7d, 0x0f86, 0x0f8f, 0x0f98, 0x0fa4, 0x0fb3, 0x0fc2, 0x0fcb, - 0x0fd1, 0x0fdd, 0x0fe3, 0x0fec, 0x0ff5, 0x1004, 0x1010, 0x101c, - 0x102b, 0x1046, 0x104f, 0x105e, 0x106a, 0x107d, 0x108f, 0x109b, - 0x10b0, 0x10bc, 0x10c5, 0x10ce, 0x10da, 0x10e3, 0x10f2, 0x10fe, - 0x110a, 0x1116, 0x1128, 0x1131, 0x113a, 0x1143, 0x114c, 0x1155, - 0x1161, 0x116a, 0x1179, 0x1182, 0x118e, 0x119a, 0x11b3, 0x11bc, - 0x11cb, 0x11d7, 0x11f0, 0x120b, 0x121a, 0x1229, 0x1235, 0x1241, - 0x124d, 0x1256, 0x1262, 0x126e, 0x127a, 0x1283, 0x128f, 0x1298, - // Entry 180 - 1BF - 0x12a4, 0x12b3, 0x12c2, 0x12d1, 0x12dd, 0x12e9, 0x12f2, 0x12f2, - 0x12fb, 0x1307, 0x1316, 0x1328, 0x1337, 0x1343, 0x134c, 0x1355, - 0x135e, 0x1367, 0x1370, 0x137c, 0x1385, 0x1391, 0x139d, 0x13a9, - 0x13b5, 0x13be, 0x13c7, 0x13d3, 0x13dc, 0x13e5, 0x13ee, 0x140c, - 0x141e, 0x1427, 0x1430, 0x143f, 0x144e, 0x1457, 0x1466, 0x1472, - 0x147b, 0x1487, 0x1490, 0x149c, 0x14a8, 0x14b7, 0x14c6, 0x14d2, - 0x14de, 0x14ed, 0x14fc, 0x1505, 0x1511, 0x151a, 0x1526, 0x1532, - 0x153e, 0x1547, 0x1556, 0x1562, 0x156e, 0x1577, 0x1586, 0x1592, - // Entry 1C0 - 1FF - 0x15a7, 0x15b3, 0x15bf, 0x15ce, 0x15dd, 0x15ec, 0x15f8, 0x1604, - 0x1610, 0x1625, 0x1631, 0x163d, 0x1649, 0x165b, 0x1664, 0x1670, - 0x1685, 0x169a, 0x16ac, 0x16b8, 0x16ca, 0x16d6, 0x16e5, 0x16f4, - 0x1700, 0x170c, 0x171e, 0x1727, 0x1745, 0x1757, 0x1763, 0x1772, - 0x1784, 0x1793, 0x179c, 0x17a8, 0x17b7, 0x17c6, 0x17d5, 0x17e7, - 0x17f0, 0x17fc, 0x1808, 0x1820, 0x182c, 0x1838, 0x1844, 0x1856, - 0x185f, 0x1868, 0x1874, 0x1880, 0x1899, 0x18a8, 0x18b4, 0x18bd, - 0x18c6, 0x18d5, 0x18e1, 0x18f0, 0x1902, 0x190e, 0x1914, 0x192c, - // Entry 200 - 23F - 0x1938, 0x194a, 0x1956, 0x1962, 0x1971, 0x1983, 0x1995, 0x19a1, - 0x19b3, 0x19c5, 0x19d1, 0x19da, 0x19ec, 0x19f8, 0x1a01, 0x1a0a, - 0x1a13, 0x1a22, 0x1a2e, 0x1a3d, 0x1a46, 0x1a4f, 0x1a58, 0x1a64, - 0x1a6d, 0x1a79, 0x1a82, 0x1a8e, 0x1a9a, 0x1aa6, 0x1ab5, 0x1ac1, - 0x1ad0, 0x1ae8, 0x1af4, 0x1b00, 0x1b0c, 0x1b1e, 0x1b2a, 0x1b3c, - 0x1b4b, 0x1b57, 0x1b63, 0x1b6c, 0x1b7e, 0x1b8d, 0x1b99, 0x1ba5, - 0x1bb1, 0x1bba, 0x1bc6, 0x1bd2, 0x1be1, 0x1bfa, 0x1c06, 0x1c0f, - 0x1c18, 0x1c21, 0x1c2d, 0x1c36, 0x1c3f, 0x1c4b, 0x1c51, 0x1c60, - // Entry 240 - 27F - 0x1c6f, 0x1c78, 0x1c7e, 0x1c87, 0x1c90, 0x1c9c, 0x1cab, 0x1cb1, - 0x1cc0, 0x1ccf, 0x1cd8, 0x1ce4, 0x1d02, 0x1d0b, 0x1d1a, 0x1d23, - 0x1d3b, 0x1d3b, 0x1d3b, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, - 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d53, 0x1d65, 0x1d71, - 0x1d71, 0x1d71, 0x1d80, 0x1d9e, 0x1db9, 0x1dc5, 0x1dd1, - }, - }, - { // zgh - "ⵜⴰⴽⴰⵏⵜⵜⴰⵎⵀⴰⵔⵉⵜⵜⴰⵄⵔⴰⴱⵜⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜⵜⴰⴱⵍⵖⴰⵔⵉⵜⵜⴰⴱⵏⵖⴰⵍⵉⵜⵜⴰⵜⵛⵉⴽⵉⵜⵜⴰⵍⵉⵎⴰⵏⵜⵜⴰⴳⵔⵉⴳⵉ" + - "ⵜⵜⴰⵏⴳⵍⵉⵣⵜⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜⵜⴰⴼⵓⵔⵙⵉⵜⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵜⴰⵀⴰⵡⵙⴰⵜⵜⴰⵀⵉⵏⴷⵉⵜⵜⴰⵀⵏⵖⴰⵔⵉⵜⵜⴰⵏⴷ" + - "ⵓⵏⵉⵙⵉⵜⵜⵉⴳⴱⵓⵜⵜⴰⵟⴰⵍⵢⴰⵏⵜⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜⵜⴰⵊⴰⴱⴰⵏⵉⵜⵜⴰⵅⵎⵉⵔⵜⵜⴰⴽⵓⵔⵉⵜⵜⴰⵎⴰⵍⴰⵡⵉⵜⵜⴰⴱ" + - "ⵉⵔⵎⴰⵏⵉⵜⵜⴰⵏⵉⴱⴰⵍⵉⵜⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜⵜⴰⴱⵏⵊⴰⴱⵉⵜⵜⴰⴱⵓⵍⵓⵏⵉⵜⵜⴰⴱⵕⵟⵇⵉⵣⵜⵜⴰⵔⵓⵎⴰⵏⵉⵜⵜⴰⵔⵓ" + - "ⵙⵉⵜⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜⵜⴰⵙⵓⵎⴰⵍⵉⵜⵜⴰⵙⵡⵉⴷⵉⵜⵜⴰⵜⴰⵎⵉⵍⵜⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜⵜⴰⵜⵓⵔⴽⵉⵜⵜⵓⴽⵔⴰⵏⵉⵜⵜ" + - "ⵓⵔⴷⵓⵜⵜⴰⴱⵉⵜⵏⴰⵎⵉⵜⵜⴰⵢⵔⵓⴱⴰⵜⵜⴰⵛⵉⵏⵡⵉⵜⵜⴰⵣⵓⵍⵓⵜⵜⴰⵎⴰⵣⵉⵖⵜ", - []uint16{ // 589 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x002a, 0x002a, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x005d, 0x0078, - 0x0078, 0x0078, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, 0x0093, - 0x0093, 0x0093, 0x0093, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00f3, 0x00f3, 0x0111, - 0x0111, 0x0111, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x015f, - 0x015f, 0x0177, 0x0177, 0x0177, 0x0177, 0x0192, 0x0192, 0x0192, - // Entry 40 - 7F - 0x0192, 0x01b0, 0x01b0, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01dd, 0x01dd, 0x01fb, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, - 0x0216, 0x0216, 0x022b, 0x022b, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, 0x0240, - 0x0240, 0x0240, 0x0240, 0x025b, 0x025b, 0x0279, 0x0279, 0x0279, - 0x0294, 0x0294, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, - 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02cd, 0x02cd, 0x02e8, - // Entry 80 - BF - 0x02e8, 0x0303, 0x0303, 0x0303, 0x0303, 0x031e, 0x0333, 0x0351, - 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, 0x0351, - 0x0351, 0x0351, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, 0x036c, - 0x0384, 0x0384, 0x039c, 0x039c, 0x039c, 0x03bd, 0x03bd, 0x03bd, - 0x03bd, 0x03bd, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03d5, 0x03ed, - 0x03ff, 0x03ff, 0x03ff, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, - 0x041d, 0x0435, 0x0435, 0x044d, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry C0 - FF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 100 - 13F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 140 - 17F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 180 - 1BF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 1C0 - 1FF - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 200 - 23F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - // Entry 240 - 27F - 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, 0x0462, - 0x0462, 0x0462, 0x0462, 0x0462, 0x047a, - }, - }, - { // zh - zhLangStr, - zhLangIdx, - }, - { // zh-Hant - zhHantLangStr, - zhHantLangIdx, - }, - { // zh-Hant-HK - "阿法爾文阿塞拜疆文巴什基爾文布里多尼文波斯尼亞文加泰隆尼亞文世界語加里西亞文印度文克羅地亞文意大利文格魯吉亞文坎納達文老撾文馬拉加斯文馬拉雅拉姆" + - "文馬耳他文奧里雅文盧旺達文信德語斯洛文尼亞文修納文索馬里文泰米爾文突尼西亞文湯加文烏爾都文克里米亞韃靼文塞舌爾克里奧爾法文斯拉夫文吉" + - "爾伯特文瑞士德文苗語猶太波斯文扎扎其文克裡奧爾文盧歐文毛里裘斯克里奧爾文西非書面語言(N’ko)尼日利亞皮欽文阿羅馬尼亞語敍利亞文瓦" + - "爾皮里文廣東話摩洛哥標準塔馬齊格特文南阿塞拜疆文奧地利德文瑞士德語澳洲英文加拿大英文英國英文美國英文拉丁美洲西班牙文歐洲西班牙文墨西" + - "哥西班牙文加拿大法文瑞士法文比利時荷蘭文巴西葡萄牙文歐洲葡萄牙文摩爾多瓦羅馬尼亞文剛果史瓦希里文", - []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x001b, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x0039, 0x0048, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - 0x0063, 0x0063, 0x0063, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x007b, 0x007b, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - // Entry 40 - 7F - 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x0096, 0x0096, 0x0096, 0x0096, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00c9, 0x00c9, 0x00c9, 0x00c9, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - // Entry 80 - BF - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00ff, - 0x00ff, 0x00ff, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x011a, - 0x011a, 0x0123, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, - 0x012f, 0x012f, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x014a, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - // Entry C0 - FF - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, 0x015f, - // Entry 100 - 13F - 0x015f, 0x015f, 0x015f, 0x015f, 0x0174, 0x018f, 0x018f, 0x018f, - 0x018f, 0x018f, 0x018f, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, 0x019b, - 0x019b, 0x019b, 0x019b, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, - 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01b6, 0x01b6, 0x01b6, - // Entry 140 - 17F - 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01cb, 0x01cb, 0x01cb, - 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, - 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, 0x01cb, - 0x01cb, 0x01cb, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, - 0x01d7, 0x01d7, 0x01d7, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - // Entry 180 - 1BF - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01ef, 0x01ef, - 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x01ef, - 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x01ef, 0x020a, - 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - // Entry 1C0 - 1FF - 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, - 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, - 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, - 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, 0x024f, - 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, - 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, - 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, - // Entry 200 - 23F - 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, - 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, 0x024f, - 0x024f, 0x024f, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, - 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, - 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, - 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, - 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, - 0x025b, 0x025b, 0x025b, 0x025b, 0x025b, 0x026a, 0x026a, 0x026a, - // Entry 240 - 27F - 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x026a, 0x0273, - 0x0273, 0x0273, 0x0273, 0x0273, 0x0294, 0x0294, 0x0294, 0x0294, - 0x0294, 0x02a6, 0x02b5, 0x02c1, 0x02cd, 0x02dc, 0x02e8, 0x02f4, - 0x030c, 0x031e, 0x0333, 0x0333, 0x0342, 0x034e, 0x034e, 0x0360, - 0x0372, 0x0384, 0x039f, 0x039f, 0x03b4, - }, - }, - { // zu - zuLangStr, - zuLangIdx, - }, -} - -const afLangStr string = "" + // Size: 3085 bytes - "AfarAbkasiesAfrikaansAkanAmhariesAragoneesArabiesAssameesAvariesAymaraAz" + - "erbeidjansBaskirBelarussiesBulgaarsBislamaBambaraBengaalsTibettaansBreto" + - "nsBosniesKatalaansTsjetsjeensChamorroKorsikaansTsjeggiesKerkslawiesChuva" + - "shWalliesDeensDuitsDivehiDzongkhaEweGrieksEngelsEsperantoSpaansEstniesBa" + - "skiesPersiesFulahFinsFidjiaansFaroëesFransFriesIersSkotse GalliesGalisie" + - "sGuaraniGoedjaratiManxHausaHebreeusHindiKroatiesHaïtiaansHongaarsArmeens" + - "HereroInterlinguaIndonesiesInterlingueIgboSichuan YiIdoYslandsItaliaansI" + - "nuïtiesJapanneesJavaansGeorgiesKongoleesKikuyuKuanyamaKazaksKalaallisutK" + - "hmerKannadaKoreaansKanuriKasjmirsKoerdiesKomiKorniesKirgisiesLatynLuxemb" + - "urgsGandaLimburgsLingaalsLaoLitausLuba-KatangaLettiesMalgassiesMarshalle" + - "esMaoriMasedoniesMalabaarsMongoolsMarathiMaleisMalteesBirmaansNauruNoord" + - "-NdebeleNepaleesNdongaNederlandsNoorweegse NynorskNoorse BokmålSuid-Ndeb" + - "eleNavajoNyanjaOksitaansOromoOriyaOssetiesPandjabiPoolsPasjtoPortugeesQu" + - "echuaReto-RomaansRundiRoemeensRussiesRwandeesSanskritSardiniesSindhiNoor" + - "d-SamiSangoSinhalaSlowaaksSloweensSamoaansShonaSomaliesAlbaneesSerwiesSw" + - "aziSuid-SothoSundaneesSweedsSwahiliTamilTeloegoeTadzjieksThaiTigrinyaTur" + - "kmeensTswanaTongaansTurksTsongaTataarsTahitiesUighurOekraïensOerdoeOezbe" + - "eksVendaViëtnameesVolapükWalloonWolofXhosaJiddisjYorubaSjineesZoeloeAtsj" + - "eneesAkoliAdangmeAdygheAghemAinuAleutSuid-AltaiAngikaArameesMapucheArapa" + - "hoAsuAsturiesAwadhiBalineesBasaaBembaBenaWes-BalochiBhojpuriBiniSiksikaB" + - "odoBugineesBlinCebuanoKigaChuukeesMariChoctawCherokeesCheyenneesSoraniKo" + - "ptiesSeselwa FranskreoolsDakotaansDakotaTaitaDogribZarmaLae SorbiesDuala" + - "Jola-FonyiDazagaEmbuEfikAntieke EgiptiesEkajukEwondoFilippynsFonFriuliaa" + - "nsGaaGagauzGan-SjineesGeezGilberteesGorontaloGotiesAntieke GrieksSwitser" + - "se DuitsGusiiGwichʼinHakka-SjineesHawaiiesHiligaynonHetitiesHmongOpperso" + - "rbiesXiang-SjineesHupaIbaneesIbibioIlokoIngushLojbanNgombaMachameKabyleK" + - "achinJjuKambaKabardiaansTyapMakondeKabuverdianuKoroKhasiKoyra ChiiniKako" + - "KalenjinKimbunduKomi-PermyaksKonkaniKpelleesKarachay-BalkarKareliesKuruk" + - "hShambalaBafiaKeulsKumykLadinoLangiLezghiesLakotaLoziNoord-LuriLuba-Lulu" + - "aLundaLuoMizoLuyiaMadureesMagahiMaithiliMakasarMasaiMokshaMendeMeruMoris" + - "jenMakhuwa-MeettoMeta’MicmacMinangkabausManipuriMohawkMossiMundangVeelvu" + - "ldige taleKreekMirandeesErzyaMasanderaniMin Nan-SjineesNeapolitaansNamaL" + - "ae DuitsNewariNiasNiueaansKwasioNgiemboonNogaiN’KoNoord-SothoNuerNyankol" + - "ePangasinanPampangaPapiamentoPalauaansNigeriese PidginFenisiesPruisiesK’" + - "iche’RapanuiRarotongaansRomboAromaniesRwaSandaweesSakhaansSamburuSantali" + - "esNgambaySanguSisiliaansSkotsSuid-KoerdiesSenaKoyraboro SenniTachelhitSh" + - "anSuid-SamiLule SamiInari SamiSkolt SamiSoninkeSranan TongoSahoSukumaCom" + - "oraansSiriesTimneTesoTetoemTigreKlingonTok PisinTarokoToemboekaTuvaluTas" + - "awaqTuvineesSentraal-Atlas-TamazightUdmurtUmbunduOnbekende of ongeldige " + - "taalVaiVunjoWalserWolayttaWarayWarlpiriWu-SjineesKalmykSogaYangbenYembaK" + - "antoneesStandaard Marokkaanse TamazightZuniGeen taalinhoud nieZazaModern" + - "e StandaardarabiesSwitserse hoog-DuitsEngels (VK)Engels (VSA)Nedersaksie" + - "sVlaamsMoldawiesSerwo-KroatiesSwahili (Kongo)" - -var afLangIdx = []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000c, 0x000c, 0x0015, 0x0019, 0x0021, 0x002a, - 0x0031, 0x0039, 0x0040, 0x0046, 0x0052, 0x0058, 0x0063, 0x006b, - 0x0072, 0x0079, 0x0081, 0x008b, 0x0092, 0x0099, 0x00a2, 0x00ad, - 0x00b5, 0x00bf, 0x00bf, 0x00c8, 0x00d3, 0x00da, 0x00e1, 0x00e6, - 0x00eb, 0x00f1, 0x00f9, 0x00fc, 0x0102, 0x0108, 0x0111, 0x0117, - 0x011e, 0x0125, 0x012c, 0x0131, 0x0135, 0x013e, 0x0146, 0x014b, - 0x0150, 0x0154, 0x0162, 0x016a, 0x0171, 0x017b, 0x017f, 0x0184, - 0x018c, 0x0191, 0x0191, 0x0199, 0x01a3, 0x01ab, 0x01b2, 0x01b8, - // Entry 40 - 7F - 0x01c3, 0x01cd, 0x01d8, 0x01dc, 0x01e6, 0x01e6, 0x01e9, 0x01f0, - 0x01f9, 0x0202, 0x020b, 0x0212, 0x021a, 0x0223, 0x0229, 0x0231, - 0x0237, 0x0242, 0x0247, 0x024e, 0x0256, 0x025c, 0x0264, 0x026c, - 0x0270, 0x0277, 0x0280, 0x0285, 0x028f, 0x0294, 0x029c, 0x02a4, - 0x02a7, 0x02ad, 0x02b9, 0x02c0, 0x02ca, 0x02d5, 0x02da, 0x02e4, - 0x02ed, 0x02f5, 0x02fc, 0x0302, 0x0309, 0x0311, 0x0316, 0x0323, - 0x032b, 0x0331, 0x033b, 0x034d, 0x035b, 0x0367, 0x036d, 0x0373, - 0x037c, 0x037c, 0x0381, 0x0386, 0x038e, 0x0396, 0x0396, 0x039b, - // Entry 80 - BF - 0x03a1, 0x03aa, 0x03b1, 0x03bd, 0x03c2, 0x03ca, 0x03d1, 0x03d9, - 0x03e1, 0x03ea, 0x03f0, 0x03fa, 0x03ff, 0x0406, 0x040e, 0x0416, - 0x041e, 0x0423, 0x042b, 0x0433, 0x043a, 0x043f, 0x0449, 0x0452, - 0x0458, 0x045f, 0x0464, 0x046c, 0x0475, 0x0479, 0x0481, 0x048a, - 0x0490, 0x0498, 0x049d, 0x04a3, 0x04aa, 0x04b2, 0x04b8, 0x04c2, - 0x04c8, 0x04d0, 0x04d5, 0x04e0, 0x04e8, 0x04ef, 0x04f4, 0x04f9, - 0x0500, 0x0506, 0x0506, 0x050d, 0x0513, 0x051c, 0x0521, 0x0528, - 0x052e, 0x052e, 0x052e, 0x0533, 0x0537, 0x0537, 0x0537, 0x053c, - // Entry C0 - FF - 0x053c, 0x0546, 0x0546, 0x054c, 0x0553, 0x055a, 0x055a, 0x0561, - 0x0561, 0x0561, 0x0561, 0x0561, 0x0561, 0x0564, 0x0564, 0x056c, - 0x056c, 0x0572, 0x0572, 0x057a, 0x057a, 0x057f, 0x057f, 0x057f, - 0x057f, 0x057f, 0x0584, 0x0584, 0x0588, 0x0588, 0x0588, 0x0593, - 0x059b, 0x059b, 0x059f, 0x059f, 0x059f, 0x05a6, 0x05a6, 0x05a6, - 0x05a6, 0x05a6, 0x05aa, 0x05aa, 0x05aa, 0x05b2, 0x05b2, 0x05b6, - 0x05b6, 0x05b6, 0x05b6, 0x05b6, 0x05b6, 0x05b6, 0x05bd, 0x05c1, - 0x05c1, 0x05c1, 0x05c9, 0x05cd, 0x05cd, 0x05d4, 0x05d4, 0x05dd, - // Entry 100 - 13F - 0x05e7, 0x05ed, 0x05f4, 0x05f4, 0x05f4, 0x0608, 0x0608, 0x0611, - 0x0617, 0x061c, 0x061c, 0x061c, 0x0622, 0x0622, 0x0627, 0x0627, - 0x0632, 0x0632, 0x0637, 0x0637, 0x0641, 0x0641, 0x0647, 0x064b, - 0x064f, 0x064f, 0x065f, 0x0665, 0x0665, 0x0665, 0x0665, 0x066b, - 0x066b, 0x066b, 0x0674, 0x0674, 0x0677, 0x0677, 0x0677, 0x0677, - 0x0677, 0x0677, 0x0677, 0x0681, 0x0684, 0x068a, 0x0695, 0x0695, - 0x0695, 0x0695, 0x0699, 0x06a3, 0x06a3, 0x06a3, 0x06a3, 0x06a3, - 0x06a3, 0x06ac, 0x06b2, 0x06b2, 0x06c0, 0x06cf, 0x06cf, 0x06cf, - // Entry 140 - 17F - 0x06d4, 0x06dd, 0x06dd, 0x06ea, 0x06f2, 0x06f2, 0x06fc, 0x0704, - 0x0709, 0x0715, 0x0722, 0x0726, 0x072d, 0x0733, 0x0738, 0x073e, - 0x073e, 0x073e, 0x0744, 0x074a, 0x0751, 0x0751, 0x0751, 0x0751, - 0x0751, 0x0757, 0x075d, 0x0760, 0x0765, 0x0765, 0x0770, 0x0770, - 0x0774, 0x077b, 0x0787, 0x0787, 0x078b, 0x078b, 0x0790, 0x0790, - 0x079c, 0x079c, 0x079c, 0x07a0, 0x07a8, 0x07b0, 0x07bd, 0x07c4, - 0x07c4, 0x07cc, 0x07db, 0x07db, 0x07db, 0x07e3, 0x07e9, 0x07f1, - 0x07f6, 0x07fb, 0x0800, 0x0800, 0x0806, 0x080b, 0x080b, 0x080b, - // Entry 180 - 1BF - 0x0813, 0x0813, 0x0813, 0x0813, 0x0819, 0x0819, 0x0819, 0x0819, - 0x081d, 0x0827, 0x0827, 0x0831, 0x0831, 0x0836, 0x0839, 0x083d, - 0x0842, 0x0842, 0x0842, 0x084a, 0x084a, 0x0850, 0x0858, 0x085f, - 0x085f, 0x0864, 0x0864, 0x086a, 0x086a, 0x086f, 0x0873, 0x087b, - 0x087b, 0x0889, 0x0890, 0x0896, 0x08a2, 0x08a2, 0x08aa, 0x08b0, - 0x08b5, 0x08b5, 0x08bc, 0x08cc, 0x08d1, 0x08da, 0x08da, 0x08da, - 0x08da, 0x08df, 0x08ea, 0x08f9, 0x0905, 0x0909, 0x0912, 0x0918, - 0x091c, 0x0924, 0x0924, 0x092a, 0x0933, 0x0938, 0x0938, 0x0938, - // Entry 1C0 - 1FF - 0x093e, 0x0949, 0x094d, 0x094d, 0x094d, 0x0955, 0x0955, 0x0955, - 0x0955, 0x0955, 0x095f, 0x095f, 0x0967, 0x0971, 0x097a, 0x097a, - 0x098a, 0x098a, 0x098a, 0x098a, 0x098a, 0x0992, 0x0992, 0x0992, - 0x0992, 0x099a, 0x099a, 0x09a5, 0x09a5, 0x09a5, 0x09ac, 0x09b8, - 0x09b8, 0x09b8, 0x09bd, 0x09bd, 0x09bd, 0x09bd, 0x09bd, 0x09c6, - 0x09c9, 0x09d2, 0x09da, 0x09da, 0x09e1, 0x09e1, 0x09ea, 0x09ea, - 0x09f1, 0x09f6, 0x0a00, 0x0a05, 0x0a05, 0x0a12, 0x0a12, 0x0a16, - 0x0a16, 0x0a16, 0x0a25, 0x0a25, 0x0a25, 0x0a2e, 0x0a32, 0x0a32, - // Entry 200 - 23F - 0x0a32, 0x0a32, 0x0a32, 0x0a3b, 0x0a44, 0x0a4e, 0x0a58, 0x0a5f, - 0x0a5f, 0x0a6b, 0x0a6b, 0x0a6f, 0x0a6f, 0x0a75, 0x0a75, 0x0a75, - 0x0a7e, 0x0a7e, 0x0a84, 0x0a84, 0x0a84, 0x0a89, 0x0a8d, 0x0a8d, - 0x0a93, 0x0a98, 0x0a98, 0x0a98, 0x0a98, 0x0a9f, 0x0a9f, 0x0a9f, - 0x0a9f, 0x0a9f, 0x0aa8, 0x0aa8, 0x0aae, 0x0aae, 0x0aae, 0x0aae, - 0x0ab7, 0x0abd, 0x0ac4, 0x0acc, 0x0ae4, 0x0aea, 0x0aea, 0x0af1, - 0x0b0c, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, 0x0b0f, - 0x0b14, 0x0b1a, 0x0b22, 0x0b27, 0x0b27, 0x0b2f, 0x0b39, 0x0b3f, - // Entry 240 - 27F - 0x0b3f, 0x0b43, 0x0b43, 0x0b43, 0x0b4a, 0x0b4f, 0x0b4f, 0x0b58, - 0x0b58, 0x0b58, 0x0b58, 0x0b58, 0x0b77, 0x0b7b, 0x0b8e, 0x0b92, - 0x0baa, 0x0baa, 0x0baa, 0x0bbe, 0x0bbe, 0x0bbe, 0x0bc9, 0x0bd5, - 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0bd5, 0x0be1, 0x0be7, - 0x0be7, 0x0be7, 0x0bf0, 0x0bfe, 0x0c0d, -} // Size: 1250 bytes - -const amLangStr string = "" + // Size: 6807 bytes - "አፋርኛአብሐዚኛአቬስታንአፍሪካንኛአካንኛአማርኛአራጎንስዓረብኛአሳሜዛዊአቫሪክአያማርኛአዘርባጃንኛባስኪርኛቤላራሻኛቡልጋሪ" + - "ኛቢስላምኛባምባርኛቤንጋሊኛቲቤታንኛብሬቶንኛቦስኒያንኛካታላንኛችችንቻሞሮኮርሲካኛክሪቼክኛቸርች ስላቪክቹቫሽወልሽዴኒሽ" + - "ጀርመንዲቬህድዞንግኻኛኢዊግሪክኛእንግሊዝኛኤስፐራንቶስፓንሽኛኢስቶኒያንኛባስክኛፐርሺያኛፉላህፊኒሽፊጂኛፋሮኛፈረንሳይኛ" + - "ምዕራባዊ ፍሪሲኛአይሪሽየስኮቲሽ ጌልክኛጋሊሺያጓራኒኛጉጃርቲኛማንክስኛሃውሳኛዕብራይስጥ\ufeffሒንዱኛክሮሽያንኛሃይ" + - "ትኛሀንጋሪኛአርመናዊሄሬሮኢንቴርሊንጓኢንዶኔዥኛእንተርሊንግወኢግቦኛሲቹንዪኛእኑፒያቅኛኢዶአይስላንድኛጣሊያንኛእኑክቲቱ" + - "ትኛጃፓንኛጃቫንኛጆርጂያንኮንጎኛኪኩዩኩንያማካዛክኛካላሊሱትኛክህመርኛካናዳኛኮሪያኛካኑሪካሽሚርኛኩርድሽኛኮሚኮርኒሽኪር" + - "ጊዝኛላቲንኛሉክዘምበርኛጋንዳኛሊምቡርጊሽሊንጋላኛላኦኛሉቴንያንኛሉባ ካታንጋላትቪያንማላጋስኛማርሻሌዝኛማኦሪኛማሴዶንኛ" + - "ማላያላምኛሞንጎላዊኛማራቲኛማላይኛማልቲስኛቡርማኛናኡሩሰሜን ንዴብሌኔፓሊኛንዶንጋደችየኖርዌይ ናይኖርስክየኖርዌይ ቦክ" + - "ማልደቡብ ንደቤሌናቫጆንያንጃኦኪታንኛኦሮሞኛኦዲያኛኦሴቲክፑንጃብኛፖሊሽኛፓሽቶኛፖርቹጋልኛኵቿኛሮማንሽሩንዲኛሮማኒያንራ" + - "ሽያኛኪንያርዋንድኛሳንስክሪትኛሳርዲንያንኛሲንድሂኛሰሜናዊ ሳሚሳንጎኛሲንሃልኛስሎቫክኛስሎቪኛሳሞአኛሾናኛሱማልኛአልባን" + - "ያንኛሰርቢኛስዋቲኛደቡባዊ ሶቶሱዳንኛስዊድንኛስዋሂሊኛታሚልኛተሉጉኛታጂኪኛታይኛትግርኛቱርክሜንኛጽዋናዊኛቶንጋኛቱርክኛ" + - "ጾንጋኛታታርኛታሂታንኛኡዊግሁርኛዩክሬንኛኡርዱኛኡዝቤክኛቬንዳቪየትናምኛቮላፑክኛዋሎንዎሎፍኛዞሳኛይዲሽኛዮሩባዊኛዡዋንግ" + - "ኛቻይንኛዙሉኛአቻይንኛአኮሊኛአዳንግሜአድይግሄአፍሪሂሊአገምአይኑአካዲያንአላባማአልዩትደቡባዊ አልታይአንጊካአራማይክማ" + - "ፑቼአራኦናአራፓሆየአልጄሪያ ዓረብኛአራዋክአሱየአሜሪካ የምልክት ቋንቋአውስትሪያንአዋድሂባሉቺባሊኔስባቫሪያንባሳባሙን" + - "ባታካ ቶባቤጃቤምባቤታዊቤናባፉትባዳጋየምዕራብ ባሎቺቦጁሪቢኮልቢኒባንጃርሲክሲካቢሹንፑሪያባክህቲያሪብራጅብራሁዪቦዶአኮ" + - "ስቡሪያትቡጊኔዝቡሉብሊንካዶካሪብካዩጋአትሳምካቡዋኖቺጋኛቺብቻቻጋታይቹክስማሪቺኑክ ጃርጎንቾክታዋቺፔውያንቼሮኬኛችዬኔየ" + - "ሶራኒ ኩርድኛኮፕቲክካፒዝኖንክሪሚያን ተርኪሽሰሰላዊ ክሬኦሊ ፈረንሳይኛዳኮታዳርግዋታይታኛዳላዌርዶግሪብዲንካዛርማኛዶ" + - "ግሪየታችኛው ሰርቢያንኛሴንተራል ዱሰንዱዋላኛጆላ ፎንያኛድዩላዳዛጋኢቦኛኤፊክየጥንታዊ ግብጽኛኤካጁክሴንተራል ዩፒክኤ" + - "ዎንዶፊሊፒንኛፎንካጁን ፍሬንችአርፒታንፍሩሊያንጋጋጉዝኛጋን ቻይንኛግዕዝኛጅልበርትስጎሮንታሎየጥንታዊ ግሪክየስዊዝ ጀ" + - "ርመንጉስሊኛግዊቺንሃካ ቻይንኛሃዊያኛሂሊጋይኖንህሞንግየላይኛው ሶርቢያንኛዢያንግ ቻይንኛሁፓኢባንኢቢቦኢሎኮኢንጉሽሎጅ" + - "ባንንጎባኛማቻሜኛካብይልካቺንካጅካምባካባርዲያንታያፕማኮንዴካቡቨርዲያኑኮሮክሃሲኮይራ ቺኒካኮካለንጂንኪምቡንዱኮሚ ፔር" + - "ምያክኮንካኒክፔሌካራቻይ-ባልካርካረሊኛኩሩክሻምባላባፊያኮሎኝያንኩማይክላዲኖላንጊሌዝጊያንላኮታሎዚኛሰሜናዊ ሉሪሉባ-ሉ" + - "ሏሉንዳሉኦሚዞሉዪያማዱረስማጋሂማይተሊማካሳርማሳይሞክሻሜንዴሜሩሞሪሲየኛማኩዋ ሜቶሜታሚክማክሚናንግካባኡማኒፑሪሞሃውክሞ" + - "ሲሙንዳንግባለብዙ ቋንቋዎችክሪክሚራንዴዝኛኤርዝያማዛንደራኒሚን ኛን ቻይንኛኒአፖሊታንናማየታችኛው ጀርመንነዋሪኒአስኒ" + - "ዩአንኛኦ ናጋክዋሲዮኒጊምቡንኖጋይንኮሰሜናዊ ሶቶኑዌርክላሲክ ኔዋሪኒያንኮልኛፓንጋሲናንኛፓምፓንጋፓፒአሜንቶፓላኡአንየ" + - "ናይጄሪያ ፒጂንፐሩሳንኛኪቼቺምቦራዞ ሃይላንድ ኩቹዋራፓኑኢራሮቶንጋሮምቦአሮማንያንርዋሳንዳዌሳክሃሳምቡሩሳንታሊንጋምባ" + - "ይሳንጉሲሲሊያንኛስኮትስደቡባዊ ኩርዲሽሴናኮይራቦሮ ሴኒታቼልሂትሻንቻዲያን ዓረብኛሲዳምኛደቡባዊ ሳሚሉሌ ሳሚኢናሪ ሳ" + - "ሚስኮልት ሳሚሶኒንኬስራናን ቶንጎሳሆኛሱኩማኮሞሪያንክላሲክ ኔይራሲሪያክቲምኔቴሶቴተምትግረክሊንጎንኛቶክ ፒሲንታሮኮቱ" + - "ምቡካቱቫሉታሳዋቅቱቪንያንኛመካከለኛ አትላስ ታማዚግትኡድሙርትኡምቡንዱያልታወቀ ቋንቋቫይቩንጆዋልሰርወላይትኛዋራይዋር" + - "ልፒሪዉ ቻይንኛካልማይክሶጋያንግቤንኛየምባካንቶኒዝብሊስይምቦልስመደበኛ የሞሮኮ ታማዚግትዙኒቋንቋዊ ይዘት አይደለምዛ" + - "ዛዘመናዊ መደበኛ ዓረብኛየኦስትሪያ ጀርመንየስዊዝ ከፍተኛ ጀርመንኛየአውስትራሊያ እንግሊዝኛየካናዳ እንግሊዝኛየብሪ" + - "ቲሽ እንግሊዝኛየአሜሪካ እንግሊዝኛየላቲን አሜሪካ ስፓኒሽየአውሮፓ ስፓንሽኛየሜክሲኮ ስፓንሽኛየካናዳ ፈረንሳይኛየስ" + - "ዊዝ ፈረንሳይኛየታችኛው ሳክሰንፍሌሚሽየብራዚል ፖርቹጋልኛየአውሮፓ ፖርቹጋልኛሞልዳቪያንኛሰርቦ-ክሮኤሽያኛኮንጎ ስዋ" + - "ሂሊቀለል ያለ ቻይንኛባህላዊ ቻይንኛ" - -var amLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x001b, 0x002a, 0x003c, 0x0048, 0x0054, 0x0063, - 0x006f, 0x007e, 0x008a, 0x0099, 0x00ae, 0x00bd, 0x00cc, 0x00db, - 0x00ea, 0x00f9, 0x0108, 0x0117, 0x0126, 0x0138, 0x0147, 0x0150, - 0x0159, 0x0168, 0x016e, 0x0177, 0x018d, 0x0196, 0x019f, 0x01a8, - 0x01b4, 0x01bd, 0x01cf, 0x01d5, 0x01e1, 0x01f3, 0x0205, 0x0214, - 0x0229, 0x0235, 0x0244, 0x024d, 0x0256, 0x025f, 0x0268, 0x027a, - 0x0296, 0x02a2, 0x02be, 0x02ca, 0x02d6, 0x02e5, 0x02f4, 0x0300, - 0x0315, 0x0321, 0x0321, 0x0333, 0x033f, 0x034e, 0x035d, 0x0366, - // Entry 40 - 7F - 0x037b, 0x038d, 0x03a5, 0x03b1, 0x03c0, 0x03d2, 0x03d8, 0x03ed, - 0x03fc, 0x0411, 0x041d, 0x0429, 0x0438, 0x0444, 0x044d, 0x0459, - 0x0465, 0x0477, 0x0486, 0x0492, 0x049e, 0x04a7, 0x04b6, 0x04c5, - 0x04cb, 0x04d7, 0x04e6, 0x04f2, 0x0507, 0x0513, 0x0525, 0x0534, - 0x053d, 0x054f, 0x0562, 0x0571, 0x0580, 0x0592, 0x059e, 0x05ad, - 0x05bf, 0x05d1, 0x05dd, 0x05e9, 0x05f8, 0x0604, 0x060d, 0x0623, - 0x062f, 0x063b, 0x0641, 0x0663, 0x067f, 0x0695, 0x069e, 0x06aa, - 0x06b9, 0x06b9, 0x06c5, 0x06d1, 0x06dd, 0x06ec, 0x06ec, 0x06f8, - // Entry 80 - BF - 0x0704, 0x0716, 0x071f, 0x072b, 0x0737, 0x0746, 0x0752, 0x076a, - 0x077f, 0x0794, 0x07a3, 0x07b6, 0x07c2, 0x07d1, 0x07e0, 0x07ec, - 0x07f8, 0x0801, 0x080d, 0x0822, 0x082e, 0x083a, 0x084d, 0x0859, - 0x0868, 0x0877, 0x0883, 0x088f, 0x089b, 0x08a4, 0x08b0, 0x08c2, - 0x08d1, 0x08dd, 0x08e9, 0x08f5, 0x0901, 0x0910, 0x0922, 0x0931, - 0x093d, 0x094c, 0x0955, 0x0967, 0x0976, 0x097f, 0x098b, 0x0994, - 0x09a0, 0x09af, 0x09be, 0x09ca, 0x09d3, 0x09e2, 0x09ee, 0x09fd, - 0x0a0c, 0x0a0c, 0x0a1b, 0x0a24, 0x0a2d, 0x0a3c, 0x0a48, 0x0a54, - // Entry C0 - FF - 0x0a54, 0x0a6d, 0x0a6d, 0x0a79, 0x0a88, 0x0a91, 0x0a9d, 0x0aa9, - 0x0ac8, 0x0ac8, 0x0ad4, 0x0ad4, 0x0ad4, 0x0ada, 0x0b03, 0x0b18, - 0x0b18, 0x0b24, 0x0b2d, 0x0b39, 0x0b48, 0x0b4e, 0x0b57, 0x0b67, - 0x0b67, 0x0b6d, 0x0b76, 0x0b7f, 0x0b85, 0x0b8e, 0x0b97, 0x0bb0, - 0x0bb9, 0x0bc2, 0x0bc8, 0x0bd4, 0x0bd4, 0x0be0, 0x0bf2, 0x0c04, - 0x0c0d, 0x0c19, 0x0c1f, 0x0c28, 0x0c34, 0x0c40, 0x0c46, 0x0c4f, - 0x0c4f, 0x0c55, 0x0c5e, 0x0c67, 0x0c73, 0x0c73, 0x0c7f, 0x0c88, - 0x0c91, 0x0c9d, 0x0ca6, 0x0cac, 0x0cc2, 0x0cce, 0x0cdd, 0x0ce9, - // Entry 100 - 13F - 0x0cf2, 0x0d0b, 0x0d17, 0x0d26, 0x0d42, 0x0d6e, 0x0d6e, 0x0d77, - 0x0d83, 0x0d8f, 0x0d9b, 0x0d9b, 0x0da7, 0x0db0, 0x0dbc, 0x0dc5, - 0x0de7, 0x0e00, 0x0e0c, 0x0e0c, 0x0e1f, 0x0e28, 0x0e31, 0x0e3a, - 0x0e43, 0x0e43, 0x0e5f, 0x0e6b, 0x0e6b, 0x0e6b, 0x0e84, 0x0e90, - 0x0e90, 0x0e90, 0x0e9f, 0x0e9f, 0x0ea5, 0x0ebb, 0x0ebb, 0x0ebb, - 0x0eca, 0x0eca, 0x0eca, 0x0ed9, 0x0edc, 0x0ee8, 0x0efb, 0x0efb, - 0x0efb, 0x0efb, 0x0f07, 0x0f19, 0x0f19, 0x0f19, 0x0f19, 0x0f19, - 0x0f19, 0x0f28, 0x0f28, 0x0f28, 0x0f41, 0x0f5a, 0x0f5a, 0x0f5a, - // Entry 140 - 17F - 0x0f66, 0x0f72, 0x0f72, 0x0f85, 0x0f91, 0x0f91, 0x0fa3, 0x0fa3, - 0x0faf, 0x0fd1, 0x0fea, 0x0ff0, 0x0ff9, 0x1002, 0x100b, 0x1017, - 0x1017, 0x1017, 0x1023, 0x102f, 0x103b, 0x103b, 0x103b, 0x103b, - 0x103b, 0x1047, 0x1050, 0x1056, 0x105f, 0x105f, 0x1071, 0x1071, - 0x107a, 0x1086, 0x109b, 0x109b, 0x10a1, 0x10a1, 0x10aa, 0x10aa, - 0x10ba, 0x10ba, 0x10ba, 0x10c0, 0x10cf, 0x10de, 0x10f4, 0x1100, - 0x1100, 0x1109, 0x1122, 0x1122, 0x1122, 0x112e, 0x1137, 0x1143, - 0x114c, 0x115b, 0x1167, 0x1167, 0x1170, 0x1179, 0x1179, 0x1179, - // Entry 180 - 1BF - 0x1188, 0x1188, 0x1188, 0x1188, 0x1191, 0x1191, 0x1191, 0x1191, - 0x119a, 0x11ad, 0x11ad, 0x11ba, 0x11ba, 0x11c3, 0x11c9, 0x11cf, - 0x11d8, 0x11d8, 0x11d8, 0x11e4, 0x11e4, 0x11ed, 0x11f9, 0x1205, - 0x1205, 0x120e, 0x120e, 0x1217, 0x1217, 0x1220, 0x1226, 0x1235, - 0x1235, 0x1245, 0x124b, 0x1257, 0x126c, 0x126c, 0x1278, 0x1284, - 0x128a, 0x128a, 0x1299, 0x12b5, 0x12be, 0x12d0, 0x12d0, 0x12d0, - 0x12d0, 0x12dc, 0x12ee, 0x1308, 0x131a, 0x1320, 0x133c, 0x1345, - 0x134e, 0x135d, 0x1367, 0x1373, 0x1382, 0x138b, 0x138b, 0x138b, - // Entry 1C0 - 1FF - 0x1391, 0x13a4, 0x13ad, 0x13c3, 0x13c3, 0x13d5, 0x13d5, 0x13d5, - 0x13d5, 0x13d5, 0x13ea, 0x13ea, 0x13f9, 0x140b, 0x141a, 0x141a, - 0x1436, 0x1436, 0x1436, 0x1436, 0x1436, 0x1436, 0x1436, 0x1436, - 0x1436, 0x1445, 0x1445, 0x144b, 0x1474, 0x1474, 0x1480, 0x148f, - 0x148f, 0x148f, 0x1498, 0x1498, 0x1498, 0x1498, 0x1498, 0x14aa, - 0x14b0, 0x14bc, 0x14c5, 0x14c5, 0x14d1, 0x14d1, 0x14dd, 0x14dd, - 0x14ec, 0x14f5, 0x1507, 0x1513, 0x1513, 0x152c, 0x152c, 0x1532, - 0x1532, 0x1532, 0x1548, 0x1548, 0x1548, 0x1557, 0x155d, 0x1576, - // Entry 200 - 23F - 0x1582, 0x1582, 0x1582, 0x1595, 0x15a2, 0x15b2, 0x15c5, 0x15d1, - 0x15d1, 0x15e7, 0x15e7, 0x15f0, 0x15f0, 0x15f9, 0x15f9, 0x15f9, - 0x1608, 0x161e, 0x162a, 0x162a, 0x162a, 0x1633, 0x1639, 0x1639, - 0x1642, 0x164b, 0x164b, 0x164b, 0x164b, 0x165d, 0x165d, 0x165d, - 0x165d, 0x165d, 0x166d, 0x166d, 0x1676, 0x1676, 0x1676, 0x1676, - 0x1682, 0x168b, 0x1697, 0x16a9, 0x16d5, 0x16e4, 0x16e4, 0x16f3, - 0x170c, 0x1712, 0x1712, 0x1712, 0x1712, 0x1712, 0x1712, 0x1712, - 0x171b, 0x1727, 0x1736, 0x173f, 0x173f, 0x174e, 0x175e, 0x176d, - // Entry 240 - 27F - 0x176d, 0x1773, 0x1773, 0x1773, 0x1785, 0x178e, 0x178e, 0x179d, - 0x179d, 0x17b5, 0x17b5, 0x17b5, 0x17de, 0x17e4, 0x180a, 0x1810, - 0x1836, 0x1836, 0x1855, 0x187e, 0x18a9, 0x18c8, 0x18ea, 0x190c, - 0x1932, 0x1951, 0x1970, 0x1970, 0x198f, 0x19ae, 0x19ca, 0x19d6, - 0x19f8, 0x1a1a, 0x1a2f, 0x1a4b, 0x1a61, 0x1a7e, 0x1a97, -} // Size: 1254 bytes - -const arLangStr string = "" + // Size: 10092 bytes - "الأفاريةالأبخازيةالأفستيةالأفريقانيةالأكانيةالأمهريةالأراغونيةالعربيةالأ" + - "ساميةالأواريةالأيماراالأذربيجانيةالباشكيريةالبيلاروسيةالبلغاريةالبيسلام" + - "يةالبامباراالبنغاليةالتبتيةالبريتونيةالبوسنيةالكتالانيةالشيشانيةالتشامو" + - "روالكورسيكيةالكرىالتشيكيةسلافية كنسيةالتشوفاشيالويلزيةالدانمركيةالألمان" + - "يةالمالديفيةالزونخايةالإيوياليونانيةالإنجليزيةالإسبرانتوالإسبانيةالإستو" + - "نيةالباسكيةالفارسيةالفولانيةالفنلنديةالفيجيةالفارويةالفرنسيةالفريزيانال" + - "أيرلنديةالغيلية الأسكتلنديةالجاليكيةالغوارانيةالغوجاراتيةالمنكيةالهوساا" + - "لعبريةالهنديةالهيري موتوالكرواتيةالكريولية الهايتيةالهنغاريةالأرمنيةاله" + - "يريرواللّغة الوسيطةالإندونيسيةالإنترلينجالإيجبوالسيتشيون ييالإينبياكالإ" + - "يدوالأيسلنديةالإيطاليةالإينكتيتتاليابانيةالجاويةالجورجيةالكونغوالكيكيوا" + - "لكيونياماالكازاخستانيةالكالاليستالخميريةالكاناداالكوريةالكانوريالكشميري" + - "ةالكرديةالكوميالكورنيةالقيرغيزيةاللاتينيةاللكسمبورغيةالغانداالليمبورغية" + - "اللينجالااللاويةالليتوانيةاللوبا كاتانغااللاتفيةالمالاغاشيةالمارشاليةال" + - "ماوريةالمقدونيةالمالايالاميةالمنغوليةالماراثيةالماليزيةالمالطيةالبورمية" + - "النوروالنديبيل الشماليةالنيباليةالندونجاالهولنديةالنرويجية نينورسكبوكمو" + - "ل النرويجيةالنديبيل الجنوبيالنافاجوالنيانجاالأوكيتانيةالأوجيبواالأورومي" + - "ةالأوريةالأوسيتيكالبنجابيةالباليةالبولنديةالبشتوالبرتغاليةالكويتشواالرو" + - "مانشيةالرنديالرومانيةالروسيةالكينياروانداالسنسكريتيةالسردينيةالسنديةسام" + - "ي الشماليةالسانجوالسنهاليةالسلوفاكيةالسلوفانيةالساموائيةالشوناالصومالية" + - "الألبانيةالصربيةالسواتيالسوتو الجنوبيةالسوندانيةالسويديةالسواحليةالتامي" + - "ليةالتيلوغويةالطاجيكيةالتايلانديةالتغرينيةالتركمانيةالتسوانيةالتونغيةال" + - "تركيةالسونجاالتتريةالتاهيتيةالأويغوريةالأوكرانيةالأورديةالأوزبكيةالفيند" + - "االفيتناميةلغة الفولابوكالولونيةالولوفيةالخوسااليديشيةاليوروباالزهيونجا" + - "لصينيةالزولوالأتشينيزيةالأكوليةالأدانجميةالأديغةالأفريهيليةالأغمالآينوي" + - "ةالأكاديةالأليوتيةالألطائية الجنوبيةالإنجليزية القديمةالأنجيكاالآراميةا" + - "لمابودونغونيةالأراباهواللهجة النجديةالأراواكيةالآسوالأستريةالأواديةالبل" + - "وشيةالبالينيةالباسابامنلغة الغومالاالبيجاالبيمبابينالغة البافوتالبلوشية" + - " الغربيةالبهوجبوريةالبيكوليةالبينيةلغة الكومالسيكسيكيةالبراجيةالبودوأكوس" + - "البرياتيةالبجينيزيةلغة البولوالبلينيةلغة الميدومباالكادوالكاريبيةالكايو" + - "جيةالأتسامالسيبونيةتشيغاالتشيبشاالتشاجاتايالتشكيزيةالماريالشينوك جارجون" + - "الشوكتوالشيباوايانالشيروكيالشايانالسورانية الكرديةالقبطيةلغة تتار القرم" + - "الفرنسية الكريولية السيشيليةالكاشبايانالداكوتاالدارجواتيتاالديلويرالسلا" + - "فيةالدوجريبالدنكاالزارميةالدوجريةصوربيا السفلىالديولاالهولندية الوسطىجو" + - "لا فونياالدايلاالقرعانيةإمبوالإفيكالمصرية القديمةالإكاجكالإمايتالإنجليز" + - "ية الوسطىالإيوندوالفانجالفلبينيةالفونالفرنسية الكاجونيةالفرنسية الوسطىا" + - "لفرنسية القديمةالفريزينية الشماليةالفريزينية الشرقيةالفريلايانالجاالغاغ" + - "وزالغان الصينيةالجايوالجبياالجعزيةلغة أهل جبل طارقالألمانية العليا الوس" + - "طىالألمانية العليا القديمةالجنديالجورونتالوالقوطيةالجريبواليونانية القد" + - "يمةالألمانية السويسريةالغيزيةغوتشنالهيداالهاكا الصينيةلغة أهل الهاوايال" + - "هيليجينونالحثيةالهمونجيةالصوربية العلياشيانغ الصينيةالهباالإيبانالإيبيب" + - "يوالإيلوكوالإنجوشيةاللوجباننغومباالماتشاميةالفارسية اليهوديةالعربية الي" + - "هوديةالكارا-كالباكالقبيليةالكاتشينالجوالكامباالكويالكاباردايانكانمبوالت" + - "ايابيةماكوندهكابوفيرديانوالكوروالكازيةالخوتانيزكويرا تشينيلغة الكاكوكال" + - "ينجينالكيمبندوكومي-بيرماياكالكونكانيةالكوسراينالكبيلالكاراتشاي-بالكارال" + - "كاريليةالكوروخشامبالالغة البافيالغة الكولونيانالقموقيةالكتيناياللادينول" + - "انجياللاهندااللامباالليزجيةلاكوتامنغولىالكريولية اللويزيانيةاللوزياللري" + - "ة الشماليةاللبا-لؤلؤاللوسينواللوندااللوالميزولغة اللوياالمادريزالماجاال" + - "مايثيليالماكاسارالماندينغالماسايماباالموكشاالماندارالميندالميروالمورسيا" + - "نيةالأيرلندية الوسطىماخاوا-ميتوميتاالميكماكيونيةالمينانجكاباوالمانشوالم" + - "انيبوريةالموهوكالموسيمندنجلغات متعددةالكريكالميرانديزالمارواريةالأرزيةا" + - "لمازندرانيةمين-نان الصينيةالنابوليةلغة الناماالألمانية السفلىالنواريةال" + - "نياسالنيويكواسيولغة النجيمبونالنوجايالنورس القديمأنكوالسوتو الشماليةالن" + - "ويرالنوارية التقليديةالنيامويزيالنيانكولالنيوروالنزيماالأوساجالتركية ال" + - "عثمانيةالبانجاسينانالبهلويةالبامبانجاالبابيامينتوالبالوانالبدجنية النيج" + - "يريةالفارسية القديمةالفينيقيةالبوهنبيايانالبروسياويةالبروفانسية القديمة" + - "كيشيالراجاسثانيةالرابانيالراروتونجانيالرومبوالغجريةالأرومانيانالرواالسا" + - "نداويالساخيةالآرامية السامريةسامبوروالساساكالسانتالينامبيسانغوالصقليةال" + - "أسكتلنديةالكردية الجنوبيةالسنيكاسيناالسيلكبكويرابورو سينيالأيرلندية الق" + - "ديمةتشلحيتالشانالعربية التشاديةالسيداموالسامي الجنوبياللول ساميالإيناري" + - " ساميالسكولت ساميالسونينكالسوجدينالسرانان تونجوالسررلغة الساهوالسوكوماال" + - "سوسوالسوماريةالقمريةسريانية تقليديةالسريانيةالتيمنتيسوالتيرينوالتيتمالت" + - "يغريةالتيفالتوكيلاوالكلينجونالتلينغيتيةالتاماشيكتونجا - نياساالتوك بيسي" + - "نلغة التاروكوالتسيمشيانالتامبوكاالتوفالوتاساواقالتوفيةالأمازيغية وسط ال" + - "أطلسالأدمرتاليجاريتيكالأمبندولغة غير معروفةالفايالفوتيكالفونجوالوالسرال" + - "ولاياتاالوارايالواشووارلبيريالوو الصينيةالكالميكالسوغاالياواليابيزيانجب" + - "نيمباالكَنْتُونيةالزابوتيكرموز المعايير الأساسيةالزيناجاالتمازيغية المغ" + - "ربية القياسيةالزونيةبدون محتوى لغويزازاالعربية الرسمية الحديثةالألمانية" + - " النمساويةالألمانية العليا السويسريةالإنجليزية الأستراليةالإنجليزية الكن" + - "ديةالإنجليزية البريطانيةالإنجليزية الأمريكيةالإسبانية أمريكا اللاتينيةا" + - "لإسبانية الأوروبيةالإسبانية المكسيكيةالفرنسية الكنديةالفرنسية السويسرية" + - "السكسونية السفلىالفلمنكيةالبرتغالية البرازيليةالبرتغالية الأوروبيةالمول" + - "دوفيةصربية-كرواتيةالكونغو السواحليةالصينية المبسطةالصينية التقليدية" - -var arLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0022, 0x0032, 0x0048, 0x0058, 0x0068, 0x007c, - 0x008a, 0x009a, 0x00aa, 0x00ba, 0x00d2, 0x00e6, 0x00fc, 0x010e, - 0x0122, 0x0134, 0x0146, 0x0154, 0x0168, 0x0178, 0x018c, 0x019e, - 0x01b0, 0x01c4, 0x01ce, 0x01de, 0x01f5, 0x0207, 0x0217, 0x022b, - 0x023d, 0x0251, 0x0263, 0x026f, 0x0281, 0x0295, 0x02a9, 0x02bb, - 0x02cd, 0x02dd, 0x02ed, 0x02ff, 0x0311, 0x031f, 0x032f, 0x033f, - 0x0351, 0x0365, 0x038a, 0x039c, 0x03b0, 0x03c6, 0x03d4, 0x03e0, - 0x03ee, 0x03fc, 0x0411, 0x0423, 0x0446, 0x0458, 0x0468, 0x0478, - // Entry 40 - 7F - 0x0493, 0x04a9, 0x04bd, 0x04cb, 0x04e2, 0x04f4, 0x0500, 0x0514, - 0x0526, 0x053a, 0x054c, 0x055a, 0x056a, 0x0578, 0x0586, 0x059a, - 0x05b4, 0x05c8, 0x05d8, 0x05e8, 0x05f6, 0x0606, 0x0618, 0x0626, - 0x0632, 0x0642, 0x0656, 0x0668, 0x0680, 0x068e, 0x06a4, 0x06b6, - 0x06c4, 0x06d8, 0x06f3, 0x0703, 0x0719, 0x072d, 0x073d, 0x074f, - 0x0769, 0x077b, 0x078d, 0x079f, 0x07af, 0x07bf, 0x07cb, 0x07ec, - 0x07fe, 0x080e, 0x0820, 0x0841, 0x0860, 0x087f, 0x088f, 0x089f, - 0x08b5, 0x08c7, 0x08d9, 0x08e7, 0x08f9, 0x090b, 0x0919, 0x092b, - // Entry 80 - BF - 0x0937, 0x094b, 0x095d, 0x0971, 0x097d, 0x098f, 0x099d, 0x09b7, - 0x09cd, 0x09df, 0x09ed, 0x0a06, 0x0a14, 0x0a26, 0x0a3a, 0x0a4e, - 0x0a62, 0x0a6e, 0x0a80, 0x0a92, 0x0aa0, 0x0aae, 0x0acb, 0x0adf, - 0x0aef, 0x0b01, 0x0b13, 0x0b27, 0x0b39, 0x0b4f, 0x0b61, 0x0b75, - 0x0b87, 0x0b97, 0x0ba5, 0x0bb3, 0x0bc1, 0x0bd3, 0x0be7, 0x0bfb, - 0x0c0b, 0x0c1d, 0x0c2b, 0x0c3f, 0x0c58, 0x0c68, 0x0c78, 0x0c84, - 0x0c94, 0x0ca4, 0x0cb4, 0x0cc2, 0x0cce, 0x0ce4, 0x0cf4, 0x0d08, - 0x0d16, 0x0d16, 0x0d2c, 0x0d36, 0x0d46, 0x0d56, 0x0d56, 0x0d68, - // Entry C0 - FF - 0x0d68, 0x0d8b, 0x0dae, 0x0dbe, 0x0dce, 0x0dea, 0x0dea, 0x0dfc, - 0x0dfc, 0x0e17, 0x0e2b, 0x0e2b, 0x0e2b, 0x0e35, 0x0e35, 0x0e45, - 0x0e45, 0x0e55, 0x0e65, 0x0e77, 0x0e77, 0x0e83, 0x0e8b, 0x0e8b, - 0x0ea2, 0x0eae, 0x0ebc, 0x0ebc, 0x0ec4, 0x0ed9, 0x0ed9, 0x0ef8, - 0x0f0e, 0x0f20, 0x0f2e, 0x0f2e, 0x0f3f, 0x0f53, 0x0f53, 0x0f53, - 0x0f63, 0x0f63, 0x0f6f, 0x0f77, 0x0f89, 0x0f9d, 0x0fb0, 0x0fc0, - 0x0fd9, 0x0fe5, 0x0ff7, 0x1009, 0x1017, 0x1017, 0x1029, 0x1033, - 0x1043, 0x1057, 0x1069, 0x1075, 0x1090, 0x109e, 0x10b4, 0x10c4, - // Entry 100 - 13F - 0x10d2, 0x10f3, 0x1101, 0x1101, 0x111b, 0x1151, 0x1165, 0x1175, - 0x1185, 0x118d, 0x119d, 0x11ad, 0x11bd, 0x11c9, 0x11d9, 0x11e9, - 0x1202, 0x1202, 0x1210, 0x122f, 0x1242, 0x1250, 0x1262, 0x126a, - 0x1276, 0x1276, 0x1293, 0x12a1, 0x12af, 0x12d0, 0x12d0, 0x12e0, - 0x12e0, 0x12ec, 0x12fe, 0x12fe, 0x1308, 0x132b, 0x1348, 0x1367, - 0x1367, 0x138c, 0x13af, 0x13c3, 0x13cb, 0x13d9, 0x13f2, 0x13fe, - 0x140a, 0x140a, 0x1418, 0x1435, 0x1435, 0x1461, 0x148f, 0x148f, - 0x149b, 0x14b1, 0x14bf, 0x14cd, 0x14ee, 0x1513, 0x1513, 0x1513, - // Entry 140 - 17F - 0x1521, 0x152b, 0x1537, 0x1552, 0x156e, 0x156e, 0x1584, 0x1590, - 0x15a2, 0x15bf, 0x15d8, 0x15e2, 0x15f0, 0x1602, 0x1612, 0x1624, - 0x1624, 0x1624, 0x1634, 0x1640, 0x1654, 0x1675, 0x1694, 0x1694, - 0x16ad, 0x16bd, 0x16cd, 0x16d5, 0x16e3, 0x16ed, 0x1705, 0x1711, - 0x1723, 0x1731, 0x1749, 0x1749, 0x1755, 0x1755, 0x1763, 0x1775, - 0x178a, 0x178a, 0x178a, 0x179d, 0x17ad, 0x17bf, 0x17d8, 0x17ec, - 0x17fe, 0x180a, 0x182b, 0x182b, 0x182b, 0x183d, 0x184b, 0x1859, - 0x186e, 0x1889, 0x1899, 0x18a9, 0x18b9, 0x18c3, 0x18d3, 0x18e1, - // Entry 180 - 1BF - 0x18f1, 0x18f1, 0x18f1, 0x18f1, 0x18fd, 0x18fd, 0x1909, 0x1932, - 0x193e, 0x195b, 0x195b, 0x196e, 0x197e, 0x198c, 0x1994, 0x19a0, - 0x19b3, 0x19b3, 0x19b3, 0x19c3, 0x19c3, 0x19cf, 0x19e1, 0x19f3, - 0x1a05, 0x1a13, 0x1a1b, 0x1a29, 0x1a39, 0x1a45, 0x1a51, 0x1a67, - 0x1a88, 0x1a9d, 0x1aa5, 0x1abf, 0x1ad9, 0x1ae7, 0x1afd, 0x1b0b, - 0x1b17, 0x1b17, 0x1b21, 0x1b36, 0x1b42, 0x1b56, 0x1b6a, 0x1b6a, - 0x1b6a, 0x1b78, 0x1b90, 0x1bac, 0x1bbe, 0x1bd1, 0x1bf0, 0x1c00, - 0x1c0c, 0x1c18, 0x1c18, 0x1c24, 0x1c3d, 0x1c4b, 0x1c64, 0x1c64, - // Entry 1C0 - 1FF - 0x1c6c, 0x1c89, 0x1c95, 0x1cb8, 0x1ccc, 0x1cde, 0x1cec, 0x1cfa, - 0x1d08, 0x1d29, 0x1d41, 0x1d51, 0x1d65, 0x1d7d, 0x1d8d, 0x1d8d, - 0x1db0, 0x1db0, 0x1db0, 0x1dcf, 0x1dcf, 0x1de1, 0x1de1, 0x1de1, - 0x1df9, 0x1e0f, 0x1e34, 0x1e3c, 0x1e3c, 0x1e54, 0x1e64, 0x1e7e, - 0x1e7e, 0x1e7e, 0x1e8c, 0x1e9a, 0x1e9a, 0x1e9a, 0x1e9a, 0x1eb0, - 0x1eba, 0x1ecc, 0x1eda, 0x1efb, 0x1f09, 0x1f17, 0x1f29, 0x1f29, - 0x1f33, 0x1f3d, 0x1f4b, 0x1f61, 0x1f61, 0x1f80, 0x1f8e, 0x1f96, - 0x1f96, 0x1fa4, 0x1fbf, 0x1fe2, 0x1fe2, 0x1fee, 0x1ff8, 0x2017, - // Entry 200 - 23F - 0x2027, 0x2027, 0x2027, 0x2042, 0x2055, 0x206e, 0x2085, 0x2095, - 0x20a5, 0x20c0, 0x20ca, 0x20dd, 0x20dd, 0x20ed, 0x20f9, 0x210b, - 0x2119, 0x2136, 0x2148, 0x2148, 0x2148, 0x2154, 0x215c, 0x216c, - 0x2178, 0x2188, 0x2192, 0x21a4, 0x21a4, 0x21b6, 0x21cc, 0x21cc, - 0x21de, 0x21f5, 0x220a, 0x220a, 0x2221, 0x2221, 0x2235, 0x2235, - 0x2247, 0x2257, 0x2265, 0x2273, 0x229b, 0x22a9, 0x22bd, 0x22cd, - 0x22e7, 0x22f1, 0x22f1, 0x22f1, 0x22f1, 0x22f1, 0x22ff, 0x22ff, - 0x230d, 0x231b, 0x232d, 0x233b, 0x2347, 0x2357, 0x236e, 0x237e, - // Entry 240 - 27F - 0x237e, 0x238a, 0x2394, 0x23a2, 0x23ae, 0x23b6, 0x23b6, 0x23ce, - 0x23e0, 0x240a, 0x240a, 0x241a, 0x2450, 0x245e, 0x247a, 0x2482, - 0x24ae, 0x24ae, 0x24d3, 0x2505, 0x252e, 0x2551, 0x257a, 0x25a1, - 0x25d3, 0x25f8, 0x261d, 0x261d, 0x263c, 0x265f, 0x267e, 0x2690, - 0x26b9, 0x26e0, 0x26f4, 0x270d, 0x272e, 0x274b, 0x276c, -} // Size: 1254 bytes - -const azLangStr string = "" + // Size: 3754 bytes - "afarabxazavestanafrikaansakanamhararaqonərəbassamavaraymaraazərbaycanbaş" + - "qırdbelarusbolqarbislamabambarabenqaltibetbretonbosniyakatalançeçençamor" + - "okorsikakriçexslavyançuvaşuelsdanimarkaalmanmaldivdzonqxaeveyunaningilis" + - "esperantoispanestonbaskfarsfulafinficifarerfransızqərbi frizirlandŞotlan" + - "diya keltcəsiqalisiyaquaraniqucaratmankshausaivrithindhiri motuxorvathai" + - "ti kreolmacarermənihererointerlinquaindoneziyainterlinqveiqbosiçuan yiin" + - "upiaqidoislanditalyaninuktitutyaponyavagürcükonqokikuyukuanyamaqazaxkala" + - "allisutkxmerkannadakoreyakanurikəşmirkürdkomikornqırğızlatınlüksemburqqa" + - "ndalimburqlinqalalaoslitvaluba-katanqalatışmalaqasmarşalmaorimakedonmala" + - "yalammonqolmarathimalaymaltabirmannauruşimali ndebelenepalndonqahollandn" + - "ünorsk norveçbokmal norveçcənubi ndebelenavayonyancaoksitanocibvaoromoo" + - "diyaosetinpəncabpalipolyakpuştuportuqalkeçuaromanşrundirumınruskinyarvan" + - "dasanskritsardinsindhişimali samisanqosinhalaslovakslovensamoaşonasomali" + - "albanserbsvatisesotosundanisveçsuahilitamilteluqutaciktaytiqrintürkmənsv" + - "anatonqatürksonqatatartaxitiuyğurukraynaurduözbəkvendavyetnamvolapükvalu" + - "nvolofxosaidişyorubaçjuançinzuluakinakoliadanqmeadugeafrihiliaqhemaynuak" + - "kadaleutcənubi altayqədim ingilisangikaaramikmapuçearapahoaravakasuastur" + - "iyaavadhibalucbalibasabejabembabenaqərbi bəlucbxoçpuribikolbinisiksikəbr" + - "ajbodoburyatbuginblinkeddokaribatsamsebuançiqaçibçaçağatayçukizmariçinuk" + - " ləhçəsiçoktauçipevyançerokiçeyensorankoptkrım türkcəsiSeyşel kreol fran" + - "sızcasıkaşubyandakotadarqvataitadelaverslaveydoqribdinkazarmadoqriaşağı " + - "sorbdualaorta hollanddioladyuladazaqaembuefikqədim misirekacukelamitorta" + - " ingilisevondofangfilippinfonorta fransızqədim fransızşimali frisfriulqa" + - "qaqauzqanqayoqabayaqezqilbertorta yüksək almanqədim almanqondiqorontaloq" + - "otikaqreboqədim yunanİsveçrə almancasıqusiqviçinhaydahakkahavayhiliqayno" + - "nhittitmonqyuxarı sorbsyanhupaibanibibioilokoinquşloğbannqombamaçamivrit" + - "-farsivrit-ərəbqaraqalpaqkabilekaçinjukambakavikabarda-çərkəztiyapmakond" + - "kabuverdiankoroxazixotankoyra çiinikakokalencinkimbundukomi-permyakkonka" + - "nikosreyankpelleqaraçay-balkarkarelkuruxşambalabafiakölnkumıkkutenaysefa" + - "rdlangiqərbi pəncablambaləzgilakotamonqolozişimali luriluba-lulualuyseno" + - "lundaluomizoluyiamadurizmaqahimaitilimakasarməndinqomasaymokşamandarmend" + - "emerumorisienorta irlandmaxuva-meettometa’mikmakminanqkabanmançumanipüri" + - "mohavkmosimundanqçoxsaylı dillərkrikmirandmaruarierzyamazandaranMin Nann" + - "eapolitannamaaşağı almannevariniasniyuankvasiongiemboonnoqayqədim norsnq" + - "oşimal sotonuernyamvezinyankolnyoronzimaosageosmanpanqasinanpəhləvipampa" + - "nqapapyamentopalayanniger kreolqədim farsfoyenikponpeyprussqədim provans" + - "alkiçeracastanirapanuirarotonqanromboromanaromanruasandavesaxasamaritans" + - "amburusasaksantalnqambaysanqusiciliyaskotscənubi kürdsenaselkupkoyraboro" + - " senniqədim irlandtaçelitşansidamocənubi samilule samiinari samiskolt sa" + - "misoninkesoqdiyensranan tonqoserersahosukumasususumeryankomorsuriyatimne" + - "tesoterenotetumtiqretivtokelayklinqontlinqittamaşeknyasa tonqatok pisint" + - "arokosimşyantumbukatuvalutasavaqtuvinyanMərkəzi Atlas tamazicəsiudmurtuq" + - "aritumbundunaməlum dilvaivotikvunyovallesvalamovarayvaşovalpirivukalmıks" + - "oqayaoyapizyanqbenyembakantonzapotekblisimbolszenaqatamazizunidil məzmun" + - "u yoxdurzazamüasir standart ərəbcənubi azərbaycanAvstriya almancasıİsveç" + - "rə yüksək almancasıAvstraliya ingiliscəsiKanada ingiliscəsiBritaniya ing" + - "iliscəsiAmerika ingiliscəsiLatın Amerikası ispancasıKastiliya ispancasıM" + - "eksika ispancasıKanada fransızcasıİsveçrə fransızcasıaşağı saksonflamand" + - "Braziliya portuqalcasıPortuqaliya portuqalcasımoldavserb-xorvatKonqo sua" + - "hilicəsisadələşmiş çinənənəvi çin" - -var azLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x0009, 0x0010, 0x0019, 0x001d, 0x0022, 0x0028, - 0x002e, 0x0033, 0x0037, 0x003d, 0x0048, 0x0051, 0x0058, 0x005e, - 0x0065, 0x006c, 0x0072, 0x0077, 0x007d, 0x0084, 0x008b, 0x0092, - 0x0099, 0x00a0, 0x00a3, 0x00a7, 0x00ae, 0x00b5, 0x00b9, 0x00c2, - 0x00c7, 0x00cd, 0x00d4, 0x00d7, 0x00dc, 0x00e3, 0x00ec, 0x00f1, - 0x00f6, 0x00fa, 0x00fe, 0x0102, 0x0105, 0x0109, 0x010e, 0x0116, - 0x0121, 0x0127, 0x013c, 0x0144, 0x014b, 0x0152, 0x0157, 0x015c, - 0x0161, 0x0165, 0x016e, 0x0174, 0x017f, 0x0184, 0x018b, 0x0191, - // Entry 40 - 7F - 0x019c, 0x01a6, 0x01b1, 0x01b5, 0x01bf, 0x01c6, 0x01c9, 0x01cf, - 0x01d6, 0x01df, 0x01e4, 0x01e8, 0x01ef, 0x01f4, 0x01fa, 0x0202, - 0x0207, 0x0212, 0x0217, 0x021e, 0x0224, 0x022a, 0x0232, 0x0237, - 0x023b, 0x023f, 0x0248, 0x024e, 0x0259, 0x025e, 0x0265, 0x026c, - 0x0270, 0x0275, 0x0281, 0x0288, 0x028f, 0x0296, 0x029b, 0x02a2, - 0x02ab, 0x02b1, 0x02b8, 0x02bd, 0x02c2, 0x02c8, 0x02cd, 0x02dc, - 0x02e1, 0x02e7, 0x02ee, 0x02fe, 0x030c, 0x031b, 0x0321, 0x0327, - 0x032e, 0x0334, 0x0339, 0x033e, 0x0344, 0x034b, 0x034f, 0x0355, - // Entry 80 - BF - 0x035b, 0x0363, 0x0369, 0x0370, 0x0375, 0x037b, 0x037e, 0x0389, - 0x0391, 0x0397, 0x039d, 0x03a9, 0x03ae, 0x03b5, 0x03bb, 0x03c1, - 0x03c6, 0x03cb, 0x03d1, 0x03d6, 0x03da, 0x03df, 0x03e5, 0x03eb, - 0x03f1, 0x03f8, 0x03fd, 0x0403, 0x0408, 0x040b, 0x0411, 0x041a, - 0x041f, 0x0424, 0x0429, 0x042e, 0x0433, 0x0439, 0x043f, 0x0446, - 0x044a, 0x0451, 0x0456, 0x045d, 0x0465, 0x046a, 0x046f, 0x0473, - 0x0478, 0x047e, 0x0484, 0x0488, 0x048c, 0x0490, 0x0495, 0x049c, - 0x04a1, 0x04a1, 0x04a9, 0x04ae, 0x04b2, 0x04b7, 0x04b7, 0x04bc, - // Entry C0 - FF - 0x04bc, 0x04c9, 0x04d7, 0x04dd, 0x04e3, 0x04ea, 0x04ea, 0x04f1, - 0x04f1, 0x04f1, 0x04f7, 0x04f7, 0x04f7, 0x04fa, 0x04fa, 0x0502, - 0x0502, 0x0508, 0x050d, 0x0511, 0x0511, 0x0515, 0x0515, 0x0515, - 0x0515, 0x0519, 0x051e, 0x051e, 0x0522, 0x0522, 0x0522, 0x052f, - 0x0538, 0x053d, 0x0541, 0x0541, 0x0541, 0x0549, 0x0549, 0x0549, - 0x054d, 0x054d, 0x0551, 0x0551, 0x0557, 0x055c, 0x055c, 0x0560, - 0x0560, 0x0565, 0x056a, 0x056a, 0x056f, 0x056f, 0x0575, 0x057a, - 0x0581, 0x058a, 0x0590, 0x0594, 0x05a5, 0x05ac, 0x05b5, 0x05bc, - // Entry 100 - 13F - 0x05c2, 0x05c7, 0x05cb, 0x05cb, 0x05db, 0x05f6, 0x05ff, 0x0605, - 0x060b, 0x0610, 0x0617, 0x061d, 0x0623, 0x0628, 0x062d, 0x0632, - 0x063f, 0x063f, 0x0644, 0x0650, 0x0655, 0x065a, 0x0660, 0x0664, - 0x0668, 0x0668, 0x0674, 0x067a, 0x0680, 0x068c, 0x068c, 0x0692, - 0x0692, 0x0696, 0x069e, 0x069e, 0x06a1, 0x06a1, 0x06ae, 0x06bd, - 0x06bd, 0x06c9, 0x06c9, 0x06ce, 0x06d0, 0x06d6, 0x06d9, 0x06dd, - 0x06e3, 0x06e3, 0x06e6, 0x06ed, 0x06ed, 0x0700, 0x070c, 0x070c, - 0x0711, 0x071a, 0x0720, 0x0725, 0x0731, 0x0746, 0x0746, 0x0746, - // Entry 140 - 17F - 0x074a, 0x0751, 0x0756, 0x075b, 0x0760, 0x0760, 0x076a, 0x0770, - 0x0774, 0x0780, 0x0784, 0x0788, 0x078c, 0x0792, 0x0797, 0x079d, - 0x079d, 0x079d, 0x07a4, 0x07aa, 0x07b0, 0x07ba, 0x07c6, 0x07c6, - 0x07d0, 0x07d6, 0x07dc, 0x07de, 0x07e3, 0x07e7, 0x07f8, 0x07f8, - 0x07fd, 0x0803, 0x080e, 0x080e, 0x0812, 0x0812, 0x0816, 0x081b, - 0x0827, 0x0827, 0x0827, 0x082b, 0x0833, 0x083b, 0x0847, 0x084e, - 0x0856, 0x085c, 0x086b, 0x086b, 0x086b, 0x0870, 0x0875, 0x087d, - 0x0882, 0x0887, 0x088d, 0x0894, 0x089a, 0x089f, 0x08ad, 0x08b2, - // Entry 180 - 1BF - 0x08b8, 0x08b8, 0x08b8, 0x08b8, 0x08be, 0x08be, 0x08c3, 0x08c3, - 0x08c7, 0x08d3, 0x08d3, 0x08dd, 0x08e4, 0x08e9, 0x08ec, 0x08f0, - 0x08f5, 0x08f5, 0x08f5, 0x08fc, 0x08fc, 0x0902, 0x0909, 0x0910, - 0x0919, 0x091e, 0x091e, 0x0924, 0x092a, 0x092f, 0x0933, 0x093b, - 0x0946, 0x0953, 0x095a, 0x0960, 0x096b, 0x0971, 0x097a, 0x0980, - 0x0984, 0x0984, 0x098b, 0x099d, 0x09a1, 0x09a7, 0x09ae, 0x09ae, - 0x09ae, 0x09b3, 0x09bd, 0x09c4, 0x09ce, 0x09d2, 0x09e0, 0x09e6, - 0x09ea, 0x09f0, 0x09f0, 0x09f6, 0x09ff, 0x0a04, 0x0a0f, 0x0a0f, - // Entry 1C0 - 1FF - 0x0a12, 0x0a1d, 0x0a21, 0x0a21, 0x0a29, 0x0a30, 0x0a35, 0x0a3a, - 0x0a3f, 0x0a44, 0x0a4e, 0x0a57, 0x0a5f, 0x0a69, 0x0a70, 0x0a70, - 0x0a7b, 0x0a7b, 0x0a7b, 0x0a86, 0x0a86, 0x0a8d, 0x0a8d, 0x0a8d, - 0x0a93, 0x0a98, 0x0aa8, 0x0aad, 0x0aad, 0x0ab6, 0x0abd, 0x0ac7, - 0x0ac7, 0x0ac7, 0x0acc, 0x0ad1, 0x0ad1, 0x0ad1, 0x0ad1, 0x0ad7, - 0x0ada, 0x0ae1, 0x0ae5, 0x0aee, 0x0af5, 0x0afa, 0x0b00, 0x0b00, - 0x0b07, 0x0b0c, 0x0b14, 0x0b19, 0x0b19, 0x0b26, 0x0b26, 0x0b2a, - 0x0b2a, 0x0b30, 0x0b3f, 0x0b4c, 0x0b4c, 0x0b54, 0x0b58, 0x0b58, - // Entry 200 - 23F - 0x0b5e, 0x0b5e, 0x0b5e, 0x0b6a, 0x0b73, 0x0b7d, 0x0b87, 0x0b8e, - 0x0b96, 0x0ba2, 0x0ba7, 0x0bab, 0x0bab, 0x0bb1, 0x0bb5, 0x0bbd, - 0x0bc2, 0x0bc2, 0x0bc8, 0x0bc8, 0x0bc8, 0x0bcd, 0x0bd1, 0x0bd7, - 0x0bdc, 0x0be1, 0x0be4, 0x0beb, 0x0beb, 0x0bf2, 0x0bf9, 0x0bf9, - 0x0c01, 0x0c0c, 0x0c15, 0x0c15, 0x0c1b, 0x0c1b, 0x0c23, 0x0c23, - 0x0c2a, 0x0c30, 0x0c37, 0x0c3f, 0x0c5a, 0x0c60, 0x0c66, 0x0c6d, - 0x0c79, 0x0c7c, 0x0c7c, 0x0c7c, 0x0c7c, 0x0c7c, 0x0c81, 0x0c81, - 0x0c86, 0x0c8c, 0x0c92, 0x0c97, 0x0c9c, 0x0ca3, 0x0ca5, 0x0cac, - // Entry 240 - 27F - 0x0cac, 0x0cb0, 0x0cb3, 0x0cb8, 0x0cbf, 0x0cc4, 0x0cc4, 0x0cca, - 0x0cd1, 0x0cdb, 0x0cdb, 0x0ce1, 0x0ce7, 0x0ceb, 0x0cfe, 0x0d02, - 0x0d19, 0x0d2c, 0x0d3f, 0x0d5d, 0x0d74, 0x0d87, 0x0d9d, 0x0db1, - 0x0dcd, 0x0de1, 0x0df3, 0x0df3, 0x0e07, 0x0e1f, 0x0e2e, 0x0e35, - 0x0e4c, 0x0e65, 0x0e6b, 0x0e76, 0x0e88, 0x0e9b, 0x0eaa, -} // Size: 1254 bytes - -const bgLangStr string = "" + // Size: 7962 bytes - "афарскиабхазкиавестскиафрикансаканамхарскиарагонскиарабскиасамскиаварски" + - "аймараазербайджанскибашкирскибеларускибългарскибисламабамбарабенгалскит" + - "ибетскибретонскибосненскикаталонскичеченскичаморокорсиканскикриичешкицъ" + - "рковнославянскичувашкиуелскидатскинемскидивехидзонгкхаевегръцкианглийск" + - "иесперантоиспанскиестонскибаскиперсийскифулафинскифиджийскифарьорскифре" + - "нскизападнофризийскиирландскишотландски галскигалисийскигуаранигуджарат" + - "иманкскихаусаивритхиндихири мотухърватскихаитянски креолскиунгарскиарме" + - "нскихерероинтерлингваиндонезийскиоксиденталигбосъчуански иинупиакидоисл" + - "андскииталианскиинуктитутяпонскияванскигрузинскиконгоанскикикуюкванямак" + - "азахскигренландскикхмерскиканнадакорейскиканурикашмирскикюрдскикомикорн" + - "уолскикиргизкилатинскилюксембургскигандалимбургскилингалалаоскилитовски" + - "луба-катангалатвийскималгашкимаршалеземаорскимакедонскималаяламмонголск" + - "имаратималайскималтийскибирманскинаурусеверен ндебеленепалскиндонганиде" + - "рландскинорвежки (нюношк)норвежки (букмол)южен ндебеленавахонянджаоксит" + - "анскиоджибваоромоорияосетскипенджабскипалиполскипущупортугалскикечуарет" + - "ороманскирундирумънскирускикиняруандасанскритсардинскисиндхисеверносаам" + - "скисангосинхалскисловашкисловенскисамоанскишонасомалийскиалбанскисръбск" + - "исватисесотосунданскишведскисуахилитамилскителугутаджикскитайскитигриня" + - "туркменскитсванатонганскитурскицонгататарскитаитянскиуйгурскиукраинскиу" + - "рдуузбекскивендавиетнамскиволапюквалонскиволофксосаидишйорубазуангкитай" + - "скизулускиачешкиаколиадангмеадигейскиафрихилиагемайнуакадскиалеутскиюжн" + - "оалтайскистароанглийскиангикаарамейскимапучеарапахоаравакасуастурскиава" + - "дибалучибалийскибасабеябембабеназападен балочибожпурибиколскибинисиксик" + - "абраджбодобурятскибугинскибиленскикаддокарибскиатсамсебуанскичигачибчач" + - "агатайчуукмарийскижаргон чинуукчокточиипувскичерокскичейенскикюрдски (ц" + - "ентрален)коптскикримскотатарскисеселва, креолски френскикашубскидакотск" + - "идаргватаитаделауерслейвидогрибдинказармадогридолнолужишкидуаласреднове" + - "ковен холандскидиола-фонидиуладазагаембуефикдревноегипетскиекажукеламит" + - "скисредновековен английскиевондофангфилипинскифонсредновековен френскис" + - "тарофренскисеверен фризскиизточнофризийскифриулианскигагагаузкигайогбая" + - "гиизгилбертскисредновисоконемскистаровисоконемскигондигоронталоготическ" + - "игребодревногръцкишвейцарски немскигусиигвичинхайдахавайскихилигайнонхи" + - "тскихмонггорнолужишкихупаибанибибиоилокоингушетскиложбаннгомбамачамеюде" + - "о-персийскиюдео-арабскикаракалпашкикабилскикачинскижжукамбакавикабардиа" + - "нтуапмакондекабовердианскикорокхасикотскикойра чииникакокаленджинкимбун" + - "дукоми-пермякскиконканикосраенкпелекарачай-балкарскикарелскикурукшамбал" + - "абафиякьолнскикумикскикутенайладинолангилахндаламбалезгинскилакотамонго" + - "лозисеверен лурилуба-лулуалуисеньолундалуомизолухямадурскимагахимайтхил" + - "имакасармандингомасайскимокшамандармендемеруморисиенсредновековен ирлан" + - "дскимакуа метометамикмакминангкабауманджурскиманипурскимохоукмосимундан" + - "гмногоезичникрикмирандийскимарвариерзиамазандаринеаполитанскинамадолнон" + - "емскиневарскиниасниуеанквасионгиембунногаистаронорвежкинкосеверен сотон" + - "уеркласически невариниамвезинянколенуоронзимаосейджиотомански турскипан" + - "гасинанпахлавипампангапапиаментопалауаннигерийски пиджинстароперсийскиф" + - "иникийскипонапеанпрускистаропровансалскикичераджастанскирапа нуираротон" + - "гаромборомскиарумънскирвасандавеякутскисамаритански арамейскисамбурусас" + - "аксанталингамбайсангусицилианскишотландскиюжнокюрдскисенаселкупкойрабор" + - "о сенистароирландскиташелхитшансидамоюжносаамскилуле-саамскиинари-саамс" + - "кисколт-саамскисонинкесогдийскисранан тонгосерерсахосукумасусушумерскик" + - "оморскикласически сирийскисирийскитемнетесотеренотетумтигретивтокелайск" + - "иклингонскитлингиттамашекнианса тонгаток писинтарокоцимшианскитумбукату" + - "валуанскитасавактувинскицентралноатласки тамазигтудмуртскиугаритскиумбу" + - "ндунеопределенваивотиквунджовалзерски немскиваламоварайуашовалпирикалми" + - "ксогаяояпезеянгбенйембакантонскизапотекблис символизенагастандартен мар" + - "окански тамазигтзунибез лингвистично съдържаниезазасъвременен стандарте" + - "н арабскианглийски (САЩ)долносаксонскифламандскимолдовскисърбохърватски" + - "конгоански суахиликитайски (опростен)" - -var bgLangIdx = []uint16{ // 614 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x001c, 0x002c, 0x003c, 0x0044, 0x0054, 0x0066, - 0x0074, 0x0082, 0x0090, 0x009c, 0x00b8, 0x00ca, 0x00dc, 0x00ee, - 0x00fc, 0x010a, 0x011c, 0x012c, 0x013e, 0x0150, 0x0164, 0x0174, - 0x0180, 0x0196, 0x019e, 0x01a8, 0x01ca, 0x01d8, 0x01e4, 0x01f0, - 0x01fc, 0x0208, 0x0218, 0x021e, 0x022a, 0x023c, 0x024e, 0x025e, - 0x026e, 0x0278, 0x028a, 0x0292, 0x029e, 0x02b0, 0x02c2, 0x02d0, - 0x02f0, 0x0302, 0x0323, 0x0337, 0x0345, 0x0357, 0x0365, 0x036f, - 0x0379, 0x0383, 0x0394, 0x03a6, 0x03c9, 0x03d9, 0x03e9, 0x03f5, - // Entry 40 - 7F - 0x040b, 0x0423, 0x0437, 0x043f, 0x0454, 0x0462, 0x0468, 0x047a, - 0x048e, 0x04a0, 0x04ae, 0x04bc, 0x04ce, 0x04e2, 0x04ec, 0x04fa, - 0x050a, 0x0520, 0x0530, 0x053e, 0x054e, 0x055a, 0x056c, 0x057a, - 0x0582, 0x0596, 0x05a6, 0x05b6, 0x05d0, 0x05da, 0x05ee, 0x05fc, - 0x0608, 0x0618, 0x062f, 0x0641, 0x0651, 0x0663, 0x0671, 0x0685, - 0x0695, 0x06a7, 0x06b3, 0x06c3, 0x06d5, 0x06e7, 0x06f1, 0x070e, - 0x071e, 0x072a, 0x0742, 0x0761, 0x0780, 0x0797, 0x07a3, 0x07af, - 0x07c3, 0x07d1, 0x07db, 0x07e3, 0x07f1, 0x0805, 0x080d, 0x0819, - // Entry 80 - BF - 0x0821, 0x0837, 0x0841, 0x0859, 0x0863, 0x0873, 0x087d, 0x0891, - 0x08a1, 0x08b3, 0x08bf, 0x08db, 0x08e5, 0x08f7, 0x0907, 0x0919, - 0x092b, 0x0933, 0x0947, 0x0957, 0x0965, 0x096f, 0x097b, 0x098d, - 0x099b, 0x09a9, 0x09b9, 0x09c5, 0x09d7, 0x09e3, 0x09f1, 0x0a05, - 0x0a11, 0x0a23, 0x0a2f, 0x0a39, 0x0a49, 0x0a5b, 0x0a6b, 0x0a7d, - 0x0a85, 0x0a95, 0x0a9f, 0x0ab3, 0x0ac1, 0x0ad1, 0x0adb, 0x0ae5, - 0x0aed, 0x0af9, 0x0b03, 0x0b13, 0x0b21, 0x0b2d, 0x0b37, 0x0b45, - 0x0b57, 0x0b57, 0x0b67, 0x0b6f, 0x0b77, 0x0b85, 0x0b85, 0x0b95, - // Entry C0 - FF - 0x0b95, 0x0bad, 0x0bc9, 0x0bd5, 0x0be7, 0x0bf3, 0x0bf3, 0x0c01, - 0x0c01, 0x0c01, 0x0c0d, 0x0c0d, 0x0c0d, 0x0c13, 0x0c13, 0x0c23, - 0x0c23, 0x0c2d, 0x0c39, 0x0c49, 0x0c49, 0x0c51, 0x0c51, 0x0c51, - 0x0c51, 0x0c57, 0x0c61, 0x0c61, 0x0c69, 0x0c69, 0x0c69, 0x0c84, - 0x0c92, 0x0ca2, 0x0caa, 0x0caa, 0x0caa, 0x0cb8, 0x0cb8, 0x0cb8, - 0x0cc2, 0x0cc2, 0x0cca, 0x0cca, 0x0cda, 0x0cea, 0x0cea, 0x0cfa, - 0x0cfa, 0x0d04, 0x0d14, 0x0d14, 0x0d1e, 0x0d1e, 0x0d30, 0x0d38, - 0x0d42, 0x0d50, 0x0d58, 0x0d68, 0x0d81, 0x0d8b, 0x0d9d, 0x0dad, - // Entry 100 - 13F - 0x0dbd, 0x0de0, 0x0dee, 0x0dee, 0x0e0c, 0x0e3b, 0x0e4b, 0x0e5b, - 0x0e67, 0x0e71, 0x0e7f, 0x0e8b, 0x0e97, 0x0ea1, 0x0eab, 0x0eb5, - 0x0ecd, 0x0ecd, 0x0ed7, 0x0f04, 0x0f17, 0x0f21, 0x0f2d, 0x0f35, - 0x0f3d, 0x0f3d, 0x0f5b, 0x0f67, 0x0f79, 0x0fa6, 0x0fa6, 0x0fb2, - 0x0fb2, 0x0fba, 0x0fce, 0x0fce, 0x0fd4, 0x0fd4, 0x0ffd, 0x1015, - 0x1015, 0x1032, 0x1052, 0x1068, 0x106c, 0x107c, 0x107c, 0x1084, - 0x108c, 0x108c, 0x1094, 0x10a8, 0x10a8, 0x10cc, 0x10ee, 0x10ee, - 0x10f8, 0x110a, 0x111c, 0x1126, 0x113e, 0x115f, 0x115f, 0x115f, - // Entry 140 - 17F - 0x1169, 0x1175, 0x117f, 0x117f, 0x118f, 0x118f, 0x11a3, 0x11af, - 0x11b9, 0x11d1, 0x11d1, 0x11d9, 0x11e1, 0x11ed, 0x11f7, 0x120b, - 0x120b, 0x120b, 0x1217, 0x1223, 0x122f, 0x124a, 0x1261, 0x1261, - 0x1279, 0x1289, 0x1299, 0x129f, 0x12a9, 0x12b1, 0x12c3, 0x12c3, - 0x12cb, 0x12d9, 0x12f5, 0x12f5, 0x12fd, 0x12fd, 0x1307, 0x1313, - 0x1328, 0x1328, 0x1328, 0x1330, 0x1342, 0x1352, 0x136d, 0x137b, - 0x1389, 0x1393, 0x13b4, 0x13b4, 0x13b4, 0x13c4, 0x13ce, 0x13dc, - 0x13e6, 0x13f6, 0x1406, 0x1414, 0x1420, 0x142a, 0x1436, 0x1440, - // Entry 180 - 1BF - 0x1452, 0x1452, 0x1452, 0x1452, 0x145e, 0x145e, 0x1468, 0x1468, - 0x1470, 0x1487, 0x1487, 0x149a, 0x14aa, 0x14b4, 0x14ba, 0x14c2, - 0x14ca, 0x14ca, 0x14ca, 0x14da, 0x14da, 0x14e6, 0x14f6, 0x1504, - 0x1514, 0x1524, 0x1524, 0x152e, 0x153a, 0x1544, 0x154c, 0x155c, - 0x1589, 0x159c, 0x15a4, 0x15b0, 0x15c6, 0x15da, 0x15ee, 0x15fa, - 0x1602, 0x1602, 0x1610, 0x1626, 0x162e, 0x1644, 0x1652, 0x1652, - 0x1652, 0x165c, 0x166e, 0x166e, 0x1688, 0x1690, 0x16a6, 0x16b6, - 0x16be, 0x16ca, 0x16ca, 0x16d6, 0x16e6, 0x16f0, 0x170a, 0x170a, - // Entry 1C0 - 1FF - 0x1710, 0x1727, 0x172f, 0x1750, 0x1760, 0x176e, 0x1778, 0x1782, - 0x1790, 0x17af, 0x17c3, 0x17d1, 0x17e1, 0x17f5, 0x1803, 0x1803, - 0x1824, 0x1824, 0x1824, 0x1840, 0x1840, 0x1854, 0x1854, 0x1854, - 0x1864, 0x1870, 0x1892, 0x189a, 0x189a, 0x18b2, 0x18c1, 0x18d3, - 0x18d3, 0x18d3, 0x18dd, 0x18e9, 0x18e9, 0x18e9, 0x18e9, 0x18fb, - 0x1901, 0x190f, 0x191d, 0x1948, 0x1956, 0x1960, 0x196e, 0x196e, - 0x197c, 0x1986, 0x199c, 0x19b0, 0x19b0, 0x19c6, 0x19c6, 0x19ce, - 0x19ce, 0x19da, 0x19f5, 0x1a11, 0x1a11, 0x1a21, 0x1a27, 0x1a27, - // Entry 200 - 23F - 0x1a33, 0x1a33, 0x1a33, 0x1a49, 0x1a60, 0x1a79, 0x1a92, 0x1aa0, - 0x1ab2, 0x1ac9, 0x1ad3, 0x1adb, 0x1adb, 0x1ae7, 0x1aef, 0x1aff, - 0x1b0f, 0x1b34, 0x1b44, 0x1b44, 0x1b44, 0x1b4e, 0x1b56, 0x1b62, - 0x1b6c, 0x1b76, 0x1b7c, 0x1b90, 0x1b90, 0x1ba4, 0x1bb2, 0x1bb2, - 0x1bc0, 0x1bd7, 0x1be8, 0x1be8, 0x1bf4, 0x1bf4, 0x1c08, 0x1c08, - 0x1c16, 0x1c2c, 0x1c3a, 0x1c4a, 0x1c7b, 0x1c8d, 0x1c9f, 0x1cad, - 0x1cc3, 0x1cc9, 0x1cc9, 0x1cc9, 0x1cc9, 0x1cc9, 0x1cd3, 0x1cd3, - 0x1cdf, 0x1cfe, 0x1d0a, 0x1d14, 0x1d1c, 0x1d2a, 0x1d2a, 0x1d36, - // Entry 240 - 27F - 0x1d36, 0x1d3e, 0x1d42, 0x1d4c, 0x1d58, 0x1d62, 0x1d62, 0x1d74, - 0x1d82, 0x1d99, 0x1d99, 0x1da5, 0x1ddf, 0x1de7, 0x1e1b, 0x1e23, - 0x1e5b, 0x1e5b, 0x1e5b, 0x1e5b, 0x1e5b, 0x1e5b, 0x1e5b, 0x1e76, - 0x1e76, 0x1e76, 0x1e76, 0x1e76, 0x1e76, 0x1e76, 0x1e92, 0x1ea6, - 0x1ea6, 0x1ea6, 0x1eb8, 0x1ed4, 0x1ef7, 0x1f1a, -} // Size: 1252 bytes - -const bnLangStr string = "" + // Size: 12466 bytes - "আফারআবখাজিয়ানআবেস্তীয়আফ্রিকানআকানআমহারিকআর্গোনিজআরবীআসামিআভেরিকআয়মারা" + - "আজারবাইজানীবাশকিরবেলারুশিয়বুলগেরিয়বিসলামাবামবারাবাংলাতিব্বতিব্রেটনবস" + - "নীয়ানকাতালানচেচেনচামোরোকর্সিকানক্রিচেকচার্চ স্লাভিকচুবাসওয়েলশডেনিশজা" + - "র্মানদিবেহিজোঙ্গাইউয়িগ্রিকইংরেজিএস্পেরান্তোস্প্যানিশএস্তোনীয়বাস্কফার" + - "্সিফুলাহ্ফিনিশফিজিআনফারোসফরাসিপশ্চিম ফ্রিসিয়ানআইরিশস্কটস-গ্যেলিকগ্যাল" + - "িশিয়গুয়ারানিগুজরাটিম্যাঙ্কসহাউসাহিব্রুহিন্দিহিরি মোতুক্রোয়েশীয়হাইত" + - "িয়ান ক্রেওলহাঙ্গেরীয়আর্মেনিয়হেরেরোইন্টারলিঙ্গুয়াইন্দোনেশীয়ইন্টারল" + - "িঙ্গইগ্\u200cবোসিচুয়ান য়িইনুপিয়াকইডোআইসল্যান্ডীয়ইতালিয়ইনুক্টিটুটজ" + - "াপানিজাভানিজজর্জিয়ানকঙ্গোকিকুয়ুকোয়ানিয়ামাকাজাখক্যালাল্লিসুটখমেরকন্" + - "নড়কোরিয়ানকানুরিকাশ্মীরিকুর্দিশকোমিকর্ণিশকির্গিজলাটিনলুক্সেমবার্গীয়গ" + - "ান্ডালিম্বুর্গিশলিঙ্গালালাওলিথুয়েনীয়লুবা-কাটাঙ্গালাত্\u200cভীয়মালাগ" + - "াসিমার্শালিজমাওরিম্যাসিডোনীয়মালায়ালামমঙ্গোলিয়মারাঠিমালয়মল্টিয়বর্ম" + - "িনাউরুউত্তর এন্দেবিলিনেপালীএন্দোঙ্গাডাচনরওয়েজীয়ান নিনর্স্কনরওয়েজিয়" + - "ান বোকমালদক্ষিণ এনডেবেলেনাভাজোনায়াঞ্জাঅক্সিটানওজিবওয়াঅরোমোওড়িয়াওসে" + - "টিকপাঞ্জাবীপালিপোলিশপুশতুপর্তুগীজকেচুয়ারোমান্সরুন্দিরোমানীয়রুশকিনয়া" + - "রোয়ান্ডাসংস্কৃতসার্ডিনিয়ানসিন্ধিউত্তরাঞ্চলীয় সামিসাঙ্গোসিংহলীস্লোভা" + - "কস্লোভেনীয়সামোয়ানশোনাসোমালিআলবেনীয়সার্বীয়সোয়াতিদক্ষিন সোথোসুদানীস" + - "ুইডিশসোয়াহিলিতামিলতেলেগুতাজিকথাইতিগরিনিয়াতুর্কমেনীসোয়ানাটোঙ্গানতুর্" + - "কীসঙ্গাতাতারতাহিতিয়ানউইঘুরইউক্রেনীয়উর্দুউজবেকীয়ভেন্ডাভিয়েতনামীভোলা" + - "পুকওয়ালুনউওলোফজোসাইয়েদ্দিশইওরুবাঝু্য়াঙচীনাজুলুঅ্যাচাইনিজআকোলিঅদাগ্ম" + - "েআদেগেআফ্রিহিলিএঘেমআইনুআক্কাদিয়ানআলেউতদক্ষিন আলতাইপ্রাচীন ইংরেজীআঙ্গি" + - "কাআরামাইকমাপুচিআরাপাহোআরাওয়াকআসুআস্তুরিয়আওয়াধিবেলুচীবালিনীয়বাসাবেজ" + - "াবেম্বাবেনাপশ্চিম বালোচিভোজপুরিবিকোলবিনিসিকসিকাব্রাজবোড়োবুরিয়াতবুগিন" + - "িব্লিনক্যাডোক্যারিবআত্সামচেবুয়ানোচিগাচিবচাচাগাতাইচুকিমারিচিনুক জার্গন" + - "চকটোওচিপেওয়ানচেরোকীশাইয়েনমধ্য কুর্দিশকপটিকক্রিমিয়ান তুর্কিসেসেলওয়া" + - " ক্রেওল ফ্রেঞ্চকাশুবিয়ানডাকোটাদার্গওয়াতাইতাডেলাওয়েরস্ল্যাভদোগ্রীবডিংক" + - "াজার্মাডোগরিনিম্নতর সোর্বিয়ানদুয়ালামধ্য ডাচজোলা-ফনীডিউলাদাগাজাএম্বুএ" + - "ফিকপ্রাচীন মিশরীয়ইকাজুকএলামাইটমধ্য ইংরেজিইওন্ডোফ্যাঙ্গফিলিপিনোফনকাজুন" + - " ফরাসিমধ্য ফরাসিপ্রাচীন ফরাসিউত্তরাঞ্চলীয় ফ্রিসিয়ানপূর্ব ফ্রিসিয়ফ্রিউ" + - "লিয়ানগাগাগাউজganগায়োবায়াগীজগিলবার্টিজমধ্য-উচ্চ জার্মানিপ্রাচীন উচ্চ" + - " জার্মানিগোন্ডিগোরোন্তালোগথিকগ্রেবোপ্রাচীন গ্রীকসুইস জার্মানগুসীগওইচ্’ইন" + - "হাইডাhakহাওয়াইয়ানহিলিগ্যায়নোনহিট্টিটহ্\u200cমোঙউচ্চ সোর্বিয়ানXiang" + - " চীনাহুপাইবানইবিবিওইলোকোইঙ্গুশলোজবানগোম্বামাকামেজুদেও ফার্সিজুদেও আরবিকা" + - "রা-কাল্পাককাবাইলেকাচিনঅজ্জুকাম্বাকাউইকাবার্ডিয়ানটাইয়াপমাকোন্দেকাবুভা" + - "রদিয়ানুকোরোখাশিখোটানিজকোয়রা চীনিকাকোকালেনজিনকিম্বুন্দুকমি-পারমিআককোঙ" + - "্কানিকোস্রাইনক্\u200cপেল্লেকারচে-বাল্কারকারেলিয়ানকুরুখশাম্বালাবাফিয়া" + - "কল্শকুমিককুটেনাইলাডিনোলাঙ্গিলান্ডালাম্বালেজঘিয়ানলাকোটামোঙ্গোলুইসিয়ান" + - "া ক্রেওললোজিউত্তর লুরিলুবা-লুলুয়ালুইসেনোলুন্ডালুয়োমিজোলুইয়ামাদুরেসে" + - "মাগাহিমৈথিলিম্যাকাসারম্যান্ডিঙ্গোমাসাইমোকশাম্যাণ্ডারমেন্ডেমেরুমরিসিয়া" + - "নমধ্য আইরিশমাখুয়া-মেত্তোমেটামিকম্যাকমিনাঙ্গ্\u200cকাবাউমাঞ্চুমণিপুরীম" + - "োহাওকমসিমুদাঙ্গএকাধিক ভাষাক্রিকমিরান্ডিজমারোয়ারিএরজিয়ামাজানদেরানিnan" + - "নেয়াপোলিটাননামানিম্ন জার্মানিনেওয়ারিনিয়াসনিউয়ানকোয়াসিওনিঙ্গেম্বুন" + - "নোগাইপ্রাচীন নর্সএন’কোউত্তরাঞ্চলীয় সোথোনুয়ারপ্রাচীন নেওয়ারীন্যায়াম" + - "ওয়েজিন্যায়াঙ্কোলেন্যোরোএনজিমাওসেজঅটোমান তুর্কিপাঙ্গাসিনানপাহ্লাভিপাম" + - "্পাঙ্গাপাপিয়ামেন্টোপালায়ুয়াননাইজেরিয় পিজিনপ্রাচীন ফার্সিফোনিশীয়ান" + - "পোহ্নপেইয়ানপ্রুশিয়ানপ্রাচীন প্রোভেনসালকি‘চেরাজস্থানীরাপানুইরারোটোংগা" + - "নরম্বোরোমানিআরমেনিয়ানরাওয়াস্যান্ডাওয়েশাখাসামারিটান আরামিকসামবুরুসাস" + - "াকসাঁওতালিন্যাগাম্বেসাঙ্গুসিসিলিয়ানস্কটসদক্ষিণ কুর্দিশসেনাসেল্কুপকোয়" + - "রাবেনো সেন্নীপ্রাচীন আইরিশতাচেলহিতশানসিডামোদক্ষিণাঞ্চলীয় সামিলুলে সাম" + - "িইনারি সামিস্কোল্ট সামিসোনিঙ্কেসোগডিয়ানস্রানান টোঙ্গোসেরেরসাহোসুকুমাস" + - "ুসুসুমেরীয়কমোরিয়ানপ্রাচীন সিরিওসিরিয়াকটাইম্নেতেসোতেরেনোতেতুমটাইগ্রে" + - "টিভটোকেলাউক্লিঙ্গনত্লিঙ্গিটতামাশেকনায়াসা টোঙ্গাটোক পিসিনতারোকোসিমশিয়" + - "ানতুম্বুকাটুভালুতাসাওয়াকটুভিনিয়ানসেন্ট্রাল আটলাস তামাজিগাতউডমুর্টউগা" + - "রিটিকউম্বুন্দুঅজানা ভাষাভাইভোটিকভুঞ্জোওয়ালসেরওয়ালামোওয়ারেওয়াশোওয়া" + - "র্লপিরিWu চীনাকাল্মইকসোগাইয়াওইয়াপেসেইয়াঙ্গবেনইয়েম্বাক্যানটোনীজজাপো" + - "টেকচিত্র ভাষাজেনাগাআদর্শ মরক্কোন তামাজিগাতজুনিভাষাভিত্তিক বিষয়বস্তু ন" + - "েইজাজাআধুনিক আদর্শ আরবীঅস্ট্রিয়ান জার্মানসুইস হাই জার্মানঅস্ট্রেলীয় " + - "ইংরেজিকানাডীয় ইংরেজিব্রিটিশ ইংরেজিআমেরিকার ইংরেজিল্যাটিন আমেরিকান স্প" + - "্যানিশইউরোপীয় স্প্যানিশম্যাক্সিকান স্প্যানিশকানাডীয় ফরাসিসুইস ফরাসিল" + - "ো স্যাক্সনফ্লেমিশব্রাজিলের পর্তুগীজইউরোপের পর্তুগীজমলদাভিয়সার্বো-ক্রো" + - "য়েশিয়কঙ্গো সোয়াহিলিসরলীকৃত চীনাঐতিহ্যবাহি চীনা" - -var bnLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x002a, 0x0045, 0x005d, 0x0069, 0x007e, 0x0096, - 0x00a2, 0x00b1, 0x00c3, 0x00d8, 0x00f9, 0x010b, 0x0129, 0x0144, - 0x0159, 0x016e, 0x017d, 0x0192, 0x01a4, 0x01bc, 0x01d1, 0x01e0, - 0x01f2, 0x020a, 0x0216, 0x021f, 0x0244, 0x0253, 0x0265, 0x0274, - 0x0289, 0x029b, 0x02ad, 0x02bc, 0x02cb, 0x02dd, 0x02fe, 0x0319, - 0x0334, 0x0343, 0x0355, 0x0367, 0x0376, 0x0388, 0x0397, 0x03a6, - 0x03d7, 0x03e6, 0x040b, 0x0429, 0x0444, 0x0459, 0x0471, 0x0480, - 0x0492, 0x04a4, 0x04bd, 0x04de, 0x050c, 0x052a, 0x0545, 0x0557, - // Entry 40 - 7F - 0x0584, 0x05a5, 0x05c6, 0x05d8, 0x05fa, 0x0615, 0x061e, 0x0645, - 0x065a, 0x0678, 0x068a, 0x069f, 0x06ba, 0x06c9, 0x06de, 0x0702, - 0x0711, 0x0738, 0x0744, 0x0756, 0x076e, 0x0780, 0x0798, 0x07ad, - 0x07b9, 0x07cb, 0x07e0, 0x07ef, 0x081c, 0x082e, 0x084f, 0x0867, - 0x0870, 0x0891, 0x08b6, 0x08d1, 0x08e9, 0x0904, 0x0913, 0x0937, - 0x0955, 0x0970, 0x0982, 0x0991, 0x09a6, 0x09b5, 0x09c4, 0x09ef, - 0x0a01, 0x0a1c, 0x0a25, 0x0a62, 0x0a99, 0x0ac4, 0x0ad6, 0x0af1, - 0x0b09, 0x0b21, 0x0b30, 0x0b45, 0x0b57, 0x0b6f, 0x0b7b, 0x0b8a, - // Entry 80 - BF - 0x0b99, 0x0bb1, 0x0bc6, 0x0bdb, 0x0bed, 0x0c05, 0x0c0e, 0x0c3b, - 0x0c50, 0x0c74, 0x0c86, 0x0cba, 0x0ccc, 0x0cde, 0x0cf3, 0x0d11, - 0x0d29, 0x0d35, 0x0d47, 0x0d5f, 0x0d77, 0x0d8c, 0x0dab, 0x0dbd, - 0x0dcf, 0x0dea, 0x0df9, 0x0e0b, 0x0e1a, 0x0e23, 0x0e41, 0x0e5c, - 0x0e71, 0x0e86, 0x0e98, 0x0ea7, 0x0eb6, 0x0ed4, 0x0ee3, 0x0f01, - 0x0f10, 0x0f28, 0x0f3a, 0x0f58, 0x0f6d, 0x0f82, 0x0f91, 0x0f9d, - 0x0fb8, 0x0fca, 0x0fdf, 0x0feb, 0x0ff7, 0x1015, 0x1024, 0x1039, - 0x1048, 0x1048, 0x1063, 0x106f, 0x107b, 0x109c, 0x109c, 0x10ab, - // Entry C0 - FF - 0x10ab, 0x10cd, 0x10f5, 0x110a, 0x111f, 0x1131, 0x1131, 0x1146, - 0x1146, 0x1146, 0x115e, 0x115e, 0x115e, 0x1167, 0x1167, 0x1182, - 0x1182, 0x1197, 0x11a9, 0x11c1, 0x11c1, 0x11cd, 0x11cd, 0x11cd, - 0x11cd, 0x11d9, 0x11eb, 0x11eb, 0x11f7, 0x11f7, 0x11f7, 0x121c, - 0x1231, 0x1240, 0x124c, 0x124c, 0x124c, 0x1261, 0x1261, 0x1261, - 0x1270, 0x1270, 0x127f, 0x127f, 0x1297, 0x12a9, 0x12a9, 0x12b8, - 0x12b8, 0x12ca, 0x12df, 0x12df, 0x12f1, 0x12f1, 0x130c, 0x1318, - 0x1327, 0x133c, 0x1348, 0x1354, 0x1376, 0x1385, 0x13a0, 0x13b2, - // Entry 100 - 13F - 0x13c7, 0x13e9, 0x13f8, 0x13f8, 0x1429, 0x146d, 0x148b, 0x149d, - 0x14b8, 0x14c7, 0x14e2, 0x14f7, 0x150c, 0x151b, 0x152d, 0x153c, - 0x1570, 0x1570, 0x1585, 0x159b, 0x15b1, 0x15c0, 0x15d2, 0x15e1, - 0x15ed, 0x15ed, 0x1618, 0x162a, 0x163f, 0x165e, 0x165e, 0x1670, - 0x1670, 0x1685, 0x169d, 0x169d, 0x16a3, 0x16c2, 0x16de, 0x1703, - 0x1703, 0x1749, 0x1771, 0x1792, 0x1798, 0x17aa, 0x17ad, 0x17bc, - 0x17cb, 0x17cb, 0x17d4, 0x17f2, 0x17f2, 0x1824, 0x185f, 0x185f, - 0x1871, 0x188f, 0x189b, 0x18ad, 0x18d2, 0x18f4, 0x18f4, 0x18f4, - // Entry 140 - 17F - 0x1900, 0x1918, 0x1927, 0x192a, 0x194b, 0x194b, 0x1972, 0x1987, - 0x1999, 0x19c4, 0x19d6, 0x19e2, 0x19ee, 0x1a00, 0x1a0f, 0x1a21, - 0x1a21, 0x1a21, 0x1a33, 0x1a45, 0x1a57, 0x1a79, 0x1a95, 0x1a95, - 0x1ab7, 0x1acc, 0x1adb, 0x1aea, 0x1afc, 0x1b08, 0x1b2c, 0x1b2c, - 0x1b41, 0x1b59, 0x1b83, 0x1b83, 0x1b8f, 0x1b8f, 0x1b9b, 0x1bb0, - 0x1bcf, 0x1bcf, 0x1bcf, 0x1bdb, 0x1bf3, 0x1c11, 0x1c30, 0x1c48, - 0x1c60, 0x1c7b, 0x1ca0, 0x1ca0, 0x1ca0, 0x1cbe, 0x1ccd, 0x1ce5, - 0x1cfa, 0x1d06, 0x1d15, 0x1d2a, 0x1d3c, 0x1d4e, 0x1d60, 0x1d72, - // Entry 180 - 1BF - 0x1d8d, 0x1d8d, 0x1d8d, 0x1d8d, 0x1d9f, 0x1d9f, 0x1db1, 0x1de2, - 0x1dee, 0x1e0a, 0x1e0a, 0x1e2c, 0x1e41, 0x1e53, 0x1e62, 0x1e6e, - 0x1e80, 0x1e80, 0x1e80, 0x1e98, 0x1e98, 0x1eaa, 0x1ebc, 0x1ed7, - 0x1efb, 0x1f0a, 0x1f0a, 0x1f19, 0x1f34, 0x1f46, 0x1f52, 0x1f6d, - 0x1f89, 0x1fb1, 0x1fbd, 0x1fd5, 0x1fff, 0x2011, 0x2026, 0x2038, - 0x2041, 0x2041, 0x2056, 0x2075, 0x2084, 0x209f, 0x20ba, 0x20ba, - 0x20ba, 0x20cf, 0x20f0, 0x20f3, 0x2117, 0x2123, 0x214b, 0x2163, - 0x2175, 0x218a, 0x218a, 0x21a2, 0x21c3, 0x21d2, 0x21f4, 0x21f4, - // Entry 1C0 - 1FF - 0x2203, 0x2237, 0x2249, 0x2277, 0x22a1, 0x22c8, 0x22da, 0x22ec, - 0x22f8, 0x231d, 0x233e, 0x2356, 0x2374, 0x239b, 0x23bc, 0x23bc, - 0x23e7, 0x23e7, 0x23e7, 0x240f, 0x240f, 0x242d, 0x242d, 0x242d, - 0x2451, 0x246f, 0x24a3, 0x24b2, 0x24b2, 0x24cd, 0x24e2, 0x2500, - 0x2500, 0x2500, 0x250f, 0x2521, 0x2521, 0x2521, 0x2521, 0x253f, - 0x2551, 0x2575, 0x2581, 0x25af, 0x25c4, 0x25d3, 0x25eb, 0x25eb, - 0x2609, 0x261b, 0x2639, 0x2648, 0x2648, 0x2670, 0x2670, 0x267c, - 0x267c, 0x2691, 0x26c2, 0x26e7, 0x26e7, 0x26ff, 0x2708, 0x2708, - // Entry 200 - 23F - 0x271a, 0x271a, 0x271a, 0x2751, 0x276a, 0x2786, 0x27a8, 0x27c0, - 0x27db, 0x2803, 0x2812, 0x281e, 0x281e, 0x2830, 0x283c, 0x2854, - 0x286f, 0x2894, 0x28ac, 0x28ac, 0x28ac, 0x28c1, 0x28cd, 0x28df, - 0x28ee, 0x2903, 0x290c, 0x2921, 0x2921, 0x2939, 0x2954, 0x2954, - 0x2969, 0x2991, 0x29aa, 0x29aa, 0x29bc, 0x29bc, 0x29d7, 0x29d7, - 0x29ef, 0x2a01, 0x2a1c, 0x2a3a, 0x2a81, 0x2a96, 0x2aae, 0x2ac9, - 0x2ae5, 0x2aee, 0x2aee, 0x2aee, 0x2aee, 0x2aee, 0x2afd, 0x2afd, - 0x2b0f, 0x2b27, 0x2b3f, 0x2b51, 0x2b63, 0x2b84, 0x2b93, 0x2ba8, - // Entry 240 - 27F - 0x2ba8, 0x2bb4, 0x2bc3, 0x2bdb, 0x2bf9, 0x2c11, 0x2c11, 0x2c2f, - 0x2c44, 0x2c60, 0x2c60, 0x2c72, 0x2cb3, 0x2cbf, 0x2d09, 0x2d15, - 0x2d44, 0x2d44, 0x2d7b, 0x2da7, 0x2ddb, 0x2e06, 0x2e2e, 0x2e59, - 0x2ea3, 0x2ed7, 0x2f14, 0x2f14, 0x2f3c, 0x2f58, 0x2f77, 0x2f8c, - 0x2fc0, 0x2fee, 0x3006, 0x303a, 0x3065, 0x3087, 0x30b2, -} // Size: 1254 bytes - -const caLangStr string = "" + // Size: 4657 bytes - "àfarabkhazavèsticafrikaansàkanamhàricaragonèsàrabassamèsàvaraimaraàzerib" + - "aixkirbielorúsbúlgarbislamabambarabengalítibetàbretóbosniàcatalàtxetxèch" + - "amorrocorscreetxeceslau eclesiàstictxuvaixgal·lèsdanèsalemanydivehidzong" + - "kaewegrecanglèsesperantoespanyolestoniàbascpersafulfinèsfijiàferoèsfranc" + - "èsfrisó occidentalirlandèsgaèlic escocèsgallecguaranígujaratimanxhaussa" + - "hebreuhindihiri motucroatcrioll d’Haitíhongarèsarmenihererointerlinguain" + - "donesiinterlingueigboyi sichuaninupiakidoislandèsitaliàinuktitutjaponèsj" + - "avanèsgeorgiàkongokikuiukuanyamakazakhgrenlandèskhmerkannadacoreàkanuric" + - "aixmirikurdkomicòrnickirguísllatíluxemburguèsgandalimburguèslingalalaosi" + - "àlituàluba katangaletómalgaixmarshallèsmaorimacedonimalaialammongolmara" + - "thimalaimaltèsbirmànauruàndebele septentrionalnepalèsndonganeerlandèsnor" + - "uec nynorsknoruec bokmålndebele meridionalnavahonyanjaoccitàojibwaoromoo" + - "riyaossetapanjabipalipolonèspaixtuportuguèsquítxuaretoromànicrundiromanè" + - "srusruandèssànscritsardsindisami septentrionalsangosingalèseslovaceslovè" + - "samoàshonasomalialbanèsserbiswazisotho meridionalsondanèssuecsuahilitàmi" + - "ltelugutadjiktaitigrinyaturcmansetswanatongalèsturctsongatàtartahitiàuig" + - "urucraïnèsurdúuzbekvendavietnamitavolapükvalówòlofxosajiddischiorubazhua" + - "ngxinèszuluatjehacoliadangmeadiguéafrihiliaghemainuaccadialabamaaleutaal" + - "banès gegaltaic meridionalanglès anticangikaarameumapudunguaraonaarapaho" + - "arauacàrab egipciparellengua de signes americanaasturiàawadhibalutxibali" + - "nèsbavarèsbasabamumghomalabejabembabenabafutbadagabalutxi occidentalbhoj" + - "puribicolbinikomblackfootbrajbrahuibodoakooseburiatbuguisekibilinmedumba" + - "caddocaribcayugaatsamcebuanochigatxibtxatxagataichuukmaripidgin chinookc" + - "hoctawchipewyancherokeexeienekurd centralcoptetàtar de Crimeafrancès cri" + - "oll de les Seychellescaixubidakotadarguàtaitadelawareslavidogribdinkazar" + - "madogribaix sòrabdoualaneerlandès mitjàdiolajuladazagaembuefikemiliàegip" + - "ci anticekajukelamitaanglès mitjàewondoextremenyfangfilipífonfrancès caj" + - "unfrancès mitjàfrancès anticfrisó septentrionalfrisó orientalfriülàgagag" + - "aúsxinès gangayogbayagueezgilbertèsgilakialt alemany mitjàalt alemany an" + - "ticconcani de Goagondigorontalogòticgrebogrec anticalemany suíswayúgusíg" + - "wich’inhaidaxinès hakkahawaiàhindi de Fijihíligaynonhititahmongalt sòrab" + - "xinès xianghupaibanibibioilocanoingúixcrioll anglès de Jamaicalojbanngom" + - "bamachamejudeopersajudeoàrabkarakalpakcabilenckatxinjjukambakawikabardík" + - "anembutyapmakondecrioll capverdiàkenyangkorokaingàkhasikhotanèskoyra chi" + - "inikakokalenjinkimbundukomi-permiacconcanikosraeàkpellekaratxai-balkarkr" + - "iocareliàkurukhshambalabafiakölschkúmikkutenaijudeocastellàlangipanjabi " + - "occidentallambalesguiàlígurlakotallombardmongocrioll francès de Louisian" + - "aloziluri septentrionalluba-lulualuisenyolundaluomizoluyiaxinès clàssicl" + - "azmadurèsmafamagahimaithilimakassarmandingamassaimabamordovià moksamanda" + - "rmendemerumauriciàgaèlic irlandès mitjàmakhuwa-mettometa’micmacminangkab" + - "aumanxúmanipurímohawkmorémari occidentalmundangllengües vàriescreekmiran" + - "dèsmarwarimyenemordovià erzamazanderanixinès min del sudnapolitànamabaix" + - " alemanynewariniasniueàbissiongiemboonnogainòrdic anticnovialn’Kosotho s" + - "eptentrionalnuernewari clàssicnyamwesinyankolenyoronzemaosageturc otomàp" + - "angasipahlavipampangapapiamentupalauàpicardpidgin de Nigèriaalemany penn" + - "silvaniàpersa anticalemany palatífenicipiemontèspònticponapeàprussiàprov" + - "ençal antick’iche’rajasthanirapanuirarotongàromanyèsromboromaníaromanèsr" + - "wosandaweiacutarameu samaritàsamburusasaksantalingambaysangusiciliàescoc" + - "èssasserèskurd meridionalsenecasenaselkupsonghai orientalirlandès antic" + - "taixelhitxanàrab txadiàsidamosami meridionalsami lulesami d’Inarisami sk" + - "oltsoninkesogdiàsrananserersahosukumasusúsumericomoriàsiríac clàssicsirí" + - "acsilesiàtemnetesoterenatètumtigretivtokelauèstsakhurklingoniàtlingittal" + - "ixamazictongatok pisintarokotsimshiàtat meridionaltumbukatuvaluàtasawaqt" + - "uviniàamazic del Marroc centraludmurtugaríticumbunduidioma desconegutvai" + - "vènetvepseflamenc occidentalvòticvunjowalserametowaraywashowarlpirixinès" + - " wucalmucmingreliàsogayaoyapeàyangbenyembacantonèszapotecasímbols Blissz" + - "elandèszenagaamazic estàndard marroquízunisense contingut lingüísticzaza" + - "àrab estàndard modernalemany austríacalt alemany suísanglès australiàan" + - "glès canadencanglès britànicanglès americàespanyol hispanoamericàespanyo" + - "l europeuespanyol de Mèxicfrancès canadencfrancès suísbaix saxóflamencpo" + - "rtuguès del Brasilportuguès de Portugalmoldauserbocroatsuahili del Congo" + - "xinès simplificatxinès tradicional" - -var caLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x000b, 0x0013, 0x001c, 0x0021, 0x0029, 0x0032, - 0x0037, 0x003f, 0x0044, 0x004a, 0x0050, 0x0057, 0x0060, 0x0067, - 0x006e, 0x0075, 0x007d, 0x0084, 0x008a, 0x0091, 0x0098, 0x009f, - 0x00a7, 0x00ab, 0x00af, 0x00b3, 0x00c5, 0x00cc, 0x00d5, 0x00db, - 0x00e2, 0x00e8, 0x00ef, 0x00f2, 0x00f6, 0x00fd, 0x0106, 0x010e, - 0x0116, 0x011a, 0x011f, 0x0122, 0x0128, 0x012e, 0x0135, 0x013d, - 0x014e, 0x0157, 0x0167, 0x016d, 0x0175, 0x017d, 0x0181, 0x0187, - 0x018d, 0x0192, 0x019b, 0x01a0, 0x01b1, 0x01ba, 0x01c0, 0x01c6, - // Entry 40 - 7F - 0x01d1, 0x01d9, 0x01e4, 0x01e8, 0x01f2, 0x01f9, 0x01fc, 0x0205, - 0x020c, 0x0215, 0x021d, 0x0225, 0x022d, 0x0232, 0x0238, 0x0240, - 0x0246, 0x0251, 0x0256, 0x025d, 0x0263, 0x0269, 0x0271, 0x0275, - 0x0279, 0x0280, 0x0288, 0x028e, 0x029b, 0x02a0, 0x02ab, 0x02b2, - 0x02b9, 0x02bf, 0x02cb, 0x02d0, 0x02d7, 0x02e2, 0x02e7, 0x02ef, - 0x02f8, 0x02fe, 0x0305, 0x030a, 0x0311, 0x0317, 0x031e, 0x0333, - 0x033b, 0x0341, 0x034c, 0x035a, 0x0368, 0x037a, 0x0380, 0x0386, - 0x038d, 0x0393, 0x0398, 0x039d, 0x03a3, 0x03aa, 0x03ae, 0x03b6, - // Entry 80 - BF - 0x03bc, 0x03c6, 0x03ce, 0x03da, 0x03df, 0x03e7, 0x03ea, 0x03f2, - 0x03fb, 0x03ff, 0x0404, 0x0416, 0x041b, 0x0424, 0x042b, 0x0432, - 0x0438, 0x043d, 0x0443, 0x044b, 0x0450, 0x0455, 0x0465, 0x046e, - 0x0472, 0x0479, 0x047f, 0x0485, 0x048b, 0x048e, 0x0496, 0x049d, - 0x04a5, 0x04ae, 0x04b2, 0x04b8, 0x04be, 0x04c6, 0x04cb, 0x04d5, - 0x04da, 0x04df, 0x04e4, 0x04ee, 0x04f6, 0x04fb, 0x0501, 0x0505, - 0x050d, 0x0513, 0x0519, 0x051f, 0x0523, 0x0528, 0x052d, 0x0534, - 0x053b, 0x053b, 0x0543, 0x0548, 0x054c, 0x0552, 0x0559, 0x055f, - // Entry C0 - FF - 0x056b, 0x057c, 0x0589, 0x058f, 0x0595, 0x059e, 0x05a4, 0x05ab, - 0x05ab, 0x05ab, 0x05b1, 0x05b1, 0x05bd, 0x05c1, 0x05dc, 0x05e4, - 0x05e4, 0x05ea, 0x05f1, 0x05f9, 0x0601, 0x0605, 0x060a, 0x060a, - 0x0611, 0x0615, 0x061a, 0x061a, 0x061e, 0x0623, 0x0629, 0x063b, - 0x0643, 0x0648, 0x064c, 0x064c, 0x064f, 0x0658, 0x0658, 0x0658, - 0x065c, 0x0662, 0x0666, 0x066c, 0x0672, 0x0677, 0x067b, 0x0680, - 0x0687, 0x068c, 0x0691, 0x0697, 0x069c, 0x069c, 0x06a3, 0x06a8, - 0x06af, 0x06b7, 0x06bc, 0x06c0, 0x06ce, 0x06d5, 0x06de, 0x06e6, - // Entry 100 - 13F - 0x06ec, 0x06f8, 0x06fd, 0x06fd, 0x070d, 0x072e, 0x0735, 0x073b, - 0x0742, 0x0747, 0x074f, 0x0754, 0x075a, 0x075f, 0x0764, 0x0769, - 0x0774, 0x0774, 0x077a, 0x078c, 0x0791, 0x0795, 0x079b, 0x079f, - 0x07a3, 0x07aa, 0x07b6, 0x07bc, 0x07c3, 0x07d1, 0x07d1, 0x07d7, - 0x07e0, 0x07e4, 0x07eb, 0x07eb, 0x07ee, 0x07fc, 0x080b, 0x0819, - 0x0819, 0x082d, 0x083c, 0x0844, 0x0846, 0x084d, 0x0857, 0x085b, - 0x0860, 0x0860, 0x0865, 0x086f, 0x0875, 0x0887, 0x0898, 0x08a6, - 0x08ab, 0x08b4, 0x08ba, 0x08bf, 0x08c9, 0x08d6, 0x08db, 0x08db, - // Entry 140 - 17F - 0x08e0, 0x08ea, 0x08ef, 0x08fb, 0x0902, 0x090f, 0x091a, 0x0920, - 0x0925, 0x092f, 0x093b, 0x093f, 0x0943, 0x0949, 0x0950, 0x0957, - 0x0957, 0x0970, 0x0976, 0x097c, 0x0983, 0x098d, 0x0997, 0x0997, - 0x09a1, 0x09a9, 0x09af, 0x09b2, 0x09b7, 0x09bb, 0x09c3, 0x09ca, - 0x09ce, 0x09d5, 0x09e6, 0x09ed, 0x09f1, 0x09f8, 0x09fd, 0x0a06, - 0x0a12, 0x0a12, 0x0a12, 0x0a16, 0x0a1e, 0x0a26, 0x0a32, 0x0a39, - 0x0a41, 0x0a47, 0x0a56, 0x0a5a, 0x0a5a, 0x0a62, 0x0a68, 0x0a70, - 0x0a75, 0x0a7c, 0x0a82, 0x0a89, 0x0a97, 0x0a9c, 0x0aae, 0x0ab3, - // Entry 180 - 1BF - 0x0abb, 0x0abb, 0x0ac1, 0x0ac1, 0x0ac7, 0x0acf, 0x0ad4, 0x0af0, - 0x0af4, 0x0b06, 0x0b06, 0x0b10, 0x0b18, 0x0b1d, 0x0b20, 0x0b24, - 0x0b29, 0x0b38, 0x0b3b, 0x0b43, 0x0b47, 0x0b4d, 0x0b55, 0x0b5d, - 0x0b65, 0x0b6b, 0x0b6f, 0x0b7e, 0x0b84, 0x0b89, 0x0b8d, 0x0b96, - 0x0bae, 0x0bbb, 0x0bc2, 0x0bc8, 0x0bd3, 0x0bd9, 0x0be2, 0x0be8, - 0x0bed, 0x0bfc, 0x0c03, 0x0c14, 0x0c19, 0x0c22, 0x0c29, 0x0c29, - 0x0c2e, 0x0c3c, 0x0c47, 0x0c59, 0x0c62, 0x0c66, 0x0c72, 0x0c78, - 0x0c7c, 0x0c82, 0x0c82, 0x0c88, 0x0c91, 0x0c96, 0x0ca3, 0x0ca9, - // Entry 1C0 - 1FF - 0x0caf, 0x0cc2, 0x0cc6, 0x0cd5, 0x0cdd, 0x0ce5, 0x0cea, 0x0cef, - 0x0cf4, 0x0cff, 0x0d06, 0x0d0d, 0x0d15, 0x0d1f, 0x0d26, 0x0d2c, - 0x0d3e, 0x0d53, 0x0d53, 0x0d5e, 0x0d6d, 0x0d73, 0x0d7d, 0x0d84, - 0x0d8c, 0x0d94, 0x0da4, 0x0daf, 0x0daf, 0x0db9, 0x0dc0, 0x0dca, - 0x0dd3, 0x0dd3, 0x0dd8, 0x0ddf, 0x0ddf, 0x0ddf, 0x0ddf, 0x0de8, - 0x0deb, 0x0df2, 0x0df7, 0x0e07, 0x0e0e, 0x0e13, 0x0e1a, 0x0e1a, - 0x0e21, 0x0e26, 0x0e2e, 0x0e36, 0x0e3f, 0x0e4e, 0x0e54, 0x0e58, - 0x0e58, 0x0e5e, 0x0e6e, 0x0e7d, 0x0e7d, 0x0e86, 0x0e89, 0x0e96, - // Entry 200 - 23F - 0x0e9c, 0x0e9c, 0x0e9c, 0x0eab, 0x0eb4, 0x0ec2, 0x0ecc, 0x0ed3, - 0x0eda, 0x0ee0, 0x0ee5, 0x0ee9, 0x0ee9, 0x0eef, 0x0ef4, 0x0efa, - 0x0f02, 0x0f12, 0x0f19, 0x0f21, 0x0f21, 0x0f26, 0x0f2a, 0x0f30, - 0x0f36, 0x0f3b, 0x0f3e, 0x0f48, 0x0f4f, 0x0f59, 0x0f60, 0x0f65, - 0x0f6b, 0x0f70, 0x0f79, 0x0f79, 0x0f7f, 0x0f7f, 0x0f88, 0x0f96, - 0x0f9d, 0x0fa5, 0x0fac, 0x0fb4, 0x0fcd, 0x0fd3, 0x0fdc, 0x0fe3, - 0x0ff4, 0x0ff7, 0x0ffd, 0x1002, 0x1014, 0x1014, 0x101a, 0x101a, - 0x101f, 0x1025, 0x102a, 0x102f, 0x1034, 0x103c, 0x1045, 0x104b, - // Entry 240 - 27F - 0x1055, 0x1059, 0x105c, 0x1062, 0x1069, 0x106e, 0x106e, 0x1077, - 0x107f, 0x108d, 0x1096, 0x109c, 0x10b7, 0x10bb, 0x10d7, 0x10db, - 0x10f2, 0x10f2, 0x1103, 0x1114, 0x1126, 0x1136, 0x1147, 0x1157, - 0x116f, 0x117f, 0x1191, 0x1191, 0x11a2, 0x11b0, 0x11ba, 0x11c1, - 0x11d6, 0x11ec, 0x11f2, 0x11fc, 0x120d, 0x121f, 0x1231, -} // Size: 1254 bytes - -const csLangStr string = "" + // Size: 7417 bytes - "afarštinaabcházštinaavestánštinaafrikánštinaakanštinaamharštinaaragonšti" + - "naarabštinaásámštinaavarštinaajmarštinaázerbájdžánštinabaškirštinaběloru" + - "štinabulharštinabislamštinabambarštinabengálštinatibetštinabretonštinab" + - "osenštinakatalánštinačečenštinačamorokorsičtinakríjštinačeštinastaroslov" + - "ěnštinačuvaštinavelštinadánštinaněmčinamaledivštinadzongkäeweštinařečti" + - "naangličtinaesperantošpanělštinaestonštinabaskičtinaperštinafulbštinafin" + - "štinafidžijštinafaerštinafrancouzštinafríština (západní)irštinaskotská " + - "gaelštinagalicijštinaguaranštinagudžarátštinamanštinahauštinahebrejština" + - "hindštinahiri motuchorvatštinahaitštinamaďarštinaarménštinahererštinaint" + - "erlinguaindonéštinainterlingueigboštinaiština (sečuánská)inupiakštinaido" + - "islandštinaitalštinainuktitutštinajaponštinajavánštinagruzínštinakonžšti" + - "nakikujštinakuaňamštinakazaštinagrónštinakhmérštinakannadštinakorejština" + - "kanurikašmírštinakurdštinakomijštinakornštinakyrgyzštinalatinalucemburšt" + - "inagandštinalimburštinalingalštinalaoštinalitevštinalubu-katanžštinaloty" + - "štinamalgaštinamaršálštinamaorštinamakedonštinamalajálamštinamongolštin" + - "amaráthštinamalajštinamaltštinabarmštinanaurštinandebele (Zimbabwe)nepál" + - "štinandondštinanizozemštinanorština (nynorsk)norština (bokmål)ndebele (" + - "Jižní Afrika)navažštinaňandžštinaokcitánštinaodžibvejštinaoromštinaurijš" + - "tinaosetštinapaňdžábštinapálípolštinapaštštinaportugalštinakečuánštinaré" + - "torománštinakirundštinarumunštinaruštinakiňarwandštinasanskrtsardštinasi" + - "ndhštinasámština (severní)sangštinasinhálštinaslovenštinaslovinštinasamo" + - "jštinašonštinasomálštinaalbánštinasrbštinasiswatštinasotština (jižní)sun" + - "dštinašvédštinasvahilštinatamilštinatelugštinatádžičtinathajštinatigrini" + - "jštinaturkmenštinasetswanštinatongánštinaturečtinatsongatatarštinatahitš" + - "tinaujgurštinaukrajinštinaurdštinauzbečtinavendavietnamštinavolapükvalon" + - "štinawolofštinaxhoštinajidišjorubštinačuangštinačínštinazuluštinaacehšt" + - "inaakolštinaadangmeadygejštinaarabština (tuniská)afrihiliaghemainštinaak" + - "kadštinaalabamštinaaleutštinaalbánština (Gheg)altajština (jižní)staroang" + - "ličtinaangikaaramejštinamapudungunštinaaraonštinaarapažštinaarabština (a" + - "lžírská)arawacké jazykyarabština (marocká)arabština (egyptská)asuznaková" + - " řeč (americká)asturštinakotavaawadhštinabalúčštinabalijštinabavorštinab" + - "asabamunbatak tobaghomalabedžabembštinabatavštinabenabafutbadagštinabalú" + - "čština (západní)bhódžpurštinabikolštinabinibandžarštinakomsiksikabišnup" + - "rijskomanipurštinabachtijárštinabradžštinabrahujštinabodoštinaakooseburj" + - "atštinabugištinabulublinštinamedumbacaddokaribštinakajugštinaatsamcebuán" + - "štinakigačibčačagatajštinačukštinamarijštinačinuk pidžinčoktštinačipeva" + - "jštinačerokézštinačejenštinakurdština (sorání)koptštinakapiznonštinature" + - "čtina (krymská)kreolština (seychelská)kašubštinadakotštinadargštinatait" + - "adelawarštinaslejvština (athabaský jazyk)dogribdinkštinazarmštinadogaršt" + - "inadolnolužická srbštinakadazandusunštinadualštinaholandština (středověk" + - "á)jola-fonyidjuladazagaembuefikštinaemilijštinaegyptština staráekajukel" + - "amitštinaangličtina (středověká)jupikština (středoaljašská)ewondoextrema" + - "durštinafangfilipínštinafinština (tornedalská)fonštinafrancouzština (caj" + - "unská)francouzština (středověká)francouzština (stará)franko-provensálšti" + - "nafríština (severní)fríština (východní)furlanštinagaštinagagauzštinačínš" + - "tina (dialekty Gan)gayogbajadaríjština (zoroastrijská)geezkiribatštinagi" + - "lačtinahornoněmčina (středověká)hornoněmčina (stará)konkánština (Goa)gón" + - "dštinagorontalogótštinagrebostarořečtinaněmčina (Švýcarsko)wayúuštinafra" + - "fragusiigwichʼinhaidštinačínština (dialekty Hakka)havajštinahindština (F" + - "idži)hiligajnonštinachetitštinahmongštinahornolužická srbštinačínština (" + - "dialekty Xiang)hupaibanštinaibibioilokánštinainguštinaingrijštinajamajsk" + - "á kreolštinalojbanngombamašamejudeoperštinajudeoarabštinajutštinakaraka" + - "lpačtinakabylštinakačijštinajjukambštinakawikabardinštinakanembutyapmako" + - "ndekapverdštinakenyangkorokaingangkhásíchotánštinakoyra chiinichovarštin" + - "azazakštinakakokalendžinkimbundštinakomi-permjačtinakonkánštinakosrajšti" + - "nakpellekaračajevo-balkarštinakriokinaraj-akarelštinakuruchštinašambalab" + - "afiakolínštinakumyčtinakutenajštinaladinštinalangilahndštinalambštinalez" + - "ginštinalingua franca novaligurštinalivonštinalakotštinalombardštinamong" + - "štinakreolština (Louisiana)lozštinalúrština (severní)latgalštinaluba-lu" + - "luaštinaluiseňolundštinaluoštinamizoštinaluhjačínština (klasická)lazštin" + - "amadurštinamafamagahijštinamaithilištinamakasarštinamandingštinamasajšti" + - "namabamokšanštinamandarmendemerumauricijská kreolštinairština (středověk" + - "á)makhuwa-meettometa’micmacminangkabaumandžuštinamanipurštinamohawkštin" + - "amosimarijština (západní)mundangvíce jazykůkríkštinamirandštinamárváršti" + - "namentavajštinamyeneerzjanštinamázandaránštinačínština (dialekty Minnan)" + - "neapolštinanamaštinadolnoněmčinanévárštinaniasniueštinaao (jazyky Nágála" + - "ndu)kwasiongiemboonnogajštinanorština historickánovialn’kosotština (seve" + - "rní)nuerštinanewarština (klasická)ňamwežštinaňankolštinaňorštinanzimaosa" + - "geturečtina (osmanská)pangasinanštinapahlavštinapapangaupapiamentopalauš" + - "tinapicardštinanigerijský pidžinněmčina (pensylvánská)němčina (plautdiet" + - "sch)staroperštinafalčtinaféničtinapiemonštinapontštinapohnpeištinaprušti" + - "naprovensálštinakičékečuánština (chimborazo)rádžastánštinarapanujštinara" + - "rotongánštinaromaňolštinarífštinaromboromštinarotumanštinarusínštinarovi" + - "anštinaarumunštinarwasandawštinajakutštinasamarštinasamburusasakštinasan" + - "tálštinasaurášterštinangambaysangoštinasicilštinaskotštinasassarštinakur" + - "dština (jižní)senecasenaserištinaselkupštinakoyraboro senniirština (star" + - "á)žemaitštinatašelhitšanštinaarabština (čadská)sidamoněmčina (slezská)s" + - "elajarštinasámština (jižní)sámština (lulejská)sámština (inarijská)sámšti" + - "na (skoltská)sonikštinasogdštinasranan tongosererštinasahofríština (sate" + - "rlandská)sukumasususumerštinakomorštinasyrština (klasická)syrštinaslezšt" + - "inatuluštinatemnetesoterenotetumštinatigrejštinativštinatokelauštinacach" + - "urštinaklingonštinatlingittalyštinatamašektonžština (nyasa)tok pisinturo" + - "jštinatarokotsakonštinatsimšijské jazykytatštinatumbukštinatuvalštinatas" + - "awaqtuvinštinatamazight (střední Maroko)udmurtštinaugaritštinaumbundunez" + - "námý jazykvaibenátštinavepštinavlámština (západní)němčina (mohansko-fran" + - "ské dialekty)votštinavõruštinavunjoněmčina (walser)wolajtštinawarajština" + - "waštinawarlpiričínština (dialekty Wu)kalmyčtinamingrelštinasogštinajaošt" + - "inajapštinajangbenštinayembanheengatukantonštinazapotéčtinabliss systémz" + - "élandštinazenagatamazight (standardní marocký)zunijštinažádný jazykový " + - "obsahzazaarabština (moderní standardní)němčina standardní (Švýcarsko)ang" + - "ličtina (Velká Británie)angličtina (USA)španělština (Evropa)dolnosaština" + - "vlámštinaportugalština (Evropa)moldavštinasrbochorvatštinasvahilština (K" + - "ongo)čínština (zjednodušená)" - -var csLangIdx = []uint16{ // 614 elements - // Entry 0 - 3F - 0x0000, 0x000a, 0x0017, 0x0025, 0x0033, 0x003d, 0x0048, 0x0054, - 0x005e, 0x006a, 0x0074, 0x007f, 0x0094, 0x00a1, 0x00ae, 0x00ba, - 0x00c6, 0x00d2, 0x00df, 0x00ea, 0x00f6, 0x0101, 0x010f, 0x011c, - 0x0123, 0x012e, 0x0139, 0x0142, 0x0154, 0x015f, 0x0168, 0x0172, - 0x017b, 0x0188, 0x0190, 0x0199, 0x01a2, 0x01ad, 0x01b6, 0x01c4, - 0x01cf, 0x01da, 0x01e3, 0x01ed, 0x01f6, 0x0203, 0x020d, 0x021b, - 0x0231, 0x0239, 0x024c, 0x0259, 0x0265, 0x0275, 0x027e, 0x0287, - 0x0293, 0x029d, 0x02a6, 0x02b3, 0x02bd, 0x02c9, 0x02d5, 0x02e0, - // Entry 40 - 7F - 0x02eb, 0x02f8, 0x0303, 0x030d, 0x0323, 0x0330, 0x0333, 0x033f, - 0x0349, 0x0358, 0x0363, 0x036f, 0x037c, 0x0387, 0x0392, 0x039f, - 0x03a9, 0x03b4, 0x03c0, 0x03cc, 0x03d7, 0x03dd, 0x03eb, 0x03f5, - 0x0400, 0x040a, 0x0416, 0x041c, 0x042a, 0x0434, 0x0440, 0x044c, - 0x0455, 0x0460, 0x0472, 0x047c, 0x0487, 0x0495, 0x049f, 0x04ac, - 0x04bc, 0x04c8, 0x04d5, 0x04e0, 0x04ea, 0x04f4, 0x04fe, 0x0510, - 0x051c, 0x0527, 0x0534, 0x0547, 0x055a, 0x0572, 0x057e, 0x058b, - 0x0599, 0x05a8, 0x05b2, 0x05bc, 0x05c6, 0x05d6, 0x05dc, 0x05e5, - // Entry 80 - BF - 0x05f0, 0x05fe, 0x060c, 0x061d, 0x0629, 0x0634, 0x063c, 0x064c, - 0x0653, 0x065d, 0x0668, 0x067d, 0x0687, 0x0694, 0x06a0, 0x06ac, - 0x06b7, 0x06c1, 0x06cd, 0x06d9, 0x06e2, 0x06ee, 0x0701, 0x070b, - 0x0717, 0x0723, 0x072e, 0x0739, 0x0746, 0x0750, 0x075e, 0x076b, - 0x0778, 0x0785, 0x078f, 0x0795, 0x07a0, 0x07ab, 0x07b6, 0x07c3, - 0x07cc, 0x07d6, 0x07db, 0x07e8, 0x07f0, 0x07fb, 0x0806, 0x080f, - 0x0815, 0x0820, 0x082c, 0x0837, 0x0841, 0x084b, 0x0855, 0x085c, - 0x0868, 0x087d, 0x0885, 0x088a, 0x0893, 0x089e, 0x08aa, 0x08b5, - // Entry C0 - FF - 0x08c8, 0x08dd, 0x08ed, 0x08f3, 0x08ff, 0x090f, 0x091a, 0x0927, - 0x093f, 0x093f, 0x094f, 0x0964, 0x097a, 0x097d, 0x0997, 0x09a2, - 0x09a8, 0x09b3, 0x09c0, 0x09cb, 0x09d6, 0x09da, 0x09df, 0x09e9, - 0x09f0, 0x09f6, 0x0a00, 0x0a0b, 0x0a0f, 0x0a14, 0x0a1f, 0x0a38, - 0x0a48, 0x0a53, 0x0a57, 0x0a65, 0x0a68, 0x0a6f, 0x0a89, 0x0a99, - 0x0aa5, 0x0ab1, 0x0abb, 0x0ac1, 0x0acd, 0x0ad7, 0x0adb, 0x0ae5, - 0x0aec, 0x0af1, 0x0afc, 0x0b07, 0x0b0c, 0x0b0c, 0x0b19, 0x0b1d, - 0x0b24, 0x0b32, 0x0b3c, 0x0b47, 0x0b55, 0x0b60, 0x0b6e, 0x0b7d, - // Entry 100 - 13F - 0x0b89, 0x0b9e, 0x0ba8, 0x0bb6, 0x0bcb, 0x0be4, 0x0bf0, 0x0bfb, - 0x0c05, 0x0c0a, 0x0c17, 0x0c35, 0x0c3b, 0x0c45, 0x0c4f, 0x0c5a, - 0x0c72, 0x0c84, 0x0c8e, 0x0caa, 0x0cb4, 0x0cb9, 0x0cbf, 0x0cc3, - 0x0ccd, 0x0cd9, 0x0ceb, 0x0cf1, 0x0cfd, 0x0d18, 0x0d37, 0x0d3d, - 0x0d4d, 0x0d51, 0x0d5f, 0x0d77, 0x0d80, 0x0d9a, 0x0db8, 0x0dcf, - 0x0de6, 0x0dfb, 0x0e12, 0x0e1e, 0x0e26, 0x0e32, 0x0e4c, 0x0e50, - 0x0e55, 0x0e72, 0x0e76, 0x0e83, 0x0e8d, 0x0eab, 0x0ec2, 0x0ed5, - 0x0ee0, 0x0ee9, 0x0ef3, 0x0ef8, 0x0f06, 0x0f1d, 0x0f29, 0x0f2f, - // Entry 140 - 17F - 0x0f34, 0x0f3d, 0x0f47, 0x0f63, 0x0f6e, 0x0f81, 0x0f91, 0x0f9d, - 0x0fa8, 0x0fc0, 0x0fdc, 0x0fe0, 0x0fea, 0x0ff0, 0x0ffd, 0x1007, - 0x1013, 0x1028, 0x102e, 0x1034, 0x103b, 0x1049, 0x1058, 0x1061, - 0x1070, 0x107b, 0x1087, 0x108a, 0x1094, 0x1098, 0x10a6, 0x10ad, - 0x10b1, 0x10b8, 0x10c5, 0x10cc, 0x10d0, 0x10d8, 0x10df, 0x10ec, - 0x10f8, 0x1104, 0x110f, 0x1113, 0x111d, 0x112a, 0x113b, 0x1148, - 0x1154, 0x115a, 0x1172, 0x1176, 0x117f, 0x118a, 0x1196, 0x119e, - 0x11a3, 0x11af, 0x11b9, 0x11c6, 0x11d1, 0x11d6, 0x11e1, 0x11eb, - // Entry 180 - 1BF - 0x11f7, 0x1209, 0x1214, 0x121f, 0x122a, 0x1237, 0x1241, 0x1258, - 0x1261, 0x1276, 0x1282, 0x1292, 0x129a, 0x12a4, 0x12ad, 0x12b7, - 0x12bc, 0x12d3, 0x12dc, 0x12e7, 0x12eb, 0x12f8, 0x1306, 0x1313, - 0x1320, 0x132b, 0x132f, 0x133c, 0x1342, 0x1347, 0x134b, 0x1363, - 0x137b, 0x1389, 0x1390, 0x1396, 0x13a1, 0x13ae, 0x13bb, 0x13c7, - 0x13cb, 0x13e2, 0x13e9, 0x13f6, 0x1401, 0x140d, 0x141b, 0x1429, - 0x142e, 0x143a, 0x144c, 0x1469, 0x1475, 0x147f, 0x148d, 0x149a, - 0x149e, 0x14a8, 0x14bf, 0x14c5, 0x14ce, 0x14d9, 0x14ee, 0x14f4, - // Entry 1C0 - 1FF - 0x14fa, 0x150e, 0x1518, 0x152f, 0x153d, 0x154a, 0x1554, 0x1559, - 0x155e, 0x1574, 0x1584, 0x1590, 0x1598, 0x15a2, 0x15ad, 0x15b9, - 0x15cc, 0x15e6, 0x15fe, 0x160c, 0x1615, 0x1620, 0x162c, 0x1636, - 0x1643, 0x164c, 0x165c, 0x1662, 0x167d, 0x168f, 0x169c, 0x16ad, - 0x16bb, 0x16c5, 0x16ca, 0x16d3, 0x16e0, 0x16ec, 0x16f8, 0x1704, - 0x1707, 0x1713, 0x171e, 0x1729, 0x1730, 0x173b, 0x1748, 0x1759, - 0x1760, 0x176b, 0x1776, 0x1780, 0x178c, 0x17a0, 0x17a6, 0x17aa, - 0x17b4, 0x17c0, 0x17cf, 0x17e0, 0x17ed, 0x17f6, 0x1800, 0x1815, - // Entry 200 - 23F - 0x181b, 0x182f, 0x183c, 0x1850, 0x1866, 0x187d, 0x1893, 0x189e, - 0x18a8, 0x18b4, 0x18bf, 0x18c3, 0x18dd, 0x18e3, 0x18e7, 0x18f2, - 0x18fd, 0x1912, 0x191b, 0x1925, 0x192f, 0x1934, 0x1938, 0x193e, - 0x1949, 0x1955, 0x195e, 0x196b, 0x1977, 0x1984, 0x198b, 0x1995, - 0x199d, 0x19b0, 0x19b9, 0x19c4, 0x19ca, 0x19d6, 0x19e9, 0x19f2, - 0x19fe, 0x1a09, 0x1a10, 0x1a1b, 0x1a37, 0x1a43, 0x1a4f, 0x1a56, - 0x1a65, 0x1a68, 0x1a74, 0x1a7d, 0x1a94, 0x1aba, 0x1ac3, 0x1ace, - 0x1ad3, 0x1ae5, 0x1af1, 0x1afc, 0x1b04, 0x1b0c, 0x1b25, 0x1b30, - // Entry 240 - 27F - 0x1b3d, 0x1b46, 0x1b4f, 0x1b58, 0x1b65, 0x1b6a, 0x1b73, 0x1b7f, - 0x1b8c, 0x1b99, 0x1ba6, 0x1bac, 0x1bcc, 0x1bd7, 0x1bef, 0x1bf3, - 0x1c14, 0x1c14, 0x1c14, 0x1c37, 0x1c37, 0x1c37, 0x1c55, 0x1c66, - 0x1c66, 0x1c7d, 0x1c7d, 0x1c7d, 0x1c7d, 0x1c7d, 0x1c8a, 0x1c95, - 0x1c95, 0x1cac, 0x1cb8, 0x1cc9, 0x1cdd, 0x1cf9, -} // Size: 1252 bytes - -const daLangStr string = "" + // Size: 4177 bytes - "afarabkhasiskavestanafrikaansakanamhariskaragonesiskarabiskassamesiskava" + - "riskaymaraaserbajdsjanskbashkirhviderussiskbulgarskbislamabambarabengali" + - "tibetanskbretonskbosniskcatalansktjetjenskchamorrokorsikanskcreetjekkisk" + - "kirkeslaviskchuvashwalisiskdansktyskdivehidzongkhaewegræskengelskesperan" + - "tospanskestiskbaskiskpersiskfulahfinskfijianskfærøskfranskfrisiskirsksko" + - "tsk gæliskgaliciskguaranigujaratimanxhausahebraiskhindihirimotukroatiskh" + - "aitiskungarskarmenskhererointerlinguaindonesiskinterlingueigbosichuan yi" + - "inupiaqidoislandskitalienskinuktitutjapanskjavanesiskgeorgiskkongokikuyu" + - "kuanyamakasakhiskgrønlandskkhmerkannadakoreanskkanurikashmirikurdiskkomi" + - "corniskkirgisisklatinluxembourgskgandalimburgsklingalalaolitauiskluba-Ka" + - "tangalettiskmalagassiskmarshallesemaorimakedonskmalayalammongolskmarathi" + - "skmalajiskmaltesiskburmesisknaurunordndebelenepalesiskndongahollandsknyn" + - "orsknorsk bokmålsydndebelenavajonyanjaoccitanskojibwaoromooriyaossetiskp" + - "unjabiskpalipolskpashtoportugisiskquechuarætoromanskrundirumænskrussiskk" + - "inyarwandasanskritsardinsksindhinordsamisksangosingalesiskslovakiskslove" + - "nsksamoanskshonasomalialbanskserbiskswatisydsothosundanesisksvenskswahil" + - "itamiltelugutadsjikiskthaitigrinyaturkmensktswanatongansktyrkisktsongata" + - "tarisktahitianskuyguriskukrainskurduusbekiskvendavietnamesiskvolapykvall" + - "onskwolofisiXhosajiddischyorubazhuangkinesiskzuluachinesiskacoliadangmea" + - "dygheafrihiliaghemainuakkadiskaleutisksydaltaiskoldengelskangikaaramæisk" + - "mapudungunarapahoarawakasuasturiskawadhibaluchibalinesiskbasaabamunghoma" + - "labejabembabenabafutvestbaluchibhojpuribikolbinikomsiksikabrajbodobakoss" + - "iburiatiskbuginesiskbulublinmedumbacaddocaribiskcayugaatsamcebuanochigac" + - "hibchachagataichuukesemarichinookchoctawchipewyancherokeecheyennesoranik" + - "optiskkrim-tyrkiskseselwa (kreol-fransk)kasjubiskdakotadargwataitadelawa" + - "reathapaskiskdogribdinkazarmadogrinedersorbiskdualamiddelhollandskjola-f" + - "onyidyuladazagakiembuefikoldegyptiskekajukelamitiskmiddelengelskewondofa" + - "ngfilippinskfoncajunfranskmiddelfranskoldfransknordfrisiskøstfrisiskfriu" + - "liangagagauziskgan-kinesiskgayogbayageezgilbertesiskmiddelhøjtyskoldhøjt" + - "yskgondigorontalogotiskgrebooldgræskschweizertyskgusiigwichinhaidahakka-" + - "kinesiskhawaiianskhiligaynonhittitiskhmongøvresorbiskxiang-kinesiskhupai" + - "banibibioilokoingushlojbanngombamachamejødisk-persiskjødisk-arabiskkarak" + - "alpakiskkabyliskkachinjjukambakawikabardiankanembutyapmakondekapverdiskk" + - "orokhasikhotanesiskkoyra-chiinikakokalenjinkimbundukomi-permjakiskkonkan" + - "ikosraeankpellekaratjai-balkarkarelskkurukhshambalabafiakölschkymykkuten" + - "ajladinolangilahndalambalezghianlakotamongoLouisiana-kreolsklozinordluri" + - "luba-Lulualuisenolundaluolushailuyanamaduresemafamagahimaithilimakasarma" + - "ndingomasaimabamokshamandarmendemerumorisyenmiddelirskmakhuwa-meettometa" + - "micmacminangkabaumanchumanipurimohawkmossimundangflere sprogcreekmirande" + - "siskmarwarimyeneerzyamazeniskmin-kinesisknapolitansknamanedertysknewarin" + - "iasniueanskkwasiongiemboonnogaioldislandskn-konordsothonuerklassisk newa" + - "risknyamwezinyankolenyoro-sprognzimaosageosmannisk tyrkiskpangasinanpahl" + - "avipampangapapiamentopalauansknigeriansk pidginoldpersiskfønikiskponapep" + - "reussiskoldprovencalskquichérajasthanirapanuirarotongaromboromaniarumæns" + - "krwasandaweyakutsamaritansk aramæisksamburusasaksantalingambaysangusicil" + - "ianskskotsksydkurdisksenecasenaselkupiskkoyraboro sennioldirsktachelhits" + - "hantchadisk arabisksidamosydsamisklulesamiskenaresamiskskoltesamisksonin" + - "kesogdiansksranan tongoserersahosukumasususumeriskshimaoreklassisk syris" + - "ksyrisktemnetesoterenotetumtigretivitokelauklingontlingittamasheknyasa t" + - "ongansktok pisintarokotsimshisktumbukatuvaluansktasawaqtuviniancentralma" + - "rokkansk tamazightudmurtugaristiskumbunduukendt sprogvaivotiskvunjowalse" + - "rtyskwalamowaraywashowalbiriwu-kinesiskkalmyksogayaoyapeseyangbenyembaka" + - "ntonesiskzapotecblissymbolerzenagatamazightzuniintet sprogligt indholdza" + - "zamoderne standardarabiskøstrigsk tyskschweizerhøjtyskaustralsk engelskc" + - "anadisk engelskbritisk engelskamerikansk engelsklatinamerikansk spanskeu" + - "ropæisk spanskmexicansk spanskcanadisk franskschweizisk franskflamskbras" + - "iliansk portugisiskeuropæisk portugisiskmoldoviskserbokroatiskcongolesis" + - "k swahiliforenklet kinesisktraditionelt kinesisk" - -var daLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0029, 0x0034, - 0x003b, 0x0045, 0x004c, 0x0052, 0x0060, 0x0067, 0x0073, 0x007b, - 0x0082, 0x0089, 0x0090, 0x0099, 0x00a1, 0x00a8, 0x00b1, 0x00ba, - 0x00c2, 0x00cc, 0x00d0, 0x00d8, 0x00e4, 0x00eb, 0x00f3, 0x00f8, - 0x00fc, 0x0102, 0x010a, 0x010d, 0x0113, 0x011a, 0x0123, 0x0129, - 0x012f, 0x0136, 0x013d, 0x0142, 0x0147, 0x014f, 0x0157, 0x015d, - 0x0164, 0x0168, 0x0176, 0x017e, 0x0185, 0x018d, 0x0191, 0x0196, - 0x019e, 0x01a3, 0x01ab, 0x01b3, 0x01ba, 0x01c1, 0x01c8, 0x01ce, - // Entry 40 - 7F - 0x01d9, 0x01e3, 0x01ee, 0x01f2, 0x01fc, 0x0203, 0x0206, 0x020e, - 0x0217, 0x0220, 0x0227, 0x0231, 0x0239, 0x023e, 0x0244, 0x024c, - 0x0255, 0x0260, 0x0265, 0x026c, 0x0274, 0x027a, 0x0282, 0x0289, - 0x028d, 0x0294, 0x029d, 0x02a2, 0x02ae, 0x02b3, 0x02bc, 0x02c3, - 0x02c6, 0x02ce, 0x02da, 0x02e1, 0x02ec, 0x02f7, 0x02fc, 0x0305, - 0x030e, 0x0316, 0x031f, 0x0327, 0x0330, 0x0339, 0x033e, 0x0349, - 0x0353, 0x0359, 0x0362, 0x0369, 0x0376, 0x0380, 0x0386, 0x038c, - 0x0395, 0x039b, 0x03a0, 0x03a5, 0x03ad, 0x03b6, 0x03ba, 0x03bf, - // Entry 80 - BF - 0x03c5, 0x03d0, 0x03d7, 0x03e3, 0x03e8, 0x03f0, 0x03f7, 0x0402, - 0x040a, 0x0412, 0x0418, 0x0422, 0x0427, 0x0432, 0x043b, 0x0443, - 0x044b, 0x0450, 0x0456, 0x045d, 0x0464, 0x0469, 0x0471, 0x047c, - 0x0482, 0x0489, 0x048e, 0x0494, 0x049e, 0x04a2, 0x04aa, 0x04b3, - 0x04b9, 0x04c1, 0x04c8, 0x04ce, 0x04d6, 0x04e0, 0x04e8, 0x04f0, - 0x04f4, 0x04fc, 0x0501, 0x050d, 0x0514, 0x051c, 0x0521, 0x0529, - 0x0531, 0x0537, 0x053d, 0x0545, 0x0549, 0x0553, 0x0558, 0x055f, - 0x0565, 0x0565, 0x056d, 0x0572, 0x0576, 0x057e, 0x057e, 0x0586, - // Entry C0 - FF - 0x0586, 0x0590, 0x059a, 0x05a0, 0x05a9, 0x05b3, 0x05b3, 0x05ba, - 0x05ba, 0x05ba, 0x05c0, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05cb, - 0x05cb, 0x05d1, 0x05d8, 0x05e2, 0x05e2, 0x05e7, 0x05ec, 0x05ec, - 0x05f3, 0x05f7, 0x05fc, 0x05fc, 0x0600, 0x0605, 0x0605, 0x0610, - 0x0618, 0x061d, 0x0621, 0x0621, 0x0624, 0x062b, 0x062b, 0x062b, - 0x062f, 0x062f, 0x0633, 0x063a, 0x0643, 0x064d, 0x0651, 0x0655, - 0x065c, 0x0661, 0x0669, 0x066f, 0x0674, 0x0674, 0x067b, 0x0680, - 0x0687, 0x068f, 0x0697, 0x069b, 0x06a2, 0x06a9, 0x06b2, 0x06ba, - // Entry 100 - 13F - 0x06c2, 0x06c8, 0x06cf, 0x06cf, 0x06db, 0x06f1, 0x06fa, 0x0700, - 0x0706, 0x070b, 0x0713, 0x071e, 0x0724, 0x0729, 0x072e, 0x0733, - 0x073f, 0x073f, 0x0744, 0x0753, 0x075d, 0x0762, 0x0768, 0x076e, - 0x0772, 0x0772, 0x077d, 0x0783, 0x078c, 0x0799, 0x0799, 0x079f, - 0x079f, 0x07a3, 0x07ad, 0x07ad, 0x07b0, 0x07bb, 0x07c7, 0x07d0, - 0x07d0, 0x07db, 0x07e6, 0x07ee, 0x07f0, 0x07f9, 0x0805, 0x0809, - 0x080e, 0x080e, 0x0812, 0x081e, 0x081e, 0x082c, 0x0837, 0x0837, - 0x083c, 0x0845, 0x084b, 0x0850, 0x0859, 0x0866, 0x0866, 0x0866, - // Entry 140 - 17F - 0x086b, 0x0872, 0x0877, 0x0885, 0x088f, 0x088f, 0x0899, 0x08a2, - 0x08a7, 0x08b3, 0x08c1, 0x08c5, 0x08c9, 0x08cf, 0x08d4, 0x08da, - 0x08da, 0x08da, 0x08e0, 0x08e6, 0x08ed, 0x08fc, 0x090b, 0x090b, - 0x0918, 0x0920, 0x0926, 0x0929, 0x092e, 0x0932, 0x093b, 0x0942, - 0x0946, 0x094d, 0x0957, 0x0957, 0x095b, 0x095b, 0x0960, 0x096b, - 0x0977, 0x0977, 0x0977, 0x097b, 0x0983, 0x098b, 0x099a, 0x09a1, - 0x09a9, 0x09af, 0x09be, 0x09be, 0x09be, 0x09c5, 0x09cb, 0x09d3, - 0x09d8, 0x09df, 0x09e4, 0x09eb, 0x09f1, 0x09f6, 0x09fc, 0x0a01, - // Entry 180 - 1BF - 0x0a09, 0x0a09, 0x0a09, 0x0a09, 0x0a0f, 0x0a0f, 0x0a14, 0x0a25, - 0x0a29, 0x0a31, 0x0a31, 0x0a3b, 0x0a42, 0x0a47, 0x0a4a, 0x0a50, - 0x0a56, 0x0a56, 0x0a56, 0x0a5e, 0x0a62, 0x0a68, 0x0a70, 0x0a77, - 0x0a7f, 0x0a84, 0x0a88, 0x0a8e, 0x0a94, 0x0a99, 0x0a9d, 0x0aa5, - 0x0aaf, 0x0abd, 0x0ac1, 0x0ac7, 0x0ad2, 0x0ad8, 0x0ae0, 0x0ae6, - 0x0aeb, 0x0aeb, 0x0af2, 0x0afd, 0x0b02, 0x0b0d, 0x0b14, 0x0b14, - 0x0b19, 0x0b1e, 0x0b26, 0x0b32, 0x0b3d, 0x0b41, 0x0b4a, 0x0b50, - 0x0b54, 0x0b5c, 0x0b5c, 0x0b62, 0x0b6b, 0x0b70, 0x0b7b, 0x0b7b, - // Entry 1C0 - 1FF - 0x0b7f, 0x0b88, 0x0b8c, 0x0b9d, 0x0ba5, 0x0bad, 0x0bb8, 0x0bbd, - 0x0bc2, 0x0bd3, 0x0bdd, 0x0be4, 0x0bec, 0x0bf6, 0x0bff, 0x0bff, - 0x0c10, 0x0c10, 0x0c10, 0x0c1a, 0x0c1a, 0x0c23, 0x0c23, 0x0c23, - 0x0c29, 0x0c32, 0x0c40, 0x0c47, 0x0c47, 0x0c51, 0x0c58, 0x0c61, - 0x0c61, 0x0c61, 0x0c66, 0x0c6c, 0x0c6c, 0x0c6c, 0x0c6c, 0x0c75, - 0x0c78, 0x0c7f, 0x0c84, 0x0c99, 0x0ca0, 0x0ca5, 0x0cac, 0x0cac, - 0x0cb3, 0x0cb8, 0x0cc2, 0x0cc8, 0x0cc8, 0x0cd2, 0x0cd8, 0x0cdc, - 0x0cdc, 0x0ce5, 0x0cf4, 0x0cfb, 0x0cfb, 0x0d04, 0x0d08, 0x0d18, - // Entry 200 - 23F - 0x0d1e, 0x0d1e, 0x0d1e, 0x0d27, 0x0d31, 0x0d3c, 0x0d48, 0x0d4f, - 0x0d58, 0x0d64, 0x0d69, 0x0d6d, 0x0d6d, 0x0d73, 0x0d77, 0x0d7f, - 0x0d87, 0x0d96, 0x0d9c, 0x0d9c, 0x0d9c, 0x0da1, 0x0da5, 0x0dab, - 0x0db0, 0x0db5, 0x0db9, 0x0dc0, 0x0dc0, 0x0dc7, 0x0dce, 0x0dce, - 0x0dd6, 0x0de4, 0x0ded, 0x0ded, 0x0df3, 0x0df3, 0x0dfc, 0x0dfc, - 0x0e03, 0x0e0d, 0x0e14, 0x0e1c, 0x0e37, 0x0e3d, 0x0e47, 0x0e4e, - 0x0e5a, 0x0e5d, 0x0e5d, 0x0e5d, 0x0e5d, 0x0e5d, 0x0e63, 0x0e63, - 0x0e68, 0x0e72, 0x0e78, 0x0e7d, 0x0e82, 0x0e89, 0x0e94, 0x0e9a, - // Entry 240 - 27F - 0x0e9a, 0x0e9e, 0x0ea1, 0x0ea7, 0x0eae, 0x0eb3, 0x0eb3, 0x0ebe, - 0x0ec5, 0x0ed1, 0x0ed1, 0x0ed7, 0x0ee0, 0x0ee4, 0x0efb, 0x0eff, - 0x0f16, 0x0f16, 0x0f24, 0x0f35, 0x0f46, 0x0f56, 0x0f65, 0x0f77, - 0x0f8d, 0x0f9e, 0x0fae, 0x0fae, 0x0fbd, 0x0fce, 0x0fce, 0x0fd4, - 0x0feb, 0x1001, 0x100a, 0x1017, 0x102a, 0x103c, 0x1051, -} // Size: 1254 bytes - -const deLangStr string = "" + // Size: 5631 bytes - "AfarAbchasischAvestischAfrikaansAkanAmharischAragonesischArabischAssames" + - "ischAwarischAymaraAserbaidschanischBaschkirischWeißrussischBulgarischBis" + - "lamaBambaraBengalischTibetischBretonischBosnischKatalanischTschetschenis" + - "chChamorroKorsischCreeTschechischKirchenslawischTschuwaschischWalisischD" + - "änischDeutschDhivehiDzongkhaEweGriechischEnglischEsperantoSpanischEstni" + - "schBaskischPersischFulFinnischFidschiFäröischFranzösischWestfriesischIri" + - "schSchottisches GälischGalicischGuaraniGujaratiManxHaussaHebräischHindiH" + - "iri-MotuKroatischHaiti-KreolischUngarischArmenischHereroInterlinguaIndon" + - "esischInterlingueIgboYiInupiakIdoIsländischItalienischInuktitutJapanisch" + - "JavanischGeorgischKongolesischKikuyuKwanyamaKasachischGrönländischKhmerK" + - "annadaKoreanischKanuriKaschmiriKurdischKomiKornischKirgisischLateinLuxem" + - "burgischGandaLimburgischLingalaLaotischLitauischLuba-KatangaLettischMada" + - "gassischMarschallesischMaoriMazedonischMalayalamMongolischMarathiMalaiis" + - "chMaltesischBirmanischNauruischNord-NdebeleNepalesischNdongaNiederländis" + - "chNorwegisch NynorskNorwegisch BokmålSüd-NdebeleNavajoNyanjaOkzitanischO" + - "jibwaOromoOriyaOssetischPunjabiPaliPolnischPaschtuPortugiesischQuechuaRä" + - "toromanischRundiRumänischRussischKinyarwandaSanskritSardischSindhiNordsa" + - "mischSangoSinghalesischSlowakischSlowenischSamoanischShonaSomaliAlbanisc" + - "hSerbischSwaziSüd-SothoSundanesischSchwedischSuaheliTamilTeluguTadschiki" + - "schThailändischTigrinyaTurkmenischTswanaTongaischTürkischTsongaTatarisch" + - "TahitischUigurischUkrainischUrduUsbekischVendaVietnamesischVolapükWallon" + - "ischWolofXhosaJiddischYorubaZhuangChinesischZuluAcehAcholiAdangmeAdygeis" + - "chTunesisches ArabischAfrihiliAghemAinuAkkadischAlabamaAleutischGegischS" + - "üd-AltaischAltenglischAngikaAramäischMapudungunAraonaArapahoAlgerisches" + - " ArabischArawakMarokkanisches ArabischÄgyptisches ArabischAsuAmerikanisc" + - "he GebärdenspracheAsturianischKotavaAwadhiBelutschischBalinesischBairisc" + - "hBasaaBamunBatak TobaGhomalaBedauyeBembaBetawiBenaBafutBadagaWestliches " + - "BelutschiBhodschpuriBikolBiniBanjaresischKomBlackfootBishnupriyaBachtiar" + - "ischBraj-BhakhaBrahuiBodoAkooseBurjatischBuginesischBuluBlinMedumbaCaddo" + - "KaribischCayugaAtsamCebuanoRukigaChibchaTschagataischChuukesischMariChin" + - "ookChoctawChipewyanCherokeeCheyenneZentralkurdischKoptischCapiznonKrimta" + - "tarischSeychellenkreolKaschubischDakotaDarginischTaitaDelawareSlaveDogri" + - "bDinkaZarmaDogriNiedersorbischZentral-DusunDualaMittelniederländischDiol" + - "aDyulaDazagaEmbuEfikEmilianischÄgyptischEkajukElamischMittelenglischZent" + - "ral-Alaska-YupikEwondoExtremadurischPangweFilipinoMeänkieliFonCajunMitte" + - "lfranzösischAltfranzösischFrankoprovenzalischNordfriesischOstfriesischFr" + - "iaulischGaGagausischGanGayoGbayaGabriGeezKiribatischGilakiMittelhochdeut" + - "schAlthochdeutschGoa-KonkaniGondiMongondouGotischGreboAltgriechischSchwe" + - "izerdeutschWayúuFarefareGusiiKutchinHaidaHakkaHawaiischFidschi-HindiHili" + - "gaynonHethitischMiaoObersorbischXiangHupaIbanIbibioIlokanoInguschischIsc" + - "horischJamaikanisch-KreolischLojbanNgombaMachameJüdisch-PersischJüdisch-" + - "ArabischJütischKarakalpakischKabylischKachinJjuKambaKawiKabardinischKane" + - "mbuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiSakischKoyra ChiiniKho" + - "warKirmanjkiKakoKalenjinKimbunduKomi-PermjakischKonkaniKosraeanischKpell" + - "eKaratschaiisch-BalkarischKrioKinaray-aKarelischOraonShambalaBafiaKölsch" + - "KumükischKutenaiLadinoLangiLahndaLambaLesgischLingua Franca NovaLigurisc" + - "hLivischLakotaLombardischMongoKreol (Louisiana)LoziNördliches LuriLettga" + - "llischLuba-LuluaLuisenoLundaLuoLushaiLuhyaKlassisches ChinesischLasischM" + - "aduresischMafaKhottaMaithiliMakassarischMalinkeMassaiMabaMokschanischMan" + - "daresischMendeMeruMorisyenMittelirischMakhuwa-MeettoMeta’MicmacMinangkab" + - "auMandschurischMeitheiMohawkMossiBergmariMundangMehrsprachigMuskogeeMira" + - "ndesischMarwariMentawaiMyeneErsja-MordwinischMasanderanischMin NanNeapol" + - "itanischNamaNiederdeutschNewariNiasNiueAo-NagaKwasioNgiemboonNogaiAltnor" + - "dischNovialN’KoNord-SothoNuerAlt-NewariNyamweziNyankoleNyoroNzimaOsageOs" + - "manischPangasinanMittelpersischPampangganPapiamentoPalauPicardischNigeri" + - "anisches PidginPennsylvaniadeutschPlautdietschAltpersischPfälzischPhöniz" + - "ischPiemontesischPontischPonapeanischAltpreußischAltprovenzalischK’iche’" + - "Chimborazo Hochland-QuechuaRajasthaniRapanuiRarotonganischRomagnolTarifi" + - "tRomboRomaniRotumanischRussinischRovianaAromunischRwaSandaweJakutischSam" + - "aritanischSamburuSasakSantaliSaurashtraNgambaySanguSizilianischSchottisc" + - "hSassarischSüdkurdischSenecaSenaSeriSelkupischKoyra SenniAltirischSamogi" + - "tischTaschelhitSchanTschadisch-ArabischSidamoSchlesisch (Niederschlesisc" + - "h)SelayarSüdsamischLule-SamischInari-SamischSkolt-SamischSoninkeSogdisch" + - "SrananischSererSahoSaterfriesischSukumaSusuSumerischKomorischAltsyrischS" + - "yrischSchlesisch (Wasserpolnisch)TuluTemneTesoTerenoTetumTigreTivTokelau" + - "anischTsachurischKlingonischTlingitTalischTamaseqNyasa TongaNeumelanesis" + - "chTuroyoTarokoTsakonischTsimshianTatischTumbukaTuvaluischTasawaqTuwinisc" + - "hZentralatlas-TamazightUdmurtischUgaritischUmbunduUnbekannte SpracheVaiV" + - "enetischWepsischWestflämischMainfränkischWotischVõroVunjoWalliserdeutsch" + - "WalamoWarayWashoWarlpiriWuKalmückischMingrelischSogaYaoYapesischYangbenY" + - "embaNheengatuKantonesischZapotekischBliss-SymboleSeeländischZenagaTamazi" + - "ghtZuniKeine SprachinhalteZazaModernes HocharabischÖsterreichisches Deut" + - "schSchweizer HochdeutschAustralisches EnglischKanadisches EnglischBritis" + - "ches EnglischAmerikanisches EnglischLateinamerikanisches SpanischEuropäi" + - "sches SpanischMexikanisches SpanischKanadisches FranzösischSchweizer Fra" + - "nzösischNiedersächsischFlämischBrasilianisches PortugiesischEuropäisches" + - " PortugiesischMoldauischSerbo-KroatischKongo-SwahiliChinesisch (vereinfa" + - "cht)Chinesisch (traditionell)" - -var deLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, - 0x0041, 0x004c, 0x0054, 0x005a, 0x006b, 0x0077, 0x0084, 0x008e, - 0x0095, 0x009c, 0x00a6, 0x00af, 0x00b9, 0x00c1, 0x00cc, 0x00db, - 0x00e3, 0x00eb, 0x00ef, 0x00fa, 0x0109, 0x0117, 0x0120, 0x0128, - 0x012f, 0x0136, 0x013e, 0x0141, 0x014b, 0x0153, 0x015c, 0x0164, - 0x016c, 0x0174, 0x017c, 0x017f, 0x0187, 0x018e, 0x0198, 0x01a4, - 0x01b1, 0x01b7, 0x01cc, 0x01d5, 0x01dc, 0x01e4, 0x01e8, 0x01ee, - 0x01f8, 0x01fd, 0x0206, 0x020f, 0x021e, 0x0227, 0x0230, 0x0236, - // Entry 40 - 7F - 0x0241, 0x024c, 0x0257, 0x025b, 0x025d, 0x0264, 0x0267, 0x0272, - 0x027d, 0x0286, 0x028f, 0x0298, 0x02a1, 0x02ad, 0x02b3, 0x02bb, - 0x02c5, 0x02d3, 0x02d8, 0x02df, 0x02e9, 0x02ef, 0x02f8, 0x0300, - 0x0304, 0x030c, 0x0316, 0x031c, 0x0329, 0x032e, 0x0339, 0x0340, - 0x0348, 0x0351, 0x035d, 0x0365, 0x0371, 0x0380, 0x0385, 0x0390, - 0x0399, 0x03a3, 0x03aa, 0x03b3, 0x03bd, 0x03c7, 0x03d0, 0x03dc, - 0x03e7, 0x03ed, 0x03fc, 0x040e, 0x0420, 0x042c, 0x0432, 0x0438, - 0x0443, 0x0449, 0x044e, 0x0453, 0x045c, 0x0463, 0x0467, 0x046f, - // Entry 80 - BF - 0x0476, 0x0483, 0x048a, 0x0498, 0x049d, 0x04a7, 0x04af, 0x04ba, - 0x04c2, 0x04ca, 0x04d0, 0x04db, 0x04e0, 0x04ed, 0x04f7, 0x0501, - 0x050b, 0x0510, 0x0516, 0x051f, 0x0527, 0x052c, 0x0536, 0x0542, - 0x054c, 0x0553, 0x0558, 0x055e, 0x056a, 0x0577, 0x057f, 0x058a, - 0x0590, 0x0599, 0x05a2, 0x05a8, 0x05b1, 0x05ba, 0x05c3, 0x05cd, - 0x05d1, 0x05da, 0x05df, 0x05ec, 0x05f4, 0x05fe, 0x0603, 0x0608, - 0x0610, 0x0616, 0x061c, 0x0626, 0x062a, 0x062e, 0x0634, 0x063b, - 0x0644, 0x0658, 0x0660, 0x0665, 0x0669, 0x0672, 0x0679, 0x0682, - // Entry C0 - FF - 0x0689, 0x0696, 0x06a1, 0x06a7, 0x06b1, 0x06bb, 0x06c1, 0x06c8, - 0x06dc, 0x06dc, 0x06e2, 0x06f9, 0x070e, 0x0711, 0x072f, 0x073b, - 0x0741, 0x0747, 0x0753, 0x075e, 0x0766, 0x076b, 0x0770, 0x077a, - 0x0781, 0x0788, 0x078d, 0x0793, 0x0797, 0x079c, 0x07a2, 0x07b6, - 0x07c1, 0x07c6, 0x07ca, 0x07d6, 0x07d9, 0x07e2, 0x07ed, 0x07f9, - 0x0804, 0x080a, 0x080e, 0x0814, 0x081e, 0x0829, 0x082d, 0x0831, - 0x0838, 0x083d, 0x0846, 0x084c, 0x0851, 0x0851, 0x0858, 0x085e, - 0x0865, 0x0872, 0x087d, 0x0881, 0x0888, 0x088f, 0x0898, 0x08a0, - // Entry 100 - 13F - 0x08a8, 0x08b7, 0x08bf, 0x08c7, 0x08d4, 0x08e3, 0x08ee, 0x08f4, - 0x08fe, 0x0903, 0x090b, 0x0910, 0x0916, 0x091b, 0x0920, 0x0925, - 0x0933, 0x0940, 0x0945, 0x095a, 0x095f, 0x0964, 0x096a, 0x096e, - 0x0972, 0x097d, 0x0987, 0x098d, 0x0995, 0x09a3, 0x09b7, 0x09bd, - 0x09cb, 0x09d1, 0x09d9, 0x09e3, 0x09e6, 0x09eb, 0x09fd, 0x0a0c, - 0x0a1f, 0x0a2c, 0x0a38, 0x0a42, 0x0a44, 0x0a4e, 0x0a51, 0x0a55, - 0x0a5a, 0x0a5f, 0x0a63, 0x0a6e, 0x0a74, 0x0a85, 0x0a93, 0x0a9e, - 0x0aa3, 0x0aac, 0x0ab3, 0x0ab8, 0x0ac5, 0x0ad5, 0x0adb, 0x0ae3, - // Entry 140 - 17F - 0x0ae8, 0x0aef, 0x0af4, 0x0af9, 0x0b02, 0x0b0f, 0x0b19, 0x0b23, - 0x0b27, 0x0b33, 0x0b38, 0x0b3c, 0x0b40, 0x0b46, 0x0b4d, 0x0b58, - 0x0b62, 0x0b78, 0x0b7e, 0x0b84, 0x0b8b, 0x0b9c, 0x0bad, 0x0bb5, - 0x0bc3, 0x0bcc, 0x0bd2, 0x0bd5, 0x0bda, 0x0bde, 0x0bea, 0x0bf1, - 0x0bf5, 0x0bfc, 0x0c08, 0x0c0f, 0x0c13, 0x0c1b, 0x0c20, 0x0c27, - 0x0c33, 0x0c39, 0x0c42, 0x0c46, 0x0c4e, 0x0c56, 0x0c66, 0x0c6d, - 0x0c79, 0x0c7f, 0x0c98, 0x0c9c, 0x0ca5, 0x0cae, 0x0cb3, 0x0cbb, - 0x0cc0, 0x0cc7, 0x0cd1, 0x0cd8, 0x0cde, 0x0ce3, 0x0ce9, 0x0cee, - // Entry 180 - 1BF - 0x0cf6, 0x0d08, 0x0d11, 0x0d18, 0x0d1e, 0x0d29, 0x0d2e, 0x0d3f, - 0x0d43, 0x0d53, 0x0d5f, 0x0d69, 0x0d70, 0x0d75, 0x0d78, 0x0d7e, - 0x0d83, 0x0d99, 0x0da0, 0x0dab, 0x0daf, 0x0db5, 0x0dbd, 0x0dc9, - 0x0dd0, 0x0dd6, 0x0dda, 0x0de6, 0x0df2, 0x0df7, 0x0dfb, 0x0e03, - 0x0e0f, 0x0e1d, 0x0e24, 0x0e2a, 0x0e35, 0x0e42, 0x0e49, 0x0e4f, - 0x0e54, 0x0e5c, 0x0e63, 0x0e6f, 0x0e77, 0x0e83, 0x0e8a, 0x0e92, - 0x0e97, 0x0ea8, 0x0eb6, 0x0ebd, 0x0ecb, 0x0ecf, 0x0edc, 0x0ee2, - 0x0ee6, 0x0eea, 0x0ef1, 0x0ef7, 0x0f00, 0x0f05, 0x0f10, 0x0f16, - // Entry 1C0 - 1FF - 0x0f1c, 0x0f26, 0x0f2a, 0x0f34, 0x0f3c, 0x0f44, 0x0f49, 0x0f4e, - 0x0f53, 0x0f5c, 0x0f66, 0x0f74, 0x0f7e, 0x0f88, 0x0f8d, 0x0f97, - 0x0fac, 0x0fbf, 0x0fcb, 0x0fd6, 0x0fe0, 0x0feb, 0x0ff8, 0x1000, - 0x100c, 0x1019, 0x1029, 0x1034, 0x104f, 0x1059, 0x1060, 0x106e, - 0x1076, 0x107d, 0x1082, 0x1088, 0x1093, 0x109d, 0x10a4, 0x10ae, - 0x10b1, 0x10b8, 0x10c1, 0x10ce, 0x10d5, 0x10da, 0x10e1, 0x10eb, - 0x10f2, 0x10f7, 0x1103, 0x110d, 0x1117, 0x1123, 0x1129, 0x112d, - 0x1131, 0x113b, 0x1146, 0x114f, 0x115a, 0x1164, 0x1169, 0x117c, - // Entry 200 - 23F - 0x1182, 0x119f, 0x11a6, 0x11b1, 0x11bd, 0x11ca, 0x11d7, 0x11de, - 0x11e6, 0x11f0, 0x11f5, 0x11f9, 0x1207, 0x120d, 0x1211, 0x121a, - 0x1223, 0x122d, 0x1234, 0x124f, 0x1253, 0x1258, 0x125c, 0x1262, - 0x1267, 0x126c, 0x126f, 0x127c, 0x1287, 0x1292, 0x1299, 0x12a0, - 0x12a7, 0x12b2, 0x12c0, 0x12c6, 0x12cc, 0x12d6, 0x12df, 0x12e6, - 0x12ed, 0x12f7, 0x12fe, 0x1307, 0x131d, 0x1327, 0x1331, 0x1338, - 0x134a, 0x134d, 0x1356, 0x135e, 0x136b, 0x1379, 0x1380, 0x1385, - 0x138a, 0x1399, 0x139f, 0x13a4, 0x13a9, 0x13b1, 0x13b3, 0x13bf, - // Entry 240 - 27F - 0x13ca, 0x13ce, 0x13d1, 0x13da, 0x13e1, 0x13e6, 0x13ef, 0x13fb, - 0x1406, 0x1413, 0x141f, 0x1425, 0x142e, 0x1432, 0x1445, 0x1449, - 0x145e, 0x145e, 0x1477, 0x148c, 0x14a2, 0x14b6, 0x14c9, 0x14e0, - 0x14fd, 0x1513, 0x1529, 0x1529, 0x1541, 0x1557, 0x1567, 0x1570, - 0x158d, 0x15a8, 0x15b2, 0x15c1, 0x15ce, 0x15e6, 0x15ff, -} // Size: 1254 bytes - -const elLangStr string = "" + // Size: 9133 bytes - "ΑφάρΑμπχαζικάΑβεστάνΑφρικάανςΑκάνΑμχαρικάΑραγονικάΑραβικάΑσαμικάΑβαρικάΑ" + - "ϊμάραΑζερμπαϊτζανικάΜπασκίρΛευκορωσικάΒουλγαρικάΜπισλάμαΜπαμπάραΒεγγαλι" + - "κάΘιβετιανάΒρετονικάΒοσνιακάΚαταλανικάΤσετσενικάΤσαμόροΚορσικανικάΚριΤσ" + - "εχικάΕκκλησιαστικά ΣλαβικάΤσουβασικάΟυαλικάΔανικάΓερμανικάΝτιβέχιΝτζόνγ" + - "κχαΈουεΕλληνικάΑγγλικάΕσπεράντοΙσπανικάΕσθονικάΒασκικάΠερσικάΦουλάΦινλα" + - "νδικάΦίτζιΦεροϊκάΓαλλικάΔυτικά ΦριζικάΙρλανδικάΣκωτικά ΚελτικάΓαλικιανά" + - "ΓκουαρανίΓκουγιαράτιΜανξΧάουσαΕβραϊκάΧίντιΧίρι ΜότουΚροατικάΑϊτιανάΟυγγ" + - "ρικάΑρμενικάΧερέροΙντερλίνγκουαΙνδονησιακάΙντερλίνγκουεΊγκμποΣίτσουαν Γ" + - "ιΙνουπιάκΊντοΙσλανδικάΙταλικάΙνούκτιτουτΙαπωνικάΙαβανικάΓεωργιανάΚονγκό" + - "ΚικούγιουΚουανιάμαΚαζακικάΚαλαάλισουτΧμερΚανάνταΚορεατικάΚανούριΚασμιρι" + - "κάΚουρδικάΚόμιΚορνουαλικάΚιργιζικάΛατινικάΛουξεμβουργιανάΓκάνταΛιμβουργ" + - "ιανάΛινγκάλαΛαοτινάΛιθουανικάΛούμπα-ΚατάνγκαΛετονικάΜαλγασικάΜαρσαλέζικ" + - "αΜαορίΣλαβομακεδονικάΜαλαγιαλαμικάΜογγολικάΜαραθικάΜαλαισιανάΜαλτεζικάΒ" + - "ιρμανικάΝαούρουΒόρεια ΝτεμπέλεΝεπαλικάΝτόνγκαΟλλανδικάΝορβηγικά Νινόρσκ" + - "Νορβηγικά ΜποκμάλΝότια ΝτεμπέλεΝάβαχοΝιάντζαΟξιτανικάΟζιβίγουαΟρόμοΌντι" + - "αΟσετικάΠαντζαπικάΠάλιΠολωνικάΠάστοΠορτογαλικάΚέτσουαΡομανικάΡούντιΡουμ" + - "ανικάΡωσικάΚινιαρουάνταΣανσκριτικάΣαρδηνιακάΣίντιΒόρεια ΣάμιΣάνγκοΣινχα" + - "λεζικάΣλοβακικάΣλοβενικάΣαμοανάΣόναΣομαλικάΑλβανικάΣερβικάΣουάτιΝότια Σ" + - "όθοΣουνδανικάΣουηδικάΣουαχίλιΤαμιλικάΤελούγκουΤατζικικάΤαϊλανδικάΤιγκρι" + - "νικάΤουρκμενικάΤσουάναΤονγκανικάΤουρκικάΤσόνγκαΤαταρικάΤαϊτιανάΟυιγκουρ" + - "ικάΟυκρανικάΟυρντούΟυζμπεκικάΒένταΒιετναμικάΒολαπιούκΒαλλωνικάΓουόλοφΚό" + - "σαΓίντιςΓιορούμπαΖουάνγκΚινεζικάΖουλούΑχινίζΑκολίΑντάνγκμεΑντιγκέαΑφριχ" + - "ίλιΑγκέμΑϊνούΑκάντιανΑλεούτΝότια ΑλτάιΠαλαιά ΑγγλικάΑνγκικάΑραμαϊκάΑραο" + - "υκανικάΑραπάχοΑραγουάκΆσουΑστουριανάΑγουαντίΜπαλούτσιΜπαλινίζΜπάσαΜπαμο" + - "ύνΓκομάλαΜπέζαΜπέμπαΜπέναΜπαφούτΔυτικά ΜπαλοχικάΜποζπούριΜπικόλΜπίνιΚομ" + - "ΣικσίκαΜπρατζΜπόντοΑκόσιΜπουριάτΜπουγκίζΜπουλούΜπλινΜεντούμπαΚάντοΚαρίμ" + - "πΚαγιούγκαΑτσάμΣεμπουάνοΤσίγκαΤσίμπτσαΤσαγκατάιΤσουκίζιΜάριΙδιωματικά Σ" + - "ινούκΤσοκτάουΤσίπιουανΤσερόκιΣεγιένΚουρδικά ΣοράνιΚοπτικάΤουρκικά Κριμα" + - "ίαςΚρεολικά Γαλλικά ΣεϋχελλώνΚασούμπιανΝτακόταΝτάργκουαΤάιταΝτέλαγουερΣ" + - "λαβικάΝτόγκριμπΝτίνκαΖάρμαΝτόγκριΚάτω ΣορβικάΝτουάλαΜέσα ΟλλανδικάΤζόλα" + - "-ΦόνιΝτογιούλαΝταζάγκαΈμπουΕφίκΑρχαία ΑιγυπτιακάΕκατζούκΕλαμάιτΜέσα Αγγλ" + - "ικάΕγουόντοΦανγκΦιλιππινικάΦονΓαλλικά (Λουιζιάνα)Μέσα ΓαλλικάΠαλαιά Γαλ" + - "λικάΒόρεια ΦριζιανάΑνατολικά ΦριζιανάΦριουλανικάΓκαΓκαγκάουζΓκάγιοΓκμπά" + - "γιαΓκιζΓκιλμπερτίζΜέσα Άνω ΓερμανικάΠαλαιά Άνω ΓερμανικάΓκόντιΓκοροντάλ" + - "οΓοτθικάΓκρίμποΑρχαία ΕλληνικάΓερμανικά ΕλβετίαςΓκούσιΓκουίτσινΧάινταΧα" + - "βαϊκάΧιλιγκαϊνόνΧιτίτεΧμονγκΆνω ΣορβικάΧούπαΙμπάνΙμπίμπιοΙλόκοΙνγκούςΛό" + - "ζμπανΝγκόμπαΜατσάμεΙουδαϊκά-ΠερσικάΙουδαϊκά-ΑραβικάΚάρα-ΚαλπάκΚαμπίλεΚα" + - "τσίνΤζουΚάμπαΚάουιΚαμπαρντιανάΚανέμπουΤιάπΜακόντεΓλώσσα του Πράσινου Ακ" + - "ρωτηρίουΚόροΚάσιΚοτανικάΚόιρα ΤσίνιΚάκοΚαλεντζίνΚιμπούντουΚόμι-ΠερμιάκΚ" + - "ονκανικάΚοσραενικάΚπέλεΚαρατσάι-ΜπαλκάρΚαρελικάΚουρούχΣαμπάλαΜπάφιαΚολω" + - "νικάΚουμγιούκΚουτενάιΛαδίνοΛάνγκιΛάχδαΛάμπαΛεζγκικάΛακόταΜόνγκοΚρεολικά" + - " (Λουιζιάνα)ΛόζιΒόρεια ΛούριΛούμπα-ΛουλούαΛουισένοΛούνταΛούοΜίζοΛουχίαΜα" + - "ντουρίζΜάφαΜαγκάχιΜαϊτχίλιΜακασάρΜαντίνγκοΜασάιΜάμπαΜόκσαΜανδάρΜέντεΜέρ" + - "ουΜορισιένΜέσα ΙρλανδικάΜακούβα-ΜέτοΜέταΜικμάκΜινανγκαμπάουΜαντσούΜανιπ" + - "ούριΜοχόκΜόσιΜουντάνγκΠολλαπλές γλώσσεςΚρικΜιραντεζικάΜαργουάριΜιένεΈρζ" + - "υαΜαζαντεράνιΝαπολιτανικάΝάμαΚάτω ΓερμανικάΝεγουάριΝίαςΝιούεΚβάσιοΝγκιε" + - "μπούνΝογκάιΠαλαιά ΝορβηγικάΝ’ΚοΒόρεια ΣόθοΝούερΚλασικά ΝεουάριΝιαμγουέζ" + - "ιΝιανκόλεΝιόροΝζίμαΟσάζΟθωμανικά ΤουρκικάΠανγκασινάνΠαχλάβιΠαμπάνγκαΠαπ" + - "ιαμέντοΠαλάουανΠίτζιν ΝιγηρίαςΑρχαία ΠερσικάΦοινικικάΠομπηικάΠρωσικάΠαλ" + - "αιά ΠροβανσάλΚιτσέΡαζασθάνιΡαπανούιΡαροτονγκάνΡόμποΡομανίΑρομανικάΡουάΣ" + - "αντάγουεΣαχάΣαμαρίτικα ΑραμαϊκάΣαμπούρουΣασάκΣαντάλιΝγκαμπέιΣάνγκουΣικε" + - "λικάΣκωτικάΝότια ΚουρδικάΣένεκαΣέναΣελκούπΚοϊραμπόρο ΣένιΠαλαιά Ιρλανδι" + - "κάΤασελχίτΣανΑραβικά του ΤσαντΣιντάμοΝότια ΣάμιΛούλε ΣάμιΙνάρι ΣάμιΣκολ" + - "τ ΣάμιΣονίνκεΣογκντιένΣρανάν ΤόνγκοΣερέρΣάχοΣουκούμαΣούσουΣουμερικάΚομο" + - "ριανάΚλασικά ΣυριακάΣυριακάΤίμνεΤέσοΤερένοΤέτουμΤίγκρεΤιβΤοκελάουΚλίνγκ" + - "ονΤλίνγκιτΤαμασέκΝιάσα ΤόνγκαΤοκ ΠισίνΤαρόκοΤσίμσιανΤουμπούκαΤουβαλούΤα" + - "σαβάκΤουβινικάΤαμαζίτ Κεντρικού ΜαρόκοΟυντμούρτΟυγκαριτικάΟυμπούντουΆγν" + - "ωστη γλώσσαΒάιΒότικΒούντζοΒάλσερΓουολάιταΓουάραϊΓουασόΓουαρλπίριwuuΚαλμ" + - "ίκΣόγκαΓιάοΓιαπίζΓιανγκμπένΓιέμπαΚαντονέζικαΖάποτεκΣύμβολα BlissΖενάγκα" + - "Τυπικά Ταμαζίτ ΜαρόκουΖούνιΧωρίς γλωσσολογικό περιεχόμενοΖάζαΣύγχρονα Τ" + - "υπικά ΑραβικάΓερμανικά ΑυστρίαςΥψηλά Γερμανικά ΕλβετίαςΑγγλικά Αυστραλί" + - "αςΑγγλικά ΚαναδάΑγγλικά ΒρετανίαςΑγγλικά ΑμερικήςΙσπανικά Λατινικής Αμε" + - "ρικήςΙσπανικά ΕυρώπηςΙσπανικά ΜεξικούΓαλλικά ΚαναδάΓαλλικά ΕλβετίαςΚάτω" + - " Γερμανικά ΟλλανδίαςΦλαμανδικάΠορτογαλικά ΒραζιλίαςΠορτογαλικά ΕυρώπηςΜο" + - "λδαβικάΣερβοκροατικάΚονγκό ΣουαχίλιΑπλοποιημένα ΚινεζικάΠαραδοσιακά Κιν" + - "εζικά" - -var elLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x001a, 0x0028, 0x003a, 0x0042, 0x0052, 0x0064, - 0x0072, 0x0080, 0x008e, 0x009a, 0x00b8, 0x00c6, 0x00dc, 0x00f0, - 0x0100, 0x0110, 0x0122, 0x0134, 0x0146, 0x0156, 0x016a, 0x017e, - 0x018c, 0x01a2, 0x01a8, 0x01b6, 0x01df, 0x01f3, 0x0201, 0x020d, - 0x021f, 0x022d, 0x023f, 0x0247, 0x0257, 0x0265, 0x0277, 0x0287, - 0x0297, 0x02a5, 0x02b3, 0x02bd, 0x02d1, 0x02db, 0x02e9, 0x02f7, - 0x0312, 0x0324, 0x0341, 0x0353, 0x0365, 0x037b, 0x0383, 0x038f, - 0x039d, 0x03a7, 0x03ba, 0x03ca, 0x03d8, 0x03e8, 0x03f8, 0x0404, - // Entry 40 - 7F - 0x041e, 0x0434, 0x044e, 0x045a, 0x046f, 0x047f, 0x0487, 0x0499, - 0x04a7, 0x04bd, 0x04cd, 0x04dd, 0x04ef, 0x04fb, 0x050d, 0x051f, - 0x052f, 0x0545, 0x054d, 0x055b, 0x056d, 0x057b, 0x058d, 0x059d, - 0x05a5, 0x05bb, 0x05cd, 0x05dd, 0x05fb, 0x0607, 0x061f, 0x062f, - 0x063d, 0x0651, 0x066e, 0x067e, 0x0690, 0x06a6, 0x06b0, 0x06ce, - 0x06e8, 0x06fa, 0x070a, 0x071e, 0x0730, 0x0742, 0x0750, 0x076d, - 0x077d, 0x078b, 0x079d, 0x07be, 0x07df, 0x07fa, 0x0806, 0x0814, - 0x0826, 0x0838, 0x0842, 0x084c, 0x085a, 0x086e, 0x0876, 0x0886, - // Entry 80 - BF - 0x0890, 0x08a6, 0x08b4, 0x08c4, 0x08d0, 0x08e2, 0x08ee, 0x0906, - 0x091c, 0x0930, 0x093a, 0x094f, 0x095b, 0x0971, 0x0983, 0x0995, - 0x09a3, 0x09ab, 0x09bb, 0x09cb, 0x09d9, 0x09e5, 0x09f8, 0x0a0c, - 0x0a1c, 0x0a2c, 0x0a3c, 0x0a4e, 0x0a60, 0x0a74, 0x0a88, 0x0a9e, - 0x0aac, 0x0ac0, 0x0ad0, 0x0ade, 0x0aee, 0x0afe, 0x0b14, 0x0b26, - 0x0b34, 0x0b48, 0x0b52, 0x0b66, 0x0b78, 0x0b8a, 0x0b98, 0x0ba0, - 0x0bac, 0x0bbe, 0x0bcc, 0x0bdc, 0x0be8, 0x0bf4, 0x0bfe, 0x0c10, - 0x0c20, 0x0c20, 0x0c30, 0x0c3a, 0x0c44, 0x0c54, 0x0c54, 0x0c60, - // Entry C0 - FF - 0x0c60, 0x0c75, 0x0c90, 0x0c9e, 0x0cae, 0x0cc4, 0x0cc4, 0x0cd2, - 0x0cd2, 0x0cd2, 0x0ce2, 0x0ce2, 0x0ce2, 0x0cea, 0x0cea, 0x0cfe, - 0x0cfe, 0x0d0e, 0x0d20, 0x0d30, 0x0d30, 0x0d3a, 0x0d48, 0x0d48, - 0x0d56, 0x0d60, 0x0d6c, 0x0d6c, 0x0d76, 0x0d84, 0x0d84, 0x0da3, - 0x0db5, 0x0dc1, 0x0dcb, 0x0dcb, 0x0dd1, 0x0ddf, 0x0ddf, 0x0ddf, - 0x0deb, 0x0deb, 0x0df7, 0x0e01, 0x0e11, 0x0e21, 0x0e2f, 0x0e39, - 0x0e4b, 0x0e55, 0x0e61, 0x0e73, 0x0e7d, 0x0e7d, 0x0e8f, 0x0e9b, - 0x0eab, 0x0ebd, 0x0ecd, 0x0ed5, 0x0ef6, 0x0f06, 0x0f18, 0x0f26, - // Entry 100 - 13F - 0x0f32, 0x0f4f, 0x0f5d, 0x0f5d, 0x0f7e, 0x0fb0, 0x0fc4, 0x0fd2, - 0x0fe4, 0x0fee, 0x1002, 0x1010, 0x1022, 0x102e, 0x1038, 0x1046, - 0x105d, 0x105d, 0x106b, 0x1086, 0x1099, 0x10ab, 0x10bb, 0x10c5, - 0x10cd, 0x10cd, 0x10ee, 0x10fe, 0x110c, 0x1123, 0x1123, 0x1133, - 0x1133, 0x113d, 0x1153, 0x1153, 0x1159, 0x117c, 0x1193, 0x11ae, - 0x11ae, 0x11cb, 0x11ee, 0x1204, 0x120a, 0x121c, 0x121c, 0x1228, - 0x1238, 0x1238, 0x1240, 0x1256, 0x1256, 0x1278, 0x129e, 0x129e, - 0x12aa, 0x12be, 0x12cc, 0x12da, 0x12f7, 0x131a, 0x131a, 0x131a, - // Entry 140 - 17F - 0x1326, 0x1338, 0x1344, 0x1344, 0x1352, 0x1352, 0x1368, 0x1374, - 0x1380, 0x1395, 0x1395, 0x139f, 0x13a9, 0x13b9, 0x13c3, 0x13d1, - 0x13d1, 0x13d1, 0x13df, 0x13ed, 0x13fb, 0x141a, 0x1439, 0x1439, - 0x144e, 0x145c, 0x1468, 0x1470, 0x147a, 0x1484, 0x149c, 0x14ac, - 0x14b4, 0x14c2, 0x14fb, 0x14fb, 0x1503, 0x1503, 0x150b, 0x151b, - 0x1530, 0x1530, 0x1530, 0x1538, 0x154a, 0x155e, 0x1575, 0x1587, - 0x159b, 0x15a5, 0x15c4, 0x15c4, 0x15c4, 0x15d4, 0x15e2, 0x15f0, - 0x15fc, 0x160c, 0x161e, 0x162e, 0x163a, 0x1646, 0x1650, 0x165a, - // Entry 180 - 1BF - 0x166a, 0x166a, 0x166a, 0x166a, 0x1676, 0x1676, 0x1682, 0x16a7, - 0x16af, 0x16c6, 0x16c6, 0x16e1, 0x16f1, 0x16fd, 0x1705, 0x170d, - 0x1719, 0x1719, 0x1719, 0x172b, 0x1733, 0x1741, 0x1751, 0x175f, - 0x1771, 0x177b, 0x1785, 0x178f, 0x179b, 0x17a5, 0x17af, 0x17bf, - 0x17da, 0x17f1, 0x17f9, 0x1805, 0x181f, 0x182d, 0x183f, 0x1849, - 0x1851, 0x1851, 0x1863, 0x1884, 0x188c, 0x18a2, 0x18b4, 0x18b4, - 0x18be, 0x18c8, 0x18de, 0x18de, 0x18f6, 0x18fe, 0x1919, 0x1929, - 0x1931, 0x193b, 0x193b, 0x1947, 0x195b, 0x1967, 0x1986, 0x1986, - // Entry 1C0 - 1FF - 0x198f, 0x19a4, 0x19ae, 0x19cb, 0x19df, 0x19ef, 0x19f9, 0x1a03, - 0x1a0b, 0x1a2e, 0x1a44, 0x1a52, 0x1a64, 0x1a78, 0x1a88, 0x1a88, - 0x1aa5, 0x1aa5, 0x1aa5, 0x1ac0, 0x1ac0, 0x1ad2, 0x1ad2, 0x1ad2, - 0x1ae2, 0x1af0, 0x1b0f, 0x1b19, 0x1b19, 0x1b2b, 0x1b3b, 0x1b51, - 0x1b51, 0x1b51, 0x1b5b, 0x1b67, 0x1b67, 0x1b67, 0x1b67, 0x1b79, - 0x1b81, 0x1b93, 0x1b9b, 0x1bc0, 0x1bd2, 0x1bdc, 0x1bea, 0x1bea, - 0x1bfa, 0x1c08, 0x1c18, 0x1c26, 0x1c26, 0x1c41, 0x1c4d, 0x1c55, - 0x1c55, 0x1c63, 0x1c80, 0x1c9f, 0x1c9f, 0x1caf, 0x1cb5, 0x1cd5, - // Entry 200 - 23F - 0x1ce3, 0x1ce3, 0x1ce3, 0x1cf6, 0x1d09, 0x1d1c, 0x1d2f, 0x1d3d, - 0x1d4f, 0x1d68, 0x1d72, 0x1d7a, 0x1d7a, 0x1d8a, 0x1d96, 0x1da8, - 0x1dba, 0x1dd7, 0x1de5, 0x1de5, 0x1de5, 0x1def, 0x1df7, 0x1e03, - 0x1e0f, 0x1e1b, 0x1e21, 0x1e31, 0x1e31, 0x1e41, 0x1e51, 0x1e51, - 0x1e5f, 0x1e76, 0x1e87, 0x1e87, 0x1e93, 0x1e93, 0x1ea3, 0x1ea3, - 0x1eb5, 0x1ec5, 0x1ed3, 0x1ee5, 0x1f13, 0x1f25, 0x1f3b, 0x1f4f, - 0x1f6a, 0x1f70, 0x1f70, 0x1f70, 0x1f70, 0x1f70, 0x1f7a, 0x1f7a, - 0x1f88, 0x1f94, 0x1fa6, 0x1fb4, 0x1fc0, 0x1fd4, 0x1fd7, 0x1fe3, - // Entry 240 - 27F - 0x1fe3, 0x1fed, 0x1ff5, 0x2001, 0x2015, 0x2021, 0x2021, 0x2037, - 0x2045, 0x2059, 0x2059, 0x2067, 0x2091, 0x209b, 0x20d5, 0x20dd, - 0x2109, 0x2109, 0x212c, 0x215a, 0x217d, 0x2198, 0x21b9, 0x21d8, - 0x220c, 0x222b, 0x224a, 0x224a, 0x2265, 0x2284, 0x22b2, 0x22c6, - 0x22ef, 0x2314, 0x2326, 0x2340, 0x235d, 0x2386, 0x23ad, -} // Size: 1254 bytes - -const enLangStr string = "" + // Size: 4978 bytes - "AfarAbkhazianAvestanAfrikaansAkanAmharicAragoneseArabicAssameseAvaricAym" + - "araAzerbaijaniBashkirBelarusianBulgarianBislamaBambaraBanglaTibetanBreto" + - "nBosnianCatalanChechenChamorroCorsicanCreeCzechChurch SlavicChuvashWelsh" + - "DanishGermanDivehiDzongkhaEweGreekEnglishEsperantoSpanishEstonianBasqueP" + - "ersianFulahFinnishFijianFaroeseFrenchWestern FrisianIrishScottish Gaelic" + - "GalicianGuaraniGujaratiManxHausaHebrewHindiHiri MotuCroatianHaitian Creo" + - "leHungarianArmenianHereroInterlinguaIndonesianInterlingueIgboSichuan YiI" + - "nupiaqIdoIcelandicItalianInuktitutJapaneseJavaneseGeorgianKongoKikuyuKua" + - "nyamaKazakhKalaallisutKhmerKannadaKoreanKanuriKashmiriKurdishKomiCornish" + - "KyrgyzLatinLuxembourgishGandaLimburgishLingalaLaoLithuanianLuba-KatangaL" + - "atvianMalagasyMarshalleseMaoriMacedonianMalayalamMongolianMarathiMalayMa" + - "lteseBurmeseNauruNorth NdebeleNepaliNdongaDutchNorwegian NynorskNorwegia" + - "n BokmålSouth NdebeleNavajoNyanjaOccitanOjibwaOromoOdiaOsseticPunjabiPal" + - "iPolishPashtoPortugueseQuechuaRomanshRundiRomanianRussianKinyarwandaSans" + - "kritSardinianSindhiNorthern SamiSangoSinhalaSlovakSlovenianSamoanShonaSo" + - "maliAlbanianSerbianSwatiSouthern SothoSundaneseSwedishSwahiliTamilTelugu" + - "TajikThaiTigrinyaTurkmenTswanaTonganTurkishTsongaTatarTahitianUyghurUkra" + - "inianUrduUzbekVendaVietnameseVolapükWalloonWolofXhosaYiddishYorubaZhuang" + - "ChineseZuluAchineseAcoliAdangmeAdygheTunisian ArabicAfrihiliAghemAinuAkk" + - "adianAlabamaAleutGheg AlbanianSouthern AltaiOld EnglishAngikaAramaicMapu" + - "cheAraonaArapahoAlgerian ArabicNajdi ArabicArawakMoroccan ArabicEgyptian" + - " ArabicAsuAmerican Sign LanguageAsturianKotavaAwadhiBaluchiBalineseBavar" + - "ianBasaaBamunBatak TobaGhomalaBejaBembaBetawiBenaBafutBadagaWestern Balo" + - "chiBhojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBrahuiBodoAk" + - "ooseBuriatBugineseBuluBlinMedumbaCaddoCaribCayugaAtsamChakmaCebuanoChiga" + - "ChibchaChagataiChuukeseMariChinook JargonChoctawChipewyanCherokeeCheyenn" + - "eCentral KurdishCopticCapiznonCrimean TurkishSeselwa Creole FrenchKashub" + - "ianDakotaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriLower SorbianCentr" + - "al DusunDualaMiddle DutchJola-FonyiDyulaDazagaEmbuEfikEmilianAncient Egy" + - "ptianEkajukElamiteMiddle EnglishCentral YupikEwondoExtremaduranFangFilip" + - "inoTornedalen FinnishFonCajun FrenchMiddle FrenchOld FrenchArpitanNorthe" + - "rn FrisianEastern FrisianFriulianGaGagauzGan ChineseGayoGbayaZoroastrian" + - " DariGeezGilberteseGilakiMiddle High GermanOld High GermanGoan KonkaniGo" + - "ndiGorontaloGothicGreboAncient GreekSwiss GermanWayuuFrafraGusiiGwichʼin" + - "HaidaHakka ChineseHawaiianFiji HindiHiligaynonHittiteHmongUpper SorbianX" + - "iang ChineseHupaIbanIbibioIlokoIngushIngrianJamaican Creole EnglishLojba" + - "nNgombaMachameJudeo-PersianJudeo-ArabicJutishKara-KalpakKabyleKachinJjuK" + - "ambaKawiKabardianKanembuTyapMakondeKabuverdianuKenyangKoroKaingangKhasiK" + - "hotaneseKoyra ChiiniKhowarKirmanjkiKakoKalenjinKimbunduKomi-PermyakKonka" + - "niKosraeanKpelleKarachay-BalkarKrioKinaray-aKarelianKurukhShambalaBafiaC" + - "olognianKumykKutenaiLadinoLangiLahndaLambaLezghianLingua Franca NovaLigu" + - "rianLivonianLakotaLombardMongoLouisiana CreoleLoziNorthern LuriLatgalian" + - "Luba-LuluaLuisenoLundaLuoMizoLuyiaLiterary ChineseLazMadureseMafaMagahiM" + - "aithiliMakasarMandingoMasaiMabaMokshaMandarMendeMeruMorisyenMiddle Irish" + - "Makhuwa-MeettoMetaʼMi'kmaqMinangkabauManchuManipuriMohawkMossiWestern Ma" + - "riMundangMultiple languagesCreekMirandeseMarwariMentawaiMyeneErzyaMazand" + - "eraniMin Nan ChineseNeapolitanNamaLow GermanNewariNiasNiueanAo NagaKwasi" + - "oNgiemboonNogaiOld NorseNovialN’KoNorthern SothoNuerClassical NewariNyam" + - "weziNyankoleNyoroNzimaOsageOttoman TurkishPangasinanPahlaviPampangaPapia" + - "mentoPalauanPicardNigerian PidginPennsylvania GermanPlautdietschOld Pers" + - "ianPalatine GermanPhoenicianPiedmontesePonticPohnpeianPrussianOld Proven" + - "çalKʼicheʼChimborazo Highland QuichuaRajasthaniRapanuiRarotonganRomagno" + - "lRiffianRomboRomanyRotumanRusynRovianaAromanianRwaSandaweSakhaSamaritan " + - "AramaicSamburuSasakSantaliSaurashtraNgambaySanguSicilianScotsSassarese S" + - "ardinianSouthern KurdishSenecaSenaSeriSelkupKoyraboro SenniOld IrishSamo" + - "gitianTachelhitShanChadian ArabicSidamoLower SilesianSelayarSouthern Sam" + - "iLule SamiInari SamiSkolt SamiSoninkeSogdienSranan TongoSererSahoSaterla" + - "nd FrisianSukumaSusuSumerianComorianClassical SyriacSyriacSilesianTuluTi" + - "mneTesoTerenoTetumTigreTivTokelauTsakhurKlingonTlingitTalyshTamashekNyas" + - "a TongaTok PisinTuroyoTarokoTsakonianTsimshianMuslim TatTumbukaTuvaluTas" + - "awaqTuvinianCentral Atlas TamazightUdmurtUgariticUmbunduUnknown language" + - "VaiVenetianVepsWest FlemishMain-FranconianVoticVõroVunjoWalserWolayttaWa" + - "rayWashoWarlpiriWu ChineseKalmykMingrelianSogaYaoYapeseYangbenYembaNheen" + - "gatuCantoneseZapotecBlissymbolsZeelandicZenagaStandard Moroccan Tamazigh" + - "tZuniNo linguistic contentZazaModern Standard ArabicAustrian GermanSwiss" + - " High GermanAustralian EnglishCanadian EnglishBritish EnglishAmerican En" + - "glishLatin American SpanishEuropean SpanishMexican SpanishDariCanadian F" + - "renchSwiss FrenchLow SaxonFlemishBrazilian PortugueseEuropean Portuguese" + - "MoldavianSerbo-CroatianCongo SwahiliSimplified ChineseTraditional Chines" + - "e" - -var enLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0014, 0x001d, 0x0021, 0x0028, 0x0031, - 0x0037, 0x003f, 0x0045, 0x004b, 0x0056, 0x005d, 0x0067, 0x0070, - 0x0077, 0x007e, 0x0084, 0x008b, 0x0091, 0x0098, 0x009f, 0x00a6, - 0x00ae, 0x00b6, 0x00ba, 0x00bf, 0x00cc, 0x00d3, 0x00d8, 0x00de, - 0x00e4, 0x00ea, 0x00f2, 0x00f5, 0x00fa, 0x0101, 0x010a, 0x0111, - 0x0119, 0x011f, 0x0126, 0x012b, 0x0132, 0x0138, 0x013f, 0x0145, - 0x0154, 0x0159, 0x0168, 0x0170, 0x0177, 0x017f, 0x0183, 0x0188, - 0x018e, 0x0193, 0x019c, 0x01a4, 0x01b2, 0x01bb, 0x01c3, 0x01c9, - // Entry 40 - 7F - 0x01d4, 0x01de, 0x01e9, 0x01ed, 0x01f7, 0x01fe, 0x0201, 0x020a, - 0x0211, 0x021a, 0x0222, 0x022a, 0x0232, 0x0237, 0x023d, 0x0245, - 0x024b, 0x0256, 0x025b, 0x0262, 0x0268, 0x026e, 0x0276, 0x027d, - 0x0281, 0x0288, 0x028e, 0x0293, 0x02a0, 0x02a5, 0x02af, 0x02b6, - 0x02b9, 0x02c3, 0x02cf, 0x02d6, 0x02de, 0x02e9, 0x02ee, 0x02f8, - 0x0301, 0x030a, 0x0311, 0x0316, 0x031d, 0x0324, 0x0329, 0x0336, - 0x033c, 0x0342, 0x0347, 0x0358, 0x0369, 0x0376, 0x037c, 0x0382, - 0x0389, 0x038f, 0x0394, 0x0398, 0x039f, 0x03a6, 0x03aa, 0x03b0, - // Entry 80 - BF - 0x03b6, 0x03c0, 0x03c7, 0x03ce, 0x03d3, 0x03db, 0x03e2, 0x03ed, - 0x03f5, 0x03fe, 0x0404, 0x0411, 0x0416, 0x041d, 0x0423, 0x042c, - 0x0432, 0x0437, 0x043d, 0x0445, 0x044c, 0x0451, 0x045f, 0x0468, - 0x046f, 0x0476, 0x047b, 0x0481, 0x0486, 0x048a, 0x0492, 0x0499, - 0x049f, 0x04a5, 0x04ac, 0x04b2, 0x04b7, 0x04bf, 0x04c5, 0x04ce, - 0x04d2, 0x04d7, 0x04dc, 0x04e6, 0x04ee, 0x04f5, 0x04fa, 0x04ff, - 0x0506, 0x050c, 0x0512, 0x0519, 0x051d, 0x0525, 0x052a, 0x0531, - 0x0537, 0x0546, 0x054e, 0x0553, 0x0557, 0x055f, 0x0566, 0x056b, - // Entry C0 - FF - 0x0578, 0x0586, 0x0591, 0x0597, 0x059e, 0x05a5, 0x05ab, 0x05b2, - 0x05c1, 0x05cd, 0x05d3, 0x05e2, 0x05f1, 0x05f4, 0x060a, 0x0612, - 0x0618, 0x061e, 0x0625, 0x062d, 0x0635, 0x063a, 0x063f, 0x0649, - 0x0650, 0x0654, 0x0659, 0x065f, 0x0663, 0x0668, 0x066e, 0x067d, - 0x0685, 0x068a, 0x068e, 0x0694, 0x0697, 0x069e, 0x06a9, 0x06b2, - 0x06b6, 0x06bc, 0x06c0, 0x06c6, 0x06cc, 0x06d4, 0x06d8, 0x06dc, - 0x06e3, 0x06e8, 0x06ed, 0x06f3, 0x06f8, 0x06fe, 0x0705, 0x070a, - 0x0711, 0x0719, 0x0721, 0x0725, 0x0733, 0x073a, 0x0743, 0x074b, - // Entry 100 - 13F - 0x0753, 0x0762, 0x0768, 0x0770, 0x077f, 0x0794, 0x079d, 0x07a3, - 0x07a9, 0x07ae, 0x07b6, 0x07bb, 0x07c1, 0x07c6, 0x07cb, 0x07d0, - 0x07dd, 0x07ea, 0x07ef, 0x07fb, 0x0805, 0x080a, 0x0810, 0x0814, - 0x0818, 0x081f, 0x082f, 0x0835, 0x083c, 0x084a, 0x0857, 0x085d, - 0x0869, 0x086d, 0x0875, 0x0887, 0x088a, 0x0896, 0x08a3, 0x08ad, - 0x08b4, 0x08c4, 0x08d3, 0x08db, 0x08dd, 0x08e3, 0x08ee, 0x08f2, - 0x08f7, 0x0907, 0x090b, 0x0915, 0x091b, 0x092d, 0x093c, 0x0948, - 0x094d, 0x0956, 0x095c, 0x0961, 0x096e, 0x097a, 0x097f, 0x0985, - // Entry 140 - 17F - 0x098a, 0x0993, 0x0998, 0x09a5, 0x09ad, 0x09b7, 0x09c1, 0x09c8, - 0x09cd, 0x09da, 0x09e7, 0x09eb, 0x09ef, 0x09f5, 0x09fa, 0x0a00, - 0x0a07, 0x0a1e, 0x0a24, 0x0a2a, 0x0a31, 0x0a3e, 0x0a4a, 0x0a50, - 0x0a5b, 0x0a61, 0x0a67, 0x0a6a, 0x0a6f, 0x0a73, 0x0a7c, 0x0a83, - 0x0a87, 0x0a8e, 0x0a9a, 0x0aa1, 0x0aa5, 0x0aad, 0x0ab2, 0x0abb, - 0x0ac7, 0x0acd, 0x0ad6, 0x0ada, 0x0ae2, 0x0aea, 0x0af6, 0x0afd, - 0x0b05, 0x0b0b, 0x0b1a, 0x0b1e, 0x0b27, 0x0b2f, 0x0b35, 0x0b3d, - 0x0b42, 0x0b4b, 0x0b50, 0x0b57, 0x0b5d, 0x0b62, 0x0b68, 0x0b6d, - // Entry 180 - 1BF - 0x0b75, 0x0b87, 0x0b8f, 0x0b97, 0x0b9d, 0x0ba4, 0x0ba9, 0x0bb9, - 0x0bbd, 0x0bca, 0x0bd3, 0x0bdd, 0x0be4, 0x0be9, 0x0bec, 0x0bf0, - 0x0bf5, 0x0c05, 0x0c08, 0x0c10, 0x0c14, 0x0c1a, 0x0c22, 0x0c29, - 0x0c31, 0x0c36, 0x0c3a, 0x0c40, 0x0c46, 0x0c4b, 0x0c4f, 0x0c57, - 0x0c63, 0x0c71, 0x0c77, 0x0c7e, 0x0c89, 0x0c8f, 0x0c97, 0x0c9d, - 0x0ca2, 0x0cae, 0x0cb5, 0x0cc7, 0x0ccc, 0x0cd5, 0x0cdc, 0x0ce4, - 0x0ce9, 0x0cee, 0x0cf9, 0x0d08, 0x0d12, 0x0d16, 0x0d20, 0x0d26, - 0x0d2a, 0x0d30, 0x0d37, 0x0d3d, 0x0d46, 0x0d4b, 0x0d54, 0x0d5a, - // Entry 1C0 - 1FF - 0x0d60, 0x0d6e, 0x0d72, 0x0d82, 0x0d8a, 0x0d92, 0x0d97, 0x0d9c, - 0x0da1, 0x0db0, 0x0dba, 0x0dc1, 0x0dc9, 0x0dd3, 0x0dda, 0x0de0, - 0x0def, 0x0e02, 0x0e0e, 0x0e19, 0x0e28, 0x0e32, 0x0e3d, 0x0e43, - 0x0e4c, 0x0e54, 0x0e62, 0x0e6b, 0x0e86, 0x0e90, 0x0e97, 0x0ea1, - 0x0ea9, 0x0eb0, 0x0eb5, 0x0ebb, 0x0ec2, 0x0ec7, 0x0ece, 0x0ed7, - 0x0eda, 0x0ee1, 0x0ee6, 0x0ef7, 0x0efe, 0x0f03, 0x0f0a, 0x0f14, - 0x0f1b, 0x0f20, 0x0f28, 0x0f2d, 0x0f40, 0x0f50, 0x0f56, 0x0f5a, - 0x0f5e, 0x0f64, 0x0f73, 0x0f7c, 0x0f86, 0x0f8f, 0x0f93, 0x0fa1, - // Entry 200 - 23F - 0x0fa7, 0x0fb5, 0x0fbc, 0x0fc9, 0x0fd2, 0x0fdc, 0x0fe6, 0x0fed, - 0x0ff4, 0x1000, 0x1005, 0x1009, 0x101a, 0x1020, 0x1024, 0x102c, - 0x1034, 0x1044, 0x104a, 0x1052, 0x1056, 0x105b, 0x105f, 0x1065, - 0x106a, 0x106f, 0x1072, 0x1079, 0x1080, 0x1087, 0x108e, 0x1094, - 0x109c, 0x10a7, 0x10b0, 0x10b6, 0x10bc, 0x10c5, 0x10ce, 0x10d8, - 0x10df, 0x10e5, 0x10ec, 0x10f4, 0x110b, 0x1111, 0x1119, 0x1120, - 0x1130, 0x1133, 0x113b, 0x113f, 0x114b, 0x115a, 0x115f, 0x1164, - 0x1169, 0x116f, 0x1177, 0x117c, 0x1181, 0x1189, 0x1193, 0x1199, - // Entry 240 - 27F - 0x11a3, 0x11a7, 0x11aa, 0x11b0, 0x11b7, 0x11bc, 0x11c5, 0x11ce, - 0x11d5, 0x11e0, 0x11e9, 0x11ef, 0x120a, 0x120e, 0x1223, 0x1227, - 0x123d, 0x123d, 0x124c, 0x125d, 0x126f, 0x127f, 0x128e, 0x129e, - 0x12b4, 0x12c4, 0x12d3, 0x12d7, 0x12e6, 0x12f2, 0x12fb, 0x1302, - 0x1316, 0x1329, 0x1332, 0x1340, 0x134d, 0x135f, 0x1372, -} // Size: 1254 bytes - -const enGBLangStr string = "West Low German" - -var enGBLangIdx = []uint16{ // 607 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 140 - 17F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 180 - 1BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 1C0 - 1FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 200 - 23F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 240 - 27F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, -} // Size: 1238 bytes - -const esLangStr string = "" + // Size: 4366 bytes - "afarabjasioavésticoafrikáansakanamáricoaragonésárabeasamésavaraimaraazer" + - "baiyanobaskirbielorrusobúlgarobislamabambarabengalítibetanobretónbosnioc" + - "atalánchechenochamorrocorsocreechecoeslavo eclesiásticochuvasiogalésdané" + - "salemándivehidzongkhaewégriegoinglésesperantoespañolestonioeuskerapersaf" + - "ulafinésfiyianoferoésfrancésfrisón occidentalirlandésgaélico escocésgall" + - "egoguaraníguyaratímanéshausahebreohindihiri motucroatacriollo haitianohú" + - "ngaroarmeniohererointerlinguaindonesiointerlingueigboyi de Sichuáninupia" + - "qidoislandésitalianoinuktitutjaponésjavanésgeorgianokongokikuyukuanyamak" + - "azajogroenlandésjemercanaréscoreanokanuricachemirokurdokomicórnicokirguí" + - "slatínluxemburguésgandalimburguéslingalalaolituanoluba-katangaletónmalga" + - "chemarshalésmaorímacedoniomalayalammongolmaratímalayomaltésbirmanonaurua" + - "nondebele septentrionalnepalíndonganeerlandésnoruego nynorsknoruego bokm" + - "alndebele meridionalnavajonyanjaoccitanoojibwaoromooriyaoséticopanyabípa" + - "lipolacopastúnportuguésquechuaromanchekirundirumanorusokinyarwandasánscr" + - "itosardosindhisami septentrionalsangocingaléseslovacoeslovenosamoanoshon" + - "asomalíalbanésserbiosuazisesotho meridionalsundanéssuecosuajilitamiltelu" + - "gutayikotailandéstigriñaturcomanosetsuanatonganoturcotsongatártarotahiti" + - "anouigurucranianourduuzbekovendavietnamitavolapükvalónwólofxhosayidisyor" + - "ubazhuangchinozulúacehnésacoliadangmeadiguéafrihiliaghemainuacadioaleuti" + - "anoaltái meridionalinglés antiguoangikaarameomapuchearapahoarahuacoasuas" + - "turianoavadhibaluchibalinésbasaabamúnghomalabejabembabenabafutbaluchi oc" + - "cidentalbhoyapuríbicolbinikomsiksikabrajbodoakooseburiatobuginésbulublin" + - "medumbacaddocaribecayugaatsamcebuanochigachibchachagatáitrukésmaríjerga " + - "chinukchoctawchipewyancheroquicheyenekurdo soranicoptotártaro de Crimeac" + - "riollo seychelensecasubiodakotadargvataitadelawareslavedogribdinkazarmad" + - "ogribajo sorbiodualaneerlandés mediojola-fonyidiuladazagaembuefikegipcio" + - " antiguoekajukelamitainglés medioewondofangfilipinofonfrancés cajúnfranc" + - "és mediofrancés antiguofrisón septentrionalfrisón orientalfriulanogagag" + - "auzochino gangayogbayageezgilbertésalto alemán medioalto alemán antiguog" + - "ondigorontalogóticogrebogriego antiguoalemán suizogusiikutchinhaidachino" + - " hakkahawaianohiligaynonhititahmongalto sorbiochino xianghupaibanibibioi" + - "locanoingushlojbanngombamachamejudeo-persajudeo-árabekarakalpakocabilaka" + - "chinjjukambakawikabardianokanembutyapmakondecriollo caboverdianokorokhas" + - "ikotanéskoyra chiinikakokalenjinkimbundukomi permiokonkaníkosraeanokpell" + - "ekarachay-balkarcareliokurukhshambalabafiakölschkumykkutenailadinolangil" + - "ahndalambalezgianolakotamongocriollo de Luisianalozilorí septentrionallu" + - "ba-lulualuiseñolundaluomizoluyiamadurésmafamagahimaithilimacasarmandingo" + - "masáimabamokshamandarmendemerucriollo mauricianoirlandés mediomakhuwa-me" + - "ettometa’micmacminangkabaumanchúmanipurimohawkmossimundangvarios idiomas" + - "creekmirandésmarwarimyeneerzyamazandaraníchino min nannapolitanonamabajo" + - " alemánnewariniasniueanokwasiongiemboonnogainórdico antiguon’kosesotho s" + - "eptentrionalnuernewari clásiconyamwezinyankolenyoronzimaosageturco otoma" + - "nopangasinánpahlavipampangapapiamentopalauanopidgin de Nigeriapersa anti" + - "guofeniciopohnpeianoprusianoprovenzal antiguoquichérajasthanirapanuiraro" + - "tonganoromboromaníarrumanorwasandawesakhaarameo samaritanosamburusasaksa" + - "ntalingambaysangusicilianoescocéskurdo meridionalsenecasenaselkupkoyrabo" + - "ro senniirlandés antiguotashelhitshanárabe chadianosidamosami meridional" + - "sami lulesami inarisami skoltsoninkésogdianosranan tongoserersahosukumas" + - "ususumeriocomorensesiríaco clásicosiriacotemnetesoterenotetúntigrétivtok" + - "elauanoklingontlingittamashektonga del Nyasatok pisintarokotsimshianotum" + - "bukatuvaluanotasawaqtuvinianotamazight del Atlas Centraludmurtugaríticou" + - "mbundulengua desconocidavaivóticovunjowalserwolaytawaraywashowarlpirichi" + - "no wukalmyksogayaoyapésyangbenyembacantonészapotecosímbolos Blisszenagat" + - "amazight estándar marroquízuñisin contenido lingüísticozazakiárabe están" + - "dar modernoalemán austríacoalto alemán suizoinglés australianoinglés can" + - "adienseinglés británicoinglés estadounidenseespañol latinoamericanoespañ" + - "ol de Españaespañol de Méxicofrancés canadiensefrancés suizobajo sajónfl" + - "amencoportugués de Brasilportugués de Portugalmoldavoserbocroatasuajili " + - "del Congochino simplificadochino tradicional" - -var esLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000b, 0x0014, 0x001e, 0x0022, 0x002a, 0x0033, - 0x0039, 0x0040, 0x0044, 0x004a, 0x0055, 0x005b, 0x0065, 0x006d, - 0x0074, 0x007b, 0x0083, 0x008b, 0x0092, 0x0098, 0x00a0, 0x00a8, - 0x00b0, 0x00b5, 0x00b9, 0x00be, 0x00d2, 0x00da, 0x00e0, 0x00e6, - 0x00ed, 0x00f3, 0x00fb, 0x00ff, 0x0105, 0x010c, 0x0115, 0x011d, - 0x0124, 0x012b, 0x0130, 0x0134, 0x013a, 0x0141, 0x0148, 0x0150, - 0x0162, 0x016b, 0x017c, 0x0183, 0x018b, 0x0194, 0x019a, 0x019f, - 0x01a5, 0x01aa, 0x01b3, 0x01b9, 0x01c9, 0x01d1, 0x01d8, 0x01de, - // Entry 40 - 7F - 0x01e9, 0x01f2, 0x01fd, 0x0201, 0x020f, 0x0216, 0x0219, 0x0222, - 0x022a, 0x0233, 0x023b, 0x0243, 0x024c, 0x0251, 0x0257, 0x025f, - 0x0265, 0x0271, 0x0276, 0x027e, 0x0285, 0x028b, 0x0294, 0x0299, - 0x029d, 0x02a5, 0x02ad, 0x02b3, 0x02c0, 0x02c5, 0x02d0, 0x02d7, - 0x02da, 0x02e1, 0x02ed, 0x02f3, 0x02fb, 0x0305, 0x030b, 0x0314, - 0x031d, 0x0323, 0x032a, 0x0330, 0x0337, 0x033e, 0x0346, 0x035b, - 0x0362, 0x0368, 0x0373, 0x0382, 0x0390, 0x03a2, 0x03a8, 0x03ae, - 0x03b6, 0x03bc, 0x03c1, 0x03c6, 0x03ce, 0x03d6, 0x03da, 0x03e0, - // Entry 80 - BF - 0x03e7, 0x03f1, 0x03f8, 0x0400, 0x0407, 0x040d, 0x0411, 0x041c, - 0x0426, 0x042b, 0x0431, 0x0443, 0x0448, 0x0451, 0x0459, 0x0461, - 0x0468, 0x046d, 0x0474, 0x047c, 0x0482, 0x0487, 0x0499, 0x04a2, - 0x04a7, 0x04ae, 0x04b3, 0x04b9, 0x04bf, 0x04c9, 0x04d1, 0x04da, - 0x04e2, 0x04e9, 0x04ee, 0x04f4, 0x04fc, 0x0505, 0x050a, 0x0513, - 0x0517, 0x051d, 0x0522, 0x052c, 0x0534, 0x053a, 0x0540, 0x0545, - 0x054a, 0x0550, 0x0556, 0x055b, 0x0560, 0x0568, 0x056d, 0x0574, - 0x057b, 0x057b, 0x0583, 0x0588, 0x058c, 0x0592, 0x0592, 0x059b, - // Entry C0 - FF - 0x059b, 0x05ac, 0x05bb, 0x05c1, 0x05c7, 0x05ce, 0x05ce, 0x05d5, - 0x05d5, 0x05d5, 0x05dd, 0x05dd, 0x05dd, 0x05e0, 0x05e0, 0x05e9, - 0x05e9, 0x05ef, 0x05f6, 0x05fe, 0x05fe, 0x0603, 0x0609, 0x0609, - 0x0610, 0x0614, 0x0619, 0x0619, 0x061d, 0x0622, 0x0622, 0x0634, - 0x063e, 0x0643, 0x0647, 0x0647, 0x064a, 0x0651, 0x0651, 0x0651, - 0x0655, 0x0655, 0x0659, 0x065f, 0x0666, 0x066e, 0x0672, 0x0676, - 0x067d, 0x0682, 0x0688, 0x068e, 0x0693, 0x0693, 0x069a, 0x069f, - 0x06a6, 0x06af, 0x06b6, 0x06bb, 0x06c7, 0x06ce, 0x06d7, 0x06df, - // Entry 100 - 13F - 0x06e6, 0x06f2, 0x06f7, 0x06f7, 0x0709, 0x071c, 0x0723, 0x0729, - 0x072f, 0x0734, 0x073c, 0x0741, 0x0747, 0x074c, 0x0751, 0x0756, - 0x0761, 0x0761, 0x0766, 0x0777, 0x0781, 0x0786, 0x078c, 0x0790, - 0x0794, 0x0794, 0x07a3, 0x07a9, 0x07b0, 0x07bd, 0x07bd, 0x07c3, - 0x07c3, 0x07c7, 0x07cf, 0x07cf, 0x07d2, 0x07e1, 0x07ef, 0x07ff, - 0x07ff, 0x0814, 0x0824, 0x082c, 0x082e, 0x0835, 0x083e, 0x0842, - 0x0847, 0x0847, 0x084b, 0x0855, 0x0855, 0x0867, 0x087b, 0x087b, - 0x0880, 0x0889, 0x0890, 0x0895, 0x08a3, 0x08b0, 0x08b0, 0x08b0, - // Entry 140 - 17F - 0x08b5, 0x08bc, 0x08c1, 0x08cc, 0x08d4, 0x08d4, 0x08de, 0x08e4, - 0x08e9, 0x08f4, 0x08ff, 0x0903, 0x0907, 0x090d, 0x0914, 0x091a, - 0x091a, 0x091a, 0x0920, 0x0926, 0x092d, 0x0938, 0x0944, 0x0944, - 0x094f, 0x0955, 0x095b, 0x095e, 0x0963, 0x0967, 0x0971, 0x0978, - 0x097c, 0x0983, 0x0997, 0x0997, 0x099b, 0x099b, 0x09a0, 0x09a8, - 0x09b4, 0x09b4, 0x09b4, 0x09b8, 0x09c0, 0x09c8, 0x09d3, 0x09db, - 0x09e4, 0x09ea, 0x09f9, 0x09f9, 0x09f9, 0x0a00, 0x0a06, 0x0a0e, - 0x0a13, 0x0a1a, 0x0a1f, 0x0a26, 0x0a2c, 0x0a31, 0x0a37, 0x0a3c, - // Entry 180 - 1BF - 0x0a44, 0x0a44, 0x0a44, 0x0a44, 0x0a4a, 0x0a4a, 0x0a4f, 0x0a62, - 0x0a66, 0x0a79, 0x0a79, 0x0a83, 0x0a8b, 0x0a90, 0x0a93, 0x0a97, - 0x0a9c, 0x0a9c, 0x0a9c, 0x0aa4, 0x0aa8, 0x0aae, 0x0ab6, 0x0abd, - 0x0ac5, 0x0acb, 0x0acf, 0x0ad5, 0x0adb, 0x0ae0, 0x0ae4, 0x0af6, - 0x0b05, 0x0b13, 0x0b1a, 0x0b20, 0x0b2b, 0x0b32, 0x0b3a, 0x0b40, - 0x0b45, 0x0b45, 0x0b4c, 0x0b5a, 0x0b5f, 0x0b68, 0x0b6f, 0x0b6f, - 0x0b74, 0x0b79, 0x0b85, 0x0b92, 0x0b9c, 0x0ba0, 0x0bac, 0x0bb2, - 0x0bb6, 0x0bbd, 0x0bbd, 0x0bc3, 0x0bcc, 0x0bd1, 0x0be1, 0x0be1, - // Entry 1C0 - 1FF - 0x0be7, 0x0bfc, 0x0c00, 0x0c0f, 0x0c17, 0x0c1f, 0x0c24, 0x0c29, - 0x0c2e, 0x0c3b, 0x0c46, 0x0c4d, 0x0c55, 0x0c5f, 0x0c67, 0x0c67, - 0x0c78, 0x0c78, 0x0c78, 0x0c85, 0x0c85, 0x0c8c, 0x0c8c, 0x0c8c, - 0x0c96, 0x0c9e, 0x0caf, 0x0cb6, 0x0cb6, 0x0cc0, 0x0cc7, 0x0cd2, - 0x0cd2, 0x0cd2, 0x0cd7, 0x0cde, 0x0cde, 0x0cde, 0x0cde, 0x0ce6, - 0x0ce9, 0x0cf0, 0x0cf5, 0x0d06, 0x0d0d, 0x0d12, 0x0d19, 0x0d19, - 0x0d20, 0x0d25, 0x0d2e, 0x0d36, 0x0d36, 0x0d46, 0x0d4c, 0x0d50, - 0x0d50, 0x0d56, 0x0d65, 0x0d76, 0x0d76, 0x0d7f, 0x0d83, 0x0d92, - // Entry 200 - 23F - 0x0d98, 0x0d98, 0x0d98, 0x0da7, 0x0db0, 0x0dba, 0x0dc4, 0x0dcc, - 0x0dd4, 0x0de0, 0x0de5, 0x0de9, 0x0de9, 0x0def, 0x0df3, 0x0dfa, - 0x0e03, 0x0e14, 0x0e1b, 0x0e1b, 0x0e1b, 0x0e20, 0x0e24, 0x0e2a, - 0x0e30, 0x0e36, 0x0e39, 0x0e43, 0x0e43, 0x0e4a, 0x0e51, 0x0e51, - 0x0e59, 0x0e68, 0x0e71, 0x0e71, 0x0e77, 0x0e77, 0x0e81, 0x0e81, - 0x0e88, 0x0e91, 0x0e98, 0x0ea1, 0x0ebc, 0x0ec2, 0x0ecc, 0x0ed3, - 0x0ee5, 0x0ee8, 0x0ee8, 0x0ee8, 0x0ee8, 0x0ee8, 0x0eef, 0x0eef, - 0x0ef4, 0x0efa, 0x0f01, 0x0f06, 0x0f0b, 0x0f13, 0x0f1b, 0x0f21, - // Entry 240 - 27F - 0x0f21, 0x0f25, 0x0f28, 0x0f2e, 0x0f35, 0x0f3a, 0x0f3a, 0x0f43, - 0x0f4b, 0x0f5a, 0x0f5a, 0x0f60, 0x0f7d, 0x0f82, 0x0f9d, 0x0fa3, - 0x0fbb, 0x0fbb, 0x0fcd, 0x0fdf, 0x0ff2, 0x1004, 0x1016, 0x102c, - 0x1044, 0x1057, 0x106a, 0x106a, 0x107d, 0x108b, 0x1096, 0x109e, - 0x10b2, 0x10c8, 0x10cf, 0x10da, 0x10eb, 0x10fd, 0x110e, -} // Size: 1254 bytes - -const es419LangStr string = "" + // Size: 301 bytes - "vascogujaratihaitianolaosianondebele del surretorrománicosesotho del sur" + - "swahiliachenésadigeoaltái del surarapajósiksikáfonalemán de la alta edad" + - " antiguagriego clásicocabardianoluoprusiano antiguoárabe (Chad)sami del " + - "sursiríacotetuntamazight del Marruecos Centralvaiwalamowuzuniswahili (Co" + - "ngo)" - -var es419LangIdx = []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 40 - 7F - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - // Entry 80 - BF - 0x002c, 0x002c, 0x002c, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0049, 0x0049, - 0x0049, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0058, 0x0058, 0x0058, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - // Entry C0 - FF - 0x005e, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x007c, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - // Entry 100 - 13F - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007f, 0x007f, 0x007f, 0x007f, - 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, - 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x009e, 0x009e, - 0x009e, 0x009e, 0x009e, 0x009e, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - // Entry 140 - 17F - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b7, 0x00b7, - 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, - 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, - 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, - 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, - // Entry 180 - 1BF - 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, - 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - // Entry 1C0 - 1FF - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00d7, - // Entry 200 - 23F - 0x00d7, 0x00d7, 0x00d7, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, 0x00e3, - 0x00e3, 0x00e3, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x010f, 0x010f, 0x010f, 0x010f, - 0x010f, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x0118, 0x0118, 0x0118, 0x0118, 0x011a, 0x011a, - // Entry 240 - 27F - 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x012d, -} // Size: 1250 bytes - -const etLangStr string = "" + // Size: 4649 bytes - "afariabhaasiavestaafrikaaniakaniamharaaragoniaraabiaassamiavaariaimaraas" + - "erbaidžaanibaškiirivalgevenebulgaariabislamabambarabengalitiibetibretoon" + - "ibosniakatalaanitšetšeenitšamorrokorsikakriitšehhikirikuslaavitšuvašikõm" + - "ritaanisaksamaldiividzongkhaevekreekaingliseesperantohispaaniaeestibaski" + - "pärsiafulasoomefidžifääriprantsuseläänefriisiiirigaeligaleegiguaraniigud" + - "žaratimänksihausaheebreahindihirimotuhorvaadihaitiungariarmeeniahereroi" + - "nterlinguaindoneesiainterlingueiboSichuani jiiinjupiakiidoislandiitaalia" + - "inuktitutijaapanijaavagruusiakongokikujukvanjamakasahhigröönikhmeerikann" + - "adakoreakanurikašmiirikurdikomikornikirgiisiladinaletseburgigandalimburg" + - "ilingalalaoleedulubalätimalagassimaršallimaoorimakedooniamalajalamimongo" + - "limarathimalaimaltabirmanaurupõhjandebelenepalindongahollandiuusnorranor" + - "ra bokmållõunandebelenavahonjandžaoksitaaniodžibveioromooriaosseedipandž" + - "abipaalipoolapuštuportugaliketšuaromanširundirumeeniaveneruandasanskriti" + - "sardisindhipõhjasaamisangosingalislovakisloveenisamoašonasomaalialbaania" + - "serbiasvaasilõunasothosundarootsisuahiilitamilitelugutadžikitaitigrinjat" + - "ürkmeenitsvanatongatürgitsongatataritahitiuiguuriukrainaurduusbekivenda" + - "vietnamivolapükivalloonivolofikoosajidišijorubatšuangihiinasuuluatšehiat" + - "šoliadangmeadõgeeTuneesia araabiaafrihiliaghemiainuakadialabamaaleuudig" + - "eegialtaivanaingliseangikaarameamapudunguniaraonaarapahoAlžeeria araabia" + - "aravakiMaroko araabiaEgiptuse araabiaasuAmeerika viipekeelastuuriaavadhi" + - "belutšibalibaieribasaabamunibatakighomalabedžabembabetavibenabafutibadag" + - "aläänebelutšibhodžpuribikoliedobandžarikomi (Aafrika)mustjalaindiaanibiš" + - "nuprijabahtiaribradžibrahuibodoakooseburjaadibugibulubilinimedumbakadoka" + - "riibikajukaaitšamisebutšigatšibtšatšagataitšuugimaritšinuki žargoontšokt" + - "otšipevaitšerokiišaieenisoranikoptikapisnonikrimmitatariseišellikašuubis" + - "iuudargidavidadelavarisleividogribidinkazarmadogrialamsorbikeskdusunidua" + - "lakeskhollandifonjidjuladazaembuefikiemiiliaegiptuseekadžukieelamikeskin" + - "glisekeskjupikievondoestremenjufangifilipiinimeäfonicajun’ikeskprantsuse" + - "vanaprantsusefrankoprovansipõhjafriisiidafriisifriuuligaagagauusikanigaj" + - "ogbajaetioopiakiribatigilakikeskülemsaksavanaülemsaksagondigorontalogoot" + - "igrebovanakreekašveitsisaksavajuufarefaregusiigvitšinihaidahakkahavaiFid" + - "ži hindihiligainonihetihmongiülemsorbisjangihupaibaniibibioilokoingušii" + - "suriJamaica kreoolkeelložbanngombamatšamejuudipärsiajuudiaraabiajüütikar" + - "akalpakikabiilikatšinijjukambakaavikabardi-tšerkessikanembutjapimakondek" + - "abuverdianukorokaingangikhasisakakoyra chiinikhovarikõrmandžkikakokalend" + - "žinimbundupermikomikonkanikosraekpellekaratšai-balkaarikriokinaraiakarj" + - "alakuruhhišambalabafiakölnikumõkikutenailadiinolangilahndalambalesgiligu" + - "uriliivilakotalombardimongoLouisiana kreoolkeellozipõhjalurilatgalilulua" + - "luisenjolundaluolušeiluhjaklassikaline hiinalazimaduramafamagahimaithili" + - "makassarimalinkemasaimabamokšamandarimendemeruMauritiuse kreoolkeelkeski" + - "irimakhuwa-meettometamikmakiminangkabaumandžumanipurimohoogimoremäemarim" + - "undangimitu keeltmaskogimirandamarvarimentaveimjeneersamazandaraanilõuna" + - "mininapolinamaalamsaksanevariniasiniueaokwasiongiembooninogaivanapõhjala" + - "noviaalnkoopõhjasothonuerivananevarinjamvesinkolenjoronzimaoseidžiosmani" + - "türgipangasinanipahlavipampangapapiamentobelaupikardiNigeeria pidžinkeel" + - "Pennsylvania saksamennoniidisaksavanapärsiaPfalzifoiniikiapiemontepontos" + - "epoonpeipreisivanaprovansikitšeradžastanirapanuirarotongaromanjariifirom" + - "bomustlaskeelrotumarussiinirovianaaromuunirvaasandavejakuudiSamaaria ara" + - "measamburusasakisantalisauraštrangambaisangusitsiiliašotilõunakurdisenek" + - "asenaserisölkupikoyraboro sennivanaiirižemaidišilhašaniTšaadi araabiasid" + - "amoalamsileesiaselajarilõunasaamiLule saamiInari saamikoltasaamisoninkes" + - "ogdisrananisererisahosaterfriisisukumasususumerikomoorivanasüüriasüürias" + - "ileesiatulutemnetesoterenotetumitigreetivitokelautsahhiklingonitlingitit" + - "alõšitamašekitšitongauusmelaneesiaturojotarokotsakooniatšimšilõunataadit" + - "umbukatuvalutaswaqitõvatamasiktiudmurdiugaritiumbundumääramata keelvaive" + - "netivepsalääneflaamiMaini frangivadjavõruvundžowalserivolaitavaraivašova" + - "rlpiriuukalmõkimegrelisogajaojapiyangbenijembanjengatukantonisapoteegiBl" + - "issi sümbolidzeelandizenagatamasikti (Maroko)sunjimittekeelelinezazaaraa" + - "bia (tänapäevane)Austria saksaŠveitsi ülemsaksaAustraalia ingliseKanada " + - "ingliseBriti ingliseAmeerika ingliseLadina-Ameerika hispaaniaEuroopa his" + - "paaniaMehhiko hispaaniaKanada prantsuseŠveitsi prantsuseHollandi alamsak" + - "saflaamiBrasiilia portugaliEuroopa portugalimoldovaserbia-horvaadiKongo " + - "suahiililihtsustatud hiinatraditsiooniline hiina" - -var etLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x000c, 0x0012, 0x001b, 0x0020, 0x0026, 0x002d, - 0x0034, 0x003a, 0x0040, 0x0046, 0x0054, 0x005d, 0x0066, 0x006f, - 0x0076, 0x007d, 0x0084, 0x008b, 0x0093, 0x0099, 0x00a2, 0x00ad, - 0x00b6, 0x00bd, 0x00c1, 0x00c8, 0x00d4, 0x00dd, 0x00e3, 0x00e8, - 0x00ed, 0x00f5, 0x00fd, 0x0100, 0x0106, 0x010d, 0x0116, 0x011f, - 0x0124, 0x0129, 0x0130, 0x0134, 0x0139, 0x013f, 0x0146, 0x014f, - 0x015c, 0x0160, 0x0165, 0x016c, 0x0174, 0x017e, 0x0185, 0x018a, - 0x0191, 0x0196, 0x019e, 0x01a6, 0x01ab, 0x01b1, 0x01b9, 0x01bf, - // Entry 40 - 7F - 0x01ca, 0x01d4, 0x01df, 0x01e2, 0x01ee, 0x01f7, 0x01fa, 0x0201, - 0x0208, 0x0212, 0x0219, 0x021e, 0x0225, 0x022a, 0x0230, 0x0238, - 0x023f, 0x0247, 0x024e, 0x0255, 0x025a, 0x0260, 0x0269, 0x026e, - 0x0272, 0x0277, 0x027f, 0x0285, 0x028f, 0x0294, 0x029c, 0x02a3, - 0x02a6, 0x02ab, 0x02af, 0x02b4, 0x02bd, 0x02c6, 0x02cc, 0x02d6, - 0x02e0, 0x02e7, 0x02ee, 0x02f3, 0x02f8, 0x02fd, 0x0302, 0x030f, - 0x0315, 0x031b, 0x0323, 0x032b, 0x0338, 0x0345, 0x034b, 0x0353, - 0x035c, 0x0365, 0x036a, 0x036e, 0x0375, 0x037e, 0x0383, 0x0388, - // Entry 80 - BF - 0x038e, 0x0397, 0x039e, 0x03a6, 0x03ab, 0x03b3, 0x03b7, 0x03bd, - 0x03c6, 0x03cb, 0x03d1, 0x03dc, 0x03e1, 0x03e8, 0x03ef, 0x03f7, - 0x03fc, 0x0401, 0x0408, 0x0410, 0x0416, 0x041c, 0x0427, 0x042c, - 0x0432, 0x043a, 0x0440, 0x0446, 0x044e, 0x0451, 0x0459, 0x0463, - 0x0469, 0x046e, 0x0474, 0x047a, 0x0480, 0x0486, 0x048d, 0x0494, - 0x0498, 0x049e, 0x04a3, 0x04ab, 0x04b4, 0x04bc, 0x04c2, 0x04c7, - 0x04ce, 0x04d4, 0x04dc, 0x04e1, 0x04e6, 0x04ed, 0x04f4, 0x04fb, - 0x0502, 0x0512, 0x051a, 0x0520, 0x0524, 0x0529, 0x0530, 0x0537, - // Entry C0 - FF - 0x053c, 0x0541, 0x054c, 0x0552, 0x0558, 0x0563, 0x0569, 0x0570, - 0x0581, 0x0581, 0x0588, 0x0596, 0x05a6, 0x05a9, 0x05bb, 0x05c3, - 0x05c3, 0x05c9, 0x05d1, 0x05d5, 0x05db, 0x05e0, 0x05e6, 0x05ec, - 0x05f3, 0x05f9, 0x05fe, 0x0604, 0x0608, 0x060e, 0x0614, 0x0623, - 0x062d, 0x0633, 0x0636, 0x063f, 0x064d, 0x065d, 0x0668, 0x0670, - 0x0677, 0x067d, 0x0681, 0x0687, 0x068f, 0x0693, 0x0697, 0x069d, - 0x06a4, 0x06a8, 0x06af, 0x06b5, 0x06bd, 0x06bd, 0x06c1, 0x06c7, - 0x06d0, 0x06d9, 0x06e0, 0x06e4, 0x06f5, 0x06fc, 0x0705, 0x070e, - // Entry 100 - 13F - 0x0716, 0x071c, 0x0721, 0x072a, 0x0736, 0x073f, 0x0747, 0x074b, - 0x0750, 0x0756, 0x075e, 0x0764, 0x076b, 0x0770, 0x0775, 0x077a, - 0x0783, 0x078d, 0x0792, 0x079e, 0x07a3, 0x07a8, 0x07ac, 0x07b0, - 0x07b5, 0x07bc, 0x07c4, 0x07cd, 0x07d3, 0x07de, 0x07e8, 0x07ee, - 0x07f8, 0x07fd, 0x0806, 0x080a, 0x080e, 0x0817, 0x0824, 0x0831, - 0x083f, 0x084b, 0x0854, 0x085b, 0x085e, 0x0866, 0x086a, 0x086e, - 0x0873, 0x0873, 0x087b, 0x0883, 0x0889, 0x0897, 0x08a5, 0x08a5, - 0x08aa, 0x08b3, 0x08b8, 0x08bd, 0x08c7, 0x08d4, 0x08d9, 0x08e1, - // Entry 140 - 17F - 0x08e6, 0x08ef, 0x08f4, 0x08f9, 0x08fe, 0x090a, 0x0915, 0x0919, - 0x091f, 0x0929, 0x092f, 0x0933, 0x0938, 0x093e, 0x0943, 0x094a, - 0x094f, 0x0961, 0x0968, 0x096e, 0x0976, 0x0982, 0x098e, 0x0995, - 0x09a0, 0x09a7, 0x09af, 0x09b2, 0x09b7, 0x09bc, 0x09ce, 0x09d5, - 0x09da, 0x09e1, 0x09ed, 0x09ed, 0x09f1, 0x09fa, 0x09ff, 0x0a03, - 0x0a0f, 0x0a16, 0x0a22, 0x0a26, 0x0a31, 0x0a37, 0x0a40, 0x0a47, - 0x0a4d, 0x0a53, 0x0a65, 0x0a69, 0x0a71, 0x0a78, 0x0a7f, 0x0a87, - 0x0a8c, 0x0a92, 0x0a99, 0x0aa0, 0x0aa7, 0x0aac, 0x0ab2, 0x0ab7, - // Entry 180 - 1BF - 0x0abc, 0x0abc, 0x0ac3, 0x0ac8, 0x0ace, 0x0ad6, 0x0adb, 0x0aef, - 0x0af3, 0x0afd, 0x0b04, 0x0b09, 0x0b11, 0x0b16, 0x0b19, 0x0b1f, - 0x0b24, 0x0b36, 0x0b3a, 0x0b40, 0x0b44, 0x0b4a, 0x0b52, 0x0b5b, - 0x0b62, 0x0b67, 0x0b6b, 0x0b71, 0x0b78, 0x0b7d, 0x0b81, 0x0b96, - 0x0b9e, 0x0bac, 0x0bb0, 0x0bb7, 0x0bc2, 0x0bc9, 0x0bd1, 0x0bd8, - 0x0bdc, 0x0be4, 0x0bec, 0x0bf6, 0x0bfd, 0x0c04, 0x0c0b, 0x0c13, - 0x0c18, 0x0c1c, 0x0c28, 0x0c32, 0x0c38, 0x0c3c, 0x0c45, 0x0c4b, - 0x0c50, 0x0c54, 0x0c56, 0x0c5c, 0x0c66, 0x0c6b, 0x0c77, 0x0c7e, - // Entry 1C0 - 1FF - 0x0c82, 0x0c8d, 0x0c92, 0x0c9c, 0x0ca4, 0x0ca9, 0x0cae, 0x0cb3, - 0x0cbb, 0x0cc7, 0x0cd2, 0x0cd9, 0x0ce1, 0x0ceb, 0x0cf0, 0x0cf7, - 0x0d0b, 0x0d1d, 0x0d2c, 0x0d37, 0x0d3d, 0x0d46, 0x0d4e, 0x0d55, - 0x0d5c, 0x0d62, 0x0d6e, 0x0d74, 0x0d74, 0x0d7f, 0x0d86, 0x0d8f, - 0x0d96, 0x0d9b, 0x0da0, 0x0dab, 0x0db1, 0x0db9, 0x0dc0, 0x0dc8, - 0x0dcc, 0x0dd3, 0x0dda, 0x0de9, 0x0df0, 0x0df6, 0x0dfd, 0x0e07, - 0x0e0e, 0x0e13, 0x0e1c, 0x0e21, 0x0e21, 0x0e2c, 0x0e32, 0x0e36, - 0x0e3a, 0x0e42, 0x0e51, 0x0e59, 0x0e61, 0x0e67, 0x0e6c, 0x0e7b, - // Entry 200 - 23F - 0x0e81, 0x0e8d, 0x0e95, 0x0ea0, 0x0eaa, 0x0eb5, 0x0ebf, 0x0ec6, - 0x0ecb, 0x0ed2, 0x0ed8, 0x0edc, 0x0ee7, 0x0eed, 0x0ef1, 0x0ef7, - 0x0efe, 0x0f0a, 0x0f12, 0x0f1a, 0x0f1e, 0x0f23, 0x0f27, 0x0f2d, - 0x0f33, 0x0f39, 0x0f3d, 0x0f44, 0x0f4a, 0x0f52, 0x0f5a, 0x0f62, - 0x0f6b, 0x0f74, 0x0f81, 0x0f87, 0x0f8d, 0x0f96, 0x0f9e, 0x0fa9, - 0x0fb0, 0x0fb6, 0x0fbd, 0x0fc2, 0x0fcb, 0x0fd2, 0x0fd9, 0x0fe0, - 0x0ff0, 0x0ff3, 0x0ff9, 0x0ffe, 0x100b, 0x1017, 0x101c, 0x1021, - 0x1028, 0x102f, 0x1036, 0x103b, 0x1040, 0x1048, 0x104a, 0x1052, - // Entry 240 - 27F - 0x1059, 0x105d, 0x1060, 0x1064, 0x106c, 0x1071, 0x1079, 0x1080, - 0x1089, 0x1099, 0x10a1, 0x10a7, 0x10b9, 0x10be, 0x10cc, 0x10d0, - 0x10e7, 0x10e7, 0x10f4, 0x1107, 0x1119, 0x1127, 0x1134, 0x1144, - 0x115d, 0x116e, 0x117f, 0x117f, 0x118f, 0x11a1, 0x11b3, 0x11b9, - 0x11cc, 0x11dd, 0x11e4, 0x11f3, 0x1201, 0x1213, 0x1229, -} // Size: 1254 bytes - -const faLangStr string = "" + // Size: 8052 bytes - "آفاریآبخازیاوستاییآفریکانسآکانامهریآراگونیعربیآسامیآواریآیماراییترکی آذر" + - "بایجانیباشغیریبلاروسیبلغاریبیسلامابامباراییبنگالیتبتیبرتونبوسنیاییکاتال" + - "انچچنیچاموروییکورسیکریاییچکیاسلاوی کلیساییچوواشیولزیدانمارکیآلمانیدیوهی" + - "جونخاییاوه\u200cاییونانیانگلیسیاسپرانتواسپانیاییاستونیاییباسکیفارسیفولا" + - "ییفنلاندیفیجیاییفاروییفرانسویفریزی غربیایرلندیگیلی اسکاتلندیگالیسیاییگو" + - "ارانیگجراتیمانیهوسیاییعبریهندیموتویی هیریکرواتهائیتیاییمجاریارمنیهریروی" + - "یمیان\u200cزباناندونزیاییاکسیدنتالایگبویییی سیچواناینوپیکایدوایسلندیایت" + - "الیاییاینوکتیتوتژاپنیجاوه\u200cایگرجیکنگوییکیکویوییکوانیاماقزاقیگرینلند" + - "یخمریکاناراکره\u200cایکانوریاییکشمیریکردیکومیاییکرنوالیقرقیزیلاتینلوگزا" + - "مبورگیگانداییلیمبورگیلینگالالائوسیلیتوانیاییلوبایی‐کاتانگالتونیاییمالاگ" + - "اسیاییمارشالیمائوریاییمقدونیمالایالامیمغولیمراتیمالاییمالتیبرمه\u200cای" + - "نائوروییانده\u200cبله\u200cای شمالینپالیاندونگاییهلندینروژی نی\u200cنُش" + - "کنروژی بوک\u200cمُلانده\u200cبله\u200cای جنوبیناواهویینیانجاییاوکیتاییا" + - "وجیبواییاوروموییاوریه\u200cایآسیپنجابیپالیلهستانیپشتوپرتغالیکچواییرومان" + - "شروندیاییرومانیاییروسیکینیاروانداییسانسکریتساردینیاییسندیسامی شمالیسانگ" + - "وسینهالیاسلواکیاسلوونیاییساموآییشوناییسومالیاییآلبانیاییصربیسوازیاییسوت" + - "ویی جنوبیسونداییسوئدیسواحیلیتامیلیتلوگوییتاجیکیتایلندیتیگرینیاییترکمنیت" + - "سواناییتونگاییترکی استانبولیتسونگاییتاتاریتاهیتیاییاویغوریاوکراینیاردوا" + - "زبکیونداییویتنامیولاپوکوالونیولوفیخوسایییدییوروباییچوانگیچینیزولوییآچئی" + - "آچولیاییآدانگمه\u200cایآدیجیاییعربی تونسیآفریهیلیآگیمآینوییاکدیآلابامای" + - "یآلئوتیآلتایی جنوبیانگلیسی باستانآنگیکاآرامیماپوچه\u200cایآراپاهوییعربی" + - " الجزایریآراواکیعربی مراکشیعربی مصریآسوآستوریاودهیبلوچیبالیاییباواریاییب" + - "اساییبمونیبجاییبمباییبناییبلوچی غربیبوجپوریبیکولیبینیسیکسیکالری بختیاری" + - "براجبراهوییبودوییبوریاتیبوگیاییبلینکادوییکاریبیسبوییچیگاچیبچاجغتاییچوکی" + - "ماریاییچوکتوییچیپه\u200cویه\u200cایچروکیاییشایانیکردی مرکزیقبطیترکی کری" + - "مهسیشل آمیختهٔ فرانسویکاشوبیداکوتاییدارقینیتایتادلاواریدوگریبدینکاییزرم" + - "ادوگریصُربی سفلیدوآلاییهلندی میانهدیولا فونیدایولاییدازاگاییامبوافیکیمص" + - "ری کهناکاجوکعیلامیانگلیسی میانهاواندوفانگیفیلیپینیفونیفرانسوی کادینفران" + - "سوی میانهفرانسوی باستانفریزی شمالیفریزی شرقیفریولیاییگاییگاگائوزیاییگای" + - "وییگبایاییدری زرتشتیگی\u200cئزیگیلبرتیگیلکیآلمانی معیار میانهآلمانی علی" + - "ای باستانگوندیگورونتالوگوتیگریبویییونانی کهنآلمانی سوئیسیگوسیگویچ اینها" + - "یداییهاوائیاییهندی فیجیاییهیلی\u200cگاینونیهیتیهمونگصُربی علیاهوپاایبان" + - "یایبیبیوایلوکوییاینگوشیلوجباننگومباماچامه\u200cایفارسی یهودیعربی یهودیق" + - "ره\u200cقالپاقیقبایلیکاچینیجوکامباییکاویاییکاباردینیتیاپیماکوندهکابوورد" + - "یانوکوروخاسیاییختنیکوجراچینیکهوارکرمانجیکاکاییکالنجینکیمبوندوییکومی پرم" + - "یاککنکانیکپله\u200cایقره\u200cچایی‐بالکاریکاریلیانیکوروخیشامبالابافیایی" + - "ریپواریکومیکیکوتنیلادینولانگیلاهندالامبالزگیلاکوتامونگوییزبان آمیختهٔ م" + - "ادری لوئیزیانالوزیاییلری شمالیلوبایی‐لولوالویسنولونداییلوئوییلوشه\u200c" + - "ایلویاچینی ادبیمادوراییماگاهیاییمایدیلیماکاسارماندینگوییماساییمکشاییمان" + - "دارمنده\u200cایمروییموریسینایرلندی میانهماکوا متومتاییمیکماکیمینانگ" + - "\u200cکابوییمانچوییمیته\u200cایموهاکیماسیاییماندانگیچندین زبانکریکیمیران" + - "دیمارواریارزیاییمازندرانیناپلیناماییآلمانی سفلینواریایینیاسینیوییکوازیو" + - "انگیمبونینغایینرس باستاننکوسوتویی شمالینویرنواریایی کلاسیکنیام\u200cوزی" + - "ایینیانکوله\u200cاینیورویینزیماییاوسیجیترکی عثمانیپانگاسینانیپهلویپامپا" + - "نگاییپاپیامنتوپالائویینیم\u200cزبان نیجریه\u200cایآلمانی پنسیلوانیاییفا" + - "رسی باستانفنیقیپانپییپروسیپرووانسی باستانکیچه\u200cراجستانیراپانوییرارو" + - "تونگاییرومبوییرومانوییآرومانیرواییسانداوه\u200cاییاقوتیآرامی سامریسامبو" + - "روساساکیسانتالیانگامباییسانگوییسیسیلیاسکاتلندیکردی جنوبیسناسلکوپیکویراب" + - "ورا سنیایرلندی باستانتاچل\u200cهیتشانیعربی چادیسیداموییسیلزیایی سفلیسام" + - "ی جنوبیلوله سامیایناری سامیاسکولت سامیسونینکه\u200cایسغدیتاکی\u200cتاکی" + - "سریریساهوسوکوماییسوسوییسومریکوموریسریانی کلاسیکسریانیسیلزیاییتمنه\u200c" + - "ایتسوییترنوتتومیتیگره\u200cایتیویکلینگونتلین\u200cگیتیتاماشقیتونگایی نی" + - "اساتوک\u200cپیسینیتاروکوییتسیم\u200cشیانیتومبوکاییتووالوییتسواکیتوواییآ" + - "مازیغی اطلس مرکزیاودمورتیاوگاریتیامبوندوییزبان نامشخصویاییوتیونجووالسرو" + - "الاموواراییواشوییوارلپیریقلموقیسوگایییائویییاپییانگبنییمباییکانتونیزاپو" + - "تکیزناگاآمازیغی معیار مراکشزونیاییبدون محتوای زبانیزازاییعربی رسمیترکی " + - "آذری جنوبیآلمانی اتریشآلمانی معیار سوئیسانگلیسی استرالیاانگلیسی کاناداا" + - "نگلیسی بریتانیاانگلیسی امریکااسپانیایی امریکای لاتیناسپانیایی اروپااسپا" + - "نیایی مکزیکدریفرانسوی کانادافرانسوی سوئیسساکسونی سفلیفلمنگیپرتغالی برزی" + - "لپرتغالی اروپامولداویاییصرب و کرواتیسواحیلی کنگوچینی ساده\u200cشدهچینی " + - "سنتی" - -var faLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000a, 0x0016, 0x0024, 0x0034, 0x003c, 0x0046, 0x0054, - 0x005c, 0x0066, 0x0070, 0x0080, 0x009d, 0x00ab, 0x00b9, 0x00c5, - 0x00d3, 0x00e5, 0x00f1, 0x00f9, 0x0103, 0x0113, 0x0121, 0x0129, - 0x0139, 0x0143, 0x014f, 0x0155, 0x0170, 0x017c, 0x0184, 0x0194, - 0x01a0, 0x01aa, 0x01b8, 0x01c5, 0x01d1, 0x01df, 0x01ef, 0x0201, - 0x0213, 0x021d, 0x0227, 0x0233, 0x0241, 0x024f, 0x025b, 0x0269, - 0x027c, 0x028a, 0x02a5, 0x02b7, 0x02c5, 0x02d1, 0x02d9, 0x02e7, - 0x02ef, 0x02f7, 0x030c, 0x0316, 0x0328, 0x0332, 0x033c, 0x034a, - // Entry 40 - 7F - 0x035d, 0x0371, 0x0383, 0x0391, 0x03a2, 0x03b0, 0x03b8, 0x03c6, - 0x03d8, 0x03ec, 0x03f6, 0x0405, 0x040d, 0x0419, 0x0429, 0x0439, - 0x0443, 0x0453, 0x045b, 0x0467, 0x0474, 0x0486, 0x0492, 0x049a, - 0x04a8, 0x04b6, 0x04c2, 0x04cc, 0x04e2, 0x04f0, 0x0500, 0x050e, - 0x051a, 0x052e, 0x054b, 0x055b, 0x0571, 0x057f, 0x0591, 0x059d, - 0x05b1, 0x05bb, 0x05c5, 0x05d1, 0x05db, 0x05ea, 0x05fa, 0x061d, - 0x0627, 0x0639, 0x0643, 0x065d, 0x0677, 0x069a, 0x06aa, 0x06ba, - 0x06ca, 0x06dc, 0x06ec, 0x06fd, 0x0703, 0x070f, 0x0717, 0x0725, - // Entry 80 - BF - 0x072d, 0x073b, 0x0747, 0x0753, 0x0763, 0x0775, 0x077d, 0x0797, - 0x07a7, 0x07bb, 0x07c3, 0x07d6, 0x07e0, 0x07ee, 0x07fc, 0x0810, - 0x081e, 0x082a, 0x083c, 0x084e, 0x0856, 0x0866, 0x087d, 0x088b, - 0x0895, 0x08a3, 0x08af, 0x08bd, 0x08c9, 0x08d7, 0x08eb, 0x08f7, - 0x0907, 0x0915, 0x0930, 0x0940, 0x094c, 0x095e, 0x096c, 0x097c, - 0x0984, 0x098e, 0x099a, 0x09a8, 0x09b4, 0x09c0, 0x09ca, 0x09d6, - 0x09dc, 0x09ec, 0x09f8, 0x0a00, 0x0a0c, 0x0a14, 0x0a24, 0x0a39, - 0x0a49, 0x0a5c, 0x0a6c, 0x0a74, 0x0a80, 0x0a88, 0x0a9a, 0x0aa6, - // Entry C0 - FF - 0x0aa6, 0x0abd, 0x0ad8, 0x0ae4, 0x0aee, 0x0b01, 0x0b01, 0x0b13, - 0x0b2c, 0x0b2c, 0x0b3a, 0x0b4f, 0x0b60, 0x0b66, 0x0b66, 0x0b72, - 0x0b72, 0x0b7c, 0x0b86, 0x0b94, 0x0ba6, 0x0bb2, 0x0bbc, 0x0bbc, - 0x0bbc, 0x0bc6, 0x0bd2, 0x0bd2, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bef, - 0x0bfd, 0x0c09, 0x0c11, 0x0c11, 0x0c11, 0x0c1f, 0x0c1f, 0x0c34, - 0x0c3c, 0x0c4a, 0x0c56, 0x0c56, 0x0c64, 0x0c72, 0x0c72, 0x0c7a, - 0x0c7a, 0x0c86, 0x0c92, 0x0c92, 0x0c92, 0x0c92, 0x0c9c, 0x0ca4, - 0x0cae, 0x0cba, 0x0cc2, 0x0cd0, 0x0cd0, 0x0cde, 0x0cf6, 0x0d06, - // Entry 100 - 13F - 0x0d12, 0x0d25, 0x0d2d, 0x0d2d, 0x0d40, 0x0d66, 0x0d72, 0x0d82, - 0x0d90, 0x0d9a, 0x0da8, 0x0da8, 0x0db4, 0x0dc2, 0x0dca, 0x0dd4, - 0x0de7, 0x0de7, 0x0df5, 0x0e0a, 0x0e1d, 0x0e2d, 0x0e3d, 0x0e45, - 0x0e4f, 0x0e4f, 0x0e5e, 0x0e6a, 0x0e76, 0x0e8f, 0x0e8f, 0x0e9b, - 0x0e9b, 0x0ea5, 0x0eb5, 0x0eb5, 0x0ebd, 0x0ed6, 0x0eef, 0x0f0a, - 0x0f0a, 0x0f1f, 0x0f32, 0x0f44, 0x0f4c, 0x0f62, 0x0f62, 0x0f6e, - 0x0f7c, 0x0f8f, 0x0f9c, 0x0faa, 0x0fb4, 0x0fd6, 0x0ffa, 0x0ffa, - 0x1004, 0x1016, 0x101e, 0x102c, 0x103f, 0x1058, 0x1058, 0x1058, - // Entry 140 - 17F - 0x1060, 0x106f, 0x107d, 0x107d, 0x108f, 0x10a6, 0x10bf, 0x10c7, - 0x10d1, 0x10e4, 0x10e4, 0x10ec, 0x10f8, 0x1106, 0x1116, 0x1124, - 0x1124, 0x1124, 0x1130, 0x113c, 0x114f, 0x1164, 0x1177, 0x1177, - 0x118e, 0x119a, 0x11a6, 0x11aa, 0x11b8, 0x11c6, 0x11d8, 0x11d8, - 0x11e2, 0x11f0, 0x1206, 0x1206, 0x120e, 0x120e, 0x121c, 0x1224, - 0x1236, 0x1240, 0x124e, 0x125a, 0x1268, 0x127c, 0x1291, 0x129d, - 0x129d, 0x12ac, 0x12ce, 0x12ce, 0x12ce, 0x12e0, 0x12ec, 0x12fa, - 0x1308, 0x1316, 0x1322, 0x132c, 0x1338, 0x1342, 0x134e, 0x1358, - // Entry 180 - 1BF - 0x1360, 0x1360, 0x1360, 0x1360, 0x136c, 0x136c, 0x137a, 0x13af, - 0x13bd, 0x13ce, 0x13ce, 0x13e7, 0x13f3, 0x1401, 0x140d, 0x141c, - 0x1424, 0x1435, 0x1435, 0x1445, 0x1445, 0x1457, 0x1465, 0x1473, - 0x1487, 0x1493, 0x1493, 0x149f, 0x14ab, 0x14ba, 0x14c4, 0x14d2, - 0x14eb, 0x14fc, 0x1506, 0x1514, 0x152f, 0x153d, 0x154c, 0x1558, - 0x1566, 0x1566, 0x1576, 0x1589, 0x1593, 0x15a1, 0x15af, 0x15af, - 0x15af, 0x15bd, 0x15cf, 0x15cf, 0x15d9, 0x15e5, 0x15fa, 0x160a, - 0x1614, 0x161e, 0x161e, 0x162a, 0x163c, 0x1646, 0x1659, 0x1659, - // Entry 1C0 - 1FF - 0x165f, 0x1676, 0x167e, 0x169b, 0x16b2, 0x16c9, 0x16d7, 0x16e5, - 0x16f1, 0x1706, 0x171c, 0x1726, 0x173a, 0x174c, 0x175c, 0x175c, - 0x1781, 0x17a6, 0x17a6, 0x17bd, 0x17bd, 0x17c7, 0x17c7, 0x17c7, - 0x17d3, 0x17dd, 0x17fa, 0x1805, 0x1805, 0x1815, 0x1825, 0x183b, - 0x183b, 0x183b, 0x1849, 0x1859, 0x1859, 0x1859, 0x1859, 0x1867, - 0x1871, 0x1886, 0x1892, 0x18a7, 0x18b5, 0x18c1, 0x18cf, 0x18cf, - 0x18e1, 0x18ef, 0x18fb, 0x190d, 0x190d, 0x1920, 0x1920, 0x1926, - 0x1926, 0x1932, 0x194b, 0x1966, 0x1966, 0x1977, 0x197f, 0x1990, - // Entry 200 - 23F - 0x19a0, 0x19b9, 0x19b9, 0x19cc, 0x19dd, 0x19f2, 0x1a07, 0x1a1c, - 0x1a24, 0x1a37, 0x1a41, 0x1a49, 0x1a49, 0x1a59, 0x1a65, 0x1a6f, - 0x1a7b, 0x1a94, 0x1aa0, 0x1ab0, 0x1ab0, 0x1abf, 0x1ac9, 0x1ad1, - 0x1adb, 0x1aec, 0x1af4, 0x1af4, 0x1af4, 0x1b02, 0x1b15, 0x1b15, - 0x1b23, 0x1b3c, 0x1b51, 0x1b51, 0x1b61, 0x1b61, 0x1b76, 0x1b76, - 0x1b88, 0x1b98, 0x1ba4, 0x1bb0, 0x1bd2, 0x1be2, 0x1bf2, 0x1c04, - 0x1c19, 0x1c23, 0x1c23, 0x1c23, 0x1c23, 0x1c23, 0x1c29, 0x1c29, - 0x1c31, 0x1c3b, 0x1c47, 0x1c53, 0x1c5f, 0x1c6f, 0x1c6f, 0x1c7b, - // Entry 240 - 27F - 0x1c7b, 0x1c87, 0x1c93, 0x1c9b, 0x1ca9, 0x1cb5, 0x1cb5, 0x1cc3, - 0x1cd1, 0x1cd1, 0x1cd1, 0x1cdb, 0x1cff, 0x1d0d, 0x1d2d, 0x1d39, - 0x1d4a, 0x1d66, 0x1d7d, 0x1d9f, 0x1dbe, 0x1dd9, 0x1df8, 0x1e13, - 0x1e3f, 0x1e5c, 0x1e79, 0x1e7f, 0x1e9a, 0x1eb3, 0x1eca, 0x1ed6, - 0x1eef, 0x1f08, 0x1f1c, 0x1f32, 0x1f49, 0x1f63, 0x1f74, -} // Size: 1254 bytes - -const fiLangStr string = "" + // Size: 4770 bytes - "afarabhaasiavestaafrikaansakanamharaaragoniaarabiaassamiavaariaimaraazer" + - "ibaškiirivalkovenäjäbulgariabislamabambarabengalitiibetbretonibosniakata" + - "laanitšetšeenitšamorrokorsikacreetšekkikirkkoslaavitšuvassikymritanskasa" + - "ksadivehidzongkhaewekreikkaenglantiesperantoespanjavirobaskipersiafulani" + - "suomifidžifääriranskalänsifriisiiirigaeligaliciaguaranigudžaratimanksiha" + - "usahepreahindihiri-motukroatiahaitiunkariarmeniahererointerlinguaindones" + - "iainterlingueigbosichuanin-yiinupiaqidoislantiitaliainuktitutjapanijaava" + - "georgiakongokikujukuanjamakazakkikalaallisutkhmerkannadakoreakanurikašmi" + - "rikurdikomikornikirgiisilatinaluxemburggandalimburglingalalaoliettuakata" + - "nganlubalatviamalagassimarshallmaorimakedoniamalajalammongolimarathimala" + - "ijimaltaburmanaurupohjois-ndebelenepalindongahollantinorjan nynorsknorja" + - "n bokmåletelä-ndebelenavajonjandžaoksitaaniodžibwaoromoorijaosseettipand" + - "žabipaalipuolapaštuportugaliketšuaretoromaanirundiromaniavenäjäruandasa" + - "nskritsardisindhipohjoissaamesangosinhalaslovakkisloveenisamoašonasomali" + - "albaniaserbiaswazieteläsothosundaruotsiswahilitamilitelugutadžikkithaiti" + - "grinjaturkmeenitswanatongaturkkitsongatataaritahitiuiguuriukrainaurduuzb" + - "ekkivendavietnamvolapükvalloniwolofxhosajiddišjorubazhuangkiinazuluatšeh" + - "atšoliadangmeadygetunisianarabiaafrihiliaghemainuakkadialabamaaleuttigeg" + - "ialtaimuinaisenglantiangikavaltakunnanarameamapudungunaraonaarapahoalger" + - "ianarabiaarawakmarokonarabiaegyptinarabiaasuamerikkalainen viittomakieli" + - "asturiakotavaawadhibelutšibalibaijeribasaabamumbatak-tobaghomalabedžabem" + - "babetawibenafutbadagalänsibelutšibhodžpuribikolbinibanjarkomsiksikabišnu" + - "priabahtiaribradžbrahuibodokooseburjaattibugibulubilinmedumbacaddokaribi" + - "cayugaatsamcebuanokigatšibtšatšagataichuukmarichinook-jargonchoctawchipe" + - "wyancherokeecheyennesoranikopticapiznonkrimintataariseychellienkreolikaš" + - "ubidakotadargitaitadelawareslevidogribdinkadjermadogrialasorbidusunduala" + - "keskihollantijola-fonyidjuladazagaembuefikemiliamuinaisegyptiekajukelami" + - "keskienglantialaskanjupikewondoextremadurafangfilipinomeänkielifoncajunr" + - "anskakeskiranskamuinaisranskaarpitaanipohjoisfriisiitäfriisifriuligagaga" + - "uzigan-kiinagajogbajazoroastrialaisdarige’ezkiribatigilakikeskiyläsaksam" + - "uinaisyläsaksagoankonkanigondigorontalogoottigrebomuinaiskreikkasveitsin" + - "saksawayuufrafragusiigwitšinhaidahakka-kiinahavaijifidžinhindihiligainoh" + - "eettihmongyläsorbixiang-kiinahupaibanibibioilokoinguušiinkeroinenjamaika" + - "nkreolienglantilojbanngombamachamejuutalaispersiajuutalaisarabiajuuttika" + - "rakalpakkikabyylikatšinjjukambakavikabardikanembutyapmakondekapverdenkre" + - "olikenyangnorsunluurannikonkorokaingangkhasikhotanikoyra chiinikhowarkir" + - "manjkikakokalenjinkimbundukomipermjakkikonkanikosraekpellekaratšai-balka" + - "arikriokinaray-akarjalakurukhshambalabafiakölschkumykkikutenailadinolang" + - "olahndalambalezgilingua franca novaliguuriliivilakotalombardimongolouisi" + - "anankreolilozipohjoislurilatgalliluluanlubaluiseñolundaluolusailuhyaklas" + - "sinen kiinalazimaduramafamagahimaithilimakassarmandingomaasaimabamokšama" + - "ndarmendemerumorisyenkeski-iirimakua-meettometa’micmacminangkabaumantšum" + - "anipurimohawkmossivuorimarimundanguseita kieliäcreekmirandeesimarwarimen" + - "tawaimyeneersämazandaranimin nan -kiinanapolinamaalasaksanewariniasniuea" + - "o nagakwasiongiemboonnogaimuinaisnorjanovialn’kopohjoissothonuerklassine" + - "n newarinyamwezinyankolenyoronzimaosageosmanipangasinanpahlavipampangapa" + - "piamentupalaupicardinigerianpidginpennsylvaniansaksaplautdietschmuinaisp" + - "ersiapfaltsifoinikiapiemontepontoksenkreikkapohnpeimuinaispreussimuinais" + - "provensaalikʼicheʼchimborazonylänköketšuaradžastanirapanuirarotongaromag" + - "nolitarifitromboromanirotumaruteenirovianaaromaniarwasandawejakuuttisama" + - "rianarameasamburusasaksantalisauraštringambaysangusisiliaskottisassarins" + - "ardieteläkurdisenecasenaseriselkuppikoyraboro sennimuinaisiirisamogiitti" + - "tašelhitshantšadinarabiasidamosleesiansaksaselayareteläsaameluulajansaam" + - "einarinsaamekoltansaamesoninkesogdisrananserersahosaterlandinfriisisukum" + - "asususumerikomorimuinaissyyriasyyriasleesiatulutemnetesoterenotetumtigre" + - "tivtokelautsahuriklingontlingittališitamašekmalawintongatok-pisinturojot" + - "arokotsakoniatsimšitatitumbukatuvalutasawaqtuvakeskiatlaksentamazightudm" + - "urttiugaritmbundutuntematon kielivaivenetsiavepsälänsiflaamimaininfrankk" + - "ivatjavõrovunjowalserwolaittawaraywashowarlpiriwu-kiinakalmukkimingrelis" + - "ogajaojapiyangbenyembañeengatúkantoninkiinazapoteekkiblisskieliseelantiz" + - "enagavakioitu tamazightzuniei kielellistä sisältöäzazayleisarabiaitävall" + - "ansaksasveitsinyläsaksaaustralianenglantikanadanenglantibritannianenglan" + - "tiamerikanenglantiamerikanespanjaeuroopanespanjameksikonespanjakanadanra" + - "nskasveitsinranskaalankomaidenalasaksaflaamibrasilianportugalieuroopanpo" + - "rtugalimoldovaserbokroaattikingwanayksinkertaistettu kiinaperinteinen ki" + - "ina" - -var fiLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000b, 0x0011, 0x001a, 0x001e, 0x0024, 0x002c, - 0x0032, 0x0038, 0x003e, 0x0044, 0x0049, 0x0052, 0x005f, 0x0067, - 0x006e, 0x0075, 0x007c, 0x0082, 0x0089, 0x008f, 0x0098, 0x00a3, - 0x00ac, 0x00b3, 0x00b7, 0x00be, 0x00ca, 0x00d3, 0x00d8, 0x00de, - 0x00e3, 0x00e9, 0x00f1, 0x00f4, 0x00fb, 0x0103, 0x010c, 0x0113, - 0x0117, 0x011c, 0x0122, 0x0128, 0x012d, 0x0133, 0x013a, 0x0140, - 0x014c, 0x0150, 0x0155, 0x015c, 0x0163, 0x016d, 0x0173, 0x0178, - 0x017e, 0x0183, 0x018c, 0x0193, 0x0198, 0x019e, 0x01a5, 0x01ab, - // Entry 40 - 7F - 0x01b6, 0x01bf, 0x01ca, 0x01ce, 0x01da, 0x01e1, 0x01e4, 0x01eb, - 0x01f1, 0x01fa, 0x0200, 0x0205, 0x020c, 0x0211, 0x0217, 0x021f, - 0x0226, 0x0231, 0x0236, 0x023d, 0x0242, 0x0248, 0x0250, 0x0255, - 0x0259, 0x025e, 0x0266, 0x026c, 0x0275, 0x027a, 0x0281, 0x0288, - 0x028b, 0x0292, 0x029e, 0x02a4, 0x02ad, 0x02b5, 0x02ba, 0x02c3, - 0x02cc, 0x02d3, 0x02da, 0x02e1, 0x02e6, 0x02eb, 0x02f0, 0x02ff, - 0x0305, 0x030b, 0x0313, 0x0321, 0x032f, 0x033d, 0x0343, 0x034b, - 0x0354, 0x035c, 0x0361, 0x0366, 0x036e, 0x0377, 0x037c, 0x0381, - // Entry 80 - BF - 0x0387, 0x0390, 0x0397, 0x03a2, 0x03a7, 0x03ae, 0x03b6, 0x03bc, - 0x03c4, 0x03c9, 0x03cf, 0x03db, 0x03e0, 0x03e7, 0x03ef, 0x03f7, - 0x03fc, 0x0401, 0x0407, 0x040e, 0x0414, 0x0419, 0x0424, 0x0429, - 0x042f, 0x0436, 0x043c, 0x0442, 0x044b, 0x044f, 0x0457, 0x0460, - 0x0466, 0x046b, 0x0471, 0x0477, 0x047e, 0x0484, 0x048b, 0x0492, - 0x0496, 0x049d, 0x04a2, 0x04a9, 0x04b1, 0x04b8, 0x04bd, 0x04c2, - 0x04c9, 0x04cf, 0x04d5, 0x04da, 0x04de, 0x04e4, 0x04eb, 0x04f2, - 0x04f7, 0x0505, 0x050d, 0x0512, 0x0516, 0x051c, 0x0523, 0x052a, - // Entry C0 - FF - 0x052e, 0x0533, 0x0542, 0x0548, 0x0559, 0x0563, 0x0569, 0x0570, - 0x057e, 0x057e, 0x0584, 0x0591, 0x059e, 0x05a1, 0x05bd, 0x05c4, - 0x05ca, 0x05d0, 0x05d8, 0x05dc, 0x05e3, 0x05e8, 0x05ed, 0x05f7, - 0x05fe, 0x0604, 0x0609, 0x060f, 0x0613, 0x0616, 0x061c, 0x062a, - 0x0634, 0x0639, 0x063d, 0x0643, 0x0646, 0x064d, 0x0657, 0x065f, - 0x0665, 0x066b, 0x066f, 0x0674, 0x067d, 0x0681, 0x0685, 0x068a, - 0x0691, 0x0696, 0x069c, 0x06a2, 0x06a7, 0x06a7, 0x06ae, 0x06b2, - 0x06bb, 0x06c4, 0x06c9, 0x06cd, 0x06db, 0x06e2, 0x06eb, 0x06f3, - // Entry 100 - 13F - 0x06fb, 0x0701, 0x0706, 0x070e, 0x071b, 0x072c, 0x0733, 0x0739, - 0x073e, 0x0743, 0x074b, 0x0750, 0x0756, 0x075b, 0x0761, 0x0766, - 0x076e, 0x0773, 0x0778, 0x0785, 0x078f, 0x0794, 0x079a, 0x079e, - 0x07a2, 0x07a8, 0x07b5, 0x07bb, 0x07c0, 0x07cd, 0x07d9, 0x07df, - 0x07ea, 0x07ee, 0x07f6, 0x0800, 0x0803, 0x080e, 0x0819, 0x0826, - 0x082f, 0x083c, 0x0846, 0x084c, 0x084e, 0x0855, 0x085e, 0x0862, - 0x0867, 0x0879, 0x0880, 0x0888, 0x088e, 0x089c, 0x08ac, 0x08b7, - 0x08bc, 0x08c5, 0x08cb, 0x08d0, 0x08de, 0x08eb, 0x08f0, 0x08f6, - // Entry 140 - 17F - 0x08fb, 0x0903, 0x0908, 0x0913, 0x091a, 0x0926, 0x092f, 0x0935, - 0x093a, 0x0943, 0x094e, 0x0952, 0x0956, 0x095c, 0x0961, 0x0969, - 0x0973, 0x0989, 0x098f, 0x0995, 0x099c, 0x09ab, 0x09ba, 0x09c0, - 0x09cc, 0x09d3, 0x09da, 0x09dd, 0x09e2, 0x09e6, 0x09ed, 0x09f4, - 0x09f8, 0x09ff, 0x0a0e, 0x0a15, 0x0a2a, 0x0a32, 0x0a37, 0x0a3e, - 0x0a4a, 0x0a50, 0x0a59, 0x0a5d, 0x0a65, 0x0a6d, 0x0a7a, 0x0a81, - 0x0a87, 0x0a8d, 0x0a9f, 0x0aa3, 0x0aac, 0x0ab3, 0x0ab9, 0x0ac1, - 0x0ac6, 0x0acd, 0x0ad4, 0x0adb, 0x0ae1, 0x0ae6, 0x0aec, 0x0af1, - // Entry 180 - 1BF - 0x0af6, 0x0b08, 0x0b0f, 0x0b14, 0x0b1a, 0x0b22, 0x0b27, 0x0b37, - 0x0b3b, 0x0b46, 0x0b4e, 0x0b58, 0x0b60, 0x0b65, 0x0b68, 0x0b6d, - 0x0b72, 0x0b81, 0x0b85, 0x0b8b, 0x0b8f, 0x0b95, 0x0b9d, 0x0ba5, - 0x0bad, 0x0bb3, 0x0bb7, 0x0bbd, 0x0bc3, 0x0bc8, 0x0bcc, 0x0bd4, - 0x0bde, 0x0bea, 0x0bf1, 0x0bf7, 0x0c02, 0x0c09, 0x0c11, 0x0c17, - 0x0c1c, 0x0c25, 0x0c2c, 0x0c3a, 0x0c3f, 0x0c49, 0x0c50, 0x0c58, - 0x0c5d, 0x0c62, 0x0c6d, 0x0c7b, 0x0c81, 0x0c85, 0x0c8d, 0x0c93, - 0x0c97, 0x0c9b, 0x0ca2, 0x0ca8, 0x0cb1, 0x0cb6, 0x0cc2, 0x0cc8, - // Entry 1C0 - 1FF - 0x0cce, 0x0cda, 0x0cde, 0x0cee, 0x0cf6, 0x0cfe, 0x0d03, 0x0d08, - 0x0d0d, 0x0d13, 0x0d1d, 0x0d24, 0x0d2c, 0x0d36, 0x0d3b, 0x0d42, - 0x0d50, 0x0d62, 0x0d6e, 0x0d7b, 0x0d82, 0x0d8a, 0x0d92, 0x0da2, - 0x0da9, 0x0db7, 0x0dc9, 0x0dd2, 0x0dec, 0x0df7, 0x0dfe, 0x0e07, - 0x0e10, 0x0e17, 0x0e1c, 0x0e22, 0x0e28, 0x0e2f, 0x0e36, 0x0e3e, - 0x0e41, 0x0e48, 0x0e50, 0x0e5e, 0x0e65, 0x0e6a, 0x0e71, 0x0e7b, - 0x0e82, 0x0e87, 0x0e8e, 0x0e94, 0x0ea1, 0x0eac, 0x0eb2, 0x0eb6, - 0x0eba, 0x0ec2, 0x0ed1, 0x0edc, 0x0ee6, 0x0eef, 0x0ef3, 0x0f00, - // Entry 200 - 23F - 0x0f06, 0x0f13, 0x0f1a, 0x0f25, 0x0f32, 0x0f3d, 0x0f48, 0x0f4f, - 0x0f54, 0x0f5a, 0x0f5f, 0x0f63, 0x0f74, 0x0f7a, 0x0f7e, 0x0f84, - 0x0f8a, 0x0f97, 0x0f9d, 0x0fa4, 0x0fa8, 0x0fad, 0x0fb1, 0x0fb7, - 0x0fbc, 0x0fc1, 0x0fc4, 0x0fcb, 0x0fd2, 0x0fd9, 0x0fe0, 0x0fe7, - 0x0fef, 0x0ffb, 0x1004, 0x100a, 0x1010, 0x1018, 0x101f, 0x1023, - 0x102a, 0x1030, 0x1037, 0x103b, 0x1051, 0x1059, 0x105f, 0x1065, - 0x1075, 0x1078, 0x1080, 0x1086, 0x1092, 0x109f, 0x10a4, 0x10a9, - 0x10ae, 0x10b4, 0x10bc, 0x10c1, 0x10c6, 0x10ce, 0x10d6, 0x10de, - // Entry 240 - 27F - 0x10e6, 0x10ea, 0x10ed, 0x10f1, 0x10f8, 0x10fd, 0x1107, 0x1114, - 0x111e, 0x1128, 0x1130, 0x1136, 0x1148, 0x114c, 0x1167, 0x116b, - 0x1176, 0x1176, 0x1185, 0x1196, 0x11a8, 0x11b7, 0x11c9, 0x11d9, - 0x11e8, 0x11f7, 0x1206, 0x1206, 0x1213, 0x1221, 0x1235, 0x123b, - 0x124d, 0x125e, 0x1265, 0x1272, 0x127a, 0x1291, 0x12a2, -} // Size: 1254 bytes - -const filLangStr string = "" + // Size: 3178 bytes - "AfarAbkhazianAfrikaansAkanAmharicAragoneseArabicAssameseAvaricAymaraAzer" + - "baijaniBashkirBelarusianBulgarianBislamaBambaraBanglaTibetanBretonBosnia" + - "nCatalanChechenChamorroCorsicanCzechChurch SlavicChuvashWelshDanishGerma" + - "nDivehiDzongkhaEweGreekInglesEsperantoSpanishEstonianBasquePersianFulahF" + - "innishFijianFaroeseFrenchKanlurang FrisianIrishScottish GaelicGalicianGu" + - "araniGujaratiManxHausaHebrewHindiCroatianHaitianHungarianArmenianHereroI" + - "nterlinguaIndonesianInterlingueIgboSichuan YiIdoIcelandicItalianInuktitu" + - "tJapaneseJavaneseGeorgianKongoKikuyuKuanyamaKazakhKalaallisutKhmerKannad" + - "aKoreanKanuriKashmiriKurdishKomiCornishKirghizLatinLuxembourgishGandaLim" + - "burgishLingalaLaoLithuanianLuba-KatangaLatvianMalagasyMarshalleseMaoriMa" + - "cedonianMalayalamMongolianMarathiMalayMalteseBurmeseNauruHilagang Ndebel" + - "eNepaliNdongaDutchNorwegian NynorskNorwegian BokmålSouth NdebeleNavajoNy" + - "anjaOccitanOromoOdiaOsseticPunjabiPolishPashtoPortugueseQuechuaRomanshRu" + - "ndiRomanianRussianKinyarwandaSanskritSardinianSindhiHilagang SamiSangoSi" + - "nhalaSlovakSlovenianSamoanShonaSomaliAlbanianSerbianSwatiKatimugang Soth" + - "oSundaneseSwedishSwahiliTamilTeluguTajikThaiTigrinyaTurkmenTswanaTonganT" + - "urkishTsongaTatarTahitianUyghurUkranianUrduUzbekVendaVietnameseVolapükWa" + - "lloonWolofXhosaYiddishYorubaChineseZuluAchineseAcoliAdangmeAdygheAghemAi" + - "nuAleutSouthern AltaiAngikaMapucheArapahoAsuAsturianAwadhiBalineseBasaaB" + - "embaBenaKanlurang BalochiBhojpuriBiniSiksikaBodoBugineseBlinCebuanoChiga" + - "ChuukeseMariChoctawCherokeeCheyenneCentral KurdishSeselwa Creole FrenchD" + - "akotaDargwaTaitaDogribZarmaLower SorbianDualaJola-FonyiDazagaEmbuEfikEka" + - "jukEwondoFilipinoFonCajun FrenchFriulianGaGagauzGeezGilberteseGorontaloS" + - "wiss GermanGusiiGwichʼinHawaiianHiligaynonHmongUpper SorbianHupaIbanIbib" + - "ioIlokoIngushLojbanNgombaMachameKabyleKachinJjuKambaKabardianTyapMakonde" + - "KabuverdianuKoroKhasiKoyra ChiiniKakoKalenjinKimbunduKomi-PermyakKonkani" + - "KpelleKarachay-BalkarKarelianKurukhShambalaBafiaColognianKumykLadinoLang" + - "iLezghianLakotaLouisiana CreoleLoziHilagang LuriLuba-LuluaLundaLuoMizoLu" + - "yiaMadureseMagahiMaithiliMakasarMasaiMokshaMendeMeruMorisyenMakhuwa-Meet" + - "toMeta’MicmacMinangkabauManipuriMohawkMossiMundangMaramihang WikaCreekMi" + - "randeseErzyaMazanderaniNeapolitanNamaLow GermanNewariNiasNiueanKwasioNgi" + - "emboonNogaiN’KoHilagang SothoNuerNyankolePangasinanPampangaPapiamentoPal" + - "auanNigerian PidginPrussianKʼicheʼRapanuiRarotonganRomboAromanianRwaSand" + - "aweSakhaSamburuSantaliNgambaySanguSicilianScotsKatimugang KurdishSenaKoy" + - "raboro SenniTachelhitShanKatimugang SamiLule SamiInari SamiSkolt SamiSon" + - "inkeSranan TongoSahoSukumaComorianSyriacTimneTesoTetumTigreKlingonTok Pi" + - "sinTarokoTumbukaTuvaluTasawaqTuvinianCentral Atlas TamazightUdmurtUmbund" + - "uHindi Kilalang WikaVaiVunjoWalserWolayttaWarayWarlpiriKalmykSogaYangben" + - "YembaCantoneseStandard Moroccan TamazightZuniWalang nilalaman na ukol sa" + - " wikaZazaModernong Karaniwang ArabicAustrian GermanSwiss High GermanIngl" + - "es ng AustralyaIngles sa CanadaIngles na BritishIngles na AmericanLatin " + - "American na EspanyolEuropean SpanishMexican na EspanyolFrench sa CanadaS" + - "wiss na FrenchLow SaxonFlemishPortuges ng BrasilEuropean PortugueseMolda" + - "vianSerbo-CroatianCongo SwahiliPinasimpleng ChineseTradisyonal na Chines" + - "e" - -var filLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x000d, 0x0016, 0x001a, 0x0021, 0x002a, - 0x0030, 0x0038, 0x003e, 0x0044, 0x004f, 0x0056, 0x0060, 0x0069, - 0x0070, 0x0077, 0x007d, 0x0084, 0x008a, 0x0091, 0x0098, 0x009f, - 0x00a7, 0x00af, 0x00af, 0x00b4, 0x00c1, 0x00c8, 0x00cd, 0x00d3, - 0x00d9, 0x00df, 0x00e7, 0x00ea, 0x00ef, 0x00f5, 0x00fe, 0x0105, - 0x010d, 0x0113, 0x011a, 0x011f, 0x0126, 0x012c, 0x0133, 0x0139, - 0x014a, 0x014f, 0x015e, 0x0166, 0x016d, 0x0175, 0x0179, 0x017e, - 0x0184, 0x0189, 0x0189, 0x0191, 0x0198, 0x01a1, 0x01a9, 0x01af, - // Entry 40 - 7F - 0x01ba, 0x01c4, 0x01cf, 0x01d3, 0x01dd, 0x01dd, 0x01e0, 0x01e9, - 0x01f0, 0x01f9, 0x0201, 0x0209, 0x0211, 0x0216, 0x021c, 0x0224, - 0x022a, 0x0235, 0x023a, 0x0241, 0x0247, 0x024d, 0x0255, 0x025c, - 0x0260, 0x0267, 0x026e, 0x0273, 0x0280, 0x0285, 0x028f, 0x0296, - 0x0299, 0x02a3, 0x02af, 0x02b6, 0x02be, 0x02c9, 0x02ce, 0x02d8, - 0x02e1, 0x02ea, 0x02f1, 0x02f6, 0x02fd, 0x0304, 0x0309, 0x0319, - 0x031f, 0x0325, 0x032a, 0x033b, 0x034c, 0x0359, 0x035f, 0x0365, - 0x036c, 0x036c, 0x0371, 0x0375, 0x037c, 0x0383, 0x0383, 0x0389, - // Entry 80 - BF - 0x038f, 0x0399, 0x03a0, 0x03a7, 0x03ac, 0x03b4, 0x03bb, 0x03c6, - 0x03ce, 0x03d7, 0x03dd, 0x03ea, 0x03ef, 0x03f6, 0x03fc, 0x0405, - 0x040b, 0x0410, 0x0416, 0x041e, 0x0425, 0x042a, 0x043a, 0x0443, - 0x044a, 0x0451, 0x0456, 0x045c, 0x0461, 0x0465, 0x046d, 0x0474, - 0x047a, 0x0480, 0x0487, 0x048d, 0x0492, 0x049a, 0x04a0, 0x04a8, - 0x04ac, 0x04b1, 0x04b6, 0x04c0, 0x04c8, 0x04cf, 0x04d4, 0x04d9, - 0x04e0, 0x04e6, 0x04e6, 0x04ed, 0x04f1, 0x04f9, 0x04fe, 0x0505, - 0x050b, 0x050b, 0x050b, 0x0510, 0x0514, 0x0514, 0x0514, 0x0519, - // Entry C0 - FF - 0x0519, 0x0527, 0x0527, 0x052d, 0x052d, 0x0534, 0x0534, 0x053b, - 0x053b, 0x053b, 0x053b, 0x053b, 0x053b, 0x053e, 0x053e, 0x0546, - 0x0546, 0x054c, 0x054c, 0x0554, 0x0554, 0x0559, 0x0559, 0x0559, - 0x0559, 0x0559, 0x055e, 0x055e, 0x0562, 0x0562, 0x0562, 0x0573, - 0x057b, 0x057b, 0x057f, 0x057f, 0x057f, 0x0586, 0x0586, 0x0586, - 0x0586, 0x0586, 0x058a, 0x058a, 0x058a, 0x0592, 0x0592, 0x0596, - 0x0596, 0x0596, 0x0596, 0x0596, 0x0596, 0x0596, 0x059d, 0x05a2, - 0x05a2, 0x05a2, 0x05aa, 0x05ae, 0x05ae, 0x05b5, 0x05b5, 0x05bd, - // Entry 100 - 13F - 0x05c5, 0x05d4, 0x05d4, 0x05d4, 0x05d4, 0x05e9, 0x05e9, 0x05ef, - 0x05f5, 0x05fa, 0x05fa, 0x05fa, 0x0600, 0x0600, 0x0605, 0x0605, - 0x0612, 0x0612, 0x0617, 0x0617, 0x0621, 0x0621, 0x0627, 0x062b, - 0x062f, 0x062f, 0x062f, 0x0635, 0x0635, 0x0635, 0x0635, 0x063b, - 0x063b, 0x063b, 0x0643, 0x0643, 0x0646, 0x0652, 0x0652, 0x0652, - 0x0652, 0x0652, 0x0652, 0x065a, 0x065c, 0x0662, 0x0662, 0x0662, - 0x0662, 0x0662, 0x0666, 0x0670, 0x0670, 0x0670, 0x0670, 0x0670, - 0x0670, 0x0679, 0x0679, 0x0679, 0x0679, 0x0685, 0x0685, 0x0685, - // Entry 140 - 17F - 0x068a, 0x0693, 0x0693, 0x0693, 0x069b, 0x069b, 0x06a5, 0x06a5, - 0x06aa, 0x06b7, 0x06b7, 0x06bb, 0x06bf, 0x06c5, 0x06ca, 0x06d0, - 0x06d0, 0x06d0, 0x06d6, 0x06dc, 0x06e3, 0x06e3, 0x06e3, 0x06e3, - 0x06e3, 0x06e9, 0x06ef, 0x06f2, 0x06f7, 0x06f7, 0x0700, 0x0700, - 0x0704, 0x070b, 0x0717, 0x0717, 0x071b, 0x071b, 0x0720, 0x0720, - 0x072c, 0x072c, 0x072c, 0x0730, 0x0738, 0x0740, 0x074c, 0x0753, - 0x0753, 0x0759, 0x0768, 0x0768, 0x0768, 0x0770, 0x0776, 0x077e, - 0x0783, 0x078c, 0x0791, 0x0791, 0x0797, 0x079c, 0x079c, 0x079c, - // Entry 180 - 1BF - 0x07a4, 0x07a4, 0x07a4, 0x07a4, 0x07aa, 0x07aa, 0x07aa, 0x07ba, - 0x07be, 0x07cb, 0x07cb, 0x07d5, 0x07d5, 0x07da, 0x07dd, 0x07e1, - 0x07e6, 0x07e6, 0x07e6, 0x07ee, 0x07ee, 0x07f4, 0x07fc, 0x0803, - 0x0803, 0x0808, 0x0808, 0x080e, 0x080e, 0x0813, 0x0817, 0x081f, - 0x081f, 0x082d, 0x0834, 0x083a, 0x0845, 0x0845, 0x084d, 0x0853, - 0x0858, 0x0858, 0x085f, 0x086e, 0x0873, 0x087c, 0x087c, 0x087c, - 0x087c, 0x0881, 0x088c, 0x088c, 0x0896, 0x089a, 0x08a4, 0x08aa, - 0x08ae, 0x08b4, 0x08b4, 0x08ba, 0x08c3, 0x08c8, 0x08c8, 0x08c8, - // Entry 1C0 - 1FF - 0x08ce, 0x08dc, 0x08e0, 0x08e0, 0x08e0, 0x08e8, 0x08e8, 0x08e8, - 0x08e8, 0x08e8, 0x08f2, 0x08f2, 0x08fa, 0x0904, 0x090b, 0x090b, - 0x091a, 0x091a, 0x091a, 0x091a, 0x091a, 0x091a, 0x091a, 0x091a, - 0x091a, 0x0922, 0x0922, 0x092b, 0x092b, 0x092b, 0x0932, 0x093c, - 0x093c, 0x093c, 0x0941, 0x0941, 0x0941, 0x0941, 0x0941, 0x094a, - 0x094d, 0x0954, 0x0959, 0x0959, 0x0960, 0x0960, 0x0967, 0x0967, - 0x096e, 0x0973, 0x097b, 0x0980, 0x0980, 0x0992, 0x0992, 0x0996, - 0x0996, 0x0996, 0x09a5, 0x09a5, 0x09a5, 0x09ae, 0x09b2, 0x09b2, - // Entry 200 - 23F - 0x09b2, 0x09b2, 0x09b2, 0x09c1, 0x09ca, 0x09d4, 0x09de, 0x09e5, - 0x09e5, 0x09f1, 0x09f1, 0x09f5, 0x09f5, 0x09fb, 0x09fb, 0x09fb, - 0x0a03, 0x0a03, 0x0a09, 0x0a09, 0x0a09, 0x0a0e, 0x0a12, 0x0a12, - 0x0a17, 0x0a1c, 0x0a1c, 0x0a1c, 0x0a1c, 0x0a23, 0x0a23, 0x0a23, - 0x0a23, 0x0a23, 0x0a2c, 0x0a2c, 0x0a32, 0x0a32, 0x0a32, 0x0a32, - 0x0a39, 0x0a3f, 0x0a46, 0x0a4e, 0x0a65, 0x0a6b, 0x0a6b, 0x0a72, - 0x0a85, 0x0a88, 0x0a88, 0x0a88, 0x0a88, 0x0a88, 0x0a88, 0x0a88, - 0x0a8d, 0x0a93, 0x0a9b, 0x0aa0, 0x0aa0, 0x0aa8, 0x0aa8, 0x0aae, - // Entry 240 - 27F - 0x0aae, 0x0ab2, 0x0ab2, 0x0ab2, 0x0ab9, 0x0abe, 0x0abe, 0x0ac7, - 0x0ac7, 0x0ac7, 0x0ac7, 0x0ac7, 0x0ae2, 0x0ae6, 0x0b06, 0x0b0a, - 0x0b25, 0x0b25, 0x0b34, 0x0b45, 0x0b58, 0x0b68, 0x0b79, 0x0b8b, - 0x0ba5, 0x0bb5, 0x0bc8, 0x0bc8, 0x0bd8, 0x0be7, 0x0bf0, 0x0bf7, - 0x0c09, 0x0c1c, 0x0c25, 0x0c33, 0x0c40, 0x0c54, 0x0c6a, -} // Size: 1254 bytes - -const frLangStr string = "" + // Size: 5175 bytes - "afarabkhazeavestiqueafrikaansakanamhariquearagonaisarabeassamaisavarayma" + - "raazéribachkirbiélorussebulgarebichelamarbambarabengalitibétainbretonbos" + - "niaquecatalantchétchènechamorrocorsecreetchèqueslavon d’églisetchouvache" + - "galloisdanoisallemandmaldiviendzongkhaéwégrecanglaisespérantoespagnolest" + - "onienbasquepersanpeulfinnoisfidjienféroïenfrançaisfrison occidentalirlan" + - "daisgaélique écossaisgalicienguaranigoudjeratimannoishaoussahébreuhindih" + - "iri motucroatecréole haïtienhongroisarménienhérérointerlinguaindonésieni" + - "nterlingueigboyi du Sichuaninupiaqidoislandaisitalieninuktitutjaponaisja" + - "vanaisgéorgienkongokikuyukouanyamakazakhgroenlandaiskhmerkannadacoréenka" + - "nourikashmirikurdekomicorniquekirghizelatinluxembourgeoisgandalimbourgeo" + - "islingalalaolituanienluba-katangalettonmalgachemarshallaismaorimacédonie" + - "nmalayalammongolmarathemalaismaltaisbirmannauruanndébélé du Nordnépalais" + - "ndonganéerlandaisnorvégien nynorsknorvégien bokmålndébélé du Sudnavahony" + - "anjaoccitanojibwaoromooriyaossètependjabipalipolonaispachtoportugaisquec" + - "huaromancheroundiroumainrusserwandasanskritsardesindhisami du Nordsangho" + - "cinghalaisslovaqueslovènesamoanshonasomalialbanaisserbeswatisotho du Sud" + - "soundanaissuédoisswahilitamoultélougoutadjikthaïtigrignaturkmènetswanato" + - "nguienturctsongatatartahitienouïghourukrainienourdououzbekvendavietnamie" + - "nvolapukwallonwolofxhosayiddishyorubazhuangchinoiszoulouacehacoliadangme" + - "adyghéenarabe tunisienafrihiliaghemaïnouakkadienalabamaaléouteguèguealta" + - "ï du Sudancien anglaisangikaaraméenmapuchearaonaarapahoarabe algérienar" + - "awakarabe marocainarabe égyptienassoulangue des signes américaineasturie" + - "nkotavaawadhibaloutchibalinaisbavaroisbassabamounbatak tobaghomalabedjab" + - "embabetawibénabafutbadagabaloutchi occidentalbhojpuribikolbinibanjarkoms" + - "iksikabishnupriyabakhtiaribrajbrahouibodoakoosebouriatebugibouloublinméd" + - "umbacaddocaribecayugaatsamcebuanokigachibchatchaghataïchuukmarijargon ch" + - "inookchoctawchipewyancherokeecheyennesoranicoptecapiznonturc de Criméecr" + - "éole seychelloiskachoubedakotadargwataitadelawareesclavedogribdinkazarm" + - "adogribas-sorabedusun centraldoualamoyen néerlandaisdiola-fognydiouladaz" + - "agaembouéfikémilienégyptien ancienékadjoukélamitemoyen anglaisyoupik cen" + - "traléwondoestrémègnefangfilipinofinnois tornédalienfonfrançais cadienmoy" + - "en françaisancien françaisfrancoprovençalfrison du Nordfrison orientalfr" + - "ioulangagagaouzegangayogbayadari zoroastrienguèzegilbertingilakimoyen ha" + - "ut-allemandancien haut allemandkonkani de Goagondigorontalogothiquegrebo" + - "grec anciensuisse allemandwayuugurennegusiigwichʼinhaidahakkahawaïenhind" + - "i fidjienhiligaynonhittitehmonghaut-sorabexianghupaibanibibioilokanoingo" + - "ucheingriencréole jamaïcainlojbanngombamatchaméjudéo-persanjudéo-arabeju" + - "tekarakalpakkabylekachinjjukambakawikabardinkanemboutyapmakondécapverdie" + - "nkényangkorocainganguekhasikhotanaiskoyra chiinikhowarkirmanjkikakokalen" + - "djinkimboundoukomi-permiakkonkanikosraéenkpellékaratchaï balkarkriokinar" + - "ay-acarélienkouroukhchambalabafiafrancique ripuairekoumykkutenailadinola" + - "ngilahndalambalezghienlingua franca novaligurelivonienlakotalombardmongo" + - "créole louisianaislozilori du Nordlatgalienluba-lulualuiseñolundaluolush" + - "aïluhyachinois littérairelazemadouraismafamagahimaithilimakassarmandingu" + - "emassaïmabamoksamandarmendéméroucréole mauricienmoyen irlandaismakhuwa-m" + - "eettométa’micmacminangkabaumandchoumanipurimohawkmorémari occidentalmoun" + - "dangmultilinguecreekmirandaismarwarîmentawaïmyènèerzyamazandéraniminnann" + - "apolitainnamabas-allemandnewariniasniuéenAokwasiongiemboonnogaïvieux nor" + - "roisnovialn’kosotho du Nordnuernewarî classiquenyamwezinyankolényoronzem" + - "aosageturc ottomanpangasinanpahlavipampanganpapiamentopalaupicardpidgin " + - "nigérianpennsilfaanischbas-prussienpersan ancienallemand palatinphénicie" + - "npiémontaispontiquepohnpeiprussienprovençal ancienk’iche’quichua du Haut" + - "-Chimborazorajasthanirapanuirarotongienromagnolrifainromboromanirotumanr" + - "uthènerovianavalaquerwasandaweiakoutearaméen samaritainsambourousasaksan" + - "talsaurashtrangambaysangusicilienécossaissarde sassaraiskurde du Sudsene" + - "cacisenasériselkoupekoyraboro senniancien irlandaissamogitienchleuhshana" + - "rabe tchadiensidamobas-silésiensélayarsami du Sudsami de Lulesami d’Inar" + - "isami skoltsoninkésogdiensranan tongosérèresahosaterlandaissoukoumasouss" + - "ousumériencomoriensyriaque classiquesyriaquesilésientouloutemnetesoteren" + - "otetumtigrétivtokelautsakhourklingontlingittalyshtamacheqtonga nyasatok " + - "pisintouroyotarokotsakonientsimshiantati caucasientoumboukatuvalutasawaq" + - "touvainamazighe de l’Atlas centraloudmourteougaritiqueoumboundoulangue i" + - "ndéterminéevaïvénitienvepseflamand occidentalfranconien du Mainvotevõrov" + - "unjowalserwalamowaraywashowarlpiriwukalmoukmingréliensogayaoyapoisyangbe" + - "nyembanheengatoucantonaiszapotèquesymboles Blisszélandaiszenagaamazighe " + - "standard marocainzuñisans contenu linguistiquezazakiarabe standard moder" + - "neallemand autrichienallemand suisseanglais australienanglais canadienan" + - "glais britanniqueanglais américainfrançais canadienfrançais suissebas-sa" + - "xon néerlandaisflamandportugais brésilienportugais européenmoldaveserbo-" + - "croateswahili du Congochinois simplifiéchinois traditionnel" - -var frLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000b, 0x0014, 0x001d, 0x0021, 0x002a, 0x0033, - 0x0038, 0x0040, 0x0044, 0x004a, 0x0050, 0x0057, 0x0062, 0x0069, - 0x0073, 0x007a, 0x0081, 0x008a, 0x0090, 0x0099, 0x00a0, 0x00ac, - 0x00b4, 0x00b9, 0x00bd, 0x00c5, 0x00d7, 0x00e1, 0x00e8, 0x00ee, - 0x00f6, 0x00ff, 0x0107, 0x010c, 0x0110, 0x0117, 0x0121, 0x0129, - 0x0131, 0x0137, 0x013d, 0x0141, 0x0148, 0x014f, 0x0158, 0x0161, - 0x0172, 0x017b, 0x018e, 0x0196, 0x019d, 0x01a7, 0x01ae, 0x01b5, - 0x01bc, 0x01c1, 0x01ca, 0x01d0, 0x01e0, 0x01e8, 0x01f1, 0x01f9, - // Entry 40 - 7F - 0x0204, 0x020f, 0x021a, 0x021e, 0x022b, 0x0232, 0x0235, 0x023e, - 0x0245, 0x024e, 0x0256, 0x025e, 0x0267, 0x026c, 0x0272, 0x027b, - 0x0281, 0x028d, 0x0292, 0x0299, 0x02a0, 0x02a7, 0x02af, 0x02b4, - 0x02b8, 0x02c0, 0x02c8, 0x02cd, 0x02db, 0x02e0, 0x02ec, 0x02f3, - 0x02f6, 0x02ff, 0x030b, 0x0311, 0x0319, 0x0324, 0x0329, 0x0334, - 0x033d, 0x0343, 0x034a, 0x0350, 0x0357, 0x035d, 0x0364, 0x0376, - 0x037f, 0x0385, 0x0391, 0x03a3, 0x03b5, 0x03c6, 0x03cc, 0x03d2, - 0x03d9, 0x03df, 0x03e4, 0x03e9, 0x03f0, 0x03f8, 0x03fc, 0x0404, - // Entry 80 - BF - 0x040a, 0x0413, 0x041a, 0x0422, 0x0428, 0x042f, 0x0434, 0x043a, - 0x0442, 0x0447, 0x044d, 0x0459, 0x045f, 0x0469, 0x0471, 0x0479, - 0x047f, 0x0484, 0x048a, 0x0492, 0x0497, 0x049c, 0x04a8, 0x04b2, - 0x04ba, 0x04c1, 0x04c7, 0x04d0, 0x04d6, 0x04db, 0x04e3, 0x04ec, - 0x04f2, 0x04fa, 0x04fe, 0x0504, 0x0509, 0x0511, 0x051a, 0x0523, - 0x0529, 0x052f, 0x0534, 0x053e, 0x0545, 0x054b, 0x0550, 0x0555, - 0x055c, 0x0562, 0x0568, 0x056f, 0x0575, 0x0579, 0x057e, 0x0585, - 0x058e, 0x059c, 0x05a4, 0x05a9, 0x05af, 0x05b7, 0x05be, 0x05c6, - // Entry C0 - FF - 0x05cd, 0x05da, 0x05e8, 0x05ee, 0x05f6, 0x05fd, 0x0603, 0x060a, - 0x0619, 0x0619, 0x061f, 0x062d, 0x063c, 0x0641, 0x065e, 0x0666, - 0x066c, 0x0672, 0x067b, 0x0683, 0x068b, 0x0690, 0x0696, 0x06a0, - 0x06a7, 0x06ac, 0x06b1, 0x06b7, 0x06bc, 0x06c1, 0x06c7, 0x06db, - 0x06e3, 0x06e8, 0x06ec, 0x06f2, 0x06f5, 0x06fc, 0x0707, 0x0710, - 0x0714, 0x071b, 0x071f, 0x0725, 0x072d, 0x0731, 0x0737, 0x073b, - 0x0743, 0x0748, 0x074e, 0x0754, 0x0759, 0x0759, 0x0760, 0x0764, - 0x076b, 0x0776, 0x077b, 0x077f, 0x078d, 0x0794, 0x079d, 0x07a5, - // Entry 100 - 13F - 0x07ad, 0x07b3, 0x07b8, 0x07c0, 0x07cf, 0x07e2, 0x07ea, 0x07f0, - 0x07f6, 0x07fb, 0x0803, 0x080a, 0x0810, 0x0815, 0x081a, 0x081f, - 0x0829, 0x0836, 0x083c, 0x084e, 0x0859, 0x085f, 0x0865, 0x086a, - 0x086f, 0x0877, 0x0887, 0x0890, 0x0898, 0x08a5, 0x08b3, 0x08ba, - 0x08c6, 0x08ca, 0x08d2, 0x08e6, 0x08e9, 0x08f9, 0x0908, 0x0918, - 0x0928, 0x0936, 0x0945, 0x094d, 0x094f, 0x0957, 0x095a, 0x095e, - 0x0963, 0x0973, 0x0979, 0x0982, 0x0988, 0x099b, 0x09af, 0x09bd, - 0x09c2, 0x09cb, 0x09d3, 0x09d8, 0x09e3, 0x09f2, 0x09f7, 0x09fe, - // Entry 140 - 17F - 0x0a03, 0x0a0c, 0x0a11, 0x0a16, 0x0a1e, 0x0a2b, 0x0a35, 0x0a3c, - 0x0a41, 0x0a4c, 0x0a51, 0x0a55, 0x0a59, 0x0a5f, 0x0a66, 0x0a6e, - 0x0a75, 0x0a87, 0x0a8d, 0x0a93, 0x0a9c, 0x0aa9, 0x0ab5, 0x0ab9, - 0x0ac3, 0x0ac9, 0x0acf, 0x0ad2, 0x0ad7, 0x0adb, 0x0ae3, 0x0aeb, - 0x0aef, 0x0af7, 0x0b01, 0x0b09, 0x0b0d, 0x0b17, 0x0b1c, 0x0b25, - 0x0b31, 0x0b37, 0x0b40, 0x0b44, 0x0b4d, 0x0b57, 0x0b63, 0x0b6a, - 0x0b73, 0x0b7a, 0x0b8b, 0x0b8f, 0x0b98, 0x0ba1, 0x0ba9, 0x0bb1, - 0x0bb6, 0x0bc8, 0x0bce, 0x0bd5, 0x0bdb, 0x0be0, 0x0be6, 0x0beb, - // Entry 180 - 1BF - 0x0bf3, 0x0c05, 0x0c0b, 0x0c13, 0x0c19, 0x0c20, 0x0c25, 0x0c38, - 0x0c3c, 0x0c48, 0x0c51, 0x0c5b, 0x0c63, 0x0c68, 0x0c6b, 0x0c72, - 0x0c77, 0x0c8a, 0x0c8e, 0x0c97, 0x0c9b, 0x0ca1, 0x0ca9, 0x0cb1, - 0x0cba, 0x0cc1, 0x0cc5, 0x0cca, 0x0cd0, 0x0cd6, 0x0cdc, 0x0ced, - 0x0cfc, 0x0d0a, 0x0d12, 0x0d18, 0x0d23, 0x0d2b, 0x0d33, 0x0d39, - 0x0d3e, 0x0d4d, 0x0d55, 0x0d60, 0x0d65, 0x0d6e, 0x0d76, 0x0d7f, - 0x0d86, 0x0d8b, 0x0d97, 0x0d9d, 0x0da7, 0x0dab, 0x0db7, 0x0dbd, - 0x0dc1, 0x0dc8, 0x0dca, 0x0dd0, 0x0dd9, 0x0ddf, 0x0dec, 0x0df2, - // Entry 1C0 - 1FF - 0x0df8, 0x0e05, 0x0e09, 0x0e1a, 0x0e22, 0x0e2b, 0x0e30, 0x0e35, - 0x0e3a, 0x0e46, 0x0e50, 0x0e57, 0x0e60, 0x0e6a, 0x0e6f, 0x0e75, - 0x0e85, 0x0e94, 0x0ea0, 0x0ead, 0x0ebd, 0x0ec7, 0x0ed2, 0x0eda, - 0x0ee1, 0x0ee9, 0x0efa, 0x0f05, 0x0f1f, 0x0f29, 0x0f30, 0x0f3b, - 0x0f43, 0x0f49, 0x0f4e, 0x0f54, 0x0f5b, 0x0f63, 0x0f6a, 0x0f71, - 0x0f74, 0x0f7b, 0x0f82, 0x0f95, 0x0f9e, 0x0fa3, 0x0fa9, 0x0fb3, - 0x0fba, 0x0fbf, 0x0fc7, 0x0fd0, 0x0fdf, 0x0feb, 0x0ff1, 0x0ff7, - 0x0ffc, 0x1004, 0x1013, 0x1023, 0x102d, 0x1033, 0x1037, 0x1045, - // Entry 200 - 23F - 0x104b, 0x1058, 0x1060, 0x106b, 0x1077, 0x1085, 0x108f, 0x1097, - 0x109e, 0x10aa, 0x10b2, 0x10b6, 0x10c2, 0x10ca, 0x10d1, 0x10da, - 0x10e2, 0x10f4, 0x10fc, 0x1105, 0x110b, 0x1110, 0x1114, 0x111a, - 0x111f, 0x1125, 0x1128, 0x112f, 0x1137, 0x113e, 0x1145, 0x114b, - 0x1153, 0x115e, 0x1167, 0x116e, 0x1174, 0x117d, 0x1186, 0x1194, - 0x119d, 0x11a3, 0x11aa, 0x11b1, 0x11ce, 0x11d7, 0x11e2, 0x11ec, - 0x1201, 0x1205, 0x120e, 0x1213, 0x1225, 0x1237, 0x123b, 0x1240, - 0x1245, 0x124b, 0x1251, 0x1256, 0x125b, 0x1263, 0x1265, 0x126c, - // Entry 240 - 27F - 0x1277, 0x127b, 0x127e, 0x1284, 0x128b, 0x1290, 0x129a, 0x12a3, - 0x12ad, 0x12bb, 0x12c5, 0x12cb, 0x12e5, 0x12ea, 0x1303, 0x1309, - 0x131f, 0x131f, 0x1332, 0x1341, 0x1353, 0x1363, 0x1376, 0x1388, - 0x1388, 0x1388, 0x1388, 0x1388, 0x139a, 0x13aa, 0x13c0, 0x13c7, - 0x13db, 0x13ee, 0x13f5, 0x1401, 0x1411, 0x1423, 0x1437, -} // Size: 1254 bytes - -const frCALangStr string = "" + // Size: 551 bytes - "azerbaïdjanaiscrigujaratiyi de Sichuankuanyamakalaallisutodiasame du Nor" + - "dsangovolapükadyguévieil anglaisbenabicolbilenmedumbatchagataychinookkur" + - "de centralslavetlichoyupik centralewondocajunvieux haut-allemandilocanok" + - "abardekenyangkölschliveluochinois classiquemeta’marwarimentawaibas allem" + - "andao naganewari classiquenkolepalauanallemand de Pennsylvaniebas allema" + - "nd mennonitevieux persepalatinancien occitanrarotongaaroumainsantalikurd" + - "e méridionalserivieil irlandaisselayarsame du Sudsame de Lulesame skoltt" + - "uroyotamazightbas saxonswahili congolais" - -var frCALangIdx = []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, - // Entry 40 - 7F - 0x001a, 0x001a, 0x001a, 0x001a, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x002f, - 0x002f, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - // Entry 80 - BF - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x004a, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - // Entry C0 - FF - 0x005e, 0x005e, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006f, 0x006f, 0x006f, 0x006f, - 0x006f, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, - 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0079, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0089, 0x0089, 0x0089, 0x0090, 0x0090, 0x0090, 0x0090, - // Entry 100 - 13F - 0x0090, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, 0x009d, - 0x009d, 0x009d, 0x009d, 0x00a2, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b5, 0x00bb, - 0x00bb, 0x00bb, 0x00bb, 0x00bb, 0x00bb, 0x00c0, 0x00c0, 0x00c0, - 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, - 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - // Entry 140 - 17F - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00e1, 0x00e1, - 0x00e1, 0x00e1, 0x00e1, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, - // Entry 180 - 1BF - 0x00ef, 0x00ef, 0x00ef, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f6, 0x00f6, - 0x00f6, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, - 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x010e, 0x0115, 0x011d, - 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, 0x0129, 0x0129, - 0x0129, 0x0129, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, - // Entry 1C0 - 1FF - 0x0130, 0x0130, 0x0130, 0x0140, 0x0140, 0x0145, 0x0145, 0x0145, - 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x0145, 0x014c, 0x014c, - 0x014c, 0x0164, 0x017a, 0x0185, 0x018c, 0x018c, 0x018c, 0x018c, - 0x018c, 0x018c, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a3, - 0x01a3, 0x01a3, 0x01a3, 0x01a3, 0x01a3, 0x01a3, 0x01a3, 0x01ab, - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01b2, 0x01b2, - 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01c3, 0x01c3, 0x01c3, - 0x01c7, 0x01c7, 0x01c7, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, - // Entry 200 - 23F - 0x01d6, 0x01d6, 0x01dd, 0x01e8, 0x01f4, 0x01f4, 0x01fe, 0x01fe, - 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, - 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, - 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, - 0x01fe, 0x01fe, 0x01fe, 0x0204, 0x0204, 0x0204, 0x0204, 0x0204, - 0x0204, 0x0204, 0x0204, 0x0204, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - // Entry 240 - 27F - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x0216, 0x0216, - 0x0216, 0x0216, 0x0216, 0x0216, 0x0227, -} // Size: 1250 bytes - -const guLangStr string = "" + // Size: 11864 bytes - "અફારઅબખાજિયનઅવેસ્તનઆફ્રિકન્સઅકાનએમ્હારિકઅર્ગોનીઝઅરબીઆસામીઅવેરિકઆયમારાઅઝર" + - "બૈજાનીબશ્કીરબેલારુશિયનબલ્ગેરિયનબિસ્લામાબામ્બારાબાંગ્લાતિબેટીયનબ્રેટોનબ" + - "ોસ્નિયનકતલાનચેચનકેમોરોકોર્સિકનક્રીચેકચર્ચ સ્લાવિકચૂવાશવેલ્શડેનિશજર્મનદ" + - "િવેહીડ્ઝોંગ્ખાઈવગ્રીકઅંગ્રેજીએસ્પેરાન્ટોસ્પેનિશએસ્ટોનિયનબાસ્કફારસીફુલા" + - "હફિનિશફીજીયનફોરિસ્તફ્રેન્ચપશ્ચિમી ફ્રિસિયનઆઇરિશસ્કોટીસ ગેલિકગેલિશિયનગુ" + - "આરાનીગુજરાતીમાંક્સહૌસાહીબ્રુહિન્દીહિરી મોટૂક્રોએશિયનહૈતિઅન ક્રેઓલેહંગે" + - "રિયનઆર્મેનિયનહેરેરોઇંટરલિંગુઆઇન્ડોનેશિયનઇંટરલિંગઇગ્બોસિચુઆન યીઇનુપિયાક" + - "ઈડોઆઇસલેન્ડિકઇટાલિયનઇનુકિટૂટજાપાનીઝજાવાનીસજ્યોર્જિયનકોંગોકિકુયૂક્વાન્ય" + - "ામાકઝાખકલાલ્લિસુતખ્મેરકન્નડકોરિયનકનુરીકાશ્મીરીકુર્દિશકોમીકોર્નિશકિર્ગી" + - "ઝલેટિનલક્ઝેમબર્ગિશગાંડાલિંબૂર્ગિશલિંગાલાલાઓલિથુઆનિયનલૂબા-કટાંગાલાતવિયન" + - "મલાગસીમાર્શલીઝમાઓરીમેસેડોનિયનમલયાલમમોંગોલિયનમરાઠીમલયમાલ્ટિઝબર્મીઝનાઉરૂ" + - "ઉત્તર દેબેલનેપાળીડોન્ગાડચનોર્વેજિયન નાયનૉર્સ્કનોર્વેજિયન બોકમાલદક્ષિણ " + - "દેબેલનાવાજોન્યાન્જાઓક્સિટનઓજિબ્વાઓરોમોઉડિયાઓસ્સેટિકપંજાબીપાલીપોલીશપશ્ત" + - "ોપોર્ટુગીઝક્વેચુઆરોમાન્શરૂન્દીરોમાનિયનરશિયનકિન્યારવાન્ડાસંસ્કૃતસાર્દિન" + - "િયનસિંધીઉત્તરી સામીસાંગોસિંહાલીસ્લોવૅકસ્લોવેનિયનસામોનશોનાસોમાલીઅલ્બેનિ" + - "યનસર્બિયનસ્વાતીદક્ષિણ સોથોસંડેનીઝસ્વીડિશસ્વાહિલીતમિલતેલુગુતાજીકથાઈટાઇગ" + - "્રિનિયાતુર્કમેનત્સ્વાનાટોંગાનટર્કિશસોંગાતતારતાહિતિયનઉઇગુરયુક્રેનિયનઉર્" + - "દૂઉઝ્બેકવેન્દાવિયેતનામીસવોલાપુકવાલૂનવોલોફખોસાયિદ્દિશયોરૂબાઝુઆગચાઇનીઝઝુ" + - "લુઅચીનીએકોલીઅદાંગ્મીઅદિઘેઅફ્રિહિલીઅઘેમઐનુઅક્કાદીયાનઅલેઉતદક્ષિણ અલ્તાઇજ" + - "ુની અંગ્રેજીઅંગીકાએરમૈકમેપુચેઅરાપાહોઆલ્જેરિયન અરબીઅરાવકમોરોક્કન અરબીઈજ" + - "િપ્શિયન અરબીઅસુઅસ્તુરિયનઅવધીબલૂચીબાલિનીસબસાબામનબેજાબેમ્બાબેનાપશ્ચિમી બ" + - "ાલોચીભોજપુરીબિકોલબિનીસિક્સિકાબિષ્નુપ્રિયાવ્રજબ્રાહુઈબોડોબુરિયાતબુગિનીસ" + - "બ્લિનકડ્ડોકરિબઅત્સમસિબુઆનોચિગાચિબ્ચાછગાતાઇચૂકીસમારીચિનૂક જાર્ગનચોક્તૌશ" + - "િપેવ્યાનશેરોકીશેયેન્નસેન્ટ્રલ કુર્દિશકોપ્ટિકક્રિમિયન તુર્કીસેસેલ્વા ક્" + - "રેઓલે ફ્રેન્ચકાશુબિયનદાકોતાદાર્ગવાતૈતાદેલવેરસ્લેવડોગ્રિબદિન્કાઝર્માડોગ" + - "્રીલોઅર સોર્બિયનદુઆલામધ્ય ડચજોલા-ફોન્યીડ્યુલાદાઝાગાઍમ્બુએફિકપ્રાચીન ઇજ" + - "ીપ્શિયનએકાજુકએલામાઇટમિડિલ અંગ્રેજીઇવોન્ડોફેંગફિલિપિનોફોનકાજૂન ફ્રેન્ચમ" + - "િડિલ ફ્રેંચજૂની ફ્રેંચઉત્તરીય ફ્રિશિયનપૂર્વ ફ્રિશિયનફ્રિયુલિયાનગાગાગાઝ" + - "ganગાયોબાયાઝોરોસ્ટ્રિઅન દારીગીઝજિલ્બરટીઝમધ્ય હાઇ જર્મનજૂની હાઇ જર્મનગોઅન" + - " કોંકણીગોંડીગોરોન્તાલોગોથિકગ્રેબોપ્રાચીન ગ્રીકસ્વિસ જર્મનગુસીગ્વિચ’ઇનહૈડ" + - "ાhakહવાઇયનફીજી હિંદીહિલિગેનોનહિટ્ટિતેહમોંગઅપર સોર્બિયનhsnહૂપાઇબાનઇબિબિ" + - "ઓઇલોકોઇંગુશલોજ્બાનનગોમ્બામકામેજુદેઓ-પર્શિયનજુદેઓ-અરબીકારા-કલ્પકકબાઇલકા" + - "ચિનજ્જુકમ્બાકાવીકબાર્ડિયનત્યાપમકોન્ડેકાબુવર્ડિઆનુકોરોખાસીખોતાનીસકોયરા " + - "ચિનિકાકોકલેજિનકિમ્બન્દુકોમી-પર્મ્યાકકોંકણીકોસરિયનક્પેલ્લેકરાચય-બલ્કારક" + - "રેલિયનકુરૂખશમ્બાલાબફિયાકોલોગ્નિયનકુમીકકુતેનાઇલાદીનોલંગીલાહન્ડાલામ્બાલે" + - "ઝધીયનલિંગ્વા ફેન્કા નોવાલાકોટામોંગોલ્યુઇસિયાના ક્રેઓલલોઝીઉત્તરી લુરીલૂ" + - "બા-લુલુઆલુઇસેનોલુન્ડાલ્યુઓમિઝોલુઈયામાદુરીસમગહીમૈથિલીમકાસરમન્ડિન્ગોમસાઇ" + - "મોક્ષમંદારમેન્ડેમેરુમોરીસ્યેનમધ્ય આઈરિશમાખુવા-મીટ્ટુમેતામિકમેકમિનાંગ્ક" + - "ાબાઉમાન્ચુમણિપુરીમોહૌકમોસ્સીપશ્ચિમી મારીમુનડાન્ગબહુવિધ ભાષાઓક્રિકમિરાં" + - "ડીમારવાડીએર્ઝયામઝાન્દેરાનીnanનેપોલિટાનનમાલો જર્મનનેવારીનિયાસનિયુઆનક્વા" + - "સિઓનીએમબુનનોગાઇજૂની નોર્સએન’કોઉત્તરી સોથોનુએરપરંપરાગત નેવારીન્યામવેઝીન" + - "્યાનકોલન્યોરોન્ઝિમાઓસેજઓટોમાન તુર્કિશપંગાસીનાનપહલવીપમ્પાન્ગાપાપિયામેન્" + - "ટોપલાઉઆનનાઇજેરિયન પીજીનજૂની ફારસીફોનિશિયનપોહપિએનપ્રુસ્સીયનજુની પ્રોવેન" + - "્સલકિચેરાજસ્થાનીરાપાનુઇરારોટોંગનરોમ્બોરોમાનીઅરોમેનિયનરવાસોંડવેસખાસામરિ" + - "ટાન અરેમિકસમ્બુરુસાસાકસંતાલીન્ગામ્બેયસાંગુસિસિલિયાનસ્કોટ્સસર્ઘન કુર્દી" + - "શસેનાસેલ્કપકોયરાબોરો સેન્નીજૂની આયરિશતેશીલહિટશેનસિદામોદક્ષિણ સામીલુલે " + - "સામીઇનારી સામીસ્કોલ્ટ સામીસોનિન્કેસોગ્ડિએનસ્રાનન ટોન્ગોસેરેરસાહોસુકુમા" + - "સુસુસુમેરિયનકોમોરિયનપરંપરાગત સિરિએકસિરિએકતુલુટિમ્નેતેસોતેરેનોતેતુમટાઇગ" + - "્રેતિવતોકેલાઉક્લિન્ગોનક્લીન્ગકિટતામાશેખન્યાસા ટોન્ગાટોક પિસિનટારોકોસિમ" + - "્શિયનમુસ્લિમ તાટતુમ્બુકાતુવાલુતસાવાકટુવીનિયનસેન્ટ્રલ એટલાસ તામાઝિટઉદમુ" + - "ર્તયુગેરિટિકઉમ્બુન્ડૂઅજ્ઞાત ભાષાવાઇવોટિકવુન્જોવેલ્સેરવોલાયટ્ટાવારેયવાશ" + - "ોવાર્લ્પીરીwuuકાલ્મિકસોગાયાઓયાપીસયાન્ગબેનયેમ્બાકેંટોનીઝઝેપોટેકબ્લિસિમ્" + - "બોલ્સઝેનાગામાનક મોરોક્કન તામાઝિટઝૂનીકોઇ ભાષાશાસ્ત્રીય સામગ્રી નથીઝાઝામ" + - "ોડર્ન સ્ટાન્ડર્ડ અરબીઓસ્ટ્રિઅન જર્મનસ્વિસ હાય જર્મનઓસ્ટ્રેલિયન અંગ્રેજ" + - "ીકેનેડિયન અંગ્રેજીબ્રિટિશ અંગ્રેજીઅમેરિકન અંગ્રેજીલેટિન અમેરિકન સ્પેનિ" + - "શયુરોપિયન સ્પેનિશમેક્સિકન સ્પેનિશકેનેડિયન ફ્રેંચસ્વિસ ફ્રેંચલો સેક્સોન" + - "ફ્લેમિશબ્રાઝિલીયન પોર્ટુગીઝયુરોપિયન પોર્ટુગીઝમોલડાવિયનસર્બો-ક્રોએશિયનક" + - "ોંગો સ્વાહિલીસરળીકૃત ચાઇનીઝપારંપરિક ચાઇનીઝ" - -var guLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0024, 0x0039, 0x0054, 0x0060, 0x0078, 0x0090, - 0x009c, 0x00ab, 0x00bd, 0x00cf, 0x00ea, 0x00fc, 0x011a, 0x0135, - 0x014d, 0x0165, 0x017a, 0x0192, 0x01a7, 0x01bf, 0x01ce, 0x01da, - 0x01ec, 0x0204, 0x0210, 0x0219, 0x023b, 0x024a, 0x0259, 0x0268, - 0x0277, 0x0289, 0x02a4, 0x02aa, 0x02b9, 0x02d1, 0x02f2, 0x0307, - 0x0322, 0x0331, 0x0340, 0x034f, 0x035e, 0x0370, 0x0385, 0x039a, - 0x03c8, 0x03d7, 0x03fc, 0x0414, 0x0429, 0x043e, 0x0450, 0x045c, - 0x046e, 0x0480, 0x0499, 0x04b4, 0x04dc, 0x04f4, 0x050f, 0x0521, - // Entry 40 - 7F - 0x053f, 0x0560, 0x0578, 0x0587, 0x05a0, 0x05b8, 0x05c1, 0x05df, - 0x05f4, 0x060c, 0x0621, 0x0636, 0x0654, 0x0663, 0x0675, 0x0693, - 0x069f, 0x06bd, 0x06cc, 0x06db, 0x06ed, 0x06fc, 0x0714, 0x0729, - 0x0735, 0x074a, 0x075f, 0x076e, 0x0792, 0x07a1, 0x07bf, 0x07d4, - 0x07dd, 0x07f8, 0x0817, 0x082c, 0x083e, 0x0856, 0x0865, 0x0883, - 0x0895, 0x08b0, 0x08bf, 0x08c8, 0x08dd, 0x08ef, 0x08fe, 0x091d, - 0x092f, 0x0941, 0x0947, 0x0984, 0x09b5, 0x09d7, 0x09e9, 0x0a01, - 0x0a16, 0x0a2b, 0x0a3a, 0x0a49, 0x0a61, 0x0a73, 0x0a7f, 0x0a8e, - // Entry 80 - BF - 0x0a9d, 0x0ab8, 0x0acd, 0x0ae2, 0x0af4, 0x0b0c, 0x0b1b, 0x0b42, - 0x0b57, 0x0b75, 0x0b84, 0x0ba3, 0x0bb2, 0x0bc7, 0x0bdc, 0x0bfa, - 0x0c09, 0x0c15, 0x0c27, 0x0c42, 0x0c57, 0x0c69, 0x0c88, 0x0c9d, - 0x0cb2, 0x0cca, 0x0cd6, 0x0ce8, 0x0cf7, 0x0d00, 0x0d21, 0x0d39, - 0x0d51, 0x0d63, 0x0d75, 0x0d84, 0x0d90, 0x0da8, 0x0db7, 0x0dd5, - 0x0de4, 0x0df6, 0x0e08, 0x0e26, 0x0e3b, 0x0e4a, 0x0e59, 0x0e65, - 0x0e7a, 0x0e8c, 0x0e98, 0x0eaa, 0x0eb6, 0x0ec5, 0x0ed4, 0x0eec, - 0x0efb, 0x0efb, 0x0f16, 0x0f22, 0x0f2b, 0x0f49, 0x0f49, 0x0f58, - // Entry C0 - FF - 0x0f58, 0x0f7d, 0x0fa2, 0x0fb4, 0x0fc3, 0x0fd5, 0x0fd5, 0x0fea, - 0x1012, 0x1012, 0x1021, 0x1046, 0x106e, 0x1077, 0x1077, 0x1092, - 0x1092, 0x109e, 0x10ad, 0x10c2, 0x10c2, 0x10cb, 0x10d7, 0x10d7, - 0x10d7, 0x10e3, 0x10f5, 0x10f5, 0x1101, 0x1101, 0x1101, 0x1129, - 0x113e, 0x114d, 0x1159, 0x1159, 0x1159, 0x1171, 0x1195, 0x1195, - 0x11a1, 0x11b6, 0x11c2, 0x11c2, 0x11d7, 0x11ec, 0x11ec, 0x11fb, - 0x11fb, 0x120a, 0x1216, 0x1216, 0x1225, 0x1225, 0x123a, 0x1246, - 0x1258, 0x126a, 0x1279, 0x1285, 0x12a7, 0x12b9, 0x12d4, 0x12e6, - // Entry 100 - 13F - 0x12fb, 0x1329, 0x133e, 0x133e, 0x1369, 0x13ad, 0x13c5, 0x13d7, - 0x13ec, 0x13f8, 0x140a, 0x1419, 0x142e, 0x1440, 0x144f, 0x1461, - 0x1486, 0x1486, 0x1495, 0x14a8, 0x14c7, 0x14d9, 0x14eb, 0x14fa, - 0x1506, 0x1506, 0x1537, 0x1549, 0x155e, 0x1586, 0x1586, 0x159b, - 0x159b, 0x15a7, 0x15bf, 0x15bf, 0x15c8, 0x15ed, 0x160f, 0x162e, - 0x162e, 0x165c, 0x1684, 0x16a5, 0x16ab, 0x16ba, 0x16bd, 0x16c9, - 0x16d5, 0x1706, 0x170f, 0x172a, 0x172a, 0x1750, 0x1776, 0x1795, - 0x17a4, 0x17c2, 0x17d1, 0x17e3, 0x1808, 0x1827, 0x1827, 0x1827, - // Entry 140 - 17F - 0x1833, 0x184b, 0x1857, 0x185a, 0x186c, 0x1888, 0x18a3, 0x18bb, - 0x18ca, 0x18ec, 0x18ef, 0x18fb, 0x1907, 0x1919, 0x1928, 0x1937, - 0x1937, 0x1937, 0x194c, 0x1961, 0x1970, 0x1995, 0x19b1, 0x19b1, - 0x19cd, 0x19dc, 0x19eb, 0x19f7, 0x1a06, 0x1a12, 0x1a2d, 0x1a2d, - 0x1a3c, 0x1a51, 0x1a75, 0x1a75, 0x1a81, 0x1a81, 0x1a8d, 0x1aa2, - 0x1abe, 0x1abe, 0x1abe, 0x1aca, 0x1adc, 0x1af7, 0x1b1c, 0x1b2e, - 0x1b43, 0x1b5b, 0x1b7d, 0x1b7d, 0x1b7d, 0x1b92, 0x1ba1, 0x1bb6, - 0x1bc5, 0x1be3, 0x1bf2, 0x1c07, 0x1c19, 0x1c25, 0x1c3a, 0x1c4c, - // Entry 180 - 1BF - 0x1c61, 0x1c96, 0x1c96, 0x1c96, 0x1ca8, 0x1ca8, 0x1cb7, 0x1ceb, - 0x1cf7, 0x1d16, 0x1d16, 0x1d32, 0x1d47, 0x1d59, 0x1d68, 0x1d74, - 0x1d83, 0x1d83, 0x1d83, 0x1d98, 0x1d98, 0x1da4, 0x1db6, 0x1dc5, - 0x1de0, 0x1dec, 0x1dec, 0x1dfb, 0x1e0a, 0x1e1c, 0x1e28, 0x1e43, - 0x1e5f, 0x1e84, 0x1e90, 0x1ea2, 0x1ec6, 0x1ed8, 0x1eed, 0x1efc, - 0x1f0e, 0x1f30, 0x1f48, 0x1f6a, 0x1f79, 0x1f8e, 0x1fa3, 0x1fa3, - 0x1fa3, 0x1fb5, 0x1fd6, 0x1fd9, 0x1ff4, 0x1ffd, 0x2013, 0x2025, - 0x2034, 0x2046, 0x2046, 0x205b, 0x2070, 0x207f, 0x209b, 0x209b, - // Entry 1C0 - 1FF - 0x20aa, 0x20c9, 0x20d5, 0x2100, 0x211b, 0x2133, 0x2145, 0x2157, - 0x2163, 0x218b, 0x21a6, 0x21b5, 0x21d0, 0x21f4, 0x2206, 0x2206, - 0x2231, 0x2231, 0x2231, 0x224d, 0x224d, 0x2265, 0x2265, 0x2265, - 0x227a, 0x2298, 0x22c3, 0x22cf, 0x22cf, 0x22ea, 0x22ff, 0x231a, - 0x231a, 0x231a, 0x232c, 0x233e, 0x233e, 0x233e, 0x233e, 0x2359, - 0x2362, 0x2374, 0x237d, 0x23a8, 0x23bd, 0x23cc, 0x23de, 0x23de, - 0x23f9, 0x2408, 0x2423, 0x2438, 0x2438, 0x245d, 0x245d, 0x2469, - 0x2469, 0x247b, 0x24a9, 0x24c5, 0x24c5, 0x24dd, 0x24e6, 0x24e6, - // Entry 200 - 23F - 0x24f8, 0x24f8, 0x24f8, 0x2517, 0x2530, 0x254c, 0x256e, 0x2586, - 0x259e, 0x25c3, 0x25d2, 0x25de, 0x25de, 0x25f0, 0x25fc, 0x2614, - 0x262c, 0x2657, 0x2669, 0x2669, 0x2675, 0x2687, 0x2693, 0x26a5, - 0x26b4, 0x26c9, 0x26d2, 0x26e7, 0x26e7, 0x2702, 0x2720, 0x2720, - 0x2735, 0x275a, 0x2773, 0x2773, 0x2785, 0x2785, 0x279d, 0x27bc, - 0x27d4, 0x27e6, 0x27f8, 0x2810, 0x284e, 0x2863, 0x287e, 0x2899, - 0x28b8, 0x28c1, 0x28c1, 0x28c1, 0x28c1, 0x28c1, 0x28d0, 0x28d0, - 0x28e2, 0x28f7, 0x2912, 0x2921, 0x292d, 0x294b, 0x294e, 0x2963, - // Entry 240 - 27F - 0x2963, 0x296f, 0x2978, 0x2987, 0x299f, 0x29b1, 0x29b1, 0x29c9, - 0x29de, 0x2a05, 0x2a05, 0x2a17, 0x2a52, 0x2a5e, 0x2aaf, 0x2abb, - 0x2af9, 0x2af9, 0x2b24, 0x2b4d, 0x2b87, 0x2bb8, 0x2be6, 0x2c14, - 0x2c4f, 0x2c7d, 0x2cab, 0x2cab, 0x2cd6, 0x2cf8, 0x2d14, 0x2d29, - 0x2d63, 0x2d97, 0x2db2, 0x2ddd, 0x2e05, 0x2e2d, 0x2e58, -} // Size: 1254 bytes - -const heLangStr string = "" + // Size: 7204 bytes - "אפאריתאבחזיתאבסטןאפריקאנסאקאןאמהריתאראגוניתערביתאסאמיתאוואריתאיימאריתאזר" + - "יתבשקיריתבלארוסיתבולגריתביסלמהבמבארהבנגליתטיבטיתברטוניתבוסניתקטלאניתצ׳צ" + - "׳ניתצ׳מורוקורסיקניתקריצ׳כיתסלאבית כנסייתית עתיקהצ׳ובאשוולשיתדניתגרמניתד" + - "יבהידזונקהאווהיווניתאנגליתאספרנטוספרדיתאסטוניתבסקיתפרסיתפולהפיניתפיג׳ית" + - "פארואזיתצרפתיתפריזית מערביתאיריתגאלית סקוטיתגליציאניתגוארניגוג׳ארטימאני" + - "תהאוסהעבריתהינדיהירי מוטוקרואטיתקריאולית (האיטי)הונגריתארמניתהררו\u200f" + - "אינטרלינגואהאינדונזיתאינטרלינגהאיגבוסצ׳ואן ייאינופיאקאידואיסלנדיתאיטלקי" + - "תאינוקטיטוטיפניתיאוואיתגאורגיתקונגוקיקויוקואניאמהקזחיתגרינלנדיתחמריתקנא" + - "דהקוריאניתקאנוריקשמיריתכורדיתקומיקורניתקירגיזיתלטיניתלוקסמבורגיתגאנדהלי" + - "מבורגיתלינגלהלאוליטאיתלובה-קטנגהלטביתמלגשיתמרשליתמאוריתמקדוניתמליאלאםמו" + - "נגוליתמראטהימלאיתמלטיתבורמזיתנאוריתנדבלה צפוניתנפאליתנדונגההולנדיתנורוו" + - "גית חדשהנורווגית ספרותיתנדבלה דרומיתנאוואחוניאנג׳האוקסיטניתאוג׳יבווהאור" + - "ומואורייהאוסטיתפנג׳אביפאליפולניתפאשטופורטוגזיתקצ׳ואהרומאנשקירונדירומנית" + - "רוסיתקנירואנדיתסנסקריטסרדיניתסינדהיתסמי צפוניתסנגוסינהלהסלובקיתסלובניתס" + - "מואיתשונהסומליתאלבניתסרביתסאווזיסותו דרומיתסונדנזיתשוודיתסווהיליטמיליתט" + - "לוגוטג׳יקיתתאיתתיגריניתטורקמניתסוואנהטונגאיתטורקיתטסונגהטטריתטהיטיתאויג" + - "וראוקראיניתאורדואוזבקיתוונדהויאטנמית\u200fוולאפיקולוניתוולוףקוסהיידישיו" + - "רובהזואנגסיניתזולואכינזיתאקצ׳וליאדנמהאדיגיתאפריהיליאע׳םאינואכדיתאלאוטאל" + - "טאי דרומיתאנגלית עתיקהאנג׳יקהארמיתאראוקניתאראפהוארוואקאסואסטוריתאוואדית" + - "באלוצ׳יבלינזיתבוואריתבסאאבמוםגומאלהבז׳הבמבהבנהבאפוטבאלוצ׳י מערביתבוג׳פו" + - "ריביקולביניקוםסיקסיקהבראג׳בודואקוסהבוריאטבוגינזיתבולובליןמדומבהקאדוקארי" + - "בקאיוגהאטסםסבואנוצ׳יגהצ׳יבצ׳הצ׳אגאטאיצ׳וקסהמאריניב צ׳ינוקצ׳וקטאוצ׳יפווי" + - "אןצ׳רוקישאייןכורדית סוראניתקופטיתטטרית של קריםקריאולית (סיישל)קשוביתדקו" + - "טהדרגווהטאיטהדלאוורסלאביתדוגריבדינקהזארמהדוגריסורבית תחתיתדואלההולנדית " + - "תיכונהג׳ולה פוניתדיולהדזאנגהאמבואפיקמצרית עתיקהאקיוקעילמיתאנגלית תיכונה" + - "אוונדופנגפיליפיניתפוןצרפתית קייג׳וניתצרפתית תיכונהצרפתית עתיקהפריזית צפ" + - "וניתפריזית מזרחיתפריוליתגאגגאוזיתסינית גאןגאיוגבאיהגעזקיריבטיתגרמנית בי" + - "נונית-גבוההגרמנית עתיקה גבוההגונדיגורונטאלוגותיתגרבויוונית עתיקהגרמנית " + - "שוויצריתגוסיגוויצ׳ןהאידהסינית האקההוואיתהיליגאינוןחתיתהמונגסורבית גבוהה" + - "סינית שיאנגהופהאיבאןאיביביואילוקואינגושיתלוז׳באןנגומבהמאקאמהפרסית יהודי" + - "תערבית יהודיתקארא-קלפאקקבילהקצ׳יןג׳וקמבהקאוויקברדיתקנמבוטיאפמקונדהקאבוו" + - "רדיאנוקורוקהאסיקוטאנזיתקוירה צ׳יניקאקוקלנג׳יןקימבונדוקומי-פרמיאקיתקונקא" + - "ניקוסראיאןקפלהקראצ׳י-בלקרקארליתקורוקשמבאלהבאפיהקולוניאןקומיקיתקוטנאילדי" + - "נולאנגילנדהלמבהלזגיתלקוטהמונגוקריאולית לואיזיאניתלוזיתלורית צפוניתלובה-" + - "לולואהלויסנולונדהלואומיזולויהמדורזיתמאפאהמאגאהיתמאיטיליתמקסארמנדינגומסא" + - "יתמאבאמוקשהמנדארמנדהמרוקריאולית מאוריציאניתאירית תיכונהמאקוואה מטומטאמי" + - "קמקמיננגקבאומנצ׳ומניפוריתמוהוקמוסימונדאנגמספר שפותקריקמירנדזיתמרווארימא" + - "ייןארזיהמאזאנדראניסינית מין נאןנפוליטניתנאמהגרמנית תחתיתנוואריניאסניואן" + - "קוואסיונגיאמבוןנוגאי\u200fנורדית עתיקהנ׳קוסותו צפוניתנוארנווארית קלאסית" + - "ניאמווזיניאנקולהניורונזימהאוסג׳טורקית עות׳מניתפנגסינאןפלאביפמפאניהפפיאמ" + - "נטופלוואןניגרית פידג׳יתפרסית עתיקהפיניקיתפונפיאןפרוסיתפרובנסאל עתיקהקיצ" + - "׳הראג׳סטאנירפאנויררוטונגאןרומבורומאניארומניתראווהסנדאווהסאחהארמית שומרו" + - "ניתסמבורוסאסקסאנטאלינגמבאיסאנגוסיציליאניתסקוטיתכורדית דרומיתסנקהסנהסלקו" + - "פקויראבורו סניאירית עתיקהשילהשאןערבית צ׳אדיתסידאמוסאמי דרומיתלולה סאמיא" + - "ינארי סאמיסקולט סאמיסונינקהסוגדיאןסרנאן טונגוסררסאהוסוקומהסוסושומריתקומ" + - "וריתסירית קלאסיתסוריתטימנהטסוטרנוטטוםטיגריתטיבטוקלאוקלינגוןטלינגיטטמאשק" + - "ניאסה טונגהטוק פיסיןטרוקוטסימשיאןטומבוקהטובאלוטסוואקטוביניתתמאזיגת של מ" + - "רכז מרוקואודמורטאוגריתיתאומבונדושפה לא ידועהוואיווטיקוונג׳ווואלסרווליאט" + - "הווראיוואשווורלפיריסינית ווקלמיקיתסוגהיאויאפזיתיאנגבןימבהקנטונזיתזאפוטק" + - "בליסימבולסזנאגהתמזיע׳ת מרוקאית תקניתזוניללא תוכן לשוניזאזאערבית ספרותית" + - "גרמנית (שוויץ)אנגלית (בריטניה)צרפתית (שוויץ)סקסונית תחתיתפלמיתמולדביתסר" + - "בו-קרואטיתסווהילי קונגוסינית פשוטהסינית מסורתית" - -var heLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0018, 0x0022, 0x0032, 0x003a, 0x0046, 0x0056, - 0x0060, 0x006c, 0x007a, 0x008a, 0x0094, 0x00a2, 0x00b2, 0x00c0, - 0x00cc, 0x00d8, 0x00e4, 0x00f0, 0x00fe, 0x010a, 0x0118, 0x0126, - 0x0132, 0x0144, 0x014a, 0x0154, 0x017c, 0x0188, 0x0194, 0x019c, - 0x01a8, 0x01b2, 0x01be, 0x01c6, 0x01d2, 0x01de, 0x01ec, 0x01f8, - 0x0206, 0x0210, 0x021a, 0x0222, 0x022c, 0x0238, 0x0248, 0x0254, - 0x026d, 0x0277, 0x028e, 0x02a0, 0x02ac, 0x02bc, 0x02c6, 0x02d0, - 0x02da, 0x02e4, 0x02f5, 0x0303, 0x0320, 0x032e, 0x033a, 0x0342, - // Entry 40 - 7F - 0x035d, 0x036f, 0x0383, 0x038d, 0x039e, 0x03ae, 0x03b6, 0x03c6, - 0x03d4, 0x03e8, 0x03f2, 0x0400, 0x040e, 0x0418, 0x0424, 0x0434, - 0x043e, 0x0450, 0x045a, 0x0464, 0x0474, 0x0480, 0x048e, 0x049a, - 0x04a2, 0x04ae, 0x04be, 0x04ca, 0x04e0, 0x04ea, 0x04fc, 0x0508, - 0x050e, 0x051a, 0x052d, 0x0537, 0x0543, 0x054f, 0x055b, 0x0569, - 0x0577, 0x0587, 0x0593, 0x059d, 0x05a7, 0x05b5, 0x05c1, 0x05d8, - 0x05e4, 0x05f0, 0x05fe, 0x0617, 0x0636, 0x064d, 0x065b, 0x0669, - 0x067b, 0x068d, 0x0699, 0x06a5, 0x06b1, 0x06bf, 0x06c7, 0x06d3, - // Entry 80 - BF - 0x06dd, 0x06ef, 0x06fb, 0x0707, 0x0715, 0x0721, 0x072b, 0x073f, - 0x074d, 0x075b, 0x0769, 0x077c, 0x0784, 0x0790, 0x079e, 0x07ac, - 0x07b8, 0x07c0, 0x07cc, 0x07d8, 0x07e2, 0x07ee, 0x0803, 0x0813, - 0x081f, 0x082d, 0x0839, 0x0843, 0x0851, 0x0859, 0x0869, 0x0879, - 0x0885, 0x0893, 0x089f, 0x08ab, 0x08b5, 0x08c1, 0x08cd, 0x08df, - 0x08e9, 0x08f7, 0x0901, 0x0911, 0x0922, 0x092e, 0x0938, 0x0940, - 0x094a, 0x0956, 0x0960, 0x096a, 0x0972, 0x0980, 0x098e, 0x0998, - 0x09a4, 0x09a4, 0x09b4, 0x09bc, 0x09c4, 0x09ce, 0x09ce, 0x09d8, - // Entry C0 - FF - 0x09d8, 0x09ef, 0x0a06, 0x0a14, 0x0a1e, 0x0a2e, 0x0a2e, 0x0a3a, - 0x0a3a, 0x0a3a, 0x0a46, 0x0a46, 0x0a46, 0x0a4c, 0x0a4c, 0x0a5a, - 0x0a5a, 0x0a68, 0x0a76, 0x0a84, 0x0a92, 0x0a9a, 0x0aa2, 0x0aa2, - 0x0aae, 0x0ab6, 0x0abe, 0x0abe, 0x0ac4, 0x0ace, 0x0ace, 0x0ae9, - 0x0af9, 0x0b03, 0x0b0b, 0x0b0b, 0x0b11, 0x0b1f, 0x0b1f, 0x0b1f, - 0x0b29, 0x0b29, 0x0b31, 0x0b3b, 0x0b47, 0x0b57, 0x0b5f, 0x0b67, - 0x0b73, 0x0b7b, 0x0b85, 0x0b91, 0x0b99, 0x0b99, 0x0ba5, 0x0baf, - 0x0bbd, 0x0bcd, 0x0bd9, 0x0be1, 0x0bf4, 0x0c02, 0x0c14, 0x0c20, - // Entry 100 - 13F - 0x0c2a, 0x0c45, 0x0c51, 0x0c51, 0x0c69, 0x0c86, 0x0c92, 0x0c9c, - 0x0ca8, 0x0cb2, 0x0cbe, 0x0cca, 0x0cd6, 0x0ce0, 0x0cea, 0x0cf4, - 0x0d0b, 0x0d0b, 0x0d15, 0x0d30, 0x0d45, 0x0d4f, 0x0d5b, 0x0d63, - 0x0d6b, 0x0d6b, 0x0d80, 0x0d8a, 0x0d96, 0x0daf, 0x0daf, 0x0dbb, - 0x0dbb, 0x0dc1, 0x0dd3, 0x0dd3, 0x0dd9, 0x0df8, 0x0e11, 0x0e28, - 0x0e28, 0x0e41, 0x0e5a, 0x0e68, 0x0e6c, 0x0e7a, 0x0e8b, 0x0e93, - 0x0e9d, 0x0e9d, 0x0ea3, 0x0eb3, 0x0eb3, 0x0ed9, 0x0efb, 0x0efb, - 0x0f05, 0x0f17, 0x0f21, 0x0f29, 0x0f40, 0x0f5d, 0x0f5d, 0x0f5d, - // Entry 140 - 17F - 0x0f65, 0x0f73, 0x0f7d, 0x0f90, 0x0f9c, 0x0f9c, 0x0fb0, 0x0fb8, - 0x0fc2, 0x0fd9, 0x0fee, 0x0ff6, 0x1000, 0x100e, 0x101a, 0x102a, - 0x102a, 0x102a, 0x1038, 0x1044, 0x1050, 0x1067, 0x107e, 0x107e, - 0x1091, 0x109b, 0x10a5, 0x10ab, 0x10b3, 0x10bd, 0x10c9, 0x10d3, - 0x10db, 0x10e7, 0x10fd, 0x10fd, 0x1105, 0x1105, 0x110f, 0x111f, - 0x1134, 0x1134, 0x1134, 0x113c, 0x114a, 0x115a, 0x1173, 0x1181, - 0x1191, 0x1199, 0x11ae, 0x11ae, 0x11ae, 0x11ba, 0x11c4, 0x11d0, - 0x11da, 0x11ea, 0x11f8, 0x1204, 0x120e, 0x1218, 0x1220, 0x1228, - // Entry 180 - 1BF - 0x1232, 0x1232, 0x1232, 0x1232, 0x123c, 0x123c, 0x1246, 0x126b, - 0x1275, 0x128c, 0x128c, 0x12a1, 0x12ad, 0x12b7, 0x12bf, 0x12c7, - 0x12cf, 0x12cf, 0x12cf, 0x12dd, 0x12e7, 0x12f5, 0x1305, 0x130f, - 0x131d, 0x1327, 0x132f, 0x1339, 0x1343, 0x134b, 0x1351, 0x1378, - 0x138f, 0x13a4, 0x13aa, 0x13b4, 0x13c6, 0x13d0, 0x13e0, 0x13ea, - 0x13f2, 0x13f2, 0x1400, 0x1411, 0x1419, 0x1429, 0x1437, 0x1437, - 0x1441, 0x144b, 0x145f, 0x1477, 0x1489, 0x1491, 0x14a8, 0x14b4, - 0x14bc, 0x14c6, 0x14c6, 0x14d4, 0x14e4, 0x14ee, 0x1508, 0x1508, - // Entry 1C0 - 1FF - 0x1510, 0x1525, 0x152d, 0x1548, 0x1558, 0x1568, 0x1572, 0x157c, - 0x1586, 0x15a3, 0x15b3, 0x15bd, 0x15cb, 0x15db, 0x15e7, 0x15e7, - 0x1602, 0x1602, 0x1602, 0x1617, 0x1617, 0x1625, 0x1625, 0x1625, - 0x1633, 0x163f, 0x165a, 0x1664, 0x1664, 0x1676, 0x1682, 0x1694, - 0x1694, 0x1694, 0x169e, 0x16aa, 0x16aa, 0x16aa, 0x16aa, 0x16b8, - 0x16c2, 0x16d0, 0x16d8, 0x16f3, 0x16ff, 0x1707, 0x1715, 0x1715, - 0x1721, 0x172b, 0x173f, 0x174b, 0x174b, 0x1764, 0x176c, 0x1772, - 0x1772, 0x177c, 0x1795, 0x17aa, 0x17aa, 0x17b2, 0x17b8, 0x17cf, - // Entry 200 - 23F - 0x17db, 0x17db, 0x17db, 0x17f0, 0x1801, 0x1816, 0x1829, 0x1837, - 0x1845, 0x185a, 0x1860, 0x1868, 0x1868, 0x1874, 0x187c, 0x1888, - 0x1896, 0x18ad, 0x18b7, 0x18b7, 0x18b7, 0x18c1, 0x18c7, 0x18cf, - 0x18d7, 0x18e3, 0x18e9, 0x18f5, 0x18f5, 0x1903, 0x1911, 0x1911, - 0x191b, 0x1930, 0x1941, 0x1941, 0x194b, 0x194b, 0x195b, 0x195b, - 0x1969, 0x1975, 0x1981, 0x198f, 0x19b6, 0x19c4, 0x19d4, 0x19e4, - 0x19fa, 0x1a02, 0x1a02, 0x1a02, 0x1a02, 0x1a02, 0x1a0c, 0x1a0c, - 0x1a18, 0x1a24, 0x1a32, 0x1a3c, 0x1a46, 0x1a56, 0x1a65, 0x1a73, - // Entry 240 - 27F - 0x1a73, 0x1a7b, 0x1a81, 0x1a8d, 0x1a99, 0x1aa1, 0x1aa1, 0x1ab1, - 0x1abd, 0x1ad1, 0x1ad1, 0x1adb, 0x1b03, 0x1b0b, 0x1b25, 0x1b2d, - 0x1b46, 0x1b46, 0x1b46, 0x1b5f, 0x1b5f, 0x1b5f, 0x1b7c, 0x1b7c, - 0x1b7c, 0x1b7c, 0x1b7c, 0x1b7c, 0x1b7c, 0x1b95, 0x1bae, 0x1bb8, - 0x1bb8, 0x1bb8, 0x1bc6, 0x1bdd, 0x1bf6, 0x1c0b, 0x1c24, -} // Size: 1254 bytes - -const hiLangStr string = "" + // Size: 11700 bytes - "अफ़ारअब्ख़ाज़ियनअवस्ताईअफ़्रीकीअकनअम्हेरीअर्गोनीअरबीअसमियाअवेरिकआयमाराअज" + - "़रबैजानीबशख़िरबेलारूसीबुल्गारियाईबिस्लामाबाम्बाराबंगालीतिब्बतीब्रेटनबो" + - "स्नियाईकातालानचेचनकमोरोकोर्सीकनक्रीचेकचर्च साल्विकचूवाशवेल्शडेनिशजर्मन" + - "दिवेहीज़ोन्गखाईवेयूनानीअंग्रेज़ीएस्पेरेंतोस्पेनीएस्टोनियाईबास्कफ़ारसीफ" + - "ुलाहफ़िनिशफिजियनफ़ैरोइज़फ़्रेंचपश्चिमी फ़्रिसियाईआइरिशस्कॉटिश गाएलिकगै" + - "लिशियनगुआरानीगुजरातीमैंक्सहौसाहिब्रूहिन्दीहिरी मोटूक्रोएशियाईहैतियाईहं" + - "गेरियाईआर्मेनियाईहरैरोइंटरलिंगुआइंडोनेशियाईईन्टरलिंगुइईग्बोसिचुआन यीइन" + - "ुपियाक्इडौआइसलैंडिकइतालवीइनूकीटूत्जापानीजावानीज़जॉर्जियाईकोंगोकिकुयूक्" + - "वान्यामाकज़ाख़कलालीसुतखमेरकन्नड़कोरियाईकनुरीकश्मीरीकुर्दिशकोमीकोर्निशक" + - "िर्गीज़लैटिनलग्ज़मबर्गीगांडालिंबर्गिशलिंगालालाओलिथुआनियाईल्यूबा-कटांगा" + - "लातवियाईमालागासीमार्शलीज़माओरीमकदूनियाईमलयालममंगोलियाईमराठीमलयमाल्टीज़" + - "बर्मीज़नाउरूउत्तरी देबेलनेपालीडोन्गाडचनॉर्वेजियाई नॉयनॉर्स्कनॉर्वेजिया" + - "ई बोकमालदक्षिण देबेलनावाजोन्यानजाओसीटानओजिब्वाओरोमोउड़ियाओस्सेटिकपंजाब" + - "ीपालीपोलिशपश्तोपुर्तगालीक्वेचुआरोमान्शरुन्दीरोमानियाईरूसीकिन्यारवांडास" + - "ंस्कृतसार्दिनियनसिंधीनॉर्दन सामीसांगोसिंहलीस्लोवाकस्लोवेनियाईसामोनशोणा" + - "सोमालीअल्बानियाईसर्बियाईस्वातीदक्षिणी सेसेथोसुंडानीस्वीडिशस्वाहिलीतमिल" + - "तेलुगूताजिकथाईतिग्रीन्यातुर्कमेनसेत्स्वानाटोंगनतुर्कीसोंगातातारताहितिय" + - "नविघुरयूक्रेनियाईउर्दूउज़्बेकवेन्दावियतनामीवोलापुकवाल्लूनवोलोफ़ख़ोसायह" + - "ूदीयोरूबाज़ुआंगचीनीज़ुलूअचाइनीसअकोलीअदान्गमेअदिघेअफ्रिहिलीअग्हेमऐनूअक्" + - "कादीअलेउतदक्षिणी अल्ताईपुरानी अंग्रेज़ीअंगिकाऐरेमेकमापूचेअरापाहोअरावकअ" + - "सुअस्तुरियनअवधीबलूचीबालिनीसबसाबेजाबेम्बाबेनापश्चिमी बलोचीभोजपुरीबिकोलब" + - "िनीसिक्सिकाब्रजबोडोबुरियातबगिनीसब्लिनकैड्डोकैरिबअत्समसिबुआनोशिगाचिब्चा" + - "छगाताईचूकीसमारीचिनूक जारगॉनचोक्तौशिपेव्यानचेरोकीशेयेन्नसोरानी कुर्दिशक" + - "ॉप्टिकक्रीमीन तुर्कीसेसेल्वा क्रिओल फ्रेंचकाशुबियनदाकोतादार्गवातैताडिल" + - "ैवेयरस्लेवडोग्रिबदिन्काझार्माडोग्रीनिचला सॉर्बियनदुआलामध्यकालीन पुर्तग" + - "ालीजोला-फोंईड्युलादज़ागाएम्बुएफिकप्राचीन मिस्रीएकाजुकएलामाइटमध्यकालीन " + - "अंग्रेज़ीइवोन्डोफैन्गफ़िलिपीनोफॉनकेजन फ़्रेंचमध्यकालीन फ़्रांसीसीपुरात" + - "न फ़्रांसीसीउत्तरी फ़्रीसियाईपूर्वी फ़्रीसियाईफ्रीयुलीयानगागागौज़गायोग" + - "्बायागीज़गिल्बरतीसमध्यकालीन हाइ जर्मनपुरातन हाइ जर्मनगाँडीगोरोन्तालोगॉ" + - "थिकग्रेबोप्राचीन यूनानीस्विस जर्मनगुसीग्विचइनहैडाहवाईहिलिगेननहिताइतह्म" + - "ॉंगऊपरी सॉर्बियनहूपाइबानइबिबियोइलोकोइंगुशलोज्बाननगोंबामैकहैमेजुदेओ-पर्" + - "शियनजुदेओ-अरेबिककारा-कल्पककबाइलकाचिनज्जुकम्बाकावीकबार्डियनत्यापमैकोंडक" + - "ाबुवेर्दियानुकोरोखासीखोतानीसकोयरा चीनीकाकोकलेंजिनकिम्बन्दुकोमी-पर्मयाक" + - "कोंकणीकोसरैनक्पेलकराचय-बल्कारकरेलियनकुरूखशम्बालाबफिआकोलोनियाईकुमीकक्यू" + - "तनाईलादीनोलांगिलाह्न्डालाम्बालेज़्घीयनलैकोटामोंगोलुईज़ियाना क्रियोललोज" + - "़ीउत्तरी लूरील्यूबा-लुलुआलुइसेनोलुन्डाल्युओमिज़ोल्युईआमादुरीसमगहीमैथिल" + - "ीमकासरमन्डिन्गोमसाईमोक्षमंदारमेन्डेमेरुमोरीस्येनमध्यकालीन आइरिशमैखुवा-" + - "मीट्टोमेटामिकमैकमिनांग्काबाउमन्चुमणिपुरीमोहौकमोस्सीमुंडैंगएकाधिक भाषाए" + - "ँक्रीकमिरांडीमारवाड़ीएर्ज़यामाज़न्देरानीnanनीपोलिटननामानिचला जर्मननेवा" + - "ड़ीनियासनियुआनक्वासिओगैम्बूनोगाईपुराना नॉर्सएन्कोउत्तरी सोथोनुएरपारम्प" + - "रिक नेवारीन्यामवेज़ीन्यानकोलन्योरोन्ज़ीमाओसेजओटोमान तुर्किशपंगासीनानपा" + - "ह्लावीपाम्पान्गापापियामेन्टोपलोउआननाइजीरियाई पिडगिनपुरानी फारसीफोएनिशि" + - "यनपोह्नपिएनप्रुशियाईपुरानी प्रोवेन्सलकिशराजस्थानीरापानुईरारोतोंगनरोम्ब" + - "ोरोमानीअरोमानियनरवासन्डावेयाकूतसामैरिटन अरैमिकसैम्बुरुसासाकसंथालीन्गाम" + - "्बेसैंगुसिसिलियनस्कॉट्सदक्षिणी कार्डिशसेनासेल्कपकोयराबोरो सेन्नीपुरानी" + - " आइरिशतैचेल्हितशैनसिदामोदक्षिणी सामील्युल सामीइनारी सामीस्कोल्ट सामीसोनि" + - "न्केसोग्डिएनस्रानान टॉन्गोसेरेरसाहोसुकुमासुसुसुमेरियनकोमोरियनक्लासिकल " + - "सिरिएकसिरिएकटिम्नेटेसोतेरेनोतेतुमटाइग्रेतिवतोकेलाऊक्लिंगनत्लिंगिततामाश" + - "ेकन्यासा टोन्गाटोक पिसिनतारोकोत्सिमीशियनतम्बूकातुवालुटासवाकतुवीनियनमध्" + - "य एटलस तमाज़ितउदमुर्तयुगैरिटिकउम्बुन्डुअज्ञात भाषावाईवॉटिकवुंजोवाल्सरव" + - "लामोवारैवाशोवॉल्पेरीकाल्मिकसोगायाओयापीसयांगबेनयेंबाकैंटोनीज़ज़ेपोटेकब्" + - "लिसिम्बॉल्सज़ेनान्गामानक मोरक्कन तामाज़ाइटज़ूनीकोई भाषा सामग्री नहींज़" + - "ाज़ाआधुनिक मानक अरबीऑस्ट्रियाई जर्मनस्विस उच्च जर्मनऑस्ट्रेलियाई अंग्र" + - "ेज़ीकनाडाई अंग्रेज़ीब्रिटिश अंग्रेज़ीअमेरिकी अंग्रेज़ीलैटिन अमेरिकी स्" + - "पेनिशयूरोपीय स्पेनिशमैक्सिकन स्पेनिशकनाडाई फ़्रेंचस्विस फ़्रेंचनिचली स" + - "ैक्सनफ़्लेमिशब्राज़ीली पुर्तगालीयूरोपीय पुर्तगालीमोलडावियनसेर्बो-क्रोए" + - "शियाईकांगो स्वाहिलीसरलीकृत चीनीपारंपरिक चीनी" - -var hiLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0030, 0x0045, 0x005d, 0x0066, 0x007b, 0x0090, - 0x009c, 0x00ae, 0x00c0, 0x00d2, 0x00f0, 0x0102, 0x011a, 0x013b, - 0x0153, 0x016b, 0x017d, 0x0192, 0x01a4, 0x01bf, 0x01d4, 0x01e0, - 0x01ef, 0x0207, 0x0213, 0x021c, 0x023e, 0x024d, 0x025c, 0x026b, - 0x027a, 0x028c, 0x02a4, 0x02ad, 0x02bf, 0x02da, 0x02f8, 0x030a, - 0x0328, 0x0337, 0x0349, 0x0358, 0x036a, 0x037c, 0x0394, 0x03a9, - 0x03dd, 0x03ec, 0x0414, 0x042c, 0x0441, 0x0456, 0x0468, 0x0474, - 0x0486, 0x0498, 0x04b1, 0x04cf, 0x04e4, 0x04ff, 0x051d, 0x052c, - // Entry 40 - 7F - 0x054a, 0x056b, 0x058c, 0x059b, 0x05b4, 0x05cf, 0x05d8, 0x05f3, - 0x0605, 0x0620, 0x0632, 0x064a, 0x0665, 0x0674, 0x0686, 0x06a4, - 0x06b6, 0x06ce, 0x06da, 0x06ec, 0x0701, 0x0710, 0x0725, 0x073a, - 0x0746, 0x075b, 0x0773, 0x0782, 0x07a3, 0x07b2, 0x07cd, 0x07e2, - 0x07eb, 0x0809, 0x082e, 0x0846, 0x085e, 0x0879, 0x0888, 0x08a3, - 0x08b5, 0x08d0, 0x08df, 0x08e8, 0x0900, 0x0915, 0x0924, 0x0946, - 0x0958, 0x096a, 0x0970, 0x09b0, 0x09e4, 0x0a06, 0x0a18, 0x0a2d, - 0x0a3f, 0x0a54, 0x0a63, 0x0a75, 0x0a8d, 0x0a9f, 0x0aab, 0x0aba, - // Entry 80 - BF - 0x0ac9, 0x0ae4, 0x0af9, 0x0b0e, 0x0b20, 0x0b3b, 0x0b47, 0x0b6b, - 0x0b80, 0x0b9e, 0x0bad, 0x0bcc, 0x0bdb, 0x0bed, 0x0c02, 0x0c23, - 0x0c32, 0x0c3e, 0x0c50, 0x0c6e, 0x0c86, 0x0c98, 0x0cc0, 0x0cd5, - 0x0cea, 0x0d02, 0x0d0e, 0x0d20, 0x0d2f, 0x0d38, 0x0d56, 0x0d6e, - 0x0d8c, 0x0d9b, 0x0dad, 0x0dbc, 0x0dcb, 0x0de3, 0x0df2, 0x0e13, - 0x0e22, 0x0e37, 0x0e49, 0x0e61, 0x0e76, 0x0e8b, 0x0e9d, 0x0eac, - 0x0ebb, 0x0ecd, 0x0edf, 0x0eeb, 0x0efa, 0x0f0f, 0x0f1e, 0x0f36, - 0x0f45, 0x0f45, 0x0f60, 0x0f72, 0x0f7b, 0x0f90, 0x0f90, 0x0f9f, - // Entry C0 - FF - 0x0f9f, 0x0fc7, 0x0ff5, 0x1007, 0x1019, 0x102b, 0x102b, 0x1040, - 0x1040, 0x1040, 0x104f, 0x104f, 0x104f, 0x1058, 0x1058, 0x1073, - 0x1073, 0x107f, 0x108e, 0x10a3, 0x10a3, 0x10ac, 0x10ac, 0x10ac, - 0x10ac, 0x10b8, 0x10ca, 0x10ca, 0x10d6, 0x10d6, 0x10d6, 0x10fb, - 0x1110, 0x111f, 0x112b, 0x112b, 0x112b, 0x1143, 0x1143, 0x1143, - 0x114f, 0x114f, 0x115b, 0x115b, 0x1170, 0x1182, 0x1182, 0x1191, - 0x1191, 0x11a3, 0x11b2, 0x11b2, 0x11c1, 0x11c1, 0x11d6, 0x11e2, - 0x11f4, 0x1206, 0x1215, 0x1221, 0x1243, 0x1255, 0x1270, 0x1282, - // Entry 100 - 13F - 0x1297, 0x12bf, 0x12d4, 0x12d4, 0x12fc, 0x133a, 0x1352, 0x1364, - 0x1379, 0x1385, 0x139d, 0x13ac, 0x13c1, 0x13d3, 0x13e5, 0x13f7, - 0x141f, 0x141f, 0x142e, 0x1465, 0x147e, 0x1490, 0x14a2, 0x14b1, - 0x14bd, 0x14bd, 0x14e5, 0x14f7, 0x150c, 0x1543, 0x1543, 0x1558, - 0x1558, 0x1567, 0x1582, 0x1582, 0x158b, 0x15ad, 0x15e7, 0x1618, - 0x1618, 0x1649, 0x167a, 0x169b, 0x16a1, 0x16b3, 0x16b3, 0x16bf, - 0x16d1, 0x16d1, 0x16dd, 0x16f8, 0x16f8, 0x172d, 0x1759, 0x1759, - 0x1768, 0x1786, 0x1795, 0x17a7, 0x17cf, 0x17ee, 0x17ee, 0x17ee, - // Entry 140 - 17F - 0x17fa, 0x180f, 0x181b, 0x181b, 0x1827, 0x1827, 0x183f, 0x1851, - 0x1863, 0x1888, 0x1888, 0x1894, 0x18a0, 0x18b5, 0x18c4, 0x18d3, - 0x18d3, 0x18d3, 0x18e8, 0x18fa, 0x190f, 0x1934, 0x1956, 0x1956, - 0x1972, 0x1981, 0x1990, 0x199c, 0x19ab, 0x19b7, 0x19d2, 0x19d2, - 0x19e1, 0x19f3, 0x1a1d, 0x1a1d, 0x1a29, 0x1a29, 0x1a35, 0x1a4a, - 0x1a66, 0x1a66, 0x1a66, 0x1a72, 0x1a87, 0x1aa2, 0x1ac4, 0x1ad6, - 0x1ae8, 0x1af7, 0x1b19, 0x1b19, 0x1b19, 0x1b2e, 0x1b3d, 0x1b52, - 0x1b5e, 0x1b79, 0x1b88, 0x1ba0, 0x1bb2, 0x1bc1, 0x1bd9, 0x1beb, - // Entry 180 - 1BF - 0x1c06, 0x1c06, 0x1c06, 0x1c06, 0x1c18, 0x1c18, 0x1c27, 0x1c5b, - 0x1c6a, 0x1c89, 0x1c89, 0x1cab, 0x1cc0, 0x1cd2, 0x1ce1, 0x1cf0, - 0x1d02, 0x1d02, 0x1d02, 0x1d17, 0x1d17, 0x1d23, 0x1d35, 0x1d44, - 0x1d5f, 0x1d6b, 0x1d6b, 0x1d7a, 0x1d89, 0x1d9b, 0x1da7, 0x1dc2, - 0x1ded, 0x1e12, 0x1e1e, 0x1e30, 0x1e54, 0x1e63, 0x1e78, 0x1e87, - 0x1e99, 0x1e99, 0x1eae, 0x1ed3, 0x1ee2, 0x1ef7, 0x1f0f, 0x1f0f, - 0x1f0f, 0x1f24, 0x1f48, 0x1f4b, 0x1f63, 0x1f6f, 0x1f8e, 0x1fa3, - 0x1fb2, 0x1fc4, 0x1fc4, 0x1fd9, 0x1feb, 0x1ffa, 0x201c, 0x201c, - // Entry 1C0 - 1FF - 0x202b, 0x204a, 0x2056, 0x2084, 0x20a2, 0x20ba, 0x20cc, 0x20e1, - 0x20ed, 0x2115, 0x2130, 0x2148, 0x2166, 0x218a, 0x219c, 0x219c, - 0x21cd, 0x21cd, 0x21cd, 0x21ef, 0x21ef, 0x220a, 0x220a, 0x220a, - 0x2225, 0x2240, 0x2271, 0x227a, 0x227a, 0x2295, 0x22aa, 0x22c5, - 0x22c5, 0x22c5, 0x22d7, 0x22e9, 0x22e9, 0x22e9, 0x22e9, 0x2304, - 0x230d, 0x2322, 0x2331, 0x235c, 0x2374, 0x2383, 0x2395, 0x2395, - 0x23ad, 0x23bc, 0x23d4, 0x23e9, 0x23e9, 0x2414, 0x2414, 0x2420, - 0x2420, 0x2432, 0x2460, 0x2482, 0x2482, 0x249d, 0x24a6, 0x24a6, - // Entry 200 - 23F - 0x24b8, 0x24b8, 0x24b8, 0x24da, 0x24f6, 0x2512, 0x2534, 0x254c, - 0x2564, 0x258c, 0x259b, 0x25a7, 0x25a7, 0x25b9, 0x25c5, 0x25dd, - 0x25f5, 0x2620, 0x2632, 0x2632, 0x2632, 0x2644, 0x2650, 0x2662, - 0x2671, 0x2686, 0x268f, 0x26a4, 0x26a4, 0x26b9, 0x26d1, 0x26d1, - 0x26e6, 0x270b, 0x2724, 0x2724, 0x2736, 0x2736, 0x2754, 0x2754, - 0x2769, 0x277b, 0x278d, 0x27a5, 0x27d4, 0x27e9, 0x2804, 0x281f, - 0x283e, 0x2847, 0x2847, 0x2847, 0x2847, 0x2847, 0x2856, 0x2856, - 0x2865, 0x2877, 0x2886, 0x2892, 0x289e, 0x28b6, 0x28b6, 0x28cb, - // Entry 240 - 27F - 0x28cb, 0x28d7, 0x28e0, 0x28ef, 0x2904, 0x2913, 0x2913, 0x292e, - 0x2946, 0x296d, 0x296d, 0x2988, 0x29c6, 0x29d5, 0x2a0e, 0x2a20, - 0x2a4c, 0x2a4c, 0x2a7a, 0x2aa6, 0x2ae6, 0x2b14, 0x2b45, 0x2b76, - 0x2bb1, 0x2bdc, 0x2c0a, 0x2c0a, 0x2c32, 0x2c57, 0x2c79, 0x2c91, - 0x2cc8, 0x2cf9, 0x2d14, 0x2d45, 0x2d6d, 0x2d8f, 0x2db4, -} // Size: 1254 bytes - -const hrLangStr string = "" + // Size: 4673 bytes - "afarskiabhaskiavestičkiafrikaansakanskiamharskiaragonskiarapskiasamskiav" + - "arskiajmarskiazerbajdžanskibaškirskibjeloruskibugarskibislamabambarabang" + - "latibetskibretonskibosanskikatalonskičečenskichamorrokorzičkicreečeškicr" + - "kvenoslavenskičuvaškivelškidanskinjemačkidivehidzongkhaewegrčkiengleskie" + - "sperantošpanjolskiestonskibaskijskiperzijskifulafinskifidžijskiferojskif" + - "rancuskizapadnofrizijskiirskiškotski gaelskigalicijskigvaranskigudžarats" + - "kimanskihausahebrejskihindskihiri motuhrvatskihaićanski kreolskimađarski" + - "armenskihererointerlinguaindonezijskiinterliguaigbosichuan jiinupiaqidoi" + - "slandskitalijanskiinuktitutjapanskijavanskigruzijskikongokikuyukuanyamak" + - "azaškikalaallisutkmerskikarnatačkikorejskikanurikašmirskikurdskikomikorn" + - "skikirgiskilatinskiluksemburškigandalimburškilingalalaoskilitavskiluba-k" + - "atangalatvijskimalgaškimaršalskimaorskimakedonskimalajalamskimongolskima" + - "rathskimalajskimalteškiburmanskinaurusjeverni ndebelenepalskindonganizoz" + - "emskinorveški nynorsknorveški bokmåljužni ndebelenavajonjandžaokcitanski" + - "ojibwaoromskiorijskiosetskipandžapskipalipoljskipaštunskiportugalskikeču" + - "anskiretoromanskirundirumunjskiruskikinyarwandasanskrtskisardskisindskis" + - "jeverni samisangosinhaleškislovačkislovenskisamoanskishonasomalskialbans" + - "kisrpskisvatisesotskisundanskišvedskisvahilitamilskiteluškitadžičkitajla" + - "ndskitigrinjaturkmenskicvanatonganskiturskitsongatatarskitahićanskiujgur" + - "skiukrajinskiurdskiuzbečkivendavijetnamskivolapükvalonskivolofxhosajidiš" + - "jorupskizhuangkineskizuluačinskiačoliadangmeadigejskiafrihiliaghemainusk" + - "iakadskialeutskijužni altaistaroengleskiangikaaramejskimapuchearapahoara" + - "vačkiasuasturijskiawadhibelučkibalijskibasabamunskighomalabejabembabenab" + - "afutzapadnobaludžijskibhojpuribikolskibinikomsiksikabrajbodoakooseburjat" + - "skibuginskibulublinmedumbacaddokaripskicayugaatsamcebuanochigačibčačagat" + - "ajskichuukesemarijskichinook žargonchoctawchipewyančerokijskičejenskisor" + - "anski kurdskikoptskikrimski turskisejšelski kreolskikašupskidakota jezik" + - "dargwataitadelavarskislavedogribdinkazarmadogridonjolužičkidualasrednjon" + - "izozemskijola-fonyidyuladazagaembuefikstaroegipatskiekajukelamitskisredn" + - "joengleskiewondofangfilipinskifonkajunski francuskisrednjofrancuskistaro" + - "francuskisjevernofrizijskiistočnofrizijskifurlanskigagagauskigan kineski" + - "gayogbayageezgilbertskisrednjogornjonjemačkistarovisokonjemačkigondigoro" + - "ntalogotskigrebostarogrčkišvicarski njemačkigusiigwich’inhaidihakka kine" + - "skihavajskihiligaynonskihetitskihmonggornjolužičkixiang kineskihupaibani" + - "bibioilokoingušetskilojbanngombamachamejudejsko-perzijskijudejsko-arapsk" + - "ikara-kalpakkabilskikačinskikajekambakawikabardinskikanembutyapmakondeze" + - "lenortskikorokhasikhotanesekoyra chiinikakokalenjinkimbundukomi-permskik" + - "onkaninaurskikpellekarachay-balkarkarelijskikuruškishambalabafiakelnskik" + - "umykkutenailadinolangilahndalambalezgiškilakotamongolujzijanski kreolski" + - "lozisjevernolurskiluba-lulualuisenolundaluolushailuyiamadurskimafamagahi" + - "maithilimakasarmandingomasajskimabamokshamandarmendemerumauricijski kreo" + - "lskisrednjoirskimakhuwa-meettometa’micmacminangkabaumandžurskimanipurski" + - "mohokmossimundangviše jezikacreekmirandskimarwarimyenemordvinskimazander" + - "anskimin nan kineskinapolitanskinamadonjonjemačkinewariniasniujskikwasio" + - "ngiemboonnogajskistaronorveškin’kosjeverni sotskinuerskiklasični newarin" + - "yamwezinyankolenyoronzimaosageturski - otomanskipangasinanpahlavipampang" + - "apapiamentopalauanskinigerijski pidžinstaroperzijskifeničkipohnpeianprus" + - "kistaroprovansalskikičerajasthanirapa nuirarotonškiromboromskiaromunskir" + - "wasandawejakutskisamarijanski aramejskisamburusasaksantalskingambaysangu" + - "sicilijskiškotskijužnokurdskisenecasenaselkupskikoyraboro sennistaroirsk" + - "itachelhitshančadski arapskisidamojužni samilule samiinari samiskolt sam" + - "isoninkesogdiensranan tongoserersahosukumasususumerskikomorskiklasični s" + - "irskisirijskitemnetesoterenotetumtigriškitivtokelaunskiklingonskitlingit" + - "tamašečkinyasa tongatok pisintarokotsimshiantumbukatuvaluanskitasawaqtuv" + - "inskitamašek (Srednji Atlas)udmurtskiugaritskiumbundunepoznati jezikvaiv" + - "otskivunjowalserskiwalamowaraywashowarlpiriwu kineskikalmyksogayaojapski" + - "yangbenyembakantonskizapotečkiBlissovi simbolizenagastandardni marokansk" + - "i tamašekzunibez jezičnog sadržajazazakimoderni standardni arapskijužnoa" + - "zerbajdžanskiaustrijski njemačkigornjonjemački (švicarski)australski eng" + - "leskikanadski engleskibritanski engleskiamerički engleskilatinoamerički " + - "španjolskieuropski španjolskimeksički španjolskikanadski francuskišvica" + - "rski francuskidonjosaksonskiflamanskibrazilski portugalskieuropski portu" + - "galskimoldavskisrpsko-hrvatskikongoanski svahilikineski (pojednostavljen" + - "i)kineski (tradicionalni)" - -var hrLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0007, 0x000e, 0x0018, 0x0021, 0x0028, 0x0030, 0x0039, - 0x0040, 0x0047, 0x004e, 0x0056, 0x0065, 0x006f, 0x0079, 0x0081, - 0x0088, 0x008f, 0x0095, 0x009d, 0x00a6, 0x00ae, 0x00b8, 0x00c2, - 0x00ca, 0x00d3, 0x00d7, 0x00de, 0x00ee, 0x00f7, 0x00fe, 0x0104, - 0x010d, 0x0113, 0x011b, 0x011e, 0x0124, 0x012c, 0x0135, 0x0140, - 0x0148, 0x0151, 0x015a, 0x015e, 0x0164, 0x016e, 0x0176, 0x017f, - 0x018f, 0x0194, 0x01a4, 0x01ae, 0x01b7, 0x01c3, 0x01c9, 0x01ce, - 0x01d7, 0x01de, 0x01e7, 0x01ef, 0x0202, 0x020b, 0x0213, 0x0219, - // Entry 40 - 7F - 0x0224, 0x0230, 0x023a, 0x023e, 0x0248, 0x024f, 0x0252, 0x025b, - 0x0265, 0x026e, 0x0276, 0x027e, 0x0287, 0x028c, 0x0292, 0x029a, - 0x02a2, 0x02ad, 0x02b4, 0x02bf, 0x02c7, 0x02cd, 0x02d7, 0x02de, - 0x02e2, 0x02e9, 0x02f1, 0x02f9, 0x0306, 0x030b, 0x0315, 0x031c, - 0x0322, 0x032a, 0x0336, 0x033f, 0x0348, 0x0352, 0x0359, 0x0363, - 0x036f, 0x0378, 0x0381, 0x0389, 0x0392, 0x039b, 0x03a0, 0x03b0, - 0x03b8, 0x03be, 0x03c8, 0x03d9, 0x03ea, 0x03f8, 0x03fe, 0x0406, - 0x0410, 0x0416, 0x041d, 0x0424, 0x042b, 0x0436, 0x043a, 0x0441, - // Entry 80 - BF - 0x044b, 0x0456, 0x0460, 0x046c, 0x0471, 0x047a, 0x047f, 0x048a, - 0x0494, 0x049b, 0x04a2, 0x04af, 0x04b4, 0x04bf, 0x04c8, 0x04d1, - 0x04da, 0x04df, 0x04e7, 0x04ef, 0x04f5, 0x04fa, 0x0502, 0x050b, - 0x0513, 0x051a, 0x0522, 0x052a, 0x0534, 0x053e, 0x0546, 0x0550, - 0x0555, 0x055e, 0x0564, 0x056a, 0x0572, 0x057d, 0x0585, 0x058f, - 0x0595, 0x059d, 0x05a2, 0x05ad, 0x05b5, 0x05bd, 0x05c2, 0x05c7, - 0x05cd, 0x05d5, 0x05db, 0x05e2, 0x05e6, 0x05ee, 0x05f4, 0x05fb, - 0x0604, 0x0604, 0x060c, 0x0611, 0x0618, 0x061f, 0x061f, 0x0627, - // Entry C0 - FF - 0x0627, 0x0633, 0x0640, 0x0646, 0x064f, 0x0656, 0x0656, 0x065d, - 0x065d, 0x065d, 0x0666, 0x0666, 0x0666, 0x0669, 0x0669, 0x0673, - 0x0673, 0x0679, 0x0681, 0x0689, 0x0689, 0x068d, 0x0695, 0x0695, - 0x069c, 0x06a0, 0x06a5, 0x06a5, 0x06a9, 0x06ae, 0x06ae, 0x06c1, - 0x06c9, 0x06d1, 0x06d5, 0x06d5, 0x06d8, 0x06df, 0x06df, 0x06df, - 0x06e3, 0x06e3, 0x06e7, 0x06ed, 0x06f6, 0x06fe, 0x0702, 0x0706, - 0x070d, 0x0712, 0x071a, 0x0720, 0x0725, 0x0725, 0x072c, 0x0731, - 0x0738, 0x0743, 0x074b, 0x0753, 0x0762, 0x0769, 0x0772, 0x077d, - // Entry 100 - 13F - 0x0786, 0x0796, 0x079d, 0x079d, 0x07ab, 0x07be, 0x07c7, 0x07d3, - 0x07d9, 0x07de, 0x07e8, 0x07ed, 0x07f3, 0x07f8, 0x07fd, 0x0802, - 0x0810, 0x0810, 0x0815, 0x0826, 0x0830, 0x0835, 0x083b, 0x083f, - 0x0843, 0x0843, 0x0851, 0x0857, 0x0860, 0x086f, 0x086f, 0x0875, - 0x0875, 0x0879, 0x0883, 0x0883, 0x0886, 0x0898, 0x08a8, 0x08b6, - 0x08b6, 0x08c7, 0x08d8, 0x08e1, 0x08e3, 0x08eb, 0x08f6, 0x08fa, - 0x08ff, 0x08ff, 0x0903, 0x090d, 0x090d, 0x0923, 0x0937, 0x0937, - 0x093c, 0x0945, 0x094b, 0x0950, 0x095b, 0x096f, 0x096f, 0x096f, - // Entry 140 - 17F - 0x0974, 0x097e, 0x0983, 0x0990, 0x0998, 0x0998, 0x09a5, 0x09ad, - 0x09b2, 0x09c1, 0x09ce, 0x09d2, 0x09d6, 0x09dc, 0x09e1, 0x09ec, - 0x09ec, 0x09ec, 0x09f2, 0x09f8, 0x09ff, 0x0a11, 0x0a21, 0x0a21, - 0x0a2c, 0x0a34, 0x0a3d, 0x0a41, 0x0a46, 0x0a4a, 0x0a55, 0x0a5c, - 0x0a60, 0x0a67, 0x0a72, 0x0a72, 0x0a76, 0x0a76, 0x0a7b, 0x0a84, - 0x0a90, 0x0a90, 0x0a90, 0x0a94, 0x0a9c, 0x0aa4, 0x0ab0, 0x0ab7, - 0x0abe, 0x0ac4, 0x0ad3, 0x0ad3, 0x0ad3, 0x0add, 0x0ae5, 0x0aed, - 0x0af2, 0x0af9, 0x0afe, 0x0b05, 0x0b0b, 0x0b10, 0x0b16, 0x0b1b, - // Entry 180 - 1BF - 0x0b24, 0x0b24, 0x0b24, 0x0b24, 0x0b2a, 0x0b2a, 0x0b2f, 0x0b43, - 0x0b47, 0x0b55, 0x0b55, 0x0b5f, 0x0b66, 0x0b6b, 0x0b6e, 0x0b74, - 0x0b79, 0x0b79, 0x0b79, 0x0b81, 0x0b85, 0x0b8b, 0x0b93, 0x0b9a, - 0x0ba2, 0x0baa, 0x0bae, 0x0bb4, 0x0bba, 0x0bbf, 0x0bc3, 0x0bd7, - 0x0be3, 0x0bf1, 0x0bf8, 0x0bfe, 0x0c09, 0x0c14, 0x0c1e, 0x0c23, - 0x0c28, 0x0c28, 0x0c2f, 0x0c3b, 0x0c40, 0x0c49, 0x0c50, 0x0c50, - 0x0c55, 0x0c5f, 0x0c6c, 0x0c7b, 0x0c87, 0x0c8b, 0x0c99, 0x0c9f, - 0x0ca3, 0x0caa, 0x0caa, 0x0cb0, 0x0cb9, 0x0cc1, 0x0ccf, 0x0ccf, - // Entry 1C0 - 1FF - 0x0cd5, 0x0ce4, 0x0ceb, 0x0cfb, 0x0d03, 0x0d0b, 0x0d10, 0x0d15, - 0x0d1a, 0x0d2c, 0x0d36, 0x0d3d, 0x0d45, 0x0d4f, 0x0d59, 0x0d59, - 0x0d6b, 0x0d6b, 0x0d6b, 0x0d79, 0x0d79, 0x0d81, 0x0d81, 0x0d81, - 0x0d8a, 0x0d90, 0x0da1, 0x0da6, 0x0da6, 0x0db0, 0x0db8, 0x0dc3, - 0x0dc3, 0x0dc3, 0x0dc8, 0x0dce, 0x0dce, 0x0dce, 0x0dce, 0x0dd7, - 0x0dda, 0x0de1, 0x0de9, 0x0dff, 0x0e06, 0x0e0b, 0x0e14, 0x0e14, - 0x0e1b, 0x0e20, 0x0e2a, 0x0e32, 0x0e32, 0x0e3f, 0x0e45, 0x0e49, - 0x0e49, 0x0e52, 0x0e61, 0x0e6b, 0x0e6b, 0x0e74, 0x0e78, 0x0e87, - // Entry 200 - 23F - 0x0e8d, 0x0e8d, 0x0e8d, 0x0e98, 0x0ea1, 0x0eab, 0x0eb5, 0x0ebc, - 0x0ec3, 0x0ecf, 0x0ed4, 0x0ed8, 0x0ed8, 0x0ede, 0x0ee2, 0x0eea, - 0x0ef2, 0x0f02, 0x0f0a, 0x0f0a, 0x0f0a, 0x0f0f, 0x0f13, 0x0f19, - 0x0f1e, 0x0f27, 0x0f2a, 0x0f35, 0x0f35, 0x0f3f, 0x0f46, 0x0f46, - 0x0f51, 0x0f5c, 0x0f65, 0x0f65, 0x0f6b, 0x0f6b, 0x0f74, 0x0f74, - 0x0f7b, 0x0f86, 0x0f8d, 0x0f95, 0x0fad, 0x0fb6, 0x0fbf, 0x0fc6, - 0x0fd5, 0x0fd8, 0x0fd8, 0x0fd8, 0x0fd8, 0x0fd8, 0x0fde, 0x0fde, - 0x0fe3, 0x0fec, 0x0ff2, 0x0ff7, 0x0ffc, 0x1004, 0x100e, 0x1014, - // Entry 240 - 27F - 0x1014, 0x1018, 0x101b, 0x1021, 0x1028, 0x102d, 0x102d, 0x1036, - 0x1040, 0x1050, 0x1050, 0x1056, 0x1074, 0x1078, 0x108f, 0x1095, - 0x10af, 0x10c4, 0x10d8, 0x10f4, 0x1107, 0x1118, 0x112a, 0x113c, - 0x1157, 0x116b, 0x1180, 0x1180, 0x1192, 0x11a6, 0x11b4, 0x11bd, - 0x11d2, 0x11e6, 0x11ef, 0x11fe, 0x1210, 0x122a, 0x1241, -} // Size: 1254 bytes - -const huLangStr string = "" + // Size: 4112 bytes - "afarabházavesztánafrikaansakanamharaaragonézarabasszámiavarajmaraazerbaj" + - "dzsánibaskírbelaruszbolgárbislamabambarabanglatibetibretonbosnyákkatalán" + - "csecsencsamorókorzikaikrícsehegyházi szlávcsuvaswalesidánnémetdivehidzso" + - "ngaevegörögangoleszperantóspanyolésztbaszkperzsafulanifinnfidzsiferöerif" + - "rancianyugati frízírskóciai keltagallegoguaranigudzsarátiman-szigetihaus" + - "zahéberhindihiri motuhorváthaiti kreolmagyarörményhererointerlingvaindon" + - "ézinterlingueigbószecsuán jiinupiakidóizlandiolaszinuktitutjapánjávaigr" + - "úzkongokikujukuanyamakazahgrönlandikhmerkannadakoreaikanurikasmírikurdk" + - "omikornikirgizlatinluxemburgigandalimburgilingalalaolitvánluba-katangale" + - "ttmalgasmarshallimaorimacedónmalajálammongolmaráthimalájmáltaiburmainaur" + - "uiészaki ndebelenepálindongahollandnorvég (nynorsk)norvég (bokmål)déli n" + - "debelenavahónyandzsaokszitánojibvaoromoodiaoszétpandzsábipalilengyelpast" + - "uportugálkecsuarétorománkirundirománoroszkinyarvandaszanszkritszardíniai" + - "szindhiészaki számiszangószingalézszlovákszlovénszamoaisonaszomálialbáns" + - "zerbsziszuatidéli szeszotószundanézsvédszuahélitamiltelugutadzsikthaitig" + - "rinyatürkménszecsuánitongaitörökcongatatártahitiujgurukránurduüzbégvenda" + - "vietnamivolapükvallonvolofxhoszajiddisjorubazsuangkínaizuluachinézakolia" + - "dangmeadygheafrihiliagemainuakkádaleutdél-altajióangolangikaarámimapucse" + - "arapahoaravakasuasztúrawádibalucsibalinézbaszabamungomalabedzsabembabena" + - "bafutnyugati beludzsbodzspuribikolbinikomsiksikabrajbodokosziburjátbugin" + - "ézbulublinmedumbacaddokaribkajugaatszamszebuanokigacsibcsacsagatájcsuké" + - "zmaricsinuk zsargoncsoktócsipevécserokicsejenközép-ázsiai kurdkoptkrími " + - "tatárszeszelva kreol franciakasubdakotadargvataitadelavárszlevidogribdin" + - "kazarmadogrialsó-szorbdualaközép hollandjola-fonyidiuladazagaembuefikóeg" + - "yiptomiekadzsukelamitközép angolevondofangfilippínófoncajun franciaközép" + - " franciaófranciaészaki frízkeleti frízfriuligagagauzgan kínaigajogbajage" + - "ezikiribatiközép felső németófelső németgondigorontalogótgrebóógörögsváj" + - "ci németgusziigvicsinhaidahakka kínaihawaiiilokanohittitehmongfelső-szor" + - "bxiang kínaihupaibanibibioilokóinguslojbanngombamachamezsidó-perzsazsidó" + - "-arabkara-kalpakkabijekacsinjjukambakawikabardikanembutyapmakondekabuver" + - "dianukorokaszikotanézkojra-csínikakókalendzsinkimbundukomi-permjákkonkan" + - "ikosreikpellekaracsáj-balkárkarelaikuruhsambalabafiakölschkumükkutenaila" + - "dinolangilahndalambalezglakotamongólouisianai kreolloziészaki luriluba-l" + - "ulualuisenolundaluolushailujiamaduraimafamagahimaithilimakaszarmandingóm" + - "asaimabamoksánmandarmendemerumauritiusi kreolközép írmakua-metómeta’mikm" + - "akminangkabaumandzsumanipurimohawkmoszimundangtöbbszörös nyelvekkríkmira" + - "ndézmárvárimyeneerzjánymázanderánimin nan kínainápolyinamaalsónémetnevar" + - "iniasniueingumbangiemboonnogajóskandinávn’kóészaki szeszotónuerklassziku" + - "s newarinyamvézinyankolenyorónzimaosageottomán törökpangaszinanpahlavipa" + - "mpanganpapiamentopalauinigériai pidginóperzsafőniciaipohnpeiporoszóprová" + - "nszikicseradzsasztánirapanuirarotongairomboromaarománrwoszandaveszahasza" + - "maritánus arámiszamburusasakszantálingambayszanguszicíliaiskótdél-kurdsz" + - "enekaszenaszölkupkojra-szennióírtachelhitsancsádi arabszidamódéli számil" + - "ulei számiinari számikolta számiszoninkesogdienszranai tongószererszahós" + - "zukumaszuszusumércomoreiklasszikus szírszírtemneteszóterenótetumtigrétiv" + - "tokelauiklingontlingittamaseknyugati nyaszatok pisintarokócsimsiánitumbu" + - "katuvaluszaváktuvaiközép-atlaszi tamazigtudmurtugaritiumbunduismeretlen " + - "nyelvvaivotjákvunjowalservalamovaraóvasówarlpiriwu kínaikalmükszogajaója" + - "pijangbenjembakantonizapotékBliss jelképrendszerzenagamarokkói tamazight" + - "zuninincs nyelvészeti tartalomzazamodern szabányos arabosztrák németsváj" + - "ci felnémetausztrál angolkanadai angolbrit angolamerikai angollatin-amer" + - "ikai spanyoleurópai spanyolspanyol (mexikói)kanadai franciasvájci franci" + - "aalsószászflamandbrazíliai portugáleurópai portugálmoldvaiszerbhorvátkon" + - "gói szuahéliegyszerűsített kínaihagyományos kínai" - -var huLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000a, 0x0013, 0x001c, 0x0020, 0x0026, 0x002f, - 0x0033, 0x003b, 0x003f, 0x0045, 0x0053, 0x005a, 0x0062, 0x0069, - 0x0070, 0x0077, 0x007d, 0x0083, 0x0089, 0x0091, 0x0099, 0x00a0, - 0x00a8, 0x00b0, 0x00b4, 0x00b8, 0x00c7, 0x00cd, 0x00d3, 0x00d7, - 0x00dd, 0x00e3, 0x00ea, 0x00ed, 0x00f4, 0x00f9, 0x0104, 0x010b, - 0x0110, 0x0115, 0x011b, 0x0121, 0x0125, 0x012b, 0x0133, 0x013a, - 0x0147, 0x014a, 0x0158, 0x015f, 0x0166, 0x0171, 0x017c, 0x0182, - 0x0188, 0x018d, 0x0196, 0x019d, 0x01a8, 0x01ae, 0x01b6, 0x01bc, - // Entry 40 - 7F - 0x01c7, 0x01cf, 0x01da, 0x01df, 0x01eb, 0x01f2, 0x01f6, 0x01fd, - 0x0202, 0x020b, 0x0211, 0x0217, 0x021c, 0x0221, 0x0227, 0x022f, - 0x0234, 0x023e, 0x0243, 0x024a, 0x0250, 0x0256, 0x025e, 0x0262, - 0x0266, 0x026b, 0x0271, 0x0276, 0x0280, 0x0285, 0x028d, 0x0294, - 0x0297, 0x029e, 0x02aa, 0x02ae, 0x02b4, 0x02bd, 0x02c2, 0x02ca, - 0x02d4, 0x02da, 0x02e2, 0x02e8, 0x02ef, 0x02f5, 0x02fb, 0x030a, - 0x0311, 0x0317, 0x031e, 0x032f, 0x0340, 0x034d, 0x0354, 0x035c, - 0x0365, 0x036b, 0x0370, 0x0374, 0x037a, 0x0384, 0x0388, 0x038f, - // Entry 80 - BF - 0x0394, 0x039d, 0x03a3, 0x03ae, 0x03b5, 0x03bb, 0x03c0, 0x03cb, - 0x03d5, 0x03e0, 0x03e7, 0x03f5, 0x03fc, 0x0406, 0x040e, 0x0416, - 0x041d, 0x0421, 0x0429, 0x042f, 0x0434, 0x043d, 0x044c, 0x0456, - 0x045b, 0x0464, 0x0469, 0x046f, 0x0476, 0x047a, 0x0482, 0x048b, - 0x0495, 0x049b, 0x04a2, 0x04a7, 0x04ad, 0x04b3, 0x04b8, 0x04be, - 0x04c2, 0x04c9, 0x04ce, 0x04d6, 0x04de, 0x04e4, 0x04e9, 0x04ef, - 0x04f5, 0x04fb, 0x0501, 0x0507, 0x050b, 0x0513, 0x0518, 0x051f, - 0x0525, 0x0525, 0x052d, 0x0531, 0x0535, 0x053b, 0x053b, 0x0540, - // Entry C0 - FF - 0x0540, 0x054b, 0x0552, 0x0558, 0x055e, 0x0565, 0x0565, 0x056c, - 0x056c, 0x056c, 0x0572, 0x0572, 0x0572, 0x0575, 0x0575, 0x057c, - 0x057c, 0x0582, 0x0589, 0x0591, 0x0591, 0x0596, 0x059b, 0x059b, - 0x05a1, 0x05a7, 0x05ac, 0x05ac, 0x05b0, 0x05b5, 0x05b5, 0x05c4, - 0x05cd, 0x05d2, 0x05d6, 0x05d6, 0x05d9, 0x05e0, 0x05e0, 0x05e0, - 0x05e4, 0x05e4, 0x05e8, 0x05ed, 0x05f4, 0x05fc, 0x0600, 0x0604, - 0x060b, 0x0610, 0x0615, 0x061b, 0x0621, 0x0621, 0x0629, 0x062d, - 0x0634, 0x063d, 0x0644, 0x0648, 0x0656, 0x065d, 0x0665, 0x066c, - // Entry 100 - 13F - 0x0672, 0x0686, 0x068a, 0x068a, 0x0697, 0x06ae, 0x06b3, 0x06b9, - 0x06bf, 0x06c4, 0x06cc, 0x06d2, 0x06d8, 0x06dd, 0x06e2, 0x06e7, - 0x06f2, 0x06f2, 0x06f7, 0x0706, 0x0710, 0x0715, 0x071b, 0x071f, - 0x0723, 0x0723, 0x072e, 0x0736, 0x073c, 0x0749, 0x0749, 0x074f, - 0x074f, 0x0753, 0x075e, 0x075e, 0x0761, 0x076e, 0x077d, 0x0786, - 0x0786, 0x0793, 0x079f, 0x07a5, 0x07a7, 0x07ad, 0x07b7, 0x07bb, - 0x07c0, 0x07c0, 0x07c4, 0x07cd, 0x07cd, 0x07e2, 0x07f1, 0x07f1, - 0x07f6, 0x07ff, 0x0803, 0x0809, 0x0812, 0x0820, 0x0820, 0x0820, - // Entry 140 - 17F - 0x0826, 0x082d, 0x0832, 0x083e, 0x0844, 0x0844, 0x084b, 0x0852, - 0x0857, 0x0863, 0x086f, 0x0873, 0x0877, 0x087d, 0x0883, 0x0888, - 0x0888, 0x0888, 0x088e, 0x0894, 0x089b, 0x08a8, 0x08b3, 0x08b3, - 0x08be, 0x08c4, 0x08ca, 0x08cd, 0x08d2, 0x08d6, 0x08dd, 0x08e4, - 0x08e8, 0x08ef, 0x08fb, 0x08fb, 0x08ff, 0x08ff, 0x0904, 0x090c, - 0x0918, 0x0918, 0x0918, 0x091d, 0x0927, 0x092f, 0x093c, 0x0943, - 0x0949, 0x094f, 0x0960, 0x0960, 0x0960, 0x0967, 0x096c, 0x0973, - 0x0978, 0x097f, 0x0985, 0x098c, 0x0992, 0x0997, 0x099d, 0x09a2, - // Entry 180 - 1BF - 0x09a6, 0x09a6, 0x09a6, 0x09a6, 0x09ac, 0x09ac, 0x09b2, 0x09c2, - 0x09c6, 0x09d2, 0x09d2, 0x09dc, 0x09e3, 0x09e8, 0x09eb, 0x09f1, - 0x09f6, 0x09f6, 0x09f6, 0x09fd, 0x0a01, 0x0a07, 0x0a0f, 0x0a17, - 0x0a20, 0x0a25, 0x0a29, 0x0a30, 0x0a36, 0x0a3b, 0x0a3f, 0x0a4f, - 0x0a5a, 0x0a65, 0x0a6c, 0x0a72, 0x0a7d, 0x0a84, 0x0a8c, 0x0a92, - 0x0a97, 0x0a97, 0x0a9e, 0x0ab3, 0x0ab8, 0x0ac1, 0x0aca, 0x0aca, - 0x0acf, 0x0ad7, 0x0ae4, 0x0af2, 0x0afa, 0x0afe, 0x0b09, 0x0b0f, - 0x0b13, 0x0b18, 0x0b18, 0x0b1e, 0x0b27, 0x0b2c, 0x0b38, 0x0b38, - // Entry 1C0 - 1FF - 0x0b3f, 0x0b50, 0x0b54, 0x0b65, 0x0b6e, 0x0b76, 0x0b7c, 0x0b81, - 0x0b86, 0x0b96, 0x0ba1, 0x0ba8, 0x0bb1, 0x0bbb, 0x0bc1, 0x0bc1, - 0x0bd1, 0x0bd1, 0x0bd1, 0x0bd9, 0x0bd9, 0x0be2, 0x0be2, 0x0be2, - 0x0be9, 0x0bef, 0x0bfb, 0x0c00, 0x0c00, 0x0c0d, 0x0c14, 0x0c1e, - 0x0c1e, 0x0c1e, 0x0c23, 0x0c27, 0x0c27, 0x0c27, 0x0c27, 0x0c2e, - 0x0c31, 0x0c39, 0x0c3e, 0x0c52, 0x0c5a, 0x0c5f, 0x0c68, 0x0c68, - 0x0c6f, 0x0c75, 0x0c7f, 0x0c84, 0x0c84, 0x0c8d, 0x0c94, 0x0c99, - 0x0c99, 0x0ca1, 0x0cad, 0x0cb2, 0x0cb2, 0x0cbb, 0x0cbe, 0x0cc9, - // Entry 200 - 23F - 0x0cd1, 0x0cd1, 0x0cd1, 0x0cdd, 0x0ce9, 0x0cf5, 0x0d01, 0x0d09, - 0x0d10, 0x0d1e, 0x0d24, 0x0d2a, 0x0d2a, 0x0d31, 0x0d37, 0x0d3d, - 0x0d44, 0x0d54, 0x0d59, 0x0d59, 0x0d59, 0x0d5e, 0x0d64, 0x0d6b, - 0x0d70, 0x0d76, 0x0d79, 0x0d81, 0x0d81, 0x0d88, 0x0d8f, 0x0d8f, - 0x0d96, 0x0da4, 0x0dad, 0x0dad, 0x0db4, 0x0db4, 0x0dbe, 0x0dbe, - 0x0dc5, 0x0dcb, 0x0dd2, 0x0dd7, 0x0def, 0x0df5, 0x0dfc, 0x0e03, - 0x0e13, 0x0e16, 0x0e16, 0x0e16, 0x0e16, 0x0e16, 0x0e1d, 0x0e1d, - 0x0e22, 0x0e28, 0x0e2e, 0x0e34, 0x0e39, 0x0e41, 0x0e4a, 0x0e51, - // Entry 240 - 27F - 0x0e51, 0x0e56, 0x0e5a, 0x0e5e, 0x0e65, 0x0e6a, 0x0e6a, 0x0e71, - 0x0e79, 0x0e8e, 0x0e8e, 0x0e94, 0x0ea7, 0x0eab, 0x0ec6, 0x0eca, - 0x0ee0, 0x0ee0, 0x0eef, 0x0f00, 0x0f0f, 0x0f1c, 0x0f26, 0x0f34, - 0x0f4a, 0x0f5a, 0x0f6c, 0x0f6c, 0x0f7b, 0x0f8a, 0x0f95, 0x0f9c, - 0x0fb0, 0x0fc2, 0x0fc9, 0x0fd5, 0x0fe6, 0x0ffd, 0x1010, -} // Size: 1254 bytes - -const hyLangStr string = "" + // Size: 8733 bytes - "աֆարերենաբխազերենաֆրիկաանսաքանամհարերենարագոներենարաբերենասամերենավարերե" + - "նայմարաադրբեջաներենբաշկիրերենբելառուսերենբուլղարերենբիսլամաբամբարաբենգա" + - "լերենտիբեթերենբրետոներենբոսնիերենկատալաներենչեչեներենչամոռոկորսիկերենչե" + - "խերենեկեղեցական սլավոներենչուվաշերենուելսերենդանիերենգերմաներենմալդիվեր" + - "ենջոնգքհաէվեհունարենանգլերենէսպերանտոիսպաներենէստոներենբասկերենպարսկերե" + - "նֆուլահֆիններենֆիջիերենֆարյորերենֆրանսերենարևմտաֆրիզերենիռլանդերենշոտլա" + - "նդական գաելերենգալիսերենգուարանիգուջարաթիմեներենհաուսաեբրայերենհինդիխոր" + - "վաթերենխառնակերտ հայիթերենհունգարերենհայերենհերերոինտերլինգուաինդոնեզեր" + - "ենինտերլինգուեիգբոսիչուանիդոիսլանդերենիտալերենինուկտիտուտճապոներենճավայ" + - "երենվրացերենկիկույուկուանյամաղազախերենկալաալիսուտքմերերենկաննադակորեերե" + - "նկանուրիքաշմիրերենքրդերենկոմիերենկոռներենղրղզերենլատիներենլյուքսեմբուրգ" + - "երենգանդալիմբուրգերենլինգալալաոսերենլիտվերենլուբա-կատանգալատվիերենմալգա" + - "շերենմարշալերենմաորիմակեդոներենմալայալամմոնղոլերենմարաթիմալայերենմալթայ" + - "երենբիրմայերեննաուրուհյուսիսային նդեբելենեպալերեննդոնգահոլանդերեննոր նո" + - "րվեգերենգրքային նորվեգերենհարավային նդեբելենավախոնյանջաօքսիտաներենօջիբվ" + - "աօրոմոօրիյաօսերենփենջաբերենպալիլեհերենփուշթուպորտուգալերենկեչուառոմանշե" + - "րենռունդիռումիներենռուսերենկինյառուանդասանսկրիտսարդիներենսինդհիհյուսիսա" + - "յին սաամիսանգոսինհալերենսլովակերենսլովեներենսամոաերենշոնասոմալիերենալբա" + - "ներենսերբերենսվազերենհարավային սոթոսունդաներենշվեդերենսուահիլիթամիլերեն" + - "թելուգուտաջիկերենթայերենտիգրինյաթուրքմեներենցվանատոնգերենթուրքերենցոնգա" + - "թաթարերենթաիտերենույղուրերենուկրաիներենուրդուուզբեկերենվենդավիետնամերեն" + - "վոլապյուկվալոներենվոլոֆքոսաիդիշյորուբաժուանգչինարենզուլուերենաչեհերենաչ" + - "ոլիադանգմերենադիղերենթունիսական արաբերենաղեմայներենաքքադերենալեութերենհ" + - "արավային ալթայերենհին անգլերենանգիկաարամեերենմապուչիարապահոալժիրական ար" + - "աբերենեգիպտական արաբերենասուամերիկյան ժեստերի լեզուաստուրերենավադհիբալի" + - "երենբասաաբեմբաբենաարևմտաբելուջիերենբհոպուրիբինիսիկսիկաբոդոաքուզբուգիերե" + - "նբիլինսեբուերենչիգատրուկերենմարիչոկտոչերոկիշայենսորանի քրդերենղպտերենղր" + - "իմյան թուրքերենսեյշելյան խառնակերտ ֆրանսերենդակոտադարգիներենթաիթադոգրիբ" + - "զարմաստորին սորբերենդուալաջոլա-ֆոնյիդազագաէմբուէֆիկհին եգիպտերենէկաջուկ" + - "էվոնդոֆիլիպիներենտորնադելեն ֆիններենֆոնհին ֆրանսերենարևելաֆրիզերենֆրիու" + - "լիերենգայերենգագաուզերենզրադաշտական դարիգեեզկիրիբատիհին վերին գերմաներե" + - "նգորոնտալոգոթերենհին հունարենշվեյցարական գերմաներենվայուուգուսիգվիչինհա" + - "վայիերենհիլիգայնոնհմոնգվերին սորբերենսյան չինարենհուպաիբաներենիբիբիոիլո" + - "կերենինգուշերենլոժբաննգոմբամաշամեկաբիլերենկաչիներենջյուկամբակաբարդերենտ" + - "իապմակոնդեկաբուվերդերենկորոքասիերենկոյրա չինիկակոկալենջինկիմբունդուպերմ" + - "յակ կոմիերենկոնկանիկպելլեերենկարաչայ-բալկարերենկարելերենկուրուխշամբալաբ" + - "աֆիաքյոլներենկումիկերենլադինոլանգիլեզգիերենլակոտալոզիհյուսիսային լուրիե" + - "րենլուբա-լուլուալունդալուոմիզոլույամադուրերենմագահիմայթիլիմակասարերենմա" + - "սաիմոկշայերենմենդեմերումորիսյենմաքուա-մետտոմետամիկմակմինանգկաբաումանիպո" + - "ւրիմոհավքմոսսիարևմտամարիերենմունդանգբազմալեզուկրիկմիրանդերենէրզյամազանդ" + - "արաներեննեապոլերեննամանեվարերեննիասերեննիուերենկվասիոնգիեմբուննոգայերեն" + - "հին նորվեգերեննկոհյուսիսային սոթոնուերնյանկոլեօսեյջօսմաներենպանգասինանե" + - "րենպահլավերենպամպանգաերենպապյամենտոպալաուերենպիկարդերեննիգերյան կրեոլեր" + - "ենփենսիլվանական գերմաներենպլատագերմաներենհին պարսկերենպալատինյան գերման" + - "երենփյունիկերենպիեմոնտերենպոնտերենպոնպեերենպրուսերենհին պրովանսերենքիչե" + - "ռաջաստաներենռապանուիռարոտոնգաներենռոմանիոլերենռիֆերենռոմբոռոմաներենռոտո" + - "ւմանռուսիներենռովիանաարոմաներենռվասանդավեյակուտերենսամբուրուսանտալինգամ" + - "բայսանգուսիցիլիերենշոտլանդերենհարավային քրդերենսենակոյրաբորո սեննիհին ի" + - "ռլանդերենտաշելհիթշաներենհարավային սաամիլուլե սաամիինարի սաամիսկոլտ սաամ" + - "իսոնինկեսրանան տոնգոսահոերենսուկումակոմորերենասորերենտուլուտեմնետեսոտեր" + - "ենոտետումտիգրետիվերենտոկելաուցախուրկլինգոնտլինգիտթալիշերենտամաշեկտոկ փի" + - "սինտուրոյոտարոկոցակոներենցիմշյանտումբուկաթուվալուերենտասավաքտուվերենկեն" + - "տրոնատլասյան թամազիղտուդմուրտերենուգարիտերենումբունդուանհայտ լեզուվաիվե" + - "նետերենվեպսերենարևմտաֆլամանդերենվոդերենվորովունջովալսերենվոլայտավարայեր" + - "ենվաշովարլպիրիվու չինարենկալմիկերենսոգայաոյափերենյանգբենեմբականտոներենս" + - "ապոտեկերենզեյլանդերենզենագաընդհանուր մարոկյան թամազիղտզունիերենառանց լե" + - "զվային բովանդակությանզազաերենարդի ընդհանուր արաբերենավստրիական գերմաներ" + - "ենշվեյցարական վերին գերմաներենավստրալիական անգլերենկանադական անգլերենբր" + - "իտանական անգլերենամերիկյան անգլերենլատինամերիկյան իսպաներենեվրոպական իս" + - "պաներենմեքսիկական իսպաներենկանադական ֆրանսերենշվեյցարական ֆրանսերենստոր" + - "ին սաքսոներենֆլամանդերենբրազիլական պորտուգալերենեվրոպական պորտուգալերեն" + - "մոլդովերենսերբա-խորվաթերենկոնգոյի սուահիլիպարզեցված չինարենավանդական չի" + - "նարեն" - -var hyLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0022, 0x0022, 0x0034, 0x003c, 0x004e, 0x0062, - 0x0072, 0x0082, 0x0092, 0x009e, 0x00b6, 0x00ca, 0x00e2, 0x00f8, - 0x0106, 0x0114, 0x0128, 0x013a, 0x014e, 0x0160, 0x0176, 0x0188, - 0x0194, 0x01a8, 0x01a8, 0x01b6, 0x01df, 0x01f3, 0x0205, 0x0215, - 0x0229, 0x023d, 0x024b, 0x0251, 0x0261, 0x0271, 0x0283, 0x0295, - 0x02a7, 0x02b7, 0x02c9, 0x02d5, 0x02e5, 0x02f5, 0x0309, 0x031b, - 0x0337, 0x034b, 0x0372, 0x0384, 0x0394, 0x03a6, 0x03b4, 0x03c0, - 0x03d2, 0x03dc, 0x03dc, 0x03f0, 0x0415, 0x042b, 0x0439, 0x0445, - // Entry 40 - 7F - 0x045d, 0x0473, 0x048b, 0x0493, 0x04a1, 0x04a1, 0x04a7, 0x04bb, - 0x04cb, 0x04e1, 0x04f3, 0x0505, 0x0515, 0x0515, 0x0525, 0x0537, - 0x0549, 0x055f, 0x056f, 0x057d, 0x058d, 0x059b, 0x05af, 0x05bd, - 0x05cd, 0x05dd, 0x05ed, 0x05ff, 0x0621, 0x062b, 0x0643, 0x0651, - 0x0661, 0x0671, 0x068a, 0x069c, 0x06b0, 0x06c4, 0x06ce, 0x06e4, - 0x06f6, 0x070a, 0x0716, 0x0728, 0x073c, 0x0750, 0x075e, 0x0783, - 0x0795, 0x07a1, 0x07b5, 0x07d0, 0x07f3, 0x0814, 0x0820, 0x082c, - 0x0842, 0x084e, 0x0858, 0x0862, 0x086e, 0x0882, 0x088a, 0x0898, - // Entry 80 - BF - 0x08a6, 0x08c0, 0x08cc, 0x08e0, 0x08ec, 0x0900, 0x0910, 0x0928, - 0x0938, 0x094c, 0x0958, 0x0979, 0x0983, 0x0997, 0x09ab, 0x09bf, - 0x09d1, 0x09d9, 0x09ed, 0x09ff, 0x0a0f, 0x0a1f, 0x0a3a, 0x0a50, - 0x0a60, 0x0a70, 0x0a82, 0x0a92, 0x0aa4, 0x0ab2, 0x0ac2, 0x0ada, - 0x0ae4, 0x0af4, 0x0b06, 0x0b10, 0x0b22, 0x0b32, 0x0b48, 0x0b5e, - 0x0b6a, 0x0b7e, 0x0b88, 0x0b9e, 0x0bb0, 0x0bc2, 0x0bcc, 0x0bd4, - 0x0bdc, 0x0bea, 0x0bf6, 0x0c04, 0x0c18, 0x0c28, 0x0c32, 0x0c46, - 0x0c56, 0x0c7b, 0x0c7b, 0x0c83, 0x0c91, 0x0ca3, 0x0ca3, 0x0cb7, - // Entry C0 - FF - 0x0cb7, 0x0cdc, 0x0cf3, 0x0cff, 0x0d11, 0x0d1f, 0x0d1f, 0x0d2d, - 0x0d50, 0x0d50, 0x0d50, 0x0d50, 0x0d73, 0x0d7b, 0x0da7, 0x0dbb, - 0x0dbb, 0x0dc7, 0x0dc7, 0x0dd7, 0x0dd7, 0x0de1, 0x0de1, 0x0de1, - 0x0de1, 0x0de1, 0x0deb, 0x0deb, 0x0df3, 0x0df3, 0x0df3, 0x0e15, - 0x0e25, 0x0e25, 0x0e2d, 0x0e2d, 0x0e2d, 0x0e3b, 0x0e3b, 0x0e3b, - 0x0e3b, 0x0e3b, 0x0e43, 0x0e4d, 0x0e4d, 0x0e5f, 0x0e5f, 0x0e69, - 0x0e69, 0x0e69, 0x0e69, 0x0e69, 0x0e69, 0x0e69, 0x0e7b, 0x0e83, - 0x0e83, 0x0e83, 0x0e95, 0x0e9d, 0x0e9d, 0x0ea7, 0x0ea7, 0x0eb3, - // Entry 100 - 13F - 0x0ebd, 0x0ed8, 0x0ee6, 0x0ee6, 0x0f07, 0x0f3f, 0x0f3f, 0x0f4b, - 0x0f5f, 0x0f69, 0x0f69, 0x0f69, 0x0f75, 0x0f75, 0x0f7f, 0x0f7f, - 0x0f9c, 0x0f9c, 0x0fa8, 0x0fa8, 0x0fbb, 0x0fbb, 0x0fc7, 0x0fd1, - 0x0fd9, 0x0fd9, 0x0ff2, 0x1000, 0x1000, 0x1000, 0x1000, 0x100c, - 0x100c, 0x100c, 0x1022, 0x1047, 0x104d, 0x104d, 0x104d, 0x1066, - 0x1066, 0x1066, 0x1082, 0x1098, 0x10a6, 0x10bc, 0x10bc, 0x10bc, - 0x10bc, 0x10db, 0x10e3, 0x10f3, 0x10f3, 0x10f3, 0x1119, 0x1119, - 0x1119, 0x112b, 0x1139, 0x1139, 0x1150, 0x117b, 0x1189, 0x1189, - // Entry 140 - 17F - 0x1193, 0x119f, 0x119f, 0x119f, 0x11b3, 0x11b3, 0x11c7, 0x11c7, - 0x11d1, 0x11ec, 0x1203, 0x120d, 0x121d, 0x1229, 0x1239, 0x124d, - 0x124d, 0x124d, 0x1259, 0x1265, 0x1271, 0x1271, 0x1271, 0x1271, - 0x1271, 0x1283, 0x1295, 0x129d, 0x12a7, 0x12a7, 0x12bb, 0x12bb, - 0x12c3, 0x12d1, 0x12eb, 0x12eb, 0x12f3, 0x12f3, 0x1303, 0x1303, - 0x1316, 0x1316, 0x1316, 0x131e, 0x132e, 0x1342, 0x1361, 0x136f, - 0x136f, 0x1383, 0x13a6, 0x13a6, 0x13a6, 0x13b8, 0x13c6, 0x13d4, - 0x13de, 0x13f0, 0x1404, 0x1404, 0x1410, 0x141a, 0x141a, 0x141a, - // Entry 180 - 1BF - 0x142c, 0x142c, 0x142c, 0x142c, 0x1438, 0x1438, 0x1438, 0x1438, - 0x1440, 0x1469, 0x1469, 0x1482, 0x1482, 0x148e, 0x1496, 0x149e, - 0x14a8, 0x14a8, 0x14a8, 0x14bc, 0x14bc, 0x14c8, 0x14d6, 0x14ec, - 0x14ec, 0x14f6, 0x14f6, 0x150a, 0x150a, 0x1514, 0x151e, 0x152e, - 0x152e, 0x1545, 0x154d, 0x1559, 0x1571, 0x1571, 0x1583, 0x158f, - 0x1599, 0x15b5, 0x15c5, 0x15d9, 0x15e1, 0x15f5, 0x15f5, 0x15f5, - 0x15f5, 0x15ff, 0x161b, 0x161b, 0x162f, 0x1637, 0x1637, 0x1649, - 0x1659, 0x1669, 0x1669, 0x1675, 0x1687, 0x1699, 0x16b4, 0x16b4, - // Entry 1C0 - 1FF - 0x16ba, 0x16d9, 0x16e3, 0x16e3, 0x16e3, 0x16f3, 0x16f3, 0x16f3, - 0x16fd, 0x170f, 0x172b, 0x173f, 0x1757, 0x176b, 0x177f, 0x1793, - 0x17b6, 0x17e5, 0x1803, 0x181c, 0x1845, 0x185b, 0x1871, 0x1881, - 0x1893, 0x18a5, 0x18c2, 0x18ca, 0x18ca, 0x18e2, 0x18f2, 0x190e, - 0x1926, 0x1934, 0x193e, 0x1950, 0x1960, 0x1974, 0x1982, 0x1996, - 0x199c, 0x19aa, 0x19be, 0x19be, 0x19d0, 0x19d0, 0x19de, 0x19de, - 0x19ec, 0x19f8, 0x1a0c, 0x1a22, 0x1a22, 0x1a43, 0x1a43, 0x1a4b, - 0x1a4b, 0x1a4b, 0x1a68, 0x1a83, 0x1a83, 0x1a93, 0x1aa1, 0x1aa1, - // Entry 200 - 23F - 0x1aa1, 0x1aa1, 0x1aa1, 0x1abe, 0x1ad3, 0x1ae8, 0x1afd, 0x1b0b, - 0x1b0b, 0x1b22, 0x1b22, 0x1b32, 0x1b32, 0x1b42, 0x1b42, 0x1b42, - 0x1b54, 0x1b54, 0x1b64, 0x1b64, 0x1b70, 0x1b7a, 0x1b82, 0x1b8e, - 0x1b9a, 0x1ba4, 0x1bb2, 0x1bc2, 0x1bce, 0x1bdc, 0x1bea, 0x1bfc, - 0x1c0a, 0x1c0a, 0x1c1b, 0x1c29, 0x1c35, 0x1c47, 0x1c55, 0x1c55, - 0x1c67, 0x1c7f, 0x1c8d, 0x1c9d, 0x1ccc, 0x1ce4, 0x1cfa, 0x1d0e, - 0x1d25, 0x1d2b, 0x1d3d, 0x1d4d, 0x1d6f, 0x1d6f, 0x1d7d, 0x1d85, - 0x1d91, 0x1da1, 0x1daf, 0x1dc1, 0x1dc9, 0x1dd9, 0x1dee, 0x1e02, - // Entry 240 - 27F - 0x1e02, 0x1e0a, 0x1e10, 0x1e1e, 0x1e2c, 0x1e34, 0x1e34, 0x1e48, - 0x1e5e, 0x1e5e, 0x1e74, 0x1e80, 0x1eb4, 0x1ec6, 0x1efe, 0x1f0e, - 0x1f3a, 0x1f3a, 0x1f63, 0x1f99, 0x1fc2, 0x1fe5, 0x200a, 0x202d, - 0x205c, 0x2081, 0x20a8, 0x20a8, 0x20cd, 0x20f6, 0x2117, 0x212d, - 0x215c, 0x2189, 0x219d, 0x21bc, 0x21db, 0x21fc, 0x221d, -} // Size: 1254 bytes - -const idLangStr string = "" + // Size: 4042 bytes - "AfarAbkhazAvestaAfrikaansAkanAmharikAragonArabAssamAvarAymaraAzerbaijani" + - "BashkirBelarusiaBulgariaBislamaBambaraBengaliTibetBretonBosniaKatalanChe" + - "chenChamorroKorsikaKreeCheskaBahasa Gereja SlavoniaChuvashWelshDanskJerm" + - "anDivehiDzongkhaEweYunaniInggrisEsperantoSpanyolEstiBasquePersiaFulaSuom" + - "iFijiFaroePrancisFrisia BaratIrlandiaGaelik SkotlandiaGalisiaGuaraniGuja" + - "ratManxHausaIbraniHindiHiri MotuKroasiaKreol HaitiHungariaArmeniaHereroI" + - "nterlinguaIndonesiaInterlingueIgboSichuan YiInupiakIdoIslandiaItaliaInuk" + - "titutJepangJawaGeorgiaKongoKikuyuKuanyamaKazakhKalaallisutKhmerKannadaKo" + - "reaKanuriKashmirKurdiKomiKornishKirgizLatinLuksemburgGandaLimburgiaLinga" + - "laLaoLituaviLuba-KatangaLatviMalagasiMarshallMaoriMakedoniaMalayalamMong" + - "oliaMarathiMelayuMaltaBurmaNauruNdebele UtaraNepaliNdongaBelandaNynorsk " + - "NorwegiaBokmål NorwegiaNdebele SelatanNavajoNyanjaOsitaniaOjibwaOromoOri" + - "yaOssetiaPunjabiPaliPolskiPashtoPortugisQuechuaReto-RomanRundiRumaniaRus" + - "iaKinyarwandaSanskertaSardiniaSindhiSami UtaraSangoSinhalaSlovakSlovenSa" + - "moaShonaSomaliaAlbaniaSerbiaSwatiSotho SelatanSundaSwediaSwahiliTamilTel" + - "uguTajikThaiTigrinyaTurkmenTswanaTongaTurkiTsongaTatarTahitiUyghurUkrain" + - "aUrduUzbekVendaVietnamVolapukWalloonWolofXhosaYiddishYorubaZhuangTiongho" + - "aZuluAcehAcoliAdangmeAdygeiArab TunisiaAfrihiliAghemAinuAkkadiaAlabamaAl" + - "eutAltai SelatanInggris KunoAngikaAramMapucheArapahoArab AljazairArawakA" + - "rab MarokoArab MesirAsuBahasa Isyarat AmerikaAsturiaAwadhiBaluchiBaliBav" + - "ariaBasaBamunBatak TobaGhomalaBejaBembaBetawiBenaBafutBalochi BaratBhojp" + - "uriBikolBiniBanjarKomSiksikaBrajBodoAkooseBuriatBugisBuluBlinMedumbaKado" + - "KaribCayugaAtsamCebuanoKigaChibchaChagataiChuukeMariJargon ChinookKoktaw" + - "ChipewyanCherokeeCheyenneKurdi SoraniKoptikTatar KrimeaSeselwa Kreol Pra" + - "ncisKashubiaDakotaDargwaTaitaDelawareSlaveDogribDinkaZarmaDogriSorbia Hi" + - "lirDualaBelanda Abad PertengahanJola-FonyiDyulaDazagaEmbuEfikMesir KunoE" + - "kajukElamInggris Abad PertengahanEwondoFangFilipinoFonPrancis CajunPranc" + - "is Abad PertengahanPrancis KunoArpitanFrisia UtaraFrisia TimurFriuliGaGa" + - "gauzGayoGbayaGeezGilbertGilakiJerman Abad PertengahanJerman KunoGondiGor" + - "ontaloGotikGreboYunani KunoJerman (Swiss)GusiiGwich’inHaidaHawaiiHindi F" + - "ijiHiligaynonHititHmongSorbia HuluHupaIbanIbibioIlokoIngushetiaLojbanNgo" + - "mbaMachameIbrani-PersiaIbrani-ArabKara-KalpakKabyleKachinJjuKambaKawiKab" + - "ardiKanembuTyapMakondeKabuverdianuKenyangKoroKhasiKhotanKoyra ChiiniKako" + - "KalenjinKimbunduKomi-PermyakKonkaniKosreKpelleKarachai BalkarKrioKarelia" + - "KurukShambalaBafiaDialek KolschKumykKutenaiLadinoLangiLahndaLambaLezghia" + - "LiguriaLakotaMongoKreol LouisianaLoziLuri UtaraLuba-LuluaLuisenoLundaLuo" + - "MizoLuyiaLazMaduraMafaMagahiMaithiliMakasarMandingoMasaiMabaMokshaMandar" + - "MendeMeruMorisienIrlandia Abad PertengahanMakhuwa-MeettoMeta’MikmakMinan" + - "gkabauManchuriaManipuriMohawkMossiMundangBeberapa BahasaBahasa MuskogeeM" + - "irandaMarwariMentawaiMyeneEryzaMazanderaniNeapolitanNamaJerman RendahNew" + - "ariNiasNiueaKwasioNgiemboonNogaiNorse KunoN’KoSotho UtaraNuerNewari Klas" + - "ikNyamweziNyankoleNyoroNzimaOsageTurki OsmaniPangasinaPahleviPampangaPap" + - "iamentoPalauPidgin NigeriaJerman PennsylvaniaPersia KunoFunisiaPohnpeiaP" + - "rusiaProvencal LamaKʼicheʼRajasthaniRapanuiRarotongaRomboRomaniRotumaAro" + - "maniaRwaSandaweSakhaAram SamariaSamburuSasakSantaliNgambaiSanguSisiliaSk" + - "otlandiaKurdi SelatanSenecaSenaSeriSelkupKoyraboro SenniIrlandia KunoTac" + - "helhitShanArab SuwaSidamoSilesia RendahSelayarSami SelatanLule SamiInari" + - " SamiSkolt SamiSoninkeSogdienSranan TongoSererSahoSukumaSusuSumeriaKomor" + - "iaSuriah KlasikSuriahSilesiaTuluTimneTesoTerenoTetunTigreTivTokelauKling" + - "onTlingitTamashekNyasa TongaTok PisinTuroyoTarokoTsimshiaTat MuslimTumbu" + - "kaTuvaluTasawaqTuviniaTamazight Maroko TengahUdmurtUgaritUmbunduBahasa T" + - "idak DikenalVaiVenesiaVotiaVunjoWalserWalamoWaraiWashoWarlpiriKalmukSoga" + - "YaoYapoisYangbenYembaKantonZapotekBlissymbolZenagaTamazight Maroko Stand" + - "arZuniTidak ada konten linguistikZazaArab Standar ModernJerman Tinggi (S" + - "wiss)Inggris (Inggris)Spanyol (Eropa)Portugis (Eropa)MoldaviaSerbo-Kroas" + - "iaSwahili (Kongo)Tionghoa (Aksara Sederhana)Tionghoa (Aksara Tradisional" + - ")" - -var idLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000a, 0x0010, 0x0019, 0x001d, 0x0024, 0x002a, - 0x002e, 0x0033, 0x0037, 0x003d, 0x0048, 0x004f, 0x0058, 0x0060, - 0x0067, 0x006e, 0x0075, 0x007a, 0x0080, 0x0086, 0x008d, 0x0094, - 0x009c, 0x00a3, 0x00a7, 0x00ad, 0x00c3, 0x00ca, 0x00cf, 0x00d4, - 0x00da, 0x00e0, 0x00e8, 0x00eb, 0x00f1, 0x00f8, 0x0101, 0x0108, - 0x010c, 0x0112, 0x0118, 0x011c, 0x0121, 0x0125, 0x012a, 0x0131, - 0x013d, 0x0145, 0x0156, 0x015d, 0x0164, 0x016b, 0x016f, 0x0174, - 0x017a, 0x017f, 0x0188, 0x018f, 0x019a, 0x01a2, 0x01a9, 0x01af, - // Entry 40 - 7F - 0x01ba, 0x01c3, 0x01ce, 0x01d2, 0x01dc, 0x01e3, 0x01e6, 0x01ee, - 0x01f4, 0x01fd, 0x0203, 0x0207, 0x020e, 0x0213, 0x0219, 0x0221, - 0x0227, 0x0232, 0x0237, 0x023e, 0x0243, 0x0249, 0x0250, 0x0255, - 0x0259, 0x0260, 0x0266, 0x026b, 0x0275, 0x027a, 0x0283, 0x028a, - 0x028d, 0x0294, 0x02a0, 0x02a5, 0x02ad, 0x02b5, 0x02ba, 0x02c3, - 0x02cc, 0x02d4, 0x02db, 0x02e1, 0x02e6, 0x02eb, 0x02f0, 0x02fd, - 0x0303, 0x0309, 0x0310, 0x0320, 0x0330, 0x033f, 0x0345, 0x034b, - 0x0353, 0x0359, 0x035e, 0x0363, 0x036a, 0x0371, 0x0375, 0x037b, - // Entry 80 - BF - 0x0381, 0x0389, 0x0390, 0x039a, 0x039f, 0x03a6, 0x03ab, 0x03b6, - 0x03bf, 0x03c7, 0x03cd, 0x03d7, 0x03dc, 0x03e3, 0x03e9, 0x03ef, - 0x03f4, 0x03f9, 0x0400, 0x0407, 0x040d, 0x0412, 0x041f, 0x0424, - 0x042a, 0x0431, 0x0436, 0x043c, 0x0441, 0x0445, 0x044d, 0x0454, - 0x045a, 0x045f, 0x0464, 0x046a, 0x046f, 0x0475, 0x047b, 0x0482, - 0x0486, 0x048b, 0x0490, 0x0497, 0x049e, 0x04a5, 0x04aa, 0x04af, - 0x04b6, 0x04bc, 0x04c2, 0x04ca, 0x04ce, 0x04d2, 0x04d7, 0x04de, - 0x04e4, 0x04f0, 0x04f8, 0x04fd, 0x0501, 0x0508, 0x050f, 0x0514, - // Entry C0 - FF - 0x0514, 0x0521, 0x052d, 0x0533, 0x0537, 0x053e, 0x053e, 0x0545, - 0x0552, 0x0552, 0x0558, 0x0563, 0x056d, 0x0570, 0x0586, 0x058d, - 0x058d, 0x0593, 0x059a, 0x059e, 0x05a5, 0x05a9, 0x05ae, 0x05b8, - 0x05bf, 0x05c3, 0x05c8, 0x05ce, 0x05d2, 0x05d7, 0x05d7, 0x05e4, - 0x05ec, 0x05f1, 0x05f5, 0x05fb, 0x05fe, 0x0605, 0x0605, 0x0605, - 0x0609, 0x0609, 0x060d, 0x0613, 0x0619, 0x061e, 0x0622, 0x0626, - 0x062d, 0x0631, 0x0636, 0x063c, 0x0641, 0x0641, 0x0648, 0x064c, - 0x0653, 0x065b, 0x0661, 0x0665, 0x0673, 0x0679, 0x0682, 0x068a, - // Entry 100 - 13F - 0x0692, 0x069e, 0x06a4, 0x06a4, 0x06b0, 0x06c5, 0x06cd, 0x06d3, - 0x06d9, 0x06de, 0x06e6, 0x06eb, 0x06f1, 0x06f6, 0x06fb, 0x0700, - 0x070c, 0x070c, 0x0711, 0x0729, 0x0733, 0x0738, 0x073e, 0x0742, - 0x0746, 0x0746, 0x0750, 0x0756, 0x075a, 0x0772, 0x0772, 0x0778, - 0x0778, 0x077c, 0x0784, 0x0784, 0x0787, 0x0794, 0x07ac, 0x07b8, - 0x07bf, 0x07cb, 0x07d7, 0x07dd, 0x07df, 0x07e5, 0x07e5, 0x07e9, - 0x07ee, 0x07ee, 0x07f2, 0x07f9, 0x07ff, 0x0816, 0x0821, 0x0821, - 0x0826, 0x082f, 0x0834, 0x0839, 0x0844, 0x0852, 0x0852, 0x0852, - // Entry 140 - 17F - 0x0857, 0x0861, 0x0866, 0x0866, 0x086c, 0x0876, 0x0880, 0x0885, - 0x088a, 0x0895, 0x0895, 0x0899, 0x089d, 0x08a3, 0x08a8, 0x08b2, - 0x08b2, 0x08b2, 0x08b8, 0x08be, 0x08c5, 0x08d2, 0x08dd, 0x08dd, - 0x08e8, 0x08ee, 0x08f4, 0x08f7, 0x08fc, 0x0900, 0x0907, 0x090e, - 0x0912, 0x0919, 0x0925, 0x092c, 0x0930, 0x0930, 0x0935, 0x093b, - 0x0947, 0x0947, 0x0947, 0x094b, 0x0953, 0x095b, 0x0967, 0x096e, - 0x0973, 0x0979, 0x0988, 0x098c, 0x098c, 0x0993, 0x0998, 0x09a0, - 0x09a5, 0x09b2, 0x09b7, 0x09be, 0x09c4, 0x09c9, 0x09cf, 0x09d4, - // Entry 180 - 1BF - 0x09db, 0x09db, 0x09e2, 0x09e2, 0x09e8, 0x09e8, 0x09ed, 0x09fc, - 0x0a00, 0x0a0a, 0x0a0a, 0x0a14, 0x0a1b, 0x0a20, 0x0a23, 0x0a27, - 0x0a2c, 0x0a2c, 0x0a2f, 0x0a35, 0x0a39, 0x0a3f, 0x0a47, 0x0a4e, - 0x0a56, 0x0a5b, 0x0a5f, 0x0a65, 0x0a6b, 0x0a70, 0x0a74, 0x0a7c, - 0x0a95, 0x0aa3, 0x0aaa, 0x0ab0, 0x0abb, 0x0ac4, 0x0acc, 0x0ad2, - 0x0ad7, 0x0ad7, 0x0ade, 0x0aed, 0x0afc, 0x0b03, 0x0b0a, 0x0b12, - 0x0b17, 0x0b1c, 0x0b27, 0x0b27, 0x0b31, 0x0b35, 0x0b42, 0x0b48, - 0x0b4c, 0x0b51, 0x0b51, 0x0b57, 0x0b60, 0x0b65, 0x0b6f, 0x0b6f, - // Entry 1C0 - 1FF - 0x0b75, 0x0b80, 0x0b84, 0x0b91, 0x0b99, 0x0ba1, 0x0ba6, 0x0bab, - 0x0bb0, 0x0bbc, 0x0bc5, 0x0bcc, 0x0bd4, 0x0bde, 0x0be3, 0x0be3, - 0x0bf1, 0x0c04, 0x0c04, 0x0c0f, 0x0c0f, 0x0c16, 0x0c16, 0x0c16, - 0x0c1e, 0x0c24, 0x0c32, 0x0c3b, 0x0c3b, 0x0c45, 0x0c4c, 0x0c55, - 0x0c55, 0x0c55, 0x0c5a, 0x0c60, 0x0c66, 0x0c66, 0x0c66, 0x0c6e, - 0x0c71, 0x0c78, 0x0c7d, 0x0c89, 0x0c90, 0x0c95, 0x0c9c, 0x0c9c, - 0x0ca3, 0x0ca8, 0x0caf, 0x0cb9, 0x0cb9, 0x0cc6, 0x0ccc, 0x0cd0, - 0x0cd4, 0x0cda, 0x0ce9, 0x0cf6, 0x0cf6, 0x0cff, 0x0d03, 0x0d0c, - // Entry 200 - 23F - 0x0d12, 0x0d20, 0x0d27, 0x0d33, 0x0d3c, 0x0d46, 0x0d50, 0x0d57, - 0x0d5e, 0x0d6a, 0x0d6f, 0x0d73, 0x0d73, 0x0d79, 0x0d7d, 0x0d84, - 0x0d8b, 0x0d98, 0x0d9e, 0x0da5, 0x0da9, 0x0dae, 0x0db2, 0x0db8, - 0x0dbd, 0x0dc2, 0x0dc5, 0x0dcc, 0x0dcc, 0x0dd3, 0x0dda, 0x0dda, - 0x0de2, 0x0ded, 0x0df6, 0x0dfc, 0x0e02, 0x0e02, 0x0e0a, 0x0e14, - 0x0e1b, 0x0e21, 0x0e28, 0x0e2f, 0x0e46, 0x0e4c, 0x0e52, 0x0e59, - 0x0e6d, 0x0e70, 0x0e77, 0x0e77, 0x0e77, 0x0e77, 0x0e7c, 0x0e7c, - 0x0e81, 0x0e87, 0x0e8d, 0x0e92, 0x0e97, 0x0e9f, 0x0e9f, 0x0ea5, - // Entry 240 - 27F - 0x0ea5, 0x0ea9, 0x0eac, 0x0eb2, 0x0eb9, 0x0ebe, 0x0ebe, 0x0ec4, - 0x0ecb, 0x0ed5, 0x0ed5, 0x0edb, 0x0ef3, 0x0ef7, 0x0f12, 0x0f16, - 0x0f29, 0x0f29, 0x0f29, 0x0f3e, 0x0f3e, 0x0f3e, 0x0f4f, 0x0f4f, - 0x0f4f, 0x0f5e, 0x0f5e, 0x0f5e, 0x0f5e, 0x0f5e, 0x0f5e, 0x0f5e, - 0x0f5e, 0x0f6e, 0x0f76, 0x0f83, 0x0f92, 0x0fad, 0x0fca, -} // Size: 1254 bytes - -const isLangStr string = "" + // Size: 4650 bytes - "afárabkasískaavestískaafríkanskaakanamharískaaragonskaarabískaassamskaav" + - "arískaaímaraaserskabaskírhvítrússneskabúlgarskabíslamabambarabengalskatí" + - "beskabretónskabosnískakatalónskatsjetsjenskakamorrókorsískakrítékkneskak" + - "irkjuslavneskasjúvasvelskadanskaþýskadívehídsongkaewegrískaenskaesperant" + - "óspænskaeistneskabaskneskapersneskafúlafinnskafídjeyskafæreyskafranskav" + - "esturfrísneskaírskaskosk gelískagalíanskagvaranígújaratímanskahásahebres" + - "kahindíhírímótúkróatískahaítískaungverskaarmenskahereróalþjóðatungaindón" + - "esískainterlingveígbósísúanjíínúpíakídóíslenskaítalskainúktitútjapanskaj" + - "avanskageorgískakongóskakíkújúkúanjamakasakskagrænlenskakmerkannadakóres" + - "kakanúríkasmírskakúrdískakomískakornbreskakirgiskalatínalúxemborgískagan" + - "dalimbúrgískalingalalaólitháískalúbakatangalettneskamalagasískamarshalls" + - "kamaorímakedónskamalajalammongólskamaratímalaískamaltneskaburmneskanárús" + - "kanorður-ndebelenepalskandongahollenskanýnorskanorskt bókmálsuðurndebele" + - "navahónjanja; sísjeva; sjevaoksítanískaojibvaoromoóríaossetískapúnjabípa" + - "lípólskapastúportúgalskakvesjúarómanskarúndírúmenskarússneskakínjarvanda" + - "sanskrítsardínskasindínorðursamískasangósingalískaslóvakískaslóvenskasam" + - "óskashonasómalskaalbanskaserbneskasvatísuðursótósúndanskasænskasvahílít" + - "amílskatelúgútadsjikskataílenskatígrinjatúrkmenskatsúanatongverskatyrkne" + - "skatsongatatarskatahítískaúígúrúkraínskaúrdúúsbekskavendavíetnamskavolap" + - "ykvallónskavolofsósajiddískajórúbasúangkínverskasúlúakkískaacoliadangmea" + - "dýgeafríhílíaghemaínu (Japan)akkadískaaleúskasuðuraltaískafornenskaangík" + - "aarameískamapuchearapahóaravakskaasuastúrískaavadíbalúkíbalískabasabamun" + - "bejabembabenavesturbalotsíbojpúríbíkolbínísiksikabraíbódóbakossibúríatbú" + - "gískablínkaddókaríbamálkajúgaatsamkebúanókígasíbsjasjagataísjúkískamarís" + - "ínúksjoktásípevískaCherokee-málsjeyensorani-kúrdískakoptískakrímtyrknes" + - "kaSeselwa kreólsk franskakasúbískadakótadargvataítadelaverslavneskadogrí" + - "bdinkazarmadogrílágsorbneskadúalamiðhollenskajola-fonyidjúladazagaembuef" + - "íkfornegypskaekajúkelamítmiðenskaevondófangfilippseyskafóncajun-franska" + - "miðfranskafornfranskanorðurfrísneskaausturfrísneskafríúlskagagagásgajógb" + - "ajagísgilberskamiðháþýskafornháþýskagondígorontalógotneskagerbóforngrísk" + - "asvissnesk þýskagusiigvísínhaídahavaískahíligaínonhettitískahmonghásorbn" + - "eskahúpaíbanibibioílokóingúslojbanngombamasjámegyðingapersneskagyðingaar" + - "abískakarakalpakkabílekasínjjukambakavíkabardískatyapmakondegrænhöfðeysk" + - "akorokasíkotaskakoyra chiinikakokalenjinkimbúndúkómí-permyakkonkaníkosra" + - "skakpellekarasaíbalkarkarélskakúrúksjambalabafíakölnískakúmíkkútenaíladí" + - "nskalangílandalambalesgískalakótamongókreólska (Louisiana)lozinorðurlúrí" + - "luba-lulualúisenólúndalúólúsaíluyiamadúrskamagahímaítílímakasarmandingóm" + - "asaímoksamandarmendemerúmáritískamiðírskamakhuwa-meettometa’mikmakmínang" + - "kabámansjúmanípúrímóhískamossímundangmargvísleg málkríkmirandesískamarva" + - "ríersjamasanderanínapólískanamalágþýska; lágsaxneskanevaríníasníveskakwa" + - "siongiemboonnógaínorrænan’konorðursótónúerklassísk nevarískanjamvesínyan" + - "kolenjórónsímaósagetyrkneska, ottómanpangasínmálpalavípampangapapíamentó" + - "paláskanígerískt pidginfornpersneskafönikískaponpeiskaprússneskafornpróv" + - "ensalskakicherajastanírapanúírarótongskarombóromaníarúmenskarúasandaveja" + - "kútsamversk arameískasambúrúsasaksantalíngambaysangúsikileyskaskoskasuðu" + - "rkúrdískasenaselkúpkoíraboró-sennífornírskatachelhitsjansídamósuðursamís" + - "kalúlesamískaenaresamískaskoltesamískasóninkesogdíensranan tongoserersah" + - "osúkúmasúsúsúmerskashimaorískaklassísk sýrlenskasýrlenskatímnetesóterenó" + - "tetúmtígretívtókeláskaklingonskatlingittamasjektongverska (nyasa)tokpisi" + - "ntarókótsimsískatúmbúkatúvalúskatasawaqtúvínskatamazightúdmúrtúgarítíska" + - "úmbúndúóþekkt tungumálvaívotískavunjóvalservolayattavaraívasjóvarlpirik" + - "almúkskasógajaójapískayangbenyembakantoneskasapótekblisstáknsenagastaðla" + - "ð marokkóskt tamazightsúníekkert tungumálaefnizázáískastöðluð nútímaara" + - "bískaausturrísk þýskasvissnesk háþýskaáströlsk enskakanadísk enskabresk " + - "enskabandarísk enskarómönsk-amerísk spænskaevrópsk spænskamexíkósk spæns" + - "kakanadísk franskasvissnesk franskalágsaxneskaflæmskabrasílísk portúgals" + - "kaevrópsk portúgalskamoldóvskaserbókróatískaKongó-svahílíkínverska (einf" + - "ölduð)kínverska (hefðbundin)" - -var isLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x000f, 0x0019, 0x0024, 0x0028, 0x0032, 0x003b, - 0x0044, 0x004c, 0x0055, 0x005c, 0x0063, 0x006a, 0x0079, 0x0083, - 0x008b, 0x0092, 0x009b, 0x00a3, 0x00ad, 0x00b6, 0x00c1, 0x00cd, - 0x00d5, 0x00de, 0x00e2, 0x00ec, 0x00fb, 0x0102, 0x0108, 0x010e, - 0x0115, 0x011d, 0x0124, 0x0127, 0x012e, 0x0133, 0x013d, 0x0145, - 0x014e, 0x0157, 0x0160, 0x0165, 0x016c, 0x0176, 0x017f, 0x0186, - 0x0196, 0x019c, 0x01aa, 0x01b4, 0x01bc, 0x01c6, 0x01cc, 0x01d1, - 0x01d9, 0x01df, 0x01eb, 0x01f6, 0x0200, 0x0209, 0x0211, 0x0218, - // Entry 40 - 7F - 0x0227, 0x0234, 0x023f, 0x0245, 0x0250, 0x025a, 0x025f, 0x0268, - 0x0270, 0x027b, 0x0283, 0x028b, 0x0295, 0x029e, 0x02a7, 0x02b0, - 0x02b8, 0x02c3, 0x02c7, 0x02ce, 0x02d6, 0x02de, 0x02e8, 0x02f2, - 0x02fa, 0x0304, 0x030c, 0x0313, 0x0322, 0x0327, 0x0334, 0x033b, - 0x033f, 0x034a, 0x0356, 0x035f, 0x036b, 0x0376, 0x037c, 0x0387, - 0x0390, 0x039a, 0x03a1, 0x03aa, 0x03b3, 0x03bc, 0x03c5, 0x03d4, - 0x03dc, 0x03e2, 0x03eb, 0x03f4, 0x0403, 0x0410, 0x0417, 0x042e, - 0x043b, 0x0441, 0x0446, 0x044c, 0x0456, 0x045f, 0x0464, 0x046b, - // Entry 80 - BF - 0x0471, 0x047d, 0x0485, 0x048e, 0x0495, 0x049e, 0x04a8, 0x04b4, - 0x04bd, 0x04c7, 0x04cd, 0x04dc, 0x04e2, 0x04ed, 0x04f9, 0x0503, - 0x050b, 0x0510, 0x0519, 0x0521, 0x052a, 0x0530, 0x053c, 0x0546, - 0x054d, 0x0556, 0x055f, 0x0567, 0x0571, 0x057b, 0x0584, 0x058f, - 0x0596, 0x05a0, 0x05a9, 0x05af, 0x05b7, 0x05c2, 0x05ca, 0x05d5, - 0x05db, 0x05e4, 0x05e9, 0x05f4, 0x05fb, 0x0605, 0x060a, 0x060f, - 0x0618, 0x0620, 0x0626, 0x0630, 0x0636, 0x063e, 0x0643, 0x064a, - 0x0650, 0x0650, 0x065b, 0x0660, 0x066d, 0x0677, 0x0677, 0x067f, - // Entry C0 - FF - 0x067f, 0x068e, 0x0697, 0x069e, 0x06a8, 0x06af, 0x06af, 0x06b7, - 0x06b7, 0x06b7, 0x06c0, 0x06c0, 0x06c0, 0x06c3, 0x06c3, 0x06ce, - 0x06ce, 0x06d4, 0x06dc, 0x06e4, 0x06e4, 0x06e8, 0x06ed, 0x06ed, - 0x06ed, 0x06f1, 0x06f6, 0x06f6, 0x06fa, 0x06fa, 0x06fa, 0x0708, - 0x0711, 0x0717, 0x071d, 0x071d, 0x071d, 0x0724, 0x0724, 0x0724, - 0x0729, 0x0729, 0x072f, 0x0736, 0x073e, 0x0747, 0x0747, 0x074c, - 0x074c, 0x0752, 0x075d, 0x0764, 0x0769, 0x0769, 0x0772, 0x0777, - 0x077e, 0x0787, 0x0791, 0x0796, 0x079d, 0x07a4, 0x07af, 0x07bc, - // Entry 100 - 13F - 0x07c2, 0x07d3, 0x07dc, 0x07dc, 0x07ea, 0x0802, 0x080d, 0x0814, - 0x081a, 0x0820, 0x0827, 0x0830, 0x0837, 0x083c, 0x0841, 0x0847, - 0x0854, 0x0854, 0x085a, 0x0867, 0x0871, 0x0877, 0x087d, 0x0881, - 0x0886, 0x0886, 0x0891, 0x0898, 0x089f, 0x08a8, 0x08a8, 0x08af, - 0x08af, 0x08b3, 0x08bf, 0x08bf, 0x08c3, 0x08d0, 0x08db, 0x08e6, - 0x08e6, 0x08f7, 0x0907, 0x0911, 0x0913, 0x0919, 0x0919, 0x091e, - 0x0923, 0x0923, 0x0927, 0x0930, 0x0930, 0x093e, 0x094c, 0x094c, - 0x0952, 0x095c, 0x0964, 0x096a, 0x0975, 0x0986, 0x0986, 0x0986, - // Entry 140 - 17F - 0x098b, 0x0993, 0x0999, 0x0999, 0x09a2, 0x09a2, 0x09ae, 0x09b9, - 0x09be, 0x09ca, 0x09ca, 0x09cf, 0x09d4, 0x09da, 0x09e1, 0x09e7, - 0x09e7, 0x09e7, 0x09ed, 0x09f3, 0x09fb, 0x0a0c, 0x0a1d, 0x0a1d, - 0x0a27, 0x0a2e, 0x0a34, 0x0a37, 0x0a3c, 0x0a41, 0x0a4c, 0x0a4c, - 0x0a50, 0x0a57, 0x0a67, 0x0a67, 0x0a6b, 0x0a6b, 0x0a70, 0x0a77, - 0x0a83, 0x0a83, 0x0a83, 0x0a87, 0x0a8f, 0x0a99, 0x0aa7, 0x0aaf, - 0x0ab7, 0x0abd, 0x0acb, 0x0acb, 0x0acb, 0x0ad4, 0x0adb, 0x0ae3, - 0x0ae9, 0x0af3, 0x0afa, 0x0b03, 0x0b0c, 0x0b12, 0x0b17, 0x0b1c, - // Entry 180 - 1BF - 0x0b25, 0x0b25, 0x0b25, 0x0b25, 0x0b2c, 0x0b2c, 0x0b32, 0x0b47, - 0x0b4b, 0x0b58, 0x0b58, 0x0b62, 0x0b6b, 0x0b71, 0x0b76, 0x0b7d, - 0x0b82, 0x0b82, 0x0b82, 0x0b8b, 0x0b8b, 0x0b92, 0x0b9c, 0x0ba3, - 0x0bac, 0x0bb2, 0x0bb2, 0x0bb7, 0x0bbd, 0x0bc2, 0x0bc7, 0x0bd2, - 0x0bdc, 0x0bea, 0x0bf1, 0x0bf7, 0x0c03, 0x0c0a, 0x0c15, 0x0c1e, - 0x0c24, 0x0c24, 0x0c2b, 0x0c3b, 0x0c40, 0x0c4d, 0x0c55, 0x0c55, - 0x0c55, 0x0c5a, 0x0c66, 0x0c66, 0x0c71, 0x0c75, 0x0c8e, 0x0c95, - 0x0c9a, 0x0ca2, 0x0ca2, 0x0ca8, 0x0cb1, 0x0cb8, 0x0cc0, 0x0cc0, - // Entry 1C0 - 1FF - 0x0cc6, 0x0cd3, 0x0cd8, 0x0cec, 0x0cf5, 0x0cfd, 0x0d04, 0x0d0a, - 0x0d10, 0x0d23, 0x0d30, 0x0d37, 0x0d3f, 0x0d4b, 0x0d53, 0x0d53, - 0x0d65, 0x0d65, 0x0d65, 0x0d72, 0x0d72, 0x0d7d, 0x0d7d, 0x0d7d, - 0x0d86, 0x0d91, 0x0da2, 0x0da7, 0x0da7, 0x0db1, 0x0dba, 0x0dc6, - 0x0dc6, 0x0dc6, 0x0dcc, 0x0dd3, 0x0dd3, 0x0dd3, 0x0dd3, 0x0ddd, - 0x0de1, 0x0de8, 0x0dee, 0x0e01, 0x0e0a, 0x0e0f, 0x0e17, 0x0e17, - 0x0e1e, 0x0e24, 0x0e2e, 0x0e34, 0x0e34, 0x0e44, 0x0e44, 0x0e48, - 0x0e48, 0x0e4f, 0x0e61, 0x0e6b, 0x0e6b, 0x0e74, 0x0e78, 0x0e78, - // Entry 200 - 23F - 0x0e80, 0x0e80, 0x0e80, 0x0e8e, 0x0e9b, 0x0ea8, 0x0eb6, 0x0ebe, - 0x0ec6, 0x0ed2, 0x0ed7, 0x0edb, 0x0edb, 0x0ee3, 0x0ee9, 0x0ef2, - 0x0efe, 0x0f12, 0x0f1c, 0x0f1c, 0x0f1c, 0x0f22, 0x0f27, 0x0f2e, - 0x0f34, 0x0f3a, 0x0f3e, 0x0f49, 0x0f49, 0x0f53, 0x0f5a, 0x0f5a, - 0x0f62, 0x0f74, 0x0f7c, 0x0f7c, 0x0f84, 0x0f84, 0x0f8e, 0x0f8e, - 0x0f97, 0x0fa2, 0x0fa9, 0x0fb3, 0x0fbc, 0x0fc4, 0x0fd1, 0x0fdb, - 0x0fed, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff9, 0x0ff9, - 0x0fff, 0x1005, 0x100e, 0x1014, 0x101a, 0x1022, 0x1022, 0x102c, - // Entry 240 - 27F - 0x102c, 0x1031, 0x1035, 0x103d, 0x1044, 0x1049, 0x1049, 0x1053, - 0x105b, 0x1065, 0x1065, 0x106b, 0x108a, 0x1090, 0x10a5, 0x10b0, - 0x10cc, 0x10cc, 0x10df, 0x10f3, 0x1103, 0x1112, 0x111d, 0x112d, - 0x1148, 0x1159, 0x116c, 0x116c, 0x117d, 0x118e, 0x119a, 0x11a2, - 0x11ba, 0x11cf, 0x11d9, 0x11ea, 0x11fa, 0x1212, 0x122a, -} // Size: 1254 bytes - -const itLangStr string = "" + // Size: 5065 bytes - "afarabcasoavestanafrikaansakanamaricoaragonesearaboassameseavaroaymaraaz" + - "erbaigianobaschirobielorussobulgarobislamabambarabengalesetibetanobreton" + - "ebosniacocatalanocecenochamorrocorsocreececoslavo della Chiesaciuvasciog" + - "allesedanesetedescodivehidzongkhaewegrecoingleseesperantospagnoloestoneb" + - "ascopersianofulahfinlandesefigianofaroesefrancesefrisone occidentaleirla" + - "ndesegaelico scozzesegalizianoguaranígujaratimannesehausaebraicohindihir" + - "i motucroatohaitianoungheresearmenohererointerlinguaindonesianointerling" + - "ueigbosichuan yiinupiakidoislandeseitalianoinuktitutgiapponesegiavaneseg" + - "eorgianokongokikuyukuanyamakazakogroenlandesekhmerkannadacoreanokanurika" + - "shmiricurdokomicornicochirghisolatinolussemburghesegandalimburgheselinga" + - "lalaolituanoluba-katangalettonemalgasciomarshallesemaorimacedonemalayala" + - "mmongolomarathimalesemaltesebirmanonaurundebele del nordnepalesendongaol" + - "andesenorvegese nynorsknorvegese bokmålndebele del sudnavajonyanjaoccita" + - "noojibwaoromooriyaosseticopunjabipalipolaccopashtoportoghesequechuaroman" + - "ciorundirumenorussokinyarwandasanscritosardosindhisami del nordsangosing" + - "aleseslovaccoslovenosamoanoshonasomaloalbaneseserboswatisotho del sudsun" + - "danesesvedeseswahilitamiltelugutagicothaitigrinoturcomannotswanatonganot" + - "urcotsongatatarotaitianouiguroucrainourduuzbecovendavietnamitavolapükval" + - "lonewolofxhosayiddishyorubazhuangcinesezuluaccineseacioliadangmeadyghear" + - "abo tunisinoafrihiliaghemainuaccadoalabamaaleutoalbanese ghegoaltai meri" + - "dionaleinglese anticoangikaaramaicomapudungunaraonaarapahoarabo algerino" + - "aruacoarabo marocchinoarabo egizianoasulingua dei segni americanaasturia" + - "nokotavaawadhibelucibalinesebavaresebasabamunbatak tobaghomalabegiawemba" + - "betawibenabafutbadagabeluci occidentalebhojpuribicolbinibanjarkomsiksika" + - "bishnupriyabakhtiaribrajbrahuibodoakooseburiatbugibulublinmedumbacaddoca" + - "ribicocayugaatsamcebuanochigachibchaciagataicochuukesemarigergo chinookc" + - "hoctawchipewyancherokeecheyennecurdo soranicoptocapiznonturco crimeocreo" + - "lo delle Seychelleskashubiandakotadargwataitadelawareslavedogribdincazar" + - "madogribasso sorabodusun centraledualaolandese mediojola-fonydiuladazaga" + - "embuefikemilianoegiziano anticoekajukaelamiticoinglese medioyupik centra" + - "leewondoestremegnofangfilippinofinlandese del Tornedalenfonfrancese caju" + - "nfrancese mediofrancese anticofrancoprovenzalefrisone settentrionalefris" + - "one orientalefriulanogagagauzogangayogbayadari zoroastrianogeezgilbertes" + - "egilakitedesco medio altotedesco antico altokonkani goanogondigorontalog" + - "oticogrebogreco anticotedesco svizzerowayuugusiigwichʼinhaidahakkahawaia" + - "nohindi figianoilongohittitehmongalto soraboxianghupaibanibibioilocanoin" + - "gushingricocreolo giamaicanolojbanngamambomachamegiudeo persianogiudeo a" + - "rabojutlandicokara-kalpakcabilokachinkaikambakawicabardinokanembutyapmak" + - "ondecapoverdianokorokaingangkhasikhotanesekoyra chiinikhowarkirmanjkikak" + - "okalenjinkimbundupermiacokonkanikosraeankpellekarachay-Balkarcarelianoku" + - "rukhshambalabafiacoloniesekumykkutenaigiudeo-spagnololangilahndalambales" + - "goLingua Franca Novaligurelivonelakotalombardololo bantucreolo della Lou" + - "isianaloziluri settentrionaleletgalloluba-lulualuisenolundaluolushailuyi" + - "acinese classicolazmaduresemafamagahimaithilimakasarmandingomasaimabamok" + - "shamandarmendemerucreolo maurizianoirlandese mediomakhuwa-meettometa’mic" + - "macmenangkabaumanchumanipurimohawkmossimari occidentalemundangmultilingu" + - "acreekmirandesemarwarimentawaimyeneerzyamazandaranimin nannapoletanonama" + - "basso tedesconewariniasniueaokwasiongiemboonnogainorse anticonovialn’kos" + - "otho del nordnuernewari classiconyamwezinyankolenyoronzimaosageturco ott" + - "omanopangasinanpahlavipampangapapiamentopalaupiccardopidgin nigerianoted" + - "esco della Pennsylvaniapersiano anticotedesco palatinofeniciopiemontesep" + - "onticoponapeprussianoprovenzale anticok’iche’quechua dell’altopiano del " + - "Chimborazorajasthanirapanuirarotongaromagnolotarifitromboromanirotumanor" + - "utenorovianaarumenorwasandaweyakutaramaico samaritanosamburusasaksantali" + - "saurashtrangambaysangusicilianoscozzesesassaresecurdo meridionalesenecas" + - "enaseriselkupkoyraboro senniirlandese anticosamogiticotashelhitshanarabo" + - " ciadianosidamotedesco slesianoselayarsami del sudsami di Lulesami di In" + - "arisami skoltsoninkesogdianosranan tongoserersahosaterfriesischsukumasus" + - "usumerocomorianosiriaco classicosiriacoslesianotulutemnetesoterenotetumt" + - "igretivtokelautsakhurklingontlingittalisciotamasheknyasa del Tongatok pi" + - "sinturoyotarokozaconicotsimshiantat islamicotumbukatuvalutasawaqtuvinian" + - "tamazightudmurtugariticombundulingua imprecisatavaivenetovepsofiammingo " + - "occidentalevotovõrovunjowalserwalamowaraywashowarlpiriwukalmykmengrelios" + - "ogayao (bantu)yapeseyangbenyembanheengatucantonesezapotecblissymbolzelan" + - "desezenagatamazight del Marocco standardzuninessun contenuto linguistico" + - "zazaarabo moderno standardtedesco austriacoalto tedesco svizzeroinglese " + - "australianoinglese canadeseinglese britannicoinglese americanospagnolo l" + - "atinoamericanospagnolo europeospagnolo messicanofrancese canadesefrances" + - "e svizzerobasso tedesco olandesefiammingoportoghese brasilianoportoghese" + - " europeomoldavoserbo-croatoswahili del Congocinese semplificatocinese tr" + - "adizionale" - -var itLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000a, 0x0011, 0x001a, 0x001e, 0x0025, 0x002e, - 0x0033, 0x003b, 0x0040, 0x0046, 0x0052, 0x005a, 0x0064, 0x006b, - 0x0072, 0x0079, 0x0082, 0x008a, 0x0091, 0x0099, 0x00a1, 0x00a7, - 0x00af, 0x00b4, 0x00b8, 0x00bc, 0x00ce, 0x00d7, 0x00de, 0x00e4, - 0x00eb, 0x00f1, 0x00f9, 0x00fc, 0x0101, 0x0108, 0x0111, 0x0119, - 0x011f, 0x0124, 0x012c, 0x0131, 0x013b, 0x0142, 0x0149, 0x0151, - 0x0164, 0x016d, 0x017d, 0x0186, 0x018e, 0x0196, 0x019d, 0x01a2, - 0x01a9, 0x01ae, 0x01b7, 0x01bd, 0x01c5, 0x01ce, 0x01d4, 0x01da, - // Entry 40 - 7F - 0x01e5, 0x01f0, 0x01fb, 0x01ff, 0x0209, 0x0210, 0x0213, 0x021c, - 0x0224, 0x022d, 0x0237, 0x0240, 0x0249, 0x024e, 0x0254, 0x025c, - 0x0262, 0x026e, 0x0273, 0x027a, 0x0281, 0x0287, 0x028f, 0x0294, - 0x0298, 0x029f, 0x02a8, 0x02ae, 0x02bc, 0x02c1, 0x02cc, 0x02d3, - 0x02d6, 0x02dd, 0x02e9, 0x02f0, 0x02f9, 0x0304, 0x0309, 0x0311, - 0x031a, 0x0321, 0x0328, 0x032e, 0x0335, 0x033c, 0x0341, 0x0351, - 0x0359, 0x035f, 0x0367, 0x0378, 0x0389, 0x0398, 0x039e, 0x03a4, - 0x03ac, 0x03b2, 0x03b7, 0x03bc, 0x03c4, 0x03cb, 0x03cf, 0x03d6, - // Entry 80 - BF - 0x03dc, 0x03e6, 0x03ed, 0x03f5, 0x03fa, 0x0400, 0x0405, 0x0410, - 0x0419, 0x041e, 0x0424, 0x0431, 0x0436, 0x043f, 0x0447, 0x044e, - 0x0455, 0x045a, 0x0460, 0x0468, 0x046d, 0x0472, 0x047f, 0x0488, - 0x048f, 0x0496, 0x049b, 0x04a1, 0x04a7, 0x04ab, 0x04b2, 0x04bc, - 0x04c2, 0x04c9, 0x04ce, 0x04d4, 0x04da, 0x04e2, 0x04e8, 0x04ef, - 0x04f3, 0x04f9, 0x04fe, 0x0508, 0x0510, 0x0517, 0x051c, 0x0521, - 0x0528, 0x052e, 0x0534, 0x053a, 0x053e, 0x0546, 0x054c, 0x0553, - 0x0559, 0x0567, 0x056f, 0x0574, 0x0578, 0x057e, 0x0585, 0x058b, - // Entry C0 - FF - 0x0599, 0x05aa, 0x05b8, 0x05be, 0x05c6, 0x05d0, 0x05d6, 0x05dd, - 0x05eb, 0x05eb, 0x05f1, 0x0601, 0x060f, 0x0612, 0x062c, 0x0635, - 0x063b, 0x0641, 0x0647, 0x064f, 0x0657, 0x065b, 0x0660, 0x066a, - 0x0671, 0x0676, 0x067b, 0x0681, 0x0685, 0x068a, 0x0690, 0x06a2, - 0x06aa, 0x06af, 0x06b3, 0x06b9, 0x06bc, 0x06c3, 0x06ce, 0x06d7, - 0x06db, 0x06e1, 0x06e5, 0x06eb, 0x06f1, 0x06f5, 0x06f9, 0x06fd, - 0x0704, 0x0709, 0x0711, 0x0717, 0x071c, 0x071c, 0x0723, 0x0728, - 0x072f, 0x0739, 0x0741, 0x0745, 0x0752, 0x0759, 0x0762, 0x076a, - // Entry 100 - 13F - 0x0772, 0x077e, 0x0783, 0x078b, 0x0797, 0x07ae, 0x07b7, 0x07bd, - 0x07c3, 0x07c8, 0x07d0, 0x07d5, 0x07db, 0x07e0, 0x07e5, 0x07ea, - 0x07f6, 0x0804, 0x0809, 0x0817, 0x0820, 0x0825, 0x082b, 0x082f, - 0x0833, 0x083b, 0x084a, 0x0851, 0x085a, 0x0867, 0x0875, 0x087b, - 0x0885, 0x0889, 0x0892, 0x08ab, 0x08ae, 0x08bc, 0x08ca, 0x08d9, - 0x08e9, 0x08ff, 0x0910, 0x0918, 0x091a, 0x0921, 0x0924, 0x0928, - 0x092d, 0x093e, 0x0942, 0x094c, 0x0952, 0x0964, 0x0977, 0x0984, - 0x0989, 0x0992, 0x0998, 0x099d, 0x09a9, 0x09b9, 0x09be, 0x09be, - // Entry 140 - 17F - 0x09c3, 0x09cc, 0x09d1, 0x09d6, 0x09de, 0x09eb, 0x09f1, 0x09f8, - 0x09fd, 0x0a08, 0x0a0d, 0x0a11, 0x0a15, 0x0a1b, 0x0a22, 0x0a28, - 0x0a2f, 0x0a40, 0x0a46, 0x0a4e, 0x0a55, 0x0a64, 0x0a70, 0x0a7a, - 0x0a85, 0x0a8b, 0x0a91, 0x0a94, 0x0a99, 0x0a9d, 0x0aa6, 0x0aad, - 0x0ab1, 0x0ab8, 0x0ac4, 0x0ac4, 0x0ac8, 0x0ad0, 0x0ad5, 0x0ade, - 0x0aea, 0x0af0, 0x0af9, 0x0afd, 0x0b05, 0x0b0d, 0x0b15, 0x0b1c, - 0x0b24, 0x0b2a, 0x0b39, 0x0b39, 0x0b39, 0x0b42, 0x0b48, 0x0b50, - 0x0b55, 0x0b5e, 0x0b63, 0x0b6a, 0x0b79, 0x0b7e, 0x0b84, 0x0b89, - // Entry 180 - 1BF - 0x0b8e, 0x0ba0, 0x0ba6, 0x0bac, 0x0bb2, 0x0bba, 0x0bc4, 0x0bda, - 0x0bde, 0x0bf1, 0x0bf9, 0x0c03, 0x0c0a, 0x0c0f, 0x0c12, 0x0c18, - 0x0c1d, 0x0c2c, 0x0c2f, 0x0c37, 0x0c3b, 0x0c41, 0x0c49, 0x0c50, - 0x0c58, 0x0c5d, 0x0c61, 0x0c67, 0x0c6d, 0x0c72, 0x0c76, 0x0c87, - 0x0c96, 0x0ca4, 0x0cab, 0x0cb1, 0x0cbc, 0x0cc2, 0x0cca, 0x0cd0, - 0x0cd5, 0x0ce5, 0x0cec, 0x0cf7, 0x0cfc, 0x0d05, 0x0d0c, 0x0d14, - 0x0d19, 0x0d1e, 0x0d29, 0x0d30, 0x0d3a, 0x0d3e, 0x0d4b, 0x0d51, - 0x0d55, 0x0d59, 0x0d5b, 0x0d61, 0x0d6a, 0x0d6f, 0x0d7b, 0x0d81, - // Entry 1C0 - 1FF - 0x0d87, 0x0d95, 0x0d99, 0x0da8, 0x0db0, 0x0db8, 0x0dbd, 0x0dc2, - 0x0dc7, 0x0dd5, 0x0ddf, 0x0de6, 0x0dee, 0x0df8, 0x0dfd, 0x0e05, - 0x0e15, 0x0e2f, 0x0e2f, 0x0e3e, 0x0e4e, 0x0e55, 0x0e5f, 0x0e66, - 0x0e6c, 0x0e75, 0x0e86, 0x0e91, 0x0eb8, 0x0ec2, 0x0ec9, 0x0ed2, - 0x0edb, 0x0ee2, 0x0ee7, 0x0eed, 0x0ef5, 0x0efb, 0x0f02, 0x0f09, - 0x0f0c, 0x0f13, 0x0f18, 0x0f2b, 0x0f32, 0x0f37, 0x0f3e, 0x0f48, - 0x0f4f, 0x0f54, 0x0f5d, 0x0f65, 0x0f6e, 0x0f7f, 0x0f85, 0x0f89, - 0x0f8d, 0x0f93, 0x0fa2, 0x0fb2, 0x0fbc, 0x0fc5, 0x0fc9, 0x0fd7, - // Entry 200 - 23F - 0x0fdd, 0x0fed, 0x0ff4, 0x1000, 0x100c, 0x1019, 0x1023, 0x102a, - 0x1032, 0x103e, 0x1043, 0x1047, 0x1055, 0x105b, 0x105f, 0x1065, - 0x106e, 0x107e, 0x1085, 0x108d, 0x1091, 0x1096, 0x109a, 0x10a0, - 0x10a5, 0x10aa, 0x10ad, 0x10b4, 0x10bb, 0x10c2, 0x10c9, 0x10d1, - 0x10d9, 0x10e8, 0x10f1, 0x10f7, 0x10fd, 0x1105, 0x110e, 0x111a, - 0x1121, 0x1127, 0x112e, 0x1136, 0x113f, 0x1145, 0x114e, 0x1154, - 0x1166, 0x1169, 0x116f, 0x1174, 0x1189, 0x1189, 0x118d, 0x1192, - 0x1197, 0x119d, 0x11a3, 0x11a8, 0x11ad, 0x11b5, 0x11b7, 0x11bd, - // Entry 240 - 27F - 0x11c6, 0x11ca, 0x11d5, 0x11db, 0x11e2, 0x11e7, 0x11f0, 0x11f9, - 0x1200, 0x120a, 0x1213, 0x1219, 0x1237, 0x123b, 0x1257, 0x125b, - 0x1271, 0x1271, 0x1282, 0x1297, 0x12aa, 0x12ba, 0x12cc, 0x12dd, - 0x12f5, 0x1305, 0x1317, 0x1317, 0x1328, 0x1339, 0x134f, 0x1358, - 0x136d, 0x137f, 0x1386, 0x1392, 0x13a3, 0x13b6, 0x13c9, -} // Size: 1254 bytes - -const jaLangStr string = "" + // Size: 10113 bytes - "アファル語アブハズ語アヴェスタ語アフリカーンス語アカン語アムハラ語アラゴン語アラビア語アッサム語アヴァル語アイマラ語アゼルバイジャン語バシキール" + - "語ベラルーシ語ブルガリア語ビスラマ語バンバラ語ベンガル語チベット語ブルトン語ボスニア語カタロニア語チェチェン語チャモロ語コルシカ語クリー語チ" + - "ェコ語教会スラブ語チュヴァシ語ウェールズ語デンマーク語ドイツ語ディベヒ語ゾンカ語エウェ語ギリシャ語英語エスペラント語スペイン語エストニア語バ" + - "スク語ペルシア語フラ語フィンランド語フィジー語フェロー語フランス語西フリジア語アイルランド語スコットランド・ゲール語ガリシア語グアラニー語グ" + - "ジャラート語マン島語ハウサ語ヘブライ語ヒンディー語ヒリモツ語クロアチア語ハイチ・クレオール語ハンガリー語アルメニア語ヘレロ語インターリングア" + - "インドネシア語インターリングイボ語四川イ語イヌピアック語イド語アイスランド語イタリア語イヌクウティトット語日本語ジャワ語ジョージア語コンゴ語" + - "キクユ語クワニャマ語カザフ語グリーンランド語クメール語カンナダ語韓国語カヌリ語カシミール語クルド語コミ語コーンウォール語キルギス語ラテン語ル" + - "クセンブルク語ガンダ語リンブルフ語リンガラ語ラオ語リトアニア語ルバ・カタンガ語ラトビア語マダガスカル語マーシャル語マオリ語マケドニア語マラヤ" + - "ーラム語モンゴル語マラーティー語マレー語マルタ語ミャンマー語ナウル語北ンデベレ語ネパール語ンドンガ語オランダ語ノルウェー語(ニーノシュク)ノ" + - "ルウェー語(ブークモール)南ンデベレ語ナバホ語ニャンジャ語オック語オジブウェー語オロモ語オリヤー語オセット語パンジャブ語パーリ語ポーランド語" + - "パシュトゥー語ポルトガル語ケチュア語ロマンシュ語ルンディ語ルーマニア語ロシア語キニアルワンダ語サンスクリット語サルデーニャ語シンド語北サーミ" + - "語サンゴ語シンハラ語スロバキア語スロベニア語サモア語ショナ語ソマリ語アルバニア語セルビア語スワジ語南部ソト語スンダ語スウェーデン語スワヒリ語" + - "タミル語テルグ語タジク語タイ語ティグリニア語トルクメン語ツワナ語トンガ語トルコ語ツォンガ語タタール語タヒチ語ウイグル語ウクライナ語ウルドゥー" + - "語ウズベク語ベンダ語ベトナム語ヴォラピュク語ワロン語ウォロフ語コサ語イディッシュ語ヨルバ語チワン語中国語ズールー語アチェ語アチョリ語アダング" + - "メ語アディゲ語チュニジア・アラビア語アフリヒリ語アゲム語アイヌ語アッカド語アラバマ語アレウト語ゲグ・アルバニア語南アルタイ語古英語アンギカ語" + - "アラム語マプチェ語アラオナ語アラパホー語アルジェリア・アラビア語アラワク語モロッコ・アラビア語エジプト・アラビア語アス語アメリカ手話アストゥ" + - "リアス語コタヴァアワディー語バルーチー語バリ語バイエルン・オーストリア語バサ語バムン語トバ・バタク語ゴーマラ語ベジャ語ベンバ語ベタウィ語ベナ" + - "語バフット語バダガ語西バローチー語ボージュプリー語ビコル語ビニ語バンジャル語コム語シクシカ語ビシュヌプリヤ・マニプリ語バフティヤーリー語ブラ" + - "ジ語ブラフイ語ボド語アコース語ブリヤート語ブギ語ブル語ビリン語メドゥンバ語カドー語カリブ語カユーガ語チャワイ語セブアノ語チガ語チブチャ語チャ" + - "ガタイ語チューク語マリ語チヌーク混成語チョクトー語チペワイアン語チェロキー語シャイアン語中央クルド語コプト語カピス語クリミア・タタール語セー" + - "シェル・クレオール語カシューブ語ダコタ語ダルガン語タイタ語デラウェア語スレイビー語ドグリブ語ディンカ語ザルマ語ドーグリー語低地ソルブ語中央ド" + - "ゥスン語ドゥアラ語中世オランダ語ジョラ=フォニィ語ジュラ語ダザガ語エンブ語エフィク語エミリア語古代エジプト語エカジュク語エラム語中英語中央ア" + - "ラスカ・ユピック語エウォンド語エストレマドゥーラ語ファング語フィリピノ語トルネダール・フィンランド語フォン語ケイジャン・フランス語中期フラン" + - "ス語古フランス語アルピタン語北フリジア語東フリジア語フリウリ語ガ語ガガウズ語贛語ガヨ語バヤ語ダリー語(ゾロアスター教)ゲエズ語キリバス語ギラ" + - "キ語中高ドイツ語古高ドイツ語ゴア・コンカニ語ゴーンディー語ゴロンタロ語ゴート語グレボ語古代ギリシャ語スイスドイツ語ワユ語フラフラ語グシイ語グ" + - "ウィッチン語ハイダ語客家語ハワイ語フィジー・ヒンディー語ヒリガイノン語ヒッタイト語フモン語高地ソルブ語湘語フパ語イバン語イビビオ語イロカノ語" + - "イングーシ語イングリア語ジャマイカ・クレオール語ロジバン語ンゴンバ語マチャメ語ユダヤ・ペルシア語ユダヤ・アラビア語ユトランド語カラカルパク語" + - "カビル語カチン語カジェ語カンバ語カウィ語カバルド語カネンブ語カタブ語マコンデ語カーボベルデ・クレオール語ニャン語コロ語カインガング語カシ語コ" + - "ータン語コイラ・チーニ語コワール語キルマンジュキ語カコ語カレンジン語キンブンド語コミ・ペルミャク語コンカニ語コスラエ語クペレ語カラチャイ・バ" + - "ルカル語クリオ語キナライア語カレリア語クルク語サンバー語バフィア語ケルン語クムク語クテナイ語ラディノ語ランギ語ラフンダー語ランバ語レズギ語リ" + - "ングア・フランカ・ノバリグリア語リヴォニア語ラコタ語ロンバルド語モンゴ語ルイジアナ・クレオール語ロジ語北ロル語ラトガリア語ルバ・ルルア語ルイ" + - "セーニョ語ルンダ語ルオ語ミゾ語ルヒヤ語漢文ラズ語マドゥラ語マファ語マガヒー語マイティリー語マカッサル語マンディンゴ語マサイ語マバ語モクシャ語" + - "マンダル語メンデ語メル語モーリシャス・クレオール語中期アイルランド語マクア・ミート語メタ語ミクマク語ミナンカバウ語満州語マニプリ語モーホーク" + - "語モシ語山地マリ語ムンダン語複数言語クリーク語ミランダ語マールワーリー語メンタワイ語ミエネ語エルジャ語マーザンダラーン語閩南語ナポリ語ナマ語" + - "低地ドイツ語ネワール語ニアス語ニウーエイ語アオ・ナガ語クワシオ語ンジエムブーン語ノガイ語古ノルド語ノヴィアルンコ語北部ソト語ヌエル語古典ネワ" + - "ール語ニャムウェジ語ニャンコレ語ニョロ語ンゼマ語オセージ語オスマントルコ語パンガシナン語パフラヴィー語パンパンガ語パピアメント語パラオ語ピカ" + - "ルディ語ナイジェリア・ピジン語ペンシルベニア・ドイツ語メノナイト低地ドイツ語古代ペルシア語プファルツ語フェニキア語ピエモンテ語ポントス・ギリ" + - "シャ語ポンペイ語プロシア語古期プロバンス語キチェ語チンボラソ高地ケチュア語ラージャスターン語ラパヌイ語ラロトンガ語ロマーニャ語リーフ語ロンボ" + - "語ロマーニー語ロツマ語ルシン語ロヴィアナ語アルーマニア語ルワ語サンダウェ語サハ語サマリア・アラム語サンブル語ササク語サンターリー語サウラーシ" + - "ュトラ語ンガムバイ語サング語シチリア語スコットランド語サッサリ・サルデーニャ語南部クルド語セネカ語セナ語セリ語セリクプ語コイラボロ・センニ語" + - "古アイルランド語サモギティア語タシルハイト語シャン語チャド・アラビア語シダモ語低シレジア語スラヤール語南サーミ語ルレ・サーミ語イナリ・サーミ" + - "語スコルト・サーミ語ソニンケ語ソグド語スリナム語セレル語サホ語ザーターフリジア語スクマ語スス語シュメール語コモロ語古典シリア語シリア語シレジ" + - "ア語トゥル語テムネ語テソ語テレーノ語テトゥン語ティグレ語ティブ語トケラウ語ツァフル語クリンゴン語トリンギット語タリシュ語タマシェク語トンガ語" + - "(ニアサ)トク・ピシン語トゥロヨ語タロコ語ツァコン語チムシュ語ムスリム・タタール語トゥンブカ語ツバル語タサワク語トゥヴァ語中央アトラス・タマジク" + - "ト語ウドムルト語ウガリト語ムブンドゥ語言語不明ヴァイ語ヴェネト語ヴェプス語西フラマン語マインフランク語ヴォート語ヴォロ語ヴンジョ語ヴァリス語" + - "ウォライタ語ワライ語ワショ語ワルピリ語呉語カルムイク語メグレル語ソガ語ヤオ語ヤップ語ヤンベン語イエンバ語ニェエンガトゥ語広東語サポテカ語ブリ" + - "スシンボルゼーラント語ゼナガ語標準モロッコ タマジクト語ズニ語言語的内容なしザザ語現代標準アラビア語標準ドイツ語 (スイス)オーストラリア英" + - "語カナダ英語イギリス英語アメリカ英語スペイン語 (イベリア半島)フレミッシュ語ポルトガル語 (イベリア半島)モルダビア語セルボ・クロアチア語" + - "コンゴ・スワヒリ語簡体中国語繁体中国語" - -var jaLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x001e, 0x0030, 0x0048, 0x0054, 0x0063, 0x0072, - 0x0081, 0x0090, 0x009f, 0x00ae, 0x00c9, 0x00db, 0x00ed, 0x00ff, - 0x010e, 0x011d, 0x012c, 0x013b, 0x014a, 0x0159, 0x016b, 0x017d, - 0x018c, 0x019b, 0x01a7, 0x01b3, 0x01c5, 0x01d7, 0x01e9, 0x01fb, - 0x0207, 0x0216, 0x0222, 0x022e, 0x023d, 0x0243, 0x0258, 0x0267, - 0x0279, 0x0285, 0x0294, 0x029d, 0x02b2, 0x02c1, 0x02d0, 0x02df, - 0x02f1, 0x0306, 0x032a, 0x0339, 0x034b, 0x0360, 0x036c, 0x0378, - 0x0387, 0x0399, 0x03a8, 0x03ba, 0x03d8, 0x03ea, 0x03fc, 0x0408, - // Entry 40 - 7F - 0x0420, 0x0435, 0x044a, 0x0453, 0x045f, 0x0474, 0x047d, 0x0492, - 0x04a1, 0x04bf, 0x04c8, 0x04d4, 0x04e6, 0x04f2, 0x04fe, 0x0510, - 0x051c, 0x0534, 0x0543, 0x0552, 0x055b, 0x0567, 0x0579, 0x0585, - 0x058e, 0x05a6, 0x05b5, 0x05c1, 0x05d9, 0x05e5, 0x05f7, 0x0606, - 0x060f, 0x0621, 0x0639, 0x0648, 0x065d, 0x066f, 0x067b, 0x068d, - 0x06a2, 0x06b1, 0x06c6, 0x06d2, 0x06de, 0x06f0, 0x06fc, 0x070e, - 0x071d, 0x072c, 0x073b, 0x0761, 0x0787, 0x0799, 0x07a5, 0x07b7, - 0x07c3, 0x07d8, 0x07e4, 0x07f3, 0x0802, 0x0814, 0x0820, 0x0832, - // Entry 80 - BF - 0x0847, 0x0859, 0x0868, 0x087a, 0x0889, 0x089b, 0x08a7, 0x08bf, - 0x08d7, 0x08ec, 0x08f8, 0x0907, 0x0913, 0x0922, 0x0934, 0x0946, - 0x0952, 0x095e, 0x096a, 0x097c, 0x098b, 0x0997, 0x09a6, 0x09b2, - 0x09c7, 0x09d6, 0x09e2, 0x09ee, 0x09fa, 0x0a03, 0x0a18, 0x0a2a, - 0x0a36, 0x0a42, 0x0a4e, 0x0a5d, 0x0a6c, 0x0a78, 0x0a87, 0x0a99, - 0x0aab, 0x0aba, 0x0ac6, 0x0ad5, 0x0aea, 0x0af6, 0x0b05, 0x0b0e, - 0x0b23, 0x0b2f, 0x0b3b, 0x0b44, 0x0b53, 0x0b5f, 0x0b6e, 0x0b80, - 0x0b8f, 0x0bb0, 0x0bc2, 0x0bce, 0x0bda, 0x0be9, 0x0bf8, 0x0c07, - // Entry C0 - FF - 0x0c22, 0x0c34, 0x0c3d, 0x0c4c, 0x0c58, 0x0c67, 0x0c76, 0x0c88, - 0x0cac, 0x0cac, 0x0cbb, 0x0cd9, 0x0cf7, 0x0d00, 0x0d12, 0x0d2a, - 0x0d36, 0x0d48, 0x0d5a, 0x0d63, 0x0d8a, 0x0d93, 0x0d9f, 0x0db4, - 0x0dc3, 0x0dcf, 0x0ddb, 0x0dea, 0x0df3, 0x0e02, 0x0e0e, 0x0e23, - 0x0e3b, 0x0e47, 0x0e50, 0x0e62, 0x0e6b, 0x0e7a, 0x0ea1, 0x0ebc, - 0x0ec8, 0x0ed7, 0x0ee0, 0x0eef, 0x0f01, 0x0f0a, 0x0f13, 0x0f1f, - 0x0f31, 0x0f3d, 0x0f49, 0x0f58, 0x0f67, 0x0f67, 0x0f76, 0x0f7f, - 0x0f8e, 0x0fa0, 0x0faf, 0x0fb8, 0x0fcd, 0x0fdf, 0x0ff4, 0x1006, - // Entry 100 - 13F - 0x1018, 0x102a, 0x1036, 0x1042, 0x1060, 0x1084, 0x1096, 0x10a2, - 0x10b1, 0x10bd, 0x10cf, 0x10e1, 0x10f0, 0x10ff, 0x110b, 0x111d, - 0x112f, 0x1144, 0x1153, 0x1168, 0x1183, 0x118f, 0x119b, 0x11a7, - 0x11b6, 0x11c5, 0x11da, 0x11ec, 0x11f8, 0x1201, 0x1225, 0x1237, - 0x1255, 0x1264, 0x1276, 0x12a0, 0x12ac, 0x12cd, 0x12e2, 0x12f4, - 0x1306, 0x1318, 0x132a, 0x1339, 0x133f, 0x134e, 0x1354, 0x135d, - 0x1366, 0x1389, 0x1395, 0x13a4, 0x13b0, 0x13c2, 0x13d4, 0x13ec, - 0x1401, 0x1413, 0x141f, 0x142b, 0x1440, 0x1455, 0x145e, 0x146d, - // Entry 140 - 17F - 0x1479, 0x148e, 0x149a, 0x14a3, 0x14af, 0x14d0, 0x14e5, 0x14f7, - 0x1503, 0x1515, 0x151b, 0x1524, 0x1530, 0x153f, 0x154e, 0x1560, - 0x1572, 0x1596, 0x15a5, 0x15b4, 0x15c3, 0x15de, 0x15f9, 0x160b, - 0x1620, 0x162c, 0x1638, 0x1644, 0x1650, 0x165c, 0x166b, 0x167a, - 0x1686, 0x1695, 0x16bc, 0x16c8, 0x16d1, 0x16e6, 0x16ef, 0x16fe, - 0x1716, 0x1725, 0x173d, 0x1746, 0x1758, 0x176a, 0x1785, 0x1794, - 0x17a3, 0x17af, 0x17d0, 0x17dc, 0x17ee, 0x17fd, 0x1809, 0x1818, - 0x1827, 0x1833, 0x183f, 0x184e, 0x185d, 0x1869, 0x187b, 0x1887, - // Entry 180 - 1BF - 0x1893, 0x18b7, 0x18c6, 0x18d8, 0x18e4, 0x18f6, 0x1902, 0x1926, - 0x192f, 0x193b, 0x194d, 0x1962, 0x1977, 0x1983, 0x198c, 0x1995, - 0x19a1, 0x19a7, 0x19b0, 0x19bf, 0x19cb, 0x19da, 0x19ef, 0x1a01, - 0x1a16, 0x1a22, 0x1a2b, 0x1a3a, 0x1a49, 0x1a55, 0x1a5e, 0x1a85, - 0x1aa0, 0x1ab8, 0x1ac1, 0x1ad0, 0x1ae5, 0x1aee, 0x1afd, 0x1b0f, - 0x1b18, 0x1b27, 0x1b36, 0x1b42, 0x1b51, 0x1b60, 0x1b78, 0x1b8a, - 0x1b96, 0x1ba5, 0x1bc0, 0x1bc9, 0x1bd5, 0x1bde, 0x1bf0, 0x1bff, - 0x1c0b, 0x1c1d, 0x1c2f, 0x1c3e, 0x1c56, 0x1c62, 0x1c71, 0x1c80, - // Entry 1C0 - 1FF - 0x1c89, 0x1c98, 0x1ca4, 0x1cb9, 0x1cce, 0x1ce0, 0x1cec, 0x1cf8, - 0x1d07, 0x1d1f, 0x1d34, 0x1d49, 0x1d5b, 0x1d70, 0x1d7c, 0x1d8e, - 0x1daf, 0x1dd3, 0x1df4, 0x1e09, 0x1e1b, 0x1e2d, 0x1e3f, 0x1e5d, - 0x1e6c, 0x1e7b, 0x1e93, 0x1e9f, 0x1ec3, 0x1ede, 0x1eed, 0x1eff, - 0x1f11, 0x1f1d, 0x1f29, 0x1f3b, 0x1f47, 0x1f53, 0x1f65, 0x1f7a, - 0x1f83, 0x1f95, 0x1f9e, 0x1fb9, 0x1fc8, 0x1fd4, 0x1fe9, 0x2004, - 0x2016, 0x2022, 0x2031, 0x2049, 0x206d, 0x207f, 0x208b, 0x2094, - 0x209d, 0x20ac, 0x20ca, 0x20e2, 0x20f7, 0x210c, 0x2118, 0x2133, - // Entry 200 - 23F - 0x213f, 0x2151, 0x2163, 0x2172, 0x2187, 0x219f, 0x21ba, 0x21c9, - 0x21d5, 0x21e4, 0x21f0, 0x21f9, 0x2214, 0x2220, 0x2229, 0x223b, - 0x2247, 0x2259, 0x2265, 0x2274, 0x2280, 0x228c, 0x2295, 0x22a4, - 0x22b3, 0x22c2, 0x22ce, 0x22dd, 0x22ec, 0x22fe, 0x2313, 0x2322, - 0x2334, 0x234b, 0x2360, 0x236f, 0x237b, 0x238a, 0x2399, 0x23b7, - 0x23c9, 0x23d5, 0x23e4, 0x23f3, 0x241a, 0x242c, 0x243b, 0x244d, - 0x2459, 0x2465, 0x2474, 0x2483, 0x2495, 0x24ad, 0x24bc, 0x24c8, - 0x24d7, 0x24e6, 0x24f8, 0x2504, 0x2510, 0x251f, 0x2525, 0x2537, - // Entry 240 - 27F - 0x2546, 0x254f, 0x2558, 0x2564, 0x2573, 0x2582, 0x259a, 0x25a3, - 0x25b2, 0x25c7, 0x25d9, 0x25e5, 0x260a, 0x2613, 0x2628, 0x2631, - 0x264c, 0x264c, 0x264c, 0x266a, 0x2685, 0x2694, 0x26a6, 0x26b8, - 0x26b8, 0x26dc, 0x26dc, 0x26dc, 0x26dc, 0x26dc, 0x26dc, 0x26f1, - 0x26f1, 0x2718, 0x272a, 0x2748, 0x2763, 0x2772, 0x2781, -} // Size: 1254 bytes - -const kaLangStr string = "" + // Size: 12209 bytes - "აფარიაფხაზურიავესტურიაფრიკაანსიაკანიამჰარულიარაგონულიარაბულიასამურიხუნძუ" + - "რიაიმარააზერბაიჯანულიბაშკირულიბელორუსულიბულგარულიბისლამაბამბარაბენგალუ" + - "რიტიბეტურიბრეტონულიბოსნიურიკატალანურიჩეჩნურიჩამოროკორსიკულიკრიჩეხურისა" + - "ეკლესიო სლავურიჩუვაშურიუელსურიდანიურიგერმანულიდივეჰიძონგკხაევებერძნული" + - "ინგლისურიესპერანტოესპანურიესტონურიბასკურისპარსულიფულაფინურიფიჯიფარერულ" + - "იფრანგულიდასავლეთფრიზიულიირლანდიურიშოტლანდიური გელურიგალისიურიგუარანიგ" + - "უჯარათიმენურიჰაუსაებრაულიჰინდიხორვატულიჰაიტიური კრეოლიუნგრულისომხურიჰე" + - "რეროინტერლინგუალურიინდონეზიურიინტერლინგიიგბოსიჩუანის იიდოისლანდიურიიტა" + - "ლიურიინუკტიტუტიიაპონურიიავურიქართულიკონგოკიკუიუკუნამაყაზახურიდასავლეთ " + - "გრენლანდიურიქმერულიკანადაკორეულიკანურიქაშმირულიქურთულიკომიკორნულიყირგი" + - "ზულილათინურილუქსემბურგულიგანდალიმბურგულილინგალალაოსურილიტვურილუბა-კატა" + - "ნგალატვიურიმალაგასიურიმარშალურიმაორიმაკედონურიმალაიალამურიმონღოლურიმარ" + - "ათჰიმალაიურიმალტურიბირმულინაურუჩრდილოეთ ნდებელენეპალურინდონგანიდერლანდ" + - "ურინორვეგიული ნიუნორსკინორვეგიული ბუკმოლისამხრეთ ნდებელურინავახონიანჯა" + - "ოქსიტანურიოჯიბვეორომოორიაოსურიპენჯაბურიპალიპოლონურიპუშტუპორტუგალიურიკე" + - "ჩუარეტორომანულირუნდირუმინულირუსულიკინიარუანდასანსკრიტისარდინიულისინდჰუ" + - "რიჩრდილოეთ საამურისანგოსინჰალურისლოვაკურისლოვენურისამოაშონასომალიურიალ" + - "ბანურისერბულისუატისამხრეთ სოთოს ენასუნდურიშვედურისუაჰილიტამილურიტელუგუ" + - "ტაჯიკურიტაიტიგრინიათურქმენულიტსვანატონგანურითურქულიტსონგათათრულიტაიტურ" + - "იუიღურულიუკრაინულიურდუუზბეკურივენდავიეტნამურივოლაპუკივალონურივოლოფურიქ" + - "ჰოსაიდიშიიორუბაჩინურიზულუაჩეხურიაჩოლიადანგმეადიღეურიაღემიაინუურიაქადურ" + - "იალეუტურისამხრეთ ალთაურიძველი ინგლისურიანგიკაარამეულიმაპუდუნგუნიარაპაჰ" + - "ოარავაკიასუასტურიულიავადიბელუჯიბალინურიბასაბამუნიბეჯაბემბაბენადასავლეთ" + - " ბელუჯიბოჯპურიბინისიკსიკაბრაჯიბოდობურიატულიბუგინურიბილინიკაიუგასებუანოჩი" + - "გაჩიბჩაჩუკოტკურიმარიულიჩინუკის ჟარგონიჩოკტოჩიპევიანიჩეროკიჩეიენიცენტრა" + - "ლური ქურთულიკოპტურიყირიმულ-თურქულისესელვა-კრეოლური ფრანგულიკაშუბურიდაკ" + - "ოტურიდარგუულიტაიტადელავერულისლეივიდოგრიბიდინკაზარმადოგრიქვემოსორბულიდუ" + - "ალასაშუალო ჰოლანდიურიდიოლადიულადაზაგაემბუეფიკიძველეგვიპტურიეკაჯუკისაშუ" + - "ალო ინგლისურიევონდოფილიპინურიფონისაშუალო ფრანგულიძველი ფრანგულიჩრდილოფ" + - "რიზიულიაღმოსავლეთფრიზიულიფრიულურიგაგაგაუზურიგბაიაგეეზიგილბერტულისაშუალ" + - "ო ზემოგერმანულიძველი ზემოგერმანულიგონდიგორონტალოგოთურიძველი ბერძნულიშვ" + - "ეიცარიული გერმანულიგუსიიგვიჩინიჰავაიურიჰილიგაინონიხეთურიჰმონგიზემოსორბ" + - "ულიჰუპაიბანიიბიბიოილოკოინგუშურილოჟბანინგომბაკიმაშამიიუდეო-სპარსულიიუდე" + - "ო-არაბულიყარაყალფახურიკაბილურიკაჩინიკაჯიკამბაყაბარდოულიტიაპიმაკონდეკაბ" + - "უვერდიანუკოროხასიკოირა-ჩიინიკაკოკალენჯინიკიმბუნდუკომი-პერმიაკულიკონკან" + - "იკუსაიეკპელეყარაჩაულ-ბალყარულიკარელიურიკურუქიშამბალაბაფიაკიოლშიყუმუხურ" + - "იკუტენაილადინოლანგილანდალამბალეზგიურილაკოტამონგოლოზიჩრდილოეთ ლურილუბა-" + - "ლულუალუისენიოლუნდალუომიზოლუჰიამადურულიმაფამაგაჰიმაითილიმაკასარიმასაიმა" + - "ბამოქშამენდემერუმორისიენისაშუალო ირლანდიურიმაქუვა-მეეტომეტა-ენამიკმაკი" + - "მინანგკაბაუმანჯურიულიმანიპურიმოჰაუკურიმოსიმუნდანგისხვადასხვა ენაკრიკიმ" + - "ირანდულიმარვარიმიენეერზიამაზანდერანულინეაპოლიტანურინამაქვემოგერმანულინ" + - "ევარინიასინიუეკვასიონგიმბუნინოღაურიძველსკანდინავიურინკოჩრდილოეთ სოთონუ" + - "ერიკლასიკური ნევარულინიამვეზინიანკოლენიორონზიმაპანგასინანიფალაურიპამპა" + - "ნგაპაპიამენტოფალაუანინიგერიული კრეოლურიძველი სპარსულიფინიკიურიპრუსიული" + - "ძველი პროვანსულიკიჩერაჯასთანირაპანუირაროტონგულირომბობოშურიარომანულირუა" + - "სანდავეიაკუტურისამარიულ-არამეულისამბურუსანტალინგამბაისანგუსიცილიურიშოტ" + - "ლანდიურისამხრეთქურთულისენეკასენასელკუპურიკოირაბორო-სენიძველი ირლანდიურ" + - "იშილჰაშანიჩადური არაბულისამხრეთსამურილულე-საამურიინარი-საამურისკოლტ-სა" + - "ამურისონინკესრანან ტონგოსაჰოსუკუმაშუმერულიკომორულიკლასიკური სირიულისირ" + - "იულიტინმეტესოტეტუმითიგრეკლინგონიტოკ-პისინიტაროკოტუმბუკატუვალუტასავაქიტ" + - "უვაცენტრალური მოროკოს ტამაზიგხტიუდმურტულიუგარითულიუმბუნდუუცნობი ენავაი" + - "ვუნჯოვალსერიველაითავარაივალპირიყალმუხურისოგაიანგბენიიემბაკანტონურიბლის" + - "სიმბოლოებიზენაგასტანდარტული მაროკოული ტამაზიგხტიზუნილინგვისტური შიგთავ" + - "სი არ არისზაზაკითანამედროვე სტანდარტული არაბულიავსტრიული გერმანულიშვეი" + - "ცარიული ზემოგერმანულიავსტრალიური ინგლისურიკანადური ინგლისურიბრიტანული " + - "ინგლისურიამერიკული ინგლისურილათინურ ამერიკული ესპანურიევროპული ესპანურ" + - "იმექსიკური ესპანურიკანადური ფრანგულიშვეიცარიული ფრანგულიქვემოსაქსონური" + - "ფლამანდიურიბრაზილიური პორტუგალიურიევროპული პორტუგალიურიმოლდავურისერბულ" + - "-ხორვატულიკონგოს სუაჰილიგამარტივებული ჩინურიტრადიციული ჩინური" - -var kaLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0027, 0x003f, 0x005d, 0x006c, 0x0084, 0x009f, - 0x00b4, 0x00c9, 0x00de, 0x00f0, 0x0117, 0x0132, 0x0150, 0x016b, - 0x0180, 0x0195, 0x01b0, 0x01c8, 0x01e3, 0x01fb, 0x0219, 0x022e, - 0x0240, 0x025b, 0x0264, 0x0276, 0x02a7, 0x02bf, 0x02d4, 0x02e9, - 0x0304, 0x0316, 0x032b, 0x0334, 0x034c, 0x0367, 0x0382, 0x039a, - 0x03b2, 0x03c7, 0x03df, 0x03eb, 0x03fd, 0x0409, 0x0421, 0x0439, - 0x0469, 0x0487, 0x04bb, 0x04d6, 0x04eb, 0x0503, 0x0515, 0x0524, - 0x0539, 0x0548, 0x0548, 0x0563, 0x058e, 0x05a3, 0x05b8, 0x05ca, - // Entry 40 - 7F - 0x05f7, 0x0618, 0x0636, 0x0642, 0x065e, 0x065e, 0x0667, 0x0685, - 0x069d, 0x06bb, 0x06d3, 0x06e5, 0x06fa, 0x0709, 0x071b, 0x072d, - 0x0745, 0x0782, 0x0797, 0x07a9, 0x07be, 0x07d0, 0x07eb, 0x0800, - 0x080c, 0x0821, 0x083c, 0x0854, 0x087b, 0x088a, 0x08a8, 0x08bd, - 0x08d2, 0x08e7, 0x0909, 0x0921, 0x0942, 0x095d, 0x096c, 0x098a, - 0x09ae, 0x09c9, 0x09de, 0x09f6, 0x0a0b, 0x0a20, 0x0a2f, 0x0a5d, - 0x0a75, 0x0a87, 0x0aab, 0x0ae5, 0x0b19, 0x0b4a, 0x0b5c, 0x0b6e, - 0x0b8c, 0x0b9e, 0x0bad, 0x0bb9, 0x0bc8, 0x0be3, 0x0bef, 0x0c07, - // Entry 80 - BF - 0x0c16, 0x0c3a, 0x0c49, 0x0c6d, 0x0c7c, 0x0c94, 0x0ca6, 0x0cc7, - 0x0ce2, 0x0d00, 0x0d18, 0x0d46, 0x0d55, 0x0d70, 0x0d8b, 0x0da6, - 0x0db5, 0x0dc1, 0x0ddc, 0x0df4, 0x0e09, 0x0e18, 0x0e47, 0x0e5c, - 0x0e71, 0x0e86, 0x0e9e, 0x0eb0, 0x0ec8, 0x0ed1, 0x0ee9, 0x0f07, - 0x0f19, 0x0f34, 0x0f49, 0x0f5b, 0x0f70, 0x0f85, 0x0f9d, 0x0fb8, - 0x0fc4, 0x0fdc, 0x0feb, 0x1009, 0x1021, 0x1039, 0x1051, 0x1060, - 0x106f, 0x1081, 0x1081, 0x1093, 0x109f, 0x10b4, 0x10c3, 0x10d8, - 0x10f0, 0x10f0, 0x10f0, 0x10ff, 0x1114, 0x1129, 0x1129, 0x1141, - // Entry C0 - FF - 0x1141, 0x116c, 0x1197, 0x11a9, 0x11c1, 0x11e2, 0x11e2, 0x11f7, - 0x11f7, 0x11f7, 0x120c, 0x120c, 0x120c, 0x1215, 0x1215, 0x1230, - 0x1230, 0x123f, 0x1251, 0x1269, 0x1269, 0x1275, 0x1287, 0x1287, - 0x1287, 0x1293, 0x12a2, 0x12a2, 0x12ae, 0x12ae, 0x12ae, 0x12d9, - 0x12ee, 0x12ee, 0x12fa, 0x12fa, 0x12fa, 0x130f, 0x130f, 0x130f, - 0x131e, 0x131e, 0x132a, 0x132a, 0x1345, 0x135d, 0x135d, 0x136f, - 0x136f, 0x136f, 0x136f, 0x1381, 0x1381, 0x1381, 0x1396, 0x13a2, - 0x13b1, 0x13b1, 0x13cc, 0x13e1, 0x140c, 0x141b, 0x1436, 0x1448, - // Entry 100 - 13F - 0x145a, 0x148e, 0x14a3, 0x14a3, 0x14ce, 0x1515, 0x152d, 0x1545, - 0x155d, 0x156c, 0x158a, 0x159c, 0x15b1, 0x15c0, 0x15cf, 0x15de, - 0x1602, 0x1602, 0x1611, 0x1645, 0x1654, 0x1663, 0x1675, 0x1681, - 0x1690, 0x1690, 0x16b7, 0x16cc, 0x16cc, 0x16fd, 0x16fd, 0x170f, - 0x170f, 0x170f, 0x172d, 0x172d, 0x1739, 0x1739, 0x1767, 0x178f, - 0x178f, 0x17b9, 0x17ef, 0x1807, 0x180d, 0x1828, 0x1828, 0x1828, - 0x1837, 0x1837, 0x1846, 0x1864, 0x1864, 0x18a1, 0x18d8, 0x18d8, - 0x18e7, 0x1902, 0x1914, 0x1914, 0x193c, 0x1979, 0x1979, 0x1979, - // Entry 140 - 17F - 0x1988, 0x199d, 0x199d, 0x199d, 0x19b5, 0x19b5, 0x19d6, 0x19e8, - 0x19fa, 0x1a1b, 0x1a1b, 0x1a27, 0x1a36, 0x1a48, 0x1a57, 0x1a6f, - 0x1a6f, 0x1a6f, 0x1a84, 0x1a96, 0x1aae, 0x1ad6, 0x1afb, 0x1afb, - 0x1b22, 0x1b3a, 0x1b4c, 0x1b58, 0x1b67, 0x1b67, 0x1b85, 0x1b85, - 0x1b94, 0x1ba9, 0x1bcd, 0x1bcd, 0x1bd9, 0x1bd9, 0x1be5, 0x1be5, - 0x1c04, 0x1c04, 0x1c04, 0x1c10, 0x1c2b, 0x1c43, 0x1c6e, 0x1c83, - 0x1c95, 0x1ca4, 0x1cd8, 0x1cd8, 0x1cd8, 0x1cf3, 0x1d05, 0x1d1a, - 0x1d29, 0x1d3b, 0x1d53, 0x1d68, 0x1d7a, 0x1d89, 0x1d98, 0x1da7, - // Entry 180 - 1BF - 0x1dbf, 0x1dbf, 0x1dbf, 0x1dbf, 0x1dd1, 0x1dd1, 0x1de0, 0x1de0, - 0x1dec, 0x1e11, 0x1e11, 0x1e2d, 0x1e45, 0x1e54, 0x1e5d, 0x1e69, - 0x1e78, 0x1e78, 0x1e78, 0x1e90, 0x1e9c, 0x1eae, 0x1ec3, 0x1edb, - 0x1edb, 0x1eea, 0x1ef6, 0x1f05, 0x1f05, 0x1f14, 0x1f20, 0x1f3b, - 0x1f6f, 0x1f91, 0x1fa7, 0x1fbc, 0x1fdd, 0x1ffb, 0x2013, 0x202e, - 0x203a, 0x203a, 0x2052, 0x207a, 0x2089, 0x20a4, 0x20b9, 0x20b9, - 0x20c8, 0x20d7, 0x20fe, 0x20fe, 0x2125, 0x2131, 0x215b, 0x216d, - 0x217c, 0x2188, 0x2188, 0x219a, 0x21b2, 0x21c7, 0x21fa, 0x21fa, - // Entry 1C0 - 1FF - 0x2203, 0x2228, 0x2237, 0x226b, 0x2283, 0x229b, 0x22aa, 0x22b9, - 0x22b9, 0x22b9, 0x22da, 0x22ef, 0x2307, 0x2325, 0x233d, 0x233d, - 0x2371, 0x2371, 0x2371, 0x2399, 0x2399, 0x23b4, 0x23b4, 0x23b4, - 0x23b4, 0x23cc, 0x23fa, 0x2406, 0x2406, 0x2421, 0x2436, 0x2457, - 0x2457, 0x2457, 0x2466, 0x2478, 0x2478, 0x2478, 0x2478, 0x2493, - 0x249c, 0x24b1, 0x24c9, 0x24fa, 0x250f, 0x250f, 0x2524, 0x2524, - 0x2539, 0x2548, 0x2563, 0x2584, 0x2584, 0x25ae, 0x25c0, 0x25cc, - 0x25cc, 0x25e7, 0x260f, 0x263d, 0x263d, 0x264c, 0x2658, 0x2680, - // Entry 200 - 23F - 0x2680, 0x2680, 0x2680, 0x26a7, 0x26c9, 0x26ee, 0x2713, 0x2728, - 0x2728, 0x274a, 0x274a, 0x2756, 0x2756, 0x2768, 0x2768, 0x2780, - 0x2798, 0x27c9, 0x27de, 0x27de, 0x27de, 0x27ed, 0x27f9, 0x27f9, - 0x280b, 0x281a, 0x281a, 0x281a, 0x281a, 0x2832, 0x2832, 0x2832, - 0x2832, 0x2832, 0x284e, 0x284e, 0x2860, 0x2860, 0x2860, 0x2860, - 0x2875, 0x2887, 0x289f, 0x28ab, 0x28fe, 0x2919, 0x2934, 0x2949, - 0x2965, 0x296e, 0x296e, 0x296e, 0x296e, 0x296e, 0x296e, 0x296e, - 0x297d, 0x2992, 0x29a7, 0x29b6, 0x29b6, 0x29cb, 0x29cb, 0x29e6, - // Entry 240 - 27F - 0x29e6, 0x29f2, 0x29f2, 0x29f2, 0x2a0a, 0x2a19, 0x2a19, 0x2a34, - 0x2a34, 0x2a5e, 0x2a5e, 0x2a70, 0x2acc, 0x2ad8, 0x2b26, 0x2b38, - 0x2b91, 0x2b91, 0x2bc8, 0x2c11, 0x2c4e, 0x2c82, 0x2cb9, 0x2cf0, - 0x2d3a, 0x2d6b, 0x2d9f, 0x2d9f, 0x2dd0, 0x2e0a, 0x2e34, 0x2e55, - 0x2e98, 0x2ed5, 0x2ef0, 0x2f1e, 0x2f46, 0x2f80, 0x2fb1, -} // Size: 1254 bytes - -const kkLangStr string = "" + // Size: 9155 bytes - "афар тіліабхаз тіліафрикаанс тіліакан тіліамхар тіліарагон тіліараб тілі" + - "ассам тіліавар тіліаймара тіліәзірбайжан тілібашқұрт тілібеларусь тіліб" + - "олгар тілібислама тілібамбара тілібенгал тілітибет тілібретон тілібосни" + - "я тілікаталан тілішешен тілічаморро тілікорсика тілічех тілішіркеулік с" + - "лавян тілічуваш тіліваллий тілідат тілінеміс тілідивехи тілідзонг-кэ ті" + - "ліэве тілігрек тіліағылшын тіліэсперанто тіліиспан тіліэстон тілібаск т" + - "іліпарсы тіліфула тіліфин тіліфиджи тіліфарер тіліфранцуз тілібатыс фри" + - "з тіліирланд тілішотландиялық гэль тілігалисия тілігуарани тілігуджарат" + - "и тілімэн тіліхауса тіліиврит тіліхинди тіліхорват тілігаити тілівенгр " + - "тіліармян тілігереро тіліинтерлингва тіліиндонезия тіліинтерлингве тілі" + - "игбо тілісычуан и тіліидо тіліисланд тіліитальян тіліинуктитут тіліжапо" + - "н тіліява тілігрузин тілікикуйю тілікваньяма тіліқазақ тілікалаалисут т" + - "ілікхмер тіліканнада тілікорей тіліканури тілікашмир тілікүрд тілікоми " + - "тілікорн тіліқырғыз тілілатын тілілюксембург тіліганда тілілимбург тілі" + - "лингала тілілаос тілілитва тілілуба-катанга тілілатыш тілімалагаси тілі" + - "маршалл тілімаори тілімакедон тілімалаялам тілімоңғол тілімаратхи тілім" + - "алай тілімальта тілібирма тілінауру тілісолтүстік ндебеле тілінепал тіл" + - "індонга тілінидерланд тілінорвегиялық нюнорск тілінорвегиялық букмол ті" + - "ліоңтүстік ндебеле тілінавахо тіліньянджа тіліокситан тіліоромо тіліори" + - "я тіліосетин тіліпенджаб тіліполяк тіліпушту тіліпортугал тілікечуа тіл" + - "іроманш тілірунди тілірумын тіліорыс тілікиньяруанда тілісанскрит тіліс" + - "ардин тілісиндхи тілісолтүстік саам тілісанго тілісингал тілісловак тіл" + - "ісловен тілісамоа тілішона тілісомали тіліалбан тілісерб тілісвати тілі" + - "сесото тілісундан тілішвед тілісуахили тілітамил тілітелугу тілітәжік т" + - "ілітай тілітигринья тілітүрікмен тілітсвана тілітонган тілітүрік тілітс" + - "онга тілітатар тілітаити тіліұйғыр тіліукраин тіліурду тіліөзбек тіліве" + - "нда тілівьетнам тіліволапюк тіліваллон тіліволоф тілікхоса тіліидиш тіл" + - "ійоруба тіліқытай тілізулу тіліачех тіліадангме тіліадыгей тіліагхем ті" + - "ліайну тіліалеут тіліоңтүстік алтай тіліангика тілімапуче тіліарапахо т" + - "іліасу тіліастурия тіліавадхи тілібали тілібаса тілібемба тілібена тілі" + - "батыс балучи тілібходжпури тілібини тілісиксика тілібодо тілібугис тілі" + - "блин тілісебуано тілікига тілічуук тілімари тілічокто тілічероки тіліша" + - "йен тілісорани тілісейшельдік креол тілідакота тілідаргин тілітаита тіл" + - "ідогриб тілізарма тілітөменгі лужица тілідуала тілідиола тілідазага тіл" + - "іэмбу тіліэфик тіліэкаджук тіліэвондо тіліфилиппин тіліфон тіліфриуль т" + - "іліга тілігагауз тілігеэз тілігильберт тілігоронтало тілішвейцариялық н" + - "еміс тілігусии тілігвичин тілігавайи тіліхилигайнон тіліхмонг тіліжоғар" + - "ғы лужица тіліхупа тіліибан тіліибибио тіліилоко тіліингуш тіліложбан т" + - "ілінгомба тілімачаме тілікабил тілікачин тілікаджи тілікамба тілікабард" + - "ин тілітьяп тілімаконде тілікабувердьяну тілікоро тілікхаси тілікойра ч" + - "ини тілікако тілікаленжин тілікимбунду тілікоми-пермяк тіліконкани тілі" + - "кпелле тіліқарашай-балқар тілікарель тілікурух тілішамбала тілібафиа ті" + - "лікёльн тіліқұмық тіліладино тіліланги тілілезгин тілілакота тілілози т" + - "ілісолтүстік люри тілілуба-лулуа тілілунда тілілуо тілімизо тілілухиа т" + - "ілімадур тілімагахи тілімайтхили тілімакасар тілімасай тілімокша тіліме" + - "нде тілімеру тіліморисиен тілімакуа-меетто тілімета тілімикмак тілімина" + - "нгкабау тіліманипури тілімогавк тілімосси тілімунданг тілібірнеше тілкр" + - "ик тілімиранд тіліэрзян тілімазандеран тілінеаполитан тілінама тілітөме" + - "нгі неміс тіліневар тіліниас тіліниуэ тіліквасио тілінгиембун тіліноғай" + - " тілінко тілісолтүстік сото тілінуэр тілінианколе тіліпангасинан тіліпам" + - "панга тіліпапьяменто тіліпалау тілінигериялық пиджин тіліпруссия тіліки" + - "че тілірапануй тіліраротонган тіліромбо тіліарумын тіліруа тілісандаве " + - "тіліякут тілісамбуру тілісантали тілінгамбай тілісангу тілісицилия тілі" + - "шотланд тіліоңтүстік күрд тілісена тілікойраборо сенни тіліташелхит тіл" + - "ішан тіліоңтүстік саам тілілуле саам тіліинари саам тіліколтта саам тіл" + - "ісонинке тілісранан тонго тілісахо тілісукума тілікомор тілісирия тіліт" + - "емне тілітесо тілітетум тілітигре тіліклингон тіліток-писин тілітароко " + - "тілітумбука тілітувалу тілітасавак тілітувин тіліорталық атлас тамазигх" + - "т тіліудмурт тіліумбунду тілібелгісіз тілвай тілівунджо тілівальзер тіл" + - "іволайта тіліварай тілівальбири тіліқалмақ тілісога тіліянгбен тілійемб" + - "а тілікантон тілімарокколық стандартты тамазигхт тілізуни тілітілдік ма" + - "змұны жоқзаза тіліқазіргі стандартты араб тіліавстриялық неміс тілішвей" + - "цариялық әдеби неміс тіліавстралиялық ағылшын тіліканадалық ағылшын тіл" + - "ібританиялық ағылшын тіліамерикалық ағылшын тілілатынамерикалық испан т" + - "іліеуропалық испан тілімексикалық испан тіліканадалық француз тілішвейц" + - "ариялық француз тілітөменгі саксон тіліфламанд тілібразилиялық португал" + - " тіліеуропалық португал тілімолдован тілісерб-хорват тіліконго суахили т" + - "іліжеңілдетілген қытай тілідәстүрлі қытай тілі" - -var kkLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0011, 0x0024, 0x0024, 0x003f, 0x0050, 0x0063, 0x0078, - 0x0089, 0x009c, 0x00ad, 0x00c2, 0x00df, 0x00f6, 0x010f, 0x0124, - 0x013b, 0x0152, 0x0167, 0x017a, 0x018f, 0x01a4, 0x01bb, 0x01ce, - 0x01e5, 0x01fc, 0x01fc, 0x020b, 0x0233, 0x0246, 0x025b, 0x026a, - 0x027d, 0x0292, 0x02aa, 0x02b9, 0x02ca, 0x02e1, 0x02fc, 0x030f, - 0x0322, 0x0333, 0x0346, 0x0357, 0x0366, 0x0379, 0x038c, 0x03a3, - 0x03bf, 0x03d4, 0x03fe, 0x0415, 0x042c, 0x0447, 0x0456, 0x0469, - 0x047c, 0x048f, 0x048f, 0x04a4, 0x04b7, 0x04ca, 0x04dd, 0x04f2, - // Entry 40 - 7F - 0x0511, 0x052c, 0x054b, 0x055c, 0x0574, 0x0574, 0x0583, 0x0598, - 0x05af, 0x05ca, 0x05dd, 0x05ec, 0x0601, 0x0601, 0x0616, 0x062f, - 0x0642, 0x065f, 0x0672, 0x0689, 0x069c, 0x06b1, 0x06c6, 0x06d7, - 0x06e8, 0x06f9, 0x070e, 0x0721, 0x073e, 0x0751, 0x0768, 0x077f, - 0x0790, 0x07a3, 0x07c3, 0x07d6, 0x07ef, 0x0806, 0x0819, 0x0830, - 0x0849, 0x085e, 0x0875, 0x0888, 0x089d, 0x08b0, 0x08c3, 0x08ed, - 0x0900, 0x0915, 0x0930, 0x095e, 0x098a, 0x09b2, 0x09c7, 0x09de, - 0x09f5, 0x09f5, 0x0a08, 0x0a19, 0x0a2e, 0x0a45, 0x0a45, 0x0a58, - // Entry 80 - BF - 0x0a6b, 0x0a84, 0x0a97, 0x0aac, 0x0abf, 0x0ad2, 0x0ae3, 0x0b02, - 0x0b1b, 0x0b30, 0x0b45, 0x0b69, 0x0b7c, 0x0b91, 0x0ba6, 0x0bbb, - 0x0bce, 0x0bdf, 0x0bf4, 0x0c07, 0x0c18, 0x0c2b, 0x0c40, 0x0c55, - 0x0c66, 0x0c7d, 0x0c90, 0x0ca5, 0x0cb8, 0x0cc7, 0x0ce0, 0x0cf9, - 0x0d0e, 0x0d23, 0x0d36, 0x0d4b, 0x0d5e, 0x0d71, 0x0d84, 0x0d99, - 0x0daa, 0x0dbd, 0x0dd0, 0x0de7, 0x0dfe, 0x0e13, 0x0e26, 0x0e39, - 0x0e4a, 0x0e5f, 0x0e5f, 0x0e72, 0x0e83, 0x0e94, 0x0e94, 0x0eab, - 0x0ec0, 0x0ec0, 0x0ec0, 0x0ed3, 0x0ee4, 0x0ee4, 0x0ee4, 0x0ef7, - // Entry C0 - FF - 0x0ef7, 0x0f1b, 0x0f1b, 0x0f30, 0x0f30, 0x0f45, 0x0f45, 0x0f5c, - 0x0f5c, 0x0f5c, 0x0f5c, 0x0f5c, 0x0f5c, 0x0f6b, 0x0f6b, 0x0f82, - 0x0f82, 0x0f97, 0x0f97, 0x0fa8, 0x0fa8, 0x0fb9, 0x0fb9, 0x0fb9, - 0x0fb9, 0x0fb9, 0x0fcc, 0x0fcc, 0x0fdd, 0x0fdd, 0x0fdd, 0x0ffd, - 0x1018, 0x1018, 0x1029, 0x1029, 0x1029, 0x1040, 0x1040, 0x1040, - 0x1040, 0x1040, 0x1051, 0x1051, 0x1051, 0x1064, 0x1064, 0x1075, - 0x1075, 0x1075, 0x1075, 0x1075, 0x1075, 0x1075, 0x108c, 0x109d, - 0x109d, 0x109d, 0x10ae, 0x10bf, 0x10bf, 0x10d2, 0x10d2, 0x10e7, - // Entry 100 - 13F - 0x10fa, 0x110f, 0x110f, 0x110f, 0x110f, 0x1137, 0x1137, 0x114c, - 0x1161, 0x1174, 0x1174, 0x1174, 0x1189, 0x1189, 0x119c, 0x119c, - 0x11c0, 0x11c0, 0x11d3, 0x11d3, 0x11e6, 0x11e6, 0x11fb, 0x120c, - 0x121d, 0x121d, 0x121d, 0x1234, 0x1234, 0x1234, 0x1234, 0x1249, - 0x1249, 0x1249, 0x1262, 0x1262, 0x1271, 0x1271, 0x1271, 0x1271, - 0x1271, 0x1271, 0x1271, 0x1286, 0x1293, 0x12a8, 0x12a8, 0x12a8, - 0x12a8, 0x12a8, 0x12b9, 0x12d2, 0x12d2, 0x12d2, 0x12d2, 0x12d2, - 0x12d2, 0x12ed, 0x12ed, 0x12ed, 0x12ed, 0x1319, 0x1319, 0x1319, - // Entry 140 - 17F - 0x132c, 0x1341, 0x1341, 0x1341, 0x1356, 0x1356, 0x1373, 0x1373, - 0x1386, 0x13aa, 0x13aa, 0x13bb, 0x13cc, 0x13e1, 0x13f4, 0x1407, - 0x1407, 0x1407, 0x141c, 0x1431, 0x1446, 0x1446, 0x1446, 0x1446, - 0x1446, 0x1459, 0x146c, 0x147f, 0x1492, 0x1492, 0x14ab, 0x14ab, - 0x14bc, 0x14d3, 0x14f4, 0x14f4, 0x1505, 0x1505, 0x1518, 0x1518, - 0x1534, 0x1534, 0x1534, 0x1545, 0x155e, 0x1577, 0x1595, 0x15ac, - 0x15ac, 0x15c1, 0x15e5, 0x15e5, 0x15e5, 0x15fa, 0x160d, 0x1624, - 0x1637, 0x164a, 0x165d, 0x165d, 0x1672, 0x1685, 0x1685, 0x1685, - // Entry 180 - 1BF - 0x169a, 0x169a, 0x169a, 0x169a, 0x16af, 0x16af, 0x16af, 0x16af, - 0x16c0, 0x16e4, 0x16e4, 0x1700, 0x1700, 0x1713, 0x1722, 0x1733, - 0x1746, 0x1746, 0x1746, 0x1759, 0x1759, 0x176e, 0x1787, 0x179e, - 0x179e, 0x17b1, 0x17b1, 0x17c4, 0x17c4, 0x17d7, 0x17e8, 0x1801, - 0x1801, 0x1821, 0x1832, 0x1847, 0x1866, 0x1866, 0x187f, 0x1894, - 0x18a7, 0x18a7, 0x18be, 0x18d3, 0x18e4, 0x18f9, 0x18f9, 0x18f9, - 0x18f9, 0x190c, 0x1929, 0x1929, 0x1946, 0x1957, 0x1979, 0x198c, - 0x199d, 0x19ae, 0x19ae, 0x19c3, 0x19dc, 0x19ef, 0x19ef, 0x19ef, - // Entry 1C0 - 1FF - 0x19fe, 0x1a22, 0x1a33, 0x1a33, 0x1a33, 0x1a4c, 0x1a4c, 0x1a4c, - 0x1a4c, 0x1a4c, 0x1a69, 0x1a69, 0x1a82, 0x1a9f, 0x1ab2, 0x1ab2, - 0x1adc, 0x1adc, 0x1adc, 0x1adc, 0x1adc, 0x1adc, 0x1adc, 0x1adc, - 0x1adc, 0x1af3, 0x1af3, 0x1b04, 0x1b04, 0x1b04, 0x1b1b, 0x1b38, - 0x1b38, 0x1b38, 0x1b4b, 0x1b4b, 0x1b4b, 0x1b4b, 0x1b4b, 0x1b60, - 0x1b6f, 0x1b86, 0x1b97, 0x1b97, 0x1bae, 0x1bae, 0x1bc5, 0x1bc5, - 0x1bdc, 0x1bef, 0x1c06, 0x1c1d, 0x1c1d, 0x1c3f, 0x1c3f, 0x1c50, - 0x1c50, 0x1c50, 0x1c76, 0x1c76, 0x1c76, 0x1c8f, 0x1c9e, 0x1c9e, - // Entry 200 - 23F - 0x1c9e, 0x1c9e, 0x1c9e, 0x1cc0, 0x1cda, 0x1cf6, 0x1d14, 0x1d2b, - 0x1d2b, 0x1d4b, 0x1d4b, 0x1d5c, 0x1d5c, 0x1d71, 0x1d71, 0x1d71, - 0x1d84, 0x1d84, 0x1d97, 0x1d97, 0x1d97, 0x1daa, 0x1dbb, 0x1dbb, - 0x1dce, 0x1de1, 0x1de1, 0x1de1, 0x1de1, 0x1df8, 0x1df8, 0x1df8, - 0x1df8, 0x1df8, 0x1e12, 0x1e12, 0x1e27, 0x1e27, 0x1e27, 0x1e27, - 0x1e3e, 0x1e53, 0x1e6a, 0x1e7d, 0x1eb2, 0x1ec7, 0x1ec7, 0x1ede, - 0x1ef5, 0x1f04, 0x1f04, 0x1f04, 0x1f04, 0x1f04, 0x1f04, 0x1f04, - 0x1f19, 0x1f30, 0x1f47, 0x1f5a, 0x1f5a, 0x1f73, 0x1f73, 0x1f88, - // Entry 240 - 27F - 0x1f88, 0x1f99, 0x1f99, 0x1f99, 0x1fae, 0x1fc1, 0x1fc1, 0x1fd6, - 0x1fd6, 0x1fd6, 0x1fd6, 0x1fd6, 0x201b, 0x202c, 0x204e, 0x205f, - 0x2094, 0x2094, 0x20bc, 0x20f3, 0x2123, 0x214d, 0x217b, 0x21a7, - 0x21d9, 0x21ff, 0x2227, 0x2227, 0x2251, 0x2281, 0x22a5, 0x22bc, - 0x22ec, 0x2318, 0x2331, 0x234f, 0x2371, 0x239f, 0x23c3, -} // Size: 1254 bytes - -const kmLangStr string = "" + // Size: 8873 bytes - "អាហ្វារអាប់ខាហ៊្សានអាវេស្ថានអាហ្វ្រិកានអាកានអាំហារិកអារ៉ាហ្គោនអារ៉ាប់អាស" + - "ាមីសអាវ៉ារីកអីម៉ារ៉ាអាស៊ែបៃហ្សង់បាស្គៀបេឡារុសប៊ុលហ្គារីប៊ីស្លាម៉ាបាម្ប" + - "ារាបង់ក្លាដែសទីបេប្រីស្តុនបូស្នីកាតាឡានឈីឆេនឈីម៉ូរ៉ូកូស៊ីខានឆែកឈឺជស្លា" + - "វិកឈូវ៉ាសវេលដាណឺម៉ាកអាល្លឺម៉ង់ទេវីហ៊ីដុងខាអ៊ីវក្រិកអង់គ្លេសអេស្ពេរ៉ាន់" + - "តូអេស្ប៉ាញអេស្តូនីបាសខ៍ភឺសៀនហ្វ៊ូឡាហ្វាំងឡង់ហ៊្វីជីហ្វារូសបារាំងហ្វ្រី" + - "ស៊ានខាងលិចអៀរឡង់ស្កុតហ្កែលិគហ្គាលីស្យានហ្គូរ៉ានីហ្កុយ៉ារាទីមេនហូសាហេប្" + - "រឺហិណ្ឌីក្រូអាតហៃទីហុងគ្រីអាមេនីហឺរីរ៉ូអីនធើលីងឥណ្ឌូណេស៊ីអ៊ីកបូស៊ីឈាន់" + - "យីអ៊ីដូអ៊ីស្លង់អ៊ីតាលីអ៊ីនុកទីទុតជប៉ុនជ្វាហ្សក\u200bហ្ស៊ីគីគូយូគូនយ៉ាម" + - "៉ាកាហ្សាក់កាឡាលលីស៊ុតខ្មែរខាណាដាកូរ៉េកានូរីកាស្មៀរឃឺដកូមីកូនីស\u200bកៀ" + - "ហ្ស៊ីសឡាតំាងលុចសំបួហ្គាន់ដាលីមប៊ូសលីនកាឡាឡាវលីទុយអានីលូបាកាតានហ្គាឡាតវ" + - "ីម៉ាឡាហ្គាស៊ីម៉ាស់សលម៉ោរីម៉ាសេដូនីម៉ាឡាយ៉ាឡាមម៉ុងហ្គោលីម៉ារ៉ាធីម៉ាឡេម៉" + - "ាល់តាភូមាណូរូនេបេលេខាងជើងនេប៉ាល់នុនហ្គាហូឡង់ន័រវែស នីនូសន័រវែស បុកម៉ាល" + - "់នេប៊េលខាងត្បូងណាវ៉ាចូណានចាអូសីតាន់អូរ៉ូម៉ូអូឌៀអូស៊ីទិកបឹនជាពិប៉ូឡូញបា" + - "ស្តូព័រទុយហ្គាល់ហ្គិកឈួរ៉ូម៉ង់រុណ្ឌីរូម៉ានីរុស្ស៊ីគិនយ៉ាវ៉ាន់ដាសំស្ក្រ" + - "ឹតសាឌីនាស៊ីនឌីសាមីខាងជើងសានហ្គោស្រីលង្កាស្លូវ៉ាគីស្លូវ៉ានីសាម័រសូណាសូម" + - "៉ាលីអាល់បានីស៊ែបស្វាទីសូថូខាងត្បូងស៊ូដង់ស៊ុយអែតស្វាហ៊ីលីតាមីលតេលុគុតាហ" + - "្ស៊ីគថៃទីហ្គ្រីញ៉ាតួកម៉េនស្វាណាតុងហ្គាទួរគីសុងហ្គាតាតាតាហ៊ីទីអ៊ុយហ្គឺរ" + - "អ៊ុយក្រែនអ៊ូរឌូអ៊ូសបេគវេនដាវៀតណាមវូឡាពូកវ៉ាលូនវូឡុហ្វឃសាយ៉ីឌីសយរូបាហ្ស" + - "ួងចិនហ្សូលូអាកហ៊ីនឺសអាដេងមីអាឌីហ្គីអាហ្គីមអាយនូអាលូតអាល់តៃខាងត្បូងអាហ្" + - "គីកាម៉ាពូឈីអារ៉ាប៉ាហូអាស៊ូអាស្ទូរីអាវ៉ាឌីបាលីបាសាបេមបាបេណាបាឡូជីខាងលិច" + - "បូចពូរីប៊ីនីស៊ីកស៊ីកាបូដូប៊ុកហ្គីប្ល៊ីនស៊ីប៊ូអាណូឈីហ្គាឈូគីម៉ារីឆុកតាវ" + - "ឆេរូគីឈីយីនីឃើដភាគកណ្តាលសេសេលវ៉ាគ្រីអូល (បារាំង)ដាកូតាដាចវ៉ាតៃតាដូគ្រី" + - "បហ្សាម៉ាសូប៊ីក្រោមឌួលឡាចូឡាហ៊្វុនយីដាហ្សាហ្គាអេមប៊ូអ៊ីហ្វិកអ៊ីកាជុកអ៊ី" + - "វ៉ុនដូហ្វីលីពីនហ្វ៊ុនហ៊្វ្រូលានហ្គាកាគូសជីសហ្គីលបឺទហ្គូរុនតាឡូអាល្លឺម៉" + - "ង (ស្វីស)ហ្គូស៊ីហ្គីចឈីនហាវៃហ៊ីលីហ្គេណុនម៉ុងសូប៊ីលើហ៊ូប៉ាអ៊ីបានអាយប៊ីប" + - "៊ីអូអ៊ីឡូកូអ៊ិនហ្គូសលុចបានងុំបាម៉ាឆាំកាប៊ីឡេកាឈីនជូកាំបាកាបាឌៀយ៉ាប់ម៉ា" + - "កូនដេកាប៊ូវឺឌៀនូគូរូកាស៊ីគុយរ៉ាឈីនីកាកូកាលែនជីនគីមប៊ុនឌូគូមីភឹមយ៉ាគគុន" + - "កានីគ្លីបការ៉ាឆាយបាល់កាការីលាគូរូកសាមបាឡាបាហ្វៀកូឡូញគូមីគឡាឌីណូឡានហ្គី" + - "ឡេសហ្គីឡាកូតាឡូហ្ស៊ីលូរីខាងជើងលូបាលូឡាលុនដាលូអូមីហ្សូលូយ៉ាម៉ាឌូរីសម៉ាហ" + - "្គាហ៊ីម៉ៃធីលីម៉ាកាសាម៉ាសៃមុខសាមេនឌីមេរូម៉ូរីស៊ីនម៉ាកគូវ៉ាមីតូមេតាមិកមេ" + - "កមីណាងកាប៊ូម៉ានីពូរីម៊ូហាគមូស៊ីមុនដាងពហុភាសាគ្រីកមីរ៉ានដេសអឺហ្ស៊ីយ៉ាម៉" + - "ាហ្សានដឺរេនីនាប៉ូលីតានណាម៉ាអាល្លឺម៉ង់ក្រោមនេវ៉ាវីនីអាសនូអៀនក្វាស្យូងៀម" + - "ប៊ូនណូហ្គៃនគោសូថូខាងជើងនូអ័រណានកូលេភេនហ្គាស៊ីណានផាមភេនហ្គាប៉ាប៉ៃមេនតូប" + - "៉ាលូអានភាសាទំនាក់ទំនងនីហ្សេរីយ៉ាព្រូស៊ានគីចឈីរ៉ាប៉ានូរ៉ារ៉ូតុងហ្គានរុម" + - "បូអារ៉ូម៉ានីរ៉្វាសានដាវីសាខាសាមបូរូសាន់តាលីងាំបេយសានហ្គូស៊ីស៊ីលានស្កុត" + - "ឃើដភាគខាងត្បូងស៊ីណាគុយរ៉ាបូរ៉ុស៊ីនីតាឈីលហ៊ីតសានសាមីខាងត្បូងលូលីសាមីអ៊ី" + - "ណារីសាម៉ីស្កុលសាមីសូនីនគេស្រាណានតុងហ្គោសាហូស៊ូគូម៉ាកូម៉ូរីស៊ីរីធីមនីតេ" + - "សូទីទុំធីហ្គ្រាឃ្លីនហ្គុនថុកពីស៊ីនតារ៉ូកូទុមប៊ូកាទូវ៉ាលូតាសាវ៉ាក់ទូវីន" + - "ៀតាម៉ាសាយអាត្លាសកណ្តាលអាត់មូដអាម់ប៊ុនឌូភាសាមិនស្គាល់វៃវុនចូវេលសឺវ៉ូឡាយ" + - "តាវ៉ារេយវ៉ារីប៉ារីកាលមីគសូហ្គាយ៉ាងបេនយេមបាកន្តាំងតាម៉ាហ្សៃម៉ារ៉ុកស្តង់" + - "ដាហ្សូនីគ្មាន\u200bទិន្នន័យ\u200bភាសាហ្សាហ្សាអារ៉ាប់ (ស្តង់ដារ)អេស្ប៉ា" + - "ញ (អ៊ឺរ៉ុប)ហ្សាក់ស្យុងក្រោមផ្លាមីសព័រទុយហ្គាល់ (អឺរ៉ុប)ម៉ុលដាវីសឺបូក្រ" + - "ូអាតកុងហ្គោស្វាហ៊ីលីចិន\u200bអក្សរ\u200bកាត់ចិន\u200bអក្សរ\u200bពេញ" - -var kmLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0015, 0x0039, 0x0054, 0x0075, 0x0084, 0x009c, 0x00ba, - 0x00cf, 0x00e4, 0x00fc, 0x0114, 0x0138, 0x014a, 0x015f, 0x017d, - 0x019b, 0x01b3, 0x01d1, 0x01dd, 0x01f8, 0x020a, 0x021f, 0x022e, - 0x0246, 0x025e, 0x025e, 0x0267, 0x0285, 0x0297, 0x02a0, 0x02b8, - 0x02d6, 0x02eb, 0x02fa, 0x0306, 0x0315, 0x032d, 0x0354, 0x036c, - 0x0384, 0x0393, 0x03a2, 0x03b7, 0x03d2, 0x03e7, 0x03fc, 0x040e, - 0x043e, 0x0450, 0x0474, 0x0495, 0x04b0, 0x04d1, 0x04da, 0x04e6, - 0x04f8, 0x050a, 0x050a, 0x051f, 0x052b, 0x0540, 0x0552, 0x0567, - // Entry 40 - 7F - 0x057f, 0x059d, 0x059d, 0x05af, 0x05ca, 0x05ca, 0x05d9, 0x05f1, - 0x0606, 0x0627, 0x0636, 0x0642, 0x0660, 0x0660, 0x0672, 0x068d, - 0x06a5, 0x06c6, 0x06d5, 0x06e7, 0x06f6, 0x0708, 0x071d, 0x0726, - 0x0732, 0x0741, 0x075c, 0x076e, 0x0783, 0x079b, 0x07b0, 0x07c5, - 0x07ce, 0x07e9, 0x0810, 0x081f, 0x0843, 0x0858, 0x0867, 0x0882, - 0x08a3, 0x08c1, 0x08d9, 0x08e8, 0x08fd, 0x0909, 0x0915, 0x0939, - 0x094e, 0x0963, 0x0972, 0x0994, 0x09bf, 0x09e9, 0x09fe, 0x0a0d, - 0x0a25, 0x0a25, 0x0a3d, 0x0a49, 0x0a61, 0x0a76, 0x0a76, 0x0a88, - // Entry 80 - BF - 0x0a9a, 0x0abe, 0x0ad3, 0x0ae8, 0x0afa, 0x0b0f, 0x0b24, 0x0b4b, - 0x0b66, 0x0b78, 0x0b8a, 0x0ba8, 0x0bbd, 0x0bd8, 0x0bf3, 0x0c0e, - 0x0c1d, 0x0c29, 0x0c3e, 0x0c56, 0x0c62, 0x0c74, 0x0c98, 0x0caa, - 0x0cbf, 0x0cda, 0x0ce9, 0x0cfb, 0x0d13, 0x0d19, 0x0d3a, 0x0d4f, - 0x0d61, 0x0d76, 0x0d85, 0x0d9a, 0x0da6, 0x0dbb, 0x0dd6, 0x0df1, - 0x0e03, 0x0e18, 0x0e27, 0x0e39, 0x0e4e, 0x0e60, 0x0e75, 0x0e7e, - 0x0e90, 0x0e9f, 0x0eae, 0x0eb7, 0x0ec9, 0x0ee4, 0x0ee4, 0x0ef9, - 0x0f11, 0x0f11, 0x0f11, 0x0f26, 0x0f35, 0x0f35, 0x0f35, 0x0f44, - // Entry C0 - FF - 0x0f44, 0x0f6e, 0x0f6e, 0x0f86, 0x0f86, 0x0f9b, 0x0f9b, 0x0fb9, - 0x0fb9, 0x0fb9, 0x0fb9, 0x0fb9, 0x0fb9, 0x0fc8, 0x0fc8, 0x0fe0, - 0x0fe0, 0x0ff5, 0x0ff5, 0x1001, 0x1001, 0x100d, 0x100d, 0x100d, - 0x100d, 0x100d, 0x101c, 0x101c, 0x1028, 0x1028, 0x1028, 0x104c, - 0x1061, 0x1061, 0x1070, 0x1070, 0x1070, 0x108b, 0x108b, 0x108b, - 0x108b, 0x108b, 0x1097, 0x1097, 0x1097, 0x10af, 0x10af, 0x10c1, - 0x10c1, 0x10c1, 0x10c1, 0x10c1, 0x10c1, 0x10c1, 0x10df, 0x10f1, - 0x10f1, 0x10f1, 0x10fd, 0x110c, 0x110c, 0x111e, 0x111e, 0x1130, - // Entry 100 - 13F - 0x1142, 0x1166, 0x1166, 0x1166, 0x1166, 0x11a8, 0x11a8, 0x11ba, - 0x11cc, 0x11d8, 0x11d8, 0x11d8, 0x11ed, 0x11ed, 0x1202, 0x1202, - 0x1220, 0x1220, 0x122f, 0x122f, 0x1253, 0x1253, 0x1271, 0x1283, - 0x129b, 0x129b, 0x129b, 0x12b3, 0x12b3, 0x12b3, 0x12b3, 0x12ce, - 0x12ce, 0x12ce, 0x12e9, 0x12e9, 0x12fb, 0x12fb, 0x12fb, 0x12fb, - 0x12fb, 0x12fb, 0x12fb, 0x1319, 0x1325, 0x1334, 0x1334, 0x1334, - 0x1334, 0x1334, 0x133d, 0x1355, 0x1355, 0x1355, 0x1355, 0x1355, - 0x1355, 0x1376, 0x1376, 0x1376, 0x1376, 0x13a3, 0x13a3, 0x13a3, - // Entry 140 - 17F - 0x13b8, 0x13d0, 0x13d0, 0x13d0, 0x13dc, 0x13dc, 0x1400, 0x1400, - 0x140c, 0x1421, 0x1421, 0x1433, 0x1445, 0x1466, 0x147b, 0x1496, - 0x1496, 0x1496, 0x14a8, 0x14b7, 0x14c9, 0x14c9, 0x14c9, 0x14c9, - 0x14c9, 0x14de, 0x14ed, 0x14f3, 0x1502, 0x1502, 0x1514, 0x1514, - 0x1523, 0x153b, 0x155c, 0x155c, 0x1568, 0x1568, 0x1577, 0x1577, - 0x1595, 0x1595, 0x1595, 0x15a1, 0x15b9, 0x15d4, 0x15f5, 0x160a, - 0x160a, 0x1619, 0x1643, 0x1643, 0x1643, 0x1655, 0x1664, 0x1679, - 0x168b, 0x169a, 0x16a9, 0x16a9, 0x16bb, 0x16d0, 0x16d0, 0x16d0, - // Entry 180 - 1BF - 0x16e5, 0x16e5, 0x16e5, 0x16e5, 0x16f7, 0x16f7, 0x16f7, 0x16f7, - 0x170c, 0x172a, 0x172a, 0x1742, 0x1742, 0x1751, 0x175d, 0x176f, - 0x177e, 0x177e, 0x177e, 0x1796, 0x1796, 0x17b4, 0x17c9, 0x17de, - 0x17de, 0x17ed, 0x17ed, 0x17fc, 0x17fc, 0x180b, 0x1817, 0x1832, - 0x1832, 0x1859, 0x1865, 0x1877, 0x1895, 0x1895, 0x18b0, 0x18c2, - 0x18d1, 0x18d1, 0x18e3, 0x18f8, 0x1907, 0x1922, 0x1922, 0x1922, - 0x1922, 0x1940, 0x196a, 0x196a, 0x1988, 0x1997, 0x19c4, 0x19d9, - 0x19e8, 0x19f7, 0x19f7, 0x1a0f, 0x1a24, 0x1a36, 0x1a36, 0x1a36, - // Entry 1C0 - 1FF - 0x1a3f, 0x1a5d, 0x1a6c, 0x1a6c, 0x1a6c, 0x1a81, 0x1a81, 0x1a81, - 0x1a81, 0x1a81, 0x1aa8, 0x1aa8, 0x1ac6, 0x1ae7, 0x1aff, 0x1aff, - 0x1b4a, 0x1b4a, 0x1b4a, 0x1b4a, 0x1b4a, 0x1b4a, 0x1b4a, 0x1b4a, - 0x1b4a, 0x1b62, 0x1b62, 0x1b71, 0x1b71, 0x1b71, 0x1b89, 0x1bb3, - 0x1bb3, 0x1bb3, 0x1bc2, 0x1bc2, 0x1bc2, 0x1bc2, 0x1bc2, 0x1be0, - 0x1bef, 0x1c04, 0x1c10, 0x1c10, 0x1c25, 0x1c25, 0x1c3d, 0x1c3d, - 0x1c4f, 0x1c64, 0x1c7f, 0x1c8e, 0x1c8e, 0x1cb8, 0x1cb8, 0x1cc7, - 0x1cc7, 0x1cc7, 0x1cf7, 0x1cf7, 0x1cf7, 0x1d12, 0x1d1b, 0x1d1b, - // Entry 200 - 23F - 0x1d1b, 0x1d1b, 0x1d1b, 0x1d3f, 0x1d57, 0x1d7b, 0x1d96, 0x1dab, - 0x1dab, 0x1dd5, 0x1dd5, 0x1de1, 0x1de1, 0x1df9, 0x1df9, 0x1df9, - 0x1e0e, 0x1e0e, 0x1e1d, 0x1e1d, 0x1e1d, 0x1e2c, 0x1e38, 0x1e38, - 0x1e47, 0x1e5f, 0x1e5f, 0x1e5f, 0x1e5f, 0x1e7d, 0x1e7d, 0x1e7d, - 0x1e7d, 0x1e7d, 0x1e98, 0x1e98, 0x1ead, 0x1ead, 0x1ead, 0x1ead, - 0x1ec5, 0x1eda, 0x1ef5, 0x1f07, 0x1f46, 0x1f5b, 0x1f5b, 0x1f79, - 0x1fa0, 0x1fa6, 0x1fa6, 0x1fa6, 0x1fa6, 0x1fa6, 0x1fa6, 0x1fa6, - 0x1fb5, 0x1fc4, 0x1fdc, 0x1fee, 0x1fee, 0x200c, 0x200c, 0x201e, - // Entry 240 - 27F - 0x201e, 0x2030, 0x2030, 0x2030, 0x2045, 0x2054, 0x2054, 0x2069, - 0x2069, 0x2069, 0x2069, 0x2069, 0x20ae, 0x20c0, 0x20f9, 0x2111, - 0x2141, 0x2141, 0x2141, 0x2141, 0x2141, 0x2141, 0x2141, 0x2141, - 0x2141, 0x2171, 0x2171, 0x2171, 0x2171, 0x2171, 0x21a1, 0x21b6, - 0x21b6, 0x21ef, 0x2207, 0x2228, 0x2258, 0x2282, 0x22a9, -} // Size: 1254 bytes - -const knLangStr string = "" + // Size: 12372 bytes - "ಅಫಾರ್ಅಬ್ಖಾಜಿಯನ್ಅವೆಸ್ಟನ್ಆಫ್ರಿಕಾನ್ಸ್ಅಕಾನ್ಅಂಹರಿಕ್ಅರಗೊನೀಸ್ಅರೇಬಿಕ್ಅಸ್ಸಾಮೀಸ್ಅವ" + - "ರಿಕ್ಅಯ್ಮಾರಾಅಜೆರ್ಬೈಜಾನಿಬಶ್ಕಿರ್ಬೆಲರೂಸಿಯನ್ಬಲ್ಗೇರಿಯನ್ಬಿಸ್ಲಾಮಾಬಂಬಾರಾಬಾಂಗ್ಲಾ" + - "ಟಿಬೇಟಿಯನ್ಬ್ರೆಟನ್ಬೋಸ್ನಿಯನ್ಕೆಟಲಾನ್ಚೆಚನ್ಕಮೊರೊಕೋರ್ಸಿಕನ್ಕ್ರೀಜೆಕ್ಚರ್ಚ್ ಸ್ಲಾವ" + - "ಿಕ್ಚುವಾಶ್ವೆಲ್ಶ್ಡ್ಯಾನಿಶ್ಜರ್ಮನ್ದಿವೆಹಿಜೋಂಗ್\u200cಖಾಈವ್ಗ್ರೀಕ್ಇಂಗ್ಲಿಷ್ಎಸ್ಪೆ" + - "ರಾಂಟೊಸ್ಪ್ಯಾನಿಷ್ಎಸ್ಟೊನಿಯನ್ಬಾಸ್ಕ್ಪರ್ಶಿಯನ್ಫುಲಾಫಿನ್ನಿಶ್ಫಿಜಿಯನ್ಫರೋಸಿಫ್ರೆಂಚ್" + - "ಪಶ್ಚಿಮ ಫ್ರಿಸಿಯನ್ಐರಿಷ್ಸ್ಕಾಟಿಶ್ ಗೆಲಿಕ್ಗ್ಯಾಲಿಶಿಯನ್ಗೌರಾನಿಗುಜರಾತಿಮ್ಯಾಂಕ್ಸ್ಹ" + - "ೌಸಾಹೀಬ್ರೂಹಿಂದಿಹಿರಿ ಮೊಟುಕ್ರೊಯೇಶಿಯನ್ಹೈಟಿಯನ್ ಕ್ರಿಯೋಲಿಹಂಗೇರಿಯನ್ಅರ್ಮೇನಿಯನ್ಹ" + - "ೆರೆರೊಇಂಟರ್\u200cಲಿಂಗ್ವಾಇಂಡೋನೇಶಿಯನ್ಇಂಟರ್ಲಿಂಗ್ಇಗ್ಬೊಸಿಚುಅನ್ ಯಿಇನುಪಿಯಾಕ್ಇಡ" + - "ೊಐಸ್\u200cಲ್ಯಾಂಡಿಕ್ಇಟಾಲಿಯನ್ಇನುಕ್ಟಿಟುಟ್ಜಾಪನೀಸ್ಜಾವಾನೀಸ್ಜಾರ್ಜಿಯನ್ಕಾಂಗೋಕಿಕ" + - "ುಯುಕ್ವಾನ್\u200cಯಾಮಾಕಝಕ್ಕಲಾಲ್ಲಿಸುಟ್ಖಮೇರ್ಕನ್ನಡಕೊರಿಯನ್ಕನುರಿಕಾಶ್ಮೀರಿಕುರ್ದಿ" + - "ಷ್ಕೋಮಿಕಾರ್ನಿಷ್ಕಿರ್ಗಿಜ್ಲ್ಯಾಟಿನ್ಲಕ್ಸಂಬರ್ಗಿಷ್ಗಾಂಡಾಲಿಂಬರ್ಗಿಶ್ಲಿಂಗಾಲಲಾವೋಲಿಥ" + - "ುವೇನಿಯನ್ಲೂಬಾ-ಕಟಾಂಗಾಲಾಟ್ವಿಯನ್ಮಲಗಾಸಿಮಾರ್ಶಲ್ಲೀಸ್ಮಾವೋರಿಮೆಸಿಡೋನಿಯನ್ಮಲಯಾಳಂಮಂ" + - "ಗೋಲಿಯನ್ಮರಾಠಿಮಲಯ್ಮಾಲ್ಟೀಸ್ಬರ್ಮೀಸ್ನೌರುಉತ್ತರ ದೆಬೆಲೆನೇಪಾಳಿಡೋಂಗಾಡಚ್ನಾರ್ವೇಜಿಯ" + - "ನ್ ನೈನಾರ್ಸ್ಕ್ನಾರ್ವೆಜಿಯನ್ ಬೊಕ್ಮಲ್ದಕ್ಷಿಣ ದೆಬೆಲೆನವಾಜೊನ್ಯಾಂಜಾಒಸಿಟನ್ಒಜಿಬ್ವಾ" + - "ಒರೊಮೊಒಡಿಯಒಸ್ಸೆಟಿಕ್ಪಂಜಾಬಿಪಾಲಿಪೊಲಿಶ್ಪಾಷ್ಟೋಪೋರ್ಚುಗೀಸ್ಕ್ವೆಚುವಾರೊಮಾನ್ಶ್ರುಂಡ" + - "ಿರೊಮೇನಿಯನ್ರಷ್ಯನ್ಕಿನ್ಯಾರ್\u200cವಾಂಡಾಸಂಸ್ಕೃತಸರ್ಡೀನಿಯನ್ಸಿಂಧಿಉತ್ತರ ಸಾಮಿಸಾಂ" + - "ಗೋಸಿಂಹಳಸ್ಲೋವಾಕ್ಸ್ಲೋವೇನಿಯನ್ಸಮೋವನ್ಶೋನಾಸೊಮಾಲಿಅಲ್ಬೇನಿಯನ್ಸೆರ್ಬಿಯನ್ಸ್ವಾತಿದಕ್" + - "ಷಿಣ ಸೋಥೋಸುಂಡಾನೀಸ್ಸ್ವೀಡಿಷ್ಸ್ವಹಿಲಿತಮಿಳುತೆಲುಗುತಾಜಿಕ್ಥಾಯ್ಟಿಗ್ರಿನ್ಯಾಟರ್ಕ್" + - "\u200cಮೆನ್ಸ್ವಾನಾಟೋಂಗನ್ಟರ್ಕಿಶ್ಸೋಂಗಾಟಾಟರ್ಟಹೀಟಿಯನ್ಉಯಿಘರ್ಉಕ್ರೇನಿಯನ್ಉರ್ದುಉಜ್ಬ" + - "ೇಕ್ವೆಂಡಾವಿಯೆಟ್ನಾಮೀಸ್ವೋಲಾಪುಕ್ವಾಲೂನ್ವೋಲೋಫ್ಕ್ಸೋಸಯಿಡ್ಡಿಶ್ಯೊರುಬಾಝೂವಾಂಗ್ಚೈನೀ" + - "ಸ್ಜುಲುಅಛಿನೀಸ್ಅಕೋಲಿಅಡಂಗ್ಮೆಅಡೈಘೆಆಫ್ರಿಹಿಲಿಅಘೆಮ್ಐನುಅಕ್ಕಾಡಿಯನ್ಅಲೆಯುಟ್ದಕ್ಷಿಣ" + - " ಅಲ್ಟಾಯ್ಪ್ರಾಚೀನ ಇಂಗ್ಲೀಷ್ಆಂಗಿಕಾಅರಾಮಿಕ್ಮಪುಚೆಅರಪಾಹೋಅರಾವಾಕ್ಅಸುಆಸ್ಟುರಿಯನ್ಅವಧಿ" + - "ಬಲೂಚಿಬಲಿನೀಸ್ಬಸಾಬೇಜಾಬೆಂಬಾಬೆನಪಶ್ಚಿಮ ಬಲೊಚಿಭೋಜಪುರಿಬಿಕೊಲ್ಬಿನಿಸಿಕ್ಸಿಕಾಬ್ರಜ್ಬ" + - "ೋಡೊಬುರಿಯಟ್ಬುಗಿನೀಸ್ಬ್ಲಿನ್ಕ್ಯಾಡ್ಡೋಕಾರಿಬ್ಅಟ್ಸಮ್ಸೆಬುವಾನೊಚಿಗಾಚಿಬ್ಚಾಚಗಟಾಯ್ಚೂ" + - "ಕಿಸೆಮಾರಿಚಿನೂಕ್ ಜಾರ್ಗೋನ್ಚೋಕ್ಟಾವ್ಚಿಪೆವ್ಯಾನ್ಚೆರೋಕಿಚೀಯೆನ್ನೇಮಧ್ಯ ಕುರ್ದಿಶ್ಕೊ" + - "ಪ್ಟಿಕ್ಕ್ರಿಮೀಯನ್ ಟರ್ಕಿಷ್ಸೆಸೆಲ್ವಾ ಕ್ರಯೋಲ್ ಫ್ರೆಂಚ್ಕಶುಬಿಯನ್ಡಕೋಟಾದರ್ಗ್ವಾಟೈಟ" + - "ಡೆಲಾವೇರ್ಸ್ಲೇವ್ಡೋಗ್ರಿಬ್ಡಿಂಕಾಜರ್ಮಾಡೋಗ್ರಿಲೋವರ್ ಸೋರ್ಬಿಯನ್ಡುವಾಲಾಮಧ್ಯ ಡಚ್ಜೊಲ" + - "-ಫೊನ್ಯಿಡ್ಯೂಲಾಡಜಾಗಎಂಬುಎಫಿಕ್ಪ್ರಾಚೀನ ಈಜಿಪ್ಟಿಯನ್ಎಕಾಜುಕ್ಎಲಾಮೈಟ್ಮಧ್ಯ ಇಂಗ್ಲೀಷ್ಇ" + - "ವಾಂಡೋಫಾಂಗ್ಫಿಲಿಪಿನೊಫೋನ್ಕಾಜುನ್ ಫ್ರೆಂಚ್ಮಧ್ಯ ಫ್ರೆಂಚ್ಪ್ರಾಚೀನ ಫ್ರೆಂಚ್ಉತ್ತರ ಫ" + - "್ರಿಸಿಯನ್ಪೂರ್ವ ಫ್ರಿಸಿಯನ್ಫ್ರಿಯುಲಿಯನ್ಗಗಗೌಜ್ಗಾನ್ ಚೀನೀಸ್ಗಾಯೋಗ್ಬಾಯಾಗೀಝ್ಗಿಲ್ಬ" + - "ರ್ಟೀಸ್ಮಧ್ಯ ಹೈ ಜರ್ಮನ್ಪ್ರಾಚೀನ ಹೈ ಜರ್ಮನ್ಗೊಂಡಿಗೊರೊಂಟಾಲೋಗೋಥಿಕ್ಗ್ರೇಬೋಪ್ರಾಚೀನ" + - " ಗ್ರೀಕ್ಸ್ವಿಸ್ ಜರ್ಮನ್ಗುಸಿಗ್ವಿಚ್\u200cಇನ್ಹೈಡಾಹಕ್ಹವಾಯಿಯನ್ಹಿಲಿಗೇನನ್ಹಿಟ್ಟಿಟೆಮ" + - "ೋಂಗ್ಅಪ್ಪರ್ ಸರ್ಬಿಯನ್ಶಯಾಂಗ್ ಚೀನೀಸೇಹೂಪಾಇಬಾನ್ಇಬಿಬಿಯೋಇಲ್ಲಿಕೋಇಂಗುಷ್ಲೊಜ್ಬಾನ್ನ" + - "ೊಂಬಾಮ್ಯಕಮೆಜೂಡಿಯೋ-ಪರ್ಶಿಯನ್ಜೂಡಿಯೋ-ಅರೇಬಿಕ್ಕಾರಾ-ಕಲ್ಪಾಕ್ಕಬೈಲ್ಕಚಿನ್ಜ್ಜುಕಂಬಾಕ" + - "ಾವಿಕಬರ್ಡಿಯನ್ಟ್ಯಾಪ್ಮ್ಯಾಕೊಂಡ್ಕಬುವೆರ್ಡಿಯನುಕೋರೋಖಾಸಿಖೋಟಾನೀಸ್ಕೊಯ್ರ ಚೀನಿಕಾಕೊಕ" + - "ಲೆಂಜಿನ್ಕಿಂಬುಂಡುಕೋಮಿ-ಪರ್ಮ್ಯಕ್ಕೊಂಕಣಿಕೊಸರಿಯನ್ಕಪೆಲ್ಲೆಕರಚಯ್-ಬಲ್ಕಾರ್ಕರೇಲಿಯನ್" + - "ಕುರುಖ್ಶಂಬಲಬಫಿಯಕಲೊಗ್ನಿಯನ್ಕುಮೈಕ್ಕುಟೇನಾಯ್ಲ್ಯಾಡಿನೋಲಾಂಗಿಲಹಂಡಾಲಂಬಾಲೆಜ್ಘಿಯನ್ಲ" + - "ಕೊಟಮೊಂಗೋಲೂಯಿಸಿಯಾನ ಕ್ರಿಯೋಲ್ಲೋಝಿಉತ್ತರ ಲೂರಿಲುಬ-ಲುಲಾಲೂಯಿಸೆನೋಲುಂಡಾಲುವೋಮಿಝೋಲ" + - "ುಯಿಯಮದುರೀಸ್ಮಗಾಹಿಮೈಥಿಲಿಮಕಾಸರ್ಮಂಡಿಂಗೊಮಸಾಯ್ಮೋಕ್ಷಮಂದಾರ್ಮೆಂಡೆಮೆರುಮೊರಿಸನ್ಮಧ್" + - "ಯ ಐರಿಷ್ಮ್ಯಖುವಾ- ಮೀಟ್ಟೊಮೆಟಾಮಿಕ್\u200cಮ್ಯಾಕ್ಮಿನಂಗ್\u200cಕಬಾವುಮಂಚುಮಣಿಪುರಿ" + - "ಮೊಹಾವ್ಕ್ಮೊಸ್ಸಿಮುಂಡಂಗ್ಬಹುಸಂಖ್ಯೆಯ ಭಾಷೆಗಳುಕ್ರೀಕ್ಮಿರಾಂಡೀಸ್ಮಾರ್ವಾಡಿಎರ್ಝ್ಯಾಮ" + - "ಜಂದೆರಾನಿನಾನ್ನಿಯಾಪೊಲಿಟನ್ನಮಲೋ ಜರ್ಮನ್ನೇವಾರೀನಿಯಾಸ್ನಿಯುವನ್ಖ್ವಾಸಿಯೊನಿಂಬೂನ್ನೊ" + - "ಗಾಯ್ಪ್ರಾಚೀನ ನೋರ್ಸ್ಎನ್\u200cಕೋಉತ್ತರ ಸೋಥೋನೂಯರ್ಶಾಸ್ತ್ರೀಯ ನೇವಾರಿನ್ಯಾಮ್" + - "\u200cವೆಂಜಿನ್ಯಾನ್\u200cಕೋಲೆನ್ಯೋರೋಜೀಮಾಓಸಾಜ್ಒಟ್ಟೋಮನ್ ತುರ್ಕಿಷ್ಪಂಗಾಸಿನನ್ಪಹ್ಲ" + - "ವಿಪಂಪಾಂಗಾಪಪಿಯಾಮೆಂಟೊಪಲುಆನ್ನೈಜೀರಿಯನ್ ಪಿಡ್ಗಿನ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಫೀನಿಷಿಯನ್ಪೋ" + - "ನ್\u200c\u200cಪಿಯನ್ಪ್ರಶಿಯನ್ಪ್ರಾಚೀನ ಪ್ರೊವೆನ್ಶಿಯಲ್ಕಿಷೆರಾಜಸ್ಥಾನಿರಾಪಾನುಯಿರ" + - "ಾರೋಟೊಂಗನ್ರೊಂಬೊರೋಮಾನಿಅರೋಮಾನಿಯನ್ರುವಸಂಡಾವೇಸಖಾಸಮರಿಟನ್ ಅರಾಮಿಕ್ಸಂಬುರುಸಸಾಕ್ಸಂ" + - "ತಾಲಿನಂಬೇಸಂಗುಸಿಸಿಲಿಯನ್ಸ್ಕೋಟ್ಸ್ದಕ್ಷಿಣ ಕುರ್ದಿಶ್ಸೆನಸೆಲ್ಕಪ್ಕೊಯ್ರಬೊರೊ ಸೆನ್ನಿ" + - "ಪ್ರಾಚೀನ ಐರಿಷ್ಟಷೆಲ್\u200dಹಿಟ್ಶಾನ್ಸಿಡಾಮೋದಕ್ಷಿಣ ಸಾಮಿಲೂಲ್ ಸಾಮಿಇನಾರಿ ಸಮೀಸ್ಕ" + - "ೋಟ್ ಸಾಮಿಸೋನಿಂಕೆಸೋಗ್ಡಿಯನ್ಸ್ರಾನನ್ ಟೋಂಗೋಸೇರೇರ್ಸಹೊಸುಕುಮಾಸುಸುಸುಮೇರಿಯನ್ಕೊಮೊರ" + - "ಿಯನ್ಶಾಸ್ತ್ರೀಯ ಸಿರಿಯಕ್ಸಿರಿಯಾಕ್ಟಿಮ್ನೆಟೆಸೊಟೆರೆನೋಟೇಟಮ್ಟೈಗ್ರೆಟಿವ್ಟೊಕೆಲಾವ್ಕ್" + - "ಲಿಂಗನ್ಟ್ಲಿಂಗಿಟ್ಟಮಾಷೆಕ್ನ್ಯಾಸಾ ಟೋಂಗಾಟೋಕ್ ಪಿಸಿನ್ಟರೊಕೊಸಿಂಶಿಯನ್ತುಂಬುಕಾಟುವಾಲ" + - "ುಟಸವಕ್ಟುವಿನಿಯನ್ಮಧ್ಯ ಅಟ್ಲಾಸ್ ಟಮಜೈಟ್ಉಡ್\u200cಮುರ್ಟ್ಉಗಾರಿಟಿಕ್ಉಂಬುಂಡುಅಪರಿಚ" + - "ಿತ ಭಾಷೆವಾಯಿವೋಟಿಕ್ವುಂಜೊವಾಲ್ಸರ್ವಲಾಯ್ತಾವರಾಯ್ವಾಷೋವಾರ್ಲ್\u200cಪಿರಿವುಕಲ್ಮೈಕ್" + - "ಸೊಗಯಾವೊಯಪೀಸೆಯಾಂಗ್ಬೆನ್ಯೆಂಬಾಕ್ಯಾಂಟನೀಸ್ಝೋಪೊಟೆಕ್ಬ್ಲಿಸ್ಸಿಂಬಲ್ಸ್ಝೆನಾಗಾಸ್ಟ್ಯಾ" + - "ಂಡರ್ಡ್ ಮೊರೊಕ್ಕನ್ ಟಮಜೈಟ್ಝೂನಿಯಾವುದೇ ಭಾಷಾಸಂಬಂಧಿ ವಿಷಯವಿಲ್ಲಜಾಝಾಆಧುನಿಕ ಪ್ರಮಾ" + - "ಣಿತ ಅರೇಬಿಕ್ಆಸ್ಟ್ರಿಯನ್ ಜರ್ಮನ್ಸ್ವಿಸ್ ಹೈ ಜರ್ಮನ್ಆಸ್ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲಿಷ್ಕೆನೆಡ" + - "ಿಯನ್ ಇಂಗ್ಲಿಷ್ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲಿಷ್ಅಮೆರಿಕನ್ ಇಂಗ್ಲಿಷ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕನ್ ಸ್ಪ್ಯ" + - "ಾನಿಷ್ಯುರೋಪಿಯನ್ ಸ್ಪ್ಯಾನಿಷ್ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್ಸ್ವಿಸ್ ಫ" + - "್ರೆಂಚ್ಲೋ ಸ್ಯಾಕ್ಸನ್ಫ್ಲೆಮಿಷ್ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್ಮಾ" + - "ಲ್ಡೇವಿಯನ್ಸರ್ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ಕಾಂಗೊ ಸ್ವಹಿಲಿಸರಳೀಕೃತ ಚೈನೀಸ್ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ" + - "್" - -var knLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x002d, 0x0045, 0x0066, 0x0075, 0x008a, 0x00a2, - 0x00b7, 0x00d2, 0x00e4, 0x00f9, 0x011a, 0x012f, 0x014d, 0x016b, - 0x0183, 0x0195, 0x01aa, 0x01c5, 0x01da, 0x01f5, 0x020a, 0x0219, - 0x0228, 0x0243, 0x024f, 0x025b, 0x0283, 0x0295, 0x02a7, 0x02bf, - 0x02d1, 0x02e3, 0x02fb, 0x0304, 0x0316, 0x032e, 0x034c, 0x036a, - 0x0388, 0x039a, 0x03b2, 0x03be, 0x03d6, 0x03eb, 0x03fa, 0x040f, - 0x043d, 0x044c, 0x0477, 0x0498, 0x04aa, 0x04bf, 0x04da, 0x04e6, - 0x04f8, 0x0507, 0x0520, 0x0541, 0x056f, 0x058a, 0x05a8, 0x05ba, - // Entry 40 - 7F - 0x05e1, 0x0602, 0x0620, 0x062f, 0x064b, 0x0666, 0x066f, 0x0696, - 0x06ae, 0x06cf, 0x06e4, 0x06fc, 0x0717, 0x0726, 0x0738, 0x0759, - 0x0765, 0x0786, 0x0795, 0x07a4, 0x07b9, 0x07c8, 0x07e0, 0x07f8, - 0x0804, 0x081c, 0x0834, 0x084c, 0x0870, 0x087f, 0x089d, 0x08af, - 0x08bb, 0x08dc, 0x08fb, 0x0916, 0x0928, 0x0949, 0x095b, 0x097c, - 0x098e, 0x09a9, 0x09b8, 0x09c4, 0x09dc, 0x09f1, 0x09fd, 0x0a1f, - 0x0a31, 0x0a40, 0x0a49, 0x0a89, 0x0ac0, 0x0ae5, 0x0af4, 0x0b09, - 0x0b1b, 0x0b30, 0x0b3f, 0x0b4b, 0x0b66, 0x0b78, 0x0b84, 0x0b96, - // Entry 80 - BF - 0x0ba8, 0x0bc6, 0x0bde, 0x0bf6, 0x0c05, 0x0c20, 0x0c32, 0x0c5c, - 0x0c71, 0x0c8f, 0x0c9e, 0x0cba, 0x0cc9, 0x0cd8, 0x0cf0, 0x0d11, - 0x0d23, 0x0d2f, 0x0d41, 0x0d5f, 0x0d7a, 0x0d8c, 0x0dab, 0x0dc6, - 0x0dde, 0x0df3, 0x0e02, 0x0e14, 0x0e26, 0x0e32, 0x0e50, 0x0e6e, - 0x0e80, 0x0e92, 0x0ea7, 0x0eb6, 0x0ec5, 0x0edd, 0x0eef, 0x0f0d, - 0x0f1c, 0x0f31, 0x0f40, 0x0f64, 0x0f7c, 0x0f8e, 0x0fa0, 0x0faf, - 0x0fc7, 0x0fd9, 0x0fee, 0x1000, 0x100c, 0x1021, 0x1030, 0x1045, - 0x1054, 0x1054, 0x106f, 0x107e, 0x1087, 0x10a5, 0x10a5, 0x10ba, - // Entry C0 - FF - 0x10ba, 0x10e2, 0x1110, 0x1122, 0x1137, 0x1146, 0x1146, 0x1158, - 0x1158, 0x1158, 0x116d, 0x116d, 0x116d, 0x1176, 0x1176, 0x1194, - 0x1194, 0x11a0, 0x11af, 0x11c4, 0x11c4, 0x11cd, 0x11cd, 0x11cd, - 0x11cd, 0x11d9, 0x11e8, 0x11e8, 0x11f1, 0x11f1, 0x11f1, 0x1213, - 0x1228, 0x123a, 0x1246, 0x1246, 0x1246, 0x125e, 0x125e, 0x125e, - 0x126d, 0x126d, 0x1279, 0x1279, 0x128e, 0x12a6, 0x12a6, 0x12b8, - 0x12b8, 0x12d0, 0x12e2, 0x12e2, 0x12f4, 0x12f4, 0x130c, 0x1318, - 0x132a, 0x133c, 0x134e, 0x135a, 0x1385, 0x139d, 0x13bb, 0x13cd, - // Entry 100 - 13F - 0x13e5, 0x140a, 0x1422, 0x1422, 0x1453, 0x1497, 0x14af, 0x14be, - 0x14d3, 0x14dc, 0x14f4, 0x1506, 0x151e, 0x152d, 0x153c, 0x154e, - 0x1579, 0x1579, 0x158b, 0x15a1, 0x15bd, 0x15cf, 0x15db, 0x15e7, - 0x15f6, 0x15f6, 0x162a, 0x163f, 0x1654, 0x1679, 0x1679, 0x168b, - 0x168b, 0x169a, 0x16b2, 0x16b2, 0x16be, 0x16e6, 0x1708, 0x1733, - 0x1733, 0x175e, 0x1789, 0x17aa, 0x17ad, 0x17bc, 0x17db, 0x17e7, - 0x17f9, 0x17f9, 0x1805, 0x1826, 0x1826, 0x184c, 0x187b, 0x187b, - 0x188a, 0x18a5, 0x18b7, 0x18c9, 0x18f1, 0x1916, 0x1916, 0x1916, - // Entry 140 - 17F - 0x1922, 0x1940, 0x194c, 0x1955, 0x196d, 0x196d, 0x1988, 0x19a0, - 0x19af, 0x19da, 0x19ff, 0x1a0b, 0x1a1a, 0x1a2f, 0x1a44, 0x1a56, - 0x1a56, 0x1a56, 0x1a6e, 0x1a7d, 0x1a8f, 0x1aba, 0x1ae2, 0x1ae2, - 0x1b04, 0x1b13, 0x1b22, 0x1b2e, 0x1b3a, 0x1b46, 0x1b61, 0x1b61, - 0x1b73, 0x1b8e, 0x1bb2, 0x1bb2, 0x1bbe, 0x1bbe, 0x1bca, 0x1be2, - 0x1bfe, 0x1bfe, 0x1bfe, 0x1c0a, 0x1c22, 0x1c3a, 0x1c5f, 0x1c71, - 0x1c89, 0x1c9e, 0x1cc3, 0x1cc3, 0x1cc3, 0x1cdb, 0x1ced, 0x1cf9, - 0x1d05, 0x1d23, 0x1d35, 0x1d4d, 0x1d65, 0x1d74, 0x1d83, 0x1d8f, - // Entry 180 - 1BF - 0x1daa, 0x1daa, 0x1daa, 0x1daa, 0x1db6, 0x1db6, 0x1dc5, 0x1df9, - 0x1e05, 0x1e21, 0x1e21, 0x1e37, 0x1e4f, 0x1e5e, 0x1e6a, 0x1e76, - 0x1e85, 0x1e85, 0x1e85, 0x1e9a, 0x1e9a, 0x1ea9, 0x1ebb, 0x1ecd, - 0x1ee2, 0x1ef1, 0x1ef1, 0x1f00, 0x1f12, 0x1f21, 0x1f2d, 0x1f42, - 0x1f5e, 0x1f87, 0x1f93, 0x1fb4, 0x1fd8, 0x1fe4, 0x1ff9, 0x2011, - 0x2023, 0x2023, 0x2038, 0x206c, 0x207e, 0x2099, 0x20b1, 0x20b1, - 0x20b1, 0x20c6, 0x20e1, 0x20ed, 0x210e, 0x2114, 0x212d, 0x213f, - 0x2151, 0x2166, 0x2166, 0x217e, 0x2193, 0x21a5, 0x21cd, 0x21cd, - // Entry 1C0 - 1FF - 0x21df, 0x21fb, 0x220a, 0x2238, 0x225c, 0x227d, 0x228f, 0x229b, - 0x22aa, 0x22db, 0x22f6, 0x2308, 0x231d, 0x233b, 0x234d, 0x234d, - 0x2381, 0x2381, 0x2381, 0x23af, 0x23af, 0x23ca, 0x23ca, 0x23ca, - 0x23eb, 0x2403, 0x2440, 0x244c, 0x244c, 0x2467, 0x247f, 0x249d, - 0x249d, 0x249d, 0x24ac, 0x24be, 0x24be, 0x24be, 0x24be, 0x24dc, - 0x24e5, 0x24f7, 0x2500, 0x252b, 0x253d, 0x254c, 0x255e, 0x255e, - 0x256a, 0x2576, 0x2591, 0x25a9, 0x25a9, 0x25d4, 0x25d4, 0x25dd, - 0x25dd, 0x25f2, 0x2620, 0x2645, 0x2645, 0x2663, 0x266f, 0x266f, - // Entry 200 - 23F - 0x2681, 0x2681, 0x2681, 0x26a0, 0x26b9, 0x26d2, 0x26f1, 0x2706, - 0x2721, 0x2746, 0x2758, 0x2761, 0x2761, 0x2773, 0x277f, 0x279a, - 0x27b5, 0x27e6, 0x27fe, 0x27fe, 0x27fe, 0x2810, 0x281c, 0x282e, - 0x283d, 0x284f, 0x285b, 0x2873, 0x2873, 0x288b, 0x28a6, 0x28a6, - 0x28bb, 0x28dd, 0x28fc, 0x28fc, 0x290b, 0x290b, 0x2923, 0x2923, - 0x2938, 0x294a, 0x2959, 0x2974, 0x29a9, 0x29c7, 0x29e2, 0x29f7, - 0x2a19, 0x2a25, 0x2a25, 0x2a25, 0x2a25, 0x2a25, 0x2a37, 0x2a37, - 0x2a46, 0x2a5b, 0x2a70, 0x2a7f, 0x2a8b, 0x2aac, 0x2ab2, 0x2ac7, - // Entry 240 - 27F - 0x2ac7, 0x2ad0, 0x2adc, 0x2aeb, 0x2b06, 0x2b15, 0x2b15, 0x2b33, - 0x2b4b, 0x2b75, 0x2b75, 0x2b87, 0x2bda, 0x2be6, 0x2c33, 0x2c3f, - 0x2c80, 0x2c80, 0x2cb1, 0x2cdd, 0x2d1a, 0x2d4e, 0x2d7f, 0x2db0, - 0x2e00, 0x2e3a, 0x2e74, 0x2e74, 0x2ea5, 0x2ecd, 0x2eef, 0x2f07, - 0x2f47, 0x2f81, 0x2fa2, 0x2fd3, 0x2ff8, 0x3020, 0x3054, -} // Size: 1254 bytes - -const koLangStr string = "" + // Size: 7095 bytes - "아파르어압카즈어아베스타어아프리칸스어아칸어암하라어아라곤어아랍어아삼어아바릭어아이마라어아제르바이잔어바슈키르어벨라루스어불가리아어비슬라마어" + - "밤바라어벵골어티베트어브르타뉴어보스니아어카탈로니아어체첸어차모로어코르시카어크리어체코어교회 슬라브어추바시어웨일스어덴마크어독일어디베히" + - "어종카어에웨어그리스어영어에스페란토어스페인어에스토니아어바스크어페르시아어풀라어핀란드어피지어페로어프랑스어서부 프리지아어아일랜드어스코" + - "틀랜드 게일어갈리시아어과라니어구자라트어맹크스어하우사어히브리어힌디어히리 모투어크로아티아어아이티어헝가리어아르메니아어헤레로어인터링구" + - "아인도네시아어인테르링구에이그보어쓰촨 이어이누피아크어이도어아이슬란드어이탈리아어이눅티투트어일본어자바어조지아어콩고어키쿠유어쿠안야마어" + - "카자흐어그린란드어크메르어칸나다어한국어칸누리어카슈미르어쿠르드어코미어콘월어키르기스어라틴어룩셈부르크어간다어림버거어링갈라어라오어리투아" + - "니아어루바-카탄가어라트비아어말라가시어마셜어마오리어마케도니아어말라얄람어몽골어마라티어말레이어몰타어버마어나우루어북부 은데벨레어네팔어" + - "느동가어네덜란드어노르웨이어(니노르스크)노르웨이어(보크말)남부 은데벨레어나바호어냔자어오크어오지브와어오로모어오리야어오세트어펀잡어팔" + - "리어폴란드어파슈토어포르투갈어케추아어로만시어룬디어루마니아어러시아어르완다어산스크리트어사르디니아어신디어북부 사미어산고어스리랑카어슬로" + - "바키아어슬로베니아어사모아어쇼나어소말리아어알바니아어세르비아어시스와티어남부 소토어순다어스웨덴어스와힐리어타밀어텔루구어타지크어태국어티" + - "그리냐어투르크멘어츠와나어통가어터키어총가어타타르어타히티어위구르어우크라이나어우르두어우즈베크어벤다어베트남어볼라퓌크어왈론어월로프어코사" + - "어이디시어요루바어주앙어중국어줄루어아체어아콜리어아당메어아디게어튀니지 아랍어아프리힐리어아그햄어아이누어아카드어알류트어남부 알타이어고" + - "대 영어앙가어아람어마푸둔군어아라파호어알제리 아랍어아라와크어모로코 아랍어이집트 아랍어아수어아스투리아어아와히어발루치어발리어바사어바" + - "문어고말라어베자어벰바어베나어바푸트어서부 발로치어호즈푸리어비콜어비니어콤어식시카어브라지어브라후이어보도어아쿠즈어부리아타부기어불루어브" + - "린어메둠바어카도어카리브어카유가어앗삼어세부아노어치가어치브차어차가타이어추크어마리어치누크 자곤촉토어치페우얀체로키어샤이엔어소라니 쿠르" + - "드어콥트어크리민 터키어; 크리민 타타르어세이셸 크리올 프랑스어카슈비아어다코타어다르그와어타이타어델라웨어어슬라브어도그리브어딩카어자" + - "르마어도그리어저지 소르비아어두알라어중세 네덜란드어졸라 포니어드율라어다장가어엠부어이픽어고대 이집트어이카죽어엘람어중세 영어이원도어" + - "팡그어필리핀어폰어케이준 프랑스어중세 프랑스어고대 프랑스어북부 프리지아어동부 프리슬란드어프리울리어가어가가우스어간어가요어그바야어조" + - "로아스터 다리어게이즈어키리바시어길라키어중세 고지 독일어고대 고지 독일어고아 콘칸어곤디어고론탈로어고트어게르보어고대 그리스어독일어" + - "(스위스)구시어그위친어하이다어하카어하와이어피지 힌디어헤리가뇬어하타이트어히몸어고지 소르비아어샹어후파어이반어이비비오어이로코어인귀시어로" + - "반어응곰바어마차메어유대-페르시아어유대-아라비아어카라칼파크어커바일어카친어까꼬토끄어캄바어카위어카바르디어카넴부어티얍어마콘데어크리올어" + - "코로어카시어호탄어코이라 친니어코와르어카코어칼렌진어킴분두어코미페르먀크어코카니어코스라이엔어크펠레어카라챠이-발카르어카렐리야어쿠르크어" + - "샴발라어바피아어콜로그니안어쿠믹어쿠테네어라디노어랑기어라한다어람바어레즈기안어링구아 프랑카 노바라코타어몽고어루이지애나 크리올어로지어" + - "북부 루리어루바-룰루아어루이세노어룬다어루오어루샤이어루야어마두라어마파어마가히어마이틸리어마카사어만딩고어마사이어마바어모크샤어만다르어" + - "멘데어메루어모리스얀어중세 아일랜드어마크후와-메토어메타어미크맥어미낭카바우어만주어마니푸리어모호크어모시어서부 마리어문당어다중 언어크" + - "리크어미란데어마르와리어미예네어엘즈야어마잔데라니어민난어나폴리어나마어저지 독일어네와르어니아스어니웨언어크와시오어느기엠본어노가이어고대" + - " 노르웨이어응코어북부 소토어누에르어고전 네와르어니암웨지어니안콜어뉴로어느지마어오세이지어오스만 터키어판가시난어팔레비어팜팡가어파피아먼토" + - "어팔라우어나이지리아 피진어고대 페르시아어페니키아어폰틱어폼페이어프러시아어고대 프로방스어키체어라자스탄어라파뉴이라로통가어롬보어집시어" + - "루신어아로마니아어르와어산다웨어야쿠트어사마리아 아랍어삼부루어사사크어산탈리어느감바이어상구어시칠리아어스코틀랜드어남부 쿠르드어세네카어" + - "세나어셀쿠프어코이야보로 세니어고대 아일랜드어타셸히트어샨어차디언 아라비아어시다모어남부 사미어룰레 사미어이나리 사미어스콜트 사미어" + - "소닌케어소그디엔어스라난 통가어세레르어사호어수쿠마어수수어수메르어코모로어고전 시리아어시리아어팀니어테조어테레노어테툼어티그레어티브어토" + - "켈라우제도어차후르어클링온어틀링깃족어탈리쉬어타마섹어니아사 통가어토크 피신어타로코어트심시안어툼부카어투발루어타사와크어투비니안어중앙 " + - "모로코 타마지트어우드말트어유가리틱어움분두어알 수 없는 언어바이어보틱어분조어월저어월라이타어와라이어와쇼어왈피리어우어칼미크어소가어야" + - "오족어얍페세어양본어옘바어광둥어사포테크어블리스 심볼제나가어표준 모로코 타마지트어주니어언어 관련 내용 없음자자어현대 표준 아랍어고" + - "지 독일어(스위스)영어(호주)저지 색슨어플라망어몰도바어세르비아-크로아티아어콩고 스와힐리어" - -var koLangIdx = []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0018, 0x0027, 0x0039, 0x0042, 0x004e, 0x005a, - 0x0063, 0x006c, 0x0078, 0x0087, 0x009c, 0x00ab, 0x00ba, 0x00c9, - 0x00d8, 0x00e4, 0x00ed, 0x00f9, 0x0108, 0x0117, 0x0129, 0x0132, - 0x013e, 0x014d, 0x0156, 0x015f, 0x0172, 0x017e, 0x018a, 0x0196, - 0x019f, 0x01ab, 0x01b4, 0x01bd, 0x01c9, 0x01cf, 0x01e1, 0x01ed, - 0x01ff, 0x020b, 0x021a, 0x0223, 0x022f, 0x0238, 0x0241, 0x024d, - 0x0263, 0x0272, 0x028b, 0x029a, 0x02a6, 0x02b5, 0x02c1, 0x02cd, - 0x02d9, 0x02e2, 0x02f2, 0x0304, 0x0310, 0x031c, 0x032e, 0x033a, - // Entry 40 - 7F - 0x0349, 0x035b, 0x036d, 0x0379, 0x0386, 0x0398, 0x03a1, 0x03b3, - 0x03c2, 0x03d4, 0x03dd, 0x03e6, 0x03f2, 0x03fb, 0x0407, 0x0416, - 0x0422, 0x0431, 0x043d, 0x0449, 0x0452, 0x045e, 0x046d, 0x0479, - 0x0482, 0x048b, 0x049a, 0x04a3, 0x04b5, 0x04be, 0x04ca, 0x04d6, - 0x04df, 0x04f1, 0x0504, 0x0513, 0x0522, 0x052b, 0x0537, 0x0549, - 0x0558, 0x0561, 0x056d, 0x0579, 0x0582, 0x058b, 0x0597, 0x05ad, - 0x05b6, 0x05c2, 0x05d1, 0x05f1, 0x060b, 0x0621, 0x062d, 0x0636, - 0x063f, 0x064e, 0x065a, 0x0666, 0x0672, 0x067b, 0x0684, 0x0690, - // Entry 80 - BF - 0x069c, 0x06ab, 0x06b7, 0x06c3, 0x06cc, 0x06db, 0x06e7, 0x06f3, - 0x0705, 0x0717, 0x0720, 0x0730, 0x0739, 0x0748, 0x075a, 0x076c, - 0x0778, 0x0781, 0x0790, 0x079f, 0x07ae, 0x07bd, 0x07cd, 0x07d6, - 0x07e2, 0x07f1, 0x07fa, 0x0806, 0x0812, 0x081b, 0x082a, 0x0839, - 0x0845, 0x084e, 0x0857, 0x0860, 0x086c, 0x0878, 0x0884, 0x0896, - 0x08a2, 0x08b1, 0x08ba, 0x08c6, 0x08d5, 0x08de, 0x08ea, 0x08f3, - 0x08ff, 0x090b, 0x0914, 0x091d, 0x0926, 0x092f, 0x093b, 0x0947, - 0x0953, 0x0966, 0x0978, 0x0984, 0x0990, 0x099c, 0x099c, 0x09a8, - // Entry C0 - FF - 0x09a8, 0x09bb, 0x09c8, 0x09d1, 0x09da, 0x09e9, 0x09e9, 0x09f8, - 0x0a0b, 0x0a0b, 0x0a1a, 0x0a2d, 0x0a40, 0x0a49, 0x0a49, 0x0a5b, - 0x0a5b, 0x0a67, 0x0a73, 0x0a7c, 0x0a7c, 0x0a85, 0x0a8e, 0x0a8e, - 0x0a9a, 0x0aa3, 0x0aac, 0x0aac, 0x0ab5, 0x0ac1, 0x0ac1, 0x0ad4, - 0x0ae3, 0x0aec, 0x0af5, 0x0af5, 0x0afb, 0x0b07, 0x0b07, 0x0b07, - 0x0b13, 0x0b22, 0x0b2b, 0x0b37, 0x0b43, 0x0b4c, 0x0b55, 0x0b5e, - 0x0b6a, 0x0b73, 0x0b7f, 0x0b8b, 0x0b94, 0x0b94, 0x0ba3, 0x0bac, - 0x0bb8, 0x0bc7, 0x0bd0, 0x0bd9, 0x0be9, 0x0bf2, 0x0bfe, 0x0c0a, - // Entry 100 - 13F - 0x0c16, 0x0c2c, 0x0c35, 0x0c35, 0x0c60, 0x0c80, 0x0c8f, 0x0c9b, - 0x0caa, 0x0cb6, 0x0cc5, 0x0cd1, 0x0ce0, 0x0ce9, 0x0cf5, 0x0d01, - 0x0d17, 0x0d17, 0x0d23, 0x0d39, 0x0d49, 0x0d55, 0x0d61, 0x0d6a, - 0x0d73, 0x0d73, 0x0d86, 0x0d92, 0x0d9b, 0x0da8, 0x0da8, 0x0db4, - 0x0db4, 0x0dbd, 0x0dc9, 0x0dc9, 0x0dcf, 0x0de5, 0x0df8, 0x0e0b, - 0x0e0b, 0x0e21, 0x0e3a, 0x0e49, 0x0e4f, 0x0e5e, 0x0e64, 0x0e6d, - 0x0e79, 0x0e92, 0x0e9e, 0x0ead, 0x0eb9, 0x0ed0, 0x0ee7, 0x0ef7, - 0x0f00, 0x0f0f, 0x0f18, 0x0f24, 0x0f37, 0x0f4b, 0x0f4b, 0x0f4b, - // Entry 140 - 17F - 0x0f54, 0x0f60, 0x0f6c, 0x0f75, 0x0f81, 0x0f91, 0x0fa0, 0x0faf, - 0x0fb8, 0x0fce, 0x0fd4, 0x0fdd, 0x0fe6, 0x0ff5, 0x1001, 0x100d, - 0x100d, 0x100d, 0x1016, 0x1022, 0x102e, 0x1044, 0x105a, 0x105a, - 0x106c, 0x1078, 0x1081, 0x1090, 0x1099, 0x10a2, 0x10b1, 0x10bd, - 0x10c6, 0x10d2, 0x10de, 0x10de, 0x10e7, 0x10e7, 0x10f0, 0x10f9, - 0x110c, 0x1118, 0x1118, 0x1121, 0x112d, 0x1139, 0x114e, 0x115a, - 0x116c, 0x1178, 0x1191, 0x1191, 0x1191, 0x11a0, 0x11ac, 0x11b8, - 0x11c4, 0x11d6, 0x11df, 0x11eb, 0x11f7, 0x1200, 0x120c, 0x1215, - // Entry 180 - 1BF - 0x1224, 0x123e, 0x123e, 0x123e, 0x124a, 0x124a, 0x1253, 0x126f, - 0x1278, 0x1288, 0x1288, 0x129b, 0x12aa, 0x12b3, 0x12bc, 0x12c8, - 0x12d1, 0x12d1, 0x12d1, 0x12dd, 0x12e6, 0x12f2, 0x1301, 0x130d, - 0x1319, 0x1325, 0x132e, 0x133a, 0x1346, 0x134f, 0x1358, 0x1367, - 0x137d, 0x1393, 0x139c, 0x13a8, 0x13ba, 0x13c3, 0x13d2, 0x13de, - 0x13e7, 0x13f7, 0x1400, 0x140d, 0x1419, 0x1425, 0x1434, 0x1434, - 0x1440, 0x144c, 0x145e, 0x1467, 0x1473, 0x147c, 0x148c, 0x1498, - 0x14a4, 0x14b0, 0x14b0, 0x14bf, 0x14ce, 0x14da, 0x14f0, 0x14f0, - // Entry 1C0 - 1FF - 0x14f9, 0x1509, 0x1515, 0x1528, 0x1537, 0x1543, 0x154c, 0x1558, - 0x1567, 0x157a, 0x1589, 0x1595, 0x15a1, 0x15b3, 0x15bf, 0x15bf, - 0x15d8, 0x15d8, 0x15d8, 0x15ee, 0x15ee, 0x15fd, 0x15fd, 0x1606, - 0x1612, 0x1621, 0x1637, 0x1640, 0x1640, 0x164f, 0x165b, 0x166a, - 0x166a, 0x166a, 0x1673, 0x167c, 0x167c, 0x1685, 0x1685, 0x1697, - 0x16a0, 0x16ac, 0x16b8, 0x16ce, 0x16da, 0x16e6, 0x16f2, 0x16f2, - 0x1701, 0x170a, 0x1719, 0x172b, 0x172b, 0x173e, 0x174a, 0x1753, - 0x1753, 0x175f, 0x1778, 0x178e, 0x178e, 0x179d, 0x17a3, 0x17bc, - // Entry 200 - 23F - 0x17c8, 0x17c8, 0x17c8, 0x17d8, 0x17e8, 0x17fb, 0x180e, 0x181a, - 0x1829, 0x183c, 0x1848, 0x1851, 0x1851, 0x185d, 0x1866, 0x1872, - 0x187e, 0x1891, 0x189d, 0x189d, 0x189d, 0x18a6, 0x18af, 0x18bb, - 0x18c4, 0x18d0, 0x18d9, 0x18ee, 0x18fa, 0x1906, 0x1915, 0x1921, - 0x192d, 0x1940, 0x1950, 0x1950, 0x195c, 0x195c, 0x196b, 0x196b, - 0x1977, 0x1983, 0x1992, 0x19a1, 0x19c1, 0x19d0, 0x19df, 0x19eb, - 0x1a00, 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a09, 0x1a12, 0x1a12, - 0x1a1b, 0x1a24, 0x1a33, 0x1a3f, 0x1a48, 0x1a54, 0x1a5a, 0x1a66, - // Entry 240 - 27F - 0x1a66, 0x1a6f, 0x1a7b, 0x1a87, 0x1a90, 0x1a99, 0x1a99, 0x1aa2, - 0x1ab1, 0x1ac1, 0x1ac1, 0x1acd, 0x1aed, 0x1af6, 0x1b11, 0x1b1a, - 0x1b31, 0x1b31, 0x1b31, 0x1b4c, 0x1b5a, 0x1b5a, 0x1b5a, 0x1b5a, - 0x1b5a, 0x1b5a, 0x1b5a, 0x1b5a, 0x1b5a, 0x1b5a, 0x1b6a, 0x1b76, - 0x1b76, 0x1b76, 0x1b82, 0x1ba1, 0x1bb7, -} // Size: 1250 bytes - -const kyLangStr string = "" + // Size: 6763 bytes - "афарчаабхазчаафрикаанчааканчаамхарчаарагончоарабчаассамчааварикчеаймарач" + - "аазербайжанчабашкырчабеларусчаболгарчабисламачабамбарачабангладешчетибе" + - "тчебретончобоснийчекаталончачеченчечаморрочокорсиканчачехчечиркөө славя" + - "нчачувашчауелшчедатчанемисчедивехичежонгучаэбечегрекчеанглисчеэсперанто" + - "испанчаэстончобаскчафарсчафулачафинчефижичефарерчефранцузчабатыш фризче" + - "ирландчашотладиялык гелчагалисиячагуараничегужаратчамэнксычахаусачаиври" + - "тчехиндичехорватчагаитичевенгерчеармянчагерерочоинтерлингваиндонезиячаи" + - "гбочосычуань йичеидочоисландчаиталиянчаинуктитутчажапончожаванизчегрузи" + - "нчекикуйичекуаньямачаказакчакалаалисутчакмерчеканнадачакорейчекануричек" + - "ашмирчекурдчакомичекорнишчекыргызчалатынчалюксембургчагандачалимбургиче" + - "лингалачалаочолитовчолуба-катангачалатышчамалагасчамаршаллчамаоричемаке" + - "дончомалайаламчамонголчомаратичемалайчамалтизчебурмачанауручатүндүк нды" + - "белченепалчандонгачаголландчанорвежче (нинорск)норвежче (Букмал)түштүк " + - "ндебелеченаваджочоньянджачаокситанчаоромочоориячаосетинчепунжабичеполяк" + - "чапуштучапортугалчакечуачароманшчарундичерумынчаорусчаруандачасанскритч" + - "есардинчесиндхичетүндүк саамичесангочосингалачасловакчасловенчесамоанча" + - "шоначасомаличеалбанчасербчесватичесесоточосунданчашведчесуахиличетамилч" + - "етелугучатажикчетайчатигриниачатүркмөнчөтсваначатонгачатүркчөтсонгачата" + - "тарчатаитичеуйгурчаукраинчеурдучаөзбекчевендачавьетнамчаволапюкчаваллон" + - "чоуолофчокосачаидишчейорубачакытайчазулучаачехчеадаңмечеадыгейчеагемчеа" + - "йнучаалеутчатүштүк алтайчаангикачамапучечеарапахочоасучаастурийчеавадхи" + - "чебаличебасаачабембачабеначачыгыш балучичебхожпуричебиничесиксикачабодо" + - "чобугийчеблинчесебуанчачигачачуукичемаричечокточочерокичешайеннчеборбор" + - "дук курдчасеселва креол французчадакотачадаргинчетаитачадогрибчезармача" + - "төмөнкү сорбианчадуалачажола-фоничедазагачаэмбучаэфикчеэкажукчаэвондочо" + - "филипинчефончофриулчагачагагаузчаГань Кытайчагиизчегилбертчегоронталочо" + - "немисче (Швейцария)гусичегвичинчеХакка кытайчагавайчахилигайнончохмонгч" + - "ожогорку сорбианчаСянь Кытайчахупачаибанчаибибиочоилокочоингушчаложбанч" + - "ангомбачамачамечекабылчакахинчеджучакамбачакабардинчетяпчамакондечекабу" + - "вердичекорочохасичекойра чиничекакочокаленжичекимбундучакоми-пермякчако" + - "нканичекпеллечекарачай-балкарчакарелчекурухчашамабалачабафиячаколоньяча" + - "кумыкчаладиночолангичелезгинчелакотачалозичетүндүк луричелуба-лулуачалу" + - "ндачалуочомизочолухиячамадурисчемагахичемаитиличемакасарчамасайчамокшач" + - "амендечемеручаморисианчамакуачаметачамикмакчаминанкабаучаманипуричемоха" + - "укчамоссичемундангчабир нече тилдекрикчемирандизчеэрзянчамазандераничеn" + - "anнеополитанчанамачатөмөнкү немисченеваричениасчаньюанчаквасиочонгимбунч" + - "аногайчанкочотүндүк соточонуерченыйанколчопангасичепампангачапапиаменто" + - "чопалауанчааргындашкан тил (Нигерия)пруссчакичечерапаньючараротонгачаро" + - "мбочоаромунчаруачасандавечесахачасамбуручасанталиченгамбайчасангучасици" + - "лийчешотландчатүштүк курдчасеначакойраборо сенничеташелитчешанчатүштүк " + - "саамичелуле саамичеинари саамическолт саамичесонинкечесранан тонгочосах" + - "очосукумачакоморчосириячатимнечетесочотетумчатигречеклингончоток-писинч" + - "етарокочотумбукачатувалучатасабакчатувинчеборбордук Атлас тамазигтчеудм" + - "уртчаумбундучабелгисиз тилдевайичевунжочовалцерчевольяттачаварайчаворлп" + - "иричеwuuкалмыкчасогачаянгбенчейембачакантончомарокко тамазигт адабий ти" + - "линдезуничетилдик мазмун жокзазачаазыркы адабий араб тилиндеадабий неми" + - "сче (Швейцария)испанча (Европа)төмөнкү саксончофламандчапортугалча (Евр" + - "опа)молдованчасерб-хорватконго суахаличекытайча (жөнөкөйлөштүрүлгөн)кыт" + - "айча (салттуу)" - -var kyLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x001a, 0x001a, 0x002e, 0x003a, 0x0048, 0x0058, - 0x0064, 0x0072, 0x0082, 0x0092, 0x00aa, 0x00ba, 0x00cc, 0x00dc, - 0x00ee, 0x0100, 0x0116, 0x0124, 0x0134, 0x0144, 0x0156, 0x0164, - 0x0176, 0x018a, 0x018a, 0x0194, 0x01b1, 0x01bf, 0x01cb, 0x01d5, - 0x01e3, 0x01f3, 0x0201, 0x020b, 0x0217, 0x0227, 0x0239, 0x0247, - 0x0255, 0x0261, 0x026d, 0x0279, 0x0283, 0x028f, 0x029d, 0x02af, - 0x02c6, 0x02d6, 0x02f7, 0x0309, 0x031b, 0x032d, 0x033d, 0x034b, - 0x0359, 0x0367, 0x0367, 0x0377, 0x0385, 0x0395, 0x03a3, 0x03b3, - // Entry 40 - 7F - 0x03c9, 0x03df, 0x03df, 0x03eb, 0x0402, 0x0402, 0x040c, 0x041c, - 0x042e, 0x0444, 0x0452, 0x0464, 0x0474, 0x0474, 0x0484, 0x0498, - 0x04a6, 0x04be, 0x04ca, 0x04dc, 0x04ea, 0x04fa, 0x050a, 0x0516, - 0x0522, 0x0532, 0x0542, 0x0550, 0x0568, 0x0576, 0x058a, 0x059c, - 0x05a6, 0x05b4, 0x05cf, 0x05dd, 0x05ef, 0x0601, 0x060f, 0x0621, - 0x0637, 0x0647, 0x0657, 0x0665, 0x0675, 0x0683, 0x0691, 0x06ae, - 0x06bc, 0x06cc, 0x06de, 0x06ff, 0x071e, 0x073d, 0x074f, 0x0761, - 0x0773, 0x0773, 0x0781, 0x078d, 0x079d, 0x07af, 0x07af, 0x07bd, - // Entry 80 - BF - 0x07cb, 0x07df, 0x07ed, 0x07fd, 0x080b, 0x0819, 0x0825, 0x0835, - 0x0849, 0x0859, 0x0869, 0x0884, 0x0892, 0x08a4, 0x08b4, 0x08c4, - 0x08d4, 0x08e0, 0x08f0, 0x08fe, 0x090a, 0x0918, 0x0928, 0x0938, - 0x0944, 0x0956, 0x0964, 0x0974, 0x0982, 0x098c, 0x09a0, 0x09b2, - 0x09c2, 0x09d0, 0x09dc, 0x09ec, 0x09fa, 0x0a08, 0x0a16, 0x0a26, - 0x0a32, 0x0a40, 0x0a4e, 0x0a60, 0x0a72, 0x0a82, 0x0a90, 0x0a9c, - 0x0aa8, 0x0ab8, 0x0ab8, 0x0ac6, 0x0ad2, 0x0ade, 0x0ade, 0x0aee, - 0x0afe, 0x0afe, 0x0afe, 0x0b0a, 0x0b16, 0x0b16, 0x0b16, 0x0b24, - // Entry C0 - FF - 0x0b24, 0x0b3f, 0x0b3f, 0x0b4f, 0x0b4f, 0x0b5f, 0x0b5f, 0x0b71, - 0x0b71, 0x0b71, 0x0b71, 0x0b71, 0x0b71, 0x0b7b, 0x0b7b, 0x0b8d, - 0x0b8d, 0x0b9d, 0x0b9d, 0x0ba9, 0x0ba9, 0x0bb7, 0x0bb7, 0x0bb7, - 0x0bb7, 0x0bb7, 0x0bc5, 0x0bc5, 0x0bd1, 0x0bd1, 0x0bd1, 0x0bec, - 0x0c00, 0x0c00, 0x0c0c, 0x0c0c, 0x0c0c, 0x0c1e, 0x0c1e, 0x0c1e, - 0x0c1e, 0x0c1e, 0x0c2a, 0x0c2a, 0x0c2a, 0x0c38, 0x0c38, 0x0c44, - 0x0c44, 0x0c44, 0x0c44, 0x0c44, 0x0c44, 0x0c44, 0x0c54, 0x0c60, - 0x0c60, 0x0c60, 0x0c6e, 0x0c7a, 0x0c7a, 0x0c88, 0x0c88, 0x0c98, - // Entry 100 - 13F - 0x0ca8, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cc7, 0x0cf3, 0x0cf3, 0x0d03, - 0x0d13, 0x0d21, 0x0d21, 0x0d21, 0x0d31, 0x0d31, 0x0d3f, 0x0d3f, - 0x0d60, 0x0d60, 0x0d6e, 0x0d6e, 0x0d83, 0x0d83, 0x0d93, 0x0d9f, - 0x0dab, 0x0dab, 0x0dab, 0x0dbb, 0x0dbb, 0x0dbb, 0x0dbb, 0x0dcb, - 0x0dcb, 0x0dcb, 0x0ddd, 0x0ddd, 0x0de7, 0x0de7, 0x0de7, 0x0de7, - 0x0de7, 0x0de7, 0x0de7, 0x0df5, 0x0dfd, 0x0e0d, 0x0e24, 0x0e24, - 0x0e24, 0x0e24, 0x0e30, 0x0e42, 0x0e42, 0x0e42, 0x0e42, 0x0e42, - 0x0e42, 0x0e58, 0x0e58, 0x0e58, 0x0e58, 0x0e7b, 0x0e7b, 0x0e7b, - // Entry 140 - 17F - 0x0e87, 0x0e97, 0x0e97, 0x0eb0, 0x0ebe, 0x0ebe, 0x0ed6, 0x0ed6, - 0x0ee4, 0x0f05, 0x0f1c, 0x0f28, 0x0f34, 0x0f44, 0x0f52, 0x0f60, - 0x0f60, 0x0f60, 0x0f70, 0x0f80, 0x0f90, 0x0f90, 0x0f90, 0x0f90, - 0x0f90, 0x0f9e, 0x0fac, 0x0fb6, 0x0fc4, 0x0fc4, 0x0fd8, 0x0fd8, - 0x0fe2, 0x0ff4, 0x100a, 0x100a, 0x1016, 0x1016, 0x1022, 0x1022, - 0x1039, 0x1039, 0x1039, 0x1045, 0x1057, 0x106b, 0x1084, 0x1096, - 0x1096, 0x10a6, 0x10c5, 0x10c5, 0x10c5, 0x10d3, 0x10e1, 0x10f5, - 0x1103, 0x1115, 0x1123, 0x1123, 0x1133, 0x1141, 0x1141, 0x1141, - // Entry 180 - 1BF - 0x1151, 0x1151, 0x1151, 0x1151, 0x1161, 0x1161, 0x1161, 0x1161, - 0x116d, 0x1186, 0x1186, 0x119d, 0x119d, 0x11ab, 0x11b5, 0x11c1, - 0x11cf, 0x11cf, 0x11cf, 0x11e1, 0x11e1, 0x11f1, 0x1203, 0x1215, - 0x1215, 0x1223, 0x1223, 0x1231, 0x1231, 0x123f, 0x124b, 0x125f, - 0x125f, 0x126d, 0x1279, 0x1289, 0x12a1, 0x12a1, 0x12b5, 0x12c5, - 0x12d3, 0x12d3, 0x12e5, 0x12ff, 0x130b, 0x131f, 0x131f, 0x131f, - 0x131f, 0x132d, 0x1347, 0x134a, 0x1362, 0x136e, 0x138b, 0x139b, - 0x13a7, 0x13b5, 0x13b5, 0x13c5, 0x13d7, 0x13e5, 0x13e5, 0x13e5, - // Entry 1C0 - 1FF - 0x13ef, 0x1408, 0x1414, 0x1414, 0x1414, 0x1428, 0x1428, 0x1428, - 0x1428, 0x1428, 0x143a, 0x143a, 0x144e, 0x1466, 0x1478, 0x1478, - 0x14a6, 0x14a6, 0x14a6, 0x14a6, 0x14a6, 0x14a6, 0x14a6, 0x14a6, - 0x14a6, 0x14b4, 0x14b4, 0x14c0, 0x14c0, 0x14c0, 0x14d2, 0x14e8, - 0x14e8, 0x14e8, 0x14f6, 0x14f6, 0x14f6, 0x14f6, 0x14f6, 0x1506, - 0x1510, 0x1522, 0x152e, 0x152e, 0x1540, 0x1540, 0x1552, 0x1552, - 0x1564, 0x1572, 0x1584, 0x1596, 0x1596, 0x15af, 0x15af, 0x15bb, - 0x15bb, 0x15bb, 0x15dc, 0x15dc, 0x15dc, 0x15ee, 0x15f8, 0x15f8, - // Entry 200 - 23F - 0x15f8, 0x15f8, 0x15f8, 0x1613, 0x162a, 0x1643, 0x165c, 0x166e, - 0x166e, 0x1689, 0x1689, 0x1695, 0x1695, 0x16a5, 0x16a5, 0x16a5, - 0x16b3, 0x16b3, 0x16c1, 0x16c1, 0x16c1, 0x16cf, 0x16db, 0x16db, - 0x16e9, 0x16f7, 0x16f7, 0x16f7, 0x16f7, 0x1709, 0x1709, 0x1709, - 0x1709, 0x1709, 0x171e, 0x171e, 0x172e, 0x172e, 0x172e, 0x172e, - 0x1740, 0x1750, 0x1762, 0x1770, 0x17a2, 0x17b2, 0x17b2, 0x17c4, - 0x17df, 0x17eb, 0x17eb, 0x17eb, 0x17eb, 0x17eb, 0x17eb, 0x17eb, - 0x17f9, 0x1809, 0x181d, 0x182b, 0x182b, 0x183f, 0x1842, 0x1852, - // Entry 240 - 27F - 0x1852, 0x185e, 0x185e, 0x185e, 0x186e, 0x187c, 0x187c, 0x188c, - 0x188c, 0x188c, 0x188c, 0x188c, 0x18c7, 0x18d3, 0x18f3, 0x18ff, - 0x1930, 0x1930, 0x1930, 0x1960, 0x1960, 0x1960, 0x1960, 0x1960, - 0x1960, 0x197d, 0x197d, 0x197d, 0x197d, 0x197d, 0x199c, 0x19ae, - 0x19ae, 0x19d1, 0x19e5, 0x19fa, 0x1a17, 0x1a4c, 0x1a6b, -} // Size: 1254 bytes - -const loLangStr string = "" + // Size: 10930 bytes - "ອະຟາແອບຄາຊຽນອາເວັສແຕນອາຟຣິການອາການອຳຮາຣິກອາຣາໂກເນັດອາຣັບອັສຊາມີສອາວາຣິກອ" + - "າຍມາລາອາເຊີໄບຈານິບາຣກີເບລາຣັສຊຽນບັງກາຣຽນບິສລະມາບາມບາຣາເບັງກາລີທິເບທັນເ" + - "ບຣຕັນບອສນຽນຄາຕາລານຊີເຄນຊາມໍໂຣຄໍຊິກາຄີເຊກໂບດສລາວິກຊູວາຊເວວແດນິຊເຢຍລະມັນ" + - "ດີວີຮີດີຊອງຄາອິວາກຣີກອັງກິດເອສປາຍສະແປນນິຊເອສໂຕນຽນບັສກີເປີຊຽນຟູລາຟິນນິຊ" + - "ຟິຈຽນຟາໂຣສຝຣັ່ງຟຣິຊຽນ ຕາເວັນຕົກໄອຣິສສະກັອດເກລິກກາລິຊຽນກົວຣານີກູຈາຣາຕິແ" + - "ມງຊ໌ເຮົາຊາຮີບຣິວຮິນດິຮິຣິໂມຕູໂຄຣເອທຽນໄຮຕຽນຮັງກາຣຽນອາເມນຽນເຮິຮິໂຣອິນເຕີ" + - "ລິງລົວອິນໂດເນຊຽນອິນເຕີລິງກຣີອິກໂບເຊສວຍຢີອິນນູປຽກອີໂດໄອສແລນດິກອິຕາລຽນອິ" + - "ນນຸກຕິຕັດຍີ່ປຸ່ນຈາແວນີສຈໍຈຽນຄອງໂກຄິຄູຢຸກວນຍາມາຄາຊັກກຣີນແລນລິດຂະເໝນຄັນນ" + - "າດາເກົາຫລີຄານຸລິຄາສເມຍຣິເຄີດິສໂຄມິຄໍນິຊເກຍກີສລາຕິນລັກເຊມບວກກິຊແກນດາລິມ" + - "ເບີກີຊລິງກາລາລາວລິທົວນຽນລູບາ-ຄາຕັງກາລັດວຽນມາລາກາສຊີມາຊານເລັດມາວຣິແມຊິໂ" + - "ດນຽນມາເລອາລຳມອງໂກເລຍມາຣາທີມາເລມອລທີສມຽນມານາຢູລູເອັນເດເບເລເໜືອເນປາລີເອັ" + - "ນດອງກາດັຊນໍເວຈຽນ ນີນອກນໍເວຈຽນ ບັອກມອລນີບີລີໃຕ້ນາວາໂຈນານຈາອັອກຊີຕານໂອຈິ" + - "ບວາໂອໂຣໂມໂອຣິຢາອອດເຊຕິກປັນຈາບີປາລີໂປລິຊປາສໂຕປອກຕຸຍກິສຄີຊົວໂຣແມນຊ໌ຣຸນດິ" + - "ໂຣແມນຽນລັດເຊຍຄິນຢາວານດາສັນສະກຣິດສາດີນຽນສິນທິຊາມິເໜືອແຊງໂກສິນຫາລາສະໂລແວ" + - "ັກສະໂລເວນຽນຊາມົວໂຊນາໂຊມາລີອານບານຽນເຊີບຽນຊຣາຕິໂຊໂທໃຕ້ຊຸນແດນນີສສະວີດິຊຊວ" + - "າຮີລິທາມິລເຕລູກູທາຈິກໄທຕິກຣິນຢາເທີກເມັນເຕສະວານາທອງການເທີຄິຊເຕຊອງກາທາທາ" + - "ຕາຮີຕຽນອຸຍເຄີຢູເຄຣນຽນອູຣດູອຸສເບກເວນດາຫວຽດນາມໂວລາພັກວໍລູມວໍລອບໂຮຊາຢິວໂຢ" + - "ຣູບາຊວາງຈີນຊູລູແອັກຊີເນັສອາໂຄລີອາແດງມີເອດີຮິແອຟີຮີລີອາເຮັມໄອນູອັກກາດຽມ" + - "ອາເລີດອານໄຕໃຕ້ອັງກິດໂບຮານແອນຈີກາອາລາມິກມາພຸດຊີອາຣາປາໂຮອາຣາແວກອາຊູອັສຕູ" + - "ຮຽນອາວາຮິບາລູຊີບາລີເນັດບາຊາບາມຸນໂຄມາລາບີເຈເບັມບາບີນາບາຟັດບາໂລຈີ ພາກຕາເ" + - "ວັນຕົກໂບພູຣິບີຄອນບີນີກົມຊິກຊິກາບຣາໂບດູອາຄຸດບູຣຽດບູຈີເນັດບູລູບລິນເມດູມບ" + - "າແຄດໂດຄາຣິບຄາຢູກາອາດແຊມຊີບູໂນຊີກາຊິບຊາຊາກາໄຕຊູເກດມາຣິຊີນຸກຈາກອນຊອກຕິວຊ" + - "ີພິວຢານຊີໂຣກີຊີເຢນນີໂຊຣານິ ເຄີດິຊຄອບຕິກຄຣີເມນເຕີຄິຊເຊເຊວາ ໂຄຣດ ຝຣັ່ງກາ" + - "ຊູບຽນດາໂກຕາດາກວາໄຕຕາເດລາວາຊີເລັບໂດກຣິບດິນກາຊາມາດອກຣີຊໍບຽນຕໍ່ກວ່າດົວລາດ" + - "ັກກາງໂຈລາ-ຟອນຢີດູລາດາຊາກາເອັມບູອີຟິກອີຢິບບູຮານອີກາຈັກອີລາໄມອັງກິດກາງອີ" + - "ວອນດູແຟງຟີລິປີໂນຟອນຟຮັ່ງເສດກາງຟຮັ່ງເສດໂບຮານຟຣີຊຽນເໜືອຟຣີຊຽນຕາເວັນອອກຟຣ" + - "ີລຽນກາກາກາອຸຊກາໂຢບາຍາກີກິນເບີເທັດເຢຍລະມັນສູງກາງເຢຍລະມັນສູງໂບຮານກອນດີໂກ" + - "ຣອນຕາໂຣກອດຮິກກຣີໂບແອນຊຽນກຣີກສະວິສ ເຈີແມນກູຊິວິດອິນໄຮດາຮາໄວອຽນຮິຣິໄກນອນ" + - "ຮິດໄຕມອງຊໍບຽນ ທາງຕອນເໜືອຮູປາໄອບານໄອໄບໄບໂອໄອໂລໂກອິນກັຊໂລບບັນງອມບາມາແຊມຈ" + - "ູແດວ-ເພີຊຽນຈູແດວ-ອາລາບິກກາຣາ-ການປາກກາໄບລ໌ກາຊິນຈຣູກາມບາກະວີກາບາດຽນຄາແນມ" + - "ບູຕີບມາຄອນເດຄາເວີເດຍນູໂຄໂລຄາສິໂຄຕັນຄອຍຣາ ຊິນີຄາໂກຄາເລັນຈິນຄິມບັນດູໂຄມີ" + - "-ເພີມຢັກກອນການີຄູສໄລກາແປຣກາຣາໄຊ-ບານກາກາເຣລຽນກູຣູກຊຳບາລ້າບາເຟຍໂຄລອກນຽນຄູມ" + - "ີກຄູເທໄນລາດີໂນແລນກິລານດາແລມບາລີຊຽນລາໂກຕາແມັງໂກ້ໂລຊິລູຣິ ທາງຕອນເໜືອລູບາ" + - "-ລູລົວລູເຊໂນລຸນດາລົວລູໄຊລູໄຍມາດູລາມາຟາມາກາຮິໄມທີລິມາກາຊາຣມັນດິງກາມາໄຊມາບ" + - "າມອກຊາມານດາຣເມນເດເມຣູມໍຣິສເຢນໄອລິດກາງມາຄູວາ-ມີດໂຕເມທາມິກແມກທີແນງກາບູແມ" + - "ນຈູມານີພູຣິໂມຫາມອສຊີມັນດັງຫລາຍພາສາຄຣິກມີລັນດາມາວາຣິມໍຢິນເອີຍາມາແຊນເດີລ" + - "ັງນາໂປລີນາມາເຢຍລະມັນ ຕອນໄຕ້ນີວາຣິນີ່ອັດນີ່ອູກວາຊີໂອຈີ່ມບູນນໍໄກນໍໂບຮານເ" + - "ອັນໂກໂຊໂທເໜືອເນີເນວາດັ້ງເດີມນາມວີຊິນານຄອນໂນໂຣນິມາໂອແຊກຕູກີອອດໂຕມັນປານກ" + - "າຊີມານພາລາວີປາມປານກາປາມເປຍເມັນໂທປາລົວອານໄນຈີຣຽນພິດກິນເປີເຊຍໂບຮານຟີນີເຊ" + - "ຍພອນເພໂປວອງຊານໂບຮານKʼicheʼຣາຈັສທານິຣາປານຸຍຣາໂຣທອນການຣົມໂບໂຣເມນີອາໂຣມານ" + - "ຽນອາຣວາຊັນດາວຊາກາສາມາຣິແຕນ-ຊຳບູຣູຊາຊັກຊານທາລິກຳເບຊານກູຊີຊິລີນສກອດພາກໄຕ" + - "້ ຂອງ ກູດິດຊີນີກາຊີນາເຊນຄັບໂຄຍຣາໂບໂຣ ເຊນນິອີຣິຊເກົ່າທາເຊວຫິດຊານອາລັບ-ຊ" + - "າດຊິດາໂມຊາມິໃຕ້ລຸນຊາມິອີນາຣິຊາມິສກອດຊາມິໂຊນິນກີຊອກດິນສຣານນານຕອນໂກເຊເລີ" + - "ຊາໂຮຊູຄູມ້າຊູຊູຊູເມີເລຍໂຄໂນຣຽນຊີເລຍແບບດັ້ງເດີມຊີເລຍທີມເນເຕໂຊເຕເລໂນເຕຕູ" + - "ມໄທກຣີຕີວໂຕເກເລົາຄຣິງກອນທລີງກິດທາມາກເຊກນາຍອາຊາຕອງກາທອກພີຊິນຕາໂລໂກຊີມຊີ" + - "ແອນຕຳບູກາຕູວາລູຕາຊາວັກຕູວີນຽນອັດລາສ ທາມາຊີກ ກາງອຸດມັດຢູກາລິກອຳບັນດູບໍ່" + - "ສາມາດລະບຸພາສາໄວໂວຕິກວັນໂຈວາເຊີວາລາໂມວາເລວາໂຊວາຣພິຣິການມິກໂຊກາເຢົ້າຢັບແ" + - "ຍງເບນແຢມບາກວາງຕຸ້ງຊາໂປແຕບສັນຍາລັກບລີຊິມເຊນາກາໂມຣັອກແຄນ ທາມາຊີກ ມາດຕະຖາ" + - "ນຊູນີບໍ່ມີເນື້ອຫາພາສາຊາຊາອາຣາບິກມາດຕະຖານສະໄໝໃໝ່ເຢຍລະມັນ (ໂອສຕຣິດ)ສະວິສ" + - " ໄຮ ເຈີແມນອັງກິດ (ໂອດສະຕາລີ)ອັງກິດແຄນາດາອັງກິດ (ບຣິດທິຊ)ອັງກິດ (ອາເມລິກັ" + - "ນ)ລາຕິນ ອາເມຣິກັນ ສະແປນນິຊສະເປັນ ຢຸໂຣບເມັກຊິກັນ ສະແປນນິຊຟລັງ(ການາດາ)ຊາ" + - "ຊອນ ຕອນໄຕຟລີມິຊປອກຕຸຍກິສ ບະເລຊີ່ນປອກຕຸຍກິສ ຢຸໂຣບໂມດາວຽນເຊີໂບ-ໂກເຊຍຄອງໂ" + - "ກ ຊວາຮີລິຈີນແບບຮຽບງ່າຍຈີນແບບດັ້ງເດີມ" - -var loLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0024, 0x003f, 0x0057, 0x0066, 0x007b, 0x0099, - 0x00a8, 0x00c0, 0x00d5, 0x00ea, 0x010b, 0x011a, 0x0138, 0x0150, - 0x0165, 0x017a, 0x0192, 0x01a7, 0x01b9, 0x01cb, 0x01e0, 0x01ef, - 0x0201, 0x0213, 0x0219, 0x0222, 0x023d, 0x024c, 0x0255, 0x0264, - 0x027c, 0x028e, 0x02a3, 0x02af, 0x02bb, 0x02cd, 0x02df, 0x02f7, - 0x030f, 0x031e, 0x0330, 0x033c, 0x034e, 0x035d, 0x036c, 0x037b, - 0x03a9, 0x03b8, 0x03d9, 0x03ee, 0x0403, 0x041b, 0x042a, 0x043c, - 0x044e, 0x045d, 0x0475, 0x048d, 0x049c, 0x04b4, 0x04c9, 0x04de, - // Entry 40 - 7F - 0x0502, 0x0520, 0x0544, 0x0553, 0x0568, 0x0580, 0x058c, 0x05a7, - 0x05bc, 0x05dd, 0x05f2, 0x0607, 0x0616, 0x0625, 0x0637, 0x064c, - 0x065b, 0x0679, 0x0688, 0x069d, 0x06b2, 0x06c4, 0x06dc, 0x06ee, - 0x06fa, 0x0709, 0x071b, 0x072a, 0x074e, 0x075d, 0x0778, 0x078d, - 0x0796, 0x07ae, 0x07d0, 0x07e2, 0x07fd, 0x0818, 0x0827, 0x0842, - 0x085a, 0x0872, 0x0884, 0x0890, 0x08a2, 0x08b1, 0x08c3, 0x08ed, - 0x08ff, 0x091a, 0x0923, 0x0948, 0x0973, 0x098e, 0x09a0, 0x09af, - 0x09ca, 0x09df, 0x09f1, 0x0a03, 0x0a1b, 0x0a30, 0x0a3c, 0x0a4b, - // Entry 80 - BF - 0x0a5a, 0x0a75, 0x0a84, 0x0a99, 0x0aa8, 0x0abd, 0x0acf, 0x0aed, - 0x0b08, 0x0b1d, 0x0b2c, 0x0b44, 0x0b53, 0x0b68, 0x0b80, 0x0b9b, - 0x0baa, 0x0bb6, 0x0bc8, 0x0be0, 0x0bf2, 0x0c01, 0x0c16, 0x0c31, - 0x0c46, 0x0c5b, 0x0c6a, 0x0c7c, 0x0c8b, 0x0c91, 0x0ca9, 0x0cc1, - 0x0cd9, 0x0ceb, 0x0cfd, 0x0d12, 0x0d1e, 0x0d33, 0x0d45, 0x0d5d, - 0x0d6c, 0x0d7e, 0x0d8d, 0x0da2, 0x0db7, 0x0dc6, 0x0dd5, 0x0de1, - 0x0dea, 0x0dfc, 0x0e08, 0x0e11, 0x0e1d, 0x0e3b, 0x0e4d, 0x0e62, - 0x0e74, 0x0e74, 0x0e8c, 0x0e9e, 0x0eaa, 0x0ec2, 0x0ec2, 0x0ed4, - // Entry C0 - FF - 0x0ed4, 0x0eec, 0x0f0d, 0x0f22, 0x0f37, 0x0f4c, 0x0f4c, 0x0f64, - 0x0f64, 0x0f64, 0x0f79, 0x0f79, 0x0f79, 0x0f85, 0x0f85, 0x0f9d, - 0x0f9d, 0x0faf, 0x0fc1, 0x0fd9, 0x0fd9, 0x0fe5, 0x0ff4, 0x0ff4, - 0x1006, 0x1012, 0x1024, 0x1024, 0x1030, 0x103f, 0x103f, 0x1076, - 0x1088, 0x1097, 0x10a3, 0x10a3, 0x10ac, 0x10c1, 0x10c1, 0x10c1, - 0x10ca, 0x10ca, 0x10d6, 0x10e5, 0x10f4, 0x110c, 0x1118, 0x1124, - 0x1139, 0x1148, 0x1157, 0x1169, 0x117b, 0x117b, 0x118d, 0x1199, - 0x11a8, 0x11ba, 0x11c9, 0x11d5, 0x11f3, 0x1205, 0x121d, 0x122f, - // Entry 100 - 13F - 0x1244, 0x1269, 0x127b, 0x127b, 0x129f, 0x12ce, 0x12e3, 0x12f5, - 0x1304, 0x1310, 0x1322, 0x1334, 0x1346, 0x1355, 0x1361, 0x1370, - 0x1394, 0x1394, 0x13a3, 0x13b5, 0x13d1, 0x13dd, 0x13ef, 0x1401, - 0x1410, 0x1410, 0x142e, 0x1443, 0x1455, 0x1470, 0x1470, 0x1485, - 0x1485, 0x148e, 0x14a6, 0x14a6, 0x14af, 0x14af, 0x14d0, 0x14f7, - 0x14f7, 0x1515, 0x1542, 0x1554, 0x155a, 0x156f, 0x156f, 0x157b, - 0x1587, 0x1587, 0x158d, 0x15ab, 0x15ab, 0x15d5, 0x1605, 0x1605, - 0x1614, 0x162f, 0x1641, 0x1650, 0x166e, 0x1690, 0x1690, 0x1690, - // Entry 140 - 17F - 0x169c, 0x16ae, 0x16ba, 0x16ba, 0x16cf, 0x16cf, 0x16ea, 0x16f9, - 0x1702, 0x1730, 0x1730, 0x173c, 0x174b, 0x1763, 0x1775, 0x1787, - 0x1787, 0x1787, 0x1799, 0x17a8, 0x17b7, 0x17d9, 0x17fe, 0x17fe, - 0x181d, 0x182f, 0x183e, 0x1847, 0x1856, 0x1862, 0x1877, 0x188c, - 0x1895, 0x18aa, 0x18c8, 0x18c8, 0x18d4, 0x18d4, 0x18e0, 0x18ef, - 0x190b, 0x190b, 0x190b, 0x1917, 0x1932, 0x194a, 0x196c, 0x1981, - 0x1990, 0x199f, 0x19c1, 0x19c1, 0x19c1, 0x19d6, 0x19e5, 0x19fa, - 0x1a09, 0x1a21, 0x1a30, 0x1a42, 0x1a54, 0x1a63, 0x1a72, 0x1a81, - // Entry 180 - 1BF - 0x1a90, 0x1a90, 0x1a90, 0x1a90, 0x1aa2, 0x1aa2, 0x1ab7, 0x1ab7, - 0x1ac3, 0x1aee, 0x1aee, 0x1b0a, 0x1b1c, 0x1b2b, 0x1b34, 0x1b40, - 0x1b4c, 0x1b4c, 0x1b4c, 0x1b5e, 0x1b6a, 0x1b7c, 0x1b8e, 0x1ba3, - 0x1bbb, 0x1bc7, 0x1bd3, 0x1be2, 0x1bf4, 0x1c03, 0x1c0f, 0x1c27, - 0x1c3f, 0x1c61, 0x1c6d, 0x1c7f, 0x1c9a, 0x1ca9, 0x1cc1, 0x1ccd, - 0x1cdc, 0x1cdc, 0x1cee, 0x1d06, 0x1d12, 0x1d27, 0x1d39, 0x1d39, - 0x1d48, 0x1d57, 0x1d78, 0x1d78, 0x1d8a, 0x1d96, 0x1dc1, 0x1dd3, - 0x1de5, 0x1df4, 0x1df4, 0x1e09, 0x1e1e, 0x1e2a, 0x1e3f, 0x1e3f, - // Entry 1C0 - 1FF - 0x1e51, 0x1e69, 0x1e72, 0x1e96, 0x1eab, 0x1ebd, 0x1ec9, 0x1ed5, - 0x1ee4, 0x1f08, 0x1f26, 0x1f38, 0x1f50, 0x1f74, 0x1f8c, 0x1f8c, - 0x1fb3, 0x1fb3, 0x1fb3, 0x1fd4, 0x1fd4, 0x1fe9, 0x1fe9, 0x1fe9, - 0x1ff8, 0x1ff8, 0x201f, 0x2028, 0x2028, 0x2043, 0x2058, 0x2076, - 0x2076, 0x2076, 0x2085, 0x2097, 0x2097, 0x2097, 0x2097, 0x20b2, - 0x20c1, 0x20d3, 0x20df, 0x20fb, 0x210d, 0x211c, 0x2131, 0x2131, - 0x213d, 0x214c, 0x2161, 0x216d, 0x216d, 0x2199, 0x21ab, 0x21b7, - 0x21b7, 0x21c9, 0x21f4, 0x2212, 0x2212, 0x222a, 0x2233, 0x224c, - // Entry 200 - 23F - 0x225e, 0x225e, 0x225e, 0x2273, 0x2288, 0x22a6, 0x22be, 0x22d3, - 0x22e5, 0x2309, 0x2318, 0x2324, 0x2324, 0x2339, 0x2345, 0x235d, - 0x2372, 0x23a2, 0x23b1, 0x23b1, 0x23b1, 0x23c0, 0x23cc, 0x23de, - 0x23ed, 0x23fc, 0x2405, 0x241d, 0x241d, 0x2432, 0x2447, 0x2447, - 0x245f, 0x2483, 0x249b, 0x249b, 0x24ad, 0x24ad, 0x24c5, 0x24c5, - 0x24d7, 0x24e9, 0x24fe, 0x2513, 0x2545, 0x2557, 0x256c, 0x2581, - 0x25b1, 0x25b7, 0x25b7, 0x25b7, 0x25b7, 0x25b7, 0x25c6, 0x25c6, - 0x25d5, 0x25e4, 0x25f6, 0x2602, 0x260e, 0x2623, 0x2623, 0x2635, - // Entry 240 - 27F - 0x2635, 0x2641, 0x2650, 0x2659, 0x266b, 0x267a, 0x267a, 0x2692, - 0x26a7, 0x26d1, 0x26d1, 0x26e3, 0x272d, 0x2739, 0x2769, 0x2775, - 0x27b7, 0x27b7, 0x27e7, 0x2810, 0x2840, 0x2864, 0x288e, 0x28be, - 0x2902, 0x2924, 0x2958, 0x2958, 0x2978, 0x2978, 0x2997, 0x29a9, - 0x29dd, 0x2a08, 0x2a1d, 0x2a3c, 0x2a61, 0x2a88, 0x2ab2, -} // Size: 1254 bytes - -const ltLangStr string = "" + // Size: 5975 bytes - "afarųabchazųavestųafrikanųakanųamharųaragonesųarabųasamųavarikųaimarųaze" + - "rbaidžaniečiųbaškirųbaltarusiųbulgarųbislamabambarųbengalųtibetiečiųbret" + - "onųbosniųkatalonųčečėnųčamorųkorsikiečiųkryčekųbažnytinė slavųčiuvašųval" + - "ųdanųvokiečiųdivehųbotijųeviųgraikųanglųesperantoispanųestųbaskųpersųfu" + - "lahųsuomiųfidžiųfarerųprancūzųvakarų fryzųairiųškotų (gėlų)galisųgvarani" + - "ųgudžaratųmeniečiųhausųhebrajųhindihiri motukroatųHaičiovengrųarmėnųher" + - "erųtarpinėindoneziečiųinterkalbaigbųsičuan jiinupiakųidoislandųitalųinuk" + - "itutjaponųjaviečiųgruzinųKongokikujųkuaniamakazachųkalalisutkhmerųkanadų" + - "korėjiečiųkanuriųkašmyrųkurdųkomikornųkirgizųlotynųliuksemburgiečiųganda" + - "limburgiečiųngalųlaosiečiųlietuviųluba katangalatviųmalagasųMaršalo Salų" + - "maoriųmakedonųmalajaliųmongolųmaratųmalajiečiųmaltiečiųbirmiečiųnaurųšia" + - "urės ndebelųnepaliečiųndongųolandųnaujoji norvegųnorvegų bukmolaspietų n" + - "debelenavajųnianjųočitarųojibvaoromųodijųosetinųpendžabųpalilenkųpuštūnų" + - "portugalųkečujųretoromanųrundirumunųrusųkinjaruandųsanskritassardiniečių" + - "sindųšiaurės samiųsangosinhalųslovakųslovėnųSamoašonųsomaliečiųalbanųser" + - "bųsvatųpietų Sotosundųšvedųsuahiliųtamilųtelugųtadžikųtajųtigrajųturkmėn" + - "ųtsvanųtonganųturkųtsongųtotoriųtaitiečiųuigūrųukrainiečiųurdųuzbekųven" + - "dųvietnamiečiųvolapiukovalonųvolofųkosųjidišjorubųchuangkinųzulųačinezųa" + - "koliųadangmųadygėjųTuniso arabųafrihiliaghemųainųakadianųalabamiečiųaleu" + - "tųalbanų kalbos gegų tarmėpietų Altajaussenoji anglųangikųaramaikųmapudu" + - "ngunųaraonųarapahųAlžyro arabųaravakųMaroko arabųEgipto arabųasuAmerikos" + - " ženklų kalbaasturianųkotavaavadhibalučibaliečiųbavarųbasųbamunųbatak to" + - "baghomalųbėjųbembųbetavibenųbafutųbadagavakarų beludžiųbaučpuribikolųbin" + - "ibandžarųkomųsiksikųbišnuprijosbakhtiaribrajųbrahujųbodoakūsųburiatųbugi" + - "nezųbulublinmedumbųkadokaribųkaijūgųatsamųsebuanųčigųčibčųčagatųčukesųma" + - "riųčinuk žargonasčoktaučipvėjųčerokiųčajenųsoranių kurdųkoptųcapiznonKry" + - "mo turkųSeišelių kreolų ir prancūzųkašubųdakotųdargvataitųdelaveroslaved" + - "ogribųdinkųzarmųdogrižemutinių sorbųcentrinio DusunodualųVidurio Vokieti" + - "josdžiola-fonidyulųdazagųembuefikitalų kalbos Emilijos tarmėsenovės egip" + - "tiečiųekajukelamitųVidurio Anglijoscentrinės Aliaskos jupikųevondoispanų" + - " kalbos Ekstremadūros tarmėfangųfilipiniečiųsuomių kalbos Tornedalio tar" + - "mėfonkadžunų prancūzųVidurio Prancūzijossenoji prancūzųarpitanošiaurinių" + - " fryzųrytų fryzųfriuliųgagagaūzųkinų kalbos dziangsi tarmėgajogbajazoroa" + - "strų darigyzkiribatigilakiVidurio Aukštosios Vokietijossenoji Aukštosios" + - " VokietijosGoa konkaniųgondigorontalogotųgrebosenovės graikųŠveicarijos " + - "vokiečiųvajųfrafragusigvičinohaidokinų kalbos hakų tarmėhavajiečiųFidžio" + - " hindihiligainonųhititųhmongaukštutinių sorbųkinų kalbos hunano tarmėhup" + - "aibanibibijųilokųingušųingrųJamaikos kreolų anglųloibanngombųmačamųjudėj" + - "ų persųjudėjų arabųdanų kalbos jutų tarmėkarakalpakųkebailųkačinųjukemb" + - "ųkaviųkabardinųkanembųtyapmakondųŽaliojo Kyšulio kreolųkenyangkorokaing" + - "angkasikotanezųkojra činikhovarųkirmanjkikakokalenjinųkimbundukomių-perm" + - "iųkonkaniųkosreanųkpeliųkaračiajų balkarijoskriokinaray-akarelųkurukšamb" + - "alųbafųkolognųkumikųkutenailadinolangilandalambalezginųnaujoji frankų ka" + - "lbaligūrųlyviųlakotųlombardųmongųLuizianos kreolųloziųšiaurės lurilatgal" + - "iųluba lulualuisenoLundosluomizolujaklasikinė kinųlazmadurezųmafųmagahim" + - "aithiliMakasaromandingųmasajųmabųmokšamandarųmendemerųmorisijųVidurio Ai" + - "rijosmakua-maetometamikmakųminangkabaumančumanipuriųmohokmosivakarų mari" + - "mundangųkelios kalboskrykųmirandezųmarvarimentavaimjenųerzyjųmazenderani" + - "ųkinų kalbos pietų minų tarmėneapoliečiųnamaŽemutinės Vokietijosnevarin" + - "iasniujiečiųao nagakvasiųngiembūnųnogųsenoji norsųnovialenkošiaurės Soto" + - "nuerųklasikinė nevariniamveziniankolųniorųnzimaosageosmanų turkųpangasin" + - "anųvidurinė persų kalbapampangųpapiamentopalauliečiųpikardųNigerijos pid" + - "žinųPensilvanijos vokiečiųvokiečių kalbos žemaičių tarmėsenoji persųvok" + - "iečių kalbos Pfalco tarmėfinikiečiųitalų kalbos Pjemonto tarmėPontoPonap" + - "ėsprūsųsenovės provansalųkičiųČimboraso aukštumų kečujųRadžastanorapanu" + - "irarotonganųitalų kalbos Romanijos tarmėrifųromboromųrotumanųrusinųRovia" + - "nosaromaniųruasandaviųjakutųsamarėjų aramiųsambūrųsasaksantaliųsauraštrų" + - "ngambajųsangųsiciliečiųškotųsasaresų sardinųpietų kurdųsenecųsenųserisel" + - "kupkojraboro senisenoji airiųžemaičiųtachelhitųšanchadian arabųsidamųsil" + - "eziečių žemaičiųselajarųpietų samiųLiuleo samiųInario samiųSkolto samiųs" + - "oninkesogdiensranan tongosererųsahoSaterlendo fryzųsukumasusušumerųKomor" + - "ųklasikinė sirųsirųsileziečiųtulųtimnetesoTerenotetumtigretivTokelautsa" + - "kurųklingonųtlingitųtalyšųtamašekniasa tongųPapua pidžinųturoyoTarokotsa" + - "konųtsimšianmusulmonų tatųtumbukųTuvalutasavakųtuviųCentrinio Maroko tam" + - "azitųudmurtųugaritųumbundunežinoma kalbavaivenetųvepsųvakarų flamandųpag" + - "rindinė frankonųVotikveruvunjovalserųvalamovaraiVašovalrpirikinų kalbos " + - "vu tarmėkalmukųmegrelųsogųjaojapezųjangbenųjembųnjengatukinų kalbos Kant" + - "ono tarmėzapotekųBLISS simboliųzelandųzenagastandartinė Maroko tamazigtų" + - "Zuninėra kalbinio turiniozazašiuolaikinė standartinė arabųAustrijos voki" + - "ečiųŠveicarijos aukštutinė vokiečiųAustralijos anglųKanados anglųDidžios" + - "ios Britanijos anglųJungtinių Valstijų anglųLotynų Amerikos ispanųEuropo" + - "s ispanųMeksikos ispanųKanados prancūzųŠveicarijos prancūzųŽemutinės Sak" + - "sonijos (Nyderlandai)flamandųBrazilijos portugalųEuropos portugalųmoldav" + - "ųserbų-kroatųKongo suahiliųsupaprastintoji kinųtradicinė kinų" - -var ltLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0006, 0x000e, 0x0015, 0x001e, 0x0024, 0x002b, 0x0035, - 0x003b, 0x0041, 0x0049, 0x0050, 0x0063, 0x006c, 0x0077, 0x007f, - 0x0086, 0x008e, 0x0096, 0x00a2, 0x00aa, 0x00b1, 0x00ba, 0x00c4, - 0x00cc, 0x00d9, 0x00dc, 0x00e2, 0x00f4, 0x00fe, 0x0103, 0x0108, - 0x0112, 0x0119, 0x0120, 0x0125, 0x012c, 0x0132, 0x013b, 0x0142, - 0x0147, 0x014d, 0x0153, 0x015a, 0x0161, 0x0169, 0x0170, 0x017a, - 0x0188, 0x018e, 0x019e, 0x01a5, 0x01ae, 0x01b9, 0x01c3, 0x01c9, - 0x01d1, 0x01d6, 0x01df, 0x01e6, 0x01ed, 0x01f4, 0x01fc, 0x0203, - // Entry 40 - 7F - 0x020b, 0x0219, 0x0223, 0x0228, 0x0232, 0x023b, 0x023e, 0x0246, - 0x024c, 0x0254, 0x025b, 0x0265, 0x026d, 0x0272, 0x0279, 0x0281, - 0x0289, 0x0292, 0x0299, 0x02a0, 0x02ad, 0x02b5, 0x02be, 0x02c4, - 0x02c8, 0x02ce, 0x02d6, 0x02dd, 0x02ef, 0x02f4, 0x0302, 0x0308, - 0x0313, 0x031c, 0x0328, 0x032f, 0x0338, 0x0346, 0x034d, 0x0356, - 0x0360, 0x0368, 0x036f, 0x037b, 0x0386, 0x0391, 0x0397, 0x03a9, - 0x03b5, 0x03bc, 0x03c3, 0x03d3, 0x03e4, 0x03f2, 0x03f9, 0x0400, - 0x0409, 0x040f, 0x0415, 0x041b, 0x0423, 0x042d, 0x0431, 0x0437, - // Entry 80 - BF - 0x0441, 0x044b, 0x0453, 0x045e, 0x0463, 0x046a, 0x046f, 0x047b, - 0x0485, 0x0492, 0x0498, 0x04a8, 0x04ad, 0x04b5, 0x04bd, 0x04c6, - 0x04cb, 0x04d1, 0x04dd, 0x04e4, 0x04ea, 0x04f0, 0x04fb, 0x0501, - 0x0508, 0x0511, 0x0518, 0x051f, 0x0528, 0x052d, 0x0535, 0x053f, - 0x0546, 0x054e, 0x0554, 0x055b, 0x0563, 0x056e, 0x0576, 0x0583, - 0x0588, 0x058f, 0x0595, 0x05a3, 0x05ac, 0x05b3, 0x05ba, 0x05bf, - 0x05c5, 0x05cc, 0x05d2, 0x05d7, 0x05dc, 0x05e5, 0x05ec, 0x05f4, - 0x05fd, 0x060a, 0x0612, 0x0619, 0x061e, 0x0627, 0x0634, 0x063b, - // Entry C0 - FF - 0x0656, 0x0665, 0x0672, 0x0679, 0x0682, 0x068e, 0x0695, 0x069d, - 0x06ab, 0x06ab, 0x06b3, 0x06c0, 0x06cd, 0x06d0, 0x06e7, 0x06f1, - 0x06f7, 0x06fd, 0x0704, 0x070e, 0x0715, 0x071a, 0x0721, 0x072b, - 0x0733, 0x0739, 0x073f, 0x0745, 0x074a, 0x0751, 0x0757, 0x0769, - 0x0772, 0x0779, 0x077d, 0x0787, 0x078c, 0x0794, 0x07a0, 0x07a9, - 0x07af, 0x07b7, 0x07bb, 0x07c2, 0x07ca, 0x07d3, 0x07d7, 0x07db, - 0x07e3, 0x07e7, 0x07ee, 0x07f7, 0x07fe, 0x07fe, 0x0806, 0x080c, - 0x0814, 0x081c, 0x0824, 0x082a, 0x083a, 0x0841, 0x084b, 0x0854, - // Entry 100 - 13F - 0x085c, 0x086b, 0x0871, 0x0879, 0x0885, 0x08a5, 0x08ad, 0x08b4, - 0x08ba, 0x08c0, 0x08c8, 0x08cd, 0x08d5, 0x08db, 0x08e1, 0x08e6, - 0x08f8, 0x0908, 0x090e, 0x0920, 0x092c, 0x0932, 0x0939, 0x093d, - 0x0941, 0x095e, 0x0973, 0x0979, 0x0981, 0x0991, 0x09ac, 0x09b2, - 0x09d6, 0x09dc, 0x09ea, 0x0a0a, 0x0a0d, 0x0a21, 0x0a35, 0x0a46, - 0x0a4e, 0x0a60, 0x0a6c, 0x0a74, 0x0a76, 0x0a7f, 0x0a9b, 0x0a9f, - 0x0aa4, 0x0ab3, 0x0ab6, 0x0abe, 0x0ac4, 0x0ae2, 0x0aff, 0x0b0c, - 0x0b11, 0x0b1a, 0x0b1f, 0x0b24, 0x0b34, 0x0b4b, 0x0b50, 0x0b56, - // Entry 140 - 17F - 0x0b5a, 0x0b62, 0x0b67, 0x0b80, 0x0b8c, 0x0b99, 0x0ba5, 0x0bac, - 0x0bb1, 0x0bc5, 0x0bdf, 0x0be3, 0x0be7, 0x0bef, 0x0bf5, 0x0bfd, - 0x0c03, 0x0c1a, 0x0c20, 0x0c27, 0x0c2f, 0x0c3e, 0x0c4d, 0x0c66, - 0x0c72, 0x0c7a, 0x0c82, 0x0c84, 0x0c8a, 0x0c90, 0x0c9a, 0x0ca2, - 0x0ca6, 0x0cae, 0x0cc7, 0x0cce, 0x0cd2, 0x0cda, 0x0cde, 0x0ce7, - 0x0cf2, 0x0cfa, 0x0d03, 0x0d07, 0x0d11, 0x0d19, 0x0d27, 0x0d30, - 0x0d39, 0x0d40, 0x0d56, 0x0d5a, 0x0d63, 0x0d6a, 0x0d6f, 0x0d78, - 0x0d7d, 0x0d85, 0x0d8c, 0x0d93, 0x0d99, 0x0d9e, 0x0da3, 0x0da8, - // Entry 180 - 1BF - 0x0db0, 0x0dc5, 0x0dcd, 0x0dd3, 0x0dda, 0x0de3, 0x0de9, 0x0dfa, - 0x0e00, 0x0e0e, 0x0e17, 0x0e21, 0x0e28, 0x0e2e, 0x0e31, 0x0e35, - 0x0e39, 0x0e49, 0x0e4c, 0x0e55, 0x0e5a, 0x0e60, 0x0e68, 0x0e70, - 0x0e79, 0x0e80, 0x0e85, 0x0e8b, 0x0e93, 0x0e98, 0x0e9d, 0x0ea6, - 0x0eb5, 0x0ec0, 0x0ec4, 0x0ecc, 0x0ed7, 0x0edd, 0x0ee7, 0x0eec, - 0x0ef0, 0x0efc, 0x0f05, 0x0f12, 0x0f18, 0x0f22, 0x0f29, 0x0f31, - 0x0f37, 0x0f3e, 0x0f4b, 0x0f6b, 0x0f78, 0x0f7c, 0x0f92, 0x0f98, - 0x0f9c, 0x0fa7, 0x0fae, 0x0fb5, 0x0fc0, 0x0fc5, 0x0fd2, 0x0fd8, - // Entry 1C0 - 1FF - 0x0fdc, 0x0fea, 0x0ff0, 0x1001, 0x1009, 0x1012, 0x1018, 0x101d, - 0x1022, 0x1030, 0x103c, 0x1052, 0x105b, 0x1065, 0x1072, 0x107a, - 0x108d, 0x10a5, 0x10c9, 0x10d6, 0x10f5, 0x1101, 0x111e, 0x1123, - 0x112b, 0x1132, 0x1146, 0x114d, 0x116b, 0x1176, 0x117d, 0x1189, - 0x11a7, 0x11ac, 0x11b1, 0x11b6, 0x11bf, 0x11c6, 0x11ce, 0x11d7, - 0x11da, 0x11e3, 0x11ea, 0x11fc, 0x1205, 0x120a, 0x1213, 0x121e, - 0x1227, 0x122d, 0x1239, 0x1240, 0x1252, 0x125f, 0x1266, 0x126b, - 0x126f, 0x1275, 0x1283, 0x1290, 0x129b, 0x12a6, 0x12aa, 0x12b8, - // Entry 200 - 23F - 0x12bf, 0x12d7, 0x12e0, 0x12ed, 0x12fa, 0x1307, 0x1314, 0x131b, - 0x1322, 0x132e, 0x1335, 0x1339, 0x134a, 0x1350, 0x1354, 0x135c, - 0x1363, 0x1373, 0x1378, 0x1384, 0x1389, 0x138e, 0x1392, 0x1398, - 0x139d, 0x13a2, 0x13a5, 0x13ac, 0x13b4, 0x13bd, 0x13c6, 0x13ce, - 0x13d6, 0x13e2, 0x13f1, 0x13f7, 0x13fd, 0x1405, 0x140e, 0x141e, - 0x1426, 0x142c, 0x1435, 0x143b, 0x1455, 0x145d, 0x1465, 0x146c, - 0x147b, 0x147e, 0x1485, 0x148b, 0x149c, 0x14b1, 0x14b6, 0x14ba, - 0x14bf, 0x14c7, 0x14cd, 0x14d2, 0x14d7, 0x14df, 0x14f5, 0x14fd, - // Entry 240 - 27F - 0x1505, 0x150a, 0x150d, 0x1514, 0x151d, 0x1523, 0x152b, 0x1546, - 0x154f, 0x155e, 0x1566, 0x156c, 0x158a, 0x158e, 0x15a4, 0x15a8, - 0x15c9, 0x15c9, 0x15dd, 0x1601, 0x1613, 0x1621, 0x163e, 0x1659, - 0x1671, 0x1680, 0x1690, 0x1690, 0x16a2, 0x16b9, 0x16dd, 0x16e6, - 0x16fb, 0x170d, 0x1715, 0x1723, 0x1732, 0x1747, 0x1757, -} // Size: 1254 bytes - -const lvLangStr string = "" + // Size: 4185 bytes - "afāruabhāzuavestaafrikanduakanuamharuaragoniešuarābuasamiešuavāruaimarua" + - "zerbaidžāņubaškīrubaltkrievubulgārubišlamābambarubengāļutibetiešubretoņu" + - "bosniešukatalāņučečenučamorrukorsikāņukrīčehubaznīcslāvučuvašuvelsiešudā" + - "ņuvācumaldīviešudzongkeevugrieķuangļuesperantospāņuigauņubaskupersiešuf" + - "ulusomufidžiešufērufrančurietumfrīzuīrugēlugalisiešugvaranugudžaratumeni" + - "ešuhausuivritshindihirimotuhorvātuhaitiešuungāruarmēņuhereruinterlingvai" + - "ndonēziešuinterlingveigboSičuaņas jiinupiakuidoislandiešuitāļuinuītujapā" + - "ņujaviešugruzīnukongukikujukvaņamukazahugrenlandiešukhmerukannadukoreji" + - "ešukanurukašmiriešukurdukomiešukorniešukirgīzulatīņuluksemburgiešugandul" + - "imburgiešulingalalaosiešulietuviešulubakatangalatviešumalagasumāršaliešu" + - "maorumaķedoniešumalajalumongoļumarathumalajiešumaltiešubirmiešunauruiešu" + - "ziemeļndebelunepāliešundonguholandiešujaunnorvēģunorvēģu bukmolsdienvidn" + - "debelunavahučičevaoksitāņuodžibvuoromuorijuosetīnupandžabupālipoļupuštup" + - "ortugāļukečvuretoromāņurundurumāņukrievukiņaruandasanskritssardīniešusin" + - "dhuziemeļsāmusangosingāļuslovākuslovēņusamoāņušonusomāļualbāņuserbusvatu" + - "dienvidsotuzunduzviedrusvahilitamilutelugutadžikutajutigrinjaturkmēņucva" + - "nutongiešuturkucongutatārutaitiešuuiguruukraiņuurduuzbekuvenduvjetnamieš" + - "uvolapiksvaloņuvolofukhosujidišsjorubudžuanuķīniešuzuluačinuačoluadangmu" + - "adiguafrihiliaghemuainuakadiešualeutudienvidaltajiešusenangļuangikaarami" + - "ešuaraukāņuarapahuaravakuasuastūriešuavadhubeludžubaliešubasubamumugomal" + - "ubedžubembubenabafuturietumbeludžubhodžpūrubikolubinukomusiksikubradžieš" + - "ubodonkosiburjatubugubulubilinumedumbukadukarībukajugaatsamusebuāņukigač" + - "ibčudžagatajsčūkumariešučinuku žargonsčoktavučipevaianučirokušejenucentr" + - "ālkurdukoptuKrimas tatārukreolu frančukašubudakotudargutaitudelavērusle" + - "ivudogribudinkuzarmudogrulejassorbudualuvidusholandiešudiola-fonjīdiūlud" + - "azukjembuefikuēģiptiešuekadžukuelamiešuvidusangļuevondufangufilipīniešuf" + - "onukadžūnu frančuvidusfrančusenfrančuziemeļfrīzuaustrumfrīzufriūlugagaga" + - "uzugajogbajugēzukiribatiešuvidusaugšvācusenaugšvācugondu valodasgorontal" + - "ugotugrebosengrieķuŠveices vācugusiikučinuhaiduhavajiešuhiligainonuhetuh" + - "monguaugšsorbuhupuibanuibibioilokuingušuložbansjgomačamujūdpersiešujūdar" + - "ābukarakalpakukabilukačinukadžikambukāvikabardiešukaņembukatabumakondek" + - "aboverdiešukorukhasuhotaniešukoiračiinīkakokalendžīnukimbundukomiešu-per" + - "miešukonkanukosrājiešukpellukaračaju un balkārukarēļukuruhušambalubafiju" + - "Ķelnes vācukumikukutenajuladinolangilandulambulezgīnulakotumonguLuiziān" + - "as kreolulozuziemeļlurulubalulvaluisenulunduluolušejuluhjumaduriešumafum" + - "agahiešumaithilimakasarumandingumasajumabumokšumandarumendumeruMaurīcija" + - "s kreoluvidusīrumakuamgomikmakuminangkabavumandžūrumanipūrumohaukumosumu" + - "ndanguvairākas valodaskrīkumirandiešumarvarumjenuerzjumazanderāņuneapoli" + - "ešunamalejasvācunevarunjasuniuāņukvasiongjembūnunogajusennorvēģunkozieme" + - "ļsotunueruklasiskā nevaruņamvezuņankoluņorunzemuvažāžuturku osmaņupanga" + - "sinanupehlevipampanganupapjamentopalaviešupidžinssenpersufeniķiešuponapi" + - "ešuprūšusenprovansiešukičeradžastāņurapanujurarotongiešurombočigānuaromū" + - "nuruandasandavujakutuSamārijas aramiešusamburusasakusantalungambejusangu" + - "sicīliešuskotudienvidkurdusenekusenuselkupukoiraboro sennisenīrušilhušan" + - "uČadas arābusidamudienvidsāmuLuleo sāmuInari sāmuskoltsāmusoninkusogdieš" + - "usranantogoserērusahosukumususušumerukomoruklasiskā sīriešusīriešutemnut" + - "esoterenotetumutigrutivutokelaviešuklingoņutlinkitutuareguNjasas tonguto" + - "kpisinstarokocimšiāņutumbukutuvaliešutasavakutuviešuCentrālmarokas tamaz" + - "ītsudmurtuugaritiešuumbundunezināma valodavajuvotuvundžoVallisas vācuva" + - "lamuvarajuvašovarlpirīkalmikusogujaojapiešujanbaņujembukantoniešusapotek" + - "ublissimbolikazenagustandarta marokāņu berberuzunjubez lingvistiska satu" + - "razazakimūsdienu standarta arābudienvidazerbaidžāņuŠveices augšvāculejas" + - "sakšuflāmumoldāvuserbu–horvātuKongo svahiliķīniešu vienkāršotāķīniešu tr" + - "adicionālā" - -var lvLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0006, 0x000d, 0x0013, 0x001c, 0x0021, 0x0027, 0x0032, - 0x0038, 0x0041, 0x0047, 0x004d, 0x005c, 0x0065, 0x006f, 0x0077, - 0x0080, 0x0087, 0x0090, 0x009a, 0x00a2, 0x00ab, 0x00b5, 0x00bd, - 0x00c5, 0x00d0, 0x00d4, 0x00d9, 0x00e6, 0x00ee, 0x00f7, 0x00fd, - 0x0102, 0x010e, 0x0115, 0x0118, 0x011f, 0x0125, 0x012e, 0x0135, - 0x013c, 0x0141, 0x014a, 0x014e, 0x0152, 0x015c, 0x0161, 0x0168, - 0x0174, 0x0178, 0x017d, 0x0187, 0x018e, 0x0198, 0x01a0, 0x01a5, - 0x01ab, 0x01b0, 0x01b8, 0x01c0, 0x01c9, 0x01d0, 0x01d8, 0x01de, - // Entry 40 - 7F - 0x01e9, 0x01f6, 0x0201, 0x0205, 0x0212, 0x021a, 0x021d, 0x0228, - 0x022f, 0x0236, 0x023e, 0x0246, 0x024e, 0x0253, 0x0259, 0x0261, - 0x0267, 0x0274, 0x027a, 0x0281, 0x028b, 0x0291, 0x029d, 0x02a2, - 0x02aa, 0x02b3, 0x02bb, 0x02c3, 0x02d2, 0x02d7, 0x02e3, 0x02ea, - 0x02f3, 0x02fe, 0x0309, 0x0312, 0x031a, 0x0327, 0x032c, 0x0339, - 0x0341, 0x0349, 0x0350, 0x035a, 0x0363, 0x036c, 0x0376, 0x0384, - 0x038f, 0x0395, 0x03a0, 0x03ad, 0x03be, 0x03cc, 0x03d2, 0x03da, - 0x03e4, 0x03ec, 0x03f1, 0x03f6, 0x03fe, 0x0407, 0x040c, 0x0411, - // Entry 80 - BF - 0x0417, 0x0422, 0x0428, 0x0434, 0x0439, 0x0441, 0x0447, 0x0452, - 0x045b, 0x0467, 0x046d, 0x0479, 0x047e, 0x0487, 0x048f, 0x0498, - 0x04a1, 0x04a6, 0x04ae, 0x04b6, 0x04bb, 0x04c0, 0x04cb, 0x04d0, - 0x04d7, 0x04de, 0x04e4, 0x04ea, 0x04f2, 0x04f6, 0x04fe, 0x0508, - 0x050d, 0x0516, 0x051b, 0x0520, 0x0527, 0x0530, 0x0536, 0x053e, - 0x0542, 0x0548, 0x054d, 0x0559, 0x0561, 0x0568, 0x056e, 0x0573, - 0x057a, 0x0580, 0x0587, 0x0591, 0x0595, 0x059b, 0x05a1, 0x05a8, - 0x05ad, 0x05ad, 0x05b5, 0x05bb, 0x05bf, 0x05c8, 0x05c8, 0x05ce, - // Entry C0 - FF - 0x05ce, 0x05df, 0x05e8, 0x05ee, 0x05f7, 0x0601, 0x0601, 0x0608, - 0x0608, 0x0608, 0x060f, 0x060f, 0x060f, 0x0612, 0x0612, 0x061d, - 0x061d, 0x0623, 0x062b, 0x0633, 0x0633, 0x0637, 0x063d, 0x063d, - 0x0643, 0x0649, 0x064e, 0x064e, 0x0652, 0x0658, 0x0658, 0x0666, - 0x0671, 0x0677, 0x067b, 0x067b, 0x067f, 0x0686, 0x0686, 0x0686, - 0x0691, 0x0691, 0x0695, 0x069a, 0x06a1, 0x06a5, 0x06a9, 0x06af, - 0x06b6, 0x06ba, 0x06c1, 0x06c7, 0x06cd, 0x06cd, 0x06d6, 0x06da, - 0x06e1, 0x06eb, 0x06f1, 0x06f9, 0x0709, 0x0711, 0x071c, 0x0723, - // Entry 100 - 13F - 0x072a, 0x0737, 0x073c, 0x073c, 0x074a, 0x0758, 0x075f, 0x0765, - 0x076a, 0x076f, 0x0778, 0x077e, 0x0785, 0x078a, 0x078f, 0x0794, - 0x079e, 0x079e, 0x07a3, 0x07b3, 0x07bf, 0x07c5, 0x07c9, 0x07cf, - 0x07d4, 0x07d4, 0x07e0, 0x07e9, 0x07f2, 0x07fd, 0x07fd, 0x0803, - 0x0803, 0x0808, 0x0815, 0x0815, 0x0819, 0x082a, 0x0836, 0x0840, - 0x0840, 0x084d, 0x085a, 0x0861, 0x0863, 0x086a, 0x086a, 0x086e, - 0x0873, 0x0873, 0x0878, 0x0884, 0x0884, 0x0893, 0x08a0, 0x08a0, - 0x08ad, 0x08b6, 0x08ba, 0x08bf, 0x08c9, 0x08d7, 0x08d7, 0x08d7, - // Entry 140 - 17F - 0x08dc, 0x08e3, 0x08e8, 0x08e8, 0x08f2, 0x08f2, 0x08fd, 0x0901, - 0x0907, 0x0911, 0x0911, 0x0915, 0x091a, 0x0920, 0x0925, 0x092c, - 0x092c, 0x092c, 0x0934, 0x0937, 0x093e, 0x094b, 0x0955, 0x0955, - 0x0960, 0x0966, 0x096d, 0x0973, 0x0978, 0x097d, 0x0988, 0x0990, - 0x0996, 0x099d, 0x09aa, 0x09aa, 0x09ae, 0x09ae, 0x09b3, 0x09bd, - 0x09c9, 0x09c9, 0x09c9, 0x09cd, 0x09d9, 0x09e1, 0x09f3, 0x09fa, - 0x0a06, 0x0a0c, 0x0a21, 0x0a21, 0x0a21, 0x0a29, 0x0a2f, 0x0a37, - 0x0a3d, 0x0a4a, 0x0a50, 0x0a58, 0x0a5e, 0x0a63, 0x0a68, 0x0a6d, - // Entry 180 - 1BF - 0x0a75, 0x0a75, 0x0a75, 0x0a75, 0x0a7b, 0x0a7b, 0x0a80, 0x0a91, - 0x0a95, 0x0aa0, 0x0aa0, 0x0aa9, 0x0ab0, 0x0ab5, 0x0ab8, 0x0abf, - 0x0ac4, 0x0ac4, 0x0ac4, 0x0ace, 0x0ad2, 0x0adc, 0x0ae4, 0x0aec, - 0x0af4, 0x0afa, 0x0afe, 0x0b04, 0x0b0b, 0x0b10, 0x0b14, 0x0b26, - 0x0b2f, 0x0b34, 0x0b37, 0x0b3e, 0x0b4a, 0x0b54, 0x0b5d, 0x0b64, - 0x0b68, 0x0b68, 0x0b70, 0x0b81, 0x0b87, 0x0b92, 0x0b99, 0x0b99, - 0x0b9e, 0x0ba3, 0x0bb0, 0x0bb0, 0x0bbb, 0x0bbf, 0x0bc9, 0x0bcf, - 0x0bd4, 0x0bdc, 0x0bdc, 0x0be2, 0x0bec, 0x0bf2, 0x0bfe, 0x0bfe, - // Entry 1C0 - 1FF - 0x0c01, 0x0c0c, 0x0c11, 0x0c21, 0x0c29, 0x0c31, 0x0c36, 0x0c3b, - 0x0c44, 0x0c51, 0x0c5c, 0x0c63, 0x0c6d, 0x0c77, 0x0c81, 0x0c81, - 0x0c89, 0x0c89, 0x0c89, 0x0c91, 0x0c91, 0x0c9c, 0x0c9c, 0x0c9c, - 0x0ca6, 0x0cad, 0x0cbc, 0x0cc1, 0x0cc1, 0x0cce, 0x0cd6, 0x0ce3, - 0x0ce3, 0x0ce3, 0x0ce8, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf0, 0x0cf8, - 0x0cfe, 0x0d05, 0x0d0b, 0x0d1f, 0x0d26, 0x0d2c, 0x0d33, 0x0d33, - 0x0d3b, 0x0d40, 0x0d4b, 0x0d50, 0x0d50, 0x0d5c, 0x0d62, 0x0d66, - 0x0d66, 0x0d6d, 0x0d7c, 0x0d83, 0x0d83, 0x0d89, 0x0d8e, 0x0d9b, - // Entry 200 - 23F - 0x0da1, 0x0da1, 0x0da1, 0x0dad, 0x0db8, 0x0dc3, 0x0dcd, 0x0dd4, - 0x0ddd, 0x0de7, 0x0dee, 0x0df2, 0x0df2, 0x0df8, 0x0dfc, 0x0e03, - 0x0e09, 0x0e1c, 0x0e25, 0x0e25, 0x0e25, 0x0e2a, 0x0e2e, 0x0e34, - 0x0e3a, 0x0e3f, 0x0e43, 0x0e4f, 0x0e4f, 0x0e58, 0x0e60, 0x0e60, - 0x0e67, 0x0e73, 0x0e7c, 0x0e7c, 0x0e82, 0x0e82, 0x0e8d, 0x0e8d, - 0x0e94, 0x0e9e, 0x0ea6, 0x0eae, 0x0ec7, 0x0ece, 0x0ed9, 0x0ee0, - 0x0ef0, 0x0ef4, 0x0ef4, 0x0ef4, 0x0ef4, 0x0ef4, 0x0ef8, 0x0ef8, - 0x0eff, 0x0f0d, 0x0f13, 0x0f19, 0x0f1e, 0x0f27, 0x0f27, 0x0f2e, - // Entry 240 - 27F - 0x0f2e, 0x0f32, 0x0f35, 0x0f3d, 0x0f45, 0x0f4a, 0x0f4a, 0x0f55, - 0x0f5d, 0x0f6a, 0x0f6a, 0x0f70, 0x0f8c, 0x0f91, 0x0fa8, 0x0fae, - 0x0fc8, 0x0fde, 0x0fde, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, - 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ff1, 0x0ffc, 0x1002, - 0x1002, 0x1002, 0x100a, 0x101a, 0x1027, 0x1040, 0x1059, -} // Size: 1254 bytes - -const mkLangStr string = "" + // Size: 10580 bytes - "афарскиапхаскиавестанскиафрикансаканскиамхарскиарагонскиарапскиасамскиав" + - "арскиајмарскиазербејџанскибашкирскибелорускибугарскибисламабамбарабенга" + - "лскитибетскибретонскибосанскикаталонскичеченскичаморскикорзиканскикриче" + - "шкицрковнословенскичувашкивелшкиданскигерманскидивехиѕонгкаевегрчкиангл" + - "искиесперантошпанскиестонскибаскискиперсискифулафинскифиџискифарскифран" + - "цускизападнофризискиирскишкотски гелскигалицискигваранскигуџаратиманксх" + - "аусахебрејскихиндихири мотухрватскихаитскиунгарскиерменскихерероинтерли" + - "нгваиндонезискиокциденталигбосичуан јиинупијачкиидоисландскииталијански" + - "инуктитутјапонскијаванскигрузискиконгокикујуквањамаказашкикалалисуткмер" + - "скиканнадакорејскиканурикашмирскикурдскикомикорнскикиргискилатинскилукс" + - "ембуршкигандалимбуршкилингалалаошкилитванскилуба-катангалатвискималгашк" + - "имаршалскимаорскимакедонскималајамскимонголскимаратималајскималтешкибур" + - "манскинауруанскисеверен ндебеленепалскиндонгахоландскинорвешки нинорскн" + - "орвешки букмолјужен ндебеленавахоњанџаокситанскиоџибваоромоодијаосетски" + - "пенџапскипалиполскипаштунскипортугалскикечуанскиретороманскирундироманс" + - "кирускируандскисанскритсардинскисиндисеверен самисангосинхалскисловачки" + - "словенечкисамоанскишонасомалискиалбанскисрпскисватисесотосундскишведски" + - "свахилитамилскителугутаџикистанскитајландскитигрињатуркменскицванатонга" + - "јскитурскицонгататарскитахитскиујгурскиукраинскиурдуузбечкивендавиетнам" + - "скиволапиквалонскиволофскикосајидишјорупскиџуаншкикинескизулуачешкиакол" + - "иадангмеадигејскитуниски арапскиафрихилиагемскиајнуакадскиалабамскиалеу" + - "тскигешки албанскијужноалтајскистароанглискиангикаарамејскимапучкиараон" + - "аарапахоалжирски арапскиаравачкимарокански арапскиегипетски арапскиасуа" + - "мерикански знаковен јазикастурскикотаваавадибелуџискибалискибаварскибас" + - "абамунскитобагомалабеџабембабетавскибенабафутбадагазападен балочибоџпур" + - "ибиколскибинибанџарскикомсиксикабишнупријабахтијарскибрајбрахујскибодоа" + - "косебурјатскибугискибулубиленскимедумбакадокарипскикајугаацамсебуанскич" + - "игачибчачагатајскичучкимарискичинучки жаргончоктавскичипевјанскичерокис" + - "кичејенскицентралнокурдскикоптскикапизнонкримскотурскифранцуски (Сеселв" + - "а креоли)кашупскидакотадаргватаитаделаверслејвидогрипскидинказармадогри" + - "долнолужичкидусунскидуаласреднохоландскијола-фоњиџуладазагаембуефикемил" + - "ијанскистароегипетскиекаџукеламскисредноанглискицентралнојупичкиевондое" + - "кстремадурскифангфилипинскитурнедаленски финскифонкаџунски францускисре" + - "днофранцускистарофранцускифранкопровансалскисевернофризискиисточнофризи" + - "скифурланскигагагаускигангајогбајазороастриски даригизгилбертанскигилан" + - "скисредногорногерманскистарогорногерманскигоански конканигондигоронтало" + - "готскигребостарогрчкишвајцарски германскигвахирофарефарегусигвичинскиха" + - "јдахакахавајскифиџиски хиндихилигајнонскихетитскихмонггорнолужичкисјанг" + - "хупаибанибибиоилоканскиингушкиижорскијамајски креолскиложбаннгомбамачам" + - "ееврејскоперсискиеврејскоарапскијитскикаракалпачкикабилскикачинскикаџек" + - "амбакавикабардинскиканембутјапмакондекабувердианукењангкорокаинганшкика" + - "сихотанскикојра чииниковарскизазакикакокаленџинкимбундукоми-пермјачкико" + - "нканикозрејскикпелекарачаевско-балкарскикриокинарајскикарелскикурухшамб" + - "алабафијаколоњскикумичкикутенајскиладинолангиландаламбалезгинскилингва " + - "франка новалигурскиливонскилакотскиломбардискимонголуизијански креолски" + - "лозисевернолурискилатгалскилуба-лулуалујсењскилундалуомизолујакнижевен " + - "кинескиласкимадурскимафамагахимаитилимакасарскимандингомасајскимабамокш" + - "анскимандарскимендемеруморисјенсредноирскимакува-митометамикмакминангка" + - "бауманџурскиманипурскимохавскимосизападномарискимундангповеќе јазицикри" + - "кмирандскимарваримјенеерзјанскимазендеранскијужноминскинеаполскинамадол" + - "ногерманскиневарскинијасниујескиао нагаквазионгиембунногајскистаронорди" + - "скиновијалнкосеверносотскинуеркласичен неварскињамвезињанколењоронзимао" + - "сашкиотомански турскипангасинанскисредноперсискипампангапапијаментопала" + - "уанскипикардскинигериски пиџинпенсилваниски германскименонитски долноге" + - "рманскистароперсискифалечкогерманскифеникискипиемонтскипонтскипонпејски" + - "прускистаропровансалскикичекичванскираџастанскирапанујскираротонганскир" + - "омањолскирифскиромборомскиротуманскирусинскировијанскивлашкируасандавеј" + - "акутскисамарјански арамејскисамбурусасачкисанталисаураштрангембејсангус" + - "ицилијанскишкотски германскисасарски сардинскијужнокурдскисенекасенасер" + - "иселкупскикојраборо сенистароирскисамогитскитачелхитшанчадски арапскиси" + - "дамодолношлезискиселајарскијужен самилуле самиинари самисколт самисонин" + - "кезогдијанскисрански тонгосерерсахозатерландски фризискисукумасусусумер" + - "скикоморијанскикласичен сирискисирискишлезискитулутимнетесотеренотетумт" + - "игретивтокелауанскицахурскиклингонскитлингитталишкитамашекњаса тонгаток" + - " писинтуројотарокоцаконскицимшијанскитатскитумбукатувалуанскитазавактува" + - "нскицентралноатлански тамазитскиудмуртскиугаритскиумбундунепознат јазик" + - "вајвенетскивепшкизападнофламанскимајнскофранконскивотскивирувунџовалсер" + - "воламоварајскивашоварлпиривукалмичкимегрелскисогајаојапскијенгбенјембањ" + - "енгатукантонскизапотечкиблиссимболизеландскизенагастандарден марокански" + - " тамазитскизунибез лингвистичка содржиназазалитературен арапскиавстриски" + - " германскишвајцарски високо-германскиавстралиски англискиканадски англис" + - "кибритански англискиамерикански англискилатиноамерикански шпанскишпанск" + - "и (во Европа)мексикански шпанскиканадски францускишвајцарски францускид" + - "олносаксонскифламанскибразилски португалскипортугалски (во Европа)молда" + - "вскисрпскохрватскиконгоански свахилипоедноставен кинескитрадиционален к" + - "инески" - -var mkLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x004e, 0x005e, 0x0070, - 0x007e, 0x008c, 0x009a, 0x00aa, 0x00c4, 0x00d6, 0x00e8, 0x00f8, - 0x0106, 0x0114, 0x0126, 0x0136, 0x0148, 0x0158, 0x016c, 0x017c, - 0x018c, 0x01a2, 0x01a8, 0x01b2, 0x01d2, 0x01e0, 0x01ec, 0x01f8, - 0x020a, 0x0216, 0x0222, 0x0228, 0x0232, 0x0242, 0x0254, 0x0262, - 0x0272, 0x0282, 0x0292, 0x029a, 0x02a6, 0x02b4, 0x02c0, 0x02d2, - 0x02f0, 0x02fa, 0x0315, 0x0327, 0x0339, 0x0349, 0x0353, 0x035d, - 0x036f, 0x0379, 0x038a, 0x039a, 0x03a8, 0x03b8, 0x03c8, 0x03d4, - // Entry 40 - 7F - 0x03ea, 0x0400, 0x0414, 0x041c, 0x042d, 0x0441, 0x0447, 0x0459, - 0x046f, 0x0481, 0x0491, 0x04a1, 0x04b1, 0x04bb, 0x04c7, 0x04d5, - 0x04e3, 0x04f5, 0x0503, 0x0511, 0x0521, 0x052d, 0x053f, 0x054d, - 0x0555, 0x0563, 0x0573, 0x0583, 0x059b, 0x05a5, 0x05b7, 0x05c5, - 0x05d1, 0x05e3, 0x05fa, 0x060a, 0x061a, 0x062c, 0x063a, 0x064e, - 0x0662, 0x0674, 0x0680, 0x0690, 0x06a0, 0x06b2, 0x06c6, 0x06e3, - 0x06f3, 0x06ff, 0x0711, 0x0730, 0x074d, 0x0766, 0x0772, 0x077c, - 0x0790, 0x079c, 0x07a6, 0x07b0, 0x07be, 0x07d0, 0x07d8, 0x07e4, - // Entry 80 - BF - 0x07f6, 0x080c, 0x081e, 0x0836, 0x0840, 0x0850, 0x085a, 0x086a, - 0x087a, 0x088c, 0x0896, 0x08ad, 0x08b7, 0x08c9, 0x08d9, 0x08ed, - 0x08ff, 0x0907, 0x0919, 0x0929, 0x0935, 0x093f, 0x094b, 0x0959, - 0x0967, 0x0975, 0x0985, 0x0991, 0x09ab, 0x09bf, 0x09cd, 0x09e1, - 0x09eb, 0x09fd, 0x0a09, 0x0a13, 0x0a23, 0x0a33, 0x0a43, 0x0a55, - 0x0a5d, 0x0a6b, 0x0a75, 0x0a89, 0x0a97, 0x0aa7, 0x0ab7, 0x0abf, - 0x0ac9, 0x0ad9, 0x0ae7, 0x0af5, 0x0afd, 0x0b09, 0x0b13, 0x0b21, - 0x0b33, 0x0b50, 0x0b60, 0x0b6e, 0x0b76, 0x0b84, 0x0b96, 0x0ba6, - // Entry C0 - FF - 0x0bc1, 0x0bdb, 0x0bf5, 0x0c01, 0x0c13, 0x0c21, 0x0c2d, 0x0c3b, - 0x0c5a, 0x0c5a, 0x0c6a, 0x0c8d, 0x0cae, 0x0cb4, 0x0ce6, 0x0cf6, - 0x0d02, 0x0d0c, 0x0d1e, 0x0d2c, 0x0d3c, 0x0d44, 0x0d54, 0x0d5c, - 0x0d68, 0x0d70, 0x0d7a, 0x0d8a, 0x0d92, 0x0d9c, 0x0da8, 0x0dc3, - 0x0dd1, 0x0de1, 0x0de9, 0x0dfb, 0x0e01, 0x0e0f, 0x0e23, 0x0e39, - 0x0e41, 0x0e53, 0x0e5b, 0x0e65, 0x0e77, 0x0e85, 0x0e8d, 0x0e9d, - 0x0eab, 0x0eb3, 0x0ec3, 0x0ecf, 0x0ed7, 0x0ed7, 0x0ee9, 0x0ef1, - 0x0efb, 0x0f0f, 0x0f19, 0x0f27, 0x0f42, 0x0f54, 0x0f6a, 0x0f7c, - // Entry 100 - 13F - 0x0f8c, 0x0fac, 0x0fba, 0x0fca, 0x0fe4, 0x1014, 0x1024, 0x1030, - 0x103c, 0x1046, 0x1054, 0x1060, 0x1072, 0x107c, 0x1086, 0x1090, - 0x10a8, 0x10b8, 0x10c2, 0x10e0, 0x10f1, 0x10f9, 0x1105, 0x110d, - 0x1115, 0x112b, 0x1147, 0x1153, 0x1161, 0x117d, 0x119d, 0x11a9, - 0x11c5, 0x11cd, 0x11e1, 0x1208, 0x120e, 0x1231, 0x124f, 0x126b, - 0x128f, 0x12ad, 0x12cb, 0x12dd, 0x12e1, 0x12f1, 0x12f7, 0x12ff, - 0x1309, 0x132a, 0x1330, 0x1348, 0x1358, 0x1380, 0x13a6, 0x13c3, - 0x13cd, 0x13df, 0x13eb, 0x13f5, 0x1409, 0x1430, 0x143e, 0x144e, - // Entry 140 - 17F - 0x1456, 0x1468, 0x1472, 0x147a, 0x148a, 0x14a3, 0x14bd, 0x14cd, - 0x14d7, 0x14ef, 0x14f9, 0x1501, 0x1509, 0x1515, 0x1527, 0x1535, - 0x1543, 0x1564, 0x1570, 0x157c, 0x1588, 0x15a8, 0x15c6, 0x15d2, - 0x15ea, 0x15fa, 0x160a, 0x1612, 0x161c, 0x1624, 0x163a, 0x1648, - 0x1650, 0x165e, 0x1676, 0x1682, 0x168a, 0x169e, 0x16a6, 0x16b6, - 0x16cb, 0x16db, 0x16e7, 0x16ef, 0x16ff, 0x170f, 0x172a, 0x1738, - 0x174a, 0x1754, 0x177d, 0x1785, 0x1799, 0x17a9, 0x17b3, 0x17c1, - 0x17cd, 0x17dd, 0x17eb, 0x17ff, 0x180b, 0x1815, 0x181f, 0x1829, - // Entry 180 - 1BF - 0x183b, 0x185d, 0x186d, 0x187d, 0x188d, 0x18a3, 0x18ad, 0x18d4, - 0x18dc, 0x18f8, 0x190a, 0x191d, 0x192f, 0x1939, 0x193f, 0x1947, - 0x194f, 0x196e, 0x1978, 0x1988, 0x1990, 0x199c, 0x19aa, 0x19be, - 0x19ce, 0x19de, 0x19e6, 0x19f8, 0x1a0a, 0x1a14, 0x1a1c, 0x1a2c, - 0x1a42, 0x1a57, 0x1a5f, 0x1a6b, 0x1a81, 0x1a93, 0x1aa7, 0x1ab7, - 0x1abf, 0x1adb, 0x1ae9, 0x1b02, 0x1b0a, 0x1b1c, 0x1b2a, 0x1b2a, - 0x1b34, 0x1b46, 0x1b60, 0x1b76, 0x1b88, 0x1b90, 0x1bac, 0x1bbc, - 0x1bc6, 0x1bd6, 0x1be3, 0x1bef, 0x1bff, 0x1c0f, 0x1c29, 0x1c37, - // Entry 1C0 - 1FF - 0x1c3d, 0x1c57, 0x1c5f, 0x1c80, 0x1c8e, 0x1c9c, 0x1ca4, 0x1cae, - 0x1cba, 0x1cd9, 0x1cf3, 0x1d0f, 0x1d1f, 0x1d35, 0x1d49, 0x1d5b, - 0x1d78, 0x1da5, 0x1dd6, 0x1df0, 0x1e10, 0x1e22, 0x1e36, 0x1e44, - 0x1e56, 0x1e62, 0x1e84, 0x1e8c, 0x1e9e, 0x1eb4, 0x1ec8, 0x1ee2, - 0x1ef6, 0x1f02, 0x1f0c, 0x1f18, 0x1f2c, 0x1f3c, 0x1f50, 0x1f5c, - 0x1f62, 0x1f70, 0x1f80, 0x1fa9, 0x1fb7, 0x1fc5, 0x1fd3, 0x1fe5, - 0x1ff3, 0x1ffd, 0x2015, 0x2036, 0x2059, 0x2071, 0x207d, 0x2085, - 0x208d, 0x209f, 0x20ba, 0x20ce, 0x20e2, 0x20f2, 0x20f8, 0x2113, - // Entry 200 - 23F - 0x211f, 0x2139, 0x214d, 0x2160, 0x2171, 0x2184, 0x2197, 0x21a5, - 0x21bb, 0x21d4, 0x21de, 0x21e6, 0x220f, 0x221b, 0x2223, 0x2233, - 0x224b, 0x226a, 0x2278, 0x2288, 0x2290, 0x229a, 0x22a2, 0x22ae, - 0x22b8, 0x22c2, 0x22c8, 0x22e0, 0x22f0, 0x2304, 0x2312, 0x2320, - 0x232e, 0x2341, 0x2352, 0x235e, 0x236a, 0x237a, 0x2390, 0x239c, - 0x23aa, 0x23c0, 0x23ce, 0x23de, 0x2415, 0x2427, 0x2439, 0x2447, - 0x2462, 0x2468, 0x2478, 0x2484, 0x24a4, 0x24c6, 0x24d2, 0x24da, - 0x24e4, 0x24f0, 0x24fc, 0x250c, 0x2514, 0x2524, 0x2528, 0x2538, - // Entry 240 - 27F - 0x254a, 0x2552, 0x2558, 0x2564, 0x2572, 0x257c, 0x258a, 0x259c, - 0x25ae, 0x25c4, 0x25d6, 0x25e2, 0x2620, 0x2628, 0x2658, 0x2660, - 0x2685, 0x2685, 0x26aa, 0x26de, 0x2705, 0x2726, 0x2749, 0x2770, - 0x27a1, 0x27c3, 0x27e8, 0x27e8, 0x280b, 0x2832, 0x284e, 0x2860, - 0x2889, 0x28b3, 0x28c5, 0x28e1, 0x2904, 0x292b, 0x2954, -} // Size: 1254 bytes - -const mlLangStr string = "" + // Size: 12409 bytes - "അഫാർഅബ്\u200cഖാസിയൻഅവസ്റ്റാൻആഫ്രിക്കാൻസ്അകാൻ\u200cഅംഹാരിക്അരഗോണീസ്അറബിക്" + - "ആസ്സാമീസ്അവാരിക്അയ്മാറഅസർബൈജാനിബഷ്ഖിർബെലാറുഷ്യൻബൾഗേറിയൻബിസ്\u200cലാമബം" + - "ബാറബംഗാളിടിബറ്റൻബ്രെട്ടൺബോസ്നിയൻകറ്റാലാൻചെചൻചമോറോകോർസിക്കൻക്രീചെക്ക്ചർ" + - "ച്ച് സ്ലാവിക്ചുവാഷ്വെൽഷ്ഡാനിഷ്ജർമ്മൻദിവെഹിസോങ്കയൂവ്ഗ്രീക്ക്ഇംഗ്ലീഷ്എസ്" + - "\u200cപരാന്റോസ്\u200cപാനിഷ്എസ്റ്റോണിയൻബാസ്\u200cക്പേർഷ്യൻഫുലഫിന്നിഷ്ഫിജി" + - "യൻഫാറോസ്ഫ്രഞ്ച്പശ്ചിമ ഫ്രിഷിയൻഐറിഷ്സ്കോട്ടിഷ് ഗൈലിക്ഗലീഷ്യൻഗ്വരനീഗുജറാ" + - "ത്തിമാൻസ്ഹൗസഹീബ്രുഹിന്ദിഹിരി മോതുക്രൊയേഷ്യൻഹെയ്\u200cതിയൻ ക്രിയോൾഹംഗേറ" + - "ിയൻഅർമേനിയൻഹെരേരൊഇന്റർലിംഗ്വഇന്തോനേഷ്യൻഇന്റർലിംഗ്വേഇഗ്ബോഷുവാൻയിഇനുപിയാ" + - "ക്ഇഡോഐസ്\u200cലാൻഡിക്ഇറ്റാലിയൻഇനുക്റ്റിറ്റട്ട്ജാപ്പനീസ്ജാവാനീസ്ജോർജിയൻ" + - "കോംഗോകികൂയുക്വാന്യമകസാഖ്കലാല്ലിസട്ട്ഖമെർകന്നഡകൊറിയൻകനൂറികാശ്\u200cമീരി" + - "കുർദ്ദിഷ്കോമികോർണിഷ്കിർഗിസ്ലാറ്റിൻലക്\u200cസംബർഗിഷ്ഗാണ്ടലിംബർഗിഷ്ലിംഗാ" + - "ലലാവോലിത്വാനിയൻലുബ-കറ്റംഗലാറ്റ്വിയൻമലഗാസിമാർഷല്ലീസ്മവോറിമാസിഡോണിയൻമലയാ" + - "ളംമംഗോളിയൻമറാത്തിമലെയ്മാൾട്ടീസ്ബർമീസ്നൗറുനോർത്ത് ഡെബിൾനേപ്പാളിഡോങ്കഡച്" + - "ച്നോർവീജിയൻ നൈനോർക്\u200cസ്നോർവീജിയൻ ബുക്\u200cമൽദക്ഷിണ നെഡിബിൾനവാജോന്" + - "യൻജഓക്\u200cസിറ്റൻഓജിബ്വാഒറോമോഒഡിയഒസ്സെറ്റിക്പഞ്ചാബിപാലിപോളിഷ്പഷ്" + - "\u200cതോപോർച്ചുഗീസ്ക്വെച്ചുവറൊമാഞ്ച്റുണ്ടിറൊമാനിയൻറഷ്യൻകിന്യാർവാണ്ടസംസ്" + - "\u200cകൃതംസർഡിനിയാൻസിന്ധിവടക്കൻ സമിസാംഗോസിംഹളസ്ലോവാക്സ്ലോവേനിയൻസമോവൻഷോണസ" + - "ോമാലിഅൽബേനിയൻസെർബിയൻസ്വാറ്റിതെക്കൻ സോതോസുണ്ടാനീസ്സ്വീഡിഷ്സ്വാഹിലിതമിഴ്" + - "തെലുങ്ക്താജിക്തായ്ടൈഗ്രിന്യതുർക്\u200cമെൻസ്വാനടോംഗൻടർക്കിഷ്സോംഗടാട്ടർത" + - "ാഹിതിയൻഉയ്ഘുർഉക്രേനിയൻഉറുദുഉസ്\u200cബെക്ക്വെന്ദവിയറ്റ്നാമീസ്വോളാപുക്വല" + - "്ലൂൺവൊളോഫ്ഖോസയിദ്ദിഷ്യൊറൂബാസ്വാംഗ്ചൈനീസ്സുലുഅചിനീസ്അകോലിഅഡാങ്\u200cമിഅ" + - "ഡൈഗേആഫ്രിഹിലിആഘേംഐനുഅക്കാഡിയൻഅലൂട്ട്തെക്കൻ അൾത്തായിപഴയ ഇംഗ്ലീഷ്ആൻഗികഅര" + - "മായമാപുചിഅറാപഹോഅറാവക്ആസുഓസ്\u200cട്രിയൻഅവാധിബലൂചിബാലിനീസ്ബസബാമുൻഘോമാലബ" + - "േജബേംബബെനാബാഫട്ട്പശ്ചിമ ബലൂചിഭോജ്\u200cപുരിബികോൽബിനികോംസിക്സികബ്രജ്ബോഡ" + - "ോഅക്കൂസ്ബുറിയത്ത്ബുഗിനീസ്ബുളുബ്ലിൻമെഡുംബകാഡോകാരിബ്കയൂഗഅറ്റ്സാംസെബുവാനോ" + - "ചിഗചിബ്ചഷാഗതായ്ചൂകീസ്മാരിചിനൂഗ് ജാർഗൺചോക്റ്റാവ്ചിപേവ്യൻഷെരോക്കിഷായാൻസെ" + - "ൻട്രൽ കുർദിഷ്കോപ്റ്റിക്ക്രിമിയൻ ടർക്കിഷ്സെഷൽവ ക്രിയോൾ ഫ്രഞ്ച്കാഷുബിയാൻ" + - "ഡകോട്ടഡർഗ്വാതൈതദെലവേർസ്ലേവ്ഡോഗ്രിബ്ദിൻകസാർമ്മഡോഗ്രിലോവർ സോർബിയൻദ്വാലമദ" + - "്ധ്യ ഡച്ച്യോല-ഫോന്യിദ്വൈലഡാസാഗഎംബുഎഫിക്പ്രാചീന ഈജിപ്ഷ്യൻഎകാജുക്എലാമൈറ്" + - "റ്മദ്ധ്യ ഇംഗ്ലീഷ്എവോൻഡോഫങ്ഫിലിപ്പിനോഫോൻകേജൺ ഫ്രഞ്ച്മദ്ധ്യ ഫ്രഞ്ച്പഴയ ഫ" + - "്രഞ്ച്നോർത്തേൻ ഫ്രിഷ്യൻഈസ്റ്റേൺ ഫ്രിഷ്യൻഫ്രിയുലിയാൻഗാഗാഗൂസ്ഗാൻ ചൈനീസ്ഗ" + - "യൊഗബ്യഗീസ്ഗിൽബർട്ടീസ്മദ്ധ്യ ഉച്ച ജർമൻഓൾഡ് ഹൈ ജർമൻഗോണ്ഡിഗൊറോന്റാലോഗോഥിക" + - "്ക്ഗ്രബൊപുരാതന ഗ്രീക്ക്സ്വിസ് ജർമ്മൻഗുസീഗ്വിച്ചിൻഹൈഡഹാക്ക ചൈനീസ്ഹവായിയ" + - "ൻഹിലിഗയ്നോൺഹിറ്റൈറ്റ്മോങ്അപ്പർ സോർബിയൻഷ്യാങ് ചൈനീസ്ഹൂപഇബാൻഇബീബിയോഇലോകോ" + - "ഇംഗ്വിഷ്ലോജ്ബാൻഗോമ്പമചേംജൂഡിയോ-പേർഷ്യൻജൂഡിയോ-അറബിക്കര-കാൽപ്പക്കബൈൽകാചി" + - "ൻജ്ജുകംബകാവികബർഡിയാൻകനെംബുട്യാപ്മക്കോണ്ടെകബുവെർദിയാനുകോറോഘാസിഘോറ്റാനേസ" + - "േകൊയ്റ ചീനികാകോകലെഞ്ഞിൻകിംബുണ്ടുകോമി-പെർമ്യാക്ക്കൊങ്കണികൊസറേയൻകപെല്ലേക" + - "രചൈ-ബാൽകർകരീലിയൻകുരുഖ്ഷംഭാളബാഫിയകൊളോണിയൻകുമൈക്കുതേനൈലാഡിനോലാംഗിലഹ്" + - "\u200cൻഡലംബലഹ്ഗിയാൻലഗോത്തമോങ്കോലൂസിയാന ക്രിയോൾലൊസിവടക്കൻ ലൂറിലൂബ-ലുലുവലൂ" + - "യിസെനോലുൻഡലുവോമിസോലുയിയമദുരേസേമാഫമഗാഹിമൈഥിലിമകാസർമണ്ഡിൻഗോമസായ്മാബമോക്ഷ" + - "മണ്ഡാർമെൻഡെമേരുമൊറിസിൻമദ്ധ്യ ഐറിഷ്മാഖുവാ-മീത്തോമേത്താമിക്മാക്മിനാങ്കബൗ" + - "മാൻ\u200cചുമണിപ്പൂരിമോഹാക്മൊസ്സിമുന്ദാംഗ്പലഭാഷകൾക്രീക്ക്മിരാൻറസേമർവാരി" + - "മയീൻഏഴ്സ്യമസന്ററാനിമിൻ നാൻ ചൈനീസ്നെപ്പോളിറ്റാൻനാമലോ ജർമൻനേവാരിനിയാസ്ന്" + - "യുവാൻക്വാസിയോഗീംബൂൺനോഗൈപഴയ നോഴ്\u200cസ്ഇൻകോനോർത്തേൻ സോതോനുവേർക്ലാസിക്ക" + - "ൽ നേവാരിന്യാംവേസിന്യാൻകോൾന്യോറോസിമഒസേജ്ഓട്ടോമൻ തുർക്കിഷ്പങ്കാസിനൻപാഹ്ല" + - "വിപാംപൻഗപാപിയാമെന്റൊപലാവുൻനൈജീരിയൻ പിഡ്\u200cഗിൻപഴയ പേർഷ്യൻഫീനിഷ്യൻപൊൻ" + - "പിയൻപ്രഷ്യൻപഴയ പ്രൊവൻഷ്ൽക്വിച്ചെരാജസ്ഥാനിരാപനൂയിരാരോടോങ്കൻറോംബോറൊമാനിആ" + - "രോമാനിയൻറുവാസാൻഡവേസാഖസമരിയാക്കാരുടെ അരമായസംബുരുസസാക്സന്താലിഗംബായ്സംഗുസ" + - "ിസിലിയൻസ്കോട്സ്തെക്കൻ കുർദ്ദിഷ്സെനേകസേനസെൽകപ്കൊയ്റാബൊറോ സെന്നിപഴയ ഐറിഷ" + - "്താച്ചലിറ്റ്ഷാൻചാഡിയൻ അറബിസിഡാമോതെക്കൻ സമിലൂലീ സമിഇനാരി സമിസ്കോൾട്ട് സ" + - "മിസോണിൻകെസോജിഡിയൻശ്രാനൻ ഡോങ്കോസെറർസാഹോസുകുമസുസുസുമേരിയൻകൊമോറിയൻപുരാതന " + - "സുറിയാനിഭാഷസുറിയാനിടിംനേടെസോടെറേനോടെറ്റുംടൈഗ്രിടിവ്ടൊക്കേലൗക്ലിംഗോൺലിം" + - "ഗ്വിറ്റ്ടമഷേക്ന്യാസാ ഡോങ്കടോക് പിസിൻതരോക്കോസിംഷ്യൻടുംബുകടുവാലുടസവാക്ക്" + - "തുവിനിയൻമധ്യ അറ്റ്\u200cലസ് ടമാസൈറ്റ്ഉഡ്മുർട്ട്ഉഗറിട്ടിക്ഉംബുന്ദുഅജ്ഞാ" + - "ത ഭാഷവൈവോട്ടിക്വുൻജോവാൾസർവൊലൈറ്റവാരേയ്വാഷൊവൂൾപിരിവു ചൈനീസ്കൽമൈക്സോഗോയാ" + - "വോയെപ്പീസ്യാംഗ്ബെൻയംബകാന്റണീസ്സാപ്പോടെക്ബ്ലിസ്സിംബൽസ്സെനഗസ്റ്റാൻഡേർഡ് " + - "മൊറോക്കൻ റ്റാമസിയറ്റ്സുനിഭാഷാപരമായ ഉള്ളടക്കമൊന്നുമില്ലസാസാആധുനിക സ്റ്റ" + - "ാൻഡേർഡ് അറബിക്ഓസ്\u200cട്രിയൻ ജർമൻസ്വിസ് ഹൈ ജർമൻഓസ്\u200cട്രേലിയൻ ഇംഗ്" + - "ലീഷ്കനേഡിയൻ ഇംഗ്ലീഷ്ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്അമേരിക്കൻ ഇംഗ്ലീഷ്ലാറ്റിൻ അമേരി" + - "ക്കൻ സ്\u200cപാനിഷ്യൂറോപ്യൻ സ്\u200cപാനിഷ്മെക്സിക്കൻ സ്പാനിഷ്കനേഡിയൻ ഫ" + - "്രഞ്ച്സ്വിസ് ഫ്രഞ്ച്ലോ സാക്സൺഫ്ലമിഷ്ബ്രസീലിയൻ പോർച്ചുഗീസ്യൂറോപ്യൻ പോർച" + - "്ചുഗീസ്മോൾഡാവിയൻസെർബോ-ക്രൊയേഷ്യൻകോംഗോ സ്വാഹിലിലളിതമാക്കിയ ചൈനീസ്പരമ്പര" + - "ാഗത ചൈനീസ്" - -var mlLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x002a, 0x0045, 0x0069, 0x0078, 0x0090, 0x00a8, - 0x00ba, 0x00d5, 0x00ea, 0x00fc, 0x0117, 0x0129, 0x0147, 0x015f, - 0x0177, 0x0186, 0x0198, 0x01ad, 0x01c5, 0x01dd, 0x01f5, 0x0201, - 0x0210, 0x022b, 0x0237, 0x0249, 0x0274, 0x0286, 0x0295, 0x02a7, - 0x02b9, 0x02cb, 0x02da, 0x02e6, 0x02fe, 0x0316, 0x0337, 0x0352, - 0x0373, 0x0388, 0x039d, 0x03a6, 0x03be, 0x03d0, 0x03e2, 0x03f7, - 0x0422, 0x0431, 0x0462, 0x0477, 0x0489, 0x04a4, 0x04b3, 0x04bc, - 0x04ce, 0x04e0, 0x04f9, 0x0517, 0x0548, 0x0560, 0x0578, 0x058a, - // Entry 40 - 7F - 0x05ab, 0x05cc, 0x05f0, 0x05ff, 0x0614, 0x062f, 0x0638, 0x0659, - 0x0674, 0x06a4, 0x06bf, 0x06d7, 0x06ec, 0x06fb, 0x070d, 0x0725, - 0x0734, 0x0758, 0x0764, 0x0773, 0x0785, 0x0794, 0x07af, 0x07ca, - 0x07d6, 0x07eb, 0x0800, 0x0815, 0x0839, 0x0848, 0x0863, 0x0875, - 0x0881, 0x089f, 0x08bb, 0x08d9, 0x08eb, 0x0909, 0x0918, 0x0936, - 0x0948, 0x0960, 0x0975, 0x0984, 0x099f, 0x09b1, 0x09bd, 0x09e2, - 0x09fa, 0x0a09, 0x0a18, 0x0a52, 0x0a83, 0x0aab, 0x0aba, 0x0ac9, - 0x0ae7, 0x0afc, 0x0b0b, 0x0b17, 0x0b38, 0x0b4d, 0x0b59, 0x0b6b, - // Entry 80 - BF - 0x0b7d, 0x0b9e, 0x0bb9, 0x0bd1, 0x0be3, 0x0bfb, 0x0c0a, 0x0c2e, - 0x0c49, 0x0c64, 0x0c76, 0x0c92, 0x0ca1, 0x0cb0, 0x0cc8, 0x0ce6, - 0x0cf5, 0x0cfe, 0x0d10, 0x0d28, 0x0d3d, 0x0d55, 0x0d74, 0x0d92, - 0x0daa, 0x0dc2, 0x0dd1, 0x0de9, 0x0dfb, 0x0e07, 0x0e22, 0x0e3d, - 0x0e4c, 0x0e5b, 0x0e73, 0x0e7f, 0x0e91, 0x0ea9, 0x0ebb, 0x0ed6, - 0x0ee5, 0x0f03, 0x0f12, 0x0f39, 0x0f51, 0x0f63, 0x0f75, 0x0f7e, - 0x0f96, 0x0fa8, 0x0fbd, 0x0fcf, 0x0fdb, 0x0ff0, 0x0fff, 0x1017, - 0x1026, 0x1026, 0x1041, 0x104d, 0x1056, 0x1071, 0x1071, 0x1086, - // Entry C0 - FF - 0x1086, 0x10b1, 0x10d3, 0x10e2, 0x10f1, 0x1103, 0x1103, 0x1115, - 0x1115, 0x1115, 0x1127, 0x1127, 0x1127, 0x1130, 0x1130, 0x114e, - 0x114e, 0x115d, 0x116c, 0x1184, 0x1184, 0x118a, 0x1199, 0x1199, - 0x11a8, 0x11b1, 0x11bd, 0x11bd, 0x11c9, 0x11de, 0x11de, 0x1200, - 0x121b, 0x122a, 0x1236, 0x1236, 0x123f, 0x1254, 0x1254, 0x1254, - 0x1263, 0x1263, 0x126f, 0x1284, 0x129f, 0x12b7, 0x12c3, 0x12d2, - 0x12e4, 0x12f0, 0x1302, 0x130e, 0x1326, 0x1326, 0x133e, 0x1347, - 0x1356, 0x136b, 0x137d, 0x1389, 0x13ab, 0x13c9, 0x13e1, 0x13f9, - // Entry 100 - 13F - 0x1408, 0x1433, 0x1451, 0x1451, 0x1482, 0x14bd, 0x14d8, 0x14ea, - 0x14fc, 0x1505, 0x1517, 0x1529, 0x1541, 0x154d, 0x155f, 0x1571, - 0x1593, 0x1593, 0x15a2, 0x15c4, 0x15e0, 0x15ef, 0x15fe, 0x160a, - 0x1619, 0x1619, 0x164a, 0x165f, 0x167a, 0x16a5, 0x16a5, 0x16b7, - 0x16b7, 0x16c0, 0x16de, 0x16de, 0x16e7, 0x1709, 0x1731, 0x1750, - 0x1750, 0x1781, 0x17b2, 0x17d3, 0x17d9, 0x17eb, 0x1807, 0x1810, - 0x181c, 0x181c, 0x1828, 0x1849, 0x1849, 0x1875, 0x1895, 0x1895, - 0x18a7, 0x18c5, 0x18dd, 0x18ec, 0x1917, 0x193c, 0x193c, 0x193c, - // Entry 140 - 17F - 0x1948, 0x1963, 0x196c, 0x198e, 0x19a3, 0x19a3, 0x19c1, 0x19df, - 0x19eb, 0x1a10, 0x1a35, 0x1a3e, 0x1a4a, 0x1a5f, 0x1a6e, 0x1a86, - 0x1a86, 0x1a86, 0x1a9b, 0x1aaa, 0x1ab6, 0x1ade, 0x1b03, 0x1b03, - 0x1b22, 0x1b2e, 0x1b3d, 0x1b49, 0x1b52, 0x1b5e, 0x1b76, 0x1b88, - 0x1b9a, 0x1bb5, 0x1bd9, 0x1bd9, 0x1be5, 0x1be5, 0x1bf1, 0x1c0f, - 0x1c2b, 0x1c2b, 0x1c2b, 0x1c37, 0x1c4f, 0x1c6a, 0x1c98, 0x1cad, - 0x1cc2, 0x1cd7, 0x1cf3, 0x1cf3, 0x1cf3, 0x1d08, 0x1d1a, 0x1d29, - 0x1d38, 0x1d50, 0x1d62, 0x1d74, 0x1d86, 0x1d95, 0x1da7, 0x1db0, - // Entry 180 - 1BF - 0x1dc8, 0x1dc8, 0x1dc8, 0x1dc8, 0x1dda, 0x1dda, 0x1dec, 0x1e17, - 0x1e23, 0x1e42, 0x1e42, 0x1e5b, 0x1e73, 0x1e7f, 0x1e8b, 0x1e97, - 0x1ea6, 0x1ea6, 0x1ea6, 0x1ebb, 0x1ec4, 0x1ed3, 0x1ee5, 0x1ef4, - 0x1f0c, 0x1f1b, 0x1f24, 0x1f33, 0x1f45, 0x1f54, 0x1f60, 0x1f75, - 0x1f97, 0x1fbc, 0x1fce, 0x1fe6, 0x2001, 0x2013, 0x202e, 0x2040, - 0x2052, 0x2052, 0x206d, 0x2082, 0x209a, 0x20b2, 0x20c4, 0x20c4, - 0x20d0, 0x20e2, 0x20fd, 0x2123, 0x214a, 0x2153, 0x2166, 0x2178, - 0x218a, 0x219f, 0x219f, 0x21b7, 0x21c9, 0x21d5, 0x21f4, 0x21f4, - // Entry 1C0 - 1FF - 0x2200, 0x2225, 0x2234, 0x2265, 0x2280, 0x2298, 0x22aa, 0x22b3, - 0x22c2, 0x22f3, 0x230e, 0x2323, 0x2335, 0x2359, 0x236b, 0x236b, - 0x239c, 0x239c, 0x239c, 0x23bb, 0x23bb, 0x23d3, 0x23d3, 0x23d3, - 0x23e8, 0x23fd, 0x2422, 0x243a, 0x243a, 0x2455, 0x246a, 0x2488, - 0x2488, 0x2488, 0x2497, 0x24a9, 0x24a9, 0x24a9, 0x24a9, 0x24c4, - 0x24d0, 0x24e2, 0x24eb, 0x2525, 0x2537, 0x2546, 0x255b, 0x255b, - 0x256d, 0x2579, 0x2591, 0x25a9, 0x25a9, 0x25d7, 0x25e6, 0x25ef, - 0x25ef, 0x2601, 0x2632, 0x264b, 0x264b, 0x266c, 0x2675, 0x2694, - // Entry 200 - 23F - 0x26a6, 0x26a6, 0x26a6, 0x26c2, 0x26d8, 0x26f1, 0x2716, 0x272b, - 0x2743, 0x2768, 0x2774, 0x2780, 0x2780, 0x278f, 0x279b, 0x27b3, - 0x27cb, 0x27ff, 0x2817, 0x2817, 0x2817, 0x2826, 0x2832, 0x2844, - 0x2859, 0x286b, 0x2877, 0x288f, 0x288f, 0x28a7, 0x28c8, 0x28c8, - 0x28da, 0x28fc, 0x2918, 0x2918, 0x292d, 0x292d, 0x2942, 0x2942, - 0x2954, 0x2966, 0x297e, 0x2996, 0x29da, 0x29f8, 0x2a16, 0x2a2e, - 0x2a4a, 0x2a50, 0x2a50, 0x2a50, 0x2a50, 0x2a50, 0x2a68, 0x2a68, - 0x2a77, 0x2a86, 0x2a9b, 0x2aad, 0x2ab9, 0x2ace, 0x2ae7, 0x2af9, - // Entry 240 - 27F - 0x2af9, 0x2b05, 0x2b11, 0x2b29, 0x2b41, 0x2b4a, 0x2b4a, 0x2b65, - 0x2b83, 0x2baa, 0x2baa, 0x2bb6, 0x2c18, 0x2c24, 0x2c79, 0x2c85, - 0x2ccf, 0x2ccf, 0x2cfa, 0x2d20, 0x2d5d, 0x2d8b, 0x2dc2, 0x2df6, - 0x2e43, 0x2e77, 0x2eae, 0x2eae, 0x2ed9, 0x2f01, 0x2f1a, 0x2f2f, - 0x2f6c, 0x2fa6, 0x2fc1, 0x2fef, 0x3017, 0x304b, 0x3079, -} // Size: 1254 bytes - -const mnLangStr string = "" + // Size: 5041 bytes - "афарабхазафрикаканамхарарагонарабассамавараймараазербайжанбашкирбеларусь" + - "болгарбисламбамбарабенгалтөвдбретонбосникаталанчеченьчаморрокорсикчехсү" + - "мийн славянчувашуэльсданигермандивехизонхаэвэгреканглиэсперантоиспаниэс" + - "тонибаскперсфулафинляндфижифарерфранцбаруун фризирландшотландын гелгале" + - "гогуаранигужаратиманксхаусаеврейхиндихорватгаитийн креолунгарарменхерер" + - "оинтерлингвоиндонезинэгдмэл хэлигбосычуань иидоисландиталиинуктитутяпон" + - "явагүржкикуюүкуаньямахасагкалалисуткхмерканнадасолонгосканурикашмиркурд" + - "комикорнкиргизлатинлюксембурггандалимбурглингалалаослитвалуба-катангала" + - "твималагасимаршаллмаоримакедонмалаяламмонголмаратималаймалтабирмнаурухо" + - "йд ндебелебалбандонганидерланднорвегийн нинорскнорвегийн букмолөмнөд нд" + - "ебеленавахонянжаокситаноромоорияоссетинпанжабипольшпаштопортугалкечуаро" + - "маншрундирумынороскиньяруандасанскритсардинсиндхихойд самисангосинхалас" + - "ловаксловенисамоашонасомалиалбанисербсватисесотосунданшведсвахилитамилт" + - "элүгүтажиктайтигриньятуркменцванатонгатуркцонгататартаитиуйгурукраинурд" + - "уузбеквендавьетнамволапюкуоллунволофхосаиддишёрубахятадзулуачинадангмэа" + - "дигэагемайнуалютөмнөд алтайангикмапүчиарапагоасуастуриавадхибалибасаабе" + - "мбабенабожпурибинисиксикабодобугиблинсебуаночигачуукмари хэлчоктаучирок" + - "ичэеннтөв курдсеселва креолын францдакотадаргватайтадогрибзармадоод сор" + - "бидуалажола-фонидазагаэмбуэфикэкажукэвондофилиппинфонфриулангагагузгийз" + - "гилбертгоронталошвейцари-германгузыгвичинхавайхилигайнонхмонгдээд сорби" + - "хупаибанибибиоилокоингушложбаннгомбамачамэкабилекачинжжукамбакабардинтя" + - "пмакондекабүвердианукорокасикойра чиникакокаленжинкимбундукоми-пермякко" + - "нканикпеллекарачай-балкаркарелькурукшамбалабафиакёльшкумукладинлангилез" + - "гилакоталозихойд лурилуба-лулуалундалуомизолуяамадури хэлмагахимаймакас" + - "армасаймокшамендемеруморисенмакува-митометамикмакминангкабауманипуримох" + - "аукмоссимунданголон хэлкрикмерандиэрзямазандеранинеаполитаннаманеварини" + - "ас хэлниуэквазионгиембүүнногаинкохойд сотонуернянколепангасинпампангапа" + - "пьяментопалаунигерийн пиджинпрусскичерапануираротонгромбоароманырвасанд" + - "авэсахасамбүрүсанталингамбайсангүсицилшотландсенакёраборо сенитачелхитш" + - "аньөмнөд самилюле самиинари самисколт самисонинкесранан тонгосахосукума" + - "коморисиритимнтэсотетумтигрклингонток писинтарокотумбулатувалутасавакту" + - "ватөв атласын тамазайтудмуртумбундутодорхойгүй хэлвайвунжоуолсэруоллайт" + - "таварайхалимагсогаянгбенембакантонтамазитзунихэл зүйн агуулгагүйзазаста" + - "ндарт арабавстри-германшвейцари дээр германавстрали-англиканад-англибри" + - "тани-англиамерик-англиканад-францшвейцари-францбага саксонфламандмолдав" + - "хорватын сербконгогийн свахилихялбаршуулсан хятадуламжлалт хятад" - -var mnLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x0012, 0x0012, 0x001c, 0x0024, 0x002e, 0x003a, - 0x0042, 0x004c, 0x0054, 0x0060, 0x0074, 0x0080, 0x0090, 0x009c, - 0x00a8, 0x00b6, 0x00c2, 0x00ca, 0x00d6, 0x00e0, 0x00ee, 0x00fa, - 0x0108, 0x0114, 0x0114, 0x011a, 0x0133, 0x013d, 0x0147, 0x014f, - 0x015b, 0x0167, 0x0171, 0x0177, 0x017f, 0x0189, 0x019b, 0x01a7, - 0x01b3, 0x01bb, 0x01c3, 0x01cb, 0x01d9, 0x01e1, 0x01eb, 0x01f5, - 0x020a, 0x0216, 0x022f, 0x023b, 0x0249, 0x0259, 0x0263, 0x026d, - 0x0277, 0x0281, 0x0281, 0x028d, 0x02a6, 0x02b0, 0x02ba, 0x02c6, - // Entry 40 - 7F - 0x02dc, 0x02ec, 0x0301, 0x0309, 0x031a, 0x031a, 0x0320, 0x032c, - 0x0336, 0x0348, 0x0350, 0x0356, 0x035e, 0x035e, 0x036a, 0x037a, - 0x0384, 0x0396, 0x03a0, 0x03ae, 0x03be, 0x03ca, 0x03d6, 0x03de, - 0x03e6, 0x03ee, 0x03fa, 0x0404, 0x0418, 0x0422, 0x0430, 0x043e, - 0x0446, 0x0450, 0x0467, 0x0471, 0x0481, 0x048f, 0x0499, 0x04a7, - 0x04b7, 0x04c3, 0x04cf, 0x04d9, 0x04e3, 0x04eb, 0x04f5, 0x050c, - 0x0516, 0x0522, 0x0534, 0x0555, 0x0574, 0x058d, 0x0599, 0x05a3, - 0x05b1, 0x05b1, 0x05bb, 0x05c3, 0x05d1, 0x05df, 0x05df, 0x05e9, - // Entry 80 - BF - 0x05f3, 0x0603, 0x060d, 0x0619, 0x0623, 0x062d, 0x0635, 0x064b, - 0x065b, 0x0667, 0x0673, 0x0684, 0x068e, 0x069c, 0x06a8, 0x06b6, - 0x06c0, 0x06c8, 0x06d4, 0x06e0, 0x06e8, 0x06f2, 0x06fe, 0x070a, - 0x0712, 0x0720, 0x072a, 0x0736, 0x0740, 0x0746, 0x0756, 0x0764, - 0x076e, 0x0778, 0x0780, 0x078a, 0x0794, 0x079e, 0x07a8, 0x07b4, - 0x07bc, 0x07c6, 0x07d0, 0x07de, 0x07ec, 0x07f8, 0x0802, 0x080a, - 0x0814, 0x081e, 0x081e, 0x0828, 0x0830, 0x0838, 0x0838, 0x0846, - 0x0850, 0x0850, 0x0850, 0x0858, 0x0860, 0x0860, 0x0860, 0x0868, - // Entry C0 - FF - 0x0868, 0x087d, 0x087d, 0x0887, 0x0887, 0x0893, 0x0893, 0x08a1, - 0x08a1, 0x08a1, 0x08a1, 0x08a1, 0x08a1, 0x08a7, 0x08a7, 0x08b3, - 0x08b3, 0x08bf, 0x08bf, 0x08c7, 0x08c7, 0x08d1, 0x08d1, 0x08d1, - 0x08d1, 0x08d1, 0x08db, 0x08db, 0x08e3, 0x08e3, 0x08e3, 0x08e3, - 0x08f1, 0x08f1, 0x08f9, 0x08f9, 0x08f9, 0x0907, 0x0907, 0x0907, - 0x0907, 0x0907, 0x090f, 0x090f, 0x090f, 0x0917, 0x0917, 0x091f, - 0x091f, 0x091f, 0x091f, 0x091f, 0x091f, 0x091f, 0x092d, 0x0935, - 0x0935, 0x0935, 0x093d, 0x094c, 0x094c, 0x0958, 0x0958, 0x0964, - // Entry 100 - 13F - 0x096e, 0x097d, 0x097d, 0x097d, 0x097d, 0x09a5, 0x09a5, 0x09b1, - 0x09bd, 0x09c7, 0x09c7, 0x09c7, 0x09d3, 0x09d3, 0x09dd, 0x09dd, - 0x09f0, 0x09f0, 0x09fa, 0x09fa, 0x0a0b, 0x0a0b, 0x0a17, 0x0a1f, - 0x0a27, 0x0a27, 0x0a27, 0x0a33, 0x0a33, 0x0a33, 0x0a33, 0x0a3f, - 0x0a3f, 0x0a3f, 0x0a4f, 0x0a4f, 0x0a55, 0x0a55, 0x0a55, 0x0a55, - 0x0a55, 0x0a55, 0x0a55, 0x0a63, 0x0a67, 0x0a71, 0x0a71, 0x0a71, - 0x0a71, 0x0a71, 0x0a79, 0x0a87, 0x0a87, 0x0a87, 0x0a87, 0x0a87, - 0x0a87, 0x0a99, 0x0a99, 0x0a99, 0x0a99, 0x0ab6, 0x0ab6, 0x0ab6, - // Entry 140 - 17F - 0x0abe, 0x0aca, 0x0aca, 0x0aca, 0x0ad4, 0x0ad4, 0x0ae8, 0x0ae8, - 0x0af2, 0x0b05, 0x0b05, 0x0b0d, 0x0b15, 0x0b21, 0x0b2b, 0x0b35, - 0x0b35, 0x0b35, 0x0b41, 0x0b4d, 0x0b59, 0x0b59, 0x0b59, 0x0b59, - 0x0b59, 0x0b65, 0x0b6f, 0x0b75, 0x0b7f, 0x0b7f, 0x0b8f, 0x0b8f, - 0x0b95, 0x0ba3, 0x0bbb, 0x0bbb, 0x0bc3, 0x0bc3, 0x0bcb, 0x0bcb, - 0x0bde, 0x0bde, 0x0bde, 0x0be6, 0x0bf6, 0x0c06, 0x0c1b, 0x0c29, - 0x0c29, 0x0c35, 0x0c50, 0x0c50, 0x0c50, 0x0c5c, 0x0c66, 0x0c74, - 0x0c7e, 0x0c88, 0x0c92, 0x0c92, 0x0c9c, 0x0ca6, 0x0ca6, 0x0ca6, - // Entry 180 - 1BF - 0x0cb0, 0x0cb0, 0x0cb0, 0x0cb0, 0x0cbc, 0x0cbc, 0x0cbc, 0x0cbc, - 0x0cc4, 0x0cd5, 0x0cd5, 0x0ce8, 0x0ce8, 0x0cf2, 0x0cf8, 0x0d00, - 0x0d08, 0x0d08, 0x0d08, 0x0d1b, 0x0d1b, 0x0d27, 0x0d2d, 0x0d3b, - 0x0d3b, 0x0d45, 0x0d45, 0x0d4f, 0x0d4f, 0x0d59, 0x0d61, 0x0d6f, - 0x0d6f, 0x0d84, 0x0d8c, 0x0d98, 0x0dae, 0x0dae, 0x0dbe, 0x0dca, - 0x0dd4, 0x0dd4, 0x0de2, 0x0df1, 0x0df9, 0x0e07, 0x0e07, 0x0e07, - 0x0e07, 0x0e0f, 0x0e25, 0x0e25, 0x0e39, 0x0e41, 0x0e41, 0x0e4d, - 0x0e5c, 0x0e64, 0x0e64, 0x0e70, 0x0e82, 0x0e8c, 0x0e8c, 0x0e8c, - // Entry 1C0 - 1FF - 0x0e92, 0x0ea3, 0x0eab, 0x0eab, 0x0eab, 0x0eb9, 0x0eb9, 0x0eb9, - 0x0eb9, 0x0eb9, 0x0ec9, 0x0ec9, 0x0ed9, 0x0eed, 0x0ef7, 0x0ef7, - 0x0f14, 0x0f14, 0x0f14, 0x0f14, 0x0f14, 0x0f14, 0x0f14, 0x0f14, - 0x0f14, 0x0f1e, 0x0f1e, 0x0f26, 0x0f26, 0x0f26, 0x0f34, 0x0f44, - 0x0f44, 0x0f44, 0x0f4e, 0x0f4e, 0x0f4e, 0x0f4e, 0x0f4e, 0x0f5c, - 0x0f62, 0x0f70, 0x0f78, 0x0f78, 0x0f86, 0x0f86, 0x0f94, 0x0f94, - 0x0fa2, 0x0fac, 0x0fb6, 0x0fc4, 0x0fc4, 0x0fc4, 0x0fc4, 0x0fcc, - 0x0fcc, 0x0fcc, 0x0fe5, 0x0fe5, 0x0fe5, 0x0ff5, 0x0ffd, 0x0ffd, - // Entry 200 - 23F - 0x0ffd, 0x0ffd, 0x0ffd, 0x1010, 0x1021, 0x1034, 0x1047, 0x1055, - 0x1055, 0x106c, 0x106c, 0x1074, 0x1074, 0x1080, 0x1080, 0x1080, - 0x108c, 0x108c, 0x1094, 0x1094, 0x1094, 0x109c, 0x10a4, 0x10a4, - 0x10ae, 0x10b6, 0x10b6, 0x10b6, 0x10b6, 0x10c4, 0x10c4, 0x10c4, - 0x10c4, 0x10c4, 0x10d5, 0x10d5, 0x10e1, 0x10e1, 0x10e1, 0x10e1, - 0x10ef, 0x10fb, 0x1109, 0x1111, 0x1137, 0x1143, 0x1143, 0x1151, - 0x116e, 0x1174, 0x1174, 0x1174, 0x1174, 0x1174, 0x1174, 0x1174, - 0x117e, 0x118a, 0x119c, 0x11a6, 0x11a6, 0x11a6, 0x11a6, 0x11b4, - // Entry 240 - 27F - 0x11b4, 0x11bc, 0x11bc, 0x11bc, 0x11c8, 0x11d0, 0x11d0, 0x11dc, - 0x11dc, 0x11dc, 0x11dc, 0x11dc, 0x11ea, 0x11f2, 0x1216, 0x121e, - 0x1237, 0x1237, 0x1250, 0x1276, 0x1291, 0x12a6, 0x12bf, 0x12d6, - 0x12d6, 0x12d6, 0x12d6, 0x12d6, 0x12eb, 0x1306, 0x131b, 0x1329, - 0x1329, 0x1329, 0x1335, 0x134e, 0x136f, 0x1394, 0x13b1, -} // Size: 1254 bytes - -const mrLangStr string = "" + // Size: 11611 bytes - "अफारअबखेजियनअवेस्तनअफ्रिकान्सअकानअम्हारिकअर्गोनीजअरबीआसामीअ\u200dॅव्हेरि" + - "कऐमराअझरबैजानीबष्किरबेलारुशियनबल्गेरियनबिस्लामाबाम्बाराबंगालीतिबेटीब्र" + - "ेतॉनबोस्नियनकातालानचेचेनकॅमोरोकॉर्सिकनक्रीझेकचर्च स्लाव्हिकचूवाशवेल्शड" + - "ॅनिशजर्मनदिवेहीझोंगखाएवेग्रीकइंग्रजीएस्परान्टोस्पॅनिशइस्टोनियनबास्कफार" + - "सीफुलाहफिन्निशफिजियनफरोइजफ्रेंचपश्चिमी फ्रिशियनआयरिशस्कॉट्स गेलिकगॅलिश" + - "ियनगुआरनीगुजरातीमांक्सहौसाहिब्रूहिंदीहिरी मॉटूक्रोएशियनहैतीयनहंगेरियनआ" + - "र्मेनियनहरेरोइंटरलिंग्वाइंडोनेशियनइन्टरलिंगईग्बोसिचुआन यीइनूपियाकइडौआई" + - "सलँडिकइटालियनइनुक्तीटुटजपानीजावानीजजॉर्जियनकाँगोकिकुयूक्वान्यामाकझाककल" + - "ाल्लिसतख्मेरकन्नडकोरियनकनुरीकाश्मीरीकुर्दिशकोमीकोर्निशकिरगीझलॅटिनलक्झे" + - "ंबर्गिशगांडालिंबूर्गिशलिंगालालाओलिथुआनियनल्यूबा-कटांगालात्व्हियनमलागसी" + - "मार्शलीजमाओरीमॅसेडोनियनमल्याळममंगोलियनमराठीमलयमाल्टिज्बर्मीनउरूउत्तर द" + - "ेबेलीनेपाळीडोंगाडचनॉर्वेजियन न्योर्स्कनॉर्वेजियन बोकमालदक्षिणात्य देबे" + - "लीनावाजोन्यान्जाऑक्सितानओजिब्वाओरोमोउडियाओस्सेटिकपंजाबीपालीपोलिशपश्तोप" + - "ोर्तुगीजक्वेचुआरोमान्शरुन्दीरोमानियनरशियनकिन्यार्वान्डासंस्कृतसर्दिनिय" + - "नसिंधीउत्तरी सामीसांगोसिंहलास्लोव्हाकस्लोव्हेनियनसामोअनशोनासोमालीअल्बा" + - "नियनसर्बियनस्वातीसेसोथोसुंदानीजस्वीडिशस्वाहिलीतामिळतेलगूताजिकथाईतिग्रि" + - "न्यातुर्कमेनत्स्वानाटोंगनतुर्कीसोंगातातरताहितीयनउइगुरयुक्रेनियनउर्दूउझ" + - "्बेकव्हेंदाव्हिएतनामीओलापुकवालूनवोलोफखोसायिद्दिशयोरुबाझुआंगचीनीझुलूअची" + - "नीअकोलीअडांग्मेअडिघेअफ्रिहिलीअघेमऐनूअक्केडियनअलेउतदक्षिणात्य अल्ताईपुर" + - "ातन इंग्रजीअंगिकाअ\u200dॅरेमाइकमापुचीआरापाहोआरावाकअसुअस्तुरियनअवधीबलुच" + - "ीबालिनीजबसाबेजाबेम्बाबेनापश्चिमी बालोचीभोजपुरीबिकोलबिनीसिक्सिकाब्रजबोड" + - "ोबुरियातबगिनीसब्लिनकॅड्डोकॅरिबअत्समसिबुआनोकिगाचिब्चाछागाताइचूकीसेमारीच" + - "िनूक जारगॉनचोक्तौशिपेव्यानचेरोकीशेयेन्नमध्य कुर्दिशकॉप्टिकक्राइमीन तुर" + - "्कीसेसेल्वा क्रिओल फ्रेंचकाशुबियनडाकोटादार्गवातायताडेलावेयरस्लाव्हडोग्" + - "रिबडिन्काझार्माडोगरीलोअर सोर्बियनदुआलामिडल डचजोला-फोंयीड्युलादाझागाएम्" + - "बूएफिकप्राचीन इजिप्शियनएकाजुकएलामाइटमिडल इंग्रजीइवोन्डोफँगफिलिपिनोफॉनक" + - "ेजॉन फ्रेंचमिडल फ्रेंचपुरातन फ्रेंचउत्तरी फ्रिशियनपौर्वात्य फ्रिशियनफ्" + - "रियुलियानगागागाउझगॅन चिनीगायोबायागीझजिल्बरटीजमिडल हाय जर्मनपुरातन हाइ " + - "जर्मनगाँडीगोरोन्तालोगॉथिकग्रेबोप्राचीन ग्रीकस्विस जर्मनगसीग्विच’इनहैडा" + - "हाक्का चिनीहवाईयनहिलीगेनॉनहिट्टितेमाँगअप्पर सॉर्बियनशियांग चिनीहूपाइबा" + - "नइबिबिओइलोकोइंगुशलोज्बानगोम्बामशामेजुदेओ-फारसीजुदेओ-अरबीकारा-कल्पककबाइ" + - "लकाचिनज्जुकाम्बाकावीकबार्डियनत्यापमाकोन्देकाबवर्दियानुकोरोखासीखोतानीसक" + - "ोयरा चीनीकाकोकालेंजीनकिम्बन्दुकोमी-परम्याककोंकणीकोसरियनक्पेल्लेकराचय-ब" + - "ाल्करकरेलियनकुरूखशांबालाबाफियाकोलोग्नियनकुमीककुतेनाईलादीनोलांगीलाह्न्ड" + - "ालाम्बालेझ्घीयनलाकोटामोंगोल्युसियाना क्रिओललोझिउत्तरी ल्युरीलुबा-लुलुआ" + - "लुइसेनोलुन्डाल्युओमिझोल्युइयामादुरीसमगहीमैथिलीमकस्सरमन्डिन्गोमसाईमोक्ष" + - "मंडारमेन्डेमेरूमोरिस्येनमिडल आयरिशमाखुव्हा-मीट्टोमीटामिकमॅकमिनांग्काबा" + - "उमान्चुमणिपुरीमोहॉकमोस्सीमुंडांगएकाधिक भाषाक्रीकमिरांडिज्मारवाडीएर्झ्य" + - "ामाझानदेरानीमिन नान चिनीनेपोलिटाननामालो जर्मननेवारीनियासनियुआनक्वासिओज" + - "िएम्बूननोगाईपुरातन नॉर्सएन्कोउत्तरी सोथोनुएरअभिजात नेवारीन्यामवेझीन्या" + - "नकोलन्योरोन्झिमाओसेजओटोमान तुर्किशपंगासीनानपहलवीपाम्पान्गापापियामेन्टो" + - "पालाउआननायजिरिअन पिजिनपुरातन फारसीफोनिशियनपोह्नपियनप्रुशियनपुरातन प्रो" + - "व्हेन्सलकीशेइराजस्थानीरापानुईरारोटोंगनरोम्बोरोमानीअरोमानियनरव्हासँडवेस" + - "ाखासामरिटान अरॅमिकसांबुरूसासाकसंतालीगाम्बेसांगुसिसिलियनस्कॉट्सदक्षिणी " + - "कुर्दिशसेनासेल्कपकोयराबोरो सेन्नीपुरातन आयरिशताशेल्हिटशॅनसिदामोदक्षिणा" + - "त्य सामील्युल सामीइनारी सामीस्कोल्ट सामीसोनिन्केसोग्डिएनस्रानान टॉन्गो" + - "सेरेरसाहोसुकुमासुसुसुमेरियनकोमोरियनअभिजात सिरियाकसिरियाकटिम्नेतेसोतेरे" + - "नोतेतुमटाइग्रेतिवटोकेलाऊक्लिंगोनलिंगिततामाशेकन्यासा टोन्गाटोक पिसिनतार" + - "ोकोसिम्शियनतुम्बुकाटुवालुतासाव्हाकटुवीनियनमध्य ऍटलास तॅमॅझायटउदमुर्तयु" + - "गॅरिटिकउम्बुन्डुअज्ञात भाषावाईवॉटिकवुंजोवालसेरवोलायतावारेवाशोवार्लपिरी" + - "व्हू चिनीकाल्मिकसोगायाओयापीसयांगबेनयेमबाकँटोनीजझेपोटेकब्लिसिम्बॉल्सझेन" + - "ान्गाप्रमाण मोरोक्कन तॅमॅझायटझुनीभाषावैज्ञानिक सामग्री नाहीझाझाआधुनिक " + - "प्रमाणित अरबीऑस्ट्रियन जर्मनस्विस हाय जर्मनऑस्ट्रेलियन इंग्रजीकॅनडियन " + - "इंग्रजीब्रिटिश इंग्रजीअमेरिकन इंग्रजीलॅटिन अमेरिकन स्पॅनिशयुरोपियन स्प" + - "ॅनिशमेक्सिकन स्पॅनिशकॅनडियन फ्रेंचस्विस फ्रेंचलो सॅक्सनफ्लेमिशब्राझिलि" + - "यन पोर्तुगीजयुरोपियन पोर्तुगीजमोल्डाव्हियनसर्बो-क्रोएशियनकाँगो स्वाहिल" + - "ीसरलीकृत चीनीपारंपारिक चीनी" - -var mrLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0024, 0x0039, 0x0057, 0x0063, 0x007b, 0x0093, - 0x009f, 0x00ae, 0x00cc, 0x00d8, 0x00f3, 0x0105, 0x0123, 0x013e, - 0x0156, 0x016e, 0x0180, 0x0192, 0x01a7, 0x01bf, 0x01d4, 0x01e3, - 0x01f5, 0x020d, 0x0219, 0x0222, 0x024a, 0x0259, 0x0268, 0x0277, - 0x0286, 0x0298, 0x02aa, 0x02b3, 0x02c2, 0x02d7, 0x02f5, 0x030a, - 0x0325, 0x0334, 0x0343, 0x0352, 0x0367, 0x0379, 0x0388, 0x039a, - 0x03c8, 0x03d7, 0x03fc, 0x0414, 0x0426, 0x043b, 0x044d, 0x0459, - 0x046b, 0x047a, 0x0493, 0x04ae, 0x04c0, 0x04d8, 0x04f3, 0x0502, - // Entry 40 - 7F - 0x0523, 0x0541, 0x055c, 0x056b, 0x0584, 0x059c, 0x05a5, 0x05bd, - 0x05d2, 0x05f0, 0x05ff, 0x0614, 0x062c, 0x063b, 0x064d, 0x066b, - 0x0677, 0x0692, 0x06a1, 0x06b0, 0x06c2, 0x06d1, 0x06e9, 0x06fe, - 0x070a, 0x071f, 0x0731, 0x0740, 0x0764, 0x0773, 0x0791, 0x07a6, - 0x07af, 0x07ca, 0x07ef, 0x080d, 0x081f, 0x0837, 0x0846, 0x0864, - 0x0879, 0x0891, 0x08a0, 0x08a9, 0x08c1, 0x08d0, 0x08dc, 0x08fe, - 0x0910, 0x091f, 0x0925, 0x095f, 0x0990, 0x09c1, 0x09d3, 0x09eb, - 0x0a03, 0x0a18, 0x0a27, 0x0a36, 0x0a4e, 0x0a60, 0x0a6c, 0x0a7b, - // Entry 80 - BF - 0x0a8a, 0x0aa5, 0x0aba, 0x0acf, 0x0ae1, 0x0af9, 0x0b08, 0x0b32, - 0x0b47, 0x0b62, 0x0b71, 0x0b90, 0x0b9f, 0x0bb1, 0x0bcc, 0x0bf0, - 0x0c02, 0x0c0e, 0x0c20, 0x0c3b, 0x0c50, 0x0c62, 0x0c74, 0x0c8c, - 0x0ca1, 0x0cb9, 0x0cc8, 0x0cd7, 0x0ce6, 0x0cef, 0x0d0d, 0x0d25, - 0x0d3d, 0x0d4c, 0x0d5e, 0x0d6d, 0x0d79, 0x0d91, 0x0da0, 0x0dbe, - 0x0dcd, 0x0ddf, 0x0df4, 0x0e12, 0x0e24, 0x0e33, 0x0e42, 0x0e4e, - 0x0e63, 0x0e75, 0x0e84, 0x0e90, 0x0e9c, 0x0eab, 0x0eba, 0x0ed2, - 0x0ee1, 0x0ee1, 0x0efc, 0x0f08, 0x0f11, 0x0f2c, 0x0f2c, 0x0f3b, - // Entry C0 - FF - 0x0f3b, 0x0f6c, 0x0f94, 0x0fa6, 0x0fc1, 0x0fd3, 0x0fd3, 0x0fe8, - 0x0fe8, 0x0fe8, 0x0ffa, 0x0ffa, 0x0ffa, 0x1003, 0x1003, 0x101e, - 0x101e, 0x102a, 0x1039, 0x104e, 0x104e, 0x1057, 0x1057, 0x1057, - 0x1057, 0x1063, 0x1075, 0x1075, 0x1081, 0x1081, 0x1081, 0x10a9, - 0x10be, 0x10cd, 0x10d9, 0x10d9, 0x10d9, 0x10f1, 0x10f1, 0x10f1, - 0x10fd, 0x10fd, 0x1109, 0x1109, 0x111e, 0x1130, 0x1130, 0x113f, - 0x113f, 0x1151, 0x1160, 0x1160, 0x116f, 0x116f, 0x1184, 0x1190, - 0x11a2, 0x11b7, 0x11c9, 0x11d5, 0x11f7, 0x1209, 0x1224, 0x1236, - // Entry 100 - 13F - 0x124b, 0x126d, 0x1282, 0x1282, 0x12ad, 0x12eb, 0x1303, 0x1315, - 0x132a, 0x1339, 0x1351, 0x1366, 0x137b, 0x138d, 0x139f, 0x13ae, - 0x13d3, 0x13d3, 0x13e2, 0x13f5, 0x1411, 0x1423, 0x1435, 0x1444, - 0x1450, 0x1450, 0x1481, 0x1493, 0x14a8, 0x14ca, 0x14ca, 0x14df, - 0x14df, 0x14e8, 0x1500, 0x1500, 0x1509, 0x152b, 0x154a, 0x156f, - 0x156f, 0x159a, 0x15ce, 0x15ef, 0x15f5, 0x1607, 0x161d, 0x1629, - 0x1635, 0x1635, 0x163e, 0x1659, 0x1659, 0x167f, 0x16ab, 0x16ab, - 0x16ba, 0x16d8, 0x16e7, 0x16f9, 0x171e, 0x173d, 0x173d, 0x173d, - // Entry 140 - 17F - 0x1746, 0x175e, 0x176a, 0x1789, 0x179b, 0x179b, 0x17b6, 0x17ce, - 0x17da, 0x1802, 0x1821, 0x182d, 0x1839, 0x184b, 0x185a, 0x1869, - 0x1869, 0x1869, 0x187e, 0x1890, 0x189f, 0x18be, 0x18da, 0x18da, - 0x18f6, 0x1905, 0x1914, 0x1920, 0x1932, 0x193e, 0x1959, 0x1959, - 0x1968, 0x1980, 0x19a4, 0x19a4, 0x19b0, 0x19b0, 0x19bc, 0x19d1, - 0x19ed, 0x19ed, 0x19ed, 0x19f9, 0x1a11, 0x1a2c, 0x1a4e, 0x1a60, - 0x1a75, 0x1a8d, 0x1aaf, 0x1aaf, 0x1aaf, 0x1ac4, 0x1ad3, 0x1ae8, - 0x1afa, 0x1b18, 0x1b27, 0x1b3c, 0x1b4e, 0x1b5d, 0x1b75, 0x1b87, - // Entry 180 - 1BF - 0x1b9f, 0x1b9f, 0x1b9f, 0x1b9f, 0x1bb1, 0x1bb1, 0x1bc0, 0x1bf1, - 0x1bfd, 0x1c22, 0x1c22, 0x1c3e, 0x1c53, 0x1c65, 0x1c74, 0x1c80, - 0x1c95, 0x1c95, 0x1c95, 0x1caa, 0x1caa, 0x1cb6, 0x1cc8, 0x1cda, - 0x1cf5, 0x1d01, 0x1d01, 0x1d10, 0x1d1f, 0x1d31, 0x1d3d, 0x1d58, - 0x1d74, 0x1d9f, 0x1dab, 0x1dbd, 0x1de1, 0x1df3, 0x1e08, 0x1e17, - 0x1e29, 0x1e29, 0x1e3e, 0x1e5d, 0x1e6c, 0x1e87, 0x1e9c, 0x1e9c, - 0x1e9c, 0x1eb1, 0x1ed2, 0x1ef2, 0x1f0d, 0x1f19, 0x1f2f, 0x1f41, - 0x1f50, 0x1f62, 0x1f62, 0x1f77, 0x1f8f, 0x1f9e, 0x1fc0, 0x1fc0, - // Entry 1C0 - 1FF - 0x1fcf, 0x1fee, 0x1ffa, 0x201f, 0x203a, 0x2052, 0x2064, 0x2076, - 0x2082, 0x20aa, 0x20c5, 0x20d4, 0x20f2, 0x2116, 0x212b, 0x212b, - 0x2156, 0x2156, 0x2156, 0x2178, 0x2178, 0x2190, 0x2190, 0x2190, - 0x21ab, 0x21c3, 0x21fa, 0x2209, 0x2209, 0x2224, 0x2239, 0x2254, - 0x2254, 0x2254, 0x2266, 0x2278, 0x2278, 0x2278, 0x2278, 0x2293, - 0x22a2, 0x22b1, 0x22bd, 0x22e8, 0x22fd, 0x230c, 0x231e, 0x231e, - 0x2330, 0x233f, 0x2357, 0x236c, 0x236c, 0x2397, 0x2397, 0x23a3, - 0x23a3, 0x23b5, 0x23e3, 0x2405, 0x2405, 0x2420, 0x2429, 0x2429, - // Entry 200 - 23F - 0x243b, 0x243b, 0x243b, 0x2466, 0x2482, 0x249e, 0x24c0, 0x24d8, - 0x24f0, 0x2518, 0x2527, 0x2533, 0x2533, 0x2545, 0x2551, 0x2569, - 0x2581, 0x25a9, 0x25be, 0x25be, 0x25be, 0x25d0, 0x25dc, 0x25ee, - 0x25fd, 0x2612, 0x261b, 0x2630, 0x2630, 0x2648, 0x265a, 0x265a, - 0x266f, 0x2694, 0x26ad, 0x26ad, 0x26bf, 0x26bf, 0x26d7, 0x26d7, - 0x26ef, 0x2701, 0x271c, 0x2734, 0x2769, 0x277e, 0x2799, 0x27b4, - 0x27d3, 0x27dc, 0x27dc, 0x27dc, 0x27dc, 0x27dc, 0x27eb, 0x27eb, - 0x27fa, 0x280c, 0x2821, 0x282d, 0x2839, 0x2854, 0x286d, 0x2882, - // Entry 240 - 27F - 0x2882, 0x288e, 0x2897, 0x28a6, 0x28bb, 0x28ca, 0x28ca, 0x28df, - 0x28f4, 0x291b, 0x291b, 0x2933, 0x2977, 0x2983, 0x29cd, 0x29d9, - 0x2a11, 0x2a11, 0x2a3c, 0x2a65, 0x2a9c, 0x2ac7, 0x2af2, 0x2b1d, - 0x2b58, 0x2b86, 0x2bb4, 0x2bb4, 0x2bdc, 0x2bfe, 0x2c17, 0x2c2c, - 0x2c66, 0x2c9a, 0x2cbe, 0x2ce9, 0x2d11, 0x2d33, 0x2d5b, -} // Size: 1254 bytes - -const msLangStr string = "" + // Size: 3309 bytes - "AfarAbkhaziaAvestanAfrikaansAkanAmharicAragonArabAssamAvaricAymaraAzerba" + - "ijanBashkirBelarusBulgariaBislamaBambaraBenggalaTibetBretonBosniaCatalon" + - "iaChechenChamorroCorsicaCzechSlavik GerejaChuvashWalesDenmarkJermanDiveh" + - "iDzongkhaEweGreekInggerisEsperantoSepanyolEstoniaBasqueParsiFulahFinland" + - "FijiFaroePerancisFrisian BaratIrelandScots GaelicGaliciaGuaraniGujeratMa" + - "nxHausaIbraniHindiCroatiaHaitiHungaryArmeniaHereroInterlinguaIndonesiaIn" + - "terlingueIgboSichuan YiIdoIcelandItaliInuktitutJepunJawaGeorgiaKongoKiku" + - "yaKuanyamaKazakhstanKalaallisutKhmerKannadaKoreaKanuriKashmirKurdishKomi" + - "CornishKirghizLatinLuxembourgGandaLimburgishLingalaLaosLithuaniaLuba-Kat" + - "angaLatviaMalagasyMarshallMaoriMacedoniaMalayalamMongoliaMarathiMelayuMa" + - "ltaBurmaNauruNdebele UtaraNepalNdongaBelandaNynorsk NorwayBokmål NorwayN" + - "debele SelatanNavajoNyanjaOccitaniaOromoOdiaOssetePunjabiPolandPashtoPor" + - "tugisQuechuaRomanshRundiRomaniaRusiaKinyarwandaSanskritSardiniaSindhiSam" + - "i UtaraSangoSinhalaSlovakSloveniaSamoaShonaSomaliAlbaniaSerbiaSwatiSotho" + - " SelatanSundaSwedenSwahiliTamilTeluguTajikThaiTigrinyaTurkmenTswanaTonga" + - "TurkiTsongaTatarTahitiUyghurUkraineUrduUzbekistanVendaVietnamVolapükWall" + - "oonWolofXhosaYiddishYorubaCinaZuluAcehAkoliAdangmeAdygheArab TunisiaAghe" + - "mAinuAleutAltai SelatanAngikaMapucheArapahoArab AlgeriaArab MaghribiArab" + - " MesirAsuAsturiaAwadhiBaluchiBaliBasaaBamunGhomalaBejaBembaBenaBafutBalo" + - "chi BaratBhojpuriBiniKomSiksikaBishnupriyaBrahuiBodoAkooseBuriatBugisBul" + - "uBlinMedumbaCayugaCebuanoChigaChukeseMariChoctawCherokeeCheyenneKurdi So" + - "raniCopticTurki KrimeaPerancis Seselwa CreoleDakotaDargwaTaitaDogribZarm" + - "aDogriSorbian RendahDualaJola-FonyiDazagaEmbuEfikEkajukEwondoFilipinaFon" + - "Perancis CajunFriulianGaGagauzCina GanGbayaZoroastrian DariGeezKiribatiG" + - "ilakiGorontaloGreek PurbaJerman SwitzerlandGusiiGwichʼinCina HakkaHawaii" + - "HiligaynonHmongSorbian AtasCina XiangHupaIbanIbibioIlokoIngushLojbanNgom" + - "baMachameKabyleKachinJjuKambaKabardiaKanembuTyapMakondeKabuverdianuKoroK" + - "hasiKoyra ChiiniKhowarKakoKalenjinKimbunduKomi-PermyakKonkaniKpelleKarac" + - "hay-BalkarKarelianKurukhShambalaBafiaColognianKumykLadinoLangiLahndaLezg" + - "hianLakotaKreol LouisianaLoziLuri UtaraLuba-LuluaLundaLuoMizoLuyiaMadura" + - "MafaMagahiMaithiliMakasarMasaiMabaMokshaMendeMeruMorisyenMakhuwa-MeettoM" + - "eta’MicmacMinangkabauManipuriMohawkMossiMundangPelbagai BahasaCreekMiran" + - "deseMyeneErzyaMazanderaniCina Min NanNeapolitanNamaJerman RendahNewariNi" + - "asNiuKwasioNgiemboonNogaiN’koSotho UtaraNuerNyankolePangasinanPampangaPa" + - "piamentoPalauanNigerian PidginPrusiaKʼicheʼRapanuiRarotongaRomboAromania" + - "nRwaSandaweSakhaSamburuSantaliNgambaySanguSiciliScotsKurdish SelatanSene" + - "caSenaKoyraboro SenniTachelhitShanArab ChadianSami SelatanLule SamiInari" + - " SamiSkolt SamiSoninkeSranan TongoSahoSukumaComoriaSyriacTimneTesoTetumT" + - "igreKlingonTalyshTok PisinTarokoTumbukaTuvaluTasawaqTuvinianTamazight At" + - "las TengahUdmurtUmbunduBahasa Tidak DiketahuiVaiVunjoWalserWolayttaWaray" + - "WarlpiriCina WuKalmykSogaYangbenYembaKantonisTamazight Maghribi Standard" + - "ZuniTiada kandungan linguistikZazaArab Standard ModenJerman AustriaJerma" + - "n Halus SwitzerlandInggeris AustraliaInggeris KanadaInggeris BritishIngg" + - "eris ASSepanyol Amerika LatinSepanyol EropahSepanyol MexicoPerancis Kana" + - "daPerancis SwitzerlandSaxon RendahFlemishPortugis BrazilPortugis EropahM" + - "oldaviaSerboCroatiaCongo SwahiliCina RingkasCina Tradisional" - -var msLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000c, 0x0013, 0x001c, 0x0020, 0x0027, 0x002d, - 0x0031, 0x0036, 0x003c, 0x0042, 0x004c, 0x0053, 0x005a, 0x0062, - 0x0069, 0x0070, 0x0078, 0x007d, 0x0083, 0x0089, 0x0092, 0x0099, - 0x00a1, 0x00a8, 0x00a8, 0x00ad, 0x00ba, 0x00c1, 0x00c6, 0x00cd, - 0x00d3, 0x00d9, 0x00e1, 0x00e4, 0x00e9, 0x00f1, 0x00fa, 0x0102, - 0x0109, 0x010f, 0x0114, 0x0119, 0x0120, 0x0124, 0x0129, 0x0131, - 0x013e, 0x0145, 0x0151, 0x0158, 0x015f, 0x0166, 0x016a, 0x016f, - 0x0175, 0x017a, 0x017a, 0x0181, 0x0186, 0x018d, 0x0194, 0x019a, - // Entry 40 - 7F - 0x01a5, 0x01ae, 0x01b9, 0x01bd, 0x01c7, 0x01c7, 0x01ca, 0x01d1, - 0x01d6, 0x01df, 0x01e4, 0x01e8, 0x01ef, 0x01f4, 0x01fa, 0x0202, - 0x020c, 0x0217, 0x021c, 0x0223, 0x0228, 0x022e, 0x0235, 0x023c, - 0x0240, 0x0247, 0x024e, 0x0253, 0x025d, 0x0262, 0x026c, 0x0273, - 0x0277, 0x0280, 0x028c, 0x0292, 0x029a, 0x02a2, 0x02a7, 0x02b0, - 0x02b9, 0x02c1, 0x02c8, 0x02ce, 0x02d3, 0x02d8, 0x02dd, 0x02ea, - 0x02ef, 0x02f5, 0x02fc, 0x030a, 0x0318, 0x0327, 0x032d, 0x0333, - 0x033c, 0x033c, 0x0341, 0x0345, 0x034b, 0x0352, 0x0352, 0x0358, - // Entry 80 - BF - 0x035e, 0x0366, 0x036d, 0x0374, 0x0379, 0x0380, 0x0385, 0x0390, - 0x0398, 0x03a0, 0x03a6, 0x03b0, 0x03b5, 0x03bc, 0x03c2, 0x03ca, - 0x03cf, 0x03d4, 0x03da, 0x03e1, 0x03e7, 0x03ec, 0x03f9, 0x03fe, - 0x0404, 0x040b, 0x0410, 0x0416, 0x041b, 0x041f, 0x0427, 0x042e, - 0x0434, 0x0439, 0x043e, 0x0444, 0x0449, 0x044f, 0x0455, 0x045c, - 0x0460, 0x046a, 0x046f, 0x0476, 0x047e, 0x0485, 0x048a, 0x048f, - 0x0496, 0x049c, 0x049c, 0x04a0, 0x04a4, 0x04a8, 0x04ad, 0x04b4, - 0x04ba, 0x04c6, 0x04c6, 0x04cb, 0x04cf, 0x04cf, 0x04cf, 0x04d4, - // Entry C0 - FF - 0x04d4, 0x04e1, 0x04e1, 0x04e7, 0x04e7, 0x04ee, 0x04ee, 0x04f5, - 0x0501, 0x0501, 0x0501, 0x050e, 0x0518, 0x051b, 0x051b, 0x0522, - 0x0522, 0x0528, 0x052f, 0x0533, 0x0533, 0x0538, 0x053d, 0x053d, - 0x0544, 0x0548, 0x054d, 0x054d, 0x0551, 0x0556, 0x0556, 0x0563, - 0x056b, 0x056b, 0x056f, 0x056f, 0x0572, 0x0579, 0x0584, 0x0584, - 0x0584, 0x058a, 0x058e, 0x0594, 0x059a, 0x059f, 0x05a3, 0x05a7, - 0x05ae, 0x05ae, 0x05ae, 0x05b4, 0x05b4, 0x05b4, 0x05bb, 0x05c0, - 0x05c0, 0x05c0, 0x05c7, 0x05cb, 0x05cb, 0x05d2, 0x05d2, 0x05da, - // Entry 100 - 13F - 0x05e2, 0x05ee, 0x05f4, 0x05f4, 0x0600, 0x0617, 0x0617, 0x061d, - 0x0623, 0x0628, 0x0628, 0x0628, 0x062e, 0x062e, 0x0633, 0x0638, - 0x0646, 0x0646, 0x064b, 0x064b, 0x0655, 0x0655, 0x065b, 0x065f, - 0x0663, 0x0663, 0x0663, 0x0669, 0x0669, 0x0669, 0x0669, 0x066f, - 0x066f, 0x066f, 0x0677, 0x0677, 0x067a, 0x0688, 0x0688, 0x0688, - 0x0688, 0x0688, 0x0688, 0x0690, 0x0692, 0x0698, 0x06a0, 0x06a0, - 0x06a5, 0x06b5, 0x06b9, 0x06c1, 0x06c7, 0x06c7, 0x06c7, 0x06c7, - 0x06c7, 0x06d0, 0x06d0, 0x06d0, 0x06db, 0x06ed, 0x06ed, 0x06ed, - // Entry 140 - 17F - 0x06f2, 0x06fb, 0x06fb, 0x0705, 0x070b, 0x070b, 0x0715, 0x0715, - 0x071a, 0x0726, 0x0730, 0x0734, 0x0738, 0x073e, 0x0743, 0x0749, - 0x0749, 0x0749, 0x074f, 0x0755, 0x075c, 0x075c, 0x075c, 0x075c, - 0x075c, 0x0762, 0x0768, 0x076b, 0x0770, 0x0770, 0x0778, 0x077f, - 0x0783, 0x078a, 0x0796, 0x0796, 0x079a, 0x079a, 0x079f, 0x079f, - 0x07ab, 0x07b1, 0x07b1, 0x07b5, 0x07bd, 0x07c5, 0x07d1, 0x07d8, - 0x07d8, 0x07de, 0x07ed, 0x07ed, 0x07ed, 0x07f5, 0x07fb, 0x0803, - 0x0808, 0x0811, 0x0816, 0x0816, 0x081c, 0x0821, 0x0827, 0x0827, - // Entry 180 - 1BF - 0x082f, 0x082f, 0x082f, 0x082f, 0x0835, 0x0835, 0x0835, 0x0844, - 0x0848, 0x0852, 0x0852, 0x085c, 0x085c, 0x0861, 0x0864, 0x0868, - 0x086d, 0x086d, 0x086d, 0x0873, 0x0877, 0x087d, 0x0885, 0x088c, - 0x088c, 0x0891, 0x0895, 0x089b, 0x089b, 0x08a0, 0x08a4, 0x08ac, - 0x08ac, 0x08ba, 0x08c1, 0x08c7, 0x08d2, 0x08d2, 0x08da, 0x08e0, - 0x08e5, 0x08e5, 0x08ec, 0x08fb, 0x0900, 0x0909, 0x0909, 0x0909, - 0x090e, 0x0913, 0x091e, 0x092a, 0x0934, 0x0938, 0x0945, 0x094b, - 0x094f, 0x0952, 0x0952, 0x0958, 0x0961, 0x0966, 0x0966, 0x0966, - // Entry 1C0 - 1FF - 0x096c, 0x0977, 0x097b, 0x097b, 0x097b, 0x0983, 0x0983, 0x0983, - 0x0983, 0x0983, 0x098d, 0x098d, 0x0995, 0x099f, 0x09a6, 0x09a6, - 0x09b5, 0x09b5, 0x09b5, 0x09b5, 0x09b5, 0x09b5, 0x09b5, 0x09b5, - 0x09b5, 0x09bb, 0x09bb, 0x09c4, 0x09c4, 0x09c4, 0x09cb, 0x09d4, - 0x09d4, 0x09d4, 0x09d9, 0x09d9, 0x09d9, 0x09d9, 0x09d9, 0x09e2, - 0x09e5, 0x09ec, 0x09f1, 0x09f1, 0x09f8, 0x09f8, 0x09ff, 0x09ff, - 0x0a06, 0x0a0b, 0x0a11, 0x0a16, 0x0a16, 0x0a25, 0x0a2b, 0x0a2f, - 0x0a2f, 0x0a2f, 0x0a3e, 0x0a3e, 0x0a3e, 0x0a47, 0x0a4b, 0x0a57, - // Entry 200 - 23F - 0x0a57, 0x0a57, 0x0a57, 0x0a63, 0x0a6c, 0x0a76, 0x0a80, 0x0a87, - 0x0a87, 0x0a93, 0x0a93, 0x0a97, 0x0a97, 0x0a9d, 0x0a9d, 0x0a9d, - 0x0aa4, 0x0aa4, 0x0aaa, 0x0aaa, 0x0aaa, 0x0aaf, 0x0ab3, 0x0ab3, - 0x0ab8, 0x0abd, 0x0abd, 0x0abd, 0x0abd, 0x0ac4, 0x0ac4, 0x0aca, - 0x0aca, 0x0aca, 0x0ad3, 0x0ad3, 0x0ad9, 0x0ad9, 0x0ad9, 0x0ad9, - 0x0ae0, 0x0ae6, 0x0aed, 0x0af5, 0x0b0b, 0x0b11, 0x0b11, 0x0b18, - 0x0b2e, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, 0x0b31, - 0x0b36, 0x0b3c, 0x0b44, 0x0b49, 0x0b49, 0x0b51, 0x0b58, 0x0b5e, - // Entry 240 - 27F - 0x0b5e, 0x0b62, 0x0b62, 0x0b62, 0x0b69, 0x0b6e, 0x0b6e, 0x0b76, - 0x0b76, 0x0b76, 0x0b76, 0x0b76, 0x0b91, 0x0b95, 0x0baf, 0x0bb3, - 0x0bc6, 0x0bc6, 0x0bd4, 0x0bec, 0x0bfe, 0x0c0d, 0x0c1d, 0x0c28, - 0x0c3e, 0x0c4d, 0x0c5c, 0x0c5c, 0x0c6b, 0x0c7f, 0x0c8b, 0x0c92, - 0x0ca1, 0x0cb0, 0x0cb8, 0x0cc4, 0x0cd1, 0x0cdd, 0x0ced, -} // Size: 1254 bytes - -const myLangStr string = "" + // Size: 10308 bytes - "အာဖာအဘ်ခါဇီရာတောင်အာဖရိကအာကန်အမ်ဟာရစ်ခ်အာရာဂွန်အာရဗီအာသံအာဗာရစ်ခ်အိုင်မာ" + - "ရအဇာဘိုင်ဂျန်ဘက်ရှ်ကာဘီလာရုစ်ဘူလ်ဂေးရီးယားဘစ်စ်လာမာဘန်ဘာရာဘင်္ဂါလီတိဘက" + - "်ဘရီတွန်ဘော့စ်နီးယားကတ်တလန်ချက်ချန်းချမိုရိုခိုစီကန်ခရီးချက်ချပ်ချ် စလ" + - "ာဗစ်ချူဗက်ရှ်ဝေလဒိန်းမတ်ဂျာမန်ဒီဗာဟီဒဇွန်ကာအီဝီဂရိအင်္ဂလိပ်အက်စ်ပရန်တိ" + - "ုစပိန်အက်စ်တိုးနီးယားဘာစ်ခ်ပါရှန်ဖူလာဖင်လန်ဖီဂျီဖာရိုပြင်သစ်အနောက် ဖရီ" + - "စီရန်အိုင်းရစ်ရှ်စကော့တစ်ရှ် ဂေးလစ်ခ်ဂါလီစီယာဂူအာရာနီဂူဂျာရသီမန်းဇ်ဟာဥ" + - "စာဟီးဘရူးဟိန္ဒူခရိုအေးရှားဟေတီဟန်ဂေရီအာမေးနီးယားဟီရဲရိုအင်တာလင်ဂွါအင်ဒ" + - "ိုနီးရှားအစ္ဂဘိုစီချွမ် ရီအီဒိုအိုက်စ်လန်အီတလီအီနုခ်တီတုဂျပန်ဂျာဗားဂျေ" + - "ာ်ဂျီယာကွန်ဂိုကီကူယူကွန်းယာမာကာဇာခ်ကလာအ်လီဆပ်ခမာကန္နာဒါကိုရီးယားကနူရီက" + - "က်ရှ်မီးယားကဒ်ကိုမီခိုနီရှ်ကာဂျစ်လက်တင်လူဇင်ဘတ်ဂန်ဒါလင်ဘာဂစ်ရှ်လင်ဂါလာ" + - "လာအိုလစ်သူဝေးနီးယားလူဘာ-ကတန်ဂါလတ်ဗီးယားမာလဂက်စီမာရှယ်လိဇ်မာအိုရီမက်ဆီဒ" + - "ိုးနီးယားမလေယာလမ်မွန်ဂိုလီးယားမာရသီမလေးမော်လ်တာမြန်မာနော်ရူးမြောက် အွန" + - "်န်ဒီဘီလီနီပေါအွန်ဒွန်ဂါဒတ်ခ်ျနော်ဝေ နီးနောစ်နော်ဝေ ဘွတ်ခ်မော်လ်တောင် " + - "အွန်န်ဘီလီနာဗာဟိုနရန်ဂျာအိုစီတန်အိုရိုမိုအိုရီရာအိုဆဲတစ်ခ်ပန်ချာပီပါဠိ" + - "ပိုလန်ပက်ရှ်တွန်းပေါ်တူဂီခီချူဝါအိုဝါရောမရွန်ဒီရိုမေနီယားရုရှကင်ရာဝန်ဒ" + - "ါသင်္သကရိုက်ဆာဒီနီးယားစင်ဒီမြောက် ဆာမိဆန်ဂိုစင်ဟာလာဆလိုဗက်ဆလိုဗေးနီးယာ" + - "းဆမိုအာရှိုနာဆိုမာလီအယ်လ်ဘေးနီးယားဆားဘီးယားဆွာဇီလန်တောင်ပိုင်း ဆိုသိုဆ" + - "ူဒန်ဆွီဒင်ဆွာဟီလီတမီးလ်တီလီဂူတာဂျစ်ထိုင်းတီဂ်ရင်ယာတာ့ခ်မင်နစ္စတန်တီဆဝါ" + - "နာတွန်ဂါတူရကီဆွန်ဂါတာတာတဟီတီဝီဂါယူကရိန်းအူရ်ဒူဥဇဘတ်ဗင်န်ဒါဗီယက်နမ်ဗိုလ" + - "ာပိုက်ဝါလူးန်ဝူလိုဖ်ဇိုစာဂျူးယိုရူဘာတရုတ်ဇူးလူးအာချေးဒန်မဲအဒိုင်ဂီအာဂ်" + - "ဟိန်းအိန်နုအာလီယုတောင် အာလ်တိုင်းအင်ဂလို ဆက္ကစွန်အန်ဂီကာမာပုချီအာရာပါဟ" + - "ိုအာစုအက်စတူရီယန်းအာဝါဒီဘာလီဘာဆာဘိန်ဘာဘီနာအနောက် ဘဲလိုချီဘို့ဂျ်ပူရီဘီ" + - "နီစစ္စီကာဗိုဒိုဘူဂစ်စ်ဘလင်စီဗူအာနိုချီဂါချူကီးစ်မာရီချော့တိုချာရိုကီချ" + - "ေယန်းဆိုရာနီခရီအိုလီဒါကိုတာဒါဂ်ဝါတိုင်တာဒယ်လာဝဲလ်ဒေါ့ဂ်ရစ်ဘ်ဇာမာအနိမ့်" + - " ဆိုဘီယန်းဒူအလာအလယ်ပိုင်း ဒတ်ချ်ဂျိုလာ-ဖွန်ရီဒဇာဂါအမ်ဘူအာဖိခ်ရှေးဟောင်း " + - "အီဂျစ်အီကာဂျုခ်အလယ်ပိုင်း အင်္ဂလိပ်အီဝန်ဒိုဖိလစ်ပိုင်ဖော်န်အလယ်ပိုင်း " + - "ပြင်သစ်ဖရန်စီစ်မြောက် ဖရီစီရန်အရှေ့ ဖရီစီရန်ဖရူလီယန်းဂါဂါဂုဇ်ဂီးဇ်ကာရီ" + - "ဗာတီအလယ်ပိုင်း အမြင့် ဂျာမန်ဂိုရိုတာလိုရှေးဟောင်း ဂရိဆွစ် ဂျာမန်ဂူစီးဂ" + - "ွစ်ချင်ဟာဝိုင်ယီဟီလီဂေနွန်မုံဆက္ကဆိုနီဟူပါအီဗန်အီဘီဘီယိုအီလိုကိုအင်ဂုရ" + - "ှ်လိုဂျ်ဘန်ဂွမ်ဘာမချာမီဂျူဒီယို-ပါရှန်ဂျူဒီယို-အာရဗီကဘိုင်လ်ကချင်ဂျူအူ" + - "ကမ်ဘာကဘာဒင်တိုင်အပ်မာခွန်ဒီကဘူဗာဒီအာနူကိုရိုခါစီကိုရာ ချီအီနီကကိုကလန်ဂ" + - "ျင်ကင်ဘွန်ဒူကိုမီ-ပါမြက်ကွန်ကနီကပ်ပဲလ်ကရာချေး-ဘာကာကာရီလီယန်ကူရုပ်ခ်ရှန" + - "်ဘာလာဘာဖီအာကိုလိုနီယန်းကွမ်မိုက်လာဒီနိုလန်ဂီလက်ဇ်ဂီးယားလာကိုတာလိုဇီမြေ" + - "ာက်လူရီလူဘာ-လူလူအာလွန်ဒါလူအိုမီဇိုလူရီအာမဒူရာမဂါဟီမိုင်သီလီမကာဆာမာဆိုင" + - "်မို့ခ်ရှာမန်ဒဲမီရုမောရစ်ရှအလယ်ပိုင်း အိုင်းရစ်ရှ်မာခူဝါ-မီအီတိုမီတာမစ" + - "်ခ်မက်ခ်စူကူမီနန်မန်ချူးမနိပူရမိုဟော့ခ်မိုစီမွန်ဒန်းဘာသာစကား အမျိုးမျိ" + - "ုးခရိခ်မီရန်ဒီးဇ်အီဇယာမာဇန်ဒါရန်နီနပိုလီတန်နာမာအနိမ့် ဂျာမန်နီဝါရီနီးရ" + - "ပ်စ်နူအဲယန်းကွာစီအိုအွန်ရဲဘွန်းနိုဂိုင်အွန်ကိုမြောက် ဆိုသိုနူအာနရန်ကို" + - "လီပန်ဂါစီနန်ပမ်ပန်ညာပါပီမင်တိုပလာအိုနိုင်ဂျီးရီးယား ပစ်ဂျင်ပါရှန် အဟော" + - "င်းပရူရှန်ကီခ်အီချီရပန်နူအီရရိုတွန်ဂန်ရွမ်ဘိုအာရိုမန်းနီးယန်းရူဝမ်ဆန်ဒ" + - "ါဝီဆခါဆမ်ဘူရူဆန်တာလီအွန်ဂမ်းဘေးဆန်ဂုစစ္စလီစကော့တ်စီနာကိုရာဘိုရို ဆမ်နီ" + - "အိုင်းရစ် ဟောင်းတာချယ်လ်ဟစ်ရှမ်းတောင် ဆာမိလူလီ ဆာမိအီနာရီ ဆာမိစခိုးလ် " + - "ဆမ်မီဆိုနင်ကေးဆရာနန် တွန်ဂိုဆာဟိုဆူကူမာကိုမိုရီးယန်းဆီးရီးယားတင်မ်နဲတီ" + - "ဆိုတီတွမ်တီဂရီကလင်ဂွန်တော့ခ် ပိစင်တရိုကိုတမ်ဘူကာတူဗာလူတာဆာဝါခ်တူဗန်အလယ" + - "်အာ့တလာစ် တာမာဇိုက်အူမူရတ်အူဘန်ဒူမသိသော ဘာသာဗိုင်ဗွန်ဂျိုဝေါလ်ဆာဝိုလက်" + - "တာဝါရေးဝေါလ်ပီရီကာလ်မိုက်ဆိုဂါရန်ဘဲန်ရမ်ဘာကွမ်တုံမိုရိုကို တမဇိုက်ဇူနီ" + - "ဘာသာစကားနှင့် ပတ်သက်သောအရာ မရှိပါဇာဇာဩစတြီးယား ဂျာမန်အလီမဲန်နစ် ဂျာမန်" + - "ဩစတြေးလျှ အင်္ဂလိပ်ကနေဒါ အင်္ဂလိပ်ဗြိတိသျှ အင်္ဂလိပ်အမေရိကန် အင်္ဂလိပ်" + - "စပိန် (ဥရောပ)ကနေဒါ ပြင်သစ်ဆွစ် ပြင်သစ်ဂျာမန် (နယ်သာလန်)ဖလီမစ်ရှ်ဘရာဇီး" + - " ပေါ်တူဂီဥရောပ ပေါ်တူဂီမော်လဒိုဗာကွန်ဂို ဆွာဟီလီ" - -var myLangIdx = []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0027, 0x0027, 0x0048, 0x0057, 0x0075, 0x008d, - 0x009c, 0x00a8, 0x00c3, 0x00db, 0x00ff, 0x0117, 0x012f, 0x0156, - 0x0171, 0x0186, 0x019e, 0x01ad, 0x01c2, 0x01e6, 0x01fb, 0x0216, - 0x022e, 0x0246, 0x0252, 0x025e, 0x0286, 0x02a1, 0x02aa, 0x02c2, - 0x02d4, 0x02e6, 0x02fb, 0x0307, 0x0310, 0x032b, 0x034f, 0x035e, - 0x038b, 0x039d, 0x03af, 0x03bb, 0x03cd, 0x03dc, 0x03eb, 0x0400, - 0x042b, 0x044f, 0x0489, 0x04a1, 0x04b9, 0x04d1, 0x04e3, 0x04f2, - 0x0507, 0x0519, 0x0519, 0x053a, 0x0546, 0x055b, 0x057c, 0x0591, - // Entry 40 - 7F - 0x05b2, 0x05d9, 0x05d9, 0x05ee, 0x060a, 0x060a, 0x0619, 0x0637, - 0x0646, 0x0664, 0x0673, 0x0685, 0x06a3, 0x06b8, 0x06ca, 0x06e5, - 0x06f7, 0x0715, 0x071e, 0x0733, 0x074e, 0x075d, 0x0781, 0x078a, - 0x0799, 0x07b1, 0x07c3, 0x07d5, 0x07ed, 0x07fc, 0x081d, 0x0832, - 0x0841, 0x086b, 0x088a, 0x08a5, 0x08bd, 0x08db, 0x08f0, 0x091d, - 0x0935, 0x095c, 0x096b, 0x0977, 0x098f, 0x09a1, 0x09b6, 0x09ed, - 0x09fc, 0x0a1a, 0x0a2c, 0x0a57, 0x0a8e, 0x0abc, 0x0ad1, 0x0ae6, - 0x0afe, 0x0afe, 0x0b19, 0x0b2e, 0x0b4c, 0x0b64, 0x0b70, 0x0b82, - // Entry 80 - BF - 0x0ba3, 0x0bbb, 0x0bdf, 0x0beb, 0x0bfd, 0x0c1b, 0x0c27, 0x0c45, - 0x0c66, 0x0c84, 0x0c93, 0x0cb2, 0x0cc4, 0x0cd9, 0x0cee, 0x0d15, - 0x0d27, 0x0d39, 0x0d4e, 0x0d78, 0x0d93, 0x0dab, 0x0ddf, 0x0dee, - 0x0e00, 0x0e15, 0x0e27, 0x0e39, 0x0e4b, 0x0e5d, 0x0e78, 0x0ea5, - 0x0eba, 0x0ecc, 0x0edb, 0x0eed, 0x0ef9, 0x0f08, 0x0f14, 0x0f2c, - 0x0f3e, 0x0f4d, 0x0f62, 0x0f7a, 0x0f98, 0x0fad, 0x0fc2, 0x0fd1, - 0x0fdd, 0x0ff2, 0x0ff2, 0x1001, 0x1013, 0x1025, 0x1025, 0x1034, - 0x104c, 0x104c, 0x104c, 0x1067, 0x1079, 0x1079, 0x1079, 0x108b, - // Entry C0 - FF - 0x108b, 0x10b9, 0x10e7, 0x10fc, 0x10fc, 0x1111, 0x1111, 0x112c, - 0x112c, 0x112c, 0x112c, 0x112c, 0x112c, 0x1138, 0x1138, 0x115c, - 0x115c, 0x116e, 0x116e, 0x117a, 0x117a, 0x1186, 0x1186, 0x1186, - 0x1186, 0x1186, 0x1198, 0x1198, 0x11a4, 0x11a4, 0x11a4, 0x11cf, - 0x11f0, 0x11f0, 0x11fc, 0x11fc, 0x11fc, 0x1211, 0x1211, 0x1211, - 0x1211, 0x1211, 0x1223, 0x1223, 0x1223, 0x1238, 0x1238, 0x1244, - 0x1244, 0x1244, 0x1244, 0x1244, 0x1244, 0x1244, 0x125f, 0x126e, - 0x126e, 0x126e, 0x1286, 0x1292, 0x1292, 0x12aa, 0x12aa, 0x12c2, - // Entry 100 - 13F - 0x12d7, 0x12ec, 0x12ec, 0x12ec, 0x12ec, 0x1304, 0x1304, 0x1319, - 0x132b, 0x1340, 0x135b, 0x135b, 0x137c, 0x137c, 0x1388, 0x1388, - 0x13b6, 0x13b6, 0x13c5, 0x13f6, 0x141b, 0x141b, 0x142a, 0x1439, - 0x144b, 0x144b, 0x147c, 0x1497, 0x1497, 0x14d1, 0x14d1, 0x14e9, - 0x14e9, 0x14e9, 0x1507, 0x1507, 0x1519, 0x1519, 0x154d, 0x1565, - 0x1565, 0x1590, 0x15b8, 0x15d3, 0x15d9, 0x15eb, 0x15eb, 0x15eb, - 0x15eb, 0x15eb, 0x15fa, 0x1612, 0x1612, 0x1656, 0x1656, 0x1656, - 0x1656, 0x1677, 0x1677, 0x1677, 0x169f, 0x16be, 0x16be, 0x16be, - // Entry 140 - 17F - 0x16cd, 0x16e5, 0x16e5, 0x16e5, 0x1700, 0x1700, 0x171e, 0x171e, - 0x1727, 0x1742, 0x1742, 0x174e, 0x175d, 0x1778, 0x1790, 0x17a8, - 0x17a8, 0x17a8, 0x17c3, 0x17d5, 0x17e7, 0x1812, 0x183a, 0x183a, - 0x183a, 0x1852, 0x1861, 0x1870, 0x187f, 0x187f, 0x1891, 0x1891, - 0x18a9, 0x18c1, 0x18e2, 0x18e2, 0x18f4, 0x18f4, 0x1900, 0x1900, - 0x1925, 0x1925, 0x1925, 0x1931, 0x1949, 0x1964, 0x1986, 0x199b, - 0x199b, 0x19b0, 0x19d2, 0x19d2, 0x19d2, 0x19ed, 0x1a05, 0x1a1d, - 0x1a2f, 0x1a53, 0x1a6e, 0x1a6e, 0x1a83, 0x1a92, 0x1a92, 0x1a92, - // Entry 180 - 1BF - 0x1ab3, 0x1ab3, 0x1ab3, 0x1ab3, 0x1ac8, 0x1ac8, 0x1ac8, 0x1ac8, - 0x1ad7, 0x1af5, 0x1af5, 0x1b14, 0x1b14, 0x1b26, 0x1b35, 0x1b44, - 0x1b56, 0x1b56, 0x1b56, 0x1b65, 0x1b65, 0x1b74, 0x1b8f, 0x1b9e, - 0x1b9e, 0x1bb3, 0x1bb3, 0x1bce, 0x1bce, 0x1bdd, 0x1be9, 0x1c01, - 0x1c44, 0x1c6c, 0x1c78, 0x1c96, 0x1cb1, 0x1cc6, 0x1cd8, 0x1cf3, - 0x1d02, 0x1d02, 0x1d1a, 0x1d54, 0x1d63, 0x1d81, 0x1d81, 0x1d81, - 0x1d81, 0x1d90, 0x1db4, 0x1db4, 0x1dcf, 0x1ddb, 0x1e00, 0x1e12, - 0x1e2a, 0x1e42, 0x1e42, 0x1e5a, 0x1e7b, 0x1e93, 0x1e93, 0x1e93, - // Entry 1C0 - 1FF - 0x1ea8, 0x1ecd, 0x1ed9, 0x1ed9, 0x1ed9, 0x1ef4, 0x1ef4, 0x1ef4, - 0x1ef4, 0x1ef4, 0x1f12, 0x1f12, 0x1f2a, 0x1f48, 0x1f5a, 0x1f5a, - 0x1f9d, 0x1f9d, 0x1f9d, 0x1fc5, 0x1fc5, 0x1fc5, 0x1fc5, 0x1fc5, - 0x1fc5, 0x1fda, 0x1fda, 0x1ff5, 0x1ff5, 0x1ff5, 0x200d, 0x202e, - 0x202e, 0x202e, 0x2043, 0x2043, 0x2043, 0x2043, 0x2043, 0x2073, - 0x2082, 0x2097, 0x20a0, 0x20a0, 0x20b5, 0x20b5, 0x20ca, 0x20ca, - 0x20eb, 0x20fa, 0x210c, 0x2121, 0x2121, 0x2121, 0x2121, 0x212d, - 0x212d, 0x212d, 0x215e, 0x218c, 0x218c, 0x21ad, 0x21bc, 0x21bc, - // Entry 200 - 23F - 0x21bc, 0x21bc, 0x21bc, 0x21d8, 0x21f1, 0x2210, 0x2235, 0x2250, - 0x2250, 0x2278, 0x2278, 0x2287, 0x2287, 0x2299, 0x2299, 0x2299, - 0x22c0, 0x22c0, 0x22db, 0x22db, 0x22db, 0x22f0, 0x22ff, 0x22ff, - 0x2311, 0x2320, 0x2320, 0x2320, 0x2320, 0x2338, 0x2338, 0x2338, - 0x2338, 0x2338, 0x235a, 0x235a, 0x236f, 0x236f, 0x236f, 0x236f, - 0x2384, 0x2396, 0x23ae, 0x23bd, 0x23fd, 0x2412, 0x2412, 0x2427, - 0x2446, 0x2455, 0x2455, 0x2455, 0x2455, 0x2455, 0x2455, 0x2455, - 0x246d, 0x2482, 0x249a, 0x24a9, 0x24a9, 0x24c4, 0x24c4, 0x24df, - // Entry 240 - 27F - 0x24df, 0x24ee, 0x24ee, 0x24ee, 0x2503, 0x2512, 0x2512, 0x2527, - 0x2527, 0x2527, 0x2527, 0x2527, 0x2558, 0x2564, 0x25c3, 0x25cf, - 0x25cf, 0x25cf, 0x25fd, 0x262e, 0x2665, 0x2690, 0x26c4, 0x26f8, - 0x26f8, 0x2719, 0x2719, 0x2719, 0x273e, 0x2760, 0x278d, 0x27a8, - 0x27d3, 0x27fb, 0x2819, 0x2819, 0x2844, -} // Size: 1250 bytes - -const neLangStr string = "" + // Size: 13518 bytes - "अफारअब्खाजियालीअवेस्तानअफ्रिकान्सआकानअम्हारिकअरागोनीअरबीआसामीअवारिकऐमारा" + - "अजरबैजानीबास्किरबेलारुसीबुल्गेरियालीबिस्लामबाम्बाराबंगालीतिब्बतीब्रेटन" + - "बोस्नियालीक्याटालनचेचेनचामोर्रोकोर्सिकनक्रीचेकचर्च स्लाभिकचुभासवेल्शडे" + - "निसजर्मनदिबेहीजोङ्खाइवीग्रीकअङ्ग्रेजीएस्पेरान्तोस्पेनीइस्टोनियनबास्कफा" + - "रसीफुलाहफिनिसफिजियनफारोजफ्रान्सेलीपश्चिमी फ्रिसियनआइरिसस्कटिस गाएलिकगल" + - "िसियालीगुवारानीगुजरातीमान्क्सहाउसाहिब्रुहिन्दीहिरी मोटुक्रोयसियालीहैटि" + - "याली क्रियोलहङ्गेरियालीआर्मेनियालीहेरेरोइन्टर्लिङ्गुआइन्डोनेसियालीइन्ट" + - "रलिङ्ग्वेइग्बोसिचुआन यिइनुपिआक्इडोआइसल्यान्डियालीइटालेलीइनुक्टिटुटजापा" + - "नीजाभानीजर्जियालीकोङ्गोकिकुयुकुआन्यामाकाजाखकालालिसुटखमेरकन्नाडाकोरियाल" + - "ीकानुरीकास्मिरीकुर्दीकोमीकोर्निसकिर्गिजल्याटिनलक्जेम्बर्गीगान्डालिम्बु" + - "र्गीलिङ्गालालाओलिथुआनियालीलुबा-काताङ्गालात्भियालीमलागासीमार्सालीमाओरीम" + - "्यासेडोनियनमलयालममङ्गोलियालीमराठीमलायमाल्टिजबर्मेलीनाउरूउत्तरी न्डेबेल" + - "ेनेपालीन्दोन्गाडचनर्वेली नाइनोर्स्कनर्वेली बोकमालदक्षिण न्देबेलेनाभाजो" + - "न्यान्जाअक्सिटनओजिब्वाओरोमोउडियाअोस्सेटिकपंजाबीपालीपोलिसपास्तोपोर्तुगी" + - "क्वेचुवारोमानिसरुन्डीरोमानियालीरसियालीकिन्यारवान्डासंस्कृतसार्डिनियाली" + - "सिन्धीउत्तरी सामीसाङ्गोसिन्हालीस्लोभाकियालीस्लोभेनियालीसामोआशोनासोमाली" + - "अल्बानियालीसर्बियालीस्वातीदक्षिणी सोथोसुडानीस्विडिसस्वाहिलीतामिलतेलुगु" + - "ताजिकथाईटिग्रिन्याटर्कमेनट्स्वानाटोङ्गनटर्किशट्सोङ्गातातारटाहिटियनउइघु" + - "रयुक्रेनीउर्दुउज्बेकीभेन्डाभियतनामीभोलापिकवाल्लुनवुलुफखोसायिद्दिसयोरूव" + - "ाचिनियाँजुलुअचाइनिजअकोलीअदाङमेअदिघेअफ्रिहिलीआघेमअइनुअक्कादियालीअलाबामा" + - "अलेउटघेग अल्बानियालीदक्षिणी आल्टाइपुरातन अङ्ग्रेजीअङ्गिकाअरामाइकमापुचे" + - "अराओनाअरापाहोअल्जेरियाली अरबीअरावाकमोरोक्कोली अरबीइजिप्ट अरबीआसुअमेरिक" + - "ी साङ्केतिक भाषाअस्टुरियालीकोटावाअवधीबालुचीबालीबाभारियालीबासाबामुनबाता" + - "क तोबाघोमालाबेजाबेम्बाबेटावीबेनाबाफुटबडागापश्चिम बालोचीभोजपुरीबिकोलबिन" + - "ीबन्जारकोमसिक्सिकाविष्णुप्रियाबाख्तिआरीब्रजब्राहुइबोडोअकुजबुरिआतबुगिनि" + - "यालीबुलुब्लिनमेडुम्बाकाड्डोक्यारिबकायुगाअट्सामसेबुआनोचिगाचिब्चाचागाटाई" + - "चुकेसेमारीचिनुक जार्गनचोक्टावचिपेव्यानचेरोकीचेयेन्नेकेन्द्रीय कुर्दीको" + - "प्टिककापिज्नोनक्रिमियाली तुर्कसेसेल्वा क्रिओल फ्रान्सेलीकासुवियनडाकोटा" + - "दार्ग्वाताइतादेलावरदोग्रिबदिन्काजर्माडोगरीतल्लो सोर्बियनकेन्द्रीय दुसु" + - "नदुवालामध्य डचजोला-फोनिलद्युलादाजागाएम्बुएफिकएमिलियालीपुरातन इजिप्टीएक" + - "ाजुकएलामाइटमध्य अङ्ग्रेजीकेन्द्रीय युपिकइवोन्डोएक्सट्रेमादुरालीफाङफिलि" + - "पिनीफोनकाहुन फ्रान्सेलीमध्य फ्रान्सेलीपुरातन फ्रान्सेलीअर्पितानउत्तरी " + - "फ्रिजीपूर्वी फ्रिसियालीफ्रिउलियालीगागगाउजगान चिनियाँगायोग्बायागिजगिल्ब" + - "र्टीगिलाकीमध्य उच्च जर्मनपुरातन उच्च जर्मनगोवा कोन्कानीगोन्डीगोरोन्टाल" + - "ोगोथिकग्रेबोपुरातन ग्रिकस्वीस जर्मनफ्राफ्रागुसीगुइचिनहाइदाहक्का चिनिया" + - "ँहवाइयनफिजी हिन्दीहिलिगायनोनहिट्टिटेहमोङमाथिल्लो सोर्बियनहुपाइबानइबिबि" + - "योइयोकोइन्गसइन्ग्रियालीजमैकाली क्रेओले अङ्ग्रेजीलोज्बानन्गोम्बामाचामेज" + - "ुडियो-फारसीजुडियो-अरबीजुटिसकारा-काल्पाककाबिलकाचिनज्जुकाम्बाकावीकाबार्द" + - "ियालीकानेम्बुटुआपमाकोन्डेकाबुभेर्डियानुकेनयाङकोरोकाइनगाङखासीखोटानीकोयर" + - "ा चिनीखोवारकिर्मान्जकीकाकोकालेन्जिनकिम्बुन्डुकोमी-पर्म्याककोन्कानीकोस्" + - "रालीक्पेल्लेकाराचाय-बाल्करक्रिओकिनाराय-एकरेलियनकुरुखशाम्बालाबाफियाकोलो" + - "ग्नियालीकुमिककुतेनाइलाडिनोलाङ्गीलाहन्डालाम्बालाज्घियालीलिङ्गुवा फ्राङ्" + - "का नोभालिगुरियालीलिभोनियालीलाकोतालोम्बार्डमोङ्गोलोजीउत्तरी लुरीलाट्गाल" + - "ीलुबा-लुलुआलुइसेनोलुन्डालुओमिजोलुइयासाहित्यिक चिनियाँलाजमादुरेसेमाफामग" + - "धीमैथिलीमाकासारमान्दिङोमसाईमाबामोक्षमन्दरमेन्डेमेरूमोरिसेनमध्य आयरिसमा" + - "खुवा-मिट्टोमेटामिकमाकमिनाङकाबाउमान्चुमनिपुरीमोहकमोस्सीमुन्डाङबहुभाषाक्" + - "रिकमिरान्डीमाडवारीमेन्टावाईम्येनेइर्ज्यामजानडेरानीमिन नान चिनियाँनेपोल" + - "िटाननामातल्लो जर्मननेवारीनियासनिउएनअओ नागाक्वासियोन्गिएम्बुननोगाइपुरान" + - "ो नोर्सेनोभियलनकोउत्तरी सोथोनुएरपरम्परागत नेवारीन्यामवेजीन्यान्कोलन्यो" + - "रोनजिमाओसागेअटोमन तुर्कीपाङ्गासिनानपाहलावीपामपाङ्गापापियामेन्तोपालाउवा" + - "लीपिकार्डनाइजेरियाली पिड्जिनपेन्सिलभानियाली जर्मनपुरातन फारसीपालाटिन ज" + - "र्मनफोनिसियालीपिएडमोन्तेसेपोन्टिकप्रसियालीपुरातन प्रोभेन्कालकिचेचिम्बो" + - "राजो उच्चस्थान किचुआराजस्थानीरापानुईरारोटोङ्गानरोम्बोअरोमानीयालीर्" + - "\u200cवासान्डेअसाखासाम्बुरूसान्तालीन्गामबायसाङ्गुसिसिलियालीस्कट्सदक्षिणी" + - " कुर्दिशसेनाकोयराबोरो सेन्नीपुरातन आयरीसटाचेल्हिटशानचाड अरबीतल्लो सिलेसि" + - "यालीदक्षिणी सामीलुले सामीइनारी सामीस्कोइट सामीसोनिन्केस्रानान टोङ्गोसा" + - "होसुकुमासुसूसुमेरियालीकोमोरीपरम्परागत सिरियाकसिरियाकटिम्नेटेसोटेटुमटिग" + - "्रेक्लिङ्गनन्यास टोङ्गाटोक पिसिनटारोकोमुस्लिम टाटटुम्बुकाटुभालुतासावाक" + - "टुभिनियालीकेन्द्रीय एट्लास टामाजिघटउड्मुर्टउम्बुन्डीअज्ञात भाषाभाइमुख्" + - "य-फ्राङ्कोनियालीभुन्जोवाल्सरवोलेट्टावारेवार्ल्पिरीकाल्मिकमिनग्रेलियाली" + - "सोगायाङ्बेनयेम्बान्हिनगातुक्यान्टोनिजब्लिससिम्बोल्समानक मोरोक्कोन तामा" + - "जिघटजुनीभाषिक सामग्री छैनजाजाआधुनिक मानक अरबीस्वीस हाई जर्मनअस्ट्रेलिय" + - "ाली अङ्ग्रेजीक्यानाडेली अङ्ग्रेजीबेलायती अङ्ग्रेजीअमेरिकी अङ्ग्रेजील्य" + - "ाटिन अमेरिकी स्पेनीयुरोपेली स्पेनीमेक्सिकन स्पेनीक्यानेडाली फ्रान्सेली" + - "तल्लो साक्सनफ्लेमिसब्राजिली पोर्तुगीयुरोपेली पोर्तुगीमोल्डाभियालीकङ्गो" + - " स्वाहिलीसरलिकृत चिनियाँपरम्परागत चिनियाँ" - -var neLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x002d, 0x0045, 0x0063, 0x006f, 0x0087, 0x009c, - 0x00a8, 0x00b7, 0x00c9, 0x00d8, 0x00f3, 0x0108, 0x0120, 0x0144, - 0x0159, 0x0171, 0x0183, 0x0198, 0x01aa, 0x01c8, 0x01e0, 0x01ef, - 0x0207, 0x021f, 0x022b, 0x0234, 0x0256, 0x0265, 0x0274, 0x0283, - 0x0292, 0x02a4, 0x02b6, 0x02bf, 0x02ce, 0x02e9, 0x030a, 0x031c, - 0x0337, 0x0346, 0x0355, 0x0364, 0x0373, 0x0385, 0x0394, 0x03b2, - 0x03e0, 0x03ef, 0x0414, 0x042f, 0x0447, 0x045c, 0x0471, 0x0480, - 0x0492, 0x04a4, 0x04bd, 0x04de, 0x050c, 0x052d, 0x054e, 0x0560, - // Entry 40 - 7F - 0x0587, 0x05ae, 0x05d5, 0x05e4, 0x05fd, 0x0615, 0x061e, 0x064b, - 0x0660, 0x067e, 0x0690, 0x06a2, 0x06bd, 0x06cf, 0x06e1, 0x06fc, - 0x070b, 0x0726, 0x0732, 0x0747, 0x075f, 0x0771, 0x0789, 0x079b, - 0x07a7, 0x07bc, 0x07d1, 0x07e6, 0x080a, 0x081c, 0x083a, 0x0852, - 0x085b, 0x087c, 0x08a1, 0x08bf, 0x08d4, 0x08ec, 0x08fb, 0x091f, - 0x0931, 0x0952, 0x0961, 0x096d, 0x0982, 0x0997, 0x09a6, 0x09d1, - 0x09e3, 0x09fb, 0x0a01, 0x0a35, 0x0a5d, 0x0a88, 0x0a9a, 0x0ab2, - 0x0ac7, 0x0adc, 0x0aeb, 0x0afa, 0x0b15, 0x0b27, 0x0b33, 0x0b42, - // Entry 80 - BF - 0x0b54, 0x0b6c, 0x0b84, 0x0b99, 0x0bab, 0x0bc9, 0x0bde, 0x0c05, - 0x0c1a, 0x0c3e, 0x0c50, 0x0c6f, 0x0c81, 0x0c99, 0x0cbd, 0x0ce1, - 0x0cf0, 0x0cfc, 0x0d0e, 0x0d2f, 0x0d4a, 0x0d5c, 0x0d7e, 0x0d90, - 0x0da5, 0x0dbd, 0x0dcc, 0x0dde, 0x0ded, 0x0df6, 0x0e14, 0x0e29, - 0x0e41, 0x0e53, 0x0e65, 0x0e7d, 0x0e8c, 0x0ea4, 0x0eb3, 0x0ecb, - 0x0eda, 0x0eef, 0x0f01, 0x0f19, 0x0f2e, 0x0f43, 0x0f52, 0x0f5e, - 0x0f73, 0x0f85, 0x0f85, 0x0f9a, 0x0fa6, 0x0fbb, 0x0fca, 0x0fdc, - 0x0feb, 0x0feb, 0x1006, 0x1012, 0x101e, 0x103f, 0x1054, 0x1063, - // Entry C0 - FF - 0x108e, 0x10b6, 0x10e4, 0x10f9, 0x110e, 0x1120, 0x1132, 0x1147, - 0x1175, 0x1175, 0x1187, 0x11b2, 0x11d1, 0x11da, 0x1218, 0x1239, - 0x124b, 0x1257, 0x1269, 0x1275, 0x1293, 0x129f, 0x12ae, 0x12ca, - 0x12dc, 0x12e8, 0x12fa, 0x130c, 0x1318, 0x1327, 0x1336, 0x135b, - 0x1370, 0x137f, 0x138b, 0x139d, 0x13a6, 0x13be, 0x13e2, 0x13fd, - 0x1409, 0x141e, 0x142a, 0x1436, 0x1448, 0x1466, 0x1472, 0x1481, - 0x1499, 0x14ab, 0x14c0, 0x14d2, 0x14e4, 0x14e4, 0x14f9, 0x1505, - 0x1517, 0x152c, 0x153e, 0x154a, 0x156c, 0x1581, 0x159c, 0x15ae, - // Entry 100 - 13F - 0x15c6, 0x15f4, 0x1609, 0x1624, 0x1652, 0x169c, 0x16b4, 0x16c6, - 0x16de, 0x16ed, 0x16ff, 0x16ff, 0x1714, 0x1726, 0x1735, 0x1744, - 0x176c, 0x1797, 0x17a9, 0x17bc, 0x17d8, 0x17ea, 0x17fc, 0x180b, - 0x1817, 0x1832, 0x185a, 0x186c, 0x1881, 0x18a9, 0x18d4, 0x18e9, - 0x1919, 0x1922, 0x193a, 0x193a, 0x1943, 0x1971, 0x199c, 0x19cd, - 0x19e5, 0x1a0a, 0x1a3b, 0x1a5c, 0x1a62, 0x1a71, 0x1a90, 0x1a9c, - 0x1aae, 0x1aae, 0x1ab7, 0x1ad2, 0x1ae4, 0x1b0d, 0x1b3c, 0x1b61, - 0x1b73, 0x1b91, 0x1ba0, 0x1bb2, 0x1bd4, 0x1bf3, 0x1bf3, 0x1c0b, - // Entry 140 - 17F - 0x1c17, 0x1c29, 0x1c38, 0x1c5d, 0x1c6f, 0x1c8e, 0x1cac, 0x1cc4, - 0x1cd0, 0x1d01, 0x1d01, 0x1d0d, 0x1d19, 0x1d2e, 0x1d3d, 0x1d4c, - 0x1d6d, 0x1db4, 0x1dc9, 0x1de1, 0x1df3, 0x1e15, 0x1e34, 0x1e43, - 0x1e65, 0x1e74, 0x1e83, 0x1e8f, 0x1ea1, 0x1ead, 0x1ed1, 0x1ee9, - 0x1ef5, 0x1f0d, 0x1f37, 0x1f49, 0x1f55, 0x1f6a, 0x1f76, 0x1f88, - 0x1fa4, 0x1fb3, 0x1fd4, 0x1fe0, 0x1ffb, 0x2019, 0x203e, 0x2056, - 0x206e, 0x2086, 0x20ae, 0x20bd, 0x20d6, 0x20eb, 0x20fa, 0x2112, - 0x2124, 0x2148, 0x2157, 0x216c, 0x217e, 0x2190, 0x21a5, 0x21b7, - // Entry 180 - 1BF - 0x21d5, 0x2213, 0x2231, 0x224f, 0x2261, 0x227c, 0x228e, 0x228e, - 0x229a, 0x22b9, 0x22d1, 0x22ed, 0x2302, 0x2314, 0x231d, 0x2329, - 0x2338, 0x2369, 0x2372, 0x238a, 0x2396, 0x23a2, 0x23b4, 0x23c9, - 0x23e1, 0x23ed, 0x23f9, 0x2408, 0x2417, 0x2429, 0x2435, 0x244a, - 0x2466, 0x248b, 0x2497, 0x24a9, 0x24c7, 0x24d9, 0x24ee, 0x24fa, - 0x250c, 0x250c, 0x2521, 0x2536, 0x2545, 0x255d, 0x2572, 0x258d, - 0x259f, 0x25b4, 0x25d2, 0x25fb, 0x2616, 0x2622, 0x2641, 0x2653, - 0x2662, 0x2671, 0x2684, 0x269c, 0x26ba, 0x26c9, 0x26ee, 0x2700, - // Entry 1C0 - 1FF - 0x2709, 0x2728, 0x2734, 0x2762, 0x277d, 0x2798, 0x27aa, 0x27b9, - 0x27c8, 0x27ea, 0x280b, 0x2820, 0x283b, 0x285f, 0x287a, 0x288f, - 0x28c6, 0x2903, 0x2903, 0x2925, 0x294a, 0x2968, 0x298c, 0x29a1, - 0x29a1, 0x29bc, 0x29f0, 0x29fc, 0x2a46, 0x2a61, 0x2a76, 0x2a97, - 0x2a97, 0x2a97, 0x2aa9, 0x2aa9, 0x2aa9, 0x2aa9, 0x2aa9, 0x2aca, - 0x2ad9, 0x2aee, 0x2afa, 0x2afa, 0x2b12, 0x2b12, 0x2b2a, 0x2b2a, - 0x2b42, 0x2b54, 0x2b72, 0x2b84, 0x2b84, 0x2baf, 0x2baf, 0x2bbb, - 0x2bbb, 0x2bbb, 0x2be9, 0x2c0b, 0x2c0b, 0x2c26, 0x2c2f, 0x2c45, - // Entry 200 - 23F - 0x2c45, 0x2c73, 0x2c73, 0x2c95, 0x2cae, 0x2cca, 0x2ce9, 0x2d01, - 0x2d01, 0x2d29, 0x2d29, 0x2d35, 0x2d35, 0x2d47, 0x2d53, 0x2d71, - 0x2d83, 0x2db4, 0x2dc9, 0x2dc9, 0x2dc9, 0x2ddb, 0x2de7, 0x2de7, - 0x2df6, 0x2e08, 0x2e08, 0x2e08, 0x2e08, 0x2e20, 0x2e20, 0x2e20, - 0x2e20, 0x2e42, 0x2e5b, 0x2e5b, 0x2e6d, 0x2e6d, 0x2e6d, 0x2e8c, - 0x2ea4, 0x2eb6, 0x2ecb, 0x2ee9, 0x2f30, 0x2f48, 0x2f48, 0x2f63, - 0x2f82, 0x2f8b, 0x2f8b, 0x2f8b, 0x2f8b, 0x2fc5, 0x2fc5, 0x2fc5, - 0x2fd7, 0x2fe9, 0x3001, 0x300d, 0x300d, 0x302b, 0x302b, 0x3040, - // Entry 240 - 27F - 0x3067, 0x3073, 0x3073, 0x3073, 0x3088, 0x309a, 0x30b5, 0x30d6, - 0x30d6, 0x3100, 0x3100, 0x3100, 0x3141, 0x314d, 0x317c, 0x3188, - 0x31b4, 0x31b4, 0x31b4, 0x31dd, 0x3220, 0x325a, 0x328b, 0x32bc, - 0x32fa, 0x3325, 0x3350, 0x3350, 0x338d, 0x338d, 0x33af, 0x33c4, - 0x33f5, 0x3426, 0x344a, 0x344a, 0x3472, 0x349d, 0x34ce, -} // Size: 1254 bytes - -const nlLangStr string = "" + // Size: 4765 bytes - "AfarAbchazischAvestischAfrikaansAkanAmhaarsAragoneesArabischAssameesAvar" + - "ischAymaraAzerbeidzjaansBasjkiersWit-RussischBulgaarsBislamaBambaraBenga" + - "alsTibetaansBretonsBosnischCatalaansTsjetsjeensChamorroCorsicaansCreeTsj" + - "echischKerkslavischTsjoevasjischWelshDeensDuitsDivehiDzongkhaEweGrieksEn" + - "gelsEsperantoSpaansEstischBaskischPerzischFulahFinsFijischFaeröersFransF" + - "riesIersSchots-GaelischGalicischGuaraníGujaratiManxHausaHebreeuwsHindiHi" + - "ri MotuKroatischHaïtiaans CreoolsHongaarsArmeensHereroInterlinguaIndones" + - "ischInterlingueIgboYiInupiaqIdoIJslandsItaliaansInuktitutJapansJavaansGe" + - "orgischKongoGikuyuKuanyamaKazachsGroenlandsKhmerKannadaKoreaansKanuriKas" + - "jmiriKoerdischKomiCornishKirgizischLatijnLuxemburgsLugandaLimburgsLingal" + - "aLaotiaansLitouwsLuba-KatangaLetsMalagassischMarshalleesMaoriMacedonisch" + - "MalayalamMongoolsMarathiMaleisMalteesBirmaansNauruaansNoord-NdebeleNepal" + - "eesNdongaNederlandsNoors - NynorskNoors - BokmålZuid-NdbeleNavajoNyanjaO" + - "ccitaansOjibwaAfaan OromoOdiaOssetischPunjabiPaliPoolsPasjtoePortugeesQu" + - "echuaReto-RomaansKirundiRoemeensRussischKinyarwandaSanskrietSardijnsSind" + - "hiNoord-SamischSangoSingaleesSlowaaksSloveensSamoaansShonaSomalischAlban" + - "eesServischSwaziZuid-SothoSoendaneesZweedsSwahiliTamilTeluguTadzjieksTha" + - "iTigrinyaTurkmeensTswanaTongaansTurksTsongaTataarsTahitiaansOeigoersOekr" + - "aïensUrduOezbeeksVendaVietnameesVolapükWaalsWolofXhosaJiddischYorubaZhua" + - "ngChineesZoeloeAtjehsAkoliAdangmeAdygeesTunesisch ArabischAfrihiliAghemA" + - "inoAkkadischAlabamaAleoetischGegischZuid-AltaïschOudengelsAngikaArameesM" + - "apudungunAraonaArapahoAlgerijns ArabischArawakMarokkaans ArabischEgyptis" + - "ch ArabischAsuAmerikaanse GebarentaalAsturischKotavaAwadhiBeloetsjiBalin" + - "eesBeiersBasaBamounBatak TobaGhomala’BejaBembaBetawiBenaBafutBadagaWeste" + - "rs BeloetsjiBhojpuriBikolBiniBanjarKomSiksikaBishnupriyaBakhtiariBrajBra" + - "huiBodoAkooseBoerjatischBugineesBuluBlinMedumbaCaddoCaribischCayugaAtsam" + - "CebuanoChigaChibchaChagataiChuukeesMariChinook JargonChoctawChipewyanChe" + - "rokeeCheyenneSoranîKoptischCapiznonKrim-TataarsSeychellencreoolsKasjoebi" + - "schDakotaDargwaTaitaDelawareSlaveyDogribDinkaZarmaDogriNedersorbischDusu" + - "nDualaMiddelnederlandsJola-FonyiDyulaDazagaEmbuEfikEmilianoOudegyptischE" + - "kajukElamitischMiddelengelsYupikEwondoExtremeensFangFilipijnsTornedal-Fi" + - "nsFonCajun-FransMiddelfransOudfransArpitaansNoord-FriesOost-FriesFriulis" + - "chGaGagaoezischGanyuGayoGbayaZoroastrisch DariGe’ezGilberteesGilakiMidde" + - "lhoogduitsOudhoogduitsGoa KonkaniGondiGorontaloGothischGreboOudgrieksZwi" + - "tserduitsWayuuGuruneGusiiGwichʼinHaidaHakkaHawaïaansFijisch HindiHiligay" + - "nonHettitischHmongOppersorbischXiangyuHupaIbanIbibioIlokoIngoesjetischIn" + - "grischJamaicaans CreoolsLojbanNgombaMachameJudeo-PerzischJudeo-ArabischJ" + - "utlandsKarakalpaksKabylischKachinJjuKambaKawiKabardischKanembuTyapMakond" + - "eKaapverdisch CreoolsKenyangKoroKaingangKhasiKhotaneesKoyra ChiiniKhowar" + - "KirmanckîKakoKalenjinKimbunduKomi-PermjaaksKonkaniKosraeaansKpelleKarats" + - "jaj-BalkarischKrioKinaray-aKarelischKurukhShambalaBafiaKölschKoemuksKute" + - "naiLadinoLangiLahndaLambaLezgischLingua Franca NovaLigurischLijfsLakotaL" + - "ombardischMongoLouisiana-CreoolsLoziNoordelijk LuriLetgaalsLuba-LuluaLui" + - "senoLundaLuoMizoLuyiaKlassiek ChineesLazischMadoereesMafaMagahiMaithiliM" + - "akassaarsMandingoMaaMabaMoksjaMandarMendeMeruMorisyenMiddeliersMakhuwa-M" + - "eettoMeta’Mi’kmaqMinangkabauMantsjoeMeiteiMohawkMossiWest-MariMundangMee" + - "rdere talenCreekMirandeesMarwariMentawaiMyeneErzjaMazanderaniMinnanyuNap" + - "olitaansNamaNedersaksischNewariNiasNiueaansAo NagaNgumbaNgiemboonNogaiOu" + - "dnoorsNovialN’KoNoord-SothoNuerKlassiek NepalbhasaNyamweziNyankoleNyoroN" + - "zimaOsageOttomaans-TurksPangasinanPahlaviPampangaPapiamentsPalausPicardi" + - "schNigeriaans PidginPennsylvania-DuitsPlautdietschOudperzischPaltsischFo" + - "enicischPiëmonteesPontischPohnpeiaansOudpruisischOudprovençaalsK’iche’Ki" + - "chwaRajasthaniRapanuiRarotonganRomagnolRiffijnsRomboRomaniRotumaansRoeth" + - "eensRovianaAroemeensRwaSandaweJakoetsSamaritaans-ArameesSamburuSasakSant" + - "aliSaurashtraNgambaySanguSiciliaansSchotsSassareesPahlavaniSenecaSenaSer" + - "iSelkoepsKoyraboro SenniOudiersSamogitischTashelhiytShanTsjadisch Arabis" + - "chSidamoSilezisch DuitsSelayarZuid-SamischLule-SamischInari-SamischSkolt" + - "-SamischSoninkeSogdischSranantongoSererSahoSaterfriesSukumaSoesoeSoemeri" + - "schShimaoreKlassiek SyrischSyrischSilezischTuluTimneTesoTerenoTetunTigre" + - "TivTokelausTsakhurKlingonTlingitTalyshTamashekNyasa TongaTok PisinTuroyo" + - "TarokoTsakonischTsimshianMoslim TatToemboekaTuvaluaansTasawaqToevaansTam" + - "azight (Centraal-Marokko)OedmoertsOegaritischUmbunduonbekende taalVaiVen" + - "etiaansWepsischWest-VlaamsOpperfrankischVotischVõroVunjoWalserWolayttaWa" + - "rayWashoWarlpiriWuyuKalmuksMingreelsSogaYaoYapeesYangbenYembaNheengatuKa" + - "ntoneesZapotecBlissymbolenZeeuwsZenagaStandaard Marokkaanse TamazightZun" + - "igeen linguïstische inhoudZazaNederduitsServo-Kroatisch" - -var nlLangIdx = []uint16{ // 612 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002b, 0x0034, - 0x003c, 0x0044, 0x004c, 0x0052, 0x0060, 0x0069, 0x0075, 0x007d, - 0x0084, 0x008b, 0x0093, 0x009c, 0x00a3, 0x00ab, 0x00b4, 0x00bf, - 0x00c7, 0x00d1, 0x00d5, 0x00df, 0x00eb, 0x00f8, 0x00fd, 0x0102, - 0x0107, 0x010d, 0x0115, 0x0118, 0x011e, 0x0124, 0x012d, 0x0133, - 0x013a, 0x0142, 0x014a, 0x014f, 0x0153, 0x015a, 0x0163, 0x0168, - 0x016d, 0x0171, 0x0180, 0x0189, 0x0191, 0x0199, 0x019d, 0x01a2, - 0x01ab, 0x01b0, 0x01b9, 0x01c2, 0x01d4, 0x01dc, 0x01e3, 0x01e9, - // Entry 40 - 7F - 0x01f4, 0x01ff, 0x020a, 0x020e, 0x0210, 0x0217, 0x021a, 0x0222, - 0x022b, 0x0234, 0x023a, 0x0241, 0x024a, 0x024f, 0x0255, 0x025d, - 0x0264, 0x026e, 0x0273, 0x027a, 0x0282, 0x0288, 0x0290, 0x0299, - 0x029d, 0x02a4, 0x02ae, 0x02b4, 0x02be, 0x02c5, 0x02cd, 0x02d4, - 0x02dd, 0x02e4, 0x02f0, 0x02f4, 0x0300, 0x030b, 0x0310, 0x031b, - 0x0324, 0x032c, 0x0333, 0x0339, 0x0340, 0x0348, 0x0351, 0x035e, - 0x0366, 0x036c, 0x0376, 0x0385, 0x0394, 0x039f, 0x03a5, 0x03ab, - 0x03b4, 0x03ba, 0x03c5, 0x03c9, 0x03d2, 0x03d9, 0x03dd, 0x03e2, - // Entry 80 - BF - 0x03e9, 0x03f2, 0x03f9, 0x0405, 0x040c, 0x0414, 0x041c, 0x0427, - 0x0430, 0x0438, 0x043e, 0x044b, 0x0450, 0x0459, 0x0461, 0x0469, - 0x0471, 0x0476, 0x047f, 0x0487, 0x048f, 0x0494, 0x049e, 0x04a8, - 0x04ae, 0x04b5, 0x04ba, 0x04c0, 0x04c9, 0x04cd, 0x04d5, 0x04de, - 0x04e4, 0x04ec, 0x04f1, 0x04f7, 0x04fe, 0x0508, 0x0510, 0x051a, - 0x051e, 0x0526, 0x052b, 0x0535, 0x053d, 0x0542, 0x0547, 0x054c, - 0x0554, 0x055a, 0x0560, 0x0567, 0x056d, 0x0573, 0x0578, 0x057f, - 0x0586, 0x0598, 0x05a0, 0x05a5, 0x05a9, 0x05b2, 0x05b9, 0x05c3, - // Entry C0 - FF - 0x05ca, 0x05d8, 0x05e1, 0x05e7, 0x05ee, 0x05f8, 0x05fe, 0x0605, - 0x0617, 0x0617, 0x061d, 0x0630, 0x0642, 0x0645, 0x065c, 0x0665, - 0x066b, 0x0671, 0x067a, 0x0682, 0x0688, 0x068c, 0x0692, 0x069c, - 0x06a6, 0x06aa, 0x06af, 0x06b5, 0x06b9, 0x06be, 0x06c4, 0x06d5, - 0x06dd, 0x06e2, 0x06e6, 0x06ec, 0x06ef, 0x06f6, 0x0701, 0x070a, - 0x070e, 0x0714, 0x0718, 0x071e, 0x0729, 0x0731, 0x0735, 0x0739, - 0x0740, 0x0745, 0x074e, 0x0754, 0x0759, 0x0759, 0x0760, 0x0765, - 0x076c, 0x0774, 0x077c, 0x0780, 0x078e, 0x0795, 0x079e, 0x07a6, - // Entry 100 - 13F - 0x07ae, 0x07b5, 0x07bd, 0x07c5, 0x07d1, 0x07e2, 0x07ed, 0x07f3, - 0x07f9, 0x07fe, 0x0806, 0x080c, 0x0812, 0x0817, 0x081c, 0x0821, - 0x082e, 0x0833, 0x0838, 0x0848, 0x0852, 0x0857, 0x085d, 0x0861, - 0x0865, 0x086d, 0x0879, 0x087f, 0x0889, 0x0895, 0x089a, 0x08a0, - 0x08aa, 0x08ae, 0x08b7, 0x08c4, 0x08c7, 0x08d2, 0x08dd, 0x08e5, - 0x08ee, 0x08f9, 0x0903, 0x090c, 0x090e, 0x0919, 0x091e, 0x0922, - 0x0927, 0x0938, 0x093f, 0x0949, 0x094f, 0x095e, 0x096a, 0x0975, - 0x097a, 0x0983, 0x098b, 0x0990, 0x0999, 0x09a5, 0x09aa, 0x09b0, - // Entry 140 - 17F - 0x09b5, 0x09be, 0x09c3, 0x09c8, 0x09d2, 0x09df, 0x09e9, 0x09f3, - 0x09f8, 0x0a05, 0x0a0c, 0x0a10, 0x0a14, 0x0a1a, 0x0a1f, 0x0a2c, - 0x0a34, 0x0a46, 0x0a4c, 0x0a52, 0x0a59, 0x0a67, 0x0a75, 0x0a7d, - 0x0a88, 0x0a91, 0x0a97, 0x0a9a, 0x0a9f, 0x0aa3, 0x0aad, 0x0ab4, - 0x0ab8, 0x0abf, 0x0ad3, 0x0ada, 0x0ade, 0x0ae6, 0x0aeb, 0x0af4, - 0x0b00, 0x0b06, 0x0b10, 0x0b14, 0x0b1c, 0x0b24, 0x0b32, 0x0b39, - 0x0b43, 0x0b49, 0x0b5d, 0x0b61, 0x0b6a, 0x0b73, 0x0b79, 0x0b81, - 0x0b86, 0x0b8d, 0x0b94, 0x0b9b, 0x0ba1, 0x0ba6, 0x0bac, 0x0bb1, - // Entry 180 - 1BF - 0x0bb9, 0x0bcb, 0x0bd4, 0x0bd9, 0x0bdf, 0x0bea, 0x0bef, 0x0c00, - 0x0c04, 0x0c13, 0x0c1b, 0x0c25, 0x0c2c, 0x0c31, 0x0c34, 0x0c38, - 0x0c3d, 0x0c4d, 0x0c54, 0x0c5d, 0x0c61, 0x0c67, 0x0c6f, 0x0c79, - 0x0c81, 0x0c84, 0x0c88, 0x0c8e, 0x0c94, 0x0c99, 0x0c9d, 0x0ca5, - 0x0caf, 0x0cbd, 0x0cc4, 0x0ccd, 0x0cd8, 0x0ce0, 0x0ce6, 0x0cec, - 0x0cf1, 0x0cfa, 0x0d01, 0x0d0f, 0x0d14, 0x0d1d, 0x0d24, 0x0d2c, - 0x0d31, 0x0d36, 0x0d41, 0x0d49, 0x0d54, 0x0d58, 0x0d65, 0x0d6b, - 0x0d6f, 0x0d77, 0x0d7e, 0x0d84, 0x0d8d, 0x0d92, 0x0d9a, 0x0da0, - // Entry 1C0 - 1FF - 0x0da6, 0x0db1, 0x0db5, 0x0dc8, 0x0dd0, 0x0dd8, 0x0ddd, 0x0de2, - 0x0de7, 0x0df6, 0x0e00, 0x0e07, 0x0e0f, 0x0e19, 0x0e1f, 0x0e29, - 0x0e3a, 0x0e4c, 0x0e58, 0x0e63, 0x0e6c, 0x0e76, 0x0e81, 0x0e89, - 0x0e94, 0x0ea0, 0x0eaf, 0x0eba, 0x0ec0, 0x0eca, 0x0ed1, 0x0edb, - 0x0ee3, 0x0eeb, 0x0ef0, 0x0ef6, 0x0eff, 0x0f08, 0x0f0f, 0x0f18, - 0x0f1b, 0x0f22, 0x0f29, 0x0f3c, 0x0f43, 0x0f48, 0x0f4f, 0x0f59, - 0x0f60, 0x0f65, 0x0f6f, 0x0f75, 0x0f7e, 0x0f87, 0x0f8d, 0x0f91, - 0x0f95, 0x0f9d, 0x0fac, 0x0fb3, 0x0fbe, 0x0fc8, 0x0fcc, 0x0fde, - // Entry 200 - 23F - 0x0fe4, 0x0ff3, 0x0ffa, 0x1006, 0x1012, 0x101f, 0x102c, 0x1033, - 0x103b, 0x1046, 0x104b, 0x104f, 0x1059, 0x105f, 0x1065, 0x106f, - 0x1077, 0x1087, 0x108e, 0x1097, 0x109b, 0x10a0, 0x10a4, 0x10aa, - 0x10af, 0x10b4, 0x10b7, 0x10bf, 0x10c6, 0x10cd, 0x10d4, 0x10da, - 0x10e2, 0x10ed, 0x10f6, 0x10fc, 0x1102, 0x110c, 0x1115, 0x111f, - 0x1128, 0x1132, 0x1139, 0x1141, 0x115d, 0x1166, 0x1171, 0x1178, - 0x1186, 0x1189, 0x1193, 0x119b, 0x11a6, 0x11b4, 0x11bb, 0x11c0, - 0x11c5, 0x11cb, 0x11d3, 0x11d8, 0x11dd, 0x11e5, 0x11e9, 0x11f0, - // Entry 240 - 27F - 0x11f9, 0x11fd, 0x1200, 0x1206, 0x120d, 0x1212, 0x121b, 0x1224, - 0x122b, 0x1237, 0x123d, 0x1243, 0x1262, 0x1266, 0x1280, 0x1284, - 0x1284, 0x1284, 0x1284, 0x1284, 0x1284, 0x1284, 0x1284, 0x1284, - 0x1284, 0x1284, 0x1284, 0x1284, 0x1284, 0x1284, 0x128e, 0x128e, - 0x128e, 0x128e, 0x128e, 0x129d, -} // Size: 1248 bytes - -const noLangStr string = "" + // Size: 4856 bytes - "afarabkhasiskavestiskafrikaansakanamhariskaragonskarabiskassamesiskavari" + - "skaymaraaserbajdsjanskbasjkirskhviterussiskbulgarskbislamabambarabengali" + - "tibetanskbretonskbosniskkatalansktsjetsjenskchamorrokorsikanskcreetsjekk" + - "iskkirkeslavisktsjuvasjiskwalisiskdansktyskdivehidzongkhaewegreskengelsk" + - "esperantospanskestiskbaskiskpersiskfulfuldefinskfijianskfærøyskfranskves" + - "tfrisiskirskskotsk-gæliskgalisiskguaranigujaratimanskhausahebraiskhindih" + - "iri motukroatiskhaitiskungarskarmenskhererointerlinguaindonesiskinterlin" + - "gueibosichuan-yiinupiakidoislandskitalienskinuktitutjapanskjavanesiskgeo" + - "rgiskkikongokikuyukuanyamakasakhiskgrønlandskkhmerkannadakoreanskkanurik" + - "asjmirikurdiskkomikorniskkirgisisklatinluxemburgskgandalimburgsklingalal" + - "aotisklitauiskluba-katangalatviskgassiskmarshallesiskmaorimakedonskmalay" + - "alammongolskmarathimalayiskmaltesiskburmesisknaurunord-ndebelenepalindon" + - "ganederlandsknorsk nynorsknorsk bokmålsør-ndebelenavajonyanjaoksitanskoj" + - "ibwaoromoodiaossetiskpanjabipalipolskpashtoportugisiskquechuaretoromansk" + - "rundirumenskrussiskkinyarwandasanskritsardisksindhinordsamisksangosingal" + - "esiskslovakiskslovensksamoanskshonasomalialbanskserbiskswatisør-sothosun" + - "danesisksvenskswahilitamiltelugutadsjikiskthaitigrinjaturkmensksetswanat" + - "ongansktyrkisktsongatatarisktahitiskuiguriskukrainskurduusbekiskvendavie" + - "tnamesiskvolapykvallonskwolofxhosajiddiskjorubazhuangkinesiskzuluachines" + - "iskacoliadangmeadygeisktunisisk-arabiskafrihiliaghemainuakkadiskalabamaa" + - "leutiskgegisk-albansksøraltaiskgammelengelskangikaarameiskmapudungunarao" + - "naarapahoalgerisk arabiskarawakmarokkansk-arabiskegyptisk arabiskasuamer" + - "ikansk tegnspråkasturiskkotavaavadhibaluchibalinesiskbairiskbasaabamunba" + - "tak tobaghomalabejabembabetawibenabafutbadagavestbalutsjibhojpuribikolbi" + - "nibanjarkomsiksikabishnupriyabakhtiaribrajbrahuibodoakoseburjatiskbugine" + - "siskbulublinmedumbacaddokaribiskcayugaatsamcebuanskkigachibchatsjagataic" + - "huukesiskmarichinookchoctawchipewianskcherokesiskcheyennekurdisk (sorani" + - ")koptiskkapizkrimtatariskseselwakasjubiskdakotadargwataitadelawareslavey" + - "dogribdinkazarmadogrilavsorbisksentraldusundualamellomnederlandskjola-fo" + - "nyidyuladazagakiembuefikemilianskgammelegyptiskekajukelamittiskmellomeng" + - "elsksentralyupikewondoekstremaduranskfangfilipinotornedalsfinskfoncajunf" + - "ranskmellomfranskgammelfranskarpitansknordfrisiskøstfrisiskfriulianskgag" + - "agausiskgangayogbayazoroastrisk darigeezkiribatiskgilekimellomhøytyskgam" + - "melhøytyskgoansk konkanigondigorontalogotiskgrebogammelgresksveitsertysk" + - "wayuufrafragusiigwichinhaidahakkahawaiiskfijiansk hindihiligaynonhettitt" + - "iskhmonghøysorbiskxianghupaibanibibioilokoingusjiskingriskjamaicansk kre" + - "olengelsklojbanngombamachamejødepersiskjødearabiskjyskkarakalpakiskkabyl" + - "skkachinjjukambakawikabardiskkanembutyapmakondekappverdiskkenyangkorokai" + - "ngangkhasikhotanesiskkoyra chiinikhowarkirmanckikakokalenjinkimbundukomi" + - "permjakiskkonkanikosraeanskkpellekaratsjajbalkarskkriokinaray-akarelskku" + - "rukhshambalabafiakølnskkumykiskkutenailadinsklangilahndalambalesgiskling" + - "ua franca novaligurisklivisklakotalombardiskmongolouisianakreolsklozinor" + - "d-lurilatgalliskluba-lulualuisenolundaluomizoluhyaklassisk kinesisklazis" + - "kmaduresiskmafamagahimaithilimakasarmandingomasaimabamoksjamandarmendeme" + - "rumauritisk-kreolskmellomirskmakhuwa-meettometa’micmacminangkabaumandsju" + - "manipurimohawkmossivestmariskmundangflere språkcreekmirandesiskmarwarime" + - "ntawaimyeneerziamazandaraniminnannapolitansknamanedertysknewariniasniuea" + - "nskao nagakwasiongiemboonnogaiskgammelnorsknovialnʼkonord-sothonuerklass" + - "isk newarinyamwezinyankolenyoronzimaosageottomansk tyrkiskpangasinanpahl" + - "avipampangapapiamentopalauiskpikardisknigeriansk pidginspråkpennsylvania" + - "tyskplautdietschgammelpersiskpalatintyskfønikiskpiemontesiskpontiskponap" + - "iskprøyssiskgammelprovençalskk’iche’kichwa (Chimborazo-høylandet)rajasth" + - "anirapanuirarotonganskromagnolskriffromboromanirotumanskrusinskrovianaar" + - "omanskrwasandawesakhasamaritansk arameisksamburusasaksantalisaurashtrang" + - "ambaysangusicilianskskotsksassaresisk sardisksørkurdisksenecasenaserisel" + - "kupiskkoyraboro sennigammelirsksamogitisktachelhitshantsjadisk arabisksi" + - "damolavschlesiskselayarsørsamisklulesamiskenaresamiskskoltesamisksoninke" + - "sogdisksrananserersahosaterfrisisksukumasususumeriskkomoriskklassisk syr" + - "isksyriakiskschlesisktulutemnetesoterenotetumtigrétivtokelauisktsakhursk" + - "klingontlingittalysjtamasjeknyasa-tongansktok pisinturoyotarokotsakonisk" + - "tsimshianmuslimsk tattumbukatuvalsktasawaqtuvinsksentralmarokkansk tamaz" + - "ightudmurtiskugaritiskumbunduukjent språkvaivenetianskvepsiskvestflamskM" + - "ain-frankiskvotisksørestiskvunjowalsertyskwolayttawaray-waraywashowarlpi" + - "riwukalmukkiskmingrelsksogayaoyapesiskyangbenyembanheengatukantonesiskza" + - "potekiskblissymbolerzeeuwszenagastandard marrokansk tamazightzuniuten sp" + - "råklig innholdzazaiskmoderne standardarabisknedersaksiskflamskmoldovskse" + - "rbokroatiskkongolesisk swahiliforenklet kinesisktradisjonell kinesisk" - -var noLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000d, 0x0015, 0x001e, 0x0022, 0x002a, 0x0032, - 0x0039, 0x0043, 0x004a, 0x0050, 0x005e, 0x0067, 0x0073, 0x007b, - 0x0082, 0x0089, 0x0090, 0x0099, 0x00a1, 0x00a8, 0x00b1, 0x00bc, - 0x00c4, 0x00ce, 0x00d2, 0x00db, 0x00e7, 0x00f2, 0x00fa, 0x00ff, - 0x0103, 0x0109, 0x0111, 0x0114, 0x0119, 0x0120, 0x0129, 0x012f, - 0x0135, 0x013c, 0x0143, 0x014b, 0x0150, 0x0158, 0x0161, 0x0167, - 0x0172, 0x0176, 0x0184, 0x018c, 0x0193, 0x019b, 0x01a0, 0x01a5, - 0x01ad, 0x01b2, 0x01bb, 0x01c3, 0x01ca, 0x01d1, 0x01d8, 0x01de, - // Entry 40 - 7F - 0x01e9, 0x01f3, 0x01fe, 0x0201, 0x020b, 0x0212, 0x0215, 0x021d, - 0x0226, 0x022f, 0x0236, 0x0240, 0x0248, 0x024f, 0x0255, 0x025d, - 0x0266, 0x0271, 0x0276, 0x027d, 0x0285, 0x028b, 0x0293, 0x029a, - 0x029e, 0x02a5, 0x02ae, 0x02b3, 0x02be, 0x02c3, 0x02cc, 0x02d3, - 0x02da, 0x02e2, 0x02ee, 0x02f5, 0x02fc, 0x0309, 0x030e, 0x0317, - 0x0320, 0x0328, 0x032f, 0x0337, 0x0340, 0x0349, 0x034e, 0x035a, - 0x0360, 0x0366, 0x0371, 0x037e, 0x038b, 0x0397, 0x039d, 0x03a3, - 0x03ac, 0x03b2, 0x03b7, 0x03bb, 0x03c3, 0x03ca, 0x03ce, 0x03d3, - // Entry 80 - BF - 0x03d9, 0x03e4, 0x03eb, 0x03f6, 0x03fb, 0x0402, 0x0409, 0x0414, - 0x041c, 0x0423, 0x0429, 0x0433, 0x0438, 0x0443, 0x044c, 0x0454, - 0x045c, 0x0461, 0x0467, 0x046e, 0x0475, 0x047a, 0x0484, 0x048f, - 0x0495, 0x049c, 0x04a1, 0x04a7, 0x04b1, 0x04b5, 0x04bd, 0x04c6, - 0x04ce, 0x04d6, 0x04dd, 0x04e3, 0x04eb, 0x04f3, 0x04fb, 0x0503, - 0x0507, 0x050f, 0x0514, 0x0520, 0x0527, 0x052f, 0x0534, 0x0539, - 0x0540, 0x0546, 0x054c, 0x0554, 0x0558, 0x0562, 0x0567, 0x056e, - 0x0576, 0x0586, 0x058e, 0x0593, 0x0597, 0x059f, 0x05a6, 0x05ae, - // Entry C0 - FF - 0x05bc, 0x05c7, 0x05d4, 0x05da, 0x05e2, 0x05ec, 0x05f2, 0x05f9, - 0x0609, 0x0609, 0x060f, 0x0621, 0x0631, 0x0634, 0x0649, 0x0651, - 0x0657, 0x065d, 0x0664, 0x066e, 0x0675, 0x067a, 0x067f, 0x0689, - 0x0690, 0x0694, 0x0699, 0x069f, 0x06a3, 0x06a8, 0x06ae, 0x06ba, - 0x06c2, 0x06c7, 0x06cb, 0x06d1, 0x06d4, 0x06db, 0x06e6, 0x06ef, - 0x06f3, 0x06f9, 0x06fd, 0x0702, 0x070b, 0x0715, 0x0719, 0x071d, - 0x0724, 0x0729, 0x0731, 0x0737, 0x073c, 0x073c, 0x0744, 0x0748, - 0x074f, 0x0758, 0x0762, 0x0766, 0x076d, 0x0774, 0x077f, 0x078a, - // Entry 100 - 13F - 0x0792, 0x07a2, 0x07a9, 0x07ae, 0x07ba, 0x07c1, 0x07ca, 0x07d0, - 0x07d6, 0x07db, 0x07e3, 0x07e9, 0x07ef, 0x07f4, 0x07f9, 0x07fe, - 0x0808, 0x0814, 0x0819, 0x082a, 0x0834, 0x0839, 0x083f, 0x0845, - 0x0849, 0x0852, 0x0860, 0x0866, 0x0870, 0x087d, 0x0889, 0x088f, - 0x089e, 0x08a2, 0x08aa, 0x08b8, 0x08bb, 0x08c6, 0x08d2, 0x08de, - 0x08e7, 0x08f2, 0x08fd, 0x0907, 0x0909, 0x0912, 0x0915, 0x0919, - 0x091e, 0x092e, 0x0932, 0x093c, 0x0942, 0x0950, 0x095e, 0x096c, - 0x0971, 0x097a, 0x0980, 0x0985, 0x0990, 0x099c, 0x09a1, 0x09a7, - // Entry 140 - 17F - 0x09ac, 0x09b3, 0x09b8, 0x09bd, 0x09c5, 0x09d3, 0x09dd, 0x09e7, - 0x09ec, 0x09f7, 0x09fc, 0x0a00, 0x0a04, 0x0a0a, 0x0a0f, 0x0a18, - 0x0a1f, 0x0a36, 0x0a3c, 0x0a42, 0x0a49, 0x0a55, 0x0a61, 0x0a65, - 0x0a72, 0x0a79, 0x0a7f, 0x0a82, 0x0a87, 0x0a8b, 0x0a94, 0x0a9b, - 0x0a9f, 0x0aa6, 0x0ab1, 0x0ab8, 0x0abc, 0x0ac4, 0x0ac9, 0x0ad4, - 0x0ae0, 0x0ae6, 0x0aef, 0x0af3, 0x0afb, 0x0b03, 0x0b11, 0x0b18, - 0x0b22, 0x0b28, 0x0b39, 0x0b3d, 0x0b46, 0x0b4d, 0x0b53, 0x0b5b, - 0x0b60, 0x0b67, 0x0b6f, 0x0b76, 0x0b7d, 0x0b82, 0x0b88, 0x0b8d, - // Entry 180 - 1BF - 0x0b94, 0x0ba6, 0x0bae, 0x0bb4, 0x0bba, 0x0bc4, 0x0bc9, 0x0bd9, - 0x0bdd, 0x0be6, 0x0bf0, 0x0bfa, 0x0c01, 0x0c06, 0x0c09, 0x0c0d, - 0x0c12, 0x0c23, 0x0c29, 0x0c33, 0x0c37, 0x0c3d, 0x0c45, 0x0c4c, - 0x0c54, 0x0c59, 0x0c5d, 0x0c63, 0x0c69, 0x0c6e, 0x0c72, 0x0c83, - 0x0c8d, 0x0c9b, 0x0ca2, 0x0ca8, 0x0cb3, 0x0cba, 0x0cc2, 0x0cc8, - 0x0ccd, 0x0cd7, 0x0cde, 0x0cea, 0x0cef, 0x0cfa, 0x0d01, 0x0d09, - 0x0d0e, 0x0d13, 0x0d1e, 0x0d24, 0x0d2f, 0x0d33, 0x0d3c, 0x0d42, - 0x0d46, 0x0d4e, 0x0d55, 0x0d5b, 0x0d64, 0x0d6b, 0x0d76, 0x0d7c, - // Entry 1C0 - 1FF - 0x0d81, 0x0d8b, 0x0d8f, 0x0d9e, 0x0da6, 0x0dae, 0x0db3, 0x0db8, - 0x0dbd, 0x0dce, 0x0dd8, 0x0ddf, 0x0de7, 0x0df1, 0x0df9, 0x0e02, - 0x0e19, 0x0e29, 0x0e35, 0x0e42, 0x0e4d, 0x0e56, 0x0e62, 0x0e69, - 0x0e71, 0x0e7b, 0x0e8d, 0x0e98, 0x0eb6, 0x0ec0, 0x0ec7, 0x0ed3, - 0x0edd, 0x0ee1, 0x0ee6, 0x0eec, 0x0ef5, 0x0efc, 0x0f03, 0x0f0b, - 0x0f0e, 0x0f15, 0x0f1a, 0x0f2e, 0x0f35, 0x0f3a, 0x0f41, 0x0f4b, - 0x0f52, 0x0f57, 0x0f61, 0x0f67, 0x0f7a, 0x0f85, 0x0f8b, 0x0f8f, - 0x0f93, 0x0f9c, 0x0fab, 0x0fb5, 0x0fbf, 0x0fc8, 0x0fcc, 0x0fdc, - // Entry 200 - 23F - 0x0fe2, 0x0fee, 0x0ff5, 0x0fff, 0x1009, 0x1014, 0x1020, 0x1027, - 0x102e, 0x1034, 0x1039, 0x103d, 0x1049, 0x104f, 0x1053, 0x105b, - 0x1063, 0x1072, 0x107b, 0x1084, 0x1088, 0x108d, 0x1091, 0x1097, - 0x109c, 0x10a2, 0x10a5, 0x10af, 0x10b8, 0x10bf, 0x10c6, 0x10cc, - 0x10d4, 0x10e2, 0x10eb, 0x10f1, 0x10f7, 0x1100, 0x1109, 0x1115, - 0x111c, 0x1123, 0x112a, 0x1131, 0x114c, 0x1155, 0x115e, 0x1165, - 0x1172, 0x1175, 0x117f, 0x1186, 0x1190, 0x119d, 0x11a3, 0x11ad, - 0x11b2, 0x11bc, 0x11c4, 0x11cf, 0x11d4, 0x11dc, 0x11de, 0x11e8, - // Entry 240 - 27F - 0x11f1, 0x11f5, 0x11f8, 0x1200, 0x1207, 0x120c, 0x1215, 0x1220, - 0x122a, 0x1236, 0x123c, 0x1242, 0x125f, 0x1263, 0x1279, 0x1280, - 0x1297, 0x1297, 0x1297, 0x1297, 0x1297, 0x1297, 0x1297, 0x1297, - 0x1297, 0x1297, 0x1297, 0x1297, 0x1297, 0x1297, 0x12a3, 0x12a9, - 0x12a9, 0x12a9, 0x12b1, 0x12be, 0x12d1, 0x12e3, 0x12f8, -} // Size: 1254 bytes - -const paLangStr string = "" + // Size: 8284 bytes - "ਅਫ਼ਾਰਅਬਖਾਜ਼ੀਅਨਅਫ਼ਰੀਕੀਅਕਾਨਅਮਹਾਰਿਕਅਰਾਗੋਨੀਅਰਬੀਅਸਾਮੀਅਵਾਰਿਕਅਈਮਾਰਾਅਜ਼ਰਬਾਈਜਾਨੀਬ" + - "ਸ਼ਕੀਰਬੇਲਾਰੂਸੀਬੁਲਗਾਰੀਆਈਬਿਸਲਾਮਾਬੰਬਾਰਾਬੰਗਾਲੀਤਿੱਬਤੀਬਰੇਟਨਬੋਸਨੀਆਈਕੈਟਾਲਾਨਚੇਚਨ" + - "ਚਮੋਰੋਕੋਰਸੀਕਨਚੈੱਕਚਰਚ ਸਲਾਵੀਚੁਵਾਸ਼ਵੈਲਸ਼ਡੈਨਿਸ਼ਜਰਮਨਦਿਵੇਹੀਜ਼ੋਂਗਖਾਈਵਈਯੂਨਾਨੀਅੰ" + - "ਗਰੇਜ਼ੀਇਸਪੇਰਾਂਟੋਸਪੇਨੀਇਸਟੋਨੀਆਈਬਾਸਕਫ਼ਾਰਸੀਫੁਲਾਹਫਿਨਿਸ਼ਫ਼ਿਜ਼ੀਫ਼ੇਰੋਸੇਫਰਾਂਸੀਸੀ" + - "ਪੱਛਮੀ ਫ੍ਰਿਸੀਅਨਆਇਰਸ਼ਸਕਾਟਿਸ਼ ਗੇਲਿਕਗੈਲਿਸ਼ਿਅਨਗੁਆਰਾਨੀਗੁਜਰਾਤੀਮੈਂਕਸਹੌਸਾਹਿਬਰੂਹ" + - "ਿੰਦੀਕ੍ਰੋਏਸ਼ਿਆਈਹੈਤੀਆਈਹੰਗਰੀਆਈਅਰਮੀਨੀਆਈਹਰੇਰੋਇੰਟਰਲਿੰਗੁਆਇੰਡੋਨੇਸ਼ੀਆਈਇਗਬੋਸਿਚੁਆ" + - "ਨ ਯੀਇਡੂਆਈਸਲੈਂਡਿਕਇਤਾਲਵੀਇੰਕਟੀਟੂਤਜਪਾਨੀਜਾਵਾਨੀਜ਼ਜਾਰਜੀਆਈਕਿਕੂਯੂਕੁਆਨਯਾਮਾਕਜ਼ਾਖ਼" + - "ਕਲਾਅੱਲੀਸੁਟਖਮੇਰਕੰਨੜਕੋਰੀਆਈਕਨੂਰੀਕਸ਼ਮੀਰੀਕੁਰਦਕੋਮੀਕੋਰਨਿਸ਼ਕਿਰਗੀਜ਼ਲਾਤੀਨੀਲਕਜ਼ਮਬ" + - "ਰਗਿਸ਼ਗਾਂਡਾਲਿਮਬੁਰਗੀਲਿੰਗਾਲਾਲਾਓਲਿਥੁਆਨੀਅਨਲੂਬਾ-ਕਾਟਾਂਗਾਲਾਤੀਵੀਮੇਲੇਗਸੀਮਾਰਸ਼ਲੀਜ" + - "਼ਮਾਉਰੀਮੈਕਡੋਨੀਆਈਮਲਿਆਲਮਮੰਗੋਲੀਮਰਾਠੀਮਲਯਮਾਲਟੀਜ਼ਬਰਮੀਨਾਉਰੂਉੱਤਰੀ ਨਡੇਬੇਲੇਨੇਪਾਲੀ" + - "ਐਂਡੋਂਗਾਡੱਚਨਾਰਵੇਜਿਆਈ ਨਿਓਨੌਰਸਕਨਾਰਵੇਜਿਆਈ ਬੋਕਮਲਸਾਊਥ ਨਡੇਬੇਲੇਨਵਾਜੋਨਯਾਂਜਾਓਕਸੀ" + - "ਟਾਨਓਰੋਮੋਉੜੀਆਓਸੈਟਿਕਪੰਜਾਬੀਪਾਲੀਪੋਲੈਂਡੀਪਸ਼ਤੋਪੁਰਤਗਾਲੀਕਕੇਸ਼ੁਆਰੋਮਾਂਸ਼ਰੁੰਡੀਰੋਮ" + - "ਾਨੀਆਈਰੂਸੀਕਿਨਿਆਰਵਾਂਡਾਸੰਸਕ੍ਰਿਤਸਾਰਡੀਨੀਆਈਸਿੰਧੀਉੱਤਰੀ ਸਾਮੀਸਾਂਗੋਸਿੰਹਾਲਾਸਲੋਵਾਕ" + - "ਸਲੋਵੇਨੀਆਈਸਾਮੋਨਸ਼ੋਨਾਸੋਮਾਲੀਅਲਬਾਨੀਆਈਸਰਬੀਆਈਸਵਾਤੀਦੱਖਣੀ ਸੋਥੋਸੂੰਡਾਨੀਸਵੀਡਿਸ਼ਸਵ" + - "ਾਹਿਲੀਤਮਿਲਤੇਲਗੂਤਾਜਿਕਥਾਈਤਿਗ੍ਰੀਨਿਆਤੁਰਕਮੇਨਤਸਵਾਨਾਟੌਂਗਨਤੁਰਕੀਸੋਂਗਾਤਤਾਰਤਾਹੀਟੀਉ" + - "ਇਗੁਰਯੂਕਰੇਨੀਆਈਉੜਦੂਉਜ਼ਬੇਕਵੇਂਡਾਵੀਅਤਨਾਮੀਵੋਲਾਪੂਕਵਲੂਨਵੋਲੋਫਖੋਸਾਯਿਦਿਸ਼ਯੋਰੂਬਾਚੀ" + - "ਨੀ (ਮੈਂਡਰਿਨ)ਜ਼ੁਲੂਅਚੀਨੀਅਕੋਲੀਅਡਾਂਗਮੇਅਡਿਗੇਅਗੇਮਆਇਨੂਅਲੇਉਟਦੱਖਣੀ ਅਲਤਾਈਪੁਰਾਣੀ " + - "ਅੰਗਰੇਜ਼ੀਅੰਗਿਕਾਮਾਪੁਚੇਅਰਾਫਾਓਅਸੂਅਸਤੂਰੀਅਵਧੀਬਾਲੀਨੀਜ਼ਬਾਸਾਬੇਮਬਾਬੇਨਾਪੱਛਮੀ ਬਲੂਚ" + - "ੀਭੋਜਪੁਰੀਬਿਨੀਸਿਕਸਿਕਾਬੋਡੋਬਗਨੀਜ਼ਬਲਿਨਸੀਬੂਆਨੋਚੀਗਾਚੂਕੀਸਮਾਰੀਚੌਕਟੋਚੇਰੋਕੀਛਾਇਆਨਕ" + - "ੇਂਦਰੀ ਕੁਰਦਿਸ਼ਸੇਸੇਲਵਾ ਕ੍ਰਿਓਲ ਫ੍ਰੈਂਚਡਕੋਟਾਦਾਰਗਵਾਟੇਟਾਡੋਗਰਿੱਬਜ਼ਾਰਮਾਲੋਅਰ ਸੋਰ" + - "ਬੀਅਨਡੂਆਲਾਜੋਲਾ-ਫੋਇਨੀਡਜ਼ਾਗਾਇੰਬੂਐਫਿਕਪੁਰਾਤਨ ਮਿਸਰੀਏਕਾਜੁਕਇਵੋਂਡੋਫਿਲੀਪਿਨੋਫੌਨਕੇ" + - "ਜੁਨ ਫ੍ਰੇੰਚਫਰੀਉਲੀਅਨਗਾਗਾਗੌਜ਼ਚੀਨੀ ਗਾਨਜੀਜ਼ਗਿਲਬਰਤੀਜ਼ਗੋਰੋਂਤਾਲੋਪੁਰਾਤਨ ਯੂਨਾਨੀਜ" + - "ਰਮਨ (ਸਵਿਸ)ਗੁਸੀਗਵਿਚ’ਇਨਚੀਨੀ ਹਾਕਾਹਵਾਈਫਿਜੀ ਹਿੰਦੀਹਿਲੀਗੇਨਨਹਮੋਂਗਅੱਪਰ ਸੋਰਬੀਅਨਚ" + - "ੀਨੀ ਜ਼ਿਆਂਗਹੂਪਾਇਬਾਨਇਬੀਬੀਓਇਲੋਕੋਇੰਗੁਸ਼ਲੋਜਬਾਨਨਗੋਂਬਾਮਚਾਮੇਕਬਾਇਲਕਾਚਿਨਜਜੂਕੰਬਾਕ" + - "ਬਾਰਦੀਟਾਇਪਮਕੋਂਡਕਾਬੁਵੇਰਦਿਆਨੂਕੋਰੋਖਾਸੀਕੋਯਰਾ ਚੀਨੀਕਾਕੋਕਲੇਜਿਨਕਿਮਬੁੰਦੂਕੋਮੀ-ਪੇਰ" + - "ਮਿਆਕਕੋਂਕਣੀਕਪੇਲਕਰਾਚੇ ਬਲਕਾਰਕਰੀਲੀਅਨਕੁਰੁਖਸ਼ੰਬਾਲਾਬਫ਼ੀਆਕਲੋਗਨੀਅਨਕੁਮੀਕਲੈਡੀਨੋਲੰ" + - "ਗਾਈਲੈਜ਼ਗੀਲਕੋਟਾਲੇਉਲੋਜ਼ੀਉੱਤਰੀ ਲੁਰੀਲਿਊਬਾ-ਲਿਊਲਿਆਲੁੰਡਾਲੂਓਮਿਜ਼ੋਲੂਈਆਮਾਡੂਰੀਸਮਗ" + - "ਾਹੀਮੈਥਲੀਮਕਾਸਰਮਸਾਈਮੋਕਸ਼ਾਮੇਂਡੇਮੇਰੂਮੋਰੀਸਿਅਨਮਖੋਵਾ-ਮਿੱਟੋਮੇਟਾਮਾਇਮੈਕਮਿਨਾਂਗਕਾਬ" + - "ਾਓਮਨੀਪੁਰੀਮੋਹਆਕਮੋਸੀਮੁੰਡੇਂਗਬਹੁਤੀਆਂ ਬੋਲੀਆਂਕ੍ਰੀਕਮਿਰਾਂਡੀਇਰਜ਼ੀਆਮੇਜ਼ੈਂਡਰਾਨੀਚੀ" + - "ਨੀ ਮਿਨ ਨਾਨਨਿਆਪੋਲੀਟਨਨਾਮਾਲੋ ਜਰਮਨਨੇਵਾਰੀਨਿਆਸਨਿਊਏਈਕਵਾਸਿਓਨਿਓਮਬੂਨਨੋਗਾਈਐਂਕੋਉੱਤ" + - "ਰੀ ਸੋਥੋਨੁਏਰਨਿਆਂਕੋਲੇਪੰਗਾਸੀਨਾਨਪੈਂਪਾਂਗਾਪਾਪਿਆਮੈਂਟੋਪਲਾਊਵੀਨਾਇਜੀਰੀਆਈ ਪਿਡਗਿਨਪਰ" + - "ੂਸ਼ੀਆਕੇਸ਼ਰਾਜਸਥਾਨੀਰਾਪਾਨੁਈਰਾਰੋਤੋਂਗਨਰੋਮਬੋਅਰੋਮੀਨੀਆਈਰਵਾਸਾਂਡੋਸਾਖਾਸਮਬੁਰੂਸੰਥਾਲ" + - "ੀਨਗਾਂਬੇਸੇਂਗੋਸਿਸੀਲੀਅਨਸਕਾਟਸਦੱਖਣੀ ਕੁਰਦਿਸ਼ਸੇਨਾਕੋਇਰਾਬੋਰੋ ਸੇਂਨੀਟਚੇਲਹਿਟਸ਼ਾਨਦੱ" + - "ਖਣੀ ਸਾਮੀਲਿਊਲ ਸਾਮੀਇਨਾਰੀ ਸਾਮੀਸਕੌਲਟ ਸਾਮੀਸੋਨਿੰਕੇਸ੍ਰਾਨਾਨ ਟੋਂਗੋਸਾਹੋਸੁਕੁਮਾਕੋਮ" + - "ੋਰੀਅਨਸੀਰੀਆਈਟਿਮਨੇਟੇਸੋਟੇਟਮਟਿਗਰਾਕਲਿੰਗਨਟੋਕ ਪਿਸਿਨਟਾਰੋਕੋਤੁੰਬੁਕਾਟਿਊਵਾਲੂਤਾਸਾਵਿ" + - "ਕਤੁਵੀਨੀਅਨਮੱਧ ਐਟਲਸ ਤਮਾਜ਼ਿਤਉਦਮੁਰਤਉਮਬੁੰਡੂਅਣਪਛਾਤੀ ਬੋਲੀਵਾਈਵੂੰਜੋਵਾਲਸਰਵੋਲਾਏਟਾ" + - "ਵੈਰੇਵਾਲਪੁਰੀਚੀਨੀ ਵੂਕਾਲਮਿਕਸੋਗਾਯਾਂਗਬੇਨਯੇਂਬਾਕੈਂਟੋਨੀਜ਼ਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿ" + - "ਕਜ਼ੂਨੀਬੋਲੀ ਸੰਬੰਧੀ ਕੋਈ ਸਮੱਗਰੀ ਨਹੀਂਜ਼ਾਜ਼ਾਆਧੁਨਿਕ ਮਿਆਰੀ ਅਰਬੀਜਰਮਨ (ਆਸਟਰੀਆਈ)" + - "ਅੰਗਰੇਜ਼ੀ (ਬਰਤਾਨਵੀ)ਅੰਗਰੇਜ਼ੀ (ਅਮਰੀਕੀ)ਸਪੇਨੀ (ਯੂਰਪੀ)ਫਰਾਂਸੀਸੀ (ਕੈਨੇਡੀਅਨ)ਲੋ " + - "ਸੈਕਸਨਫਲੈਮਿਸ਼ਪੁਰਤਗਾਲੀ (ਬ੍ਰਾਜ਼ੀਲੀ)ਪੁਰਤਗਾਲੀ (ਯੂਰਪੀ)ਮੋਲਡਾਵੀਆਈਕਾਂਗੋ ਸਵਾਇਲੀਚ" + - "ੀਨੀ (ਸਰਲ)ਚੀਨੀ (ਰਵਾਇਤੀ)" - -var paLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x002a, 0x002a, 0x003f, 0x004b, 0x0060, 0x0075, - 0x0081, 0x0090, 0x00a2, 0x00b4, 0x00d5, 0x00e7, 0x00ff, 0x011a, - 0x012f, 0x0141, 0x0153, 0x0165, 0x0174, 0x0189, 0x019e, 0x01aa, - 0x01b9, 0x01ce, 0x01ce, 0x01da, 0x01f3, 0x0205, 0x0214, 0x0226, - 0x0232, 0x0244, 0x0259, 0x0262, 0x0274, 0x028c, 0x02a7, 0x02b6, - 0x02ce, 0x02da, 0x02ec, 0x02fb, 0x030d, 0x031f, 0x0334, 0x034c, - 0x0374, 0x0383, 0x03a8, 0x03c3, 0x03d8, 0x03ed, 0x03fc, 0x0408, - 0x0417, 0x0426, 0x0426, 0x0444, 0x0456, 0x046b, 0x0483, 0x0492, - // Entry 40 - 7F - 0x04b0, 0x04d1, 0x04d1, 0x04dd, 0x04f6, 0x04f6, 0x04ff, 0x051a, - 0x052c, 0x0544, 0x0553, 0x056b, 0x0580, 0x0580, 0x0592, 0x05aa, - 0x05bc, 0x05da, 0x05e6, 0x05f2, 0x0604, 0x0613, 0x0628, 0x0634, - 0x0640, 0x0655, 0x066a, 0x067c, 0x069d, 0x06ac, 0x06c4, 0x06d9, - 0x06e2, 0x06fd, 0x071f, 0x0731, 0x0746, 0x0761, 0x0770, 0x078b, - 0x079d, 0x07af, 0x07be, 0x07c7, 0x07dc, 0x07e8, 0x07f7, 0x081c, - 0x082e, 0x0843, 0x084c, 0x0880, 0x08ab, 0x08cd, 0x08dc, 0x08ee, - 0x0903, 0x0903, 0x0912, 0x091e, 0x0930, 0x0942, 0x094e, 0x0963, - // Entry 80 - BF - 0x0972, 0x098a, 0x099f, 0x09b4, 0x09c3, 0x09db, 0x09e7, 0x0a08, - 0x0a20, 0x0a3b, 0x0a4a, 0x0a66, 0x0a75, 0x0a8a, 0x0a9c, 0x0ab7, - 0x0ac6, 0x0ad5, 0x0ae7, 0x0aff, 0x0b11, 0x0b20, 0x0b3c, 0x0b51, - 0x0b66, 0x0b7b, 0x0b87, 0x0b96, 0x0ba5, 0x0bae, 0x0bc9, 0x0bde, - 0x0bf0, 0x0bff, 0x0c0e, 0x0c1d, 0x0c29, 0x0c3b, 0x0c4a, 0x0c65, - 0x0c71, 0x0c83, 0x0c92, 0x0caa, 0x0cbf, 0x0ccb, 0x0cda, 0x0ce6, - 0x0cf8, 0x0d0a, 0x0d0a, 0x0d2e, 0x0d3d, 0x0d4c, 0x0d5b, 0x0d70, - 0x0d7f, 0x0d7f, 0x0d7f, 0x0d8b, 0x0d97, 0x0d97, 0x0d97, 0x0da6, - // Entry C0 - FF - 0x0da6, 0x0dc5, 0x0df0, 0x0e02, 0x0e02, 0x0e14, 0x0e14, 0x0e26, - 0x0e26, 0x0e26, 0x0e26, 0x0e26, 0x0e26, 0x0e2f, 0x0e2f, 0x0e41, - 0x0e41, 0x0e4d, 0x0e4d, 0x0e65, 0x0e65, 0x0e71, 0x0e71, 0x0e71, - 0x0e71, 0x0e71, 0x0e80, 0x0e80, 0x0e8c, 0x0e8c, 0x0e8c, 0x0eab, - 0x0ec0, 0x0ec0, 0x0ecc, 0x0ecc, 0x0ecc, 0x0ee1, 0x0ee1, 0x0ee1, - 0x0ee1, 0x0ee1, 0x0eed, 0x0eed, 0x0eed, 0x0eff, 0x0eff, 0x0f0b, - 0x0f0b, 0x0f0b, 0x0f0b, 0x0f0b, 0x0f0b, 0x0f0b, 0x0f20, 0x0f2c, - 0x0f2c, 0x0f2c, 0x0f3b, 0x0f47, 0x0f47, 0x0f56, 0x0f56, 0x0f68, - // Entry 100 - 13F - 0x0f77, 0x0f9f, 0x0f9f, 0x0f9f, 0x0f9f, 0x0fda, 0x0fda, 0x0fe9, - 0x0ffb, 0x1007, 0x1007, 0x1007, 0x101c, 0x101c, 0x102e, 0x102e, - 0x1050, 0x1050, 0x105f, 0x105f, 0x107b, 0x107b, 0x108d, 0x1099, - 0x10a5, 0x10a5, 0x10c7, 0x10d9, 0x10d9, 0x10d9, 0x10d9, 0x10eb, - 0x10eb, 0x10eb, 0x1103, 0x1103, 0x110c, 0x112e, 0x112e, 0x112e, - 0x112e, 0x112e, 0x112e, 0x1146, 0x114c, 0x115e, 0x1174, 0x1174, - 0x1174, 0x1174, 0x1180, 0x119b, 0x119b, 0x119b, 0x119b, 0x119b, - 0x119b, 0x11b6, 0x11b6, 0x11b6, 0x11db, 0x11f6, 0x11f6, 0x11f6, - // Entry 140 - 17F - 0x1202, 0x1217, 0x1217, 0x1230, 0x123c, 0x1258, 0x1270, 0x1270, - 0x127f, 0x12a1, 0x12c0, 0x12cc, 0x12d8, 0x12ea, 0x12f9, 0x130b, - 0x130b, 0x130b, 0x131d, 0x132f, 0x133e, 0x133e, 0x133e, 0x133e, - 0x133e, 0x134d, 0x135c, 0x1365, 0x1371, 0x1371, 0x1383, 0x1383, - 0x138f, 0x139e, 0x13c2, 0x13c2, 0x13ce, 0x13ce, 0x13da, 0x13da, - 0x13f6, 0x13f6, 0x13f6, 0x1402, 0x1414, 0x142c, 0x144e, 0x1460, - 0x1460, 0x146c, 0x148b, 0x148b, 0x148b, 0x14a0, 0x14af, 0x14c4, - 0x14d3, 0x14eb, 0x14fa, 0x14fa, 0x150c, 0x151b, 0x151b, 0x151b, - // Entry 180 - 1BF - 0x152d, 0x152d, 0x152d, 0x152d, 0x153c, 0x153c, 0x153c, 0x1545, - 0x1554, 0x1570, 0x1570, 0x1592, 0x1592, 0x15a1, 0x15aa, 0x15b9, - 0x15c5, 0x15c5, 0x15c5, 0x15da, 0x15da, 0x15e9, 0x15f8, 0x1607, - 0x1607, 0x1613, 0x1613, 0x1625, 0x1625, 0x1634, 0x1640, 0x1658, - 0x1658, 0x1677, 0x1683, 0x1695, 0x16b6, 0x16b6, 0x16cb, 0x16da, - 0x16e6, 0x16e6, 0x16fb, 0x1723, 0x1732, 0x1747, 0x1747, 0x1747, - 0x1747, 0x1759, 0x177a, 0x179a, 0x17b5, 0x17c1, 0x17d4, 0x17e6, - 0x17f2, 0x1801, 0x1801, 0x1813, 0x1828, 0x1837, 0x1837, 0x1837, - // Entry 1C0 - 1FF - 0x1843, 0x185f, 0x186b, 0x186b, 0x186b, 0x1883, 0x1883, 0x1883, - 0x1883, 0x1883, 0x189e, 0x189e, 0x18b6, 0x18d4, 0x18e6, 0x18e6, - 0x1914, 0x1914, 0x1914, 0x1914, 0x1914, 0x1914, 0x1914, 0x1914, - 0x1914, 0x1929, 0x1929, 0x1935, 0x1935, 0x194d, 0x1962, 0x197d, - 0x197d, 0x197d, 0x198c, 0x198c, 0x198c, 0x198c, 0x198c, 0x19a7, - 0x19b0, 0x19bf, 0x19cb, 0x19cb, 0x19dd, 0x19dd, 0x19ef, 0x19ef, - 0x1a01, 0x1a10, 0x1a28, 0x1a37, 0x1a37, 0x1a5c, 0x1a5c, 0x1a68, - 0x1a68, 0x1a68, 0x1a93, 0x1a93, 0x1a93, 0x1aa8, 0x1ab4, 0x1ab4, - // Entry 200 - 23F - 0x1ab4, 0x1ab4, 0x1ab4, 0x1ad0, 0x1ae9, 0x1b05, 0x1b21, 0x1b36, - 0x1b36, 0x1b5b, 0x1b5b, 0x1b67, 0x1b67, 0x1b79, 0x1b79, 0x1b79, - 0x1b91, 0x1b91, 0x1ba3, 0x1ba3, 0x1ba3, 0x1bb2, 0x1bbe, 0x1bbe, - 0x1bca, 0x1bd9, 0x1bd9, 0x1bd9, 0x1bd9, 0x1beb, 0x1beb, 0x1beb, - 0x1beb, 0x1beb, 0x1c04, 0x1c04, 0x1c16, 0x1c16, 0x1c16, 0x1c16, - 0x1c2b, 0x1c40, 0x1c55, 0x1c6d, 0x1c99, 0x1cab, 0x1cab, 0x1cc0, - 0x1ce2, 0x1ceb, 0x1ceb, 0x1ceb, 0x1ceb, 0x1ceb, 0x1ceb, 0x1ceb, - 0x1cfa, 0x1d09, 0x1d1e, 0x1d2a, 0x1d2a, 0x1d3f, 0x1d52, 0x1d64, - // Entry 240 - 27F - 0x1d64, 0x1d70, 0x1d70, 0x1d70, 0x1d85, 0x1d94, 0x1d94, 0x1daf, - 0x1daf, 0x1daf, 0x1daf, 0x1daf, 0x1ded, 0x1dfc, 0x1e45, 0x1e57, - 0x1e86, 0x1e86, 0x1eaa, 0x1eaa, 0x1eaa, 0x1eaa, 0x1eda, 0x1f07, - 0x1f07, 0x1f28, 0x1f28, 0x1f28, 0x1f5b, 0x1f5b, 0x1f71, 0x1f86, - 0x1fbc, 0x1fe6, 0x2001, 0x2001, 0x2023, 0x203b, 0x205c, -} // Size: 1254 bytes - -const plLangStr string = "" + // Size: 5587 bytes - "afarabchaskiawestyjskiafrikaansakanamharskiaragońskiarabskiasamskiawarsk" + - "iajmaraazerbejdżańskibaszkirskibiałoruskibułgarskibislamabambarabengalsk" + - "itybetańskibretońskibośniackikatalońskiczeczeńskiczamorrokorsykańskikric" + - "zeskicerkiewnosłowiańskiczuwaskiwalijskiduńskiniemieckimalediwskidzongkh" + - "aewegreckiangielskiesperantohiszpańskiestońskibaskijskiperskifulanifińsk" + - "ifidżijskifarerskifrancuskizachodniofryzyjskiirlandzkiszkocki gaelickiga" + - "licyjskiguaranigudżaratimanxhausahebrajskihindihiri motuchorwackikreolsk" + - "i haitańskiwęgierskiormiańskihererointerlinguaindonezyjskiinterlingueigb" + - "osyczuańskiinupiakidoislandzkiwłoskiinuktitutjapońskijawajskigruzińskiko" + - "ngokikujukwanyamakazachskigrenlandzkikhmerskikannadakoreańskikanurikaszm" + - "irskikurdyjskikomikornijskikirgiskiłacińskiluksemburskigandalimburskilin" + - "galalaotańskilitewskiluba-katangałotewskimalgaskimarszalskimaoryjskimace" + - "dońskimalajalammongolskimarathimalajskimaltańskibirmańskinaurundebele pó" + - "łnocnynepalskindonganiderlandzkinorweski (nynorsk)norweski (bokmål)ndeb" + - "ele południowynawahonjandżaoksytańskiodżibwaoromoorijaosetyjskipendżabsk" + - "ipalijskipolskipasztoportugalskikeczuaretoromańskirundirumuńskirosyjskik" + - "inya-ruandasanskrytsardyńskisindhipółnocnolapońskisangosyngaleskisłowack" + - "isłoweńskisamoańskishonasomalijskialbańskiserbskisuazisotho południowysu" + - "ndajskiszwedzkisuahilitamilskitelugutadżyckitajskitigriniaturkmeńskisets" + - "wanatongatureckitsongatatarskitahitańskiujgurskiukraińskiurduuzbeckivend" + - "awietnamskiwolapikwalońskiwolofkhosajidyszjorubaczuangchińskizuluacehacz" + - "oliadangmeadygejskitunezyjski arabskiafrihiliaghemajnuakadyjskialabamaal" + - "euckialbański gegijskipołudniowoałtajskistaroangielskiangikaaramejskimap" + - "udungunaraonaarapahoalgierski arabskiarawakmarokański arabskiegipski ara" + - "bskiasuamerykański język migowyasturyjskikotavaawadhibeludżibalijskibawa" + - "rskibasaabamumbatak tobaghomalabedżabembabetawibenabafutbadagabeludżi pó" + - "łnocnybhodźpuribikolbinibanjarkomsiksikabisznuprija-manipuribachtiarski" + - "bradźbrahuibodoakooseburiackibugijskibulublinmedumbakaddokaraibskikajuga" + - "atsamcebuanochigaczibczaczagatajskichuukmaryjskiżargon czinuckiczoktawsk" + - "iczipewiańskiczirokeskiczejeńskisoranikoptyjskicapiznonkrymskotatarskikr" + - "eolski seszelskikaszubskidakotadargwijskitaitadelawareslavedogribdinkadż" + - "ermadogridolnołużyckidusun centralnydualaśredniowieczny niderlandzkidiol" + - "adiuladazagaembuefikemilijskistaroegipskiekajukelamickiśrednioangielskiy" + - "upik środkowosyberyjskiewondoestremadurskifangfilipinomeänkielifoncajuńs" + - "kiśredniofrancuskistarofrancuskifranko-prowansalskipółnocnofryzyjskiwsch" + - "odniofryzyjskifriulskigagagauskigangayogbayazaratusztriański darigyyzgil" + - "bertańskigiliańskiśrednio-wysoko-niemieckistaro-wysoko-niemieckikonkani " + - "(Goa)gondigorontalogockigrebostarogreckiszwajcarski niemieckiwayúufrafra" + - "gusiigwichʼinhaidahakkahawajskihindi fidżyjskiehiligaynonhetyckihmonggór" + - "nołużyckixianghupaibanibibioilokanoinguskiingryjskijamajskilojbanngombem" + - "achamejudeo-perskijudeoarabskijutlandzkikarakałpackikabylskikaczinjjukam" + - "bakawikabardyjskikanembutyapmakondekreolski Wysp Zielonego Przylądkakeny" + - "angkorokaingangkhasichotańskikoyra chiinikhowarkirmandżkikakokalenjinkim" + - "bundukomi-permiackikonkanikosraekpellekaraczajsko-bałkarskikriokinarayak" + - "arelskikurukhsambalabafiagwara kolońskakumyckikutenailadyńskilangilahnda" + - "lambalezgijskiLingua Franca Novaliguryjskiliwskilakotalombardzkimongokre" + - "olski luizjańskiloziluryjski północnyłatgalskiluba-lulualuisenolundaluom" + - "izoluhyachiński klasycznylazyjskimadurajskimafamagahimaithilimakasarmand" + - "ingomasajskimabamokszamandarmendemerukreolski Mauritiusaśrednioirlandzki" + - "makuametamikmakminangkabumanchumanipurimohawkmossizachodniomaryjskimunda" + - "ngwiele językówkrikmirandyjskimarwarimentawaimyeneerzjamazanderańskiminn" + - "ańskineapolitańskinamadolnoniemieckinewarskiniasniueaongumbangiemboonnog" + - "ajskistaronordyjskinovialn’kosotho północnynuernewarski klasycznyniamwez" + - "inyankolenyoronzemaosageosmańsko-tureckipangasinopahlavipampangopapiamen" + - "topalaupikardyjskipidżyn nigeryjskipensylwańskiplautdietschstaroperskipa" + - "latynackifenickipiemonckipontyjskiponpejskipruskistaroprowansalskikiczek" + - "eczua górski (Chimborazo)radźasthanirapanuirarotongaromagnoltarifitrombo" + - "cygańskirotumańskirusińskirovianaarumuńskirwasandawejakuckisamarytański " + - "aramejskisamburusasaksantalisaurasztryjskingambaysangusycylijskiscotssas" + - "sarskipołudniowokurdyjskisenekasenaseriselkupskikoyraboro sennistaroirla" + - "ndzkiżmudzkitashelhiytszanarabski (Czad)sidamodolnośląskiselayarpołudnio" + - "wolapońskiluleinariskoltsoninkesogdyjskisranan tongoserersahofryzyjski s" + - "aterlandzkisukumasususumeryjskikomoryjskisyriackisyryjskiśląskitulutemne" + - "atesoterenotetumtigretiwtokelaucachurskiklingońskitlingittałyskitamaszek" + - "tonga (Niasa)tok pisinturoyotarokocakońskitsimshiantackitumbukatuvalutas" + - "awaqtuwińskitamazight (Atlas Środkowy)udmurckiugaryckiumbundunieznany ję" + - "zykwaiweneckiwepskizachodnioflamandzkimeński frankońskiwotiackivõrovunjo" + - "walserwolaytawarajwashowarlpiriwukałmuckimegrelskisogayaojapskiyangbenye" + - "mbanheengatukantońskizapoteckiblisszelandzkizenagastandardowy marokański" + - " tamazightzunibrak treści o charakterze językowymzazakiwspółczesny arabs" + - "kiaustriacki niemieckiszwajcarski wysokoniemieckiaustralijski angielskik" + - "anadyjski angielskibrytyjski angielskiamerykański angielskiamerykański h" + - "iszpańskieuropejski hiszpańskimeksykański hiszpańskikanadyjski francuski" + - "szwajcarski francuskidolnosaksońskiflamandzkibrazylijski portugalskieuro" + - "pejski portugalskimołdawskiserbsko-chorwackikongijski suahilichiński upr" + - "oszczonychiński tradycyjny" - -var plLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000c, 0x0016, 0x001f, 0x0023, 0x002b, 0x0035, - 0x003c, 0x0043, 0x004a, 0x0050, 0x0060, 0x006a, 0x0075, 0x007f, - 0x0086, 0x008d, 0x0096, 0x00a1, 0x00ab, 0x00b5, 0x00c0, 0x00cb, - 0x00d3, 0x00df, 0x00e2, 0x00e8, 0x00fd, 0x0105, 0x010d, 0x0114, - 0x011d, 0x0127, 0x012f, 0x0132, 0x0138, 0x0141, 0x014a, 0x0155, - 0x015e, 0x0167, 0x016d, 0x0173, 0x017a, 0x0184, 0x018c, 0x0195, - 0x01a7, 0x01b0, 0x01c0, 0x01ca, 0x01d1, 0x01db, 0x01df, 0x01e4, - 0x01ed, 0x01f2, 0x01fb, 0x0204, 0x0217, 0x0221, 0x022b, 0x0231, - // Entry 40 - 7F - 0x023c, 0x0248, 0x0253, 0x0257, 0x0262, 0x0269, 0x026c, 0x0275, - 0x027c, 0x0285, 0x028e, 0x0296, 0x02a0, 0x02a5, 0x02ab, 0x02b3, - 0x02bc, 0x02c7, 0x02cf, 0x02d6, 0x02e0, 0x02e6, 0x02f0, 0x02f9, - 0x02fd, 0x0306, 0x030e, 0x0318, 0x0324, 0x0329, 0x0332, 0x0339, - 0x0343, 0x034b, 0x0357, 0x0360, 0x0368, 0x0372, 0x037b, 0x0386, - 0x038f, 0x0398, 0x039f, 0x03a7, 0x03b1, 0x03bb, 0x03c0, 0x03d2, - 0x03da, 0x03e0, 0x03ec, 0x03fe, 0x0410, 0x0423, 0x0429, 0x0431, - 0x043c, 0x0444, 0x0449, 0x044e, 0x0457, 0x0462, 0x046a, 0x0470, - // Entry 80 - BF - 0x0476, 0x0481, 0x0487, 0x0494, 0x0499, 0x04a2, 0x04aa, 0x04b6, - 0x04be, 0x04c8, 0x04ce, 0x04e1, 0x04e6, 0x04f0, 0x04f9, 0x0504, - 0x050e, 0x0513, 0x051d, 0x0526, 0x052d, 0x0532, 0x0543, 0x054c, - 0x0554, 0x055b, 0x0563, 0x0569, 0x0572, 0x0578, 0x0580, 0x058b, - 0x0593, 0x0598, 0x059f, 0x05a5, 0x05ad, 0x05b8, 0x05c0, 0x05ca, - 0x05ce, 0x05d5, 0x05da, 0x05e4, 0x05eb, 0x05f4, 0x05f9, 0x05fe, - 0x0604, 0x060a, 0x0610, 0x0618, 0x061c, 0x0620, 0x0626, 0x062d, - 0x0636, 0x0648, 0x0650, 0x0655, 0x0659, 0x0662, 0x0669, 0x0670, - // Entry C0 - FF - 0x0682, 0x0696, 0x06a4, 0x06aa, 0x06b3, 0x06bd, 0x06c3, 0x06ca, - 0x06db, 0x06db, 0x06e1, 0x06f4, 0x0703, 0x0706, 0x0720, 0x072a, - 0x0730, 0x0736, 0x073e, 0x0746, 0x074e, 0x0753, 0x0758, 0x0762, - 0x0769, 0x076f, 0x0774, 0x077a, 0x077e, 0x0783, 0x0789, 0x079c, - 0x07a6, 0x07ab, 0x07af, 0x07b5, 0x07b8, 0x07bf, 0x07d3, 0x07de, - 0x07e4, 0x07ea, 0x07ee, 0x07f4, 0x07fc, 0x0804, 0x0808, 0x080c, - 0x0813, 0x0818, 0x0821, 0x0827, 0x082c, 0x082c, 0x0833, 0x0838, - 0x083f, 0x084a, 0x084f, 0x0857, 0x0867, 0x0871, 0x087e, 0x0888, - // Entry 100 - 13F - 0x0892, 0x0898, 0x08a1, 0x08a9, 0x08b8, 0x08ca, 0x08d3, 0x08d9, - 0x08e3, 0x08e8, 0x08f0, 0x08f5, 0x08fb, 0x0900, 0x0907, 0x090c, - 0x091a, 0x0929, 0x092e, 0x094a, 0x094f, 0x0954, 0x095a, 0x095e, - 0x0962, 0x096b, 0x0977, 0x097d, 0x0985, 0x0996, 0x09af, 0x09b5, - 0x09c2, 0x09c6, 0x09ce, 0x09d8, 0x09db, 0x09e4, 0x09f5, 0x0a03, - 0x0a16, 0x0a29, 0x0a3b, 0x0a43, 0x0a45, 0x0a4d, 0x0a50, 0x0a54, - 0x0a59, 0x0a6f, 0x0a73, 0x0a80, 0x0a8a, 0x0aa3, 0x0ab9, 0x0ac6, - 0x0acb, 0x0ad4, 0x0ad9, 0x0ade, 0x0ae9, 0x0afe, 0x0b04, 0x0b0a, - // Entry 140 - 17F - 0x0b0f, 0x0b18, 0x0b1d, 0x0b22, 0x0b2a, 0x0b3b, 0x0b45, 0x0b4c, - 0x0b51, 0x0b60, 0x0b65, 0x0b69, 0x0b6d, 0x0b73, 0x0b7a, 0x0b81, - 0x0b8a, 0x0b92, 0x0b98, 0x0b9e, 0x0ba5, 0x0bb1, 0x0bbd, 0x0bc7, - 0x0bd4, 0x0bdc, 0x0be2, 0x0be5, 0x0bea, 0x0bee, 0x0bf9, 0x0c00, - 0x0c04, 0x0c0b, 0x0c2d, 0x0c34, 0x0c38, 0x0c40, 0x0c45, 0x0c4f, - 0x0c5b, 0x0c61, 0x0c6c, 0x0c70, 0x0c78, 0x0c80, 0x0c8e, 0x0c95, - 0x0c9b, 0x0ca1, 0x0cb7, 0x0cbb, 0x0cc3, 0x0ccb, 0x0cd1, 0x0cd8, - 0x0cdd, 0x0cec, 0x0cf3, 0x0cfa, 0x0d03, 0x0d08, 0x0d0e, 0x0d13, - // Entry 180 - 1BF - 0x0d1c, 0x0d2e, 0x0d38, 0x0d3e, 0x0d44, 0x0d4e, 0x0d53, 0x0d67, - 0x0d6b, 0x0d7e, 0x0d88, 0x0d92, 0x0d99, 0x0d9e, 0x0da1, 0x0da5, - 0x0daa, 0x0dbc, 0x0dc4, 0x0dce, 0x0dd2, 0x0dd8, 0x0de0, 0x0de7, - 0x0def, 0x0df7, 0x0dfb, 0x0e01, 0x0e07, 0x0e0c, 0x0e10, 0x0e23, - 0x0e34, 0x0e39, 0x0e3d, 0x0e43, 0x0e4d, 0x0e53, 0x0e5b, 0x0e61, - 0x0e66, 0x0e77, 0x0e7e, 0x0e8d, 0x0e91, 0x0e9c, 0x0ea3, 0x0eab, - 0x0eb0, 0x0eb5, 0x0ec3, 0x0ecd, 0x0edb, 0x0edf, 0x0eed, 0x0ef5, - 0x0ef9, 0x0efd, 0x0eff, 0x0f05, 0x0f0e, 0x0f16, 0x0f24, 0x0f2a, - // Entry 1C0 - 1FF - 0x0f30, 0x0f40, 0x0f44, 0x0f56, 0x0f5e, 0x0f66, 0x0f6b, 0x0f70, - 0x0f75, 0x0f86, 0x0f8f, 0x0f96, 0x0f9e, 0x0fa8, 0x0fad, 0x0fb8, - 0x0fca, 0x0fd7, 0x0fe3, 0x0fee, 0x0ff9, 0x1000, 0x1009, 0x1012, - 0x101b, 0x1021, 0x1032, 0x1037, 0x1052, 0x105e, 0x1065, 0x106e, - 0x1076, 0x107d, 0x1082, 0x108b, 0x1096, 0x109f, 0x10a6, 0x10b0, - 0x10b3, 0x10ba, 0x10c1, 0x10d8, 0x10df, 0x10e4, 0x10eb, 0x10f9, - 0x1100, 0x1105, 0x110f, 0x1114, 0x111d, 0x1131, 0x1137, 0x113b, - 0x113f, 0x1148, 0x1157, 0x1165, 0x116d, 0x1177, 0x117b, 0x1189, - // Entry 200 - 23F - 0x118f, 0x119c, 0x11a3, 0x11b7, 0x11bb, 0x11c0, 0x11c5, 0x11cc, - 0x11d5, 0x11e1, 0x11e6, 0x11ea, 0x1200, 0x1206, 0x120a, 0x1214, - 0x121e, 0x1226, 0x122e, 0x1236, 0x123a, 0x123f, 0x1244, 0x124a, - 0x124f, 0x1254, 0x1257, 0x125e, 0x1267, 0x1272, 0x1279, 0x1281, - 0x1289, 0x1296, 0x129f, 0x12a5, 0x12ab, 0x12b4, 0x12bd, 0x12c2, - 0x12c9, 0x12cf, 0x12d6, 0x12df, 0x12fa, 0x1302, 0x130a, 0x1311, - 0x1320, 0x1323, 0x132a, 0x1330, 0x1343, 0x1356, 0x135e, 0x1363, - 0x1368, 0x136e, 0x1375, 0x137a, 0x137f, 0x1387, 0x1389, 0x1392, - // Entry 240 - 27F - 0x139b, 0x139f, 0x13a2, 0x13a8, 0x13af, 0x13b4, 0x13bd, 0x13c7, - 0x13d0, 0x13d5, 0x13de, 0x13e4, 0x1405, 0x1409, 0x142e, 0x1434, - 0x1449, 0x1449, 0x145d, 0x1478, 0x148e, 0x14a2, 0x14b5, 0x14cb, - 0x14e3, 0x14f9, 0x1511, 0x1511, 0x1525, 0x153a, 0x1549, 0x1553, - 0x156a, 0x1580, 0x158a, 0x159b, 0x15ac, 0x15c0, 0x15d3, -} // Size: 1254 bytes - -const ptLangStr string = "" + // Size: 4157 bytes - "afarabcázioavésticoafricânerakanamáricoaragonêsárabeassamêsaváricoaimará" + - "azerbaijanobashkirbielorrussobúlgarobislamábambarabengalitibetanobretãob" + - "ósniocatalãochechenochamorrocorsocreetchecoeslavo eclesiásticotchuvache" + - "galêsdinamarquêsalemãodivehidzongaevegregoinglêsesperantoespanholestonia" + - "nobascopersafulafinlandêsfijianoferoêsfrancêsfrísio ocidentalirlandêsgaé" + - "lico escocêsgalegoguaraniguzeratemanxhauçáhebraicohíndihiri motucroataha" + - "itianohúngaroarmêniohererointerlínguaindonésiointerlingueigbosichuan yii" + - "nupiaqueidoislandêsitalianoinuktitutjaponêsjavanêsgeorgianocongolêsquicu" + - "iocuanhamacazaquegroenlandêskhmercanarimcoreanocanúricaxemiracurdokomicó" + - "rnicoquirguizlatimluxemburguêslugandalimburguêslingalalaosianolituanolub" + - "a-catangaletãomalgaxemarshalêsmaorimacedôniomalaialamongolmaratimalaioma" + - "ltêsbirmanêsnauruanondebele do nortenepalêsdongoholandêsnynorsk norueguê" + - "sbokmål norueguêsndebele do sulnavajonianjaoccitânicoojibwaoromooriáosse" + - "topanjabipálipolonêspashtoportuguêsquíchuaromancherundiromenorussoquinia" + - "ruandasânscritosardosindisami setentrionalsangocingalêseslovacoeslovenos" + - "amoanoxonasomalialbanêssérviosuázisoto do sulsundanêssuecosuaílitâmiltél" + - "ugotadjiquetailandêstigríniaturcomenotswanatonganêsturcotsongatártarotai" + - "tianouigurucranianourduuzbequevendavietnamitavolapuquevalãouolofexhosaií" + - "dicheiorubázhuangchinêszuluachémacoliadangmeadigueafrihiliaghemainuacadi" + - "anoaleútealtai do sulinglês arcaicoangikaaramaicomapudungunarapahoarauaq" + - "uiasuasturianoawadhibalúchibalinêsbasabamumghomala’bejabembabenabafutbal" + - "úchi ocidentalbhojpuribikolbinikomsiksikabrajbodoakooseburiatobuginêsbu" + - "lublinmedumbacaddocaribecayugaatsamcebuanochigachibchachagataichuukesema" + - "rijargão Chinookchoctawchipewyancherokeecheienecurdo centralcoptaturco d" + - "a Crimeiacrioulo francês seichelensekashubiandacotadargwataitadelawaresl" + - "avedogribdinkazarmadogribaixo sorábiodualaholandês médiojola-fonyidiúlad" + - "azagaembuefiqueegípcio arcaicoekajukelamiteinglês médioewondofanguefilip" + - "inofomfrancês cajunfrancês médiofrancês arcaicofrísio setentrionalfrisão" + - " orientalfriulanogagagauzgangayogbaiageezgilbertêsalto alemão médioalemã" + - "o arcaico altogondigorontalogóticogrebogrego arcaicoalemão (Suíça)gusiig" + - "wichʼinhaidahacáhavaianohiligaynonhititahmongalto sorábioxianghupaibanib" + - "ibioilocanoinguchelojbannguembamachamejudaico-persajudaico-arábicokara-k" + - "alpakkabylekachinjjukambakawikabardianokanembutyapmacondekabuverdianukor" + - "okhasikhotanêskoyra chiinikakokalenjinquimbundokomi-permyakconcanikosrae" + - "ankpellekarachay-balkarcaréliokurukhshambalabafiakölschkumykkutenailadin" + - "olangilahndalambalezguilacotamongocrioulo da Louisianaloziluri setentrio" + - "nalluba-lulualuisenolundaluolushailuyiamadurêsmafamagahimaithilimakasarm" + - "andingamassaimabamocsamandarmendemerumorisyenirlandês médiomacuameta’miq" + - "uemaqueminangkabaumanchumanipurimoicanomossimundangmúltiplos idiomascree" + - "kmirandêsmarwarimyeneerzyamazandaranimin nannapolitanonamabaixo alemãone" + - "wariniasniueanokwasiongiemboonnogainórdico arcaicon’kosoto setentrionaln" + - "uernewari clássiconyamwezinyankolenyoronzimaosageturco otomanopangasinãp" + - "álavipampangapapiamentopalauanopidgin nigerianopersa arcaicofeníciopohn" + - "peianoprussianoprovençal arcaicoquichérajastanirapanuirarotonganoromboro" + - "maniaromenorwasandawesakhaaramaico samaritanosamburusasaksantalingambays" + - "angusicilianoscotscurdo meridionalsenecasenaselkupkoyraboro senniirlandê" + - "s arcaicotachelhitshanárabe chadianosidamosami do sulsami de Lulesami de" + - " Inarisami de Skoltsoninquêsogdianosurinamêssereresahosukumasususumérioc" + - "omorianosiríaco clássicosiríacotimnetesoterenotétumtigrétivtoquelauanokl" + - "ingontlinguitetamaxequetonganês de Nyasatok pisintarokotsimshianotumbuka" + - "tuvaluanotasawaqtuvinianotamazirte do Atlas Centraludmurteugaríticoumbun" + - "duidioma desconhecidovaivóticovunjowalserwolayttawaraywashowarlpiriwukal" + - "myklusogayaoyapeseyangbenyembacantonêszapotecosímbolos bliszenagatamazir" + - "te marroqino padrãozunhisem conteúdo linguísticozazakiárabe modernoazeri" + - " sulalto alemão (Suíça)baixo saxãoflamengomoldávioservo-croatasuaíli do " + - "Congochinês simplificadochinês tradicional" - -var ptLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000c, 0x0015, 0x001f, 0x0023, 0x002b, 0x0034, - 0x003a, 0x0042, 0x004a, 0x0051, 0x005c, 0x0063, 0x006e, 0x0076, - 0x007e, 0x0085, 0x008c, 0x0094, 0x009b, 0x00a2, 0x00aa, 0x00b2, - 0x00ba, 0x00bf, 0x00c3, 0x00c9, 0x00dd, 0x00e6, 0x00ec, 0x00f8, - 0x00ff, 0x0105, 0x010b, 0x010e, 0x0113, 0x011a, 0x0123, 0x012b, - 0x0134, 0x0139, 0x013e, 0x0142, 0x014c, 0x0153, 0x015a, 0x0162, - 0x0173, 0x017c, 0x018d, 0x0193, 0x019a, 0x01a2, 0x01a6, 0x01ad, - 0x01b5, 0x01bb, 0x01c4, 0x01ca, 0x01d2, 0x01da, 0x01e2, 0x01e8, - // Entry 40 - 7F - 0x01f4, 0x01fe, 0x0209, 0x020d, 0x0217, 0x0220, 0x0223, 0x022c, - 0x0234, 0x023d, 0x0245, 0x024d, 0x0256, 0x025f, 0x0266, 0x026e, - 0x0275, 0x0281, 0x0286, 0x028d, 0x0294, 0x029b, 0x02a3, 0x02a8, - 0x02ac, 0x02b4, 0x02bc, 0x02c1, 0x02ce, 0x02d5, 0x02e0, 0x02e7, - 0x02ef, 0x02f6, 0x0302, 0x0308, 0x030f, 0x0319, 0x031e, 0x0328, - 0x0330, 0x0336, 0x033c, 0x0342, 0x0349, 0x0352, 0x035a, 0x036a, - 0x0372, 0x0377, 0x0380, 0x0392, 0x03a4, 0x03b2, 0x03b8, 0x03be, - 0x03c9, 0x03cf, 0x03d4, 0x03d9, 0x03df, 0x03e6, 0x03eb, 0x03f3, - // Entry 80 - BF - 0x03f9, 0x0403, 0x040b, 0x0413, 0x0418, 0x041e, 0x0423, 0x042f, - 0x0439, 0x043e, 0x0443, 0x0454, 0x0459, 0x0462, 0x046a, 0x0472, - 0x0479, 0x047d, 0x0483, 0x048b, 0x0492, 0x0498, 0x04a3, 0x04ac, - 0x04b1, 0x04b8, 0x04be, 0x04c5, 0x04cd, 0x04d7, 0x04e0, 0x04e9, - 0x04ef, 0x04f8, 0x04fd, 0x0503, 0x050b, 0x0513, 0x0518, 0x0521, - 0x0525, 0x052c, 0x0531, 0x053b, 0x0544, 0x054a, 0x0550, 0x0555, - 0x055d, 0x0564, 0x056a, 0x0571, 0x0575, 0x057b, 0x0580, 0x0587, - 0x058d, 0x058d, 0x0595, 0x059a, 0x059e, 0x05a6, 0x05a6, 0x05ad, - // Entry C0 - FF - 0x05ad, 0x05b9, 0x05c8, 0x05ce, 0x05d6, 0x05e0, 0x05e0, 0x05e7, - 0x05e7, 0x05e7, 0x05ef, 0x05ef, 0x05ef, 0x05f2, 0x05f2, 0x05fb, - 0x05fb, 0x0601, 0x0609, 0x0611, 0x0611, 0x0615, 0x061a, 0x061a, - 0x0624, 0x0628, 0x062d, 0x062d, 0x0631, 0x0636, 0x0636, 0x0648, - 0x0650, 0x0655, 0x0659, 0x0659, 0x065c, 0x0663, 0x0663, 0x0663, - 0x0667, 0x0667, 0x066b, 0x0671, 0x0678, 0x0680, 0x0684, 0x0688, - 0x068f, 0x0694, 0x069a, 0x06a0, 0x06a5, 0x06a5, 0x06ac, 0x06b1, - 0x06b8, 0x06c0, 0x06c8, 0x06cc, 0x06db, 0x06e2, 0x06eb, 0x06f3, - // Entry 100 - 13F - 0x06fa, 0x0707, 0x070c, 0x070c, 0x071c, 0x0738, 0x0741, 0x0747, - 0x074d, 0x0752, 0x075a, 0x075f, 0x0765, 0x076a, 0x076f, 0x0774, - 0x0782, 0x0782, 0x0787, 0x0797, 0x07a1, 0x07a7, 0x07ad, 0x07b1, - 0x07b7, 0x07b7, 0x07c7, 0x07cd, 0x07d4, 0x07e2, 0x07e2, 0x07e8, - 0x07e8, 0x07ee, 0x07f6, 0x07f6, 0x07f9, 0x0807, 0x0816, 0x0826, - 0x0826, 0x083a, 0x084a, 0x0852, 0x0854, 0x085a, 0x085d, 0x0861, - 0x0866, 0x0866, 0x086a, 0x0874, 0x0874, 0x0887, 0x089b, 0x089b, - 0x08a0, 0x08a9, 0x08b0, 0x08b5, 0x08c2, 0x08d3, 0x08d3, 0x08d3, - // Entry 140 - 17F - 0x08d8, 0x08e1, 0x08e6, 0x08eb, 0x08f3, 0x08f3, 0x08fd, 0x0903, - 0x0908, 0x0915, 0x091a, 0x091e, 0x0922, 0x0928, 0x092f, 0x0936, - 0x0936, 0x0936, 0x093c, 0x0943, 0x094a, 0x0957, 0x0967, 0x0967, - 0x0972, 0x0978, 0x097e, 0x0981, 0x0986, 0x098a, 0x0994, 0x099b, - 0x099f, 0x09a6, 0x09b2, 0x09b2, 0x09b6, 0x09b6, 0x09bb, 0x09c4, - 0x09d0, 0x09d0, 0x09d0, 0x09d4, 0x09dc, 0x09e5, 0x09f1, 0x09f8, - 0x0a00, 0x0a06, 0x0a15, 0x0a15, 0x0a15, 0x0a1d, 0x0a23, 0x0a2b, - 0x0a30, 0x0a37, 0x0a3c, 0x0a43, 0x0a49, 0x0a4e, 0x0a54, 0x0a59, - // Entry 180 - 1BF - 0x0a5f, 0x0a5f, 0x0a5f, 0x0a5f, 0x0a65, 0x0a65, 0x0a6a, 0x0a7e, - 0x0a82, 0x0a93, 0x0a93, 0x0a9d, 0x0aa4, 0x0aa9, 0x0aac, 0x0ab2, - 0x0ab7, 0x0ab7, 0x0ab7, 0x0abf, 0x0ac3, 0x0ac9, 0x0ad1, 0x0ad8, - 0x0ae0, 0x0ae6, 0x0aea, 0x0aef, 0x0af5, 0x0afa, 0x0afe, 0x0b06, - 0x0b16, 0x0b1b, 0x0b22, 0x0b2c, 0x0b37, 0x0b3d, 0x0b45, 0x0b4c, - 0x0b51, 0x0b51, 0x0b58, 0x0b6a, 0x0b6f, 0x0b78, 0x0b7f, 0x0b7f, - 0x0b84, 0x0b89, 0x0b94, 0x0b9b, 0x0ba5, 0x0ba9, 0x0bb6, 0x0bbc, - 0x0bc0, 0x0bc7, 0x0bc7, 0x0bcd, 0x0bd6, 0x0bdb, 0x0beb, 0x0beb, - // Entry 1C0 - 1FF - 0x0bf1, 0x0c02, 0x0c06, 0x0c16, 0x0c1e, 0x0c26, 0x0c2b, 0x0c30, - 0x0c35, 0x0c42, 0x0c4c, 0x0c53, 0x0c5b, 0x0c65, 0x0c6d, 0x0c6d, - 0x0c7d, 0x0c7d, 0x0c7d, 0x0c8a, 0x0c8a, 0x0c92, 0x0c92, 0x0c92, - 0x0c9c, 0x0ca5, 0x0cb7, 0x0cbe, 0x0cbe, 0x0cc7, 0x0cce, 0x0cd9, - 0x0cd9, 0x0cd9, 0x0cde, 0x0ce4, 0x0ce4, 0x0ce4, 0x0ce4, 0x0ceb, - 0x0cee, 0x0cf5, 0x0cfa, 0x0d0d, 0x0d14, 0x0d19, 0x0d20, 0x0d20, - 0x0d27, 0x0d2c, 0x0d35, 0x0d3a, 0x0d3a, 0x0d4a, 0x0d50, 0x0d54, - 0x0d54, 0x0d5a, 0x0d69, 0x0d7a, 0x0d7a, 0x0d83, 0x0d87, 0x0d96, - // Entry 200 - 23F - 0x0d9c, 0x0d9c, 0x0d9c, 0x0da7, 0x0db3, 0x0dc0, 0x0dcd, 0x0dd6, - 0x0dde, 0x0de8, 0x0dee, 0x0df2, 0x0df2, 0x0df8, 0x0dfc, 0x0e04, - 0x0e0d, 0x0e1f, 0x0e27, 0x0e27, 0x0e27, 0x0e2c, 0x0e30, 0x0e36, - 0x0e3c, 0x0e42, 0x0e45, 0x0e50, 0x0e50, 0x0e57, 0x0e60, 0x0e60, - 0x0e69, 0x0e7b, 0x0e84, 0x0e84, 0x0e8a, 0x0e8a, 0x0e94, 0x0e94, - 0x0e9b, 0x0ea4, 0x0eab, 0x0eb4, 0x0ece, 0x0ed5, 0x0edf, 0x0ee6, - 0x0ef9, 0x0efc, 0x0efc, 0x0efc, 0x0efc, 0x0efc, 0x0f03, 0x0f03, - 0x0f08, 0x0f0e, 0x0f16, 0x0f1b, 0x0f20, 0x0f28, 0x0f2a, 0x0f30, - // Entry 240 - 27F - 0x0f30, 0x0f36, 0x0f39, 0x0f3f, 0x0f46, 0x0f4b, 0x0f4b, 0x0f54, - 0x0f5c, 0x0f6a, 0x0f6a, 0x0f70, 0x0f8b, 0x0f90, 0x0faa, 0x0fb0, - 0x0fbe, 0x0fc7, 0x0fc7, 0x0fdd, 0x0fdd, 0x0fdd, 0x0fdd, 0x0fdd, - 0x0fdd, 0x0fdd, 0x0fdd, 0x0fdd, 0x0fdd, 0x0fdd, 0x0fe9, 0x0ff1, - 0x0ff1, 0x0ff1, 0x0ffa, 0x1006, 0x1016, 0x102a, 0x103d, -} // Size: 1254 bytes - -const ptPTLangStr string = "" + // Size: 1082 bytes - "africanêsavariccórsicochecochuvasheweestóniofrísico ocidentalhaúçahindia" + - "rméniogandamacedóniomaratanepalinorueguês nynorsknorueguês bokmåloccitan" + - "ooriyaosséticopolacopastósami do norteshonatelugutajiqueturcomanotongata" + - "tarusbequeuólofexosaiorubainglês antigomapuchebamunghomalaburiatchuquêsj" + - "argão chinookcheyennesorani curdofrancês crioulo seselwaefikegípcio clás" + - "sicofonfrancês antigofrísio orientalgeʼezalemão alto antigogrego clássic" + - "oalemão suíçocabardianocrioulo cabo-verdianocarachaio-bálcarolezghianocr" + - "ioulo de Louisianaluri do norteluomakassarêsmohawkvários idiomasbaixo-al" + - "emãonórdico antigolíngua pangasinesapampangopersa antigolíngua pohnpeica" + - "provençal antigorajastanêsirlandês antigoárabe do Chadeinari samitemneta" + - "mazight do Atlas Centralvaisogatamazight marroquino padrãozunizazaárabe " + - "moderno padrãoalemão austríacoalto alemão suíçoinglês australianoinglês " + - "canadianoinglês britânicoinglês americanoespanhol latino-americanoespanh" + - "ol europeufrancês canadianofrancês suíçobaixo-saxãoportuguês do Brasilpo" + - "rtuguês europeu" - -var ptPTLangIdx = []uint16{ // 610 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0018, 0x0018, 0x001d, 0x001d, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0048, - 0x0048, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x0055, 0x0055, - // Entry 40 - 7F - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0064, - 0x0064, 0x0064, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x0070, 0x0070, 0x0070, 0x0082, 0x0094, 0x0094, 0x0094, 0x0094, - 0x009c, 0x009c, 0x009c, 0x00a1, 0x00aa, 0x00aa, 0x00aa, 0x00b0, - // Entry 80 - BF - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00ce, 0x00d5, 0x00d5, 0x00d5, 0x00de, - 0x00de, 0x00e3, 0x00e3, 0x00e3, 0x00e8, 0x00e8, 0x00e8, 0x00e8, - 0x00e8, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00ef, 0x00f6, 0x00fa, - 0x00fa, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, - // Entry C0 - FF - 0x0100, 0x0100, 0x010e, 0x010e, 0x010e, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, - 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x0115, 0x011a, 0x011a, - 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, - 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, 0x0121, - 0x0121, 0x0121, 0x0121, 0x0121, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x012f, 0x012f, 0x013e, 0x013e, 0x013e, 0x013e, - // Entry 100 - 13F - 0x0146, 0x0152, 0x0152, 0x0152, 0x0152, 0x016a, 0x016a, 0x016a, - 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, 0x016a, - 0x016e, 0x016e, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, - 0x0180, 0x0180, 0x0180, 0x0180, 0x0183, 0x0183, 0x0183, 0x0192, - 0x0192, 0x0192, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, 0x01a2, - 0x01a2, 0x01a2, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01bb, 0x01bb, - 0x01bb, 0x01bb, 0x01bb, 0x01bb, 0x01ca, 0x01d9, 0x01d9, 0x01d9, - // Entry 140 - 17F - 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, - 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, - 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, - 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e3, 0x01e3, - 0x01e3, 0x01e3, 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x01f8, - 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x01f8, 0x01f8, - 0x01f8, 0x01f8, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - // Entry 180 - 1BF - 0x0213, 0x0213, 0x0213, 0x0213, 0x0213, 0x0213, 0x0213, 0x0227, - 0x0227, 0x0234, 0x0234, 0x0234, 0x0234, 0x0234, 0x0237, 0x0237, - 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, 0x0242, - 0x0242, 0x0242, 0x0242, 0x0242, 0x0242, 0x0242, 0x0242, 0x0242, - 0x0242, 0x0242, 0x0242, 0x0242, 0x0242, 0x0242, 0x0242, 0x0248, - 0x0248, 0x0248, 0x0248, 0x0257, 0x0257, 0x0257, 0x0257, 0x0257, - 0x0257, 0x0257, 0x0257, 0x0257, 0x0257, 0x0257, 0x0264, 0x0264, - 0x0264, 0x0264, 0x0264, 0x0264, 0x0264, 0x0264, 0x0273, 0x0273, - // Entry 1C0 - 1FF - 0x0273, 0x0273, 0x0273, 0x0273, 0x0273, 0x0273, 0x0273, 0x0273, - 0x0273, 0x0273, 0x0286, 0x0286, 0x028e, 0x028e, 0x028e, 0x028e, - 0x028e, 0x028e, 0x028e, 0x029a, 0x029a, 0x029a, 0x029a, 0x029a, - 0x02ab, 0x02ab, 0x02bc, 0x02bc, 0x02bc, 0x02c7, 0x02c7, 0x02c7, - 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, - 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, - 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, - 0x02c7, 0x02c7, 0x02c7, 0x02d7, 0x02d7, 0x02d7, 0x02d7, 0x02e6, - // Entry 200 - 23F - 0x02e6, 0x02e6, 0x02e6, 0x02e6, 0x02e6, 0x02f0, 0x02f0, 0x02f0, - 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, - 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f5, 0x02f5, 0x02f5, - 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, - 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x02f5, - 0x02f5, 0x02f5, 0x02f5, 0x02f5, 0x030f, 0x030f, 0x030f, 0x030f, - 0x030f, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, - 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, - // Entry 240 - 27F - 0x0312, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, 0x0316, - 0x0316, 0x0316, 0x0316, 0x0316, 0x0332, 0x0336, 0x0336, 0x033a, - 0x0350, 0x0350, 0x0362, 0x0376, 0x0389, 0x039a, 0x03ac, 0x03bd, - 0x03d6, 0x03e6, 0x03e6, 0x03e6, 0x03f8, 0x0408, 0x0414, 0x0414, - 0x0428, 0x043a, -} // Size: 1244 bytes - -const roLangStr string = "" + // Size: 4259 bytes - "afarabhazăavestanăafrikaansakanamharicăaragonezăarabăasamezăavarăaymaraa" + - "zerăbașkirăbielorusăbulgarăbislamabambarabengalezătibetanăbretonăbosniac" + - "ăcatalanăcecenăchamorrocorsicanăcreecehăslavonăciuvașăgalezădanezăgerma" + - "nădivehidzongkhaewegreacăenglezăesperantospaniolăestonăbascăpersanăfulah" + - "finlandezăfijianăfaroezăfrancezăfrizonă occidentalăirlandezăgaelică scoț" + - "ianăgalicianăguaranigujaratimanxhausaebraicăhindihiri motucroatăhaitiană" + - "maghiarăarmeanăhererointerlinguaindonezianăinterlingueigbosichuan yiinup" + - "iakidoislandezăitalianăinuktitutjaponezăjavanezăgeorgianăcongolezăkikuyu" + - "kuanyamakazahăkalaallisutkhmerăkannadacoreeanăkanuricașmirăkurdăkomicorn" + - "icăkârgâzălatinăluxemburghezăgandalimburghezălingalalaoțianălituanianălu" + - "ba-katangaletonămalgașămarshallezămaorimacedoneanămalayalammongolămarath" + - "imalaezămaltezăbirmanănaurundebele de nordnepalezăndonganeerlandezănorve" + - "giană nynorsknorvegiană bokmålndebele de sudnavajonyanjaoccitanăojibwaor" + - "omoodiaosetăpunjabipalipolonezăpaștunăportughezăquechuaromanșăkirundirom" + - "ânărusăkinyarwandasanscrităsardinianăsindhisami de nordsangosinghalezăs" + - "lovacăslovenăsamoanăshonasomalezăalbanezăsârbăswatisesothosundanezăsuede" + - "zăswahilitamilătelugutadjicăthailandezătigrinăturkmenăsetswanatonganătur" + - "cătsongatătarătahitianăuigurăucraineanăurduuzbecăvendavietnamezăvolapukv" + - "alonăwolofxhosaidișyorubazhuangchinezăzuluacehacoliadangmeadygheafrihili" + - "aghemainuakkadianăaleutăaltaică meridionalăengleză vecheangikaaramaicăma" + - "puchearapahoarawakasuasturianăawadhibaluchibalinezăbasaabamunghomalabeja" + - "bembabenabafutbaluchi occidentalăbhojpuribikolbinikomsiksikabrajbodoakoo" + - "seburiatbuginezăbulublinmedumbacaddocaribcayugaatsamcebuanăchigachibchac" + - "hagataichuukesemarijargon chinookchoctawchipewyancherokeecheyennekurdă c" + - "entralăcoptăturcă crimeeanăcreolă franceză seselwacașubianădakotadargwat" + - "aitadelawareslavedogribdinkazarmadogrisorabă de josdualaneerlandeză medi" + - "ejola-fonyidyuladazagaembuefikegipteană vecheekajukelamităengleză mediee" + - "wondofangfilipinezăfonfranceză cajunfranceză mediefranceză vechefrizonă " + - "nordicăfrizonă orientalăfriulanăgagăgăuzăchineză gangayogbayageezgilbert" + - "inăgermană înaltă mediegermană înaltă vechegondigorontalogoticăgrebogrea" + - "că vechegermană (Elveția)gusiigwichʼinhaidachineză hakkahawaiianăhiligay" + - "nonhitităhmongsorabă de suschineză xianghupaibanibibioilokoingușălojbann" + - "gombamachameiudeo-persanăiudeo-arabăkarakalpakkabylekachinjjukambakawika" + - "bardiankanembutyapmakondekabuverdianukorokhasikhotanezăkoyra chiinikakok" + - "alenjinkimbundukomi-permiakkonkanikosraekpellekaraceai-balkarkarelianăku" + - "rukhshambalabafiakölschkumykkutenailadinolangilahndalambalezghianlakotam" + - "ongocreolă louisianezăloziluri de nordluba-lulualuisenolundaluomizoluyia" + - "madurezămafamagahimaithilimakasarmandingomasaimabamokshamandarmendemerum" + - "orisyenirlandeză mediemakhuwa-meettometa’micmacminangkabaumanciurianăman" + - "ipurimohawkmossimundangmai multe limbicreekmirandezămarwarimyeneerzyamaz" + - "anderanichineză min nannapolitanănamagermana de josnewariniasniueanăkwas" + - "iongiemboonnogainordică vechen’kosotho de nordnuernewari clasicănyamwezi" + - "nyankolenyoronzimaosageturcă otomanăpangasinanpahlavipampangapapiamentop" + - "alauanăpidgin nigerianpersană vechefenicianăpohnpeianăprusacăprovensală " + - "vechequichérajasthanirapanuirarotonganromboromaniaromânărwasandawesakhaa" + - "ramaică samariteanăsamburusasaksantalingambaysangusicilianăscotskurdă de" + - " sudsenecasenaselkupkoyraboro Senniirlandeză vechetachelhitshanarabă cia" + - "dianăsidamosami de sudlule samiinari samiskolt samisoninkesogdiensranan " + - "tongoserersahosukumasususumerianăcomorezăsiriacă clasicăsiriacătimneteso" + - "terenotetumtigretivtokelauklingonianătlingittamasheknyasa tongatok pisin" + - "tarokotsimshiantumbukatuvalutasawaqtuvanătamazight central marocanăudmur" + - "tugariticăumbundulimbă necunoscutăvaivoticăvunjowalserwolaitawaraywashow" + - "arlpirichineză wucalmucăsogayaoyapezăyangbenyembacantonezăzapotecăsimbol" + - "uri Bilsszenagatamazight standard marocanăzunifară conținut lingvisticza" + - "zaarabă standard modernăgermană standard (Elveția)saxona de josflamandăs" + - "ârbo-croatăswahili (R.D. Congo)chineză tradițională" - -var roLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000b, 0x0014, 0x001d, 0x0021, 0x002a, 0x0034, - 0x003a, 0x0042, 0x0048, 0x004e, 0x0054, 0x005d, 0x0067, 0x006f, - 0x0076, 0x007d, 0x0087, 0x0090, 0x0098, 0x00a1, 0x00aa, 0x00b1, - 0x00b9, 0x00c3, 0x00c7, 0x00cc, 0x00d4, 0x00dd, 0x00e4, 0x00eb, - 0x00f3, 0x00f9, 0x0101, 0x0104, 0x010b, 0x0113, 0x011c, 0x0125, - 0x012c, 0x0132, 0x013a, 0x013f, 0x014a, 0x0152, 0x015a, 0x0163, - 0x0178, 0x0182, 0x0195, 0x019f, 0x01a6, 0x01ae, 0x01b2, 0x01b7, - 0x01bf, 0x01c4, 0x01cd, 0x01d4, 0x01dd, 0x01e6, 0x01ee, 0x01f4, - // Entry 40 - 7F - 0x01ff, 0x020b, 0x0216, 0x021a, 0x0224, 0x022b, 0x022e, 0x0238, - 0x0241, 0x024a, 0x0253, 0x025c, 0x0266, 0x0270, 0x0276, 0x027e, - 0x0285, 0x0290, 0x0297, 0x029e, 0x02a7, 0x02ad, 0x02b6, 0x02bc, - 0x02c0, 0x02c8, 0x02d2, 0x02d9, 0x02e7, 0x02ec, 0x02f8, 0x02ff, - 0x0309, 0x0314, 0x0320, 0x0327, 0x0330, 0x033c, 0x0341, 0x034d, - 0x0356, 0x035e, 0x0365, 0x036d, 0x0375, 0x037d, 0x0382, 0x0391, - 0x039a, 0x03a0, 0x03ac, 0x03bf, 0x03d2, 0x03e0, 0x03e6, 0x03ec, - 0x03f5, 0x03fb, 0x0400, 0x0404, 0x040a, 0x0411, 0x0415, 0x041e, - // Entry 80 - BF - 0x0427, 0x0432, 0x0439, 0x0442, 0x0449, 0x0451, 0x0456, 0x0461, - 0x046b, 0x0476, 0x047c, 0x0488, 0x048d, 0x0498, 0x04a0, 0x04a8, - 0x04b0, 0x04b5, 0x04be, 0x04c7, 0x04ce, 0x04d3, 0x04da, 0x04e4, - 0x04ec, 0x04f3, 0x04fa, 0x0500, 0x0508, 0x0514, 0x051c, 0x0525, - 0x052d, 0x0535, 0x053b, 0x0541, 0x0549, 0x0553, 0x055a, 0x0565, - 0x0569, 0x0570, 0x0575, 0x0580, 0x0587, 0x058e, 0x0593, 0x0598, - 0x059d, 0x05a3, 0x05a9, 0x05b1, 0x05b5, 0x05b9, 0x05be, 0x05c5, - 0x05cb, 0x05cb, 0x05d3, 0x05d8, 0x05dc, 0x05e6, 0x05e6, 0x05ed, - // Entry C0 - FF - 0x05ed, 0x0602, 0x0610, 0x0616, 0x061f, 0x0626, 0x0626, 0x062d, - 0x062d, 0x062d, 0x0633, 0x0633, 0x0633, 0x0636, 0x0636, 0x0640, - 0x0640, 0x0646, 0x064d, 0x0656, 0x0656, 0x065b, 0x0660, 0x0660, - 0x0667, 0x066b, 0x0670, 0x0670, 0x0674, 0x0679, 0x0679, 0x068d, - 0x0695, 0x069a, 0x069e, 0x069e, 0x06a1, 0x06a8, 0x06a8, 0x06a8, - 0x06ac, 0x06ac, 0x06b0, 0x06b6, 0x06bc, 0x06c5, 0x06c9, 0x06cd, - 0x06d4, 0x06d9, 0x06de, 0x06e4, 0x06e9, 0x06e9, 0x06f1, 0x06f6, - 0x06fd, 0x0705, 0x070d, 0x0711, 0x071f, 0x0726, 0x072f, 0x0737, - // Entry 100 - 13F - 0x073f, 0x074f, 0x0755, 0x0755, 0x0766, 0x077f, 0x078a, 0x0790, - 0x0796, 0x079b, 0x07a3, 0x07a8, 0x07ae, 0x07b3, 0x07b8, 0x07bd, - 0x07cb, 0x07cb, 0x07d0, 0x07e2, 0x07ec, 0x07f1, 0x07f7, 0x07fb, - 0x07ff, 0x07ff, 0x080f, 0x0815, 0x081d, 0x082b, 0x082b, 0x0831, - 0x0831, 0x0835, 0x0840, 0x0840, 0x0843, 0x0852, 0x0861, 0x0870, - 0x0870, 0x0881, 0x0894, 0x089d, 0x089f, 0x08a9, 0x08b5, 0x08b9, - 0x08be, 0x08be, 0x08c2, 0x08cd, 0x08cd, 0x08e4, 0x08fb, 0x08fb, - 0x0900, 0x0909, 0x0910, 0x0915, 0x0922, 0x0935, 0x0935, 0x0935, - // Entry 140 - 17F - 0x093a, 0x0943, 0x0948, 0x0956, 0x0960, 0x0960, 0x096a, 0x0971, - 0x0976, 0x0984, 0x0992, 0x0996, 0x099a, 0x09a0, 0x09a5, 0x09ad, - 0x09ad, 0x09ad, 0x09b3, 0x09b9, 0x09c0, 0x09ce, 0x09da, 0x09da, - 0x09e4, 0x09ea, 0x09f0, 0x09f3, 0x09f8, 0x09fc, 0x0a05, 0x0a0c, - 0x0a10, 0x0a17, 0x0a23, 0x0a23, 0x0a27, 0x0a27, 0x0a2c, 0x0a36, - 0x0a42, 0x0a42, 0x0a42, 0x0a46, 0x0a4e, 0x0a56, 0x0a62, 0x0a69, - 0x0a6f, 0x0a75, 0x0a84, 0x0a84, 0x0a84, 0x0a8e, 0x0a94, 0x0a9c, - 0x0aa1, 0x0aa8, 0x0aad, 0x0ab4, 0x0aba, 0x0abf, 0x0ac5, 0x0aca, - // Entry 180 - 1BF - 0x0ad2, 0x0ad2, 0x0ad2, 0x0ad2, 0x0ad8, 0x0ad8, 0x0add, 0x0af1, - 0x0af5, 0x0b01, 0x0b01, 0x0b0b, 0x0b12, 0x0b17, 0x0b1a, 0x0b1e, - 0x0b23, 0x0b23, 0x0b23, 0x0b2c, 0x0b30, 0x0b36, 0x0b3e, 0x0b45, - 0x0b4d, 0x0b52, 0x0b56, 0x0b5c, 0x0b62, 0x0b67, 0x0b6b, 0x0b73, - 0x0b83, 0x0b91, 0x0b98, 0x0b9e, 0x0ba9, 0x0bb5, 0x0bbd, 0x0bc3, - 0x0bc8, 0x0bc8, 0x0bcf, 0x0bde, 0x0be3, 0x0bed, 0x0bf4, 0x0bf4, - 0x0bf9, 0x0bfe, 0x0c09, 0x0c19, 0x0c24, 0x0c28, 0x0c36, 0x0c3c, - 0x0c40, 0x0c48, 0x0c48, 0x0c4e, 0x0c57, 0x0c5c, 0x0c6a, 0x0c6a, - // Entry 1C0 - 1FF - 0x0c70, 0x0c7d, 0x0c81, 0x0c90, 0x0c98, 0x0ca0, 0x0ca5, 0x0caa, - 0x0caf, 0x0cbe, 0x0cc8, 0x0ccf, 0x0cd7, 0x0ce1, 0x0cea, 0x0cea, - 0x0cf9, 0x0cf9, 0x0cf9, 0x0d07, 0x0d07, 0x0d11, 0x0d11, 0x0d11, - 0x0d1c, 0x0d24, 0x0d35, 0x0d3c, 0x0d3c, 0x0d46, 0x0d4d, 0x0d57, - 0x0d57, 0x0d57, 0x0d5c, 0x0d62, 0x0d62, 0x0d62, 0x0d62, 0x0d6b, - 0x0d6e, 0x0d75, 0x0d7a, 0x0d90, 0x0d97, 0x0d9c, 0x0da3, 0x0da3, - 0x0daa, 0x0daf, 0x0db9, 0x0dbe, 0x0dbe, 0x0dcb, 0x0dd1, 0x0dd5, - 0x0dd5, 0x0ddb, 0x0dea, 0x0dfa, 0x0dfa, 0x0e03, 0x0e07, 0x0e17, - // Entry 200 - 23F - 0x0e1d, 0x0e1d, 0x0e1d, 0x0e28, 0x0e31, 0x0e3b, 0x0e45, 0x0e4c, - 0x0e53, 0x0e5f, 0x0e64, 0x0e68, 0x0e68, 0x0e6e, 0x0e72, 0x0e7c, - 0x0e85, 0x0e96, 0x0e9e, 0x0e9e, 0x0e9e, 0x0ea3, 0x0ea7, 0x0ead, - 0x0eb2, 0x0eb7, 0x0eba, 0x0ec1, 0x0ec1, 0x0ecd, 0x0ed4, 0x0ed4, - 0x0edc, 0x0ee7, 0x0ef0, 0x0ef0, 0x0ef6, 0x0ef6, 0x0eff, 0x0eff, - 0x0f06, 0x0f0c, 0x0f13, 0x0f1a, 0x0f35, 0x0f3b, 0x0f45, 0x0f4c, - 0x0f5f, 0x0f62, 0x0f62, 0x0f62, 0x0f62, 0x0f62, 0x0f69, 0x0f69, - 0x0f6e, 0x0f74, 0x0f7b, 0x0f80, 0x0f85, 0x0f8d, 0x0f98, 0x0fa0, - // Entry 240 - 27F - 0x0fa0, 0x0fa4, 0x0fa7, 0x0fae, 0x0fb5, 0x0fba, 0x0fba, 0x0fc4, - 0x0fcd, 0x0fdc, 0x0fdc, 0x0fe2, 0x0ffe, 0x1002, 0x101c, 0x1020, - 0x1038, 0x1038, 0x1038, 0x1054, 0x1054, 0x1054, 0x1054, 0x1054, - 0x1054, 0x1054, 0x1054, 0x1054, 0x1054, 0x1054, 0x1061, 0x106a, - 0x106a, 0x106a, 0x106a, 0x1078, 0x108c, 0x108c, 0x10a3, -} // Size: 1254 bytes - -const ruLangStr string = "" + // Size: 9488 bytes - "афарскийабхазскийавестийскийафрикаансаканамхарскийарагонскийарабскийасса" + - "мскийаварскийаймараазербайджанскийбашкирскийбелорусскийболгарскийбислам" + - "абамбарабенгальскийтибетскийбретонскийбоснийскийкаталанскийчеченскийчам" + - "оррокорсиканскийкричешскийцерковнославянскийчувашскийваллийскийдатскийн" + - "емецкиймальдивскийдзонг-кээвегреческийанглийскийэсперантоиспанскийэстон" + - "скийбаскскийперсидскийфулахфинскийфиджифарерскийфранцузскийзападнофризс" + - "кийирландскийгэльскийгалисийскийгуаранигуджаратимэнскийхаусаивритхиндих" + - "иримотухорватскийгаитянскийвенгерскийармянскийгерероинтерлингваиндонези" + - "йскийинтерлингвеигбоносуинупиакидоисландскийитальянскийинуктитутяпонски" + - "йяванскийгрузинскийконгокикуйюкунамаказахскийгренландскийкхмерскийканна" + - "дакорейскийканурикашмирикурдскийкомикорнскийкиргизскийлатинскийлюксембу" + - "ргскийгандалимбургскийлингалалаосскийлитовскийлуба-катангалатышскиймала" + - "гасийскиймаршалльскиймаоримакедонскиймалаяламмонгольскиймаратхималайски" + - "ймальтийскийбирманскийнаурусеверный ндебеленепальскийндонганидерландски" + - "йнюнорскнорвежский букмолюжный ндебеленавахоньянджаокситанскийоджибваор" + - "омоорияосетинскийпанджабипалипольскийпуштупортугальскийкечуароманшскийр" + - "ундирумынскийрусскийкиньяруандасанскритсардинскийсиндхисеверносаамскийс" + - "ангосингальскийсловацкийсловенскийсамоанскийшонасомалиалбанскийсербский" + - "свазиюжный сотосунданскийшведскийсуахилитамильскийтелугутаджикскийтайск" + - "ийтигриньятуркменскийтсванатонганскийтурецкийтсонгататарскийтаитянскийу" + - "йгурскийукраинскийурдуузбекскийвендавьетнамскийволапюкваллонскийволофко" + - "саидишйорубачжуанькитайскийзулуачехскийачолиадангмеадыгейскийафрихилиаг" + - "емайнскийаккадскийалеутскийюжноалтайскийстароанглийскийангикаарамейский" + - "мапучеарапахоаравакскийасуастурийскийавадхибелуджскийбалийскийбасабамум" + - "гомалабеджабембабенабафутзападный белуджскийбходжпурибикольскийбиникомс" + - "иксикабрауибодоакоосебурятскийбугийскийбулубилинмедумбакаддокарибкайюга" + - "атсамсебуанокигачибчачагатайскийчукотскиймарийскийчинук жаргончоктавски" + - "йчипевьянчерокишайенскийсораникоптскийкрымско-татарскийсейшельский крео" + - "льскийкашубскийдакотадаргинскийтаитаделаварскийслейвидогрибдинкаджермад" + - "огринижнелужицкийдуаласредненидерландскийдиола-фоньидиуладазаэмбуэфикдр" + - "евнеегипетскийэкаджукэламскийсреднеанглийскийэвондофангфилиппинскийфонк" + - "аджунский французскийсреднефранцузскийстарофранцузскийсеверный фризский" + - "восточный фризскийфриульскийгагагаузскийганьгайогбаягеэзгильбертскийсре" + - "дневерхненемецкийдревневерхненемецкийгондигоронталоготскийгребодревнегр" + - "еческийшвейцарский немецкийгусиигвичинхайдахаккагавайскийхилигайнонхетт" + - "скийхмонгверхнелужицкийсянхупаибанскийибибиоилокоингушскийложбаннгомбам" + - "ачамееврейско-персидскийеврейско-арабскийкаракалпакскийкабильскийкачинс" + - "кийкаджикамбакавикабардинскийканембутьяпмакондекабувердьянукорокхасихот" + - "анскийкойра чииникакокаленджинкимбундукоми-пермяцкийконканикосраенскийк" + - "пеллекарачаево-балкарскийкарельскийкурухшамбалабафиякёльнскийкумыкскийк" + - "утенаиладиноланголахндаламбалезгинскийлакотамонголуизианский креольский" + - "лозисевернолурскийлуба-лулуалуисеньолундалуолушейлухьямадурскиймафамага" + - "химайтхилимакассарскиймандингомасаимабамокшанскиймандарскиймендемерумав" + - "рикийский креольскийсреднеирландскиймакуа-мееттометамикмакминангкабаума" + - "ньчжурскийманипурскиймохаукмосимундангязыки разных семейкрикмирандскийм" + - "арваримиенеэрзянскиймазендеранскийминьнаньнеаполитанскийнаманижнегерман" + - "скийневарскийниасниуэквасионгиембундногайскийстаронорвежскийнкосеверный" + - " сотонуэрклассический невариньямвезиньянколеньоронзимаоседжистаротурецки" + - "йпангасинанпехлевийскийпампангапапьяментопалаунигерийско-креольскийстар" + - "оперсидскийфиникийскийпонапепрусскийстаропровансальскийкичераджастханир" + - "апануйскийраротонгаромбоцыганскийарумынскийруандасандавесахасамаритянск" + - "ий арамейскийсамбурусасакскийсанталингамбайскийсангусицилийскийшотландс" + - "кийюжнокурдскийсенекасенаселькупскийкойраборо сеннистароирландскийташел" + - "ьхитшанскийчадский арабскийсидамаюжносаамскийлуле-саамскийинари-саамски" + - "йколтта-саамскийсонинкесогдийскийсранан-тонгосерерсахосукумасусушумерск" + - "ийкоморскийклассический сирийскийсирийскийтемнетесотеренотетумтигретиви" + - "токелайскийклингонскийтлингиттамашектонгаток-писинтуройоседекскийцимшиа" + - "нтумбукатувалутасавактувинскийсреднеатласский тамазигхтскийудмуртскийуг" + - "аритскийумбундунеизвестный языкваиводскийвунджоваллисскийволамоварайваш" + - "овальбиривукалмыцкийсогаяояпянгбенйембакантонскийсапотекскийблиссимволи" + - "казенагскийтамазигхтскийзуньинет языкового материалазазаарабский литера" + - "турныйавстрийский немецкийлитературный швейцарский немецкийавстралийски" + - "й английскийканадский английскийбританский английскийамериканский англи" + - "йскийлатиноамериканский испанскийевропейский испанскиймексиканский испа" + - "нскийканадский французскийшвейцарский французскийнижнесаксонскийфламанд" + - "скийбразильский португальскийевропейский португальскиймолдавскийсербско" + - "хорватскийконголезский суахиликитайский, упрощенное письмокитайский, тр" + - "адиционное письмо" - -var ruLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0022, 0x0038, 0x004a, 0x0052, 0x0064, 0x0078, - 0x0088, 0x009a, 0x00aa, 0x00b6, 0x00d4, 0x00e8, 0x00fe, 0x0112, - 0x0120, 0x012e, 0x0144, 0x0156, 0x016a, 0x017e, 0x0194, 0x01a6, - 0x01b4, 0x01cc, 0x01d2, 0x01e0, 0x0204, 0x0216, 0x022a, 0x0238, - 0x0248, 0x025e, 0x026d, 0x0273, 0x0285, 0x0299, 0x02ab, 0x02bd, - 0x02cf, 0x02df, 0x02f3, 0x02fd, 0x030b, 0x0315, 0x0327, 0x033d, - 0x035b, 0x036f, 0x037f, 0x0395, 0x03a3, 0x03b5, 0x03c3, 0x03cd, - 0x03d7, 0x03e1, 0x03f1, 0x0405, 0x0419, 0x042d, 0x043f, 0x044b, - // Entry 40 - 7F - 0x0461, 0x047b, 0x0491, 0x0499, 0x04a1, 0x04af, 0x04b5, 0x04c9, - 0x04df, 0x04f1, 0x0501, 0x0511, 0x0525, 0x052f, 0x053b, 0x0547, - 0x0559, 0x0571, 0x0583, 0x0591, 0x05a3, 0x05af, 0x05bd, 0x05cd, - 0x05d5, 0x05e5, 0x05f9, 0x060b, 0x0627, 0x0631, 0x0647, 0x0655, - 0x0665, 0x0677, 0x068e, 0x06a0, 0x06ba, 0x06d2, 0x06dc, 0x06f2, - 0x0702, 0x0718, 0x0726, 0x0738, 0x074e, 0x0762, 0x076c, 0x078b, - 0x079f, 0x07ab, 0x07c5, 0x07d3, 0x07f4, 0x080d, 0x0819, 0x0827, - 0x083d, 0x084b, 0x0855, 0x085d, 0x0871, 0x0881, 0x0889, 0x0899, - // Entry 80 - BF - 0x08a3, 0x08bd, 0x08c7, 0x08db, 0x08e5, 0x08f7, 0x0905, 0x091b, - 0x092b, 0x093f, 0x094b, 0x0969, 0x0973, 0x0989, 0x099b, 0x09af, - 0x09c3, 0x09cb, 0x09d7, 0x09e9, 0x09f9, 0x0a03, 0x0a16, 0x0a2a, - 0x0a3a, 0x0a48, 0x0a5c, 0x0a68, 0x0a7c, 0x0a8a, 0x0a9a, 0x0ab0, - 0x0abc, 0x0ad0, 0x0ae0, 0x0aec, 0x0afe, 0x0b12, 0x0b24, 0x0b38, - 0x0b40, 0x0b52, 0x0b5c, 0x0b72, 0x0b80, 0x0b94, 0x0b9e, 0x0ba6, - 0x0bae, 0x0bba, 0x0bc6, 0x0bd8, 0x0be0, 0x0bf0, 0x0bfa, 0x0c08, - 0x0c1c, 0x0c1c, 0x0c2c, 0x0c34, 0x0c42, 0x0c54, 0x0c54, 0x0c66, - // Entry C0 - FF - 0x0c66, 0x0c80, 0x0c9e, 0x0caa, 0x0cbe, 0x0cca, 0x0cca, 0x0cd8, - 0x0cd8, 0x0cd8, 0x0cec, 0x0cec, 0x0cec, 0x0cf2, 0x0cf2, 0x0d08, - 0x0d08, 0x0d14, 0x0d28, 0x0d3a, 0x0d3a, 0x0d42, 0x0d4c, 0x0d4c, - 0x0d58, 0x0d62, 0x0d6c, 0x0d6c, 0x0d74, 0x0d7e, 0x0d7e, 0x0da3, - 0x0db5, 0x0dc9, 0x0dd1, 0x0dd1, 0x0dd7, 0x0de5, 0x0de5, 0x0de5, - 0x0def, 0x0def, 0x0df7, 0x0e03, 0x0e15, 0x0e27, 0x0e2f, 0x0e39, - 0x0e47, 0x0e51, 0x0e5b, 0x0e67, 0x0e71, 0x0e71, 0x0e7f, 0x0e87, - 0x0e91, 0x0ea7, 0x0eb9, 0x0ecb, 0x0ee2, 0x0ef6, 0x0f06, 0x0f12, - // Entry 100 - 13F - 0x0f24, 0x0f30, 0x0f40, 0x0f40, 0x0f61, 0x0f8c, 0x0f9e, 0x0faa, - 0x0fbe, 0x0fc8, 0x0fde, 0x0fea, 0x0ff6, 0x1000, 0x100c, 0x1016, - 0x1030, 0x1030, 0x103a, 0x1060, 0x1075, 0x107f, 0x1087, 0x108f, - 0x1097, 0x1097, 0x10b7, 0x10c5, 0x10d5, 0x10f5, 0x10f5, 0x1101, - 0x1101, 0x1109, 0x1121, 0x1121, 0x1127, 0x1152, 0x1174, 0x1194, - 0x1194, 0x11b5, 0x11d8, 0x11ec, 0x11f0, 0x1204, 0x120c, 0x1214, - 0x121c, 0x121c, 0x1224, 0x123c, 0x123c, 0x1264, 0x128c, 0x128c, - 0x1296, 0x12a8, 0x12b6, 0x12c0, 0x12de, 0x1305, 0x1305, 0x1305, - // Entry 140 - 17F - 0x130f, 0x131b, 0x1325, 0x132f, 0x1341, 0x1341, 0x1355, 0x1365, - 0x136f, 0x138b, 0x1391, 0x1399, 0x13a9, 0x13b5, 0x13bf, 0x13d1, - 0x13d1, 0x13d1, 0x13dd, 0x13e9, 0x13f5, 0x141a, 0x143b, 0x143b, - 0x1457, 0x146b, 0x147d, 0x1487, 0x1491, 0x1499, 0x14b1, 0x14bf, - 0x14c7, 0x14d5, 0x14ed, 0x14ed, 0x14f5, 0x14f5, 0x14ff, 0x1511, - 0x1526, 0x1526, 0x1526, 0x152e, 0x1540, 0x1550, 0x156b, 0x1579, - 0x158f, 0x159b, 0x15c2, 0x15c2, 0x15c2, 0x15d6, 0x15e0, 0x15ee, - 0x15f8, 0x160a, 0x161c, 0x162a, 0x1636, 0x1640, 0x164c, 0x1656, - // Entry 180 - 1BF - 0x166a, 0x166a, 0x166a, 0x166a, 0x1676, 0x1676, 0x1680, 0x16ab, - 0x16b3, 0x16cf, 0x16cf, 0x16e2, 0x16f2, 0x16fc, 0x1702, 0x170c, - 0x1716, 0x1716, 0x1716, 0x1728, 0x1730, 0x173c, 0x174c, 0x1764, - 0x1774, 0x177e, 0x1786, 0x179a, 0x17ae, 0x17b8, 0x17c0, 0x17ed, - 0x180d, 0x1824, 0x182c, 0x1838, 0x184e, 0x1866, 0x187c, 0x1888, - 0x1890, 0x1890, 0x189e, 0x18c0, 0x18c8, 0x18dc, 0x18ea, 0x18ea, - 0x18f4, 0x1906, 0x1922, 0x1932, 0x194e, 0x1956, 0x1974, 0x1986, - 0x198e, 0x1996, 0x1996, 0x19a2, 0x19b4, 0x19c6, 0x19e4, 0x19e4, - // Entry 1C0 - 1FF - 0x19ea, 0x1a03, 0x1a0b, 0x1a30, 0x1a40, 0x1a50, 0x1a5a, 0x1a64, - 0x1a70, 0x1a8a, 0x1a9e, 0x1ab6, 0x1ac6, 0x1ada, 0x1ae4, 0x1ae4, - 0x1b0d, 0x1b0d, 0x1b0d, 0x1b2b, 0x1b2b, 0x1b41, 0x1b41, 0x1b41, - 0x1b4d, 0x1b5d, 0x1b83, 0x1b8b, 0x1b8b, 0x1ba1, 0x1bb7, 0x1bc9, - 0x1bc9, 0x1bc9, 0x1bd3, 0x1be5, 0x1be5, 0x1be5, 0x1be5, 0x1bf9, - 0x1c05, 0x1c13, 0x1c1b, 0x1c4a, 0x1c58, 0x1c6a, 0x1c78, 0x1c78, - 0x1c8e, 0x1c98, 0x1cae, 0x1cc4, 0x1cc4, 0x1cdc, 0x1ce8, 0x1cf0, - 0x1cf0, 0x1d06, 0x1d23, 0x1d41, 0x1d41, 0x1d53, 0x1d61, 0x1d80, - // Entry 200 - 23F - 0x1d8c, 0x1d8c, 0x1d8c, 0x1da4, 0x1dbd, 0x1dd8, 0x1df5, 0x1e03, - 0x1e17, 0x1e2e, 0x1e38, 0x1e40, 0x1e40, 0x1e4c, 0x1e54, 0x1e66, - 0x1e78, 0x1ea3, 0x1eb5, 0x1eb5, 0x1eb5, 0x1ebf, 0x1ec7, 0x1ed3, - 0x1edd, 0x1ee7, 0x1eef, 0x1f05, 0x1f05, 0x1f1b, 0x1f29, 0x1f29, - 0x1f37, 0x1f41, 0x1f52, 0x1f5e, 0x1f70, 0x1f70, 0x1f7e, 0x1f7e, - 0x1f8c, 0x1f98, 0x1fa6, 0x1fb8, 0x1ff1, 0x2005, 0x2019, 0x2027, - 0x2046, 0x204c, 0x204c, 0x204c, 0x204c, 0x204c, 0x205a, 0x205a, - 0x2066, 0x207a, 0x2086, 0x2090, 0x2098, 0x20a8, 0x20ac, 0x20be, - // Entry 240 - 27F - 0x20be, 0x20c6, 0x20ca, 0x20ce, 0x20da, 0x20e4, 0x20e4, 0x20f8, - 0x210e, 0x2128, 0x2128, 0x213a, 0x2154, 0x215e, 0x218a, 0x2192, - 0x21bb, 0x21bb, 0x21e2, 0x2222, 0x2251, 0x2278, 0x22a1, 0x22ce, - 0x2305, 0x232e, 0x2359, 0x2359, 0x2382, 0x23af, 0x23cd, 0x23e3, - 0x2414, 0x2445, 0x2459, 0x247b, 0x24a2, 0x24d7, 0x2510, -} // Size: 1254 bytes - -const siLangStr string = "" + // Size: 9500 bytes - "අෆාර්ඇබ්කාසියානුඅෆ්රිකාන්ස්අකාන්ඇම්හාරික්ඇරගොනීස්අරාබිඇසෑම්ඇවරික්අයිමරාඅ" + - "සර්බයිජාන්බාෂ්කිර්බෙලරුසියානුබල්ගේරියානුබිස්ලමාබම්බරාබෙංගාලිටිබෙට්බ්" + - "\u200dරේටොන්බොස්නියානුකැටලන්චෙච්නියානුචමොරොකෝසිකානුචෙක්චර්ච් ස්ලැවික්චවේ" + - "ෂ්වෙල්ෂ්ඩැනිශ්ජර්මන්ඩිවෙහිඩිසොන්කාඉව්ග්\u200dරීකඉංග්\u200dරීසිඑස්පැරන්" + - "ටෝස්පාඤ්ඤඑස්තෝනියානුබාස්ක්පර්සියානුෆුලාහ්ෆින්ලන්තෆීජිෆාරෝස්ප්\u200dරංශ" + - "බටහිර ෆ්\u200dරිසියානුඅයර්ලන්තස්කොට්ටිශ් ගෙලික්ගැලීසියානුගුවාරනිගුජරාට" + - "ිමැන්ක්ස්හෝසාහීබෲහින්දිකෝඒෂියානුහයිටිහන්ගේරියානුආර්මේනියානුහෙරෙරොඉන්ටල" + - "ින්ගුආඉන්දුනීසියානුඉග්බෝසිචුආන් යීඉඩොඅයිස්ලන්තඉතාලිඉනුක්ටිටුට්ජපන්ජාවා" + - "ජෝර්ජියානුකිකුයුකුයන්යමාකසාඛ්කලාලිසට්කමර්කණ්ණඩකොරියානුකනුරිකාෂ්මීර්කුර" + - "්දිකොමිකෝනීසියානුකිර්ගිස්ලතින්ලක්සැම්බර්ග්ගන්ඩාලිම්බර්ගිශ්ලින්ගලාලාඕලි" + - "තුවේනියානුලුබා-කටන්ගාලැට්වියානුමලගාසිමාශලීස්මාවොරිමැසිඩෝනියානුමලයාලම්ම" + - "ොංගෝලියානුමරාතිමැලේමොල්ටිස්බුරුමනෞරුඋතුරු එන්ඩිබෙලෙනේපාලන්ඩොන්ගාලන්දේස" + - "ිනෝර්වීජියානු නයිනෝර්ස්ක්නෝර්වීජියානු බොක්මල්සෞත් ඩ්බේල්නවාජොන්යන්ජාඔස" + - "ිටාන්ඔරොමෝඔරියාඔසිටෙක්පන්ජාබිපෝලන්තපෂ්ටොපෘතුගීසික්වීචුවාරොමෑන්ශ්රුන්ඩි" + - "රොමේනියානුරුසියානුකින්යර්වන්ඩාසංස්කෘතසාර්ඩිනිඅන්සින්ධිඋතුරු සාමිසන්ග්" + - "\u200dරෝසිංහලස්ලෝවැක්ස්ලෝවේනියානුසෑමොඅන්ශෝනාසෝමාලිඇල්බේනියානුසර්බියානුස්" + - "වතිසතර්න් සොතොසන්ඩනීසියානුස්වීඩන්ස්වාහිලිදෙමළතෙළිඟුටජික්තායිටිග්\u200d" + - "රින්යාටර්ක්මෙන්ස්වනාටොංගාතුර්කිසොන්ගටාටර්ටහිටියන්උයිගර්යුක්රේනියානුඋර්" + - "දුඋස්බෙක්වෙන්ඩාවියට්නාම්වොලපූක්වෑලූන්වොලොෆ්ශෝසායිඩිශ්යොරූබාචීනසුලුඅචයි" + - "නිස්අඩන්ග්මෙඅඩිඝෙටියුනිසියනු අරාබිඇගම්අයිනුඇලුඑට්සතර්න් අල්ටය්අන්ගිකමප" + - "ුචෙඇරපහොඅසුඇස්ටියුරියන්අවදිබැලිනීස්බසාබෙම්බාබෙනාබටහිර බලොචිබොජ්පුරිබින" + - "ිසික්සිකාබොඩොබුගිනීස්බ්ලින්සෙබුඅනොචිගාචූකීස්මරිචොක්ටොව්චෙරොකීචෙයෙන්නෙස" + - "ොරානි කුර්දිෂ්සෙසෙල්ව ක්\u200dරොල් ෆ්\u200dරෙන්ච්ඩකොටාඩාර්ග්වාටයිටාඩොග" + - "්\u200dරිබ්සර්මාපහළ සෝබියානුඩුආලාජොල-ෆෝනියිඩසාගාඑම්බුඑෆික්එකජුක්එවොන්ඩ" + - "ොපිලිපීනෆොන්ෆ්\u200dරියුලියන්ගාගගාස්ගැන් චයිනිස්ගීස්ගිල්බර්ටීස්ගොරොන්ට" + - "ාලොස්විස් ජර්මානුගුසීග්විචින්හකා චයිනිස්හවායිහිලිගෙනන්මොන්ග්ඉහළ සෝබියා" + - "නුසියැන් චීනහුපාඉබන්ඉබිබියොඉලොකොඉන්ගුෂ්ලොජ්බන්නොම්බාමැකාමීකාබිල්කචින්ජ" + - "්ජුකැම්බාකබාර්ඩියන්ට්යප්මැකොන්ඩ්කබුවෙර්ඩියානුකොරොඛසිකොයිරා චිනිකකොකලෙන" + - "්ජන්කිම්බුන්ඩුකොමි-පර්මියාක්කොන්කනික්පෙලෙකරන්චි-බාකර්කැරෙලියන්කුරුඛ්ශා" + - "ම්බලාබාෆියාකොලොග්නියන්කුමික්ලඩිනොලංගිලෙස්ගියන්ලකොටලොසිඋතුරු ලුරිලුබ-ලු" + - "ලුඅලුන්ඩලුඔමිසොලුයියාමදුරීස්මඝහිමයිතිලිමකාසාර්මසායිමොක්ශාමෙන්ඩෙමෙරුමොර" + - "ිස්යෙම්මඛුවා-මීටෝමෙටාමික්මැක්මිනන්ග්කබාවුමනිපුරිමොහොව්ක්මොස්සිමුන්ඩන්බ" + - "හු භාෂාක්\u200dරීක්මිරන්ඩීස්එර්ස්යාමැසන්ඩරනිමින් නන් චයිනිස්නියාපොලිටන" + - "්නාමාපහළ ජර්මන්නෙවාරිනියාස්නියුඑන්කුවාසිඔන්ගියාම්බූන්නොගායිඑන්‘කෝනොදර්" + - "න් සොතොනොයර්නයන්කෝලෙපන්ගසීනන්පන්පන්ගපපියමෙන්ටොපලවුවන්නෛජීරියන් පෙන්ගින" + - "්පෘශියන්කියිචේරපනුයිරරොටොන්ගන්රෝම්බෝඇරොමානියානුර්වාසන්ඩවෙසඛාසම්බුරුසෑන" + - "්ටලින්ගම්බෙසංගුසිසිලියන්ස්කොට්ස්දකුණු කුර්දිසෙනාකෝයිරාබොරො සෙන්නිටචේල්" + - "හිට්ශාන්දකුණු සාමිලුලේ සාමිඉනාරි සාමිස්කොල්ට් සාමිසොනින්කෙස්\u200dරන් " + - "ටොන්ගොසහොසුකුමාකොමොරියන්ස්\u200dරයෑක්ටිම්නෙටෙසෝටේටම්ටීග්\u200dරෙක්ලින්" + - "ගොන්ටොක් පිසින්ටරොකොටුම්බුකාටුවාලුටසවාක්ටුවිනියන්මධ්\u200dයම ඇට්ලස් ටම" + - "සිට්අඩ්මර්ට්උබුන්ඩුනොදන්නා භාෂාවවයිවුන්ජෝවොල්සර්වොලෙට්ටවොරෙය්වොපිරිවූ " + - "චයිනිස්කල්මික්සොගායන්ග්බෙන්යෙම්බාකැන්ටොනීස්සම්මත මොරොක්කෝ ටමසිග්ත්සුනි" + - "වාග් විද්\u200dයා අන්තර්ගතයක් නැතසාසානූතන සම්මත අරාබිඔස්ට්\u200dරියානු" + - " ජර්මන්ස්විස් උසස් ජර්මන්ඕස්ට්\u200dරේලියානු ඉංග්\u200dරීසිකැනේඩියානු ඉං" + - "ග්\u200dරීසිබ්\u200dරිතාන්\u200dය ඉංග්\u200dරීසිඇමෙරිකානු ඉංග්\u200dරී" + - "සිලතින් ඇමරිකානු ස්පාඤ්ඤයුරෝපීය ස්පාඤ්ඤමෙක්සිකානු ස්පාඤ්ඤකැනේඩියානු ප්" + - "\u200dරංශස්විස් ප්\u200dරංශපහළ සැක්සන්ෆ්ලෙමිශ්බ්\u200dරසීල පෘතුගීසියුරෝප" + - "ීය පෘතුගීසිමොල්ඩවිආනුකොංගෝ ස්වාහිලිසරල චීනසාම්ප්\u200dරදායික චීන" - -var siLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0030, 0x0030, 0x0051, 0x0060, 0x007b, 0x0093, - 0x00a2, 0x00b1, 0x00c3, 0x00d5, 0x00f6, 0x010e, 0x012f, 0x0150, - 0x0165, 0x0177, 0x018c, 0x019e, 0x01b9, 0x01d7, 0x01e9, 0x0207, - 0x0216, 0x022e, 0x022e, 0x023a, 0x0262, 0x0271, 0x0283, 0x0295, - 0x02a7, 0x02b9, 0x02d1, 0x02da, 0x02ec, 0x0307, 0x0325, 0x033a, - 0x035b, 0x036d, 0x0388, 0x039a, 0x03b2, 0x03be, 0x03d0, 0x03e2, - 0x0413, 0x042b, 0x045c, 0x047a, 0x048f, 0x04a4, 0x04bc, 0x04c8, - 0x04d4, 0x04e6, 0x04e6, 0x0501, 0x0510, 0x0531, 0x0552, 0x0564, - // Entry 40 - 7F - 0x0585, 0x05ac, 0x05ac, 0x05bb, 0x05d7, 0x05d7, 0x05e0, 0x05fb, - 0x060a, 0x062b, 0x0637, 0x0643, 0x0661, 0x0661, 0x0673, 0x068b, - 0x069a, 0x06b2, 0x06be, 0x06cd, 0x06e5, 0x06f4, 0x070c, 0x071e, - 0x072a, 0x0748, 0x0760, 0x076f, 0x0793, 0x07a2, 0x07c3, 0x07d8, - 0x07e1, 0x0805, 0x0824, 0x0842, 0x0854, 0x0869, 0x087b, 0x089f, - 0x08b4, 0x08d5, 0x08e4, 0x08f0, 0x0908, 0x0917, 0x0923, 0x094e, - 0x095d, 0x0975, 0x098a, 0x09d0, 0x0a0a, 0x0a29, 0x0a38, 0x0a4d, - 0x0a62, 0x0a62, 0x0a71, 0x0a80, 0x0a95, 0x0aaa, 0x0aaa, 0x0abc, - // Entry 80 - BF - 0x0acb, 0x0ae3, 0x0afb, 0x0b13, 0x0b25, 0x0b43, 0x0b5b, 0x0b7f, - 0x0b94, 0x0bb5, 0x0bc7, 0x0be3, 0x0bfb, 0x0c0a, 0x0c22, 0x0c46, - 0x0c5b, 0x0c67, 0x0c79, 0x0c9a, 0x0cb5, 0x0cc4, 0x0ce3, 0x0d07, - 0x0d1c, 0x0d34, 0x0d40, 0x0d52, 0x0d61, 0x0d6d, 0x0d8e, 0x0da9, - 0x0db8, 0x0dc7, 0x0dd9, 0x0de8, 0x0df7, 0x0e0f, 0x0e21, 0x0e45, - 0x0e54, 0x0e69, 0x0e7b, 0x0e96, 0x0eab, 0x0ebd, 0x0ecf, 0x0edb, - 0x0eed, 0x0eff, 0x0eff, 0x0f08, 0x0f14, 0x0f2c, 0x0f2c, 0x0f44, - 0x0f53, 0x0f84, 0x0f84, 0x0f90, 0x0f9f, 0x0f9f, 0x0f9f, 0x0fb1, - // Entry C0 - FF - 0x0fb1, 0x0fd6, 0x0fd6, 0x0fe8, 0x0fe8, 0x0ff7, 0x0ff7, 0x1006, - 0x1006, 0x1006, 0x1006, 0x1006, 0x1006, 0x100f, 0x100f, 0x1033, - 0x1033, 0x103f, 0x103f, 0x1057, 0x1057, 0x1060, 0x1060, 0x1060, - 0x1060, 0x1060, 0x1072, 0x1072, 0x107e, 0x107e, 0x107e, 0x109d, - 0x10b5, 0x10b5, 0x10c1, 0x10c1, 0x10c1, 0x10d9, 0x10d9, 0x10d9, - 0x10d9, 0x10d9, 0x10e5, 0x10e5, 0x10e5, 0x10fd, 0x10fd, 0x110f, - 0x110f, 0x110f, 0x110f, 0x110f, 0x110f, 0x110f, 0x1124, 0x1130, - 0x1130, 0x1130, 0x1142, 0x114b, 0x114b, 0x1163, 0x1163, 0x1175, - // Entry 100 - 13F - 0x118d, 0x11b8, 0x11b8, 0x11b8, 0x11b8, 0x11ff, 0x11ff, 0x120e, - 0x1226, 0x1235, 0x1235, 0x1235, 0x1250, 0x1250, 0x125f, 0x125f, - 0x1281, 0x1281, 0x1290, 0x1290, 0x12ac, 0x12ac, 0x12bb, 0x12ca, - 0x12d9, 0x12d9, 0x12d9, 0x12eb, 0x12eb, 0x12eb, 0x12eb, 0x1300, - 0x1300, 0x1300, 0x1315, 0x1315, 0x1321, 0x1321, 0x1321, 0x1321, - 0x1321, 0x1321, 0x1321, 0x1345, 0x134b, 0x135a, 0x137c, 0x137c, - 0x137c, 0x137c, 0x1388, 0x13a9, 0x13a9, 0x13a9, 0x13a9, 0x13a9, - 0x13a9, 0x13c7, 0x13c7, 0x13c7, 0x13c7, 0x13ef, 0x13ef, 0x13ef, - // Entry 140 - 17F - 0x13fb, 0x1413, 0x1413, 0x1432, 0x1441, 0x1441, 0x145c, 0x145c, - 0x146e, 0x1490, 0x14ac, 0x14b8, 0x14c4, 0x14d9, 0x14e8, 0x14fd, - 0x14fd, 0x14fd, 0x1512, 0x1524, 0x1536, 0x1536, 0x1536, 0x1536, - 0x1536, 0x1548, 0x1557, 0x1563, 0x1575, 0x1575, 0x1593, 0x1593, - 0x15a2, 0x15ba, 0x15e1, 0x15e1, 0x15ed, 0x15ed, 0x15f6, 0x15f6, - 0x1615, 0x1615, 0x1615, 0x161e, 0x1636, 0x1654, 0x167c, 0x1691, - 0x1691, 0x16a3, 0x16c5, 0x16c5, 0x16c5, 0x16e0, 0x16f2, 0x1707, - 0x1719, 0x173a, 0x174c, 0x174c, 0x175b, 0x1767, 0x1767, 0x1767, - // Entry 180 - 1BF - 0x1782, 0x1782, 0x1782, 0x1782, 0x178e, 0x178e, 0x178e, 0x178e, - 0x179a, 0x17b6, 0x17b6, 0x17cf, 0x17cf, 0x17de, 0x17e7, 0x17f3, - 0x1805, 0x1805, 0x1805, 0x181a, 0x181a, 0x1826, 0x183b, 0x1850, - 0x1850, 0x185f, 0x185f, 0x1871, 0x1871, 0x1883, 0x188f, 0x18ad, - 0x18ad, 0x18c9, 0x18d5, 0x18ed, 0x1911, 0x1911, 0x1926, 0x193e, - 0x1950, 0x1950, 0x1965, 0x197b, 0x1990, 0x19ab, 0x19ab, 0x19ab, - 0x19ab, 0x19c0, 0x19db, 0x1a07, 0x1a28, 0x1a34, 0x1a50, 0x1a62, - 0x1a74, 0x1a89, 0x1a89, 0x1a9e, 0x1ac2, 0x1ad4, 0x1ad4, 0x1ad4, - // Entry 1C0 - 1FF - 0x1ae6, 0x1b08, 0x1b17, 0x1b17, 0x1b17, 0x1b2f, 0x1b2f, 0x1b2f, - 0x1b2f, 0x1b2f, 0x1b4a, 0x1b4a, 0x1b5f, 0x1b7d, 0x1b92, 0x1b92, - 0x1bc6, 0x1bc6, 0x1bc6, 0x1bc6, 0x1bc6, 0x1bc6, 0x1bc6, 0x1bc6, - 0x1bc6, 0x1bdb, 0x1bdb, 0x1bed, 0x1bed, 0x1bed, 0x1bff, 0x1c1d, - 0x1c1d, 0x1c1d, 0x1c2f, 0x1c2f, 0x1c2f, 0x1c2f, 0x1c2f, 0x1c50, - 0x1c5c, 0x1c6e, 0x1c77, 0x1c77, 0x1c8c, 0x1c8c, 0x1ca1, 0x1ca1, - 0x1cb6, 0x1cc2, 0x1cdd, 0x1cf5, 0x1cf5, 0x1d17, 0x1d17, 0x1d23, - 0x1d23, 0x1d23, 0x1d54, 0x1d54, 0x1d54, 0x1d6f, 0x1d7b, 0x1d7b, - // Entry 200 - 23F - 0x1d7b, 0x1d7b, 0x1d7b, 0x1d97, 0x1db0, 0x1dcc, 0x1df1, 0x1e09, - 0x1e09, 0x1e2e, 0x1e2e, 0x1e37, 0x1e37, 0x1e49, 0x1e49, 0x1e49, - 0x1e64, 0x1e64, 0x1e7c, 0x1e7c, 0x1e7c, 0x1e8e, 0x1e9a, 0x1e9a, - 0x1ea9, 0x1ebe, 0x1ebe, 0x1ebe, 0x1ebe, 0x1edc, 0x1edc, 0x1edc, - 0x1edc, 0x1edc, 0x1efb, 0x1efb, 0x1f0a, 0x1f0a, 0x1f0a, 0x1f0a, - 0x1f22, 0x1f34, 0x1f46, 0x1f61, 0x1f99, 0x1fb1, 0x1fb1, 0x1fc6, - 0x1feb, 0x1ff4, 0x1ff4, 0x1ff4, 0x1ff4, 0x1ff4, 0x1ff4, 0x1ff4, - 0x2006, 0x201b, 0x2030, 0x2042, 0x2042, 0x2054, 0x2070, 0x2085, - // Entry 240 - 27F - 0x2085, 0x2091, 0x2091, 0x2091, 0x20ac, 0x20be, 0x20be, 0x20dc, - 0x20dc, 0x20dc, 0x20dc, 0x20dc, 0x211d, 0x2129, 0x2177, 0x2183, - 0x21af, 0x21af, 0x21e6, 0x2218, 0x225e, 0x2298, 0x22d5, 0x230c, - 0x234a, 0x2375, 0x23a9, 0x23a9, 0x23da, 0x23ff, 0x241e, 0x2436, - 0x2464, 0x2492, 0x24b0, 0x24b0, 0x24d8, 0x24eb, 0x251c, -} // Size: 1254 bytes - -const skLangStr string = "" + // Size: 5832 bytes - "afarčinaabcházčinaavestčinaafrikánčinaakančinaamharčinaaragónčinaarabčin" + - "aásamčinaavarčinaaymarčinaazerbajdžančinabaškirčinabieloruštinabulharčin" + - "abislamabambarčinabengálčinatibetčinabretónčinabosniačtinakatalánčinačeč" + - "enčinačamorčinakorzičtinakríčeštinacirkevná slovančinačuvaštinawaleština" + - "dánčinanemčinamaldivčinadzongkhaeweštinagréčtinaangličtinaesperantošpani" + - "elčinaestónčinabaskičtinaperzštinafulbčinafínčinafidžijčinafaerčinafranc" + - "úzštinazápadná frízštinaírčinaškótska gaelčinagalícijčinaguaraníjčinagu" + - "džarátčinamančinahauštinahebrejčinahindčinahiri motuchorvátčinahaitská k" + - "reolčinamaďarčinaarménčinahererointerlinguaindonézštinainterlingueigbošt" + - "inas’čchuanská iovčinainupikidoislandčinataliančinainuktitutjapončinajáv" + - "činagruzínčinakongčinakikujčinakuaňamakazaštinagrónčinakhmérčinakannadč" + - "inakórejčinakanurijčinakašmírčinakurdčinakomijčinakornčinakirgizštinalat" + - "inčinaluxemburčinagandčinalimburčinalingalčinalaoštinalitovčinalubčina (" + - "katanžská)lotyštinamalgaštinamarshallčinamaorijčinamacedónčinamalajálamč" + - "inamongolčinamaráthčinamalajčinamaltčinabarmčinanauruštinaseverná ndebel" + - "činanepálčinandongaholandčinanórčina (nynorsk)nórčina (bokmal)južná nde" + - "belčinanavahoňandžaokcitánčinaodžibvaoromčinauríjčinaosetčinapandžábčina" + - "pálípoľštinapaštčinaportugalčinakečuánčinarétorománčinarundčinarumunčina" + - "ruštinarwandčinasanskritsardínčinasindhčinaseverná saamčinasangosinhalči" + - "naslovenčinaslovinčinasamojčinašončinasomálčinaalbánčinasrbčinasvazijčin" + - "ajužná sothčinasundčinašvédčinaswahilčinatamilčinatelugčinatadžičtinatha" + - "jčinatigriňaturkménčinatswančinatongčinaturečtinatsongčinatatárčinatahit" + - "činaujgurčinaukrajinčinaurdčinauzbečtinavendčinavietnamčinavolapükvalón" + - "činawolofčinaxhoštinajidišjorubčinačuangčinačínštinazuluštinaacehčinaač" + - "oliadangmeadygejčinaafrihiliaghemainčinaakkadčinaaleutčinajužná altajčin" + - "astará angličtinaangikaaramejčinamapudungunarapažštinaarawačtinaasuastúr" + - "činaawadhibalúčtinabalijčinabasabamunghomalabedžabembabenabafutzápadná " + - "balúčtinabhódžpurčinabikolčinabinikomsiksikabradžčinabodoakooseburiatčin" + - "abugištinabulublinmedumbakaddokaribčinakajugčinaatsamcebuánčinakigačibča" + - "čagatajčinachuukmarijčinačinucký žargónčoktčinačipevajčinačerokíčejenči" + - "nakurdčina (sorání)koptčinakrymská tatárčinaseychelská kreolčinakašubčin" + - "adakotčinadarginčinataitadelawarčinaslavédogribčinadinkčinazarmadógrídol" + - "nolužická srbčinadualastredná holandčinajola-fonyiďuladazagaembuefikstar" + - "oegyptčinaekadžukelamčinastredná angličtinaewondofangčinafilipínčinafonč" + - "inafrancúzština (Cajun)stredná francúzštinastará francúzštinaseverná frí" + - "zštinavýchodofrízštinafriulčinagagagauzštinagayogbajaetiópčinakiribatčin" + - "astredná horná nemčinastará horná nemčinagóndčinagorontalogótčinagrebost" + - "arogréčtinanemčina (švajčiarska)gusiikučinčinahaidahavajčinahiligajnonči" + - "nachetitčinahmongčinahornolužická srbčinahupčinaibančinaibibioilokánčina" + - "inguštinalojbanngombamašamežidovská perzštinažidovská arabčinakarakalpač" + - "tinakabylčinakačjinčinajjukambakawikabardčinakanembutyapmakondekapverdči" + - "nakorokhasijčinachotančinazápadná songhajčinakakokalendžinkimbundukomi-p" + - "ermiačtinakonkánčinakusaiekpellekaračajevsko-balkarčinakarelčinakuruchči" + - "našambalabafiakolínčinakumyčtinakutenajčinažidovská španielčinalangilaha" + - "ndčinalambalezginčinalakotčinamongokreolčina (Louisiana)loziseverné luri" + - "lubčina (luluánska)luiseňolundaluomizorámčinaluhjamadurčinamafamagadhčin" + - "amaithilčinamakasarčinamandingomasajčinamabamokšiančinamandarčinamendejč" + - "inamerumaurícijská kreolčinastredná írčinamakua-meettometa’mikmakčinamin" + - "angkabaučinamandžuštinamanípurčinamohawkčinamossimundangviaceré jazykykr" + - "íkčinamirandčinamarwarimyeneerzjančinamázandaránčinaneapolčinanamadolná" + - " nemčinanevárčinaniasánčinaniueštinakwasiongiemboonnogajčinastará nórčin" + - "an’koseverná sothčinanuerklasická nevárčinaňamweziňankoleňoronzimaosedžš" + - "tinaosmanská turečtinapangasinančinapahlavíkapampangančinapapiamentopala" + - "učinanigerijský pidžinstará perzštinafeničtinapohnpeištinapruštinastará " + - "okcitánčinaquichéradžastančinarapanujčinararotongská maorijčinaromborómč" + - "inaarumunčinarwasandaweštinajakutčinasamaritánska aramejčinasamburusasač" + - "tinasantalčinangambaysangusicílčinaškótčinajužná kurdčinasenekčinasenase" + - "lkupčinakoyraboro sennistará írčinatachelhitšančinačadská arabčinasidamo" + - "južná saamčinalulská saamčinainarijská saamčinaskoltská saamčinasoninkes" + - "ogdijčinasurinamčinasererčinasahosukumasususumerčinakomorčinasýrčina (kl" + - "asická)sýrčinatemnetesoterênatetumčinatigrejčinativtokelauštinaklingónči" + - "natlingitčinatuaregčinaňasa tonganovoguinejský pidžintarokocimšjančinatu" + - "mbukatuvalčinatasawaqtuviančinastredomarocká tuaregčinaudmurtčinaugaritč" + - "inaumbunduneznámy jazykvaivodčinavunjowalserčinawalamčinawaraywashowarlp" + - "irikalmyčtinasogajaojapčinajangbenyembakantončinazapotéčtinasystém Bliss" + - "zenagatuaregčina (štandardná marocká)zuništinabez jazykového obsahuzazaa" + - "rabčina (moderná štandardná)nemčina (rakúska)nemčina (švajčiarska spisov" + - "ná)angličtina (austrálska)angličtina (kanadská)angličtina (britská)angli" + - "čtina (americká)španielčina (latinskoamerická)španielčina (európska)špa" + - "nielčina (mexická)francúzština (kanadská)francúzština (švajčiarska)dolná" + - " saštinaflámčinaportugalčina (brazílska)portugalčina (európska)moldavčin" + - "asrbochorvátčinasvahilčina (konžská)čínština (zjednodušená)čínština (tra" + - "dičná)" - -var skLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0015, 0x001f, 0x002c, 0x0035, 0x003f, 0x004b, - 0x0054, 0x005e, 0x0067, 0x0071, 0x0082, 0x008e, 0x009b, 0x00a6, - 0x00ad, 0x00b8, 0x00c4, 0x00ce, 0x00da, 0x00e6, 0x00f3, 0x00ff, - 0x010a, 0x0115, 0x0119, 0x0122, 0x0137, 0x0142, 0x014c, 0x0155, - 0x015d, 0x0168, 0x0170, 0x0179, 0x0183, 0x018e, 0x0197, 0x01a4, - 0x01af, 0x01ba, 0x01c4, 0x01cd, 0x01d6, 0x01e2, 0x01eb, 0x01f9, - 0x020e, 0x0216, 0x0229, 0x0236, 0x0244, 0x0253, 0x025b, 0x0264, - 0x026f, 0x0278, 0x0281, 0x028e, 0x02a1, 0x02ac, 0x02b7, 0x02bd, - // Entry 40 - 7F - 0x02c8, 0x02d6, 0x02e1, 0x02eb, 0x0303, 0x0309, 0x030c, 0x0317, - 0x0322, 0x032b, 0x0335, 0x033e, 0x034a, 0x0353, 0x035d, 0x0365, - 0x036f, 0x0379, 0x0384, 0x038f, 0x039a, 0x03a6, 0x03b3, 0x03bc, - 0x03c6, 0x03cf, 0x03db, 0x03e5, 0x03f2, 0x03fb, 0x0406, 0x0411, - 0x041a, 0x0424, 0x043a, 0x0444, 0x044f, 0x045c, 0x0467, 0x0474, - 0x0483, 0x048e, 0x049a, 0x04a4, 0x04ad, 0x04b6, 0x04c1, 0x04d5, - 0x04e0, 0x04e6, 0x04f1, 0x0504, 0x0516, 0x0529, 0x052f, 0x0537, - 0x0544, 0x054c, 0x0555, 0x055f, 0x0568, 0x0576, 0x057c, 0x0586, - // Entry 80 - BF - 0x0590, 0x059d, 0x05aa, 0x05ba, 0x05c3, 0x05cd, 0x05d5, 0x05df, - 0x05e7, 0x05f3, 0x05fd, 0x060f, 0x0614, 0x061f, 0x062a, 0x0635, - 0x063f, 0x0648, 0x0653, 0x065e, 0x0666, 0x0671, 0x0682, 0x068b, - 0x0696, 0x06a1, 0x06ab, 0x06b5, 0x06c1, 0x06ca, 0x06d2, 0x06df, - 0x06e9, 0x06f2, 0x06fc, 0x0706, 0x0711, 0x071b, 0x0725, 0x0731, - 0x0739, 0x0743, 0x074c, 0x0758, 0x0760, 0x076b, 0x0775, 0x077e, - 0x0784, 0x078e, 0x0799, 0x07a4, 0x07ae, 0x07b7, 0x07bd, 0x07c4, - 0x07cf, 0x07cf, 0x07d7, 0x07dc, 0x07e4, 0x07ee, 0x07ee, 0x07f8, - // Entry C0 - FF - 0x07f8, 0x080a, 0x081c, 0x0822, 0x082d, 0x0837, 0x0837, 0x0844, - 0x0844, 0x0844, 0x084f, 0x084f, 0x084f, 0x0852, 0x0852, 0x085d, - 0x085d, 0x0863, 0x086e, 0x0878, 0x0878, 0x087c, 0x0881, 0x0881, - 0x0888, 0x088e, 0x0893, 0x0893, 0x0897, 0x089c, 0x089c, 0x08b1, - 0x08c0, 0x08ca, 0x08ce, 0x08ce, 0x08d1, 0x08d8, 0x08d8, 0x08d8, - 0x08e3, 0x08e3, 0x08e7, 0x08ed, 0x08f8, 0x0902, 0x0906, 0x090a, - 0x0911, 0x0916, 0x0920, 0x092a, 0x092f, 0x092f, 0x093b, 0x093f, - 0x0946, 0x0953, 0x0958, 0x0962, 0x0974, 0x097e, 0x098b, 0x0993, - // Entry 100 - 13F - 0x099e, 0x09b2, 0x09bb, 0x09bb, 0x09cf, 0x09e5, 0x09f0, 0x09fa, - 0x0a05, 0x0a0a, 0x0a16, 0x0a1c, 0x0a27, 0x0a30, 0x0a35, 0x0a3c, - 0x0a53, 0x0a53, 0x0a58, 0x0a6c, 0x0a76, 0x0a7b, 0x0a81, 0x0a85, - 0x0a89, 0x0a89, 0x0a98, 0x0aa0, 0x0aa9, 0x0abd, 0x0abd, 0x0ac3, - 0x0ac3, 0x0acc, 0x0ad9, 0x0ad9, 0x0ae1, 0x0af7, 0x0b0e, 0x0b23, - 0x0b23, 0x0b37, 0x0b4a, 0x0b54, 0x0b56, 0x0b62, 0x0b62, 0x0b66, - 0x0b6b, 0x0b6b, 0x0b76, 0x0b82, 0x0b82, 0x0b9a, 0x0bb0, 0x0bb0, - 0x0bba, 0x0bc3, 0x0bcc, 0x0bd1, 0x0be0, 0x0bf8, 0x0bf8, 0x0bf8, - // Entry 140 - 17F - 0x0bfd, 0x0c08, 0x0c0d, 0x0c0d, 0x0c17, 0x0c17, 0x0c26, 0x0c31, - 0x0c3b, 0x0c52, 0x0c52, 0x0c5a, 0x0c63, 0x0c69, 0x0c75, 0x0c7f, - 0x0c7f, 0x0c7f, 0x0c85, 0x0c8b, 0x0c92, 0x0ca7, 0x0cbb, 0x0cbb, - 0x0cca, 0x0cd4, 0x0ce0, 0x0ce3, 0x0ce8, 0x0cec, 0x0cf7, 0x0cfe, - 0x0d02, 0x0d09, 0x0d15, 0x0d15, 0x0d19, 0x0d19, 0x0d24, 0x0d2f, - 0x0d45, 0x0d45, 0x0d45, 0x0d49, 0x0d53, 0x0d5b, 0x0d6c, 0x0d78, - 0x0d7e, 0x0d84, 0x0d9d, 0x0d9d, 0x0d9d, 0x0da7, 0x0db2, 0x0dba, - 0x0dbf, 0x0dca, 0x0dd4, 0x0de0, 0x0df8, 0x0dfd, 0x0e08, 0x0e0d, - // Entry 180 - 1BF - 0x0e18, 0x0e18, 0x0e18, 0x0e18, 0x0e22, 0x0e22, 0x0e27, 0x0e3d, - 0x0e41, 0x0e4e, 0x0e4e, 0x0e63, 0x0e6b, 0x0e70, 0x0e73, 0x0e80, - 0x0e85, 0x0e85, 0x0e85, 0x0e8f, 0x0e93, 0x0e9e, 0x0eaa, 0x0eb6, - 0x0ebe, 0x0ec8, 0x0ecc, 0x0ed9, 0x0ee4, 0x0eef, 0x0ef3, 0x0f0b, - 0x0f1c, 0x0f28, 0x0f2f, 0x0f3a, 0x0f4a, 0x0f57, 0x0f64, 0x0f6f, - 0x0f74, 0x0f74, 0x0f7b, 0x0f8a, 0x0f94, 0x0f9f, 0x0fa6, 0x0fa6, - 0x0fab, 0x0fb6, 0x0fc7, 0x0fc7, 0x0fd2, 0x0fd6, 0x0fe5, 0x0ff0, - 0x0ffc, 0x1006, 0x1006, 0x100c, 0x1015, 0x101f, 0x102f, 0x102f, - // Entry 1C0 - 1FF - 0x1035, 0x1047, 0x104b, 0x1060, 0x1068, 0x1070, 0x1075, 0x107a, - 0x1086, 0x109a, 0x10a9, 0x10b1, 0x10c1, 0x10cb, 0x10d5, 0x10d5, - 0x10e8, 0x10e8, 0x10e8, 0x10f9, 0x10f9, 0x1103, 0x1103, 0x1103, - 0x1110, 0x1119, 0x112d, 0x1134, 0x1134, 0x1143, 0x114f, 0x1167, - 0x1167, 0x1167, 0x116c, 0x1175, 0x1175, 0x1175, 0x1175, 0x1180, - 0x1183, 0x1190, 0x119a, 0x11b3, 0x11ba, 0x11c4, 0x11cf, 0x11cf, - 0x11d6, 0x11db, 0x11e6, 0x11f1, 0x11f1, 0x1202, 0x120c, 0x1210, - 0x1210, 0x121b, 0x122a, 0x1239, 0x1239, 0x1242, 0x124b, 0x125d, - // Entry 200 - 23F - 0x1263, 0x1263, 0x1263, 0x1274, 0x1285, 0x1299, 0x12ac, 0x12b3, - 0x12be, 0x12ca, 0x12d4, 0x12d8, 0x12d8, 0x12de, 0x12e2, 0x12ec, - 0x12f6, 0x130b, 0x1314, 0x1314, 0x1314, 0x1319, 0x131d, 0x1324, - 0x132e, 0x1339, 0x133c, 0x1349, 0x1349, 0x1356, 0x1362, 0x1362, - 0x136d, 0x1378, 0x138e, 0x138e, 0x1394, 0x1394, 0x13a1, 0x13a1, - 0x13a8, 0x13b2, 0x13b9, 0x13c4, 0x13de, 0x13e9, 0x13f4, 0x13fb, - 0x1409, 0x140c, 0x140c, 0x140c, 0x140c, 0x140c, 0x1414, 0x1414, - 0x1419, 0x1424, 0x142e, 0x1433, 0x1438, 0x1440, 0x1440, 0x144b, - // Entry 240 - 27F - 0x144b, 0x144f, 0x1452, 0x145a, 0x1461, 0x1466, 0x1466, 0x1471, - 0x147e, 0x148b, 0x148b, 0x1491, 0x14b4, 0x14be, 0x14d4, 0x14d8, - 0x14f9, 0x14f9, 0x150c, 0x152e, 0x1547, 0x155e, 0x1574, 0x158b, - 0x15ac, 0x15c5, 0x15dd, 0x15dd, 0x15f7, 0x1615, 0x1624, 0x162e, - 0x1648, 0x1661, 0x166c, 0x167d, 0x1694, 0x16b0, 0x16c8, -} // Size: 1254 bytes - -const slLangStr string = "" + // Size: 6475 bytes - "afarščinaabhaščinaavestijščinaafrikanščinaakanščinaamharščinaaragonščina" + - "arabščinaasamščinaavarščinaajmarščinaazerbajdžanščinabaškirščinabelorušč" + - "inabolgarščinabislamščinabambarščinabengalščinatibetanščinabretonščinabo" + - "sanščinakatalonščinačečenščinačamorščinakorziščinakrijščinačeščinastara " + - "cerkvena slovanščinačuvaščinavaližanščinadanščinanemščinadiveščinadzonka" + - "evenščinagrščinaangleščinaesperantošpanščinaestonščinabaskovščinaperzijš" + - "činafulščinafinščinafidžijščinaferščinafrancoščinazahodna frizijščinair" + - "ščinaškotska gelščinagalicijščinagvaranijščinagudžaratščinamanščinahavš" + - "činahebrejščinahindujščinahiri motuhrvaščinahaitijska kreolščinamadžarš" + - "činaarmenščinahererointerlingvaindonezijščinainterlingveigboščinasečuan" + - "ska jiščinainupiaščinaidoislandščinaitalijanščinainuktitutščinajaponščin" + - "ajavanščinagruzijščinakongovščinakikujščinakvanjamakazaščinagrenlandščin" + - "akmerščinakanareščinakorejščinakanurščinakašmirščinakurdščinakomijščinak" + - "ornijščinakirgiščinalatinščinaluksemburščinagandalimburščinalingalalaošč" + - "inalitovščinaluba-katangalatvijščinamalagaščinamarshallovščinamaorščinam" + - "akedonščinamalajalamščinamongolščinamaratščinamalajščinamalteščinaburman" + - "ščinanaurujščinaseverna ndebelščinanepalščinandonganizozemščinanovonorv" + - "eščinaknjižna norveščinajužna ndebelščinanavajščinanjanščinaokcitanščina" + - "anašinabščinaoromoodijščinaosetinščinapandžabščinapalijščinapoljščinapaš" + - "tunščinaportugalščinakečuanščinaretoromanščinarundščinaromunščinaruščina" + - "ruandščinasanskrtsardinščinasindščinaseverna samijščinasangosinhalščinas" + - "lovaščinaslovenščinasamoanščinašonščinasomalščinaalbanščinasrbščinasvazi" + - "jščinasesotosundanščinašvedščinasvahilitamilščinatelugijščinatadžiščinat" + - "ajščinatigrajščinaturkmenščinacvanščinatongščinaturščinacongščinatataršč" + - "inatahitščinaujgurščinaukrajinščinaurdujščinauzbeščinavendavietnamščinav" + - "olapukvalonščinavolofščinakoščinajidišjorubščinakitajščinazulujščinaačej" + - "ščinaačolijščinaadangmejščinaadigejščinaafrihiliaghemščinaainujščinaaka" + - "dščinaaleutščinajužna altajščinastara angleščinaangikaščinaaramejščinama" + - "pudungunščinaarapaščinaaravaščinaasujščinaasturijščinaavadščinabeludžijš" + - "činabalijščinabasabedžabembabenajščinazahodnobalučijščinabodžpuribikols" + - "ki jezikedosiksikabradžbakanščinabodojščinaburjatščinabuginščinablinščin" + - "akadoščinakaribski jeziksebuanščinačigajščinačibčevščinačagatajščinatruk" + - "eščinamarijščinačinuški žargončoktavščinačipevščinačerokeščinačejenščina" + - "soranska kurdščinakoptščinakrimska tatarščinasejšelska francoska kreolšč" + - "inakašubščinadakotščinadarginščinataitajščinadelavarščinaslavejščinadogr" + - "ibdinkazarmajščinadogridolnja lužiška srbščinadualasrednja nizozemščinaj" + - "ola-fonjiščinadiuladazagaembujščinaefiščinastara egipčanščinaekajukelamš" + - "činasrednja angleščinaevondovščinafangijščinafilipinščinafonščinacajuns" + - "ka francoščinasrednja francoščinastara francoščinaseverna frizijščinavzh" + - "odna frizijščinafurlanščinagagagavščinagajščinagbajščinaetiopščinakiriba" + - "tščinasrednja visoka nemščinastara visoka nemščinagondigorontalščinagotš" + - "činagrebščinastara grščinanemščina (Švica)gusijščinagvičinhaidščinahava" + - "jščinahiligajnonščinahetitščinahmonščinagornja lužiška srbščinahupaibanš" + - "činaibibijščinailokanščinainguščinalojbanngombamačamejščinajudovska per" + - "zijščinajudovska arabščinakarakalpaščinakabilščinakačinščinajjukambaščin" + - "akavikabardinščinatjapska nigerijščinamakondščinazelenortskootoška kreol" + - "ščinakorokasikotanščinakoyra chiinikakokalenjinščinakimbundukomi-permja" + - "ščinakonkanščinakosrajščinakpelejščinakaračaj-balkarščinakarelščinakuru" + - "kšambalabafiakölnsko narečjekumiščinakutenajščinaladinščinalangijščinala" + - "ndalambalezginščinalakotščinamongolouisianska kreolščinaloziseverna luri" + - "jščinaluba-lulualuisenščinalundaluomizojščinaluhijščinamadurščinamagadšč" + - "inamaitilimakasarščinamandingomasajščinamokšavščinamandarščinamendemerum" + - "orisjenščinasrednja irščinamakuva-metometamikmaščinaminangkabaumandžuršč" + - "inamanipurščinamohoščinamosijščinamundangveč jezikovcreekovščinamirandeš" + - "činamarvarščinaerzjanščinamazanderanščinamin nan kitajščinanapolitanšči" + - "nakhoekhoenizka nemščinanevarščinaniaščinaniuejščinakwasiongiemboonščina" + - "nogajščinastara nordijščinan’koseverna sotščinanuerščinaklasična nevaršč" + - "inanjamveščinanjankolenjoronzimaosageotomanska turščinapangasinanščinapa" + - "mpanščinapapiamentupalavanščinanigerijski pidžinstara perzijščinafeničan" + - "ščinaponpejščinastara pruščinastara provansalščinaquicheradžastanščinar" + - "apanujščinararotongščinaromboromščinaaromunščinarwasandavščinajakutščina" + - "samaritanska aramejščinasamburščinasasaščinasantalščinangambajščinasangu" + - "jščinasicilijanščinaškotščinajužna kurdščinasenaselkupščinakoyraboro sen" + - "nistara irščinatahelitska berberščinašanščinasidamščinajužna samijščinal" + - "uleška samijščinainarska samijščinasamijščina Skoltsoninkesurinamska kre" + - "olščinasererščinasahosukumasusujščinasumerščinašikomorklasična sirščinas" + - "irščinatemnejščinatesotetumščinatigrejščinativščinatokelavščinaklingonšč" + - "inatlingitščinatamajaščinamalavijska tongščinatok pisintarokotsimščinatu" + - "mbukščinatuvalujščinatasawaqtuvinščinatamašek (srednji atlas)udmurtščina" + - "ugaritski jezikumbundščinaneznan jezikvajščinavotjaščinavunjowalservalam" + - "ščinavarajščinavašajščinavarlpirščinakalmiščinasogščinajaojščinajapščin" + - "ajangbenjembajščinakantonščinazapoteščinaznakovni jezik Blisszenaščinast" + - "andardni maroški tamazigzunijščinabrez jezikoslovne vsebinezazajščinasod" + - "obna standardna arabščinaavstrijska nemščinavisoka nemščina (Švica)avstr" + - "alska angleščinakanadska angleščinaangleščina (VB)angleščina (ZDA)latins" + - "koameriška španščinaevropska španščinakanadska francoščinašvicarska fran" + - "coščinanizka saščinaflamščinabrazilska portugalščinaevropska portugalšči" + - "nasrbohrvaščinapoenostavljena kitajščinatradicionalna kitajščina" - -var slLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000b, 0x0016, 0x0024, 0x0032, 0x003d, 0x0049, 0x0056, - 0x0061, 0x006c, 0x0077, 0x0083, 0x0096, 0x00a4, 0x00b1, 0x00be, - 0x00cb, 0x00d8, 0x00e5, 0x00f3, 0x0100, 0x010c, 0x011a, 0x0128, - 0x0135, 0x0141, 0x014c, 0x0156, 0x0172, 0x017e, 0x018d, 0x0197, - 0x01a1, 0x01ac, 0x01b2, 0x01bd, 0x01c6, 0x01d2, 0x01db, 0x01e7, - 0x01f3, 0x0200, 0x020d, 0x0217, 0x0221, 0x022f, 0x0239, 0x0246, - 0x025b, 0x0264, 0x0277, 0x0285, 0x0294, 0x02a4, 0x02ae, 0x02b8, - 0x02c5, 0x02d2, 0x02db, 0x02e6, 0x02fc, 0x030a, 0x0316, 0x031c, - // Entry 40 - 7F - 0x0327, 0x0337, 0x0342, 0x034d, 0x0361, 0x036e, 0x0371, 0x037e, - 0x038d, 0x039d, 0x03a9, 0x03b5, 0x03c2, 0x03cf, 0x03db, 0x03e3, - 0x03ee, 0x03fd, 0x0408, 0x0415, 0x0421, 0x042d, 0x043b, 0x0446, - 0x0452, 0x045f, 0x046b, 0x0477, 0x0487, 0x048c, 0x0499, 0x04a0, - 0x04aa, 0x04b6, 0x04c2, 0x04cf, 0x04dc, 0x04ed, 0x04f8, 0x0506, - 0x0516, 0x0523, 0x052f, 0x053b, 0x0547, 0x0554, 0x0561, 0x0576, - 0x0582, 0x0588, 0x0596, 0x05a6, 0x05bb, 0x05cf, 0x05db, 0x05e6, - 0x05f4, 0x0604, 0x0609, 0x0614, 0x0621, 0x0630, 0x063c, 0x0647, - // Entry 80 - BF - 0x0655, 0x0664, 0x0672, 0x0682, 0x068d, 0x0699, 0x06a2, 0x06ae, - 0x06b5, 0x06c2, 0x06cd, 0x06e1, 0x06e6, 0x06f3, 0x06ff, 0x070c, - 0x0719, 0x0724, 0x0730, 0x073c, 0x0746, 0x0753, 0x0759, 0x0766, - 0x0772, 0x0779, 0x0785, 0x0793, 0x07a0, 0x07aa, 0x07b7, 0x07c5, - 0x07d0, 0x07db, 0x07e5, 0x07f0, 0x07fc, 0x0808, 0x0814, 0x0822, - 0x082e, 0x0839, 0x083e, 0x084c, 0x0853, 0x085f, 0x086b, 0x0874, - 0x087a, 0x0886, 0x0886, 0x0892, 0x089e, 0x08aa, 0x08b8, 0x08c7, - 0x08d4, 0x08d4, 0x08dc, 0x08e8, 0x08f4, 0x08ff, 0x08ff, 0x090b, - // Entry C0 - FF - 0x090b, 0x091e, 0x0930, 0x093d, 0x094a, 0x095b, 0x095b, 0x0967, - 0x0967, 0x0967, 0x0973, 0x0973, 0x0973, 0x097e, 0x097e, 0x098c, - 0x098c, 0x0997, 0x09a7, 0x09b3, 0x09b3, 0x09b7, 0x09b7, 0x09b7, - 0x09b7, 0x09bd, 0x09c2, 0x09c2, 0x09ce, 0x09ce, 0x09ce, 0x09e4, - 0x09ed, 0x09fb, 0x09fe, 0x09fe, 0x09fe, 0x0a05, 0x0a05, 0x0a05, - 0x0a17, 0x0a17, 0x0a23, 0x0a23, 0x0a30, 0x0a3c, 0x0a3c, 0x0a47, - 0x0a47, 0x0a52, 0x0a60, 0x0a60, 0x0a60, 0x0a60, 0x0a6d, 0x0a7a, - 0x0a89, 0x0a98, 0x0aa4, 0x0ab0, 0x0ac1, 0x0acf, 0x0adc, 0x0aea, - // Entry 100 - 13F - 0x0af7, 0x0b0b, 0x0b16, 0x0b16, 0x0b2a, 0x0b4b, 0x0b58, 0x0b64, - 0x0b71, 0x0b7e, 0x0b8c, 0x0b99, 0x0b9f, 0x0ba4, 0x0bb1, 0x0bb6, - 0x0bd1, 0x0bd1, 0x0bd6, 0x0bec, 0x0bfd, 0x0c02, 0x0c08, 0x0c14, - 0x0c1e, 0x0c1e, 0x0c33, 0x0c39, 0x0c44, 0x0c58, 0x0c58, 0x0c66, - 0x0c66, 0x0c73, 0x0c81, 0x0c81, 0x0c8b, 0x0ca1, 0x0cb6, 0x0cc9, - 0x0cc9, 0x0cde, 0x0cf3, 0x0d00, 0x0d02, 0x0d0e, 0x0d0e, 0x0d18, - 0x0d23, 0x0d23, 0x0d2f, 0x0d3d, 0x0d3d, 0x0d56, 0x0d6d, 0x0d6d, - 0x0d72, 0x0d81, 0x0d8b, 0x0d96, 0x0da5, 0x0db8, 0x0db8, 0x0db8, - // Entry 140 - 17F - 0x0dc4, 0x0dcb, 0x0dd6, 0x0dd6, 0x0de2, 0x0de2, 0x0df3, 0x0dff, - 0x0e0a, 0x0e25, 0x0e25, 0x0e29, 0x0e34, 0x0e41, 0x0e4e, 0x0e59, - 0x0e59, 0x0e59, 0x0e5f, 0x0e65, 0x0e74, 0x0e8a, 0x0e9e, 0x0e9e, - 0x0eae, 0x0eba, 0x0ec7, 0x0eca, 0x0ed6, 0x0eda, 0x0ee9, 0x0ee9, - 0x0eff, 0x0f0c, 0x0f2b, 0x0f2b, 0x0f2f, 0x0f2f, 0x0f33, 0x0f3f, - 0x0f4b, 0x0f4b, 0x0f4b, 0x0f4f, 0x0f5e, 0x0f66, 0x0f78, 0x0f85, - 0x0f92, 0x0f9f, 0x0fb5, 0x0fb5, 0x0fb5, 0x0fc1, 0x0fc6, 0x0fce, - 0x0fd3, 0x0fe4, 0x0fef, 0x0ffd, 0x1009, 0x1016, 0x101b, 0x1020, - // Entry 180 - 1BF - 0x102d, 0x102d, 0x102d, 0x102d, 0x1039, 0x1039, 0x103e, 0x1056, - 0x105a, 0x106e, 0x106e, 0x1078, 0x1085, 0x108a, 0x108d, 0x1099, - 0x10a5, 0x10a5, 0x10a5, 0x10b1, 0x10b1, 0x10bd, 0x10c4, 0x10d2, - 0x10da, 0x10e6, 0x10e6, 0x10f4, 0x1101, 0x1106, 0x110a, 0x1119, - 0x112a, 0x1135, 0x1139, 0x1145, 0x1150, 0x115f, 0x116d, 0x1178, - 0x1184, 0x1184, 0x118b, 0x1197, 0x11a5, 0x11b3, 0x11c0, 0x11c0, - 0x11c0, 0x11cd, 0x11de, 0x11f2, 0x1202, 0x120a, 0x121a, 0x1226, - 0x1230, 0x123c, 0x123c, 0x1242, 0x1252, 0x125e, 0x1271, 0x1271, - // Entry 1C0 - 1FF - 0x1277, 0x1289, 0x1294, 0x12aa, 0x12b7, 0x12bf, 0x12c4, 0x12c9, - 0x12ce, 0x12e2, 0x12f3, 0x12f3, 0x1300, 0x130a, 0x1318, 0x1318, - 0x132a, 0x132a, 0x132a, 0x133d, 0x133d, 0x134c, 0x134c, 0x134c, - 0x1359, 0x1369, 0x137f, 0x1385, 0x1385, 0x1396, 0x13a4, 0x13b3, - 0x13b3, 0x13b3, 0x13b8, 0x13c2, 0x13c2, 0x13c2, 0x13c2, 0x13cf, - 0x13d2, 0x13df, 0x13eb, 0x1405, 0x1412, 0x141d, 0x142a, 0x142a, - 0x1438, 0x1445, 0x1455, 0x1461, 0x1461, 0x1473, 0x1473, 0x1477, - 0x1477, 0x1484, 0x1493, 0x14a2, 0x14a2, 0x14ba, 0x14c5, 0x14c5, - // Entry 200 - 23F - 0x14d1, 0x14d1, 0x14d1, 0x14e4, 0x14f9, 0x150d, 0x151f, 0x1526, - 0x1526, 0x153d, 0x1549, 0x154d, 0x154d, 0x1553, 0x155f, 0x156b, - 0x1573, 0x1587, 0x1591, 0x1591, 0x1591, 0x159e, 0x15a2, 0x15a2, - 0x15ae, 0x15bb, 0x15c5, 0x15d3, 0x15d3, 0x15e1, 0x15ef, 0x15ef, - 0x15fc, 0x1612, 0x161b, 0x161b, 0x1621, 0x1621, 0x162c, 0x162c, - 0x1639, 0x1647, 0x164e, 0x165a, 0x1672, 0x167f, 0x168e, 0x169b, - 0x16a7, 0x16b1, 0x16b1, 0x16b1, 0x16b1, 0x16b1, 0x16bd, 0x16bd, - 0x16c2, 0x16c8, 0x16d4, 0x16e0, 0x16ed, 0x16fb, 0x16fb, 0x1707, - // Entry 240 - 27F - 0x1707, 0x1711, 0x171c, 0x1726, 0x172d, 0x173a, 0x173a, 0x1747, - 0x1754, 0x1768, 0x1768, 0x1773, 0x178e, 0x179a, 0x17b3, 0x17bf, - 0x17dd, 0x17dd, 0x17f2, 0x180c, 0x1823, 0x1838, 0x1849, 0x185b, - 0x1879, 0x188e, 0x188e, 0x188e, 0x18a4, 0x18bc, 0x18cb, 0x18d6, - 0x18ef, 0x1907, 0x1907, 0x1916, 0x1916, 0x1931, 0x194b, -} // Size: 1254 bytes - -const sqLangStr string = "" + // Size: 4443 bytes - "afarishtabkazishtafrikanishtakanishtamarishtaragonezishtarabishtasamezis" + - "htavarikishtajmarishtazerbajxhanishtbashkirishtbjellorusishtbullgarishtb" + - "islamishtbambarishtbengalishttibetishtbretonishtboshnjakishtkatalonishtç" + - "eçenishtkamoroishtkorsikishtçekishtsllavishte kishtareçuvashishtuellsish" + - "tdanishtgjermanishtdivehishtxhongaishteveishtgreqishtanglishtesperantosp" + - "anjishtestonishtbaskishtpersishtfulaishtfinlandishtfixhianishtfaroishtfr" + - "ëngjishtfrizianishte perëndimoreirlandishtgalishte skocezegalicishtguar" + - "anishtguxharatishtmanksishthausishthebraishtindishtkroatishthaitishthung" + - "arishtarmenishthereroishtinterlinguaindonezishtgjuha oksidentaleigboisht" + - "sishuanishtidoishtislandishtitalishtinuktitutishtjaponishtjavanishtgjeor" + - "gjishtkikujuishtkuanjamaishtkazakishtkalalisutishtkmerishtkanadishtkorea" + - "nishtkanurishtkashmirishtkurdishtkomishtkornishtkirgizishtlatinishtlukse" + - "mburgishtgandaishtlimburgishtlingalishtlaosishtlituanishtluba-katangaish" + - "tletonishtmadagaskarishtmarshallishtmaorishtmaqedonishtmalajalamishtmong" + - "olishtmaratishtmalajishtmaltishtbirmanishtnauruishtndebelishte veriorene" + - "palishtndongaishtholandishtnorvegjishte nynorsknorvegjishte letrarendebe" + - "lishte jugorenavahoishtnianjishtoksitanishtoromoishtodishtosetishtpunxha" + - "bishtpolonishtpashtoishtportugalishtkeçuaishtretoromanishtrundishtrumani" + - "shtrusishtkiniaruandishtsanskritishtsardenjishtsindishtsamishte veriores" + - "angoishtsinhalishtsllovakishtsllovenishtsamoanishtshonishtsomalishtshqip" + - "serbishtsuatishtsotoishte jugoresundanishtsuedishtsuahilishttamilishttel" + - "uguishttaxhikishttajlandishttigrinjaishtturkmenishtcuanaishttonganishttu" + - "rqishtcongaishttatarishttahitishtujgurishtukrainishturduishtuzbekishtven" + - "daishtvietnamishtvolapykishtualunishtuolofishtxhosaishtjidishtjorubaisht" + - "kinezishtzuluishtakinezishtandangmeishtadigishtagemishtajnuishtaleutisht" + - "altaishte jugoreangikishtmapuçishtarapahoishtasuishtasturishtauadhishtba" + - "linezishtbasaishtbembaishtbenaishtbalokishte perëndimoreboxhpurishtbinis" + - "htsiksikaishtbodoishtbuginezishtblinishtsebuanishtçigishtçukezishtmarish" + - "tçoktauishtçerokishtçejenishtkurdishte qendrorefrëngjishte kreole seselv" + - "edakotishtdarguaishttajtaishtdogribishtzarmaishtsorbishte e poshtmeduala" + - "ishtxhulafonjishtdazagauishtembuishtefikishtekajukishteuondoishtfilipini" + - "shtfonishtfriulianishtgaishtgagauzishtgizishtgilbertazishtgorontaloishtg" + - "jermanishte zviceranegusishtguiçinishthavaishthiligajnonishthmongishtsor" + - "bishte e sipërmehupaishtibanishtibibioishtilokoishtingushishtlojbanishtn" + - "gombishtmaçamishtkabilishtkaçinishtkajeishtkambaishtkabardianishttjapish" + - "tmakondishtkreolishte e Kepit të Gjelbërkoroishtkasishtkojraçinishtkakoi" + - "shtkalenxhinishtkimbunduishtkomi-parmjakishtkonkanishtkpeleishtkaraçaj-b" + - "alkarishtkarelianishtkurukishtshambalishtbafianishtkëlnishtkumikishtladi" + - "noishtlangishtlezgianishtlakotishtlozishtlurishte verioreluba-luluaishtl" + - "undaishtluoishtmizoishtlujaishtmadurezishtmagaishtmaitilishtmakasarishtm" + - "asaishtmokshaishtmendishtmeruishtmorisjenishtmakua-mitoishtmetaishtmikma" + - "kishtminangkabauishtmanipurishtmohokishtmosishtmundangishtgjuhë të shumë" + - "fishtakrikishtmirandishterzjaishtmazanderanishtnapoletanishtnamaishtgjer" + - "manishte e vendeve të ulëtaneuarishtniasishtniueanishtkuasishtngiembunis" + - "htnogajishtnkoishtsotoishte veriorenuerishtniankolishtpangasinanishtpamp" + - "angaishtpapiamentishtpaluanishtpixhinishte nigerianeprusishtkiçeishtrapa" + - "nuishtrarontonganishtromboishtvllahishtruaishtsandauishtsakaishtsamburis" + - "htsantalishtngambajishtsanguishtsiçilianishtskotishtkurdishte jugoresena" + - "ishtsenishte kojraboretaçelitishtshanishtsamishte jugoresamishte lulesam" + - "ishte inarisamishte skoltisoninkishtsrananisht (sranantongoisht)sahoisht" + - "sukumaishtkamorianishtsiriakishttimneishttesoishttetumishttigreishtkling" + - "onishtpisinishte tokutorokoishttumbukaishttuvaluishttasavakishttuviniani" + - "shttamazajtisht e Atlasit QendrorudmurtishtumbunduishtE panjohurvaishtvu" + - "nxhoishtualserishtulajtaishtuarajishtuarlpirishtkalmikishtsogishtjangben" + - "ishtjembaishtkantonezishttamaziatishte standarde marokenezunishtnuk ka p" + - "ërmbajtje gjuhësorezazaishtarabishte standarde modernegjermanishte aust" + - "riakegjermanishte zvicerane (dialekti i Alpeve)anglishte australianeangl" + - "ishte kanadezeanglishte britanikeanglishte amerikanespanjishte amerikano" + - "-latinespanjishte evropianespanjishte meksikanefrëngjishte kanadezefrëng" + - "jishte zviceranegjermanishte saksone e vendeve të ulëtaflamandishtportug" + - "alishte brazilianeportugalishte evropianemoldavishtserbo-kroatishtsuahil" + - "ishte kongoleze" - -var sqLangIdx = []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x0011, 0x0011, 0x001c, 0x0024, 0x002c, 0x0038, - 0x0040, 0x004a, 0x0054, 0x005d, 0x006c, 0x0077, 0x0084, 0x008f, - 0x0099, 0x00a3, 0x00ad, 0x00b6, 0x00c0, 0x00cc, 0x00d7, 0x00e2, - 0x00ec, 0x00f6, 0x00f6, 0x00fe, 0x0111, 0x011c, 0x0125, 0x012c, - 0x0137, 0x0140, 0x014a, 0x0151, 0x0159, 0x0161, 0x016a, 0x0173, - 0x017c, 0x0184, 0x018c, 0x0194, 0x019f, 0x01aa, 0x01b2, 0x01bd, - 0x01d6, 0x01e0, 0x01f0, 0x01f9, 0x0203, 0x020f, 0x0218, 0x0220, - 0x0229, 0x0230, 0x0230, 0x0239, 0x0241, 0x024b, 0x0254, 0x025e, - // Entry 40 - 7F - 0x0269, 0x0274, 0x0285, 0x028d, 0x0298, 0x0298, 0x029f, 0x02a9, - 0x02b1, 0x02be, 0x02c7, 0x02d0, 0x02db, 0x02db, 0x02e5, 0x02f1, - 0x02fa, 0x0307, 0x030f, 0x0318, 0x0322, 0x032b, 0x0336, 0x033e, - 0x0345, 0x034d, 0x0357, 0x0360, 0x036e, 0x0377, 0x0382, 0x038c, - 0x0394, 0x039e, 0x03ae, 0x03b7, 0x03c5, 0x03d1, 0x03d9, 0x03e4, - 0x03f1, 0x03fb, 0x0404, 0x040d, 0x0415, 0x041f, 0x0428, 0x043b, - 0x0444, 0x044e, 0x0458, 0x046c, 0x0480, 0x0492, 0x049c, 0x04a5, - 0x04b0, 0x04b0, 0x04b9, 0x04bf, 0x04c7, 0x04d2, 0x04d2, 0x04db, - // Entry 80 - BF - 0x04e5, 0x04f1, 0x04fb, 0x0508, 0x0510, 0x0519, 0x0520, 0x052e, - 0x053a, 0x0545, 0x054d, 0x055d, 0x0566, 0x0570, 0x057b, 0x0586, - 0x0590, 0x0598, 0x05a1, 0x05a6, 0x05ae, 0x05b6, 0x05c6, 0x05d0, - 0x05d8, 0x05e2, 0x05eb, 0x05f5, 0x05ff, 0x060a, 0x0616, 0x0621, - 0x062a, 0x0634, 0x063c, 0x0645, 0x064e, 0x0657, 0x0660, 0x066a, - 0x0672, 0x067b, 0x0684, 0x068f, 0x069a, 0x06a3, 0x06ac, 0x06b5, - 0x06bc, 0x06c6, 0x06c6, 0x06cf, 0x06d7, 0x06e1, 0x06e1, 0x06ed, - 0x06f5, 0x06f5, 0x06f5, 0x06fd, 0x0705, 0x0705, 0x0705, 0x070e, - // Entry C0 - FF - 0x070e, 0x071e, 0x071e, 0x0727, 0x0727, 0x0731, 0x0731, 0x073c, - 0x073c, 0x073c, 0x073c, 0x073c, 0x073c, 0x0743, 0x0743, 0x074c, - 0x074c, 0x0755, 0x0755, 0x0760, 0x0760, 0x0768, 0x0768, 0x0768, - 0x0768, 0x0768, 0x0771, 0x0771, 0x0779, 0x0779, 0x0779, 0x0790, - 0x079b, 0x079b, 0x07a2, 0x07a2, 0x07a2, 0x07ad, 0x07ad, 0x07ad, - 0x07ad, 0x07ad, 0x07b5, 0x07b5, 0x07b5, 0x07c0, 0x07c0, 0x07c8, - 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07c8, 0x07d2, 0x07da, - 0x07da, 0x07da, 0x07e4, 0x07eb, 0x07eb, 0x07f6, 0x07f6, 0x0800, - // Entry 100 - 13F - 0x080a, 0x081c, 0x081c, 0x081c, 0x081c, 0x0837, 0x0837, 0x0840, - 0x084a, 0x0853, 0x0853, 0x0853, 0x085d, 0x085d, 0x0866, 0x0866, - 0x0879, 0x0879, 0x0882, 0x0882, 0x088f, 0x088f, 0x089a, 0x08a2, - 0x08aa, 0x08aa, 0x08aa, 0x08b4, 0x08b4, 0x08b4, 0x08b4, 0x08be, - 0x08be, 0x08be, 0x08c9, 0x08c9, 0x08d0, 0x08d0, 0x08d0, 0x08d0, - 0x08d0, 0x08d0, 0x08d0, 0x08dc, 0x08e2, 0x08ec, 0x08ec, 0x08ec, - 0x08ec, 0x08ec, 0x08f3, 0x0900, 0x0900, 0x0900, 0x0900, 0x0900, - 0x0900, 0x090d, 0x090d, 0x090d, 0x090d, 0x0923, 0x0923, 0x0923, - // Entry 140 - 17F - 0x092a, 0x0935, 0x0935, 0x0935, 0x093d, 0x093d, 0x094b, 0x094b, - 0x0954, 0x0968, 0x0968, 0x0970, 0x0978, 0x0982, 0x098b, 0x0995, - 0x0995, 0x0995, 0x099f, 0x09a8, 0x09b2, 0x09b2, 0x09b2, 0x09b2, - 0x09b2, 0x09bb, 0x09c5, 0x09cd, 0x09d6, 0x09d6, 0x09e3, 0x09e3, - 0x09eb, 0x09f5, 0x0a14, 0x0a14, 0x0a1c, 0x0a1c, 0x0a23, 0x0a23, - 0x0a30, 0x0a30, 0x0a30, 0x0a38, 0x0a45, 0x0a51, 0x0a61, 0x0a6b, - 0x0a6b, 0x0a74, 0x0a87, 0x0a87, 0x0a87, 0x0a93, 0x0a9c, 0x0aa7, - 0x0ab1, 0x0aba, 0x0ac3, 0x0ac3, 0x0acd, 0x0ad5, 0x0ad5, 0x0ad5, - // Entry 180 - 1BF - 0x0ae0, 0x0ae0, 0x0ae0, 0x0ae0, 0x0ae9, 0x0ae9, 0x0ae9, 0x0ae9, - 0x0af0, 0x0b00, 0x0b00, 0x0b0e, 0x0b0e, 0x0b17, 0x0b1e, 0x0b26, - 0x0b2e, 0x0b2e, 0x0b2e, 0x0b39, 0x0b39, 0x0b41, 0x0b4b, 0x0b56, - 0x0b56, 0x0b5e, 0x0b5e, 0x0b68, 0x0b68, 0x0b70, 0x0b78, 0x0b84, - 0x0b84, 0x0b92, 0x0b9a, 0x0ba4, 0x0bb3, 0x0bb3, 0x0bbe, 0x0bc7, - 0x0bce, 0x0bce, 0x0bd9, 0x0bf0, 0x0bf8, 0x0c02, 0x0c02, 0x0c02, - 0x0c02, 0x0c0b, 0x0c19, 0x0c19, 0x0c26, 0x0c2e, 0x0c4f, 0x0c58, - 0x0c60, 0x0c6a, 0x0c6a, 0x0c72, 0x0c7e, 0x0c87, 0x0c87, 0x0c87, - // Entry 1C0 - 1FF - 0x0c8e, 0x0c9f, 0x0ca7, 0x0ca7, 0x0ca7, 0x0cb2, 0x0cb2, 0x0cb2, - 0x0cb2, 0x0cb2, 0x0cc0, 0x0cc0, 0x0ccc, 0x0cd9, 0x0ce3, 0x0ce3, - 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, 0x0cf8, - 0x0cf8, 0x0d00, 0x0d00, 0x0d09, 0x0d09, 0x0d09, 0x0d13, 0x0d22, - 0x0d22, 0x0d22, 0x0d2b, 0x0d2b, 0x0d2b, 0x0d2b, 0x0d2b, 0x0d34, - 0x0d3b, 0x0d45, 0x0d4d, 0x0d4d, 0x0d57, 0x0d57, 0x0d61, 0x0d61, - 0x0d6c, 0x0d75, 0x0d82, 0x0d8a, 0x0d8a, 0x0d9a, 0x0d9a, 0x0da2, - 0x0da2, 0x0da2, 0x0db4, 0x0db4, 0x0db4, 0x0dc0, 0x0dc8, 0x0dc8, - // Entry 200 - 23F - 0x0dc8, 0x0dc8, 0x0dc8, 0x0dd7, 0x0de4, 0x0df2, 0x0e01, 0x0e0b, - 0x0e0b, 0x0e27, 0x0e27, 0x0e2f, 0x0e2f, 0x0e39, 0x0e39, 0x0e39, - 0x0e45, 0x0e45, 0x0e4f, 0x0e4f, 0x0e4f, 0x0e58, 0x0e60, 0x0e60, - 0x0e69, 0x0e72, 0x0e72, 0x0e72, 0x0e72, 0x0e7d, 0x0e7d, 0x0e7d, - 0x0e7d, 0x0e7d, 0x0e8c, 0x0e8c, 0x0e96, 0x0e96, 0x0e96, 0x0e96, - 0x0ea1, 0x0eab, 0x0eb6, 0x0ec2, 0x0ee0, 0x0eea, 0x0eea, 0x0ef5, - 0x0eff, 0x0f05, 0x0f05, 0x0f05, 0x0f05, 0x0f05, 0x0f05, 0x0f05, - 0x0f0f, 0x0f19, 0x0f23, 0x0f2c, 0x0f2c, 0x0f37, 0x0f37, 0x0f41, - // Entry 240 - 27F - 0x0f41, 0x0f48, 0x0f48, 0x0f48, 0x0f53, 0x0f5c, 0x0f5c, 0x0f68, - 0x0f68, 0x0f68, 0x0f68, 0x0f68, 0x0f88, 0x0f8f, 0x0fac, 0x0fb4, - 0x0fcf, 0x0fcf, 0x0fe5, 0x100f, 0x1024, 0x1036, 0x1049, 0x105c, - 0x1077, 0x108b, 0x109f, 0x109f, 0x10b4, 0x10ca, 0x10f3, 0x10fe, - 0x1116, 0x112d, 0x1137, 0x1146, 0x115b, -} // Size: 1250 bytes - -const srLangStr string = "" + // Size: 8156 bytes - "афарскиабхаскиавестанскиафрикансаканскиамхарскиарагонскиарапскиасамскиав" + - "арскиајмараазербејџанскибашкирскибелорускибугарскибисламабамбарабенгалс" + - "китибетанскибретонскибосанскикаталонскичеченскичаморокорзиканскикричешк" + - "ицрквенословенскичувашкивелшкиданскинемачкималдивскиџонгаевегрчкиенглес" + - "киесперантошпанскиестонскибаскијскиперсијскифулафинскифиџијскифарскифра" + - "нцускизападни фризијскиирскишкотски гелскигалицијскигваранигуџаратиманк" + - "схаусахебрејскихиндихири мотухрватскихаићанскимађарскијерменскихерероин" + - "терлингваиндонежанскиинтерлингвеигбосечуански јиинупикидоисландскиитали" + - "јанскиинуктитутскијапанскијаванскигрузијскиконгокикујуквањамаказашкигре" + - "нландскикмерскиканадакорејскиканурикашмирскикурдскикомикорнволскикиргис" + - "килатинскилуксембуршкигандалимбуршкилингалалаоскилитванскилуба-катангал" + - "етонскималгашкимаршалскимаорскимакедонскималајаламмонголскимаратималајс" + - "кималтешкибурманскинаурускисеверни ндебеленепалскиндонгахоландскинорвеш" + - "ки нинорскнорвешки букмолјужни ндебеленавахоњанџаокситанскиоџибвеоромоо" + - "дијаосетинскипенџапскипалипољскипаштунскипортугалскикечуароманшкирундир" + - "умунскирускикињаруандасанскритсардинскисиндисеверни самисангосинхалешки" + - "словачкисловеначкисамоанскишонасомалскиалбанскисрпскисвазисесотосунданс" + - "кишведскисвахилитамилскителугутаџичкитајскитигрињатуркменскицванатонган" + - "скитурскицонгататарскитахићанскиујгурскиукрајинскиурдуузбечкивендавијет" + - "намскиволапиквалонскиволофкосајидишјорубаџуаншкикинескизулуацешкиаколиа" + - "дангмеадигејскиафрихилиагемаинуакадијскиалеутскијужноалтајскистароенгле" + - "скиангикаарамејскимапучеарапахоаравачкиасуастуријскиавадибелучкибалијск" + - "ибасабеџабембабеназападни белучкибоџпурибиколбинисисикабрајбодобурјатск" + - "ибугијскиблинскикадокарипскиатсамсебуанскичигачипчачагатајчучкимаричину" + - "чкичоктавскичипевјанскичерокичејенскицентрални курдскикоптскикримскотат" + - "арскисејшелски креолски францускикашупскидакотадаргинскитаитаделаверски" + - "слејвидогрипскидинказармадогридоњи лужичкосрпскидуаласредњехоландскиџол" + - "а фоњиђуладазагаембуефичкистароегипатскиекаџукеламитскисредњеенглескиев" + - "ондофангфилипинскифонкајунски францускисредњефранцускистарофранцускисев" + - "ернофризијскиисточнофризијскифриулскигагагаузгајогбајагеезгилбертскисре" + - "дњи високонемачкистаронемачкигондигоронталоготскигребостарогрчкинемачки" + - " (Швајцарска)гусигвичинскихаидахавајскихилигајнонскихетитскихмоншкигорњи" + - " лужичкосрпскихупаибанскиибибиоилокоингушкиложбаннгомбамачамејудео-перси" + - "јскијудео-арапскикара-калпашкикабилекачинскиџукамбакавикабардијскитјапм" + - "акондезеленортскикорокасикотанешкикојра чииникакокаленџинскикимбундуком" + - "и-пермскиконканикосренскикпелекарачајско-балкарскикриокарелскикурукшамб" + - "алабафијакелнскикумичкикутенајладинолангиландаламбалезгинскилакотамонго" + - "луизијански креолскилозисеверни лурилуба-лулуалуисењолундалуомизолујиам" + - "адурскимагахимаитилимакасарскимандингомасајскимокшамандармендемеруморис" + - "јенсредњеирскимакува-митометамикмакминангкабауманџурскиманипурскимохочк" + - "имосимундангВише језикакришкимирандскимарвариерзјамазандеранскинапуљски" + - "наманисконемачкиневариниасниуејскиквасионгиембунногајскистаронордијскин" + - "косеверни сотонуеркласични неварскињамвезињанколењоронзимаосагеосмански" + - " турскипангасинанскипахлавипампангапапијаментопалаускинигеријски пиџинст" + - "ароперсијскифеничанскипонпејскипрускистароокситанскикичераџастанскирапа" + - "нуираротонганскиромборомскицинцарскируасандавесахасамаријански арамејск" + - "исамбурусасаксанталингамбајсангусицилијанскишкотскијужнокурдскисенаселк" + - "упскикојраборо сенистароирскиташелхитшанскисидамојужни самилуле самиина" + - "ри самисколт самисонинкесогдијскисранан тонгосерерскисахосукумасусусуме" + - "рскикоморскисиријачкисиријскитимнетесотеренотетумтигретивтокелауклингон" + - "скитлингиттамашекњаса тонгаток писинтарокоцимшиантумбукатувалутасавакту" + - "винскицентралноатласки тамазигтудмуртскиугаритскиумбундунепознат језикв" + - "аиводскивунџовалсерскиволајтаварајскивашоварлпирикалмичкисогајаојапскиј" + - "ангбенјембакантонскизапотечкиблисимболизенагастандардни марокански тама" + - "зигтзунибез лингвистичког садржајазазасавремени стандардни арапскишвајц" + - "арски високи немачкиенглески (Велика Британија)енглески (Сједињене Амер" + - "ичке Државе)нискосаксонскифламанскипортугалски (Португал)молдавскисрпск" + - "охрватскикисвахилипоједностављени кинескитрадиционални кинески" - -var srLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x001c, 0x0030, 0x0040, 0x004e, 0x005e, 0x0070, - 0x007e, 0x008c, 0x009a, 0x00a6, 0x00c0, 0x00d2, 0x00e4, 0x00f4, - 0x0102, 0x0110, 0x0122, 0x0136, 0x0148, 0x0158, 0x016c, 0x017c, - 0x0188, 0x019e, 0x01a4, 0x01ae, 0x01ce, 0x01dc, 0x01e8, 0x01f4, - 0x0202, 0x0214, 0x021e, 0x0224, 0x022e, 0x023e, 0x0250, 0x025e, - 0x026e, 0x0280, 0x0292, 0x029a, 0x02a6, 0x02b6, 0x02c2, 0x02d4, - 0x02f5, 0x02ff, 0x031a, 0x032e, 0x033c, 0x034c, 0x0356, 0x0360, - 0x0372, 0x037c, 0x038d, 0x039d, 0x03af, 0x03bf, 0x03d1, 0x03dd, - // Entry 40 - 7F - 0x03f3, 0x040b, 0x0421, 0x0429, 0x0440, 0x044c, 0x0452, 0x0464, - 0x047a, 0x0492, 0x04a2, 0x04b2, 0x04c4, 0x04ce, 0x04da, 0x04e8, - 0x04f6, 0x050c, 0x051a, 0x0526, 0x0536, 0x0542, 0x0554, 0x0562, - 0x056a, 0x057e, 0x058e, 0x059e, 0x05b6, 0x05c0, 0x05d2, 0x05e0, - 0x05ec, 0x05fe, 0x0615, 0x0625, 0x0635, 0x0647, 0x0655, 0x0669, - 0x067b, 0x068d, 0x0699, 0x06a9, 0x06b9, 0x06cb, 0x06db, 0x06f8, - 0x0708, 0x0714, 0x0726, 0x0745, 0x0762, 0x077b, 0x0787, 0x0791, - 0x07a5, 0x07b1, 0x07bb, 0x07c5, 0x07d7, 0x07e9, 0x07f1, 0x07fd, - // Entry 80 - BF - 0x080f, 0x0825, 0x082f, 0x083b, 0x0849, 0x0859, 0x0863, 0x0877, - 0x0887, 0x0899, 0x08a3, 0x08ba, 0x08c4, 0x08d8, 0x08e8, 0x08fc, - 0x090e, 0x0916, 0x0926, 0x0936, 0x0942, 0x094c, 0x0958, 0x096a, - 0x0978, 0x0986, 0x0996, 0x09a2, 0x09b0, 0x09bc, 0x09ca, 0x09de, - 0x09e8, 0x09fa, 0x0a06, 0x0a10, 0x0a20, 0x0a34, 0x0a44, 0x0a58, - 0x0a60, 0x0a6e, 0x0a78, 0x0a8e, 0x0a9c, 0x0aac, 0x0ab6, 0x0abe, - 0x0ac8, 0x0ad4, 0x0ae2, 0x0af0, 0x0af8, 0x0b04, 0x0b0e, 0x0b1c, - 0x0b2e, 0x0b2e, 0x0b3e, 0x0b46, 0x0b4e, 0x0b60, 0x0b60, 0x0b70, - // Entry C0 - FF - 0x0b70, 0x0b8a, 0x0ba4, 0x0bb0, 0x0bc2, 0x0bce, 0x0bce, 0x0bdc, - 0x0bdc, 0x0bdc, 0x0bec, 0x0bec, 0x0bec, 0x0bf2, 0x0bf2, 0x0c06, - 0x0c06, 0x0c10, 0x0c1e, 0x0c2e, 0x0c2e, 0x0c36, 0x0c36, 0x0c36, - 0x0c36, 0x0c3e, 0x0c48, 0x0c48, 0x0c50, 0x0c50, 0x0c50, 0x0c6d, - 0x0c7b, 0x0c85, 0x0c8d, 0x0c8d, 0x0c8d, 0x0c99, 0x0c99, 0x0c99, - 0x0ca1, 0x0ca1, 0x0ca9, 0x0ca9, 0x0cbb, 0x0ccb, 0x0ccb, 0x0cd9, - 0x0cd9, 0x0ce1, 0x0cf1, 0x0cf1, 0x0cfb, 0x0cfb, 0x0d0d, 0x0d15, - 0x0d1f, 0x0d2d, 0x0d37, 0x0d3f, 0x0d4d, 0x0d5f, 0x0d75, 0x0d81, - // Entry 100 - 13F - 0x0d91, 0x0db2, 0x0dc0, 0x0dc0, 0x0dde, 0x0e14, 0x0e24, 0x0e30, - 0x0e42, 0x0e4c, 0x0e60, 0x0e6c, 0x0e7e, 0x0e88, 0x0e92, 0x0e9c, - 0x0ebf, 0x0ebf, 0x0ec9, 0x0ee7, 0x0ef8, 0x0f00, 0x0f0c, 0x0f14, - 0x0f20, 0x0f20, 0x0f3c, 0x0f48, 0x0f5a, 0x0f76, 0x0f76, 0x0f82, - 0x0f82, 0x0f8a, 0x0f9e, 0x0f9e, 0x0fa4, 0x0fc7, 0x0fe5, 0x1001, - 0x1001, 0x1021, 0x1041, 0x1051, 0x1055, 0x1061, 0x1061, 0x1069, - 0x1073, 0x1073, 0x107b, 0x108f, 0x108f, 0x10b6, 0x10ce, 0x10ce, - 0x10d8, 0x10ea, 0x10f6, 0x1100, 0x1114, 0x1139, 0x1139, 0x1139, - // Entry 140 - 17F - 0x1141, 0x1153, 0x115d, 0x115d, 0x116d, 0x116d, 0x1187, 0x1197, - 0x11a5, 0x11ca, 0x11ca, 0x11d2, 0x11e0, 0x11ec, 0x11f6, 0x1204, - 0x1204, 0x1204, 0x1210, 0x121c, 0x1228, 0x1245, 0x125e, 0x125e, - 0x1277, 0x1283, 0x1293, 0x1297, 0x12a1, 0x12a9, 0x12bf, 0x12bf, - 0x12c7, 0x12d5, 0x12eb, 0x12eb, 0x12f3, 0x12f3, 0x12fb, 0x130d, - 0x1322, 0x1322, 0x1322, 0x132a, 0x1340, 0x1350, 0x1367, 0x1375, - 0x1387, 0x1391, 0x13b8, 0x13c0, 0x13c0, 0x13d0, 0x13da, 0x13e8, - 0x13f4, 0x1402, 0x1410, 0x141e, 0x142a, 0x1434, 0x143e, 0x1448, - // Entry 180 - 1BF - 0x145a, 0x145a, 0x145a, 0x145a, 0x1466, 0x1466, 0x1470, 0x1497, - 0x149f, 0x14b6, 0x14b6, 0x14c9, 0x14d7, 0x14e1, 0x14e7, 0x14ef, - 0x14f9, 0x14f9, 0x14f9, 0x1509, 0x1509, 0x1515, 0x1523, 0x1537, - 0x1547, 0x1557, 0x1557, 0x1561, 0x156d, 0x1577, 0x157f, 0x158f, - 0x15a5, 0x15ba, 0x15c2, 0x15ce, 0x15e4, 0x15f6, 0x160a, 0x1618, - 0x1620, 0x1620, 0x162e, 0x1643, 0x164f, 0x1661, 0x166f, 0x166f, - 0x166f, 0x1679, 0x1693, 0x1693, 0x16a3, 0x16ab, 0x16c3, 0x16cf, - 0x16d7, 0x16e7, 0x16e7, 0x16f3, 0x1703, 0x1713, 0x172f, 0x172f, - // Entry 1C0 - 1FF - 0x1735, 0x174c, 0x1754, 0x1775, 0x1783, 0x1791, 0x1799, 0x17a3, - 0x17ad, 0x17ca, 0x17e4, 0x17f2, 0x1802, 0x1818, 0x1828, 0x1828, - 0x1847, 0x1847, 0x1847, 0x1863, 0x1863, 0x1877, 0x1877, 0x1877, - 0x1889, 0x1895, 0x18b3, 0x18bb, 0x18bb, 0x18d1, 0x18df, 0x18f9, - 0x18f9, 0x18f9, 0x1903, 0x190f, 0x190f, 0x190f, 0x190f, 0x1921, - 0x1927, 0x1935, 0x193d, 0x1968, 0x1976, 0x1980, 0x198e, 0x198e, - 0x199c, 0x19a6, 0x19be, 0x19cc, 0x19cc, 0x19e4, 0x19e4, 0x19ec, - 0x19ec, 0x19fe, 0x1a19, 0x1a2d, 0x1a2d, 0x1a3d, 0x1a49, 0x1a49, - // Entry 200 - 23F - 0x1a55, 0x1a55, 0x1a55, 0x1a68, 0x1a79, 0x1a8c, 0x1a9f, 0x1aad, - 0x1abf, 0x1ad6, 0x1ae6, 0x1aee, 0x1aee, 0x1afa, 0x1b02, 0x1b12, - 0x1b22, 0x1b34, 0x1b44, 0x1b44, 0x1b44, 0x1b4e, 0x1b56, 0x1b62, - 0x1b6c, 0x1b76, 0x1b7c, 0x1b8a, 0x1b8a, 0x1b9e, 0x1bac, 0x1bac, - 0x1bba, 0x1bcd, 0x1bde, 0x1bde, 0x1bea, 0x1bea, 0x1bf8, 0x1bf8, - 0x1c06, 0x1c12, 0x1c20, 0x1c30, 0x1c61, 0x1c73, 0x1c85, 0x1c93, - 0x1cae, 0x1cb4, 0x1cb4, 0x1cb4, 0x1cb4, 0x1cb4, 0x1cc0, 0x1cc0, - 0x1cca, 0x1cdc, 0x1cea, 0x1cfa, 0x1d02, 0x1d12, 0x1d12, 0x1d22, - // Entry 240 - 27F - 0x1d22, 0x1d2a, 0x1d30, 0x1d3c, 0x1d4a, 0x1d54, 0x1d54, 0x1d66, - 0x1d78, 0x1d8c, 0x1d8c, 0x1d98, 0x1dd2, 0x1dda, 0x1e0c, 0x1e14, - 0x1e4a, 0x1e4a, 0x1e4a, 0x1e7a, 0x1e7a, 0x1e7a, 0x1eac, 0x1eef, - 0x1eef, 0x1eef, 0x1eef, 0x1eef, 0x1eef, 0x1eef, 0x1f0b, 0x1f1d, - 0x1f1d, 0x1f46, 0x1f58, 0x1f74, 0x1f86, 0x1fb3, 0x1fdc, -} // Size: 1254 bytes - -const srLatnLangStr string = "" + // Size: 4281 bytes - "afarskiabhaskiavestanskiafrikansakanskiamharskiaragonskiarapskiasamskiav" + - "arskiajmaraazerbejdžanskibaškirskibeloruskibugarskibislamabambarabengals" + - "kitibetanskibretonskibosanskikatalonskičečenskičamorokorzikanskikričeški" + - "crkvenoslovenskičuvaškivelškidanskinemačkimaldivskidžongaevegrčkienglesk" + - "iesperantošpanskiestonskibaskijskipersijskifulafinskifidžijskifarskifran" + - "cuskizapadni frizijskiirskiškotski gelskigalicijskigvaranigudžaratimanks" + - "hausahebrejskihindihiri motuhrvatskihaićanskimađarskijermenskihererointe" + - "rlingvaindonežanskiinterlingveigbosečuanski jiinupikidoislandskiitalijan" + - "skiinuktitutskijapanskijavanskigruzijskikongokikujukvanjamakazaškigrenla" + - "ndskikmerskikanadakorejskikanurikašmirskikurdskikomikornvolskikirgiskila" + - "tinskiluksemburškigandalimburškilingalalaoskilitvanskiluba-katangaletons" + - "kimalgaškimaršalskimaorskimakedonskimalajalammongolskimaratimalajskimalt" + - "eškiburmanskinauruskiseverni ndebelenepalskindongaholandskinorveški nino" + - "rsknorveški bukmoljužni ndebelenavahonjandžaoksitanskiodžibveoromoodijao" + - "setinskipendžapskipalipoljskipaštunskiportugalskikečuaromanškirundirumun" + - "skiruskikinjaruandasanskritsardinskisindiseverni samisangosinhaleškislov" + - "ačkislovenačkisamoanskišonasomalskialbanskisrpskisvazisesotosundanskišve" + - "dskisvahilitamilskitelugutadžičkitajskitigrinjaturkmenskicvanatonganskit" + - "urskicongatatarskitahićanskiujgurskiukrajinskiurduuzbečkivendavijetnamsk" + - "ivolapikvalonskivolofkosajidišjorubadžuanškikineskizuluaceškiakoliadangm" + - "eadigejskiafrihiliagemainuakadijskialeutskijužnoaltajskistaroengleskiang" + - "ikaaramejskimapučearapahoaravačkiasuasturijskiavadibelučkibalijskibasabe" + - "džabembabenazapadni belučkibodžpuribikolbinisisikabrajbodoburjatskibugij" + - "skiblinskikadokaripskiatsamsebuanskičigačipčačagatajčučkimaričinučkičokt" + - "avskičipevjanskičerokičejenskicentralni kurdskikoptskikrimskotatarskisej" + - "šelski kreolski francuskikašupskidakotadarginskitaitadelaverskislejvido" + - "gripskidinkazarmadogridonji lužičkosrpskidualasrednjeholandskidžola fonj" + - "iđuladazagaembuefičkistaroegipatskiekadžukelamitskisrednjeengleskievondo" + - "fangfilipinskifonkajunski francuskisrednjefrancuskistarofrancuskiseverno" + - "frizijskiistočnofrizijskifriulskigagagauzgajogbajageezgilbertskisrednji " + - "visokonemačkistaronemačkigondigorontalogotskigrebostarogrčkinemački (Šva" + - "jcarska)gusigvičinskihaidahavajskihiligajnonskihetitskihmonškigornji luž" + - "ičkosrpskihupaibanskiibibioilokoinguškiložbanngombamačamejudeo-persijski" + - "judeo-arapskikara-kalpaškikabilekačinskidžukambakavikabardijskitjapmakon" + - "dezelenortskikorokasikotaneškikojra čiinikakokalendžinskikimbundukomi-pe" + - "rmskikonkanikosrenskikpelekaračajsko-balkarskikriokarelskikurukšambalaba" + - "fijakelnskikumičkikutenajladinolangilandalambalezginskilakotamongoluizij" + - "anski kreolskiloziseverni luriluba-lulualuisenjolundaluomizolujiamadursk" + - "imagahimaitilimakasarskimandingomasajskimokšamandarmendemerumorisjensred" + - "njeirskimakuva-mitometamikmakminangkabaumandžurskimanipurskimohočkimosim" + - "undangViše jezikakriškimirandskimarvarierzjamazanderanskinapuljskinamani" + - "skonemačkinevariniasniuejskikvasiongiembunnogajskistaronordijskinkosever" + - "ni sotonuerklasični nevarskinjamvezinjankolenjoronzimaosageosmanski turs" + - "kipangasinanskipahlavipampangapapijamentopalauskinigerijski pidžinstarop" + - "ersijskifeničanskiponpejskipruskistarooksitanskikičeradžastanskirapanuir" + - "arotonganskiromboromskicincarskiruasandavesahasamarijanski aramejskisamb" + - "urusasaksantalingambajsangusicilijanskiškotskijužnokurdskisenaselkupskik" + - "ojraboro senistaroirskitašelhitšanskisidamojužni samilule samiinari sami" + - "skolt samisoninkesogdijskisranan tongosererskisahosukumasususumerskikomo" + - "rskisirijačkisirijskitimnetesoterenotetumtigretivtokelauklingonskitlingi" + - "ttamašeknjasa tongatok pisintarokocimšiantumbukatuvalutasavaktuvinskicen" + - "tralnoatlaski tamazigtudmurtskiugaritskiumbundunepoznat jezikvaivodskivu" + - "ndžovalserskivolajtavarajskivašovarlpirikalmičkisogajaojapskijangbenjemb" + - "akantonskizapotečkiblisimbolizenagastandardni marokanski tamazigtzunibez" + - " lingvističkog sadržajazazasavremeni standardni arapskišvajcarski visoki" + - " nemačkiengleski (Velika Britanija)engleski (Sjedinjene Američke Države)" + - "niskosaksonskiflamanskiportugalski (Portugal)moldavskisrpskohrvatskikisv" + - "ahilipojednostavljeni kineskitradicionalni kineski" - -var srLatnLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0007, 0x000e, 0x0018, 0x0020, 0x0027, 0x002f, 0x0038, - 0x003f, 0x0046, 0x004d, 0x0053, 0x0062, 0x006c, 0x0075, 0x007d, - 0x0084, 0x008b, 0x0094, 0x009e, 0x00a7, 0x00af, 0x00b9, 0x00c3, - 0x00ca, 0x00d5, 0x00d8, 0x00df, 0x00ef, 0x00f8, 0x00ff, 0x0105, - 0x010d, 0x0116, 0x011d, 0x0120, 0x0126, 0x012e, 0x0137, 0x013f, - 0x0147, 0x0150, 0x0159, 0x015d, 0x0163, 0x016d, 0x0173, 0x017c, - 0x018d, 0x0192, 0x01a1, 0x01ab, 0x01b2, 0x01bc, 0x01c1, 0x01c6, - 0x01cf, 0x01d4, 0x01dd, 0x01e5, 0x01ef, 0x01f8, 0x0201, 0x0207, - // Entry 40 - 7F - 0x0212, 0x021f, 0x022a, 0x022e, 0x023b, 0x0241, 0x0244, 0x024d, - 0x0258, 0x0264, 0x026c, 0x0274, 0x027d, 0x0282, 0x0288, 0x0290, - 0x0298, 0x02a3, 0x02aa, 0x02b0, 0x02b8, 0x02be, 0x02c8, 0x02cf, - 0x02d3, 0x02dd, 0x02e5, 0x02ed, 0x02fa, 0x02ff, 0x0309, 0x0310, - 0x0316, 0x031f, 0x032b, 0x0333, 0x033c, 0x0346, 0x034d, 0x0357, - 0x0360, 0x0369, 0x036f, 0x0377, 0x0380, 0x0389, 0x0391, 0x03a0, - 0x03a8, 0x03ae, 0x03b7, 0x03c8, 0x03d8, 0x03e6, 0x03ec, 0x03f4, - 0x03fe, 0x0406, 0x040b, 0x0410, 0x0419, 0x0424, 0x0428, 0x042f, - // Entry 80 - BF - 0x0439, 0x0444, 0x044a, 0x0451, 0x0458, 0x0460, 0x0465, 0x0470, - 0x0478, 0x0481, 0x0486, 0x0492, 0x0497, 0x04a2, 0x04ab, 0x04b6, - 0x04bf, 0x04c4, 0x04cc, 0x04d4, 0x04da, 0x04df, 0x04e5, 0x04ee, - 0x04f6, 0x04fd, 0x0505, 0x050b, 0x0515, 0x051b, 0x0523, 0x052d, - 0x0532, 0x053b, 0x0541, 0x0546, 0x054e, 0x0559, 0x0561, 0x056b, - 0x056f, 0x0577, 0x057c, 0x0587, 0x058e, 0x0596, 0x059b, 0x059f, - 0x05a5, 0x05ab, 0x05b5, 0x05bc, 0x05c0, 0x05c7, 0x05cc, 0x05d3, - 0x05dc, 0x05dc, 0x05e4, 0x05e8, 0x05ec, 0x05f5, 0x05f5, 0x05fd, - // Entry C0 - FF - 0x05fd, 0x060b, 0x0618, 0x061e, 0x0627, 0x062e, 0x062e, 0x0635, - 0x0635, 0x0635, 0x063e, 0x063e, 0x063e, 0x0641, 0x0641, 0x064b, - 0x064b, 0x0650, 0x0658, 0x0660, 0x0660, 0x0664, 0x0664, 0x0664, - 0x0664, 0x066a, 0x066f, 0x066f, 0x0673, 0x0673, 0x0673, 0x0683, - 0x068c, 0x0691, 0x0695, 0x0695, 0x0695, 0x069b, 0x069b, 0x069b, - 0x069f, 0x069f, 0x06a3, 0x06a3, 0x06ac, 0x06b4, 0x06b4, 0x06bb, - 0x06bb, 0x06bf, 0x06c7, 0x06c7, 0x06cc, 0x06cc, 0x06d5, 0x06da, - 0x06e1, 0x06e9, 0x06f0, 0x06f4, 0x06fd, 0x0707, 0x0713, 0x071a, - // Entry 100 - 13F - 0x0723, 0x0734, 0x073b, 0x073b, 0x074a, 0x0767, 0x0770, 0x0776, - 0x077f, 0x0784, 0x078e, 0x0794, 0x079d, 0x07a2, 0x07a7, 0x07ac, - 0x07c1, 0x07c1, 0x07c6, 0x07d6, 0x07e2, 0x07e7, 0x07ed, 0x07f1, - 0x07f8, 0x07f8, 0x0806, 0x080e, 0x0817, 0x0826, 0x0826, 0x082c, - 0x082c, 0x0830, 0x083a, 0x083a, 0x083d, 0x084f, 0x085f, 0x086d, - 0x086d, 0x087d, 0x088e, 0x0896, 0x0898, 0x089e, 0x089e, 0x08a2, - 0x08a7, 0x08a7, 0x08ab, 0x08b5, 0x08b5, 0x08cb, 0x08d8, 0x08d8, - 0x08dd, 0x08e6, 0x08ec, 0x08f1, 0x08fc, 0x0912, 0x0912, 0x0912, - // Entry 140 - 17F - 0x0916, 0x0920, 0x0925, 0x0925, 0x092d, 0x092d, 0x093a, 0x0942, - 0x094a, 0x0960, 0x0960, 0x0964, 0x096b, 0x0971, 0x0976, 0x097e, - 0x097e, 0x097e, 0x0985, 0x098b, 0x0992, 0x09a1, 0x09ae, 0x09ae, - 0x09bc, 0x09c2, 0x09cb, 0x09cf, 0x09d4, 0x09d8, 0x09e3, 0x09e3, - 0x09e7, 0x09ee, 0x09f9, 0x09f9, 0x09fd, 0x09fd, 0x0a01, 0x0a0b, - 0x0a17, 0x0a17, 0x0a17, 0x0a1b, 0x0a28, 0x0a30, 0x0a3c, 0x0a43, - 0x0a4c, 0x0a51, 0x0a66, 0x0a6a, 0x0a6a, 0x0a72, 0x0a77, 0x0a7f, - 0x0a85, 0x0a8c, 0x0a94, 0x0a9b, 0x0aa1, 0x0aa6, 0x0aab, 0x0ab0, - // Entry 180 - 1BF - 0x0ab9, 0x0ab9, 0x0ab9, 0x0ab9, 0x0abf, 0x0abf, 0x0ac4, 0x0ad8, - 0x0adc, 0x0ae8, 0x0ae8, 0x0af2, 0x0afa, 0x0aff, 0x0b02, 0x0b06, - 0x0b0b, 0x0b0b, 0x0b0b, 0x0b13, 0x0b13, 0x0b19, 0x0b20, 0x0b2a, - 0x0b32, 0x0b3a, 0x0b3a, 0x0b40, 0x0b46, 0x0b4b, 0x0b4f, 0x0b57, - 0x0b63, 0x0b6e, 0x0b72, 0x0b78, 0x0b83, 0x0b8e, 0x0b98, 0x0ba0, - 0x0ba4, 0x0ba4, 0x0bab, 0x0bb7, 0x0bbe, 0x0bc7, 0x0bce, 0x0bce, - 0x0bce, 0x0bd3, 0x0be0, 0x0be0, 0x0be9, 0x0bed, 0x0bfa, 0x0c00, - 0x0c04, 0x0c0c, 0x0c0c, 0x0c12, 0x0c1a, 0x0c22, 0x0c30, 0x0c30, - // Entry 1C0 - 1FF - 0x0c33, 0x0c3f, 0x0c43, 0x0c55, 0x0c5d, 0x0c65, 0x0c6a, 0x0c6f, - 0x0c74, 0x0c83, 0x0c90, 0x0c97, 0x0c9f, 0x0caa, 0x0cb2, 0x0cb2, - 0x0cc4, 0x0cc4, 0x0cc4, 0x0cd2, 0x0cd2, 0x0cdd, 0x0cdd, 0x0cdd, - 0x0ce6, 0x0cec, 0x0cfb, 0x0d00, 0x0d00, 0x0d0d, 0x0d14, 0x0d21, - 0x0d21, 0x0d21, 0x0d26, 0x0d2c, 0x0d2c, 0x0d2c, 0x0d2c, 0x0d35, - 0x0d38, 0x0d3f, 0x0d43, 0x0d59, 0x0d60, 0x0d65, 0x0d6c, 0x0d6c, - 0x0d73, 0x0d78, 0x0d84, 0x0d8c, 0x0d8c, 0x0d99, 0x0d99, 0x0d9d, - 0x0d9d, 0x0da6, 0x0db4, 0x0dbe, 0x0dbe, 0x0dc7, 0x0dce, 0x0dce, - // Entry 200 - 23F - 0x0dd4, 0x0dd4, 0x0dd4, 0x0ddf, 0x0de8, 0x0df2, 0x0dfc, 0x0e03, - 0x0e0c, 0x0e18, 0x0e20, 0x0e24, 0x0e24, 0x0e2a, 0x0e2e, 0x0e36, - 0x0e3e, 0x0e48, 0x0e50, 0x0e50, 0x0e50, 0x0e55, 0x0e59, 0x0e5f, - 0x0e64, 0x0e69, 0x0e6c, 0x0e73, 0x0e73, 0x0e7d, 0x0e84, 0x0e84, - 0x0e8c, 0x0e97, 0x0ea0, 0x0ea0, 0x0ea6, 0x0ea6, 0x0eae, 0x0eae, - 0x0eb5, 0x0ebb, 0x0ec2, 0x0eca, 0x0ee3, 0x0eec, 0x0ef5, 0x0efc, - 0x0f0a, 0x0f0d, 0x0f0d, 0x0f0d, 0x0f0d, 0x0f0d, 0x0f13, 0x0f13, - 0x0f1a, 0x0f23, 0x0f2a, 0x0f32, 0x0f37, 0x0f3f, 0x0f3f, 0x0f48, - // Entry 240 - 27F - 0x0f48, 0x0f4c, 0x0f4f, 0x0f55, 0x0f5c, 0x0f61, 0x0f61, 0x0f6a, - 0x0f74, 0x0f7e, 0x0f7e, 0x0f84, 0x0fa2, 0x0fa6, 0x0fc2, 0x0fc6, - 0x0fe2, 0x0fe2, 0x0fe2, 0x0ffd, 0x0ffd, 0x0ffd, 0x1018, 0x103f, - 0x103f, 0x103f, 0x103f, 0x103f, 0x103f, 0x103f, 0x104d, 0x1056, - 0x1056, 0x106c, 0x1075, 0x1083, 0x108c, 0x10a4, 0x10b9, -} // Size: 1254 bytes - -const svLangStr string = "" + // Size: 5493 bytes - "afarabchaziskaavestiskaafrikaansakanamhariskaaragonesiskaarabiskaassames" + - "iskaavariskaaymaraazerbajdzjanskabasjkiriskavitryskabulgariskabislamabam" + - "barabengalitibetanskabretonskabosniskakatalanskatjetjenskachamorrokorsik" + - "anskacreetjeckiskakyrkslaviskatjuvasjiskawalesiskadanskatyskadivehidzong" + - "khaewegrekiskaengelskaesperantospanskaestniskabaskiskapersiskafulanifins" + - "kafijianskafäröiskafranskavästfrisiskairiskaskotsk gäliskagaliciskaguara" + - "nígujaratimanxhausahebreiskahindihirimotukroatiskahaitiskaungerskaarmeni" + - "skahererointerlinguaindonesiskainterlingueigboszezuan iinupiakidoisländs" + - "kaitalienskainuktitutjapanskajavanesiskageorgiskakikongokikuyukuanyamaka" + - "zakiskagrönländskakambodjanskakannadakoreanskakanurikashmiriskakurdiskak" + - "omekorniskakirgisiskalatinluxemburgiskalugandalimburgiskalingalalaotiska" + - "litauiskaluba-katangalettiskamalagassiskamarshalliskamaorimakedonskamala" + - "yalammongoliskamarathimalajiskamaltesiskaburmesiskanauriskanordndebelene" + - "palesiskandonganederländskanynorskanorskt bokmålsydndebelenavahonyanjaoc" + - "citanskaodjibwaoromooriyaossetiskapunjabipalipolskaafghanskaportugisiska" + - "quechuarätoromanskarundirumänskaryskakinjarwandasanskritsardinskasindhin" + - "ordsamiskasangosingalesiskaslovakiskaslovenskasamoanskashonasomaliskaalb" + - "anskaserbiskaswatisydsothosundanesiskasvenskaswahilitamiltelugutadzjikis" + - "kathailändskatigrinjaturkmeniskatswanatonganskaturkiskatsongatatariskata" + - "hitiskauiguriskaukrainskaurduuzbekiskavendavietnamesiskavolapükvallonska" + - "wolofxhosajiddischyorubazhuangkinesiskazuluacehnesiskaacholiadangmeadyge" + - "iskatunisisk arabiskaafrihiliaghemainuakkadiskaAlabama-muskogeealeutiska" + - "gegiskasydaltaiskafornengelskaangikaarameiskamapudungunaraoniskaarapahoa" + - "lgerisk arabiskaarawakiskamarockansk arabiskaegyptisk arabiskaasuamerika" + - "nskt teckenspråkasturiskakotavaawadhibaluchiskabalinesiskabayerskabasaba" + - "munskabatak-tobaghomalabejabembabetawiskabenabafutbagadavästbaluchiskabh" + - "ojpuribikolbinibanjariskabamekonsiksikabishnupriyabakhtiaribrajbrahuiska" + - "bodobakossiburjätiskabuginesiskabouloublinbagangtecaddokaribiskacayugaat" + - "samcebuanochigachibchachagataichuukesiskamariskachinookchoctawchipewyanc" + - "herokesiskacheyennesoranisk kurdiskakoptiskakapisnonkrimtatariskaseychel" + - "lisk kreolkasjubiskadakotadarginskataitadelawareslavejdogribdinkazarmado" + - "grilågsorbiskacentraldusundualamedelnederländskajola-fonyidyuladazagaemb" + - "uefikemiliskafornegyptiskaekajukelamitiskamedelengelskacentralalaskisk j" + - "upiskaewondoextremaduriskafangfilippinskameänkielifonspråketcajun-fransk" + - "amedelfranskafornfranskafrankoprovensalskanordfrisiskaöstfrisiskafriulia" + - "nskagãgagauziskagangayogbayazoroastrisk darietiopiskagilbertiskagilakime" + - "delhögtyskafornhögtyskaGoa-konkanigondigorontalogotiskagreboforngrekiska" + - "schweizertyskawayuufarefaregusiigwichinhaidahakkahawaiiskaFiji-hindihili" + - "gaynonhettitiskahmongspråkhögsorbiskaxianghupaibanskaibibioilokoingusjis" + - "kaingriskajamaikansk engelsk kreollojbanngombakimashamijudisk persiskaju" + - "disk arabiskajylländskakarakalpakiskakabyliskakachinjjukambakawikabardin" + - "skakanembutyapmakondekapverdiskakenjangkorokaingangkhasikhotanesiskaTimb" + - "uktu-songhoykhowarkirmanjkimkakokalenjinkimbundukomi-permjakiskakonkanik" + - "osreanskakpellekarachay-balkarkriokinaray-akarelskakurukhkisambaabafiakö" + - "lniskakumykiskakutenajladinolangilahndalambalezghienlingua franca novali" + - "guriskalivoniskalakotalombardiskamongolouisiana-kreollozinordlurilettgal" + - "liskaluba-lulualuiseñolundaluolushailuhyalitterär kineiskalaziskamadures" + - "iskamafamagahimaithilimakasarmandemassajiskamabamoksjamandarmendemerumau" + - "ritansk kreolmedeliriskamakhuwa-meettometa’mi’kmaqminangkabaumanchuriska" + - "manipurimohawkmossivästmariskamundangflera språkmuskogeemirandesiskamarw" + - "arimentawaimyeneerjyamazanderanimin nannapolitanskanamalågtyskanewariska" + - "niasniueanskaao-nagakwasiobamileké-ngiemboonnogaifornnordiskanovialn-kån" + - "ordsothonuerklassisk newariskanyamwezinyankolenyoronzimaosageottomanskap" + - "angasinanmedelpersiskapampangapapiamentopalaupikardiskaNigeria-pidginPen" + - "nsylvaniatyskamennonitisk lågtyskafornpersiskaPfalz-tyskafeniciskapiemon" + - "tesiskapontiskapohnpeiskafornpreussiskafornprovensalskaquichéChimborazo-" + - "höglandskichwarajasthanirapanuirarotonganskaromagnolriffianskaromboroman" + - "irotumänskarusynrovianskaarumänskarwasandawejakutiskasamaritanskasamburu" + - "sasaksantalisaurashtrangambaysangusicilianskaskotskasassaresisk sardiska" + - "sydkurdiskasenecasenaseriselkupGao-songhayforniriskasamogitiskatachelhit" + - "shanTchad-arabiskasidamolågsilesiskaselayarsydsamiskalulesamiskaenaresam" + - "iskaskoltsamiskasoninkesogdiskasranan tongoserersahosaterfrisiskasukumas" + - "ususumeriskashimaoréklassisk syriskasyriskasilesiskatulutemnetesoterenot" + - "etumtigrétivitokelauiskatsakhurklingonskatlingittalyshtamasheknyasatonga" + - "nskatok pisinturoyotarokotsakodiskatsimshianmuslimsk tatariskatumbukatuv" + - "aluanskatasawaqtuviniskacentralmarockansk tamazightudmurtiskaugaritiskau" + - "mbunduobestämt språkvajvenetianskavepsvästflamländskaMain-frankiskavotis" + - "kavõruvunjowalsertyskawalamowaraywashowarlpiriwukalmuckiskamingrelianska" + - "lusogakiyaojapetiskayangbenbamileké-jembanheengatukantonesiskazapotekbli" + - "ssymbolerzeeländskazenagamarockansk standard-tamazightzuniinget språklig" + - "t innehållzazaiskamodern standardarabiskaösterrikisk tyskaschweizisk hög" + - "tyskaaustralisk engelskakanadensisk engelskabrittisk engelskaamerikansk " + - "engelskalatinamerikansk spanskaeuropeisk spanskamexikansk spanskakanaden" + - "sisk franskaschweizisk franskalågsaxiskaflamländskabrasiliansk portugisi" + - "skaeuropeisk portugisiskamoldaviskaserbokroatiskaKongo-swahiliförenklad " + - "kinesiskatraditionell kinesiska" - -var svLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000e, 0x0017, 0x0020, 0x0024, 0x002d, 0x0039, - 0x0041, 0x004c, 0x0054, 0x005a, 0x0069, 0x0074, 0x007c, 0x0086, - 0x008d, 0x0094, 0x009b, 0x00a5, 0x00ae, 0x00b6, 0x00c0, 0x00ca, - 0x00d2, 0x00dd, 0x00e1, 0x00ea, 0x00f6, 0x0101, 0x010a, 0x0110, - 0x0115, 0x011b, 0x0123, 0x0126, 0x012e, 0x0136, 0x013f, 0x0146, - 0x014e, 0x0156, 0x015e, 0x0164, 0x016a, 0x0173, 0x017d, 0x0184, - 0x0191, 0x0197, 0x01a6, 0x01af, 0x01b7, 0x01bf, 0x01c3, 0x01c8, - 0x01d1, 0x01d6, 0x01de, 0x01e7, 0x01ef, 0x01f7, 0x0200, 0x0206, - // Entry 40 - 7F - 0x0211, 0x021c, 0x0227, 0x022b, 0x0234, 0x023b, 0x023e, 0x0248, - 0x0252, 0x025b, 0x0263, 0x026e, 0x0277, 0x027e, 0x0284, 0x028c, - 0x0295, 0x02a2, 0x02ae, 0x02b5, 0x02be, 0x02c4, 0x02cf, 0x02d7, - 0x02db, 0x02e3, 0x02ed, 0x02f2, 0x02ff, 0x0306, 0x0311, 0x0318, - 0x0320, 0x0329, 0x0335, 0x033d, 0x0349, 0x0355, 0x035a, 0x0364, - 0x036d, 0x0377, 0x037e, 0x0387, 0x0391, 0x039b, 0x03a3, 0x03ae, - 0x03b9, 0x03bf, 0x03cc, 0x03d4, 0x03e2, 0x03ec, 0x03f2, 0x03f8, - 0x0402, 0x0409, 0x040e, 0x0413, 0x041c, 0x0423, 0x0427, 0x042d, - // Entry 80 - BF - 0x0436, 0x0442, 0x0449, 0x0456, 0x045b, 0x0464, 0x0469, 0x0474, - 0x047c, 0x0485, 0x048b, 0x0496, 0x049b, 0x04a7, 0x04b1, 0x04ba, - 0x04c3, 0x04c8, 0x04d1, 0x04d9, 0x04e1, 0x04e6, 0x04ee, 0x04fa, - 0x0501, 0x0508, 0x050d, 0x0513, 0x051e, 0x052a, 0x0532, 0x053d, - 0x0543, 0x054c, 0x0554, 0x055a, 0x0563, 0x056c, 0x0575, 0x057e, - 0x0582, 0x058b, 0x0590, 0x059d, 0x05a5, 0x05ae, 0x05b3, 0x05b8, - 0x05c0, 0x05c6, 0x05cc, 0x05d5, 0x05d9, 0x05e4, 0x05ea, 0x05f1, - 0x05fa, 0x060b, 0x0613, 0x0618, 0x061c, 0x0625, 0x0635, 0x063e, - // Entry C0 - FF - 0x0645, 0x0650, 0x065c, 0x0662, 0x066b, 0x0675, 0x067e, 0x0685, - 0x0696, 0x0696, 0x06a0, 0x06b3, 0x06c4, 0x06c7, 0x06df, 0x06e8, - 0x06ee, 0x06f4, 0x06fe, 0x0709, 0x0711, 0x0715, 0x071d, 0x0727, - 0x072e, 0x0732, 0x0737, 0x0740, 0x0744, 0x0749, 0x074f, 0x075e, - 0x0766, 0x076b, 0x076f, 0x0779, 0x0780, 0x0787, 0x0792, 0x079b, - 0x079f, 0x07a8, 0x07ac, 0x07b3, 0x07be, 0x07c9, 0x07cf, 0x07d3, - 0x07db, 0x07e0, 0x07e9, 0x07ef, 0x07f4, 0x07f4, 0x07fb, 0x0800, - 0x0807, 0x080f, 0x081a, 0x0821, 0x0828, 0x082f, 0x0838, 0x0844, - // Entry 100 - 13F - 0x084c, 0x085d, 0x0865, 0x086d, 0x087a, 0x088b, 0x0895, 0x089b, - 0x08a4, 0x08a9, 0x08b1, 0x08b7, 0x08bd, 0x08c2, 0x08c7, 0x08cc, - 0x08d8, 0x08e4, 0x08e9, 0x08fb, 0x0905, 0x090a, 0x0910, 0x0914, - 0x0918, 0x0920, 0x092d, 0x0933, 0x093d, 0x094a, 0x0961, 0x0967, - 0x0975, 0x0979, 0x0984, 0x098e, 0x0999, 0x09a6, 0x09b2, 0x09bd, - 0x09cf, 0x09db, 0x09e7, 0x09f2, 0x09f5, 0x09ff, 0x0a02, 0x0a06, - 0x0a0b, 0x0a1b, 0x0a24, 0x0a2f, 0x0a35, 0x0a43, 0x0a50, 0x0a5b, - 0x0a60, 0x0a69, 0x0a70, 0x0a75, 0x0a81, 0x0a8f, 0x0a94, 0x0a9c, - // Entry 140 - 17F - 0x0aa1, 0x0aa8, 0x0aad, 0x0ab2, 0x0abb, 0x0ac5, 0x0acf, 0x0ad9, - 0x0ae4, 0x0af0, 0x0af5, 0x0af9, 0x0b00, 0x0b06, 0x0b0b, 0x0b15, - 0x0b1d, 0x0b35, 0x0b3b, 0x0b41, 0x0b4a, 0x0b59, 0x0b68, 0x0b73, - 0x0b81, 0x0b8a, 0x0b90, 0x0b93, 0x0b98, 0x0b9c, 0x0ba7, 0x0bae, - 0x0bb2, 0x0bb9, 0x0bc4, 0x0bcb, 0x0bcf, 0x0bd7, 0x0bdc, 0x0be8, - 0x0bf8, 0x0bfe, 0x0c07, 0x0c0c, 0x0c14, 0x0c1c, 0x0c2c, 0x0c33, - 0x0c3d, 0x0c43, 0x0c52, 0x0c56, 0x0c5f, 0x0c67, 0x0c6d, 0x0c75, - 0x0c7a, 0x0c83, 0x0c8c, 0x0c93, 0x0c99, 0x0c9e, 0x0ca4, 0x0ca9, - // Entry 180 - 1BF - 0x0cb1, 0x0cc3, 0x0ccc, 0x0cd5, 0x0cdb, 0x0ce6, 0x0ceb, 0x0cfa, - 0x0cfe, 0x0d06, 0x0d12, 0x0d1c, 0x0d24, 0x0d29, 0x0d2c, 0x0d32, - 0x0d37, 0x0d49, 0x0d50, 0x0d5b, 0x0d5f, 0x0d65, 0x0d6d, 0x0d74, - 0x0d79, 0x0d83, 0x0d87, 0x0d8d, 0x0d93, 0x0d98, 0x0d9c, 0x0dac, - 0x0db7, 0x0dc5, 0x0dcc, 0x0dd5, 0x0de0, 0x0deb, 0x0df3, 0x0df9, - 0x0dfe, 0x0e0a, 0x0e11, 0x0e1d, 0x0e25, 0x0e31, 0x0e38, 0x0e40, - 0x0e45, 0x0e4a, 0x0e55, 0x0e5c, 0x0e68, 0x0e6c, 0x0e75, 0x0e7e, - 0x0e82, 0x0e8b, 0x0e92, 0x0e98, 0x0eab, 0x0eb0, 0x0ebc, 0x0ec2, - // Entry 1C0 - 1FF - 0x0ec7, 0x0ed0, 0x0ed4, 0x0ee6, 0x0eee, 0x0ef6, 0x0efb, 0x0f00, - 0x0f05, 0x0f0f, 0x0f19, 0x0f26, 0x0f2e, 0x0f38, 0x0f3d, 0x0f47, - 0x0f55, 0x0f66, 0x0f7b, 0x0f87, 0x0f92, 0x0f9b, 0x0fa8, 0x0fb0, - 0x0fba, 0x0fc8, 0x0fd8, 0x0fdf, 0x0ff9, 0x1003, 0x100a, 0x1017, - 0x101f, 0x1029, 0x102e, 0x1034, 0x103f, 0x1044, 0x104d, 0x1057, - 0x105a, 0x1061, 0x106a, 0x1076, 0x107d, 0x1082, 0x1089, 0x1093, - 0x109a, 0x109f, 0x10aa, 0x10b1, 0x10c5, 0x10d0, 0x10d6, 0x10da, - 0x10de, 0x10e4, 0x10ef, 0x10f9, 0x1104, 0x110d, 0x1111, 0x111f, - // Entry 200 - 23F - 0x1125, 0x1132, 0x1139, 0x1143, 0x114e, 0x115a, 0x1166, 0x116d, - 0x1175, 0x1181, 0x1186, 0x118a, 0x1197, 0x119d, 0x11a1, 0x11aa, - 0x11b3, 0x11c3, 0x11ca, 0x11d3, 0x11d7, 0x11dc, 0x11e0, 0x11e6, - 0x11eb, 0x11f1, 0x11f5, 0x1200, 0x1207, 0x1211, 0x1218, 0x121e, - 0x1226, 0x1234, 0x123d, 0x1243, 0x1249, 0x1253, 0x125c, 0x126e, - 0x1275, 0x1280, 0x1287, 0x1290, 0x12ab, 0x12b5, 0x12bf, 0x12c6, - 0x12d6, 0x12d9, 0x12e4, 0x12e8, 0x12f9, 0x1307, 0x130e, 0x1313, - 0x1318, 0x1323, 0x1329, 0x132e, 0x1333, 0x133b, 0x133d, 0x1348, - // Entry 240 - 27F - 0x1355, 0x135b, 0x1360, 0x1369, 0x1370, 0x137f, 0x1388, 0x1394, - 0x139b, 0x13a7, 0x13b2, 0x13b8, 0x13d5, 0x13d9, 0x13f3, 0x13fb, - 0x1412, 0x1412, 0x1424, 0x1438, 0x144b, 0x145f, 0x1470, 0x1483, - 0x149a, 0x14ab, 0x14bc, 0x14bc, 0x14cf, 0x14e1, 0x14ec, 0x14f8, - 0x1510, 0x1526, 0x1530, 0x153e, 0x154b, 0x155f, 0x1575, -} // Size: 1254 bytes - -const swLangStr string = "" + // Size: 3963 bytes - "KiafarKiabkhaziKiafrikanaKiakaniKiamhariKiaragoniKiarabuKiassamKiavariKi" + - "aymaraKiazerbaijaniKibashkirKibelarusiKibulgariaKibislamaKibambaraKibeng" + - "aliKitibetiKibretoniKibosniaKikatalaniKichecheniaKichamorroKikosikaniKic" + - "hekiKislovakia cha ChurchKichuvashKiwelisiKidenmakiKijerumaniKidivehiKiz" + - "ongkhaKieweKigirikiKiingerezaKiesperantoKihispaniaKiestoniaKibasqueKiaje" + - "miKifulaKifiniKifijiKifaroeKifaransaKifrisia cha MagharibiKiayalandiKiga" + - "eli cha UskotiKigalisiKiguaraniKigujaratiKimanxKihausaKiebraniaKihindiKi" + - "kroeshiaKihaitiKihangariKiarmeniaKihereroKiintalinguaKiindonesiaKiigboSi" + - "chuan YiKiidoKiaisilandiKiitalianoKiinuktitutKijapaniKijavaKijojiaKikong" + - "oKikikuyuKikwanyamaKikazakhKikalaallisutKikambodiaKikannadaKikoreaKikanu" + - "riKikashmiriKikurdiKikomiKikorniKikyrgyzKilatiniKilasembagiKigandaLimbur" + - "gishKilingalaKilaosiKilithuaniaKiluba-KatangaKilatviaKimalagasiKimashale" + - "KimaoriKimacedoniaKimalayalamKimongoliaKimarathiKimaleiKimaltaKiburmaKin" + - "auruKindebele cha KaskaziniKinepaliKindongaKiholanziKinorwe cha NynorskK" + - "inorwe cha BokmalKindebeleKinavajoKinyanjaKiokitaniKioromoKioriyaKioseti" + - "aKipunjabiKipolandiKipashtoKirenoKiquechuaKiromanshiKirundiKiromaniaKiru" + - "siKinyarwandaKisanskritiKisardiniaKisindhiKisami cha KaskaziniKisangoKis" + - "inhalaKislovakiaKisloveniaKisamoaKishonaKisomaliKialbaniaKiserbiaKiswati" + - "KisothoKisundaKiswidiKiswahiliKitamilKiteluguKitajikiKitailandiKitigriny" + - "aKiturukimeniKitswanaKitongaKiturukiKitsongaKitatariKitahitiKiuyghurKiuk" + - "raineKiurduKiuzbekiKivendaKivietinamuKivolapukWalloonLugha ya WolofKixho" + - "saKiyiddiKiyorubaKichinaKizuluKiacheniKiakoliKiadangmeKiadygheKiaghemKia" + - "inuKialeutKialtaiKiingereza cha KaleKiangikaKiaramuKimapucheKiarapahoKia" + - "rabu cha AlgeriaKiarabu cha MisriKiasuKiasturiaKiawadhiKibaliKibasaaKiba" + - "munKighomalaKibejaKibembaKibenaKibafutKibalochi cha MagharibiKibhojpuriK" + - "ibiniKikomKisiksikaKibodoLugha ya BugineseKibuluKiblinKimedumbaKichebuan" + - "oKichigaKichukisiKimariKichoktaoKicherokeeKicheyeniKikurdi cha SoraniKik" + - "huftiKrioli ya ShelisheliKidakotaKidaragwaKitaitaKidogribKizarmaKidolnos" + - "erbskiKidualaKijola-FonyiKijulaKidazagaKiembuKiefikKimisriKiekajukKiewon" + - "doKifilipinoKifonKifaransa cha KaleKifrisia cha KaskaziniKifrisia cha Ma" + - "sharikiKifriulianGaKigagauzKigbayaKige’ezKikiribatiKigorontaloKiyunaniKi" + - "jerumani cha UswisiKikisiiGwichʼinKihawaiKihiligaynonKihitiKihmongKisobi" + - "a cha Ukanda wa JuuHupaKiibanKiibibioKiilocanoKiingushLojbanKingombaKima" + - "chameKikabyliaKachinKijjuKikambaKikabardianKikanembuKityapKimakondeKikab" + - "uverdianuKikoroKikhasiKoyra ChiiniLugha ya KakoKikalenjinKimbunduKikomi-" + - "PermyakKikonkaniKikpelleKikarachay-BalkarKarjalaKurukhKisambaaKibafiaKic" + - "ologneKumykKiladinoKirangiLambaKilezighianKilakotaKimongoKiloziKiluri ch" + - "a KaskaziniKiluba-LuluaKilundaKijaluoKimizoKiluhyaKimaduraKimafaKimagahi" + - "KimaithiliKimakasarKimaasaiKimabaLugha ya MokshaKimendeKimeruKimoriseniK" + - "imakhuwa-MeettoKimetaMi’kmaqKiminangkabauKimanipuriLugha ya MohawkKimoor" + - "eKimundangLugha NyingiKikrikiKimirandiKierzyaKimazanderaniKinapoliKinama" + - "KisaksoniKinewariKiniasiKiniueaKikwasioLugha ya NgiemboonKinogaiN’KoKiso" + - "tho cha KaskaziniKinuerKinewari cha kaleKinyamweziKinyankoleKinyoroKinze" + - "maKipangasinanKipampangaKipapiamentoKipalauPijini ya NigeriaKiajemi cha " + - "KaleKiprussiaKʼicheʼKirapanuiKirarotongaKiromboKiaromaniaLugha ya RwaKis" + - "andaweKisakhaKiaramu cha WasamariaKisamburuKisantaliKingambayKisanguKisi" + - "ciliaKiskotiKikurdi cha KusiniKisenaKoyraboro SenniKitachelhitKishanKisa" + - "mi cha KusiniKisami cha LuleKisami cha InariKisami cha SkoltKisoninkeLug" + - "ha ya Sranan TongoKisahoKisukumaKisusuShikomorLugha ya SyriacKitemneKite" + - "soKitetumKitigreKiklingoniKitokpisinKitarokoKitumbukaKituvaluKitasawaqKi" + - "tuvaCentral Atlas TamazightUdmurtUmbunduLugha IsiyojulikanaKivaiKivunjoW" + - "alserKiwolayttaKiwarayKiwarlpiriKikalmykKisogaKiyaoKiyangbenKiyembaKikan" + - "toniKiberber Sanifu cha MorokoKizuniHakuna maudhui ya lughaKizazaKiarabu" + - " sanifuKiingereza (Canada)Kihispania (Mexico)Kifaransa (Canada)KiflemiKi" + - "serbia-kroeshiaKingwanaKichina (Kilichorahisishwa)Kichina cha Jadi" - -var swLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0006, 0x000f, 0x000f, 0x0019, 0x0020, 0x0028, 0x0031, - 0x0038, 0x003f, 0x0046, 0x004e, 0x005b, 0x0064, 0x006e, 0x0078, - 0x0081, 0x008a, 0x0093, 0x009b, 0x00a4, 0x00ac, 0x00b6, 0x00c1, - 0x00cb, 0x00d5, 0x00d5, 0x00dc, 0x00f1, 0x00fa, 0x0102, 0x010b, - 0x0115, 0x011d, 0x0126, 0x012b, 0x0133, 0x013d, 0x0148, 0x0152, - 0x015b, 0x0163, 0x016a, 0x0170, 0x0176, 0x017c, 0x0183, 0x018c, - 0x01a2, 0x01ac, 0x01be, 0x01c6, 0x01cf, 0x01d9, 0x01df, 0x01e6, - 0x01ef, 0x01f6, 0x01f6, 0x0200, 0x0207, 0x0210, 0x0219, 0x0221, - // Entry 40 - 7F - 0x022d, 0x0238, 0x0238, 0x023e, 0x0248, 0x0248, 0x024d, 0x0258, - 0x0262, 0x026d, 0x0275, 0x027b, 0x0282, 0x0289, 0x0291, 0x029b, - 0x02a3, 0x02b0, 0x02ba, 0x02c3, 0x02ca, 0x02d2, 0x02dc, 0x02e3, - 0x02e9, 0x02f0, 0x02f8, 0x0300, 0x030b, 0x0312, 0x031c, 0x0325, - 0x032c, 0x0337, 0x0345, 0x034d, 0x0357, 0x0360, 0x0367, 0x0372, - 0x037d, 0x0387, 0x0390, 0x0397, 0x039e, 0x03a5, 0x03ac, 0x03c3, - 0x03cb, 0x03d3, 0x03dc, 0x03ef, 0x0401, 0x040a, 0x0412, 0x041a, - 0x0423, 0x0423, 0x042a, 0x0431, 0x0439, 0x0442, 0x0442, 0x044b, - // Entry 80 - BF - 0x0453, 0x0459, 0x0462, 0x046c, 0x0473, 0x047c, 0x0482, 0x048d, - 0x0498, 0x04a2, 0x04aa, 0x04be, 0x04c5, 0x04ce, 0x04d8, 0x04e2, - 0x04e9, 0x04f0, 0x04f8, 0x0501, 0x0509, 0x0510, 0x0517, 0x051e, - 0x0525, 0x052e, 0x0535, 0x053d, 0x0545, 0x054f, 0x0559, 0x0565, - 0x056d, 0x0574, 0x057c, 0x0584, 0x058c, 0x0594, 0x059c, 0x05a5, - 0x05ab, 0x05b3, 0x05ba, 0x05c5, 0x05ce, 0x05d5, 0x05e3, 0x05ea, - 0x05f1, 0x05f9, 0x05f9, 0x0600, 0x0606, 0x060e, 0x0615, 0x061e, - 0x0626, 0x0626, 0x0626, 0x062d, 0x0633, 0x0633, 0x0633, 0x063a, - // Entry C0 - FF - 0x063a, 0x0641, 0x0654, 0x065c, 0x0663, 0x066c, 0x066c, 0x0675, - 0x0688, 0x0688, 0x0688, 0x0688, 0x0699, 0x069e, 0x069e, 0x06a7, - 0x06a7, 0x06af, 0x06af, 0x06b5, 0x06b5, 0x06bc, 0x06c3, 0x06c3, - 0x06cc, 0x06d2, 0x06d9, 0x06d9, 0x06df, 0x06e6, 0x06e6, 0x06fd, - 0x0707, 0x0707, 0x070d, 0x070d, 0x0712, 0x071b, 0x071b, 0x071b, - 0x071b, 0x071b, 0x0721, 0x0721, 0x0721, 0x0732, 0x0738, 0x073e, - 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0751, 0x0758, - 0x0758, 0x0758, 0x0761, 0x0767, 0x0767, 0x0770, 0x0770, 0x077a, - // Entry 100 - 13F - 0x0783, 0x0795, 0x079d, 0x079d, 0x079d, 0x07b1, 0x07b1, 0x07b9, - 0x07c2, 0x07c9, 0x07c9, 0x07c9, 0x07d1, 0x07d1, 0x07d8, 0x07d8, - 0x07e6, 0x07e6, 0x07ed, 0x07ed, 0x07f9, 0x07ff, 0x0807, 0x080d, - 0x0813, 0x0813, 0x081a, 0x0822, 0x0822, 0x0822, 0x0822, 0x082a, - 0x082a, 0x082a, 0x0834, 0x0834, 0x0839, 0x0839, 0x0839, 0x084b, - 0x084b, 0x0861, 0x0877, 0x0881, 0x0883, 0x088b, 0x088b, 0x088b, - 0x0892, 0x0892, 0x089b, 0x08a5, 0x08a5, 0x08a5, 0x08a5, 0x08a5, - 0x08a5, 0x08b0, 0x08b0, 0x08b0, 0x08b8, 0x08cd, 0x08cd, 0x08cd, - // Entry 140 - 17F - 0x08d4, 0x08dd, 0x08dd, 0x08dd, 0x08e4, 0x08e4, 0x08f0, 0x08f6, - 0x08fd, 0x0916, 0x0916, 0x091a, 0x0920, 0x0928, 0x0931, 0x0939, - 0x0939, 0x0939, 0x093f, 0x0947, 0x0950, 0x0950, 0x0950, 0x0950, - 0x0950, 0x0959, 0x095f, 0x0964, 0x096b, 0x096b, 0x0976, 0x097f, - 0x0985, 0x098e, 0x099c, 0x099c, 0x09a2, 0x09a2, 0x09a9, 0x09a9, - 0x09b5, 0x09b5, 0x09b5, 0x09c2, 0x09cc, 0x09d4, 0x09e2, 0x09eb, - 0x09eb, 0x09f3, 0x0a04, 0x0a04, 0x0a04, 0x0a0b, 0x0a11, 0x0a19, - 0x0a20, 0x0a29, 0x0a2e, 0x0a2e, 0x0a36, 0x0a3d, 0x0a3d, 0x0a42, - // Entry 180 - 1BF - 0x0a4d, 0x0a4d, 0x0a4d, 0x0a4d, 0x0a55, 0x0a55, 0x0a5c, 0x0a5c, - 0x0a62, 0x0a76, 0x0a76, 0x0a82, 0x0a82, 0x0a89, 0x0a90, 0x0a96, - 0x0a9d, 0x0a9d, 0x0a9d, 0x0aa5, 0x0aab, 0x0ab3, 0x0abd, 0x0ac6, - 0x0ac6, 0x0ace, 0x0ad4, 0x0ae3, 0x0ae3, 0x0aea, 0x0af0, 0x0afa, - 0x0afa, 0x0b0a, 0x0b10, 0x0b19, 0x0b26, 0x0b26, 0x0b30, 0x0b3f, - 0x0b46, 0x0b46, 0x0b4f, 0x0b5b, 0x0b62, 0x0b6b, 0x0b6b, 0x0b6b, - 0x0b6b, 0x0b72, 0x0b7f, 0x0b7f, 0x0b87, 0x0b8d, 0x0b96, 0x0b9e, - 0x0ba5, 0x0bac, 0x0bac, 0x0bb4, 0x0bc6, 0x0bcd, 0x0bcd, 0x0bcd, - // Entry 1C0 - 1FF - 0x0bd3, 0x0be8, 0x0bee, 0x0bff, 0x0c09, 0x0c13, 0x0c1a, 0x0c21, - 0x0c21, 0x0c21, 0x0c2d, 0x0c2d, 0x0c37, 0x0c43, 0x0c4a, 0x0c4a, - 0x0c5b, 0x0c5b, 0x0c5b, 0x0c6b, 0x0c6b, 0x0c6b, 0x0c6b, 0x0c6b, - 0x0c6b, 0x0c74, 0x0c74, 0x0c7d, 0x0c7d, 0x0c7d, 0x0c86, 0x0c91, - 0x0c91, 0x0c91, 0x0c98, 0x0c98, 0x0c98, 0x0c98, 0x0c98, 0x0ca2, - 0x0cae, 0x0cb7, 0x0cbe, 0x0cd3, 0x0cdc, 0x0cdc, 0x0ce5, 0x0ce5, - 0x0cee, 0x0cf5, 0x0cfe, 0x0d05, 0x0d05, 0x0d17, 0x0d17, 0x0d1d, - 0x0d1d, 0x0d1d, 0x0d2c, 0x0d2c, 0x0d2c, 0x0d37, 0x0d3d, 0x0d3d, - // Entry 200 - 23F - 0x0d3d, 0x0d3d, 0x0d3d, 0x0d4e, 0x0d5d, 0x0d6d, 0x0d7d, 0x0d86, - 0x0d86, 0x0d9b, 0x0d9b, 0x0da1, 0x0da1, 0x0da9, 0x0daf, 0x0daf, - 0x0db7, 0x0db7, 0x0dc6, 0x0dc6, 0x0dc6, 0x0dcd, 0x0dd3, 0x0dd3, - 0x0dda, 0x0de1, 0x0de1, 0x0de1, 0x0de1, 0x0deb, 0x0deb, 0x0deb, - 0x0deb, 0x0deb, 0x0df5, 0x0df5, 0x0dfd, 0x0dfd, 0x0dfd, 0x0dfd, - 0x0e06, 0x0e0e, 0x0e17, 0x0e1d, 0x0e34, 0x0e3a, 0x0e3a, 0x0e41, - 0x0e54, 0x0e59, 0x0e59, 0x0e59, 0x0e59, 0x0e59, 0x0e59, 0x0e59, - 0x0e60, 0x0e66, 0x0e70, 0x0e77, 0x0e77, 0x0e81, 0x0e81, 0x0e89, - // Entry 240 - 27F - 0x0e89, 0x0e8f, 0x0e94, 0x0e94, 0x0e9d, 0x0ea4, 0x0ea4, 0x0ead, - 0x0ead, 0x0ead, 0x0ead, 0x0ead, 0x0ec7, 0x0ecd, 0x0ee4, 0x0eea, - 0x0ef8, 0x0ef8, 0x0ef8, 0x0ef8, 0x0ef8, 0x0f0b, 0x0f0b, 0x0f0b, - 0x0f0b, 0x0f0b, 0x0f1e, 0x0f1e, 0x0f30, 0x0f30, 0x0f30, 0x0f37, - 0x0f37, 0x0f37, 0x0f37, 0x0f48, 0x0f50, 0x0f6b, 0x0f7b, -} // Size: 1254 bytes - -const taLangStr string = "" + // Size: 13092 bytes - "அஃபார்அப்காஜியான்அவெஸ்தான்ஆஃப்ரிகான்ஸ்அகான்அம்ஹாரிக்ஆர்கோனீஸ்அரபிக்அஸ்ஸா" + - "மீஸ்அவேரிக்அய்மராஅஸர்பைஜானிபஷ்கிர்பெலாருஷியன்பல்கேரியன்பிஸ்லாமாபம்பாரா" + - "வங்காளம்திபெத்தியன்பிரெட்டன்போஸ்னியன்கேட்டலான்செச்சென்சாமோரோகார்சிகன்க" + - "்ரீசெக்சர்ச் ஸ்லாவிக்சுவாஷ்வேல்ஷ்டேனிஷ்ஜெர்மன்திவேஹிபூடானிஈவ்கிரேக்கம்" + - "ஆங்கிலம்எஸ்பரேன்டோஸ்பானிஷ்எஸ்டோனியன்பாஸ்க்பெர்ஷியன்ஃபுலாஃபின்னிஷ்ஃபிஜி" + - "யன்ஃபரோயிஸ்பிரெஞ்சுமேற்கு ஃப்ரிஷியன்ஐரிஷ்ஸ்காட்ஸ் கேலிக்காலிஸியன்க்வார" + - "னிகுஜராத்திமேங்க்ஸ்ஹௌஸாஹீப்ரூஇந்திஹிரி மோட்டுகுரோஷியன்ஹைத்தியன் க்ரியோ" + - "லிஹங்கேரியன்ஆர்மேனியன்ஹெரேரோஇன்டர்லிங்வாஇந்தோனேஷியன்இன்டர்லிங்இக்போசிச" + - "ுவான் ஈஇனுபியாக்இடோஐஸ்லேண்டிக்இத்தாலியன்இனுகிடூட்ஜப்பானியம்ஜாவனீஸ்ஜார்" + - "ஜியன்காங்கோகிகுயூகுவான்யாமாகசாக்கலாலிசூட்கெமெர்கன்னடம்கொரியன்கனுரிகாஷ்" + - "மிரிகுர்திஷ்கொமிகார்னிஷ்கிர்கிஸ்லத்தின்லக்ஸம்போர்கிஷ்கான்டாலிம்பர்கிஷ்" + - "லிங்காலாலாவோலிதுவேனியன்லுபா-கடாங்காலாட்வியன்மலகாஸிமார்ஷெலீஸ்மௌரிமாஸிடோ" + - "னியன்மலையாளம்மங்கோலியன்மராத்திமலாய்மால்டிஸ்பர்மீஸ்நவ்ரூவடக்கு தெபெலேநே" + - "பாளிதோங்காடச்சுநார்வேஜியன் நியூநார்ஸ்க்நார்வேஜியன் பொக்மால்தெற்கு தெபெ" + - "லேநவாஜோநயன்ஜாஒக்கிடன்ஒஜிப்வாஒரோமோஒடியாஒசெட்டிக்பஞ்சாபிபாலிபோலிஷ்பஷ்தோப" + - "ோர்ச்சுக்கீஸ்க்வெச்சுவாரோமான்ஷ்ருண்டிரோமேனியன்ரஷியன்கின்யாருவான்டாசமஸ்" + - "கிருதம்சார்தீனியன்சிந்திவடக்கு சமிசாங்கோசிங்களம்ஸ்லோவாக்ஸ்லோவேனியன்சமோ" + - "வான்ஷோனாசோமாலிஅல்பேனியன்செர்பியன்ஸ்வாடீதெற்கு ஸோதோசுண்டானீஸ்ஸ்வீடிஷ்ஸ்" + - "வாஹிலிதமிழ்தெலுங்குதஜிக்தாய்டிக்ரின்யாதுருக்மென்ஸ்வானாடோங்கான்துருக்கி" + - "ஷ்ஸோங்காடாடர்தஹிதியன்உய்குர்உக்ரைனியன்உருதுஉஸ்பெக்வென்டாவியட்நாமீஸ்ஒலா" + - "பூக்ஒவாலூன்ஓலோஃப்ஹோசாயெட்டிஷ்யோருபாஜுவாங்சீனம்ஜுலுஆச்சினீஸ்அகோலிஅதாங்ம" + - "ேஅதகேதுனிசிய அரபுஅஃப்ரிஹிலிஅகெம்ஐனுஅக்கேதியன்அலூட்தெற்கு அல்தைபழைய ஆங்" + - "கிலம்அங்கிகாஅராமைக்மபுச்சேஅரபஹோஅராவாக்அசுஅஸ்துரியன்அவதிபலூச்சிபலினீஸ்ப" + - "ாஸாபேஜாபெம்பாபெனாபடகாமேற்கு பலோச்சிபோஜ்பூரிபிகோல்பினிசிக்சிகாபிஷ்ணுப்ப" + - "ிரியாப்ராஜ்போடோபுரியாத்புகினீஸ்ப்லின்கேடோகரீப்ஆட்சம்செபுவானோசிகாசிப்சா" + - "ஷகதைசூகிசேமாரிசினூக் ஜார்கான்சோக்தௌசிபெவ்யான்செரோகீசெயேனிமத்திய குர்தி" + - "ஷ்காப்டிக்கிரிமியன் துர்க்கிசெசெல்வா க்ரெயோல் பிரெஞ்சுகஷுபியன்டகோடாதார" + - "்குவாடைடாடெலாவர்ஸ்லாவ்டோக்ரிப்டின்காஸார்மாடோக்ரிலோயர் சோர்பியன்டுவாலாம" + - "ிடில் டச்சுஜோலா-ஃபோன்யிட்யூலாடசாகாஎம்புஎஃபிக்பண்டைய எகிப்தியன்ஈகாஜுக்எ" + - "லமைட்மிடில் ஆங்கிலம்எவோன்டோஃபேங்க்ஃபிலிபினோஃபான்கஜுன் பிரெஞ்சுமிடில் ப" + - "ிரெஞ்சுபழைய பிரெஞ்சுவடக்கு ஃப்ரிஸியான்கிழக்கு ஃப்ரிஸியான்ஃப்ரியூலியன்க" + - "ாகாகௌஸ்கன் சீனம்கயோபயாகீஜ்கில்பெர்டீஸ்மிடில் ஹை ஜெர்மன்பழைய ஹை ஜெர்மன்" + - "கோன்டிகோரோன்டலோகோதிக்க்ரேபோபண்டைய கிரேக்கம்ஸ்விஸ் ஜெர்மன்குஸிகுவிசின்ஹ" + - "ைடாஹக்கா சீனம்ஹவாயியன்ஃபிஜி இந்திஹிலிகாய்னான்ஹிட்டைட்மாங்க்அப்பர் சோர்" + - "பியான்சியாங்க் சீனம்ஹுபாஇபான்இபிபியோஇலோகோஇங்குஷ்லோஜ்பன்நகொம்பாமாசெம்ஜூ" + - "தேயோ-பெர்ஷியன்ஜூதேயோ-அராபிக்காரா-கல்பாக்கபாய்ல்காசின்ஜ்ஜூகம்பாகாவிகபார" + - "்டியன்தையாப்மகொண்டேகபுவெர்தியானுகோரோகாஸிகோதானீஸ்கொய்ரா சீனீககோகலின்ஜின" + - "்கிம்புன்துகொமி-பெர்ம்யாக்கொங்கணிகோஸ்ரைன்க்பெல்லேகராசே-பல்கார்கரேலியன்" + - "குருக்ஷம்பாலாபாஃபியாகொலோக்னியன்கும்இக்குடேனைலடினோலங்கிலஹன்டாலம்பாலெஜ்ஜ" + - "ியன்லகோடாமோங்கோலூசியானா க்ரயோல்லோசிவடக்கு லுரிலுபா-லுலுலாலுய்சேனோலூன்ட" + - "ாலுயோமிஸோலுயியாமதுரீஸ்மகாஹிமைதிலிமகாசார்மான்டிங்கோமாசாய்மோக்க்ஷாமான்டா" + - "ர்மென்டீமெருமொரிசியன்மிடில் ஐரிஷ்மகுவா-மீட்டோமேடாமிக்மாக்மின்னாங்கபௌமன" + - "்சூமணிப்புரிமொஹாக்மோஸ்ஸிமுன்டாங்பல மொழிகள்க்ரீக்மிரான்டீஸ்மார்வாரிஏர்ஜ" + - "ியாமசந்தேரனிமின் நான் சீனம்நியோபோலிடன்நாமாலோ ஜெர்மன்நெவாரிநியாஸ்நியூவா" + - "ன்க்வாசியோநெகெய்ம்பூன்நோகைபழைய நோர்ஸ்என்‘கோவடக்கு சோதோநியூர்பாரம்பரிய " + - "நேவாரிநியாம்வேஜிநியான்கோலேநியோரோநிஜ்மாஓசேஜ்ஓட்டோமான் துருக்கிஷ்பன்காசி" + - "னன்பாஹ்லவிபம்பாங்காபபியாமென்டோபலௌவன்நைஜீரியன் பிட்கின்பென்சில்வேனிய ஜெ" + - "ர்மன்பழைய பெர்ஷியன்ஃபொனிஷியன்ஃபோன்பெயென்பிரஷ்யன்பழைய ப்ரோவென்சால்கீசீர" + - "ாஜஸ்தானிரபனுய்ரரோடோங்கன்ரோம்போரோமானிஅரோமானியன்ருவாசான்டாவேசகாசமாரிடன் " + - "அராமைக்சம்புருசாசாக்சான்டாலிசௌராஷ்டிரம்நெகாம்பேசங்குசிசிலியன்ஸ்காட்ஸ்த" + - "ெற்கு குர்திஷ்செனாசெல்குப்கொய்ராபோரோ சென்னிபழைய ஐரிஷ்தசேஹித்ஷான்சிடாமோ" + - "தெற்கு சமிலுலே சமிஇனாரி சமிஸ்கோல்ட் சமிசோனின்கேசோக்தியன்ஸ்ரானன் டோங்கோ" + - "செரெர்சஹோசுகுமாசுசுசுமேரியன்கொமோரியன்பாரம்பரிய சிரியாக்சிரியாக்டிம்னேட" + - "ெசோடெரெனோடெடும்டைக்ரேடிவ்டோகேலௌக்ளிங்கோன்லிங்கிட்தமஷேக்நயாசா டோங்காடோக" + - "் பிஸின்தரோகோட்ஸிம்ஷியன்தும்புகாடுவாலுடசவாக்டுவினியன்மத்திய அட்லஸ் டமச" + - "ைட்உட்முர்ட்உகாரிடிக்அம்பொண்டுஅறியப்படாத மொழிவைவோட்க்வுன்ஜோவால்சேர்வோல" + - "ாய்ட்டாவாரேவாஷோவல்பிரிவூ சீனம்கல்மிக்சோகாயாவ்யாபேசேயாங்பென்யெம்பாகாண்ட" + - "ோனீஸ்ஜாபோடெக்ப்லிஸ்ஸிம்பால்ஸ்ஜெனகாஸ்டாண்டர்ட் மொராக்கன் தமாசைட்ஜூனிமொழ" + - "ி உள்ளடக்கம் ஏதுமில்லைஜாஜாநவீன நிலையான அரபிக்ஆஸ்திரிய ஜெர்மன்ஸ்விஸ் ஹை" + - " ஜெர்மன்ஆஸ்திரேலிய ஆங்கிலம்கனடிய ஆங்கிலம்பிரிட்டிஷ் ஆங்கிலம்அமெரிக்க ஆங்" + - "கிலம்லத்தின் அமெரிக்க ஸ்பானிஷ்ஐரோப்பிய ஸ்பானிஷ்மெக்ஸிகன் ஸ்பானிஷ்கனடிய" + - " பிரெஞ்சுஸ்விஸ் பிரஞ்சுலோ சாக்ஸன்ஃப்லெமிஷ்பிரேசிலிய போர்ச்சுகீஸ்ஐரோப்பிய" + - " போர்ச்சுகீஸ்மோல்டாவியன்செர்போ-குரோஷியன்காங்கோ ஸ்வாஹிலிஎளிதாக்கப்பட்ட சீ" + - "னம்பாரம்பரிய சீனம்" - -var taLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0012, 0x0033, 0x004e, 0x0072, 0x0081, 0x009c, 0x00b7, - 0x00c9, 0x00e4, 0x00f9, 0x010b, 0x0129, 0x013e, 0x015f, 0x017d, - 0x0195, 0x01aa, 0x01c2, 0x01e3, 0x01fe, 0x0219, 0x0234, 0x024c, - 0x025e, 0x0279, 0x0285, 0x0291, 0x02b9, 0x02cb, 0x02dd, 0x02ef, - 0x0304, 0x0316, 0x0328, 0x0331, 0x034c, 0x0364, 0x0382, 0x039a, - 0x03b8, 0x03ca, 0x03e5, 0x03f4, 0x040f, 0x0427, 0x043f, 0x0457, - 0x0488, 0x0497, 0x04c2, 0x04dd, 0x04f2, 0x050d, 0x0525, 0x0531, - 0x0543, 0x0552, 0x0571, 0x058c, 0x05c0, 0x05de, 0x05fc, 0x060e, - // Entry 40 - 7F - 0x0632, 0x0656, 0x0674, 0x0683, 0x069f, 0x06ba, 0x06c3, 0x06e4, - 0x0702, 0x071d, 0x073b, 0x0750, 0x076b, 0x077d, 0x078f, 0x07ad, - 0x07bc, 0x07d7, 0x07e9, 0x07fe, 0x0813, 0x0822, 0x083a, 0x0852, - 0x085e, 0x0876, 0x088e, 0x08a3, 0x08cd, 0x08df, 0x0900, 0x0918, - 0x0924, 0x0945, 0x0967, 0x0982, 0x0994, 0x09b2, 0x09be, 0x09df, - 0x09f7, 0x0a15, 0x0a2a, 0x0a39, 0x0a51, 0x0a66, 0x0a75, 0x0a9a, - 0x0aac, 0x0abe, 0x0acd, 0x0b13, 0x0b4d, 0x0b72, 0x0b81, 0x0b93, - 0x0bab, 0x0bc0, 0x0bcf, 0x0bde, 0x0bf9, 0x0c0e, 0x0c1a, 0x0c2c, - // Entry 80 - BF - 0x0c3b, 0x0c65, 0x0c83, 0x0c9b, 0x0cad, 0x0cc8, 0x0cda, 0x0d04, - 0x0d25, 0x0d46, 0x0d58, 0x0d74, 0x0d86, 0x0d9e, 0x0db6, 0x0dd7, - 0x0dec, 0x0df8, 0x0e0a, 0x0e28, 0x0e43, 0x0e55, 0x0e74, 0x0e92, - 0x0eaa, 0x0ec2, 0x0ed1, 0x0ee9, 0x0ef8, 0x0f04, 0x0f22, 0x0f40, - 0x0f52, 0x0f6a, 0x0f88, 0x0f9a, 0x0fa9, 0x0fc1, 0x0fd6, 0x0ff4, - 0x1003, 0x1018, 0x102a, 0x104b, 0x1060, 0x1075, 0x1087, 0x1093, - 0x10ab, 0x10bd, 0x10cf, 0x10de, 0x10ea, 0x1105, 0x1114, 0x1129, - 0x1135, 0x1157, 0x1175, 0x1184, 0x118d, 0x11ab, 0x11ab, 0x11ba, - // Entry C0 - FF - 0x11ba, 0x11dc, 0x1201, 0x1216, 0x122b, 0x1240, 0x1240, 0x124f, - 0x124f, 0x124f, 0x1264, 0x1264, 0x1264, 0x126d, 0x126d, 0x128b, - 0x128b, 0x1297, 0x12ac, 0x12c1, 0x12c1, 0x12cd, 0x12cd, 0x12cd, - 0x12cd, 0x12d9, 0x12eb, 0x12eb, 0x12f7, 0x12f7, 0x1303, 0x132b, - 0x1343, 0x1355, 0x1361, 0x1361, 0x1361, 0x1379, 0x13a3, 0x13a3, - 0x13b5, 0x13b5, 0x13c1, 0x13c1, 0x13d9, 0x13f1, 0x13f1, 0x1403, - 0x1403, 0x140f, 0x141e, 0x141e, 0x1430, 0x1430, 0x1448, 0x1454, - 0x1466, 0x1472, 0x1484, 0x1490, 0x14bb, 0x14cd, 0x14eb, 0x14fd, - // Entry 100 - 13F - 0x150f, 0x153a, 0x1552, 0x1552, 0x1586, 0x15d0, 0x15e8, 0x15f7, - 0x160f, 0x161b, 0x1630, 0x1642, 0x165a, 0x166c, 0x167e, 0x1690, - 0x16bb, 0x16bb, 0x16cd, 0x16ef, 0x1711, 0x1723, 0x1732, 0x1741, - 0x1753, 0x1753, 0x1784, 0x1799, 0x17ab, 0x17d6, 0x17d6, 0x17eb, - 0x17eb, 0x1800, 0x181b, 0x181b, 0x182a, 0x1852, 0x187d, 0x18a2, - 0x18a2, 0x18d6, 0x190d, 0x1931, 0x1937, 0x1949, 0x1962, 0x196b, - 0x1974, 0x1974, 0x1980, 0x19a4, 0x19a4, 0x19d3, 0x19fc, 0x19fc, - 0x1a0e, 0x1a29, 0x1a3b, 0x1a4d, 0x1a7b, 0x1aa3, 0x1aa3, 0x1aa3, - // Entry 140 - 17F - 0x1aaf, 0x1ac7, 0x1ad3, 0x1af2, 0x1b0a, 0x1b29, 0x1b4d, 0x1b65, - 0x1b77, 0x1ba8, 0x1bd0, 0x1bdc, 0x1beb, 0x1c00, 0x1c0f, 0x1c24, - 0x1c24, 0x1c24, 0x1c39, 0x1c4e, 0x1c60, 0x1c8e, 0x1cb6, 0x1cb6, - 0x1cd8, 0x1ced, 0x1cff, 0x1d0b, 0x1d1a, 0x1d26, 0x1d44, 0x1d44, - 0x1d56, 0x1d6b, 0x1d92, 0x1d92, 0x1d9e, 0x1d9e, 0x1daa, 0x1dc2, - 0x1de1, 0x1de1, 0x1de1, 0x1dea, 0x1e05, 0x1e23, 0x1e4e, 0x1e63, - 0x1e7b, 0x1e93, 0x1eb8, 0x1eb8, 0x1eb8, 0x1ed0, 0x1ee2, 0x1ef7, - 0x1f0c, 0x1f2d, 0x1f42, 0x1f54, 0x1f63, 0x1f72, 0x1f84, 0x1f93, - // Entry 180 - 1BF - 0x1fae, 0x1fae, 0x1fae, 0x1fae, 0x1fbd, 0x1fbd, 0x1fcf, 0x1ffd, - 0x2009, 0x2028, 0x2028, 0x2047, 0x205f, 0x2071, 0x207d, 0x2089, - 0x209b, 0x209b, 0x209b, 0x20b0, 0x20b0, 0x20bf, 0x20d1, 0x20e6, - 0x2104, 0x2116, 0x2116, 0x212e, 0x2146, 0x2158, 0x2164, 0x217f, - 0x21a1, 0x21c3, 0x21cf, 0x21e7, 0x2208, 0x2217, 0x2232, 0x2244, - 0x2256, 0x2256, 0x226e, 0x228a, 0x229c, 0x22ba, 0x22d2, 0x22d2, - 0x22d2, 0x22e7, 0x2302, 0x232b, 0x234c, 0x2358, 0x2374, 0x2386, - 0x2398, 0x23b0, 0x23b0, 0x23c8, 0x23ec, 0x23f8, 0x2417, 0x2417, - // Entry 1C0 - 1FF - 0x2429, 0x2448, 0x245a, 0x2488, 0x24a6, 0x24c4, 0x24d6, 0x24e8, - 0x24f7, 0x2531, 0x254f, 0x2564, 0x257f, 0x25a0, 0x25b2, 0x25b2, - 0x25e6, 0x2623, 0x2623, 0x264b, 0x264b, 0x2669, 0x2669, 0x2669, - 0x268a, 0x26a2, 0x26d3, 0x26df, 0x26df, 0x26fa, 0x270c, 0x272a, - 0x272a, 0x272a, 0x273c, 0x274e, 0x274e, 0x274e, 0x274e, 0x276c, - 0x2778, 0x2790, 0x2799, 0x27c7, 0x27dc, 0x27ee, 0x2806, 0x2827, - 0x283f, 0x284e, 0x2869, 0x2881, 0x2881, 0x28ac, 0x28ac, 0x28b8, - 0x28b8, 0x28d0, 0x2901, 0x291d, 0x291d, 0x2932, 0x293e, 0x293e, - // Entry 200 - 23F - 0x2950, 0x2950, 0x2950, 0x296c, 0x2982, 0x299b, 0x29bd, 0x29d5, - 0x29f0, 0x2a18, 0x2a2a, 0x2a33, 0x2a33, 0x2a45, 0x2a51, 0x2a6c, - 0x2a87, 0x2abb, 0x2ad3, 0x2ad3, 0x2ad3, 0x2ae5, 0x2af1, 0x2b03, - 0x2b15, 0x2b27, 0x2b33, 0x2b45, 0x2b45, 0x2b63, 0x2b7b, 0x2b7b, - 0x2b8d, 0x2baf, 0x2bce, 0x2bce, 0x2bdd, 0x2bdd, 0x2bfe, 0x2bfe, - 0x2c16, 0x2c28, 0x2c3a, 0x2c55, 0x2c8d, 0x2ca8, 0x2cc3, 0x2cde, - 0x2d09, 0x2d0f, 0x2d0f, 0x2d0f, 0x2d0f, 0x2d0f, 0x2d21, 0x2d21, - 0x2d33, 0x2d4b, 0x2d69, 0x2d75, 0x2d81, 0x2d96, 0x2dac, 0x2dc1, - // Entry 240 - 27F - 0x2dc1, 0x2dcd, 0x2dd9, 0x2deb, 0x2e03, 0x2e15, 0x2e15, 0x2e33, - 0x2e4b, 0x2e7b, 0x2e7b, 0x2e8a, 0x2edd, 0x2ee9, 0x2f30, 0x2f3c, - 0x2f71, 0x2f71, 0x2f9f, 0x2fce, 0x3005, 0x302d, 0x3064, 0x3095, - 0x30dc, 0x310d, 0x3141, 0x3141, 0x3169, 0x3191, 0x31ad, 0x31c8, - 0x3208, 0x3245, 0x3266, 0x3294, 0x32bf, 0x32f9, 0x3324, -} // Size: 1254 bytes - -const teLangStr string = "" + // Size: 12487 bytes - "అఫార్అబ్ఖాజియన్అవేస్టాన్ఆఫ్రికాన్స్అకాన్అమ్హారిక్అరగోనిస్అరబిక్అస్సామీస్" + - "అవారిక్ఐమారాఅజర్బైజానిబష్కిర్బెలరుషియన్బల్గేరియన్బిస్లామాబంబారాబాంగ్లా" + - "టిబెటన్బ్రెటన్బోస్నియన్కాటలాన్చెచెన్చమర్రోకోర్సికన్క్రిచెక్చర్చ్ స్లావ" + - "ిక్చువాష్వెల్ష్డానిష్జర్మన్దివేహిజోంఖాయూగ్రీక్ఆంగ్లంఎస్పెరాంటోస్పానిష్" + - "ఎస్టోనియన్బాస్క్యూపర్షియన్ఫ్యులఫిన్నిష్ఫిజియన్ఫారోయీజ్ఫ్రెంచ్పశ్చిమ ఫ్" + - "రిసియన్ఐరిష్స్కాటిష్ గేలిక్గాలిషియన్గ్వారనీగుజరాతిమాంక్స్హౌసాహీబ్రూహిం" + - "దీహిరి మోటుక్రోయేషియన్హైటియన్ క్రియోల్హంగేరియన్ఆర్మేనియన్హిరేరోఇంటర్లి" + - "ంగ్వాఇండోనేషియన్ఇంటర్లింగ్ఇగ్బోశిషువన్ ఈఇనుపైయాక్ఈడోఐస్లాండిక్ఇటాలియన్" + - "ఇనుక్టిటుట్జపనీస్జావనీస్జార్జియన్కోంగోకికుయుక్వాన్యామకజఖ్కలాల్లిసూట్ఖ్" + - "మేర్కన్నడకొరియన్కానురికాశ్మీరికుర్దిష్కోమికోర్నిష్కిర్గిజ్లాటిన్లక్సెం" + - "బర్గిష్గాండాలిమ్బర్గిష్లింగాలలావోలిథువేనియన్లూబ-కటాంగలాట్వియన్మాలాగసిమ" + - "ార్షలీస్మయోరిమసడోనియన్మలయాళంమంగోలియన్మరాఠీమలాయ్మాల్టీస్బర్మీస్నౌరుఉత్త" + - "ర దెబెలెనేపాలిడోంగాడచ్నార్వేజియాన్ న్యోర్స్క్నార్వేజియన్ బొక్మాల్దక్షి" + - "ణ దెబెలెనవాజొన్యాన్జాఆక్సిటన్చేవాఒరోమోఒడియాఒసేటిక్పంజాబీపాలీపోలిష్పాష్" + - "టోపోర్చుగీస్కెచువారోమన్ష్రుండిరోమానియన్రష్యన్కిన్యర్వాండాసంస్కృతంసార్డ" + - "ీనియన్సింధీఉత్తర సామిసాంగోసింహళంస్లోవాక్స్లోవేనియన్సమోవన్షోనసోమాలిఅల్బ" + - "ేనియన్సెర్బియన్స్వాతిదక్షిణ సోతోసండానీస్స్వీడిష్స్వాహిలితమిళముతెలుగుతజ" + - "ిక్థాయ్తిగ్రిన్యాతుర్క్\u200cమెన్స్వానాటాంగాన్టర్కిష్సోంగాటాటర్తహితియన" + - "్ఉయ్\u200cఘర్ఉక్రేనియన్ఉర్దూఉజ్బెక్వెండావియత్నామీస్వోలాపుక్వాలూన్వొలాఫ" + - "్షోసాఇడ్డిష్యోరుబాజువాన్చైనీస్జూలూఆఖినీస్అకోలిఅడాంగ్మేఅడిగాబ్జేటునీషియ" + - "ా అరబిక్అఫ్రిహిలిఅగేమ్ఐనుఅక్కాడియాన్అలియుట్దక్షిణ ఆల్టైప్రాచీన ఆంగ్లంఆ" + - "ంగికఅరామేక్మపుచేఅరాపాహోఅరావాక్ఈజిప్షియన్ అరబిక్అసుఆస్టూరియన్అవధిబాలుచి" + - "బాలినీస్బసాబేజాబెంబాబెనాపశ్చిమ బలూచీభోజ్\u200cపురిబికోల్బినిసిక్సికాబి" + - "ష్ణుప్రియబ్రాజ్బోడోబురియట్బుగినీస్బ్లిన్కేడ్డోకేరిబ్అట్సామ్సెబుయానోఛిగ" + - "ాచిబ్చాచాగటైచూకీస్మారిచినూక్ జార్గన్చక్టాచిపెవ్యాన్చెరోకీచేయేన్సెంట్రల" + - "్ కర్డిష్కోప్టిక్క్రిమియన్ టర్కిష్సెసేల్వా క్రియోల్ ఫ్రెంచ్కషుబియన్డకో" + - "టాడార్గ్వాటైటాడెలావేర్స్లేవ్డోగ్రిబ్డింకాజార్మాడోగ్రిలోయర్ సోర్బియన్డ్" + - "యూలామధ్యమ డచ్జోలా-ఫోనయిడ్యులాడాజాగాఇంబుఎఫిక్ప్రాచీన ఈజిప్షియన్ఏకాజక్ఎల" + - "ామైట్మధ్యమ ఆంగ్లంఎవోండొఫాంగ్ఫిలిపినోఫాన్కాజున్ ఫ్రెంచ్మధ్యమ ప్రెంచ్ప్ర" + - "ాచీన ఫ్రెంచ్ఉత్తర ఫ్రిసియన్తూర్పు ఫ్రిసియన్ఫ్రియులియన్గాగాగౌజ్గాన్ చైన" + - "ీస్గాయోగ్బాయాజీజ్గిల్బర్టీస్మధ్యమ హై జర్మన్ప్రాచీన హై జర్మన్గోండిగోరోం" + - "టలాగోథిక్గ్రేబోప్రాచీన గ్రీక్స్విస్ జర్మన్గుస్సీగ్విచిన్హైడాహక్కా చైనీ" + - "స్హవాయియన్హిలిగేయినోన్హిట్టిటేమోంగ్అప్పర్ సోర్బియన్జియాంగ్ చైనీస్హుపాఐ" + - "బాన్ఇబిబియోఐలోకోఇంగుష్లోజ్బాన్గోంబామకొమ్జ్యుడియో-పర్షియన్జ్యుడియో-అరబి" + - "క్కారా-కల్పాక్కాబిల్కాచిన్జ్యూకంబాకావికబార్డియన్ట్యాప్మకొండేకాబువేర్ది" + - "యనుకోరోఖాసిఖటోనీస్కొయరా చీన్నీకాకోకలెంజిన్కిమ్బుండుకోమి-పర్మాక్కొంకణిక" + - "ోస్రేయన్పెల్లేకరచే-బల్కార్కరేలియన్కూరుఖ్శంబాలాబాఫియకొలోనియన్కుమ్యిక్కు" + - "టేనైలాడినోలాంగీలాహండాలాంబాలేజ్ఘియన్లకొటామొంగోలూసియానా క్రియోల్లోజిఉత్త" + - "ర లూరీలుబా-లులువలుయిసెనోలుండాలువోమిజోలుయియమాదురీస్మగాహిమైథిలిమకాసార్మం" + - "డింగోమాసైమోక్షమండార్మెండేమెరుమొరిస్యేన్మధ్యమ ఐరిష్మక్వా-మిట్టోమెటామికమ" + - "ాక్మినాంగ్\u200cకాబోమంచుమణిపురిమోహాక్మోస్సిమండాంగ్బహుళ భాషలుక్రీక్మిరా" + - "ండిస్మార్వాడిఎర్జియామాసన్\u200cదెరానిమిన్ నాన్ చైనీస్నియాపోలిటన్నమలో జ" + - "ర్మన్నెవారినియాస్నాయియన్క్వాసియెగింబూన్నోగైప్రాచిన నోర్స్న్కోఉత్తర సోత" + - "ోన్యుర్సాంప్రదాయ న్యూయారీన్యంవేజిన్యాన్కోలెనేయోరోజీమాఒసాజ్ఒట్టోమన్ టర్" + - "కిష్పంగాసినాన్పహ్లావిపంపన్గాపపియమేంటోపలావెన్నైజీరియా పిడ్గిన్ప్రాచీన ప" + - "ర్షియన్ఫోనికన్పోహ్న్పెయన్ప్రష్యన్ప్రాచీన ప్రోవెంసాల్కిచేరాజస్తానీరాపన్" + - "యుయిరారోటొంగాన్రోంబోరోమానీఆరోమేనియన్ర్వాసండావిసఖాసమారిటన్ అరమేక్సంబురు" + - "ససక్సంటాలిగాంబేసాంగుసిసిలియన్స్కాట్స్దక్షిణ కుర్దిష్సెనాసేల్కప్కోయోరాబ" + - "ోరో సెన్నీప్రాచీన ఐరిష్టాచెల్\u200cహిట్షాన్సిడామోదక్షిణ సామిలులే సామిఇ" + - "నారి సామిస్కోల్ట్ సామిసోనింకిసోగ్డియన్స్రానన్ టోంగోసెరేర్సాహోసుకుమాసుస" + - "ుసుమేరియాన్కొమొరియన్సాంప్రదాయ సిరియాక్సిరియాక్తుళుటిమ్నేటెసోటెరెనోటేటం" + - "టీగ్రెటివ్టోకెలావ్క్లింగాన్ట్లింగిట్టామషేక్న్యాసా టోన్గాటోక్ పిసిన్తరో" + - "కోశింషీయన్టుంబుకాటువాలుటసావాఖ్టువినియన్సెంట్రల్ అట్లాస్ టామాజైట్ఉడ్ముర" + - "్ట్ఉగారిటిక్ఉమ్బుండుతెలియని భాషవాయివోటిక్వుంజొవాల్సర్వాలేట్టావారేవాషోవ" + - "ార్లపిరివు చైనీస్కల్మిక్సొగాయాయేయాపిస్యాంగ్\u200cబెన్యెంబాకాంటనీస్జపోట" + - "ెక్బ్లిసింబల్స్జెనాగాప్రామాణిక మొరొకన్ టామజైట్జునిలిపి లేదుజాజాఆధునిక " + - "ప్రామాణిక అరబిక్ఆస్ట్రియన్ జర్మన్స్విస్ హై జర్మన్ఆస్ట్రేలియన్ ఇంగ్లీష్" + - "కెనడియన్ ఇంగ్లీష్బ్రిటిష్ ఇంగ్లీష్అమెరికన్ ఇంగ్లీష్లాటిన్ అమెరికన్ స్ప" + - "ానిష్యూరోపియన్ స్పానిష్మెక్సికన్ స్పానిష్కెనడియెన్ ఫ్రెంచ్స్విస్ ఫ్రెం" + - "చ్లో సాక్సన్ఫ్లెమిష్బ్రెజీలియన్ పోర్చుగీస్యూరోపియన్ పోర్చుగీస్మొల్డావి" + - "యన్సేర్బో-క్రొయేషియన్కాంగో స్వాహిలిసరళీకృత చైనీస్సాంప్రదాయక చైనీస్" - -var teLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x002d, 0x0048, 0x0069, 0x0078, 0x0093, 0x00ab, - 0x00bd, 0x00d8, 0x00ed, 0x00fc, 0x011a, 0x012f, 0x014d, 0x016b, - 0x0183, 0x0195, 0x01aa, 0x01bf, 0x01d4, 0x01ef, 0x0204, 0x0216, - 0x0228, 0x0243, 0x024f, 0x025b, 0x0283, 0x0295, 0x02a7, 0x02b9, - 0x02cb, 0x02dd, 0x02ec, 0x02f2, 0x0304, 0x0316, 0x0334, 0x034c, - 0x036a, 0x0382, 0x039a, 0x03a9, 0x03c1, 0x03d6, 0x03ee, 0x0403, - 0x0431, 0x0440, 0x046b, 0x0486, 0x049b, 0x04b0, 0x04c5, 0x04d1, - 0x04e3, 0x04f2, 0x050b, 0x052c, 0x055a, 0x0575, 0x0593, 0x05a5, - // Entry 40 - 7F - 0x05c9, 0x05ea, 0x0608, 0x0617, 0x0630, 0x064b, 0x0654, 0x0672, - 0x068a, 0x06ab, 0x06bd, 0x06d2, 0x06ed, 0x06fc, 0x070e, 0x0729, - 0x0735, 0x0756, 0x0768, 0x0777, 0x078c, 0x079e, 0x07b6, 0x07ce, - 0x07da, 0x07f2, 0x080a, 0x081c, 0x0843, 0x0852, 0x0873, 0x0885, - 0x0891, 0x08b2, 0x08cb, 0x08e6, 0x08fb, 0x0916, 0x0925, 0x0940, - 0x0952, 0x096d, 0x097c, 0x098b, 0x09a3, 0x09b8, 0x09c4, 0x09e6, - 0x09f8, 0x0a07, 0x0a10, 0x0a53, 0x0a8d, 0x0ab2, 0x0ac1, 0x0ad9, - 0x0af1, 0x0afd, 0x0b0c, 0x0b1b, 0x0b30, 0x0b42, 0x0b4e, 0x0b60, - // Entry 80 - BF - 0x0b72, 0x0b90, 0x0ba2, 0x0bb7, 0x0bc6, 0x0be1, 0x0bf3, 0x0c17, - 0x0c2f, 0x0c50, 0x0c5f, 0x0c7b, 0x0c8a, 0x0c9c, 0x0cb4, 0x0cd5, - 0x0ce7, 0x0cf0, 0x0d02, 0x0d20, 0x0d3b, 0x0d4d, 0x0d6c, 0x0d84, - 0x0d9c, 0x0db4, 0x0dc6, 0x0dd8, 0x0de7, 0x0df3, 0x0e11, 0x0e32, - 0x0e44, 0x0e59, 0x0e6e, 0x0e7d, 0x0e8c, 0x0ea4, 0x0eb9, 0x0ed7, - 0x0ee6, 0x0efb, 0x0f0a, 0x0f2b, 0x0f43, 0x0f55, 0x0f67, 0x0f73, - 0x0f88, 0x0f9a, 0x0fac, 0x0fbe, 0x0fca, 0x0fdf, 0x0fee, 0x1006, - 0x1021, 0x104c, 0x1067, 0x1076, 0x107f, 0x10a0, 0x10a0, 0x10b5, - // Entry C0 - FF - 0x10b5, 0x10d7, 0x10ff, 0x110e, 0x1123, 0x1132, 0x1132, 0x1147, - 0x1147, 0x1147, 0x115c, 0x115c, 0x118d, 0x1196, 0x1196, 0x11b4, - 0x11b4, 0x11c0, 0x11d2, 0x11ea, 0x11ea, 0x11f3, 0x11f3, 0x11f3, - 0x11f3, 0x11ff, 0x120e, 0x120e, 0x121a, 0x121a, 0x121a, 0x123c, - 0x1257, 0x1269, 0x1275, 0x1275, 0x1275, 0x128d, 0x12ae, 0x12ae, - 0x12c0, 0x12c0, 0x12cc, 0x12cc, 0x12e1, 0x12f9, 0x12f9, 0x130b, - 0x130b, 0x131d, 0x132f, 0x132f, 0x1344, 0x1344, 0x135c, 0x1368, - 0x137a, 0x1389, 0x139b, 0x13a7, 0x13cf, 0x13de, 0x13fc, 0x140e, - // Entry 100 - 13F - 0x1420, 0x144e, 0x1466, 0x1466, 0x1497, 0x14de, 0x14f6, 0x1505, - 0x151d, 0x1529, 0x1541, 0x1553, 0x156b, 0x157a, 0x158c, 0x159e, - 0x15c9, 0x15c9, 0x15db, 0x15f4, 0x1610, 0x1622, 0x1634, 0x1640, - 0x164f, 0x164f, 0x1683, 0x1695, 0x16aa, 0x16cc, 0x16cc, 0x16de, - 0x16de, 0x16ed, 0x1705, 0x1705, 0x1711, 0x1739, 0x175e, 0x1789, - 0x1789, 0x17b4, 0x17e2, 0x1803, 0x1809, 0x181b, 0x183a, 0x1846, - 0x1858, 0x1858, 0x1864, 0x1885, 0x1885, 0x18ae, 0x18dd, 0x18dd, - 0x18ec, 0x1904, 0x1916, 0x1928, 0x1950, 0x1975, 0x1975, 0x1975, - // Entry 140 - 17F - 0x1987, 0x199f, 0x19ab, 0x19cd, 0x19e5, 0x19e5, 0x1a09, 0x1a21, - 0x1a30, 0x1a5e, 0x1a86, 0x1a92, 0x1aa1, 0x1ab6, 0x1ac5, 0x1ad7, - 0x1ad7, 0x1ad7, 0x1aef, 0x1afe, 0x1b0d, 0x1b3e, 0x1b69, 0x1b69, - 0x1b8b, 0x1b9d, 0x1baf, 0x1bbb, 0x1bc7, 0x1bd3, 0x1bf1, 0x1bf1, - 0x1c03, 0x1c15, 0x1c3c, 0x1c3c, 0x1c48, 0x1c48, 0x1c54, 0x1c69, - 0x1c8b, 0x1c8b, 0x1c8b, 0x1c97, 0x1caf, 0x1cca, 0x1cec, 0x1cfe, - 0x1d19, 0x1d2b, 0x1d4d, 0x1d4d, 0x1d4d, 0x1d65, 0x1d77, 0x1d89, - 0x1d98, 0x1db3, 0x1dcb, 0x1ddd, 0x1def, 0x1dfe, 0x1e10, 0x1e1f, - // Entry 180 - 1BF - 0x1e3a, 0x1e3a, 0x1e3a, 0x1e3a, 0x1e49, 0x1e49, 0x1e58, 0x1e89, - 0x1e95, 0x1eb1, 0x1eb1, 0x1ecd, 0x1ee5, 0x1ef4, 0x1f00, 0x1f0c, - 0x1f1b, 0x1f1b, 0x1f1b, 0x1f33, 0x1f33, 0x1f42, 0x1f54, 0x1f69, - 0x1f7e, 0x1f8a, 0x1f8a, 0x1f99, 0x1fab, 0x1fba, 0x1fc6, 0x1fe4, - 0x2003, 0x2025, 0x2031, 0x2046, 0x206a, 0x2076, 0x208b, 0x209d, - 0x20af, 0x20af, 0x20c4, 0x20e0, 0x20f2, 0x210d, 0x2125, 0x2125, - 0x2125, 0x213a, 0x215e, 0x218a, 0x21ab, 0x21b1, 0x21ca, 0x21dc, - 0x21ee, 0x2203, 0x2203, 0x221b, 0x2230, 0x223c, 0x2264, 0x2264, - // Entry 1C0 - 1FF - 0x2270, 0x228c, 0x229e, 0x22d2, 0x22ea, 0x2308, 0x231a, 0x2326, - 0x2335, 0x2363, 0x2381, 0x2396, 0x23ab, 0x23c6, 0x23db, 0x23db, - 0x240c, 0x240c, 0x240c, 0x243a, 0x243a, 0x244f, 0x244f, 0x244f, - 0x2470, 0x2488, 0x24bf, 0x24cb, 0x24cb, 0x24e6, 0x2501, 0x2522, - 0x2522, 0x2522, 0x2531, 0x2543, 0x2543, 0x2543, 0x2543, 0x2561, - 0x256d, 0x257f, 0x2588, 0x25b3, 0x25c5, 0x25d1, 0x25e3, 0x25e3, - 0x25f2, 0x2601, 0x261c, 0x2634, 0x2634, 0x265f, 0x265f, 0x266b, - 0x266b, 0x2680, 0x26b1, 0x26d6, 0x26d6, 0x26f7, 0x2703, 0x2703, - // Entry 200 - 23F - 0x2715, 0x2715, 0x2715, 0x2734, 0x274d, 0x2769, 0x278e, 0x27a3, - 0x27be, 0x27e3, 0x27f5, 0x2801, 0x2801, 0x2813, 0x281f, 0x283d, - 0x2858, 0x288c, 0x28a4, 0x28a4, 0x28b0, 0x28c2, 0x28ce, 0x28e0, - 0x28ec, 0x28fe, 0x290a, 0x2922, 0x2922, 0x293d, 0x2958, 0x2958, - 0x296d, 0x2992, 0x29b1, 0x29b1, 0x29c0, 0x29c0, 0x29d8, 0x29d8, - 0x29ed, 0x29ff, 0x2a14, 0x2a2f, 0x2a76, 0x2a91, 0x2aac, 0x2ac4, - 0x2ae3, 0x2aef, 0x2aef, 0x2aef, 0x2aef, 0x2aef, 0x2b01, 0x2b01, - 0x2b10, 0x2b25, 0x2b3d, 0x2b49, 0x2b55, 0x2b70, 0x2b89, 0x2b9e, - // Entry 240 - 27F - 0x2b9e, 0x2baa, 0x2bb6, 0x2bc8, 0x2be6, 0x2bf5, 0x2bf5, 0x2c0d, - 0x2c22, 0x2c46, 0x2c46, 0x2c58, 0x2c9f, 0x2cab, 0x2cc4, 0x2cd0, - 0x2d11, 0x2d11, 0x2d42, 0x2d6e, 0x2dab, 0x2ddc, 0x2e0d, 0x2e3e, - 0x2e82, 0x2eb6, 0x2eea, 0x2eea, 0x2f1b, 0x2f43, 0x2f5f, 0x2f77, - 0x2fb7, 0x2ff1, 0x3012, 0x3046, 0x306e, 0x3096, 0x30c7, -} // Size: 1254 bytes - -const thLangStr string = "" + // Size: 13905 bytes - "อะฟาร์อับฮาเซียอเวสตะแอฟริกานส์อาคานอัมฮาราอารากอนอาหรับอัสสัมอาวาร์ไอย์" + - "มาราอาเซอร์ไบจานบัชคีร์เบลารุสบัลแกเรียบิสลามาบัมบาราเบงกาลีทิเบตเบรตั" + - "นบอสเนียกาตาลังเชเชนชามอร์โรคอร์ซิกาครีเช็กเชอร์ชสลาวิกชูวัชเวลส์เดนมา" + - "ร์กเยอรมันธิเวหิซองคาเอเวกรีกอังกฤษเอสเปรันโตสเปนเอสโตเนียบาสก์เปอร์เซ" + - "ียฟูลาห์ฟินแลนด์ฟิจิแฟโรฝรั่งเศสฟริเซียนตะวันตกไอริชเกลิกสกอตกาลิเซียก" + - "ัวรานีคุชราตมานซ์เฮาซาฮิบรูฮินดีฮีรีโมตูโครเอเชียเฮติครีโอลฮังการีอาร์" + - "เมเนียเฮเรโรอินเตอร์ลิงกัวอินโดนีเซียอินเตอร์ลิงกิวอิกโบเสฉวนยิอีนูเปี" + - "ยกอีโดไอซ์แลนด์อิตาลีอินุกติตุตญี่ปุ่นชวาจอร์เจียคองโกกีกูยูกวนยามาคาซ" + - "ัคกรีนแลนด์เขมรกันนาดาเกาหลีคานูรีกัศมีร์เคิร์ดโกมิคอร์นิชคีร์กีซละติน" + - "ลักเซมเบิร์กยูกันดาลิมเบิร์กลิงกาลาลาวลิทัวเนียลูบา-กาตองกาลัตเวียมาลา" + - "กาซีมาร์แชลลิสเมารีมาซิโดเนียมาลายาลัมมองโกเลียมราฐีมาเลย์มอลตาพม่านาอ" + - "ูรูเอ็นเดเบเลเหนือเนปาลดองกาดัตช์นอร์เวย์นีนอสก์นอร์เวย์บุคมอลเอ็นเดเบ" + - "เลใต้นาวาโฮเนียนจาอ็อกซิตันโอจิบวาโอโรโมโอริยาออสเซเตียปัญจาบบาลีโปแลน" + - "ด์พัชโตโปรตุเกสเคชวาโรแมนซ์บุรุนดีโรมาเนียรัสเซียรวันดาสันสกฤตซาร์เดญา" + - "สินธิซามิเหนือซันโกสิงหลสโลวักสโลวีเนียซามัวโชนาโซมาลีแอลเบเนียเซอร์เบ" + - "ียสวาติโซโทใต้ซุนดาสวีเดนสวาฮีลีทมิฬเตลูกูทาจิกไทยติกริญญาเติร์กเมนบอต" + - "สวานาตองกาตุรกีซิตซองกาตาตาร์ตาฮิตีอุยกูร์ยูเครนอูรดูอุซเบกเวนดาเวียดน" + - "ามโวลาพึควาโลนีโวลอฟคะห์โอซายิดดิชโยรูบาจ้วงจีนซูลูอาเจะห์อาโคลิอาแดงม" + - "ีอะดืยเกอาหรับตูนิเซียแอฟริฮีลีอักเฮมไอนุอักกาดแอละแบมาอาลิวต์เกกแอลเบ" + - "เนียอัลไตใต้อังกฤษโบราณอังคิกาอราเมอิกมาปูเชอาเรานาอาราปาโฮอาหรับแอลจี" + - "เรียอาราวักอาหรับโมร็อกโกอาหรับพื้นเมืองอียิปต์อาซูภาษามืออเมริกันอัสต" + - "ูเรียสโคตาวาอวธีบาลูชิบาหลีบาวาเรียบาสาบามันบาตักโทบาโคมาลาเบจาเบมบาเบ" + - "ตาวีเบนาบาฟัตพทคะบาลูจิตะวันตกโภชปุรีบิกอลบินีบันจาร์กมสิกสิกาพิศนุปริ" + - "ยะบักติยารีพัรชบราฮุยโพโฑอาโคซีบูเรียตบูกิสบูลูบลินเมดุมบาคัดโดคาริบคา" + - "ยูกาแอตแซมเซบูคีกาชิบชาชะกะไตชูกมารีชินุกจาร์กอนช็อกทอว์ชิพิวยันเชอโรก" + - "ีเชเยนเนเคิร์ดโซรานีคอปติกกาปิซนอนตุรกีไครเมียครีโอลเซเซลส์ฝรั่งเศสคาซ" + - "ูเบียนดาโกทาดาร์กินไททาเดลาแวร์สเลวีโดกริบดิงกาซาร์มาโฑครีซอร์บส์ตอนล่" + - "างดูซุนกลางดัวลาดัตช์กลางโจลา-ฟอนยีดิวลาดาซากาเอ็มบูอีฟิกเอมีเลียอียิป" + - "ต์โบราณอีกาจุกอีลาไมต์อังกฤษกลางยูพิกกลางอีวันโดเอกซ์เตรมาดูราฟองฟิลิป" + - "ปินส์ฟินแลนด์ทอร์เนดาเล็นฟอนฝรั่งเศสกาฌ็องฝรั่งเศสกลางฝรั่งเศสโบราณอาร" + - "์พิตาฟริเซียนเหนือฟริเซียนตะวันออกฟรูลีกากากาอุซจีนกั้นกาโยกบายาดารีโซ" + - "โรอัสเตอร์กีซกิลเบอร์ตกิลากีเยอรมันสูงกลางเยอรมันสูงโบราณกอนกานีของกัว" + - "กอนดิกอรอนทาโลโกธิกเกรโบกรีกโบราณเยอรมันสวิสวายูฟราฟรากุซซีกวิชอินไฮดา" + - "จีนแคะฮาวายฮินดีฟิจิฮีลีกัยนนฮิตไตต์ม้งซอร์เบียตอนบนจีนเซียงฮูปาอิบานอ" + - "ิบิบิโออีโลโกอินกุชอินเกรียนอังกฤษคลีโอลจาเมกาโลชบันอึนกอมบามาชาเมยิว-" + - "เปอร์เซียยิว-อาหรับจัทการา-กาลพากกาไบลกะฉิ่นคจูคัมบากวีคาร์บาเดียคาเนม" + - "บูทีแยปมาคอนเดคาบูเวอร์เดียนูเกินยางโคโรเคนก่างกาสีโคตันโคย์ราชีนีโควา" + - "ร์เคอร์มานิกิคาโกคาเลนจินคิมบุนดูโคมิ-เปียร์เมียคกอนกานีคูสไรกาแปลคารา" + - "ไช-บัลคาร์คริโอกินารายอาแกรเลียนกุรุขชัมบาลาบาเฟียโคโลญคูมืยค์คูเทไนลา" + - "ดิโนแลนจีลาฮ์นดาแลมบาเลซเกียนลิงกัวฟรังกาโนวาลิกูเรียลิโวเนียลาโกตาลอม" + - "บาร์ดมองโกภาษาครีโอลุยเซียนาโลซิลูรีเหนือลัตเกลลูบา-ลูลัวลุยเซโนลันดาล" + - "ัวลูไชลูเยียจีนคลาสสิกแลซมาดูรามาฟามคหีไมถิลีมากาซาร์มันดิงกามาไซมาบาม" + - "อคชามานดาร์เมนเดเมรูมอริสเยนไอริชกลางมากัววา-มีทโทเมตามิกแมกมีนังกาเบา" + - "แมนจูมณีปุระโมฮอว์กโมซีมารีตะวันตกมันดังหลายภาษาครีกมีรันดามารวาฑีเม็น" + - "ตาไวมยีนเอียร์ซยามาซันดารานีจีนมินหนานนาโปลีนามาเยอรมันต่ำ - แซกซอนต่ำ" + - "เนวาร์นีอัสนีอูอ๋าวนากากวาซิโอจีมบูนโนไกนอร์สโบราณโนเวียลเอ็นโกโซโทเหน" + - "ือเนือร์เนวาร์ดั้งเดิมเนียมเวซีเนียนโกเลนิโอโรนซิมาโอซากีตุรกีออตโตมัน" + - "ปางาซีนันปะห์ลาวีปัมปางาปาเปียเมนโตปาเลาปิการ์พิดจินเยอรมันเพนซิลเวเนี" + - "ยเพลาท์ดิชเปอร์เซียโบราณเยอรมันพาลาทิเนตฟินิเชียพีดมอนต์พอนติกพอห์นเพป" + - "รัสเซียโปรวองซาลโบราณกีเชควิชัวไฮแลนด์ชิมโบราโซราชสถานราปานูราโรทองกาโ" + - "รมัณโญริฟฟิอันรอมโบโรมานีโรทูมันรูซินโรเวียนาอาโรมาเนียนรวาซันดาเวซาคา" + - "อราเมอิกซามาเรียแซมบูรูซาซักสันตาลีเสาราษฏร์กัมเบแซงกูซิซิลีสกอตส์ซาร์" + - "ดิเนียซาสซารีเคอร์ดิชใต้เซนิกาเซนาเซรีเซลคุปโคย์ราโบโรเซนนีไอริชโบราณซ" + - "าโมจิเตียนทาเชลีห์ทไทใหญ่อาหรับ-ชาดซิดาโมไซลีเซียตอนล่างเซลายาร์ซามิใต" + - "้ซามิลูเลซามิอีนารีซามิสคอลต์โซนีนเกซอกดีนซูรินาเมเซแรร์ซาโฮฟรีเซียนซั" + - "ทเธอร์แลนด์ซูคูมาซูซูซูเมอโคเมอเรียนซีเรียแบบดั้งเดิมซีเรียไซลีเซียตูล" + - "ูทิมเนเตโซเทเรโนเตตุมตีเกรทิฟโตเกเลาแซคเซอร์คลิงกอนทลิงกิตทาลิชทามาเชก" + - "ไนอะซาตองกาท็อกพิซินตูโรโยทาโรโกซาโคเนียซิมชีแอนตัตมุสลิมทุมบูกาตูวาลู" + - "ตัสซาวัคตูวาทามาไซต์แอตลาสกลางอุดมูร์ตยูการิตอุมบุนดูภาษาที่ไม่รู้จักไ" + - "วเวเนโต้เวปส์เฟลมิชตะวันตกเมน-ฟรานโกเนียโวทิกโวโรวุนจูวัลเซอร์วาลาโมวา" + - "เรย์วาโชวอล์เพอร์รีจีนอู๋คัลมืยค์เมเกรเลียโซกาเย้ายัปแยงเบนเยมบาเหงงกา" + - "ตุกวางตุ้งซาโปเตกบลิสซิมโบลส์เซแลนด์เซนากาทามาไซต์โมร็อกโกมาตรฐานซูนิไ" + - "ม่มีข้อมูลภาษาซาซาอาหรับมาตรฐานสมัยใหม่เยอรมัน - ออสเตรียเยอรมันสูง (ส" + - "วิส)อังกฤษ - ออสเตรเลียอังกฤษ - แคนาดาอังกฤษ - สหราชอาณาจักรอังกฤษ - อ" + - "เมริกันสเปน - ละตินอเมริกาสเปน - ยุโรปสเปน - เม็กซิโกฝรั่งเศส - แคนาดา" + - "ฝรั่งเศส (สวิส)แซกซอนใต้เฟลมิชโปรตุเกส - บราซิลโปรตุเกส - ยุโรปมอลโดวา" + - "เซอร์โบ-โครเอเชียสวาฮีลี - คองโกจีนตัวย่อจีนตัวเต็ม" - -var thLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0012, 0x002d, 0x003f, 0x005d, 0x006c, 0x0081, 0x0096, - 0x00a8, 0x00ba, 0x00cc, 0x00e4, 0x0108, 0x011d, 0x0132, 0x014d, - 0x0162, 0x0177, 0x018c, 0x019b, 0x01ad, 0x01c2, 0x01d7, 0x01e6, - 0x01fe, 0x0216, 0x021f, 0x022b, 0x024f, 0x025e, 0x026d, 0x0285, - 0x029a, 0x02ac, 0x02bb, 0x02c7, 0x02d3, 0x02e5, 0x0303, 0x030f, - 0x032a, 0x0339, 0x0354, 0x0366, 0x037e, 0x038a, 0x0396, 0x03ae, - 0x03db, 0x03ea, 0x0405, 0x041d, 0x0432, 0x0444, 0x0453, 0x0462, - 0x0471, 0x0480, 0x0498, 0x04b3, 0x04d1, 0x04e6, 0x0504, 0x0516, - // Entry 40 - 7F - 0x0540, 0x0561, 0x058b, 0x059a, 0x05af, 0x05ca, 0x05d6, 0x05f1, - 0x0603, 0x0621, 0x0636, 0x063f, 0x0657, 0x0666, 0x0678, 0x068d, - 0x069c, 0x06b7, 0x06c3, 0x06d8, 0x06ea, 0x06fc, 0x0711, 0x0723, - 0x072f, 0x0744, 0x0759, 0x0768, 0x078c, 0x07a1, 0x07bc, 0x07d1, - 0x07da, 0x07f5, 0x0817, 0x082c, 0x0844, 0x0862, 0x0871, 0x088f, - 0x08aa, 0x08c5, 0x08d4, 0x08e6, 0x08f5, 0x0901, 0x0913, 0x0940, - 0x094f, 0x095e, 0x096d, 0x099a, 0x09c4, 0x09eb, 0x09fd, 0x0a12, - 0x0a2d, 0x0a42, 0x0a54, 0x0a66, 0x0a81, 0x0a93, 0x0a9f, 0x0ab4, - // Entry 80 - BF - 0x0ac3, 0x0adb, 0x0aea, 0x0aff, 0x0b14, 0x0b2c, 0x0b41, 0x0b53, - 0x0b68, 0x0b80, 0x0b8f, 0x0baa, 0x0bb9, 0x0bc8, 0x0bda, 0x0bf5, - 0x0c04, 0x0c10, 0x0c22, 0x0c3d, 0x0c58, 0x0c67, 0x0c7c, 0x0c8b, - 0x0c9d, 0x0cb2, 0x0cbe, 0x0cd0, 0x0cdf, 0x0ce8, 0x0d00, 0x0d1b, - 0x0d33, 0x0d42, 0x0d51, 0x0d69, 0x0d7b, 0x0d8d, 0x0da2, 0x0db4, - 0x0dc3, 0x0dd5, 0x0de4, 0x0dfc, 0x0e11, 0x0e23, 0x0e32, 0x0e4a, - 0x0e5c, 0x0e6e, 0x0e7a, 0x0e83, 0x0e8f, 0x0ea4, 0x0eb6, 0x0ecb, - 0x0ee0, 0x0f0a, 0x0f25, 0x0f37, 0x0f43, 0x0f55, 0x0f6d, 0x0f82, - // Entry C0 - FF - 0x0fa6, 0x0fbe, 0x0fdf, 0x0ff4, 0x100c, 0x101e, 0x1033, 0x104b, - 0x1078, 0x1078, 0x108d, 0x10b7, 0x10f9, 0x1105, 0x1132, 0x1150, - 0x1162, 0x116e, 0x1180, 0x118f, 0x11a7, 0x11b3, 0x11c2, 0x11dd, - 0x11ef, 0x11fb, 0x120a, 0x121c, 0x1228, 0x1237, 0x1243, 0x126a, - 0x127f, 0x128e, 0x129a, 0x12af, 0x12b5, 0x12ca, 0x12e8, 0x1303, - 0x130f, 0x1321, 0x132d, 0x133f, 0x1354, 0x1363, 0x136f, 0x137b, - 0x1390, 0x139f, 0x13ae, 0x13c0, 0x13d2, 0x13d2, 0x13de, 0x13ea, - 0x13f9, 0x140b, 0x1414, 0x1420, 0x1444, 0x145c, 0x1474, 0x1489, - // Entry 100 - 13F - 0x149e, 0x14c2, 0x14d4, 0x14ec, 0x1510, 0x154f, 0x156a, 0x157c, - 0x1591, 0x159d, 0x15b5, 0x15c4, 0x15d6, 0x15e5, 0x15f7, 0x1606, - 0x1630, 0x164b, 0x165a, 0x1675, 0x1691, 0x16a0, 0x16b2, 0x16c4, - 0x16d3, 0x16eb, 0x170f, 0x1724, 0x173c, 0x175a, 0x1775, 0x178a, - 0x17b4, 0x17bd, 0x17db, 0x1817, 0x1820, 0x184a, 0x186e, 0x1895, - 0x18ad, 0x18d4, 0x1904, 0x1913, 0x1919, 0x192e, 0x1943, 0x194f, - 0x195e, 0x198e, 0x1997, 0x19b2, 0x19c4, 0x19ee, 0x1a1b, 0x1a42, - 0x1a51, 0x1a6c, 0x1a7b, 0x1a8a, 0x1aa5, 0x1ac6, 0x1ad2, 0x1ae4, - // Entry 140 - 17F - 0x1af3, 0x1b08, 0x1b14, 0x1b26, 0x1b35, 0x1b50, 0x1b6b, 0x1b80, - 0x1b89, 0x1bb0, 0x1bc8, 0x1bd4, 0x1be3, 0x1bfb, 0x1c0d, 0x1c1f, - 0x1c3a, 0x1c70, 0x1c82, 0x1c9a, 0x1cac, 0x1cd1, 0x1ced, 0x1cf6, - 0x1d15, 0x1d24, 0x1d36, 0x1d3f, 0x1d4e, 0x1d57, 0x1d75, 0x1d8a, - 0x1d99, 0x1dae, 0x1ddb, 0x1df0, 0x1dfc, 0x1e11, 0x1e1d, 0x1e2c, - 0x1e4a, 0x1e5c, 0x1e7d, 0x1e89, 0x1ea1, 0x1eb9, 0x1ee7, 0x1efc, - 0x1f0b, 0x1f1a, 0x1f42, 0x1f51, 0x1f6c, 0x1f84, 0x1f93, 0x1fa8, - 0x1fba, 0x1fc9, 0x1fde, 0x1ff0, 0x2002, 0x2011, 0x2026, 0x2035, - // Entry 180 - 1BF - 0x204d, 0x207d, 0x2095, 0x20ad, 0x20bf, 0x20d7, 0x20e6, 0x211c, - 0x2128, 0x2143, 0x2155, 0x2171, 0x2186, 0x2195, 0x219e, 0x21aa, - 0x21bc, 0x21da, 0x21e3, 0x21f5, 0x2201, 0x220d, 0x221f, 0x2237, - 0x224f, 0x225b, 0x2267, 0x2276, 0x228b, 0x229a, 0x22a6, 0x22be, - 0x22d9, 0x22fe, 0x230a, 0x231c, 0x233a, 0x2349, 0x235e, 0x2373, - 0x237f, 0x23a0, 0x23b2, 0x23ca, 0x23d6, 0x23eb, 0x2400, 0x2418, - 0x2424, 0x243f, 0x2460, 0x247e, 0x2490, 0x249c, 0x24d8, 0x24ea, - 0x24f9, 0x2505, 0x251d, 0x2532, 0x2544, 0x2550, 0x256e, 0x2583, - // Entry 1C0 - 1FF - 0x2595, 0x25b0, 0x25c2, 0x25ec, 0x2607, 0x2622, 0x2634, 0x2643, - 0x2655, 0x267c, 0x2697, 0x26af, 0x26c4, 0x26e5, 0x26f4, 0x2706, - 0x2718, 0x2751, 0x276c, 0x2796, 0x27c6, 0x27de, 0x27f6, 0x2808, - 0x281d, 0x2835, 0x285f, 0x286b, 0x28ad, 0x28c2, 0x28d4, 0x28ef, - 0x2904, 0x291c, 0x292b, 0x293d, 0x2952, 0x2961, 0x2979, 0x299a, - 0x29a3, 0x29b8, 0x29c4, 0x29f4, 0x2a09, 0x2a18, 0x2a2d, 0x2a48, - 0x2a57, 0x2a66, 0x2a78, 0x2a8a, 0x2abd, 0x2ade, 0x2af0, 0x2afc, - 0x2b08, 0x2b1a, 0x2b47, 0x2b65, 0x2b86, 0x2ba1, 0x2bb3, 0x2bcf, - // Entry 200 - 23F - 0x2be1, 0x2c0e, 0x2c26, 0x2c3b, 0x2c53, 0x2c71, 0x2c8f, 0x2ca4, - 0x2cb6, 0x2cce, 0x2ce0, 0x2cec, 0x2d2b, 0x2d3d, 0x2d49, 0x2d58, - 0x2d76, 0x2da9, 0x2dbb, 0x2dd3, 0x2ddf, 0x2dee, 0x2dfa, 0x2e0c, - 0x2e1b, 0x2e2a, 0x2e33, 0x2e48, 0x2e60, 0x2e75, 0x2e8a, 0x2e99, - 0x2eae, 0x2ecf, 0x2eea, 0x2efc, 0x2f0e, 0x2f26, 0x2f3e, 0x2f59, - 0x2f6e, 0x2f80, 0x2f98, 0x2fa4, 0x2fda, 0x2ff2, 0x3007, 0x301f, - 0x304f, 0x3055, 0x306a, 0x3079, 0x30a0, 0x30c8, 0x30d7, 0x30e3, - 0x30f2, 0x310a, 0x311c, 0x312e, 0x313a, 0x315b, 0x316d, 0x3185, - // Entry 240 - 27F - 0x31a0, 0x31ac, 0x31b8, 0x31c1, 0x31d3, 0x31e2, 0x31fa, 0x3212, - 0x3227, 0x324b, 0x3260, 0x3272, 0x32b7, 0x32c3, 0x32f0, 0x32fc, - 0x333b, 0x333b, 0x336b, 0x3398, 0x33cb, 0x33f2, 0x342e, 0x345b, - 0x348e, 0x34ac, 0x34d3, 0x34d3, 0x3500, 0x3527, 0x3542, 0x3554, - 0x3581, 0x35ab, 0x35c0, 0x35f1, 0x3618, 0x3633, 0x3651, -} // Size: 1254 bytes - -const trLangStr string = "" + // Size: 5998 bytes - "AfarAbhazcaAvestçeAfrikaancaAkanAmharcaAragoncaArapçaAssamcaAvar DiliAym" + - "araAzericeBaşkırtçaBelarusçaBulgarcaBislamaBambaraBengalceTibetçeBretonc" + - "aBoşnakçaKatalancaÇeçenceÇamorro diliKorsikacaKriceÇekçeKilise SlavcasıÇ" + - "uvaşçaGalceDancaAlmancaDivehi diliDzongkhaEweYunancaİngilizceEsperantoİs" + - "panyolcaEstoncaBaskçaFarsçaFula diliFinceFiji DiliFaroe DiliFransızcaBat" + - "ı Frizcesiİrlandacaİskoç GaelcesiGaliçyacaGuarani diliGüceratçaMan dili" + - "Hausa diliİbraniceHintçeHiri MotuHırvatçaHaiti KreyoluMacarcaErmeniceHer" + - "ero diliInterlinguaEndonezceInterlingueİbo diliSichuan YiİnyupikçeIdoİzl" + - "andacaİtalyancaİnuktitut diliJaponcaCava DiliGürcüceKongo diliKikuyuKuan" + - "yamaKazakçaGrönland diliKhmer diliKannada diliKoreceKanuri diliKeşmir di" + - "liKürtçeKomiKernevekçeKırgızcaLatinceLüksemburgcaGandaLimburgcaLingalaLa" + - "o diliLitvancaLuba-KatangaLetoncaMalgaşçaMarshall Adaları diliMaori dili" + - "MakedoncaMalayalam diliMoğolcaMarathi diliMalaycaMaltacaBirman diliNauru" + - " diliKuzey NdebeleNepalceNdongaFelemenkçeNorveççe NynorskNorveççe Bokmål" + - "Güney NdebeleNavaho diliNyanjaOksitan diliOjibva diliOromo diliOriya Dil" + - "iOsetçePencapçaPaliLehçePeştucaPortekizceKeçuva diliRomanşçaKirundiRumen" + - "ceRusçaKinyarwandaSanskritSardunya diliSindhi diliKuzey LaponcasıSangoSi" + - "nhali diliSlovakçaSlovenceSamoa diliShonaSomaliceArnavutçaSırpçaSisvatiG" + - "üney Sotho diliSunda DiliİsveççeSvahili diliTamilceTelugu diliTacikçeTa" + - "ycaTigrinya diliTürkmenceSetsvanaTonga diliTürkçeTsongaTatarcaTahiti dil" + - "iUygurcaUkraynacaUrducaÖzbekçeVenda diliVietnamcaVolapükValoncaVolofçaZo" + - "sa diliYidişYorubacaZhuangcaÇinceZulucaAçeceAcoliAdangmeAdigeceTunus Ara" + - "pçasıAfrihiliAghemAyni DiliAkad DiliAlabamacaAleut diliGheg ArnavutçasıG" + - "üney AltaycaEski İngilizceAngikaAramiceMapuçe diliAraonaArapaho DiliCez" + - "ayir ArapçasıArawak DiliFas ArapçasıMısır ArapçasıAsuAmerikan İşaret Dil" + - "iAsturyascaKotavaAwadhiBeluççaBali diliBavyera diliBasa DiliBamunBatak T" + - "obaGhomalaBeja diliBembaBetawiBenaBafutBadagaBatı BalochiArayaniceBikolB" + - "iniBanjar DiliKomKaraayak diliBishnupriyaBahtiyariBrajBrohiceBodoAkooseB" + - "uryatçaBugisBuluBlinMedumbaKado diliCaribKayuga diliAtsamSebuano diliKig" + - "acaÇibça diliÇağataycaChuukeseMari diliÇinuk diliÇoktav diliÇipevya dili" + - "ÇerokiceŞayenceOrta KürtçeKıpticeCapiznonKırım TürkçesiSeselwa Kreole F" + - "ransızcasıKashubianDakotacaDarginceTaitaDelawareSlavey diliDogribDinka d" + - "iliZarmaDogriAşağı SorbçaOrta KadazanDualaOrtaçağ FelemenkçesiJola-Fonyi" + - "DyulaDazagaEmbuEfikEmilia DiliEski Mısır DiliEkajukElamOrtaçağ İngilizce" + - "siMerkezi YupikçeEwondoEkstremadura DiliFangFilipinceTornedalin FincesiF" + - "onCajun FransızcasıOrtaçağ FransızcasıEski FransızcaArpitancaKuzey Frizc" + - "eDoğu FrizcesiFriuli diliGa diliGagavuzcaGan ÇincesiGayo diliGbayaZerdüş" + - "t DaricesiGeezKiribaticeGilaniceOrtaçağ Yüksek AlmancasıEski Yüksek Alma" + - "ncaGoa KonkanicesiGondi diliGorontalo diliGotçaGrebo diliAntik Yunancaİs" + - "viçre AlmancasıWayuu diliFrafraGusiiGuçinceHaydacaHakka ÇincesiHawaii di" + - "liFiji HintçesiHiligaynon diliHititçeHmongYukarı SorbçaXiang ÇincesiHupa" + - "caIbanİbibio diliIlokoİnguşçaİngriya DiliJamaika Patois DiliLojbanNgomba" + - "MachameYahudi FarsçasıYahudi ArapçasıYutland DiliKarakalpakçaKabiliyeceK" + - "açin diliJjuKambaKawiKabardeyceKanembuTyapMakondeKabuverdianuKenyangKoro" + - "KaingangKhasi diliHotancaKoyra ChiiniÇitral DiliKırmanççaKakoKalenjinKim" + - "bunduKomi-PermyakKonkani diliKosraeanKpelle diliKaraçay-BalkarcaKrioKina" + - "ray-aKarelyacaKurukh diliShambalaBafiaKöln lehçesiKumukçaKutenai diliLad" + - "inoLangiLahndaLamba diliLezgiceLingua Franca NovaLigurcaLivoncaLakotacaL" + - "ombardçaMongoLouisiana KreolcesiLoziKuzey LuriLatgalianLuba-LuluaLuiseno" + - "LundaLuoLushaiLuyiaEdebi ÇinceLazcaMadura DiliMafaMagahiMaithiliMakasarM" + - "andingoMasaiMabaMokşa diliMandarMende diliMeruMorisyenOrtaçağ İrlandacas" + - "ıMakhuwa-MeettoMeta’MicmacMinangkabauMançurya diliManipuri diliMohavk d" + - "iliMossiOva ÇirmişçesiMundangBirden Fazla DilKrikçeMiranda diliMarvariMe" + - "ntawaiMyeneErzyaMazenderancaMin Nan ÇincesiNapoliceNamaAşağı AlmancaNeva" + - "riNiasNiue diliAo NagaKwasioNgiemboonNogaycaEski Nors diliNovialN’KoKuze" + - "y Sotho diliNuerKlasik NevariNyamveziNyankoleNyoroNzima diliOsageOsmanlı" + - " TürkçesiPangasinan diliPehlevi DiliPampangaPapiamentoPalau diliPicard D" + - "iliNijerya Pidgin diliPensilvanya AlmancasıPlautdietschEski FarsçaPalati" + - "n AlmancasıFenike diliPiyemonteceKuzeybatı KafkasyaPohnpeianPrusyacaEski" + - " ProvensalKiçeceChimborazo Highland QuichuaRajasthaniRapanui diliRaroton" + - "ganRomanyolcaRif BerbericesiRomboRomancaRotumanRusinceRovianaUlahçaRwaSa" + - "ndaveYakutçaSamarit AramcasıSamburuSasakSantaliSaurashtraNgambaySanguSic" + - "ilyacaİskoççaSassari SarducaGüney KürtçesiSeneca diliSenaSeriSelkup dili" + - "Koyraboro SenniEski İrlandacaSamogitçeTaşelhitShan diliÇad ArapçasıSidam" + - "o diliAşağı SilezyacaSelayarGüney LaponcasıLule Laponcasıİnari Laponcası" + - "Skolt LaponcasıSoninkeSogdiana DiliSranan TongoSerer diliSahoSaterland F" + - "rizcesiSukuma diliSusuSümerceKomorcaKlasik SüryaniceSüryaniceSilezyacaTu" + - "lucaTimneTesoTerenoTetumTigreTivTokelau diliSahurcaKlingoncaTlingitTalış" + - "çaTamaşekNyasa TongaTok PisinTuroyoTarokoTsakoncaTsimshianTatçaTumbukaT" + - "uvalyancaTasawaqTuvacaOrta Atlas TamazigtiUdmurtçaUgarit diliUmbunduBili" + - "nmeyen DilVaiVenedikçeVeps diliBatı FlamancaMain Frankonya DiliVotçaVõro" + - "VunjoWalserValamoVarayVaşoWarlpiriWu ÇincesiKalmıkçaMegrelceSogaYaoYapça" + - "YangbenYembaNheengatuKantoncaZapotek diliBlis SembolleriZelandacaZenaga " + - "diliStandart Fas TamazigtiZuniceDilbilim içeriği yokZazacaModern Standar" + - "t ArapçaGüney AzericeAvusturya Almancasıİsviçre Yüksek AlmancasıAvustral" + - "ya İngilizcesiKanada İngilizcesiİngiliz İngilizcesiAmerikan İngilizcesiL" + - "atin Amerika İspanyolcasıAvrupa İspanyolcasıMeksika İspanyolcasıKanada F" + - "ransızcasıİsviçre FransızcasıAşağı SaksoncaFlamancaBrezilya Portekizcesi" + - "Avrupa PortekizcesiMoldovacaSırp-Hırvat DiliKongo SvahiliBasitleştirilmi" + - "ş ÇinceGeleneksel Çince" - -var trLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x000b, 0x0013, 0x001d, 0x0021, 0x0028, 0x0030, - 0x0037, 0x003e, 0x0047, 0x004d, 0x0054, 0x0060, 0x006a, 0x0072, - 0x0079, 0x0080, 0x0088, 0x0090, 0x0098, 0x00a2, 0x00ab, 0x00b4, - 0x00c1, 0x00ca, 0x00cf, 0x00d6, 0x00e6, 0x00f0, 0x00f5, 0x00fa, - 0x0101, 0x010c, 0x0114, 0x0117, 0x011e, 0x0128, 0x0131, 0x013c, - 0x0143, 0x014a, 0x0151, 0x015a, 0x015f, 0x0168, 0x0172, 0x017c, - 0x018a, 0x0194, 0x01a4, 0x01ae, 0x01ba, 0x01c5, 0x01cd, 0x01d7, - 0x01e0, 0x01e7, 0x01f0, 0x01fa, 0x0207, 0x020e, 0x0216, 0x0221, - // Entry 40 - 7F - 0x022c, 0x0235, 0x0240, 0x0249, 0x0253, 0x025e, 0x0261, 0x026b, - 0x0275, 0x0284, 0x028b, 0x0294, 0x029d, 0x02a7, 0x02ad, 0x02b5, - 0x02bd, 0x02cb, 0x02d5, 0x02e1, 0x02e7, 0x02f2, 0x02fe, 0x0306, - 0x030a, 0x0315, 0x031f, 0x0326, 0x0333, 0x0338, 0x0341, 0x0348, - 0x0350, 0x0358, 0x0364, 0x036b, 0x0375, 0x038b, 0x0395, 0x039e, - 0x03ac, 0x03b4, 0x03c0, 0x03c7, 0x03ce, 0x03d9, 0x03e3, 0x03f0, - 0x03f7, 0x03fd, 0x0408, 0x041a, 0x042c, 0x043a, 0x0445, 0x044b, - 0x0457, 0x0462, 0x046c, 0x0476, 0x047d, 0x0486, 0x048a, 0x0490, - // Entry 80 - BF - 0x0498, 0x04a2, 0x04ae, 0x04b8, 0x04bf, 0x04c6, 0x04cc, 0x04d7, - 0x04df, 0x04ec, 0x04f7, 0x0507, 0x050c, 0x0518, 0x0521, 0x0529, - 0x0533, 0x0538, 0x0540, 0x054a, 0x0552, 0x0559, 0x056a, 0x0574, - 0x057e, 0x058a, 0x0591, 0x059c, 0x05a4, 0x05a9, 0x05b6, 0x05c0, - 0x05c8, 0x05d2, 0x05da, 0x05e0, 0x05e7, 0x05f2, 0x05f9, 0x0602, - 0x0608, 0x0611, 0x061b, 0x0624, 0x062c, 0x0633, 0x063b, 0x0644, - 0x064a, 0x0652, 0x065a, 0x0660, 0x0666, 0x066c, 0x0671, 0x0678, - 0x067f, 0x068f, 0x0697, 0x069c, 0x06a5, 0x06ae, 0x06b7, 0x06c1, - // Entry C0 - FF - 0x06d3, 0x06e1, 0x06f0, 0x06f6, 0x06fd, 0x0709, 0x070f, 0x071b, - 0x072d, 0x072d, 0x0738, 0x0746, 0x0758, 0x075b, 0x0771, 0x077b, - 0x0781, 0x0787, 0x0790, 0x0799, 0x07a5, 0x07ae, 0x07b3, 0x07bd, - 0x07c4, 0x07cd, 0x07d2, 0x07d8, 0x07dc, 0x07e1, 0x07e7, 0x07f4, - 0x07fd, 0x0802, 0x0806, 0x0811, 0x0814, 0x0821, 0x082c, 0x0835, - 0x0839, 0x0840, 0x0844, 0x084a, 0x0853, 0x0858, 0x085c, 0x0860, - 0x0867, 0x0870, 0x0875, 0x0880, 0x0885, 0x0885, 0x0891, 0x0897, - 0x08a3, 0x08ae, 0x08b6, 0x08bf, 0x08ca, 0x08d6, 0x08e3, 0x08ec, - // Entry 100 - 13F - 0x08f4, 0x0901, 0x0909, 0x0911, 0x0923, 0x093f, 0x0948, 0x0950, - 0x0958, 0x095d, 0x0965, 0x0970, 0x0976, 0x0980, 0x0985, 0x098a, - 0x099a, 0x09a6, 0x09ab, 0x09c2, 0x09cc, 0x09d1, 0x09d7, 0x09db, - 0x09df, 0x09ea, 0x09fb, 0x0a01, 0x0a05, 0x0a1b, 0x0a2b, 0x0a31, - 0x0a42, 0x0a46, 0x0a4f, 0x0a61, 0x0a64, 0x0a77, 0x0a8e, 0x0a9d, - 0x0aa6, 0x0ab2, 0x0ac0, 0x0acb, 0x0ad2, 0x0adb, 0x0ae7, 0x0af0, - 0x0af5, 0x0b07, 0x0b0b, 0x0b15, 0x0b1d, 0x0b39, 0x0b4d, 0x0b5c, - 0x0b66, 0x0b74, 0x0b7a, 0x0b84, 0x0b91, 0x0ba5, 0x0baf, 0x0bb5, - // Entry 140 - 17F - 0x0bba, 0x0bc2, 0x0bc9, 0x0bd7, 0x0be2, 0x0bf0, 0x0bff, 0x0c07, - 0x0c0c, 0x0c1b, 0x0c29, 0x0c2f, 0x0c33, 0x0c3f, 0x0c44, 0x0c4e, - 0x0c5b, 0x0c6e, 0x0c74, 0x0c7a, 0x0c81, 0x0c92, 0x0ca3, 0x0caf, - 0x0cbc, 0x0cc6, 0x0cd1, 0x0cd4, 0x0cd9, 0x0cdd, 0x0ce7, 0x0cee, - 0x0cf2, 0x0cf9, 0x0d05, 0x0d0c, 0x0d10, 0x0d18, 0x0d22, 0x0d29, - 0x0d35, 0x0d41, 0x0d4d, 0x0d51, 0x0d59, 0x0d61, 0x0d6d, 0x0d79, - 0x0d81, 0x0d8c, 0x0d9d, 0x0da1, 0x0daa, 0x0db3, 0x0dbe, 0x0dc6, - 0x0dcb, 0x0dd9, 0x0de1, 0x0ded, 0x0df3, 0x0df8, 0x0dfe, 0x0e08, - // Entry 180 - 1BF - 0x0e0f, 0x0e21, 0x0e28, 0x0e2f, 0x0e37, 0x0e41, 0x0e46, 0x0e59, - 0x0e5d, 0x0e67, 0x0e70, 0x0e7a, 0x0e81, 0x0e86, 0x0e89, 0x0e8f, - 0x0e94, 0x0ea0, 0x0ea5, 0x0eb0, 0x0eb4, 0x0eba, 0x0ec2, 0x0ec9, - 0x0ed1, 0x0ed6, 0x0eda, 0x0ee5, 0x0eeb, 0x0ef5, 0x0ef9, 0x0f01, - 0x0f18, 0x0f26, 0x0f2d, 0x0f33, 0x0f3e, 0x0f4c, 0x0f59, 0x0f64, - 0x0f69, 0x0f7a, 0x0f81, 0x0f91, 0x0f98, 0x0fa4, 0x0fab, 0x0fb3, - 0x0fb8, 0x0fbd, 0x0fc9, 0x0fd9, 0x0fe1, 0x0fe5, 0x0ff5, 0x0ffb, - 0x0fff, 0x1008, 0x100f, 0x1015, 0x101e, 0x1025, 0x1033, 0x1039, - // Entry 1C0 - 1FF - 0x103f, 0x104f, 0x1053, 0x1060, 0x1068, 0x1070, 0x1075, 0x107f, - 0x1084, 0x1097, 0x10a6, 0x10b2, 0x10ba, 0x10c4, 0x10ce, 0x10d9, - 0x10ec, 0x1102, 0x110e, 0x111a, 0x112c, 0x1137, 0x1142, 0x1155, - 0x115e, 0x1166, 0x1174, 0x117b, 0x1196, 0x11a0, 0x11ac, 0x11b6, - 0x11c0, 0x11cf, 0x11d4, 0x11db, 0x11e2, 0x11e9, 0x11f0, 0x11f7, - 0x11fa, 0x1201, 0x1209, 0x121a, 0x1221, 0x1226, 0x122d, 0x1237, - 0x123e, 0x1243, 0x124c, 0x1256, 0x1265, 0x1276, 0x1281, 0x1285, - 0x1289, 0x1294, 0x12a3, 0x12b2, 0x12bc, 0x12c5, 0x12ce, 0x12dd, - // Entry 200 - 23F - 0x12e8, 0x12fa, 0x1301, 0x1312, 0x1321, 0x1332, 0x1342, 0x1349, - 0x1356, 0x1362, 0x136c, 0x1370, 0x1382, 0x138d, 0x1391, 0x1399, - 0x13a0, 0x13b1, 0x13bb, 0x13c4, 0x13ca, 0x13cf, 0x13d3, 0x13d9, - 0x13de, 0x13e3, 0x13e6, 0x13f2, 0x13f9, 0x1402, 0x1409, 0x1413, - 0x141b, 0x1426, 0x142f, 0x1435, 0x143b, 0x1443, 0x144c, 0x1452, - 0x1459, 0x1463, 0x146a, 0x1470, 0x1484, 0x148d, 0x1498, 0x149f, - 0x14ad, 0x14b0, 0x14ba, 0x14c3, 0x14d1, 0x14e4, 0x14ea, 0x14ef, - 0x14f4, 0x14fa, 0x1500, 0x1505, 0x150a, 0x1512, 0x151d, 0x1527, - // Entry 240 - 27F - 0x152f, 0x1533, 0x1536, 0x153c, 0x1543, 0x1548, 0x1551, 0x1559, - 0x1565, 0x1574, 0x157d, 0x1588, 0x159e, 0x15a4, 0x15ba, 0x15c0, - 0x15d7, 0x15e5, 0x15f9, 0x1615, 0x162c, 0x163f, 0x1654, 0x1669, - 0x1685, 0x169a, 0x16b0, 0x16b0, 0x16c4, 0x16db, 0x16ec, 0x16f4, - 0x1709, 0x171c, 0x1725, 0x1737, 0x1744, 0x175d, 0x176e, -} // Size: 1254 bytes - -const ukLangStr string = "" + // Size: 9374 bytes - "афарськаабхазькаавестійськаафрикаансаканамхарськаарагонськаарабськаассам" + - "ськааварськааймараазербайджанськабашкирськабілоруськаболгарськабісламаб" + - "амбарабанґлатибетськабретонськабоснійськакаталонськачеченськачаморрокор" + - "сиканськакрічеськацерковнословʼянськачуваськаваллійськаданськанімецькад" + - "івехідзонг-кеевегрецькаанглійськаесперантоіспанськаестонськабаскськапер" + - "ськафулафінськафіджіфарерськафранцузьказахіднофризькаірландськагаельськ" + - "агалісійськагуаранігуджаратіменкськахаусаівритгіндіхірі-мотухорватськаг" + - "аїтянськаугорськавірменськагерероінтерлінгваіндонезійськаінтерлінгвеігб" + - "осичуаньінупіакідоісландськаіталійськаінуктітутяпонськаяванськагрузинсь" + - "каконґолезькакікуйюкунамаказахськакалааллісуткхмерськаканнадакорейськак" + - "анурікашмірськакурдськакомікорнійськакиргизькалатинськалюксембурзькаган" + - "далімбургійськалінгалалаоськалитовськалуба-катангалатвійськамалагасійсь" + - "камаршалльськамаорімакедонськамалаяламмонгольськамаратхімалайськамальті" + - "йськабірманськанаурупівнічна ндебеленепальськандонганідерландськанорвез" + - "ька (нюношк)норвезька (букмол)ндебелє південнанавахоньянджаокситанськао" + - "джібваоромоодіяосетинськапанджабіпаліпольськапуштупортуґальськакечуарет" + - "ороманськарундірумунськаросійськакіньяруандасанскритсардинськасіндхіпів" + - "нічносаамськасангосингальськасловацькасловенськасамоанськашонасомаліалб" + - "анськасербськасісватісото південнасунданськашведськасуахілітамільськате" + - "лугутаджицькатайськатигриньятуркменськатсванатонґанськатурецькатсонгата" + - "тарськатаїтянськауйгурськаукраїнськаурдуузбецькавендавʼєтнамськаволапʼю" + - "кваллонськаволофкхосаїдишйорубачжуанкитайськазулуськаачехськаачоліаданг" + - "меадигейськаафрихіліагемайнськааккадськаалабамаалеутськапівденноалтайсь" + - "кадавньоанглійськаангікаарамейськаарауканськаараонаарапахоалжирська ара" + - "бськааравакськаасуамериканська мова рухівастурськаавадхібалучібалійська" + - "баерішбасабамумбатак тобагомалабеджабембабетавібенабафутбадагасхіднобел" + - "уджійськабходжпурібікольськабінібанджарськакомсіксікабахтіарібраджбодоа" + - "кусбурятськабугійськабулублінмедумбакаддокарібськакайюгаатсамсебуанська" + - "кігачібчачагатайськачуукськамарійськачинук жаргончокточіпевʼянчерокічей" + - "єннцентральнокурдськакоптськакримськотатарськасейшельська креольськакаш" + - "убськадакотадаргінськатаітаделаварськаслейвдогрибськадінкаджермадогріни" + - "жньолужицькадуаласередньонідерландськадьола-фонідіуладазагаембуефікдавн" + - "ьоєгипетськаекаджукеламськасередньоанглійськаевондофангфіліппінськафонк" + - "ажунська французькасередньофранцузькадавньофранцузькаарпітанськафризька" + - " північнафризька східнафріульськагагагаузькагайогбайягєезгільбертськасер" + - "едньоверхньонімецькадавньоверхньонімецькагондігоронталоготськагребодавн" + - "ьогрецьканімецька (Швейцарія)гусіїкучінхайдагавайськахілігайнонхітітіхм" + - "онгверхньолужицькасянська китайськахупаібанськаібібіоілоканськаінгуська" + - "ложбаннгомбамачамеюдео-перськаюдео-арабськакаракалпацькакабільськакачін" + - "йюкамбакавікабардинськаканембутіапмакондекабувердіанукорокхасіхотаносак" + - "ськакойра чіїнікакокаленджинкімбундукомі-перм’яцькаконканікосраекпеллєк" + - "арачаєво-балкарськакарельськакурукхшамбалабафіаколоніанкумицькакутенаїл" + - "адінолангіландаламбалезгінськалакотамонголуїзіанська креольськалозіпівн" + - "ічнолурськалуба-лулуалуїсеньолундалуомізолуйямадурськамафамагадхімайтхі" + - "лімакасарськамандінгомасаїмабамокшамандарськамендемерумаврикійська крео" + - "льськасередньоірландськамакува-меетометамікмакмінангкабауманчжурськаман" + - "іпурімагавкмоссімундангкілька мовкрікмірандськамарварімиінерзямазандера" + - "нськапівденноміньськанеаполітанськанаманижньонімецьканеварініаськаніуеа" + - "о нагаквазіонгємбунногайськадавньонорвезьканкопівнічна сотонуерневарі к" + - "ласичнаньямвезіньянколеньоронзімаосейджосманськапангасінанськапехлевіпа" + - "мпангапапʼяментопалауанськанігерійсько-креольськадавньоперськафінікійсь" + - "ко-пунічнапонапепруськадавньопровансальськакічераджастханірапануїрарото" + - "нгаромбоциганськаарумунськарвасандавеякутськасамаритянська арамейськаса" + - "мбурусасакськасантальськангамбайсангусицилійськашотландськапівденнокурд" + - "ськасенекасенаселькупськакойраборо сенідавньоірландськатачелітшанськача" + - "дійська арабськасідамопівденносаамськасаамська лулесаамська інаріскольт" + - "-саамськасонінкесогдійськасранан тонгосерерсахосукумасусушумерськакоморс" + - "ькасирійська класичнасирійськатемнетесотеренотетумтигретівтокелауклінго" + - "нськатлінгіттамашекньяса тонгаток-пісінтарокоцимшиантумбукатувалутасава" + - "ктувинськацентральномароканська тамазітудмуртськаугаритськаумбундуневід" + - "ома моваваїводськавуньовалзерськаволайттаварайвашовалпіріуська китайськ" + - "акалмицькасогаяояпянгбенємбакантонськасапотекськаблісса мовазенагастанд" + - "артна марокканська берберськазуньїнемає мовного вмістузазакісучасна ста" + - "ндартна арабськапівденноазербайджанськаверхньонімецька (Швейцарія)англі" + - "йська (США)іспанська (Європа)нижньосаксонськафламандськаєвропейська пор" + - "туґальськамолдавськасербсько-хорватськасуахілі (Конго)китайська (спроще" + - "не письмо)китайська (традиційне письмо)" - -var ukLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0020, 0x0036, 0x0048, 0x0050, 0x0062, 0x0076, - 0x0086, 0x0098, 0x00a8, 0x00b4, 0x00d2, 0x00e6, 0x00fa, 0x010e, - 0x011c, 0x012a, 0x0136, 0x0148, 0x015c, 0x0170, 0x0186, 0x0198, - 0x01a6, 0x01be, 0x01c4, 0x01d0, 0x01f6, 0x0206, 0x021a, 0x0228, - 0x0238, 0x0244, 0x0253, 0x0259, 0x0267, 0x027b, 0x028d, 0x029f, - 0x02b1, 0x02c1, 0x02cf, 0x02d7, 0x02e5, 0x02ef, 0x0301, 0x0315, - 0x0331, 0x0345, 0x0357, 0x036d, 0x037b, 0x038d, 0x039d, 0x03a7, - 0x03b1, 0x03bb, 0x03cc, 0x03e0, 0x03f4, 0x0404, 0x0418, 0x0424, - // Entry 40 - 7F - 0x043a, 0x0454, 0x046a, 0x0472, 0x0480, 0x048e, 0x0494, 0x04a8, - 0x04bc, 0x04ce, 0x04de, 0x04ee, 0x0502, 0x0518, 0x0524, 0x0530, - 0x0542, 0x0558, 0x056a, 0x0578, 0x058a, 0x0596, 0x05aa, 0x05ba, - 0x05c2, 0x05d6, 0x05e8, 0x05fa, 0x0614, 0x061e, 0x0638, 0x0646, - 0x0654, 0x0666, 0x067d, 0x0691, 0x06ab, 0x06c3, 0x06cd, 0x06e3, - 0x06f3, 0x0709, 0x0717, 0x0729, 0x073f, 0x0753, 0x075d, 0x077c, - 0x0790, 0x079c, 0x07b6, 0x07d7, 0x07f8, 0x0817, 0x0823, 0x0831, - 0x0847, 0x0855, 0x085f, 0x0867, 0x087b, 0x088b, 0x0893, 0x08a3, - // Entry 80 - BF - 0x08ad, 0x08c7, 0x08d1, 0x08eb, 0x08f5, 0x0907, 0x0919, 0x092f, - 0x093f, 0x0953, 0x095f, 0x097f, 0x0989, 0x099f, 0x09b1, 0x09c5, - 0x09d9, 0x09e1, 0x09ed, 0x09ff, 0x0a0f, 0x0a1d, 0x0a36, 0x0a4a, - 0x0a5a, 0x0a68, 0x0a7c, 0x0a88, 0x0a9a, 0x0aa8, 0x0ab8, 0x0ace, - 0x0ada, 0x0aee, 0x0afe, 0x0b0a, 0x0b1c, 0x0b30, 0x0b42, 0x0b56, - 0x0b5e, 0x0b6e, 0x0b78, 0x0b8e, 0x0b9e, 0x0bb2, 0x0bbc, 0x0bc6, - 0x0bce, 0x0bda, 0x0be4, 0x0bf6, 0x0c06, 0x0c16, 0x0c20, 0x0c2e, - 0x0c42, 0x0c42, 0x0c52, 0x0c5a, 0x0c68, 0x0c7a, 0x0c88, 0x0c9a, - // Entry C0 - FF - 0x0c9a, 0x0cbc, 0x0cdc, 0x0ce8, 0x0cfc, 0x0d12, 0x0d1e, 0x0d2c, - 0x0d4f, 0x0d4f, 0x0d63, 0x0d63, 0x0d63, 0x0d69, 0x0d95, 0x0da7, - 0x0da7, 0x0db3, 0x0dbf, 0x0dd1, 0x0ddd, 0x0de5, 0x0def, 0x0e02, - 0x0e0e, 0x0e18, 0x0e22, 0x0e2e, 0x0e36, 0x0e40, 0x0e4c, 0x0e70, - 0x0e82, 0x0e96, 0x0e9e, 0x0eb4, 0x0eba, 0x0ec8, 0x0ec8, 0x0ed8, - 0x0ee2, 0x0ee2, 0x0eea, 0x0ef2, 0x0f04, 0x0f16, 0x0f1e, 0x0f26, - 0x0f34, 0x0f3e, 0x0f50, 0x0f5c, 0x0f66, 0x0f66, 0x0f7a, 0x0f82, - 0x0f8c, 0x0fa2, 0x0fb2, 0x0fc4, 0x0fdb, 0x0fe5, 0x0ff5, 0x1001, - // Entry 100 - 13F - 0x100d, 0x1031, 0x1041, 0x1041, 0x1063, 0x108e, 0x10a0, 0x10ac, - 0x10c0, 0x10ca, 0x10e0, 0x10ea, 0x10fe, 0x1108, 0x1114, 0x111e, - 0x113a, 0x113a, 0x1144, 0x116e, 0x1181, 0x118b, 0x1197, 0x119f, - 0x11a7, 0x11a7, 0x11c7, 0x11d5, 0x11e5, 0x1209, 0x1209, 0x1215, - 0x1215, 0x121d, 0x1235, 0x1235, 0x123b, 0x1262, 0x1286, 0x12a6, - 0x12bc, 0x12db, 0x12f6, 0x130a, 0x130e, 0x1320, 0x1320, 0x1328, - 0x1332, 0x1332, 0x133a, 0x1352, 0x1352, 0x1380, 0x13aa, 0x13aa, - 0x13b4, 0x13c6, 0x13d4, 0x13de, 0x13f8, 0x141d, 0x141d, 0x141d, - // Entry 140 - 17F - 0x1427, 0x1431, 0x143b, 0x143b, 0x144d, 0x144d, 0x1461, 0x146d, - 0x1477, 0x1495, 0x14b6, 0x14be, 0x14ce, 0x14da, 0x14ee, 0x14fe, - 0x14fe, 0x14fe, 0x150a, 0x1516, 0x1522, 0x1539, 0x1552, 0x1552, - 0x156c, 0x1580, 0x158a, 0x158e, 0x1598, 0x15a0, 0x15b8, 0x15c6, - 0x15ce, 0x15dc, 0x15f4, 0x15f4, 0x15fc, 0x15fc, 0x1606, 0x1620, - 0x1635, 0x1635, 0x1635, 0x163d, 0x164f, 0x165f, 0x167d, 0x168b, - 0x1697, 0x16a3, 0x16ca, 0x16ca, 0x16ca, 0x16de, 0x16ea, 0x16f8, - 0x1702, 0x1712, 0x1722, 0x1730, 0x173c, 0x1746, 0x1750, 0x175a, - // Entry 180 - 1BF - 0x176e, 0x176e, 0x176e, 0x176e, 0x177a, 0x177a, 0x1784, 0x17af, - 0x17b7, 0x17d5, 0x17d5, 0x17e8, 0x17f8, 0x1802, 0x1808, 0x1810, - 0x1818, 0x1818, 0x1818, 0x182a, 0x1832, 0x1840, 0x1850, 0x1866, - 0x1876, 0x1880, 0x1888, 0x1892, 0x18a6, 0x18b0, 0x18b8, 0x18e5, - 0x1909, 0x1920, 0x1928, 0x1934, 0x194a, 0x1960, 0x1970, 0x197c, - 0x1986, 0x1986, 0x1994, 0x19a7, 0x19af, 0x19c3, 0x19d1, 0x19d1, - 0x19d9, 0x19e1, 0x19fd, 0x1a1d, 0x1a39, 0x1a41, 0x1a5d, 0x1a69, - 0x1a77, 0x1a7f, 0x1a8c, 0x1a98, 0x1aa6, 0x1ab8, 0x1ad6, 0x1ad6, - // Entry 1C0 - 1FF - 0x1adc, 0x1af5, 0x1afd, 0x1b1a, 0x1b2a, 0x1b3a, 0x1b44, 0x1b4e, - 0x1b5a, 0x1b6c, 0x1b88, 0x1b96, 0x1ba6, 0x1bba, 0x1bd0, 0x1bd0, - 0x1bfb, 0x1bfb, 0x1bfb, 0x1c15, 0x1c15, 0x1c3a, 0x1c3a, 0x1c3a, - 0x1c46, 0x1c54, 0x1c7c, 0x1c84, 0x1c84, 0x1c9a, 0x1ca8, 0x1cba, - 0x1cba, 0x1cba, 0x1cc4, 0x1cd6, 0x1cd6, 0x1cd6, 0x1cd6, 0x1cea, - 0x1cf0, 0x1cfe, 0x1d0e, 0x1d3d, 0x1d4b, 0x1d5d, 0x1d73, 0x1d73, - 0x1d81, 0x1d8b, 0x1da1, 0x1db7, 0x1db7, 0x1dd7, 0x1de3, 0x1deb, - 0x1deb, 0x1e01, 0x1e1c, 0x1e3c, 0x1e3c, 0x1e4a, 0x1e58, 0x1e7b, - // Entry 200 - 23F - 0x1e87, 0x1e87, 0x1e87, 0x1ea7, 0x1ec0, 0x1edb, 0x1ef8, 0x1f06, - 0x1f1a, 0x1f31, 0x1f3b, 0x1f43, 0x1f43, 0x1f4f, 0x1f57, 0x1f69, - 0x1f7b, 0x1f9e, 0x1fb0, 0x1fb0, 0x1fb0, 0x1fba, 0x1fc2, 0x1fce, - 0x1fd8, 0x1fe2, 0x1fe8, 0x1ff6, 0x1ff6, 0x200c, 0x201a, 0x201a, - 0x2028, 0x203d, 0x204e, 0x204e, 0x205a, 0x205a, 0x2068, 0x2068, - 0x2076, 0x2082, 0x2090, 0x20a2, 0x20db, 0x20ef, 0x2103, 0x2111, - 0x212a, 0x2130, 0x2130, 0x2130, 0x2130, 0x2130, 0x213e, 0x213e, - 0x2148, 0x215c, 0x216c, 0x2176, 0x217e, 0x218c, 0x21a9, 0x21bb, - // Entry 240 - 27F - 0x21bb, 0x21c3, 0x21c7, 0x21cb, 0x21d7, 0x21df, 0x21df, 0x21f3, - 0x2209, 0x221e, 0x221e, 0x222a, 0x226c, 0x2276, 0x229c, 0x22a8, - 0x22dc, 0x230a, 0x230a, 0x233d, 0x233d, 0x233d, 0x233d, 0x235a, - 0x235a, 0x237b, 0x237b, 0x237b, 0x237b, 0x237b, 0x239b, 0x23b1, - 0x23b1, 0x23e2, 0x23f6, 0x241b, 0x2436, 0x2468, 0x249e, -} // Size: 1254 bytes - -const urLangStr string = "" + // Size: 5431 bytes - "افارابقازیانافریقیاکانامہاریاراگونیزعربیآسامیاواریایماراآذربائیجانیباشکی" + - "ربیلاروسیبلغاریبسلامابمبارابنگالیتبتیبریٹنبوسنیکیٹالانچیچنچیماروکوراسیک" + - "نچیکچرچ سلاوکچوواشویلشڈینشجرمنڈیویہیژونگکھاایویونانیانگریزیایسپرانٹوہسپ" + - "انویاسٹونینباسکیفارسیفولہفینیشفجیفیروئیزفرانسیسیمغربی فریسیئنآئیرِشسکاٹ" + - "ش گیلکگالیشیائیگُارانیگجراتیمینکسہؤساعبرانیہندیکراتیہیتیہنگیرینآرمینیائ" + - "یہریروبین لسانیاتانڈونیثیائیاِگبوسچوان ایایڈوآئس لینڈکاطالویاینُکٹیٹٹجا" + - "پانیجاویجارجیائیکانگوکیکویوکونیاماقزاخكالاليستخمیرکنّاڈاکوریائیکنوریکشم" + - "یریکردشکومیکورنشکرغیزیلاطینیلکسمبرگیشگینڈالیمبرگشلِنگَلالاؤلیتھوینینلبا" + - "-كاتانجالیٹوینملاگاسیمارشلیزماؤریمقدونیائیمالایالممنگولینمراٹهیمالےمالٹی" + - "برمیناؤروشمالی دبیلنیپالینڈونگاڈچنارویجین نینورسکنارویجین بوکملجنوبی نڈ" + - "یبیلینواجونیانجاآكسیٹاناورومواڑیہاوسیٹکپنجابیپولشپشتوپُرتگالیکویچوآروما" + - "نشرونڈیرومینینروسیکینیاروانڈاسنسکرتسردینینسندھیشمالی سامیساںغوسنہالاسلو" + - "واکسلووینیائیساموآنشوناصومالیالبانیسربینسواتیجنوبی سوتھوسنڈانیزسویڈشسوا" + - "حلیتملتیلگوتاجکتھائیٹگرینیاترکمانسواناٹونگنترکیزونگاتاتارتاہیتییوئگہریو" + - "کرینیائیاردوازبیکوینڈاویتنامیوولاپوکوالونوولوفژوسایدشیوروباچینیزولواچائ" + - "ینیزاکولیادانگمےادیگھےاغماینوالیوتجنوبی الٹائیانگیکاماپوچےاراپاہوآسواسٹ" + - "وریائیاوادھیبالینیزباسابیمبابینامغربی بلوچیبھوجپوریبینیسکسیکابوڈوبگینیز" + - "بلینسیبوآنوچیگاچوکیزماریچاکٹاؤچیروکیچینّےسینٹرل کردشسیسلوا کریولے فرانس" + - "یسیڈاکوٹادرگواتائتادوگریبزرماذیلی سربیائیدوالاجولا فونيادزاگاامبوایفِکا" + - "یکاجویایوانڈوفلیپینوفونکاجن فرانسیسیفریولیائیگاغاغاوزganگیزگلبرتیزگوران" + - "ٹالوسوئس جرمنگسیگوئچ انhakہوائیہالیگینونہمانگاپر سربیائیhsnہیوپاایباناب" + - "ی بیوایلوکوانگوشلوجباننگومباماشیمقبائلیکاچنجے جوکامباکبارڈینتیاپماكونده" + - "كابويرديانوکوروکھاسیكويرا شينيکاکوكالينجينکیمبونڈوکومی پرمیاککونکنیکیپی" + - "لّےکراچے بالکرکیرلینکوروکھشامبالابافياکولوگنیائیکومیکلیڈینولانگیلیزگیان" + - "لاکوٹالوزیانا کریوللوزیشمالی لریلیوبا لولوآلونڈالومیزولویامدورسیمگاہیمی" + - "تھیلیمکاسرمسائیموکشامیندےمیروموریسیینماخاوا-ميتومیٹامکمیکمنانگکباؤمنی پ" + - "وریموہاکموسیمنڈانگمتعدد زبانیںکریکمیرانڈیزارزیامزندرانیnanنیاپولیٹنناما" + - "ادنی جرمننیوارینیاسنیویائیكوايسونگیمبوننوگائیاینکوشمالی سوتھونویرنینکول" + - "پنگاسنانپامپنگاپاپیامینٹوپالاوننائجیریائی پڈگنپارسیكيشیرپانویراروتونگان" + - "رومبوارومانیرواسنڈاوےساکھاسامبوروسنتالینگامبےسانگوسیسیلینسکاٹجنوبی کردس" + - "یناكويرابورو سينیتشلحيتشانجنوبی سامیلول سامیاناری سامیسکولٹ سامیسوننکےس" + - "رانن ٹونگوساہوسکوماکوموریائیسریانیٹمنےتیسوٹیٹمٹگرےکلنگنٹوک پِسِنٹوروکوٹ" + - "مبوکاتووالوتاساواقتووینینسینٹرل ایٹلس ٹمازائٹادمورتاومبوندونامعلوم زبان" + - "وائیونجووالسروولایتاوارےوارلپیریwuuکالمیکسوگایانگبینیمباکینٹونیزاسٹینڈر" + - "ڈ مراقشی تمازیقیزونیکوئی لسانی مواد نہیںزازاماڈرن اسٹینڈرڈ عربیآزربائیج" + - "انی (عربی)آسٹریائی جرمنسوئس ہائی جرمنآسٹریلیائی انگریزیکینیڈین انگریزیب" + - "رطانوی انگریزیامریکی انگریزیلاطینی امریکی ہسپانوییورپی ہسپانویمیکسیکن ہ" + - "سپانویکینیڈین فرانسیسیسوئس فرینچادنی سیکسنفلیمِشبرازیلی پرتگالییورپی پر" + - "تگالیمالدوواسربو-کروئیشینکانگو سواحلیچینی (آسان کردہ)روایتی چینی" - -var urLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x0018, 0x0018, 0x0024, 0x002c, 0x0038, 0x0048, - 0x0050, 0x005a, 0x0064, 0x0070, 0x0086, 0x0092, 0x00a2, 0x00ae, - 0x00ba, 0x00c6, 0x00d2, 0x00da, 0x00e4, 0x00ee, 0x00fc, 0x0104, - 0x0110, 0x0120, 0x0120, 0x0126, 0x0137, 0x0141, 0x0149, 0x0151, - 0x0159, 0x0165, 0x0173, 0x0179, 0x0185, 0x0193, 0x01a5, 0x01b3, - 0x01c1, 0x01cb, 0x01d5, 0x01dd, 0x01e7, 0x01ed, 0x01fb, 0x020b, - 0x0224, 0x0230, 0x0243, 0x0255, 0x0263, 0x026f, 0x0279, 0x0281, - 0x028d, 0x0295, 0x0295, 0x029f, 0x02a7, 0x02b5, 0x02c7, 0x02d1, - // Entry 40 - 7F - 0x02e6, 0x02fc, 0x02fc, 0x0306, 0x0315, 0x0315, 0x031d, 0x032e, - 0x033a, 0x034c, 0x0358, 0x0360, 0x0370, 0x037a, 0x0386, 0x0394, - 0x039c, 0x03ac, 0x03b4, 0x03c0, 0x03ce, 0x03d8, 0x03e4, 0x03ec, - 0x03f4, 0x03fe, 0x040a, 0x0416, 0x0428, 0x0432, 0x0440, 0x044e, - 0x0454, 0x0466, 0x047b, 0x0487, 0x0495, 0x04a3, 0x04ad, 0x04bf, - 0x04cf, 0x04dd, 0x04e9, 0x04f1, 0x04fb, 0x0503, 0x050d, 0x0520, - 0x052c, 0x0538, 0x053c, 0x055b, 0x0576, 0x058f, 0x0599, 0x05a5, - 0x05b3, 0x05b3, 0x05bf, 0x05c7, 0x05d3, 0x05df, 0x05df, 0x05e7, - // Entry 80 - BF - 0x05ef, 0x05ff, 0x060b, 0x0617, 0x0621, 0x062f, 0x0637, 0x064d, - 0x0659, 0x0667, 0x0671, 0x0684, 0x068e, 0x069a, 0x06a6, 0x06ba, - 0x06c6, 0x06ce, 0x06da, 0x06e6, 0x06f0, 0x06fa, 0x070f, 0x071d, - 0x0727, 0x0733, 0x0739, 0x0743, 0x074b, 0x0755, 0x0763, 0x076f, - 0x0779, 0x0783, 0x078b, 0x0795, 0x079f, 0x07ab, 0x07b7, 0x07cb, - 0x07d3, 0x07dd, 0x07e7, 0x07f5, 0x0803, 0x080d, 0x0817, 0x081f, - 0x0825, 0x0831, 0x0831, 0x0839, 0x0841, 0x0851, 0x085b, 0x0869, - 0x0875, 0x0875, 0x0875, 0x087b, 0x0883, 0x0883, 0x0883, 0x088d, - // Entry C0 - FF - 0x088d, 0x08a4, 0x08a4, 0x08b0, 0x08b0, 0x08bc, 0x08bc, 0x08ca, - 0x08ca, 0x08ca, 0x08ca, 0x08ca, 0x08ca, 0x08d0, 0x08d0, 0x08e2, - 0x08e2, 0x08ee, 0x08ee, 0x08fc, 0x08fc, 0x0904, 0x0904, 0x0904, - 0x0904, 0x0904, 0x090e, 0x090e, 0x0916, 0x0916, 0x0916, 0x092b, - 0x093b, 0x093b, 0x0943, 0x0943, 0x0943, 0x094f, 0x094f, 0x094f, - 0x094f, 0x094f, 0x0957, 0x0957, 0x0957, 0x0963, 0x0963, 0x096b, - 0x096b, 0x096b, 0x096b, 0x096b, 0x096b, 0x096b, 0x0979, 0x0981, - 0x0981, 0x0981, 0x098b, 0x0993, 0x0993, 0x099f, 0x099f, 0x09ab, - // Entry 100 - 13F - 0x09b5, 0x09ca, 0x09ca, 0x09ca, 0x09ca, 0x09f4, 0x09f4, 0x0a00, - 0x0a0a, 0x0a14, 0x0a14, 0x0a14, 0x0a20, 0x0a20, 0x0a28, 0x0a28, - 0x0a3f, 0x0a3f, 0x0a49, 0x0a49, 0x0a5c, 0x0a5c, 0x0a66, 0x0a6e, - 0x0a78, 0x0a78, 0x0a78, 0x0a86, 0x0a86, 0x0a86, 0x0a86, 0x0a94, - 0x0a94, 0x0a94, 0x0aa2, 0x0aa2, 0x0aa8, 0x0ac1, 0x0ac1, 0x0ac1, - 0x0ac1, 0x0ac1, 0x0ac1, 0x0ad3, 0x0ad7, 0x0ae3, 0x0ae6, 0x0ae6, - 0x0ae6, 0x0ae6, 0x0aec, 0x0afa, 0x0afa, 0x0afa, 0x0afa, 0x0afa, - 0x0afa, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b0c, 0x0b1d, 0x0b1d, 0x0b1d, - // Entry 140 - 17F - 0x0b23, 0x0b30, 0x0b30, 0x0b33, 0x0b3d, 0x0b3d, 0x0b4f, 0x0b4f, - 0x0b59, 0x0b6e, 0x0b71, 0x0b7b, 0x0b85, 0x0b92, 0x0b9e, 0x0ba8, - 0x0ba8, 0x0ba8, 0x0bb4, 0x0bc0, 0x0bca, 0x0bca, 0x0bca, 0x0bca, - 0x0bca, 0x0bd6, 0x0bde, 0x0be7, 0x0bf1, 0x0bf1, 0x0bff, 0x0bff, - 0x0c07, 0x0c15, 0x0c2b, 0x0c2b, 0x0c33, 0x0c33, 0x0c3d, 0x0c3d, - 0x0c50, 0x0c50, 0x0c50, 0x0c58, 0x0c68, 0x0c78, 0x0c8d, 0x0c99, - 0x0c99, 0x0ca7, 0x0cbc, 0x0cbc, 0x0cbc, 0x0cc8, 0x0cd4, 0x0ce2, - 0x0cec, 0x0d00, 0x0d0a, 0x0d0a, 0x0d16, 0x0d20, 0x0d20, 0x0d20, - // Entry 180 - 1BF - 0x0d2e, 0x0d2e, 0x0d2e, 0x0d2e, 0x0d3a, 0x0d3a, 0x0d3a, 0x0d53, - 0x0d5b, 0x0d6c, 0x0d6c, 0x0d81, 0x0d81, 0x0d8b, 0x0d8f, 0x0d97, - 0x0d9f, 0x0d9f, 0x0d9f, 0x0dab, 0x0dab, 0x0db5, 0x0dc3, 0x0dcd, - 0x0dcd, 0x0dd7, 0x0dd7, 0x0de1, 0x0de1, 0x0deb, 0x0df3, 0x0e03, - 0x0e03, 0x0e18, 0x0e20, 0x0e2a, 0x0e3c, 0x0e3c, 0x0e4b, 0x0e55, - 0x0e5d, 0x0e5d, 0x0e69, 0x0e80, 0x0e88, 0x0e98, 0x0e98, 0x0e98, - 0x0e98, 0x0ea2, 0x0eb2, 0x0eb5, 0x0ec7, 0x0ecf, 0x0ee0, 0x0eec, - 0x0ef4, 0x0f02, 0x0f02, 0x0f0e, 0x0f1c, 0x0f28, 0x0f28, 0x0f28, - // Entry 1C0 - 1FF - 0x0f32, 0x0f47, 0x0f4f, 0x0f4f, 0x0f4f, 0x0f5b, 0x0f5b, 0x0f5b, - 0x0f5b, 0x0f5b, 0x0f6b, 0x0f6b, 0x0f79, 0x0f8d, 0x0f99, 0x0f99, - 0x0fb6, 0x0fb6, 0x0fb6, 0x0fb6, 0x0fb6, 0x0fb6, 0x0fb6, 0x0fb6, - 0x0fb6, 0x0fc0, 0x0fc0, 0x0fc8, 0x0fc8, 0x0fc8, 0x0fd4, 0x0fe8, - 0x0fe8, 0x0fe8, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, 0x0ff2, 0x1000, - 0x1006, 0x1012, 0x101c, 0x101c, 0x102a, 0x102a, 0x1036, 0x1036, - 0x1042, 0x104c, 0x105a, 0x1062, 0x1062, 0x1073, 0x1073, 0x107b, - 0x107b, 0x107b, 0x1096, 0x1096, 0x1096, 0x10a2, 0x10a8, 0x10a8, - // Entry 200 - 23F - 0x10a8, 0x10a8, 0x10a8, 0x10bb, 0x10ca, 0x10dd, 0x10f0, 0x10fc, - 0x10fc, 0x1111, 0x1111, 0x1119, 0x1119, 0x1123, 0x1123, 0x1123, - 0x1135, 0x1135, 0x1141, 0x1141, 0x1141, 0x1149, 0x1151, 0x1151, - 0x1159, 0x1161, 0x1161, 0x1161, 0x1161, 0x116b, 0x116b, 0x116b, - 0x116b, 0x116b, 0x117c, 0x117c, 0x1188, 0x1188, 0x1188, 0x1188, - 0x1194, 0x11a0, 0x11ae, 0x11bc, 0x11e2, 0x11ee, 0x11ee, 0x11fe, - 0x1215, 0x121d, 0x121d, 0x121d, 0x121d, 0x121d, 0x121d, 0x121d, - 0x1225, 0x122f, 0x123d, 0x1245, 0x1245, 0x1255, 0x1258, 0x1264, - // Entry 240 - 27F - 0x1264, 0x126c, 0x126c, 0x126c, 0x127a, 0x1282, 0x1282, 0x1292, - 0x1292, 0x1292, 0x1292, 0x1292, 0x12be, 0x12c6, 0x12eb, 0x12f3, - 0x1317, 0x1338, 0x1351, 0x136b, 0x138e, 0x13ab, 0x13c8, 0x13e3, - 0x140b, 0x1424, 0x1441, 0x1441, 0x1460, 0x1473, 0x1486, 0x1492, - 0x14af, 0x14c8, 0x14d6, 0x14ef, 0x1506, 0x1522, 0x1537, -} // Size: 1254 bytes - -const uzLangStr string = "" + // Size: 2929 bytes - "afarabxazafrikaansakanamxararagonarabassamavaraymaraozarbayjonboshqirdbe" + - "larusbolgarbislamabambarabengaltibetbretonbosniykatalanchechenchamorroko" + - "rsikanchexslavyan (cherkov)chuvashvalliydannemischadivexidzongkaevegreki" + - "nglizchaesperantoispanchaestonchabaskforsfulafinchafijifarerchafransuzch" + - "ag‘arbiy frizirlandshotland-gelgalisiyguaranigujarotmenxausaivrithindxor" + - "vatgaityanvengerarmangererointerlingvaindonezigbosichuanidoislanditalyan" + - "inuktitutyaponyavangruzinchakikuyukvanyamaqozoqchagrenlandxmerkannadakor" + - "eyschakanurikashmirchakurdchakomikornqirgʻizchalotinchalyuksemburgchagan" + - "dalimburglingalalaoslitvaluba-katangalatishchamalagasiymarshallmaorimake" + - "donmalayalammo‘g‘ulmaratximalaymaltiybirmannaurushimoliy ndebelenepalndo" + - "ngagollandnorveg-nyunorsknorveg-bokmaljanubiy ndebelnavaxochevaoksitanor" + - "omooriyaosetinpanjobchapolyakchapushtuportugalchakechuaromanshrundirumin" + - "charuschakinyaruandasanskritsardinsindxishimoliy saamsangosingalslovakch" + - "aslovenchasamoashonasomalichaalbanserbchasvatijanubiy sotosundanshvedsua" + - "xilitamiltelugutojiktaytigrinyaturkmantsvanatonganturktsongatatartaitiuy" + - "g‘urukrainurduo‘zbekvendavyetnamvolapyukvallonvolofkxosaidishyorubaxitoy" + - "zuluachinadangmeadigeyagemaynualeutjanubiy oltoyangikamapuchearapaxoasua" + - "sturiyavadxibalibasabembabenag‘arbiy balujbxojpuribinisiksikabodobugibli" + - "nsebuanchigachukotmarichoktavcherokicheyennsorani-kurdkreol (Seyshel)dak" + - "otadargvataitadogribzarmaquyi sorbchadualadiola-fognidazagembuefikekajuk" + - "evondofilipinchafonfriulgagagauzgangeezgilbertgorontalonemis (Shveytsari" + - "ya)gusiigvichinhakgavaychahiligaynonxmongyuqori sorbhsnxupaibanibibioilo" + - "koingushlojbanngombamachamekabilkachinkajikambakabardintyapmakondekabuve" + - "rdianukorokxasikoyra-chiinikakokalenjinkimbundukomi-permyakkonkankpelleq" + - "orachoy-bolqorkarelkuruxshambalabafiyakyolnqo‘miqladinolangilezginlakota" + - "lozishimoliy luriluba-lulualundaluolushayluhyamadurmagahimaythilimakasar" + - "masaymokshamendemerumorisyenmaxuva-mittometamikmakminangkabaumanipurmoha" + - "ukmossimundangbir nechta tilkrikmirandaerzyamozandaronnanneapolitannamaq" + - "uyi nemisnevarniasniuekvasiongiyembunno‘g‘aynkoshimoliy sotonuernyankole" + - "pangasinanpampangapapiyamentopalaukreol (Nigeriya)prusskicherapanuirarot" + - "onganromboaruminruandasandavesaxasamburusantalngambaysangusitsiliyashotl" + - "andjanubiy kurdsenakoyraboro-sennitashelxitshanjanubiy saamlule-saaminar" + - "i-saamskolt-saamsoninkesranan-tongosahosukumaqamarsuriyachatimnetesotetu" + - "mtigreklingontok-piksintarokotumbukatuvalutasavaktuvamarkaziy atlas tama" + - "zigxtudmurtumbundunoma’lum tilvaivunjovalisvolamovarayvalbiriwuuqalmoqso" + - "gayangbenyembakantontamazigxtzunitil tarkibi yo‘qzazastandart arabnemis " + - "(Avstriya)yuqori nemis (Shveytsariya)ingliz (Avstraliya)ingliz (Kanada)i" + - "ngliz (Britaniya)ingliz (Amerika)ispan (Lotin Amerikasi)ispan (Yevropa)i" + - "span (Meksika)fransuz (Kanada)fransuz (Shveytsariya)quyi saksonflamandpo" + - "rtugal (Braziliya)portugal (Yevropa)moldovansuaxili (Kongo)xitoy (soddal" + - "ashgan)xitoy (an’anaviy)" - -var uzLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x0009, 0x0009, 0x0012, 0x0016, 0x001b, 0x0021, - 0x0025, 0x002a, 0x002e, 0x0034, 0x003e, 0x0046, 0x004d, 0x0053, - 0x005a, 0x0061, 0x0067, 0x006c, 0x0072, 0x0078, 0x007f, 0x0086, - 0x008e, 0x0096, 0x0096, 0x009a, 0x00ab, 0x00b2, 0x00b8, 0x00bb, - 0x00c3, 0x00c9, 0x00d0, 0x00d3, 0x00d7, 0x00e0, 0x00e9, 0x00f1, - 0x00f9, 0x00fd, 0x0101, 0x0105, 0x010b, 0x010f, 0x0117, 0x0121, - 0x012f, 0x0135, 0x0141, 0x0148, 0x014f, 0x0156, 0x0159, 0x015e, - 0x0163, 0x0167, 0x0167, 0x016d, 0x0174, 0x017a, 0x017f, 0x0185, - // Entry 40 - 7F - 0x0190, 0x0197, 0x0197, 0x019b, 0x01a2, 0x01a2, 0x01a5, 0x01ab, - 0x01b2, 0x01bb, 0x01c0, 0x01c5, 0x01ce, 0x01ce, 0x01d4, 0x01dc, - 0x01e4, 0x01ec, 0x01f0, 0x01f7, 0x0200, 0x0206, 0x0210, 0x0217, - 0x021b, 0x021f, 0x022a, 0x0232, 0x0240, 0x0245, 0x024c, 0x0253, - 0x0257, 0x025c, 0x0268, 0x0271, 0x027a, 0x0282, 0x0287, 0x028e, - 0x0297, 0x02a2, 0x02a9, 0x02ae, 0x02b4, 0x02ba, 0x02bf, 0x02cf, - 0x02d4, 0x02da, 0x02e1, 0x02f0, 0x02fd, 0x030b, 0x0311, 0x0316, - 0x031d, 0x031d, 0x0322, 0x0327, 0x032d, 0x0336, 0x0336, 0x033f, - // Entry 80 - BF - 0x0345, 0x0350, 0x0356, 0x035d, 0x0362, 0x036a, 0x0370, 0x037b, - 0x0383, 0x0389, 0x038f, 0x039c, 0x03a1, 0x03a7, 0x03b0, 0x03b9, - 0x03be, 0x03c3, 0x03cc, 0x03d1, 0x03d8, 0x03dd, 0x03e9, 0x03ef, - 0x03f4, 0x03fb, 0x0400, 0x0406, 0x040b, 0x040e, 0x0416, 0x041d, - 0x0423, 0x0429, 0x042d, 0x0433, 0x0438, 0x043d, 0x0445, 0x044b, - 0x044f, 0x0457, 0x045c, 0x0463, 0x046b, 0x0471, 0x0476, 0x047b, - 0x0480, 0x0486, 0x0486, 0x048b, 0x048f, 0x0494, 0x0494, 0x049b, - 0x04a1, 0x04a1, 0x04a1, 0x04a5, 0x04a9, 0x04a9, 0x04a9, 0x04ae, - // Entry C0 - FF - 0x04ae, 0x04bb, 0x04bb, 0x04c1, 0x04c1, 0x04c8, 0x04c8, 0x04cf, - 0x04cf, 0x04cf, 0x04cf, 0x04cf, 0x04cf, 0x04d2, 0x04d2, 0x04d9, - 0x04d9, 0x04df, 0x04df, 0x04e3, 0x04e3, 0x04e7, 0x04e7, 0x04e7, - 0x04e7, 0x04e7, 0x04ec, 0x04ec, 0x04f0, 0x04f0, 0x04f0, 0x04ff, - 0x0507, 0x0507, 0x050b, 0x050b, 0x050b, 0x0512, 0x0512, 0x0512, - 0x0512, 0x0512, 0x0516, 0x0516, 0x0516, 0x051a, 0x051a, 0x051e, - 0x051e, 0x051e, 0x051e, 0x051e, 0x051e, 0x051e, 0x0524, 0x0529, - 0x0529, 0x0529, 0x052f, 0x0533, 0x0533, 0x053a, 0x053a, 0x0541, - // Entry 100 - 13F - 0x0548, 0x0553, 0x0553, 0x0553, 0x0553, 0x0562, 0x0562, 0x0568, - 0x056e, 0x0573, 0x0573, 0x0573, 0x0579, 0x0579, 0x057e, 0x057e, - 0x058a, 0x058a, 0x058f, 0x058f, 0x059a, 0x059a, 0x059f, 0x05a3, - 0x05a7, 0x05a7, 0x05a7, 0x05ad, 0x05ad, 0x05ad, 0x05ad, 0x05b3, - 0x05b3, 0x05b3, 0x05bd, 0x05bd, 0x05c0, 0x05c0, 0x05c0, 0x05c0, - 0x05c0, 0x05c0, 0x05c0, 0x05c5, 0x05c7, 0x05cd, 0x05d0, 0x05d0, - 0x05d0, 0x05d0, 0x05d4, 0x05db, 0x05db, 0x05db, 0x05db, 0x05db, - 0x05db, 0x05e4, 0x05e4, 0x05e4, 0x05e4, 0x05f8, 0x05f8, 0x05f8, - // Entry 140 - 17F - 0x05fd, 0x0604, 0x0604, 0x0607, 0x060f, 0x060f, 0x0619, 0x0619, - 0x061e, 0x0629, 0x062c, 0x0630, 0x0634, 0x063a, 0x063f, 0x0645, - 0x0645, 0x0645, 0x064b, 0x0651, 0x0658, 0x0658, 0x0658, 0x0658, - 0x0658, 0x065d, 0x0663, 0x0667, 0x066c, 0x066c, 0x0674, 0x0674, - 0x0678, 0x067f, 0x068b, 0x068b, 0x068f, 0x068f, 0x0694, 0x0694, - 0x06a0, 0x06a0, 0x06a0, 0x06a4, 0x06ac, 0x06b4, 0x06c0, 0x06c6, - 0x06c6, 0x06cc, 0x06db, 0x06db, 0x06db, 0x06e0, 0x06e5, 0x06ed, - 0x06f3, 0x06f8, 0x0700, 0x0700, 0x0706, 0x070b, 0x070b, 0x070b, - // Entry 180 - 1BF - 0x0711, 0x0711, 0x0711, 0x0711, 0x0717, 0x0717, 0x0717, 0x0717, - 0x071b, 0x0728, 0x0728, 0x0732, 0x0732, 0x0737, 0x073a, 0x0740, - 0x0745, 0x0745, 0x0745, 0x074a, 0x074a, 0x0750, 0x0758, 0x075f, - 0x075f, 0x0764, 0x0764, 0x076a, 0x076a, 0x076f, 0x0773, 0x077b, - 0x077b, 0x0787, 0x078b, 0x0791, 0x079c, 0x079c, 0x07a3, 0x07a9, - 0x07ae, 0x07ae, 0x07b5, 0x07c3, 0x07c7, 0x07ce, 0x07ce, 0x07ce, - 0x07ce, 0x07d3, 0x07dd, 0x07e0, 0x07ea, 0x07ee, 0x07f8, 0x07fd, - 0x0801, 0x0805, 0x0805, 0x080b, 0x0814, 0x081f, 0x081f, 0x081f, - // Entry 1C0 - 1FF - 0x0822, 0x082f, 0x0833, 0x0833, 0x0833, 0x083b, 0x083b, 0x083b, - 0x083b, 0x083b, 0x0845, 0x0845, 0x084d, 0x0858, 0x085d, 0x085d, - 0x086d, 0x086d, 0x086d, 0x086d, 0x086d, 0x086d, 0x086d, 0x086d, - 0x086d, 0x0872, 0x0872, 0x0877, 0x0877, 0x0877, 0x087e, 0x0888, - 0x0888, 0x0888, 0x088d, 0x088d, 0x088d, 0x088d, 0x088d, 0x0893, - 0x0899, 0x08a0, 0x08a4, 0x08a4, 0x08ab, 0x08ab, 0x08b1, 0x08b1, - 0x08b8, 0x08bd, 0x08c6, 0x08ce, 0x08ce, 0x08da, 0x08da, 0x08de, - 0x08de, 0x08de, 0x08ed, 0x08ed, 0x08ed, 0x08f6, 0x08fa, 0x08fa, - // Entry 200 - 23F - 0x08fa, 0x08fa, 0x08fa, 0x0906, 0x090f, 0x0919, 0x0923, 0x092a, - 0x092a, 0x0936, 0x0936, 0x093a, 0x093a, 0x0940, 0x0940, 0x0940, - 0x0945, 0x0945, 0x094e, 0x094e, 0x094e, 0x0953, 0x0957, 0x0957, - 0x095c, 0x0961, 0x0961, 0x0961, 0x0961, 0x0968, 0x0968, 0x0968, - 0x0968, 0x0968, 0x0972, 0x0972, 0x0978, 0x0978, 0x0978, 0x0978, - 0x097f, 0x0985, 0x098c, 0x0990, 0x09a8, 0x09ae, 0x09ae, 0x09b5, - 0x09c3, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, 0x09c6, - 0x09cb, 0x09d0, 0x09d6, 0x09db, 0x09db, 0x09e2, 0x09e5, 0x09eb, - // Entry 240 - 27F - 0x09eb, 0x09ef, 0x09ef, 0x09ef, 0x09f6, 0x09fb, 0x09fb, 0x0a01, - 0x0a01, 0x0a01, 0x0a01, 0x0a01, 0x0a0a, 0x0a0e, 0x0a20, 0x0a24, - 0x0a31, 0x0a31, 0x0a41, 0x0a5c, 0x0a6f, 0x0a7e, 0x0a90, 0x0aa0, - 0x0ab7, 0x0ac6, 0x0ad5, 0x0ad5, 0x0ae5, 0x0afb, 0x0b06, 0x0b0d, - 0x0b21, 0x0b33, 0x0b3b, 0x0b3b, 0x0b4a, 0x0b5e, 0x0b71, -} // Size: 1254 bytes - -const viLangStr string = "" + // Size: 8700 bytes - "Tiếng AfarTiếng AbkhaziaTiếng AvestanTiếng AfrikaansTiếng AkanTiếng Amha" + - "ricTiếng AragonTiếng Ả RậpTiếng AssamTiếng AvaricTiếng AymaraTiếng Azerb" + - "aijanTiếng BashkirTiếng BelarusTiếng BulgariaTiếng BislamaTiếng BambaraT" + - "iếng BanglaTiếng Tây TạngTiếng BretonTiếng BosniaTiếng CatalanTiếng Chec" + - "henTiếng ChamorroTiếng CorsicaTiếng CreeTiếng SécTiếng Slavơ Nhà thờTiến" + - "g ChuvashTiếng WalesTiếng Đan MạchTiếng ĐứcTiếng DivehiTiếng DzongkhaTiế" + - "ng EweTiếng Hy LạpTiếng AnhTiếng Quốc Tế NgữTiếng Tây Ban NhaTiếng Eston" + - "iaTiếng BasqueTiếng Ba TưTiếng FulahTiếng Phần LanTiếng FijiTiếng FaroeT" + - "iếng PhápTiếng FrisiaTiếng IrelandTiếng Gael ScotlandTiếng GalicianTiếng" + - " GuaraniTiếng GujaratiTiếng ManxTiếng HausaTiếng Do TháiTiếng HindiTiếng" + - " Hiri MotuTiếng CroatiaTiếng HaitiTiếng HungaryTiếng ArmeniaTiếng Herero" + - "Tiếng Khoa Học Quốc TếTiếng IndonesiaTiếng InterlingueTiếng IgboTiếng Di" + - " Tứ XuyênTiếng InupiaqTiếng IdoTiếng IcelandTiếng ItalyTiếng InuktitutTi" + - "ếng NhậtTiếng JavaTiếng GeorgiaTiếng KongoTiếng KikuyuTiếng KuanyamaTi" + - "ếng KazakhTiếng KalaallisutTiếng KhmerTiếng KannadaTiếng HànTiếng Kanu" + - "riTiếng KashmirTiếng KurdTiếng KomiTiếng CornwallTiếng KyrgyzTiếng La-ti" + - "nhTiếng LuxembourgTiếng GandaTiếng LimburgTiếng LingalaTiếng LàoTiếng Li" + - "tvaTiếng Luba-KatangaTiếng LatviaTiếng MalagasyTiếng MarshallTiếng Maori" + - "Tiếng MacedoniaTiếng MalayalamTiếng Mông CổTiếng MarathiTiếng Mã LaiTiến" + - "g MaltaTiếng Miến ĐiệnTiếng NauruTiếng Ndebele Miền BắcTiếng NepalTiếng " + - "NdongaTiếng Hà LanTiếng Na Uy (Nynorsk)Tiếng Na Uy (Bokmål)Tiếng Ndebele" + - " Miền NamTiếng NavajoTiếng NyanjaTiếng OccitanTiếng OjibwaTiếng OromoTiế" + - "ng OdiaTiếng OsseticTiếng PunjabTiếng PaliTiếng Ba LanTiếng PashtoTiếng " + - "Bồ Đào NhaTiếng QuechuaTiếng RomanshTiếng RundiTiếng RomaniaTiếng NgaTiế" + - "ng KinyarwandaTiếng PhạnTiếng SardiniaTiếng SindhiTiếng Sami Miền BắcTiế" + - "ng SangoTiếng SinhalaTiếng SlovakTiếng SloveniaTiếng SamoaTiếng ShonaTiế" + - "ng SomaliTiếng AlbaniaTiếng SerbiaTiếng SwatiTiếng Sotho Miền NamTiếng S" + - "undaTiếng Thụy ĐiểnTiếng SwahiliTiếng TamilTiếng TeluguTiếng TajikTiếng " + - "TháiTiếng TigrinyaTiếng TurkmenTiếng TswanaTiếng TongaTiếng Thổ Nhĩ KỳTi" + - "ếng TsongaTiếng TatarTiếng TahitiTiếng UyghurTiếng UcrainaTiếng UrduTi" + - "ếng UzbekTiếng VendaTiếng ViệtTiếng VolapükTiếng WalloonTiếng WolofTiế" + - "ng XhosaTiếng YiddishTiếng YorubaTiếng ChoangTiếng TrungTiếng ZuluTiếng " + - "AchineseTiếng AcoliTiếng AdangmeTiếng AdygheTiếng AfrihiliTiếng AghemTiế" + - "ng AinuTiếng AkkadiaTiếng AlabamaTiếng AleutTiếng Gheg AlbaniTiếng Altai" + - " Miền NamTiếng Anh cổTiếng AngikaTiếng AramaicTiếng MapucheTiếng AraonaT" + - "iếng ArapahoTiếng Ả Rập AlgeriaTiếng ArawakTiếng Ả Rập Ai CậpTiếng AsuNg" + - "ôn ngữ Ký hiệu MỹTiếng AsturiasTiếng AwadhiTiếng BaluchiTiếng BaliTiếng" + - " BavariaTiếng BasaaTiếng BamunTiếng Batak TobaTiếng GhomalaTiếng BejaTiế" + - "ng BembaTiếng BetawiTiếng BenaTiếng BafutTiếng BadagaTiếng Tây BalochiTi" + - "ếng BhojpuriTiếng BikolTiếng BiniTiếng BanjarTiếng KomTiếng SiksikaTiế" + - "ng BishnupriyaTiếng BakhtiariTiếng BrajTiếng BrahuiTiếng BodoTiếng Akoos" + - "eTiếng BuriatTiếng BuginTiếng BuluTiếng BlinTiếng MedumbaTiếng CaddoTiến" + - "g CaribTiếng CayugaTiếng AtsamTiếng CebuanoTiếng ChigaTiếng ChibchaTiếng" + - " ChagataiTiếng ChuukTiếng MariBiệt ngữ ChinookTiếng ChoctawTiếng Chipewy" + - "anTiếng CherokeeTiếng CheyenneTiếng Kurd Miền TrungTiếng CopticTiếng Cap" + - "iznonTiếng Thổ Nhĩ Kỳ CrimeanTiếng Pháp Seselwa CreoleTiếng KashubiaTiến" + - "g DakotaTiếng DargwaTiếng TaitaTiếng DelawareTiếng SlaveTiếng DogribTiến" + - "g DinkaTiếng ZarmaTiếng DogriTiếng Hạ SorbiaTiếng Dusun Miền TrungTiếng " + - "DualaTiếng Hà Lan Trung cổTiếng Jola-FonyiTiếng DyulaTiếng DazagaTiếng E" + - "mbuTiếng EfikTiếng EmiliaTiếng Ai Cập cổTiếng EkajukTiếng ElamiteTiếng A" + - "nh Trung cổTiếng Yupik Miền TrungTiếng EwondoTiếng ExtremaduraTiếng Fang" + - "Tiếng PhilippinesTiếng FonTiếng Pháp CajunTiếng Pháp Trung cổTiếng Pháp " + - "cổTiếng ArpitanTiếng Frisia Miền BắcTiếng Frisian Miền ĐôngTiếng Friulia" + - "nTiếng GaTiếng GagauzTiếng CámTiếng GayoTiếng GbayaTiếng GeezTiếng Gilbe" + - "rtTiếng GilakiTiếng Thượng Giéc-man Trung cổTiếng Thượng Giéc-man cổTiến" + - "g Goan KonkaniTiếng GondiTiếng GorontaloTiếng Gô-tíchTiếng GreboTiếng Hy" + - " Lạp cổTiếng Đức (Thụy Sĩ)Tiếng FrafraTiếng GusiiTiếng GwichʼinTiếng Hai" + - "daTiếng Khách GiaTiếng HawaiiTiếng Fiji HindiTiếng HiligaynonTiếng Hitti" + - "teTiếng HmôngTiếng Thượng SorbiaTiếng TươngTiếng HupaTiếng IbanTiếng Ibi" + - "bioTiếng IlokoTiếng IngushTiếng IngriaTiếng Anh Jamaica CreoleTiếng Lojb" + - "anTiếng NgombaTiếng MachameTiếng Judeo-Ba TưTiếng Judeo-Ả RậpTiếng Jutis" + - "hTiếng Kara-KalpakTiếng KabyleTiếng KachinTiếng JjuTiếng KambaTiếng Kawi" + - "Tiếng KabardianTiếng KanembuTiếng TyapTiếng MakondeTiếng KabuverdianuTiế" + - "ng KoroTiếng KhasiTiếng KhotanTiếng Koyra ChiiniTiếng KakoTiếng Kalenjin" + - "Tiếng KimbunduTiếng Komi-PermyakTiếng KonkaniTiếng KosraeTiếng KpelleTiế" + - "ng Karachay-BalkarTiếng KarelianTiếng KurukhTiếng ShambalaTiếng BafiaTiế" + - "ng CologneTiếng KumykTiếng KutenaiTiếng LadinoTiếng LangiTiếng LahndaTiế" + - "ng LambaTiếng LezghianTiếng LakotaTiếng MongoTiếng Creole LouisianaTiếng" + - " LoziTiếng Bắc LuriTiếng Luba-LuluaTiếng LuisenoTiếng LundaTiếng LuoTiến" + - "g LushaiTiếng LuyiaTiếng MaduraTiếng MafaTiếng MagahiTiếng MaithiliTiếng" + - " MakasarTiếng MandingoTiếng MasaiTiếng MabaTiếng MokshaTiếng MandarTiếng" + - " MendeTiếng MeruTiếng MorisyenTiếng Ai-len Trung cổTiếng Makhuwa-MeettoT" + - "iếng Meta’Tiếng MicmacTiếng MinangkabauTiếng Mãn ChâuTiếng ManipuriTiếng" + - " MohawkTiếng MossiTiếng MundangNhiều Ngôn ngữTiếng CreekTiếng MirandaTiế" + - "ng MarwariTiếng MyeneTiếng ErzyaTiếng MazanderaniTiếng Mân NamTiếng Napo" + - "liTiếng NamaTiếng Hạ Giéc-manTiếng NewariTiếng NiasTiếng NiueanTiếng Ao " + - "NagaTiếng KwasioTiếng NgiemboonTiếng NogaiTiếng Na Uy cổTiếng N’KoTiếng " + - "Sotho Miền BắcTiếng NuerTiếng Newari cổTiếng NyamweziTiếng NyankoleTiếng" + - " NyoroTiếng NzimaTiếng OsageTiếng Thổ Nhĩ Kỳ OttomanTiếng PangasinanTiến" + - "g PahlaviTiếng PampangaTiếng PapiamentoTiếng PalauanTiếng Nigeria Pidgin" + - "Tiếng Ba Tư cổTiếng PhoeniciaTiếng PohnpeianTiếng PrussiaTiếng Provençal" + - " cổTiếng KʼicheʼTiếng Quechua ở Cao nguyên ChimborazoTiếng RajasthaniTiế" + - "ng RapanuiTiếng RarotonganTiếng RomboTiếng RomanyTiếng AromaniaTiếng Rwa" + - "Tiếng SandaweTiếng SakhaTiếng Samaritan AramaicTiếng SamburuTiếng SasakT" + - "iếng SantaliTiếng NgambayTiếng SanguTiếng SiciliaTiếng ScotsTiếng Kurd M" + - "iền NamTiếng SenecaTiếng SenaTiếng SelkupTiếng Koyraboro SenniTiếng Ai-l" + - "en cổTiếng TachelhitTiếng ShanTiếng Ả-Rập ChadTiếng SidamoTiếng Sami Miề" + - "n NamTiếng Lule SamiTiếng Inari SamiTiếng Skolt SamiTiếng SoninkeTiếng S" + - "ogdienTiếng Sranan TongoTiếng SererTiếng SahoTiếng SukumaTiếng SusuTiếng" + - " SumeriaTiếng CômoTiếng Syriac cổTiếng SyriacTiếng TimneTiếng TesoTiếng " + - "TerenoTiếng TetumTiếng TigreTiếng TivTiếng TokelauTiếng KlingonTiếng Tli" + - "ngitTiếng TamashekTiếng Nyasa TongaTiếng Tok PisinTiếng TarokoTiếng Tsim" + - "shianTiếng TumbukaTiếng TuvaluTiếng TasawaqTiếng TuvinianTiếng Tamazight" + - " Miền Trung Ma-rốcTiếng UdmurtTiếng UgariticTiếng UmbunduNgôn ngữ không " + - "xác địnhTiếng VaiTiếng VoticTiếng VunjoTiếng WalserTiếng WalamoTiếng War" + - "ayTiếng WashoTiếng WarlpiriTiếng NgôTiếng KalmykTiếng SogaTiếng YaoTiếng" + - " YapTiếng YangbenTiếng YembaTiếng Quảng ĐôngTiếng ZapotecKý hiệu Blissym" + - "bolsTiếng ZenagaTiếng Tamazight Chuẩn của Ma-rốcTiếng ZuniKhông có nội d" + - "ung ngôn ngữTiếng ZazaTiếng Ả Rập Hiện đạiTiếng Thượng Giéc-man (Thụy Sĩ" + - ")Tiếng Anh (Anh)Tiếng Anh (Mỹ)Tiếng Tây Ban Nha (Mỹ La tinh)Tiếng Tây Ba" + - "n Nha (Châu Âu)Tiếng Hạ SaxonTiếng FlemishTiếng Bồ Đào Nha (Châu Âu)Tiến" + - "g MoldovaTiếng Serbo-CroatiaTiếng Swahili Congo" - -var viLangIdx = []uint16{ // 613 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x001c, 0x002b, 0x003c, 0x0048, 0x0057, 0x0065, - 0x0076, 0x0083, 0x0091, 0x009f, 0x00b1, 0x00c0, 0x00cf, 0x00df, - 0x00ee, 0x00fd, 0x010b, 0x011e, 0x012c, 0x013a, 0x0149, 0x0158, - 0x0168, 0x0177, 0x0183, 0x018f, 0x01a8, 0x01b7, 0x01c4, 0x01d7, - 0x01e5, 0x01f3, 0x0203, 0x020e, 0x021e, 0x0229, 0x0242, 0x0256, - 0x0265, 0x0273, 0x0281, 0x028e, 0x02a0, 0x02ac, 0x02b9, 0x02c6, - 0x02d4, 0x02e3, 0x02f8, 0x0308, 0x0317, 0x0327, 0x0333, 0x0340, - 0x0350, 0x035d, 0x036e, 0x037d, 0x038a, 0x0399, 0x03a8, 0x03b6, - // Entry 40 - 7F - 0x03d4, 0x03e5, 0x03f8, 0x0404, 0x041a, 0x0429, 0x0434, 0x0443, - 0x0450, 0x0461, 0x046f, 0x047b, 0x048a, 0x0497, 0x04a5, 0x04b5, - 0x04c3, 0x04d6, 0x04e3, 0x04f2, 0x04fe, 0x050c, 0x051b, 0x0527, - 0x0533, 0x0543, 0x0551, 0x0560, 0x0572, 0x057f, 0x058e, 0x059d, - 0x05a9, 0x05b6, 0x05ca, 0x05d8, 0x05e8, 0x05f8, 0x0605, 0x0616, - 0x0627, 0x0639, 0x0648, 0x0657, 0x0664, 0x067a, 0x0687, 0x06a3, - 0x06b0, 0x06be, 0x06cd, 0x06e4, 0x06fb, 0x0715, 0x0723, 0x0731, - 0x0740, 0x074e, 0x075b, 0x0767, 0x0776, 0x0784, 0x0790, 0x079e, - // Entry 80 - BF - 0x07ac, 0x07c2, 0x07d1, 0x07e0, 0x07ed, 0x07fc, 0x0807, 0x081a, - 0x0828, 0x0838, 0x0846, 0x085f, 0x086c, 0x087b, 0x0889, 0x0899, - 0x08a6, 0x08b3, 0x08c1, 0x08d0, 0x08de, 0x08eb, 0x0903, 0x0910, - 0x0926, 0x0935, 0x0942, 0x0950, 0x095d, 0x096a, 0x097a, 0x0989, - 0x0997, 0x09a4, 0x09bb, 0x09c9, 0x09d6, 0x09e4, 0x09f2, 0x0a01, - 0x0a0d, 0x0a1a, 0x0a27, 0x0a35, 0x0a45, 0x0a54, 0x0a61, 0x0a6e, - 0x0a7d, 0x0a8b, 0x0a99, 0x0aa6, 0x0ab2, 0x0ac2, 0x0acf, 0x0ade, - 0x0aec, 0x0aec, 0x0afc, 0x0b09, 0x0b15, 0x0b24, 0x0b33, 0x0b40, - // Entry C0 - FF - 0x0b53, 0x0b6b, 0x0b7b, 0x0b89, 0x0b98, 0x0ba7, 0x0bb5, 0x0bc4, - 0x0bdd, 0x0bdd, 0x0beb, 0x0beb, 0x0c05, 0x0c10, 0x0c2b, 0x0c3b, - 0x0c3b, 0x0c49, 0x0c58, 0x0c64, 0x0c73, 0x0c80, 0x0c8d, 0x0c9f, - 0x0cae, 0x0cba, 0x0cc7, 0x0cd5, 0x0ce1, 0x0cee, 0x0cfc, 0x0d10, - 0x0d20, 0x0d2d, 0x0d39, 0x0d47, 0x0d52, 0x0d61, 0x0d74, 0x0d85, - 0x0d91, 0x0d9f, 0x0dab, 0x0db9, 0x0dc7, 0x0dd4, 0x0de0, 0x0dec, - 0x0dfb, 0x0e08, 0x0e15, 0x0e23, 0x0e30, 0x0e30, 0x0e3f, 0x0e4c, - 0x0e5b, 0x0e6b, 0x0e78, 0x0e84, 0x0e98, 0x0ea7, 0x0eb8, 0x0ec8, - // Entry 100 - 13F - 0x0ed8, 0x0ef1, 0x0eff, 0x0f0f, 0x0f2e, 0x0f4a, 0x0f5a, 0x0f68, - 0x0f76, 0x0f83, 0x0f93, 0x0fa0, 0x0fae, 0x0fbb, 0x0fc8, 0x0fd5, - 0x0fe8, 0x1002, 0x100f, 0x1029, 0x103b, 0x1048, 0x1056, 0x1062, - 0x106e, 0x107c, 0x1091, 0x109f, 0x10ae, 0x10c4, 0x10de, 0x10ec, - 0x10ff, 0x110b, 0x111e, 0x111e, 0x1129, 0x113c, 0x1154, 0x1166, - 0x1175, 0x1190, 0x11ad, 0x11bd, 0x11c7, 0x11d5, 0x11e1, 0x11ed, - 0x11fa, 0x11fa, 0x1206, 0x1215, 0x1223, 0x1249, 0x1269, 0x127d, - 0x128a, 0x129b, 0x12ac, 0x12b9, 0x12ce, 0x12e9, 0x12e9, 0x12f7, - // Entry 140 - 17F - 0x1304, 0x1315, 0x1322, 0x1334, 0x1342, 0x1354, 0x1366, 0x1375, - 0x1383, 0x139b, 0x13aa, 0x13b6, 0x13c2, 0x13d0, 0x13dd, 0x13eb, - 0x13f9, 0x1413, 0x1421, 0x142f, 0x143e, 0x1452, 0x1469, 0x1477, - 0x148a, 0x1498, 0x14a6, 0x14b1, 0x14be, 0x14ca, 0x14db, 0x14ea, - 0x14f6, 0x1505, 0x1519, 0x1519, 0x1525, 0x1525, 0x1532, 0x1540, - 0x1554, 0x1554, 0x1554, 0x1560, 0x1570, 0x1580, 0x1594, 0x15a3, - 0x15b1, 0x15bf, 0x15d6, 0x15d6, 0x15d6, 0x15e6, 0x15f4, 0x1604, - 0x1611, 0x1620, 0x162d, 0x163c, 0x164a, 0x1657, 0x1665, 0x1672, - // Entry 180 - 1BF - 0x1682, 0x1682, 0x1682, 0x1682, 0x1690, 0x1690, 0x169d, 0x16b5, - 0x16c1, 0x16d3, 0x16d3, 0x16e5, 0x16f4, 0x1701, 0x170c, 0x171a, - 0x1727, 0x1727, 0x1727, 0x1735, 0x1741, 0x174f, 0x175f, 0x176e, - 0x177e, 0x178b, 0x1797, 0x17a5, 0x17b3, 0x17c0, 0x17cc, 0x17dc, - 0x17f5, 0x180b, 0x181a, 0x1828, 0x183b, 0x184d, 0x185d, 0x186b, - 0x1878, 0x1878, 0x1887, 0x189a, 0x18a7, 0x18b6, 0x18c5, 0x18c5, - 0x18d2, 0x18df, 0x18f2, 0x1902, 0x1910, 0x191c, 0x1932, 0x1940, - 0x194c, 0x195a, 0x1969, 0x1977, 0x1988, 0x1995, 0x19a7, 0x19a7, - // Entry 1C0 - 1FF - 0x19b5, 0x19cf, 0x19db, 0x19ee, 0x19fe, 0x1a0e, 0x1a1b, 0x1a28, - 0x1a35, 0x1a54, 0x1a66, 0x1a75, 0x1a85, 0x1a97, 0x1aa6, 0x1aa6, - 0x1abc, 0x1abc, 0x1abc, 0x1acf, 0x1acf, 0x1ae0, 0x1ae0, 0x1ae0, - 0x1af1, 0x1b00, 0x1b17, 0x1b28, 0x1b52, 0x1b64, 0x1b73, 0x1b85, - 0x1b85, 0x1b85, 0x1b92, 0x1ba0, 0x1ba0, 0x1ba0, 0x1ba0, 0x1bb0, - 0x1bbb, 0x1bca, 0x1bd7, 0x1bf0, 0x1bff, 0x1c0c, 0x1c1b, 0x1c1b, - 0x1c2a, 0x1c37, 0x1c46, 0x1c53, 0x1c53, 0x1c6a, 0x1c78, 0x1c84, - 0x1c84, 0x1c92, 0x1ca9, 0x1cbc, 0x1cbc, 0x1ccd, 0x1cd9, 0x1cef, - // Entry 200 - 23F - 0x1cfd, 0x1cfd, 0x1cfd, 0x1d14, 0x1d25, 0x1d37, 0x1d49, 0x1d58, - 0x1d67, 0x1d7b, 0x1d88, 0x1d94, 0x1d94, 0x1da2, 0x1dae, 0x1dbd, - 0x1dca, 0x1ddd, 0x1deb, 0x1deb, 0x1deb, 0x1df8, 0x1e04, 0x1e12, - 0x1e1f, 0x1e2c, 0x1e37, 0x1e46, 0x1e46, 0x1e55, 0x1e64, 0x1e64, - 0x1e74, 0x1e87, 0x1e98, 0x1e98, 0x1ea6, 0x1ea6, 0x1eb7, 0x1eb7, - 0x1ec6, 0x1ed4, 0x1ee3, 0x1ef3, 0x1f1a, 0x1f28, 0x1f38, 0x1f47, - 0x1f66, 0x1f71, 0x1f71, 0x1f71, 0x1f71, 0x1f71, 0x1f7e, 0x1f7e, - 0x1f8b, 0x1f99, 0x1fa7, 0x1fb4, 0x1fc1, 0x1fd1, 0x1fdd, 0x1feb, - // Entry 240 - 27F - 0x1feb, 0x1ff7, 0x2002, 0x200d, 0x201c, 0x2029, 0x2029, 0x203f, - 0x204e, 0x2064, 0x2064, 0x2072, 0x209a, 0x20a6, 0x20c7, 0x20d3, - 0x20f2, 0x20f2, 0x20f2, 0x211a, 0x211a, 0x211a, 0x212b, 0x213d, - 0x2160, 0x2180, 0x2180, 0x2180, 0x2180, 0x2180, 0x2192, 0x21a1, - 0x21a1, 0x21c3, 0x21d2, 0x21e7, 0x21fc, -} // Size: 1250 bytes - -const zhLangStr string = "" + // Size: 6530 bytes - "阿法尔语阿布哈西亚语阿维斯塔语南非荷兰语阿肯语阿姆哈拉语阿拉贡语阿拉伯语阿萨姆语阿瓦尔语艾马拉语阿塞拜疆语巴什基尔语白俄罗斯语保加利亚语比斯拉马" + - "语班巴拉语孟加拉语藏语布列塔尼语波斯尼亚语加泰罗尼亚语车臣语查莫罗语科西嘉语克里族语捷克语教会斯拉夫语楚瓦什语威尔士语丹麦语德语迪维西语宗卡" + - "语埃维语希腊语英语世界语西班牙语爱沙尼亚语巴斯克语波斯语富拉语芬兰语斐济语法罗语法语西弗里西亚语爱尔兰语苏格兰盖尔语加利西亚语瓜拉尼语古吉拉" + - "特语马恩语豪萨语希伯来语印地语希里莫图语克罗地亚语海地克里奥尔语匈牙利语亚美尼亚语赫雷罗语国际语印度尼西亚语国际文字(E)伊博语四川彝语伊努" + - "皮克语伊多语冰岛语意大利语因纽特语日语爪哇语格鲁吉亚语刚果语吉库尤语宽亚玛语哈萨克语格陵兰语高棉语卡纳达语韩语卡努里语克什米尔语库尔德语科米" + - "语康沃尔语柯尔克孜语拉丁语卢森堡语卢干达语林堡语林加拉语老挝语立陶宛语鲁巴加丹加语拉脱维亚语马拉加斯语马绍尔语毛利语马其顿语马拉雅拉姆语蒙古" + - "语马拉地语马来语马耳他语缅甸语瑙鲁语北恩德贝勒语尼泊尔语恩东加语荷兰语挪威尼诺斯克语书面挪威语南恩德贝勒语纳瓦霍语齐切瓦语奥克语奥吉布瓦语奥" + - "罗莫语奥里亚语奥塞梯语旁遮普语巴利语波兰语普什图语葡萄牙语克丘亚语罗曼什语隆迪语罗马尼亚语俄语卢旺达语梵语萨丁语信德语北方萨米语桑戈语僧伽罗" + - "语斯洛伐克语斯洛文尼亚语萨摩亚语绍纳语索马里语阿尔巴尼亚语塞尔维亚语斯瓦蒂语南索托语巽他语瑞典语斯瓦希里语泰米尔语泰卢固语塔吉克语泰语提格利" + - "尼亚语土库曼语茨瓦纳语汤加语土耳其语聪加语鞑靼语塔希提语维吾尔语乌克兰语乌尔都语乌兹别克语文达语越南语沃拉普克语瓦隆语沃洛夫语科萨语意第绪语" + - "约鲁巴语壮语中文祖鲁语亚齐语阿乔利语阿当梅语阿迪格语阿弗里希利语亚罕语阿伊努语阿卡德语阿留申语南阿尔泰语古英语昂加语阿拉米语马普切语阿拉帕霍" + - "语阿拉瓦克语帕雷语阿斯图里亚斯语阿瓦德语俾路支语巴厘语巴萨语巴姆穆语戈马拉语贝沙语本巴语贝纳语巴非特语西俾路支语博杰普尔语比科尔语比尼语科姆" + - "语西克西卡语布拉杰语博多语阿库色语布里亚特语布吉语布鲁语比林语梅敦巴语卡多语加勒比语卡尤加语阿灿语宿务语奇加语奇布查语察合台语楚克语马里语奇" + - "努克混合语乔克托语奇佩维安语切罗基语夏延语中库尔德语科普特语克里米亚土耳其语塞舌尔克里奥尔语卡舒比语达科他语达尔格瓦语台塔语特拉华语史拉维语" + - "多格里布语丁卡语哲尔马语多格拉语下索布语都阿拉语中古荷兰语朱拉语迪尤拉语达扎葛语恩布语埃菲克语古埃及语艾卡朱克语埃兰语中古英语旺杜语芳格语菲" + - "律宾语丰语卡真法语中古法语古法语北弗里西亚语东弗里西亚语弗留利语加族语加告兹语赣语迦约语格巴亚语吉兹语吉尔伯特语中古高地德语古高地德语冈德语" + - "哥伦打洛语哥特语格列博语古希腊语瑞士德语古西语哥威迅语海达语客家语夏威夷语希利盖农语赫梯语苗语上索布语湘语胡帕语伊班语伊比比奥语伊洛卡诺语印" + - "古什语逻辑语恩艮巴语马切姆语犹太波斯语犹太阿拉伯语卡拉卡尔帕克语卡拜尔语克钦语卡捷语卡姆巴语卡威语卡巴尔德语加涅姆布语卡塔布语马孔德语卡布佛" + - "得鲁语克罗语卡西语和田语西桑海语卡库语卡伦金语金邦杜语科米-彼尔米亚克语孔卡尼语科斯拉伊语克佩列语卡拉恰伊巴尔卡尔语卡累利阿语库鲁克语香巴拉" + - "语巴菲亚语科隆语库梅克语库特奈语拉迪诺语朗吉语印度-雅利安语兰巴语列兹金语拉科塔语蒙戈语路易斯安那克里奥尔语洛齐语北卢尔语卢巴-卢拉语卢伊塞" + - "诺语隆达语卢欧语米佐语卢雅语马都拉语马法语摩揭陀语迈蒂利语望加锡语曼丁哥语马赛语马坝语莫克沙语曼达尔语门德语梅鲁语毛里求斯克里奥尔语中古爱尔" + - "兰语马库阿语梅塔语密克马克语米南佳保语满语曼尼普尔语摩霍克语莫西语蒙当语多语种克里克语米兰德斯语马尔瓦里语姆耶内语厄尔兹亚语马赞德兰语闽南语" + - "那不勒斯语纳马语低地德语尼瓦尔语尼亚斯语纽埃语夸西奥语恩甘澎语诺盖语古诺尔斯语西非书面文字北索托语努埃尔语古典尼瓦尔语尼扬韦齐语尼昂科勒语尼" + - "奥罗语恩济马语奥塞治语奥斯曼土耳其语邦阿西南语巴拉维语邦板牙语帕皮阿门托语帕劳语尼日利亚皮钦语古波斯语腓尼基语波纳佩语普鲁士语古普罗文斯语基" + - "切语拉贾斯坦语拉帕努伊语拉罗汤加语兰博语吉普赛语阿罗马尼亚语罗瓦语桑达韦语萨哈语萨马利亚阿拉姆语桑布鲁语萨萨克文桑塔利语甘拜语桑古语西西里语" + - "苏格兰语南库尔德语塞内卡语塞纳语塞尔库普语东桑海语古爱尔兰语希尔哈语掸语乍得阿拉伯语悉达摩语南萨米语吕勒萨米语伊纳里萨米语斯科特萨米语索宁克" + - "语粟特语苏里南汤加语塞雷尔语萨霍语苏库马语苏苏语苏美尔语科摩罗语古典叙利亚语叙利亚语泰姆奈语特索语特伦诺语德顿语提格雷语蒂夫语托克劳语克林贡" + - "语特林吉特语塔马奇克语尼亚萨汤加语托克皮辛语赛德克语钦西安语通布卡语图瓦卢语北桑海语图瓦语塔马齐格特语乌德穆尔特语乌加里特语翁本杜语未知语言" + - "瓦伊语维普森语沃提克语温旧语瓦尔瑟语瓦拉莫语瓦瑞语瓦绍语瓦尔皮瑞语吴语卡尔梅克语索加语瑶族语雅浦语洋卞语耶姆巴语粤语萨波蒂克语布里斯符号泽纳" + - "加语标准摩洛哥塔马塞特语祖尼语无语言内容扎扎语现代标准阿拉伯语南阿塞拜疆语奥地利德语瑞士高地德语澳大利亚英语加拿大英语英国英语美国英语拉丁美" + - "洲西班牙语欧洲西班牙语墨西哥西班牙语加拿大法语瑞士法语低萨克森语弗拉芒语巴西葡萄牙语欧洲葡萄牙语摩尔多瓦语塞尔维亚-克罗地亚语刚果斯瓦希里语" + - "简体中文繁体中文" - -var zhLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x001e, 0x002d, 0x003c, 0x0045, 0x0054, 0x0060, - 0x006c, 0x0078, 0x0084, 0x0090, 0x009f, 0x00ae, 0x00bd, 0x00cc, - 0x00db, 0x00e7, 0x00f3, 0x00f9, 0x0108, 0x0117, 0x0129, 0x0132, - 0x013e, 0x014a, 0x0156, 0x015f, 0x0171, 0x017d, 0x0189, 0x0192, - 0x0198, 0x01a4, 0x01ad, 0x01b6, 0x01bf, 0x01c5, 0x01ce, 0x01da, - 0x01e9, 0x01f5, 0x01fe, 0x0207, 0x0210, 0x0219, 0x0222, 0x0228, - 0x023a, 0x0246, 0x0258, 0x0267, 0x0273, 0x0282, 0x028b, 0x0294, - 0x02a0, 0x02a9, 0x02b8, 0x02c7, 0x02dc, 0x02e8, 0x02f7, 0x0303, - // Entry 40 - 7F - 0x030c, 0x031e, 0x0331, 0x033a, 0x0346, 0x0355, 0x035e, 0x0367, - 0x0373, 0x037f, 0x0385, 0x038e, 0x039d, 0x03a6, 0x03b2, 0x03be, - 0x03ca, 0x03d6, 0x03df, 0x03eb, 0x03f1, 0x03fd, 0x040c, 0x0418, - 0x0421, 0x042d, 0x043c, 0x0445, 0x0451, 0x045d, 0x0466, 0x0472, - 0x047b, 0x0487, 0x0499, 0x04a8, 0x04b7, 0x04c3, 0x04cc, 0x04d8, - 0x04ea, 0x04f3, 0x04ff, 0x0508, 0x0514, 0x051d, 0x0526, 0x0538, - 0x0544, 0x0550, 0x0559, 0x056e, 0x057d, 0x058f, 0x059b, 0x05a7, - 0x05b0, 0x05bf, 0x05cb, 0x05d7, 0x05e3, 0x05ef, 0x05f8, 0x0601, - // Entry 80 - BF - 0x060d, 0x0619, 0x0625, 0x0631, 0x063a, 0x0649, 0x064f, 0x065b, - 0x0661, 0x066a, 0x0673, 0x0682, 0x068b, 0x0697, 0x06a6, 0x06b8, - 0x06c4, 0x06cd, 0x06d9, 0x06eb, 0x06fa, 0x0706, 0x0712, 0x071b, - 0x0724, 0x0733, 0x073f, 0x074b, 0x0757, 0x075d, 0x076f, 0x077b, - 0x0787, 0x0790, 0x079c, 0x07a5, 0x07ae, 0x07ba, 0x07c6, 0x07d2, - 0x07de, 0x07ed, 0x07f6, 0x07ff, 0x080e, 0x0817, 0x0823, 0x082c, - 0x0838, 0x0844, 0x084a, 0x0850, 0x0859, 0x0862, 0x086e, 0x087a, - 0x0886, 0x0886, 0x0898, 0x08a1, 0x08ad, 0x08b9, 0x08b9, 0x08c5, - // Entry C0 - FF - 0x08c5, 0x08d4, 0x08dd, 0x08e6, 0x08f2, 0x08fe, 0x08fe, 0x090d, - 0x090d, 0x090d, 0x091c, 0x091c, 0x091c, 0x0925, 0x0925, 0x093a, - 0x093a, 0x0946, 0x0952, 0x095b, 0x095b, 0x0964, 0x0970, 0x0970, - 0x097c, 0x0985, 0x098e, 0x098e, 0x0997, 0x09a3, 0x09a3, 0x09b2, - 0x09c1, 0x09cd, 0x09d6, 0x09d6, 0x09df, 0x09ee, 0x09ee, 0x09ee, - 0x09fa, 0x09fa, 0x0a03, 0x0a0f, 0x0a1e, 0x0a27, 0x0a30, 0x0a39, - 0x0a45, 0x0a4e, 0x0a5a, 0x0a66, 0x0a6f, 0x0a6f, 0x0a78, 0x0a81, - 0x0a8d, 0x0a99, 0x0aa2, 0x0aab, 0x0abd, 0x0ac9, 0x0ad8, 0x0ae4, - // Entry 100 - 13F - 0x0aed, 0x0afc, 0x0b08, 0x0b08, 0x0b20, 0x0b38, 0x0b44, 0x0b50, - 0x0b5f, 0x0b68, 0x0b74, 0x0b80, 0x0b8f, 0x0b98, 0x0ba4, 0x0bb0, - 0x0bbc, 0x0bbc, 0x0bc8, 0x0bd7, 0x0be0, 0x0bec, 0x0bf8, 0x0c01, - 0x0c0d, 0x0c0d, 0x0c19, 0x0c28, 0x0c31, 0x0c3d, 0x0c3d, 0x0c46, - 0x0c46, 0x0c4f, 0x0c5b, 0x0c5b, 0x0c61, 0x0c6d, 0x0c79, 0x0c82, - 0x0c82, 0x0c94, 0x0ca6, 0x0cb2, 0x0cbb, 0x0cc7, 0x0ccd, 0x0cd6, - 0x0ce2, 0x0ce2, 0x0ceb, 0x0cfa, 0x0cfa, 0x0d0c, 0x0d1b, 0x0d1b, - 0x0d24, 0x0d33, 0x0d3c, 0x0d48, 0x0d54, 0x0d60, 0x0d60, 0x0d60, - // Entry 140 - 17F - 0x0d69, 0x0d75, 0x0d7e, 0x0d87, 0x0d93, 0x0d93, 0x0da2, 0x0dab, - 0x0db1, 0x0dbd, 0x0dc3, 0x0dcc, 0x0dd5, 0x0de4, 0x0df3, 0x0dff, - 0x0dff, 0x0dff, 0x0e08, 0x0e14, 0x0e20, 0x0e2f, 0x0e41, 0x0e41, - 0x0e56, 0x0e62, 0x0e6b, 0x0e74, 0x0e80, 0x0e89, 0x0e98, 0x0ea7, - 0x0eb3, 0x0ebf, 0x0ed1, 0x0ed1, 0x0eda, 0x0eda, 0x0ee3, 0x0eec, - 0x0ef8, 0x0ef8, 0x0ef8, 0x0f01, 0x0f0d, 0x0f19, 0x0f32, 0x0f3e, - 0x0f4d, 0x0f59, 0x0f74, 0x0f74, 0x0f74, 0x0f83, 0x0f8f, 0x0f9b, - 0x0fa7, 0x0fb0, 0x0fbc, 0x0fc8, 0x0fd4, 0x0fdd, 0x0ff0, 0x0ff9, - // Entry 180 - 1BF - 0x1005, 0x1005, 0x1005, 0x1005, 0x1011, 0x1011, 0x101a, 0x1038, - 0x1041, 0x104d, 0x104d, 0x105d, 0x106c, 0x1075, 0x107e, 0x1087, - 0x1090, 0x1090, 0x1090, 0x109c, 0x10a5, 0x10b1, 0x10bd, 0x10c9, - 0x10d5, 0x10de, 0x10e7, 0x10f3, 0x10ff, 0x1108, 0x1111, 0x112c, - 0x113e, 0x114a, 0x1153, 0x1162, 0x1171, 0x1177, 0x1186, 0x1192, - 0x119b, 0x119b, 0x11a4, 0x11ad, 0x11b9, 0x11c8, 0x11d7, 0x11d7, - 0x11e3, 0x11f2, 0x1201, 0x120a, 0x1219, 0x1222, 0x122e, 0x123a, - 0x1246, 0x124f, 0x124f, 0x125b, 0x1267, 0x1270, 0x127f, 0x127f, - // Entry 1C0 - 1FF - 0x1291, 0x129d, 0x12a9, 0x12bb, 0x12ca, 0x12d9, 0x12e5, 0x12f1, - 0x12fd, 0x1312, 0x1321, 0x132d, 0x1339, 0x134b, 0x1354, 0x1354, - 0x1369, 0x1369, 0x1369, 0x1375, 0x1375, 0x1381, 0x1381, 0x1381, - 0x138d, 0x1399, 0x13ab, 0x13b4, 0x13b4, 0x13c3, 0x13d2, 0x13e1, - 0x13e1, 0x13e1, 0x13ea, 0x13f6, 0x13f6, 0x13f6, 0x13f6, 0x1408, - 0x1411, 0x141d, 0x1426, 0x143e, 0x144a, 0x1456, 0x1462, 0x1462, - 0x146b, 0x1474, 0x1480, 0x148c, 0x148c, 0x149b, 0x14a7, 0x14b0, - 0x14b0, 0x14bf, 0x14cb, 0x14da, 0x14da, 0x14e6, 0x14ec, 0x14fe, - // Entry 200 - 23F - 0x150a, 0x150a, 0x150a, 0x1516, 0x1525, 0x1537, 0x1549, 0x1555, - 0x155e, 0x1570, 0x157c, 0x1585, 0x1585, 0x1591, 0x159a, 0x15a6, - 0x15b2, 0x15c4, 0x15d0, 0x15d0, 0x15d0, 0x15dc, 0x15e5, 0x15f1, - 0x15fa, 0x1606, 0x160f, 0x161b, 0x161b, 0x1627, 0x1636, 0x1636, - 0x1645, 0x1657, 0x1666, 0x1666, 0x1672, 0x1672, 0x167e, 0x167e, - 0x168a, 0x1696, 0x16a2, 0x16ab, 0x16bd, 0x16cf, 0x16de, 0x16ea, - 0x16f6, 0x16ff, 0x16ff, 0x170b, 0x170b, 0x170b, 0x1717, 0x1717, - 0x1720, 0x172c, 0x1738, 0x1741, 0x174a, 0x1759, 0x175f, 0x176e, - // Entry 240 - 27F - 0x176e, 0x1777, 0x1780, 0x1789, 0x1792, 0x179e, 0x179e, 0x17a4, - 0x17b3, 0x17c2, 0x17c2, 0x17ce, 0x17ec, 0x17f5, 0x1804, 0x180d, - 0x1825, 0x1837, 0x1846, 0x1858, 0x186a, 0x1879, 0x1885, 0x1891, - 0x18a9, 0x18bb, 0x18d0, 0x18d0, 0x18df, 0x18eb, 0x18fa, 0x1906, - 0x1918, 0x192a, 0x1939, 0x1955, 0x196a, 0x1976, 0x1982, -} // Size: 1254 bytes - -const zhHantLangStr string = "" + // Size: 7609 bytes - "阿法文阿布哈茲文阿維斯塔文南非荷蘭文阿坎文阿姆哈拉文阿拉貢文阿拉伯文阿薩姆文阿瓦爾文艾馬拉文亞塞拜然文巴什喀爾文白俄羅斯文保加利亞文比斯拉馬文班" + - "巴拉文孟加拉文藏文布列塔尼文波士尼亞文加泰蘭文車臣文查莫洛文科西嘉文克里文捷克文宗教斯拉夫文楚瓦什文威爾斯文丹麥文德文迪維西文宗卡文埃維文希" + - "臘文英文世界文西班牙文愛沙尼亞文巴斯克文波斯文富拉文芬蘭文斐濟文法羅文法文西弗里西亞文愛爾蘭文蘇格蘭蓋爾文加利西亞文瓜拉尼文古吉拉特文曼島文" + - "豪撒文希伯來文印地文西里莫圖土文克羅埃西亞文海地文匈牙利文亞美尼亞文赫雷羅文國際文印尼文國際文(E)伊布文四川彝文依奴皮維克文伊多文冰島文義" + - "大利文因紐特文日文爪哇文喬治亞文剛果文吉庫尤文廣亞馬文哈薩克文格陵蘭文高棉文坎那達文韓文卡努里文喀什米爾文庫德文科米文康瓦耳文吉爾吉斯文拉丁" + - "文盧森堡文干達文林堡文林加拉文寮文立陶宛文魯巴加丹加文拉脫維亞文馬達加斯加文馬紹爾文毛利文馬其頓文馬來亞拉姆文蒙古文馬拉地文馬來文馬爾他文緬" + - "甸文諾魯文北地畢列文尼泊爾文恩東加文荷蘭文耐諾斯克挪威文巴克摩挪威文南地畢列文納瓦霍文尼揚賈文奧克西坦文奧杰布瓦文奧羅莫文歐迪亞文奧塞提文旁" + - "遮普文巴利文波蘭文普什圖文葡萄牙文蓋楚瓦文羅曼斯文隆迪文羅馬尼亞文俄文盧安達文梵文撒丁文信德文北薩米文桑戈文僧伽羅文斯洛伐克文斯洛維尼亞文薩" + - "摩亞文紹納文索馬利文阿爾巴尼亞文塞爾維亞文斯瓦特文塞索托文巽他文瑞典文史瓦希里文坦米爾文泰盧固文塔吉克文泰文提格利尼亞文土庫曼文塞茲瓦納文東" + - "加文土耳其文特松加文韃靼文大溪地文維吾爾文烏克蘭文烏都文烏茲別克文溫達文越南文沃拉普克文瓦隆文沃洛夫文科薩文意第緒文約魯巴文壯文中文祖魯文亞" + - "齊文阿僑利文阿當莫文阿迪各文突尼斯阿拉伯文阿弗里希利文亞罕文阿伊努文阿卡德文阿拉巴馬文阿留申文蓋格阿爾巴尼亞文南阿爾泰文古英文昂加文阿拉米文" + - "馬普切文阿拉奧納文阿拉帕霍文阿爾及利亞阿拉伯文阿拉瓦克文摩洛哥阿拉伯文埃及阿拉伯文阿蘇文美國手語阿斯圖里亞文科塔瓦文阿瓦文俾路支文峇里文巴伐" + - "利亞文巴薩文巴姆穆文巴塔克托巴文戈馬拉文貝扎文別姆巴文貝塔維文貝納文富特文巴達加文西俾路支文博傑普爾文比科爾文比尼文班亞爾文康姆文錫克錫卡文" + - "比什奴普萊利亞文巴赫蒂亞里文布拉杰文布拉維文博多文阿庫色文布里阿特文布吉斯文布魯文比林文梅敦巴文卡多文加勒比文卡尤加文阿燦文宿霧文奇加文奇布" + - "查文查加文處奇斯文馬里文契奴克文喬克托文奇佩瓦揚文柴羅基文沙伊安文中庫德文科普特文卡皮茲文土耳其文(克里米亞半島)塞席爾克里奧爾法文卡舒布文" + - "達科他文達爾格瓦文台塔文德拉瓦文斯拉夫多格里布文丁卡文扎爾馬文多格來文下索布文中部杜順文杜亞拉文中古荷蘭文朱拉文迪尤拉文達薩文恩布文埃菲克文" + - "埃米利安文古埃及文艾卡朱克文埃蘭文中古英文中尤皮克文依汪都文埃斯特雷馬杜拉文芳族文菲律賓文托爾訥芬蘭文豐文卡真法文中古法文古法文法蘭克-普羅" + - "旺斯文北弗里西亞文東弗里西亞文弗留利文加族文加告茲文贛語加約文葛巴亞文索羅亞斯德教達里文吉茲文吉爾伯特群島文吉拉基文中古高地德文古高地德文孔" + - "卡尼文岡德文科隆達羅文哥德文格列博文古希臘文德文(瑞士)瓦尤文弗拉弗拉文古西文圭契文海達文客家話夏威夷文斐濟印地文希利蓋農文赫梯文孟文上索布" + - "文湘語胡帕文伊班文伊比比奧文伊洛闊文印古什文英格里亞文牙買加克里奧爾英文邏輯文恩格姆巴文馬恰美文猶太教-波斯文猶太阿拉伯文日德蘭文卡拉卡爾帕" + - "克文卡比爾文卡琴文卡捷文卡姆巴文卡威文卡巴爾達文卡念布文卡塔布文馬孔德文卡布威爾第文肯揚文科羅文坎剛文卡西文和闐文西桑海文科瓦文北紮紮其文卡" + - "庫文卡倫金文金邦杜文科米-彼爾米亞克文貢根文科斯雷恩文克佩列文卡拉柴-包爾卡爾文塞拉利昂克裏奧爾文基那來阿文卡累利阿文庫魯科文尚巴拉文巴菲亞" + - "文科隆文庫密克文庫特奈文拉迪諾文朗吉文拉亨達文蘭巴文列茲干文新共同語言利古里亞文利伏尼亞文拉科塔文倫巴底文芒戈文路易斯安那克里奧爾文洛齊文北" + - "盧爾文拉特加萊文魯巴魯魯亞文路易塞諾文盧恩達文盧奧文米佐文盧雅文文言文拉茲文馬都拉文馬法文馬加伊文邁蒂利文望加錫文曼丁哥文馬賽文馬巴文莫克沙" + - "文曼達文門德文梅魯文克里奧文(模里西斯)中古愛爾蘭文馬夸文美塔文米克馬克文米南卡堡文滿族文曼尼普爾文莫霍克文莫西文西馬里文蒙當文多種語言克里" + - "克文米蘭德斯文馬瓦里文明打威文姆耶內文厄爾茲亞文馬贊德蘭文閩南語拿波里文納馬文低地德文尼瓦爾文尼亞斯文紐埃文阿沃那加文夸西奧文恩甘澎文諾蓋文" + - "古諾爾斯文諾維亞文曼德文字 (N’Ko)北索托文努埃爾文古尼瓦爾文尼揚韋齊文尼揚科萊文尼奧囉文尼茲馬文歐塞奇文鄂圖曼土耳其文潘加辛文巴列維文" + - "潘帕嘉文帕皮阿門托文帛琉文庇卡底文奈及利亞皮欽文賓夕法尼亞德文門諾低地德文古波斯文普法爾茨德文腓尼基文皮埃蒙特文旁狄希臘文波那貝文普魯士文古" + - "普羅旺斯文基切文欽博拉索海蘭蓋丘亞文拉賈斯坦諸文復活島文拉羅通加文羅馬格諾里文里菲亞諾文蘭博文吉普賽文羅圖馬島文盧森尼亞文羅維阿納文羅馬尼亞" + - "語系羅瓦文桑達韋文雅庫特文薩瑪利亞阿拉姆文薩布魯文撒撒克文桑塔利文索拉什特拉文甘拜文桑古文西西里文蘇格蘭文薩丁尼亞-薩薩里文南庫德文塞訥卡文" + - "賽納文瑟里文塞爾庫普文東桑海文古愛爾蘭文薩莫吉希亞文希爾哈文撣文阿拉伯文(查德)希達摩文下西利西亞文塞拉亞文南薩米文魯勒薩米文伊納里薩米文斯" + - "科特薩米文索尼基文索格底亞納文蘇拉南東墎文塞雷爾文薩霍文沙特菲士蘭文蘇庫馬文蘇蘇文蘇美文葛摩文古敘利亞文敘利亞文西利西亞文圖盧文提姆文特索文" + - "泰雷諾文泰頓文蒂格雷文提夫文托克勞文查庫爾文克林貢文特林基特文塔里什文塔馬奇克文東加文(尼亞薩)托比辛文圖羅尤文太魯閣文特薩克尼恩文欽西安文" + - "穆斯林塔特文圖姆布卡文吐瓦魯文北桑海文圖瓦文中阿特拉斯塔馬塞特文烏德穆爾特文烏加列文姆本杜文未知語言瓦伊文威尼斯文維普森文西佛蘭德文美茵-法" + - "蘭克尼亞文沃提克文佛羅文溫舊文瓦爾瑟文瓦拉莫文瓦瑞文瓦紹文沃皮瑞文吳語卡爾梅克文明格列爾文索加文瑤文雅浦文洋卞文耶姆巴文奈恩加圖文粵語薩波特" + - "克文布列斯符號西蘭文澤納加文標準摩洛哥塔馬塞特文祖尼文無語言內容扎扎文現代標準阿拉伯文高地德文(瑞士)低地薩克遜文佛蘭芒文摩爾多瓦文塞爾維亞" + - "克羅埃西亞文史瓦希里文(剛果)簡體中文繁體中文" - -var zhHantLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0018, 0x0027, 0x0036, 0x003f, 0x004e, 0x005a, - 0x0066, 0x0072, 0x007e, 0x008a, 0x0099, 0x00a8, 0x00b7, 0x00c6, - 0x00d5, 0x00e1, 0x00ed, 0x00f3, 0x0102, 0x0111, 0x011d, 0x0126, - 0x0132, 0x013e, 0x0147, 0x0150, 0x0162, 0x016e, 0x017a, 0x0183, - 0x0189, 0x0195, 0x019e, 0x01a7, 0x01b0, 0x01b6, 0x01bf, 0x01cb, - 0x01da, 0x01e6, 0x01ef, 0x01f8, 0x0201, 0x020a, 0x0213, 0x0219, - 0x022b, 0x0237, 0x0249, 0x0258, 0x0264, 0x0273, 0x027c, 0x0285, - 0x0291, 0x029a, 0x02ac, 0x02be, 0x02c7, 0x02d3, 0x02e2, 0x02ee, - // Entry 40 - 7F - 0x02f7, 0x0300, 0x0310, 0x0319, 0x0325, 0x0337, 0x0340, 0x0349, - 0x0355, 0x0361, 0x0367, 0x0370, 0x037c, 0x0385, 0x0391, 0x039d, - 0x03a9, 0x03b5, 0x03be, 0x03ca, 0x03d0, 0x03dc, 0x03eb, 0x03f4, - 0x03fd, 0x0409, 0x0418, 0x0421, 0x042d, 0x0436, 0x043f, 0x044b, - 0x0451, 0x045d, 0x046f, 0x047e, 0x0490, 0x049c, 0x04a5, 0x04b1, - 0x04c3, 0x04cc, 0x04d8, 0x04e1, 0x04ed, 0x04f6, 0x04ff, 0x050e, - 0x051a, 0x0526, 0x052f, 0x0544, 0x0556, 0x0565, 0x0571, 0x057d, - 0x058c, 0x059b, 0x05a7, 0x05b3, 0x05bf, 0x05cb, 0x05d4, 0x05dd, - // Entry 80 - BF - 0x05e9, 0x05f5, 0x0601, 0x060d, 0x0616, 0x0625, 0x062b, 0x0637, - 0x063d, 0x0646, 0x064f, 0x065b, 0x0664, 0x0670, 0x067f, 0x0691, - 0x069d, 0x06a6, 0x06b2, 0x06c4, 0x06d3, 0x06df, 0x06eb, 0x06f4, - 0x06fd, 0x070c, 0x0718, 0x0724, 0x0730, 0x0736, 0x0748, 0x0754, - 0x0763, 0x076c, 0x0778, 0x0784, 0x078d, 0x0799, 0x07a5, 0x07b1, - 0x07ba, 0x07c9, 0x07d2, 0x07db, 0x07ea, 0x07f3, 0x07ff, 0x0808, - 0x0814, 0x0820, 0x0826, 0x082c, 0x0835, 0x083e, 0x084a, 0x0856, - 0x0862, 0x0877, 0x0889, 0x0892, 0x089e, 0x08aa, 0x08b9, 0x08c5, - // Entry C0 - FF - 0x08dd, 0x08ec, 0x08f5, 0x08fe, 0x090a, 0x0916, 0x0925, 0x0934, - 0x094f, 0x094f, 0x095e, 0x0973, 0x0985, 0x098e, 0x099a, 0x09ac, - 0x09b8, 0x09c1, 0x09cd, 0x09d6, 0x09e5, 0x09ee, 0x09fa, 0x0a0c, - 0x0a18, 0x0a21, 0x0a2d, 0x0a39, 0x0a42, 0x0a4b, 0x0a57, 0x0a66, - 0x0a75, 0x0a81, 0x0a8a, 0x0a96, 0x0a9f, 0x0aae, 0x0ac6, 0x0ad8, - 0x0ae4, 0x0af0, 0x0af9, 0x0b05, 0x0b14, 0x0b20, 0x0b29, 0x0b32, - 0x0b3e, 0x0b47, 0x0b53, 0x0b5f, 0x0b68, 0x0b68, 0x0b71, 0x0b7a, - 0x0b86, 0x0b8f, 0x0b9b, 0x0ba4, 0x0bb0, 0x0bbc, 0x0bcb, 0x0bd7, - // Entry 100 - 13F - 0x0be3, 0x0bef, 0x0bfb, 0x0c07, 0x0c2b, 0x0c46, 0x0c52, 0x0c5e, - 0x0c6d, 0x0c76, 0x0c82, 0x0c8b, 0x0c9a, 0x0ca3, 0x0caf, 0x0cbb, - 0x0cc7, 0x0cd6, 0x0ce2, 0x0cf1, 0x0cfa, 0x0d06, 0x0d0f, 0x0d18, - 0x0d24, 0x0d33, 0x0d3f, 0x0d4e, 0x0d57, 0x0d63, 0x0d72, 0x0d7e, - 0x0d96, 0x0d9f, 0x0dab, 0x0dbd, 0x0dc3, 0x0dcf, 0x0ddb, 0x0de4, - 0x0dfd, 0x0e0f, 0x0e21, 0x0e2d, 0x0e36, 0x0e42, 0x0e48, 0x0e51, - 0x0e5d, 0x0e78, 0x0e81, 0x0e96, 0x0ea2, 0x0eb4, 0x0ec3, 0x0ecf, - 0x0ed8, 0x0ee7, 0x0ef0, 0x0efc, 0x0f08, 0x0f1a, 0x0f23, 0x0f32, - // Entry 140 - 17F - 0x0f3b, 0x0f44, 0x0f4d, 0x0f56, 0x0f62, 0x0f71, 0x0f80, 0x0f89, - 0x0f8f, 0x0f9b, 0x0fa1, 0x0faa, 0x0fb3, 0x0fc2, 0x0fce, 0x0fda, - 0x0fe9, 0x1004, 0x100d, 0x101c, 0x1028, 0x103b, 0x104d, 0x1059, - 0x106e, 0x107a, 0x1083, 0x108c, 0x1098, 0x10a1, 0x10b0, 0x10bc, - 0x10c8, 0x10d4, 0x10e6, 0x10ef, 0x10f8, 0x1101, 0x110a, 0x1113, - 0x111f, 0x1128, 0x1137, 0x1140, 0x114c, 0x1158, 0x1171, 0x117a, - 0x1189, 0x1195, 0x11ae, 0x11c9, 0x11d8, 0x11e7, 0x11f3, 0x11ff, - 0x120b, 0x1214, 0x1220, 0x122c, 0x1238, 0x1241, 0x124d, 0x1256, - // Entry 180 - 1BF - 0x1262, 0x1271, 0x1280, 0x128f, 0x129b, 0x12a7, 0x12b0, 0x12ce, - 0x12d7, 0x12e3, 0x12f2, 0x1304, 0x1313, 0x131f, 0x1328, 0x1331, - 0x133a, 0x1343, 0x134c, 0x1358, 0x1361, 0x136d, 0x1379, 0x1385, - 0x1391, 0x139a, 0x13a3, 0x13af, 0x13b8, 0x13c1, 0x13ca, 0x13e8, - 0x13fa, 0x1403, 0x140c, 0x141b, 0x142a, 0x1433, 0x1442, 0x144e, - 0x1457, 0x1463, 0x146c, 0x1478, 0x1484, 0x1493, 0x149f, 0x14ab, - 0x14b7, 0x14c6, 0x14d5, 0x14de, 0x14ea, 0x14f3, 0x14ff, 0x150b, - 0x1517, 0x1520, 0x152f, 0x153b, 0x1547, 0x1550, 0x155f, 0x156b, - // Entry 1C0 - 1FF - 0x1580, 0x158c, 0x1598, 0x15a7, 0x15b6, 0x15c5, 0x15d1, 0x15dd, - 0x15e9, 0x15fe, 0x160a, 0x1616, 0x1622, 0x1634, 0x163d, 0x1649, - 0x165e, 0x1673, 0x1685, 0x1691, 0x16a3, 0x16af, 0x16be, 0x16cd, - 0x16d9, 0x16e5, 0x16f7, 0x1700, 0x171e, 0x1730, 0x173c, 0x174b, - 0x175d, 0x176c, 0x1775, 0x1781, 0x1790, 0x179f, 0x17ae, 0x17c0, - 0x17c9, 0x17d5, 0x17e1, 0x17f9, 0x1805, 0x1811, 0x181d, 0x182f, - 0x1838, 0x1841, 0x184d, 0x1859, 0x1872, 0x187e, 0x188a, 0x1893, - 0x189c, 0x18ab, 0x18b7, 0x18c6, 0x18d8, 0x18e4, 0x18ea, 0x1902, - // Entry 200 - 23F - 0x190e, 0x1920, 0x192c, 0x1938, 0x1947, 0x1959, 0x196b, 0x1977, - 0x1989, 0x199b, 0x19a7, 0x19b0, 0x19c2, 0x19ce, 0x19d7, 0x19e0, - 0x19e9, 0x19f8, 0x1a04, 0x1a13, 0x1a1c, 0x1a25, 0x1a2e, 0x1a3a, - 0x1a43, 0x1a4f, 0x1a58, 0x1a64, 0x1a70, 0x1a7c, 0x1a8b, 0x1a97, - 0x1aa6, 0x1abe, 0x1aca, 0x1ad6, 0x1ae2, 0x1af4, 0x1b00, 0x1b12, - 0x1b21, 0x1b2d, 0x1b39, 0x1b42, 0x1b60, 0x1b72, 0x1b7e, 0x1b8a, - 0x1b96, 0x1b9f, 0x1bab, 0x1bb7, 0x1bc6, 0x1bdf, 0x1beb, 0x1bf4, - 0x1bfd, 0x1c09, 0x1c15, 0x1c1e, 0x1c27, 0x1c33, 0x1c39, 0x1c48, - // Entry 240 - 27F - 0x1c57, 0x1c60, 0x1c66, 0x1c6f, 0x1c78, 0x1c84, 0x1c93, 0x1c99, - 0x1ca8, 0x1cb7, 0x1cc0, 0x1ccc, 0x1cea, 0x1cf3, 0x1d02, 0x1d0b, - 0x1d23, 0x1d23, 0x1d23, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, - 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d3b, 0x1d4d, 0x1d59, - 0x1d59, 0x1d59, 0x1d68, 0x1d86, 0x1da1, 0x1dad, 0x1db9, -} // Size: 1254 bytes - -const zuLangStr string = "" + // Size: 4680 bytes - "isi-Afarisi-Abkhaziani-Afrikaansisi-Akanisi-Amharicisi-Aragoneseisi-Arab" + - "icisi-Assameseisi-Avaricisi-Aymaraisi-Azerbaijaniisi-Bashkirisi-Belarusi" + - "anisi-Bulgarii-Bislamaisi-Bambaraisi-Bengaliisi-Tibetanisi-Bretonisi-Bos" + - "nianisi-Catalanisi-Chechenisi-Chamorroisi-Corsicanisi-Czechisi-Church Sl" + - "avicisi-Chuvashisi-Welshisi-Danishisi-Germanisi-Divehiisi-Dzongkhaisi-Ew" + - "eisi-Greeki-Englishisi-Esperantoisi-Spanishisi-Estoniaisi-Basqueisi-Pers" + - "ianisi-Fulahisi-Finnishisi-Fijianisi-Faroeseisi-Frenchisi-Western Frisia" + - "nisi-Irishi-Scottish Gaelicisi-Galiciaisi-Guaraniisi-Gujaratiisi-Manxisi" + - "-Hausaisi-Hebrewisi-Hindiisi-Croatianisi-Haitianisi-Hungarianisi-Armenia" + - "isi-Hereroizilimi ezihlangeneisi-Indonesianizimiliisi-Igboisi-Sichuan Yi" + - "isi-Idoisi-Icelandicisi-Italianisi-Inuktitutisi-Japaneseisi-Javaneseisi-" + - "Georgianisi-Kongoisi-Kikuyuisi-Kuanyamaisi-Kazakhisi-Kalaallisutisi-Khme" + - "risi-Kannadaisi-Koreanisi-Kanuriisi-Kashmiriisi-Kurdishisi-Komiisi-Corni" + - "shisi-Kyrgyzisi-Latinisi-Luxembourgishisi-Gandaisi-Limburgishisi-Lingala" + - "i-Laoisi-Lithuanianisi-Luba-Katangaisi-Latvianisi-Malagasyisi-Marshalles" + - "eisi-Maoriisi-Macedonianisi-Malayalamisi-Mongolianisi-Marathiisi-Malayis" + - "i-Malteseisi-Burmeseisi-Nauruisi-North Ndebeleisi-Nepaliisi-Ndongaisi-Du" + - "tchi-Norwegian Nynorskisi-Norwegian Bokmåli-South Ndebeleisi-Navajoisi-N" + - "yanjaisi-Occitani-Oromoisi-Odiaisi-Osseticisi-Punjabiisi-Polishisi-Pasht" + - "oisi-Portugueseisi-Quechuaisi-Romanshisi-Rundiisi-Romanianisi-Russianisi" + - "-Kinyarwandaisi-Sanskriti-Sardinianisi-Sindhiisi-Northern Samiisi-Sangoi" + - "-Sinhalaisi-Slovakisi-Slovenianisi-SamoanisiShonaisi-Somaliisi-Albaniais" + - "i-SerbianisiSwatiisiSuthuisi-Sundaneseisi-SwedishisiSwahiliisi-Tamilisi-" + - "Teluguisi-Tajikisi-Thaiisi-Tigrinyaisi-Turkmenisi-Tswanaisi-Tonganisi-Tu" + - "rkishisi-Tsongaisi-Tatarisi-Tahitianisi-Uighurisi-Ukrainianisi-Urduisi-U" + - "zbekisi-Vendaisi-Vietnameseisi-Volapükisi-Walloonisi-WolofisiXhosaisi-Yi" + - "ddishisi-Yorubaisi-ChineseisiZuluisi-Achineseisi-Acoliisi-Adangmeisi-Ady" + - "gheisi-Aghemisi-Ainuisi-Aleuti-Southern Altaiisi-Angikaisi-Mapucheisi-Ar" + - "apahoisi-Asuisi-Asturianisi-Awadhiisi-Balineseisi-Basaaisi-Bembaisi-Bena" + - "isi-Western Balochiisi-Bhojpurii-Binii-Siksikaisi-Bodoisi-Buginesei-Blin" + - "isi-Cebuanoisi-Chigaisi-Chuukeseisi-Mariisi-Choctawisi-Cherokeeisi-Cheye" + - "nneisi-Central Kurdishi-Seselwa Creole Frenchisi-Dakotaisi-Dargwaisi-Tai" + - "taisi-Dogribisi-Zarmaisi-Lower Sorbianisi-Dualaisi-Jola-Fonyiisi-Dazagai" + - "si-Embuisi-Efikisi-Ekajukisi-Ewondoisi-Filipinoisi-Fonisi-Friulianisi-Ga" + - "isi-Gagauzisi-Gan Chineseisi-Geezisi-Gilberteseisi-Gorontaloisi-Swiss Ge" + - "rmanisi-Gusliisi-Gwichʼinisi-Hakka Chineseisi-Hawaiianisi-Hiligaynonisi-" + - "Hmongisi-Upper Sorbianisi-Xiang Chineseisi-Hupaisi-Ibanisi-Ibibioisi-Ilo" + - "koisi-Ingushisi-Lojbanisi-Ngombaisi-Machameisi-Kabyleisi-Kachinisi-Jjuis" + - "i-Kambaisi-Kabardianisi-Tyapisi-Makondeisi-Kabuverdianuisi-Koroisi-Khasi" + - "isi-Koyra Chiiniisi-Kakoisi-Kalenjinisi-Kimbunduisi-Komi-Permyakisi-Konk" + - "aniisi-Kpelleisi-Karachay-Balkarisi-Karelianisi-KurukhisiShambalaisi-Baf" + - "iaisi-Colognianisi-Kumykisi-Ladinoisi-Langiisi-Lezghianisi-Lakotaisi-Loz" + - "iisi-Northern Luriisi-Luba-Luluaisi-Lundaisi-Luoisi-Mizoisi-Luyiaisi-Mad" + - "ureseisi-Magahiisi-Maithiliisi-Makasarisi-Masaiisi-Mokshaisi-Mendeisi-Me" + - "ruisi-Morisyenisi-Makhuwa-Meettoisi-Meta’isi-Micmacisi-Minangkabauisi-Ma" + - "nipuriisi-Mohawkisi-Mossiisi-Mundangizilimi ezehlukeneisi-Creekisi-Miran" + - "deseisi-Erzyaisi-Mazanderaniisi-Min Nan Chineseisi-Neapolitanisi-Namaisi" + - "-Low Germanisi-Newariisi-Niasisi-Niueanisi-Kwasioisi-Ngiemboonisi-Nogaii" + - "si-N’Koisi-Northern Sothoisi-Nuerisi-Nyankoleisi-Pangasinanisi-Pampangai" + - "si-Papiamentoisi-Palauanisi-Nigerian Pidginisi-Prussianisi-Kʼicheʼi-Rapa" + - "nuii-Rarotonganisi-Romboisi-Aromanianisi-Rwai-Sandawei-Sakhaisi-Samburui" + - "-Santaliisi-Ngambayisi-Sangui-Siciliani-Scotsi-Southern Kurdishisi-Senai" + - "si-Koyraboro Senniisi-Tachelhiti-Shani-Southern Samiisi-Lule Samiisi-Ina" + - "ri Samiisi-Skolt Samii-Soninkei-Sranan Tongoi-Sahoi-Sukumaisi-Comoriani-" + - "Syriacisi-Timneisi-Tesoisi-Tetumisi-Tigreisi-Klingonisi-Tok Pisinisi-Tar" + - "okoisi-Tumbukaisi-Tuvaluisi-Tasawaqisi-Tuvinianisi-Central Atlas Tamazig" + - "htisi-Udmurtisi-Umbunduulimi olungaziwaisi-VaiisiVunjoisi-Walserisi-Wola" + - "yttaisi-Warayisi-Warlpiriisi-Wu Chineseisi-Kalmykisi-Sogaisi-Yangbenisi-" + - "Yembaisi-Cantoneseisi-Moroccan Tamazight esivamileisi-Zuniakukho okuquke" + - "thwe kolimiisi-Zazaisi-Arabic esivamile sesimanjeisi-Austrian Germani-Sw" + - "iss High Germanisi-Austrillian Englishi-Canadian Englishi-British Englis" + - "hi-American Englishisi-Latin American Spanishi-European Spanishi-Mexican" + - " Spanishi-Canadian Frenchi-Swiss Frenchisi-Low Saxonisi-Flemishisi-Brazi" + - "llian Portugueseisi-European Portugueseisi-Moldavianisi-Serbo-Croatianis" + - "i-Congo Swahiliisi-Chinese (esenziwe-lula)isi-Chinese (Okosiko)" - -var zuLangIdx = []uint16{ // 615 elements - // Entry 0 - 3F - 0x0000, 0x0008, 0x0015, 0x0015, 0x0020, 0x0028, 0x0033, 0x0040, - 0x004a, 0x0056, 0x0060, 0x006a, 0x0079, 0x0084, 0x0092, 0x009d, - 0x00a6, 0x00b1, 0x00bc, 0x00c7, 0x00d1, 0x00dc, 0x00e7, 0x00f2, - 0x00fe, 0x010a, 0x010a, 0x0113, 0x0124, 0x012f, 0x0138, 0x0142, - 0x014c, 0x0156, 0x0162, 0x0169, 0x0172, 0x017b, 0x0188, 0x0193, - 0x019e, 0x01a8, 0x01b3, 0x01bc, 0x01c7, 0x01d1, 0x01dc, 0x01e6, - 0x01f9, 0x0202, 0x0213, 0x021e, 0x0229, 0x0235, 0x023d, 0x0246, - 0x0250, 0x0259, 0x0259, 0x0265, 0x0270, 0x027d, 0x0288, 0x0292, - // Entry 40 - 7F - 0x02a5, 0x02b3, 0x02ba, 0x02c2, 0x02d0, 0x02d0, 0x02d7, 0x02e4, - 0x02ef, 0x02fc, 0x0308, 0x0314, 0x0320, 0x0329, 0x0333, 0x033f, - 0x0349, 0x0358, 0x0361, 0x036c, 0x0376, 0x0380, 0x038c, 0x0397, - 0x039f, 0x03aa, 0x03b4, 0x03bd, 0x03ce, 0x03d7, 0x03e5, 0x03f0, - 0x03f5, 0x0403, 0x0413, 0x041e, 0x042a, 0x0439, 0x0442, 0x0450, - 0x045d, 0x046a, 0x0475, 0x047e, 0x0489, 0x0494, 0x049d, 0x04ae, - 0x04b8, 0x04c2, 0x04cb, 0x04de, 0x04f3, 0x0502, 0x050c, 0x0516, - 0x0521, 0x0521, 0x0528, 0x0530, 0x053b, 0x0546, 0x0546, 0x0550, - // Entry 80 - BF - 0x055a, 0x0568, 0x0573, 0x057e, 0x0587, 0x0593, 0x059e, 0x05ad, - 0x05b9, 0x05c4, 0x05ce, 0x05df, 0x05e8, 0x05f1, 0x05fb, 0x0608, - 0x0612, 0x061a, 0x0624, 0x062f, 0x063a, 0x0642, 0x064a, 0x0657, - 0x0662, 0x066c, 0x0675, 0x067f, 0x0688, 0x0690, 0x069c, 0x06a7, - 0x06b1, 0x06bb, 0x06c6, 0x06d0, 0x06d9, 0x06e5, 0x06ef, 0x06fc, - 0x0704, 0x070d, 0x0716, 0x0724, 0x0730, 0x073b, 0x0744, 0x074c, - 0x0757, 0x0761, 0x0761, 0x076c, 0x0773, 0x077f, 0x0788, 0x0793, - 0x079d, 0x079d, 0x079d, 0x07a6, 0x07ae, 0x07ae, 0x07ae, 0x07b7, - // Entry C0 - FF - 0x07b7, 0x07c7, 0x07c7, 0x07d1, 0x07d1, 0x07dc, 0x07dc, 0x07e7, - 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07e7, 0x07ee, 0x07ee, 0x07fa, - 0x07fa, 0x0804, 0x0804, 0x0810, 0x0810, 0x0819, 0x0819, 0x0819, - 0x0819, 0x0819, 0x0822, 0x0822, 0x082a, 0x082a, 0x082a, 0x083d, - 0x0849, 0x0849, 0x084f, 0x084f, 0x084f, 0x0858, 0x0858, 0x0858, - 0x0858, 0x0858, 0x0860, 0x0860, 0x0860, 0x086c, 0x086c, 0x0872, - 0x0872, 0x0872, 0x0872, 0x0872, 0x0872, 0x0872, 0x087d, 0x0886, - 0x0886, 0x0886, 0x0892, 0x089a, 0x089a, 0x08a5, 0x08a5, 0x08b1, - // Entry 100 - 13F - 0x08bd, 0x08d0, 0x08d0, 0x08d0, 0x08d0, 0x08e7, 0x08e7, 0x08f1, - 0x08fb, 0x0904, 0x0904, 0x0904, 0x090e, 0x090e, 0x0917, 0x0917, - 0x0928, 0x0928, 0x0931, 0x0931, 0x093f, 0x093f, 0x0949, 0x0951, - 0x0959, 0x0959, 0x0959, 0x0963, 0x0963, 0x0963, 0x0963, 0x096d, - 0x096d, 0x096d, 0x0979, 0x0979, 0x0980, 0x0980, 0x0980, 0x0980, - 0x0980, 0x0980, 0x0980, 0x098c, 0x0992, 0x099c, 0x09ab, 0x09ab, - 0x09ab, 0x09ab, 0x09b3, 0x09c1, 0x09c1, 0x09c1, 0x09c1, 0x09c1, - 0x09c1, 0x09ce, 0x09ce, 0x09ce, 0x09ce, 0x09de, 0x09de, 0x09de, - // Entry 140 - 17F - 0x09e7, 0x09f4, 0x09f4, 0x0a05, 0x0a11, 0x0a11, 0x0a1f, 0x0a1f, - 0x0a28, 0x0a39, 0x0a4a, 0x0a52, 0x0a5a, 0x0a64, 0x0a6d, 0x0a77, - 0x0a77, 0x0a77, 0x0a81, 0x0a8b, 0x0a96, 0x0a96, 0x0a96, 0x0a96, - 0x0a96, 0x0aa0, 0x0aaa, 0x0ab1, 0x0aba, 0x0aba, 0x0ac7, 0x0ac7, - 0x0acf, 0x0ada, 0x0aea, 0x0aea, 0x0af2, 0x0af2, 0x0afb, 0x0afb, - 0x0b0b, 0x0b0b, 0x0b0b, 0x0b13, 0x0b1f, 0x0b2b, 0x0b3b, 0x0b46, - 0x0b46, 0x0b50, 0x0b63, 0x0b63, 0x0b63, 0x0b6f, 0x0b79, 0x0b84, - 0x0b8d, 0x0b9a, 0x0ba3, 0x0ba3, 0x0bad, 0x0bb6, 0x0bb6, 0x0bb6, - // Entry 180 - 1BF - 0x0bc2, 0x0bc2, 0x0bc2, 0x0bc2, 0x0bcc, 0x0bcc, 0x0bcc, 0x0bcc, - 0x0bd4, 0x0be5, 0x0be5, 0x0bf3, 0x0bf3, 0x0bfc, 0x0c03, 0x0c0b, - 0x0c14, 0x0c14, 0x0c14, 0x0c20, 0x0c20, 0x0c2a, 0x0c36, 0x0c41, - 0x0c41, 0x0c4a, 0x0c4a, 0x0c54, 0x0c54, 0x0c5d, 0x0c65, 0x0c71, - 0x0c71, 0x0c83, 0x0c8e, 0x0c98, 0x0ca7, 0x0ca7, 0x0cb3, 0x0cbd, - 0x0cc6, 0x0cc6, 0x0cd1, 0x0ce3, 0x0cec, 0x0cf9, 0x0cf9, 0x0cf9, - 0x0cf9, 0x0d02, 0x0d11, 0x0d24, 0x0d32, 0x0d3a, 0x0d48, 0x0d52, - 0x0d5a, 0x0d64, 0x0d64, 0x0d6e, 0x0d7b, 0x0d84, 0x0d84, 0x0d84, - // Entry 1C0 - 1FF - 0x0d8e, 0x0da0, 0x0da8, 0x0da8, 0x0da8, 0x0db4, 0x0db4, 0x0db4, - 0x0db4, 0x0db4, 0x0dc2, 0x0dc2, 0x0dce, 0x0ddc, 0x0de7, 0x0de7, - 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, 0x0dfa, - 0x0dfa, 0x0e06, 0x0e06, 0x0e13, 0x0e13, 0x0e13, 0x0e1c, 0x0e28, - 0x0e28, 0x0e28, 0x0e31, 0x0e31, 0x0e31, 0x0e31, 0x0e31, 0x0e3e, - 0x0e45, 0x0e4e, 0x0e55, 0x0e55, 0x0e60, 0x0e60, 0x0e69, 0x0e69, - 0x0e74, 0x0e7d, 0x0e87, 0x0e8e, 0x0e8e, 0x0ea0, 0x0ea0, 0x0ea8, - 0x0ea8, 0x0ea8, 0x0ebb, 0x0ebb, 0x0ebb, 0x0ec8, 0x0ece, 0x0ece, - // Entry 200 - 23F - 0x0ece, 0x0ece, 0x0ece, 0x0edd, 0x0eea, 0x0ef8, 0x0f06, 0x0f0f, - 0x0f0f, 0x0f1d, 0x0f1d, 0x0f23, 0x0f23, 0x0f2b, 0x0f2b, 0x0f2b, - 0x0f37, 0x0f37, 0x0f3f, 0x0f3f, 0x0f3f, 0x0f48, 0x0f50, 0x0f50, - 0x0f59, 0x0f62, 0x0f62, 0x0f62, 0x0f62, 0x0f6d, 0x0f6d, 0x0f6d, - 0x0f6d, 0x0f6d, 0x0f7a, 0x0f7a, 0x0f84, 0x0f84, 0x0f84, 0x0f84, - 0x0f8f, 0x0f99, 0x0fa4, 0x0fb0, 0x0fcb, 0x0fd5, 0x0fd5, 0x0fe0, - 0x0ff0, 0x0ff7, 0x0ff7, 0x0ff7, 0x0ff7, 0x0ff7, 0x0ff7, 0x0ff7, - 0x0fff, 0x1009, 0x1015, 0x101e, 0x101e, 0x102a, 0x1038, 0x1042, - // Entry 240 - 27F - 0x1042, 0x104a, 0x104a, 0x104a, 0x1055, 0x105e, 0x105e, 0x106b, - 0x106b, 0x106b, 0x106b, 0x106b, 0x108b, 0x1093, 0x10ac, 0x10b4, - 0x10d2, 0x10d2, 0x10e5, 0x10f8, 0x110f, 0x1121, 0x1132, 0x1144, - 0x115e, 0x1170, 0x1181, 0x1181, 0x1192, 0x11a0, 0x11ad, 0x11b8, - 0x11d1, 0x11e8, 0x11f5, 0x1207, 0x1218, 0x1233, 0x1248, -} // Size: 1254 bytes - -// Total size for lang: 1094462 bytes (1094 KB) - -// Number of keys: 178 -var ( - scriptIndex = tagIndex{ - "", - "", - "AdlmAfakAghbAhomArabArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopoBrahBrai" + - "BugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgydEgyh" + - "EgypElbaEthiGeokGeorGlagGonmGothGranGrekGujrGuruHanbHangHaniHanoHans" + - "HantHatrHebrHiraHluwHmngHrktHungIndsItalJamoJavaJpanJurcKaliKanaKhar" + - "KhmrKhojKndaKoreKpelKthiLanaLaooLatfLatgLatnLepcLimbLinaLinbLisuLoma" + - "LyciLydiMahjMandManiMarcMayaMendMercMeroMlymModiMongMoonMrooMteiMult" + - "MymrNarbNbatNewaNkgbNkooNshuOgamOlckOrkhOryaOsgeOsmaPalmPaucPermPhag" + - "PhliPhlpPhlvPhnxPlrdPrtiRjngRoroRunrSamrSaraSarbSaurSgnwShawShrdSidd" + - "SindSinhSoraSoyoSundSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTangTavt" + - "TeluTengTfngTglgThaaThaiTibtTirhUgarVaiiVispWaraWoleXpeoXsuxYiiiZanb" + - "ZinhZmthZsyeZsymZxxxZyyyZzzz", - } -) - -var scriptHeaders = [261]header{ - { // af - afScriptStr, - afScriptIdx, - }, - {}, // agq - {}, // ak - { // am - amScriptStr, - amScriptIdx, - }, - { // ar - arScriptStr, - arScriptIdx, - }, - {}, // ar-EG - {}, // ar-LY - {}, // ar-SA - { // as - "বঙালী", - []uint16{ // 14 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, - }, - }, - {}, // asa - { // ast - "adlmafakacáucaso-albanésahomárabearamaicu imperialarmeniuavésticubalinés" + - "bamumbassa vahbatakbengalínbhkssímbolos de Blissbopomofobrahmibraill" + - "elontarabuhidchakmasilábicu unificáu de los nativos canadiensescariu" + - "chamcherokicirthcoptuxipriotacirílicueslavónicu cirílicu eclesiástic" + - "u antiguudevanagarialfabetu Deserettaquigrafía Duployédemóticu exipc" + - "ianuhieráticu exipcianuxeroglíficos exipcianoselbasanetíopekhutsuri " + - "xeorxanuxeorxanuglagolíticugóticugranthagrieguguyaratigurmukhihanbha" + - "ngulhanhanunó’ohan simplificáuhan tradicionalhatranuhebréuḥiraganaxe" + - "roglíficos anatoliospahawh hmongsilabarios xaponeseshúngaru antiguui" + - "ndusitálicu antiguujamoxavanésxaponésjurchenkayah likatakanakharosht" + - "hiḥemerkhojkicanaréscoreanukpellekaithilannalaosianufraktur llatínga" + - "élicu llatínllatínlepchalimbullinial Allinial Balfabetu de Fraserlo" + - "maliciulidiumahajanimandéumaniquéumarcxeroglíficos mayesmendemeroíti" + - "cu en cursivameroíticumalayalammodimongoltipos Moonmromeitei mayekmu" + - "ltanibirmanuárabe del norte antiguunabatéunewageba del naxin’konüshu" + - "oghamol chikiorkhonoriyaosgeosmanyapalmirenupau cin haupérmicu antig" + - "uuescritura ‘Phags-papahlavi d’inscripcionespahlavi de salteriupahla" + - "vi de llibrosfeniciufonéticu de Pollardpartu d’inscripcionesrejangro" + - "ngorongorunessamaritanusaratiárabe del sur antiguusaurashtraescritur" + - "a de signosshavianusharadasiddhamkhudabadicingaléssora sompengsondan" + - "éssyloti nagrisiriacusiriacu estrangelosiriacu occidentalsiriacu or" + - "ientaltagbanwatakritai letai lue nuevutamiltanguttai viettelugutengw" + - "artifinaghtagalogthaanatailandéstibetanutirhutaugaríticuvaifala visi" + - "blevarang kshitiwoleaipersa antiguucuneiforme sumeriu acadiuyiheredá" + - "uescritura matemáticaemojisímbolosnon escritucomúnescritura desconoc" + - "ida", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x0009, 0x001a, 0x001e, 0x0024, 0x0035, 0x003c, - 0x0045, 0x004d, 0x0052, 0x005b, 0x0060, 0x0069, 0x006d, 0x007f, - 0x0087, 0x008d, 0x0094, 0x009b, 0x00a0, 0x00a6, 0x00d4, 0x00d9, - 0x00dd, 0x00e4, 0x00e9, 0x00ee, 0x00f6, 0x00ff, 0x012a, 0x0134, - 0x0144, 0x0159, 0x016c, 0x0180, 0x0198, 0x019f, 0x01a6, 0x01b7, - 0x01bf, 0x01cb, 0x01cb, 0x01d2, 0x01d9, 0x01df, 0x01e7, 0x01ef, - 0x01f3, 0x01f9, 0x01fc, 0x0207, 0x0217, 0x0226, 0x022d, 0x0234, - 0x023e, 0x0255, 0x0261, 0x0275, 0x0285, 0x028a, 0x029a, 0x029e, - // Entry 40 - 7F - 0x02a6, 0x02ae, 0x02b5, 0x02bd, 0x02c5, 0x02cf, 0x02d6, 0x02dc, - 0x02e4, 0x02eb, 0x02f1, 0x02f7, 0x02fc, 0x0304, 0x0313, 0x0323, - 0x032a, 0x0330, 0x0335, 0x033e, 0x0347, 0x0359, 0x035d, 0x0362, - 0x0367, 0x036f, 0x0376, 0x037f, 0x0383, 0x0396, 0x039b, 0x03b0, - 0x03ba, 0x03c3, 0x03c7, 0x03cd, 0x03d7, 0x03da, 0x03e6, 0x03ed, - 0x03f4, 0x040c, 0x0414, 0x0418, 0x0425, 0x042b, 0x0431, 0x0436, - 0x043e, 0x0444, 0x0449, 0x044d, 0x0454, 0x045d, 0x0468, 0x0478, - 0x048d, 0x04a6, 0x04b9, 0x04cb, 0x04d2, 0x04e6, 0x04fd, 0x0503, - // Entry 80 - BF - 0x050d, 0x0512, 0x051c, 0x0522, 0x0538, 0x0542, 0x0555, 0x055d, - 0x0564, 0x056b, 0x0574, 0x057d, 0x0589, 0x0589, 0x0592, 0x059e, - 0x05a5, 0x05b7, 0x05c9, 0x05d9, 0x05e1, 0x05e6, 0x05ec, 0x05f9, - 0x05fe, 0x0604, 0x060c, 0x0612, 0x0619, 0x0621, 0x0628, 0x062e, - 0x0638, 0x0640, 0x0647, 0x0651, 0x0654, 0x0660, 0x066d, 0x0673, - 0x0680, 0x0699, 0x069b, 0x069b, 0x06a3, 0x06b8, 0x06bd, 0x06c6, - 0x06d1, 0x06d7, 0x06ec, - }, - }, - { // az - azScriptStr, - azScriptIdx, - }, - { // az-Cyrl - "Кирил", - []uint16{ // 30 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, - }, - }, - {}, // bas - { // be - "арабскаеармянскаебенгальскаебапамофашрыфт Брайлякірыліцадэванагарыэфіопс" + - "каегрузінскаегрэчаскаегуджарацігурмукхіхан з бапамофахангыльханспро" + - "шчанае хантрадыцыйнае ханяўрэйскаехіраганаяпонскія складовыя пісьмы" + - "чамояпонскаекатаканакхмерскаеканадакарэйскаелаоскаелацініцамалаялам" + - "старамангольскаем’янмарскаеорыясінгальскаетамільскаетэлугутанатайск" + - "аетыбецкаематэматычныя знакіэмодзісімвалыбеспісьменнаязвычайнаеневя" + - "домае пісьмо", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0038, 0x0038, 0x0038, - 0x0048, 0x0048, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, - 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x006f, 0x006f, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0095, 0x0095, - 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00bb, 0x00cd, 0x00dd, - 0x00f7, 0x0105, 0x010b, 0x010b, 0x0126, 0x0143, 0x0143, 0x0155, - 0x0165, 0x0165, 0x0165, 0x0195, 0x0195, 0x0195, 0x0195, 0x019d, - // Entry 40 - 7F - 0x019d, 0x01ad, 0x01ad, 0x01ad, 0x01bd, 0x01bd, 0x01cf, 0x01cf, - 0x01db, 0x01ed, 0x01ed, 0x01ed, 0x01ed, 0x01fb, 0x01fb, 0x01fb, - 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, - 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, 0x020b, - 0x020b, 0x021b, 0x021b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, - 0x0252, 0x0252, 0x0252, 0x0252, 0x0252, 0x0252, 0x0252, 0x0252, - 0x0252, 0x0252, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, - 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, - // Entry 80 - BF - 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, 0x025a, - 0x025a, 0x025a, 0x025a, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, - 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, - 0x0284, 0x0284, 0x0284, 0x0290, 0x0290, 0x0290, 0x0290, 0x0298, - 0x02a6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, - 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02d9, 0x02e5, 0x02f3, - 0x030d, 0x031f, 0x033e, - }, - }, - {}, // bem - {}, // bez - { // bg - bgScriptStr, - bgScriptIdx, - }, - {}, // bm - { // bn - bnScriptStr, - bnScriptIdx, - }, - {}, // bn-IN - { // bo - "རྒྱ་ཡིག་གསར་པ།རྒྱ་ཡིག་རྙིང་པ།བོད་ཡིག་སྙན་བརྒྱུད། ཡིག་རིགས་སུ་མ་བཀོད་པའི་" + - "ཟིན་ཐོ།", - []uint16{ // 177 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x002a, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - // Entry 40 - 7F - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - // Entry 80 - BF - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, - 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, - 0x00eb, - }, - }, - {}, // bo-IN - { // br - "arabekarameek impalaerelarmenianekavestekbalinekbengalibopomofoBraillebo" + - "ugiekkoptekkirillekkirillek henslavonekdevanagarihieroglifoù egiptek" + - "etiopekjorjianekglagolitekgotekgresianekgujaratigurmukhihangeulhanha" + - "n eeunaethan hengounelhebraekhiraganahieroglifoù Anatoliahenitalekja" + - "vanekjapanekkatakanakhmerkannadakoreaneklaoseklatin gouezeleklatinhi" + - "eroglifoù mayaekmalayalammongolekmyanmarogamoriyaruneksinghaleksunda" + - "neksirieksiriek Estrangelāsiriek ar C’hornôgsiriek ar Retertamilekte" + - "lougoutagalogthaanathaitibetanekougaritekvaipersek kozhnotadur jedon" + - "ielarouezioùanskrivetboutinskritur dianav", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0018, 0x0022, - 0x0029, 0x0030, 0x0030, 0x0030, 0x0030, 0x0037, 0x0037, 0x0037, - 0x003f, 0x003f, 0x0046, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x0053, 0x0053, 0x005b, 0x006f, 0x0079, - 0x0079, 0x0079, 0x0079, 0x0079, 0x008d, 0x008d, 0x0094, 0x0094, - 0x009d, 0x00a7, 0x00a7, 0x00ac, 0x00ac, 0x00b5, 0x00bd, 0x00c5, - 0x00c5, 0x00cc, 0x00cf, 0x00cf, 0x00da, 0x00e7, 0x00e7, 0x00ee, - 0x00f6, 0x010b, 0x010b, 0x010b, 0x010b, 0x010b, 0x0114, 0x0114, - // Entry 40 - 7F - 0x011b, 0x0122, 0x0122, 0x0122, 0x012a, 0x012a, 0x012f, 0x012f, - 0x0136, 0x013e, 0x013e, 0x013e, 0x013e, 0x0144, 0x0144, 0x0153, - 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x016b, 0x016b, 0x016b, - 0x016b, 0x0174, 0x0174, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, - 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, 0x0187, - 0x0187, 0x0187, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, - 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, 0x018c, - // Entry 80 - BF - 0x018c, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, - 0x0191, 0x0191, 0x0191, 0x019a, 0x019a, 0x019a, 0x01a2, 0x01a2, - 0x01a8, 0x01ba, 0x01cf, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, - 0x01e5, 0x01e5, 0x01e5, 0x01ed, 0x01ed, 0x01ed, 0x01f4, 0x01fa, - 0x01fe, 0x0207, 0x0207, 0x0210, 0x0213, 0x0213, 0x0213, 0x0213, - 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, 0x022e, 0x022e, 0x0238, - 0x0241, 0x0247, 0x0255, - }, - }, - { // brx - "अरबीशहनशाही आरामाईकअर्मेनियाईअवस्तन्बालीबटकीबंगालीब्लीस चीन्हबोपोमोफोब्र" + - "ह्मीब्रेलबुगीनीबुहीदयुनीफाईड कैनेडियन अबॉरीजीनल सीलैबीक्सकारियनकॅम" + - "चिरूकीसिर्थकॉप्टसीप्रीओट्सिरिलिक्पुरानी चर्च सिरिलिक्देवनागरीदेसेर" + - "ट्मीस्री डैमोटीक्मीस्री हैरैटीक्मीस्री हैरोग्लीफ़्ईथोपियाईजोर्जीयन" + - " खुतसुरीजोर्जीयनग्लैगोलिटीकगौथीकग्रीकगुजरातीगुरमुखीहंगुलहानहानुनुसरल" + - "ीकृत हानपारम्परिक हानहिब्रूहीरागानापाहवाह ह्मौंगकाताकाना या हीरागा" + - "नापुरानी हंगैरीयनसिन्धुपुरानी इटैलियनजावानीसजापानीकायाह लीकाताकाना" + - "खरोष्टीख्मेरकन्नड़कोरियाईलानालाओफ्रैक्तुर लैटिनगैलीक लैटिनलैटिनलेप" + - "चालिम्बुलीनीयर एलीनीयर बीलीसीयनलीडीयनमांडेमानीकीमाया हीरोग्लीफ्मेर" + - "ोईटीक्मलयालम्मंगोलियाईमुन्मेतेई मयेकम्यानमार्न्गकोओगहैमओल चीकीओरखो" + - "नउड़ियाओस्मानियापुरानी पर्मीक्फाग्स पाबुक (सालटर) पहलवीफोनीशीयनपौल" + - "ार्ड़ फोनेटीकरेजेंगरोंगोरोंगोरूनिकसमारतीसरातीसौराष्ट्रसांकेतिक लेख" + - "शेवियनसिंहालीसूडानीसील्होटी नागरीसीरीआकएस्ट्रांगलो सीरीआकपश्चीमी स" + - "ीरीआकपूर्वी सीरीआकतागबानवाताई लेनया ताई लुएतमीळतेलुगुतेंगवारतीफीना" + - "ग़टागालॉगथानाथाईतिब्बतीऊगारीटीकवाईवीज़ीबल बोलीपुरानी फारसीसुमेरो अ" + - "क्काड़ी कुनेईफॉर्मयीविरासतअलिखितआमअज्ञात या अवैध लिपि", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0037, 0x0055, - 0x006a, 0x0076, 0x0076, 0x0076, 0x0082, 0x0094, 0x0094, 0x00b3, - 0x00cb, 0x00e0, 0x00ef, 0x0101, 0x0110, 0x0110, 0x0179, 0x018b, - 0x0194, 0x01a6, 0x01b5, 0x01c4, 0x01df, 0x01f7, 0x022f, 0x0247, - 0x025c, 0x025c, 0x0287, 0x02b2, 0x02e6, 0x02e6, 0x02fe, 0x032c, - 0x0344, 0x0365, 0x0365, 0x0374, 0x0374, 0x0383, 0x0398, 0x03ad, - 0x03ad, 0x03bc, 0x03c5, 0x03d7, 0x03f6, 0x041b, 0x041b, 0x042d, - 0x0445, 0x0445, 0x046a, 0x04a2, 0x04cd, 0x04df, 0x0507, 0x0507, - // Entry 40 - 7F - 0x051c, 0x052e, 0x052e, 0x0544, 0x055c, 0x0571, 0x0580, 0x0580, - 0x0592, 0x05a7, 0x05a7, 0x05a7, 0x05b3, 0x05bc, 0x05e7, 0x0606, - 0x0615, 0x0624, 0x0636, 0x064c, 0x0665, 0x0665, 0x0665, 0x0677, - 0x0689, 0x0689, 0x0698, 0x06aa, 0x06aa, 0x06d5, 0x06d5, 0x06d5, - 0x06f0, 0x0705, 0x0705, 0x0720, 0x072c, 0x072c, 0x0748, 0x0748, - 0x0763, 0x0763, 0x0763, 0x0763, 0x0763, 0x0772, 0x0772, 0x0781, - 0x0794, 0x07a3, 0x07b5, 0x07b5, 0x07d0, 0x07d0, 0x07d0, 0x07f8, - 0x080e, 0x080e, 0x080e, 0x0839, 0x0851, 0x087f, 0x087f, 0x0891, - // Entry 80 - BF - 0x08af, 0x08be, 0x08d0, 0x08df, 0x08df, 0x08fa, 0x091c, 0x092e, - 0x092e, 0x092e, 0x092e, 0x0943, 0x0943, 0x0943, 0x0955, 0x097d, - 0x098f, 0x09c3, 0x09eb, 0x0a10, 0x0a28, 0x0a28, 0x0a38, 0x0a55, - 0x0a61, 0x0a61, 0x0a61, 0x0a73, 0x0a88, 0x0aa0, 0x0ab5, 0x0ac1, - 0x0aca, 0x0adf, 0x0adf, 0x0af7, 0x0b00, 0x0b22, 0x0b22, 0x0b22, - 0x0b44, 0x0b8e, 0x0b94, 0x0b94, 0x0ba6, 0x0ba6, 0x0ba6, 0x0ba6, - 0x0bb8, 0x0bbe, 0x0bf1, - }, - }, - { // bs - "arapsko pismoimperijsko aramejsko pismoarmensko pismoavestansko pismobal" + - "ijsko pismobatak pismobengalsko pismoblisimbolično pismopismo bopomo" + - "fobramansko pismobrajevo pismobuginsko pismobuhidsko pismočakmansko " + - "pismoUjedinjeni kanadski aboridžinski silabicikarijsko pismočamsko p" + - "ismočerokicirt pismokoptičko pismokiparsko pismoćirilicaStaroslovens" + - "ka crkvena ćirilicapismo devanagaridezeretegipatsko narodno pismoegi" + - "patsko hijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko " + - "khutsuri pismogruzijsko pismoglagoljicagotikagrčko pismopismo gudžar" + - "atipismo gurmukipismo hanbpismo hangulpismo hanhanuno pismopojednost" + - "avljeno pismo hantradicionalno pismo hanhebrejsko pismopismo hiragan" + - "apahawh hmong pismokatakana ili hiraganaStaromađarsko pismoinduško i" + - "smostaro italsko pismopismo jamojavansko pismojapansko pismokajah li" + - " pismopismo katakanakarošti pismokmersko pismopismo kanadakorejsko p" + - "ismokaićansko pismolanna pismolaosko pismolatinica (fraktur varijant" + - "a)galska latinicalatinicalepča pismolimbu pismolinearno A pismolinea" + - "rno B pismolisijsko pismolidijsko pismomandeansko pismomanihejsko pi" + - "smomajanski hijeroglifimeroitik pismomalajalamsko pismomongolsko pis" + - "momesečevo pismomeitei majek pismomijanmarsko pismon’ko pismoogham p" + - "ismool čiki pismoorkhon pismopismo orijaosmanja pismostaro permiksko" + - " pismophags-pa pismopisani pahlavipsalter pahlavipahlavi pismofeniča" + - "nsko pismopolard fonetsko pismopisani partianrejang pismorongorongo " + - "pismorunsko pismosamaritansko pismosarati pismosauraštra pismoznakov" + - "no pismošavian pismopismo sinhalasiloti nagri pismosirijsko pismosir" + - "ijsko estrangelo pismozapadnosirijsko pismopismo istočne Sirijetagba" + - "nva pismotai le pismonovo tai lue pismotamilsko pismotai viet pismop" + - "ismo telugutengvar pismotifinag pismotagalogpismo tanatajlandsko pis" + - "motibetansko pismougaritsko pismovai pismovidljivi govorstaropersijs" + - "ko pismosumersko-akadsko kuneiform pismoji pismonasledno pismomatema" + - "tička notacijaemoji sličicesimbolinepisani jezikzajedničko pismonepo" + - "znato pismo", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0035, - 0x0045, 0x0053, 0x0053, 0x0053, 0x005e, 0x006d, 0x006d, 0x0081, - 0x008f, 0x009e, 0x00ab, 0x00b9, 0x00c7, 0x00d7, 0x0101, 0x010f, - 0x011c, 0x0123, 0x012d, 0x013c, 0x014a, 0x0153, 0x0173, 0x0183, - 0x018a, 0x018a, 0x01a1, 0x01bb, 0x01d0, 0x01d0, 0x01de, 0x01f6, - 0x0205, 0x020f, 0x020f, 0x0215, 0x0215, 0x0221, 0x0231, 0x023e, - 0x0248, 0x0254, 0x025d, 0x0269, 0x0283, 0x029a, 0x029a, 0x02a9, - 0x02b7, 0x02b7, 0x02c9, 0x02de, 0x02f2, 0x02ff, 0x0312, 0x031c, - // Entry 40 - 7F - 0x032a, 0x0338, 0x0338, 0x0346, 0x0354, 0x0362, 0x036f, 0x036f, - 0x037b, 0x0389, 0x0389, 0x0399, 0x03a4, 0x03b0, 0x03cc, 0x03db, - 0x03e3, 0x03ef, 0x03fa, 0x040a, 0x041a, 0x041a, 0x041a, 0x0428, - 0x0436, 0x0436, 0x0446, 0x0456, 0x0456, 0x046a, 0x046a, 0x046a, - 0x0478, 0x048a, 0x048a, 0x0499, 0x04a8, 0x04a8, 0x04ba, 0x04ba, - 0x04cb, 0x04cb, 0x04cb, 0x04cb, 0x04cb, 0x04d7, 0x04d7, 0x04e2, - 0x04f0, 0x04fc, 0x0507, 0x0507, 0x0514, 0x0514, 0x0514, 0x0529, - 0x0537, 0x0545, 0x0554, 0x0561, 0x0572, 0x0587, 0x0595, 0x05a1, - // Entry 80 - BF - 0x05b1, 0x05bd, 0x05cf, 0x05db, 0x05db, 0x05eb, 0x05f9, 0x0606, - 0x0606, 0x0606, 0x0606, 0x0613, 0x0613, 0x0613, 0x0613, 0x0625, - 0x0633, 0x064c, 0x0661, 0x0676, 0x0684, 0x0684, 0x0690, 0x06a2, - 0x06b0, 0x06b0, 0x06be, 0x06ca, 0x06d7, 0x06e4, 0x06eb, 0x06f5, - 0x0705, 0x0715, 0x0715, 0x0724, 0x072d, 0x073b, 0x073b, 0x073b, - 0x074f, 0x076f, 0x0777, 0x0777, 0x0785, 0x079a, 0x07a8, 0x07af, - 0x07bd, 0x07ce, 0x07dd, - }, - }, - { // bs-Cyrl - "арапско писмоимперијско арамејско писмојерменско писмоавестанско писмоба" + - "лијско писмобатак писмобенгалско писмоблисимболично писмобопомофо п" + - "исмобраманско писмоБрајево писмобугинско писмобухидско писмочакманс" + - "ко писмоуједињени канадски абориџински силабицикаријско писмочамско" + - " писмоЧерокицирт писмокоптичко писмокипарско писмоћирилицаСтарослове" + - "нска црквена ћирилицаДеванагариДезеретегипатско народно писмоегипат" + - "ско хијератско писмоегипатски хијероглифиетиопско писмогрузијско кх" + - "утсури писмогрузијско писмоглагољицаГотикагрчко писмогујарати писмо" + - "гурмуки писмохангулханханунопоједностављени хантрадиционални ханхеб" + - "рејско писмоХираганапахав хмонг писмоКатакана или Хираганастаромађа" + - "рско писмоиндушко писмостари италикЏамојаванско писмојапанско писмо" + - "кајах-ли писмоКатаканакарошти писмокмерско писмоканнада писмокорејс" + - "ко писмокаитиланна писмолаошко писмолатиница (фрактур варијанта)гал" + - "ска латиницалатиницалепча писмолимбу писмолинеарно А писмолинеарно " + - "Б писмолисијско писмолидијско писмомандеанско писмоманихејско писмо" + - "мајански хијероглифимероитик писмомалајалам писмомонголско писмомес" + - "ечево писмомеитеи мајек писмомијанмарско писмон’ко писмоогамско пис" + - "моол чики писмоорконско писмооријанско писмоосмањанско писмостаро п" + - "ермикско писмопагс-па писмописани пахлавипсалтер пахлавипахлави пис" + - "моФеничанско писмопоралд фонетско писмописани партианрејанг писморо" + - "нгоронго писморунско писмосамаританско писмосарати писмосаураштра п" + - "исмознаковно писмошавијанско писмосинхала писмосилоти нагри писмоси" + - "ријско писмосиријско естрангело писмозападносиријско писмописмо ист" + - "очне Сиријетагбанва писмотаи ле писмонови таи луетамилско писмотаи " + - "виет писмотелугу писмотенгвар писмотифинаг писмоТагалогтхана писмот" + - "ајландско писмотибетанско писмоугаритско писмоваи писмовидљиви гово" + - "рстароперсијско писмосумерско-акадско кунеиформ писмоји писмонаслед" + - "но писмоматематичка нотацијасимболинеписани језикзаједничко писмоне" + - "познато писмо", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, - 0x0087, 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00d4, 0x00f9, - 0x0114, 0x0131, 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, - 0x021a, 0x0226, 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, - 0x02dd, 0x02dd, 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, - 0x03ca, 0x03dc, 0x03dc, 0x03e8, 0x03e8, 0x03fd, 0x0418, 0x0431, - 0x0431, 0x043d, 0x0443, 0x044f, 0x0474, 0x0495, 0x0495, 0x04b2, - 0x04c2, 0x04c2, 0x04e2, 0x050a, 0x052f, 0x0548, 0x055f, 0x0567, - // Entry 40 - 7F - 0x0582, 0x059d, 0x059d, 0x05b7, 0x05c7, 0x05e0, 0x05f9, 0x05f9, - 0x0612, 0x062d, 0x062d, 0x0637, 0x064c, 0x0663, 0x0697, 0x06b4, - 0x06c4, 0x06d9, 0x06ee, 0x070c, 0x072a, 0x072a, 0x072a, 0x0745, - 0x0760, 0x0760, 0x077f, 0x079e, 0x079e, 0x07c5, 0x07c5, 0x07c5, - 0x07e0, 0x07fd, 0x07fd, 0x081a, 0x0835, 0x0835, 0x0857, 0x0857, - 0x0878, 0x0878, 0x0878, 0x0878, 0x0878, 0x088c, 0x088c, 0x08a5, - 0x08bd, 0x08d8, 0x08f5, 0x08f5, 0x0914, 0x0914, 0x0914, 0x093c, - 0x0954, 0x096f, 0x098c, 0x09a5, 0x09c4, 0x09ec, 0x0a07, 0x0a1e, - // Entry 80 - BF - 0x0a3d, 0x0a54, 0x0a77, 0x0a8e, 0x0a8e, 0x0aab, 0x0ac6, 0x0ae5, - 0x0ae5, 0x0ae5, 0x0ae5, 0x0afe, 0x0afe, 0x0afe, 0x0afe, 0x0b20, - 0x0b3b, 0x0b6b, 0x0b94, 0x0bba, 0x0bd5, 0x0bd5, 0x0beb, 0x0c01, - 0x0c1c, 0x0c1c, 0x0c36, 0x0c4d, 0x0c66, 0x0c7f, 0x0c8d, 0x0ca2, - 0x0cc1, 0x0ce0, 0x0ce0, 0x0cfd, 0x0d0e, 0x0d27, 0x0d27, 0x0d27, - 0x0d4e, 0x0d8b, 0x0d9a, 0x0d9a, 0x0db5, 0x0ddc, 0x0ddc, 0x0dea, - 0x0e05, 0x0e24, 0x0e41, - }, - }, - { // ca - caScriptStr, - caScriptIdx, - }, - { // ccp - "𑄃𑄢𑄧𑄝𑄨𑄃𑄢𑄧𑄟𑄨𑄃𑄢𑄴𑄟𑄬𑄚𑄩𑄠𑄧𑄃𑄞𑄬𑄥𑄧𑄖𑄚𑄴𑄝𑄣𑄩𑄠𑄧𑄖𑄑𑄇𑄴𑄝𑄁𑄣𑄝𑄳𑄣𑄨𑄌𑄴𑄛𑄳𑄢𑄧𑄖𑄩𑄇𑄴𑄝𑄮𑄛𑄮𑄟𑄮𑄜𑄮𑄝𑄳𑄢𑄟𑄴𑄦𑄴𑄟𑄩𑄝𑄳" + - "𑄢𑄳𑄆𑄬𑄣𑄴𑄝𑄪𑄉𑄨𑄝𑄪𑄦𑄨𑄓𑄴𑄌𑄋𑄴𑄟𑄳𑄦𑄎𑄧𑄙 𑄇𑄚𑄓𑄨𑄠𑄚𑄴 𑄃𑄳𑄠𑄝𑄳𑄢𑄮𑄎𑄨𑄚𑄨𑄠𑄚𑄴 𑄥𑄨𑄣𑄬𑄝𑄨𑄇𑄴𑄥𑄧𑄇𑄳𑄠𑄢𑄨𑄠" + - "𑄚𑄴𑄌𑄳𑄠𑄟𑄴𑄌𑄬𑄇𑄮𑄇𑄨𑄇𑄨𑄢𑄴𑄑𑄧𑄇𑄮𑄛𑄴𑄑𑄨𑄇𑄴𑄥𑄭𑄛𑄳𑄢𑄮𑄠𑄬𑄖𑄴𑄥𑄨𑄢𑄨𑄣𑄨𑄇𑄴𑄛𑄪𑄢𑄮𑄚𑄨 𑄌𑄢𑄴𑄌𑄧 𑄥𑄳𑄣𑄞𑄮𑄚𑄨" + - "𑄇𑄴 𑄥𑄨𑄢𑄨𑄣𑄨𑄇𑄴𑄘𑄬𑄛𑄴𑄚𑄉𑄧𑄢𑄨𑄘𑄬𑄥𑄬𑄢𑄖𑄴𑄟𑄨𑄥𑄧𑄢𑄩𑄠𑄧 𑄓𑄬𑄟𑄮𑄑𑄨𑄇𑄴𑄟𑄨𑄥𑄧𑄢𑄩𑄠𑄧 𑄦𑄠𑄴𑄢𑄬𑄑𑄨𑄇𑄴𑄟𑄨𑄥" + - "𑄧𑄢𑄩𑄠𑄧 𑄦𑄠𑄢𑄮𑄉𑄳𑄣𑄨𑄛𑄴𑄃𑄨𑄗𑄨𑄃𑄮𑄛𑄨𑄠𑄧𑄎𑄧𑄢𑄴𑄎𑄨𑄠𑄧 𑄈𑄪𑄖𑄴𑄥𑄪𑄢𑄨𑄎𑄧𑄢𑄴𑄎𑄨𑄠𑄚𑄴𑄉𑄳𑄣𑄉𑄮𑄣𑄨𑄑𑄨𑄇𑄴𑄉𑄮" + - "𑄗𑄨𑄇𑄴𑄉𑄳𑄢𑄨𑄇𑄴𑄉𑄪𑄎𑄴𑄢𑄑𑄨𑄉𑄪𑄢𑄪𑄟𑄪𑄈𑄨𑄦𑄳𑄠𑄚𑄴𑄝𑄨𑄦𑄋𑄴𑄉𑄪𑄣𑄴𑄦𑄳𑄠𑄚𑄴𑄦𑄳𑄠𑄚𑄪𑄚𑄪𑄅𑄪𑄎𑄪𑄅𑄪𑄏𑄪 𑄦𑄳𑄠𑄚𑄴" + - "𑄢𑄨𑄘𑄨𑄥𑄪𑄘𑄮𑄟𑄴 𑄦𑄳𑄠𑄚𑄴𑄦𑄨𑄛𑄴𑄝𑄳𑄢𑄪𑄦𑄨𑄢𑄉𑄚𑄜𑄦𑄃𑄮𑄟𑄧𑄋𑄴𑄎𑄛𑄚𑄨 𑄦𑄧𑄢𑄧𑄇𑄴𑄛𑄪𑄢𑄮𑄚𑄴 𑄦𑄋𑄴𑄉𑄬𑄢𑄨𑄠𑄧𑄥" + - "𑄨𑄚𑄴𑄙𑄪𑄛𑄪𑄢𑄮𑄚𑄩 𑄃𑄨𑄖𑄣𑄨𑄎𑄳𑄠𑄟𑄮𑄎𑄞𑄚𑄨𑄎𑄴𑄎𑄛𑄚𑄩𑄇𑄠𑄦𑄧𑄣𑄨𑄇𑄑𑄇𑄚𑄈𑄢𑄮𑄌𑄴𑄒𑄩𑄈𑄬𑄟𑄬𑄢𑄴𑄇𑄚𑄢𑄇𑄮𑄢𑄨𑄠𑄚𑄴" + - "𑄇𑄭𑄗𑄨𑄣𑄚𑄳𑄦𑄣𑄃𑄮𑄜𑄳𑄢𑄇𑄴𑄑𑄪𑄢𑄴 𑄣𑄳𑄠𑄑𑄨𑄚𑄴𑄉𑄳𑄠𑄣𑄨𑄇𑄴 𑄣𑄳𑄠𑄑𑄨𑄚𑄴𑄣𑄳𑄠𑄑𑄨𑄚𑄴𑄣𑄬𑄛𑄴𑄌𑄣𑄨𑄟𑄴𑄝𑄪𑄣𑄨𑄚𑄨" + - "𑄠𑄢𑄴 𑄆𑄣𑄨𑄚𑄨𑄠𑄢𑄴 𑄝𑄨𑄣𑄭𑄥𑄨𑄠𑄚𑄴𑄣𑄭𑄓𑄨𑄠𑄚𑄴𑄟𑄳𑄠𑄚𑄴𑄓𑄠𑄩𑄚𑄴𑄟𑄳𑄠𑄚𑄨𑄌𑄭𑄚𑄴𑄟𑄠𑄚𑄴 𑄦𑄠𑄢𑄮𑄉𑄳𑄣𑄨𑄛𑄴𑄟𑄬" + - "𑄢𑄮𑄃𑄨𑄑𑄨𑄇𑄴𑄟𑄣𑄠𑄣𑄟𑄴𑄟𑄮𑄋𑄴𑄉𑄮𑄣𑄩𑄠𑄧𑄟𑄪𑄚𑄴𑄟𑄳𑄆𑄬𑄑𑄳𑄆𑄬 𑄟𑄠𑄬𑄇𑄴𑄟𑄠𑄚𑄴𑄟𑄢𑄴𑄃𑄬𑄚𑄴𑄇𑄮𑄃𑄮𑄊𑄟𑄴𑄃𑄮𑄣𑄴𑄌" + - "𑄨𑄇𑄨𑄃𑄧𑄢𑄴𑄈𑄮𑄚𑄴𑄃𑄮𑄢𑄨𑄠𑄃𑄮𑄥𑄟𑄚𑄨𑄠𑄧𑄛𑄪𑄢𑄮𑄚𑄴 𑄛𑄢𑄴𑄟𑄨𑄇𑄴𑄜𑄧𑄉𑄴𑄥𑄧-𑄛𑄈𑄧𑄘𑄨𑄖𑄧 𑄛𑄳𑄦𑄣𑄧𑄞𑄩𑄥𑄧𑄣𑄴𑄑" + - "𑄢𑄴 𑄛𑄳𑄦𑄣𑄧𑄞𑄩𑄛𑄪𑄌𑄴𑄖𑄧𑄇𑄴 𑄛𑄳𑄦𑄣𑄧𑄞𑄩𑄜𑄨𑄚𑄨𑄥𑄩𑄠𑄧𑄛𑄮𑄣𑄢𑄴𑄓𑄧 𑄙𑄧𑄚𑄨𑄇𑄴𑄛𑄢𑄴𑄗𑄨𑄠𑄧𑄚𑄴𑄢𑄬𑄎𑄳𑄠𑄋𑄴𑄉" + - "𑄧𑄢𑄮𑄋𑄴𑄉𑄮𑄢𑄮𑄋𑄴𑄉𑄮𑄢𑄪𑄚𑄨𑄇𑄴𑄥𑄧𑄟𑄬𑄢𑄨𑄑𑄧𑄚𑄴𑄥𑄢𑄖𑄨𑄥𑄯𑄢𑄌𑄴𑄑𑄳𑄢𑄧𑄌𑄨𑄚𑄴𑄦𑄧 𑄣𑄨𑄈𑄧𑄚𑄴𑄥𑄞𑄨𑄠𑄚𑄴𑄥𑄨𑄁𑄦" + - "𑄧𑄣𑄨𑄥𑄚𑄴𑄘𑄚𑄨𑄎𑄴𑄥𑄨𑄣𑄬𑄑𑄨 𑄚𑄉𑄧𑄢𑄨𑄥𑄨𑄢𑄨𑄠𑄇𑄴𑄃𑄬𑄌𑄴𑄑𑄳𑄢𑄬𑄋𑄴𑄉𑄬𑄣𑄮 𑄥𑄨𑄢𑄨𑄠𑄇𑄴𑄛𑄧𑄏𑄨𑄟𑄴𑄎𑄉𑄢𑄴 𑄥𑄨" + - "𑄢𑄨𑄠𑄇𑄴𑄛𑄪𑄇𑄴𑄎𑄉𑄧𑄢𑄴 𑄥𑄨𑄢𑄨𑄠𑄇𑄴𑄑𑄉𑄮𑄤𑄚𑄖𑄭𑄣𑄬𑄚𑄱 𑄖𑄭 𑄣𑄪𑄖𑄟𑄨𑄣𑄴𑄖𑄭 𑄞𑄨𑄠𑄬𑄖𑄴𑄖𑄬𑄣𑄬𑄉𑄪𑄖𑄬𑄋𑄴𑄉𑄮" + - "𑄠𑄢𑄴𑄖𑄨𑄜𑄨𑄚𑄉𑄴𑄑𑄉𑄣𑄧𑄉𑄴𑄗𑄚𑄗𑄭𑄖𑄨𑄛𑄴𑄝𑄧𑄖𑄨𑄅𑄪𑄉𑄢𑄨𑄑𑄨𑄇𑄴𑄞𑄭𑄘𑄬𑄉𑄧𑄎𑄭𑄘𑄳𑄠𑄬 𑄞𑄌𑄴𑄛𑄪𑄢𑄮𑄚𑄴 𑄜𑄢𑄴𑄥𑄨" + - "𑄥𑄪𑄟𑄬𑄢𑄧-𑄃𑄇𑄳𑄇𑄘𑄩𑄠𑄧 𑄇𑄩𑄣𑄧𑄇𑄴𑄢𑄪𑄛𑄴𑄅𑄪𑄃𑄨𑄇𑄭𑄚𑄘𑄞𑄬𑄖𑄴 𑄌𑄨𑄚𑄴𑄦𑄧𑄃𑄨𑄟𑄮𑄎𑄨𑄍𑄪𑄝𑄨𑄉𑄪𑄚𑄴𑄚𑄧𑄣𑄬𑄇𑄴" + - "𑄈𑄳𑄠𑄬𑄃𑄧𑄎𑄬𑄃𑄧𑄌𑄴𑄦𑄧𑄝𑄧𑄢𑄴𑄚𑄧𑄛𑄨𑄠𑄬 𑄦𑄧𑄢𑄧𑄇𑄴", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0028, 0x004c, - 0x006c, 0x0080, 0x0080, 0x0080, 0x0090, 0x009c, 0x009c, 0x00d4, - 0x00f4, 0x0118, 0x0138, 0x0148, 0x0160, 0x0178, 0x0203, 0x0223, - 0x0237, 0x024f, 0x0267, 0x0287, 0x02af, 0x02cf, 0x0342, 0x0366, - 0x0382, 0x0382, 0x03c3, 0x0408, 0x0451, 0x0451, 0x0479, 0x04ba, - 0x04de, 0x050a, 0x050a, 0x0522, 0x0522, 0x053a, 0x0556, 0x0576, - 0x0592, 0x05ae, 0x05c2, 0x05de, 0x0613, 0x0650, 0x0650, 0x0670, - 0x0684, 0x0684, 0x06a4, 0x06cd, 0x070a, 0x0722, 0x074f, 0x0763, - // Entry 40 - 7F - 0x077b, 0x078b, 0x078b, 0x07a3, 0x07b3, 0x07cf, 0x07e7, 0x07e7, - 0x07f3, 0x080f, 0x080f, 0x081f, 0x082f, 0x083b, 0x087c, 0x08b5, - 0x08d1, 0x08e5, 0x08fd, 0x091e, 0x0943, 0x0943, 0x0943, 0x095f, - 0x097b, 0x097b, 0x09a3, 0x09c7, 0x09c7, 0x0a00, 0x0a00, 0x0a00, - 0x0a28, 0x0a40, 0x0a40, 0x0a68, 0x0a78, 0x0a78, 0x0aad, 0x0aad, - 0x0ac9, 0x0ac9, 0x0ac9, 0x0ac9, 0x0ac9, 0x0ae1, 0x0ae1, 0x0af5, - 0x0b15, 0x0b35, 0x0b49, 0x0b49, 0x0b69, 0x0b69, 0x0b69, 0x0b9e, - 0x0bbb, 0x0bf0, 0x0c29, 0x0c66, 0x0c86, 0x0cbb, 0x0cdf, 0x0d03, - // Entry 80 - BF - 0x0d33, 0x0d4b, 0x0d73, 0x0d83, 0x0d83, 0x0da7, 0x0dd8, 0x0df0, - 0x0df0, 0x0df0, 0x0df0, 0x0e0c, 0x0e0c, 0x0e0c, 0x0e2c, 0x0e59, - 0x0e75, 0x0eca, 0x0f0f, 0x0f50, 0x0f64, 0x0f64, 0x0f74, 0x0f8e, - 0x0fa2, 0x0fa2, 0x0fc3, 0x0fdb, 0x0fff, 0x101b, 0x1033, 0x103b, - 0x1043, 0x1063, 0x1063, 0x1087, 0x108f, 0x10c4, 0x10c4, 0x10c4, - 0x10f1, 0x1153, 0x1163, 0x1163, 0x116b, 0x119c, 0x11b4, 0x11d4, - 0x11fc, 0x121c, 0x1265, - }, - }, - { // ce - "Ӏаьрбийнэрмалойнбенгалхойнбопомофобрайлякириллицадеванагариэфиопингуьржи" + - "йнгрекийнгуджаратигурмукхиханьбхангылькитайнатта китайнламастан кит" + - "айнжугтийнхираганакатакана я хираганаджамояпонийнкатаканакхмерийнка" + - "ннадакорейнлаоссийнлатинанмалаялийнмонголийнмьянманийнорисингалхойн" + - "тамилхойнтелугутаанатайнтибетхойнматематикан маьӀнаэмодзисимволашйо" + - "за доцумассара а тӀеэцнадоьвзуш доцу йоза", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0034, - 0x0044, 0x0044, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, 0x0076, - 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076, 0x0084, 0x0084, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x00a2, 0x00b4, 0x00c4, - 0x00ce, 0x00dc, 0x00e8, 0x00e8, 0x00fd, 0x011a, 0x011a, 0x0128, - 0x0138, 0x0138, 0x0138, 0x015c, 0x015c, 0x015c, 0x015c, 0x0166, - // Entry 40 - 7F - 0x0166, 0x0174, 0x0174, 0x0174, 0x0184, 0x0184, 0x0194, 0x0194, - 0x01a2, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01be, 0x01be, 0x01be, - 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01de, 0x01de, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, - 0x0204, 0x0204, 0x0204, 0x0204, 0x0204, 0x0204, 0x0204, 0x0204, - 0x0204, 0x0204, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - // Entry 80 - BF - 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x020a, 0x020a, 0x020a, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, - 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, - 0x0230, 0x0230, 0x0230, 0x023c, 0x023c, 0x023c, 0x023c, 0x0246, - 0x024e, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0283, 0x028f, 0x029f, - 0x02b0, 0x02d0, 0x02f0, - }, - }, - {}, // cgg - { // chr - "ᎡᎳᏈᎩᎠᎳᎻᎠᏂᏇᏂᎦᎠᏆᏉᎼᏬᏗᏂᎨᏫ ᎤᏃᏪᎶᏙᏗᏣᎳᎩᏲᏂᎢ ᏗᎪᏪᎵᏕᏫᎾᎦᎵᎢᏗᏯᏈᎩᏦᏥᎠᏂᎪᎢᎫᏣᎳᏘᎬᎹᎩᎭᏂ-ᏆᏉᎼᏬᎭᏂᎫ" + - "ᎵᎭᏂᎠᎯᏗᎨ ᎭᏂᎤᏦᏍᏗ ᎭᏂᎠᏂᏈᎵᎯᎳᎦᎾᏣᏩᏂᏏ ᏧᏃᏴᎩᏣᎼᏣᏆᏂᏏᎧᏔᎧᎾᎩᎻᎷᎧᎾᏓᎪᎵᎠᏂᎳᎣᎳᏘᏂᎹᎳᏯᎳᎻᎹᏂ" + - "ᎪᎵᎠᏂᎹᎡᏂᎹᎳᎣᏗᎠᏏᏅᎭᎳᏔᎻᎵᏖᎷᎦᏔᎠᎾᏔᏱ ᏔᏯᎴᏂᏘᏇᏔᏂᎠᏰᎦᎴᏴᏫᏍᎩ ᎠᎤᏓᏗᏍᏙᏗᎡᎼᏥᏗᎬᏟᎶᏍᏙᏗᎪᏪᎳᏅ" + - " ᏂᎨᏒᎾᏯᏃᏉ ᏱᎬᏍᏛᏭᏄᏬᎵᏍᏛᎾ ᎠᏍᏓᏩᏛᏍᏙᏗ", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0027, 0x0027, 0x0027, - 0x0033, 0x0033, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x005b, 0x005b, 0x005b, 0x005b, 0x0071, 0x0071, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x008f, 0x008f, - 0x009b, 0x009b, 0x009b, 0x009b, 0x009b, 0x00a1, 0x00ad, 0x00b6, - 0x00c9, 0x00d5, 0x00db, 0x00db, 0x00ee, 0x0101, 0x0101, 0x010d, - 0x0119, 0x0119, 0x0119, 0x0132, 0x0132, 0x0132, 0x0132, 0x0138, - // Entry 40 - 7F - 0x0138, 0x0144, 0x0144, 0x0144, 0x0150, 0x0150, 0x0159, 0x0159, - 0x0162, 0x016e, 0x016e, 0x016e, 0x016e, 0x0174, 0x0174, 0x0174, - 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, - 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, - 0x017d, 0x018c, 0x018c, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, - 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, - 0x01ad, 0x01ad, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - // Entry 80 - BF - 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01b6, 0x01b6, 0x01b6, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, - 0x01cb, 0x01cb, 0x01cb, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01dd, - 0x01f0, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x022a, 0x0233, 0x0248, - 0x0261, 0x027a, 0x02a5, - }, - }, - { // ckb - "عەرەبیئەرمەنیبەنگالیبۆپۆمۆفۆبرەیلسریلیکدەڤەناگەریئەتیۆپیکگورجییۆنانیگوجە" + - "راتیگورموکھیھانگولهیبرێھیراگاناژاپۆنیکاتاکاناخمێریکەنەداکۆریاییلاول" + - "اتینیمالایالاممەنگۆلیمیانمارئۆریاسینھالاتامیلیتیلوگوتانەتایلەندی", - []uint16{ // 161 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0028, 0x0028, 0x0028, - 0x0038, 0x0038, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x004e, 0x004e, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0072, 0x0072, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x0088, 0x0098, 0x00a8, - 0x00a8, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00be, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - // Entry 40 - 7F - 0x00ce, 0x00da, 0x00da, 0x00da, 0x00ea, 0x00ea, 0x00f4, 0x00f4, - 0x0100, 0x010e, 0x010e, 0x010e, 0x010e, 0x0114, 0x0114, 0x0114, - 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0132, 0x0132, 0x0140, 0x0140, 0x0140, 0x0140, 0x0140, - 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, 0x014e, - 0x014e, 0x014e, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - // Entry 80 - BF - 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0158, 0x0158, 0x0158, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, - 0x0172, 0x0172, 0x0172, 0x017e, 0x017e, 0x017e, 0x017e, 0x0186, - 0x0196, - }, - }, - { // cs - csScriptStr, - csScriptIdx, - }, - { // cy - "ArabaiddArmenaiddBanglaBopomofoBrailleCyriligDevanagariEthiopigGeorgaidd" + - "GroegaiddGwjarataiddGwrmwciHan gyda BopomofoHangulHanHan symledigHan" + - " traddodiadolHebreigHiraganaSyllwyddor JapaneaiddJamoJapaneaiddCatac" + - "anaChmeraiddCanaraiddCoreaiddLaoaiddLladinMalayalamaiddMongolaiddMya" + - "nmaraiddOgamOrïaiddSinhanaiddTamilaiddTeluguThaanaTaiTibetaiddNodian" + - "t MathemategolEmojiSymbolauAnysgrifenedigCyffredinSgript anhysbys", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0017, 0x0017, 0x0017, - 0x001f, 0x001f, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x002d, 0x002d, 0x0037, - 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x003f, 0x003f, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0051, 0x005c, 0x0063, - 0x0074, 0x007a, 0x007d, 0x007d, 0x0089, 0x0099, 0x0099, 0x00a0, - 0x00a8, 0x00a8, 0x00a8, 0x00bd, 0x00bd, 0x00bd, 0x00bd, 0x00c1, - // Entry 40 - 7F - 0x00c1, 0x00cb, 0x00cb, 0x00cb, 0x00d3, 0x00d3, 0x00dc, 0x00dc, - 0x00e5, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00f4, 0x00f4, 0x00f4, - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - 0x00fa, 0x0107, 0x0107, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, - 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x011c, 0x0120, - 0x0120, 0x0120, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, - 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, - // Entry 80 - BF - 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, 0x0128, - 0x0128, 0x0128, 0x0128, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, 0x0132, - 0x013b, 0x013b, 0x013b, 0x0141, 0x0141, 0x0141, 0x0141, 0x0147, - 0x014a, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, - 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0167, 0x016c, 0x0174, - 0x0182, 0x018b, 0x019a, - }, - }, - { // da - daScriptStr, - daScriptIdx, - }, - {}, // dav - { // de - deScriptStr, - deScriptIdx, - }, - {}, // de-AT - {}, // de-CH - {}, // de-LU - {}, // dje - { // dsb - "arabskiarmeńskibengalskibopomofobraillowe pismokyriliskidevanagarietiopi" + - "skigeorgiskigrichiskigujaratigurmukhihangulhanzjadnorjone hantradici" + - "onalne hanhebrejskihiraganajapańskikatakanakhmerkannadakorejskilaosk" + - "iłatyńskimalayalamskimongolskiburmaskioriyasinghaleskitamilskitelugu" + - "thaanathaiskitibetskisymbolebźez pismapowšyknenjeznate pismo", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0019, - 0x0021, 0x0021, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0039, 0x0039, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x004c, 0x004c, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x005e, 0x0066, 0x006e, - 0x006e, 0x0074, 0x0077, 0x0077, 0x0086, 0x0097, 0x0097, 0x00a0, - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - // Entry 40 - 7F - 0x00a8, 0x00b1, 0x00b1, 0x00b1, 0x00b9, 0x00b9, 0x00be, 0x00be, - 0x00c5, 0x00cd, 0x00cd, 0x00cd, 0x00cd, 0x00d3, 0x00d3, 0x00d3, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, 0x00dd, - 0x00dd, 0x00e9, 0x00e9, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - 0x00fa, 0x00fa, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, - // Entry 80 - BF - 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, - 0x00ff, 0x00ff, 0x00ff, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, - 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, 0x010a, - 0x0112, 0x0112, 0x0112, 0x0118, 0x0118, 0x0118, 0x0118, 0x011e, - 0x0125, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, - 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x012d, 0x0134, - 0x013f, 0x0148, 0x0156, - }, - }, - {}, // dua - {}, // dyo - { // dz - "ཨེ་ར་བིཀ་ཡིག་གུཨར་མི་ནི་ཡཱན་ཡིག་གུབངྒ་ལ་ཡིག་གུབོ་པོ་མོ་ཕཱོ་ཡིག་གུའབུར་ཡི" + - "གསིརིལ་ལིཀ་ཡིག་གུདེ་ཝ་ན་ག་རི་ཡིག་གུཨི་ཐི་ཡོ་པིཀ྄་ཡིག་གུཇཽ་ཇི་ཡཱན་ཡ" + - "ིག་གུགྲིཀ་ཡིག་གུགུ་ཇ་ར་ཏི་ཡིག་གུགུ་རུ་མུ་ཁ་ཡིག་གུཧཱན་གུལ་ཡིག་གུརྒྱ" + - "་ནག་ཡིག་གུརྒྱ་ཡིག་ ལུགས་གསར་ལུགས་རྙིང་ རྒྱ་ཡིགཧེ་བྲུ་ཡིག་གུཇ་པཱན་ག" + - "ྱི་ཧི་ར་ག་ན་ཡིག་གུཇ་པཱན་ཡིག་གུཇ་པཱན་གྱི་ཀ་ཏ་ཀ་ན་ཡིག་གུཁེ་མེར་ཡིག་ག" + - "ུཀ་ན་ཌ་ཡིག་གུཀོ་རི་ཡཱན་ཡིག་གུལའོ་ཡིག་གུལེ་ཊིན་ཡིག་གུམ་ལ་ཡ་ལམ་ཡིག་ག" + - "ུསོག་པོའི་ཡིག་གུབར་མིས་ཡིག་གུཨོ་རི་ཡ་ཡིག་གུསིན་ཧ་ལ་རིག་གུཏ་མིལ་ཡིག" + - "་གུཏེ་ལུ་གུ་ཡིག་གུཐཱ་ན་ཡིག་གུཐཱའི་ཡིག་གུང་བཅས་ཀྱི་ཡིག་གུམཚན་རྟགསཡི" + - "ག་ཐོག་མ་བཀོདཔསྤྱིཡིགངོ་མ་ཤེས་པའི་ཡི་གུ", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002d, 0x002d, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x008a, 0x008a, 0x008a, - 0x00c3, 0x00c3, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, 0x010b, 0x010b, 0x0141, - 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x0141, 0x017d, 0x017d, - 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ad, 0x01ce, 0x01fe, 0x0231, - 0x0231, 0x025b, 0x0282, 0x0282, 0x02b6, 0x02ea, 0x02ea, 0x0311, - 0x035c, 0x035c, 0x035c, 0x035c, 0x035c, 0x035c, 0x035c, 0x035c, - // Entry 40 - 7F - 0x035c, 0x0380, 0x0380, 0x0380, 0x03c8, 0x03c8, 0x03ef, 0x03ef, - 0x0413, 0x0443, 0x0443, 0x0443, 0x0443, 0x0461, 0x0461, 0x0461, - 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, - 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, 0x0488, - 0x0488, 0x04b5, 0x04b5, 0x04e2, 0x04e2, 0x04e2, 0x04e2, 0x04e2, - 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, 0x0509, - 0x0509, 0x0509, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, - 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, - // Entry 80 - BF - 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, - 0x0533, 0x0533, 0x0533, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, 0x055d, - 0x0581, 0x0581, 0x0581, 0x05ae, 0x05ae, 0x05ae, 0x05ae, 0x05cf, - 0x05f0, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, - 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0620, 0x0638, - 0x0665, 0x067a, 0x06b0, - }, - }, - {}, // ebu - { // ee - "Arabiagbeŋɔŋlɔarmeniagbeŋɔŋlɔbengaligbeŋɔŋlɔbopomfogbeŋɔŋlɔbraillegbeŋɔŋ" + - "lɔCyrillicgbeŋɔŋlɔdevanagarigbeŋɔŋlɔethiopiagbeŋɔŋlɔgɔgiagbeŋɔŋlɔgri" + - "sigbeŋɔŋlɔgudzaratigbeŋɔŋlɔgurmukhigbeŋɔŋlɔhangulgbeŋɔŋlɔhangbeŋɔŋlɔ" + - "HansgbeŋɔŋlɔBlema HantgbeŋcŋlɔhebrigbeŋɔŋlɔhiraganagbeŋɔŋlɔJapaneseg" + - "beŋɔŋlɔkatakanagbeŋɔŋlɔkhmergbeŋɔŋlɔkannadagbeŋɔŋlɔKoreagbeŋɔŋlɔlaog" + - "beŋɔŋlɔLatingbeŋɔŋlɔmalayagbeŋɔŋlɔmongoliagbeŋɔŋlɔmyanmargbeŋɔŋlɔori" + - "yagbeŋɔŋlɔsinhalagbeŋɔŋlɔtamilgbeŋɔŋlɔtelegugbeŋɔŋlɔthaanagbeŋɔŋlɔta" + - "igbeŋɔŋlɔtibetgbeŋɔŋlɔŋɔŋlɔdzesiwogbemaŋlɔgbeŋɔŋlɔ bɔbɔgbeŋɔŋlɔ many" + - "a", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0038, 0x0038, 0x0038, - 0x004b, 0x004b, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0072, 0x0072, 0x0088, - 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x009c, 0x009c, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00bf, 0x00d4, 0x00e8, - 0x00e8, 0x00fa, 0x0109, 0x0109, 0x0119, 0x012e, 0x012e, 0x013f, - 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, - // Entry 40 - 7F - 0x0153, 0x0167, 0x0167, 0x0167, 0x017b, 0x017b, 0x018c, 0x018c, - 0x019f, 0x01b0, 0x01b0, 0x01b0, 0x01b0, 0x01bf, 0x01bf, 0x01bf, - 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d0, - 0x01d0, 0x01e2, 0x01e2, 0x01f6, 0x01f6, 0x01f6, 0x01f6, 0x01f6, - 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, - 0x0209, 0x0209, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, - 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, - // Entry 80 - BF - 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, 0x021a, - 0x021a, 0x021a, 0x021a, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, - 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, - 0x023e, 0x023e, 0x023e, 0x0250, 0x0250, 0x0250, 0x0250, 0x0262, - 0x0271, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, - 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0282, 0x0292, - 0x029c, 0x02af, 0x02c1, - }, - }, - { // el - elScriptStr, - elScriptIdx, - }, - { // en - enScriptStr, - enScriptIdx, - }, - { // en-AU - "Bengali", - []uint16{ // 14 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, - }, - }, - {}, // en-CA - { // en-GB - enGBScriptStr, - enGBScriptIdx, - }, - { // en-IN - "BengaliOriya", - []uint16{ // 115 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x000c, - }, - }, - {}, // en-NZ - {}, // eo - { // es - esScriptStr, - esScriptIdx, - }, - { // es-419 - es419ScriptStr, - es419ScriptIdx, - }, - {}, // es-AR - {}, // es-BO - {}, // es-CL - {}, // es-CO - {}, // es-CR - {}, // es-DO - {}, // es-EC - {}, // es-GT - {}, // es-HN - { // es-MX - "hanbmalayálamtelugú", - []uint16{ // 156 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - // Entry 40 - 7F - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - // Entry 80 - BF - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x0015, - }, - }, - {}, // es-NI - {}, // es-PA - {}, // es-PE - {}, // es-PR - {}, // es-PY - {}, // es-SV - { // es-US - "hanbmalayálam", - []uint16{ // 98 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - // Entry 40 - 7F - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x000e, - }, - }, - {}, // es-VE - { // et - etScriptStr, - etScriptIdx, - }, - { // eu - "arabiarraarmeniarrabengaliarrabopomofoabrailleazirilikoadevanagariaetiop" + - "iarrageorgiarragreziarragujarateragurmukhiahänerahangulaidazkera txi" + - "natarraidazkera txinatar sinplifikatuaidazkera txinatar tradizionala" + - "hebreerahiraganasilaba japoniarrakjamo-bihurketajaponiarrakatakanakh" + - "emerarrakanadarrakorearralaosarralatinamalayalameramongoliarrabirman" + - "iarraoriyarrasinhalatamilarrateluguarrathaanathailandiarratibetarram" + - "atematikako notazioaemotikonoaikurrakidatzi gabeaohikoaidazkera ezez" + - "aguna", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0013, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x001e, 0x001e, 0x001e, - 0x0027, 0x0027, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x004d, 0x004d, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0060, 0x006a, 0x0073, - 0x007a, 0x0081, 0x0094, 0x0094, 0x00b3, 0x00d1, 0x00d1, 0x00d9, - 0x00e1, 0x00e1, 0x00e1, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x0101, - // Entry 40 - 7F - 0x0101, 0x010b, 0x010b, 0x010b, 0x0113, 0x0113, 0x011d, 0x011d, - 0x0126, 0x012e, 0x012e, 0x012e, 0x012e, 0x0136, 0x0136, 0x0136, - 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, 0x013c, - 0x013c, 0x0148, 0x0148, 0x0153, 0x0153, 0x0153, 0x0153, 0x0153, - 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - 0x015e, 0x015e, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, - // Entry 80 - BF - 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0166, 0x0166, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, - 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, 0x016d, - 0x0176, 0x0176, 0x0176, 0x0180, 0x0180, 0x0180, 0x0180, 0x0186, - 0x0193, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, - 0x019c, 0x019c, 0x019c, 0x019c, 0x019c, 0x01b1, 0x01bb, 0x01c2, - 0x01ce, 0x01d4, 0x01e6, - }, - }, - {}, // ewo - { // fa - faScriptStr, - faScriptIdx, - }, - { // fa-AF - "مغلی", - []uint16{ // 100 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0008, - }, - }, - {}, // ff - { // fi - fiScriptStr, - fiScriptIdx, - }, - { // fil - filScriptStr, - filScriptIdx, - }, - { // fo - "arabiskarmensktbengalibopomofoblindaskriftkyrillisktdevanagarietiopisktg" + - "eorgiansktgriksktgujaratigurmukhihanbhangulhaneinkult hanvanligt han" + - "hebraiskthiraganajapanskir stavirjamojapansktkatakanakhmerkannadakor" + - "eansktlaolatínsktmalayalammongolskmyanmarsktoriyasinhalatamilskttelu" + - "guthaanatailendskttibetsktstøddfrøðilig teknskipanemojitekinóskrivav" + - "anligókend skrift", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0016, 0x0016, 0x0016, - 0x001e, 0x001e, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x0047, 0x0047, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0059, 0x0061, 0x0069, - 0x006d, 0x0073, 0x0076, 0x0076, 0x0081, 0x008c, 0x008c, 0x0095, - 0x009d, 0x009d, 0x009d, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00b1, - // Entry 40 - 7F - 0x00b1, 0x00b9, 0x00b9, 0x00b9, 0x00c1, 0x00c1, 0x00c6, 0x00c6, - 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00d6, 0x00d9, 0x00d9, 0x00d9, - 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, - 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, 0x00e2, - 0x00e2, 0x00eb, 0x00eb, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - // Entry 80 - BF - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, - 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, 0x0109, - 0x0111, 0x0111, 0x0111, 0x0117, 0x0117, 0x0117, 0x0117, 0x011d, - 0x0127, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, - 0x012f, 0x012f, 0x012f, 0x012f, 0x012f, 0x014a, 0x014f, 0x0154, - 0x015c, 0x0162, 0x016f, - }, - }, - { // fr - frScriptStr, - frScriptIdx, - }, - {}, // fr-BE - { // fr-CA - frCAScriptStr, - frCAScriptIdx, - }, - {}, // fr-CH - { // fur - "araparmenbalinêsbengalêsBraillebuginêsSilabari unificât aborigjens canad" + - "êscoptcipriotciriliccirilic dal vieri slavonic de glesiedevanagarid" + - "emotic egjizianjeratic egjizianjeroglifics egjiziansetiopicgeorgjian" + - "glagoliticgoticgrêcgujaratihanHan semplificâtHan tradizionâlebreukat" + - "akana o hiraganavieri ongjarêsvieri italicgjavanêsgjaponêskhmerkanna" + - "dacoreanlaolatin Frakturlatin gaeliclatinlineâr Alineâr Bjeroglifics" + - " Mayamalayalammongulmyanmaroriyarunicsinhalasiriacsiriac Estrangelos" + - "iriac ocidentâlsiriac orientâltamiltelegutagalogthaanathaitibetanuga" + - "riticvieri persiancuneiform sumeric-acadiccodiç pes lenghis no scrit" + - "iscomuncodiç par scrituris no codificadis", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, - 0x0009, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x001a, - 0x001a, 0x001a, 0x0021, 0x0029, 0x0029, 0x0029, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x0053, 0x005a, 0x0061, 0x0085, 0x008f, - 0x008f, 0x008f, 0x009f, 0x00af, 0x00c4, 0x00c4, 0x00cb, 0x00cb, - 0x00d4, 0x00de, 0x00de, 0x00e3, 0x00e3, 0x00e8, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00f3, 0x00f3, 0x0103, 0x0113, 0x0113, 0x0118, - 0x0118, 0x0118, 0x0118, 0x012b, 0x013a, 0x013a, 0x0146, 0x0146, - // Entry 40 - 7F - 0x014f, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, 0x015d, 0x015d, - 0x0164, 0x016a, 0x016a, 0x016a, 0x016a, 0x016d, 0x017a, 0x0186, - 0x018b, 0x018b, 0x018b, 0x0194, 0x019d, 0x019d, 0x019d, 0x019d, - 0x019d, 0x019d, 0x019d, 0x019d, 0x019d, 0x01ad, 0x01ad, 0x01ad, - 0x01ad, 0x01b6, 0x01b6, 0x01bc, 0x01bc, 0x01bc, 0x01bc, 0x01bc, - 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, 0x01c3, - 0x01c3, 0x01c3, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, - 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, - // Entry 80 - BF - 0x01c8, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, - 0x01cd, 0x01cd, 0x01cd, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01d4, - 0x01da, 0x01eb, 0x01fc, 0x020c, 0x020c, 0x020c, 0x020c, 0x020c, - 0x0211, 0x0211, 0x0211, 0x0217, 0x0217, 0x0217, 0x021e, 0x0224, - 0x0228, 0x022f, 0x022f, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, - 0x0244, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, - 0x0279, 0x027e, 0x02a1, - }, - }, - { // fy - "DefakaArabyskKeizerlijk ArameesArmeensAvestaanskBalineeskBamounBassa Vah" + - "BatakBengaleesBlissymbolenBopomofoBrahmiBrailleBugineeskBuhidChakmaV" + - "erenigde Canadese Aboriginal-symbolenKaryskChamCherokeeCirthKoptyskS" + - "ypryskSyrillyskAldkerkslavysk SyrillyskDevanagariDeseretDuployan sne" + - "lschriftEgyptysk demotyskEgyptysk hiëratyskEgyptyske hiërogliefenEth" + - "iopyskGeorgysk KhutsuriGeorgyskGlagolityskGothyskGranthaGrieksGujara" + - "tiGurmukhiHangulHanHanunooFerienfâldigd SineeskTraditjoneel SineeskH" + - "ebreeuwskHiraganaAnatolyske hiërogliefenPahawh HmongKatakana of Hira" + - "ganaAldhongaarsIndusAld-italyskJamoJavaanskJapansJurchenKayah LiKata" + - "kanaKharoshthiKhmerKhojkiKannadaKoreaanskKpelleKaithiLannaLaoGotysk " + - "LatynGaelysk LatynLatynLepchaLimbuLineair ALineair BFraserLomaLycysk" + - "LydyskMandaeansManicheaanskMayahiërogliefenMendeMeroitysk cursiefMer" + - "oïtyskMalayalamMongoolsMoonMroMeiteiMyanmarAld Noard-ArabyskNabateaa" + - "nskNaxi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsmanyaPalmyreensAldperm" + - "yskPhags-paInscriptioneel PahlaviPsalmen PahlaviBoek PahlaviFoenicys" + - "kPollard-fonetyskInscriptioneel ParthyskRejangRongorongoRunicSamarit" + - "aanskSaratiAld Sûd-ArabyskSaurashtraSignWritingShavianSharadaSindhiS" + - "inhalaSora SompengSoendaneeskSyloti NagriSyriacEstrangelo ArameeskWe" + - "st-ArameeskEast-ArameeskTagbanwaTakriTai LeNij Tai LueTamilTangutTai" + - " VietTeluguTengwarTifinaghTagalogThaanaThaisTibetaanskTirhutaUgarity" + - "skVaiSichtbere spraakVarang KshitiWoleaiAldperzyskSumero-Akkadian Cu" + - "neiformYiOergeërfdWiskundige notatieSymbolenOngeschrevenAlgemeenOnbe" + - "kend schriftsysteem", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x000d, 0x001f, 0x0026, - 0x0030, 0x0039, 0x003f, 0x0048, 0x004d, 0x0056, 0x0056, 0x0062, - 0x006a, 0x0070, 0x0077, 0x0080, 0x0085, 0x008b, 0x00b1, 0x00b7, - 0x00bb, 0x00c3, 0x00c8, 0x00cf, 0x00d6, 0x00df, 0x00f7, 0x0101, - 0x0108, 0x011c, 0x012d, 0x0140, 0x0157, 0x0157, 0x0160, 0x0171, - 0x0179, 0x0184, 0x0184, 0x018b, 0x0192, 0x0198, 0x01a0, 0x01a8, - 0x01a8, 0x01ae, 0x01b1, 0x01b8, 0x01ce, 0x01e2, 0x01e2, 0x01ec, - 0x01f4, 0x020c, 0x0218, 0x022c, 0x0237, 0x023c, 0x0247, 0x024b, - // Entry 40 - 7F - 0x0253, 0x0259, 0x0260, 0x0268, 0x0270, 0x027a, 0x027f, 0x0285, - 0x028c, 0x0295, 0x029b, 0x02a1, 0x02a6, 0x02a9, 0x02b5, 0x02c2, - 0x02c7, 0x02cd, 0x02d2, 0x02db, 0x02e4, 0x02ea, 0x02ee, 0x02f4, - 0x02fa, 0x02fa, 0x0303, 0x030f, 0x030f, 0x0320, 0x0325, 0x0336, - 0x0340, 0x0349, 0x0349, 0x0351, 0x0355, 0x0358, 0x035e, 0x035e, - 0x0365, 0x0376, 0x0381, 0x0381, 0x038a, 0x0390, 0x0396, 0x039b, - 0x03a3, 0x03a9, 0x03ad, 0x03ad, 0x03b4, 0x03be, 0x03be, 0x03c8, - 0x03d0, 0x03e6, 0x03f5, 0x0401, 0x040a, 0x041a, 0x0431, 0x0437, - // Entry 80 - BF - 0x0441, 0x0446, 0x0452, 0x0458, 0x0468, 0x0472, 0x047d, 0x0484, - 0x048b, 0x048b, 0x0491, 0x0498, 0x04a4, 0x04a4, 0x04af, 0x04bb, - 0x04c1, 0x04d4, 0x04e1, 0x04ee, 0x04f6, 0x04fb, 0x0501, 0x050c, - 0x0511, 0x0517, 0x051f, 0x0525, 0x052c, 0x0534, 0x053b, 0x0541, - 0x0546, 0x0550, 0x0557, 0x0560, 0x0563, 0x0573, 0x0580, 0x0586, - 0x0590, 0x05a9, 0x05ab, 0x05ab, 0x05b5, 0x05c7, 0x05c7, 0x05cf, - 0x05db, 0x05e3, 0x05fa, - }, - }, - { // ga - "AdlmAlbánach CugasachAhomArabachAramach ImpiriúilAirméanachAivéisteachBa" + - "ilíochBamuBassBatacachBeangálachBhksBopomofoBrahBrailleBuigineachBut" + - "haideachCakmCansCariChamSeiricíochCoptachCipireachCoireallachDéivean" + - "ágrachDsrtDuplÉigipteach coiteannÉigipteach cliarúilIairiglifí Éigi" + - "pteachaElbaAetópachSeoirseachGlagalachGonmGotachGranGréagachGúiseará" + - "tachGurmúcachHan agus BopomofoHangalachHanHanoHan SimplitheHan Traid" + - "isiúntaHatrEabhrachHireagánachIairiglifí AnatólachaHmngSiollabraí Se" + - "apánachaSean-UngárachSean-IodáilicSeamóIávachSeapánachKaliCatacánach" + - "KharCiméarachKhojCannadachCóiréachKthiLanaLaosachCló GaelachLaidinea" + - "chLepcLiombúchLíneach ALíneach BFraserLiciachLidiachMahasánachMandMa" + - "inicéasachMarcIairiglifí MáigheachaMeindeachMercMeroMailéalamachModi" + - "MongólachMrooMteiMultMaenmarachSean-Arabach ThuaidhNbatNewaNkooNshuO" + - "ghamOlckOrkhOiríseachOsgeOsmaPalmPaucSean-PheirmeachPhagPhliPhlpFéin" + - "íceachPollard FoghrachPairtiach InscríbhinniúilRjngRúnachSamárachSe" + - "an-Arabach TheasSaurSgnwShawachShrdSiddSindSiolónachSoraSoyoSundSylo" + - "SiriceachTagbTakrTaleTaluTamalachTangTavtTeileagúchTifinaghTagálagac" + - "hTánachTéalannachTibéadachTirhÚgairíteachVaiiWaraSean-PheirseachDing" + - "chruthach Suiméar-AcádachÍsZanbOidhreachtNodaireacht Mhatamaiticiúil" + - "EmojiSiombailíGan ScríobhCoitiantaScript Anaithnid", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0004, 0x0004, 0x0016, 0x001a, 0x0021, 0x0033, 0x003e, - 0x004a, 0x0053, 0x0057, 0x005b, 0x0063, 0x006e, 0x0072, 0x0072, - 0x007a, 0x007e, 0x0085, 0x008f, 0x009a, 0x009e, 0x00a2, 0x00a6, - 0x00aa, 0x00b5, 0x00b5, 0x00bc, 0x00c5, 0x00d0, 0x00d0, 0x00df, - 0x00e3, 0x00e7, 0x00fb, 0x0110, 0x0128, 0x012c, 0x0135, 0x0135, - 0x013f, 0x0148, 0x014c, 0x0152, 0x0156, 0x015f, 0x016d, 0x0177, - 0x0188, 0x0191, 0x0194, 0x0198, 0x01a5, 0x01b6, 0x01ba, 0x01c2, - 0x01ce, 0x01e5, 0x01e9, 0x0200, 0x020e, 0x020e, 0x021c, 0x0222, - // Entry 40 - 7F - 0x0229, 0x0233, 0x0233, 0x0237, 0x0242, 0x0246, 0x0250, 0x0254, - 0x025d, 0x0267, 0x0267, 0x026b, 0x026f, 0x0276, 0x0276, 0x0282, - 0x028c, 0x0290, 0x0299, 0x02a3, 0x02ad, 0x02b3, 0x02b3, 0x02ba, - 0x02c1, 0x02cc, 0x02d0, 0x02dd, 0x02e1, 0x02f8, 0x0301, 0x0305, - 0x0309, 0x0316, 0x031a, 0x0324, 0x0324, 0x0328, 0x032c, 0x0330, - 0x033a, 0x034e, 0x0352, 0x0356, 0x0356, 0x035a, 0x035e, 0x0363, - 0x0367, 0x036b, 0x0375, 0x0379, 0x037d, 0x0381, 0x0385, 0x0394, - 0x0398, 0x039c, 0x03a0, 0x03a0, 0x03ac, 0x03bc, 0x03d7, 0x03db, - // Entry 80 - BF - 0x03db, 0x03e2, 0x03eb, 0x03eb, 0x03fd, 0x0401, 0x0405, 0x040c, - 0x0410, 0x0414, 0x0418, 0x0422, 0x0426, 0x042a, 0x042e, 0x0432, - 0x043b, 0x043b, 0x043b, 0x043b, 0x043f, 0x0443, 0x0447, 0x044b, - 0x0453, 0x0457, 0x045b, 0x0466, 0x0466, 0x046e, 0x0479, 0x0480, - 0x048b, 0x0495, 0x0499, 0x04a6, 0x04aa, 0x04aa, 0x04ae, 0x04ae, - 0x04bd, 0x04dc, 0x04df, 0x04e3, 0x04ed, 0x0509, 0x050e, 0x0518, - 0x0524, 0x052d, 0x053d, - }, - }, - { // gd - "AdlamAfakaAlbàinis ChabhcasachAhomArabaisAramais impireilAirmeinisAvesta" + - "naisBaliBamumBassa VahBatakBeangailisBhaiksukiComharran BlissBopomof" + - "oBrahmiBrailleLontaraBuhidChakmaSgrìobhadh Lideach Aonaichte nan Tùs" + - "anach CanadachCarianChamCherokeeCirthCoptaisCìoprasaisCirilisCirilis" + - " Seann-Slàbhais na h-EaglaiseDevanagariDeseretGearr-sgrìobhadh Duplo" + - "yéSealbh-sgrìobhadh ÈipheiteachElbasanGe’ezCairtbheilisGlagoliticeac" + - "hMasaram GondiGotaisGranthaGreugaisGujaratiGurmukhiHan le BopomofoHa" + - "ngulHanHanunooHan simplichteHan tradaiseantaHatranEabhraHiraganaDeal" + - "bh-sgrìobhadh AnatolachPahawh HmongKatakana no HiraganaSeann-Ungarai" + - "sSeann-EadailtisJamoDeàbhanaisSeapanaisJurchenKayah LiKatakanaKharos" + - "hthiCmèarKhojkiKannadaCoirèanaisKpelleKaithiLannaLàthoLaideann frakt" + - "urLaideann GhàidhealachLaideannLepchaLimbuLinear ALinear BLisuLomaLy" + - "cianLydianMahajaniMandaeanManichaeanMarchenDealbh-sgrìobhadh MayachM" + - "endeMeroiticeach ceangailteMeroiticeachMalayalamModiMongolaisMroMeit" + - "ei MayekMultaniMiànmarSeann-Arabach ThuathachNabataeanNewaNaxi GebaN" + - "’koNüshuOgham-chraobhOl ChikiOrkhonOriyaOsageOsmanyaPalmyrenePau C" + - "in HauSeann-PhermicPhags-paPahlavi nan snaidh-sgrìobhaidheanPahlavi " + - "nan saltairPheniceachMiao PhollardPartais snaidh-sgrìobhteRejangRong" + - "orongoRùn-sgrìobhadhSamaritanaisSaratiSeann-Arabais DheasachSaurasht" + - "raSgrìobhadh cainnte-sanaisSgrìobhadh an t-SeathaichSharadaSiddhamKh" + - "udawadiSinhalaSora SompengSoyomboSundaSyloti NagriSuraidheacSuraidhe" + - "ac SiarachSuraidheac EarachTagbanwaTakriTai LeTai Lue ÙrTaimilTangut" + - "Tai VietTeluguTengwarTifinaghTagalogThaanaTàidhTibeitisTirhutaUgarit" + - "iceachVaiVarang KshitiWoleaiSeann-PheirsisGèinn-sgrìobhadh Sumer is " + - "AkkadYiZanabazar ceàrnagachDìleabGnìomhairean matamataigEmojiSamhlai" + - "dheanGun sgrìobhadhCoitcheannLitreadh neo-aithnichte", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x000a, 0x001f, 0x0023, 0x002a, 0x003a, 0x0043, - 0x004d, 0x0051, 0x0056, 0x005f, 0x0064, 0x006e, 0x0077, 0x0086, - 0x008e, 0x0094, 0x009b, 0x00a2, 0x00a7, 0x00ad, 0x00e1, 0x00e7, - 0x00eb, 0x00f3, 0x00f8, 0x00ff, 0x010a, 0x0111, 0x0136, 0x0140, - 0x0147, 0x0161, 0x0161, 0x0161, 0x0180, 0x0187, 0x018e, 0x018e, - 0x019a, 0x01a8, 0x01b5, 0x01bb, 0x01c2, 0x01ca, 0x01d2, 0x01da, - 0x01e9, 0x01ef, 0x01f2, 0x01f9, 0x0207, 0x0217, 0x021d, 0x0223, - 0x022b, 0x0247, 0x0253, 0x0267, 0x0275, 0x0275, 0x0284, 0x0288, - // Entry 40 - 7F - 0x0293, 0x029c, 0x02a3, 0x02ab, 0x02b3, 0x02bd, 0x02c3, 0x02c9, - 0x02d0, 0x02db, 0x02e1, 0x02e7, 0x02ec, 0x02f2, 0x0302, 0x0318, - 0x0320, 0x0326, 0x032b, 0x0333, 0x033b, 0x033f, 0x0343, 0x0349, - 0x034f, 0x0357, 0x035f, 0x0369, 0x0370, 0x0389, 0x038e, 0x03a5, - 0x03b1, 0x03ba, 0x03be, 0x03c7, 0x03c7, 0x03ca, 0x03d6, 0x03dd, - 0x03e5, 0x03fc, 0x0405, 0x0409, 0x0412, 0x0418, 0x041e, 0x042b, - 0x0433, 0x0439, 0x043e, 0x0443, 0x044a, 0x0453, 0x045e, 0x046b, - 0x0473, 0x0495, 0x04a8, 0x04a8, 0x04b2, 0x04bf, 0x04d8, 0x04de, - // Entry 80 - BF - 0x04e8, 0x04f8, 0x0504, 0x050a, 0x0520, 0x052a, 0x0544, 0x055e, - 0x0565, 0x056c, 0x0575, 0x057c, 0x0588, 0x058f, 0x0594, 0x05a0, - 0x05aa, 0x05aa, 0x05bc, 0x05cd, 0x05d5, 0x05da, 0x05e0, 0x05eb, - 0x05f1, 0x05f7, 0x05ff, 0x0605, 0x060c, 0x0614, 0x061b, 0x0621, - 0x0627, 0x062f, 0x0636, 0x0642, 0x0645, 0x0645, 0x0652, 0x0658, - 0x0666, 0x0687, 0x0689, 0x069e, 0x06a5, 0x06bd, 0x06c2, 0x06ce, - 0x06dd, 0x06e7, 0x06fe, - }, - }, - { // gl - "árabearmeniobengalíbopomofobrailleSilabario aborixe canadiano unificadoc" + - "irílicodevanágarietíopexeorxianogregoguxaratígurmukhihanbhangulhanha" + - "n simplificadohan tradicionalhebreohiraganasilabarios xaponesesjamox" + - "aponéskatakanakhmercanaréscoreanolaosianolatinomalabarmongolbirmanoo" + - "riácingaléstámilteluguthaanatailandéstibetanonotación matemáticaemoj" + - "issímbolosnon escritocomúnalfabeto descoñecido", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0015, 0x0015, 0x0015, - 0x001d, 0x001d, 0x0024, 0x0024, 0x0024, 0x0024, 0x0049, 0x0049, - 0x0049, 0x0049, 0x0049, 0x0049, 0x0049, 0x0052, 0x0052, 0x005d, - 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x0064, 0x0064, - 0x006d, 0x006d, 0x006d, 0x006d, 0x006d, 0x0072, 0x007b, 0x0083, - 0x0087, 0x008d, 0x0090, 0x0090, 0x00a0, 0x00af, 0x00af, 0x00b5, - 0x00bd, 0x00bd, 0x00bd, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d5, - // Entry 40 - 7F - 0x00d5, 0x00dd, 0x00dd, 0x00dd, 0x00e5, 0x00e5, 0x00ea, 0x00ea, - 0x00f2, 0x00f9, 0x00f9, 0x00f9, 0x00f9, 0x0101, 0x0101, 0x0101, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, - 0x0107, 0x010e, 0x010e, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - // Entry 80 - BF - 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0120, 0x0120, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, - 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, 0x0129, - 0x012f, 0x012f, 0x012f, 0x0135, 0x0135, 0x0135, 0x0135, 0x013b, - 0x0145, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, - 0x014d, 0x014d, 0x014d, 0x014d, 0x014d, 0x0162, 0x0168, 0x0171, - 0x017c, 0x0182, 0x0197, - }, - }, - { // gsw - "ArabischArmiArmenischAveschtischBalinesischBattakischBengalischBliss-Sym" + - "boolBopomofoBrahmiBlindäschriftBuginesischBuhidUCASKarischChamCherok" + - "eeCirthKoptischZypriotischKyrillischAltchileslawischTövanagaariTeser" + - "etTemozisch-ÄgüptischHiraazisch-ÄgüptischÄgüptischi HiroglüüfeÄzioop" + - "ischGhutsuriGeorgischGlagolitischGotischGriechischGuscharatiGurmukhi" + - "HangulChineesischHanunooVeräifachti Chineesischi SchriftTradizionell" + - "i Chineesischi SchriftHebräischHiraganaPahawh HmongKatakana oder Hir" + - "aganaAltungarischIndus-SchriftAltitalischJavanesischJapanischKayah L" + - "iKatakanaKharoshthiKhmerKannadaKoreanischLannaLaotischLatiinisch - F" + - "raktur-VarianteLatiinisch - Gäälischi VarianteLatiinischLepchaLimbuL" + - "inear ALinear BLykischLydischMandäischManichäischMaya-HieroglyphäMer" + - "oitischMalaysischMongolischMoonMeitei MayekBurmesischN’KoOghamOl Chi" + - "kiOrchon-RunäOriyaOsmanischAltpermischPhags-paPahlaviPhönizischPolla" + - "rd PhonetischRejangRongorongoRunäschriftSamaritanischSaratiSaurashtr" + - "aGebäärdeschpraachShaw-AlphabetSinghalesischSundanesischSyloti Nagri" + - "SyrischSyrisch - Eschtrangelo-VarianteWeschtsyrischOschtsyrischTagba" + - "nwaTai LeTai LueTamilischTeluguTengwarTifinaghTagalogThaanaThaiTibee" + - "tischUgaritischVaiSichtbari SchpraachAltpersischSumerisch-akkadischi" + - " KeilschriftYiG’eerbtä SchriftwärtSchriftlosi SchpraachUnbeschtimmtU" + - "ncodiirti Schrift", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, - 0x0020, 0x002b, 0x002b, 0x002b, 0x0035, 0x003f, 0x003f, 0x004c, - 0x0054, 0x005a, 0x0068, 0x0073, 0x0078, 0x0078, 0x007c, 0x0083, - 0x0087, 0x008f, 0x0094, 0x009c, 0x00a7, 0x00b1, 0x00c1, 0x00cd, - 0x00d4, 0x00d4, 0x00e9, 0x00ff, 0x0118, 0x0118, 0x0123, 0x012b, - 0x0134, 0x0140, 0x0140, 0x0147, 0x0147, 0x0151, 0x015b, 0x0163, - 0x0163, 0x0169, 0x0174, 0x017b, 0x019c, 0x01be, 0x01be, 0x01c8, - 0x01d0, 0x01d0, 0x01dc, 0x01f2, 0x01fe, 0x020b, 0x0216, 0x0216, - // Entry 40 - 7F - 0x0221, 0x022a, 0x022a, 0x0232, 0x023a, 0x0244, 0x0249, 0x0249, - 0x0250, 0x025a, 0x025a, 0x025a, 0x025f, 0x0267, 0x0284, 0x02a5, - 0x02af, 0x02b5, 0x02ba, 0x02c2, 0x02ca, 0x02ca, 0x02ca, 0x02d1, - 0x02d8, 0x02d8, 0x02e2, 0x02ee, 0x02ee, 0x02ff, 0x02ff, 0x02ff, - 0x0309, 0x0313, 0x0313, 0x031d, 0x0321, 0x0321, 0x032d, 0x032d, - 0x0337, 0x0337, 0x0337, 0x0337, 0x0337, 0x033d, 0x033d, 0x0342, - 0x034a, 0x0356, 0x035b, 0x035b, 0x0364, 0x0364, 0x0364, 0x036f, - 0x0377, 0x0377, 0x0377, 0x037e, 0x0389, 0x039b, 0x039b, 0x03a1, - // Entry 80 - BF - 0x03ab, 0x03b7, 0x03c4, 0x03ca, 0x03ca, 0x03d4, 0x03e7, 0x03f4, - 0x03f4, 0x03f4, 0x03f4, 0x0401, 0x0401, 0x0401, 0x040d, 0x0419, - 0x0420, 0x043f, 0x044c, 0x0458, 0x0460, 0x0460, 0x0466, 0x046d, - 0x0476, 0x0476, 0x0476, 0x047c, 0x0483, 0x048b, 0x0492, 0x0498, - 0x049c, 0x04a6, 0x04a6, 0x04b0, 0x04b3, 0x04c6, 0x04c6, 0x04c6, - 0x04d1, 0x04f1, 0x04f3, 0x04f3, 0x050b, 0x050b, 0x050b, 0x050b, - 0x0520, 0x052c, 0x053e, - }, - }, - { // gu - guScriptStr, - guScriptIdx, - }, - {}, // guz - {}, // gv - {}, // ha - {}, // haw - { // he - heScriptStr, - heScriptIdx, - }, - { // hi - hiScriptStr, - hiScriptIdx, - }, - { // hr - hrScriptStr, - hrScriptIdx, - }, - { // hsb - "arabscearmenscebengalscebopomofoBraillowe pismokyriliscedevanagarietiopi" + - "scegeorgiscegrjekscegujaratigurmukhihangulchinscezjednorjene chinske" + - " pismotradicionalne chinske pismohebrejscehiraganajapanscekatakanakh" + - "merscekannadscekorejscelaoscełaćonscemalayalamscemongolsceburmasceor" + - "iyasinghalscetamilsceteluguthaanathailandscetibetscesymbolebjez pism" + - "apowšitkownenjeznate pismo", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0018, - 0x0020, 0x0020, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x0038, 0x0038, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x004b, 0x004b, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x005c, 0x0064, 0x006c, - 0x006c, 0x0072, 0x0079, 0x0079, 0x0092, 0x00ad, 0x00ad, 0x00b6, - 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, 0x00be, - // Entry 40 - 7F - 0x00be, 0x00c6, 0x00c6, 0x00c6, 0x00ce, 0x00ce, 0x00d6, 0x00d6, - 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00ed, 0x00ed, 0x00ed, - 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00f7, - 0x00f7, 0x0103, 0x0103, 0x010c, 0x010c, 0x010c, 0x010c, 0x010c, - 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, 0x0114, - 0x0114, 0x0114, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry 80 - BF - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, - 0x012b, 0x012b, 0x012b, 0x0131, 0x0131, 0x0131, 0x0131, 0x0137, - 0x0142, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, - 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x014a, 0x0151, - 0x015b, 0x0167, 0x0175, - }, - }, - { // hu - huScriptStr, - huScriptIdx, - }, - { // hy - hyScriptStr, - hyScriptIdx, - }, - { // id - idScriptStr, - idScriptIdx, - }, - {}, // ig - { // ii - "ꀊꇁꀨꁱꂷꀊꆨꌦꇁꃚꁱꂷꈝꐯꉌꈲꁱꂷꀎꋏꉌꈲꁱꂷꇁꄀꁱꂷꆈꌠꁱꂷꁱꀋꉆꌠꅉꀋꐚꌠꁱꂷ", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0036, 0x0048, 0x0048, 0x0048, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - // Entry 40 - 7F - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - // Entry 80 - BF - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, - 0x006c, 0x006c, 0x007e, - }, - }, - { // is - isScriptStr, - isScriptIdx, - }, - { // it - itScriptStr, - itScriptIdx, - }, - { // ja - jaScriptStr, - jaScriptIdx, - }, - { // jgo - "mík -ŋwaꞌnɛ yi ɛ́ líŋɛ́nɛ Latɛ̂ŋntúu yi pɛ́ ká ŋwaꞌnεntɛ-ŋwaꞌnɛ yí pɛ́ k" + - "á kɛ́ jí", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - // Entry 80 - BF - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x004c, 0x004c, 0x0073, - }, - }, - {}, // jmc - { // ka - kaScriptStr, - kaScriptIdx, - }, - {}, // kab - {}, // kam - {}, // kde - { // kea - "arábikuarméniubengalibopomofobraillesirílikudevanagarietiópikujorjianugr" + - "egugujaratigurmukihangulhanhan simplifikaduhan tradisionalebraikuira" + - "ganajaponeskatakanakmerkanareskorianulausianulatinumalaialammongolbi" + - "rmanesoriyasingalestamiltelugutaanatailandestibetanusímbulusnãu skri" + - "tukomunskrita diskonxedu", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0017, 0x0017, 0x0017, - 0x001f, 0x001f, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x002f, 0x002f, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039, 0x0042, 0x0042, - 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004f, 0x0057, 0x005e, - 0x005e, 0x0064, 0x0067, 0x0067, 0x0077, 0x0086, 0x0086, 0x008d, - 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094, - // Entry 40 - 7F - 0x0094, 0x009b, 0x009b, 0x009b, 0x00a3, 0x00a3, 0x00a7, 0x00a7, - 0x00ae, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00bd, 0x00bd, 0x00bd, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00cc, 0x00cc, 0x00d2, 0x00d2, 0x00d2, 0x00d2, 0x00d2, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, - 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, - // Entry 80 - BF - 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, 0x00df, - 0x00df, 0x00df, 0x00df, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, 0x00e7, - 0x00ec, 0x00ec, 0x00ec, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f7, - 0x0100, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, - 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, - 0x011c, 0x0121, 0x0132, - }, - }, - {}, // khq - {}, // ki - { // kk - kkScriptStr, - kkScriptIdx, - }, - {}, // kkj - {}, // kl - {}, // kln - { // km - kmScriptStr, - kmScriptIdx, - }, - { // kn - knScriptStr, - knScriptIdx, - }, - { // ko - koScriptStr, - koScriptIdx, - }, - {}, // ko-KP - { // kok - "अरेबिकसिरिलिकदेवनागरीसोंपी हॅनपारंपारीक हॅनलॅटीनअलिखीतअज्ञात लिपी", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0027, 0x0027, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, - 0x003f, 0x003f, 0x003f, 0x003f, 0x0058, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - // Entry 40 - 7F - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - // Entry 80 - BF - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, 0x008c, - 0x009e, 0x009e, 0x00bd, - }, - }, - { // ks - "اَربیاَرمانیَناَویستَنبالَنیٖزباتَکبیٚنگٲلۍبِلِس سِمبلزبوپوموفوبرٛاہمیبر" + - "یلبُگِنیٖزبُہِدیُنِفایِڑ کنیڑِیَن ایٚب آرجِنَل سِلیبِککاریَنچَمچیٚر" + - "وکیکِرتھکاپٹِککِپرایِٹسَیرِلِکپرون چٔرچسلیوونِک سَیرِلِکدیوناگریڈیٚ" + - "سٔریٚٹاِجپشِیَن ڈِماٹِکاِجِپشَن ہَیریٹِکاِجِپشَن ہَیروگلِپھساِتھیوپ" + - "ِکجارجِیَن کھتسوریجارجِیَنگلیگولِٹِکگوتھِکگرَنتھاگریٖکگُجرٲتۍہانٛگُ" + - "لہانہانُنوٗسِمپلِفایِڑ ہانٹریڑِشَنَلہِبرِوہیٖراگاناپَہاو مانٛگکَٹاک" + - "انا یا ہِراگاناپرون ہَنگیریَناِنڈَساولڈ اِٹیلِکجاوَنیٖزجیٚپَنیٖزکای" + - "ا لیکَتاکاناخَروشتھیکھٕمیرکَنَڑاکوریَنلانالاوفرٛکتُر لیٹِنگیلِک لیٹ" + - "َنلیٹِنلیٚپکالِمبوٗلیٖنیَر اےلیٖنیَر بیلیسِیَنلیدِیَنمَندییَنمانیشی" + - "یَنمایَن ہیٖروگلِپھمِرایٹِکمَلیالَممَنٛگولیَنموٗنمیتی مایَکمَیَنمار" + - "ایٚن کواوگہاماول چِکیاورکھوناورِیااوسمانیااولڈ پٔرمِکپھاگس پابوٗک پ" + - "َہَلویپھونِشِیَنپولاڑ پھونِٹِکریجَنٛگرونٛگو رونٛگورَنِکسَمارِٹَنسَر" + - "اتیسوراشٹرااِشارٲتی لِکھٲےشاویَنسِنہالاسَنڈَنیٖزسیلوتی ناگریسیٖرِیَ" + - "کایٚسٹرینجِلو سیٖرِیَکمغرِبی سیٖریَکمشرَقی سیٖریَکتَگبَنواتَیلیےنوٚ" + - "و تیلوتَمِلتیلگوٗتیٚنگوارتِفِناگتَگَلوگتھاناتھاےتِبتیاُگارِٹِکواےوِ" + - "زِبٕل سپیٖچپرون فارسیسُمیرو اکادیَن کوٗنِفامیٖیلیٚکھنَےعاماَن زٲنۍ " + - "یا نا لَگہٕ ہار رَسمُل خظ", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x001c, - 0x002c, 0x003c, 0x003c, 0x003c, 0x0046, 0x0056, 0x0056, 0x006d, - 0x007d, 0x008b, 0x0093, 0x00a3, 0x00ad, 0x00ad, 0x00f7, 0x0103, - 0x0109, 0x0117, 0x0121, 0x012d, 0x013d, 0x014d, 0x017f, 0x018f, - 0x01a1, 0x01a1, 0x01c2, 0x01e3, 0x020a, 0x020a, 0x021c, 0x023b, - 0x024b, 0x025f, 0x025f, 0x026b, 0x026b, 0x0279, 0x0283, 0x0291, - 0x0291, 0x029f, 0x02a5, 0x02b3, 0x02d0, 0x02e4, 0x02e4, 0x02f0, - 0x0302, 0x0302, 0x0317, 0x033d, 0x0358, 0x0364, 0x037b, 0x037b, - // Entry 40 - 7F - 0x038b, 0x039d, 0x039d, 0x03aa, 0x03ba, 0x03ca, 0x03d6, 0x03d6, - 0x03e2, 0x03ee, 0x03ee, 0x03ee, 0x03f6, 0x03fc, 0x0415, 0x042a, - 0x0434, 0x0440, 0x044c, 0x045f, 0x0472, 0x0472, 0x0472, 0x0480, - 0x048e, 0x048e, 0x049e, 0x04b0, 0x04b0, 0x04cf, 0x04cf, 0x04cf, - 0x04df, 0x04ef, 0x04ef, 0x0503, 0x050b, 0x050b, 0x051e, 0x051e, - 0x052e, 0x052e, 0x052e, 0x052e, 0x052e, 0x053b, 0x053b, 0x0547, - 0x0556, 0x0564, 0x0570, 0x0570, 0x0580, 0x0580, 0x0580, 0x0595, - 0x05a4, 0x05a4, 0x05a4, 0x05bb, 0x05cf, 0x05ea, 0x05ea, 0x05f8, - // Entry 80 - BF - 0x0611, 0x061b, 0x062d, 0x0639, 0x0639, 0x0649, 0x0666, 0x0672, - 0x0672, 0x0672, 0x0672, 0x0680, 0x0680, 0x0680, 0x0692, 0x06a9, - 0x06b9, 0x06e2, 0x06fd, 0x0718, 0x0728, 0x0728, 0x0734, 0x0745, - 0x074f, 0x074f, 0x074f, 0x075b, 0x076b, 0x0779, 0x0787, 0x0791, - 0x0799, 0x07a3, 0x07a3, 0x07b5, 0x07bb, 0x07d4, 0x07d4, 0x07d4, - 0x07e7, 0x0813, 0x0819, 0x0819, 0x0819, 0x0819, 0x0819, 0x0819, - 0x0829, 0x082f, 0x086c, - }, - }, - {}, // ksb - {}, // ksf - { // ksh - "arraabesche Schreffarmeenesche Schreffbängjaalesche Schreffschineeseche " + - "Ömschreff BopomofoBlindeschreffkürrellesche Schreffindesche Devanaj" + - "ari-Schreffätejoopesche Schreffje’orrjesche Schreffjriischesche Schr" + - "effjujaraatesche Schreffindesche Gurmukhi-Schreffkorrejaanesche Schr" + - "effen schineesesche Schreffeijfacher schineesesche Schrefftradizjonä" + - "ll schineesesche Schreffhebrääjesche Schreffjapaanesche Hiddajaana-S" + - "chreffen japaanesche Schreffjapaanesche Kattakaana-SchreffKhmer-Schr" + - "effindesche Kannada-Schreffkorrejaanesche Schreff udder en schineese" + - "sche Schrefflahootesche Schrefflateinesche Schreffindesche Malajalam" + - "-Schreffmongjoolesche Schreffbirmahnesche Schreffindesche Orija-Schr" + - "effsingjaleesesche Schrefftamiilesche Schreffindesche Telugu-Schreff" + - "malledivesche Taana-Schrefftailändesche Schrefftibeetesche Schreff-Z" + - "eiche ävver kein Schreff--jaa keij Schreff--öhnß en Schreff--onbikan" + - "nte Schreff-", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x003c, 0x003c, 0x003c, - 0x005c, 0x005c, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, - 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x007e, 0x007e, 0x0099, - 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, 0x00ae, 0x00ae, - 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00c4, 0x00d8, 0x00ed, 0x0106, - 0x0106, 0x011c, 0x0134, 0x0134, 0x0153, 0x0176, 0x0176, 0x018c, - 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, - // Entry 40 - 7F - 0x01aa, 0x01c0, 0x01c0, 0x01c0, 0x01de, 0x01de, 0x01eb, 0x01eb, - 0x0203, 0x0238, 0x0238, 0x0238, 0x0238, 0x024b, 0x024b, 0x024b, - 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, - 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, 0x025e, - 0x025e, 0x0278, 0x0278, 0x028d, 0x028d, 0x028d, 0x028d, 0x028d, - 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x02a1, - 0x02a1, 0x02a1, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, - 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, - // Entry 80 - BF - 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, 0x02b7, - 0x02b7, 0x02b7, 0x02b7, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, - 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, 0x02ce, - 0x02e1, 0x02e1, 0x02e1, 0x02f8, 0x02f8, 0x02f8, 0x02f8, 0x0313, - 0x0328, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, - 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x033b, 0x0357, - 0x0369, 0x037c, 0x0390, - }, - }, - {}, // kw - { // ky - kyScriptStr, - kyScriptIdx, - }, - {}, // lag - { // lb - "ArabeschArmiArmeneschAvesteschBalineseschBattakeschBengaleschBliss-Symbo" + - "lerBopomofoBrahmiBlanneschrëftBugineseschBuhidUCASKareschChamCheroke" + - "eCirthKopteschZyprioteschKyrilleschAlkiercheslaweschDevanagariDesere" + - "tEgyptesch-DemoteschEgyptesch-HierateschEgyptesch HieroglyphenEthiop" + - "eschKhutsuriGeorgeschGlagoliteschGoteschGriicheschGujaratiGurmukhiHa" + - "ngulChineseschHanunooVereinfacht ChineseschTraditionellt ChineseschH" + - "ebräeschHiraganaPahawh HmongKatakana oder HiraganaAlungareschIndus-S" + - "chrëftAlitaleschJavaneseschJapaneschKayah LiKatakanaKharoshthiKhmerK" + - "annadaKoreaneschLannaLaoteschLaténgesch-Fraktur-VariantLaténgesch-Gä" + - "llesch VariantLaténgeschLepchaLimbuLinear ALinear BLykeschLydeschMan" + - "däeschManichäeschMaya-HieroglyphenMeroiteschMalayseschMongoleschMoon" + - "Meitei MayekBirmaneschN’KoOghamOl ChikiOrchon-RunenOriyaOsmaneschAlp" + - "ermeschPhags-paPahlaviPhönizeschPollard PhoneteschRejangRongorongoRu" + - "neschrëftSamaritaneschSaratiSaurashtraZeechesproochShaw-AlphabetSing" + - "haleseschSundaneseschSyloti NagriSyreschSyresch-Estrangelo-VariantWe" + - "stsyreschOstsyreschTai LeTai LueTamileschTeluguTengwarTifinaghDagalo" + - "gThaanaThaiTibeteschUgariteschVaiSiichtbar SproochAlperseschSumeresc" + - "h-akkadesch KeilschrëftYiGeierfte SchrëftwäertSymbolerOuni SchrëftOn" + - "bestëmmtOncodéiert Schrëft", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0015, - 0x001e, 0x0029, 0x0029, 0x0029, 0x0033, 0x003d, 0x003d, 0x004b, - 0x0053, 0x0059, 0x0067, 0x0072, 0x0077, 0x0077, 0x007b, 0x0082, - 0x0086, 0x008e, 0x0093, 0x009b, 0x00a6, 0x00b0, 0x00c1, 0x00cb, - 0x00d2, 0x00d2, 0x00e5, 0x00f9, 0x010f, 0x010f, 0x0119, 0x0121, - 0x012a, 0x0136, 0x0136, 0x013d, 0x013d, 0x0147, 0x014f, 0x0157, - 0x0157, 0x015d, 0x0167, 0x016e, 0x0184, 0x019c, 0x019c, 0x01a6, - 0x01ae, 0x01ae, 0x01ba, 0x01d0, 0x01db, 0x01e9, 0x01f3, 0x01f3, - // Entry 40 - 7F - 0x01fe, 0x0207, 0x0207, 0x020f, 0x0217, 0x0221, 0x0226, 0x0226, - 0x022d, 0x0237, 0x0237, 0x0237, 0x023c, 0x0244, 0x025f, 0x027c, - 0x0287, 0x028d, 0x0292, 0x029a, 0x02a2, 0x02a2, 0x02a2, 0x02a9, - 0x02b0, 0x02b0, 0x02ba, 0x02c6, 0x02c6, 0x02d7, 0x02d7, 0x02d7, - 0x02e1, 0x02eb, 0x02eb, 0x02f5, 0x02f9, 0x02f9, 0x0305, 0x0305, - 0x030f, 0x030f, 0x030f, 0x030f, 0x030f, 0x0315, 0x0315, 0x031a, - 0x0322, 0x032e, 0x0333, 0x0333, 0x033c, 0x033c, 0x033c, 0x0346, - 0x034e, 0x034e, 0x034e, 0x0355, 0x0360, 0x0372, 0x0372, 0x0378, - // Entry 80 - BF - 0x0382, 0x038e, 0x039b, 0x03a1, 0x03a1, 0x03ab, 0x03b8, 0x03c5, - 0x03c5, 0x03c5, 0x03c5, 0x03d2, 0x03d2, 0x03d2, 0x03de, 0x03ea, - 0x03f1, 0x040b, 0x0416, 0x0420, 0x0420, 0x0420, 0x0426, 0x042d, - 0x0436, 0x0436, 0x0436, 0x043c, 0x0443, 0x044b, 0x0452, 0x0458, - 0x045c, 0x0465, 0x0465, 0x046f, 0x0472, 0x0483, 0x0483, 0x0483, - 0x048d, 0x04ad, 0x04af, 0x04af, 0x04c6, 0x04c6, 0x04c6, 0x04ce, - 0x04db, 0x04e6, 0x04fa, - }, - }, - {}, // lg - {}, // lkt - {}, // ln - { // lo - loScriptStr, - loScriptIdx, - }, - { // lrc - "عأرأڤیأرمأنیبأنگالیبوٙپوٙبئرئیلسیریلیکدیڤانگأریئتوٙیوٙپیاییگورجییوٙنانیگ" + - "وجأراتیگوٙروٙمخیھانگوٙلھانیبیتار سادە بیەسونأتی بیتارعئبریھیراگاناج" + - "اپوٙنیکاتانگاخئمئرکاناداکورئ ییلائولاتینمالایامموغولیمیانمارئوریاسی" + - "ناھالاتامیلتئلئگوتاناتایلأندیتأبأتینئشوٙنە یانیسئسە نأبیەجائوفتاأنی" + - "سئسە نادیار", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0026, 0x0026, 0x0026, - 0x0032, 0x0032, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x004c, 0x004c, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0076, 0x0076, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x008e, 0x009e, 0x00b0, - 0x00b0, 0x00be, 0x00c6, 0x00c6, 0x00e0, 0x00f7, 0x00f7, 0x0101, - 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, - // Entry 40 - 7F - 0x0111, 0x011f, 0x011f, 0x011f, 0x012d, 0x012d, 0x0137, 0x0137, - 0x0143, 0x0150, 0x0150, 0x0150, 0x0150, 0x0158, 0x0158, 0x0158, - 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x0162, 0x0170, 0x0170, 0x017c, 0x017c, 0x017c, 0x017c, 0x017c, - 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, 0x018a, - 0x018a, 0x018a, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, - // Entry 80 - BF - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, - 0x0194, 0x0194, 0x0194, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01ae, 0x01ae, 0x01ae, 0x01ba, 0x01ba, 0x01ba, 0x01ba, 0x01c2, - 0x01d2, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, - 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01de, 0x01f1, - 0x0208, 0x0218, 0x0231, - }, - }, - { // lt - ltScriptStr, - ltScriptIdx, - }, - {}, // lu - {}, // luo - {}, // luy - { // lv - lvScriptStr, - lvScriptIdx, - }, - {}, // mas - {}, // mer - {}, // mfe - {}, // mg - {}, // mgh - { // mgo - "ngam ŋwaʼringam choʼabo ŋwaʼri tisɔʼ", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - // Entry 80 - BF - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x0017, 0x0017, 0x002b, - }, - }, - { // mk - mkScriptStr, - mkScriptIdx, - }, - { // ml - mlScriptStr, - mlScriptIdx, - }, - { // mn - mnScriptStr, - mnScriptIdx, - }, - { // mr - mrScriptStr, - mrScriptIdx, - }, - { // ms - msScriptStr, - msScriptIdx, - }, - { // mt - "GħarbiĊirillikuGriegHan SimplifikatHan TradizzjonaliLatinPersjan AntikMh" + - "ux MiktubKomuniKitba Mhux Magħrufa", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0016, 0x0016, 0x0016, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0025, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - // Entry 40 - 7F - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - // Entry 80 - BF - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, 0x003b, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0053, 0x0059, 0x006d, - }, - }, - {}, // mua - { // my - myScriptStr, - myScriptIdx, - }, - { // mzn - "عربیارمنیبنگالیبوپوموفوسیریلیکدیوانانگریاتیوپیاییگرجییونانیگجراتیگورموخی" + - "هانگولهانساده\u200cبَیی هاناستاندارد ِسنتی هانتعبریهیراگاناجاپونیکا" + - "تاکانا", - []uint16{ // 69 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x001e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x003c, 0x003c, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0062, 0x0062, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x0076, 0x0082, 0x0090, - 0x0090, 0x009c, 0x00a2, 0x00a2, 0x00bc, 0x00e2, 0x00e2, 0x00ea, - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - // Entry 40 - 7F - 0x00fa, 0x0106, 0x0106, 0x0106, 0x0116, - }, - }, - {}, // naq - {}, // nd - { // ne - neScriptStr, - neScriptIdx, - }, - { // nl - nlScriptStr, - nlScriptIdx, - }, - {}, // nmg - { // nn - "arabiskarmiskarmenskavestiskbalinesiskbatakbengalskblissymbolbopomofobra" + - "hmipunktskriftbuginesiskbuhidchakmafelles kanadiske urspråksstavinga" + - "rkariskchamcherokeecirthkoptiskkypriotiskkyrilliskkyrillisk (kyrkjes" + - "lavisk variant)devanagarideseretegyptisk demotiskegyptisk hieratiske" + - "gyptiske hieroglyfaretiopiskkhutsuri (asomtavruli og nuskhuri)georgi" + - "skglagolittiskgotiskgreskgujaratigurmukhihan med bopomofohangulhanha" + - "nunooforenkla hantradisjonell hanhebraiskhiraganapahawk hmongjapansk" + - " stavingsskriftergammalungarskindusgammalitaliskjamojavanesiskjapans" + - "kkayah likatakanakharoshthikhmerkannadakoreanskkaithisklannalaotiskl" + - "atinsk (frakturvariant)latinsk (gælisk variant)latinsklepchalumbulin" + - "eær Alineær Blykisklydiskmandaiskmanikeiskmaya-hieroglyfarmeroitiskm" + - "alayalammongolskmoonmeitei-mayekburmesiskn’kooghamol-chikiorkhonodia" + - "osmanyagammalpermiskphags-painskripsjonspahlavisalmepahlavipahlavifø" + - "nikiskpollard-fonetiskinskripsjonsparthiskrejangrongorongorunersamar" + - "itansksaratisaurashtrateiknskriftshavisksingalesisksundanesisksyloti" + - " nagrisyriakisksyriakisk (estrangelo-variant)syriakisk (vestleg vari" + - "ant)syriakisk (austleg variant)tagbanwatai leny tai luetamilsktai vi" + - "ettelugutengwartifinaghtagalogthaanathaitibetanskugaritiskvaisynleg " + - "talegammalpersisksumero-akkadisk kileskriftyinedarvamatematisk notas" + - "jonemojisymbolspråk utan skriftfellesukjend skrift", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x000d, 0x0014, - 0x001c, 0x0026, 0x0026, 0x0026, 0x002b, 0x0033, 0x0033, 0x003d, - 0x0045, 0x004b, 0x0056, 0x0060, 0x0065, 0x006b, 0x008e, 0x0094, - 0x0098, 0x00a0, 0x00a5, 0x00ac, 0x00b6, 0x00bf, 0x00e0, 0x00ea, - 0x00f1, 0x00f1, 0x0102, 0x0114, 0x0129, 0x0129, 0x0131, 0x0153, - 0x015b, 0x0167, 0x0167, 0x016d, 0x016d, 0x0172, 0x017a, 0x0182, - 0x0192, 0x0198, 0x019b, 0x01a2, 0x01ae, 0x01be, 0x01be, 0x01c6, - 0x01ce, 0x01ce, 0x01da, 0x01f2, 0x01ff, 0x0204, 0x0211, 0x0215, - // Entry 40 - 7F - 0x021f, 0x0226, 0x0226, 0x022e, 0x0236, 0x0240, 0x0245, 0x0245, - 0x024c, 0x0254, 0x0254, 0x025c, 0x0261, 0x0268, 0x0280, 0x0299, - 0x02a0, 0x02a6, 0x02ab, 0x02b4, 0x02bd, 0x02bd, 0x02bd, 0x02c3, - 0x02c9, 0x02c9, 0x02d1, 0x02da, 0x02da, 0x02ea, 0x02ea, 0x02ea, - 0x02f3, 0x02fc, 0x02fc, 0x0304, 0x0308, 0x0308, 0x0314, 0x0314, - 0x031d, 0x031d, 0x031d, 0x031d, 0x031d, 0x0323, 0x0323, 0x0328, - 0x0330, 0x0336, 0x033a, 0x033a, 0x0341, 0x0341, 0x0341, 0x034e, - 0x0356, 0x0369, 0x0375, 0x037c, 0x0385, 0x0395, 0x03a9, 0x03af, - // Entry 80 - BF - 0x03b9, 0x03be, 0x03c9, 0x03cf, 0x03cf, 0x03d9, 0x03e4, 0x03eb, - 0x03eb, 0x03eb, 0x03eb, 0x03f6, 0x03f6, 0x03f6, 0x0401, 0x040d, - 0x0416, 0x0434, 0x044f, 0x046a, 0x0472, 0x0472, 0x0478, 0x0482, - 0x0489, 0x0489, 0x0491, 0x0497, 0x049e, 0x04a6, 0x04ad, 0x04b3, - 0x04b7, 0x04c0, 0x04c0, 0x04c9, 0x04cc, 0x04d7, 0x04d7, 0x04d7, - 0x04e4, 0x04fe, 0x0500, 0x0500, 0x0507, 0x051a, 0x051f, 0x0525, - 0x0537, 0x053d, 0x054a, - }, - }, - {}, // nnh - { // no - noScriptStr, - noScriptIdx, - }, - {}, // nus - {}, // nyn - { // om - "Latin", - []uint16{ // 81 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0005, - }, - }, - { // or - "ଆରବିକ୍ଇମ୍ପେରିଆଲ୍ ଆରମିକ୍ଆର୍ମେନିଆନ୍ଆବେସ୍ଥାନ୍ବାଲିନୀଜ୍ବାଟାକ୍ବଙ୍ଗାଳୀବ୍ଲିସିମ୍ବ" + - "ଲସ୍ବୋପୋମୋଫୋବ୍ରାହ୍ମୀବ୍ରେଲିବୁଗାନୀଜ୍ବୁହିଦ୍ଚକମାୟୁନିଫାଏଡ୍ କାନାଡିଆନ୍ ଆବ୍" + - "ରୋଜିନାଲ୍ ସିଲାବିକସ୍କୈରନ୍ଛମ୍ଚିରୁକୀସିର୍ଥକପଟିକ୍ସିପ୍ରଅଟ୍ସିରିଲିକ୍ଓଲ୍ଡ ଚର" + - "୍ଚ୍ଚ ସାଲଭୋନିକ୍ ସିରିଲିକ୍ଦେବନାଗରୀଡେସର୍ଟଇଜିପ୍ଟିଆନ୍ ଡେମୋଟିକ୍ଇଜିପ୍ଟିଆନ୍" + - " ହାଇଅରଟିକ୍ଇଜିପ୍ଟିଆନ୍ ହାଅରଗ୍ଲିପସ୍ଇଥୋପିକ୍ଜର୍ଜିଆନ୍ ଖୁଟସୁରୀଜର୍ଜିଆନ୍ଗ୍ଲାଗ" + - "୍ଲୋଟିକ୍ଗୋଥିକ୍ଗ୍ରୀକ୍ଗୁଜୁରାଟୀଗୁରୁମୁଖୀବୋପୋମୋଫୋ ସହିତ ହାନ୍\u200cହାଙ୍ଗୁଲ" + - "୍ହାନ୍ହାନୁନ୍ସରଳୀକୃତ ହାନ୍\u200cପାରମ୍ପରିକ ହାନ୍\u200cହେବ୍ର୍ୟୁହିରାଗାନାପ" + - "ାହୋ ହୋଙ୍ଗଜାପାନିଜ୍\u200c ସିଲ୍ଲାବେରିଜ୍\u200cପୁରୁଣା ହଙ୍ଗେରିଆନ୍ସିନ୍ଧୁପ" + - "ୁରୁଣା ଇଟାଲୀଜାମୋଜାଭାନୀଜ୍ଜାପାନୀଜ୍କାୟାହା ଲୀକାଟକାନ୍ଖାରୋସ୍ଥିଖାମେର୍କନ୍ନଡ" + - "କୋରିଆନ୍କୈଥିଲାନାଲାଓଫ୍ରାକଥୁର୍ ଲାଟିନ୍ଗାଏଲିକ୍ ଲାଟିନ୍ଲାଟିନ୍ଲେପଚାଲିମ୍ବୁଲ" + - "ିନିୟର୍ଲିନିୟର୍ ବିଲିଶିୟନ୍ଲିଡିୟନ୍ମାନଡେନ୍ମନଶୀନ୍ମୟାନ୍ ହାୟରଲଜିକସ୍ମେରୋଇଟି" + - "କ୍ମାଲୟଲମ୍ମଙ୍ଗୋଲିଆନ୍ଚନ୍ଦ୍ରମାଏତି ମାୟେକ୍ମିଆଁମାର୍\u200cଏନ୍ କୋଓଘାମାଓଲ୍ " + - "ଚିକିଓରୋଖନ୍ଓଡ଼ିଆଓସୋମାନିୟାଓଲ୍ଡ ପରମିକ୍ଫାଗସ୍-ପାଇନସ୍କ୍ରୀପସାନଲ୍ ପାହାଲାୱୀ" + - "ସ୍ଲାଟର୍ ପାହାଲାୱୀବୁକ୍ ପାହାଲାୱୀଫେନୋସିଆନ୍ପୋଲାର୍ଡ ଫୋନେଟିକ୍ଇନସ୍କ୍ରୀପସାନ" + - "ଲ୍ ପାର୍ଥିଆନ୍ରେଜାଙ୍ଗରୋଙ୍ଗୋରୋଙ୍ଗୋରନିକ୍ସମୌରିଟନ୍ସାରାତିସୌରାଷ୍ଟ୍ରସାଙ୍କେତ" + - "ିକ ଲିଖସାବିୟାନ୍ସିଂହଳସୁଦାନୀଜ୍ସୀଲିତୋ ନଗରୀସିରିୟାକ୍ଏଷ୍ଟ୍ରାଙ୍ଗେଲୋ ସିରିକ୍" + - "ୱେଷ୍ଟର୍ନ ସିରିକ୍ଇଷ୍ଟର୍ନ ସିରିକ୍ତଗବାନ୍ୱାତାଇ ଲେନୂତନ ତାଇ ଲୁଏତାମିଲତାଇ ଭି" + - "ଏତ୍ତେଲୁଗୁତେଙ୍ଗୱାର୍ତିଫିଙ୍ଘାଟାଗାଲୋଗ୍ଥାନାଥାଇତିବେତାନ୍ୟୁଗାରିଟିକ୍ୱାଇଭିଜି" + - "ବଲ୍ ସ୍ପିଚ୍ପୁରୁଣା ଫରାସୀସୁମେରୋ-ଆକ୍କାଡିଆନ୍ ସୁନିଫର୍ମୟୀବଂଶଗତଗାଣିତିକ ନୋଟ" + - "େସନ୍ଇମୋଜିସଙ୍କେତଗୁଡ଼ିକଅଲିଖିତସାଧାରଣଅଜଣା ଲିପି", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, - 0x007c, 0x0094, 0x0094, 0x0094, 0x00a6, 0x00bb, 0x00bb, 0x00df, - 0x00f7, 0x010f, 0x0121, 0x0139, 0x014b, 0x0157, 0x01cc, 0x01db, - 0x01e4, 0x01f6, 0x0205, 0x0217, 0x022f, 0x0247, 0x029b, 0x02b3, - 0x02c5, 0x02c5, 0x02fc, 0x0336, 0x0376, 0x0376, 0x038b, 0x03b9, - 0x03d1, 0x03f5, 0x03f5, 0x0407, 0x0407, 0x0419, 0x0431, 0x0449, - 0x047e, 0x0496, 0x04a2, 0x04b4, 0x04d9, 0x0504, 0x0504, 0x051c, - 0x0534, 0x0534, 0x0550, 0x0593, 0x05c4, 0x05d6, 0x05f8, 0x0604, - // Entry 40 - 7F - 0x061c, 0x0634, 0x0634, 0x064d, 0x0662, 0x067a, 0x068c, 0x068c, - 0x069b, 0x06b0, 0x06b0, 0x06bc, 0x06c8, 0x06d1, 0x06ff, 0x0727, - 0x0739, 0x0748, 0x075a, 0x076f, 0x078b, 0x078b, 0x078b, 0x07a0, - 0x07b5, 0x07b5, 0x07ca, 0x07dc, 0x07dc, 0x080a, 0x080a, 0x080a, - 0x0825, 0x083a, 0x083a, 0x0858, 0x086a, 0x086a, 0x088c, 0x088c, - 0x08a7, 0x08a7, 0x08a7, 0x08a7, 0x08a7, 0x08b7, 0x08b7, 0x08c6, - 0x08dc, 0x08ee, 0x08fd, 0x08fd, 0x0918, 0x0918, 0x0918, 0x0937, - 0x094d, 0x0990, 0x09be, 0x09e3, 0x09fe, 0x0a2c, 0x0a72, 0x0a87, - // Entry 80 - BF - 0x0aab, 0x0aba, 0x0ad2, 0x0ae4, 0x0ae4, 0x0aff, 0x0b24, 0x0b3c, - 0x0b3c, 0x0b3c, 0x0b3c, 0x0b4b, 0x0b4b, 0x0b4b, 0x0b63, 0x0b82, - 0x0b9a, 0x0bd4, 0x0bff, 0x0c27, 0x0c3f, 0x0c3f, 0x0c4f, 0x0c6f, - 0x0c7e, 0x0c7e, 0x0c97, 0x0ca9, 0x0cc4, 0x0cdc, 0x0cf4, 0x0d00, - 0x0d09, 0x0d21, 0x0d21, 0x0d3f, 0x0d48, 0x0d70, 0x0d70, 0x0d70, - 0x0d92, 0x0ddc, 0x0de2, 0x0de2, 0x0df1, 0x0e1c, 0x0e2b, 0x0e4f, - 0x0e61, 0x0e73, 0x0e8c, - }, - }, - { // os - "АраббагКиррилицӕӔнцонгонд китайагТрадицион китайагЛатинагНӕфысгӕНӕзонгӕ " + - "скрипт", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0041, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - // Entry 40 - 7F - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - // Entry 80 - BF - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, - 0x007e, 0x007e, 0x0099, - }, - }, - { // pa - paScriptStr, - paScriptIdx, - }, - { // pa-Arab - "عربیگُرمُکھی", - []uint16{ // 48 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0018, - }, - }, - { // pl - plScriptStr, - plScriptIdx, - }, - {}, // prg - { // ps - "عربيارمانیایيبنګلهبوپوموفوبریليسیریلیکدیواناګريایتوپيګرجستانيیونانيګجرات" + - "يګروميهن او بوپوفوموهنګوليهنساده هاندودیز هانعبرانيهیراګاناد جاپاني" + - " سیلابريجاموجاپانيکاتاکاناخمرکناډاکوریاییلاوولاتینمالایالممنګولیایيم" + - "یانماراویاسنهالاتامیلتیلیګوتهاناتایلنډيتبتيد ریاضیاتو نوټیشنایموجيس" + - "مبولونهناڅاپهعامنامعلومه سکرېپټ", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0024, 0x0024, 0x0024, - 0x0034, 0x0034, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x004c, 0x004c, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x006a, 0x006a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x0086, 0x0092, 0x009c, - 0x00b6, 0x00c2, 0x00c6, 0x00c6, 0x00d5, 0x00e6, 0x00e6, 0x00f2, - 0x0102, 0x0102, 0x0102, 0x0120, 0x0120, 0x0120, 0x0120, 0x0128, - // Entry 40 - 7F - 0x0128, 0x0134, 0x0134, 0x0134, 0x0144, 0x0144, 0x014a, 0x014a, - 0x0154, 0x0162, 0x0162, 0x0162, 0x0162, 0x016a, 0x016a, 0x016a, - 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, - 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, 0x0174, - 0x0174, 0x0184, 0x0184, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01a4, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, - 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, - // Entry 80 - BF - 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, - 0x01ac, 0x01ac, 0x01ac, 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01b8, - 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01b8, 0x01b8, - 0x01c2, 0x01c2, 0x01c2, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01d8, - 0x01e6, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, - 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x020e, 0x021a, 0x022a, - 0x0236, 0x023c, 0x0259, - }, - }, - { // pt - ptScriptStr, - ptScriptIdx, - }, - { // pt-PT - ptPTScriptStr, - ptPTScriptIdx, - }, - {}, // qu - { // rm - "arabarameic imperialarmenavesticbalinaisbatakbengalsimbols da Blissbopom" + - "ofobrahmiscrittira da Braillebuginaisbuhidchakmasimbols autoctons ca" + - "nadais unifitgadscarianchamcherokeecirthcopticcipriotcirillicslav da" + - " baselgia vegldevanagarideseretegipzian demoticegipzian ieraticierog" + - "lifas egipzianasetiopickutsurigeorgianglagoliticgoticgrecgujaratigur" + - "mukhihangulhanhanunooscrittira chinaisa simplifitgadascrittira china" + - "isa tradiziunalaebraichiraganapahawn hmongkatanaka u hiraganaungarai" + - "s veglindusitalic vegljavanaisgiapunaiskayah likatakanakharoshthikhm" + - "er/cambodschankannadacoreankaithilannalaotlatin (scrittira gotica)la" + - "tin (scrittira gaelica)latinlepchalimbulinear Alinear Blichiclidicma" + - "ndaicmanicheicieroglifas mayameroiticmalaisianmongolicmoonmeetei may" + - "ekburmaisn’kooghamol chikiorkhonoriyaosmanpermic veglphags-papahlavi" + - " dad inscripziunspahlavi da psalmspahlavi da cudeschsfenizianfonetic" + - "a da Pollardpartic dad inscripziunsrejangrongorongorunicsamaritansar" + - "atisaurashtralingua da segnsshaviansingalaissundanaissyloti nagrisir" + - "icsiric estrangelosiric dal vestsiric da l’osttagbanwatai letai luet" + - "amiltai viettelugutengwartifinaghtagalogthaanatailandaistibetanugari" + - "ticvaiialfabet visibelpersian veglscrittira a cugn sumeric-accadicay" + - "iertànotaziun matematicasimbolslinguas na scrittasbetg determinàscri" + - "ttira nunenconuschenta u nunvalaivla", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x0019, - 0x0020, 0x0028, 0x0028, 0x0028, 0x002d, 0x0033, 0x0033, 0x0043, - 0x004b, 0x0051, 0x0065, 0x006d, 0x0072, 0x0078, 0x009d, 0x00a3, - 0x00a7, 0x00af, 0x00b4, 0x00ba, 0x00c1, 0x00c9, 0x00de, 0x00e8, - 0x00ef, 0x00ef, 0x00ff, 0x010f, 0x0124, 0x0124, 0x012b, 0x0132, - 0x013a, 0x0144, 0x0144, 0x0149, 0x0149, 0x014d, 0x0155, 0x015d, - 0x015d, 0x0163, 0x0166, 0x016d, 0x018d, 0x01ac, 0x01ac, 0x01b2, - 0x01ba, 0x01ba, 0x01c6, 0x01d9, 0x01e6, 0x01eb, 0x01f6, 0x01f6, - // Entry 40 - 7F - 0x01fe, 0x0207, 0x0207, 0x020f, 0x0217, 0x0221, 0x0232, 0x0232, - 0x0239, 0x023f, 0x023f, 0x0245, 0x024a, 0x024e, 0x0266, 0x027f, - 0x0284, 0x028a, 0x028f, 0x0297, 0x029f, 0x029f, 0x029f, 0x02a5, - 0x02aa, 0x02aa, 0x02b1, 0x02ba, 0x02ba, 0x02c9, 0x02c9, 0x02c9, - 0x02d1, 0x02da, 0x02da, 0x02e2, 0x02e6, 0x02e6, 0x02f2, 0x02f2, - 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02ff, 0x02ff, 0x0304, - 0x030c, 0x0312, 0x0317, 0x0317, 0x031c, 0x031c, 0x031c, 0x0327, - 0x032f, 0x0347, 0x0358, 0x036b, 0x0373, 0x0386, 0x039d, 0x03a3, - // Entry 80 - BF - 0x03ad, 0x03b2, 0x03bb, 0x03c1, 0x03c1, 0x03cb, 0x03da, 0x03e1, - 0x03e1, 0x03e1, 0x03e1, 0x03ea, 0x03ea, 0x03ea, 0x03f3, 0x03ff, - 0x0404, 0x0414, 0x0422, 0x0432, 0x043a, 0x043a, 0x0440, 0x0447, - 0x044c, 0x044c, 0x0454, 0x045a, 0x0461, 0x0469, 0x0470, 0x0476, - 0x0480, 0x0487, 0x0487, 0x048f, 0x0493, 0x04a2, 0x04a2, 0x04a2, - 0x04ae, 0x04cf, 0x04d1, 0x04d1, 0x04d6, 0x04e9, 0x04e9, 0x04f0, - 0x0503, 0x0512, 0x053a, - }, - }, - {}, // rn - { // ro - roScriptStr, - roScriptIdx, - }, - {}, // ro-MD - {}, // rof - { // ru - ruScriptStr, - ruScriptIdx, - }, - {}, // ru-UA - {}, // rw - {}, // rwk - { // sah - "АрааптыыЭрмээннииНууччалыыГириэктииДьоппуоннууКэриэйдииЛатыынныыМоҕуоллу" + - "уТаайдыыСуруллубатахБиллибэт сурук", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - // Entry 40 - 7F - 0x0046, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - // Entry 80 - BF - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00b8, 0x00b8, 0x00d3, - }, - }, - {}, // saq - {}, // sbp - { // sd - "عربيعرمانيبنگلابوپوموفوبريليسيريليديوناگريايٿوپيائيجيورجيائييونانيگجراتي" + - "گرمکيبوپوموفو سان هينهنگولهينآسان ڪيل هينروايتي هينعبرانيهراگناجاپا" + - "ني لکتجاموجاپانيڪٽاڪاناخمرڪناڊاڪوريائيلائولاطينيمليالممنگوليميانمرا" + - "وڊياسنهالاتاملتلگوٿاناٿائيتبيتنرياضي جون نشانيونايموجينشانيوناڻ لکي" + - "لڪامناڻڄاتل لکت", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x001e, 0x001e, 0x001e, - 0x002e, 0x002e, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0044, 0x0044, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0066, 0x0066, - 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0084, 0x0090, 0x009a, - 0x00b8, 0x00c2, 0x00c8, 0x00c8, 0x00de, 0x00f1, 0x00f1, 0x00fd, - 0x0109, 0x0109, 0x0109, 0x011c, 0x011c, 0x011c, 0x011c, 0x0124, - // Entry 40 - 7F - 0x0124, 0x0130, 0x0130, 0x0130, 0x013e, 0x013e, 0x0144, 0x0144, - 0x014e, 0x015c, 0x015c, 0x015c, 0x015c, 0x0164, 0x0164, 0x0164, - 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, - 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, 0x0170, - 0x0170, 0x017c, 0x017c, 0x0188, 0x0188, 0x0188, 0x0188, 0x0188, - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, - 0x0194, 0x0194, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, - 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, - // Entry 80 - BF - 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, - 0x019e, 0x019e, 0x019e, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, - 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, 0x01aa, - 0x01b2, 0x01b2, 0x01b2, 0x01ba, 0x01ba, 0x01ba, 0x01ba, 0x01c2, - 0x01ca, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01d4, - 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01f4, 0x0200, 0x020e, - 0x021b, 0x0223, 0x0236, - }, - }, - { // se - "arábakyrillalašgreikkalašhangulkiinnašálkiárbevirolašhiraganakatakanaláh" + - "tenašorrut chállojuvvotdovdameahttun chállin", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001c, 0x001c, 0x001c, - 0x001c, 0x0022, 0x002a, 0x002a, 0x002f, 0x003c, 0x003c, 0x003c, - 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - // Entry 40 - 7F - 0x0044, 0x0044, 0x0044, 0x0044, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - // Entry 80 - BF - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0069, 0x0069, 0x007f, - }, - }, - { // se-FI - "arábalaškiinnálašálkes kiinnálašárbevirolaš kiinnálašorrut čállojuvvotdo" + - "vdameahttun čállin", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x0015, 0x0015, 0x0027, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - // Entry 40 - 7F - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - // Entry 80 - BF - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, - 0x0053, 0x0053, 0x0069, - }, - }, - {}, // seh - {}, // ses - {}, // sg - {}, // shi - {}, // shi-Latn - { // si - siScriptStr, - siScriptIdx, - }, - { // sk - skScriptStr, - skScriptIdx, - }, - { // sl - slScriptStr, - slScriptIdx, - }, - {}, // smn - {}, // sn - { // so - "Aan la qorinFar aan la aqoon amase aan saxnayn", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000c, 0x000c, 0x002e, - }, - }, - { // sq - sqScriptStr, - sqScriptIdx, - }, - { // sr - srScriptStr, - srScriptIdx, - }, - {}, // sr-Cyrl-BA - {}, // sr-Cyrl-ME - {}, // sr-Cyrl-XK - { // sr-Latn - srLatnScriptStr, - srLatnScriptIdx, - }, - {}, // sr-Latn-BA - {}, // sr-Latn-ME - {}, // sr-Latn-XK - { // sv - svScriptStr, - svScriptIdx, - }, - {}, // sv-FI - { // sw - swScriptStr, - swScriptIdx, - }, - {}, // sw-CD - {}, // sw-KE - { // ta - taScriptStr, - taScriptIdx, - }, - { // te - teScriptStr, - teScriptIdx, - }, - {}, // teo - { // tg - "АрабӣКириллӣХани осонфаҳмХани анъанавӣЛотинӣНонавиштаСкрипти номаълум", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0031, 0x004a, 0x004a, 0x004a, - 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, - // Entry 40 - 7F - 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, - 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, 0x004a, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - // Entry 80 - BF - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0068, 0x0068, 0x0087, - }, - }, - { // th - thScriptStr, - thScriptIdx, - }, - { // ti - "ፊደልላቲን", - []uint16{ // 81 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - // Entry 40 - 7F - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0012, - }, - }, - { // tk - "Arap elipbiýiErmeni elipbiýiBengal elipbiýiBopomofo elipbiýiBraýl elipbi" + - "ýiKiril elipbiýiDewanagari elipbiýiEfiop elipbiýiGruzin elipbiýiGre" + - "k elipbiýiGujarati elipbiýiGurmuhi elipbiýiBopomofo han elipbiýiHang" + - "yl elipbiýiHan elipbiýiÝönekeýleşdirilen han elipbiýiAdaty han elipb" + - "iýiÝewreý elipbiýiHiragana elipbiýiÝapon bogun elipbiýleriJamo elipb" + - "iýiÝapon elipbiýiKatakana elipbiýiKhmer elipbiýiKannada elipbiýiKore" + - "ý elipbiýiLaos elipbiýiLatyn elipbiýiMalaýalam elipbiýiMongol elipb" + - "iýiMýanma elipbiýiOriýa elipbiýiSingal elipbiýiTamil elipbiýiTelugu " + - "elipbiýiTaana elipbiýiTaý elipbiýiTibet elipbiýiMatematiki belgilerE" + - "mojiNyşanlarÝazuwsyzUmumyNäbelli elipbiý", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002e, 0x002e, 0x002e, - 0x0040, 0x0040, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x005f, 0x005f, 0x0073, - 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0082, 0x0082, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x00a0, 0x00b2, 0x00c3, - 0x00d9, 0x00e9, 0x00f6, 0x00f6, 0x0119, 0x012c, 0x012c, 0x013e, - 0x0150, 0x0150, 0x0150, 0x0169, 0x0169, 0x0169, 0x0169, 0x0177, - // Entry 40 - 7F - 0x0177, 0x0187, 0x0187, 0x0187, 0x0199, 0x0199, 0x01a8, 0x01a8, - 0x01b9, 0x01c9, 0x01c9, 0x01c9, 0x01c9, 0x01d7, 0x01d7, 0x01d7, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01fa, 0x01fa, 0x020a, 0x020a, 0x020a, 0x020a, 0x020a, - 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x021b, 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, - 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, - // Entry 80 - BF - 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, 0x022b, - 0x022b, 0x022b, 0x022b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, - 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, 0x023b, - 0x024a, 0x024a, 0x024a, 0x025a, 0x025a, 0x025a, 0x025a, 0x0269, - 0x0277, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, - 0x0286, 0x0286, 0x0286, 0x0286, 0x0286, 0x0299, 0x029e, 0x02a7, - 0x02b0, 0x02b5, 0x02c6, - }, - }, - { // to - "tohinima fakaʻafakatohinima fakaʻalapēnia-kaukasiatohinima fakaʻalepeato" + - "hinima fakaʻalāmiti-ʻemipaeatohinima fakaʻāmeniatohinima fakaʻavesit" + - "anitohinima fakapalitohinima fakapamumitohinima fakapasa-vātohinima " + - "fakapātakitohinima fakapāngilātohinima fakaʻilonga-pilisitohinima fa" + - "kapopomofotohinima fakapalāmītohinima laukonga ki he kuitohinima fak" + - "apukisitohinima fakapuhititohinima fakasakimātohinima fakatupuʻi-kān" + - "ata-fakatahatahatohinima fakakalitohinima fakasamitohinima fakaselok" + - "ītohinima fakakīlititohinima fakakopitikatohinima fakasaipalesitohi" + - "nima fakalūsiatohinima fakalūsia-lotu-motuʻatohinima fakaʻinitia-tev" + - "anākalītohinima fakateseletitohinimanounou fakatupoloiētohinima temo" + - "tika-fakaʻisipitetohinima hielatika-fakaʻisipitetohinima tongitapu-f" + - "akaʻisipitetohinima fakaʻelepasanitohinima fakaʻītiōpiatohinima faka" + - "kutusuli-seōsiatohinima fakaseōsiatohinima fakakalakolititohinima fa" + - "kakotikatohinima fakasilanitātohinima fakakalisitohinima fakaʻinitia" + - "-kutalatitohinima fakakūmukitohinima fakahānipitohinima fakakōlea-hā" + - "ngūlutohinima fakasiainatohinima fakahanunōʻotohinima fakasiaina-fak" + - "afaingofuatohinima fakasiaina-tukufakaholotohinima fakahepelūtohinim" + - "a fakasiapani-hilakanatohinima tongitapu-fakaʻanatoliatohinima fakap" + - "ahaumongitohinima fakasilapa-siapanitohinima fakahungakalia-motuʻato" + - "hinima fakaʻinitusitohinima fakaʻītali-motuʻatohinima fakasamotohini" + - "ma fakasavatohinima fakasiapanitohinima fakaiūkenitohinima fakakaial" + - "ītohinima fakasiapani-katakanatohinima fakakalositītohinima fakakam" + - "ipōtiatohinima fakakosikītohinima fakaʻinitia-kanatatohinima fakakōl" + - "eatohinima fakakepeletohinima fakakaiatītohinima fakalanatohinima fa" + - "kalautohinima fakalatina-falakitulitohinima fakalatina-kaelikitohini" + - "ma fakalatinatohinima fakalepasātohinima fakalimipūtohinima fakaline" + - "a-Atohinima fakalinea-Ptohinima fakafalāsetohinima fakalomatohinima " + - "fakalīsiatohinima fakalītiatohinima fakamahasanitohinima fakamanitae" + - "atohinima fakamanikaeatohinima tongitapu fakamaiatohinima fakamēniti" + - "tohinima fakameloue-heiheitohinima fakamelouetohinima fakaʻinitia-ma" + - "lāialamitohinima fakamotītohinima fakamongokōliatohinima laukonga ki" + - " he kui-māhinatohinima fakamolōtohinima fakametei-maiekitohinima fak" + - "apematohinima fakaʻalepea-tokelau-motuʻatohinima fakanapateatohinima" + - " fakanati-sepatohinima fakanikōtohinima fakanasiūtohinima fakaʻokami" + - "tohinima fakaʻolisikitohinima fakaʻolikonitohinima fakaʻotiatohinima" + - " fakaʻosimāniatohinima fakapalamilenetohinima fakapausinihautohinima" + - " fakapēmi-motuʻatohinima fakapākisipātohinima fakapālavi-tongitohini" + - "ma fakapālavi-saametohinima fakapālavi-tohitohinima fakafoinikiatohi" + - "nima fakafonētiki-polātitohinima fakapātia-tongitohinima fakalesiang" + - "itohinima fakalongolongotohinima fakalunikitohinima fakasamalitaneto" + - "hinima fakasalatitohinima fakaʻalepea-tonga-motuʻatohinima fakasaula" + - "sitātohinima fakaʻilonga-tohitohinima fakasiavitohinima fakasiālatāt" + - "ohinima fakasititamitohinima fakakutauātitohinima fakasingihalatohin" + - "ima fakasolasomipengitohinima fakasunitātohinima fakasailoti-nakilit" + - "ohinima fakasuliāiātohinima fakasuliāiā-ʻesitelangelotohinima fakasu" + - "liāiā-hihifotohinima fakasuliāiā-hahaketohinima fakatakipaneuātohini" + - "ma fakatakilitohinima fakatai-luetohinima fakatai-lue-foʻoutohinima " + - "fakatamilitohinima fakatangutitohinima fakatai-vietitohinima fakaʻin" + - "itia-telukutohinima fakatengiualitohinima fakatifinākitohinima fakat" + - "akalokatohinima fakatānatohinima fakatailanitohinima fakataipetitohi" + - "nima fakatīhutatohinima fakaʻūkalititohinima fakavaitohinima fakafon" + - "ētiki-hāmaitohinima fakavalangi-kisitītohinima fakauoleaitohinima f" + - "akapēsiamuʻatohinima fakamataʻingahau-sumelo-akatiatohinima fakaīīto" + - "hinima hokositohinima fakamatematikatohinima fakatātātohinima fakaʻi" + - "longatohinima taʻetohitohiʻitohinima fakatatautohinima taʻeʻiloa", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0014, 0x0035, 0x0035, 0x004a, 0x006b, 0x0081, - 0x0099, 0x00aa, 0x00bd, 0x00d2, 0x00e6, 0x00fc, 0x00fc, 0x0118, - 0x012d, 0x0142, 0x015d, 0x0170, 0x0183, 0x0197, 0x01c0, 0x01d1, - 0x01e2, 0x01f6, 0x020a, 0x021f, 0x0235, 0x0248, 0x0268, 0x028a, - 0x029f, 0x02bb, 0x02da, 0x02fa, 0x031a, 0x0332, 0x034a, 0x0367, - 0x037b, 0x0392, 0x0392, 0x03a5, 0x03bb, 0x03ce, 0x03ec, 0x0400, - 0x0414, 0x0431, 0x0444, 0x045b, 0x047c, 0x049c, 0x049c, 0x04b0, - 0x04cd, 0x04ee, 0x0505, 0x0520, 0x053f, 0x0555, 0x0572, 0x0583, - // Entry 40 - 7F - 0x0594, 0x05a8, 0x05bc, 0x05d0, 0x05ed, 0x0603, 0x061a, 0x062e, - 0x064a, 0x065d, 0x0670, 0x0684, 0x0695, 0x06a5, 0x06c3, 0x06de, - 0x06f1, 0x0705, 0x0719, 0x072d, 0x0741, 0x0755, 0x0766, 0x0779, - 0x078c, 0x07a1, 0x07b6, 0x07cb, 0x07cb, 0x07e6, 0x07fa, 0x0814, - 0x0827, 0x0848, 0x085a, 0x0872, 0x0895, 0x08a7, 0x08c0, 0x08c0, - 0x08d1, 0x08f6, 0x090a, 0x090a, 0x0920, 0x0932, 0x0945, 0x0959, - 0x096f, 0x0985, 0x0998, 0x0998, 0x09b0, 0x09c7, 0x09de, 0x09f8, - 0x0a0f, 0x0a29, 0x0a43, 0x0a5c, 0x0a71, 0x0a8f, 0x0aa8, 0x0abd, - // Entry 80 - BF - 0x0ad4, 0x0ae7, 0x0afe, 0x0b11, 0x0b34, 0x0b4b, 0x0b65, 0x0b77, - 0x0b8d, 0x0ba2, 0x0bb8, 0x0bce, 0x0be8, 0x0be8, 0x0bfc, 0x0c17, - 0x0c2d, 0x0c52, 0x0c6f, 0x0c8c, 0x0ca4, 0x0cb7, 0x0ccb, 0x0ce6, - 0x0cf9, 0x0d0d, 0x0d23, 0x0d3f, 0x0d55, 0x0d6b, 0x0d80, 0x0d92, - 0x0da6, 0x0dba, 0x0dce, 0x0de5, 0x0df5, 0x0e12, 0x0e2e, 0x0e41, - 0x0e59, 0x0e81, 0x0e92, 0x0e92, 0x0ea1, 0x0eb8, 0x0ecb, 0x0ee0, - 0x0ef9, 0x0f0b, 0x0f1f, - }, - }, - { // tr - trScriptStr, - trScriptIdx, - }, - { // tt - "гарәпкириллгадиләштерелгән кытайтрадицион кытайлатинязусызбилгесез язу", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0016, 0x0016, 0x0016, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, - 0x0016, 0x0016, 0x0016, 0x0016, 0x003f, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - // Entry 40 - 7F - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, 0x005c, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - // Entry 80 - BF - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0072, 0x0072, 0x0089, - }, - }, - {}, // twq - {}, // tzm - { // ug - "ئافاكائەرەبخان جەمەتى ئارامۇئەرمەنئاۋېستابالىبامۇمباسساباتاكبېنگالبىلىس " + - "بەلگىلىرىخەنچە پىنيىنبراخمىبرائىل ئەمالار يېزىقىبۇگىبۇخىتچاكمابىرلى" + - "ككە كەلگەن كانادا يەرلىك بوغۇم جەدۋىلىكارىياچامچېروكىكىرسچەكوپتىكسى" + - "پرۇسكىرىلقەدىمكى چىركاۋ سىلاۋيانچە كىرىلدېۋاناگارىدېزېرېتدۇپلويان ت" + - "ېز خاتىرىلەشدېموتىكچە مىسىرخىيەراتىكچە مىسىرتەسۋىرىي يېزىق مىسىرئېف" + - "ىيوپىيەچەخۇتسۇرى گىرۇزىنچەگىرۇزىنچەگىلاگوتچەگوتچەگىرانتاچەگىرېكچەگۇ" + - "جاراتچەگۇرمۇكىچەخەنچەخانۇنۇچەئاددىي خەنچەمۇرەككەپ خەنچەئىبرانىچەخىر" + - "اگانائاناتولىيە تەسۋىرىي يېزىقمۆڭچەياپونچە خىراگانا ياكى كاتاكاناقە" + - "دىمكى ماجارچەئىندۇسچەقەدىمكى ئىتاليانچەياۋاچەياپونچەجۇرچېنچەكاياھچە" + - "كاتاكاناكاروشتىچەكېخمېرچەخوجكىچەكانناداچەكورېيەچەكپېللېچەكاياتىچەلا" + - "نناچەلائوسچەفىراكتۇر لاتىنچەسىكوت لاتىنچەلاتىنچەلەپچاچەلىمبۇچەسىزىق" + - "لىق Aسىزىقلىق Bفراسېرچەلوماچەلىسىيانچەلىدىيەچەماندائىكچەمانەكېزەمچە" + - "ماياچە تەسۋىرىي يېزىقمېندېچەمېتروئىت يازمىچەمېتروئىتمالايامچەموڭغۇل" + - "چەكورىيەمروچەمانىپۇرىچەبىرماچەقەدىمكى شىمالىي ئەرەبچەئانباتچەناشىچە" + - "نىكوچەنۈشۇچەئوگەمچەئول-چىكىچەئورخۇنچەئورىياچەئوسمانيەپالمىراچەقەدىم" + - "كى پېرمىكچەپاسپاچەپەھلىۋىچە ئويما خەتپەھلىۋىچە شېئىرىي تىلپەھلىۋىچە" + - " كىتابى تىلفىنىكچەپوللارد تاۋۇشلىرىپارتىئانچە ئويما خەترېجاڭچەروڭگور" + - "وڭگورۇنىكچەسامارىچەساراتىچەقەدىمكى جەنۇبى ئەرەبچەسائۇراشتىراچەئىشار" + - "ەت تىلىشاۋىيانچەشاراداچەكۇداۋادچەسىنخالاچەسورا سامپىڭسۇنداچەسىيولوت" + - "ى-ناگرىچەسۈرىيەچەسۈرىيەچە ئەبجەتغەربىي سۈرىيەچەشەرقىي سۈرىيەچەتاگبا" + - "نۋاچەتاكرىچەتاي-لەچەيېڭى تاي-لەچەتامىلچەتاڭغۇتچەتايلاندچە-ۋىيېتنامچ" + - "ەتېلۇگۇچەتېڭۋارچەتىفىناغچەتاگالوگچەتاناچەتايلاندچەتىبەتچەتىرخۇتاچەئ" + - "ۇگارىتىكچەۋايچەكۆرۈنۈشچان تاۋۇشۋاراڭ كىشىتىۋولىئايقەدىمكى پارىسچەسۇ" + - "مېر-ئاككادىيان مىخ خەتيىچەئىرسىيەت ئاتالغۇماتېماتىكىلىق بەلگەبەلگەي" + - "ېزىلمىغانئورتاقيوچۇن يېزىق", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x0016, 0x0036, 0x0042, - 0x0050, 0x0058, 0x0062, 0x006c, 0x0076, 0x0082, 0x0082, 0x009f, - 0x00b6, 0x00c2, 0x00ea, 0x00f2, 0x00fc, 0x0106, 0x0157, 0x0163, - 0x0169, 0x0175, 0x0181, 0x018d, 0x0199, 0x01a3, 0x01de, 0x01f2, - 0x0200, 0x022a, 0x0247, 0x0268, 0x028e, 0x028e, 0x02a6, 0x02c7, - 0x02d9, 0x02eb, 0x02eb, 0x02f5, 0x0307, 0x0315, 0x0327, 0x0339, - 0x0339, 0x0339, 0x0343, 0x0353, 0x036a, 0x0385, 0x0385, 0x0397, - 0x03a7, 0x03d7, 0x03e1, 0x041a, 0x0437, 0x0447, 0x046a, 0x046a, - // Entry 40 - 7F - 0x0476, 0x0484, 0x0494, 0x04a2, 0x04b2, 0x04c4, 0x04d4, 0x04e2, - 0x04f4, 0x0504, 0x0514, 0x0524, 0x0532, 0x0540, 0x055f, 0x0578, - 0x0586, 0x0594, 0x05a2, 0x05b4, 0x05c6, 0x05d6, 0x05e2, 0x05f4, - 0x0604, 0x0604, 0x0618, 0x062e, 0x062e, 0x0656, 0x0664, 0x0683, - 0x0693, 0x06a5, 0x06a5, 0x06b5, 0x06c1, 0x06cb, 0x06df, 0x06df, - 0x06ed, 0x0719, 0x0729, 0x0729, 0x0735, 0x0741, 0x074d, 0x075b, - 0x076e, 0x077e, 0x078e, 0x078e, 0x079e, 0x07b0, 0x07b0, 0x07cf, - 0x07dd, 0x0801, 0x0829, 0x084f, 0x085d, 0x087e, 0x08a4, 0x08b2, - // Entry 80 - BF - 0x08c6, 0x08d4, 0x08e4, 0x08f4, 0x091e, 0x0938, 0x094f, 0x0961, - 0x0971, 0x0971, 0x0983, 0x0995, 0x09aa, 0x09aa, 0x09b8, 0x09d7, - 0x09e7, 0x0a04, 0x0a21, 0x0a3e, 0x0a52, 0x0a60, 0x0a6f, 0x0a87, - 0x0a95, 0x0aa5, 0x0acc, 0x0adc, 0x0aec, 0x0afe, 0x0b10, 0x0b1c, - 0x0b2e, 0x0b3c, 0x0b4e, 0x0b64, 0x0b6e, 0x0b8d, 0x0ba4, 0x0bb2, - 0x0bcf, 0x0bfc, 0x0c04, 0x0c04, 0x0c23, 0x0c48, 0x0c48, 0x0c52, - 0x0c66, 0x0c72, 0x0c87, - }, - }, - { // uk - ukScriptStr, - ukScriptIdx, - }, - { // ur - urScriptStr, - urScriptIdx, - }, - {}, // ur-IN - { // uz - uzScriptStr, - uzScriptIdx, - }, - { // uz-Arab - "عربی", - []uint16{ // 6 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, - }, - }, - { // uz-Cyrl - "АрабАрманБенгалиБопомофоБраиллеКирилДевангариҲабашГрузинЮнонГужаратиГурм" + - "ухиХангулХанСоддалаштирилганАнъанавийИбронийХираганаЯпонКатаканаХме" + - "рКаннадаКорейсЛаоЛотинМалайаламМўғулчаМьянмаОрияСинхалаТамилТелугуТ" + - "аанаТайТибетРамзларЁзилмаганУмумийНомаълум шрифт", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0020, 0x0020, 0x0020, - 0x0030, 0x0030, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x0048, 0x0048, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0064, 0x0064, - 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0078, 0x0088, 0x0096, - 0x0096, 0x00a2, 0x00a8, 0x00a8, 0x00c8, 0x00da, 0x00da, 0x00e8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - // Entry 40 - 7F - 0x00f8, 0x0100, 0x0100, 0x0100, 0x0110, 0x0110, 0x0118, 0x0118, - 0x0126, 0x0132, 0x0132, 0x0132, 0x0132, 0x0138, 0x0138, 0x0138, - 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, - 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, - 0x0142, 0x0154, 0x0154, 0x0162, 0x0162, 0x0162, 0x0162, 0x0162, - 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, 0x016e, - 0x016e, 0x016e, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - // Entry 80 - BF - 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - 0x0176, 0x0176, 0x0176, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, - 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, 0x0184, - 0x018e, 0x018e, 0x018e, 0x019a, 0x019a, 0x019a, 0x019a, 0x01a4, - 0x01aa, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, - 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01b4, 0x01c2, - 0x01d4, 0x01e0, 0x01fb, - }, - }, - {}, // vai - {}, // vai-Latn - { // vi - viScriptStr, - viScriptIdx, - }, - {}, // vun - { // wae - "ArabišArmenišBengališKirillišDevanagariEthiopišGeorgišGričišGujaratiVere" + - "ifačtTraditionellHebräišJapanišKhmerKannadaKorianišLaotišLatinišMala" + - "isišBurmesišOriyaSingalesišTamilišTeluguThánaThaiSchriftlosUnkodiert" + - "i Schrift", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0021, 0x0021, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x0034, 0x0034, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x0044, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x004c, 0x0056, 0x0062, 0x0062, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - // Entry 40 - 7F - 0x006b, 0x0073, 0x0073, 0x0073, 0x0073, 0x0073, 0x0078, 0x0078, - 0x007f, 0x0088, 0x0088, 0x0088, 0x0088, 0x008f, 0x008f, 0x008f, - 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, - 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, - 0x0097, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, - 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - // Entry 80 - BF - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, - 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, - 0x00c1, 0x00c1, 0x00c1, 0x00c7, 0x00c7, 0x00c7, 0x00c7, 0x00cd, - 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, - 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d1, - 0x00db, 0x00db, 0x00ed, - }, - }, - { // wo - "AraabSirilikHan buñ woyofalHan u cosaanLatinLuñ bindulMbind muñ xamul", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x001c, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - // Entry 40 - 7F - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - // Entry 80 - BF - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x0038, 0x0038, 0x0048, - }, - }, - {}, // xog - {}, // yav - { // yi - "אַראַבישצירילישדעוואַנאַגאַריגריכישהעברעישגַלחיש", - []uint16{ // 81 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001e, 0x001e, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - // Entry 40 - 7F - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - 0x0060, - }, - }, - {}, // yo - {}, // yo-BJ - { // yue - "阿法卡文字高加索阿爾巴尼亞文阿拉伯文皇室亞美尼亞文亞美尼亞文阿維斯陀文峇里文巴姆穆文巴薩文巴塔克文孟加拉文布列斯文注音符號婆羅米文盲人用點字布吉" + - "斯文布希德文查克馬文加拿大原住民通用字符卡里亞文占文柴羅基文色斯文科普特文塞浦路斯文斯拉夫文西里爾文(古教會斯拉夫文變體)天城文德瑟" + - "雷特文杜普洛伊速記古埃及世俗體古埃及僧侶體古埃及象形文字愛爾巴桑文衣索比亞文喬治亞語系(阿索他路里和努斯克胡里文)喬治亞文格拉哥里文" + - "歌德文格蘭他文字希臘文古吉拉特文古魯穆奇文漢語注音韓文字漢語哈努諾文簡體中文繁體中文希伯來文平假名安那托利亞象形文字楊松錄苗文片假名" + - "或平假名古匈牙利文印度河流域(哈拉帕文)古意大利文韓文字母爪哇文日文女真文字克耶李文片假名卡羅須提文高棉文克吉奇文字坎那達文韓文克培" + - "列文凱提文藍拿文寮國文拉丁文(尖角體活字變體)拉丁文(蓋爾語變體)拉丁文雷布查文林佈文線性文字(A)線性文字(B)栗僳文洛馬文呂西亞" + - "語里底亞語曼底安文摩尼教文瑪雅象形文字門德文麥羅埃文(曲線字體)麥羅埃文馬來亞拉姆文蒙古文蒙氏點字謬文曼尼普爾文緬甸文古北阿拉伯文納" + - "巴泰文字納西格巴文西非書面語言 (N’Ko)女書文字歐甘文桑塔利文鄂爾渾文歐利亞文歐斯曼亞文帕米瑞拉文字古彼爾姆諸文八思巴文巴列維文" + - "(碑銘體)巴列維文(聖詩體)巴列維文(書體)腓尼基文柏格理拼音符帕提亞文(碑銘體)拉讓文朗格朗格象形文古北歐文字撒馬利亞文沙拉堤文古" + - "南阿拉伯文索拉什特拉文手語書寫符號簫柏納字符夏拉達文悉曇文字信德文錫蘭文索朗桑朋文字巽他文希洛弟納格里文敍利亞文敘利亞文(福音體文字" + - "變體)敘利亞文(西方文字變體)敘利亞文(東方文字變體)南島文塔卡里文字傣哪文西雙版納新傣文坦米爾文西夏文傣擔文泰盧固文談格瓦文提非納" + - "文塔加拉文塔安那文泰文西藏文邁蒂利文烏加列文瓦依文視覺語音文字瓦郎奇蒂文字沃雷艾文古波斯文蘇米魯亞甲文楔形文字彞文繼承文字(Unic" + - "ode)數學符號表情符號符號非書寫語言一般文字未知文字", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000f, 0x002a, 0x002a, 0x0036, 0x004b, 0x005a, - 0x0069, 0x0072, 0x007e, 0x0087, 0x0093, 0x009f, 0x009f, 0x00ab, - 0x00b7, 0x00c3, 0x00d2, 0x00de, 0x00ea, 0x00f6, 0x0114, 0x0120, - 0x0126, 0x0132, 0x013b, 0x0147, 0x0156, 0x0162, 0x018f, 0x0198, - 0x01a7, 0x01b9, 0x01cb, 0x01dd, 0x01f2, 0x0201, 0x0210, 0x0249, - 0x0255, 0x0264, 0x0264, 0x026d, 0x027c, 0x0285, 0x0294, 0x02a3, - 0x02af, 0x02b8, 0x02be, 0x02ca, 0x02d6, 0x02e2, 0x02e2, 0x02ee, - 0x02f7, 0x0312, 0x0321, 0x0336, 0x0345, 0x0366, 0x0375, 0x0381, - // Entry 40 - 7F - 0x038a, 0x0390, 0x039c, 0x03a8, 0x03b1, 0x03c0, 0x03c9, 0x03d8, - 0x03e4, 0x03ea, 0x03f6, 0x03ff, 0x0408, 0x0411, 0x0435, 0x0453, - 0x045c, 0x0468, 0x0471, 0x0484, 0x0497, 0x04a0, 0x04a9, 0x04b5, - 0x04c1, 0x04c1, 0x04cd, 0x04d9, 0x04d9, 0x04eb, 0x04f4, 0x0512, - 0x051e, 0x0530, 0x0530, 0x0539, 0x0545, 0x054b, 0x055a, 0x055a, - 0x0563, 0x0575, 0x0584, 0x0584, 0x0593, 0x05ae, 0x05ba, 0x05c3, - 0x05cf, 0x05db, 0x05e7, 0x05e7, 0x05f6, 0x0608, 0x0608, 0x061a, - 0x0626, 0x0641, 0x065c, 0x0674, 0x0680, 0x0692, 0x06ad, 0x06b6, - // Entry 80 - BF - 0x06cb, 0x06da, 0x06e9, 0x06f5, 0x0707, 0x0719, 0x072b, 0x073a, - 0x0746, 0x0752, 0x075b, 0x0764, 0x0776, 0x0776, 0x077f, 0x0794, - 0x07a0, 0x07c7, 0x07eb, 0x080f, 0x0818, 0x0827, 0x0830, 0x0845, - 0x0851, 0x085a, 0x0863, 0x086f, 0x087b, 0x0887, 0x0893, 0x089f, - 0x08a5, 0x08ae, 0x08ba, 0x08c6, 0x08cf, 0x08e1, 0x08f3, 0x08ff, - 0x090b, 0x0929, 0x092f, 0x092f, 0x0948, 0x0954, 0x0960, 0x0966, - 0x0975, 0x0981, 0x098d, - }, - }, - { // yue-Hans - "阿法卡文字高加索阿尔巴尼亚文阿拉伯文皇室亚美尼亚文亚美尼亚文阿维斯陀文峇里文巴姆穆文巴萨文巴塔克文孟加拉文布列斯文注音符号婆罗米文盲人用点字布吉" + - "斯文布希德文查克马文加拿大原住民通用字符卡里亚文占文柴罗基文色斯文科普特文塞浦路斯文斯拉夫文西里尔文(古教会斯拉夫文变体)天城文德瑟" + - "雷特文杜普洛伊速记古埃及世俗体古埃及僧侣体古埃及象形文字爱尔巴桑文衣索比亚文乔治亚语系(阿索他路里和努斯克胡里文)乔治亚文格拉哥里文" + - "歌德文格兰他文字希腊文古吉拉特文古鲁穆奇文汉语注音韩文字汉语哈努诺文简体中文繁体中文希伯来文平假名安那托利亚象形文字杨松录苗文片假名" + - "或平假名古匈牙利文印度河流域(哈拉帕文)古意大利文韩文字母爪哇文日文女真文字克耶李文片假名卡罗须提文高棉文克吉奇文字坎那达文韩文克培" + - "列文凯提文蓝拿文寮国文拉丁文(尖角体活字变体)拉丁文(盖尔语变体)拉丁文雷布查文林布文线性文字(A)线性文字(B)栗僳文洛马文吕西亚" + - "语里底亚语曼底安文摩尼教文玛雅象形文字门德文麦罗埃文(曲线字体)麦罗埃文马来亚拉姆文蒙古文蒙氏点字谬文曼尼普尔文缅甸文古北阿拉伯文纳" + - "巴泰文字纳西格巴文西非书面语言 (N’Ko)女书文字欧甘文桑塔利文鄂尔浑文欧利亚文欧斯曼亚文帕米瑞拉文字古彼尔姆诸文八思巴文巴列维文" + - "(碑铭体)巴列维文(圣诗体)巴列维文(书体)腓尼基文柏格理拼音符帕提亚文(碑铭体)拉让文朗格朗格象形文古北欧文字撒马利亚文沙拉堤文古" + - "南阿拉伯文索拉什特拉文手语书写符号箫柏纳字符夏拉达文悉昙文字信德文锡兰文索朗桑朋文字巽他文希洛弟纳格里文敍利亚文叙利亚文(福音体文字" + - "变体)叙利亚文(西方文字变体)叙利亚文(东方文字变体)南岛文塔卡里文字傣哪文西双版纳新傣文坦米尔文西夏文傣担文泰卢固文谈格瓦文提非纳" + - "文塔加拉文塔安那文泰文西藏文迈蒂利文乌加列文瓦依文视觉语音文字瓦郎奇蒂文字沃雷艾文古波斯文苏米鲁亚甲文楔形文字彝文继承文字(Unic" + - "ode)数学符号表情符号符号非书写语言一般文字未知文字", - []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000f, 0x002a, 0x002a, 0x0036, 0x004b, 0x005a, - 0x0069, 0x0072, 0x007e, 0x0087, 0x0093, 0x009f, 0x009f, 0x00ab, - 0x00b7, 0x00c3, 0x00d2, 0x00de, 0x00ea, 0x00f6, 0x0114, 0x0120, - 0x0126, 0x0132, 0x013b, 0x0147, 0x0156, 0x0162, 0x018f, 0x0198, - 0x01a7, 0x01b9, 0x01cb, 0x01dd, 0x01f2, 0x0201, 0x0210, 0x0249, - 0x0255, 0x0264, 0x0264, 0x026d, 0x027c, 0x0285, 0x0294, 0x02a3, - 0x02af, 0x02b8, 0x02be, 0x02ca, 0x02d6, 0x02e2, 0x02e2, 0x02ee, - 0x02f7, 0x0312, 0x0321, 0x0336, 0x0345, 0x0366, 0x0375, 0x0381, - // Entry 40 - 7F - 0x038a, 0x0390, 0x039c, 0x03a8, 0x03b1, 0x03c0, 0x03c9, 0x03d8, - 0x03e4, 0x03ea, 0x03f6, 0x03ff, 0x0408, 0x0411, 0x0435, 0x0453, - 0x045c, 0x0468, 0x0471, 0x0484, 0x0497, 0x04a0, 0x04a9, 0x04b5, - 0x04c1, 0x04c1, 0x04cd, 0x04d9, 0x04d9, 0x04eb, 0x04f4, 0x0512, - 0x051e, 0x0530, 0x0530, 0x0539, 0x0545, 0x054b, 0x055a, 0x055a, - 0x0563, 0x0575, 0x0584, 0x0584, 0x0593, 0x05ae, 0x05ba, 0x05c3, - 0x05cf, 0x05db, 0x05e7, 0x05e7, 0x05f6, 0x0608, 0x0608, 0x061a, - 0x0626, 0x0641, 0x065c, 0x0674, 0x0680, 0x0692, 0x06ad, 0x06b6, - // Entry 80 - BF - 0x06cb, 0x06da, 0x06e9, 0x06f5, 0x0707, 0x0719, 0x072b, 0x073a, - 0x0746, 0x0752, 0x075b, 0x0764, 0x0776, 0x0776, 0x077f, 0x0794, - 0x07a0, 0x07c7, 0x07eb, 0x080f, 0x0818, 0x0827, 0x0830, 0x0845, - 0x0851, 0x085a, 0x0863, 0x086f, 0x087b, 0x0887, 0x0893, 0x089f, - 0x08a5, 0x08ae, 0x08ba, 0x08c6, 0x08cf, 0x08e1, 0x08f3, 0x08ff, - 0x090b, 0x0929, 0x092f, 0x092f, 0x0948, 0x0954, 0x0960, 0x0966, - 0x0975, 0x0981, 0x098d, - }, - }, - {}, // zgh - { // zh - zhScriptStr, - zhScriptIdx, - }, - { // zh-Hant - zhHantScriptStr, - zhHantScriptIdx, - }, - { // zh-Hant-HK - "西里爾文埃塞俄比亞文格魯吉亞文古木基文簡體字繁體字坎納達文老撾文拉丁字母馬拉雅拉姆文尼瓦爾文奧里雅文僧伽羅文泰米爾文它拿字母", - []uint16{ // 160 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x001e, 0x001e, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0039, - 0x0039, 0x0039, 0x0039, 0x0039, 0x0042, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - // Entry 40 - 7F - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0060, 0x0060, 0x0060, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, - 0x007e, 0x007e, 0x007e, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x008a, 0x008a, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - // Entry 80 - BF - 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, - 0x0096, 0x0096, 0x0096, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ba, - }, - }, - { // zu - zuScriptStr, - zuScriptIdx, - }, -} - -const afScriptStr string = "" + // Size: 372 bytes - "ArabiesArmeensBengaalsBopomofoBrailleSirilliesDevanagariEtiopiesGeorgies" + - "GrieksGudjaratiGurmukhiHanbHangulHanVereenvoudigde HanTradisionele HanHe" + - "breeusHiraganaJapannese lettergreepskrifJamoJapanneesKatakanaKhmerKannad" + - "aKoreaansLaoLatynMalabaarsMongoolsMianmarOriyaSinhalaTamilTeloegoeThaana" + - "ThaiTibettaansWiskundige notasieEmojiSimboleOngeskreweAlgemeenOnbekende " + - "skryfstelsel" - -var afScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0016, 0x0016, 0x0016, - 0x001e, 0x001e, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002e, 0x002e, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0040, 0x0040, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x004e, 0x0057, 0x005f, - 0x0063, 0x0069, 0x006c, 0x006c, 0x007e, 0x008e, 0x008e, 0x0096, - 0x009e, 0x009e, 0x009e, 0x00b8, 0x00b8, 0x00b8, 0x00b8, 0x00bc, - // Entry 40 - 7F - 0x00bc, 0x00c5, 0x00c5, 0x00c5, 0x00cd, 0x00cd, 0x00d2, 0x00d2, - 0x00d9, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e4, 0x00e4, 0x00e4, - 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, - 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, - 0x00e9, 0x00f2, 0x00f2, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - // Entry 80 - BF - 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, - 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, - 0x0112, 0x0112, 0x0112, 0x011a, 0x011a, 0x011a, 0x011a, 0x0120, - 0x0124, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, - 0x012e, 0x012e, 0x012e, 0x012e, 0x012e, 0x0140, 0x0145, 0x014c, - 0x0156, 0x015e, 0x0174, -} // Size: 382 bytes - -const amScriptStr string = "" + // Size: 566 bytes - "ዓረብኛአርሜንያዊቤንጋሊቦፖሞፎብሬይልሲይሪልክደቫንጋሪኢትዮፒክጆርጂያዊግሪክጉጃራቲጉርሙኪሃንብሐንጉልሃንቀለል ያለ ሃንባ" + - "ህላዊ ሃንእብራይስጥሂራጋናካታካና ወይንም ሂራጋናጃሞጃፓንኛካታካናክህመርካንአዳኮሪያኛላኦላቲንማላያልምሞንጎሊያኛምያ" + - "ንማርኦሪያሲንሃላታሚልተሉጉታናታይቲቤታንZmthZsyeምልክቶችያልተጻፈየጋራያልታወቀ ስክሪፕት" - -var amScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x002a, 0x002a, 0x002a, - 0x0036, 0x0036, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0051, 0x0051, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x006f, 0x006f, - 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x0087, 0x0093, 0x009f, - 0x00a8, 0x00b4, 0x00ba, 0x00ba, 0x00d1, 0x00e4, 0x00e4, 0x00f6, - 0x0102, 0x0102, 0x0102, 0x0128, 0x0128, 0x0128, 0x0128, 0x012e, - // Entry 40 - 7F - 0x012e, 0x013a, 0x013a, 0x013a, 0x0146, 0x0146, 0x0152, 0x0152, - 0x015e, 0x016a, 0x016a, 0x016a, 0x016a, 0x0170, 0x0170, 0x0170, - 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, - 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, 0x0179, - 0x0179, 0x0188, 0x0188, 0x019a, 0x019a, 0x019a, 0x019a, 0x019a, - 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, 0x01a9, - 0x01a9, 0x01a9, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, - 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, - // Entry 80 - BF - 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, 0x01b2, - 0x01b2, 0x01b2, 0x01b2, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, - 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, 0x01be, - 0x01c7, 0x01c7, 0x01c7, 0x01d0, 0x01d0, 0x01d0, 0x01d0, 0x01d6, - 0x01dc, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, - 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01ec, 0x01f0, 0x01ff, - 0x020e, 0x0217, 0x0236, -} // Size: 382 bytes - -const arScriptStr string = "" + // Size: 2477 bytes - "العربيةالأرمينيةالباليةالباتاكالبنغاليةرموز بليسالبوبوموفوالهندوسيةالبرا" + - "يلالبجينيزالبهيديةمقاطع كندية أصلية موحدةالكاريةالتشاميةالشيروكيالسيرثا" + - "لقبطيةالقبرصيةالسيريليةالسيريلية السلافية الكنسية القديمةالديفاناجاريال" + - "ديسيريتالديموطيقيةالهيراطيقيةالهيروغليفيةالأثيوبيةالأبجدية الجورجية - أ" + - "سومتافرلي و نسخريالجورجيةالجلاجوليتيكالقوطيةاليونانيةالتاغجراتيةالجرمخي" + - "هانبالهانغولالهانالهانونوالهان المبسطةالهان التقليديةالعبريةالهيراجاناا" + - "لباهوه همونجأبجدية مقطعية يابانيةالمجرية القديمةاندس - هارابانالإيطالية" + - " القديمةجاموالجاويةاليابانيةالكياه لىالكتكاناالخاروشتىالخميريةالكاناداال" + - "كوريةالانااللاواللاتينية - متغير فراكتراللاتينية - متغير غيلىاللاتينيةا" + - "لليبتشا - رونجالليمبوالخطية أالخطية بالليسيةالليديةالمانداينيةالمايا ال" + - "هيروغليفيةالميرويتيكالماليالامالمغوليةمونالميانمارالعربية الشمالية القد" + - "يمةأنكوالأوجهامالأورخونالأورياالأوسمانياالبيرميكية القديمةالفاجسباالفين" + - "يقيةالصوتيات الجماءرنجورنجوالرونيالساراتيالعربية الجنوبية القديمةالشوان" + - "يالسينهالاالسوندانيةالسيلوتي ناغريالسريانيةالسريانية الأسترنجيليةالسريا" + - "نية الغربيةالسريانية الشرقيةالتاجبانواالتاي ليالتاى لى الجديدالتاميليةا" + - "لتيلجوالتينجوارالتيفيناغالتغالوغيةالثعنةالتايلانديةالتبتيةالأجاريتيكيةا" + - "لفايالكلام المرئيالفارسية القديمةالكتابة المسمارية الأكدية السومريةاليي" + - "الموروثتدوين رياضيإيموجيرموزغير مكتوبعامنظام كتابة غير معروف" - -var arScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x0020, - 0x0020, 0x002e, 0x002e, 0x002e, 0x003c, 0x004e, 0x004e, 0x005f, - 0x0073, 0x0085, 0x0093, 0x00a3, 0x00b3, 0x00b3, 0x00de, 0x00ec, - 0x00fc, 0x010c, 0x0118, 0x0126, 0x0136, 0x0148, 0x0189, 0x01a1, - 0x01b3, 0x01b3, 0x01c9, 0x01df, 0x01f7, 0x01f7, 0x0209, 0x024f, - 0x025f, 0x0277, 0x0277, 0x0285, 0x0285, 0x0297, 0x02ad, 0x02bb, - 0x02c3, 0x02d3, 0x02dd, 0x02ed, 0x0306, 0x0323, 0x0323, 0x0331, - 0x0345, 0x0345, 0x035e, 0x0386, 0x03a3, 0x03bc, 0x03dd, 0x03e5, - // Entry 40 - 7F - 0x03f3, 0x0405, 0x0405, 0x0416, 0x0426, 0x0438, 0x0448, 0x0448, - 0x0458, 0x0466, 0x0466, 0x0466, 0x0470, 0x047a, 0x04a6, 0x04ce, - 0x04e0, 0x04fb, 0x0509, 0x0518, 0x0527, 0x0527, 0x0527, 0x0535, - 0x0543, 0x0543, 0x0559, 0x0559, 0x0559, 0x057e, 0x057e, 0x057e, - 0x0592, 0x05a6, 0x05a6, 0x05b6, 0x05bc, 0x05bc, 0x05bc, 0x05bc, - 0x05ce, 0x05fc, 0x05fc, 0x05fc, 0x05fc, 0x0604, 0x0604, 0x0614, - 0x0614, 0x0624, 0x0632, 0x0632, 0x0646, 0x0646, 0x0646, 0x0669, - 0x0679, 0x0679, 0x0679, 0x0679, 0x068b, 0x06a8, 0x06a8, 0x06a8, - // Entry 80 - BF - 0x06b8, 0x06c4, 0x06c4, 0x06d4, 0x0702, 0x0702, 0x0702, 0x0710, - 0x0710, 0x0710, 0x0710, 0x0722, 0x0722, 0x0722, 0x0736, 0x0751, - 0x0763, 0x078e, 0x07af, 0x07d0, 0x07e4, 0x07e4, 0x07f3, 0x080f, - 0x0821, 0x0821, 0x0821, 0x082f, 0x0841, 0x0853, 0x0867, 0x0873, - 0x0889, 0x0897, 0x0897, 0x08af, 0x08b9, 0x08d2, 0x08d2, 0x08d2, - 0x08f1, 0x0932, 0x093a, 0x093a, 0x0948, 0x095d, 0x0969, 0x0971, - 0x0982, 0x0988, 0x09ad, -} // Size: 382 bytes - -const azScriptStr string = "" + // Size: 1070 bytes - "ərəbarmierməniavestanbalibatakbenqalblissymbolsbopomofobrahmibraylbuqinb" + - "uhidkakmbirləşmiş kanada yerli yazısıkariyançamçirokisirtkoptikkiprkiril" + - "qədimi kilsa kirilidevanaqarideseretmisir demotikmisir hiyeratikmisir hi" + - "yeroqlifefiopgürcü xutsurigürcüqlaqolitikqotikyunanqucaratqurmuxihanbhan" + - "qılhanhanunuSadələşdirilmiş HanƏnənəvi Hanibraniiraqanapahav monqhecalı " + - "yapon əlifbasıqədimi macarhindistanqədimi italyalıjamocavayaponkayax lik" + - "atakanaxaroştikxmerkannadakoreyaktilannalaofraktur latınıgael latınılatı" + - "nlepçəlimbulusianludianmandayenmaniçayenmaya hiyeroqlifimeroytikmalayala" + - "mmonqolmunmeytey mayekmyanmarnkooğamol çikiorxonoriyaosmanyaqədimi permi" + - "kfaqs-pafliflpkitab paxlavifoenikpolard fonetikprtirecəngronqoronqorunik" + - "samaritansaratisaurastraişarət yazısışavyansinhalsundansiloti nəqrisirya" + - "kestrangela süryanicetaqbanvatay letəzə tay lutamiltavtteluqutengvartifi" + - "naqtaqaloqthanataytibetuqaritvaydanışma səsləriqədimi farssumer-akadyan " + - "kuneyformyiriyazi notasiyaemojisimvollaryazısızümumi yazıtanınmayan yazı" - -var azScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0011, - 0x0018, 0x001c, 0x001c, 0x001c, 0x0021, 0x0027, 0x0027, 0x0032, - 0x003a, 0x0040, 0x0045, 0x004a, 0x004f, 0x0053, 0x0075, 0x007c, - 0x0080, 0x0087, 0x008b, 0x0091, 0x0095, 0x009a, 0x00ae, 0x00b8, - 0x00bf, 0x00bf, 0x00cc, 0x00db, 0x00eb, 0x00eb, 0x00f0, 0x00ff, - 0x0106, 0x0110, 0x0110, 0x0115, 0x0115, 0x011a, 0x0121, 0x0128, - 0x012c, 0x0133, 0x0136, 0x013c, 0x0153, 0x0161, 0x0161, 0x0167, - 0x016e, 0x016e, 0x0178, 0x0190, 0x019d, 0x01a6, 0x01b7, 0x01bb, - // Entry 40 - 7F - 0x01bf, 0x01c4, 0x01c4, 0x01cc, 0x01d4, 0x01dc, 0x01e1, 0x01e1, - 0x01e8, 0x01ee, 0x01ee, 0x01f1, 0x01f6, 0x01f9, 0x0209, 0x0216, - 0x021c, 0x0223, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x022e, - 0x0234, 0x0234, 0x023c, 0x0246, 0x0246, 0x0256, 0x0256, 0x0256, - 0x025e, 0x0267, 0x0267, 0x026d, 0x0270, 0x0270, 0x027c, 0x027c, - 0x0283, 0x0283, 0x0283, 0x0283, 0x0283, 0x0286, 0x0286, 0x028b, - 0x0293, 0x0298, 0x029d, 0x029d, 0x02a4, 0x02a4, 0x02a4, 0x02b2, - 0x02b9, 0x02bc, 0x02bf, 0x02cc, 0x02d2, 0x02e0, 0x02e4, 0x02eb, - // Entry 80 - BF - 0x02f5, 0x02fa, 0x0303, 0x0309, 0x0309, 0x0312, 0x0323, 0x032a, - 0x032a, 0x032a, 0x032a, 0x0330, 0x0330, 0x0330, 0x0336, 0x0343, - 0x0349, 0x035e, 0x035e, 0x035e, 0x0366, 0x0366, 0x036c, 0x0379, - 0x037e, 0x037e, 0x0382, 0x0388, 0x038f, 0x0396, 0x039d, 0x03a2, - 0x03a5, 0x03aa, 0x03aa, 0x03b0, 0x03b3, 0x03c6, 0x03c6, 0x03c6, - 0x03d2, 0x03e9, 0x03eb, 0x03eb, 0x03eb, 0x03fa, 0x03ff, 0x0408, - 0x0411, 0x041d, 0x042e, -} // Size: 382 bytes - -const bgScriptStr string = "" + // Size: 2351 bytes - "арабскаАрамейскаарменскаАвестанскаБалийскиБатакскабенгалскаБлис символиб" + - "опомофоБрахмиБрайловаБугинскаБухидЧакмаУнифицирани символи на канадски " + - "аборигениКарийскаХамитскаЧерокиКиртКоптскаКипърскакирилицадеванагариДез" + - "еретЕгипетско демотично писмоЕгипетско йератично писмоЕгипетски йерогли" + - "фиетиопскаГрузинска хуцуригрузинскаГлаголическаГотическагръцкагуджарати" + - "гурмукхиханбхангълкитайскаХанунуопростен китайскитрадиционен китайскиив" + - "ритхираганаПахау хмонгяпонска сричковаСтароунгарскаХарапскаДревно итали" + - "йскаджамоЯванскаяпонскаКая ЛикатаканаКхароштхикхмерскаканнадакорейскаКа" + - "йтхиЛанналаоскаЛатинска фрактураГалска латинскалатиницаЛепчаЛимбуЛинейн" + - "а АЛинейна БЛицийскаЛидийскаМандаринскаМанихейскаЙероглифи на МаитеМеро" + - "итскамалаяламмонголскаМунМанипурибирманскаН’КоОгамическаОл ЧикиОрхоно-е" + - "нисейскаорияОсманскаДревно пермскаФагс-паПахлавскаФиникийскаПисменост П" + - "олардРонго-ронгоРуническаСамаританскаСаратиСаураштрасинхалскаСунданскаС" + - "илоти НагриСирийскаСирийска естрангелоЗападна сирийскаИзточна сирийскаТ" + - "агбанваТай ЛеНова Тай ЛетамилскателугуТагалогтаанатайскатибетскаУгаритс" + - "каВайскаВидима речСтароперсийскаШумеро-акадски клинописЙиМатематически " + - "символиемотиконисимволибез писменостобщанепозната писменост" - -var bgScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0020, 0x0030, - 0x0044, 0x0054, 0x0054, 0x0054, 0x0064, 0x0076, 0x0076, 0x008d, - 0x009d, 0x00a9, 0x00b9, 0x00c9, 0x00d3, 0x00dd, 0x012b, 0x013b, - 0x014b, 0x0157, 0x015f, 0x016d, 0x017d, 0x018d, 0x018d, 0x01a1, - 0x01af, 0x01af, 0x01df, 0x020f, 0x0234, 0x0234, 0x0244, 0x0263, - 0x0275, 0x028d, 0x028d, 0x029f, 0x029f, 0x02ab, 0x02bd, 0x02cd, - 0x02d5, 0x02e1, 0x02f1, 0x02fd, 0x031e, 0x0345, 0x0345, 0x034f, - 0x035f, 0x035f, 0x0374, 0x0393, 0x03ad, 0x03bd, 0x03dc, 0x03e6, - // Entry 40 - 7F - 0x03f4, 0x0402, 0x0402, 0x040d, 0x041d, 0x042f, 0x043f, 0x043f, - 0x044d, 0x045d, 0x045d, 0x0469, 0x0473, 0x047f, 0x04a0, 0x04bd, - 0x04cd, 0x04d7, 0x04e1, 0x04f2, 0x0503, 0x0503, 0x0503, 0x0513, - 0x0523, 0x0523, 0x0539, 0x054d, 0x054d, 0x056f, 0x056f, 0x056f, - 0x0581, 0x0591, 0x0591, 0x05a3, 0x05a9, 0x05a9, 0x05b9, 0x05b9, - 0x05cb, 0x05cb, 0x05cb, 0x05cb, 0x05cb, 0x05d4, 0x05d4, 0x05e8, - 0x05f5, 0x0614, 0x061c, 0x061c, 0x062c, 0x062c, 0x062c, 0x0647, - 0x0654, 0x0654, 0x0654, 0x0666, 0x067a, 0x0699, 0x0699, 0x0699, - // Entry 80 - BF - 0x06ae, 0x06c0, 0x06d8, 0x06e4, 0x06e4, 0x06f6, 0x06f6, 0x06f6, - 0x06f6, 0x06f6, 0x06f6, 0x0708, 0x0708, 0x0708, 0x071a, 0x0731, - 0x0741, 0x0766, 0x0785, 0x07a4, 0x07b4, 0x07b4, 0x07bf, 0x07d3, - 0x07e3, 0x07e3, 0x07e3, 0x07ef, 0x07ef, 0x07ef, 0x07fd, 0x0807, - 0x0813, 0x0823, 0x0823, 0x0835, 0x0841, 0x0854, 0x0854, 0x0854, - 0x0870, 0x089c, 0x08a0, 0x08a0, 0x08a0, 0x08c9, 0x08db, 0x08e9, - 0x0902, 0x090a, 0x092f, -} // Size: 382 bytes - -const bnScriptStr string = "" + // Size: 3617 bytes - "আরবিআরমিআর্মেনীয়আভেসতানবালীয়বাটাকবাংলাব্লিসপ্রতীকবোপোমোফোব্রাহ্মীব্রেই" + - "লবুগিবুহিডচাকমাসংযুক্ত কানাডিয়ান অ্যাব্রোজিনিয়ান সিলেবিক্সক্যারিয়ান" + - "চ্যামচেরোকিকির্টকোপ্টিকসাইপ্রোয়েটসিরিলিকপ্রাচীন চার্চ স্লাভোনিক সিরিল" + - "িকদেবনাগরিদেসেরাতমিশরীয় ডেমোটিকমিশরীয় হায়রেটিকমিশরীয় হায়ারোগ্লিপই" + - "থিওপিয়জর্জিয় খুৎসুরিজর্জিয়ানগ্লাগোলিটিকগোথিকগ্রিকগুজরাটিগুরুমুখিহ্য" + - "ানবিহাঙ্গুলহ্যানহ্যানুনুসরলিকৃত হ্যানঐতিহ্যবাহী হ্যানহিব্রুহিরাগানাফাহ" + - "াও মঙজাপানি অক্ষরমালাপুরোনো হাঙ্গেরীয়সিন্ধুপ্রাচীন ইতালিজ্যামোজাভানিজ" + - "জাপানীকায়াহ লিকাটাকানাখরোষ্ঠীখেমেরকানাড়াকোরিয়ানকাইথিলান্নালাওফ্রাক্" + - "টুর ল্যাটিনগ্যালিক ল্যাটিনল্যাটিনলেপ্চালিম্বুলিনিয়ার এলিনিয়ার বিলাইস" + - "িয়ানলাইডিয়ানম্যান্ডায়ীনম্যানিচাইনমায়ান হায়ারোগ্লিপমেরোইটিকমালায়া" + - "লামমোঙ্গোলীয়মুনমেইটেই মায়েকমায়ানমারএনকোওঘামওল চিকিঅর্খোনওড়িয়াওসমা" + - "নিয়প্রাচীন পার্মিকফাগ্স-পাখদিত পাহলভিসল্টার পাহলভিপুস্তক পাহলভিফিনিশি" + - "য়পোলার্ড ধ্বনিকপার্থিয়নরেজ্যাঙ্গরোঙ্গোরোঙ্গোরুনিকসমেরিটনসারাতিসৌরাষ্" + - "ট্রচিহ্ন লিখনসাভিয়ানসিংহলিসান্দানিজসিলেটি নাগরিসিরিয়াকএস্ট্রেঙ্গেলো " + - "সিরিয়াকপশ্চিমাঞ্চলীয় সিরিয়াকপূর্বাঞ্চলীয় সিরিয়াকটাগোওয়ানাতাইলেনত" + - "ুন তাই লুতামিলতাই ভিয়েৎতেলেগুতেঙ্গোয়ারতিফিনাগটাগালগথানাথাইতিব্বতিউগা" + - "রিটিকভাইদৃশ্যমান ভাষাপ্রাচীন ফার্সিসুমের-আক্কাদীয় কীলকরূপউইকাইগাণিতিক" + - " চিহ্নইমোজিপ্রতিকগুলিঅলিখিতসাধারনঅজানা লিপি" - -var bnScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0018, 0x0033, - 0x0048, 0x005a, 0x005a, 0x005a, 0x0069, 0x0078, 0x0078, 0x0099, - 0x00b1, 0x00c9, 0x00db, 0x00e7, 0x00f6, 0x0105, 0x0186, 0x01a4, - 0x01b3, 0x01c5, 0x01d4, 0x01e9, 0x020a, 0x021f, 0x0276, 0x028e, - 0x02a3, 0x02a3, 0x02ce, 0x02ff, 0x0339, 0x0339, 0x0351, 0x037c, - 0x0397, 0x03b8, 0x03b8, 0x03c7, 0x03c7, 0x03d6, 0x03eb, 0x0403, - 0x0418, 0x042d, 0x043c, 0x0454, 0x0479, 0x04a7, 0x04a7, 0x04b9, - 0x04d1, 0x04d1, 0x04e7, 0x0515, 0x0546, 0x0558, 0x057d, 0x058f, - // Entry 40 - 7F - 0x05a4, 0x05b6, 0x05b6, 0x05cf, 0x05e7, 0x05fc, 0x060b, 0x060b, - 0x0620, 0x0638, 0x0638, 0x0647, 0x0659, 0x0662, 0x0693, 0x06be, - 0x06d3, 0x06e5, 0x06f7, 0x0713, 0x0732, 0x0732, 0x0732, 0x074d, - 0x0768, 0x0768, 0x078c, 0x07aa, 0x07aa, 0x07e1, 0x07e1, 0x07e1, - 0x07f9, 0x0817, 0x0817, 0x0835, 0x083e, 0x083e, 0x0863, 0x0863, - 0x087e, 0x087e, 0x087e, 0x087e, 0x087e, 0x088a, 0x088a, 0x0896, - 0x08a9, 0x08bb, 0x08d0, 0x08d0, 0x08e8, 0x08e8, 0x08e8, 0x0913, - 0x0929, 0x0948, 0x096d, 0x0992, 0x09aa, 0x09d2, 0x09ed, 0x0a08, - // Entry 80 - BF - 0x0a2c, 0x0a3b, 0x0a50, 0x0a62, 0x0a62, 0x0a7d, 0x0a99, 0x0ab1, - 0x0ab1, 0x0ab1, 0x0ab1, 0x0ac3, 0x0ac3, 0x0ac3, 0x0ade, 0x0b00, - 0x0b18, 0x0b58, 0x0b9b, 0x0bdb, 0x0bf9, 0x0bf9, 0x0c08, 0x0c25, - 0x0c34, 0x0c34, 0x0c50, 0x0c62, 0x0c80, 0x0c95, 0x0ca7, 0x0cb3, - 0x0cbc, 0x0cd1, 0x0cd1, 0x0ce9, 0x0cf2, 0x0d17, 0x0d17, 0x0d17, - 0x0d3f, 0x0d80, 0x0d86, 0x0d86, 0x0d8f, 0x0db4, 0x0dc3, 0x0de1, - 0x0df3, 0x0e05, 0x0e21, -} // Size: 382 bytes - -const caScriptStr string = "" + // Size: 1638 bytes - "adlamafakaalbanès caucàsicahomàrabarameu imperialarmeniavèsticbalinèsbam" + - "umbassa vahbatakbengalíbhaiksukisímbols Blissbopomofobrahmibraillebuginè" + - "sbuhidchakmasíl·labes dels aborígens canadencs unificatscariàchamcheroke" + - "ecirthcoptexipriotaciríl·licciríl·lic de l’antic eslau eclesiàsticdevana" + - "garideserettaquigrafia Duployédemòtic egipcihieràtic egipcijeroglífic eg" + - "ipcielbasanetiòpicgeorgià hucurigeorgiàglagolíticgòticgranthagrecgujarat" + - "igurmukhihanbhangulhanhanunoohan simplificathan tradicionalhebreuhiragan" + - "ajeroglífic anatolipahawh hmongkatakana o hiraganahongarès anticescriptu" + - "ra de la vall de l’Induscursiva antigajamojavanèsjaponèsjürchenkayah lik" + - "atakanakharosthikhmerkhojakannadacoreàkpellekaithilannalaollatí frakturl" + - "latí gaèlicllatílepchalimbulineal Alineal Blisulomalicilidimahajanimanda" + - "icmaniqueujeroglífics maiesmendecursiva meroíticameroíticmalaiàlammodimo" + - "ngolmoonmromanipurímultanibirmàantic nord-aràbicnabateunewargeban’Konü s" + - "huoghamsantaliorkhonoriyaosageosmanyapalmirèPau Cin Hauantic pèrmicphags" + - "papahlavi inscripcionalpsalter pahlavipahlavifenicipollard miaoparthià i" + - "nscripcionalrejangrongo-rongorúnicsamaritàsaratisud-aràbic anticsaurasht" + - "raescriptura de signesshaviàshradasiddhamdevangarisingalèssora sompengsu" + - "ndanèssyloti nagrisiríacsiríac estrangelosiríac occidentalsiríac orienta" + - "ltagbanwatakritai lenou tai luetàmiltanguttai viettelugutengwartifinaght" + - "agàlogthaanatailandèstibetàtirhutugaríticvaillenguatge visiblevarang ksh" + - "itiwoleaipersa anticcuneïforme sumeri-accadiyiheretatnotació matemàticae" + - "mojisímbolssense escripturacomúescriptura desconeguda" - -var caScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x000a, 0x001c, 0x0020, 0x0025, 0x0034, 0x003a, - 0x0042, 0x004a, 0x004f, 0x0058, 0x005d, 0x0065, 0x006e, 0x007c, - 0x0084, 0x008a, 0x0091, 0x0099, 0x009e, 0x00a4, 0x00d3, 0x00d9, - 0x00dd, 0x00e5, 0x00ea, 0x00ef, 0x00f7, 0x0102, 0x012d, 0x0137, - 0x013e, 0x0152, 0x0161, 0x0171, 0x0183, 0x018a, 0x0192, 0x01a1, - 0x01a9, 0x01b4, 0x01b4, 0x01ba, 0x01c1, 0x01c5, 0x01cd, 0x01d5, - 0x01d9, 0x01df, 0x01e2, 0x01e9, 0x01f8, 0x0207, 0x0207, 0x020d, - 0x0215, 0x0228, 0x0234, 0x0247, 0x0256, 0x0278, 0x0286, 0x028a, - // Entry 40 - 7F - 0x0292, 0x029a, 0x02a2, 0x02aa, 0x02b2, 0x02bb, 0x02c0, 0x02c5, - 0x02cc, 0x02d2, 0x02d8, 0x02de, 0x02e3, 0x02e6, 0x02f4, 0x0302, - 0x0308, 0x030e, 0x0313, 0x031b, 0x0323, 0x0327, 0x032b, 0x032f, - 0x0333, 0x033b, 0x0342, 0x034a, 0x034a, 0x035c, 0x0361, 0x0373, - 0x037c, 0x0386, 0x038a, 0x0390, 0x0394, 0x0397, 0x03a0, 0x03a7, - 0x03ad, 0x03bf, 0x03c6, 0x03cb, 0x03cf, 0x03d5, 0x03dc, 0x03e1, - 0x03e8, 0x03ee, 0x03f3, 0x03f8, 0x03ff, 0x0407, 0x0412, 0x041f, - 0x0426, 0x043b, 0x044a, 0x0451, 0x0457, 0x0463, 0x0479, 0x047f, - // Entry 80 - BF - 0x048a, 0x0490, 0x0499, 0x049f, 0x04b0, 0x04ba, 0x04ce, 0x04d5, - 0x04db, 0x04e2, 0x04eb, 0x04f4, 0x0500, 0x0500, 0x0509, 0x0515, - 0x051c, 0x052e, 0x0540, 0x0550, 0x0558, 0x055d, 0x0563, 0x056e, - 0x0574, 0x057a, 0x0582, 0x0588, 0x058f, 0x0597, 0x059f, 0x05a5, - 0x05af, 0x05b6, 0x05bc, 0x05c5, 0x05c8, 0x05da, 0x05e7, 0x05ed, - 0x05f8, 0x0611, 0x0613, 0x0613, 0x061a, 0x062e, 0x0633, 0x063b, - 0x064b, 0x0650, 0x0666, -} // Size: 382 bytes - -const csScriptStr string = "" + // Size: 1912 bytes - "afakakavkazskoalbánskéarabskéaramejské (imperiální)arménskéavestánskébal" + - "ijskébamumskébassa vahbatackébengálskéBlissovo písmobopomofobráhmíBraill" + - "ovo písmobuginskébuhidskéčakmaslabičné písmo kanadských domorodcůkarijsk" + - "éčamčerokíkirtkoptskékyperskécyrilicecyrilce - staroslověnskádévanágarí" + - "deseretDuployého těsnopisegyptské démotickéegyptské hieratickéegyptské h" + - "ieroglyfyelbasanskéetiopskégruzínské chutsurigruzínskéhlaholicegotickégr" + - "anthařeckégudžarátígurmukhihanbhangulhanhanunóohan (zjednodušené)han (tr" + - "adiční)hebrejskéhiraganaanatolské hieroglyfyhmongskéjaponské slabičnésta" + - "romaďarskéharappskéetruskéjamojavánskéjaponskédžürčenskékayah likatakana" + - "kháróšthíkhmerskéchodžikikannadskékorejskékpellekaithilannalaoskélatinka" + - " - lomenálatinka - galskálatinkalepčskélimbulineární Alineární BFraserov" + - "olomalýkijskélýdskémahádžanímandejskémanichejskémayské hieroglyfymendské" + - "meroitické psacímeroitickémalajlámskémodímongolskéMoonovo písmomromejtej" + - " majek (manipurské)myanmarskéstaroseveroarabskénabatejskénaxi geban’konü" + - "-šuogamskésantálské (ol chiki)orchonskéurijskéosmansképalmýrsképau cin h" + - "austaropermsképhags-papahlavské klínovépahlavské žalmovépahlavské knižní" + - "fénickéPollardova fonetická abecedaparthské klínovéredžanskérongorongoru" + - "novésamařskésaratistarojihoarabskésaurášterskéSignWritingShawova abeceda" + - "šáradásiddhamchudábádísinhálskésora sompengsundskésylhetskésyrskésyrské" + - " - estrangelosyrské - západnísyrské - východnítagbanwatakrítai letai lü " + - "novétamilskétanguttai viettelugskétengwarberberskétagalskéthaanathajskét" + - "ibetskétirhutaugaritské klínovévaividitelná řečvarang kšitikarolínské (w" + - "oleai)staroperské klínové písmosumero-akkadské klínové písmoyimatematick" + - "ý zápisemodžisymbolybez zápisuobecnéneznámé písmo" - -var csScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0018, 0x0018, 0x0020, 0x0039, 0x0043, - 0x004f, 0x0058, 0x0061, 0x006a, 0x0072, 0x007d, 0x007d, 0x008c, - 0x0094, 0x009c, 0x00ac, 0x00b5, 0x00be, 0x00c4, 0x00ec, 0x00f5, - 0x00f9, 0x0101, 0x0105, 0x010d, 0x0116, 0x011e, 0x0138, 0x0145, - 0x014c, 0x0160, 0x0175, 0x018a, 0x019e, 0x01a9, 0x01b2, 0x01c6, - 0x01d1, 0x01da, 0x01da, 0x01e2, 0x01e9, 0x01f0, 0x01fc, 0x0204, - 0x0208, 0x020e, 0x0211, 0x0219, 0x022d, 0x023d, 0x023d, 0x0247, - 0x024f, 0x0264, 0x026d, 0x0281, 0x0290, 0x029a, 0x02a2, 0x02a6, - // Entry 40 - 7F - 0x02b0, 0x02b9, 0x02c7, 0x02cf, 0x02d7, 0x02e4, 0x02ed, 0x02f6, - 0x0300, 0x0309, 0x030f, 0x0315, 0x031a, 0x0321, 0x0332, 0x0343, - 0x034a, 0x0353, 0x0358, 0x0364, 0x0370, 0x0379, 0x037d, 0x0387, - 0x038f, 0x039b, 0x03a5, 0x03b1, 0x03b1, 0x03c3, 0x03cb, 0x03dd, - 0x03e8, 0x03f5, 0x03fa, 0x0404, 0x0412, 0x0415, 0x042f, 0x042f, - 0x043a, 0x044d, 0x0458, 0x0458, 0x0461, 0x0467, 0x046e, 0x0476, - 0x048c, 0x0496, 0x049e, 0x049e, 0x04a7, 0x04b2, 0x04bd, 0x04ca, - 0x04d2, 0x04e6, 0x04fa, 0x050d, 0x0516, 0x0533, 0x0546, 0x0551, - // Entry 80 - BF - 0x055b, 0x0562, 0x056c, 0x0572, 0x0583, 0x0592, 0x059d, 0x05ac, - 0x05b5, 0x05bc, 0x05c8, 0x05d3, 0x05df, 0x05df, 0x05e7, 0x05f1, - 0x05f8, 0x060c, 0x061f, 0x0633, 0x063b, 0x0641, 0x0647, 0x0654, - 0x065d, 0x0663, 0x066b, 0x0674, 0x067b, 0x0685, 0x068e, 0x0694, - 0x069c, 0x06a5, 0x06ac, 0x06c0, 0x06c3, 0x06d3, 0x06e0, 0x06f5, - 0x0712, 0x0733, 0x0735, 0x0735, 0x0735, 0x0748, 0x074f, 0x0756, - 0x0761, 0x0768, 0x0778, -} // Size: 382 bytes - -const daScriptStr string = "" + // Size: 1481 bytes - "afakaarabiskarmiarmenskavestanskbalinesiskbamumbassabatakbengaliblissymb" + - "olerbopomofobramiskpunktskriftbuginesiskbuhidcakmoprindelige canadiske s" + - "ymbolerkarianskchamcherokeecirtkoptiskcypriotiskkyrilliskkyrillisk - old" + - "kirkeslavisk variantdevanagarideseretDuploya-stenografiegyptisk demotisk" + - "egyptisk hieratiskegyptiske hieroglyfferetiopiskgeorgisk kutsurigeorgisk" + - "glagolitiskgotiskgranthagræskgujaratigurmukhihan med bopomofohangulhanha" + - "nunooforenklet hantraditionelt hanhebraiskhiraganaanatolske hieroglyffer" + - "pahawh hmongjapanske skrifttegnoldungarskindusOlditaliskjamojavanesiskja" + - "panskjurchenkaya likatakanakharoshtikhmerkhojkikannadakoreanskkpellekthi" + - "lannalaolatinsk - frakturvariantlatinsk - gælisk variantlatinsklepchalim" + - "bulineær Alineær Blisulomalykisklydiskmandaiskmanikæiskmayahieroglyfferm" + - "endemetroitisk sammenhængendemeroitiskmalayalammongolskmoonmroomeitei-ma" + - "yekburmesiskgammelt nordarabisknabateisknakhi geban’konüshuoghamol-chiki" + - "orkhonoriyaosmanniskpalmyrenskoldpermiskphags-paphliphlppahlavifønikiskp" + - "ollardtegnprtirejangrongo-rongorunersamaritansksaratioldsørarabisksauras" + - "htrategnskriftshavisksharadakhudawadisingalesisksorasundanesisksyloti na" + - "grisyrisksyrisk - estrangelovariantvestsyriskøstsyriakisktagbanwatakrita" + - "i letai luetamilsktanguttavttelugutengwartifinaghtagalogthaanathailandsk" + - "tibetansktirhutaugaritiskvaisynlig talevarang kshitiwoleaioldpersisksume" + - "ro-akkadisk cuneiformyiarvetmatematisk notationemojisymboleruden skrifts" + - "progfællesukendt skriftsprog" - -var daScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, 0x000c, 0x0010, 0x0017, - 0x0020, 0x002a, 0x002f, 0x0034, 0x0039, 0x0040, 0x0040, 0x004c, - 0x0054, 0x005b, 0x0066, 0x0070, 0x0075, 0x0079, 0x0097, 0x009f, - 0x00a3, 0x00ab, 0x00af, 0x00b6, 0x00c0, 0x00c9, 0x00ec, 0x00f6, - 0x00fd, 0x010f, 0x0120, 0x0132, 0x0148, 0x0148, 0x0150, 0x0160, - 0x0168, 0x0173, 0x0173, 0x0179, 0x0180, 0x0186, 0x018e, 0x0196, - 0x01a6, 0x01ac, 0x01af, 0x01b6, 0x01c3, 0x01d3, 0x01d3, 0x01db, - 0x01e3, 0x01f9, 0x0205, 0x0218, 0x0222, 0x0227, 0x0231, 0x0235, - // Entry 40 - 7F - 0x023f, 0x0246, 0x024d, 0x0254, 0x025c, 0x0265, 0x026a, 0x0270, - 0x0277, 0x027f, 0x0285, 0x0289, 0x028e, 0x0291, 0x02a9, 0x02c2, - 0x02c9, 0x02cf, 0x02d4, 0x02dd, 0x02e6, 0x02ea, 0x02ee, 0x02f4, - 0x02fa, 0x02fa, 0x0302, 0x030c, 0x030c, 0x031c, 0x0321, 0x033b, - 0x0344, 0x034d, 0x034d, 0x0355, 0x0359, 0x035d, 0x0369, 0x0369, - 0x0372, 0x0385, 0x038e, 0x038e, 0x0398, 0x039e, 0x03a4, 0x03a9, - 0x03b1, 0x03b7, 0x03bc, 0x03bc, 0x03c5, 0x03cf, 0x03cf, 0x03d9, - 0x03e1, 0x03e5, 0x03e9, 0x03f0, 0x03f9, 0x0404, 0x0408, 0x040e, - // Entry 80 - BF - 0x0419, 0x041e, 0x0429, 0x042f, 0x043d, 0x0447, 0x0451, 0x0458, - 0x045f, 0x045f, 0x0468, 0x0473, 0x0477, 0x0477, 0x0482, 0x048e, - 0x0494, 0x04ae, 0x04b8, 0x04c5, 0x04cd, 0x04d2, 0x04d8, 0x04df, - 0x04e6, 0x04ec, 0x04f0, 0x04f6, 0x04fd, 0x0505, 0x050c, 0x0512, - 0x051c, 0x0525, 0x052c, 0x0535, 0x0538, 0x0543, 0x0550, 0x0556, - 0x0560, 0x0579, 0x057b, 0x057b, 0x0580, 0x0593, 0x0598, 0x05a0, - 0x05b0, 0x05b7, 0x05c9, -} // Size: 382 bytes - -const deScriptStr string = "" + // Size: 1697 bytes - "AfakaKaukasisch-AlbanischArabischArmiArmenischAvestischBalinesischBamunB" + - "assaBattakischBengalischBliss-SymboleBopomofoBrahmiBlindenschriftBugines" + - "ischBuhidChakmaUCASKarischChamCherokeeCirthKoptischZypriotischKyrillisch" + - "AltkirchenslawischDevanagariDeseretDuployanischÄgyptisch - DemotischÄgyp" + - "tisch - HieratischÄgyptische HieroglyphenElbasanischÄthiopischKhutsuriGe" + - "orgischGlagolitischGotischGranthaGriechischGujaratiGurmukhiHanbHangulChi" + - "nesischHanunooVereinfachtes ChinesischTraditionelles ChinesischHebräisch" + - "HiraganaHieroglyphen-LuwischPahawh HmongJapanische SilbenschriftAltungar" + - "ischIndus-SchriftAltitalischJamoJavanesischJapanischJurchenKayah LiKatak" + - "anaKharoshthiKhmerKhojkiKannadaKoreanischKpelleKaithiLannaLaotischLatein" + - "isch - Fraktur-VarianteLateinisch - Gälische VarianteLateinischLepchaLim" + - "buLinear ALinear BFraserLomaLykischLydischMahajaniMandäischManichäischMa" + - "ya-HieroglyphenMendeMeroitisch kursivMeroitischMalayalamModiMongolischMo" + - "onMroMeitei MayekBirmanischAltnordarabischNabatäischGebaN’KoFrauenschrif" + - "tOghamOl ChikiOrchon-RunenOriyaOsmanischPalmyrenischPau Cin HauAltpermis" + - "chPhags-paBuch-PahlaviPsalter-PahlaviPahlaviPhönizischPollard Phonetisch" + - "ParthischRejangRongorongoRunenschriftSamaritanischSaratiAltsüdarabischSa" + - "urashtraGebärdenspracheShaw-AlphabetSharadaSiddhamKhudawadiSinghalesisch" + - "Sora SompengSundanesischSyloti NagriSyrischSyrisch - Estrangelo-Variante" + - "WestsyrischOstsyrischTagbanwaTakriTai LeTai LueTamilischXixiaTai-VietTel" + - "uguTengwarTifinaghTagalogThaanaThaiTibetischTirhutaUgaritischVaiSichtbar" + - "e SpracheVarang KshitiWoleaianischAltpersischSumerisch-akkadische Keilsc" + - "hriftYiGeerbter SchriftwertMathematische NotationEmojiSymboleSchriftlosV" + - "erbreitetUnbekannte Schrift" - -var deScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0019, 0x0019, 0x0021, 0x0025, 0x002e, - 0x0037, 0x0042, 0x0047, 0x004c, 0x0056, 0x0060, 0x0060, 0x006d, - 0x0075, 0x007b, 0x0089, 0x0094, 0x0099, 0x009f, 0x00a3, 0x00aa, - 0x00ae, 0x00b6, 0x00bb, 0x00c3, 0x00ce, 0x00d8, 0x00ea, 0x00f4, - 0x00fb, 0x0107, 0x011d, 0x0134, 0x014c, 0x0157, 0x0162, 0x016a, - 0x0173, 0x017f, 0x017f, 0x0186, 0x018d, 0x0197, 0x019f, 0x01a7, - 0x01ab, 0x01b1, 0x01bb, 0x01c2, 0x01da, 0x01f3, 0x01f3, 0x01fd, - 0x0205, 0x0219, 0x0225, 0x023d, 0x0249, 0x0256, 0x0261, 0x0265, - // Entry 40 - 7F - 0x0270, 0x0279, 0x0280, 0x0288, 0x0290, 0x029a, 0x029f, 0x02a5, - 0x02ac, 0x02b6, 0x02bc, 0x02c2, 0x02c7, 0x02cf, 0x02ec, 0x030b, - 0x0315, 0x031b, 0x0320, 0x0328, 0x0330, 0x0336, 0x033a, 0x0341, - 0x0348, 0x0350, 0x035a, 0x0366, 0x0366, 0x0377, 0x037c, 0x038d, - 0x0397, 0x03a0, 0x03a4, 0x03ae, 0x03b2, 0x03b5, 0x03c1, 0x03c1, - 0x03cb, 0x03da, 0x03e5, 0x03e5, 0x03e9, 0x03ef, 0x03fc, 0x0401, - 0x0409, 0x0415, 0x041a, 0x041a, 0x0423, 0x042f, 0x043a, 0x0445, - 0x044d, 0x0459, 0x0468, 0x046f, 0x047a, 0x048c, 0x0495, 0x049b, - // Entry 80 - BF - 0x04a5, 0x04b1, 0x04be, 0x04c4, 0x04d3, 0x04dd, 0x04ed, 0x04fa, - 0x0501, 0x0508, 0x0511, 0x051e, 0x052a, 0x052a, 0x0536, 0x0542, - 0x0549, 0x0566, 0x0571, 0x057b, 0x0583, 0x0588, 0x058e, 0x0595, - 0x059e, 0x05a3, 0x05ab, 0x05b1, 0x05b8, 0x05c0, 0x05c7, 0x05cd, - 0x05d1, 0x05da, 0x05e1, 0x05eb, 0x05ee, 0x05ff, 0x060c, 0x0618, - 0x0623, 0x0643, 0x0645, 0x0645, 0x0659, 0x066f, 0x0674, 0x067b, - 0x0685, 0x068f, 0x06a1, -} // Size: 382 bytes - -const elScriptStr string = "" + // Size: 2664 bytes - "ΑραβικόΑυτοκρατορικό ΑραμαϊκόΑρμενικόΑβεστάνΜπαλινίζΜπατάκΜπενγκάλιΣύμβο" + - "λα BlissΜποπομόφοΜπραχμίΜπράιγΜπούγκιςΜπουχίντΤσάκμαΕνοποιημένοι Καναδε" + - "ζικοί Συλλαβισμοί ΙθαγενώνΚαριάνΤσαμΤσερόκιΣερθΚοπτικόΚυπριακόΚυριλλικό" + - "Παλαιό Εκκλησιαστικό Σλαβικό ΚυριλλικόΝτεβαναγκάριΝτεσερέΛαϊκό Αιγυπτια" + - "κόΙερατικό ΑιγυπτιακόΑιγυπτιακά ΙερογλυφικάΑιθιοπικόΓεωργιανό Κχουτσούρ" + - "ιΓεωργιανόΓκλαγκολιτικόΓοτθικόΕλληνικόΓκουγιαράτιΓκουρμουκχίΧανμπΧανγκο" + - "ύλΧανΧανούνουΑπλοποιημένο ΧανΠαραδοσιακό ΧανΕβραϊκόΧιραγκάναΠαχάχ Χμονγ" + - "κΚατακάνα ή ΧιραγκάναΠαλαιό ΟυγγρικόΊνδουςΠαλαιό ΙταλικόΤζάμοΙαβανεζικό" + - "ΙαπωνικόΚαγιάχ ΛιΚατακάναΚαρόσθιΧμερΚανάνταΚορεατικόΚαϊθίΛάνναΛάοςΦράκτ" + - "ουρ ΛατινικόΓαελικό ΛατινικόΛατινικόΛέπτσαΛιμπούΓραμμικό ΑΓραμμικό ΒΛυκ" + - "ιανικόΛυδιανικόΜανδαϊκόΜανιχαϊκόΙερογλυφικά ΜάγιαΜεροϊτικόΜαλαγιάλαμΜογ" + - "γολικόΜουνΜεϊτέι ΜάγεκΜιανμάρΝ’ΚοΌγκχαμΟλ ΤσίκιΌρκχονΌντιαΟσμάνγιαΠαλαι" + - "ό ΠερμικόΠαγκς-παΕπιγραφικό ΠαχλάβιΨάλτερ ΠαχλάβιΜπουκ ΠαχλαβίΦοινικικό" + - "Φωνητικό ΠόλαρντΕπιγραφικό ΠαρθιάνΡετζάνγκΡονγκορόνγκοΡουνίκΣαμαριτικόΣ" + - "αράθιΣαουράστραΝοηματική γραφήΣαβιανόΣινχάλαΣουνδανικόΣυλότι ΝάγκριΣυρι" + - "ακόΕστραντζέλο ΣυριακόΔυτικό ΣυριακόΑνατολικό ΣυριακόΤαγκμάνγουαΤάι ΛεΝ" + - "έο Τάι ΛούεΤαμίλΤάι ΒιέτΤελούγκουΤεγνγουάρΤιφινάγκΤαγκαλόγκΘαανάΤαϊλανδ" + - "ικόΘιβετιανόΟυγκαριτικόΒάιΟρατή ομιλίαΠαλαιό ΠερσικόΣούμερο-Ακάντιαν Κο" + - "υνεϊφόρμΓιΚληρονομημένοΜαθηματική σημειογραφίαEmojiΣύμβολαΆγραφοΚοινόΆγ" + - "νωστη γραφή" - -var elScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000e, 0x0039, 0x0049, - 0x0057, 0x0067, 0x0067, 0x0067, 0x0073, 0x0085, 0x0085, 0x0099, - 0x00ab, 0x00b9, 0x00c5, 0x00d5, 0x00e5, 0x00f1, 0x0148, 0x0154, - 0x015c, 0x016a, 0x0172, 0x0180, 0x0190, 0x01a2, 0x01eb, 0x0203, - 0x0211, 0x0211, 0x0230, 0x0255, 0x0280, 0x0280, 0x0292, 0x02b9, - 0x02cb, 0x02e5, 0x02e5, 0x02f3, 0x02f3, 0x0303, 0x0319, 0x032f, - 0x0339, 0x0349, 0x034f, 0x035f, 0x037e, 0x039b, 0x039b, 0x03a9, - 0x03bb, 0x03bb, 0x03d2, 0x03f8, 0x0415, 0x0421, 0x043c, 0x0446, - // Entry 40 - 7F - 0x045a, 0x046a, 0x046a, 0x047b, 0x048b, 0x0499, 0x04a1, 0x04a1, - 0x04af, 0x04c1, 0x04c1, 0x04cb, 0x04d5, 0x04dd, 0x04fe, 0x051d, - 0x052d, 0x0539, 0x0545, 0x0558, 0x056b, 0x056b, 0x056b, 0x057d, - 0x058f, 0x058f, 0x059f, 0x05b1, 0x05b1, 0x05d2, 0x05d2, 0x05d2, - 0x05e4, 0x05f8, 0x05f8, 0x060a, 0x0612, 0x0612, 0x0629, 0x0629, - 0x0637, 0x0637, 0x0637, 0x0637, 0x0637, 0x0640, 0x0640, 0x064c, - 0x065b, 0x0667, 0x0671, 0x0671, 0x0681, 0x0681, 0x0681, 0x069c, - 0x06ab, 0x06ce, 0x06e9, 0x0702, 0x0714, 0x0733, 0x0756, 0x0766, - // Entry 80 - BF - 0x077e, 0x078a, 0x079e, 0x07aa, 0x07aa, 0x07be, 0x07db, 0x07e9, - 0x07e9, 0x07e9, 0x07e9, 0x07f7, 0x07f7, 0x07f7, 0x080b, 0x0824, - 0x0832, 0x0857, 0x0872, 0x0893, 0x08a9, 0x08a9, 0x08b4, 0x08ca, - 0x08d4, 0x08d4, 0x08e3, 0x08f5, 0x0907, 0x0917, 0x0929, 0x0933, - 0x0947, 0x0959, 0x0959, 0x096f, 0x0975, 0x098c, 0x098c, 0x098c, - 0x09a7, 0x09db, 0x09df, 0x09df, 0x09f9, 0x0a26, 0x0a2b, 0x0a39, - 0x0a45, 0x0a4f, 0x0a68, -} // Size: 382 bytes - -const enScriptStr string = "" + // Size: 1621 bytes - "AdlamAfakaCaucasian AlbanianAhomArabicImperial AramaicArmenianAvestanBal" + - "ineseBamumBassa VahBatakBanglaBhaiksukiBlissymbolsBopomofoBrahmiBrailleB" + - "ugineseBuhidChakmaUnified Canadian Aboriginal SyllabicsCarianChamCheroke" + - "eCirthCopticCypriotCyrillicOld Church Slavonic CyrillicDevanagariDeseret" + - "Duployan shorthandEgyptian demoticEgyptian hieraticEgyptian hieroglyphsE" + - "lbasanEthiopicGeorgian KhutsuriGeorgianGlagoliticMasaram GondiGothicGran" + - "thaGreekGujaratiGurmukhiHan with BopomofoHangulHanHanunooSimplified HanT" + - "raditional HanHatranHebrewHiraganaAnatolian HieroglyphsPahawh HmongJapan" + - "ese syllabariesOld HungarianIndusOld ItalicJamoJavaneseJapaneseJurchenKa" + - "yah LiKatakanaKharoshthiKhmerKhojkiKannadaKoreanKpelleKaithiLannaLaoFrak" + - "tur LatinGaelic LatinLatinLepchaLimbuLinear ALinear BFraserLomaLycianLyd" + - "ianMahajaniMandaeanManichaeanMarchenMayan hieroglyphsMendeMeroitic Cursi" + - "veMeroiticMalayalamModiMongolianMoonMroMeitei MayekMultaniMyanmarOld Nor" + - "th ArabianNabataeanNewaNaxi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsageOsm" + - "anyaPalmyrenePau Cin HauOld PermicPhags-paInscriptional PahlaviPsalter P" + - "ahlaviBook PahlaviPhoenicianPollard PhoneticInscriptional ParthianRejang" + - "RongorongoRunicSamaritanSaratiOld South ArabianSaurashtraSignWritingShav" + - "ianSharadaSiddhamKhudawadiSinhalaSora SompengSoyomboSundaneseSyloti Nagr" + - "iSyriacEstrangelo SyriacWestern SyriacEastern SyriacTagbanwaTakriTai LeN" + - "ew Tai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaThaiTibet" + - "anTirhutaUgariticVaiVisible SpeechVarang KshitiWoleaiOld PersianSumero-A" + - "kkadian CuneiformYiZanabazar SquareInheritedMathematical NotationEmojiSy" + - "mbolsUnwrittenCommonUnknown Script" - -var enScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x000a, 0x001c, 0x0020, 0x0026, 0x0036, 0x003e, - 0x0045, 0x004d, 0x0052, 0x005b, 0x0060, 0x0066, 0x006f, 0x007a, - 0x0082, 0x0088, 0x008f, 0x0097, 0x009c, 0x00a2, 0x00c7, 0x00cd, - 0x00d1, 0x00d9, 0x00de, 0x00e4, 0x00eb, 0x00f3, 0x010f, 0x0119, - 0x0120, 0x0132, 0x0142, 0x0153, 0x0167, 0x016e, 0x0176, 0x0187, - 0x018f, 0x0199, 0x01a6, 0x01ac, 0x01b3, 0x01b8, 0x01c0, 0x01c8, - 0x01d9, 0x01df, 0x01e2, 0x01e9, 0x01f7, 0x0206, 0x020c, 0x0212, - 0x021a, 0x022f, 0x023b, 0x024f, 0x025c, 0x0261, 0x026b, 0x026f, - // Entry 40 - 7F - 0x0277, 0x027f, 0x0286, 0x028e, 0x0296, 0x02a0, 0x02a5, 0x02ab, - 0x02b2, 0x02b8, 0x02be, 0x02c4, 0x02c9, 0x02cc, 0x02d9, 0x02e5, - 0x02ea, 0x02f0, 0x02f5, 0x02fd, 0x0305, 0x030b, 0x030f, 0x0315, - 0x031b, 0x0323, 0x032b, 0x0335, 0x033c, 0x034d, 0x0352, 0x0362, - 0x036a, 0x0373, 0x0377, 0x0380, 0x0384, 0x0387, 0x0393, 0x039a, - 0x03a1, 0x03b2, 0x03bb, 0x03bf, 0x03c8, 0x03ce, 0x03d4, 0x03d9, - 0x03e1, 0x03e7, 0x03eb, 0x03f0, 0x03f7, 0x0400, 0x040b, 0x0415, - 0x041d, 0x0432, 0x0441, 0x044d, 0x0457, 0x0467, 0x047d, 0x0483, - // Entry 80 - BF - 0x048d, 0x0492, 0x049b, 0x04a1, 0x04b2, 0x04bc, 0x04c7, 0x04ce, - 0x04d5, 0x04dc, 0x04e5, 0x04ec, 0x04f8, 0x04ff, 0x0508, 0x0514, - 0x051a, 0x052b, 0x0539, 0x0547, 0x054f, 0x0554, 0x055a, 0x0565, - 0x056a, 0x0570, 0x0578, 0x057e, 0x0585, 0x058d, 0x0594, 0x059a, - 0x059e, 0x05a5, 0x05ac, 0x05b4, 0x05b7, 0x05c5, 0x05d2, 0x05d8, - 0x05e3, 0x05fc, 0x05fe, 0x060e, 0x0617, 0x062c, 0x0631, 0x0638, - 0x0641, 0x0647, 0x0655, -} // Size: 382 bytes - -const enGBScriptStr string = "Thai" - -var enGBScriptIdx = []uint16{ // 161 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0004, -} // Size: 346 bytes - -const esScriptStr string = "" + // Size: 1207 bytes - "árabearmenioavésticobalinésbatakbengalísímbolos blisbopomofobrahmibraill" + - "ebuginésbuhidsilabarios aborígenes canadienses unificadoscariochamcherok" + - "eecirthcoptochipriotacirílicocirílico del antiguo eslavo eclesiásticodev" + - "anagarideseretegipcio demóticoegipcio hieráticojeroglíficos egipciosetió" + - "picogeorgiano eclesiásticogeorgianoglagolíticogóticogriegogujaratigurmuj" + - "ihanbhangulhanhanunoohan simplificadohan tradicionalhebreohiraganapahawh" + - " hmongsilabarios japoneseshúngaro antiguoIndio (harappan)antigua bastard" + - "illajamojavanésjaponéskayah likatakanakharosthijemercanaréscoreanolannal" + - "aosianolatino frakturlatino gaélicolatinolepchalimbulineal Alineal Blici" + - "olidiomandeojeroglíficos mayasmeroíticomalayálammongolmoonmanipuribirman" + - "on’kooghamol cikiorkhonoriyaosmaniyapermiano antiguophags-pafenicioPolla" + - "rd Miaorejangrongo-rongorúnicosaratisaurashtraSignWritingshavianocingalé" + - "ssundanéssyloti nagrisiriacosiriaco estrangelosiriaco occidentalsiriaco " + - "orientaltagbanúatai lenuevo tai luetamiltelugutengwartifinaghtagalothaan" + - "atailandéstibetanougaríticovailenguaje visiblepersa antiguocuneiforme su" + - "merio-acadioyiheredadonotación matemáticaemojissímbolosno escritocomúnal" + - "fabeto desconocido" - -var esScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000d, - 0x0016, 0x001e, 0x001e, 0x001e, 0x0023, 0x002b, 0x002b, 0x0039, - 0x0041, 0x0047, 0x004e, 0x0056, 0x005b, 0x005b, 0x0088, 0x008d, - 0x0091, 0x0099, 0x009e, 0x00a3, 0x00ac, 0x00b5, 0x00df, 0x00e9, - 0x00f0, 0x00f0, 0x0101, 0x0113, 0x0129, 0x0129, 0x0132, 0x0149, - 0x0152, 0x015e, 0x015e, 0x0165, 0x0165, 0x016b, 0x0173, 0x017a, - 0x017e, 0x0184, 0x0187, 0x018e, 0x019e, 0x01ad, 0x01ad, 0x01b3, - 0x01bb, 0x01bb, 0x01c7, 0x01db, 0x01eb, 0x01fb, 0x020e, 0x0212, - // Entry 40 - 7F - 0x021a, 0x0222, 0x0222, 0x022a, 0x0232, 0x023b, 0x0240, 0x0240, - 0x0248, 0x024f, 0x024f, 0x024f, 0x0254, 0x025c, 0x026a, 0x0279, - 0x027f, 0x0285, 0x028a, 0x0292, 0x029a, 0x029a, 0x029a, 0x029f, - 0x02a4, 0x02a4, 0x02aa, 0x02aa, 0x02aa, 0x02bd, 0x02bd, 0x02bd, - 0x02c7, 0x02d1, 0x02d1, 0x02d7, 0x02db, 0x02db, 0x02e3, 0x02e3, - 0x02ea, 0x02ea, 0x02ea, 0x02ea, 0x02ea, 0x02f0, 0x02f0, 0x02f5, - 0x02fc, 0x0302, 0x0307, 0x0307, 0x030f, 0x030f, 0x030f, 0x031f, - 0x0327, 0x0327, 0x0327, 0x0327, 0x032e, 0x033a, 0x033a, 0x0340, - // Entry 80 - BF - 0x034b, 0x0352, 0x0352, 0x0358, 0x0358, 0x0362, 0x036d, 0x0375, - 0x0375, 0x0375, 0x0375, 0x037e, 0x037e, 0x037e, 0x0387, 0x0393, - 0x039a, 0x03ac, 0x03be, 0x03ce, 0x03d7, 0x03d7, 0x03dd, 0x03ea, - 0x03ef, 0x03ef, 0x03ef, 0x03f5, 0x03fc, 0x0404, 0x040a, 0x0410, - 0x041a, 0x0422, 0x0422, 0x042c, 0x042f, 0x043f, 0x043f, 0x043f, - 0x044c, 0x0465, 0x0467, 0x0467, 0x046f, 0x0484, 0x048a, 0x0493, - 0x049d, 0x04a3, 0x04b7, -} // Size: 382 bytes - -const es419ScriptStr string = "" + // Size: 53 bytes - "han con bopomofokatakana o hiraganalaolatínmalayalam" - -var es419ScriptIdx = []uint16{ // 98 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - // Entry 40 - 7F - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0026, 0x0026, 0x0026, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x0035, -} // Size: 220 bytes - -const etScriptStr string = "" + // Size: 1611 bytes - "afakaalbaaniahomiaraabiavanaarameaarmeeniaavestabalibamumibassabatakiben" + - "galiBlissi sümbolidbopomofobraahmipunktkiribugibuhiditšaakmaKanada põlis" + - "rahvaste ühtlustatud silpkirikaariatšaamitšerokiiCirthikoptiKüprose silp" + - "kirikirillitsakürilliline kirikuslaavidevanaagarideseretiDuployé kiirkir" + - "iegiptuse demootilineegiptuse hieraatilineegiptuse hieroglüüfkiriElbasan" + - "ietioopiahutsurigruusiaglagoolitsaMasarami gondigootigranthakreekagudžar" + - "atigurmukhihanbikoreahanihanunoolihtsustatud hanitraditsiooniline haniHa" + - "traheebreahiraganaAnatoolia hieroglüüfkiriphahau-hmongi kirijaapani silp" + - "kirjadvanaungariIndusevanaitalijamojaavajaapanitšurtšenikaja-liikatakana" + - "kharoshthikhmeerihodžkikannadakorea segakirikpellekaithitai-thamilaoladi" + - "na fraktuurkiriladina gaeliladinaleptšalimbulineaarkiri Alineaarkiri Bli" + - "sulomalüükialüüdiamahaadžanimandeamanimaaja hieroglüüfkirimendemeroe kur" + - "siivkirimeroemalajalamimodimongoliMoonimruumeiteiMultanibirmaPõhja-Araab" + - "iaNabateanevarinasinkoonüšuogamsantaliOrhonioriaoseidžiosmaniPalmyravana" + - "permiphakpapahlavi raidkiripahlavi psalmikiripahlavi raamatukirifoiniiki" + - "aPollardi miaopartia raidkiriredžangirongorongoruunikiriSamaariasaratiLõ" + - "una-AraabiasauraštraviipekiriShaw’ kirišaaradasiddhamihudavadisingalisor" + - "asojombosundasilotisüüriasüüria estrangeloläänesüüriaidasüüriatagbanvata" + - "akritai-lööuus tai-lõõtamilitanguuditai-vietiteluguTengwaritifinagitagal" + - "ogitaanataitiibetitirhutaugaritivainähtava kõnehoovoleaivanapärsiasumeri" + - "-akadi kiilkirijiiDzanabadzari ruutkiripäritudmatemaatiline tähistusemoj" + - "isümbolidkirjakeeletaüldinemääramata kiri" - -var etScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x000c, 0x0011, 0x0018, 0x0022, 0x002a, - 0x0030, 0x0034, 0x003a, 0x003f, 0x0045, 0x004c, 0x004c, 0x005c, - 0x0064, 0x006b, 0x0074, 0x0078, 0x007e, 0x0086, 0x00b1, 0x00b7, - 0x00be, 0x00c7, 0x00cd, 0x00d2, 0x00e3, 0x00ed, 0x0106, 0x0111, - 0x0119, 0x012a, 0x013e, 0x0153, 0x016c, 0x0174, 0x017c, 0x0183, - 0x018a, 0x0195, 0x01a3, 0x01a8, 0x01af, 0x01b5, 0x01bf, 0x01c7, - 0x01cc, 0x01d1, 0x01d5, 0x01dc, 0x01ed, 0x0202, 0x0207, 0x020e, - 0x0216, 0x0230, 0x0242, 0x0254, 0x025e, 0x0264, 0x026d, 0x0271, - // Entry 40 - 7F - 0x0276, 0x027d, 0x0288, 0x0290, 0x0298, 0x02a2, 0x02a9, 0x02b0, - 0x02b7, 0x02c5, 0x02cb, 0x02d1, 0x02da, 0x02dd, 0x02f0, 0x02fc, - 0x0302, 0x0309, 0x030e, 0x031b, 0x0328, 0x032c, 0x0330, 0x0338, - 0x0340, 0x034b, 0x0351, 0x0355, 0x0355, 0x036b, 0x0370, 0x0381, - 0x0386, 0x0390, 0x0394, 0x039b, 0x03a0, 0x03a4, 0x03aa, 0x03b1, - 0x03b6, 0x03c4, 0x03cb, 0x03d1, 0x03d5, 0x03d9, 0x03df, 0x03e3, - 0x03ea, 0x03f0, 0x03f4, 0x03fc, 0x0402, 0x0409, 0x0409, 0x0412, - 0x0418, 0x0428, 0x043a, 0x044d, 0x0456, 0x0463, 0x0472, 0x047b, - // Entry 80 - BF - 0x0485, 0x048e, 0x0496, 0x049c, 0x04aa, 0x04b4, 0x04bd, 0x04c9, - 0x04d1, 0x04d9, 0x04e1, 0x04e8, 0x04ec, 0x04f3, 0x04f8, 0x04fe, - 0x0506, 0x0519, 0x0528, 0x0533, 0x053b, 0x0541, 0x054a, 0x0557, - 0x055d, 0x0565, 0x056e, 0x0574, 0x057c, 0x0584, 0x058c, 0x0591, - 0x0594, 0x059b, 0x05a2, 0x05a9, 0x05ac, 0x05ba, 0x05bd, 0x05c3, - 0x05ce, 0x05e3, 0x05e6, 0x05fb, 0x0603, 0x061a, 0x061f, 0x0628, - 0x0634, 0x063b, 0x064b, -} // Size: 382 bytes - -const faScriptStr string = "" + // Size: 1877 bytes - "آلبانیایی قفقازیعربیآرامی هخامنشیارمنیاوستاییبالیاییباتاکیبنگالینمادهای " + - "بلیسبوپوموفوبراهمیبریلبوگیاییبوهیدچاکماییکاریچمیچروکیاییکرتقبطیقبرسیسیر" + - "یلیدوناگریدیسرتیکاهنی مصریهیروگلیف مصریاتیوپیاییگرجی خوتسوریگرجیگلاگولی" + - "تیگوتییونانیگجراتیگورومخیهانبیهانگولهانهانونوییهان ساده\u200cشدههان سنت" + - "یعبریهیراگاناهیروگلیف آناتولیسیلابی\u200cهای ژاپنیمجاری باستانایندوسایت" + - "الی باستانجاموجاوه\u200cایژاپنیکایالیکاتاکاناخمریخواجکیکاناراکره\u200cا" + - "یکثیلاناییلائوسیلاتینی فراکتورلاتینی گیلیلاتینیلیمباییخطی الفخطی بلسیای" + - "یلدیاییمنده\u200cایمانویهیروگلیف مایاییمروییتیمالایالامیمغولیمونیمایک م" + - "یتیمیانمارعربی شمالی باستاننبطیاوگامیاورخونیاوریه\u200cایپالمیراییپرمی " + - "باستانپهلوی کتیبه\u200cایپهلوی زبوریپهلوی کتابیفنیقیپارتی کتیبه\u200cای" + - "رجنگیرونیسامریساراتیعربی جنوبی باستانسوراشتراییشاویسینهالیسیلوتی نگاریس" + - "ریانیسریانی سطرنجیلیسریانی غربیسریانی شرقیتگبنواییتامیلیتلوگوییتنگوارتی" + - "فیناغیتاگالوگیتانه\u200cایتایلندیتبتیاوگاریتیویاییگفتار قابل مشاهدهفارس" + - "ی باستانمیخی سومری‐اکدیییموروثیعلائم ریاضیاموجیعلائمنانوشتهمشترکخط نامش" + - "خص" - -var faScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x001f, 0x001f, 0x0027, 0x0040, 0x004a, - 0x0058, 0x0066, 0x0066, 0x0066, 0x0072, 0x007e, 0x007e, 0x0095, - 0x00a5, 0x00b1, 0x00b9, 0x00c7, 0x00d1, 0x00df, 0x00df, 0x00e7, - 0x00ed, 0x00fd, 0x0103, 0x010b, 0x0115, 0x0121, 0x0121, 0x012f, - 0x013b, 0x013b, 0x013b, 0x014e, 0x0167, 0x0167, 0x0179, 0x0190, - 0x0198, 0x01aa, 0x01aa, 0x01b2, 0x01b2, 0x01be, 0x01ca, 0x01d8, - 0x01e2, 0x01ee, 0x01f4, 0x0204, 0x021c, 0x022b, 0x022b, 0x0233, - 0x0243, 0x0262, 0x0262, 0x0282, 0x0299, 0x02a5, 0x02be, 0x02c6, - // Entry 40 - 7F - 0x02d5, 0x02df, 0x02df, 0x02eb, 0x02fb, 0x02fb, 0x0303, 0x030f, - 0x031b, 0x0328, 0x0328, 0x032e, 0x033a, 0x0346, 0x0361, 0x0376, - 0x0382, 0x0382, 0x0390, 0x039d, 0x03a6, 0x03a6, 0x03a6, 0x03b2, - 0x03be, 0x03be, 0x03cd, 0x03d7, 0x03d7, 0x03f4, 0x03f4, 0x03f4, - 0x0402, 0x0416, 0x0416, 0x0420, 0x0428, 0x0428, 0x0439, 0x0439, - 0x0447, 0x0467, 0x046f, 0x046f, 0x046f, 0x046f, 0x046f, 0x047b, - 0x047b, 0x0489, 0x049a, 0x049a, 0x049a, 0x04ac, 0x04ac, 0x04c1, - 0x04c1, 0x04dd, 0x04f2, 0x0507, 0x0511, 0x0511, 0x052d, 0x0537, - // Entry 80 - BF - 0x0537, 0x053f, 0x0549, 0x0555, 0x0575, 0x0589, 0x0589, 0x0591, - 0x0591, 0x0591, 0x0591, 0x059f, 0x059f, 0x059f, 0x059f, 0x05b6, - 0x05c2, 0x05df, 0x05f4, 0x0609, 0x0619, 0x0619, 0x0619, 0x0619, - 0x0625, 0x0625, 0x0625, 0x0633, 0x063f, 0x064f, 0x065f, 0x066e, - 0x067c, 0x0684, 0x0684, 0x0694, 0x069e, 0x06be, 0x06be, 0x06be, - 0x06d5, 0x06f3, 0x06f7, 0x06f7, 0x0703, 0x0718, 0x0722, 0x072c, - 0x073a, 0x0744, 0x0755, -} // Size: 382 bytes - -const fiScriptStr string = "" + // Size: 2551 bytes - "fulanin adlam-aakkostoafakakaukasianalbanialainenahomarabialainenvaltaku" + - "nnanaramealainenarmenialainenavestalainenbalilainenbamumbassabatakilaine" + - "nbengalilainensanskritin bhaiksuki-aakkostobliss-symbolitbopomofobrahmib" + - "raille-pistekirjoitusbugilainenbuhidilainenchakmalainenkanadalaisten alk" + - "uperäiskansojen yhtenäistetty tavukirjoituskaarialainentšamilainencherok" + - "eelainencirthkoptilainenmuinaiskyproslainenkyrillinenkyrillinen muinaisk" + - "irkkoslaavimuunnelmadevanagarideseretDuployén pikakirjoitusegyptiläinen " + - "demoottinenegyptiläinen hieraattinenegyptiläiset hieroglyfitelbasanilain" + - "enetiopialainenmuinaisgeorgialainengeorgialainenglagoliittinenmasaram-go" + - "ndigoottilainengranthakreikkalainengudžaratilainengurmukhikiinan han ja " + - "bopomofohangulkiinalainen hanhanunoolainenyksinkertaistettu hanperintein" + - "en hanhatralainenheprealainenhiraganaanatolialaiset hieroglyfitpahawh hm" + - "ongjapanin tavumerkistötmuinaisunkarilaineninduslainenmuinaisitalialaine" + - "nkorean hangulin jamo-elementitjaavalainenjapanilainendžurtšenkayah lika" + - "takanakharosthikhmeriläinenkhojkikannadalainenkorealainenkpellekaithilan" + - "nalaolainenlatinalainen fraktuuramuunnelmalatinalainen gaelimuunnelmalat" + - "inalainenlepchalainenlimbulainenlineaari-Alineaari-BFraserin aakkosetlom" + - "alyykialainenlyydialainenmahajanilainenmandealainenmanikealainentiibetil" + - "äinen marchan-kirjoitusmaya-hieroglyfitmendemeroiittinen kursiivikirjoi" + - "tusmeroiittinenmalajalamilainenmodi-aakkosetmongolilainenmoon-kohokirjoi" + - "tusmromeiteimultanilainenburmalainenmuinaispohjoisarabialainennabatealai" + - "nennewarin newa-tavukirjoitusnaxi geban’konüshuogamol chikiorkhonorijala" + - "inenosagen aakkostoosmanjalainenpalmyralainenzotuallaimuinaispermiläinen" + - "phags-papiirtokirjoituspahlavilainenpsalttaripahlavilainenkirjapahlavila" + - "inenfoinikialainenPollardin foneettinenpiirtokirjoitusparthialainenrejan" + - "grongorongoriimukirjoitussamarianaramealainensaratimuinaiseteläarabialai" + - "nensaurashtraSignWritingshaw’lainenšaradasiddham-tavukirjoituskhudabadis" + - "inhalilainensorang sompengsoyombo-kirjaimistosundalainensyloti nagrisyyr" + - "ialainensyyrialainen estrangelo-muunnelmasyyrialainen läntinen muunnelma" + - "syyrialainen itäinen muunnelmatagbanwalainentakritailelainenuusi tailuel" + - "ainentamililainentanguttai viettelugulainentengwartifinaghtagalogilainen" + - "thaanathailainentiibetiläinentirhutaugaritilainenvailainennäkyvä puhevar" + - "ang kshitiwoleaimuinaispersialainensumerilais-akkadilainen nuolenpääkirj" + - "oitusyiläinenzanabazar-neliökirjaimistoperittymatemaattinenemoji-symboli" + - "tsymbolitkirjoittamatonmäärittämätöntuntematon kirjoitusjärjestelmä" - -var fiScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0016, 0x001b, 0x0031, 0x0035, 0x0041, 0x0058, 0x0065, - 0x0071, 0x007b, 0x0080, 0x0085, 0x0091, 0x009e, 0x00bb, 0x00c9, - 0x00d1, 0x00d7, 0x00ed, 0x00f7, 0x0103, 0x010f, 0x014d, 0x0159, - 0x0165, 0x0173, 0x0178, 0x0183, 0x0196, 0x01a0, 0x01c7, 0x01d1, - 0x01d8, 0x01ef, 0x0208, 0x0222, 0x023b, 0x0249, 0x0256, 0x026a, - 0x0277, 0x0285, 0x0292, 0x029e, 0x02a5, 0x02b2, 0x02c2, 0x02ca, - 0x02e0, 0x02e6, 0x02f5, 0x0302, 0x0317, 0x0326, 0x0331, 0x033d, - 0x0345, 0x035f, 0x036b, 0x0381, 0x0394, 0x039f, 0x03b2, 0x03d0, - // Entry 40 - 7F - 0x03db, 0x03e7, 0x03f1, 0x03f9, 0x0401, 0x040a, 0x0417, 0x041d, - 0x042a, 0x0435, 0x043b, 0x0441, 0x0446, 0x044f, 0x046e, 0x0489, - 0x0495, 0x04a1, 0x04ac, 0x04b6, 0x04c0, 0x04d1, 0x04d5, 0x04e1, - 0x04ed, 0x04fb, 0x0507, 0x0514, 0x0534, 0x0544, 0x0549, 0x0567, - 0x0573, 0x0583, 0x0590, 0x059d, 0x05af, 0x05b2, 0x05b8, 0x05c5, - 0x05d0, 0x05ea, 0x05f7, 0x0611, 0x061a, 0x0620, 0x0626, 0x062a, - 0x0632, 0x0638, 0x0643, 0x0652, 0x065f, 0x066c, 0x0675, 0x0688, - 0x0690, 0x06ac, 0x06c2, 0x06d4, 0x06e2, 0x06f7, 0x0713, 0x0719, - // Entry 80 - BF - 0x0723, 0x0731, 0x0745, 0x074b, 0x0764, 0x076e, 0x0779, 0x0786, - 0x078d, 0x07a2, 0x07ab, 0x07b8, 0x07c6, 0x07d9, 0x07e4, 0x07f0, - 0x07fc, 0x081d, 0x083d, 0x085c, 0x086a, 0x086f, 0x087a, 0x088b, - 0x0897, 0x089d, 0x08a5, 0x08b1, 0x08b8, 0x08c0, 0x08ce, 0x08d4, - 0x08de, 0x08ec, 0x08f3, 0x0900, 0x0909, 0x0916, 0x0923, 0x0929, - 0x093c, 0x0968, 0x0971, 0x098c, 0x0993, 0x09a0, 0x09ae, 0x09b6, - 0x09c4, 0x09d6, 0x09f7, -} // Size: 382 bytes - -const filScriptStr string = "" + // Size: 363 bytes - "ArabicArmenianBanglaBopomofoBrailleCyrillicDevanagariEthiopicGeorgianGre" + - "ekGujaratiGurmukhiHanbHangulHanPinasimpleng HanTradisyonal na HanHebrewH" + - "iraganaJapanese syllabariesJamoJapaneseKatakanaKhmerKannadaKoreanLaoLati" + - "nMalayalamMongolianMyanmarOdiaSinhalaTamilTeluguThaanaThaiTibetanMathema" + - "tical NotationEmojiMga SimboloHindi NakasulatKaraniwanHindi Kilalang Scr" + - "ipt" - -var filScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x0014, 0x0014, 0x0014, - 0x001c, 0x001c, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x002b, 0x002b, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x004a, 0x0052, 0x005a, - 0x005e, 0x0064, 0x0067, 0x0067, 0x0077, 0x0089, 0x0089, 0x008f, - 0x0097, 0x0097, 0x0097, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00af, - // Entry 40 - 7F - 0x00af, 0x00b7, 0x00b7, 0x00b7, 0x00bf, 0x00bf, 0x00c4, 0x00c4, - 0x00cb, 0x00d1, 0x00d1, 0x00d1, 0x00d1, 0x00d4, 0x00d4, 0x00d4, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, 0x00d9, - 0x00d9, 0x00e2, 0x00e2, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, - 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, - 0x00f2, 0x00f2, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, - 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, - // Entry 80 - BF - 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, - 0x00f6, 0x00f6, 0x00f6, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x0102, 0x0102, 0x0102, 0x0108, 0x0108, 0x0108, 0x0108, 0x010e, - 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x012e, 0x0133, 0x013e, - 0x014d, 0x0156, 0x016b, -} // Size: 382 bytes - -const frScriptStr string = "" + // Size: 1471 bytes - "arabearaméen impérialarménienavestiquebalinaisbatakbengalisymboles Bliss" + - "bopomofobrâhmîbraillebouguisbouhidechakmasyllabaire autochtone canadien " + - "unifiécarienchamcherokeecirthcoptesyllabaire chypriotecyrilliquecyrilliq" + - "ue (variante slavonne)dévanâgarîdéséretdémotique égyptienhiératique égyp" + - "tienhiéroglyphes égyptienséthiopiquegéorgien khoutsourigéorgienglagoliti" + - "quegotiquegrecgoudjarâtîgourmoukhîhan avec bopomofohangûlsinogrammeshano" + - "unóosinogrammes simplifiéssinogrammes traditionnelshébreuhiraganapahawh " + - "hmongkatakana ou hiraganaancien hongroisindusancien italiquejamojavanais" + - "japonaiskayah likatakanakharochthîkhmerkannaracoréenkaithîlannalaolatin " + - "(variante brisée)latin (variante gaélique)latinlepchalimboulinéaire Alin" + - "éaire Blycienlydienmandéenmanichéenhiéroglyphes mayasméroïtiquemalayala" + - "mmongolmoonmeitei mayekbirmann’koogamol tchikiorkhonoriyaosmanaisancien " + - "permienphags papehlevi des inscriptionspehlevi des psautierspehlevi des " + - "livresphénicienphonétique de Pollardparthe des inscriptionsrejangrongoro" + - "ngoruniquesamaritainsaratisaurashtraécriture des signesshaviencinghalais" + - "sundanaissylotî nâgrîsyriaquesyriaque estranghélosyriaque occidentalsyri" + - "aque orientaltagbanouataï-lenouveau taï-luetamoultaï viêttélougoutengwar" + - "tifinaghtagalthânathaïtibétainougaritiquevaïparole visiblecunéiforme per" + - "sépolitaincunéiforme suméro-akkadienyihériténotation mathématiqueemojisy" + - "mbolesnon écritcommunécriture inconnue" - -var frScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0017, 0x0020, - 0x0029, 0x0031, 0x0031, 0x0031, 0x0036, 0x003d, 0x003d, 0x004b, - 0x0053, 0x005b, 0x0062, 0x0069, 0x0070, 0x0076, 0x009c, 0x00a2, - 0x00a6, 0x00ae, 0x00b3, 0x00b8, 0x00cc, 0x00d6, 0x00f4, 0x0101, - 0x010a, 0x010a, 0x011e, 0x0133, 0x014b, 0x014b, 0x0156, 0x016a, - 0x0173, 0x017f, 0x017f, 0x0186, 0x0186, 0x018a, 0x0196, 0x01a1, - 0x01b2, 0x01b9, 0x01c4, 0x01cd, 0x01e4, 0x01fd, 0x01fd, 0x0204, - 0x020c, 0x020c, 0x0218, 0x022c, 0x023b, 0x0240, 0x024f, 0x0253, - // Entry 40 - 7F - 0x025b, 0x0263, 0x0263, 0x026b, 0x0273, 0x027e, 0x0283, 0x0283, - 0x028a, 0x0291, 0x0291, 0x0298, 0x029d, 0x02a0, 0x02b8, 0x02d2, - 0x02d7, 0x02dd, 0x02e3, 0x02ee, 0x02f9, 0x02f9, 0x02f9, 0x02ff, - 0x0305, 0x0305, 0x030d, 0x0317, 0x0317, 0x032a, 0x032a, 0x032a, - 0x0336, 0x033f, 0x033f, 0x0345, 0x0349, 0x0349, 0x0355, 0x0355, - 0x035b, 0x035b, 0x035b, 0x035b, 0x035b, 0x0361, 0x0361, 0x0365, - 0x036e, 0x0374, 0x0379, 0x0379, 0x0381, 0x0381, 0x0381, 0x038f, - 0x0397, 0x03af, 0x03c4, 0x03d6, 0x03e0, 0x03f6, 0x040d, 0x0413, - // Entry 80 - BF - 0x041d, 0x0424, 0x042e, 0x0434, 0x0434, 0x043e, 0x0452, 0x0459, - 0x0459, 0x0459, 0x0459, 0x0463, 0x0463, 0x0463, 0x046c, 0x047b, - 0x0483, 0x0498, 0x04ab, 0x04bc, 0x04c5, 0x04c5, 0x04cc, 0x04dc, - 0x04e2, 0x04e2, 0x04ec, 0x04f5, 0x04fc, 0x0504, 0x0509, 0x050f, - 0x0514, 0x051d, 0x051d, 0x0528, 0x052c, 0x053a, 0x053a, 0x053a, - 0x0554, 0x0570, 0x0572, 0x0572, 0x057a, 0x0590, 0x0595, 0x059d, - 0x05a7, 0x05ad, 0x05bf, -} // Size: 382 bytes - -const frCAScriptStr string = "" + // Size: 114 bytes - "devanagarigujaratihanbcaractères chinois simplifiéscaractères chinois tr" + - "aditionnelssyllabaires japonaisodiazsye" - -var frCAScriptIdx = []uint16{ // 175 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0012, 0x0012, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0035, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - // Entry 40 - 7F - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - // Entry 80 - BF - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0072, -} // Size: 374 bytes - -const guScriptStr string = "" + // Size: 3357 bytes - "અરબીઇમ્પિરિયલ આર્મનિકઅર્મેનિયનઅવેસ્તનબાલીનીઝબટાકબંગાળીબ્લિસિમ્બોલ્સબોપોમ" + - "ોફોબ્રહ્મીબ્રેલબગિનીસબુહિદચકમાયુનાઇટેડ કેનેડિયન એબોરિજનલ સિલેબિક્સકરૈન" + - "ચેરોકીસિર્થકોપ્ટિકસિપ્રાયટસિરિલિકઓલ્ડ ચર્ચ સ્લાવોનિક સિરિલિકદેવનાગરીડે" + - "સરેટઇજિપ્શિયન ડેમોટિકઇજિપ્શિયન હાઇરેટિકઇજિપ્શિયન હાઇરોગ્લિફ્સઇથિયોપિકજ" + - "્યોર્જિઅન ખુતસુરીજ્યોર્જિઅનગ્લેગોલિટિકગોથિકગ્રીકગુજરાતીગુરૂમુખીહાન્બહં" + - "ગુલહાનહનુનૂસરળીકૃત હાનપરંપરાગત હાનહીબ્રુહિરાગાનાપહાઉ મોન્ગજાપાનીઝ વર્ણ" + - "માળાઓલ્ડ હંગેરિયનસિન્ધુજૂનુ ઇટાલિકજેમોજાવાનીસજાપાનીકાયાહ લીકટાકાનાખારો" + - "શ્થીખ્મેરકન્નડાકોરિયનકૈથીલાનાલાઓફ્રેકતુર લેટિનગૈલિક લેટિનલેટિનલેપચાલિમ" + - "્બૂલીનિયર અલીનિયર બીલિશિયનલિડિયનમાન્ડાયીનમાનીચાયીનમયાન હાઇરોગ્લિફ્સમેર" + - "ોઇટિકમલયાલમમોંગોલિયનમૂનમેઇતેઇ માયેકમ્યાંમારએન’ કોઓઘામઓલ ચિકીઓરખોનઉડિયા" + - "ઓસ્માન્યાઓલ્ડ પરમિકફાગ્સ-પાઇન્સ્ક્રિપ્શનલ પહલવીસાલટર પહલવીબુક પહલવીફોન" + - "િશિયનપોલાર્ડ ફોનેટિકઇન્સ્ક્રિપ્શનલ પાર્થિયનરીજાંગરોંગોરોંગોરૂનિકસમરિટા" + - "નસરાતીસૌરાષ્ટ્રસંકેત લિપીશાવિયાનસિંહલીસુદાનીઝસિલોતી નાગરીસિરિયેકએસ્ત્ર" + - "ેન્જેલો સિરિયાકપશ્ચિમ સિરિયાકપૂર્વ સિરિયાકતગબન્વાતાઇ લીનવીન તાઇ લૂતમિલ" + - "તાઇ વેઇતતેલુગુતેન્ગવારતિફિનાઘટેગાલોગથાનાથાઇટિબેટીયુગાતિટિકવાઇવિસિબલ સ્" + - "પીચજુની ફારસીસુમેરો અક્કાદિયન સુનિફોર્મયીવંશાગતગણિતીય સંકેતલિપિઇમોજીપ્" + - "રતીકોઅલિખિતસામાન્યઅજ્ઞાત લિપિ" - -var guScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x003d, 0x0058, - 0x006d, 0x0082, 0x0082, 0x0082, 0x008e, 0x00a0, 0x00a0, 0x00c7, - 0x00df, 0x00f4, 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, - 0x01a2, 0x01b4, 0x01c3, 0x01d8, 0x01f0, 0x0205, 0x0250, 0x0268, - 0x027a, 0x027a, 0x02ab, 0x02df, 0x031f, 0x031f, 0x0337, 0x036b, - 0x0389, 0x03aa, 0x03aa, 0x03b9, 0x03b9, 0x03c8, 0x03dd, 0x03f5, - 0x0404, 0x0413, 0x041c, 0x042b, 0x044a, 0x046c, 0x046c, 0x047e, - 0x0496, 0x0496, 0x04b2, 0x04e0, 0x0505, 0x0517, 0x0536, 0x0542, - // Entry 40 - 7F - 0x0557, 0x0569, 0x0569, 0x057f, 0x0594, 0x05ac, 0x05bb, 0x05bb, - 0x05cd, 0x05df, 0x05df, 0x05eb, 0x05f7, 0x0600, 0x0628, 0x0647, - 0x0656, 0x0665, 0x0677, 0x068d, 0x06a6, 0x06a6, 0x06a6, 0x06b8, - 0x06ca, 0x06ca, 0x06e5, 0x0700, 0x0700, 0x0731, 0x0731, 0x0731, - 0x0749, 0x075b, 0x075b, 0x0776, 0x077f, 0x077f, 0x07a1, 0x07a1, - 0x07b9, 0x07b9, 0x07b9, 0x07b9, 0x07b9, 0x07c9, 0x07c9, 0x07d5, - 0x07e8, 0x07f7, 0x0806, 0x0806, 0x0821, 0x0821, 0x0821, 0x083d, - 0x0853, 0x088d, 0x08ac, 0x08c5, 0x08dd, 0x0908, 0x094b, 0x095d, - // Entry 80 - BF - 0x097b, 0x098a, 0x099f, 0x09ae, 0x09ae, 0x09c9, 0x09e5, 0x09fa, - 0x09fa, 0x09fa, 0x09fa, 0x0a0c, 0x0a0c, 0x0a0c, 0x0a21, 0x0a43, - 0x0a58, 0x0a95, 0x0abd, 0x0ae2, 0x0af7, 0x0af7, 0x0b07, 0x0b24, - 0x0b30, 0x0b30, 0x0b46, 0x0b58, 0x0b70, 0x0b85, 0x0b9a, 0x0ba6, - 0x0baf, 0x0bc1, 0x0bc1, 0x0bdc, 0x0be5, 0x0c07, 0x0c07, 0x0c07, - 0x0c23, 0x0c6d, 0x0c73, 0x0c73, 0x0c85, 0x0cb3, 0x0cc2, 0x0cd7, - 0x0ce9, 0x0cfe, 0x0d1d, -} // Size: 382 bytes - -const heScriptStr string = "" + // Size: 875 bytes - "ערביארמניבאלינזיבנגליבופומופובריילצ׳אםצ׳ירוקיקופטיקפריסאיקיריליקירילי סל" + - "אבוני כנסייתי עתיקדוואנגריכתב חרטומיםאתיופיגאורגיגותייווניגוג׳רטיגורמוק" + - "יהאנבהאנגולהאןהאן פשוטהאן מסורתיעבריהירגאנההברתי יפניהונגרי עתיקאינדוסא" + - "יטלקי עתיקג׳אמוג׳אוונזייפניקטקאנהחמריקאנאדהקוריאנילאיתלטיני גאלילטינימא" + - "יהמליאלאםמונגולימיאנמראורייהפיניקירוניסינהלהסוריסורי מערביסורי מזרחיטמי" + - "לטלוגוטגלוגתאנהתאיטיבטיאוגריתיפרסי עתיקמורשסימון מתמטיאמוג׳יסמליםלא כתו" + - "ברגילכתב שאינו ידוע" - -var heScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, - 0x0012, 0x0020, 0x0020, 0x0020, 0x0020, 0x002a, 0x002a, 0x002a, - 0x003a, 0x003a, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, - 0x004c, 0x005a, 0x005a, 0x0064, 0x0072, 0x007e, 0x00b1, 0x00c1, - 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00d6, 0x00d6, 0x00e2, 0x00e2, - 0x00ee, 0x00ee, 0x00ee, 0x00f6, 0x00f6, 0x0100, 0x010e, 0x011c, - 0x0124, 0x0130, 0x0136, 0x0136, 0x0145, 0x0158, 0x0158, 0x0160, - 0x016e, 0x016e, 0x016e, 0x0181, 0x0196, 0x01a2, 0x01b7, 0x01c1, - // Entry 40 - 7F - 0x01d1, 0x01d9, 0x01d9, 0x01d9, 0x01e5, 0x01e5, 0x01ed, 0x01ed, - 0x01f9, 0x0207, 0x0207, 0x0207, 0x0207, 0x020f, 0x020f, 0x0222, - 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, - 0x022c, 0x022c, 0x022c, 0x022c, 0x022c, 0x0234, 0x0234, 0x0234, - 0x0234, 0x0242, 0x0242, 0x0250, 0x0250, 0x0250, 0x0250, 0x0250, - 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, - 0x025c, 0x025c, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, - 0x0268, 0x0268, 0x0268, 0x0268, 0x0274, 0x0274, 0x0274, 0x0274, - // Entry 80 - BF - 0x0274, 0x027c, 0x027c, 0x027c, 0x027c, 0x027c, 0x027c, 0x027c, - 0x027c, 0x027c, 0x027c, 0x0288, 0x0288, 0x0288, 0x0288, 0x0288, - 0x0290, 0x0290, 0x02a3, 0x02b6, 0x02b6, 0x02b6, 0x02b6, 0x02b6, - 0x02be, 0x02be, 0x02be, 0x02c8, 0x02c8, 0x02c8, 0x02d2, 0x02da, - 0x02e0, 0x02ea, 0x02ea, 0x02f8, 0x02f8, 0x02f8, 0x02f8, 0x02f8, - 0x0309, 0x0309, 0x0309, 0x0309, 0x0311, 0x0326, 0x0332, 0x033c, - 0x0349, 0x0351, 0x036b, -} // Size: 382 bytes - -const hiScriptStr string = "" + // Size: 3366 bytes - "अरबीइम्पिरियल आर्मेनिकआर्मेनियाईअवेस्तनबालीबटकीबंगालीब्लिसिम्बॉल्सबोपोमो" + - "फ़ोब्रह्मीब्रेलबगिनीसबुहिदचकमायुनिफाइड कैनेडियन एबोरिजनल सिलेबिक्सकरैन" + - "चामचेरोकीकिर्थकॉप्टिककाइप्रायटसिरिलिकओल्ड चर्च स्लावोनिक सिरिलिकदेवनाग" + - "रीडेसरेटइजिप्शियन डेमोटिकइजिप्शियन हाइरेटिकइजिप्शियन हाइरोग्लिफ्सइथियो" + - "पियाईजॉर्जियन खुतसुरीजॉर्जियनग्लेगोलिटिकगोथिकग्रन्थयूनानीगुजरातीगुरमुख" + - "ीहांबहंगुलहानहनुनूसरलीकृत हानपारंपरिक हानहिब्रूहिरागानापाहो ह्मोन्गजाप" + - "ानी सिलेबरीज़ऑल्ड हंगेरियनसिन्धुपुरानी इटलीजामोजावानीसजापानीकायाह लीका" + - "ताकानाखारोशथीखमेरकन्नड़कोरियाईकैथीलानालाओफ़्रैक्टुर लातिनीगेली लातिनील" + - "ैटिनलेपचालिम्बूलीनियर Aलीनियर बीलिशियनलिडियनमनडेनमनीशीनमयान हाइरोग्लिफ" + - "्समेरोइटिकमलयालममंगोलियाईमूनमेइतेइ मायेकम्यांमारएन्‘कोओगमऑल चिकीओरखोनउ" + - "ड़ियाओस्मान्याओल्ड परमिकफाग्स-पाइंस्क्रिपश्नल पाहलवीसॉल्टर पाहलवीबुक प" + - "ाहलवीफोनिशियनपॉलार्ड फोनेटिकइंस्क्रिपश्नल पार्थियनरीजांगरोन्गोरोन्गोरू" + - "निकसमरिटनसरातीसौराष्ट्रसांकेतिक लेखशावियानसिंहलीसूडानीसिलोती नागरीसिरि" + - "येकएस्त्रेन्जेलो सिरिएकपश्चिम सिरिएकपूर्व सिरिएकतगबन्वाताई लीनया ताई ल" + - "ुतमिलताई विएततेलुगूतेन्गवारतिफिनाघटैगालोगथानाथाईतिब्बतीयुगारिटिकवाईविस" + - "िबल स्पीचपुरानी फारसीसुमेरो अक्कादियन सुनिफॉर्मयीविरासतगणितीय संकेतनईम" + - "ोजीचिह्नअलिखितसामान्यअज्ञात लिपि" - -var hiScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005e, - 0x0073, 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x009d, 0x00c4, - 0x00df, 0x00f4, 0x0103, 0x0115, 0x0124, 0x0130, 0x0196, 0x01a2, - 0x01ab, 0x01bd, 0x01cc, 0x01e1, 0x01fc, 0x0211, 0x025c, 0x0274, - 0x0286, 0x0286, 0x02b7, 0x02eb, 0x032b, 0x032b, 0x0349, 0x0377, - 0x038f, 0x03b0, 0x03b0, 0x03bf, 0x03d1, 0x03e3, 0x03f8, 0x040d, - 0x0419, 0x0428, 0x0431, 0x0440, 0x045f, 0x0481, 0x0481, 0x0493, - 0x04ab, 0x04ab, 0x04cd, 0x04fb, 0x0520, 0x0532, 0x0551, 0x055d, - // Entry 40 - 7F - 0x0572, 0x0584, 0x0584, 0x059a, 0x05b2, 0x05c7, 0x05d3, 0x05d3, - 0x05e5, 0x05fa, 0x05fa, 0x0606, 0x0612, 0x061b, 0x064c, 0x066b, - 0x067a, 0x0689, 0x069b, 0x06af, 0x06c8, 0x06c8, 0x06c8, 0x06da, - 0x06ec, 0x06ec, 0x06fb, 0x070d, 0x070d, 0x073e, 0x073e, 0x073e, - 0x0756, 0x0768, 0x0768, 0x0783, 0x078c, 0x078c, 0x07ae, 0x07ae, - 0x07c6, 0x07c6, 0x07c6, 0x07c6, 0x07c6, 0x07d8, 0x07d8, 0x07e1, - 0x07f4, 0x0803, 0x0815, 0x0815, 0x0830, 0x0830, 0x0830, 0x084c, - 0x0862, 0x089c, 0x08c1, 0x08dd, 0x08f5, 0x0920, 0x0960, 0x0972, - // Entry 80 - BF - 0x0996, 0x09a5, 0x09b7, 0x09c6, 0x09c6, 0x09e1, 0x0a03, 0x0a18, - 0x0a18, 0x0a18, 0x0a18, 0x0a2a, 0x0a2a, 0x0a2a, 0x0a3c, 0x0a5e, - 0x0a73, 0x0aad, 0x0ad2, 0x0af4, 0x0b09, 0x0b09, 0x0b19, 0x0b33, - 0x0b3f, 0x0b3f, 0x0b55, 0x0b67, 0x0b7f, 0x0b94, 0x0ba9, 0x0bb5, - 0x0bbe, 0x0bd3, 0x0bd3, 0x0bee, 0x0bf7, 0x0c19, 0x0c19, 0x0c19, - 0x0c3b, 0x0c85, 0x0c8b, 0x0c8b, 0x0c9d, 0x0cc2, 0x0cd1, 0x0ce0, - 0x0cf2, 0x0d07, 0x0d26, -} // Size: 382 bytes - -const hrScriptStr string = "" + // Size: 2397 bytes - "afaka pismoarapsko pismoaramejsko pismoarmensko pismoavestansko pismobal" + - "ijsko pismobamum pismobassa vah pismobatak pismobengalsko pismoblissymbo" + - "lsbopomofo pismobrahmi pismobrajicabuginsko pismobuhid pismochakma pismo" + - "unificirani kanadski aboriđinski slogovikarijsko pismočamsko pismočeroki" + - " pismocirth pismokoptsko pismocypriot pismoćirilicastaroslavenska crkven" + - "a čirilicadevangari pismodeseret pismoegipatsko narodno pismoegipatsko h" + - "ijeratsko pismoegipatski hijeroglifietiopsko pismogruzijsko khutsuri pis" + - "mogruzijsko pismoglagoljicagotičko pismograntha pismogrčko pismogudžarat" + - "sko pismogurmukhi pismohanb pismohangul pismohansko pismohanunoo pismopo" + - "jednostavljeno hansko pismotradicionalno hansko pismohebrejsko pismohira" + - "gana pismoanatolijski hijeroglifipahawh hmong pismojapansko slogovno pis" + - "mostaro mađarsko pismoindijsko pismostaro talijansko pismojamo pismojava" + - "nsko pismojapansko pismojurchen pismokayah li pismokatakana pismokharosh" + - "thi pismokmersko pismokhojki pismokannada pismokorejsko pismokpelle pism" + - "okaithi pismolanna pismolaosko pismofraktur latinicakeltska latinicalati" + - "nicalepcha pismolimbu pismolinear A pismolinear B pismofraser pismoloma " + - "pismolikijsko pismolidijsko pismomandai pismomanihejsko pismomajanski hi" + - "jeroglifimende pismomeroitski kurzivmeroitic pismomalajalamsko pismomong" + - "olsko pismomoon pismomro pismomeitei mayek pismomjanmarsko pismostaro sj" + - "evernoarapsko pismonabatejsko pismonaxi geba pismon’ko pismonushu pismoo" + - "gham pismool chiki pismoorkhon pismoorijsko pismoosmanya pismopalmyrene " + - "pismostaro permic pismophags-pa pismopisani pahlavipsalter pahlavipahlav" + - "i pismofeničko pismopollard fonetsko pismopisani parthianrejang pismoron" + - "gorongo pismorunsko pismosamaritansko pismosarati pismostaro južnoarapsk" + - "o pismosaurashtra pismoznakovno pismoshavian pismosharada pismokhudawadi" + - " pismosinhaleško pismosora sompeng pismosundansko pismosyloti nagri pism" + - "osirijsko pismosirijsko estrangelo pismopismo zapadne Sirijepismo istočn" + - "e Sirijetagbanwa pismotakri pismotai le pismonovo tai lue pismotamilsko " + - "pismotangut pismotai viet pismoteluško pismotengwar pismotifinartagalog " + - "pismothaana pismotajsko pismotibetansko pismotirhuta pismougaritsko pism" + - "ovai pismoVisible Speechvarang kshiti pismowoleai pismostaro perzijsko p" + - "ismosumersko-akadsko cuneiform pismoYi pismonasljedno pismomatematičko z" + - "nakovljeemotikonisimbolijezik bez pismenostizajedničko pismonepoznato pi" + - "smo" - -var hrScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x0018, 0x0027, 0x0035, - 0x0045, 0x0053, 0x005e, 0x006d, 0x0078, 0x0087, 0x0087, 0x0092, - 0x00a0, 0x00ac, 0x00b3, 0x00c1, 0x00cc, 0x00d8, 0x0101, 0x010f, - 0x011c, 0x0129, 0x0134, 0x0141, 0x014e, 0x0157, 0x0177, 0x0186, - 0x0193, 0x0193, 0x01aa, 0x01c4, 0x01d9, 0x01d9, 0x01e7, 0x01ff, - 0x020e, 0x0218, 0x0218, 0x0226, 0x0233, 0x023f, 0x0251, 0x025f, - 0x0269, 0x0275, 0x0281, 0x028e, 0x02ab, 0x02c5, 0x02c5, 0x02d4, - 0x02e2, 0x02f9, 0x030b, 0x0322, 0x0337, 0x0345, 0x035b, 0x0365, - // Entry 40 - 7F - 0x0373, 0x0381, 0x038e, 0x039c, 0x03aa, 0x03ba, 0x03c7, 0x03d3, - 0x03e0, 0x03ee, 0x03fa, 0x0406, 0x0411, 0x041d, 0x042d, 0x043d, - 0x0445, 0x0451, 0x045c, 0x046a, 0x0478, 0x0484, 0x048e, 0x049c, - 0x04aa, 0x04aa, 0x04b6, 0x04c6, 0x04c6, 0x04da, 0x04e5, 0x04f5, - 0x0503, 0x0515, 0x0515, 0x0524, 0x052e, 0x0537, 0x0549, 0x0549, - 0x0559, 0x0574, 0x0584, 0x0584, 0x0593, 0x059f, 0x05aa, 0x05b5, - 0x05c3, 0x05cf, 0x05dc, 0x05dc, 0x05e9, 0x05f8, 0x05f8, 0x060a, - 0x0618, 0x0626, 0x0635, 0x0642, 0x0650, 0x0666, 0x0675, 0x0681, - // Entry 80 - BF - 0x0691, 0x069d, 0x06af, 0x06bb, 0x06d4, 0x06e4, 0x06f2, 0x06ff, - 0x070c, 0x070c, 0x071b, 0x072c, 0x073e, 0x073e, 0x074d, 0x075f, - 0x076d, 0x0786, 0x079a, 0x07af, 0x07bd, 0x07c8, 0x07d4, 0x07e6, - 0x07f4, 0x0800, 0x080e, 0x081c, 0x0829, 0x0830, 0x083d, 0x0849, - 0x0855, 0x0865, 0x0872, 0x0881, 0x088a, 0x0898, 0x08ab, 0x08b7, - 0x08cc, 0x08ec, 0x08f4, 0x08f4, 0x0903, 0x0919, 0x0922, 0x0929, - 0x093d, 0x094e, 0x095d, -} // Size: 382 bytes - -const huScriptStr string = "" + // Size: 1286 bytes - "ArabBirodalmi arámiÖrményAvesztánBalinézBatakBengáliBliss jelképrendszer" + - "BopomofoBrámiVakírásBuginézBuhidCsakmaEgyesített kanadai őslakos jelekKa" + - "riCsámCserokiKoptCiprusiCirillÓegyházi szláv cirillDevanagáriDeseretEgyi" + - "ptomi demotikusEgyiptomi hieratikusEgyiptomi hieroglifákEtiópGrúz kucsur" + - "iGrúzGlagolitikusGótGörögGudzsarátiGurmukiHanbHangulHanHanunooEgyszerűsí" + - "tett kínaiHagyományos kínaiHéberHiraganaPahawh hmongKatakana vagy hiraga" + - "naÓmagyarIndusRégi olaszJamoJávaiJapánKajah liKatakanaKharoshthiKhmerKan" + - "nadaKoreaiKaithiLannaLaoFraktur latinGael latinLatinLepchaLimbuLineáris " + - "ALineáris BLíciaiLídiaiMandaiManicheusMaja hieroglifákMeroitikusMalajála" + - "mMongolMoonMeitei mayekBurmaiN’koOghamOl chikiOrhonOriyaOszmánÓpermikusP" + - "hags-paFelriatos pahlaviPsalter pahlaviKönyv pahlaviFőniciaiPollard fone" + - "tikusFeliratos parthianRedzsangRongorongoRunikusSzamaritánSzaratiSzauras" + - "traJelírásShaw ábécéSzingalézSzundanézSylheti nagáriSzíriaiEstrangelo sz" + - "íriaiNyugat-szíriaiKelet-szíriaiTagbanwaTai LeÚj tai lueTamilTai vietTe" + - "luguTengwarBerberTagalogThaanaThaiTibetiUgariVaiLátható beszédÓperzsaÉkí" + - "rásos suméro-akkádJiSzármaztatottMatematikai jelrendszerEmojiSzimbólumÍr" + - "atlan nyelvek kódjaMeghatározatlanIsmeretlen írásrendszer" - -var huScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0014, 0x001c, - 0x0025, 0x002d, 0x002d, 0x002d, 0x0032, 0x003a, 0x003a, 0x004f, - 0x0057, 0x005d, 0x0066, 0x006e, 0x0073, 0x0079, 0x009b, 0x009f, - 0x00a4, 0x00ab, 0x00ab, 0x00af, 0x00b6, 0x00bc, 0x00d4, 0x00df, - 0x00e6, 0x00e6, 0x00f9, 0x010d, 0x0123, 0x0123, 0x0129, 0x0136, - 0x013b, 0x0147, 0x0147, 0x014b, 0x014b, 0x0152, 0x015d, 0x0164, - 0x0168, 0x016e, 0x0171, 0x0178, 0x018f, 0x01a2, 0x01a2, 0x01a8, - 0x01b0, 0x01b0, 0x01bc, 0x01d2, 0x01da, 0x01df, 0x01ea, 0x01ee, - // Entry 40 - 7F - 0x01f4, 0x01fa, 0x01fa, 0x0202, 0x020a, 0x0214, 0x0219, 0x0219, - 0x0220, 0x0226, 0x0226, 0x022c, 0x0231, 0x0234, 0x0241, 0x024b, - 0x0250, 0x0256, 0x025b, 0x0266, 0x0271, 0x0271, 0x0271, 0x0278, - 0x027f, 0x027f, 0x0285, 0x028e, 0x028e, 0x029f, 0x029f, 0x029f, - 0x02a9, 0x02b3, 0x02b3, 0x02b9, 0x02bd, 0x02bd, 0x02c9, 0x02c9, - 0x02cf, 0x02cf, 0x02cf, 0x02cf, 0x02cf, 0x02d5, 0x02d5, 0x02da, - 0x02e2, 0x02e7, 0x02ec, 0x02ec, 0x02f3, 0x02f3, 0x02f3, 0x02fd, - 0x0305, 0x0316, 0x0325, 0x0333, 0x033c, 0x034d, 0x035f, 0x0367, - // Entry 80 - BF - 0x0371, 0x0378, 0x0383, 0x038a, 0x038a, 0x0394, 0x039d, 0x03aa, - 0x03aa, 0x03aa, 0x03aa, 0x03b4, 0x03b4, 0x03b4, 0x03be, 0x03cd, - 0x03d5, 0x03e8, 0x03f7, 0x0405, 0x040d, 0x040d, 0x0413, 0x041e, - 0x0423, 0x0423, 0x042b, 0x0431, 0x0438, 0x043e, 0x0445, 0x044b, - 0x044f, 0x0455, 0x0455, 0x045a, 0x045d, 0x046e, 0x046e, 0x046e, - 0x0476, 0x0490, 0x0492, 0x0492, 0x04a0, 0x04b7, 0x04bc, 0x04c6, - 0x04dd, 0x04ed, 0x0506, -} // Size: 382 bytes - -const hyScriptStr string = "" + // Size: 779 bytes - "արաբականհայկականբենգալականբոպոմոֆոբրայլիկյուրեղագիրդեւանագարիեթովպականվր" + - "ացականհունականգուջարաթիգուրմուխիհանբհանգըլչինականպարզեցված չինականավանդ" + - "ական չինականեբրայականհիրագանաճապոնական վանկագիրջամոճապոնականկատականաքմե" + - "րականկաննադակորեականլաոսականլատինականմալայալամմոնղոլականմյանմարականօրիյ" + - "ասինհալականթամիլականթելուգութաանաթայականտիբեթականմաթեմատիկական նշաններէ" + - "մոձինշաններչգրվածընդհանուրանհայտ գիր" - -var hyScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0034, 0x0034, 0x0034, - 0x0044, 0x0044, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, 0x0066, 0x0066, 0x007a, - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x008c, 0x008c, - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x00ac, 0x00be, 0x00d0, - 0x00d8, 0x00e4, 0x00f2, 0x00f2, 0x0113, 0x0134, 0x0134, 0x0146, - 0x0156, 0x0156, 0x0156, 0x0179, 0x0179, 0x0179, 0x0179, 0x0181, - // Entry 40 - 7F - 0x0181, 0x0193, 0x0193, 0x0193, 0x01a3, 0x01a3, 0x01b3, 0x01b3, - 0x01c1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01e1, 0x01e1, 0x01e1, - 0x01f3, 0x01f3, 0x01f3, 0x01f3, 0x01f3, 0x01f3, 0x01f3, 0x01f3, - 0x01f3, 0x01f3, 0x01f3, 0x01f3, 0x01f3, 0x01f3, 0x01f3, 0x01f3, - 0x01f3, 0x0205, 0x0205, 0x0219, 0x0219, 0x0219, 0x0219, 0x0219, - 0x022f, 0x022f, 0x022f, 0x022f, 0x022f, 0x022f, 0x022f, 0x022f, - 0x022f, 0x022f, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - // Entry 80 - BF - 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, 0x0239, - 0x0239, 0x0239, 0x0239, 0x024d, 0x024d, 0x024d, 0x024d, 0x024d, - 0x024d, 0x024d, 0x024d, 0x024d, 0x024d, 0x024d, 0x024d, 0x024d, - 0x025f, 0x025f, 0x025f, 0x026f, 0x026f, 0x026f, 0x026f, 0x0279, - 0x0287, 0x0299, 0x0299, 0x0299, 0x0299, 0x0299, 0x0299, 0x0299, - 0x0299, 0x0299, 0x0299, 0x0299, 0x0299, 0x02c2, 0x02cc, 0x02da, - 0x02e6, 0x02f8, 0x030b, -} // Size: 382 bytes - -const idScriptStr string = "" + // Size: 1408 bytes - "AfakaAlbania KaukasiaArabAram ImperialArmeniaAvestaBaliBamumBassa VahBat" + - "akBengaliBlissymbolBopomofoBrahmiBrailleBugisBuhidChakmaSimbol Aborigin " + - "Kanada KesatuanKariaChamCherokeeCirthKoptikSiprusSirilikGereja Slavonia " + - "Sirilik LamaDevanagariDeseretStenografi DuployanDemotik MesirHieratik Me" + - "sirHieroglip MesirEtiopiaGeorgian KhutsuriGeorgiaGlagoliticGothicGrantha" + - "YunaniGujaratGurmukhiHanbHangulHanHanunooHan SederhanaHan TradisionalIbr" + - "aniHiraganaHieroglif AnatoliaPahawh HmongKatakana atau HiraganaHungaria " + - "KunoIndusItalia LamaJamoJawaJepangJurchenKayah LiKatakanaKharoshthiKhmer" + - "KhojkiKannadaKoreaKpelleKaithiLannaLaosLatin FrakturLatin GaelikLatinLep" + - "chaLimbuLinear ALinear BLisuLomaLyciaLydiaMandaeManikheiHieroglip MayaMe" + - "ndeKursif MeroitikMeroitikMalayalamModiMongoliaMoonMroMeitei MayekMyanma" + - "rArab Utara KunoNabataeaNaxi GebaN’KoNushuOghamChiki LamaOrkhonOriyaOsma" + - "nyaPalmiraPermik KunoPhags-paPahleviMazmur PahleviKitab PahleviPhoenixFo" + - "netik PollardPrasasti ParthiaRejangRongorongoRunikSamariaSaratiArab Sela" + - "tan KunoSaurashtraTulisan IsyaratShaviaSharadaSiddhamKhudawadiSinhalaSor" + - "a SompengSundaSyloti NagriSuriahSuriah EstrangeloSuriah BaratSuriah Timu" + - "rTagbanwaTakriTai LeTai Lue BaruTamilTangutTai VietTeluguTenghwarTifinag" + - "hTagalogThaanaThaiTibetTirhutaUgaritikVaiUcapan TerlihatVarang KshitiWol" + - "eaiPersia KunoCuneiform Sumero-AkkadiaYiWarisanNotasi MatematikaEmojiSim" + - "bolTidak TertulisUmumSkrip Tak Dikenal" - -var idScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0015, 0x0015, 0x0019, 0x0026, 0x002d, - 0x0033, 0x0037, 0x003c, 0x0045, 0x004a, 0x0051, 0x0051, 0x005b, - 0x0063, 0x0069, 0x0070, 0x0075, 0x007a, 0x0080, 0x009f, 0x00a4, - 0x00a8, 0x00b0, 0x00b5, 0x00bb, 0x00c1, 0x00c8, 0x00e4, 0x00ee, - 0x00f5, 0x0108, 0x0115, 0x0123, 0x0132, 0x0132, 0x0139, 0x014a, - 0x0151, 0x015b, 0x015b, 0x0161, 0x0168, 0x016e, 0x0175, 0x017d, - 0x0181, 0x0187, 0x018a, 0x0191, 0x019e, 0x01ad, 0x01ad, 0x01b3, - 0x01bb, 0x01cd, 0x01d9, 0x01ef, 0x01fc, 0x0201, 0x020c, 0x0210, - // Entry 40 - 7F - 0x0214, 0x021a, 0x0221, 0x0229, 0x0231, 0x023b, 0x0240, 0x0246, - 0x024d, 0x0252, 0x0258, 0x025e, 0x0263, 0x0267, 0x0274, 0x0280, - 0x0285, 0x028b, 0x0290, 0x0298, 0x02a0, 0x02a4, 0x02a8, 0x02ad, - 0x02b2, 0x02b2, 0x02b8, 0x02c0, 0x02c0, 0x02ce, 0x02d3, 0x02e2, - 0x02ea, 0x02f3, 0x02f7, 0x02ff, 0x0303, 0x0306, 0x0312, 0x0312, - 0x0319, 0x0328, 0x0330, 0x0330, 0x0339, 0x033f, 0x0344, 0x0349, - 0x0353, 0x0359, 0x035e, 0x035e, 0x0365, 0x036c, 0x036c, 0x0377, - 0x037f, 0x0386, 0x0394, 0x03a1, 0x03a8, 0x03b7, 0x03c7, 0x03cd, - // Entry 80 - BF - 0x03d7, 0x03dc, 0x03e3, 0x03e9, 0x03fa, 0x0404, 0x0413, 0x0419, - 0x0420, 0x0427, 0x0430, 0x0437, 0x0443, 0x0443, 0x0448, 0x0454, - 0x045a, 0x046b, 0x0477, 0x0483, 0x048b, 0x0490, 0x0496, 0x04a2, - 0x04a7, 0x04ad, 0x04b5, 0x04bb, 0x04c3, 0x04cb, 0x04d2, 0x04d8, - 0x04dc, 0x04e1, 0x04e8, 0x04f0, 0x04f3, 0x0502, 0x050f, 0x0515, - 0x0520, 0x0538, 0x053a, 0x053a, 0x0541, 0x0552, 0x0557, 0x055d, - 0x056b, 0x056f, 0x0580, -} // Size: 382 bytes - -const isScriptStr string = "" + // Size: 402 bytes - "arabísktarmensktbengalsktbopomofoblindraleturkyrillísktdevanagarieþíópís" + - "ktgeorgísktgrísktgújaratígurmukhihanbhangulkínverskteinfaldað hanhefðbun" + - "dið hanhebreskthiraganajapönsk samstöfuleturjamojapansktkatakanakmerkann" + - "adakóresktlaolatnesktmalalajammongólsktmjanmarsktoriyasinhalatamílskttel" + - "úgúthaanataílenskttíbesktstærðfræðitáknemoji-tákntáknóskrifaðalmenntóþe" + - "kkt letur" - -var isScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0009, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001a, 0x001a, 0x001a, - 0x0022, 0x0022, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x0039, 0x0039, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0050, 0x0050, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0061, 0x006b, 0x0073, - 0x0077, 0x007d, 0x0087, 0x0087, 0x0095, 0x00a5, 0x00a5, 0x00ad, - 0x00b5, 0x00b5, 0x00b5, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00d0, - // Entry 40 - 7F - 0x00d0, 0x00d8, 0x00d8, 0x00d8, 0x00e0, 0x00e0, 0x00e4, 0x00e4, - 0x00eb, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f6, 0x00f6, 0x00f6, - 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, - 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x00fe, - 0x00fe, 0x0107, 0x0107, 0x0111, 0x0111, 0x0111, 0x0111, 0x0111, - 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, 0x011b, - 0x011b, 0x011b, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - // Entry 80 - BF - 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, 0x0120, - 0x0120, 0x0120, 0x0120, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, 0x0127, - 0x0130, 0x0130, 0x0130, 0x0138, 0x0138, 0x0138, 0x0138, 0x013e, - 0x0148, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, - 0x0150, 0x0150, 0x0150, 0x0150, 0x0150, 0x0163, 0x016e, 0x0173, - 0x017d, 0x0184, 0x0192, -} // Size: 382 bytes - -const itScriptStr string = "" + // Size: 1575 bytes - "afakaaraboaramaico imperialearmenoavesticobalinesebamumBassa Vahbatakben" + - "galesesimboli blissbopomofobrahmibraillebuginesebuhidchakmasimboli abori" + - "geni canadesi unificaticarianchamcherokeecirthcoptocipriotacirillicociri" + - "llico antica chiesa slavonicadevanagarideseretstenografia duployanegizia" + - "no demoticoieratico egizianogeroglifici egizianietiopekutsurigeorgianogl" + - "agoliticogoticogranthagrecogujaratigurmukhihanbhangulhanhanunoohan sempl" + - "ificatohan tradizionaleebraicohiraganageroglifici anatolicipahawn hmongk" + - "atanaka o hiraganaantico unghereseinduitalico anticojamojavanesegiappone" + - "sejurchenkayah likatakanakharoshthikhmerkhojkikannadacoreanoKpellekaithi" + - "lannalaovariante fraktur del latinovariante gaelica del latinolatinolepc" + - "halimbulineare Alineare Blisulomalycilydimandaicomanicheogeroglifici may" + - "amendecorsivo meroiticomeroiticomalayalammongolomoonmromeetei mayekbirma" + - "noarabo settentrionale anticonabateogeba naxin’konushuoghamol chikiorkho" + - "noriyaosmanyapalmirenopermico anticophags-papahlavi delle iscrizionipahl" + - "avi psalterpahlavi bookfeniciofonetica di pollardpartico delle iscrizion" + - "irejangrongorongorunicosamaritanosaratiarabo meridionale anticosaurashtr" + - "alinguaggio dei segnishavianosharadakhudawadisingalesesora sompengsundan" + - "esesyloti nagrisirianosiriaco estrangelosiriaco occidentalesiriaco orien" + - "taletagbanwatakritai letai luetamiltanguttai viettelugutengwartifinaghta" + - "galogthaanathailandesetibetanotirhutaugaritavaiialfabeto visivovarang ks" + - "hitiwoleaipersiano anticosumero-accadiano cuneiformeyiereditatonotazione" + - " matematicaemojisimbolinon scrittocomunescrittura sconosciuta" - -var itScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, 0x000a, 0x001c, 0x0022, - 0x002a, 0x0032, 0x0037, 0x0040, 0x0045, 0x004e, 0x004e, 0x005b, - 0x0063, 0x0069, 0x0070, 0x0078, 0x007d, 0x0083, 0x00a7, 0x00ad, - 0x00b1, 0x00b9, 0x00be, 0x00c3, 0x00cb, 0x00d4, 0x00f5, 0x00ff, - 0x0106, 0x011a, 0x012b, 0x013c, 0x0150, 0x0150, 0x0156, 0x015d, - 0x0166, 0x0171, 0x0171, 0x0177, 0x017e, 0x0183, 0x018b, 0x0193, - 0x0197, 0x019d, 0x01a0, 0x01a7, 0x01b7, 0x01c7, 0x01c7, 0x01ce, - 0x01d6, 0x01eb, 0x01f7, 0x020a, 0x021a, 0x021e, 0x022c, 0x0230, - // Entry 40 - 7F - 0x0238, 0x0242, 0x0249, 0x0251, 0x0259, 0x0263, 0x0268, 0x026e, - 0x0275, 0x027c, 0x0282, 0x0288, 0x028d, 0x0290, 0x02ab, 0x02c6, - 0x02cc, 0x02d2, 0x02d7, 0x02e0, 0x02e9, 0x02ed, 0x02f1, 0x02f5, - 0x02f9, 0x02f9, 0x0301, 0x0309, 0x0309, 0x0319, 0x031e, 0x032f, - 0x0338, 0x0341, 0x0341, 0x0348, 0x034c, 0x034f, 0x035b, 0x035b, - 0x0362, 0x037d, 0x0384, 0x0384, 0x038d, 0x0393, 0x0398, 0x039d, - 0x03a5, 0x03ab, 0x03b0, 0x03b0, 0x03b7, 0x03c0, 0x03c0, 0x03ce, - 0x03d6, 0x03ee, 0x03fd, 0x0409, 0x0410, 0x0423, 0x043b, 0x0441, - // Entry 80 - BF - 0x044b, 0x0451, 0x045b, 0x0461, 0x0479, 0x0483, 0x0497, 0x049f, - 0x04a6, 0x04a6, 0x04af, 0x04b8, 0x04c4, 0x04c4, 0x04cd, 0x04d9, - 0x04e0, 0x04f2, 0x0505, 0x0516, 0x051e, 0x0523, 0x0529, 0x0530, - 0x0535, 0x053b, 0x0543, 0x0549, 0x0550, 0x0558, 0x055f, 0x0565, - 0x0570, 0x0578, 0x057f, 0x0586, 0x058a, 0x0599, 0x05a6, 0x05ac, - 0x05bb, 0x05d6, 0x05d8, 0x05d8, 0x05e1, 0x05f5, 0x05fa, 0x0601, - 0x060c, 0x0612, 0x0627, -} // Size: 382 bytes - -const jaScriptStr string = "" + // Size: 3286 bytes - "アファカ文字カフカス・アルバニア文字アラビア文字帝国アラム文字アルメニア文字アヴェスター文字バリ文字バムン文字バサ文字バタク文字ベンガル文字ブリ" + - "スシンボル注音字母ブラーフミー文字ブライユ点字ブギス文字ブヒッド文字チャクマ文字統合カナダ先住民音節文字カリア文字チャム文字チェロキー文字キ" + - "アス文字コプト文字キプロス文字キリル文字古代教会スラブ語キリル文字デーバナーガリー文字デセレット文字デュプロワエ式速記エジプト民衆文字エジプ" + - "ト神官文字エジプト聖刻文字エルバサン文字エチオピア文字ジョージア文字(フツリ)ジョージア文字グラゴル文字ゴート文字グランタ文字ギリシャ文字グ" + - "ジャラート文字グルムキー文字漢語注音字母ハングル漢字ハヌノオ文字漢字(簡体字)漢字(繁体字)ヘブライ文字ひらがなアナトリア象形文字パハウ・フ" + - "モン文字仮名古代ハンガリー文字インダス文字古イタリア文字字母ジャワ文字日本語の文字女真文字カヤー文字カタカナカローシュティー文字クメール文字" + - "ホジャ文字カンナダ文字韓国語の文字クペレ文字カイティ文字ラーンナー文字ラオ文字ラテン文字(ドイツ文字)ラテン文字 (ゲール文字)ラテン文字レ" + - "プチャ文字リンブ文字線文字A線文字Bフレイザー文字ロマ文字リキア文字リディア文字マハージャニー文字マンダ文字マニ文字マヤ象形文字メンデ文字メ" + - "ロエ文字草書体メロエ文字マラヤーラム文字モーディー文字モンゴル文字ムーン文字ムロ文字メイテイ文字ミャンマー文字古代北アラビア文字ナバテア文字" + - "ナシ族ゲバ文字ンコ文字女書オガム文字オルチキ文字オルホン文字オリヤー文字オスマニア文字パルミラ文字パウ・チン・ハウ文字古ぺルム文字パスパ文字" + - "碑文パフラヴィー文字詩編用パフラヴィー文字書物用パフラヴィー文字フェニキア文字ポラード音声記号碑文パルティア文字ルジャン文字ロンゴロンゴ文字" + - "ルーン文字サマリア文字サラティ文字古代南アラビア文字サウラーシュトラ文字手話文字ショー文字シャーラダー文字梵字クダワディ文字シンハラ文字ソラ" + - "ング・ソンペング文字スンダ文字シロティ・ナグリ文字シリア文字シリア文字(エストランゲロ文字)シリア文字(西方シリア文字)シリア文字(東方シリ" + - "ア文字)タグバンワ文字タークリー文字タイ・レ文字新タイ・ルー文字タミール文字西夏文字タイ・ヴェト文字テルグ文字テングワール文字ティフナグ文字" + - "タガログ文字ターナ文字タイ文字チベット文字ティルフータ文字ウガリット文字ヴァイ文字視話法バラン・クシティ文字ウォレアイ文字古代ペルシア文字シ" + - "ュメール=アッカド語楔形文字イ文字基底文字の種別を継承する結合文字数学記号絵文字記号文字非表記共通文字未定義文字" - -var jaScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0012, 0x0036, 0x0036, 0x0048, 0x005d, 0x0072, - 0x008a, 0x0096, 0x00a5, 0x00b1, 0x00c0, 0x00d2, 0x00d2, 0x00e7, - 0x00f3, 0x010b, 0x011d, 0x012c, 0x013e, 0x0150, 0x0174, 0x0183, - 0x0192, 0x01a7, 0x01b6, 0x01c5, 0x01d7, 0x01e6, 0x020d, 0x022b, - 0x0240, 0x025b, 0x0273, 0x028b, 0x02a3, 0x02b8, 0x02cd, 0x02ed, - 0x0302, 0x0314, 0x0314, 0x0323, 0x0335, 0x0347, 0x035f, 0x0374, - 0x0386, 0x0392, 0x0398, 0x03aa, 0x03bb, 0x03cc, 0x03cc, 0x03de, - 0x03ea, 0x0405, 0x0420, 0x0426, 0x0441, 0x0453, 0x0468, 0x046e, - // Entry 40 - 7F - 0x047d, 0x048f, 0x049b, 0x04aa, 0x04b6, 0x04d4, 0x04e6, 0x04f5, - 0x0507, 0x0519, 0x0528, 0x053a, 0x054f, 0x055b, 0x057b, 0x059c, - 0x05ab, 0x05bd, 0x05cc, 0x05d6, 0x05e0, 0x05f5, 0x0601, 0x0610, - 0x0622, 0x063d, 0x064c, 0x0658, 0x0658, 0x066a, 0x0679, 0x0691, - 0x06a0, 0x06b8, 0x06cd, 0x06df, 0x06ee, 0x06fa, 0x070c, 0x070c, - 0x0721, 0x073c, 0x074e, 0x074e, 0x0763, 0x076f, 0x0775, 0x0784, - 0x0796, 0x07a8, 0x07ba, 0x07ba, 0x07cf, 0x07e1, 0x07ff, 0x0811, - 0x0820, 0x083e, 0x085f, 0x0880, 0x0895, 0x08ad, 0x08c8, 0x08da, - // Entry 80 - BF - 0x08f2, 0x0901, 0x0913, 0x0925, 0x0940, 0x095e, 0x096a, 0x0979, - 0x0991, 0x0997, 0x09ac, 0x09be, 0x09e2, 0x09e2, 0x09f1, 0x0a0f, - 0x0a1e, 0x0a4a, 0x0a70, 0x0a96, 0x0aab, 0x0ac0, 0x0ad2, 0x0aea, - 0x0afc, 0x0b08, 0x0b20, 0x0b2f, 0x0b47, 0x0b5c, 0x0b6e, 0x0b7d, - 0x0b89, 0x0b9b, 0x0bb3, 0x0bc8, 0x0bd7, 0x0be0, 0x0bfe, 0x0c13, - 0x0c2b, 0x0c58, 0x0c61, 0x0c61, 0x0c91, 0x0c9d, 0x0ca6, 0x0cb2, - 0x0cbb, 0x0cc7, 0x0cd6, -} // Size: 382 bytes - -const kaScriptStr string = "" + // Size: 4040 bytes - "აფაკაარაბულიიმპერიული არამეულისომხურიავესტურიბალიურიბამუმიბასა ვაჰიბატაკ" + - "იბენგალურიბლისსიმბოლოებიბოპომოფობრაჰმიბრაილიბუჰიდიჩაკმაკარიულიჩამიჩერო" + - "კიკირთიკოპტურიკვიპროსულიკირილიცაძველი სლავური კირილიცადევანაგარიდეზერე" + - "ტისდუპლოის სტენოგრაფიაეგვიპტური დემოტიკურიეგვიპტური იერატიკულიეგვიპტურ" + - "ი იეროგლიფურიეთიოპიურიხუცურიქართულიგლაგოლიცაგოთურიგრანთაბერძნულიგუჯარა" + - "თულიგურმუხიჰანბიჰანგულიჰანიჰანუნოოგამარტივებული ჰანიტრადიციული ჰანიებრ" + - "აულიჰირაგანაანატოლიური იეროგლიფურიფაჰაუ-მონიიაპონური კანაძველი უნგრული" + - "ჯამოიავურიიაპონურიჯურჯენულიკაიაჰ-ლიკატაკანაქაროშთიქმერულიქოჯკიკანადაკო" + - "რეულიკპელეკაითილაოსურიგელური ლათინურილათინურილიმბუA-ხაზოვანიB-ხაზოვანი" + - "ლომალიკიურილიდიურიმანდეურიმანიქეურიმაიას იეროგლიფებიმენდემეროიტული კურ" + - "სივიმეროიტულიმალაიალამურიმონღოლურიმრომიანმურიძველი ჩრდილოეთ-არაბულინაბ" + - "ატეურინკონუშუოღამიოლ-ჩიკიორხონულიორიაოსმანიაპალმირულიძველი პერმულიფაგს" + - "პამონუმენტური ფალაურიფსალმუნური ფალაურიწიგნური ფალაურიფინიკიურიმონუმენ" + - "ტური პართულირეჯანგირონგორონგორუნულისამარიულისარატიძველი სამხრეთ-არაბულ" + - "ისაურაშტრაჟესტთაშარადაქუდავადისინჰალურისორან-სომპენისუნდანურისილოტი ნა" + - "გრისირიულისირიული ესტრანგელოდასავლეთი სირიულიაღმოსავლეთი სირიულიტაგბან" + - "ვატაკრიტაი ლეახალი ტაი ლიუტამილურიტანღუტურიტაი-ვიეტიტელუგუტენგვარიტიფი" + - "ნაღითაანატაიტიბეტურიტირჰუტაუგარითულივაიხილული მეტყველებავარანგ-კშიტივო" + - "ლეაიძველი სპარსულიშუმერულ-აქადური ლურსმნულიგადაღებულიმათემატიკური ნოტა" + - "ციაEmojiსიმბოლოებიუმწერლობოზოგადიუცნობი დამწერლობა" - -var kaScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000f, 0x000f, 0x000f, 0x0024, 0x0058, 0x006d, - 0x0085, 0x009a, 0x00ac, 0x00c5, 0x00d7, 0x00f2, 0x00f2, 0x011c, - 0x0134, 0x0146, 0x0158, 0x0158, 0x016a, 0x0179, 0x0179, 0x018e, - 0x019a, 0x01ac, 0x01bb, 0x01d0, 0x01ee, 0x0206, 0x0244, 0x0262, - 0x027d, 0x02b4, 0x02ee, 0x0328, 0x0365, 0x0365, 0x0380, 0x0392, - 0x03a7, 0x03c2, 0x03c2, 0x03d4, 0x03e6, 0x03fe, 0x041c, 0x0431, - 0x0440, 0x0455, 0x0461, 0x0476, 0x04aa, 0x04d5, 0x04d5, 0x04ea, - 0x0502, 0x0542, 0x055e, 0x0583, 0x05a8, 0x05a8, 0x05a8, 0x05b4, - // Entry 40 - 7F - 0x05c6, 0x05de, 0x05f9, 0x060f, 0x0627, 0x063c, 0x0651, 0x0660, - 0x0672, 0x0687, 0x0696, 0x06a5, 0x06a5, 0x06ba, 0x06ba, 0x06e5, - 0x06fd, 0x06fd, 0x070c, 0x0726, 0x0740, 0x0740, 0x074c, 0x0761, - 0x0776, 0x0776, 0x078e, 0x07a9, 0x07a9, 0x07da, 0x07e9, 0x081a, - 0x0835, 0x0859, 0x0859, 0x0874, 0x0874, 0x087d, 0x087d, 0x087d, - 0x0895, 0x08d3, 0x08ee, 0x08ee, 0x08ee, 0x08f7, 0x0903, 0x0912, - 0x0925, 0x093d, 0x0949, 0x0949, 0x095e, 0x0979, 0x0979, 0x099e, - 0x09b0, 0x09e7, 0x0a1b, 0x0a46, 0x0a61, 0x0a61, 0x0a98, 0x0aad, - // Entry 80 - BF - 0x0acb, 0x0add, 0x0af8, 0x0b0a, 0x0b45, 0x0b60, 0x0b72, 0x0b72, - 0x0b84, 0x0b84, 0x0b9c, 0x0bb7, 0x0bdc, 0x0bdc, 0x0bf7, 0x0c19, - 0x0c2e, 0x0c62, 0x0c93, 0x0cca, 0x0ce2, 0x0cf1, 0x0d01, 0x0d24, - 0x0d3c, 0x0d57, 0x0d70, 0x0d82, 0x0d9a, 0x0db2, 0x0db2, 0x0dc1, - 0x0dca, 0x0de2, 0x0df7, 0x0e12, 0x0e1b, 0x0e4c, 0x0e6e, 0x0e80, - 0x0ea8, 0x0eef, 0x0eef, 0x0eef, 0x0f0d, 0x0f47, 0x0f4c, 0x0f6a, - 0x0f85, 0x0f97, 0x0fc8, -} // Size: 382 bytes - -const kkScriptStr string = "" + // Size: 1036 bytes - "араб жазуыармян жазуыбенгал жазуыбопомофо жазуБрайль жазуыкирилл жазуыде" + - "ванагари жазуыэфиоп жазугрузин жазуыгрек жазуыгуджарати жазуыгурмукхи ж" + - "азуыханб жазуыхангыл жазуықытай жазуыжеңілдетілген қытай иероглифыдәстү" + - "рлі қытай иероглифыиврит жазуыхирагана жазуыжапон силлабарийічамо жазуы" + - "жапон жазуыкатакана жазуыкхмер жазуыканнада жазуыкорей жазуылаос жазуыл" + - "атын жазуымалаялам жазуымоңғол жазуымьянма жазуыория жазуысингаль жазуы" + - "тамиль жазуытелугу жазуытаана жазуытай жазуытибет жазуыматематикалық жа" + - "зуэмодзитаңбаларжазусызжалпыбелгісіз жазу" - -var kkScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0013, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x003f, 0x003f, 0x003f, - 0x0058, 0x0058, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, - 0x006f, 0x006f, 0x006f, 0x006f, 0x006f, 0x0086, 0x0086, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00b8, 0x00b8, - 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00e2, 0x00ff, 0x011a, - 0x012d, 0x0144, 0x0159, 0x0159, 0x0191, 0x01bf, 0x01bf, 0x01d4, - 0x01ef, 0x01ef, 0x01ef, 0x0210, 0x0210, 0x0210, 0x0210, 0x0223, - // Entry 40 - 7F - 0x0223, 0x0238, 0x0238, 0x0238, 0x0253, 0x0253, 0x0268, 0x0268, - 0x0281, 0x0296, 0x0296, 0x0296, 0x0296, 0x02a9, 0x02a9, 0x02a9, - 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, - 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, 0x02be, - 0x02be, 0x02d9, 0x02d9, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, - 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, - 0x0307, 0x0307, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, - 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, - // Entry 80 - BF - 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, - 0x031a, 0x031a, 0x031a, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, - 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, - 0x034a, 0x034a, 0x034a, 0x0361, 0x0361, 0x0361, 0x0361, 0x0376, - 0x0387, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, - 0x039c, 0x039c, 0x039c, 0x039c, 0x039c, 0x03bf, 0x03cb, 0x03db, - 0x03e9, 0x03f3, 0x040c, -} // Size: 382 bytes - -const kmScriptStr string = "" + // Size: 1140 bytes - "អារ៉ាប់អាមេនីបង់ក្លាដែសបូផូម៉ូហ្វូអក្សរ\u200bសម្រាប់មនុស្ស\u200bពិការ" + - "\u200bភ្នែកស៊ីរីលីកដាវ៉ាន់ណាការិអេត្យូពីហ្សកហ្ស៊ីក្រិចគូចារ៉ាទីកុមុយឃីហា" + - "នប៍ហាំងកុលហានអក្សរ\u200bហាន\u200bកាត់អក្សរ\u200bហាន\u200bពេញអ៊ីស្រាអែល" + - "ហ៊ីរ៉ាកាណាសញ្ញាសំឡេងភាសាជប៉ុនចាម៉ូជប៉ុនកាតាកាណាខ្មែរខាណាដាកូរ៉េឡាវឡាតា" + - "ំងមលយាល័មម៉ុងហ្គោលីភូមាអូឌៀស៊ីនហាឡាតាមីលតេលុគុថាណាថៃទីបេនិមិត្តសញ្ញាគណ" + - "ិតវិទ្យាសញ្ញាអារម្មណ៍និមិត្តសញ្ញាគ្មានការសរសេរទូទៅអក្សរមិនស្គាល់" - -var kmScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x0015, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0045, 0x0045, 0x0045, - 0x0066, 0x0066, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00db, 0x00db, 0x0102, - 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x0102, 0x011a, 0x011a, - 0x0135, 0x0135, 0x0135, 0x0135, 0x0135, 0x0144, 0x015f, 0x0174, - 0x0183, 0x0198, 0x01a1, 0x01a1, 0x01cb, 0x01f2, 0x01f2, 0x0210, - 0x022e, 0x022e, 0x022e, 0x0267, 0x0267, 0x0267, 0x0267, 0x0276, - // Entry 40 - 7F - 0x0276, 0x0285, 0x0285, 0x0285, 0x029d, 0x029d, 0x02ac, 0x02ac, - 0x02be, 0x02cd, 0x02cd, 0x02cd, 0x02cd, 0x02d6, 0x02d6, 0x02d6, - 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, - 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, 0x02e8, - 0x02e8, 0x02fd, 0x02fd, 0x031b, 0x031b, 0x031b, 0x031b, 0x031b, - 0x0327, 0x0327, 0x0327, 0x0327, 0x0327, 0x0327, 0x0327, 0x0327, - 0x0327, 0x0327, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, - 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, - // Entry 80 - BF - 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, 0x0333, - 0x0333, 0x0333, 0x0333, 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, - 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, 0x034b, - 0x035a, 0x035a, 0x035a, 0x036c, 0x036c, 0x036c, 0x036c, 0x0378, - 0x037e, 0x038a, 0x038a, 0x038a, 0x038a, 0x038a, 0x038a, 0x038a, - 0x038a, 0x038a, 0x038a, 0x038a, 0x038a, 0x03cc, 0x03f3, 0x0417, - 0x043e, 0x044a, 0x0474, -} // Size: 382 bytes - -const knScriptStr string = "" + // Size: 3811 bytes - "ಅರೇಬಿಕ್ಇಂಪೀರಿಯಲ್ ಅರೆಮಾಯಿಕ್ಅರ್ಮೇನಿಯನ್ಅವೆಸ್ತಾನ್ಬಾಲಿನೀಸ್ಬಾಟಕ್ಬೆಂಗಾಲಿಬ್ಲಿಸ್" + - "\u200cಸಿಂಬಲ್ಸ್ಬೋಪೊಮೋಫೋಬ್ರಾಹ್ಮಿಬ್ರೈಲ್ಬಗಿನೀಸ್ಬುಹಿದ್ಕಾಕಂಯುನಿಟೆಡ್ ಕೆನೆಡಿಯನ್ " + - "ಅಬೊರಿಜಿನಲ್ ಸಿಲ್ಯಾಬಿಕ್ಸ್ಕರೇನ್ಚಾಮ್ಚೆರೋಕೀಸಿರ್ಥ್ಕಾಪ್ಟಿಕ್ಸಿಪ್ರಿಯಾಟ್ಸಿರಿಲಿಕ್" + - "ಪ್ರಾಚೀನ ಚರ್ಚ್ ಸ್ಲೋವಾನಿಕ್ ಸಿರಿಲಿಕ್ದೇವನಾಗರಿಡಸರ್ಟ್ಈಜಿಪ್ಟಿಯನ್ ಡೆಮೋಟಿಕ್ಈಜಿಪ" + - "್ಟಿಯನ್ ಹಯಾರಿಟಿಕ್ಈಜಿಪ್ಟಿಯನ್ ಹೀರೋಗ್ಲಿಫ್ಸ್ಇಥಿಯೋಪಿಕ್ಜಾರ್ಜಿಯನ್ ಖುಸ್ತುರಿಜಾರ್" + - "ಜಿಯನ್ಗ್ಲಾಗೋಲಿಟಿಕ್ಗೋತಿಕ್ಗ್ರೀಕ್ಗುಜರಾತಿಗುರ್ಮುಖಿಹಂಬ್ಹ್ಯಾಂಗುಲ್ಹಾನ್ಹನೂನೂಸರಳೀ" + - "ಕೃತ ಹಾನ್ಸಾಂಪ್ರದಾಯಿಕ ಹಾನ್ಹೀಬ್ರೂಹಿರಾಗನಪಹವ್ ಹ್ಮೋಂಗ್ಜಪಾನೀಸ್ ಸಿಲಬರೀಸ್ಪ್ರಾಚೀ" + - "ನ ಹಂಗೇರಿಯನ್ಸಿಂಧೂಪ್ರಾಚೀನ್ ಇಟಾಲಿಕ್ಜಮೋಜಾವನೀಸ್ಜಾಪನೀಸ್ಕೆಯಾ ಲಿಕಟಕಾನಾಖರೋಶ್ತಿಖ" + - "ಮೇರ್ಕನ್ನಡಕೊರಿಯನ್ಕೈಥಿಲಾನಾಲಾವೋಫ್ರಾಕ್ತರ್ ಲ್ಯಾಟಿನ್ಗೇಲಿಕ್ ಲ್ಯಾಟಿನ್ಲ್ಯಾಟಿನ್ಲ" + - "ೆಪ್ಚಾಲಿಂಬುಲೀನಯರ್ ಎಲೀನಯರ್ ಬಿಲೈಸಿಯನ್ಲಿಡಿಯನ್ಮಂಡೇಯನ್ಮನಿಚೈಯನ್ಮಯಾನ್ ಹೀರೋಗ್ಲಿ" + - "ಫ್ಸ್ಮೆರೊಯಿಟಿಕ್ಮಲಯಾಳಂಮಂಗೋಲಿಯನ್ಮೂನ್ಮೈತಿ ಮಯೆಕ್ಮ್ಯಾನ್ಮಾರ್ಎನ್\u200dಕೋಓಘಮ್ಓಲ" + - "್ ಚಿಕಿಓರ್ಖೋನ್ಒರಿಯಾಓಸ್ಮಾನ್ಯಾಪ್ರಾಚೀನ ಪೆರ್ಮಿಕ್ಫಾಗ್ಸ್-ಪಾಇನ್ಸ್\u200cಕ್ರಿಪ್ಶ" + - "ನಲ್ ಪಾಹ್ಲವಿಸಾಲ್ಟರ್ ಪಾಹ್ಲವಿಬುಕ್ ಪಾಹ್ಲವಿಫೀನಿಶಿಯನ್ಪೊಲ್ಲಾರ್ಡ್ ಫೊನೆಟಿಕ್ಇನ್ಸ" + - "್\u200cಕ್ರಿಪ್ಶನಲ್ ಪಾರ್ಥಿಯನ್ರೆಜಾಂಗ್ರೋಂಗೋರೋಂಗೋರೂನಿಕ್ಸಮಾರಿಟನ್ಸರಾಟಿಸೌರಾಷ್ಟ" + - "್ರಸೈನ್\u200cರೈಟಿಂಗ್ಶಾವಿಯಾನ್ಸಿಂಹಳಸುಂಡಾನೀಸ್ಸೈಲೋಟಿ ನಗ್ರಿಸಿರಿಯಾಕ್ಎಸ್ಟ್ರಾಂಜ" + - "ಿಲೋ ಸಿರಿಯಾಕ್ಪಶ್ಚಿಮ ಸಿರಿಯಾಕ್ಪೂರ್ವ ಸಿರಿಯಾಕ್ಟಾಗ್ಬಾನವಾಥಾಯ್ ಲಿನ್ಯೂ ಥಾಯ್ ಲುಇ" + - "ತಮಿಳುಥಾಯ್ ವಿಯೆಟ್ತೆಲುಗುತೆಂಗ್\u200cವಾರ್ಟಿಫಿನಾಘ್ಟ್ಯಾಗಲೋಗ್ಥಾನಾಥಾಯ್ಟಿಬೇಟನ್ಉ" + - "ಗಾರಿಟಿಕ್ವಾಯ್ವಿಸಿಬಲ್ ಸ್ಪೀಚ್ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ಸುಮೇರೋ-ಅಕ್ಕಾಡಿಯನ್ ಕ್ಯೂನಿಫಾರ್" + - "ಮ್ಯಿಇನ್\u200dಹೆರಿಟೆಡ್ಗಣೀತ ಸಂಕೇತಲಿಪಿಎಮೋಜಿಸಂಕೇತಗಳುಅಲಿಖಿತಸಾಮಾನ್ಯಅಪರಿಚಿತ ಲ" + - "ಿಪಿ" - -var knScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0015, 0x004c, 0x006a, - 0x0085, 0x009d, 0x009d, 0x009d, 0x00ac, 0x00c1, 0x00c1, 0x00ee, - 0x0106, 0x011e, 0x0130, 0x0145, 0x0157, 0x0163, 0x01db, 0x01ea, - 0x01f6, 0x0208, 0x021a, 0x0232, 0x0250, 0x0268, 0x02c5, 0x02dd, - 0x02ef, 0x02ef, 0x0326, 0x0360, 0x03a3, 0x03a3, 0x03be, 0x03f2, - 0x040d, 0x0431, 0x0431, 0x0443, 0x0443, 0x0455, 0x046a, 0x0482, - 0x048e, 0x04a9, 0x04b5, 0x04c4, 0x04e6, 0x0514, 0x0514, 0x0526, - 0x0538, 0x0538, 0x055a, 0x0588, 0x05b9, 0x05c8, 0x05f6, 0x05ff, - // Entry 40 - 7F - 0x0614, 0x0629, 0x0629, 0x063c, 0x064e, 0x0663, 0x0672, 0x0672, - 0x0681, 0x0696, 0x0696, 0x06a2, 0x06ae, 0x06ba, 0x06ee, 0x0719, - 0x0731, 0x0743, 0x0752, 0x0768, 0x0781, 0x0781, 0x0781, 0x0796, - 0x07ab, 0x07ab, 0x07c0, 0x07d8, 0x07d8, 0x080c, 0x080c, 0x080c, - 0x082a, 0x083c, 0x083c, 0x0857, 0x0863, 0x0863, 0x087f, 0x087f, - 0x089d, 0x089d, 0x089d, 0x089d, 0x089d, 0x08af, 0x08af, 0x08bb, - 0x08d1, 0x08e6, 0x08f5, 0x08f5, 0x0910, 0x0910, 0x0910, 0x093e, - 0x0957, 0x099d, 0x09c8, 0x09ea, 0x0a05, 0x0a3c, 0x0a88, 0x0a9d, - // Entry 80 - BF - 0x0abb, 0x0acd, 0x0ae5, 0x0af4, 0x0af4, 0x0b0f, 0x0b33, 0x0b4b, - 0x0b4b, 0x0b4b, 0x0b4b, 0x0b5a, 0x0b5a, 0x0b5a, 0x0b75, 0x0b97, - 0x0baf, 0x0bec, 0x0c17, 0x0c3f, 0x0c5a, 0x0c5a, 0x0c6d, 0x0c90, - 0x0c9f, 0x0c9f, 0x0cbe, 0x0cd0, 0x0cee, 0x0d06, 0x0d21, 0x0d2d, - 0x0d39, 0x0d4e, 0x0d4e, 0x0d69, 0x0d75, 0x0d9d, 0x0d9d, 0x0d9d, - 0x0dcb, 0x0e21, 0x0e27, 0x0e27, 0x0e4b, 0x0e73, 0x0e82, 0x0e9a, - 0x0eac, 0x0ec1, 0x0ee3, -} // Size: 382 bytes - -const koScriptStr string = "" + // Size: 2803 bytes - "아파카 문자코카시안 알바니아 문자아랍 문자아랍제국 문자아르메니아 문자아베스타 문자발리 문자바뭄 문자바사바흐 문자바타크 문자벵골 문" + - "자블리스기호 문자주음부호브라미브라유 점자부기 문자부히드 문자차크마 문자통합 캐나다 토착어카리 문자칸 고어체로키 문자키르쓰콥트 " + - "문자키프로스 문자키릴 문자고대교회슬라브어 키릴문자데바나가리 문자디저렛 문자듀플로이안 문자고대 이집트 민중문자고대 이집트 신관문" + - "자고대 이집트 신성문자엘바산 문자에티오피아 문자그루지야 쿠츠리 문자조지아 문자글라골 문자고트 문자그란타 문자그리스 문자구자라트" + - " 문자구르무키 문자주음 자모한글한자하누누 문자한자 간체한자 번체히브리 문자히라가나아나톨리아 상형문자파하우 몽 문자가나고대 헝가리 " + - "문자인더스 문자고대 이탈리아 문자자모자바 문자일본 문자줄첸 문자카야 리 문자가타카나카로슈티 문자크메르 문자코즈키 문자칸나다 문" + - "자한국어크펠레 문자카이시 문자란나 문자라오 문자독일식 로마자아일랜드식 로마자로마자렙차 문자림부 문자선형 문자(A)선형 문자(B" + - ")프레이저 문자로마 문자리키아 문자리디아 문자마하자니 문자만다이아 문자마니교 문자마야 상형 문자멘데 문자메로에 필기체메로에 문자말" + - "라얄람 문자몽골 문자문 문자므로 문자메이테이 마옉 문자미얀마 문자옛 북부 아라비아 문자나바테아 문자나시 게바 문자응코 문자누슈" + - " 문자오검 문자올 치키 문자오르혼어오리야 문자오스마니아 문자팔미라 문자고대 페름 문자파스파 문자명문 팔라비 문자솔터 팔라비 문자북" + - " 팔라비 문자페니키아 문자폴라드 표음 문자명문 파라티아 문자레장 문자롱고롱고룬 문자사마리아 문자사라티옛 남부 아라비아 문자사우라슈" + - "트라 문자수화 문자샤비안 문자사라다 문자실담자쿠다와디 문자신할라 문자소라 솜펭 문자순다 문자실헤티 나가리시리아 문자에스트랑겔로" + - "식 시리아 문자서부 시리아 문자동부 시리아 문자타그반와 문자타크리 문자타이 레 문자신 타이 루에타밀 문자탕구트 문자태국 베트남" + - " 문자텔루구 문자텡과르 문자티피나그 문자타갈로그 문자타나 문자타이 문자티베트 문자티르후타 문자우가리트 문자바이 문자시화법바랑 크시" + - "티 문자울레아이고대 페르시아 문자수메르-아카드어 설형문자이 문자구전 문자수학 기호이모티콘기호구전일반 문자알 수 없는 문자" - -var koScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0010, 0x0030, 0x0030, 0x003d, 0x0050, 0x0066, - 0x0079, 0x0086, 0x0093, 0x00a6, 0x00b6, 0x00c3, 0x00c3, 0x00d9, - 0x00e5, 0x00ee, 0x00fe, 0x010b, 0x011b, 0x012b, 0x0145, 0x0152, - 0x015c, 0x016c, 0x0175, 0x0182, 0x0195, 0x01a2, 0x01c7, 0x01dd, - 0x01ed, 0x0203, 0x0220, 0x023d, 0x025a, 0x026a, 0x0280, 0x029d, - 0x02ad, 0x02bd, 0x02bd, 0x02ca, 0x02da, 0x02ea, 0x02fd, 0x0310, - 0x031d, 0x0323, 0x0329, 0x0339, 0x0346, 0x0353, 0x0353, 0x0363, - 0x036f, 0x038b, 0x039f, 0x03a5, 0x03bc, 0x03cc, 0x03e6, 0x03ec, - // Entry 40 - 7F - 0x03f9, 0x0406, 0x0413, 0x0424, 0x0430, 0x0443, 0x0453, 0x0463, - 0x0473, 0x047c, 0x048c, 0x049c, 0x04a9, 0x04b6, 0x04c9, 0x04e2, - 0x04eb, 0x04f8, 0x0505, 0x0515, 0x0525, 0x0538, 0x0545, 0x0555, - 0x0565, 0x0578, 0x058b, 0x059b, 0x059b, 0x05af, 0x05bc, 0x05cf, - 0x05df, 0x05f2, 0x05f2, 0x05ff, 0x0609, 0x0616, 0x0630, 0x0630, - 0x0640, 0x065e, 0x0671, 0x0671, 0x0685, 0x0692, 0x069f, 0x06ac, - 0x06bd, 0x06c9, 0x06d9, 0x06d9, 0x06ef, 0x06ff, 0x06ff, 0x0713, - 0x0723, 0x073a, 0x0751, 0x0765, 0x0778, 0x078f, 0x07a9, 0x07b6, - // Entry 80 - BF - 0x07c2, 0x07cc, 0x07df, 0x07e8, 0x0806, 0x081f, 0x082c, 0x083c, - 0x084c, 0x0855, 0x0868, 0x0878, 0x088c, 0x088c, 0x0899, 0x08ac, - 0x08bc, 0x08e2, 0x08f9, 0x0910, 0x0923, 0x0933, 0x0944, 0x0955, - 0x0962, 0x0972, 0x0989, 0x0999, 0x09a9, 0x09bc, 0x09cf, 0x09dc, - 0x09e9, 0x09f9, 0x0a0c, 0x0a1f, 0x0a2c, 0x0a35, 0x0a4c, 0x0a58, - 0x0a72, 0x0a95, 0x0a9f, 0x0a9f, 0x0aac, 0x0ab9, 0x0ac5, 0x0acb, - 0x0ad1, 0x0ade, 0x0af3, -} // Size: 382 bytes - -const kyScriptStr string = "" + // Size: 608 bytes - "АрабАрмянБенгалБопомофоБрейлКириллДеванагариЭфиопГрузинГрекГужаратиГурму" + - "хиХанбХангулХаньЖөнөк. ХаньСалттуу ХаньИвритХираганаЖапон силлабография" + - "сыДжамоЖапанКатаканаКмерКаннадаКорейЛаоЛатынМалайаламМонголМйанмарОрийа" + - "СингалаТамилТелуТаанаТайТибетМатематикалык мааниБыйтыкчаБелгилерЖазылба" + - "ганЖалпыБелгисиз жазуу" - -var kyScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001e, 0x001e, 0x001e, - 0x002e, 0x002e, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0044, 0x0044, 0x0058, - 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058, 0x0062, 0x0062, - 0x006e, 0x006e, 0x006e, 0x006e, 0x006e, 0x0076, 0x0086, 0x0094, - 0x009c, 0x00a8, 0x00b0, 0x00b0, 0x00c4, 0x00db, 0x00db, 0x00e5, - 0x00f5, 0x00f5, 0x00f5, 0x011e, 0x011e, 0x011e, 0x011e, 0x0128, - // Entry 40 - 7F - 0x0128, 0x0132, 0x0132, 0x0132, 0x0142, 0x0142, 0x014a, 0x014a, - 0x0158, 0x0162, 0x0162, 0x0162, 0x0162, 0x0168, 0x0168, 0x0168, - 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, - 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, - 0x0172, 0x0184, 0x0184, 0x0190, 0x0190, 0x0190, 0x0190, 0x0190, - 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, 0x019e, - 0x019e, 0x019e, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - // Entry 80 - BF - 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x01a8, - 0x01a8, 0x01a8, 0x01a8, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, 0x01b6, - 0x01c0, 0x01c0, 0x01c0, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01d2, - 0x01d8, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, - 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x0207, 0x0217, 0x0227, - 0x023b, 0x0245, 0x0260, -} // Size: 382 bytes - -const loScriptStr string = "" + // Size: 3937 bytes - "ອັບຟາກາອາຣາບິກອິມພີຮຽນ ອາເມອິກອາເມນຽນອະເວສຕະບາລີບາມູມບັດຊາບາຕັກເບັງກາບລິ" + - "ກຊິມໂບລສຈູ້ອິນພຮາຫມີເບຣວບູກິສບູຮິດຊາກມາສັນຍາລັກຊົນເຜົ່າພື້ນເມືອງແຄນນາດ" + - "າຄາເຮຍຈາມເຊໂຮກີເຊີຮຄອບຕິກໄຊເປຍຊີຣິວລິກເຊຮັດສລາ ໂວນິກຊີຮິກລິກໂບຮານດີວານ" + - "າກາຣີເດເຊເຮຊົວເລດັບໂລຍັນດີໂມຕິກອີຍິບເຮຍຮາຕິກອີຍິບເຮຍໂຮກລິຟອີຍິບອີທິໂອປ" + - "ິກຄອດຊູຮີຈໍເຈຍຈໍຈຽນກລາໂກລິຕິກໂກຮິກເຄນທາກຣີກຈູຈາຣາທີກົວມູຄີຮັນຮັນກູນຮານ" + - "ຮານູໂນໂອຈີນ (ແບບງ່າຍ)ຈີນ (ດັ້ງເດີມ)ຮີບຣິວຣິຣະງະນະອັກລຮະອານາໂຕເລຍປາເຮາເ" + - "ມັງຕາຕາລາງພະຍາງພາສາຍີ່ປຸ່ນຮັງກາຮີໂບຮານອິນດັດອີຕາລີໂບຮານຈາໂມຈາວາຍີ່ປຸ່ນ" + - "ຈູຮເຊັນຄຍາຄະຕະກະນະຂໍໂຮກສີຂະແມຄໍຈຄີຄັນນາດາເກົາຫຼີເປລເລກາຍຕິລ້ານນາລາວລາຕ" + - "ິນ-ຟຮັ່ງເຕຣລາຕິນ-ແກລິກລາຕິນເລຊາລິມບູລີເນຍລີເນຍຣເຟຣເຊຮໂລມາໄລເຊຍລີເດຍແມນ" + - "ດຽນມານິແຊນມາຍາໄຮໂຮກລິບເມນເດເຄເລີຊີເມໂຮອິຕິກເມໂຮຕິກມາເລຢາລາມມົງໂກນມູນເມ" + - "ໂຮເມເທມາເຍກມຽນມາອາຮະເບຍເໜືອໂບຮານນາບາທາທຽນກີບາ-ນາຊີເອັນໂກນຸຊຸອອກຄອນໂອຊິ" + - "ກິອອກສມັນຍາໂອເດຍພາລໄມຮິນເພີມີໂບຮານຟາກສ-ປາປະຫລາວີອິນສຄິບຊັນແນລປະຫລາວີຊອ" + - "ດເຕຮ໌ປະຫລາວີບຸກຟີນິເຊຍສັດຕະສາດພໍຮລາພາຮ໌ເທຍອິນສຄຮິປຊັນແນລເຮຈັງຮອງໂກຮອງໂ" + - "ກຮູນິກຊາມາເລຍຊາຮາຕິອາລະເບຍໃຕ້ໂບຮານໂສຮັດຕຣະໄຊນ໌ໄຮຕີ້ງຊອວຽນຊາຮາດາດຸດາວາດ" + - "ີສິນຫາລາໂສຮາສົມເປັງຊຸນດາຊີໂລຕິນາກຣີຊີເຮຍຊີເຮຍເອສທຮານຈີໂລຊີເຮຍຕາເວັນຕົກ" + - "ຊີເຮຍຕາເວັນອອກຕັກບັນວາທາຄຮີໄທເລໄທລື້ໃໝ່ທາມິລຕັນກັນໄທຫວຽດເທລູກູເທງກວາຮທ" + - "ີຟີນາກຕາກາລອກທານາໄທທິເບທັນເທຮຸທາຍູກາຮິດໄວຄຳເວົ້າທີ່ເບີ່ງເຫັນໄດ້ວາຮັງກສ" + - "ິຕິໂອລີເອເປຮເຊຍໂບຮານອັກສອນຮູບປລີ່ມສຸເມເຮຍ-ອັດຄາເດຍຍີອິນເຮຮິດເຄື່ອງໝາຍທ" + - "າງຄະນິດສາດອີໂມຈິສັນຍາລັກບໍ່ມີພາສາຂຽນສາມັນແບບຂຽນທີ່ບໍ່ຮູ້ຈັກ" - -var loScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0015, 0x0015, 0x0015, 0x002a, 0x0058, 0x006d, - 0x0082, 0x008e, 0x009d, 0x00ac, 0x00bb, 0x00cd, 0x00cd, 0x00ee, - 0x0100, 0x0112, 0x011e, 0x012d, 0x013c, 0x014b, 0x01ab, 0x01ba, - 0x01c3, 0x01d5, 0x01e1, 0x01f3, 0x0202, 0x021a, 0x0269, 0x0287, - 0x0299, 0x02c0, 0x02e4, 0x030b, 0x0335, 0x0335, 0x0350, 0x0374, - 0x0383, 0x03a1, 0x03a1, 0x03b0, 0x03bf, 0x03cb, 0x03e3, 0x03f8, - 0x0401, 0x0413, 0x041c, 0x0434, 0x0455, 0x0479, 0x0479, 0x048b, - 0x04a3, 0x04d0, 0x04eb, 0x0530, 0x0554, 0x0566, 0x0587, 0x0593, - // Entry 40 - 7F - 0x059f, 0x05b4, 0x05c9, 0x05d2, 0x05ea, 0x05ff, 0x060b, 0x061a, - 0x062f, 0x0644, 0x0653, 0x0662, 0x0674, 0x067d, 0x06a5, 0x06c4, - 0x06d3, 0x06df, 0x06ee, 0x06fd, 0x070f, 0x0721, 0x072d, 0x073c, - 0x074b, 0x074b, 0x075d, 0x0772, 0x0772, 0x0796, 0x07a5, 0x07d5, - 0x07ea, 0x0805, 0x0805, 0x0817, 0x0820, 0x082c, 0x0847, 0x0847, - 0x0856, 0x0886, 0x08a1, 0x08a1, 0x08ba, 0x08cc, 0x08d8, 0x08ea, - 0x08fc, 0x0917, 0x0926, 0x0926, 0x0926, 0x093e, 0x093e, 0x095c, - 0x096f, 0x09ab, 0x09d5, 0x09f3, 0x0a08, 0x0a2f, 0x0a6e, 0x0a7d, - // Entry 80 - BF - 0x0a9b, 0x0aaa, 0x0abf, 0x0ad1, 0x0afe, 0x0b16, 0x0b34, 0x0b43, - 0x0b55, 0x0b55, 0x0b6d, 0x0b82, 0x0ba3, 0x0ba3, 0x0bb2, 0x0bd3, - 0x0be2, 0x0c12, 0x0c3c, 0x0c66, 0x0c7e, 0x0c8d, 0x0c99, 0x0cb1, - 0x0cc0, 0x0cd2, 0x0ce4, 0x0cf6, 0x0d0b, 0x0d20, 0x0d35, 0x0d41, - 0x0d47, 0x0d5c, 0x0d6e, 0x0d83, 0x0d89, 0x0dcb, 0x0de9, 0x0dfb, - 0x0e1c, 0x0e74, 0x0e7a, 0x0e7a, 0x0e92, 0x0ece, 0x0ee0, 0x0ef8, - 0x0f1c, 0x0f2b, 0x0f61, -} // Size: 382 bytes - -const ltScriptStr string = "" + // Size: 1663 bytes - "AfakaKaukazo Albanijosarabųimperinė aramaikųarmėnųavestanoBaliečiųBamumB" + - "assa Vahbatakbengalų„Bliss“ simboliaibopomofobrahmibrailiobuginezųbuhidč" + - "akmasuvienodinti Kanados aborigenų silabiniaikariųčamčerokiųkirtkoptųkip" + - "rokirilicasenoji bažnytinė slavų kirilicadevanagarideseretasDuplojė sten" + - "ografijaEgipto liaudiesEgipto žyniųegipto hieroglifaiElbasanoetiopųgruzi" + - "nų kutsurigruzinųglagolitikgotųGrantagraikųgudžaratųgurmukihanbųhangulha" + - "nhanunosupaprastinti hantradiciniai hanhebrajųhiraganaAnatolijaus hierog" + - "lifaipahav hmongkatakana / hiraganasenasis vengrųindussenasis italųJamo " + - "simboliaijaviečiųjaponųJurchenkajah likatakanakaroštikhmerųKhojkikanadųk" + - "orėjiečiųKpelųkaithilanalaosiečiųfraktur lotynųgėlų lotynųlotynųlepčalim" + - "bulinijiniai Alinijiniai BFraserLomalicianlidianMahadžanimandėjųmaničųma" + - "lų hieroglifaiMendeMerojitų rankraštinismeroitikmalajaliųModimongolųmūnM" + - "romeitei majekbirmiečiųSenasis šiaurės arabųNabatėjųNaxi GebaenkoNüshuog" + - "hamol čikiorkonorijųosmanųPalmirosPau Cin Hausenieji permėspagsa parašyt" + - "iniai pahlavipselter pahlavibuk pahvalifoenikųpolard fonetinėrašytiniai " + - "partųrejangrongorongorunųsamariečiųsaratisenoji pietų Arabijossauraštraž" + - "enklų raštasšaviųŠaradosSiddhamKhudawadisinhalųSora Sompengsundųsyloti n" + - "agrisirųestrangelo siriečiųvakarų sirųrytų sirųtagbanvaTakritai lenaujas" + - "is Tailando luetamilųTanguttai vettelugųtengvartifinagtagalogųhanatajųti" + - "betiečiųTirhutaugaritikvaimatoma kalbaVarang KshitiWoleaisenieji persųŠu" + - "mero Akado dantiraštisjipaveldėtasmatematiniai simboliaijaustukaisimboli" + - "ųneparašytabendrinežinomi rašmenys" - -var ltScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0016, 0x0016, 0x001c, 0x002f, 0x0037, - 0x003f, 0x0049, 0x004e, 0x0057, 0x005c, 0x0064, 0x0064, 0x0079, - 0x0081, 0x0087, 0x008e, 0x0097, 0x009c, 0x00a2, 0x00cc, 0x00d2, - 0x00d6, 0x00df, 0x00e3, 0x00e9, 0x00ee, 0x00f6, 0x0118, 0x0122, - 0x012b, 0x0140, 0x014f, 0x015d, 0x016f, 0x0177, 0x017e, 0x018e, - 0x0196, 0x01a0, 0x01a0, 0x01a5, 0x01ab, 0x01b2, 0x01bd, 0x01c4, - 0x01ca, 0x01d0, 0x01d3, 0x01d9, 0x01ea, 0x01f9, 0x01f9, 0x0201, - 0x0209, 0x0220, 0x022b, 0x023e, 0x024d, 0x0252, 0x0260, 0x026e, - // Entry 40 - 7F - 0x0278, 0x027f, 0x0286, 0x028e, 0x0296, 0x029e, 0x02a5, 0x02ab, - 0x02b2, 0x02bf, 0x02c5, 0x02cb, 0x02cf, 0x02da, 0x02e9, 0x02f7, - 0x02fe, 0x0304, 0x0309, 0x0315, 0x0321, 0x0327, 0x032b, 0x0331, - 0x0337, 0x0341, 0x034a, 0x0352, 0x0352, 0x0363, 0x0368, 0x037f, - 0x0387, 0x0391, 0x0395, 0x039d, 0x03a1, 0x03a4, 0x03b0, 0x03b0, - 0x03bb, 0x03d3, 0x03dd, 0x03dd, 0x03e6, 0x03ea, 0x03f0, 0x03f5, - 0x03fd, 0x0402, 0x0408, 0x0408, 0x040f, 0x0417, 0x0422, 0x0431, - 0x0439, 0x044c, 0x045b, 0x0466, 0x046e, 0x047e, 0x0490, 0x0496, - // Entry 80 - BF - 0x04a0, 0x04a5, 0x04b1, 0x04b7, 0x04cd, 0x04d7, 0x04e7, 0x04ee, - 0x04f6, 0x04fd, 0x0506, 0x050e, 0x051a, 0x051a, 0x0520, 0x052c, - 0x0531, 0x0546, 0x0553, 0x055e, 0x0566, 0x056b, 0x0571, 0x0586, - 0x058d, 0x0593, 0x059a, 0x05a1, 0x05a8, 0x05af, 0x05b8, 0x05bc, - 0x05c1, 0x05cd, 0x05d4, 0x05dc, 0x05df, 0x05eb, 0x05f8, 0x05fe, - 0x060c, 0x0626, 0x0628, 0x0628, 0x0633, 0x0649, 0x0652, 0x065b, - 0x0666, 0x066c, 0x067f, -} // Size: 382 bytes - -const lvScriptStr string = "" + // Size: 798 bytes - "arābuaramiešuarmēņubaliešubengāļubopomofobrahmiBraila rakstsirokēzukoptu" + - "kirilicasenslāvudevānagāridemotiskais rakstshierātiskais rakstsēģiptiešu" + - " hieroglifietiopiešugruzīnugotugrieķugudžaratupandžabuhaņu ar bopomofoha" + - "ngilsķīniešuhaņu vienkāršotāhaņu tradicionālāivritshiraganakatakana vai " + - "hiraganasenungāruvecitāļudžamojaviešujapāņukatakanakhmerukannadukorejieš" + - "ulaosiešulatīņulineārā Alineārā BlīdiešumaijumalajalumongoļuMūna rakstsb" + - "irmiešuogamiskais rakstsorijuosmaņu turkufeniķiešurongorongorūnu rakstss" + - "amariešusingāļuzundusīriešurietumsīriešuaustrumsīriešutamilutelugutagalu" + - "tānatajutibetiešusenperiešušumeru-akadiešu ķīļrakstsjimantotāmatemātiska" + - "is pierakstsemocijzīmessimbolibez rakstībasvispārējānezināma rakstība" - -var lvScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000f, 0x0017, - 0x0017, 0x001f, 0x001f, 0x001f, 0x001f, 0x0028, 0x0028, 0x0028, - 0x0030, 0x0036, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x0043, 0x004b, 0x004b, 0x0050, 0x0050, 0x0058, 0x0061, 0x006d, - 0x006d, 0x006d, 0x007f, 0x0093, 0x00aa, 0x00aa, 0x00b4, 0x00b4, - 0x00bc, 0x00bc, 0x00bc, 0x00c0, 0x00c0, 0x00c7, 0x00d1, 0x00da, - 0x00eb, 0x00f2, 0x00fc, 0x00fc, 0x0110, 0x0124, 0x0124, 0x012a, - 0x0132, 0x0132, 0x0132, 0x0147, 0x0151, 0x0151, 0x015b, 0x0161, - // Entry 40 - 7F - 0x0169, 0x0171, 0x0171, 0x0171, 0x0179, 0x0179, 0x017f, 0x017f, - 0x0186, 0x0190, 0x0190, 0x0190, 0x0190, 0x0199, 0x0199, 0x0199, - 0x01a1, 0x01a1, 0x01a1, 0x01ac, 0x01b7, 0x01b7, 0x01b7, 0x01b7, - 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c5, 0x01c5, 0x01c5, - 0x01c5, 0x01cd, 0x01cd, 0x01d5, 0x01e1, 0x01e1, 0x01e1, 0x01e1, - 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01ea, 0x01fb, - 0x01fb, 0x01fb, 0x0200, 0x0200, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x0218, 0x0218, 0x0218, 0x0218, - // Entry 80 - BF - 0x0222, 0x022e, 0x0238, 0x0238, 0x0238, 0x0238, 0x0238, 0x0238, - 0x0238, 0x0238, 0x0238, 0x0241, 0x0241, 0x0241, 0x0246, 0x0246, - 0x024f, 0x024f, 0x025e, 0x026e, 0x026e, 0x026e, 0x026e, 0x026e, - 0x0274, 0x0274, 0x0274, 0x027a, 0x027a, 0x027a, 0x0280, 0x0285, - 0x0289, 0x0293, 0x0293, 0x0293, 0x0293, 0x0293, 0x0293, 0x0293, - 0x029e, 0x02bc, 0x02be, 0x02be, 0x02c6, 0x02de, 0x02ea, 0x02f1, - 0x02ff, 0x030b, 0x031e, -} // Size: 382 bytes - -const mkScriptStr string = "" + // Size: 3531 bytes - "афакакавкаскоалбанскиарапско писмоцарскоарамејскиерменско писмоавестанск" + - "обалискобамумскобасабатачкобенгалско писмоблиссимболибопомофобрамибрајо" + - "во писмобугискобухидскочакманскоканадско слоговнокарискочамскочерокиско" + - "кирткоптскокипарскокирилско писмостарословенска кирилицадеванагаридезер" + - "етскоДиплојеево стенографскоегипетско демотскоегипетско хиератскоегипет" + - "ски хиероглифиелбасанскоетиопско писмогрузиски хуцуригрузиско писмоглаг" + - "олицаготскогрантагрчко писмогуџаратигурмукиханбхангулханско писмохануно" + - "овскопоедноставено ханско писмотрадиционално ханскохебрејско писмохираг" + - "анаанадолски хиероглифипахауанско хмоншкојапонско слоговностароунгарско" + - "харапскостароиталскоџамојаванскојапонско писмоџурченскокаја ликатаканак" + - "ароштикмерско писмохоџкиканнадакорејско писмокпелскокајтилансколаошко п" + - "исмофрактурна латиницагелска латиницалатинично писмолепчансколимбулинеа" + - "рно Алинеарно БФрејзероволомсколикисколидискомахаџанимандејскоманихејск" + - "омајански хиероглифимендскомероитско ракописномероитскомалајаламско пис" + - "момодимонголско писмоМуновомромејтејскомјанмарско писмостаросеверноарап" + - "сконабатејсконасиска гебанконишуогамол чикистаротурскооријанско писмосо" + - "малископалмирскоПаучинхауовостаропермскопагспанатписно средноперсископс" + - "алтирско средноперсискокнижевно староперсискофеникискоПолардовонатписно" + - " партискореџаншкоронгоронгорунскосамарјанскосаратистаројужноарапскосаура" + - "штранскознаковно пишувањеШоовошарадасидамкудабадисинхалско писмосоранг " + - "сомпенгсунданскосилхетско нагарисирискоестрангелско сирискозападносирис" + - "коисточносирискотагбанванскотакритај леново тај луетамилско писмотангут" + - "скотај вјеттелугутенгвартифинагтагалошкотанатајландско писмотибетско пи" + - "смотирхутаугаритсковајвидлив говорваранг кшитиволеајскостароперсискосум" + - "ероакадско клинестојинаследеноматематичка нотацијаемоџисимболибез писмо" + - "општонепознато писмо" - -var mkScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000a, 0x002a, 0x002a, 0x0043, 0x0061, 0x007c, - 0x0090, 0x009e, 0x00ae, 0x00b6, 0x00c4, 0x00e1, 0x00e1, 0x00f7, - 0x0107, 0x0111, 0x012a, 0x0138, 0x0148, 0x015a, 0x017b, 0x0189, - 0x0195, 0x01a7, 0x01af, 0x01bd, 0x01cd, 0x01e8, 0x0215, 0x0229, - 0x023d, 0x026a, 0x028d, 0x02b2, 0x02d9, 0x02ed, 0x0308, 0x0325, - 0x0340, 0x0352, 0x0352, 0x035e, 0x036a, 0x037f, 0x038f, 0x039d, - 0x03a5, 0x03b1, 0x03c8, 0x03de, 0x0410, 0x0437, 0x0437, 0x0454, - 0x0464, 0x048b, 0x04ae, 0x04cf, 0x04e9, 0x04f9, 0x0511, 0x0519, - // Entry 40 - 7F - 0x0529, 0x0544, 0x0556, 0x0563, 0x0573, 0x0581, 0x059a, 0x05a4, - 0x05b2, 0x05cd, 0x05db, 0x05e5, 0x05f1, 0x0608, 0x062b, 0x0648, - 0x0665, 0x0677, 0x0681, 0x0694, 0x06a7, 0x06bb, 0x06c7, 0x06d5, - 0x06e3, 0x06f3, 0x0705, 0x0719, 0x0719, 0x073e, 0x074c, 0x0771, - 0x0783, 0x07a6, 0x07ae, 0x07cb, 0x07d7, 0x07dd, 0x07ef, 0x07ef, - 0x080e, 0x0834, 0x0848, 0x0848, 0x085f, 0x0865, 0x086d, 0x0875, - 0x0882, 0x0898, 0x08b5, 0x08b5, 0x08c7, 0x08d9, 0x08f1, 0x0909, - 0x0915, 0x0942, 0x0973, 0x099e, 0x09b0, 0x09c2, 0x09e3, 0x09f3, - // Entry 80 - BF - 0x0a07, 0x0a13, 0x0a29, 0x0a35, 0x0a57, 0x0a71, 0x0a92, 0x0a9c, - 0x0aa8, 0x0ab2, 0x0ac2, 0x0adf, 0x0afa, 0x0afa, 0x0b0c, 0x0b2b, - 0x0b39, 0x0b60, 0x0b7c, 0x0b98, 0x0bb0, 0x0bba, 0x0bc5, 0x0bdb, - 0x0bf6, 0x0c08, 0x0c17, 0x0c23, 0x0c31, 0x0c3f, 0x0c51, 0x0c59, - 0x0c78, 0x0c93, 0x0ca1, 0x0cb3, 0x0cb9, 0x0cd0, 0x0ce7, 0x0cf9, - 0x0d13, 0x0d3e, 0x0d42, 0x0d42, 0x0d54, 0x0d7b, 0x0d85, 0x0d93, - 0x0da4, 0x0dae, 0x0dcb, -} // Size: 382 bytes - -const mlScriptStr string = "" + // Size: 3513 bytes - "അറബിക്അർമിഅർമേനിയൻഅവെസ്ഥൻബാലിനീസ്ബട്ടക്ബംഗാളിബ്ലിസ് ചിത്ര ലിപിബോപ്പോമോഫോ" + - "ബ്രാഹ്മിബ്രെയ്\u200cലിബുഗിനീസ്ബുഹിഡ്ചകംഏകീകൃത കനേഡിയൻ ഗോത്രലിപിചരിയൻഛം" + - "ചെറോക്കിചിർത്ത്കോപ്റ്റിക്സൈപ്രിയോട്ട്സിറിലിക്പുരാതന ചർച്ച് സ്ലവോണിക് സ" + - "ിറിലിക്ദേവനാഗരിഡെസെർട്ട്ഈജിപ്ഷ്യൻ ഡിമോട്ടിക്ഈജിപ്ഷ്യൻ ഹിരാറ്റിക്ഈജിപ്ഷ" + - "്യൻ ചിത്രലിപിഎത്യോപിക്ജോർജ്ജിയൻ ഖുട്സുരിജോർജ്ജിയൻഗ്ലഗോലിറ്റിക്ഗോഥിക്ഗ്" + - "രീക്ക്ഗുജറാത്തിഗുരുമുഖിഹൻബ്ഹാംഗുൽഹാൻഹനുനൂലളിതവൽക്കരിച്ച ഹാൻപരമ്പരാഗത ഹ" + - "ാൻഹീബ്രുഹിരഗാനപഹ്വാ ഹമോംഗ്ജാപ്പനീസ് സില്ലബറീസ്പുരാതന ഹംഗേറിയൻസിന്ധുപഴയ" + - " ഇറ്റാലിയൻജാമോജാവനീസ്ജാപ്പനീസ്കയാ ലികറ്റക്കാനഖരോഷ്ടിഖമെർകന്നഡകൊറിയൻക്തില" + - "ന്നലാവോഫ്രാക്ടുർ ലാറ്റിൻഗെയ്\u200cലിക് ലാറ്റിൻലാറ്റിൻലെപ്ചലിംബുസമരേഖയി" + - "ലുള്ള എലീനിയർ ബിലൈസിൻലൈഡിയൻമൻഡേയൻമണിചേയൻമായൻ ചിത്രലിപിമെറോയിറ്റിക്മലയാ" + - "ളംമംഗോളിയൻമൂൺമേറ്റി മായക്മ്യാൻമാർഎൻകോഒഖാംഒൽ ചിക്കിഒർഖോൺഒഡിയഒസ്\u200cമാ" + - "നിയപുരാതന പെർമിക്ഫഗസ് പഎഴുത്തു പഹൽവിസാൾട്ടർ പഹൽവിപഹൽവി ലിപിഫിനീഷ്യൻപൊള" + - "്ളാർഡ് ശബ്ദലിപിപൃതിറെജാംഗ്റൊംഗോറൊംഗോറുണിക്സമരിയസരതിസൗരാഷ്ട്രചിഹ്നലിപിഷ" + - "ാവിയൻസിംഹളസന്താനീസ്സൈലോതി നാഗരിസിറിയക്ക്എസ്റ്റ്രാംഗ്ലോ സിറിയക്പശ്ചിമസു" + - "റിയാനികിഴക്കൻ സിറിയക്തഗ്ബൻവാതായ് ലേപുതിയ തായ് ല്യൂതമിഴ്ത്വട്തെലുങ്ക്തെ" + - "ംഗ്വർതിഫിനാഗ്തഗലോഗ്ഥാനതായ്ടിബറ്റൻഉഗ്രൈറ്റിക്വൈദൃശ്യഭാഷപഴയ പേർഷ്യൻസുമേറ" + - "ോ അക്കാഡിയൻ ക്യുണിഫോംയിപാരമ്പര്യമായഗണിത രൂപംഇമോജിചിഹ്നങ്ങൾഎഴുതപ്പെടാത്" + - "തത്സാധാരണഅജ്ഞാത ലിപി" - -var mlScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x001e, 0x0036, - 0x004b, 0x0063, 0x0063, 0x0063, 0x0075, 0x0087, 0x0087, 0x00b6, - 0x00d4, 0x00ec, 0x0107, 0x011f, 0x0131, 0x013a, 0x017e, 0x018d, - 0x0193, 0x01ab, 0x01c0, 0x01de, 0x0202, 0x021a, 0x0274, 0x028c, - 0x02a7, 0x02a7, 0x02e1, 0x031b, 0x0352, 0x0352, 0x036d, 0x03a1, - 0x03bc, 0x03e3, 0x03e3, 0x03f5, 0x03f5, 0x040d, 0x0428, 0x0440, - 0x044c, 0x045e, 0x0467, 0x0476, 0x04aa, 0x04cf, 0x04cf, 0x04e1, - 0x04f3, 0x04f3, 0x0515, 0x054f, 0x057a, 0x058c, 0x05b1, 0x05bd, - // Entry 40 - 7F - 0x05d2, 0x05ed, 0x05ed, 0x05fd, 0x0618, 0x062d, 0x0639, 0x0639, - 0x0648, 0x065a, 0x065a, 0x0666, 0x0672, 0x067e, 0x06af, 0x06e0, - 0x06f5, 0x0704, 0x0713, 0x073b, 0x0754, 0x0754, 0x0754, 0x0763, - 0x0775, 0x0775, 0x0787, 0x079c, 0x079c, 0x07c4, 0x07c4, 0x07c4, - 0x07e8, 0x07fa, 0x07fa, 0x0812, 0x081b, 0x081b, 0x083d, 0x083d, - 0x0855, 0x0855, 0x0855, 0x0855, 0x0855, 0x0861, 0x0861, 0x086d, - 0x0886, 0x0895, 0x08a1, 0x08a1, 0x08bc, 0x08bc, 0x08bc, 0x08e4, - 0x08f4, 0x0919, 0x093e, 0x095a, 0x0972, 0x09a6, 0x09b2, 0x09c7, - // Entry 80 - BF - 0x09e5, 0x09f7, 0x0a06, 0x0a12, 0x0a12, 0x0a2d, 0x0a48, 0x0a5a, - 0x0a5a, 0x0a5a, 0x0a5a, 0x0a69, 0x0a69, 0x0a69, 0x0a84, 0x0aa6, - 0x0ac1, 0x0b01, 0x0b2b, 0x0b56, 0x0b6b, 0x0b6b, 0x0b7e, 0x0ba7, - 0x0bb6, 0x0bb6, 0x0bc5, 0x0bdd, 0x0bf2, 0x0c0a, 0x0c1c, 0x0c25, - 0x0c31, 0x0c46, 0x0c46, 0x0c67, 0x0c6d, 0x0c85, 0x0c85, 0x0c85, - 0x0ca4, 0x0cee, 0x0cf4, 0x0cf4, 0x0d18, 0x0d31, 0x0d40, 0x0d5b, - 0x0d88, 0x0d9a, 0x0db9, -} // Size: 382 bytes - -const mnScriptStr string = "" + // Size: 689 bytes - "арабарменибенгалвопомофобрайлкириллдеванагариэтиопгүржгрекгужаратигүрмүх" + - "Бопомофотой ханзхангыльханзхялбаршуулсан ханзуламжлалт ханзеврейхираган" + - "аяпон хэлний үеийн цагаан толгойжамояпонкатаканакхмерканнадасолонгослао" + - "слатинмалаяламмонгол бичигмьянмарориясинхалатамилтэлүгүтанатайтөвдматем" + - "атик тооллын системэможитэмдэгбичигдээгүйнийтлэгтодорхойгүй бичиг" - -var mnScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0020, 0x0020, 0x0020, - 0x0030, 0x0030, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0046, 0x0046, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x0064, 0x0064, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x0074, 0x0084, 0x0090, - 0x00af, 0x00bd, 0x00c5, 0x00c5, 0x00e8, 0x0103, 0x0103, 0x010d, - 0x011d, 0x011d, 0x011d, 0x0157, 0x0157, 0x0157, 0x0157, 0x015f, - // Entry 40 - 7F - 0x015f, 0x0167, 0x0167, 0x0167, 0x0177, 0x0177, 0x0181, 0x0181, - 0x018f, 0x019f, 0x019f, 0x019f, 0x019f, 0x01a7, 0x01a7, 0x01a7, - 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, - 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01b1, - 0x01b1, 0x01c1, 0x01c1, 0x01d8, 0x01d8, 0x01d8, 0x01d8, 0x01d8, - 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, 0x01e6, - 0x01e6, 0x01e6, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, - 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, - // Entry 80 - BF - 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, 0x01ee, - 0x01ee, 0x01ee, 0x01ee, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, 0x01fc, - 0x0206, 0x0206, 0x0206, 0x0212, 0x0212, 0x0212, 0x0212, 0x021a, - 0x0220, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, - 0x0228, 0x0228, 0x0228, 0x0228, 0x0228, 0x0256, 0x0260, 0x026c, - 0x0282, 0x0290, 0x02b1, -} // Size: 382 bytes - -const mrScriptStr string = "" + // Size: 3418 bytes - "अरबीइम्पिरियल आर्मेनिकअर्मेनियनअवेस्तानबालीबटाकबंगालीब्लिसिम्बॉल्सबोपोमो" + - "फोब्रह्मीब्रेलबूगीबुहिदचकमायूनिफाइड कॅनेडियन अ\u200dॅबोरिदनल सिलॅबिक्स" + - "कॅरियनचामचेरोकीकिर्थकॉप्टिकसायप्रिऑटसीरिलिकपुरातन चर्च स्लाव्होनिक सिर" + - "िलिकदेवनागरीडेसर्टइजिप्शियन डेमोटिकइजिप्शियन हायरेटिकइजिप्शियन हायरोग्" + - "लिफ्सईथिओपिकजॉर्जियन खुत्सुरीजॉर्जियनग्लॅगोलिटिकगोथिकग्रीकगुजरातीगुरुम" + - "ुखीहान्बहंगुलहानहनुनूसरलीकृत हानपारंपारिक हानहिब्रूहिरागानापहाउ मंगजाप" + - "ानी स्वरलिपीपुरातन हंगेरियनसिन्धुजुनी इटालिकजामोजावानीसजपानीकायाह लीकॅ" + - "टाकानाखारोश्थीख्मेरकन्नडकोरियनकाइथीलानालाओफ्रॅक्तुर लॅटिनगाएलिक लेटिनल" + - "ॅटिनलेपचालिम्बूलीनियार अलीनियर बीलायशियानलायडियानमान्डायीनमानीचायीनमाय" + - "ान हाइरोग्लिफ्समेरोइटिकमल्याळममंगोलियनमूनमेइतेइ मायेकम्यानमारएन्‘कोओघा" + - "मओल चिकिओर्खोनउडियाउस्मानियापुरातन पर्मिकफाग्स-पाइन्स्क्रिप्शनल पाहलवी" + - "सॉल्टर पाहलवीबुक पाहलवीफोनिशियनपोलार्ड फोनेटिकइन्स्क्रिप्शनल पर्थियनरी" + - "जांगरोन्गोरोन्गोरूनिकसमरिटानसरातीसौराष्ट्रसंकेत लिपीशॅव्हियनसिंहलासूदा" + - "नीसिलोती नागरीसिरीयाकएस्त्ट्रेन्जेलो सिरियाकपश्चिमी सिरियाकपूर्वी सिरि" + - "याकतगोआन्वाताई लीनवीन ताई लूतामिळताई विएततेलगुतेन्गवारतिफिनाघटागालोगथा" + - "नाथाईतिबेटीयुगारिटिकवाईदृश्य संवादपुरातन फारसीदृश्यमान भाषायीवंशपरंपरा" + - "गतगणितीय संकेतलिपीइमोजीप्रतीकअलिखितसामान्यअज्ञात लिपी" - -var mrScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x0040, 0x005b, - 0x0073, 0x007f, 0x007f, 0x007f, 0x008b, 0x009d, 0x009d, 0x00c4, - 0x00dc, 0x00f1, 0x0100, 0x010c, 0x011b, 0x0127, 0x0193, 0x01a5, - 0x01ae, 0x01c0, 0x01cf, 0x01e4, 0x01ff, 0x0214, 0x026b, 0x0283, - 0x0295, 0x0295, 0x02c6, 0x02fa, 0x033a, 0x033a, 0x034f, 0x0380, - 0x0398, 0x03b9, 0x03b9, 0x03c8, 0x03c8, 0x03d7, 0x03ec, 0x0404, - 0x0413, 0x0422, 0x042b, 0x043a, 0x0459, 0x047e, 0x047e, 0x0490, - 0x04a8, 0x04a8, 0x04be, 0x04e9, 0x0514, 0x0526, 0x0545, 0x0551, - // Entry 40 - 7F - 0x0566, 0x0575, 0x0575, 0x058b, 0x05a3, 0x05bb, 0x05ca, 0x05ca, - 0x05d9, 0x05eb, 0x05eb, 0x05fa, 0x0606, 0x060f, 0x063a, 0x065c, - 0x066b, 0x067a, 0x068c, 0x06a5, 0x06be, 0x06be, 0x06be, 0x06d6, - 0x06ee, 0x06ee, 0x0709, 0x0724, 0x0724, 0x0758, 0x0758, 0x0758, - 0x0770, 0x0785, 0x0785, 0x079d, 0x07a6, 0x07a6, 0x07c8, 0x07c8, - 0x07e0, 0x07e0, 0x07e0, 0x07e0, 0x07e0, 0x07f2, 0x07f2, 0x07fe, - 0x0811, 0x0823, 0x0832, 0x0832, 0x084d, 0x084d, 0x084d, 0x0872, - 0x0888, 0x08c5, 0x08ea, 0x0906, 0x091e, 0x0949, 0x0989, 0x099b, - // Entry 80 - BF - 0x09bf, 0x09ce, 0x09e3, 0x09f2, 0x09f2, 0x0a0d, 0x0a29, 0x0a41, - 0x0a41, 0x0a41, 0x0a41, 0x0a53, 0x0a53, 0x0a53, 0x0a65, 0x0a87, - 0x0a9c, 0x0adf, 0x0b0a, 0x0b32, 0x0b4a, 0x0b4a, 0x0b5a, 0x0b77, - 0x0b86, 0x0b86, 0x0b9c, 0x0bab, 0x0bc3, 0x0bd8, 0x0bed, 0x0bf9, - 0x0c02, 0x0c14, 0x0c14, 0x0c2f, 0x0c38, 0x0c57, 0x0c57, 0x0c57, - 0x0c79, 0x0c9e, 0x0ca4, 0x0ca4, 0x0cc5, 0x0cf3, 0x0d02, 0x0d14, - 0x0d26, 0x0d3b, 0x0d5a, -} // Size: 382 bytes - -const msScriptStr string = "" + // Size: 357 bytes - "ArabArmeniaBaliBamuBenggalaBopomofoBrailleCansCyrilDevanagariEthiopiaGeo" + - "rgiaGreekGujaratGurmukhiHan dengan BopomofoHangulHanHan RingkasHan Tradi" + - "sionalIbraniHiraganaEjaan sukuan JepunJamoJepunKatakanaKhmerKannadaKorea" + - "LaoLatinMalayalamMongoliaMyammarOriyaSinhalaTamilTeluguThaanaThaiTibetTa" + - "tatanda matematikEmojiSimbolTidak ditulisLazimTulisan Tidak Diketahui" - -var msScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x000b, - 0x000b, 0x000f, 0x0013, 0x0013, 0x0013, 0x001b, 0x001b, 0x001b, - 0x0023, 0x0023, 0x002a, 0x002a, 0x002a, 0x002a, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x0033, 0x0033, 0x003d, - 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x0045, 0x0045, - 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x0051, 0x0058, 0x0060, - 0x0073, 0x0079, 0x007c, 0x007c, 0x0087, 0x0096, 0x0096, 0x009c, - 0x00a4, 0x00a4, 0x00a4, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00ba, - // Entry 40 - 7F - 0x00ba, 0x00bf, 0x00bf, 0x00bf, 0x00c7, 0x00c7, 0x00cc, 0x00cc, - 0x00d3, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00db, 0x00db, 0x00db, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e0, - 0x00e0, 0x00e9, 0x00e9, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - // Entry 80 - BF - 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x00fd, - 0x00fd, 0x00fd, 0x00fd, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0109, 0x0109, 0x0109, 0x010f, 0x010f, 0x010f, 0x010f, 0x0115, - 0x0119, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, - 0x011e, 0x011e, 0x011e, 0x011e, 0x011e, 0x0131, 0x0136, 0x013c, - 0x0149, 0x014e, 0x0165, -} // Size: 382 bytes - -const myScriptStr string = "" + // Size: 1298 bytes - "အာရေဗျအာမေးနီးယားဘင်္ဂါလီဘိုပိုဗြဟ္မမီဘရေစစ်ရိလစ်ဒီဗနာဂရီအီသီယိုးပီးယားဂ" + - "ျော်ဂျီယာဂရိဂုဂျာရသီဂူရူဟန်ဘ်ဟန်ဂူးလ်ဟန်ဟန် ရိုးရှင်းဟန် ရိုးရာဟီဗရူးဟ" + - "ီရဂနဂျပန် အက္ခရာဂျမိုဂျာဗားနီးစ်ဂျပန်ကယားလီခတခနခမာခန္နာဒါကိုရီးယားလာအိ" + - "ုလက်တင်မလေယာလမ်မွန်ဂိုလီးယားမြန်မာအိုရာဆင်ဟာလတိုင်လီတမီးလ်တီလုတဂလော့ဂ်" + - "သာအ်ထိုင်းတိဘက်မြင်နိုင်သော စကားပါရှန် အဟောင်းရီဂဏန်းသင်္ချာအီမိုဂျီသင" + - "်္ကေတထုံးတမ်းသဖွယ်လိုက်နာလျက်ရှိသောအများနှင့်သက်ဆိုင်သောမသိ သို့မဟုတ် " + - "မရှိသော စကားလုံး" - -var myScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0012, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x004b, 0x004b, 0x004b, - 0x005d, 0x0072, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0093, 0x0093, 0x00ab, - 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00d5, 0x00d5, - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00fc, 0x0114, 0x0120, - 0x012f, 0x0147, 0x0150, 0x0150, 0x0175, 0x0191, 0x0191, 0x01a3, - 0x01b2, 0x01b2, 0x01b2, 0x01d4, 0x01d4, 0x01d4, 0x01d4, 0x01e3, - // Entry 40 - 7F - 0x0204, 0x0213, 0x0213, 0x0225, 0x0231, 0x0231, 0x023a, 0x023a, - 0x024f, 0x026a, 0x026a, 0x026a, 0x026a, 0x0279, 0x0279, 0x0279, - 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, - 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, 0x028b, - 0x028b, 0x02a3, 0x02a3, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, - 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02dc, - 0x02dc, 0x02dc, 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, - 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, - // Entry 80 - BF - 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, 0x02eb, - 0x02eb, 0x02eb, 0x02eb, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, - 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x02fd, 0x0312, 0x0312, - 0x0324, 0x0324, 0x0324, 0x0330, 0x0330, 0x0330, 0x0348, 0x0354, - 0x0366, 0x0375, 0x0375, 0x0375, 0x0375, 0x03a6, 0x03a6, 0x03a6, - 0x03ce, 0x03ce, 0x03d4, 0x03d4, 0x03d4, 0x03f8, 0x0410, 0x0425, - 0x047f, 0x04be, 0x0512, -} // Size: 382 bytes - -const neScriptStr string = "" + // Size: 3057 bytes - "अरबीआर्मीआर्मेनियालीआभेस्टानबालीबाटकबङ्गालीब्लिजसिम्बोल्सबोपोमोफोब्राह्म" + - "ीब्रेलबुगिनिजबुहिदकाक्म्कारियनचामचेरोकीकिर्थकप्टिककप्रियटसिरिलिकदेवाना" + - "गरीडेसेरेटइजिप्टियन डेमोटिकइजिप्टियन हाइरटिकइजिप्टियन हाइरोग्लिफ्सइथिय" + - "ोपिकग्रुजियाली खुट्सुरीजर्जियालीग्लागोलिटिकगोथिकग्रीकगुजरातीगुरूमुखीहा" + - "न्बहान्गुलहानहानुनुसरलिकृत चिनियाँपरम्परागत चिनियाँहिब्रुहिरागनापहावह " + - "हमोङ्गकाताकाना वा हिरागानापुरानो हङ्गेरियालीइन्दुसपुरानो इटालिकजामोजाभ" + - "ानीजापानीकायाहलीकाताकानाखारोस्थितिखमेरकान्नाडाकोरियनक्थीलान्नालाओफ्राक" + - "्टुर ल्याटिनग्यालिक ल्याटिनल्याटिनलेप्चालिम्बुलाइसियनलाइडियनमान्डाएनमा" + - "निकाएनमाया हाइरोग्लिफ्समेरियोटिकमलायालममङ्गोलजूनमाइटेइ मायेकम्यान्मारए" + - "न्कोओघामओलचिकीओर्खोनओडियाओस्मान्यापुरानो पर्मिकफाग्स-पाफ्लिफ्ल्पबुक पह" + - "ल्भीफोनिसियनपोल्लार्ड फोनेटिकपिआरटीरेजाङरोङ्गोरोङ्गोरूनिकसमारिटनसारतीस" + - "ौराष्ट्रसाइनराइटिङशाभियनसिन्हालास्ल्योटी नाग्रीसिरियाकइस्ट्रेनजेलो सिर" + - "ियाकपश्चिमी सिरियाकपूर्वी सिरियाकटाग्वान्वाटाइलेन्यू टाइ लुइतामिलटाभ्ट" + - "तेलुगुटेङ्वारटिफिनाघटागालोगथानाथाईतिब्बतीयुगारिटिकभाइदृश्यमय वाणीपुरान" + - "ो पर्सियनयीइन्हेरिटेडZmthZsyeप्रतीकहरूनलेखिएकोसाझाअज्ञात लिपि" - -var neScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x001b, 0x003c, - 0x0054, 0x0060, 0x0060, 0x0060, 0x006c, 0x0081, 0x0081, 0x00ab, - 0x00c3, 0x00db, 0x00ea, 0x00ff, 0x010e, 0x0120, 0x0120, 0x0132, - 0x013b, 0x014d, 0x015c, 0x016e, 0x0183, 0x0198, 0x0198, 0x01b3, - 0x01c8, 0x01c8, 0x01f9, 0x022a, 0x026a, 0x026a, 0x0282, 0x02b9, - 0x02d4, 0x02f5, 0x02f5, 0x0304, 0x0304, 0x0313, 0x0328, 0x0340, - 0x034f, 0x0364, 0x036d, 0x037f, 0x03aa, 0x03db, 0x03db, 0x03ed, - 0x0402, 0x0402, 0x0424, 0x045c, 0x0490, 0x04a2, 0x04c7, 0x04d3, - // Entry 40 - 7F - 0x04e5, 0x04f7, 0x04f7, 0x050c, 0x0524, 0x0542, 0x054e, 0x054e, - 0x0566, 0x0578, 0x0578, 0x0584, 0x0596, 0x059f, 0x05d0, 0x05fb, - 0x0610, 0x0622, 0x0634, 0x0634, 0x0634, 0x0634, 0x0634, 0x0649, - 0x065e, 0x065e, 0x0676, 0x068e, 0x068e, 0x06bf, 0x06bf, 0x06bf, - 0x06da, 0x06ef, 0x06ef, 0x0701, 0x070a, 0x070a, 0x072c, 0x072c, - 0x0747, 0x0747, 0x0747, 0x0747, 0x0747, 0x0756, 0x0756, 0x0762, - 0x0774, 0x0786, 0x0795, 0x0795, 0x07b0, 0x07b0, 0x07b0, 0x07d5, - 0x07eb, 0x07f7, 0x0806, 0x0822, 0x083a, 0x086b, 0x087d, 0x088c, - // Entry 80 - BF - 0x08b0, 0x08bf, 0x08d4, 0x08e3, 0x08e3, 0x08fe, 0x091c, 0x092e, - 0x092e, 0x092e, 0x092e, 0x0946, 0x0946, 0x0946, 0x0946, 0x0971, - 0x0986, 0x09c0, 0x09eb, 0x0a13, 0x0a31, 0x0a31, 0x0a40, 0x0a60, - 0x0a6f, 0x0a6f, 0x0a7e, 0x0a90, 0x0aa5, 0x0aba, 0x0acf, 0x0adb, - 0x0ae4, 0x0af9, 0x0af9, 0x0b14, 0x0b1d, 0x0b3f, 0x0b3f, 0x0b3f, - 0x0b67, 0x0b67, 0x0b6d, 0x0b6d, 0x0b8b, 0x0b8f, 0x0b93, 0x0bae, - 0x0bc6, 0x0bd2, 0x0bf1, -} // Size: 382 bytes - -const nlScriptStr string = "" + // Size: 1716 bytes - "AdlamDefakaKaukasisch AlbaneesAhomArabischKeizerlijk ArameesArmeensAvest" + - "aansBalineesBamounBassa VahBatakBengaalsBhaiksukiBlissymbolenBopomofoBra" + - "hmiBrailleBugineesBuhidChakmaVerenigde Canadese Aboriginal-symbolenCaris" + - "chChamCherokeeCirthKoptischCyprischCyrillischOudkerkslavisch CyrillischD" + - "evanagariDeseretDuployan snelschriftEgyptisch demotischEgyptisch hiërati" + - "schEgyptische hiërogliefenElbasanEthiopischGeorgisch KhutsuriGeorgischGl" + - "agolitischMasaram GondiGothischGranthaGrieksGujaratiGurmukhiHanbHangulHa" + - "nHanunoovereenvoudigd Chineestraditioneel ChineesHatranHebreeuwsHiragana" + - "Anatolische hiërogliefenPahawh HmongKatakana of HiraganaOudhongaarsIndus" + - "Oud-italischJamoJavaansJapansJurchenKayah LiKatakanaKharoshthiKhmerKhojk" + - "iKannadaKoreaansKpelleKaithiLannaLaotiaansGotisch LatijnsGaelisch Latijn" + - "sLatijnsLepchaLimbuLineair ALineair BFraserLomaLycischLydischMahajaniMan" + - "daeansManicheaansMarchenMayahiërogliefenMendeMeroitisch cursiefMeroïtisc" + - "hMalayalamModiMongoolsMoonMroMeiteiMultaniBirmaansOud Noord-ArabischNaba" + - "teaansNewariNaxi GebaN’KoNüshuOghamOl ChikiOrkhonOdiaOsageOsmanyaPalmyre" + - "ensPau Cin HauOudpermischPhags-paInscriptioneel PahlaviPsalmen PahlaviBo" + - "ek PahlaviFoenicischPollard-fonetischInscriptioneel ParthischRejangRongo" + - "rongoRunicSamaritaansSaratiOud Zuid-ArabischSaurashtraSignWritingShavian" + - "SharadaSiddhamSindhiSingaleesSora SompengSoyomboSoendaneesSyloti NagriSy" + - "riacEstrangelo ArameesWest-ArameesOost-ArameesTagbanwaTakriTai LeNieuw T" + - "ai LueTamilTangutTai VietTeluguTengwarTifinaghTagalogThaanaThaiTibetaans" + - "TirhutaUgaritischVaiZichtbare spraakVarang KshitiWoleaiOudperzischSumero" + - "-Akkadian CuneiformYivierkant ZanabazarOvergeërfdWiskundige notatieemoji" + - "Symbolenongeschrevenalgemeenonbekend schriftsysteem" - -var nlScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0005, 0x000b, 0x001e, 0x0022, 0x002a, 0x003c, 0x0043, - 0x004c, 0x0054, 0x005a, 0x0063, 0x0068, 0x0070, 0x0079, 0x0085, - 0x008d, 0x0093, 0x009a, 0x00a2, 0x00a7, 0x00ad, 0x00d3, 0x00da, - 0x00de, 0x00e6, 0x00eb, 0x00f3, 0x00fb, 0x0105, 0x011f, 0x0129, - 0x0130, 0x0144, 0x0157, 0x016c, 0x0184, 0x018b, 0x0195, 0x01a7, - 0x01b0, 0x01bc, 0x01c9, 0x01d1, 0x01d8, 0x01de, 0x01e6, 0x01ee, - 0x01f2, 0x01f8, 0x01fb, 0x0202, 0x0217, 0x022b, 0x0231, 0x023a, - 0x0242, 0x025b, 0x0267, 0x027b, 0x0286, 0x028b, 0x0297, 0x029b, - // Entry 40 - 7F - 0x02a2, 0x02a8, 0x02af, 0x02b7, 0x02bf, 0x02c9, 0x02ce, 0x02d4, - 0x02db, 0x02e3, 0x02e9, 0x02ef, 0x02f4, 0x02fd, 0x030c, 0x031c, - 0x0323, 0x0329, 0x032e, 0x0337, 0x0340, 0x0346, 0x034a, 0x0351, - 0x0358, 0x0360, 0x0369, 0x0374, 0x037b, 0x038c, 0x0391, 0x03a3, - 0x03ae, 0x03b7, 0x03bb, 0x03c3, 0x03c7, 0x03ca, 0x03d0, 0x03d7, - 0x03df, 0x03f1, 0x03fb, 0x0401, 0x040a, 0x0410, 0x0416, 0x041b, - 0x0423, 0x0429, 0x042d, 0x0432, 0x0439, 0x0443, 0x044e, 0x0459, - 0x0461, 0x0477, 0x0486, 0x0492, 0x049c, 0x04ad, 0x04c5, 0x04cb, - // Entry 80 - BF - 0x04d5, 0x04da, 0x04e5, 0x04eb, 0x04fc, 0x0506, 0x0511, 0x0518, - 0x051f, 0x0526, 0x052c, 0x0535, 0x0541, 0x0548, 0x0552, 0x055e, - 0x0564, 0x0576, 0x0582, 0x058e, 0x0596, 0x059b, 0x05a1, 0x05ae, - 0x05b3, 0x05b9, 0x05c1, 0x05c7, 0x05ce, 0x05d6, 0x05dd, 0x05e3, - 0x05e7, 0x05f0, 0x05f7, 0x0601, 0x0604, 0x0614, 0x0621, 0x0627, - 0x0632, 0x064b, 0x064d, 0x065f, 0x066a, 0x067c, 0x0681, 0x0689, - 0x0695, 0x069d, 0x06b4, -} // Size: 382 bytes - -const noScriptStr string = "" + // Size: 1609 bytes - "afakakaukasus-albanskahomarabiskarameiskarmenskavestiskbalinesiskbamumba" + - "ssa vahbatakbengalskblissymbolbopomofobrahmipunktskriftbuginesiskbuhidch" + - "akmafelles kanadiske urspråksstavelserkariskchamcherokeecirthkoptiskkypr" + - "iotiskkyrilliskkirkeslavisk kyrilliskdevanagarideseretduployan stenograf" + - "iegyptisk demotiskegyptisk hieratiskegyptiske hieroglyferelbasisketiopis" + - "kgeorgisk khutsurigeorgiskglagolittiskgotiskgammeltamilskgreskgujaratigu" + - "rmukhihanbhangulhanhanunooforenklet hantradisjonell hanhatransk armenskh" + - "ebraiskhiraganaanatoliske hieroglyferpahawh hmongjapanske stavelsesskrif" + - "tergammelungarskindusgammelitaliskjamojavanesiskjapanskjurchenkayah lika" + - "takanakharoshthikhmerkhojkikannadakoreanskkpellekaithisklannalaotiskfrak" + - "turlatinskgælisk latinsklatinsklepchalimbulineær Alineær Bfraserlomalyki" + - "sklydiskmahajanimandaiskmanikeiskmaya-hieroglyfermendemeroitisk kursivme" + - "roitiskmalayalammodimongolskmoonmromeitei-mayekmultaniburmesiskgammelnor" + - "darabisknabataeansknaxi geban’konüshuoghamol-chikiorkhonoriyaosmanyapalm" + - "yrenskpau cin haugammelpermiskphags-painskripsjonspahlavipsalter pahlavi" + - "pahlavifønikiskpollard-fonetiskinskripsjonsparthiskrejangrongorongoruner" + - "samaritansksaratigammelsørarabisksaurashtrategnskriftshavisksharadasiddh" + - "amkhudawadisinhalasora sompengsundanesisksyloti nagrisyriskestrangelosyr" + - "iakiskvestlig syriakiskøstlig syriakisktagbanwatakritai leny tai luetami" + - "lsktanguttai viettelugutengwartifinaghtagalogtaanathaitibetansktirhutaug" + - "aritiskvaisynlig talevarang kshitiwoleaigammelpersisksumersk-akkadisk ki" + - "leskriftyinedarvetmatematisk notasjonemojisymbolerspråk uten skriftfelle" + - "sukjent skrift" - -var noScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0015, 0x0019, 0x0020, 0x0028, 0x002f, - 0x0037, 0x0041, 0x0046, 0x004f, 0x0054, 0x005c, 0x005c, 0x0066, - 0x006e, 0x0074, 0x007f, 0x0089, 0x008e, 0x0094, 0x00b7, 0x00bd, - 0x00c1, 0x00c9, 0x00ce, 0x00d5, 0x00df, 0x00e8, 0x00fe, 0x0108, - 0x010f, 0x0122, 0x0133, 0x0145, 0x015a, 0x0162, 0x016a, 0x017b, - 0x0183, 0x018f, 0x018f, 0x0195, 0x01a2, 0x01a7, 0x01af, 0x01b7, - 0x01bb, 0x01c1, 0x01c4, 0x01cb, 0x01d8, 0x01e8, 0x01f8, 0x0200, - 0x0208, 0x021e, 0x022a, 0x0244, 0x0251, 0x0256, 0x0263, 0x0267, - // Entry 40 - 7F - 0x0271, 0x0278, 0x027f, 0x0287, 0x028f, 0x0299, 0x029e, 0x02a4, - 0x02ab, 0x02b3, 0x02b9, 0x02c1, 0x02c6, 0x02cd, 0x02db, 0x02ea, - 0x02f1, 0x02f7, 0x02fc, 0x0305, 0x030e, 0x0314, 0x0318, 0x031e, - 0x0324, 0x032c, 0x0334, 0x033d, 0x033d, 0x034d, 0x0352, 0x0362, - 0x036b, 0x0374, 0x0378, 0x0380, 0x0384, 0x0387, 0x0393, 0x039a, - 0x03a3, 0x03b4, 0x03bf, 0x03bf, 0x03c8, 0x03ce, 0x03d4, 0x03d9, - 0x03e1, 0x03e7, 0x03ec, 0x03ec, 0x03f3, 0x03fd, 0x0408, 0x0415, - 0x041d, 0x0430, 0x043f, 0x0446, 0x044f, 0x045f, 0x0473, 0x0479, - // Entry 80 - BF - 0x0483, 0x0488, 0x0493, 0x0499, 0x04aa, 0x04b4, 0x04be, 0x04c5, - 0x04cc, 0x04d3, 0x04dc, 0x04e3, 0x04ef, 0x04ef, 0x04fa, 0x0506, - 0x050c, 0x051f, 0x0530, 0x0541, 0x0549, 0x054e, 0x0554, 0x055e, - 0x0565, 0x056b, 0x0573, 0x0579, 0x0580, 0x0588, 0x058f, 0x0594, - 0x0598, 0x05a1, 0x05a8, 0x05b1, 0x05b4, 0x05bf, 0x05cc, 0x05d2, - 0x05df, 0x05fa, 0x05fc, 0x05fc, 0x0604, 0x0617, 0x061c, 0x0624, - 0x0636, 0x063c, 0x0649, -} // Size: 382 bytes - -const paScriptStr string = "" + // Size: 828 bytes - "ਅਰਬੀਅਰਮੀਨੀਆਈਬੰਗਾਲੀਬੋਪੋਮੋਫੋਬਰੇਲਸਿਰੀਲਿਕਦੇਵਨਾਗਰੀਇਥੀਓਪਿਕਜਾਰਜੀਆਈਯੂਨਾਨੀਗੁਜਰਾਤੀ" + - "ਗੁਰਮੁਖੀਹਾਂਬਹੰਗੁਲਹਾਨਸਰਲ ਹਾਨਰਵਾਇਤੀ ਹਾਨਹਿਬਰੂਹਿਰਾਗਾਨਾਜਾਪਾਨੀ ਸਿਲੇਬਰੀਜ਼ਜਾਮੋਜ" + - "ਪਾਨੀਕਾਟਾਕਾਨਾਖਮੇਰਕੰਨੜਕੋਰੀਆਈਲਾਓਲਾਤੀਨੀਮਲਿਆਲਮਮੰਗੋਲੀਅਨਮਿਆਂਮਾਰਉੜੀਆਸਿੰਹਾਲਾਤਮਿ" + - "ਲਤੇਲਗੂਥਾਨਾਥਾਈਤਿੱਬਤੀਗਣਿਤ ਚਿੰਨ੍ਹ-ਲਿਪੀਇਮੋਜੀਚਿੰਨ੍ਹਅਲਿਖਤਸਧਾਰਨਅਣਪਛਾਤੀ ਲਿਪੀ" - -var paScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0036, 0x0036, 0x0036, - 0x004e, 0x004e, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006f, 0x006f, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x009c, 0x009c, - 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00b1, 0x00c3, 0x00d8, 0x00ed, - 0x00f9, 0x0108, 0x0111, 0x0111, 0x0124, 0x0140, 0x0140, 0x014f, - 0x0167, 0x0167, 0x0167, 0x0195, 0x0195, 0x0195, 0x0195, 0x01a1, - // Entry 40 - 7F - 0x01a1, 0x01b0, 0x01b0, 0x01b0, 0x01c8, 0x01c8, 0x01d4, 0x01d4, - 0x01e0, 0x01f2, 0x01f2, 0x01f2, 0x01f2, 0x01fb, 0x01fb, 0x01fb, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, 0x020d, - 0x020d, 0x021f, 0x021f, 0x0237, 0x0237, 0x0237, 0x0237, 0x0237, - 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, 0x024c, - 0x024c, 0x024c, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, - 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, - // Entry 80 - BF - 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, 0x0258, - 0x0258, 0x0258, 0x0258, 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, - 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, 0x026d, - 0x0279, 0x0279, 0x0279, 0x0288, 0x0288, 0x0288, 0x0288, 0x0294, - 0x029d, 0x02af, 0x02af, 0x02af, 0x02af, 0x02af, 0x02af, 0x02af, - 0x02af, 0x02af, 0x02af, 0x02af, 0x02af, 0x02db, 0x02ea, 0x02fc, - 0x030b, 0x031a, 0x033c, -} // Size: 382 bytes - -const plScriptStr string = "" + // Size: 1489 bytes - "arabskiearmiormiańskieawestyjskiebalijskiebamunbatakbengalskiesymbole Bl" + - "issabopomofobrahmiBraille’abugińskiebuhidchakmazunifikowane symbole kana" + - "dyjskich autochtonówkaryjskieczamskieczirokeskicirthkoptyjskiecypryjskie" + - "cyrylicacyrylica staro-cerkiewno-słowiańskadewanagarideseretegipskie dem" + - "otyczneegipskie hieratycznehieroglify egipskieetiopskiegruzińskie chucur" + - "igruzińskiegłagolicagotyckiegreckiegudźarackiegurmukhihanbhangylhanhanun" + - "oouproszczone hantradycyjne hanhebrajskiehiraganapahawh hmongsylabariusz" + - "e japońskiestarowęgierskieindusstarowłoskiejamojawajskiejapońskiekayah l" + - "ikatakanacharostikhmerskiekannadakoreańskiekaithilannalaotańskiełaciński" + - " - frakturałaciński - odmiana gaelickałacińskielepchalimbulinearne Aline" + - "arne Blikijskielidyjskiemandejskiemanichejskiehieroglify Majówmeroickiem" + - "alajalammongolskieMoon’ameitei mayekbirmańskien’kooghamol chikiorchoński" + - "eorijaosmanyastaropermskiephags-painskrypcyjne pahlawipahlawi psałterzow" + - "ypahlawi książkowyfenickifonetyczny Pollard’apartyjski inskrypcyjnyrejan" + - "grongorongorunicznesamarytańskisaratisaurashtrapismo znakoweshawasyngale" + - "skiesundajskiesyloti nagrisyryjskisyriacki estrangelosyryjski (odmiana z" + - "achodnia)syryjski (odmiana wschodnia)tagbanwatai lenowy tai luetamilskie" + - "tai viettelugutengwartifinagh (berberski)tagalogthaanatajskietybetańskie" + - "ugaryckievaiVisible Speechstaroperskieklinowe sumero-akadyjskieyidziedzi" + - "czonenotacja matematycznaEmojisymbolejęzyk bez systemu pismawspólneniezn" + - "any skrypt" - -var plScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x000c, 0x0017, - 0x0022, 0x002b, 0x0030, 0x0030, 0x0035, 0x003f, 0x003f, 0x004d, - 0x0055, 0x005b, 0x0066, 0x0070, 0x0075, 0x007b, 0x00a9, 0x00b2, - 0x00ba, 0x00c4, 0x00c9, 0x00d3, 0x00dd, 0x00e5, 0x010a, 0x0114, - 0x011b, 0x011b, 0x012e, 0x0142, 0x0155, 0x0155, 0x015e, 0x0171, - 0x017c, 0x0186, 0x0186, 0x018e, 0x018e, 0x0195, 0x01a1, 0x01a9, - 0x01ad, 0x01b3, 0x01b6, 0x01bd, 0x01cc, 0x01da, 0x01da, 0x01e4, - 0x01ec, 0x01ec, 0x01f8, 0x020f, 0x021f, 0x0224, 0x0231, 0x0235, - // Entry 40 - 7F - 0x023e, 0x0248, 0x0248, 0x0250, 0x0258, 0x0260, 0x0269, 0x0269, - 0x0270, 0x027b, 0x027b, 0x0281, 0x0286, 0x0291, 0x02a6, 0x02c3, - 0x02ce, 0x02d4, 0x02d9, 0x02e3, 0x02ed, 0x02ed, 0x02ed, 0x02f6, - 0x02ff, 0x02ff, 0x0309, 0x0315, 0x0315, 0x0326, 0x0326, 0x0326, - 0x032f, 0x0338, 0x0338, 0x0342, 0x034a, 0x034a, 0x0356, 0x0356, - 0x0361, 0x0361, 0x0361, 0x0361, 0x0361, 0x0367, 0x0367, 0x036c, - 0x0374, 0x037f, 0x0384, 0x0384, 0x038b, 0x038b, 0x038b, 0x0398, - 0x03a0, 0x03b4, 0x03c8, 0x03db, 0x03e2, 0x03f8, 0x040e, 0x0414, - // Entry 80 - BF - 0x041e, 0x0426, 0x0433, 0x0439, 0x0439, 0x0443, 0x0450, 0x0455, - 0x0455, 0x0455, 0x0455, 0x0460, 0x0460, 0x0460, 0x046a, 0x0476, - 0x047e, 0x0491, 0x04ad, 0x04c9, 0x04d1, 0x04d1, 0x04d7, 0x04e3, - 0x04ec, 0x04ec, 0x04f4, 0x04fa, 0x0501, 0x0515, 0x051c, 0x0522, - 0x0529, 0x0535, 0x0535, 0x053e, 0x0541, 0x054f, 0x054f, 0x054f, - 0x055b, 0x0574, 0x0576, 0x0576, 0x0582, 0x0596, 0x059b, 0x05a2, - 0x05ba, 0x05c2, 0x05d1, -} // Size: 382 bytes - -const ptScriptStr string = "" + // Size: 1282 bytes - "árabearmiarmênioavésticobalinêsbamumbataquebengalisímbolos blissbopomofo" + - "brahmibraillebuginêsbuhidcakmescrita silábica unificada dos aborígenes c" + - "anadensescarianochamcherokeecirthcópticocipriotacirílicocirílico eslavo " + - "eclesiásticodevanágarideseretdemótico egípciohierático egípciohieróglifo" + - "s egípciosetiópicokhutsuri georgianogeorgianoglagolíticogóticogregoguzer" + - "ategurmuquihanbhangulhanhanunoohan simplificadohan tradicionalhebraicohi" + - "raganapahawh hmongsilabários japoneseshúngaro antigoindoitálico antigoja" + - "mojavanêsjaponêskayah likatakanakharoshthikhmerkannadacoreanokthilannala" + - "olatim frakturlatim gaélicolatimlepchalimbulinear Alinear Blisulíciolídi" + - "omandaicomaniqueanohieróglifos maiasmeroítico cursivomeroíticomalaialamo" + - "ngolmoonmeitei mayekbirmanêsn’koogâmicool chikiorkhonoriyaosmaniapérmico" + - " antigophags-paphliphlppahlavi antigofeníciofonético pollardprtirejangro" + - "ngorongorúnicosamaritanosaratisaurashtrasignwritingshavianocingalêssunda" + - "nêssyloti nagrisiríacosiríaco estrangelosiríaco ocidentalsiríaco orienta" + - "ltagbanwatai Lenovo tai luetâmiltavttélugotengwartifinaghtagalothaanatai" + - "landêstibetanougaríticovaivisible speechpersa antigosumério-acadiano cun" + - "eiformeyiherdadonotação matemáticaEmojizsymágrafocomumescrita desconheci" + - "da" - -var ptScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0012, - 0x001b, 0x0023, 0x0028, 0x0028, 0x002f, 0x0036, 0x0036, 0x0045, - 0x004d, 0x0053, 0x005a, 0x0062, 0x0067, 0x006b, 0x00a1, 0x00a8, - 0x00ac, 0x00b4, 0x00b9, 0x00c1, 0x00c9, 0x00d2, 0x00f0, 0x00fb, - 0x0102, 0x0102, 0x0114, 0x0127, 0x013d, 0x013d, 0x0146, 0x0158, - 0x0161, 0x016d, 0x016d, 0x0174, 0x0174, 0x0179, 0x0181, 0x0189, - 0x018d, 0x0193, 0x0196, 0x019d, 0x01ad, 0x01bc, 0x01bc, 0x01c4, - 0x01cc, 0x01cc, 0x01d8, 0x01ed, 0x01fc, 0x0200, 0x020f, 0x0213, - // Entry 40 - 7F - 0x021b, 0x0223, 0x0223, 0x022b, 0x0233, 0x023d, 0x0242, 0x0242, - 0x0249, 0x0250, 0x0250, 0x0254, 0x0259, 0x025c, 0x0269, 0x0277, - 0x027c, 0x0282, 0x0287, 0x028f, 0x0297, 0x029b, 0x029b, 0x02a1, - 0x02a7, 0x02a7, 0x02af, 0x02b9, 0x02b9, 0x02cb, 0x02cb, 0x02dd, - 0x02e7, 0x02ef, 0x02ef, 0x02f5, 0x02f9, 0x02f9, 0x0305, 0x0305, - 0x030e, 0x030e, 0x030e, 0x030e, 0x030e, 0x0314, 0x0314, 0x031c, - 0x0324, 0x032a, 0x032f, 0x032f, 0x0336, 0x0336, 0x0336, 0x0345, - 0x034d, 0x0351, 0x0355, 0x0363, 0x036b, 0x037c, 0x0380, 0x0386, - // Entry 80 - BF - 0x0390, 0x0397, 0x03a1, 0x03a7, 0x03a7, 0x03b1, 0x03bc, 0x03c4, - 0x03c4, 0x03c4, 0x03c4, 0x03cd, 0x03cd, 0x03cd, 0x03d6, 0x03e2, - 0x03ea, 0x03fd, 0x040f, 0x0420, 0x0428, 0x0428, 0x042e, 0x043a, - 0x0440, 0x0440, 0x0444, 0x044b, 0x0452, 0x045a, 0x0460, 0x0466, - 0x0470, 0x0478, 0x0478, 0x0482, 0x0485, 0x0493, 0x0493, 0x0493, - 0x049f, 0x04bb, 0x04bd, 0x04bd, 0x04c4, 0x04d9, 0x04de, 0x04e2, - 0x04e9, 0x04ee, 0x0502, -} // Size: 382 bytes - -const ptPTScriptStr string = "" + // Size: 120 bytes - "arménioegípcio demóticoegípcio hieráticohan com bopomofoindusodiasiloti " + - "nagritai leteluguemojisímbolosnão escrito" - -var ptPTScriptIdx = []uint16{ // 177 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x001a, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, - 0x003d, 0x003d, 0x003d, 0x003d, 0x003d, 0x0042, 0x0042, 0x0042, - // Entry 40 - 7F - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - // Entry 80 - BF - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0058, 0x0058, - 0x0058, 0x0058, 0x0058, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x0063, 0x006c, - 0x0078, -} // Size: 378 bytes - -const roScriptStr string = "" + // Size: 856 bytes - "arabăarmeanăbalinezăbengalezăbopomofobraillesilabică aborigenă canadiană" + - " unificatăcoptăcipriotăchirilicăchirilică slavonă bisericească vechedeva" + - "nagarimormonădemotică egipteanăhieratică egipteanăhieroglife egipteneeti" + - "opianăgeorgiană bisericeascăgeorgianăglagoliticăgoticăgreacăgujaratigurm" + - "ukhihanbhangulhanhan simplificatăhan tradiționalăebraicăhiraganasilabică" + - " japonezămaghiară vecheindusitalică vechejamojavanezăjaponezăkatakanakhm" + - "erăkannadacoreeanălaoțianălatină Frakturlatină gaelicălatinălineară Alin" + - "eară Blidianăhieroglife mayamalayalammongolăbirmanăoriyafenicianărunicăs" + - "ingalezăsiriacăsiriacă occidentalăsiriacă orientalătamilăteluguberberăth" + - "aanathailandezătibetanăpersană vechecuneiformă sumero-akkadianămoștenită" + - "notație matematicăemojisimbolurinescrisăcomunăscriere necunoscută" - -var roScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000e, - 0x000e, 0x0017, 0x0017, 0x0017, 0x0017, 0x0021, 0x0021, 0x0021, - 0x0029, 0x0029, 0x0030, 0x0030, 0x0030, 0x0030, 0x005a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x0060, 0x0069, 0x0073, 0x009a, 0x00a4, - 0x00ac, 0x00ac, 0x00c0, 0x00d5, 0x00e8, 0x00e8, 0x00f2, 0x010a, - 0x0114, 0x0120, 0x0120, 0x0127, 0x0127, 0x012e, 0x0136, 0x013e, - 0x0142, 0x0148, 0x014b, 0x014b, 0x015c, 0x016e, 0x016e, 0x0176, - 0x017e, 0x017e, 0x017e, 0x0191, 0x01a0, 0x01a5, 0x01b3, 0x01b7, - // Entry 40 - 7F - 0x01c0, 0x01c9, 0x01c9, 0x01c9, 0x01d1, 0x01d1, 0x01d8, 0x01d8, - 0x01df, 0x01e8, 0x01e8, 0x01e8, 0x01e8, 0x01f2, 0x0201, 0x0211, - 0x0218, 0x0218, 0x0218, 0x0222, 0x022c, 0x022c, 0x022c, 0x022c, - 0x0234, 0x0234, 0x0234, 0x0234, 0x0234, 0x0243, 0x0243, 0x0243, - 0x0243, 0x024c, 0x024c, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, - 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, 0x025c, - 0x025c, 0x025c, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, 0x0261, - 0x0261, 0x0261, 0x0261, 0x0261, 0x026b, 0x026b, 0x026b, 0x026b, - // Entry 80 - BF - 0x026b, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, 0x0272, - 0x0272, 0x0272, 0x0272, 0x027c, 0x027c, 0x027c, 0x027c, 0x027c, - 0x0284, 0x0284, 0x0299, 0x02ac, 0x02ac, 0x02ac, 0x02ac, 0x02ac, - 0x02b3, 0x02b3, 0x02b3, 0x02b9, 0x02b9, 0x02c1, 0x02c1, 0x02c7, - 0x02d3, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02dc, - 0x02ea, 0x0307, 0x0307, 0x0307, 0x0312, 0x0326, 0x032b, 0x0334, - 0x033d, 0x0344, 0x0358, -} // Size: 382 bytes - -const ruScriptStr string = "" + // Size: 3421 bytes - "афакаарабицаарамейскаяармянскаяавестийскаябалийскаябамумбасса (вах)батак" + - "скаябенгальскаяблиссимволикабопомофобрахмиБрайлябугинизийскаябухидчакми" + - "йскаяканадское слоговое письмокарийскаячамскаячерокикирткоптскаякипрска" + - "якириллицастарославянскаядеванагаридезеретдуплоянская скорописьегипетск" + - "ая демотическаяегипетская иератическаяегипетская иероглифическаяэфиопск" + - "аягрузинская хуцуригрузинскаяглаголицаготскаягрантхагреческаягуджаратиг" + - "урмукхиханьбхангылькитайскаяханунуупрощенная китайскаятрадиционная кита" + - "йскаяеврейскаяхираганалувийские иероглифыпахау хмонгкатакана или хирага" + - "настаровенгерскаяхараппская (письменность долины Инда)староитальянскаяд" + - "жамояванскаяяпонскаячжурчжэньскаякайакатаканакхароштхикхмерскаяходжикик" + - "аннадакорейскаякпеллекайтхиланналаосскаялатинская фрактурагэльская лати" + - "нскаялатиницалепхалимбулинейное письмо Алинейное письмо Блисуломалициан" + - "лидийскаямандейскаяманихейскаямайямендемероитская курсивнаямероитскаяма" + - "лаяламмонгольскаяазбука мунамроманипуримьянманскаясеверноаравийскоенаба" + - "тейскаянаси гебанконюй-шуогамическаяол чикиорхоно-енисейскаяорияосманск" + - "аяпальмирыдревнепермскаяпагспапехлевийскаяпахлави псалтирнаяпахлави кни" + - "жнаяфиникийскаяполлардовская фонетикапарфянскаяреджангскаяронго-ронгору" + - "ническаясамаритянскаясаратистароюжноарабскаясаураштраязык знаковалфавит" + - " Шоушарадакхудавадисингальскаясора-сонпенгсунданскаясилоти нагрисирийска" + - "ясирийская эстрангелозападносирийскаявосточно-сирийскаятагбанватакритай" + - "ский леновый тайский летамильскаятангутское менятай-вьеттелугутенгварск" + - "аядревнеливийскаятагалогтанатайскаятибетскаятирхутаугаритскаявайскаявид" + - "имая речьваранг-кшитиволеаистароперсидскаяшумеро-аккадская клинописьиун" + - "аследованнаяматематические обозначенияэмодзисимволынет письменностиобще" + - "принятаянеизвестная письменность" - -var ruScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x0018, 0x002c, 0x003e, - 0x0054, 0x0066, 0x0070, 0x0083, 0x0095, 0x00ab, 0x00ab, 0x00c5, - 0x00d5, 0x00e1, 0x00ed, 0x0107, 0x0111, 0x0125, 0x0155, 0x0167, - 0x0175, 0x0181, 0x0189, 0x0199, 0x01a9, 0x01bb, 0x01d9, 0x01ed, - 0x01fb, 0x0224, 0x0251, 0x027e, 0x02b1, 0x02b1, 0x02c3, 0x02e4, - 0x02f8, 0x030a, 0x030a, 0x0318, 0x0326, 0x0338, 0x034a, 0x035a, - 0x0364, 0x0372, 0x0384, 0x0390, 0x03b7, 0x03e2, 0x03e2, 0x03f4, - 0x0404, 0x0429, 0x043e, 0x0466, 0x0484, 0x04c9, 0x04e9, 0x04f3, - // Entry 40 - 7F - 0x0503, 0x0513, 0x052d, 0x0535, 0x0545, 0x0557, 0x0569, 0x0577, - 0x0585, 0x0597, 0x05a3, 0x05af, 0x05b9, 0x05c9, 0x05ec, 0x060f, - 0x061f, 0x0629, 0x0633, 0x0653, 0x0673, 0x067b, 0x0683, 0x068f, - 0x06a1, 0x06a1, 0x06b5, 0x06cb, 0x06cb, 0x06d3, 0x06dd, 0x0704, - 0x0718, 0x0728, 0x0728, 0x073e, 0x0753, 0x0759, 0x0769, 0x0769, - 0x077f, 0x07a1, 0x07b7, 0x07b7, 0x07c8, 0x07ce, 0x07d9, 0x07ef, - 0x07fc, 0x081d, 0x0825, 0x0825, 0x0837, 0x0847, 0x0847, 0x0863, - 0x086f, 0x0887, 0x08aa, 0x08c7, 0x08dd, 0x0908, 0x091c, 0x0932, - // Entry 80 - BF - 0x0947, 0x095b, 0x0975, 0x0981, 0x09a3, 0x09b5, 0x09ca, 0x09df, - 0x09eb, 0x09eb, 0x09fd, 0x0a13, 0x0a2a, 0x0a2a, 0x0a3e, 0x0a55, - 0x0a67, 0x0a8e, 0x0aae, 0x0ad1, 0x0ae1, 0x0aeb, 0x0afe, 0x0b1c, - 0x0b30, 0x0b4d, 0x0b5c, 0x0b68, 0x0b7e, 0x0b9c, 0x0baa, 0x0bb2, - 0x0bc0, 0x0bd2, 0x0be0, 0x0bf4, 0x0c02, 0x0c19, 0x0c30, 0x0c3c, - 0x0c5a, 0x0c8c, 0x0c8e, 0x0c8e, 0x0caa, 0x0cdd, 0x0ce9, 0x0cf7, - 0x0d16, 0x0d2e, 0x0d5d, -} // Size: 382 bytes - -const siScriptStr string = "" + // Size: 940 bytes - "අරාබිආර්මේනියානුබෙංගාලිබොපොමොෆෝබ්\u200dරේල්සිරිලික්දේවනාගරීඉතියෝපියානුජෝ" + - "ර්ජියානුග්\u200dරීකගුජරාටිගුර්මුඛිහැන්ඩ්බ්හැන්ගුල්හන්සුළුකළ හෑන්සම්ප්" + - "\u200dරදායික හෑන්හීබෲහිරඟනාජෑපනීස් සිලබරීස්ජාමොජපන්කතකනාකමර්කණ්ණඩකොරියාන" + - "ුලාඕලතින්මලයාලම්මොන්ගෝලියානුමියන්මාරඔරියාසිංහලදෙමළතෙළිඟුතානතායිටි" + - "\u200dබෙට්ගනිතමය සංකේතඉමොජිසංකේතඅලිඛිතපොදු.නොදත් අක්ෂර මාලාව" - -var siScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0045, 0x0045, 0x0045, - 0x005d, 0x005d, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x008a, 0x008a, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00c3, 0x00c3, - 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00f3, 0x0108, 0x0120, - 0x0138, 0x0150, 0x0159, 0x0159, 0x0178, 0x01a9, 0x01a9, 0x01b5, - 0x01c7, 0x01c7, 0x01c7, 0x01f5, 0x01f5, 0x01f5, 0x01f5, 0x0201, - // Entry 40 - 7F - 0x0201, 0x020d, 0x020d, 0x020d, 0x021c, 0x021c, 0x0228, 0x0228, - 0x0237, 0x024f, 0x024f, 0x024f, 0x024f, 0x0258, 0x0258, 0x0258, - 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, - 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, 0x0267, - 0x0267, 0x027c, 0x027c, 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a0, - 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, - 0x02b8, 0x02b8, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, - 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, - // Entry 80 - BF - 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, 0x02c7, - 0x02c7, 0x02c7, 0x02c7, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, - 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, 0x02d6, - 0x02e2, 0x02e2, 0x02e2, 0x02f4, 0x02f4, 0x02f4, 0x02f4, 0x02fd, - 0x0309, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, - 0x031e, 0x031e, 0x031e, 0x031e, 0x031e, 0x0340, 0x034f, 0x035e, - 0x0370, 0x037d, 0x03ac, -} // Size: 382 bytes - -const skScriptStr string = "" + // Size: 540 bytes - "arabskéarménskebalijskýbengálskebopomofobraillovocyrilikadévanágaríegypt" + - "ské hieroglyfyetiópskegruzínskehlaholikagotickýgréckegudžarátígurmukhičí" + - "nske a bopomofohangulčínskečínske zjednodušenéčínske tradičnéhebrejskéhi" + - "raganakanajamojaponskékatakanakhmérskekannadskékórejskélaoskélatinkaline" + - "árna Alineárna Bmayské hieroglyfymalajálamskemongolskébarmskéuríjskeosm" + - "anskýRunové písmosinhálsketamilskételugskétánathajskétibetskématematický" + - " zápisemodžisymbolybez zápisuvšeobecnéneznáme písmo" - -var skScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0011, - 0x0011, 0x001a, 0x001a, 0x001a, 0x001a, 0x0024, 0x0024, 0x0024, - 0x002c, 0x002c, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003d, 0x003d, 0x004a, - 0x004a, 0x004a, 0x004a, 0x004a, 0x005e, 0x005e, 0x0067, 0x0067, - 0x0071, 0x007a, 0x007a, 0x0082, 0x0082, 0x0089, 0x0095, 0x009d, - 0x00b0, 0x00b6, 0x00be, 0x00be, 0x00d5, 0x00e8, 0x00e8, 0x00f2, - 0x00fa, 0x00fa, 0x00fa, 0x00fe, 0x00fe, 0x00fe, 0x00fe, 0x0102, - // Entry 40 - 7F - 0x0102, 0x010b, 0x010b, 0x010b, 0x0113, 0x0113, 0x011c, 0x011c, - 0x0126, 0x0130, 0x0130, 0x0130, 0x0130, 0x0137, 0x0137, 0x0137, - 0x013e, 0x013e, 0x013e, 0x0149, 0x0154, 0x0154, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0154, 0x0166, 0x0166, 0x0166, - 0x0166, 0x0173, 0x0173, 0x017d, 0x017d, 0x017d, 0x017d, 0x017d, - 0x0185, 0x0185, 0x0185, 0x0185, 0x0185, 0x0185, 0x0185, 0x0185, - 0x0185, 0x0185, 0x018d, 0x018d, 0x0196, 0x0196, 0x0196, 0x0196, - 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, 0x0196, - // Entry 80 - BF - 0x0196, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01a4, 0x01a4, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, - 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, 0x01ae, - 0x01b7, 0x01b7, 0x01b7, 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c5, - 0x01cd, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, - 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01d6, 0x01e9, 0x01f0, 0x01f7, - 0x0202, 0x020d, 0x021c, -} // Size: 382 bytes - -const slScriptStr string = "" + // Size: 1515 bytes - "arabskiimperialno-aramejskiarmenskiavestanskibalijskibataškibengalskizna" + - "kovna pisava Blissbopomofobramanskibraillova pisavabuginskibuhidskipoeno" + - "tena zlogovna pisava kanadskih staroselcevChamčerokeškikirtkoptskiciprsk" + - "icirilicastarocerkvenoslovanska cirilicadevanagarščicafonetska pisava de" + - "seretdemotska egipčanska pisavahieratska egipčanska pisavaegipčanska sli" + - "kovna pisavaetiopskicerkvenogruzijskigruzijskiglagoliškigotskigrškigudža" + - "ratskigurmukiHan + Bopomofohangulkanjihanunskipoenostavljena pisava hant" + - "radicionalna pisava hanhebrejskihiraganapahavhmonska zlogovna pisavajapo" + - "nska zlogovnicastaroogrskiinduškistaroitalskiJamojavanskijaponskikarensk" + - "ikatakanagandarskikmerskikanadskikorejskikajatskilaoškifrakturagelski la" + - "tiničnilatinicalepškilimbuškilinearna pisava Alinearna pisava Blicijskil" + - "idijskimandanskimanihejskimajevska slikovna pisavameroitskimalajalamskim" + - "ongolskaMoonova pisava za slepemanipurskimjanmarskiogamskisantalskiorkon" + - "skiorijskiosmanskistaropermijskipagpajskivrezani napisi pahlavipsalmski " + - "pahlaviknjižno palavanskifeničanskiPollardova fonetska pisavarongorongor" + - "unskisamaritanskisaratskiznakovna pisavašojevskisinhalskisundanskisilets" + - "ko-nagarijskisirijskisirska abeceda estrangelozahodnosirijskivzhodnosiri" + - "jskitagbanskitamilskitajsko-vietnamskiteluškitengvarskitifinajskitagaloš" + - "kitanajskitajskitibetanskiugaritskizlogovna pisava vaividni govorstarope" + - "rzijskisumersko-akadski klinopispodedovanmatematična znamenjačustvenčeks" + - "imbolinenapisanosplošnoneznan ali neveljaven zapis" - -var slScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x001b, 0x0023, - 0x002d, 0x0035, 0x0035, 0x0035, 0x003d, 0x0046, 0x0046, 0x005b, - 0x0063, 0x006c, 0x007c, 0x0084, 0x008c, 0x008c, 0x00bb, 0x00bb, - 0x00bf, 0x00ca, 0x00ce, 0x00d5, 0x00dc, 0x00e4, 0x0103, 0x0113, - 0x012a, 0x012a, 0x0145, 0x0161, 0x017c, 0x017c, 0x0184, 0x0195, - 0x019e, 0x01a9, 0x01a9, 0x01af, 0x01af, 0x01b5, 0x01c1, 0x01c8, - 0x01d6, 0x01dc, 0x01e1, 0x01e9, 0x0202, 0x021a, 0x021a, 0x0223, - 0x022b, 0x022b, 0x0247, 0x025a, 0x0265, 0x026d, 0x0279, 0x027d, - // Entry 40 - 7F - 0x0285, 0x028d, 0x028d, 0x0295, 0x029d, 0x02a6, 0x02ad, 0x02ad, - 0x02b5, 0x02bd, 0x02bd, 0x02c5, 0x02c5, 0x02cc, 0x02d4, 0x02e5, - 0x02ed, 0x02f4, 0x02fd, 0x030e, 0x031f, 0x031f, 0x031f, 0x0327, - 0x032f, 0x032f, 0x0338, 0x0342, 0x0342, 0x035a, 0x035a, 0x035a, - 0x0363, 0x036f, 0x036f, 0x0378, 0x038f, 0x038f, 0x0399, 0x0399, - 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03a3, 0x03aa, - 0x03b3, 0x03bb, 0x03c2, 0x03c2, 0x03ca, 0x03ca, 0x03ca, 0x03d8, - 0x03e1, 0x03f7, 0x0407, 0x041a, 0x0425, 0x043f, 0x043f, 0x043f, - // Entry 80 - BF - 0x0449, 0x044f, 0x045b, 0x0463, 0x0463, 0x0463, 0x0472, 0x047b, - 0x047b, 0x047b, 0x047b, 0x0484, 0x0484, 0x0484, 0x048d, 0x04a0, - 0x04a8, 0x04c1, 0x04d0, 0x04df, 0x04e8, 0x04e8, 0x04e8, 0x04e8, - 0x04f0, 0x04f0, 0x0501, 0x0509, 0x0513, 0x051d, 0x0527, 0x052f, - 0x0535, 0x053f, 0x053f, 0x0548, 0x055b, 0x0566, 0x0566, 0x0566, - 0x0574, 0x058d, 0x058d, 0x058d, 0x0596, 0x05ab, 0x05b7, 0x05be, - 0x05c8, 0x05d0, 0x05eb, -} // Size: 382 bytes - -const sqScriptStr string = "" + // Size: 355 bytes - "arabikarmenbengalbopomofbrailishtcirilikdevanagaretiopikgjeorgjiangrekgu" + - "xharatgurmukhanbikhangulhanhan i thjeshtuarhan tradicionalhebraikhiragan" + - "alfabet rrokjesor japonezjamosishtjaponezkatakankmerkanadkoreanlaosishtl" + - "atinmalajalammongolbirmanorijasinhaltamiltelugtanishttajlandeztibetishts" + - "imbole matematikoreemojime simbolei pashkruari zakonshëmi panjohur" - -var sqScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x000b, - 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x0011, 0x0011, 0x0011, - 0x0018, 0x0018, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0028, 0x0028, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0038, 0x0038, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0046, 0x004e, 0x0054, - 0x005a, 0x0060, 0x0063, 0x0063, 0x0073, 0x0082, 0x0082, 0x0089, - 0x0090, 0x0090, 0x0090, 0x00a9, 0x00a9, 0x00a9, 0x00a9, 0x00b2, - // Entry 40 - 7F - 0x00b2, 0x00b9, 0x00b9, 0x00b9, 0x00c0, 0x00c0, 0x00c4, 0x00c4, - 0x00c9, 0x00cf, 0x00cf, 0x00cf, 0x00cf, 0x00d7, 0x00d7, 0x00d7, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, 0x00dc, - 0x00dc, 0x00e5, 0x00e5, 0x00eb, 0x00eb, 0x00eb, 0x00eb, 0x00eb, - 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, 0x00f1, - 0x00f1, 0x00f1, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, - 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, - // Entry 80 - BF - 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, 0x00f6, - 0x00f6, 0x00f6, 0x00f6, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x0101, 0x0101, 0x0101, 0x0106, 0x0106, 0x0106, 0x0106, 0x010d, - 0x0116, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, - 0x011f, 0x011f, 0x011f, 0x011f, 0x011f, 0x0133, 0x0138, 0x0142, - 0x014d, 0x0159, 0x0163, -} // Size: 382 bytes - -const srScriptStr string = "" + // Size: 3732 bytes - "арапско писмоимперијско арамејско писмојерменско писмоавестанско писмоба" + - "лијско писмобатак писмобенгалско писмоблисимболично писмобопомофо писмо" + - "браманско писмоБрајево писмобугинско писмобухидско писмочакманско писмо" + - "уједињени канадски абориџински силабицикаријско писмочамско писмоЧероки" + - "цирт писмокоптичко писмокипарско писмоћирилицаСтарословенска црквена ћи" + - "рилицадеванагариДезеретегипатско народно писмоегипатско хијератско писм" + - "оегипатски хијероглифиетиопско писмогрузијско кхутсури писмогрузијско п" + - "исмоглагољицаГотикагрчко писмогуџаратско писмогурмуки писмоханбхангулха" + - "нханунопоједностављено хан писмотрадиционално хан писмохебрејско писмох" + - "ираганапахав хмонг писмојапанска слоговна писмастаромађарско писмоиндуш" + - "ко писмостари италикџамојаванско писмојапанско писмокајах-ли писмокатак" + - "анакарошти писмокмерско писмоканада писмокорејско писмокаитиланна писмо" + - "лаошко писмолатиница (фрактур варијанта)галска латиницалатиницалепча пи" + - "смолимбу писмолинеарно А писмолинеарно Б писмолисијско писмолидијско пи" + - "смомандеанско писмоманихејско писмомајански хијероглифимероитик писмома" + - "лајаламско писмомонголско писмомесечево писмомеитеи мајек писмомијанмар" + - "ско писмон’ко писмоогамско писмоол чики писмоорконско писмооријанско пи" + - "смоосмањанско писмостаро пермикско писмопагс-па писмописани пахлавипсал" + - "тер пахлавипахлави писмоФеничанско писмопоралд фонетско писмописани пар" + - "тианрејанг писморонгоронго писморунско писмосамаританско писмосарати пи" + - "смосаураштра писмознаковно писмошавијанско писмосинхалско писмосунданск" + - "о писмосилоти нагри писмосиријско писмосиријско естрангело писмозападно" + - "сиријско писмописмо источне Сиријетагбанва писмотаи ле писмонови таи лу" + - "етамилско писмотаи виет писмотелугу писмотенгвар писмотифинаг писмоТага" + - "логтана писмотајландско писмотибетанско писмоугаритско писмоваи писмови" + - "дљиви говорстароперсијско писмосумерско-акадско кунеиформ писмоји писмо" + - "наследно писмоматематичка нотацијаемоџисимболинеписани језикзаједничко " + - "писмонепознато писмо" - -var srScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019, 0x004b, 0x0068, - 0x0087, 0x00a2, 0x00a2, 0x00a2, 0x00b7, 0x00d4, 0x00d4, 0x00f9, - 0x0114, 0x0131, 0x014a, 0x0165, 0x0180, 0x019d, 0x01e8, 0x0203, - 0x021a, 0x0226, 0x0239, 0x0254, 0x026f, 0x027f, 0x02bb, 0x02cf, - 0x02dd, 0x02dd, 0x0309, 0x033b, 0x0364, 0x0364, 0x037f, 0x03ad, - 0x03ca, 0x03dc, 0x03dc, 0x03e8, 0x03e8, 0x03fd, 0x041c, 0x0435, - 0x043d, 0x0449, 0x044f, 0x045b, 0x048b, 0x04b7, 0x04b7, 0x04d4, - 0x04e4, 0x04e4, 0x0504, 0x0530, 0x0555, 0x056e, 0x0585, 0x058d, - // Entry 40 - 7F - 0x05a8, 0x05c3, 0x05c3, 0x05dd, 0x05ed, 0x0606, 0x061f, 0x061f, - 0x0636, 0x0651, 0x0651, 0x065b, 0x0670, 0x0687, 0x06bb, 0x06d8, - 0x06e8, 0x06fd, 0x0712, 0x0730, 0x074e, 0x074e, 0x074e, 0x0769, - 0x0784, 0x0784, 0x07a3, 0x07c2, 0x07c2, 0x07e9, 0x07e9, 0x07e9, - 0x0804, 0x0827, 0x0827, 0x0844, 0x085f, 0x085f, 0x0881, 0x0881, - 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08a2, 0x08b6, 0x08b6, 0x08cf, - 0x08e7, 0x0902, 0x091f, 0x091f, 0x093e, 0x093e, 0x093e, 0x0966, - 0x097e, 0x0999, 0x09b6, 0x09cf, 0x09ee, 0x0a16, 0x0a31, 0x0a48, - // Entry 80 - BF - 0x0a67, 0x0a7e, 0x0aa1, 0x0ab8, 0x0ab8, 0x0ad5, 0x0af0, 0x0b0f, - 0x0b0f, 0x0b0f, 0x0b0f, 0x0b2c, 0x0b2c, 0x0b2c, 0x0b49, 0x0b6b, - 0x0b86, 0x0bb6, 0x0bdf, 0x0c05, 0x0c20, 0x0c20, 0x0c36, 0x0c4c, - 0x0c67, 0x0c67, 0x0c81, 0x0c98, 0x0cb1, 0x0cca, 0x0cd8, 0x0ceb, - 0x0d0a, 0x0d29, 0x0d29, 0x0d46, 0x0d57, 0x0d70, 0x0d70, 0x0d70, - 0x0d97, 0x0dd4, 0x0de3, 0x0de3, 0x0dfe, 0x0e25, 0x0e2f, 0x0e3d, - 0x0e58, 0x0e77, 0x0e94, -} // Size: 382 bytes - -const srLatnScriptStr string = "" + // Size: 1974 bytes - "arapsko pismoimperijsko aramejsko pismojermensko pismoavestansko pismoba" + - "lijsko pismobatak pismobengalsko pismoblisimbolično pismobopomofo pismob" + - "ramansko pismoBrajevo pismobuginsko pismobuhidsko pismočakmansko pismouj" + - "edinjeni kanadski aboridžinski silabicikarijsko pismočamsko pismoČerokic" + - "irt pismokoptičko pismokiparsko pismoćirilicaStaroslovenska crkvena ćiri" + - "licadevanagariDezeretegipatsko narodno pismoegipatsko hijeratsko pismoeg" + - "ipatski hijeroglifietiopsko pismogruzijsko khutsuri pismogruzijsko pismo" + - "glagoljicaGotikagrčko pismogudžaratsko pismogurmuki pismohanbhangulhanha" + - "nunopojednostavljeno han pismotradicionalno han pismohebrejsko pismohira" + - "ganapahav hmong pismojapanska slogovna pismastaromađarsko pismoinduško p" + - "ismostari italikdžamojavansko pismojapansko pismokajah-li pismokatakanak" + - "arošti pismokmersko pismokanada pismokorejsko pismokaitilanna pismolaošk" + - "o pismolatinica (fraktur varijanta)galska latinicalatinicalepča pismolim" + - "bu pismolinearno A pismolinearno B pismolisijsko pismolidijsko pismomand" + - "eansko pismomanihejsko pismomajanski hijeroglifimeroitik pismomalajalams" + - "ko pismomongolsko pismomesečevo pismomeitei majek pismomijanmarsko pismo" + - "n’ko pismoogamsko pismool čiki pismoorkonsko pismoorijansko pismoosmanja" + - "nsko pismostaro permiksko pismopags-pa pismopisani pahlavipsalter pahlav" + - "ipahlavi pismoFeničansko pismoporald fonetsko pismopisani partianrejang " + - "pismorongorongo pismorunsko pismosamaritansko pismosarati pismosauraštra" + - " pismoznakovno pismošavijansko pismosinhalsko pismosundansko pismosiloti" + - " nagri pismosirijsko pismosirijsko estrangelo pismozapadnosirijsko pismo" + - "pismo istočne Sirijetagbanva pismotai le pismonovi tai luetamilsko pismo" + - "tai viet pismotelugu pismotengvar pismotifinag pismoTagalogtana pismotaj" + - "landsko pismotibetansko pismougaritsko pismovai pismovidljivi govorstaro" + - "persijsko pismosumersko-akadsko kuneiform pismoji pismonasledno pismomat" + - "ematička notacijaemodžisimbolinepisani jezikzajedničko pismonepoznato pi" + - "smo" - -var srLatnScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x0027, 0x0036, - 0x0046, 0x0054, 0x0054, 0x0054, 0x005f, 0x006e, 0x006e, 0x0082, - 0x0090, 0x009f, 0x00ac, 0x00ba, 0x00c8, 0x00d8, 0x0102, 0x0110, - 0x011d, 0x0124, 0x012e, 0x013d, 0x014b, 0x0154, 0x0174, 0x017e, - 0x0185, 0x0185, 0x019c, 0x01b6, 0x01cb, 0x01cb, 0x01d9, 0x01f1, - 0x0200, 0x020a, 0x020a, 0x0210, 0x0210, 0x021c, 0x022e, 0x023b, - 0x023f, 0x0245, 0x0248, 0x024e, 0x0268, 0x027f, 0x027f, 0x028e, - 0x0296, 0x0296, 0x02a7, 0x02be, 0x02d2, 0x02e0, 0x02ec, 0x02f2, - // Entry 40 - 7F - 0x0300, 0x030e, 0x030e, 0x031c, 0x0324, 0x0332, 0x033f, 0x033f, - 0x034b, 0x0359, 0x0359, 0x035e, 0x0369, 0x0376, 0x0392, 0x03a1, - 0x03a9, 0x03b5, 0x03c0, 0x03d0, 0x03e0, 0x03e0, 0x03e0, 0x03ee, - 0x03fc, 0x03fc, 0x040c, 0x041c, 0x041c, 0x0430, 0x0430, 0x0430, - 0x043e, 0x0450, 0x0450, 0x045f, 0x046e, 0x046e, 0x0480, 0x0480, - 0x0491, 0x0491, 0x0491, 0x0491, 0x0491, 0x049d, 0x049d, 0x04aa, - 0x04b8, 0x04c6, 0x04d5, 0x04d5, 0x04e6, 0x04e6, 0x04e6, 0x04fb, - 0x0508, 0x0516, 0x0525, 0x0532, 0x0543, 0x0558, 0x0566, 0x0572, - // Entry 80 - BF - 0x0582, 0x058e, 0x05a0, 0x05ac, 0x05ac, 0x05bc, 0x05ca, 0x05db, - 0x05db, 0x05db, 0x05db, 0x05ea, 0x05ea, 0x05ea, 0x05f9, 0x060b, - 0x0619, 0x0632, 0x0647, 0x065c, 0x066a, 0x066a, 0x0676, 0x0682, - 0x0690, 0x0690, 0x069e, 0x06aa, 0x06b7, 0x06c4, 0x06cb, 0x06d5, - 0x06e5, 0x06f5, 0x06f5, 0x0704, 0x070d, 0x071b, 0x071b, 0x071b, - 0x072f, 0x074f, 0x0757, 0x0757, 0x0765, 0x077a, 0x0781, 0x0788, - 0x0796, 0x07a7, 0x07b6, -} // Size: 382 bytes - -const svScriptStr string = "" + // Size: 1784 bytes - "adlamiskaafakiskakaukasiska albanskaahomarabiskaimperisk arameiskaarmeni" + - "skaavestiskabalinesiskabamunskabassaiska vahbatakbengaliskabhaiksukiskab" + - "lissymbolerbopomofobramipunktskriftbuginesiskabuhidchakmakanadensiska st" + - "avelseteckenkariskachamcherokeecirtkoptiskacypriotiskakyrilliskafornkyrk" + - "oslavisk kyrilliskadevanagarideseretDuployéstenografiskademotiskahierati" + - "skaegyptiska hieroglyferelbasiskaetiopiskakutsurigeorgiskaglagolitiskama" + - "saram-gondigotiskagammaltamilskagrekiskagujaratigurmukhiskahan med bopom" + - "ofohangulhanhanunó’oförenklade han-teckentraditionella han-teckenhatranh" + - "ebreiskahiraganahittitiska hieroglyferpahaw mongkatakana/hiraganafornung" + - "erskaindusfornitaliskajamojavanskajapanskajurchenskakaya likatakanakharo" + - "shtikhmeriskakhojkiskakanaresiskakoreanskakpellékaithiskalannalaotiskafr" + - "akturlatingaeliskt latinlatinskaronglimbulinjär Alinjär BFraserlomalykis" + - "kalydiskamahajaniskamandaéiskamanikeanskamarchenskamayahieroglyfermendek" + - "ursiv-meroitiskameroitiskamalayalammodiskamongoliskamoonmrumeitei-mayekm" + - "ultaniskaburmesiskafornnordarabiskanabateiskanewariskanaxi geban-kånüshu" + - "oghamol-chikiorkonoriyaosageosmanjapalmyreniskaPau Cin Hau-skriftfornper" + - "miskaphags-patidig pahlavipsaltaren-pahlavibokpahlavifeniciskapollardtec" + - "kentidig parthianskarejangrongo-rongorunorsamaritiskasaratifornsydarabis" + - "kasaurashtrateckningsskriftshawiskasharadasiddhamskasindhiskasingalesisk" + - "asora sompengsoyombosundanesiskasyloti nagrisyriskaestrangelosyriskaväst" + - "syriskaöstsyriskatagbanwatakritiskatai letai luetamilskatangutiskatai vi" + - "ettelugutengwartifinaghiskatagalogtaanathailändskatibetanskatirhutaugari" + - "tiskavajsynligt talvarang kshitiwoleaifornpersiskasumero-akkadisk kilskr" + - "iftyizanabazar kvadratisk skriftärvdamatematisk notationemojisymbolerosk" + - "rivet språkgemensammaokänt skriftsystem" - -var svScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0011, 0x0024, 0x0028, 0x0030, 0x0042, 0x004b, - 0x0054, 0x005f, 0x0067, 0x0074, 0x0079, 0x0083, 0x008f, 0x009b, - 0x00a3, 0x00a8, 0x00b3, 0x00be, 0x00c3, 0x00c9, 0x00e4, 0x00eb, - 0x00ef, 0x00f7, 0x00fb, 0x0103, 0x010e, 0x0118, 0x0133, 0x013d, - 0x0144, 0x0159, 0x0162, 0x016c, 0x0181, 0x018a, 0x0193, 0x019a, - 0x01a3, 0x01af, 0x01bc, 0x01c3, 0x01d1, 0x01d9, 0x01e1, 0x01ec, - 0x01fc, 0x0202, 0x0205, 0x0210, 0x0226, 0x023e, 0x0244, 0x024d, - 0x0255, 0x026b, 0x0275, 0x0286, 0x0292, 0x0297, 0x02a3, 0x02a7, - // Entry 40 - 7F - 0x02af, 0x02b7, 0x02c1, 0x02c8, 0x02d0, 0x02d9, 0x02e2, 0x02eb, - 0x02f6, 0x02ff, 0x0306, 0x030f, 0x0314, 0x031c, 0x0328, 0x0336, - 0x033e, 0x0342, 0x0347, 0x0350, 0x0359, 0x035f, 0x0363, 0x036a, - 0x0371, 0x037c, 0x0387, 0x0392, 0x039c, 0x03ab, 0x03b0, 0x03c1, - 0x03cb, 0x03d4, 0x03db, 0x03e5, 0x03e9, 0x03ec, 0x03f8, 0x0402, - 0x040c, 0x041c, 0x0426, 0x042f, 0x0438, 0x043d, 0x0443, 0x0448, - 0x0450, 0x0455, 0x045a, 0x045f, 0x0466, 0x0472, 0x0484, 0x0490, - 0x0498, 0x04a5, 0x04b6, 0x04c0, 0x04c9, 0x04d6, 0x04e7, 0x04ed, - // Entry 80 - BF - 0x04f8, 0x04fd, 0x0508, 0x050e, 0x051d, 0x0527, 0x0536, 0x053e, - 0x0545, 0x054f, 0x0558, 0x0564, 0x0570, 0x0577, 0x0583, 0x058f, - 0x0596, 0x05a7, 0x05b3, 0x05be, 0x05c6, 0x05d0, 0x05d6, 0x05dd, - 0x05e5, 0x05ef, 0x05f7, 0x05fd, 0x0604, 0x0610, 0x0617, 0x061c, - 0x0628, 0x0632, 0x0639, 0x0643, 0x0646, 0x0651, 0x065e, 0x0664, - 0x0670, 0x0689, 0x068b, 0x06a6, 0x06ac, 0x06bf, 0x06c4, 0x06cc, - 0x06db, 0x06e5, 0x06f8, -} // Size: 382 bytes - -const swScriptStr string = "" + // Size: 392 bytes - "KiarabuKiarmeniaKibengaliKibopomofoBrailleKisirilikiKidevanagariKiethiop" + - "iaKijojiaKigirikiKigujaratiKigurmukhiHanbKihangulKihanKihan RahisiKihan " + - "cha JadiKiebraniaHiraganaHati za KijapaniJamoKijapaniKikatakanaKikambodi" + - "aKikannadaKikoreaKilaosiKilatiniKimalayalamKimongoliaMyamaKioriyaKisinha" + - "laKitamilKiteluguKithaanaKithaiKitibetiHati za kihisabatiEmojiAlamaHaija" + - "andikwaKawaidaHati isiyojulikana" - -var swScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0019, 0x0019, 0x0019, - 0x0023, 0x0023, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x0034, 0x0034, 0x0040, - 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x0040, 0x004a, 0x004a, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0059, 0x0063, 0x006d, - 0x0071, 0x0079, 0x007e, 0x007e, 0x008a, 0x0098, 0x0098, 0x00a1, - 0x00a9, 0x00a9, 0x00a9, 0x00b9, 0x00b9, 0x00b9, 0x00b9, 0x00bd, - // Entry 40 - 7F - 0x00bd, 0x00c5, 0x00c5, 0x00c5, 0x00cf, 0x00cf, 0x00d9, 0x00d9, - 0x00e2, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00f0, 0x00f0, 0x00f0, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x0103, 0x0103, 0x010d, 0x010d, 0x010d, 0x010d, 0x010d, - 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x0112, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - // Entry 80 - BF - 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, 0x0119, - 0x0119, 0x0119, 0x0119, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, - 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, 0x0122, - 0x0129, 0x0129, 0x0129, 0x0131, 0x0131, 0x0131, 0x0131, 0x0139, - 0x013f, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, - 0x0147, 0x0147, 0x0147, 0x0147, 0x0147, 0x0159, 0x015e, 0x0163, - 0x016f, 0x0176, 0x0188, -} // Size: 382 bytes - -const taScriptStr string = "" + // Size: 3954 bytes - "அரபிக்இம்பேரியல் அரமெய்க்அர்மேனியன்அவெஸ்தான்பாலினீஸ்பாடாக்வங்காளம்ப்லிஸ்" + - "ஸிமிபால்ஸ்போபோமோஃபோபிரம்மிபிரெயில்புகினீஸ்புகித்சக்மாயுனிஃபைடு கனடியன்" + - " அபொரிஜினல் சிலபிக்ஸ்கரியன்சாம்செரோக்கிகிர்த்காப்டிக்சைப்ரியாட்சிரிலிக்ப" + - "ழைய சர்ச் ஸ்லவோனிக் சிரிலிக்தேவநாகரிடெசராட்எகிப்தியன் டெமோட்டிக்எகிப்த" + - "ியன் ஹைரேட்டிக்எகிப்தியன் ஹைரோகிளிப்ஸ்எத்தியோபிக்ஜியார்ஜியன் குட்சுரிஜ" + - "ார்ஜியன்க்லாகோலிடிக்கோதிக்கிரேக்கம்குஜராத்திகுர்முகிஹன்ப்ஹங்குல்ஹன்ஹனு" + - "னூஎளிதாக்கப்பட்ட ஹன்பாரம்பரிய ஹன்ஹீப்ருஹிராகானாபஹாவ் மாங்க்ஜப்பானிய எழ" + - "ுத்துருக்கள்பழைய ஹங்கேரியன்சிந்துபழைய இத்தாலிஜமோஜாவனீஸ்ஜப்பானியம்கயாஹ்" + - " லீகதகானாகரோஷ்டிகமெர்கன்னடம்கொரியன்காய்திலன்னாலாவோஃப்ரக்டூர் லெத்தின்கேல" + - "ிக் லெத்தின்லத்தின்லெப்சாலிம்புலினியர் ஏலினியர் பிலிசியன்லிடியன்மேன்டி" + - "யன்மனிசெய்ன்மயான் ஹைரோகிளிப்மெராய்டிக்மலையாளம்மங்கோலியன்மூன்மெய்தெய் ம" + - "யக்மியான்மர்என்‘கோஒகாம்ஒல் சிக்கிஆர்கான்ஒடியாஒஸ்மான்யாபழைய பெர்மிக்பக்" + - "ஸ்-பாஇன்ஸ்கிரிப்ஷனல் பஹலவிசால்டர் பஹலவிபுக் பஹலவிஃபோனேஷியன்போலார்ட் ஃப" + - "ொனெட்டிக்இன்ஸ்கிரிப்ஷனல் பார்த்தியன்ரெஜெய்ன்ரொங்கோரொங்கோருனிக்சமாரிடன்" + - "சாராதிசௌராஷ்ட்ராஸைன்எழுத்துஷவியான்சிங்களம்சுந்தானீஸ்சிலோடி நக்ரிசிரியா" + - "க்எஸ்ட்ரெங்கெலோ சிரியாக்மேற்கு சிரியாக்கிழக்கு சிரியாக்தகோவானாதாய் லேப" + - "ுதிய தை லூதமிழ்தை வியத்தெலுங்குதெங்வார்டிஃபினாக்தகலாக்தானாதாய்திபெத்தி" + - "யன்உகாரதிக்வைவிசிபிள் ஸ்பீச்பழைய பெர்ஷியன்சுமெரோ-அக்கடியன் க்யூனிஃபார்" + - "ம்யீபாரம்பரியமானகணிதக்குறியீடுஎமோஜிசின்னங்கள்எழுதப்படாததுபொதுஅறியப்படா" + - "த ஸ்கிரிப்ட்" - -var taScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0049, 0x0067, - 0x0082, 0x009a, 0x009a, 0x009a, 0x00ac, 0x00c4, 0x00c4, 0x00f4, - 0x010f, 0x0124, 0x013c, 0x0154, 0x0166, 0x0175, 0x01e1, 0x01f3, - 0x01ff, 0x0217, 0x0229, 0x0241, 0x025f, 0x0277, 0x02c8, 0x02e0, - 0x02f5, 0x02f5, 0x0332, 0x036f, 0x03b2, 0x03b2, 0x03d3, 0x040d, - 0x0428, 0x044c, 0x044c, 0x045e, 0x045e, 0x0479, 0x0494, 0x04ac, - 0x04bb, 0x04d0, 0x04d9, 0x04e8, 0x051c, 0x0541, 0x0541, 0x0553, - 0x056b, 0x056b, 0x058d, 0x05d0, 0x05fb, 0x060d, 0x062f, 0x0638, - // Entry 40 - 7F - 0x064d, 0x066b, 0x066b, 0x0681, 0x0693, 0x06a8, 0x06b7, 0x06b7, - 0x06cc, 0x06e1, 0x06e1, 0x06f3, 0x0702, 0x070e, 0x0745, 0x0770, - 0x0785, 0x0797, 0x07a9, 0x07c2, 0x07de, 0x07de, 0x07de, 0x07f3, - 0x0808, 0x0808, 0x0823, 0x083e, 0x083e, 0x086c, 0x086c, 0x086c, - 0x088a, 0x08a2, 0x08a2, 0x08c0, 0x08cc, 0x08cc, 0x08f1, 0x08f1, - 0x090c, 0x090c, 0x090c, 0x090c, 0x090c, 0x091e, 0x091e, 0x092d, - 0x0949, 0x095e, 0x096d, 0x096d, 0x0988, 0x0988, 0x0988, 0x09ad, - 0x09c3, 0x0a00, 0x0a25, 0x0a41, 0x0a5f, 0x0a99, 0x0ae8, 0x0b00, - // Entry 80 - BF - 0x0b24, 0x0b36, 0x0b4e, 0x0b60, 0x0b60, 0x0b7e, 0x0b9f, 0x0bb4, - 0x0bb4, 0x0bb4, 0x0bb4, 0x0bcc, 0x0bcc, 0x0bcc, 0x0bea, 0x0c0c, - 0x0c24, 0x0c64, 0x0c8f, 0x0cbd, 0x0cd2, 0x0cd2, 0x0ce5, 0x0d02, - 0x0d11, 0x0d11, 0x0d27, 0x0d3f, 0x0d57, 0x0d72, 0x0d84, 0x0d90, - 0x0d9c, 0x0dbd, 0x0dbd, 0x0dd5, 0x0ddb, 0x0e06, 0x0e06, 0x0e06, - 0x0e2e, 0x0e84, 0x0e8a, 0x0e8a, 0x0eae, 0x0ed8, 0x0ee7, 0x0f05, - 0x0f29, 0x0f35, 0x0f72, -} // Size: 382 bytes - -const teScriptStr string = "" + // Size: 3756 bytes - "అరబిక్ఇంపీరియల్ అరామాక్అర్మేనియన్అవేస్టాన్బాలినీస్బాటక్బాంగ్లాబ్లిస్సింబ" + - "ల్స్బోపోమోఫోబ్రాహ్మిబ్రెయిల్బ్యుగినీస్బుహిడ్చక్మాయునిఫైడ్ కెనెడియన్ అబ" + - "ొరిజినల్ సిలబిక్స్కారియన్చామ్చిరోకిసిర్థ్కోప్టిక్సైప్రోట్సిరిలిక్ప్రాచ" + - "ీన చర్చ స్లావోనిక్ సిరిలిక్దేవనాగరిడేసెరెట్ఇజిప్షియన్ డెమోటిక్ఇజిప్షియ" + - "న్ హైరాటిక్ఇజిప్షియన్ హైరోగ్లైఫ్స్ఇథియోపిక్జార్జియన్ ఖట్సూరిజార్జియన్గ" + - "్లాగో లిటిక్గోతిక్గ్రీక్గుజరాతీగుర్ముఖిహాన్బ్హంగుల్హాన్హనునూసరళీకృత హా" + - "న్సాంప్రదాయక హాన్హీబ్రుహిరాగానపాహవా హ్మోంగ్జపనీస్ సిలబెరీస్ప్రాచీన హంగ" + - "ేరియన్సింధుప్రాచిన ఐటాలిక్జమోజావనీస్జాపనీస్కాయాహ్ లికాటాకానఖరోషథిఖ్మేర" + - "్కన్నడకొరియన్కైథిలన్నాలావోఫ్రాక్టూర్ లాటిన్గేలిక్ లాటిన్లాటిన్లేప్చాలి" + - "ంబులినియర్ ఎలినియర్ బిలిసియన్లిడియన్మాన్డియన్మానిచేన్మాయన్ హైరోగ్లైఫ్స" + - "్మెరోఇటిక్మలయాళంమంగోలియన్మూన్మీటి మయెక్మయాన్మార్న్కోఒఘమ్ఓల్ చికిఓర్ఖోన" + - "్ఒడియాఓసమాన్యప్రాచీన పెర్మిక్ఫాగ్స్-పాఇంస్క్రిప్షనాల్ పహ్లావిసల్టార్ ప" + - "హ్లావిపుస్తక పహ్లావిఫోనిశియన్పోల్లర్డ్ ఫోనెటిక్ఇంస్క్రిప్షనాల్ పార్థియ" + - "న్రేజాంగ్రోంగో రోంగోరూనిక్సమారిటన్సరాటిసౌరాష్ట్రసంజ్ఞ లిపిషవియాన్సింహళ" + - "ంసుడానీస్స్లోటి నాగ్రిసిరియాక్ఎస్ట్రానజీలో సిరియాక్పశ్చిమ సిరియాక్తూర్" + - "పు సిరియాక్టాగ్బానవాతై లీక్రొత్త టై లుఇతమిళముటై వియట్తెలుగుటేంగ్వార్టి" + - "ఫీనాఘ్టగలాగ్థానాథాయ్టిబెటన్యుగారిటిక్వాయికనిపించే భాషప్రాచీన పర్షియన్స" + - "ుమేరో- అక్కడియన్ క్యునిఫార్మ్యివారసత్వంగణిత సంకేతలిపిఎమోజిచిహ్నాలులిపి" + - " లేనిసామాన్యతెలియని లిపి" - -var teScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, 0x0043, 0x0061, - 0x007c, 0x0094, 0x0094, 0x0094, 0x00a3, 0x00b8, 0x00b8, 0x00e2, - 0x00fa, 0x0112, 0x012a, 0x0148, 0x015a, 0x0169, 0x01d8, 0x01ed, - 0x01f9, 0x020b, 0x021d, 0x0235, 0x024d, 0x0265, 0x02bf, 0x02d7, - 0x02ef, 0x02ef, 0x0326, 0x035d, 0x03a0, 0x03a0, 0x03bb, 0x03ec, - 0x0407, 0x042c, 0x042c, 0x043e, 0x043e, 0x0450, 0x0465, 0x047d, - 0x048f, 0x04a1, 0x04ad, 0x04bc, 0x04de, 0x0509, 0x0509, 0x051b, - 0x0530, 0x0530, 0x0555, 0x0583, 0x05b4, 0x05c3, 0x05ee, 0x05f7, - // Entry 40 - 7F - 0x060c, 0x0621, 0x0621, 0x063a, 0x064f, 0x0661, 0x0673, 0x0673, - 0x0682, 0x0697, 0x0697, 0x06a3, 0x06b2, 0x06be, 0x06ef, 0x0714, - 0x0726, 0x0738, 0x0747, 0x0760, 0x077c, 0x077c, 0x077c, 0x0791, - 0x07a6, 0x07a6, 0x07c1, 0x07d9, 0x07d9, 0x080d, 0x080d, 0x080d, - 0x0828, 0x083a, 0x083a, 0x0855, 0x0861, 0x0861, 0x087d, 0x087d, - 0x0898, 0x0898, 0x0898, 0x0898, 0x0898, 0x08a4, 0x08a4, 0x08b0, - 0x08c6, 0x08db, 0x08ea, 0x08ea, 0x08ff, 0x08ff, 0x08ff, 0x092d, - 0x0946, 0x0989, 0x09b4, 0x09dc, 0x09f7, 0x0a2b, 0x0a74, 0x0a89, - // Entry 80 - BF - 0x0aa8, 0x0aba, 0x0ad2, 0x0ae1, 0x0ae1, 0x0afc, 0x0b18, 0x0b2d, - 0x0b2d, 0x0b2d, 0x0b2d, 0x0b3f, 0x0b3f, 0x0b3f, 0x0b57, 0x0b7c, - 0x0b94, 0x0bd1, 0x0bfc, 0x0c27, 0x0c42, 0x0c42, 0x0c4f, 0x0c75, - 0x0c87, 0x0c87, 0x0c9d, 0x0caf, 0x0cca, 0x0ce2, 0x0cf4, 0x0d00, - 0x0d0c, 0x0d21, 0x0d21, 0x0d3f, 0x0d4b, 0x0d6d, 0x0d6d, 0x0d6d, - 0x0d9b, 0x0def, 0x0df5, 0x0df5, 0x0e0d, 0x0e35, 0x0e44, 0x0e5c, - 0x0e75, 0x0e8a, 0x0eac, -} // Size: 382 bytes - -const thScriptStr string = "" + // Size: 4371 bytes - "อะฟาคาแอลเบเนีย คอเคเซียอาหรับอิมพีเรียล อราเมอิกอาร์เมเนียอเวสตะบาหลีบา" + - "มุมบัสซาบาตักเบงกาลีบลิสซิมโบลส์ปอพอมอฟอพราหมีเบรลล์บูกิสบูฮิดชากมาสัญ" + - "ลักษณ์ชนเผ่าพื้นเมืองแคนาดาคาเรียจามเชอโรกีเซิร์ทคอปติกไซเปรียทซีริลลิ" + - "กเชอร์ชสลาโวนิกซีริลลิกโบราณเทวนาครีเดเซเรทชวเลขดัปโลยันดีโมติกอียิปต์" + - "เฮียราติกอียิปต์เฮียโรกลิฟส์อียิปต์เอลบ์ซานเอธิโอปิกคัตซูรีจอร์เจียจอร" + - "์เจียกลาโกลิติกโกธิกคฤณห์กรีกคุชราตกูร์มูคีจีนกลางฮันกึลฮั่นฮานูโนโอฮั" + - "่นตัวย่อฮั่นตัวเต็มฮีบรูฮิระงะนะอักขระอานาโตเลียปาเฮาห์ม้งคะตะกะนะหรือ" + - "ฮิระงะนะฮังการีโบราณอินดัสอิตาลีโบราณจาโมชวาญี่ปุ่นจูร์เชนคยาห์คะตะกะน" + - "ะขโรษฐีเขมรคอจคีกันนาดาเกาหลีเปลเลกายติล้านนาลาวลาติน - ฟรังเตอร์ลาติน" + - " - แกลิกละตินเลปชาลิมบูลีเนียร์เอลีเนียร์บีเฟรเซอร์โลมาไลเซียลีเดียมหาชน" + - "ีแมนเดียนมานิแชนมายาไฮโรกลิฟส์เมนเดเคอร์ซีฟ-เมโรอิติกเมโรติกมาลายาลัมโ" + - "มฑีมองโกเลียมูนมโรเมเทมาเยกพม่าอาระเบียเหนือโบราณนาบาทาเอียนกีบา-นาซีเ" + - "อ็นโกนุซุโอคัมโอลชิกิออร์คอนโอริยาออสมันยาพาลไมรีนป่อจิ้งฮอเปอร์มิกโบร" + - "าณฟากส์-ปาปะห์ลาวีอินสคริปชันแนลปะห์ลาวีซอลเตอร์ปะห์ลาวีบุ๊กฟินิเชียสั" + - "ทศาสตร์พอลลาร์ดพาร์เทียอินสคริปชันแนลเรจังรองโกรองโกรูนิกซามาเรียซาราต" + - "ิอาระเบียใต้โบราณโสวรัสตระไซน์ไรติ้งซอเวียนชาราดาสิทธัมคุดาวาดีสิงหลโส" + - "ราสมเป็งซุนดาซิโลตินากรีซีเรียซีเรียเอสทรานจีโลซีเรียตะวันตกซีเรียตะวั" + - "นออกตักบันวาทาครีไทเลไทลื้อใหม่ทมิฬตันกัทไทเวียตเตลูกูเทงกวาร์ทิฟินากต" + - "ากาล็อกทานาไทยทิเบตเทอฮุทายูการิตไวคำพูดที่มองเห็นได้วารังกสิติโอลีเอเ" + - "ปอร์เซียโบราณอักษรรูปลิ่มสุเมเรีย-อัคคาเดียยิอินเฮอริตเครื่องหมายทางคณ" + - "ิตศาสตร์อีโมจิสัญลักษณ์ไม่มีภาษาเขียนสามัญสคริปต์ที่ไม่รู้จัก" - -var thScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0012, 0x0046, 0x0046, 0x0058, 0x008f, 0x00ad, - 0x00bf, 0x00ce, 0x00dd, 0x00ec, 0x00fb, 0x0110, 0x0110, 0x0134, - 0x014c, 0x015e, 0x0170, 0x017f, 0x018e, 0x019d, 0x01f7, 0x0209, - 0x0212, 0x0227, 0x0239, 0x024b, 0x0263, 0x027b, 0x02cc, 0x02e4, - 0x02f9, 0x0320, 0x034a, 0x037a, 0x03b3, 0x03cb, 0x03e6, 0x0413, - 0x042b, 0x0449, 0x0449, 0x0458, 0x0467, 0x0473, 0x0485, 0x049d, - 0x04b2, 0x04c4, 0x04d0, 0x04e8, 0x0506, 0x0527, 0x0527, 0x0536, - 0x054e, 0x057e, 0x059c, 0x05d8, 0x05fc, 0x060e, 0x062f, 0x063b, - // Entry 40 - 7F - 0x0644, 0x0659, 0x066e, 0x067d, 0x0695, 0x06a7, 0x06b3, 0x06c2, - 0x06d7, 0x06e9, 0x06f8, 0x0707, 0x0719, 0x0722, 0x074f, 0x0770, - 0x077f, 0x078e, 0x079d, 0x07bb, 0x07d9, 0x07f1, 0x07fd, 0x080f, - 0x0821, 0x0833, 0x084b, 0x0860, 0x0860, 0x088a, 0x0899, 0x08cd, - 0x08e2, 0x08fd, 0x0909, 0x0924, 0x092d, 0x0936, 0x0951, 0x0951, - 0x095d, 0x0993, 0x09b4, 0x09b4, 0x09cd, 0x09df, 0x09eb, 0x09fa, - 0x0a0f, 0x0a24, 0x0a36, 0x0a36, 0x0a4e, 0x0a66, 0x0a81, 0x0aa8, - 0x0abe, 0x0b00, 0x0b30, 0x0b54, 0x0b6c, 0x0b9f, 0x0be1, 0x0bf0, - // Entry 80 - BF - 0x0c0e, 0x0c1d, 0x0c35, 0x0c47, 0x0c77, 0x0c92, 0x0cb0, 0x0cc5, - 0x0cd7, 0x0ce9, 0x0d01, 0x0d10, 0x0d2e, 0x0d2e, 0x0d3d, 0x0d5e, - 0x0d70, 0x0da3, 0x0dca, 0x0df4, 0x0e0c, 0x0e1b, 0x0e27, 0x0e45, - 0x0e51, 0x0e63, 0x0e78, 0x0e8a, 0x0ea2, 0x0eb7, 0x0ecf, 0x0edb, - 0x0ee4, 0x0ef3, 0x0f08, 0x0f1d, 0x0f23, 0x0f59, 0x0f77, 0x0f89, - 0x0fb3, 0x100b, 0x1011, 0x1011, 0x102c, 0x1074, 0x1086, 0x10a1, - 0x10cb, 0x10da, 0x1113, -} // Size: 382 bytes - -const trScriptStr string = "" + // Size: 1504 bytes - "AfakaKafkas AlbanyasıArapİmparatorluk AramicesiErmeniAvestaBali DiliBamu" + - "mBassa VahBatakBengalBlis SembolleriBopomofoBrahmiBrailleBugisBuhidChakm" + - "aUCASKaryaChamÇerokiCirthKıptiKıbrısKirilEski Kilise Slavcası KirilDevan" + - "agariDeseretDuployé StenografiDemotik MısırHiyeratik MısırMısır Hiyerogl" + - "ifleriElbasanEtiyopyaHutsuri GürcüGürcüGlagolitGotikGranthaYunanGüceratG" + - "urmukhiHanbHangılHanHanunooBasitleştirilmiş HanGeleneksel HanİbraniHirag" + - "anaAnadolu HiyeroglifleriPahavh HmongKatakana veya HiraganaEski MacarInd" + - "usEski İtalyanJamoCava DiliJaponJurchenKayah LiKatakanaKharoshthiKmerKho" + - "jkiKannadaKoreKpelleKaithiLannaLaoFraktur LatinGael LatinLatinLepchaLimb" + - "uLineer ALineer BFraserLomaLikyaLidyaMahajaniMandenManiMaya Hiyeroglifle" + - "riMendeMeroitik El YazısıMeroitikMalayalamModiMoğolMoonMroMeitei MayekBu" + - "rmaEski Kuzey ArapNebatiNaksi GebaN’KoNüshuOghamOl ChikiOrhunOriyaOsmany" + - "aPalmiraPau Cin HauEski PermikPhags-paPehlevi Kitabe DiliPsalter Pehlevi" + - "Kitap Pehlevi DiliFenikePollard FonetikPartça Kitabe DiliRejangRongorong" + - "oRunikSamaritSaratiEski Güney ArapSaurashtraİşaret DiliShavianSharadaSid" + - "dhamKhudabadiSeylanSora SompengSundaSyloti NagriSüryaniEstrangela Süryan" + - "iBatı SüryaniDoğu SüryaniTagbanvaTakriTai LeNew Tai LueTamilTangutTai Vi" + - "etTeluguTengvarTifinaghTakalotThaanaTayTibetTirhutaUgarit Çivi YazısıVai" + - "Konuşma Sesleri ÇizimlemesiVarang KshitiWoleaiEski FarsSümer-Akad Çivi Y" + - "azısıYiKalıtsalMatematiksel GösterimEmojiSembolYazılı OlmayanOrtakBilinm" + - "eyen Alfabe" - -var trScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0016, 0x0016, 0x001a, 0x0031, 0x0037, - 0x003d, 0x0046, 0x004b, 0x0054, 0x0059, 0x005f, 0x005f, 0x006e, - 0x0076, 0x007c, 0x0083, 0x0088, 0x008d, 0x0093, 0x0097, 0x009c, - 0x00a0, 0x00a7, 0x00ac, 0x00b2, 0x00ba, 0x00bf, 0x00da, 0x00e4, - 0x00eb, 0x00fe, 0x010d, 0x011e, 0x0134, 0x013b, 0x0143, 0x0152, - 0x0159, 0x0161, 0x0161, 0x0166, 0x016d, 0x0172, 0x017a, 0x0182, - 0x0186, 0x018d, 0x0190, 0x0197, 0x01ad, 0x01bb, 0x01bb, 0x01c2, - 0x01ca, 0x01e0, 0x01ec, 0x0202, 0x020c, 0x0211, 0x021e, 0x0222, - // Entry 40 - 7F - 0x022b, 0x0230, 0x0237, 0x023f, 0x0247, 0x0251, 0x0255, 0x025b, - 0x0262, 0x0266, 0x026c, 0x0272, 0x0277, 0x027a, 0x0287, 0x0291, - 0x0296, 0x029c, 0x02a1, 0x02a9, 0x02b1, 0x02b7, 0x02bb, 0x02c0, - 0x02c5, 0x02cd, 0x02d3, 0x02d7, 0x02d7, 0x02ea, 0x02ef, 0x0303, - 0x030b, 0x0314, 0x0318, 0x031e, 0x0322, 0x0325, 0x0331, 0x0331, - 0x0336, 0x0345, 0x034b, 0x034b, 0x0355, 0x035b, 0x0361, 0x0366, - 0x036e, 0x0373, 0x0378, 0x0378, 0x037f, 0x0386, 0x0391, 0x039c, - 0x03a4, 0x03b7, 0x03c6, 0x03d8, 0x03de, 0x03ed, 0x0400, 0x0406, - // Entry 80 - BF - 0x0410, 0x0415, 0x041c, 0x0422, 0x0432, 0x043c, 0x0449, 0x0450, - 0x0457, 0x045e, 0x0467, 0x046d, 0x0479, 0x0479, 0x047e, 0x048a, - 0x0492, 0x04a5, 0x04b3, 0x04c1, 0x04c9, 0x04ce, 0x04d4, 0x04df, - 0x04e4, 0x04ea, 0x04f2, 0x04f8, 0x04ff, 0x0507, 0x050e, 0x0514, - 0x0517, 0x051c, 0x0523, 0x0538, 0x053b, 0x0558, 0x0565, 0x056b, - 0x0574, 0x058e, 0x0590, 0x0590, 0x0599, 0x05af, 0x05b4, 0x05ba, - 0x05ca, 0x05cf, 0x05e0, -} // Size: 382 bytes - -const ukScriptStr string = "" + // Size: 2990 bytes - "адламафакакавказька албанськаахомарабицяармівірменськаавестійськийбалійс" + - "ькийбамумбассабатакбенгальськасимволи Бліссабопомофобрахмішрифт Брайляб" + - "угійськийбухідчакмауніфіковані символи канадських тубільцівкаріанськийх" + - "амітськийчерокікирткоптськийкіпрськийкирилицядавньоцерковнословʼянський" + - "деванагарідезеретєгипетський демотичнийєгипетський ієратичнийєгипетськи" + - "й ієрогліфічнийефіопськакхутсурігрузинськаглаголичнийготичнийгрецькагуд" + - "жаратігурмухіханьхангилькитайськаханунукитайська спрощенакитайська трад" + - "иційнаівритхіраганапахау хмонгяпонські силабаріїдавньоугорськийхарапськ" + - "ийдавньоіталійськийчамояванськийяпонськакая лікатаканакхароштхікхмерськ" + - "аканнадакорейськакаїтіланналаоськалатинський фрактурнийлатинський гельс" + - "ькийлатиницялепчалімбулінійний Алінійний Вабетка Фрейзераломалікійський" + - "лідійськиймандейськийманіхейськиймайя ієрогліфічниймероїтськиймалаяламс" + - "ькамонгольськамунмейтей майєкмʼянмськаневанкоогамічнийсантальськийорхон" + - "ськийоріяосейджиськаосманськийдавньопермськийпхагс-папехлеві написівпех" + - "леві релігійнийпехлеві літературнийфінікійськийписемність Поллардапарфя" + - "нськийреджангронго-ронгорунічнийсамаритянськийсаратісаураштразнаковийшо" + - "усингальськасунданськийсілоті нагрісирійськийдавньосирійський естрангел" + - "одавньосирійський західнийдавньосирійський східнийтагбанватай-ліновий т" + - "айський луетамільськатангуттай-вʼєттелугутенгвартифінагтагальськийтаана" + - "тайськатибетськаугаритськийваївидиме мовленнядавньоперськийшумеро-аккад" + - "ський клінописйїуспадкованаматематичнаемодзісимвольнабезписемназвичайна" + - "невідома система письма" - -var ukScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x000a, 0x0014, 0x0039, 0x0041, 0x004f, 0x0057, 0x006b, - 0x0083, 0x0097, 0x00a1, 0x00ab, 0x00b5, 0x00cb, 0x00cb, 0x00e6, - 0x00f6, 0x0102, 0x0119, 0x012d, 0x0137, 0x0141, 0x018e, 0x01a4, - 0x01b8, 0x01c4, 0x01cc, 0x01de, 0x01f0, 0x0200, 0x0234, 0x0248, - 0x0256, 0x0256, 0x0281, 0x02ac, 0x02dd, 0x02dd, 0x02ef, 0x02ff, - 0x0313, 0x0329, 0x0329, 0x0339, 0x0339, 0x0347, 0x0359, 0x0367, - 0x036f, 0x037d, 0x038f, 0x039b, 0x03be, 0x03e5, 0x03e5, 0x03ef, - 0x03ff, 0x03ff, 0x0414, 0x0437, 0x0455, 0x0469, 0x048b, 0x0493, - // Entry 40 - 7F - 0x04a5, 0x04b5, 0x04b5, 0x04c0, 0x04d0, 0x04e2, 0x04f4, 0x04f4, - 0x0502, 0x0514, 0x0514, 0x051e, 0x0528, 0x0536, 0x055f, 0x0586, - 0x0596, 0x05a0, 0x05aa, 0x05bd, 0x05d0, 0x05ed, 0x05f5, 0x0609, - 0x061d, 0x061d, 0x0633, 0x064b, 0x064b, 0x066e, 0x066e, 0x066e, - 0x0684, 0x069c, 0x069c, 0x06b2, 0x06b8, 0x06b8, 0x06cf, 0x06cf, - 0x06e1, 0x06e1, 0x06e1, 0x06e9, 0x06e9, 0x06ef, 0x06ef, 0x0701, - 0x0719, 0x072d, 0x0735, 0x074b, 0x075f, 0x075f, 0x075f, 0x077d, - 0x078c, 0x07a9, 0x07cc, 0x07f3, 0x080b, 0x0830, 0x0846, 0x0854, - // Entry 80 - BF - 0x0869, 0x0879, 0x0895, 0x08a1, 0x08a1, 0x08b3, 0x08c3, 0x08c9, - 0x08c9, 0x08c9, 0x08c9, 0x08df, 0x08df, 0x08df, 0x08f5, 0x090c, - 0x0920, 0x0955, 0x0986, 0x09b5, 0x09c5, 0x09c5, 0x09d0, 0x09f2, - 0x0a06, 0x0a12, 0x0a21, 0x0a2d, 0x0a3b, 0x0a49, 0x0a5f, 0x0a69, - 0x0a77, 0x0a89, 0x0a89, 0x0a9f, 0x0aa5, 0x0ac2, 0x0ac2, 0x0ac2, - 0x0ade, 0x0b10, 0x0b14, 0x0b14, 0x0b2a, 0x0b40, 0x0b4c, 0x0b5e, - 0x0b72, 0x0b82, 0x0bae, -} // Size: 382 bytes - -const urScriptStr string = "" + // Size: 579 bytes - "عربیآرمینیائیبنگالیبوپوموفوبریلسیریلکدیوناگریایتھوپیائیجارجیائییونانیگجر" + - "اتیگرمکھیہینبہنگولہانآسان ہانروایتی ہانعبرانیہیراگیناجاپانی سیلابریزجام" + - "وجاپانیکٹاکاناخمیرکنڑکوریائیلاؤلاطینیملیالممنگولیائیمیانماراڑیہسنہالاتم" + - "لتیلگوتھاناتھائیتبتیریاضی کی علامتیںایموجیعلاماتغیر تحریر شدہعامنامعلوم" + - " رسم الخط" - -var urScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0026, 0x0026, 0x0026, - 0x0036, 0x0036, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x004a, 0x004a, 0x005a, - 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x005a, 0x006e, 0x006e, - 0x007e, 0x007e, 0x007e, 0x007e, 0x007e, 0x008a, 0x0096, 0x00a2, - 0x00aa, 0x00b4, 0x00ba, 0x00ba, 0x00c9, 0x00dc, 0x00dc, 0x00e8, - 0x00f8, 0x00f8, 0x00f8, 0x0115, 0x0115, 0x0115, 0x0115, 0x011d, - // Entry 40 - 7F - 0x011d, 0x0129, 0x0129, 0x0129, 0x0137, 0x0137, 0x013f, 0x013f, - 0x0145, 0x0153, 0x0153, 0x0153, 0x0153, 0x0159, 0x0159, 0x0159, - 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, - 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, 0x0165, - 0x0165, 0x0171, 0x0171, 0x0183, 0x0183, 0x0183, 0x0183, 0x0183, - 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, 0x0191, - 0x0191, 0x0191, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - // Entry 80 - BF - 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, 0x0199, - 0x0199, 0x0199, 0x0199, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, 0x01a5, - 0x01ab, 0x01ab, 0x01ab, 0x01b5, 0x01b5, 0x01b5, 0x01b5, 0x01bf, - 0x01c9, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, - 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01ef, 0x01fb, 0x0207, - 0x021f, 0x0225, 0x0243, -} // Size: 382 bytes - -const uzScriptStr string = "" + // Size: 321 bytes - "arabarmanbengalbopomofobraylkirilldevanagarihabashgruzingrekgujarotgurmu" + - "kxihanbhangulxitoysoddalashgan xitoyan’anaviy xitoyivrithiraganakatakana" + - " yoki hiraganajamoyaponkatakanakxmerkannadakoreyslaoslotinmalayalammongo" + - "lmyanmaoriyasingaltamiltelugutaanataytibetmatematik ifodalaremojibelgila" + - "ryozuvsizumumiynoma’lum yozuv" - -var uzScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0004, 0x0009, - 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x000f, 0x000f, 0x000f, - 0x0017, 0x0017, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x0022, 0x0022, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x0032, 0x0032, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x003c, 0x0043, 0x004b, - 0x004f, 0x0055, 0x005a, 0x005a, 0x006c, 0x007d, 0x007d, 0x0082, - 0x008a, 0x008a, 0x008a, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a4, - // Entry 40 - 7F - 0x00a4, 0x00a9, 0x00a9, 0x00a9, 0x00b1, 0x00b1, 0x00b6, 0x00b6, - 0x00bd, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c7, 0x00c7, 0x00c7, - 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00cc, 0x00d5, 0x00d5, 0x00db, 0x00db, 0x00db, 0x00db, 0x00db, - 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, - 0x00e1, 0x00e1, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - // Entry 80 - BF - 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00e6, 0x00e6, 0x00e6, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, - 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, 0x00ec, - 0x00f1, 0x00f1, 0x00f1, 0x00f7, 0x00f7, 0x00f7, 0x00f7, 0x00fc, - 0x00ff, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, - 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0116, 0x011b, 0x0123, - 0x012b, 0x0131, 0x0141, -} // Size: 382 bytes - -const viScriptStr string = "" + // Size: 2528 bytes - "Chữ AfakaChữ Ả RậpChữ Imperial AramaicChữ ArmeniaChữ AvestanChữ BaliChữ " + - "BamumChữ Bassa VahChữ BatakChữ BangladeshChữ BlissymbolsChữ BopomofoChữ " + - "BrahmiChữ nổi BrailleChữ BuginChữ BuhidChữ ChakmaÂm tiết Thổ dân Canada " + - "Hợp nhấtChữ CariaChữ ChămChữ CherokeeChữ CirthChữ CopticChứ SípChữ Kirin" + - "Chữ Kirin Slavơ Nhà thờ cổChữ DevanagariChữ DeseretChữ tốc ký DuployanCh" + - "ữ Ai Cập bình dânChữ Ai Cập thày tuChữ tượng hình Ai CậpChữ EthiopiaCh" + - "ữ Khutsuri GeorgiaChữ GruziaChữ GlagoliticChữ Gô-tíchChữ GranthaChữ Hy" + - " LạpChữ GujaratiChữ GurmukhiChữ HanbChữ HangulChữ HánChữ HanunooChữ Hán " + - "giản thểChữ Hán phồn thểChữ Do TháiChữ HiraganaChữ tượng hình AnatoliaCh" + - "ữ Pahawh HmongBảng ký hiệu âm tiết Tiếng NhậtChữ Hungary cổChữ IndusCh" + - "ữ Italic cổChữ JamoChữ JavaChữ Nhật BảnChữ JurchenChữ Kayah LiChữ Kata" + - "kanaChữ KharoshthiChữ Khơ-meChữ KhojkiChữ KannadaChữ Hàn QuốcChữ KpelleC" + - "hữ KaithiChữ LannaChữ LàoChữ La-tinh FrakturChữ La-tinh Xcốt-lenChữ La t" + - "inhChữ LepchaChữ LimbuChữ Linear AChữ Linear BChữ FraserChữ LomaChữ Lyci" + - "aChữ LydiaChữ MandaeanChữ ManichaeanChữ tượng hình MayaChữ MendeChữ Mero" + - "itic Nét thảoChữ MeroiticChữ MalayalamChữ Mông CổChữ nổi MoonChữ MroChữ " + - "Meitei MayekChữ MyanmarChữ Bắc Ả Rập cổChữ NabataeanChữ Naxi GebaChữ N’K" + - "oChữ NüshuChữ OghamChữ Ol ChikiChữ OrkhonChữ OdiaChữ OsmanyaChữ Palmyren" + - "eChữ Permic cổChữ Phags-paChữ Pahlavi Văn biaChữ Pahlavi Thánh caChữ Pah" + - "lavi SáchChữ PhoeniciaNgữ âm PollardChữ Parthia Văn biaChữ RejangChữ Ron" + - "gorongoChữ RunicChữ SamaritanChữ SaratiChữ Nam Ả Rập cổChữ SaurashtraChữ" + - " viết Ký hiệuChữ ShavianChữ SharadaChữ KhudawadiChữ SinhalaChữ Sora Somp" + - "engChữ Xu-đăngChữ Syloti NagriChữ SyriaChữ Estrangelo SyriacChữ Tây Syri" + - "aChữ Đông SyriaChữ TagbanwaChữ TakriChữ Thái NaChữ Thái Lặc mớiChữ Tamil" + - "Chữ TangutChữ Thái ViệtChữ TeluguChữ TengwarChữ TifinaghChữ TagalogChữ T" + - "haanaChữ TháiChữ Tây TạngChữ TirhutaChữ UgaritChữ VaiTiếng nói Nhìn thấy" + - " đượcChữ Varang KshitiChữ WoleaiChữ Ba Tư cổChữ hình nêm Sumero-Akkadian" + - "Chữ DiChữ Kế thừaKý hiệu Toán họcBiểu tượngKý hiệuChưa có chữ viếtChungC" + - "hữ viết không xác định" - -var viScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x001a, 0x0030, 0x003d, - 0x004a, 0x0054, 0x005f, 0x006e, 0x0079, 0x0089, 0x0089, 0x009a, - 0x00a8, 0x00b4, 0x00c7, 0x00d2, 0x00dd, 0x00e9, 0x0112, 0x011d, - 0x0128, 0x0136, 0x0141, 0x014d, 0x0157, 0x0162, 0x0184, 0x0194, - 0x01a1, 0x01b9, 0x01d2, 0x01e9, 0x0206, 0x0206, 0x0214, 0x022a, - 0x0236, 0x0246, 0x0246, 0x0255, 0x0262, 0x0270, 0x027e, 0x028c, - 0x0296, 0x02a2, 0x02ac, 0x02b9, 0x02d0, 0x02e7, 0x02e7, 0x02f5, - 0x0303, 0x0320, 0x0332, 0x035d, 0x036f, 0x037a, 0x038b, 0x0395, - // Entry 40 - 7F - 0x039f, 0x03b1, 0x03be, 0x03cc, 0x03da, 0x03ea, 0x03f7, 0x0403, - 0x0410, 0x0421, 0x042d, 0x0439, 0x0444, 0x044e, 0x0463, 0x047b, - 0x0488, 0x0494, 0x049f, 0x04ad, 0x04bb, 0x04c7, 0x04d1, 0x04dc, - 0x04e7, 0x04e7, 0x04f5, 0x0505, 0x0505, 0x051e, 0x0529, 0x0543, - 0x0551, 0x0560, 0x0560, 0x0570, 0x0580, 0x0589, 0x059b, 0x059b, - 0x05a8, 0x05c2, 0x05d1, 0x05d1, 0x05e0, 0x05ec, 0x05f8, 0x0603, - 0x0611, 0x061d, 0x0627, 0x0627, 0x0634, 0x0643, 0x0643, 0x0654, - 0x0662, 0x0678, 0x068f, 0x06a2, 0x06b1, 0x06c2, 0x06d8, 0x06e4, - // Entry 80 - BF - 0x06f4, 0x06ff, 0x070e, 0x071a, 0x0732, 0x0742, 0x0759, 0x0766, - 0x0773, 0x0773, 0x0782, 0x078f, 0x07a1, 0x07a1, 0x07b0, 0x07c2, - 0x07cd, 0x07e4, 0x07f4, 0x0806, 0x0814, 0x081f, 0x082d, 0x0844, - 0x084f, 0x085b, 0x086d, 0x0879, 0x0886, 0x0894, 0x08a1, 0x08ad, - 0x08b8, 0x08c9, 0x08d6, 0x08e2, 0x08eb, 0x090d, 0x0920, 0x092c, - 0x093d, 0x095d, 0x0965, 0x0965, 0x0976, 0x098c, 0x099b, 0x09a5, - 0x09bb, 0x09c0, 0x09e0, -} // Size: 382 bytes - -const zhScriptStr string = "" + // Size: 2382 bytes - "阿德拉姆文阿法卡文AghbAhom阿拉伯文皇室亚拉姆文亚美尼亚文阿维斯陀文巴厘文巴姆穆文巴萨文巴塔克文孟加拉文拜克舒克文布列斯符号汉语拼音婆罗米" + - "文字布莱叶盲文布吉文布希德文查克马文加拿大土著统一音节卡里亚文占文切罗基文色斯文克普特文塞浦路斯文西里尔文西里尔文字(古教会斯拉夫文的变体)" + - "天城文德塞莱特文杜普洛伊速记后期埃及文古埃及僧侣书写体古埃及象形文爱尔巴桑文埃塞俄比亚文格鲁吉亚文(教堂体)格鲁吉亚文格拉哥里文马萨拉姆冈德" + - "文哥特文格兰塔文希腊文古吉拉特文果鲁穆奇文汉语注音谚文汉字汉奴罗文简体中文繁体中文Hatr希伯来文平假名安那托利亚象形文字杨松录苗文假名表古" + - "匈牙利文印度河文字古意大利文韩文字母爪哇文日文女真文克耶李文字片假名卡罗须提文高棉文克吉奇文字卡纳达文韩文克佩列文凯提文兰拿文老挝文拉丁文(" + - "哥特式字体变体)拉丁文(盖尔文变体)拉丁文雷布查文林布文线形文字(A)线形文字(B)傈僳文洛马文利西亚文吕底亚文Mahj阿拉米文摩尼教文大玛" + - "尔文玛雅圣符文门迪文麦罗埃草书麦若提克文马拉雅拉姆文Modi蒙古文韩文语系谬文曼尼普尔文Mult缅甸文古北方阿拉伯文纳巴泰文尼瓦文纳西格巴文" + - "西非书面文字(N’Ko)女书欧甘文桑塔利文鄂尔浑文奥里亚文欧塞奇文奥斯曼亚文帕尔迈拉文包金豪文古彼尔姆文八思巴文巴列维文碑铭体巴列维文(圣诗" + - "体)巴列维文(书体)腓尼基文波拉德音标文字帕提亚文碑铭体拉让文朗格朗格文古代北欧文撒马利亚文沙拉堤文古南阿拉伯文索拉什特拉文书写符号萧伯纳式" + - "文夏拉达文悉昙信德文僧伽罗文索朗桑朋文索永布文巽他文锡尔赫特文叙利亚文福音体叙利亚文西叙利亚文东叙利亚文塔格班瓦文泰克里文泰乐文新傣文泰米尔" + - "文唐古特文越南傣文泰卢固文腾格瓦文字提非纳文塔加路文塔安那文泰文藏文迈蒂利文乌加里特文瓦依文可见语言瓦郎奇蒂文字沃莱艾文古波斯文苏美尔-阿卡" + - "德楔形文字彝文札那巴札尔方块文字遗传学术语数学符号表情符号符号非书面文字通用未知文字" - -var zhScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x001b, 0x001f, 0x0023, 0x002f, 0x0041, 0x0050, - 0x005f, 0x0068, 0x0074, 0x007d, 0x0089, 0x0095, 0x00a4, 0x00b3, - 0x00bf, 0x00ce, 0x00dd, 0x00e6, 0x00f2, 0x00fe, 0x0119, 0x0125, - 0x012b, 0x0137, 0x0140, 0x014c, 0x015b, 0x0167, 0x019a, 0x01a3, - 0x01b2, 0x01c4, 0x01d3, 0x01eb, 0x01fd, 0x020c, 0x021e, 0x023c, - 0x024b, 0x025a, 0x026f, 0x0278, 0x0284, 0x028d, 0x029c, 0x02ab, - 0x02b7, 0x02bd, 0x02c3, 0x02cf, 0x02db, 0x02e7, 0x02eb, 0x02f7, - 0x0300, 0x031b, 0x032a, 0x0333, 0x0342, 0x0351, 0x0360, 0x036c, - // Entry 40 - 7F - 0x0375, 0x037b, 0x0384, 0x0393, 0x039c, 0x03ab, 0x03b4, 0x03c3, - 0x03cf, 0x03d5, 0x03e1, 0x03ea, 0x03f3, 0x03fc, 0x0420, 0x043e, - 0x0447, 0x0453, 0x045c, 0x046f, 0x0482, 0x048b, 0x0494, 0x04a0, - 0x04ac, 0x04b0, 0x04bc, 0x04c8, 0x04d4, 0x04e3, 0x04ec, 0x04fb, - 0x050a, 0x051c, 0x0520, 0x0529, 0x0535, 0x053b, 0x054a, 0x054e, - 0x0557, 0x056c, 0x0578, 0x0581, 0x0590, 0x05ae, 0x05b4, 0x05bd, - 0x05c9, 0x05d5, 0x05e1, 0x05ed, 0x05fc, 0x060b, 0x0617, 0x0626, - 0x0632, 0x0647, 0x0662, 0x067a, 0x0686, 0x069b, 0x06b0, 0x06b9, - // Entry 80 - BF - 0x06c8, 0x06d7, 0x06e6, 0x06f2, 0x0704, 0x0716, 0x0722, 0x0731, - 0x073d, 0x0743, 0x074c, 0x0758, 0x0767, 0x0773, 0x077c, 0x078b, - 0x0797, 0x07ac, 0x07bb, 0x07ca, 0x07d9, 0x07e5, 0x07ee, 0x07f7, - 0x0803, 0x080f, 0x081b, 0x0827, 0x0836, 0x0842, 0x084e, 0x085a, - 0x0860, 0x0866, 0x0872, 0x0881, 0x088a, 0x0896, 0x08a8, 0x08b4, - 0x08c0, 0x08df, 0x08e5, 0x0900, 0x090f, 0x091b, 0x0927, 0x092d, - 0x093c, 0x0942, 0x094e, -} // Size: 382 bytes - -const zhHantScriptStr string = "" + // Size: 2624 bytes - "富拉文阿法卡文字高加索阿爾巴尼亞文阿洪姆文阿拉伯文皇室亞美尼亞文亞美尼亞文阿維斯陀文峇里文巴姆穆文巴薩文巴塔克文孟加拉文梵文布列斯文注音符號婆羅" + - "米文盲人用點字布吉斯文布希德文查克馬文加拿大原住民通用字符卡里亞文占文柴羅基文色斯文科普特文塞浦路斯文斯拉夫文西里爾文(古教會斯拉夫文變體)" + - "天城文德瑟雷特文杜普洛伊速記古埃及世俗體古埃及僧侶體古埃及象形文字愛爾巴桑文衣索比亞文喬治亞語系(阿索他路里和努斯克胡里文)喬治亞文格拉哥里" + - "文岡德文歌德文格蘭他文字希臘文古吉拉特文古魯穆奇文標上注音符號的漢字韓文字漢字哈努諾文簡體中文繁體中文哈特拉文希伯來文平假名安那托利亞象形文" + - "字楊松錄苗文片假名或平假名古匈牙利文印度河流域(哈拉帕文)古意大利文韓文字母爪哇文日文女真文字克耶李文片假名卡羅須提文高棉文克吉奇文字坎那達" + - "文韓文克培列文凱提文藍拿文寮國文拉丁文(尖角體活字變體)拉丁文(蓋爾語變體)拉丁文雷布查文林佈文線性文字(A)線性文字(B)栗僳文洛馬文呂西" + - "亞語里底亞語印地文曼底安文摩尼教文藏文瑪雅象形文字門德文麥羅埃文(曲線字體)麥羅埃文馬來亞拉姆文馬拉地文蒙古文蒙氏點字謬文曼尼普爾文木爾坦文" + - "緬甸文古北阿拉伯文納巴泰文字Vote 尼瓦爾文納西格巴文西非書面語言 (N’Ko)女書文字歐甘文桑塔利文鄂爾渾文歐利亞文歐塞奇文歐斯曼亞文帕" + - "米瑞拉文字鮑欽豪文古彼爾姆諸文八思巴文巴列維文(碑銘體)巴列維文(聖詩體)巴列維文(書體)腓尼基文柏格理拼音符帕提亞文(碑銘體)拉讓文朗格朗" + - "格象形文古北歐文字撒馬利亞文沙拉堤文古南阿拉伯文索拉什特拉文手語書寫符號簫柏納字符夏拉達文悉曇文字信德文錫蘭文索朗桑朋文字索永布文字巽他文希" + - "洛弟納格里文敍利亞文敘利亞文(福音體文字變體)敘利亞文(西方文字變體)敘利亞文(東方文字變體)南島文塔卡里文字傣哪文西雙版納新傣文坦米爾文西" + - "夏文傣擔文泰盧固文談格瓦文提非納文塔加拉文塔安那文泰文西藏文邁蒂利文烏加列文瓦依文視覺語音文字瓦郎奇蒂文字沃雷艾文古波斯文蘇米魯亞甲文楔形文" + - "字彞文札那巴札爾文字繼承文字(Unicode)數學符號表情符號符號非書寫語言一般文字未知文字" - -var zhHantScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0018, 0x0033, 0x003f, 0x004b, 0x0060, 0x006f, - 0x007e, 0x0087, 0x0093, 0x009c, 0x00a8, 0x00b4, 0x00ba, 0x00c6, - 0x00d2, 0x00de, 0x00ed, 0x00f9, 0x0105, 0x0111, 0x012f, 0x013b, - 0x0141, 0x014d, 0x0156, 0x0162, 0x0171, 0x017d, 0x01aa, 0x01b3, - 0x01c2, 0x01d4, 0x01e6, 0x01f8, 0x020d, 0x021c, 0x022b, 0x0264, - 0x0270, 0x027f, 0x0288, 0x0291, 0x02a0, 0x02a9, 0x02b8, 0x02c7, - 0x02e2, 0x02eb, 0x02f1, 0x02fd, 0x0309, 0x0315, 0x0321, 0x032d, - 0x0336, 0x0351, 0x0360, 0x0375, 0x0384, 0x03a5, 0x03b4, 0x03c0, - // Entry 40 - 7F - 0x03c9, 0x03cf, 0x03db, 0x03e7, 0x03f0, 0x03ff, 0x0408, 0x0417, - 0x0423, 0x0429, 0x0435, 0x043e, 0x0447, 0x0450, 0x0474, 0x0492, - 0x049b, 0x04a7, 0x04b0, 0x04c3, 0x04d6, 0x04df, 0x04e8, 0x04f4, - 0x0500, 0x0509, 0x0515, 0x0521, 0x0527, 0x0539, 0x0542, 0x0560, - 0x056c, 0x057e, 0x058a, 0x0593, 0x059f, 0x05a5, 0x05b4, 0x05c0, - 0x05c9, 0x05db, 0x05ea, 0x05fb, 0x060a, 0x0625, 0x0631, 0x063a, - 0x0646, 0x0652, 0x065e, 0x066a, 0x0679, 0x068b, 0x0697, 0x06a9, - 0x06b5, 0x06d0, 0x06eb, 0x0703, 0x070f, 0x0721, 0x073c, 0x0745, - // Entry 80 - BF - 0x075a, 0x0769, 0x0778, 0x0784, 0x0796, 0x07a8, 0x07ba, 0x07c9, - 0x07d5, 0x07e1, 0x07ea, 0x07f3, 0x0805, 0x0814, 0x081d, 0x0832, - 0x083e, 0x0865, 0x0889, 0x08ad, 0x08b6, 0x08c5, 0x08ce, 0x08e3, - 0x08ef, 0x08f8, 0x0901, 0x090d, 0x0919, 0x0925, 0x0931, 0x093d, - 0x0943, 0x094c, 0x0958, 0x0964, 0x096d, 0x097f, 0x0991, 0x099d, - 0x09a9, 0x09c7, 0x09cd, 0x09e2, 0x09fb, 0x0a07, 0x0a13, 0x0a19, - 0x0a28, 0x0a34, 0x0a40, -} // Size: 382 bytes - -const zuScriptStr string = "" + // Size: 504 bytes - "isi-Arabicisi-Armenianisi-Banglaisi-Bopomofoi-Brailleisi-Cyrillicisi-Dev" + - "anagariisi-Ethiopicisi-Georgianisi-Greekisi-Gujaratiisi-Gurmukhiisi-Hanb" + - "isi-Hangulisi-Hanisi-Han esenziwe lulaisi-Han sosikoisi-Hebrewisi-Hiraga" + - "nai-Japanese syllabariesisi-Jamoisi-Japaneseisi-Katakanaisi-Khmerisi-Kan" + - "nadaisi-Koreanisi-Laoisi-Latinisi-Malayalamisi-Mongolianisi-Myanmarisi-O" + - "diaisi-Sinhalaisi-Tamilisi-Teluguisi-Thaanaisi-Thaii-Tibetani-Mathematic" + - "al Notationi-Emojiamasimbuliokungabhaliwejwayelekileiskripthi esingaziwa" - -var zuScriptIdx = []uint16{ // 179 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0016, - 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0020, 0x0020, 0x0020, - 0x002c, 0x002c, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0041, 0x0041, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x005b, 0x005b, - 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0070, 0x007c, 0x0088, - 0x0090, 0x009a, 0x00a1, 0x00a1, 0x00b6, 0x00c4, 0x00c4, 0x00ce, - 0x00da, 0x00da, 0x00da, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f8, - // Entry 40 - 7F - 0x00f8, 0x0104, 0x0104, 0x0104, 0x0110, 0x0110, 0x0119, 0x0119, - 0x0124, 0x012e, 0x012e, 0x012e, 0x012e, 0x0135, 0x0135, 0x0135, - 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, - 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, 0x013e, - 0x013e, 0x014b, 0x014b, 0x0158, 0x0158, 0x0158, 0x0158, 0x0158, - 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, 0x0163, - 0x0163, 0x0163, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, - 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, - // Entry 80 - BF - 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, 0x016b, - 0x016b, 0x016b, 0x016b, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, 0x0176, - 0x017f, 0x017f, 0x017f, 0x0189, 0x0189, 0x0189, 0x0189, 0x0193, - 0x019b, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01bb, 0x01c2, 0x01cc, - 0x01d9, 0x01e4, 0x01f8, -} // Size: 382 bytes - -// Total size for script: 258792 bytes (258 KB) - -// Number of keys: 292 -var ( - regionIndex = tagIndex{ - "ACADAEAFAGAIALAMAOAQARASATAUAWAXAZBABBBDBEBFBGBHBIBJBLBMBNBOBQBRBSBTBVBW" + - "BYBZCACCCDCFCGCHCICKCLCMCNCOCPCRCUCVCWCXCYCZDEDGDJDKDMDODZEAECEEEGEH" + - "ERESETEUEZFIFJFKFMFOFRGAGBGDGEGFGGGHGIGLGMGNGPGQGRGSGTGUGWGYHKHMHNHR" + - "HTHUICIDIEILIMINIOIQIRISITJEJMJOJPKEKGKHKIKMKNKPKRKWKYKZLALBLCLILKLR" + - "LSLTLULVLYMAMCMDMEMFMGMHMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZNANCNENFNGNI" + - "NLNONPNRNUNZOMPAPEPFPGPHPKPLPMPNPRPSPTPWPYQAQORERORSRURWSASBSCSDSESG" + - "SHSISJSKSLSMSNSOSRSSSTSVSXSYSZTATCTDTFTGTHTJTKTLTMTNTOTRTTTVTWTZUAUG" + - "UMUNUSUYUZVAVCVEVGVIVNVUWFWSXKYEYTZAZMZWZZ", - "001002003005009011013014015017018019021029030034035039053054057061142143" + - "145150151154155202419", - "", - } -) - -var regionHeaders = [261]header{ - { // af - afRegionStr, - afRegionIdx, - }, - { // agq - "ÀndolàYùnaetɛ Alab ɛmelɛ̀Àfɨ̀ganìsɨ̀tânÀntigwà à BàbudàÀŋgwilàÀabɛnìaÀmɛ" + - "nyìaÀŋgolàÀdzɛ̀ntinàÀmɛlekan SamwàUsɨtɨ̀làÙsɨ̀tɛ̀lɛlìaÀlubàÀzɨbɛ̀dzâ" + - "nBosɨnyìa à Hɛ̀zɛ̀gòvinàBàbadòsBaŋgɨ̀làdɛ̂BɛɛdzwùmBùkinà FasòBùugɛlì" + - "aBàlaenBùlundìBɛ̀nɨ̂ŋBɛ̀mudàBɨ̀lunèBòlevàBɨ̀làzîiBàhamàsMbutànBòtɨ̀s" + - "wǎnàBɛlàlûsBɛ̀lezɨ̀KanadàDɛ̀mùkàlatì Lèkpubèlè è KuŋgùSɛnta Afɨlekan" + - " LèkpobèlèKuŋgùSuezàlânKu Dɨ̀vûaChwɨla ŋ̀ KûʔChilèKàmàlûŋChaenàKòlom" + - "bìaKòsɨ̀tà LekàKuuwbàChwɨla ŋ̀ Kɛ̀b Vɛ̂ɛSaekpùlùChɛ̂ LèkpubèlèDzaman" + - "èDzìbuwtìDɛnɨmàDòmenekàDòmenekà LèkpubèlèÀadzɛlìaEkwadòÈsɨ̀tonyìaEd" + - "zìÈletɨ̀làSɨ̀kpɛ̂nÈtyǒpìaFɨnlànFidziChwɨlà fɨ FakɨlànMaekòlòneshìaFà" + - "lâŋnsìGàbûnYùnaetɛ Kiŋdɔ̀mGɨ̀lɛnadàDzɔɔdzìaGàyanà è FàlâŋnsìGaanàDzi" + - "bɨ̀latàGɨ̀lenlânGambìaGinèGwadalukpɛ̀Èkwɛ̀tolia GinèGɨ̀lêsGwàtɨ̀malà" + - "GwamGinè BìsawùGùyanàHɔndulàsKòwɛshìaHǎetìHɔŋgàlèÈndòneshìaAelɨ̀lânE" + - "zɨ̀lɛ̂EndìaDɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì kòÈlâkɨ̀ÈlânAesɨ̀" + - "lânEtalèDzàmɛkàDzodànDzàkpânKɨnyàKìdzisɨ̀tânKàmbodìaKèlèbatiKomolòsS" + - "ɛ̀n Kî à NevìKùulîa, EkùwKùulîa, EmàmKùwɛ̂Chwɨlà ŋ̀ KaemànKàzasɨ̀tâ" + - "nLàwosLɛbanèSɛ̀n LushìaLetɨnshɨ̀nSɨ̀le LaŋkàLàebɛlìaLɛ̀sotùLètwǎnyìa" + - "LuzɨmbùʔLàtɨvaLebìaMòlokòMùnakuMòodovàMàdàgasɨkàChwɨlà fɨ MashàMɨ̀sɨ" + - "̀donyìaMalèMǐanmàMùŋgolìaChwɨlà m̀ Màlǐanà mɨ̀ Ekùw mòMàtìnekìMùlèt" + - "anyìaMùŋtselàMaatàMùleshwɨ̀sMàdivèMàlawìMɛkɨzikùMàlɛshìaMùzàmbîNàmib" + - "ìaKàlèdonyìa È fūghūNaedzàChwɨlà fɨ NufòʔGɨ̀anyɨNikàlagwàNedàlânNoo" + - "wɛ̂ɛNɛkpâaNàwulùNiyuZìlân È fūghūUmànKpanàmaKpɛlûKpoleneshìa è Fàlâŋ" + - "nsìKpakpua Ginè È fūghūFelèkpîKpakìsɨ̀tânKpulànSɛ̀n Kpiyɛ̀ à Mikelɔŋ" + - "Kpitɨ̀kalèKpǒto LekoAdzɨmā kɨ ŋgùŋ kɨ Palɛsɨtɨnyia à kɨ Gazà kòKputu" + - "wgàKpàlawùKpalàgwɛ̂KatàLèyunyɔ̀ŋLùmanyìaLoshìaLùwandàSawudi AlabiChw" + - "ɨlà fɨ Solomwɨ̀nSɛchɛ̀lɛ̀sSùdânSuedɨ̀nSiŋgàkpôoSɛ̀n ÈlenàSɨ̀lòvɨnyì" + - "aSɨ̀lòvɨkɨ̀aSilìa lûŋSàn MàlenùSɛ̀nɛ̀gâaSòmalìaSulènamèSawo Tɔ̀me à " + - "Kpèlènsikpɛ̀EsàvadòSilîaShǔazìlânChwɨla n Tɨtê à KaekùsChâTugùTaelàn" + - "Tàdzikìsɨ̀tânTuwkelawùÊs TaemòTekɨmènèsɨ̀tânTùneshìaTuŋgàTeekìTèlene" + - "dà à TòbagùTuwvalùwTaewànTàanzanyìaYùkɛ̀lɛ̂YùgandàUSAYulùgwɛ̂Yùzɨ̀bɛ" + - "kìsɨ̀tânVatikàn Sɨ̀tɛ̂Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tēVɛ̀nɛ̀zǔɛɛlàChwɨlà" + - " m̀ Vidzinyìa m̀ Bɨ̀letì mòU. S. Chwɨlà fɨ MbuʔmbuVìyɛnàmVànǔatùwWal" + - "es à FùwtuwnàSàmowàYɛmɛ̀nMàyotìAfɨlekà ghɨ Emàm ghòZambìaZìmbagbɛ̀", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x0020, 0x0035, 0x004a, 0x0054, 0x005e, - 0x0068, 0x0071, 0x0071, 0x007f, 0x0090, 0x009c, 0x00af, 0x00b6, - 0x00b6, 0x00c5, 0x00e5, 0x00ee, 0x00ff, 0x010a, 0x0118, 0x0123, - 0x012a, 0x0133, 0x013f, 0x013f, 0x0149, 0x0153, 0x015b, 0x015b, - 0x0167, 0x0170, 0x0177, 0x0177, 0x0186, 0x0190, 0x019c, 0x01a3, - 0x01a3, 0x01cb, 0x01e8, 0x01ef, 0x01f9, 0x0205, 0x0217, 0x021d, - 0x0228, 0x022f, 0x0239, 0x0239, 0x024a, 0x0251, 0x026c, 0x026c, - 0x026c, 0x0276, 0x0289, 0x0291, 0x0291, 0x029b, 0x02a4, 0x02ae, - // Entry 40 - 7F - 0x02c5, 0x02d0, 0x02d0, 0x02d7, 0x02e5, 0x02ea, 0x02ea, 0x02f6, - 0x0302, 0x030c, 0x030c, 0x030c, 0x0314, 0x0319, 0x032f, 0x033f, - 0x033f, 0x034b, 0x0352, 0x0366, 0x0373, 0x037e, 0x0396, 0x0396, - 0x039c, 0x03a9, 0x03b5, 0x03bc, 0x03c1, 0x03ce, 0x03e1, 0x03ea, - 0x03ea, 0x03f8, 0x03fc, 0x040a, 0x0412, 0x0412, 0x0412, 0x041c, - 0x0427, 0x042e, 0x0439, 0x0439, 0x0446, 0x0451, 0x045c, 0x045c, - 0x0462, 0x049a, 0x04a4, 0x04aa, 0x04b5, 0x04bb, 0x04bb, 0x04c5, - 0x04cc, 0x04d5, 0x04dc, 0x04eb, 0x04f5, 0x04ff, 0x0507, 0x051a, - // Entry 80 - BF - 0x0529, 0x0538, 0x0540, 0x0555, 0x0563, 0x0569, 0x0571, 0x057f, - 0x058c, 0x059b, 0x05a6, 0x05b0, 0x05bc, 0x05c7, 0x05cf, 0x05d5, - 0x05dd, 0x05e4, 0x05ed, 0x05ed, 0x05ed, 0x05fb, 0x060e, 0x061f, - 0x0624, 0x062c, 0x0637, 0x0637, 0x065e, 0x0669, 0x0676, 0x0681, - 0x0687, 0x0694, 0x069c, 0x06a4, 0x06af, 0x06ba, 0x06c4, 0x06cd, - 0x06e5, 0x06ec, 0x0700, 0x070a, 0x0715, 0x071e, 0x0728, 0x0730, - 0x0738, 0x073c, 0x074e, 0x0753, 0x075b, 0x0762, 0x077e, 0x0796, - 0x079f, 0x07ae, 0x07b5, 0x07d1, 0x07de, 0x07e9, 0x0822, 0x082b, - // Entry C0 - FF - 0x0834, 0x0840, 0x0845, 0x0845, 0x0852, 0x085c, 0x085c, 0x0863, - 0x086c, 0x0878, 0x0890, 0x089f, 0x08a6, 0x08af, 0x08bb, 0x08c9, - 0x08d9, 0x08d9, 0x08ea, 0x08f6, 0x0903, 0x0911, 0x091a, 0x0924, - 0x0924, 0x0944, 0x094d, 0x094d, 0x0953, 0x095f, 0x095f, 0x097a, - 0x097e, 0x097e, 0x0983, 0x098a, 0x099c, 0x09a6, 0x09b0, 0x09c4, - 0x09ce, 0x09d5, 0x09db, 0x09f1, 0x09fa, 0x0a01, 0x0a0d, 0x0a1a, - 0x0a23, 0x0a23, 0x0a23, 0x0a26, 0x0a31, 0x0a48, 0x0a5b, 0x0a7f, - 0x0a93, 0x0abd, 0x0ad8, 0x0ae2, 0x0aed, 0x0b00, 0x0b08, 0x0b08, - // Entry 100 - 13F - 0x0b11, 0x0b19, 0x0b32, 0x0b39, 0x0b45, - }, - }, - { // ak - "AndoraUnited Arab EmiratesAfganistanAntigua ne BaabudaAnguilaAlbeniaAame" + - "niaAngolaAgyɛntinaAmɛrika SamoaƆstriaƆstreliaArubaAzebaegyanBosnia n" + - "e HɛzegovinaBaabadosBangladɛhyeBɛlgyiumBɔkina FasoBɔlgeriaBarenBurun" + - "diBɛninBɛmudaBrunaeBoliviaBrazilBahamaButanBɔtswanaBɛlarusBelizKanad" + - "aKongo (Zair)Afrika Finimfin ManKongoSwetzalandLa Côte d’IvoireKook " + - "NsupɔwKyiliKamɛrunKyaenaKolombiaKɔsta RikaKubaKepvɛdfo IslandsSaeprɔ" + - "sKyɛk KurokɛseGyaamanGyibutiDɛnmakDɔmenekaDɔmeneka KurokɛseƆlgyeriaI" + - "kuwadɔƐstoniaNisrimƐritreaSpainIthiopiaFinlandFigyiFɔlkman AelandMae" + - "kronehyiaFrɛnkyemanGabɔnAhendiman NkabomGrenadaGyɔgyeaFrɛnkye Gayana" + - "GaanaGyebraltaGreenmanGambiaGiniGuwadelupGini IkuwetaGreekmanGuwatem" + - "alaGuamGini BisawGayanaHɔndurasKrowehyiaHeitiHangariIndɔnehyiaAerela" + - "ndIsraelIndiaBritenfo Hɔn Man Wɔ India Po No MuIrakIranAeslandItaliG" + - "yamekaGyɔdanGyapanKɛnyaKɛɛgestanKambodiaKiribatiKɔmɔrɔsSaint Kitts n" + - "e NɛvesEtifi KoriaAnaafo KoriaKuweteKemanfo IslandsKazakstanLaosLɛba" + - "nɔnSaint LuciaLektenstaenSri LankaLaeberiaLɛsutuLituweniaLaksembɛgLa" + - "tviaLibyaMorokoMɔnakoMɔldovaMadagaskaMarshall IslandsMasedoniaMaliMi" + - "yanmaMɔngoliaNorthern Mariana IslandsMatinikMɔreteniaMantseratMɔltaM" + - "ɔrehyeɔsMaldivesMalawiMɛksikoMalehyiaMozambikNamibiaKaledonia Fofor" + - "oNigyɛNɔfolk AelandNaegyeriaNekaraguwaNɛdɛlandNɔɔweNɛpɔlNaworuNiyuZi" + - "land FoforoOmanPanamaPeruFrɛnkye PɔlenehyiaPapua Guinea FoforoPhilip" + - "pinesPakistanPolandSaint Pierre ne MiquelonPitcairnPuɛto RikoPalesta" + - "en West Bank ne GazaPɔtugalPalauParaguayKataReyuniɔnRomeniaRɔhyeaRwa" + - "ndaSaudi ArabiaSolomon IslandsSeyhyɛlSudanSwedenSingapɔSaint HelenaS" + - "loviniaSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSão Tomé " + - "and PríncipeƐl SalvadɔSiriaSwazilandTurks ne Caicos IslandsKyadTogoT" + - "aelandTajikistanTokelauTimɔ BokaTɛkmɛnistanTunihyiaTongaTɛɛkiTrinida" + - "d ne TobagoTuvaluTaiwanTanzaniaUkrenUgandaAmɛrikaYurugwaeUzbɛkistanV" + - "atican ManSaint Vincent ne GrenadinesVenezuelaBritainfo Virgin Islan" + - "dsAmɛrika Virgin IslandsViɛtnamVanuatuWallis ne FutunaSamoaYɛmenMayɔ" + - "teAfrika AnaafoZambiaZembabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x001a, 0x0024, 0x0036, 0x003d, 0x0044, - 0x004b, 0x0051, 0x0051, 0x005b, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0088, 0x009d, 0x00a5, 0x00b1, 0x00ba, 0x00c6, 0x00cf, - 0x00d4, 0x00db, 0x00e1, 0x00e1, 0x00e8, 0x00ee, 0x00f5, 0x00f5, - 0x00fb, 0x0101, 0x0106, 0x0106, 0x010f, 0x0117, 0x011c, 0x0122, - 0x0122, 0x012e, 0x0141, 0x0146, 0x0150, 0x0163, 0x016f, 0x0174, - 0x017c, 0x0182, 0x018a, 0x018a, 0x0195, 0x0199, 0x01aa, 0x01aa, - 0x01aa, 0x01b2, 0x01c1, 0x01c8, 0x01c8, 0x01cf, 0x01d6, 0x01df, - // Entry 40 - 7F - 0x01f2, 0x01fb, 0x01fb, 0x0203, 0x020b, 0x0211, 0x0211, 0x0219, - 0x021e, 0x0226, 0x0226, 0x0226, 0x022d, 0x0232, 0x0241, 0x024d, - 0x024d, 0x0258, 0x025e, 0x026e, 0x0275, 0x027d, 0x028c, 0x028c, - 0x0291, 0x029a, 0x02a2, 0x02a8, 0x02ac, 0x02b5, 0x02c1, 0x02c9, - 0x02c9, 0x02d3, 0x02d7, 0x02e1, 0x02e7, 0x02e7, 0x02e7, 0x02f0, - 0x02f9, 0x02fe, 0x0305, 0x0305, 0x0310, 0x0318, 0x031e, 0x031e, - 0x0323, 0x0347, 0x034b, 0x034f, 0x0356, 0x035b, 0x035b, 0x0362, - 0x0369, 0x036f, 0x0375, 0x0380, 0x0388, 0x0390, 0x039a, 0x03af, - // Entry 80 - BF - 0x03ba, 0x03c6, 0x03cc, 0x03db, 0x03e4, 0x03e8, 0x03f1, 0x03fc, - 0x0407, 0x0410, 0x0418, 0x041f, 0x0428, 0x0432, 0x0438, 0x043d, - 0x0443, 0x044a, 0x0452, 0x0452, 0x0452, 0x045b, 0x046b, 0x0474, - 0x0478, 0x047f, 0x0488, 0x0488, 0x04a0, 0x04a7, 0x04b1, 0x04ba, - 0x04c0, 0x04cb, 0x04d3, 0x04d9, 0x04e1, 0x04e9, 0x04f1, 0x04f8, - 0x0508, 0x050e, 0x051c, 0x0525, 0x052f, 0x0539, 0x0540, 0x0547, - 0x054d, 0x0551, 0x055e, 0x0562, 0x0568, 0x056c, 0x0580, 0x0593, - 0x059e, 0x05a6, 0x05ac, 0x05c4, 0x05cc, 0x05d7, 0x05f2, 0x05fa, - // Entry C0 - FF - 0x05ff, 0x0607, 0x060b, 0x060b, 0x0614, 0x061b, 0x061b, 0x0622, - 0x0628, 0x0634, 0x0643, 0x064b, 0x0650, 0x0656, 0x065e, 0x066a, - 0x0672, 0x0672, 0x067a, 0x0686, 0x0690, 0x0697, 0x069e, 0x06a6, - 0x06a6, 0x06be, 0x06ca, 0x06ca, 0x06cf, 0x06d8, 0x06d8, 0x06ef, - 0x06f3, 0x06f3, 0x06f7, 0x06fe, 0x0708, 0x070f, 0x0719, 0x0726, - 0x072e, 0x0733, 0x073a, 0x074c, 0x0752, 0x0758, 0x0760, 0x0765, - 0x076b, 0x076b, 0x076b, 0x0773, 0x077b, 0x0786, 0x0791, 0x07ac, - 0x07b5, 0x07cd, 0x07e4, 0x07ec, 0x07f3, 0x0803, 0x0808, 0x0808, - // Entry 100 - 13F - 0x080e, 0x0815, 0x0822, 0x0828, 0x0830, - }, - }, - { // am - amRegionStr, - amRegionIdx, - }, - { // ar - arRegionStr, - arRegionIdx, - }, - {}, // ar-EG - { // ar-LY - "سبتة ومليليةمونتيسيراتأوروغواي", - []uint16{ // 245 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - // Entry 80 - BF - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - // Entry C0 - FF - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x002b, 0x003b, - }, - }, - { // ar-SA - "جزيرة أسينشينجزر البهاماسبتة ومليليةماكاو الصينية (منطقة إدارية خاصة)مون" + - "تيسيراتسان بيير وميكولونأوروغواي", - []uint16{ // 245 elements - // Entry 0 - 3F - 0x0000, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, - 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, - 0x0019, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - // Entry 40 - 7F - 0x002e, 0x002e, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - // Entry 80 - BF - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0081, 0x0081, 0x0081, 0x0081, 0x0095, - 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, - 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, - 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, - 0x0095, 0x0095, 0x0095, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, - // Entry C0 - FF - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00c5, - }, - }, - { // as - "অ্যাসেনশন আইল্যান্ডএ্যান্ডোরাUAEআফগানিস্তানএ্যাঙ্গুইলাআল্বেনিয়াআরমেনিয়" + - "াঅ্যাঙ্গোলাএন্টাৰ্টিকাআর্জিণ্টিনাআমেরিকান সামোয়াঅস্ট্রিয়াঅস্ট্রে" + - "লিয়াআলে্যান্ড দ্বীপপুঞ্জআজেরবাইজানবসনিয়া ও হারজেগোভিনাবাংলাদেশবে" + - "লজিয়ামবুর্কিনা ফাসোবুলগেরিয়াবাহরাইনবুরুন্ডিবেনিনব্রুনেইবোলিভিয়া" + - "ব্রাজিলভুটানবভেট দ্বীপবোট্স্বানাবেলারুশকোকোস (কিলিং) দ্বীপপুঞ্জকঙ্" + - "গো - কিনসাসামধ্য আফ্রিকান প্রজাতন্ত্রকঙ্গো - ব্রাজাভিলসুইজর্লণ্ডআই" + - "ভরি কোস্টকুক দ্বীপপুঞ্জচিলিক্যামেরুনচীনকলোমবিয়াক্লিপারটন দ্বীপকেপ" + - " ভার্দেক্রিস্টমাস দ্বীপসাইপ্রাসদ্বিপজাৰ্মানিদিয়েগো গার্সিয়াজিবুতিড" + - "েন্মার্ক্আলজেরিয়াকিউটা & ম্লিলাইকোয়াডরএস্তোনিয়াদেশমিশরপশ্চিম সা" + - "হারাইরিত্রিয়াস্পেনইথিওপিয়াফিনল্যাণ্ডফিজিফকল্যান্ড দ্বীপপুঞ্জমাইক" + - "্রোনেশিয়াফারো দ্বীপপুঞ্জফ্ৰান্সগাবোনবাদ্যযন্ত্রসংযুক্ত ৰাজ্যজর্জি" + - "য়াএকটি দেশের নামগেঁজিঘানাজিব্রালটারগাম্বিয়াদেশগিনিনিরক্ষীয় গিনি" + - "গ্রীসদক্ষিণ জৰ্জিয়া আৰু দক্ষিণ চেণ্ডৱিচ্\u200c দ্বীপপুঞ্জগুয়ামগি" + - "নি-বিসাউগায়ানাহংকং এসএআর চীনহাৰ্ড দ্বীপ আৰু মেক্\u200cডোনাল্ড দ্ব" + - "ীপক্রোয়েশিয়াহাঙ্গেরিক্যানারি দ্বীপপুঞ্জইন্দোনেশিয়াআয়ারল্যাণ্ডই" + - "স্রায়েলআইল অফ ম্যানভারতব্ৰিটিশ্ব ইণ্ডিয়ান মহাসাগৰৰ অঞ্চলইরাকইরান" + - "আইস্ল্যাণ্ডইটালিজার্সিজর্ডনজাপানকেনিয়াকিরগিজস্তানকাম্বোজকিরিবাতিক" + - "মোরোসউত্তর কোরিয়াদক্ষিণ কোরিয়াকুয়েতকাজাকস্থানলাত্তসলেবাননলিচেনস" + - "্টেইনশ্রীলংকালাইবেরিয়ালেসোথোলিত্ভালাক্সেমবার্গল্যাট্ভিআলিবিয়ামরক" + - "্কোমোনাকোমোল্দাভিয়ামন্টিনিগ্রোম্যাডাগ্যাস্কারমার্শাল দ্বীপপুঞ্জম্" + - "যাসাডোনিয়ামালিমায়ানমার (বার্মা)মঙ্গোলিআম্যাকাও এসএআর চীনউত্তর মা" + - "রিয়ানা দ্বীপপুঞ্জমরিতানিয়ামালটামরিশাসমালদ্বীপমালাউইমাল্যাশিয়ামো" + - "জাম্বিকনামিবিয়ানতুন ক্যালেডোনিয়ানাইজারনদীনরফোক দ্বীপনাইজিরিয়াদে" + - "শনেদারল্যান্ডসনরত্তএদেশনেপালনাউরুনিউইনিউজিল্যান্ডওমানপেরুফরাসি পলি" + - "নেশিয়াপাপুয়া নিউ গিনিফিলিপাইনপাকিস্তানপোল্যান্ডপিটকেয়ার্ন দ্বীপ" + - "পুঞ্জফিলিস্তিন অঞ্চলপর্তুগালপালাউপ্যারাগুয়েকাতারসাক্ষাৎরুমানিয়াস" + - "ার্বিয়ারাশিয়ারুয়ান্ডাসৌদি আরবসলোমান দ্বীপপুঞ্জসিসিলিসুদানসুইডেন" + - "সিঙ্গাপুরসেন্ট হেলেনাস্লোভানিয়াসাভালবার্ড ও জান মেনশ্লোভাকিয়াসিয" + - "়েরা লিওনসান মেরিনোসেনেগালসোমালিয়াসুরিনামদক্ষিণ সুদানসাও টোম এবং " + - "প্রিনসিপেসিরিয়াসোয়াজিল্যান্ডট্রিস্টান ডা কুনামত্স্যবিশেষদক্ষিণ ফ" + - "্ৰান্সৰ অঞ্চলযাওথাইল্যান্ডতাজিকস্থানটোকেলাউপূর্ব তিমুরতুর্কমেনিয়া" + - "টিউনিস্টাঙ্গাতুরস্কটুভালুতাইওয়ানতাঞ্জানিয়াইউক্রেইন্উগান্ডাইউ এস " + - "আউটলিং আইল্যান্ডসযুক্তৰাষ্ট্ৰউরুগুয়েউজ্বেকিস্থানভ্যাটিকান সিটিভেন" + - "েজুয়েলাভিয়েতনামভানুয়াতুওয়ালিস ও ফুটুনাসামোয়াকসোভোইমেনমায়োত্ত" + - "েদক্ষিন আফ্রিকাজাম্বিয়াজিম্বাবুয়েঅজ্ঞাত অঞ্চলঅস্ট্রেলেশিয়াম্যাল" + - "েনেশিয়ামাইক্রোনেশিয়ান অঞ্চল (অনুবাদ সংকেত: সতর্কতা, ডানদিকে তথ্য" + - " প্যানেল দেখুন।)", - []uint16{ // 283 elements - // Entry 0 - 3F - 0x0000, 0x0037, 0x0055, 0x0058, 0x0079, 0x0079, 0x009a, 0x00b8, - 0x00d3, 0x00f1, 0x0112, 0x0133, 0x0161, 0x017f, 0x01a3, 0x01a3, - 0x01dd, 0x01fb, 0x0236, 0x0236, 0x024e, 0x0269, 0x028e, 0x02ac, - 0x02c1, 0x02d9, 0x02e8, 0x02e8, 0x02e8, 0x02fd, 0x0318, 0x0318, - 0x032d, 0x032d, 0x033c, 0x0358, 0x0376, 0x038b, 0x038b, 0x038b, - 0x03cb, 0x03f2, 0x0439, 0x0466, 0x0484, 0x04a3, 0x04cb, 0x04d7, - 0x04f2, 0x04fb, 0x0516, 0x0541, 0x0541, 0x0541, 0x055d, 0x055d, - 0x058b, 0x05b2, 0x05b2, 0x05ca, 0x05fb, 0x060d, 0x062b, 0x062b, - // Entry 40 - 7F - 0x062b, 0x0646, 0x066a, 0x0682, 0x06a9, 0x06b5, 0x06da, 0x06f8, - 0x0707, 0x0722, 0x0722, 0x0722, 0x0740, 0x074c, 0x0786, 0x07b0, - 0x07db, 0x07f0, 0x0820, 0x0845, 0x0845, 0x085d, 0x0883, 0x0892, - 0x089e, 0x08bc, 0x08bc, 0x08e0, 0x08ec, 0x08ec, 0x0914, 0x0923, - 0x09a9, 0x09a9, 0x09bb, 0x09d7, 0x09ec, 0x0a12, 0x0a70, 0x0a70, - 0x0a94, 0x0a94, 0x0aac, 0x0ae3, 0x0b07, 0x0b2b, 0x0b46, 0x0b66, - 0x0b72, 0x0bd2, 0x0bde, 0x0bea, 0x0c0b, 0x0c1a, 0x0c2c, 0x0c2c, - 0x0c3b, 0x0c4a, 0x0c5f, 0x0c80, 0x0c95, 0x0cad, 0x0cbf, 0x0cbf, - // Entry 80 - BF - 0x0ce4, 0x0d0c, 0x0d1e, 0x0d1e, 0x0d3c, 0x0d4e, 0x0d60, 0x0d60, - 0x0d81, 0x0d99, 0x0db7, 0x0dc9, 0x0ddb, 0x0dff, 0x0e1a, 0x0e2f, - 0x0e41, 0x0e53, 0x0e74, 0x0e95, 0x0e95, 0x0ec2, 0x0ef6, 0x0f1d, - 0x0f29, 0x0f59, 0x0f71, 0x0fa0, 0x0fea, 0x0fea, 0x1008, 0x1008, - 0x1017, 0x1029, 0x1041, 0x1053, 0x1053, 0x1074, 0x108f, 0x10aa, - 0x10de, 0x10f9, 0x1118, 0x113f, 0x113f, 0x1166, 0x1181, 0x1190, - 0x119f, 0x11ab, 0x11cf, 0x11db, 0x11db, 0x11e7, 0x1215, 0x1241, - 0x1259, 0x1274, 0x128f, 0x128f, 0x12cf, 0x12cf, 0x12fa, 0x1312, - // Entry C0 - FF - 0x1321, 0x1342, 0x1351, 0x1351, 0x1366, 0x1381, 0x139c, 0x13b1, - 0x13cc, 0x13e2, 0x1413, 0x1425, 0x1434, 0x1446, 0x1461, 0x1483, - 0x14a4, 0x14da, 0x14fb, 0x151d, 0x1539, 0x154e, 0x1569, 0x157e, - 0x15a0, 0x15d9, 0x15d9, 0x15d9, 0x15ee, 0x1618, 0x1647, 0x1647, - 0x1668, 0x16a3, 0x16ac, 0x16ca, 0x16e8, 0x16fd, 0x171c, 0x1740, - 0x1755, 0x1767, 0x1779, 0x1779, 0x178b, 0x17a3, 0x17c4, 0x17df, - 0x17f4, 0x1833, 0x1833, 0x1857, 0x186f, 0x1893, 0x18bb, 0x18bb, - 0x18dc, 0x18dc, 0x18dc, 0x18f7, 0x1912, 0x193e, 0x1953, 0x1962, - // Entry 100 - 13F - 0x196e, 0x1989, 0x19b1, 0x19cc, 0x19ed, 0x1a0f, 0x1a0f, 0x1a0f, - 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, - 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, 0x1a0f, - 0x1a39, 0x1a60, 0x1b26, - }, - }, - { // asa - "AndoraFalme dha KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArme" + - "niaAngolaAjentinaThamoa ya MarekaniAuthtriaAuthtraliaArubaAdhabajani" + - "Bothnia na HedhegovinaBabadothiBangladeshiUbelgijiBukinafathoBulgari" + - "aBahareniBurundiBeniniBermudaBruneiBraziliBahamaButaniBotthwanaBelar" + - "uthiBelidheKanadaJamhuri ya Kidemokrathia ya KongoJamhuri ya Afrika " + - "ya KatiKongoUthwithiKodivaaVithiwa vya CookChileKameruniChinaKolombi" + - "aKothtarikaKubaKepuvedeKuprothiJamhuri ya ChekiUjerumaniJibutiDenmak" + - "iDominikaJamhuri ya DominikaAljeriaEkwadoEthtoniaMithriEritreaHithpa" + - "niaUhabeshiUfiniFijiVithiwa vya FalklandMikronethiaUfaranthaGaboniUi" + - "ngeredhaGrenadaJojiaGwiyana ya UfaranthaGhanaJibraltaGrinlandiGambia" + - "GineGwadelupeGinekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurathiK" + - "orathiaHaitiHungariaIndonethiaAyalandiIthraeliIndiaIeneo la Uingered" + - "ha katika Bahari HindiIrakiUajemiAithlandiItaliaJamaikaYordaniJapani" + - "KenyaKirigizithtaniKambodiaKiribatiKomoroThantakitdhi na NevithKorea" + - " KathkaziniKorea KuthiniKuwaitiVithiwa vya KaymanKazakithtaniLaothiL" + - "ebanoniThantaluthiaLishenteniThirilankaLiberiaLethotoLitwaniaLathemb" + - "agiLativiaLibyaMorokoMonakoMoldovaBukiniVithiwa vya MarshalMathedoni" + - "aMaliMyamaMongoliaVithiwa vya Mariana vya KathkaziniMartinikiMoritan" + - "iaMonttherratiMaltaMorithiModivuMalawiMekthikoMalethiaMthumbijiNamib" + - "iaNyukaledoniaNijeriKithiwa cha NorfokNijeriaNikaragwaUholandhiNorwe" + - "NepaliNauruNiueNyudhilandiOmaniPanamaPeruPolinesia ya UfaranthaPapua" + - "FilipinoPakithtaniPolandiThantapieri na MikeloniPitkairniPwetorikoPa" + - "lestinaUrenoPalauParagwaiKatariRiyunioniRomaniaUruthiRwandaThaudiVit" + - "hiwa vya TholomonShelisheliThudaniUthwidiThingapooThantahelenaThlove" + - "niaTholvakiaThiera LeoniThamarinoThenegaliThomaliaThurinamuThao Tome" + - " na PrincipeElsavadoThiriaUthwadhiVithiwa vya Turki na KaikoChadiTog" + - "oTailandiTajikithtaniTokelauTimori ya MasharikiTurukimenithtaniTunit" + - "hiaTongaUturukiTrinidad na TobagoTuvaluTaiwaniTadhaniaUgandaMarekani" + - "UrugwaiUdhibekithtaniVatikaniThantavithenti na GrenadiniVenezuelaVit" + - "hiwa vya Virgin vya UingeredhaVithiwa vya Virgin vya MarekaniVietina" + - "muVanuatuWalith na FutunaThamoaYemeniMayotteAfrika KuthiniDhambiaDhi" + - "mbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0044, - 0x004b, 0x0051, 0x0051, 0x0059, 0x006b, 0x0073, 0x007d, 0x0082, - 0x0082, 0x008c, 0x00a2, 0x00ab, 0x00b6, 0x00be, 0x00c9, 0x00d1, - 0x00d9, 0x00e0, 0x00e6, 0x00e6, 0x00ed, 0x00f3, 0x00f3, 0x00f3, - 0x00fa, 0x0100, 0x0106, 0x0106, 0x010f, 0x0118, 0x011f, 0x0125, - 0x0125, 0x0146, 0x015f, 0x0164, 0x016c, 0x0173, 0x0183, 0x0188, - 0x0190, 0x0195, 0x019d, 0x019d, 0x01a7, 0x01ab, 0x01b3, 0x01b3, - 0x01b3, 0x01bb, 0x01cb, 0x01d4, 0x01d4, 0x01da, 0x01e1, 0x01e9, - // Entry 40 - 7F - 0x01fc, 0x0203, 0x0203, 0x0209, 0x0211, 0x0217, 0x0217, 0x021e, - 0x0227, 0x022f, 0x022f, 0x022f, 0x0234, 0x0238, 0x024c, 0x0257, - 0x0257, 0x0260, 0x0266, 0x0270, 0x0277, 0x027c, 0x0290, 0x0290, - 0x0295, 0x029d, 0x02a6, 0x02ac, 0x02b0, 0x02b9, 0x02c2, 0x02c9, - 0x02c9, 0x02d2, 0x02d6, 0x02df, 0x02e5, 0x02e5, 0x02e5, 0x02ef, - 0x02f7, 0x02fc, 0x0304, 0x0304, 0x030e, 0x0316, 0x031e, 0x031e, - 0x0323, 0x034a, 0x034f, 0x0355, 0x035e, 0x0364, 0x0364, 0x036b, - 0x0372, 0x0378, 0x037d, 0x038b, 0x0393, 0x039b, 0x03a1, 0x03b7, - // Entry 80 - BF - 0x03c7, 0x03d4, 0x03db, 0x03ed, 0x03f9, 0x03ff, 0x0407, 0x0413, - 0x041d, 0x0427, 0x042e, 0x0435, 0x043d, 0x0447, 0x044e, 0x0453, - 0x0459, 0x045f, 0x0466, 0x0466, 0x0466, 0x046c, 0x047f, 0x0489, - 0x048d, 0x0492, 0x049a, 0x049a, 0x04bc, 0x04c5, 0x04ce, 0x04da, - 0x04df, 0x04e6, 0x04ec, 0x04f2, 0x04fa, 0x0502, 0x050b, 0x0512, - 0x051e, 0x0524, 0x0536, 0x053d, 0x0546, 0x054f, 0x0554, 0x055a, - 0x055f, 0x0563, 0x056e, 0x0573, 0x0579, 0x057d, 0x0593, 0x0598, - 0x05a0, 0x05aa, 0x05b1, 0x05c8, 0x05d1, 0x05da, 0x05e3, 0x05e8, - // Entry C0 - FF - 0x05ed, 0x05f5, 0x05fb, 0x05fb, 0x0604, 0x060b, 0x060b, 0x0611, - 0x0617, 0x061d, 0x0631, 0x063b, 0x0642, 0x0649, 0x0652, 0x065e, - 0x0667, 0x0667, 0x0670, 0x067c, 0x0685, 0x068e, 0x0696, 0x069f, - 0x069f, 0x06b4, 0x06bc, 0x06bc, 0x06c2, 0x06ca, 0x06ca, 0x06e4, - 0x06e9, 0x06e9, 0x06ed, 0x06f5, 0x0701, 0x0708, 0x071b, 0x072b, - 0x0733, 0x0738, 0x073f, 0x0751, 0x0757, 0x075e, 0x0766, 0x0766, - 0x076c, 0x076c, 0x076c, 0x0774, 0x077b, 0x0789, 0x0791, 0x07ac, - 0x07b5, 0x07d6, 0x07f5, 0x07fe, 0x0805, 0x0815, 0x081b, 0x081b, - // Entry 100 - 13F - 0x0821, 0x0828, 0x0836, 0x083d, 0x0846, - }, - }, - { // ast - "Islla AscensiónAndorraEmiratos Árabes XuníosAfganistánAntigua y BarbudaA" + - "nguilaAlbaniaArmeniaAngolaL’AntártidaArxentinaSamoa AmericanaAustria" + - "AustraliaArubaIslles AlandAzerbaixánBosnia y HerzegovinaBarbadosBang" + - "ladexBélxicaBurkina FasuBulgariaBaḥréinBurundiBenínSan BartoloméLes " + - "BermudesBrunéiBoliviaCaribe neerlandésBrasilLes BahamesButánIslla Bo" + - "uvetBotsuanaBielorrusiaBelizeCanadáIslles Cocos (Keeling)Congu - Kin" + - "xasaRepública CentroafricanaCongu - BrazzavilleSuizaCosta de MarfilI" + - "slles CookChileCamerúnChinaColombiaIslla ClippertonCosta RicaCubaCab" + - "u VerdeCuraçaoIslla ChristmasXipreChequiaAlemañaDiego GarciaXibutiDi" + - "namarcaDominicaRepública DominicanaArxeliaCeuta y MelillaEcuadorEsto" + - "niaExiptuSáḥara OccidentalEritreaEspañaEtiopíaXunión EuropeaEurozona" + - "FinlandiaIslles FixiFalkland IslandsMicronesiaIslles FeroeFranciaGab" + - "ónReinu XuníuGranadaXeorxaGuyana FrancesaGuernseyGhanaXibraltarGroe" + - "nlandiaGambiaGuineaGuadalupeGuinea EcuatorialGreciaIslles Xeorxa del" + - " Sur y Sandwich del SurGuatemalaGuamGuinea-BisáuGuyanaARE China de Ḥ" + - "ong KongIslles Heard y McDonaldHonduresCroaciaHaitíHungríaIslles Can" + - "ariesIndonesiaIrlandaIsraelIslla de ManIndiaTerritoriu Británicu del" + - " Océanu ÍndicuIraqIránIslandiaItaliaJerseyXamaicaXordaniaXapónKeniaK" + - "irguistánCamboyaKiribatiLes ComoresSaint Kitts y NevisCorea del Nort" + - "eCorea del SurKuwaitIslles CaimánKazakstánLaosLíbanuSanta LlucíaLiec" + - "htensteinSri LankaLiberiaLesothuLituaniaLuxemburguLetoniaLibiaMarrue" + - "cosMónacuMoldaviaMontenegruSaint MartinMadagascarIslles MarshallMace" + - "doniaMalíMyanmar (Birmania)MongoliaARE China de MacáuIslles Marianes" + - " del NorteLa MartinicaMauritaniaMontserratMaltaMauriciuLes MaldivesM" + - "alauiMéxicuMalasiaMozambiqueNamibiaNueva CaledoniaEl NíxerIslla Norf" + - "olkNixeriaNicaraguaPaíses BaxosNoruegaNepalNauruNiueNueva ZelandaOmá" + - "nPanamáPerúPolinesia FrancesaPapúa Nueva GuineaFilipinesPaquistánPol" + - "oniaSaint Pierre y MiquelonIslles PitcairnPuertu RicuTerritorios Pal" + - "estinosPortugalPaláuParaguáiQatarOceanía esteriorReuniónRumaníaSerbi" + - "aRusiaRuandaArabia SauditaIslles SalomónLes SeixelesSudánSueciaSinga" + - "purSanta HelenaEsloveniaSvalbard ya Islla Jan MayenEslovaquiaSierra " + - "LleonaSan MarínSenegalSomaliaSurinamSudán del SurSantu Tomé y Prínci" + - "peEl SalvadorSint MaartenSiriaSuazilandiaTristán da CunhaIslles Turq" + - "ues y CaicosChadTierres Australes FrancesesToguTailandiaTaxiquistánT" + - "okeláuTimor OrientalTurkmenistánTuniciaTongaTurquíaTrinidá y TobaguT" + - "uvaluTaiwánTanzaniaUcraínaUgandaIslles Perifériques Menores de los E" + - "E.XX.Naciones XuníesEstaos XuníosUruguáiUzbequistánCiudá del Vatican" + - "uSan Vicente y GranadinesVenezuelaIslles Vírxenes BritániquesIslles " + - "Vírxenes AmericanesVietnamVanuatuWallis y FutunaSamoaKosovuYemenMayo" + - "tteSudáfricaZambiaZimbabueRexón desconocidaMunduÁfricaNorteaméricaAm" + - "érica del SurOceaníaÁfrica OccidentalAmérica CentralÁfrica Oriental" + - "África del NorteÁfrica CentralÁfrica del SurAméricaAmérica del Nort" + - "eCaribeAsia OrientalAsia del SurSureste AsiáticuEuropa del SurAustra" + - "lasiaMelanesiaRexón de MicronesiaPolinesiaAsiaAsia CentralAsia Occid" + - "entalEuropaEuropa OrientalEuropa del NorteEuropa OccidentalAmérica L" + - "latina", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x002f, 0x003a, 0x004b, 0x0052, 0x0059, - 0x0060, 0x0066, 0x0074, 0x007d, 0x008c, 0x0093, 0x009c, 0x00a1, - 0x00ad, 0x00b8, 0x00cc, 0x00d4, 0x00dd, 0x00e5, 0x00f1, 0x00f9, - 0x0103, 0x010a, 0x0110, 0x011e, 0x012a, 0x0131, 0x0138, 0x014a, - 0x0150, 0x015b, 0x0161, 0x016d, 0x0175, 0x0180, 0x0186, 0x018d, - 0x01a3, 0x01b2, 0x01cb, 0x01de, 0x01e3, 0x01f2, 0x01fd, 0x0202, - 0x020a, 0x020f, 0x0217, 0x0227, 0x0231, 0x0235, 0x023f, 0x0247, - 0x0256, 0x025b, 0x0262, 0x026a, 0x0276, 0x027c, 0x0285, 0x028d, - // Entry 40 - 7F - 0x02a2, 0x02a9, 0x02b8, 0x02bf, 0x02c6, 0x02cc, 0x02e0, 0x02e7, - 0x02ee, 0x02f6, 0x0305, 0x030d, 0x0316, 0x0321, 0x0331, 0x033b, - 0x0347, 0x034e, 0x0354, 0x0360, 0x0367, 0x036d, 0x037c, 0x0384, - 0x0389, 0x0392, 0x039d, 0x03a3, 0x03a9, 0x03b2, 0x03c3, 0x03c9, - 0x03f1, 0x03fa, 0x03fe, 0x040b, 0x0411, 0x0429, 0x0440, 0x0448, - 0x044f, 0x0455, 0x045d, 0x046c, 0x0475, 0x047c, 0x0482, 0x048e, - 0x0493, 0x04bc, 0x04c0, 0x04c5, 0x04cd, 0x04d3, 0x04d9, 0x04e0, - 0x04e8, 0x04ee, 0x04f3, 0x04fe, 0x0505, 0x050d, 0x0518, 0x052b, - // Entry 80 - BF - 0x053a, 0x0547, 0x054d, 0x055b, 0x0565, 0x0569, 0x0570, 0x057d, - 0x058a, 0x0593, 0x059a, 0x05a1, 0x05a9, 0x05b3, 0x05ba, 0x05bf, - 0x05c8, 0x05cf, 0x05d7, 0x05e1, 0x05ed, 0x05f7, 0x0606, 0x060f, - 0x0614, 0x0626, 0x062e, 0x0641, 0x065a, 0x0666, 0x0670, 0x067a, - 0x067f, 0x0687, 0x0693, 0x0699, 0x06a0, 0x06a7, 0x06b1, 0x06b8, - 0x06c7, 0x06d0, 0x06dd, 0x06e4, 0x06ed, 0x06fa, 0x0701, 0x0706, - 0x070b, 0x070f, 0x071c, 0x0721, 0x0728, 0x072d, 0x073f, 0x0752, - 0x075b, 0x0765, 0x076c, 0x0783, 0x0792, 0x079d, 0x07b3, 0x07bb, - // Entry C0 - FF - 0x07c1, 0x07ca, 0x07cf, 0x07e0, 0x07e8, 0x07f0, 0x07f6, 0x07fb, - 0x0801, 0x080f, 0x081e, 0x082a, 0x0830, 0x0836, 0x083e, 0x084a, - 0x0853, 0x086e, 0x0878, 0x0885, 0x088f, 0x0896, 0x089d, 0x08a4, - 0x08b2, 0x08c9, 0x08d4, 0x08e0, 0x08e5, 0x08f0, 0x0901, 0x0918, - 0x091c, 0x0937, 0x093b, 0x0944, 0x0950, 0x0958, 0x0966, 0x0973, - 0x097a, 0x097f, 0x0987, 0x0998, 0x099e, 0x09a5, 0x09ad, 0x09b5, - 0x09bb, 0x09e5, 0x09f5, 0x0a03, 0x0a0b, 0x0a17, 0x0a2a, 0x0a42, - 0x0a4b, 0x0a68, 0x0a83, 0x0a8a, 0x0a91, 0x0aa0, 0x0aa5, 0x0aab, - // Entry 100 - 13F - 0x0ab0, 0x0ab7, 0x0ac1, 0x0ac7, 0x0acf, 0x0ae1, 0x0ae6, 0x0aed, - 0x0afa, 0x0b0a, 0x0b12, 0x0b24, 0x0b34, 0x0b44, 0x0b55, 0x0b64, - 0x0b73, 0x0b7b, 0x0b8d, 0x0b93, 0x0ba0, 0x0bac, 0x0bbd, 0x0bcb, - 0x0bd6, 0x0bdf, 0x0bf3, 0x0bfc, 0x0c00, 0x0c0c, 0x0c1b, 0x0c21, - 0x0c30, 0x0c40, 0x0c51, 0x0c51, 0x0c61, - }, - }, - { // az - azRegionStr, - azRegionIdx, - }, - { // az-Cyrl - "Аскенсон адасыАндорраБирләшмиш Әрәб ӘмирликләриӘфганыстанАнтигуа вә Барб" + - "удаАнҝилјаАлбанијаЕрмәнистанАнголаАнтарктикаАрҝентинаАмерика Самоас" + - "ыАвстријаАвстралијаАрубаАланд адаларыАзәрбајҹанБоснија вә Һерсегови" + - "наБарбадосБангладешБелчикаБуркина ФасоБолгарыстанБәһрејнБурундиБени" + - "нСент-БартелемиБермуд адаларыБрунејБоливијаБразилијаБаһам адаларыБу" + - "танБуве адасыБотсванаБеларусБелизКанадаКокос (Килинг) адаларыКонго-" + - "КиншасаМәркәзи Африка РеспубликасыКонго-БраззавилИсвечрәKотд’ивуарК" + - "ук адаларыЧилиКамерунЧинКолумбијаКлиппертон адасыКоста РикаКубаКабо" + - "-ВердеКурасаоМилад адасыКипрЧехијаАлманијаДиего ГарсијаҸибутиДанимар" + - "каДоминикаДоминикан РеспубликасыӘлҹәзаирСеута вә МелилјаЕквадорЕсто" + - "нијаМисирЕритрејаИспанијаЕфиопијаАвропа БирлијиФинландијаФиҹиФолкле" + - "нд адаларыМикронезијаФарер адаларыФрансаГабонБирләшмиш КраллыгГрена" + - "даҜүрҹүстанФранса ГвианасыҜернсиГанаҸәбәллүтаригГренландијаГамбијаГ" + - "винејаГваделупаЕкваториал ГвинејаЈунаныстанҸәнуби Ҹорҹија вә Ҹәнуби" + - " Сендвич адаларыГватемалаГуамГвинеја-БисауГајанаҺонк Конг Хүсуси Инз" + - "ибати Әрази ЧинҺерд вә Макдоналд адаларыҺондурасХорватијаҺаитиМаҹар" + - "ыстанКанар адаларыИндонезијаИрландијаИсраилМен адасыҺиндистанБритан" + - "тјанын Һинд Океаны ӘразисиИрагИранИсландијаИталијаҸерсиЈамајкаИорда" + - "нијаЈапонијаКенијаГырғызыстанКамбоҹаКирибатиКомор адаларыСент-Китс " + - "вә НевисШимали КорејаҸәнуби КорејаКүвејтКајман адаларыГазахыстанЛао" + - "сЛиванСент-ЛусијаЛихтенштејнШри-ЛанкаЛиберијаЛесотоЛитваЛүксембургЛ" + - "атвијаЛивијаМәракешМонакоМолдоваМонтенегроСент МартинМадагаскарМарш" + - "ал адаларыМалиМјанмаМонголустанМакао Хүсуси Инзибати Әрази ЧинШимал" + - "и Мариан адаларыМартиникМавританијаМонсератМалтаМаврикиМалдив адала" + - "рыМалавиМексикаМалајзијаМозамбикНамибијаЈени КаледонијаНиҝерНорфолк" + - " адасыНиҝеријаНикарагуаНидерландНорвечНепалНауруНиуеЈени ЗеландијаОм" + - "анПанамаПеруФранса ПолинезијасыПапуа-Јени ГвинејаФилиппинПакистанПо" + - "лшаМүгәддәс Пјер вә МикелонПиткерн адаларыПуерто РикоПортугалијаПал" + - "ауПарагвајГәтәрУзаг ОкеанијаРејунјонРумынијаСербијаРусијаРуандаСәуд" + - "ијјә ӘрәбистаныСоломон адаларыСејшел адаларыСуданИсвечСингапурМүгәд" + - "дәс ЈеленаСловенијаСвалбард вә Јан-МајенСловакијаСјерра-ЛеонеСан-Ма" + - "риноСенегалСомалиСуринамҸәнуби СуданСан-Томе вә ПринсипиСалвадорСин" + - "т-МартенСуријаСвазилендТристан да КунјаТөркс вә Кајкос адаларыЧадФр" + - "ансанын Ҹәнуб ӘразиләриТогоТаиландТаҹикистанТокелауШәрги ТиморТүркм" + - "әнистанТунисТонгаТүркијәТринидад вә ТобагоТувалуТајванТанзанијаУкра" + - "јнаУгандаАБШ-а бағлы кичик адаҹыгларАмерика Бирләшмиш ШтатларыУругв" + - "ајӨзбәкистанВатиканСент-Винсент вә ГренадинләрВенесуелаБританијанын" + - " Вирҝин адаларыАБШ Вирҝин адаларыВјетнамВануатуУоллис вә ФутунаСамоа" + - "КосовоЈәмәнМајотҸәнуб АфрикаЗамбијаЗимбабвеНамәлум РеҝионДүнјаАфрик" + - "аШимали АмерикаҸәнуби АмерикаОкеанијаГәрби АфрикаМәркәзи АмерикаШәр" + - "ги АфрикаШимали АфрикаМәркәзи АфрикаҸәнуби АфрикаАмерикаШимал Амери" + - "касыКарибШәрги АсијаҸәнуби АсијаҸәнуб-Шәрги АсијаҸәнуби АвропаАвстр" + - "алазијаМеланезијаМикронезија РеҝионуПолинезијаАсијаМәркәзи АсијаГәр" + - "би АсијаАвропаШәрги АвропаШимали АвропаГәрби АвропаЛатын Америкасы", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001b, 0x0029, 0x005b, 0x006f, 0x0091, 0x009f, 0x00af, - 0x00c3, 0x00cf, 0x00e3, 0x00f5, 0x0112, 0x0122, 0x0136, 0x0140, - 0x0159, 0x016d, 0x0197, 0x01a7, 0x01b9, 0x01c7, 0x01de, 0x01f4, - 0x0202, 0x0210, 0x021a, 0x0235, 0x0250, 0x025c, 0x026c, 0x026c, - 0x027e, 0x0297, 0x02a1, 0x02b4, 0x02c4, 0x02d2, 0x02dc, 0x02e8, - 0x0310, 0x0329, 0x035d, 0x037a, 0x0388, 0x039c, 0x03b1, 0x03b9, - 0x03c7, 0x03cd, 0x03df, 0x03fe, 0x0411, 0x0419, 0x042c, 0x043a, - 0x044f, 0x0457, 0x0463, 0x0473, 0x048c, 0x0498, 0x04aa, 0x04ba, - // Entry 40 - 7F - 0x04e5, 0x04f5, 0x0513, 0x0521, 0x0531, 0x053b, 0x053b, 0x054b, - 0x055b, 0x056b, 0x0586, 0x0586, 0x059a, 0x05a2, 0x05c1, 0x05d7, - 0x05f0, 0x05fc, 0x0606, 0x0627, 0x0635, 0x0647, 0x0664, 0x0670, - 0x0678, 0x0690, 0x06a6, 0x06b4, 0x06c2, 0x06d4, 0x06f7, 0x070b, - 0x0756, 0x0768, 0x0770, 0x0789, 0x0795, 0x07d6, 0x0805, 0x0815, - 0x0827, 0x0831, 0x0845, 0x085e, 0x0872, 0x0884, 0x0890, 0x08a1, - 0x08b3, 0x08f0, 0x08f8, 0x0900, 0x0912, 0x0920, 0x092a, 0x0938, - 0x094a, 0x095a, 0x0966, 0x097c, 0x098a, 0x099a, 0x09b3, 0x09d4, - // Entry 80 - BF - 0x09ed, 0x0a06, 0x0a12, 0x0a2d, 0x0a41, 0x0a49, 0x0a53, 0x0a68, - 0x0a7e, 0x0a8f, 0x0a9f, 0x0aab, 0x0ab5, 0x0ac9, 0x0ad7, 0x0ae3, - 0x0af1, 0x0afd, 0x0b0b, 0x0b1f, 0x0b34, 0x0b48, 0x0b63, 0x0b63, - 0x0b6b, 0x0b77, 0x0b8d, 0x0bc7, 0x0bef, 0x0bff, 0x0c15, 0x0c25, - 0x0c2f, 0x0c3d, 0x0c58, 0x0c64, 0x0c72, 0x0c84, 0x0c94, 0x0ca4, - 0x0cc1, 0x0ccb, 0x0ce4, 0x0cf4, 0x0d06, 0x0d18, 0x0d24, 0x0d2e, - 0x0d38, 0x0d40, 0x0d5b, 0x0d63, 0x0d6f, 0x0d77, 0x0d9c, 0x0dbe, - 0x0dce, 0x0dde, 0x0de8, 0x0e15, 0x0e32, 0x0e47, 0x0e47, 0x0e5d, - // Entry C0 - FF - 0x0e67, 0x0e77, 0x0e81, 0x0e9a, 0x0eaa, 0x0eba, 0x0ec8, 0x0ed4, - 0x0ee0, 0x0f05, 0x0f22, 0x0f3d, 0x0f47, 0x0f51, 0x0f61, 0x0f7e, - 0x0f90, 0x0fb7, 0x0fc9, 0x0fe0, 0x0ff3, 0x1001, 0x100d, 0x101b, - 0x1032, 0x1057, 0x1067, 0x107c, 0x1088, 0x109a, 0x10b8, 0x10e3, - 0x10e9, 0x1119, 0x1121, 0x112f, 0x1143, 0x1151, 0x1166, 0x117e, - 0x1188, 0x1192, 0x11a0, 0x11c2, 0x11ce, 0x11da, 0x11ec, 0x11fa, - 0x1206, 0x1238, 0x1238, 0x126a, 0x1278, 0x128c, 0x129a, 0x12cd, - 0x12df, 0x1313, 0x1335, 0x1343, 0x1351, 0x136f, 0x1379, 0x1385, - // Entry 100 - 13F - 0x138f, 0x1399, 0x13b0, 0x13be, 0x13ce, 0x13e9, 0x13f3, 0x13ff, - 0x141a, 0x1435, 0x1445, 0x145c, 0x1479, 0x1490, 0x14a9, 0x14c4, - 0x14dd, 0x14eb, 0x1508, 0x1512, 0x1527, 0x153e, 0x155e, 0x1577, - 0x158f, 0x15a3, 0x15c8, 0x15dc, 0x15e6, 0x15ff, 0x1614, 0x1620, - 0x1637, 0x1650, 0x1667, 0x1667, 0x1684, - }, - }, - { // bas - "Àŋdɔ̂rÀdnà i Bilɔ̀ŋ bi ArābìàÀfgànìstâŋÀŋtigà ɓɔ BàrbudàÀŋgiyàÀlbanìàÀrm" + - "enìàÀŋgolàÀrgàŋtinàÒstrǐkÒstralìàÀrubàÀzɛ̀rbajàŋBòhnià ƐrzègòvinàBàr" + - "badòBàŋglàdɛ̂sBɛlgyùmBùrkìnà FasòBùlgarìàBàraìnBùrundìBènɛ̂ŋBɛ̀rmudà" + - "BruneiBòlivìàBràsîlBàhamàsBùtânBòdsùanàBèlarùsBèlîsKànadàKòŋgo ìkɛŋi" + - "Ŋ̀ɛm AfrīkàKòŋgoSùwîsMàŋ mi Njɔ̂kBìòn bi KookKìlîKàmɛ̀rûnKinàKɔ̀lɔm" + - "bìàKòstà RikàKubàKabwɛ᷆rKipròJamânJìbutìDànmârkDòmnîkDòmnikàÀlgerìàÈ" + - "kwàtorìàÈstonìàÈgîptòÈrìtrěàPànyaÈtìopìàFìnlândFijiBìòn bi FalklandM" + - "ìkrònesìàPùlàsi / Fɛ̀lɛ̀nsi /Gàbɔ̂ŋÀdnà i Lɔ̂ŋGrènadàGèɔrgìàGùyanà " + - "PùlàsiGanàGìlbràtârGrǐnlàndGàmbiàGìnêGwàdèlûpGìne ÈkwàtorìàGrǐkyàGwà" + - "tèmalàGùâmGìne BìsàôGùyanàƆ̀ŋduràsKròasìàÀitìƆ̀ŋgriìIndònèsiàÌrlândI" + - "sràɛ̂lIndìàBìtèk bi Ŋgisì i Tūyɛ ĪndìàÌrâkÌrâŋÌslandìàÌtalìàJàmàikàY" + - "ɔ̀rdaniàKenìàKìrgìzìstàŋKàmbodìàKìrìbatìKɔ̀mɔ̂rNûmpubi Kîts nì Nevì" + - "sKɔ̀re ì Ŋ̀ɔmbɔkKɔ̀re ì Ŋ̀wɛ̀lmbɔkKòwêtBìòn bi KaymànKàzàkstâŋLàôsLè" + - "banònNûmpubi LusìLigstɛntànSrìlaŋkàLìberìàLesòtòLìtùanìàLùgsàmbûrLàd" + - "viàLibìàMàrokòMònakòMoldavìàMàdàgàskârBìòn bi MarcàlMàsèdonìàMàliMyà" + - "nmârMòŋgolìàBìòn bi Marìanà ŋ̀ɔmbɔkMàrtìnîkMòrìtanìàMɔ̀ŋseràtMaltàMò" + - "rîsMàldîfMàlàwiMɛ̀gsîkMàlɛ̀sìàMòsàmbîkNàmibìàKàlèdonìà Yɔ̀ndɔNìjɛ̂rÒ" + - "n i Nɔrfɔ̂kNìgerìàNìkàragwàǸlɛndiNɔ̀rvegìàNèpâlNerùNìuɛ̀Sìlând Yɔ̀nd" + - "ɔÒmânPànàmaPèrûPòlìnesìà PùlàsiGìne ì PàpuFìlìpînPàkìstânPòlàndNûmp" + - "ubi Petrò nì MikèlônPìdkaìrnPɔ̀rtò RikòPàlɛ̀htinà Hyɔ̀ŋg nì GazàPɔ̀t" + - "ɔkìPàlaùPàràgwêKàtârRèunyɔ̂ŋRùmanìàRuslàndRùandàSàudi ÀrabìàBìòn bi" + - " SalōmòSèsɛ̂lSùdâŋSwedɛ̀nSìŋgàpûrNûmpubi ƐlēnàSlòvanìàSlòvakìàSièra " + - "Lèɔ̂nNûmpubi MāatìnSènègâlSòmalìàSùrinâmSào Tòme ɓɔ Prɛ̀ŋcipèSàlvàdɔ" + - "̂rSirìàSwàzìlândBìòn bi Tûrks nì KalkòsCâdTògoTaylàndTàjìkìstaŋTòkè" + - "laòTìmɔ̂r lìkòlTùrgmènìstânTùnisìàTɔŋgàTùrkâyTrìnidàd ɓɔ TòbagòTùvàl" + - "ùTàywânTànzàniàÙkrɛ̌nÙgandàÀdnà i Bilɔ̀ŋ bi AmerkàÙrùgwêyÙzbèkìstân" + - "VàtìkâŋNûmpubi Vɛ̂ŋsâŋ nì grènàdînVènèzùelàBìòn bi kɔnji bi ŊgisìBìò" + - "n bi kɔnji bi U.S.Vìɛ̀dnâmVànùatùWàlîs nì FùtunàSàmoàYèmɛ̂nMàyɔ̂tÀfr" + - "ǐkà Sɔ̀ZàmbiàZìmbàbwê", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000a, 0x0029, 0x0038, 0x0050, 0x0059, 0x0063, - 0x006d, 0x0076, 0x0076, 0x0083, 0x0083, 0x008b, 0x0096, 0x009d, - 0x009d, 0x00ac, 0x00c3, 0x00cc, 0x00db, 0x00e4, 0x00f4, 0x00ff, - 0x0107, 0x0110, 0x011a, 0x011a, 0x0125, 0x012b, 0x0135, 0x0135, - 0x013d, 0x0146, 0x014d, 0x014d, 0x0158, 0x0161, 0x0168, 0x0170, - 0x0170, 0x0180, 0x0190, 0x0197, 0x019e, 0x01ae, 0x01bc, 0x01c2, - 0x01ce, 0x01d3, 0x01e1, 0x01e1, 0x01ee, 0x01f3, 0x01fd, 0x01fd, - 0x01fd, 0x0203, 0x0203, 0x0209, 0x0209, 0x0211, 0x021a, 0x0222, - // Entry 40 - 7F - 0x022b, 0x0235, 0x0235, 0x0242, 0x024c, 0x0255, 0x0255, 0x0260, - 0x0266, 0x0271, 0x0271, 0x0271, 0x027a, 0x027e, 0x0290, 0x029e, - 0x029e, 0x02b8, 0x02c2, 0x02d2, 0x02db, 0x02e6, 0x02f7, 0x02f7, - 0x02fc, 0x0308, 0x0312, 0x031a, 0x0320, 0x032b, 0x033e, 0x0346, - 0x0346, 0x0352, 0x0358, 0x0366, 0x036e, 0x036e, 0x036e, 0x037a, - 0x0384, 0x038a, 0x0395, 0x0395, 0x03a1, 0x03a9, 0x03b3, 0x03b3, - 0x03ba, 0x03de, 0x03e4, 0x03eb, 0x03f6, 0x03ff, 0x03ff, 0x0409, - 0x0415, 0x0415, 0x041c, 0x042c, 0x0437, 0x0442, 0x044d, 0x0466, - // Entry 80 - BF - 0x047c, 0x0496, 0x049d, 0x04ae, 0x04bb, 0x04c1, 0x04ca, 0x04d8, - 0x04e4, 0x04ef, 0x04f9, 0x0501, 0x050d, 0x0519, 0x0521, 0x0528, - 0x0530, 0x0538, 0x0542, 0x0542, 0x0542, 0x0550, 0x0561, 0x056e, - 0x0573, 0x057c, 0x0588, 0x0588, 0x05a7, 0x05b2, 0x05bf, 0x05cc, - 0x05d2, 0x05d9, 0x05e1, 0x05e9, 0x05f3, 0x0600, 0x060b, 0x0615, - 0x062c, 0x0635, 0x0645, 0x064f, 0x065b, 0x0663, 0x0670, 0x0677, - 0x067c, 0x0684, 0x0696, 0x069c, 0x06a4, 0x06aa, 0x06c0, 0x06ce, - 0x06d8, 0x06e3, 0x06eb, 0x0708, 0x0712, 0x0721, 0x0743, 0x074e, - // Entry C0 - FF - 0x0755, 0x075f, 0x0766, 0x0766, 0x0772, 0x077c, 0x077c, 0x0784, - 0x078c, 0x079c, 0x07ae, 0x07b7, 0x07bf, 0x07c8, 0x07d4, 0x07e5, - 0x07f0, 0x07f0, 0x07fb, 0x080a, 0x081b, 0x0825, 0x082f, 0x0838, - 0x0838, 0x0855, 0x0862, 0x0862, 0x0869, 0x0875, 0x0875, 0x0891, - 0x0895, 0x0895, 0x089a, 0x08a2, 0x08b0, 0x08ba, 0x08cb, 0x08db, - 0x08e5, 0x08ed, 0x08f5, 0x090d, 0x0916, 0x091e, 0x0929, 0x0932, - 0x093a, 0x093a, 0x093a, 0x0957, 0x0961, 0x096f, 0x097a, 0x099f, - 0x09ac, 0x09c7, 0x09df, 0x09eb, 0x09f5, 0x0a09, 0x0a10, 0x0a10, - // Entry 100 - 13F - 0x0a19, 0x0a22, 0x0a31, 0x0a39, 0x0a44, - }, - }, - { // be - "Востраў УзнясенняАндораАб’яднаныя Арабскія ЭміратыАфганістанАнтыгуа і Ба" + - "рбудаАнгільяАлбаніяАрменіяАнголаАнтарктыкаАргенцінаАмерыканскае Сам" + - "оаАўстрыяАўстраліяАрубаАландскія астравыАзербайджанБоснія і Герцага" + - "вінаБарбадасБангладэшБельгіяБуркіна-ФасоБалгарыяБахрэйнБурундзіБені" + - "нСен-БартэльміБермудскія астравыБрунейБалівіяКарыбскія НідэрландыБр" + - "азіліяБагамскія астравыБутанВостраў БувэБатсванаБеларусьБелізКанада" + - "Какосавыя (Кілінг) астравыКонга (Кіншаса)Цэнтральна-Афрыканская Рэс" + - "публікаКонга - БразавільШвейцарыяКот-д’ІвуарАстравы КукаЧыліКамерун" + - "КітайКалумбіяВостраў КліпертонКоста-РыкаКубаКаба-ВердэКюрасааВостра" + - "ў КалядКіпрЧэхіяГерманіяВостраў Дыега-ГарсіяДжыбуціДаніяДамінікаДам" + - "ініканская РэспублікаАлжырСеўта і МелільяЭквадорЭстоніяЕгіпетЗаходн" + - "яя СахараЭрытрэяІспаніяЭфіопіяЕўрапейскі саюзЕўразонаФінляндыяФіджы" + - "Фалклендскія астравыМікранезіяФарэрскія астравыФранцыяГабонВялікабр" + - "ытаніяГрэнадаГрузіяФранцузская ГвіянаГернсіГанаГібралтарГрэнландыяГ" + - "амбіяГвінеяГвадэлупаЭкватарыяльная ГвінеяГрэцыяПаўднёвая Джорджыя і" + - " Паўднёвыя Сандвічавы астравыГватэмалаГуамГвінея-БісауГаянаГанконг, " + - "САР (Кітай)Астравы Херд і МакдональдГандурасХарватыяГаіціВенгрыяКан" + - "арскія астравыІнданезіяІрландыяІзраільВостраў МэнІндыяБрытанская тэ" + - "рыторыя ў Індыйскім акіянеІракІранІсландыяІталіяДжэрсіЯмайкаІардані" + - "яЯпоніяКеніяКыргызстанКамбоджаКірыбаціКаморскія астравыСент-Кітс і " + - "НевісПаўночная КарэяПаўднёвая КарэяКувейтКайманавы астравыКазахстан" + - "ЛаосЛіванСент-ЛюсіяЛіхтэнштэйнШры-ЛанкаЛіберыяЛесотаЛітваЛюксембург" + - "ЛатвіяЛівіяМарокаМанакаМалдоваЧарнагорыяСен-МартэнМадагаскарМаршала" + - "вы астравыМакедоніяМаліМ’янма (Бірма)МанголіяМакаа, САР (Кітай)Паўн" + - "очныя Марыянскія астравыМарцінікаМаўрытаніяМантсератМальтаМаўрыкійМ" + - "альдывыМалавіМексікаМалайзіяМазамбікНамібіяНовая КаледоніяНігерВост" + - "раў НорфалкНігерыяНікарагуаНідэрландыНарвегіяНепалНауруНіуэНовая Зе" + - "ландыяАманПанамаПеруФранцузская ПалінезіяПапуа-Новая ГвінеяФіліпіны" + - "ПакістанПольшчаСен-П’ер і МікелонАстравы ПіткэрнПуэрта-РыкаПалесцін" + - "скія ТэрыторыіПартугаліяПалауПарагвайКатарЗнешняя АкіяніяРэюньёнРум" + - "ыніяСербіяРасіяРуандаСаудаўская АравіяСаламонавы астравыСейшэльскія" + - " астравыСуданШвецыяСінгапурВостраў Святой АленыСлавеніяШпіцберген і " + - "Ян-МаенСлавакіяСьера-ЛеонэСан-МарынаСенегалСамаліСурынамПаўднёвы Су" + - "данСан-Тамэ і ПрынсіпіСальвадорСінт-МартэнСірыяСвазілендТрыстан-да-" + - "КуньяАстравы Цёркс і КайкасЧадФранцузскія паўднёвыя тэрыторыіТогаТа" + - "йландТаджыкістанТакелауТымор-ЛешціТуркменістанТунісТонгаТурцыяТрыні" + - "дад і ТабагаТувалуТайваньТанзаніяУкраінаУгандаМалыя Аддаленыя астра" + - "вы ЗШАААНЗлучаныя Штаты АмерыкіУругвайУзбекістанВатыканСент-Вінсент" + - " і ГрэнадзіныВенесуэлаБрытанскія Віргінскія астравыАмерыканскія Вірг" + - "інскія астравыВ’етнамВануатуУоліс і ФутунаСамоаКосаваЕменМаётаПаўдн" + - "ёва-Афрыканская РэспублікаЗамбіяЗімбабвэНевядомы рэгіёнСветАфрыкаПа" + - "ўночная АмерыкаПаўднёвая АмерыкаАкіяніяЗаходняя АфрыкаЦэнтральная А" + - "мерыкаУсходняя АфрыкаПаўночная АфрыкаЦэнтральная АфрыкаПаўднёвая Аф" + - "рыкаПаўночная і Паўднёвая АмерыкіПаўночнаамерыканскі рэгіёнКарыбскі" + - "я астравыУсходняя АзіяПаўднёвая АзіяПаўднёва-Усходняя АзіяПаўднёвая" + - " ЕўропаАўстралазіяМеланезіяМікранезійскі рэгіёнПалінезіяАзіяЦэнтраль" + - "ная АзіяЗаходняя АзіяЕўропаУсходняя ЕўропаПаўночная ЕўропаЗаходняя " + - "ЕўропаЛацінская Амерыка", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0021, 0x002d, 0x0062, 0x0076, 0x0096, 0x00a4, 0x00b2, - 0x00c0, 0x00cc, 0x00e0, 0x00f2, 0x0115, 0x0123, 0x0135, 0x013f, - 0x0160, 0x0176, 0x019c, 0x01ac, 0x01be, 0x01cc, 0x01e3, 0x01f3, - 0x0201, 0x0211, 0x021b, 0x0234, 0x0257, 0x0263, 0x0271, 0x0298, - 0x02a8, 0x02c9, 0x02d3, 0x02ea, 0x02fa, 0x030a, 0x0314, 0x0320, - 0x0350, 0x036b, 0x03ab, 0x03ca, 0x03dc, 0x03f2, 0x0409, 0x0411, - 0x041f, 0x0429, 0x0439, 0x045a, 0x046d, 0x0475, 0x0488, 0x0496, - 0x04af, 0x04b7, 0x04c1, 0x04d1, 0x04f7, 0x0505, 0x050f, 0x051f, - // Entry 40 - 7F - 0x054e, 0x0558, 0x0574, 0x0582, 0x0590, 0x059c, 0x05b9, 0x05c7, - 0x05d5, 0x05e3, 0x0600, 0x0610, 0x0622, 0x062c, 0x0653, 0x0667, - 0x0688, 0x0696, 0x06a0, 0x06bc, 0x06ca, 0x06d6, 0x06f9, 0x0705, - 0x070d, 0x071f, 0x0733, 0x073f, 0x074b, 0x075d, 0x0786, 0x0792, - 0x07ef, 0x0801, 0x0809, 0x0820, 0x082a, 0x084d, 0x087c, 0x088c, - 0x089c, 0x08a6, 0x08b4, 0x08d5, 0x08e7, 0x08f7, 0x0905, 0x091a, - 0x0924, 0x096e, 0x0976, 0x097e, 0x098e, 0x099a, 0x09a6, 0x09b2, - 0x09c2, 0x09ce, 0x09d8, 0x09ec, 0x09fc, 0x0a0c, 0x0a2d, 0x0a4c, - // Entry 80 - BF - 0x0a69, 0x0a86, 0x0a92, 0x0ab3, 0x0ac5, 0x0acd, 0x0ad7, 0x0aea, - 0x0b00, 0x0b11, 0x0b1f, 0x0b2b, 0x0b35, 0x0b49, 0x0b55, 0x0b5f, - 0x0b6b, 0x0b77, 0x0b85, 0x0b99, 0x0bac, 0x0bc0, 0x0be1, 0x0bf3, - 0x0bfb, 0x0c15, 0x0c25, 0x0c44, 0x0c7a, 0x0c8c, 0x0ca0, 0x0cb2, - 0x0cbe, 0x0cce, 0x0cde, 0x0cea, 0x0cf8, 0x0d08, 0x0d18, 0x0d26, - 0x0d43, 0x0d4d, 0x0d6a, 0x0d78, 0x0d8a, 0x0d9e, 0x0dae, 0x0db8, - 0x0dc2, 0x0dca, 0x0de5, 0x0ded, 0x0df9, 0x0e01, 0x0e2a, 0x0e4c, - 0x0e5c, 0x0e6c, 0x0e7a, 0x0e9c, 0x0eb9, 0x0ece, 0x0ef9, 0x0f0d, - // Entry C0 - FF - 0x0f17, 0x0f27, 0x0f31, 0x0f4e, 0x0f5c, 0x0f6a, 0x0f76, 0x0f80, - 0x0f8c, 0x0fad, 0x0fd0, 0x0ff5, 0x0fff, 0x100b, 0x101b, 0x1041, - 0x1051, 0x1076, 0x1086, 0x109b, 0x10ae, 0x10bc, 0x10c8, 0x10d6, - 0x10f1, 0x1114, 0x1126, 0x113b, 0x1145, 0x1157, 0x1175, 0x119e, - 0x11a4, 0x11e0, 0x11e8, 0x11f6, 0x120c, 0x121a, 0x122f, 0x1247, - 0x1251, 0x125b, 0x1267, 0x1287, 0x1293, 0x12a1, 0x12b1, 0x12bf, - 0x12cb, 0x12fe, 0x1304, 0x132e, 0x133c, 0x1350, 0x135e, 0x138d, - 0x139f, 0x13d7, 0x1413, 0x1422, 0x1430, 0x144a, 0x1454, 0x1460, - // Entry 100 - 13F - 0x1468, 0x1472, 0x14ae, 0x14ba, 0x14ca, 0x14e7, 0x14ef, 0x14fb, - 0x151c, 0x153d, 0x154b, 0x1568, 0x158d, 0x15aa, 0x15c9, 0x15ec, - 0x160b, 0x1642, 0x1675, 0x1696, 0x16af, 0x16ca, 0x16f4, 0x1713, - 0x1729, 0x173b, 0x1762, 0x1774, 0x177c, 0x179b, 0x17b4, 0x17c0, - 0x17dd, 0x17fc, 0x1819, 0x1819, 0x183a, - }, - }, - { // bem - "Zambia", - []uint16{ // 260 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0006, - }, - }, - { // bez - "HuandolaHufalme dza HihalabuHuafuganistaniHuantigua na HubarubudaHuangui" + - "laHualbaniaHuameniaHuangolaHuajendinaHusamoa ya HumalekaniHuastliaHu" + - "austlaliaHualubaHuazabajaniHubosinia na HuhezegovinaHubabadosiHubang" + - "aladeshiHuubelgijiHubukinafasoHubulgariaHubahaleniHuburundiHubeniniH" + - "ubelmudaHubruneiHuboliviaHublaziliHubahamaHubutaniHubotiswanaHubelal" + - "usiHubelizeHukanadaIjamhuri ya Hidemokrasi ya HukongoIjamhuri ya Afr" + - "ika ya PagatiHukongoHuuswisiHukodivaaIfisima fya KookHuchileHukameru" + - "niHuchinaHukolombiaHukostarikaHukubaHukepuvedeHukuprosiIjamhuri ya C" + - "hekiHuujerumaniHujibutiHudenmakiHudominikaIjamhuri ya HudominikaHual" + - "jeliaHuekwadoHuestoniaHumisriHueritreaHuhispaniaHuuhabeshiHuufiniHuf" + - "ijiIfisima fya FalklandHumikronesiaHuufaransaHugaboniHuuingerezaHugr" + - "enadaHujojiaHugwiyana ya HuufaransaHughanaHujiblaltaHujinlandiHugamb" + - "iaHujineHugwadelupeHuginekwetaHuugilikiHugwatemalaHugwamHuginebisauH" + - "uguyanaHuhondulasiHukorasiaHuhaitiHuhungaliaHuindonesiaHuayalandiHui" + - "slaheliHuindiaUlubali lwa Hubahari ya Hindi lwa HuingerezaHuilakiHuu" + - "ajemiHuaislandiHuitaliaHujamaikaHuyolodaniHujapaniHukenyaHukiligizis" + - "taniHukambodiaHukilibatiHukomoroHusantakitzi na HunevisHukolea Kaska" + - "ziniHukolea KusiniHukuwaitiIfisima fya KaymanHukazakistaniHulaosiHul" + - "ebanoniHusantalusiaHulishenteniHusirilankaHulibeliaHulesotoHulitwani" + - "aHulasembagiHulativiaHulibiyaHumolokoHumonakoHumoldovaHubukiniIfisim" + - "a fya MarshalHumasedoniaHumaliHumyamaHumongoliaIfisima fya Mariana f" + - "ya HukaskaziniHumartinikiHumolitaniaHumontserratiHumaltaHumolisiHumo" + - "divuHumalawiHumeksikoHumalesiaHumusumbijiHunamibiaHunyukaledoniaHuni" + - "jeliIhisima sha NorfokHunijeliaHunikaragwaHuuholanziHunolweHunepaliH" + - "unauruHuniueHunyuzilandiHuomaniHupanamaHupeluHupolinesia ya Huufaran" + - "saHupapuaHufilipinoHupakistaniHupolandiHusantapieri na HumikeloniHup" + - "itkainiHupwetorikoUlubali lwa Magharibi nu Gaza wa HupalestinaHuulen" + - "oHupalauHupalagwaiHukataliHuliyunioniHulomaniaHuulusiHulwandaHusaudi" + - "Ifisima fya SolomonHushelisheliHusudaniHuuswidiHusingapooHusantahele" + - "naHusloveniaHuslovakiaHusiela LioniHusamalinoHusenegaliHusomaliaHusu" + - "rinamuHusaotome na HuprinsipeHuelsavadoHusiliaHuuswaziIfisima fya Tu" + - "rki na KaikoHuchadiHutogoHutailandiHutajikistaniHutokelauHutimori ya" + - " MasharikiHuuturukimenistaniHutunisiaHutongaHuuturukiHutrinad na Hut" + - "obagoHutuvaluHutaiwaniHutanzaniaHuukrainiHuugandaHumalekaniHuulugwai" + - "HuuzibekistaniHuvatikaniHusantavisenti na HugrenadiniHuvenezuelaIfis" + - "ima fya Virgin fya HuingerezaIfisima fya Virgin fya HumelekaniHuviet" + - "inamuHuvanuatuHuwalis na HufutunaHusamoaHuyemeniHumayotteHuafrika iy" + - "a HukusiniHuzambiaHuzimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x001c, 0x002a, 0x0041, 0x004a, 0x0053, - 0x005b, 0x0063, 0x0063, 0x006d, 0x0082, 0x008a, 0x0095, 0x009c, - 0x009c, 0x00a7, 0x00c0, 0x00ca, 0x00d8, 0x00e2, 0x00ee, 0x00f8, - 0x0102, 0x010b, 0x0113, 0x0113, 0x011c, 0x0124, 0x012d, 0x012d, - 0x0136, 0x013e, 0x0146, 0x0146, 0x0151, 0x015b, 0x0163, 0x016b, - 0x016b, 0x018d, 0x01a9, 0x01b0, 0x01b8, 0x01c1, 0x01d1, 0x01d8, - 0x01e2, 0x01e9, 0x01f3, 0x01f3, 0x01fe, 0x0204, 0x020e, 0x020e, - 0x020e, 0x0217, 0x0228, 0x0233, 0x0233, 0x023b, 0x0244, 0x024e, - // Entry 40 - 7F - 0x0264, 0x026d, 0x026d, 0x0275, 0x027e, 0x0285, 0x0285, 0x028e, - 0x0298, 0x02a2, 0x02a2, 0x02a2, 0x02a9, 0x02af, 0x02c3, 0x02cf, - 0x02cf, 0x02d9, 0x02e1, 0x02ec, 0x02f5, 0x02fc, 0x0313, 0x0313, - 0x031a, 0x0324, 0x032e, 0x0336, 0x033c, 0x0347, 0x0352, 0x035b, - 0x035b, 0x0366, 0x036c, 0x0377, 0x037f, 0x037f, 0x037f, 0x038a, - 0x0393, 0x039a, 0x03a4, 0x03a4, 0x03af, 0x03b9, 0x03c3, 0x03c3, - 0x03ca, 0x03f6, 0x03fd, 0x0405, 0x040f, 0x0417, 0x0417, 0x0420, - 0x042a, 0x0432, 0x0439, 0x0448, 0x0452, 0x045c, 0x0464, 0x047b, - // Entry 80 - BF - 0x048c, 0x049a, 0x04a3, 0x04b5, 0x04c2, 0x04c9, 0x04d3, 0x04df, - 0x04eb, 0x04f6, 0x04ff, 0x0507, 0x0511, 0x051c, 0x0525, 0x052d, - 0x0535, 0x053d, 0x0546, 0x0546, 0x0546, 0x054e, 0x0561, 0x056c, - 0x0572, 0x0579, 0x0583, 0x0583, 0x05a6, 0x05b1, 0x05bc, 0x05c9, - 0x05d0, 0x05d8, 0x05e0, 0x05e8, 0x05f1, 0x05fa, 0x0605, 0x060e, - 0x061c, 0x0624, 0x0636, 0x063f, 0x064a, 0x0654, 0x065b, 0x0663, - 0x066a, 0x0670, 0x067c, 0x0683, 0x068b, 0x0691, 0x06aa, 0x06b1, - 0x06bb, 0x06c6, 0x06cf, 0x06e9, 0x06f3, 0x06fe, 0x072a, 0x0731, - // Entry C0 - FF - 0x0738, 0x0742, 0x074a, 0x074a, 0x0755, 0x075e, 0x075e, 0x0765, - 0x076d, 0x0774, 0x0787, 0x0793, 0x079b, 0x07a3, 0x07ad, 0x07ba, - 0x07c4, 0x07c4, 0x07ce, 0x07db, 0x07e5, 0x07ef, 0x07f8, 0x0802, - 0x0802, 0x0819, 0x0823, 0x0823, 0x082a, 0x0832, 0x0832, 0x084c, - 0x0853, 0x0853, 0x0859, 0x0863, 0x0870, 0x0879, 0x088e, 0x08a0, - 0x08a9, 0x08b0, 0x08b9, 0x08cd, 0x08d5, 0x08de, 0x08e8, 0x08f1, - 0x08f9, 0x08f9, 0x08f9, 0x0903, 0x090c, 0x091a, 0x0924, 0x0941, - 0x094c, 0x096d, 0x098e, 0x0999, 0x09a2, 0x09b5, 0x09bc, 0x09bc, - // Entry 100 - 13F - 0x09c4, 0x09cd, 0x09e2, 0x09ea, 0x09f4, - }, - }, - { // bg - bgRegionStr, - bgRegionIdx, - }, - { // bm - "AndɔrArabu mara kafoliAfiganistaŋAntiga-ni-BarbudaAngiyaAlibaniArimeniAn" + - "golaArizantinSamowa amerikaniOtirisiOsitiraliArubaAzɛrbayjaŋBozni-Ɛr" + - "izigoviniBarbadiBɛngiladɛsiBɛlizikiBurukina FasoBuligariBareyiniBuru" + - "ndiBenɛnBermudiBurinɛyiBoliviBereziliBahamasiButaŋBɔtisiwanaBelarusi" + - "BeliziKanadaKongo ka republiki demɔkratikiSantarafirikiKongoSuwisiKo" + - "diwariKuki GunSiliKameruniSiniwajamanaKolombiKɔsitarikaKubaCapivɛrdi" + - "CipriCeki republikiAlimaɲiJibutiDanemarkiDɔminikiDɔmimiki republikiA" + - "lizeriEkwatɔrEsetoniEziputiEritereEsipaɲiEtiopiFinilandiFijiMaluwini" + - " GunMikironesiFaransiGabɔŋAngilɛtɛriGranadiZeyɔrziFaransi ka gwiyani" + - "GanaZibralitariGɔrɔhenelandiGanbiGineGwadelupGine ekwatɔriGɛrɛsiGwat" + - "emalaGwamGine BisawoGwiyanaHɔndirasiKroasiAyitiHɔngriƐndoneziIriland" + - "iIsirayeliƐndujamanaAngilɛ ka ɛndu dugukoloIrakiIraŋIsilandiItaliZam" + - "ayikiZɔrdaniZapɔnKeniyaKirigizisitaŋKambojiKiribatiKomɔriKristɔfo-Se" + - "nu-ni-ƝevɛsKɛɲɛka KoreWorodugu KoreKowɛtiBama GunKazakistaŋLayosiLib" + - "aŋLusi-SenuLisɛnsitayiniSirilankaLiberiyaLesotoLituyaniLikisanburuLe" + - "toniLibiMarɔkuMonakoMolidaviMadagasikariMarisali GunMacedɔniMaliMyan" + - "imariMoŋoliKɛɲɛka Mariyani GunMaritinikiMɔritaniMoŋseraMaltiMorisiMa" + - "ldiviMalawiMeksikiMalɛziMozanbikiNamibiKaledoni KouraNizɛriNɔrofolik" + - "i GunNizeriyaNikaragwaPeyibaNɔriwɛziNepaliNawuruNyuweZelandi KouraOm" + - "aŋPanamaPeruFaransi ka polineziPapuwasi-Gine-KouraFilipiniPakisitaŋP" + - "oloɲiPiyɛri-Senu-ni-MikelɔŋPitikariniPɔrotorikoPalesitiniPɔritigaliP" + - "alawuParaguwayiKatariReyuɲɔŋRumaniIrisiRuwandaArabiya SawudiyaSalomo" + - " GunSesɛliSudaŋSuwɛdiSɛngapuriƐlɛni SenuSloveniSlowakiSiyera LewɔniM" + - "arini-SenuSenegaliSomaliSurinamiSawo Tome-ni-PrinicipeSalivadɔrSiriS" + - "wazilandiTuriki Gun ni KayikiCadiTogoTayilandiTajikisitaniTokeloKɔrɔ" + - "n TimɔrTurikimenisitaniTuniziTongaTurikiTrinite-ni-TobagoTuvaluTayiw" + - "aniTanzaniUkɛrɛniUgandaAmerikiUrugwayiUzebekisitaniVatikaŋVinisɛn-Se" + - "nu-ni-GrenadiniVenezuwelaAngilɛ ka Sungurunnin GunAmeriki ka Sunguru" + - "nnin GunWiyɛtinamuVanuwatuWalisi-ni-FutunaSamowaYemɛniMayotiWorodugu" + - " AfrikiZanbiZimbabuwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0034, 0x003a, 0x0041, - 0x0048, 0x004e, 0x004e, 0x0057, 0x0067, 0x006e, 0x0077, 0x007c, - 0x007c, 0x0088, 0x009a, 0x00a1, 0x00ae, 0x00b7, 0x00c4, 0x00cc, - 0x00d4, 0x00db, 0x00e1, 0x00e1, 0x00e8, 0x00f1, 0x00f7, 0x00f7, - 0x00ff, 0x0107, 0x010d, 0x010d, 0x0118, 0x0120, 0x0126, 0x012c, - 0x012c, 0x014b, 0x0158, 0x015d, 0x0163, 0x016b, 0x0173, 0x0177, - 0x017f, 0x018b, 0x0192, 0x0192, 0x019d, 0x01a1, 0x01ab, 0x01ab, - 0x01ab, 0x01b0, 0x01be, 0x01c6, 0x01c6, 0x01cc, 0x01d5, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x0200, 0x0207, 0x020e, 0x020e, 0x0215, - 0x021d, 0x0223, 0x0223, 0x0223, 0x022c, 0x0230, 0x023c, 0x0246, - 0x0246, 0x024d, 0x0254, 0x0260, 0x0267, 0x026f, 0x0281, 0x0281, - 0x0285, 0x0290, 0x029f, 0x02a4, 0x02a8, 0x02b0, 0x02be, 0x02c6, - 0x02c6, 0x02cf, 0x02d3, 0x02de, 0x02e5, 0x02e5, 0x02e5, 0x02ef, - 0x02f5, 0x02fa, 0x0301, 0x0301, 0x030a, 0x0312, 0x031b, 0x031b, - 0x0326, 0x033f, 0x0344, 0x0349, 0x0351, 0x0356, 0x0356, 0x035e, - 0x0366, 0x036c, 0x0372, 0x0380, 0x0387, 0x038f, 0x0396, 0x03af, - // Entry 80 - BF - 0x03bd, 0x03ca, 0x03d1, 0x03d9, 0x03e4, 0x03ea, 0x03f0, 0x03f9, - 0x0407, 0x0410, 0x0418, 0x041e, 0x0426, 0x0431, 0x0437, 0x043b, - 0x0442, 0x0448, 0x0450, 0x0450, 0x0450, 0x045c, 0x0468, 0x0471, - 0x0475, 0x047e, 0x0485, 0x0485, 0x049b, 0x04a5, 0x04ae, 0x04b6, - 0x04bb, 0x04c1, 0x04c8, 0x04ce, 0x04d5, 0x04dc, 0x04e5, 0x04eb, - 0x04f9, 0x0500, 0x050f, 0x0517, 0x0520, 0x0526, 0x0530, 0x0536, - 0x053c, 0x0541, 0x054e, 0x0553, 0x0559, 0x055d, 0x0570, 0x0583, - 0x058b, 0x0595, 0x059c, 0x05b5, 0x05bf, 0x05ca, 0x05d4, 0x05df, - // Entry C0 - FF - 0x05e5, 0x05ef, 0x05f5, 0x05f5, 0x05ff, 0x0605, 0x0605, 0x060a, - 0x0611, 0x0621, 0x062b, 0x0632, 0x0638, 0x063f, 0x0649, 0x0655, - 0x065c, 0x065c, 0x0663, 0x0671, 0x067c, 0x0684, 0x068a, 0x0692, - 0x0692, 0x06a8, 0x06b2, 0x06b2, 0x06b6, 0x06c0, 0x06c0, 0x06d4, - 0x06d8, 0x06d8, 0x06dc, 0x06e5, 0x06f1, 0x06f7, 0x0705, 0x0715, - 0x071b, 0x0720, 0x0726, 0x0737, 0x073d, 0x0745, 0x074c, 0x0755, - 0x075b, 0x075b, 0x075b, 0x0762, 0x076a, 0x0777, 0x077f, 0x0799, - 0x07a3, 0x07bd, 0x07d7, 0x07e2, 0x07ea, 0x07fa, 0x0800, 0x0800, - // Entry 100 - 13F - 0x0807, 0x080d, 0x081c, 0x0821, 0x082a, - }, - }, - { // bn - bnRegionStr, - bnRegionIdx, - }, - { // bn-IN - "মলডোভামার্কিন যুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জ", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - // Entry C0 - FF - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0096, - }, - }, - { // bo - "རྒྱ་ནགའཇར་མན་དབྱིན་ཇི་རྒྱ་གར་ཨི་ཀྲར་ལི་ཉི་ཧོང་ལྷོ་ཀོ་རི་ཡ།བལ་ཡུལ་ཨུ་རུ་ས" + - "ུ་ཨ་མེ་རི་ཀ།མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུགའཛམ་གླིང་།", - []uint16{ // 263 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - // Entry 40 - 7F - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x0027, 0x0027, 0x0027, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0075, 0x0075, 0x0075, - 0x0075, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - // Entry 80 - BF - 0x008a, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, - 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00ae, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - // Entry C0 - FF - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - // Entry 100 - 13F - 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x015f, 0x017d, - }, - }, - { // bo-IN - "ཨོཤི་ཡཱན་ན།", - []uint16{ // 267 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 100 - 13F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0021, - }, - }, - { // br - "Enez AscensionAndorraEmirelezhioù Arab UnanetAfghanistanAntigua ha Barbu" + - "daAnguillaAlbaniaArmeniaAngolaAntarktikaArcʼhantinaSamoa AmerikanAos" + - "triaAostraliaArubaInizi ÅlandAzerbaidjanBosnia ha HerzegovinaBarbado" + - "sBangladeshBelgiaBurkina FasoBulgariaBahreinBurundiBeninSaint Barthé" + - "lemyBermudaBruneiBoliviaKarib NederlandatBrazilBahamasBhoutanEnez Bo" + - "uvetBotswanaBelarusBelizeKanadaInizi KokozKongo - KinshasaRepublik K" + - "reizafrikanKongo - BrazzavilleSuisAod an OlifantInizi CookChileKamer" + - "ounSinaKolombiaEnez ClippertonCosta RicaKubaKab-GlasCuraçaoEnez Chri" + - "stmasKiprenezRepublik TchekAlamagnDiego GarciaDjiboutiDanmarkDominic" + - "aRepublik DominikanAljeriaCeuta ha MelillaEcuadorEstoniaEgiptSahara " + - "ar CʼhornôgEritreaSpagnEtiopiaUnaniezh EuropaFinlandFidjiInizi Falkl" + - "andMikroneziaInizi FaeroFrañsGabonRouantelezh-UnanetGrenadaJorjiaGwi" + - "ana cʼhallGwernenezGhanaJibraltarGreunlandGambiaGineaGwadeloupGinea " + - "ar CʼhehederGresInizi Georgia ar Su hag Inizi Sandwich ar SuGuatemal" + - "aGuamGinea-BissauGuyanaHong Kong RMD SinaInizi Heard ha McDonaldHond" + - "urasKroatiaHaitiHungariaInizi KanariezIndoneziaIwerzhonIsraelEnez Va" + - "navIndiaTiriad breizhveurat Meurvor IndezIraqIranIslandItaliaJerzene" + - "zJamaikaJordaniaJapanKenyaKyrgyzstanKambodjaKiribatiKomorezSaint Kit" + - "ts ha NevisKorea an NorzhKorea ar SuKoweitInizi CaymanKazakstanLaosL" + - "ibanSaint LuciaLiechtensteinSri LankaLiberiaLesothoLituaniaLuksembou" + - "rgLatviaLibiaMarokoMonacoMoldovaMontenegroSaint MartinMadagaskarIniz" + - "i MarshallMakedoniaMaliMyanmar (Birmania)MongoliaMacau RMD SinaInizi" + - " Mariana an NorzhMartinikMaouritaniaMontserratMaltaMorisMaldivezMala" + - "wiMecʼhikoMalaysiaMozambikNamibiaKaledonia NevezNigerEnez NorfolkNig" + - "eriaNicaraguaIzelvroioùNorvegiaNepalNauruNiueZeland-NevezOmanPanamáP" + - "erouPolinezia CʼhallPapoua Ginea-NevezFilipinezPakistanPoloniaSant-P" + - "êr-ha-MikelonEnez PitcairnPuerto RicoTiriadoù PalestinaPortugalPala" + - "uParaguayQatarOseania diabellAr ReünionRoumaniaSerbiaRusiaRwandaArab" + - "ia SaoudatInizi SalomonSechelezSoudanSvedenSingapourSaint-HelenaSlov" + - "eniaSvalbardSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinamSusou" + - "danSão Tomé ha PríncipeSalvadorSint MaartenSiriaSwazilandTristan da " + - "CunhaInizi Turks ha CaicosTchadDouaroù aostral FrañsTogoThailandTadj" + - "ikistanTokelauTimor-LesteTurkmenistanTuniziaTongaTurkiaTrinidad ha T" + - "obagoTuvaluTaiwanTanzaniaUkrainaOugandaInizi diabell ar Stadoù-Unane" + - "tStadoù-UnanetUruguayOuzbekistanVatikanSant Visant hag ar Grenadinez" + - "VenezuelaInizi Gwercʼh Breizh-VeurInizi Gwercʼh ar Stadoù-UnanetViêt" + - " NamVanuatuWallis ha FutunaSamoaKosovoYemenMayotteSuafrikaZambiaZimb" + - "abweRannved dianavBedAfrikaNorzhamerikaSuamerikaOseaniaAfrika ar Cʼh" + - "ornôgKreizamerikaAfrika ar ReterAfrika an NorzhAfrika ar CʼhreizAfri" + - "ka ar SuAmerikaoùAmerika an NorzhKaribAzia ar ReterAzia ar SuAzia ar" + - " GevredEuropa ar SuAostralaziaMelaneziaRannved MikroneziaPolineziaAz" + - "iaAzia ar CʼhreizAzia ar CʼhornôgEuropaEuropa ar ReterEuropa an Norz" + - "hEuropa ar CʼhornôgAmerika Latin", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x0015, 0x002e, 0x0039, 0x004b, 0x0053, 0x005a, - 0x0061, 0x0067, 0x0071, 0x007d, 0x008b, 0x0092, 0x009b, 0x00a0, - 0x00ac, 0x00b7, 0x00cc, 0x00d4, 0x00de, 0x00e4, 0x00f0, 0x00f8, - 0x00ff, 0x0106, 0x010b, 0x011c, 0x0123, 0x0129, 0x0130, 0x0141, - 0x0147, 0x014e, 0x0155, 0x0160, 0x0168, 0x016f, 0x0175, 0x017b, - 0x0186, 0x0196, 0x01ab, 0x01be, 0x01c2, 0x01d0, 0x01da, 0x01df, - 0x01e7, 0x01eb, 0x01f3, 0x0202, 0x020c, 0x0210, 0x0218, 0x0220, - 0x022e, 0x0236, 0x0244, 0x024b, 0x0257, 0x025f, 0x0266, 0x026e, - // Entry 40 - 7F - 0x0280, 0x0287, 0x0297, 0x029e, 0x02a5, 0x02aa, 0x02be, 0x02c5, - 0x02ca, 0x02d1, 0x02e0, 0x02e0, 0x02e7, 0x02ec, 0x02fa, 0x0304, - 0x030f, 0x0315, 0x031a, 0x032c, 0x0333, 0x0339, 0x0347, 0x0350, - 0x0355, 0x035e, 0x0367, 0x036d, 0x0372, 0x037b, 0x038e, 0x0392, - 0x03be, 0x03c7, 0x03cb, 0x03d7, 0x03dd, 0x03ef, 0x0406, 0x040e, - 0x0415, 0x041a, 0x0422, 0x0430, 0x0439, 0x0441, 0x0447, 0x0451, - 0x0456, 0x0477, 0x047b, 0x047f, 0x0485, 0x048b, 0x0493, 0x049a, - 0x04a2, 0x04a7, 0x04ac, 0x04b6, 0x04be, 0x04c6, 0x04cd, 0x04e1, - // Entry 80 - BF - 0x04ef, 0x04fa, 0x0500, 0x050c, 0x0515, 0x0519, 0x051e, 0x0529, - 0x0536, 0x053f, 0x0546, 0x054d, 0x0555, 0x0560, 0x0566, 0x056b, - 0x0571, 0x0577, 0x057e, 0x0588, 0x0594, 0x059e, 0x05ac, 0x05b5, - 0x05b9, 0x05cb, 0x05d3, 0x05e1, 0x05f7, 0x05ff, 0x060a, 0x0614, - 0x0619, 0x061e, 0x0626, 0x062c, 0x0635, 0x063d, 0x0645, 0x064c, - 0x065b, 0x0660, 0x066c, 0x0673, 0x067c, 0x0687, 0x068f, 0x0694, - 0x0699, 0x069d, 0x06a9, 0x06ad, 0x06b4, 0x06b9, 0x06ca, 0x06dc, - 0x06e5, 0x06ed, 0x06f4, 0x0708, 0x0715, 0x0720, 0x0733, 0x073b, - // Entry C0 - FF - 0x0740, 0x0748, 0x074d, 0x075c, 0x0767, 0x076f, 0x0775, 0x077a, - 0x0780, 0x078e, 0x079b, 0x07a3, 0x07a9, 0x07af, 0x07b8, 0x07c4, - 0x07cc, 0x07d4, 0x07dc, 0x07e8, 0x07f2, 0x07f9, 0x0800, 0x0807, - 0x080f, 0x0826, 0x082e, 0x083a, 0x083f, 0x0848, 0x0858, 0x086d, - 0x0872, 0x0889, 0x088d, 0x0895, 0x08a0, 0x08a7, 0x08b2, 0x08be, - 0x08c5, 0x08ca, 0x08d0, 0x08e2, 0x08e8, 0x08ee, 0x08f6, 0x08fd, - 0x0904, 0x0923, 0x0923, 0x0931, 0x0938, 0x0943, 0x094a, 0x0967, - 0x0970, 0x098a, 0x09aa, 0x09b3, 0x09ba, 0x09ca, 0x09cf, 0x09d5, - // Entry 100 - 13F - 0x09da, 0x09e1, 0x09e9, 0x09ef, 0x09f7, 0x0a05, 0x0a08, 0x0a0e, - 0x0a1a, 0x0a23, 0x0a2a, 0x0a3e, 0x0a4a, 0x0a59, 0x0a68, 0x0a7a, - 0x0a86, 0x0a90, 0x0aa0, 0x0aa5, 0x0ab2, 0x0abc, 0x0aca, 0x0ad6, - 0x0ae1, 0x0aea, 0x0afc, 0x0b05, 0x0b09, 0x0b19, 0x0b2b, 0x0b31, - 0x0b40, 0x0b4f, 0x0b63, 0x0b63, 0x0b70, - }, - }, - { // brx - "ऍन्डोरासंयुक्त अरब अमीरातअफ़ग़ानिस्तानएन्टिगुआ एवं बारबूडाएंगीलाअल्बानिय" + - "ाआर्मेनियाअंगोलाअंटार्कटिकाअर्जेण्टिनाअमरिकी समोआऑस्ट्रियाऑस्ट्रेल" + - "ियाअरूबाआलाँड द्वीपअज़रबैजानबोसनिया हर्ज़ेगोविनाबारबाडोसबंगलादेशबे" + - "ल्जियमबुर्किना फासोबल्गैरियाबहरैनबुरुंडीबेनेँसेँ बार्थेलेमीबरमूडाब" + - "्रूनइबोलीवियाब्राज़ीलबहामाभूटानबुवे द्वीपबोत्स्वानाबेलारूसबेलिज़कै" + - "नाडाकोकोस द्वीपकॉंगो किनशासासेंट्रल अफ्रीकन रिपब्लिककॉंगो ब्राज़्ज" + - "़ावीलस्वित्ज़रलैंडआईवरी कोस्टकुक द्वीपचिलीकोमेरानचीनकोलम्बियाकोस्ट" + - "ारीकाक्यूबाकैप वेर्देक्रिस्मस द्वीपसाइप्रसचेक गणराज्यजर्मनीद्जिबूत" + - "ीडेनमार्कडोमिनिकाडोमिनिकन गणराज्यअल्जीरियाएक्वाडोरएस्टोनियामिस्रपश" + - "्चिमी सहाराएरिट्रियास्पेनइथिओपियायूरोपीय संघफिनलैंडफिजीफ़ॉल्कलैंड " + - "द्वीपमाइक्रोनेशियाफरो द्वीपफ्राँसगैबॉनब्रितनग्रेनडाजॉर्जियाफ्राँसी" + - "सी गिआनागेर्नसेघानाजिब्राल्टरग्रीनलैण्डगाम्बियागिनीग्वादलुपइक्वेटो" + - "रियल गिनीग्रीसदक्षिण जोर्जिया एवं दक्षिण सैंडवीच द्वीपगोतेदालागुआम" + - "गीनी-बिसाउगुयानाहाँगकाँग विशेष प्रशासनिक क्षेत्र चीनहर्ड द्वीप एवं" + - " मैकडोनॉल्ड द्वीपहौण्डूरासक्रोएशियाहाइतीहंगरीइंडोनेशियाआयरलैंडइस्राइ" + - "लआईल ऑफ़ मैनभारतब्रिटिश हिंद महासागरिय क्षेत्रईराक़ईरानआइसलैंडइटली" + - "जर्सीजमाइकाजॉर्डनजापानकेन्याकिर्गिज़कम्बोडियाकिरिबातीकोमोरोज़सेंट " + - "किट्स एवं नेविसउत्तर कोरियादक्षिण कोरियाकुवैतकेमैन द्वीपकज़ाखस्तान" + - "लाओसलेबनोनसेंट लूसियालिक्टैनस्टाईनश्री लँकालाइबेरियालसोथोलिथुआनिया" + - "लक्समबर्गलाट्वीयालीबियामोरोक्कोमोनाकोमोल्डेवियामोंटेनेग्रोसेँ मार्" + - "टेँमदागास्करमार्शल द्वीपमैसेडोनियामालीम्यानमारमंगोलियामकाओ विशेष प" + - "्रशासनिक क्षेत्र (चीन)उत्तरी मारियाना द्वीपमार्टीनिकमॉरिटेनियामॉंस" + - "ेरामाल्टामॉरिसमालदीवमलावीमैक्सिकोमलेशियामोज़ाम्बिकनामीबियान्यू कैल" + - "ेडोनियानाइजेरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआनेदरलैण्डनॉर्वेनेपालना" + - "उरूनीयूएन्यूज़ीलैंडओमानपनामापेरूफ्राँसीसी पॉलिनीशियापापुआ न्यू गिन" + - "ीफिलीपिन्सपाकिस्तानपोलैण्डसेँ पीएर एवं मि\u200dकेलॉंपिटकेर्नपुएर्ट" + - "ो रीकोफ़िलिस्तीनपुर्तगालपलाऊपारागुएक़तारबाहरिय ओशेआनियारेयूनियॉंरो" + - "मानियासर्बियारूसरूआण्डासऊदी अरबसॉलोमन द्वीपसेशेल्ससूदानस्वीडनसिंगा" + - "पुरसेण्\u200dट हेलेनास्लोवेनियास्वाल्बार्ड एवं यान मायेनस्लोवाकिया" + - "सियेरा लेओनसैन मरीनोसेनेगालसोमालियासुरिनामसाउँ-तोमे एवं प्रिंसिपऍल" + - " साल्वाडोरसीरियास्वाज़ीलैंडतुर्की एवं कैकोज़ द्वीपचाडफ्राँसीसी उत्तर" + - "ी क्षेत्रोंटोगोथाइलैण्डताजिकिस्तानटोकेलौपूर्वी तिमोरतुर्कमेनीस्तान" + - "त्युनिशियाटॉंगातुर्कीट्रिनिडाड एवं टोबैगोतुवालुताइवानतंज़ानियायूक्" + - "रेनयुगाँडायुनाइटेड स्टेट्स के छोटे बाहरिय द्वीपसंयुक्त राज्य अमरिक" + - "ायुरूगुएउज़बेकिस्तानवैटिकनसेंट विंसंट एवं दी ग्रनाडीन्स्वेनेज़ुएला" + - "ब्रिटिश वर्जीन आईलंड्सयु.एस. वर्जीन आईलंड्सवियतनामवानाऊटुवॉलेस एवं" + - " फ़्यूचूनासमोआयमनमैयौटदक्षिण अफ्रीकाज़ाम्बियाज़ीम्बाब्वेअज्ञात या अव" + - "ैध प्रदेशदुनियाअफ्रीकाउत्तर अमरिकादक्षिण अमरिकाओशेआनियापश्चिमी अफ्" + - "रीकामध्य अमरिकापूर्वी अफ्रीकाउत्तरी अफ्रीकामध्य अफ्रीकादक्षिणी अफ्" + - "रीकाअमरिकाज़्उत्तरी अमरिकाकैरिबियनपूर्वी एशियादक्षिणी एशियादक्षिण-" + - "पूर्वी एशियादक्षिणी यूरोपऑस्ट्रेलिया एवं न्यूजीलैंडमेलीनेशियामाईक्" + - "रोनेशियापोलीनेशियाएशियामध्य एशियापश्चिमी ऐशियायूरोपपूर्वी यूरोपउत्" + - "तरी यूरोपपश्चिमी यूरोप्लैटिन अमरिका एवं करीबी", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0015, 0x0047, 0x006e, 0x00a6, 0x00b8, 0x00d3, - 0x00ee, 0x0100, 0x0121, 0x0142, 0x0161, 0x017c, 0x019d, 0x01ac, - 0x01cb, 0x01e6, 0x0220, 0x0238, 0x0250, 0x0268, 0x028d, 0x02a8, - 0x02b7, 0x02cc, 0x02db, 0x0303, 0x0315, 0x0327, 0x033f, 0x033f, - 0x0357, 0x0366, 0x0375, 0x0391, 0x03af, 0x03c4, 0x03d6, 0x03e8, - 0x0407, 0x042c, 0x0470, 0x04a7, 0x04ce, 0x04ed, 0x0506, 0x0512, - 0x0527, 0x0530, 0x054b, 0x054b, 0x0569, 0x057b, 0x0597, 0x0597, - 0x05bf, 0x05d4, 0x05f3, 0x0605, 0x0605, 0x061d, 0x0635, 0x064d, - // Entry 40 - 7F - 0x067b, 0x0696, 0x0696, 0x06ae, 0x06c9, 0x06d8, 0x06fd, 0x0718, - 0x0727, 0x073f, 0x075e, 0x075e, 0x0773, 0x077f, 0x07ad, 0x07d4, - 0x07ed, 0x07ff, 0x080e, 0x0820, 0x0835, 0x084d, 0x0878, 0x088d, - 0x0899, 0x08b7, 0x08d5, 0x08ed, 0x08f9, 0x0911, 0x093f, 0x094e, - 0x09bc, 0x09d4, 0x09e0, 0x09fc, 0x0a0e, 0x0a72, 0x0ac7, 0x0ae2, - 0x0afd, 0x0b0c, 0x0b1b, 0x0b1b, 0x0b39, 0x0b4e, 0x0b63, 0x0b80, - 0x0b8c, 0x0be0, 0x0bef, 0x0bfb, 0x0c10, 0x0c1c, 0x0c2b, 0x0c3d, - 0x0c4f, 0x0c5e, 0x0c70, 0x0c88, 0x0ca3, 0x0cbb, 0x0cd3, 0x0d09, - // Entry 80 - BF - 0x0d2b, 0x0d50, 0x0d5f, 0x0d7e, 0x0d9c, 0x0da8, 0x0dba, 0x0dd9, - 0x0e00, 0x0e19, 0x0e34, 0x0e43, 0x0e5e, 0x0e79, 0x0e91, 0x0ea3, - 0x0ebb, 0x0ecd, 0x0eeb, 0x0f0c, 0x0f2b, 0x0f46, 0x0f68, 0x0f86, - 0x0f92, 0x0faa, 0x0fc2, 0x101c, 0x1057, 0x1072, 0x1090, 0x10a5, - 0x10b7, 0x10c6, 0x10d8, 0x10e7, 0x10ff, 0x1114, 0x1132, 0x114a, - 0x1175, 0x1187, 0x11ac, 0x11c7, 0x11e2, 0x11fd, 0x120f, 0x121e, - 0x122d, 0x123c, 0x125d, 0x1269, 0x1278, 0x1284, 0x12be, 0x12e7, - 0x1302, 0x131d, 0x1332, 0x136b, 0x1383, 0x13a5, 0x13c3, 0x13db, - // Entry C0 - FF - 0x13e7, 0x13fc, 0x140b, 0x1436, 0x1451, 0x1469, 0x147e, 0x1487, - 0x149c, 0x14b2, 0x14d4, 0x14e9, 0x14f8, 0x150a, 0x1522, 0x1547, - 0x1565, 0x15aa, 0x15c8, 0x15e7, 0x1600, 0x1615, 0x162d, 0x1642, - 0x1642, 0x167e, 0x16a0, 0x16a0, 0x16b2, 0x16d3, 0x16d3, 0x1712, - 0x171b, 0x1765, 0x1771, 0x1789, 0x17aa, 0x17bc, 0x17de, 0x1808, - 0x1826, 0x1835, 0x1847, 0x187f, 0x1891, 0x18a3, 0x18be, 0x18d3, - 0x18e8, 0x194d, 0x194d, 0x1985, 0x199a, 0x19be, 0x19d0, 0x1a22, - 0x1a40, 0x1a7e, 0x1ab5, 0x1aca, 0x1adf, 0x1b14, 0x1b20, 0x1b20, - // Entry 100 - 13F - 0x1b29, 0x1b38, 0x1b60, 0x1b7b, 0x1b9c, 0x1bd5, 0x1be7, 0x1bfc, - 0x1c1e, 0x1c43, 0x1c5b, 0x1c86, 0x1ca5, 0x1ccd, 0x1cf5, 0x1d17, - 0x1d42, 0x1d5d, 0x1d82, 0x1d9a, 0x1dbc, 0x1de1, 0x1e16, 0x1e3b, - 0x1e85, 0x1ea3, 0x1eca, 0x1ee8, 0x1ef7, 0x1f13, 0x1f38, 0x1f47, - 0x1f69, 0x1f8b, 0x1fb3, 0x1fb3, 0x1fef, - }, - }, - { // bs - "Ostrvo AscensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigva i Barb" + - "udaAngvilaAlbanijaArmenijaAngolaAntarktikaArgentinaAmerička SamoaAus" + - "trijaAustralijaArubaOlandska ostrvaAzerbejdžanBosna i HercegovinaBar" + - "badosBangladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti Ba" + - "rtolomejBermudaBrunejBolivijaKaripska HolandijaBrazilBahamiButanOstr" + - "vo BuveBocvanaBjelorusijaBelizeKanadaKokosova (Keelingova) ostrvaDem" + - "okratska Republika KongoCentralnoafrička RepublikaKongoŠvicarskaObal" + - "a SlonovačeKukova ostrvaČileKamerunKinaKolumbijaOstrvo KlipertonKost" + - "arikaKubaKape VerdeKurasaoBožićno ostrvoKiparČeškaNjemačkaDijego Gar" + - "sijaDžibutiDanskaDominikaDominikanska RepublikaAlžirSeuta i MeliljaE" + - "kvadorEstonijaEgipatZapadna SaharaEritrejaŠpanijaEtiopijaEvropska un" + - "ijaEurozonaFinskaFidžiFolklandska ostrvaMikronezijaFarska ostrvaFran" + - "cuskaGabonVelika BritanijaGrenadaGruzijaFrancuska GvajanaGernziGanaG" + - "ibraltarGrenlandGambijaGvinejaGvadalupeEkvatorijalna GvinejaGrčkaJuž" + - "na Džordžija i Južna Sendvič ostrvaGvatemalaGuamGvineja-BisaoGvajana" + - "Hong Kong (SAR Kina)Herd i arhipelag MekDonaldHondurasHrvatskaHaitiM" + - "ađarskaKanarska ostrvaIndonezijaIrskaIzraelOstrvo ManIndijaBritanska" + - " Teritorija u Indijskom OkeanuIrakIranIslandItalijaJerseyJamajkaJord" + - "anJapanKenijaKirgistanKambodžaKiribatiKomoriSveti Kits i NevisSjever" + - "na KorejaJužna KorejaKuvajtKajmanska ostrvaKazahstanLaosLibanSveta L" + - "ucijaLihtenštajnŠri LankaLiberijaLesotoLitvanijaLuksemburgLatvijaLib" + - "ijaMarokoMonakoMoldavijaCrna GoraSveti MartinMadagaskarMaršalova ost" + - "rvaMakedonijaMaliMjanmarMongolijaMakao (SAR Kina)Sjeverna Marijanska" + - " ostrvaMartinikMauritanijaMonseratMaltaMauricijusMaldiviMalaviMeksik" + - "oMalezijaMozambikNamibijaNova KaledonijaNigerOstrvo NorfolkNigerijaN" + - "ikaragvaHolandijaNorveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFran" + - "cuska PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSveti Petar" + - " i MikelonPitkernska OstrvaPorto RikoPalestinska TeritorijaPortugalP" + - "alauParagvajKatarVanjska OkeanijaReunionRumunijaSrbijaRusijaRuandaSa" + - "udijska ArabijaSolomonska OstrvaSejšeliSudanŠvedskaSingapurSveta Hel" + - "enaSlovenijaSvalbard i Jan MajenSlovačkaSijera LeoneSan MarinoSenega" + - "lSomalijaSurinamJužni SudanSao Tome i PrincipeSalvadorSint MartenSir" + - "ijaSvazilendTristan da CunhaOstrva Turks i KaikosČadFrancuske Južne " + - "TeritorijeTogoTajlandTadžikistanTokelauIstočni TimorTurkmenistanTuni" + - "sTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaUkrajinaUgandaAmer" + - "ička Vanjska OstrvaUjedinjene NacijeSjedinjene Američke DržaveUrugva" + - "jUzbekistanVatikanSveti Vinsent i GrenadinVenecuelaBritanska Djeviča" + - "nska ostrvaAmerička Djevičanska ostrvaVijetnamVanuatuOstrva Valis i " + - "FutunaSamoaKosovoJemenMajoteJužnoafrička RepublikaZambijaZimbabveNep" + - "oznata oblastSvijetAfrikaSjeverna AmerikaJužna AmerikaOkeanijaZapadn" + - "a AfrikaSrednja AmerikaIstočna AfrikaSjeverna AfrikaSrednja AfrikaJu" + - "žna AfrikaAmerikaSjeverni dio AmerikeKaribiIstočna AzijaJužna Azija" + - "Jugoistočna AzijaJužna EvropaAustralazijaMelanezijaMikronezijska reg" + - "ijaPolinezijaAzijaSrednja AzijaZapadna AzijaEvropaIstočna EvropaSjev" + - "erna EvropaZapadna EvropaLatinska Amerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0016, 0x0030, 0x003a, 0x004b, 0x0052, 0x005a, - 0x0062, 0x0068, 0x0072, 0x007b, 0x008a, 0x0092, 0x009c, 0x00a1, - 0x00b0, 0x00bc, 0x00cf, 0x00d7, 0x00e1, 0x00e8, 0x00f4, 0x00fc, - 0x0103, 0x010a, 0x010f, 0x011f, 0x0126, 0x012c, 0x0134, 0x0146, - 0x014c, 0x0152, 0x0157, 0x0162, 0x0169, 0x0174, 0x017a, 0x0180, - 0x019c, 0x01b7, 0x01d2, 0x01d7, 0x01e1, 0x01f1, 0x01fe, 0x0203, - 0x020a, 0x020e, 0x0217, 0x0227, 0x0230, 0x0234, 0x023e, 0x0245, - 0x0255, 0x025a, 0x0261, 0x026a, 0x0278, 0x0280, 0x0286, 0x028e, - // Entry 40 - 7F - 0x02a4, 0x02aa, 0x02b9, 0x02c0, 0x02c8, 0x02ce, 0x02dc, 0x02e4, - 0x02ec, 0x02f4, 0x0302, 0x030a, 0x0310, 0x0316, 0x0328, 0x0333, - 0x0340, 0x0349, 0x034e, 0x035e, 0x0365, 0x036c, 0x037d, 0x0383, - 0x0387, 0x0390, 0x0398, 0x039f, 0x03a6, 0x03af, 0x03c4, 0x03ca, - 0x03f5, 0x03fe, 0x0402, 0x040f, 0x0416, 0x042a, 0x0444, 0x044c, - 0x0454, 0x0459, 0x0462, 0x0471, 0x047b, 0x0480, 0x0486, 0x0490, - 0x0496, 0x04bd, 0x04c1, 0x04c5, 0x04cb, 0x04d2, 0x04d8, 0x04df, - 0x04e5, 0x04ea, 0x04f0, 0x04f9, 0x0502, 0x050a, 0x0510, 0x0522, - // Entry 80 - BF - 0x0531, 0x053e, 0x0544, 0x0554, 0x055d, 0x0561, 0x0566, 0x0572, - 0x057e, 0x0588, 0x0590, 0x0596, 0x059f, 0x05a9, 0x05b0, 0x05b6, - 0x05bc, 0x05c2, 0x05cb, 0x05d4, 0x05e0, 0x05ea, 0x05fb, 0x0605, - 0x0609, 0x0610, 0x0619, 0x0629, 0x0643, 0x064b, 0x0656, 0x065e, - 0x0663, 0x066d, 0x0674, 0x067a, 0x0681, 0x0689, 0x0691, 0x0699, - 0x06a8, 0x06ad, 0x06bb, 0x06c3, 0x06cc, 0x06d5, 0x06de, 0x06e3, - 0x06e8, 0x06ec, 0x06f7, 0x06fb, 0x0701, 0x0705, 0x0719, 0x072b, - 0x0733, 0x073b, 0x0742, 0x0757, 0x0768, 0x0772, 0x0788, 0x0790, - // Entry C0 - FF - 0x0795, 0x079d, 0x07a2, 0x07b2, 0x07b9, 0x07c1, 0x07c7, 0x07cd, - 0x07d3, 0x07e4, 0x07f5, 0x07fd, 0x0802, 0x080a, 0x0812, 0x081e, - 0x0827, 0x083b, 0x0844, 0x0850, 0x085a, 0x0861, 0x0869, 0x0870, - 0x087c, 0x088f, 0x0897, 0x08a2, 0x08a8, 0x08b1, 0x08c1, 0x08d6, - 0x08da, 0x08f5, 0x08f9, 0x0900, 0x090c, 0x0913, 0x0921, 0x092d, - 0x0932, 0x0937, 0x093d, 0x094e, 0x0954, 0x095a, 0x0963, 0x096b, - 0x0971, 0x0989, 0x099a, 0x09b6, 0x09bd, 0x09c7, 0x09ce, 0x09e6, - 0x09ef, 0x0a0c, 0x0a29, 0x0a31, 0x0a38, 0x0a4d, 0x0a52, 0x0a58, - // Entry 100 - 13F - 0x0a5d, 0x0a63, 0x0a7b, 0x0a82, 0x0a8a, 0x0a9a, 0x0aa0, 0x0aa6, - 0x0ab6, 0x0ac4, 0x0acc, 0x0ada, 0x0ae9, 0x0af8, 0x0b07, 0x0b15, - 0x0b22, 0x0b29, 0x0b3d, 0x0b43, 0x0b51, 0x0b5d, 0x0b6f, 0x0b7c, - 0x0b88, 0x0b92, 0x0ba6, 0x0bb0, 0x0bb5, 0x0bc2, 0x0bcf, 0x0bd5, - 0x0be4, 0x0bf3, 0x0c01, 0x0c01, 0x0c11, - }, - }, - { // bs-Cyrl - "Острво АсенсионАндораУједињени Арапски ЕмиратиАфганистанАнтигва и Барбуд" + - "аАнгвилаАлбанијаЕрменијаАнголаАнтарктикАргентинаАмеричка СамоаАустр" + - "ијаАустралијаАрубаОландска острваАзербејџанБосна и ХерцеговинаБарба" + - "досБангладешБелгијаБуркина ФасоБугарскаБахреинБурундиБенинСвети Бар" + - "толомејБермудиБрунејБоливијаКарипска ХоландијаБразилБахамиБутанОстр" + - "во БувеБоцванаБјелорусијаБелизКанадаКокос (Келинг) ОстрваДемократск" + - "а Република КонгоСредњоафричка РепубликаКонгоШвицарскаОбала Слонова" + - "чеКукова ОстрваЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаКуб" + - "аЗеленортска ОстрваКурасаоБожићно острвоКипарЧешкаЊемачкаДијего Гар" + - "сијаЏибутиДанскаДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕк" + - "вадорЕстонијаЕгипатЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска ун" + - "ијаЕурозонаФинскаФиџиФокландска острваМикронезијаФарска острваФранц" + - "ускаГабонУједињено КраљевствоГренадаГрузијаФранцуска ГвајанаГернзиГ" + - "анаГибралтарГренландГамбијаГвинејаГваделупеЕкваторска ГвинејаГрчкаЈ" + - "ужна Џорџија и Јужна Сендвич ОстрваГватемалаГуамГвинеја-БисауГвајан" + - "аХонг Конг (САР Кина)Херд и Мекдоналд ОстрваХондурасХрватскаХаитиМа" + - "ђарскаКанарска острваИндонезијаИрскаИзраелОстрво МенИндијаБританска" + - " територија у Индијском океануИракИранИсландИталијаЏерзиЈамајкаЈорда" + - "нЈапанКенијаКиргизстанКамбоџаКирибатиКомориСвети Кристофор и НевисС" + - "јеверна КорејаЈужна КорејаКувајтКајманска острваКазахстанЛаосЛибанС" + - "вета ЛуцијаЛихтенштајнШри ЛанкаЛиберијаЛесотоЛитванијаЛуксембургЛат" + - "вијаЛибијаМарокоМонакоМолдавијаЦрна ГораСвети МартинМадагаскарМарша" + - "лска ОстрваМакедонијаМалиМјанмарМонголијаМакао (САР Кина)Сјеверна М" + - "аријанска острваМартиникМауританијаМонсератМалтаМаурицијусМалдивиМа" + - "лавиМексикоМалезијаМозамбикНамибијаНова КаледонијаНигерОстрво Норфо" + - "лкНигеријаНикарагваХоландијаНорвешкаНепалНауруНиуеНови ЗеландОманПа" + - "намаПеруФранцуска ПолинезијаПапуа Нова ГвинејаФилипиниПакистанПољск" + - "аСен Пјер и МикелонПиткернПорторикоПалестинске територијеПортугалПа" + - "лауПарагвајКатарОстала океанијаРеинионРумунијаСрбијаРусијаРуандаСау" + - "дијска АрабијаСоломонска ОстрваСејшелиСуданШведскаСингапурСвета Хел" + - "енаСловенијаСвалбард и Јан МајенСловачкаСијера ЛеонеСан МариноСенег" + - "алСомалијаСуринамЈужни СуданСвети Тома и ПринципСалвадорСиријаСвази" + - "Тристан да КуњаТуркс и Кајкос ОстрваЧадФранцуске Јужне ТериторијеТо" + - "гоТајландТаџикистанТокелауИсточни ТиморТуркменистанТунисТонгаТурска" + - "Тринидад и ТобагоТувалуТајванТанзанијаУкрајинаУгандаМања удаљена ос" + - "трва САДУједињене нацијеСједињене Америчке ДржавеУругвајУзбекистанВ" + - "атиканСвети Винсент и ГренадиниВенецуелаБританска Дјевичанска острв" + - "аАмеричка Дјевичанска острваВијетнамВануатуВалис и ФутунаСамоаКосов" + - "оЈеменМајотеЈужноафричка РепубликаЗамбијаЗимбабвеНепозната или нева" + - "жећа областСвијетАфрикаСеверноамерички континентЈужна АмерикаОкеани" + - "јаЗападна АфрикаЦентрална АмерикаИсточна АфрикаСјеверна АфрикаЦентр" + - "ална АфрикаЈужна АфрикаАмерикеСеверна АмерикаКарибиИсточна АзијаЈуж" + - "на АзијаЈугоисточна АзијаЈужна ЕвропаАустралија и Нови ЗеландМелане" + - "зијаМикронезијски регионПолинезијаАзијаЦентрална АзијаЗападна Азија" + - "ЕвропаИсточна ЕвропаСјеверна ЕвропаЗападна ЕвропаЛатинска Америка", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab, - 0x00bb, 0x00c7, 0x00d9, 0x00eb, 0x0106, 0x0116, 0x012a, 0x0134, - 0x0151, 0x0165, 0x0189, 0x0199, 0x01ab, 0x01b9, 0x01d0, 0x01e0, - 0x01ee, 0x01fc, 0x0206, 0x0225, 0x0233, 0x023f, 0x024f, 0x0272, - 0x027e, 0x028a, 0x0294, 0x02a9, 0x02b7, 0x02cd, 0x02d7, 0x02e3, - 0x0309, 0x033d, 0x036a, 0x0374, 0x0386, 0x03a3, 0x03bc, 0x03c4, - 0x03d2, 0x03da, 0x03ec, 0x040b, 0x041d, 0x0425, 0x0448, 0x0456, - 0x0471, 0x047b, 0x0485, 0x0493, 0x04ae, 0x04ba, 0x04c6, 0x04d6, - // Entry 40 - 7F - 0x0501, 0x050b, 0x0525, 0x0533, 0x0543, 0x054f, 0x056a, 0x057a, - 0x0588, 0x0598, 0x05b3, 0x05c3, 0x05cf, 0x05d7, 0x05f8, 0x060e, - 0x0627, 0x0639, 0x0643, 0x066a, 0x0678, 0x0686, 0x06a7, 0x06b3, - 0x06bb, 0x06cd, 0x06dd, 0x06eb, 0x06f9, 0x070b, 0x072e, 0x0738, - 0x077b, 0x078d, 0x0795, 0x07ae, 0x07bc, 0x07df, 0x080a, 0x081a, - 0x082a, 0x0834, 0x0844, 0x0861, 0x0875, 0x087f, 0x088b, 0x089e, - 0x08aa, 0x08f4, 0x08fc, 0x0904, 0x0910, 0x091e, 0x0928, 0x0936, - 0x0942, 0x094c, 0x0958, 0x096c, 0x097a, 0x098a, 0x0996, 0x09c1, - // Entry 80 - BF - 0x09de, 0x09f5, 0x0a01, 0x0a20, 0x0a32, 0x0a3a, 0x0a44, 0x0a5b, - 0x0a71, 0x0a82, 0x0a92, 0x0a9e, 0x0ab0, 0x0ac4, 0x0ad2, 0x0ade, - 0x0aea, 0x0af6, 0x0b08, 0x0b19, 0x0b30, 0x0b44, 0x0b63, 0x0b77, - 0x0b7f, 0x0b8d, 0x0b9f, 0x0bbb, 0x0bed, 0x0bfd, 0x0c13, 0x0c23, - 0x0c2d, 0x0c41, 0x0c4f, 0x0c5b, 0x0c69, 0x0c79, 0x0c89, 0x0c99, - 0x0cb6, 0x0cc0, 0x0cdb, 0x0ceb, 0x0cfd, 0x0d0f, 0x0d1f, 0x0d29, - 0x0d33, 0x0d3b, 0x0d50, 0x0d58, 0x0d64, 0x0d6c, 0x0d93, 0x0db5, - 0x0dc5, 0x0dd5, 0x0de1, 0x0e02, 0x0e10, 0x0e22, 0x0e4d, 0x0e5d, - // Entry C0 - FF - 0x0e67, 0x0e77, 0x0e81, 0x0e9e, 0x0eac, 0x0ebc, 0x0ec8, 0x0ed4, - 0x0ee0, 0x0f01, 0x0f22, 0x0f30, 0x0f3a, 0x0f48, 0x0f58, 0x0f6f, - 0x0f81, 0x0fa6, 0x0fb6, 0x0fcd, 0x0fe0, 0x0fee, 0x0ffe, 0x100c, - 0x1021, 0x1046, 0x1056, 0x1056, 0x1062, 0x106c, 0x1088, 0x10af, - 0x10b5, 0x10e7, 0x10ef, 0x10fd, 0x1111, 0x111f, 0x1138, 0x1150, - 0x115a, 0x1164, 0x1170, 0x1190, 0x119c, 0x11a8, 0x11ba, 0x11ca, - 0x11d6, 0x1201, 0x1220, 0x1250, 0x125e, 0x1272, 0x1280, 0x12af, - 0x12c1, 0x12f7, 0x132b, 0x133b, 0x1349, 0x1363, 0x136d, 0x1379, - // Entry 100 - 13F - 0x1383, 0x138f, 0x13ba, 0x13c8, 0x13d8, 0x140f, 0x141b, 0x1427, - 0x1458, 0x1471, 0x1481, 0x149c, 0x14bd, 0x14d8, 0x14f5, 0x1514, - 0x152b, 0x1539, 0x1556, 0x1562, 0x157b, 0x1590, 0x15b1, 0x15c8, - 0x15f5, 0x1609, 0x1630, 0x1644, 0x164e, 0x166b, 0x1684, 0x1690, - 0x16ab, 0x16c8, 0x16e3, 0x16e3, 0x1702, - }, - }, - { // ca - caRegionStr, - caRegionIdx, - }, - { // ccp - "𑄃𑄳𑄠𑄥𑄴𑄥𑄬𑄚𑄴𑄥𑄧𑄚𑄴 𑄃𑄭𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄃𑄚𑄴𑄓𑄮𑄢𑄎𑄧𑄙 𑄃𑄢𑄧𑄝𑄴 𑄃𑄟𑄨𑄢𑄖𑄴𑄃𑄛𑄴𑄉𑄚𑄨𑄌𑄴𑄖𑄚𑄴𑄆𑄚𑄴𑄖𑄨𑄉𑄱 𑄃𑄮 𑄝𑄢𑄴𑄟𑄪" + - "𑄓𑄄𑄳𑄠𑄋𑄴𑄉𑄪𑄃𑄨𑄣𑄃𑄣𑄴𑄝𑄬𑄚𑄨𑄠𑄃𑄢𑄴𑄟𑄬𑄚𑄨𑄠𑄃𑄳𑄠𑄋𑄴𑄉𑄮𑄣𑄃𑄳𑄠𑄚𑄴𑄑𑄢𑄴𑄇𑄧𑄑𑄨𑄇𑄃𑄢𑄴𑄎𑄬𑄚𑄴𑄑𑄨𑄚𑄃𑄟𑄬𑄢𑄨𑄇𑄚" + - "𑄴 𑄥𑄟𑄮𑄠𑄃𑄧𑄌𑄴𑄑𑄳𑄢𑄨𑄠𑄃𑄌𑄴𑄑𑄳𑄢𑄬𑄣𑄨𑄠𑄃𑄢𑄪𑄝𑄃𑄣𑄚𑄴𑄓𑄧 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄃𑄎𑄢𑄴𑄝𑄭𑄎𑄚𑄴𑄝𑄧𑄥𑄴𑄚𑄨𑄠 𑄃" + - "𑄮 𑄦𑄢𑄴𑄎𑄬𑄉𑄮𑄞𑄨𑄚𑄝𑄢𑄴𑄝𑄘𑄮𑄌𑄴𑄝𑄁𑄣𑄘𑄬𑄌𑄴𑄝𑄬𑄣𑄴𑄎𑄨𑄠𑄟𑄴𑄝𑄪𑄢𑄴𑄇𑄨𑄚 𑄜𑄥𑄮𑄝𑄪𑄣𑄴𑄉𑄬𑄢𑄨𑄠𑄝𑄦𑄧𑄢𑄭𑄚𑄴𑄝𑄪" + - "𑄢𑄪𑄚𑄴𑄘𑄨𑄝𑄬𑄚𑄨𑄚𑄴𑄥𑄬𑄚𑄴𑄑𑄴 𑄝𑄢𑄴𑄗𑄬𑄣𑄨𑄟𑄨𑄝𑄢𑄴𑄟𑄪𑄓𑄝𑄳𑄢𑄪𑄚𑄬𑄭𑄝𑄧𑄣𑄨𑄞𑄨𑄠𑄇𑄳𑄠𑄢𑄨𑄝𑄨𑄠𑄚𑄴 𑄚𑄬𑄘𑄢𑄴𑄣" + - "𑄳𑄠𑄚𑄴𑄓𑄧𑄥𑄴𑄝𑄳𑄢𑄎𑄨𑄣𑄴𑄝𑄦𑄟 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄞𑄪𑄑𑄚𑄴𑄝𑄮𑄞𑄬𑄑𑄴 𑄞𑄨𑄘𑄳𑄠𑄝𑄧𑄖𑄴𑄥𑄮𑄠𑄚𑄝𑄬𑄣𑄢𑄪𑄌𑄴𑄝𑄬𑄣" + - "𑄨𑄎𑄴𑄇𑄚𑄓𑄇𑄮𑄇𑄮𑄌𑄴 (𑄇𑄨𑄣𑄨𑄁) 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄇𑄧𑄋𑄴𑄉𑄮-𑄚𑄨𑄇𑄴𑄥𑄥𑄟𑄧𑄖𑄴𑄙𑄳𑄠𑄧 𑄃𑄜𑄳𑄢𑄨𑄇𑄢𑄴𑄛𑄳𑄢" + - "𑄎𑄖𑄧𑄚𑄴𑄖𑄳𑄢𑄧𑄇𑄧𑄋𑄴𑄉𑄮-𑄝𑄳𑄢𑄎𑄞𑄨𑄣𑄴𑄥𑄭𑄪𑄎𑄢𑄴𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄃𑄭𑄞𑄧𑄢𑄨 𑄇𑄮𑄌𑄴𑄑𑄴𑄇𑄪𑄇𑄪 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳" + - "𑄠𑄌𑄨𑄣𑄨𑄇𑄳𑄠𑄟𑄬𑄢𑄪𑄚𑄴𑄌𑄩𑄚𑄴𑄃𑄣𑄧𑄟𑄴𑄝𑄨𑄠𑄇𑄳𑄣𑄨𑄛𑄢𑄴𑄑𑄧𑄚𑄴 𑄃𑄭𑄣𑄳𑄠𑄚𑄳𑄓𑄴𑄇𑄮𑄥𑄳𑄑𑄢𑄨𑄇𑄇𑄨𑄃𑄪𑄝𑄇𑄬𑄛𑄴𑄞" + - "𑄢𑄴𑄘𑄬𑄇𑄨𑄃𑄪𑄢𑄥𑄃𑄮𑄇𑄳𑄢𑄨𑄥𑄴𑄟𑄥𑄴 𑄞𑄨𑄘𑄳𑄠𑄥𑄭𑄛𑄳𑄢𑄥𑄴𑄌𑄬𑄌𑄨𑄠𑄎𑄢𑄴𑄟𑄚𑄨𑄘𑄨𑄠𑄬𑄉𑄮 𑄉𑄢𑄴𑄥𑄨𑄠𑄎𑄨𑄝𑄪𑄖𑄨𑄓" + - "𑄬𑄚𑄴𑄟𑄢𑄴𑄇𑄧𑄓𑄮𑄟𑄨𑄚𑄨𑄇𑄓𑄮𑄟𑄨𑄚𑄨𑄇𑄚𑄴 𑄛𑄳𑄢𑄧𑄎𑄖𑄧𑄚𑄴𑄖𑄳𑄢𑄧𑄃𑄢𑄴𑄎𑄬𑄢𑄨𑄠𑄇𑄪𑄃𑄪𑄑 𑄃𑄳𑄃 𑄟𑄬𑄣𑄨𑄣𑄄𑄇𑄪𑄠" + - "𑄬𑄓𑄧𑄢𑄴𑄆𑄌𑄴𑄖𑄮𑄚𑄨𑄠𑄟𑄨𑄥𑄧𑄢𑄴𑄛𑄧𑄎𑄨𑄟𑄴 𑄥𑄦𑄢𑄄𑄢𑄨𑄖𑄳𑄢𑄨𑄠𑄥𑄳𑄛𑄬𑄚𑄴𑄃𑄨𑄜𑄨𑄃𑄮𑄛𑄨𑄠𑄄𑄃𑄪𑄢𑄮𑄛𑄩𑄠𑄧 𑄄𑄃𑄪" + - "𑄚𑄨𑄠𑄧𑄚𑄴𑄜𑄨𑄚𑄴𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄜𑄨𑄎𑄨𑄜𑄧𑄇𑄴𑄣𑄳𑄠𑄚𑄴𑄓𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄟𑄭𑄇𑄳𑄢𑄮𑄚𑄬𑄥𑄨𑄠𑄜𑄳𑄠𑄢𑄧𑄃𑄮 𑄉𑄭" + - " 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄜𑄳𑄢𑄚𑄴𑄥𑄴𑄉𑄳𑄠𑄝𑄧𑄚𑄴𑄎𑄧𑄙𑄢𑄬𑄌𑄴𑄎𑄮𑄉𑄳𑄢𑄬𑄚𑄓𑄎𑄧𑄢𑄴𑄎𑄨𑄠𑄜𑄧𑄢𑄥𑄩 𑄉𑄠𑄚𑄉𑄳𑄢𑄚𑄴𑄏𑄨𑄊𑄚𑄎𑄨𑄝𑄳𑄢" + - "𑄣𑄴𑄑𑄢𑄴𑄉𑄳𑄢𑄩𑄚𑄴𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄉𑄟𑄴𑄝𑄨𑄠𑄉𑄨𑄚𑄨𑄉𑄪𑄠𑄘𑄬𑄣𑄯𑄛𑄴𑄚𑄨𑄢𑄧𑄇𑄴𑄈𑄩𑄠𑄧 𑄉𑄨𑄚𑄨𑄉𑄳𑄢𑄨𑄌𑄴𑄘𑄧𑄉𑄨𑄚𑄴 " + - "𑄎𑄧𑄢𑄴𑄎𑄨𑄠 𑄃𑄮 𑄘𑄧𑄉𑄨𑄚𑄴 𑄥𑄳𑄠𑄚𑄴𑄓𑄃𑄪𑄃𑄨𑄌𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄉𑄪𑄠𑄖𑄬𑄟𑄣𑄉𑄪𑄠𑄟𑄴𑄉𑄨𑄚𑄨-𑄝𑄨𑄥𑄃𑄪𑄉" + - "𑄨𑄠𑄚𑄦𑄧𑄁𑄇𑄧𑄁 𑄆𑄌𑄴𑄃𑄬𑄃𑄢𑄴 𑄌𑄩𑄚𑄦𑄢𑄴𑄓𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠 𑄃𑄳𑄃 𑄟𑄳𑄠𑄇𑄴𑄓𑄮𑄚𑄴𑄓𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘" + - "𑄳𑄠𑄦𑄪𑄚𑄴𑄓𑄪𑄢𑄥𑄴𑄇𑄳𑄢𑄮𑄠𑄬𑄥𑄨𑄠𑄦𑄭𑄖𑄨𑄦𑄧𑄋𑄴𑄉𑄬𑄢𑄨𑄇𑄳𑄠𑄚𑄢𑄨 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄄𑄚𑄴𑄘𑄮𑄚𑄬𑄥𑄨𑄠𑄃𑄠𑄢𑄴𑄣" + - "𑄳𑄠𑄚𑄴𑄓𑄴𑄄𑄎𑄴𑄢𑄠𑄬𑄣𑄴𑄃𑄭𑄣𑄴 𑄃𑄧𑄜𑄴 𑄟𑄳𑄠𑄚𑄴𑄞𑄢𑄧𑄖𑄴𑄝𑄳𑄢𑄨𑄑𑄨𑄌𑄴 𑄞𑄢𑄧𑄖𑄴 𑄟𑄧𑄦𑄥𑄉𑄧𑄢𑄨𑄠𑄧 𑄞𑄨𑄘𑄳𑄠" + - "𑄄𑄢𑄇𑄴𑄄𑄢𑄚𑄴𑄃𑄭𑄥𑄴𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄄𑄖𑄣𑄨𑄎𑄢𑄴𑄥𑄨𑄎𑄟𑄭𑄇𑄎𑄧𑄢𑄴𑄓𑄧𑄚𑄴𑄎𑄛𑄚𑄴𑄇𑄬𑄚𑄨𑄠𑄇𑄨𑄢𑄴𑄉𑄨𑄎𑄨𑄌𑄴𑄖𑄚𑄴𑄇𑄧𑄟" + - "𑄴𑄝𑄮𑄓𑄨𑄠𑄇𑄨𑄢𑄨𑄝𑄖𑄨𑄇𑄧𑄟𑄮𑄢𑄮𑄌𑄴𑄥𑄬𑄚𑄴𑄑𑄴 𑄇𑄨𑄑𑄴𑄥𑄴 𑄃𑄮 𑄚𑄬𑄞𑄨𑄌𑄴𑄅𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄇𑄮𑄢𑄨𑄠𑄘𑄧𑄉𑄨𑄚𑄴 " + - "𑄇𑄮𑄢𑄨𑄠𑄇𑄪𑄠𑄬𑄖𑄴𑄇𑄬𑄟𑄳𑄠𑄚𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄇𑄎𑄈𑄌𑄴𑄖𑄚𑄴𑄣𑄃𑄮𑄌𑄴𑄣𑄬𑄝𑄚𑄧𑄚𑄴𑄥𑄬𑄚𑄴𑄑𑄴 𑄣𑄪𑄥𑄨𑄠𑄣𑄨𑄌" + - "𑄬𑄚𑄴𑄥𑄳𑄑𑄬𑄃𑄨𑄚𑄴𑄥𑄳𑄢𑄨𑄣𑄧𑄁𑄇𑄃𑄭𑄝𑄬𑄢𑄨𑄠𑄣𑄬𑄥𑄮𑄗𑄮𑄣𑄨𑄗𑄪𑄠𑄚𑄨𑄠𑄣𑄪𑄇𑄴𑄥𑄬𑄟𑄴𑄝𑄢𑄴𑄉𑄧𑄣𑄖𑄴𑄞𑄨𑄠𑄣𑄨𑄝𑄨𑄠𑄟" + - "𑄮𑄢𑄧𑄇𑄴𑄇𑄮𑄟𑄮𑄚𑄇𑄮𑄟𑄮𑄣𑄴𑄘𑄞𑄨𑄠𑄟𑄧𑄚𑄴𑄑𑄨𑄚𑄨𑄉𑄳𑄢𑄮𑄥𑄬𑄚𑄴𑄑𑄴 𑄟𑄢𑄴𑄑𑄨𑄚𑄴𑄟𑄘𑄉𑄌𑄴𑄇𑄢𑄴𑄟𑄢𑄴𑄥𑄣𑄴 𑄉𑄭 𑄉" + - "𑄭 𑄞𑄨𑄘𑄳𑄠𑄟𑄳𑄠𑄥𑄓𑄮𑄚𑄨𑄠𑄟𑄣𑄨𑄟𑄠𑄚𑄴𑄟𑄢𑄴 (𑄝𑄢𑄴𑄟)𑄟𑄧𑄋𑄴𑄉𑄮𑄣𑄨𑄠𑄟𑄳𑄠𑄇𑄃𑄮 𑄆𑄌𑄴𑄃𑄬𑄃𑄢𑄴 𑄌𑄩𑄚𑄅𑄪𑄖𑄴" + - "𑄖𑄮𑄉𑄎𑄢𑄴 𑄟𑄢𑄨𑄠𑄚 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄟𑄢𑄴𑄑𑄨𑄚𑄨𑄇𑄴𑄟𑄧𑄢𑄨𑄖𑄚𑄨𑄠𑄟𑄧𑄚𑄴𑄑𑄴𑄥𑄬𑄢𑄑𑄴𑄟𑄣𑄴𑄑𑄟𑄧𑄢𑄨𑄥𑄥𑄴𑄟𑄣" + - "𑄴𑄘𑄨𑄛𑄴𑄟𑄣𑄃𑄪𑄃𑄨𑄟𑄬𑄇𑄴𑄥𑄨𑄇𑄮𑄟𑄣𑄴𑄠𑄬𑄥𑄨𑄠𑄟𑄮𑄎𑄟𑄴𑄝𑄨𑄇𑄴𑄚𑄟𑄨𑄝𑄨𑄠𑄚𑄱 𑄇𑄳𑄠𑄣𑄬𑄓𑄮𑄚𑄨𑄠𑄚𑄭𑄎𑄢𑄴𑄚𑄨𑄢𑄴𑄜" + - "𑄮𑄇𑄴 𑄞𑄨𑄘𑄳𑄠𑄚𑄭𑄎𑄬𑄢𑄨𑄠𑄚𑄨𑄇𑄢𑄉𑄪𑄠𑄚𑄬𑄘𑄢𑄴𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄥𑄴𑄚𑄧𑄢𑄴𑄃𑄮𑄠𑄬𑄚𑄬𑄛𑄣𑄴𑄚𑄃𑄪𑄢𑄪𑄚𑄨𑄃𑄪𑄠𑄬𑄚𑄨𑄃𑄪" + - "𑄎𑄨𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄃𑄮𑄟𑄚𑄴𑄛𑄚𑄟𑄛𑄬𑄢𑄪𑄜𑄧𑄢𑄥𑄩 𑄛𑄧𑄣𑄨𑄚𑄬𑄥𑄨𑄠𑄛𑄛𑄪𑄠 𑄚𑄨𑄃𑄪 𑄉𑄨𑄚𑄨𑄜𑄨𑄣𑄨𑄛𑄭𑄚𑄴𑄛𑄇𑄨𑄌𑄴𑄖𑄚" + - "𑄴𑄛𑄮𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄥𑄬𑄚𑄴𑄑𑄴 𑄛𑄨𑄠𑄬𑄢𑄴 𑄃𑄮 𑄟𑄨𑄢𑄪𑄠𑄬𑄣𑄧𑄚𑄴𑄛𑄨𑄇𑄴𑄇𑄬𑄠𑄢𑄴𑄚𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄛𑄪𑄠𑄬𑄢" + - "𑄴𑄖𑄮 𑄢𑄨𑄇𑄮𑄜𑄨𑄣𑄨𑄌𑄴𑄖𑄨𑄚𑄴 𑄎𑄉𑄊𑄚𑄨𑄛𑄧𑄢𑄴𑄖𑄪𑄉𑄣𑄴𑄛𑄣𑄃𑄪𑄛𑄳𑄠𑄢𑄉𑄪𑄠𑄬𑄇𑄖𑄢𑄴𑄃𑄅𑄪𑄑𑄣𑄭𑄚𑄨𑄁 𑄃𑄮𑄥𑄚𑄨𑄠" + - "𑄢𑄨𑄃𑄨𑄃𑄪𑄚𑄨𑄠𑄧𑄚𑄴𑄢𑄮𑄟𑄚𑄨𑄠𑄥𑄢𑄴𑄝𑄨𑄠𑄢𑄥𑄨𑄠𑄢𑄪𑄠𑄚𑄴𑄓𑄥𑄯𑄘𑄨 𑄃𑄢𑄧𑄝𑄴𑄥𑄧𑄣𑄮𑄟𑄚𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄥𑄨" + - "𑄥𑄨𑄣𑄨𑄥𑄪𑄘𑄚𑄴𑄥𑄭𑄪𑄓𑄬𑄚𑄴𑄥𑄨𑄋𑄴𑄉𑄛𑄪𑄢𑄴𑄥𑄬𑄚𑄴𑄑𑄴 𑄦𑄬𑄣𑄬𑄚𑄥𑄳𑄣𑄮𑄞𑄚𑄨𑄠𑄥𑄣𑄴𑄝𑄢𑄴𑄓𑄴 𑄃𑄮 𑄎𑄚𑄴 𑄟𑄬𑄠𑄬" + - "𑄚𑄴𑄥𑄳𑄣𑄮𑄞𑄇𑄨𑄠𑄥𑄨𑄠𑄬𑄢𑄣𑄨𑄃𑄮𑄚𑄴𑄥𑄚𑄴 𑄟𑄢𑄨𑄚𑄮𑄥𑄬𑄚𑄬𑄉𑄣𑄴𑄥𑄮𑄟𑄣𑄨𑄠𑄥𑄪𑄢𑄨𑄚𑄟𑄴𑄘𑄧𑄉𑄨𑄚𑄴 𑄥𑄪𑄘𑄚𑄴𑄥𑄃𑄮" + - "𑄑𑄟 𑄃𑄮 𑄛𑄳𑄢𑄨𑄚𑄴𑄥𑄨𑄛𑄨𑄆𑄣𑄴 𑄥𑄣𑄴𑄞𑄬𑄘𑄧𑄢𑄴𑄥𑄨𑄚𑄴𑄑𑄴 𑄟𑄢𑄴𑄑𑄬𑄚𑄴𑄥𑄨𑄢𑄨𑄠𑄥𑄮𑄠𑄎𑄨𑄣𑄳𑄠𑄚𑄴𑄓𑄴𑄑𑄳𑄢𑄌𑄴" + - "𑄑𑄚𑄴 𑄓 𑄇𑄪𑄚𑄴𑄦𑄖𑄪𑄢𑄴𑄇𑄧𑄌𑄴 𑄃𑄮 𑄇𑄭𑄇𑄮𑄌𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄌𑄘𑄴𑄜𑄢𑄥𑄩 𑄘𑄧𑄉𑄨𑄚𑄧 𑄎𑄉𑄑𑄮𑄉𑄮𑄗𑄭𑄣" + - "𑄳𑄠𑄚𑄴𑄓𑄴𑄖𑄎𑄨𑄇𑄴𑄥𑄳𑄗𑄚𑄴𑄑𑄮𑄇𑄬𑄣𑄃𑄪𑄖𑄨𑄟𑄪𑄢𑄴-𑄣𑄬𑄌𑄴𑄖𑄬𑄖𑄪𑄢𑄴𑄇𑄧𑄟𑄬𑄚𑄨𑄌𑄴𑄖𑄚𑄴𑄖𑄨𑄃𑄪𑄚𑄨𑄥𑄨𑄠𑄑𑄮𑄋𑄴𑄉" + - "𑄖𑄪𑄢𑄧𑄌𑄴𑄇𑄧𑄖𑄳𑄢𑄨𑄚𑄨𑄚𑄘𑄴 𑄃𑄮 𑄑𑄮𑄝𑄳𑄠𑄉𑄮𑄑𑄪𑄞𑄣𑄪𑄖𑄭𑄤𑄚𑄴𑄖𑄚𑄴𑄎𑄚𑄨𑄠𑄃𑄨𑄃𑄪𑄇𑄳𑄢𑄬𑄚𑄴𑄅𑄉𑄚𑄴𑄓𑄎𑄧𑄙𑄢𑄬" + - "𑄌𑄴𑄎𑄮𑄢𑄴 𑄦𑄭𑄇𑄪𑄢𑄬 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄎𑄘𑄨𑄥𑄧𑄁𑄊𑄧𑄟𑄢𑄴𑄇𑄨𑄚𑄴 𑄎𑄧𑄙𑄢𑄬𑄌𑄴𑄎𑄮𑄅𑄪𑄢𑄪𑄉𑄪𑄠𑄬𑄅𑄪𑄎𑄴𑄝𑄬𑄇" + - "𑄨𑄌𑄴𑄖𑄚𑄴𑄞𑄳𑄠𑄑𑄨𑄇𑄚𑄴 𑄥𑄨𑄑𑄨𑄥𑄬𑄚𑄴𑄑𑄴 𑄞𑄨𑄚𑄴𑄥𑄬𑄚𑄴𑄑𑄴 𑄃𑄮 𑄘𑄳𑄠 𑄉𑄳𑄢𑄬𑄚𑄓𑄨𑄚𑄴𑄥𑄴𑄞𑄬𑄚𑄬𑄎𑄪𑄠𑄬𑄣𑄝" + - "𑄳𑄢𑄨𑄑𑄨𑄌𑄴 𑄞𑄢𑄴𑄎𑄨𑄚𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳𑄠𑄟𑄢𑄴𑄇𑄨𑄚𑄴 𑄎𑄧𑄙𑄢𑄬𑄌𑄴𑄎𑄮𑄢𑄴 𑄞𑄢𑄴𑄎𑄨𑄚𑄴 𑄉𑄭 𑄉𑄭 𑄞𑄨𑄘𑄳" + - "𑄠𑄞𑄨𑄠𑄬𑄖𑄴𑄚𑄟𑄴𑄞𑄚𑄪𑄠𑄑𑄪𑄤𑄣𑄨𑄌𑄴 𑄃𑄮 𑄜𑄪𑄑𑄪𑄚𑄥𑄟𑄮𑄠𑄇𑄧𑄥𑄮𑄞𑄮𑄃𑄨𑄠𑄬𑄟𑄬𑄚𑄴𑄟𑄠𑄮𑄖𑄴𑄖𑄬𑄘𑄧𑄉𑄨𑄚𑄴 𑄃𑄜𑄳" + - "𑄢𑄨𑄇𑄎𑄟𑄴𑄝𑄨𑄠𑄎𑄨𑄟𑄴𑄝𑄝𑄪𑄠𑄬𑄃𑄨𑄌𑄨𑄚𑄴 𑄎𑄉𑄛𑄨𑄖𑄴𑄗𑄨𑄟𑄨𑄃𑄜𑄳𑄢𑄨𑄇𑄅𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄃𑄟𑄬𑄢𑄨𑄇𑄘𑄨𑄉𑄨𑄚𑄴 𑄃𑄟" + - "𑄬𑄢𑄨𑄇𑄃𑄮𑄥𑄨𑄠𑄚𑄨𑄠𑄛𑄧𑄏𑄨𑄟𑄴 𑄃𑄜𑄳𑄢𑄨𑄇𑄟𑄧𑄖𑄴𑄙𑄳𑄠 𑄃𑄜𑄳𑄢𑄨𑄇𑄛𑄪𑄇𑄴𑄘𑄩 𑄃𑄜𑄳𑄢𑄨𑄇𑄅𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄃𑄜𑄳𑄢" + - "𑄨𑄇𑄟𑄧𑄖𑄴𑄙𑄳𑄠𑄧 𑄃𑄜𑄳𑄢𑄨𑄇𑄘𑄧𑄉𑄨𑄚𑄴 𑄃𑄜𑄳𑄢𑄨𑄇 𑄎𑄉𑄃𑄟𑄬𑄢𑄨𑄇𑄥𑄴𑄅𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄎𑄉𑄢𑄴 𑄃𑄟𑄬𑄢𑄨𑄇𑄇𑄳𑄠𑄢" + - "𑄝𑄨𑄠𑄚𑄴𑄛𑄪𑄉𑄬𑄘𑄩 𑄃𑄬𑄥𑄨𑄠𑄘𑄧𑄉𑄨𑄚𑄬 𑄃𑄬𑄥𑄨𑄠𑄘𑄧𑄉𑄨𑄚𑄴 𑄛𑄪𑄇𑄴 𑄃𑄬𑄥𑄨𑄠𑄘𑄧𑄉𑄨𑄚𑄴 𑄄𑄃𑄪𑄢𑄮𑄛𑄴𑄃𑄧𑄌𑄴𑄑" + - "𑄳𑄢𑄣𑄬𑄥𑄨𑄠𑄟𑄳𑄠𑄣𑄬𑄚𑄬𑄥𑄨𑄠𑄟𑄭𑄇𑄳𑄢𑄮𑄚𑄬𑄥𑄨𑄠 𑄎𑄉𑄛𑄧𑄣𑄨𑄚𑄬𑄥𑄨𑄠𑄃𑄬𑄥𑄨𑄠𑄟𑄧𑄖𑄴𑄙𑄳𑄠𑄧 𑄃𑄬𑄥𑄨𑄠𑄛𑄧𑄎𑄨𑄟𑄴" + - " 𑄃𑄬𑄥𑄨𑄠𑄄𑄃𑄪𑄢𑄮𑄛𑄴𑄛𑄪𑄉𑄬𑄘𑄨 𑄄𑄃𑄪𑄢𑄮𑄛𑄴𑄅𑄪𑄖𑄴𑄖𑄮𑄢𑄴 𑄄𑄃𑄪𑄢𑄮𑄛𑄴𑄛𑄧𑄎𑄨𑄟𑄴 𑄄𑄃𑄪𑄢𑄮𑄛𑄴𑄣𑄳𑄠𑄑𑄨𑄚𑄴 𑄃𑄟𑄬" + - "𑄢𑄨𑄇", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0059, 0x0071, 0x00ab, 0x00d7, 0x0115, 0x013d, 0x015d, - 0x017d, 0x019d, 0x01d1, 0x01f9, 0x022a, 0x024e, 0x0276, 0x0286, - 0x02c5, 0x02e9, 0x0337, 0x0357, 0x0373, 0x0397, 0x03c0, 0x03e4, - 0x0400, 0x0420, 0x0438, 0x0475, 0x048d, 0x04a9, 0x04c5, 0x0526, - 0x0542, 0x0575, 0x0589, 0x05b6, 0x05d6, 0x05f2, 0x060a, 0x0616, - 0x066c, 0x069d, 0x070e, 0x0747, 0x077b, 0x07ac, 0x07e3, 0x07f3, - 0x0817, 0x0827, 0x0847, 0x0898, 0x08b8, 0x08cc, 0x08f0, 0x0910, - 0x0949, 0x0965, 0x0979, 0x0991, 0x09c2, 0x09da, 0x09fe, 0x0a1a, - // Entry 40 - 7F - 0x0a73, 0x0a93, 0x0ac9, 0x0aed, 0x0b0d, 0x0b25, 0x0b4a, 0x0b6a, - 0x0b82, 0x0ba6, 0x0bef, 0x0bef, 0x0c1b, 0x0c2b, 0x0c7e, 0x0caa, - 0x0ced, 0x0d09, 0x0d25, 0x0d49, 0x0d61, 0x0d7d, 0x0d9e, 0x0dba, - 0x0dc2, 0x0dea, 0x0e1e, 0x0e36, 0x0e46, 0x0e6a, 0x0ea3, 0x0ebb, - 0x0f6a, 0x0f86, 0x0f9a, 0x0fbf, 0x0fcf, 0x1015, 0x10b1, 0x10d5, - 0x10f9, 0x1109, 0x1129, 0x1168, 0x1190, 0x11bc, 0x11dc, 0x1212, - 0x1226, 0x1299, 0x12a9, 0x12b9, 0x12e5, 0x12f5, 0x1309, 0x1319, - 0x1339, 0x1349, 0x135d, 0x1391, 0x13b5, 0x13d1, 0x13f1, 0x1444, - // Entry 80 - BF - 0x1479, 0x14a6, 0x14be, 0x1501, 0x1521, 0x1535, 0x1551, 0x157e, - 0x15b6, 0x15d6, 0x15f2, 0x160a, 0x162a, 0x165e, 0x1676, 0x168a, - 0x16aa, 0x16be, 0x16de, 0x170e, 0x1743, 0x1763, 0x17a2, 0x17c6, - 0x17d2, 0x1801, 0x1825, 0x186b, 0x18cf, 0x18f3, 0x1913, 0x193f, - 0x194f, 0x196b, 0x1987, 0x199f, 0x19bf, 0x19df, 0x1a03, 0x1a1b, - 0x1a4c, 0x1a60, 0x1a95, 0x1ab1, 0x1acd, 0x1b05, 0x1b25, 0x1b39, - 0x1b4d, 0x1b65, 0x1b99, 0x1bad, 0x1bb9, 0x1bc9, 0x1c02, 0x1c34, - 0x1c54, 0x1c74, 0x1c98, 0x1cfb, 0x1d4e, 0x1d7f, 0x1dbc, 0x1de0, - // Entry C0 - FF - 0x1df0, 0x1e10, 0x1e20, 0x1e5d, 0x1e8d, 0x1ea5, 0x1ebd, 0x1ecd, - 0x1ee5, 0x1f0a, 0x1f4d, 0x1f65, 0x1f79, 0x1f95, 0x1fb9, 0x1fe6, - 0x2006, 0x2055, 0x2075, 0x20a1, 0x20c2, 0x20de, 0x20f6, 0x2112, - 0x213f, 0x2185, 0x21b6, 0x21eb, 0x21ff, 0x222f, 0x2269, 0x22d2, - 0x22de, 0x2310, 0x2320, 0x2344, 0x236c, 0x2388, 0x23b9, 0x23f5, - 0x2419, 0x242d, 0x244d, 0x2497, 0x24ab, 0x24bf, 0x24db, 0x2503, - 0x2517, 0x2583, 0x25a3, 0x25e4, 0x2604, 0x2638, 0x2669, 0x26ed, - 0x2711, 0x2775, 0x2802, 0x2826, 0x283e, 0x2870, 0x2880, 0x2898, - // Entry 100 - 13F - 0x28b8, 0x28d4, 0x2905, 0x291d, 0x2941, 0x2962, 0x2982, 0x299a, - 0x29d3, 0x2a04, 0x2a24, 0x2a55, 0x2a8a, 0x2abb, 0x2af4, 0x2b2d, - 0x2b67, 0x2b87, 0x2bd1, 0x2bf5, 0x2c22, 0x2c4f, 0x2c8d, 0x2cc2, - 0x2cf2, 0x2d1a, 0x2d4f, 0x2d73, 0x2d87, 0x2dbc, 0x2de9, 0x2e05, - 0x2e3a, 0x2e77, 0x2eac, 0x2eac, 0x2ee1, - }, - }, - { // ce - "Айъадаларан гӀайреАндорраӀарбийн Цхьанатоьхна ЭмираташОвхӀан мохкАнтигуа" + - " а, Барбуда аАнгильяАлбаниЭрмалойчоьАнголаАнтарктидаАргентинаАмерика" + - "н СамоаАвстриАвстралиАрубаАландан гӀайренашАзербайджанБосни а, Герц" + - "еговина аБарбадосБангладешБельгиБуркина- ФасоБолгариБахрейнБурундиБ" + - "енинСен-БартельмиБермудан гӀайренашБруней-ДаруссаламБоливиБонэйр, С" + - "инт-Эстатиус а, Саба аБразилиБагаман гӀайренашБутанБувен гӀайреБотс" + - "ванаБелоруссиБелизКанадаКокосийн гӀайренашДемократин Республика Кон" + - "гоЮккъерчу Африкин РеспубликаКонго - БраззавильШвейцариКот-Д’ивуарК" + - "укан гӀайренашЧилиКамерунЦийчоьКолумбиКлиппертонКоста-РикаКубаКабо-" + - "ВердеКюрасаоГӀайре ӏиса пайхӏамар вина деКипрЧехиГерманиДиего-Гарси" + - "ДжибутиДаниДоминикаДоминикан РеспубликаАлжирСеута а, Мелилья аЭквад" + - "орЭстониМисарМалхбузен СаьхьараЭритрейИспаниЭфиопиЕвробартеврозонаФ" + - "инляндиФиджиФолклендан гӀайренашМикронезин Федеративни штаташФарери" + - "йн гӀайренашФранциГабонЙоккха БританиГренадаГуьржийчоьФранцузийн Гв" + - "ианаГернсиГанаГибралтарГренландиГамбиГвинейГваделупаЭкваторан Гвине" + - "йГрециКъилба Джорджи а, Къилба Гавайн гӀайренаш аГватемалаГуамГвине" + - "й-БисауГайанаГонконг (ша-къаьстина кӀошт)Херд гӀайре а, Макдональд " + - "гӀайренаш аГондурасХорватиГаитиВенгриКанаран гӀайренашИндонезиИрлан" + - "диИзраильМэн гӀайреХӀиндиБританин латта Индин океанехьӀиракъГӀажари" + - "йчоьИсландиИталиДжерсиЯмайкаУрданЯпониКениКиргизиКамбоджаКирибатиКо" + - "морашСент-Китс а, Невис аКъилбаседа КорейКъилба КорейКувейтКайман г" + - "ӀайренашКхазакхстанЛаосЛиванСент-ЛюсиЛихтенштейнШри-ЛанкаЛибериЛесо" + - "тоЛитваЛюксембургЛатвиЛивиМароккоМонакоМолдавиӀаьржаламанчоьСен-Мар" + - "тенМадагаскарМаршаллан гӀайренашМакедониМалиМьянма (Бирма)МонголиМа" + - "као (ша-къаьстина кӀошт)Къилбаседа Марианан гӀайренашМартиникаМаври" + - "таниМонтсерратМальтаМаврикиМальдивашМалавиМексикаМалайзиМозамбикНам" + - "ибиКерла КаледониНигерНорфолк гӀайреНигериНикарагуаНидерландашНорве" + - "гиНепалНауруНиуэКерла ЗеландиӀоманПанамаПеруФранцузийн ПолинезиПапу" + - "а — Керла ГвинейФилиппинашПакистанПольшаСен-Пьер а, Микелон аПиткэр" + - "н гӀайренашПуэрто-РикоПалестӀинан латтанашПортугалиПалауПарагвайКат" + - "арАрахьара ОкеаниРеюньонРумыниСербиРоссиРуандаСаӀудийн ӀаьрбийчоьСо" + - "ломонан гӀайренашСейшелан гӀайренашСуданШвециСингапурСийлахьчу Елен" + - "ин гӀайреСловениШпицберген а, Ян-Майен аСловакиСьерра- ЛеонеСан-Мар" + - "иноСенегалСомалиСуринамКъилба СуданСан-Томе а, Принсипи аСальвадорС" + - "инт-МартенШемаСвазилендТристан-да- КуньяТёркс а, Кайкос а гӀайренаш" + - "ЧадФранцузийн къилба латтанашТогоТаиландТаджикистанТокелауМалхбален" + - " ТиморТуркмениТунисТонгаТуркойчоьТринидад а, Тобаго аТувалуТайваньТа" + - "нзаниУкраинаУгандаАЦШн арахьара кегийн гӀайренашВовшахкхетта Къаьмн" + - "ийн ОрганизациЦхьанатоьхна ШтаташУругвайУзбекистанВатиканСент-Винсе" + - "нт а, Гренадинаш аВенесуэлаВиргинийн гӀайренаш (Британи)Виргинийн г" + - "Ӏайренаш (АЦШ)ВьетнамВануатуУоллис а, Футуна аСамоаКосовоЙеменМайот" + - "таКъилба-Африкин РеспубликаЗамбиЗимбабвеЙоьвзуш йоцу регионДерригду" + - "ьненанАфрикаКъилбаседа АмерикаКъилба АмерикаОкеаниМалхбузен АфрикаЮ" + - "ккъера АмерикаМалхбален АфрикаКъилбаседа АфрикаЮккъера АфрикаКъилба" + - " АфрикаКъилбаседа а, къилба а АмерикаКъилбаседа Америка – АЦШ а, Кан" + - "ада аКарибашЮккъера АзиКъилба АзиКъилба-малхбален АзиКъилба ЕвропаА" + - "встралазиМеланезиМикронезиПолинезиАзиЮккъера МалхбалеЮккъера а, Гер" + - "гара а МалхбалеЕвропаМалхбален ЕвропаКъилбаседа ЕвропаМалхбузен Евр" + - "опаЛатинан Америка", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0023, 0x0031, 0x0069, 0x007e, 0x00a2, 0x00b0, 0x00bc, - 0x00d0, 0x00dc, 0x00f0, 0x0102, 0x011d, 0x0129, 0x0139, 0x0143, - 0x0164, 0x017a, 0x01a2, 0x01b2, 0x01c4, 0x01d0, 0x01e8, 0x01f6, - 0x0204, 0x0212, 0x021c, 0x0235, 0x0258, 0x0279, 0x0285, 0x02bc, - 0x02ca, 0x02eb, 0x02f5, 0x030c, 0x031c, 0x032e, 0x0338, 0x0344, - 0x0367, 0x039b, 0x03cf, 0x03f0, 0x0400, 0x0416, 0x0433, 0x043b, - 0x0449, 0x0455, 0x0463, 0x0477, 0x048a, 0x0492, 0x04a5, 0x04b3, - 0x04e9, 0x04f1, 0x04f9, 0x0507, 0x051c, 0x052a, 0x0532, 0x0542, - // Entry 40 - 7F - 0x0569, 0x0573, 0x0593, 0x05a1, 0x05ad, 0x05b7, 0x05da, 0x05e8, - 0x05f4, 0x0600, 0x0610, 0x0620, 0x0630, 0x063a, 0x0661, 0x0699, - 0x06bc, 0x06c8, 0x06d2, 0x06ed, 0x06fb, 0x070f, 0x0730, 0x073c, - 0x0744, 0x0756, 0x0768, 0x0772, 0x077e, 0x0790, 0x07af, 0x07b9, - 0x0808, 0x081a, 0x0822, 0x0839, 0x0845, 0x0878, 0x08bc, 0x08cc, - 0x08da, 0x08e4, 0x08f0, 0x0911, 0x0921, 0x092f, 0x093d, 0x0950, - 0x095c, 0x0993, 0x099f, 0x09b5, 0x09c3, 0x09cd, 0x09d9, 0x09e5, - 0x09ef, 0x09f9, 0x0a01, 0x0a0f, 0x0a1f, 0x0a2f, 0x0a3d, 0x0a60, - // Entry 80 - BF - 0x0a7f, 0x0a96, 0x0aa2, 0x0ac1, 0x0ad7, 0x0adf, 0x0ae9, 0x0afa, - 0x0b10, 0x0b21, 0x0b2d, 0x0b39, 0x0b43, 0x0b57, 0x0b61, 0x0b69, - 0x0b77, 0x0b83, 0x0b91, 0x0bad, 0x0bc0, 0x0bd4, 0x0bf9, 0x0c09, - 0x0c11, 0x0c2a, 0x0c38, 0x0c67, 0x0c9f, 0x0cb1, 0x0cc3, 0x0cd7, - 0x0ce3, 0x0cf1, 0x0d03, 0x0d0f, 0x0d1d, 0x0d2b, 0x0d3b, 0x0d47, - 0x0d62, 0x0d6c, 0x0d87, 0x0d93, 0x0da5, 0x0dbb, 0x0dc9, 0x0dd3, - 0x0ddd, 0x0de5, 0x0dfe, 0x0e08, 0x0e14, 0x0e1c, 0x0e41, 0x0e67, - 0x0e7b, 0x0e8b, 0x0e97, 0x0ebc, 0x0edd, 0x0ef2, 0x0f19, 0x0f2b, - // Entry C0 - FF - 0x0f35, 0x0f45, 0x0f4f, 0x0f6c, 0x0f7a, 0x0f86, 0x0f90, 0x0f9a, - 0x0fa6, 0x0fcb, 0x0ff0, 0x1013, 0x101d, 0x1027, 0x1037, 0x1063, - 0x1071, 0x109c, 0x10aa, 0x10c2, 0x10d5, 0x10e3, 0x10ef, 0x10fd, - 0x1114, 0x113b, 0x114d, 0x1162, 0x116a, 0x117c, 0x119b, 0x11cc, - 0x11d2, 0x1204, 0x120c, 0x121a, 0x1230, 0x123e, 0x125b, 0x126b, - 0x1275, 0x127f, 0x1291, 0x12b5, 0x12c1, 0x12cf, 0x12dd, 0x12eb, - 0x12f7, 0x1330, 0x1370, 0x1395, 0x13a3, 0x13b7, 0x13c5, 0x13f8, - 0x140a, 0x1440, 0x146e, 0x147c, 0x148a, 0x14aa, 0x14b4, 0x14c0, - // Entry 100 - 13F - 0x14ca, 0x14d8, 0x1508, 0x1512, 0x1522, 0x1546, 0x1562, 0x156e, - 0x1591, 0x15ac, 0x15b8, 0x15d7, 0x15f4, 0x1613, 0x1634, 0x164f, - 0x1668, 0x169f, 0x16e1, 0x16ef, 0x1704, 0x1717, 0x173d, 0x1756, - 0x176a, 0x177a, 0x178c, 0x179c, 0x17a2, 0x17c1, 0x17f6, 0x1802, - 0x1821, 0x1842, 0x1861, 0x1861, 0x187e, - }, - }, - { // cgg - "AndoraAmahanga ga Buharabu ageeteereineAfuganistaniAngiguwa na BabudaAng" + - "wiraArubaniaArimeniyaAngoraArigentinaSamowa ya AmeerikaOsituriaOsitu" + - "reeriyaArubaAzabagyaniBoziniya na HezegovinaBabadosiBangaradeshiBubi" + - "rigiBokina FasoBurugariyaBahareniBurundiBeniniBerimudaBuruneiBoriivi" + - "yaBuraziiriBahamaButaniBotswanaBararusiBerizeKanadaDemokoratika Ripa" + - "aburika ya KongoEihanga rya Rwagati ya AfirikaKongoSwisiAivore Kosit" + - "iEbizinga bya KuukuChileKameruuniChinaKorombiyaKositarikaCubaEbizing" + - "a bya KepuvadeSaipurasiRipaaburika ya ZeekiBugirimaaniGyibutiDeenima" + - "akaDominikaRipaaburika ya DominicaArigyeriyaIkwedaEsitoniyaMisiriEri" + - "teriyaSipeyiniEthiyopiyaBufiniFigyiEbizinga bya FaakilandaMikironesi" + - "yaBufaransaGabooniBungyerezaGurenadaGyogiyaGuyana ya BufaransaGanaGi" + - "buraataGuriinirandiGambiyaGineGwaderupeGuniGuriisiGwatemaraGwamuGine" + - "bisauGuyanaHondurasiKorasiyaHaitiHangareIndoneeziyaIrerandiIsirairiI" + - "ndiyaIraakaIraaniAisilandiItareGyamaikaYorudaaniGyapaaniKenyaKirigiz" + - "istaniKambodiyaKiribatiKoromoSenti Kittis na NevisiKoreya AmatembaKo" + - "reya AmashuumaKuweitiEbizinga bya KayimaniKazakisitaniLayosiLebanoni" + - "Senti RusiyaLishenteniSirirankaLiberiyaLesothoLithuaniaLakizembaagaL" + - "atviyaLibyaMoroccoMonacoMoridovaMadagasikaEbizinga bya MarshaaMasedo" + - "oniaMariMyanamarMongoriaEbizinga by’amatemba ga MarianaMartiniqueMau" + - "riteeniyaMontserratiMaritaMaurishiasiMaridivesMarawiMexicomarayiziaM" + - "ozambiqueNamibiyaNiukaredoniaNaigyaEkizinga NorifokoNaigyeriyaNikara" + - "gwaHoorandiNoorweNepoNauruNiueNiuzirandiOmaaniPanamaPeruPolinesia ya" + - " BufaransaPapuaFiripinoPakisitaaniPoorandiSenti Piyerre na MikweronP" + - "itkainiPwetorikoPocugoPalaawuParagwaiKataRiyuniyoniRomaniyaRrashaRwa" + - "ndaSaudi AreebiyaEbizinga bya SurimaaniShesheresiSudaniSwideniSingap" + - "oSenti HerenaSirovaaniyaSirovaakiyaSirra RiyooniSamarinoSenegoSomaar" + - "iyaSurinaamuSawo Tome na PurinsipoEri SalivadoSiriyaSwazirandiEbizin" + - "ga bya Buturuki na KaikoChadiTogoTairandiTajikisitaniTokerawuBurugwe" + - "izooba bwa TimoriTurukimenisitaniTuniziaTongaButuruki /TakeTurinidad" + - " na TobagoTuvaruTayiwaaniTanzaniaUkureiniUgandaAmerikaUrugwaiUzibeki" + - "sitaniVatikaniSenti Vinsent na GurenadiniVenezuweraEbizinga bya Viri" + - "gini ebya BungyerezaEbizinga bya Virigini ebya AmerikaViyetinaamuVan" + - "uatuWarris na FutunaSamowaYemeniMayoteSausi AfirikaZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054, - 0x005d, 0x0063, 0x0063, 0x006d, 0x007f, 0x0087, 0x0093, 0x0098, - 0x0098, 0x00a2, 0x00b8, 0x00c0, 0x00cc, 0x00d4, 0x00df, 0x00e9, - 0x00f1, 0x00f8, 0x00fe, 0x00fe, 0x0106, 0x010d, 0x0116, 0x0116, - 0x011f, 0x0125, 0x012b, 0x012b, 0x0133, 0x013b, 0x0141, 0x0147, - 0x0147, 0x0168, 0x0186, 0x018b, 0x0190, 0x019d, 0x01af, 0x01b4, - 0x01bd, 0x01c2, 0x01cb, 0x01cb, 0x01d5, 0x01d9, 0x01ee, 0x01ee, - 0x01ee, 0x01f7, 0x020b, 0x0216, 0x0216, 0x021d, 0x0227, 0x022f, - // Entry 40 - 7F - 0x0246, 0x0250, 0x0250, 0x0256, 0x025f, 0x0265, 0x0265, 0x026e, - 0x0276, 0x0280, 0x0280, 0x0280, 0x0286, 0x028b, 0x02a2, 0x02ae, - 0x02ae, 0x02b7, 0x02be, 0x02c8, 0x02d0, 0x02d7, 0x02ea, 0x02ea, - 0x02ee, 0x02f7, 0x0303, 0x030a, 0x030e, 0x0317, 0x031b, 0x0322, - 0x0322, 0x032b, 0x0330, 0x0339, 0x033f, 0x033f, 0x033f, 0x0348, - 0x0350, 0x0355, 0x035c, 0x035c, 0x0367, 0x036f, 0x0377, 0x0377, - 0x037d, 0x037d, 0x0383, 0x0389, 0x0392, 0x0397, 0x0397, 0x039f, - 0x03a8, 0x03b0, 0x03b5, 0x03c2, 0x03cb, 0x03d3, 0x03d9, 0x03ef, - // Entry 80 - BF - 0x03fe, 0x040e, 0x0415, 0x042a, 0x0436, 0x043c, 0x0444, 0x0450, - 0x045a, 0x0463, 0x046b, 0x0472, 0x047b, 0x0487, 0x048e, 0x0493, - 0x049a, 0x04a0, 0x04a8, 0x04a8, 0x04a8, 0x04b2, 0x04c6, 0x04d0, - 0x04d4, 0x04dc, 0x04e4, 0x04e4, 0x0505, 0x050f, 0x051b, 0x0526, - 0x052c, 0x0537, 0x0540, 0x0546, 0x054c, 0x0555, 0x055f, 0x0567, - 0x0573, 0x0579, 0x058a, 0x0594, 0x059d, 0x05a5, 0x05ab, 0x05af, - 0x05b4, 0x05b8, 0x05c2, 0x05c8, 0x05ce, 0x05d2, 0x05e8, 0x05ed, - 0x05f5, 0x0600, 0x0608, 0x0621, 0x0629, 0x0632, 0x0632, 0x0638, - // Entry C0 - FF - 0x063f, 0x0647, 0x064b, 0x064b, 0x0655, 0x065d, 0x065d, 0x0663, - 0x0669, 0x0677, 0x068d, 0x0697, 0x069d, 0x06a4, 0x06ab, 0x06b7, - 0x06c2, 0x06c2, 0x06cd, 0x06da, 0x06e2, 0x06e8, 0x06f1, 0x06fa, - 0x06fa, 0x0710, 0x071c, 0x071c, 0x0722, 0x072c, 0x072c, 0x074a, - 0x074f, 0x074f, 0x0753, 0x075b, 0x0767, 0x076f, 0x0787, 0x0797, - 0x079e, 0x07a3, 0x07b1, 0x07c4, 0x07ca, 0x07d3, 0x07db, 0x07e3, - 0x07e9, 0x07e9, 0x07e9, 0x07f0, 0x07f7, 0x0804, 0x080c, 0x0827, - 0x0831, 0x0856, 0x0878, 0x0883, 0x088a, 0x089a, 0x08a0, 0x08a0, - // Entry 100 - 13F - 0x08a6, 0x08ac, 0x08b9, 0x08bf, 0x08c7, - }, - }, - { // chr - "ᎤᎵᏌᎳᏓᏅ ᎤᎦᏚᏛᎢᎠᏂᏙᎳᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᎡᎳᏈ ᎢᎹᎵᏘᏏᎠᏫᎨᏂᏍᏖᏂᎤᏪᏘ ᎠᎴ ᏆᏊᏓᎠᏂᎩᎳᎠᎵᏇᏂᏯᎠᎵᎻᏂᎠᎠᏂᎪᎳᏧ" + - "ᏁᏍᏓᎸᎠᏥᏂᏘᏂᎠᎠᎺᎵᎧ ᏌᎼᎠᎠᏍᏟᏯᎡᎳᏗᏜᎠᎷᏆᎣᎴᏅᏓ ᏚᎦᏚᏛᎢᎠᏎᏆᏣᏂᏉᏏᏂᎠ ᎠᎴ ᎲᏤᎪᏫᏆᏇᏙᏍᏆᏂᎦᎵᏕᏍ" + - "ᏇᎵᏥᎥᎻᏋᎩᎾ ᏩᏐᏊᎵᎨᎵᎠᏆᎭᎴᎢᏂᏋᎷᏂᏗᏆᏂᎢᏂᎤᏓᏅᏘ ᏆᏕᎳᎻᏆᏊᏓᏊᎾᎢᏉᎵᏫᎠᎧᎵᏈᎢᏂᎯ ᎾᏍᎩᏁᏛᎳᏂᏆᏏᎵᎾ" + - "ᏍᎩ ᏆᎭᎹᏍᏊᏔᏂᏊᏪ ᎤᎦᏚᏛᎢᏆᏣᏩᎾᏇᎳᎷᏍᏇᎵᏍᎨᎾᏓᎪᎪᏍ (ᎩᎵᏂ) ᏚᎦᏚᏛᎢᎧᏂᎪ - ᎨᏂᏝᏌᎬᎿᎨᏍᏛ ᎠᏰᏟ" + - " ᏍᎦᏚᎩᎧᏂᎪ - ᏆᏌᏩᎵᏍᏫᏍᎢᏬᎵ ᎾᎿ ᎠᎹᏳᎶᏗᎠᏓᏍᏓᏴᎲᏍᎩ ᏚᎦᏚᏛᎢᏥᎵᎧᎹᎷᏂᏓᎶᏂᎨᏍᏛᎪᎸᎻᏈᎢᎠᎦᏂᏴᏔᏅᎣ" + - "ᏓᎸ ᎤᎦᏚᏛᎢᎪᏍᏓ ᎵᎧᎫᏆᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗᎫᎳᎨᎣᏓᏂᏍᏓᏲᎯᎲ ᎤᎦᏚᏛᎢᏌᎢᏆᏍᏤᎩᎠᎠᏂᏛᏥᏗᏰᎪ ᎦᏏᏯᏥᏊᏗᏗ" + - "ᏂᎹᎦᏙᎻᏂᎧᏙᎻᏂᎧᏂ ᏍᎦᏚᎩᎠᎵᏥᎵᏯᏑᏔ ᎠᎴ ᎺᎵᏯᎡᏆᏙᎵᎡᏍᏙᏂᏯᎢᏥᏈᎢᏭᏕᎵᎬ ᏗᏜ ᏌᎮᎳᎡᎵᏟᏯᎠᏂᏍᏆᏂᏱᎢ" + - "ᏗᎣᏈᎠᏳᎳᏛ ᎠᏂᎤᎾᏓᏡᎬᏳᎶᎠᏍᏓᏅᏅᏫᏂᎦᏙᎯᏫᏥᏩᎩ ᏚᎦᏚᏛᎢᎹᎢᏉᏂᏏᏯᏪᎶ ᏚᎦᏚᏛᎢᎦᎸᏥᏱᎦᏉᏂᎩᎵᏏᏲᏋᎾᏓᏣ" + - "ᎠᏥᎢᎠᏂᎦᎸᏥ ᎩᎠᎬᏂᏏᎦᎠᎾᏥᏆᎵᏓᎢᏤᏍᏛᏱᎦᎹᏈᎢᎠᎩᎢᏂᏩᏓᎷᏇᎡᏆᏙᎵᎠᎵ ᎩᎢᏂᎪᎢᎯᏧᎦᏃᏮ ᏣᎠᏥᎢ ᎠᎴ ᎾᏍ" + - "Ꭹ ᏧᎦᏃᏮ ᎠᏍᏛᎭᏟ ᏚᎦᏚᏛᎢᏩᏔᎹᎳᏆᎻᎩᎢᏂ-ᏈᏌᎤᏫᎦᏯᎾᎰᏂᎩ ᎪᏂᎩ ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎢᎬᎾᏕᎾ ᏓᎶ" + - "ᏂᎨᏍᏛᎲᏗ ᎤᎦᏚᏛᎢ ᎠᎴ ᎺᎩᏓᎾᎵᏗ ᏚᎦᏚᏛᎢᎭᏂᏚᎳᏍᎧᎶᎡᏏᎠᎮᎢᏘᎲᏂᎦᎵᏥᏍᏆ ᏚᎦᏚᏛᎢᎢᏂᏙᏂᏍᏯᎠᏲᎳᏂᎢᏏ" + - "ᎵᏱᎤᏍᏗ ᎤᎦᏚᏛᎢ ᎾᎿ ᎠᏍᎦᏯᎢᏅᏗᎾᏈᏗᏏ ᏴᏫᏯ ᎠᎺᏉ ᎢᎬᎾᏕᏅᎢᎳᎩᎢᎴᏂᏧᏁᏍᏓᎸᎯᎢᏔᎵᏨᎵᏏᏣᎺᎢᎧᏦᏓᏂᏣ" + - "ᏩᏂᏏᎨᏂᏯᎩᎵᏣᎢᏍᎧᎹᏉᏗᎠᏂᎧᎵᏆᏘᎪᎼᎳᏍᎤᏓᏅᏘ ᎨᏘᏏ ᎠᎴ ᏁᏪᏏᏧᏴᏢ ᎪᎵᎠᏧᎦᏃᏮ ᎪᎵᎠᎫᏪᎢᏘᎨᎢᎹᏂ ᏚᎦ" + - "ᏚᏛᎢᎧᏎᎧᏍᏕᏂᎴᎣᏍᎴᏆᎾᏂᎤᏓᏅᏘ ᎷᏏᏯᎵᎦᏗᏂᏍᏓᏂᏍᎵ ᎳᏂᎧᎳᏈᎵᏯᎴᏐᏙᎵᏗᏪᏂᎠᎸᎧᏎᏋᎩᎳᏘᏫᎠᎵᏈᏯᎼᎶᎪᎹᎾ" + - "ᎪᎹᎵᏙᏫᎠᎼᏂᏔᏁᎦᎶᎤᏓᏅᏘ ᏡᏡᎹᏓᎦᏍᎧᎵᎹᏌᎵ ᏚᎦᏚᏛᎢᎹᏎᏙᏂᏯᎹᎵᎹᏯᎹᎵᎹᏂᎪᎵᎠᎹᎧᎣ (ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍ" + - "ᏓᏁᏗ ᎢᎬᎾᏕᎾ) ᏣᎢᏧᏴᏢ ᏗᏜ ᎹᎵᎠᎾ ᏚᎦᏚᏛᎢᎹᏘᏂᎨᎹᏘᎢᏯᎹᏂᏘᏌᎳᏗᎹᎵᏔᎼᎵᏏᎥᏍᎹᎵᏗᏫᏍᎹᎳᏫᎠᏂᏍᏆᏂᎹ" + - "ᎴᏏᎢᎠᎼᏎᎻᏇᎩᎾᎻᏈᎢᏯᎢᏤ ᎧᎵᏙᏂᎠᏂᎾᎢᏨᏃᎵᏬᎵᎩ ᎤᎦᏚᏛᎢᏂᏥᎵᏯᏂᎧᎳᏆᏁᏛᎳᏂᏃᏪᏁᏆᎵᏃᎤᎷᏂᏳᎢᏤ ᏏᎢᎴᏂ" + - "ᏗᎣᎺᏂᏆᎾᎹᏇᎷᎠᏂᎦᎸᏥ ᏆᎵᏂᏏᎠᏆᏇ ᎢᏤ ᎩᎢᏂᎠᏂᏈᎵᎩᏃᏆᎩᏍᏖᏂᏉᎳᏂᎤᏓᏅᏘ ᏈᏰ ᎠᎴ ᎻᏇᎶᏂᏈᎧᎵᏂ ᏚᎦᏚ" + - "ᏛᎢᏇᎡᏙ ᎵᎢᎪᏆᎴᏍᏗᏂᎠᏂ ᏄᎬᏫᏳᏌᏕᎩᏉᏥᎦᎳᏆᎴᎠᏫᏆᎳᏇᎢᏯᎧᏔᎵᎠᏍᏛ ᎣᏏᏰᏂᎠᎴᏳᏂᎠᏂᎶᎹᏂᏯᏒᏈᏯᏲᏂᎢᎶᏩ" + - "ᏂᏓᏌᎤᏗ ᎡᎴᏈᎠᏐᎶᎹᏂ ᏚᎦᏚᏛᎢᏏᎡᏥᎵᏍᏑᏕᏂᏍᏫᏕᏂᏏᏂᎦᏉᎵᎤᏓᏅᏘ ᎮᎵᎾᏍᎶᏫᏂᎠᏍᏩᎵᏆᎵᏗ ᎠᎴ ᏤᏂ ᎹᏰᏂ" + - "ᏍᎶᏩᎩᎠᏏᎡᎳ ᎴᎣᏂᎤᏓᏅᏘ ᎹᎵᎢᏃᏏᏂᎦᎵᏐᎹᎵᏒᎵᎾᎻᏧᎦᎾᏮ ᏑᏕᏂᏌᎣ ᏙᎺ ᎠᎴ ᏈᏂᏏᏇᎡᎵᏌᎵᏆᏙᎵᏏᏂᏘ ᎹᏘ" + - "ᏂᏏᎵᎠᎠᏂᏍᏩᏏᎢᏟᏍᏛᏂ Ꮣ ᎫᎾᎭᎠᏂᏛᎵᎩ ᎠᎴ ᎨᎢᎪ ᏚᎦᏚᏛᎢᏣᏗᎠᏂᎦᎸᏥ ᏧᎦᎾᏮ ᎦᏙᎯ ᎤᎵᏍᏛᎢᏙᎪᏔᏯᎴᏂ" + - "ᏔᏥᎩᏍᏕᏂᏙᎨᎳᏭᏘᎼᎵ-ᎴᏍᏖᏛᎵᎩᎺᏂᏍᏔᏂᏚᏂᏏᏍᎠᏔᏂᎪᎬᏃᏟᏂᏕᏗ ᎠᎴ ᏙᏆᎪᏚᏩᎷᏔᎢᏩᏂᏖᏂᏏᏂᏯᏳᎧᎴᏂᏳᎦᏂᏓ" + - "U.S. ᎠᏍᏛ ᏚᎦᏚᏛᎢᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᎠᏰᎵ ᏚᎾᏙᏢᏒᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩᏳᎷᏇᎤᏍᏇᎩᏍᏖᏂᎠᏥᎳᏁᏠ ᎦᏚᎲ" + - "ᎤᏓᏅᏘ ᏫᏂᏏᏂᏗ ᎠᎴ ᎾᏍᎩ ᏇᎾᏗᏁᏍᏪᏁᏑᏪᎳᏈᏗᏍ ᎠᏒᏂᎸ ᏂᎨᏒᎾ ᏚᎦᏚᏛᎢU.S. ᎠᏒᏂᎸ ᏂᎨᏒᎾ ᏚᎦᏚᏛ" + - "ᎢᏫᎡᏘᎾᎻᏩᏂᎤᏩᏚᏩᎵᏍ ᎠᎴ ᏊᏚᎾᏌᎼᎠᎪᏐᏉᏰᎺᏂᎺᏯᏖᏧᎦᎾᏮ ᎬᎿᎨᏍᏛᏌᎻᏈᏯᏏᎻᏆᏇᏄᏬᎵᏍᏛᎾ ᎤᏔᏂᏗᎦᏙᎯᎡ" + - "ᎶᎯᎬᎿᎨᏍᏛᏧᏴᏢ ᎠᎹᏰᏟᏧᎦᏃᏮ ᎠᎺᎵᎦᎣᏏᏰᏂᎠᏭᏕᎵᎬ ᏗᏜ ᎬᎿᎨᏍᏛᎠᏰᏟ ᎠᎹᏰᏟᏗᎧᎸᎬ ᏗᏜ ᎬᎿᎨᏍᏛᏧᏴᏢ" + - " ᏗᏜ ᎬᎿᎨᏍᏛᎠᏰᏟ ᎬᎿᎨᏍᏛᏧᎦᎾᏮ ᏗᏜ ᎬᎿᎨᏍᏛᎠᎺᎵᎦᎢᏧᏴᏢ ᏗᏜ ᎠᎹᏰᏟᎨᏆᏙᏯᏗᎧᎸᎬ ᏗᏜ ᏓᎶᏂᎨᏍᏛᏧᎦᎾ" + - "Ꮾ ᏗᏜ ᏓᎶᏂᎨᏍᏛᏧᎦᎾᏮ ᏗᎧᎸᎬ ᏓᎶᏂᎨᏍᏛᏧᎦᎾᏮ ᏗᏜ ᏳᎳᏛᎠᏍᏔᎴᏏᎠᎺᎳᏁᏏᎠᎠᏰᏟ ᏧᎾᎵᎪᎯ ᎾᎿ ᎹᎢᏉᏂ" + - "ᏏᏯ ᎢᎬᎾᏕᎾᏆᎵᏂᏏᎠᏓᎶᎾᎨᏍᏛᎠᏰᏟ ᏓᎶᏂᎨᏍᏛᏭᏕᎵᎬ ᏗᏜ ᏓᎶᏂᎨᏍᏛᏳᎳᏛᏗᎧᎸᎬ ᏗᏜ ᏳᎳᏛᏧᏴᏢ ᏗᏜ ᏳᎳ" + - "ᏛᏭᏕᎵᎬ ᏗᏜ ᏳᎳᏛᎳᏘᏂ ᎠᎹᏰᏟ", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0022, 0x002e, 0x0064, 0x0079, 0x0093, 0x009f, 0x00ae, - 0x00bd, 0x00c9, 0x00d8, 0x00ea, 0x0100, 0x010c, 0x0118, 0x0121, - 0x013d, 0x014c, 0x016c, 0x0178, 0x018a, 0x0199, 0x01a9, 0x01b8, - 0x01c7, 0x01d3, 0x01df, 0x01f8, 0x0201, 0x020a, 0x0216, 0x023e, - 0x0247, 0x025d, 0x0266, 0x027c, 0x0288, 0x0294, 0x029d, 0x02a6, - 0x02cb, 0x02e3, 0x0309, 0x0321, 0x032a, 0x034a, 0x0372, 0x0378, - 0x0384, 0x0396, 0x03a8, 0x03d0, 0x03e0, 0x03e6, 0x0405, 0x0411, - 0x0436, 0x0442, 0x044b, 0x0457, 0x046a, 0x0473, 0x047f, 0x048b, - // Entry 40 - 7F - 0x04a7, 0x04b6, 0x04cd, 0x04d9, 0x04e8, 0x04f4, 0x0511, 0x051d, - 0x052f, 0x053e, 0x055d, 0x0572, 0x0581, 0x0587, 0x059d, 0x05af, - 0x05c5, 0x05d1, 0x05da, 0x05e6, 0x05ef, 0x05fb, 0x0611, 0x061a, - 0x0623, 0x062f, 0x063e, 0x064d, 0x0656, 0x0662, 0x067e, 0x0687, - 0x06de, 0x06ea, 0x06f0, 0x0706, 0x070f, 0x076e, 0x07ae, 0x07bd, - 0x07cc, 0x07d5, 0x07e1, 0x07fa, 0x080c, 0x0818, 0x0824, 0x0851, - 0x085d, 0x088a, 0x0893, 0x089c, 0x08ae, 0x08b7, 0x08c0, 0x08cc, - 0x08d5, 0x08e1, 0x08ea, 0x08f9, 0x090b, 0x0917, 0x0923, 0x094a, - // Entry 80 - BF - 0x095d, 0x0973, 0x097f, 0x099b, 0x09ad, 0x09b6, 0x09c2, 0x09d8, - 0x09ed, 0x09fd, 0x0a09, 0x0a12, 0x0a21, 0x0a30, 0x0a3c, 0x0a45, - 0x0a4e, 0x0a57, 0x0a66, 0x0a78, 0x0a8b, 0x0a9d, 0x0ab6, 0x0ac5, - 0x0acb, 0x0ad7, 0x0ae6, 0x0b31, 0x0b5e, 0x0b6a, 0x0b76, 0x0b88, - 0x0b91, 0x0ba0, 0x0baf, 0x0bb8, 0x0bc7, 0x0bd6, 0x0be5, 0x0bf4, - 0x0c0d, 0x0c16, 0x0c35, 0x0c41, 0x0c4d, 0x0c59, 0x0c5f, 0x0c68, - 0x0c71, 0x0c77, 0x0c8d, 0x0c96, 0x0c9f, 0x0ca5, 0x0cc4, 0x0cdb, - 0x0ced, 0x0cfc, 0x0d05, 0x0d2c, 0x0d48, 0x0d5b, 0x0d86, 0x0d92, - // Entry C0 - FF - 0x0d9e, 0x0dad, 0x0db6, 0x0dcf, 0x0dde, 0x0dea, 0x0df3, 0x0dfc, - 0x0e08, 0x0e1e, 0x0e3a, 0x0e49, 0x0e52, 0x0e5e, 0x0e6d, 0x0e83, - 0x0e92, 0x0ebc, 0x0ecb, 0x0ede, 0x0ef7, 0x0f03, 0x0f0c, 0x0f18, - 0x0f2e, 0x0f4f, 0x0f64, 0x0f77, 0x0f80, 0x0f92, 0x0fac, 0x0fdc, - 0x0fe2, 0x1018, 0x101e, 0x102a, 0x103c, 0x1048, 0x105b, 0x1073, - 0x1082, 0x108b, 0x1091, 0x10ae, 0x10b7, 0x10c3, 0x10d2, 0x10de, - 0x10ea, 0x1108, 0x113e, 0x1167, 0x1170, 0x1185, 0x119e, 0x11db, - 0x11ea, 0x121d, 0x124b, 0x125a, 0x1269, 0x1283, 0x128c, 0x1295, - // Entry 100 - 13F - 0x129e, 0x12a7, 0x12c3, 0x12cf, 0x12db, 0x1303, 0x130c, 0x131b, - 0x1331, 0x134a, 0x1359, 0x137c, 0x1392, 0x13b5, 0x13d5, 0x13ee, - 0x1411, 0x1420, 0x143d, 0x1449, 0x146f, 0x1495, 0x14c1, 0x14de, - 0x14f0, 0x14ff, 0x1542, 0x1551, 0x1563, 0x157f, 0x15a5, 0x15ae, - 0x15cb, 0x15e5, 0x1602, 0x1602, 0x1618, - }, - }, - { // ckb - "ئاندۆرامیرنشینە یەکگرتووە عەرەبییەکانئەفغانستانئانتیگوا و باربودائەڵبانی" + - "ائەرمەنستانئەنگۆلائانتارکتیکائەرژەنتینساموای ئەمەریکایینەمسائوسترال" + - "یائارووبائازەربایجانبۆسنیا و ھەرزەگۆڤیناباربادۆسبەنگلادیشبەلژیکبورک" + - "ینافاسۆبولگاریابەحرەینبوروندیبێنینبۆلیڤیابرازیلبەھامابووتانبۆتسوانا" + - "بیلاڕووسبەلیزکانەداکۆنگۆ کینشاساکۆماری ئەفریقای ناوەڕاستسویسراکۆتدی" + - "ڤوارچیلیکامیرۆنچینکۆلۆمبیاکۆستاریکاکووباکەیپڤەردقیبرسکۆماری چیکئەڵم" + - "انیاجیبووتیدانمارکدۆمینیکاجەزایرئیکوادۆرمیسرئەریتریائیسپانیائەتیۆپی" + - "افینلاندفیجیمایکرۆنیزیافەڕەنساگابۆنشانشینی یەکگرتووگریناداگورجستانغ" + - "ەناگرینلاندگامبیاگینێیۆنانگواتیمالاگوامگینێ بیساوگویاناھۆندووراسکرۆ" + - "واتیاھایتیمەجارستانئیندۆنیزیائیرلەندئیسرائیلھیندستانعێراقئێرانئایسل" + - "ەندئیتاڵیجامایکائوردنژاپۆنقرغیزستانکەمبۆدیاکیریباسدوورگەکانی کۆمۆرس" + - "ەینت کیتس و نیڤیسکۆریای باکوورکوەیتکازاخستانلاوسلوبنانسەینت لووسیال" + - "یختنشتاینسریلانکالیبەریالەسۆتۆلیتوانایالوکسەمبورگلاتڤیالیبیامەغریبم" + - "ۆناکۆمۆلدۆڤامۆنتینیگرۆماداگاسکاردوورگەکانی مارشاڵمالیمیانمارمەنگۆلی" + - "امۆریتانیاماڵتامالدیڤمالاویمەکسیکمالیزیامۆزامبیکنامیبیانیجەرنیکاراگ" + - "واھۆڵەندانۆرویژنیپالنائوروونیوزیلاندعومانپاناماپیرووپاپوا گینێی نوێ" + - "فلیپینپاکستانپۆڵەنداپورتوگالپالاوپاراگوایقەتەرڕۆمانیاسربیاڕووسیاڕوا" + - "نداعەرەبستانی سەعوودیدوورگەکانی سلێمانسیشێلسوودانسویدسینگاپورسلۆڤێن" + - "یاسلۆڤاکیاسیەرالیۆنسان مارینۆسینیگالسۆمالیاسورینامساوتۆمێ و پرینسیپ" + - "یئێلسالڤادۆرسووریاسوازیلاندچادتۆگۆتایلەندتاجیکستانتورکمانستانتوونست" + - "ۆنگاتورکیاترینیداد و تۆباگوتووڤالووتایوانتانزانیائۆکرانیائوگانداویل" + - "ایەتە یەکگرتووەکانئوروگوایئوزبەکستانڤاتیکانسەینت ڤینسەنت و گرینادین" + - "زڤیەتنامڤانوواتووساموایەمەنئەفریقای باشوورزامبیازیمبابویئەورووپای ب" + - "اشووریئاسیای ناوەندیئاسیای ڕۆژاوا", - []uint16{ // 287 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000e, 0x0048, 0x005c, 0x007e, 0x007e, 0x008e, - 0x00a2, 0x00b0, 0x00c6, 0x00d8, 0x00f9, 0x0103, 0x0115, 0x0123, - 0x0123, 0x0139, 0x015f, 0x016f, 0x0181, 0x018d, 0x01a3, 0x01b3, - 0x01c1, 0x01cf, 0x01d9, 0x01d9, 0x01d9, 0x01d9, 0x01e7, 0x01e7, - 0x01f3, 0x01ff, 0x020b, 0x020b, 0x021b, 0x022b, 0x0235, 0x0241, - 0x0241, 0x025a, 0x0288, 0x0288, 0x0294, 0x02a6, 0x02a6, 0x02ae, - 0x02bc, 0x02c2, 0x02d2, 0x02d2, 0x02e4, 0x02ee, 0x02fe, 0x02fe, - 0x02fe, 0x0308, 0x031b, 0x032b, 0x032b, 0x0339, 0x0347, 0x0357, - // Entry 40 - 7F - 0x0357, 0x0363, 0x0363, 0x0373, 0x0373, 0x037b, 0x037b, 0x038b, - 0x039b, 0x03ab, 0x03ab, 0x03ab, 0x03b9, 0x03c1, 0x03c1, 0x03d7, - 0x03d7, 0x03e5, 0x03ef, 0x040e, 0x041c, 0x042c, 0x042c, 0x042c, - 0x0434, 0x0434, 0x0444, 0x0450, 0x0458, 0x0458, 0x0458, 0x0462, - 0x0462, 0x0474, 0x047c, 0x048f, 0x049b, 0x049b, 0x049b, 0x04ad, - 0x04bd, 0x04c7, 0x04d9, 0x04d9, 0x04ed, 0x04fb, 0x050b, 0x050b, - 0x051b, 0x051b, 0x0525, 0x052f, 0x053f, 0x054b, 0x054b, 0x0559, - 0x0563, 0x056d, 0x056d, 0x057f, 0x058f, 0x059d, 0x05bc, 0x05dd, - // Entry 80 - BF - 0x05f6, 0x05f6, 0x0600, 0x0600, 0x0612, 0x061a, 0x0626, 0x063d, - 0x0651, 0x0661, 0x066f, 0x067b, 0x068d, 0x06a1, 0x06ad, 0x06b7, - 0x06c3, 0x06cf, 0x06dd, 0x06f1, 0x06f1, 0x0705, 0x0726, 0x0726, - 0x072e, 0x073c, 0x074c, 0x074c, 0x074c, 0x074c, 0x075e, 0x075e, - 0x0768, 0x0768, 0x0774, 0x0780, 0x078c, 0x079a, 0x07aa, 0x07b8, - 0x07b8, 0x07c2, 0x07c2, 0x07c2, 0x07d4, 0x07e2, 0x07ee, 0x07f8, - 0x0806, 0x0806, 0x0818, 0x0822, 0x082e, 0x0838, 0x0838, 0x0854, - 0x0860, 0x086e, 0x087c, 0x087c, 0x087c, 0x087c, 0x087c, 0x088c, - // Entry C0 - FF - 0x0896, 0x08a6, 0x08b0, 0x08b0, 0x08b0, 0x08be, 0x08c8, 0x08d4, - 0x08e0, 0x0903, 0x0924, 0x092e, 0x093a, 0x0942, 0x0952, 0x0952, - 0x0962, 0x0962, 0x0972, 0x0984, 0x0997, 0x09a5, 0x09b3, 0x09c1, - 0x09c1, 0x09e3, 0x09f9, 0x09f9, 0x0a05, 0x0a17, 0x0a17, 0x0a17, - 0x0a1d, 0x0a1d, 0x0a25, 0x0a33, 0x0a45, 0x0a45, 0x0a45, 0x0a5b, - 0x0a65, 0x0a6f, 0x0a7b, 0x0a9b, 0x0aab, 0x0ab7, 0x0ac7, 0x0ad7, - 0x0ae5, 0x0ae5, 0x0ae5, 0x0b0e, 0x0b1e, 0x0b32, 0x0b40, 0x0b6f, - 0x0b6f, 0x0b6f, 0x0b6f, 0x0b7d, 0x0b8f, 0x0b8f, 0x0b99, 0x0b99, - // Entry 100 - 13F - 0x0ba3, 0x0ba3, 0x0bc0, 0x0bcc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, - 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, - 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bdc, 0x0bfd, - 0x0bfd, 0x0bfd, 0x0bfd, 0x0bfd, 0x0bfd, 0x0c18, 0x0c31, - }, - }, - { // cs - csRegionStr, - csRegionIdx, - }, - { // cy - "Ynys AscensionAndorraEmiradau Arabaidd UnedigAfghanistanAntigua a Barbud" + - "aAnguillaAlbaniaArmeniaAngolaAntarcticaYr ArianninSamoa AmericaAwstr" + - "iaAwstraliaArubaYnysoedd ÅlandAzerbaijanBosnia a HerzegovinaBarbados" + - "BangladeshGwlad BelgBurkina FasoBwlgariaBahrainBurundiBeninSaint Bar" + - "thélemyBermudaBruneiBolifiaAntilles yr IseldiroeddBrasilY BahamasBhu" + - "tanYnys BouvetBotswanaBelarwsBelizeCanadaYnysoedd Cocos (Keeling)Y C" + - "ongo - KinshasaGweriniaeth Canolbarth AffricaY Congo - BrazzavilleY " + - "SwistirCôte d’IvoireYnysoedd CookChileCamerŵnTsieinaColombiaYnys Cli" + - "ppertonCosta RicaCiwbaCabo VerdeCuraçaoYnys y NadoligCyprusTsieciaYr" + - " AlmaenDiego GarciaDjiboutiDenmarcDominicaGweriniaeth DominicaAlgeri" + - "aCeuta a MelillaEcuadorEstoniaYr AifftGorllewin SaharaEritreaSbaenEt" + - "hiopiaYr Undeb EwropeaiddArdal yr EwroY FfindirFijiYnysoedd y Falkla" + - "nd/MalvinasMicronesiaYnysoedd FfaroFfraincGabonY Deyrnas UnedigGrena" + - "daGeorgiaGuyane FfrengigYnys y GarnGhanaGibraltarYr Ynys LasGambiaGu" + - "inéeGuadeloupeGuinea GyhydeddolGwlad GroegDe Georgia ac Ynysoedd San" + - "dwich y DeGuatemalaGuamGuiné-BissauGuyanaHong Kong RhGA TsieinaYnys " + - "Heard ac Ynysoedd McDonaldHondurasCroatiaHaitiHwngariYr Ynysoedd Ded" + - "wyddIndonesiaIwerddonIsraelYnys ManawIndiaTiriogaeth Brydeinig Cefnf" + - "or IndiaIracIranGwlad yr IâYr EidalJerseyJamaicaGwlad IorddonenJapan" + - "KenyaKyrgyzstanCambodiaKiribatiComorosSaint Kitts a NevisGogledd Kor" + - "eaDe KoreaKuwaitYnysoedd CaymanKazakstanLaosLibanusSaint LuciaLiecht" + - "ensteinSri LankaLiberiaLesothoLithuaniaLwcsembwrgLatfiaLibyaMorocoMo" + - "nacoMoldofaMontenegroSaint MartinMadagascarYnysoedd MarshallMacedoni" + - "aMaliMyanmar (Burma)MongoliaMacau RhGA TsieinaYnysoedd Gogledd Maria" + - "naMartiniqueMauritaniaMontserratMaltaMauritiusY MaldivesMalawiMecsic" + - "oMalaysiaMozambiqueNamibiaCaledonia NewyddNigerYnys NorfolkNigeriaNi" + - "caraguaYr IseldiroeddNorwyNepalNauruNiueSeland NewyddOmanPanamaPeriw" + - "Polynesia FfrengigPapua Guinea NewyddY PhilipinauPakistanGwlad PwylS" + - "aint-Pierre-et-MiquelonYnysoedd PitcairnPuerto RicoTiriogaethau Pale" + - "steinaiddPortiwgalPalauParaguayQatarOceania BellennigRéunionRwmaniaS" + - "erbiaRwsiaRwandaSaudi ArabiaYnysoedd SolomonSeychellesSwdanSwedenSin" + - "gaporeSaint HelenaSlofeniaSvalbard a Jan MayenSlofaciaSierra LeoneSa" + - "n MarinoSenegalSomaliaSurinameDe SwdanSão Tomé a PríncipeEl Salvador" + - "Sint MaartenSyriaGwlad SwaziTristan da CunhaYnysoedd Turks a CaicosT" + - "chadTiroedd Deheuol ac Antarctig FfraincTogoGwlad ThaiTajikistanToke" + - "lauTimor-LesteTurkmenistanTunisiaTongaTwrciTrinidad a TobagoTuvaluTa" + - "iwanTanzaniaWcráinUgandaYnysoedd Pellennig UDAy Cenhedloedd UnedigYr" + - " Unol DaleithiauUruguayUzbekistanY FaticanSaint Vincent a’r Grenadin" + - "esVenezuelaYnysoedd Gwyryf PrydainYnysoedd Gwyryf yr Unol Daleithiau" + - "FietnamVanuatuWallis a FutunaSamoaKosovoYemenMayotteDe AffricaZambia" + - "ZimbabweRhanbarth AnhysbysY BydAffricaGogledd AmericaDe AmericaOcean" + - "iaGorllewin AffricaCanolbarth AmericaDwyrain AffricaGogledd AffricaC" + - "anol AffricaDeheudir AffricaYr AmerigAmerica i’r Gogledd o FecsicoY " + - "CaribîDwyrain AsiaDe AsiaDe-Ddwyrain AsiaDe EwropAwstralasiaMelanesi" + - "aRhanbarth MicronesiaPolynesiaAsiaCanol AsiaGorllewin AsiaEwropDwyra" + - "in EwropGogledd EwropGorllewin EwropAmerica Ladin", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x0015, 0x002d, 0x0038, 0x0049, 0x0051, 0x0058, - 0x005f, 0x0065, 0x006f, 0x007a, 0x0087, 0x008e, 0x0097, 0x009c, - 0x00ab, 0x00b5, 0x00c9, 0x00d1, 0x00db, 0x00e5, 0x00f1, 0x00f9, - 0x0100, 0x0107, 0x010c, 0x011d, 0x0124, 0x012a, 0x0131, 0x0148, - 0x014e, 0x0157, 0x015d, 0x0168, 0x0170, 0x0177, 0x017d, 0x0183, - 0x019b, 0x01ad, 0x01cb, 0x01e0, 0x01e9, 0x01f9, 0x0206, 0x020b, - 0x0213, 0x021a, 0x0222, 0x0231, 0x023b, 0x0240, 0x024a, 0x0252, - 0x0260, 0x0266, 0x026d, 0x0276, 0x0282, 0x028a, 0x0291, 0x0299, - // Entry 40 - 7F - 0x02ad, 0x02b4, 0x02c3, 0x02ca, 0x02d1, 0x02d9, 0x02e9, 0x02f0, - 0x02f5, 0x02fd, 0x0310, 0x031d, 0x0326, 0x032a, 0x0346, 0x0350, - 0x035e, 0x0365, 0x036a, 0x037a, 0x0381, 0x0388, 0x0397, 0x03a2, - 0x03a7, 0x03b0, 0x03bb, 0x03c1, 0x03c8, 0x03d2, 0x03e3, 0x03ee, - 0x0412, 0x041b, 0x041f, 0x042c, 0x0432, 0x0448, 0x0467, 0x046f, - 0x0476, 0x047b, 0x0482, 0x0495, 0x049e, 0x04a6, 0x04ac, 0x04b6, - 0x04bb, 0x04dd, 0x04e1, 0x04e5, 0x04f1, 0x04f9, 0x04ff, 0x0506, - 0x0515, 0x051a, 0x051f, 0x0529, 0x0531, 0x0539, 0x0540, 0x0553, - // Entry 80 - BF - 0x0560, 0x0568, 0x056e, 0x057d, 0x0586, 0x058a, 0x0591, 0x059c, - 0x05a9, 0x05b2, 0x05b9, 0x05c0, 0x05c9, 0x05d3, 0x05d9, 0x05de, - 0x05e4, 0x05ea, 0x05f1, 0x05fb, 0x0607, 0x0611, 0x0622, 0x062b, - 0x062f, 0x063e, 0x0646, 0x0658, 0x0670, 0x067a, 0x0684, 0x068e, - 0x0693, 0x069c, 0x06a6, 0x06ac, 0x06b3, 0x06bb, 0x06c5, 0x06cc, - 0x06dc, 0x06e1, 0x06ed, 0x06f4, 0x06fd, 0x070b, 0x0710, 0x0715, - 0x071a, 0x071e, 0x072b, 0x072f, 0x0735, 0x073a, 0x074c, 0x075f, - 0x076b, 0x0773, 0x077d, 0x0795, 0x07a6, 0x07b1, 0x07cb, 0x07d4, - // Entry C0 - FF - 0x07d9, 0x07e1, 0x07e6, 0x07f7, 0x07ff, 0x0806, 0x080c, 0x0811, - 0x0817, 0x0823, 0x0833, 0x083d, 0x0842, 0x0848, 0x0851, 0x085d, - 0x0865, 0x0879, 0x0881, 0x088d, 0x0897, 0x089e, 0x08a5, 0x08ad, - 0x08b5, 0x08cb, 0x08d6, 0x08e2, 0x08e7, 0x08f2, 0x0902, 0x0919, - 0x091e, 0x0942, 0x0946, 0x0950, 0x095a, 0x0961, 0x096c, 0x0978, - 0x097f, 0x0984, 0x0989, 0x099a, 0x09a0, 0x09a6, 0x09ae, 0x09b5, - 0x09bb, 0x09d1, 0x09e5, 0x09f7, 0x09fe, 0x0a08, 0x0a11, 0x0a2f, - 0x0a38, 0x0a4f, 0x0a71, 0x0a78, 0x0a7f, 0x0a8e, 0x0a93, 0x0a99, - // Entry 100 - 13F - 0x0a9e, 0x0aa5, 0x0aaf, 0x0ab5, 0x0abd, 0x0acf, 0x0ad4, 0x0adb, - 0x0aea, 0x0af4, 0x0afb, 0x0b0c, 0x0b1e, 0x0b2d, 0x0b3c, 0x0b49, - 0x0b59, 0x0b62, 0x0b81, 0x0b8a, 0x0b96, 0x0b9d, 0x0bad, 0x0bb5, - 0x0bc0, 0x0bc9, 0x0bdd, 0x0be6, 0x0bea, 0x0bf4, 0x0c02, 0x0c07, - 0x0c14, 0x0c21, 0x0c30, 0x0c30, 0x0c3d, - }, - }, - { // da - daRegionStr, - daRegionIdx, - }, - { // dav - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // de - deRegionStr, - deRegionIdx, - }, - { // de-AT - "Svalbard und Jan Mayen", - []uint16{ // 210 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0016, - }, - }, - { // de-CH - "BruneiBotswanaWeissrusslandKapverdenGrossbritannienÄusseres OzeanienSalo" + - "mon-InselnOsttimorZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x000e, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - // Entry 40 - 7F - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - // Entry 80 - BF - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - // Entry C0 - FF - 0x0033, 0x0033, 0x0033, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, - 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, - 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, - 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - // Entry 100 - 13F - 0x005b, 0x005b, 0x005b, 0x005b, 0x0063, - }, - }, - {}, // de-LU - { // dje - "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" + - "lbaaniArmeeniAngoolaArgentineAmeriki SamoaOtrišiOstraaliAruubaAzerba" + - "ayijaŋBosni nda HerzegovineBarbaadosBangladešiBelgiikiBurkina fasoBu" + - "lgaariBahareenBurundiBeniŋBermudaBruuneeBooliviBreezilBahamasBuutaŋB" + - "otswaanaBilorišiBeliiziKanaadaKongoo demookaratiki labooCentraafriki" + - " koyraKongooSwisuKudwarKuuk gungeyŠiiliKameruunŠiinKolombiKosta rika" + - "KuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuutiDanemarkDoominiki lab" + - "ooAlžeeriEkwateerEstooniMisraEritreeEspaaɲeEcioopiFinlanduFijiKalkan" + - " gungeyMikroneziFaransiGaabonAlbaasalaama MargantaGrenaadaGorgiFaran" + - "si GuyaanGaanaGibraltarGrinlandGambiGineGwadeluupGinee EkwatorialGre" + - "eceGwatemaalaGuamGine-BissoGuyaaneHondurasKrwaasiHaitiHungaariIndone" + - "eziIrlanduIsrayelIndu labooBritiši Indu teekoo laamaIraakIraanAysela" + - "ndItaaliJamaayikUrdunJaapoŋKeeniyaKyrgyzstankamboogiKiribaatiKomoorS" + - "eŋ Kitts nda NevisGurma KooreeHawsa KooreeKuweetKayman gungeyKaazaks" + - "tanLaawosLubnaanSeŋ LussiaLiechtensteinSrilankaLiberiaLeesotoLituaan" + - "iLuxembourgLetooniLiibiMaarokMonakoMoldoviMadagascarMaršal gungeyMaa" + - "cedooniMaaliMaynamarMongooliMariana Gurma GungeyMartiniikiMooritaani" + - "MontserratMaltaMooris gungeyMaldiivuMalaawiMexikiMaleeziMozambikNaam" + - "ibiKaaledooni TaagaaNižerNorfolk GungooNaajiriiaNikaragwaHollanduNor" + - "veejNeepalNauruNiueZeelandu TaagaOmaanPanamaPeeruFaransi PolineeziPa" + - "pua Ginee TaagaFilipinePaakistanPoloɲeSeŋ Piyer nda MikelonPitikarin" + - "Porto RikoPalestine Dangay nda GaazaPortugaalPaluParaguweyKataarReen" + - "ioŋRumaaniIriši labooRwandaSaudiyaSolomon GungeySeešelSuudaŋSweedeSi" + - "ngapurSeŋ HelenaSloveeniSlovaakiSeera LeonSan MarinoSenegalSomaaliSu" + - "rinaamSao Tome nda PrinsipeSalvador labooSuuriaSwazilandTurk nda Kay" + - "ikos GungeyCaaduTogoTaayilandTaažikistanTokelauTimoor hawsaTurkmenis" + - "taŋTuniziTongaTurkiTrinidad nda TobaagoTuvaluTaayiwanTanzaaniUkreenU" + - "gandaAmeriki Laabu MarganteyUruguweyUzbeekistanVaatikan LaamaSeŋvins" + - "aŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik Virgin Gung" + - "eyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa Afriki Labo" + - "oZambiZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, - 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, - 0x0087, 0x0094, 0x00a9, 0x00b2, 0x00bd, 0x00c5, 0x00d1, 0x00d9, - 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f5, 0x00fc, 0x0103, 0x0103, - 0x010a, 0x0111, 0x0118, 0x0118, 0x0121, 0x012a, 0x0131, 0x0138, - 0x0138, 0x0152, 0x0164, 0x016a, 0x016f, 0x0175, 0x0180, 0x0186, - 0x018e, 0x0193, 0x019a, 0x019a, 0x01a4, 0x01a9, 0x01b7, 0x01b7, - 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01dd, - // Entry 40 - 7F - 0x01ec, 0x01f4, 0x01f4, 0x01fc, 0x0203, 0x0208, 0x0208, 0x020f, - 0x0217, 0x021e, 0x021e, 0x021e, 0x0226, 0x022a, 0x0237, 0x0240, - 0x0240, 0x0247, 0x024d, 0x0262, 0x026a, 0x026f, 0x027d, 0x027d, - 0x0282, 0x028b, 0x0293, 0x0298, 0x029c, 0x02a5, 0x02b5, 0x02bb, - 0x02bb, 0x02c5, 0x02c9, 0x02d3, 0x02da, 0x02da, 0x02da, 0x02e2, - 0x02e9, 0x02ee, 0x02f6, 0x02f6, 0x02ff, 0x0306, 0x030d, 0x030d, - 0x0317, 0x0331, 0x0336, 0x033b, 0x0343, 0x0349, 0x0349, 0x0351, - 0x0356, 0x035d, 0x0364, 0x036e, 0x0376, 0x037f, 0x0385, 0x0399, - // Entry 80 - BF - 0x03a5, 0x03b1, 0x03b7, 0x03c4, 0x03ce, 0x03d4, 0x03db, 0x03e6, - 0x03f3, 0x03fb, 0x0402, 0x0409, 0x0411, 0x041b, 0x0422, 0x0427, - 0x042d, 0x0433, 0x043a, 0x043a, 0x043a, 0x0444, 0x0452, 0x045c, - 0x0461, 0x0469, 0x0471, 0x0471, 0x0485, 0x048f, 0x0499, 0x04a3, - 0x04a8, 0x04b5, 0x04bd, 0x04c4, 0x04ca, 0x04d1, 0x04d9, 0x04e0, - 0x04f1, 0x04f7, 0x0505, 0x050e, 0x0517, 0x051f, 0x0526, 0x052c, - 0x0531, 0x0535, 0x0543, 0x0548, 0x054e, 0x0553, 0x0564, 0x0575, - 0x057d, 0x0586, 0x058d, 0x05a3, 0x05ac, 0x05b6, 0x05d0, 0x05d9, - // Entry C0 - FF - 0x05dd, 0x05e6, 0x05ec, 0x05ec, 0x05f4, 0x05fb, 0x05fb, 0x0607, - 0x060d, 0x0614, 0x0622, 0x0629, 0x0630, 0x0636, 0x063e, 0x0649, - 0x0651, 0x0651, 0x0659, 0x0663, 0x066d, 0x0674, 0x067b, 0x0683, - 0x0683, 0x0698, 0x06a6, 0x06a6, 0x06ac, 0x06b5, 0x06b5, 0x06cc, - 0x06d1, 0x06d1, 0x06d5, 0x06de, 0x06ea, 0x06f1, 0x06fd, 0x070a, - 0x0710, 0x0715, 0x071a, 0x072e, 0x0734, 0x073c, 0x0744, 0x074a, - 0x0750, 0x0750, 0x0750, 0x0767, 0x076f, 0x077a, 0x0788, 0x07a1, - 0x07ad, 0x07c3, 0x07d8, 0x07e0, 0x07e7, 0x07f8, 0x07fd, 0x07fd, - // Entry 100 - 13F - 0x0802, 0x0809, 0x081b, 0x0820, 0x0828, - }, - }, - { // dsb - "AscensionAndorraZjadnośone arabiske emiratyAfghanistanAntigua a BarbudaA" + - "nguillaAlbańskaArmeńskaAngolaAntarktisArgentinskaAmeriska SamoaAwstr" + - "iskaAwstralskaArubaÅlandAzerbajdžanBosniska a HercegowinaBarbadosBan" + - "gladešBelgiskaBurkina FasoBulgarskaBahrainBurundiBeninSt. Barthélemy" + - "BermudyBruneiBoliwiskaKaribiska NižozemskaBrazilskaBahamyBhutanBouve" + - "towa kupaBotswanaBěłoruskaBelizeKanadaKokosowe kupyKongo-KinshasaCen" + - "tralnoafriska republikaKongo-BrazzavilleŠwicarskaCôte d’IvoireCookow" + - "e kupyChilskaKamerunChinaKolumbiskaClippertonowa kupaKosta RikaKubaK" + - "ap VerdeCuraçaoGódowne kupyCypriskaČeska republikaNimskaDiego Garcia" + - "DžibutiDańskaDominikaDominikańska republikaAlgeriskaCeuta a MelillaE" + - "kwadorEstniskaEgyptojskaPódwjacorna SaharaEritrejaŠpańskaEtiopiskaEu" + - "ropska unijaFinskaFidžiFalklandske kupyMikroneziskaFäröjeFrancojskaG" + - "abunZjadnośone kralejstwoGrenadaGeorgiskaFrancojska GuyanaGuernseyGh" + - "anaGibraltarGrönlandskaGambijaGinejaGuadeloupeEkwatorialna GinejaGri" + - "chiskaPódpołdnjowa Georgiska a Pódpołdnjowe Sandwichowe kupyGuatemal" + - "aGuamGineja-BissauGuyanaWósebna zastojnstwowa cona HongkongHeardowa " + - "kupa a McDonaldowe kupyHondurasChorwatskaHaitiHungorskaKanariske kup" + - "yIndoneziskaIrskaIsraelManIndiskaBritiski indiskooceaniski teritoriu" + - "mIrakIranIslandskaItalskaJerseyJamaikaJordaniskaJapańskaKeniaKirgizi" + - "stanKambodžaKiribatiKomorySt. Kitts a NevisPódpołnocna KorejaPódpołd" + - "njowa KorejaKuwaitKajmaniske kupyKazachstanLaosLibanonSt. LuciaLiech" + - "tensteinSri LankaLiberijaLesothoLitawskaLuxemburgskaLetiskaLibyskaMa" + - "rokkoMonacoMoldawskaCarna GóraSt. MartinMadagaskarMarshallowe kupyMa" + - "kedońskaMaliMyanmarMongolskaWósebna zastojnstwowa cona MacaoPódpołno" + - "cne MarianyMartiniqueMawretańskaMontserratMaltaMauritiusMalediwyMala" + - "wiMexikoMalajzijaMosambikNamibijaNowa KaledoniskaNigerNorfolkowa kup" + - "aNigerijaNikaraguaNižozemskaNorwegskaNepalNauruNiueNowoseelandskaOma" + - "nPanamaPeruFrancojska PolyneziskaPapua-NeuguineaFilipinyPakistanPóls" + - "kaSt. Pierre a MiquelonPitcairnowe kupyPuerto RicoPalestinski awtono" + - "mny teritoriumPortugalskaPalauParaguayKatarwenkowna OceaniskaRéunion" + - "RumuńskaSerbiskaRuskaRuandaSaudi-ArabiskaSalomonySeychelleSudanŠweds" + - "kaSingapurSt. HelenaSłowjeńskaSvalbard a Jan MayenSłowakskaSierra Le" + - "oneSan MarinoSenegalSomalijaSurinamskaPódpołdnjowy SudanSão Tomé a P" + - "ríncipeEl SalvadorSint MaartenSyriskaSwasiskaTristan da CunhaTurks a" + - " Caicos kupyČadFrancojski pódpołdnjowy a antarktiski teritoriumTogoT" + - "hailandskaTadźikistanTokelauTimor-LesteTurkmeniskaTuneziskaTongaTurk" + - "ojskaTrinidad a TobagoTuvaluTaiwanTansanijaUkrainaUgandaAmeriska Oce" + - "aniskaZjadnośone staty AmerikiUruguayUzbekistanVatikańske městoSt. V" + - "incent a GrenadinyVenezuelaBritiske kněžniske kupyAmeriske kněžniske" + - " kupyVietnamVanuatuWallis a FutunaSamoaKosowoJemenMayottePódpołdnjow" + - "a Afrika (Republika)SambijaSimbabwenjeznaty regionswětAfrikaPódpołno" + - "cna AmerikaPódpołdnjowa AmerikaOceaniskaPódwjacorna AfrikaSrjejźna A" + - "merikapódzajtšna Afrikapódpołnocna Afrikasrjejźna Afrikapódpołdnjowa" + - " AfrikaAmerikapódpołnocny ameriski kontinentKaribiskapódzajtšna Azij" + - "apódpołdnjowa Azijakrotkozajtšna Azijapódpołdnjowa EuropaAwstralazij" + - "aMelaneziskaMikroneziska (kupowy region)PolyneziskaAzijacentralna Az" + - "ijapódwjacorna AzijaEuropapódzajtšna Europapódpołnocna Europapódwjac" + - "orna EuropaŁatyńska Amerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0048, 0x0050, 0x0059, - 0x0062, 0x0068, 0x0071, 0x007c, 0x008a, 0x0093, 0x009d, 0x00a2, - 0x00a8, 0x00b4, 0x00ca, 0x00d2, 0x00dc, 0x00e4, 0x00f0, 0x00f9, - 0x0100, 0x0107, 0x010c, 0x011b, 0x0122, 0x0128, 0x0131, 0x0146, - 0x014f, 0x0155, 0x015b, 0x0169, 0x0171, 0x017c, 0x0182, 0x0188, - 0x0195, 0x01a3, 0x01bd, 0x01ce, 0x01d8, 0x01e8, 0x01f4, 0x01fb, - 0x0202, 0x0207, 0x0211, 0x0223, 0x022d, 0x0231, 0x023a, 0x0242, - 0x024f, 0x0257, 0x0267, 0x026d, 0x0279, 0x0281, 0x0288, 0x0290, - // Entry 40 - 7F - 0x02a7, 0x02b0, 0x02bf, 0x02c6, 0x02ce, 0x02d8, 0x02eb, 0x02f3, - 0x02fc, 0x0305, 0x0313, 0x0313, 0x0319, 0x031f, 0x032f, 0x033b, - 0x0343, 0x034d, 0x0352, 0x0368, 0x036f, 0x0378, 0x0389, 0x0391, - 0x0396, 0x039f, 0x03ab, 0x03b2, 0x03b8, 0x03c2, 0x03d5, 0x03de, - 0x0418, 0x0421, 0x0425, 0x0432, 0x0438, 0x045c, 0x047c, 0x0484, - 0x048e, 0x0493, 0x049c, 0x04aa, 0x04b5, 0x04ba, 0x04c0, 0x04c3, - 0x04ca, 0x04ee, 0x04f2, 0x04f6, 0x04ff, 0x0506, 0x050c, 0x0513, - 0x051d, 0x0526, 0x052b, 0x0536, 0x053f, 0x0547, 0x054d, 0x055e, - // Entry 80 - BF - 0x0572, 0x0587, 0x058d, 0x059c, 0x05a6, 0x05aa, 0x05b1, 0x05ba, - 0x05c7, 0x05d0, 0x05d8, 0x05df, 0x05e7, 0x05f3, 0x05fa, 0x0601, - 0x0608, 0x060e, 0x0617, 0x0622, 0x062c, 0x0636, 0x0646, 0x0651, - 0x0655, 0x065c, 0x0665, 0x0686, 0x069b, 0x06a5, 0x06b1, 0x06bb, - 0x06c0, 0x06c9, 0x06d1, 0x06d7, 0x06dd, 0x06e6, 0x06ee, 0x06f6, - 0x0706, 0x070b, 0x071a, 0x0722, 0x072b, 0x0736, 0x073f, 0x0744, - 0x0749, 0x074d, 0x075b, 0x075f, 0x0765, 0x0769, 0x077f, 0x078e, - 0x0796, 0x079e, 0x07a5, 0x07ba, 0x07ca, 0x07d5, 0x07f5, 0x0800, - // Entry C0 - FF - 0x0805, 0x080d, 0x0812, 0x0824, 0x082c, 0x0835, 0x083d, 0x0842, - 0x0848, 0x0856, 0x085e, 0x0867, 0x086c, 0x0874, 0x087c, 0x0886, - 0x0892, 0x08a6, 0x08b0, 0x08bc, 0x08c6, 0x08cd, 0x08d5, 0x08df, - 0x08f3, 0x0909, 0x0914, 0x0920, 0x0927, 0x092f, 0x093f, 0x0952, - 0x0956, 0x0988, 0x098c, 0x0997, 0x09a3, 0x09aa, 0x09b5, 0x09c0, - 0x09c9, 0x09ce, 0x09d7, 0x09e8, 0x09ee, 0x09f4, 0x09fd, 0x0a04, - 0x0a0a, 0x0a1c, 0x0a1c, 0x0a35, 0x0a3c, 0x0a46, 0x0a58, 0x0a6f, - 0x0a78, 0x0a91, 0x0aaa, 0x0ab1, 0x0ab8, 0x0ac7, 0x0acc, 0x0ad2, - // Entry 100 - 13F - 0x0ad7, 0x0ade, 0x0aff, 0x0b06, 0x0b0e, 0x0b1d, 0x0b22, 0x0b28, - 0x0b3d, 0x0b53, 0x0b5c, 0x0b6f, 0x0b80, 0x0b93, 0x0ba7, 0x0bb7, - 0x0bcc, 0x0bd3, 0x0bf3, 0x0bfc, 0x0c0e, 0x0c22, 0x0c36, 0x0c4b, - 0x0c57, 0x0c62, 0x0c7e, 0x0c89, 0x0c8e, 0x0c9d, 0x0caf, 0x0cb5, - 0x0cc8, 0x0cdc, 0x0cef, 0x0cef, 0x0d01, - }, - }, - { // dua - "Cameroun", - []uint16{ // 49 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, - }, - }, - { // dyo - "AndorraAfganistanAntigua di BarbudaAngiiyaAlbaniArmeniAngolaArsantinSamo" + - "a yati AmerikOtrisOstraaliaArubaAserbaysanBosni di HersegovinBarbadB" + - "angladesBelsikBurukiina FasoBulgariBahraynBurundiBeneBermudBuruneyBo" + - "liiviBresilBahamaButanBoswanaBelarusBeliisKanadaMofam demokratik mat" + - "i KongoKongoKoddiwarCiliKamerunSiinKolombiKosta RikaKubaKap VerSiipr" + - "Mofam mati CekAlmaañJibutiDanmarkDominikaMofam mati DominikAlseriEku" + - "adorEstoniEsíptEritreeEspaañEcoopiFinlandFijiFransGabonGrenadaSeorsi" + - "GaanaSipraltaarGreenlandGambiGinéGuwadalupGresGuatemalaGuamGiné Bisa" + - "auGiyanOndurasKroasiAytiOŋriEndonesiIrlandIsraelEndIrakIranIislandIt" + - "aliSamaikSapoŋKeniyaKambojKomorSaŋ LusiaSiri LankaLiberiaMadagaskaar" + - "MaliEcinkey yati NoorfokAbari SaudiSudanSingapurSloveniSlovakiSerra " + - "LeonSenegalSomaliSalvadoorCadTogoTailand", - []uint16{ // 228 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0023, 0x002a, 0x0030, - 0x0036, 0x003c, 0x003c, 0x0044, 0x0055, 0x005a, 0x0063, 0x0068, - 0x0068, 0x0072, 0x0085, 0x008b, 0x0094, 0x009a, 0x00a8, 0x00af, - 0x00b6, 0x00bd, 0x00c1, 0x00c1, 0x00c7, 0x00ce, 0x00d5, 0x00d5, - 0x00db, 0x00e1, 0x00e6, 0x00e6, 0x00ed, 0x00f4, 0x00fa, 0x0100, - 0x0100, 0x011b, 0x011b, 0x0120, 0x0120, 0x0128, 0x0128, 0x012c, - 0x0133, 0x0137, 0x013e, 0x013e, 0x0148, 0x014c, 0x0153, 0x0153, - 0x0153, 0x0158, 0x0166, 0x016d, 0x016d, 0x0173, 0x017a, 0x0182, - // Entry 40 - 7F - 0x0194, 0x019a, 0x019a, 0x01a1, 0x01a7, 0x01ad, 0x01ad, 0x01b4, - 0x01bb, 0x01c1, 0x01c1, 0x01c1, 0x01c8, 0x01cc, 0x01cc, 0x01cc, - 0x01cc, 0x01d1, 0x01d6, 0x01d6, 0x01dd, 0x01e3, 0x01e3, 0x01e3, - 0x01e8, 0x01f2, 0x01fb, 0x0200, 0x0205, 0x020e, 0x020e, 0x0212, - 0x0212, 0x021b, 0x021f, 0x022b, 0x0230, 0x0230, 0x0230, 0x0237, - 0x023d, 0x0241, 0x0246, 0x0246, 0x024e, 0x0254, 0x025a, 0x025a, - 0x025d, 0x025d, 0x0261, 0x0265, 0x026c, 0x0271, 0x0271, 0x0277, - 0x0277, 0x027d, 0x0283, 0x0283, 0x0289, 0x0289, 0x028e, 0x028e, - // Entry 80 - BF - 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x028e, 0x0298, - 0x0298, 0x02a2, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, - 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02a9, 0x02b4, 0x02b4, 0x02b4, - 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, - 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, 0x02b8, - 0x02b8, 0x02b8, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, - // Entry C0 - FF - 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, 0x02cc, - 0x02cc, 0x02d7, 0x02d7, 0x02d7, 0x02dc, 0x02dc, 0x02e4, 0x02e4, - 0x02eb, 0x02eb, 0x02f2, 0x02fc, 0x02fc, 0x0303, 0x0309, 0x0309, - 0x0309, 0x0309, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, 0x0312, - 0x0315, 0x0315, 0x0319, 0x0320, - }, - }, - { // dz - "ཨེ་སེན་ཤུན་ཚོ་གླིང༌ཨཱན་དོ་རཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊསཨཕ་གྷ་ནི་སཏཱནཨན་" + - "ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌཨང་གི་ལཨཱལ་བེ་ནི་ཡཨར་མི་ནི་ཡཨང་གྷོ་ལའཛམ་གླ" + - "ིང་ལྷོ་མཐའི་ཁྱགས་གླིངཨར་ཇེན་ཊི་ནས་མོ་ཨ་ཡུ་ཨེས་ཨེ་མངའ་ཁོངསཨཱོས་ཊྲི་" + - "ཡཨཱོས་ཊྲེལ་ལི་ཡཨ་རུ་བཱཨ་ལནཌ་གླིང་ཚོམཨ་ཛར་བྷའི་ཇཱནབྷོས་ནི་ཡ་ ཨེནཌ་ " + - "ཧར་ཛི་གྷོ་བི་ནབྷར་བེ་ཌོསབངྒ་ལ་དེཤབྷེལ་ཇམབྷར་ཀི་ན་ ཕེ་སོབུལ་ག་རི་ཡབ" + - "ྷ་རེནབྷུ་རུན་ཌིབྷེ་ནིནསེནཊ་ བར་ཐོ་ལོམ་མིའུབར་མུ་ཌབྷྲུ་ནའིབྷེ་ལི་བི" + - "་ཡཀེ་རི་བི་ཡེན་ནེ་དར་ལནཌས྄བྲ་ཛིལབྷ་ཧ་མས྄འབྲུགབོའུ་ཝེཊ་མཚོ་གླིངབྷོཙ" + - "་ཝ་ནབེལ་ཨ་རུ་སུབྷེ་ལིཛཀེ་ན་ཌཀོ་ཀོས་གླིང་ཚོམཀོང་གྷོ ཀིན་ཤ་སསེན་ཊལ་ " + - "ཨཕ་རི་ཀཱན་ རི་པབ་ལིཀཀོང་གྷོ བྷྲ་ཛ་བིལསུ་ཝིཊ་ཛར་ལེནཌཀོ་ཊེ་ ཌི་ཨི་ཝོ" + - "་རེཀུག་གླིང་ཚོམཅི་ལིཀེ་མ་རུནརྒྱ་ནགཀོ་ལོམ་བྷི་ཡཀི་ལི་པེར་ཊོན་མཚོ་གླ" + - "ིང་ཀོས་ཊ་རི་ཀཀིའུ་བྷཀེཔ་བཱཌཀྱཱུར་ར་ཀོཁི་རིསྟ་མེས་མཚོ་གླིངསཱའི་པྲསཅ" + - "ེཀ་ རི་པབ་ལིཀཇཱར་མ་ནིཌི་ཡེ་གོ་གར་སིའོཇི་བྷུ་ཊིཌེན་མཱཀཌོ་མི་ནི་ཀཌོ་" + - "མི་ནི་ཀཱན་ རི་པབ་ལིཀཨཱལ་ཇི་རི་ཡསེ་ཨུ་ཏ་ ཨེནཌ་ མེལ་ལི་ལཨེ་ཁྭ་ཌོརཨེས" + - "་ཊོ་ནི་ཡཨི་ཇིབཊནུབ་ཕྱོགས་ ས་ཧཱ་རཨེ་རི་ཊྲེ་ཡཨིས་པེནཨི་ཐི་ཡོ་པི་ཡཡུ་" + - "རོབ་གཅིག་བསྡོམས་ཚོགས་པཕིན་ལེནཌཕི་ཇིཕལྐ་ལནྜ་གླིང་ཚོམམའི་ཀྲོ་ནི་ཤི་ཡ" + - "ཕཱའེ་རོ་གླིང་ཚོམཕྲཱནསགྷ་བྷོནཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམགྲྀ་ན་ཌཇཽར་ཇཱགུའི་ཡ" + - "་ན་ ཕྲནས྄་མངའ་ཁོངསགུ་ཨེརྣ་སིགྷ་ནཇིབ་རཱལ་ཊརགིརཱིན་ལནཌ྄གྷེམ་བི་ཡགྷི་" + - "ནིགོ་ཌེ་ལུ་པེཨེ་ཀུ་ཊོ་རེལ་ གི་ནིགིརིས྄སཱའུཐ་ཇཽར་ཇཱ་ དང་ སཱའུཐ་སེནཌ" + - "྄་ཝིཅ་གླིང་ཚོམགྷོ་ཊ་མ་ལགུ་འམ་ མཚོ་གླིངགྷི་ནི་ བྷི་སཱའུགྷ་ཡ་ནཧོང་ཀོ" + - "ང་ཅཱའི་ནཧཱརཌ་མཚོ་གླིང་ དང་ མེཀ་ཌོ་ནལཌ྄་གླིང་ཚོམཧཱན་ཌུ་རཱས྄ཀྲོ་ཨེ་ཤ" + - "ཧེ་ཊིཧཱང་གྷ་རིཀ་ནེ་རི་གླིང་ཚོམཨིན་ཌོ་ནེ་ཤི་ཡཨཱ་ཡ་ལེནཌཨིས་ར་ཡེལཨ་ཡུ" + - "ལ་ ཨོཕ་ མཱནརྒྱ་གརབྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངསཨི་རཱཀཨི་རཱནཨཱའི" + - "ས་ལེནཌཨི་ཊ་ལིཇེར་སིཇཱ་མཻ་ཀཇོར་ཌནཇ་པཱནཀེན་ཡཀིར་གིས་སཏཱནཀམ་བྷོ་ཌི་ཡཀ" + - "ི་རི་བ་ཏི་མཚོ་གླིངཀོ་མོ་རོསསེནཊ་ ཀིཊས་ དང་ ནེ་བིསབྱང་ ཀོ་རི་ཡལྷོ་ " + - "ཀོ་རི་ཡཀུ་ཝེཊཁེ་མེན་གླིང་ཚོམཀ་ཛགས་སཏཱནལཱ་ཝོསལེ་བ་ནོནསེནཊ་ ལུ་སི་ཡལ" + - "ིཀ་ཏནས་ཏ་ཡིནཤྲཱི་ལང་ཀལཱའི་བེ་རི་ཡལཻ་སོ་ཐོལི་ཐུ་ཝེ་ནི་ཡལག་ཛམ་བོརྒལཊ" + - "་བི་ཡལི་བི་ཡམོ་རོ་ཀོམོ་ན་ཀོམོལ་དོ་བཱམོན་ཊི་ནེག་རོསེནཊ་ མཱར་ཊིནམ་དཱ" + - "་གེས་ཀརམར་ཤེལ་གླིང་ཚོམམ་སེ་ཌོ་ནི་ཡམཱ་ལིམི་ཡཱན་མར་ (བྷར་མ)སོག་པོ་ཡུ" + - "ལམཀ་ཨའུ་ཅཱའི་ནབྱང་ཕྱོགས་ཀྱི་མ་ར་ཡ་ན་གླིང་ཚོམམཱར་ཊི་ནིཀམོ་རི་ཊེ་ནི་" + - "ཡམོན་ས་རཊམཱལ་ཊམོ་རི་ཤཱསམཱལ་དིབསམ་ལ་ཝིམེཀ་སི་ཀོམ་ལེ་ཤི་ཡམོ་ཛམ་བྷིཀན" + - "་མི་བི་ཡནིའུ་ཀ་ལི་དོ་ནི་ཡནཱའི་ཇཱནོར་ཕོལཀ་མཚོ་གླིང༌ནཱའི་ཇི་རི་ཡནི་ཀ" + - "ྲ་ཝ་གནེ་དར་ལནཌས྄ནོར་ཝེབལ་ཡུལནའུ་རུ་ནི་ཨུ་ཨཻནིའུ་ཛི་ལེནཌཨོ་མཱནཔ་ན་མ" + - "པེ་རུཕྲཱནས྄་ཀྱི་པོ་ལི་ནི་ཤི་ཡཔ་པུ་ ནིའུ་གི་ནིཕི་ལི་པིནསཔ་ཀི་སཏཱནཔོ" + - "་ལེནཌསིནཊ་པི་ཡེར་ ཨེནཌ་ མིཀོ་ལེནཔིཊ་ཀེ་ཡེརན་གླིང་ཚོམཔུ་འེར་ཊོ་རི་ཁ" + - "ོཔེ་ལིསི་ཊི་ནི་ཡན་ཊེ་རི་ཐོ་རིཔོར་ཅུ་གཱལཔ་ལའུཔ་ར་གུ་ཝའིཀ་ཊརཨོཤི་ཡཱན" + - "་ན་གྱི་མཐའ་མཚམསརེ་ཡུ་ནི་ཡོནརོ་མེ་ནི་ཡསཱར་བྷི་ཡཨུ་རུ་སུརུ་ཝན་ཌསཱཝ་ད" + - "ི་ ཨ་རེ་བྷི་ཡསོ་ལོ་མོན་ གླིང་ཚོམསེ་ཤཱལསསུ་ཌཱནསུའི་ཌེནསིང་ག་པོརསེནཊ" + - "་ ཧེ་ལི་ནསུ་ལོ་བི་ནི་ཡསྭཱལ་བྷརྡ་ ཨེནཌ་ ཇཱན་མ་ཡེནསུ་ལོ་བཱ་ཀི་ཡསི་ར་" + - " ལི་འོནསཱན་མ་རི་ནོསེ་ནི་གྷལསོ་མ་ལི་ཡསུ་རི་ནཱམསཱའུཐ་ སུ་ཌཱནསཝ་ ཊོ་མེ་" + - " ཨེནཌ་ པྲྀན་སི་པེཨེལ་སལ་བ་ཌོརསིནཊ་ མཱར་ཊེནསི་རི་ཡསུ་ཝ་ཛི་ལེནཌཏྲིས་ཏན" + - "་ད་ཀུན་ཧཏུརྐས྄་ ཨེནཌ་ ཀ་ཀོས་གླིང་ཚོམཅཱཌཕྲནཅ་གི་ལྷོ་ཕྱོགས་མངའ་ཁོངསཊ" + - "ོ་གྷོཐཱའི་ལེནཌཏ་ཇིག་གི་སཏཱནཏོ་ཀེ་ལའུ་ མཚོ་གླིངཏི་་མོར་ལེ་ཨེསཊཊཱརཀ་" + - "མེནའི་སཏཱནཊུ་ནི་ཤི་ཡཊོང་གྷཊཱར་ཀིཊི་ནི་ཌཱཌ་ ཨེནཌ་ ཊོ་བྷེ་གྷོཏུ་ཝ་ལུ" + - "ཊཱའི་ཝཱནཊཱན་ཛཱ་ནི་ཡཡུ་ཀརེནཡུ་གྷན་ཌཡུ་ཨེས་གྱི་མཐའ་མཚམས་མཚོ་གླིང་ཡུ་" + - "ཨེས་ཨེཡུ་རུ་གུ་ཝའིཨུས་བེག་གི་སཏཱནབ་ཊི་ཀཱན་ སི་ཊིསེནཊ་ཝིན་སེནཌ྄ ཨེན" + - "ཌ་ གི་རེ་ན་དིནས྄བེ་ནི་ཛུ་ཝེ་ལཝརཇིན་གླིང་ཚོམ་ བྲཱི་ཊིཤ་མངའ་ཁོངསཝརཇི" + - "ན་གླིང་ཚོམ་ ཡུ་ཨེས་ཨེ་མངའ་ཁོངསབེཊ་ནཱམཝ་ནུ་ཨ་ཏུཝལ་ལིས྄་ ཨེནཌ་ ཕུ་ཏུ" + - "་ན་ས་མོ་ཨཡེ་མེནམེ་ཡོཊསཱའུཐ་ ཨཕ་རི་ཀཛམ་བྷི་ཡཛིམ་བྷབ་ཝེངོ་མ་ཤེས་པའི་" + - "ལུང་ཕྱོགསའཛམ་གླིང༌ཨཕ་རི་ཀབྱང་ཨ་མི་རི་ཀལྷོ་ཨ་མི་རི་ཀཨོཤི་ཡཱན་ནནུབ་ཕ" + - "ྱོགས་ཀྱི་ཨཕ་རི་ཀབར་ཕྱོགས་ཨ་མི་རི་ཀཤར་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀབྱང་ཕྱོགས་ཀྱ" + - "ི་ཨཕ་རི་ཀསྦུག་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀལྷོའི་ཨཕ་རི་ཀཨ་མི་རི་ཀ་ཚུབྱང་ཕྱོགས་" + - "ཀྱི་ཨ་མི་རི་ཀཀེ་རི་བི་ཡེནཤར་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཨེ་ཤི་ཡལྷོ་ཤར་ཕ" + - "ྱོགས་ཀྱི་ཨེ་ཤི་ཡལྷོའི་ཡུ་རོབཨཱོས་ཊྲེལ་ཨེ་ཤི་ཡམེ་ལ་ནི་ཤི་ཡལུང་ཕྱོགས" + - "་མའི་ཀྲོ་ནི་ཤི་ཡཔོ་ལི་ནི་ཤི་ཡཨེ་ཤི་ཡསྦུག་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡནུབ་ཕྱོག" + - "ས་ཀྱི་ཨེ་ཤི་ཡཡུ་རོབཤར་ཕྱོགས་ཀྱི་ཡུ་རོབབྱང་ཕྱོགས་ཀྱི་ཡུ་རོབནུབ་ཕྱོག" + - "ས་ཀྱི་ཡུ་རོབལེ་ཊིནཨ་མི་རི་ཀ", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0039, 0x0051, 0x00a4, 0x00cb, 0x0118, 0x012d, 0x014e, - 0x016c, 0x0184, 0x01d5, 0x01f6, 0x0241, 0x025f, 0x0289, 0x029e, - 0x02c8, 0x02ef, 0x0348, 0x0366, 0x0381, 0x0396, 0x03c1, 0x03df, - 0x03f1, 0x040f, 0x0424, 0x045e, 0x0473, 0x048b, 0x04ac, 0x04f4, - 0x0506, 0x051e, 0x052d, 0x0560, 0x0578, 0x0599, 0x05ae, 0x05c0, - 0x05ed, 0x0618, 0x0668, 0x0699, 0x06c3, 0x06f7, 0x071b, 0x072a, - 0x0742, 0x0754, 0x0778, 0x07bd, 0x07db, 0x07f0, 0x0805, 0x0823, - 0x085f, 0x0877, 0x089f, 0x08b7, 0x08e7, 0x0902, 0x0917, 0x0935, - // Entry 40 - 7F - 0x0978, 0x0999, 0x09da, 0x09f5, 0x0a16, 0x0a2b, 0x0a5c, 0x0a7d, - 0x0a92, 0x0ab9, 0x0b04, 0x0b04, 0x0b1c, 0x0b2b, 0x0b5b, 0x0b88, - 0x0bb8, 0x0bc7, 0x0bdc, 0x0c13, 0x0c28, 0x0c3a, 0x0c80, 0x0c9e, - 0x0caa, 0x0cc8, 0x0ce9, 0x0d04, 0x0d16, 0x0d37, 0x0d6e, 0x0d80, - 0x0dfa, 0x0e15, 0x0e40, 0x0e6e, 0x0e80, 0x0eaa, 0x0f1b, 0x0f3c, - 0x0f54, 0x0f63, 0x0f7e, 0x0fae, 0x0fd8, 0x0ff3, 0x100e, 0x1037, - 0x1049, 0x10ac, 0x10be, 0x10d0, 0x10ee, 0x1103, 0x1115, 0x112a, - 0x113c, 0x114b, 0x115a, 0x117e, 0x119f, 0x11d8, 0x11f3, 0x122f, - // Entry 80 - BF - 0x1251, 0x1273, 0x1285, 0x12b2, 0x12d0, 0x12e2, 0x12fa, 0x131f, - 0x1346, 0x1361, 0x1385, 0x139d, 0x13c4, 0x13e2, 0x13f7, 0x140c, - 0x1424, 0x1439, 0x1454, 0x147b, 0x14a0, 0x14c1, 0x14ee, 0x1512, - 0x1521, 0x1551, 0x156f, 0x1596, 0x15f0, 0x160e, 0x1635, 0x164d, - 0x165c, 0x1677, 0x168f, 0x16a1, 0x16bc, 0x16d7, 0x16f5, 0x1710, - 0x1743, 0x1758, 0x178e, 0x17b2, 0x17cd, 0x17ee, 0x1800, 0x1812, - 0x1827, 0x183f, 0x1863, 0x1875, 0x1884, 0x1893, 0x18db, 0x1909, - 0x1927, 0x1942, 0x1957, 0x19a4, 0x19e0, 0x1a0d, 0x1a61, 0x1a7f, - // Entry C0 - FF - 0x1a8e, 0x1aac, 0x1ab8, 0x1afd, 0x1b21, 0x1b3f, 0x1b5a, 0x1b72, - 0x1b87, 0x1bbb, 0x1bf2, 0x1c07, 0x1c19, 0x1c31, 0x1c4c, 0x1c71, - 0x1c98, 0x1ce2, 0x1d09, 0x1d2b, 0x1d4c, 0x1d67, 0x1d82, 0x1d9d, - 0x1dc2, 0x1e0d, 0x1e31, 0x1e56, 0x1e6b, 0x1e8f, 0x1ebc, 0x1f0c, - 0x1f15, 0x1f63, 0x1f75, 0x1f90, 0x1fb7, 0x1fee, 0x201b, 0x2048, - 0x2066, 0x2078, 0x208a, 0x20d7, 0x20ec, 0x2104, 0x2125, 0x213a, - 0x2152, 0x21a9, 0x21a9, 0x21c4, 0x21e8, 0x2215, 0x2240, 0x22a2, - 0x22c9, 0x232a, 0x238e, 0x23a3, 0x23be, 0x23ff, 0x2411, 0x2411, - // Entry 100 - 13F - 0x2423, 0x2435, 0x245d, 0x2475, 0x2493, 0x24d5, 0x24f0, 0x2505, - 0x252c, 0x2553, 0x2571, 0x25b0, 0x25e6, 0x2622, 0x2661, 0x26a3, - 0x26ca, 0x26ee, 0x2733, 0x2757, 0x2793, 0x27ba, 0x2802, 0x2826, - 0x2859, 0x287d, 0x28c8, 0x28ef, 0x2904, 0x2946, 0x2985, 0x2997, - 0x29d0, 0x2a0c, 0x2a48, 0x2a48, 0x2a75, - }, - }, - { // ebu - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // ee - "Ascension ƒudomekpo nutomeAndorra nutomeUnited Arab Emirates nutomeAfgha" + - "nistan nutoméAntigua kple Barbuda nutomeAnguilla nutomeAlbania nuto" + - "meArmenia nutomeAngola nutomeAntartica nutomeArgentina nutomeAmerika" + - " Samoa nutomeAustria nutomeAustralia nutomeAruba nutomeÅland ƒudomek" + - "po nutomeAzerbaijan nutomeBosnia kple Herzergovina nutomeBarbados nu" + - "tomeBangladesh nutomeBelgium nutomeBurkina Faso nutomeBulgaria nutom" + - "eBahrain nutomeBurundi nutomeBenin nutomeSaint Barthélemy nutomeBerm" + - "uda nutomeBrunei nutomeBolivia nutomeBrazil nutomeBahamas nutomeBhut" + - "an nutomeBouvet ƒudomekpo nutomeBotswana nutomeBelarus nutomeBelize " + - "nutomeCanada nutomeKokos (Kiling) fudomekpo nutomeKongo Kinshasa nut" + - "omeTitina Afrika repɔblik nutomeKongo Brazzaville nutomeSwitzerland " + - "nutomeKote d’Ivoire nutomeKook ƒudomekpo nutomeTsile nutomeKamerun n" + - "utomeTsaina nutomeKolombia nutomeKlipaton ƒudomekpo nutomeKosta Rika" + - " nutomeKuba nutomeKape Verde nutomeKristmas ƒudomekpo nutomeSaiprus " + - "nutomeTsɛk repɔblik nutomeGermania nutomeDiego Garsia nutomeDzibuti " + - "nutomeDenmark nutomeDominika nutomeDominika repɔblik nutomeAlgeria n" + - "utomeKeuta and Melilla nutomeEkuadɔ nutomeEstonia nutomeEgypte nutom" + - "eƔetoɖoƒe Sahara nutomeEritrea nutomeSpain nutomeEtiopia nutomeEurop" + - "a Wɔɖeka nutomeFinland nutomeFidzi nutomeFalkland ƒudomekpowo nutome" + - "Mikronesia nutomeFaroe ƒudomekpowo nutomeFrance nutomeGabɔn nutomeUn" + - "ited Kingdom nutomeGrenada nutomeGeorgia nutomeFrentsi Gayana nutome" + - "Guernse nutomeGhana nutomeGibraltar nutomeGrinland nutomeGambia nuto" + - "meGuini nutomeGuadelupe nutomeEkuatorial Guini nutomeGreece nutomeAn" + - "yiehe Georgia kple Anyiehe Sandwich ƒudomekpowo nutomeGuatemala nuto" + - "meGuam nutomeGini-Bisao nutomeGuyanaduHɔng Kɔng SAR Tsaina nutomeHea" + - "rd kple Mcdonald ƒudomekpowo nutomeHondurasduKroatsia nutomeHaiti nu" + - "tomeHungari nutomeKanari ƒudomekpowo nutomeIndonesia nutomeIreland n" + - "utomeIsrael nutomeAisle of Man nutomeIndia nutomeBritaintɔwo ƒe indi" + - "a ƒudome nutomeiraqdukɔIran nutomeAiseland nutomeItalia nutomeDzɛse " + - "nutomeDzamaika nutomeYordan nutomeDzapan nutomeKenya nutomeKirgizsta" + - "n nutomeKambodia nutomeKiribati nutomeKomoros nutomeSaint Kitis kple" + - " Nevis nutomeDziehe Korea nutomeAnyiehe Korea nutomeKuwait nutomeKay" + - "man ƒudomekpowo nutomeKazakstan nutomeLaos nutomeLebanɔn nutomeSaint" + - " Lusia nutomeLitsenstein nutomeSri Lanka nutomeLiberia nutomeLɛsoto " + - "nutomeLituania nutomeLazembɔg nutomeLatvia nutomeLibya nutomeMoroko " + - "nutomeMonako nutomeMoldova nutomeMontenegro nutomeSaint Martin nutom" + - "eMadagaska nutomeMarshal ƒudomekpowo nutomeMakedonia nutomeMali nuto" + - "meMyanmar (Burma) nutomeMongolia nutomeMacau SAR Tsaina nutomeDziehe" + - " Marina ƒudomekpowo nutomeMartiniki nutomeMauritania nutomeMontserra" + - "t nutomeMalta nutomemauritiusdukɔmaldivesdukɔMalawi nutomeMexico nut" + - "omeMalaysia nutomeMozambiki nutomeNamibia nutomeNew Kaledonia nutome" + - "Niger nutomeNorfolk ƒudomekpo nutomeNigeria nutomeNicaraguadukɔNethe" + - "rlands nutomeNorway nutomeNepal nutomeNauru nutomeNiue nutomeNew Zea" + - "land nutomeOman nutomePanama nutomePeru nutomeFrentsi Pɔlinesia nuto" + - "mePapua New Gini nutomeFilipini nutomePakistan nutomePoland nutomeSa" + - "int Pierre kple Mikelɔn nutomePitkairn ƒudomekpo nutomePuerto Riko n" + - "utomePalestinia nutomePortugal nutomePalau nutomeParagua nutomeKatar" + - " nutomeOutlaying Oceania nutomeRéunion nutomeRomania nutomeRussia nu" + - "tomeRwanda nutomeSaudi Arabia nutomeSolomon ƒudomekpowo nutomeSeshɛl" + - "s nutomeSudan nutomeSweden nutomeSingapɔr nutomeSaint Helena nutomeS" + - "lovenia nutomeSvalbard kple Yan Mayen nutomeSlovakia nutomeSierra Le" + - "one nutomeSan Marino nutomeSenegal nutomeSomalia nutomeSuriname nuto" + - "meSão Tomé kple Príncipe nutomeEl Salvadɔ nutomeSiria nutomeSwazilan" + - "d nutomeTristan da Kunha nutomeTɛks kple Kaikos ƒudomekpowo nutomeTs" + - "ad nutomeAnyiehe Franseme nutomeTogo nutomeThailand nutomeTajikistan" + - " nutomeTokelau nutomeTimor-Leste nutomeTɛkmenistan nutomeTunisia nut" + - "omeTonga nutomeTɛki nutomeTrinidad kple Tobago nutomeTuvalu nutomeTa" + - "iwan nutomeTanzania nutomeUkraine nutomeUganda nutomeU.S. Minor Outl" + - "aying ƒudomekpowo nutomeUSA nutomeuruguaydukɔUzbekistan nutomeVatika" + - "ndu nutomeSaint Vincent kple Grenadine nutomeVenezuela nutomeBritain" + - "tɔwo ƒe Virgin ƒudomekpowo nutomeU.S. Vɛrgin ƒudomekpowo nutomeVietn" + - "am nutomeVanuatu nutomeWallis kple Futuna nutomeSamoa nutomeYemen nu" + - "tomeMayotte nutomeAnyiehe Africa nutomeZambia nutomeZimbabwe nutomen" + - "utome manyaxexemeAfrika nutomeDziehe Amerika nutomeAnyiehe Amerika n" + - "utomeOceania nutomeƔetoɖoƒelɔƒo Afrika nutomeTitina Amerika nutomeƔe" + - "dzeƒe Afrika nutomeDziehe Afrika nutomeTitina Afrika nutomeAnyiehelɔ" + - "ƒo Afrika nutomeAmerika nutomeDziehelɔƒo Amerika nutomeKaribbea nut" + - "omeƔedzeƒe Asia nutomeAnyiehelɔƒo Asia nutomeAnyiehe Ɣedzeƒe Afrika " + - "nutomeAnyiehelɔƒo Europa nutomeAustralia kple New Zealand nutomeMela" + - "nesia nutomeMikronesiaPɔlinesia nutomeAsia nutomeTitina Asia nutomeƔ" + - "etoɖoƒelɔƒo Asia nutomeEuropa nutomeƔedzeƒe Europa nutomeDziehelɔƒo " + - "Europa nutomeƔetoɖoƒelɔƒo Europa nutomeLatin Amerika nutome", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001b, 0x0029, 0x0044, 0x0056, 0x0073, 0x0082, 0x0090, - 0x009e, 0x00ab, 0x00bb, 0x00cb, 0x00df, 0x00ed, 0x00fd, 0x0109, - 0x0121, 0x0132, 0x0151, 0x0160, 0x0171, 0x017f, 0x0192, 0x01a1, - 0x01af, 0x01bd, 0x01c9, 0x01e1, 0x01ef, 0x01fc, 0x020a, 0x020a, - 0x0217, 0x0225, 0x0232, 0x024a, 0x0259, 0x0267, 0x0274, 0x0281, - 0x02a0, 0x02b5, 0x02d3, 0x02eb, 0x02fd, 0x0313, 0x0329, 0x0335, - 0x0343, 0x0350, 0x035f, 0x0379, 0x038a, 0x0395, 0x03a6, 0x03a6, - 0x03c0, 0x03ce, 0x03e4, 0x03f3, 0x0406, 0x0414, 0x0422, 0x0431, - // Entry 40 - 7F - 0x044a, 0x0458, 0x0470, 0x047e, 0x048c, 0x0499, 0x04b2, 0x04c0, - 0x04cc, 0x04da, 0x04f0, 0x04f0, 0x04fe, 0x050a, 0x0526, 0x0537, - 0x0550, 0x055d, 0x056a, 0x057f, 0x058d, 0x059b, 0x05b0, 0x05be, - 0x05ca, 0x05da, 0x05e9, 0x05f6, 0x0602, 0x0612, 0x0629, 0x0636, - 0x066f, 0x067f, 0x068a, 0x069b, 0x06a3, 0x06c0, 0x06e7, 0x06f1, - 0x0700, 0x070c, 0x071a, 0x0734, 0x0744, 0x0752, 0x075f, 0x0772, - 0x077e, 0x07a3, 0x07ac, 0x07b7, 0x07c6, 0x07d3, 0x07e0, 0x07ef, - 0x07fc, 0x0809, 0x0815, 0x0826, 0x0835, 0x0844, 0x0852, 0x086f, - // Entry 80 - BF - 0x0882, 0x0896, 0x08a3, 0x08bd, 0x08cd, 0x08d8, 0x08e7, 0x08f9, - 0x090b, 0x091b, 0x0929, 0x0937, 0x0946, 0x0956, 0x0963, 0x096f, - 0x097c, 0x0989, 0x0997, 0x09a8, 0x09bb, 0x09cb, 0x09e6, 0x09f6, - 0x0a01, 0x0a17, 0x0a26, 0x0a3d, 0x0a5e, 0x0a6e, 0x0a7f, 0x0a90, - 0x0a9c, 0x0aaa, 0x0ab7, 0x0ac4, 0x0ad1, 0x0ae0, 0x0af0, 0x0afe, - 0x0b12, 0x0b1e, 0x0b37, 0x0b45, 0x0b53, 0x0b65, 0x0b72, 0x0b7e, - 0x0b8a, 0x0b95, 0x0ba7, 0x0bb2, 0x0bbf, 0x0bca, 0x0be3, 0x0bf8, - 0x0c07, 0x0c16, 0x0c23, 0x0c44, 0x0c5e, 0x0c70, 0x0c81, 0x0c90, - // Entry C0 - FF - 0x0c9c, 0x0caa, 0x0cb6, 0x0cce, 0x0cdd, 0x0ceb, 0x0ceb, 0x0cf8, - 0x0d05, 0x0d18, 0x0d33, 0x0d42, 0x0d4e, 0x0d5b, 0x0d6b, 0x0d7e, - 0x0d8d, 0x0dab, 0x0dba, 0x0dcd, 0x0dde, 0x0dec, 0x0dfa, 0x0e09, - 0x0e09, 0x0e29, 0x0e3b, 0x0e3b, 0x0e47, 0x0e57, 0x0e6e, 0x0e93, - 0x0e9e, 0x0eb5, 0x0ec0, 0x0ecf, 0x0ee0, 0x0eee, 0x0f00, 0x0f13, - 0x0f21, 0x0f2d, 0x0f39, 0x0f54, 0x0f61, 0x0f6e, 0x0f7d, 0x0f8b, - 0x0f98, 0x0fc0, 0x0fc0, 0x0fca, 0x0fd6, 0x0fe7, 0x0ff7, 0x101a, - 0x102a, 0x1055, 0x1075, 0x1083, 0x1091, 0x10aa, 0x10b6, 0x10b6, - // Entry 100 - 13F - 0x10c2, 0x10d0, 0x10e5, 0x10f2, 0x1101, 0x110d, 0x1113, 0x1120, - 0x1135, 0x114b, 0x1159, 0x1178, 0x118d, 0x11a4, 0x11b8, 0x11cc, - 0x11e7, 0x11f5, 0x1210, 0x121f, 0x1234, 0x124d, 0x126c, 0x1287, - 0x12a8, 0x12b8, 0x12c2, 0x12d3, 0x12de, 0x12f0, 0x130d, 0x131a, - 0x1331, 0x134b, 0x136a, 0x136a, 0x137e, - }, - }, - { // el - elRegionStr, - elRegionIdx, - }, - { // en - enRegionStr, - enRegionIdx, - }, - {}, // en-AU - {}, // en-CA - { // en-GB - enGBRegionStr, - enGBRegionIdx, - }, - {}, // en-IN - {}, // en-NZ - { // eo - "AndoroUnuiĝintaj Arabaj EmirlandojAfganujoAntigvo-BarbudoAngviloAlbanujo" + - "ArmenujoAngoloAntarktoArgentinoAŭstrujoAŭstralioAruboAzerbajĝanoBosn" + - "io-HercegovinoBarbadoBangladeŝoBelgujoBurkinoBulgarujoBarejnoBurundo" + - "BeninoBermudojBrunejoBolivioBraziloBahamojButanoBocvanoBelorusujoBel" + - "izoKanadoCentr-Afrika RespublikoKongoloSvisujoEbur-BordoKukinsulojĈi" + - "lioKamerunoĈinujoKolombioKostarikoKuboKabo-VerdoKiproĈeĥujoGermanujo" + - "ĜibutioDanujoDominikoDomingoAlĝerioEkvadoroEstonujoEgiptoOkcidenta " + - "SaharoEritreoHispanujoEtiopujoFinnlandoFiĝojMikronezioFeroojFrancujo" + - "GabonoUnuiĝinta ReĝlandoGrenadoKartvelujoFranca GvianoGanaoĜibraltar" + - "oGronlandoGambioGvineoGvadelupoEkvatora GvineoGrekujoSud-Georgio kaj" + - " Sud-SandviĉinsulojGvatemaloGvamoGvineo-BisaŭoGujanoHerda kaj Makdon" + - "aldaj InsulojHonduroKroatujoHaitioHungarujoIndonezioIrlandoIsraeloHi" + - "ndujoBrita Hindoceana TeritorioIrakoIranoIslandoItalujoJamajkoJordan" + - "ioJapanujoKenjoKirgizistanoKamboĝoKiribatoKomorojSent-Kristofo kaj N" + - "evisoNord-KoreoSud-KoreoKuvajtoKejmanojKazaĥstanoLaosoLibanoSent-Luc" + - "ioLiĥtenŝtejnoSri-LankoLiberioLesotoLitovujoLuksemburgoLatvujoLibioM" + - "arokoMonakoMoldavujoMadagaskaroMarŝalojMakedonujoMalioMjanmaoMongolu" + - "joNord-MarianojMartinikoMaŭritanujoMaltoMaŭricioMaldivojMalavioMeksi" + - "koMalajzioMozambikoNamibioNov-KaledonioNiĝeroNorfolkinsuloNiĝerioNik" + - "aragvoNederlandoNorvegujoNepaloNauroNiuoNov-ZelandoOmanoPanamoPeruoF" + - "ranca PolinezioPapuo-Nov-GvineoFilipinojPakistanoPollandoSent-Piero " + - "kaj MikelonoPitkarna InsuloPuerto-RikoPortugalujoBelaŭoParagvajoKata" + - "roReunioRumanujoRusujoRuandoSaŭda ArabujoSalomonojSejŝelojSudanoSved" + - "ujoSingapuroSent-HelenoSlovenujoSvalbardo kaj Jan-Majen-insuloSlovak" + - "ujoSiera-LeonoSan-MarinoSenegaloSomalujoSurinamoSao-Tomeo kaj Princi" + - "peoSalvadoroSirioSvazilandoĈadoTogoloTajlandoTaĝikujoTurkmenujoTuniz" + - "ioTongoTurkujoTrinidado kaj TobagoTuvaloTajvanoTanzanioUkrajnoUgando" + - "Usonaj malgrandaj insulojUsonoUrugvajoUzbekujoVatikanoSent-Vincento " + - "kaj la GrenadinojVenezueloBritaj VirgulininsulojUsonaj Virgulininsul" + - "ojVjetnamoVanuatuoValiso kaj FutunoSamooJemenoMajotoSud-AfrikoZambio" + - "Zimbabvo", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0023, 0x002b, 0x003a, 0x0041, 0x0049, - 0x0051, 0x0057, 0x005f, 0x0068, 0x0068, 0x0071, 0x007b, 0x0080, - 0x0080, 0x008c, 0x009e, 0x00a5, 0x00b0, 0x00b7, 0x00be, 0x00c7, - 0x00ce, 0x00d5, 0x00db, 0x00db, 0x00e3, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00ff, 0x0105, 0x0105, 0x010c, 0x0116, 0x011c, 0x0122, - 0x0122, 0x0122, 0x0139, 0x0140, 0x0147, 0x0151, 0x015b, 0x0161, - 0x0169, 0x0170, 0x0178, 0x0178, 0x0181, 0x0185, 0x018f, 0x018f, - 0x018f, 0x0194, 0x019c, 0x01a5, 0x01a5, 0x01ad, 0x01b3, 0x01bb, - // Entry 40 - 7F - 0x01c2, 0x01ca, 0x01ca, 0x01d2, 0x01da, 0x01e0, 0x01f0, 0x01f7, - 0x0200, 0x0208, 0x0208, 0x0208, 0x0211, 0x0217, 0x0217, 0x0221, - 0x0227, 0x022f, 0x0235, 0x0249, 0x0250, 0x025a, 0x0267, 0x0267, - 0x026c, 0x0277, 0x0280, 0x0286, 0x028c, 0x0295, 0x02a4, 0x02ab, - 0x02ce, 0x02d7, 0x02dc, 0x02ea, 0x02f0, 0x02f0, 0x030d, 0x0314, - 0x031c, 0x0322, 0x032b, 0x032b, 0x0334, 0x033b, 0x0342, 0x0342, - 0x0349, 0x0363, 0x0368, 0x036d, 0x0374, 0x037b, 0x037b, 0x0382, - 0x038a, 0x0392, 0x0397, 0x03a3, 0x03ab, 0x03b3, 0x03ba, 0x03d2, - // Entry 80 - BF - 0x03dc, 0x03e5, 0x03ec, 0x03f4, 0x03ff, 0x0404, 0x040a, 0x0414, - 0x0422, 0x042b, 0x0432, 0x0438, 0x0440, 0x044b, 0x0452, 0x0457, - 0x045d, 0x0463, 0x046c, 0x046c, 0x046c, 0x0477, 0x0480, 0x048a, - 0x048f, 0x0496, 0x049f, 0x049f, 0x04ac, 0x04b5, 0x04c1, 0x04c1, - 0x04c6, 0x04cf, 0x04d7, 0x04de, 0x04e5, 0x04ed, 0x04f6, 0x04fd, - 0x050a, 0x0511, 0x051e, 0x0526, 0x052f, 0x0539, 0x0542, 0x0548, - 0x054d, 0x0551, 0x055c, 0x0561, 0x0567, 0x056c, 0x057c, 0x058c, - 0x0595, 0x059e, 0x05a6, 0x05bd, 0x05cc, 0x05d7, 0x05d7, 0x05e2, - // Entry C0 - FF - 0x05e9, 0x05f2, 0x05f8, 0x05f8, 0x05fe, 0x0606, 0x0606, 0x060c, - 0x0612, 0x0620, 0x0629, 0x0632, 0x0638, 0x063f, 0x0648, 0x0653, - 0x065c, 0x067a, 0x0683, 0x068e, 0x0698, 0x06a0, 0x06a8, 0x06b0, - 0x06b0, 0x06c7, 0x06d0, 0x06d0, 0x06d5, 0x06df, 0x06df, 0x06df, - 0x06e4, 0x06e4, 0x06ea, 0x06f2, 0x06fb, 0x06fb, 0x06fb, 0x0705, - 0x070c, 0x0711, 0x0718, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x0767, 0x0767, 0x076c, 0x0774, 0x077c, 0x0784, 0x07a3, - 0x07ac, 0x07c2, 0x07d8, 0x07e0, 0x07e8, 0x07f9, 0x07fe, 0x07fe, - // Entry 100 - 13F - 0x0804, 0x080a, 0x0814, 0x081a, 0x0822, - }, - }, - { // es - esRegionStr, - esRegionIdx, - }, - { // es-419 - es419RegionStr, - es419RegionIdx, - }, - { // es-AR - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.Islas Vírgenes de EE. UU.", - []uint16{ // 251 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x006c, - }, - }, - { // es-BO - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-CL - "Bosnia y HerzegovinaSahara OccidentalTristán de AcuñaTimor-LesteIslas me" + - "nores alejadas de EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - // Entry 80 - BF - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - // Entry C0 - FF - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0037, 0x0037, - 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0063, - }, - }, - { // es-CO - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.Islas Vírgenes de EE. UU.", - []uint16{ // 251 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x006c, - }, - }, - { // es-CR - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-DO - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-EC - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-GT - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-HN - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-MX - "Bosnia y HerzegovinaCôte d’Ivoirezona euroGuernseyTristán de AcuñaTimor-" + - "LesteIslas menores alejadas de EE. UU.UNIslas Vírgenes de EE. UU.Áfr" + - "ica OccidentalÁfrica OrientalÁfrica septentrionalÁfrica meridionalAs" + - "ia OrientalAsia meridionalSudeste AsiáticoEuropa meridionalRegión de" + - " MicronesiaAsia OccidentalEuropa OrientalEuropa septentrionalEuropa " + - "Occidental", - []uint16{ // 291 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - // Entry 40 - 7F - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry 80 - BF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - // Entry C0 - FF - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0073, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - // Entry 100 - 13F - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x00a1, 0x00a1, 0x00b1, 0x00c6, 0x00c6, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00e5, 0x00f4, 0x0105, 0x0116, - 0x0116, 0x0116, 0x012b, 0x012b, 0x012b, 0x012b, 0x013a, 0x013a, - 0x0149, 0x015d, 0x016e, - }, - }, - { // es-NI - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-PA - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-PE - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-PR - "Islas menores alejadas de EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0021, - }, - }, - { // es-PY - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // es-SV - "Islas menores alejadas de EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0021, - }, - }, - { // es-US - "Isla de la AscensiónCôte d’Ivoirezona euroGuernseyTerritorios alejados d" + - "e OceaníaTimor-LesteIslas menores alejadas de EE. UU.Islas Vírgenes " + - "de EE. UU.África occidentalÁfrica orientalÁfrica septentrionalÁfrica" + - " meridionalAsia orientalAsia meridionalSudeste asiáticoEuropa meridi" + - "onalRegión de MicronesiaAsia occidentalEuropa orientalEuropa septent" + - "rionalEuropa occidental", - []uint16{ // 291 elements - // Entry 0 - 3F - 0x0000, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - // Entry 40 - 7F - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - // Entry 80 - BF - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, - // Entry C0 - FF - 0x0036, 0x0036, 0x0036, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, - 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0061, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - 0x0061, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - // Entry 100 - 13F - 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x009c, 0x00ae, 0x00ae, 0x00be, 0x00d3, 0x00d3, - 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00f2, 0x0101, 0x0112, 0x0123, - 0x0123, 0x0123, 0x0138, 0x0138, 0x0138, 0x0138, 0x0147, 0x0147, - 0x0156, 0x016a, 0x017b, - }, - }, - { // es-VE - "Bosnia y HerzegovinaTristán de AcuñaTimor-LesteIslas menores alejadas de" + - " EE. UU.", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 40 - 7F - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry 80 - BF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - // Entry C0 - FF - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0052, - }, - }, - { // et - etRegionStr, - etRegionIdx, - }, - { // eu - "Ascension uharteaAndorraArabiar Emirerri BatuakAfganistanAntigua eta Bar" + - "budaAingiraAlbaniaArmeniaAngolaAntartikaArgentinaSamoa Estatubatuarr" + - "aAustriaAustraliaArubaAland uharteakAzerbaijanBosnia-HerzegovinaBarb" + - "adosBangladeshBelgikaBurkina FasoBulgariaBahrainBurundiBeninSaint Ba" + - "rthélemyBermudaBruneiBoliviaKaribeko HerbehereakBrasilBahamakBhutanB" + - "ouvet uharteaBotswanaBielorrusiaBelizeKanadaCocos uharteakKongoko Er" + - "republika DemokratikoaAfrika Erdiko ErrepublikaKongoSuitzaBoli Kosta" + - "Cook uharteakTxileKamerunTxinaKolonbiaClipperton uharteaCosta RicaKu" + - "baCabo VerdeCuraçaoChristmas uharteaZipreTxekiaAlemaniaDiego GarcíaD" + - "jibutiDanimarkaDominikaDominikar ErrepublikaAljeriaCeuta eta Melilla" + - "EkuadorEstoniaEgiptoMendebaldeko SaharaEritreaEspainiaEtiopiaEuropar" + - " BatasunaEuroguneaFinlandiaFijiMalvinakMikronesiaFaroe uharteakFrant" + - "ziaGabonErresuma BatuaGrenadaGeorgiaGuyana FrantsesaGuerneseyGhanaGi" + - "braltarGroenlandiaGambiaGineaGuadalupeEkuatore GineaGreziaHegoaldeko" + - " Georgia eta Hegoaldeko Sandwich uharteakGuatemalaGuamGinea BissauGu" + - "yanaHong Kong Txinako AEBHeard eta McDonald uharteakHondurasKroaziaH" + - "aitiHungariaKanariakIndonesiaIrlandaIsraelMan uharteaIndiaIndiako Oz" + - "eanoko lurralde britainiarraIrakIranIslandiaItaliaJerseyJamaikaJorda" + - "niaJaponiaKenyaKirgizistanKanbodiaKiribatiKomoreakSaint Kitts eta Ne" + - "visIpar KoreaHego KoreaKuwaitKaiman uharteakKazakhstanLaosLibanoSant" + - "a LuziaLiechtensteinSri LankaLiberiaLesothoLituaniaLuxenburgoLetonia" + - "LibiaMarokoMonakoMoldaviaMontenegroSan MartinMadagaskarMarshall Uhar" + - "teakMazedoniaMaliMyanmar (Birmania)MongoliaMacau Txinako AEBIpar Mar" + - "iana uharteakMartinikaMauritaniaMontserratMaltaMaurizioMaldivakMalaw" + - "iMexikoMalaysiaMozambikeNamibiaKaledonia BerriaNigerNorfolk uharteaN" + - "igeriaNikaraguaHerbehereakNorvegiaNepalNauruNiueZeelanda BerriaOmanP" + - "anamaPeruPolinesia FrantsesaPapua Ginea BerriaFilipinakPakistanPolon" + - "iaSaint-Pierre eta MikelunePitcairn uharteakPuerto RicoPalestinako L" + - "urraldeakPortugalPalauParaguaiQatarMugaz kanpoko OzeaniaReunionErrum" + - "aniaSerbiaErrusiaRuandaSaudi ArabiaSalomon UharteakSeychelleakSudanS" + - "uediaSingapurSanta HelenaEsloveniaSvalbard eta Jan Mayen uharteakEsl" + - "ovakiaSierra LeonaSan MarinoSenegalSomaliaSurinamHego SudanSao Tome " + - "eta PrincipeEl SalvadorSint MaartenSiriaSwazilandiaTristan da CunhaT" + - "urk eta Caico uharteakTxadHegoaldeko lurralde frantsesakTogoThailand" + - "iaTajikistanTokelauEkialdeko TimorTurkmenistanTunisiaTongaTurkiaTrin" + - "idad eta TobagoTuvaluTaiwanTanzaniaUkrainaUgandaAmeriketako Estatu B" + - "atuetako Kanpoaldeko Uharte TxikiakNazio BatuakAmeriketako Estatu Ba" + - "tuakUruguaiUzbekistanVatikano HiriaSaint Vincent eta GrenadinakVenez" + - "uelaBirjina uharte britainiarrakBirjina uharte amerikarrakVietnamVan" + - "uatuWallis eta FutunaSamoaKosovoYemenMayotteHegoafrikaZambiaZimbabwe" + - "Eskualde ezezagunaMunduaAfrikaIpar AmerikaHego AmerikaOzeaniaAfrika " + - "mendebaldeaErdialdeko AmerikaAfrika ekialdeaAfrika iparraldeaErdiald" + - "eko AfrikaAfrika hegoaldeaAmerikaAmerika iparraldeaKaribeaAsia ekial" + - "deaAsia hegoaldeaAsia hego-ekialdeaEuropa hegoaldeaAustralasiaMelane" + - "siaMikronesia eskualdeaPolinesiaAsiaAsia erdialdeaAsia mendebaldeaEu" + - "ropaEuropa ekialdeaEuropa iparraldeaEuropa mendebaldeaLatinoamerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0011, 0x0018, 0x002f, 0x0039, 0x004c, 0x0053, 0x005a, - 0x0061, 0x0067, 0x0070, 0x0079, 0x008d, 0x0094, 0x009d, 0x00a2, - 0x00b0, 0x00ba, 0x00cc, 0x00d4, 0x00de, 0x00e5, 0x00f1, 0x00f9, - 0x0100, 0x0107, 0x010c, 0x011d, 0x0124, 0x012a, 0x0131, 0x0145, - 0x014b, 0x0152, 0x0158, 0x0166, 0x016e, 0x0179, 0x017f, 0x0185, - 0x0193, 0x01b3, 0x01cc, 0x01d1, 0x01d7, 0x01e1, 0x01ee, 0x01f3, - 0x01fa, 0x01ff, 0x0207, 0x0219, 0x0223, 0x0227, 0x0231, 0x0239, - 0x024a, 0x024f, 0x0255, 0x025d, 0x026a, 0x0271, 0x027a, 0x0282, - // Entry 40 - 7F - 0x0297, 0x029e, 0x02af, 0x02b6, 0x02bd, 0x02c3, 0x02d6, 0x02dd, - 0x02e5, 0x02ec, 0x02fc, 0x0305, 0x030e, 0x0312, 0x031a, 0x0324, - 0x0332, 0x033a, 0x033f, 0x034d, 0x0354, 0x035b, 0x036b, 0x0374, - 0x0379, 0x0382, 0x038d, 0x0393, 0x0398, 0x03a1, 0x03af, 0x03b5, - 0x03e8, 0x03f1, 0x03f5, 0x0401, 0x0407, 0x041c, 0x0437, 0x043f, - 0x0446, 0x044b, 0x0453, 0x045b, 0x0464, 0x046b, 0x0471, 0x047c, - 0x0481, 0x04a7, 0x04ab, 0x04af, 0x04b7, 0x04bd, 0x04c3, 0x04ca, - 0x04d2, 0x04d9, 0x04de, 0x04e9, 0x04f1, 0x04f9, 0x0501, 0x0516, - // Entry 80 - BF - 0x0520, 0x052a, 0x0530, 0x053f, 0x0549, 0x054d, 0x0553, 0x055e, - 0x056b, 0x0574, 0x057b, 0x0582, 0x058a, 0x0594, 0x059b, 0x05a0, - 0x05a6, 0x05ac, 0x05b4, 0x05be, 0x05c8, 0x05d2, 0x05e3, 0x05ec, - 0x05f0, 0x0602, 0x060a, 0x061b, 0x0630, 0x0639, 0x0643, 0x064d, - 0x0652, 0x065a, 0x0662, 0x0668, 0x066e, 0x0676, 0x067f, 0x0686, - 0x0696, 0x069b, 0x06aa, 0x06b1, 0x06ba, 0x06c5, 0x06cd, 0x06d2, - 0x06d7, 0x06db, 0x06ea, 0x06ee, 0x06f4, 0x06f8, 0x070b, 0x071d, - 0x0726, 0x072e, 0x0735, 0x074e, 0x075f, 0x076a, 0x0780, 0x0788, - // Entry C0 - FF - 0x078d, 0x0795, 0x079a, 0x07af, 0x07b6, 0x07bf, 0x07c5, 0x07cc, - 0x07d2, 0x07de, 0x07ee, 0x07f9, 0x07fe, 0x0804, 0x080c, 0x0818, - 0x0821, 0x0840, 0x0849, 0x0855, 0x085f, 0x0866, 0x086d, 0x0874, - 0x087e, 0x0893, 0x089e, 0x08aa, 0x08af, 0x08ba, 0x08ca, 0x08e1, - 0x08e5, 0x0903, 0x0907, 0x0911, 0x091b, 0x0922, 0x0931, 0x093d, - 0x0944, 0x0949, 0x094f, 0x0962, 0x0968, 0x096e, 0x0976, 0x097d, - 0x0983, 0x09ba, 0x09c6, 0x09df, 0x09e6, 0x09f0, 0x09fe, 0x0a1a, - 0x0a23, 0x0a3f, 0x0a59, 0x0a60, 0x0a67, 0x0a78, 0x0a7d, 0x0a83, - // Entry 100 - 13F - 0x0a88, 0x0a8f, 0x0a99, 0x0a9f, 0x0aa7, 0x0ab9, 0x0abf, 0x0ac5, - 0x0ad1, 0x0add, 0x0ae4, 0x0af6, 0x0b08, 0x0b17, 0x0b28, 0x0b39, - 0x0b49, 0x0b50, 0x0b62, 0x0b69, 0x0b76, 0x0b84, 0x0b96, 0x0ba6, - 0x0bb1, 0x0bba, 0x0bce, 0x0bd7, 0x0bdb, 0x0be9, 0x0bf9, 0x0bff, - 0x0c0e, 0x0c1f, 0x0c31, 0x0c31, 0x0c3e, - }, - }, - { // ewo - "AndórBemirá yá Arábə uníAfəganisətánAntígwa ai BarəbúdaAngíyəAləbániaArə" + - "méniaAngoláArəhenətínaBəsamóa yá Amə́rəkaOsətəlíaOsətəlalíArúbaAzɛrə" + - "baidzáŋBosəní ai ɛrəzegovínBarəbádBangaladɛ́sBɛləhígBuləkiná FasóBul" + - "əgaríBahərɛ́nBurundíBəníŋBɛrəmúdBulunéBolíviaBəlazílBahámasButáŋBot" + - "swanáBəlarúsBəlískanadáǹnam Kongó Demokəlatígǹnam Zǎŋ AfirikáKongóSu" + - "ísKód Divɔ́rMinlán Mí kúgTsilíKamərúnTsáinaKolɔmbíKosta RíkaKubáMin" + - "lán Mí Káb VɛrSipəlúsǸnam Tsɛ́gNdzámanDzibutíDanəmárəgDómənikaRépubl" + - "ique dominicaineAləyériaEkwatórEsetoníEhíbətɛnElitəléKpənyáEtiopíFin" + - "əlánFidzíMinlán Mi FóləkəlanMikoronésiaFulɛnsíGabóŋǸnam EngəlisGələ" + - "nádəHorə́yiaGuyán yá FulɛnsíGanáYiləbalatárGoelánGambíGinéGuadəlúbGi" + - "né EkwatóGəlɛ́sGuatemaláGuámGiné BisaóGuyánOndurásKəlowásiaAitíOngir" + - "íɛndonésiaIrəlándəIsəraɛ́lɛ́ndəǹnam ɛngəlís yá Máŋ mə́ ɛ́ndəIrágIrá" + - "nIsəlándəItáliɛnHamaíkaHorədaníHapɔ́nKeniáKirigisətánkambodíaKiribat" + - "íKomɔ́rǸfúfúb-Kilisətóv-ai-NevisKoré yá NórKoré yá SúdKowɛ́dMinlán " + - "Mí KalimáŋKazakətáŋLaósLibáŋǸfúfúb-LúsiaLísə́sə́táinSəri LaŋkáLibéri" + - "aLəsotóLituaníLukəzambúdLətoníLibíMarɔ́gMɔnakóMolədavíMadagasəkárəMi" + - "nlán Mí MaresálMasedóniaMalíMianəmárMɔngɔ́liaMinlán Mi Marián yá Nór" + - "MarətinígMoritaníMɔ́ntserádMálətəMorísMalədívəMalawíMɛkəsígMalɛ́ziaM" + - "ozambígNamibíǸkpámɛn KaledóniaNihɛ́rMinlán Nɔrəfɔ́ləkəNihériaNikarág" + - "uaPɛíbáNɔrəvɛ́sNepálNaurúNiuéǸkpámɛn ZeláŋOmánPanamáPerúPolinesí yá " + - "FulɛnsíPapwazi yá Ǹkpámɛ́n GinéFilipínPakisətánfólisǸfúfúb-Píɛr-ai-M" + - "ikəlɔ́ŋPítə́kɛ́rɛnəPwɛrəto RíkoǸnam Palɛsətínfɔrətugɛ́sPalauParaguéK" + - "atárReuniɔ́ŋRumaníRúsianRuwandáArabí SaudíMinlán Mí Solomɔ́nSɛsɛ́lSu" + - "dáŋSuwɛ́dSingapúrǸfúfúb-Ɛlɛ́naSəlovéniaSəlovakíSierá-leónəǸfúfúb Mar" + - "ínoSenegálSomáliaSurinámSaó Tomé ai PəlinəsípeSaləvadórSiríSwazilán" + - "dəMinlán Mí túrə́g-ai-KaígTsádTogóTailánTadzikisətáŋTokelóTimôrTurək" + - "əmənisətáŋTunisíTɔngáTurəkíTəlinité-ai-TobágoTuvalúTaiwánTaŋəzaníUk" + - "ərɛ́nUgandáǸnam AmɛrəkəUruguéUzubekisətánǸnam VatikánǸfúfúb-Vɛngəsá" + - "ŋ-ai-Bə GələnadínVenezuélańnam Minlán ɛ́ngəlísMinlán Mi AmɛrəkəViɛd" + - "ənámVanuátuWalís-ai-FutúnaSamoáYemɛ́nMayɔ́dAfiríka yá SúdZambíZimba" + - "bwé", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x001e, 0x002d, 0x0043, 0x004b, 0x0055, - 0x005f, 0x0066, 0x0066, 0x0074, 0x008d, 0x0098, 0x00a4, 0x00aa, - 0x00aa, 0x00ba, 0x00d3, 0x00dc, 0x00e9, 0x00f3, 0x0103, 0x010d, - 0x0118, 0x0120, 0x0128, 0x0128, 0x0132, 0x0139, 0x0141, 0x0141, - 0x014a, 0x0152, 0x0159, 0x0159, 0x0162, 0x016b, 0x0172, 0x0179, - 0x0179, 0x0193, 0x01a7, 0x01ad, 0x01b2, 0x01bf, 0x01cf, 0x01d5, - 0x01de, 0x01e5, 0x01ee, 0x01ee, 0x01f9, 0x01fe, 0x0213, 0x0213, - 0x0213, 0x021c, 0x0229, 0x0231, 0x0231, 0x0239, 0x0245, 0x024f, - // Entry 40 - 7F - 0x0266, 0x0270, 0x0270, 0x0278, 0x0280, 0x028b, 0x028b, 0x0294, - 0x029c, 0x02a3, 0x02a3, 0x02a3, 0x02ac, 0x02b2, 0x02c9, 0x02d5, - 0x02d5, 0x02de, 0x02e5, 0x02f3, 0x02ff, 0x0309, 0x031d, 0x031d, - 0x0322, 0x032f, 0x0336, 0x033c, 0x0341, 0x034b, 0x0358, 0x0361, - 0x0361, 0x036b, 0x0370, 0x037c, 0x0382, 0x0382, 0x0382, 0x038a, - 0x0395, 0x039a, 0x03a1, 0x03a1, 0x03ac, 0x03b7, 0x03c2, 0x03c2, - 0x03ca, 0x03f3, 0x03f8, 0x03fd, 0x0408, 0x0411, 0x0411, 0x0419, - 0x0423, 0x042b, 0x0431, 0x043e, 0x0447, 0x0450, 0x0458, 0x0476, - // Entry 80 - BF - 0x0484, 0x0492, 0x049a, 0x04af, 0x04bb, 0x04c0, 0x04c7, 0x04d7, - 0x04e9, 0x04f6, 0x04fe, 0x0506, 0x050e, 0x051a, 0x0522, 0x0527, - 0x052f, 0x0537, 0x0541, 0x0541, 0x0541, 0x0550, 0x0564, 0x056e, - 0x0573, 0x057d, 0x0589, 0x0589, 0x05a4, 0x05af, 0x05b8, 0x05c5, - 0x05ce, 0x05d4, 0x05df, 0x05e6, 0x05f0, 0x05fa, 0x0603, 0x060a, - 0x061f, 0x0627, 0x0640, 0x0648, 0x0652, 0x065a, 0x0666, 0x066c, - 0x0672, 0x0677, 0x0689, 0x068e, 0x0695, 0x069a, 0x06b1, 0x06cf, - 0x06d7, 0x06e2, 0x06e8, 0x0708, 0x071b, 0x072a, 0x073c, 0x074a, - // Entry C0 - FF - 0x074f, 0x0757, 0x075d, 0x075d, 0x0768, 0x076f, 0x076f, 0x0776, - 0x077e, 0x078b, 0x07a1, 0x07aa, 0x07b1, 0x07b9, 0x07c2, 0x07d5, - 0x07e0, 0x07e0, 0x07ea, 0x07f8, 0x0809, 0x0811, 0x0819, 0x0821, - 0x0821, 0x083c, 0x0847, 0x0847, 0x084c, 0x0858, 0x0858, 0x0876, - 0x087b, 0x087b, 0x0880, 0x0887, 0x0896, 0x089d, 0x08a3, 0x08b8, - 0x08bf, 0x08c6, 0x08ce, 0x08e3, 0x08ea, 0x08f1, 0x08fc, 0x0906, - 0x090d, 0x090d, 0x090d, 0x091d, 0x0924, 0x0932, 0x0940, 0x096a, - 0x0974, 0x098e, 0x09a3, 0x09ae, 0x09b6, 0x09c7, 0x09cd, 0x09cd, - // Entry 100 - 13F - 0x09d5, 0x09dd, 0x09ee, 0x09f4, 0x09fd, - }, - }, - { // fa - faRegionStr, - faRegionIdx, - }, - { // fa-AF - "اندوراانتیگوا و باربوداالبانیاانگولاانترکتیکاارجنتاینآسترالیابوسنیا و هر" + - "زه\u200cگوینابنگله\u200cدیشبلجیمبلغاریابرونیبولیویابرازیلبهاماسکانگ" + - "و - کینشاساکانگو - برازویلسویسچلیکولمبیاکاستریکاکیوبادنمارکاستونیاا" + - "ریتریاهسپانیهایتوپیافنلندمیکرونزیاگریناداگاناگینیاگینیا استواییگوات" + - "یمالاگینیا بیسائوگیاناهاندوراسکروشیاهایتیاندونیزیاآیرلندآیسلندجاپان" + - "کینیاقرغزستانکمپوچیاکوریای شمالیکوریای جنوبیسریلانکالیسوتولتوانیالا" + - "تویالیبیامادغاسکرمنگولیاموریتانیامالتامکسیکومالیزیاموزمبیقنایجرنیجر" + - "یانیکاراگواهالندناروینیپالزیلاند جدیدپانامهپیروپاپوا نیو گینیاپولند" + - "پرتگالپاراگوایرومانیاروآنداسویدنسینگاپورسلونیاسلواکیاسیرالیونسینیگا" + - "لسومالیهالسلوادورتاجکستاناکراینیوگاندایوروگوایسنت وینسنت و گرنادین" + - "\u200cهاونزویلاکوسوازیمبابوی", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x002c, 0x002c, 0x003a, - 0x003a, 0x0046, 0x0058, 0x0068, 0x0068, 0x0068, 0x0078, 0x0078, - 0x0078, 0x0078, 0x009d, 0x009d, 0x00b0, 0x00ba, 0x00ba, 0x00c8, - 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00c8, 0x00d2, 0x00e0, 0x00e0, - 0x00ec, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, 0x00f8, - 0x00f8, 0x0113, 0x0113, 0x012e, 0x0136, 0x0136, 0x0136, 0x013c, - 0x013c, 0x013c, 0x014a, 0x014a, 0x015a, 0x0164, 0x0164, 0x0164, - 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0164, 0x0170, 0x0170, - // Entry 40 - 7F - 0x0170, 0x0170, 0x0170, 0x0170, 0x017e, 0x017e, 0x017e, 0x018c, - 0x019a, 0x01a8, 0x01a8, 0x01a8, 0x01b2, 0x01b2, 0x01b2, 0x01c4, - 0x01c4, 0x01c4, 0x01c4, 0x01c4, 0x01d2, 0x01d2, 0x01d2, 0x01d2, - 0x01da, 0x01da, 0x01da, 0x01da, 0x01e4, 0x01e4, 0x01fd, 0x01fd, - 0x01fd, 0x020f, 0x020f, 0x0226, 0x0230, 0x0230, 0x0230, 0x0240, - 0x024c, 0x0256, 0x0256, 0x0256, 0x0268, 0x0274, 0x0274, 0x0274, - 0x0274, 0x0274, 0x0274, 0x0274, 0x0280, 0x0280, 0x0280, 0x0280, - 0x0280, 0x028a, 0x0294, 0x02a4, 0x02b2, 0x02b2, 0x02b2, 0x02b2, - // Entry 80 - BF - 0x02c9, 0x02e0, 0x02e0, 0x02e0, 0x02e0, 0x02e0, 0x02e0, 0x02e0, - 0x02e0, 0x02f0, 0x02f0, 0x02fc, 0x030a, 0x030a, 0x0316, 0x0320, - 0x0320, 0x0320, 0x0320, 0x0320, 0x0320, 0x0330, 0x0330, 0x0330, - 0x0330, 0x0330, 0x033e, 0x033e, 0x033e, 0x033e, 0x0350, 0x0350, - 0x035a, 0x035a, 0x035a, 0x035a, 0x0366, 0x0374, 0x0382, 0x0382, - 0x0382, 0x038c, 0x038c, 0x0398, 0x03aa, 0x03b4, 0x03be, 0x03c8, - 0x03c8, 0x03c8, 0x03dd, 0x03dd, 0x03e9, 0x03f1, 0x03f1, 0x040d, - 0x040d, 0x040d, 0x0417, 0x0417, 0x0417, 0x0417, 0x0417, 0x0423, - // Entry C0 - FF - 0x0423, 0x0433, 0x0433, 0x0433, 0x0433, 0x0441, 0x0441, 0x0441, - 0x044d, 0x044d, 0x044d, 0x044d, 0x044d, 0x0457, 0x0467, 0x0467, - 0x0473, 0x0473, 0x0481, 0x0491, 0x0491, 0x049f, 0x04ad, 0x04ad, - 0x04ad, 0x04ad, 0x04bf, 0x04bf, 0x04bf, 0x04bf, 0x04bf, 0x04bf, - 0x04bf, 0x04bf, 0x04bf, 0x04bf, 0x04cf, 0x04cf, 0x04cf, 0x04cf, - 0x04cf, 0x04cf, 0x04cf, 0x04cf, 0x04cf, 0x04cf, 0x04cf, 0x04db, - 0x04e9, 0x04e9, 0x04e9, 0x04e9, 0x04f9, 0x04f9, 0x04f9, 0x0525, - 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x0533, 0x053d, - // Entry 100 - 13F - 0x053d, 0x053d, 0x053d, 0x053d, 0x054d, - }, - }, - { // ff - "AnndooraEmiraat Araab DenntuɗeAfganistaanAntiguwaa e BarbudaaAnngiyaaAlb" + - "aniiArmeniiAnngolaaArjantiinSamowa AmerikOtiriisOstaraaliiAruubaAjer" + - "bayjaanBosnii HersegowiinBarbadoosBanglaadeesBeljikBurkibaa FaasoBul" + - "gariiBahreynBurunndiBeneeBermudaaBurnaayBoliwiiBeresiilBahamaasButaa" + - "nBotswaanaBelaruusBeliiseKanadaaNdenndaandi Demokaraasiire KonngoNde" + - "nndaandi SantarafrikKonngoSuwiisKodduwaarDuuɗe KuukCiliiKameruunSiin" + - "KolombiyaKosta RikaaKubaaDuuɗe Kap WeerSiiparNdenndaandi CekAlmaañJi" + - "butiiDanmarkDominikaNdenndanndi DominikaAlaseriEkuwatoorEstoniEjiptE" + - "ritereeEspaañEcoppiFenlandFijjiDuuɗe FalklandMikoronesiiFarayseGaboo" + - "Laamateeri RentundiGarnaadJeorgiiGiyaan FarayseGanaaJibraltaarGorwen" + - "dlandGammbiGineGwaadalupGinee EkuwaatoriyaalGereesGwaatemalaaGuwamGi" + - "ne-BisaawoGiyaanOnnduraasKorwasiiHaytiiOnngiriEnndonesiiIrlanndaIsra" + - "a’iilaEnndoKeeriindi britaani to maayo enndoIraakIraanIslanndaItaliJ" + - "amaykaJordaniSapooKeñaaKirgistaanKambodsoKiribariKomoorSent Kits e N" + - "ewisKoree RewoKoree WorgoKuweytiDuuɗe KaymaaKasakstaanLawoosLibaaSen" + - "t LusiyaaLincenstaynSiri LankaLiberiyaaLesotoLituaaniiLiksembuurLeto" + - "niiLibiMarukMonaakooMoldawiiMadagaskaarDuuɗe MarsaalMeceduwaanMaaliM" + - "iyamaarMonngoliiDuuɗe Mariyaana RewoMartinikMuritaniMonseraatMalteMo" + - "riisMaldiiweMalaawiMeksikMalesiiMosammbikNamibiiNuwel KaledoniiNijee" + - "rDuuɗe NorfolkNijeriyaaNikaraguwaaNederlanndaNorweesNepaalNawuruNiuw" + - "eNuwel SelanndaOmaanPanamaaPeruPolinesii FaraysePapuwaa Nuwel GineFi" + - "lipiinPakistaanPoloñSee Piyeer e MikelooPitkernPorto RikooPalestiin " + - "Sisjordani e GaasaaPurtugaalPalawuParaguwaayKataarRewiñooRumaniiRiis" + - "iiRuwanndaaArabii SawditDuuɗe SolomonSeyselSudaanSuweedSinngapuurSen" + - "t HelenSloweniiSlowakiiSeraa liyonSee MareeSenegaalSomaliiSurinaamSa" + - "wo Tome e PerensipeEl SalwadorSiriiSwaasilanndaDuuɗe Turke e Keikoos" + - "CaadTogooTaylanndaTajikistaanTokelaawTimoor FuɗnaangeTurkmenistaanTu" + - "nisiiTonngaaTurkiiTirnidaad e TobaagoTuwaluuTaywaanTansaniiUkereenUn" + - "ganndaaDowlaaji Dentuɗi AmerikUruguwaayUsbekistaanDowla WaticaanSee " + - "Weesaa e GarnadiinWenesuwelaaduuɗe kecce britaniiDuuɗe Kecce AmerikW" + - "iyetnaamWanuwaatuuWalis e FutunaSamowaaYemenMayootAfrik bŋ WorgoSamm" + - "biSimbaabuwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x001f, 0x002a, 0x003e, 0x0046, 0x004d, - 0x0054, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0083, 0x0089, - 0x0089, 0x0094, 0x00a6, 0x00af, 0x00ba, 0x00c0, 0x00ce, 0x00d6, - 0x00dd, 0x00e5, 0x00ea, 0x00ea, 0x00f2, 0x00f9, 0x0100, 0x0100, - 0x0108, 0x0110, 0x0116, 0x0116, 0x011f, 0x0127, 0x012e, 0x0135, - 0x0135, 0x0156, 0x016d, 0x0173, 0x0179, 0x0182, 0x018d, 0x0192, - 0x019a, 0x019e, 0x01a7, 0x01a7, 0x01b2, 0x01b7, 0x01c6, 0x01c6, - 0x01c6, 0x01cc, 0x01db, 0x01e2, 0x01e2, 0x01e9, 0x01f0, 0x01f8, - // Entry 40 - 7F - 0x020c, 0x0213, 0x0213, 0x021c, 0x0222, 0x0227, 0x0227, 0x022f, - 0x0236, 0x023c, 0x023c, 0x023c, 0x0243, 0x0248, 0x0257, 0x0262, - 0x0262, 0x0269, 0x026e, 0x0281, 0x0288, 0x028f, 0x029d, 0x029d, - 0x02a2, 0x02ac, 0x02b7, 0x02bd, 0x02c1, 0x02ca, 0x02de, 0x02e4, - 0x02e4, 0x02ef, 0x02f4, 0x0300, 0x0306, 0x0306, 0x0306, 0x030f, - 0x0317, 0x031d, 0x0324, 0x0324, 0x032e, 0x0336, 0x0342, 0x0342, - 0x0347, 0x0368, 0x036d, 0x0372, 0x037a, 0x037f, 0x037f, 0x0386, - 0x038d, 0x0392, 0x0398, 0x03a2, 0x03aa, 0x03b2, 0x03b8, 0x03c9, - // Entry 80 - BF - 0x03d3, 0x03de, 0x03e5, 0x03f2, 0x03fc, 0x0402, 0x0407, 0x0413, - 0x041e, 0x0428, 0x0431, 0x0437, 0x0440, 0x044a, 0x0451, 0x0455, - 0x045a, 0x0462, 0x046a, 0x046a, 0x046a, 0x0475, 0x0483, 0x048d, - 0x0492, 0x049a, 0x04a3, 0x04a3, 0x04b8, 0x04c0, 0x04c8, 0x04d1, - 0x04d6, 0x04dc, 0x04e4, 0x04eb, 0x04f1, 0x04f8, 0x0501, 0x0508, - 0x0517, 0x051d, 0x052b, 0x0534, 0x053f, 0x054a, 0x0551, 0x0557, - 0x055d, 0x0562, 0x0570, 0x0575, 0x057c, 0x0580, 0x0591, 0x05a3, - 0x05ab, 0x05b4, 0x05ba, 0x05ce, 0x05d5, 0x05e0, 0x05fd, 0x0606, - // Entry C0 - FF - 0x060c, 0x0616, 0x061c, 0x061c, 0x0624, 0x062b, 0x062b, 0x0631, - 0x063a, 0x0647, 0x0655, 0x065b, 0x0661, 0x0667, 0x0671, 0x067b, - 0x0683, 0x0683, 0x068b, 0x0696, 0x069f, 0x06a7, 0x06ae, 0x06b6, - 0x06b6, 0x06cb, 0x06d6, 0x06d6, 0x06db, 0x06e7, 0x06e7, 0x06fd, - 0x0701, 0x0701, 0x0706, 0x070f, 0x071a, 0x0722, 0x0733, 0x0740, - 0x0747, 0x074e, 0x0754, 0x0767, 0x076e, 0x0775, 0x077d, 0x0784, - 0x078d, 0x078d, 0x078d, 0x07a5, 0x07ae, 0x07b9, 0x07c7, 0x07dd, - 0x07e8, 0x07fd, 0x0810, 0x0819, 0x0823, 0x0831, 0x0838, 0x0838, - // Entry 100 - 13F - 0x083d, 0x0843, 0x0852, 0x0858, 0x0862, - }, - }, - { // fi - fiRegionStr, - fiRegionIdx, - }, - { // fil - filRegionStr, - filRegionIdx, - }, - { // fo - "AscensionAndorraSameindu EmirríkiniAfganistanAntigua & BarbudaAnguillaAl" + - "baniaArmeniaAngolaAntarktisArgentinaAmerikanska SamoaEysturríkiAvstr" + - "aliaArubaÁlandAserbadjanBosnia-HersegovinaBarbadosBangladesjBelgiaBu" + - "rkina FasoBulgariaBareinBurundiBeninSt-BarthélemyBermudaBruneiBolivi" + - "aNiðurlonds KaribiaBrasilBahamaoyggjarButanBouvetoyggjBotsvanaHvítar" + - "usslandBelisKanadaKokosoyggjarKongo, Dem. LýðveldiðMiðafrikalýðveldi" + - "ðKongoSveisFílabeinsstrondinCooksoyggjarKiliKamerunKinaKolombiaClip" + - "pertonKosta RikaKubaGrønhøvdaoyggjarCuraçaoJólaoyggjinKýprosKekkiaTý" + - "sklandDiego GarciaDjibutiDanmarkDominikaDominikalýðveldiðAlgeriaCeut" + - "a og MelillaEkvadorEstlandEgyptalandVestursaharaEritreaSpaniaEtiopia" + - "EvropasamveldiðEvrasonaFinnlandFijiFalklandsoyggjarMikronesiasamveld" + - "iðFøroyarFraklandGabonStórabretlandGrenadaGeorgiaFranska GujanaGuern" + - "seyGanaGibraltarGrønlandGambiaGuineaGuadeloupeEkvatorguineaGrikkalan" + - "dSuðurgeorgia og SuðursandwichoyggjarGuatemalaGuamGuinea-BissauGujan" + - "aHong Kong SAR KinaHeard og McDonaldoyggjarHondurasKroatiaHaitiUngar" + - "nKanariuoyggjarIndonesiaÍrlandÍsraelIsle of ManIndiaStóra Bretlands " + - "IndiahavoyggjarIrakIranÍslandItaliaJerseyJamaikaJordanJapanKenjaKirg" + - "isiaKambodjaKiribatiKomoroyggjarSt. Kitts & NevisNorðurkoreaSuðurkor" + - "eaKuvaitCaymanoyggjarKasakstanLaosLibanonSt. LusiaLiktinsteinSri Lan" + - "kaLiberiaLesotoLitavaLuksemborgLettlandLibyaMarokkoMonakoMoldovaMont" + - "enegroSt-MartinMadagaskarMarshalloyggjarMakedóniaMaliMyanmar (Burma)" + - "MongoliaMakao SAR KinaNorðaru MariuoyggjarMartiniqueMóritaniaMontser" + - "ratMaltaMóritiusMaldivoyggjarMalaviMeksikoMalaisiaMosambikNamibiaNýk" + - "aledóniaNigerNorfolksoyggjNigeriaNikaraguaNiðurlondNoregNepalNauruNi" + - "ueNýsælandOmanPanamaPeruFranska PolynesiaPapua NýguineaFilipsoyggjar" + - "PakistanPóllandSaint Pierre og MiquelonPitcairnoyggjarPuerto RikoPal" + - "estinskt landøkiPortugalPalauParaguaiKatarfjarskoti OsianiaRéunionRu" + - "meniaSerbiaRusslandRuandaSaudiarabiaSalomonoyggjarSeyskelloyggjarSud" + - "anSvøríkiSingaporSt. HelenaSloveniaSvalbard & Jan MayenSlovakiaSierr" + - "a LeonaSan MarinoSenegalSomaliaSurinamSuðursudanSao Tome & PrinsipiE" + - "l SalvadorSint MaartenSýriaSvasilandTristan da CunhaTurks- og Caicos" + - "oyggjarKjadFronsku sunnaru landaøkiTogoTailandTadsjikistanTokelauEys" + - "turtimorTurkmenistanTunesiaTongaTurkalandTrinidad & TobagoTuvaluTaiv" + - "anTansaniaUkrainaUgandaSambandsríki Amerikas fjarskotnu oyggjarSamei" + - "ndu TjóðirSambandsríki AmerikaUruguaiUsbekistanVatikanbýurSt. Vinsen" + - "t & GrenadinoyggjarVenesuelaStóra Bretlands JomfrúoyggjarSambandsrík" + - "i Amerikas JomfrúoyggjarVjetnamVanuatuWallis- og FutunaoyggjarSamoaK" + - "osovoJemenMayotteSuðurafrikaSambiaSimbabviókent økiheimurAfrikaNorðu" + - "ramerikaSuðuramerikaOsianiaVesturafrikaMiðamerikaEysturafrikaNorðura" + - "frikaMiðafrikasunnari partur av AfrikaAmerikaAmerika norðanfyri Meks" + - "ikoKaribiaEysturasiaSuðurasiaÚtsynningsasiaSuðurevropaAvstralasiaMel" + - "anesiaMikronesi økiPolynesiaAsiaMiðasiaVesturasiaEvropaEysturevropaN" + - "orðurevropaVesturevropaLatínamerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x0024, 0x002e, 0x003f, 0x0047, 0x004e, - 0x0055, 0x005b, 0x0064, 0x006d, 0x007e, 0x0089, 0x0092, 0x0097, - 0x009d, 0x00a7, 0x00b9, 0x00c1, 0x00cb, 0x00d1, 0x00dd, 0x00e5, - 0x00eb, 0x00f2, 0x00f7, 0x0105, 0x010c, 0x0112, 0x0119, 0x012c, - 0x0132, 0x013f, 0x0144, 0x014f, 0x0157, 0x0165, 0x016a, 0x0170, - 0x017c, 0x0194, 0x01aa, 0x01af, 0x01b4, 0x01c6, 0x01d2, 0x01d6, - 0x01dd, 0x01e1, 0x01e9, 0x01f3, 0x01fd, 0x0201, 0x0213, 0x021b, - 0x0227, 0x022e, 0x0234, 0x023d, 0x0249, 0x0250, 0x0257, 0x025f, - // Entry 40 - 7F - 0x0273, 0x027a, 0x028a, 0x0291, 0x0298, 0x02a2, 0x02ae, 0x02b5, - 0x02bb, 0x02c2, 0x02d2, 0x02da, 0x02e2, 0x02e6, 0x02f6, 0x030a, - 0x0312, 0x031a, 0x031f, 0x032d, 0x0334, 0x033b, 0x0349, 0x0351, - 0x0355, 0x035e, 0x0367, 0x036d, 0x0373, 0x037d, 0x038a, 0x0394, - 0x03ba, 0x03c3, 0x03c7, 0x03d4, 0x03da, 0x03ec, 0x0404, 0x040c, - 0x0413, 0x0418, 0x041e, 0x042c, 0x0435, 0x043c, 0x0443, 0x044e, - 0x0453, 0x0473, 0x0477, 0x047b, 0x0482, 0x0488, 0x048e, 0x0495, - 0x049b, 0x04a0, 0x04a5, 0x04ad, 0x04b5, 0x04bd, 0x04c9, 0x04da, - // Entry 80 - BF - 0x04e6, 0x04f1, 0x04f7, 0x0504, 0x050d, 0x0511, 0x0518, 0x0521, - 0x052c, 0x0535, 0x053c, 0x0542, 0x0548, 0x0552, 0x055a, 0x055f, - 0x0566, 0x056c, 0x0573, 0x057d, 0x0586, 0x0590, 0x059f, 0x05a9, - 0x05ad, 0x05bc, 0x05c4, 0x05d2, 0x05e7, 0x05f1, 0x05fb, 0x0605, - 0x060a, 0x0613, 0x0620, 0x0626, 0x062d, 0x0635, 0x063d, 0x0644, - 0x0651, 0x0656, 0x0663, 0x066a, 0x0673, 0x067d, 0x0682, 0x0687, - 0x068c, 0x0690, 0x069a, 0x069e, 0x06a4, 0x06a8, 0x06b9, 0x06c8, - 0x06d5, 0x06dd, 0x06e5, 0x06fd, 0x070c, 0x0717, 0x072b, 0x0733, - // Entry C0 - FF - 0x0738, 0x0740, 0x0745, 0x0756, 0x075e, 0x0765, 0x076b, 0x0773, - 0x0779, 0x0784, 0x0792, 0x07a1, 0x07a6, 0x07af, 0x07b7, 0x07c1, - 0x07c9, 0x07dd, 0x07e5, 0x07f1, 0x07fb, 0x0802, 0x0809, 0x0810, - 0x081b, 0x082e, 0x0839, 0x0845, 0x084b, 0x0854, 0x0864, 0x087b, - 0x087f, 0x0898, 0x089c, 0x08a3, 0x08af, 0x08b6, 0x08c1, 0x08cd, - 0x08d4, 0x08d9, 0x08e2, 0x08f3, 0x08f9, 0x08ff, 0x0907, 0x090e, - 0x0914, 0x093d, 0x094e, 0x0963, 0x096a, 0x0974, 0x0980, 0x099d, - 0x09a6, 0x09c5, 0x09ea, 0x09f1, 0x09f8, 0x0a10, 0x0a15, 0x0a1b, - // Entry 100 - 13F - 0x0a20, 0x0a27, 0x0a33, 0x0a39, 0x0a41, 0x0a4c, 0x0a52, 0x0a58, - 0x0a66, 0x0a73, 0x0a7a, 0x0a86, 0x0a91, 0x0a9d, 0x0aaa, 0x0ab4, - 0x0acc, 0x0ad3, 0x0aee, 0x0af5, 0x0aff, 0x0b09, 0x0b18, 0x0b24, - 0x0b2f, 0x0b38, 0x0b46, 0x0b4f, 0x0b53, 0x0b5b, 0x0b65, 0x0b6b, - 0x0b77, 0x0b84, 0x0b90, 0x0b90, 0x0b9d, - }, - }, - { // fr - frRegionStr, - frRegionIdx, - }, - { // fr-BE - "BruneiÎles Géorgie du Sud et Sandwich du Sud", - []uint16{ // 97 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - // Entry 40 - 7F - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x002e, - }, - }, - { // fr-CA - frCARegionStr, - frCARegionIdx, - }, - {}, // fr-CH - { // fur - "AndorraEmirâts araps unîtsAfghanistanAntigua e BarbudaAnguillaAlbanieArm" + - "enieAngolaAntarticArgjentineSamoa merecanisAustrieAustralieArubaIsul" + - "is AlandAzerbaigianBosnie e ErcegovineBarbadosBangladeshBelgjicheBur" + - "kina FasoBulgarieBahrainBurundiBeninSant BarthélemyBermudaBruneiBoli" + - "vieBrasîlBahamasBhutanIsule BouvetBotswanaBielorussieBelizeCanadeIsu" + - "lis CocosRepubliche Democratiche dal CongoRepubliche centri africane" + - "Congo - BrazzavilleSvuizareCueste di AvoliIsulis CookCileCamerunCine" + - "ColombieIsule ClippertonCosta RicaCubaCjâf vertIsule ChristmasCipriR" + - "epubliche cecheGjermanieDiego GarciaGibutiDanimarcjeDominicheRepubli" + - "che dominicaneAlzerieCeuta e MelillaEcuadorEstonieEgjitSahara ociden" + - "tâlEritreeSpagneEtiopieUnion europeaneFinlandieFiziIsulis FalklandMi" + - "cronesieIsulis FaroeFranceGabonReam unîtGrenadaGjeorgjieGuiana franc" + - "êsGuernseyGhanaGjibraltarGroenlandeGambiaGuineeGuadalupeGuinee ecua" + - "toriâlGrecieGeorgia dal Sud e Isulis Sandwich dal SudGuatemalaGuamGu" + - "inea-BissauGuyanaRegjon aministrative speciâl de Cine di Hong KongIs" + - "ule Heard e Isulis McDonaldHondurasCravuazieHaitiOngjarieIsulis Cana" + - "riisIndonesieIrlandeIsraêlIsule di ManIndiaTeritori britanic dal Oce" + - "an IndianIraqIranIslandeItalieJerseyGjamaicheJordanieGjaponKenyaKirg" + - "hizstanCambozeKiribatiComorisSan Kitts e NevisCoree dal nordCoree da" + - "l sudKuwaitIsulis CaymanKazachistanLaosLibanSante LusieLiechtenstein" + - "Sri LankaLiberieLesothoLituanieLussemburcLetonieLibieMarocMonacoMold" + - "avieMontenegroSant MartinMadagascarIsulis MarshallMacedonieMaliBirma" + - "nieMongolieRegjon aministrative speciâl de Cine di MacaoIsulis Maria" + - "na dal NordMartinicheMauritanieMontserratMaltaMauriziMaldivisMalawiM" + - "essicMalaysiaMozambicNamibieGnove CaledonieNigerIsole NorfolkNigerie" + - "NicaraguaPaîs basNorvegjeNepalNauruNiueGnove ZelandeOmanPanamàPerùPo" + - "linesie francêsPapue Gnove GuineeFilipinisPakistanPolonieSan Pierre " + - "e MiquelonPitcairnPorto RicoTeritoris palestinêsPortugalPalauParagua" + - "yQatarOceanie perifericheReunionRomanieSerbieRussieRuandeArabie Saud" + - "ideIsulis SalomonSeychellesSudanSvezieSingaporeSante ElineSlovenieSv" + - "albard e Jan MayenSlovachieSierra LeoneSan MarinSenegalSomalieSurina" + - "meSao Tomè e PrincipeEl SalvadorSirieSwazilandTristan da CunhaIsulis" + - " Turks e CaicosÇadTeritoris meridionâi francêsTogoTailandieTazikista" + - "nTokelauTimor orientâlTurkmenistanTunisieTongaTurchieTrinidad e Toba" + - "goTuvaluTaiwanTanzanieUcraineUgandaIsulis periferichis minôrs dai St" + - "âts UnîtsStâts UnîtsUruguayUzbechistanVaticanSan Vincent e lis Gren" + - "adinisVenezuelaIsulis vergjinis britanichisIsulis vergjinis american" + - "isVietnamVanuatuWallis e FutunaSamoaYemenMayotteSud AfricheZambiaZim" + - "babweRegjon no cognossude o no valideMontAfricheAmeriche dal NordAme" + - "riche meridionâlOceanieAfriche ocidentâlAmeriche centrâlAfriche orie" + - "ntâlAfriche setentrionâlAfriche di mieçAfriche meridionâlAmerichisAm" + - "eriche setentrionâlcaraibicAsie orientâlAsie meridionâlAsie sud orie" + - "ntâlEurope meridionâlAustralie e Gnove ZelandeMelanesieRegjon de Mic" + - "ronesiePolinesieAsieAsie centrâlAsie ocidentâlEuropeEurope orientâlE" + - "urope setentrionâlEurope ocidentâlAmeriche latine", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x001c, 0x0027, 0x0038, 0x0040, 0x0047, - 0x004e, 0x0054, 0x005c, 0x0066, 0x0075, 0x007c, 0x0085, 0x008a, - 0x0096, 0x00a1, 0x00b4, 0x00bc, 0x00c6, 0x00cf, 0x00db, 0x00e3, - 0x00ea, 0x00f1, 0x00f6, 0x0106, 0x010d, 0x0113, 0x011a, 0x011a, - 0x0121, 0x0128, 0x012e, 0x013a, 0x0142, 0x014d, 0x0153, 0x0159, - 0x0165, 0x0186, 0x01a0, 0x01b3, 0x01bb, 0x01ca, 0x01d5, 0x01d9, - 0x01e0, 0x01e4, 0x01ec, 0x01fc, 0x0206, 0x020a, 0x0214, 0x0214, - 0x0223, 0x0228, 0x0238, 0x0241, 0x024d, 0x0253, 0x025d, 0x0266, - // Entry 40 - 7F - 0x027b, 0x0282, 0x0291, 0x0298, 0x029f, 0x02a4, 0x02b5, 0x02bc, - 0x02c2, 0x02c9, 0x02d8, 0x02d8, 0x02e1, 0x02e5, 0x02f4, 0x02fe, - 0x030a, 0x0310, 0x0315, 0x031f, 0x0326, 0x032f, 0x033e, 0x0346, - 0x034b, 0x0355, 0x035f, 0x0365, 0x036b, 0x0374, 0x0386, 0x038c, - 0x03b5, 0x03be, 0x03c2, 0x03cf, 0x03d5, 0x0407, 0x0424, 0x042c, - 0x0435, 0x043a, 0x0442, 0x0451, 0x045a, 0x0461, 0x0468, 0x0474, - 0x0479, 0x049b, 0x049f, 0x04a3, 0x04aa, 0x04b0, 0x04b6, 0x04bf, - 0x04c7, 0x04cd, 0x04d2, 0x04dd, 0x04e4, 0x04ec, 0x04f3, 0x0504, - // Entry 80 - BF - 0x0512, 0x051f, 0x0525, 0x0532, 0x053d, 0x0541, 0x0546, 0x0551, - 0x055e, 0x0567, 0x056e, 0x0575, 0x057d, 0x0587, 0x058e, 0x0593, - 0x0598, 0x059e, 0x05a6, 0x05b0, 0x05bb, 0x05c5, 0x05d4, 0x05dd, - 0x05e1, 0x05e9, 0x05f1, 0x061f, 0x0636, 0x0640, 0x064a, 0x0654, - 0x0659, 0x0660, 0x0668, 0x066e, 0x0674, 0x067c, 0x0684, 0x068b, - 0x069a, 0x069f, 0x06ac, 0x06b3, 0x06bc, 0x06c5, 0x06cd, 0x06d2, - 0x06d7, 0x06db, 0x06e8, 0x06ec, 0x06f3, 0x06f8, 0x070a, 0x071c, - 0x0725, 0x072d, 0x0734, 0x0749, 0x0751, 0x075b, 0x0770, 0x0778, - // Entry C0 - FF - 0x077d, 0x0785, 0x078a, 0x079d, 0x07a4, 0x07ab, 0x07b1, 0x07b7, - 0x07bd, 0x07cb, 0x07d9, 0x07e3, 0x07e8, 0x07ee, 0x07f7, 0x0802, - 0x080a, 0x081e, 0x0827, 0x0833, 0x083c, 0x0843, 0x084a, 0x0852, - 0x0852, 0x0866, 0x0871, 0x0871, 0x0876, 0x087f, 0x088f, 0x08a4, - 0x08a8, 0x08c6, 0x08ca, 0x08d3, 0x08dd, 0x08e4, 0x08f3, 0x08ff, - 0x0906, 0x090b, 0x0912, 0x0923, 0x0929, 0x092f, 0x0937, 0x093e, - 0x0944, 0x0971, 0x0971, 0x097e, 0x0985, 0x0990, 0x0997, 0x09b3, - 0x09bc, 0x09d8, 0x09f3, 0x09fa, 0x0a01, 0x0a10, 0x0a15, 0x0a15, - // Entry 100 - 13F - 0x0a1a, 0x0a21, 0x0a2c, 0x0a32, 0x0a3a, 0x0a5a, 0x0a5e, 0x0a65, - 0x0a76, 0x0a8a, 0x0a91, 0x0aa3, 0x0ab4, 0x0ac5, 0x0ada, 0x0aea, - 0x0afd, 0x0b06, 0x0b1c, 0x0b24, 0x0b32, 0x0b42, 0x0b54, 0x0b66, - 0x0b7f, 0x0b88, 0x0b9c, 0x0ba5, 0x0ba9, 0x0bb6, 0x0bc5, 0x0bcb, - 0x0bdb, 0x0bef, 0x0c00, 0x0c00, 0x0c0f, - }, - }, - { // fy - "AscensionAndorraVerenigde Arabyske EmiratenAfghanistanAntigua en Barbuda" + - "AnguillaAlbaniëArmeniëAngolaAntarcticaArgentiniëAmerikaansk SamoaEas" + - "tenrykAustraliëArubaÅlânAzerbeidzjanBosnië en HerzegovinaBarbadosBan" + - "gladeshBelgiëBurkina FasoBulgarijeBahreinBurundiBeninSaint Barthélem" + - "yBermudaBruneiBoliviaKaribysk NederlânBraziliëBahama’sBhutanBouvetei" + - "lânBotswanaWit-RuslânBelizeCanadaKokosilanenCongo-KinshasaSintraal-A" + - "frikaanske RepublykCongo-BrazzavilleSwitserlânIvoorkustCookeilannenC" + - "hiliKameroenSinaKolombiaClippertonCosta RicaKubaKaapverdiëCuraçaoKry" + - "steilanSyprusTsjechjeDútslânDiego GarciaDjiboutiDenemarkenDominikaDo" + - "minikaanske RepublykAlgerijeCeuta en MelillaEcuadorEstlânEgypteWeste" + - "lijke SaharaEritreaSpanjeEthiopiëEuropeeske UnieFinlânFijiFalklâneil" + - "annenMicronesiëFaeröerFrankrijkGabonVerenigd KoninkrijkGrenadaGeorgi" + - "ëFrans-GuyanaGuernseyGhanaGibraltarGrienlânGambiaGuineeGuadeloupeEq" + - "uatoriaal-GuineaGrikelânSûd-Georgia en Sûdlike SandwicheilannenGuate" + - "malaGuamGuinee-BissauGuyanaHongkong SAR van SinaHeard- en McDonaldei" + - "lannenHondurasKroatiëHaïtiHongarijeKanaryske EilânnenYndonesiëIerlân" + - "IsraëlIsle of ManIndiaBritse Gebieden yn de Indyske OseaanIrakIranYs" + - "lânItaliëJerseyJamaicaJordaniëJapanKeniaKirgiziëCambodjaKiribatiComo" + - "renSaint Kitts en NevisNoard-KoreaSûd-KoreaKoeweitCaymaneilannenKaza" + - "chstanLaosLibanonSaint LuciaLiechtensteinSri LankaLiberiaLesothoLito" + - "uwenLuxemburgLetlânLibiëMarokkoMonacoMoldaviëMontenegroSaint-MartinM" + - "adeiaskarMarshalleilannenMacedoniëMaliMyanmar (Birma)MongoliëMacao S" + - "AR van SinaNoardlike MarianeneilannenMartiniqueMauritaniëMontserratM" + - "altaMauritiusMaldivenMalawiMexicoMaleisiëMozambiqueNamibiëNij-Caledo" + - "niëNigerNorfolkeilânNigeriaNicaraguaNederlânNoarwegenNepalNauruNiueN" + - "ij-SeelânOmanPanamaPeruFrans-PolynesiëPapoea-Nij-GuineaFilipijnenPak" + - "istanPolenSaint-Pierre en MiquelonPitcairneilannenPuerto RicoPalesty" + - "nske gebietenPortugalPalauParaguayQatarOerig OceaniëRéunionRoemeniëS" + - "erviëRuslânRwandaSaoedi-ArabiëSalomonseilannenSeychellenSoedanZweden" + - "SingaporeSint-HelenaSloveniëSpitsbergen en Jan MayenSlowakijeSierra " + - "LeoneSan MarinoSenegalSomaliëSurinameSûd-SoedanSao Tomé en PrincipeE" + - "l SalvadorSint-MaartenSyriëSwazilânTristan da CunhaTurks- en Caicose" + - "ilannenTsjaadFranse Gebieden in de zuidelijke Indyske OseaanTogoThai" + - "lânTadzjikistanTokelauEast-TimorTurkmenistanTunesiëTongaTurkijeTrini" + - "dad en TobagoTuvaluTaiwanTanzaniaOekraïneOegandaLyts ôflizzen eilann" + - "en fan de Ferienigde StatenFerienigde StatenUruguayOezbekistanVatica" + - "anstêdSaint Vincent en de GrenadinesVenezuelaBritse MaagdeneilannenA" + - "merikaanske MaagdeneilannenVietnamVanuatuWallis en FutunaSamoaKosovo" + - "JemenMayotteSûd-AfrikaZambiaZimbabweUnbekend gebietWrâldAfrikaNoard-" + - "AmerikaSûd-AmerikaOceaniëWest-AfrikaMidden-AmerikaEast-AfrikaNoard-A" + - "frikaSintraal-AfrikaSûdelijk AfrikaAmerikaNoardlik AmerikaKaribysk g" + - "ebietEast-AziëSûd-AziëSûdoost-AziëSûd-EuropaAustralaziëMelanesiëMicr" + - "onesyske regioPolynesiëAziëSintraal-AziëWest-AziëEuropaEast-EuropaNo" + - "ard-EuropaWest-EuropaLatynsk-Amearika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0048, 0x0050, 0x0058, - 0x0060, 0x0066, 0x0070, 0x007b, 0x008c, 0x0095, 0x009f, 0x00a4, - 0x00aa, 0x00b6, 0x00cc, 0x00d4, 0x00de, 0x00e5, 0x00f1, 0x00fa, - 0x0101, 0x0108, 0x010d, 0x011e, 0x0125, 0x012b, 0x0132, 0x0144, - 0x014d, 0x0157, 0x015d, 0x0169, 0x0171, 0x017c, 0x0182, 0x0188, - 0x0193, 0x01a1, 0x01be, 0x01cf, 0x01da, 0x01e3, 0x01ef, 0x01f4, - 0x01fc, 0x0200, 0x0208, 0x0212, 0x021c, 0x0220, 0x022b, 0x0233, - 0x023d, 0x0243, 0x024b, 0x0254, 0x0260, 0x0268, 0x0272, 0x027a, - // Entry 40 - 7F - 0x0290, 0x0298, 0x02a8, 0x02af, 0x02b6, 0x02bc, 0x02cd, 0x02d4, - 0x02da, 0x02e3, 0x02f2, 0x02f2, 0x02f9, 0x02fd, 0x030d, 0x0318, - 0x0320, 0x0329, 0x032e, 0x0341, 0x0348, 0x0350, 0x035c, 0x0364, - 0x0369, 0x0372, 0x037b, 0x0381, 0x0387, 0x0391, 0x03a3, 0x03ac, - 0x03d5, 0x03de, 0x03e2, 0x03ef, 0x03f5, 0x040a, 0x0424, 0x042c, - 0x0434, 0x043a, 0x0443, 0x0456, 0x0460, 0x0467, 0x046e, 0x0479, - 0x047e, 0x04a2, 0x04a6, 0x04aa, 0x04b0, 0x04b7, 0x04bd, 0x04c4, - 0x04cd, 0x04d2, 0x04d7, 0x04e0, 0x04e8, 0x04f0, 0x04f7, 0x050b, - // Entry 80 - BF - 0x0516, 0x0520, 0x0527, 0x0535, 0x053f, 0x0543, 0x054a, 0x0555, - 0x0562, 0x056b, 0x0572, 0x0579, 0x0581, 0x058a, 0x0591, 0x0597, - 0x059e, 0x05a4, 0x05ad, 0x05b7, 0x05c3, 0x05cd, 0x05dd, 0x05e7, - 0x05eb, 0x05fa, 0x0603, 0x0615, 0x062f, 0x0639, 0x0644, 0x064e, - 0x0653, 0x065c, 0x0664, 0x066a, 0x0670, 0x0679, 0x0683, 0x068b, - 0x0699, 0x069e, 0x06ab, 0x06b2, 0x06bb, 0x06c4, 0x06cd, 0x06d2, - 0x06d7, 0x06db, 0x06e6, 0x06ea, 0x06f0, 0x06f4, 0x0704, 0x0715, - 0x071f, 0x0727, 0x072c, 0x0744, 0x0754, 0x075f, 0x0773, 0x077b, - // Entry C0 - FF - 0x0780, 0x0788, 0x078d, 0x079b, 0x07a3, 0x07ac, 0x07b3, 0x07ba, - 0x07c0, 0x07ce, 0x07de, 0x07e8, 0x07ee, 0x07f4, 0x07fd, 0x0808, - 0x0811, 0x0829, 0x0832, 0x083e, 0x0848, 0x084f, 0x0857, 0x085f, - 0x086a, 0x087f, 0x088a, 0x0896, 0x089c, 0x08a5, 0x08b5, 0x08cd, - 0x08d3, 0x0902, 0x0906, 0x090e, 0x091a, 0x0921, 0x092b, 0x0937, - 0x093f, 0x0944, 0x094b, 0x095d, 0x0963, 0x0969, 0x0971, 0x097a, - 0x0981, 0x09b1, 0x09b1, 0x09c2, 0x09c9, 0x09d4, 0x09e1, 0x09ff, - 0x0a08, 0x0a1e, 0x0a3a, 0x0a41, 0x0a48, 0x0a58, 0x0a5d, 0x0a63, - // Entry 100 - 13F - 0x0a68, 0x0a6f, 0x0a7a, 0x0a80, 0x0a88, 0x0a97, 0x0a9d, 0x0aa3, - 0x0ab0, 0x0abc, 0x0ac4, 0x0acf, 0x0add, 0x0ae8, 0x0af4, 0x0b03, - 0x0b13, 0x0b1a, 0x0b2a, 0x0b39, 0x0b43, 0x0b4d, 0x0b5b, 0x0b66, - 0x0b72, 0x0b7c, 0x0b8e, 0x0b98, 0x0b9d, 0x0bab, 0x0bb5, 0x0bbb, - 0x0bc6, 0x0bd2, 0x0bdd, 0x0bdd, 0x0bed, - }, - }, - { // ga - "Oileán na DeascabhálaAndóraAontas na nÉimíríochtaí Arabachaan Afganastái" + - "nAntigua agus BarbúdaAngaílean Albáinan AirméinAngólaan Antartaicean" + - " AirgintínSamó Mheiriceáan Ostairan AstráilArúbaOileáin Ålandan Asar" + - "baiseáinan Bhoisnia agus an HeirseagaivéinBarbadósan Bhanglaidéisan " + - "BheilgBuircíne Fasóan BhulgáirBairéinan BhurúinBeininSaint Barthélem" + - "yBeirmiúdaBrúinéan Bholaivan Ísiltír Chairibeachan Bhrasaílna Baháma" + - "ían BhútáinOileán Bouvetan Bhotsuáinan Bhealarúisan BheilísCeanadaO" + - "ileáin Cocos (Keeling)Poblacht Dhaonlathach an ChongóPoblacht na hAf" + - "raice Láiran Congóan Eilvéisan Cósta EabhairOileáin Cookan tSileCama" + - "rúnan tSínan CholóimOileán ClippertonCósta RíceCúbaRinn VerdeCuraçao" + - "Oileán na Nollagan ChipirAn tSeiciaan GhearmáinDiego GarciaDjiboutia" + - "n DanmhairgDoiminicean Phoblacht Dhoiminiceachan AilgéirCeuta agus M" + - "elillaEacuadóran Eastóinan Éigiptan Sahára Thiaran Eiritréan Spáinna" + - "n Aetóipan tAontas EorpachLimistéar an euroan FhionlainnFidsíOileáin" + - " Fháclainnean MhicrinéisOileáin Fharóan Fhraincan Ghabúinan Ríocht A" + - "ontaitheGreanádaan tSeoirsiaGuáin na FrainceGeansaíGánaGiobráltaran " + - "Ghraonlainnan Ghaimbiaan GhuineGuadalúipan Ghuine Mheánchiorclachan " + - "Ghréigan tSeoirsia Theas agus Oileáin Sandwich TheasGuatamalaGuamGui" + - "ne Bissauan GhuáinS.R.R. na Síne Hong CongOileán Heard agus Oileáin " + - "McDonaldHondúrasan ChróitHáítían Ungáirna hOileáin Chanárachaan Indi" + - "néisÉireIosraelOileán Mhanannan IndiaCríoch Aigéan Indiach na Breata" + - "inean Iaráican Iaráinan Íoslainnan IodáilGeirsíIamáicean Iordáinan t" + - "Seapáinan Chéiniaan Chirgeastáinan ChambóidCireabaitíOileáin Chomóra" + - "San Críostóir-Nimheasan Chóiré Thuaidhan Chóiré TheasCuáitOileáin Ca" + - "ymanan ChasacstáinLaosan LiobáinSaint LuciaLichtinstéinSrí Lancaan L" + - "ibéirLeosótaan LiotuáinLucsamburgan Laitviaan LibiaMaracóMonacóan Mh" + - "oldóivMontainéagróSaint-MartinMadagascarOileáin Marshallan Mhacadóin" + - "MailíMaenmar (Burma)an MhongóilS.R.R. na Síne Macaona hOileáin Mháir" + - "ianacha ThuaidhMartiniquean MháratáinMontsaratMáltaOileán MhuirísOil" + - "eáin Mhaildívean MhaláivMeicsiceoan MhalaeisiaMósaimbícan Namaiban N" + - "ua-Chaladóinan NígirOileán Norfolkan NigéirNicearaguaan Ísiltíran Io" + - "ruaNeipealNárúNiuean Nua-ShéalainnÓmanPanamaPeiriúPolainéis na Frain" + - "ceNua-Ghuine Phapuana hOileáin Fhilipíneachaan Phacastáinan Pholainn" + - "San Pierre agus MiquelonOileáin PitcairnPórtó Rícena Críocha Palaist" + - "íneachaan PhortaingéilOileáin PalauParaguaCataran Aigéine Imeallach" + - "Réunionan Rómáinan tSeirbiaan RúisRuandaan Araib ShádachOileáin Shol" + - "omónna Séiséilan tSúdáinan tSualainnSingeapórSan Héilinan tSlóivéinS" + - "valbard agus Jan Mayenan tSlóvaicSiarra LeonSan Mairínean tSeineagái" + - "lan tSomáilSuranaman tSúdáin TheasSão Tomé agus Príncipean tSalvadói" + - "rSint Maartenan tSiriaan tSuasalainnTristan da CunhaOileáin na dTurc" + - "ach agus CaicosSeadCríocha Francacha Dheisceart an DomhainTógaan Téa" + - "lainnan TáidsíceastáinTócaláTíomór Thoiran Tuircméanastáinan Túinéis" + - "Tongaan TuircOileán na Tríonóide agus TobágaTuvaluan Téaváinan Tansá" + - "inan ÚcráinUgandaOileáin Imeallacha S.A.M.na Náisiúin AontaitehStáit" + - " Aontaithe MheiriceáUraguaan ÚisbéiceastáinCathair na VatacáineSan U" + - "inseann agus na GreanáidíníVeiniséalaOileáin Bhriotanacha na Maighde" + - "anOileáin Mheiriceánacha na MaighdeanVítneamVanuatúVailís agus Futún" + - "aSamóan ChosaivÉiminMayottean Afraic Theasan tSaimbiaan tSiombáibRéi" + - "giún Anaithnidan DomhanAn AfraicMeiriceá ThuaidhMeiriceá Theasan Aig" + - "éineIarthar na hAfraiceMeiriceá LáirOirthear na hAfraiceTuaisceart " + - "na hAfraiceAn Afraic LáirDeisceart na hAfraiceCríocha MheiriceáTuais" + - "ceart Mheiriceáan Mhuir ChairibOirthear na hÁiseDeisceart na hÁiseOi" + - "rdheisceart na hÁiseDeisceart na hEorpaan Astraláisean Mheilinéisan " + - "Réigiún Micrinéiseachan Pholainéisan Áisean Áise LáirIarthar na hÁis" + - "ean EoraipOirthear na hEorpaTuaisceart na hEorpaIarthar na hEorpaMei" + - "riceá Laidineach", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0017, 0x001e, 0x0042, 0x0051, 0x0066, 0x006e, 0x0078, - 0x0083, 0x008a, 0x0097, 0x00a4, 0x00b4, 0x00bd, 0x00c8, 0x00ce, - 0x00dd, 0x00ed, 0x0110, 0x0119, 0x0129, 0x0132, 0x0141, 0x014d, - 0x0155, 0x0160, 0x0166, 0x0177, 0x0181, 0x0189, 0x0193, 0x01ab, - 0x01b7, 0x01c3, 0x01cf, 0x01dd, 0x01ea, 0x01f8, 0x0203, 0x020a, - 0x0222, 0x0242, 0x025c, 0x0265, 0x0270, 0x0281, 0x028e, 0x0296, - 0x029e, 0x02a6, 0x02b1, 0x02c3, 0x02cf, 0x02d4, 0x02de, 0x02e6, - 0x02f7, 0x0300, 0x030a, 0x0317, 0x0323, 0x032b, 0x0337, 0x0340, - // Entry 40 - 7F - 0x035a, 0x0365, 0x0377, 0x0380, 0x038b, 0x0395, 0x03a5, 0x03b0, - 0x03ba, 0x03c4, 0x03d6, 0x03e8, 0x03f5, 0x03fb, 0x040f, 0x041d, - 0x042c, 0x0436, 0x0441, 0x0455, 0x045e, 0x046a, 0x047b, 0x0483, - 0x0488, 0x0493, 0x04a1, 0x04ac, 0x04b5, 0x04bf, 0x04d9, 0x04e3, - 0x0512, 0x051b, 0x051f, 0x052b, 0x0535, 0x054e, 0x0572, 0x057b, - 0x0585, 0x058d, 0x0597, 0x05af, 0x05bb, 0x05c0, 0x05c7, 0x05d6, - 0x05de, 0x0602, 0x060c, 0x0616, 0x0622, 0x062c, 0x0633, 0x063b, - 0x0646, 0x0652, 0x065d, 0x066d, 0x0679, 0x0684, 0x0695, 0x06ac, - // Entry 80 - BF - 0x06bf, 0x06d0, 0x06d6, 0x06e5, 0x06f4, 0x06f8, 0x0703, 0x070e, - 0x071b, 0x0725, 0x072f, 0x0737, 0x0743, 0x074d, 0x0757, 0x075f, - 0x0766, 0x076d, 0x0779, 0x0787, 0x0793, 0x079d, 0x07ae, 0x07bb, - 0x07c1, 0x07d0, 0x07dc, 0x07f1, 0x0813, 0x081d, 0x082b, 0x0834, - 0x083a, 0x084a, 0x085d, 0x0868, 0x0871, 0x087e, 0x0889, 0x0892, - 0x08a3, 0x08ac, 0x08bb, 0x08c5, 0x08cf, 0x08db, 0x08e3, 0x08ea, - 0x08f0, 0x08f4, 0x0905, 0x090a, 0x0910, 0x0917, 0x092c, 0x093d, - 0x0958, 0x0966, 0x0971, 0x0989, 0x099a, 0x09a7, 0x09c2, 0x09d2, - // Entry C0 - FF - 0x09e0, 0x09e7, 0x09ec, 0x0a01, 0x0a09, 0x0a14, 0x0a1f, 0x0a27, - 0x0a2d, 0x0a3e, 0x0a50, 0x0a5c, 0x0a68, 0x0a74, 0x0a7e, 0x0a89, - 0x0a97, 0x0aae, 0x0aba, 0x0ac5, 0x0ad1, 0x0ae0, 0x0aeb, 0x0af2, - 0x0b04, 0x0b1d, 0x0b2b, 0x0b37, 0x0b40, 0x0b4e, 0x0b5e, 0x0b7e, - 0x0b82, 0x0baa, 0x0baf, 0x0bbb, 0x0bcf, 0x0bd7, 0x0be5, 0x0bf9, - 0x0c05, 0x0c0a, 0x0c12, 0x0c35, 0x0c3b, 0x0c47, 0x0c52, 0x0c5d, - 0x0c63, 0x0c7d, 0x0c94, 0x0caf, 0x0cb5, 0x0cc9, 0x0cde, 0x0d01, - 0x0d0c, 0x0d2e, 0x0d53, 0x0d5b, 0x0d63, 0x0d77, 0x0d7c, 0x0d86, - // Entry 100 - 13F - 0x0d8c, 0x0d93, 0x0da2, 0x0dad, 0x0dba, 0x0dcd, 0x0dd6, 0x0ddf, - 0x0df0, 0x0dff, 0x0e0a, 0x0e1d, 0x0e2c, 0x0e40, 0x0e56, 0x0e65, - 0x0e7a, 0x0e8d, 0x0ea2, 0x0eb2, 0x0ec4, 0x0ed7, 0x0eee, 0x0f01, - 0x0f0f, 0x0f1d, 0x0f38, 0x0f46, 0x0f4e, 0x0f5c, 0x0f6d, 0x0f76, - 0x0f88, 0x0f9c, 0x0fad, 0x0fad, 0x0fc1, - }, - }, - { // gd - "Eilean na DeasgabhalachAndorraNa h-Iomaratan Arabach AonaichteAfghanastà" + - "nAintìoga is BarbudaAnguilliaAlbàiniaAirmeineaAngòlaAn AntartaigAn A" + - "rgantainSamotha na h-AimeireagaAn OstairAstràiliaArùbaNa h-Eileanan " + - "ÅlandAsarbaideànBosna is HearsagobhanaBarbadosBangladaisA’ BheilgBu" + - "irciona FasoA’ BhulgairBachrainBurundaidhBeininSaint BarthélemyBearm" + - "ùdaBrùnaighBoilibhiaNa Tìrean Ìsle CaraibeachBraisilNa h-Eileanan B" + - "hathamaButànEilean BouvetBotsuanaA’ BhealaruisA’ BheilìsCanadaNa h-E" + - "ileanan Chocos (Keeling)Congo - KinshasaPoblachd Meadhan AfragaA’ Ch" + - "ongo - BrazzavilleAn EilbheisCôte d’IvoireEileanan CookAn t-SileCama" + - "runAn t-SìnColoimbiaEilean ClippertonCosta RìceaCùbaAn Ceap UaineCur" + - "açaoEilean na NollaigCìoprasAn t-SeicA’ GhearmailtDiego GarciaDiobùt" + - "aidhAn DanmhairgDoiminiceaA’ Phoblachd DhoiminiceachAildiriaCeuta ag" + - "us MelillaEacuadorAn EastoinAn ÈiphitSathara an IarEartraAn SpàinntA" + - "n ItiopAn t-Aonadh EòrpachRaon an EòroAn FhionnlannFìdiNa h-Eileanan" + - " FàclannachNa Meanbh-eileananNa h-Eileanan FàroAn FhraingGabonAn Rìo" + - "ghachd AonaichteGreanàdaA’ ChairtbheilGuidheàna na FraingeGeàrnsaidh" + - "GànaDiobraltarA’ GhraonlannA’ GhaimbiaGiniGuadalupGini Mheadhan-Chri" + - "osachA’ GhreugSeòirsea a Deas is na h-Eileanan Sandwich a DeasGuatam" + - "alaGuamGini-BiosoGuidheànaHong Kong SAR na SìneEilean Heard is MhicD" + - "hòmhnaillHondùrasA’ ChròthaisHaidhtiAn UngairNa h-Eileanan CanàrachN" + - "a h-Innd-innseÈirinnIosraelEilean MhanainnNa h-InnseachanRanntair Br" + - "eatannach Cuan nan InnseachanIoràcIorànInnis TìleAn EadailtDeàrsaidh" + - "DiameugaIòrdanAn t-SeapanCeiniaCìorgastanCambuideaCiribeasComorosNao" + - "mh Crìstean is NibheisCoirèa a TuathCoirèaCuibhèitNa h-Eileanan Caim" + - "eanCasachstànLàthosLeabanonNaomh LùiseaLichtensteinSri LancaLibèirLe" + - "asotoAn LiotuainLugsamburgAn LaitbheLibiaMorocoMonacoA’ MholdobhaAm " + - "Monadh NeagrachNaomh MàrtainnMadagasgarEileanan MharshallA’ Mhasadon" + - "MàiliMiànmarDùthaich nam MongolMacàthu SAR na SìneNa h-Eileanan Mair" + - "ianach a TuathMairtinicMoratàineaMontsaratMaltaNa h-Eileanan Mhoiris" + - "easNa h-Eileanan MhaladaibhMalabhaidhMeagsagoMalaidhseaMòsaimbicAn N" + - "amaibCailleann NuadhNìgeirEilean NorfolkNigèiriaNiocaraguaNa Tìrean " + - "ÌsleNirribhidhNeapàlNabhruNiueSealainn NuadhOmànPanamaPearùPoilinèi" + - "s na FraingeGini Nuadh PhaputhachNa h-Eileanan FilipineachPagastànA’" + - " PhòlainnSaint Pierre agus MiquelonEileanan Pheit a’ ChàirnPorto Rìc" + - "eoNa Ranntairean PalastaineachA’ PhortagailPalabhParaguaidhCatarRoin" + - "n Iomallach a’ Chuain SèimhRéunionRomàiniaAn t-SèirbAn RuisRubhandaA" + - "ràibia nan SabhdEileanan SholaimhNa h-Eileanan SheiseallSudànAn t-Su" + - "ainSingeapòrEilean Naomh EilidhAn t-SlòbhainSvalbard agus Jan MayenA" + - "n t-SlòbhacSiarra LeòmhannSan MarinoSeanagalSomàiliaSuranamSudàn a D" + - "easSão Tomé agus PríncipeAn SalbhadorSint MaartenSiridheaDùthaich na" + - "n SuasaidhTristan da CunhaNa h-Eileanan Turcach is CaiceoAn t-SeàdRa" + - "nntairean a Deas na FraingeTogoDùthaich nan TàidhTaidigeastànTokelau" + - "Timor-LesteTurcmanastànTuiniseaTongaAn TuircTrianaid agus TobagoTubh" + - "aluTaidh-BhànAn TansanAn UcràinUgandaMeanbh-Eileanan Iomallach nan S" + - "ANa Dùthchannan AonaichteNa Stàitean AonaichteUruguaidhUsbagastànCat" + - "hair na BhatacainNaomh Bhionsant agus Eileanan GreanadachA’ Bheinise" + - "alaEileanan Breatannach na MaighdinnEileanan na Maighdinn aig na SAB" + - "hiet-NamVanuatuUallas agus FutunaSamothaA’ ChosobhoAn EamanMayotteAf" + - "raga a DeasSàimbiaAn t-SìombabRoinn-dùthcha neo-aithnichteAn Saoghal" + - "AfragaAimeireaga a TuathAimeireaga a DeasRoinn a’ Chuain SèimhAfraga" + - " an IarMeadhan AimeireagaAfraga an EarAfraga a TuathMeadhan AfragaCe" + - "ann a Deas AfragaAn Dà AimeireagaCeann a Tuath AimeireagaAm Muir Car" + - "aibeachÀisia an EarÀisia a DeasÀisia an Ear-dheasAn Roinn-Eòrpa a De" + - "asAstràilia is Sealainn NuadhNa h-Eileanan DubhaRoinn nam Meanbh-Eil" + - "eananPoilinèisÀisiaMeadhan ÀisiaÀisia an IarAn Roinn-EòrpaAn Roinn-E" + - "òrpa an EarAn Roinn-Eòrpa a TuathAn Roinn-Eòrpa an IarAimeireaga La" + - "idinneach", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0017, 0x001e, 0x003e, 0x004a, 0x005e, 0x0067, 0x0070, - 0x0079, 0x0080, 0x008c, 0x0098, 0x00af, 0x00b8, 0x00c2, 0x00c8, - 0x00dc, 0x00e8, 0x00fe, 0x0106, 0x0110, 0x011b, 0x0129, 0x0136, - 0x013e, 0x0148, 0x014e, 0x015f, 0x0168, 0x0171, 0x017a, 0x0195, - 0x019c, 0x01b2, 0x01b8, 0x01c5, 0x01cd, 0x01dc, 0x01e9, 0x01ef, - 0x020d, 0x021d, 0x0234, 0x024d, 0x0258, 0x0268, 0x0275, 0x027e, - 0x0285, 0x028e, 0x0297, 0x02a8, 0x02b4, 0x02b9, 0x02c6, 0x02ce, - 0x02df, 0x02e7, 0x02f0, 0x02ff, 0x030b, 0x0316, 0x0322, 0x032c, - // Entry 40 - 7F - 0x0348, 0x0350, 0x0362, 0x036a, 0x0374, 0x037e, 0x038c, 0x0392, - 0x039d, 0x03a5, 0x03b9, 0x03c6, 0x03d3, 0x03d8, 0x03f1, 0x0403, - 0x0416, 0x0420, 0x0425, 0x043c, 0x0445, 0x0455, 0x046a, 0x0475, - 0x047a, 0x0484, 0x0493, 0x04a0, 0x04a4, 0x04ac, 0x04c3, 0x04ce, - 0x04ff, 0x0508, 0x050c, 0x0516, 0x0520, 0x0536, 0x0555, 0x055e, - 0x056d, 0x0574, 0x057d, 0x0594, 0x05a3, 0x05aa, 0x05b1, 0x05c0, - 0x05cf, 0x05f7, 0x05fd, 0x0603, 0x060e, 0x0618, 0x0622, 0x062a, - 0x0631, 0x063c, 0x0642, 0x064d, 0x0656, 0x065e, 0x0665, 0x067f, - // Entry 80 - BF - 0x068e, 0x0695, 0x069e, 0x06b3, 0x06be, 0x06c5, 0x06cd, 0x06da, - 0x06e6, 0x06ef, 0x06f6, 0x06fd, 0x0708, 0x0712, 0x071c, 0x0721, - 0x0727, 0x072d, 0x073b, 0x074d, 0x075c, 0x0766, 0x0778, 0x0785, - 0x078b, 0x0793, 0x07a7, 0x07bc, 0x07dc, 0x07e5, 0x07f0, 0x07f9, - 0x07fe, 0x0816, 0x082e, 0x0838, 0x0840, 0x084a, 0x0854, 0x085d, - 0x086c, 0x0873, 0x0881, 0x088a, 0x0894, 0x08a4, 0x08ae, 0x08b5, - 0x08bb, 0x08bf, 0x08cd, 0x08d2, 0x08d8, 0x08de, 0x08f3, 0x0908, - 0x0921, 0x092a, 0x0938, 0x0952, 0x096d, 0x0979, 0x0995, 0x09a4, - // Entry C0 - FF - 0x09aa, 0x09b4, 0x09b9, 0x09db, 0x09e3, 0x09ec, 0x09f7, 0x09fe, - 0x0a06, 0x0a18, 0x0a29, 0x0a40, 0x0a46, 0x0a50, 0x0a5a, 0x0a6d, - 0x0a7b, 0x0a92, 0x0a9f, 0x0aaf, 0x0ab9, 0x0ac1, 0x0aca, 0x0ad1, - 0x0ade, 0x0af7, 0x0b03, 0x0b0f, 0x0b17, 0x0b2d, 0x0b3d, 0x0b5c, - 0x0b66, 0x0b83, 0x0b87, 0x0b9b, 0x0ba8, 0x0baf, 0x0bba, 0x0bc7, - 0x0bcf, 0x0bd4, 0x0bdc, 0x0bf0, 0x0bf7, 0x0c02, 0x0c0b, 0x0c15, - 0x0c1b, 0x0c3b, 0x0c54, 0x0c6a, 0x0c73, 0x0c7e, 0x0c92, 0x0cba, - 0x0cca, 0x0ceb, 0x0d0a, 0x0d13, 0x0d1a, 0x0d2c, 0x0d33, 0x0d40, - // Entry 100 - 13F - 0x0d48, 0x0d4f, 0x0d5c, 0x0d64, 0x0d71, 0x0d8e, 0x0d98, 0x0d9e, - 0x0db0, 0x0dc1, 0x0dd9, 0x0de6, 0x0df8, 0x0e05, 0x0e13, 0x0e21, - 0x0e34, 0x0e45, 0x0e5d, 0x0e6f, 0x0e7c, 0x0e89, 0x0e9c, 0x0eb2, - 0x0ece, 0x0ee1, 0x0efa, 0x0f04, 0x0f0a, 0x0f18, 0x0f25, 0x0f34, - 0x0f4a, 0x0f61, 0x0f77, 0x0f77, 0x0f8d, - }, - }, - { // gl - "Illa de AscensiónAndorraEmiratos Árabes UnidosAfganistánAntiga e Barbuda" + - "AnguilaAlbaniaArmeniaAngolaAntártidaArxentinaSamoa AmericanaAustriaA" + - "ustraliaArubaIllas AlandAcerbaixánBosnia e HercegovinaBarbadosBangla" + - "deshBélxicaBurkina FasoBulgariaBahrainBurundiBeninSaint-BarthélemyBe" + - "rmudasBruneiBoliviaCaribe NeerlandésBrasilBahamasButánIlla BouvetBot" + - "swanaBielorrusiaBelizeCanadáIllas Cocos (Keeling)República Democráti" + - "ca do CongoRepública CentroafricanaRepública do CongoSuízaCosta do M" + - "arfilIllas CookChileCamerúnChinaColombiaIlla ClippertonCosta RicaCub" + - "aCabo VerdeCuraçaoIlla de NadalChipreChequiaAlemañaDiego GarcíaDjibu" + - "tiDinamarcaDominicaRepública DominicanaAlxeriaCeuta e MelillaEcuador" + - "EstoniaExiptoSáhara OccidentalEritreaEspañaEtiopíaUnión EuropeaEuroz" + - "onaFinlandiaFidxiIllas MalvinasMicronesiaIllas FeroeFranciaGabónRein" + - "o UnidoGranadaXeorxiaGüiana FrancesaGuernseyGhanaXibraltarGroenlandi" + - "aGambiaGuineaGuadalupeGuinea EcuatorialGreciaIllas Xeorxia do Sur e " + - "Sandwich do SurGuatemalaGuamGuinea-BissauGüianaHong Kong RAE da Chin" + - "aIlla Heard e Illas McDonaldHondurasCroaciaHaitíHungríaIllas Canaria" + - "sIndonesiaIrlandaIsraelIlla de ManIndiaTerritorio Británico do Océan" + - "o ÍndicoIraqIránIslandiaItaliaJerseyXamaicaXordaniaXapónKenyaKirguiz" + - "istánCambodjaKiribatiComoresSaint Kitts e NevisCorea do NorteCorea d" + - "o SurKuwaitIllas CaimánCasaquistánLaosLíbanoSanta LucíaLiechtenstein" + - "Sri LankaLiberiaLesotoLituaniaLuxemburgoLetoniaLibiaMarrocosMónacoMo" + - "ldaviaMontenegroSaint-MartinMadagascarIllas MarshallMacedoniaMalíMya" + - "nmar (Birmania)MongoliaMacau RAE da ChinaIllas Marianas do NorteMart" + - "inicaMauritaniaMontserratMaltaMauricioMaldivasMalawiMéxicoMalaisiaMo" + - "zambiqueNamibiaNova CaledoniaNíxerIlla NorfolkNixeriaNicaraguaPaíses" + - " BaixosNoruegaNepalNauruNiueNova ZelandiaOmánPanamáPerúPolinesia Fra" + - "ncesaPapúa-Nova GuineaFilipinasPaquistánPoloniaSaint-Pierre-et-Mique" + - "lonIllas PitcairnPorto RicoTerritorios PalestinosPortugalPalauParagu" + - "aiQatarTerritorios afastados de OceaníaReuniónRomaníaSerbiaRusiaRuan" + - "daArabia SauditaIllas SalomónSeychellesSudánSueciaSingapurSanta Hele" + - "naEsloveniaSvalbard e Jan MayenEslovaquiaSerra LeoaSan MarinoSenegal" + - "SomaliaSurinameSudán do SurSan Tomé e PríncipeO SalvadorSint Maarten" + - "SiriaSwazilandiaTristán da CunhaIllas Turks e CaicosChadTerritorios " + - "Austrais FrancesesTogoTailandiaTaxiquistánTokelauTimor LesteTurcomen" + - "istánTunisiaTongaTurquíaTrinidad e TobagoTuvaluTaiwánTanzaniaUcraína" + - "UgandaIllas Ultramarinas dos EUANacións UnidasEstados Unidos de Amér" + - "icaUruguaiUzbequistánCidade do VaticanoSan Vicente e As GranadinasVe" + - "nezuelaIllas Virxes BritánicasIllas Virxes EstadounidensesVietnamVan" + - "uatuWallis e FutunaSamoaKosovoIemenMayotteSuráfricaZambiaZimbabweRex" + - "ión descoñecidaMundoÁfricaNorteaméricaSuraméricaOceaníaÁfrica Occide" + - "ntalAmérica CentralÁfrica OrientalÁfrica SetentrionalÁfrica CentralÁ" + - "frica MeridionalAméricaAmérica do NorteCaribeAsia OrientalAsia Merid" + - "ionalSueste AsiáticoEuropa MeridionalAustralasiaMelanesiaRexión da M" + - "icronesiaPolinesiaAsiaAsia CentralAsia OccidentalEuropaEuropa do Les" + - "teEuropa SetentrionalEuropa OccidentalAmérica Latina", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0012, 0x0019, 0x0030, 0x003b, 0x004b, 0x0052, 0x0059, - 0x0060, 0x0066, 0x0070, 0x0079, 0x0088, 0x008f, 0x0098, 0x009d, - 0x00a8, 0x00b3, 0x00c7, 0x00cf, 0x00d9, 0x00e1, 0x00ed, 0x00f5, - 0x00fc, 0x0103, 0x0108, 0x0119, 0x0121, 0x0127, 0x012e, 0x0140, - 0x0146, 0x014d, 0x0153, 0x015e, 0x0166, 0x0171, 0x0177, 0x017e, - 0x0193, 0x01b3, 0x01cc, 0x01df, 0x01e5, 0x01f4, 0x01fe, 0x0203, - 0x020b, 0x0210, 0x0218, 0x0227, 0x0231, 0x0235, 0x023f, 0x0247, - 0x0254, 0x025a, 0x0261, 0x0269, 0x0276, 0x027d, 0x0286, 0x028e, - // Entry 40 - 7F - 0x02a3, 0x02aa, 0x02b9, 0x02c0, 0x02c7, 0x02cd, 0x02df, 0x02e6, - 0x02ed, 0x02f5, 0x0303, 0x030b, 0x0314, 0x0319, 0x0327, 0x0331, - 0x033c, 0x0343, 0x0349, 0x0354, 0x035b, 0x0362, 0x0372, 0x037a, - 0x037f, 0x0388, 0x0393, 0x0399, 0x039f, 0x03a8, 0x03b9, 0x03bf, - 0x03e5, 0x03ee, 0x03f2, 0x03ff, 0x0406, 0x041c, 0x0437, 0x043f, - 0x0446, 0x044c, 0x0454, 0x0462, 0x046b, 0x0472, 0x0478, 0x0483, - 0x0488, 0x04b0, 0x04b4, 0x04b9, 0x04c1, 0x04c7, 0x04cd, 0x04d4, - 0x04dc, 0x04e2, 0x04e7, 0x04f4, 0x04fc, 0x0504, 0x050b, 0x051e, - // Entry 80 - BF - 0x052c, 0x0538, 0x053e, 0x054b, 0x0557, 0x055b, 0x0562, 0x056e, - 0x057b, 0x0584, 0x058b, 0x0591, 0x0599, 0x05a3, 0x05aa, 0x05af, - 0x05b7, 0x05be, 0x05c6, 0x05d0, 0x05dc, 0x05e6, 0x05f4, 0x05fd, - 0x0602, 0x0614, 0x061c, 0x062e, 0x0645, 0x064e, 0x0658, 0x0662, - 0x0667, 0x066f, 0x0677, 0x067d, 0x0684, 0x068c, 0x0696, 0x069d, - 0x06ab, 0x06b1, 0x06bd, 0x06c4, 0x06cd, 0x06db, 0x06e2, 0x06e7, - 0x06ec, 0x06f0, 0x06fd, 0x0702, 0x0709, 0x070e, 0x0720, 0x0732, - 0x073b, 0x0745, 0x074c, 0x0764, 0x0772, 0x077c, 0x0792, 0x079a, - // Entry C0 - FF - 0x079f, 0x07a7, 0x07ac, 0x07cd, 0x07d5, 0x07dd, 0x07e3, 0x07e8, - 0x07ee, 0x07fc, 0x080a, 0x0814, 0x081a, 0x0820, 0x0828, 0x0834, - 0x083d, 0x0851, 0x085b, 0x0865, 0x086f, 0x0876, 0x087d, 0x0885, - 0x0892, 0x08a7, 0x08b1, 0x08bd, 0x08c2, 0x08cd, 0x08de, 0x08f2, - 0x08f6, 0x0914, 0x0918, 0x0921, 0x092d, 0x0934, 0x093f, 0x094d, - 0x0954, 0x0959, 0x0961, 0x0972, 0x0978, 0x097f, 0x0987, 0x098f, - 0x0995, 0x09af, 0x09be, 0x09d8, 0x09df, 0x09eb, 0x09fd, 0x0a18, - 0x0a21, 0x0a39, 0x0a55, 0x0a5c, 0x0a63, 0x0a72, 0x0a77, 0x0a7d, - // Entry 100 - 13F - 0x0a82, 0x0a89, 0x0a93, 0x0a99, 0x0aa1, 0x0ab5, 0x0aba, 0x0ac1, - 0x0ace, 0x0ad9, 0x0ae1, 0x0af3, 0x0b03, 0x0b13, 0x0b27, 0x0b36, - 0x0b48, 0x0b50, 0x0b61, 0x0b67, 0x0b74, 0x0b83, 0x0b93, 0x0ba4, - 0x0baf, 0x0bb8, 0x0bcd, 0x0bd6, 0x0bda, 0x0be6, 0x0bf5, 0x0bfb, - 0x0c0a, 0x0c1d, 0x0c2e, 0x0c2e, 0x0c3d, - }, - }, - { // gsw - "AndorraVeräinigti Arabischi EmirateAfganischtanAntigua und BarbudaAnguil" + - "laAlbaanieArmeenieAngoolaAntarktisArgentiinieAmerikaanisch-SamoaÖösc" + - "htriichAuschtraalieArubaAaland-InsleAserbäidschanBosnie und Herzegow" + - "inaBarbadosBangladeschBelgieBurkina FaasoBulgaarieBachräinBurundiBen" + - "inSt. BarthelemiBermuudaBrunäi TarussalamBoliivieBrasilieBahaamasBhu" + - "tanBouvet-InsleBotswanaWiissrusslandBelizeKanadaKokos-InsleTemokraat" + - "ischi Republik KongoZentraalafrikaanischi RepublikKongoSchwiizElfebä" + - "iküschteCook-InsleTschileKamerunChiinaKolumbieCoschta RicaKubaKap Ve" + - "rdeWienachts-InsleZypereTschechischi RepublikTüütschlandTschibuutiTä" + - "nemarkTominicaTominikaanischi RepublikAlgeerieEcuadorEestlandÄgüpteW" + - "eschtsaharaÄritreeaSchpanieÄthiopieEuropääischi UnioonFinnlandFitsch" + - "iFalkland-InsleMikroneesieFäröerFrankriichGabunVeräinigts Chönigriic" + - "hGrenadaGeoorgieFranzösisch-GuäjaanaGäärnsiGaanaGibraltarGröönlandGa" + - "mbiaGineeaGuadälupÄquatoriaalgineeaGriechelandSüüdgeorgie und d’süüd" + - "lichi Sändwitsch-InsleGuatemaalaGuamGineea-BissauGuäjaanaSonderverwa" + - "ltigszone HongkongHöörd- und MäcDonald-InsleHondurasKroaazieHaitiUng" + - "arnIndoneesieIrlandIsraelInsle vo MänIndieBritischs Territoorium im " + - "Indische OozeanIraakIraanIislandItaalieDschörsiDschamäikaJordaanieJa" + - "panKeeniaKirgiisischtanKambodschaKiribaatiKomooreSt. Kitts und Niuwi" + - "sDemokraatischi Volksrepublik KoreeaRepublik KoreeaKuwäitKäimän-Insl" + - "eKasachschtanLaaosLibanonSt. LutschiiaLiächteschtäiSchri LankaLibeer" + - "iaLesootoLittaueLuxemburgLettlandLüübieMarokkoMonacoRepublik MoldauM" + - "onteneegroSt. MartinMadagaschkarMarshallinsleMazedoonieMaaliMyanmar " + - "(Burma)MongoleiSonderverwaltigszone MacaoNördlichi MariaaneMartinigg" + - "MauretaanieMoosörratMaltaMauriiziusMalediiweMalaawiMexikoMaläisiaMos" + - "ambikNamiibiaNöikaledoonieNigerNorfolk-InsleNigeeriaNicaraaguaHollan" + - "dNorweegeNeepalNauruNiueNöiseelandOmaanPanamaPeruFranzösisch-Polinee" + - "siePapua-NeuguineaPhilippiinePakischtanPooleSt. Pierr und MiggeloPit" + - "ggäärnPuerto RiggoPaläschtinänsischi GebietPortugalPalauParaguaiGgat" + - "arÜssers OzeaanieReünioonRumäänieSärbieRusslandRuandaSaudi-AraabieSa" + - "lomooneSeischälleSudanSchweedeSingapuurSt. HelenaSloweenieSvalbard u" + - "nd Jaan MääieSlowakäiSierra LeooneSan MariinoSenegalSomaalieSurinamS" + - "ao Tome und PrinssipeEl SalvadorSüürieSwasilandTörks- und Gaiggos-In" + - "sleTschadFranzösischi Süüd- und AntarktisgebietToogoThailandTadschik" + - "ischtanTokelauOschttimorTurkmeenischtanTuneesieTongaTürggeiTrinidad " + - "und TobaagoTuvaluTaiwanTansaniiaUkraiineUgandaAmerikanisch-OzeaanieV" + - "eräinigti SchtaateUruguayUschbeekischtanVatikanstadtSt. Vincent und " + - "d’GrönadiineVenezueelaBritischi Jungfere-InsleAmerikaanischi Jungfer" + - "e-InsleWietnamWanuatuWallis und FutuunaSamooaJeemeMajottSüüdafrikaSa" + - "mbiaSimbabweUnbekannti oder ungültigi RegioonWältAfrikaNordameerikaS" + - "üüdameerikaOzeaanieWeschtafrikaMittelameerikaOschtafrikaNordafrikaZ" + - "entraalafrikaSüüdlichs AfrikaNord-, Mittel- und SüüdameerikaNördlich" + - "s AmeerikaKaribikOschtaasieSüüdaasieSüüdoschtaasieSüüdeuropaAuschtra" + - "alie und NöiseelandMelaneesieMikroneesischs InselgebietPolineesieAas" + - "ieZentraalaasieWeschtaasieEuroopaOschteuroopaNordeuroopaWeschteuroop" + - "aLatiinameerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0024, 0x0030, 0x0043, 0x004b, 0x0053, - 0x005b, 0x0062, 0x006b, 0x0076, 0x0089, 0x0096, 0x00a2, 0x00a7, - 0x00b3, 0x00c1, 0x00d7, 0x00df, 0x00ea, 0x00f0, 0x00fd, 0x0106, - 0x010f, 0x0116, 0x011b, 0x0129, 0x0131, 0x0143, 0x014b, 0x014b, - 0x0153, 0x015b, 0x0161, 0x016d, 0x0175, 0x0182, 0x0188, 0x018e, - 0x0199, 0x01b6, 0x01d4, 0x01d9, 0x01e0, 0x01f0, 0x01fa, 0x0201, - 0x0208, 0x020e, 0x0216, 0x0216, 0x0222, 0x0226, 0x022f, 0x022f, - 0x023e, 0x0244, 0x0259, 0x0266, 0x0266, 0x0270, 0x0279, 0x0281, - // Entry 40 - 7F - 0x0299, 0x02a1, 0x02a1, 0x02a8, 0x02b0, 0x02b8, 0x02c4, 0x02cd, - 0x02d5, 0x02de, 0x02f3, 0x02f3, 0x02fb, 0x0302, 0x0310, 0x031b, - 0x0323, 0x032d, 0x0332, 0x034a, 0x0351, 0x0359, 0x036f, 0x0378, - 0x037d, 0x0386, 0x0391, 0x0397, 0x039d, 0x03a6, 0x03b8, 0x03c3, - 0x03f6, 0x0400, 0x0404, 0x0411, 0x041a, 0x0437, 0x0454, 0x045c, - 0x0464, 0x0469, 0x046f, 0x046f, 0x0479, 0x047f, 0x0485, 0x0492, - 0x0497, 0x04c0, 0x04c5, 0x04ca, 0x04d1, 0x04d8, 0x04e1, 0x04ec, - 0x04f5, 0x04fa, 0x0500, 0x050e, 0x0518, 0x0521, 0x0528, 0x053c, - // Entry 80 - BF - 0x055f, 0x056e, 0x0575, 0x0583, 0x058f, 0x0594, 0x059b, 0x05a8, - 0x05b7, 0x05c2, 0x05ca, 0x05d1, 0x05d8, 0x05e1, 0x05e9, 0x05f1, - 0x05f8, 0x05fe, 0x060d, 0x0618, 0x0622, 0x062e, 0x063b, 0x0645, - 0x064a, 0x0659, 0x0661, 0x067b, 0x068e, 0x0697, 0x06a2, 0x06ac, - 0x06b1, 0x06bb, 0x06c4, 0x06cb, 0x06d1, 0x06da, 0x06e2, 0x06ea, - 0x06f8, 0x06fd, 0x070a, 0x0712, 0x071c, 0x0723, 0x072b, 0x0731, - 0x0736, 0x073a, 0x0745, 0x074a, 0x0750, 0x0754, 0x076b, 0x077a, - 0x0785, 0x078f, 0x0794, 0x07a9, 0x07b4, 0x07c0, 0x07db, 0x07e3, - // Entry C0 - FF - 0x07e8, 0x07f0, 0x07f6, 0x0806, 0x080f, 0x0819, 0x0820, 0x0828, - 0x082e, 0x083b, 0x0844, 0x084f, 0x0854, 0x085c, 0x0865, 0x086f, - 0x0878, 0x0891, 0x089a, 0x08a7, 0x08b2, 0x08b9, 0x08c1, 0x08c8, - 0x08c8, 0x08de, 0x08e9, 0x08e9, 0x08f1, 0x08fa, 0x08fa, 0x0913, - 0x0919, 0x0942, 0x0947, 0x094f, 0x095e, 0x0965, 0x096f, 0x097e, - 0x0986, 0x098b, 0x0993, 0x09a7, 0x09ad, 0x09b3, 0x09bc, 0x09c4, - 0x09ca, 0x09df, 0x09df, 0x09f3, 0x09fa, 0x0a09, 0x0a15, 0x0a34, - 0x0a3e, 0x0a56, 0x0a73, 0x0a7a, 0x0a81, 0x0a93, 0x0a99, 0x0a99, - // Entry 100 - 13F - 0x0a9e, 0x0aa4, 0x0ab0, 0x0ab6, 0x0abe, 0x0ae0, 0x0ae5, 0x0aeb, - 0x0af7, 0x0b05, 0x0b0d, 0x0b19, 0x0b27, 0x0b32, 0x0b3c, 0x0b4a, - 0x0b5c, 0x0b7d, 0x0b90, 0x0b97, 0x0ba1, 0x0bac, 0x0bbc, 0x0bc8, - 0x0be4, 0x0bee, 0x0c08, 0x0c12, 0x0c17, 0x0c24, 0x0c2f, 0x0c36, - 0x0c42, 0x0c4d, 0x0c5a, 0x0c5a, 0x0c68, - }, - }, - { // gu - guRegionStr, - guRegionIdx, - }, - { // guz - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // gv - "Rywvaneth UnysEllan Vannin", - []uint16{ // 112 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x001a, - }, - }, - { // ha - "AndoraHaɗaɗɗiyar Daular LarabawaAfaganistanAntigwa da BarbubaAngilaAlban" + - "iyaArmeniyaAngolaArjantiniyaSamowa Ta AmurkaOstiriyaOstareliyaArubaA" + - "zarbaijanBosniya HarzagobinaBarbadasBangiladasBelgiyomBurkina FasoBu" + - "lgariyaBaharanBurundiBininBarmudaBuruneBolibiyaBirazilBahamasButanBa" + - "swanaBelarusBelizKanadaJamhuriyar Dimokuraɗiyyar KongoJamhuriyar Afi" + - "rka Ta TsakiyaKongoSuwizalanAibari KwasTsibiran KukuCayileKamaruCain" + - "a, SinKolambiyaKwasta RikaKyubaTsibiran Kap BardeSifurusJamhuriyar C" + - "akJamusJibutiDanmarkDominikaJamhuriyar DominikaAljeriyaEkwadorEstoni" + - "yaMasar, MisiraEritireyaSipenHabashaFinlanFijiTsibiran FalkilanMikur" + - "onesiyaFaransaGabonBirtaniyaGirnadaJiwarjiyaGini Ta FaransaGanaJibar" + - "altarGrinlanGambiyaGiniGwadalufGini Ta IkwaitaGirkaGwatamalaGwamGini" + - " BisauGuyanaHondurasKurowaishiyaHaitiHungariIndunusiyaAyalanIziraʼil" + - "aIndiyaYankin Birtaniya Na Tekun IndiyaIraƙiIranAisalanItaliyaJamaik" + - "aJordanJapanKenyaKirgizistanKambodiyaKiribatiKwamorasSan Kiti Da Neb" + - "isKoreya Ta ArewaKoreya Ta KuduKwiyatTsibiran KaimanKazakistanLawasL" + - "abananSan LusiyaLicansitanSiri LankaLaberiyaLesotoLituweniyaLukusamb" + - "urlatibiyaLibiyaMarokoMonakoMaldobaMadagaskarTsibiran MarshalMasedon" + - "iyaMaliBurma, MiyamarMangoliyaTsibiran Mariyana Na ArewaMartinikMori" + - "taniyaManseratiMaltaMoritusMaldibiMalawiMakasikoMalaisiyaMozambikNam" + - "ibiyaKaledoniya SabuwaNijarTsibirin NarfalkNajeriyaNikaraguwaHolanNo" + - "rweNefalNauruNiyuNuzilanOmanPanamaPeruFolinesiya Ta FaransaPapuwa Nu" + - "giniFilipinPakistanPolanSan Piyar Da MikelanPitakarinPorto RikoPalas" + - "ɗinuPortugalPalauParagaiKwatarRawuniyanRomaniyaRashaRuwandaƘasar Ma" + - "kkaTsibiran SalamanSaishalSudanSuwedanSingapurSan HelenaSulobeniyaSu" + - "lobakiyaSalewoSan MarinoSinigalSomaliyaSurinameSawo Tome Da Paransip" + - "El SalbadorSham, SiriyaSuwazilanTurkis Da Tsibiran KaikwasCadiTogoTa" + - "ilanTajikistanTakelauTimor Ta GabasTurkumenistanTunisiyaTangaTurkiyy" + - "aTirinidad Da TobagoTubaluTaiwanTanzaniyaYukaranYugandaAmurkaYurugai" + - "UzubekistanBatikanSan Binsan Da GirnadinBenezuwelaTsibirin Birjin Na" + - " BirtaniyaTsibiran Birjin Ta AmurkaBiyetinamBanuwatuWalis Da FutunaS" + - "amowaYamalMayotiAfirka Ta KuduZambiyaZimbabuwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0023, 0x002e, 0x0040, 0x0046, 0x004e, - 0x0056, 0x005c, 0x005c, 0x0067, 0x0077, 0x007f, 0x0089, 0x008e, - 0x008e, 0x0098, 0x00ab, 0x00b3, 0x00bd, 0x00c5, 0x00d1, 0x00da, - 0x00e1, 0x00e8, 0x00ed, 0x00ed, 0x00f4, 0x00fa, 0x0102, 0x0102, - 0x0109, 0x0110, 0x0115, 0x0115, 0x011c, 0x0123, 0x0128, 0x012e, - 0x012e, 0x014e, 0x016a, 0x016f, 0x0178, 0x0183, 0x0190, 0x0196, - 0x019c, 0x01a6, 0x01af, 0x01af, 0x01ba, 0x01bf, 0x01d1, 0x01d1, - 0x01d1, 0x01d8, 0x01e6, 0x01eb, 0x01eb, 0x01f1, 0x01f8, 0x0200, - // Entry 40 - 7F - 0x0213, 0x021b, 0x021b, 0x0222, 0x022a, 0x0237, 0x0237, 0x0240, - 0x0245, 0x024c, 0x024c, 0x024c, 0x0252, 0x0256, 0x0267, 0x0273, - 0x0273, 0x027a, 0x027f, 0x0288, 0x028f, 0x0298, 0x02a7, 0x02a7, - 0x02ab, 0x02b5, 0x02bc, 0x02c3, 0x02c7, 0x02cf, 0x02de, 0x02e3, - 0x02e3, 0x02ec, 0x02f0, 0x02fa, 0x0300, 0x0300, 0x0300, 0x0308, - 0x0314, 0x0319, 0x0320, 0x0320, 0x032a, 0x0330, 0x033a, 0x033a, - 0x0340, 0x0360, 0x0366, 0x036a, 0x0371, 0x0378, 0x0378, 0x037f, - 0x0385, 0x038a, 0x038f, 0x039a, 0x03a3, 0x03ab, 0x03b3, 0x03c4, - // Entry 80 - BF - 0x03d3, 0x03e1, 0x03e7, 0x03f6, 0x0400, 0x0405, 0x040c, 0x0416, - 0x0420, 0x042a, 0x0432, 0x0438, 0x0442, 0x044c, 0x0454, 0x045a, - 0x0460, 0x0466, 0x046d, 0x046d, 0x046d, 0x0477, 0x0487, 0x0491, - 0x0495, 0x04a3, 0x04ac, 0x04ac, 0x04c6, 0x04ce, 0x04d8, 0x04e1, - 0x04e6, 0x04ed, 0x04f4, 0x04fa, 0x0502, 0x050b, 0x0513, 0x051b, - 0x052c, 0x0531, 0x0541, 0x0549, 0x0553, 0x0558, 0x055d, 0x0562, - 0x0567, 0x056b, 0x0572, 0x0576, 0x057c, 0x0580, 0x0595, 0x05a2, - 0x05a9, 0x05b1, 0x05b6, 0x05ca, 0x05d3, 0x05dd, 0x05e7, 0x05ef, - // Entry C0 - FF - 0x05f4, 0x05fb, 0x0601, 0x0601, 0x060a, 0x0612, 0x0612, 0x0617, - 0x061e, 0x062a, 0x063a, 0x0641, 0x0646, 0x064d, 0x0655, 0x065f, - 0x0669, 0x0669, 0x0673, 0x0679, 0x0683, 0x068a, 0x0692, 0x069a, - 0x069a, 0x06af, 0x06ba, 0x06ba, 0x06c6, 0x06cf, 0x06cf, 0x06e9, - 0x06ed, 0x06ed, 0x06f1, 0x06f7, 0x0701, 0x0708, 0x0716, 0x0723, - 0x072b, 0x0730, 0x0738, 0x074b, 0x0751, 0x0757, 0x0760, 0x0767, - 0x076e, 0x076e, 0x076e, 0x0774, 0x077b, 0x0786, 0x078d, 0x07a3, - 0x07ad, 0x07c9, 0x07e2, 0x07eb, 0x07f3, 0x0802, 0x0808, 0x0808, - // Entry 100 - 13F - 0x080d, 0x0813, 0x0821, 0x0828, 0x0831, - }, - }, - { // haw - "NūhōlaniKanakāKinaKelemāniaKenemakaKepaniaPalaniAupuni Mōʻī Hui Pū ʻIaHe" + - "leneʻIlelaniʻIseraʻelaʻĪniaʻĪkāliaIāpanaMekikoHōlaniAotearoaʻĀina Pi" + - "lipinoLūkiaʻAmelika Hui Pū ʻIa", - []uint16{ // 244 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x001f, 0x001f, 0x001f, 0x0027, 0x0027, - // Entry 40 - 7F - 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027, - 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, 0x002e, - 0x002e, 0x0034, 0x0034, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, - 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x005e, 0x006a, 0x006a, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x007b, 0x007b, 0x007b, - 0x007b, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - // Entry 80 - BF - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, 0x0082, - 0x0082, 0x0082, 0x0082, 0x0082, 0x0088, 0x0088, 0x0088, 0x0088, - 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, - 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, - // Entry C0 - FF - 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00a7, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, 0x00ad, - 0x00ad, 0x00ad, 0x00ad, 0x00c3, - }, - }, - { // he - heRegionStr, - heRegionIdx, - }, - { // hi - hiRegionStr, - hiRegionIdx, - }, - { // hr - hrRegionStr, - hrRegionIdx, - }, - { // hsb - "AscensionAndorraZjednoćene arabske emiratyAfghanistanAntigua a BarbudaAn" + - "guillaAlbanskaArmenskaAngolaAntarktikaArgentinskaAmeriska SamoaAwstr" + - "iskaAwstralskaArubaÅlandAzerbajdźanBosniska a HercegowinaBarbadosBan" + - "gladešBelgiskaBurkina FasoBołharskaBahrainBurundiBeninSt. Barthélemy" + - "BermudyBruneiBoliwiskaKaribiska NižozemskaBrazilskaBahamyBhutanBouve" + - "towa kupaBotswanaBěłoruskaBelizeKanadaKokosowe kupyKongo-KinshasaCen" + - "tralnoafriska republikaKongo-BrazzavilleŠwicarskaCôte d’IvoireCookow" + - "e kupyChilskaKamerunChinaKolumbiskaClippertonowa kupaKosta RikaKubaK" + - "ap VerdeCuraçaoHodowna kupaCypernČěska republikaNěmskaDiego GarciaDź" + - "ibutiDanskaDominikaDominikanska republikaAlgeriskaCeuta a MelillaEkw" + - "adorEstiskaEgyptowskaZapadna SaharaEritrejaŠpaniskaEtiopiskaEuropska" + - " unijaFinskaFidźiFalklandske kupyMikroneziskaFäröske kupyFrancoskaGa" + - "bunZjednoćene kralestwoGrenadaGeorgiskaFrancoska GuyanaGuernseyGhana" + - "GibraltarGrönlandskaGambijaGinejaGuadeloupeEkwatorialna GinejaGrjeks" + - "kaJužna Georgiska a Južne Sandwichowe kupyGuatemalaGuamGineja-Bissau" + - "GuyanaWosebita zarjadniska cona HongkongHeardowa kupa a McDonaldowe " + - "kupyHondurasChorwatskaHaitiMadźarskaKanariske kupyIndoneskaIrskaIsra" + - "elManIndiskaBritiski teritorij w Indiskim oceanjeIrakIranIslandskaIt" + - "alskaJerseyJamaikaJordaniskaJapanskaKenijaKirgizistanKambodźaKiribat" + - "iKomorySt. Kitts a NevisSewjerna KorejaJužna KorejaKuwaitKajmanske k" + - "upyKazachstanLaosLibanonSt. LuciaLiechtensteinSri LankaLiberijaLesot" + - "hoLitawskaLuxemburgskaLetiskaLibyskaMarokkoMonacoMoldawskaMontenegro" + - "St. MartinMadagaskarMarshallowe kupyMakedonskaMaliMyanmarMongolskaWo" + - "sebita zarjadniska cona MacaoSewjerne MarianyMartiniqueMawretanskaMo" + - "ntserratMaltaMauritiusMalediwyMalawiMexikoMalajzijaMosambikNamibijaN" + - "owa KaledoniskaNigerNorfolkowa kupaNigerijaNikaraguaNižozemskaNorweg" + - "skaNepalNauruNiueNowoseelandskaOmanPanamaPeruFrancoska PolyneziskaPa" + - "puwa-Nowa GinejaFilipinyPakistanPólskaSt. Pierre a MiquelonPitcairno" + - "we kupyPuerto RicoPalestinski awtonomny teritorijPortugalskaPalauPar" + - "aguayKatarWonkowna OceaniskaRéunionRumunskaSerbiskaRuskaRuandaSawdi-" + - "ArabskaSalomonySeychelleSudanŠwedskaSingapurSt. HelenaSłowjenskaSval" + - "bard a Jan MayenSłowakskaSierra LeoneSan MarinoSenegalSomalijaSurina" + - "mJužny SudanSão Tomé a PríncipeEl SalvadorSint MaartenSyriskaSwazisk" + - "aTristan da Cunhakupy Turks a CaicosČadFrancoski južny a antarktiski" + - " teritorijTogoThailandskaTadźikistanTokelauTimor-LesteTurkmeniskaTun" + - "eziskaTongaTurkowskaTrinidad a TobagoTuvaluTaiwanTansanijaUkrainaUga" + - "ndaAmeriska OceaniskaZjednoćene staty AmerikiUruguayUzbekistanVatika" + - "nske městoSt. Vincent a GrenadinyVenezuelaBritiske knježniske kupyAm" + - "eriske knježniske kupyVietnamVanuatuWallis a FutunaSamoaKosowoJemenM" + - "ayotteJužna Afrika (Republika)SambijaSimbabwenjeznaty regionswětAfri" + - "kaSewjerna AmerikaJužna AmerikaOceaniskazapadna AfrikaSrjedźna Ameri" + - "kawuchodna Afrikasewjerna Afrikasrjedźna Afrikajužna AfrikaAmerikase" + - "wjerny ameriski kontinentKaribikawuchodna Azijajužna Azijajuhowuchod" + - "na Azijajužna EuropaAwstralazijaMelaneziskaMikroneziska (kupowy regi" + - "on)PolyneziskaAzijacentralna Azijazapadna AzijaEuropawuchodna Europa" + - "sewjerna Europazapadna EuropaŁaćonska Amerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0047, 0x004f, 0x0057, - 0x005f, 0x0065, 0x006f, 0x007a, 0x0088, 0x0091, 0x009b, 0x00a0, - 0x00a6, 0x00b2, 0x00c8, 0x00d0, 0x00da, 0x00e2, 0x00ee, 0x00f8, - 0x00ff, 0x0106, 0x010b, 0x011a, 0x0121, 0x0127, 0x0130, 0x0145, - 0x014e, 0x0154, 0x015a, 0x0168, 0x0170, 0x017b, 0x0181, 0x0187, - 0x0194, 0x01a2, 0x01bc, 0x01cd, 0x01d7, 0x01e7, 0x01f3, 0x01fa, - 0x0201, 0x0206, 0x0210, 0x0222, 0x022c, 0x0230, 0x0239, 0x0241, - 0x024d, 0x0253, 0x0264, 0x026b, 0x0277, 0x027f, 0x0285, 0x028d, - // Entry 40 - 7F - 0x02a3, 0x02ac, 0x02bb, 0x02c2, 0x02c9, 0x02d3, 0x02e1, 0x02e9, - 0x02f2, 0x02fb, 0x0309, 0x0309, 0x030f, 0x0315, 0x0325, 0x0331, - 0x033f, 0x0348, 0x034d, 0x0362, 0x0369, 0x0372, 0x0382, 0x038a, - 0x038f, 0x0398, 0x03a4, 0x03ab, 0x03b1, 0x03bb, 0x03ce, 0x03d6, - 0x0400, 0x0409, 0x040d, 0x041a, 0x0420, 0x0442, 0x0462, 0x046a, - 0x0474, 0x0479, 0x0483, 0x0491, 0x049a, 0x049f, 0x04a5, 0x04a8, - 0x04af, 0x04d4, 0x04d8, 0x04dc, 0x04e5, 0x04ec, 0x04f2, 0x04f9, - 0x0503, 0x050b, 0x0511, 0x051c, 0x0525, 0x052d, 0x0533, 0x0544, - // Entry 80 - BF - 0x0553, 0x0560, 0x0566, 0x0574, 0x057e, 0x0582, 0x0589, 0x0592, - 0x059f, 0x05a8, 0x05b0, 0x05b7, 0x05bf, 0x05cb, 0x05d2, 0x05d9, - 0x05e0, 0x05e6, 0x05ef, 0x05f9, 0x0603, 0x060d, 0x061d, 0x0627, - 0x062b, 0x0632, 0x063b, 0x065a, 0x066a, 0x0674, 0x067f, 0x0689, - 0x068e, 0x0697, 0x069f, 0x06a5, 0x06ab, 0x06b4, 0x06bc, 0x06c4, - 0x06d4, 0x06d9, 0x06e8, 0x06f0, 0x06f9, 0x0704, 0x070d, 0x0712, - 0x0717, 0x071b, 0x0729, 0x072d, 0x0733, 0x0737, 0x074c, 0x075e, - 0x0766, 0x076e, 0x0775, 0x078a, 0x079a, 0x07a5, 0x07c4, 0x07cf, - // Entry C0 - FF - 0x07d4, 0x07dc, 0x07e1, 0x07f3, 0x07fb, 0x0803, 0x080b, 0x0810, - 0x0816, 0x0823, 0x082b, 0x0834, 0x0839, 0x0841, 0x0849, 0x0853, - 0x085e, 0x0872, 0x087c, 0x0888, 0x0892, 0x0899, 0x08a1, 0x08a8, - 0x08b4, 0x08ca, 0x08d5, 0x08e1, 0x08e8, 0x08f0, 0x0900, 0x0913, - 0x0917, 0x093f, 0x0943, 0x094e, 0x095a, 0x0961, 0x096c, 0x0977, - 0x0980, 0x0985, 0x098e, 0x099f, 0x09a5, 0x09ab, 0x09b4, 0x09bb, - 0x09c1, 0x09d3, 0x09d3, 0x09ec, 0x09f3, 0x09fd, 0x0a0e, 0x0a25, - 0x0a2e, 0x0a47, 0x0a60, 0x0a67, 0x0a6e, 0x0a7d, 0x0a82, 0x0a88, - // Entry 100 - 13F - 0x0a8d, 0x0a94, 0x0aad, 0x0ab4, 0x0abc, 0x0acb, 0x0ad0, 0x0ad6, - 0x0ae6, 0x0af4, 0x0afd, 0x0b0b, 0x0b1c, 0x0b2b, 0x0b3a, 0x0b4a, - 0x0b57, 0x0b5e, 0x0b79, 0x0b81, 0x0b8f, 0x0b9b, 0x0bad, 0x0bba, - 0x0bc6, 0x0bd1, 0x0bed, 0x0bf8, 0x0bfd, 0x0c0c, 0x0c19, 0x0c1f, - 0x0c2e, 0x0c3d, 0x0c4b, 0x0c4b, 0x0c5d, - }, - }, - { // hu - huRegionStr, - huRegionIdx, - }, - { // hy - hyRegionStr, - hyRegionIdx, - }, - { // id - idRegionStr, - idRegionIdx, - }, - { // ig - "BininBemudaChainaHatiComorosuLibyiaMaldivesaNaịjịrịa", - []uint16{ // 172 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0005, 0x0005, 0x000b, 0x000b, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, - 0x000b, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - // Entry 40 - 7F - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x001d, 0x001d, - // Entry 80 - BF - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, 0x0023, - 0x0023, 0x0023, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x003a, - }, - }, - { // ii - "ꀠꑭꍏꇩꄓꇩꃔꇩꑱꇩꑴꄗꑴꄊꆺꏝꀪꊉꇆꌦꂰꇩꃅꄷꅉꀋꐚꌠ", - []uint16{ // 262 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - // Entry 40 - 7F - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0018, 0x0018, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x002d, 0x002d, 0x002d, - 0x002d, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - // Entry 80 - BF - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, - // Entry C0 - FF - 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x0033, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - // Entry 100 - 13F - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0054, - }, - }, - { // is - isRegionStr, - isRegionIdx, - }, - { // it - itRegionStr, - itRegionIdx, - }, - { // ja - jaRegionStr, - jaRegionIdx, - }, - { // jgo - "Aŋgɔ́laAjɛntînMbulukína FásɔMbulundíMbɛnɛ̂ŋMbɔlivîMbɛlazîlMbɔtswánaKanad" + - "âKɔ́ŋgɔ-KinshásaKɔ́ŋgɔ-MbɛlazavîlSẅísɛKɔ́t NdivwâCíllɛKamɛlûnShînKɔ" + - "llɔmbîKúbaNjámanNjimbútiAljɛlîƐkwandɔ̂ƐjíptɛƐlitɛlɛ́yaƐspániyaƐtiyɔp" + - "îFɛlánciŊgabɔ̂ŋŊgánaŊgambîŊginɛ̂Ŋginɛ̂ ƐkwatɔliyâlŊgɛlɛ̂kŊginɛ̂ Mbi" + - "sáwuIslayɛ̂lÁndɛIlâkItalîJapɔ̂nKɛ́nyaKɔmɔ́lɔshiLibɛrîLɛsɔ́tɔLibîMɔlɔ" + - "̂kMándaŋgasɛkâMalîMɔlitanîMaláwiMɛksîkMɔzambîkNamimbîNijɛ̂Ninjɛliyâ" + - "Nɔlɛvɛ́jɛPɛlûLɛ́uniyɔ̂nSɛlɛbîLusîLuwándaPɛsɛ́shɛlSundânSiyɛ́la Lɛɔ̂n" + - "SɛnɛgâlSɔmalîSáwɔŋ Tɔmɛ́ nɛ́ PɛlínsipɛSwazilânCâtTɔ́ŋgɔTunizîTanzanî" + - "UŋgándaVɛnɛzwɛ́laMayɔ̂tZambîZimbámbwɛŋgɔŋ yi pɛ́ ká kɛ́ jʉɔMbíAfɛlîk" + - "AmɛlîkAzîɄlôp", - []uint16{ // 288 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000a, 0x000a, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0024, 0x0024, - 0x0024, 0x002d, 0x0038, 0x0038, 0x0038, 0x0038, 0x0041, 0x0041, - 0x004b, 0x004b, 0x004b, 0x004b, 0x0056, 0x0056, 0x0056, 0x005d, - 0x005d, 0x0071, 0x0071, 0x0088, 0x0091, 0x009f, 0x009f, 0x00a6, - 0x00af, 0x00b4, 0x00bf, 0x00bf, 0x00bf, 0x00c4, 0x00c4, 0x00c4, - 0x00c4, 0x00c4, 0x00c4, 0x00cb, 0x00cb, 0x00d4, 0x00d4, 0x00d4, - // Entry 40 - 7F - 0x00d4, 0x00dc, 0x00dc, 0x00e7, 0x00e7, 0x00f0, 0x00f0, 0x00fe, - 0x0108, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, 0x0112, - 0x0112, 0x011b, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, - 0x012d, 0x012d, 0x012d, 0x0135, 0x013e, 0x013e, 0x0156, 0x0161, - 0x0161, 0x0161, 0x0161, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, - 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x0173, 0x017d, 0x017d, - 0x0183, 0x0183, 0x0188, 0x0188, 0x0188, 0x018e, 0x018e, 0x018e, - 0x018e, 0x0196, 0x019e, 0x019e, 0x019e, 0x019e, 0x01ac, 0x01ac, - // Entry 80 - BF - 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, 0x01ac, - 0x01ac, 0x01ac, 0x01b4, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01c4, - 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01cd, 0x01dd, 0x01dd, 0x01dd, - 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01e2, 0x01ec, 0x01ec, - 0x01ec, 0x01ec, 0x01ec, 0x01f3, 0x01fb, 0x01fb, 0x0205, 0x020d, - 0x020d, 0x0214, 0x0214, 0x021f, 0x021f, 0x021f, 0x022d, 0x022d, - 0x022d, 0x022d, 0x022d, 0x022d, 0x022d, 0x0233, 0x0233, 0x0233, - 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, 0x0233, - // Entry C0 - FF - 0x0233, 0x0233, 0x0233, 0x0233, 0x0241, 0x0241, 0x024a, 0x024f, - 0x0257, 0x0257, 0x0257, 0x0264, 0x026b, 0x026b, 0x026b, 0x026b, - 0x026b, 0x026b, 0x026b, 0x027d, 0x027d, 0x0287, 0x028f, 0x028f, - 0x028f, 0x02b3, 0x02b3, 0x02b3, 0x02b3, 0x02bc, 0x02bc, 0x02bc, - 0x02c0, 0x02c0, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, 0x02ca, - 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d1, 0x02d9, 0x02d9, - 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, 0x02e2, - 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, 0x02f0, - // Entry 100 - 13F - 0x02f0, 0x02f8, 0x02f8, 0x02fe, 0x0309, 0x0329, 0x032d, 0x0335, - 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, 0x0335, - 0x0335, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, 0x033d, - 0x033d, 0x033d, 0x033d, 0x033d, 0x0341, 0x0341, 0x0341, 0x0347, - }, - }, - { // jmc - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // ka - kaRegionStr, - kaRegionIdx, - }, - { // kab - "UnduraTigeldunin Yedduklen TaɛrabinAfɣanistanUntiga d BarbudaUngiyaLalba" + - "niArminyaUngulaArjuntinSamwa TamarikanitUstriyaUstraliArubaAzrabijan" + - "Busna d HersekBarbadusBangladacBelǧikBurkina FasuBulgariBaḥrinBurand" + - "iBininBermudaBruneyBuliviBrizilBahamasBhutanBustwanaBilarusBilizKana" + - "daTigduda Tagdudant n KunguTigduda n Tefriqt TalemmastKunguSwisKuṭ D" + - "ivwarTigzirin n KukCiliKamirunLacinKulumbiKusta RikaKubaTigzirin n y" + - "ixef azegzawCiprČčekLalmanǦibutiDenmarkDuminikTigduda TaduminikitLez" + - "zayerIkwaṭurIstunyaMaṣrIritiriaSpanyaUtyupiFinlundFijiTigzirin n Fal" + - "klandMikrunizyaFransaGabunTagelda YedduklenGrunadJiyurjiƔana tafrans" + - "istƔanaJibraltarGrunlandGambyaƔinyaGwadalupiƔinya TasebgastLagrisGwa" + - "timalaGwamƔinya-BisawGuwanaHundurasKerwasyaHaytiHungriInduniziLirlun" + - "dIzrayilLhendAkal Aglizi deg Ugaraw AhendiLɛiraqIranIslandṬelyanJamy" + - "ikaLajurdaniJappuKinyaKirigistanCambudyaKiribatiKumurSan Kits d Nivi" + - "sKurya, UfellaKurya, WaddaKuwaytTigzirin n KamyanKazaxistanLawsLubna" + - "nSan LučyaLayctenstanSri LankaLibiryaLizuṭuLiṭwanyaLuksamburgLatviaL" + - "ibyaLmerrukMunakuMuldabiMadaɣecqerTigzirin n MarcalMasidwanMaliMyanm" + - "arMungulyaTigzirin n Maryan UfellaMartinikMuriṭanyaMunsiratMalṭMuris" + - "MaldibMalawiMeksikMalizyaMuzembiqNamibyaKalidunya TamaynutNijerTigzi" + - "rin TinawfukinNijiryaNikaragwaTimura-YessakesrenNurvijNipalNuruNiwiZ" + - "iland TamaynutƐumanPanamPiruPulunizi tafransistƔinya Tamaynut Tapapu" + - "tFilipinPakistanPulundSan Pyar d MiklunPitkarinPurtu RikuFalisṭin d " + - "ƔezzaPurtugalPaluParagwayQaṭarTimlilitRumaniRrusRuwandaSuɛudiya Taɛ" + - "rabtTigzirin n SulumunSeycelSudanSwidSingafurSant IlinaSluvinyaSluva" + - "kyaSira LyunSan MarinuSinigalṢumalSurinamSaw Tumi d PransipSalvadurS" + - "uryaSwazilundṬurk d Tegzirin n KaykusČadṬuguṬaylandTajikistanṬukluTu" + - "mur AsamarṬurkmanistanTunesṬungaṬurkṬrindad d ṬubaguṬuvaluṬaywanṬanz" + - "anyaUkranUɣandaWDMUrugwayUzbaxistanAwanek n VatikanSan Vansu d Gruna" + - "dinVenzwilaTigzirin Tiverjiniyin TigliziyinW.D. Tigzirin n VirginyaV" + - "yeṭnamVanwatuWallis d FutunaSamwaLyamenMayuṭTafriqt WaddaZambyaZimba" + - "bwi", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0024, 0x002f, 0x003f, 0x0045, 0x004c, - 0x0053, 0x0059, 0x0059, 0x0061, 0x0072, 0x0079, 0x0080, 0x0085, - 0x0085, 0x008e, 0x009c, 0x00a4, 0x00ad, 0x00b4, 0x00c0, 0x00c7, - 0x00cf, 0x00d6, 0x00db, 0x00db, 0x00e2, 0x00e8, 0x00ee, 0x00ee, - 0x00f4, 0x00fb, 0x0101, 0x0101, 0x0109, 0x0110, 0x0115, 0x011b, - 0x011b, 0x0134, 0x014f, 0x0154, 0x0158, 0x0164, 0x0172, 0x0176, - 0x017d, 0x0182, 0x0189, 0x0189, 0x0193, 0x0197, 0x01af, 0x01af, - 0x01af, 0x01b3, 0x01b9, 0x01bf, 0x01bf, 0x01c6, 0x01cd, 0x01d4, - // Entry 40 - 7F - 0x01e7, 0x01ef, 0x01ef, 0x01f8, 0x01ff, 0x0205, 0x0205, 0x020d, - 0x0213, 0x0219, 0x0219, 0x0219, 0x0220, 0x0224, 0x0237, 0x0241, - 0x0241, 0x0247, 0x024c, 0x025d, 0x0263, 0x026a, 0x027a, 0x027a, - 0x027f, 0x0288, 0x0290, 0x0296, 0x029c, 0x02a5, 0x02b5, 0x02bb, - 0x02bb, 0x02c4, 0x02c8, 0x02d4, 0x02da, 0x02da, 0x02da, 0x02e2, - 0x02ea, 0x02ef, 0x02f5, 0x02f5, 0x02fd, 0x0304, 0x030b, 0x030b, - 0x0310, 0x032d, 0x0334, 0x0338, 0x033e, 0x0346, 0x0346, 0x034d, - 0x0356, 0x035b, 0x0360, 0x036a, 0x0372, 0x037a, 0x037f, 0x038f, - // Entry 80 - BF - 0x039c, 0x03a8, 0x03ae, 0x03bf, 0x03c9, 0x03cd, 0x03d3, 0x03dd, - 0x03e8, 0x03f1, 0x03f8, 0x0400, 0x040a, 0x0414, 0x041a, 0x041f, - 0x0426, 0x042c, 0x0433, 0x0433, 0x0433, 0x043e, 0x044f, 0x0457, - 0x045b, 0x0462, 0x046a, 0x046a, 0x0482, 0x048a, 0x0495, 0x049d, - 0x04a3, 0x04a8, 0x04ae, 0x04b4, 0x04ba, 0x04c1, 0x04c9, 0x04d0, - 0x04e2, 0x04e7, 0x04fa, 0x0501, 0x050a, 0x051c, 0x0522, 0x0527, - 0x052b, 0x052f, 0x053e, 0x0544, 0x0549, 0x054d, 0x0560, 0x0577, - 0x057e, 0x0586, 0x058c, 0x059d, 0x05a5, 0x05af, 0x05c2, 0x05ca, - // Entry C0 - FF - 0x05ce, 0x05d6, 0x05dd, 0x05dd, 0x05e5, 0x05eb, 0x05eb, 0x05ef, - 0x05f6, 0x0608, 0x061a, 0x0620, 0x0625, 0x0629, 0x0631, 0x063b, - 0x0643, 0x0643, 0x064b, 0x0654, 0x065e, 0x0665, 0x066c, 0x0673, - 0x0673, 0x0685, 0x068d, 0x068d, 0x0692, 0x069b, 0x069b, 0x06b5, - 0x06b9, 0x06b9, 0x06bf, 0x06c8, 0x06d2, 0x06d9, 0x06e5, 0x06f3, - 0x06f8, 0x06ff, 0x0705, 0x0719, 0x0721, 0x0729, 0x0733, 0x0738, - 0x073f, 0x073f, 0x073f, 0x0742, 0x0749, 0x0753, 0x0763, 0x0777, - 0x077f, 0x079f, 0x07b7, 0x07c0, 0x07c7, 0x07d6, 0x07db, 0x07db, - // Entry 100 - 13F - 0x07e1, 0x07e8, 0x07f5, 0x07fb, 0x0803, - }, - }, - { // kam - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "MbulundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarus" + - "iBelizeKanandaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya K" + - "atiKongoUswisiKodivaaIsiwa sya CookChileKameluniKyainaKolombiaKostar" + - "ikaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominika" + - "Jamhuri ya DominikaAljeriaEkwadoEstoniaMisiliEritreaHispaniaUhabeshi" + - "UfiniFijiVisiwa vya FalklandMikronesiaUvalanzaGaboniUingerezaGrenada" + - "JojiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGin" + - "ekwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungar" + - "iaIndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari Hindi" + - "IrakiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambo" + - "diaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwai" + - "tiIsiwa sya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirila" + - "nkaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBuki" + - "niVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya" + - " KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksik" + - "oMalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNik" + - "aragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia" + - " ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitka" + - "irniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUreno" + - "PalauParagwaiKatariRiyunioniRomaniaUrusiLwandaSaudiIsiwa sya Solomon" + - "ShelisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera Leoni" + - "SamarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswa" + - "ziVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori" + - " ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuv" + - "aluTaiwaniTanzaniaUkrainiUkandaMarekaniUrugwaiUzibekistaniVatikaniSa" + - "ntavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiw" + - "a vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniM" + - "ayotteAfrika KusiniNzambiaNzimbambwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d8, 0x00de, 0x00de, 0x00e5, 0x00eb, 0x00f2, 0x00f2, - 0x00f9, 0x00ff, 0x0105, 0x0105, 0x010d, 0x0115, 0x011b, 0x0122, - 0x0122, 0x0142, 0x015b, 0x0160, 0x0166, 0x016d, 0x017b, 0x0180, - 0x0188, 0x018e, 0x0196, 0x0196, 0x019f, 0x01a3, 0x01ab, 0x01ab, - 0x01ab, 0x01b2, 0x01c2, 0x01cb, 0x01cb, 0x01d1, 0x01d8, 0x01e0, - // Entry 40 - 7F - 0x01f3, 0x01fa, 0x01fa, 0x0200, 0x0207, 0x020d, 0x020d, 0x0214, - 0x021c, 0x0224, 0x0224, 0x0224, 0x0229, 0x022d, 0x0240, 0x024a, - 0x024a, 0x0252, 0x0258, 0x0261, 0x0268, 0x026d, 0x0280, 0x0280, - 0x0285, 0x028d, 0x0296, 0x029c, 0x02a0, 0x02a9, 0x02b2, 0x02b9, - 0x02b9, 0x02c2, 0x02c6, 0x02cf, 0x02d5, 0x02d5, 0x02d5, 0x02de, - 0x02e5, 0x02ea, 0x02f2, 0x02f2, 0x02fb, 0x0303, 0x030a, 0x030a, - 0x030f, 0x0334, 0x0339, 0x033f, 0x0347, 0x034d, 0x034d, 0x0354, - 0x035b, 0x0361, 0x0366, 0x0373, 0x037b, 0x0383, 0x0389, 0x039c, - // Entry 80 - BF - 0x03ab, 0x03b7, 0x03be, 0x03ce, 0x03d9, 0x03de, 0x03e6, 0x03f0, - 0x03fa, 0x0403, 0x040a, 0x0410, 0x0418, 0x0421, 0x0428, 0x042d, - 0x0433, 0x0439, 0x0440, 0x0440, 0x0440, 0x0446, 0x0458, 0x0461, - 0x0465, 0x046a, 0x0472, 0x0472, 0x0492, 0x049b, 0x04a4, 0x04af, - 0x04b4, 0x04ba, 0x04c0, 0x04c6, 0x04cd, 0x04d4, 0x04dc, 0x04e3, - 0x04ef, 0x04f5, 0x0506, 0x050d, 0x0516, 0x051e, 0x0523, 0x0529, - 0x052e, 0x0532, 0x053c, 0x0541, 0x0547, 0x054b, 0x0560, 0x0565, - 0x056d, 0x0576, 0x057d, 0x0593, 0x059c, 0x05a5, 0x05d7, 0x05dc, - // Entry C0 - FF - 0x05e1, 0x05e9, 0x05ef, 0x05ef, 0x05f8, 0x05ff, 0x05ff, 0x0604, - 0x060a, 0x060f, 0x0620, 0x062a, 0x0630, 0x0636, 0x063e, 0x0649, - 0x0651, 0x0651, 0x0659, 0x0664, 0x066c, 0x0674, 0x067b, 0x0683, - 0x0683, 0x0697, 0x069f, 0x069f, 0x06a4, 0x06aa, 0x06aa, 0x06c3, - 0x06c8, 0x06c8, 0x06cc, 0x06d4, 0x06df, 0x06e6, 0x06f9, 0x0708, - 0x070f, 0x0714, 0x071b, 0x072d, 0x0733, 0x073a, 0x0742, 0x0749, - 0x074f, 0x074f, 0x074f, 0x0757, 0x075e, 0x076a, 0x0772, 0x078b, - 0x0794, 0x07b3, 0x07d1, 0x07da, 0x07e1, 0x07f0, 0x07f5, 0x07f5, - // Entry 100 - 13F - 0x07fb, 0x0802, 0x080f, 0x0816, 0x0820, - }, - }, - { // kde - "AndolaDimiliki dya Vakulungwa va ChalabuAfuganistaniAntigua na BalbudaAn" + - "gwilaAlbaniaAlmeniaAngolaAdyentinaSamoa ya MalekaniAustliaAustlaliaA" + - "lubaAzabadyaniBosnia na HezegovinaBabadosiBangladeshiUbelgidiBuchina" + - "fasoBulgaliaBahaleniBulundiBeniniBelmudaBluneiBoliviaBlaziliBahamaBu" + - "taniBotswanaBelalusiBelizeKanadaJamuhuli ya Chidemoklasia ya kuKongo" + - "Jamuhuli ya Afilika ya Paching’atiKongoUswisiKodivaaChisiwa cha Cook" + - "ChileKameluniChinaKolombiaKostalikaKubaKepuvedeKuplosiJamuhuli ya Ch" + - "echiUdyerumaniDyibutiDenmakiDominikaJamuhuli ya DominikaAljeliaEkwad" + - "oEstoniaMisliElitileaHispaniaUhabeshiUfiniFijiChisiwa cha FalklandMi" + - "kilonesiaUfalansaGaboniNngalesaGlenadaDyodyaGwiyana ya UfalansaGhana" + - "DiblaltaGlinlandiGambiaGineGwadelupeGinekwetaUgilichiGwatemalaGwamGi" + - "nebisauGuyanaHondulasiKolasiaHaitiHungaliaIndonesiaAyalandiIslaeliIn" + - "diaLieneo lyaki Nngalesa Nbahali ya HindiIlakiUadyemiAislandiItaliaD" + - "yamaikaYordaniDyapaniKenyaKiligizistaniKambodiaKilibatiKomoloSantaki" + - "tzi na NevisKolea KasikaziniKolea KusiniKuwaitiChisiwa cha KemenKaza" + - "chistaniLaosiLebanoniSantalusiaLishenteniSililankaLibeliaLesotoLitwa" + - "niaLasembagiLativiaLibyaMolokoMonakoMoldovaBukiniChisiwa cha Malusha" + - "lMasedoniaMaliMyamaMongoliaChisiwa cha Marian cha KasikaziniMalitini" + - "kiMolitaniaMonselatiMaltaMolisiModivuMalawiMeksikoMalesiaMsumbijiNam" + - "ibiaNyukaledoniaNidyeliChisiwa cha NolufokNidyeliaNikalagwaUholanziN" + - "orweNepaliNauluNiueNyuzilandiOmaniPanamaPeluPolinesia ya UfalansaPap" + - "uaFilipinoPakistaniPolandiSantapieli na MikeloniPitikeluniPwetolikoN" + - "chingu wa Magalibi wa Mpanda wa kuGaza wa kuPalesUlenoPalauPalagwaiK" + - "ataliLiyunioniLomaniaUlusiLwandaSaudiaChisiwa cha SolomonShelisheliS" + - "udaniUswidiSingapooSantahelenaSloveniaSlovakiaSiela LeoniSamalinoSen" + - "egaliSomaliaSulinamuSaotome na PrinsipeElsavadoSiliaUswaziChisiwa ch" + - "a Tuluchi na KaikoChadiTogoTailandiTadikistaniTokelauTimoli ya Masha" + - "likiTuluchimenistaniTunisiaTongaUtuluchiTilinidad na TobagoTuvaluTai" + - "waniTanzaniaUklainiUgandaMalekaniUlugwaiUzibechistaniVatikaniSantavi" + - "senti na GlenadiniVenezuelaChisiwa Chivihi cha WingalesaChisiwa Chiv" + - "ihi cha MalekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMaoleAfili" + - "ka KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0028, 0x0034, 0x0046, 0x004d, 0x0054, - 0x005b, 0x0061, 0x0061, 0x006a, 0x007b, 0x0082, 0x008b, 0x0090, - 0x0090, 0x009a, 0x00ae, 0x00b6, 0x00c1, 0x00c9, 0x00d4, 0x00dc, - 0x00e4, 0x00eb, 0x00f1, 0x00f1, 0x00f8, 0x00fe, 0x0105, 0x0105, - 0x010c, 0x0112, 0x0118, 0x0118, 0x0120, 0x0128, 0x012e, 0x0134, - 0x0134, 0x0158, 0x017c, 0x0181, 0x0187, 0x018e, 0x019e, 0x01a3, - 0x01ab, 0x01b0, 0x01b8, 0x01b8, 0x01c1, 0x01c5, 0x01cd, 0x01cd, - 0x01cd, 0x01d4, 0x01e6, 0x01f0, 0x01f0, 0x01f7, 0x01fe, 0x0206, - // Entry 40 - 7F - 0x021a, 0x0221, 0x0221, 0x0227, 0x022e, 0x0233, 0x0233, 0x023b, - 0x0243, 0x024b, 0x024b, 0x024b, 0x0250, 0x0254, 0x0268, 0x0273, - 0x0273, 0x027b, 0x0281, 0x0289, 0x0290, 0x0296, 0x02a9, 0x02a9, - 0x02ae, 0x02b6, 0x02bf, 0x02c5, 0x02c9, 0x02d2, 0x02db, 0x02e3, - 0x02e3, 0x02ec, 0x02f0, 0x02f9, 0x02ff, 0x02ff, 0x02ff, 0x0308, - 0x030f, 0x0314, 0x031c, 0x031c, 0x0325, 0x032d, 0x0334, 0x0334, - 0x0339, 0x035f, 0x0364, 0x036b, 0x0373, 0x0379, 0x0379, 0x0381, - 0x0388, 0x038f, 0x0394, 0x03a1, 0x03a9, 0x03b1, 0x03b7, 0x03ca, - // Entry 80 - BF - 0x03da, 0x03e6, 0x03ed, 0x03fe, 0x040a, 0x040f, 0x0417, 0x0421, - 0x042b, 0x0434, 0x043b, 0x0441, 0x0449, 0x0452, 0x0459, 0x045e, - 0x0464, 0x046a, 0x0471, 0x0471, 0x0471, 0x0477, 0x048b, 0x0494, - 0x0498, 0x049d, 0x04a5, 0x04a5, 0x04c6, 0x04d0, 0x04d9, 0x04e2, - 0x04e7, 0x04ed, 0x04f3, 0x04f9, 0x0500, 0x0507, 0x050f, 0x0516, - 0x0522, 0x0529, 0x053c, 0x0544, 0x054d, 0x0555, 0x055a, 0x0560, - 0x0565, 0x0569, 0x0573, 0x0578, 0x057e, 0x0582, 0x0597, 0x059c, - 0x05a4, 0x05ad, 0x05b4, 0x05ca, 0x05d4, 0x05dd, 0x060f, 0x0614, - // Entry C0 - FF - 0x0619, 0x0621, 0x0627, 0x0627, 0x0630, 0x0637, 0x0637, 0x063c, - 0x0642, 0x0648, 0x065b, 0x0665, 0x066b, 0x0671, 0x0679, 0x0684, - 0x068c, 0x068c, 0x0694, 0x069f, 0x06a7, 0x06af, 0x06b6, 0x06be, - 0x06be, 0x06d1, 0x06d9, 0x06d9, 0x06de, 0x06e4, 0x06e4, 0x0700, - 0x0705, 0x0705, 0x0709, 0x0711, 0x071c, 0x0723, 0x0736, 0x0746, - 0x074d, 0x0752, 0x075a, 0x076d, 0x0773, 0x077a, 0x0782, 0x0789, - 0x078f, 0x078f, 0x078f, 0x0797, 0x079e, 0x07ab, 0x07b3, 0x07cc, - 0x07d5, 0x07f2, 0x080e, 0x0817, 0x081e, 0x082d, 0x0832, 0x0832, - // Entry 100 - 13F - 0x0838, 0x083d, 0x084b, 0x0851, 0x0859, - }, - }, - { // kea - "Ilha di AsensãuAndoraEmiradus Árabi UniduAfeganistãuAntigua i BarbudaAng" + - "ilaAlbániaArméniaAngolaAntártikaArjentinaSamoa MerkanuÁustriaAustrál" + - "iaArubaIlhas ÅlandAzerbaijãuBósnia i ErzegovinaBarbadusBangladexiBél" + - "jikaBurkina FasuBulgáriaBarainBurundiBeninSãu BartolomeuBermudasBrun" + - "eiBolíviaKaraibas OlandezasBrazilBaamasButãuIlha BuveBotsuanaBelarus" + - "BeliziKanadáIlhas Kokus (Keeling)Kongu - KinxasaRepublika Sentru-Afr" + - "ikanuKongu - BrazaviliSuisaKosta di MarfinIlhas KukXiliKamarõisXinaK" + - "olômbiaIlha KlipertonKosta RikaKubaKabu VerdiKurasauIlha di NatalXip" + - "riTxékiaAlimanhaDiegu GarsiaDjibutiDinamarkaDominikaRepúblika Domini" + - "kanaArjéliaSeuta i MelilhaEkuadorStóniaEjituSara OsidentalIritreiaSp" + - "anhaEtiópiaUniãu EuropeiaFinlándiaFidjiIlhas MalvinasMikronéziaIlhas" + - " FaroeFransaGabãuReinu UniduGranadaJiórjiaGiana FransezaGernziGanaJi" + - "braltarGronelándiaGámbiaGineGuadalupiGine EkuatorialGrésiaIlhas Jeór" + - "jia di Sul i Sanduixi di SulGuatimalaGuamGine-BisauGianaRejiãu Admin" + - "istrativu Spesial di Hong KongIlhas Heard i McDonaldOndurasKroásiaAi" + - "tíUngriaKanáriasIndonéziaIrlandaIsraelIlha di ManÍndiaIlhas Británik" + - "as di ÍndikuIrakiIrãuIslándiaItáliaJersiJamaikaJordániaJapãuKéniaKir" + - "gistãuKambodjaKiribatiKamorisSãu Kristovãu i NevisKoreia di NortiKor" + - "eia di SulKueitiIlhas KaimãuKazakistãuLausLíbanuSanta LúsiaLixenstai" + - "nSri LankaLibériaLezotuLituániaLuxemburguLetóniaLíbiaMarokusMónakuMo" + - "ldáviaMontenegruSãu Martinhu di FransaMadagaskarIlhas MarxalMasidóni" + - "aMaliMianmar (Birmánia)MongóliaRejiãu Administrativu Spesial di Maka" + - "uIlhas Marianas di NortiMartinikaMauritániaMonseratMaltaMaurísiaMald" + - "ivasMalauiMéxikuMaláziaMusambikiNamíbiaNova KalidóniaNijerIlhas Norf" + - "olkNijériaNikaráguaOlandaNoruegaNepalNauruNiueNova ZilándiaOmanPanam" + - "áPeruPolinézia FransezaPapua-Nova GineFilipinasPakistãuPulóniaSan P" + - "iere i MikelonPirkairnPortu RikuPalistinaPurtugalPalauParaguaiKatarI" + - "lhas di OseaniaRuniãuRuméniaSérviaRúsiaRuandaArábia SauditaIlhas Sal" + - "umãuSeixelisSudãuSuésiaSingapuraSanta IlenaSlovéniaSvalbard i Jan Ma" + - "ienSlovákiaSera LioaSan MarinuSenegalSumáliaSurinamiSudãu di SulSãu " + - "Tume i PrínsipiEl SalvadorSãu Martinhu di OlandaSíriaSuazilándiaTris" + - "tan da KunhaIlhas Turkas i KaikusTxadiTerras Franses di SulToguTailá" + - "ndiaTadjikistãuTokelauTimor LestiTurkumenistãuTuníziaTongaTurkiaTrin" + - "idad i TobaguTuvaluTaiuanTanzániaUkrániaUgandaIlhas Minoris Distanti" + - "s de Stadus UnidusStadus Unidos di MerkaUruguaiUzbekistãuVatikanuSãu" + - " Bisenti i GranadinasVinizuelaIlhas Virjens BritánikasIlhas Virjens " + - "MerkanasVietnamVanuatuUalis i FutunaSamoaKozovuIémenMaioteÁfrika di " + - "SulZámbiaZimbábuiRejiãu DiskonxeduMunduÁfrikaMerka di NortiMerka di " + - "SulOseaniaÁfrika OsidentalMerka SentralÁfrika OrientalNorti di Áfrik" + - "aÁfrika SentralSul di ÁfrikaMerkasNorti di MerkaKaraibasÁzia Orienta" + - "lSul di ÁziaSudesti AziátikuEuropa di SulAustraláziaMelanéziaRejiãu " + - "di MikronéziaPolinéziaÁziaÁzia SentralÁzia OsidentalEuropaEuropa Ori" + - "entalEuropa di NortiEuropa OsidentalMerka Latinu", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0016, 0x002b, 0x0037, 0x0048, 0x004e, 0x0056, - 0x005e, 0x0064, 0x006e, 0x0077, 0x0084, 0x008c, 0x0096, 0x009b, - 0x00a7, 0x00b2, 0x00c6, 0x00ce, 0x00d8, 0x00e0, 0x00ec, 0x00f5, - 0x00fb, 0x0102, 0x0107, 0x0116, 0x011e, 0x0124, 0x012c, 0x013e, - 0x0144, 0x014a, 0x0150, 0x0159, 0x0161, 0x0168, 0x016e, 0x0175, - 0x018a, 0x0199, 0x01b2, 0x01c3, 0x01c8, 0x01d7, 0x01e0, 0x01e4, - 0x01ed, 0x01f1, 0x01fa, 0x0208, 0x0212, 0x0216, 0x0220, 0x0227, - 0x0234, 0x0239, 0x0240, 0x0248, 0x0254, 0x025b, 0x0264, 0x026c, - // Entry 40 - 7F - 0x0281, 0x0289, 0x0298, 0x029f, 0x02a6, 0x02ab, 0x02b9, 0x02c1, - 0x02c7, 0x02cf, 0x02de, 0x02de, 0x02e8, 0x02ed, 0x02fb, 0x0306, - 0x0311, 0x0317, 0x031d, 0x0328, 0x032f, 0x0337, 0x0345, 0x034b, - 0x034f, 0x0358, 0x0364, 0x036b, 0x036f, 0x0378, 0x0387, 0x038e, - 0x03b5, 0x03be, 0x03c2, 0x03cc, 0x03d1, 0x03fc, 0x0412, 0x0419, - 0x0421, 0x0426, 0x042c, 0x0435, 0x043f, 0x0446, 0x044c, 0x0457, - 0x045d, 0x0479, 0x047e, 0x0483, 0x048c, 0x0493, 0x0498, 0x049f, - 0x04a8, 0x04ae, 0x04b4, 0x04be, 0x04c6, 0x04ce, 0x04d5, 0x04ec, - // Entry 80 - BF - 0x04fb, 0x0508, 0x050e, 0x051b, 0x0526, 0x052a, 0x0531, 0x053d, - 0x0547, 0x0550, 0x0558, 0x055e, 0x0567, 0x0571, 0x0579, 0x057f, - 0x0586, 0x058d, 0x0596, 0x05a0, 0x05b7, 0x05c1, 0x05cd, 0x05d7, - 0x05db, 0x05ee, 0x05f7, 0x061e, 0x0635, 0x063e, 0x0649, 0x0651, - 0x0656, 0x065f, 0x0667, 0x066d, 0x0674, 0x067c, 0x0685, 0x068d, - 0x069c, 0x06a1, 0x06ae, 0x06b6, 0x06c0, 0x06c6, 0x06cd, 0x06d2, - 0x06d7, 0x06db, 0x06e9, 0x06ed, 0x06f4, 0x06f8, 0x070b, 0x071a, - 0x0723, 0x072c, 0x0734, 0x0747, 0x074f, 0x0759, 0x0762, 0x076a, - // Entry C0 - FF - 0x076f, 0x0777, 0x077c, 0x078c, 0x0793, 0x079b, 0x07a2, 0x07a8, - 0x07ae, 0x07bd, 0x07cb, 0x07d3, 0x07d9, 0x07e0, 0x07e9, 0x07f4, - 0x07fd, 0x0811, 0x081a, 0x0823, 0x082d, 0x0834, 0x083c, 0x0844, - 0x0851, 0x0866, 0x0871, 0x0888, 0x088e, 0x089a, 0x08aa, 0x08bf, - 0x08c4, 0x08d9, 0x08dd, 0x08e7, 0x08f3, 0x08fa, 0x0905, 0x0913, - 0x091b, 0x0920, 0x0926, 0x0937, 0x093d, 0x0943, 0x094c, 0x0954, - 0x095a, 0x0982, 0x0982, 0x0998, 0x099f, 0x09aa, 0x09b2, 0x09cb, - 0x09d4, 0x09ed, 0x0a03, 0x0a0a, 0x0a11, 0x0a1f, 0x0a24, 0x0a2a, - // Entry 100 - 13F - 0x0a30, 0x0a36, 0x0a44, 0x0a4b, 0x0a54, 0x0a66, 0x0a6b, 0x0a72, - 0x0a80, 0x0a8c, 0x0a93, 0x0aa4, 0x0ab1, 0x0ac1, 0x0ad1, 0x0ae0, - 0x0aee, 0x0af4, 0x0b02, 0x0b0a, 0x0b18, 0x0b24, 0x0b35, 0x0b42, - 0x0b4e, 0x0b58, 0x0b6e, 0x0b78, 0x0b7d, 0x0b8a, 0x0b99, 0x0b9f, - 0x0bae, 0x0bbd, 0x0bcd, 0x0bcd, 0x0bd9, - }, - }, - { // khq - "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" + - "lbaaniArmeeniAngoolaArgentineAmeriki SamoaOtrišiOstraaliAruubaAzerba" + - "ayijaŋBosni nda HerzegovineBarbaadosBangladešiBelgiikiBurkina fasoBu" + - "lgaariBahareenBurundiBeniŋBermudaBruuneeBooliviBreezilBahamasBuutaŋB" + - "otswaanaBilorišiBeliiziKanaadaKongoo demookaratiki labooCentraafriki" + - " koyraKongooSwisuKudwarKuuk gungeyŠiiliKameruunŠiinKolombiKosta rika" + - "KuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuutiDanemarkDoominikiDoom" + - "iniki labooAlžeeriEkwateerEstooniMisraEritreeEspaaɲeEcioopiFinlanduF" + - "ijiKalkan gungeyMikroneziFaransiGaabonAlbaasalaama MargantaGrenaadaG" + - "orgiFaransi GuyaanGaanaGibraltarGrinlandGambiGineGwadeluupGinee Ekwa" + - "torialGreeceGwatemaalaGuamGine-BissoGuyaaneHondurasKrwaasiHaitiHunga" + - "ariIndoneeziIrlanduIsrayelIndu labooBritiši Indu teekoo laamaIraakIr" + - "aanAycelandItaaliJamaayikUrdunJaapoŋKeeniyaKyrgyzstanKamboogiKiribaa" + - "tiKomoorSeŋ Kitts nda NevisKooree, GurmaKooree, HawsaKuweetKayman gu" + - "ngeyKaazakstanLaawosLubnaanSeŋ LussiaLiechtensteinSrilankaLiberiaLee" + - "sotoLituaaniLuxembourgLetooniLiibiMaarokMonakoMoldoviMadagascarMarša" + - "l gungeyMaacedooniMaaliMaynamarMongooliMariana Gurma GungeyMartiniik" + - "iMooritaaniMontserratMaltaMooris gungeyMaldiivuMalaawiMexikiMaleeziM" + - "ozambikNaamibiKaaledooni TaagaaNižerNorfolk GungooNaajiriiaNikaragwa" + - "HollanduNorveejNeepalNauruNiueZeelandu TaagaOmaanPanamaPeeruFaransi " + - "PolineeziPapua Ginee TaagaFilipinePaakistanPoloɲeSeŋ Piyer nda Mikel" + - "onPitikarinPorto RikoPalestine Dangay nda GaazaPortugaalPaluParaguwe" + - "yKataarReenioŋRumaaniIriši labooRwandaSaudiyaSolomon GungeySeešelSuu" + - "daŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSeera LeonSan MarinoSeneg" + - "alSomaaliSurinaamSao Tome nda PrinsipeSalvador labooSuuriaSwazilandT" + - "urk nda Kayikos GungeyCaaduTogoTaayilandTaažikistanTokelauTimoor haw" + - "saTurkmenistaŋTuniziTongaTurkiTrinidad nda TobaagoTuvaluTaayiwanTanz" + - "aaniUkreenUgandaAmeriki Laabu MarganteyUruguweyUzbeekistanVaatikan L" + - "aamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik " + - "Virgin GungeyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa " + - "Afriki LabooZambiZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, - 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, - 0x0087, 0x0094, 0x00a9, 0x00b2, 0x00bd, 0x00c5, 0x00d1, 0x00d9, - 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f5, 0x00fc, 0x0103, 0x0103, - 0x010a, 0x0111, 0x0118, 0x0118, 0x0121, 0x012a, 0x0131, 0x0138, - 0x0138, 0x0152, 0x0164, 0x016a, 0x016f, 0x0175, 0x0180, 0x0186, - 0x018e, 0x0193, 0x019a, 0x019a, 0x01a4, 0x01a9, 0x01b7, 0x01b7, - 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e6, - // Entry 40 - 7F - 0x01f5, 0x01fd, 0x01fd, 0x0205, 0x020c, 0x0211, 0x0211, 0x0218, - 0x0220, 0x0227, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, - 0x0249, 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, - 0x028b, 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, - 0x02c4, 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, - 0x02f2, 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, - 0x0320, 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, - 0x035f, 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, - // Entry 80 - BF - 0x03af, 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, - 0x03fe, 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, - 0x0438, 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, - 0x046c, 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, - 0x04b3, 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, - 0x04fc, 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, - 0x053c, 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, - 0x0588, 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, - // Entry C0 - FF - 0x05e8, 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, - 0x0618, 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, - 0x065c, 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, - 0x068e, 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, - 0x06dc, 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, - 0x071b, 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, - 0x075b, 0x075b, 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, - 0x07b8, 0x07ce, 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, - // Entry 100 - 13F - 0x080d, 0x0814, 0x0826, 0x082b, 0x0833, - }, - }, - { // ki - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "MburundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarus" + - "iBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Ka" + - "tiKongoUswisiKodivaaVisiwa vya CookChileKameruniCainaKolombiaKostari" + - "kaKiumbaKepuvedeKuprosiJamhuri ya ChekiNjeremaniJibutiDenmakiDominik" + - "aJamhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshi" + - "UfiniFijiVisiwa vya FalklandMikronesiaUbaranjaGaboniNgerethaGrenadaJ" + - "ojiaGwiyana ya UfaransaNganaJibraltaGrinlandiGambiaGineGwadelupeGine" + - "kwetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungari" + - "aIndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiI" + - "rakiUajemiAislandiItaliaJamaikaNjorondaniNjabaniKenyaKirigizistaniKa" + - "mbodiaKiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKu" + - "waitiVisiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSi" + - "rilankaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldova" + - "BukiniVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana" + - " vya KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMe" + - "ksikoMalesiaMsumbijiNamimbiaNyukaledoniaNijeriKisiwa cha NorfokNainj" + - "eriaNikaragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPo" + - "linesia ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri na Mikelo" + - "niPitkairniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa Palesti" + - "naUrenoPalauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya" + - " SolomonShelisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSie" + - "ra LeoniSamarinoSenegaliSomariaSurinamuSao Tome na PrincipeElsavadoS" + - "iriaUswaziVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokel" + - "auTimori ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na T" + - "obagoTuvaluTaiwaniTanzaniaUkrainiUgandaAmerikaUrugwaiUzibekistaniVat" + - "ikaniSantavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya Uingere" + - "zaVisiwa vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoa" + - "YemeniMayotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d8, 0x00de, 0x00de, 0x00e5, 0x00eb, 0x00f2, 0x00f2, - 0x00f9, 0x00ff, 0x0105, 0x0105, 0x010d, 0x0115, 0x011b, 0x0121, - 0x0121, 0x0141, 0x015a, 0x015f, 0x0165, 0x016c, 0x017b, 0x0180, - 0x0188, 0x018d, 0x0195, 0x0195, 0x019e, 0x01a4, 0x01ac, 0x01ac, - 0x01ac, 0x01b3, 0x01c3, 0x01cc, 0x01cc, 0x01d2, 0x01d9, 0x01e1, - // Entry 40 - 7F - 0x01f4, 0x01fb, 0x01fb, 0x0201, 0x0208, 0x020d, 0x020d, 0x0214, - 0x021c, 0x0224, 0x0224, 0x0224, 0x0229, 0x022d, 0x0240, 0x024a, - 0x024a, 0x0252, 0x0258, 0x0260, 0x0267, 0x026c, 0x027f, 0x027f, - 0x0284, 0x028c, 0x0295, 0x029b, 0x029f, 0x02a8, 0x02b1, 0x02b8, - 0x02b8, 0x02c1, 0x02c5, 0x02ce, 0x02d4, 0x02d4, 0x02d4, 0x02dd, - 0x02e4, 0x02e9, 0x02f1, 0x02f1, 0x02fa, 0x0302, 0x0309, 0x0309, - 0x030e, 0x0333, 0x0338, 0x033e, 0x0346, 0x034c, 0x034c, 0x0353, - 0x035d, 0x0364, 0x0369, 0x0376, 0x037e, 0x0386, 0x038c, 0x039f, - // Entry 80 - BF - 0x03ae, 0x03ba, 0x03c1, 0x03d2, 0x03dd, 0x03e2, 0x03ea, 0x03f4, - 0x03fe, 0x0407, 0x040e, 0x0414, 0x041c, 0x0425, 0x042c, 0x0431, - 0x0437, 0x043d, 0x0444, 0x0444, 0x0444, 0x044a, 0x045c, 0x0465, - 0x0469, 0x046e, 0x0476, 0x0476, 0x0496, 0x049f, 0x04a8, 0x04b3, - 0x04b8, 0x04be, 0x04c4, 0x04ca, 0x04d1, 0x04d8, 0x04e0, 0x04e8, - 0x04f4, 0x04fa, 0x050b, 0x0514, 0x051d, 0x0525, 0x052a, 0x0530, - 0x0535, 0x0539, 0x0543, 0x0548, 0x054e, 0x0552, 0x0567, 0x056c, - 0x0574, 0x057d, 0x0584, 0x059a, 0x05a3, 0x05ac, 0x05de, 0x05e3, - // Entry C0 - FF - 0x05e8, 0x05f0, 0x05f6, 0x05f6, 0x05ff, 0x0606, 0x0606, 0x060b, - 0x0611, 0x0616, 0x0628, 0x0632, 0x0638, 0x063e, 0x0646, 0x0651, - 0x0659, 0x0659, 0x0661, 0x066c, 0x0674, 0x067c, 0x0683, 0x068b, - 0x068b, 0x069f, 0x06a7, 0x06a7, 0x06ac, 0x06b2, 0x06b2, 0x06cb, - 0x06d0, 0x06d0, 0x06d4, 0x06dc, 0x06e7, 0x06ee, 0x0701, 0x0710, - 0x0717, 0x071c, 0x0723, 0x0735, 0x073b, 0x0742, 0x074a, 0x0751, - 0x0757, 0x0757, 0x0757, 0x075e, 0x0765, 0x0771, 0x0779, 0x0792, - 0x079b, 0x07ba, 0x07d8, 0x07e1, 0x07e8, 0x07f7, 0x07fc, 0x07fc, - // Entry 100 - 13F - 0x0802, 0x0809, 0x0816, 0x081c, 0x0824, - }, - }, - { // kk - kkRegionStr, - kkRegionIdx, - }, - { // kkj - "Kamɛrun", - []uint16{ // 49 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, - }, - }, - { // kl - "Kalaallit Nunaat", - []uint16{ // 91 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0010, - }, - }, - { // kln - "Emetab AndorraEmetab kibagenge nebo arabukEmetab AfghanistanEmetab Antig" + - "ua ak BarbudaEmetab AnguillaEmetab AlbaniaEmetab ArmeniaEmetab Angol" + - "aEmetab ArgentinaEmetab American SamoaEmetab AustriaEmetab Australia" + - "Emetab ArubaEmetab AzerbaijanEmetab Bosnia ak HerzegovinaEmetab Barb" + - "adosEmetab BangladeshEmetab BelgiumEmetab Burkina FasoEmetab Bulgari" + - "aEmetab BahrainEmetab BurundiEmetab BeninEmetab BermudaEmetab Brunei" + - "Emetab BoliviaEmetab BrazilEmetab BahamasEmetab BhutanEmetab Botswan" + - "aEmetab BelarusEmetab BelizeEmetab CanadaEmetab Congo - KinshasaEmet" + - "ab Afrika nebo KwenEmetab Congo - BrazzavilleEmetab SwitzerlandEmeta" + - "b Côte d’IvoireIkwembeyotab CookEmetab ChileEmetab CameroonEmetab Ch" + - "inaEmetab ColombiaEmetab Costa RicaEmetab CubaIkwembeyotab Cape Verd" + - "eEmetab CyprusEmetab Czech RepublicEmetab GerumanEmetab DjiboutiEmet" + - "ab DenmarkEmetab DominicaEmetab Dominican RepublicEmetab AlgeriaEmet" + - "ab EcuadorEmetab EstoniaEmetab MisiriEmetab EritreaEmetab SpainEmeta" + - "b EthiopiaEmetab FinlandEmetab FijiIkwembeyotab FalklandEmetab Micro" + - "nesiaEmetab FranceEmetab GabonEmetab Kibagenge nebo UingerezaEmetab " + - "GrenadaEmetab GeorgiaEmetab Guiana nebo UfaransaEmetab GhanaEmetab G" + - "ibraltarEmetab GreenlandEmetab GambiaEmetab GuineaEmetab GuadeloupeE" + - "metab Equatorial GuineaEmetab GreeceEmetab GuatemalaEmetab GuamEmeta" + - "b Guinea-BissauEmetab GuyanaEmetab HondurasEmetab CroatiaEmetab Hait" + - "iEmetab HungaryEmetab IndonesiaEmetab IrelandEmetab IsraelEmetab Ind" + - "iaKebebertab araraitab indian Ocean nebo UingeresaEmetab IraqEmetab " + - "IranEmetab IcelandEmetab ItalyEmetab JamaicaEmetab JordanEmetab Japa" + - "nEmetab KenyaEmetab KyrgyzstanEmetab CambodiaEmetab KiribatiEmetab C" + - "omorosEmetab Saint Kitts ak NevisEmetab Korea nebo murot katamEmetab" + - " korea nebo murot taiEmetab KuwaitIkwembeyotab CaymanEmetab Kazakhst" + - "anEmetab LaosEmetab LebanonEmetab Lucia NeEmetab LiechtensteinEmetab" + - " Sri LankaEmetab LiberiaEmetab LesothoEmetab LithuaniaEmetab Luxembo" + - "urgEmetab LatviaEmetab LibyaEmetab MoroccoEmetab MonacoEmetab Moldov" + - "aEmetab MadagascarIkwembeiyotab MarshallEmetab MacedoniaEmetab MaliE" + - "metab MyanmarEmetab MongoliaIkwembeiyotab Mariana nebo murot katamEm" + - "etab MartiniqueEmetab MauritaniaEmetab MontserratEmetab MaltaEmetab " + - "MauritiusEmetab MaldivesEmetab MalawiEmetab MexicoEmetab MalaysiaEme" + - "tab MozambiqueEmetab NamibiaEmetab New CaledoniaEmetab nigerIkwembei" + - "yotab NorforkEmetab NigeriaEmetab NicaraguaEmetab HolandEmetab Norwa" + - "yEmetab NepalEmetab NauruEmetab NiueEmetab New ZealandEmetab OmanEme" + - "tab PanamaEmetab PeruEmetab Polynesia nebo ufaransaEmetab Papua New " + - "GuineaEmetab PhilippinesEmetab PakistanEmetab PolandEmetab Peter Ne " + - "titil ak MiquelonEmetab PitcairnEmetab Puerto RicoEmetab PalestineEm" + - "etab PortugalEmetab PalauEmetab ParaguayEmetab QatarEmetab RéunionEm" + - "etab RomaniaEmetab RussiaEmetab RwandaEmetab Saudi ArabiaIkwembeiyot" + - "ab SolomonEmetab SeychellesEmetab SudanEmetab SwedenEmetab Singapore" + - "Emetab Helena Ne tililEmetab SloveniaEmetab SlovakiaEmetab Sierra Le" + - "oneEmetab San MarinoEmetab SenegalEmetab SomaliaEmetab SurinameEmeta" + - "b São Tomé and PríncipeEmetab El SalvadorEmetab SyriaEmetab Swazilan" + - "dIkwembeiyotab Turks ak CaicosEmetab ChadEmetab TogoEmetab ThailandE" + - "metab TajikistanEmetab TokelauEmetab Timor nebo Murot taiEmetab Turk" + - "menistanEmetab TunisiaEmetab TongaEmetab TurkeyEmetab Trinidad ak To" + - "bagoEmetab TuvaluEmetab TaiwanEmetab TanzaniaEmetab UkrainieEmetab U" + - "gandaEmetab amerikaEmetab UruguayEmetab UzibekistaniEmetab VaticanEm" + - "etab Vincent netilil ak GrenadinesEmetab VenezuelaIkwembeyotab Briti" + - "sh VirginIkwemweiyotab AmerikaEmetab VietnamEmetab VanuatuEmetab Wal" + - "is ak FutunaEmetab SamoaEmetab YemenEmetab MayotteEmetab Afrika nebo" + - " Murot taiEmetab ZambiaEmetab Zimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000e, 0x002a, 0x003c, 0x0055, 0x0064, 0x0072, - 0x0080, 0x008d, 0x008d, 0x009d, 0x00b2, 0x00c0, 0x00d0, 0x00dc, - 0x00dc, 0x00ed, 0x0109, 0x0118, 0x0129, 0x0137, 0x014a, 0x0159, - 0x0167, 0x0175, 0x0181, 0x0181, 0x018f, 0x019c, 0x01aa, 0x01aa, - 0x01b7, 0x01c5, 0x01d2, 0x01d2, 0x01e1, 0x01ef, 0x01fc, 0x0209, - 0x0209, 0x0220, 0x0237, 0x0251, 0x0263, 0x027a, 0x028b, 0x0297, - 0x02a6, 0x02b2, 0x02c1, 0x02c1, 0x02d2, 0x02dd, 0x02f4, 0x02f4, - 0x02f4, 0x0301, 0x0316, 0x0324, 0x0324, 0x0333, 0x0341, 0x0350, - // Entry 40 - 7F - 0x0369, 0x0377, 0x0377, 0x0385, 0x0393, 0x03a0, 0x03a0, 0x03ae, - 0x03ba, 0x03c9, 0x03c9, 0x03c9, 0x03d7, 0x03e2, 0x03f7, 0x0408, - 0x0408, 0x0415, 0x0421, 0x0440, 0x044e, 0x045c, 0x0477, 0x0477, - 0x0483, 0x0493, 0x04a3, 0x04b0, 0x04bd, 0x04ce, 0x04e6, 0x04f3, - 0x04f3, 0x0503, 0x050e, 0x0522, 0x052f, 0x052f, 0x052f, 0x053e, - 0x054c, 0x0558, 0x0566, 0x0566, 0x0576, 0x0584, 0x0591, 0x0591, - 0x059d, 0x05cd, 0x05d8, 0x05e3, 0x05f1, 0x05fd, 0x05fd, 0x060b, - 0x0618, 0x0624, 0x0630, 0x0641, 0x0650, 0x065f, 0x066d, 0x0688, - // Entry 80 - BF - 0x06a5, 0x06c0, 0x06cd, 0x06e0, 0x06f1, 0x06fc, 0x070a, 0x0719, - 0x072d, 0x073d, 0x074b, 0x0759, 0x0769, 0x077a, 0x0787, 0x0793, - 0x07a1, 0x07ae, 0x07bc, 0x07bc, 0x07bc, 0x07cd, 0x07e3, 0x07f3, - 0x07fe, 0x080c, 0x081b, 0x081b, 0x0841, 0x0852, 0x0863, 0x0874, - 0x0880, 0x0890, 0x089f, 0x08ac, 0x08b9, 0x08c8, 0x08d9, 0x08e7, - 0x08fb, 0x0907, 0x091c, 0x092a, 0x093a, 0x0947, 0x0954, 0x0960, - 0x096c, 0x0977, 0x0989, 0x0994, 0x09a1, 0x09ac, 0x09ca, 0x09e1, - 0x09f3, 0x0a02, 0x0a0f, 0x0a30, 0x0a3f, 0x0a51, 0x0a61, 0x0a70, - // Entry C0 - FF - 0x0a7c, 0x0a8b, 0x0a97, 0x0a97, 0x0aa6, 0x0ab4, 0x0ab4, 0x0ac1, - 0x0ace, 0x0ae1, 0x0af6, 0x0b07, 0x0b13, 0x0b20, 0x0b30, 0x0b46, - 0x0b55, 0x0b55, 0x0b64, 0x0b77, 0x0b88, 0x0b96, 0x0ba4, 0x0bb3, - 0x0bb3, 0x0bd2, 0x0be4, 0x0be4, 0x0bf0, 0x0c00, 0x0c00, 0x0c1d, - 0x0c28, 0x0c28, 0x0c33, 0x0c42, 0x0c53, 0x0c61, 0x0c7c, 0x0c8f, - 0x0c9d, 0x0ca9, 0x0cb6, 0x0ccf, 0x0cdc, 0x0ce9, 0x0cf8, 0x0d07, - 0x0d14, 0x0d14, 0x0d14, 0x0d22, 0x0d30, 0x0d43, 0x0d51, 0x0d75, - 0x0d85, 0x0da0, 0x0db5, 0x0dc3, 0x0dd1, 0x0de7, 0x0df3, 0x0df3, - // Entry 100 - 13F - 0x0dff, 0x0e0d, 0x0e29, 0x0e36, 0x0e45, - }, - }, - { // km - kmRegionStr, - kmRegionIdx, - }, - { // kn - knRegionStr, - knRegionIdx, - }, - { // ko - koRegionStr, - koRegionIdx, - }, - { // ko-KP - "조선민주주의인민공화국", - []uint16{ // 129 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0021, - }, - }, - { // kok - "असेशन आयलँडअंडोरायुनाइटेड अरब इमीरॅट्सअफगानिस्तानएँटिगुआ आनी बारबुडाअंगु" + - "लाअल्बानीयाआर्मीनीयाअंगोलाअंटार्क्टिकाअर्जेंटिनाअमेरिकी सामोआऑस्ट्" + - "रियाऑस्ट्रेलीयाअरुबाअलांड जुवेअजरबैजानबोस्निया आनी हेर्जेगोविनाबार" + - "बाडोसबांगलादेशबेल्जियमबुर्किना फॅसोबल्गेरीयाबेहरेनबुरुंडीबेनीनसॅंट" + - " बार्थेल्मीबर्मुडाब्रूनेईबोलिव्हियाकॅरिबियन निदरलँडब्राझीलबहामासभूता" + - "नबोवट आयलँडबोत्सवानाबेलारूसबेलिझकॅनडाकोकोस (कीलिंग) आयलँडकोंगो - क" + - "िंशासामध्य अफ्रीकी लोकसत्तकराज्यकोंगो - ब्राझाविलास्विट्ज़रलैंडकोत" + - " द’ईवोआरकुक आयलँड्सचिलीकॅमेरूनचीनकोलंबियाक्लिपरटॉन आयलँडकोस्ता रिकाक" + - "्युबाकेप वर्दीकुरसावोक्रिसमस आयलँडसायप्रसचेकियाजर्मनीदिगो गार्सिया" + - "जिबूतीडेनमार्कडोमिनीकाडोमिनिकन प्रजासत्ताकअल्जेरियासिटा आनी मेलिल्" + - "लाइक्वाडोरएस्टोनियाईजिप्तअस्तंत सहाराइरिट्रियास्पेनइथियोपियायुरोपि" + - "यन युनियनयुरोझोनफिनलँडफिजीफ़ॉकलैंड आइलैंड्समायक्रोनेशियाफैरो आयलँड" + - "्सफ्रान्सगॅबोनयुनायटेड किंगडमग्रेनॅडाजॉर्जियाफ्रेन्च गयानागर्नसीघा" + - "नाजिब्राल्टरग्रीनलँडगॅम्बियागुएनियाग्वाडेलोपइक्वेटोरियल गुएनियाग्र" + - "ीसदक्षिण जोर्जिया आनी दक्षिण सॅण्डविच आयलँड्सग्वाटेमालागुआमगुअनिया" + - "-बिसाउगयानाहाँग काँग SAR चीनहर्ड आयलँड्स ऍंड मॅक्डोनाल्ड आयलँड्सहॉनड" + - "ुरसक्रोयेशीयाहैतीहंगेरीकॅनरी आयलैंड्सइंडोनेशीयाआयरलँडइज़राइलइसले ऑ" + - "फ मॅनभारतब्रिटिश हिंद महासागरीय क्षेत्रइराकइरानआइसलैंडइटलीजर्सीजमै" + - "काजॉर्डनजपानकेनयाकिर्गिज़स्तानकंबोडियाकिरिबातीकोमोरोससेंट किट्स आन" + - "ी नेविसउत्तर कोरियादक्षिण कोरियाकुवेतकैमेन आइलैंड्सकझाकस्तानलाओसले" + - "बनानसँट लुसियालिचेंस्टीनश्री लंकालायबेरीयालिसोथोलिथुआनियालक्सेमबर्" + - "गलॅटवियालीबियामोरोक्कोमोनॅकोमाल्डोवामॉन्टॅनग्रोसॅंट मार्टिनमाडागास" + - "्करमार्शल आयलँड्समॅसिडोनियामालीम्यानमार (बर्मा)मंगोलियामकाव SAR ची" + - "नउत्तरी मरिना आयसलैण्डमार्टीनिकमॉरिटानियामॉन्टसेराटमाल्टामॉरिशसमाल" + - "दीवमलावीमेक्सिकोमलेशियामॉझांबीकनामीबियान्यू कॅलिडोनियानायजरनॉरफॉक " + - "आयलँडनायजेरियानिकारगुवानॅदरलँडनॉर्वेनेपाळनावरूनीयून्युझीलॅन्डओमानप" + - "नामापेरूफ्रेन्च पोलिनेसियापापुआ न्यु गिनीफिलीपिन्झपाकिस्तानपोलंडसँ" + - ". पायरे आनी मिकेलनपिटकॅरन आयलँड्सपिर्टो रिकोपेलेस्टीनियन प्रांतपुर्त" + - "गालपलाऊपैराग्वेकतारआवटलायींग ओशेनियारीयूनियनरोमानीयासर्बियारूसरवां" + - "डासऊदी अरेबियासोलोमन आइलँड्ससेशेल्ससूडानस्वीडनसिंगापूरसेंट हेलिनास" + - "्लोवेनियास्वालबार्ड आनी जान मेयनस्लोवाकियासिएरा लियॉनसॅन मारीनोसिन" + - "िगलसोमालियासुरीनामदक्षिण सुडानसावो टोमे आनी प्रिंसिपलएल साल्वाडोरस" + - "िंट मार्टेनसिरियास्वाजीलँडत्रिस्तान दा कुन्हातुर्क्स आनी कॅकोज आयल" + - "ँड्सचाडफ्रेंच दक्षिणी प्रांतटोगोथायलँडतजीकिस्तानटोकलाऊतिमोर-लेस्ते" + - "तुर्कमेनिस्तानट्यूनीशियाटोंगातुर्कीट्रिनीडाड आनी टोबॅगोटुवालूतायवा" + - "नतांझानियायुक्रेनयुगांडायु. एस. मायनर आवटलायींग आयलँड्\u200dसयुनाय" + - "टेड नेशन्सयुनायटेड स्टेट्सउरूग्वेउज़्बेकिस्तानवॅटिकन सिटीसेंट विंस" + - "ेंट ऐंड द ग्रेनेडाइंसविनेझुएलाब्रिटिश वर्जिन आयलँड्सयु. एस. वर्जिन" + - " आयलँड्\u200dसव्हिएतनामवनातूवालिस आनी फ्यूचूनासामोआकोसोवोयेमेनमेयोटद" + - "क्षिण आफ्रीकाझांबियाजिम्बाब्वेअज्ञात प्रांतजगआफ्रिकाउत्तर अमेरिकाद" + - "क्षिण अमेरिकाओसेनियाअस्तंत आफ्रिकामध्य अमेरिकाउदेंत आफ्रिकाउत्तरीय" + - " आफ्रिकामध्य आफ्रिकादक्षिण आफ्रिकाअमेरिकासउत्तरीय अमेरिकाकॅरिबियनउदे" + - "ंत आशियादक्षिण आशियाआग्नेय आशियादक्षिण येवरोपऑस्ट्रेलेसियामेलानेसि" + - "यामायक्रोनेशियन प्रांतपोलिनेशियाआशियामध्य आशियाअस्तंत आशियायेवरोपउ" + - "देंत येवरोपउत्तर येवरोपअस्तंत येवरोपलॅटीन अमेरिका", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001f, 0x0031, 0x006c, 0x008d, 0x00c2, 0x00d4, 0x00ef, - 0x010a, 0x011c, 0x0140, 0x015e, 0x0183, 0x019e, 0x01bf, 0x01ce, - 0x01ea, 0x0202, 0x0249, 0x0261, 0x027c, 0x0294, 0x02b9, 0x02d4, - 0x02e6, 0x02fb, 0x030a, 0x0335, 0x034a, 0x035f, 0x037d, 0x03ab, - 0x03c0, 0x03d2, 0x03e1, 0x03fd, 0x0418, 0x042d, 0x043c, 0x044b, - 0x047f, 0x04a6, 0x04f0, 0x0520, 0x0547, 0x0566, 0x0585, 0x0591, - 0x05a6, 0x05af, 0x05c7, 0x05f2, 0x0611, 0x0623, 0x063c, 0x0651, - 0x0676, 0x068b, 0x069d, 0x06af, 0x06d4, 0x06e6, 0x06fe, 0x0716, - // Entry 40 - 7F - 0x0750, 0x076b, 0x079a, 0x07b2, 0x07cd, 0x07df, 0x0801, 0x081c, - 0x082b, 0x0846, 0x0871, 0x0886, 0x0898, 0x08a4, 0x08d5, 0x08fc, - 0x091e, 0x0933, 0x0942, 0x096d, 0x0985, 0x099d, 0x09c2, 0x09d4, - 0x09e0, 0x09fe, 0x0a16, 0x0a2e, 0x0a43, 0x0a5e, 0x0a95, 0x0aa4, - 0x0b1b, 0x0b39, 0x0b45, 0x0b6a, 0x0b79, 0x0ba0, 0x0c04, 0x0c19, - 0x0c37, 0x0c43, 0x0c55, 0x0c7d, 0x0c9b, 0x0cad, 0x0cc2, 0x0cdf, - 0x0ceb, 0x0d3f, 0x0d4b, 0x0d57, 0x0d6c, 0x0d78, 0x0d87, 0x0d96, - 0x0da8, 0x0db4, 0x0dc3, 0x0dea, 0x0e02, 0x0e1a, 0x0e2f, 0x0e65, - // Entry 80 - BF - 0x0e87, 0x0eac, 0x0ebb, 0x0ee3, 0x0efe, 0x0f0a, 0x0f1c, 0x0f38, - 0x0f56, 0x0f6f, 0x0f8a, 0x0f9c, 0x0fb7, 0x0fd5, 0x0fea, 0x0ffc, - 0x1014, 0x1026, 0x103e, 0x105f, 0x1081, 0x109f, 0x10c7, 0x10e5, - 0x10f1, 0x111b, 0x1133, 0x114d, 0x1188, 0x11a3, 0x11c1, 0x11df, - 0x11f1, 0x1203, 0x1215, 0x1224, 0x123c, 0x1251, 0x1269, 0x1281, - 0x12ac, 0x12bb, 0x12dd, 0x12f8, 0x1313, 0x1328, 0x133a, 0x1349, - 0x1358, 0x1364, 0x1385, 0x1391, 0x13a0, 0x13ac, 0x13e0, 0x1409, - 0x1424, 0x143f, 0x144e, 0x1482, 0x14ad, 0x14cc, 0x1503, 0x151b, - // Entry C0 - FF - 0x1527, 0x153f, 0x154b, 0x157c, 0x1594, 0x15ac, 0x15c1, 0x15ca, - 0x15dc, 0x15fe, 0x1626, 0x163b, 0x164a, 0x165c, 0x1674, 0x1693, - 0x16b1, 0x16f0, 0x170e, 0x172d, 0x1749, 0x175b, 0x1773, 0x1788, - 0x17aa, 0x17e9, 0x180b, 0x182d, 0x183f, 0x185a, 0x188f, 0x18d4, - 0x18dd, 0x1918, 0x1924, 0x1936, 0x1954, 0x1966, 0x1988, 0x19b2, - 0x19d0, 0x19df, 0x19f1, 0x1a29, 0x1a3b, 0x1a4d, 0x1a68, 0x1a7d, - 0x1a92, 0x1ae6, 0x1b11, 0x1b3f, 0x1b54, 0x1b7b, 0x1b9a, 0x1bec, - 0x1c07, 0x1c45, 0x1c80, 0x1c9b, 0x1caa, 0x1cdc, 0x1ceb, 0x1cfd, - // Entry 100 - 13F - 0x1d0c, 0x1d1b, 0x1d43, 0x1d58, 0x1d76, 0x1d9b, 0x1da1, 0x1db6, - 0x1ddb, 0x1e03, 0x1e18, 0x1e40, 0x1e62, 0x1e87, 0x1eb2, 0x1ed4, - 0x1efc, 0x1f14, 0x1f3f, 0x1f57, 0x1f76, 0x1f98, 0x1fba, 0x1fdf, - 0x2006, 0x2024, 0x205e, 0x207c, 0x208b, 0x20a7, 0x20c9, 0x20db, - 0x20fd, 0x211f, 0x2144, 0x2144, 0x2169, - }, - }, - { // ks - "اٮ۪نڑورامُتحدہ عرَب اماراتاَفغانَستاناٮ۪نٹِگُوا تہٕ باربوڑاانگوئیلااٮ۪لب" + - "انِیااَرمانِیاانگولااینٹارٹِکاأرجَنٹینااَمریٖکَن سَمواآسٹِیاآسٹریلِ" + - "یااَروٗباایلینٛڑ جٔزیٖرٕآزَرباجانبوسنِیا تہٕ ہَرزِگووِناباربیڈاسبَن" + - "ٛگلادیشبیٛلجِیَمبُرکِنا فیسوبَلجیرِیابحریٖنبورَنڈِبِنِنسینٛٹ بارتَھ" + - "یلمیبٔرمیوڈابُرنٔےبولِوِیابرطانوی قُطبہِ جَنوٗبی علاقہٕبرٛازِلبَہام" + - "َسبوٗٹانبووَٹ جٔزیٖرٕبوتَسوانابیلاروٗسبیلِجکینَڑاکوکَس کیٖلِنٛگ جٔز" + - "یٖرٕکونٛگو کِنشاسامرکٔزی اَفریٖکی جموٗریَتکونٛگو بٔرٛزاوِلیسُوِزَرل" + - "ینٛڑاَیوٕری کوسٹکُک جٔزیٖرٕچِلیکیٚمِروٗنچیٖنکولَمبِیاکوسٹا رِکاکیوٗ" + - "باکیپ ؤرڑیکرِسمَس جٔزیٖرٕسایفرٛسچیک جَموٗرِیَتجرمٔنیجِبوٗتیڈینٛمارٕ" + - "کڈومِنِکاڈومِنِکَن جموٗرِیَتاٮ۪لجیرِیااِکواڑورایسٹونِیامِسٔرمشرِقی " + - "سَہارااِرٕٹِیاسٕپیناِتھوپِیافِنلینٛڑفِجیفٕلاکلینٛڑ جٔزیٖرٕفرٛانسگیب" + - "انیُنایٹِڑ کِنٛگڈَمگرٛنیڑاجارجِیافرٛانسِسی گِاناگیوَنَرسےگاناجِبرال" + - "ٹَرگریٖنلینٛڑگَمبِیاگِنیگَواڑیلوپاِکوِٹورِیَل گِنیگریٖسجنوٗبی جارجِ" + - "یا تہٕ جنوٗبی سینٛڑوٕچ جٔزیٖرٕگوتیدالاگُوامگیٖنی بِساوگُیاناہانٛگ ک" + - "انٛگ ایس اے آر چیٖنہَرٕڑ جٔزیٖرٕ تہٕ مٮ۪کڈونالڑٕ جٔزیٖرٕہانٛڈوٗرِسک" + - "رٛوشِیاہایتیہَنٛگریاِنڑونیشِیااَیَرلینٛڑاِسرایٖلآیِل آف میٛنہِنٛدوس" + - "تانبرطانوی بحرِ ہِنٛدۍ علاقہٕایٖراقایٖراناَیِسلینٛڑاِٹلیجٔرسیجَمایک" + - "اجاپانکِنٛیاکِرگِستانکَمبوڑِیاکِرٕباتیکَمورَسسینٛٹ کِٹَس تہٕ نیوِسش" + - "ُمٲلی کورِیاجنوٗبی کورِیاکُویتکیمَن جٔزیٖرٕکَزاکِستانلاسلٮ۪بنانسینٛ" + - "ٹ لوٗسِیالِکٹیٛسٹیٖنسِریٖلَنٛکالایبیرِیالیسوتھولِتھُوانِیالَکسَمبٔر" + - "ٕگلیٛٹوِیالِبیاموروکومونیٚکومولڑاوِیاموٹونیٛگِریوسینٛٹ مارٹِنمیڑاگا" + - "سکارمارشَل جٔزیٖرٕمٮ۪سوڑونِیامالیمَیَنما بٔرمامَنٛگولِیامَکاوو ایس " + - "اے آر چیٖنشُمٲلی مارِیانا جٔزیٖرٕمارٹِنِکمارٕٹانِیامانٛٹسیراٹمالٹام" + - "ورِشَسمالدیٖوملاویمٮ۪کسِکومَلیشِیاموزَمبِکنامِبِیانِو کیلِڑونِیانای" + - "جَرنارفاک جٔزیٖرٕنایجیرِیاناکاراگُوانیٖدَرلینٛڑناروےنیپالنارووٗنیوٗ" + - "نیوٗزِلینٛڑاومانپَناماپیٖروٗفرٛانسی پولِنیشِیاپاپُوا نیوٗ گیٖنیفِلِ" + - "پِینسپاکِستانپولینٛڑسینٛٹ پیٖری تہٕ موکیلِیَنپِٹکیرٕنۍ جٔزیٖرٕپٔرٹو" + - " رِکوفَلَستیٖنپُرتِگالپَلاوپَراگُےقَطِرآوُٹلاینِگ اوشینِیارِیوٗنِیَن" + - "رومانِیاسَربِیاروٗسروٗوانٛڈاسوٗدی عربِیہسولامان جٔزیٖرٕسیشَلِسسوٗڈا" + - "نسُوِڈَنٛسِنٛگاپوٗرسینٛٹ ہٮ۪لِناسَلووینِیاسَوالبریڑ تہٕ جان ماییڑسَ" + - "لوواکِیاسیٖرالیوونسین میرِنوسینیگَلسومالِیاسُرِنامساو توم تہٕ پرٛنس" + - "ِپیاٮ۪ل سَلواڑورشامسُوزِلینٛڑتُرُک تہٕ کیکوس جٔزیٖرٕچاڑفرٛانسِسی جَ" + - "نوٗبی عَلاقہٕٹوگوتھایلینٛڑتاجکِستانتوکیلاومَشرِقی تایمورتُرمِنِستان" + - "ٹونیشِیاٹونٛگاتُرکیٹرٛنِنداد تہٕ ٹوبیگوتوٗوالوٗتایوانتَنجانِیایوٗرِ" + - "کینیوٗگانٛڑایوٗنایٹِڑ سِٹیٹِس ماینَر آوُٹلییِنٛگ جٔزیٖرٕیوٗنایٹِڑ س" + - "ِٹیٹِسیوٗروگےاُزبِکِستانویٹِکَن سِٹیسینٛٹ وینسٮ۪ٹ تہٕ گرٛیناڑاینٕزو" + - "ینازوٗلابَرطانوی ؤرجِن جٔزیٖرٕیوٗ ایس ؤرجِن جٔزیٖرٕویٹِناموانوٗتوٗو" + - "الِس تہٕ فیوٗچوٗناسیمووایَمَنمَییٹجَنوٗبی اَفریٖکاجامبِیازِمبابےنام" + - "علوٗم تہٕ نالَگہار عَلاقہٕدُنیااَفریٖکاشُمٲلی اَمریٖکاجَنوٗنی اَمرٖ" + - "یٖکااوشَنیامَغریٖبی اَفریٖکامرکٔزی اَمریٖکامَشرِقی اَفریٖکاشُمٲلی ا" + - "َفریٖکاوسطی اَفریٖکاجنوٗبی اَفریٖکااَمریٖکَسشُمٲلی اَمریٖکا خٕطہٕکَ" + - "رِببیٖنمَشرِقی ایشیاجنوٗبی ایشیاجنوٗبہِ مَشرِقی ایشیاجنوٗبی یوٗرَپآ" + - "سٹریلیا تہٕ نِوزِلینٛڑمٮ۪لَنیٖشِیامَیکرونَیشِیَن خٕطہٕپالنیشِیاایشی" + - "امرکٔزی ایشیامَغرِبی ایشیایوٗرَپمشرِقی یوٗرَپشُمٲلی یوٗرَپمغرِبی یو" + - "ٗرَپلاطیٖنی اَمریٖکا تہٕ کیرَبیٖن", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0010, 0x0032, 0x0048, 0x0072, 0x0082, 0x0096, - 0x00a8, 0x00b4, 0x00c8, 0x00da, 0x00f7, 0x0103, 0x0115, 0x0123, - 0x0140, 0x0152, 0x017e, 0x018e, 0x01a2, 0x01b4, 0x01cb, 0x01dd, - 0x01e9, 0x01f7, 0x0201, 0x0220, 0x0230, 0x023c, 0x024c, 0x0283, - 0x0291, 0x029f, 0x02ab, 0x02c4, 0x02d6, 0x02e6, 0x02f0, 0x02fc, - 0x0326, 0x0341, 0x036f, 0x0390, 0x03a8, 0x03bf, 0x03d4, 0x03dc, - 0x03ee, 0x03f6, 0x0408, 0x0408, 0x041b, 0x0427, 0x0436, 0x0436, - 0x0453, 0x0461, 0x047c, 0x0488, 0x0488, 0x0496, 0x04a8, 0x04b8, - // Entry 40 - 7F - 0x04dd, 0x04f1, 0x04f1, 0x0501, 0x0513, 0x051d, 0x0536, 0x0546, - 0x0550, 0x0562, 0x0562, 0x0562, 0x0572, 0x057a, 0x059d, 0x059d, - 0x059d, 0x05a9, 0x05b3, 0x05d4, 0x05e2, 0x05f0, 0x060d, 0x061f, - 0x0627, 0x0639, 0x064d, 0x065b, 0x0663, 0x0675, 0x0696, 0x06a0, - 0x06ef, 0x06ff, 0x0709, 0x071e, 0x072a, 0x0759, 0x079f, 0x07b3, - 0x07c3, 0x07cd, 0x07db, 0x07db, 0x07f1, 0x0805, 0x0815, 0x082b, - 0x083f, 0x0870, 0x087c, 0x0888, 0x089c, 0x08a6, 0x08b0, 0x08be, - 0x08be, 0x08c8, 0x08d4, 0x08e6, 0x08f8, 0x0908, 0x0916, 0x093d, - // Entry 80 - BF - 0x0956, 0x096f, 0x0979, 0x0992, 0x09a6, 0x09ac, 0x09ba, 0x09d3, - 0x09e9, 0x09ff, 0x0a11, 0x0a1f, 0x0a35, 0x0a4b, 0x0a5b, 0x0a65, - 0x0a71, 0x0a7f, 0x0a91, 0x0aa9, 0x0ac0, 0x0ad4, 0x0aef, 0x0b05, - 0x0b0d, 0x0b26, 0x0b3a, 0x0b60, 0x0b8c, 0x0b9c, 0x0bb0, 0x0bc4, - 0x0bce, 0x0bdc, 0x0bea, 0x0bf4, 0x0c04, 0x0c14, 0x0c24, 0x0c34, - 0x0c4f, 0x0c5b, 0x0c76, 0x0c88, 0x0c9c, 0x0cb2, 0x0cbc, 0x0cc6, - 0x0cd2, 0x0cda, 0x0cf0, 0x0cfa, 0x0d06, 0x0d12, 0x0d35, 0x0d55, - 0x0d67, 0x0d77, 0x0d85, 0x0db4, 0x0dd5, 0x0de8, 0x0dfa, 0x0e0a, - // Entry C0 - FF - 0x0e14, 0x0e22, 0x0e2c, 0x0e51, 0x0e65, 0x0e75, 0x0e83, 0x0e8b, - 0x0e9d, 0x0eb4, 0x0ed1, 0x0edf, 0x0eeb, 0x0ef9, 0x0f0f, 0x0f28, - 0x0f3c, 0x0f67, 0x0f7b, 0x0f8f, 0x0fa2, 0x0fb0, 0x0fc0, 0x0fce, - 0x0fce, 0x0ff3, 0x100c, 0x100c, 0x1012, 0x1026, 0x1026, 0x1051, - 0x1057, 0x1087, 0x108f, 0x10a1, 0x10b3, 0x10c1, 0x10dc, 0x10f2, - 0x1102, 0x110e, 0x1118, 0x113e, 0x114e, 0x115a, 0x116c, 0x117c, - 0x118e, 0x11e2, 0x11e2, 0x1203, 0x1211, 0x1227, 0x123e, 0x1277, - 0x1289, 0x12b3, 0x12da, 0x12e8, 0x12f8, 0x131c, 0x1328, 0x1328, - // Entry 100 - 13F - 0x1332, 0x133c, 0x135b, 0x1369, 0x1377, 0x13ae, 0x13b8, 0x13c8, - 0x13e5, 0x1406, 0x1414, 0x1435, 0x1452, 0x1471, 0x148e, 0x14a7, - 0x14c4, 0x14d6, 0x14fe, 0x1510, 0x1529, 0x1540, 0x1568, 0x1581, - 0x15ad, 0x15c5, 0x15ec, 0x15fe, 0x1608, 0x161f, 0x1638, 0x1644, - 0x165d, 0x1676, 0x168f, 0x168f, 0x16c6, - }, - }, - { // ksb - "AndolaFalme za KialabuAfuganistaniAntigua na BalbudaAnguillaAlbaniaAlmen" + - "iaAngolaAjentinaSamoa ya MalekaniAustliaAustlaliaAlubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiBukinafasoBulgaliaBahaleniBulundiB" + - "eniniBelmudaBluneiBoliviaBlaziliBahamaButaniBotswanaBelalusiBelizeKa" + - "nadaJamhuli ya Kidemoklasia ya KongoJamhuli ya Afrika ya GatiKongoUs" + - "wisiKodivaaVisiwa vya CookChileKameluniChinaKolombiaKostalikaKubaKep" + - "uvedeKuplosiJamhuli ya ChekiUjeumaniJibutiDenmakiDominikaJamhuli ya " + - "DominikaAljeliaEkwadoEstoniaMisliElitleaHispaniaUhabeshiUfiniFijiVis" + - "iwa vya FalklandMiklonesiaUfalansaGaboniUingeezaGlenadaJojiaGwiyana " + - "ya UfalansaGhanaJiblaltaGlinlandiGambiaGineGwadelupeGinekwetaUgiikiG" + - "watemalaGwamGinebisauGuyanaHonduasiKolasiaHaitiHungaliaIndonesiaAyal" + - "andiIslaeliIndiaEneo ja Uingeeza mwe Bahali HindiIlakiUajemiAislandi" + - "ItaliaJamaikaYoldaniJapaniKenyaKiigizistaniKambodiaKiibatiKomoloSant" + - "akitzi na NevisKolea KaskaziniKolea KusiniKuwaitiVisiwa vya KaymanKa" + - "zakistaniLaosiLebanoniSantalusiaLishenteniSililankaLibeliaLesotoLitw" + - "aniaLasembagiLativiaLibyaMolokoMonakoMoldovaBukiniVisiwa vya MashalM" + - "asedoniaMaliMyamaMongoliaVisiwa vya Maliana vya KaskaziniMaltinikiMa" + - "ulitaniaMontselatiMaltaMolisiModivuMalawiMeksikoMalesiaMsumbijiNamib" + - "iaNyukaledoniaNaijaKisiwa cha NolfokNaijeliaNikalagwaUholanziNolweiN" + - "epaliNauluNiueNyuzilandiOmaniPanamaPeluPolinesia ya UfalansaPapuaFil" + - "ipinoPakistaniPolandiSantapieli na MikeloniPitkailniPwetolikoUkingo " + - "wa Maghalibi na Ukanda wa Gaza wa PalestinaUlenoPalauPalagwaiKataliL" + - "iyunioniLomaniaUlusiLwandaSaudiVisiwa vya SolomonShelisheliSudaniUsw" + - "idiSingapooSantahelenaSloveniaSlovakiaSiela LeoniSamalinoSenegaliSom" + - "aliaSulinamuSao Tome na PlincipeElsavadoSiliaUswaziVisiwa vya Tulki " + - "na KaikoChadiTogoTailandiTajikistaniTokelauTimoli ya MashalikiTuluki" + - "menistaniTunisiaTongaUtulukiTlinidad na TobagoTuvaluTaiwaniTanzaniaU" + - "klainiUgandaMalekaniUlugwaiUzibekistaniVatikaniSantavisenti na Glena" + - "diniVenezuelaVisiwa vya Vilgin vya UingeezaVisiwa vya Vilgin vya Mal" + - "ekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMayotteAflika KusiniZ" + - "ambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00ae, 0x00b8, 0x00c0, - 0x00c8, 0x00cf, 0x00d5, 0x00d5, 0x00dc, 0x00e2, 0x00e9, 0x00e9, - 0x00f0, 0x00f6, 0x00fc, 0x00fc, 0x0104, 0x010c, 0x0112, 0x0118, - 0x0118, 0x0138, 0x0151, 0x0156, 0x015c, 0x0163, 0x0172, 0x0177, - 0x017f, 0x0184, 0x018c, 0x018c, 0x0195, 0x0199, 0x01a1, 0x01a1, - 0x01a1, 0x01a8, 0x01b8, 0x01c0, 0x01c0, 0x01c6, 0x01cd, 0x01d5, - // Entry 40 - 7F - 0x01e8, 0x01ef, 0x01ef, 0x01f5, 0x01fc, 0x0201, 0x0201, 0x0208, - 0x0210, 0x0218, 0x0218, 0x0218, 0x021d, 0x0221, 0x0234, 0x023e, - 0x023e, 0x0246, 0x024c, 0x0254, 0x025b, 0x0260, 0x0273, 0x0273, - 0x0278, 0x0280, 0x0289, 0x028f, 0x0293, 0x029c, 0x02a5, 0x02ab, - 0x02ab, 0x02b4, 0x02b8, 0x02c1, 0x02c7, 0x02c7, 0x02c7, 0x02cf, - 0x02d6, 0x02db, 0x02e3, 0x02e3, 0x02ec, 0x02f4, 0x02fb, 0x02fb, - 0x0300, 0x0321, 0x0326, 0x032c, 0x0334, 0x033a, 0x033a, 0x0341, - 0x0348, 0x034e, 0x0353, 0x035f, 0x0367, 0x036e, 0x0374, 0x0387, - // Entry 80 - BF - 0x0396, 0x03a2, 0x03a9, 0x03ba, 0x03c5, 0x03ca, 0x03d2, 0x03dc, - 0x03e6, 0x03ef, 0x03f6, 0x03fc, 0x0404, 0x040d, 0x0414, 0x0419, - 0x041f, 0x0425, 0x042c, 0x042c, 0x042c, 0x0432, 0x0443, 0x044c, - 0x0450, 0x0455, 0x045d, 0x045d, 0x047d, 0x0486, 0x0490, 0x049a, - 0x049f, 0x04a5, 0x04ab, 0x04b1, 0x04b8, 0x04bf, 0x04c7, 0x04ce, - 0x04da, 0x04df, 0x04f0, 0x04f8, 0x0501, 0x0509, 0x050f, 0x0515, - 0x051a, 0x051e, 0x0528, 0x052d, 0x0533, 0x0537, 0x054c, 0x0551, - 0x0559, 0x0562, 0x0569, 0x057f, 0x0588, 0x0591, 0x05c3, 0x05c8, - // Entry C0 - FF - 0x05cd, 0x05d5, 0x05db, 0x05db, 0x05e4, 0x05eb, 0x05eb, 0x05f0, - 0x05f6, 0x05fb, 0x060d, 0x0617, 0x061d, 0x0623, 0x062b, 0x0636, - 0x063e, 0x063e, 0x0646, 0x0651, 0x0659, 0x0661, 0x0668, 0x0670, - 0x0670, 0x0684, 0x068c, 0x068c, 0x0691, 0x0697, 0x0697, 0x06b0, - 0x06b5, 0x06b5, 0x06b9, 0x06c1, 0x06cc, 0x06d3, 0x06e6, 0x06f5, - 0x06fc, 0x0701, 0x0708, 0x071a, 0x0720, 0x0727, 0x072f, 0x0736, - 0x073c, 0x073c, 0x073c, 0x0744, 0x074b, 0x0757, 0x075f, 0x0778, - 0x0781, 0x079f, 0x07bd, 0x07c6, 0x07cd, 0x07dc, 0x07e1, 0x07e1, - // Entry 100 - 13F - 0x07e7, 0x07ee, 0x07fb, 0x0801, 0x0809, - }, - }, - { // ksf - "andɔrǝbǝlɔŋ bǝ kaksa bɛ táatáaŋzǝnafganistáŋantiga ri barbúdaangiyaalban" + - "íarmɛníangólaarjǝntínsamɔa a amɛrikaotricɔstralíarubaazabecánbɔsnyɛ" + - " ri hɛrsǝgɔvínbaabaadǝbaŋladɛ́cbɛljíkbukína fǝ́ asɔbulgaríbarǝ́nburu" + - "ndíbɛnǝ́nbɛɛmúdǝbrunǝ́bɔɔlívíbrɛsílbaamásbutánbotswanabɛlarisbɛlizka" + - "nadakɔngó anyɔ́nsantrafríkkɔngóswískɔtiwuárzɛ i kúkcílikamɛrúncínkol" + - "ɔmbíkɔstaríkakubakapvɛrcíprɛcɛ́kdjɛrmandyibutídanmakdɔminikdɔminik " + - "rɛpublíkaljɛríɛkwatɛǝ́ɛstoníɛjíptɛritrɛ́kpanyáɛtyɔpífínlanfíjizǝ maa" + - "lwínmikronɛ́sipɛrɛsǝ́gabɔŋkǝlɔŋ kǝ kǝtáatáaŋzǝngrɛnadǝjɔrjíguyán i p" + - "ɛrɛsǝ́gánajibraltágrínlangambíginɛ́gwadɛlúpginɛ́ ɛkwatɔrialgrɛ́kgwá" + - "tǝmalagwámginɛ́ bisɔ́guyánɔnduraskrwasíayitiɔngríindonɛsíilánisraɛ́l" + - "indízǝ ingɛrís ncɔ́m wa indiirákiráŋzǝ i glásitalíjamaíkjɔrdánjapɔ́ŋ" + - "kɛnyakigistáŋkambodjkiribátikomɔrsɛnkrǝstɔ́f ri nyɛ́vǝkorɛanɔ́rkorɛa" + - "sudkuwɛitzǝ i gankazakstáŋlaɔslibáŋsɛntlísílictɛnstɛ́nsrílaŋkalibɛry" + - "alǝsótolitwaníluksɛmbúrlɛtonílibímarɔkmonakomɔldavímadagaskazǝ i mar" + - "cálmásǝdwánmalimyanmármɔŋolízǝ maryánnɔ́rmatiníkmwaritanímɔnsɛratmal" + - "tǝmwarísmaldivǝmalawimɛksíkmalɛsímosambíknamibíkalɛdoní anyɔ́nnijɛ́r" + - "zɛ nɔ́fɔlknijɛ́ryaníkarágwakǝlɔŋ kǝ ázǝnɔrvɛjǝnɛpalnwarúniwɛ́zɛlan a" + - "nyɔ́nomanpanamapɛrúpɔlinɛsí a pɛrɛsǝ́papwazí ginɛ́ anyɔ́nfilipǝ́npak" + - "istáŋpolɔ́nsɛnpyɛr ri mikɛlɔŋpitkɛ́npɔtoríkozǝ palɛstínǝportugálpalw" + - "aparagwɛ́katárɛunyɔŋrɔmanírisírwandaarabí saodízǝ salomɔ́nsɛcɛlsudan" + - "swɛdǝsiŋapósɛntɛ́lenslovɛníslovakísyɛraleonsɛnmarǝnsɛnɛgalsomalísuri" + - "namsaotomɛ́ ri priŋsibsalvadɔrsiríswazilanzǝ tirk ri kakɔscaádtogotɛ" + - "lantadjikistaŋtokǝlaotimor anǝ á ɛsttirkmɛnistaŋtunɛsítɔŋatirkítɛrin" + - "itɛ ri tobagotuwalutɛwántanzaníukrainugandaamɛrikaurugwɛ́usbɛkistaŋw" + - "atikáŋsɛnvǝnsǝŋ ri grɛnadínwɛnǝzwɛlazǝ bɛ gɔn inɛ a ingɛríszǝ bɛ gɔn" + - " inɛ á amɛrikawyɛtnámwanwatuwalis ri futunasamɔayɛmɛnmayɔ́tafrik anǝ" + - " a sudzambízimbabwɛ́", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x002d, 0x0039, 0x004b, 0x0051, 0x0058, - 0x0060, 0x0067, 0x0067, 0x0071, 0x0082, 0x0087, 0x0090, 0x0095, - 0x0095, 0x009e, 0x00b8, 0x00c1, 0x00cd, 0x00d5, 0x00e7, 0x00ef, - 0x00f7, 0x00ff, 0x0108, 0x0108, 0x0113, 0x011b, 0x0126, 0x0126, - 0x012e, 0x0135, 0x013b, 0x013b, 0x0143, 0x014b, 0x0151, 0x0157, - 0x0157, 0x0167, 0x0172, 0x0179, 0x017e, 0x0188, 0x0192, 0x0197, - 0x01a0, 0x01a4, 0x01ad, 0x01ad, 0x01b8, 0x01bc, 0x01c3, 0x01c3, - 0x01c3, 0x01ca, 0x01d0, 0x01d8, 0x01d8, 0x01e0, 0x01e6, 0x01ee, - // Entry 40 - 7F - 0x0201, 0x0209, 0x0209, 0x0215, 0x021d, 0x0224, 0x0224, 0x022e, - 0x0235, 0x023e, 0x023e, 0x023e, 0x0245, 0x024a, 0x0256, 0x0262, - 0x0262, 0x026d, 0x0274, 0x0292, 0x029b, 0x02a2, 0x02b6, 0x02b6, - 0x02bb, 0x02c4, 0x02cc, 0x02d2, 0x02d9, 0x02e3, 0x02f7, 0x02fe, - 0x02fe, 0x0309, 0x030e, 0x031d, 0x0323, 0x0323, 0x0323, 0x032b, - 0x0332, 0x0337, 0x033e, 0x033e, 0x0348, 0x034d, 0x0356, 0x0356, - 0x035b, 0x0378, 0x037d, 0x0383, 0x038e, 0x0394, 0x0394, 0x039b, - 0x03a3, 0x03ac, 0x03b2, 0x03bc, 0x03c3, 0x03cc, 0x03d2, 0x03ee, - // Entry 80 - BF - 0x03fa, 0x0403, 0x040a, 0x0413, 0x041e, 0x0423, 0x042a, 0x0435, - 0x0443, 0x044d, 0x0455, 0x045d, 0x0465, 0x0470, 0x0478, 0x047d, - 0x0483, 0x0489, 0x0492, 0x0492, 0x0492, 0x049b, 0x04a8, 0x04b3, - 0x04b7, 0x04bf, 0x04c8, 0x04c8, 0x04d9, 0x04e1, 0x04eb, 0x04f5, - 0x04fb, 0x0502, 0x050a, 0x0510, 0x0518, 0x0520, 0x0529, 0x0530, - 0x0543, 0x054b, 0x0559, 0x0563, 0x056e, 0x0580, 0x058a, 0x0590, - 0x0596, 0x059d, 0x05ac, 0x05b0, 0x05b6, 0x05bc, 0x05d5, 0x05ee, - 0x05f8, 0x0602, 0x060a, 0x0621, 0x062a, 0x0634, 0x0644, 0x064d, - // Entry C0 - FF - 0x0652, 0x065c, 0x0661, 0x0661, 0x066b, 0x0673, 0x0673, 0x0678, - 0x067e, 0x068b, 0x0699, 0x06a0, 0x06a5, 0x06ac, 0x06b4, 0x06c0, - 0x06c9, 0x06c9, 0x06d1, 0x06db, 0x06e5, 0x06ee, 0x06f5, 0x06fc, - 0x06fc, 0x0712, 0x071b, 0x071b, 0x0720, 0x0728, 0x0728, 0x073a, - 0x073f, 0x073f, 0x0743, 0x0749, 0x0755, 0x075d, 0x076f, 0x077d, - 0x0785, 0x078b, 0x0791, 0x07a5, 0x07ab, 0x07b2, 0x07ba, 0x07c0, - 0x07c6, 0x07c6, 0x07c6, 0x07ce, 0x07d7, 0x07e3, 0x07ec, 0x0807, - 0x0813, 0x0830, 0x084d, 0x0856, 0x085d, 0x086c, 0x0872, 0x0872, - // Entry 100 - 13F - 0x0879, 0x0881, 0x0891, 0x0897, 0x08a2, - }, - }, - { // ksh - "AßensionAndorraVereinschte Arrabesche EmmirateAfjaanistahnAntigwa un Bar" + - "budaAnggwillaAlbaanijeArrmeenijeAngjoolader SödpolAjjentiinijeAmmeri" + - "kaanesch SammohaÖösterischAustraalijeArubade Ohland-EnselleAsserbaid" + - "schahnBoßnije un Herzegovinade Ensel BarbadosBangladeschBelljeBukkin" + - "na-FaaseBulljaarijeBachrainBurundidä Beninde Zint Battälmi-Ensellede" + - " BermudasBruneiBolliivijede karribbesche NederlängBrasilijede Bahama" + - "sButtaande Buvee-EnselBozwaanaWießrußlandBelizeKanadade Kokkos-Ensel" + - "ledä Konggo (Kinschasa)de Zäntraalaffrikaanesche Republikdä Konggo (" + - "Brassavill)de SchweizÄlfebeijn-Kößde Kuuk-EnselleSchiileKammeruhnSch" + - "iinaKolumbijede Klipperton-EnselKostarikaKuhbade kapvärdesche Ensell" + - "eCuraçaode Weihnaachs-EnselZüpperede TschäscheiDoütschlandde Diego-G" + - "arcia-EnselDschibuttiDänemarkDominnikade Dommenekaanesche ReppublikA" + - "lljeerijeZe’uta un MeliijaÄkwadorÄßlandÄjüpteWäß-SaharaÄritrejaSchpa" + - "anijeÄttijoopijede Europähjesche UnijonFinnlandde Fidschi-Endellede " + - "Falkland-EnselleMikroneesijede Färrör-EnselleFrankrischJabuhnJruußbr" + - "ettannijeJrenahdaJeorrjijeFranzüüsesch JujaanaJöönseiJaanaJibralltaa" + - "JröhnlandJambijaJinnehaJuadeluppÄquatorial JineejaJrieschelandSöd-Je" + - "orjie un de södlijje Botteramms-EnselleJuwatemahlaJuhamJinneha_Bißau" + - "JujaanaHongkongde Heart Ensel un de McDonald-EnselleHondurasKrowazij" + - "eHa’ittiUnjannde Kannaresche EnselleIndoneesijeIrrlandIßraälde Ensel" + - " MänIndijeBrettesche Besezunge em indesche OozejahnIrakPersijeIßland" + - "ItaalijeJöösehJammaikaJordaanijeJapanKeenijaKirrjiisijeKambodschaKir" + - "ibatide KommooreZint Kitts un NevisNood-KorejaSöd-KorejaKuweitde Kai" + - "man-EnselleKassakstahnLa’osLebbannonde Ensel Zint-LutschaLischtescht" + - "einSri LankaLibeerijaLesootoLittaueLuxemburschLätlandLibbijeMarokkoM" + - "onakkoMoldaavijeet Monteneejrode Zint-Määtes-EnselMaddajaskade Machs" + - "chall-EnselleMazedoonijeMaaliBirmaMongjoleiMakaude nöödlijje Marijan" + - "ne-EnselleMachtinikMautitaanijeMongßerratMaltaMaurizijusMallediiveMa" + - "lawiMäxikoMalaisijeMosambikNamiibijeNeuschottlandNijerde Noofok-Ense" + - "lNikaraaguaNikarahguwade NederlängNorrweejeNepallNauruNiueNeuseeland" + - "OmanPannamaPerruhFranzüüsesch PollineesijePapuwa NeujineejaFillipiin" + - "ePakistahnPoleZint Pjäär un Mikelongde Pitkärn-EnselPochtorikoPaläst" + - "inaPochtojallPallauParraguwaiKataaOzejahnije ußerhallefRehunjohnRomä" + - "änijeSärbijeRußlandRuandaSaudi Arraabijede Solomone-Ensellede Seisc" + - "hälleNoodsudahnSchweedeSingjapuurde Ensel Zint Hellenaẞloveenijede E" + - "nselle Svalbard un Jan MayenẞlovakeiSjärra LejoneSan-Marinoder Senne" + - "jallSomaalijeSürinammSödsudahnZint Tommeh un PrintschipeÄl Slavadohr" + - "Zint MaartenSürijeẞwaasilandTristan da Cunjade Enselle Turks un Kaik" + - "osder TschaddFranzüüsesche Södsee-EnselleToojoTailandTadschikistahnT" + - "okelauOß-TimorTurkmenistahnTuneesijeTonggade TörkeiTrinidad un Tobäh" + - "joTuvaluTaiwanTansanijade Ukra’iineUjandade Vereineschte Schtaate vu" + - "n Amärrika ier ußerhallef jelääje Enselschede vereineschte Schtaate " + - "vun AmmärrikaUrrujwaiUßbeekistahnder VattikahnZint Vinzänz un de Jre" + - "nadines-EnselleVenezuelade brettesche Juffer-Ensellede ammärrikahnes" + - "che Juffer-EnselleVijätnammVanuatuWallis un FutunaSammohaKosovoJämme" + - "Majottde Republik SödaffrikaSambijaSimbabwe- Jähjend onbikannt -de Ä" + - "ädAffrikaNood-AmärrikaSöhd-AmärrikaOzejahnejeWäß-AffrikaMeddelammär" + - "rikaOß-AffrikaNood-AffrikaMeddel-AffrikaSöhd-AffrikaAmmärrikader Nor" + - "de vun Amärrikade KarribikOß-AasijeSöhd-AasijeSöhd-Oß-AasijeSöhd-Eur" + - "oppade Rejjohn öm AustrahlijeMellanehsijede Rejohn vun MikronehsejeP" + - "olinehsijeAasijeMeddelaasijeWäß-AasijeEuroppaOß-EuroppaNood-EuroppaW" + - "äß-EuroppaLateinamärrika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002f, 0x003b, 0x004d, 0x0056, 0x005f, - 0x0069, 0x0071, 0x007c, 0x0088, 0x009e, 0x00aa, 0x00b5, 0x00ba, - 0x00cb, 0x00da, 0x00f1, 0x0102, 0x010d, 0x0113, 0x0121, 0x012c, - 0x0134, 0x013b, 0x0144, 0x015d, 0x0168, 0x016e, 0x0178, 0x0192, - 0x019b, 0x01a5, 0x01ac, 0x01ba, 0x01c2, 0x01cf, 0x01d5, 0x01db, - 0x01ec, 0x0202, 0x0225, 0x023c, 0x0246, 0x0256, 0x0265, 0x026c, - 0x0275, 0x027c, 0x0285, 0x0298, 0x02a1, 0x02a6, 0x02be, 0x02c6, - 0x02d9, 0x02e1, 0x02ef, 0x02fb, 0x0310, 0x031a, 0x0323, 0x032c, - // Entry 40 - 7F - 0x0349, 0x0353, 0x0366, 0x036e, 0x0376, 0x037e, 0x038a, 0x0393, - 0x039d, 0x03a9, 0x03c1, 0x03c1, 0x03c9, 0x03db, 0x03ee, 0x03fa, - 0x040d, 0x0417, 0x041d, 0x042e, 0x0436, 0x043f, 0x0455, 0x045e, - 0x0463, 0x046d, 0x0477, 0x047e, 0x0485, 0x048e, 0x04a1, 0x04ad, - 0x04dc, 0x04e7, 0x04ec, 0x04fa, 0x0501, 0x0509, 0x052e, 0x0536, - 0x053f, 0x0548, 0x054e, 0x0564, 0x056f, 0x0576, 0x057e, 0x058b, - 0x0591, 0x05ba, 0x05be, 0x05c5, 0x05cc, 0x05d4, 0x05dc, 0x05e4, - 0x05ee, 0x05f3, 0x05fa, 0x0605, 0x060f, 0x0617, 0x0622, 0x0635, - // Entry 80 - BF - 0x0640, 0x064b, 0x0651, 0x0662, 0x066d, 0x0674, 0x067d, 0x0692, - 0x06a0, 0x06a9, 0x06b2, 0x06b9, 0x06c0, 0x06cb, 0x06d3, 0x06da, - 0x06e1, 0x06e8, 0x06f2, 0x0700, 0x0716, 0x0720, 0x0735, 0x0740, - 0x0745, 0x074a, 0x0753, 0x0758, 0x0778, 0x0781, 0x078d, 0x0798, - 0x079d, 0x07a7, 0x07b1, 0x07b7, 0x07be, 0x07c7, 0x07cf, 0x07d8, - 0x07e5, 0x07ea, 0x07f9, 0x0803, 0x080e, 0x081b, 0x0824, 0x082a, - 0x082f, 0x0833, 0x083d, 0x0841, 0x0848, 0x084e, 0x0869, 0x087a, - 0x0884, 0x088d, 0x0891, 0x08a9, 0x08ba, 0x08c4, 0x08ce, 0x08d8, - // Entry C0 - FF - 0x08de, 0x08e8, 0x08ed, 0x0903, 0x090c, 0x0917, 0x091f, 0x0927, - 0x092d, 0x093c, 0x094f, 0x095d, 0x0967, 0x096f, 0x0979, 0x098e, - 0x099a, 0x09ba, 0x09c4, 0x09d2, 0x09dc, 0x09e9, 0x09f2, 0x09fb, - 0x0a05, 0x0a1f, 0x0a2c, 0x0a38, 0x0a3f, 0x0a4b, 0x0a5b, 0x0a75, - 0x0a80, 0x0a9f, 0x0aa4, 0x0aab, 0x0ab9, 0x0ac0, 0x0ac9, 0x0ad6, - 0x0adf, 0x0ae5, 0x0aef, 0x0b03, 0x0b09, 0x0b0f, 0x0b18, 0x0b26, - 0x0b2c, 0x0b76, 0x0b76, 0x0b9d, 0x0ba5, 0x0bb2, 0x0bbf, 0x0be5, - 0x0bee, 0x0c0a, 0x0c2d, 0x0c37, 0x0c3e, 0x0c4e, 0x0c55, 0x0c5b, - // Entry 100 - 13F - 0x0c61, 0x0c67, 0x0c7e, 0x0c85, 0x0c8d, 0x0ca3, 0x0cab, 0x0cb2, - 0x0cc0, 0x0ccf, 0x0cd9, 0x0ce6, 0x0cf6, 0x0d01, 0x0d0d, 0x0d1b, - 0x0d28, 0x0d32, 0x0d49, 0x0d54, 0x0d5e, 0x0d6a, 0x0d7a, 0x0d87, - 0x0da1, 0x0dad, 0x0dc7, 0x0dd2, 0x0dd8, 0x0de4, 0x0df0, 0x0df7, - 0x0e02, 0x0e0e, 0x0e1b, 0x0e1b, 0x0e2a, - }, - }, - { // kw - "Rywvaneth Unys", - []uint16{ // 84 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000e, - }, - }, - { // ky - kyRegionStr, - kyRegionIdx, - }, - { // lag - "AndóraɄtemi wa KɨaráabuAfuganisitáaniAntigúua na BaribúudaAnguíilaAlubán" + - "iaAriméniaAngóolaAjentíinaSamóoa ya Amerɨ́kaÁusitiriaAusiteréeliaArú" + - "ubaAzabajáaniBósiniaBabadóosiBangaladéeshiɄbeligíijiBukinafáasoBulig" + - "aríaBaharéeniBurúundiBeníiniBerimúudaBurunéeiBolíviaBrasíiliBaháamaB" + - "utáaniBotiswáanaBelarúusiBelíiseKánadaJamuhúuri ya Kɨdemokurasía ya " + - "KóongoJuhúuri ya Afɨrɨka ya katɨ katɨKóongoUswíisiIvori KositiVisíiw" + - "a vya KúukuChíileKamerúuniChíinaKolómbiaKósita Rɨ́ɨkaKyúubaKepuvéede" + - "KupuróosiJamuhúuri ya ChéekiɄjerumáaniJibúutiDenimakiDomínɨkaJamuhúu" + - "ri ya DominɨkaAlijériaÍkwadoEstoníaMísiriEritereaHisipániaɄhabéeshiU" + - "fíiniFíijiVisíiwa vya FakulandiMikironésiaɄfaráansaGabóoniɄɨngeréesa" + - "GirenáadaJójiaGwiyáana yʉ ɄfaráansaGáanaJiburálitaGiriniláandiGámbia" + - "GíineGwadelúupeGíine IkwéetaUgiríkiGwatemáalaGwaniGíine BisáauGuyáan" + - "aHonduráasiKoréshiaHaíitiHungáriaIndonésiaAyaláandiIsiraéeliÍndiaƗsɨ" + - " yʉ Ʉɨngeréesa irivii ra HíindiIráakiɄajéemiAisiláandiItáliaJamáikaJ" + - "ódaniJapáaniKéenyaKirigisitáaniKambódiaKiribáatiKomóoroMʉtakatíifu " + - "kitisi na NevíisiKoréa yʉ ʉtʉrʉkoKoréa ya SaameKʉwáitiVisíiwa vya Ka" + - "yimaniKazakasitáaniLaóosiLebanóoniMʉtakatíifu LusíiaLishentéeniSiril" + - "áankaLiibériaLesóotoLisuániaLasembáagiLativiaLíbiaMoróokoMonáakoMol" + - "idóovaBukíiniVisíiwa vya MarisháaliMasedóniaMáaliMiáamaMongóliaVisiw" + - "a vya Mariana vya KaskaziniMaritiníikiMoritániaMonteráatiMálitaMoríi" + - "siModíivuMaláawiMekisikoMaleísiaMusumbíijiNamíbiaKaledónia IfyaNíija" + - "Kisíiwa cha NofifóokiNiijériaNikarágʉaɄholáanziNorweNepáaliNaúuruNiú" + - "ueNyuzílandiÓmaniPanáamaPéeruPolinésia yʉ ɄfaráansaPapúuaUfilipíinoP" + - "akisitáaniPólandiMʉtakatíifu Peéteri na MɨkaéeliPatikaíriniPwetorɨ́ɨ" + - "koMweemberera wa kʉmweeri wa GáazaɄréenoPaláauParaguáaiKatáariReyuni" + - "óoniRomaníiaUrúusiRwáandaSaudíia ArabíiaVisíiwa vya SolomóoniShelis" + - "héeliSudáaniUswíidiSingapooMʉtakatíifu HeléenaSulovéniaSulováakiaSer" + - "aleóoniSamaríinoSenegáaliSomáliaSurináamuSao Tóome na PirinsipeElisa" + - "livadoSíriaɄswáaziVisíiwa vya Turíiki na KaíikoCháadiTóogoTáilandiTa" + - "jikisitáaniTokeláauTimóori yi ItʉʉmbaUturukimenisitáaniTunísiaTóonga" + - "UturúukiTiriníida ya TobáagoTuváaluTaiwáaniTaansaníaɄkɨréeniɄgáandaA" + - "merɨkaUruguáaiUsibekisitáaniVatikáaniMʉtakatíifu Viséenti na Gernadí" + - "iniVenezuéelaVisíiwa vya Vigíini vya ɄɨngeréesaVisíiwa vya Vigíini v" + - "ya Amerɨ́kaVietináamuVanuáatuWalíisi na FutúunaSamóoaYémeniMayóoteAf" + - "ɨrɨka ya SaameSámbiaSimbáabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x001b, 0x002a, 0x0041, 0x004a, 0x0053, - 0x005c, 0x0064, 0x0064, 0x006e, 0x0083, 0x008d, 0x009a, 0x00a1, - 0x00a1, 0x00ac, 0x00b4, 0x00be, 0x00cc, 0x00d8, 0x00e4, 0x00ee, - 0x00f8, 0x0101, 0x0109, 0x0109, 0x0113, 0x011c, 0x0124, 0x0124, - 0x012d, 0x0135, 0x013d, 0x013d, 0x0148, 0x0152, 0x015a, 0x0161, - 0x0161, 0x0189, 0x01ad, 0x01b4, 0x01bc, 0x01c8, 0x01db, 0x01e2, - 0x01ec, 0x01f3, 0x01fc, 0x01fc, 0x020d, 0x0214, 0x021e, 0x021e, - 0x021e, 0x0228, 0x023d, 0x0249, 0x0249, 0x0251, 0x0259, 0x0263, - // Entry 40 - 7F - 0x027a, 0x0283, 0x0283, 0x028a, 0x0292, 0x0299, 0x0299, 0x02a1, - 0x02ab, 0x02b6, 0x02b6, 0x02b6, 0x02bd, 0x02c3, 0x02d9, 0x02e5, - 0x02e5, 0x02f0, 0x02f8, 0x0305, 0x030f, 0x0315, 0x032e, 0x032e, - 0x0334, 0x033f, 0x034c, 0x0353, 0x0359, 0x0364, 0x0373, 0x037b, - 0x037b, 0x0386, 0x038b, 0x0399, 0x03a1, 0x03a1, 0x03a1, 0x03ac, - 0x03b5, 0x03bc, 0x03c5, 0x03c5, 0x03cf, 0x03d9, 0x03e3, 0x03e3, - 0x03e9, 0x0412, 0x0419, 0x0422, 0x042d, 0x0434, 0x0434, 0x043c, - 0x0443, 0x044b, 0x0452, 0x0460, 0x0469, 0x0473, 0x047b, 0x049b, - // Entry 80 - BF - 0x04b0, 0x04bf, 0x04c8, 0x04dd, 0x04eb, 0x04f2, 0x04fc, 0x0511, - 0x051d, 0x0528, 0x0531, 0x0539, 0x0542, 0x054d, 0x0554, 0x055a, - 0x0562, 0x056a, 0x0574, 0x0574, 0x0574, 0x057c, 0x0594, 0x059e, - 0x05a4, 0x05ab, 0x05b4, 0x05b4, 0x05d4, 0x05e0, 0x05ea, 0x05f5, - 0x05fc, 0x0604, 0x060c, 0x0614, 0x061c, 0x0625, 0x0630, 0x0638, - 0x0647, 0x064d, 0x0664, 0x066d, 0x0678, 0x0683, 0x0688, 0x0690, - 0x0697, 0x069d, 0x06a8, 0x06ae, 0x06b6, 0x06bc, 0x06d6, 0x06dd, - 0x06e8, 0x06f4, 0x06fc, 0x0720, 0x072c, 0x073a, 0x075c, 0x0764, - // Entry C0 - FF - 0x076b, 0x0775, 0x077d, 0x077d, 0x0788, 0x0791, 0x0791, 0x0798, - 0x07a0, 0x07b1, 0x07c8, 0x07d4, 0x07dc, 0x07e4, 0x07ec, 0x0802, - 0x080c, 0x080c, 0x0817, 0x0822, 0x082c, 0x0836, 0x083e, 0x0848, - 0x0848, 0x085f, 0x086a, 0x086a, 0x0870, 0x0879, 0x0879, 0x0899, - 0x08a0, 0x08a0, 0x08a6, 0x08af, 0x08bd, 0x08c6, 0x08db, 0x08ee, - 0x08f6, 0x08fd, 0x0906, 0x091c, 0x0924, 0x092d, 0x0937, 0x0942, - 0x094b, 0x094b, 0x094b, 0x0953, 0x095c, 0x096b, 0x0975, 0x099b, - 0x09a6, 0x09cd, 0x09f1, 0x09fc, 0x0a05, 0x0a19, 0x0a20, 0x0a20, - // Entry 100 - 13F - 0x0a27, 0x0a2f, 0x0a41, 0x0a48, 0x0a52, - }, - }, - { // lb - "AscensionAndorraVereenegt Arabesch EmiraterAfghanistanAntigua a BarbudaA" + - "nguillaAlbanienArmenienAngolaAntarktisArgentinienAmerikanesch-SamoaÉ" + - "isträichAustralienArubaÅlandinselenAserbaidschanBosnien an Herzegowi" + - "naBarbadosBangladeschBelschBurkina FasoBulgarienBahrainBurundiBeninS" + - "aint-BarthélemyBermudaBruneiBolivienKaribescht HollandBrasilienBaham" + - "asBhutanBouvetinselBotsuanaWäissrusslandBelizeKanadaKokosinselenKong" + - "o-KinshasaZentralafrikanesch RepublikKongo-BrazzavilleSchwäizCôte d’" + - "IvoireCookinselenChileKamerunChinaKolumbienClipperton-InselCosta Ric" + - "aKubaKap VerdeCuraçaoChrëschtdagsinselZypernTschechienDäitschlandDie" + - "go GarciaDschibutiDänemarkDominicaDominikanesch RepublikAlgerienCeut" + - "a a MelillaEcuadorEstlandEgyptenWestsaharaEritreaSpanienEthiopienEur" + - "opäesch UniounFinnlandFidschiFalklandinselenMikronesienFäröerFrankrä" + - "ichGabunGroussbritannienGrenadaGeorgienGuayaneGuernseyGhanaGibraltar" + - "GrönlandGambiaGuineaGuadeloupeEquatorialguineaGriichelandSüdgeorgien" + - " an déi Südlech SandwichinselenGuatemalaGuamGuinea-BissauGuyanaSpezi" + - "alverwaltungszon Hong KongHeard- a McDonald-InselenHondurasKroatienH" + - "aitiUngarnKanaresch InselenIndonesienIrlandIsraelIsle of ManIndienBr" + - "itescht Territorium am Indeschen OzeanIrakIranIslandItalienJerseyJam" + - "aikaJordanienJapanKeniaKirgisistanKambodschaKiribatiKomorenSt. Kitts" + - " an NevisNordkoreaSüdkoreaKuwaitKaimaninselenKasachstanLaosLibanonSt" + - ". LuciaLiechtensteinSri LankaLiberiaLesothoLitauenLëtzebuergLettland" + - "LibyenMarokkoMonacoMoldawienMontenegroSt. MartinMadagaskarMarshallin" + - "selenMazedonienMaliMyanmarMongoleiSpezialverwaltungszon MacauNërdlec" + - "h MarianenMartiniqueMauretanienMontserratMaltaMauritiusMaldivenMalaw" + - "iMexikoMalaysiaMosambikNamibiaNeikaledonienNigerNorfolkinselNigeriaN" + - "icaraguaHollandNorwegenNepalNauruNiueNeiséilandOmanPanamaPeruFranséi" + - "sch-PolynesienPapua-NeiguineaPhilippinnenPakistanPolenSt. Pierre a M" + - "iquelonPitcairninselenPuerto RicoPalestinensesch AutonomiegebidderPo" + - "rtugalPalauParaguayKatarBaussecht OzeanienRéunionRumänienSerbienRuss" + - "landRuandaSaudi-ArabienSalomonenSeychellenSudanSchwedenSingapurSt. H" + - "elenaSlowenienSvalbard a Jan MayenSlowakeiSierra LeoneSan MarinoSene" + - "galSomaliaSurinameSüdsudanSão Tomé a PríncipeEl SalvadorSint Maarten" + - "SyrienSwasilandTristan da CunhaTurks- a CaicosinselenTschadFranséisc" + - "h Süd- an AntarktisgebidderTogoThailandTadschikistanTokelauOsttimorT" + - "urkmenistanTunesienTongaTierkeiTrinidad an TobagoTuvaluTaiwanTansani" + - "aUkrainUgandaAmerikanesch-OzeanienVereenegt StaatenUruguayUsbekistan" + - "VatikanstadSt. Vincent an d’GrenadinnenVenezuelaBritesch Jofferenins" + - "elenAmerikanesch JoffereninselenVietnamVanuatuWallis a FutunaSamoaKo" + - "sovoJemenMayotteSüdafrikaSambiaSimbabweOnbekannt RegiounWeltAfrikaNo" + - "rdamerikaSüdamerikaOzeanienWestafrikaMëttelamerikaOstafrikaNordafrik" + - "aZentralafrikaSüdlecht AfrikaAmerikaNërdlecht AmerikaKaribikOstasien" + - "SüdasienSüdostasienSüdeuropaAustralien an NeiséilandMelanesienMikron" + - "esescht InselgebittPolynesienAsienZentralasienWestasienEuropaOsteuro" + - "paNordeuropaWesteuropaLatäinamerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002b, 0x0036, 0x0047, 0x004f, 0x0057, - 0x005f, 0x0065, 0x006e, 0x0079, 0x008b, 0x0096, 0x00a0, 0x00a5, - 0x00b2, 0x00bf, 0x00d5, 0x00dd, 0x00e8, 0x00ee, 0x00fa, 0x0103, - 0x010a, 0x0111, 0x0116, 0x0127, 0x012e, 0x0134, 0x013c, 0x014e, - 0x0157, 0x015e, 0x0164, 0x016f, 0x0177, 0x0185, 0x018b, 0x0191, - 0x019d, 0x01ab, 0x01c6, 0x01d7, 0x01df, 0x01ef, 0x01fa, 0x01ff, - 0x0206, 0x020b, 0x0214, 0x0224, 0x022e, 0x0232, 0x023b, 0x0243, - 0x0255, 0x025b, 0x0265, 0x0271, 0x027d, 0x0286, 0x028f, 0x0297, - // Entry 40 - 7F - 0x02ad, 0x02b5, 0x02c4, 0x02cb, 0x02d2, 0x02d9, 0x02e3, 0x02ea, - 0x02f1, 0x02fa, 0x030c, 0x030c, 0x0314, 0x031b, 0x032a, 0x0335, - 0x033d, 0x0348, 0x034d, 0x035d, 0x0364, 0x036c, 0x0373, 0x037b, - 0x0380, 0x0389, 0x0392, 0x0398, 0x039e, 0x03a8, 0x03b8, 0x03c3, - 0x03f0, 0x03f9, 0x03fd, 0x040a, 0x0410, 0x042f, 0x0448, 0x0450, - 0x0458, 0x045d, 0x0463, 0x0474, 0x047e, 0x0484, 0x048a, 0x0495, - 0x049b, 0x04c3, 0x04c7, 0x04cb, 0x04d1, 0x04d8, 0x04de, 0x04e5, - 0x04ee, 0x04f3, 0x04f8, 0x0503, 0x050d, 0x0515, 0x051c, 0x052e, - // Entry 80 - BF - 0x0537, 0x0540, 0x0546, 0x0553, 0x055d, 0x0561, 0x0568, 0x0571, - 0x057e, 0x0587, 0x058e, 0x0595, 0x059c, 0x05a7, 0x05af, 0x05b5, - 0x05bc, 0x05c2, 0x05cb, 0x05d5, 0x05df, 0x05e9, 0x05f8, 0x0602, - 0x0606, 0x060d, 0x0615, 0x0630, 0x0642, 0x064c, 0x0657, 0x0661, - 0x0666, 0x066f, 0x0677, 0x067d, 0x0683, 0x068b, 0x0693, 0x069a, - 0x06a7, 0x06ac, 0x06b8, 0x06bf, 0x06c8, 0x06cf, 0x06d7, 0x06dc, - 0x06e1, 0x06e5, 0x06f0, 0x06f4, 0x06fa, 0x06fe, 0x0714, 0x0723, - 0x072f, 0x0737, 0x073c, 0x0751, 0x0760, 0x076b, 0x078c, 0x0794, - // Entry C0 - FF - 0x0799, 0x07a1, 0x07a6, 0x07b8, 0x07c0, 0x07c9, 0x07d0, 0x07d8, - 0x07de, 0x07eb, 0x07f4, 0x07fe, 0x0803, 0x080b, 0x0813, 0x081d, - 0x0826, 0x083a, 0x0842, 0x084e, 0x0858, 0x085f, 0x0866, 0x086e, - 0x0877, 0x088d, 0x0898, 0x08a4, 0x08aa, 0x08b3, 0x08c3, 0x08d9, - 0x08df, 0x0905, 0x0909, 0x0911, 0x091e, 0x0925, 0x092d, 0x0939, - 0x0941, 0x0946, 0x094d, 0x095f, 0x0965, 0x096b, 0x0973, 0x0979, - 0x097f, 0x0994, 0x0994, 0x09a5, 0x09ac, 0x09b6, 0x09c1, 0x09df, - 0x09e8, 0x0a00, 0x0a1c, 0x0a23, 0x0a2a, 0x0a39, 0x0a3e, 0x0a44, - // Entry 100 - 13F - 0x0a49, 0x0a50, 0x0a5a, 0x0a60, 0x0a68, 0x0a79, 0x0a7d, 0x0a83, - 0x0a8e, 0x0a99, 0x0aa1, 0x0aab, 0x0ab9, 0x0ac2, 0x0acc, 0x0ad9, - 0x0ae9, 0x0af0, 0x0b02, 0x0b09, 0x0b11, 0x0b1a, 0x0b26, 0x0b30, - 0x0b49, 0x0b53, 0x0b6c, 0x0b76, 0x0b7b, 0x0b87, 0x0b90, 0x0b96, - 0x0b9f, 0x0ba9, 0x0bb3, 0x0bb3, 0x0bc1, - }, - }, - { // lg - "AndoraEmireetiAfaganisitaniAntigwa ne BarabudaAngwilaAlibaniyaArameniyaA" + - "ngolaArigentinaSamowa omumerikaAwusituriyaAwusitureliyaArubaAzerebay" + - "ijaaniBoziniya HezegovinaBarabadosiBangaladesiBubirigiBurukina FasoB" + - "ulugariyaBaareeniBurundiBeniniBeremudaBurunayiBoliviyaBuraziiriBaham" + - "asiButaaniBotiswanaBelarusiBelizeKanadaKongo - ZayireLipubulika eya " + - "SenturafirikiKongoSwitizirandiKote DivwaBizinga bya KkukiCileKameruu" + - "niCayinaKolombyaKosita RikaCubaBizinga by’e Kepu VerediSipuriyaLipub" + - "ulika ya CeekaBudaakiJjibutiDenimaakaDominikaLipubulika ya DominikaA" + - "ligeryaEkwadoEsitoniyaMisiriEritureyaSipeyiniEsyopyaFinilandiFijiBiz" + - "inga by’eFalikalandiMikuronezyaBufalansaGaboniBungerezaGurenadaGyogy" + - "aGuyana enfalansaGanaGiburalitaGurenelandiGambyaGiniGwadalupeGayana " + - "ey’oku ekwetaBugereeki/BuyonaaniGwatemalaGwamuGini-BisawuGayanaHundu" + - "rasiKurowesyaHayitiHangareYindonezyaAyalandiYisirayeriBuyindiBizinga" + - " by’eCagoYiraakaYiraaniAyisirandiYitaleJamayikaYorodaniJapaniKenyaKi" + - "rigizisitaaniKambodyaKiribatiBizinga by’eKomoroSenti Kitisi ne Nevis" + - "iKoreya ey’omumambukaKoreya ey’omumaserengetaKuwetiBizinga ebya Kayi" + - "maaniKazakisitaaniLawosiLebanoniSenti LuciyaLicitensitayiniSirilanka" + - "LiberyaLesosoLisuwenyaLukisembaagaLativyaLibyaMorokoMonakoMolodovaMa" + - "dagasikaBizinga bya MarisoMasedoniyaMaliMyanimaMongoliyaBizinga bya " + - "Mariyana eby’omumambukaMaritiniikiMawulitenyaMonteseraatiMalitaMawul" + - "isyasiBizinga by’eMalidiveMalawiMekisikoMalezyaMozambiikiNamibiyaKal" + - "edonya mupyaNijeKizinga ky’eNorofokoNayijeryaNikaraguwaHolandiNoweNe" + - "paloNawuruNiyuweNiyuziirandiOmaaniPanamaPeruPolinesiya enfalansaPapw" + - "a NyuginiBizinga bya FiripinoPakisitaaniPolandiSenti Piyere ne Mikel" + - "oniPitikeeniPotorikoPalesitayiniPotugaaliPalawuParagwayiKataaLeyunyo" + - "niLomaniyaLasaRwandaSawudarebya - BuwarabuBizanga by’eSolomooniSeser" + - "eSudaaniSwideniSingapowaSenti HerenaSirovenyaSirovakyaSiyeralewoneSa" + - "nimarinoSenegaaloSomaliyaSurinaamuSanitome ne PurincipeEl salivadoSi" + - "riyaSwazirandiBizinga by’eTaaka ne KayikosiCaadiTogoTayirandiTajikis" + - "itaaniTokelawuTimowaTakimenesitaaniTunisyaTongaTtakeTurindaadi ne To" + - "bagoTuvaluTayiwaniTanzaniyaYukurayineYugandaAmerikaWurugwayiWuzibeki" + - "sitaaniVatikaaniSenti Vinsenti ne GurendadiiniVenzweraBizinga ebya V" + - "irigini ebitwalibwa BungerezaBizinga bya Virigini eby’AmerikaVyetina" + - "amuVanawuwatuWalisi ne FutunaSamowaYemeniMayotteSawusafirikaZambyaZi" + - "mbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x000e, 0x001b, 0x002e, 0x0035, 0x003e, - 0x0047, 0x004d, 0x004d, 0x0057, 0x0067, 0x0072, 0x007f, 0x0084, - 0x0084, 0x0092, 0x00a5, 0x00af, 0x00ba, 0x00c2, 0x00cf, 0x00d9, - 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f6, 0x00fe, 0x0106, 0x0106, - 0x010f, 0x0117, 0x011e, 0x011e, 0x0127, 0x012f, 0x0135, 0x013b, - 0x013b, 0x0149, 0x0165, 0x016a, 0x0176, 0x0180, 0x0191, 0x0195, - 0x019e, 0x01a4, 0x01ac, 0x01ac, 0x01b7, 0x01bb, 0x01d5, 0x01d5, - 0x01d5, 0x01dd, 0x01f0, 0x01f7, 0x01f7, 0x01fe, 0x0207, 0x020f, - // Entry 40 - 7F - 0x0225, 0x022d, 0x022d, 0x0233, 0x023c, 0x0242, 0x0242, 0x024b, - 0x0253, 0x025a, 0x025a, 0x025a, 0x0263, 0x0267, 0x0280, 0x028b, - 0x028b, 0x0294, 0x029a, 0x02a3, 0x02ab, 0x02b1, 0x02c1, 0x02c1, - 0x02c5, 0x02cf, 0x02da, 0x02e0, 0x02e4, 0x02ed, 0x0303, 0x0316, - 0x0316, 0x031f, 0x0324, 0x032f, 0x0335, 0x0335, 0x0335, 0x033e, - 0x0347, 0x034d, 0x0354, 0x0354, 0x035e, 0x0366, 0x0370, 0x0370, - 0x0377, 0x0389, 0x0390, 0x0397, 0x03a1, 0x03a7, 0x03a7, 0x03af, - 0x03b7, 0x03bd, 0x03c2, 0x03d1, 0x03d9, 0x03e1, 0x03f5, 0x040b, - // Entry 80 - BF - 0x0421, 0x043b, 0x0441, 0x0457, 0x0464, 0x046a, 0x0472, 0x047e, - 0x048d, 0x0496, 0x049d, 0x04a3, 0x04ac, 0x04b8, 0x04bf, 0x04c4, - 0x04ca, 0x04d0, 0x04d8, 0x04d8, 0x04d8, 0x04e2, 0x04f4, 0x04fe, - 0x0502, 0x0509, 0x0512, 0x0512, 0x0537, 0x0542, 0x054d, 0x0559, - 0x055f, 0x056a, 0x0580, 0x0586, 0x058e, 0x0595, 0x059f, 0x05a7, - 0x05b6, 0x05ba, 0x05d0, 0x05d9, 0x05e3, 0x05ea, 0x05ee, 0x05f4, - 0x05fa, 0x0600, 0x060c, 0x0612, 0x0618, 0x061c, 0x0630, 0x063d, - 0x0651, 0x065c, 0x0663, 0x067b, 0x0684, 0x068c, 0x0698, 0x06a1, - // Entry C0 - FF - 0x06a7, 0x06b0, 0x06b5, 0x06b5, 0x06be, 0x06c6, 0x06c6, 0x06ca, - 0x06d0, 0x06e6, 0x06fd, 0x0703, 0x070a, 0x0711, 0x071a, 0x0726, - 0x072f, 0x072f, 0x0738, 0x0744, 0x074e, 0x0757, 0x075f, 0x0768, - 0x0768, 0x077d, 0x0788, 0x0788, 0x078e, 0x0798, 0x0798, 0x07b7, - 0x07bc, 0x07bc, 0x07c0, 0x07c9, 0x07d6, 0x07de, 0x07e4, 0x07f3, - 0x07fa, 0x07ff, 0x0804, 0x0818, 0x081e, 0x0826, 0x082f, 0x0839, - 0x0840, 0x0840, 0x0840, 0x0847, 0x0850, 0x085f, 0x0868, 0x0886, - 0x088e, 0x08b9, 0x08db, 0x08e5, 0x08ef, 0x08ff, 0x0905, 0x0905, - // Entry 100 - 13F - 0x090b, 0x0912, 0x091e, 0x0924, 0x092c, - }, - }, - { // lkt - "Uŋčíyapi MakȟóčhePȟečhókaŋhaŋska MakȟóčheIyášiča MakȟóčheSpayólaȟče Makȟ" + - "óčheKisúŋla MakȟóčheSpayóla MakȟóčheMílahaŋska TȟamákȟočheMakȟásito" + - "mniHásapa MakȟáwitaKhéya WítaHazíla MakȟáwitaWašíču Makȟáwita", - []uint16{ // 288 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, 0x0037, - 0x0037, 0x0037, 0x0037, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - // Entry 40 - 7F - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, - 0x0066, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - // Entry 80 - BF - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, - 0x007b, 0x007b, 0x007b, 0x007b, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - // Entry C0 - FF - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, 0x008f, - 0x008f, 0x008f, 0x008f, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, - // Entry 100 - 13F - 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00ab, 0x00b9, 0x00cc, - 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, 0x00cc, - 0x00cc, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00d8, - 0x00d8, 0x00d8, 0x00d8, 0x00d8, 0x00eb, 0x00eb, 0x00eb, 0x0100, - }, - }, - { // ln - "AndorɛLɛmila alaboAfiganisitáAntiga mpé BarbudaAngiyɛAlibaniAmɛniAngólaA" + - "ntarctiqueArizantinɛSamoa ya AmerikiOtilisiOsitáliArubaAzɛlɛbaizáBos" + - "ini mpé HezegovineBarɛbadɛBengalidɛsiBelezikiBukina FasoBiligariBahr" + - "ɛnɛBurundiBenɛBermudaBrineyiBoliviBrezílɛBahamasɛButániBotswanaByel" + - "orisiBelizɛKanadaRepublíki ya Kongó DemokratíkiRepibiki ya Afríka ya" + - " KátiKongoSwisɛKotídivualɛBisanga bya KookɛSíliKamɛruneSinɛKolombiKo" + - "sitarikaKibaBisanga bya KapevɛrɛSípɛlɛShekiaAlemaniDzibutiDanɛmarike" + - "DomínikeRepibiki ya DomínikɛAlizɛriEkwatɛ́lɛEsitoniEzípiteElitelɛEsi" + - "panyeEtsíopiFilandɛFidziBisanga bya MaluniMikroneziFalánsɛGabɔAngɛlɛ" + - "tɛ́lɛGelenadɛZorziGiyanɛ ya FalánsɛGuerneseyGanaZibatalɛGowelandeGam" + - "biGinɛGwadɛlupɛGinɛ́kwatɛ́lɛGelekiÎles de Géorgie du Sud et Sandwich" + - " du SudGwatémalaGwamɛGinɛbisauGiyaneIle Heard et Iles McDonaldOndura" + - "sɛKrowasiAyitiOngiliIndoneziIrelandɛIsirayelɛÍndɛMabelé ya Angɛlɛtɛ́" + - "lɛ na mbú ya IndiyaIrakiIrâIsilandɛItaliZamaikiZɔdaniZapɔKenyaKigizi" + - "sitáKambodzaKiribatiKomorɛSántu krístofe mpé Nevɛ̀sKorɛ ya nɔ́rdiKor" + - "ɛ ya súdiKowetiBisanga bya KayímaKazakisitáLawosiLibáSántu lisiLish" + - "ɛteniSirilankaLibériyaLesotoLitwaniLikisambuluLetoniLibíMarokɛMonak" + - "oMolidaviMonténégroMadagasikariBisanga bya MarishalɛMasedwanɛMalíBir" + - "manieMongolíBisanga bya Marianɛ ya nɔ́rdiMartinikiMoritaniMɔseraMali" + - "tɛMorisɛMadívɛMalawiMeksikeMaleziMozambíkiNamibiKaledoni ya sikaNizɛ" + - "rɛEsanga NorfokɛNizeryaNikaragwaOlandɛNorivezɛNepálɛNauruNyuéZelandɛ" + - " ya sikaOmánɛPanamaPéruPolinezi ya FalánsɛPapwazi Ginɛ ya sikaFilipi" + - "nɛPakisitáPoloniSántu pététo mpé MikelɔPikairniPɔtorikoPalɛsinePutúl" + - "ugɛsiPalauPalagweiKatariLenyoRomaniSerbieRisíRwandaAlabi SawuditɛBis" + - "anga SolomɔSɛshɛlɛSudáSwédɛSingapurɛSántu eleniSiloveniSilovakiSiera" + - " LeonɛSántu MarinɛSenegalɛSomaliSurinamɛSao Tomé mpé PresipɛSavadɔrɛ" + - "SiríSwazilandiBisanga bya Turki mpé KaikoTsádiTerres australes et an" + - "tarctiques françaisesTogoTailandɛTazikisitáTokelauTimorɛ ya MoniɛlɛT" + - "ikɛménisitáTiniziTongaTilikiTinidadɛ mpé TobagoTuvaluTaiwaninTanzani" + - "IkrɛniUgandaAmerikiIrigweiUzibɛkisitáVatikáSántu vesá mpé Gelenadinɛ" + - "VenézuelaBisanga bya Vierzi ya Angɛlɛtɛ́lɛBisanga bya Vierzi ya Amer" + - "ikiViyetinamɛVanuatuWalisɛ mpé FutunaSamoaYemɛnɛMayotɛAfríka ya Súdi" + - "ZambiZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0014, 0x0020, 0x0033, 0x003a, 0x0041, - 0x0047, 0x004e, 0x0059, 0x0064, 0x0074, 0x007b, 0x0083, 0x0088, - 0x0088, 0x0095, 0x00ab, 0x00b5, 0x00c1, 0x00c9, 0x00d4, 0x00dc, - 0x00e5, 0x00ec, 0x00f1, 0x00f1, 0x00f8, 0x00ff, 0x0105, 0x0105, - 0x010e, 0x0117, 0x011e, 0x011e, 0x0126, 0x012f, 0x0136, 0x013c, - 0x013c, 0x015d, 0x0179, 0x017e, 0x0184, 0x0191, 0x01a3, 0x01a8, - 0x01b1, 0x01b6, 0x01bd, 0x01bd, 0x01c7, 0x01cb, 0x01e1, 0x01e1, - 0x01e1, 0x01ea, 0x01f0, 0x01f7, 0x01f7, 0x01fe, 0x0209, 0x0212, - // Entry 40 - 7F - 0x0228, 0x0230, 0x0230, 0x023c, 0x0243, 0x024b, 0x024b, 0x0253, - 0x025b, 0x0263, 0x0263, 0x0263, 0x026b, 0x0270, 0x0282, 0x028b, - 0x028b, 0x0294, 0x0299, 0x02a9, 0x02b2, 0x02b7, 0x02cb, 0x02d4, - 0x02d8, 0x02e1, 0x02ea, 0x02ef, 0x02f4, 0x02ff, 0x0311, 0x0317, - 0x0342, 0x034c, 0x0352, 0x035c, 0x0362, 0x0362, 0x037c, 0x0385, - 0x038c, 0x0391, 0x0397, 0x0397, 0x039f, 0x03a8, 0x03b2, 0x03b2, - 0x03b8, 0x03e5, 0x03ea, 0x03ee, 0x03f7, 0x03fc, 0x03fc, 0x0403, - 0x040a, 0x040f, 0x0414, 0x041f, 0x0427, 0x042f, 0x0436, 0x0454, - // Entry 80 - BF - 0x0465, 0x0473, 0x0479, 0x048c, 0x0497, 0x049d, 0x04a2, 0x04ad, - 0x04b7, 0x04c0, 0x04c9, 0x04cf, 0x04d6, 0x04e1, 0x04e7, 0x04ec, - 0x04f3, 0x04f9, 0x0501, 0x050d, 0x050d, 0x0519, 0x052f, 0x0539, - 0x053e, 0x0546, 0x054e, 0x054e, 0x056e, 0x0577, 0x057f, 0x0586, - 0x058d, 0x0594, 0x059c, 0x05a2, 0x05a9, 0x05af, 0x05b9, 0x05bf, - 0x05cf, 0x05d7, 0x05e6, 0x05ed, 0x05f6, 0x05fd, 0x0606, 0x060e, - 0x0613, 0x0618, 0x0628, 0x062f, 0x0635, 0x063a, 0x064f, 0x0664, - 0x066d, 0x0676, 0x067c, 0x0698, 0x06a0, 0x06a9, 0x06b2, 0x06be, - // Entry C0 - FF - 0x06c3, 0x06cb, 0x06d1, 0x06d1, 0x06d6, 0x06dc, 0x06e2, 0x06e7, - 0x06ed, 0x06fc, 0x070b, 0x0715, 0x071a, 0x0721, 0x072b, 0x0737, - 0x073f, 0x073f, 0x0747, 0x0753, 0x0761, 0x076a, 0x0770, 0x0779, - 0x0779, 0x0790, 0x079a, 0x079a, 0x079f, 0x07a9, 0x07a9, 0x07c5, - 0x07cb, 0x07f7, 0x07fb, 0x0804, 0x080f, 0x0816, 0x082a, 0x0839, - 0x083f, 0x0844, 0x084a, 0x085f, 0x0865, 0x086d, 0x0874, 0x087b, - 0x0881, 0x0881, 0x0881, 0x0888, 0x088f, 0x089c, 0x08a3, 0x08c0, - 0x08ca, 0x08f0, 0x090d, 0x0918, 0x091f, 0x0932, 0x0937, 0x0937, - // Entry 100 - 13F - 0x093f, 0x0946, 0x0956, 0x095b, 0x0963, - }, - }, - { // lo - loRegionStr, - loRegionIdx, - }, - { // lrc - "بئرئزیلچینآلمانفأرانسەبیریتانیا گأپھئنئیتالیاجاپوٙنروٙسیەڤولاتیا یأکاگئر" + - "تەراساگە نادیاردونیائفریقائمریکا شومالیئمریکا ھارگەھوم پئڤأند جأھوٙ" + - "ن آڤمینجا ئمریکائمریکائمریکا ڤاروکارائیبآسیائوروٙپائمریکا لاتین", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, - 0x0014, 0x0014, 0x0014, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - // Entry 40 - 7F - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, - 0x001e, 0x002c, 0x002c, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x0059, 0x0059, 0x0059, - 0x0059, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry 80 - BF - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, - // Entry C0 - FF - 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0065, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, - 0x0071, 0x0071, 0x0071, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - // Entry 100 - 13F - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x00ab, 0x00b5, 0x00c1, - 0x00da, 0x00f1, 0x0116, 0x0116, 0x012d, 0x012d, 0x012d, 0x012d, - 0x012d, 0x0139, 0x014e, 0x015c, 0x015c, 0x015c, 0x015c, 0x015c, - 0x015c, 0x015c, 0x015c, 0x015c, 0x0164, 0x0164, 0x0164, 0x0172, - 0x0172, 0x0172, 0x0172, 0x0172, 0x0189, - }, - }, - { // lt - ltRegionStr, - ltRegionIdx, - }, - { // lu - "AndoreLemila alabuAfuganisitaAntiga ne BarbudaAngiyeAlubaniAmeniAngolaAl" + - "ijantineSamoa wa AmerikiOtilisiOsitaliArubaAjelbayidjaMbosini ne Hez" + - "egovineBarebadeBenguladeshiBelejikiBukinafasoBiligariBahreneBurundiB" + - "eneBermudaBrineyiMboliviMnulezileBahamaseButaniMbotswanaByelorisiBel" + - "izeKanadaDitunga wa KonguDitunga dya Afrika wa munkatshiKonguSwiseKo" + - "tedivualeLutanda lua KookɛShiliKameruneShineKolombiKositarikaKubaLut" + - "anda lua KapeveleShipeleDitunga dya TshekaAlemanuDjibutiDanemalakuDu" + - "minikuDitunga wa DuminikuAlijeriEkwateleEsitoniMushidiEliteleNsipani" + - "EtshiopiFilandeFujiLutanda lua MaluniMikroneziNfalanseNgabuAngeletel" + - "eNgelenadeJorijiGiyane wa NfalanseNganaJibeletaleNgowelandeGambiNgin" + - "eNgwadelupeGine EkwateleNgelekaNgwatemalaNgwameNginebisauNgiyaneOndu" + - "raseKrowasiAyitiOngiliIndoneziIrelandeIsirayeleIndeLutanda lwa Angel" + - "etele ku mbu wa IndiyaIrakiIraIsilandeItaliJamaikiJodaniJapuKenyaKig" + - "izisitaKambodzaKiribatiKomoruSantu krístofe ne NevesKore wa muuluKor" + - "e wa mwinshiKowetiLutanda lua KayimaKazakusitaLawosiLibaSantu lisiLi" + - "shuteniSirilankaLiberiyaLesotoLitwaniLikisambuluLetoniLibiMarokeMona" + - "kuMolidaviMadagasikariLutanda lua MarishaleMasedwaneMaliMyamareMongo" + - "liLutanda lua Mariane wa muuluMartinikiMoritaniMuseraMaliteMoriseMad" + - "iveMalawiMeksikeMaleziMozambikiNamibiKaledoni wa mumuNijereLutanda l" + - "ua NorfokNijeryaNikaragwaOlandɛNorivejeNepálɛNauruNyueZelanda wa mum" + - "uOmanePanamaPeruPolinezi wa NfalansePapwazi wa Nginɛ wa mumuNfilipiP" + - "akisitaMpoloniSantu pététo ne MikeluPikairniMpotorikuPalesineMputulu" + - "geshiPalauPalagweiKatariLenyoRomaniRisiRwandaAlabu NsawudiLutanda lu" + - "a SolomuSesheleSudaSuwediSingapureSantu eleniSiloveniSilovakiSiera L" + - "eoneSantu MarineSenegaleSomaliSurinameSao Tome ne PresipɛSavadoreSir" + - "iSwazilandiLutanda lua Tuluki ne KaikoTshadiToguTayilandaTazikisitaT" + - "okelauTimoru wa dibokuTukemenisitaTiniziTongaTulukiTinidade ne Tobag" + - "oTuvaluTaiwaniTanzaniUkreniUgandaAmerikiIrigweiUzibekisitaNvatikaSan" + - "tu vesa ne NgelenadineVenezuelaLutanda lua Vierzi wa AngeleteleLutan" + - "da lua Vierzi wa AmerikiViyetinameVanuatuWalise ne FutunaSamoaYemenu" + - "MayoteAfrika ya SúdiZambiZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0012, 0x001d, 0x002e, 0x0034, 0x003b, - 0x0040, 0x0046, 0x0046, 0x0050, 0x0060, 0x0067, 0x006e, 0x0073, - 0x0073, 0x007e, 0x0093, 0x009b, 0x00a7, 0x00af, 0x00b9, 0x00c1, - 0x00c8, 0x00cf, 0x00d3, 0x00d3, 0x00da, 0x00e1, 0x00e8, 0x00e8, - 0x00f1, 0x00f9, 0x00ff, 0x00ff, 0x0108, 0x0111, 0x0117, 0x011d, - 0x011d, 0x012d, 0x014c, 0x0151, 0x0156, 0x0161, 0x0173, 0x0178, - 0x0180, 0x0185, 0x018c, 0x018c, 0x0196, 0x019a, 0x01ae, 0x01ae, - 0x01ae, 0x01b5, 0x01c7, 0x01ce, 0x01ce, 0x01d5, 0x01df, 0x01e7, - // Entry 40 - 7F - 0x01fa, 0x0201, 0x0201, 0x0209, 0x0210, 0x0217, 0x0217, 0x021e, - 0x0225, 0x022d, 0x022d, 0x022d, 0x0234, 0x0238, 0x024a, 0x0253, - 0x0253, 0x025b, 0x0260, 0x026a, 0x0273, 0x0279, 0x028b, 0x028b, - 0x0290, 0x029a, 0x02a4, 0x02a9, 0x02ae, 0x02b8, 0x02c5, 0x02cc, - 0x02cc, 0x02d6, 0x02dc, 0x02e6, 0x02ed, 0x02ed, 0x02ed, 0x02f5, - 0x02fc, 0x0301, 0x0307, 0x0307, 0x030f, 0x0317, 0x0320, 0x0320, - 0x0324, 0x034b, 0x0350, 0x0353, 0x035b, 0x0360, 0x0360, 0x0367, - 0x036d, 0x0371, 0x0376, 0x0380, 0x0388, 0x0390, 0x0396, 0x03ae, - // Entry 80 - BF - 0x03bb, 0x03ca, 0x03d0, 0x03e2, 0x03ec, 0x03f2, 0x03f6, 0x0400, - 0x0409, 0x0412, 0x041a, 0x0420, 0x0427, 0x0432, 0x0438, 0x043c, - 0x0442, 0x0448, 0x0450, 0x0450, 0x0450, 0x045c, 0x0471, 0x047a, - 0x047e, 0x0485, 0x048c, 0x048c, 0x04a8, 0x04b1, 0x04b9, 0x04bf, - 0x04c5, 0x04cb, 0x04d1, 0x04d7, 0x04de, 0x04e4, 0x04ed, 0x04f3, - 0x0503, 0x0509, 0x051b, 0x0522, 0x052b, 0x0532, 0x053a, 0x0542, - 0x0547, 0x054b, 0x055a, 0x055f, 0x0565, 0x0569, 0x057d, 0x0596, - 0x059d, 0x05a5, 0x05ac, 0x05c4, 0x05cc, 0x05d5, 0x05dd, 0x05e9, - // Entry C0 - FF - 0x05ee, 0x05f6, 0x05fc, 0x05fc, 0x0601, 0x0607, 0x0607, 0x060b, - 0x0611, 0x061e, 0x0630, 0x0637, 0x063b, 0x0641, 0x064a, 0x0655, - 0x065d, 0x065d, 0x0665, 0x0670, 0x067c, 0x0684, 0x068a, 0x0692, - 0x0692, 0x06a6, 0x06ae, 0x06ae, 0x06b2, 0x06bc, 0x06bc, 0x06d7, - 0x06dd, 0x06dd, 0x06e1, 0x06ea, 0x06f4, 0x06fb, 0x070b, 0x0717, - 0x071d, 0x0722, 0x0728, 0x073a, 0x0740, 0x0747, 0x074e, 0x0754, - 0x075a, 0x075a, 0x075a, 0x0761, 0x0768, 0x0773, 0x077a, 0x0793, - 0x079c, 0x07bc, 0x07d9, 0x07e3, 0x07ea, 0x07fa, 0x07ff, 0x07ff, - // Entry 100 - 13F - 0x0805, 0x080b, 0x081a, 0x081f, 0x0827, - }, - }, - { // luo - "AndorraUnited Arab EmiratesAfghanistanAntigua gi BarbudaAnguillaAlbaniaA" + - "rmeniaAngolaArgentinaAmerican SamoaAustriaAustraliaArubaAzerbaijanBo" + - "snia gi HerzegovinaBarbadosBangladeshBelgiumBurkina FasoBulgariaBahr" + - "ainBurundiBeninBermudaBruneiBoliviaBrazilBahamasBhutanBotswanaBelaru" + - "sBelizeCanadaDemocratic Republic of the CongoCentral African Republi" + - "cCongoSwitzerlandCôte dCook IslandsChileCameroonChinaColombiaCosta R" + - "icaCubaCape Verde IslandsCyprusCzech RepublicGermanyDjiboutiDenmarkD" + - "ominicaDominican RepublicAlgeriaEcuadorEstoniaEgyptEritreaSpainEthio" + - "piaFinlandFijiChuia mar FalklandMicronesiaFranceGabonUnited KingdomG" + - "renadaGeorgiaFrench GuianaGhanaGibraltarGreenlandGambiaGuineaGuadelo" + - "upeEquatorial GuineaGreeceGuatemalaGuamGuinea-BissauGuyanaHondurasCr" + - "oatiaHaitiHungaryIndonesiaIrelandIsraelIndiaBritish Indian Ocean Ter" + - "ritoryIraqIranIcelandItalyJamaicaJordanJapanKenyaKyrgyzstanCambodiaK" + - "iribatiComorosSaint Kitts gi NevisKorea MasawaKorea MilamboKuwaitCay" + - "man IslandsKazakhstanLaosLebanonSaint LuciaLiechtensteinSri LankaLib" + - "eriaLesothoLithuaniaLuxembourgLatviaLibyaMoroccoMonacoMoldovaMadagas" + - "carChuia mar MarshallMacedoniaMaliMyanmarMongoliaNorthern Mariana Is" + - "landsMartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMexic" + - "oMalaysiaMozambiqueNamibiaNew CaledoniaNigerChuia mar NorfolkNigeria" + - "NicaraguaNetherlandsNorwayNepalNauruNiueNew ZealandOmanPanamaPeruFre" + - "nch PolynesiaPapua New GuineaPhilippinesPakistanPolandSaint Pierre g" + - "i MiquelonPitcairnPuerto RicoPalestinian West Bank gi GazaPortugalPa" + - "lauParaguayQatarRéunionRomaniaRussiaRwandaSaudi ArabiaSolomon Island" + - "sSeychellesSudanSwedenSingaporeSaint HelenaSloveniaSlovakiaSierra Le" + - "oneSan MarinoSenegalSomaliaSurinameSão Tomé gi PríncipeEl SalvadorSy" + - "riaSwazilandTurks gi Caicos IslandsChadTogoThailandTajikistanTokelau" + - "East TimorTurkmenistanTunisiaTongaTurkeyTrinidad gi TobagoTuvaluTaiw" + - "anTanzaniaUkraineUgandaUSAUruguayUzbekistanVatican StateSaint Vincen" + - "t gi GrenadinesVenezuelaBritish Virgin IslandsU.S. Virgin IslandsVie" + - "tnamVanuatuWallis gi FutunaSamoaYemenMayotteSouth AfricaZambiaZimbab" + - "we", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x001b, 0x0026, 0x0038, 0x0040, 0x0047, - 0x004e, 0x0054, 0x0054, 0x005d, 0x006b, 0x0072, 0x007b, 0x0080, - 0x0080, 0x008a, 0x009f, 0x00a7, 0x00b1, 0x00b8, 0x00c4, 0x00cc, - 0x00d3, 0x00da, 0x00df, 0x00df, 0x00e6, 0x00ec, 0x00f3, 0x00f3, - 0x00f9, 0x0100, 0x0106, 0x0106, 0x010e, 0x0115, 0x011b, 0x0121, - 0x0121, 0x0141, 0x0159, 0x015e, 0x0169, 0x0170, 0x017c, 0x0181, - 0x0189, 0x018e, 0x0196, 0x0196, 0x01a0, 0x01a4, 0x01b6, 0x01b6, - 0x01b6, 0x01bc, 0x01ca, 0x01d1, 0x01d1, 0x01d9, 0x01e0, 0x01e8, - // Entry 40 - 7F - 0x01fa, 0x0201, 0x0201, 0x0208, 0x020f, 0x0214, 0x0214, 0x021b, - 0x0220, 0x0228, 0x0228, 0x0228, 0x022f, 0x0233, 0x0245, 0x024f, - 0x024f, 0x0255, 0x025a, 0x0268, 0x026f, 0x0276, 0x0283, 0x0283, - 0x0288, 0x0291, 0x029a, 0x02a0, 0x02a6, 0x02b0, 0x02c1, 0x02c7, - 0x02c7, 0x02d0, 0x02d4, 0x02e1, 0x02e7, 0x02e7, 0x02e7, 0x02ef, - 0x02f6, 0x02fb, 0x0302, 0x0302, 0x030b, 0x0312, 0x0318, 0x0318, - 0x031d, 0x033b, 0x033f, 0x0343, 0x034a, 0x034f, 0x034f, 0x0356, - 0x035c, 0x0361, 0x0366, 0x0370, 0x0378, 0x0380, 0x0387, 0x039b, - // Entry 80 - BF - 0x03a7, 0x03b4, 0x03ba, 0x03c8, 0x03d2, 0x03d6, 0x03dd, 0x03e8, - 0x03f5, 0x03fe, 0x0405, 0x040c, 0x0415, 0x041f, 0x0425, 0x042a, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0448, 0x045a, 0x0463, - 0x0467, 0x046e, 0x0476, 0x0476, 0x048e, 0x0498, 0x04a2, 0x04ac, - 0x04b1, 0x04ba, 0x04c2, 0x04c8, 0x04ce, 0x04d6, 0x04e0, 0x04e7, - 0x04f4, 0x04f9, 0x050a, 0x0511, 0x051a, 0x0525, 0x052b, 0x0530, - 0x0535, 0x0539, 0x0544, 0x0548, 0x054e, 0x0552, 0x0562, 0x0572, - 0x057d, 0x0585, 0x058b, 0x05a3, 0x05ab, 0x05b6, 0x05d3, 0x05db, - // Entry C0 - FF - 0x05e0, 0x05e8, 0x05ed, 0x05ed, 0x05f5, 0x05fc, 0x05fc, 0x0602, - 0x0608, 0x0614, 0x0623, 0x062d, 0x0632, 0x0638, 0x0641, 0x064d, - 0x0655, 0x0655, 0x065d, 0x0669, 0x0673, 0x067a, 0x0681, 0x0689, - 0x0689, 0x06a0, 0x06ab, 0x06ab, 0x06b0, 0x06b9, 0x06b9, 0x06d0, - 0x06d4, 0x06d4, 0x06d8, 0x06e0, 0x06ea, 0x06f1, 0x06fb, 0x0707, - 0x070e, 0x0713, 0x0719, 0x072b, 0x0731, 0x0737, 0x073f, 0x0746, - 0x074c, 0x074c, 0x074c, 0x074f, 0x0756, 0x0760, 0x076d, 0x0788, - 0x0791, 0x07a7, 0x07ba, 0x07c1, 0x07c8, 0x07d8, 0x07dd, 0x07dd, - // Entry 100 - 13F - 0x07e2, 0x07e9, 0x07f5, 0x07fb, 0x0803, - }, - }, - { // luy - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa lya MarekaniAustriaAustraliaArubaAzabajaniBosn" + - "ia na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBaharen" + - "iBurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarus" + - "iBelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Ka" + - "tiKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostari" + - "kaKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJ" + - "amhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUf" + - "iniFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJo" + - "jiaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinek" + - "wetaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungaria" + - "IndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIr" + - "akiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodi" + - "aKiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaiti" + - "Visiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilan" + - "kaLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukin" + - "iVisiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya " + - "KaskaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksiko" + - "MalesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNika" + - "ragwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia " + - "ya UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkai" + - "rniPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoP" + - "alauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya Solomon" + - "ShelisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera Leoni" + - "SamarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswa" + - "ziVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori" + - " ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuv" + - "aluTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSa" + - "ntavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiw" + - "a vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniM" + - "ayotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x006a, 0x0071, 0x007a, 0x007f, - 0x007f, 0x0088, 0x009c, 0x00a4, 0x00af, 0x00b7, 0x00c1, 0x00c9, - 0x00d1, 0x00d8, 0x00de, 0x00de, 0x00e5, 0x00eb, 0x00f2, 0x00f2, - 0x00f9, 0x00ff, 0x0105, 0x0105, 0x010d, 0x0115, 0x011b, 0x0121, - 0x0121, 0x0141, 0x015a, 0x015f, 0x0165, 0x016c, 0x017b, 0x0180, - 0x0188, 0x018d, 0x0195, 0x0195, 0x019e, 0x01a2, 0x01aa, 0x01aa, - 0x01aa, 0x01b1, 0x01c1, 0x01ca, 0x01ca, 0x01d0, 0x01d7, 0x01df, - // Entry 40 - 7F - 0x01f2, 0x01f9, 0x01f9, 0x01ff, 0x0206, 0x020b, 0x020b, 0x0212, - 0x021a, 0x0222, 0x0222, 0x0222, 0x0227, 0x022b, 0x023e, 0x0248, - 0x0248, 0x0250, 0x0256, 0x025f, 0x0266, 0x026b, 0x027e, 0x027e, - 0x0283, 0x028b, 0x0294, 0x029a, 0x029e, 0x02a7, 0x02b0, 0x02b7, - 0x02b7, 0x02c0, 0x02c4, 0x02cd, 0x02d3, 0x02d3, 0x02d3, 0x02dc, - 0x02e3, 0x02e8, 0x02f0, 0x02f0, 0x02f9, 0x0301, 0x0308, 0x0308, - 0x030d, 0x0332, 0x0337, 0x033d, 0x0345, 0x034b, 0x034b, 0x0352, - 0x0359, 0x035f, 0x0364, 0x0371, 0x0379, 0x0381, 0x0387, 0x039a, - // Entry 80 - BF - 0x03a9, 0x03b5, 0x03bc, 0x03cd, 0x03d8, 0x03dd, 0x03e5, 0x03ef, - 0x03f9, 0x0402, 0x0409, 0x040f, 0x0417, 0x0420, 0x0427, 0x042c, - 0x0432, 0x0438, 0x043f, 0x043f, 0x043f, 0x0445, 0x0457, 0x0460, - 0x0464, 0x0469, 0x0471, 0x0471, 0x0491, 0x049a, 0x04a3, 0x04ae, - 0x04b3, 0x04b9, 0x04bf, 0x04c5, 0x04cc, 0x04d3, 0x04db, 0x04e2, - 0x04ee, 0x04f4, 0x0505, 0x050c, 0x0515, 0x051d, 0x0522, 0x0528, - 0x052d, 0x0531, 0x053b, 0x0540, 0x0546, 0x054a, 0x055f, 0x0564, - 0x056c, 0x0575, 0x057c, 0x0592, 0x059b, 0x05a4, 0x05d6, 0x05db, - // Entry C0 - FF - 0x05e0, 0x05e8, 0x05ee, 0x05ee, 0x05f7, 0x05fe, 0x05fe, 0x0603, - 0x0609, 0x060e, 0x0620, 0x062a, 0x0630, 0x0636, 0x063e, 0x0649, - 0x0651, 0x0651, 0x0659, 0x0664, 0x066c, 0x0674, 0x067b, 0x0683, - 0x0683, 0x0697, 0x069f, 0x069f, 0x06a4, 0x06aa, 0x06aa, 0x06c3, - 0x06c8, 0x06c8, 0x06cc, 0x06d4, 0x06df, 0x06e6, 0x06f9, 0x0708, - 0x070f, 0x0714, 0x071b, 0x072d, 0x0733, 0x073a, 0x0742, 0x0749, - 0x074f, 0x074f, 0x074f, 0x0757, 0x075e, 0x076a, 0x0772, 0x078b, - 0x0794, 0x07b3, 0x07d1, 0x07da, 0x07e1, 0x07f0, 0x07f5, 0x07f5, - // Entry 100 - 13F - 0x07fb, 0x0802, 0x080f, 0x0815, 0x081d, - }, - }, - { // lv - lvRegionStr, - lvRegionIdx, - }, - { // mas - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTansaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniSambiaSimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // mer - "AndoraFalme cia KiarabuAfuganistaniAntigua na BarbudaAnguillaAlubaniaArm" + - "eniaAngolaAjentinaSamoa ya AmerikaAustiriaAustrĩliaArubaAzebaijaniBo" + - "snia na HezegovinaBabadosiBangiradeshiBeronjiamuBukinafasoBulgariaBa" + - "hariniBurundiBeniniBamudaBruneiBoliviaBraziluBahamasiButaniBotswanaB" + - "elarusiBelizeKanadaNthĩ ya Kidemokrasĩ ya KongoNthĩ ya Afrika gatĩga" + - "tĩKongoSwizilandiKodivaaAĩrandi cia CookChileKameruniChinaKolombiaKo" + - "starikaKiubaKepuvedeCaipurasiNthĩ ya ChekiNjamanĩJibutiDenimakiDomin" + - "ikaNthĩ ya DominikaAngiriaEkwadoEstoniaMisiriEritreaSpĩniIthiopiaFin" + - "ilandiFijiAĩrandi cia FalklandiMikronesiaFransiGaboniNgerethaGrenada" + - "JojiaGwiyana ya FransiGhanaNgĩbrataNgirinilandiGambiaGineGwadelupeGi" + - "ne ya IquitaNgirikiGwatemalaGwamGinebisauGuyanaHondurasiKoroashiaHai" + - "tiHangarĩIndonesiaAelandiIsiraeliIndiaNthĩ cia Ngeretha gatagatĩ ka " + - "ĩria ria HindiIrakiIraniAisilandiItalĩJamaikaJorondaniJapaniKenyaKi" + - "rigizistaniKambodiaKiribatiKomoroSantakitzi na NevisKorea NothiKorea" + - " SaũthiKuwĩ tiAĩrandi cia KaymanKazakistaniLaosiLebanoniSantalusiaLi" + - "shenteniSirilankaLiberiaLesothoLithuaniaLuxemboguLativiaLĩbiaMorokoM" + - "onakoMoldovaMadagasikaAĩrandi cia MarshalMacedoniaMaliMyanimaMongoli" + - "aAĩrandi cia Mariana ya nothiMartinikiMauritaniaMontserratiMaltaMaur" + - "ĩtiasiModivuMalawiMexikoMalĩsiaMozambikiNamibiaKalendoia ĨnjeruNija" + - "Aĩrandi cia NorfokNijeriaNikaragwaHolandiNorwiNepaliNauruNiueNiuzila" + - "ndiOmaniPanamaPeruPolinesia ya FransiPapuaFilipinoPakistaniPolandiSa" + - "ntapieri na MikeloniPitkairniPwetorikoRũtere rwa Westi banki na Gaza" + - " cia PalestinaPotogoPalauParagwaiKataRiyunioniRomaniaRashiaRwandaSau" + - "diAirandi Cia SolomonShelisheliSudaniSwideniSingapooSantahelenaSlove" + - "niaSlovakiaSiera LeoniSamarinoSenegoSomaliaSurinamuSao Tome na Princ" + - "ipeElsavadoSiriaSwazilandiAĩrandi cia Takĩ na KaikoChadiTogoThaĩland" + - "iTajikistaniTokelauTimori ya IstiTukumenistaniTunisiaTongaTakĩTrinid" + - "ad na TobagoTuvaluTaiwaniTanzaniaUkirĩniUgandaAmerikaUrugwĩUzibekist" + - "aniVatikaniSantavisenti na GrenadiniVenezuelaAĩrandi cia Virgin cia " + - "NgerethaAĩrandi cia Virgin cia AmerikaVietinamuVanuatuWalis na Futun" + - "aSamoaYemeniMayotteAfrika ya SouthiZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0017, 0x0023, 0x0035, 0x003d, 0x0045, - 0x004c, 0x0052, 0x0052, 0x005a, 0x006a, 0x0072, 0x007c, 0x0081, - 0x0081, 0x008b, 0x009f, 0x00a7, 0x00b3, 0x00bd, 0x00c7, 0x00cf, - 0x00d7, 0x00de, 0x00e4, 0x00e4, 0x00ea, 0x00f0, 0x00f7, 0x00f7, - 0x00fe, 0x0106, 0x010c, 0x010c, 0x0114, 0x011c, 0x0122, 0x0128, - 0x0128, 0x0146, 0x0160, 0x0165, 0x016f, 0x0176, 0x0187, 0x018c, - 0x0194, 0x0199, 0x01a1, 0x01a1, 0x01aa, 0x01af, 0x01b7, 0x01b7, - 0x01b7, 0x01c0, 0x01ce, 0x01d6, 0x01d6, 0x01dc, 0x01e4, 0x01ec, - // Entry 40 - 7F - 0x01fd, 0x0204, 0x0204, 0x020a, 0x0211, 0x0217, 0x0217, 0x021e, - 0x0224, 0x022c, 0x022c, 0x022c, 0x0235, 0x0239, 0x024f, 0x0259, - 0x0259, 0x025f, 0x0265, 0x026d, 0x0274, 0x0279, 0x028a, 0x028a, - 0x028f, 0x0298, 0x02a4, 0x02aa, 0x02ae, 0x02b7, 0x02c5, 0x02cc, - 0x02cc, 0x02d5, 0x02d9, 0x02e2, 0x02e8, 0x02e8, 0x02e8, 0x02f1, - 0x02fa, 0x02ff, 0x0307, 0x0307, 0x0310, 0x0317, 0x031f, 0x031f, - 0x0324, 0x0353, 0x0358, 0x035d, 0x0366, 0x036c, 0x036c, 0x0373, - 0x037c, 0x0382, 0x0387, 0x0394, 0x039c, 0x03a4, 0x03aa, 0x03bd, - // Entry 80 - BF - 0x03c8, 0x03d5, 0x03dd, 0x03f0, 0x03fb, 0x0400, 0x0408, 0x0412, - 0x041c, 0x0425, 0x042c, 0x0433, 0x043c, 0x0445, 0x044c, 0x0452, - 0x0458, 0x045e, 0x0465, 0x0465, 0x0465, 0x046f, 0x0483, 0x048c, - 0x0490, 0x0497, 0x049f, 0x049f, 0x04bc, 0x04c5, 0x04cf, 0x04da, - 0x04df, 0x04ea, 0x04f0, 0x04f6, 0x04fc, 0x0504, 0x050d, 0x0514, - 0x0525, 0x0529, 0x053c, 0x0543, 0x054c, 0x0553, 0x0558, 0x055e, - 0x0563, 0x0567, 0x0571, 0x0576, 0x057c, 0x0580, 0x0593, 0x0598, - 0x05a0, 0x05a9, 0x05b0, 0x05c6, 0x05cf, 0x05d8, 0x0605, 0x060b, - // Entry C0 - FF - 0x0610, 0x0618, 0x061c, 0x061c, 0x0625, 0x062c, 0x062c, 0x0632, - 0x0638, 0x063d, 0x0650, 0x065a, 0x0660, 0x0667, 0x066f, 0x067a, - 0x0682, 0x0682, 0x068a, 0x0695, 0x069d, 0x06a3, 0x06aa, 0x06b2, - 0x06b2, 0x06c6, 0x06ce, 0x06ce, 0x06d3, 0x06dd, 0x06dd, 0x06f8, - 0x06fd, 0x06fd, 0x0701, 0x070b, 0x0716, 0x071d, 0x072b, 0x0738, - 0x073f, 0x0744, 0x0749, 0x075b, 0x0761, 0x0768, 0x0770, 0x0778, - 0x077e, 0x077e, 0x077e, 0x0785, 0x078c, 0x0798, 0x07a0, 0x07b9, - 0x07c2, 0x07e2, 0x0801, 0x080a, 0x0811, 0x0820, 0x0825, 0x0825, - // Entry 100 - 13F - 0x082b, 0x0832, 0x0842, 0x0848, 0x0850, - }, - }, - { // mfe - "AndorEmira arab iniAfganistanAntigua-ek-BarbudaAnguillaAlbaniArmeniAngol" + - "aLarzantinnSamoa amerikinLostrisLostraliArubaAzerbaïdjanBosni-Herzeg" + - "ovinnBarbadBangladesBelzikBurkina FasoBilgariBahreïnBurundiBeninBerm" + - "idBruneiBoliviBrezilBahamasBoutanBotswanaBelarisBelizKanadaRepiblik " + - "demokratik KongoRepiblik Lafrik SantralKongoLaswisCôte d’IvoireZil C" + - "ookShiliKamerounnLasinnKolonbiCosta RicaCubaKap-VerCyprusRepiblik Ch" + - "ekAlmagnDjiboutiDannmarkDominikRepiblik dominikinAlzeriEkwaterEstoni" + - "LeziptErythreLespagnLetiopiFinlandFidjiZil malwinnMikroneziLafransGa" + - "bonUnited KingdomGrenadZeorziGwiyann franseGhanaZibraltarGreenlandGa" + - "mbiGineGuadloupGine ekwatoryalGresGuatemalaGuamGine-BisauGuyanaHondu" + - "rasKroasiAytiOngriIndoneziIrlandIzraelLennTeritwar Britanik Losean I" + - "ndienIrakIranIslandItaliZamaikZordaniZaponKenyaKirghizistanKambodjKi" + - "ribatiKomorSaint-Christophe-ek-NiévèsLakore-dinorLakore-disidKoweitZ" + - "il KaymanKazakstanLaosLibanSainte-LucieLiechtensteinSri LankaLiberia" + - "LezotoLituaniLuxembourgLetoniLibiMarokMonakoMoldaviMadagaskarZil Mar" + - "shallMasedwannMaliMyanmarMongoliZil Maryann dinorMartinikMoritaniMon" + - "tseraMaltMorisMaldivMalawiMexikMaleziMozambikNamibiNouvel-KaledoniNi" + - "zerLil NorfolkNizeriaNicaraguaOlandNorvezNepalNauruNioweNouvel Zelan" + - "dOmanPanamaPerouPolinezi fransePapouazi-Nouvel-GineFilipinnPakistanP" + - "olognSaint-Pierre-ek-MiquelonPitcairnPorto RicoTeritwar PalestinnPor" + - "tigalPalauParaguayKatarLarenionRoumaniLarisiRwandaLarabi SaouditZil " + - "SalomonSeselSoudanLaswedSingapourSainte-HélèneSloveniSlovakiSierra L" + - "eoneSaint-MarinSenegalSomaliSurinamSão Tome-ek-PrínsipSalvadorLasiri" + - "SwazilandZil Tirk ek CaïcosTchadTogoThaylandTadjikistanTokelauTimor " + - "oriantalTurkmenistanTiniziTongaTirkiTrinite-ek-TobagoTuvaluTaiwanTan" + - "zaniIkrennOugandaLamerikUruguayOuzbekistanLata VatikanSaint-Vincent-" + - "ek-GrenadinesVenezuelaZil vierz britanikZil Vierz LamerikVietnamVanu" + - "atuWallis-ek-FutunaSamoaYemennMayotSid-AfrikZambiZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0005, 0x0013, 0x001d, 0x002f, 0x0037, 0x003d, - 0x0043, 0x0049, 0x0049, 0x0053, 0x0061, 0x0068, 0x0070, 0x0075, - 0x0075, 0x0081, 0x0092, 0x0098, 0x00a1, 0x00a7, 0x00b3, 0x00ba, - 0x00c2, 0x00c9, 0x00ce, 0x00ce, 0x00d4, 0x00da, 0x00e0, 0x00e0, - 0x00e6, 0x00ed, 0x00f3, 0x00f3, 0x00fb, 0x0102, 0x0107, 0x010d, - 0x010d, 0x0126, 0x013d, 0x0142, 0x0148, 0x0158, 0x0160, 0x0165, - 0x016e, 0x0174, 0x017b, 0x017b, 0x0185, 0x0189, 0x0190, 0x0190, - 0x0190, 0x0196, 0x01a3, 0x01a9, 0x01a9, 0x01b1, 0x01b9, 0x01c0, - // Entry 40 - 7F - 0x01d2, 0x01d8, 0x01d8, 0x01df, 0x01e5, 0x01eb, 0x01eb, 0x01f2, - 0x01f9, 0x0200, 0x0200, 0x0200, 0x0207, 0x020c, 0x0217, 0x0220, - 0x0220, 0x0227, 0x022c, 0x023a, 0x0240, 0x0246, 0x0254, 0x0254, - 0x0259, 0x0262, 0x026b, 0x0270, 0x0274, 0x027c, 0x028b, 0x028f, - 0x028f, 0x0298, 0x029c, 0x02a6, 0x02ac, 0x02ac, 0x02ac, 0x02b4, - 0x02ba, 0x02be, 0x02c3, 0x02c3, 0x02cb, 0x02d1, 0x02d7, 0x02d7, - 0x02db, 0x02fa, 0x02fe, 0x0302, 0x0308, 0x030d, 0x030d, 0x0313, - 0x031a, 0x031f, 0x0324, 0x0330, 0x0337, 0x033f, 0x0344, 0x0360, - // Entry 80 - BF - 0x036c, 0x0378, 0x037e, 0x0388, 0x0391, 0x0395, 0x039a, 0x03a6, - 0x03b3, 0x03bc, 0x03c3, 0x03c9, 0x03d0, 0x03da, 0x03e0, 0x03e4, - 0x03e9, 0x03ef, 0x03f6, 0x03f6, 0x03f6, 0x0400, 0x040c, 0x0415, - 0x0419, 0x0420, 0x0427, 0x0427, 0x0438, 0x0440, 0x0448, 0x0450, - 0x0454, 0x0459, 0x045f, 0x0465, 0x046a, 0x0470, 0x0478, 0x047e, - 0x048d, 0x0492, 0x049d, 0x04a4, 0x04ad, 0x04b2, 0x04b8, 0x04bd, - 0x04c2, 0x04c7, 0x04d4, 0x04d8, 0x04de, 0x04e3, 0x04f2, 0x0506, - 0x050e, 0x0516, 0x051c, 0x0534, 0x053c, 0x0546, 0x0558, 0x0560, - // Entry C0 - FF - 0x0565, 0x056d, 0x0572, 0x0572, 0x057a, 0x0581, 0x0581, 0x0587, - 0x058d, 0x059b, 0x05a6, 0x05ab, 0x05b1, 0x05b7, 0x05c0, 0x05cf, - 0x05d6, 0x05d6, 0x05dd, 0x05e9, 0x05f4, 0x05fb, 0x0601, 0x0608, - 0x0608, 0x061d, 0x0625, 0x0625, 0x062b, 0x0634, 0x0634, 0x0647, - 0x064c, 0x064c, 0x0650, 0x0658, 0x0663, 0x066a, 0x0678, 0x0684, - 0x068a, 0x068f, 0x0694, 0x06a5, 0x06ab, 0x06b1, 0x06b8, 0x06be, - 0x06c5, 0x06c5, 0x06c5, 0x06cc, 0x06d3, 0x06de, 0x06ea, 0x0705, - 0x070e, 0x0720, 0x0731, 0x0738, 0x073f, 0x074f, 0x0754, 0x0754, - // Entry 100 - 13F - 0x075a, 0x075f, 0x0768, 0x076d, 0x0775, - }, - }, - { // mg - "AndorraEmirà Arabo mitambatraAfghanistanAntiga sy BarbodaAnguillaAlbania" + - "ArmeniaAngolaArzantinaSamoa amerikaninaAotrisyAostraliaArobàAzerbaid" + - "janBosnia sy HerzegovinaBarbadyBangladesyBelzikaBorkina FasoBiolgari" + - "aBahrainBorondiBeninBermiodaBruneiBoliviaBrezilaBahamasBhotanaBotsoa" + - "naBelarosyBelizeKanadaRepoblikan’i KongoRepoblika Ivon’AfrikaKôngôSo" + - "isaCôte d’IvoireNosy KookShiliKameronaSinaKôlômbiaKosta RikàKiobàNos" + - "y Cap-VertSypraRepoblikan’i TsekyAlemainaDjibotiDanmarkaDominikaRepo" + - "blika DominikaninaAlzeriaEkoateraEstoniaEjyptaEritreaEspainaEthiopia" + - "FinlandyFidjiNosy FalkandMikrôneziaFrantsaGabonAngleteraGrenadyZeorz" + - "iaGuyana frantsayGhanaZibraltaraGroenlandGambiaGineaGoadelopyGuinea " + - "EkoateraGresyGoatemalàGuamGiné-BisaoGuyanaHondiorasyKroasiaHaitiHong" + - "riaIndoneziaIrlandyIsraelyIndyFaridranomasina indiana britanikaIrakI" + - "ranIslandyItaliaJamaïkaJordaniaJapanaKenyaKiordistanKambôdjaKiribati" + - "KômaoroSaint-Christophe-et-NiévèsKorea AvaratraKorea AtsimoKôeityNos" + - "y KaymanKazakhstanLaôsLibanaSainte-LucieListensteinSri LankaLiberiaL" + - "esothoLitoaniaLioksamboroLetoniaLibyaMarôkaMônakôMôldaviaMadagasikar" + - "aNosy MarshallMakedoniaMaliMyanmarMôngôliaNosy Mariana AtsinananaMar" + - "tinikaMaoritaniaMontserratMaltaMaorisyMaldivaMalaoìMeksikaMalaiziaMo" + - "zambikaNamibiaNouvelle-CalédonieNigerNosy NorfolkNizeriaNikaragoàHol" + - "andaNôrvezyNepalaNaoròNioéNouvelle-ZélandeOmanPanamaPeroaPolynezia f" + - "rantsayPapouasie-Nouvelle-GuinéeFilipinaPakistanPôlônaSaint-Pierre-e" + - "t-MiquelonPitkairnPôrtô RikôPalestinaPôrtiogalaPalaoParagoayKatarLar" + - "enionRomaniaRosiaRoandaArabia saoditaNosy SalomonaSeyshelaSodanSoedy" + - "SingaporoSainte-HélèneSloveniaSlovakiaSierra LeoneSaint-MarinSenegal" + - "SomaliaSorinamSão Tomé-et-PríncipeEl SalvadorSyriaSoazilandyNosy Tur" + - "ks sy CaïquesTsadyTogoThailandyTajikistanTokelaoTimor AtsinananaTork" + - "menistanToniziaTongàTorkiaTrinidad sy TobagôTovalòTaioanaTanzaniaOkr" + - "ainaOgandaEtazoniaOrogoayOzbekistanFirenen’i VatikanaSaint-Vincent-e" + - "t-les GrenadinesVenezoelàNosy britanika virijinyNosy Virijiny Etazon" + - "iaVietnamVanoatòWallis sy FutunaSamoaYemenMayôtyAfrika AtsimoZambiaZ" + - "imbaboe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x001e, 0x0029, 0x003a, 0x0042, 0x0049, - 0x0050, 0x0056, 0x0056, 0x005f, 0x0070, 0x0077, 0x0080, 0x0086, - 0x0086, 0x0091, 0x00a6, 0x00ad, 0x00b7, 0x00be, 0x00ca, 0x00d3, - 0x00da, 0x00e1, 0x00e6, 0x00e6, 0x00ee, 0x00f4, 0x00fb, 0x00fb, - 0x0102, 0x0109, 0x0110, 0x0110, 0x0118, 0x0120, 0x0126, 0x012c, - 0x012c, 0x0140, 0x0157, 0x015e, 0x0163, 0x0173, 0x017c, 0x0181, - 0x0189, 0x018d, 0x0197, 0x0197, 0x01a2, 0x01a8, 0x01b5, 0x01b5, - 0x01b5, 0x01ba, 0x01ce, 0x01d6, 0x01d6, 0x01dd, 0x01e5, 0x01ed, - // Entry 40 - 7F - 0x0203, 0x020a, 0x020a, 0x0212, 0x0219, 0x021f, 0x021f, 0x0226, - 0x022d, 0x0235, 0x0235, 0x0235, 0x023d, 0x0242, 0x024e, 0x0259, - 0x0259, 0x0260, 0x0265, 0x026e, 0x0275, 0x027c, 0x028b, 0x028b, - 0x0290, 0x029a, 0x02a3, 0x02a9, 0x02ae, 0x02b7, 0x02c6, 0x02cb, - 0x02cb, 0x02d5, 0x02d9, 0x02e4, 0x02ea, 0x02ea, 0x02ea, 0x02f4, - 0x02fb, 0x0300, 0x0307, 0x0307, 0x0310, 0x0317, 0x031e, 0x031e, - 0x0322, 0x0343, 0x0347, 0x034b, 0x0352, 0x0358, 0x0358, 0x0360, - 0x0368, 0x036e, 0x0373, 0x037d, 0x0386, 0x038e, 0x0396, 0x03b2, - // Entry 80 - BF - 0x03c0, 0x03cc, 0x03d3, 0x03de, 0x03e8, 0x03ed, 0x03f3, 0x03ff, - 0x040a, 0x0413, 0x041a, 0x0421, 0x0429, 0x0434, 0x043b, 0x0440, - 0x0447, 0x044f, 0x0458, 0x0458, 0x0458, 0x0464, 0x0471, 0x047a, - 0x047e, 0x0485, 0x048f, 0x048f, 0x04a6, 0x04af, 0x04b9, 0x04c3, - 0x04c8, 0x04cf, 0x04d6, 0x04dd, 0x04e4, 0x04ec, 0x04f5, 0x04fc, - 0x050f, 0x0514, 0x0520, 0x0527, 0x0531, 0x0538, 0x0540, 0x0546, - 0x054c, 0x0551, 0x0562, 0x0566, 0x056c, 0x0571, 0x0583, 0x059d, - 0x05a5, 0x05ad, 0x05b5, 0x05cd, 0x05d5, 0x05e2, 0x05eb, 0x05f6, - // Entry C0 - FF - 0x05fb, 0x0603, 0x0608, 0x0608, 0x0610, 0x0617, 0x0617, 0x061c, - 0x0622, 0x0630, 0x063d, 0x0645, 0x064a, 0x064f, 0x0658, 0x0667, - 0x066f, 0x066f, 0x0677, 0x0683, 0x068e, 0x0695, 0x069c, 0x06a3, - 0x06a3, 0x06ba, 0x06c5, 0x06c5, 0x06ca, 0x06d4, 0x06d4, 0x06ea, - 0x06ef, 0x06ef, 0x06f3, 0x06fc, 0x0706, 0x070d, 0x071d, 0x0729, - 0x0730, 0x0736, 0x073c, 0x074f, 0x0756, 0x075d, 0x0765, 0x076c, - 0x0772, 0x0772, 0x0772, 0x077a, 0x0781, 0x078b, 0x079f, 0x07be, - 0x07c8, 0x07df, 0x07f5, 0x07fc, 0x0804, 0x0814, 0x0819, 0x0819, - // Entry 100 - 13F - 0x081e, 0x0825, 0x0832, 0x0838, 0x0840, - }, - }, - { // mgh - "UandoraUfugustaniUalbaniaUsamoa ya MarekaniUazabajaniUrundiUbelinUkanada" + - "UkongoUswisiUkodivaUchileUchinaUkolombiaUkubaUkuprosiUchekiUjibutiUd" + - "enimakaUdominikaAlujeriaUmisiriUritereaUhispaniaUhabeshiUfiniUfijiUf" + - "aransaUgaboniUgrenadaUjojiaUfaransa yo GwayaUganaUjibraltaUgrinlandi" + - "UgambiaUgineUgwadelupeUgwatemalaUgwamUginebisauUguyanaUhondurasiUkor" + - "asiaUhaitiUhungariaUndonesiaUayalandiUisraeliUhindiniWirakiItaliaUja" + - "maikaUyordaniUjapaniUkenyaUkambodiaUkomoroUsantakitzi na NevisUkorea" + - " KaskaziniUkorea KusiniUkazakistaniUlebanoniUsantalusiaUshenteniUsir" + - "ilankaUliberiaUlesotoUtwaniaUsembajiUlativiaUlibyaUmantegroUbukiniUm" + - "asedoniaUmalawiUmozambikiUnijeriUnijeriaUnorweUomaniUpanamaUperuuUfa" + - "ransa yo PotinaUpapuaUfilipinoUpakistaniUpolandiUsantapieri na Mikel" + - "oniUpitkairniUpwetorikoParagwaiUkatariUriyunioniUromaniaUrwandaUsaud" + - "iUshelisheliUsudaniUswidiUsingapooUsantahelenaUsloveniaUslovakiaUsam" + - "arinoUsenegaliUsomaliaUsurinamuUsao Tome na PrincipeUsalavadoUsiriaU" + - "swaziUchadiUtogoUtailandiUjikistaniUtokelauUtimo MasharikiUturukimen" + - "istaniUtunisiaUtongaUtukiUtrinidad na TobagoUtuvaluUtanzaniaUmarekan" + - "iUvatikaniUsantavisenti na GrenadiniUvenezuelaUvietinamuUvanuatuUwal" + - "is na FutunaUsamoaUyemeniAfrika du SuluUzambiaUzimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0007, 0x0011, 0x0011, 0x0011, 0x0019, - 0x0019, 0x0019, 0x0019, 0x0019, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, - 0x0035, 0x003b, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, - 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0048, - 0x0048, 0x0048, 0x0048, 0x004e, 0x0054, 0x005b, 0x005b, 0x0061, - 0x0061, 0x0067, 0x0070, 0x0070, 0x0070, 0x0075, 0x0075, 0x0075, - 0x0075, 0x007d, 0x0083, 0x0083, 0x0083, 0x008a, 0x0093, 0x009c, - // Entry 40 - 7F - 0x009c, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00ab, 0x00ab, 0x00b3, - 0x00bc, 0x00c4, 0x00c4, 0x00c4, 0x00c9, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00d6, 0x00dd, 0x00dd, 0x00e5, 0x00eb, 0x00fc, 0x00fc, - 0x0101, 0x010a, 0x0114, 0x011b, 0x0120, 0x012a, 0x012a, 0x012a, - 0x012a, 0x0134, 0x0139, 0x0143, 0x014a, 0x014a, 0x014a, 0x0154, - 0x015c, 0x0162, 0x016b, 0x016b, 0x0174, 0x017d, 0x0185, 0x0185, - 0x018d, 0x018d, 0x0193, 0x0193, 0x0193, 0x0199, 0x0199, 0x01a1, - 0x01a9, 0x01b0, 0x01b6, 0x01b6, 0x01bf, 0x01bf, 0x01c6, 0x01da, - // Entry 80 - BF - 0x01ea, 0x01f7, 0x01f7, 0x01f7, 0x0203, 0x0203, 0x020c, 0x0217, - 0x0220, 0x022a, 0x0232, 0x0239, 0x0240, 0x0248, 0x0250, 0x0256, - 0x0256, 0x0256, 0x0256, 0x025f, 0x025f, 0x0266, 0x0266, 0x0270, - 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, 0x0270, - 0x0270, 0x0270, 0x0270, 0x0277, 0x0277, 0x0277, 0x0281, 0x0281, - 0x0281, 0x0288, 0x0288, 0x0290, 0x0290, 0x0290, 0x0296, 0x0296, - 0x0296, 0x0296, 0x0296, 0x029c, 0x02a3, 0x02a9, 0x02bb, 0x02c1, - 0x02ca, 0x02d4, 0x02dc, 0x02f3, 0x02fd, 0x0307, 0x0307, 0x0307, - // Entry C0 - FF - 0x0307, 0x030f, 0x0316, 0x0316, 0x0320, 0x0328, 0x0328, 0x0328, - 0x032f, 0x0335, 0x0335, 0x0340, 0x0347, 0x034d, 0x0356, 0x0362, - 0x036b, 0x036b, 0x0374, 0x0374, 0x037d, 0x0386, 0x038e, 0x0397, - 0x0397, 0x03ac, 0x03b5, 0x03b5, 0x03bb, 0x03c1, 0x03c1, 0x03c1, - 0x03c7, 0x03c7, 0x03cc, 0x03d5, 0x03df, 0x03e7, 0x03f6, 0x0406, - 0x040e, 0x0414, 0x0419, 0x042c, 0x0433, 0x0433, 0x043c, 0x043c, - 0x043c, 0x043c, 0x043c, 0x0445, 0x0445, 0x0445, 0x044e, 0x0468, - 0x0472, 0x0472, 0x0472, 0x047c, 0x0484, 0x0494, 0x049a, 0x049a, - // Entry 100 - 13F - 0x04a1, 0x04a1, 0x04af, 0x04b6, 0x04bf, - }, - }, - { // mgo - "Kamalunaba aben tisɔ̀", - []uint16{ // 262 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 40 - 7F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 80 - BF - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry C0 - FF - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, - // Entry 100 - 13F - 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0017, - }, - }, - { // mk - mkRegionStr, - mkRegionIdx, - }, - { // ml - mlRegionStr, - mlRegionIdx, - }, - { // mn - mnRegionStr, - mnRegionIdx, - }, - { // mr - mrRegionStr, - mrRegionIdx, - }, - { // ms - msRegionStr, - msRegionIdx, - }, - { // mt - "Ascension IslandAndorral-Emirati Għarab Magħqudal-AfganistanAntigua u Ba" + - "rbudaAnguillal-Albanijal-Armenjal-Angolal-Antartikal-Arġentinais-Sam" + - "oa Amerikanal-Awstrijal-AwstraljaArubail-Gżejjer Alandl-Ażerbajġanil" + - "-Bożnija-ĦerzegovinaBarbadosil-Bangladeshil-Belġjuil-Burkina Fasoil-" + - "Bulgarijail-Bahrainil-Burundiil-BeninSaint BarthélemyBermudail-Brune" + - "iil-Bolivjain-Netherlands tal-KaribewIl-Brażilil-Bahamasil-BhutanGżi" + - "ra Bouvetil-Botswanail-Belarussjail-Belizeil-KanadaGżejjer Cocos (Ke" + - "eling)ir-Repubblika Demokratika tal-Kongoir-Repubblika Ċentru-Afrika" + - "nail-Kongo - BrazzavilleŻvizzerail-Kosta tal-AvorjuGżejjer Cookiċ-Ċi" + - "liil-KamerunCNil-Kolombjail-Gżira Clippertonil-Costa RicaKubaCape Ve" + - "rdeCuraçaoil-Gżira ChristmasĊipruir-Repubblika Ċekail-ĠermanjaDiego " + - "Garciail-Djiboutiid-DanimarkaDominicair-Repubblika Dominicanal-Alġer" + - "ijaCeuta u Melillal-Ekwadorl-Estonjal-Eġittuis-Saħara tal-Punentl-Er" + - "itreaSpanjal-EtjopjaUnjoni Ewropeail-FinlandjaFiġiil-Gżejjer Falklan" + - "dMikroneżjail-Gżejjer FaeroeFranzail-Gabonir-Renju UnitGrenadail-Geo" + - "rgiail-Guyana FranċiżaGuernseyil-GhanaĠibiltàGreenlandil-Gambjail-Gu" + - "ineaGuadeloupeil-Guinea Ekwatorjaliil-Greċjail-Georgia tan-Nofsinhar" + - " u l-Gżejjer Sandwich tan-Nofsinharil-GwatemalaGuamil-Guinea-Bissaui" + - "l-Guyanair-Reġjun Amministrattiv Speċjali ta’ Hong Kong tar-Repubbli" + - "ka tal-Poplu taċ-Ċinail-Gżejjer Heard u l-Gżejjer McDonaldil-Hondura" + - "sil-Kroazjail-Haitil-Ungerijail-Gżejjer Canaryl-Indoneżjal-IrlandaIż" + - "raelIsle of Manl-IndjaTerritorju Brittaniku tal-Oċean Indjanl-Iraql-" + - "Iranl-iżlandal-ItaljaJerseyil-Ġamajkail-Ġordanil-Ġappunil-Kenjail-Ki" + - "rgiżistanil-KambodjaKiribatiComorosSaint Kitts u Nevisil-Korea ta’ F" + - "uqil-Korea t’Isfelil-Kuwajtil-Gżejjer Caymanil-Każakistanil-Laosil-L" + - "ibanuSaint Luciail-Liechtensteinis-Sri Lankail-Liberjail-Lesotoil-Li" + - "twanjail-Lussemburguil-Latvjail-Libjail-MarokkMonacoil-Moldovail-Mon" + - "tenegroSaint MartinMadagascarGżejjer Marshalll-Eks-Repubblika Jugosl" + - "ava tal-Maċedoniail-Maliil-Myanmar/Burmail-Mongoljair-Reġjun Amminis" + - "trattiv Speċjali tal-Macao tar-Repubblika tal-Poplu taċ-ĊinaĠżejjer " + - "Mariana tat-TramuntanaMartiniqueil-MauritaniaMontserratMaltaMauritiu" + - "sil-Maldiviil-Malawiil-Messikuil-Malasjail-Mozambiquein-NamibjaNew C" + - "aledoniain-NiġerGżira Norfolkin-Niġerjain-Nikaragwain-Netherlandsin-" + - "Norveġjain-NepalNauruNiueNew Zealandl-Omanil-Panamail-PerùPolineżja " + - "FranċiżaPapua New Guineail-Filippiniil-Pakistanil-PolonjaSaint Pierr" + - "e u MiquelonGżejjer PitcairnPuerto Ricoit-Territorji Palestinjaniil-" + - "PortugallPalauil-Paragwajil-QatarRéunionir-Rumanijais-Serbjair-Russj" + - "air-Rwandal-Arabia Sawdijail-Gżejjer Solomonis-Seychellesis-Sudanl-I" + - "żvezjaSingaporeSaint Helenais-SlovenjaSvalbard u Jan Mayenis-Slovak" + - "kjaSierra LeoneSan Marinois-Senegalis-Somaljais-Surinameis-Sudan t’I" + - "sfelSão Tomé u PríncipeEl SalvadorSint Maartenis-Sirjais-SwazilandTr" + - "istan da Cunhail-Gżejjer Turks u Caicosiċ-ChadIt-Territorji Franċiżi" + - " tan-Nofsinharit-Togoit-Tajlandjait-Taġikistanit-TokelauTimor Lestei" + - "t-Turkmenistanit-TuneżijaTongait-TurkijaTrinidad u TobagoTuvaluit-Ta" + - "jwanit-Tanzanijal-Ukrajnal-UgandaIl-Gżejjer Minuri Mbiegħda tal-Ista" + - "ti Unitil-Istati Unitil-Urugwajl-Użbekistanl-Istat tal-Belt tal-Vati" + - "kanSaint Vincent u l-Grenadiniil-Venezwelail-Gżejjer Verġni Brittani" + - "ċiil-Gżejjer Verġni tal-Istati Unitiil-VjetnamVanuatuWallis u Futun" + - "aSamoaKosovoil-JemenMayottel-Afrika t’Isfeliż-Żambjaiż-ŻimbabweReġju" + - "n Mhux MagħrufDinjaAffrikaAmerika t’IsfelOċejanjaAffrika tal-PunentA" + - "merika ĊentraliAffrika tal-LvantAffrika ta’ FuqAffrika NofsaniAffrik" + - "a t’IsfelAmerikaKaribewAsja tal-LvantAsja t’Isfel ĊentraliAsja tax-X" + - "lokkEwropa t’IsfelAwstralja u New ZealandMelanesjaReġjun ta’ Mikrone" + - "żjaPolinesjaAsjaAsja ĊentraliAsja tal-PunentEwropaEwropa tal-LvantE" + - "wropa ta’ FuqEwropa tal-PunentAmerika Latina", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x0032, 0x003e, 0x004f, 0x0057, 0x0061, - 0x006a, 0x0072, 0x007d, 0x0089, 0x009b, 0x00a5, 0x00b0, 0x00b5, - 0x00c6, 0x00d4, 0x00ec, 0x00f4, 0x0101, 0x010b, 0x011a, 0x0126, - 0x0130, 0x013a, 0x0142, 0x0153, 0x015a, 0x0163, 0x016d, 0x0187, - 0x0191, 0x019b, 0x01a4, 0x01b1, 0x01bc, 0x01c9, 0x01d2, 0x01db, - 0x01f3, 0x0216, 0x0234, 0x024a, 0x0253, 0x0266, 0x0273, 0x027c, - 0x0286, 0x0288, 0x0293, 0x02a7, 0x02b4, 0x02b8, 0x02c2, 0x02ca, - 0x02dd, 0x02e3, 0x02f6, 0x0302, 0x030e, 0x0319, 0x0325, 0x032d, - // Entry 40 - 7F - 0x0345, 0x0350, 0x035f, 0x0368, 0x0371, 0x037a, 0x038f, 0x0398, - 0x039e, 0x03a7, 0x03b5, 0x03b5, 0x03c1, 0x03c6, 0x03da, 0x03e5, - 0x03f7, 0x03fd, 0x0405, 0x0412, 0x0419, 0x0423, 0x0437, 0x043f, - 0x0447, 0x0450, 0x0459, 0x0462, 0x046b, 0x0475, 0x048a, 0x0494, - 0x04d0, 0x04dc, 0x04e0, 0x04f0, 0x04f9, 0x0550, 0x0577, 0x0582, - 0x058c, 0x0594, 0x059e, 0x05b0, 0x05bc, 0x05c5, 0x05cc, 0x05d7, - 0x05de, 0x0605, 0x060b, 0x0611, 0x061b, 0x0623, 0x0629, 0x0634, - 0x063e, 0x0648, 0x0650, 0x065f, 0x066a, 0x0672, 0x0679, 0x068c, - // Entry 80 - BF - 0x069e, 0x06b0, 0x06b9, 0x06cb, 0x06d9, 0x06e0, 0x06e9, 0x06f4, - 0x0704, 0x0710, 0x071a, 0x0723, 0x072e, 0x073c, 0x0745, 0x074d, - 0x0756, 0x075c, 0x0766, 0x0773, 0x077f, 0x0789, 0x079a, 0x07c3, - 0x07ca, 0x07da, 0x07e5, 0x0836, 0x0856, 0x0860, 0x086d, 0x0877, - 0x087c, 0x0885, 0x088f, 0x0898, 0x08a2, 0x08ac, 0x08b9, 0x08c3, - 0x08d0, 0x08d9, 0x08e7, 0x08f2, 0x08fe, 0x090c, 0x0918, 0x0920, - 0x0925, 0x0929, 0x0934, 0x093a, 0x0943, 0x094b, 0x0960, 0x0970, - 0x097c, 0x0987, 0x0991, 0x09a8, 0x09b9, 0x09c4, 0x09de, 0x09ea, - // Entry C0 - FF - 0x09ef, 0x09fa, 0x0a02, 0x0a02, 0x0a0a, 0x0a15, 0x0a1e, 0x0a27, - 0x0a30, 0x0a40, 0x0a53, 0x0a60, 0x0a68, 0x0a72, 0x0a7b, 0x0a87, - 0x0a92, 0x0aa6, 0x0ab2, 0x0abe, 0x0ac8, 0x0ad2, 0x0adc, 0x0ae7, - 0x0af9, 0x0b0f, 0x0b1a, 0x0b26, 0x0b2e, 0x0b3a, 0x0b4a, 0x0b64, - 0x0b6c, 0x0b92, 0x0b99, 0x0ba5, 0x0bb3, 0x0bbd, 0x0bc8, 0x0bd7, - 0x0be3, 0x0be8, 0x0bf2, 0x0c03, 0x0c09, 0x0c12, 0x0c1e, 0x0c27, - 0x0c2f, 0x0c5c, 0x0c5c, 0x0c6a, 0x0c73, 0x0c80, 0x0c9c, 0x0cb7, - 0x0cc3, 0x0ce2, 0x0d06, 0x0d10, 0x0d17, 0x0d26, 0x0d2b, 0x0d31, - // Entry 100 - 13F - 0x0d39, 0x0d40, 0x0d52, 0x0d5d, 0x0d6a, 0x0d7f, 0x0d84, 0x0d8b, - 0x0d8b, 0x0d9c, 0x0da5, 0x0db7, 0x0dc8, 0x0dd9, 0x0dea, 0x0df9, - 0x0e0a, 0x0e11, 0x0e11, 0x0e18, 0x0e26, 0x0e3e, 0x0e4c, 0x0e5c, - 0x0e73, 0x0e7c, 0x0e95, 0x0e9e, 0x0ea2, 0x0eb0, 0x0ebf, 0x0ec5, - 0x0ed5, 0x0ee5, 0x0ef6, 0x0ef6, 0x0f04, - }, - }, - { // mua - "andorraSǝr Arabiya ma tainiafghanistaŋantiguan ne Barbudaanguiyaalbaniya" + - "armeniyaangolaargentiniyasamoa Amerikaaustriyaaustraliyaarubaazerbai" + - "jaŋbosniya ne Herzegovinabarbadiyabangladeshiyabelgikaburkina Fasobu" + - "lgariyabahraiŋburundibeniŋbermudiyabruniyaboliviyabrazilyabahamasbut" + - "aŋbotswanabelarussiyabeliziyakanadaSǝr Kongo ma dii ne zaircentrafri" + - "kakongoSǝr Swissser Ivoiriyakook ma laŋnesyilikameruŋsyiŋkolombiyako" + - "sta RikaKubakap ma laŋneSyipriyaSǝr SyekGermaniyaDjiboutiDaŋmarkDomi" + - "nikSǝr Dominik ma liialgeriyaEkwatǝrEstoniyaSǝr EgyptSǝr EritreEspaŋ" + - "iyaEtiopiaSǝr FinlandSǝr FijiSǝr malouniya ma laŋneMicronesiyaFranss" + - "ǝGaboŋSǝr AnglofoŋGrenadǝGeorgiyaSǝr Guyana ma FranssǝGanaSǝr Gibra" + - "ltarSǝr GroenlandGambiyaGuineSǝr GwadeloupǝSǝr GuineSǝr GrekGwatemal" + - "aGwamGuine ma BissaoGuyanaSǝr HonduraskroatiyaSǝr HaitiHungriyaIndon" + - "esiyaSǝr IrelandSǝr IsraelSǝr Indǝanglofoŋ ma IndiyaIrakIraŋSǝr Isla" + - "ndItaliyaJamaikaJordaniyaJapaŋSǝr KenyaKirgizstaŋkambodiyaSǝr Kiriba" + - "tikomoraSǝr Kristof ne NievǝSǝr Kore fah sǝŋSǝr Kore nekǝsǝŋSǝr Kowa" + - "itkayman ma laŋneKazakstaŋSǝr LaosLibaŋSǝr LuciaLichtǝnsteiŋSǝr Lank" + - "aLiberiyaSǝr LesothoLituaniyaSǝr LuxemburgLetoniyaLibiyaMarokMonakoM" + - "oldoviyaMadagaskarSǝr Marshall ma laŋneMacedoniyaSǝr MaliSǝr Myanmar" + - "MongoliyaSǝr Maria ma laŋneMartinikaMauritaniyaSǝr MontserratSǝr Mal" + - "taSǝr MauricǝMaldivǝSǝr MalawiMexikoMalaysiyaMozambikaNamibiyaKaledo" + - "niya mafuuSǝr NigerNorfolk ma laŋneNigeriyaNikaragwaSǝr ma kasǝŋNorv" + - "egǝSǝr NepalSǝr NauruNiweZeland mafuuOmaŋSǝr PanamaPeruSǝr Polynesiy" + - "a ma FranssǝPapuasiya Guine mafuuFilipiŋPakistaŋPologŋSǝr Pǝtar ne M" + - "ikǝlonPitkairnPorto RikoSǝr PalestiniyaSǝr PortugalSǝr PalauParagwai" + - "KatarSǝr ReunionRomaniyaRussiyaRwandaSǝr ArabiyaSǝr Salomon ma laŋne" + - "SaichelSudaŋSǝr SuedSingapurSǝr HelenaSloveniyaSlovakiyaSierra Leonǝ" + - "Sǝr MarinoSenegalSomaliyaSǝr SurinamSao Tome ne PrincipeSǝr Salvador" + - "SyriaSǝr SwazilandTurkiya ne kaicos ma laŋnesyadSǝr TogoTailandTajik" + - "istaŋSǝr TokelauTimoriyaTurkmenistaŋTunisiyaSǝr TongaTurkiyaTrinite " + - "ne TobagoSǝr TuvaluTaiwaŋTanzaniyaUkraiŋUgandaAmerikaUrugwaiUzbekist" + - "aŋVaticaŋSǝr Vinceŋ ne GrenadiŋSǝr Venezuelaser Anglofon ma laŋneSǝr" + - " amerika ma laŋneSǝr VietnamSǝr VanuatuWallis ne FutunaSǝr SamoaYeme" + - "ŋMayotAfrika nekǝsǝŋZambiyaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x001c, 0x0028, 0x003b, 0x0042, 0x004a, - 0x0052, 0x0058, 0x0058, 0x0063, 0x0070, 0x0078, 0x0082, 0x0087, - 0x0087, 0x0092, 0x00a8, 0x00b1, 0x00be, 0x00c5, 0x00d1, 0x00da, - 0x00e2, 0x00e9, 0x00ef, 0x00ef, 0x00f8, 0x00ff, 0x0107, 0x0107, - 0x010f, 0x0116, 0x011c, 0x011c, 0x0124, 0x012f, 0x0137, 0x013d, - 0x013d, 0x0156, 0x0161, 0x0166, 0x0170, 0x017c, 0x018a, 0x018f, - 0x0197, 0x019c, 0x01a5, 0x01a5, 0x01af, 0x01b3, 0x01c0, 0x01c0, - 0x01c0, 0x01c8, 0x01d1, 0x01da, 0x01da, 0x01e2, 0x01ea, 0x01f1, - // Entry 40 - 7F - 0x0204, 0x020c, 0x020c, 0x0214, 0x021c, 0x0226, 0x0226, 0x0231, - 0x023a, 0x0241, 0x0241, 0x0241, 0x024d, 0x0256, 0x026e, 0x0279, - 0x0279, 0x0281, 0x0287, 0x0295, 0x029d, 0x02a5, 0x02bc, 0x02bc, - 0x02c0, 0x02ce, 0x02dc, 0x02e3, 0x02e8, 0x02f8, 0x0302, 0x030b, - 0x030b, 0x0314, 0x0318, 0x0327, 0x032d, 0x032d, 0x032d, 0x033a, - 0x0342, 0x034c, 0x0354, 0x0354, 0x035e, 0x036a, 0x0375, 0x0375, - 0x037f, 0x0392, 0x0396, 0x039b, 0x03a6, 0x03ad, 0x03ad, 0x03b4, - 0x03bd, 0x03c3, 0x03cd, 0x03d8, 0x03e1, 0x03ee, 0x03f4, 0x040a, - // Entry 80 - BF - 0x041d, 0x0431, 0x043c, 0x044c, 0x0456, 0x045f, 0x0465, 0x046f, - 0x047d, 0x0487, 0x048f, 0x049b, 0x04a4, 0x04b2, 0x04ba, 0x04c0, - 0x04c5, 0x04cb, 0x04d4, 0x04d4, 0x04d4, 0x04de, 0x04f5, 0x04ff, - 0x0508, 0x0514, 0x051d, 0x051d, 0x0531, 0x053a, 0x0545, 0x0554, - 0x055e, 0x056b, 0x0573, 0x057e, 0x0584, 0x058d, 0x0596, 0x059e, - 0x05ae, 0x05b8, 0x05c9, 0x05d1, 0x05da, 0x05e9, 0x05f1, 0x05fb, - 0x0605, 0x0609, 0x0615, 0x061a, 0x0625, 0x0629, 0x0644, 0x0659, - 0x0661, 0x066a, 0x0671, 0x0688, 0x0690, 0x069a, 0x06aa, 0x06b7, - // Entry C0 - FF - 0x06c1, 0x06c9, 0x06ce, 0x06ce, 0x06da, 0x06e2, 0x06e2, 0x06e9, - 0x06ef, 0x06fb, 0x0711, 0x0718, 0x071e, 0x0727, 0x072f, 0x073a, - 0x0743, 0x0743, 0x074c, 0x0759, 0x0764, 0x076b, 0x0773, 0x077f, - 0x077f, 0x0793, 0x07a0, 0x07a0, 0x07a5, 0x07b3, 0x07b3, 0x07ce, - 0x07d2, 0x07d2, 0x07db, 0x07e2, 0x07ed, 0x07f9, 0x0801, 0x080e, - 0x0816, 0x0820, 0x0827, 0x0838, 0x0843, 0x084a, 0x0853, 0x085a, - 0x0860, 0x0860, 0x0860, 0x0867, 0x086e, 0x0879, 0x0881, 0x089a, - 0x08a8, 0x08be, 0x08d4, 0x08e0, 0x08ec, 0x08fc, 0x0906, 0x0906, - // Entry 100 - 13F - 0x090c, 0x0911, 0x0922, 0x0929, 0x0931, - }, - }, - { // my - myRegionStr, - myRegionIdx, - }, - { // mzn - "آسنسیون جزیرهآندورامتحده عربی اماراتافغانستونآنتیگوا و باربوداآنگویلاآلب" + - "انیارمنستونآنگولاجنوبی یخ\u200cبزه قطبآرژانتینآمریکای ِساموآاتریشاس" + - "ترالیاآروباآلند جزیرهآذربایجونبوسنی و هرزگوینباربادوسبنگلادشبلژیکبو" + - "رکینا فاسوبلغارستونبحرینبوروندیبنینسنت بارتلمیبرمودابرونئیبولیویهلن" + - "د ِکاراییبی جزایربرزیلباهامابوتانبووت جزیرهبوتساوانابلاروسبلیزکاناد" + - "اکوک (کیلینگ) جزایرکنگو کینشاسامرکزی آفریقای جمهوریکنگو برازاویلسوی" + - "یسعاج ِساحلکوک جزایرشیلیکامرونچینکلمبیاکلیپرتون جزیرهکاستاریکاکوباک" + - "یپ وردکوراسائوکریسمس جزیرهقبرسچک جمهوریآلماندیگو گارسیاجیبوتیدانمار" + - "کدومنیکادومنیکن جمهوریالجزیرهسوتا و ملیلهاکوادراستونیمصرغربی صحراار" + - "یترهایسپانیااتیوپیاروپا اتحادیهفنلاندفیجیفالکلند جزیره\u200cئونمیکر" + - "ونزیفارو جزایرفرانسهگابونبریتانیاگراناداگرجستونفرانسه\u200cی ِگویان" + - "گرنزیغناجبل طارقگرینلندگامبیاگینهگوادلوپاستوایی گینهیونانجنوبی جورج" + - "یا و جنوبی ساندویچ جزایرگواتمالاگوئامگینه بیسائوگویانهنگ کنگهارد و " + - "مک\u200cدونالد جزایرهندوراسکرواسیهاییتیمجارستونقناری جزایراندونزیای" + - "رلندایسراییلمن ِجزیرههندبریتانیای هند ِاوقیانوس ِمناطقعراقایرانایسل" + - "ندایتالیاجرسیجاماییکااردنجاپونکنیاقرقیزستونکامبوجکیریباتیکومورسنت ک" + - "یتس و نویسشمالی کُرهجنوبی کُرهکویتکیمن جزیره\u200cئونقزاقستونلائوسل" + - "بنانسنت لوسیالیختن اشتاینسریلانکالیبریالسوتولتونیلوکزامبورگلاتویالی" + - "بیمراکشموناکومولداویمونته\u200cنگروسنت مارتینماداگاسکارمارشال جزایر" + - "مقدونیهمالیمیانمارمغولستونماکائو (چین دله)شمالی ماریانا جزایرمارتین" + - "یک جزیره\u200cئونموریتانیمونتسراتمالتمورى تيوسمالدیومالاویمکزیکمالز" + - "یموزامبیکنامبیانیو کالیدونیانیجرنورفولک جزیرهنیجریهنیکاراگوئههلندنر" + - "وژنپالنائورونیئونیوزلندعمانپاناماپروفرانسه\u200cی پولی\u200cنزیپاپو" + - "ا نو گینهفیلیپینپاکستونلهستونسن پییر و میکلنپیتکارین جزایرپورتوریکو" + - "فلسطین ِسرزمینپرتغالپالائوپاراگوئهقطراوقیانوسیه\u200cی ِپرت ِجائونر" + - "ئونیونرومانیصربستونروسیهروآنداعربستونسلیمون جزیرهسیشلسودانسوئدسنگاپ" + - "ورسنت هلنااسلوونیسوالبارد و يان مايناسلواکیسیرالئونسن مارینوسنگالسو" + - "مالیسورینامجنوبی سودانسائوتومه و پرینسیپالسالوادورسنت مارتنسوریهسوا" + - "زیلندتریستان دا جونهاتورکس و کایکوس جزایرچادفرانسه\u200cی جنوبی منا" + - "طقتوگوتایلندتاجیکستونتوکلائوتیمور شرقیترکمونستونتونستونگاترکیهترینی" + - "داد و توباگوتووالوتایوانتانزانیااوکرایناوگانداآمریکای پَرتِ\u200cپِ" + - "لا جزیره\u200cئونمتحده ایالاتاروگوئهازبکستونواتیکانسنت وینسنت و گرن" + - "ادینونزوئلابریتانیای ویرجینآمریکای ویرجینویتناموانواتووالیس و فوتون" + - "اساموآکوزوویمنمایوتجنوبی افریقازامبیازیمبابوهنامَیِّن منطقهجهونآفری" + - "قاشمالی آمریکاجنوبی آمریکااوقیانوسیهغربی آفریقامیونی آمریکاشرقی آفر" + - "یقاشمالی ۀفریقامیونی آفریقاجنوبی آفریقاآمریکاشمالی امریکاکاراییبشرق" + - "ی آسیاجنوبی آسیاآسیای ِجنوب\u200cشرقی\u200cوَرجنوبی اروپااوسترالزیم" + - "لانزیمیکرونزی منقطهپولی\u200cنزیآسیامیونی آسیاغربی آسیااروپاشرقی ار" + - "وپاشمالی اروپاغربی اروپالاتین آمریکا", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0019, 0x0025, 0x0045, 0x0057, 0x0077, 0x0085, 0x0091, - 0x00a1, 0x00ad, 0x00cc, 0x00dc, 0x00f7, 0x0101, 0x0111, 0x011b, - 0x012e, 0x0140, 0x015c, 0x016c, 0x017a, 0x0184, 0x019b, 0x01ad, - 0x01b7, 0x01c5, 0x01cd, 0x01e2, 0x01ee, 0x01fa, 0x0206, 0x022c, - 0x0236, 0x0242, 0x024c, 0x025f, 0x0271, 0x027d, 0x0285, 0x0291, - 0x02b1, 0x02c8, 0x02ee, 0x0307, 0x0311, 0x0322, 0x0333, 0x033b, - 0x0347, 0x034d, 0x0359, 0x0374, 0x0386, 0x038e, 0x039b, 0x03ab, - 0x03c2, 0x03ca, 0x03db, 0x03e5, 0x03fa, 0x0406, 0x0414, 0x0422, - // Entry 40 - 7F - 0x043d, 0x044b, 0x0461, 0x046d, 0x0479, 0x047f, 0x0490, 0x049c, - 0x04ac, 0x04b8, 0x04d1, 0x04d1, 0x04dd, 0x04e5, 0x0507, 0x0517, - 0x052a, 0x0536, 0x0540, 0x0550, 0x055e, 0x056c, 0x058a, 0x0594, - 0x059a, 0x05a9, 0x05b7, 0x05c3, 0x05cb, 0x05d9, 0x05f0, 0x05fa, - 0x0639, 0x0649, 0x0653, 0x0668, 0x0672, 0x067f, 0x06a9, 0x06b7, - 0x06c3, 0x06cf, 0x06df, 0x06f4, 0x0702, 0x070e, 0x071e, 0x072f, - 0x0735, 0x076e, 0x0776, 0x0780, 0x078c, 0x079a, 0x07a2, 0x07b2, - 0x07ba, 0x07c4, 0x07cc, 0x07de, 0x07ea, 0x07fa, 0x0804, 0x081f, - // Entry 80 - BF - 0x0832, 0x0845, 0x084d, 0x0869, 0x0879, 0x0883, 0x088d, 0x089e, - 0x08b5, 0x08c5, 0x08d1, 0x08db, 0x08e5, 0x08f9, 0x0905, 0x090d, - 0x0917, 0x0923, 0x0931, 0x0946, 0x0959, 0x096d, 0x0984, 0x0992, - 0x099a, 0x09a8, 0x09b8, 0x09d4, 0x09f8, 0x0a1c, 0x0a2c, 0x0a3c, - 0x0a44, 0x0a55, 0x0a61, 0x0a6d, 0x0a77, 0x0a81, 0x0a91, 0x0a9d, - 0x0ab6, 0x0abe, 0x0ad7, 0x0ae3, 0x0af7, 0x0aff, 0x0b07, 0x0b0f, - 0x0b1b, 0x0b23, 0x0b31, 0x0b39, 0x0b45, 0x0b4b, 0x0b6e, 0x0b86, - 0x0b94, 0x0ba2, 0x0bae, 0x0bc9, 0x0be4, 0x0bf6, 0x0c11, 0x0c1d, - // Entry C0 - FF - 0x0c29, 0x0c39, 0x0c3f, 0x0c6e, 0x0c7c, 0x0c88, 0x0c96, 0x0ca0, - 0x0cac, 0x0cba, 0x0cd1, 0x0cd9, 0x0ce3, 0x0ceb, 0x0cf9, 0x0d08, - 0x0d16, 0x0d39, 0x0d47, 0x0d57, 0x0d68, 0x0d72, 0x0d7e, 0x0d8c, - 0x0da1, 0x0dc3, 0x0dd7, 0x0de8, 0x0df2, 0x0e02, 0x0e20, 0x0e45, - 0x0e4b, 0x0e72, 0x0e7a, 0x0e86, 0x0e98, 0x0ea6, 0x0eb9, 0x0ecd, - 0x0ed5, 0x0edf, 0x0ee9, 0x0f09, 0x0f15, 0x0f21, 0x0f31, 0x0f3f, - 0x0f4d, 0x0f85, 0x0f85, 0x0f9c, 0x0faa, 0x0fba, 0x0fc8, 0x0fed, - 0x0ffb, 0x101a, 0x1035, 0x1041, 0x104f, 0x1069, 0x1073, 0x107d, - // Entry 100 - 13F - 0x1083, 0x108d, 0x10a4, 0x10b0, 0x10c0, 0x10db, 0x10e3, 0x10ef, - 0x1106, 0x111d, 0x1131, 0x1146, 0x115d, 0x1172, 0x1189, 0x11a0, - 0x11b7, 0x11c3, 0x11da, 0x11e8, 0x11f9, 0x120c, 0x1235, 0x124a, - 0x125c, 0x1268, 0x1283, 0x1294, 0x129c, 0x12af, 0x12c0, 0x12ca, - 0x12dd, 0x12f2, 0x1305, 0x1305, 0x131c, - }, - }, - { // naq - "AndorrabUnited Arab EmiratesAfghanistanniAntiguab tsî BarbudabAnguillabA" + - "lbaniabArmeniabAngolabArgentinabAmericab SamoabAustriabAustraliebAru" + - "babAzerbaijanniBosniab tsî HerzegovinabBarbadosBangladesBelgiummiBur" + - "kina FasobBulgariabBahrainBurundibBeninsBermudasBruneiBoliviabBrazil" + - "iabBahamasBhutansBotswanabBelarusBelizeKanadabDemocratic Republic of" + - " the CongoCentral African RepublikiCongobSwitzerlandiIvoorkusiCook I" + - "slandsChilibCameroonniChinabColombiabCosta RicaCubabCape Verde Islan" + - "dsCyprusCzech RepublikiDuitslandiDjiboutiDenmarkiDominicabDominican " + - "RepublicAlgeriabEcuadoriEstoniabEgiptebEritreabSpaniebEthiopiabFinla" + - "ndiFijibFalkland IslandsMicronesiaFrankreikiGaboniUnited KingdomGren" + - "adaGeorgiabFrench GuianaGhanabGibraltarGreenlandGambiabGuineabGuadel" + - "oupeEquatorial GuineabXrikelandiGuatemalaGuamGuinea-BissauGuyanaHond" + - "urasCroatiabHaitiHongareiebIndonesiabIrlandiIsraeliIndiabBritish Ind" + - "ian Ocean TerritoryIraqiIranniIcelandItaliabJamaicabJordanniJapanniK" + - "enyabKyrgyzstanniCambodiabKiribatiComorosSaint Kitts and NevisKoreab" + - ", NoordKoreab, SuidKuwaitiCayman IslandsKazakhstanniLaosLebanonniSai" + - "nt LuciaLiechtensteinniSri LankabLiberiabLesothobLithuaniabLuxembour" + - "giLatviaLibyabMoroccoMonacoMoldovaMadagascariMarshall IslandsMacedon" + - "iabMalibMyanmarMongoliaNorthern Mariana IslandsMartiniqueMauritaniaM" + - "ontserratMaltaMauritiusMaldivesMalawibMexicobMalaysiabMozambikiNamib" + - "iabNew CaledoniaNigeriNorfolk IslandNigeriebNicaraguabNetherlandsNoo" + - "rweebNepaliNauruNiueNew ZealandiOmanPanamaPerubFrench PolynesiaPapua" + - " New GuineabPhilippinniPakistanniPolandiSaint Pierre and MiquelonPit" + - "cairnPuerto RicoPalestinian West Bank and GazaPortugaliPalauParaguai" + - "bQatarRéunionRomaniaRasiabRwandabSaudi ArabiabSolomon IslandsSeychel" + - "lesSudanniSwedebSingaporeSaint HelenaSloveniaSlovakiaSierra LeoneSan" + - " MarinoSenegaliSomaliabSurinameSão Tomé and PríncipeEl SalvadoriSyri" + - "abSwazilandiTurks and Caicos IslandsChadiTogobThailandiTajikistanTok" + - "elauEast TimorTurkmenistanTunisiabTongaTurkeiebTrinidad and TobagoTu" + - "valuTaiwanTanzaniabUkraineUgandabAmerikabUruguaibUzbekistanVatican S" + - "tateSaint Vincent and the GrenadinesVenezuelabBritish Virgin Islands" + - "U.S. Virgin IslandsVietnammiVanuatuWallis and FutunaSamoaYemenMayott" + - "eSuid AfrikabZambiabZimbabweb", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x001c, 0x0029, 0x003f, 0x0048, 0x0050, - 0x0058, 0x005f, 0x005f, 0x0069, 0x0078, 0x0080, 0x008a, 0x0090, - 0x0090, 0x009c, 0x00b5, 0x00bd, 0x00c6, 0x00cf, 0x00dc, 0x00e5, - 0x00ec, 0x00f4, 0x00fa, 0x00fa, 0x0102, 0x0108, 0x0110, 0x0110, - 0x0119, 0x0120, 0x0127, 0x0127, 0x0130, 0x0137, 0x013d, 0x0144, - 0x0144, 0x0164, 0x017d, 0x0183, 0x018f, 0x0198, 0x01a4, 0x01aa, - 0x01b4, 0x01ba, 0x01c3, 0x01c3, 0x01cd, 0x01d2, 0x01e4, 0x01e4, - 0x01e4, 0x01ea, 0x01f9, 0x0203, 0x0203, 0x020b, 0x0213, 0x021c, - // Entry 40 - 7F - 0x022e, 0x0236, 0x0236, 0x023e, 0x0246, 0x024d, 0x024d, 0x0255, - 0x025c, 0x0265, 0x0265, 0x0265, 0x026d, 0x0272, 0x0282, 0x028c, - 0x028c, 0x0296, 0x029c, 0x02aa, 0x02b1, 0x02b9, 0x02c6, 0x02c6, - 0x02cc, 0x02d5, 0x02de, 0x02e5, 0x02ec, 0x02f6, 0x0308, 0x0312, - 0x0312, 0x031b, 0x031f, 0x032c, 0x0332, 0x0332, 0x0332, 0x033a, - 0x0342, 0x0347, 0x0351, 0x0351, 0x035b, 0x0362, 0x0369, 0x0369, - 0x036f, 0x038d, 0x0392, 0x0398, 0x039f, 0x03a6, 0x03a6, 0x03ae, - 0x03b6, 0x03bd, 0x03c3, 0x03cf, 0x03d8, 0x03e0, 0x03e7, 0x03fc, - // Entry 80 - BF - 0x0409, 0x0415, 0x041c, 0x042a, 0x0436, 0x043a, 0x0443, 0x044e, - 0x045d, 0x0467, 0x046f, 0x0477, 0x0481, 0x048c, 0x0492, 0x0498, - 0x049f, 0x04a5, 0x04ac, 0x04ac, 0x04ac, 0x04b7, 0x04c7, 0x04d1, - 0x04d6, 0x04dd, 0x04e5, 0x04e5, 0x04fd, 0x0507, 0x0511, 0x051b, - 0x0520, 0x0529, 0x0531, 0x0538, 0x053f, 0x0548, 0x0551, 0x0559, - 0x0566, 0x056c, 0x057a, 0x0582, 0x058c, 0x0597, 0x059f, 0x05a5, - 0x05aa, 0x05ae, 0x05ba, 0x05be, 0x05c4, 0x05c9, 0x05d9, 0x05ea, - 0x05f5, 0x05ff, 0x0606, 0x061f, 0x0627, 0x0632, 0x0650, 0x0659, - // Entry C0 - FF - 0x065e, 0x0667, 0x066c, 0x066c, 0x0674, 0x067b, 0x067b, 0x0681, - 0x0688, 0x0695, 0x06a4, 0x06ae, 0x06b5, 0x06bb, 0x06c4, 0x06d0, - 0x06d8, 0x06d8, 0x06e0, 0x06ec, 0x06f6, 0x06fe, 0x0706, 0x070e, - 0x070e, 0x0726, 0x0732, 0x0732, 0x0738, 0x0742, 0x0742, 0x075a, - 0x075f, 0x075f, 0x0764, 0x076d, 0x0777, 0x077e, 0x0788, 0x0794, - 0x079c, 0x07a1, 0x07a9, 0x07bc, 0x07c2, 0x07c8, 0x07d1, 0x07d8, - 0x07df, 0x07df, 0x07df, 0x07e7, 0x07ef, 0x07f9, 0x0806, 0x0826, - 0x0830, 0x0846, 0x0859, 0x0862, 0x0869, 0x087a, 0x087f, 0x087f, - // Entry 100 - 13F - 0x0884, 0x088b, 0x0897, 0x089e, 0x08a7, - }, - }, - { // nd - "AndoraUnited Arab EmiratesAfghanistanAntigua le BarbudaAnguillaAlbaniaAr" + - "meniaAngolaAjentinaSamoa ye AmelikaAustriaAustraliaArubhaAzerbaijanB" + - "hosnia le HerzegovinaBhabhadosiBhangiladeshiBhelgiumBhukina FasoBhul" + - "gariyaBhahareniBhurundiBheniniBhemudaBruneiBholiviyaBraziliBhahamasB" + - "hutaniBotswanaBhelarusiBhelizeKhanadaDemocratic Republic of the Cong" + - "oCentral African RepublicKhongoSwitzerlandIvory CoastCook IslandsChi" + - "leKhameruniChinaKholombiyaKhosta RikhaCubaCape Verde IslandsCyprusCz" + - "ech RepublicGermanyDjiboutiDenmakhiDominikhaDominican RepublicAljeri" + - "yaEcuadorEstoniaEgyptEritreaSpainEthiopiaFinlandFijiFalkland Islands" + - "MicronesiaFuransiGabhoniUnited KingdomGrenadaGeorgiaGwiyana ye Furan" + - "siGhanaGibraltarGreenlandGambiyaGuineaGuadeloupeEquatorial GuineaGre" + - "eceGuatemalaGuamGuinea-BissauGuyanaHondurasCroatiaHayitiHungaryIndon" + - "esiyaIrelandIsuraeliIndiyaBritish Indian Ocean TerritoryIrakiIranIce" + - "landItaliJamaicaJodaniJapanKhenyaKyrgyzstanCambodiaKhiribatiKhomoroS" + - "aint Kitts and NevisNorth KoreaSouth KoreaKhuweitiCayman IslandsKaza" + - "khstanLaosLebhanoniSaint LuciaLiechtensteinSri LankaLibheriyaLesotho" + - "LithuaniaLuxembourgLatviaLibhiyaMorokhoMonakhoMoldovaMadagaskaMarsha" + - "ll IslandsMacedoniaMaliMyanmarMongoliaNorthern Mariana IslandsMartin" + - "iqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiMeksikhoMalezhiy" + - "aMozambiqueNamibhiyaNew CaledoniaNigerNorfolk IslandNigeriyaNicaragu" + - "aNetherlandsNoweyiNephaliNauruNiueNew ZealandOmaniPanamaPheruPholine" + - "siya ye FulansiPapua New GuineaPhilippinesPhakistaniPholandiSaint Pi" + - "erre and MiquelonPitcairnPuerto RicoPalestinian West Bank and GazaPo" + - "rtugalPalauParaguayKathariRéunionRomaniaRashiyaRuwandaSaudi ArabiaSo" + - "lomon IslandsSeychellesSudaniSwedenSingaporeSaint HelenaSloveniaSlov" + - "akiaSierra LeoneSan MarinoSenegaliSomaliyaSurinameSão Tomé and Prínc" + - "ipeEl SalvadorSyriaSwazilandTurks and Caicos IslandsChadiThogoThayil" + - "andiTajikistanThokelawuEast TimorTurkmenistanTunisiyaThongaThekhiTri" + - "nidad le TobagoThuvaluThayiwaniTanzaniyaYukreiniUgandaAmelikaYurugwa" + - "iUzbekistanVatican StateSaint Vincent and the GrenadinesVenezuelaBri" + - "tish Virgin IslandsU.S. Virgin IslandsVietnamVhanuatuWallis and Futu" + - "naSamowaYemeniMayotteMzansi ye AfrikaZambiyaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x001a, 0x0025, 0x0037, 0x003f, 0x0046, - 0x004d, 0x0053, 0x0053, 0x005b, 0x006b, 0x0072, 0x007b, 0x0081, - 0x0081, 0x008b, 0x00a1, 0x00ab, 0x00b8, 0x00c0, 0x00cc, 0x00d6, - 0x00df, 0x00e7, 0x00ee, 0x00ee, 0x00f5, 0x00fb, 0x0104, 0x0104, - 0x010b, 0x0113, 0x011a, 0x011a, 0x0122, 0x012b, 0x0132, 0x0139, - 0x0139, 0x0159, 0x0171, 0x0177, 0x0182, 0x018d, 0x0199, 0x019e, - 0x01a7, 0x01ac, 0x01b6, 0x01b6, 0x01c2, 0x01c6, 0x01d8, 0x01d8, - 0x01d8, 0x01de, 0x01ec, 0x01f3, 0x01f3, 0x01fb, 0x0203, 0x020c, - // Entry 40 - 7F - 0x021e, 0x0226, 0x0226, 0x022d, 0x0234, 0x0239, 0x0239, 0x0240, - 0x0245, 0x024d, 0x024d, 0x024d, 0x0254, 0x0258, 0x0268, 0x0272, - 0x0272, 0x0279, 0x0280, 0x028e, 0x0295, 0x029c, 0x02ae, 0x02ae, - 0x02b3, 0x02bc, 0x02c5, 0x02cc, 0x02d2, 0x02dc, 0x02ed, 0x02f3, - 0x02f3, 0x02fc, 0x0300, 0x030d, 0x0313, 0x0313, 0x0313, 0x031b, - 0x0322, 0x0328, 0x032f, 0x032f, 0x0339, 0x0340, 0x0348, 0x0348, - 0x034e, 0x036c, 0x0371, 0x0375, 0x037c, 0x0381, 0x0381, 0x0388, - 0x038e, 0x0393, 0x0399, 0x03a3, 0x03ab, 0x03b4, 0x03bb, 0x03d0, - // Entry 80 - BF - 0x03db, 0x03e6, 0x03ee, 0x03fc, 0x0406, 0x040a, 0x0413, 0x041e, - 0x042b, 0x0434, 0x043d, 0x0444, 0x044d, 0x0457, 0x045d, 0x0464, - 0x046b, 0x0472, 0x0479, 0x0479, 0x0479, 0x0482, 0x0492, 0x049b, - 0x049f, 0x04a6, 0x04ae, 0x04ae, 0x04c6, 0x04d0, 0x04da, 0x04e4, - 0x04e9, 0x04f2, 0x04fa, 0x0500, 0x0508, 0x0511, 0x051b, 0x0524, - 0x0531, 0x0536, 0x0544, 0x054c, 0x0555, 0x0560, 0x0566, 0x056d, - 0x0572, 0x0576, 0x0581, 0x0586, 0x058c, 0x0591, 0x05a7, 0x05b7, - 0x05c2, 0x05cc, 0x05d4, 0x05ed, 0x05f5, 0x0600, 0x061e, 0x0626, - // Entry C0 - FF - 0x062b, 0x0633, 0x063a, 0x063a, 0x0642, 0x0649, 0x0649, 0x0650, - 0x0657, 0x0663, 0x0672, 0x067c, 0x0682, 0x0688, 0x0691, 0x069d, - 0x06a5, 0x06a5, 0x06ad, 0x06b9, 0x06c3, 0x06cb, 0x06d3, 0x06db, - 0x06db, 0x06f3, 0x06fe, 0x06fe, 0x0703, 0x070c, 0x070c, 0x0724, - 0x0729, 0x0729, 0x072e, 0x0738, 0x0742, 0x074b, 0x0755, 0x0761, - 0x0769, 0x076f, 0x0775, 0x0787, 0x078e, 0x0797, 0x07a0, 0x07a8, - 0x07ae, 0x07ae, 0x07ae, 0x07b5, 0x07bd, 0x07c7, 0x07d4, 0x07f4, - 0x07fd, 0x0813, 0x0826, 0x082d, 0x0835, 0x0846, 0x084c, 0x084c, - // Entry 100 - 13F - 0x0852, 0x0859, 0x0869, 0x0870, 0x0878, - }, - }, - { // ne - neRegionStr, - neRegionIdx, - }, - { // nl - nlRegionStr, - nlRegionIdx, - }, - { // nmg - "Andɔ́raMinlambɔ́ Nsaŋ́nsa mí ArabiaAfganistaŋAntíga bá BarbúdaAnguíllaAl" + - "baniaArméniaAngolaArgentínaSamoa m ́Amɛ́rkaÖtrishÖstraliáÁrúbaAzerba" + - "ïjaŋBosnia na ƐrzegovinaBarbadoBɛŋgladɛshBɛlgikBurkina FasoBulgaria" + - "BahrainBurundiBeninBɛrmudaBrunɛiBoliviaBrésilBahamasButaŋBotswanaBel" + - "arusBɛlizKanadaKongó ZaïreSentrafríkaKongoSwitzɛrlandKote d´IvoireMa" + - "ŋ́ má KookTshiliKamerunShineKɔlɔ́mbiaKosta RíkaKubaMaŋ́ má KapvɛrSi" + - "priaNlambɔ́ bó tschɛkJamanJibútiDanemarkDominíkaNlambɔ́ DominíkaAlge" + - "riaEkuateurƐstoniaÄgyptɛnErytreaPaŋáEthiopiáFinlandeFijiáMaŋ má Falk" + - "landMikronesiaFalaGabɔŋNlambɔ́ NgɛlɛnGrenadaJɔrgiaGuyane FalaGánaGil" + - "bratarGreenlandGambiaGuineGuadeloupGuine EkuatorialGrɛceGuatemalaGua" + - "mGuine BissoGuyanaƆndúrasKroasiaHaïtiƆngríaIndonesiaIrlandÄsrɛlIndia" + - "Nlambɔ́ ngɛlɛn ma yí maŋ ntsiɛhIrakIranIslandItaliaJamaikaJɔrdaniaJa" + - "pɔnKɛnyaKyrgystaŋKambodiaKiribatiKɔmɔrSaint Kitts na NevisKoré yí bv" + - "uɔKoré yí síKowɛitMaŋ́ má kumbiKazakstaŋLaosLibaŋSaint LuciaLishenst" + - "einSri LankaLiberiaLesotoLituaniáLuxembourgLatviaLibyaMarɔkMonakoMɔl" + - "daviaMadagaskarMaŋ́ má MarshallMacedoniaMaliMyanmarMɔngoliaMaŋ́ Mari" + - "áMartinikaMoritaniaMɔnserratMaltaMorisseMaldiviaMalawiMɛxikMalaysia" + - "MozambikNamibiaKaledoni nwanahNigerMaŋ́ má NɔrfɔrkNigeriaNikaraguaNe" + - "dɛrlandNɔrvɛgNepalNoruNiuɛZeland nwanahOmanPanamaPeruPolynesia FalaG" + - "uine PapuasiFilipinPakistanPɔlɔŋSaint Peter ba MikelɔnPitkairnPuɛrto" + - " RikoPalɛstinPɔrtugalPaloParaguayKatarRéuniɔnRoumaniaRussiRwandaSaud" + - "i ArabiaMaŋ́ má SalomɔnSeychɛlleSudaŋSuɛdSingapurSaint LinaSloveniaS" + - "lovakiaSierra LeɔnSan MarinoSenegalSomáliaSurinamSao Tomé ba Prinshi" + - "pSalvadɔrSyriaSwazilandMaŋ́ má Turk na KaikoTshadTogoTaïlandTajikist" + - "aŋTokeloTimɔr tsindikēhTurkmɛnistaŋTunisiáTɔngaTurkiTrinidad ba Tobá" + - "góTuvalúTaïwanTanzáníaUkrɛnUgandaAmɛŕkaUruguayUsbǝkistaŋVatikaŋSaint" + - " Vincent ba GrenadinesVǝnǝzuelaMinsilɛ́ mímaŋ mí ngɛ̄lɛ̄nMinsilɛ mí " + - "maŋ́ m´AmɛrkaViɛtnamVanuatuWallis ba FutunaSamoaYǝmɛnMayɔtAfríka yí " + - "síZambiaZimbabwǝ", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0009, 0x002a, 0x0035, 0x0049, 0x0052, 0x0059, - 0x0061, 0x0067, 0x0067, 0x0071, 0x0084, 0x008b, 0x0095, 0x009c, - 0x009c, 0x00a8, 0x00bd, 0x00c4, 0x00d1, 0x00d8, 0x00e4, 0x00ec, - 0x00f3, 0x00fa, 0x00ff, 0x00ff, 0x0107, 0x010e, 0x0115, 0x0115, - 0x011c, 0x0123, 0x0129, 0x0129, 0x0131, 0x0138, 0x013e, 0x0144, - 0x0144, 0x0151, 0x015d, 0x0162, 0x016e, 0x017c, 0x018b, 0x0191, - 0x0198, 0x019d, 0x01a9, 0x01a9, 0x01b4, 0x01b8, 0x01ca, 0x01ca, - 0x01ca, 0x01d0, 0x01e5, 0x01ea, 0x01ea, 0x01f1, 0x01f9, 0x0202, - // Entry 40 - 7F - 0x0215, 0x021c, 0x021c, 0x0224, 0x022c, 0x0235, 0x0235, 0x023c, - 0x0242, 0x024b, 0x024b, 0x024b, 0x0253, 0x0259, 0x026a, 0x0274, - 0x0274, 0x0278, 0x027f, 0x0291, 0x0298, 0x029f, 0x02aa, 0x02aa, - 0x02af, 0x02b8, 0x02c1, 0x02c7, 0x02cc, 0x02d5, 0x02e5, 0x02eb, - 0x02eb, 0x02f4, 0x02f8, 0x0303, 0x0309, 0x0309, 0x0309, 0x0312, - 0x0319, 0x031f, 0x0327, 0x0327, 0x0330, 0x0336, 0x033d, 0x033d, - 0x0342, 0x0368, 0x036c, 0x0370, 0x0376, 0x037c, 0x037c, 0x0383, - 0x038c, 0x0392, 0x0398, 0x03a2, 0x03aa, 0x03b2, 0x03b9, 0x03cd, - // Entry 80 - BF - 0x03dc, 0x03e9, 0x03f0, 0x0400, 0x040a, 0x040e, 0x0414, 0x041f, - 0x042a, 0x0433, 0x043a, 0x0440, 0x0449, 0x0453, 0x0459, 0x045e, - 0x0464, 0x046a, 0x0473, 0x0473, 0x0473, 0x047d, 0x0490, 0x0499, - 0x049d, 0x04a4, 0x04ad, 0x04ad, 0x04ba, 0x04c3, 0x04cc, 0x04d6, - 0x04db, 0x04e2, 0x04ea, 0x04f0, 0x04f6, 0x04fe, 0x0506, 0x050d, - 0x051c, 0x0521, 0x0535, 0x053c, 0x0545, 0x054f, 0x0557, 0x055c, - 0x0560, 0x0565, 0x0572, 0x0576, 0x057c, 0x0580, 0x058e, 0x059b, - 0x05a2, 0x05aa, 0x05b2, 0x05c9, 0x05d1, 0x05dd, 0x05e6, 0x05ef, - // Entry C0 - FF - 0x05f3, 0x05fb, 0x0600, 0x0600, 0x0609, 0x0611, 0x0611, 0x0616, - 0x061c, 0x0628, 0x063b, 0x0645, 0x064b, 0x0650, 0x0658, 0x0662, - 0x066a, 0x066a, 0x0672, 0x067e, 0x0688, 0x068f, 0x0697, 0x069e, - 0x069e, 0x06b3, 0x06bc, 0x06bc, 0x06c1, 0x06ca, 0x06ca, 0x06e2, - 0x06e7, 0x06e7, 0x06eb, 0x06f3, 0x06fe, 0x0704, 0x0715, 0x0723, - 0x072b, 0x0731, 0x0736, 0x074a, 0x0751, 0x0758, 0x0762, 0x0768, - 0x076e, 0x076e, 0x076e, 0x0776, 0x077d, 0x0789, 0x0791, 0x07ac, - 0x07b7, 0x07da, 0x07f8, 0x0800, 0x0807, 0x0817, 0x081c, 0x081c, - // Entry 100 - 13F - 0x0823, 0x0829, 0x0838, 0x083e, 0x0847, - }, - }, - { // nn - "AscensionAndorraDei sameinte arabiske emirataAfghanistanAntigua og Barbu" + - "daAnguillaAlbaniaArmeniaAngolaAntarktisArgentinaAmerikansk SamoaAust" + - "errikeAustraliaArubaÅlandAserbajdsjanBosnia-HercegovinaBarbadosBangl" + - "adeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint BarthélemyBe" + - "rmudaBruneiBoliviaKaribisk NederlandBrasilBahamasBhutanBouvetøyaBots" + - "wanaKviterusslandBelizeCanadaKokosøyaneKongo-KinshasaDen sentralafri" + - "kanske republikkenKongo-BrazzavilleSveitsElfenbeinskystenCookøyaneCh" + - "ileKamerunKinaColombiaClippertonøyaCosta RicaCubaKapp VerdeCuraçaoCh" + - "ristmasøyaKyprosTsjekkiaTysklandDiego GarciaDjiboutiDanmarkDominicaD" + - "en dominikanske republikkenAlgerieCeuta og MelillaEcuadorEstlandEgyp" + - "tVest-SaharaEritreaSpaniaEtiopiaEUeurosonaFinlandFijiFalklandsøyaneM" + - "ikronesiaføderasjonenFærøyaneFrankrikeGabonStorbritanniaGrenadaGeorg" + - "iaFransk GuyanaGuernseyGhanaGibraltarGrønlandGambiaGuineaGuadeloupeE" + - "kvatorial-GuineaHellasSør-Georgia og Sør-SandwichøyeneGuatemalaGuamG" + - "uinea-BissauGuyanaHongkong S.A.R. KinaHeardøya og McDonaldøyaneHondu" + - "rasKroatiaHaitiUngarnKanariøyaneIndonesiaIrlandIsraelManIndiaDet bri" + - "tiske territoriet I IndiahavetIrakIranIslandItaliaJerseyJamaicaJorda" + - "nJapanKenyaKirgisistanKambodsjaKiribatiKomoraneSaint Kitts og NevisN" + - "ord-KoreaSør-KoreaKuwaitCaymanøyaneKasakhstanLaosLibanonSt. LuciaLie" + - "chtensteinSri LankaLiberiaLesothoLitauenLuxembourgLatviaLibyaMarokko" + - "MonacoMoldovaMontenegroSaint MartinMadagaskarMarshalløyaneMakedoniaM" + - "aliMyanmar (Burma)MongoliaMacao S.A.R. KinaNord-MariananeMartiniqueM" + - "auritaniaMontserratMaltaMauritiusMaldivaneMalawiMexicoMalaysiaMosamb" + - "ikNamibiaNy-CaledoniaNigerNorfolkøyaNigeriaNicaraguaNederlandNoregNe" + - "palNauruNiueNew ZealandOmanPanamaPeruFransk PolynesiaPapua Ny-Guinea" + - "FilippinanePakistanPolenSaint-Pierre-et-MiquelonPitcairnPuerto RicoP" + - "alestinsk territoriumPortugalPalauParaguayQatarYtre OseaniaRéunionRo" + - "maniaSerbiaRusslandRwandaSaudi-ArabiaSalomonøyaneSeychellaneSudanSve" + - "rigeSingaporeSaint HelenaSloveniaSvalbard og Jan MayenSlovakiaSierra" + - " LeoneSan MarinoSenegalSomaliaSurinamSør-SudanSão Tomé og PríncipeEl" + - " SalvadorSint MaartenSyriaSwazilandTristan da CunhaTurks- og Caicosø" + - "yaneTsjadDei franske sørterritoriaTogoThailandTadsjikistanTokelauTim" + - "or-Leste (Aust-Timor)TurkmenistanTunisiaTongaTyrkiaTrinidad og Tobag" + - "oTuvaluTaiwanTanzaniaUkrainaUgandaUSAs ytre småøyarSNUSAUruguayUsbek" + - "istanVatikanstatenSt. Vincent og GrenadinaneVenezuelaDei britiske Jo" + - "mfruøyaneDei amerikanske JomfruøyaneVietnamVanuatuWallis og FutunaSa" + - "moaKosovoJemenMayotteSør-AfrikaZambiaZimbabweukjent områdeverdaAfrik" + - "aNord-AmerikaSør-AmerikaOseaniaVest-AfrikaSentral-AmerikaAust-Afrika" + - "Nord-AfrikaSentral-AfrikaSørlege AfrikaAmerikanordlege AmerikaKaribi" + - "aAust-AsiaSør-AsiaSøraust-AsiaSør-EuropaAustralasiaMelanesiaMikrones" + - "iaPolynesiaAsiaSentral-AsiaVest-AsiaEuropaAust-EuropaNord-EuropaVest" + - "-EuropaLatin-Amerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002d, 0x0038, 0x004a, 0x0052, 0x0059, - 0x0060, 0x0066, 0x006f, 0x0078, 0x0088, 0x0092, 0x009b, 0x00a0, - 0x00a6, 0x00b2, 0x00c4, 0x00cc, 0x00d6, 0x00dc, 0x00e8, 0x00f0, - 0x00f7, 0x00fe, 0x0103, 0x0114, 0x011b, 0x0121, 0x0128, 0x013a, - 0x0140, 0x0147, 0x014d, 0x0157, 0x015f, 0x016c, 0x0172, 0x0178, - 0x0183, 0x0191, 0x01b2, 0x01c3, 0x01c9, 0x01d9, 0x01e3, 0x01e8, - 0x01ef, 0x01f3, 0x01fb, 0x0209, 0x0213, 0x0217, 0x0221, 0x0229, - 0x0236, 0x023c, 0x0244, 0x024c, 0x0258, 0x0260, 0x0267, 0x026f, - // Entry 40 - 7F - 0x028b, 0x0292, 0x02a2, 0x02a9, 0x02b0, 0x02b5, 0x02c0, 0x02c7, - 0x02cd, 0x02d4, 0x02d6, 0x02de, 0x02e5, 0x02e9, 0x02f8, 0x030f, - 0x0319, 0x0322, 0x0327, 0x0334, 0x033b, 0x0342, 0x034f, 0x0357, - 0x035c, 0x0365, 0x036e, 0x0374, 0x037a, 0x0384, 0x0395, 0x039b, - 0x03be, 0x03c7, 0x03cb, 0x03d8, 0x03de, 0x03f2, 0x040d, 0x0415, - 0x041c, 0x0421, 0x0427, 0x0433, 0x043c, 0x0442, 0x0448, 0x044b, - 0x0450, 0x0475, 0x0479, 0x047d, 0x0483, 0x0489, 0x048f, 0x0496, - 0x049c, 0x04a1, 0x04a6, 0x04b1, 0x04ba, 0x04c2, 0x04ca, 0x04de, - // Entry 80 - BF - 0x04e8, 0x04f2, 0x04f8, 0x0504, 0x050e, 0x0512, 0x0519, 0x0522, - 0x052f, 0x0538, 0x053f, 0x0546, 0x054d, 0x0557, 0x055d, 0x0562, - 0x0569, 0x056f, 0x0576, 0x0580, 0x058c, 0x0596, 0x05a4, 0x05ad, - 0x05b1, 0x05c0, 0x05c8, 0x05d9, 0x05e7, 0x05f1, 0x05fb, 0x0605, - 0x060a, 0x0613, 0x061c, 0x0622, 0x0628, 0x0630, 0x0638, 0x063f, - 0x064b, 0x0650, 0x065b, 0x0662, 0x066b, 0x0674, 0x0679, 0x067e, - 0x0683, 0x0687, 0x0692, 0x0696, 0x069c, 0x06a0, 0x06b0, 0x06bf, - 0x06ca, 0x06d2, 0x06d7, 0x06ef, 0x06f7, 0x0702, 0x0718, 0x0720, - // Entry C0 - FF - 0x0725, 0x072d, 0x0732, 0x073e, 0x0746, 0x074d, 0x0753, 0x075b, - 0x0761, 0x076d, 0x077a, 0x0785, 0x078a, 0x0791, 0x079a, 0x07a6, - 0x07ae, 0x07c3, 0x07cb, 0x07d7, 0x07e1, 0x07e8, 0x07ef, 0x07f6, - 0x0800, 0x0817, 0x0822, 0x082e, 0x0833, 0x083c, 0x084c, 0x0862, - 0x0867, 0x0881, 0x0885, 0x088d, 0x0899, 0x08a0, 0x08b8, 0x08c4, - 0x08cb, 0x08d0, 0x08d6, 0x08e8, 0x08ee, 0x08f4, 0x08fc, 0x0903, - 0x0909, 0x091c, 0x091e, 0x0921, 0x0928, 0x0932, 0x093f, 0x0959, - 0x0962, 0x097b, 0x0997, 0x099e, 0x09a5, 0x09b5, 0x09ba, 0x09c0, - // Entry 100 - 13F - 0x09c5, 0x09cc, 0x09d7, 0x09dd, 0x09e5, 0x09f3, 0x09f8, 0x09fe, - 0x0a0a, 0x0a16, 0x0a1d, 0x0a28, 0x0a37, 0x0a42, 0x0a4d, 0x0a5b, - 0x0a6a, 0x0a71, 0x0a81, 0x0a88, 0x0a91, 0x0a9a, 0x0aa7, 0x0ab2, - 0x0abd, 0x0ac6, 0x0ad0, 0x0ad9, 0x0add, 0x0ae9, 0x0af2, 0x0af8, - 0x0b03, 0x0b0e, 0x0b19, 0x0b19, 0x0b26, - }, - }, - { // nnh - "Kàmalûm", - []uint16{ // 49 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0009, - }, - }, - { // no - noRegionStr, - noRegionIdx, - }, - { // nus - "AndoraAbganithtanAntiguaa kɛnɛ BarbudaAŋguɛlaAlbäniaAɛrmäniaAŋgolaAɛrgen" + - "tinAmerika thamowAthtɛriaAthɔra̱liaArubaAdhe̱rbe̱ja̱nBothnia kɛnɛ ɣä" + - "rgobiniaBärbadothBengeladiecBe̱lgimBurkinɛ pa̱thuBulga̱a̱riaBa̱reenB" + - "urundiBe̱ni̱nBe̱rmudaaBurunɛyBulibiaBäraadhiilBämuɔthButa̱nBothiwaan" + - "aBe̱lɛruthBilidhaKänɛdaCɛntrɔl aprika repuɔblicKɔŋgɔKodibo̱o̱Kuk ɣa̱" + - "ylɛnCili̱KɛmɛrunCaynaKolombiaKothtirikaKɛp bedi ɣa̱ylɛnAlgeriaKorwaa" + - "tiaBurutic ɣe̱ndian oce̱nKombodiaKomruthKaymɛn ɣa̱ylɛnSudanCa̱dBurut" + - "ic dhuɔ̱ɔ̱l be̱rgin", - []uint16{ // 250 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0006, 0x0011, 0x0028, 0x0031, 0x0039, - 0x0043, 0x004a, 0x004a, 0x0054, 0x0062, 0x006b, 0x0077, 0x007c, - 0x007c, 0x008c, 0x00a7, 0x00b1, 0x00bc, 0x00c4, 0x00d4, 0x00e1, - 0x00e9, 0x00f0, 0x00f9, 0x00f9, 0x0103, 0x010b, 0x0112, 0x0112, - 0x011d, 0x0126, 0x012d, 0x012d, 0x0137, 0x0142, 0x0149, 0x0151, - 0x0151, 0x0151, 0x016c, 0x0174, 0x0174, 0x017f, 0x018d, 0x0193, - 0x019c, 0x01a1, 0x01a9, 0x01a9, 0x01b3, 0x01b3, 0x01c7, 0x01c7, - 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, 0x01c7, - // Entry 40 - 7F - 0x01c7, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, - 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, - 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, - 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, - 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, 0x01ce, - 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, 0x01d7, - 0x01d7, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f0, - 0x01f0, 0x01f0, 0x01f0, 0x01f0, 0x01f8, 0x01f8, 0x01ff, 0x01ff, - // Entry 80 - BF - 0x01ff, 0x01ff, 0x01ff, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - // Entry C0 - FF - 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, 0x0211, - 0x0211, 0x0211, 0x0211, 0x0211, 0x0216, 0x0216, 0x0216, 0x0216, - 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, - 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, 0x0216, - 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, 0x021b, - 0x021b, 0x0238, - }, - }, - { // nyn - "AndoraAmahanga ga Buharabu ageeteereineAfuganistaniAngiguwa na BabudaAng" + - "wiraArubaniaArimeniyaAngoraArigentinaSamowa ya AmeerikaOsituriaOsitu" + - "reeriyaArubaAzabagyaniBoziniya na HezegovinaBabadosiBangaradeshiBubi" + - "rigiBokina FasoBurugariyaBahareniBurundiBeniniBerimudaBuruneiBoriivi" + - "yaBuraziiriBahamaButaniBotswanaBararusiBerizeKanadaDemokoratika Ripa" + - "aburika ya KongoEihanga rya Rwagati ya AfirikaKongoSwisiAivore Kosit" + - "iEbizinga bya KuukuChileKameruuniChinaKorombiyaKositarikaCubaEbizing" + - "a bya KepuvadeSaipurasiRipaaburika ya ZeekiBugirimaaniGyibutiDeenima" + - "akaDominikaRipaaburika ya DominicaArigyeriyaIkwedaEsitoniyaMisiriEri" + - "teriyaSipeyiniEthiyopiyaBufiniFigyiEbizinga bya FaakilandaMikironesi" + - "yaBufaransaGabooniBungyerezaGurenadaGyogiyaGuyana ya BufaransaGanaGi" + - "buraataGuriinirandiGambiyaGineGwaderupeGuniGuriisiGwatemaraGwamuGine" + - "bisauGuyanaHondurasiKorasiyaHaitiHangareIndoneeziyaIrerandiIsirairiI" + - "ndiyaEbizinga bya Indian ebya BungyerezaIraakaIraaniAisilandiItareGy" + - "amaikaYorudaaniGyapaaniKenyaKirigizistaniKambodiyaKiribatiKoromoSent" + - "i Kittis na NevisiKoreya AmatembaKoreya AmashuumaKuweitiEbizinga bya" + - " KayimaniKazakisitaniLayosiLebanoniSenti RusiyaLishenteniSirirankaLi" + - "beriyaLesothoLithuaniaLakizembaagaLatviyaLibyaMoroccoMonacoMoridovaM" + - "adagasikaEbizinga bya MarshaaMasedooniaMariMyanamarMongoriaEbizinga " + - "by’amatemba ga MarianaMartiniqueMauriteeniyaMontserratiMaritaMaurish" + - "iasiMaridivesMarawiMexicomarayiziaMozambiqueNamibiyaNiukaredoniaNaig" + - "yaEkizinga NorifokoNaigyeriyaNikaragwaHoorandiNoorweNepoNauruNiueNiu" + - "zirandiOmaaniPanamaPeruPolinesia ya BufaransaPapuaFiripinoPakisitaan" + - "iPoorandiSenti Piyerre na MikweronPitkainiPwetorikoParestiina na Gaz" + - "aPocugoPalaawuParagwaiKataRiyuniyoniRomaniyaRrashaRwandaSaudi Areebi" + - "yaEbizinga bya SurimaaniShesheresiSudaniSwideniSingapoSenti HerenaSi" + - "rovaaniyaSirovaakiyaSirra RiyooniSamarinoSenegoSomaariyaSurinaamuSaw" + - "o Tome na PurinsipoEri SalivadoSiriyaSwazirandiEbizinga bya Buturuki" + - " na KaikoChadiTogoTairandiTajikisitaniTokerawuBurugweizooba bwa Timo" + - "riTurukimenisitaniTuniziaTongaButuruki /TakeTurinidad na TobagoTuvar" + - "uTayiwaaniTanzaniaUkureiniUgandaAmerikaUrugwaiUzibekisitaniVatikaniS" + - "enti Vinsent na GurenadiniVenezuweraEbizinga bya Virigini ebya Bungy" + - "erezaEbizinga bya Virigini ebya AmerikaViyetinaamuVanuatuWarris na F" + - "utunaSamowaYemeniMayoteSausi AfirikaZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0027, 0x0033, 0x0045, 0x004c, 0x0054, - 0x005d, 0x0063, 0x0063, 0x006d, 0x007f, 0x0087, 0x0093, 0x0098, - 0x0098, 0x00a2, 0x00b8, 0x00c0, 0x00cc, 0x00d4, 0x00df, 0x00e9, - 0x00f1, 0x00f8, 0x00fe, 0x00fe, 0x0106, 0x010d, 0x0116, 0x0116, - 0x011f, 0x0125, 0x012b, 0x012b, 0x0133, 0x013b, 0x0141, 0x0147, - 0x0147, 0x0168, 0x0186, 0x018b, 0x0190, 0x019d, 0x01af, 0x01b4, - 0x01bd, 0x01c2, 0x01cb, 0x01cb, 0x01d5, 0x01d9, 0x01ee, 0x01ee, - 0x01ee, 0x01f7, 0x020b, 0x0216, 0x0216, 0x021d, 0x0227, 0x022f, - // Entry 40 - 7F - 0x0246, 0x0250, 0x0250, 0x0256, 0x025f, 0x0265, 0x0265, 0x026e, - 0x0276, 0x0280, 0x0280, 0x0280, 0x0286, 0x028b, 0x02a2, 0x02ae, - 0x02ae, 0x02b7, 0x02be, 0x02c8, 0x02d0, 0x02d7, 0x02ea, 0x02ea, - 0x02ee, 0x02f7, 0x0303, 0x030a, 0x030e, 0x0317, 0x031b, 0x0322, - 0x0322, 0x032b, 0x0330, 0x0339, 0x033f, 0x033f, 0x033f, 0x0348, - 0x0350, 0x0355, 0x035c, 0x035c, 0x0367, 0x036f, 0x0377, 0x0377, - 0x037d, 0x03a0, 0x03a6, 0x03ac, 0x03b5, 0x03ba, 0x03ba, 0x03c2, - 0x03cb, 0x03d3, 0x03d8, 0x03e5, 0x03ee, 0x03f6, 0x03fc, 0x0412, - // Entry 80 - BF - 0x0421, 0x0431, 0x0438, 0x044d, 0x0459, 0x045f, 0x0467, 0x0473, - 0x047d, 0x0486, 0x048e, 0x0495, 0x049e, 0x04aa, 0x04b1, 0x04b6, - 0x04bd, 0x04c3, 0x04cb, 0x04cb, 0x04cb, 0x04d5, 0x04e9, 0x04f3, - 0x04f7, 0x04ff, 0x0507, 0x0507, 0x0528, 0x0532, 0x053e, 0x0549, - 0x054f, 0x055a, 0x0563, 0x0569, 0x056f, 0x0578, 0x0582, 0x058a, - 0x0596, 0x059c, 0x05ad, 0x05b7, 0x05c0, 0x05c8, 0x05ce, 0x05d2, - 0x05d7, 0x05db, 0x05e5, 0x05eb, 0x05f1, 0x05f5, 0x060b, 0x0610, - 0x0618, 0x0623, 0x062b, 0x0644, 0x064c, 0x0655, 0x0667, 0x066d, - // Entry C0 - FF - 0x0674, 0x067c, 0x0680, 0x0680, 0x068a, 0x0692, 0x0692, 0x0698, - 0x069e, 0x06ac, 0x06c2, 0x06cc, 0x06d2, 0x06d9, 0x06e0, 0x06ec, - 0x06f7, 0x06f7, 0x0702, 0x070f, 0x0717, 0x071d, 0x0726, 0x072f, - 0x072f, 0x0745, 0x0751, 0x0751, 0x0757, 0x0761, 0x0761, 0x077f, - 0x0784, 0x0784, 0x0788, 0x0790, 0x079c, 0x07a4, 0x07bc, 0x07cc, - 0x07d3, 0x07d8, 0x07e6, 0x07f9, 0x07ff, 0x0808, 0x0810, 0x0818, - 0x081e, 0x081e, 0x081e, 0x0825, 0x082c, 0x0839, 0x0841, 0x085c, - 0x0866, 0x088b, 0x08ad, 0x08b8, 0x08bf, 0x08cf, 0x08d5, 0x08d5, - // Entry 100 - 13F - 0x08db, 0x08e1, 0x08ee, 0x08f4, 0x08fc, - }, - }, - { // om - "BrazilChinaGermanyItoophiyaaFranceUnited KingdomIndiaItalyJapanKeeniyaaR" + - "ussiaUnited States", - []uint16{ // 244 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, - 0x0006, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - // Entry 40 - 7F - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x001c, 0x0022, 0x0022, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003f, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - // Entry 80 - BF - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - // Entry C0 - FF - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x005a, - }, - }, - { // or - "ଆସେନସିଅନ୍\u200c ଦ୍ୱୀପଆଣ୍ଡୋରାସଂଯୁକ୍ତ ଆରବ ଏମିରେଟସ୍ଆଫଗାନିସ୍ତାନ୍ଆଣ୍ଟିଗୁଆ ଏବଂ" + - " ବାରବୁଦାଆଙ୍ଗୁଇଲ୍ଲାଆଲବାନିଆଆର୍ମେନିଆଆଙ୍ଗୋଲାଆଣ୍ଟାର୍କାଟିକାଆର୍ଜେଣ୍ଟିନାଆମେର" + - "ିକାନ୍ ସାମୋଆଅଷ୍ଟ୍ରିଆଅଷ୍ଟ୍ରେଲିଆଆରୁବାଅଲାଣ୍ଡ ଦ୍ଵୀପପୁଞ୍ଜଆଜେରବାଇଜାନ୍ବୋସନ" + - "ିଆ ଏବଂ ହର୍ଜଗୋଭିନାବାରବାଡୋସ୍ବାଂଲାଦେଶବେଲଜିୟମ୍ବୁର୍କିନା ଫାସୋବୁଲଗେରିଆବାହ" + - "ାରିନ୍ବୁରୁଣ୍ଡିବେନିନ୍ସେଣ୍ଟ ବାର୍ଥେଲେମିବର୍ମୁଡାବ୍ରୁନେଇବୋଲଭିଆକାରବିୟନ୍" + - "\u200c ନେଦରଲ୍ୟାଣ୍ଡବ୍ରାଜିଲ୍ବାହାମାସ୍ଭୁଟାନବୌଭେଟ୍\u200c ଦ୍ୱୀପବୋଟସ୍ୱାନାବେ" + - "ଲାରୁଷ୍ବେଲିଜ୍କାନାଡାକୋକୋସ୍ (କୀଲିଂ) ଦ୍ଵୀପପୁଞ୍ଜକଙ୍ଗୋ-କିନସାସାମଧ୍ୟ ଆଫ୍ରି" + - "କୀୟ ସାଧାରଣତନ୍ତ୍ରକଙ୍ଗୋ-ବ୍ରାଜିଭିଲ୍ଲେସ୍ୱିଜରଲ୍ୟାଣ୍ଡକୋଟେ ଡି ଆଇଭୋରିକୁକ୍" + - "\u200c ଦ୍ୱୀପପୁଞ୍ଜଚିଲ୍ଲୀକାମେରୁନ୍ଚିନ୍କୋଲମ୍ବିଆକ୍ଲିପରଟନ୍\u200c ଦ୍ୱୀପକୋଷ୍" + - "ଟା ରିକାକ୍ୱିବାକେପ୍ ଭର୍ଦେକୁରାକାଓଖ୍ରୀଷ୍ଟମାସ ଦ୍ୱୀପସାଇପ୍ରସ୍ଚେଚିଆଜର୍ମାନୀ" + - "ଡିଏଗୋ ଗାର୍ସିଆଜିବୋଟିଡେନମାର୍କଡୋମିନିକାଡୋମିନିକାନ୍\u200c ସାଧାରଣତନ୍ତ୍ରଆଲ" + - "ଜେରିଆସିଉଟା ଏବଂ ମେଲିଲାଇକ୍ୱାଡୋର୍ଏସ୍ତୋନିଆଇଜିପ୍ଟପଶ୍ଚିମ ସାହାରାଇରିଟ୍ରିୟା" + - "ସ୍ପେନ୍ଇଥିଓପିଆୟୁରୋପୀୟ ସଂଘୟୁରୋକ୍ଷେତ୍ରଫିନଲ୍ୟାଣ୍ଡଫିଜିଫକ୍\u200cଲ୍ୟାଣ୍ଡ " + - "ଦ୍ଵୀପପୁଞ୍ଜମାଇକ୍ରୋନେସିଆଫାରୋଇ ଦ୍ୱୀପପୁଞ୍ଜଫ୍ରାନ୍ସଗାବୋନ୍ଯୁକ୍ତରାଜ୍ୟଗ୍ରେନ" + - "ାଡାଜର୍ଜିଆଫ୍ରେଞ୍ଚ ଗୁଇନାଗୁଏରନେସିଘାନାଜିବ୍ରାଲ୍ଟର୍ଗ୍ରୀନଲ୍ୟାଣ୍ଡଗାମ୍ବିଆଗୁ" + - "ଇନିଆଗୁଆଡେଲୋପ୍\u200cଇକ୍ବାଟେରିଆଲ୍ ଗୁଇନିଆଗ୍ରୀସ୍ଦକ୍ଷିଣ ଜର୍ଜିଆ ଏବଂ ଦକ୍ଷ" + - "ିଣ ସାଣ୍ଡୱିଚ୍ ଦ୍ୱୀପପୁଞ୍ଜଗୁଏତମାଲାଗୁଆମ୍ଗୁଇନିଆ-ବିସାଉଗୁଇନାହଂ କଂ ଏସଏଆର୍" + - "\u200c ଚାଇନାହାର୍ଡ୍\u200c ଏବଂ ମ୍ୟାକଡୋନାଲ୍ଡ ଦ୍ୱୀପପୁଞ୍ଜହୋଣ୍ଡୁରାସ୍\u200c" + - "କ୍ରୋଏସିଆହାଇତିହଙ୍ଗେରୀକେନେରୀ ଦ୍ୱୀପପୁଞ୍ଜଇଣ୍ଡୋନେସିଆଆୟରଲ୍ୟାଣ୍ଡଇସ୍ରାଏଲ୍ଆ" + - "ଇଲ୍\u200c ଅଫ୍\u200c ମ୍ୟାନ୍\u200cଭାରତବ୍ରିଟିଶ୍\u200c ଭାରତ ମାହାସାଗର କ" + - "୍ଷେତ୍ରଇରାକ୍ଇରାନଆଇସଲ୍ୟାଣ୍ଡଇଟାଲୀଜର୍ସିଜାମାଇକାଜୋର୍ଡାନ୍ଜାପାନକେନିୟାକିର୍ଗ" + - "ିଜିସ୍ତାନକାମ୍ବୋଡିଆକିରିବାଟିକୋମୋରସ୍\u200cସେଣ୍ଟ କିଟସ୍\u200c ଏବଂ ନେଭିସ୍" + - "\u200cଉତ୍ତର କୋରିଆଦକ୍ଷିଣ କୋରିଆକୁଏତ୍କେମ୍ୟାନ୍\u200c ଦ୍ୱୀପପୁଞ୍ଜକାଜାକାସ୍ତ" + - "ାନଲାଓସ୍ଲେବାନନ୍ସେଣ୍ଟ ଲୁସିଆଲିଚେଟନଷ୍ଟେଇନ୍ଶ୍ରୀଲଙ୍କାଲାଇବେରିଆଲେସୋଥୋଲିଥୁଆ" + - "ନିଆଲକ୍ସେମବର୍ଗଲାଟଭିଆଲିବ୍ୟାମୋରୋକ୍କୋମୋନାକୋମାଲଡୋଭାମଣ୍ଟେନିଗ୍ରୋସେଣ୍ଟ ମାର" + - "୍ଟିନ୍ମାଡାଗାସ୍କର୍ମାର୍ଶାଲ୍\u200c ଦ୍ୱୀପପୁଞ୍ଜମାସେଡୋନିଆମାଲିମିଆଁମାରମଙ୍ଗୋ" + - "ଲିଆମାକାଉ ଏସଏଆର୍\u200c ଚାଇନାଉତ୍ତର ମାରିଆନା ଦ୍ୱୀପପୁଞ୍ଜମାର୍ଟିନିକ୍ୟୁମୌର" + - "ିଟାନିଆମଣ୍ଟେସେରାଟ୍ମାଲ୍ଟାମରିସସମାଲଦିଭସ୍\u200cମାଲୱିମେକ୍ସିକୋମାଲେସିଆମୋଜା" + - "ମ୍ବିକ୍\u200cନାମିବିଆନୂତନ କାଲେଡୋନିଆନାଇଜରନର୍ଫକ୍\u200c ଦ୍ୱୀପନାଇଜେରିଆନି" + - "କାରାଗୁଆନେଦରଲ୍ୟାଣ୍ଡନରୱେନେପାଳନାଉରୁନିଉନ୍ୟୁଜିଲାଣ୍ଡଓମାନ୍ପାନାମାପେରୁଫ୍ରେଞ" + - "୍ଚ ପଲିନେସିଆପପୁଆ ନ୍ୟୁ ଗୁଏନିଆଫିଲିପାଇନସ୍ପାକିସ୍ତାନପୋଲାଣ୍ଡସେଣ୍ଟ ପିଏରେ ଏ" + - "ବଂ ମିକ୍ୱେଲନ୍\u200cପିଟକାଇରିନ୍\u200c ଦ୍ୱୀପପୁଞ୍ଜପୁଏର୍ତ୍ତୋ ରିକୋପାଲେଷ୍ଟ" + - "େନିୟ ଭୂଭାଗପର୍ତ୍ତୁଗାଲ୍ପାଲାଉପାରାଗୁଏକତାର୍ସୀମାନ୍ତବର୍ତ୍ତୀ ଓସେନିଆରିୟୁନିଅ" + - "ନ୍ରୋମାନିଆସର୍ବିଆରୁଷିଆରାୱାଣ୍ଡାସାଉଦି ଆରବିଆସୋଲୋମନ୍\u200c ଦ୍ୱୀପପୁଞ୍ଜସେଚ" + - "େଲସ୍ସୁଦାନସ୍ୱେଡେନ୍ସିଙ୍ଗାପୁର୍ସେଣ୍ଟ ହେଲେନାସ୍ଲୋଭେନିଆସାଲବାର୍ଡ ଏବଂ ଜାନ୍" + - "\u200c ମାୟେନ୍\u200cସ୍ଲୋଭାକିଆସିଏରା ଲିଓନସାନ୍ ମାରିନୋସେନେଗାଲ୍ସୋମାଲିଆସୁରି" + - "ନାମଦକ୍ଷିଣ ସୁଦାନସାଓ ଟୋମେ ଏବଂ ପ୍ରିନସିପିଏଲ୍ ସାଲଭାଡୋର୍ସିଣ୍ଟ ମାର୍ଟୀନ୍" + - "\u200cସିରିଆସ୍ୱାଜିଲ୍ୟାଣ୍ଡଟ୍ରାଇଷ୍ଟନ୍\u200c ଦା କୁନ୍\u200cଚାତୁର୍କସ୍" + - "\u200c ଏବଂ କାଇକୋସ୍\u200c ଦ୍ୱୀପପୁଞ୍ଜଚାଦ୍ଫରାସୀ ଦକ୍ଷିଣ କ୍ଷେତ୍ରଟୋଗୋଥାଇଲ୍" + - "ୟାଣ୍ଡତାଜିକିସ୍ଥାନ୍ଟୋକେଲାଉତିମୋର୍-ଲେଷ୍ଟେତୁର୍କମେନିସ୍ତାନଟ୍ୟୁନିସିଆଟୋଙ୍ଗା" + - "ତୁର୍କୀତ୍ରିନିଦାଦ୍ ଏବଂ ଟୋବାଗୋତୁଭାଲୁତାଇୱାନତାଞ୍ଜାନିଆୟୁକ୍ରେନ୍\u200cଉଗାଣ" + - "୍ଡାଯୁକ୍ତରାଷ୍ଟ୍ର ଆଉଟ୍\u200cଲାଇଙ୍ଗ ଦ୍ଵୀପପୁଞ୍ଜଜାତିସଂଘଯୁକ୍ତ ରାଷ୍ଟ୍ରଉରୁ" + - "ଗୁଏଉଜବେକିସ୍ତାନଭାଟିକାନ୍\u200c ସିଟିସେଣ୍ଟ ଭିନସେଣ୍ଟ ଏବଂ ଦି ଗ୍ରେନାଡିସ୍ଭ" + - "େନେଜୁଏଲାବ୍ରିଟିଶ୍\u200c ଭର୍ଜିନ୍ ଦ୍ୱୀପପୁଞ୍ଜଯୁକ୍ତରାଷ୍ଟ୍ର ଭିର୍ଜିନ୍ ଦ୍ଵ" + - "ୀପପୁଞ୍ଜଭିଏତନାମ୍ଭାନୁଆତୁୱାଲିସ୍ ଏବଂ ଫୁତୁନାସାମୋଆକୋସୋଭୋୟେମେନ୍ମାୟୋଟେଦକ୍ଷ" + - "ିଣ ଆଫ୍ରିକାଜାମ୍ବିଆଜିମ୍ବାୱେଅଜଣା ଅଞ୍ଚଳବିଶ୍ୱଆଫ୍ରିକାଉତ୍ତର ଆମେରିକାଦକ୍ଷିଣ" + - " ଆମେରିକାଓସେନିଆପଶ୍ଚିମ ଆଫ୍ରିକାମଧ୍ୟ ଆମେରିକାପୂର୍ବ ଆଫ୍ରିକାଉତ୍ତର ଆଫ୍ରିକାମଧ" + - "୍ୟ ଆଫ୍ରିକାଦକ୍ଷିଣସ୍ଥ ଆଫ୍ରିକାଆମେରିକାଉତ୍ତରସ୍ଥ ଆମେରିକାକାରିବିଆନ୍ପୂର୍ବ ଏ" + - "ସିଆଦକ୍ଷିଣ ଏସିଆଦକ୍ଷିଣ-ପୂର୍ବ ଏସିଆଦକ୍ଷିଣ ୟୁରୋପ୍ଅଷ୍ଟ୍ରେଲେସିଆମେଲାନେସିଆମ" + - "ାଇକ୍ରୋନେସିଆନ୍ ଅଞ୍ଚଳପଲିନେସିଆଏସିଆମଧ୍ୟ ଏସିଆପଶ୍ଚିମ ଏସିଆୟୁରୋପ୍ପୂର୍ବ ୟୁର" + - "ୋପ୍ଉତ୍ତର ୟୁରୋପ୍ପଶ୍ଚିମ ୟୁରୋପ୍ଲାଟିନ୍\u200c ଆମେରିକା", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x002e, 0x0043, 0x007b, 0x009f, 0x00d7, 0x00f5, 0x010a, - 0x0122, 0x0137, 0x015e, 0x017f, 0x01aa, 0x01c2, 0x01e0, 0x01ef, - 0x0220, 0x0241, 0x027c, 0x0297, 0x02af, 0x02c7, 0x02ec, 0x0304, - 0x031c, 0x0334, 0x0346, 0x0374, 0x0389, 0x039e, 0x03b0, 0x03ed, - 0x0405, 0x041d, 0x042c, 0x0451, 0x046c, 0x0484, 0x0496, 0x04a8, - 0x04eb, 0x0510, 0x055a, 0x058e, 0x05b5, 0x05db, 0x0609, 0x061b, - 0x0633, 0x063f, 0x0657, 0x0685, 0x06a4, 0x06b6, 0x06d2, 0x06e7, - 0x0715, 0x072d, 0x073c, 0x0751, 0x0776, 0x0788, 0x07a0, 0x07b8, - // Entry 40 - 7F - 0x07fe, 0x0813, 0x083f, 0x085a, 0x0872, 0x0884, 0x08a9, 0x08c4, - 0x08d6, 0x08eb, 0x090a, 0x092b, 0x0949, 0x0955, 0x0995, 0x09b9, - 0x09e7, 0x09fc, 0x0a0e, 0x0a2c, 0x0a44, 0x0a56, 0x0a7b, 0x0a93, - 0x0a9f, 0x0ac0, 0x0ae4, 0x0af9, 0x0b0b, 0x0b29, 0x0b60, 0x0b72, - 0x0bef, 0x0c07, 0x0c16, 0x0c38, 0x0c47, 0x0c7a, 0x0cdd, 0x0cfe, - 0x0d16, 0x0d25, 0x0d3a, 0x0d6b, 0x0d89, 0x0da7, 0x0dbf, 0x0df1, - 0x0dfd, 0x0e54, 0x0e63, 0x0e6f, 0x0e8d, 0x0e9c, 0x0eab, 0x0ec0, - 0x0ed8, 0x0ee7, 0x0ef9, 0x0f20, 0x0f3b, 0x0f53, 0x0f6b, 0x0fad, - // Entry 80 - BF - 0x0fcc, 0x0fee, 0x0ffd, 0x1037, 0x1058, 0x1067, 0x107c, 0x109b, - 0x10c2, 0x10dd, 0x10f5, 0x1107, 0x111f, 0x113d, 0x114f, 0x1161, - 0x1179, 0x118b, 0x11a0, 0x11c1, 0x11e9, 0x120a, 0x1244, 0x125f, - 0x126b, 0x1280, 0x1298, 0x12cd, 0x1311, 0x1335, 0x1350, 0x1371, - 0x1383, 0x1392, 0x13ad, 0x13bc, 0x13d4, 0x13e9, 0x140a, 0x141f, - 0x1447, 0x1456, 0x147b, 0x1493, 0x14ae, 0x14cf, 0x14db, 0x14ea, - 0x14f9, 0x1502, 0x1523, 0x1532, 0x1544, 0x1550, 0x157e, 0x15aa, - 0x15c8, 0x15e3, 0x15f8, 0x1640, 0x1680, 0x16a8, 0x16d9, 0x16fa, - // Entry C0 - FF - 0x1709, 0x171e, 0x172d, 0x176a, 0x1785, 0x179a, 0x17ac, 0x17bb, - 0x17d3, 0x17f2, 0x1829, 0x183e, 0x184d, 0x1865, 0x1883, 0x18a5, - 0x18c0, 0x1908, 0x1923, 0x193f, 0x195e, 0x1976, 0x198b, 0x19a0, - 0x19c2, 0x19fe, 0x1a23, 0x1a4e, 0x1a5d, 0x1a84, 0x1ac2, 0x1b1c, - 0x1b28, 0x1b60, 0x1b6c, 0x1b8a, 0x1bae, 0x1bc3, 0x1be8, 0x1c12, - 0x1c2d, 0x1c3f, 0x1c51, 0x1c8c, 0x1c9e, 0x1cb0, 0x1ccb, 0x1ce6, - 0x1cfb, 0x1d60, 0x1d75, 0x1d9a, 0x1dac, 0x1dcd, 0x1df5, 0x1e4d, - 0x1e68, 0x1eb8, 0x1f14, 0x1f2c, 0x1f41, 0x1f70, 0x1f7f, 0x1f91, - // Entry 100 - 13F - 0x1fa3, 0x1fb5, 0x1fdd, 0x1ff2, 0x200a, 0x2026, 0x2035, 0x204a, - 0x206f, 0x2097, 0x20a9, 0x20d1, 0x20f3, 0x2118, 0x213d, 0x215f, - 0x2190, 0x21a5, 0x21d3, 0x21ee, 0x220a, 0x2229, 0x2258, 0x227d, - 0x22a1, 0x22bc, 0x22f6, 0x230e, 0x231a, 0x2333, 0x2352, 0x2364, - 0x2386, 0x23a8, 0x23cd, 0x23cd, 0x23f8, - }, - }, - { // os - "БразилиКитайГерманФранцСтыр БританиГуырдзыстонИндиИталиЯпонУӕрӕсеАИШНӕзо" + - "нгӕ бӕстӕДунеАфрикӕОкеаниАмерикӕАзиЕвропӕ", - []uint16{ // 288 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, - 0x0018, 0x0018, 0x0018, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - // Entry 40 - 7F - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, - 0x0024, 0x002e, 0x002e, 0x0045, 0x0045, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x006d, 0x006d, 0x006d, - 0x006d, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - // Entry 80 - BF - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - // Entry C0 - FF - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0081, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, - // Entry 100 - 13F - 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x00a0, 0x00a8, 0x00b4, - 0x00b4, 0x00b4, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, - 0x00c0, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00d4, 0x00d4, 0x00d4, 0x00e0, - }, - }, - { // pa - paRegionStr, - paRegionIdx, - }, - { // pa-Arab - "پاکستان", - []uint16{ // 186 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000e, - }, - }, - { // pl - plRegionStr, - plRegionIdx, - }, - {}, // prg - { // ps - "د توغندیو ټاپواندورامتحده عرب اماراتافغانستانانټيګوا او باربوداانګیلاالب" + - "انیهارمنستانانګولاانتارکتیکاارژنټاینامریکایی سمواتریشآسټرالیاآروباا" + - "لاند ټاپواناذربايجانبوسنيا او هېرزګويناباربادوسبنگله دېشبیلجیمبورکی" + - "نا فاسوبلغاریهبحرينبرونديبیننسینټ بارټیلیټیبرمودابرونيبولیویاکیریبی" + - "ن هالینډبرازیلباهامابهوټانبوویټ ټاپوبوتسوانهبیلاروسبلیزکاناډاکوکوز " + - "(کیبل) ټاپوګانېکانګو - کینشاساد مرکزي افریقا جمهوریتکانګو - بروزوییل" + - "سویسد عاج ساحلکوک ټاپوګانچیليکامرونچینکولمبیاد کلپرټون ټاپوکوستاریک" + - "اکیوباکیپ وردکوکوکاد کریساس ټاپوقبرسچکیاالمانډایګو ګارسیاجی بوتيډنم" + - "ارکدومینیکادومینیکن جمهوريتالجزایرسئوتا او مالایااکوادوراستونیامصرل" + - "ویدیځ صحرااریترههسپانیهحبشهاروپايي اتحاديهاروپاسيمهفنلینډفي جيفوکلن" + - "ډ ټاپومیکرونیزیافارو ټاپوفرانسهګابنبرتانیهګرناداگورجستانفرانسوي ګان" + - "اګرنسيګاناجبل الطارقګرینلینډګامبیاګینهګالډیپاستوایی ګینهیونانسویل ج" + - "ورجیا او جنوبي سینڈوچ ټاپوګواتیمالاګوامګینه بیسوګیاناهانګ کانګ SAR " + - "چینHMهانډوراسکرواثیاهایټيمجارستاند کانري ټاپواندونیزیاایرلینډاسرايي" + - "لد آئل آف مینهندد هند سمندر سمندر سیمهعراقايرانآیسلینډایټالیهجرسیجم" + - "یکااردنجاپانکینیاقرغزستانکمبودیاکیري باتيکوموروسسینټ کټس او نیویسشم" + - "الی کوریاسویلي کوریاکویټکیمان ټاپوګانقزاقستانلاووسلېبنانسینټ لوسیال" + - "یختن اشتاینسريلانکالایبریالسوتولیتوانیالوګزامبورګلتونيلیبیامراکشمون" + - "اکومولدوامونټینیګروسینټ مارټنمدګاسکارمارشال ټاپومقدونیهماليميانامار" + - " (برما)مغولستانمکا سار چینشمالي ماریانا ټاپومارټینیکموریتانیامانټیسی" + - "رتمالتاموریشیسمالديپمالاويمیکسیکومالیزیاموزمبیکنیمبیانوی کالیډونیان" + - "یجرنارفولک ټاپوګاننایجیریانکاراګواهالېنډناروۍنیپالنایرونیوونیوزیلنډ" + - "عمانپاناماپیروفرانسوي پولینیاپاپ نيو ګيني، د يو هېواد نوم دېفلپينپا" + - "کستانپولنډسینټ پییر او میکولونپیټکیرن ټاپوپورتو ریکوفلسطين سيمېپورت" + - "ګالپلوپاراګویقطربهرنی آسیاریونینرومانیاصربیاروسیهرونداسعودي عربستان" + - "سلیمان ټاپوسیچیلیسسوډانسویډنسينگاپورسینټ هیلیناسلوانیاسلواډر او جان" + - " میینسلواکیاسییرا لیونسان مارینوسنګالسومالیاسورینامجنوبي سوډانساو ټی" + - "م او پرنسیپسالوېډورسینټ مارټینسوریهسوازیلینډتریستان دا کنهاد ترکیې " + - "او کیکاسو ټاپوچاډد فرانسې جنوبي سیمېتللتهايلنډتاجيکستانتوکیلوتيمور-" + - "ليسټتورکمنستانتونستونګاتورکيهټرینیاډډ او ټوبوګتوالیوتیوانتنزانیااوک" + - "راینیوګانډاد متحده ایالاتو ټاپو ټاپوګانېملگري ملتونهمتحده ایالاتیور" + - "وګویاوزبکستانواتیکان ښارسینټ ویسنټینټ او ګرینډینزوینزویلابریتانوی و" + - "یګور ټاپود متحده ایالاتو ویګور ټاپووېتنامواناتووالیس او فوتوناساموا" + - "کوسوویمنمیټوتسویلي افریقازیمبیازیمبابویناپېژندلې سيمهنړۍافريقاشمالی" + - " امریکاجنوبی امریکهسمندريهلویدیځ افریقامنخنۍ امريکاختیځ افریقاشمالي " + - "افریقامنځنۍ افریقاجنوبي افریقاامريکاشمالي امریکاکیریبینختیځ آسیاسهی" + - "ل آسیاسویل ختیځ آسیاجنوبي اروپاآسترالیاملانشیاد مایکرونیسینین سیمهپ" + - "ولینیااسيامنځنۍ اسیالویدیځ آسیااروپاختيځه اروپاشمالي اروپالویدیځه ا" + - "روپالاتیني امریکا", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001a, 0x0026, 0x0044, 0x0056, 0x0078, 0x0084, 0x0092, - 0x00a2, 0x00ae, 0x00c2, 0x00d2, 0x00e9, 0x00f3, 0x0103, 0x010d, - 0x0124, 0x0136, 0x015a, 0x016a, 0x017b, 0x0187, 0x019e, 0x01ac, - 0x01b6, 0x01c2, 0x01ca, 0x01e5, 0x01f1, 0x01fb, 0x0209, 0x0224, - 0x0230, 0x023c, 0x0248, 0x025b, 0x026b, 0x0279, 0x0281, 0x028d, - 0x02b3, 0x02ce, 0x02f7, 0x0314, 0x031c, 0x032e, 0x0343, 0x034b, - 0x0357, 0x035d, 0x036b, 0x0385, 0x0397, 0x03a1, 0x03ae, 0x03ba, - 0x03d2, 0x03da, 0x03e2, 0x03ec, 0x0403, 0x0410, 0x041c, 0x042c, - // Entry 40 - 7F - 0x044b, 0x0459, 0x0475, 0x0483, 0x0491, 0x0497, 0x04ac, 0x04b8, - 0x04c6, 0x04ce, 0x04eb, 0x04fd, 0x0509, 0x0512, 0x0527, 0x053b, - 0x054c, 0x0558, 0x0560, 0x056e, 0x057a, 0x058a, 0x05a1, 0x05ab, - 0x05b3, 0x05c6, 0x05d6, 0x05e2, 0x05ea, 0x05f6, 0x060d, 0x0617, - 0x0652, 0x0664, 0x066c, 0x067d, 0x0687, 0x06a3, 0x06a5, 0x06b5, - 0x06c3, 0x06cd, 0x06dd, 0x06f3, 0x0705, 0x0713, 0x0721, 0x0736, - 0x073c, 0x0764, 0x076c, 0x0776, 0x0784, 0x0792, 0x079a, 0x07a4, - 0x07ac, 0x07b6, 0x07c0, 0x07d0, 0x07de, 0x07ef, 0x07fd, 0x081c, - // Entry 80 - BF - 0x0831, 0x0846, 0x084e, 0x0867, 0x0877, 0x0881, 0x088d, 0x08a0, - 0x08b7, 0x08c7, 0x08d5, 0x08df, 0x08ef, 0x0903, 0x090d, 0x0917, - 0x0921, 0x092d, 0x0939, 0x094d, 0x0960, 0x0970, 0x0985, 0x0993, - 0x099b, 0x09b6, 0x09c6, 0x09da, 0x09fc, 0x0a0c, 0x0a1e, 0x0a30, - 0x0a3a, 0x0a48, 0x0a54, 0x0a60, 0x0a6e, 0x0a7c, 0x0a8a, 0x0a96, - 0x0aaf, 0x0ab7, 0x0ad4, 0x0ae4, 0x0af4, 0x0b00, 0x0b0a, 0x0b14, - 0x0b1e, 0x0b26, 0x0b36, 0x0b3e, 0x0b4a, 0x0b52, 0x0b6f, 0x0ba6, - 0x0bb0, 0x0bbe, 0x0bc8, 0x0bed, 0x0c04, 0x0c17, 0x0c2c, 0x0c3a, - // Entry C0 - FF - 0x0c40, 0x0c4e, 0x0c54, 0x0c67, 0x0c73, 0x0c81, 0x0c8b, 0x0c95, - 0x0c9f, 0x0cb8, 0x0ccd, 0x0cdb, 0x0ce5, 0x0cef, 0x0cff, 0x0d14, - 0x0d22, 0x0d43, 0x0d51, 0x0d64, 0x0d77, 0x0d81, 0x0d8f, 0x0d9d, - 0x0db2, 0x0dd1, 0x0de1, 0x0df6, 0x0e00, 0x0e12, 0x0e2e, 0x0e56, - 0x0e5c, 0x0e7f, 0x0e85, 0x0e93, 0x0ea5, 0x0eb1, 0x0ec4, 0x0ed8, - 0x0ee0, 0x0eea, 0x0ef6, 0x0f16, 0x0f22, 0x0f2c, 0x0f3a, 0x0f48, - 0x0f56, 0x0f8c, 0x0fa3, 0x0fba, 0x0fc8, 0x0fda, 0x0fef, 0x101e, - 0x102e, 0x1052, 0x1082, 0x108e, 0x109a, 0x10b6, 0x10c0, 0x10ca, - // Entry 100 - 13F - 0x10d0, 0x10da, 0x10f1, 0x10fd, 0x110d, 0x1128, 0x112e, 0x113a, - 0x1151, 0x1168, 0x1176, 0x118f, 0x11a6, 0x11bb, 0x11d2, 0x11e9, - 0x1200, 0x120c, 0x1223, 0x1231, 0x1242, 0x1253, 0x126d, 0x1282, - 0x1292, 0x12a0, 0x12c6, 0x12d4, 0x12dc, 0x12ef, 0x1304, 0x130e, - 0x1323, 0x1338, 0x1351, 0x1351, 0x136a, - }, - }, - { // pt - ptRegionStr, - ptRegionIdx, - }, - { // pt-PT - ptPTRegionStr, - ptPTRegionIdx, - }, - { // qu - "AndorraAfganistánAlbaniaArmeniaAngolaArgentinaSamoa AmericanaAustriaAust" + - "raliaAzerbaiyánBangladeshBélgicaBulgariaBaréinBurundiBenínBrunéiBoli" + - "viaBonaireBrasilBahamasButánBotsuanaBelarúsIslas CocosCongo (RDC)Con" + - "goSuizaCôte d’IvoireChileCamerúnChinaColombiaCosta RicaCubaCurazaoIs" + - "la ChristmasChipreAlemaniaYibutiDinamarcaDominicaArgeliaEcuadorEston" + - "iaEgiptoEritreaEspañaEtiopíaFinlandiaFiyiMicronesiaFranciaGabónReino" + - " UnidoGuerneseyGhanaGambiaGuineaGuinea EcuatorialGreciaGuatemalaGuam" + - "Guinea-BisáuGuyanaHong Kong (RAE)Islas Heard y McDonaldHondurasCroac" + - "iaHaitíIndonesiaIsraelIndiaIrakIránIslandiaItaliaJerseyJordaniaKenia" + - "KirguistánCamboyaKiribatiComorasSan Cristóbal y NievesCorea del Nort" + - "eCorea del SurKuwaitKazajistánLaosLíbanoLiechtensteinSri LankaLiberi" + - "aLesotoLituaniaLuxemburgoLetoniaMarruecosMónacoMoldovaSan MartínMada" + - "gascarIslas MarshallERY MacedoniaMalíMyanmarMacao RAEIslas Marianas " + - "del NorteMauritaniaMaltaMauricioMaldivasMalawiMéxicoMozambiqueNamibi" + - "aNueva CaledoniaNígerIsla NorfolkNigeriaNicaraguaPaíses BajosNoruega" + - "NepalNauruOmánPanamáPerúPolinesia FrancesaPapúa Nueva GuineaFilipina" + - "sPakistánPoloniaSan Pedro y MiquelónIslas PitcairnPuerto RicoPalesti" + - "na KamachikuqPortugalPalaosParaguayQatarSerbiaRusiaRuandaArabia Saud" + - "íSeychellesSudánSueciaSingapurEsloveniaEslovaquiaSierra LeonaSan Ma" + - "rinoSenegalSomaliaSurinamSudán del SurSanto Tomé y PríncipeEl Salvad" + - "orSint MaartenSiriaSuazilandiaChadTerritorios Australes FrancesesTog" + - "oTailandiaTayikistánTimor-LesteTúnezTongaTurquíaTrinidad y TobagoTan" + - "zaniaUgandaIslas menores alejadas de los EE.UU.Estados UnidosUruguay" + - "UzbekistánSanta Sede (Ciudad del Vaticano)VenezuelaEE.UU. Islas Vírg" + - "enesVietnamVanuatuWallis y FutunaSamoaYemenSudáfricaZambiaZimbabue", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0007, 0x0012, 0x0012, 0x0012, 0x0019, - 0x0020, 0x0026, 0x0026, 0x002f, 0x003e, 0x0045, 0x004e, 0x004e, - 0x004e, 0x0059, 0x0059, 0x0059, 0x0063, 0x006b, 0x006b, 0x0073, - 0x007a, 0x0081, 0x0087, 0x0087, 0x0087, 0x008e, 0x0095, 0x009c, - 0x00a2, 0x00a9, 0x00af, 0x00af, 0x00b7, 0x00bf, 0x00bf, 0x00bf, - 0x00ca, 0x00d5, 0x00d5, 0x00da, 0x00df, 0x00ef, 0x00ef, 0x00f4, - 0x00fc, 0x0101, 0x0109, 0x0109, 0x0113, 0x0117, 0x0117, 0x011e, - 0x012c, 0x0132, 0x0132, 0x013a, 0x013a, 0x0140, 0x0149, 0x0151, - // Entry 40 - 7F - 0x0151, 0x0158, 0x0158, 0x015f, 0x0166, 0x016c, 0x016c, 0x0173, - 0x017a, 0x0182, 0x0182, 0x0182, 0x018b, 0x018f, 0x018f, 0x0199, - 0x0199, 0x01a0, 0x01a6, 0x01b1, 0x01b1, 0x01b1, 0x01b1, 0x01ba, - 0x01bf, 0x01bf, 0x01bf, 0x01c5, 0x01cb, 0x01cb, 0x01dc, 0x01e2, - 0x01e2, 0x01eb, 0x01ef, 0x01fc, 0x0202, 0x0211, 0x0227, 0x022f, - 0x0236, 0x023c, 0x023c, 0x023c, 0x0245, 0x0245, 0x024b, 0x024b, - 0x0250, 0x0250, 0x0254, 0x0259, 0x0261, 0x0267, 0x026d, 0x026d, - 0x0275, 0x0275, 0x027a, 0x0285, 0x028c, 0x0294, 0x029b, 0x02b2, - // Entry 80 - BF - 0x02c1, 0x02ce, 0x02d4, 0x02d4, 0x02df, 0x02e3, 0x02ea, 0x02ea, - 0x02f7, 0x0300, 0x0307, 0x030d, 0x0315, 0x031f, 0x0326, 0x0326, - 0x032f, 0x0336, 0x033d, 0x033d, 0x0348, 0x0352, 0x0360, 0x036d, - 0x0372, 0x0379, 0x0379, 0x0382, 0x039a, 0x039a, 0x03a4, 0x03a4, - 0x03a9, 0x03b1, 0x03b9, 0x03bf, 0x03c6, 0x03c6, 0x03d0, 0x03d7, - 0x03e6, 0x03ec, 0x03f8, 0x03ff, 0x0408, 0x0415, 0x041c, 0x0421, - 0x0426, 0x0426, 0x0426, 0x042b, 0x0432, 0x0437, 0x0449, 0x045c, - 0x0465, 0x046e, 0x0475, 0x048a, 0x0498, 0x04a3, 0x04b7, 0x04bf, - // Entry C0 - FF - 0x04c5, 0x04cd, 0x04d2, 0x04d2, 0x04d2, 0x04d2, 0x04d8, 0x04dd, - 0x04e3, 0x04f0, 0x04f0, 0x04fa, 0x0500, 0x0506, 0x050e, 0x050e, - 0x0517, 0x0517, 0x0521, 0x052d, 0x0537, 0x053e, 0x0545, 0x054c, - 0x055a, 0x0571, 0x057c, 0x0588, 0x058d, 0x0598, 0x0598, 0x0598, - 0x059c, 0x05bb, 0x05bf, 0x05c8, 0x05d3, 0x05d3, 0x05de, 0x05de, - 0x05e4, 0x05e9, 0x05f1, 0x0602, 0x0602, 0x0602, 0x060a, 0x060a, - 0x0610, 0x0634, 0x0634, 0x0642, 0x0649, 0x0654, 0x0674, 0x0674, - 0x067d, 0x067d, 0x0693, 0x069a, 0x06a1, 0x06b0, 0x06b5, 0x06b5, - // Entry 100 - 13F - 0x06ba, 0x06ba, 0x06c4, 0x06ca, 0x06d2, - }, - }, - { // rm - "AndorraEmirats Arabs UnidsAfghanistanAntigua e BarbudaAnguillaAlbaniaArm" + - "eniaAngolaAntarcticaArgentiniaSamoa AmericanaAustriaAustraliaArubaIn" + - "slas AlandAserbaidschanBosnia ed ErzegovinaBarbadosBangladeschBelgia" + - "Burkina FasoBulgariaBahrainBurundiBeninSon BarthélemyBermudasBruneiB" + - "oliviaBrasiliaBahamasBhutanInsla BouvetBotswanaBielorussiaBelizeCana" + - "daInslas CocosRepublica Democratica dal CongoRepublica Centralafrica" + - "naCongoSvizraCosta d’IvurInslas CookChileCamerunChinaColumbiaCosta R" + - "icaCubaCap VerdInsla da ChristmasCipraRepublica TschecaGermaniaDschi" + - "butiDanemarcDominicaRepublica DominicanaAlgeriaEcuadorEstoniaEgiptaS" + - "ahara OccidentalaEritreaSpagnaEtiopiaUniun europeicaFinlandaFidschiI" + - "nslas dal FalklandMicronesiaInslas FeroeFrantschaGabunReginavel UnìG" + - "renadaGeorgiaGuyana FranzosaGuernseyGhanaGibraltarGrönlandaGambiaGui" + - "neaGuadeloupeGuinea EquatorialaGreziaGeorgia dal Sid e las Inslas Sa" + - "ndwich dal SidGuatemalaGuamGuinea-BissauGuyanaRegiun d’administraziu" + - "n speziala da Hongkong, ChinaInslas da Heard e da McDonaldHondurasCr" + - "oaziaHaitiUngariaIndonesiaIrlandaIsraelInsla da ManIndiaTerritori Br" + - "itannic en l’Ocean IndicIracIranIslandaItaliaJerseyGiamaicaJordaniaG" + - "iapunKeniaKirghisistanCambodschaKiribatiComorasSaint Kitts e NevisCo" + - "rea dal NordCorea dal SidKuwaitInslas CaymanKasachstanLaosLibanonSai" + - "nt LuciaLiechtensteinSri LankaLiberiaLesothoLituaniaLuxemburgLettoni" + - "aLibiaMarocMonacoMoldaviaMontenegroSaint MartinMadagascarInslas da M" + - "arshallMacedoniaMaliMyanmarMongoliaRegiun d’administraziun speziala " + - "Macao, ChinaInslas Mariannas dal NordMartiniqueMauretaniaMontserratM" + - "altaMauritiusMaldivasMalawiMexicoMalaisiaMosambicNamibiaNova Caledon" + - "iaNigerInsla NorfolkNigeriaNicaraguaPajais BassNorvegiaNepalNauruNiu" + - "eNova ZelandaOmanPanamaPeruPolinesia FranzosaPapua Nova GuineaFilipp" + - "inasPakistanPolognaSaint Pierre e MiquelonPitcairnPuerto RicoTerrito" + - "ri PalestinaisPortugalPalauParaguaiKatarOceania PerifericaRéunionRum" + - "eniaSerbiaRussiaRuandaArabia SauditaSalomonasSeychellasSudanSveziaSi" + - "ngapurSontg’ElenaSloveniaSvalbard e Jan MayenSlovachiaSierra LeoneSa" + - "n MarinoSenegalSomaliaSurinamSão Tomé e PrincipeEl SalvadorSiriaSwaz" + - "ilandInslas Turks e CaicosTschadTerritoris Franzos MeridiunalsTogoTa" + - "ilandaTadschikistanTokelauTimor da l’OstTurkmenistanTunesiaTongaTirc" + - "hiaTrinidad e TobagoTuvaluTaiwanTansaniaUcrainaUgandaInslas pitschna" + - "s perifericas dals Stadis Unids da l’AmericaStadis Unids da l’Americ" + - "aUruguayUsbekistanCitad dal VaticanSaint Vincent e las GrenadinasVen" + - "ezuelaInslas Virginas BritannicasInslas Virginas AmericanasVietnamVa" + - "nuatuWallis e FutunaSamoaJemenMayotteAfrica dal SidSambiaSimbabweReg" + - "iun betg encouschenta u nunvalaivlamundAfricaAmerica dal NordAmerica" + - " dal SidOceaniaAfrica dal VestAmerica CentralaAfrica da l’OstAfrica " + - "dal NordAfrica CentralaAfrica MeridiunalaAmerica dal Nord, America C" + - "entrala ed America dal SidCaribicaAsia da l’OstAsia dal SidAsia dal " + - "SidostEuropa dal SidAustralia e Nova ZelandaMelanesiaRegiun Micrones" + - "icaPolinesiaAsiaAsia CentralaAsia dal VestEuropaEuropa OrientalaEuro" + - "pa dal NordEuropa dal VestAmerica Latina", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x001a, 0x0025, 0x0036, 0x003e, 0x0045, - 0x004c, 0x0052, 0x005c, 0x0066, 0x0075, 0x007c, 0x0085, 0x008a, - 0x0096, 0x00a3, 0x00b7, 0x00bf, 0x00ca, 0x00d0, 0x00dc, 0x00e4, - 0x00eb, 0x00f2, 0x00f7, 0x0106, 0x010e, 0x0114, 0x011b, 0x011b, - 0x0123, 0x012a, 0x0130, 0x013c, 0x0144, 0x014f, 0x0155, 0x015b, - 0x0167, 0x0186, 0x019f, 0x01a4, 0x01aa, 0x01b8, 0x01c3, 0x01c8, - 0x01cf, 0x01d4, 0x01dc, 0x01dc, 0x01e6, 0x01ea, 0x01f2, 0x01f2, - 0x0204, 0x0209, 0x021a, 0x0222, 0x0222, 0x022b, 0x0233, 0x023b, - // Entry 40 - 7F - 0x024f, 0x0256, 0x0256, 0x025d, 0x0264, 0x026a, 0x027c, 0x0283, - 0x0289, 0x0290, 0x029f, 0x029f, 0x02a7, 0x02ae, 0x02c1, 0x02cb, - 0x02d7, 0x02e0, 0x02e5, 0x02f3, 0x02fa, 0x0301, 0x0310, 0x0318, - 0x031d, 0x0326, 0x0330, 0x0336, 0x033c, 0x0346, 0x0358, 0x035e, - 0x038b, 0x0394, 0x0398, 0x03a5, 0x03ab, 0x03e0, 0x03fd, 0x0405, - 0x040c, 0x0411, 0x0418, 0x0418, 0x0421, 0x0428, 0x042e, 0x043a, - 0x043f, 0x0465, 0x0469, 0x046d, 0x0474, 0x047a, 0x0480, 0x0488, - 0x0490, 0x0496, 0x049b, 0x04a7, 0x04b1, 0x04b9, 0x04c0, 0x04d3, - // Entry 80 - BF - 0x04e1, 0x04ee, 0x04f4, 0x0501, 0x050b, 0x050f, 0x0516, 0x0521, - 0x052e, 0x0537, 0x053e, 0x0545, 0x054d, 0x0556, 0x055e, 0x0563, - 0x0568, 0x056e, 0x0576, 0x0580, 0x058c, 0x0596, 0x05a8, 0x05b1, - 0x05b5, 0x05bc, 0x05c4, 0x05f3, 0x060c, 0x0616, 0x0620, 0x062a, - 0x062f, 0x0638, 0x0640, 0x0646, 0x064c, 0x0654, 0x065c, 0x0663, - 0x0671, 0x0676, 0x0683, 0x068a, 0x0693, 0x069e, 0x06a6, 0x06ab, - 0x06b0, 0x06b4, 0x06c0, 0x06c4, 0x06ca, 0x06ce, 0x06e0, 0x06f1, - 0x06fb, 0x0703, 0x070a, 0x0721, 0x0729, 0x0734, 0x0749, 0x0751, - // Entry C0 - FF - 0x0756, 0x075e, 0x0763, 0x0775, 0x077d, 0x0784, 0x078a, 0x0790, - 0x0796, 0x07a4, 0x07ad, 0x07b7, 0x07bc, 0x07c2, 0x07ca, 0x07d7, - 0x07df, 0x07f3, 0x07fc, 0x0808, 0x0812, 0x0819, 0x0820, 0x0827, - 0x0827, 0x083c, 0x0847, 0x0847, 0x084c, 0x0855, 0x0855, 0x086a, - 0x0870, 0x088e, 0x0892, 0x089a, 0x08a7, 0x08ae, 0x08be, 0x08ca, - 0x08d1, 0x08d6, 0x08dd, 0x08ee, 0x08f4, 0x08fa, 0x0902, 0x0909, - 0x090f, 0x094c, 0x094c, 0x0967, 0x096e, 0x0978, 0x0989, 0x09a7, - 0x09b0, 0x09cb, 0x09e5, 0x09ec, 0x09f3, 0x0a02, 0x0a07, 0x0a07, - // Entry 100 - 13F - 0x0a0c, 0x0a13, 0x0a21, 0x0a27, 0x0a2f, 0x0a55, 0x0a59, 0x0a5f, - 0x0a6f, 0x0a7e, 0x0a85, 0x0a94, 0x0aa4, 0x0ab5, 0x0ac4, 0x0ad3, - 0x0ae5, 0x0b1a, 0x0b1a, 0x0b22, 0x0b31, 0x0b3d, 0x0b4c, 0x0b5a, - 0x0b72, 0x0b7b, 0x0b8d, 0x0b96, 0x0b9a, 0x0ba7, 0x0bb4, 0x0bba, - 0x0bca, 0x0bd9, 0x0be8, 0x0be8, 0x0bf6, - }, - }, - { // rn - "AndoraLeta Zunze Ubumwe z’AbarabuAfuganisitaniAntigwa na BaribudaAngwila" + - "AlubaniyaArumeniyaAngolaArijantineSamowa nyamerikaOtirisheOsitaraliy" + - "aArubaAzerubayijaniBosiniya na HerigozevineBarubadosiBangaladeshiUbu" + - "biligiBurukina FasoBuligariyaBahareyiniUburundiBeneBerimudaBuruneyiB" + - "oliviyaBureziliBahamasiButaniBotswanaBelausiBelizeKanadaRepubulika I" + - "haranira Demokarasi ya KongoRepubulika ya SantarafurikaKongoUbusuwis" + - "iKotedivuwareIzinga rya KukuShiliKameruniUbushinwaKolombiyaKositarik" + - "aKibaIbirwa bya KapuveriIzinga rya ShipureRepubulika ya CekeUbudageJ" + - "ibutiDanimarikiDominikaRepubulika ya DominikaAlijeriyaEkwateriEsiton" + - "iyaMisiriElitereyaHisipaniyaEtiyopiyaFinilandiFijiIzinga rya Filikil" + - "andiMikoroniziyaUbufaransaGaboUbwongerezaGerenadaJeworujiyaGwayana y" + - "’AbafaransaGanaJuburalitariGurunilandiGambiyaGuneyaGwadelupeGineya" + - " EkwatoriyaliUbugerekiGwatemalaGwamuGineya BisawuGuyaneHondurasiKoro" + - "wasiyaHayitiHungariyaIndoneziyaIrilandiIsiraheliUbuhindiIntara y’Ubw" + - "ongereza yo mu birwa by’AbahindiIrakiIraniAyisilandiUbutaliyaniJamay" + - "ikaYorudaniyaUbuyapaniKenyaKirigisitaniKambojeKiribatiIzinga rya Kom" + - "oreSekitsi na NevisiKoreya y’amajaruguruKoreya y’amajepfoKowetiIbirw" + - "a bya KeyimaniKazakisitaniLayosiLibaniSelusiyaLishyitenshitayiniSiri" + - "lankaLiberiyaLesotoLituwaniyaLukusamburuLativaLibiyaMarokeMonakoMolu" + - "daviMadagasikariIzinga rya MarishariMasedoniyaMaliBirimaniyaMongoliy" + - "aAmazinga ya Mariyana ryo mu majaruguruMaritinikiMoritaniyaMontesera" + - "tiMalitaIzinga rya MoriseMoludaveMalawiMigizikeMaleziyaMozambikiNami" + - "biyaNiyukaledoniyaNijeriizinga rya NorufolukeNijeriyaNikaragwaUbuhol" + - "andiNoruvejiNepaliNawuruNiyuweNuvelizelandiOmaniPanamaPeruPolineziya" + - " y’AbafaransaPapuwa NiyugineyaAmazinga ya FilipinePakisitaniPolonyeS" + - "empiyeri na MikeloniPitikeyiriniPuwetorikoPalesitina Wesitibanka na " + - "GazaPorutugaliPalawuParagweKatariAmazinga ya ReyiniyoRumaniyaUburusi" + - "yau RwandaArabiya SawuditeAmazinga ya SalumoniAmazinga ya SeyisheliS" + - "udaniSuwediSingapuruSeheleneSiloveniyaSilovakiyaSiyeralewoneSanimari" + - "noSenegaliSomaliyaSurinameSawotome na PerensipeEli SaluvatoriSiriyaS" + - "uwazilandiAmazinga ya Turkisi na CayikosiCadiTogoTayilandiTajikisita" + - "niTokelawuTimoru y’iburasirazubaTurukumenisitaniTuniziyaTongaTurukiy" + - "aTirinidadi na TobagoTuvaluTayiwaniTanzaniyaIkereneUbugandeLeta Zunz" + - "e Ubumwe za AmerikaIrigweUzubekisitaniUmurwa wa VatikaniSevensa na G" + - "erenadineVenezuwelaIbirwa by’isugi by’AbongerezaAmazinga y’Isugi y’A" + - "banyamerikaViyetinamuVanuwatuWalisi na FutunaSamowaYemeniMayoteAfuri" + - "ka y’EpfoZambiyaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0023, 0x0030, 0x0043, 0x004a, 0x0053, - 0x005c, 0x0062, 0x0062, 0x006c, 0x007c, 0x0084, 0x008f, 0x0094, - 0x0094, 0x00a1, 0x00b9, 0x00c3, 0x00cf, 0x00d8, 0x00e5, 0x00ef, - 0x00f9, 0x0101, 0x0105, 0x0105, 0x010d, 0x0115, 0x011d, 0x011d, - 0x0125, 0x012d, 0x0133, 0x0133, 0x013b, 0x0142, 0x0148, 0x014e, - 0x014e, 0x0176, 0x0191, 0x0196, 0x019f, 0x01ab, 0x01ba, 0x01bf, - 0x01c7, 0x01d0, 0x01d9, 0x01d9, 0x01e3, 0x01e7, 0x01fa, 0x01fa, - 0x01fa, 0x020c, 0x021e, 0x0225, 0x0225, 0x022b, 0x0235, 0x023d, - // Entry 40 - 7F - 0x0253, 0x025c, 0x025c, 0x0264, 0x026d, 0x0273, 0x0273, 0x027c, - 0x0286, 0x028f, 0x028f, 0x028f, 0x0298, 0x029c, 0x02b2, 0x02be, - 0x02be, 0x02c8, 0x02cc, 0x02d7, 0x02df, 0x02e9, 0x02ff, 0x02ff, - 0x0303, 0x030f, 0x031a, 0x0321, 0x0327, 0x0330, 0x0343, 0x034c, - 0x034c, 0x0355, 0x035a, 0x0367, 0x036d, 0x036d, 0x036d, 0x0376, - 0x0380, 0x0386, 0x038f, 0x038f, 0x0399, 0x03a1, 0x03aa, 0x03aa, - 0x03b2, 0x03e2, 0x03e7, 0x03ec, 0x03f6, 0x0401, 0x0401, 0x0409, - 0x0413, 0x041c, 0x0421, 0x042d, 0x0434, 0x043c, 0x044d, 0x045e, - // Entry 80 - BF - 0x0474, 0x0487, 0x048d, 0x04a0, 0x04ac, 0x04b2, 0x04b8, 0x04c0, - 0x04d2, 0x04db, 0x04e3, 0x04e9, 0x04f3, 0x04fe, 0x0504, 0x050a, - 0x0510, 0x0516, 0x051e, 0x051e, 0x051e, 0x052a, 0x053e, 0x0548, - 0x054c, 0x0556, 0x055f, 0x055f, 0x0585, 0x058f, 0x0599, 0x05a4, - 0x05aa, 0x05bb, 0x05c3, 0x05c9, 0x05d1, 0x05d9, 0x05e2, 0x05ea, - 0x05f8, 0x05fe, 0x0613, 0x061b, 0x0624, 0x062e, 0x0636, 0x063c, - 0x0642, 0x0648, 0x0655, 0x065a, 0x0660, 0x0664, 0x067d, 0x068e, - 0x06a2, 0x06ac, 0x06b3, 0x06c8, 0x06d4, 0x06de, 0x06fc, 0x0706, - // Entry C0 - FF - 0x070c, 0x0713, 0x0719, 0x0719, 0x072d, 0x0735, 0x0735, 0x073e, - 0x0746, 0x0756, 0x076a, 0x077f, 0x0785, 0x078b, 0x0794, 0x079c, - 0x07a6, 0x07a6, 0x07b0, 0x07bc, 0x07c6, 0x07ce, 0x07d6, 0x07de, - 0x07de, 0x07f3, 0x0801, 0x0801, 0x0807, 0x0812, 0x0812, 0x0831, - 0x0835, 0x0835, 0x0839, 0x0842, 0x084e, 0x0856, 0x086e, 0x087e, - 0x0886, 0x088b, 0x0893, 0x08a7, 0x08ad, 0x08b5, 0x08be, 0x08c5, - 0x08cd, 0x08cd, 0x08cd, 0x08e9, 0x08ef, 0x08fc, 0x090e, 0x0923, - 0x092d, 0x094e, 0x0971, 0x097b, 0x0983, 0x0993, 0x0999, 0x0999, - // Entry 100 - 13F - 0x099f, 0x09a5, 0x09b5, 0x09bc, 0x09c4, - }, - }, - { // ro - roRegionStr, - roRegionIdx, - }, - { // ro-MD - "Myanmar", - []uint16{ // 154 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0007, - }, - }, - { // rof - "AndoroFalme za KiarabuAfuganistaniAntigua na BabudaAnguilaAlbaniaAmeniaA" + - "ngoloAjentinaSamoa ya MarekaniOstriaAustraliaArubaAzabajaniBosnia na" + - " HezegovinaBabadoBangladeshiUbelgijiBukinafasoBulgariaBahareniBurund" + - "iBeniniBermudaBruneiBoliviaBraziliBahamasiButaniBotswanaBelarusiBeli" + - "zeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya KatiKon" + - "goUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarikaKub" + - "aKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJamhur" + - "i ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfiniFi" + - "jiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJojiaGw" + - "iyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekwetaU" + - "girikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaIndon" + - "esiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIrakiUa" + - "jemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodiaKiri" + - "batiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiVisiw" + - "a vya KaimaiKazakistaniLaosiLebanoniSantalusiaLishenteniSirilankaLib" + - "eriaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukiniVisi" + - "wa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya Kaska" + - "ziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoMales" + - "iaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikaragwa" + - "UholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia ya Uf" + - "aransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkairniPw" + - "etorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPalauP" + - "aragwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonSheli" + - "sheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniSamar" + - "inoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaziVis" + - "iwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori ya M" + - "asharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuvaluTa" + - "iwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSantavi" + - "senti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa vya" + - " Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMayott" + - "eAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0033, 0x003a, 0x0041, - 0x0047, 0x004d, 0x004d, 0x0055, 0x0066, 0x006c, 0x0075, 0x007a, - 0x007a, 0x0083, 0x0097, 0x009d, 0x00a8, 0x00b0, 0x00ba, 0x00c2, - 0x00ca, 0x00d1, 0x00d7, 0x00d7, 0x00de, 0x00e4, 0x00eb, 0x00eb, - 0x00f2, 0x00fa, 0x0100, 0x0100, 0x0108, 0x0110, 0x0116, 0x011c, - 0x011c, 0x013c, 0x0155, 0x015a, 0x0160, 0x0167, 0x0176, 0x017b, - 0x0183, 0x0188, 0x0190, 0x0190, 0x0199, 0x019d, 0x01a5, 0x01a5, - 0x01a5, 0x01ac, 0x01bc, 0x01c5, 0x01c5, 0x01cb, 0x01d2, 0x01da, - // Entry 40 - 7F - 0x01ed, 0x01f4, 0x01f4, 0x01fa, 0x0201, 0x0206, 0x0206, 0x020d, - 0x0215, 0x021d, 0x021d, 0x021d, 0x0222, 0x0226, 0x0239, 0x0243, - 0x0243, 0x024b, 0x0251, 0x025a, 0x0261, 0x0266, 0x0279, 0x0279, - 0x027e, 0x0286, 0x028f, 0x0295, 0x0299, 0x02a2, 0x02ab, 0x02b2, - 0x02b2, 0x02bb, 0x02bf, 0x02c8, 0x02ce, 0x02ce, 0x02ce, 0x02d7, - 0x02de, 0x02e3, 0x02eb, 0x02eb, 0x02f4, 0x02fc, 0x0303, 0x0303, - 0x0308, 0x032d, 0x0332, 0x0338, 0x0340, 0x0346, 0x0346, 0x034d, - 0x0354, 0x035a, 0x035f, 0x036c, 0x0374, 0x037c, 0x0382, 0x0395, - // Entry 80 - BF - 0x03a4, 0x03b0, 0x03b7, 0x03c8, 0x03d3, 0x03d8, 0x03e0, 0x03ea, - 0x03f4, 0x03fd, 0x0404, 0x040a, 0x0412, 0x041b, 0x0422, 0x0427, - 0x042d, 0x0433, 0x043a, 0x043a, 0x043a, 0x0440, 0x0452, 0x045b, - 0x045f, 0x0464, 0x046c, 0x046c, 0x048c, 0x0495, 0x049e, 0x04a9, - 0x04ae, 0x04b4, 0x04ba, 0x04c0, 0x04c7, 0x04ce, 0x04d6, 0x04dd, - 0x04e9, 0x04ef, 0x0500, 0x0507, 0x0510, 0x0518, 0x051d, 0x0523, - 0x0528, 0x052c, 0x0536, 0x053b, 0x0541, 0x0545, 0x055a, 0x055f, - 0x0567, 0x0570, 0x0577, 0x058d, 0x0596, 0x059f, 0x05d1, 0x05d6, - // Entry C0 - FF - 0x05db, 0x05e3, 0x05e9, 0x05e9, 0x05f2, 0x05f9, 0x05f9, 0x05fe, - 0x0604, 0x0609, 0x061b, 0x0625, 0x062b, 0x0631, 0x0639, 0x0644, - 0x064c, 0x064c, 0x0654, 0x065f, 0x0667, 0x066f, 0x0676, 0x067e, - 0x067e, 0x0692, 0x069a, 0x069a, 0x069f, 0x06a5, 0x06a5, 0x06be, - 0x06c3, 0x06c3, 0x06c7, 0x06cf, 0x06da, 0x06e1, 0x06f4, 0x0703, - 0x070a, 0x070f, 0x0716, 0x0728, 0x072e, 0x0735, 0x073d, 0x0744, - 0x074a, 0x074a, 0x074a, 0x0752, 0x0759, 0x0765, 0x076d, 0x0786, - 0x078f, 0x07ae, 0x07cc, 0x07d5, 0x07dc, 0x07eb, 0x07f0, 0x07f0, - // Entry 100 - 13F - 0x07f6, 0x07fd, 0x080a, 0x0810, 0x0818, - }, - }, - { // ru - ruRegionStr, - ruRegionIdx, - }, - { // ru-UA - "О-в ВознесенияОбъединенные Арабские ЭмиратыО-в БувеО-ва КукаО-в Клипперт" + - "онО-в РождестваО-ва Херд и МакдональдО-в НорфолкТимор-ЛестеМалые Ти" + - "хоокеанские Отдаленные Острова США", - []uint16{ // 242 elements - // Entry 0 - 3F - 0x0000, 0x001a, 0x001a, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - 0x0052, 0x0052, 0x0052, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, - 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0070, 0x0070, - 0x0070, 0x0070, 0x0070, 0x008a, 0x008a, 0x008a, 0x008a, 0x008a, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - // Entry 40 - 7F - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, - 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00a2, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - // Entry 80 - BF - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, - 0x00ca, 0x00ca, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - // Entry C0 - FF - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, - 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00de, 0x00f3, 0x00f3, - 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, 0x00f3, - 0x00f3, 0x0143, - }, - }, - { // rw - "U RwandaTonga", - []uint16{ // 234 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 40 - 7F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry 80 - BF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - // Entry C0 - FF - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, - 0x0008, 0x000d, - }, - }, - { // rwk - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // sah - "БразилияКанаадаЧиилиКытайКуубаЭстонияФинляндияУлуу БританияИрландияМэн а" + - "рыыИсландияДьамаайкаЛитваЛатвияЛиибийэМиэксикэНорвегияАрассыыйаСуда" + - "анШвецияАмерика Холбоһуктаах ШтааттараАан дойдуАапырыкаХотугу Эмиэр" + - "икэСоҕуруу Эмиэрикэ", - []uint16{ // 266 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001e, - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0028, - 0x0028, 0x0032, 0x0032, 0x0032, 0x0032, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - // Entry 40 - 7F - 0x003c, 0x003c, 0x003c, 0x003c, 0x004a, 0x004a, 0x004a, 0x004a, - 0x004a, 0x004a, 0x004a, 0x004a, 0x005c, 0x005c, 0x005c, 0x005c, - 0x005c, 0x005c, 0x005c, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, - 0x0075, 0x0075, 0x0075, 0x0075, 0x0075, 0x0085, 0x0085, 0x0094, - 0x0094, 0x0094, 0x0094, 0x0094, 0x00a4, 0x00a4, 0x00a4, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - // Entry 80 - BF - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00c0, 0x00c0, 0x00cc, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, 0x00da, - 0x00da, 0x00da, 0x00da, 0x00da, 0x00ea, 0x00ea, 0x00ea, 0x00ea, - 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00ea, 0x00fa, 0x00fa, - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, - // Entry C0 - FF - 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x00fa, 0x010c, - 0x010c, 0x010c, 0x010c, 0x010c, 0x0118, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, - 0x0124, 0x0124, 0x0124, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, - // Entry 100 - 13F - 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x015e, 0x016f, 0x017f, - 0x019c, 0x01bb, - }, - }, - { // saq - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // sbp - "AndolaWutwa wa shiyalabuAfuganisitaniAnitiguya ni BalubudaAnguillaAluban" + - "iyaAlimeniyaAngolaAjentinaSamoya ya MalekaniAwusitiliyaAwusitilaliya" + - "AlubaAsabajaniBosiniya ni HesegovinaBabadosiBangiladeshiUbeligijiBuk" + - "inafasoBuligaliyaBahaleniBulundiBeniniBelimudaBuluneyiBoliviyaBulasi" + - "liBahamaButaniBotiswanaBelalusiBeliseKanadaJamuhuli ya Kidemokilasiy" + - "a ya KongoJamuhuli ya Afilika ya PakhatiKongoUswisiKodivayaFigunguli" + - " fya KookiShileKameruniShinaKolombiyaKositalikaKubaKepuvedeKupilosiJ" + - "amuhuli ya ShekiWujelumaniJibutiDenimakiDominikaJamuhuli ya Dominika" + - "AlijeliyaEkwadoEsitoniyaMisiliElitileyaHisipaniyaUhabeshiWufiniFijiF" + - "igunguli fya FokolendiMikilonesiyaWufalansaGaboniUwingelesaGilenadaJ" + - "ojiyaGwiyana ya WufalansaKhanaJibulalitaGilinilandiGambiyaGineGwadel" + - "upeGinekwetaWugilikiGwatemalaGwamuGinebisawuGuyanaHondulasiKolasiyaH" + - "ayitiHungaliyaIndonesiyaAyalandiIsilaeliIndiyaUluvala lwa Uwingelesa" + - " ku Bahali ya HindiIlakiUwajemiAyisilendiItaliyaJamaikaYolodaniJapan" + - "iKenyaKiligisisitaniKambodiyaKilibatiKomoloSantakitisi ni NevisiKole" + - "ya ya luvala lwa KunyamandeKoleya ya KusiniKuwaitiFigunguli ifya Kay" + - "imayiKasakisitaniLayosiLebanoniSantalusiyaLisheniteniSililankaLibeli" + - "yaLesotoLitwaniyaLasembagiLativiyaLibiyaMolokoMonakoMolidovaBukiniFi" + - "gunguli ifya MalishaliMasedoniyaMaliMuyamaMongoliyaFigunguli fya Mal" + - "iyana ifya luvala lwa KunyamandeMalitinikiMolitaniyaMonitiselatiMali" + - "taMolisiModivuMalawiMekisikoMalesiyaMusumbijiNamibiyaNyukaledoniyaNi" + - "jeliShigunguli sha NolifokiNijeliyaNikalagwaWuholansiNolweNepaliNawu" + - "luNiwueNyusilendiOmaniPanamaPeluPolinesiya ya WufalansaPapuwaFilipin" + - "oPakisitaniPolandiSantapieli ni MikeloniPitikailiniPwetolikoMunjema " + - "gwa Kusikha nu Luvala lwa Gasa lwa PalesitWulenoPalawuPalagwayiKatal" + - "iLiyunioniLomaniyaWulusiLwandaSawudiFigunguli fya SolomoniShelisheli" + - "SudaniUswidiSingapooSantahelenaSiloveniyaSilovakiyaSiela LiyoniSamal" + - "inoSenegaliSomaliyaSulinamuSayo Tome ni PilinikipeElisavadoSiliyaUsw" + - "asiFigunguli fya Tuliki ni KaikoShadiTogoTailandiTajikisitaniTokelaw" + - "uTimoli ya kunenaTulukimenisitaniTunisiyaTongaUtulukiTilinidadi ni T" + - "obagoTuvaluTaiwaniTansaniyaYukileiniUgandaMalekaniUlugwayiUsibekisit" + - "aniVatikaniSantavisenti na GilenadiniVenesuelaFigunguli ifya Viligin" + - "iya ifya UwingelesaFigunguli fya Viliginiya ifya MalekaniVietinamuVa" + - "nuatuWalisi ni FutunaSamoyaYemeniMayoteAfilika KusiniSambiyaSimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0018, 0x0025, 0x003a, 0x0042, 0x004b, - 0x0054, 0x005a, 0x005a, 0x0062, 0x0074, 0x007f, 0x008c, 0x0091, - 0x0091, 0x009a, 0x00b0, 0x00b8, 0x00c4, 0x00cd, 0x00d7, 0x00e1, - 0x00e9, 0x00f0, 0x00f6, 0x00f6, 0x00fe, 0x0106, 0x010e, 0x010e, - 0x0116, 0x011c, 0x0122, 0x0122, 0x012b, 0x0133, 0x0139, 0x013f, - 0x013f, 0x0162, 0x0180, 0x0185, 0x018b, 0x0193, 0x01a6, 0x01ab, - 0x01b3, 0x01b8, 0x01c1, 0x01c1, 0x01cb, 0x01cf, 0x01d7, 0x01d7, - 0x01d7, 0x01df, 0x01f0, 0x01fa, 0x01fa, 0x0200, 0x0208, 0x0210, - // Entry 40 - 7F - 0x0224, 0x022d, 0x022d, 0x0233, 0x023c, 0x0242, 0x0242, 0x024b, - 0x0255, 0x025d, 0x025d, 0x025d, 0x0263, 0x0267, 0x027e, 0x028a, - 0x028a, 0x0293, 0x0299, 0x02a3, 0x02ab, 0x02b1, 0x02c5, 0x02c5, - 0x02ca, 0x02d4, 0x02df, 0x02e6, 0x02ea, 0x02f3, 0x02fc, 0x0304, - 0x0304, 0x030d, 0x0312, 0x031c, 0x0322, 0x0322, 0x0322, 0x032b, - 0x0333, 0x0339, 0x0342, 0x0342, 0x034c, 0x0354, 0x035c, 0x035c, - 0x0362, 0x038b, 0x0390, 0x0397, 0x03a1, 0x03a8, 0x03a8, 0x03af, - 0x03b7, 0x03bd, 0x03c2, 0x03d0, 0x03d9, 0x03e1, 0x03e7, 0x03fc, - // Entry 80 - BF - 0x041b, 0x042b, 0x0432, 0x0449, 0x0455, 0x045b, 0x0463, 0x046e, - 0x0479, 0x0482, 0x048a, 0x0490, 0x0499, 0x04a2, 0x04aa, 0x04b0, - 0x04b6, 0x04bc, 0x04c4, 0x04c4, 0x04c4, 0x04ca, 0x04e2, 0x04ec, - 0x04f0, 0x04f6, 0x04ff, 0x04ff, 0x0530, 0x053a, 0x0544, 0x0550, - 0x0556, 0x055c, 0x0562, 0x0568, 0x0570, 0x0578, 0x0581, 0x0589, - 0x0596, 0x059c, 0x05b3, 0x05bb, 0x05c4, 0x05cd, 0x05d2, 0x05d8, - 0x05de, 0x05e3, 0x05ed, 0x05f2, 0x05f8, 0x05fc, 0x0613, 0x0619, - 0x0621, 0x062b, 0x0632, 0x0648, 0x0653, 0x065c, 0x068e, 0x0694, - // Entry C0 - FF - 0x069a, 0x06a3, 0x06a9, 0x06a9, 0x06b2, 0x06ba, 0x06ba, 0x06c0, - 0x06c6, 0x06cc, 0x06e2, 0x06ec, 0x06f2, 0x06f8, 0x0700, 0x070b, - 0x0715, 0x0715, 0x071f, 0x072b, 0x0733, 0x073b, 0x0743, 0x074b, - 0x074b, 0x0762, 0x076b, 0x076b, 0x0771, 0x0777, 0x0777, 0x0794, - 0x0799, 0x0799, 0x079d, 0x07a5, 0x07b1, 0x07b9, 0x07c9, 0x07d9, - 0x07e1, 0x07e6, 0x07ed, 0x0801, 0x0807, 0x080e, 0x0817, 0x0820, - 0x0826, 0x0826, 0x0826, 0x082e, 0x0836, 0x0843, 0x084b, 0x0865, - 0x086e, 0x0897, 0x08bd, 0x08c6, 0x08cd, 0x08dd, 0x08e3, 0x08e3, - // Entry 100 - 13F - 0x08e9, 0x08ef, 0x08fd, 0x0904, 0x090c, - }, - }, - { // sd - "طلوع ٻيٽاندورامتحده عرب اماراتافغانستانانٽيگئا و بربوداانگويلاالبانياارم" + - "ینیاانگولاانٽارڪٽيڪاارجنٽيناآمريڪي سامواآشٽرياآسٽريلياعروباالند ٻيٽ" + - "آذربائيجانبوسنیا اور هرزیگویناباربڊوسبنگلاديشآسٽريابرڪينا فاسوبلغار" + - "يابحرينبرونڊيبيننسینٽ برٿلیمیبرمودابرونائيبوليوياڪيريبين نيدرلينڊبر" + - "ازيلبهاماسڀوٽانبووٽ ٻيٽبوٽسوانابیلارسبيليزڪئناڊاڪوڪوس ٻيٽڪانگو -ڪنش" + - "اساوچ آفريقي جمهوريهڪانگو - برازاویلسئيٽرزلينڊآئيوري ڪناروڪوڪ ٻيٽچل" + - "يڪيمرونچينڪولمبياڪلپرٽن ٻيٽڪوسٽا رڪاڪيوباڪيپ ورديڪيوراسائوڪرسمس ٻيٽ" + - "سائپرسچيڪياجرمنيڊئيگو گارسياڊجبيوتيڊينمارڪڊومينيڪاڊومينيڪن جمهوريها" + - "لجيرياسیوٽا ۽ میلیلاايڪواڊورايسٽونيامصراولهه صحاراايريٽيريااسپينايٿ" + - "وپيايورپين يونينيورو زونفن لينڊفجيفاڪ لينڊ ٻيٽمائڪرونيشيافارو ٻيٽفر" + - "انسگبونبرطانيهگرينڊاجارجيافرانسيسي گياناگورنسيگهاناجبرالٽرگرين لينڊ" + - "گيمبياگنيگواڊیلوپايڪوٽوريل گائينايونانڏکڻ جارجيا ۽ ڏکڻ سينڊوچ ٻيٽگو" + - "ئٽي مالاگوامگني بسائوگياناهانگ ڪانگهرڊ ۽ مڪڊونلڊ ٻيٽهنڊورسڪروئيشياه" + - "يٽيچيڪ جهموريهڪينري ٻيٽانڊونيشياآئرلينڊاسرائيلانسانن جو ٻيٽانڊيابرط" + - "انوي هندي سمنڊ خطوعراقايرانآئس لينڊاٽليجرسيجميڪااردنجاپانڪينياڪرغست" + - "انڪمبوڊياڪرباتيڪوموروسسينٽ ڪٽس و نيوساتر ڪورياڏکڻ ڪورياڪويتڪي مين ٻ" + - "يٽقازقستانلائوسلبنانسينٽ لوسيالچي ٽينسٽينسري لنڪالائبیریاليسوٿولٿون" + - "يالیگزمبرگلاتويالبياموروڪوموناڪومالدووامونٽي نيگروسينٽ مارٽنمداگيسڪ" + - "رمارشل ڀيٽميسي ڊونياماليميانمار (برما)منگوليامڪائواتر مرينا ٻيٽمارت" + - "ينڪموريتانيامونٽسراٽمالٽاموريشسمالديپمالاويميڪسيڪوملائيشياموزمبیقني" + - "ميبيانیو ڪالیڊونیانائيجرنورفوڪ ٻيٽنائيجيريانڪراگوانيدرلينڊناروينيپا" + - "لنائورونووينيو زيلينڊعمانپناماپيروفرانسيسي پولينيشياپاپوا نیو گنيفل" + - "پائنپاڪستانپولينڊسینٽ پیئر و میڪوئیلونپٽڪئرن ٻيٽپيوئرٽو ريڪوفلسطینی" + - "پرتگالپلائوپيراگوءِقطربيروني سامونڊيري يونينرومانياسربياروسروانڊاسع" + - "ودی عربسولومون ٻيٽَشي شلزسوڊانسوئيڊنسينگاپورسينٽ ھيليناسلوینیاسوالب" + - "ارڊ ۽ جان ماینسلوواڪياسيرا ليونسین مرینوسينيگالسومالياسورينامڏکڻ سو" + - "ڊانسائو ٽوم ۽ پرنسپیيال سلواڊورسنٽ مارٽنشامسوازيلينڊٽرسٽن دا ڪوهاتر" + - "ڪ ۽ ڪيڪوس ٻيٽچاڊفرانسيسي ڏاکڻي علائقاتوگوٿائيليندتاجڪستانٽوڪلائوتيم" + - "ور ليستيترڪمانستانتيونيسياٽونگاترڪيٽريني ڊيڊ ۽ ٽوباگو ٻيٽتوالوتائیو" + - "انتنزانيايوڪرينيوگنڊاآمريڪي ٻاهريون ٻيٽاقوام متحدهآمريڪا جون گڏيل ر" + - "ياستونيوروگوءِازبڪستانويٽڪين سٽيسینٽ ونسنت ۽ گریناڊینزوينزيلابرطانو" + - "ي ورجن ٻيٽآمريڪي ورجن ٻيٽويتناموينيٽيووالس ۽ فتوناسموئاڪوسووويمنميا" + - "تيڏکڻ آفريقازيمبيازمبابوياڻڄاتل خطودنياآفريڪااتر آمريڪاڏکڻ آمريڪاسا" + - "مونڊياولهه آفريقاوچ آمريڪااوڀر آفريڪااترين آفريڪاوچ آفريڪاڏاکڻي آمر" + - "يڪااترين آمريڪاڪيريبيناوڀر ايشياڏکڻ ايشياڏکڻ اوڀر ايشياڏکڻ يورپآسٽر" + - "یلیشیامیلانیشیامائکرونیشیائيپولینیشیاايشياوچ ايشيااولهه ايشيايورپاو" + - "ڀر يورپاترين يورپاولهندي يورپلاطيني آمريڪا", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x001b, 0x0039, 0x004b, 0x0069, 0x0077, 0x0085, - 0x0093, 0x009f, 0x00b3, 0x00c3, 0x00da, 0x00e6, 0x00f6, 0x0100, - 0x010f, 0x0123, 0x0149, 0x0157, 0x0167, 0x0173, 0x0188, 0x0196, - 0x01a0, 0x01ac, 0x01b4, 0x01cb, 0x01d7, 0x01e5, 0x01f3, 0x0212, - 0x021e, 0x022a, 0x0234, 0x0243, 0x0253, 0x025f, 0x0269, 0x0275, - 0x0286, 0x029e, 0x02be, 0x02db, 0x02ef, 0x0306, 0x0313, 0x0319, - 0x0325, 0x032b, 0x0339, 0x034c, 0x035d, 0x0367, 0x0376, 0x0388, - 0x0399, 0x03a5, 0x03af, 0x03b9, 0x03d0, 0x03de, 0x03ec, 0x03fc, - // Entry 40 - 7F - 0x041b, 0x0429, 0x0443, 0x0453, 0x0463, 0x0469, 0x047e, 0x0490, - 0x049a, 0x04a8, 0x04bf, 0x04ce, 0x04db, 0x04e1, 0x04f7, 0x050d, - 0x051c, 0x0526, 0x052e, 0x053c, 0x0548, 0x0554, 0x056f, 0x057b, - 0x0585, 0x0593, 0x05a4, 0x05b0, 0x05b6, 0x05c6, 0x05e5, 0x05ef, - 0x0620, 0x0633, 0x063b, 0x064c, 0x0656, 0x0667, 0x0686, 0x0692, - 0x06a2, 0x06aa, 0x06bf, 0x06d0, 0x06e2, 0x06f0, 0x06fe, 0x0716, - 0x0720, 0x0747, 0x074f, 0x0759, 0x0768, 0x0770, 0x0778, 0x0782, - 0x078a, 0x0794, 0x079e, 0x07ac, 0x07ba, 0x07c6, 0x07d4, 0x07ef, - // Entry 80 - BF - 0x0800, 0x0811, 0x0819, 0x082b, 0x083b, 0x0845, 0x084f, 0x0862, - 0x0877, 0x0886, 0x0896, 0x08a2, 0x08ae, 0x08be, 0x08ca, 0x08d2, - 0x08de, 0x08ea, 0x08f8, 0x090d, 0x0920, 0x0930, 0x0941, 0x0954, - 0x095c, 0x0975, 0x0983, 0x098d, 0x09a5, 0x09b3, 0x09c5, 0x09d5, - 0x09df, 0x09eb, 0x09f7, 0x0a03, 0x0a11, 0x0a21, 0x0a2f, 0x0a3d, - 0x0a56, 0x0a62, 0x0a75, 0x0a87, 0x0a95, 0x0aa5, 0x0aaf, 0x0ab9, - 0x0ac5, 0x0acd, 0x0ae0, 0x0ae8, 0x0af2, 0x0afa, 0x0b1d, 0x0b35, - 0x0b41, 0x0b4f, 0x0b5b, 0x0b82, 0x0b95, 0x0bac, 0x0bba, 0x0bc6, - // Entry C0 - FF - 0x0bd0, 0x0be0, 0x0be6, 0x0c01, 0x0c10, 0x0c1e, 0x0c28, 0x0c2e, - 0x0c3a, 0x0c4b, 0x0c62, 0x0c6d, 0x0c77, 0x0c83, 0x0c93, 0x0ca8, - 0x0cb6, 0x0cd9, 0x0ce9, 0x0cfa, 0x0d0b, 0x0d19, 0x0d27, 0x0d35, - 0x0d46, 0x0d67, 0x0d7a, 0x0d8b, 0x0d91, 0x0da3, 0x0dbb, 0x0dd6, - 0x0ddc, 0x0e04, 0x0e0c, 0x0e1c, 0x0e2c, 0x0e3a, 0x0e4f, 0x0e63, - 0x0e73, 0x0e7d, 0x0e85, 0x0ead, 0x0eb7, 0x0ec5, 0x0ed3, 0x0edf, - 0x0eeb, 0x0f0d, 0x0f22, 0x0f4d, 0x0f5d, 0x0f6d, 0x0f80, 0x0fa9, - 0x0fb7, 0x0fd5, 0x0ff1, 0x0ffd, 0x100b, 0x1021, 0x102b, 0x1037, - // Entry 100 - 13F - 0x103d, 0x1047, 0x105a, 0x1066, 0x1074, 0x1087, 0x108f, 0x109b, - 0x10ae, 0x10c1, 0x10cf, 0x10e6, 0x10f7, 0x110c, 0x1123, 0x1134, - 0x114b, 0x114b, 0x1162, 0x1170, 0x1183, 0x1194, 0x11ae, 0x11bd, - 0x11d1, 0x11e3, 0x11fd, 0x120f, 0x1219, 0x1228, 0x123d, 0x1245, - 0x1256, 0x1269, 0x1280, 0x1280, 0x1299, - }, - }, - { // se - "AscensionAndorraOvttastuvvan ArábaemiráhtatAfghanistanAntigua ja Barbuda" + - "AnguillaAlbániaArmeniaAngolaAntárktisArgentinaAmerihká SamoaNuortari" + - "ikaAustráliaArubaÅlándaAserbaižanBosnia-HercegovinaBarbadosBanglades" + - "hBelgiaBurkina FasoBulgáriaBahrainBurundiBeninSaint BarthélemyBermud" + - "aBruneiBoliviaBrasilBahamasBhutanBouvet-sullotBotswanaVilges-RuoššaB" + - "elizeKanádaCocos-sullotKongo-KinshasaGaska-Afrihká dásseváldiKongo-B" + - "razzavilleŠveicaElfenbenaridduCook-sullotČiileKamerunKiinnáKolombiaC" + - "lipperton-sullotCosta RicaKubaKap VerdeCuraçaoJuovllat-sullotKyprosČ" + - "eahkkaDuiskaDiego GarciaDjiboutiDánmárkuDominicaDominikána dásseváld" + - "iAlgeriaCeuta ja MelillaEcuadorEstlándaEgyptaOarje-SaháraEritreaSpán" + - "iaEtiopiaEurohpa UniovdnaSuopmaFijisullotFalklandsullotMikronesiaFea" + - "rsullotFrankriikaGabonStuorra-BritánniaGrenadaGeorgiaFrankriikka Gua" + - "yanaGuernseyGhanaGibraltarKalaallit NunaatGámbiaGuineaGuadeloupeEkva" + - "toriála GuineaGreikaLulli Georgia ja Lulli Sandwich-sullotGuatemalaG" + - "uamGuinea-BissauGuyanaHongkongHeard- ja McDonald-sullotHondurasKroát" + - "iaHaitiUngárKanáriasullotIndonesiaIrlándaIsraelMann-sullotIndiaIrakI" + - "ranIslándaItáliaJerseyJamaicaJordániaJapánaKeniaKirgisistanKambodžaK" + - "iribatiKomorosSaint Kitts ja NevisDavvi-KoreaMátta-KoreaKuwaitCayman" + - "-sullotKasakstanLaosLibanonSaint LuciaLiechtensteinSri LankaLiberiaL" + - "esothoLietuvaLuxembourgLátviaLibyaMarokkoMonacoMoldáviaMontenegroFra" + - "nkriikka Saint MartinMadagaskarMarshallsullotMakedoniaMaliBurmaMongo" + - "liaMakáoDavvi-MariánatMartiniqueMauretániaMontserratMáltaMauritiusMa" + - "lediivvatMalawiMeksikoMalesiaMosambikNamibiaOđđa-KaledoniaNigerNorfo" + - "lksullotNigeriaNicaraguaVuolleeatnamatNorgaNepalNauruNiueOđđa-Selánd" + - "aOmanPanamaPeruFrankriikka PolynesiaPapua-Ođđa-GuineaFilippiinnatPak" + - "istanPolenSaint Pierre ja MiquelonPitcairnPuerto RicoPalestinaPortug" + - "álaPalauParaguayQatarRéunionRomániaSerbiaRuoššaRwandaSaudi-ArábiaSa" + - "lomon-sullotSeychellsullotDavvisudanRuoŧŧaSingaporeSaint HelenaSlove" + - "niaSvalbárda ja Jan MayenSlovákiaSierra LeoneSan MarinoSenegalSomáli" + - "aSurinamMáttasudanSão Tomé ja PríncipeEl SalvadorVuolleeatnamat Sain" + - "t MartinSyriaSvazieanaTristan da CunhaTurks ja Caicos-sullotTčadTogo" + - "ThaieanaTažikistanTokelauNuorta-TimorTurkmenistanTunisiaTongaDurkaTr" + - "inidad ja TobagoTuvaluTaiwanTanzániaUkrainaUgandaAmerihká ovttastuvv" + - "an stáhtatUruguayUsbekistanVatikánaSaint Vincent ja GrenadineVenezue" + - "laBrittania Virgin-sullotAOS Virgin-sullotVietnamVanuatuWallis ja Fu" + - "tunaSamoaKosovoJemenMayotteMátta-AfrihkáZambiaZimbabwedovdameahttun " + - "guovlumáilbmiAfrihkkádávvi-Amerihkká ja gaska-Amerihkkámátta-Amerihk" + - "káOseaniaoarji-Afrihkkágaska-Amerihkkánuorta-Afrihkkádavvi-Afrihkkág" + - "aska-Afrihkkámátta-AfrihkkáAmerihkkádávvi-AmerihkkáKaribianuorta-Ási" + - "amátta-Ásiamátta-nuorta-Ásiamátta-EurohpáAustrália ja Ođđa-SelándaMe" + - "lanesiaMikronesia guovllusPolynesiaÁsiagaska-Ásiaoarji-ÁsiaEurohpánu" + - "orta-Eurohpádavvi-Eurohpáoarji-Eurohpálulli-Amerihkká", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002d, 0x0038, 0x004a, 0x0052, 0x005a, - 0x0061, 0x0067, 0x0071, 0x007a, 0x0089, 0x0094, 0x009e, 0x00a3, - 0x00ab, 0x00b6, 0x00c8, 0x00d0, 0x00da, 0x00e0, 0x00ec, 0x00f5, - 0x00fc, 0x0103, 0x0108, 0x0119, 0x0120, 0x0126, 0x012d, 0x012d, - 0x0133, 0x013a, 0x0140, 0x014d, 0x0155, 0x0164, 0x016a, 0x0171, - 0x017d, 0x018b, 0x01a6, 0x01b7, 0x01be, 0x01cc, 0x01d7, 0x01dd, - 0x01e4, 0x01eb, 0x01f3, 0x0204, 0x020e, 0x0212, 0x021b, 0x0223, - 0x0232, 0x0238, 0x0240, 0x0246, 0x0252, 0x025a, 0x0264, 0x026c, - // Entry 40 - 7F - 0x0284, 0x028b, 0x029b, 0x02a2, 0x02ab, 0x02b1, 0x02be, 0x02c5, - 0x02cc, 0x02d3, 0x02e3, 0x02e3, 0x02e9, 0x02f3, 0x0301, 0x030b, - 0x0315, 0x031f, 0x0324, 0x0336, 0x033d, 0x0344, 0x0357, 0x035f, - 0x0364, 0x036d, 0x037d, 0x0384, 0x038a, 0x0394, 0x03a7, 0x03ad, - 0x03d3, 0x03dc, 0x03e0, 0x03ed, 0x03f3, 0x03fb, 0x0414, 0x041c, - 0x0424, 0x0429, 0x042f, 0x043d, 0x0446, 0x044e, 0x0454, 0x045f, - 0x0464, 0x0464, 0x0468, 0x046c, 0x0474, 0x047b, 0x0481, 0x0488, - 0x0491, 0x0498, 0x049d, 0x04a8, 0x04b1, 0x04b9, 0x04c0, 0x04d4, - // Entry 80 - BF - 0x04df, 0x04eb, 0x04f1, 0x04fe, 0x0507, 0x050b, 0x0512, 0x051d, - 0x052a, 0x0533, 0x053a, 0x0541, 0x0548, 0x0552, 0x0559, 0x055e, - 0x0565, 0x056b, 0x0574, 0x057e, 0x0596, 0x05a0, 0x05ae, 0x05b7, - 0x05bb, 0x05c0, 0x05c8, 0x05ce, 0x05dd, 0x05e7, 0x05f2, 0x05fc, - 0x0602, 0x060b, 0x0616, 0x061c, 0x0623, 0x062a, 0x0632, 0x0639, - 0x0649, 0x064e, 0x065b, 0x0662, 0x066b, 0x0679, 0x067e, 0x0683, - 0x0688, 0x068c, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06be, 0x06d1, - 0x06dd, 0x06e5, 0x06ea, 0x0702, 0x070a, 0x0715, 0x071e, 0x0728, - // Entry C0 - FF - 0x072d, 0x0735, 0x073a, 0x073a, 0x0742, 0x074a, 0x0750, 0x0758, - 0x075e, 0x076b, 0x0779, 0x0787, 0x0791, 0x0799, 0x07a2, 0x07ae, - 0x07b6, 0x07cd, 0x07d6, 0x07e2, 0x07ec, 0x07f3, 0x07fb, 0x0802, - 0x080d, 0x0824, 0x082f, 0x084a, 0x084f, 0x0858, 0x0868, 0x087e, - 0x0883, 0x0883, 0x0887, 0x088f, 0x089a, 0x08a1, 0x08ad, 0x08b9, - 0x08c0, 0x08c5, 0x08ca, 0x08dc, 0x08e2, 0x08e8, 0x08f1, 0x08f8, - 0x08fe, 0x08fe, 0x08fe, 0x091d, 0x0924, 0x092e, 0x0937, 0x0951, - 0x095a, 0x0971, 0x0982, 0x0989, 0x0990, 0x09a0, 0x09a5, 0x09ab, - // Entry 100 - 13F - 0x09b0, 0x09b7, 0x09c6, 0x09cc, 0x09d4, 0x09e8, 0x09f0, 0x09f9, - 0x0a1e, 0x0a2f, 0x0a36, 0x0a45, 0x0a55, 0x0a65, 0x0a74, 0x0a83, - 0x0a93, 0x0a9d, 0x0aae, 0x0ab5, 0x0ac1, 0x0acd, 0x0ae0, 0x0aef, - 0x0b0c, 0x0b15, 0x0b28, 0x0b31, 0x0b36, 0x0b41, 0x0b4c, 0x0b54, - 0x0b63, 0x0b71, 0x0b7f, 0x0b7f, 0x0b8f, - }, - }, - { // se-FI - "Bosnia ja HercegovinaEuroavádatKambožaSudanChadOvttastuvvan NašuvnnatMái" + - "lbmiAfrihkaDavvi-Amerihká ja Gaska-AmerihkáLulli-AmerihkáOarje-Afrih" + - "káGaska-AmerihkáNuorta-AfrihkáDavvi-AfrihkáGaska-AfrihkáLulli-Afrihk" + - "áAmerihkaDavvi-AmerihkáMikronesia guovluLatiinnalaš Amerihká", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - // Entry 40 - 7F - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0028, 0x0028, 0x0028, 0x0028, - // Entry 80 - BF - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - // Entry C0 - FF - 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0028, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x0031, 0x0031, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, - // Entry 100 - 13F - 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0050, 0x0057, - 0x0079, 0x0088, 0x0088, 0x0096, 0x00a5, 0x00b4, 0x00c2, 0x00d0, - 0x00de, 0x00e6, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, 0x00f5, - 0x00f5, 0x00f5, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x0106, 0x0106, 0x011c, - }, - }, - { // seh - "AndorraEmirados Árabes UnidosAfeganistãoAntígua e BarbudaAnguillaAlbânia" + - "ArmêniaAngolaArgentinaSamoa AmericanaÁustriaAustráliaArubaAzerbaijão" + - "Bósnia-HerzegovinaBarbadosBangladeshBélgicaBurquina FasoBulgáriaBahr" + - "ainBurundiBeninBermudasBruneiBolíviaBrasilBahamasButãoBotsuanaBelaru" + - "sBelizeCanadáCongo-KinshasaRepública Centro-AfricanaCongoSuíçaCosta " + - "do MarfimIlhas CookChileRepública dos CamarõesChinaColômbiaCosta Ric" + - "aCubaCabo VerdeChipreRepública TchecaAlemanhaDjibutiDinamarcaDominic" + - "aRepública DominicanaArgéliaEquadorEstôniaEgitoEritréiaEspanhaEtiópi" + - "aFinlândiaFijiIlhas MalvinasMicronésiaFrançaGabãoReino UnidoGranadaG" + - "eórgiaGuiana FrancesaGanaGibraltarGroênlandiaGâmbiaGuinéGuadalupeGui" + - "né EquatorialGréciaGuatemalaGuamGuiné BissauGuianaHondurasCroáciaHai" + - "tiHungriaIndonésiaIrlandaIsraelÍndiaTerritório Britânico do Oceano Í" + - "ndicoIraqueIrãIslândiaItáliaJamaicaJordâniaJapãoQuêniaQuirguistãoCam" + - "bojaQuiribatiComoresSão Cristovão e NevisCoréia do NorteCoréia do Su" + - "lKuwaitIlhas CaimanCasaquistãoLaosLíbanoSanta LúciaLiechtensteinSri " + - "LankaLibériaLesotoLituâniaLuxemburgoLetôniaLíbiaMarrocosMônacoMoldáv" + - "iaMadagascarIlhas MarshallMacedôniaMaliMianmarMongóliaIlhas Marianas" + - " do NorteMartinicaMauritâniaMontserratMaltaMaurícioMaldivasMalawiMéx" + - "icoMalásiaMoçambiqueNamíbiaNova CaledôniaNígerIlhas NorfolkNigériaNi" + - "caráguaHolandaNoruegaNepalNauruNiueNova ZelândiaOmãPanamáPeruPolinés" + - "ia FrancesaPapua-Nova GuinéFilipinasPaquistãoPolôniaSaint Pierre e M" + - "iquelonPitcairnPorto RicoTerritório da PalestinaPortugalPalauParagua" + - "iCatarReuniãoRomêniaRússiaRuandaArábia SauditaIlhas SalomãoSeychelle" + - "sSudãoSuéciaCingapuraSanta HelenaEslovêniaEslováquiaSerra LeoaSan Ma" + - "rinoSenegalSomáliaSurinameSão Tomé e PríncipeEl SalvadorSíriaSuazilâ" + - "ndiaIlhas Turks e CaicosChadeTogoTailândiaTadjiquistãoTokelauTimor L" + - "esteTurcomenistãoTunísiaTongaTurquiaTrinidad e TobagoTuvaluTaiwanUcr" + - "âniaUgandaEstados UnidosUruguaiUzbequistãoVaticanoSão Vicente e Gra" + - "nadinasVenezuelaIlhas Virgens BritânicasIlhas Virgens dos EUAVietnãV" + - "anuatuWallis e FutunaSamoaIêmenMayotteÁfrica do SulZâmbiaZimbábue", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x001e, 0x002a, 0x003c, 0x0044, 0x004c, - 0x0054, 0x005a, 0x005a, 0x0063, 0x0072, 0x007a, 0x0084, 0x0089, - 0x0089, 0x0094, 0x00a7, 0x00af, 0x00b9, 0x00c1, 0x00ce, 0x00d7, - 0x00de, 0x00e5, 0x00ea, 0x00ea, 0x00f2, 0x00f8, 0x0100, 0x0100, - 0x0106, 0x010d, 0x0113, 0x0113, 0x011b, 0x0122, 0x0128, 0x012f, - 0x012f, 0x013d, 0x0157, 0x015c, 0x0163, 0x0172, 0x017c, 0x0181, - 0x0199, 0x019e, 0x01a7, 0x01a7, 0x01b1, 0x01b5, 0x01bf, 0x01bf, - 0x01bf, 0x01c5, 0x01d6, 0x01de, 0x01de, 0x01e5, 0x01ee, 0x01f6, - // Entry 40 - 7F - 0x020b, 0x0213, 0x0213, 0x021a, 0x0222, 0x0227, 0x0227, 0x0230, - 0x0237, 0x023f, 0x023f, 0x023f, 0x0249, 0x024d, 0x025b, 0x0266, - 0x0266, 0x026d, 0x0273, 0x027e, 0x0285, 0x028d, 0x029c, 0x029c, - 0x02a0, 0x02a9, 0x02b5, 0x02bc, 0x02c2, 0x02cb, 0x02dc, 0x02e3, - 0x02e3, 0x02ec, 0x02f0, 0x02fd, 0x0303, 0x0303, 0x0303, 0x030b, - 0x0313, 0x0318, 0x031f, 0x031f, 0x0329, 0x0330, 0x0336, 0x0336, - 0x033c, 0x0364, 0x036a, 0x036e, 0x0377, 0x037e, 0x037e, 0x0385, - 0x038e, 0x0394, 0x039b, 0x03a7, 0x03ae, 0x03b7, 0x03be, 0x03d5, - // Entry 80 - BF - 0x03e5, 0x03f3, 0x03f9, 0x0405, 0x0411, 0x0415, 0x041c, 0x0428, - 0x0435, 0x043e, 0x0446, 0x044c, 0x0455, 0x045f, 0x0467, 0x046d, - 0x0475, 0x047c, 0x0485, 0x0485, 0x0485, 0x048f, 0x049d, 0x04a7, - 0x04ab, 0x04b2, 0x04bb, 0x04bb, 0x04d2, 0x04db, 0x04e6, 0x04f0, - 0x04f5, 0x04fe, 0x0506, 0x050c, 0x0513, 0x051b, 0x0526, 0x052e, - 0x053d, 0x0543, 0x0550, 0x0558, 0x0562, 0x0569, 0x0570, 0x0575, - 0x057a, 0x057e, 0x058c, 0x0590, 0x0597, 0x059b, 0x05ae, 0x05bf, - 0x05c8, 0x05d2, 0x05da, 0x05f1, 0x05f9, 0x0603, 0x061b, 0x0623, - // Entry C0 - FF - 0x0628, 0x0630, 0x0635, 0x0635, 0x063d, 0x0645, 0x0645, 0x064c, - 0x0652, 0x0661, 0x066f, 0x0679, 0x067f, 0x0686, 0x068f, 0x069b, - 0x06a5, 0x06a5, 0x06b0, 0x06ba, 0x06c4, 0x06cb, 0x06d3, 0x06db, - 0x06db, 0x06f1, 0x06fc, 0x06fc, 0x0702, 0x070e, 0x070e, 0x0722, - 0x0727, 0x0727, 0x072b, 0x0735, 0x0742, 0x0749, 0x0754, 0x0762, - 0x076a, 0x076f, 0x0776, 0x0787, 0x078d, 0x0793, 0x0793, 0x079b, - 0x07a1, 0x07a1, 0x07a1, 0x07af, 0x07b6, 0x07c2, 0x07ca, 0x07e3, - 0x07ec, 0x0805, 0x081a, 0x0821, 0x0828, 0x0837, 0x083c, 0x083c, - // Entry 100 - 13F - 0x0842, 0x0849, 0x0857, 0x085e, 0x0867, - }, - }, - { // ses - "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" + - "lbaaniArmeeniAngoolaArgentineAmeriki SamoaOtrišiOstraaliAruubaAzerba" + - "ayijaŋBosni nda HerzegovineBarbaadosBangladešiBelgiikiBurkina fasoBu" + - "lgaariBahareenBurundiBeniŋBermudaBruuneeBooliviBreezilBahamasBuutaŋB" + - "otswaanaBilorišiBeliiziKanaadaKongoo demookaratiki labooCentraafriki" + - " koyraKongooSwisuKudwarKuuk gungeyŠiiliKameruunŠiinKolombiKosta rika" + - "KuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuutiDanemarkDoominikiDoom" + - "iniki labooAlžeeriEkwateerEstooniMisraEritreeEspaaɲeEcioopiFinlanduF" + - "ijiKalkan gungeyMikroneziFaransiGaabonAlbaasalaama MargantaGrenaadaG" + - "orgiFaransi GuyaanGaanaGibraltarGrinlandGambiGineGwadeluupGinee Ekwa" + - "torialGreeceGwatemaalaGuamGine-BissoGuyaaneHondurasKrwaasiHaitiHunga" + - "ariIndoneeziIrlanduIsrayelIndu labooBritiši Indu teekoo laamaIraakIr" + - "aanAycelandItaaliJamaayikUrdunJaapoŋKeeniyaKyrgyzstanKamboogiKiribaa" + - "tiKomoorSeŋ Kitts nda NevisKooree, GurmaKooree, HawsaKuweetKayman gu" + - "ngeyKaazakstanLaawosLubnaanSeŋ LussiaLiechtensteinSrilankaLiberiaLee" + - "sotoLituaaniLuxembourgLetooniLiibiMaarokMonakoMoldoviMadagascarMarša" + - "l gungeyMaacedooniMaaliMaynamarMongooliMariana Gurma GungeyMartiniik" + - "iMooritaaniMontserratMaltaMooris gungeyMaldiivuMalaawiMexikiMaleeziM" + - "ozambikNaamibiKaaledooni TaagaaNižerNorfolk GungooNaajiriiaNikaragwa" + - "HollanduNorveejNeepalNauruNiueZeelandu TaagaOmaanPanamaPeeruFaransi " + - "PolineeziPapua Ginee TaagaFilipinePaakistanPoloɲeSeŋ Piyer nda Mikel" + - "onPitikarinPorto RikoPalestine Dangay nda GaazaPortugaalPaluParaguwe" + - "yKataarReenioŋRumaaniIriši labooRwandaSaudiyaSolomon GungeySeešelSuu" + - "daŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSeera LeonSan MarinoSeneg" + - "alSomaaliSurinaamSao Tome nda PrinsipeSalvador labooSuuriaSwazilandT" + - "urk nda Kayikos GungeyCaaduTogoTaayilandTaažikistanTokelauTimoor haw" + - "saTurkmenistaŋTuniziTongaTurkiTrinidad nda TobaagoTuvaluTaayiwanTanz" + - "aaniUkreenUgandaAmeriki Laabu MarganteyUruguweyUzbeekistanVaatikan L" + - "aamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik " + - "Virgin GungeyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa " + - "Afriki LabooZambiZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, - 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, - 0x0087, 0x0094, 0x00a9, 0x00b2, 0x00bd, 0x00c5, 0x00d1, 0x00d9, - 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f5, 0x00fc, 0x0103, 0x0103, - 0x010a, 0x0111, 0x0118, 0x0118, 0x0121, 0x012a, 0x0131, 0x0138, - 0x0138, 0x0152, 0x0164, 0x016a, 0x016f, 0x0175, 0x0180, 0x0186, - 0x018e, 0x0193, 0x019a, 0x019a, 0x01a4, 0x01a9, 0x01b7, 0x01b7, - 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e6, - // Entry 40 - 7F - 0x01f5, 0x01fd, 0x01fd, 0x0205, 0x020c, 0x0211, 0x0211, 0x0218, - 0x0220, 0x0227, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, - 0x0249, 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, - 0x028b, 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, - 0x02c4, 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, - 0x02f2, 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, - 0x0320, 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, - 0x035f, 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, - // Entry 80 - BF - 0x03af, 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, - 0x03fe, 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, - 0x0438, 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, - 0x046c, 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, - 0x04b3, 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, - 0x04fc, 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, - 0x053c, 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, - 0x0588, 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, - // Entry C0 - FF - 0x05e8, 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, - 0x0618, 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, - 0x065c, 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, - 0x068e, 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, - 0x06dc, 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, - 0x071b, 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, - 0x075b, 0x075b, 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, - 0x07b8, 0x07ce, 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, - // Entry 100 - 13F - 0x080d, 0x0814, 0x0826, 0x082b, 0x0833, - }, - }, - { // sg - "AndôroArâbo Emirâti ÔkoFaganïta, AfganïstäanAntîgua na BarbûdaAngûîlaAlb" + - "anïiArmenïiAngoläaArzantînaSamöa tî AmerîkaOtrîsiOstralïi, SotralïiA" + - "rûbaZerebaidyäan, Azerbaidyäan,Bosnïi na HerzegovînniBarabâdaBenglad" + - "êshiBêleze, BelezîkiBurkina FasoBulugarïiBahrâinaBurundïiBenëenBere" + - "mûdaBrunêiBolivïiBrezîliBahâmasaButäanBotswanaBelarüsiBelîziKanadäaK" + - "ödörösêse tî Ngunuhalëzo tî kongöKödörösêse tî BêafrîkaKongöSûîsiKô" + - "divüäraâzûâ KûkuShilïiKamerûneShînaKolombïiKôsta RîkaKubäaAzûâ tî Kâ" + - "po-VêreSîpriKödörösêse tî TyêkiZâmaniDibutùiiDanemêrkeDömïnîkaKödörö" + - "sêse tî DominîkaAlzerïiEkuatëreEstonïiKâmitâEritrëeEspânyeEtiopïiFël" + - "ândeFidyïiÂzûâ tî MälüîniMikronezïiFarânziGaböonKödörögbïä--ÔkoGren" + - "âdaZorzïiGüyâni tî farânziGanäaZibraltära, ZibaratäraGorolândeGambï" + - "iGinëeGuadelûpuGinëe tî EkuatëreGerêsiGuatêmäläGuâmGninëe-BisauGayân" + - "aHonduräsiKroasïiHaitïiHongirùiiÊnndonezïiIrlândeIsraëliÊnndeSêse tî" + - " Anglëe na Ngûyämä tî ÊnndeIrâkiIräanIslândeItalùiiZamaîkaZordanïiZa" + - "pöonKenyäaKirigizitùaanKämbôziKiribatiKömôroSên-Krïstôfo-na-NevîsiKo" + - "rëe tî BangaKorëe tî MbongoKöwêtiÂzûâ Ngundë, KaimäniKazakisitäanLùa" + - "ôsiLibùaanSênt-LisïiLiechtenstein,Sirî-LankaLiberïaLesôthoLituanïiL" + - "ugzambûruLetonùiiLibïiMarôkoMonaköoMoldavùiiMadagaskäraÂzûâ MärshâlM" + - "aseduäniMalïiMyämâraMongolïiÂzûâ Märïâni tî BangaMärtïnîkiMoritanïiM" + - "onserâteMâltaMörîsiMaldîvaMalawïiMekisîkiMalezïiMözämbîkaNamibùiiFin" + - "î KaledonïiNizëreZûâ NôrfôlkoNizerïaNikaraguaHoländeNörvêziNëpâliNa" + - "uruNiueFinî ZelândeOmâniPanamaPerüuPolinezïi tî farânziPapû Finî Gin" + - "ëe, PapuazïiFilipîniPakistäanPölôniSên-Pyêre na MikelöonPitikêrniPo" + - "rto RîkoSêse tî PalestîniPörtugäle, Ködörö PûraPalauParaguëeKatäraRe" + - "inïonRumanïiRusïiRuandäaSaûdi ArabïiZûâ SalomöonSëyshêleSudäanSuêdeS" + - "ïngäpûruSênt-HelênaSolovenïiSolovakïiSierä-LeôneSên-MarëenSenegäleS" + - "omalïiSurinämSâô Tömê na PrinsîpeSalvadöroSirïiSwäzïlândeÂzûâ Turku " + - "na KaîkiTyâdeTogöTailândeTaazikiistäanTokelauTimôro tî TöTurkumenist" + - "äanTunizïiTongaTurukïiTrinitùee na TobagöTüvalüTâiwâniTanzanïiUkrên" + - "iUgandäaÂLeaa-Ôko tî AmerikaUruguëeUzbekistäanLetëe tî VatikäanSên-V" + - "ensäan na âGrenadîniVenezueläaÂzôâ Viîrîggo tî AnglëeÂzûâ Virîgo tî " + - "AmerîkaVietnämVanuatüWalîsi na FutunaSamoäaYëmêniMäyôteMbongo-Afrîka" + - "ZambïiZimbäbwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x001b, 0x0033, 0x0047, 0x0050, 0x0058, - 0x0060, 0x0068, 0x0068, 0x0072, 0x0085, 0x008c, 0x00a0, 0x00a6, - 0x00a6, 0x00c3, 0x00db, 0x00e4, 0x00f0, 0x0102, 0x010e, 0x0118, - 0x0121, 0x012a, 0x0131, 0x0131, 0x013a, 0x0141, 0x0149, 0x0149, - 0x0151, 0x015a, 0x0161, 0x0161, 0x0169, 0x0172, 0x0179, 0x0181, - 0x0181, 0x01ab, 0x01c8, 0x01ce, 0x01d5, 0x01e1, 0x01ee, 0x01f5, - 0x01fe, 0x0204, 0x020d, 0x020d, 0x0219, 0x021f, 0x0235, 0x0235, - 0x0235, 0x023b, 0x0254, 0x025b, 0x025b, 0x0264, 0x026e, 0x0279, - // Entry 40 - 7F - 0x0295, 0x029d, 0x029d, 0x02a6, 0x02ae, 0x02b6, 0x02b6, 0x02be, - 0x02c6, 0x02ce, 0x02ce, 0x02ce, 0x02d7, 0x02de, 0x02f4, 0x02ff, - 0x02ff, 0x0307, 0x030e, 0x0323, 0x032b, 0x0332, 0x0347, 0x0347, - 0x034d, 0x0365, 0x036f, 0x0376, 0x037c, 0x0386, 0x039a, 0x03a1, - 0x03a1, 0x03ad, 0x03b2, 0x03bf, 0x03c6, 0x03c6, 0x03c6, 0x03d0, - 0x03d8, 0x03df, 0x03e9, 0x03e9, 0x03f5, 0x03fd, 0x0405, 0x0405, - 0x040b, 0x0435, 0x043b, 0x0441, 0x0449, 0x0451, 0x0451, 0x0459, - 0x0462, 0x0469, 0x0470, 0x047e, 0x0487, 0x048f, 0x0497, 0x04b1, - // Entry 80 - BF - 0x04c1, 0x04d2, 0x04da, 0x04f3, 0x0500, 0x0508, 0x0510, 0x051c, - 0x052a, 0x0535, 0x053d, 0x0545, 0x054e, 0x0559, 0x0562, 0x0568, - 0x056f, 0x0577, 0x0581, 0x0581, 0x0581, 0x058d, 0x059e, 0x05a8, - 0x05ae, 0x05b7, 0x05c0, 0x05c0, 0x05dc, 0x05e8, 0x05f2, 0x05fc, - 0x0602, 0x060a, 0x0612, 0x061a, 0x0623, 0x062b, 0x0637, 0x0640, - 0x0650, 0x0657, 0x0667, 0x066f, 0x0678, 0x0680, 0x0689, 0x0691, - 0x0696, 0x069a, 0x06a8, 0x06ae, 0x06b4, 0x06ba, 0x06d1, 0x06ee, - 0x06f7, 0x0701, 0x0709, 0x0721, 0x072b, 0x0736, 0x074a, 0x0766, - // Entry C0 - FF - 0x076b, 0x0774, 0x077b, 0x077b, 0x0783, 0x078b, 0x078b, 0x0791, - 0x0799, 0x07a7, 0x07b6, 0x07c0, 0x07c7, 0x07cd, 0x07d9, 0x07e6, - 0x07f0, 0x07f0, 0x07fa, 0x0807, 0x0813, 0x081c, 0x0824, 0x082c, - 0x082c, 0x0845, 0x084f, 0x084f, 0x0855, 0x0862, 0x0862, 0x0879, - 0x087f, 0x087f, 0x0884, 0x088d, 0x089b, 0x08a2, 0x08b1, 0x08c0, - 0x08c8, 0x08cd, 0x08d5, 0x08ea, 0x08f2, 0x08fb, 0x0904, 0x090b, - 0x0913, 0x0913, 0x0913, 0x092a, 0x0932, 0x093e, 0x0952, 0x096f, - 0x097a, 0x0998, 0x09b4, 0x09bc, 0x09c4, 0x09d5, 0x09dc, 0x09dc, - // Entry 100 - 13F - 0x09e4, 0x09ec, 0x09fa, 0x0a01, 0x0a0a, - }, - }, - { // shi - "ⴰⵏⴷⵓⵔⴰⵍⵉⵎⴰⵔⴰⵜⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰⴰⵏⴳⵉⵍⴰⴰⵍⴱⴰⵏⵢⴰⴰⵔⵎⵉⵏⵢⴰⴰⵏⴳⵓⵍⴰⴰⵔⵊⴰⵏⵜⵉⵏ" + - "ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜⵏⵏⵎⵙⴰⵓⵙⵜⵔⴰⵍⵢⴰⴰⵔⵓⴱⴰⴰⴷⵔⴰⴱⵉⵊⴰⵏⴱⵓⵙⵏⴰ ⴷ ⵀⵉⵔⵙⵉⴽⴱⴰⵔⴱⴰⴷⴱⴰ" + - "ⵏⴳⵍⴰⴷⵉⵛⴱⵍⵊⵉⴽⴰⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓⴱⵍⵖⴰⵔⵢⴰⴱⵃⵔⴰⵢⵏⴱⵓⵔⵓⵏⴷⵉⴱⵉⵏⵉⵏⴱⵔⵎⵓⴷⴰⴱⵔⵓⵏⵉⴱⵓⵍⵉⴼ" + - "ⵢⴰⴱⵔⴰⵣⵉⵍⴱⴰⵀⴰⵎⴰⵙⴱⵀⵓⵜⴰⵏⴱⵓⵜⵙⵡⴰⵏⴰⴱⵉⵍⴰⵔⵓⵙⵢⴰⴱⵉⵍⵉⵣⴽⴰⵏⴰⴷⴰⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇ" + - "ⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰⴽⵓⵏⴳⵓⵙⵡⵉⵙⵔⴰⴽⵓⵜ ⴷⵉⴼⵡⴰⵔⵜⵉⴳ" + - "ⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽⵛⵛⵉⵍⵉⴽⴰⵎⵉⵔⵓⵏⵛⵛⵉⵏⵡⴰⴽⵓⵍⵓⵎⴱⵢⴰⴽⵓⵙⵜⴰ ⵔⵉⴽⴰⴽⵓⴱⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱ" + - "ⵉⵔⴷⵉⵇⵓⴱⵔⵓⵙⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜⴰⵍⵎⴰⵏⵢⴰⴷⵊⵉⴱⵓⵜⵉⴷⴰⵏⵎⴰⵔⴽⴷⵓⵎⵉⵏⵉⴽⵜⴰⴳⴷⵓⴷⴰⵏⵜ " + - "ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜⴷⵣⴰⵢⵔⵉⴽⵡⴰⴷⵓⵔⵉⵙⵜⵓⵏⵢⴰⵎⵉⵚⵕⵉⵔⵉⵜⵉⵔⵢⴰⵙⴱⴰⵏⵢⴰⵉⵜⵢⵓⴱⵢⴰⴼⵉⵍⵍⴰⵏⴷⴰⴼⵉⴷⵊ" + - "ⵉⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰⴼⵔⴰⵏⵙⴰⴳⴰⴱⵓⵏⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏⵖⵔⵏⴰⵟⴰⵊⵓⵔⵊⵢⴰⴳⵡ" + - "ⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵖⴰⵏⴰⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇⴳⵔⵉⵍⴰⵏⴷⴳⴰⵎⴱⵢⴰⵖⵉⵏⵢⴰⴳⵡⴰⴷⴰⵍⵓⴱⵖⵉⵏⵢⴰ ⵏ " + - "ⵉⴽⵡⴰⴷⵓⵔⵍⵢⵓⵏⴰⵏⴳⵡⴰⵜⵉⵎⴰⵍⴰⴳⵡⴰⵎⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡⴳⵡⵉⵢⴰⵏⴰⵀⵓⵏⴷⵓⵔⴰⵙⴽⵔⵡⴰⵜⵢⴰⵀⴰⵢⵜⵉⵀⵏ" + - "ⵖⴰⵔⵢⴰⴰⵏⴷⵓⵏⵉⵙⵢⴰⵉⵔⵍⴰⵏⴷⴰⵉⵙⵔⴰⵢⵉⵍⵍⵀⵉⵏⴷⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉⵍ" + - "ⵄⵉⵔⴰⵇⵉⵔⴰⵏⵉⵙⵍⴰⵏⴷⵉⵟⴰⵍⵢⴰⵊⴰⵎⴰⵢⴽⴰⵍⵓⵔⴷⵓⵏⵍⵢⴰⴱⴰⵏⴽⵉⵏⵢⴰⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰⵏⴽⴰⵎⴱⵓⴷⵢⴰⴽⵉ" + - "ⵔⵉⴱⴰⵜⵉⵇⵓⵎⵓⵔⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵍⴽⵡⵉⵜⵜⵉⴳⵣⵉⵔⵉⵏ" + - " ⵏ ⴽⴰⵢⵎⴰⵏⴽⴰⵣⴰⵅⵙⵜⴰⵏⵍⴰⵡⵙⵍⵓⴱⵏⴰⵏⵙⴰⵏⵜⵍⵓⵙⵉⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏⵙⵔⵉⵍⴰⵏⴽⴰⵍⵉⴱⵉⵔⵢⴰⵍⵉⵚⵓⵟⵓⵍ" + - "ⵉⵜⵡⴰⵏⵢⴰⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳⵍⴰⵜⴼⵢⴰⵍⵉⴱⵢⴰⵍⵎⵖⵔⵉⴱⵎⵓⵏⴰⴽⵓⵎⵓⵍⴷⵓⴼⵢⴰⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔⵜⵉⴳⵣⵉⵔⵉⵏ" + - " ⵏ ⵎⴰⵔⵛⴰⵍⵎⴰⵙⵉⴷⵓⵏⵢⴰⵎⴰⵍⵉⵎⵢⴰⵏⵎⴰⵔⵎⵏⵖⵓⵍⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢⴰⵏ ⵏ ⵉⵥⵥⵍⵎⴹⵎⴰⵔⵜⵉⵏ" + - "ⵉⴽⵎⵓⵕⵉⵟⴰⵏⵢⴰⵎⵓⵏⵙⵉⵔⴰⵜⵎⴰⵍⵟⴰⵎⵓⵔⵉⵙⵎⴰⵍⴷⵉⴼⵎⴰⵍⴰⵡⵉⵎⵉⴽⵙⵉⴽⵎⴰⵍⵉⵣⵢⴰⵎⵓⵣⵏⴱⵉⵇⵏⴰⵎⵉⴱ" + - "ⵢⴰⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⵏⵏⵉⵊⵉⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽⵏⵉⵊⵉⵔⵢⴰⵏⵉⴽⴰⵔⴰⴳⵡⴰⵀⵓⵍⴰⵏⴷ" + - "ⴰⵏⵏⵔⵡⵉⵊⵏⵉⴱⴰⵍⵏⴰⵡⵔⵓⵏⵉⵡⵉⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰⵄⵓⵎⴰⵏⴱⴰⵏⴰⵎⴰⴱⵉⵔⵓⴱⵓⵍⵉⵏⵉⵣⵢⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ" + - "ⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⴼⵉⵍⵉⴱⴱⵉⵏⴱⴰⴽⵉⵙⵜⴰⵏⴱⵓⵍⵓⵏⵢⴰⵙⴰⵏⴱⵢⵉⵔ ⴷ ⵎⵉⴽⵍⵓⵏⴱⵉⵜⴽⴰⵢⵔ" + - "ⵏⴱⵓⵔⵜⵓ ⵔⵉⴽⵓⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰⴱⵕⵟⵇⵉⵣⴱⴰⵍⴰⵡⴱⴰⵔⴰⴳⵡⴰⵢⵇⴰⵜⴰⵔⵔⵉⵢⵓⵏⵢⵓⵏⵔⵓ" + - "ⵎⴰⵏⵢⴰⵔⵓⵙⵢⴰⵔⵡⴰⵏⴷⴰⵙⵙⴰⵄⵓⴷⵉⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏⵙⵙⵉⵛⵉⵍⵙⵙⵓⴷⴰⵏⵙⵙⵡⵉⴷⵙⵏⵖⴰⴼⵓ" + - "ⵔⴰⵙⴰⵏⵜⵉⵍⵉⵏⵙⵍⵓⴼⵉⵏⵢⴰⵙⵍⵓⴼⴰⴽⵢⴰⵙⵙⵉⵔⴰⵍⵢⵓⵏⵙⴰⵏⵎⴰⵔⵉⵏⵓⵙⵙⵉⵏⵉⴳⴰⵍⵚⵚⵓⵎⴰⵍⵙⵓⵔⵉⵏⴰⵎⵙ" + - "ⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱⵙⴰⵍⴼⴰⴷⵓⵔⵙⵓⵔⵢⴰⵙⵡⴰⵣⵉⵍⴰⵏⴷⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽⵜⵛⴰ" + - "ⴷⵟⵓⴳⵓⵟⴰⵢⵍⴰⵏⴷⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏⵟⵓⴽⵍⴰⵡⵜⵉⵎⵓⵔ ⵏ ⵍⵇⴱⵍⵜⵜⵓⵔⴽⵎⴰⵏⵙⵜⴰⵏⵜⵓⵏⵙⵟⵓⵏⴳⴰⵜⵓⵔⴽ" + - "ⵢⴰⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓⵜⵓⴼⴰⵍⵓⵟⴰⵢⵡⴰⵏⵟⴰⵏⵥⴰⵏⵢⴰⵓⴽⵔⴰⵏⵢⴰⵓⵖⴰⵏⴷⴰⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ " + - "ⵏ ⵎⵉⵔⵉⴽⴰⵏⵓⵔⵓⴳⵡⴰⵢⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏⴰⵡⴰⵏⴽ ⵏ ⴼⴰⵜⵉⴽⴰⵏⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏⴼⵉⵏⵣⵡ" + - "ⵉⵍⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏⴼⵉⵜⵏⴰⵎⴼⴰ" + - "ⵏⵡⴰⵟⵓⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰⵙⴰⵎⵡⴰⵢⴰⵎⴰⵏⵎⴰⵢⵓⵟⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵣⴰⵎⴱⵢⴰⵣⵉⵎⴱⴰⴱⵡⵉ", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0012, 0x0027, 0x0045, 0x006e, 0x0080, 0x0095, - 0x00aa, 0x00bc, 0x00bc, 0x00d4, 0x0105, 0x0114, 0x012c, 0x013b, - 0x013b, 0x0156, 0x017c, 0x018e, 0x01a9, 0x01bb, 0x01dd, 0x01f2, - 0x0204, 0x0219, 0x0228, 0x0228, 0x023a, 0x0249, 0x025e, 0x025e, - 0x0270, 0x0285, 0x0297, 0x0297, 0x02af, 0x02ca, 0x02d9, 0x02eb, - 0x02eb, 0x033f, 0x0390, 0x039f, 0x03b1, 0x03cd, 0x03f3, 0x0402, - 0x0417, 0x0429, 0x0441, 0x0441, 0x045d, 0x0469, 0x049e, 0x049e, - 0x049e, 0x04b0, 0x04e4, 0x04f9, 0x04f9, 0x050e, 0x0523, 0x0538, - // Entry 40 - 7F - 0x0572, 0x0581, 0x0581, 0x0596, 0x05ab, 0x05b7, 0x05b7, 0x05cf, - 0x05e1, 0x05f6, 0x05f6, 0x05f6, 0x060e, 0x061d, 0x064c, 0x066a, - 0x066a, 0x067c, 0x068b, 0x06b0, 0x06c2, 0x06d4, 0x0705, 0x0705, - 0x0711, 0x0734, 0x0749, 0x075b, 0x076a, 0x0782, 0x07ab, 0x07bd, - 0x07bd, 0x07d8, 0x07e4, 0x0803, 0x0818, 0x0818, 0x0818, 0x0830, - 0x0845, 0x0854, 0x0869, 0x0869, 0x0884, 0x0899, 0x08ae, 0x08ae, - 0x08bd, 0x0915, 0x0927, 0x0933, 0x0945, 0x0957, 0x0957, 0x096c, - 0x097e, 0x0990, 0x099f, 0x09c0, 0x09d8, 0x09f0, 0x09ff, 0x0a28, - // Entry 80 - BF - 0x0a4e, 0x0a71, 0x0a80, 0x0aaf, 0x0aca, 0x0ad6, 0x0ae8, 0x0b00, - 0x0b1e, 0x0b36, 0x0b4b, 0x0b5d, 0x0b75, 0x0b93, 0x0ba5, 0x0bb4, - 0x0bc6, 0x0bd8, 0x0bf0, 0x0bf0, 0x0bf0, 0x0c0e, 0x0c3d, 0x0c58, - 0x0c64, 0x0c79, 0x0c8e, 0x0c8e, 0x0cd4, 0x0cec, 0x0d07, 0x0d1f, - 0x0d2e, 0x0d3d, 0x0d4f, 0x0d61, 0x0d73, 0x0d88, 0x0d9d, 0x0db2, - 0x0de6, 0x0df8, 0x0e2a, 0x0e3f, 0x0e5a, 0x0e6f, 0x0e81, 0x0e90, - 0x0e9f, 0x0eab, 0x0ec9, 0x0ed8, 0x0eea, 0x0ef6, 0x0f30, 0x0f68, - 0x0f80, 0x0f98, 0x0fad, 0x0fd9, 0x0ff1, 0x100d, 0x1044, 0x1056, - // Entry C0 - FF - 0x1065, 0x107d, 0x108c, 0x108c, 0x10a4, 0x10b9, 0x10b9, 0x10c8, - 0x10da, 0x10f5, 0x1127, 0x1139, 0x114b, 0x115a, 0x1172, 0x118a, - 0x11a2, 0x11a2, 0x11ba, 0x11d5, 0x11f0, 0x1208, 0x121a, 0x122f, - 0x122f, 0x125e, 0x1276, 0x1276, 0x1285, 0x12a3, 0x12a3, 0x12e3, - 0x12ef, 0x12ef, 0x12fb, 0x1310, 0x1331, 0x1343, 0x1366, 0x1387, - 0x1393, 0x13a2, 0x13b4, 0x13e3, 0x13f5, 0x1407, 0x141f, 0x1434, - 0x1446, 0x1446, 0x1446, 0x1485, 0x149a, 0x14b8, 0x14e1, 0x1519, - 0x1531, 0x1573, 0x15c8, 0x15da, 0x15ef, 0x1615, 0x1624, 0x1624, - // Entry 100 - 13F - 0x1633, 0x1642, 0x166b, 0x167d, 0x1695, - }, - }, - { // shi-Latn - "anduralimaratafɣanistanantiga d brbudaangilaalbanyaarminyaangulaarjantin" + - "samwa tamirikanitnnmsaustralyaarubaadrabijanbusna d hirsikbarbadbang" + - "ladicbljikaburkina fasublɣarabḥraynburundibininbrmudabrunibulibyabra" + - "zilbahamasbhutanbutswanabilarusyabilizkanadatagdudant tadimukratit n" + - " Kongotagdudant tanammast n ifriqyakunguswisrakut difwartigzirin n k" + - "ukccilikamirunccinwaculumbyakusta rikakubatigzirin n kabbirdiqubrust" + - "agdudant tatcikitalmanyadjibutidanmarkduminiktagdudant taduminiktdza" + - "yrikwaduristunyamiṣṛiritiryasbanyaityubyafillandafidjitigzirin n mal" + - "awimikrunizyafransagabuntagldit imunnɣrnaṭajurjyagwiyan tafransistɣa" + - "naadrar n ṭaṛiqgrilandgambyaɣinyagwadalubɣinya n ikwadurlyunangwatim" + - "alagwamɣinya bisawgwiyanahunduraskrwatyahaytihnɣaryaandunisyairlanda" + - "israyillhindtamnaḍt tanglizit n ugaru ahindilɛiraqiranislandiṭalyaja" + - "maykalurdunlyabankinyakirɣizistankambudyakiribaticumursankris d nifi" + - "skurya n iẓẓlmḍkurya n iffuslkwittigzirin n kaymankazaxstanlawslubna" + - "nsantlusilikinctaynsrilankalibiryaliṣuṭulitwanyaluksanburglatfyaliby" + - "almɣribmunakumuldufyamadaɣacqartigzirin n marcalmasidunyamalimyanmar" + - "mnɣulyatigzirin n maryan n iẓẓlmḍmartinikmuṛiṭanyamunsiratmalṭamuris" + - "maldifmalawimiksikmalizyamuznbiqnamibyakalidunya tamaynutnnijirtigzi" + - "rin n nurfulknijiryanikaragwahulandannrwijnibalnawruniwinyuzilandaɛu" + - "manbanamabirubulinizya tafransistbabwa ɣinya tamaynutfilibbinbakista" + - "nbulunyasanbyir d miklunbitkayrnburtu rikuagmmaḍ n tagut d ɣzzabṛṭqi" + - "zbalawbaragwayqatarriyunyunrumanyarusyarwandassaɛudiyatigzirin n sal" + - "umanssicilssudansswidsnɣafurasantilinslufinyaslufakyassiralyunsanmar" + - "inussinigalṣṣumalsurinamsawṭumi d bransibsalfadursuryaswazilandatigz" + - "irin n turkya d kayktcadṭuguṭaylandtadjakistanṭuklawtimur n lqblttur" + - "kmanstantunsṭungaturkyatrinidad d ṭubagutufaluṭaywanṭanẓanyaukranyau" + - "ɣandaiwunak munnin n mirikanurugwayuzbakistanawank n fatikansanfans" + - "an d grinadinfinzwilatigzirin timgad n nngliztigzirin timgad n iwuna" + - "k munninfitnamfanwaṭuwalis d futunasamwayamanmayuṭafriqya n iffuszam" + - "byazimbabwi", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x000d, 0x0018, 0x0027, 0x002d, 0x0034, - 0x003b, 0x0041, 0x0041, 0x0049, 0x005a, 0x005f, 0x0067, 0x006c, - 0x006c, 0x0075, 0x0083, 0x0089, 0x0092, 0x0098, 0x00a4, 0x00ab, - 0x00b3, 0x00ba, 0x00bf, 0x00bf, 0x00c5, 0x00ca, 0x00d1, 0x00d1, - 0x00d7, 0x00de, 0x00e4, 0x00e4, 0x00ec, 0x00f5, 0x00fa, 0x0100, - 0x0100, 0x011e, 0x013b, 0x0140, 0x0146, 0x0150, 0x015e, 0x0163, - 0x016a, 0x0170, 0x0178, 0x0178, 0x0182, 0x0186, 0x0199, 0x0199, - 0x0199, 0x019f, 0x01b1, 0x01b8, 0x01b8, 0x01bf, 0x01c6, 0x01cd, - // Entry 40 - 7F - 0x01e1, 0x01e6, 0x01e6, 0x01ed, 0x01f4, 0x01fc, 0x01fc, 0x0204, - 0x020a, 0x0211, 0x0211, 0x0211, 0x0219, 0x021e, 0x022f, 0x0239, - 0x0239, 0x023f, 0x0244, 0x0251, 0x025a, 0x0260, 0x0271, 0x0271, - 0x0276, 0x0287, 0x028e, 0x0294, 0x029a, 0x02a2, 0x02b2, 0x02b8, - 0x02b8, 0x02c1, 0x02c5, 0x02d1, 0x02d8, 0x02d8, 0x02d8, 0x02e0, - 0x02e7, 0x02ec, 0x02f4, 0x02f4, 0x02fd, 0x0304, 0x030b, 0x030b, - 0x0310, 0x0332, 0x0339, 0x033d, 0x0343, 0x034b, 0x034b, 0x0352, - 0x0358, 0x035e, 0x0363, 0x036f, 0x0377, 0x037f, 0x0384, 0x0393, - // Entry 80 - BF - 0x03a7, 0x03b4, 0x03b9, 0x03ca, 0x03d3, 0x03d7, 0x03dd, 0x03e5, - 0x03ef, 0x03f7, 0x03fe, 0x0408, 0x0410, 0x041a, 0x0420, 0x0425, - 0x042c, 0x0432, 0x043a, 0x043a, 0x043a, 0x0445, 0x0456, 0x045f, - 0x0463, 0x046a, 0x0472, 0x0472, 0x0492, 0x049a, 0x04a7, 0x04af, - 0x04b6, 0x04bb, 0x04c1, 0x04c7, 0x04cd, 0x04d4, 0x04db, 0x04e2, - 0x04f4, 0x04fa, 0x050c, 0x0513, 0x051c, 0x0523, 0x0529, 0x052e, - 0x0533, 0x0537, 0x0541, 0x0547, 0x054d, 0x0551, 0x0565, 0x057a, - 0x0582, 0x058a, 0x0591, 0x05a1, 0x05a9, 0x05b3, 0x05cb, 0x05d5, - // Entry C0 - FF - 0x05da, 0x05e2, 0x05e7, 0x05e7, 0x05ef, 0x05f6, 0x05f6, 0x05fb, - 0x0601, 0x060b, 0x061d, 0x0623, 0x0629, 0x062e, 0x0637, 0x063f, - 0x0647, 0x0647, 0x064f, 0x0658, 0x0661, 0x0669, 0x0673, 0x067a, - 0x067a, 0x068d, 0x0695, 0x0695, 0x069a, 0x06a4, 0x06a4, 0x06bc, - 0x06c0, 0x06c0, 0x06c6, 0x06cf, 0x06da, 0x06e2, 0x06ef, 0x06fa, - 0x06fe, 0x0705, 0x070b, 0x071e, 0x0724, 0x072c, 0x0738, 0x073f, - 0x0746, 0x0746, 0x0746, 0x075d, 0x0764, 0x076e, 0x077d, 0x0791, - 0x0799, 0x07b1, 0x07d0, 0x07d6, 0x07df, 0x07ed, 0x07f2, 0x07f2, - // Entry 100 - 13F - 0x07f7, 0x07fe, 0x080d, 0x0813, 0x081b, - }, - }, - { // si - siRegionStr, - siRegionIdx, - }, - { // sk - skRegionStr, - skRegionIdx, - }, - { // sl - slRegionStr, - slRegionIdx, - }, - { // smn - "Ascension-suáluiAndorraArabiemirkodehAfganistanAntigua já BarbudaAnguill" + - "aAlbaniaArmeniaAngolaAntarktisArgentinaAmerika SamoaNuorttâriijkâAus" + - "traliaArubaVuáskueennâmAzerbaidžanBosnia já HerzegovinaBarbadosBangl" + - "adeshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSt. BarthélemyBerm" + - "udaBruneiBoliviaBrasiliaBahamaBhutanBouvetsuáluiBotswanaVielgis-Ruoš" + - "šâBelizeKanadaKookossuolluuh (Keelingsuolluuh)Koskâ-Afrika täsiväld" + - "iSveitsiCôte d’IvoireCooksuolluuhChileKamerunKiinaKolumbiaClipperton" + - "suáluiCosta RicaKuubaCape VerdeCuraçaoJuovlâsuáluiKyprosTšekkiSaksaD" + - "iego GarciaDjiboutiTanskaDominicaDominikaanisâš täsiväldiAlgeriaCeut" + - "a já MelillaEcuadorEestieennâmEgyptiEritreaEspanjaEtiopiaSuomâFidžiF" + - "alklandsuolluuhMikronesia littoväldiFärsuolluuhRanskaGabonOvtâstum K" + - "unâgâskoddeGrenadaGeorgiaRanska GuyanaGuernseyGhanaGibraltarGrönland" + - "GambiaGuineaGuadeloupePeeivitäsideijee GuineaKreikkaMaadâ-Georgia já" + - " Máddááh SandwichsuolluuhGuatemalaGuamGuinea-BissauGuyanaHongkong – " + - "Kiina e.h.k.Heard já McDonaldsuolluuhHondurasKroatiaHaitiUŋgarKanari" + - "asuolluuhIndonesiaIrlandIsraelMansuáluiIndiaBrittilâš India väldimee" + - "râ kuávluIrakIranIslandItaliaJerseyJamaikaJordanJaapaanKeniaKirgisia" + - "KambodžaKiribatiKomorehSt. Kitts já NevisTave-KoreaMaadâ-KoreaKuwait" + - "CaymansuolluuhKazakstanLaosLibanonSt. LuciaLiechtensteinSri LankaLib" + - "eriaLesothoLiettuaLuxemburgLatviaLibyaMarokkoMonacoMoldovaMontenegro" + - "St. MartinMadagaskarMarshallsuolluuhMaliMyanmar (Burma)MongoliaMacao" + - " - – Kiina e.h.k.Tave-MarianehMartiniqueMauritaniaMontserratMaltaMau" + - "ritiusMaledivehMalawiMeksikoMalaysiaMosambikNamibiaUđđâ-KaledoniaNig" + - "erNorfolksuáluiNigeriaNicaraguaVuáládâhenâmehTaažâNepalNauruNiueUđđâ" + - "-SeelandOmanPanamaPeruRanska PolynesiaPapua-Uđđâ-GuineaFilipinehPaki" + - "stanPuolaSt. Pierre já MiquelonPitcairnPuerto RicoPortugalPalauParag" + - "uayQatarRéunionRomaniaSerbiaRuoššâRuandaSaudi ArabiaSalomosuolluuhSe" + - "ychellehSudanRuotâSingaporeSaint HelenaSloveniaČokkeväärih já Jan Ma" + - "yenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinamMaadâ-SudanSão" + - " Tomé já PríncipeEl SalvadorSint MaartenSyriaSwazieennâmTristan da C" + - "unhaTurks- já CaicossuolluuhTšadRanska máddááh kuávluhTogoThaieennâm" + - "TadžikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTurkkiTrinidad " + - "já TobagoTuvaluTaiwanTansaniaUkrainaUgandaOvtâstum Staatâi sierânâss" + - "uolluuhOvtâstum StaatahUruguayUzbekistanVatikanSt. Vincent já Grenad" + - "inesVenezuelaBrittiliih NieidâsuolluuhOvtâstum Staatâi Nieidâsuolluu" + - "hVietnamVanuatuWallis já FutunaSamoaKosovoJemenMayotteMaadâ-AfrikkaS" + - "ambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0011, 0x0018, 0x0026, 0x0030, 0x0043, 0x004b, 0x0052, - 0x0059, 0x005f, 0x0068, 0x0071, 0x007e, 0x008d, 0x0096, 0x009b, - 0x00a9, 0x00b5, 0x00cb, 0x00d3, 0x00dd, 0x00e3, 0x00ef, 0x00f7, - 0x00fe, 0x0105, 0x010a, 0x0119, 0x0120, 0x0126, 0x012d, 0x012d, - 0x0135, 0x013b, 0x0141, 0x014e, 0x0156, 0x0167, 0x016d, 0x0173, - 0x0193, 0x0193, 0x01ac, 0x01ac, 0x01b3, 0x01c3, 0x01cf, 0x01d4, - 0x01db, 0x01e0, 0x01e8, 0x01f9, 0x0203, 0x0208, 0x0212, 0x021a, - 0x0228, 0x022e, 0x0235, 0x023a, 0x0246, 0x024e, 0x0254, 0x025c, - // Entry 40 - 7F - 0x0278, 0x027f, 0x0290, 0x0297, 0x02a3, 0x02a9, 0x02a9, 0x02b0, - 0x02b7, 0x02be, 0x02be, 0x02be, 0x02c4, 0x02ca, 0x02da, 0x02f0, - 0x02fc, 0x0302, 0x0307, 0x031f, 0x0326, 0x032d, 0x033a, 0x0342, - 0x0347, 0x0350, 0x0359, 0x035f, 0x0365, 0x036f, 0x0387, 0x038e, - 0x03bc, 0x03c5, 0x03c9, 0x03d6, 0x03dc, 0x03f5, 0x040f, 0x0417, - 0x041e, 0x0423, 0x0429, 0x0438, 0x0441, 0x0447, 0x044d, 0x0457, - 0x045c, 0x0482, 0x0486, 0x048a, 0x0490, 0x0496, 0x049c, 0x04a3, - 0x04a9, 0x04b0, 0x04b5, 0x04bd, 0x04c6, 0x04ce, 0x04d5, 0x04e8, - // Entry 80 - BF - 0x04f2, 0x04fe, 0x0504, 0x0512, 0x051b, 0x051f, 0x0526, 0x052f, - 0x053c, 0x0545, 0x054c, 0x0553, 0x055a, 0x0563, 0x0569, 0x056e, - 0x0575, 0x057b, 0x0582, 0x058c, 0x0596, 0x05a0, 0x05b0, 0x05b0, - 0x05b4, 0x05c3, 0x05cb, 0x05e3, 0x05f0, 0x05fa, 0x0604, 0x060e, - 0x0613, 0x061c, 0x0625, 0x062b, 0x0632, 0x063a, 0x0642, 0x0649, - 0x065a, 0x065f, 0x066d, 0x0674, 0x067d, 0x068f, 0x0696, 0x069b, - 0x06a0, 0x06a4, 0x06b3, 0x06b7, 0x06bd, 0x06c1, 0x06d1, 0x06e5, - 0x06ee, 0x06f6, 0x06fb, 0x0712, 0x071a, 0x0725, 0x0725, 0x072d, - // Entry C0 - FF - 0x0732, 0x073a, 0x073f, 0x073f, 0x0747, 0x074e, 0x0754, 0x075d, - 0x0763, 0x076f, 0x077d, 0x0787, 0x078c, 0x0792, 0x079b, 0x07a7, - 0x07af, 0x07cb, 0x07d3, 0x07df, 0x07e9, 0x07f0, 0x07f7, 0x07fe, - 0x080a, 0x0822, 0x082d, 0x0839, 0x083e, 0x084a, 0x085a, 0x0873, - 0x0878, 0x0892, 0x0896, 0x08a1, 0x08ad, 0x08b4, 0x08bf, 0x08cb, - 0x08d2, 0x08d7, 0x08dd, 0x08f0, 0x08f6, 0x08fc, 0x0904, 0x090b, - 0x0911, 0x0936, 0x0936, 0x0947, 0x094e, 0x0958, 0x095f, 0x0979, - 0x0982, 0x099c, 0x09be, 0x09c5, 0x09cc, 0x09dd, 0x09e2, 0x09e8, - // Entry 100 - 13F - 0x09ed, 0x09f4, 0x0a02, 0x0a08, 0x0a10, - }, - }, - { // sn - "AndoraUnited Arab EmiratesAfuganistaniAntigua ne BarbudaAnguilaAlbaniaAr" + - "meniaAngolaAjentinaSamoa ye AmerikaAustriaAustraliaArubhaAzabajaniBo" + - "znia ne HerzegovinaBarbadosBangladeshiBeljiumBukinafasoBulgariaBahar" + - "eniBurundiBeniniBermudaBuruneiBoliviaBrazilBahamaBhutaniBotswanaBela" + - "rusiBelizeKanadaDemocratic Republic of the CongoCentral African Repu" + - "blicKongoSwitzerlandIvory CoastZvitsuwa zveCookChileKameruniChinaKol" + - "ombiaKostarikaCubaZvitsuwa zveCape VerdeCyprusCzech RepublicGermanyD" + - "jiboutiDenmarkDominicaDominican RepublicAljeriaEcuadorEstoniaEgyptEr" + - "itreaSpainEtiopiaFinlandFijiZvitsuwa zveFalklandsMicronesiaFranceGab" + - "onUnited KingdomGrenadaGeorgiaFrench GuianaGhanaGibraltarGreenlandGa" + - "mbiaGuineaGuadeloupeEquatorial GuineaGreeceGuatemalaGuamGuinea-Bissa" + - "uGuyanaHondurasKorasiaHaitiHungaryIndonesiaIrelandIzuraeriIndiaBriti" + - "sh Indian Ocean TerritoryIraqIranIcelandItalyJamaicaJordanJapanKenya" + - "KyrgyzstanKambodiaKiribatiKomoroSaint Kitts and NevisKorea, NorthKor" + - "ea, SouthKuwaitZvitsuwa zveCaymanKazakhstanLaosLebanonSaint LuciaLie" + - "chtensteinSri LankaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMoroc" + - "coMonacoMoldovaMadagascarZvitsuwa zveMarshallMacedoniaMaliMyanmarMon" + - "goliaZvitsuwa zvekumaodzanyemba eMarianaMartiniqueMauritaniaMontserr" + - "atMaltaMauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew Cal" + - "edoniaNigerChitsuwa cheNorfolkNigeriaNicaraguaNetherlandsNorwayNepal" + - "NauruNiueNew ZealandOmanPanamaPeruFrench PolynesiaPapua New GuineaPh" + - "ilippinesPakistanPolandSaint Pierre and MiquelonPitcairnPuerto RicoP" + - "ortugalPalauParaguayQatarRéunionRomaniaRussiaRwandaSaudi ArabiaZvits" + - "uwa zvaSolomonSeychellesSudanSwedenSingaporeSaint HelenaSloveniaSlov" + - "akiaSierra LeoneSan MarinoSenegalSomaliaSurinameSão Tomé and Príncip" + - "eEl SalvadorSyriaSwazilandZvitsuwa zveTurk neCaicoChadiTogoThailandT" + - "ajikistanTokelauEast TimorTurkmenistanTunisiaTongaTurkeyTrinidad and" + - " TobagoTuvaluTaiwanTanzaniaUkraineUgandaAmerikaUruguayUzbekistanVati" + - "can StateSaint Vincent and the GrenadinesVenezuelaZvitsuwa zveHingir" + - "andiZvitsuwa zveAmerikaVietnamVanuatuWallis and FutunaSamoaYemenMayo" + - "tteSouth AfricaZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x001a, 0x0026, 0x0038, 0x003f, 0x0046, - 0x004d, 0x0053, 0x0053, 0x005b, 0x006b, 0x0072, 0x007b, 0x0081, - 0x0081, 0x008a, 0x009f, 0x00a7, 0x00b2, 0x00b9, 0x00c3, 0x00cb, - 0x00d3, 0x00da, 0x00e0, 0x00e0, 0x00e7, 0x00ee, 0x00f5, 0x00f5, - 0x00fb, 0x0101, 0x0108, 0x0108, 0x0110, 0x0118, 0x011e, 0x0124, - 0x0124, 0x0144, 0x015c, 0x0161, 0x016c, 0x0177, 0x0187, 0x018c, - 0x0194, 0x0199, 0x01a1, 0x01a1, 0x01aa, 0x01ae, 0x01c4, 0x01c4, - 0x01c4, 0x01ca, 0x01d8, 0x01df, 0x01df, 0x01e7, 0x01ee, 0x01f6, - // Entry 40 - 7F - 0x0208, 0x020f, 0x020f, 0x0216, 0x021d, 0x0222, 0x0222, 0x0229, - 0x022e, 0x0235, 0x0235, 0x0235, 0x023c, 0x0240, 0x0255, 0x025f, - 0x025f, 0x0265, 0x026a, 0x0278, 0x027f, 0x0286, 0x0293, 0x0293, - 0x0298, 0x02a1, 0x02aa, 0x02b0, 0x02b6, 0x02c0, 0x02d1, 0x02d7, - 0x02d7, 0x02e0, 0x02e4, 0x02f1, 0x02f7, 0x02f7, 0x02f7, 0x02ff, - 0x0306, 0x030b, 0x0312, 0x0312, 0x031b, 0x0322, 0x032a, 0x032a, - 0x032f, 0x034d, 0x0351, 0x0355, 0x035c, 0x0361, 0x0361, 0x0368, - 0x036e, 0x0373, 0x0378, 0x0382, 0x038a, 0x0392, 0x0398, 0x03ad, - // Entry 80 - BF - 0x03b9, 0x03c5, 0x03cb, 0x03dd, 0x03e7, 0x03eb, 0x03f2, 0x03fd, - 0x040a, 0x0413, 0x041a, 0x0421, 0x042a, 0x0434, 0x043a, 0x043f, - 0x0446, 0x044c, 0x0453, 0x0453, 0x0453, 0x045d, 0x0471, 0x047a, - 0x047e, 0x0485, 0x048d, 0x048d, 0x04b0, 0x04ba, 0x04c4, 0x04ce, - 0x04d3, 0x04dc, 0x04e4, 0x04ea, 0x04f0, 0x04f8, 0x0502, 0x0509, - 0x0516, 0x051b, 0x052e, 0x0535, 0x053e, 0x0549, 0x054f, 0x0554, - 0x0559, 0x055d, 0x0568, 0x056c, 0x0572, 0x0576, 0x0586, 0x0596, - 0x05a1, 0x05a9, 0x05af, 0x05c8, 0x05d0, 0x05db, 0x05db, 0x05e3, - // Entry C0 - FF - 0x05e8, 0x05f0, 0x05f5, 0x05f5, 0x05fd, 0x0604, 0x0604, 0x060a, - 0x0610, 0x061c, 0x062f, 0x0639, 0x063e, 0x0644, 0x064d, 0x0659, - 0x0661, 0x0661, 0x0669, 0x0675, 0x067f, 0x0686, 0x068d, 0x0695, - 0x0695, 0x06ad, 0x06b8, 0x06b8, 0x06bd, 0x06c6, 0x06c6, 0x06de, - 0x06e3, 0x06e3, 0x06e7, 0x06ef, 0x06f9, 0x0700, 0x070a, 0x0716, - 0x071d, 0x0722, 0x0728, 0x073b, 0x0741, 0x0747, 0x074f, 0x0756, - 0x075c, 0x075c, 0x075c, 0x0763, 0x076a, 0x0774, 0x0781, 0x07a1, - 0x07aa, 0x07c0, 0x07d3, 0x07da, 0x07e1, 0x07f2, 0x07f7, 0x07f7, - // Entry 100 - 13F - 0x07fc, 0x0803, 0x080f, 0x0815, 0x081d, - }, - }, - { // so - "AndoraImaaraadka Carabta ee MidoobayAfgaanistaanAntigua iyo BarbudaAngui" + - "llaAlbaaniyaArmeeniyaAngoolaArjantiinSamowa AmeerikaAwsteriyaAwstara" + - "aliyaArubaAzerbajaanBosniya HersigoviinaBaarbadoosBangaaladheeshBilj" + - "amBurkiina FaasoBulgaariyaBaxreynBurundiBiniinBermuudaBuruneeyaBolii" + - "fiyaBraasiilBahaamasBhutanBotuswaanaBelarusBelizeKanadaJamhuuriyadda" + - " Dimuquraadiga KongoJamhuuriyadda Afrikada DhexeKongoSwiiserlaandIvo" + - "ry coastJaziiradda CookJiliKaameruunShiinahaKolombiyaKosta RiikaKuub" + - "aCape Verde IslandsQubrusJamhuuriyadda JekJarmalJabuutiDenmarkDomeen" + - "ikaJamhuuriyadda DomeenikaAljeeriyaIkuwadoorEstooniyaMasarEretereeya" + - "IsbeynItoobiyaFinlandFijiJaziiradaha FooklaanMicronesiaFaransiisGaab" + - "oonUnited KingdomGiriinaadaJoorjiyaFrench GuianaGaanaGibraltarGreenl" + - "andGambiyaGiniGuadeloupeEquatorial GuineaGiriigGuwaatamaalaGuamGini-" + - "BisaawGuyanaHondurasKorweeshiyaHaytiHangeriIndoneesiyaAyrlaandIsraaʼ" + - "iilHindiyaBritish Indian Ocean TerritoryCiraaqIiraanIislaandTalyaani" + - "JameykaUrdunJabaanKiiniyaKirgistaanKamboodiyaKiribatiKomoorosSaint K" + - "itts and NevisKuuriyada WaqooyiKuuriyada KoonfureedKuwaytCayman Isla" + - "ndsKasaakhistaanLaosLubnaanSaint LuciaLiechtensteinSirilaankaLaybeer" + - "iyaLosootoLituweeniyaLuksemboorgLatfiyaLiibiyaMarookoMoonakoMoldofaM" + - "adagaskarMarshall IslandsMakadooniyaMaaliMiyanmarMongooliyaNorthern " + - "Mariana IslandsMartiniqueMuritaaniyaMontserratMaaldaMurishiyoosMaald" + - "iqeenMalaawiMeksikoMalaysiaMusambiigNamiibiyaNew CaledoniaNayjerNorf" + - "olk IslandNayjeeriyaNikaraaguwaNetherlandsNoorweeyNebaalNauruNiueNey" + - "uusilaandCumaanPanamaPeruFrench PolynesiaPapua New GuineaFilibiinBak" + - "istaanBoolandSaint Pierre and MiquelonPitcairnPuerto RicoFalastiin D" + - "aanka galbeed iyo QasaBortuqaalPalauParaguayQadarRéunionRumaaniyaRuu" + - "shRuwandaSacuudi CarabiyaSolomon IslandsSishelisSuudaanIswidhanSinga" + - "boorSaint HelenaSloveniaSlovakiaSiraaliyoonSan MarinoSinigaalSoomaal" + - "iyaSurinameSão Tomé and PríncipeEl SalvadorSuuriyaIswaasilaandTurks " + - "and Caicos IslandsJaadToogoTaylaandTajikistanTokelauTimorka bariTurk" + - "menistanTuniisiyaTongaTurkiTrinidad and TobagoTuvaluTaywaanTansaaniy" + - "aUkraynUgaandaMaraykankaUruguwaayUusbakistaanFaatikaanSaint Vincent " + - "and the GrenadinesFenisuweelaBritish Virgin IslandsU.S. Virgin Islan" + - "dsFiyetnaamVanuatuWallis and FutunaSamoaYamanMayotteKoonfur AfrikaSa" + - "ambiyaSimbaabweFar aan la aqoon amase aan saxnayn", - []uint16{ // 262 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0024, 0x0030, 0x0043, 0x004b, 0x0054, - 0x005d, 0x0064, 0x0064, 0x006d, 0x007c, 0x0085, 0x0091, 0x0096, - 0x0096, 0x00a0, 0x00b4, 0x00be, 0x00cc, 0x00d2, 0x00e0, 0x00ea, - 0x00f1, 0x00f8, 0x00fe, 0x00fe, 0x0106, 0x010f, 0x0118, 0x0118, - 0x0120, 0x0128, 0x012e, 0x012e, 0x0138, 0x013f, 0x0145, 0x014b, - 0x014b, 0x016c, 0x0188, 0x018d, 0x0199, 0x01a4, 0x01b3, 0x01b7, - 0x01c0, 0x01c8, 0x01d1, 0x01d1, 0x01dc, 0x01e1, 0x01f3, 0x01f3, - 0x01f3, 0x01f9, 0x020a, 0x0210, 0x0210, 0x0217, 0x021e, 0x0227, - // Entry 40 - 7F - 0x023e, 0x0247, 0x0247, 0x0250, 0x0259, 0x025e, 0x025e, 0x0268, - 0x026e, 0x0276, 0x0276, 0x0276, 0x027d, 0x0281, 0x0295, 0x029f, - 0x029f, 0x02a8, 0x02af, 0x02bd, 0x02c7, 0x02cf, 0x02dc, 0x02dc, - 0x02e1, 0x02ea, 0x02f3, 0x02fa, 0x02fe, 0x0308, 0x0319, 0x031f, - 0x031f, 0x032b, 0x032f, 0x033a, 0x0340, 0x0340, 0x0340, 0x0348, - 0x0353, 0x0358, 0x035f, 0x035f, 0x036a, 0x0372, 0x037c, 0x037c, - 0x0383, 0x03a1, 0x03a7, 0x03ad, 0x03b5, 0x03bd, 0x03bd, 0x03c4, - 0x03c9, 0x03cf, 0x03d6, 0x03e0, 0x03ea, 0x03f2, 0x03fa, 0x040f, - // Entry 80 - BF - 0x0420, 0x0434, 0x043a, 0x0448, 0x0455, 0x0459, 0x0460, 0x046b, - 0x0478, 0x0482, 0x048c, 0x0493, 0x049e, 0x04a9, 0x04b0, 0x04b7, - 0x04be, 0x04c5, 0x04cc, 0x04cc, 0x04cc, 0x04d6, 0x04e6, 0x04f1, - 0x04f6, 0x04fe, 0x0508, 0x0508, 0x0520, 0x052a, 0x0535, 0x053f, - 0x0545, 0x0550, 0x055a, 0x0561, 0x0568, 0x0570, 0x0579, 0x0582, - 0x058f, 0x0595, 0x05a3, 0x05ad, 0x05b8, 0x05c3, 0x05cb, 0x05d1, - 0x05d6, 0x05da, 0x05e6, 0x05ec, 0x05f2, 0x05f6, 0x0606, 0x0616, - 0x061e, 0x0627, 0x062e, 0x0647, 0x064f, 0x065a, 0x067b, 0x0684, - // Entry C0 - FF - 0x0689, 0x0691, 0x0696, 0x0696, 0x069e, 0x06a7, 0x06a7, 0x06ac, - 0x06b3, 0x06c3, 0x06d2, 0x06da, 0x06e1, 0x06e9, 0x06f2, 0x06fe, - 0x0706, 0x0706, 0x070e, 0x0719, 0x0723, 0x072b, 0x0735, 0x073d, - 0x073d, 0x0755, 0x0760, 0x0760, 0x0767, 0x0773, 0x0773, 0x078b, - 0x078f, 0x078f, 0x0794, 0x079c, 0x07a6, 0x07ad, 0x07b9, 0x07c5, - 0x07ce, 0x07d3, 0x07d8, 0x07eb, 0x07f1, 0x07f8, 0x0802, 0x0808, - 0x080f, 0x080f, 0x080f, 0x0819, 0x0822, 0x082e, 0x0837, 0x0857, - 0x0862, 0x0878, 0x088b, 0x0894, 0x089b, 0x08ac, 0x08b1, 0x08b1, - // Entry 100 - 13F - 0x08b6, 0x08bd, 0x08cb, 0x08d3, 0x08dc, 0x08fe, - }, - }, - { // sq - sqRegionStr, - sqRegionIdx, - }, - { // sr - srRegionStr, - srRegionIdx, - }, - { // sr-Cyrl-BA - "БјелорусијаКонгоКабо ВердеЧешка РепубликаЊемачкаСвети Китс и НевисСАР Ма" + - "каоСвети Пјер и МикелонРеунионМања удаљена острва САДСвети Винсент " + - "и ГренадиниБританска Дјевичанска ОстрваАмеричка Дјевичанска Острва", - []uint16{ // 251 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0016, 0x0016, - 0x0016, 0x0016, 0x0016, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0033, 0x0033, - 0x0033, 0x0033, 0x0050, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - // Entry 40 - 7F - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, - 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x005e, 0x007f, - // Entry 80 - BF - 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, - 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, - 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, 0x007f, - 0x007f, 0x007f, 0x007f, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, - 0x0090, 0x0090, 0x0090, 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00b5, - // Entry C0 - FF - 0x00b5, 0x00b5, 0x00b5, 0x00b5, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, 0x00c3, - 0x00c3, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x011d, - 0x011d, 0x0153, 0x0187, - }, - }, - { // sr-Cyrl-ME - "БјелорусијаКонгоЧешка РепубликаЊемачкаСвети Китс и НевисСвети Пјер и Мик" + - "елонРеунионМања удаљена острва САДСвети Винсент и ГренадиниБританск" + - "а Дјевичанска ОстрваАмеричка Дјевичанска Острва", - []uint16{ // 251 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x0016, 0x0016, - 0x0016, 0x0016, 0x0016, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x003d, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - // Entry 40 - 7F - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x006c, - // Entry 80 - BF - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, 0x006c, - 0x006c, 0x006c, 0x006c, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, - // Entry C0 - FF - 0x0091, 0x0091, 0x0091, 0x0091, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, 0x009f, - 0x009f, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00f9, - 0x00f9, 0x012f, 0x0163, - }, - }, - { // sr-Cyrl-XK - "КонгоКабо ВердеЧешка РепубликаСАР ХонгконгСвети Китс и НевисСАР МакаоСве" + - "ти Пјер и МикелонРеунионМања удаљена острва САДСвети Винсент и Грен" + - "адини", - []uint16{ // 248 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x001d, 0x001d, - 0x001d, 0x001d, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - // Entry 40 - 7F - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, - 0x003a, 0x003a, 0x003a, 0x003a, 0x003a, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, - 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0072, - // Entry 80 - BF - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, - 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, - 0x0083, 0x0083, 0x0083, 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00a8, - // Entry C0 - FF - 0x00a8, 0x00a8, 0x00a8, 0x00a8, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, 0x00b6, - 0x00b6, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x00e1, 0x0110, - }, - }, - { // sr-Latn - srLatnRegionStr, - srLatnRegionIdx, - }, - { // sr-Latn-BA - "BjelorusijaKongoKabo VerdeČeška RepublikaNjemačkaSveti Kits i NevisSAR M" + - "akaoSveti Pjer i MikelonReunionManja udaljena ostrva SADSveti Vinsen" + - "t i GrenadiniBritanska Djevičanska OstrvaAmerička Djevičanska Ostrva", - []uint16{ // 251 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x001a, 0x001a, - 0x001a, 0x001a, 0x002b, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - // Entry 40 - 7F - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, - 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0034, 0x0046, - // Entry 80 - BF - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, 0x0046, - 0x0046, 0x0046, 0x0046, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, - // Entry C0 - FF - 0x0063, 0x0063, 0x0063, 0x0063, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, 0x006a, - 0x006a, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x009c, - 0x009c, 0x00b9, 0x00d6, - }, - }, - { // sr-Latn-ME - "BjelorusijaKongoČeška RepublikaNjemačkaSveti Kits i NevisSveti Pjer i Mi" + - "kelonReunionManja udaljena ostrva SADSveti Vinsent i GrenadiniBritan" + - "ska Djevičanska OstrvaAmerička Djevičanska Ostrva", - []uint16{ // 251 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, - 0x000b, 0x000b, 0x000b, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, - 0x0010, 0x0010, 0x0021, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - // Entry 40 - 7F - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, - 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x002a, 0x003c, - // Entry 80 - BF - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, 0x003c, - 0x003c, 0x003c, 0x003c, 0x0050, 0x0050, 0x0050, 0x0050, 0x0050, - // Entry C0 - FF - 0x0050, 0x0050, 0x0050, 0x0050, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, - 0x0057, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0089, - 0x0089, 0x00a6, 0x00c3, - }, - }, - { // sr-Latn-XK - "KongoKabo VerdeČeška RepublikaSAR HongkongSveti Kits i NevisSAR MakaoSve" + - "ti Pjer i MikelonReunionManja udaljena ostrva SADSveti Vinsent i Gre" + - "nadini", - []uint16{ // 248 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000f, 0x000f, - 0x000f, 0x000f, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - // Entry 40 - 7F - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x003e, - // Entry 80 - BF - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, - 0x003e, 0x003e, 0x003e, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, 0x0047, - 0x0047, 0x0047, 0x0047, 0x005b, 0x005b, 0x005b, 0x005b, 0x005b, - // Entry C0 - FF - 0x005b, 0x005b, 0x005b, 0x005b, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, 0x0062, - 0x0062, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x007b, 0x0094, - }, - }, - { // sv - svRegionStr, - svRegionIdx, - }, - {}, // sv-FI - { // sw - swRegionStr, - swRegionIdx, - }, - { // sw-CD - "AfuganistaniAzabajaniBeniniKodivaaKisiwa cha ChristmasSaiprasiDenmakiKro" + - "eshiaYordaniLebanoniLishenteniLasembagiLativiaMorokoMyamaMaldiviNije" + - "riNijeriaNorweNepaliOmaniPuetorikoKatariSudaniSao Tome na PrinsipeCh" + - "adiTimori ya MasharikiVietnamuAsia Mashariki", - []uint16{ // 277 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, 0x000c, - 0x000c, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, - 0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x0022, 0x0022, 0x0022, - 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, - 0x0036, 0x003e, 0x003e, 0x003e, 0x003e, 0x003e, 0x0045, 0x0045, - // Entry 40 - 7F - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, 0x0045, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, 0x004d, - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, - // Entry 80 - BF - 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x0054, 0x005c, 0x005c, - 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x006f, 0x0076, 0x0076, - 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, - 0x007c, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, - 0x0081, 0x0081, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, - 0x0088, 0x008e, 0x008e, 0x0095, 0x0095, 0x0095, 0x009a, 0x00a0, - 0x00a0, 0x00a0, 0x00a0, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, - 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00a5, 0x00ae, 0x00ae, 0x00ae, - // Entry C0 - FF - 0x00ae, 0x00ae, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00b4, - 0x00b4, 0x00b4, 0x00b4, 0x00b4, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, 0x00ba, - 0x00ba, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, 0x00ce, - 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00d3, 0x00e6, 0x00e6, - 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, 0x00e6, - 0x00e6, 0x00e6, 0x00e6, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - // Entry 100 - 13F - 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00ee, - 0x00ee, 0x00ee, 0x00ee, 0x00ee, 0x00fc, - }, - }, - { // sw-KE - "AntaktikaAzabajaniIvorikostiKisiwa cha ChristmasSaiprasiMikronesiaGwadel" + - "upeYordaniLebanoniLishtensteniLesothoLasembagiLativiaMaldiviNyukaled" + - "oniaNijerNijeriaNorweNepaliOmaniPolinesia ya UfaransaPuetorikoKatari" + - "Sao Tome na PrinsipeChadiVietnamu", - []uint16{ // 252 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, - 0x0009, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, - 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x001c, 0x001c, 0x001c, - 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, 0x001c, - 0x0030, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - // Entry 40 - 7F - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, - 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, 0x004b, - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, - // Entry 80 - BF - 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x005a, 0x005a, - 0x0066, 0x0066, 0x0066, 0x006d, 0x006d, 0x0076, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, 0x007d, - 0x007d, 0x007d, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084, - 0x0090, 0x0095, 0x0095, 0x009c, 0x009c, 0x009c, 0x00a1, 0x00a7, - 0x00a7, 0x00a7, 0x00a7, 0x00ac, 0x00ac, 0x00ac, 0x00c1, 0x00c1, - 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00ca, 0x00ca, 0x00ca, - // Entry C0 - FF - 0x00ca, 0x00ca, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, - 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, - 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, 0x00d0, - 0x00d0, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, 0x00e4, - 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, - 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, - 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, 0x00e9, - 0x00e9, 0x00e9, 0x00e9, 0x00f1, - }, - }, - { // ta - taRegionStr, - taRegionIdx, - }, - { // te - teRegionStr, - teRegionIdx, - }, - { // teo - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKeniaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // tg - "АсунсонАндорраАморатҳои Муттаҳидаи АрабАфғонистонАнтигуа ва БарбудаАнгил" + - "ияАлбанияАрманистонАнголаАнтарктидаАргентинаСамоаи АмерикаАвстрияАв" + - "стралияАрубаҶазираҳои АландОзарбойҷонБосния ва ҲерсеговинаБарбадосБ" + - "англадешБелгияБуркина-ФасоБулғорияБаҳрайнБурундиБенинСент-БартелмиБ" + - "ермудаБрунейБоливияБразилияБагамБутонҶазираи БувеБотсванаБелорусБел" + - "изКанадаҶазираҳои Кокос (Килинг)Ҷумҳурии Африқои МарказӣШвейтсарияК" + - "от-д’ИвуарҶазираҳои КукЧилиКамерунХитойКолумбияКоста-РикаКубаКабо-В" + - "ердеКюрасаоҶазираи КрисмасКипрҶумҳурии ЧехГерманияҶибутиДанияДомини" + - "каҶумҳурии ДоминиканАлҷазоирЭквадорЭстонияМисрЭритреяИспанияЭфиопия" + - "ФинляндияФиҷиҶазираҳои ФолклендШтатҳои Федеративии МикронезияҶазира" + - "ҳои ФарерФрансияГабонШоҳигарии МуттаҳидаГренадаГурҷистонГвианаи Фар" + - "онсаГернсиГанаГибралтарГренландияГамбияГвинеяГваделупаГвинеяи Экват" + - "орӣЮнонҶорҷияи Ҷанубӣ ва Ҷазираҳои СандвичГватемалаГуамГвинея-Бисау" + - "ГайанаҲонконг (МММ)Ҷазираи Ҳерд ва Ҷазираҳои МакдоналдГондурасХорва" + - "тияГаитиМаҷористонИндонезияИрландияИсроилҶазираи МэнҲиндустонҚаламр" + - "ави Британия дар уқёнуси ҲиндИроқЭронИсландияИталияҶерсиЯмайкаУрдун" + - "ЯпонияКенияҚирғизистонКамбоҷаКирибатиКоморСент-Китс ва НевисКореяи " + - "ШимолӣҚувайтҶазираҳои КайманҚазоқистонЛаосЛубнонСент-ЛюсияЛихтенште" + - "йнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛибияМарокашМонакоМолд" + - "оваЧерногорияҶазираи Сент-МартинМадагаскарҶазираҳои МаршаллМақдунМа" + - "лиМянмаМуғулистонМакао (МММ)Ҷазираҳои Марианаи ШимолӣМартиникаМаври" + - "танияМонтсерратМалтаМаврикийМалдивМалавиМексикаМалайзияМозамбикНами" + - "бияКаледонияи НавНигерҶазираи НорфолкНигерияНикарагуаНидерландияНор" + - "вегияНепалНауруНиуэЗеландияи НавУмонПанамаПеруПолинезияи ФаронсаПап" + - "уа Гвинеяи НавФилиппинПокистонЛаҳистонСент-Пер ва МикелонҶазираҳои " + - "ПиткейрнПуэрто-РикоПортугалияПалауПарагвайҚатарРеюнионРуминияСербия" + - "РусияРуандаАрабистони СаудӣҶазираҳои СоломонСейшелСудонШветсияСинга" + - "пурСент ЕленаСловенияШпитсберген ва Ян МайенСловакияСиерра-ЛеонеСан" + - "-МариноСенегалСомалӣСуринамСудони ҶанубӣСан Томе ва ПринсипиЭл-Салва" + - "дорСинт-МаартенСурияСвазилендТристан-да-КуняҶазираҳои Теркс ва Кайк" + - "осЧадМинтақаҳои Ҷанубии ФаронсаТогоТаиландТоҷикистонТокелауТимор-Ле" + - "стеТуркманистонТунисТонгаТуркияТринидад ва ТобагоТувалуТайванТанзан" + - "ияУкраинаУгандаҶазираҳои Хурди Дурдасти ИМАИёлоти МуттаҳидаУругвайӮ" + - "збекистонШаҳри ВотиконСент-Винсент ва ГренадинаВенесуэлаҶазираҳои В" + - "иргини БританияҶазираҳои Виргини ИМАВетнамВануатуУоллис ва ФутунаСа" + - "моаКосовоЯманМайоттаАфрикаи ҶанубӣЗамбияЗимбабвеМинтақаи номаълум", - []uint16{ // 262 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x001c, 0x004c, 0x0060, 0x0082, 0x0090, 0x009e, - 0x00b2, 0x00be, 0x00d2, 0x00e4, 0x00ff, 0x010d, 0x011f, 0x0129, - 0x0146, 0x015a, 0x0182, 0x0192, 0x01a4, 0x01b0, 0x01c7, 0x01d7, - 0x01e5, 0x01f3, 0x01fd, 0x0216, 0x0224, 0x0230, 0x023e, 0x023e, - 0x024e, 0x0258, 0x0262, 0x0279, 0x0289, 0x0297, 0x02a1, 0x02ad, - 0x02d9, 0x02d9, 0x0307, 0x0307, 0x031b, 0x0331, 0x034a, 0x0352, - 0x0360, 0x036a, 0x037a, 0x037a, 0x038d, 0x0395, 0x03a8, 0x03b6, - 0x03d3, 0x03db, 0x03f2, 0x0402, 0x0402, 0x040e, 0x0418, 0x0428, - // Entry 40 - 7F - 0x044b, 0x045b, 0x045b, 0x0469, 0x0477, 0x047f, 0x047f, 0x048d, - 0x049b, 0x04a9, 0x04a9, 0x04a9, 0x04bb, 0x04c3, 0x04e6, 0x0520, - 0x053d, 0x054b, 0x0555, 0x057a, 0x0588, 0x059a, 0x05b7, 0x05c3, - 0x05cb, 0x05dd, 0x05f1, 0x05fd, 0x0609, 0x061b, 0x063a, 0x0642, - 0x0684, 0x0696, 0x069e, 0x06b5, 0x06c1, 0x06d8, 0x071a, 0x072a, - 0x073a, 0x0744, 0x0758, 0x0758, 0x076a, 0x077a, 0x0786, 0x079b, - 0x07ad, 0x07ef, 0x07f7, 0x07ff, 0x080f, 0x081b, 0x0825, 0x0831, - 0x083b, 0x0847, 0x0851, 0x0867, 0x0875, 0x0885, 0x088f, 0x08b0, - // Entry 80 - BF - 0x08c9, 0x08c9, 0x08d5, 0x08f4, 0x0908, 0x0910, 0x091c, 0x092f, - 0x0945, 0x0956, 0x0964, 0x0970, 0x097a, 0x098e, 0x099a, 0x09a4, - 0x09b2, 0x09be, 0x09cc, 0x09e0, 0x0a04, 0x0a18, 0x0a39, 0x0a45, - 0x0a4d, 0x0a57, 0x0a6b, 0x0a7e, 0x0aae, 0x0ac0, 0x0ad4, 0x0ae8, - 0x0af2, 0x0b02, 0x0b0e, 0x0b1a, 0x0b28, 0x0b38, 0x0b48, 0x0b56, - 0x0b71, 0x0b7b, 0x0b98, 0x0ba6, 0x0bb8, 0x0bce, 0x0bde, 0x0be8, - 0x0bf2, 0x0bfa, 0x0c13, 0x0c1b, 0x0c27, 0x0c2f, 0x0c52, 0x0c72, - 0x0c82, 0x0c92, 0x0ca2, 0x0cc5, 0x0ce8, 0x0cfd, 0x0cfd, 0x0d11, - // Entry C0 - FF - 0x0d1b, 0x0d2b, 0x0d35, 0x0d35, 0x0d43, 0x0d51, 0x0d5d, 0x0d67, - 0x0d73, 0x0d92, 0x0db3, 0x0dbf, 0x0dc9, 0x0dd7, 0x0de7, 0x0dfa, - 0x0e0a, 0x0e35, 0x0e45, 0x0e5c, 0x0e6f, 0x0e7d, 0x0e89, 0x0e97, - 0x0eb0, 0x0ed5, 0x0eea, 0x0f01, 0x0f0b, 0x0f1d, 0x0f39, 0x0f68, - 0x0f6e, 0x0fa0, 0x0fa8, 0x0fb6, 0x0fca, 0x0fd8, 0x0fed, 0x1005, - 0x100f, 0x1019, 0x1025, 0x1047, 0x1053, 0x105f, 0x106f, 0x107d, - 0x1089, 0x10be, 0x10be, 0x10dd, 0x10eb, 0x10ff, 0x1118, 0x1147, - 0x1159, 0x118b, 0x11b3, 0x11bf, 0x11cd, 0x11eb, 0x11f5, 0x1201, - // Entry 100 - 13F - 0x1209, 0x1217, 0x1232, 0x123e, 0x124e, 0x126f, - }, - }, - { // th - thRegionStr, - thRegionIdx, - }, - { // ti - "አሴንሽን ደሴትአንዶራሕቡራት ኢማራት ዓረብአፍጋኒስታንኣንቲጓን ባሩዳንአንጉኢላአልባኒያአርሜኒያአንጐላአንታርክቲካአርጀ" + - "ንቲናናይ ኣሜሪካ ሳሞኣኦስትሪያአውስትሬሊያአሩባደሴታት ኣላንድአዘርባጃንቦዝንያን ሄርዘጎቪናንባርቤዶስባንግላ" + - "ዲሽቤልጄምቡርኪና ፋሶቡልጌሪያባህሬንብሩንዲቤኒንቅዱስ ባርተለሚይቤርሙዳብሩኒቦሊቪያካሪቢያን ኔዘርላንድስብራዚ" + - "ልባሃማስቡህታንደሴታት ቦውቬትቦትስዋናቤላሩስቤሊዘካናዳኮኮስ ኬሊንግ ደሴቶችኮንጎማእከላይ ኣፍሪቃ ሪፓብሊክኮ" + - "ንጎ ሪፓብሊክስዊዘርላንድኮት ዲቯርደሴታት ኩክቺሊካሜሩንቻይናኮሎምቢያክሊፐርቶን ደሴትኮስታ ሪካኩባኬፕ ቬርዴ" + - "ኩራካዎደሴታት ክሪስትማስሳይፕረስቼክ ሪፓብሊክጀርመንዲየጎ ጋርሺያጂቡቲዴንማርክዶሚኒካዶመኒካ ሪፓብሊክአልጄሪ" + - "ያሲውታን ሜሊላንኢኳዶርኤስቶኒያግብጽምዕራባዊ ሳህራኤርትራስፔንኢትዮጵያፊንላንድፊጂደሴታት ፎክላንድሚክሮኔዢያ" + - "ደሴታት ፋራኦፈረንሳይጋቦንእንግሊዝግሬናዳጆርጂያናይ ፈረንሳይ ጉይናገርንሲጋናጊብራልታርግሪንላንድጋምቢያጊኒጉ" + - "ዋደሉፕኢኳቶሪያል ጊኒግሪክደሴታት ደቡብ ጆርጂያን ደቡድ ሳንድዊችንጉዋቲማላጉዋምቢሳዎጉያናሆንግ ኮንግደሴታት" + - " ሀርድን ማክዶናልድንሆንዱራስክሮኤሽያሀይቲሀንጋሪደሴታት ካናሪኢንዶኔዢያአየርላንድእስራኤልአይል ኦፍ ማንህንዲና" + - "ይ ብሪጣንያ ህንዳዊ ውቅያኖስ ግዝኣትኢራቅኢራንአይስላንድጣሊያንጀርሲጃማይካጆርዳንጃፓንኬንያኪርጂስታንካምቦዲ" + - "ያኪሪባቲኮሞሮስቅዱስ ኪትስን ኔቪስንሰሜን ኮሪያደቡብ ኮሪያክዌትካይማን ደሴቶችካዛኪስታንላኦስሊባኖስሴንት ሉ" + - "ቺያሊችተንስታይንሲሪላንካላይቤሪያሌሶቶሊቱዌኒያሉክሰምበርግላትቪያሊቢያሞሮኮሞናኮሞልዶቫሞንቴኔግሮሴንት ማርቲን" + - "ማዳጋስካርማርሻል አይላንድማከዶኒያማሊማያንማርሞንጎሊያማካዎደሴታት ሰሜናዊ ማሪያናማርቲኒክሞሪቴኒያሞንትሴራት" + - "ማልታማሩሸስማልዲቭስማላዊሜክሲኮማሌዢያሞዛምቢክናሚቢያኒው ካሌዶኒያኒጀርኖርፎልክ ደሴትናይጄሪያኒካራጓኔዘርላን" + - "ድስኖርዌኔፓልናኡሩኒኡይኒው ዚላንድኦማንፓናማፔሩናይ ፈረንሳይ ፖሊነዝያፓፑዋ ኒው ጊኒፊሊፒንስፓኪስታንፖላንድ" + - "ቅዱስ ፒዬርን ሚኩኤሎንፒትካኢርንፖርታ ሪኮምምሕዳር ፍልስጤምፖርቱጋልፓላውፓራጓይቀጠርሪዩኒየንሮሜኒያሰርቢያራ" + - "ሺያሩዋንዳስዑዲ ዓረብሰሎሞን ደሴትሲሼልስሱዳንስዊድንሲንጋፖርሴንት ሄለናስሎቬኒያስቫልባርድን ዣን ማየን ደሴ" + - "ታትስሎቫኪያሴራሊዮንሳን ማሪኖሴኔጋልሱማሌሱሪናምደቡብ ሱዳንሳኦ ቶሜን ፕሪንሲፔንኤል ሳልቫዶርሲንት ማርቲንሲ" + - "ሪያሱዋዚላንድትሪስን ዳ ኩንሃደሴታት ቱርክን ካይኮስንጫድናይ ፈረንሳይ ደቡባዊ ግዝኣታትቶጐታይላንድታጃኪስታ" + - "ንቶክላውምብራቕ ቲሞርቱርክሜኒስታንቱኒዚያቶንጋቱርክትሪኒዳድን ቶባጎንቱቫሉታይዋንታንዛኒያዩክሬንዩጋንዳናይ ኣ" + - "ሜሪካ ፍንትት ዝበሉ ደሴታትአሜሪካኡራጓይዩዝበኪስታንቫቲካንቅዱስ ቪንሴንትን ግሬናዲንስንቬንዙዌላቨርጂን ደሴ" + - "ታት እንግሊዝቨርጂን ደሴታት ኣሜሪካቬትናምቫኑአቱዋሊስን ፉቱናንሳሞአኮሶቮየመንሜይኦቴደቡብ አፍሪካዛምቢያዚም" + - "ቧቤ", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0019, 0x0025, 0x0048, 0x005d, 0x0079, 0x0088, 0x0097, - 0x00a6, 0x00b2, 0x00c7, 0x00d9, 0x00f6, 0x0105, 0x011a, 0x0123, - 0x013c, 0x014e, 0x0173, 0x0182, 0x0194, 0x01a0, 0x01b3, 0x01c2, - 0x01ce, 0x01da, 0x01e3, 0x01ff, 0x020b, 0x0214, 0x0220, 0x0245, - 0x0251, 0x025d, 0x0269, 0x0282, 0x0291, 0x029d, 0x02a6, 0x02af, - 0x02d2, 0x02db, 0x0307, 0x0320, 0x0335, 0x0345, 0x0358, 0x035e, - 0x036a, 0x0373, 0x0382, 0x039e, 0x03ae, 0x03b4, 0x03c4, 0x03d0, - 0x03ef, 0x03fe, 0x0414, 0x0420, 0x0436, 0x043f, 0x044e, 0x045a, - // Entry 40 - 7F - 0x0476, 0x0485, 0x049e, 0x04aa, 0x04b9, 0x04c2, 0x04db, 0x04e7, - 0x04f0, 0x04ff, 0x04ff, 0x04ff, 0x050e, 0x0514, 0x0530, 0x0542, - 0x0558, 0x0567, 0x0570, 0x057f, 0x058b, 0x0597, 0x05b7, 0x05c3, - 0x05c9, 0x05db, 0x05ed, 0x05f9, 0x05ff, 0x060e, 0x0627, 0x0630, - 0x0673, 0x0682, 0x068b, 0x0694, 0x069d, 0x06b0, 0x06df, 0x06ee, - 0x06fd, 0x0706, 0x0712, 0x0728, 0x073a, 0x074c, 0x075b, 0x0772, - 0x077b, 0x07bb, 0x07c4, 0x07cd, 0x07df, 0x07eb, 0x07f4, 0x0800, - 0x080c, 0x0815, 0x081e, 0x0830, 0x083f, 0x084b, 0x0857, 0x087a, - // Entry 80 - BF - 0x088d, 0x08a0, 0x08a9, 0x08c2, 0x08d4, 0x08dd, 0x08e9, 0x08fc, - 0x0914, 0x0923, 0x0932, 0x093b, 0x094a, 0x095f, 0x096b, 0x0974, - 0x097d, 0x0986, 0x0992, 0x09a4, 0x09ba, 0x09cc, 0x09e8, 0x09f7, - 0x09fd, 0x0a0c, 0x0a1b, 0x0a24, 0x0a4a, 0x0a59, 0x0a68, 0x0a7a, - 0x0a83, 0x0a8f, 0x0a9e, 0x0aa7, 0x0ab3, 0x0abf, 0x0ace, 0x0ada, - 0x0af0, 0x0af9, 0x0b12, 0x0b21, 0x0b2d, 0x0b42, 0x0b4b, 0x0b54, - 0x0b5d, 0x0b66, 0x0b79, 0x0b82, 0x0b8b, 0x0b91, 0x0bb7, 0x0bce, - 0x0bdd, 0x0bec, 0x0bf8, 0x0c1e, 0x0c30, 0x0c40, 0x0c5f, 0x0c6e, - // Entry C0 - FF - 0x0c77, 0x0c83, 0x0c8c, 0x0c8c, 0x0c9b, 0x0ca7, 0x0cb3, 0x0cbc, - 0x0cc8, 0x0cdb, 0x0cf1, 0x0cfd, 0x0d06, 0x0d12, 0x0d21, 0x0d34, - 0x0d43, 0x0d76, 0x0d85, 0x0d94, 0x0da4, 0x0db0, 0x0db9, 0x0dc5, - 0x0dd8, 0x0dfb, 0x0e11, 0x0e27, 0x0e30, 0x0e42, 0x0e5c, 0x0e85, - 0x0e8b, 0x0ebe, 0x0ec4, 0x0ed3, 0x0ee5, 0x0ef1, 0x0f07, 0x0f1f, - 0x0f2b, 0x0f34, 0x0f3d, 0x0f5c, 0x0f65, 0x0f71, 0x0f80, 0x0f8c, - 0x0f98, 0x0fcf, 0x0fcf, 0x0fdb, 0x0fe7, 0x0ffc, 0x1008, 0x103a, - 0x1049, 0x1072, 0x1098, 0x10a4, 0x10b0, 0x10c9, 0x10d2, 0x10db, - // Entry 100 - 13F - 0x10e4, 0x10f0, 0x1106, 0x1112, 0x111e, - }, - }, - { // tk - "Beýgeliş adasyAndorraBirleşen Arap EmirlikleriOwganystanAntigua we Barbu" + - "daAngilýaAlbaniýaErmenistanAngolaAntarktikaArgentinaAmerikan Samoasy" + - "AwstriýaAwstraliýaArubaAland adalaryAzerbaýjanBosniýa we Gersegowina" + - "BarbadowBangladeşBelgiýaBurkina-FasoBolgariýaBahreýnBurundiBeninSen-" + - "BartelemiBermudaBruneýBoliwiýaKarib NiderlandyBraziliýaBagama adalar" + - "yButanBuwe adasyBotswanaBelarusBelizKanadaKokos (Kiling) adalaryKong" + - "o - KinşasaOrta Afrika RespublikasyKongo - BrazzawilŞweýsariýaKot-d’" + - "IwuarKuk adalaryÇiliKamerunHytaýKolumbiýaKlipperton adasyKosta-RikaK" + - "ubaKabo-WerdeKýurasaoRoždestwo adasyKiprÇehiýaGermaniýaDiýego-Garsiý" + - "aJibutiDaniýaDominikaDominikan RespublikasyAlžirSeuta we MelilýaEkwa" + - "dorEstoniýaMüsürGünbatar SaharaEritreýaIspaniýaEfiopiýaÝewropa Bilel" + - "eşigiÝewro sebtiFinlandiýaFijiFolklend adalaryMikroneziýaFarer adala" + - "ryFransiýaGabonBirleşen PatyşalykGrenadaGruziýaFransuz GwianasyGerns" + - "iGanaGibraltarGrenlandiýaGambiýaGwineýaGwadelupaEkwatorial GwineýaGr" + - "esiýaGünorta Georgiýa we Günorta Sendwiç adasyGwatemalaGuamGwineýa-B" + - "isauGaýanaGonkong AAS HytaýHerd we Makdonald adalaryGondurasHorwatiý" + - "aGaitiWengriýaKanar adalaryIndoneziýaIrlandiýaYsraýylMen adasyHindis" + - "tanBritaniýanyň Hint okeanyndaky territoriýalaryYrakEýranIslandiýaIt" + - "aliýaJersiÝamaýkaIordaniýaÝaponiýaKeniýaGyrgyzystanKambojaKiribatiKo" + - "mor AdalarySent-Kits we NewisDemirgazyk KoreýaGünorta KoreýaKuweýtKa" + - "ýman adalaryGazagystanLaosLiwanSent-LýusiýaLihtenşteýnŞri-LankaLibe" + - "riýaLesotoLitwaLýuksemburgLatwiýaLiwiýaMarokkoMonakoMoldowaMontenegr" + - "oSen-MartenMadagaskarMarşall adalaryMakedoniýaMaliMýanma (Burma)Mong" + - "oliýaMakau AAS HytaýDemirgazyk Mariana adalaryMartinikaMawritaniýaMo" + - "nserratMaltaMawrikiýMaldiwlerMalawiMeksikaMalaýziýaMozambikNamibiýaT" + - "äze KaledoniýaNigerNorfolk adasyNigeriýaNikaraguaNiderlandiýaNorweg" + - "iýaNepalNauruNiueTäze ZelandiýaOmanPanamaPeruFransuz PolineziýasyPap" + - "ua - Täze GwineýaFilippinlerPakistanPolşaSen-Pýer we MikelonPitkern " + - "adalaryPuerto-RikoPalestina territoriýasyPortugaliýaPalauParagwaýKat" + - "arDaşky OkeaniýaReýunýonRumyniýaSerbiýaRussiýaRuandaSaud ArabystanyS" + - "olomon adalarySeýşel AdalarySudanŞwesiýaSingapurKeramatly Ýelena ada" + - "sySloweniýaŞpisbergen we Ýan-MaýenSlowakiýaSýerra-LeoneSan-MarinoSen" + - "egalSomaliSurinamGünorta SudanSan-Tome we PrinsipiSalwadorSint-Marte" + - "nSiriýaSwazilendTristan-da-KunýaTerks we Kaýkos adalaryÇadFransuz gü" + - "norta territoriýalaryTogoTaýlandTäjigistanTokelauTimor-LesteTürkmeni" + - "stanTunisTongaTürkiýeTrinidad we TobagoTuwaluTaýwanTanzaniýaUkrainaU" + - "gandaABŞ-nyň daşarky adalaryBirleşen Milletler GuramasyAmerikanyň Bi" + - "rleşen ŞtatlaryUrugwaýÖzbegistanWatikanSent-Winsent we GrenadinlerWe" + - "nesuelaBritan Wirgin adalaryABŞ-nyň Wirgin adalaryWýetnamWanuatuUoll" + - "is we FutunaSamoaKosowoÝemenMaýottaGünorta AfrikaZambiýaZimbabweNäbe" + - "lli sebitDunýäAfrikaDemirgazyk AmerikaGünorta AmerikaOkeaniýaGünbata" + - "r AfrikaOrta AmerikaGündogar AfrikaDemirgazyk AfrikaOrta AfrikaAfrik" + - "anyň günorta sebitleriAmerikaAmerikanyň demirgazyk ýurtlaryKarib bas" + - "seýniGündogar AziýaGünorta AziýaGünorta-gündogar AziýaGünorta Ýewrop" + - "aAwstralaziýaMelaneziýaMikroneziýa sebtiPolineziýaAziýaOrta AziýaGün" + - "batar AziýaÝewropaGündogar ÝewropaDemirgazyk ÝewropaGünbatar Ýewropa" + - "Latyn Amerikasy", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x0031, 0x003b, 0x004d, 0x0055, 0x005e, - 0x0068, 0x006e, 0x0078, 0x0081, 0x0091, 0x009a, 0x00a5, 0x00aa, - 0x00b7, 0x00c2, 0x00d9, 0x00e1, 0x00eb, 0x00f3, 0x00ff, 0x0109, - 0x0111, 0x0118, 0x011d, 0x012a, 0x0131, 0x0138, 0x0141, 0x0151, - 0x015b, 0x0169, 0x016e, 0x0178, 0x0180, 0x0187, 0x018c, 0x0192, - 0x01a8, 0x01b8, 0x01d0, 0x01e1, 0x01ee, 0x01fb, 0x0206, 0x020b, - 0x0212, 0x0218, 0x0222, 0x0232, 0x023c, 0x0240, 0x024a, 0x0253, - 0x0263, 0x0267, 0x026f, 0x0279, 0x0289, 0x028f, 0x0296, 0x029e, - // Entry 40 - 7F - 0x02b4, 0x02ba, 0x02cb, 0x02d2, 0x02db, 0x02e2, 0x02f2, 0x02fb, - 0x0304, 0x030d, 0x0321, 0x032d, 0x0338, 0x033c, 0x034c, 0x0358, - 0x0365, 0x036e, 0x0373, 0x0387, 0x038e, 0x0396, 0x03a6, 0x03ac, - 0x03b0, 0x03b9, 0x03c5, 0x03cd, 0x03d5, 0x03de, 0x03f1, 0x03f9, - 0x0426, 0x042f, 0x0433, 0x0441, 0x0448, 0x045a, 0x0473, 0x047b, - 0x0485, 0x048a, 0x0493, 0x04a0, 0x04ab, 0x04b5, 0x04bd, 0x04c6, - 0x04cf, 0x04ff, 0x0503, 0x0509, 0x0513, 0x051b, 0x0520, 0x0529, - 0x0533, 0x053d, 0x0544, 0x054f, 0x0556, 0x055e, 0x056b, 0x057d, - // Entry 80 - BF - 0x058f, 0x059f, 0x05a6, 0x05b5, 0x05bf, 0x05c3, 0x05c8, 0x05d6, - 0x05e3, 0x05ed, 0x05f6, 0x05fc, 0x0601, 0x060d, 0x0615, 0x061c, - 0x0623, 0x0629, 0x0630, 0x063a, 0x0644, 0x064e, 0x065e, 0x0669, - 0x066d, 0x067c, 0x0686, 0x0696, 0x06b0, 0x06b9, 0x06c5, 0x06ce, - 0x06d3, 0x06dc, 0x06e5, 0x06eb, 0x06f2, 0x06fd, 0x0705, 0x070e, - 0x071f, 0x0724, 0x0731, 0x073a, 0x0743, 0x0750, 0x075a, 0x075f, - 0x0764, 0x0768, 0x0778, 0x077c, 0x0782, 0x0786, 0x079b, 0x07b1, - 0x07bc, 0x07c4, 0x07ca, 0x07de, 0x07ed, 0x07f8, 0x0810, 0x081c, - // Entry C0 - FF - 0x0821, 0x082a, 0x082f, 0x083f, 0x0849, 0x0852, 0x085a, 0x0862, - 0x0868, 0x0877, 0x0886, 0x0896, 0x089b, 0x08a4, 0x08ac, 0x08c3, - 0x08cd, 0x08e7, 0x08f1, 0x08fe, 0x0908, 0x090f, 0x0915, 0x091c, - 0x092a, 0x093e, 0x0946, 0x0951, 0x0958, 0x0961, 0x0972, 0x098a, - 0x098e, 0x09af, 0x09b3, 0x09bb, 0x09c6, 0x09cd, 0x09d8, 0x09e5, - 0x09ea, 0x09ef, 0x09f8, 0x0a0a, 0x0a10, 0x0a17, 0x0a21, 0x0a28, - 0x0a2e, 0x0a48, 0x0a64, 0x0a83, 0x0a8b, 0x0a96, 0x0a9d, 0x0ab8, - 0x0ac1, 0x0ad6, 0x0aee, 0x0af6, 0x0afd, 0x0b0d, 0x0b12, 0x0b18, - // Entry 100 - 13F - 0x0b1e, 0x0b26, 0x0b35, 0x0b3d, 0x0b45, 0x0b53, 0x0b5a, 0x0b60, - 0x0b72, 0x0b82, 0x0b8b, 0x0b9b, 0x0ba7, 0x0bb7, 0x0bc8, 0x0bd3, - 0x0bf0, 0x0bf7, 0x0c17, 0x0c26, 0x0c36, 0x0c45, 0x0c5e, 0x0c6f, - 0x0c7c, 0x0c87, 0x0c99, 0x0ca4, 0x0caa, 0x0cb5, 0x0cc5, 0x0ccd, - 0x0cdf, 0x0cf2, 0x0d04, 0x0d04, 0x0d13, - }, - }, - { // to - "Motu ʻAsenisiniʻAnitolaʻAlepea FakatahatahaʻAfikānisitaniAnitikua mo Pal" + - "aputaAnikuilaʻAlipaniaʻĀmeniaʻAngikolaʻAnitātikaʻAsenitinaHaʻamoa ʻA" + - "melikaʻAosituliaʻAositelēliaʻAlupaʻOtumotu ʻAlaniʻAsapaisaniPosinia " + - "mo HesikōvinaPāpeitosiPengilātesiPelesiumePekano FasoPulukaliaPalein" + - "iPulunitiPeniniSā PatēlemiPēmutaPuluneiPolīviaKalipiane fakahōlaniPa" + - "lāsiliPahamaPūtaniMotu PuvetiPotisiuanaPelalusiPeliseKānataʻOtumotu " + - "KokoKongo - KinisasaLepupelika ʻAfilika LotolotoKongo - PalasavilaSu" + - "isilaniMatafonua ʻAivolīʻOtumotu KukiSiliKameluniSiainaKolomipiaMotu" + - " KilipatoniKosita LikaKiupaMuiʻi VēteKulasaoMotu KilisimasiSaipalesi" + - "SēkiaSiamaneTieko KāsiaSiputiTenimaʻakeTominikaLepupelika TominikaʻA" + - "lisiliaSiuta mo MelilaʻEkuetoaʻEsitōniaʻIsipiteSahala fakahihifoʻEli" + - "tuliaSipeiniʻĪtiōpiaʻEulope fakatahatahaʻEulope fekauʻaki-paʻangaFin" + - "ilaniFisiʻOtumotu FokulaniMikolonīsiaʻOtumotu FaloeFalanisēKaponiPil" + - "itāniaKelenatāSeōsiaKuiana fakafalanisēKuenisīKanaSipalālitāKulinila" + - "niKamipiaKiniKuatalupeʻEkueta KiniKalisiʻOtumotu Seōsia-tonga mo San" + - "iuisi-tongaKuatamalaKuamuKini-PisauKuianaHongi Kongi SAR SiainaʻOtum" + - "otu Heati mo MakitonaliHonitulasiKuloisiaHaitiHungakaliaʻOtumotu Kan" + - "eliʻInitonēsiaʻAealaniʻIsileliMotu ManiʻInitiaPotu fonua moana ʻInit" + - "ia fakapilitāniaʻIlaakiʻIlaaniʻAisilaniʻĪtaliSelusīSamaikaSoataneSia" + - "paniKeniāKīkisitaniKamipōtiaKilipasiKomolosiSā Kitisi mo NevisiKōlea" + - " tokelauKōlea tongaKueitiʻOtumotu KeimeniKasakitaniLauLepanoniSā Lūs" + - "iaLikitenisiteiniSīlangikāLaipeliaLesotoLituaniaLakisimipekiLativiaL" + - "īpiaMolokoMonakoMolotovaMonitenikaloSā Mātini (fakafalanisē)Matakas" + - "ikaʻOtumotu MāsoloMasetōniaMāliPemaMongokōliaMakau SAR SiainaʻOtumot" + - "u Maliana tokelauMātinikiMauliteniaMoʻungaselatiMalitaMaulitiusiMala" + - "tivisiMalauiMekisikouMalēsiaMosēmipikiNamipiaNiu KaletōniaNisiaMotu " + - "NōfolikiNaisiliaNikalakuaHōlaniNoauēNepaliNauluNiuēNuʻusilaʻOmaniPan" + - "amāPelūPolinisia fakafalanisēPapuaniukiniFilipainiPākisitaniPolaniSā" + - " Piea mo MikeloniʻOtumotu PitikeniPuēto LikoPotu PalesitainePotukali" + - "PalauPalakuaiKatāʻOsēnia mamaʻoLēunioniLomēniaSēpiaLūsiaLuanitāSaute" + - " ʻAlepeaʻOtumotu SolomoneʻOtumotu SeiseliSūteniSuēteniSingapoaSā Hel" + - "enaSilōveniaSivolopāti mo Sani MaieniSilōvakiaSiela LeoneSā MalinoSe" + - "nekaloSōmaliaSulinameSūtani fakatongaSao Tomē mo PilinisipeʻEle Sala" + - "vatoaSā Mātini (fakahōlani)SīliaSuasilaniTulisitani ta KunuhaʻOtumot" + - "u Tuki mo KaikosiSātiPotu fonua tonga fakafalanisēTokoTailaniTasikit" + - "aniTokelauTimoa hahakeTūkimenisitaniTunīsiaTongaToakeTilinitati mo T" + - "opakoTūvaluTaiuaniTenisāniaʻŪkalaʻineʻIukanitāʻOtumotu siʻi ʻo ʻAmel" + - "ikaʻŪ fonua fakatahatahaPuleʻanga fakatahataha ʻAmelikaʻUlukuaiʻUsip" + - "ekitaniKolo VatikaniSā Viniseni mo KulenatiniVenesuelaʻOtumotu Vilik" + - "ini fakapilitāniaʻOtumotu Vilikini fakaʻamelikaVietinamiVanuatuʻUvea" + - " mo FutunaHaʻamoaKōsovoIemeniMaioteʻAfilika tongaSemipiaSimipapueiPo" + - "tu fonua taʻeʻiloa pe halaMāmaniʻAfilikaʻAmelika tokelauʻAmelika ton" + - "gaʻOsēniaʻAfilika fakahihifoʻAmelika lotolotoʻAfilika fakahahakeʻAfi" + - "lika fakatokelauʻAfilika lotolotoʻAfilika fakatongaOngo ʻAmelikaʻAme" + - "lika fakatokelauKalipianeʻĒsia fakahahakeʻĒsia fakatongaʻĒsia fakato" + - "ngahahakeʻEulope fakatongaʻAositelēlēsiaMelanīsiaPotu fonua Mikolonī" + - "siaPolinīsiaʻĒsiaʻĒsia lotolotoʻĒsia fakahihifoʻEulopeʻEulope fakaha" + - "hakeʻEulope fakatokelauʻEulope fakahihifoʻAmelika fakalatina", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0019, 0x002e, 0x003e, 0x0052, 0x005a, 0x0064, - 0x006d, 0x0077, 0x0083, 0x008e, 0x00a0, 0x00ab, 0x00b9, 0x00c0, - 0x00d1, 0x00dd, 0x00f3, 0x00fd, 0x0109, 0x0112, 0x011d, 0x0126, - 0x012d, 0x0135, 0x013b, 0x0148, 0x014f, 0x0156, 0x015e, 0x0173, - 0x017c, 0x0182, 0x0189, 0x0194, 0x019e, 0x01a6, 0x01ac, 0x01b3, - 0x01c1, 0x01d1, 0x01ee, 0x0200, 0x0209, 0x021c, 0x022a, 0x022e, - 0x0236, 0x023c, 0x0245, 0x0254, 0x025f, 0x0264, 0x0270, 0x0277, - 0x0286, 0x028f, 0x0295, 0x029c, 0x02a8, 0x02ae, 0x02b9, 0x02c1, - // Entry 40 - 7F - 0x02d4, 0x02de, 0x02ed, 0x02f6, 0x0301, 0x030a, 0x031b, 0x0325, - 0x032c, 0x0337, 0x034c, 0x0368, 0x0370, 0x0374, 0x0386, 0x0392, - 0x03a1, 0x03aa, 0x03b0, 0x03ba, 0x03c3, 0x03ca, 0x03de, 0x03e6, - 0x03ea, 0x03f6, 0x0400, 0x0407, 0x040b, 0x0414, 0x0421, 0x0427, - 0x0450, 0x0459, 0x045e, 0x0468, 0x046e, 0x0484, 0x04a1, 0x04ab, - 0x04b3, 0x04b8, 0x04c2, 0x04d2, 0x04df, 0x04e8, 0x04f1, 0x04fa, - 0x0502, 0x052a, 0x0532, 0x053a, 0x0544, 0x054c, 0x0553, 0x055a, - 0x0561, 0x0568, 0x056e, 0x0579, 0x0583, 0x058b, 0x0593, 0x05a7, - // Entry 80 - BF - 0x05b5, 0x05c1, 0x05c7, 0x05d8, 0x05e2, 0x05e5, 0x05ed, 0x05f7, - 0x0606, 0x0611, 0x0619, 0x061f, 0x0627, 0x0633, 0x063a, 0x0640, - 0x0646, 0x064c, 0x0654, 0x0660, 0x067b, 0x0685, 0x0696, 0x06a0, - 0x06a5, 0x06a9, 0x06b4, 0x06c4, 0x06dd, 0x06e6, 0x06f0, 0x06fe, - 0x0704, 0x070e, 0x0718, 0x071e, 0x0727, 0x072f, 0x073a, 0x0741, - 0x074f, 0x0754, 0x0762, 0x076a, 0x0773, 0x077a, 0x0780, 0x0786, - 0x078b, 0x0790, 0x0799, 0x07a0, 0x07a7, 0x07ac, 0x07c3, 0x07cf, - 0x07d8, 0x07e3, 0x07e9, 0x07fd, 0x080f, 0x081a, 0x082a, 0x0832, - // Entry C0 - FF - 0x0837, 0x083f, 0x0844, 0x0855, 0x085e, 0x0866, 0x086c, 0x0872, - 0x087a, 0x0888, 0x089a, 0x08ab, 0x08b2, 0x08ba, 0x08c2, 0x08cc, - 0x08d6, 0x08f0, 0x08fa, 0x0905, 0x090f, 0x0917, 0x091f, 0x0927, - 0x0938, 0x094f, 0x095e, 0x0977, 0x097d, 0x0986, 0x099a, 0x09b3, - 0x09b8, 0x09d6, 0x09da, 0x09e1, 0x09eb, 0x09f2, 0x09fe, 0x0a0d, - 0x0a15, 0x0a1a, 0x0a1f, 0x0a33, 0x0a3a, 0x0a41, 0x0a4b, 0x0a58, - 0x0a63, 0x0a80, 0x0a97, 0x0ab8, 0x0ac1, 0x0ace, 0x0adb, 0x0af5, - 0x0afe, 0x0b1f, 0x0b3f, 0x0b48, 0x0b4f, 0x0b5f, 0x0b67, 0x0b6e, - // Entry 100 - 13F - 0x0b74, 0x0b7a, 0x0b89, 0x0b90, 0x0b9a, 0x0bb8, 0x0bbf, 0x0bc8, - 0x0bd9, 0x0be8, 0x0bf1, 0x0c05, 0x0c17, 0x0c2b, 0x0c40, 0x0c52, - 0x0c65, 0x0c73, 0x0c88, 0x0c91, 0x0ca3, 0x0cb4, 0x0ccb, 0x0cdd, - 0x0cee, 0x0cf8, 0x0d0f, 0x0d19, 0x0d20, 0x0d30, 0x0d42, 0x0d4a, - 0x0d5d, 0x0d71, 0x0d84, 0x0d84, 0x0d98, - }, - }, - { // tr - trRegionStr, - trRegionIdx, - }, - { // tt - "АндорраБерләшкән Гарәп ӘмирлекләреӘфганстанАнтигуа һәм БарбудаАнгильяАлб" + - "анияӘрмәнстанАнголаАнтарктикаАргентинаАмерика СамоасыАвстрияАвстрал" + - "ияАрубаАланд утрауларыӘзәрбайҗанБосния һәм ГерцеговинаБарбадосБангл" + - "адешБельгияБуркина-ФасоБолгарияБәхрәйнБурундиБенинСен-БартельмиБерм" + - "уд утрауларыБрунейБоливияБразилияБагам утрауларыБутанБуве утравыБот" + - "сванаБеларусьБелизКанадаКокос (Килинг) утрауларыҮзәк Африка Республ" + - "икасыШвейцарияКот-д’ИвуарКук утрауларыЧилиКамерунКытайКолумбияКоста" + - "-РикаКубаКабо-ВердеКюрасаоРаштуа утравыКипрЧехия РеспубликасыГермани" + - "яҖибүтиДанияДоминикаДоминикана РеспубликасыАлжирЭквадорЭстонияМисыр" + - "ЭритреяИспанияЭфиопияФинляндияФиджиФолкленд утрауларыМикронезияФаре" + - "р утрауларыФранцияГабонБөекбританияГренадаГрузияФранцуз ГвианасыГер" + - "нсиГанаГибралтарГренландияГамбияГвинеяГваделупаЭкваториаль ГвинеяГр" + - "ецияКөньяк Георгия һәм Көньяк Сандвич утрауларыГватемалаГуамГвинея-" + - "БисауГайанаГонконг Махсус Идарәле ТөбәгеХерд утравы һәм Макдональд " + - "утрауларыГондурасХорватияГаитиВенгрияИндонезияИрландияИзраильМэн ут" + - "равыИндияБританиянең Һинд Океанындагы ТерриториясеГыйракИранИсланди" + - "яИталияДжерсиЯмайкаИорданияЯпонияКенияКыргызстанКамбоджаКирибатиКом" + - "ор утрауларыСент-Китс һәм НевисТөньяк КореяКүвәйтКайман утрауларыКа" + - "захстанЛаосЛиванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиберияЛесотоЛитваЛюк" + - "сембургЛатвияЛивияМароккоМонакоМолдоваЧерногорияСент-МартинМадагаск" + - "арМаршалл утрауларыМалиМонголияМакао Махсус Идарәле ТөбәгеТөньяк Ма" + - "риана утрауларыМартиникаМавританияМонтсерратМальтаМаврикийМальдив у" + - "трауларыМалавиМексикаМалайзияМозамбикНамибияЯңа КаледонияНигерНорфо" + - "лк утравыНигерияНикарагуаНидерландНорвегияНепалНауруНиуэЯңа Зеланди" + - "яОманПанамаПеруФранцуз ПолинезиясеПапуа - Яңа ГвинеяФилиппинПакиста" + - "нПольшаСен-Пьер һәм МикелонПиткэрн утрауларыПуэрто-РикоПортугалияПа" + - "лауПарагвайКатарРеюньонРумынияСербияРоссияРуандаСогуд ГарәбстаныСөл" + - "әйман утрауларыСейшел утрауларыСуданШвецияСингапурСловенияШпицберге" + - "н һәм Ян-МайенСловакияСьерра-ЛеонеСан-МариноСенегалСомалиСуринамКөн" + - "ьяк СуданСан-Томе һәм ПринсипиСальвадорСинт-МартенСүрияСвазилендТер" + - "кс һәм Кайкос утрауларыЧадФранциянең Көньяк ТерриторияләреТогоТайла" + - "ндТаҗикстанТокелауТимор-ЛестеТөркмәнстанТунисТонгаТөркияТринидад һә" + - "м ТобагоТувалуТайваньТанзанияУкраинаУгандаАКШ Кече Читтәге утраулар" + - "ыАКШУругвайҮзбәкстанСент-Винсент һәм ГренадинВенесуэлаБритания Вирг" + - "ин утрауларыАКШ Виргин утрауларыВьетнамВануатуУоллис һәм ФутунаСамо" + - "аКосовоЙәмәнМайоттаКөньяк АфрикаЗамбияЗимбабвебилгесез төбәк", - []uint16{ // 262 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000e, 0x0042, 0x0054, 0x0078, 0x0086, 0x0094, - 0x00a6, 0x00b2, 0x00c6, 0x00d8, 0x00f5, 0x0103, 0x0115, 0x011f, - 0x013c, 0x0150, 0x017a, 0x018a, 0x019c, 0x01aa, 0x01c1, 0x01d1, - 0x01df, 0x01ed, 0x01f7, 0x0210, 0x022f, 0x023b, 0x0249, 0x0249, - 0x0259, 0x0276, 0x0280, 0x0295, 0x02a5, 0x02b5, 0x02bf, 0x02cb, - 0x02f7, 0x02f7, 0x0325, 0x0325, 0x0337, 0x034d, 0x0366, 0x036e, - 0x037c, 0x0386, 0x0396, 0x0396, 0x03a9, 0x03b1, 0x03c4, 0x03d2, - 0x03eb, 0x03f3, 0x0416, 0x0426, 0x0426, 0x0432, 0x043c, 0x044c, - // Entry 40 - 7F - 0x0479, 0x0483, 0x0483, 0x0491, 0x049f, 0x04a9, 0x04a9, 0x04b7, - 0x04c5, 0x04d3, 0x04d3, 0x04d3, 0x04e5, 0x04ef, 0x0512, 0x0526, - 0x0543, 0x0551, 0x055b, 0x0573, 0x0581, 0x058d, 0x05ac, 0x05b8, - 0x05c0, 0x05d2, 0x05e6, 0x05f2, 0x05fe, 0x0610, 0x0633, 0x063f, - 0x0690, 0x06a2, 0x06aa, 0x06c1, 0x06cd, 0x0704, 0x0748, 0x0758, - 0x0768, 0x0772, 0x0780, 0x0780, 0x0792, 0x07a2, 0x07b0, 0x07c3, - 0x07cd, 0x081c, 0x0828, 0x0830, 0x0840, 0x084c, 0x0858, 0x0864, - 0x0874, 0x0880, 0x088a, 0x089e, 0x08ae, 0x08be, 0x08db, 0x08fe, - // Entry 80 - BF - 0x0915, 0x0915, 0x0921, 0x0940, 0x0952, 0x095a, 0x0964, 0x0977, - 0x098d, 0x099e, 0x09ac, 0x09b8, 0x09c2, 0x09d6, 0x09e2, 0x09ec, - 0x09fa, 0x0a06, 0x0a14, 0x0a28, 0x0a3d, 0x0a51, 0x0a72, 0x0a72, - 0x0a7a, 0x0a7a, 0x0a8a, 0x0abd, 0x0aeb, 0x0afd, 0x0b11, 0x0b25, - 0x0b31, 0x0b41, 0x0b62, 0x0b6e, 0x0b7c, 0x0b8c, 0x0b9c, 0x0baa, - 0x0bc3, 0x0bcd, 0x0be8, 0x0bf6, 0x0c08, 0x0c1a, 0x0c2a, 0x0c34, - 0x0c3e, 0x0c46, 0x0c5d, 0x0c65, 0x0c71, 0x0c79, 0x0c9e, 0x0cbe, - 0x0cce, 0x0cde, 0x0cea, 0x0d0f, 0x0d30, 0x0d45, 0x0d45, 0x0d59, - // Entry C0 - FF - 0x0d63, 0x0d73, 0x0d7d, 0x0d7d, 0x0d8b, 0x0d99, 0x0da5, 0x0db1, - 0x0dbd, 0x0ddc, 0x0dff, 0x0e1e, 0x0e28, 0x0e34, 0x0e44, 0x0e44, - 0x0e54, 0x0e7f, 0x0e8f, 0x0ea6, 0x0eb9, 0x0ec7, 0x0ed3, 0x0ee1, - 0x0ef8, 0x0f1f, 0x0f31, 0x0f46, 0x0f50, 0x0f62, 0x0f62, 0x0f93, - 0x0f99, 0x0fd7, 0x0fdf, 0x0fed, 0x0fff, 0x100d, 0x1022, 0x1038, - 0x1042, 0x104c, 0x1058, 0x107c, 0x1088, 0x1096, 0x10a6, 0x10b4, - 0x10c0, 0x10f1, 0x10f1, 0x10f7, 0x1105, 0x1117, 0x1117, 0x1146, - 0x1158, 0x1188, 0x11ae, 0x11bc, 0x11ca, 0x11ea, 0x11f4, 0x1200, - // Entry 100 - 13F - 0x120a, 0x1218, 0x1231, 0x123d, 0x124d, 0x1268, - }, - }, - { // twq - "AndooraLaaraw Imaarawey MarganteyAfgaanistanAntigua nda BarbuudaAngiiyaA" + - "lbaaniArmeeniAngoolaArgentineAmeriki SamoaOtrišiOstraaliAruubaAzerba" + - "ayijaŋBosni nda HerzegovineBarbaadosBangladešiBelgiikiBurkina fasoBu" + - "lgaariBahareenBurundiBeniŋBermudaBruuneeBooliviBreezilBahamasBuutaŋB" + - "otswaanaBilorišiBeliiziKanaadaKongoo demookaratiki labooCentraafriki" + - " koyraKongooSwisuKudwarKuuk gungeyŠiiliKameruunŠiinKolombiKosta rika" + - "KuubaKapuver gungeyŠiipurCek laboAlmaaɲeJibuutiDanemarkDoominikiDoom" + - "iniki labooAlžeeriEkwateerEstooniMisraEritreeEspaaɲeEcioopiFinlanduF" + - "ijiKalkan gungeyMikroneziFaransiGaabonAlbaasalaama MargantaGrenaadaG" + - "orgiFaransi GuyaanGaanaGibraltarGrinlandGambiGineGwadeluupGinee Ekwa" + - "torialGreeceGwatemaalaGuamGine-BissoGuyaaneHondurasKrwaasiHaitiHunga" + - "ariIndoneeziIrlanduIsrayelIndu labooBritiši Indu teekoo laamaIraakIr" + - "aanAyselandItaaliJamaayikUrdunJaapoŋKeeniyaKyrgyzstankamboogiKiribaa" + - "tiKomoorSeŋ Kitts nda NevisKooree, GurmaKooree, HawsaKuweetKayman gu" + - "ngeyKaazakstanLaawosLubnaanSeŋ LussiaLiechtensteinSrilankaLiberiaLee" + - "sotoLituaaniLuxembourgLetooniLiibiMaarokMonakoMoldoviMadagascarMarša" + - "l gungeyMaacedooniMaaliMaynamarMongooliMariana Gurma GungeyMartiniik" + - "iMooritaaniMontserratMaltaMooris gungeyMaldiivuMalaawiMexikiMaleeziM" + - "ozambikNaamibiKaaledooni TaagaaNižerNorfolk GungooNaajiriiaNikaragwa" + - "HollanduNorveejNeepalNauruNiueZeelandu TaagaOmaanPanamaPeeruFaransi " + - "PolineeziPapua Ginee TaagaFilipinePaakistanPoloɲeSeŋ Piyer nda Mikel" + - "onPitikarinPorto RikoPalestine Dangay nda GaazaPortugaalPaluParaguwe" + - "yKataarReenioŋRumaaniIriši labooRwandaSaudiyaSolomon GungeySeešelSuu" + - "daŋSweedeSingapurSeŋ HelenaSloveeniSlovaakiSeera LeonSan MarinoSeneg" + - "alSomaaliSurinaamSao Tome nda PrinsipeSalvador labooSuuriaSwazilandT" + - "urk nda Kayikos GungeyCaaduTogoTaayilandTaažikistanTokelauTimoor haw" + - "saTurkmenistaŋTuniziTongaTurkiTrinidad nda TobaagoTuvaluTaayiwanTanz" + - "aaniUkreenUgandaAmeriki Laabu MarganteyUruguweyUzbeekistanVaatikan L" + - "aamaSeŋvinsaŋ nda GrenadineVeneezuyeelaBritiši Virgin gungeyAmeerik " + - "Virgin GungeyVietnaamVanautuWallis nda FutunaSamoaYamanMayootiHawsa " + - "Afriki LabooZambiZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0007, 0x0021, 0x002c, 0x0040, 0x0047, 0x004e, - 0x0055, 0x005c, 0x005c, 0x0065, 0x0072, 0x0079, 0x0081, 0x0087, - 0x0087, 0x0094, 0x00a9, 0x00b2, 0x00bd, 0x00c5, 0x00d1, 0x00d9, - 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f5, 0x00fc, 0x0103, 0x0103, - 0x010a, 0x0111, 0x0118, 0x0118, 0x0121, 0x012a, 0x0131, 0x0138, - 0x0138, 0x0152, 0x0164, 0x016a, 0x016f, 0x0175, 0x0180, 0x0186, - 0x018e, 0x0193, 0x019a, 0x019a, 0x01a4, 0x01a9, 0x01b7, 0x01b7, - 0x01b7, 0x01be, 0x01c6, 0x01ce, 0x01ce, 0x01d5, 0x01dd, 0x01e6, - // Entry 40 - 7F - 0x01f5, 0x01fd, 0x01fd, 0x0205, 0x020c, 0x0211, 0x0211, 0x0218, - 0x0220, 0x0227, 0x0227, 0x0227, 0x022f, 0x0233, 0x0240, 0x0249, - 0x0249, 0x0250, 0x0256, 0x026b, 0x0273, 0x0278, 0x0286, 0x0286, - 0x028b, 0x0294, 0x029c, 0x02a1, 0x02a5, 0x02ae, 0x02be, 0x02c4, - 0x02c4, 0x02ce, 0x02d2, 0x02dc, 0x02e3, 0x02e3, 0x02e3, 0x02eb, - 0x02f2, 0x02f7, 0x02ff, 0x02ff, 0x0308, 0x030f, 0x0316, 0x0316, - 0x0320, 0x033a, 0x033f, 0x0344, 0x034c, 0x0352, 0x0352, 0x035a, - 0x035f, 0x0366, 0x036d, 0x0377, 0x037f, 0x0388, 0x038e, 0x03a2, - // Entry 80 - BF - 0x03af, 0x03bc, 0x03c2, 0x03cf, 0x03d9, 0x03df, 0x03e6, 0x03f1, - 0x03fe, 0x0406, 0x040d, 0x0414, 0x041c, 0x0426, 0x042d, 0x0432, - 0x0438, 0x043e, 0x0445, 0x0445, 0x0445, 0x044f, 0x045d, 0x0467, - 0x046c, 0x0474, 0x047c, 0x047c, 0x0490, 0x049a, 0x04a4, 0x04ae, - 0x04b3, 0x04c0, 0x04c8, 0x04cf, 0x04d5, 0x04dc, 0x04e4, 0x04eb, - 0x04fc, 0x0502, 0x0510, 0x0519, 0x0522, 0x052a, 0x0531, 0x0537, - 0x053c, 0x0540, 0x054e, 0x0553, 0x0559, 0x055e, 0x056f, 0x0580, - 0x0588, 0x0591, 0x0598, 0x05ae, 0x05b7, 0x05c1, 0x05db, 0x05e4, - // Entry C0 - FF - 0x05e8, 0x05f1, 0x05f7, 0x05f7, 0x05ff, 0x0606, 0x0606, 0x0612, - 0x0618, 0x061f, 0x062d, 0x0634, 0x063b, 0x0641, 0x0649, 0x0654, - 0x065c, 0x065c, 0x0664, 0x066e, 0x0678, 0x067f, 0x0686, 0x068e, - 0x068e, 0x06a3, 0x06b1, 0x06b1, 0x06b7, 0x06c0, 0x06c0, 0x06d7, - 0x06dc, 0x06dc, 0x06e0, 0x06e9, 0x06f5, 0x06fc, 0x0708, 0x0715, - 0x071b, 0x0720, 0x0725, 0x0739, 0x073f, 0x0747, 0x074f, 0x0755, - 0x075b, 0x075b, 0x075b, 0x0772, 0x077a, 0x0785, 0x0793, 0x07ac, - 0x07b8, 0x07ce, 0x07e3, 0x07eb, 0x07f2, 0x0803, 0x0808, 0x0808, - // Entry 100 - 13F - 0x080d, 0x0814, 0x0826, 0x082b, 0x0833, - }, - }, - { // tzm - "AnḍurraImarat Tiεrabin TidduklinAfɣanistanAntigwa d BarbudaAngwillaAlban" + - "yaArminyaAngulaArjuntinSamwa ImirikaniyyinUstriyyaUsṭralyaArubaAzerb" + - "iǧanBusna-d-HirsikBarbadusBangladicBeljikaBurkina FasuBelɣaryaBaḥray" + - "nBurundiBininBirmudaBrunayBulivyaBṛazilBahamasBuṭanButswanaBilarusya" + - "BilizKanadaTagduda Tadimuqraṭit n KunguTagduda n Afrika WammasKunguS" + - "wisraTaɣazut n UszerTigzirin n KukCciliKamerunṢṣinKulumbyaKusṭa Rika" + - "kubaTigzirin n Iɣf UzegzawQubrusTagduda n ČikAlmanyaǦibutiDanmarkḌum" + - "inikaTagduda n ḌuminikanDzayerIkwaḍurIsṭunyaMiṣrIritryaSbanyaItyupya" + - "FinlanḍaFijiTigzirin n FalklandMikrunizyaFṛansaGabunTagelda Taddukel" + - "tGrinadaJyurjyaGuyana TafransistƔanaJibralṭarGrinlanḍaGambyaƔinyaGwa" + - "dalupƔinya Tikwaṭur itYunanGwatimalaGwamƔinya-BissawGuyanaHindurasKr" + - "watyaHaytiHenɣaryaIndunizyaIrlanḍaIsraeilHindAmur n Agaraw Uhindi Ub" + - "ṛiṭaniƐiraqIranIslanḍaIṭalyaJamaykaUrḍunJjappunKinyaKirɣistanKambu" + - "djKiribatiQumurSantekits d NivisKurya TugafatKurya TunẓultKuwwaytTig" + - "zirin n KaymanKazaxistanLawsLubnanSantelusyaLictencṭaynSrilankaLibir" + - "yaLisuṭuLitwanyaLiksumburgLiṭṭunyaLibyaMeṛṛukMunakuMulḍavyaMadaɣacqa" + - "rTigzirin n MarcalMaqdunyaMaliMyanmarManɣulyaTigzirin n Maryana Tuga" + - "fatMartinikMuritanyaMuntsirraMalṭaMurisMaldivMalawiMiksikMalizyaMuza" + - "mbiqNamibyakalidunya TamaynutNnijerTigzirt NurfulkNijiriaNikaragwaHu" + - "lanḍaNnurwijNippalNawruNiwiZilanḍa TamaynutƐummanPanamaPiruPulinizya" + - " TafransistPapwa Ɣinya TamaynutFilippinPakistanPulunyaSantepyir d Mi" + - "kelunPitkirnPurturikuAgemmaḍ Ugut d Ɣazza IfilisṭiniyenPurtuɣalPaluP" + - "aragwayQaṭarRiyyunyunṚumanyaRusyaRuwwanḍaSsaεudiyya TaεrabtTigzirin " + - "n SalumunSsicilSsudanSsewwidSanɣafuraSantehilinSluvinyaSluvakyaSiral" + - "yunSanmarinuSsiniɣalṢṣumalSurinamSawṭumi d PrinsipSalvaḍurSuryaSwazi" + - "lanḍaTigzirin Turkiyyin d TikaykusinTcadṬṭuguṬaylanḍaṬaǧikistanTuklu" + - "Timur TagmuṭTurkmanistanTunesṬungaTurkyaTrinidad d ṬubaguṬuvaluṬaywa" + - "nṬanzanyaUkranyaUɣandaIwunak Idduklen n AmirikaUrugwayUzbakistanAwan" + - "k iɣrem n VatikanSantevinsent d GrinadinVinzwillaTigzirin (Virgin) T" + - "ibṛiṭaniyinTigzirin n Virjin n Iwunak YedduklenViṭnamVanwatuWalis d " + - "FutunaSamwaYamanMayuṭTafrikt TunẓulZambyaZimbabwi", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0009, 0x0023, 0x002e, 0x003f, 0x0047, 0x004e, - 0x0055, 0x005b, 0x005b, 0x0063, 0x0076, 0x007e, 0x0088, 0x008d, - 0x008d, 0x0097, 0x00a5, 0x00ad, 0x00b6, 0x00bd, 0x00c9, 0x00d2, - 0x00db, 0x00e2, 0x00e7, 0x00e7, 0x00ee, 0x00f4, 0x00fb, 0x00fb, - 0x0103, 0x010a, 0x0111, 0x0111, 0x0119, 0x0122, 0x0127, 0x012d, - 0x012d, 0x014b, 0x0162, 0x0167, 0x016d, 0x017d, 0x018b, 0x0190, - 0x0197, 0x019f, 0x01a7, 0x01a7, 0x01b3, 0x01b7, 0x01ce, 0x01ce, - 0x01ce, 0x01d4, 0x01e2, 0x01e9, 0x01e9, 0x01f0, 0x01f7, 0x0201, - // Entry 40 - 7F - 0x0216, 0x021c, 0x021c, 0x0225, 0x022e, 0x0234, 0x0234, 0x023b, - 0x0241, 0x0248, 0x0248, 0x0248, 0x0252, 0x0256, 0x0269, 0x0273, - 0x0273, 0x027b, 0x0280, 0x0291, 0x0298, 0x029f, 0x02b0, 0x02b0, - 0x02b5, 0x02c0, 0x02cb, 0x02d1, 0x02d7, 0x02df, 0x02f3, 0x02f8, - 0x02f8, 0x0301, 0x0305, 0x0312, 0x0318, 0x0318, 0x0318, 0x0320, - 0x0327, 0x032c, 0x0335, 0x0335, 0x033e, 0x0347, 0x034e, 0x034e, - 0x0352, 0x0373, 0x0379, 0x037d, 0x0386, 0x038e, 0x038e, 0x0395, - 0x039c, 0x03a3, 0x03a8, 0x03b2, 0x03b9, 0x03c1, 0x03c6, 0x03d7, - // Entry 80 - BF - 0x03e4, 0x03f3, 0x03fa, 0x040b, 0x0415, 0x0419, 0x041f, 0x0429, - 0x0436, 0x043e, 0x0445, 0x044d, 0x0455, 0x045f, 0x046b, 0x0470, - 0x047a, 0x0480, 0x048a, 0x048a, 0x048a, 0x0495, 0x04a6, 0x04ae, - 0x04b2, 0x04b9, 0x04c2, 0x04c2, 0x04dc, 0x04e4, 0x04ed, 0x04f6, - 0x04fd, 0x0502, 0x0508, 0x050e, 0x0514, 0x051b, 0x0523, 0x052a, - 0x053c, 0x0542, 0x0551, 0x0558, 0x0561, 0x056a, 0x0571, 0x0577, - 0x057c, 0x0580, 0x0592, 0x0599, 0x059f, 0x05a3, 0x05b7, 0x05cc, - 0x05d4, 0x05dc, 0x05e3, 0x05f6, 0x05fd, 0x0606, 0x062d, 0x0636, - // Entry C0 - FF - 0x063a, 0x0642, 0x0649, 0x0649, 0x0652, 0x065b, 0x065b, 0x0660, - 0x066a, 0x067e, 0x0690, 0x0696, 0x069c, 0x06a3, 0x06ad, 0x06b7, - 0x06bf, 0x06bf, 0x06c7, 0x06cf, 0x06d8, 0x06e1, 0x06eb, 0x06f2, - 0x06f2, 0x0705, 0x070f, 0x070f, 0x0714, 0x0720, 0x0720, 0x073f, - 0x0743, 0x0743, 0x074c, 0x0758, 0x0765, 0x076a, 0x0778, 0x0784, - 0x0789, 0x0790, 0x0796, 0x07a9, 0x07b1, 0x07b9, 0x07c3, 0x07ca, - 0x07d1, 0x07d1, 0x07d1, 0x07ea, 0x07f1, 0x07fb, 0x0811, 0x0828, - 0x0831, 0x0853, 0x0877, 0x087f, 0x0886, 0x0894, 0x0899, 0x0899, - // Entry 100 - 13F - 0x089e, 0x08a5, 0x08b5, 0x08bb, 0x08c3, - }, - }, - { // ug - "ئاسسېنسىيون ئارىلىئاندوررائەرەب بىرلەشمە خەلىپىلىكىئافغانىستانئانتىگۇئا " + - "ۋە باربۇدائانگۋىللائالبانىيەئەرمېنىيەئانگولائانتاركتىكائارگېنتىنائا" + - "مېرىكا ساموئائاۋىستىرىيەئاۋسترالىيەئارۇبائالاند ئاراللىرىئەزەربەيجا" + - "نبوسىنىيە ۋە گېرتسېگوۋىناباربادوسبېنگالبېلگىيەبۇركىنا فاسوبۇلغارىيە" + - "بەھرەينبۇرۇندىبېنىنساينت بارتېلېمىبېرمۇدابىرۇنېيبولىۋىيەكارىب دېڭىز" + - "ى گوللاندىيەبىرازىلىيەباھامابۇتانبوۋېت ئارىلىبوتسۋانابېلارۇسىيەبېلى" + - "زكاناداكوكوس (كىلىڭ) ئاراللىرىكونگو - كىنشاسائوتتۇرا ئافرىقا جۇمھۇر" + - "ىيىتىكونگو - بىراززاۋىلشىۋېتسارىيەكوتې دې ئىۋوئىركۇك ئاراللىرىچىلىك" + - "امېرونجۇڭگوكولومبىيەكىلىپپېرتون ئاراللىرىكوستارىكاكۇبايېشىل تۇمشۇقك" + - "ۇراچاۋمىلاد ئارىلىسىپرۇسچېخ جۇمھۇرىيىتىگېرمانىيەدېگو-گارشىياجىبۇتىد" + - "انىيەدومىنىكادومىنىكا جۇمھۇرىيىتىئالجىرىيەسېيتا ۋە مېلىلائېكۋاتورئې" + - "ستونىيەمىسىرغەربىي ساخارائېرىترىيەئىسپانىيەئېفىيوپىيەياۋروپا ئىتتىپ" + - "اقىفىنلاندىيەفىجىفالكلاند ئاراللىرىمىكرونېزىيەفارو ئاراللىرىفىرانسى" + - "يەگابونبىرلەشمە پادىشاھلىقگىرېناداگىرۇزىيەفىرانسىيەگە قاراشلىق گىۋى" + - "ياناگۇرنسېيگاناجەبىلتارىقگىرېنلاندىيەگامبىيەگىۋىنىيەگىۋادېلۇپئېكۋات" + - "ور گىۋىنىيەسىگىرېتسىيەجەنۇبىي جورجىيە ۋە جەنۇبىي ساندۋىچ ئاراللىرىگ" + - "ىۋاتېمالاگۇئامگىۋىنىيە بىسسائۇگىۋىياناشياڭگاڭ ئالاھىدە مەمۇرىي رايو" + - "نى (جۇڭگو)ھېرد ئارىلى ۋە ماكدونالد ئاراللىرىھوندۇراسكىرودىيەھايتىۋې" + - "نگىرىيەكانارى ئاراللىرىھىندونېزىيەئىرېلاندىيەئىسرائىلىيەمان ئارىلىھ" + - "ىندىستانئەنگلىيەگە قاراشلىق ھىندى ئوكيان تېررىتورىيەسىئىراقئىرانئىس" + - "لاندىيەئىتالىيەجېرسېييامايكائىيوردانىيەياپونىيەكېنىيەقىرغىزىستانكام" + - "بودژاكىرىباتىكوموروساينت كىتىس ۋە نېۋىسچاۋشيەنكورېيەكۇۋەيتكايمان ئا" + - "راللىرىقازاقىستانلائوسلىۋانساينت لۇسىيەلىكتېنستېينسىرىلانكالىبېرىيە" + - "لېسوتولىتۋانىيەلىيۇكسېمبۇرگلاتۋىيەلىۋىيەماراكەشموناكومولدوۋاقارا تا" + - "غساينت مارتىنماداغاسقارمارشال ئاراللىرىماكېدونىيەمالىبىرماموڭغۇلىيە" + - "ئاۋمېن ئالاھىدە مەمۇرىي رايونىشىمالىي مارىيانا ئاراللىرىمارتىنىكاما" + - "ۋرىتانىيەمونتسېرراتمالتاماۋرىتىيۇسمالدىۋېمالاۋىمېكسىكامالايسىياموزا" + - "مبىكنامىبىيەيېڭى كالېدونىيەنىگېرنورفولك ئارىلىنىگېرىيەنىكاراگۇئاگول" + - "لاندىيەنورۋېگىيەنېپالناۋرۇنيۇئېيېڭى زېلاندىيەئومانپاناماپېرۇفىرانسى" + - "يەگە قاراشلىق پولىنېزىيەپاپۇئا يېڭى گىۋىنىيەسىفىلىپپىنپاكىستانپولشا" + - "ساينت پىيېر ۋە مىكېلون ئاراللىرىپىتكايرن ئاراللىرىپۇئېرتو رىكوپەلەس" + - "تىن زېمىنىپورتۇگالىيەپالائۇپاراگۋايقاتارئوكيانىيە ئەتراپىدىكى ئارال" + - "لاررېيۇنىيونرومىنىيەسېربىيەرۇسىيەرىۋانداسەئۇدىي ئەرەبىستانسولومون ئ" + - "اراللىرىسېيشېلسۇدانشىۋېتسىيەسىنگاپورساينىت ھېلېناسىلوۋېنىيەسىۋالبار" + - "د ۋە يان مايېنسىلوۋاكىيەسېررالېئونسان مارىنوسېنېگالسومالىسۇرىنامجەن" + - "ۇبىي سۇدانسان تومې ۋە پرىنسىپېسالۋادورسىنت مارتېنسۇرىيەسىۋېزىلاندتر" + - "ىستان داكۇنھاتۇركس ۋە كايكوس ئاراللىرىچادفىرانسىيەنىڭ جەنۇبىي زېمىن" + - "ىتوگوتايلاندتاجىكىستانتوكېلاۋشەرقىي تىمورتۈركمەنىستانتۇنىستونگاتۈرك" + - "ىيەتىرىنىداد ۋە توباگوتۇۋالۇتەيۋەنتانزانىيەئۇكرائىنائۇگاندائا ق ش ت" + - "اشقى ئاراللىرىئامېرىكا قوشما ئىشتاتلىرىئۇرۇگۋايئۆزبېكىستانۋاتىكانسا" + - "ينت ۋىنسېنت ۋە گىرېنادىنېسۋېنېسۇئېلائەنگلىيە ۋىرگىن ئاراللىرىئا ق ش" + - " ۋىرگىن ئاراللىرىۋىيېتنامۋانۇئاتۇۋاللىس ۋە فۇتۇناساموئاكوسوۋويەمەنما" + - "يوتىجەنۇبىي ئافرىقازامبىيەزىمبابۋېيوچۇن جايدۇنيائافرىقاشىمالىي ئامې" + - "رىكاجەنۇبىي ئامېرىكائوكيانىيەغەربىي ئافرىقائوتتۇرا ئامېرىكاشەرقىي ئ" + - "افرىقاشىمالىي ئافرىقائوتتۇرا ئافرىقاجەنۇبىي ئافرىقا رايونىئامېرىكاش" + - "ىمالىي ئامېرىكا رايونىكارىب دېڭىزىشەرقىي ئاسىياجەنۇبىي ئاسىياشەرقىي" + - " جەنۇبىي ئاسىياجەنۇبىي ياۋروپائاۋسترالئاسىيامېلانېسىيەمىكرونېزىيە را" + - "يونىپولىنىزىيەئاسىيائوتتۇرا ئاسىياغەربىي ئاسىياياۋروپاشەرقىي ياۋروپ" + - "اشىمالىي ياۋروپاغەربىي ياۋروپالاتىن ئامېرىكا", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0023, 0x0033, 0x0063, 0x0079, 0x009f, 0x00b1, 0x00c3, - 0x00d5, 0x00e3, 0x00f9, 0x010d, 0x012a, 0x0140, 0x0156, 0x0162, - 0x0181, 0x0197, 0x01c5, 0x01d5, 0x01e1, 0x01ef, 0x0206, 0x0218, - 0x0226, 0x0234, 0x023e, 0x025b, 0x0269, 0x0277, 0x0287, 0x02b3, - 0x02c7, 0x02d3, 0x02dd, 0x02f4, 0x0304, 0x0318, 0x0322, 0x032e, - 0x0358, 0x0373, 0x03a7, 0x03c8, 0x03de, 0x03fa, 0x0413, 0x041b, - 0x0429, 0x0433, 0x0445, 0x046e, 0x0480, 0x0488, 0x049f, 0x04ad, - 0x04c4, 0x04d0, 0x04ed, 0x04ff, 0x0516, 0x0522, 0x052e, 0x053e, - // Entry 40 - 7F - 0x0565, 0x0577, 0x0593, 0x05a3, 0x05b5, 0x05bf, 0x05d8, 0x05ea, - 0x05fc, 0x0610, 0x0631, 0x0631, 0x0645, 0x064d, 0x0670, 0x0686, - 0x06a1, 0x06b3, 0x06bd, 0x06e2, 0x06f2, 0x0702, 0x073a, 0x0748, - 0x0750, 0x0764, 0x077c, 0x078a, 0x079a, 0x07ac, 0x07d1, 0x07e3, - 0x0836, 0x084a, 0x0854, 0x0873, 0x0883, 0x08cb, 0x090b, 0x091b, - 0x092b, 0x0935, 0x0947, 0x0966, 0x097c, 0x0992, 0x09a8, 0x09bb, - 0x09cd, 0x0a25, 0x0a2f, 0x0a39, 0x0a4d, 0x0a5d, 0x0a69, 0x0a77, - 0x0a8d, 0x0a9d, 0x0aa9, 0x0abf, 0x0acf, 0x0adf, 0x0aeb, 0x0b10, - // Entry 80 - BF - 0x0b1e, 0x0b2a, 0x0b36, 0x0b55, 0x0b69, 0x0b73, 0x0b7d, 0x0b94, - 0x0baa, 0x0bbc, 0x0bcc, 0x0bd8, 0x0bea, 0x0c02, 0x0c10, 0x0c1c, - 0x0c2a, 0x0c36, 0x0c44, 0x0c53, 0x0c6a, 0x0c7e, 0x0c9d, 0x0cb1, - 0x0cb9, 0x0cc3, 0x0cd5, 0x0d0e, 0x0d40, 0x0d52, 0x0d68, 0x0d7c, - 0x0d86, 0x0d9a, 0x0da8, 0x0db4, 0x0dc2, 0x0dd4, 0x0de4, 0x0df4, - 0x0e11, 0x0e1b, 0x0e36, 0x0e46, 0x0e5a, 0x0e6e, 0x0e80, 0x0e8a, - 0x0e94, 0x0e9e, 0x0eb9, 0x0ec3, 0x0ecf, 0x0ed7, 0x0f13, 0x0f3d, - 0x0f4d, 0x0f5d, 0x0f67, 0x0fa3, 0x0fc6, 0x0fdd, 0x0ffa, 0x1010, - // Entry C0 - FF - 0x101c, 0x102c, 0x1036, 0x1070, 0x1082, 0x1092, 0x10a0, 0x10ac, - 0x10ba, 0x10dd, 0x10fe, 0x110a, 0x1114, 0x1126, 0x1136, 0x114f, - 0x1163, 0x118c, 0x11a0, 0x11b4, 0x11c7, 0x11d5, 0x11e1, 0x11ef, - 0x1208, 0x122d, 0x123d, 0x1252, 0x125e, 0x1272, 0x128f, 0x12be, - 0x12c4, 0x12f8, 0x1300, 0x130e, 0x1322, 0x1330, 0x1347, 0x135f, - 0x1369, 0x1373, 0x1381, 0x13a5, 0x13b1, 0x13bd, 0x13cf, 0x13e1, - 0x13ef, 0x1417, 0x1417, 0x1447, 0x1457, 0x146d, 0x147b, 0x14b0, - 0x14c4, 0x14f4, 0x151e, 0x152e, 0x153e, 0x155c, 0x1568, 0x1574, - // Entry 100 - 13F - 0x157e, 0x158a, 0x15a7, 0x15b5, 0x15c5, 0x15d6, 0x15e0, 0x15ee, - 0x160d, 0x162c, 0x163e, 0x1659, 0x1678, 0x1693, 0x16b0, 0x16cd, - 0x16f7, 0x1707, 0x1733, 0x174a, 0x1763, 0x177e, 0x17a6, 0x17c3, - 0x17df, 0x17f3, 0x1816, 0x182a, 0x1836, 0x1851, 0x186a, 0x1878, - 0x1893, 0x18b0, 0x18cb, 0x18cb, 0x18e6, - }, - }, - { // uk - ukRegionStr, - ukRegionIdx, - }, - { // ur - urRegionStr, - urRegionIdx, - }, - { // ur-IN - "جزیرہ اسینشنجزائر آلینڈجزیرہ بوویتجزائر (کیلنگ) کوکوسجزائر ککجزیرہ کلپرٹ" + - "نڈیگو گارشیاجزائر فاکلینڈجزائر فیروفرانسیسی گیاناجزائر ہرڈ و مکڈونل" + - "ڈجزائر کناریبرطانوی بحرہند خطہجزائر مارشلجزائر شمالی ماریاناجزیرہ ن" + - "ارفوکجزائر پٹکیرنجزائر سلیمانترسٹان دا کونیاجزائر کیکس و ترکیہامریک" + - "ی بیرونی جزائربرطانوی جزائر ورجنامریکی جزائر ورجن", - []uint16{ // 251 elements - // Entry 0 - 3F - 0x0000, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, 0x002c, - 0x002c, 0x002c, 0x002c, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, - 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0063, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, - 0x0089, 0x0089, 0x0089, 0x0089, 0x009e, 0x009e, 0x009e, 0x009e, - // Entry 40 - 7F - 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, - 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x009e, 0x00b7, 0x00b7, - 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00ca, 0x00e5, 0x00e5, - 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, - 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x00e5, 0x0108, 0x0108, - 0x0108, 0x0108, 0x0108, 0x011d, 0x011d, 0x011d, 0x011d, 0x011d, - 0x011d, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - // Entry 80 - BF - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, - 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x013f, 0x0154, 0x0154, - 0x0154, 0x0154, 0x0154, 0x0154, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, - 0x0178, 0x0178, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, - 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, 0x018f, - 0x018f, 0x018f, 0x018f, 0x018f, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - // Entry C0 - FF - 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, 0x01a6, - 0x01a6, 0x01a6, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, - 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, - 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01bd, 0x01d9, 0x01fa, - 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, - 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, 0x01fa, - 0x01fa, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, 0x021e, - 0x021e, 0x0240, 0x0260, - }, - }, - { // uz - uzRegionStr, - uzRegionIdx, - }, - { // uz-Arab - "افغانستان", - []uint16{ // 5 elements - 0x0000, 0x0000, 0x0000, 0x0000, 0x0012, - }, - }, - { // uz-Cyrl - "Меърож оролиАндорраБирлашган Араб АмирликлариАфғонистонАнтигуа ва Барбуд" + - "аАнгильяАлбанияАрманистонАнголаАнтарктидаАргентинаАмерика СамоасиАв" + - "стрияАвстралияАрубаАланд ороллариОзарбайжонБосния ва ГерцеговинаБар" + - "бадосБангладешБельгияБуркина-ФасоБолгарияБаҳрайнБурундиБенинСен-Бар" + - "телемиБермудаБрунейБоливияБонейр, Синт-Эстатиус ва СабаБразилияБага" + - "ма ороллариБутанБуве оролиБотсваннаБеларусБелизКанадаКокос (Килинг)" + - " ороллариКонго-КиншасаМарказий Африка РеспубликасиКонго БраззавильШв" + - "ейцарияКот-д’ИвуарКук ороллариЧилиКамерунХитойКолумбияКлиппертон ор" + - "олиКоста-РикаКубаКабо-ВердеКюрасаоРождество оролиКипрЧехияГерманияД" + - "иего-ГарсияЖибутиДанияДоминикаДоминикан РеспубликасиЖазоирСэута ва " + - "МелиллаЭквадорЭстонияМисрҒарбий Саҳрои КабирЭритреяИспанияЭфиопияЕв" + - "ропа ИттифоқиФинляндияФижиФолкленд ороллариМикронезияФарер ороллари" + - "ФранцияГабонБуюк БританияГренадаГрузияФранцуз ГвианасиГернсиГанаГиб" + - "ралтарГренландияГамбияГвинеяГваделупеЭкваториал ГвинеяГрецияЖанубий" + - " Георгия ва Жанубий Сендвич ороллариГватемалаГуамГвинея-БисауГаянаГо" + - "нконг (Хитой ММҲ)Херд ва Макдоналд ороллариГондурасХорватияГаитиВен" + - "грияКанар ороллариИндонезияИрландияИсроилМэн оролиҲиндистонБритания" + - "нинг Ҳинд океанидаги ҳудудиИроқЭронИсландияИталияЖерсиЯмайкаИордани" + - "яЯпонияКенияҚирғизистонКамбоджаКирибатиКомор ороллариСент-Китс ва Н" + - "евисШимолий КореяЖанубий КореяҚувайтКайман ороллариҚозоғистонЛаосЛи" + - "ванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвия" + - "ЛивияМарокашМонакоМолдоваЧерногорияСент-МартинМадагаскарМаршал орол" + - "лариМакедонияМалиМьянма (Бирма)МонголияМакао (Хитой ММҲ)Шимолий Мар" + - "ианна ороллариМартиникаМавританияМонтсерратМальтаМаврикийМальдив ор" + - "оллариМалавиМексикаМалайзияМозамбикНамибияЯнги КаледонияНигерНорфол" + - "к ороллариНигерияНикарагуаНидерландияНорвегияНепалНауруНиуэЯнги Зел" + - "андияУммонПанамаПеруФранцуз ПолинезиясиПапуа - Янги ГвинеяФилиппинП" + - "окистонПольшаСент-Пьер ва МикелонПиткэрн ороллариПуэрто-РикоФаласти" + - "н ҳудудиПортугалияПалауПарагвайҚатарЁндош ОкеанияРеюнионРуминияСерб" + - "ияРоссияРуандаСаудия АрабистониСоломон ороллариСейшел ороллариСудан" + - "ШвецияСингапурМуқаддас Елена оролиСловенияСвалбард ва Ян-МайенСлова" + - "кияСьерра-ЛеонеСан-МариноСенегалСомалиСуринамЖанубий СуданСан-Томе " + - "ва ПринсипиСалвадорСинт-МартенСурияСвазилендТристан-да-КуняТуркс ва" + - " Кайкос ороллариЧадФранцуз жанубий ҳудудлариТогоТаиландТожикистонТок" + - "елауТимор-ЛестеТуркманистонТунисТонгаТуркияТринидад ва ТобагоТувалу" + - "ТайванТанзанияУкраинаУгандаАҚШ ёндош ороллариАмерика Қўшма Штатлари" + - "УругвайЎзбекистонВатиканСент-Винсент ва ГренадинВенесуэлаБритания В" + - "иргин ороллариАҚШ Виргин ороллариВьетнамВануатуУоллис ва ФутунаСамо" + - "аКосовоЯманМайоттаЖанубий Африка РеспубликасиЗамбияЗимбабвеНомаълум" + - " минтақаДунёАфрикаШимолий АмерикаЖанубий АмерикаОкеанияҒарбий Африка" + - "Марказий АмерикаШарқий АфрикаШимолий АфрикаМарказий АфрикаЖануби-Аф" + - "рикаАмерикаШимоли-АмерикаКариб ҳавзасиШарқий ОсиёЖанубий ОсиёЖануби" + - "й-Шарқий ОсиёЖанубий ЕвропаАвстралазияМеланезияМикронезия минтақаси" + - "ПолинезияОсиёМарказий ОсиёҒарбий ОсиёЕвропаШарқий ЕвропаШимолий Евр" + - "опаҒарбий ЕвропаЛотин Америкаси", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0017, 0x0025, 0x0057, 0x006b, 0x008d, 0x009b, 0x00a9, - 0x00bd, 0x00c9, 0x00dd, 0x00ef, 0x010c, 0x011a, 0x012c, 0x0136, - 0x0151, 0x0165, 0x018d, 0x019d, 0x01af, 0x01bd, 0x01d4, 0x01e4, - 0x01f2, 0x0200, 0x020a, 0x0223, 0x0231, 0x023d, 0x024b, 0x0280, - 0x0290, 0x02ad, 0x02b7, 0x02ca, 0x02dc, 0x02ea, 0x02f4, 0x0300, - 0x032a, 0x0343, 0x0379, 0x0398, 0x03aa, 0x03c0, 0x03d7, 0x03df, - 0x03ed, 0x03f7, 0x0407, 0x0426, 0x0439, 0x0441, 0x0454, 0x0462, - 0x047f, 0x0487, 0x0491, 0x04a1, 0x04b8, 0x04c4, 0x04ce, 0x04de, - // Entry 40 - 7F - 0x0509, 0x0515, 0x0533, 0x0541, 0x054f, 0x0557, 0x057b, 0x0589, - 0x0597, 0x05a5, 0x05c2, 0x05c2, 0x05d4, 0x05dc, 0x05fd, 0x0611, - 0x062c, 0x063a, 0x0644, 0x065d, 0x066b, 0x0677, 0x0696, 0x06a2, - 0x06aa, 0x06bc, 0x06d0, 0x06dc, 0x06e8, 0x06fa, 0x071b, 0x0727, - 0x0778, 0x078a, 0x0792, 0x07a9, 0x07b3, 0x07d5, 0x0806, 0x0816, - 0x0826, 0x0830, 0x083e, 0x0859, 0x086b, 0x087b, 0x0887, 0x0898, - 0x08aa, 0x08ed, 0x08f5, 0x08fd, 0x090d, 0x0919, 0x0923, 0x092f, - 0x093f, 0x094b, 0x0955, 0x096b, 0x097b, 0x098b, 0x09a6, 0x09c7, - // Entry 80 - BF - 0x09e0, 0x09f9, 0x0a05, 0x0a22, 0x0a36, 0x0a3e, 0x0a48, 0x0a5b, - 0x0a71, 0x0a82, 0x0a90, 0x0a9c, 0x0aa6, 0x0aba, 0x0ac6, 0x0ad0, - 0x0ade, 0x0aea, 0x0af8, 0x0b0c, 0x0b21, 0x0b35, 0x0b52, 0x0b64, - 0x0b6c, 0x0b85, 0x0b95, 0x0bb3, 0x0be3, 0x0bf5, 0x0c09, 0x0c1d, - 0x0c29, 0x0c39, 0x0c58, 0x0c64, 0x0c72, 0x0c82, 0x0c92, 0x0ca0, - 0x0cbb, 0x0cc5, 0x0ce4, 0x0cf2, 0x0d04, 0x0d1a, 0x0d2a, 0x0d34, - 0x0d3e, 0x0d46, 0x0d5f, 0x0d69, 0x0d75, 0x0d7d, 0x0da2, 0x0dc4, - 0x0dd4, 0x0de4, 0x0df0, 0x0e15, 0x0e34, 0x0e49, 0x0e66, 0x0e7a, - // Entry C0 - FF - 0x0e84, 0x0e94, 0x0e9e, 0x0eb7, 0x0ec5, 0x0ed3, 0x0edf, 0x0eeb, - 0x0ef7, 0x0f18, 0x0f37, 0x0f54, 0x0f5e, 0x0f6a, 0x0f7a, 0x0fa0, - 0x0fb0, 0x0fd5, 0x0fe5, 0x0ffc, 0x100f, 0x101d, 0x1029, 0x1037, - 0x1050, 0x1075, 0x1085, 0x109a, 0x10a4, 0x10b6, 0x10d2, 0x10ff, - 0x1105, 0x1135, 0x113d, 0x114b, 0x115f, 0x116d, 0x1182, 0x119a, - 0x11a4, 0x11ae, 0x11ba, 0x11dc, 0x11e8, 0x11f4, 0x1204, 0x1212, - 0x121e, 0x1240, 0x1240, 0x126a, 0x1278, 0x128c, 0x129a, 0x12c7, - 0x12d9, 0x1307, 0x132b, 0x1339, 0x1347, 0x1365, 0x136f, 0x137b, - // Entry 100 - 13F - 0x1383, 0x1391, 0x13c5, 0x13d1, 0x13e1, 0x1400, 0x1408, 0x1414, - 0x1431, 0x144e, 0x145c, 0x1475, 0x1494, 0x14ad, 0x14c8, 0x14e5, - 0x14fe, 0x150c, 0x1527, 0x1540, 0x1555, 0x156c, 0x1590, 0x15ab, - 0x15c1, 0x15d3, 0x15fa, 0x160c, 0x1614, 0x162d, 0x1642, 0x164e, - 0x1667, 0x1682, 0x169b, 0x169b, 0x16b8, - }, - }, - { // vai - "ꗻꗡ ꕒꕡꕌ ꗏ ꔳꘋꗣꕉꖆꕟꖳꕯꔤꗳ ꕉꕟꔬ ꗡꕆꔓꔻꕉꔱꕭꔕꔻꕚꘋꕉꘋꔳꖶꕎ ꗪ ꕑꖜꕜꕉꕄꕞꕉꔷꕑꕇꕩꕉꕆꕯꕉꖐꕞꕉꘋꕚꔳꕪꕉꘀꘋꔳꕯꕶꕱ" + - " ꕢꕹꕎꖺꔻꖤꕎꖺꖬꖤꔃꔷꕩꕉꖩꕑꕉꕞꔺꕉꕤꕑꔤꕧꘋꕷꔻꕇꕰ ꗪ ꗥꕤꖑꔲꕯꕑꔆꖁꔻꕑꕅꕞꗵꔼꗩꕀꗚꘋꕷꕃꕯ ꕘꖇꗂꔠꔸꕩꕑꗸꘋꖜꖩꔺꗩ" + - "ꕇꘋꕪꘋꕓ ꗞꗢ ꕒꕚꕞꕆꗩꖷꕜꖜꖩꘉꔧꕷꔷꔲꕩꕪꔓꔬꘂꘋ ꖨꕮ ꗨꗳꗣꖜꕟꔘꔀꕑꕌꕮꔻꖜꕚꘋꖜꔍꔳ ꔳꘋꗣꕷꖬꕎꕯꗩꕞꖩꔻꔆꔷꔘꕪ" + - "ꕯꕜꖏꖏꔻ (ꔞꔀꔷꘋ) ꔳꘋꗣꖏꖐ ꗵꗞꖴꕟꔎ ꕸꖃꔀꕉꔱꔸꕪ ꗳ ꗳ ꕸꖃꔀꖏꖐꖬꔃꕤ ꖨꕮꕊꖏꔳ ꕾꕎꖏꕃ ꔳꘋꗣꔚꔷꕪꔈꖩꘋ" + - "ꕦꔤꕯꗛꗏꔭꕩꕃꔒꕐꗋꘋ ꔳꘋꗣꖏꔻꕚ ꔸꕪꕃꖳꕑꔞꔪ ꗲꔵ ꔳꘋꗣꖴꕟꖇꕱꔞꔻꕮꔻ ꔳꘋꗣꕢꗡꖛꗐꔻꗿꕃ ꕸꖃꔀꕧꕮꔧꔵꔀꖑ ꔳꘋ" + - "ꗣꕀꖜꔳꕜꕇꕮꕃꖁꕆꕇꕪꖁꕆꕇꕪꘋ ꕸꕱꔀꕉꔷꔠꔸꕩꗻꕚ ꗪ ꔡꔷꕞꗡꖴꔃꗍꗡꔻꕿꕇꕰꕆꔖꕞꕢꕌꕟ ꔎꔒ ꕀꔤꔀꔸꔳꕟꕐꘊꔧꔤꔳꖎꔪ" + - "ꕩꔱꘋ ꖨꕮꕊꔱꔤꕀꕘꔷꕃ ꖨꕮ ꔳꘋꗣꕆꖏꕇꔻꕩꕘꖄ ꔳꘋꗣꖢꕟꘋꔻꕭꕷꘋꖕꕯꔤꗳꖶꕟꕯꕜꗘꖺꕀꕩꗱꘋꔻ ꖶꕎꕯꖶꗦꘋꔻꕭꕌꕯꕀꖜ" + - "ꕟꕚꕧꕓ ꖴꕎ ꖨꕮꕊꕭꔭꕩꕅꔤꕇꖶꕎꔐꖨꔅꖦꕰꕊ ꗳ ꕅꔤꕇꗥꗷꘋꗘꖺꕀꕩ ꗛꔤ ꔒꘋꗣ ꗏ ꗪ ꗇꖢ ꔳꘋꗣ ꗛꔤ ꔒꘋꗣ ꗏꖶ" + - "ꕎꔎꕮꕞꖶꕎꕆꕅꔤꕇ ꔫꕢꕴꖶꕩꕯꗥꗡꔵ ꗪ ꕮꖁꕯꖽꖫꕟꖏꔓꔻꕩꕌꔤꔳꖽꘋꕭꔓꗛꖺꔻꕩ ꔳꘋꗣꔤꖆꕇꔻꕩꕉꔓ ꖨꕮꕊꕑꕇꔻꕞꔤꕞꕮ" + - "ꘋ ꔳꘋꗣꔤꔺꕩꔛꔟꔻ ꔤꔺꕩ ꗛꔤꘂ ꕗꕴꔀ ꕮꔤꕟꕃꔤꕟꘋꕉꔤꔻ ꖨꕮꕊꔤꕚꔷꘀꗡꔘꕧꕮꔧꕪꗘꖺꗵꘋꔛꗨꗢꔞꕰꕃꕅꔻꕚꘋꕪꕹꔵꕩ" + - "ꕃꔸꕑꔳꖏꕹꖄꔻꔻꘋ ꕃꔳꔻ ꗪ ꔕꔲꔻꖏꔸꕩ ꗛꔤ ꕪꘋꗒꖏꔸꕩ ꗛꔤ ꔒꘋꗣ ꗏꖴꔃꔳꔞꔀꕮꘋ ꔳꘋꗣꕪꕤꔻꕚꘋꕞꕴꔻꔒꕑꗟꘋꔻ" + - "ꘋ ꖨꔻꕩꔷꗿꘋꔻꗳꘋꖬꔸ ꕞꘋꕪꕞꔤꔫꕩꔷꖇꕿꔷꖤꔃꕇꕰꗏꔻꘋꗂꖺꕞꔳꔲꕩꔒꔫꕩꗞꕟꖏꗞꕯꖏꖒꔷꖁꕙꗞꔳꕇꖶꖄꕪꘋꕓ ꗞꗢ ꕮꕊꔳ" + - "ꘋꕮꕜꕭꔻꕪꕮꕊꕣ ꔳꘋꗣꕮꔖꖁꕇꕰꕮꔷꕆꕩꘋꕮꗞꖐꔷꕩꗛꔤ ꕪꘋꗒ ꕮꔸꕩꕯ ꔳꘋꗣꕮꔳꕇꕃꗞꔓꔎꕇꕰꗞꘋꔖꕟꔳꕮꕊꕚꗞꔓꗔꕮꔷꕜ" + - "ꔍꕮꕞꕌꔨꘈꔻꖏꕮꔒꔻꕩꕹꕤꔭꕃꕯꕆꔫꕩꕪꔷꖁꕇꕰ ꕯꕮꕊꕯꔤꕧꗟꖺꗉ ꔳꘋꗣꕯꔤꕀꔸꕩꕇꕪꕟꖶꕎꘉꕜ ꖨꕮꕊꗟꖺꔃꕇꕐꔷꖆꖩꖸꔃꔤ" + - "ꔽꔤ ꖨꕮ ꕯꕮꕊꕱꕮꘋꕐꕯꕮꗨꗡꖩꗱꘋꔻ ꕶꔷꕇꔻꕩꕐꖛꕎ ꕅꔤꕇ ꕯꕮꕊꔱꔒꔪꘋꕐꕃꔻꕚꘋꕶꗷꘋꔻꘋ ꔪꘂ ꗪ ꕆꔞꗏꘋꔪꔳꕪꕆ" + - "ꔪꖳꕿ ꔸꖏꕐꔒꔻꔳꕯ ꔎꔒ ꕀꔤ ꗛꔤ ꕞ ꗱ ꗪ ꕭꕌꕤꕶꕿꕃꔤ ꕸꖃꔀꕐꖃꕐꕟꗝꔀꕪꕚꕌꔓꗠꖻꖄꕆꕇꕰꗻꗡꔬꕩꗐꖺꔻꕩꕟꖙꕡꕞ" + - "ꕌꖝ ꕸꖃꔀꖬꕞꔤꕮꕊꕯ ꔳꘋꗣꔖꗼꔷꖬꗵꘋꖬꔨꗵꘋꔻꕬꕶꕱꔻꘋ ꗥꔷꕯꔻꖃꔍꕇꕰꔻꕙꕒꔵ ꗪ ꕧꘋ ꕮꘂꘋꔻꖃꕙꕃꕩꔋꕩ ꕒꕌꖺ " + - "ꕸꖃꔀꕮꔸꖆ ꕢꘋꔻꕇꕭꕌꖇꕮꔷꕩꖬꔸꕯꔈꖬꕜꘋ ꗛꔤ ꔒꘋꗣ ꗏꕢꕴ ꕿꔈ ꗪ ꕉ ꕮꔧ ꕗꕴꔀꗡꗷ ꕢꔍꗍꖺꔻꘋꔳ ꕮꕊꗳꘋꔻꕩ" + - "ꘋꖬꕎꔽ ꖨꕮꕊꔳꔻꕚꘋ ꕜ ꖴꕯꗋꖺꕃꔻ ꗪ ꕪꔤꖏꔻ ꔳꘋꗣꕦꔵꔱꗷꘋꔻ ꗛꔤ ꔒꘋꗣ ꗏ ꕸꖃꔀ ꖸꕿꖑꕚꔤ ꖨꕮꕊꕚꕀꕃꔻꕚ" + - "ꘋꕿꔞꖃꔎꔒ ꗃ ꔳꗞꖻꗋꖺꕃꕮꕇꔻꕚꘋꖤꕇꔻꕩꗋꕬꗋꖺꕃꖤꔸꔕꕜ ꗪ ꕿꔆꖑꕚꖣꖨꕚꔤꕎꘋꕚꘋꕤꕇꕰꖳꖴꔓꘋꖳꕭꕡꕶꕱ ꕪꘋ ꗅꘋ" + - " ꔳꘋꗣ ꖸꕶꕱꖳꔓꗝꔀꖳꗩꕃꔻꕚꘋꕙꔳꕪꘋ ꕢꕨꕌꔻꘋ ꔲꘋꔻꘋ ꗪ ꖶꔓꕯꔵꘋ ꖸꕙꔳꕪꘋ ꕸꖃꔀꔛꔟꔻ ꗩꗡ ꗏ ꖷꖬ ꔳꘋꗣꕶꕱ" + - " ꗩꗡ ꗏ ꖷꖬ ꔳꘋꗣꗲꕇꖮꔃꕞꕙꖸꕎꖤꕎꔷꔻ ꗪ ꖢꖤꕯꕢꕹꖙꕉꖏꖇꕾꔝꘈꘋꕮꗚꔎꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ꗏ ꕸꖃꔀꕤꔭꕩꔽꕓꖜꔃ", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x001e, 0x0027, 0x004a, 0x005f, 0x007c, 0x0085, 0x0094, - 0x009d, 0x00a6, 0x00b5, 0x00c4, 0x00d4, 0x00e0, 0x00f2, 0x00fb, - 0x0104, 0x0116, 0x0136, 0x0142, 0x0151, 0x015d, 0x016d, 0x0179, - 0x0182, 0x018b, 0x0194, 0x01b1, 0x01ba, 0x01c6, 0x01d2, 0x01f2, - 0x01fe, 0x020a, 0x0213, 0x0226, 0x0232, 0x023e, 0x0247, 0x0250, - 0x0272, 0x0292, 0x02b0, 0x02b6, 0x02c9, 0x02d6, 0x02e6, 0x02ec, - 0x02f8, 0x0301, 0x030d, 0x0326, 0x0336, 0x033f, 0x0356, 0x0362, - 0x0378, 0x0387, 0x0397, 0x03a0, 0x03b3, 0x03bc, 0x03c8, 0x03d4, - // Entry 40 - 7F - 0x03ed, 0x03fc, 0x0410, 0x041c, 0x042b, 0x0434, 0x044b, 0x0457, - 0x0460, 0x046f, 0x046f, 0x046f, 0x047f, 0x0488, 0x04a2, 0x04b1, - 0x04c1, 0x04cd, 0x04d6, 0x04e2, 0x04ee, 0x04fa, 0x050d, 0x0519, - 0x0522, 0x052e, 0x0545, 0x054e, 0x0557, 0x0566, 0x057d, 0x0586, - 0x05d1, 0x05e0, 0x05e9, 0x05fc, 0x0605, 0x0605, 0x061c, 0x0625, - 0x0631, 0x063a, 0x0646, 0x065c, 0x066b, 0x067b, 0x068d, 0x069d, - 0x06a6, 0x06d1, 0x06da, 0x06e3, 0x06f6, 0x06ff, 0x0708, 0x0714, - 0x0720, 0x0729, 0x072f, 0x073e, 0x074a, 0x0756, 0x0762, 0x0780, - // Entry 80 - BF - 0x079a, 0x07b8, 0x07c1, 0x07d7, 0x07e6, 0x07ef, 0x07fb, 0x080b, - 0x081d, 0x082d, 0x0839, 0x0842, 0x0851, 0x0860, 0x086c, 0x0875, - 0x087e, 0x0887, 0x0893, 0x08a2, 0x08bf, 0x08ce, 0x08e1, 0x08f0, - 0x08f6, 0x0902, 0x090e, 0x090e, 0x0935, 0x0941, 0x0950, 0x095f, - 0x0968, 0x0971, 0x097d, 0x0989, 0x0992, 0x099e, 0x09aa, 0x09b6, - 0x09cf, 0x09d8, 0x09eb, 0x09fa, 0x0a09, 0x0a19, 0x0a22, 0x0a2b, - 0x0a31, 0x0a3a, 0x0a51, 0x0a5a, 0x0a63, 0x0a6c, 0x0a85, 0x0aa2, - 0x0aae, 0x0abd, 0x0ac6, 0x0ae4, 0x0af0, 0x0b00, 0x0b3a, 0x0b50, - // Entry C0 - FF - 0x0b56, 0x0b62, 0x0b6b, 0x0b6b, 0x0b74, 0x0b80, 0x0b8c, 0x0b98, - 0x0ba1, 0x0bb4, 0x0bd0, 0x0bd9, 0x0be2, 0x0bee, 0x0bfa, 0x0c0a, - 0x0c19, 0x0c3a, 0x0c49, 0x0c63, 0x0c73, 0x0c7f, 0x0c8b, 0x0c97, - 0x0cb5, 0x0cdb, 0x0cee, 0x0d04, 0x0d0d, 0x0d20, 0x0d37, 0x0d5e, - 0x0d64, 0x0d93, 0x0d99, 0x0da9, 0x0dbb, 0x0dc4, 0x0dd8, 0x0df0, - 0x0dfc, 0x0e02, 0x0e0b, 0x0e25, 0x0e2e, 0x0e3a, 0x0e49, 0x0e55, - 0x0e5e, 0x0e80, 0x0e80, 0x0e86, 0x0e92, 0x0ea4, 0x0eba, 0x0ee5, - 0x0efb, 0x0f20, 0x0f42, 0x0f51, 0x0f5d, 0x0f74, 0x0f80, 0x0f89, - // Entry 100 - 13F - 0x0f92, 0x0f9b, 0x0fc6, 0x0fcf, 0x0fdb, - }, - }, - { // vai-Latn - "AŋdóraYunaitɛ Arabhi ƐmireAfigándesitaŋAŋtígwa ƁahabhudaAŋgílaAbhaniyaAm" + - "éniyaAŋgólaAjɛŋtínaPoo SambowaƆ́situwaƆsituwéeliyaArubhaAzabhaijaŋB" + - "hɔsiniyaBhabhedoBhangiladɛ̀shiBhɛgiyɔŋBhokina FásoBhɔgeriyaBharɛŋBhu" + - "rundiBhɛniBhɛmudaBhurunɛĩBholiviyaBhurazeliBahámasiBhutaŋBhosuwanaBh" + - "ɛlarusiBhelizKánádaAvorekooÁfíríka Lumaã Tɛ BoloeKóngoSuweza LumaãK" + - "ódivówaKóki TiŋŋɛChéliKameruŋCháínaKɔlɔmbiyaKósíta RíkoKiyubhaKepi " + - "Vɛdi TiŋŋɛSaɛpurɔChɛki BoloeJamáĩJibhutiDanimahaDomíiníkaDomíiníka Ɓ" + - "oloeAgiriyaƐ́kúwédɔƐsitóninyaMísélaƐriteraPanyɛĩÍtiyópiyaFiŋlɛŋFíjiF" + - "áháki Luma TiŋŋɛMikonisiyaFɛŋsiGabhɔŋYunaitɛ KíŋdɔŋGurinédaJɔɔjiyaF" + - "ɛŋsi GiwanaGanaJibhurataJamba Kuwa LumaãGambiyaGiniGuwadelupeDúúnyá" + - " Tɛ GiiniHɛlɛŋGuwatɛmalaGuwamiGini BhisawoGuyanaHɔnduraKoresiyaHáiti" + - "Hɔ́ngareÍndonisiyaÁre LumaãBhanísiláilaÍndiyaJengéesi Gbawoe Índiya " + - "Kɔiyɛ LɔIrakiIraŋÁisi LumaãÍtaliJamaikaJɔɔdaŋJapaŋKényaKigisitaŋKaŋb" + - "hodiyaKiribhatiKomorosiSiŋ Kisi ɓɛ́ NevisiKoriya Kɔi KaŋndɔKoriya Kɔ" + - "i Leŋŋɛ LɔKuwetiKeemaŋ TiŋŋɛKazasitaŋLawosiLebhanɔSiŋ LusiyaSuri Laŋ" + - "kaLaibhiyaLisótoLituweninyaLusimbɔLativiyaLebhiyaMɔrokoMɔnakoMɔlidov" + - "aMadagasitaMasha TiŋŋɛMasedoninyaMaliMiyamahaMɔngoliyaKɔi Kaŋndɔ Mar" + - "iyana TiŋŋɛMatinikiMɔretaninyaMɔseratiMalitaMɔreshɔMalidaviMalawiMɛs" + - "íkoMalesiyaMozambikiNamibiyaKalidoninya NámaáNaĩjaNɔfɔ TiŋŋɛNaĩjiri" + - "yaNikaraguwaNidɔlɛŋNɔɔweNepaNoruNiweZilɛŋ NámaáOmaŋPanamaPɛruFɛŋsi P" + - "olinísiyaPapuwa Gini NámaáFélepiŋPakisitaŋPólɛŋSiŋ Piiyɛ ɓɛ́ Mikelɔŋ" + - "PitikɛŋPiyuto RikoPalesitininya Tele Jii Kɔiyɛ lá hĩ GazaPotokíiPalo" + - "ParagɔeKatahaRenyɔɔ̃RomininyaRɔshiyaRawundaLahabuSulaimaãna TiŋŋɛSes" + - "hɛɛSudɛŋSuwidɛŋSíingapooSiŋ HɛlinaSuloveninyaSulovakiyaGbeya BahawɔS" + - "aŋ MarindoSinigahaSomaliyaSurinambeSawo Tombe ɓɛ a GbawoeƐlɛ SávádɔS" + - "íyaŋSuwazi LumaãTukisi ɓɛ̀ Kaikóosi TiŋŋɛChádiTogoTai LumaãTajikisi" + - "taŋTokeloTele Ɓɔ́ Timɔɔ̃TukimɛnisitaŋTunisiyaTɔngaTɔ́ɔ́kiTurindeda ɓ" + - "ɛ́ TobhegoTuváluTaiwaŋTaŋzaninyaYukuréŋYugandaPooYuwegɔweYubhɛkisit" + - "aŋVatikaŋ ƁoloeSiŋ ViŋsiVɛnɛzuwelaJengéesi Bhɛɛ Lɔ Musu TiŋŋɛPoo Bhɛ" + - "ɛ lɔ Musu TiŋŋɛViyanamiVanuwátuWalísiSamowaYemɛniMavoteAfirika Kɔi " + - "Leŋŋɛ LɔZambiyaZimbabhuwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x001e, 0x002d, 0x0041, 0x0049, 0x0051, - 0x0059, 0x0061, 0x0061, 0x006c, 0x0077, 0x0081, 0x008f, 0x0095, - 0x0095, 0x00a0, 0x00aa, 0x00b2, 0x00c2, 0x00cd, 0x00da, 0x00e4, - 0x00ec, 0x00f4, 0x00fa, 0x00fa, 0x0102, 0x010c, 0x0115, 0x0115, - 0x011e, 0x0127, 0x012e, 0x012e, 0x0137, 0x0141, 0x0147, 0x014f, - 0x014f, 0x0157, 0x0172, 0x0178, 0x0185, 0x018f, 0x019d, 0x01a3, - 0x01ab, 0x01b3, 0x01be, 0x01be, 0x01cc, 0x01d3, 0x01e6, 0x01e6, - 0x01e6, 0x01ef, 0x01fb, 0x0202, 0x0202, 0x0209, 0x0211, 0x021c, - // Entry 40 - 7F - 0x022e, 0x0235, 0x0235, 0x0242, 0x024e, 0x0256, 0x0256, 0x025e, - 0x0266, 0x0271, 0x0271, 0x0271, 0x027a, 0x027f, 0x0295, 0x029f, - 0x029f, 0x02a6, 0x02ae, 0x02c1, 0x02ca, 0x02d3, 0x02e1, 0x02e1, - 0x02e5, 0x02ee, 0x02ff, 0x0306, 0x030a, 0x0314, 0x0327, 0x032f, - 0x032f, 0x033a, 0x0340, 0x034c, 0x0352, 0x0352, 0x0352, 0x035a, - 0x0362, 0x0368, 0x0372, 0x0372, 0x037d, 0x0388, 0x0396, 0x0396, - 0x039d, 0x03c1, 0x03c6, 0x03cb, 0x03d7, 0x03dd, 0x03dd, 0x03e4, - 0x03ed, 0x03f3, 0x03f9, 0x0403, 0x040e, 0x0417, 0x041f, 0x0436, - // Entry 80 - BF - 0x044a, 0x0462, 0x0468, 0x0478, 0x0482, 0x0488, 0x0490, 0x049b, - 0x049b, 0x04a6, 0x04ae, 0x04b5, 0x04c0, 0x04c8, 0x04d0, 0x04d7, - 0x04de, 0x04e5, 0x04ee, 0x04ee, 0x04ee, 0x04f8, 0x0506, 0x0511, - 0x0515, 0x051d, 0x0527, 0x0527, 0x0546, 0x054e, 0x055a, 0x0563, - 0x0569, 0x0572, 0x057a, 0x0580, 0x0588, 0x0590, 0x0599, 0x05a1, - 0x05b4, 0x05ba, 0x05c9, 0x05d3, 0x05dd, 0x05e7, 0x05ee, 0x05f2, - 0x05f6, 0x05fa, 0x0609, 0x060e, 0x0614, 0x0619, 0x062c, 0x063f, - 0x0648, 0x0652, 0x065a, 0x0676, 0x067f, 0x068a, 0x06b5, 0x06bd, - // Entry C0 - FF - 0x06c1, 0x06c9, 0x06cf, 0x06cf, 0x06d9, 0x06e2, 0x06e2, 0x06ea, - 0x06f1, 0x06f7, 0x070b, 0x0713, 0x071a, 0x0723, 0x072d, 0x0739, - 0x0744, 0x0744, 0x074e, 0x075b, 0x0767, 0x076f, 0x0777, 0x0780, - 0x0780, 0x0798, 0x07a7, 0x07a7, 0x07ae, 0x07bb, 0x07bb, 0x07db, - 0x07e1, 0x07e1, 0x07e5, 0x07ef, 0x07fb, 0x0801, 0x0816, 0x0825, - 0x082d, 0x0833, 0x083e, 0x0856, 0x085d, 0x0864, 0x086f, 0x0878, - 0x087f, 0x087f, 0x087f, 0x0882, 0x088b, 0x0899, 0x08a8, 0x08b3, - 0x08bf, 0x08e1, 0x08fd, 0x0905, 0x090e, 0x0915, 0x091b, 0x091b, - // Entry 100 - 13F - 0x0922, 0x0928, 0x0941, 0x0948, 0x0952, - }, - }, - { // vi - viRegionStr, - viRegionIdx, - }, - { // vun - "AndoraFalme za KiarabuAfuganistaniAntigua na BarbudaAnguillaAlbaniaArmen" + - "iaAngolaAjentinaSamoa ya MarekaniAustriaAustraliaArubaAzabajaniBosni" + - "a na HezegovinaBabadosiBangladeshiUbelgijiBukinafasoBulgariaBahareni" + - "BurundiBeniniBermudaBruneiBoliviaBraziliBahamaButaniBotswanaBelarusi" + - "BelizeKanadaJamhuri ya Kidemokrasia ya KongoJamhuri ya Afrika ya Kat" + - "iKongoUswisiKodivaaVisiwa vya CookChileKameruniChinaKolombiaKostarik" + - "aKubaKepuvedeKuprosiJamhuri ya ChekiUjerumaniJibutiDenmakiDominikaJa" + - "mhuri ya DominikaAljeriaEkwadoEstoniaMisriEritreaHispaniaUhabeshiUfi" + - "niFijiVisiwa vya FalklandMikronesiaUfaransaGaboniUingerezaGrenadaJoj" + - "iaGwiyana ya UfaransaGhanaJibraltaGrinlandiGambiaGineGwadelupeGinekw" + - "etaUgirikiGwatemalaGwamGinebisauGuyanaHondurasiKorasiaHaitiHungariaI" + - "ndonesiaAyalandiIsraeliIndiaEneo la Uingereza katika Bahari HindiIra" + - "kiUajemiAislandiItaliaJamaikaYordaniJapaniKenyaKirigizistaniKambodia" + - "KiribatiKomoroSantakitzi na NevisKorea KaskaziniKorea KusiniKuwaitiV" + - "isiwa vya KaymanKazakistaniLaosiLebanoniSantalusiaLishenteniSirilank" + - "aLiberiaLesotoLitwaniaLasembagiLativiaLibyaMorokoMonakoMoldovaBukini" + - "Visiwa vya MarshalMasedoniaMaliMyamaMongoliaVisiwa vya Mariana vya K" + - "askaziniMartinikiMoritaniaMontserratiMaltaMorisiModivuMalawiMeksikoM" + - "alesiaMsumbijiNamibiaNyukaledoniaNijeriKisiwa cha NorfokNijeriaNikar" + - "agwaUholanziNorweNepaliNauruNiueNyuzilandiOmaniPanamaPeruPolinesia y" + - "a UfaransaPapuaFilipinoPakistaniPolandiSantapieri na MikeloniPitkair" + - "niPwetorikoUkingo wa Magharibi na Ukanda wa Gaza wa PalestinaUrenoPa" + - "lauParagwaiKatariRiyunioniRomaniaUrusiRwandaSaudiVisiwa vya SolomonS" + - "helisheliSudaniUswidiSingapooSantahelenaSloveniaSlovakiaSiera LeoniS" + - "amarinoSenegaliSomaliaSurinamuSao Tome na PrincipeElsavadoSiriaUswaz" + - "iVisiwa vya Turki na KaikoChadiTogoTailandiTajikistaniTokelauTimori " + - "ya MasharikiTurukimenistaniTunisiaTongaUturukiTrinidad na TobagoTuva" + - "luTaiwaniTanzaniaUkrainiUgandaMarekaniUrugwaiUzibekistaniVatikaniSan" + - "tavisenti na GrenadiniVenezuelaVisiwa vya Virgin vya UingerezaVisiwa" + - " vya Virgin vya MarekaniVietinamuVanuatuWalis na FutunaSamoaYemeniMa" + - "yotteAfrika KusiniZambiaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0016, 0x0022, 0x0034, 0x003c, 0x0043, - 0x004a, 0x0050, 0x0050, 0x0058, 0x0069, 0x0070, 0x0079, 0x007e, - 0x007e, 0x0087, 0x009b, 0x00a3, 0x00ae, 0x00b6, 0x00c0, 0x00c8, - 0x00d0, 0x00d7, 0x00dd, 0x00dd, 0x00e4, 0x00ea, 0x00f1, 0x00f1, - 0x00f8, 0x00fe, 0x0104, 0x0104, 0x010c, 0x0114, 0x011a, 0x0120, - 0x0120, 0x0140, 0x0159, 0x015e, 0x0164, 0x016b, 0x017a, 0x017f, - 0x0187, 0x018c, 0x0194, 0x0194, 0x019d, 0x01a1, 0x01a9, 0x01a9, - 0x01a9, 0x01b0, 0x01c0, 0x01c9, 0x01c9, 0x01cf, 0x01d6, 0x01de, - // Entry 40 - 7F - 0x01f1, 0x01f8, 0x01f8, 0x01fe, 0x0205, 0x020a, 0x020a, 0x0211, - 0x0219, 0x0221, 0x0221, 0x0221, 0x0226, 0x022a, 0x023d, 0x0247, - 0x0247, 0x024f, 0x0255, 0x025e, 0x0265, 0x026a, 0x027d, 0x027d, - 0x0282, 0x028a, 0x0293, 0x0299, 0x029d, 0x02a6, 0x02af, 0x02b6, - 0x02b6, 0x02bf, 0x02c3, 0x02cc, 0x02d2, 0x02d2, 0x02d2, 0x02db, - 0x02e2, 0x02e7, 0x02ef, 0x02ef, 0x02f8, 0x0300, 0x0307, 0x0307, - 0x030c, 0x0331, 0x0336, 0x033c, 0x0344, 0x034a, 0x034a, 0x0351, - 0x0358, 0x035e, 0x0363, 0x0370, 0x0378, 0x0380, 0x0386, 0x0399, - // Entry 80 - BF - 0x03a8, 0x03b4, 0x03bb, 0x03cc, 0x03d7, 0x03dc, 0x03e4, 0x03ee, - 0x03f8, 0x0401, 0x0408, 0x040e, 0x0416, 0x041f, 0x0426, 0x042b, - 0x0431, 0x0437, 0x043e, 0x043e, 0x043e, 0x0444, 0x0456, 0x045f, - 0x0463, 0x0468, 0x0470, 0x0470, 0x0490, 0x0499, 0x04a2, 0x04ad, - 0x04b2, 0x04b8, 0x04be, 0x04c4, 0x04cb, 0x04d2, 0x04da, 0x04e1, - 0x04ed, 0x04f3, 0x0504, 0x050b, 0x0514, 0x051c, 0x0521, 0x0527, - 0x052c, 0x0530, 0x053a, 0x053f, 0x0545, 0x0549, 0x055e, 0x0563, - 0x056b, 0x0574, 0x057b, 0x0591, 0x059a, 0x05a3, 0x05d5, 0x05da, - // Entry C0 - FF - 0x05df, 0x05e7, 0x05ed, 0x05ed, 0x05f6, 0x05fd, 0x05fd, 0x0602, - 0x0608, 0x060d, 0x061f, 0x0629, 0x062f, 0x0635, 0x063d, 0x0648, - 0x0650, 0x0650, 0x0658, 0x0663, 0x066b, 0x0673, 0x067a, 0x0682, - 0x0682, 0x0696, 0x069e, 0x069e, 0x06a3, 0x06a9, 0x06a9, 0x06c2, - 0x06c7, 0x06c7, 0x06cb, 0x06d3, 0x06de, 0x06e5, 0x06f8, 0x0707, - 0x070e, 0x0713, 0x071a, 0x072c, 0x0732, 0x0739, 0x0741, 0x0748, - 0x074e, 0x074e, 0x074e, 0x0756, 0x075d, 0x0769, 0x0771, 0x078a, - 0x0793, 0x07b2, 0x07d0, 0x07d9, 0x07e0, 0x07ef, 0x07f4, 0x07f4, - // Entry 100 - 13F - 0x07fa, 0x0801, 0x080e, 0x0814, 0x081c, - }, - }, - { // wae - "HimmelfártsinslaAndorraVereinigti Arabiše EmiratAfganištanAntigua und Ba" + - "rbudaAnguillaAlbanieArmenieAngolaAntarktisArgentinieAmerikaniš Samoa" + - "ÖštričAustralieArubaAlandinsläAserbaidšanBosnie und HerzegovinaBarb" + - "adosBangladešBelgieBurkina FasoBulgarieBačrainBurundiBeninSt. Bartho" + - "lomäus-InslaBermudaBruneiBoliwieBrasilieBahamasBhutanBouvetinslaBots" + - "wanaWísrusslandBelizeKanadaKokosinsläKongo-KinshasaZentralafrikaniši" + - " RebublikKongo BrazzavilleSchwizElfebeiküštaCookinsläTšileKamerunChi" + - "naKolumbieClipperton InslaCosta RicaKubaKap VerdeWienäčtsinsläZypreT" + - "šečieTitšlandDiego GarciaDšibutiDänemarkDoninicaDominikaniši Rebubl" + - "ikAlgerieCeuta und MelillaEcuadorEštlandEgypteWeštsaharaEritreaSchpa" + - "nieEthiopieEuropäiši UnioFinnlandFidšiFalklandinsläMikronesieFäröeFr" + - "ankričGabonEnglandGrenadaGeorgieFranzösiš GuianaGuernseyGanaGibralta" + - "rGrönlandGambiaGineaGuadeloupeEquatorialgineaGričelandSüdgeorgie und" + - " d’südliče SenwičinsläGuatemalaGuamGinea BissauGuyanaSonderverwaltig" + - "szona HongkongHeard- und McDonald-InsläHondurasKroatieHaitiUngareKan" + - "ariše InsläIndonesieIrlandIsraelIsle of ManIndieBritišes Territorium" + - " em indiše OzeanIrakIranIslandItalieJerseyJamaikaJordanieJapanKenyaK" + - "irgištanKambodšaKiribatiKomoreSt. Kitts und NevisNordkoreaSüdkoreaKu" + - "weitKaimaninsläKasačstanLaosLibanonSt. LuciaLiečtešteiSri LankaLiber" + - "iaLesothoLitaueLuxeburgLettlandLübieMarokoMonagoMoldauMontenegroSt. " + - "MartinMadagaskarMaršalinsläMazedonieMaliBurmaMongoleiSonderverwaltig" + - "szona MakauNördliči MarianeMartiniqueMauretanieMonserratMaltaMauriti" + - "usMalediweMalawiMexikoMalaysiaMosambikNamibiaNiwkaledonieNigerNorfol" + - "kinslaNigeriaNicaraguaHolandNorwägeNepalNauruNiueNiwsélandOmanPanama" + - "PeruFranzösiš PolinesiePapua NiwgineaPhilippinePakištanPoleSt. Pierr" + - "e und MiquelonPitcairnPuerto RicoPaleštinaPortugalPalauParaguaiKatar" + - "Üssers OzeanieRéunionRumänieSerbieRusslandRuandaSaudi ArabieSalomon" + - "eSečelleSudanSchwedeSingapurSt. HelenaSlowenieSvalbard und Jan Mayen" + - "SlowakeiSierra LeoneSan MarinoSenegalSomaliaSurinameSão Tomé and Prí" + - "ncipeEl SalvadorSürieSwasilandTristan da CunhaTurks- und Caicosinslä" + - "TšadFranzösiši Süd- und AntarktisgebietTogoThailandTadšikistanTokela" + - "uOšttimorTurkmeništanTunesieTongaTürkeiTrinidad und TobagoTuvaluTaiw" + - "anTansaniaUkraineUgandaAmerikaniš OzeanieAmerikaUrugauyUsbekištanVat" + - "ikanSt. Vincent und d’GrenadineVenezuelaBritiši JungfröiwinsläAmerik" + - "aniši JungfröiwinsläVietnamVanuatuWallis und FutunaSamoaJémeMoyetteS" + - "üdafrikaSambiaSimbabweUnbekannti RegioWäldAfrikaNordamerikaSüdameri" + - "kaOzeanieWeštafrikaZentralamerikaOštafrikaNordafrikaMittelafrikaSüdl" + - "ičs AfrikaAmerikaniš KontinäntNördličs AmerikaKaribikOštasieSüdasieS" + - "üdoštasieSüdeuropaAuštralie und NiwsélandMelanesieMikronesišes Inse" + - "lgebietPolinesieAsieZentralasieWeštasieEuropaOšteuropaNordeuropaWešt" + - "europaLatíamerika", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0011, 0x0018, 0x0032, 0x003d, 0x0050, 0x0058, 0x005f, - 0x0066, 0x006c, 0x0075, 0x007f, 0x0090, 0x0099, 0x00a2, 0x00a7, - 0x00b2, 0x00be, 0x00d4, 0x00dc, 0x00e6, 0x00ec, 0x00f8, 0x0100, - 0x0108, 0x010f, 0x0114, 0x012b, 0x0132, 0x0138, 0x013f, 0x013f, - 0x0147, 0x014e, 0x0154, 0x015f, 0x0167, 0x0173, 0x0179, 0x017f, - 0x018a, 0x0198, 0x01b3, 0x01c4, 0x01ca, 0x01d8, 0x01e2, 0x01e8, - 0x01ef, 0x01f4, 0x01fc, 0x020c, 0x0216, 0x021a, 0x0223, 0x0223, - 0x0233, 0x0238, 0x0240, 0x0249, 0x0255, 0x025d, 0x0266, 0x026e, - // Entry 40 - 7F - 0x0284, 0x028b, 0x029c, 0x02a3, 0x02ab, 0x02b1, 0x02bc, 0x02c3, - 0x02cb, 0x02d3, 0x02e3, 0x02e3, 0x02eb, 0x02f1, 0x02ff, 0x0309, - 0x0310, 0x0319, 0x031e, 0x0325, 0x032c, 0x0333, 0x0345, 0x034d, - 0x0351, 0x035a, 0x0363, 0x0369, 0x036e, 0x0378, 0x0387, 0x0391, - 0x03bc, 0x03c5, 0x03c9, 0x03d5, 0x03db, 0x03f8, 0x0412, 0x041a, - 0x0421, 0x0426, 0x042c, 0x043c, 0x0445, 0x044b, 0x0451, 0x045c, - 0x0461, 0x0487, 0x048b, 0x048f, 0x0495, 0x049b, 0x04a1, 0x04a8, - 0x04b0, 0x04b5, 0x04ba, 0x04c4, 0x04cd, 0x04d5, 0x04db, 0x04ee, - // Entry 80 - BF - 0x04f7, 0x0500, 0x0506, 0x0512, 0x051c, 0x0520, 0x0527, 0x0530, - 0x053c, 0x0545, 0x054c, 0x0553, 0x0559, 0x0561, 0x0569, 0x056f, - 0x0575, 0x057b, 0x0581, 0x058b, 0x0595, 0x059f, 0x05ac, 0x05b5, - 0x05b9, 0x05be, 0x05c6, 0x05e0, 0x05f2, 0x05fc, 0x0606, 0x060f, - 0x0614, 0x061d, 0x0625, 0x062b, 0x0631, 0x0639, 0x0641, 0x0648, - 0x0654, 0x0659, 0x0665, 0x066c, 0x0675, 0x067b, 0x0683, 0x0688, - 0x068d, 0x0691, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06be, 0x06cc, - 0x06d6, 0x06df, 0x06e3, 0x06fa, 0x0702, 0x070d, 0x0717, 0x071f, - // Entry C0 - FF - 0x0724, 0x072c, 0x0731, 0x0740, 0x0748, 0x0750, 0x0756, 0x075e, - 0x0764, 0x0770, 0x0778, 0x0780, 0x0785, 0x078c, 0x0794, 0x079e, - 0x07a6, 0x07bc, 0x07c4, 0x07d0, 0x07da, 0x07e1, 0x07e8, 0x07f0, - 0x07f0, 0x0808, 0x0813, 0x0813, 0x0819, 0x0822, 0x0832, 0x0849, - 0x084e, 0x0874, 0x0878, 0x0880, 0x088c, 0x0893, 0x089c, 0x08a9, - 0x08b0, 0x08b5, 0x08bc, 0x08cf, 0x08d5, 0x08db, 0x08e3, 0x08ea, - 0x08f0, 0x0903, 0x0903, 0x090a, 0x0911, 0x091c, 0x0923, 0x0940, - 0x0949, 0x0962, 0x097f, 0x0986, 0x098d, 0x099e, 0x09a3, 0x09a3, - // Entry 100 - 13F - 0x09a8, 0x09af, 0x09b9, 0x09bf, 0x09c7, 0x09d7, 0x09dc, 0x09e2, - 0x09ed, 0x09f8, 0x09ff, 0x0a0a, 0x0a18, 0x0a22, 0x0a2c, 0x0a38, - 0x0a48, 0x0a5e, 0x0a70, 0x0a77, 0x0a7f, 0x0a87, 0x0a93, 0x0a9d, - 0x0ab6, 0x0abf, 0x0ad8, 0x0ae1, 0x0ae5, 0x0af0, 0x0af9, 0x0aff, - 0x0b09, 0x0b13, 0x0b1e, 0x0b1e, 0x0b2a, - }, - }, - { // wo - "AndoorEmira Arab IniAfganistaŋAntiguwa ak BarbudaAngiiyAlbaniArmeniÀngol" + - "aaAntarktikArsàntinSamowa bu AmerigÓtiriisOstaraliArubaDuni AalàndAs" + - "erbayjaŋBosni ErsegowinBarbadBengaladesBelsigBurkina FaasoBilgariBah" + - "reyinBurundiBeneeSaŋ BartalemiBermidBurneyBoliwiBeresilBahamasButaŋD" + - "unu BuwetBotswanaBelarisBelisKanadaaDuni Koko (Kilin)Repiblik Sàntar" + - " AfrikSiwisKodiwaar (Côte d’Ivoire)Duni KuukSiliKamerunSiinKolombiKo" + - "sta RikaKubaKabo WerdeKursawoDunu KirismasSiiparRéewum CekAlmaañJibu" + - "tiDanmàrkDominikRepiblik DominikenAlseriEkwaatërEstoniEsiptEritereEs" + - "pañEcopiFinlàndFijjiDuni FalklandMikoronesiDuni FaroFaraansGaboŋRuwa" + - "ayom IniGaranadSeworsiGuyaan FarañseGernaseGanaSibraltaarGirinlàndGà" + - "mbiGineGuwaadelupGine EkuwatoriyalGereesSeworsi di Sid ak Duni Sàndw" + - "iis di SidGuwatemalaGuwamGine-BisaawóoGiyaanDuni Hërd ak Duni MakDon" + - "aldOnduraasKorowasiAytiOngariIndonesiIrlàndIsrayelDunu MaanEndTeritu" + - "waaru Brëtaañ ci Oseyaa EnjeŋIragIraŋIslàndItaliSerseSamayigSordaniS" + - "àppoŋKeeñaKirgistaŋKàmbojKiribatiKomoorSaŋ Kits ak NewisKore NoorKo" + - "wetDuni KaymaŋKasaxstaŋLawosLibaaSaŋ LusiLiktensteyinSiri LànkaLiber" + - "iyaLesotoLitiyaniLiksàmburLetoniLibiMarogMonakoMoldawiMontenegoroSaŋ" + - " MarteŋMadagaskaarDuni MarsaalMaseduwaanMaliMiyanmaarMongoliDuni Mar" + - "iyaan NoorMartinikMooritaniMooseraaMaltMoriisMaldiiwMalawiMeksikoMal" + - "esiMosàmbigNamibiNuwel KaledoniNiiseerDunu NorfolkNiseriyaNikaraguwa" + - "Peyi BaaNorweesNepaalNawruNiwNuwel SelàndOmaanPanamaPeruPolinesi Far" + - "añsePapuwasi Gine Gu BeesFilipinPakistaŋPoloñSaŋ Peer ak MikeloŋDuni" + - " PitkayirnPorto RikoPortigaalPalawParaguweKataarReeñooRumaniSerbiRis" + - "iRuwàndaArabi SawudiDuni SalmoonSeyselSudaŋSuwedSingapuurSaŋ EleenEs" + - "loweniSwalbaar ak Jan MayenEslowakiSiyera LewonSan MarinoSenegaalSom" + - "aliSirinamSudaŋ di SidSawo Tome ak PirinsipeEl SalwadoorSin MartenSi" + - "riSuwasilàndDuni Tirk ak KaykosCàddTeer Ostraal gu FraasTogoTaylàndT" + - "ajikistaŋTokolooTimor LesteTirkmenistaŋTinisiTongaTirkiTirinite ak T" + - "obagoTuwaloTaywanTaŋsaniIkerenUgàndaDuni Amerig Utar meerEtaa SiniUr" + - "ugeUsbekistaŋSite bu WatikaaSaŋ Weesaa ak GaranadinWenesiyelaDuni Wi" + - "rsin yu BrëtaañDuni Wirsin yu Etaa-siniWiyetnamWanuatuWalis ak Futun" + - "aSamowaKosowoYamanMayotAfrik di SidSàmbiSimbabweGox buñ xamul", - []uint16{ // 262 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x0014, 0x001f, 0x0032, 0x0038, 0x003e, - 0x0044, 0x004c, 0x0055, 0x005e, 0x006e, 0x0076, 0x007e, 0x0083, - 0x008f, 0x009a, 0x00a9, 0x00af, 0x00b9, 0x00bf, 0x00cc, 0x00d3, - 0x00db, 0x00e2, 0x00e7, 0x00f5, 0x00fb, 0x0101, 0x0107, 0x0107, - 0x010e, 0x0115, 0x011b, 0x0125, 0x012d, 0x0134, 0x0139, 0x0140, - 0x0151, 0x0151, 0x0167, 0x0167, 0x016c, 0x0187, 0x0190, 0x0194, - 0x019b, 0x019f, 0x01a6, 0x01a6, 0x01b0, 0x01b4, 0x01be, 0x01c5, - 0x01d2, 0x01d8, 0x01e3, 0x01ea, 0x01ea, 0x01f0, 0x01f8, 0x01ff, - // Entry 40 - 7F - 0x0211, 0x0217, 0x0217, 0x0220, 0x0226, 0x022b, 0x022b, 0x0232, - 0x0238, 0x023d, 0x023d, 0x023d, 0x0245, 0x024a, 0x0257, 0x0261, - 0x026a, 0x0271, 0x0277, 0x0283, 0x028a, 0x0291, 0x02a0, 0x02a7, - 0x02ab, 0x02b5, 0x02bf, 0x02c5, 0x02c9, 0x02d3, 0x02e4, 0x02ea, - 0x0311, 0x031b, 0x0320, 0x032e, 0x0334, 0x0334, 0x0350, 0x0358, - 0x0360, 0x0364, 0x036a, 0x036a, 0x0372, 0x0379, 0x0380, 0x0389, - 0x038c, 0x03b2, 0x03b6, 0x03bb, 0x03c2, 0x03c7, 0x03cc, 0x03d3, - 0x03da, 0x03e2, 0x03e8, 0x03f2, 0x03f9, 0x0401, 0x0407, 0x0419, - // Entry 80 - BF - 0x0422, 0x0422, 0x0427, 0x0433, 0x043d, 0x0442, 0x0447, 0x0450, - 0x045c, 0x0467, 0x046f, 0x0475, 0x047d, 0x0487, 0x048d, 0x0491, - 0x0496, 0x049c, 0x04a3, 0x04ae, 0x04ba, 0x04c5, 0x04d1, 0x04db, - 0x04df, 0x04e8, 0x04ef, 0x04ef, 0x0501, 0x0509, 0x0512, 0x051a, - 0x051e, 0x0524, 0x052b, 0x0531, 0x0538, 0x053e, 0x0547, 0x054d, - 0x055b, 0x0562, 0x056e, 0x0576, 0x0580, 0x0588, 0x058f, 0x0595, - 0x059a, 0x059d, 0x05aa, 0x05af, 0x05b5, 0x05b9, 0x05ca, 0x05df, - 0x05e6, 0x05ef, 0x05f5, 0x060a, 0x0618, 0x0622, 0x0622, 0x062b, - // Entry C0 - FF - 0x0630, 0x0638, 0x063e, 0x063e, 0x0645, 0x064b, 0x0650, 0x0654, - 0x065c, 0x0668, 0x0674, 0x067a, 0x0680, 0x0685, 0x068e, 0x0698, - 0x06a0, 0x06b5, 0x06bd, 0x06c9, 0x06d3, 0x06db, 0x06e1, 0x06e8, - 0x06f5, 0x070b, 0x0717, 0x0721, 0x0725, 0x0730, 0x0730, 0x0743, - 0x0748, 0x075d, 0x0761, 0x0769, 0x0774, 0x077b, 0x0786, 0x0793, - 0x0799, 0x079e, 0x07a3, 0x07b5, 0x07bb, 0x07c1, 0x07c9, 0x07cf, - 0x07d6, 0x07eb, 0x07eb, 0x07f4, 0x07f9, 0x0804, 0x0813, 0x082b, - 0x0835, 0x084d, 0x0865, 0x086d, 0x0874, 0x0883, 0x0889, 0x088f, - // Entry 100 - 13F - 0x0894, 0x0899, 0x08a5, 0x08ab, 0x08b3, 0x08c1, - }, - }, - { // xog - "AndoraEmireetiAfaganisitaniAntigwa ni BarabudaAngwilaAlibaniyaArameniyaA" + - "ngolaArigentinaSamowa omumerikaAwusituriyaAwusitureliyaArubaAzerebay" + - "ijaaniBoziniya HezegovinaBarabadosiBangaladesiBubirigiBurukina FasoB" + - "ulugariyaBaareeniBurundiBeniniBeremudaBurunayiBoliviyaBuraziiriBaham" + - "asiButaaniBotiswanaBelarusiBelizeKanadaKongo - ZayireLipabulika ya S" + - "enturafirikiKongoSwitizirandiKote DivwaEbizinga bya KkukiCileKameruu" + - "niCayinaKolombyaKosita RikaCubaEbizinga bya Kepu VerediSipuriyaLipab" + - "ulika ya CeekaBudaakiJjibutiDenimaakaDominikaLipabulika ya DominikaA" + - "ligeryaEkwadoEsitoniyaMisiriEritureyaSipeyiniEsyopyaFinilandiFijiEbi" + - "izinga bya FalikalandiMikuronezyaBufalansaGaboniBungerezaGurenadaGyo" + - "gyaGuyana enfalansaGanaGiburalitaGurenelandiGambyaGiniGwadalupeGayan" + - "a yaku ekwetaBuyonaaniGwatemalaGwamuGini-BisawuGayanaHundurasiKurowe" + - "syaHayitiHangareYindonezyaAyalandiYisirayeriBuyindiEbizinga bya Cago" + - "YiraakaYiraaniAyisirandiYitaleJamayikaYorodaniJapaniKenyaKirigizisit" + - "aaniKambodyaKiribatiEbizinga bya KomoroSenti Kitisi ne NevisiKoreya " + - "eya mumambukaKoreya eya mumaserengetaKuwetiEbizinga bya KayimaaniKaz" + - "akisitaaniLawosiLebanoniSenti LuciyaLicitensitayiniSirilankaLiberyaL" + - "esosoLisuwenyaLukisembaagaLativyaLibyaMorokoMonakoMolodovaMadagasika" + - "Bizinga bya MarisoMasedoniyaMaliMyanimaMongoliyaBizinga bya Mariyana" + - " ebyamumambukaMaritiniikiMawulitenyaMonteseraatiMalitaMawulisyasiEbi" + - "zinga bya MalidiveMalawiMekisikoMalezyaMozambiikiNamibiyaKaledonya m" + - "upyaNijeKizinga ky’eNorofokoNayijeryaNikaraguwaHolandiNoweNepaloNawu" + - "ruNiyuweNiyuziirandiOmaaniPanamaPeruPolinesiya enfalansaPapwa Nyugin" + - "iEbizinga bya FiripinoPakisitaaniPolandiSenti Piyere ni MikeloniPiti" + - "keeniPotorikoPalesitayini ni GazaPotugaaliPalawuParagwayiKataaLeyuny" + - "oniLomaniyaLasaRwandaSawudarebyaEbizanga bya SolomooniSesereSudaaniS" + - "wideniSingapowaSenti HerenaSirovenyaSirovakyaSiyeralewoneSanimarinoS" + - "enegaaloSomaliyaSurinaamuSanitome ni PurincipeEl salivadoSiriyaSwazi" + - "randiEbizinga bya Taaka ni KayikosiCaadiTogoTayirandiTajikisitaaniTo" + - "kelawuTimowaTakimenesitaaniTunisyaTongaTtakeTurindaadi ni TobagoTuva" + - "luTayiwaniYukurayineYugandaAmerikaWurugwayiWuzibekisitaaniVatikaaniS" + - "enti Vinsenti ni GurendadiiniVenzweraEbizinga bya Virigini ebitwalib" + - "wa BungerezaEbizinga bya Virigini eby’AmerikaVyetinaamuVanawuwatuWal" + - "isi ni FutunaSamowaYemeniMayotteSawusafirikaZambyaZimbabwe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0006, 0x000e, 0x001b, 0x002e, 0x0035, 0x003e, - 0x0047, 0x004d, 0x004d, 0x0057, 0x0067, 0x0072, 0x007f, 0x0084, - 0x0084, 0x0092, 0x00a5, 0x00af, 0x00ba, 0x00c2, 0x00cf, 0x00d9, - 0x00e1, 0x00e8, 0x00ee, 0x00ee, 0x00f6, 0x00fe, 0x0106, 0x0106, - 0x010f, 0x0117, 0x011e, 0x011e, 0x0127, 0x012f, 0x0135, 0x013b, - 0x013b, 0x0149, 0x0164, 0x0169, 0x0175, 0x017f, 0x0191, 0x0195, - 0x019e, 0x01a4, 0x01ac, 0x01ac, 0x01b7, 0x01bb, 0x01d3, 0x01d3, - 0x01d3, 0x01db, 0x01ee, 0x01f5, 0x01f5, 0x01fc, 0x0205, 0x020d, - // Entry 40 - 7F - 0x0223, 0x022b, 0x022b, 0x0231, 0x023a, 0x0240, 0x0240, 0x0249, - 0x0251, 0x0258, 0x0258, 0x0258, 0x0261, 0x0265, 0x027e, 0x0289, - 0x0289, 0x0292, 0x0298, 0x02a1, 0x02a9, 0x02af, 0x02bf, 0x02bf, - 0x02c3, 0x02cd, 0x02d8, 0x02de, 0x02e2, 0x02eb, 0x02fd, 0x0306, - 0x0306, 0x030f, 0x0314, 0x031f, 0x0325, 0x0325, 0x0325, 0x032e, - 0x0337, 0x033d, 0x0344, 0x0344, 0x034e, 0x0356, 0x0360, 0x0360, - 0x0367, 0x0378, 0x037f, 0x0386, 0x0390, 0x0396, 0x0396, 0x039e, - 0x03a6, 0x03ac, 0x03b1, 0x03c0, 0x03c8, 0x03d0, 0x03e3, 0x03f9, - // Entry 80 - BF - 0x040d, 0x0425, 0x042b, 0x0441, 0x044e, 0x0454, 0x045c, 0x0468, - 0x0477, 0x0480, 0x0487, 0x048d, 0x0496, 0x04a2, 0x04a9, 0x04ae, - 0x04b4, 0x04ba, 0x04c2, 0x04c2, 0x04c2, 0x04cc, 0x04de, 0x04e8, - 0x04ec, 0x04f3, 0x04fc, 0x04fc, 0x051e, 0x0529, 0x0534, 0x0540, - 0x0546, 0x0551, 0x0566, 0x056c, 0x0574, 0x057b, 0x0585, 0x058d, - 0x059c, 0x05a0, 0x05b6, 0x05bf, 0x05c9, 0x05d0, 0x05d4, 0x05da, - 0x05e0, 0x05e6, 0x05f2, 0x05f8, 0x05fe, 0x0602, 0x0616, 0x0623, - 0x0638, 0x0643, 0x064a, 0x0662, 0x066b, 0x0673, 0x0687, 0x0690, - // Entry C0 - FF - 0x0696, 0x069f, 0x06a4, 0x06a4, 0x06ad, 0x06b5, 0x06b5, 0x06b9, - 0x06bf, 0x06ca, 0x06e0, 0x06e6, 0x06ed, 0x06f4, 0x06fd, 0x0709, - 0x0712, 0x0712, 0x071b, 0x0727, 0x0731, 0x073a, 0x0742, 0x074b, - 0x074b, 0x0760, 0x076b, 0x076b, 0x0771, 0x077b, 0x077b, 0x0799, - 0x079e, 0x079e, 0x07a2, 0x07ab, 0x07b8, 0x07c0, 0x07c6, 0x07d5, - 0x07dc, 0x07e1, 0x07e6, 0x07fa, 0x0800, 0x0808, 0x0808, 0x0812, - 0x0819, 0x0819, 0x0819, 0x0820, 0x0829, 0x0838, 0x0841, 0x085f, - 0x0867, 0x0892, 0x08b5, 0x08bf, 0x08c9, 0x08d9, 0x08df, 0x08df, - // Entry 100 - 13F - 0x08e5, 0x08ec, 0x08f8, 0x08fe, 0x0906, - }, - }, - { // yav - "Aŋtúlaimiláat i paaláapAfkanistáŋAŋtíka na PalpútaAŋkílaAlpaníAlmaníaAŋk" + - "úlaAlsaŋtínSámua u AmelíkaOtilísOtalalíAlúpaAsɛlpaisáŋPusiní-ɛlkofí" + - "naPalpatósPaŋkalatɛsPɛlsíikPulikínafásóPulukalíiPalɛŋPúlúndíPenɛŋPɛl" + - "mútaPulunéyPolífiaPilesílPahámasPutaŋPosuánaPelalúsPelíseKánátakitɔŋ" + - " kí kongóSantalafilíikKongósuwíisKótifualɛKúukeSilíKemelúnSíineKɔlɔ́" + - "mbíaKóstálíkakúpaKápfɛlsíplɛkitɔŋ kí cɛ́knsámansíputítanemálktúmúnék" + - "ekitɔŋ kí tumunikɛ́ŋAlselíekuatɛ́lɛstoniisípitelitéepanyáetiopífɛnlá" + - "ndfísimaluwínmikolonesífelensíkapɔ́ŋingilíískelenáatsɔlsíikuyáan u f" + - "elensíkanásílpalatáalkuluɛnlándkambíikiinékuatelúupkinéekuatolialkil" + - "ɛ́ɛkkuatemalákuamiɛkiinépisaókuyáanɔndúlasKolowasíiayítiɔngilíɛndon" + - "esíililándísilayɛ́lɛ́ɛndKɔɔ́m kí ndián yi ngilísilákiláŋisláanditalí" + - "samayíiksɔltanísapɔ́ɔŋkéniakilikisistáŋKámbósekilipatíKɔmɔ́ɔlsɛ́ŋkil" + - "istɔ́f eniɛ́fkɔlé u muɛnɛ́kɔlé wu mbátkowéetKáyímanɛkasaksitáŋlawósl" + - "ipáŋsɛ́ŋtɛ́lusílístɛ́nsitáyinsilíláŋkalipélialesotólitiyaníliksambúu" + - "lletonílipíimalóokmonakómoltafímatakaskáalílmalasáalmasetuánmalímiaŋ" + - "máalmongolíil maliyanɛ u muɛnɛ́maltiníikmolitanímɔŋsilámálɛ́tmolísma" + - "letíifmalawímɛksíikmalesímosambíknamipínufɛ́l kaletonínisɛ́ɛlil nɔ́l" + - "fɔ́lɔknisélianikalakánitililáandnɔlfɛ́ɛsnepáalnawulúniyuwénufɛ́l sel" + - "áandomáŋpanamápelúpolinesí u felensípapuasí nufɛ́l kiinéfilipíinpak" + - "istáŋpɔlɔ́ɔnysɛ́ŋpiɛ́l e mikelɔ́ŋpitikɛ́ɛlínɛ́pólótolíkokitɔŋ ki pal" + - "ɛstíinpɔltukáalpalawúpalakúékatáalelewuniɔ́ŋulumaníulusíuluándáalap" + - "ísawutíitil salomɔ́ŋsesɛ́ɛlsutáaŋsuɛ́tsingapúulsɛ́ŋtɛ́ elɛ́ɛnɛsilof" + - "enísilofakísieláleyɔ́ɔnsan malínosenekáalsomalísulináamsáwó tomé e p" + - "elensípesalfatɔ́ɔlsuasiláandtúluk na káyiikSáattokótayiláandtasikist" + - "áaŋtokelótimɔ́ɔl u nipálɛ́ntulukmenisitáaŋtunusítɔ́ŋkatulukíitilini" + - "táat na tupákɔtufalútayiwáantaŋsaníukilɛ́ɛnukándaamálíkaulukuéyusupe" + - "kistáaŋfatikáaŋsɛ́ŋ fɛŋsáŋ elekelenatíinfenesuweláFilisíin ungilíspi" + - "ndisúlɛ́ pi amálíkafiɛtnáamfanuatúwalíis na futúnasamowáyémɛnmayɔ́ɔt" + - "afilí mbátɛ́saambíisimbapuwé", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0008, 0x001b, 0x0027, 0x003b, 0x0043, 0x004a, - 0x0052, 0x005a, 0x005a, 0x0064, 0x0075, 0x007c, 0x0084, 0x008a, - 0x008a, 0x0097, 0x00a9, 0x00b2, 0x00be, 0x00c7, 0x00d6, 0x00e0, - 0x00e7, 0x00f1, 0x00f8, 0x00f8, 0x0101, 0x0109, 0x0111, 0x0111, - 0x0119, 0x0121, 0x0127, 0x0127, 0x012f, 0x0137, 0x013e, 0x0146, - 0x0146, 0x0158, 0x0166, 0x016c, 0x0173, 0x017e, 0x0184, 0x0189, - 0x0191, 0x0197, 0x01a4, 0x01a4, 0x01b0, 0x01b5, 0x01bd, 0x01bd, - 0x01bd, 0x01c4, 0x01d6, 0x01dd, 0x01dd, 0x01e5, 0x01ee, 0x01f9, - // Entry 40 - 7F - 0x0212, 0x0219, 0x0219, 0x0223, 0x022a, 0x0231, 0x0231, 0x0238, - 0x023e, 0x0245, 0x0245, 0x0245, 0x024e, 0x0253, 0x025b, 0x0266, - 0x0266, 0x026e, 0x0277, 0x0281, 0x028a, 0x0292, 0x02a4, 0x02a4, - 0x02a9, 0x02b6, 0x02c2, 0x02c9, 0x02cf, 0x02d9, 0x02e8, 0x02f2, - 0x02f2, 0x02fc, 0x0303, 0x030f, 0x0316, 0x0316, 0x0316, 0x031f, - 0x0329, 0x032f, 0x0337, 0x0337, 0x0341, 0x0349, 0x0355, 0x0355, - 0x035d, 0x037b, 0x0380, 0x0386, 0x038e, 0x0394, 0x0394, 0x039d, - 0x03a6, 0x03b1, 0x03b7, 0x03c5, 0x03ce, 0x03d7, 0x03e2, 0x03fd, - // Entry 80 - BF - 0x040f, 0x041e, 0x0425, 0x0430, 0x043c, 0x0442, 0x0449, 0x045a, - 0x046c, 0x0478, 0x0480, 0x0487, 0x0490, 0x049b, 0x04a2, 0x04a8, - 0x04af, 0x04b6, 0x04be, 0x04be, 0x04be, 0x04ca, 0x04d6, 0x04df, - 0x04e4, 0x04ee, 0x04f6, 0x04f6, 0x050e, 0x0518, 0x0521, 0x052b, - 0x0534, 0x053a, 0x0543, 0x054a, 0x0553, 0x055a, 0x0563, 0x056a, - 0x057c, 0x0586, 0x0598, 0x05a0, 0x05a9, 0x05b5, 0x05c1, 0x05c8, - 0x05cf, 0x05d6, 0x05e7, 0x05ed, 0x05f4, 0x05f9, 0x060d, 0x0625, - 0x062e, 0x0638, 0x0644, 0x0660, 0x0673, 0x0680, 0x0696, 0x06a1, - // Entry C0 - FF - 0x06a8, 0x06b1, 0x06b8, 0x06b8, 0x06c5, 0x06cd, 0x06cd, 0x06d3, - 0x06dc, 0x06eb, 0x06f9, 0x0703, 0x070b, 0x0712, 0x071c, 0x0734, - 0x073d, 0x073d, 0x0746, 0x0756, 0x0761, 0x076a, 0x0771, 0x077a, - 0x077a, 0x0793, 0x07a0, 0x07a0, 0x07a0, 0x07ab, 0x07ab, 0x07bc, - 0x07c1, 0x07c1, 0x07c6, 0x07d0, 0x07dd, 0x07e4, 0x07fc, 0x080d, - 0x0814, 0x081d, 0x0825, 0x083c, 0x0843, 0x084c, 0x0855, 0x0860, - 0x0867, 0x0867, 0x0867, 0x0870, 0x0878, 0x0886, 0x0890, 0x08b1, - 0x08bc, 0x08ce, 0x08e8, 0x08f2, 0x08fa, 0x090c, 0x0913, 0x0913, - // Entry 100 - 13F - 0x091a, 0x0924, 0x0934, 0x093c, 0x0946, - }, - }, - { // yi - "אַנדארעאַפֿגהאַניסטאַןאַנטיגוע און באַרבודעאַלבאַניעאַרמעניעאַנגאלעאַנטא" + - "ַרקטיקעאַרגענטינעעסטרייךאויסטראַליעאַרובאַבאסניע הערצעגאווינעבאַרבא" + - "ַדאסבאַנגלאַדעשבעלגיעבורקינע פֿאַסאבולגאַריעבורונדיבעניןבערמודעברונ" + - "ייבאליוויעבראַזילבאַהאַמאַסבהוטאַןבאצוואַנעבעלאַרוסבעליזקאַנאַדעקאנ" + - "גא־קינשאַזעצענטראַל־אַפֿריקאַנישע רעפּובליקשווייץהעלפֿאַ נדביין באר" + - "טןקוק אינזלעןטשילעקאַמערוןכינעקאלאמביעקאסטאַ ריקאַקובאַקאַפּווערדיש" + - "ע אינזלעןקוראַסאַאטשעכיידייטשלאַנדדזשיבוטידענמאַרקדאמיניקעדאמיניקאַ" + - "נישע רעפּובליקעקוואַדארעסטלאַנדעגיפּטןעריטרעעשפּאַניעעטיאפּיעאייראפ" + - "ּעישער פֿאַרבאַנדפֿינלאַנדפֿידזשיפֿאַלקלאַנד אינזלעןמיקראנעזיעפֿאַר" + - "א אינזלעןפֿראַנקרייךגאַבאןפֿאַראייניגטע קעניגרייךגרענאַדאַגרוזיעפֿר" + - "אַנצויזישע גויאַנעגערנזיגהאַנעגיבראַלטאַרגרינלאַנדגאַמביעגינעגוואַד" + - "עלופעקוואַטארישע גינעגריכנלאַנדגוואַטעמאַלעגוואַםגינע־ביסאַוגויאַנע" + - "האנדוראַסקראאַטיעהאַיטיאונגערןקאַנאַרישע אינזלעןאינדאנעזיעאירלאַנדי" + - "שראלאינדיעאיראַןאיסלאַנדאיטאַליעדזשערזידזשאַמייקעיאַפּאַןקעניעקאַמב" + - "אדיעקיריבאַטיקאמאראסקיימאַן אינזלעןלאַאסלבנוןליכטנשטייןסרי־לאַנקאַל" + - "יבעריעלעסאטאליטעלוקסעמבורגלעטלאַנדליביעמאַראקאמאנאַקאמאלדאוועמאנטענ" + - "עגראמאַדאַגאַסקאַרמאַרשאַל אינזלעןמאַקעדאניעמאַלימיאַנמאַרמאנגאליימ" + - "אַרטיניקמאַריטאַניעמאנטסעראַטמאַלטאַמאריציוסמאַלדיווןמאַלאַווימעקסי" + - "קעמאַלייזיעמאזאַמביקנאַמיביענײַ קאַלעדאניעניזשערנארפֿאלק אינזלניגער" + - "יעניקאַראַגועהאלאַנדנארוועגיענעפּאַלניו זילאַנדפּאַנאַמאַפּערופֿראַ" + - "נצויזישע פּאלינעזיעפּאַפּואַ נײַ גינעפֿיליפּינעןפּאַקיסטאַןפּוילןפּ" + - "יטקערן אינזלעןפּארטא־ריקאפּארטוגאַלפּאַראַגווײַקאַטאַררעאוניאןרומענ" + - "יעסערביערוסלאַנדרוואַנדעסאלאמאן אינזלעןסיישעלסודאַןשוועדןסינגאַפּור" + - "סט העלענעסלאוועניעסלאוואַקייסיערע לעאנעסאַן מאַרינאסענעגאַלסאמאַליע" + - "סורינאַםדרום־סודאַןסאַא טאמע און פּרינסיפּעעל סאַלוואַדארסיריעסוואַ" + - "זילאַנדטשאַדטאגאטיילאַנדטורקמעניסטאַןטוניסיעטאנגאַטערקייטרינידאַד א" + - "ון טאבאַגאטואוואַלוטאַנזאַניעאוקראַינעאוגאַנדעפֿאַראייניגטע שטאַטןא" + - "ורוגווייוואַטיקאַן שטאָטווענעזועלעוויעטנאַםוואַנואַטוסאַמאאַקאסאווא" + - "תימןמאַיאטדרום־אַפֿריקעזאַמביעזימבאַבוועאומבאַוואוסטער ראַיאןוועלטא" + - "ַפֿריקעצפון־אַמעריקעדרום־אַמעריקעאקעאַניעצענטראַל־אַמעריקעאַמעריקעצ" + - "פונדיקע אַמעריקעקאַראַאיבעמזרח אַזיעדרום־אַזיעדרום־מזרח אַזיעדרום־א" + - "ייראפּעפּאלינעזיעאַזיעצענטראַל־אַזיעמערב־אַזיעאייראפּעמזרח־אייראפּע" + - "צפֿון־אייראפּעמערב־אייראפּעלאַטיין־אַמעריקע", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x000e, 0x000e, 0x002c, 0x0054, 0x0054, 0x0066, - 0x0076, 0x0084, 0x009c, 0x00b0, 0x00b0, 0x00be, 0x00d4, 0x00e2, - 0x00e2, 0x00e2, 0x0107, 0x011b, 0x0131, 0x013d, 0x0158, 0x016a, - 0x016a, 0x0178, 0x0182, 0x0182, 0x0190, 0x019c, 0x01ac, 0x01ac, - 0x01ba, 0x01ce, 0x01dc, 0x01dc, 0x01ee, 0x01fe, 0x0208, 0x0218, - 0x0218, 0x0234, 0x0273, 0x0273, 0x027f, 0x02a5, 0x02ba, 0x02c4, - 0x02d4, 0x02dc, 0x02ec, 0x02ec, 0x0303, 0x030d, 0x0336, 0x0348, - 0x0348, 0x0348, 0x0354, 0x0368, 0x0368, 0x0378, 0x0388, 0x0398, - // Entry 40 - 7F - 0x03c5, 0x03c5, 0x03c5, 0x03d7, 0x03e7, 0x03f5, 0x03f5, 0x0403, - 0x0413, 0x0423, 0x0450, 0x0450, 0x0462, 0x0470, 0x0495, 0x04a9, - 0x04c4, 0x04da, 0x04e6, 0x0513, 0x0525, 0x0531, 0x055a, 0x0566, - 0x0572, 0x0588, 0x059a, 0x05a8, 0x05b0, 0x05c4, 0x05e5, 0x05f9, - 0x05f9, 0x0611, 0x061d, 0x0633, 0x0641, 0x0641, 0x0641, 0x0653, - 0x0663, 0x066f, 0x067d, 0x06a0, 0x06b4, 0x06c4, 0x06ce, 0x06ce, - 0x06da, 0x06da, 0x06da, 0x06e6, 0x06f6, 0x0706, 0x0714, 0x0728, - 0x0728, 0x0738, 0x0742, 0x0742, 0x0754, 0x0766, 0x0774, 0x0774, - // Entry 80 - BF - 0x0774, 0x0774, 0x0774, 0x0791, 0x0791, 0x079b, 0x07a5, 0x07a5, - 0x07b9, 0x07cf, 0x07dd, 0x07e9, 0x07f1, 0x0805, 0x0815, 0x081f, - 0x082d, 0x083b, 0x084b, 0x085f, 0x085f, 0x087b, 0x089a, 0x08ae, - 0x08b8, 0x08ca, 0x08da, 0x08da, 0x08da, 0x08ec, 0x0902, 0x0916, - 0x0924, 0x0934, 0x0946, 0x0958, 0x0966, 0x0978, 0x098a, 0x099a, - 0x09b5, 0x09c1, 0x09dc, 0x09ea, 0x0a00, 0x0a0e, 0x0a20, 0x0a2e, - 0x0a2e, 0x0a2e, 0x0a43, 0x0a43, 0x0a57, 0x0a61, 0x0a90, 0x0ab2, - 0x0ac8, 0x0ade, 0x0aea, 0x0aea, 0x0b09, 0x0b1f, 0x0b1f, 0x0b33, - // Entry C0 - FF - 0x0b33, 0x0b4b, 0x0b59, 0x0b59, 0x0b69, 0x0b77, 0x0b83, 0x0b93, - 0x0ba3, 0x0ba3, 0x0bc0, 0x0bcc, 0x0bd8, 0x0be4, 0x0bf8, 0x0c09, - 0x0c1b, 0x0c1b, 0x0c2f, 0x0c44, 0x0c5b, 0x0c6b, 0x0c7b, 0x0c8b, - 0x0ca1, 0x0cce, 0x0ce9, 0x0ce9, 0x0cf3, 0x0d0b, 0x0d0b, 0x0d0b, - 0x0d15, 0x0d15, 0x0d1d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d2d, 0x0d47, - 0x0d55, 0x0d61, 0x0d6d, 0x0d95, 0x0da7, 0x0da7, 0x0dbb, 0x0dcd, - 0x0ddd, 0x0ddd, 0x0ddd, 0x0e04, 0x0e16, 0x0e16, 0x0e35, 0x0e35, - 0x0e49, 0x0e49, 0x0e49, 0x0e5b, 0x0e6f, 0x0e6f, 0x0e7d, 0x0e8b, - // Entry 100 - 13F - 0x0e93, 0x0e9f, 0x0eb9, 0x0ec7, 0x0edb, 0x0f04, 0x0f0e, 0x0f1e, - 0x0f38, 0x0f52, 0x0f62, 0x0f62, 0x0f84, 0x0f84, 0x0f84, 0x0f84, - 0x0f84, 0x0f94, 0x0fb5, 0x0fc9, 0x0fdc, 0x0ff0, 0x100d, 0x1027, - 0x1027, 0x1027, 0x1027, 0x103b, 0x1045, 0x1061, 0x1075, 0x1085, - 0x109f, 0x10bb, 0x10d5, 0x10d5, 0x10f5, - }, - }, - { // yo - "Orílẹ́ède ÀàndóràOrílẹ́ède Ẹmirate ti Awọn ArabuOrílẹ́ède ÀfùgànístánìOr" + - "ílẹ́ède Ààntígúà àti BáríbúdàOrílẹ́ède ÀàngúlílàOrílẹ́ède Àlùbàníán" + - "ìOrílẹ́ède AméníàOrílẹ́ède ÀàngólàOrílẹ́ède AgentínàSámóánì ti Oríl" + - "ẹ́ède ÀméríkàOrílẹ́ède AsítíríàOrílẹ́ède ÁstràlìáOrílẹ́ède ÁrúbàOr" + - "ílẹ́ède Asẹ́bájánìOrílẹ́ède Bọ̀síníà àti ẸtisẹgófínàOrílẹ́ède Bábád" + - "ósìOrílẹ́ède BángáládésìOrílẹ́ède Bégíọ́mùOrílẹ́ède Bùùkíná FasòOrí" + - "lẹ́ède BùùgáríàOrílẹ́ède BáránìOrílẹ́ède BùùrúndìOrílẹ́ède Bẹ̀nẹ̀Orí" + - "lẹ́ède BémúdàOrílẹ́ède Búrúnẹ́lìOrílẹ́ède Bọ̀lífíyàOrílẹ́ède Bàràsíl" + - "ìOrílẹ́ède BàhámásìOrílẹ́ède BútánìOrílẹ́ède Bọ̀tìsúwánàOrílẹ́ède B" + - "élárúsìOrílẹ́ède Bèlísẹ̀Orílẹ́ède KánádàOrilẹ́ède KóngòOrílẹ́ède Àr" + - "in gùngun ÁfíríkàOrílẹ́ède KóngòOrílẹ́ède switiṣilandiOrílẹ́ède Kóút" + - "è foràOrílẹ́ède Etíokun KùúkùOrílẹ́ède ṣílèOrílẹ́ède KamerúúnìOrílẹ" + - "́ède ṣáínàOrílẹ́ède KòlómíbìaOrílẹ́ède Kuusita RíkàOrílẹ́ède KúbàOr" + - "ílẹ́ède Etíokun Kápé féndèOrílẹ́ède KúrúsìOrílẹ́ède ṣẹ́ẹ́kìOrílẹ́èd" + - "e GemaniOrílẹ́ède Díbọ́ótìOrílẹ́ède Dẹ́mákìOrílẹ́ède DòmíníkàOrilẹ́è" + - "de DòmíníkánìOrílẹ́ède ÀlùgèríánìOrílẹ́ède EkuádòOrílẹ́ède EsitoniaO" + - "rílẹ́ède ÉgípítìOrílẹ́ède EritiraOrílẹ́ède SipaniOrílẹ́ède EtopiaOrí" + - "lẹ́ède FilandiOrílẹ́ède FijiOrílẹ́ède Etikun FakalandiOrílẹ́ède Mako" + - "ronesiaOrílẹ́ède FaranseOrílẹ́ède GabonOrílẹ́ède OmobabirinOrílẹ́ède" + - " GenadaOrílẹ́ède GọgiaOrílẹ́ède Firenṣi GuanaOrílẹ́ède GanaOrílẹ́ède" + - " GibarataraOrílẹ́ède GerelandiOrílẹ́ède GambiaOrílẹ́ède GeneOrílẹ́èd" + - "e GadelopeOrílẹ́ède Ekutoria GiniOrílẹ́ède GeriisiOrílẹ́ède Guatemal" + - "aOrílẹ́ède GuamuOrílẹ́ède Gene-BusauOrílẹ́ède GuyanaOrílẹ́ède Hondur" + - "asiOrílẹ́ède KòróátíàOrílẹ́ède HaatiOrílẹ́ède HungariOrílẹ́ède Indon" + - "esiaOrílẹ́ède AilandiOrílẹ́ède IserẹliOrílẹ́ède IndiaOrílẹ́ède Etíku" + - "n Índíánì ti Ìlú BírítísìOrílẹ́ède IrakiOrílẹ́ède IraniOrílẹ́ède Aṣi" + - "landiOrílẹ́ède ItaliyiOrílẹ́ède JamaikaOrílẹ́ède JọdaniOrílẹ́ède Jap" + - "aniOrílẹ́ède KenyaOrílẹ́ède KuriṣisitaniOrílẹ́ède KàmùbódíàOrílẹ́ède" + - " KiribatiOrílẹ́ède KòmòrósìOrílẹ́ède Kiiti ati NeefiOrílẹ́ède Guusu " + - "KọriaOrílẹ́ède Ariwa KọriaOrílẹ́ède KuwetiOrílẹ́ède Etíokun KámánìOr" + - "ílẹ́ède KaṣaṣataniOrílẹ́ède LaosiOrílẹ́ède LebanoniOrílẹ́ède LuṣiaO" + - "rílẹ́ède LẹṣitẹnisiteniOrílẹ́ède Siri LankaOrílẹ́ède LaberiaOrílẹ́èd" + - "e LesotoOrílẹ́ède LituaniaOrílẹ́ède LusemogiOrílẹ́ède LatifiaOrílẹ́è" + - "de LibiyaOrílẹ́ède MorokoOrílẹ́ède MonakoOrílẹ́ède ModofiaOrílẹ́ède " + - "MadasikaOrílẹ́ède Etikun MáṣaliOrílẹ́ède MasidoniaOrílẹ́ède MaliOríl" + - "ẹ́ède ManamariOrílẹ́ède MogoliaOrílẹ́ède Etikun Guusu MarianaOrílẹ" + - "́ède MatinikuwiOrílẹ́ède MaritaniaOrílẹ́ède MotseratiOrílẹ́ède Mala" + - "taOrílẹ́ède MaritiusiOrílẹ́ède MaladifiOrílẹ́ède MalawiOrílẹ́ède Mes" + - "ikoOrílẹ́ède MalasiaOrílẹ́ède MoṣamibikuOrílẹ́ède NamibiaOrílẹ́ède K" + - "aledonia TitunOrílẹ́ède NàìjáOrílẹ́ède Etikun Nọ́úfókìOrílẹ́ède Nàìj" + - "íríàOrílẹ́ède NIkaraguaOrílẹ́ède NedalandiOrílẹ́ède NọọwiiOrílẹ́ède" + - " NepaOrílẹ́ède NauruOrílẹ́ède NiueOrílẹ́ède ṣilandi TitunOrílẹ́ède Ọ" + - "ọmaOrílẹ́ède PanamaOrílẹ́ède PeruOrílẹ́ède Firenṣi PolinesiaOrílẹ́" + - "ède Paapu ti GiiniOrílẹ́ède filipiniOrílẹ́ède PakisitanOrílẹ́ède Po" + - "landiOrílẹ́ède Pẹẹri ati mikuloniOrílẹ́ède PikariniOrílẹ́ède Pọto Ri" + - "koOrílẹ́ède Iwọorun Pakisitian ati GaṣaOrílẹ́ède PọtugiOrílẹ́ède Paa" + - "luOrílẹ́ède ParaguyeOrílẹ́ède KotaOrílẹ́ède RiuniyanOrílẹ́ède Romani" + - "yaOrílẹ́ède RọṣiaOrílẹ́ède RuwandaOrílẹ́ède Saudi ArabiaOrílẹ́ède Et" + - "ikun SolomoniOrílẹ́ède seṣẹlẹsiOrílẹ́ède SudaniOrílẹ́ède SwidiniOríl" + - "ẹ́ède SingapoOrílẹ́ède HẹlenaOrílẹ́ède SilofaniaOrílẹ́ède Silofaki" + - "aOrílẹ́ède Siria looniOrílẹ́ède Sani MarinoOrílẹ́ède SẹnẹgaOrílẹ́ède" + - " SomaliaOrílẹ́ède SurinamiOrílẹ́ède Sao tomi ati piriiṣipiOrílẹ́ède " + - "ẸẹsáfádòOrílẹ́ède SiriaOrílẹ́ède SaṣilandOrílẹ́ède Tọọki ati Etiku" + - "n KakọsiOrílẹ́ède ṣààdìOrílẹ́ède TogoOrílẹ́ède TailandiOrílẹ́ède Tak" + - "isitaniOrílẹ́ède TokelauOrílẹ́ède ÌlàOòrùn Tímọ̀Orílẹ́ède Tọọkimenis" + - "itaOrílẹ́ède TuniṣiaOrílẹ́ède TongaOrílẹ́ède TọọkiOrílẹ́ède Tirinida" + - " ati TobagaOrílẹ́ède TufaluOrílẹ́ède TaiwaniOrílẹ́ède TanṣaniaOrílẹ́" + - "ède UkariniOrílẹ́ède UgandaOrílẹ́ède Orilẹede AmerikaOrílẹ́ède Nrug" + - "uayiOrílẹ́ède NṣibẹkisitaniÌlú VaticanOrílẹ́ède Fisẹnnti ati Genadin" + - "aOrílẹ́ède FẹnẹṣuẹlaOrílẹ́ède Etíkun Fágínì ti ìlú BírítísìOrílẹ́ède" + - " Etikun Fagini ti AmẹrikaOrílẹ́ède FẹtinamiOrílẹ́ède FaniatuOrílẹ́èd" + - "e Wali ati futunaOrílẹ́ède SamọOrílẹ́ède yemeniOrílẹ́ède MayoteOrílẹ" + - "́ède Ariwa AfirikaOrílẹ́ède ṣamibiaOrílẹ́ède ṣimibabe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x001a, 0x0042, 0x0063, 0x0091, 0x00ae, 0x00cd, - 0x00e5, 0x00ff, 0x00ff, 0x0118, 0x0141, 0x015c, 0x0177, 0x018e, - 0x018e, 0x01ad, 0x01e2, 0x01fd, 0x021c, 0x0239, 0x0259, 0x0275, - 0x028d, 0x02a8, 0x02c3, 0x02c3, 0x02db, 0x02f9, 0x0317, 0x0317, - 0x0332, 0x034d, 0x0365, 0x0365, 0x0386, 0x03a1, 0x03bc, 0x03d4, - 0x03d4, 0x03e9, 0x0411, 0x0427, 0x0444, 0x0461, 0x0481, 0x0498, - 0x04b3, 0x04cc, 0x04e8, 0x04e8, 0x0505, 0x051a, 0x0540, 0x0540, - 0x0540, 0x0558, 0x0577, 0x058c, 0x058c, 0x05a9, 0x05c4, 0x05df, - // Entry 40 - 7F - 0x05fc, 0x061b, 0x061b, 0x0632, 0x0649, 0x0663, 0x0663, 0x0679, - 0x068e, 0x06a3, 0x06a3, 0x06a3, 0x06b9, 0x06cc, 0x06eb, 0x0705, - 0x0705, 0x071b, 0x072f, 0x0748, 0x075d, 0x0773, 0x0791, 0x0791, - 0x07a4, 0x07bd, 0x07d5, 0x07ea, 0x07fd, 0x0814, 0x0830, 0x0846, - 0x0846, 0x085e, 0x0872, 0x088b, 0x08a0, 0x08a0, 0x08a0, 0x08b8, - 0x08d4, 0x08e8, 0x08fe, 0x08fe, 0x0916, 0x092c, 0x0944, 0x0944, - 0x0958, 0x0990, 0x09a4, 0x09b8, 0x09d1, 0x09e7, 0x09e7, 0x09fd, - 0x0a14, 0x0a29, 0x0a3d, 0x0a5a, 0x0a77, 0x0a8e, 0x0aa9, 0x0ac7, - // Entry 80 - BF - 0x0ae3, 0x0aff, 0x0b14, 0x0b35, 0x0b52, 0x0b66, 0x0b7d, 0x0b93, - 0x0bb6, 0x0bcf, 0x0be5, 0x0bfa, 0x0c11, 0x0c28, 0x0c3e, 0x0c53, - 0x0c68, 0x0c7d, 0x0c93, 0x0c93, 0x0c93, 0x0caa, 0x0cc9, 0x0ce1, - 0x0cf4, 0x0d0b, 0x0d21, 0x0d21, 0x0d44, 0x0d5d, 0x0d75, 0x0d8d, - 0x0da2, 0x0dba, 0x0dd1, 0x0de6, 0x0dfb, 0x0e11, 0x0e2c, 0x0e42, - 0x0e60, 0x0e77, 0x0e9b, 0x0eb7, 0x0ecf, 0x0ee7, 0x0f00, 0x0f13, - 0x0f27, 0x0f3a, 0x0f58, 0x0f6f, 0x0f84, 0x0f97, 0x0fb9, 0x0fd6, - 0x0fed, 0x1005, 0x101b, 0x1040, 0x1057, 0x1071, 0x109f, 0x10b6, - // Entry C0 - FF - 0x10ca, 0x10e1, 0x10f4, 0x10f4, 0x110b, 0x1122, 0x1122, 0x113a, - 0x1150, 0x116b, 0x1189, 0x11a6, 0x11bb, 0x11d1, 0x11e7, 0x11fe, - 0x1216, 0x1216, 0x122e, 0x1248, 0x1262, 0x127b, 0x1291, 0x12a8, - 0x12a8, 0x12cf, 0x12ed, 0x12ed, 0x1301, 0x131a, 0x131a, 0x1346, - 0x135f, 0x135f, 0x1372, 0x1389, 0x13a2, 0x13b8, 0x13dd, 0x13fd, - 0x1415, 0x1429, 0x1441, 0x1463, 0x1478, 0x148e, 0x14a7, 0x14bd, - 0x14d2, 0x14d2, 0x14d2, 0x14f3, 0x150a, 0x152a, 0x1537, 0x155d, - 0x157d, 0x15b3, 0x15dc, 0x15f5, 0x160b, 0x1629, 0x163e, 0x163e, - // Entry 100 - 13F - 0x1653, 0x1668, 0x1684, 0x169c, 0x16b5, - }, - }, - { // yo-BJ - "Orílɛ́ède ÀàndóràOrílɛ́ède Ɛmirate ti Awɔn ArabuOrílɛ́ède ÀfùgànístánìOr" + - "ílɛ́ède Ààntígúà àti BáríbúdàOrílɛ́ède ÀàngúlílàOrílɛ́ède Àlùbàníán" + - "ìOrílɛ́ède AméníàOrílɛ́ède ÀàngólàOrílɛ́ède AgentínàSámóánì ti Oríl" + - "ɛ́ède ÀméríkàOrílɛ́ède AsítíríàOrílɛ́ède ÁstràlìáOrílɛ́ède ÁrúbàOrí" + - "lɛ́ède Asɛ́bájánìOrílɛ́ède Bɔ̀síníà àti ƐtisɛgófínàOrílɛ́ède Bábádós" + - "ìOrílɛ́ède BángáládésìOrílɛ́ède Bégíɔ́mùOrílɛ́ède Bùùkíná FasòOrílɛ" + - "́ède BùùgáríàOrílɛ́ède BáránìOrílɛ́ède BùùrúndìOrílɛ́ède Bɛ̀nɛ̀Oríl" + - "ɛ́ède BémúdàOrílɛ́ède Búrúnɛ́lìOrílɛ́ède Bɔ̀lífíyàOrílɛ́ède Bàràsíl" + - "ìOrílɛ́ède BàhámásìOrílɛ́ède BútánìOrílɛ́ède Bɔ̀tìsúwánàOrílɛ́ède B" + - "élárúsìOrílɛ́ède Bèlísɛ̀Orílɛ́ède KánádàOrilɛ́ède KóngòOrílɛ́ède Àr" + - "in gùngun ÁfíríkàOrílɛ́ède KóngòOrílɛ́ède switishilandiOrílɛ́ède Kóú" + - "tè foràOrílɛ́ède Etíokun KùúkùOrílɛ́ède shílèOrílɛ́ède KamerúúnìOríl" + - "ɛ́ède sháínàOrílɛ́ède KòlómíbìaOrílɛ́ède Kuusita RíkàOrílɛ́ède Kúbà" + - "Orílɛ́ède Etíokun Kápé féndèOrílɛ́ède KúrúsìOrílɛ́ède shɛ́ɛ́kìOrílɛ́" + - "ède GemaniOrílɛ́ède Díbɔ́ótìOrílɛ́ède Dɛ́mákìOrílɛ́ède DòmíníkàOril" + - "ɛ́ède DòmíníkánìOrílɛ́ède ÀlùgèríánìOrílɛ́ède EkuádòOrílɛ́ède Esito" + - "niaOrílɛ́ède ÉgípítìOrílɛ́ède EritiraOrílɛ́ède SipaniOrílɛ́ède Etopi" + - "aOrílɛ́ède FilandiOrílɛ́ède FijiOrílɛ́ède Etikun FakalandiOrílɛ́ède " + - "MakoronesiaOrílɛ́ède FaranseOrílɛ́ède GabonOrílɛ́ède OmobabirinOrílɛ" + - "́ède GenadaOrílɛ́ède GɔgiaOrílɛ́ède Firenshi GuanaOrílɛ́ède GanaOrí" + - "lɛ́ède GibarataraOrílɛ́ède GerelandiOrílɛ́ède GambiaOrílɛ́ède GeneOr" + - "ílɛ́ède GadelopeOrílɛ́ède Ekutoria GiniOrílɛ́ède GeriisiOrílɛ́ède G" + - "uatemalaOrílɛ́ède GuamuOrílɛ́ède Gene-BusauOrílɛ́ède GuyanaOrílɛ́ède" + - " HondurasiOrílɛ́ède KòróátíàOrílɛ́ède HaatiOrílɛ́ède HungariOrílɛ́èd" + - "e IndonesiaOrílɛ́ède AilandiOrílɛ́ède IserɛliOrílɛ́ède IndiaOrílɛ́èd" + - "e Etíkun Índíánì ti Ìlú BírítísìOrílɛ́ède IrakiOrílɛ́ède IraniOrílɛ́" + - "ède AshilandiOrílɛ́ède ItaliyiOrílɛ́ède JamaikaOrílɛ́ède JɔdaniOríl" + - "ɛ́ède JapaniOrílɛ́ède KenyaOrílɛ́ède KurishisitaniOrílɛ́ède Kàmùbód" + - "íàOrílɛ́ède KiribatiOrílɛ́ède KòmòrósìOrílɛ́ède Kiiti ati NeefiOríl" + - "ɛ́ède Guusu KɔriaOrílɛ́ède Ariwa KɔriaOrílɛ́ède KuwetiOrílɛ́ède Etí" + - "okun KámánìOrílɛ́ède KashashataniOrílɛ́ède LaosiOrílɛ́ède LebanoniOr" + - "ílɛ́ède LushiaOrílɛ́ède LɛshitɛnisiteniOrílɛ́ède Siri LankaOrílɛ́èd" + - "e LaberiaOrílɛ́ède LesotoOrílɛ́ède LituaniaOrílɛ́ède LusemogiOrílɛ́è" + - "de LatifiaOrílɛ́ède LibiyaOrílɛ́ède MorokoOrílɛ́ède MonakoOrílɛ́ède " + - "ModofiaOrílɛ́ède MadasikaOrílɛ́ède Etikun MáshaliOrílɛ́ède Masidonia" + - "Orílɛ́ède MaliOrílɛ́ède ManamariOrílɛ́ède MogoliaOrílɛ́ède Etikun Gu" + - "usu MarianaOrílɛ́ède MatinikuwiOrílɛ́ède MaritaniaOrílɛ́ède Motserat" + - "iOrílɛ́ède MalataOrílɛ́ède MaritiusiOrílɛ́ède MaladifiOrílɛ́ède Mala" + - "wiOrílɛ́ède MesikoOrílɛ́ède MalasiaOrílɛ́ède MoshamibikuOrílɛ́ède Na" + - "mibiaOrílɛ́ède Kaledonia TitunOrílɛ́ède NàìjáOrílɛ́ède Etikun Nɔ́úfó" + - "kìOrílɛ́ède NàìjíríàOrílɛ́ède NIkaraguaOrílɛ́ède NedalandiOrílɛ́ède " + - "NɔɔwiiOrílɛ́ède NepaOrílɛ́ède NauruOrílɛ́ède NiueOrílɛ́ède shilandi " + - "TitunOrílɛ́ède ƆɔmaOrílɛ́ède PanamaOrílɛ́ède PeruOrílɛ́ède Firenshi " + - "PolinesiaOrílɛ́ède Paapu ti GiiniOrílɛ́ède filipiniOrílɛ́ède Pakisit" + - "anOrílɛ́ède PolandiOrílɛ́ède Pɛɛri ati mikuloniOrílɛ́ède PikariniOrí" + - "lɛ́ède Pɔto RikoOrílɛ́ède Iwɔorun Pakisitian ati GashaOrílɛ́ède Pɔtu" + - "giOrílɛ́ède PaaluOrílɛ́ède ParaguyeOrílɛ́ède KotaOrílɛ́ède RiuniyanO" + - "rílɛ́ède RomaniyaOrílɛ́ède RɔshiaOrílɛ́ède RuwandaOrílɛ́ède Saudi Ar" + - "abiaOrílɛ́ède Etikun SolomoniOrílɛ́ède seshɛlɛsiOrílɛ́ède SudaniOríl" + - "ɛ́ède SwidiniOrílɛ́ède SingapoOrílɛ́ède HɛlenaOrílɛ́ède SilofaniaOr" + - "ílɛ́ède SilofakiaOrílɛ́ède Siria looniOrílɛ́ède Sani MarinoOrílɛ́èd" + - "e SɛnɛgaOrílɛ́ède SomaliaOrílɛ́ède SurinamiOrílɛ́ède Sao tomi ati pi" + - "riishipiOrílɛ́ède ƐɛsáfádòOrílɛ́ède SiriaOrílɛ́ède SashilandOrílɛ́èd" + - "e Tɔɔki ati Etikun KakɔsiOrílɛ́ède shààdìOrílɛ́ède TogoOrílɛ́ède Tai" + - "landiOrílɛ́ède TakisitaniOrílɛ́ède TokelauOrílɛ́ède ÌlàOòrùn Tímɔ̀Or" + - "ílɛ́ède TɔɔkimenisitaOrílɛ́ède TunishiaOrílɛ́ède TongaOrílɛ́ède Tɔɔ" + - "kiOrílɛ́ède Tirinida ati TobagaOrílɛ́ède TufaluOrílɛ́ède TaiwaniOríl" + - "ɛ́ède TanshaniaOrílɛ́ède UkariniOrílɛ́ède UgandaOrílɛ́ède Orilɛede " + - "AmerikaOrílɛ́ède NruguayiOrílɛ́ède NshibɛkisitaniOrílɛ́ède Fisɛnnti " + - "ati GenadinaOrílɛ́ède FɛnɛshuɛlaOrílɛ́ède Etíkun Fágínì ti ìlú Bírít" + - "ísìOrílɛ́ède Etikun Fagini ti AmɛrikaOrílɛ́ède FɛtinamiOrílɛ́ède Fa" + - "niatuOrílɛ́ède Wali ati futunaOrílɛ́ède SamɔOrílɛ́ède yemeniOrílɛ́èd" + - "e MayoteOrílɛ́ède Ariwa AfirikaOrílɛ́ède shamibiaOrílɛ́ède shimibabe", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0019, 0x003e, 0x005e, 0x008b, 0x00a7, 0x00c5, - 0x00dc, 0x00f5, 0x00f5, 0x010d, 0x0135, 0x014f, 0x0169, 0x017f, - 0x017f, 0x019c, 0x01cd, 0x01e7, 0x0205, 0x0220, 0x023f, 0x025a, - 0x0271, 0x028b, 0x02a3, 0x02a3, 0x02ba, 0x02d6, 0x02f2, 0x02f2, - 0x030c, 0x0326, 0x033d, 0x033d, 0x035c, 0x0376, 0x038f, 0x03a6, - 0x03a6, 0x03ba, 0x03e1, 0x03f6, 0x0411, 0x042d, 0x044c, 0x0461, - 0x047b, 0x0492, 0x04ad, 0x04ad, 0x04c9, 0x04dd, 0x0502, 0x0502, - 0x0502, 0x0519, 0x0534, 0x0548, 0x0548, 0x0563, 0x057c, 0x0596, - // Entry 40 - 7F - 0x05b2, 0x05d0, 0x05d0, 0x05e6, 0x05fc, 0x0615, 0x0615, 0x062a, - 0x063e, 0x0652, 0x0652, 0x0652, 0x0667, 0x0679, 0x0697, 0x06b0, - 0x06b0, 0x06c5, 0x06d8, 0x06f0, 0x0704, 0x0718, 0x0734, 0x0734, - 0x0746, 0x075e, 0x0775, 0x0789, 0x079b, 0x07b1, 0x07cc, 0x07e1, - 0x07e1, 0x07f8, 0x080b, 0x0823, 0x0837, 0x0837, 0x0837, 0x084e, - 0x0869, 0x087c, 0x0891, 0x0891, 0x08a8, 0x08bd, 0x08d3, 0x08d3, - 0x08e6, 0x091d, 0x0930, 0x0943, 0x095a, 0x096f, 0x096f, 0x0984, - 0x0999, 0x09ad, 0x09c0, 0x09db, 0x09f7, 0x0a0d, 0x0a27, 0x0a44, - // Entry 80 - BF - 0x0a5e, 0x0a78, 0x0a8c, 0x0aac, 0x0ac6, 0x0ad9, 0x0aef, 0x0b03, - 0x0b22, 0x0b3a, 0x0b4f, 0x0b63, 0x0b79, 0x0b8f, 0x0ba4, 0x0bb8, - 0x0bcc, 0x0be0, 0x0bf5, 0x0bf5, 0x0bf5, 0x0c0b, 0x0c28, 0x0c3f, - 0x0c51, 0x0c67, 0x0c7c, 0x0c7c, 0x0c9e, 0x0cb6, 0x0ccd, 0x0ce4, - 0x0cf8, 0x0d0f, 0x0d25, 0x0d39, 0x0d4d, 0x0d62, 0x0d7b, 0x0d90, - 0x0dad, 0x0dc3, 0x0de5, 0x0e00, 0x0e17, 0x0e2e, 0x0e44, 0x0e56, - 0x0e69, 0x0e7b, 0x0e97, 0x0eab, 0x0ebf, 0x0ed1, 0x0ef1, 0x0f0d, - 0x0f23, 0x0f3a, 0x0f4f, 0x0f71, 0x0f87, 0x0f9f, 0x0fca, 0x0fdf, - // Entry C0 - FF - 0x0ff2, 0x1008, 0x101a, 0x101a, 0x1030, 0x1046, 0x1046, 0x105b, - 0x1070, 0x108a, 0x10a7, 0x10c0, 0x10d4, 0x10e9, 0x10fe, 0x1113, - 0x112a, 0x112a, 0x1141, 0x115a, 0x1173, 0x1189, 0x119e, 0x11b4, - 0x11b4, 0x11d9, 0x11f4, 0x11f4, 0x1207, 0x121e, 0x121e, 0x1246, - 0x125d, 0x125d, 0x126f, 0x1285, 0x129d, 0x12b2, 0x12d5, 0x12f2, - 0x1308, 0x131b, 0x1330, 0x1351, 0x1365, 0x137a, 0x1391, 0x13a6, - 0x13ba, 0x13ba, 0x13ba, 0x13d9, 0x13ef, 0x140c, 0x140c, 0x1430, - 0x144b, 0x1480, 0x14a7, 0x14be, 0x14d3, 0x14f0, 0x1503, 0x1503, - // Entry 100 - 13F - 0x1517, 0x152b, 0x1546, 0x155c, 0x1573, - }, - }, - { // yue - "阿森松島安道爾阿拉伯聯合大公國阿富汗安提瓜同巴布達安圭拉阿爾巴尼亞亞美尼亞安哥拉南極洲阿根廷美屬薩摩亞奧地利澳洲荷屬阿魯巴奧蘭群島亞塞拜然波斯尼" + - "亞同黑塞哥維那巴貝多孟加拉比利時布吉納法索保加利亞巴林蒲隆地貝南聖巴瑟米百慕達汶萊玻利維亞荷蘭加勒比區巴西巴哈馬不丹布威島波札那白俄" + - "羅斯貝里斯加拿大科科斯(基林)群島剛果(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中華人民共和國哥倫比亞克里派頓" + - "島哥斯大黎加古巴維德角庫拉索聖誕島賽普勒斯捷克德國迪亞哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼" + - "亞埃及西撒哈拉厄利垂亞西班牙衣索比亞歐盟歐元區芬蘭斐濟福克蘭群島密克羅尼西亞群島法羅群島法國加彭英國格瑞那達喬治亞共和國法屬圭亞那根" + - "西島迦納直布羅陀格陵蘭甘比亞幾內亞瓜地洛普赤道幾內亞希臘南佐治亞島同南桑威奇群島瓜地馬拉關島幾內亞比索蓋亞那中華人民共和國香港特別行" + - "政區赫德島同麥克唐納群島宏都拉斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加" + - "約旦日本肯亞吉爾吉斯柬埔寨吉里巴斯葛摩聖基茨同尼維斯北韓南韓科威特開曼群島哈薩克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立" + - "陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾多瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬其頓馬利緬甸蒙古中華人民共和國澳門特別行政區北" + - "馬里亞納群島馬丁尼克島茅利塔尼亞蒙哲臘馬爾他模里西斯馬爾地夫馬拉威墨西哥馬來西亞莫三比克納米比亞新喀里多尼亞尼日諾福克島奈及利亞尼加" + - "拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼王國巴拿馬秘魯法屬玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦波蘭聖皮埃爾同密克隆群島皮特肯群島波多" + - "黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典新加坡聖赫" + - "勒拿島斯洛維尼亞斯瓦爾巴特群島同揚馬延島斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇利南南蘇丹聖多美同普林西比薩爾瓦多荷屬聖馬丁敘利亞史" + - "瓦濟蘭特里斯坦達庫尼亞群島土克斯及開科斯群島查德法屬南方屬地多哥泰國塔吉克托克勞群島東帝汶土庫曼突尼西亞東加土耳其千里達同多巴哥吐瓦" + - "魯台灣坦尚尼亞烏克蘭烏干達美國本土外小島嶼聯合國美國烏拉圭烏茲別克梵蒂岡聖文森特同格林納丁斯委內瑞拉英屬維京群島美屬維京群島越南萬那" + - "杜瓦利斯同富圖納群島薩摩亞科索沃葉門馬約特南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西非中美東非北非中非非洲南部美洲北美加勒" + - "比海東亞南亞東南亞南歐澳洲同紐西蘭美拉尼西亞密克羅尼西亞玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063, - 0x006f, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a2, 0x00a8, 0x00b7, - 0x00c3, 0x00cf, 0x00ed, 0x00f6, 0x00ff, 0x0108, 0x0117, 0x0123, - 0x0129, 0x0132, 0x0138, 0x0144, 0x014d, 0x0153, 0x015f, 0x0171, - 0x0177, 0x0180, 0x0186, 0x018f, 0x0198, 0x01a4, 0x01ad, 0x01b6, - 0x01d1, 0x01e6, 0x01f5, 0x020a, 0x0210, 0x021c, 0x0228, 0x022e, - 0x0237, 0x024c, 0x0258, 0x0267, 0x0276, 0x027c, 0x0285, 0x028e, - 0x0297, 0x02a3, 0x02a9, 0x02af, 0x02c4, 0x02cd, 0x02d3, 0x02df, - // Entry 40 - 7F - 0x02f4, 0x0303, 0x0318, 0x0321, 0x032d, 0x0333, 0x033f, 0x034b, - 0x0354, 0x0360, 0x0366, 0x036f, 0x0375, 0x037b, 0x038a, 0x03a2, - 0x03ae, 0x03b4, 0x03ba, 0x03c0, 0x03cc, 0x03de, 0x03ed, 0x03f6, - 0x03fc, 0x0408, 0x0411, 0x041a, 0x0423, 0x042f, 0x043e, 0x0444, - 0x0468, 0x0474, 0x047a, 0x0489, 0x0492, 0x04bc, 0x04da, 0x04e6, - 0x04f5, 0x04fb, 0x0504, 0x0513, 0x0519, 0x0522, 0x052b, 0x0531, - 0x0537, 0x054c, 0x0555, 0x055b, 0x0561, 0x056a, 0x0573, 0x057c, - 0x0582, 0x0588, 0x058e, 0x059a, 0x05a3, 0x05af, 0x05b5, 0x05ca, - // Entry 80 - BF - 0x05d0, 0x05d6, 0x05df, 0x05eb, 0x05f4, 0x05fa, 0x0603, 0x060f, - 0x061e, 0x062a, 0x0636, 0x063f, 0x0648, 0x0651, 0x065d, 0x0666, - 0x066f, 0x0678, 0x0684, 0x0693, 0x06a2, 0x06b1, 0x06c0, 0x06c9, - 0x06cf, 0x06d5, 0x06db, 0x0705, 0x071a, 0x0729, 0x0738, 0x0741, - 0x074a, 0x0756, 0x0762, 0x076b, 0x0774, 0x0780, 0x078c, 0x0798, - 0x07aa, 0x07b0, 0x07bc, 0x07c8, 0x07d4, 0x07da, 0x07e0, 0x07e9, - 0x07ef, 0x07f8, 0x0801, 0x080d, 0x0816, 0x081c, 0x0831, 0x0846, - 0x084f, 0x085b, 0x0861, 0x087f, 0x088e, 0x089a, 0x08af, 0x08b8, - // Entry C0 - FF - 0x08be, 0x08c7, 0x08cd, 0x08e2, 0x08eb, 0x08f7, 0x0903, 0x090c, - 0x0915, 0x0927, 0x0936, 0x093f, 0x0945, 0x094b, 0x0954, 0x0963, - 0x0972, 0x0996, 0x09a2, 0x09ab, 0x09b7, 0x09c3, 0x09cf, 0x09d8, - 0x09e1, 0x09f9, 0x0a05, 0x0a14, 0x0a1d, 0x0a29, 0x0a47, 0x0a62, - 0x0a68, 0x0a7a, 0x0a80, 0x0a86, 0x0a8f, 0x0a9e, 0x0aa7, 0x0ab0, - 0x0abc, 0x0ac2, 0x0acb, 0x0ae0, 0x0ae9, 0x0aef, 0x0afb, 0x0b04, - 0x0b0d, 0x0b25, 0x0b2e, 0x0b34, 0x0b3d, 0x0b49, 0x0b52, 0x0b70, - 0x0b7c, 0x0b8e, 0x0ba0, 0x0ba6, 0x0baf, 0x0bca, 0x0bd3, 0x0bdc, - // Entry 100 - 13F - 0x0be2, 0x0beb, 0x0bf1, 0x0bfa, 0x0c03, 0x0c0f, 0x0c15, 0x0c1b, - 0x0c24, 0x0c2d, 0x0c36, 0x0c3c, 0x0c42, 0x0c48, 0x0c4e, 0x0c54, - 0x0c60, 0x0c66, 0x0c6c, 0x0c78, 0x0c7e, 0x0c84, 0x0c8d, 0x0c93, - 0x0ca5, 0x0cb4, 0x0cc6, 0x0cd5, 0x0cdb, 0x0ce1, 0x0ce7, 0x0ced, - 0x0cf3, 0x0cf9, 0x0cff, 0x0cff, 0x0d0b, - }, - }, - { // yue-Hans - "阿森松岛安道尔阿拉伯联合大公国阿富汗安提瓜同巴布达安圭拉阿尔巴尼亚亚美尼亚安哥拉南极洲阿根廷美属萨摩亚奥地利澳洲荷属阿鲁巴奥兰群岛亚塞拜然波斯尼" + - "亚同黑塞哥维那巴贝多孟加拉比利时布吉纳法索保加利亚巴林蒲隆地贝南圣巴瑟米百慕达汶莱玻利维亚荷兰加勒比区巴西巴哈马不丹布威岛波札那白俄" + - "罗斯贝里斯加拿大科科斯(基林)群岛刚果(金夏沙)中非共和国刚果(布拉萨)瑞士象牙海岸库克群岛智利喀麦隆中华人民共和国哥伦比亚克里派顿" + - "岛哥斯大黎加古巴维德角库拉索圣诞岛赛普勒斯捷克德国迪亚哥加西亚岛吉布地丹麦多米尼克多明尼加共和国阿尔及利亚休达与梅利利亚厄瓜多爱沙尼" + - "亚埃及西撒哈拉厄利垂亚西班牙衣索比亚欧盟欧元区芬兰斐济福克兰群岛密克罗尼西亚群岛法罗群岛法国加彭英国格瑞那达乔治亚共和国法属圭亚那根" + - "西岛迦纳直布罗陀格陵兰甘比亚几内亚瓜地洛普赤道几内亚希腊南佐治亚岛同南桑威奇群岛瓜地马拉关岛几内亚比索盖亚那中华人民共和国香港特别行" + - "政区赫德岛同麦克唐纳群岛宏都拉斯克罗埃西亚海地匈牙利加那利群岛印尼爱尔兰以色列曼岛印度英属印度洋领地伊拉克伊朗冰岛义大利泽西岛牙买加" + - "约旦日本肯亚吉尔吉斯柬埔寨吉里巴斯葛摩圣基茨同尼维斯北韩南韩科威特开曼群岛哈萨克寮国黎巴嫩圣露西亚列支敦斯登斯里兰卡赖比瑞亚赖索托立" + - "陶宛卢森堡拉脱维亚利比亚摩洛哥摩纳哥摩尔多瓦蒙特内哥罗法属圣马丁马达加斯加马绍尔群岛马其顿马利缅甸蒙古中华人民共和国澳门特别行政区北" + - "马里亚纳群岛马丁尼克岛茅利塔尼亚蒙哲腊马尔他模里西斯马尔地夫马拉威墨西哥马来西亚莫三比克纳米比亚新喀里多尼亚尼日诺福克岛奈及利亚尼加" + - "拉瓜荷兰挪威尼泊尔诺鲁纽埃岛纽西兰阿曼王国巴拿马秘鲁法属玻里尼西亚巴布亚纽几内亚菲律宾巴基斯坦波兰圣皮埃尔同密克隆群岛皮特肯群岛波多" + - "黎各巴勒斯坦自治区葡萄牙帛琉巴拉圭卡达大洋洲边疆群岛留尼旺罗马尼亚塞尔维亚俄罗斯卢安达沙乌地阿拉伯索罗门群岛塞席尔苏丹瑞典新加坡圣赫" + - "勒拿岛斯洛维尼亚斯瓦尔巴特群岛同扬马延岛斯洛伐克狮子山圣马利诺塞内加尔索马利亚苏利南南苏丹圣多美同普林西比萨尔瓦多荷属圣马丁叙利亚史" + - "瓦济兰特里斯坦达库尼亚群岛土克斯及开科斯群岛查德法属南方属地多哥泰国塔吉克托克劳群岛东帝汶土库曼突尼西亚东加土耳其千里达同多巴哥吐瓦" + - "鲁台湾坦尚尼亚乌克兰乌干达美国本土外小岛屿联合国美国乌拉圭乌兹别克梵蒂冈圣文森特同格林纳丁斯委内瑞拉英属维京群岛美属维京群岛越南万那" + - "杜瓦利斯同富图纳群岛萨摩亚科索沃叶门马约特南非尚比亚辛巴威未知区域世界非洲北美洲南美洲大洋洲西非中美东非北非中非非洲南部美洲北美加勒" + - "比海东亚南亚东南亚南欧澳洲同纽西兰美拉尼西亚密克罗尼西亚玻里尼西亚亚洲中亚西亚欧洲东欧北欧西欧拉丁美洲", - []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063, - 0x006f, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a2, 0x00a8, 0x00b7, - 0x00c3, 0x00cf, 0x00ed, 0x00f6, 0x00ff, 0x0108, 0x0117, 0x0123, - 0x0129, 0x0132, 0x0138, 0x0144, 0x014d, 0x0153, 0x015f, 0x0171, - 0x0177, 0x0180, 0x0186, 0x018f, 0x0198, 0x01a4, 0x01ad, 0x01b6, - 0x01d1, 0x01e6, 0x01f5, 0x020a, 0x0210, 0x021c, 0x0228, 0x022e, - 0x0237, 0x024c, 0x0258, 0x0267, 0x0276, 0x027c, 0x0285, 0x028e, - 0x0297, 0x02a3, 0x02a9, 0x02af, 0x02c4, 0x02cd, 0x02d3, 0x02df, - // Entry 40 - 7F - 0x02f4, 0x0303, 0x0318, 0x0321, 0x032d, 0x0333, 0x033f, 0x034b, - 0x0354, 0x0360, 0x0366, 0x036f, 0x0375, 0x037b, 0x038a, 0x03a2, - 0x03ae, 0x03b4, 0x03ba, 0x03c0, 0x03cc, 0x03de, 0x03ed, 0x03f6, - 0x03fc, 0x0408, 0x0411, 0x041a, 0x0423, 0x042f, 0x043e, 0x0444, - 0x0468, 0x0474, 0x047a, 0x0489, 0x0492, 0x04bc, 0x04da, 0x04e6, - 0x04f5, 0x04fb, 0x0504, 0x0513, 0x0519, 0x0522, 0x052b, 0x0531, - 0x0537, 0x054c, 0x0555, 0x055b, 0x0561, 0x056a, 0x0573, 0x057c, - 0x0582, 0x0588, 0x058e, 0x059a, 0x05a3, 0x05af, 0x05b5, 0x05ca, - // Entry 80 - BF - 0x05d0, 0x05d6, 0x05df, 0x05eb, 0x05f4, 0x05fa, 0x0603, 0x060f, - 0x061e, 0x062a, 0x0636, 0x063f, 0x0648, 0x0651, 0x065d, 0x0666, - 0x066f, 0x0678, 0x0684, 0x0693, 0x06a2, 0x06b1, 0x06c0, 0x06c9, - 0x06cf, 0x06d5, 0x06db, 0x0705, 0x071a, 0x0729, 0x0738, 0x0741, - 0x074a, 0x0756, 0x0762, 0x076b, 0x0774, 0x0780, 0x078c, 0x0798, - 0x07aa, 0x07b0, 0x07bc, 0x07c8, 0x07d4, 0x07da, 0x07e0, 0x07e9, - 0x07ef, 0x07f8, 0x0801, 0x080d, 0x0816, 0x081c, 0x0831, 0x0846, - 0x084f, 0x085b, 0x0861, 0x087f, 0x088e, 0x089a, 0x08af, 0x08b8, - // Entry C0 - FF - 0x08be, 0x08c7, 0x08cd, 0x08e2, 0x08eb, 0x08f7, 0x0903, 0x090c, - 0x0915, 0x0927, 0x0936, 0x093f, 0x0945, 0x094b, 0x0954, 0x0963, - 0x0972, 0x0996, 0x09a2, 0x09ab, 0x09b7, 0x09c3, 0x09cf, 0x09d8, - 0x09e1, 0x09f9, 0x0a05, 0x0a14, 0x0a1d, 0x0a29, 0x0a47, 0x0a62, - 0x0a68, 0x0a7a, 0x0a80, 0x0a86, 0x0a8f, 0x0a9e, 0x0aa7, 0x0ab0, - 0x0abc, 0x0ac2, 0x0acb, 0x0ae0, 0x0ae9, 0x0aef, 0x0afb, 0x0b04, - 0x0b0d, 0x0b25, 0x0b2e, 0x0b34, 0x0b3d, 0x0b49, 0x0b52, 0x0b70, - 0x0b7c, 0x0b8e, 0x0ba0, 0x0ba6, 0x0baf, 0x0bca, 0x0bd3, 0x0bdc, - // Entry 100 - 13F - 0x0be2, 0x0beb, 0x0bf1, 0x0bfa, 0x0c03, 0x0c0f, 0x0c15, 0x0c1b, - 0x0c24, 0x0c2d, 0x0c36, 0x0c3c, 0x0c42, 0x0c48, 0x0c4e, 0x0c54, - 0x0c60, 0x0c66, 0x0c6c, 0x0c78, 0x0c7e, 0x0c84, 0x0c8d, 0x0c93, - 0x0ca5, 0x0cb4, 0x0cc6, 0x0cd5, 0x0cdb, 0x0ce1, 0x0ce7, 0x0ced, - 0x0cf3, 0x0cf9, 0x0cff, 0x0cff, 0x0d0b, - }, - }, - { // zgh - "ⴰⵏⴷⵓⵔⴰⵍⵉⵎⴰⵔⴰⵜⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰⴰⵏⴳⵉⵍⴰⴰⵍⴱⴰⵏⵢⴰⴰⵔⵎⵉⵏⵢⴰⴰⵏⴳⵓⵍⴰⴰⵔⵊⴰⵏⵜⵉⵏ" + - "ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜⵏⵏⵎⵙⴰⵓⵙⵜⵔⴰⵍⵢⴰⴰⵔⵓⴱⴰⴰⴷⵔⴰⴱⵉⵊⴰⵏⴱⵓⵙⵏⴰ ⴷ ⵀⵉⵔⵙⵉⴽⴱⴰⵔⴱⴰⴷⴱⴰ" + - "ⵏⴳⵍⴰⴷⵉⵛⴱⵍⵊⵉⴽⴰⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓⴱⵍⵖⴰⵔⵢⴰⴱⵃⵔⴰⵢⵏⴱⵓⵔⵓⵏⴷⵉⴱⵉⵏⵉⵏⴱⵔⵎⵓⴷⴰⴱⵔⵓⵏⵉⴱⵓⵍⵉⴱ" + - "ⵢⴰⴱⵔⴰⵣⵉⵍⴱⴰⵀⴰⵎⴰⵙⴱⵀⵓⵜⴰⵏⴱⵓⵜⵙⵡⴰⵏⴰⴱⵉⵍⴰⵔⵓⵙⵢⴰⴱⵉⵍⵉⵣⴽⴰⵏⴰⴷⴰⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇ" + - "ⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰⴽⵓⵏⴳⵓⵙⵡⵉⵙⵔⴰⴽⵓⵜ ⴷⵉⴼⵡⴰⵔⵜⵉⴳ" + - "ⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽⵛⵛⵉⵍⵉⴽⴰⵎⵉⵔⵓⵏⵛⵛⵉⵏⵡⴰⴽⵓⵍⵓⵎⴱⵢⴰⴽⵓⵙⵜⴰ ⵔⵉⴽⴰⴽⵓⴱⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱ" + - "ⵉⵔⴷⵉⵇⵓⴱⵔⵓⵙⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜⴰⵍⵎⴰⵏⵢⴰⴷⵊⵉⴱⵓⵜⵉⴷⴰⵏⵎⴰⵔⴽⴷⵓⵎⵉⵏⵉⴽⵜⴰⴳⴷⵓⴷⴰⵏⵜ " + - "ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜⴷⵣⴰⵢⵔⵉⴽⵡⴰⴷⵓⵔⵉⵙⵜⵓⵏⵢⴰⵎⵉⵚⵕⵉⵔⵉⵜⵉⵔⵢⴰⵙⴱⴰⵏⵢⴰⵉⵜⵢⵓⴱⵢⴰⴼⵉⵍⵍⴰⵏⴷⴰⴼⵉⴷⵊ" + - "ⵉⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰⴼⵔⴰⵏⵙⴰⴳⴰⴱⵓⵏⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏⵖⵔⵏⴰⵟⴰⵊⵓⵔⵊⵢⴰⴳⵡ" + - "ⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⵖⴰⵏⴰⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇⴳⵔⵉⵍⴰⵏⴷⴳⴰⵎⴱⵢⴰⵖⵉⵏⵢⴰⴳⵡⴰⴷⴰⵍⵓⴱⵖⵉⵏⵢⴰ ⵏ " + - "ⵉⴽⵡⴰⴷⵓⵔⵍⵢⵓⵏⴰⵏⴳⵡⴰⵜⵉⵎⴰⵍⴰⴳⵡⴰⵎⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡⴳⵡⵉⵢⴰⵏⴰⵀⵓⵏⴷⵓⵔⴰⵙⴽⵔⵡⴰⵜⵢⴰⵀⴰⵢⵜⵉⵀⵏ" + - "ⵖⴰⵔⵢⴰⴰⵏⴷⵓⵏⵉⵙⵢⴰⵉⵔⵍⴰⵏⴷⴰⵉⵙⵔⴰⵢⵉⵍⵍⵀⵉⵏⴷⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉⵍ" + - "ⵄⵉⵔⴰⵇⵉⵔⴰⵏⵉⵙⵍⴰⵏⴷⵉⵟⴰⵍⵢⴰⵊⴰⵎⴰⵢⴽⴰⵍⵓⵔⴷⵓⵏⵍⵢⴰⴱⴰⵏⴽⵉⵏⵢⴰⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰⵏⴽⴰⵎⴱⵓⴷⵢⴰⴽⵉ" + - "ⵔⵉⴱⴰⵜⵉⵇⵓⵎⵓⵔⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵍⴽⵡⵉⵜⵜⵉⴳⵣⵉⵔⵉⵏ" + - " ⵏ ⴽⴰⵢⵎⴰⵏⴽⴰⵣⴰⵅⵙⵜⴰⵏⵍⴰⵡⵙⵍⵓⴱⵏⴰⵏⵙⴰⵏⵜⵍⵓⵙⵉⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏⵙⵔⵉⵍⴰⵏⴽⴰⵍⵉⴱⵉⵔⵢⴰⵍⵉⵚⵓⵟⵓⵍ" + - "ⵉⵜⵡⴰⵏⵢⴰⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳⵍⴰⵜⴼⵢⴰⵍⵉⴱⵢⴰⵍⵎⵖⵔⵉⴱⵎⵓⵏⴰⴽⵓⵎⵓⵍⴷⵓⴼⵢⴰⵎⵓⵏⵜⵉⵏⵉⴳⵔⵓⵎⴰⴷⴰⵖⴰⵛⵇ" + - "ⴰⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍⵎⴰⵙⵉⴷⵓⵏⵢⴰⵎⴰⵍⵉⵎⵢⴰⵏⵎⴰⵔⵎⵏⵖⵓⵍⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢⴰⵏ ⵏ " + - "ⵉⵥⵥⵍⵎⴹⵎⴰⵔⵜⵉⵏⵉⴽⵎⵓⵕⵉⵟⴰⵏⵢⴰⵎⵓⵏⵙⵉⵔⴰⵜⵎⴰⵍⵟⴰⵎⵓⵔⵉⵙⵎⴰⵍⴷⵉⴼⵎⴰⵍⴰⵡⵉⵎⵉⴽⵙⵉⴽⵎⴰⵍⵉⵣⵢⴰ" + - "ⵎⵓⵣⵏⴱⵉⵇⵏⴰⵎⵉⴱⵢⴰⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⵏⵏⵉⵊⵉⵔⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽⵏⵉⵊⵉⵔⵢⴰⵏⵉⴽ" + - "ⴰⵔⴰⴳⵡⴰⵀⵓⵍⴰⵏⴷⴰⵏⵏⵔⵡⵉⵊⵏⵉⴱⴰⵍⵏⴰⵡⵔⵓⵏⵉⵡⵉⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰⵄⵓⵎⴰⵏⴱⴰⵏⴰⵎⴰⴱⵉⵔⵓⴱⵓⵍⵉⵏⵉⵣⵢ" + - "ⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜⴼⵉⵍⵉⴱⴱⵉⵏⴱⴰⴽⵉⵙⵜⴰⵏⴱⵓⵍⵓⵏⵢⴰⵙⴰⵏⴱⵢⵉⵔ ⴷ ⵎ" + - "ⵉⴽⵍⵓⵏⴱⵉⵜⴽⴰⵢⵔⵏⴱⵓⵔⵜⵓ ⵔⵉⴽⵓⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰⴱⵕⵟⵇⵉⵣⴱⴰⵍⴰⵡⴱⴰⵔⴰⴳⵡⴰⵢⵇⴰⵜ" + - "ⴰⵔⵔⵉⵢⵓⵏⵢⵓⵏⵔⵓⵎⴰⵏⵢⴰⵙⵉⵔⴱⵢⴰⵔⵓⵙⵢⴰⵔⵡⴰⵏⴷⴰⵙⵙⴰⵄⵓⴷⵉⵢⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏⵙⵙⵉⵛⵉ" + - "ⵍⵙⵙⵓⴷⴰⵏⵙⵙⵡⵉⴷⵙⵏⵖⴰⴼⵓⵔⴰⵙⴰⵏⵜⵉⵍⵉⵏⵙⵍⵓⴼⵉⵏⵢⴰⵙⵍⵓⴼⴰⴽⵢⴰⵙⵙⵉⵔⴰⵍⵢⵓⵏⵙⴰⵏⵎⴰⵔⵉⵏⵓⵙⵙⵉⵏ" + - "ⵉⴳⴰⵍⵚⵚⵓⵎⴰⵍⵙⵓⵔⵉⵏⴰⵎⵙⵙⵓⴷⴰⵏ ⵏ ⵉⴼⴼⵓⵙⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱⵙⴰⵍⴼⴰⴷⵓⵔⵙⵓⵔⵢⴰⵙⵡⴰⵣⵉ" + - "ⵍⴰⵏⴷⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽⵜⵛⴰⴷⵟⵓⴳⵓⵟⴰⵢⵍⴰⵏⴷⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏⵟⵓⴽⵍⴰⵡⵜⵉⵎⵓⵔ" + - " ⵏ ⵍⵇⴱⵍⵜⵜⵓⵔⴽⵎⴰⵏⵙⵜⴰⵏⵜⵓⵏⵙⵟⵓⵏⴳⴰⵜⵓⵔⴽⵢⴰⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓⵜⵓⴼⴰⵍⵓⵟⴰⵢⵡⴰⵏⵟⴰⵏⵥⴰ" + - "ⵏⵢⴰⵓⴽⵔⴰⵏⵢⴰⵓⵖⴰⵏⴷⴰⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏⵓⵔⵓⴳⵡⴰⵢⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏⴰⵡⴰⵏⴽ ⵏ ⴼⴰ" + - "ⵜⵉⴽⴰⵏⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏⴼⵉⵏⵣⵡⵉⵍⴰⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣⵜⵉⴳⵣⵉⵔⵉⵏ " + - "ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏⴼⵉⵜⵏⴰⵎⴼⴰⵏⵡⴰⵟⵓⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰⵙⴰⵎⵡⴰⵢⴰⵎⴰⵏⵎⴰⵢⵓⵟⴰⴼ" + - "ⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙⵣⴰⵎⴱⵢⴰⵣⵉⵎⴱⴰⴱⵡⵉ", - []uint16{ // 261 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0012, 0x0027, 0x0045, 0x006e, 0x0080, 0x0095, - 0x00aa, 0x00bc, 0x00bc, 0x00d4, 0x0105, 0x0114, 0x012c, 0x013b, - 0x013b, 0x0156, 0x017c, 0x018e, 0x01a9, 0x01bb, 0x01dd, 0x01f2, - 0x0204, 0x0219, 0x0228, 0x0228, 0x023a, 0x0249, 0x025e, 0x025e, - 0x0270, 0x0285, 0x0297, 0x0297, 0x02af, 0x02ca, 0x02d9, 0x02eb, - 0x02eb, 0x033f, 0x0390, 0x039f, 0x03b1, 0x03cd, 0x03f3, 0x0402, - 0x0417, 0x0429, 0x0441, 0x0441, 0x045d, 0x0469, 0x049e, 0x049e, - 0x049e, 0x04b0, 0x04e4, 0x04f9, 0x04f9, 0x050e, 0x0523, 0x0538, - // Entry 40 - 7F - 0x0572, 0x0581, 0x0581, 0x0596, 0x05ab, 0x05b7, 0x05b7, 0x05cf, - 0x05e1, 0x05f6, 0x05f6, 0x05f6, 0x060e, 0x061d, 0x064c, 0x066a, - 0x066a, 0x067c, 0x068b, 0x06b0, 0x06c2, 0x06d4, 0x0705, 0x0705, - 0x0711, 0x0734, 0x0749, 0x075b, 0x076a, 0x0782, 0x07ab, 0x07bd, - 0x07bd, 0x07d8, 0x07e4, 0x0803, 0x0818, 0x0818, 0x0818, 0x0830, - 0x0845, 0x0854, 0x0869, 0x0869, 0x0884, 0x0899, 0x08ae, 0x08ae, - 0x08bd, 0x0915, 0x0927, 0x0933, 0x0945, 0x0957, 0x0957, 0x096c, - 0x097e, 0x0990, 0x099f, 0x09c0, 0x09d8, 0x09f0, 0x09ff, 0x0a28, - // Entry 80 - BF - 0x0a4e, 0x0a71, 0x0a80, 0x0aaf, 0x0aca, 0x0ad6, 0x0ae8, 0x0b00, - 0x0b1e, 0x0b36, 0x0b4b, 0x0b5d, 0x0b75, 0x0b93, 0x0ba5, 0x0bb4, - 0x0bc6, 0x0bd8, 0x0bf0, 0x0c0e, 0x0c0e, 0x0c2c, 0x0c5b, 0x0c76, - 0x0c82, 0x0c97, 0x0cac, 0x0cac, 0x0cf2, 0x0d0a, 0x0d25, 0x0d3d, - 0x0d4c, 0x0d5b, 0x0d6d, 0x0d7f, 0x0d91, 0x0da6, 0x0dbb, 0x0dd0, - 0x0e04, 0x0e16, 0x0e48, 0x0e5d, 0x0e78, 0x0e8d, 0x0e9f, 0x0eae, - 0x0ebd, 0x0ec9, 0x0ee7, 0x0ef6, 0x0f08, 0x0f14, 0x0f4e, 0x0f86, - 0x0f9e, 0x0fb6, 0x0fcb, 0x0ff7, 0x100f, 0x102b, 0x1062, 0x1074, - // Entry C0 - FF - 0x1083, 0x109b, 0x10aa, 0x10aa, 0x10c2, 0x10d7, 0x10e9, 0x10f8, - 0x110a, 0x1125, 0x1157, 0x1169, 0x117b, 0x118a, 0x11a2, 0x11ba, - 0x11d2, 0x11d2, 0x11ea, 0x1205, 0x1220, 0x1238, 0x124a, 0x125f, - 0x1285, 0x12b4, 0x12cc, 0x12cc, 0x12db, 0x12f9, 0x12f9, 0x1339, - 0x1345, 0x1345, 0x1351, 0x1366, 0x1387, 0x1399, 0x13bc, 0x13dd, - 0x13e9, 0x13f8, 0x140a, 0x1439, 0x144b, 0x145d, 0x1475, 0x148a, - 0x149c, 0x149c, 0x149c, 0x14db, 0x14f0, 0x150e, 0x1537, 0x156f, - 0x1587, 0x15c9, 0x161e, 0x1630, 0x1645, 0x166b, 0x167a, 0x167a, - // Entry 100 - 13F - 0x1689, 0x1698, 0x16c1, 0x16d3, 0x16eb, - }, - }, - { // zh - zhRegionStr, - zhRegionIdx, - }, - { // zh-Hant - zhHantRegionStr, - zhHantRegionIdx, - }, - { // zh-Hant-HK - "阿拉伯聯合酋長國安提瓜和巴布達阿魯巴阿塞拜疆波斯尼亞和黑塞哥維那巴巴多斯布基納法索布隆迪貝寧聖巴泰勒米鮑威特島博茨瓦納伯利茲可可斯群島科特迪瓦克" + - "里珀頓島哥斯達黎加佛得角塞浦路斯吉布提厄瓜多爾厄立特里亞埃塞俄比亞加蓬格林納達格魯吉亞加納岡比亞南佐治亞島與南桑威奇群島危地馬拉幾內" + - "亞比紹圭亞那洪都拉斯克羅地亞馬恩島意大利肯雅科摩羅聖基茨和尼維斯老撾聖盧西亞列支敦士登利比里亞拉脱維亞黑山馬里毛里塔尼亞蒙特塞拉特馬" + - "耳他毛里裘斯馬爾代夫馬拉維莫桑比克尼日爾尼日利亞瑙魯法屬波利尼西亞巴布亞新幾內亞皮特凱恩島巴勒斯坦領土卡塔爾盧旺達沙地阿拉伯所羅門群" + - "島塞舌爾斯洛文尼亞斯瓦爾巴特群島及揚馬延島塞拉利昂索馬里蘇里南聖多美和普林西比斯威士蘭特克斯和凱科斯群島乍得法屬南部領地多哥共和國湯" + - "加千里達和多巴哥圖瓦盧坦桑尼亞聖文森特和格林納丁斯英屬維爾京群島美屬維爾京群島瓦努阿圖也門馬約特贊比亞津巴布韋中美洲加勒比澳大拉西亞" + - "波利尼西亞", - []uint16{ // 284 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0018, 0x0018, 0x002d, 0x002d, 0x002d, - 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x002d, 0x0036, - 0x0036, 0x0042, 0x0060, 0x006c, 0x006c, 0x006c, 0x007b, 0x007b, - 0x007b, 0x0084, 0x008a, 0x0099, 0x0099, 0x0099, 0x0099, 0x0099, - 0x0099, 0x0099, 0x0099, 0x00a5, 0x00b1, 0x00b1, 0x00ba, 0x00ba, - 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00c9, 0x00d5, 0x00d5, 0x00d5, - 0x00d5, 0x00d5, 0x00d5, 0x00e4, 0x00f3, 0x00f3, 0x00fc, 0x00fc, - 0x00fc, 0x0108, 0x0108, 0x0108, 0x0108, 0x0111, 0x0111, 0x0111, - // Entry 40 - 7F - 0x0111, 0x0111, 0x0111, 0x011d, 0x011d, 0x011d, 0x011d, 0x012c, - 0x012c, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, 0x013b, - 0x013b, 0x013b, 0x0141, 0x0141, 0x014d, 0x0159, 0x0159, 0x0159, - 0x015f, 0x015f, 0x015f, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x018c, 0x0198, 0x0198, 0x01a7, 0x01b0, 0x01b0, 0x01b0, 0x01bc, - 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01c8, 0x01d1, - 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01d1, 0x01da, 0x01da, 0x01da, - 0x01da, 0x01da, 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e9, 0x01fe, - // Entry 80 - BF - 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x01fe, 0x0204, 0x0204, 0x0210, - 0x021f, 0x021f, 0x022b, 0x022b, 0x022b, 0x022b, 0x0237, 0x0237, - 0x0237, 0x0237, 0x0237, 0x023d, 0x023d, 0x023d, 0x023d, 0x023d, - 0x0243, 0x0243, 0x0243, 0x0243, 0x0243, 0x0243, 0x0252, 0x0261, - 0x026a, 0x0276, 0x0282, 0x028b, 0x028b, 0x028b, 0x0297, 0x0297, - 0x0297, 0x02a0, 0x02a0, 0x02ac, 0x02ac, 0x02ac, 0x02ac, 0x02ac, - 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02b2, 0x02c7, 0x02dc, - 0x02dc, 0x02dc, 0x02dc, 0x02dc, 0x02eb, 0x02eb, 0x02fd, 0x02fd, - // Entry C0 - FF - 0x02fd, 0x02fd, 0x0306, 0x0306, 0x0306, 0x0306, 0x0306, 0x0306, - 0x030f, 0x031e, 0x032d, 0x0336, 0x0336, 0x0336, 0x0336, 0x0336, - 0x0345, 0x0369, 0x0369, 0x0375, 0x0375, 0x0375, 0x037e, 0x0387, - 0x0387, 0x039f, 0x039f, 0x039f, 0x039f, 0x03ab, 0x03ab, 0x03c6, - 0x03cc, 0x03de, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, 0x03ed, - 0x03ed, 0x03f3, 0x03f3, 0x0408, 0x0411, 0x0411, 0x041d, 0x041d, - 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x041d, 0x043b, - 0x043b, 0x0450, 0x0465, 0x0465, 0x0471, 0x0471, 0x0471, 0x0471, - // Entry 100 - 13F - 0x0477, 0x0480, 0x0480, 0x0489, 0x0495, 0x0495, 0x0495, 0x0495, - 0x0495, 0x0495, 0x0495, 0x0495, 0x049e, 0x049e, 0x049e, 0x049e, - 0x049e, 0x049e, 0x049e, 0x04a7, 0x04a7, 0x04a7, 0x04a7, 0x04a7, - 0x04b6, 0x04b6, 0x04b6, 0x04c5, - }, - }, - { // zu - zuRegionStr, - zuRegionIdx, - }, -} - -const afRegionStr string = "" + // Size: 3031 bytes - "AscensioneilandAndorraVerenigde Arabiese EmirateAfganistanAntigua en Bar" + - "budaAnguillaAlbaniëArmeniëAngolaAntarktikaArgentiniëAmerikaanse SamoaOos" + - "tenrykAustraliëArubaÅlandeilandeAzerbeidjanBosnië en HerzegowinaBarbados" + - "BangladesjBelgiëBurkina FasoBulgaryeBahreinBurundiBeninSint BarthélemyBe" + - "rmudaBroeneiBoliviëKaribiese NederlandBrasiliëBahamasBhoetanBouvet-eilan" + - "dBotswanaBelarusBelizeKanadaKokoseilandeDemokratiese Republiek van die K" + - "ongoSentraal-Afrikaanse RepubliekKongo - BrazzavilleSwitserlandIvoorkusC" + - "ookeilandeChiliKameroenSjinaColombiëClippertoneilandCosta RicaKubaKaap V" + - "erdeCuraçaoKerseilandSiprusTsjeggiëDuitslandDiego GarciaDjiboetiDenemark" + - "eDominicaDominikaanse RepubliekAlgeriëCeuta en MelillaEcuadorEstlandEgip" + - "teWes-SaharaEritreaSpanjeEthiopiëEuropese UnieEurosoneFinlandFidjiFalkla" + - "ndeilandeMikronesiëFaroëreilandeFrankrykGaboenVerenigde KoninkrykGrenada" + - "GeorgiëFrans-GuyanaGuernseyGhanaGibraltarGroenlandGambiëGuineeGuadeloupe" + - "Ekwatoriaal-GuineeGriekelandSuid-Georgië en die Suidelike Sandwicheiland" + - "eGuatemalaGuamGuinee-BissauGuyanaHongkong SAS SjinaHeardeiland en McDona" + - "ldeilandeHondurasKroasiëHaïtiHongaryeKanariese EilandeIndonesiëIerlandIs" + - "raelEiland ManIndiëBrits-Indiese OseaangebiedIrakIranYslandItaliëJerseyJ" + - "amaikaJordaniëJapanKeniaKirgistanKambodjaKiribatiComoreSint Kitts en Nev" + - "isNoord-KoreaSuid-KoreaKoeweitKaaimanseilandeKazakstanLaosLibanonSint Lu" + - "ciaLiechtensteinSri LankaLiberiëLesothoLitaueLuxemburgLetlandLibiëMarokk" + - "oMonacoMoldowaMontenegroSint MartinMadagaskarMarshalleilandeMacedoniëMal" + - "iMianmar (Birma)MongoliëMacau SAS SjinaNoord-Mariane-eilandeMartiniqueMa" + - "uritaniëMontserratMaltaMauritiusMalediveMalawiMeksikoMaleisiëMosambiekNa" + - "mibiëNieu-KaledoniëNigerNorfolkeilandNigeriëNicaraguaNederlandNoorweëNep" + - "alNauruNiueNieu-SeelandOmanPanamaPeruFrans-PolinesiëPapoea-Nieu-GuineeFi" + - "lippynePakistanPoleSint Pierre en MiquelonPitcairneilandePuerto RicoPale" + - "stynse gebiedePortugalPalauParaguayKatarOmliggende OseaniëRéunionRoemeni" + - "ëSerwiëRuslandRwandaSaoedi-ArabiëSalomonseilandeSeychelleSoedanSwedeSin" + - "gapoerSint HelenaSloweniëSvalbard en Jan MayenSlowakyeSierra LeoneSan Ma" + - "rinoSenegalSomaliëSurinameSuid-SoedanSão Tomé en PríncipeEl SalvadorSint" + - " MaartenSiriëSwazilandTristan da CunhaTurks- en CaicoseilandeTsjadFranse" + - " Suidelike GebiedeTogoThailandTadjikistanTokelauOos-TimorTurkmenistanTun" + - "isiëTongaTurkyeTrinidad en TobagoTuvaluTaiwanTanzaniëOekraïneUgandaKlein" + - " afgeleë eilande van die VSAVerenigde NasiesVerenigde State van AmerikaU" + - "ruguayOesbekistanVatikaanstadSint Vincent en die GrenadineVenezuelaBrits" + - "e Maagde-eilandeVSA se Maagde-eilandeViëtnamVanuatuWallis en FutunaSamoa" + - "KosovoJemenMayotteSuid-AfrikaZambiëZimbabweOnbekende gebiedWêreldAfrikaN" + - "oord-AmerikaSuid-AmerikaOseaniëWes-AfrikaSentraal-AmerikaOos-AfrikaNoord" + - "-AfrikaMidde-AfrikaSuider-AfrikaAmerikasNoordelike AmerikaKaribiesOos-As" + - "iëSuid-AsiëSuidoos-AsiëSuid-EuropaAustralasiëMelanesiëMikronesiese stree" + - "kPolinesiëAsiëSentraal-AsiëWes-AsiëEuropaOos-EuropaNoord-EuropaWes-Europ" + - "aLatyns-Amerika" - -var afRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0016, 0x0030, 0x003a, 0x004c, 0x0054, 0x005c, - 0x0064, 0x006a, 0x0074, 0x007f, 0x0090, 0x0099, 0x00a3, 0x00a8, - 0x00b5, 0x00c0, 0x00d6, 0x00de, 0x00e8, 0x00ef, 0x00fb, 0x0103, - 0x010a, 0x0111, 0x0116, 0x0126, 0x012d, 0x0134, 0x013c, 0x014f, - 0x0158, 0x015f, 0x0166, 0x0173, 0x017b, 0x0182, 0x0188, 0x018e, - 0x019a, 0x01be, 0x01db, 0x01ee, 0x01f9, 0x0201, 0x020c, 0x0211, - 0x0219, 0x021e, 0x0227, 0x0237, 0x0241, 0x0245, 0x024f, 0x0257, - 0x0261, 0x0267, 0x0270, 0x0279, 0x0285, 0x028d, 0x0296, 0x029e, - // Entry 40 - 7F - 0x02b4, 0x02bc, 0x02cc, 0x02d3, 0x02da, 0x02e0, 0x02ea, 0x02f1, - 0x02f7, 0x0300, 0x030d, 0x0315, 0x031c, 0x0321, 0x0330, 0x033b, - 0x0349, 0x0351, 0x0357, 0x036a, 0x0371, 0x0379, 0x0385, 0x038d, - 0x0392, 0x039b, 0x03a4, 0x03ab, 0x03b1, 0x03bb, 0x03cd, 0x03d7, - 0x0405, 0x040e, 0x0412, 0x041f, 0x0425, 0x0437, 0x0455, 0x045d, - 0x0465, 0x046b, 0x0473, 0x0484, 0x048e, 0x0495, 0x049b, 0x04a5, - 0x04ab, 0x04c5, 0x04c9, 0x04cd, 0x04d3, 0x04da, 0x04e0, 0x04e7, - 0x04f0, 0x04f5, 0x04fa, 0x0503, 0x050b, 0x0513, 0x0519, 0x052c, - // Entry 80 - BF - 0x0537, 0x0541, 0x0548, 0x0557, 0x0560, 0x0564, 0x056b, 0x0575, - 0x0582, 0x058b, 0x0593, 0x059a, 0x05a0, 0x05a9, 0x05b0, 0x05b6, - 0x05bd, 0x05c3, 0x05ca, 0x05d4, 0x05df, 0x05e9, 0x05f8, 0x0602, - 0x0606, 0x0615, 0x061e, 0x062d, 0x0642, 0x064c, 0x0657, 0x0661, - 0x0666, 0x066f, 0x0677, 0x067d, 0x0684, 0x068d, 0x0696, 0x069e, - 0x06ad, 0x06b2, 0x06bf, 0x06c7, 0x06d0, 0x06d9, 0x06e1, 0x06e6, - 0x06eb, 0x06ef, 0x06fb, 0x06ff, 0x0705, 0x0709, 0x0719, 0x072b, - 0x0734, 0x073c, 0x0740, 0x0757, 0x0766, 0x0771, 0x0783, 0x078b, - // Entry C0 - FF - 0x0790, 0x0798, 0x079d, 0x07b0, 0x07b8, 0x07c1, 0x07c8, 0x07cf, - 0x07d5, 0x07e3, 0x07f2, 0x07fb, 0x0801, 0x0806, 0x080f, 0x081a, - 0x0823, 0x0838, 0x0840, 0x084c, 0x0856, 0x085d, 0x0865, 0x086d, - 0x0878, 0x088f, 0x089a, 0x08a6, 0x08ac, 0x08b5, 0x08c5, 0x08dc, - 0x08e1, 0x08f9, 0x08fd, 0x0905, 0x0910, 0x0917, 0x0920, 0x092c, - 0x0934, 0x0939, 0x093f, 0x0951, 0x0957, 0x095d, 0x0966, 0x096f, - 0x0975, 0x0997, 0x09a7, 0x09c2, 0x09c9, 0x09d4, 0x09e0, 0x09fd, - 0x0a06, 0x0a1b, 0x0a30, 0x0a38, 0x0a3f, 0x0a4f, 0x0a54, 0x0a5a, - // Entry 100 - 13F - 0x0a5f, 0x0a66, 0x0a71, 0x0a78, 0x0a80, 0x0a90, 0x0a97, 0x0a9d, - 0x0aaa, 0x0ab6, 0x0abe, 0x0ac8, 0x0ad8, 0x0ae2, 0x0aee, 0x0afa, - 0x0b07, 0x0b0f, 0x0b21, 0x0b29, 0x0b32, 0x0b3c, 0x0b49, 0x0b54, - 0x0b60, 0x0b6a, 0x0b7d, 0x0b87, 0x0b8c, 0x0b9a, 0x0ba3, 0x0ba9, - 0x0bb3, 0x0bbf, 0x0bc9, 0x0bc9, 0x0bd7, -} // Size: 610 bytes - -const amRegionStr string = "" + // Size: 5401 bytes - "አሴንሽን ደሴትአንዶራየተባበሩት ዓረብ ኤምሬትስአፍጋኒስታንአንቲጓ እና ባሩዳአንጉይላአልባኒያአርሜኒያአንጐላአንታርክቲ" + - "ካአርጀንቲናየአሜሪካ ሳሞአኦስትሪያአውስትራልያአሩባየአላንድ ደሴቶችአዘርባጃንቦስኒያ እና ሄርዞጎቪኒያባርቤዶስባንግ" + - "ላዲሽቤልጄምቡርኪና ፋሶቡልጌሪያባህሬንብሩንዲቤኒንቅዱስ በርቴሎሜቤርሙዳብሩኒቦሊቪያየካሪቢያን ኔዘርላንድስብራዚልባሃ" + - "ማስቡህታንቡቬት ደሴትቦትስዋናቤላሩስበሊዝካናዳኮኮስ(ኬሊንግ) ደሴቶችኮንጎ-ኪንሻሳየመካከለኛው አፍሪካ ሪፐብሊክኮን" + - "ጎ ብራዛቪልስዊዘርላንድኮት ዲቯርኩክ ደሴቶችቺሊካሜሩንቻይናኮሎምቢያክሊፐርቶን ደሴትኮስታሪካኩባኬፕ ቬርዴኩራሳዎየገ" + - "ና ደሴትሳይፕረስቼችኒያጀርመንዲዬጎ ጋርሺያጂቡቲዴንማርክዶሚኒካዶመኒካን ሪፑብሊክአልጄሪያሴኡታና ሜሊላኢኳዶርኤስቶኒ" + - "ያግብጽምዕራባዊ ሳህራኤርትራስፔንኢትዮጵያየአውሮፓ ህብረትየአውሮፓ ዞንፊንላንድፊጂየፎክላንድ ደሴቶችሚክሮኔዢያየፋሮ" + - " ደሴቶችፈረንሳይጋቦንዩናይትድ ኪንግደምግሬናዳጆርጂያየፈረንሳይ ጉዊአናጉርነሲጋናጂብራልተርግሪንላንድጋምቢያጊኒጉዋደሉፕ" + - "ኢኳቶሪያል ጊኒግሪክደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶችጉዋቲማላጉዋምጊኒ ቢሳኦጉያናሆንግ ኮንግ ልዩ የአስ" + - "ተዳደር ክልል ቻይናኽርድ ደሴቶችና ማክዶናልድ ደሴቶችሆንዱራስክሮኤሽያሀይቲሀንጋሪየካናሪ ደሴቶችኢንዶኔዢያአየርላን" + - "ድእስራኤልአይል ኦፍ ማንህንድየብሪታኒያ ህንድ ውቂያኖስ ግዛትኢራቅኢራንአይስላንድጣሊያንጀርሲጃማይካጆርዳንጃፓንኬን" + - "ያኪርጊስታንካምቦዲያኪሪባቲኮሞሮስቅዱስ ኪትስ እና ኔቪስሰሜን ኮሪያደቡብ ኮሪያክዌትካይማን ደሴቶችካዛኪስታንላኦስሊ" + - "ባኖስሴንት ሉቺያሊችተንስታይንሲሪላንካላይቤሪያሌሶቶሊቱዌኒያሉክሰምበርግላትቪያሊቢያሞሮኮሞናኮሞልዶቫሞንተኔግሮሴንት " + - "ማርቲንማዳጋስካርማርሻል አይላንድመቄዶንያማሊማይናማር(በርማ)ሞንጎሊያማካኡ ልዩ የአስተዳደር ክልል ቻይናየሰሜናዊ " + - "ማሪያና ደሴቶችማርቲኒክሞሪቴኒያሞንትሴራትማልታሞሪሸስማልዲቭስማላዊሜክሲኮማሌዢያሞዛምቢክናሚቢያኒው ካሌዶኒያኒጀርኖር" + - "ፎልክ ደሴትናይጄሪያኒካራጓኔዘርላንድኖርዌይኔፓልናኡሩኒኡይኒው ዚላንድኦማንፓናማፔሩየፈረንሳይ ፖሊኔዢያፓፑዋ ኒው ጊ" + - "ኒፊሊፒንስፓኪስታንፖላንድቅዱስ ፒዬር እና ሚኩኤሎንፒትካኢርን አይስላንድፖርታ ሪኮየፍልስጤም ግዛትፖርቱጋልፓላውፓራ" + - "ጓይኳታርአውትላይንግ ኦሽንያሪዩኒየንሮሜኒያሰርብያሩስያሩዋንዳሳውድአረቢያሰሎሞን ደሴትሲሼልስሱዳንስዊድንሲንጋፖርሴን" + - "ት ሄለናስሎቬኒያስቫልባርድ እና ጃን ማየንስሎቫኪያሴራሊዮንሳን ማሪኖሴኔጋልሱማሌሱሪናምደቡብ ሱዳንሳኦ ቶሜ እና ፕ" + - "ሪንሲፔኤል ሳልቫዶርሲንት ማርተንሲሪያሱዋዚላንድትሪስታን ዲ ኩንሃየቱርኮችና የካኢኮስ ደሴቶችቻድየፈረንሳይ ደቡባዊ" + - " ግዛቶችቶጐታይላንድታጃኪስታንቶክላውምስራቅ ሌስትቱርክሜኒስታንቱኒዚያቶንጋቱርክትሪናዳድ እና ቶቤጎቱቫሉታይዋንታንዛኒያ" + - "ዩክሬንዩጋንዳየዩ ኤስ ጠረፍ ላይ ያሉ ደሴቶችየተባበሩት መንግስታትዩናይትድ ስቴትስኡራጓይኡዝቤኪስታንቫቲካን ከተማ" + - "ቅዱስ ቪንሴንት እና ግሬናዲንስቬንዙዌላየእንግሊዝ ቨርጂን ደሴቶችየአሜሪካ ቨርጂን ደሴቶችቬትናምቫኑአቱዋሊስ እና " + - "ፉቱና ደሴቶችሳሞአኮሶቮየመንሜይኦቴደቡብ አፍሪካዛምቢያዚምቧቤያልታወቀ ክልልዓለምአፍሪካሰሜን አሜሪካደቡብ አሜሪካኦ" + - "ሽኒአምስራቃዊ አፍሪካመካከለኛው አሜሪካምዕራባዊ አፍሪካሰሜናዊ አፍሪካመካከለኛው አፍሪካደቡባዊ አፍሪካአሜሪካሰሜና" + - "ዊ አሜሪካካሪቢያንምዕራባዊ እሲያደቡባዊ እሲያምዕራባዊ ደቡብ እሲያደቡባዊ አውሮፓአውስትራሊያሜላኔዥያየማይክሮኔዥያ" + - "ን ክልልፖሊኔዥያእሲያመካከለኛው እሲያምስራቃዊ እሲያአውሮፓምዕራባዊ አውሮፓሰሜናዊ አውሮፓምስራቃዊ አውሮፓላቲን አ" + - "ሜሪካ" - -var amRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0019, 0x0025, 0x0051, 0x0066, 0x0083, 0x0092, 0x00a1, - 0x00b0, 0x00bc, 0x00d1, 0x00e3, 0x00fc, 0x010b, 0x0120, 0x0129, - 0x0145, 0x0157, 0x0180, 0x018f, 0x01a1, 0x01ad, 0x01c0, 0x01cf, - 0x01db, 0x01e7, 0x01f0, 0x0209, 0x0215, 0x021e, 0x022a, 0x0252, - 0x025e, 0x026a, 0x0276, 0x0289, 0x0298, 0x02a4, 0x02ad, 0x02b6, - 0x02da, 0x02f0, 0x0322, 0x033b, 0x0350, 0x0360, 0x0373, 0x0379, - 0x0385, 0x038e, 0x039d, 0x03b9, 0x03c8, 0x03ce, 0x03de, 0x03ea, - 0x03fd, 0x040c, 0x0418, 0x0424, 0x043a, 0x0443, 0x0452, 0x045e, - // Entry 40 - 7F - 0x047d, 0x048c, 0x04a2, 0x04ae, 0x04bd, 0x04c6, 0x04df, 0x04eb, - 0x04f4, 0x0503, 0x051f, 0x0535, 0x0544, 0x054a, 0x0569, 0x057b, - 0x0591, 0x05a0, 0x05a9, 0x05c8, 0x05d4, 0x05e0, 0x05ff, 0x060b, - 0x0611, 0x0623, 0x0635, 0x0641, 0x0647, 0x0656, 0x066f, 0x0678, - 0x06bf, 0x06ce, 0x06d7, 0x06e7, 0x06f0, 0x0734, 0x076d, 0x077c, - 0x078b, 0x0794, 0x07a0, 0x07b9, 0x07cb, 0x07dd, 0x07ec, 0x0803, - 0x080c, 0x0842, 0x084b, 0x0854, 0x0866, 0x0872, 0x087b, 0x0887, - 0x0893, 0x089c, 0x08a5, 0x08b7, 0x08c6, 0x08d2, 0x08de, 0x0902, - // Entry 80 - BF - 0x0915, 0x0928, 0x0931, 0x094a, 0x095c, 0x0965, 0x0971, 0x0984, - 0x099c, 0x09ab, 0x09ba, 0x09c3, 0x09d2, 0x09e7, 0x09f3, 0x09fc, - 0x0a05, 0x0a0e, 0x0a1a, 0x0a2c, 0x0a42, 0x0a54, 0x0a70, 0x0a7f, - 0x0a85, 0x0a9f, 0x0aae, 0x0ae8, 0x0b11, 0x0b20, 0x0b2f, 0x0b41, - 0x0b4a, 0x0b56, 0x0b65, 0x0b6e, 0x0b7a, 0x0b86, 0x0b95, 0x0ba1, - 0x0bb7, 0x0bc0, 0x0bd9, 0x0be8, 0x0bf4, 0x0c06, 0x0c12, 0x0c1b, - 0x0c24, 0x0c2d, 0x0c40, 0x0c49, 0x0c52, 0x0c58, 0x0c7a, 0x0c91, - 0x0ca0, 0x0caf, 0x0cbb, 0x0ce5, 0x0d0a, 0x0d1a, 0x0d36, 0x0d45, - // Entry C0 - FF - 0x0d4e, 0x0d5a, 0x0d63, 0x0d85, 0x0d94, 0x0da0, 0x0dac, 0x0db5, - 0x0dc1, 0x0dd6, 0x0dec, 0x0df8, 0x0e01, 0x0e0d, 0x0e1c, 0x0e2f, - 0x0e3e, 0x0e68, 0x0e77, 0x0e86, 0x0e96, 0x0ea2, 0x0eab, 0x0eb7, - 0x0eca, 0x0eee, 0x0f04, 0x0f1a, 0x0f23, 0x0f35, 0x0f52, 0x0f81, - 0x0f87, 0x0fb3, 0x0fb9, 0x0fc8, 0x0fda, 0x0fe6, 0x0ffc, 0x1014, - 0x1020, 0x1029, 0x1032, 0x1052, 0x105b, 0x1067, 0x1076, 0x1082, - 0x108e, 0x10c0, 0x10e5, 0x1101, 0x110d, 0x1122, 0x1138, 0x116b, - 0x117a, 0x11a6, 0x11cf, 0x11db, 0x11e7, 0x120e, 0x1217, 0x1220, - // Entry 100 - 13F - 0x1229, 0x1235, 0x124b, 0x1257, 0x1263, 0x127c, 0x1285, 0x1291, - 0x12a7, 0x12bd, 0x12c9, 0x12e5, 0x1304, 0x1320, 0x1339, 0x1358, - 0x1371, 0x137d, 0x1396, 0x13a5, 0x13be, 0x13d4, 0x13f7, 0x1410, - 0x1425, 0x1434, 0x1459, 0x1468, 0x1471, 0x148d, 0x14a6, 0x14b2, - 0x14ce, 0x14e7, 0x1503, 0x1503, 0x1519, -} // Size: 610 bytes - -const arRegionStr string = "" + // Size: 5446 bytes - "جزيرة أسينشيونأندوراالإمارات العربية المتحدةأفغانستانأنتيغوا وبربوداأنغو" + - "يلاألبانياأرمينياأنغولاأنتاركتيكاالأرجنتينساموا الأمريكيةالنمساأستراليا" + - "أروباجزر آلاندأذربيجانالبوسنة والهرسكبربادوسبنغلاديشبلجيكابوركينا فاسوب" + - "لغارياالبحرينبورونديبنينسان بارتليميبرمودابرونايبوليفياهولندا الكاريبية" + - "البرازيلالبهامابوتانجزيرة بوفيهبوتسوانابيلاروسبليزكنداجزر كوكوس (كيلينغ" + - ")الكونغو - كينشاساجمهورية أفريقيا الوسطىالكونغو - برازافيلسويسراساحل الع" + - "اججزر كوكتشيليالكاميرونالصينكولومبياجزيرة كليبيرتونكوستاريكاكوباالرأس ا" + - "لأخضركوراساوجزيرة كريسماسقبرصالتشيكألمانيادييغو غارسياجيبوتيالدانمركدوم" + - "ينيكاجمهورية الدومينيكانالجزائرسيوتا وميليلاالإكوادورإستونيامصرالصحراء " + - "الغربيةإريترياإسبانياإثيوبياالاتحاد الأوروبيمنطقة اليوروفنلندافيجيجزر ف" + - "وكلاندميكرونيزياجزر فاروفرنساالغابونالمملكة المتحدةغريناداجورجياغويانا " + - "الفرنسيةغيرنزيغاناجبل طارقغرينلاندغامبياغينياغوادلوبغينيا الاستوائيةالي" + - "ونانجورجيا الجنوبية وجزر ساندويتش الجنوبيةغواتيمالاغوامغينيا بيساوغيانا" + - "هونغ كونغ الصينية (منطقة إدارية خاصة)جزيرة هيرد وجزر ماكدونالدهندوراسكر" + - "واتياهايتيهنغارياجزر الكناريإندونيسياأيرلنداإسرائيلجزيرة مانالهندالإقلي" + - "م البريطاني في المحيط الهنديالعراقإيرانآيسلنداإيطالياجيرسيجامايكاالأردن" + - "اليابانكينياقيرغيزستانكمبودياكيريباتيجزر القمرسانت كيتس ونيفيسكوريا الش" + - "ماليةكوريا الجنوبيةالكويتجزر كايمانكازاخستانلاوسلبنانسانت لوسياليختنشتا" + - "ينسريلانكاليبيرياليسوتوليتوانيالوكسمبورغلاتفياليبياالمغربموناكومولدوفاا" + - "لجبل الأسودسان مارتنمدغشقرجزر مارشالمقدونياماليميانمار (بورما)منغوليامك" + - "او الصينية (منطقة إدارية خاصة)جزر ماريانا الشماليةجزر المارتينيكموريتان" + - "يامونتسراتمالطاموريشيوسجزر المالديفملاويالمكسيكماليزياموزمبيقناميبياكال" + - "يدونيا الجديدةالنيجرجزيرة نورفولكنيجيريانيكاراغواهولنداالنرويجنيبالناور" + - "ونيوينيوزيلنداعُمانبنمابيروبولينيزيا الفرنسيةبابوا غينيا الجديدةالفلبين" + - "باكستانبولنداسان بيير ومكويلونجزر بيتكيرنبورتوريكوالأراضي الفلسطينيةالب" + - "رتغالبالاوباراغوايقطرأوقيانوسيا النائيةروينيونرومانياصربياروسياروانداال" + - "مملكة العربية السعوديةجزر سليمانسيشلالسودانالسويدسنغافورةسانت هيليناسلو" + - "فينياسفالبارد وجان ماينسلوفاكياسيراليونسان مارينوالسنغالالصومالسورينامج" + - "نوب السودانساو تومي وبرينسيبيالسلفادورسانت مارتنسورياسوازيلاندتريستان د" + - "ا كوناجزر توركس وكايكوستشادالأقاليم الجنوبية الفرنسيةتوغوتايلاندطاجيكست" + - "انتوكيلوتيمور- ليشتيتركمانستانتونستونغاتركياترينيداد وتوباغوتوفالوتايوا" + - "نتنزانياأوكرانياأوغنداجزر الولايات المتحدة النائيةالأمم المتحدةالولايات" + - " المتحدةأورغوايأوزبكستانالفاتيكانسانت فنسنت وجزر غرينادينفنزويلاجزر فيرج" + - "ن البريطانيةجزر فيرجن التابعة للولايات المتحدةفيتنامفانواتوجزر والس وفو" + - "توناسامواكوسوفواليمنمايوتجنوب أفريقيازامبيازيمبابويمنطقة غير معروفةالعا" + - "لمأفريقياأمريكا الشماليةأمريكا الجنوبيةأوقيانوسياغرب أفريقياأمريكا الوس" + - "طىشرق أفريقياشمال أفريقياوسط أفريقياأفريقيا الجنوبيةالأمريكتانشمال أمري" + - "كاالكاريبيشرق آسياجنوب آسياجنوب شرق آسياجنوب أوروباأسترالاسياميلانيزياا" + - "لجزر الميكرونيزيةبولينيزياآسياوسط آسياغرب آسياأوروباشرق أوروباشمال أورو" + - "باغرب أوروباأمريكا اللاتينية" - -var arRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001b, 0x0027, 0x0055, 0x0067, 0x0084, 0x0092, 0x00a0, - 0x00ae, 0x00ba, 0x00ce, 0x00e0, 0x00fd, 0x0109, 0x0119, 0x0123, - 0x0134, 0x0144, 0x0161, 0x016f, 0x017f, 0x018b, 0x01a2, 0x01b0, - 0x01be, 0x01cc, 0x01d4, 0x01eb, 0x01f7, 0x0203, 0x0211, 0x0230, - 0x0240, 0x024e, 0x0258, 0x026d, 0x027d, 0x028b, 0x0293, 0x029b, - 0x02bb, 0x02da, 0x0304, 0x0325, 0x0331, 0x0344, 0x0351, 0x035b, - 0x036d, 0x0377, 0x0387, 0x03a4, 0x03b6, 0x03be, 0x03d5, 0x03e3, - 0x03fc, 0x0404, 0x0410, 0x041e, 0x0435, 0x0441, 0x0451, 0x0461, - // Entry 40 - 7F - 0x0486, 0x0494, 0x04ad, 0x04bf, 0x04cd, 0x04d3, 0x04f0, 0x04fe, - 0x050c, 0x051a, 0x0539, 0x0550, 0x055c, 0x0564, 0x0579, 0x058d, - 0x059c, 0x05a6, 0x05b4, 0x05d1, 0x05df, 0x05eb, 0x0608, 0x0614, - 0x061c, 0x062b, 0x063b, 0x0647, 0x0651, 0x065f, 0x067e, 0x068c, - 0x06d4, 0x06e6, 0x06ee, 0x0703, 0x070d, 0x0750, 0x077f, 0x078d, - 0x079b, 0x07a5, 0x07b3, 0x07c8, 0x07da, 0x07e8, 0x07f6, 0x0807, - 0x0811, 0x0851, 0x085d, 0x0867, 0x0875, 0x0883, 0x088d, 0x089b, - 0x08a7, 0x08b5, 0x08bf, 0x08d3, 0x08e1, 0x08f1, 0x0902, 0x0920, - // Entry 80 - BF - 0x093b, 0x0956, 0x0962, 0x0975, 0x0987, 0x098f, 0x0999, 0x09ac, - 0x09c0, 0x09d0, 0x09de, 0x09ea, 0x09fa, 0x0a0c, 0x0a18, 0x0a22, - 0x0a2e, 0x0a3a, 0x0a48, 0x0a5f, 0x0a70, 0x0a7c, 0x0a8f, 0x0a9d, - 0x0aa5, 0x0ac0, 0x0ace, 0x0b08, 0x0b2e, 0x0b49, 0x0b5b, 0x0b6b, - 0x0b75, 0x0b85, 0x0b9c, 0x0ba6, 0x0bb4, 0x0bc2, 0x0bd0, 0x0bde, - 0x0bff, 0x0c0b, 0x0c24, 0x0c32, 0x0c44, 0x0c50, 0x0c5e, 0x0c68, - 0x0c72, 0x0c7a, 0x0c8c, 0x0c96, 0x0c9e, 0x0ca6, 0x0cc9, 0x0ced, - 0x0cfb, 0x0d09, 0x0d15, 0x0d35, 0x0d4a, 0x0d5c, 0x0d7f, 0x0d8f, - // Entry C0 - FF - 0x0d99, 0x0da9, 0x0daf, 0x0dd2, 0x0de0, 0x0dee, 0x0df8, 0x0e02, - 0x0e0e, 0x0e3c, 0x0e4f, 0x0e57, 0x0e65, 0x0e71, 0x0e81, 0x0e96, - 0x0ea6, 0x0ec8, 0x0ed8, 0x0ee8, 0x0efb, 0x0f09, 0x0f17, 0x0f25, - 0x0f3c, 0x0f5e, 0x0f70, 0x0f83, 0x0f8d, 0x0f9f, 0x0fbb, 0x0fdb, - 0x0fe3, 0x1015, 0x101d, 0x102b, 0x103d, 0x1049, 0x105f, 0x1073, - 0x107b, 0x1085, 0x108f, 0x10ae, 0x10ba, 0x10c6, 0x10d4, 0x10e4, - 0x10f0, 0x1125, 0x113e, 0x115d, 0x116b, 0x117d, 0x118f, 0x11bc, - 0x11ca, 0x11f0, 0x1230, 0x123c, 0x124a, 0x1268, 0x1272, 0x127e, - // Entry 100 - 13F - 0x1288, 0x1292, 0x12a9, 0x12b5, 0x12c5, 0x12e3, 0x12ef, 0x12fd, - 0x131a, 0x1337, 0x134b, 0x1360, 0x1379, 0x138e, 0x13a5, 0x13ba, - 0x13d9, 0x13ed, 0x1402, 0x1412, 0x1421, 0x1432, 0x144a, 0x145f, - 0x1473, 0x1485, 0x14a8, 0x14ba, 0x14c2, 0x14d1, 0x14e0, 0x14ec, - 0x14ff, 0x1514, 0x1527, 0x1527, 0x1546, -} // Size: 610 bytes - -const azRegionStr string = "" + // Size: 3270 bytes - "Askenson adasıAndorraBirləşmiş Ərəb ƏmirlikləriƏfqanıstanAntiqua və Barb" + - "udaAngilyaAlbaniyaErmənistanAnqolaAntarktikaArgentinaAmerika SamoasıAvst" + - "riyaAvstraliyaArubaAland adalarıAzərbaycanBosniya və HerseqovinaBarbados" + - "BanqladeşBelçikaBurkina FasoBolqarıstanBəhreynBurundiBeninSent-Bartelemi" + - "Bermud adalarıBruneyBoliviyaKarib NiderlandıBraziliyaBaham adalarıButanB" + - "uve adasıBotsvanaBelarusBelizKanadaKokos (Kilinq) adalarıKonqo - Kinşasa" + - "Mərkəzi Afrika RespublikasıKonqo - BrazzavilİsveçrəKotd’ivuarKuk adaları" + - "ÇiliKamerunÇinKolumbiyaKlipperton adasıKosta RikaKubaKabo-VerdeKurasaoM" + - "ilad adasıKiprÇexiyaAlmaniyaDieqo QarsiyaCibutiDanimarkaDominikaDominika" + - "n RespublikasıƏlcəzairSeuta və MelilyaEkvadorEstoniyaMisirQərbi SaxaraEr" + - "itreyaİspaniyaEfiopiyaAvropa BirliyiAvrozonaFinlandiyaFiciFolklend adala" + - "rıMikroneziyaFarer adalarıFransaQabonBirləşmiş KrallıqQrenadaGürcüstanFr" + - "ansa QvianasıGernsiQanaCəbəllütariqQrenlandiyaQambiyaQvineyaQvadelupaEkv" + - "atorial QvineyaYunanıstanCənubi Corciya və Cənubi Sendviç adalarıQvatema" + - "laQuamQvineya-BisauQayanaHonq Konq Xüsusi İnzibati Ərazi ÇinHerd və Makd" + - "onald adalarıHondurasXorvatiyaHaitiMacarıstanKanar adalarıİndoneziyaİrla" + - "ndiyaİsrailMen adasıHindistanBritaniyanın Hind Okeanı Ərazisiİraqİranİsl" + - "andiyaİtaliyaCersiYamaykaİordaniyaYaponiyaKeniyaQırğızıstanKambocaKiriba" + - "tiKomor adalarıSent-Kits və NevisŞimali KoreyaCənubi KoreyaKüveytKayman " + - "adalarıQazaxıstanLaosLivanSent-LusiyaLixtenşteynŞri-LankaLiberiyaLesotoL" + - "itvaLüksemburqLatviyaLiviyaMərakeşMonakoMoldovaMonteneqroSent MartinMada" + - "qaskarMarşal adalarıMakedoniyaMaliMyanmaMonqolustanMakao Xüsusi İnzibati" + - " Ərazi ÇinŞimali Marian adalarıMartinikMavritaniyaMonseratMaltaMavrikiMa" + - "ldiv adalarıMalaviMeksikaMalayziyaMozambikNamibiyaYeni KaledoniyaNigerNo" + - "rfolk adasıNigeriyaNikaraquaNiderlandNorveçNepalNauruNiueYeni ZelandiyaO" + - "manPanamaPeruFransa PolineziyasıPapua-Yeni QvineyaFilippinPakistanPolşaM" + - "üqəddəs Pyer və MikelonPitkern adalarıPuerto RikoFələstin ƏraziləriPort" + - "uqaliyaPalauParaqvayQətərUzaq OkeaniyaReyunyonRumıniyaSerbiyaRusiyaRuand" + - "aSəudiyyə ƏrəbistanıSolomon adalarıSeyşel adalarıSudanİsveçSinqapurMüqəd" + - "dəs YelenaSloveniyaSvalbard və Yan-MayenSlovakiyaSyerra-LeoneSan-MarinoS" + - "eneqalSomaliSurinamCənubi SudanSan-Tome və PrinsipiSalvadorSint-MartenSu" + - "riyaSvazilendTristan da KunyaTörks və Kaykos adalarıÇadFransanın Cənub Ə" + - "raziləriToqoTailandTacikistanTokelauŞərqi TimorTürkmənistanTunisTonqaTür" + - "kiyəTrinidad və TobaqoTuvaluTayvanTanzaniyaUkraynaUqandaABŞ-a bağlı kiçi" + - "k adacıqlarBirləşmiş Millətlər TəşkilatıAmerika Birləşmiş ŞtatlarıUruqva" + - "yÖzbəkistanVatikanSent-Vinsent və QrenadinlərVenesuelaBritaniyanın Virgi" + - "n adalarıABŞ Virgin adalarıVyetnamVanuatuUollis və FutunaSamoaKosovoYəmə" + - "nMayotCənub AfrikaZambiyaZimbabveNaməlum RegionDünyaAfrikaŞimali Amerika" + - "Cənubi AmerikaOkeaniyaQərbi AfrikaMərkəzi AmerikaŞərqi AfrikaŞimali Afri" + - "kaMərkəzi AfrikaCənubi AfrikaAmerikaŞimal AmerikasıKaribŞərqi AsiyaCənub" + - "i AsiyaCənub-Şərqi AsiyaCənubi AvropaAvstralaziyaMelaneziyaMikroneziya R" + - "egionuPolineziyaAsiyaMərkəzi AsiyaQərbi AsiyaAvropaŞərqi AvropaŞimali Av" + - "ropaQərbi AvropaLatın Amerikası" - -var azRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0016, 0x0037, 0x0043, 0x0056, 0x005d, 0x0065, - 0x0070, 0x0076, 0x0080, 0x0089, 0x0099, 0x00a1, 0x00ab, 0x00b0, - 0x00be, 0x00c9, 0x00e0, 0x00e8, 0x00f2, 0x00fa, 0x0106, 0x0112, - 0x011a, 0x0121, 0x0126, 0x0134, 0x0143, 0x0149, 0x0151, 0x0162, - 0x016b, 0x0179, 0x017e, 0x0189, 0x0191, 0x0198, 0x019d, 0x01a3, - 0x01ba, 0x01ca, 0x01e8, 0x01f9, 0x0203, 0x020f, 0x021b, 0x0220, - 0x0227, 0x022b, 0x0234, 0x0245, 0x024f, 0x0253, 0x025d, 0x0264, - 0x0270, 0x0274, 0x027b, 0x0283, 0x0290, 0x0296, 0x029f, 0x02a7, - // Entry 40 - 7F - 0x02be, 0x02c8, 0x02d9, 0x02e0, 0x02e8, 0x02ed, 0x02fa, 0x0302, - 0x030b, 0x0313, 0x0321, 0x0329, 0x0333, 0x0337, 0x0348, 0x0353, - 0x0361, 0x0367, 0x036c, 0x0381, 0x0388, 0x0393, 0x03a3, 0x03a9, - 0x03ad, 0x03bc, 0x03c7, 0x03ce, 0x03d5, 0x03de, 0x03f0, 0x03fb, - 0x0428, 0x0431, 0x0435, 0x0442, 0x0448, 0x046f, 0x048a, 0x0492, - 0x049b, 0x04a0, 0x04ab, 0x04b9, 0x04c4, 0x04ce, 0x04d5, 0x04df, - 0x04e8, 0x050b, 0x0510, 0x0515, 0x051f, 0x0527, 0x052c, 0x0533, - 0x053d, 0x0545, 0x054b, 0x055a, 0x0561, 0x0569, 0x0577, 0x058a, - // Entry 80 - BF - 0x0598, 0x05a6, 0x05ad, 0x05bc, 0x05c7, 0x05cb, 0x05d0, 0x05db, - 0x05e7, 0x05f1, 0x05f9, 0x05ff, 0x0604, 0x060f, 0x0616, 0x061c, - 0x0625, 0x062b, 0x0632, 0x063c, 0x0647, 0x0651, 0x0661, 0x066b, - 0x066f, 0x0675, 0x0680, 0x06a3, 0x06ba, 0x06c2, 0x06cd, 0x06d5, - 0x06da, 0x06e1, 0x06f0, 0x06f6, 0x06fd, 0x0706, 0x070e, 0x0716, - 0x0725, 0x072a, 0x0738, 0x0740, 0x0749, 0x0752, 0x0759, 0x075e, - 0x0763, 0x0767, 0x0775, 0x0779, 0x077f, 0x0783, 0x0797, 0x07a9, - 0x07b1, 0x07b9, 0x07bf, 0x07db, 0x07eb, 0x07f6, 0x080c, 0x0817, - // Entry C0 - FF - 0x081c, 0x0824, 0x082b, 0x0838, 0x0840, 0x0849, 0x0850, 0x0856, - 0x085c, 0x0874, 0x0884, 0x0894, 0x0899, 0x08a0, 0x08a8, 0x08ba, - 0x08c3, 0x08d9, 0x08e2, 0x08ee, 0x08f8, 0x08ff, 0x0905, 0x090c, - 0x0919, 0x092e, 0x0936, 0x0941, 0x0947, 0x0950, 0x0960, 0x097a, - 0x097e, 0x099b, 0x099f, 0x09a6, 0x09b0, 0x09b7, 0x09c4, 0x09d2, - 0x09d7, 0x09dc, 0x09e5, 0x09f8, 0x09fe, 0x0a04, 0x0a0d, 0x0a14, - 0x0a1a, 0x0a3a, 0x0a5f, 0x0a7e, 0x0a85, 0x0a91, 0x0a98, 0x0ab5, - 0x0abe, 0x0adb, 0x0aef, 0x0af6, 0x0afd, 0x0b0e, 0x0b13, 0x0b19, - // Entry 100 - 13F - 0x0b20, 0x0b25, 0x0b32, 0x0b39, 0x0b41, 0x0b50, 0x0b56, 0x0b5c, - 0x0b6b, 0x0b7a, 0x0b82, 0x0b8f, 0x0ba0, 0x0bae, 0x0bbc, 0x0bcc, - 0x0bda, 0x0be1, 0x0bf2, 0x0bf7, 0x0c04, 0x0c11, 0x0c25, 0x0c33, - 0x0c3f, 0x0c49, 0x0c5c, 0x0c66, 0x0c6b, 0x0c7a, 0x0c86, 0x0c8c, - 0x0c9a, 0x0ca8, 0x0cb5, 0x0cb5, 0x0cc6, -} // Size: 610 bytes - -const bgRegionStr string = "" + // Size: 5932 bytes - "остров ВъзнесениеАндораОбединени арабски емирстваАфганистанАнтигуа и Бар" + - "будаАнгуилаАлбанияАрменияАнголаАнтарктикаАржентинаАмериканска СамоаАвст" + - "рияАвстралияАрубаОландски островиАзербайджанБосна и ХерцеговинаБарбадос" + - "БангладешБелгияБуркина ФасоБългарияБахрейнБурундиБенинСен БартелемиБерм" + - "удски островиБруней ДаруссаламБоливияКарибска НидерландияБразилияБахами" + - "Бутаностров БувеБотсванаБеларусБелизКанадаКокосови острови (острови Кий" + - "линг)Конго (Киншаса)Централноафриканска републикаКонго (Бразавил)Швейца" + - "рияКот д’Ивоарострови КукЧилиКамерунКитайКолумбияостров КлипертонКоста " + - "РикаКубаКабо ВердеКюрасаоостров РождествоКипърЧехияГерманияДиего Гарсия" + - "ДжибутиДанияДоминикаДоминиканска републикаАлжирСеута и МелияЕквадорЕсто" + - "нияЕгипетЗападна СахараЕритреяИспанияЕтиопияЕвропейски съюзЕврозонаФинл" + - "андияФиджиФолклендски островиМикронезияФарьорски островиФранцияГабонОбе" + - "диненото кралствоГренадаГрузияФренска ГвианаГърнзиГанаГибралтарГренланд" + - "ияГамбияГвинеяГваделупаЕкваториална ГвинеяГърцияЮжна Джорджия и Южни Са" + - "ндвичеви островиГватемалаГуамГвинея-БисауГаянаХонконг, САР на Китайостр" + - "ови Хърд и МакдоналдХондурасХърватияХаитиУнгарияКанарски островиИндонез" + - "ияИрландияИзраелостров МанИндияБританска територия в Индийския океанИра" + - "кИранИсландияИталияДжърсиЯмайкаЙорданияЯпонияКенияКиргизстанКамбоджаКир" + - "ибатиКоморски островиСейнт Китс и НевисСеверна КореяЮжна КореяКувейтКай" + - "манови островиКазахстанЛаосЛиванСейнт ЛусияЛихтенщайнШри ЛанкаЛиберияЛе" + - "сотоЛитваЛюксембургЛатвияЛибияМарокоМонакоМолдоваЧерна гораСен МартенМа" + - "дагаскарМаршалови островиМакедонияМалиМианмар (Бирма)МонголияМакао, САР" + - " на КитайСеверни Мариански островиМартиникаМавританияМонтсератМалтаМаври" + - "цийМалдивиМалавиМексикоМалайзияМозамбикНамибияНова КаледонияНигеростров" + - " НорфолкНигерияНикарагуаНидерландияНорвегияНепалНауруНиуеНова ЗеландияОм" + - "анПанамаПеруФренска ПолинезияПапуа-Нова ГвинеяФилипиниПакистанПолшаСен " + - "Пиер и МикелонОстрови ПиткернПуерто РикоПалестински територииПортугалия" + - "ПалауПарагвайКатарОтдалечени острови на ОкеанияРеюнионРумънияСърбияРуси" + - "яРуандаСаудитска АрабияСоломонови островиСейшелиСуданШвецияСингапурСвет" + - "а ЕленаСловенияСвалбард и Ян МайенСловакияСиера ЛеонеСан МариноСенегалС" + - "омалияСуринамЮжен СуданСао Томе и ПринсипиСалвадорСинт МартенСирияСвази" + - "лендТристан да Куняострови Търкс и КайкосЧадФренски южни територииТогоТ" + - "айландТаджикистанТокелауИзточен ТиморТуркменистанТунисТонгаТурцияТринид" + - "ад и ТобагоТувалуТайванТанзанияУкрайнаУгандаОтдалечени острови на САЩОр" + - "ганизация на обединените нацииСъединени щатиУругвайУзбекистанВатиканСей" + - "нт Винсънт и ГренадиниВенецуелаБритански Вирджински островиАмерикански " + - "Вирджински островиВиетнамВануатуУолис и ФутунаСамоаКосовоЙеменМайотЮжна" + - " АфрикаЗамбияЗимбабвенепознат регионСвятАфрикаСеверноамерикански контине" + - "нтЮжна АмерикаОкеанияЗападна АфиркаЦентрална АмерикаИзточна АфрикаСевер" + - "на АфрикаЦентрална АфрикаЮжноафрикански регионАмерикаСеверна АмерикаКар" + - "ибски регионИзточна АзияЮжна АзияЮгоизточна АзияЮжна ЕвропаАвстралазияМ" + - "еланезияМикронезийски регионПолинезияАзияЦентрална АзияЗападна АзияЕвро" + - "паИзточна ЕвропаСеверна ЕвропаЗападна ЕвропаЛатинска Америка" - -var bgRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0021, 0x002d, 0x005f, 0x0073, 0x0093, 0x00a1, 0x00af, - 0x00bd, 0x00c9, 0x00dd, 0x00ef, 0x0110, 0x011e, 0x0130, 0x013a, - 0x0159, 0x016f, 0x0193, 0x01a3, 0x01b5, 0x01c1, 0x01d8, 0x01e8, - 0x01f6, 0x0204, 0x020e, 0x0227, 0x0248, 0x0269, 0x0277, 0x029e, - 0x02ae, 0x02ba, 0x02c4, 0x02d9, 0x02e9, 0x02f7, 0x0301, 0x030d, - 0x034c, 0x0367, 0x03a0, 0x03bd, 0x03cf, 0x03e5, 0x03fa, 0x0402, - 0x0410, 0x041a, 0x042a, 0x0449, 0x045c, 0x0464, 0x0477, 0x0485, - 0x04a4, 0x04ae, 0x04b8, 0x04c8, 0x04df, 0x04ed, 0x04f7, 0x0507, - // Entry 40 - 7F - 0x0532, 0x053c, 0x0554, 0x0562, 0x0570, 0x057c, 0x0597, 0x05a5, - 0x05b3, 0x05c1, 0x05de, 0x05ee, 0x0600, 0x060a, 0x062f, 0x0643, - 0x0664, 0x0672, 0x067c, 0x06a3, 0x06b1, 0x06bd, 0x06d8, 0x06e4, - 0x06ec, 0x06fe, 0x0712, 0x071e, 0x072a, 0x073c, 0x0761, 0x076d, - 0x07b6, 0x07c8, 0x07d0, 0x07e7, 0x07f1, 0x0817, 0x0844, 0x0854, - 0x0864, 0x086e, 0x087c, 0x089b, 0x08ad, 0x08bd, 0x08c9, 0x08dc, - 0x08e6, 0x092c, 0x0934, 0x093c, 0x094c, 0x0958, 0x0964, 0x0970, - 0x0980, 0x098c, 0x0996, 0x09aa, 0x09ba, 0x09ca, 0x09e9, 0x0a0a, - // Entry 80 - BF - 0x0a23, 0x0a36, 0x0a42, 0x0a63, 0x0a75, 0x0a7d, 0x0a87, 0x0a9c, - 0x0ab0, 0x0ac1, 0x0acf, 0x0adb, 0x0ae5, 0x0af9, 0x0b05, 0x0b0f, - 0x0b1b, 0x0b27, 0x0b35, 0x0b48, 0x0b5b, 0x0b6f, 0x0b90, 0x0ba2, - 0x0baa, 0x0bc5, 0x0bd5, 0x0bf7, 0x0c27, 0x0c39, 0x0c4d, 0x0c5f, - 0x0c69, 0x0c79, 0x0c87, 0x0c93, 0x0ca1, 0x0cb1, 0x0cc1, 0x0ccf, - 0x0cea, 0x0cf4, 0x0d0f, 0x0d1d, 0x0d2f, 0x0d45, 0x0d55, 0x0d5f, - 0x0d69, 0x0d71, 0x0d8a, 0x0d92, 0x0d9e, 0x0da6, 0x0dc7, 0x0de7, - 0x0df7, 0x0e07, 0x0e11, 0x0e32, 0x0e4f, 0x0e64, 0x0e8d, 0x0ea1, - // Entry C0 - FF - 0x0eab, 0x0ebb, 0x0ec5, 0x0efc, 0x0f0a, 0x0f18, 0x0f24, 0x0f2e, - 0x0f3a, 0x0f59, 0x0f7c, 0x0f8a, 0x0f94, 0x0fa0, 0x0fb0, 0x0fc5, - 0x0fd5, 0x0ff8, 0x1008, 0x101d, 0x1030, 0x103e, 0x104c, 0x105a, - 0x106d, 0x1090, 0x10a0, 0x10b5, 0x10bf, 0x10d1, 0x10ed, 0x1116, - 0x111c, 0x1146, 0x114e, 0x115c, 0x1172, 0x1180, 0x1199, 0x11b1, - 0x11bb, 0x11c5, 0x11d1, 0x11f1, 0x11fd, 0x1209, 0x1219, 0x1227, - 0x1233, 0x1262, 0x129f, 0x12ba, 0x12c8, 0x12dc, 0x12ea, 0x1319, - 0x132b, 0x1361, 0x139b, 0x13a9, 0x13b7, 0x13d1, 0x13db, 0x13e7, - // Entry 100 - 13F - 0x13f1, 0x13fb, 0x1410, 0x141c, 0x142c, 0x1449, 0x1451, 0x145d, - 0x1494, 0x14ab, 0x14b9, 0x14d4, 0x14f5, 0x1510, 0x152b, 0x154a, - 0x1573, 0x1581, 0x159e, 0x15bb, 0x15d2, 0x15e3, 0x1600, 0x1615, - 0x162b, 0x163d, 0x1664, 0x1676, 0x167e, 0x1699, 0x16b0, 0x16bc, - 0x16d7, 0x16f2, 0x170d, 0x170d, 0x172c, -} // Size: 610 bytes - -const bnRegionStr string = "" + // Size: 9532 bytes - "অ্যাসসেনশন আইল্যান্ডআন্ডোরাসংযুক্ত আরব আমিরাতআফগানিস্তানঅ্যান্টিগুয়া ও " + - "বারবুডাএ্যাঙ্গুইলাআলবেনিয়াআর্মেনিয়াঅ্যাঙ্গোলাঅ্যান্টার্কটিকাআর্জেন্ট" + - "িনাআমেরিকান সামোয়াঅস্ট্রিয়াঅস্ট্রেলিয়াআরুবাআলান্ড দ্বীপপুঞ্জআজারবাই" + - "জানবসনিয়া ও হার্জেগোভিনাবারবাদোসবাংলাদেশবেলজিয়ামবুরকিনা ফাসোবুলগেরিয" + - "়াবাহরাইনবুরুন্ডিবেনিনসেন্ট বারথেলিমিবারমুডাব্রুনেইবলিভিয়াক্যারিবিয়া" + - "ন নেদারল্যান্ডসব্রাজিলবাহামা দ্বীপপুঞ্জভুটানবোভেট দ্বীপবতসোয়ানাবেলারু" + - "শবেলিজকানাডাকোকোস (কিলিং) দ্বীপপুঞ্জকঙ্গো-কিনশাসামধ্য আফ্রিকার প্রজাতন" + - "্ত্রকঙ্গো - ব্রাজাভিলসুইজারল্যান্ডকোত দিভোয়ারকুক দ্বীপপুঞ্জচিলিক্যামে" + - "রুনচীনকলম্বিয়াক্লিপারটন আইল্যান্ডকোস্টারিকাকিউবাকেপভার্দেকুরাসাওক্রিস" + - "মাস দ্বীপসাইপ্রাসচেচিয়াজার্মানিদিয়েগো গার্সিয়াজিবুতিডেনমার্কডোমিনিক" + - "াডোমেনিকান প্রজাতন্ত্রআলজেরিয়াকুউটা এবং মেলিলাইকুয়েডরএস্তোনিয়ামিশরপ" + - "শ্চিম সাহারাইরিত্রিয়াস্পেনইথিওপিয়াইউরোপীয় ইউনিয়নইউরোজোনফিনল্যান্ডফ" + - "িজিফকল্যান্ড দ্বীপপুঞ্জমাইক্রোনেশিয়াফ্যারও দ্বীপপুঞ্জফ্রান্সগ্যাবনযুক" + - "্তরাজ্যগ্রেনাডাজর্জিয়াফরাসী গায়ানাগুয়ার্নসিঘানাজিব্রাল্টারগ্রীনল্যা" + - "ন্ডগাম্বিয়াগিনিগুয়াদেলৌপনিরক্ষীয় গিনিগ্রীসদক্ষিণ জর্জিয়া ও দক্ষিণ " + - "স্যান্ডউইচ দ্বীপপুঞ্জগুয়াতেমালাগুয়ামগিনি-বিসাউগিয়ানাহংকং এসএআর চীনা" + - "হার্ড এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জহন্ডুরাসক্রোয়েশিয়াহাইতিহাঙ্গেরিক্যা" + - "নারি দ্বীপপুঞ্জইন্দোনেশিয়াআয়ারল্যান্ডইজরায়েলআইল অফ ম্যানভারতব্রিটিশ" + - " ভারত মহাসাগরীয় অঞ্চলইরাকইরানআইসল্যান্ডইতালিজার্সিজামাইকাজর্ডনজাপানকেনি" + - "য়াকিরগিজিস্তানকম্বোডিয়াকিরিবাতিকমোরোসসেন্ট কিটস ও নেভিসউত্তর কোরিয়া" + - "দক্ষিণ কোরিয়াকুয়েতকেম্যান দ্বীপপুঞ্জকাজাখস্তানলাওসলেবাননসেন্ট লুসিয়" + - "ালিচেনস্টেইনশ্রীলঙ্কালাইবেরিয়ালেসোথোলিথুয়ানিয়ালাক্সেমবার্গলাত্ভিয়া" + - "লিবিয়ামোরক্কোমোনাকোমোল্দাভিয়ামন্টিনিগ্রোসেন্ট মার্টিনমাদাগাস্কারমার্" + - "শাল দ্বীপপুঞ্জম্যাসাডোনিয়ামালিমায়ানমার (বার্মা)মঙ্গোলিয়াম্যাকাও এসএ" + - "আর চীনাউত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জমার্টিনিকমরিতানিয়ামন্টসেরাটম" + - "াল্টামরিশাসমালদ্বীপমালাউইমেক্সিকোমালয়েশিয়ামোজাম্বিকনামিবিয়ানিউ ক্যা" + - "লেডোনিয়ানাইজারনরফোক দ্বীপনাইজেরিয়ানিকারাগুয়ানেদারল্যান্ডসনরওয়েনেপা" + - "লনাউরুনিউয়েনিউজিল্যান্ডওমানপানামাপেরুফরাসী পলিনেশিয়াপাপুয়া নিউ গিনি" + - "ফিলিপাইনপাকিস্তানপোল্যান্ডসেন্ট পিয়ের ও মিকুয়েলনপিটকেয়ার্ন দ্বীপপুঞ" + - "্জপুয়ের্তো রিকোপ্যালেস্টাইনের অঞ্চলসমূহপর্তুগালপালাউপ্যারাগুয়েকাতারআ" + - "উটলাইনিং ওসানিয়ারিইউনিয়নরোমানিয়াসার্বিয়ারাশিয়ারুয়ান্ডাসৌদি আরবসল" + - "োমন দ্বীপপুঞ্জসিসিলিসুদানসুইডেনসিঙ্গাপুরসেন্ট হেলেনাস্লোভানিয়াস্বালবা" + - "র্ড ও জান মেয়েনস্লোভাকিয়াসিয়েরা লিওনসান মারিনোসেনেগালসোমালিয়াসুরিন" + - "ামদক্ষিণ সুদানসাওটোমা ও প্রিন্সিপিএল সালভেদরসিন্ট মার্টেনসিরিয়াসোয়াজ" + - "িল্যান্ডট্রিস্টান ডা কুনহাতুর্কস ও কাইকোস দ্বীপপুঞ্জচাদফরাসী দক্ষিণাঞ্" + - "চলটোগোথাইল্যান্ডতাজিকিস্তানটোকেলাউতিমুর-লেস্তেতুর্কমেনিস্তানতিউনিসিয়া" + - "টোঙ্গাতুরস্কত্রিনিনাদ ও টোব্যাগোটুভালুতাইওয়ানতাঞ্জানিয়াইউক্রেনউগান্ড" + - "াযুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জজাতিসংঘমার্কিন যুক্তরাষ্ট্রউরুগ" + - "ুয়েউজবেকিস্তানভ্যাটিকান সিটিসেন্ট ভিনসেন্ট ও গ্রেনাডিনসভেনেজুয়েলাব্র" + - "িটিশ ভার্জিন দ্বীপপুঞ্জমার্কিন যুক্তরাষ্ট্রের ভার্জিন দ্বীপপুঞ্জভিয়েত" + - "নামভানুয়াটুওয়ালিস ও ফুটুনাসামোয়াকসোভোইয়েমেনমায়োত্তেদক্ষিণ আফ্রিকা" + - "জাম্বিয়াজিম্বাবোয়েঅজানা অঞ্চলপৃথিবীআফ্রিকাউত্তর আমেরিকাদক্ষিণ আমেরিক" + - "াওশিয়ানিয়াপশ্চিম আফ্রিকামধ্য আমেরিকাপূর্ব আফ্রিকাউত্তর আফ্রিকামধ্য আ" + - "ফ্রিকাদক্ষিন আফ্রিকাআমেরিকাসউত্তরাঞ্চলীয় আমেরিকাক্যারাবিয়ানপূর্ব এশি" + - "য়াদক্ষিণ এশিয়াদক্ষিণ পূর্ব এশিয়াদক্ষিণ ইউরোপঅস্ট্রালেশিয়াম্যালেনেশ" + - "িয়ামাইক্রোনেশিয়া অঞ্চলপলিনেশিয়াএশিয়ামধ্য এশিয়াপশ্চিম এশিয়াইউরোপপ" + - "ূর্ব ইউরোপউত্তর ইউরোপপশ্চিম ইউরোপল্যাটিন আমেরিকা" - -var bnRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x003a, 0x004f, 0x0081, 0x00a2, 0x00e3, 0x0104, 0x011f, - 0x013d, 0x015b, 0x0188, 0x01a9, 0x01d7, 0x01f5, 0x0219, 0x0228, - 0x0259, 0x0277, 0x02b5, 0x02cd, 0x02e5, 0x0300, 0x0322, 0x0340, - 0x0355, 0x036d, 0x037c, 0x03a7, 0x03bc, 0x03d1, 0x03e9, 0x0435, - 0x044a, 0x047b, 0x048a, 0x04a9, 0x04c4, 0x04d9, 0x04e8, 0x04fa, - 0x053a, 0x055f, 0x05a6, 0x05d3, 0x05fa, 0x061c, 0x0644, 0x0650, - 0x066b, 0x0674, 0x068f, 0x06c6, 0x06e4, 0x06f3, 0x070e, 0x0723, - 0x074b, 0x0763, 0x0778, 0x0790, 0x07c1, 0x07d3, 0x07eb, 0x0803, - // Entry 40 - 7F - 0x0840, 0x085b, 0x0887, 0x089f, 0x08bd, 0x08c9, 0x08ee, 0x090c, - 0x091b, 0x0936, 0x0964, 0x0979, 0x0997, 0x09a3, 0x09dd, 0x0a07, - 0x0a38, 0x0a4d, 0x0a5f, 0x0a7d, 0x0a95, 0x0aad, 0x0ad2, 0x0af0, - 0x0afc, 0x0b1d, 0x0b41, 0x0b5c, 0x0b68, 0x0b86, 0x0bae, 0x0bbd, - 0x0c3d, 0x0c5e, 0x0c70, 0x0c8c, 0x0ca1, 0x0cca, 0x0d27, 0x0d3f, - 0x0d63, 0x0d72, 0x0d8a, 0x0dc1, 0x0de5, 0x0e09, 0x0e21, 0x0e41, - 0x0e4d, 0x0e9e, 0x0eaa, 0x0eb6, 0x0ed4, 0x0ee3, 0x0ef5, 0x0f0a, - 0x0f19, 0x0f28, 0x0f3d, 0x0f61, 0x0f7f, 0x0f97, 0x0fa9, 0x0fd9, - // Entry 80 - BF - 0x0ffe, 0x1026, 0x1038, 0x106c, 0x108a, 0x1096, 0x10a8, 0x10cd, - 0x10ee, 0x1109, 0x1127, 0x1139, 0x115d, 0x1181, 0x119c, 0x11b1, - 0x11c6, 0x11d8, 0x11f9, 0x121a, 0x123f, 0x1260, 0x1294, 0x12bb, - 0x12c7, 0x12f7, 0x1315, 0x1347, 0x13a9, 0x13c4, 0x13e2, 0x13fd, - 0x140f, 0x1421, 0x1439, 0x144b, 0x1463, 0x1484, 0x149f, 0x14ba, - 0x14eb, 0x14fd, 0x151c, 0x153a, 0x155b, 0x1582, 0x1594, 0x15a3, - 0x15b2, 0x15c4, 0x15e8, 0x15f4, 0x1606, 0x1612, 0x1640, 0x166c, - 0x1684, 0x169f, 0x16ba, 0x16fc, 0x173c, 0x1764, 0x17aa, 0x17c2, - // Entry C0 - FF - 0x17d1, 0x17f2, 0x1801, 0x1835, 0x1850, 0x186b, 0x1886, 0x189b, - 0x18b6, 0x18cc, 0x18fa, 0x190c, 0x191b, 0x192d, 0x1948, 0x196a, - 0x198b, 0x19ca, 0x19eb, 0x1a0d, 0x1a29, 0x1a3e, 0x1a59, 0x1a6e, - 0x1a90, 0x1ac8, 0x1ae4, 0x1b09, 0x1b1e, 0x1b48, 0x1b7a, 0x1bc2, - 0x1bcb, 0x1bfc, 0x1c08, 0x1c26, 0x1c47, 0x1c5c, 0x1c7e, 0x1ca8, - 0x1cc6, 0x1cd8, 0x1cea, 0x1d22, 0x1d34, 0x1d4c, 0x1d6d, 0x1d82, - 0x1d97, 0x1e05, 0x1e1a, 0x1e54, 0x1e6c, 0x1e8d, 0x1eb5, 0x1f00, - 0x1f21, 0x1f6b, 0x1fe0, 0x1ffb, 0x2016, 0x2042, 0x2057, 0x2066, - // Entry 100 - 13F - 0x207b, 0x2096, 0x20be, 0x20d9, 0x20fa, 0x2119, 0x212b, 0x2140, - 0x2165, 0x218d, 0x21ae, 0x21d6, 0x21f8, 0x221d, 0x2242, 0x2264, - 0x228c, 0x22a4, 0x22e1, 0x2305, 0x2327, 0x234c, 0x2381, 0x23a3, - 0x23cd, 0x23f4, 0x242e, 0x244c, 0x245e, 0x247d, 0x24a2, 0x24b1, - 0x24d0, 0x24ef, 0x2511, 0x2511, 0x253c, -} // Size: 610 bytes - -const caRegionStr string = "" + // Size: 3177 bytes - "Illa de l’AscensióAndorraEmirats Àrabs UnitsAfganistanAntigua i BarbudaA" + - "nguillaAlbàniaArmèniaAngolaAntàrtidaArgentinaSamoa Nord-americanaÀustria" + - "AustràliaArubaIlles ÅlandAzerbaidjanBòsnia i HercegovinaBarbadosBangla D" + - "eshBèlgicaBurkina FasoBulgàriaBahrainBurundiBenínSaint BarthélemyBermude" + - "sBruneiBolíviaCarib NeerlandèsBrasilBahamesBhutanBouvetBotswanaBelarúsBe" + - "lizeCanadàIlles CocosCongo - KinshasaRepública CentreafricanaCongo - Bra" + - "zzavilleSuïssaCosta d’IvoriIlles CookXileCamerunXinaColòmbiaIlla Clipper" + - "tonCosta RicaCubaCap VerdCuraçaoIlla ChristmasXipreTxèquiaAlemanyaDiego " + - "GarciaDjiboutiDinamarcaDominicaRepública DominicanaAlgèriaCeuta i Melill" + - "aEquadorEstòniaEgipteSàhara OccidentalEritreaEspanyaEtiòpiaUnió Europeaz" + - "ona euroFinlàndiaFijiIlles MalvinesMicronèsiaIlles FèroeFrançaGabonRegne" + - " UnitGrenadaGeòrgiaGuaiana FrancesaGuernseyGhanaGibraltarGrenlàndiaGàmbi" + - "aGuineaGuadeloupeGuinea EquatorialGrèciaIlles Geòrgia del Sud i Sandwich" + - " del SudGuatemalaGuamGuinea BissauGuyanaHong Kong (RAE Xina)Illa Heard i" + - " Illes McDonaldHonduresCroàciaHaitíHongriaIlles CanàriesIndonèsiaIrlanda" + - "IsraelIlla de ManÍndiaTerritori Britànic de l’Oceà ÍndicIraqIranIslàndia" + - "ItàliaJerseyJamaicaJordàniaJapóKenyaKirguizistanCambodjaKiribatiComoresS" + - "aint Christopher i NevisCorea del NordCorea del SudKuwaitIlles CaimanKaz" + - "akhstanLaosLíbanSaint LuciaLiechtensteinSri LankaLibèriaLesothoLituàniaL" + - "uxemburgLetòniaLíbiaMarrocMònacoMoldàviaMontenegroSaint MartinMadagascar" + - "Illes MarshallMacedòniaMaliMyanmar (Birmània)MongòliaMacau (RAE Xina)Ill" + - "es Mariannes del NordMartinicaMauritàniaMontserratMaltaMauriciMaldivesMa" + - "lawiMèxicMalàisiaMoçambicNamíbiaNova CaledòniaNígerNorfolkNigèriaNicarag" + - "uaPaïsos BaixosNoruegaNepalNauruNiueNova ZelandaOmanPanamàPerúPolinèsia " + - "FrancesaPapua Nova GuineaFilipinesPakistanPolòniaSaint-Pierre-et-Miquelo" + - "nIlles PitcairnPuerto Ricoterritoris palestinsPortugalPalauParaguaiQatar" + - "Territoris allunyats d’OceaniaIlla de la ReunióRomaniaSèrbiaRússiaRuanda" + - "Aràbia SauditaIlles SalomóSeychellesSudanSuèciaSingapurSaint HelenaEslov" + - "èniaSvalbard i Jan MayenEslovàquiaSierra LeoneSan MarinoSenegalSomàliaS" + - "urinamSudan del SudSão Tomé i PríncipeEl SalvadorSint MaartenSíriaSwazil" + - "àndiaTristão da CunhaIlles Turks i CaicosTxadTerritoris Australs France" + - "sosTogoTailàndiaTadjikistanTokelauTimor OrientalTurkmenistanTunísiaTonga" + - "TurquiaTrinitat i TobagoTuvaluTaiwanTanzàniaUcraïnaUgandaIlles Perifèriq" + - "ues Menors dels EUANacions UnidesEstats UnitsUruguaiUzbekistanCiutat del" + - " VaticàSaint Vincent i les GrenadinesVeneçuelaIlles Verges BritàniquesIl" + - "les Verges Nord-americanesVietnamVanuatuWallis i FutunaSamoaKosovoIemenM" + - "ayotteRepública de Sud-àfricaZàmbiaZimbàbueRegió desconegudaMónÀfricaAmè" + - "rica del NordAmèrica del SudOceaniaÀfrica occidentalAmèrica CentralÀfric" + - "a orientalÀfrica septentrionalÀfrica centralÀfrica meridionalAmèricaAmèr" + - "ica septentrionalCaribÀsia orientalÀsia meridionalÀsia sud-orientalEurop" + - "a meridionalAustralàsiaMelanèsiaRegió de la MicronèsiaPolinèsiaÀsiaÀsia " + - "centralÀsia occidentalEuropaEuropa orientalEuropa septentrionalEuropa oc" + - "cidentalAmèrica Llatina" - -var caRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0015, 0x001c, 0x0030, 0x003a, 0x004b, 0x0053, 0x005b, - 0x0063, 0x0069, 0x0073, 0x007c, 0x0090, 0x0098, 0x00a2, 0x00a7, - 0x00b3, 0x00be, 0x00d3, 0x00db, 0x00e6, 0x00ee, 0x00fa, 0x0103, - 0x010a, 0x0111, 0x0117, 0x0128, 0x0130, 0x0136, 0x013e, 0x014f, - 0x0155, 0x015c, 0x0162, 0x0168, 0x0170, 0x0178, 0x017e, 0x0185, - 0x0190, 0x01a0, 0x01b9, 0x01cc, 0x01d3, 0x01e2, 0x01ec, 0x01f0, - 0x01f7, 0x01fb, 0x0204, 0x0213, 0x021d, 0x0221, 0x0229, 0x0231, - 0x023f, 0x0244, 0x024c, 0x0254, 0x0260, 0x0268, 0x0271, 0x0279, - // Entry 40 - 7F - 0x028e, 0x0296, 0x02a5, 0x02ac, 0x02b4, 0x02ba, 0x02cc, 0x02d3, - 0x02da, 0x02e2, 0x02ef, 0x02f8, 0x0302, 0x0306, 0x0314, 0x031f, - 0x032b, 0x0332, 0x0337, 0x0341, 0x0348, 0x0350, 0x0360, 0x0368, - 0x036d, 0x0376, 0x0381, 0x0388, 0x038e, 0x0398, 0x03a9, 0x03b0, - 0x03d9, 0x03e2, 0x03e6, 0x03f3, 0x03f9, 0x040d, 0x0428, 0x0430, - 0x0438, 0x043e, 0x0445, 0x0454, 0x045e, 0x0465, 0x046b, 0x0476, - 0x047c, 0x04a3, 0x04a7, 0x04ab, 0x04b4, 0x04bb, 0x04c1, 0x04c8, - 0x04d1, 0x04d6, 0x04db, 0x04e7, 0x04ef, 0x04f7, 0x04fe, 0x0517, - // Entry 80 - BF - 0x0525, 0x0532, 0x0538, 0x0544, 0x054e, 0x0552, 0x0558, 0x0563, - 0x0570, 0x0579, 0x0581, 0x0588, 0x0591, 0x059a, 0x05a2, 0x05a8, - 0x05ae, 0x05b5, 0x05be, 0x05c8, 0x05d4, 0x05de, 0x05ec, 0x05f6, - 0x05fa, 0x060d, 0x0616, 0x0626, 0x063e, 0x0647, 0x0652, 0x065c, - 0x0661, 0x0668, 0x0670, 0x0676, 0x067c, 0x0685, 0x068e, 0x0696, - 0x06a5, 0x06ab, 0x06b2, 0x06ba, 0x06c3, 0x06d1, 0x06d8, 0x06dd, - 0x06e2, 0x06e6, 0x06f2, 0x06f6, 0x06fd, 0x0702, 0x0715, 0x0726, - 0x072f, 0x0737, 0x073f, 0x0757, 0x0765, 0x0770, 0x0784, 0x078c, - // Entry C0 - FF - 0x0791, 0x0799, 0x079e, 0x07be, 0x07d0, 0x07d7, 0x07de, 0x07e5, - 0x07eb, 0x07fa, 0x0807, 0x0811, 0x0816, 0x081d, 0x0825, 0x0831, - 0x083b, 0x084f, 0x085a, 0x0866, 0x0870, 0x0877, 0x087f, 0x0886, - 0x0893, 0x08a9, 0x08b4, 0x08c0, 0x08c6, 0x08d2, 0x08e3, 0x08f7, - 0x08fb, 0x0918, 0x091c, 0x0926, 0x0931, 0x0938, 0x0946, 0x0952, - 0x095a, 0x095f, 0x0966, 0x0977, 0x097d, 0x0983, 0x098c, 0x0994, - 0x099a, 0x09bd, 0x09cb, 0x09d7, 0x09de, 0x09e8, 0x09fa, 0x0a18, - 0x0a22, 0x0a3b, 0x0a57, 0x0a5e, 0x0a65, 0x0a74, 0x0a79, 0x0a7f, - // Entry 100 - 13F - 0x0a84, 0x0a8b, 0x0aa4, 0x0aab, 0x0ab4, 0x0ac6, 0x0aca, 0x0ad1, - 0x0ae2, 0x0af2, 0x0af9, 0x0b0b, 0x0b1b, 0x0b2b, 0x0b40, 0x0b4f, - 0x0b61, 0x0b69, 0x0b7f, 0x0b84, 0x0b92, 0x0ba2, 0x0bb4, 0x0bc5, - 0x0bd1, 0x0bdb, 0x0bf3, 0x0bfd, 0x0c02, 0x0c0f, 0x0c1f, 0x0c25, - 0x0c34, 0x0c48, 0x0c59, 0x0c59, 0x0c69, -} // Size: 610 bytes - -const csRegionStr string = "" + // Size: 3244 bytes - "AscensionAndorraSpojené arabské emirátyAfghánistánAntigua a BarbudaAngui" + - "llaAlbánieArménieAngolaAntarktidaArgentinaAmerická SamoaRakouskoAustráli" + - "eArubaÅlandyÁzerbájdžánBosna a HercegovinaBarbadosBangladéšBelgieBurkina" + - " FasoBulharskoBahrajnBurundiBeninSvatý BartolomějBermudyBrunejBolívieKar" + - "ibské NizozemskoBrazílieBahamyBhútánBouvetův ostrovBotswanaBěloruskoBeli" + - "zeKanadaKokosové ostrovyKongo – KinshasaStředoafrická republikaKongo – B" + - "razzavilleŠvýcarskoPobřeží slonovinyCookovy ostrovyChileKamerunČínaKolum" + - "bieClippertonův ostrovKostarikaKubaKapverdyCuraçaoVánoční ostrovKyprČesk" + - "oNěmeckoDiego GarcíaDžibutskoDánskoDominikaDominikánská republikaAlžírsk" + - "oCeuta a MelillaEkvádorEstonskoEgyptZápadní SaharaEritreaŠpanělskoEtiopi" + - "eEvropská unieeurozónaFinskoFidžiFalklandské ostrovyMikronésieFaerské os" + - "trovyFrancieGabonSpojené královstvíGrenadaGruzieFrancouzská GuyanaGuerns" + - "eyGhanaGibraltarGrónskoGambieGuineaGuadeloupeRovníková GuineaŘeckoJižní " + - "Georgie a Jižní Sandwichovy ostrovyGuatemalaGuamGuinea-BissauGuyanaHongk" + - "ong – ZAO ČínyHeardův ostrov a McDonaldovy ostrovyHondurasChorvatskoHait" + - "iMaďarskoKanárské ostrovyIndonésieIrskoIzraelOstrov ManIndieBritské indi" + - "ckooceánské územíIrákÍránIslandItálieJerseyJamajkaJordánskoJaponskoKeňaK" + - "yrgyzstánKambodžaKiribatiKomorySvatý Kryštof a NevisSeverní KoreaJižní K" + - "oreaKuvajtKajmanské ostrovyKazachstánLaosLibanonSvatá LucieLichtenštejns" + - "koSrí LankaLibérieLesothoLitvaLucemburskoLotyšskoLibyeMarokoMonakoMoldav" + - "skoČerná HoraSvatý Martin (Francie)MadagaskarMarshallovy ostrovyMakedoni" + - "eMaliMyanmar (Barma)MongolskoMacao – ZAO ČínySeverní MarianyMartinikMaur" + - "itánieMontserratMaltaMauriciusMaledivyMalawiMexikoMalajsieMosambikNamibi" + - "eNová KaledonieNigerNorfolkNigérieNikaraguaNizozemskoNorskoNepálNauruNiu" + - "eNový ZélandOmánPanamaPeruFrancouzská PolynésiePapua-Nová GuineaFilipíny" + - "PákistánPolskoSaint-Pierre a MiquelonPitcairnovy ostrovyPortorikoPalesti" + - "nská územíPortugalskoPalauParaguayKatarvnější OceánieRéunionRumunskoSrbs" + - "koRuskoRwandaSaúdská ArábieŠalamounovy ostrovySeychelySúdánŠvédskoSingap" + - "urSvatá HelenaSlovinskoŠpicberky a Jan MayenSlovenskoSierra LeoneSan Mar" + - "inoSenegalSomálskoSurinamJižní SúdánSvatý Tomáš a Princův ostrovSalvador" + - "Svatý Martin (Nizozemsko)SýrieSvazijskoTristan da CunhaTurks a CaicosČad" + - "Francouzská jižní územíTogoThajskoTádžikistánTokelauVýchodní TimorTurkme" + - "nistánTuniskoTongaTureckoTrinidad a TobagoTuvaluTchaj-wanTanzanieUkrajin" + - "aUgandaMenší odlehlé ostrovy USAOrganizace spojených národůSpojené státy" + - "UruguayUzbekistánVatikánSvatý Vincenc a GrenadinyVenezuelaBritské Panens" + - "ké ostrovyAmerické Panenské ostrovyVietnamVanuatuWallis a FutunaSamoaKos" + - "ovoJemenMayotteJihoafrická republikaZambieZimbabweneznámá oblastsvětAfri" + - "kaSeverní AmerikaJižní AmerikaOceániezápadní AfrikaStřední Amerikavýchod" + - "ní Afrikaseverní Afrikastřední Afrikajižní AfrikaAmerikaSeverní Amerika " + - "(oblast)Karibikvýchodní Asiejižní Asiejihovýchodní Asiejižní EvropaAustr" + - "alasieMelanésieMikronésie (region)PolynésieAsieStřední Asiezápadní AsieE" + - "vropavýchodní Evropaseverní Evropazápadní EvropaLatinská Amerika" - -var csRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002a, 0x0037, 0x0048, 0x0050, 0x0058, - 0x0060, 0x0066, 0x0070, 0x0079, 0x0088, 0x0090, 0x009a, 0x009f, - 0x00a6, 0x00b5, 0x00c8, 0x00d0, 0x00db, 0x00e1, 0x00ed, 0x00f6, - 0x00fd, 0x0104, 0x0109, 0x011b, 0x0122, 0x0128, 0x0130, 0x0144, - 0x014d, 0x0153, 0x015b, 0x016b, 0x0173, 0x017d, 0x0183, 0x0189, - 0x019a, 0x01ac, 0x01c5, 0x01da, 0x01e5, 0x01f9, 0x0208, 0x020d, - 0x0214, 0x021a, 0x0222, 0x0236, 0x023f, 0x0243, 0x024b, 0x0253, - 0x0264, 0x0268, 0x026e, 0x0276, 0x0283, 0x028d, 0x0294, 0x029c, - // Entry 40 - 7F - 0x02b4, 0x02be, 0x02cd, 0x02d5, 0x02dd, 0x02e2, 0x02f2, 0x02f9, - 0x0304, 0x030b, 0x0319, 0x0322, 0x0328, 0x032e, 0x0342, 0x034d, - 0x035d, 0x0364, 0x0369, 0x037e, 0x0385, 0x038b, 0x039e, 0x03a6, - 0x03ab, 0x03b4, 0x03bc, 0x03c2, 0x03c8, 0x03d2, 0x03e4, 0x03ea, - 0x0417, 0x0420, 0x0424, 0x0431, 0x0437, 0x044e, 0x0473, 0x047b, - 0x0485, 0x048a, 0x0493, 0x04a5, 0x04af, 0x04b4, 0x04ba, 0x04c4, - 0x04c9, 0x04eb, 0x04f0, 0x04f6, 0x04fc, 0x0503, 0x0509, 0x0510, - 0x051a, 0x0522, 0x0527, 0x0532, 0x053b, 0x0543, 0x0549, 0x0560, - // Entry 80 - BF - 0x056e, 0x057b, 0x0581, 0x0593, 0x059e, 0x05a2, 0x05a9, 0x05b5, - 0x05c5, 0x05cf, 0x05d7, 0x05de, 0x05e3, 0x05ee, 0x05f7, 0x05fc, - 0x0602, 0x0608, 0x0611, 0x061d, 0x0634, 0x063e, 0x0651, 0x065a, - 0x065e, 0x066d, 0x0676, 0x068a, 0x069a, 0x06a2, 0x06ad, 0x06b7, - 0x06bc, 0x06c5, 0x06cd, 0x06d3, 0x06d9, 0x06e1, 0x06e9, 0x06f0, - 0x06ff, 0x0704, 0x070b, 0x0713, 0x071c, 0x0726, 0x072c, 0x0732, - 0x0737, 0x073b, 0x0748, 0x074d, 0x0753, 0x0757, 0x076e, 0x0780, - 0x0789, 0x0793, 0x0799, 0x07b0, 0x07c3, 0x07cc, 0x07e0, 0x07eb, - // Entry C0 - FF - 0x07f0, 0x07f8, 0x07fd, 0x080f, 0x0817, 0x081f, 0x0825, 0x082a, - 0x0830, 0x0841, 0x0855, 0x085d, 0x0864, 0x086d, 0x0875, 0x0882, - 0x088b, 0x08a1, 0x08aa, 0x08b6, 0x08c0, 0x08c7, 0x08d0, 0x08d7, - 0x08e6, 0x0906, 0x090e, 0x0928, 0x092e, 0x0937, 0x0947, 0x0955, - 0x0959, 0x0975, 0x0979, 0x0980, 0x098e, 0x0995, 0x09a5, 0x09b2, - 0x09b9, 0x09be, 0x09c5, 0x09d6, 0x09dc, 0x09e5, 0x09ed, 0x09f5, - 0x09fb, 0x0a17, 0x0a35, 0x0a44, 0x0a4b, 0x0a56, 0x0a5e, 0x0a78, - 0x0a81, 0x0a9b, 0x0ab6, 0x0abd, 0x0ac4, 0x0ad3, 0x0ad8, 0x0ade, - // Entry 100 - 13F - 0x0ae3, 0x0aea, 0x0b00, 0x0b06, 0x0b0e, 0x0b1e, 0x0b23, 0x0b29, - 0x0b39, 0x0b48, 0x0b50, 0x0b60, 0x0b71, 0x0b82, 0x0b91, 0x0ba1, - 0x0baf, 0x0bb6, 0x0bcf, 0x0bd6, 0x0be5, 0x0bf1, 0x0c04, 0x0c12, - 0x0c1d, 0x0c27, 0x0c3b, 0x0c45, 0x0c49, 0x0c57, 0x0c65, 0x0c6b, - 0x0c7c, 0x0c8b, 0x0c9b, 0x0c9b, 0x0cac, -} // Size: 610 bytes - -const daRegionStr string = "" + // Size: 2964 bytes - "AscensionøenAndorraDe Forenede Arabiske EmiraterAfghanistanAntigua og Ba" + - "rbudaAnguillaAlbanienArmenienAngolaAntarktisArgentinaAmerikansk SamoaØst" + - "rigAustralienArubaÅlandAserbajdsjanBosnien-HercegovinaBarbadosBangladesh" + - "BelgienBurkina FasoBulgarienBahrainBurundiBeninSaint BarthélemyBermudaBr" + - "uneiBoliviaDe tidligere Nederlandske AntillerBrasilienBahamasBhutanBouve" + - "tøenBotswanaHvideruslandBelizeCanadaCocosøerneCongo-KinshasaDen Centrala" + - "frikanske RepublikCongo-BrazzavilleSchweizElfenbenskystenCookøerneChileC" + - "amerounKinaColombiaClippertonøenCosta RicaCubaKap VerdeCuraçaoJuleøenCyp" + - "ernTjekkietTysklandDiego GarciaDjiboutiDanmarkDominicaDen Dominikanske R" + - "epublikAlgerietCeuta og MelillaEcuadorEstlandEgyptenVestsaharaEritreaSpa" + - "nienEtiopienDen Europæiske UnioneurozonenFinlandFijiFalklandsøerneMikron" + - "esienFærøerneFrankrigGabonStorbritannienGrenadaGeorgienFransk GuyanaGuer" + - "nseyGhanaGibraltarGrønlandGambiaGuineaGuadeloupeÆkvatorialguineaGrækenla" + - "ndSouth Georgia og De Sydlige SandwichøerGuatemalaGuamGuinea-BissauGuyan" + - "aSAR HongkongHeard Island og McDonald IslandsHondurasKroatienHaitiUngarn" + - "Kanariske øerIndonesienIrlandIsraelIsle of ManIndienDet britiske territo" + - "rium i Det Indiske OceanIrakIranIslandItalienJerseyJamaicaJordanJapanKen" + - "yaKirgisistanCambodjaKiribatiComorerneSaint Kitts og NevisNordkoreaSydko" + - "reaKuwaitCaymanøerneKasakhstanLaosLibanonSaint LuciaLiechtensteinSri Lan" + - "kaLiberiaLesothoLitauenLuxembourgLetlandLibyenMarokkoMonacoMoldovaMonten" + - "egroSaint MartinMadagaskarMarshalløerneMakedonienMaliMyanmar (Burma)Mong" + - "olietSAR MacaoNordmarianerneMartiniqueMauretanienMontserratMaltaMauritiu" + - "sMaldiverneMalawiMexicoMalaysiaMozambiqueNamibiaNy KaledonienNigerNorfol" + - "k IslandNigeriaNicaraguaHollandNorgeNepalNauruNiueNew ZealandOmanPanamaP" + - "eruFransk PolynesienPapua Ny GuineaFilippinernePakistanPolenSaint Pierre" + - " og MiquelonPitcairnPuerto RicoDe palæstinensiske områderPortugalPalauPa" + - "raguayQatarYdre OceanienRéunionRumænienSerbienRuslandRwandaSaudi-Arabien" + - "SalomonøerneSeychellerneSudanSverigeSingaporeSt. HelenaSlovenienSvalbard" + - " og Jan MayenSlovakietSierra LeoneSan MarinoSenegalSomaliaSurinamSydsuda" + - "nSão Tomé og PríncipeEl SalvadorSint MaartenSyrienSwazilandTristan da Cu" + - "nhaTurks- og CaicosøerneTchadDe franske besiddelser i Det Sydlige Indisk" + - "e OceanTogoThailandTadsjikistanTokelauTimor-LesteTurkmenistanTunesienTon" + - "gaTyrkietTrinidad og TobagoTuvaluTaiwanTanzaniaUkraineUgandaAmerikanske " + - "oversøiske øerDe Forenede NationerUSAUruguayUsbekistanVatikanstatenSaint" + - " Vincent og GrenadinerneVenezuelaDe Britiske JomfruøerDe Amerikanske Jom" + - "fruøerVietnamVanuatuWallis og FutunaSamoaKosovoYemenMayotteSydafrikaZamb" + - "iaZimbabweUkendt områdeVerdenAfrikaNordamerikaSydamerikaOceanienVestafri" + - "kaMellemamerikaØstafrikaNordafrikaCentralafrikaDet sydlige AfrikaAmerika" + - "Det nordlige AmerikaCaribienØstasienSydasienSydøstasienSydeuropaAustrala" + - "sienMelanesienMikronesiske områdePolynesienAsienCentralasienVestasienEur" + - "opaØsteuropaNordeuropaVesteuropaLatinamerika" - -var daRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000d, 0x0014, 0x0031, 0x003c, 0x004e, 0x0056, 0x005e, - 0x0066, 0x006c, 0x0075, 0x007e, 0x008e, 0x0095, 0x009f, 0x00a4, - 0x00aa, 0x00b6, 0x00c9, 0x00d1, 0x00db, 0x00e2, 0x00ee, 0x00f7, - 0x00fe, 0x0105, 0x010a, 0x011b, 0x0122, 0x0128, 0x012f, 0x0151, - 0x015a, 0x0161, 0x0167, 0x0171, 0x0179, 0x0185, 0x018b, 0x0191, - 0x019c, 0x01aa, 0x01c8, 0x01d9, 0x01e0, 0x01ef, 0x01f9, 0x01fe, - 0x0206, 0x020a, 0x0212, 0x0220, 0x022a, 0x022e, 0x0237, 0x023f, - 0x0247, 0x024d, 0x0255, 0x025d, 0x0269, 0x0271, 0x0278, 0x0280, - // Entry 40 - 7F - 0x0299, 0x02a1, 0x02b1, 0x02b8, 0x02bf, 0x02c6, 0x02d0, 0x02d7, - 0x02de, 0x02e6, 0x02fb, 0x0304, 0x030b, 0x030f, 0x031e, 0x0329, - 0x0333, 0x033b, 0x0340, 0x034e, 0x0355, 0x035d, 0x036a, 0x0372, - 0x0377, 0x0380, 0x0389, 0x038f, 0x0395, 0x039f, 0x03b0, 0x03bb, - 0x03e3, 0x03ec, 0x03f0, 0x03fd, 0x0403, 0x040f, 0x042f, 0x0437, - 0x043f, 0x0444, 0x044a, 0x0458, 0x0462, 0x0468, 0x046e, 0x0479, - 0x047f, 0x04ab, 0x04af, 0x04b3, 0x04b9, 0x04c0, 0x04c6, 0x04cd, - 0x04d3, 0x04d8, 0x04dd, 0x04e8, 0x04f0, 0x04f8, 0x0501, 0x0515, - // Entry 80 - BF - 0x051e, 0x0526, 0x052c, 0x0538, 0x0542, 0x0546, 0x054d, 0x0558, - 0x0565, 0x056e, 0x0575, 0x057c, 0x0583, 0x058d, 0x0594, 0x059a, - 0x05a1, 0x05a7, 0x05ae, 0x05b8, 0x05c4, 0x05ce, 0x05dc, 0x05e6, - 0x05ea, 0x05f9, 0x0602, 0x060b, 0x0619, 0x0623, 0x062e, 0x0638, - 0x063d, 0x0646, 0x0650, 0x0656, 0x065c, 0x0664, 0x066e, 0x0675, - 0x0682, 0x0687, 0x0695, 0x069c, 0x06a5, 0x06ac, 0x06b1, 0x06b6, - 0x06bb, 0x06bf, 0x06ca, 0x06ce, 0x06d4, 0x06d8, 0x06e9, 0x06f8, - 0x0704, 0x070c, 0x0711, 0x0729, 0x0731, 0x073c, 0x0758, 0x0760, - // Entry C0 - FF - 0x0765, 0x076d, 0x0772, 0x077f, 0x0787, 0x0790, 0x0797, 0x079e, - 0x07a4, 0x07b1, 0x07be, 0x07ca, 0x07cf, 0x07d6, 0x07df, 0x07e9, - 0x07f2, 0x0807, 0x0810, 0x081c, 0x0826, 0x082d, 0x0834, 0x083b, - 0x0843, 0x085a, 0x0865, 0x0871, 0x0877, 0x0880, 0x0890, 0x08a6, - 0x08ab, 0x08dd, 0x08e1, 0x08e9, 0x08f5, 0x08fc, 0x0907, 0x0913, - 0x091b, 0x0920, 0x0927, 0x0939, 0x093f, 0x0945, 0x094d, 0x0954, - 0x095a, 0x0976, 0x098a, 0x098d, 0x0994, 0x099e, 0x09ab, 0x09c8, - 0x09d1, 0x09e7, 0x0a00, 0x0a07, 0x0a0e, 0x0a1e, 0x0a23, 0x0a29, - // Entry 100 - 13F - 0x0a2e, 0x0a35, 0x0a3e, 0x0a44, 0x0a4c, 0x0a5a, 0x0a60, 0x0a66, - 0x0a71, 0x0a7b, 0x0a83, 0x0a8d, 0x0a9a, 0x0aa4, 0x0aae, 0x0abb, - 0x0acd, 0x0ad4, 0x0ae8, 0x0af0, 0x0af9, 0x0b01, 0x0b0d, 0x0b16, - 0x0b22, 0x0b2c, 0x0b40, 0x0b4a, 0x0b4f, 0x0b5b, 0x0b64, 0x0b6a, - 0x0b74, 0x0b7e, 0x0b88, 0x0b88, 0x0b94, -} // Size: 610 bytes - -const deRegionStr string = "" + // Size: 3102 bytes - "AscensionAndorraVereinigte Arabische EmirateAfghanistanAntigua und Barbu" + - "daAnguillaAlbanienArmenienAngolaAntarktisArgentinienAmerikanisch-SamoaÖs" + - "terreichAustralienArubaÅlandinselnAserbaidschanBosnien und HerzegowinaBa" + - "rbadosBangladeschBelgienBurkina FasoBulgarienBahrainBurundiBeninSt. Bart" + - "hélemyBermudaBrunei DarussalamBolivienBonaire, Sint Eustatius und SabaBr" + - "asilienBahamasBhutanBouvetinselBotsuanaBelarusBelizeKanadaKokosinselnKon" + - "go-KinshasaZentralafrikanische RepublikKongo-BrazzavilleSchweizCôte d’Iv" + - "oireCookinselnChileKamerunChinaKolumbienClipperton-InselCosta RicaKubaCa" + - "bo VerdeCuraçaoWeihnachtsinselZypernTschechienDeutschlandDiego GarciaDsc" + - "hibutiDänemarkDominicaDominikanische RepublikAlgerienCeuta und MelillaEc" + - "uadorEstlandÄgyptenWestsaharaEritreaSpanienÄthiopienEuropäische UnionEur" + - "ozoneFinnlandFidschiFalklandinselnMikronesienFäröerFrankreichGabunVerein" + - "igtes KönigreichGrenadaGeorgienFranzösisch-GuayanaGuernseyGhanaGibraltar" + - "GrönlandGambiaGuineaGuadeloupeÄquatorialguineaGriechenlandSüdgeorgien un" + - "d die Südlichen SandwichinselnGuatemalaGuamGuinea-BissauGuyanaSonderverw" + - "altungsregion HongkongHeard und McDonaldinselnHondurasKroatienHaitiUngar" + - "nKanarische InselnIndonesienIrlandIsraelIsle of ManIndienBritisches Terr" + - "itorium im Indischen OzeanIrakIranIslandItalienJerseyJamaikaJordanienJap" + - "anKeniaKirgisistanKambodschaKiribatiKomorenSt. Kitts und NevisNordkoreaS" + - "üdkoreaKuwaitKaimaninselnKasachstanLaosLibanonSt. LuciaLiechtensteinSri" + - " LankaLiberiaLesothoLitauenLuxemburgLettlandLibyenMarokkoMonacoRepublik " + - "MoldauMontenegroSt. MartinMadagaskarMarshallinselnMazedonienMaliMyanmarM" + - "ongoleiSonderverwaltungsregion MacauNördliche MarianenMartiniqueMauretan" + - "ienMontserratMaltaMauritiusMaledivenMalawiMexikoMalaysiaMosambikNamibiaN" + - "eukaledonienNigerNorfolkinselNigeriaNicaraguaNiederlandeNorwegenNepalNau" + - "ruNiueNeuseelandOmanPanamaPeruFranzösisch-PolynesienPapua-NeuguineaPhili" + - "ppinenPakistanPolenSt. Pierre und MiquelonPitcairninselnPuerto RicoPaläs" + - "tinensische AutonomiegebietePortugalPalauParaguayKatarÄußeres OzeanienRé" + - "unionRumänienSerbienRusslandRuandaSaudi-ArabienSalomonenSeychellenSudanS" + - "chwedenSingapurSt. HelenaSlowenienSpitzbergen und Jan MayenSlowakeiSierr" + - "a LeoneSan MarinoSenegalSomaliaSurinameSüdsudanSão Tomé und PríncipeEl S" + - "alvadorSint MaartenSyrienSwasilandTristan da CunhaTurks- und Caicosinsel" + - "nTschadFranzösische Süd- und AntarktisgebieteTogoThailandTadschikistanTo" + - "kelauTimor-LesteTurkmenistanTunesienTongaTürkeiTrinidad und TobagoTuvalu" + - "TaiwanTansaniaUkraineUgandaAmerikanische ÜberseeinselnVereinte NationenV" + - "ereinigte StaatenUruguayUsbekistanVatikanstadtSt. Vincent und die Grenad" + - "inenVenezuelaBritische JungferninselnAmerikanische JungferninselnVietnam" + - "VanuatuWallis und FutunaSamoaKosovoJemenMayotteSüdafrikaSambiaSimbabweUn" + - "bekannte RegionWeltAfrikaNordamerikaSüdamerikaOzeanienWestafrikaMittelam" + - "erikaOstafrikaNordafrikaZentralafrikaSüdliches AfrikaAmerikaNördliches A" + - "merikaKaribikOstasienSüdasienSüdostasienSüdeuropaAustralasienMelanesienM" + - "ikronesisches InselgebietPolynesienAsienZentralasienWestasienEuropaOsteu" + - "ropaNordeuropaWesteuropaLateinamerika" - -var deRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x004a, 0x0052, 0x005a, - 0x0062, 0x0068, 0x0071, 0x007c, 0x008e, 0x0099, 0x00a3, 0x00a8, - 0x00b4, 0x00c1, 0x00d8, 0x00e0, 0x00eb, 0x00f2, 0x00fe, 0x0107, - 0x010e, 0x0115, 0x011a, 0x0129, 0x0130, 0x0141, 0x0149, 0x0169, - 0x0172, 0x0179, 0x017f, 0x018a, 0x0192, 0x0199, 0x019f, 0x01a5, - 0x01b0, 0x01be, 0x01da, 0x01eb, 0x01f2, 0x0202, 0x020c, 0x0211, - 0x0218, 0x021d, 0x0226, 0x0236, 0x0240, 0x0244, 0x024e, 0x0256, - 0x0265, 0x026b, 0x0275, 0x0280, 0x028c, 0x0295, 0x029e, 0x02a6, - // Entry 40 - 7F - 0x02bd, 0x02c5, 0x02d6, 0x02dd, 0x02e4, 0x02ec, 0x02f6, 0x02fd, - 0x0304, 0x030e, 0x0320, 0x0328, 0x0330, 0x0337, 0x0345, 0x0350, - 0x0358, 0x0362, 0x0367, 0x037e, 0x0385, 0x038d, 0x03a1, 0x03a9, - 0x03ae, 0x03b7, 0x03c0, 0x03c6, 0x03cc, 0x03d6, 0x03e7, 0x03f3, - 0x0421, 0x042a, 0x042e, 0x043b, 0x0441, 0x0461, 0x0479, 0x0481, - 0x0489, 0x048e, 0x0494, 0x04a5, 0x04af, 0x04b5, 0x04bb, 0x04c6, - 0x04cc, 0x04f5, 0x04f9, 0x04fd, 0x0503, 0x050a, 0x0510, 0x0517, - 0x0520, 0x0525, 0x052a, 0x0535, 0x053f, 0x0547, 0x054e, 0x0561, - // Entry 80 - BF - 0x056a, 0x0573, 0x0579, 0x0585, 0x058f, 0x0593, 0x059a, 0x05a3, - 0x05b0, 0x05b9, 0x05c0, 0x05c7, 0x05ce, 0x05d7, 0x05df, 0x05e5, - 0x05ec, 0x05f2, 0x0601, 0x060b, 0x0615, 0x061f, 0x062d, 0x0637, - 0x063b, 0x0642, 0x064a, 0x0667, 0x067a, 0x0684, 0x068f, 0x0699, - 0x069e, 0x06a7, 0x06b0, 0x06b6, 0x06bc, 0x06c4, 0x06cc, 0x06d3, - 0x06e0, 0x06e5, 0x06f1, 0x06f8, 0x0701, 0x070c, 0x0714, 0x0719, - 0x071e, 0x0722, 0x072c, 0x0730, 0x0736, 0x073a, 0x0751, 0x0760, - 0x076b, 0x0773, 0x0778, 0x078f, 0x079d, 0x07a8, 0x07ca, 0x07d2, - // Entry C0 - FF - 0x07d7, 0x07df, 0x07e4, 0x07f6, 0x07fe, 0x0807, 0x080e, 0x0816, - 0x081c, 0x0829, 0x0832, 0x083c, 0x0841, 0x0849, 0x0851, 0x085b, - 0x0864, 0x087d, 0x0885, 0x0891, 0x089b, 0x08a2, 0x08a9, 0x08b1, - 0x08ba, 0x08d2, 0x08dd, 0x08e9, 0x08ef, 0x08f8, 0x0908, 0x091f, - 0x0925, 0x094d, 0x0951, 0x0959, 0x0966, 0x096d, 0x0978, 0x0984, - 0x098c, 0x0991, 0x0998, 0x09ab, 0x09b1, 0x09b7, 0x09bf, 0x09c6, - 0x09cc, 0x09e8, 0x09f9, 0x0a0b, 0x0a12, 0x0a1c, 0x0a28, 0x0a46, - 0x0a4f, 0x0a67, 0x0a83, 0x0a8a, 0x0a91, 0x0aa2, 0x0aa7, 0x0aad, - // Entry 100 - 13F - 0x0ab2, 0x0ab9, 0x0ac3, 0x0ac9, 0x0ad1, 0x0ae2, 0x0ae6, 0x0aec, - 0x0af7, 0x0b02, 0x0b0a, 0x0b14, 0x0b21, 0x0b2a, 0x0b34, 0x0b41, - 0x0b52, 0x0b59, 0x0b6c, 0x0b73, 0x0b7b, 0x0b84, 0x0b90, 0x0b9a, - 0x0ba6, 0x0bb0, 0x0bca, 0x0bd4, 0x0bd9, 0x0be5, 0x0bee, 0x0bf4, - 0x0bfd, 0x0c07, 0x0c11, 0x0c11, 0x0c1e, -} // Size: 610 bytes - -const elRegionStr string = "" + // Size: 6250 bytes - "Νήσος ΑσενσιόνΑνδόραΗνωμένα Αραβικά ΕμιράταΑφγανιστάνΑντίγκουα και Μπαρμ" + - "πούνταΑνγκουίλαΑλβανίαΑρμενίαΑγκόλαΑνταρκτικήΑργεντινήΑμερικανική Σαμόα" + - "ΑυστρίαΑυστραλίαΑρούμπαΝήσοι ΌλαντΑζερμπαϊτζάνΒοσνία - ΕρζεγοβίνηΜπαρμπ" + - "έιντοςΜπανγκλαντέςΒέλγιοΜπουρκίνα ΦάσοΒουλγαρίαΜπαχρέινΜπουρούντιΜπενίν" + - "Άγιος ΒαρθολομαίοςΒερμούδεςΜπρουνέιΒολιβίαΟλλανδία ΚαραϊβικήςΒραζιλίαΜπ" + - "αχάμεςΜπουτάνΝήσος ΜπουβέΜποτσουάναΛευκορωσίαΜπελίζΚαναδάςΝήσοι Κόκος (" + - "Κίλινγκ)Κονγκό - ΚινσάσαΚεντροαφρικανική ΔημοκρατίαΚονγκό - ΜπραζαβίλΕλ" + - "βετίαΑκτή ΕλεφαντοστούΝήσοι ΚουκΧιλήΚαμερούνΚίναΚολομβίαΝήσος Κλίπερτον" + - "Κόστα ΡίκαΚούβαΠράσινο ΑκρωτήριοΚουρασάοΝήσος των ΧριστουγέννωνΚύπροςΤσ" + - "εχίαΓερμανίαΝτιέγκο ΓκαρσίαΤζιμπουτίΔανίαΝτομίνικαΔομινικανή Δημοκρατία" + - "ΑλγερίαΘέουτα και ΜελίγιαΙσημερινόςΕσθονίαΑίγυπτοςΔυτική ΣαχάραΕρυθραία" + - "ΙσπανίαΑιθιοπίαΕυρωπαϊκή ΈνωσηΕυρωζώνηΦινλανδίαΦίτζιΝήσοι ΦόκλαντΜικρον" + - "ησίαΝήσοι ΦερόεςΓαλλίαΓκαμπόνΗνωμένο ΒασίλειοΓρενάδαΓεωργίαΓαλλική Γουι" + - "άναΓκέρνζιΓκάναΓιβραλτάρΓροιλανδίαΓκάμπιαΓουινέαΓουαδελούπηΙσημερινή Γο" + - "υινέαΕλλάδαΝήσοι Νότια Γεωργία και Νότιες ΣάντουιτςΓουατεμάλαΓκουάμΓουι" + - "νέα ΜπισάουΓουιάναΧονγκ Κονγκ ΕΔΠ ΚίναςΝήσοι Χερντ και ΜακντόναλντΟνδού" + - "ραΚροατίαΑϊτήΟυγγαρίαΚανάριοι ΝήσοιΙνδονησίαΙρλανδίαΙσραήλΝήσος του Μαν" + - "ΙνδίαΒρετανικά Εδάφη Ινδικού ΩκεανούΙράκΙράνΙσλανδίαΙταλίαΤζέρζιΤζαμάικ" + - "αΙορδανίαΙαπωνίαΚένυαΚιργιστάνΚαμπότζηΚιριμπάτιΚομόρεςΣεν Κιτς και Νέβι" + - "ςΒόρεια ΚορέαΝότια ΚορέαΚουβέιτΝήσοι ΚέιμανΚαζακστάνΛάοςΛίβανοςΑγία Λου" + - "κίαΛιχτενστάινΣρι ΛάνκαΛιβερίαΛεσότοΛιθουανίαΛουξεμβούργοΛετονίαΛιβύηΜα" + - "ρόκοΜονακόΜολδαβίαΜαυροβούνιοΆγιος Μαρτίνος (Γαλλικό τμήμα)ΜαδαγασκάρηΝ" + - "ήσοι ΜάρσαλΠρώην Γιουγκοσλαβική Δημοκρατία της ΜακεδονίαςΜάλιΜιανμάρ (Β" + - "ιρμανία)ΜογγολίαΜακάο ΕΔΠ ΚίναςΝήσοι Βόρειες ΜαριάνεςΜαρτινίκαΜαυριτανί" + - "αΜονσεράτΜάλταΜαυρίκιοςΜαλδίβεςΜαλάουιΜεξικόΜαλαισίαΜοζαμβίκηΝαμίμπιαΝέ" + - "α ΚαληδονίαΝίγηραςΝήσος ΝόρφολκΝιγηρίαΝικαράγουαΟλλανδίαΝορβηγίαΝεπάλΝα" + - "ουρούΝιούεΝέα ΖηλανδίαΟμάνΠαναμάςΠερούΓαλλική ΠολυνησίαΠαπούα Νέα Γουιν" + - "έαΦιλιππίνεςΠακιστάνΠολωνίαΣεν Πιερ και ΜικελόνΝήσοι ΠίτκερνΠουέρτο Ρίκ" + - "οΠαλαιστινιακά ΕδάφηΠορτογαλίαΠαλάουΠαραγουάηΚατάρΠεριφερειακή ΩκεανίαΡ" + - "εϊνιόνΡουμανίαΣερβίαΡωσίαΡουάνταΣαουδική ΑραβίαΝήσοι ΣολομώντοςΣεϋχέλλε" + - "ςΣουδάνΣουηδίαΣιγκαπούρηΑγία ΕλένηΣλοβενίαΣβάλμπαρντ και Γιαν ΜαγιένΣλο" + - "βακίαΣιέρα ΛεόνεΆγιος ΜαρίνοςΣενεγάληΣομαλίαΣουρινάμΝότιο ΣουδάνΣάο Τομ" + - "έ και ΠρίνσιπεΕλ ΣαλβαδόρΆγιος Μαρτίνος (Ολλανδικό τμήμα)ΣυρίαΣουαζιλάν" + - "δηΤριστάν ντα ΚούνιαΝήσοι Τερκς και ΚάικοςΤσαντΓαλλικές περιοχές του νο" + - "τίου ημισφαιρίουΤόγκοΤαϊλάνδηΤατζικιστάνΤοκελάουΤιμόρ-ΛέστεΤουρκμενιστά" + - "νΤυνησίαΤόνγκαΤουρκίαΤρινιντάντ και ΤομπάγκοΤουβαλούΤαϊβάνΤανζανίαΟυκρα" + - "νίαΟυγκάνταΑπομακρυσμένες Νησίδες ΗΠΑΗνωμένα ΈθνηΗνωμένες ΠολιτείεςΟυρο" + - "υγουάηΟυζμπεκιστάνΒατικανόΆγιος Βικέντιος και ΓρεναδίνεςΒενεζουέλαΒρετα" + - "νικές Παρθένες ΝήσοιΑμερικανικές Παρθένες ΝήσοιΒιετνάμΒανουάτουΟυάλις κ" + - "αι ΦουτούναΣαμόαΚοσσυφοπέδιοΥεμένηΜαγιότΝότια ΑφρικήΖάμπιαΖιμπάμπουεΆγν" + - "ωστη περιοχήΚόσμοςΑφρικήΒόρεια ΑμερικήΝότια ΑμερικήΩκεανίαΔυτική Αφρική" + - "Κεντρική ΑμερικήΑνατολική ΑφρικήΒόρεια ΑφρικήΜέση ΑφρικήΝότιος ΑφρικήΑμ" + - "ερικήΒόρειος ΑμερικήΚαραϊβικήΑνατολική ΑσίαΝότια ΑσίαΝοτιοανατολική Ασί" + - "αΝότια ΕυρώπηΑυστραλασίαΜελανησίαΠεριοχή ΜικρονησίαςΠολυνησίαΑσίαΚεντρι" + - "κή ΑσίαΔυτική ΑσίαΕυρώπηΑνατολική ΕυρώπηΒόρεια ΕυρώπηΔυτική ΕυρώπηΛατιν" + - "ική Αμερική" - -var elRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001b, 0x0027, 0x0053, 0x0067, 0x0097, 0x00a9, 0x00b7, - 0x00c5, 0x00d1, 0x00e5, 0x00f7, 0x0118, 0x0126, 0x0138, 0x0146, - 0x015b, 0x0173, 0x0196, 0x01ae, 0x01c6, 0x01d2, 0x01ed, 0x01ff, - 0x020f, 0x0223, 0x022f, 0x0252, 0x0264, 0x0274, 0x0282, 0x02a7, - 0x02b7, 0x02c7, 0x02d5, 0x02ec, 0x0300, 0x0314, 0x0320, 0x032e, - 0x0354, 0x0371, 0x03a6, 0x03c7, 0x03d5, 0x03f6, 0x0409, 0x0411, - 0x0421, 0x0429, 0x0439, 0x0456, 0x0469, 0x0473, 0x0494, 0x04a4, - 0x04d0, 0x04dc, 0x04e8, 0x04f8, 0x0515, 0x0527, 0x0531, 0x0543, - // Entry 40 - 7F - 0x056c, 0x057a, 0x059c, 0x05b0, 0x05be, 0x05ce, 0x05e7, 0x05f7, - 0x0605, 0x0615, 0x0632, 0x0642, 0x0654, 0x065e, 0x0677, 0x068b, - 0x06a2, 0x06ae, 0x06bc, 0x06db, 0x06e9, 0x06f7, 0x0714, 0x0722, - 0x072c, 0x073e, 0x0752, 0x0760, 0x076e, 0x0784, 0x07a5, 0x07b1, - 0x07fc, 0x0810, 0x081c, 0x0839, 0x0847, 0x086e, 0x08a1, 0x08af, - 0x08bd, 0x08c5, 0x08d5, 0x08f0, 0x0902, 0x0912, 0x091e, 0x0936, - 0x0940, 0x097b, 0x0983, 0x098b, 0x099b, 0x09a7, 0x09b3, 0x09c3, - 0x09d3, 0x09e1, 0x09eb, 0x09fd, 0x0a0d, 0x0a1f, 0x0a2d, 0x0a4e, - // Entry 80 - BF - 0x0a65, 0x0a7a, 0x0a88, 0x0a9f, 0x0ab1, 0x0ab9, 0x0ac7, 0x0adc, - 0x0af2, 0x0b03, 0x0b11, 0x0b1d, 0x0b2f, 0x0b47, 0x0b55, 0x0b5f, - 0x0b6b, 0x0b77, 0x0b87, 0x0b9d, 0x0bd4, 0x0bea, 0x0c01, 0x0c59, - 0x0c61, 0x0c82, 0x0c92, 0x0cae, 0x0cd8, 0x0cea, 0x0cfe, 0x0d0e, - 0x0d18, 0x0d2a, 0x0d3a, 0x0d48, 0x0d54, 0x0d64, 0x0d76, 0x0d86, - 0x0d9f, 0x0dad, 0x0dc6, 0x0dd4, 0x0de8, 0x0df8, 0x0e08, 0x0e12, - 0x0e20, 0x0e2a, 0x0e41, 0x0e49, 0x0e57, 0x0e61, 0x0e82, 0x0ea4, - 0x0eb8, 0x0ec8, 0x0ed6, 0x0efb, 0x0f14, 0x0f2b, 0x0f50, 0x0f64, - // Entry C0 - FF - 0x0f70, 0x0f82, 0x0f8c, 0x0fb3, 0x0fc1, 0x0fd1, 0x0fdd, 0x0fe7, - 0x0ff5, 0x1012, 0x1031, 0x1043, 0x104f, 0x105d, 0x1071, 0x1084, - 0x1094, 0x10c5, 0x10d5, 0x10ea, 0x1103, 0x1113, 0x1121, 0x1131, - 0x1148, 0x116f, 0x1184, 0x11bf, 0x11c9, 0x11df, 0x1201, 0x122a, - 0x1234, 0x1280, 0x128a, 0x129a, 0x12b0, 0x12c0, 0x12d5, 0x12ef, - 0x12fd, 0x1309, 0x1317, 0x1343, 0x1353, 0x135f, 0x136f, 0x137f, - 0x138f, 0x13c1, 0x13d8, 0x13fb, 0x140f, 0x1427, 0x1437, 0x1470, - 0x1484, 0x14b4, 0x14e8, 0x14f6, 0x1508, 0x152c, 0x1536, 0x154e, - // Entry 100 - 13F - 0x155a, 0x1566, 0x157d, 0x1589, 0x159d, 0x15ba, 0x15c6, 0x15d2, - 0x15ed, 0x1606, 0x1614, 0x162d, 0x164c, 0x166b, 0x1684, 0x1699, - 0x16b2, 0x16c0, 0x16dd, 0x16ef, 0x170a, 0x171d, 0x1742, 0x1759, - 0x176f, 0x1781, 0x17a6, 0x17b8, 0x17c0, 0x17d9, 0x17ee, 0x17fa, - 0x1819, 0x1832, 0x184b, 0x184b, 0x186a, -} // Size: 610 bytes - -const enRegionStr string = "" + // Size: 2953 bytes - "Ascension IslandAndorraUnited Arab EmiratesAfghanistanAntigua & BarbudaA" + - "nguillaAlbaniaArmeniaAngolaAntarcticaArgentinaAmerican SamoaAustriaAustr" + - "aliaArubaÅland IslandsAzerbaijanBosnia & HerzegovinaBarbadosBangladeshBe" + - "lgiumBurkina FasoBulgariaBahrainBurundiBeninSt. BarthélemyBermudaBruneiB" + - "oliviaCaribbean NetherlandsBrazilBahamasBhutanBouvet IslandBotswanaBelar" + - "usBelizeCanadaCocos (Keeling) IslandsCongo - KinshasaCentral African Rep" + - "ublicCongo - BrazzavilleSwitzerlandCôte d’IvoireCook IslandsChileCameroo" + - "nChinaColombiaClipperton IslandCosta RicaCubaCape VerdeCuraçaoChristmas " + - "IslandCyprusCzechiaGermanyDiego GarciaDjiboutiDenmarkDominicaDominican R" + - "epublicAlgeriaCeuta & MelillaEcuadorEstoniaEgyptWestern SaharaEritreaSpa" + - "inEthiopiaEuropean UnionEurozoneFinlandFijiFalkland IslandsMicronesiaFar" + - "oe IslandsFranceGabonUnited KingdomGrenadaGeorgiaFrench GuianaGuernseyGh" + - "anaGibraltarGreenlandGambiaGuineaGuadeloupeEquatorial GuineaGreeceSouth " + - "Georgia & South Sandwich IslandsGuatemalaGuamGuinea-BissauGuyanaHong Kon" + - "g SAR ChinaHeard & McDonald IslandsHondurasCroatiaHaitiHungaryCanary Isl" + - "andsIndonesiaIrelandIsraelIsle of ManIndiaBritish Indian Ocean Territory" + - "IraqIranIcelandItalyJerseyJamaicaJordanJapanKenyaKyrgyzstanCambodiaKirib" + - "atiComorosSt. Kitts & NevisNorth KoreaSouth KoreaKuwaitCayman IslandsKaz" + - "akhstanLaosLebanonSt. LuciaLiechtensteinSri LankaLiberiaLesothoLithuania" + - "LuxembourgLatviaLibyaMoroccoMonacoMoldovaMontenegroSt. MartinMadagascarM" + - "arshall IslandsMacedoniaMaliMyanmar (Burma)MongoliaMacau SAR ChinaNorthe" + - "rn Mariana IslandsMartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMa" + - "lawiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNigerNorfolk IslandNiger" + - "iaNicaraguaNetherlandsNorwayNepalNauruNiueNew ZealandOmanPanamaPeruFrenc" + - "h PolynesiaPapua New GuineaPhilippinesPakistanPolandSt. Pierre & Miquelo" + - "nPitcairn IslandsPuerto RicoPalestinian TerritoriesPortugalPalauParaguay" + - "QatarOutlying OceaniaRéunionRomaniaSerbiaRussiaRwandaSaudi ArabiaSolomon" + - " IslandsSeychellesSudanSwedenSingaporeSt. HelenaSloveniaSvalbard & Jan M" + - "ayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameSouth SudanSão T" + - "omé & PríncipeEl SalvadorSint MaartenSyriaSwazilandTristan da CunhaTurks" + - " & Caicos IslandsChadFrench Southern TerritoriesTogoThailandTajikistanTo" + - "kelauTimor-LesteTurkmenistanTunisiaTongaTurkeyTrinidad & TobagoTuvaluTai" + - "wanTanzaniaUkraineUgandaU.S. Outlying IslandsUnited NationsUnited States" + - "UruguayUzbekistanVatican CitySt. Vincent & GrenadinesVenezuelaBritish Vi" + - "rgin IslandsU.S. Virgin IslandsVietnamVanuatuWallis & FutunaSamoaKosovoY" + - "emenMayotteSouth AfricaZambiaZimbabweUnknown RegionWorldAfricaNorth Amer" + - "icaSouth AmericaOceaniaWestern AfricaCentral AmericaEastern AfricaNorthe" + - "rn AfricaMiddle AfricaSouthern AfricaAmericasNorthern AmericaCaribbeanEa" + - "stern AsiaSouthern AsiaSoutheast AsiaSouthern EuropeAustralasiaMelanesia" + - "Micronesian RegionPolynesiaAsiaCentral AsiaWestern AsiaEuropeEastern Eur" + - "opeNorthern EuropeWestern EuropeSub-Saharan AfricaLatin America" - -var enRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x002b, 0x0036, 0x0047, 0x004f, 0x0056, - 0x005d, 0x0063, 0x006d, 0x0076, 0x0084, 0x008b, 0x0094, 0x0099, - 0x00a7, 0x00b1, 0x00c5, 0x00cd, 0x00d7, 0x00de, 0x00ea, 0x00f2, - 0x00f9, 0x0100, 0x0105, 0x0114, 0x011b, 0x0121, 0x0128, 0x013d, - 0x0143, 0x014a, 0x0150, 0x015d, 0x0165, 0x016c, 0x0172, 0x0178, - 0x018f, 0x019f, 0x01b7, 0x01ca, 0x01d5, 0x01e5, 0x01f1, 0x01f6, - 0x01fe, 0x0203, 0x020b, 0x021c, 0x0226, 0x022a, 0x0234, 0x023c, - 0x024c, 0x0252, 0x0259, 0x0260, 0x026c, 0x0274, 0x027b, 0x0283, - // Entry 40 - 7F - 0x0295, 0x029c, 0x02ab, 0x02b2, 0x02b9, 0x02be, 0x02cc, 0x02d3, - 0x02d8, 0x02e0, 0x02ee, 0x02f6, 0x02fd, 0x0301, 0x0311, 0x031b, - 0x0328, 0x032e, 0x0333, 0x0341, 0x0348, 0x034f, 0x035c, 0x0364, - 0x0369, 0x0372, 0x037b, 0x0381, 0x0387, 0x0391, 0x03a2, 0x03a8, - 0x03ce, 0x03d7, 0x03db, 0x03e8, 0x03ee, 0x0401, 0x0419, 0x0421, - 0x0428, 0x042d, 0x0434, 0x0442, 0x044b, 0x0452, 0x0458, 0x0463, - 0x0468, 0x0486, 0x048a, 0x048e, 0x0495, 0x049a, 0x04a0, 0x04a7, - 0x04ad, 0x04b2, 0x04b7, 0x04c1, 0x04c9, 0x04d1, 0x04d8, 0x04e9, - // Entry 80 - BF - 0x04f4, 0x04ff, 0x0505, 0x0513, 0x051d, 0x0521, 0x0528, 0x0531, - 0x053e, 0x0547, 0x054e, 0x0555, 0x055e, 0x0568, 0x056e, 0x0573, - 0x057a, 0x0580, 0x0587, 0x0591, 0x059b, 0x05a5, 0x05b5, 0x05be, - 0x05c2, 0x05d1, 0x05d9, 0x05e8, 0x0600, 0x060a, 0x0614, 0x061e, - 0x0623, 0x062c, 0x0634, 0x063a, 0x0640, 0x0648, 0x0652, 0x0659, - 0x0666, 0x066b, 0x0679, 0x0680, 0x0689, 0x0694, 0x069a, 0x069f, - 0x06a4, 0x06a8, 0x06b3, 0x06b7, 0x06bd, 0x06c1, 0x06d1, 0x06e1, - 0x06ec, 0x06f4, 0x06fa, 0x070f, 0x071f, 0x072a, 0x0741, 0x0749, - // Entry C0 - FF - 0x074e, 0x0756, 0x075b, 0x076b, 0x0773, 0x077a, 0x0780, 0x0786, - 0x078c, 0x0798, 0x07a7, 0x07b1, 0x07b6, 0x07bc, 0x07c5, 0x07cf, - 0x07d7, 0x07eb, 0x07f3, 0x07ff, 0x0809, 0x0810, 0x0817, 0x081f, - 0x082a, 0x0840, 0x084b, 0x0857, 0x085c, 0x0865, 0x0875, 0x088b, - 0x088f, 0x08aa, 0x08ae, 0x08b6, 0x08c0, 0x08c7, 0x08d2, 0x08de, - 0x08e5, 0x08ea, 0x08f0, 0x0901, 0x0907, 0x090d, 0x0915, 0x091c, - 0x0922, 0x0937, 0x0945, 0x0952, 0x0959, 0x0963, 0x096f, 0x0987, - 0x0990, 0x09a6, 0x09b9, 0x09c0, 0x09c7, 0x09d6, 0x09db, 0x09e1, - // Entry 100 - 13F - 0x09e6, 0x09ed, 0x09f9, 0x09ff, 0x0a07, 0x0a15, 0x0a1a, 0x0a20, - 0x0a2d, 0x0a3a, 0x0a41, 0x0a4f, 0x0a5e, 0x0a6c, 0x0a7b, 0x0a88, - 0x0a97, 0x0a9f, 0x0aaf, 0x0ab8, 0x0ac4, 0x0ad1, 0x0adf, 0x0aee, - 0x0af9, 0x0b02, 0x0b14, 0x0b1d, 0x0b21, 0x0b2d, 0x0b39, 0x0b3f, - 0x0b4d, 0x0b5c, 0x0b6a, 0x0b7c, 0x0b89, -} // Size: 610 bytes - -const enGBRegionStr string = "" + // Size: 135 bytes - "St BarthélemySt Kitts & NevisSt LuciaSt MartinSt Pierre & MiquelonSt Hel" + - "enaUS Outlying IslandsSt Vincent & GrenadinesUS Virgin Islands" - -var enGBRegionIdx = []uint16{ // 251 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - // Entry 40 - 7F - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, - 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x000e, 0x001e, - // Entry 80 - BF - 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, - 0x0026, 0x0026, 0x0026, 0x0026, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, 0x002f, - 0x002f, 0x002f, 0x002f, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - // Entry C0 - FF - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, - 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x004c, - 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, 0x004c, - 0x004c, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x005f, 0x0076, - 0x0076, 0x0076, 0x0087, -} // Size: 526 bytes - -const esRegionStr string = "" + // Size: 3122 bytes - "Isla de la AscensiónAndorraEmiratos Árabes UnidosAfganistánAntigua y Bar" + - "budaAnguilaAlbaniaArmeniaAngolaAntártidaArgentinaSamoa AmericanaAustriaA" + - "ustraliaArubaIslas ÅlandAzerbaiyánBosnia y HerzegovinaBarbadosBangladésB" + - "élgicaBurkina FasoBulgariaBaréinBurundiBenínSan BartoloméBermudasBrunéi" + - "BoliviaCaribe neerlandésBrasilBahamasButánIsla BouvetBotsuanaBielorrusia" + - "BeliceCanadáIslas CocosRepública Democrática del CongoRepública Centroaf" + - "ricanaRepública del CongoSuizaCôte d’IvoireIslas CookChileCamerúnChinaCo" + - "lombiaIsla ClippertonCosta RicaCubaCabo VerdeCurazaoIsla de NavidadChipr" + - "eChequiaAlemaniaDiego GarcíaYibutiDinamarcaDominicaRepública DominicanaA" + - "rgeliaCeuta y MelillaEcuadorEstoniaEgiptoSáhara OccidentalEritreaEspañaE" + - "tiopíaUnión Europeazona euroFinlandiaFiyiIslas MalvinasMicronesiaIslas F" + - "eroeFranciaGabónReino UnidoGranadaGeorgiaGuayana FrancesaGuernseyGhanaGi" + - "braltarGroenlandiaGambiaGuineaGuadalupeGuinea EcuatorialGreciaIslas Geor" + - "gia del Sur y Sandwich del SurGuatemalaGuamGuinea-BisáuGuyanaRAE de Hong" + - " Kong (China)Islas Heard y McDonaldHondurasCroaciaHaitíHungríaCanariasIn" + - "donesiaIrlandaIsraelIsla de ManIndiaTerritorio Británico del Océano Índi" + - "coIrakIránIslandiaItaliaJerseyJamaicaJordaniaJapónKeniaKirguistánCamboya" + - "KiribatiComorasSan Cristóbal y NievesCorea del NorteCorea del SurKuwaitI" + - "slas CaimánKazajistánLaosLíbanoSanta LucíaLiechtensteinSri LankaLiberiaL" + - "esotoLituaniaLuxemburgoLetoniaLibiaMarruecosMónacoMoldaviaMontenegroSan " + - "MartínMadagascarIslas MarshallMacedoniaMaliMyanmar (Birmania)MongoliaRAE" + - " de Macao (China)Islas Marianas del NorteMartinicaMauritaniaMontserratMa" + - "ltaMauricioMaldivasMalauiMéxicoMalasiaMozambiqueNamibiaNueva CaledoniaNí" + - "gerIsla NorfolkNigeriaNicaraguaPaíses BajosNoruegaNepalNauruNiueNueva Ze" + - "landaOmánPanamáPerúPolinesia FrancesaPapúa Nueva GuineaFilipinasPakistán" + - "PoloniaSan Pedro y MiquelónIslas PitcairnPuerto RicoTerritorios Palestin" + - "osPortugalPalaosParaguayCatarTerritorios alejados de OceaníaReuniónRuman" + - "íaSerbiaRusiaRuandaArabia SaudíIslas SalomónSeychellesSudánSueciaSingap" + - "urSanta ElenaEsloveniaSvalbard y Jan MayenEslovaquiaSierra LeonaSan Mari" + - "noSenegalSomaliaSurinamSudán del SurSanto Tomé y PríncipeEl SalvadorSint" + - " MaartenSiriaSuazilandiaTristán de AcuñaIslas Turcas y CaicosChadTerrito" + - "rios Australes FrancesesTogoTailandiaTayikistánTokelauTimor-LesteTurkmen" + - "istánTúnezTongaTurquíaTrinidad y TobagoTuvaluTaiwánTanzaniaUcraniaUganda" + - "Islas menores alejadas de EE. UU.Naciones UnidasEstados UnidosUruguayUzb" + - "ekistánCiudad del VaticanoSan Vicente y las GranadinasVenezuelaIslas Vír" + - "genes BritánicasIslas Vírgenes de EE. UU.VietnamVanuatuWallis y FutunaSa" + - "moaKosovoYemenMayotteSudáfricaZambiaZimbabueRegión desconocidaMundoÁfric" + - "aAmérica del NorteSudaméricaOceaníaÁfrica occidentalCentroaméricaÁfrica " + - "orientalÁfrica septentrionalÁfrica centralÁfrica meridionalAméricaNortea" + - "méricaCaribeAsia orientalAsia meridionalSudeste asiáticoEuropa meridiona" + - "lAustralasiaMelanesiaRegión de MicronesiaPolinesiaAsiaAsia centralAsia o" + - "ccidentalEuropaEuropa orientalEuropa septentrionalEuropa occidentalLatin" + - "oamérica" - -var esRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0015, 0x001c, 0x0033, 0x003e, 0x004f, 0x0056, 0x005d, - 0x0064, 0x006a, 0x0074, 0x007d, 0x008c, 0x0093, 0x009c, 0x00a1, - 0x00ad, 0x00b8, 0x00cc, 0x00d4, 0x00de, 0x00e6, 0x00f2, 0x00fa, - 0x0101, 0x0108, 0x010e, 0x011c, 0x0124, 0x012b, 0x0132, 0x0144, - 0x014a, 0x0151, 0x0157, 0x0162, 0x016a, 0x0175, 0x017b, 0x0182, - 0x018d, 0x01ae, 0x01c7, 0x01db, 0x01e0, 0x01f0, 0x01fa, 0x01ff, - 0x0207, 0x020c, 0x0214, 0x0223, 0x022d, 0x0231, 0x023b, 0x0242, - 0x0251, 0x0257, 0x025e, 0x0266, 0x0273, 0x0279, 0x0282, 0x028a, - // Entry 40 - 7F - 0x029f, 0x02a6, 0x02b5, 0x02bc, 0x02c3, 0x02c9, 0x02db, 0x02e2, - 0x02e9, 0x02f1, 0x02ff, 0x0308, 0x0311, 0x0315, 0x0323, 0x032d, - 0x0338, 0x033f, 0x0345, 0x0350, 0x0357, 0x035e, 0x036e, 0x0376, - 0x037b, 0x0384, 0x038f, 0x0395, 0x039b, 0x03a4, 0x03b5, 0x03bb, - 0x03e3, 0x03ec, 0x03f0, 0x03fd, 0x0403, 0x041b, 0x0431, 0x0439, - 0x0440, 0x0446, 0x044e, 0x0456, 0x045f, 0x0466, 0x046c, 0x0477, - 0x047c, 0x04a5, 0x04a9, 0x04ae, 0x04b6, 0x04bc, 0x04c2, 0x04c9, - 0x04d1, 0x04d7, 0x04dc, 0x04e7, 0x04ee, 0x04f6, 0x04fd, 0x0514, - // Entry 80 - BF - 0x0523, 0x0530, 0x0536, 0x0543, 0x054e, 0x0552, 0x0559, 0x0565, - 0x0572, 0x057b, 0x0582, 0x0588, 0x0590, 0x059a, 0x05a1, 0x05a6, - 0x05af, 0x05b6, 0x05be, 0x05c8, 0x05d3, 0x05dd, 0x05eb, 0x05f4, - 0x05f8, 0x060a, 0x0612, 0x0626, 0x063e, 0x0647, 0x0651, 0x065b, - 0x0660, 0x0668, 0x0670, 0x0676, 0x067d, 0x0684, 0x068e, 0x0695, - 0x06a4, 0x06aa, 0x06b6, 0x06bd, 0x06c6, 0x06d3, 0x06da, 0x06df, - 0x06e4, 0x06e8, 0x06f5, 0x06fa, 0x0701, 0x0706, 0x0718, 0x072b, - 0x0734, 0x073d, 0x0744, 0x0759, 0x0767, 0x0772, 0x0788, 0x0790, - // Entry C0 - FF - 0x0796, 0x079e, 0x07a3, 0x07c3, 0x07cb, 0x07d3, 0x07d9, 0x07de, - 0x07e4, 0x07f1, 0x07ff, 0x0809, 0x080f, 0x0815, 0x081d, 0x0828, - 0x0831, 0x0845, 0x084f, 0x085b, 0x0865, 0x086c, 0x0873, 0x087a, - 0x0888, 0x089f, 0x08aa, 0x08b6, 0x08bb, 0x08c6, 0x08d8, 0x08ed, - 0x08f1, 0x0910, 0x0914, 0x091d, 0x0928, 0x092f, 0x093a, 0x0947, - 0x094d, 0x0952, 0x095a, 0x096b, 0x0971, 0x0978, 0x0980, 0x0987, - 0x098d, 0x09ae, 0x09bd, 0x09cb, 0x09d2, 0x09dd, 0x09f0, 0x0a0c, - 0x0a15, 0x0a30, 0x0a4a, 0x0a51, 0x0a58, 0x0a67, 0x0a6c, 0x0a72, - // Entry 100 - 13F - 0x0a77, 0x0a7e, 0x0a88, 0x0a8e, 0x0a96, 0x0aa9, 0x0aae, 0x0ab5, - 0x0ac7, 0x0ad2, 0x0ada, 0x0aec, 0x0afa, 0x0b0a, 0x0b1f, 0x0b2e, - 0x0b40, 0x0b48, 0x0b55, 0x0b5b, 0x0b68, 0x0b77, 0x0b88, 0x0b99, - 0x0ba4, 0x0bad, 0x0bc2, 0x0bcb, 0x0bcf, 0x0bdb, 0x0bea, 0x0bf0, - 0x0bff, 0x0c13, 0x0c24, 0x0c24, 0x0c32, -} // Size: 610 bytes - -const es419RegionStr string = "" + // Size: 395 bytes - "Isla AscensiónBosnia-HerzegovinaCosta de MarfilEurozonaGuerneseyIslas Ca" + - "nariasIslas UltramarinasTristán da CunhaTimor OrientalIslas Ultramarinas" + - " de EE.UU.Islas Vírgenes de los Estados UnidosÁfrica del OesteÁfrica del" + - " EsteÁfrica del NorteÁfrica del SurAsia del EsteAsia del SurAsia sudorie" + - "ntalEuropa del Surregión de MicronesiaAsia del OesteEuropa del EsteEurop" + - "a del NorteEuropa del Oeste" - -var es419RegionIdx = []uint16{ // 291 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x000f, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, - 0x0021, 0x0021, 0x0021, 0x0021, 0x0021, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - // Entry 40 - 7F - 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, - 0x0030, 0x0030, 0x0030, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, - 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0038, 0x0041, - 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, - 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, - 0x0041, 0x0041, 0x0041, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - // Entry 80 - BF - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, - // Entry C0 - FF - 0x004f, 0x004f, 0x004f, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0080, 0x0080, - 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, 0x0080, - 0x0080, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, 0x009c, - 0x009c, 0x009c, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, - // Entry 100 - 13F - 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, 0x00c1, - 0x00c1, 0x00c1, 0x00c1, 0x00d2, 0x00d2, 0x00e2, 0x00f3, 0x00f3, - 0x0102, 0x0102, 0x0102, 0x0102, 0x010f, 0x011b, 0x012b, 0x0139, - 0x0139, 0x0139, 0x014e, 0x014e, 0x014e, 0x014e, 0x015c, 0x015c, - 0x016b, 0x017b, 0x018b, -} // Size: 606 bytes - -const etRegionStr string = "" + // Size: 3018 bytes - "Ascensioni saarAndorraAraabia ÜhendemiraadidAfganistanAntigua ja Barbuda" + - "AnguillaAlbaaniaArmeeniaAngolaAntarktikaArgentinaAmeerika SamoaAustriaAu" + - "straaliaArubaAhvenamaaAserbaidžaanBosnia ja HertsegoviinaBarbadosBanglad" + - "eshBelgiaBurkina FasoBulgaariaBahreinBurundiBeninSaint-BarthélemyBermuda" + - "BruneiBoliiviaHollandi Kariibi mere saaredBrasiiliaBahamaBhutanBouvet’ s" + - "aarBotswanaValgeveneBelizeKanadaKookossaaredKongo DVKesk-Aafrika Vabarii" + - "kKongo VabariikŠveitsCôte d’IvoireCooki saaredTšiiliKamerunHiinaColombia" + - "Clippertoni saarCosta RicaKuubaRoheneemesaaredCuraçaoJõulusaarKüprosTšeh" + - "hiSaksamaaDiego GarciaDjiboutiTaaniDominicaDominikaani VabariikAlžeeriaC" + - "euta ja MelillaEcuadorEestiEgiptusLääne-SaharaEritreaHispaaniaEtioopiaEu" + - "roopa LiiteuroalaSoomeFidžiFalklandi saaredMikroneesiaFääri saaredPrants" + - "usmaaGabonSuurbritanniaGrenadaGruusiaPrantsuse GuajaanaGuernseyGhanaGibr" + - "altarGröönimaaGambiaGuineaGuadeloupeEkvatoriaal-GuineaKreekaLõuna-Georgi" + - "a ja Lõuna-Sandwichi saaredGuatemalaGuamGuinea-BissauGuyanaHongkongi eri" + - "halduspiirkondHeardi ja McDonaldi saaredHondurasHorvaatiaHaitiUngariKana" + - "ari saaredIndoneesiaIirimaaIisraelMani saarIndiaBriti India ookeani alaI" + - "raakIraanIslandItaaliaJerseyJamaicaJordaaniaJaapanKeeniaKõrgõzstanKambod" + - "žaKiribatiKomooridSaint Kitts ja NevisPõhja-KoreaLõuna-KoreaKuveitKaima" + - "nisaaredKasahstanLaosLiibanonSaint LuciaLiechtensteinSri LankaLibeeriaLe" + - "sothoLeeduLuksemburgLätiLiibüaMarokoMonacoMoldovaMontenegroSaint-MartinM" + - "adagaskarMarshalli SaaredMakedooniaMaliMyanmar (Birma)MongooliaMacau eri" + - "halduspiirkondPõhja-MariaanidMartiniqueMauritaaniaMontserratMaltaMauriti" + - "usMaldiividMalawiMehhikoMalaisiaMosambiikNamiibiaUus-KaledooniaNigerNorf" + - "olkNigeeriaNicaraguaHollandNorraNepalNauruNiueUus-MeremaaOmaanPanamaPeru" + - "uPrantsuse PolüneesiaPaapua Uus-GuineaFilipiinidPakistanPoolaSaint-Pierr" + - "e ja MiquelonPitcairni saaredPuerto RicoPalestiina aladPortugalBelauPara" + - "guayKatarOkeaania hajasaaredRéunionRumeeniaSerbiaVenemaaRwandaSaudi Araa" + - "biaSaalomoni SaaredSeišellidSudaanRootsiSingapurSaint HelenaSloveeniaSva" + - "lbard ja Jan MayenSlovakkiaSierra LeoneSan MarinoSenegalSomaaliaSuriname" + - "Lõuna-SudaanSão Tomé ja PríncipeEl SalvadorSint MaartenSüüriaSvaasimaaTr" + - "istan da CunhaTurks ja CaicosTšaadPrantsuse LõunaaladTogoTaiTadžikistanT" + - "okelauIda-TimorTürkmenistanTuneesiaTongaTürgiTrinidad ja TobagoTuvaluTai" + - "wanTansaaniaUkrainaUgandaÜhendriikide hajasaaredÜhendatud Rahvaste Organ" + - "isatsioonAmeerika ÜhendriigidUruguayUsbekistanVatikanSaint Vincent ja Gr" + - "enadiinidVenezuelaBriti NeitsisaaredUSA NeitsisaaredVietnamVanuatuWallis" + - " ja FutunaSamoaKosovoJeemenMayotteLõuna-Aafrika VabariikSambiaZimbabweTu" + - "ndmatu piirkondmaailmAafrikaPõhja-AmeerikaLõuna-AmeerikaOkeaaniaLääne-Aa" + - "frikaKesk-AmeerikaIda-AafrikaPõhja-AafrikaKesk-AafrikaLõuna-AafrikaAmeer" + - "ikaAmeerika põhjaosaKariibi piirkondIda-AasiaLõuna-AasiaKagu-AasiaLõuna-" + - "EuroopaAustralaasiaMelaneesiaMikroneesia (piirkond)PolüneesiaAasiaKesk-A" + - "asiaLääne-AasiaEuroopaIda-EuroopaPõhja-EuroopaLääne-EuroopaLadina-Ameeri" + - "ka" - -var etRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0016, 0x002d, 0x0037, 0x0049, 0x0051, 0x0059, - 0x0061, 0x0067, 0x0071, 0x007a, 0x0088, 0x008f, 0x0099, 0x009e, - 0x00a7, 0x00b4, 0x00cb, 0x00d3, 0x00dd, 0x00e3, 0x00ef, 0x00f8, - 0x00ff, 0x0106, 0x010b, 0x011c, 0x0123, 0x0129, 0x0131, 0x014d, - 0x0156, 0x015c, 0x0162, 0x0170, 0x0178, 0x0181, 0x0187, 0x018d, - 0x0199, 0x01a1, 0x01b6, 0x01c4, 0x01cb, 0x01db, 0x01e7, 0x01ee, - 0x01f5, 0x01fa, 0x0202, 0x0212, 0x021c, 0x0221, 0x0230, 0x0238, - 0x0242, 0x0249, 0x0250, 0x0258, 0x0264, 0x026c, 0x0271, 0x0279, - // Entry 40 - 7F - 0x028d, 0x0296, 0x02a6, 0x02ad, 0x02b2, 0x02b9, 0x02c7, 0x02ce, - 0x02d7, 0x02df, 0x02eb, 0x02f2, 0x02f7, 0x02fd, 0x030d, 0x0318, - 0x0326, 0x0331, 0x0336, 0x0343, 0x034a, 0x0351, 0x0363, 0x036b, - 0x0370, 0x0379, 0x0384, 0x038a, 0x0390, 0x039a, 0x03ac, 0x03b2, - 0x03db, 0x03e4, 0x03e8, 0x03f5, 0x03fb, 0x0416, 0x0430, 0x0438, - 0x0441, 0x0446, 0x044c, 0x045a, 0x0464, 0x046b, 0x0472, 0x047b, - 0x0480, 0x0497, 0x049c, 0x04a1, 0x04a7, 0x04ae, 0x04b4, 0x04bb, - 0x04c4, 0x04ca, 0x04d0, 0x04dc, 0x04e5, 0x04ed, 0x04f5, 0x0509, - // Entry 80 - BF - 0x0515, 0x0521, 0x0527, 0x0534, 0x053d, 0x0541, 0x0549, 0x0554, - 0x0561, 0x056a, 0x0572, 0x0579, 0x057e, 0x0588, 0x058d, 0x0594, - 0x059a, 0x05a0, 0x05a7, 0x05b1, 0x05bd, 0x05c7, 0x05d7, 0x05e1, - 0x05e5, 0x05f4, 0x05fd, 0x0614, 0x0624, 0x062e, 0x0639, 0x0643, - 0x0648, 0x0651, 0x065a, 0x0660, 0x0667, 0x066f, 0x0678, 0x0680, - 0x068e, 0x0693, 0x069a, 0x06a2, 0x06ab, 0x06b2, 0x06b7, 0x06bc, - 0x06c1, 0x06c5, 0x06d0, 0x06d5, 0x06db, 0x06e0, 0x06f5, 0x0706, - 0x0710, 0x0718, 0x071d, 0x0735, 0x0745, 0x0750, 0x075f, 0x0767, - // Entry C0 - FF - 0x076c, 0x0774, 0x0779, 0x078c, 0x0794, 0x079c, 0x07a2, 0x07a9, - 0x07af, 0x07bc, 0x07cc, 0x07d6, 0x07dc, 0x07e2, 0x07ea, 0x07f6, - 0x07ff, 0x0814, 0x081d, 0x0829, 0x0833, 0x083a, 0x0842, 0x084a, - 0x0857, 0x086e, 0x0879, 0x0885, 0x088d, 0x0896, 0x08a6, 0x08b5, - 0x08bb, 0x08cf, 0x08d3, 0x08d6, 0x08e2, 0x08e9, 0x08f2, 0x08ff, - 0x0907, 0x090c, 0x0912, 0x0924, 0x092a, 0x0930, 0x0939, 0x0940, - 0x0946, 0x095e, 0x0980, 0x0995, 0x099c, 0x09a6, 0x09ad, 0x09c9, - 0x09d2, 0x09e4, 0x09f4, 0x09fb, 0x0a02, 0x0a12, 0x0a17, 0x0a1d, - // Entry 100 - 13F - 0x0a23, 0x0a2a, 0x0a41, 0x0a47, 0x0a4f, 0x0a60, 0x0a66, 0x0a6d, - 0x0a7c, 0x0a8b, 0x0a93, 0x0aa2, 0x0aaf, 0x0aba, 0x0ac8, 0x0ad4, - 0x0ae2, 0x0aea, 0x0afc, 0x0b0c, 0x0b15, 0x0b21, 0x0b2b, 0x0b39, - 0x0b45, 0x0b4f, 0x0b65, 0x0b70, 0x0b75, 0x0b7f, 0x0b8c, 0x0b93, - 0x0b9e, 0x0bac, 0x0bbb, 0x0bbb, 0x0bca, -} // Size: 610 bytes - -const faRegionStr string = "" + // Size: 5023 bytes - "جزایر آسنسیونآندوراامارات متحدهٔ عربیافغانستانآنتیگوا و باربوداآنگویلاآل" + - "بانیارمنستانآنگولاجنوبگانآرژانتینساموآی امریکااتریشاسترالیاآروباجزایر آ" + - "لاندجمهوری آذربایجانبوسنی و هرزگوینباربادوسبنگلادشبلژیکبورکینافاسوبلغار" + - "ستانبحرینبوروندیبنینسن بارتلمیبرمودابرونئیبولیویجزایر کارائیب هلندبرزیل" + - "باهامابوتانجزیرهٔ بووهبوتسوانابلاروسبلیزکاناداجزایر کوکوسکنگو - کینشاسا" + - "جمهوری افریقای مرکزیکنگو - برازویلسوئیسساحل عاججزایر کوکشیلیکامرونچینکل" + - "مبیاجزایر کلیپرتونکاستاریکاکوباکیپ\u200cوردکوراسائوجزیرهٔ کریسمسقبرسجمه" + - "وری چکآلماندیه\u200cگو گارسیاجیبوتیدانمارکدومینیکاجمهوری دومینیکنالجزای" + - "رسبته و ملیلهاکوادوراستونیمصرصحرای غربیاریترهاسپانیااتیوپیاتحادیهٔ اروپ" + - "امنطقه یوروفنلاندفیجیجزایر فالکلندمیکرونزیجزایر فاروفرانسهگابنبریتانیاگ" + - "رناداگرجستانگویان فرانسهگرنزیغناجبل\u200cالطارقگرینلندگامبیاگینهگوادلوپ" + - "گینهٔ استوایییونانجزایر جورجیای جنوبی و ساندویچ جنوبیگواتمالاگوامگینهٔ " + - "بیسائوگویانهنگ\u200cکنگ، ناحیهٔ ویژهٔ حکومتی چینجزیرهٔ هرد و جزایر مک" + - "\u200cدونالدهندوراسکرواسیهائیتیمجارستانجزایر قناریاندونزیایرلنداسرائیلجز" + - "یرهٔ منهندقلمرو بریتانیا در اقیانوس هندعراقایرانایسلندایتالیاجرزیجامائی" + - "کااردنژاپنکنیاقرقیزستانکامبوجکیریباتیکوموروسنت کیتس و نویسکرهٔ شمالیکره" + - "ٔ جنوبیکویتجزایر کِیمنقزاقستانلائوسلبنانسنت لوسیالیختن\u200cاشتاینسری" + - "\u200cلانکالیبریالسوتولیتوانیلوکزامبورگلتونیلیبیمراکشموناکومولداویمونته" + - "\u200cنگروسنت مارتینماداگاسکارجزایر مارشالمقدونیهمالیمیانمار (برمه)مغولس" + - "تانماکائو، ناحیهٔ ویژهٔ حکومتی چینجزایر ماریانای شمالیمارتینیکموریتانیم" + - "ونت\u200cسراتمالتموریسمالدیومالاویمکزیکمالزیموزامبیکنامیبیاکالدونیای جد" + - "یدنیجرجزیرهٔ نورفولکنیجریهنیکاراگوئههلندنروژنپالنائورونیوئهنیوزیلندعمان" + - "پاناماپروپلی\u200cنزی فرانسهپاپوا گینهٔ نوفیلیپینپاکستانلهستانسن پیر و " + - "میکلنجزایر پیت\u200cکرنپورتوریکوسرزمین\u200cهای فلسطینیپرتغالپالائوپارا" + - "گوئهقطربخش\u200cهای دورافتادهٔ اقیانوسیهرئونیونرومانیصربستانروسیهرواندا" + - "عربستان سعودیجزایر سلیمانسیشلسودانسوئدسنگاپورسنت هلناسلوونیاسوالبارد و " + - "جان\u200cمایناسلواکیسیرالئونسان\u200cمارینوسنگالسومالیسورینامسودان جنوب" + - "یسائوتومه و پرینسیپالسالوادورسنت مارتنسوریهسوازیلندتریستان دا کوناجزایر" + - " تورکس و کایکوسچادقلمروهای جنوبی فرانسهتوگوتایلندتاجیکستانتوکلائوتیمور-ل" + - "ستهترکمنستانتونستونگاترکیهترینیداد و توباگوتووالوتایوانتانزانیااوکراینا" + - "وگانداجزایر دورافتادهٔ ایالات متحدهسازمان ملل متحدایالات متحدهاروگوئهاز" + - "بکستانواتیکانسنت وینسنت و گرنادینونزوئلاجزایر ویرجین بریتانیاجزایر ویرج" + - "ین ایالات متحدهویتناموانواتووالیس و فوتوناساموآکوزوویمنمایوتافریقای جنو" + - "بیزامبیازیمبابوهناحیهٔ نامشخصجهانافریقاامریکای شمالیامریکای جنوبیاقیانو" + - "سیهغرب افریقاامریکای مرکزیشرق افریقاشمال افریقامرکز افریقاجنوب افریقاام" + - "ریکاشمال امریکاکارائیبشرق آسیاجنوب آسیاجنوب شرق آسیاجنوب اروپااسترالزیم" + - "لانزیناحیهٔ میکرونزیپلی\u200cنزیآسیاآسیای مرکزیغرب آسیااروپاشرق اروپاشم" + - "ال اروپاغرب اروپاامریکای لاتین" - -var faRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0019, 0x0025, 0x0047, 0x0059, 0x0079, 0x0087, 0x0093, - 0x00a3, 0x00af, 0x00bd, 0x00cd, 0x00e6, 0x00f0, 0x0100, 0x010a, - 0x011f, 0x013e, 0x015a, 0x016a, 0x0178, 0x0182, 0x0198, 0x01aa, - 0x01b4, 0x01c2, 0x01ca, 0x01dd, 0x01e9, 0x01f5, 0x0201, 0x0223, - 0x022d, 0x0239, 0x0243, 0x0258, 0x0268, 0x0274, 0x027c, 0x0288, - 0x029d, 0x02b6, 0x02dc, 0x02f5, 0x02ff, 0x030e, 0x031f, 0x0327, - 0x0333, 0x0339, 0x0345, 0x0360, 0x0372, 0x037a, 0x0389, 0x0399, - 0x03b2, 0x03ba, 0x03cb, 0x03d5, 0x03ef, 0x03fb, 0x0409, 0x0419, - // Entry 40 - 7F - 0x0436, 0x0444, 0x045a, 0x0468, 0x0474, 0x047a, 0x048d, 0x0499, - 0x04a7, 0x04b3, 0x04ce, 0x04e1, 0x04ed, 0x04f5, 0x050e, 0x051e, - 0x0531, 0x053d, 0x0545, 0x0555, 0x0561, 0x056f, 0x0586, 0x0590, - 0x0596, 0x05ab, 0x05b9, 0x05c5, 0x05cd, 0x05db, 0x05f4, 0x05fe, - 0x063f, 0x064f, 0x0657, 0x066e, 0x0678, 0x06b5, 0x06ea, 0x06f8, - 0x0704, 0x0710, 0x0720, 0x0735, 0x0743, 0x074f, 0x075d, 0x076e, - 0x0774, 0x07aa, 0x07b2, 0x07bc, 0x07c8, 0x07d6, 0x07de, 0x07ee, - 0x07f6, 0x07fe, 0x0806, 0x0818, 0x0824, 0x0834, 0x0840, 0x085b, - // Entry 80 - BF - 0x086e, 0x0881, 0x0889, 0x089e, 0x08ae, 0x08b8, 0x08c2, 0x08d3, - 0x08ec, 0x08ff, 0x090b, 0x0915, 0x0923, 0x0937, 0x0941, 0x0949, - 0x0953, 0x095f, 0x096d, 0x0982, 0x0995, 0x09a9, 0x09c0, 0x09ce, - 0x09d6, 0x09ef, 0x09ff, 0x0a39, 0x0a5f, 0x0a6f, 0x0a7f, 0x0a92, - 0x0a9a, 0x0aa4, 0x0ab0, 0x0abc, 0x0ac6, 0x0ad0, 0x0ae0, 0x0aee, - 0x0b09, 0x0b11, 0x0b2c, 0x0b38, 0x0b4c, 0x0b54, 0x0b5c, 0x0b64, - 0x0b70, 0x0b7a, 0x0b8a, 0x0b92, 0x0b9e, 0x0ba4, 0x0bc0, 0x0bda, - 0x0be8, 0x0bf6, 0x0c02, 0x0c1b, 0x0c35, 0x0c47, 0x0c6b, 0x0c77, - // Entry C0 - FF - 0x0c83, 0x0c93, 0x0c99, 0x0cd0, 0x0cde, 0x0cea, 0x0cf8, 0x0d02, - 0x0d0e, 0x0d27, 0x0d3e, 0x0d46, 0x0d50, 0x0d58, 0x0d66, 0x0d73, - 0x0d81, 0x0da8, 0x0db6, 0x0dc6, 0x0ddb, 0x0de5, 0x0df1, 0x0dff, - 0x0e14, 0x0e36, 0x0e4a, 0x0e5b, 0x0e65, 0x0e75, 0x0e91, 0x0eb6, - 0x0ebc, 0x0ee4, 0x0eec, 0x0ef8, 0x0f0a, 0x0f18, 0x0f2b, 0x0f3d, - 0x0f45, 0x0f4f, 0x0f59, 0x0f79, 0x0f85, 0x0f91, 0x0fa1, 0x0faf, - 0x0fbd, 0x0ff4, 0x1010, 0x1027, 0x1035, 0x1045, 0x1053, 0x1078, - 0x1086, 0x10ae, 0x10dd, 0x10e9, 0x10f7, 0x1111, 0x111b, 0x1125, - // Entry 100 - 13F - 0x112b, 0x1135, 0x114e, 0x115a, 0x116a, 0x1183, 0x118b, 0x1197, - 0x11b0, 0x11c9, 0x11db, 0x11ee, 0x1207, 0x121a, 0x122f, 0x1244, - 0x1259, 0x1265, 0x127a, 0x1288, 0x1297, 0x12a8, 0x12c0, 0x12d3, - 0x12e3, 0x12ef, 0x130c, 0x131b, 0x1323, 0x1338, 0x1347, 0x1351, - 0x1362, 0x1375, 0x1386, 0x1386, 0x139f, -} // Size: 610 bytes - -const fiRegionStr string = "" + // Size: 3028 bytes - "Ascension-saariAndorraArabiemiirikunnatAfganistanAntigua ja BarbudaAngui" + - "llaAlbaniaArmeniaAngolaAntarktisArgentiinaAmerikan SamoaItävaltaAustrali" + - "aArubaAhvenanmaaAzerbaidžanBosnia ja HertsegovinaBarbadosBangladeshBelgi" + - "aBurkina FasoBulgariaBahrainBurundiBeninSaint-BarthélemyBermudaBruneiBol" + - "iviaKaribian AlankomaatBrasiliaBahamaBhutanBouvet’nsaariBotswanaValko-Ve" + - "näjäBelizeKanadaKookossaaret (Keelingsaaret)Kongon demokraattinen tasava" + - "ltaKeski-Afrikan tasavaltaKongon tasavaltaSveitsiNorsunluurannikkoCookin" + - "saaretChileKamerunKiinaKolumbiaClippertoninsaariCosta RicaKuubaKap Verde" + - "CuraçaoJoulusaariKyprosTšekkiSaksaDiego GarciaDjiboutiTanskaDominicaDomi" + - "nikaaninen tasavaltaAlgeriaCeuta ja MelillaEcuadorViroEgyptiLänsi-Sahara" + - "EritreaEspanjaEtiopiaEuroopan unionieuroalueSuomiFidžiFalklandinsaaretMi" + - "kronesian liittovaltioFärsaaretRanskaGabonIso-BritanniaGrenadaGeorgiaRan" + - "skan GuayanaGuernseyGhanaGibraltarGrönlantiGambiaGuineaGuadeloupePäivänt" + - "asaajan GuineaKreikkaEtelä-Georgia ja Eteläiset SandwichsaaretGuatemalaG" + - "uamGuinea-BissauGuyanaHongkong – Kiinan e.h.a.Heard ja McDonaldinsaaretH" + - "ondurasKroatiaHaitiUnkariKanariansaaretIndonesiaIrlantiIsraelMansaariInt" + - "iaBrittiläinen Intian valtameren alueIrakIranIslantiItaliaJerseyJamaikaJ" + - "ordaniaJapaniKeniaKirgisiaKambodžaKiribatiKomoritSaint Kitts ja NevisPoh" + - "jois-KoreaEtelä-KoreaKuwaitCaymansaaretKazakstanLaosLibanonSaint LuciaLi" + - "echtensteinSri LankaLiberiaLesothoLiettuaLuxemburgLatviaLibyaMarokkoMona" + - "coMoldovaMontenegroSaint-MartinMadagaskarMarshallinsaaretMakedoniaMaliMy" + - "anmar (Burma)MongoliaMacao – Kiinan e.h.a.Pohjois-MariaanitMartiniqueMau" + - "ritaniaMontserratMaltaMauritiusMalediivitMalawiMeksikoMalesiaMosambikNam" + - "ibiaUusi-KaledoniaNigerNorfolkinsaariNigeriaNicaraguaAlankomaatNorjaNepa" + - "lNauruNiueUusi-SeelantiOmanPanamaPeruRanskan PolynesiaPapua-Uusi-GuineaF" + - "ilippiinitPakistanPuolaSaint-Pierre ja MiquelonPitcairnPuerto RicoPalest" + - "iinalaisalueetPortugaliPalauParaguayQatarulkomeriRéunionRomaniaSerbiaVen" + - "äjäRuandaSaudi-ArabiaSalomonsaaretSeychellitSudanRuotsiSingaporeSaint H" + - "elenaSloveniaHuippuvuoret ja Jan MayenSlovakiaSierra LeoneSan MarinoSene" + - "galSomaliaSurinameEtelä-SudanSão Tomé ja PríncipeEl SalvadorSint Maarten" + - "SyyriaSwazimaaTristan da CunhaTurks- ja CaicossaaretTšadRanskan eteläise" + - "t alueetTogoThaimaaTadžikistanTokelauItä-TimorTurkmenistanTunisiaTongaTu" + - "rkkiTrinidad ja TobagoTuvaluTaiwanTansaniaUkrainaUgandaYhdysvaltain eril" + - "lissaaretYhdistyneet kansakunnatYhdysvallatUruguayUzbekistanVatikaaniSai" + - "nt Vincent ja GrenadiinitVenezuelaBrittiläiset NeitsytsaaretYhdysvaltain" + - " NeitsytsaaretVietnamVanuatuWallis ja FutunaSamoaKosovoJemenMayotteEtelä" + - "-AfrikkaSambiaZimbabwetuntematon aluemaailmaAfrikkaPohjois-AmerikkaEtelä" + - "-AmerikkaOseaniaLänsi-AfrikkaVäli-AmerikkaItä-AfrikkaPohjois-AfrikkaKesk" + - "i-Afrikkaeteläinen AfrikkaAmerikkapohjoinen AmerikkaKaribiaItä-AasiaEtel" + - "ä-AasiaKaakkois-AasiaEtelä-EurooppaAustralaasiaMelanesiaMikronesiaPolyn" + - "esiaAasiaKeski-AasiaLänsi-AasiaEurooppaItä-EurooppaPohjois-EurooppaLänsi" + - "-EurooppaLatinalainen Amerikka" - -var fiRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0016, 0x0027, 0x0031, 0x0043, 0x004b, 0x0052, - 0x0059, 0x005f, 0x0068, 0x0072, 0x0080, 0x0089, 0x0092, 0x0097, - 0x00a1, 0x00ad, 0x00c3, 0x00cb, 0x00d5, 0x00db, 0x00e7, 0x00ef, - 0x00f6, 0x00fd, 0x0102, 0x0113, 0x011a, 0x0120, 0x0127, 0x013a, - 0x0142, 0x0148, 0x014e, 0x015d, 0x0165, 0x0173, 0x0179, 0x017f, - 0x019b, 0x01ba, 0x01d1, 0x01e1, 0x01e8, 0x01f9, 0x0205, 0x020a, - 0x0211, 0x0216, 0x021e, 0x022f, 0x0239, 0x023e, 0x0247, 0x024f, - 0x0259, 0x025f, 0x0266, 0x026b, 0x0277, 0x027f, 0x0285, 0x028d, - // Entry 40 - 7F - 0x02a5, 0x02ac, 0x02bc, 0x02c3, 0x02c7, 0x02cd, 0x02da, 0x02e1, - 0x02e8, 0x02ef, 0x02fe, 0x0306, 0x030b, 0x0311, 0x0321, 0x0339, - 0x0343, 0x0349, 0x034e, 0x035b, 0x0362, 0x0369, 0x0378, 0x0380, - 0x0385, 0x038e, 0x0398, 0x039e, 0x03a4, 0x03ae, 0x03c5, 0x03cc, - 0x03f7, 0x0400, 0x0404, 0x0411, 0x0417, 0x0431, 0x044a, 0x0452, - 0x0459, 0x045e, 0x0464, 0x0472, 0x047b, 0x0482, 0x0488, 0x0490, - 0x0495, 0x04b9, 0x04bd, 0x04c1, 0x04c8, 0x04ce, 0x04d4, 0x04db, - 0x04e3, 0x04e9, 0x04ee, 0x04f6, 0x04ff, 0x0507, 0x050e, 0x0522, - // Entry 80 - BF - 0x052f, 0x053b, 0x0541, 0x054d, 0x0556, 0x055a, 0x0561, 0x056c, - 0x0579, 0x0582, 0x0589, 0x0590, 0x0597, 0x05a0, 0x05a6, 0x05ab, - 0x05b2, 0x05b8, 0x05bf, 0x05c9, 0x05d5, 0x05df, 0x05ef, 0x05f8, - 0x05fc, 0x060b, 0x0613, 0x062a, 0x063b, 0x0645, 0x064f, 0x0659, - 0x065e, 0x0667, 0x0671, 0x0677, 0x067e, 0x0685, 0x068d, 0x0694, - 0x06a2, 0x06a7, 0x06b5, 0x06bc, 0x06c5, 0x06cf, 0x06d4, 0x06d9, - 0x06de, 0x06e2, 0x06ef, 0x06f3, 0x06f9, 0x06fd, 0x070e, 0x071f, - 0x072a, 0x0732, 0x0737, 0x074f, 0x0757, 0x0762, 0x0776, 0x077f, - // Entry C0 - FF - 0x0784, 0x078c, 0x0791, 0x0799, 0x07a1, 0x07a8, 0x07ae, 0x07b6, - 0x07bc, 0x07c8, 0x07d5, 0x07df, 0x07e4, 0x07ea, 0x07f3, 0x07ff, - 0x0807, 0x0820, 0x0828, 0x0834, 0x083e, 0x0845, 0x084c, 0x0854, - 0x0860, 0x0877, 0x0882, 0x088e, 0x0894, 0x089c, 0x08ac, 0x08c2, - 0x08c7, 0x08e0, 0x08e4, 0x08eb, 0x08f7, 0x08fe, 0x0908, 0x0914, - 0x091b, 0x0920, 0x0926, 0x0938, 0x093e, 0x0944, 0x094c, 0x0953, - 0x0959, 0x0973, 0x098a, 0x0995, 0x099c, 0x09a6, 0x09af, 0x09cb, - 0x09d4, 0x09ef, 0x0a09, 0x0a10, 0x0a17, 0x0a27, 0x0a2c, 0x0a32, - // Entry 100 - 13F - 0x0a37, 0x0a3e, 0x0a4c, 0x0a52, 0x0a5a, 0x0a69, 0x0a70, 0x0a77, - 0x0a87, 0x0a96, 0x0a9d, 0x0aab, 0x0ab9, 0x0ac5, 0x0ad4, 0x0ae1, - 0x0af3, 0x0afb, 0x0b0d, 0x0b14, 0x0b1e, 0x0b2a, 0x0b38, 0x0b47, - 0x0b53, 0x0b5c, 0x0b66, 0x0b6f, 0x0b74, 0x0b7f, 0x0b8b, 0x0b93, - 0x0ba0, 0x0bb0, 0x0bbf, 0x0bbf, 0x0bd4, -} // Size: 610 bytes - -const filRegionStr string = "" + // Size: 2985 bytes - "Acsencion islandAndorraUnited Arab EmiratesAfghanistanAntigua & BarbudaA" + - "nguillaAlbaniaArmeniaAngolaAntarcticaArgentinaAmerican SamoaAustriaAustr" + - "aliaArubaÅland IslandsAzerbaijanBosnia and HerzegovinaBarbadosBangladesh" + - "BelgiumBurkina FasoBulgariaBahrainBurundiBeninSt. BarthélemyBermudaBrune" + - "iBoliviaCaribbean NetherlandsBrazilBahamasBhutanBouvet IslandBotswanaBel" + - "arusBelizeCanadaCocos (Keeling) IslandsCongo - KinshasaCentral African R" + - "epublicCongo - BrazzavilleSwitzerlandCôte d’IvoireCook IslandsChileCamer" + - "oonChinaColombiaClipperton IslandCosta RicaCubaCape VerdeCuraçaoChristma" + - "s IslandCyprusCzechiaGermanyDiego GarciaDjiboutiDenmarkDominicaDominican" + - " RepublicAlgeriaCeuta & MelillaEcuadorEstoniaEgyptKanlurang SaharaEritre" + - "aSpainEthiopiaEuropean UnionEurozoneFinlandFijiFalkland IslandsMicronesi" + - "aFaroe IslandsFranceGabonUnited KingdomGrenadaGeorgiaFrench GuianaGuerns" + - "eyGhanaGibraltarGreenlandGambiaGuineaGuadeloupeEquatorial GuineaGreeceSo" + - "uth Georgia & South Sandwich IslandsGuatemalaGuamGuinea-BissauGuyanaHong" + - " Kong SAR ChinaHeard & McDonald IslandsHondurasCroatiaHaitiHungaryCanary" + - " IslandsIndonesiaIrelandIsraelIsle of ManIndiaBritish Indian Ocean Terri" + - "toryIraqIranIcelandItalyJerseyJamaicaJordanJapanKenyaKyrgyzstanCambodiaK" + - "iribatiComorosSt. Kitts & NevisHilagang KoreaTimog KoreaKuwaitCayman Isl" + - "andsKazakhstanLaosLebanonSaint LuciaLiechtensteinSri LankaLiberiaLesotho" + - "LithuaniaLuxembourgLatviaLibyaMoroccoMonacoMoldovaMontenegroSaint Martin" + - "MadagascarMarshall IslandsMacedoniaMaliMyanmar (Burma)MongoliaMacau SAR " + - "ChinaNorthern Mariana IslandsMartiniqueMauritaniaMontserratMaltaMauritiu" + - "sMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew CaledoniaNigerNorfolk " + - "IslandNigeriaNicaraguaNetherlandsNorwayNepalNauruNiueNew ZealandOmanPana" + - "maPeruFrench PolynesiaPapua New GuineaPilipinasPakistanPolandSt. Pierre " + - "& MiquelonPitcairn IslandsPuerto RicoPalestinian TerritoriesPortugalPala" + - "uParaguayQatarOutlying OceaniaRéunionRomaniaSerbiaRussiaRwandaSaudi Arab" + - "iaSolomon IslandsSeychellesSudanSwedenSingaporeSt. HelenaSloveniaSvalbar" + - "d & Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameTimog S" + - "udanSão Tomé & PríncipeEl SalvadorSint MaartenSyriaSwazilandTristan de C" + - "unhaTurks & Caicos IslandsChadFrench Southern TerritoriesTogoThailandTaj" + - "ikistanTokelauTimor-LesteTurkmenistanTunisiaTongaTurkeyTrinidad & Tobago" + - "TuvaluTaiwanTanzaniaUkraineUgandaU.S. Outlying IslandsUnited NationsEsta" + - "dos UnidosUruguayUzbekistanVatican CitySt. Vincent & GrenadinesVenezuela" + - "British Virgin IslandsU.S. Virgin IslandsVietnamVanuatuWallis & FutunaSa" + - "moaKosovoYemenMayotteSouth AfricaZambiaZimbabweHindi Kilalang RehiyonMun" + - "doAfricaHilagang AmerikaTimog AmerikaOceaniaKanlurang AfricaGitnang Amer" + - "ikaSilangang AfricaHilagang AfricaGitnang AfricaKatimugang AfricaAmerica" + - "sNorthern AmericaCarribbeanSilangang AsyaKatimugang AsyaTimog-Silangang " + - "AsyaKatimugang EuropeAustralasiaMelanesiaRehiyon ng MicronesiaPolynesiaA" + - "syaGitnang AsyaKanlurang AsyaEuropeSilangang EuropeHilagang EuropeKanlur" + - "ang EuropeLatin America" - -var filRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x002b, 0x0036, 0x0047, 0x004f, 0x0056, - 0x005d, 0x0063, 0x006d, 0x0076, 0x0084, 0x008b, 0x0094, 0x0099, - 0x00a7, 0x00b1, 0x00c7, 0x00cf, 0x00d9, 0x00e0, 0x00ec, 0x00f4, - 0x00fb, 0x0102, 0x0107, 0x0116, 0x011d, 0x0123, 0x012a, 0x013f, - 0x0145, 0x014c, 0x0152, 0x015f, 0x0167, 0x016e, 0x0174, 0x017a, - 0x0191, 0x01a1, 0x01b9, 0x01cc, 0x01d7, 0x01e7, 0x01f3, 0x01f8, - 0x0200, 0x0205, 0x020d, 0x021e, 0x0228, 0x022c, 0x0236, 0x023e, - 0x024e, 0x0254, 0x025b, 0x0262, 0x026e, 0x0276, 0x027d, 0x0285, - // Entry 40 - 7F - 0x0297, 0x029e, 0x02ad, 0x02b4, 0x02bb, 0x02c0, 0x02d0, 0x02d7, - 0x02dc, 0x02e4, 0x02f2, 0x02fa, 0x0301, 0x0305, 0x0315, 0x031f, - 0x032c, 0x0332, 0x0337, 0x0345, 0x034c, 0x0353, 0x0360, 0x0368, - 0x036d, 0x0376, 0x037f, 0x0385, 0x038b, 0x0395, 0x03a6, 0x03ac, - 0x03d2, 0x03db, 0x03df, 0x03ec, 0x03f2, 0x0405, 0x041d, 0x0425, - 0x042c, 0x0431, 0x0438, 0x0446, 0x044f, 0x0456, 0x045c, 0x0467, - 0x046c, 0x048a, 0x048e, 0x0492, 0x0499, 0x049e, 0x04a4, 0x04ab, - 0x04b1, 0x04b6, 0x04bb, 0x04c5, 0x04cd, 0x04d5, 0x04dc, 0x04ed, - // Entry 80 - BF - 0x04fb, 0x0506, 0x050c, 0x051a, 0x0524, 0x0528, 0x052f, 0x053a, - 0x0547, 0x0550, 0x0557, 0x055e, 0x0567, 0x0571, 0x0577, 0x057c, - 0x0583, 0x0589, 0x0590, 0x059a, 0x05a6, 0x05b0, 0x05c0, 0x05c9, - 0x05cd, 0x05dc, 0x05e4, 0x05f3, 0x060b, 0x0615, 0x061f, 0x0629, - 0x062e, 0x0637, 0x063f, 0x0645, 0x064b, 0x0653, 0x065d, 0x0664, - 0x0671, 0x0676, 0x0684, 0x068b, 0x0694, 0x069f, 0x06a5, 0x06aa, - 0x06af, 0x06b3, 0x06be, 0x06c2, 0x06c8, 0x06cc, 0x06dc, 0x06ec, - 0x06f5, 0x06fd, 0x0703, 0x0718, 0x0728, 0x0733, 0x074a, 0x0752, - // Entry C0 - FF - 0x0757, 0x075f, 0x0764, 0x0774, 0x077c, 0x0783, 0x0789, 0x078f, - 0x0795, 0x07a1, 0x07b0, 0x07ba, 0x07bf, 0x07c5, 0x07ce, 0x07d8, - 0x07e0, 0x07f4, 0x07fc, 0x0808, 0x0812, 0x0819, 0x0820, 0x0828, - 0x0833, 0x0849, 0x0854, 0x0860, 0x0865, 0x086e, 0x087e, 0x0894, - 0x0898, 0x08b3, 0x08b7, 0x08bf, 0x08c9, 0x08d0, 0x08db, 0x08e7, - 0x08ee, 0x08f3, 0x08f9, 0x090a, 0x0910, 0x0916, 0x091e, 0x0925, - 0x092b, 0x0940, 0x094e, 0x095c, 0x0963, 0x096d, 0x0979, 0x0991, - 0x099a, 0x09b0, 0x09c3, 0x09ca, 0x09d1, 0x09e0, 0x09e5, 0x09eb, - // Entry 100 - 13F - 0x09f0, 0x09f7, 0x0a03, 0x0a09, 0x0a11, 0x0a27, 0x0a2c, 0x0a32, - 0x0a42, 0x0a4f, 0x0a56, 0x0a66, 0x0a75, 0x0a85, 0x0a94, 0x0aa2, - 0x0ab3, 0x0abb, 0x0acb, 0x0ad5, 0x0ae3, 0x0af2, 0x0b06, 0x0b17, - 0x0b22, 0x0b2b, 0x0b40, 0x0b49, 0x0b4d, 0x0b59, 0x0b67, 0x0b6d, - 0x0b7d, 0x0b8c, 0x0b9c, 0x0b9c, 0x0ba9, -} // Size: 610 bytes - -const frRegionStr string = "" + // Size: 3315 bytes - "Île de l’AscensionAndorreÉmirats arabes unisAfghanistanAntigua-et-Barbud" + - "aAnguillaAlbanieArménieAngolaAntarctiqueArgentineSamoa américainesAutric" + - "heAustralieArubaÎles ÅlandAzerbaïdjanBosnie-HerzégovineBarbadeBangladesh" + - "BelgiqueBurkina FasoBulgarieBahreïnBurundiBéninSaint-BarthélemyBermudesB" + - "runéi DarussalamBoliviePays-Bas caribéensBrésilBahamasBhoutanÎle BouvetB" + - "otswanaBiélorussieBelizeCanadaÎles CocosCongo-KinshasaRépublique centraf" + - "ricaineCongo-BrazzavilleSuisseCôte d’IvoireÎles CookChiliCamerounChineCo" + - "lombieÎle ClippertonCosta RicaCubaCap-VertCuraçaoÎle ChristmasChypreTché" + - "quieAllemagneDiego GarciaDjiboutiDanemarkDominiqueRépublique dominicaine" + - "AlgérieCeuta et MelillaÉquateurEstonieÉgypteSahara occidentalÉrythréeEsp" + - "agneÉthiopieUnion européennezone euroFinlandeFidjiÎles MalouinesÉtats fé" + - "dérés de MicronésieÎles FéroéFranceGabonRoyaume-UniGrenadeGéorgieGuyane " + - "françaiseGuerneseyGhanaGibraltarGroenlandGambieGuinéeGuadeloupeGuinée éq" + - "uatorialeGrèceGéorgie du Sud et îles Sandwich du SudGuatemalaGuamGuinée-" + - "BissauGuyanaR.A.S. chinoise de Hong KongÎles Heard et McDonaldHondurasCr" + - "oatieHaïtiHongrieÎles CanariesIndonésieIrlandeIsraëlÎle de ManIndeTerrit" + - "oire britannique de l’océan IndienIrakIranIslandeItalieJerseyJamaïqueJor" + - "danieJaponKenyaKirghizistanCambodgeKiribatiComoresSaint-Christophe-et-Ni" + - "évèsCorée du NordCorée du SudKoweïtÎles CaïmansKazakhstanLaosLibanSaint" + - "e-LucieLiechtensteinSri LankaLibériaLesothoLituanieLuxembourgLettonieLib" + - "yeMarocMonacoMoldavieMonténégroSaint-MartinMadagascarÎles MarshallMacédo" + - "ineMaliMyanmar (Birmanie)MongolieR.A.S. chinoise de MacaoÎles Mariannes " + - "du NordMartiniqueMauritanieMontserratMalteMauriceMaldivesMalawiMexiqueMa" + - "laisieMozambiqueNamibieNouvelle-CalédonieNigerÎle NorfolkNigériaNicaragu" + - "aPays-BasNorvègeNépalNauruNiueNouvelle-ZélandeOmanPanamaPérouPolynésie f" + - "rançaisePapouasie-Nouvelle-GuinéePhilippinesPakistanPologneSaint-Pierre-" + - "et-MiquelonÎles PitcairnPorto RicoTerritoires palestiniensPortugalPalaos" + - "ParaguayQatarrégions éloignées de l’OcéanieLa RéunionRoumanieSerbieRussi" + - "eRwandaArabie saouditeÎles SalomonSeychellesSoudanSuèdeSingapourSainte-H" + - "élèneSlovénieSvalbard et Jan MayenSlovaquieSierra LeoneSaint-MarinSénég" + - "alSomalieSurinameSoudan du SudSao Tomé-et-PrincipeSalvadorSaint-Martin (" + - "partie néerlandaise)SyrieSwazilandTristan da CunhaÎles Turques-et-Caïque" + - "sTchadTerres australes françaisesTogoThaïlandeTadjikistanTokélaouTimor o" + - "rientalTurkménistanTunisieTongaTurquieTrinité-et-TobagoTuvaluTaïwanTanza" + - "nieUkraineOugandaÎles mineures éloignées des États-UnisNations UniesÉtat" + - "s-UnisUruguayOuzbékistanÉtat de la Cité du VaticanSaint-Vincent-et-les-G" + - "renadinesVenezuelaÎles Vierges britanniquesÎles Vierges des États-UnisVi" + - "etnamVanuatuWallis-et-FutunaSamoaKosovoYémenMayotteAfrique du SudZambieZ" + - "imbabwerégion indéterminéeMondeAfriqueAmérique du NordAmérique du SudOcé" + - "anieAfrique occidentaleAmérique centraleAfrique orientaleAfrique septent" + - "rionaleAfrique centraleAfrique australeAmériquesAmérique septentrionaleC" + - "araïbesAsie orientaleAsie du SudAsie du Sud-EstEurope méridionaleAustral" + - "asieMélanésierégion micronésiennePolynésieAsieAsie centraleAsie occident" + - "aleEuropeEurope de l’EstEurope septentrionaleEurope occidentaleAmérique " + - "latine" - -var frRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0015, 0x001c, 0x0030, 0x003b, 0x004d, 0x0055, 0x005c, - 0x0064, 0x006a, 0x0075, 0x007e, 0x0090, 0x0098, 0x00a1, 0x00a6, - 0x00b2, 0x00be, 0x00d1, 0x00d8, 0x00e2, 0x00ea, 0x00f6, 0x00fe, - 0x0106, 0x010d, 0x0113, 0x0124, 0x012c, 0x013e, 0x0145, 0x0158, - 0x015f, 0x0166, 0x016d, 0x0178, 0x0180, 0x018c, 0x0192, 0x0198, - 0x01a3, 0x01b1, 0x01cb, 0x01dc, 0x01e2, 0x01f2, 0x01fc, 0x0201, - 0x0209, 0x020e, 0x0216, 0x0225, 0x022f, 0x0233, 0x023b, 0x0243, - 0x0251, 0x0257, 0x0260, 0x0269, 0x0275, 0x027d, 0x0285, 0x028e, - // Entry 40 - 7F - 0x02a5, 0x02ad, 0x02bd, 0x02c6, 0x02cd, 0x02d4, 0x02e5, 0x02ef, - 0x02f6, 0x02ff, 0x0310, 0x0319, 0x0321, 0x0326, 0x0335, 0x0355, - 0x0362, 0x0368, 0x036d, 0x0378, 0x037f, 0x0387, 0x0398, 0x03a1, - 0x03a6, 0x03af, 0x03b8, 0x03be, 0x03c5, 0x03cf, 0x03e3, 0x03e9, - 0x0411, 0x041a, 0x041e, 0x042c, 0x0432, 0x044e, 0x0465, 0x046d, - 0x0474, 0x047a, 0x0481, 0x048f, 0x0499, 0x04a0, 0x04a7, 0x04b2, - 0x04b6, 0x04e1, 0x04e5, 0x04e9, 0x04f0, 0x04f6, 0x04fc, 0x0505, - 0x050d, 0x0512, 0x0517, 0x0523, 0x052b, 0x0533, 0x053a, 0x0556, - // Entry 80 - BF - 0x0564, 0x0571, 0x0578, 0x0586, 0x0590, 0x0594, 0x0599, 0x05a5, - 0x05b2, 0x05bb, 0x05c3, 0x05ca, 0x05d2, 0x05dc, 0x05e4, 0x05e9, - 0x05ee, 0x05f4, 0x05fc, 0x0608, 0x0614, 0x061e, 0x062c, 0x0636, - 0x063a, 0x064c, 0x0654, 0x066c, 0x0683, 0x068d, 0x0697, 0x06a1, - 0x06a6, 0x06ad, 0x06b5, 0x06bb, 0x06c2, 0x06ca, 0x06d4, 0x06db, - 0x06ee, 0x06f3, 0x06ff, 0x0707, 0x0710, 0x0718, 0x0720, 0x0726, - 0x072b, 0x072f, 0x0740, 0x0744, 0x074a, 0x0750, 0x0765, 0x077f, - 0x078a, 0x0792, 0x0799, 0x07b1, 0x07bf, 0x07c9, 0x07e1, 0x07e9, - // Entry C0 - FF - 0x07ef, 0x07f7, 0x07fc, 0x0820, 0x082b, 0x0833, 0x0839, 0x083f, - 0x0845, 0x0854, 0x0861, 0x086b, 0x0871, 0x0877, 0x0880, 0x088f, - 0x0898, 0x08ad, 0x08b6, 0x08c2, 0x08cd, 0x08d6, 0x08dd, 0x08e5, - 0x08f2, 0x0907, 0x090f, 0x0932, 0x0937, 0x0940, 0x0950, 0x0969, - 0x096e, 0x098a, 0x098e, 0x0998, 0x09a3, 0x09ac, 0x09ba, 0x09c7, - 0x09ce, 0x09d3, 0x09da, 0x09ec, 0x09f2, 0x09f9, 0x0a01, 0x0a08, - 0x0a0f, 0x0a39, 0x0a46, 0x0a51, 0x0a58, 0x0a64, 0x0a80, 0x0a9f, - 0x0aa8, 0x0ac2, 0x0adf, 0x0ae6, 0x0aed, 0x0afd, 0x0b02, 0x0b08, - // Entry 100 - 13F - 0x0b0e, 0x0b15, 0x0b23, 0x0b29, 0x0b31, 0x0b47, 0x0b4c, 0x0b53, - 0x0b64, 0x0b74, 0x0b7c, 0x0b8f, 0x0ba1, 0x0bb2, 0x0bc8, 0x0bd8, - 0x0be8, 0x0bf2, 0x0c0a, 0x0c13, 0x0c21, 0x0c2c, 0x0c3b, 0x0c4e, - 0x0c59, 0x0c64, 0x0c7a, 0x0c84, 0x0c88, 0x0c95, 0x0ca5, 0x0cab, - 0x0cbc, 0x0cd1, 0x0ce3, 0x0ce3, 0x0cf3, -} // Size: 610 bytes - -const frCARegionStr string = "" + // Size: 535 bytes - "île de l’Ascensionîles d’ÅlandBruneiîle BouvetBélarusîles Cocos (Keeling" + - ")îles Cookîle Christmasîles MalouinesMicronésieîles Féroéîles Heard et M" + - "cDonaldîles Canariesîle de Manterritoire britannique de l’océan IndienSa" + - "int-Martin (France)MyanmarMariannes du Nordîle Norfolkîles PitcairnOcéan" + - "ie lointainela RéunionSaint-Martin (Pays-Bas)TokelauTimor-Lesteîles mine" + - "ures éloignées des États-UnisCité du VaticanSaint-Vincent-et-les Grenadi" + - "nesîles Vierges britanniquesîles Vierges américainesEurope orientale" - -var frCARegionIdx = []uint16{ // 289 elements - // Entry 0 - 3F - 0x0000, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, - 0x0025, 0x0025, 0x0025, 0x0025, 0x0025, 0x002b, 0x002b, 0x002b, - 0x002b, 0x002b, 0x002b, 0x0036, 0x0036, 0x003e, 0x003e, 0x003e, - 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x005d, 0x005d, - 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, 0x005d, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - // Entry 40 - 7F - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, - 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x006b, 0x007a, 0x0085, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, - 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x0092, 0x00a9, 0x00a9, - 0x00a9, 0x00a9, 0x00a9, 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00c2, - 0x00c2, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - // Entry 80 - BF - 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x00ed, - 0x00ed, 0x00ed, 0x00ed, 0x00ed, 0x0102, 0x0102, 0x0102, 0x0102, - 0x0102, 0x0109, 0x0109, 0x0109, 0x011a, 0x011a, 0x011a, 0x011a, - 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, 0x011a, - 0x011a, 0x011a, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, - 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, - 0x0126, 0x0126, 0x0126, 0x0126, 0x0134, 0x0134, 0x0134, 0x0134, - // Entry C0 - FF - 0x0134, 0x0134, 0x0134, 0x0146, 0x0151, 0x0151, 0x0151, 0x0151, - 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, - 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, 0x0151, - 0x0151, 0x0151, 0x0151, 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, - 0x0168, 0x0168, 0x0168, 0x0168, 0x0168, 0x016f, 0x017a, 0x017a, - 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, 0x017a, - 0x017a, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01b4, 0x01d3, - 0x01d3, 0x01ed, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, - // Entry 100 - 13F - 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, - 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, - 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, - 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, 0x0207, - 0x0217, -} // Size: 602 bytes - -const guRegionStr string = "" + // Size: 8768 bytes - "એસેન્શન આઇલેન્ડઍંડોરાયુનાઇટેડ આરબ અમીરાતઅફઘાનિસ્તાનઍન્ટિગુઆ અને બર્મુડાઍ" + - "ંગ્વિલાઅલ્બેનિયાઆર્મેનિયાઅંગોલાએન્ટાર્કટિકાઆર્જેન્ટીનાઅમેરિકન સમોઆઑસ્ટ" + - "્રિયાઑસ્ટ્રેલિયાઅરુબાઑલેન્ડ આઇલેન્ડ્સઅઝરબૈજાનબોસ્નિયા અને હર્ઝેગોવિનાબ" + - "ારબાડોસબાંગ્લાદેશબેલ્જીયમબુર્કિના ફાસોબલ્ગેરિયાબેહરીનબુરુંડીબેનિનસેંટ " + - "બાર્થેલેમીબર્મુડાબ્રુનેઇબોલિવિયાકેરેબિયન નેધરલેન્ડ્ઝબ્રાઝિલબહામાસભૂટાન" + - "બૌવેત આઇલેન્ડબોત્સ્વાનાબેલારુસબેલીઝકેનેડાકોકોઝ (કીલીંગ) આઇલેન્ડ્સકોંગો" + - " - કિંશાસાસેન્ટ્રલ આફ્રિકન રિપબ્લિકકોંગો - બ્રાઝાવિલેસ્વિટ્ઝર્લૅન્ડકોટ ડ" + - "ીઆઇવરીકુક આઇલેન્ડ્સચિલીકૅમરૂનચીનકોલમ્બિયાક્લિપરટન આઇલેન્ડકોસ્ટા રિકાક્" + - "યુબાકૅપ વર્ડેક્યુરાસાઓક્રિસમસ આઇલેન્ડસાયપ્રસચેકીયાજર્મનીડિએગો ગારસિઆજી" + - "બૌટીડેનમાર્કડોમિનિકાડોમિનિકન રિપબ્લિકઅલ્જીરિયાસ્યુટા અને મેલિલાએક્વાડો" + - "રએસ્ટોનિયાઇજિપ્તપશ્ચિમી સહારાએરિટ્રિયાસ્પેનઇથિઓપિયાયુરોપિયન સંઘયુરોઝોન" + - "ફિનલેન્ડફીજીફૉકલેન્ડ આઇલેન્ડ્સમાઇક્રોનેશિયાફેરો આઇલેન્ડ્સફ્રાંસગેબનયુન" + - "ાઇટેડ કિંગડમગ્રેનેડાજ્યોર્જિયાફ્રેંચ ગયાનાગ્વેર્નસેઘાનાજીબ્રાલ્ટરગ્રીન" + - "લેન્ડગેમ્બિયાગિનીગ્વાડેલોપઇક્વેટોરિયલ ગિનીગ્રીસદક્ષિણ જ્યોર્જિયા અને દ" + - "ક્ષિણ સેન્ડવિચ આઇલેન્ડ્સગ્વાટેમાલાગ્વામગિની-બિસાઉગયાનાહોંગકોંગ SAR ચીન" + - "હર્ડ અને મેકડોનાલ્ડ આઇલેન્ડ્સહોન્ડુરસક્રોએશિયાહૈતિહંગેરીકૅનેરી આઇલેન્ડ" + - "્સઇન્ડોનેશિયાઆયર્લેન્ડઇઝરાઇલઆઇલ ઑફ મેનભારતબ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરીઇ" + - "રાકઈરાનઆઇસલેન્ડઇટાલીજર્સીજમૈકાજોર્ડનજાપાનકેન્યાકિર્ગિઝ્સ્તાનકંબોડિયાકિ" + - "રિબાટીકોમોરસસેંટ કિટ્સ અને નેવિસઉત્તર કોરિયાદક્ષિણ કોરિયાકુવૈતકેમેન આઇ" + - "લેન્ડ્સકઝાકિસ્તાનલાઓસલેબનોનસેંટ લુસિયાલૈચટેંસ્ટેઇનશ્રીલંકાલાઇબેરિયાલેસ" + - "ોથોલિથુઆનિયાલક્ઝમબર્ગલાત્વિયાલિબિયામોરોક્કોમોનાકોમોલડોવામૉન્ટેનેગ્રોસે" + - "ંટ માર્ટિનમેડાગાસ્કરમાર્શલ આઇલેન્ડ્સમેસેડોનિયામાલીમ્યાંમાર (બર્મા)મંગો" + - "લિયામકાઉ SAR ચીનઉત્તરી મારિયાના આઇલેન્ડ્સમાર્ટીનીકમૌરિટાનિયામોંટસેરાતમ" + - "ાલ્ટામોરિશિયસમાલદિવ્સમાલાવીમેક્સિકોમલેશિયામોઝામ્બિકનામિબિયાન્યુ સેલેડો" + - "નિયાનાઇજરનોરફોક આઇલેન્ડ્સનાઇજેરિયાનિકારાગુઆનેધરલેન્ડ્સનૉર્વેનેપાળનૌરુન" + - "ીયુન્યુઝીલેન્ડઓમાનપનામાપેરુફ્રેંચ પોલિનેશિયાપાપુઆ ન્યૂ ગિનીફિલિપિન્સપા" + - "કિસ્તાનપોલેંડસેંટ પીએરી અને મિક્યુલોનપીટકૈર્ન આઇલેન્ડ્સપ્યુઅર્ટો રિકોપ" + - "ેલેસ્ટિનિયન ટેરિટરીપોર્ટુગલપલાઉપેરાગ્વેકતારઆઉટલાઈન્ગ ઓશનિયારીયુનિયનરોમ" + - "ાનિયાસર્બિયારશિયારવાંડાસાઉદી અરેબિયાસોલોમન આઇલેન્ડ્સસેશેલ્સસુદાનસ્વીડન" + - "સિંગાપુરસેંટ હેલેનાસ્લોવેનિયાસ્વાલબર્ડ અને જેન મેયનસ્લોવેકિયાસીએરા લેઓ" + - "નસૅન મેરિનોસેનેગલસોમાલિયાસુરીનામદક્ષિણ સુદાનસાઓ ટૉમ અને પ્રિંસિપેએલ સે" + - "લ્વાડોરસિંટ માર્ટેનસીરિયાસ્વાઝિલેન્ડત્રિસ્તાન દા કુન્હાતુર્ક્સ અને કેક" + - "ોઝ આઇલેન્ડ્સચાડફ્રેંચ સધર્ન ટેરિટરીઝટોગોથાઇલેંડતાજીકિસ્તાનટોકેલાઉતિમોર" + - "-લેસ્તેતુર્કમેનિસ્તાનટ્યુનિશિયાટોંગાતુર્કીટ્રિનીદાદ અને ટોબેગોતુવાલુતાઇવ" + - "ાનતાંઝાનિયાયુક્રેનયુગાંડાયુ.એસ. આઉટલાઇનિંગ આઇલેન્ડ્સસંયુક્ત રાષ્ટ્રયુન" + - "ાઇટેડ સ્ટેટ્સઉરુગ્વેઉઝ્બેકિસ્તાનવેટિકન સિટીસેંટ વિન્સેંટ અને ગ્રેનેડાઇ" + - "ંસવેનેઝુએલાબ્રિટિશ વર્જિન આઇલેન્ડ્સયુએસ વર્જિન આઇલેન્ડ્સવિયેતનામવાનુઆત" + - "ુવૉલિસ અને ફ્યુચુનાસમોઆકોસોવોયમનમેયોટદક્ષિણ આફ્રિકાઝામ્બિયાઝિમ્બાબ્વેઅ" + - "જ્ઞાત પ્રદેશવિશ્વઆફ્રિકાઉત્તર અમેરિકાદક્ષિણ અમેરિકાઓશનિયાપશ્ચિમી આફ્રિ" + - "કામધ્ય અમેરિકાપૂર્વીય આફ્રિકાઉત્તરી આફ્રિકામધ્ય આફ્રિકાસધર્ન આફ્રિકાઅમ" + - "ેરિકાઉત્તરી અમેરિકાકેરિબિયનપૂર્વીય એશિયાદક્ષિણ એશિયાદક્ષિણપૂર્વ એશિયાદ" + - "ક્ષિણ યુરોપઓસ્ટ્રેલેશિયામેલાનેશિયામાઈક્રોનેશિયન ક્ષેત્રપોલિનેશિયાએશિયા" + - "મધ્ય એશિયાપશ્ચિમી એશિયાયુરોપપૂર્વીય યુરોપઉત્તરીય યુરોપપશ્ચિમી યુરોપલેટ" + - "િન અમેરિકા" - -var guRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x002b, 0x003d, 0x0072, 0x0093, 0x00cb, 0x00e3, 0x00fe, - 0x0119, 0x012b, 0x014f, 0x0170, 0x0192, 0x01ad, 0x01ce, 0x01dd, - 0x020b, 0x0223, 0x0267, 0x027f, 0x029d, 0x02b5, 0x02da, 0x02f5, - 0x0307, 0x031c, 0x032b, 0x0356, 0x036b, 0x0380, 0x0398, 0x03d2, - 0x03e7, 0x03f9, 0x0408, 0x042d, 0x044b, 0x0460, 0x046f, 0x0481, - 0x04c1, 0x04e8, 0x052f, 0x055f, 0x0589, 0x05a8, 0x05cd, 0x05d9, - 0x05eb, 0x05f4, 0x060f, 0x063d, 0x065c, 0x066e, 0x0687, 0x06a2, - 0x06cd, 0x06e2, 0x06f4, 0x0706, 0x0728, 0x073a, 0x0752, 0x076a, - // Entry 40 - 7F - 0x079b, 0x07b6, 0x07e5, 0x07fd, 0x0818, 0x082a, 0x084f, 0x086a, - 0x0879, 0x0891, 0x08b3, 0x08c8, 0x08e0, 0x08ec, 0x0920, 0x0947, - 0x096f, 0x0981, 0x098d, 0x09b8, 0x09d0, 0x09ee, 0x0a10, 0x0a2b, - 0x0a37, 0x0a55, 0x0a73, 0x0a8b, 0x0a97, 0x0ab2, 0x0ae0, 0x0aef, - 0x0b72, 0x0b90, 0x0b9f, 0x0bbb, 0x0bca, 0x0bf0, 0x0c41, 0x0c59, - 0x0c74, 0x0c80, 0x0c92, 0x0cc0, 0x0ce1, 0x0cfc, 0x0d0e, 0x0d28, - 0x0d34, 0x0d7f, 0x0d8b, 0x0d97, 0x0daf, 0x0dbe, 0x0dcd, 0x0ddc, - 0x0dee, 0x0dfd, 0x0e0f, 0x0e36, 0x0e4e, 0x0e66, 0x0e78, 0x0eae, - // Entry 80 - BF - 0x0ed0, 0x0ef5, 0x0f04, 0x0f2f, 0x0f4d, 0x0f59, 0x0f6b, 0x0f8a, - 0x0fae, 0x0fc6, 0x0fe1, 0x0ff3, 0x100e, 0x1029, 0x1041, 0x1053, - 0x106b, 0x107d, 0x1092, 0x10b6, 0x10d8, 0x10f6, 0x1124, 0x1142, - 0x114e, 0x1178, 0x1190, 0x11aa, 0x11f1, 0x120c, 0x122a, 0x1245, - 0x1257, 0x126f, 0x1287, 0x1299, 0x12b1, 0x12c6, 0x12e1, 0x12f9, - 0x1324, 0x1333, 0x1361, 0x137c, 0x1397, 0x13b8, 0x13ca, 0x13d9, - 0x13e5, 0x13f1, 0x1412, 0x141e, 0x142d, 0x1439, 0x146a, 0x1493, - 0x14ae, 0x14c9, 0x14db, 0x151d, 0x1551, 0x1579, 0x15b3, 0x15cb, - // Entry C0 - FF - 0x15d7, 0x15ef, 0x15fb, 0x1629, 0x1641, 0x1659, 0x166e, 0x167d, - 0x168f, 0x16b4, 0x16e2, 0x16f7, 0x1706, 0x1718, 0x1730, 0x174f, - 0x176d, 0x17a9, 0x17c7, 0x17e3, 0x17ff, 0x1811, 0x1829, 0x183e, - 0x1860, 0x1899, 0x18bb, 0x18dd, 0x18ef, 0x1910, 0x1945, 0x1990, - 0x1999, 0x19d4, 0x19e0, 0x19f5, 0x1a16, 0x1a2b, 0x1a4d, 0x1a77, - 0x1a95, 0x1aa4, 0x1ab6, 0x1aee, 0x1b00, 0x1b12, 0x1b2d, 0x1b42, - 0x1b57, 0x1ba0, 0x1bcb, 0x1bf9, 0x1c0e, 0x1c32, 0x1c51, 0x1ca2, - 0x1cbd, 0x1d01, 0x1d3c, 0x1d54, 0x1d69, 0x1d9b, 0x1da7, 0x1db9, - // Entry 100 - 13F - 0x1dc2, 0x1dd1, 0x1df9, 0x1e11, 0x1e2f, 0x1e54, 0x1e63, 0x1e78, - 0x1e9d, 0x1ec5, 0x1ed7, 0x1f02, 0x1f24, 0x1f4f, 0x1f77, 0x1f99, - 0x1fbe, 0x1fd3, 0x1ffb, 0x2013, 0x2038, 0x205a, 0x208b, 0x20ad, - 0x20d4, 0x20f2, 0x212f, 0x214d, 0x215c, 0x2178, 0x219d, 0x21ac, - 0x21d1, 0x21f6, 0x221b, 0x221b, 0x2240, -} // Size: 610 bytes - -const heRegionStr string = "" + // Size: 5044 bytes - "האי אסנשןאנדורהאיחוד האמירויות הערביותאפגניסטןאנטיגואה וברבודהאנגווילהאל" + - "בניהארמניהאנגולהאנטארקטיקהארגנטינהסמואה האמריקניתאוסטריהאוסטרליהארובהאי" + - "י אולנדאזרבייג׳ןבוסניה והרצגובינהברבדוסבנגלדשבלגיהבורקינה פאסובולגריהבח" + - "רייןבורונדיבניןסנט ברתולומיאוברמודהברונייבוליביההאיים הקריביים ההולנדיי" + - "םברזילאיי בהאמהבהוטןהאי בובהבוצוואנהבלארוסבליזקנדהאיי קוקוס (קילינג)קונ" + - "גו - קינשאסההרפובליקה המרכז-אפריקאיתקונגו - ברזאוילשווייץחוף השנהבאיי ק" + - "וקצ׳ילהקמרוןסיןקולומביההאי קליפרטוןקוסטה ריקהקובהכף ורדהקוראסאואי חג המ" + - "ולדקפריסיןצ׳כיהגרמניהדייגו גרסיהג׳יבוטידנמרקדומיניקההרפובליקה הדומיניקנ" + - "יתאלג׳יריהסאוטה ומלייהאקוודוראסטוניהמצריםסהרה המערביתאריתריאהספרדאתיופי" + - "ההאיחוד האירופיגוש האירופינלנדפיג׳יאיי פוקלנדמיקרונזיהאיי פארוצרפתגבוןה" + - "ממלכה המאוחדתגרנדהגאורגיהגיאנה הצרפתיתגרנזיגאנהגיברלטרגרינלנדגמביהגינאה" + - "גוואדלופגינאה המשווניתיווןג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומייםגואטמל" + - "הגואםגינאה-ביסאוגיאנההונג קונג (אזור מנהלי מיוחד של סין)איי הרד ומקדונל" + - "דהונדורסקרואטיההאיטיהונגריההאיים הקנרייםאינדונזיהאירלנדישראלהאי מאןהודו" + - "הטריטוריה הבריטית באוקיינוס ההודיעיראקאיראןאיסלנדאיטליהג׳רזיג׳מייקהירדן" + - "יפןקניהקירגיזסטןקמבודיהקיריבאטיקומורוסנט קיטס ונוויסקוריאה הצפוניתקוריא" + - "ה הדרומיתכוויתאיי קיימןקזחסטןלאוסלבנוןסנט לוסיהליכטנשטייןסרי לנקהליבריה" + - "לסוטוליטאלוקסמבורגלטביהלובמרוקומונקומולדובהמונטנגרוסן מרטןמדגסקראיי מרש" + - "למקדוניהמאלימיאנמר (בורמה)מונגוליהמקאו (אזור מנהלי מיוחד של סין)איי מרי" + - "אנה הצפונייםמרטיניקמאוריטניהמונסראטמלטהמאוריציוסהאיים המלדיבייםמלאווימק" + - "סיקומלזיהמוזמביקנמיביהקלדוניה החדשהניז׳ראיי נורפוקניגריהניקרגואההולנדנו" + - "רווגיהנפאלנאורוניווהניו זילנדעומאןפנמהפרופולינזיה הצרפתיתפפואה גינאה הח" + - "דשההפיליפיניםפקיסטןפוליןסנט פייר ומיקלוןאיי פיטקרןפוארטו ריקוהשטחים הפל" + - "סטינייםפורטוגלפלאופרגוואיקטארטריטוריות באוקיאניהראוניוןרומניהסרביהרוסיה" + - "רואנדהערב הסעודיתאיי שלמהאיי סיישלסודןשוודיהסינגפורסנט הלנהסלובניהסבאלב" + - "רד ויאן מאייןסלובקיהסיירה לאונהסן מרינוסנגלסומליהסורינאםדרום סודןסאו טו" + - "מה ופרינסיפהאל סלבדורסנט מארטןסוריהסווזילנדטריסטן דה קונהאיי טרקס וקייק" + - "וסצ׳אדהטריטוריות הדרומיות של צרפתטוגותאילנדטג׳יקיסטןטוקלאוטימור-לסטהטור" + - "קמניסטןתוניסיהטונגהטורקיהטרינידד וטובגוטובאלוטייוואןטנזניהאוקראינהאוגנד" + - "ההאיים המרוחקים הקטנים של ארה״בהאומות המאוחדותארצות הבריתאורוגוואיאוזבק" + - "יסטןהוותיקןסנט וינסנט והגרנדיניםונצואלהאיי הבתולה הבריטייםאיי הבתולה של" + - " ארצות הבריתוייטנאםונואטואיי ווליס ופוטונהסמואהקוסובותימןמאיוטדרום אפריק" + - "הזמביהזימבבואהאזור לא ידועהעולםאפריקהצפון אמריקהדרום אמריקהאוקיאניהמערב" + - " אפריקהמרכז אמריקהמזרח אפריקהצפון אפריקהמרכז אפריקהדרום יבשת אפריקהאמריק" + - "האמריקה הצפוניתהאיים הקריבייםמזרח אסיהדרום אסיהדרום־מזרח אסיהדרום אירופ" + - "האוסטרלאסיהמלנזיהאזור מיקרונזיהפולינזיהאסיהמרכז אסיהמערב אסיהאירופהמזרח" + - " אירופהצפון אירופהמערב אירופהאמריקה הלטינית" - -var heRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0011, 0x001d, 0x0049, 0x0059, 0x0078, 0x0088, 0x0094, - 0x00a0, 0x00ac, 0x00c0, 0x00d0, 0x00ed, 0x00fb, 0x010b, 0x0115, - 0x0126, 0x0138, 0x0159, 0x0165, 0x0171, 0x017b, 0x0192, 0x01a0, - 0x01ac, 0x01ba, 0x01c2, 0x01dd, 0x01e9, 0x01f5, 0x0203, 0x0231, - 0x023b, 0x024c, 0x0256, 0x0265, 0x0275, 0x0281, 0x0289, 0x0291, - 0x02b1, 0x02cc, 0x02fa, 0x0315, 0x0321, 0x0332, 0x033f, 0x0349, - 0x0353, 0x0359, 0x0369, 0x0380, 0x0393, 0x039b, 0x03a8, 0x03b6, - 0x03ca, 0x03d8, 0x03e2, 0x03ee, 0x0403, 0x0411, 0x041b, 0x042b, - // Entry 40 - 7F - 0x0454, 0x0464, 0x047b, 0x0489, 0x0497, 0x04a1, 0x04b8, 0x04c8, - 0x04d0, 0x04de, 0x04f9, 0x050a, 0x0516, 0x0520, 0x0533, 0x0545, - 0x0554, 0x055c, 0x0564, 0x057f, 0x0589, 0x0597, 0x05b0, 0x05ba, - 0x05c2, 0x05d0, 0x05de, 0x05e8, 0x05f2, 0x0602, 0x061d, 0x0625, - 0x066f, 0x067d, 0x0685, 0x069a, 0x06a4, 0x06e2, 0x0700, 0x070e, - 0x071c, 0x0726, 0x0734, 0x074d, 0x075f, 0x076b, 0x0775, 0x0782, - 0x078a, 0x07c9, 0x07d3, 0x07dd, 0x07e9, 0x07f5, 0x07ff, 0x080d, - 0x0815, 0x081b, 0x0823, 0x0835, 0x0843, 0x0853, 0x085f, 0x087b, - // Entry 80 - BF - 0x0896, 0x08b1, 0x08bb, 0x08cc, 0x08d8, 0x08e0, 0x08ea, 0x08fb, - 0x090f, 0x091e, 0x092a, 0x0934, 0x093c, 0x094e, 0x0958, 0x095e, - 0x0968, 0x0972, 0x0980, 0x0990, 0x099d, 0x09a9, 0x09b8, 0x09c6, - 0x09ce, 0x09e7, 0x09f7, 0x0a2c, 0x0a50, 0x0a5e, 0x0a70, 0x0a7e, - 0x0a86, 0x0a98, 0x0ab5, 0x0ac1, 0x0acd, 0x0ad7, 0x0ae5, 0x0af1, - 0x0b0a, 0x0b14, 0x0b27, 0x0b33, 0x0b43, 0x0b4d, 0x0b5d, 0x0b65, - 0x0b6f, 0x0b79, 0x0b8a, 0x0b94, 0x0b9c, 0x0ba2, 0x0bc1, 0x0be1, - 0x0bf5, 0x0c01, 0x0c0b, 0x0c29, 0x0c3c, 0x0c51, 0x0c72, 0x0c80, - // Entry C0 - FF - 0x0c88, 0x0c96, 0x0c9e, 0x0cc3, 0x0cd1, 0x0cdd, 0x0ce7, 0x0cf1, - 0x0cfd, 0x0d12, 0x0d21, 0x0d32, 0x0d3a, 0x0d46, 0x0d54, 0x0d63, - 0x0d71, 0x0d93, 0x0da1, 0x0db6, 0x0dc5, 0x0dcd, 0x0dd9, 0x0de7, - 0x0df8, 0x0e1a, 0x0e2b, 0x0e3c, 0x0e46, 0x0e56, 0x0e70, 0x0e8e, - 0x0e96, 0x0ec9, 0x0ed1, 0x0edd, 0x0eef, 0x0efb, 0x0f0e, 0x0f22, - 0x0f30, 0x0f3a, 0x0f46, 0x0f61, 0x0f6d, 0x0f7b, 0x0f87, 0x0f97, - 0x0fa3, 0x0fdb, 0x0ff8, 0x100d, 0x101f, 0x1031, 0x103f, 0x1067, - 0x1075, 0x1099, 0x10c7, 0x10d5, 0x10e1, 0x1101, 0x110b, 0x1117, - // Entry 100 - 13F - 0x111f, 0x1129, 0x113e, 0x1148, 0x1158, 0x116e, 0x1178, 0x1184, - 0x1199, 0x11ae, 0x11be, 0x11d3, 0x11e8, 0x11fd, 0x1212, 0x1227, - 0x1245, 0x1251, 0x126c, 0x1287, 0x1298, 0x12a9, 0x12c4, 0x12d9, - 0x12ed, 0x12f9, 0x1314, 0x1324, 0x132c, 0x133d, 0x134e, 0x135a, - 0x136f, 0x1384, 0x1399, 0x1399, 0x13b4, -} // Size: 610 bytes - -const hiRegionStr string = "" + // Size: 8782 bytes - "असेंशन द्वीपएंडोरासंयुक्त अरब अमीरातअफ़गानिस्तानएंटिगुआ और बरबुडाएंग्विल" + - "ाअल्बानियाआर्मेनियाअंगोलाअंटार्कटिकाअर्जेंटीनाअमेरिकी समोआऑस्ट्रियाऑस्" + - "ट्रेलियाअरूबाएलैंड द्वीपसमूहअज़रबैजानबोस्निया और हर्ज़ेगोविनाबारबाडोसब" + - "ांग्लादेशबेल्जियमबुर्किना फ़ासोबुल्गारियाबहरीनबुरुंडीबेनिनसेंट बार्थेल" + - "ेमीबरमूडाब्रूनेईबोलीवियाकैरिबियन नीदरलैंडब्राज़ीलबहामासभूटानबोवेत द्वी" + - "पबोत्स्वानाबेलारूसबेलीज़कनाडाकोकोस (कीलिंग) द्वीपसमूहकांगो - किंशासामध" + - "्य अफ़्रीकी गणराज्यकांगो – ब्राज़ाविलस्विट्ज़रलैंडकोट डी आइवरकुक द्वीप" + - "समूहचिलीकैमरूनचीनकोलंबियाक्लिपर्टन द्वीपकोस्टारिकाक्यूबाकेप वर्डक्यूरा" + - "साओक्रिसमस द्वीपसाइप्रसचेकियाजर्मनीडिएगो गार्सियाजिबूतीडेनमार्कडोमिनिक" + - "ाडोमिनिकन गणराज्यअल्जीरियासेउटा और मेलिलाइक्वाडोरएस्टोनियामिस्रपश्चिमी" + - " सहाराइरिट्रियास्पेनइथियोपियायूरोपीय संघयूरोज़ोनफ़िनलैंडफ़िजीफ़ॉकलैंड द्" + - "वीपसमूहमाइक्रोनेशियाफ़ेरो द्वीपसमूहफ़्रांसगैबॉनयूनाइटेड किंगडमग्रेनाडा" + - "जॉर्जियाफ़्रेंच गुयानागर्नसीघानाजिब्राल्टरग्रीनलैंडगाम्बियागिनीग्वाडेल" + - "ूपइक्वेटोरियल गिनीयूनानदक्षिण जॉर्जिया और दक्षिण सैंडविच द्वीपसमूहग्वा" + - "टेमालागुआमगिनी-बिसाउगुयानाहाँग काँग (चीन विशेष प्रशासनिक क्षेत्र)हर्ड " + - "द्वीप और मैकडोनॉल्ड द्वीपसमूहहोंडूरासक्रोएशियाहैतीहंगरीकैनेरी द्वीपसमू" + - "हइंडोनेशियाआयरलैंडइज़राइलआइल ऑफ़ मैनभारतब्रिटिश हिंद महासागरीय क्षेत्र" + - "इराकईरानआइसलैंडइटलीजर्सीजमैकाजॉर्डनजापानकेन्याकिर्गिज़स्तानकंबोडियाकिर" + - "िबातीकोमोरोससेंट किट्स और नेविसउत्तर कोरियादक्षिण कोरियाकुवैतकैमेन द्व" + - "ीपसमूहकज़ाखस्तानलाओसलेबनानसेंट लूसियालिचेंस्टीनश्रीलंकालाइबेरियालेसोथो" + - "लिथुआनियालग्ज़मबर्गलातवियालीबियामोरक्कोमोनाकोमॉल्डोवामोंटेनेग्रोसेंट म" + - "ार्टिनमेडागास्करमार्शल द्वीपसमूहमकदूनियामालीम्यांमार (बर्मा)मंगोलियामक" + - "ाऊ (विशेष प्रशासनिक क्षेत्र चीन)उत्तरी मारियाना द्वीपसमूहमार्टीनिकमॉरि" + - "टानियामोंटसेरातमाल्टामॉरीशसमालदीवमलावीमैक्सिकोमलेशियामोज़ांबिकनामीबिया" + - "न्यू कैलेडोनियानाइजरनॉरफ़ॉक द्वीपनाइजीरियानिकारागुआनीदरलैंडनॉर्वेनेपाल" + - "नाउरुनीयून्यूज़ीलैंडओमानपनामापेरूफ़्रेंच पोलिनेशियापापुआ न्यू गिनीफ़िल" + - "िपींसपाकिस्तानपोलैंडसेंट पिएरे और मिक्वेलानपिटकैर्न द्वीपसमूहपोर्टो रि" + - "कोफ़िलिस्तीनी क्षेत्रपुर्तगालपलाऊपराग्वेक़तरआउटलाइंग ओशिनियारियूनियनरो" + - "मानियासर्बियारूसरवांडासऊदी अरबसोलोमन द्वीपसमूहसेशेल्ससूडानस्वीडनसिंगाप" + - "ुरसेंट हेलेनास्लोवेनियास्वालबार्ड और जान मायेनस्लोवाकियासिएरा लियोनसैन" + - " मेरीनोसेनेगलसोमालियासूरीनामदक्षिण सूडानसाओ टोम और प्रिंसिपेअल सल्वाडोरस" + - "िंट मार्टिनसीरियास्वाज़ीलैंडत्रिस्टान डा कुनातुर्क और कैकोज़ द्वीपसमूह" + - "चाडफ़्रांसीसी दक्षिणी क्षेत्रटोगोथाईलैंडताज़िकिस्तानतोकेलाउतिमोर-लेस्त" + - "तुर्कमेनिस्तानट्यूनीशियाटोंगातुर्कीत्रिनिदाद और टोबैगोतुवालूताइवानतंज़" + - "ानियायूक्रेनयुगांडायू॰एस॰ आउटलाइंग द्वीपसमूहसंयुक्त राष्ट्रसंयुक्त राज" + - "्यउरूग्वेउज़्बेकिस्तानवेटिकन सिटीसेंट विंसेंट और ग्रेनाडाइंसवेनेज़ुएला" + - "ब्रिटिश वर्जिन द्वीपसमूहयू॰एस॰ वर्जिन द्वीपसमूहवियतनामवनुआतूवालिस और फ" + - "़्यूचूनासमोआकोसोवोयमनमायोतेदक्षिण अफ़्रीकाज़ाम्बियाज़िम्बाब्वेअज्ञात क" + - "्षेत्रविश्वअफ़्रीकाउत्तर अमेरिकादक्षिण अमेरिकाओशिआनियापश्चिमी अफ़्रीका" + - "मध्य अमेरिकापूर्वी अफ़्रीकाउत्तरी अफ़्रीकामध्य अफ़्रीकादक्षिणी अफ़्रीक" + - "ाअमेरिकाज़उत्तरी अमेरिकाकैरिबियनपूर्वी एशियादक्षिणी एशियादक्षिण-पूर्व " + - "एशियादक्षिणी यूरोपऑस्ट्रेलेशियामेलानेशियामाइक्रोनेशियाई क्षेत्रपोलिनेश" + - "ियाएशियामध्य एशियापश्चिमी एशियायूरोपपूर्वी यूरोपउत्तरी यूरोपपश्चिमी यू" + - "रोपलैटिन अमेरिका" - -var hiRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0022, 0x0034, 0x0066, 0x008a, 0x00b9, 0x00d1, 0x00ec, - 0x0107, 0x0119, 0x013a, 0x0158, 0x017a, 0x0195, 0x01b6, 0x01c5, - 0x01f0, 0x020b, 0x024f, 0x0267, 0x0285, 0x029d, 0x02c5, 0x02e3, - 0x02f2, 0x0307, 0x0316, 0x0341, 0x0353, 0x0368, 0x0380, 0x03b1, - 0x03c9, 0x03db, 0x03ea, 0x0409, 0x0427, 0x043c, 0x044e, 0x045d, - 0x049d, 0x04c4, 0x04ff, 0x0531, 0x0558, 0x0575, 0x059a, 0x05a6, - 0x05b8, 0x05c1, 0x05d9, 0x0604, 0x0622, 0x0634, 0x064a, 0x0665, - 0x068a, 0x069f, 0x06b1, 0x06c3, 0x06eb, 0x06fd, 0x0715, 0x072d, - // Entry 40 - 7F - 0x075b, 0x0776, 0x079f, 0x07b7, 0x07d2, 0x07e1, 0x0806, 0x0821, - 0x0830, 0x084b, 0x086a, 0x0882, 0x089a, 0x08a9, 0x08dd, 0x0904, - 0x092f, 0x0944, 0x0953, 0x097e, 0x0996, 0x09ae, 0x09d6, 0x09e8, - 0x09f4, 0x0a12, 0x0a2d, 0x0a45, 0x0a51, 0x0a6c, 0x0a9a, 0x0aa9, - 0x0b20, 0x0b3e, 0x0b4a, 0x0b66, 0x0b78, 0x0bdf, 0x0c3d, 0x0c55, - 0x0c70, 0x0c7c, 0x0c8b, 0x0cb9, 0x0cd7, 0x0cec, 0x0d01, 0x0d1e, - 0x0d2a, 0x0d7e, 0x0d8a, 0x0d96, 0x0dab, 0x0db7, 0x0dc6, 0x0dd5, - 0x0de7, 0x0df6, 0x0e08, 0x0e2f, 0x0e47, 0x0e5f, 0x0e74, 0x0ea7, - // Entry 80 - BF - 0x0ec9, 0x0eee, 0x0efd, 0x0f28, 0x0f46, 0x0f52, 0x0f64, 0x0f83, - 0x0fa1, 0x0fb9, 0x0fd4, 0x0fe6, 0x1001, 0x101f, 0x1034, 0x1046, - 0x105b, 0x106d, 0x1085, 0x10a6, 0x10c8, 0x10e6, 0x1114, 0x112c, - 0x1138, 0x1162, 0x117a, 0x11d4, 0x121b, 0x1236, 0x1254, 0x126f, - 0x1281, 0x1293, 0x12a5, 0x12b4, 0x12cc, 0x12e1, 0x12fc, 0x1314, - 0x133f, 0x134e, 0x1373, 0x138e, 0x13a9, 0x13c1, 0x13d3, 0x13e2, - 0x13f1, 0x13fd, 0x141e, 0x142a, 0x1439, 0x1445, 0x1479, 0x14a2, - 0x14bd, 0x14d8, 0x14ea, 0x1529, 0x155d, 0x157c, 0x15b3, 0x15cb, - // Entry C0 - FF - 0x15d7, 0x15ec, 0x15f8, 0x1626, 0x163e, 0x1656, 0x166b, 0x1674, - 0x1686, 0x169c, 0x16ca, 0x16df, 0x16ee, 0x1700, 0x1718, 0x1737, - 0x1755, 0x1794, 0x17b2, 0x17d1, 0x17ed, 0x17ff, 0x1817, 0x182c, - 0x184e, 0x1884, 0x18a3, 0x18c5, 0x18d7, 0x18f8, 0x1927, 0x196c, - 0x1975, 0x19bf, 0x19cb, 0x19e0, 0x1a04, 0x1a19, 0x1a38, 0x1a62, - 0x1a80, 0x1a8f, 0x1aa1, 0x1ad6, 0x1ae8, 0x1afa, 0x1b15, 0x1b2a, - 0x1b3f, 0x1b86, 0x1bb1, 0x1bd6, 0x1beb, 0x1c12, 0x1c31, 0x1c7c, - 0x1c9a, 0x1cde, 0x1d1f, 0x1d34, 0x1d46, 0x1d78, 0x1d84, 0x1d96, - // Entry 100 - 13F - 0x1d9f, 0x1db1, 0x1ddc, 0x1df7, 0x1e18, 0x1e40, 0x1e4f, 0x1e67, - 0x1e8c, 0x1eb4, 0x1ecc, 0x1efa, 0x1f1c, 0x1f47, 0x1f72, 0x1f97, - 0x1fc5, 0x1fe0, 0x2008, 0x2020, 0x2042, 0x2067, 0x2099, 0x20be, - 0x20e5, 0x2103, 0x2143, 0x2161, 0x2170, 0x218c, 0x21b1, 0x21c0, - 0x21e2, 0x2204, 0x2229, 0x2229, 0x224e, -} // Size: 610 bytes - -const hrRegionStr string = "" + // Size: 3137 bytes - "Otok AscensionAndoraUjedinjeni Arapski EmiratiAfganistanAntigva i Barbud" + - "aAngvilaAlbanijaArmenijaAngolaAntarktikaArgentinaAmerička SamoaAustrijaA" + - "ustralijaArubaÅlandski otociAzerbajdžanBosna i HercegovinaBarbadosBangla" + - "dešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSaint BarthélemyBermudi" + - "BrunejBolivijaKaripski otoci NizozemskeBrazilBahamiButanOtok BouvetBocva" + - "naBjelorusijaBelizeKanadaKokosovi (Keelingovi) otociKongo - KinshasaSred" + - "njoafrička RepublikaKongo - BrazzavilleŠvicarskaObala BjelokostiCookovi " + - "OtociČileKamerunKinaKolumbijaOtok ClippertonKostarikaKubaZelenortska Rep" + - "ublikaCuraçaoBožićni otokCiparČeškaNjemačkaDiego GarciaDžibutiDanskaDomi" + - "nikaDominikanska RepublikaAlžirCeuta i MelillaEkvadorEstonijaEgipatZapad" + - "na SaharaEritrejaŠpanjolskaEtiopijaEuropska unijaeurozonaFinskaFidžiFalk" + - "landski otociMikronezijaFarski otociFrancuskaGabonUjedinjeno Kraljevstvo" + - "GrenadaGruzijaFrancuska GijanaGuernseyGanaGibraltarGrenlandGambijaGvinej" + - "aGuadalupeEkvatorska GvinejaGrčkaJužna Georgija i Južni Sendvički OtociG" + - "vatemalaGuamGvineja BisauGvajanaPUP Hong Kong KinaOtoci Heard i McDonald" + - "HondurasHrvatskaHaitiMađarskaKanarski otociIndonezijaIrskaIzraelOtok Man" + - "IndijaBritanski Indijskooceanski teritorijIrakIranIslandItalijaJerseyJam" + - "ajkaJordanJapanKenijaKirgistanKambodžaKiribatiKomoriSveti Kristofor i Ne" + - "visSjeverna KorejaJužna KorejaKuvajtKajmanski otociKazahstanLaosLibanonS" + - "veta LucijaLihtenštajnŠri LankaLiberijaLesotoLitvaLuksemburgLatvijaLibij" + - "aMarokoMonakoMoldavijaCrna GoraSaint MartinMadagaskarMaršalovi OtociMake" + - "donijaMaliMjanmar (Burma)MongolijaPUP Makao KinaSjevernomarijanski otoci" + - "MartiniqueMauretanijaMontserratMaltaMauricijusMaldiviMalaviMeksikoMalezi" + - "jaMozambikNamibijaNova KaledonijaNigerOtok NorfolkNigerijaNikaragvaNizoz" + - "emskaNorveškaNepalNauruNiueNovi ZelandOmanPanamaPeruFrancuska Polinezija" + - "Papua Nova GvinejaFilipiniPakistanPoljskaSveti Petar i MikelonOtoci Pitc" + - "airnPortorikoPalestinsko PodručjePortugalPalauParagvajKatarVanjska podru" + - "čja OceanijeRéunionRumunjskaSrbijaRusijaRuandaSaudijska ArabijaSalomons" + - "ki OtociSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalbard i Jan M" + - "ayenSlovačkaSijera LeoneSan MarinoSenegalSomalijaSurinamJužni SudanSveti" + - " Toma i PrincipSalvadorSint MaartenSirijaSvaziTristan da CunhaOtoci Turk" + - "s i CaicosČadFrancuski južni i antarktički teritorijiTogoTajlandTadžikis" + - "tanTokelauTimor-LesteTurkmenistanTunisTongaTurskaTrinidad i TobagoTuvalu" + - "TajvanTanzanijaUkrajinaUgandaMali udaljeni otoci SAD-aUjedinjeni narodiS" + - "jedinjene Američke DržaveUrugvajUzbekistanVatikanski GradSveti Vincent i" + - " GrenadiniVenezuelaBritanski Djevičanski otociAmerički Djevičanski otoci" + - "VijetnamVanuatuWallis i FutunaSamoaKosovoJemenMayotteJužnoafrička Republ" + - "ikaZambijaZimbabvenepoznato područjeSvijetAfrikaSjevernoamerički kontine" + - "ntJužna AmerikaOceanijaZapadna AfrikaCentralna AmerikaIstočna AfrikaSjev" + - "erna AfrikaSredišnja AfrikaJužna AfrikaAmerikeSjeverna AmerikaKaribiIsto" + - "čna AzijaJužna AzijaJugoistočna AzijaJužna EuropaAustralazijaMelanezija" + - "Mikronezijsko područjePolinezijaAzijaSrednja AzijaZapadna AzijaEuropaIst" + - "očna EuropaSjeverna EuropaZapadna EuropaLatinska Amerika" - -var hrRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x0014, 0x002e, 0x0038, 0x0049, 0x0050, 0x0058, - 0x0060, 0x0066, 0x0070, 0x0079, 0x0088, 0x0090, 0x009a, 0x009f, - 0x00ae, 0x00ba, 0x00cd, 0x00d5, 0x00df, 0x00e6, 0x00f2, 0x00fa, - 0x0101, 0x0108, 0x010d, 0x011e, 0x0125, 0x012b, 0x0133, 0x014c, - 0x0152, 0x0158, 0x015d, 0x0168, 0x016f, 0x017a, 0x0180, 0x0186, - 0x01a1, 0x01b1, 0x01ca, 0x01dd, 0x01e7, 0x01f7, 0x0204, 0x0209, - 0x0210, 0x0214, 0x021d, 0x022c, 0x0235, 0x0239, 0x024e, 0x0256, - 0x0264, 0x0269, 0x0270, 0x0279, 0x0285, 0x028d, 0x0293, 0x029b, - // Entry 40 - 7F - 0x02b1, 0x02b7, 0x02c6, 0x02cd, 0x02d5, 0x02db, 0x02e9, 0x02f1, - 0x02fc, 0x0304, 0x0312, 0x031a, 0x0320, 0x0326, 0x0337, 0x0342, - 0x034e, 0x0357, 0x035c, 0x0372, 0x0379, 0x0380, 0x0390, 0x0398, - 0x039c, 0x03a5, 0x03ad, 0x03b4, 0x03bb, 0x03c4, 0x03d6, 0x03dc, - 0x0405, 0x040e, 0x0412, 0x041f, 0x0426, 0x0438, 0x044e, 0x0456, - 0x045e, 0x0463, 0x046c, 0x047a, 0x0484, 0x0489, 0x048f, 0x0497, - 0x049d, 0x04c1, 0x04c5, 0x04c9, 0x04cf, 0x04d6, 0x04dc, 0x04e3, - 0x04e9, 0x04ee, 0x04f4, 0x04fd, 0x0506, 0x050e, 0x0514, 0x052b, - // Entry 80 - BF - 0x053a, 0x0547, 0x054d, 0x055c, 0x0565, 0x0569, 0x0570, 0x057c, - 0x0588, 0x0592, 0x059a, 0x05a0, 0x05a5, 0x05af, 0x05b6, 0x05bc, - 0x05c2, 0x05c8, 0x05d1, 0x05da, 0x05e6, 0x05f0, 0x0600, 0x060a, - 0x060e, 0x061d, 0x0626, 0x0634, 0x064c, 0x0656, 0x0661, 0x066b, - 0x0670, 0x067a, 0x0681, 0x0687, 0x068e, 0x0696, 0x069e, 0x06a6, - 0x06b5, 0x06ba, 0x06c6, 0x06ce, 0x06d7, 0x06e1, 0x06ea, 0x06ef, - 0x06f4, 0x06f8, 0x0703, 0x0707, 0x070d, 0x0711, 0x0725, 0x0737, - 0x073f, 0x0747, 0x074e, 0x0763, 0x0771, 0x077a, 0x078f, 0x0797, - // Entry C0 - FF - 0x079c, 0x07a4, 0x07a9, 0x07c3, 0x07cb, 0x07d4, 0x07da, 0x07e0, - 0x07e6, 0x07f7, 0x0807, 0x080f, 0x0814, 0x081c, 0x0824, 0x0830, - 0x0839, 0x084d, 0x0856, 0x0862, 0x086c, 0x0873, 0x087b, 0x0882, - 0x088e, 0x08a2, 0x08aa, 0x08b6, 0x08bc, 0x08c1, 0x08d1, 0x08e5, - 0x08e9, 0x0913, 0x0917, 0x091e, 0x092a, 0x0931, 0x093c, 0x0948, - 0x094d, 0x0952, 0x0958, 0x0969, 0x096f, 0x0975, 0x097e, 0x0986, - 0x098c, 0x09a5, 0x09b6, 0x09d2, 0x09d9, 0x09e3, 0x09f2, 0x0a0b, - 0x0a14, 0x0a30, 0x0a4c, 0x0a54, 0x0a5b, 0x0a6a, 0x0a6f, 0x0a75, - // Entry 100 - 13F - 0x0a7a, 0x0a81, 0x0a99, 0x0aa0, 0x0aa8, 0x0abb, 0x0ac1, 0x0ac7, - 0x0ae2, 0x0af0, 0x0af8, 0x0b06, 0x0b17, 0x0b26, 0x0b35, 0x0b46, - 0x0b53, 0x0b5a, 0x0b6a, 0x0b70, 0x0b7e, 0x0b8a, 0x0b9c, 0x0ba9, - 0x0bb5, 0x0bbf, 0x0bd6, 0x0be0, 0x0be5, 0x0bf2, 0x0bff, 0x0c05, - 0x0c14, 0x0c23, 0x0c31, 0x0c31, 0x0c41, -} // Size: 610 bytes - -const huRegionStr string = "" + // Size: 3337 bytes - "Ascension-szigetAndorraEgyesült Arab EmírségekAfganisztánAntigua és Barb" + - "udaAnguillaAlbániaÖrményországAngolaAntarktiszArgentínaAmerikai SzamoaAu" + - "sztriaAusztráliaArubaÅland-szigetekAzerbajdzsánBosznia-HercegovinaBarbad" + - "osBangladesBelgiumBurkina FasoBulgáriaBahreinBurundiBeninSaint-Barthélem" + - "yBermudaBruneiBolíviaHolland Karib-térségBrazíliaBahama-szigetekBhutánBo" + - "uvet-szigetBotswanaBelaruszBelizeKanadaKókusz (Keeling)-szigetekKongó - " + - "KinshasaKözép-afrikai KöztársaságKongó - BrazzavilleSvájcElefántcsontpar" + - "tCook-szigetekChileKamerunKínaKolumbiaClipperton-szigetCosta RicaKubaZöl" + - "d-foki KöztársaságCuraçaoKarácsony-szigetCiprusCsehországNémetországDieg" + - "o GarciaDzsibutiDániaDominikaDominikai KöztársaságAlgériaCeuta és Melill" + - "aEcuadorÉsztországEgyiptomNyugat-SzaharaEritreaSpanyolországEtiópiaEuróp" + - "ai UnióEurózónaFinnországFidzsiFalkland-szigetekMikronéziaFeröer-szigete" + - "kFranciaországGabonEgyesült KirályságGrenadaGrúziaFrancia GuyanaGuernsey" + - "GhánaGibraltárGrönlandGambiaGuineaGuadeloupeEgyenlítői-GuineaGörögország" + - "Déli-Georgia és Déli-Sandwich-szigetekGuatemalaGuamBissau-GuineaGuyanaHo" + - "ngkong KKTHeard-sziget és McDonald-szigetekHondurasHorvátországHaitiMagy" + - "arországKanári-szigetekIndonéziaÍrországIzraelMan-szigetIndiaBrit Indiai" + - "-óceáni TerületIrakIránIzlandOlaszországJerseyJamaicaJordániaJapánKenyaK" + - "irgizisztánKambodzsaKiribatiComore-szigetekSaint Kitts és NevisÉszak-Kor" + - "eaDél-KoreaKuvaitKajmán-szigetekKazahsztánLaoszLibanonSaint LuciaLiechte" + - "nsteinSrí LankaLibériaLesothoLitvániaLuxemburgLettországLíbiaMarokkóMona" + - "coMoldovaMontenegróSaint MartinMadagaszkárMarshall-szigetekMacedóniaMali" + - "Mianmar (Burma)MongóliaMakaó KKTÉszaki Mariana-szigetekMartiniqueMauritá" + - "niaMontserratMáltaMauritiusMaldív-szigetekMalawiMexikóMalajziaMozambikNa" + - "míbiaÚj-KaledóniaNigerNorfolk-szigetNigériaNicaraguaHollandiaNorvégiaNep" + - "álNauruNiueÚj-ZélandOmánPanamaPeruFrancia PolinéziaPápua Új-GuineaFülöp" + - "-szigetekPakisztánLengyelországSaint-Pierre és MiquelonPitcairn-szigetek" + - "Puerto RicoPalesztin TerületPortugáliaPalauParaguayKatarKülső-ÓceániaRéu" + - "nionRomániaSzerbiaOroszországRuandaSzaúd-ArábiaSalamon-szigetekSeychelle" + - "-szigetekSzudánSvédországSzingapúrSzent IlonaSzlovéniaSvalbard és Jan Ma" + - "yenSzlovákiaSierra LeoneSan MarinoSzenegálSzomáliaSurinameDél-SzudánSão " + - "Tomé és PríncipeSalvadorSint MaartenSzíriaSzváziföldTristan da CunhaTurk" + - "s- és Caicos-szigetekCsádFrancia Déli TerületekTogoThaiföldTádzsikisztán" + - "TokelauKelet-TimorTürkmenisztánTunéziaTongaTörökországTrinidad és Tobago" + - "TuvaluTajvanTanzániaUkrajnaUgandaAz USA lakatlan külbirtokaiEgyesült Nem" + - "zetek SzervezeteEgyesült ÁllamokUruguayÜzbegisztánVatikánSaint Vincent é" + - "s a Grenadine-szigetekVenezuelaBrit Virgin-szigetekAmerikai Virgin-szige" + - "tekVietnamVanuatuWallis és FutunaSzamoaKoszovóJemenMayotteDél-afrikai Kö" + - "ztársaságZambiaZimbabweIsmeretlen körzetVilágAfrikaÉszak-AmerikaDél-Amer" + - "ikaÓceániaNyugat-AfrikaKözép-AmerikaKelet-AfrikaÉszak-AfrikaKözép-Afrika" + - "Afrika déli részeAmerikaAmerika északi részeKarib-térségKelet-ÁzsiaDél-Á" + - "zsiaDélkelet-ÁzsiaDél-EurópaAusztrálázsiaMelanéziaMikronéziai régióPolin" + - "éziaÁzsiaKözép-ÁzsiaNyugat-ÁzsiaEurópaKelet-EurópaÉszak-EurópaNyugat-Eu" + - "rópaLatin-Amerika" - -var huRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x0031, 0x003d, 0x0050, 0x0058, 0x0060, - 0x006f, 0x0075, 0x007f, 0x0089, 0x0098, 0x00a0, 0x00ab, 0x00b0, - 0x00bf, 0x00cc, 0x00df, 0x00e7, 0x00f0, 0x00f7, 0x0103, 0x010c, - 0x0113, 0x011a, 0x011f, 0x0130, 0x0137, 0x013d, 0x0145, 0x015b, - 0x0164, 0x0173, 0x017a, 0x0187, 0x018f, 0x0197, 0x019d, 0x01a3, - 0x01bd, 0x01ce, 0x01ec, 0x0200, 0x0206, 0x0217, 0x0224, 0x0229, - 0x0230, 0x0235, 0x023d, 0x024e, 0x0258, 0x025c, 0x0275, 0x027d, - 0x028e, 0x0294, 0x029f, 0x02ac, 0x02b8, 0x02c0, 0x02c6, 0x02ce, - // Entry 40 - 7F - 0x02e6, 0x02ee, 0x02ff, 0x0306, 0x0312, 0x031a, 0x0328, 0x032f, - 0x033d, 0x0345, 0x0353, 0x035d, 0x0368, 0x036e, 0x037f, 0x038a, - 0x039a, 0x03a8, 0x03ad, 0x03c2, 0x03c9, 0x03d0, 0x03de, 0x03e6, - 0x03ec, 0x03f6, 0x03ff, 0x0405, 0x040b, 0x0415, 0x0428, 0x0436, - 0x045f, 0x0468, 0x046c, 0x0479, 0x047f, 0x048b, 0x04ad, 0x04b5, - 0x04c3, 0x04c8, 0x04d5, 0x04e5, 0x04ef, 0x04f9, 0x04ff, 0x0509, - 0x050e, 0x052b, 0x052f, 0x0534, 0x053a, 0x0546, 0x054c, 0x0553, - 0x055c, 0x0562, 0x0567, 0x0574, 0x057d, 0x0585, 0x0594, 0x05a9, - // Entry 80 - BF - 0x05b5, 0x05bf, 0x05c5, 0x05d5, 0x05e0, 0x05e5, 0x05ec, 0x05f7, - 0x0604, 0x060e, 0x0616, 0x061d, 0x0626, 0x062f, 0x063a, 0x0640, - 0x0648, 0x064e, 0x0655, 0x0660, 0x066c, 0x0678, 0x0689, 0x0693, - 0x0697, 0x06a6, 0x06af, 0x06b9, 0x06d1, 0x06db, 0x06e6, 0x06f0, - 0x06f6, 0x06ff, 0x070f, 0x0715, 0x071c, 0x0724, 0x072c, 0x0734, - 0x0742, 0x0747, 0x0755, 0x075d, 0x0766, 0x076f, 0x0778, 0x077e, - 0x0783, 0x0787, 0x0792, 0x0797, 0x079d, 0x07a1, 0x07b3, 0x07c4, - 0x07d4, 0x07de, 0x07ec, 0x0805, 0x0816, 0x0821, 0x0833, 0x083e, - // Entry C0 - FF - 0x0843, 0x084b, 0x0850, 0x0861, 0x0869, 0x0871, 0x0878, 0x0884, - 0x088a, 0x0898, 0x08a8, 0x08ba, 0x08c1, 0x08cd, 0x08d7, 0x08e2, - 0x08ec, 0x0902, 0x090c, 0x0918, 0x0922, 0x092b, 0x0934, 0x093c, - 0x0948, 0x0960, 0x0968, 0x0974, 0x097b, 0x0987, 0x0997, 0x09b1, - 0x09b6, 0x09ce, 0x09d2, 0x09db, 0x09ea, 0x09f1, 0x09fc, 0x0a0b, - 0x0a13, 0x0a18, 0x0a26, 0x0a39, 0x0a3f, 0x0a45, 0x0a4e, 0x0a55, - 0x0a5b, 0x0a77, 0x0a94, 0x0aa6, 0x0aad, 0x0aba, 0x0ac2, 0x0ae8, - 0x0af1, 0x0b05, 0x0b1d, 0x0b24, 0x0b2b, 0x0b3c, 0x0b42, 0x0b4a, - // Entry 100 - 13F - 0x0b4f, 0x0b56, 0x0b71, 0x0b77, 0x0b7f, 0x0b91, 0x0b97, 0x0b9d, - 0x0bab, 0x0bb7, 0x0bc0, 0x0bcd, 0x0bdc, 0x0be8, 0x0bf5, 0x0c03, - 0x0c16, 0x0c1d, 0x0c33, 0x0c41, 0x0c4d, 0x0c58, 0x0c68, 0x0c74, - 0x0c83, 0x0c8d, 0x0ca1, 0x0cab, 0x0cb1, 0x0cbf, 0x0ccc, 0x0cd3, - 0x0ce0, 0x0cee, 0x0cfc, 0x0cfc, 0x0d09, -} // Size: 610 bytes - -const hyRegionStr string = "" + // Size: 6268 bytes - "Համբարձման կղզիԱնդորրաԱրաբական Միացյալ ԷմիրություններԱֆղանստանԱնտիգուա և" + - " ԲարբուդաԱնգուիլաԱլբանիաՀայաստանԱնգոլաԱնտարկտիդաԱրգենտինաԱմերիկյան Սամոա" + - "ԱվստրիաԱվստրալիաԱրուբաԱլանդյան կղզիներԱդրբեջանԲոսնիա և ՀերցեգովինաԲարբա" + - "դոսԲանգլադեշԲելգիաԲուրկինա ՖասոԲուլղարիաԲահրեյնԲուրունդիԲենինՍուրբ Բարդ" + - "ուղիմեոսԲերմուդներԲրունեյԲոլիվիաԿարիբյան ՆիդեռլանդներԲրազիլիաԲահամաներԲ" + - "ութանԲուվե կղզիԲոթսվանաԲելառուսԲելիզԿանադաԿոկոսյան (Քիլինգ) կղզիներԿոնգ" + - "ո - ԿինշասաԿենտրոնական Աֆրիկյան ՀանրապետությունԿոնգո - ԲրազավիլՇվեյցարի" + - "աԿոտ դ’ԻվուարԿուկի կղզիներՉիլիԿամերունՉինաստանԿոլումբիաՔլիփերթոն կղզիԿո" + - "ստա ՌիկաԿուբաԿաբո ՎերդեԿյուրասաոՍուրբ Ծննդյան կղզիԿիպրոսՉեխիաԳերմանիաԴի" + - "եգո ԳարսիաՋիբութիԴանիաԴոմինիկաԴոմինիկյան ՀանրապետությունԱլժիրՍեուտա և Մ" + - "ելիլյաԷկվադորԷստոնիաԵգիպտոսԱրևմտյան ՍահարաԷրիթրեաԻսպանիաԵթովպիաԵվրոպակա" + - "ն ՄիությունԵվրագոտիՖինլանդիաՖիջիՖոլքլենդյան կղզիներՄիկրոնեզիաՖարերյան կ" + - "ղզիներՖրանսիաԳաբոնՄիացյալ ԹագավորությունԳրենադաՎրաստանՖրանսիական Գվիանա" + - "ԳերնսիԳանաՋիբրալթարԳրենլանդիաԳամբիաԳվինեաԳվադելուպաՀասարակածային Գվինեա" + - "ՀունաստանՀարավային Ջորջիա և Հարավային Սենդվիչյան կղզիներԳվատեմալաԳուամԳ" + - "վինեա-ԲիսաուԳայանաՀոնկոնգի ՀՎՇՀերդ կղզի և ՄակԴոնալդի կղզիներՀոնդուրասԽո" + - "րվաթիաՀայիթիՀունգարիաԿանարյան կղզիներԻնդոնեզիաԻռլանդիաԻսրայելՄեն կղզիՀն" + - "դկաստանԲրիտանական Տարածք Հնդկական ՕվկիանոսումԻրաքԻրանԻսլանդիաԻտալիաՋերս" + - "իՃամայկաՀորդանանՃապոնիաՔենիաՂրղզստանԿամբոջաԿիրիբատիԿոմորյան կղզիներՍենթ" + - " Քիտս և ՆևիսՀյուսիսային ԿորեաՀարավային ԿորեաՔուվեյթԿայման կղզիներՂազախստ" + - "անԼաոսԼիբանանՍենթ ԼյուսիաԼիխտենշտեյնՇրի ԼանկաԼիբերիաԼեսոտոԼիտվաԼյուքսեմ" + - "բուրգԼատվիաԼիբիաՄարոկկոՄոնակոՄոլդովաՉեռնոգորիաՍեն ՄարտենՄադագասկարՄարշա" + - "լյան կղզիներՄակեդոնիաՄալիՄյանմա (Բիրմա)ՄոնղոլիաՉինաստանի Մակաո ՀՎՇՀյուս" + - "իսային Մարիանյան կղզիներՄարտինիկաՄավրիտանիաՄոնսեռատՄալթաՄավրիկիոսՄալդիվ" + - "ներՄալավիՄեքսիկաՄալայզիաՄոզամբիկՆամիբիաՆոր ԿալեդոնիաՆիգերՆորֆոլկ կղզիՆի" + - "գերիաՆիկարագուաՆիդեռլանդներՆորվեգիաՆեպալՆաուրուՆիուեՆոր ԶելանդիաՕմանՊան" + - "ամաՊերուՖրանսիական ՊոլինեզիաՊապուա Նոր ԳվինեաՖիլիպիններՊակիստանԼեհաստան" + - "Սեն Պիեռ և ՄիքելոնՊիտկեռն կղզիներՊուերտո ՌիկոՊաղեստինյան տարածքներՊորտո" + - "ւգալիաՊալաուՊարագվայԿատարԱրտաքին ՕվկիանիաՌեյունիոնՌումինիաՍերբիաՌուսաստ" + - "անՌուանդաՍաուդյան ԱրաբիաՍողոմոնյան կղզիներՍեյշելներՍուդանՇվեդիաՍինգապու" + - "րՍուրբ Հեղինեի կղզիՍլովենիաՍվալբարդ և Յան ՄայենՍլովակիաՍիեռա ԼեոնեՍան Մ" + - "արինոՍենեգալՍոմալիՍուրինամՀարավային ՍուդանՍան Տոմե և ՓրինսիպիՍալվադորՍի" + - "նտ ՄարտենՍիրիաՍվազիլենդՏրիստան դա ԿունյաԹըրքս և Կայկոս կղզիներՉադՖրանսի" + - "ական Հարավային ՏարածքներՏոգոԹայլանդՏաջիկստանՏոկելաուԹիմոր ԼեշտիԹուրքմեն" + - "ստանԹունիսՏոնգաԹուրքիաՏրինիդադ և ՏոբագոՏուվալուԹայվանՏանզանիաՈւկրաինաՈւ" + - "գանդաԱրտաքին կղզիներ (ԱՄՆ)Միավորված ազգերի կազմակերպությունՄիացյալ Նահա" + - "նգներՈւրուգվայՈւզբեկստանՎատիկանՍենթ Վինսենթ և ԳրենադիններՎենեսուելաԲրիտ" + - "անական Վիրջինյան կղզիներԱՄՆ Վիրջինյան կղզիներՎիետնամՎանուատուՈւոլիս և Ֆ" + - "ուտունաՍամոաԿոսովոԵմենՄայոտՀարավաֆրիկյան ՀանրապետությունԶամբիաԶիմբաբվեԱ" + - "նհայտ տարածաշրջանԱշխարհԱֆրիկաՀյուսիսային ԱմերիկաՀարավային ԱմերիկաՕվկիան" + - "իաԱրևմտյան ԱֆրիկաԿենտրոնական ԱմերիկաԱրևելյան ԱֆրիկաՀյուսիսային ԱֆրիկաԿե" + - "նտրոնական ԱֆրիկաՀարավային ԱֆրիկաԱմերիկաՀյուսիսային Ամերիկա - ԱՄՆ և Կանա" + - "դաԿարիբներԱրևելյան ԱսիաՀարավային ԱսիաՀարավարևելյան ԱսիաՀարավային Եվրոպա" + - "ԱվստրալասիաՄելանեզիաՄիկրոնեզյան տարածաշրջանՊոլինեզիաԱսիաԿենտրոնական Ասի" + - "աԱրևմտյան ԱսիաԵվրոպաԱրևելյան ԵվրոպաՀյուսիսային ԵվրոպաԱրևմտյան ԵվրոպաԼատ" + - "ինական Ամերիկա" - -var hyRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001d, 0x002b, 0x0067, 0x0079, 0x009d, 0x00ad, 0x00bb, - 0x00cb, 0x00d7, 0x00eb, 0x00fd, 0x011a, 0x0128, 0x013a, 0x0146, - 0x0165, 0x0175, 0x019b, 0x01ab, 0x01bd, 0x01c9, 0x01e2, 0x01f4, - 0x0202, 0x0214, 0x021e, 0x0241, 0x0255, 0x0263, 0x0271, 0x029a, - 0x02aa, 0x02bc, 0x02c8, 0x02db, 0x02eb, 0x02fb, 0x0305, 0x0311, - 0x033f, 0x035a, 0x03a0, 0x03bd, 0x03cf, 0x03e7, 0x0400, 0x0408, - 0x0418, 0x0428, 0x043a, 0x0455, 0x0468, 0x0472, 0x0485, 0x0497, - 0x04b9, 0x04c5, 0x04cf, 0x04df, 0x04f6, 0x0504, 0x050e, 0x051e, - // Entry 40 - 7F - 0x0551, 0x055b, 0x0579, 0x0587, 0x0595, 0x05a3, 0x05c0, 0x05ce, - 0x05dc, 0x05ea, 0x060f, 0x061f, 0x0631, 0x0639, 0x065e, 0x0672, - 0x0691, 0x069f, 0x06a9, 0x06d4, 0x06e2, 0x06f0, 0x0711, 0x071d, - 0x0725, 0x0737, 0x074b, 0x0757, 0x0763, 0x0777, 0x079e, 0x07b0, - 0x0809, 0x081b, 0x0825, 0x083e, 0x084a, 0x0861, 0x0899, 0x08ab, - 0x08bb, 0x08c7, 0x08d9, 0x08f8, 0x090a, 0x091a, 0x0928, 0x0937, - 0x0949, 0x0992, 0x099a, 0x09a2, 0x09b2, 0x09be, 0x09c8, 0x09d6, - 0x09e6, 0x09f4, 0x09fe, 0x0a0e, 0x0a1c, 0x0a2c, 0x0a4b, 0x0a68, - // Entry 80 - BF - 0x0a89, 0x0aa6, 0x0ab4, 0x0acf, 0x0ae1, 0x0ae9, 0x0af7, 0x0b0e, - 0x0b24, 0x0b35, 0x0b43, 0x0b4f, 0x0b59, 0x0b73, 0x0b7f, 0x0b89, - 0x0b97, 0x0ba3, 0x0bb1, 0x0bc5, 0x0bd8, 0x0bec, 0x0c0d, 0x0c1f, - 0x0c27, 0x0c40, 0x0c50, 0x0c74, 0x0cac, 0x0cbe, 0x0cd2, 0x0ce2, - 0x0cec, 0x0cfe, 0x0d10, 0x0d1c, 0x0d2a, 0x0d3a, 0x0d4a, 0x0d58, - 0x0d71, 0x0d7b, 0x0d92, 0x0da0, 0x0db4, 0x0dcc, 0x0ddc, 0x0de6, - 0x0df4, 0x0dfe, 0x0e15, 0x0e1d, 0x0e29, 0x0e33, 0x0e5a, 0x0e7a, - 0x0e8e, 0x0e9e, 0x0eae, 0x0ecf, 0x0eec, 0x0f03, 0x0f2c, 0x0f42, - // Entry C0 - FF - 0x0f4e, 0x0f5e, 0x0f68, 0x0f87, 0x0f99, 0x0fa9, 0x0fb5, 0x0fc7, - 0x0fd5, 0x0ff2, 0x1015, 0x1027, 0x1033, 0x103f, 0x1051, 0x1073, - 0x1083, 0x10a8, 0x10b8, 0x10cd, 0x10e0, 0x10ee, 0x10fa, 0x110a, - 0x1129, 0x114c, 0x115c, 0x1171, 0x117b, 0x118d, 0x11ad, 0x11d6, - 0x11dc, 0x1216, 0x121e, 0x122c, 0x123e, 0x124e, 0x1263, 0x127b, - 0x1287, 0x1291, 0x129f, 0x12bf, 0x12cf, 0x12db, 0x12eb, 0x12fb, - 0x1309, 0x132f, 0x136f, 0x1390, 0x13a2, 0x13b6, 0x13c4, 0x13f5, - 0x1409, 0x143f, 0x1467, 0x1475, 0x1487, 0x14a7, 0x14b1, 0x14bd, - // Entry 100 - 13F - 0x14c5, 0x14cf, 0x1508, 0x1514, 0x1524, 0x1547, 0x1553, 0x155f, - 0x1584, 0x15a5, 0x15b5, 0x15d2, 0x15f7, 0x1614, 0x1637, 0x165a, - 0x1679, 0x1687, 0x16c5, 0x16d5, 0x16ee, 0x1709, 0x172c, 0x174b, - 0x1761, 0x1773, 0x17a0, 0x17b2, 0x17ba, 0x17d9, 0x17f2, 0x17fe, - 0x181b, 0x183e, 0x185b, 0x185b, 0x187c, -} // Size: 610 bytes - -const idRegionStr string = "" + // Size: 3073 bytes - "Pulau AscensionAndorraUni Emirat ArabAfganistanAntigua dan BarbudaAnguil" + - "laAlbaniaArmeniaAngolaAntartikaArgentinaSamoa AmerikaAustriaAustraliaAru" + - "baKepulauan AlandAzerbaijanBosnia dan HerzegovinaBarbadosBangladeshBelgi" + - "aBurkina FasoBulgariaBahrainBurundiBeninSaint BarthélemyBermudaBruneiBol" + - "iviaBelanda KaribiaBrasilBahamaBhutanPulau BouvetBotswanaBelarusBelizeKa" + - "nadaKepulauan Cocos (Keeling)Kongo - KinshasaRepublik Afrika TengahKongo" + - " - BrazzavilleSwissPantai GadingKepulauan CookCileKamerunTiongkokKolombi" + - "aPulau ClippertonKosta RikaKubaTanjung VerdeCuraçaoPulau ChristmasSiprus" + - "CekoJermanDiego GarciaJibutiDenmarkDominikaRepublik DominikaAljazairCeut" + - "a dan MelillaEkuadorEstoniaMesirSahara BaratEritreaSpanyolEtiopiaUni Ero" + - "paZona EuroFinlandiaFijiKepulauan MalvinasMikronesiaKepulauan FaroePranc" + - "isGabonInggris RayaGrenadaGeorgiaGuyana PrancisGuernseyGhanaGibraltarGri" + - "nlandiaGambiaGuineaGuadeloupeGuinea EkuatorialYunaniGeorgia Selatan & Ke" + - "p. Sandwich SelatanGuatemalaGuamGuinea-BissauGuyanaHong Kong SAR Tiongko" + - "kPulau Heard dan Kepulauan McDonaldHondurasKroasiaHaitiHungariaKepulauan" + - " CanaryIndonesiaIrlandiaIsraelPulau ManIndiaWilayah Inggris di Samudra H" + - "indiaIrakIranIslandiaItaliaJerseyJamaikaYordaniaJepangKenyaKirgistanKamb" + - "ojaKiribatiKomoroSaint Kitts dan NevisKorea UtaraKorea SelatanKuwaitKepu" + - "lauan CaymanKazakstanLaosLebanonSaint LuciaLiechtensteinSri LankaLiberia" + - "LesothoLituaniaLuksemburgLatviaLibiaMarokoMonakoMoldovaMontenegroSaint M" + - "artinMadagaskarKepulauan MarshallMakedoniaMaliMyanmar (Burma)MongoliaMak" + - "au SAR TiongkokKepulauan Mariana UtaraMartinikMauritaniaMontserratMaltaM" + - "auritiusMaladewaMalawiMeksikoMalaysiaMozambikNamibiaKaledonia BaruNigerK" + - "epulauan NorfolkNigeriaNikaraguaBelandaNorwegiaNepalNauruNiueSelandia Ba" + - "ruOmanPanamaPeruPolinesia PrancisPapua NuginiFilipinaPakistanPolandiaSai" + - "nt Pierre dan MiquelonKepulauan PitcairnPuerto RikoWilayah PalestinaPort" + - "ugalPalauParaguayQatarOseania LuarRéunionRumaniaSerbiaRusiaRwandaArab Sa" + - "udiKepulauan SolomonSeychellesSudanSwediaSingapuraSaint HelenaSloveniaKe" + - "pulauan Svalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomal" + - "iaSurinameSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSuria" + - "hSwazilandTristan da CunhaKepulauan Turks dan CaicosCadWilayah Kutub Sel" + - "atan PrancisTogoThailandTajikistanTokelauTimor LesteTurkimenistanTunisia" + - "TongaTurkiTrinidad dan TobagoTuvaluTaiwanTanzaniaUkrainaUgandaKepulauan " + - "Terluar A.S.Perserikatan Bangsa-BangsaAmerika SerikatUruguayUzbekistanVa" + - "tikanSaint Vincent dan GrenadinesVenezuelaKepulauan Virgin InggrisKepula" + - "uan Virgin A.S.VietnamVanuatuKepulauan Wallis dan FutunaSamoaKosovoYaman" + - "MayotteAfrika SelatanZambiaZimbabweWilayah Tidak DikenalDuniaAfrikaAmeri" + - "ka UtaraAmerika SelatanOseaniaAfrika Bagian BaratAmerika TengahAfrika Ba" + - "gian TimurAfrika Bagian UtaraAfrika Bagian TengahAfrika Bagian SelatanAm" + - "erikaAmerika Bagian UtaraKepulauan KaribiaAsia Bagian TimurAsia Bagian S" + - "elatanAsia TenggaraEropa Bagian SelatanAustralasiaMelanesiaWilayah Mikro" + - "nesiaPolinesiaAsiaAsia TengahAsia Bagian BaratEropaEropa Bagian TimurEro" + - "pa Bagian UtaraEropa Bagian BaratAmerika Latin" - -var idRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0016, 0x0025, 0x002f, 0x0042, 0x004a, 0x0051, - 0x0058, 0x005e, 0x0067, 0x0070, 0x007d, 0x0084, 0x008d, 0x0092, - 0x00a1, 0x00ab, 0x00c1, 0x00c9, 0x00d3, 0x00d9, 0x00e5, 0x00ed, - 0x00f4, 0x00fb, 0x0100, 0x0111, 0x0118, 0x011e, 0x0125, 0x0134, - 0x013a, 0x0140, 0x0146, 0x0152, 0x015a, 0x0161, 0x0167, 0x016d, - 0x0186, 0x0196, 0x01ac, 0x01bf, 0x01c4, 0x01d1, 0x01df, 0x01e3, - 0x01ea, 0x01f2, 0x01fa, 0x020a, 0x0214, 0x0218, 0x0225, 0x022d, - 0x023c, 0x0242, 0x0246, 0x024c, 0x0258, 0x025e, 0x0265, 0x026d, - // Entry 40 - 7F - 0x027e, 0x0286, 0x0297, 0x029e, 0x02a5, 0x02aa, 0x02b6, 0x02bd, - 0x02c4, 0x02cb, 0x02d4, 0x02dd, 0x02e6, 0x02ea, 0x02fc, 0x0306, - 0x0315, 0x031c, 0x0321, 0x032d, 0x0334, 0x033b, 0x0349, 0x0351, - 0x0356, 0x035f, 0x0369, 0x036f, 0x0375, 0x037f, 0x0390, 0x0396, - 0x03bd, 0x03c6, 0x03ca, 0x03d7, 0x03dd, 0x03f3, 0x0415, 0x041d, - 0x0424, 0x0429, 0x0431, 0x0441, 0x044a, 0x0452, 0x0458, 0x0461, - 0x0466, 0x0487, 0x048b, 0x048f, 0x0497, 0x049d, 0x04a3, 0x04aa, - 0x04b2, 0x04b8, 0x04bd, 0x04c6, 0x04cd, 0x04d5, 0x04db, 0x04f0, - // Entry 80 - BF - 0x04fb, 0x0508, 0x050e, 0x051e, 0x0527, 0x052b, 0x0532, 0x053d, - 0x054a, 0x0553, 0x055a, 0x0561, 0x0569, 0x0573, 0x0579, 0x057e, - 0x0584, 0x058a, 0x0591, 0x059b, 0x05a7, 0x05b1, 0x05c3, 0x05cc, - 0x05d0, 0x05df, 0x05e7, 0x05f9, 0x0610, 0x0618, 0x0622, 0x062c, - 0x0631, 0x063a, 0x0642, 0x0648, 0x064f, 0x0657, 0x065f, 0x0666, - 0x0674, 0x0679, 0x068a, 0x0691, 0x069a, 0x06a1, 0x06a9, 0x06ae, - 0x06b3, 0x06b7, 0x06c4, 0x06c8, 0x06ce, 0x06d2, 0x06e3, 0x06ef, - 0x06f7, 0x06ff, 0x0707, 0x0720, 0x0732, 0x073d, 0x074e, 0x0756, - // Entry C0 - FF - 0x075b, 0x0763, 0x0768, 0x0774, 0x077c, 0x0783, 0x0789, 0x078e, - 0x0794, 0x079e, 0x07af, 0x07b9, 0x07be, 0x07c4, 0x07cd, 0x07d9, - 0x07e1, 0x0801, 0x0809, 0x0815, 0x081f, 0x0826, 0x082d, 0x0835, - 0x0842, 0x0857, 0x0862, 0x086e, 0x0874, 0x087d, 0x088d, 0x08a7, - 0x08aa, 0x08c7, 0x08cb, 0x08d3, 0x08dd, 0x08e4, 0x08ef, 0x08fc, - 0x0903, 0x0908, 0x090d, 0x0920, 0x0926, 0x092c, 0x0934, 0x093b, - 0x0941, 0x0957, 0x0971, 0x0980, 0x0987, 0x0991, 0x0998, 0x09b4, - 0x09bd, 0x09d5, 0x09ea, 0x09f1, 0x09f8, 0x0a13, 0x0a18, 0x0a1e, - // Entry 100 - 13F - 0x0a23, 0x0a2a, 0x0a38, 0x0a3e, 0x0a46, 0x0a5b, 0x0a60, 0x0a66, - 0x0a73, 0x0a82, 0x0a89, 0x0a9c, 0x0aaa, 0x0abd, 0x0ad0, 0x0ae4, - 0x0af9, 0x0b00, 0x0b14, 0x0b25, 0x0b36, 0x0b49, 0x0b56, 0x0b6a, - 0x0b75, 0x0b7e, 0x0b90, 0x0b99, 0x0b9d, 0x0ba8, 0x0bb9, 0x0bbe, - 0x0bd0, 0x0be2, 0x0bf4, 0x0bf4, 0x0c01, -} // Size: 610 bytes - -const isRegionStr string = "" + // Size: 3338 bytes - "Ascension-eyjaAndorraSameinuðu arabísku furstadæminAfganistanAntígva og " + - "BarbúdaAngvillaAlbaníaArmeníaAngólaSuðurskautslandiðArgentínaBandaríska " + - "SamóaAusturríkiÁstralíaArúbaÁlandseyjarAserbaídsjanBosnía og Hersegóvína" + - "BarbadosBangladessBelgíaBúrkína FasóBúlgaríaBareinBúrúndíBenínSankti Bar" + - "tólómeusareyjarBermúdaeyjarBrúneiBólivíaKaríbahafshluti HollandsBrasilía" + - "BahamaeyjarBútanBouveteyjaBotsvanaHvíta-RússlandBelísKanadaKókoseyjar (K" + - "eeling)Kongó-KinshasaMið-AfríkulýðveldiðKongó-BrazzavilleSvissFílabeinss" + - "tröndinCooks-eyjarSíleKamerúnKínaKólumbíaClipperton-eyjaKostaríkaKúbaGræ" + - "nhöfðaeyjarCuracaoJólaeyKýpurTékklandÞýskalandDiego GarciaDjíbútíDanmörk" + - "DóminíkaDóminíska lýðveldiðAlsírCeuta og MelillaEkvadorEistlandEgyptalan" + - "dVestur-SaharaErítreaSpánnEþíópíaEvrópusambandiðEvrusvæðiðFinnlandFídjíe" + - "yjarFalklandseyjarMíkrónesíaFæreyjarFrakklandGabonBretlandGrenadaGeorgía" + - "Franska GvæjanaGuernseyGanaGíbraltarGrænlandGambíaGíneaGvadelúpeyjarMiðb" + - "augs-GíneaGrikklandSuður-Georgía og Suður-SandvíkureyjarGvatemalaGvamGín" + - "ea-BissáGvæjanasérstjórnarsvæðið Hong KongHeard og McDonaldseyjarHondúra" + - "sKróatíaHaítíUngverjalandKanaríeyjarIndónesíaÍrlandÍsraelMönIndlandBresk" + - "u IndlandshafseyjarÍrakÍranÍslandÍtalíaJerseyJamaíkaJórdaníaJapanKeníaKi" + - "rgistanKambódíaKíribatíKómoreyjarSankti Kitts og NevisNorður-KóreaSuður-" + - "KóreaKúveitCaymaneyjarKasakstanLaosLíbanonSankti LúsíaLiechtensteinSrí L" + - "ankaLíberíaLesótóLitháenLúxemborgLettlandLíbíaMarokkóMónakóMoldóvaSvartf" + - "jallalandSt. MartinMadagaskarMarshalleyjarMakedóníaMalíMjanmar (Búrma)Mo" + - "ngólíasérstjórnarsvæðið MakaóNorður-MaríanaeyjarMartiníkMáritaníaMontser" + - "ratMaltaMáritíusMaldíveyjarMalavíMexíkóMalasíaMósambíkNamibíaNýja-Kaledó" + - "níaNígerNorfolkeyjaNígeríaNíkaragvaHollandNoregurNepalNárúNiueNýja-Sjála" + - "ndÓmanPanamaPerúFranska PólýnesíaPapúa Nýja-GíneaFilippseyjarPakistanPól" + - "landSankti Pierre og MiquelonPitcairn-eyjarPúertó RíkóHeimastjórnarsvæði" + - " PalestínumannaPortúgalPaláParagvæKatarYtri EyjaálfaRéunionRúmeníaSerbía" + - "RússlandRúandaSádi-ArabíaSalómonseyjarSeychelles-eyjarSúdanSvíþjóðSingap" + - "úrSankti HelenaSlóveníaSvalbarði og Jan MayenSlóvakíaSíerra LeóneSan Ma" + - "rínóSenegalSómalíaSúrínamSuður-SúdanSaó Tóme og PrinsípeEl SalvadorSankt" + - "i MartinSýrlandSvasílandTristan da CunhaTurks- og CaicoseyjarTsjadFrönsk" + - "u suðlægu landsvæðinTógóTaílandTadsjikistanTókeláTímor-LesteTúrkmenistan" + - "TúnisTongaTyrklandTrínidad og TóbagóTúvalúTaívanTansaníaÚkraínaÚgandaSmá" + - "eyjar BandaríkjannaSameinuðu þjóðirnarBandaríkinÚrúgvæÚsbekistanVatíkani" + - "ðSankti Vinsent og GrenadíneyjarVenesúelaBresku JómfrúaeyjarBandarísku " + - "JómfrúaeyjarVíetnamVanúatúWallis- og FútúnaeyjarSamóaKósóvóJemenMayotteS" + - "uður-AfríkaSambíaSimbabveÓþekkt svæðiHeimurinnAfríkaNorður-AmeríkaSuður-" + - "AmeríkaEyjaálfaVestur-AfríkaMið-AmeríkaAustur-AfríkaNorður-AfríkaMið-Afr" + - "íkaSuðurhluti AfríkuAmeríkaAmeríka norðan MexikóKaríbahafiðAustur-AsíaS" + - "uður-AsíaSuðaustur-AsíaSuður-EvrópaÁstralasíaMelanesíaMíkrónesíusvæðiðPó" + - "lýnesíaAsíaMið-AsíaVestur-AsíaEvrópaAustur-EvrópaNorður-EvrópaVestur-Evr" + - "ópaRómanska Ameríka" - -var isRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x0015, 0x0036, 0x0040, 0x0054, 0x005c, 0x0064, - 0x006c, 0x0073, 0x0086, 0x0090, 0x00a2, 0x00ad, 0x00b7, 0x00bd, - 0x00c9, 0x00d6, 0x00ee, 0x00f6, 0x0100, 0x0107, 0x0116, 0x0120, - 0x0126, 0x0130, 0x0136, 0x0151, 0x015e, 0x0165, 0x016e, 0x0187, - 0x0190, 0x019b, 0x01a1, 0x01ab, 0x01b3, 0x01c3, 0x01c9, 0x01cf, - 0x01e4, 0x01f3, 0x020b, 0x021d, 0x0222, 0x0235, 0x0240, 0x0245, - 0x024d, 0x0252, 0x025c, 0x026b, 0x0275, 0x027a, 0x028b, 0x0292, - 0x0299, 0x029f, 0x02a8, 0x02b3, 0x02bf, 0x02c9, 0x02d1, 0x02db, - // Entry 40 - 7F - 0x02f3, 0x02f9, 0x0309, 0x0310, 0x0318, 0x0322, 0x032f, 0x0337, - 0x033d, 0x0348, 0x0359, 0x0366, 0x036e, 0x037a, 0x0388, 0x0395, - 0x039e, 0x03a7, 0x03ac, 0x03b4, 0x03bb, 0x03c3, 0x03d3, 0x03db, - 0x03df, 0x03e9, 0x03f2, 0x03f9, 0x03ff, 0x040d, 0x041d, 0x0426, - 0x044f, 0x0458, 0x045c, 0x0469, 0x0471, 0x0491, 0x04a8, 0x04b1, - 0x04ba, 0x04c1, 0x04cd, 0x04d9, 0x04e4, 0x04eb, 0x04f2, 0x04f6, - 0x04fd, 0x0515, 0x051a, 0x051f, 0x0526, 0x052e, 0x0534, 0x053c, - 0x0546, 0x054b, 0x0551, 0x055a, 0x0564, 0x056e, 0x0579, 0x058e, - // Entry 80 - BF - 0x059c, 0x05a9, 0x05b0, 0x05bb, 0x05c4, 0x05c8, 0x05d0, 0x05de, - 0x05eb, 0x05f5, 0x05fe, 0x0606, 0x060e, 0x0618, 0x0620, 0x0627, - 0x062f, 0x0637, 0x063f, 0x064e, 0x0658, 0x0662, 0x066f, 0x067a, - 0x067f, 0x068f, 0x0699, 0x06b6, 0x06cb, 0x06d4, 0x06df, 0x06e9, - 0x06ee, 0x06f8, 0x0704, 0x070b, 0x0713, 0x071b, 0x0725, 0x072d, - 0x073e, 0x0744, 0x074f, 0x0758, 0x0762, 0x0769, 0x0770, 0x0775, - 0x077b, 0x077f, 0x078d, 0x0792, 0x0798, 0x079d, 0x07b1, 0x07c4, - 0x07d0, 0x07d8, 0x07e0, 0x07f9, 0x0807, 0x0816, 0x083b, 0x0844, - // Entry C0 - FF - 0x0849, 0x0851, 0x0856, 0x0864, 0x086c, 0x0875, 0x087c, 0x0885, - 0x088c, 0x0899, 0x08a7, 0x08b7, 0x08bd, 0x08c8, 0x08d1, 0x08de, - 0x08e8, 0x08ff, 0x0909, 0x0917, 0x0923, 0x092a, 0x0933, 0x093c, - 0x0949, 0x0960, 0x096b, 0x0978, 0x0980, 0x098a, 0x099a, 0x09af, - 0x09b4, 0x09d3, 0x09d9, 0x09e1, 0x09ed, 0x09f5, 0x0a01, 0x0a0e, - 0x0a14, 0x0a19, 0x0a21, 0x0a36, 0x0a3e, 0x0a45, 0x0a4e, 0x0a57, - 0x0a5e, 0x0a76, 0x0a8d, 0x0a98, 0x0aa1, 0x0aac, 0x0ab7, 0x0ad7, - 0x0ae1, 0x0af6, 0x0b10, 0x0b18, 0x0b21, 0x0b39, 0x0b3f, 0x0b48, - // Entry 100 - 13F - 0x0b4d, 0x0b54, 0x0b62, 0x0b69, 0x0b71, 0x0b81, 0x0b8a, 0x0b91, - 0x0ba1, 0x0bb0, 0x0bb9, 0x0bc7, 0x0bd4, 0x0be2, 0x0bf1, 0x0bfd, - 0x0c10, 0x0c18, 0x0c30, 0x0c3d, 0x0c49, 0x0c55, 0x0c65, 0x0c73, - 0x0c7f, 0x0c89, 0x0c9f, 0x0cab, 0x0cb0, 0x0cba, 0x0cc6, 0x0ccd, - 0x0cdb, 0x0cea, 0x0cf8, 0x0cf8, 0x0d0a, -} // Size: 610 bytes - -const itRegionStr string = "" + // Size: 3036 bytes - "Isola AscensioneAndorraEmirati Arabi UnitiAfghanistanAntigua e BarbudaAn" + - "guillaAlbaniaArmeniaAngolaAntartideArgentinaSamoa americaneAustriaAustra" + - "liaArubaIsole ÅlandAzerbaigianBosnia ed ErzegovinaBarbadosBangladeshBelg" + - "ioBurkina FasoBulgariaBahreinBurundiBeninSaint-BarthélemyBermudaBruneiBo" + - "liviaCaraibi olandesiBrasileBahamasBhutanIsola BouvetBotswanaBielorussia" + - "BelizeCanadaIsole Cocos (Keeling)Congo - KinshasaRepubblica Centrafrican" + - "aCongo-BrazzavilleSvizzeraCosta d’AvorioIsole CookCileCamerunCinaColombi" + - "aIsola di ClippertonCosta RicaCubaCapo VerdeCuraçaoIsola ChristmasCiproC" + - "echiaGermaniaDiego GarciaGibutiDanimarcaDominicaRepubblica DominicanaAlg" + - "eriaCeuta e MelillaEcuadorEstoniaEgittoSahara occidentaleEritreaSpagnaEt" + - "iopiaUnione EuropeaEurozonaFinlandiaFigiIsole FalklandMicronesiaIsole Fæ" + - "r ØerFranciaGabonRegno UnitoGrenadaGeorgiaGuyana franceseGuernseyGhanaGi" + - "bilterraGroenlandiaGambiaGuineaGuadalupaGuinea EquatorialeGreciaGeorgia " + - "del Sud e Sandwich australiGuatemalaGuamGuinea-BissauGuyanaRAS di Hong K" + - "ongIsole Heard e McDonaldHondurasCroaziaHaitiUngheriaIsole CanarieIndone" + - "siaIrlandaIsraeleIsola di ManIndiaTerritorio britannico dell’Oceano Indi" + - "anoIraqIranIslandaItaliaJerseyGiamaicaGiordaniaGiapponeKenyaKirghizistan" + - "CambogiaKiribatiComoreSaint Kitts e NevisCorea del NordCorea del SudKuwa" + - "itIsole CaymanKazakistanLaosLibanoSaint LuciaLiechtensteinSri LankaLiber" + - "iaLesothoLituaniaLussemburgoLettoniaLibiaMaroccoMonacoMoldaviaMontenegro" + - "Saint MartinMadagascarIsole MarshallRepubblica di MacedoniaMaliMyanmar (" + - "Birmania)MongoliaRAS di MacaoIsole Marianne settentrionaliMartinicaMauri" + - "taniaMontserratMaltaMauritiusMaldiveMalawiMessicoMalaysiaMozambicoNamibi" + - "aNuova CaledoniaNigerIsola NorfolkNigeriaNicaraguaPaesi BassiNorvegiaNep" + - "alNauruNiueNuova ZelandaOmanPanamáPerùPolinesia francesePapua Nuova Guin" + - "eaFilippinePakistanPoloniaSaint-Pierre e MiquelonIsole PitcairnPortorico" + - "Territori palestinesiPortogalloPalauParaguayQatarOceania lontanaRiunione" + - "RomaniaSerbiaRussiaRuandaArabia SauditaIsole SalomoneSeychellesSudanSvez" + - "iaSingaporeSant’ElenaSloveniaSvalbard e Jan MayenSlovacchiaSierra LeoneS" + - "an MarinoSenegalSomaliaSurinameSud SudanSão Tomé e PríncipeEl SalvadorSi" + - "nt MaartenSiriaSwazilandTristan da CunhaIsole Turks e CaicosCiadTerre au" + - "strali francesiTogoThailandiaTagikistanTokelauTimor EstTurkmenistanTunis" + - "iaTongaTurchiaTrinidad e TobagoTuvaluTaiwanTanzaniaUcrainaUgandaAltre is" + - "ole americane del PacificoNazioni UniteStati UnitiUruguayUzbekistanCittà" + - " del VaticanoSaint Vincent e GrenadineVenezuelaIsole Vergini Britanniche" + - "Isole Vergini AmericaneVietnamVanuatuWallis e FutunaSamoaKosovoYemenMayo" + - "tteSudafricaZambiaZimbabweRegione sconosciutaMondoAfricaNord AmericaAmer" + - "ica del SudOceaniaAfrica occidentaleAmerica CentraleAfrica orientaleNord" + - "africaAfrica centraleAfrica del SudAmericheAmerica del NordCaraibiAsia o" + - "rientaleAsia del SudSud-est asiaticoEuropa meridionaleAustralasiaMelanes" + - "iaRegione micronesianaPolinesiaAsiaAsia centraleAsia occidentaleEuropaEu" + - "ropa orientaleEuropa settentrionaleEuropa occidentaleAmerica Latina" - -var itRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x002a, 0x0035, 0x0046, 0x004e, 0x0055, - 0x005c, 0x0062, 0x006b, 0x0074, 0x0083, 0x008a, 0x0093, 0x0098, - 0x00a4, 0x00af, 0x00c3, 0x00cb, 0x00d5, 0x00db, 0x00e7, 0x00ef, - 0x00f6, 0x00fd, 0x0102, 0x0113, 0x011a, 0x0120, 0x0127, 0x0137, - 0x013e, 0x0145, 0x014b, 0x0157, 0x015f, 0x016a, 0x0170, 0x0176, - 0x018b, 0x019b, 0x01b3, 0x01c4, 0x01cc, 0x01dc, 0x01e6, 0x01ea, - 0x01f1, 0x01f5, 0x01fd, 0x0210, 0x021a, 0x021e, 0x0228, 0x0230, - 0x023f, 0x0244, 0x024a, 0x0252, 0x025e, 0x0264, 0x026d, 0x0275, - // Entry 40 - 7F - 0x028a, 0x0291, 0x02a0, 0x02a7, 0x02ae, 0x02b4, 0x02c6, 0x02cd, - 0x02d3, 0x02da, 0x02e8, 0x02f0, 0x02f9, 0x02fd, 0x030b, 0x0315, - 0x0324, 0x032b, 0x0330, 0x033b, 0x0342, 0x0349, 0x0358, 0x0360, - 0x0365, 0x036f, 0x037a, 0x0380, 0x0386, 0x038f, 0x03a1, 0x03a7, - 0x03ca, 0x03d3, 0x03d7, 0x03e4, 0x03ea, 0x03fa, 0x0410, 0x0418, - 0x041f, 0x0424, 0x042c, 0x0439, 0x0442, 0x0449, 0x0450, 0x045c, - 0x0461, 0x048c, 0x0490, 0x0494, 0x049b, 0x04a1, 0x04a7, 0x04af, - 0x04b8, 0x04c0, 0x04c5, 0x04d1, 0x04d9, 0x04e1, 0x04e7, 0x04fa, - // Entry 80 - BF - 0x0508, 0x0515, 0x051b, 0x0527, 0x0531, 0x0535, 0x053b, 0x0546, - 0x0553, 0x055c, 0x0563, 0x056a, 0x0572, 0x057d, 0x0585, 0x058a, - 0x0591, 0x0597, 0x059f, 0x05a9, 0x05b5, 0x05bf, 0x05cd, 0x05e4, - 0x05e8, 0x05fa, 0x0602, 0x060e, 0x062b, 0x0634, 0x063e, 0x0648, - 0x064d, 0x0656, 0x065d, 0x0663, 0x066a, 0x0672, 0x067b, 0x0682, - 0x0691, 0x0696, 0x06a3, 0x06aa, 0x06b3, 0x06be, 0x06c6, 0x06cb, - 0x06d0, 0x06d4, 0x06e1, 0x06e5, 0x06ec, 0x06f1, 0x0703, 0x0715, - 0x071e, 0x0726, 0x072d, 0x0744, 0x0752, 0x075b, 0x0770, 0x077a, - // Entry C0 - FF - 0x077f, 0x0787, 0x078c, 0x079b, 0x07a3, 0x07aa, 0x07b0, 0x07b6, - 0x07bc, 0x07ca, 0x07d8, 0x07e2, 0x07e7, 0x07ed, 0x07f6, 0x0802, - 0x080a, 0x081e, 0x0828, 0x0834, 0x083e, 0x0845, 0x084c, 0x0854, - 0x085d, 0x0873, 0x087e, 0x088a, 0x088f, 0x0898, 0x08a8, 0x08bc, - 0x08c0, 0x08d7, 0x08db, 0x08e5, 0x08ef, 0x08f6, 0x08ff, 0x090b, - 0x0912, 0x0917, 0x091e, 0x092f, 0x0935, 0x093b, 0x0943, 0x094a, - 0x0950, 0x0972, 0x097f, 0x098a, 0x0991, 0x099b, 0x09ae, 0x09c7, - 0x09d0, 0x09e9, 0x0a00, 0x0a07, 0x0a0e, 0x0a1d, 0x0a22, 0x0a28, - // Entry 100 - 13F - 0x0a2d, 0x0a34, 0x0a3d, 0x0a43, 0x0a4b, 0x0a5e, 0x0a63, 0x0a69, - 0x0a75, 0x0a84, 0x0a8b, 0x0a9d, 0x0aad, 0x0abd, 0x0ac7, 0x0ad6, - 0x0ae4, 0x0aec, 0x0afc, 0x0b03, 0x0b11, 0x0b1d, 0x0b2d, 0x0b3f, - 0x0b4a, 0x0b53, 0x0b67, 0x0b70, 0x0b74, 0x0b81, 0x0b91, 0x0b97, - 0x0ba7, 0x0bbc, 0x0bce, 0x0bce, 0x0bdc, -} // Size: 610 bytes - -const jaRegionStr string = "" + // Size: 4824 bytes - "アセンション島アンドラアラブ首長国連邦アフガニスタンアンティグア・バーブーダアンギラアルバニアアルメニアアンゴラ南極アルゼンチン米領サモアオース" + - "トリアオーストラリアアルバオーランド諸島アゼルバイジャンボスニア・ヘルツェゴビナバルバドスバングラデシュベルギーブルキナファソブルガリアバー" + - "レーンブルンジベナンサン・バルテルミーバミューダブルネイボリビアオランダ領カリブブラジルバハマブータンブーベ島ボツワナベラルーシベリーズカナ" + - "ダココス(キーリング)諸島コンゴ民主共和国(キンシャサ)中央アフリカ共和国コンゴ共和国(ブラザビル)スイスコートジボワールクック諸島チリカメ" + - "ルーン中国コロンビアクリッパートン島コスタリカキューバカーボベルデキュラソークリスマス島キプロスチェコドイツディエゴガルシア島ジブチデンマー" + - "クドミニカ国ドミニカ共和国アルジェリアセウタ・メリリャエクアドルエストニアエジプト西サハラエリトリアスペインエチオピア欧州連合ユーロ圏フィン" + - "ランドフィジーフォークランド諸島ミクロネシア連邦フェロー諸島フランスガボンイギリスグレナダジョージア仏領ギアナガーンジーガーナジブラルタルグ" + - "リーンランドガンビアギニアグアドループ赤道ギニアギリシャサウスジョージア・サウスサンドウィッチ諸島グアテマラグアムギニアビサウガイアナ中華人" + - "民共和国香港特別行政区ハード島・マクドナルド諸島ホンジュラスクロアチアハイチハンガリーカナリア諸島インドネシアアイルランドイスラエルマン島イ" + - "ンド英領インド洋地域イラクイランアイスランドイタリアジャージージャマイカヨルダン日本ケニアキルギスカンボジアキリバスコモロセントクリストファ" + - "ー・ネーヴィス北朝鮮韓国クウェートケイマン諸島カザフスタンラオスレバノンセントルシアリヒテンシュタインスリランカリベリアレソトリトアニアルク" + - "センブルクラトビアリビアモロッコモナコモルドバモンテネグロサン・マルタンマダガスカルマーシャル諸島マケドニアマリミャンマー (ビルマ)モンゴ" + - "ル中華人民共和国マカオ特別行政区北マリアナ諸島マルティニークモーリタニアモントセラトマルタモーリシャスモルディブマラウイメキシコマレーシアモ" + - "ザンビークナミビアニューカレドニアニジェールノーフォーク島ナイジェリアニカラグアオランダノルウェーネパールナウルニウエニュージーランドオマー" + - "ンパナマペルー仏領ポリネシアパプアニューギニアフィリピンパキスタンポーランドサンピエール島・ミクロン島ピトケアン諸島プエルトリコパレスチナ自" + - "治区ポルトガルパラオパラグアイカタールオセアニア周辺地域レユニオンルーマニアセルビアロシアルワンダサウジアラビアソロモン諸島セーシェルスーダ" + - "ンスウェーデンシンガポールセントヘレナスロベニアスバールバル諸島・ヤンマイエン島スロバキアシエラレオネサンマリノセネガルソマリアスリナム南ス" + - "ーダンサントメ・プリンシペエルサルバドルシント・マールテンシリアスワジランドトリスタン・ダ・クーニャタークス・カイコス諸島チャド仏領極南諸島" + - "トーゴタイタジキスタントケラウ東ティモールトルクメニスタンチュニジアトンガトルコトリニダード・トバゴツバル台湾タンザニアウクライナウガンダ合" + - "衆国領有小離島国際連合アメリカ合衆国ウルグアイウズベキスタンバチカン市国セントビンセント及びグレナディーン諸島ベネズエラ英領ヴァージン諸島米" + - "領ヴァージン諸島ベトナムバヌアツウォリス・フツナサモアコソボイエメンマヨット南アフリカザンビアジンバブエ不明な地域世界アフリカ北アメリカ大陸" + - "南アメリカオセアニア西アフリカ中央アメリカ東アフリカ北アフリカ中部アフリカ南部アフリカアメリカ大陸北アメリカカリブ東アジア南アジア東南アジア" + - "南ヨーロッパオーストララシアメラネシアミクロネシアポリネシアアジア中央アジア西アジアヨーロッパ東ヨーロッパ北ヨーロッパ西ヨーロッパラテンアメ" + - "リカ" - -var jaRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0015, 0x0021, 0x0039, 0x004e, 0x0072, 0x007e, 0x008d, - 0x009c, 0x00a8, 0x00ae, 0x00c0, 0x00cf, 0x00e1, 0x00f6, 0x00ff, - 0x0114, 0x012c, 0x0150, 0x015f, 0x0174, 0x0180, 0x0195, 0x01a4, - 0x01b3, 0x01bf, 0x01c8, 0x01e3, 0x01f2, 0x01fe, 0x020a, 0x0222, - 0x022e, 0x0237, 0x0243, 0x024f, 0x025b, 0x026a, 0x0276, 0x027f, - 0x029f, 0x02c8, 0x02e3, 0x0306, 0x030f, 0x0327, 0x0336, 0x033c, - 0x034b, 0x0351, 0x0360, 0x0378, 0x0387, 0x0393, 0x03a5, 0x03b4, - 0x03c6, 0x03d2, 0x03db, 0x03e4, 0x03ff, 0x0408, 0x0417, 0x0426, - // Entry 40 - 7F - 0x043b, 0x044d, 0x0465, 0x0474, 0x0483, 0x048f, 0x049b, 0x04aa, - 0x04b6, 0x04c5, 0x04d1, 0x04dd, 0x04ef, 0x04fb, 0x0516, 0x052e, - 0x0540, 0x054c, 0x0555, 0x0561, 0x056d, 0x057c, 0x058b, 0x059a, - 0x05a3, 0x05b5, 0x05ca, 0x05d6, 0x05df, 0x05f1, 0x0600, 0x060c, - 0x064b, 0x065a, 0x0663, 0x0675, 0x0681, 0x06ab, 0x06d2, 0x06e4, - 0x06f3, 0x06fc, 0x070b, 0x071d, 0x072f, 0x0741, 0x0750, 0x0759, - 0x0762, 0x077a, 0x0783, 0x078c, 0x079e, 0x07aa, 0x07b9, 0x07c8, - 0x07d4, 0x07da, 0x07e3, 0x07ef, 0x07fe, 0x080a, 0x0813, 0x0843, - // Entry 80 - BF - 0x084c, 0x0852, 0x0861, 0x0873, 0x0885, 0x088e, 0x089a, 0x08ac, - 0x08c7, 0x08d6, 0x08e2, 0x08eb, 0x08fa, 0x090f, 0x091b, 0x0924, - 0x0930, 0x0939, 0x0945, 0x0957, 0x096c, 0x097e, 0x0993, 0x09a2, - 0x09a8, 0x09c3, 0x09cf, 0x09fc, 0x0a11, 0x0a26, 0x0a38, 0x0a4a, - 0x0a53, 0x0a65, 0x0a74, 0x0a80, 0x0a8c, 0x0a9b, 0x0aad, 0x0ab9, - 0x0ad1, 0x0ae0, 0x0af5, 0x0b07, 0x0b16, 0x0b22, 0x0b31, 0x0b3d, - 0x0b46, 0x0b4f, 0x0b67, 0x0b73, 0x0b7c, 0x0b85, 0x0b9a, 0x0bb5, - 0x0bc4, 0x0bd3, 0x0be2, 0x0c09, 0x0c1e, 0x0c30, 0x0c48, 0x0c57, - // Entry C0 - FF - 0x0c60, 0x0c6f, 0x0c7b, 0x0c96, 0x0ca5, 0x0cb4, 0x0cc0, 0x0cc9, - 0x0cd5, 0x0cea, 0x0cfc, 0x0d0b, 0x0d17, 0x0d29, 0x0d3b, 0x0d4d, - 0x0d5c, 0x0d8c, 0x0d9b, 0x0dad, 0x0dbc, 0x0dc8, 0x0dd4, 0x0de0, - 0x0def, 0x0e0d, 0x0e22, 0x0e3d, 0x0e46, 0x0e58, 0x0e7c, 0x0e9d, - 0x0ea6, 0x0eb8, 0x0ec1, 0x0ec7, 0x0ed9, 0x0ee5, 0x0ef7, 0x0f0f, - 0x0f1e, 0x0f27, 0x0f30, 0x0f4e, 0x0f57, 0x0f5d, 0x0f6c, 0x0f7b, - 0x0f87, 0x0f9f, 0x0fab, 0x0fc0, 0x0fcf, 0x0fe4, 0x0ff6, 0x102f, - 0x103e, 0x1059, 0x1074, 0x1080, 0x108c, 0x10a4, 0x10ad, 0x10b6, - // Entry 100 - 13F - 0x10c2, 0x10ce, 0x10dd, 0x10e9, 0x10f8, 0x1107, 0x110d, 0x1119, - 0x112e, 0x113d, 0x114c, 0x115b, 0x116d, 0x117c, 0x118b, 0x119d, - 0x11af, 0x11c1, 0x11d0, 0x11d9, 0x11e5, 0x11f1, 0x1200, 0x1212, - 0x122a, 0x1239, 0x124b, 0x125a, 0x1263, 0x1272, 0x127e, 0x128d, - 0x129f, 0x12b1, 0x12c3, 0x12c3, 0x12d8, -} // Size: 610 bytes - -const kaRegionStr string = "" + // Size: 9460 bytes - "ამაღლების კუნძულიანდორაარაბთა გაერთიანებული საამიროებიავღანეთიანტიგუა და" + - " ბარბუდაანგვილაალბანეთისომხეთიანგოლაანტარქტიკაარგენტინაამერიკის სამოაავს" + - "ტრიაავსტრალიაარუბაალანდის კუნძულებიაზერბაიჯანიბოსნია და ჰერცეგოვინაბარ" + - "ბადოსიბანგლადეშიბელგიაბურკინა-ფასობულგარეთიბაჰრეინიბურუნდიბენინისენ-ბა" + - "რთელმიბერმუდაბრუნეიბოლივიაკარიბის ნიდერლანდებიბრაზილიაბაჰამის კუნძულებ" + - "იბუტანიბუვებოტსვანაბელარუსიბელიზიკანადაქოქოსის (კილინგის) კუნძულებიკონ" + - "გო - კინშასაცენტრალური აფრიკის რესპუბლიკაკონგო - ბრაზავილიშვეიცარიაკოტ" + - "-დივუარიკუკის კუნძულებიჩილეკამერუნიჩინეთიკოლუმბიაკლიპერტონის კუნძულიკოსტ" + - "ა-რიკაკუბაკაბო-ვერდეკიურასაოშობის კუნძულიკვიპროსიჩეხეთიგერმანიადიეგო-გ" + - "არსიაჯიბუტიდანიადომინიკადომინიკელთა რესპუბლიკაალჟირისეუტა და მელილაეკვ" + - "ადორიესტონეთიეგვიპტედასავლეთ საჰარაერიტრეაესპანეთიეთიოპიაევროკავშირიევ" + - "როზონაფინეთიფიჯიფოლკლენდის კუნძულებიმიკრონეზიაფარერის კუნძულებისაფრანგ" + - "ეთიგაბონიგაერთიანებული სამეფოგრენადასაქართველოსაფრანგეთის გვიანაგერნსი" + - "განაგიბრალტარიგრენლანდიაგამბიაგვინეაგვადელუპაეკვატორული გვინეასაბერძნე" + - "თისამხრეთ ჯორჯია და სამხრეთ სენდვიჩის კუნძულებიგვატემალაგუამიგვინეა-ბი" + - "საუგაიანაჰონკონგის სპეციალური ადმინისტრაციული რეგიონი ჩინეთიჰერდი და მ" + - "აკდონალდის კუნძულებიჰონდურასიხორვატიაჰაიტიუნგრეთიკანარის კუნძულებიინდო" + - "ნეზიაირლანდიაისრაელიმენის კუნძულიინდოეთიბრიტანეთის ტერიტორია ინდოეთის " + - "ოკეანეშიერაყიირანიისლანდიაიტალიაჯერსიიამაიკაიორდანიაიაპონიაკენიაყირგიზ" + - "ეთიკამბოჯაკირიბატიკომორის კუნძულებისენტ-კიტსი და ნევისიჩრდილოეთ კორეას" + - "ამხრეთ კორეაქუვეითიკაიმანის კუნძულებიყაზახეთილაოსილიბანისენტ-ლუსიალიხტ" + - "ენშტაინიშრი-ლანკალიბერიალესოთოლიტვალუქსემბურგილატვიალიბიამაროკომონაკომ" + - "ოლდოვამონტენეგროსენ-მარტენიმადაგასკარიმარშალის კუნძულებიმაკედონიამალიმ" + - "იანმარი (ბირმა)მონღოლეთიმაკაოს სპეციალური ადმინისტრაციული რეგიონი ჩინე" + - "თიჩრდილოეთ მარიანას კუნძულებიმარტინიკამავრიტანიამონსერატიმალტამავრიკიმ" + - "ალდივებიმალავიმექსიკამალაიზიამოზამბიკინამიბიაახალი კალედონიანიგერინორფ" + - "ოლკის კუნძულინიგერიანიკარაგუანიდერლანდებინორვეგიანეპალინაურუნიუეახალი " + - "ზელანდიაომანიპანამაპერუსაფრანგეთის პოლინეზიაპაპუა-ახალი გვინეაფილიპინე" + - "ბიპაკისტანიპოლონეთისენ-პიერი და მიკელონიპიტკერნის კუნძულებიპუერტო-რიკო" + - "პალესტინის ტერიტორიებიპორტუგალიაპალაუპარაგვაიკატარიშორეული ოკეანეთირეუ" + - "ნიონირუმინეთისერბეთირუსეთირუანდასაუდის არაბეთისოლომონის კუნძულებისეიშე" + - "ლის კუნძულებისუდანიშვედეთისინგაპურიწმინდა ელენეს კუნძულისლოვენიაშპიცბე" + - "რგენი და იან-მაიენისლოვაკეთისიერა-ლეონესან-მარინოსენეგალისომალისურინამ" + - "ისამხრეთ სუდანისან-ტომე და პრინსიპისალვადორისინტ-მარტენისირიასვაზილენდ" + - "იტრისტან-და-კუნიათერქს-ქაიქოსის კუნძულებიჩადიფრანგული სამხრეთის ტერიტო" + - "რიებიტოგოტაილანდიტაჯიკეთიტოკელაუტიმორ-ლესტეთურქმენეთიტუნისიტონგათურქეთ" + - "იტრინიდადი და ტობაგოტუვალუტაივანიტანზანიაუკრაინაუგანდააშშ-ის შორეული კ" + - "უნძულებიგაეროამერიკის შეერთებული შტატებიურუგვაიუზბეკეთიქალაქი ვატიკანი" + - "სენტ-ვინსენტი და გრენადინებივენესუელაბრიტანეთის ვირჯინის კუნძულებიაშშ-" + - "ის ვირჯინის კუნძულებივიეტნამივანუატუუოლისი და ფუტუნასამოაკოსოვოიემენიმ" + - "აიოტასამხრეთ აფრიკის რესპუბლიკაზამბიაზიმბაბვეუცნობი რეგიონიმსოფლიოაფრი" + - "კაჩრდილოეთ ამერიკასამხრეთ ამერიკაოკეანეთიდასავლეთ აფრიკაცენტრალური ამე" + - "რიკააღმოსავლეთ აფრიკაჩრდილოეთ აფრიკაშუა აფრიკასამხრეთ აფრიკაამერიკებია" + - "მერიკის ჩრდილოეთიკარიბის ზღვააღმოსავლეთ აზიასამხრეთ აზიასამხრეთ-აღმოსა" + - "ვლეთ აზიასამხრეთ ევროპაავსტრალაზიამელანეზიამიკრონეზიის რეგიონიპოლინეზი" + - "ააზიაცენტრალური აზიადასავლეთ აზიაევროპააღმოსავლეთ ევროპაჩრდილოეთ ევროპ" + - "ადასავლეთ ევროპალათინური ამერიკა" - -var kaRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0031, 0x0043, 0x009c, 0x00b4, 0x00e6, 0x00fb, 0x0113, - 0x0128, 0x013a, 0x0158, 0x0173, 0x019b, 0x01b0, 0x01cb, 0x01da, - 0x020b, 0x022c, 0x0267, 0x0282, 0x02a0, 0x02b2, 0x02d4, 0x02ef, - 0x0307, 0x031c, 0x032e, 0x0350, 0x0365, 0x0377, 0x038c, 0x03c6, - 0x03de, 0x040f, 0x0421, 0x042d, 0x0445, 0x045d, 0x046f, 0x0481, - 0x04cd, 0x04f4, 0x0547, 0x0574, 0x058f, 0x05ae, 0x05d9, 0x05e5, - 0x05fd, 0x060f, 0x0627, 0x065e, 0x067a, 0x0686, 0x06a2, 0x06ba, - 0x06df, 0x06f7, 0x0709, 0x0721, 0x0743, 0x0755, 0x0764, 0x077c, - // Entry 40 - 7F - 0x07bc, 0x07ce, 0x07f7, 0x080f, 0x0827, 0x083c, 0x0867, 0x087c, - 0x0894, 0x08a9, 0x08ca, 0x08e2, 0x08f4, 0x0900, 0x093a, 0x0958, - 0x0989, 0x09a7, 0x09b9, 0x09f3, 0x0a08, 0x0a26, 0x0a5a, 0x0a6c, - 0x0a78, 0x0a96, 0x0ab4, 0x0ac6, 0x0ad8, 0x0af3, 0x0b24, 0x0b42, - 0x0bbf, 0x0bda, 0x0be9, 0x0c0b, 0x0c1d, 0x0cae, 0x0d02, 0x0d1d, - 0x0d35, 0x0d44, 0x0d59, 0x0d8a, 0x0da5, 0x0dbd, 0x0dd2, 0x0df7, - 0x0e0c, 0x0e78, 0x0e87, 0x0e96, 0x0eae, 0x0ec0, 0x0ecf, 0x0ee4, - 0x0efc, 0x0f11, 0x0f20, 0x0f3b, 0x0f50, 0x0f68, 0x0f99, 0x0fcf, - // Entry 80 - BF - 0x0ff7, 0x101c, 0x1031, 0x1065, 0x107d, 0x108c, 0x109e, 0x10ba, - 0x10de, 0x10f7, 0x110c, 0x111e, 0x112d, 0x114e, 0x1160, 0x116f, - 0x1181, 0x1193, 0x11a8, 0x11c6, 0x11e5, 0x1206, 0x123a, 0x1255, - 0x1261, 0x128b, 0x12a6, 0x132e, 0x137b, 0x1396, 0x13b4, 0x13cf, - 0x13de, 0x13f3, 0x140e, 0x1420, 0x1435, 0x144d, 0x1468, 0x147d, - 0x14a8, 0x14ba, 0x14eb, 0x1500, 0x151b, 0x153f, 0x1557, 0x1569, - 0x1578, 0x1584, 0x15ac, 0x15bb, 0x15cd, 0x15d9, 0x1616, 0x1648, - 0x1666, 0x1681, 0x1699, 0x16d2, 0x1709, 0x1728, 0x1768, 0x1786, - // Entry C0 - FF - 0x1795, 0x17ad, 0x17bf, 0x17ed, 0x1805, 0x181d, 0x1832, 0x1844, - 0x1856, 0x187e, 0x18b5, 0x18e9, 0x18fb, 0x1910, 0x192b, 0x1966, - 0x197e, 0x19c3, 0x19de, 0x19fd, 0x1a19, 0x1a31, 0x1a43, 0x1a5b, - 0x1a83, 0x1ab9, 0x1ad4, 0x1af6, 0x1b05, 0x1b23, 0x1b4f, 0x1b93, - 0x1b9f, 0x1bf5, 0x1c01, 0x1c19, 0x1c31, 0x1c46, 0x1c65, 0x1c83, - 0x1c95, 0x1ca4, 0x1cb9, 0x1cee, 0x1d00, 0x1d15, 0x1d2d, 0x1d42, - 0x1d54, 0x1d96, 0x1da5, 0x1df2, 0x1e07, 0x1e1f, 0x1e4a, 0x1e98, - 0x1eb3, 0x1f06, 0x1f4b, 0x1f63, 0x1f78, 0x1fa4, 0x1fb3, 0x1fc5, - // Entry 100 - 13F - 0x1fd7, 0x1fe9, 0x2033, 0x2045, 0x205d, 0x2085, 0x209a, 0x20ac, - 0x20da, 0x2105, 0x211d, 0x2148, 0x217c, 0x21ad, 0x21d8, 0x21f4, - 0x221c, 0x2237, 0x226b, 0x228d, 0x22b8, 0x22da, 0x231b, 0x2343, - 0x2364, 0x237f, 0x23b6, 0x23d1, 0x23dd, 0x2408, 0x242d, 0x243f, - 0x2470, 0x249b, 0x24c6, 0x24c6, 0x24f4, -} // Size: 610 bytes - -const kkRegionStr string = "" + // Size: 6028 bytes - "Әскенжін аралыАндорраБіріккен Араб ӘмірліктеріАуғанстанАнтигуа және Барб" + - "удаАнгильяАлбанияАрменияАнголаАнтарктидаАргентинаАмерикалық СамоаАвстри" + - "яАвстралияАрубаАланд аралдарыӘзірбайжанБосния және ГерцеговинаБарбадосБ" + - "англадешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСен-БартелемиБерм" + - "уд аралдарыБрунейБоливияБонэйр, Синт-Эстатиус және СабаБразилияБагам ар" + - "алдарыБутанБуве аралыБотсванаБеларусьБелизКанадаКокос (Килинг) аралдары" + - "КонгоОрталық Африка РеспубликасыКонго-Браззавиль РеспубликасыШвейцарияК" + - "от-д’ИвуарКук аралдарыЧилиКамерунҚытайКолумбияКлиппертон аралыКоста-Рик" + - "аКубаКабо-ВердеКюрасаоРождество аралыКипрЧехияГерманияДиего-ГарсияДжибу" + - "тиДанияДоминикаДоминикан РеспубликасыАлжирСеута және МелильяЭквадорЭсто" + - "нияМысырБатыс СахараЭритреяИспанияЭфиопияЕуропалық ОдақЕуроаймақФинлянд" + - "ияФиджиФолкленд аралдарыМикронезияФарер аралдарыФранцияГабонҰлыбритания" + - "ГренадаГрузияФранцуз ГвианасыГернсиГанаГибралтарГренландияГамбияГвинеяГ" + - "ваделупаЭкваторлық ГвинеяГрекияОңтүстік Георгия және Оңтүстік Сандвич а" + - "ралдарыГватемалаГуамГвинея-БисауГайанаСянган АӘАХерд аралы және Макдона" + - "льд аралдарыГондурасХорватияГаитиВенгрияКанар аралдарыИндонезияИрландия" + - "ИзраильМэн аралыҮндістанҮнді мұхитындағы Британ аймағыИракИранИсландияИ" + - "талияДжерсиЯмайкаИорданияЖапонияКенияҚырғызстанКамбоджаКирибатиКомор ар" + - "алдарыСент-Китс және НевисСолтүстік КореяОңтүстік КореяКувейтКайман ара" + - "лдарыҚазақстанЛаосЛиванСент-ЛюсияЛихтенштейнШри-ЛанкаЛиберияЛесотоЛитва" + - "ЛюксембургЛатвияЛивияМароккоМонакоМолдоваЧерногорияСен-МартенМадагаскар" + - "Маршалл аралдарыМакедонияМалиМьянма (Бирма)МоңғолияМакао АӘАСолтүстік М" + - "ариана аралдарыМартиникаМавританияМонтсерратМальтаМаврикийМальдив аралд" + - "арыМалавиМексикаМалайзияМозамбикНамибияЖаңа КаледонияНигерНорфолк аралы" + - "НигерияНикарагуаНидерландНорвегияНепалНауруНиуэЖаңа ЗеландияОманПанамаП" + - "еруФранцуз ПолинезиясыПапуа — Жаңа ГвинеяФилиппин аралдарыПәкістанПольш" + - "аСен-Пьер және МикелонПиткэрн аралдарыПуэрто-РикоПалестина аймақтарыПор" + - "тугалияПалауПарагвайКатарАлыс ОкеанияРеюньонРумынияСербияРесейРуандаСау" + - "д АрабиясыСоломон аралдарыСейшель аралдарыСуданШвецияСингапурӘулие Елен" + - "а аралыСловенияШпицберген және Ян-МайенСловакияСьерра-ЛеонеСан-МариноСе" + - "негалСомалиСуринамОңтүстік СуданСан-Томе және ПринсипиСальвадорСинт-Мар" + - "тенСирияСвазилендТристан-да-КуньяТеркс және Кайкос аралдарыЧадФранцияны" + - "ң оңтүстік аймақтарыТогоТайландТәжікстанТокелауТимор-ЛестеТүрікменстанТ" + - "унисТонгаТүркияТринидад және ТобагоТувалуТайваньТанзанияУкраинаУгандаАҚ" + - "Ш-тың сыртқы кіші аралдарыБіріккен Ұлттар ҰйымыАмерика Құрама ШтаттарыУ" + - "ругвайӨзбекстанВатиканСент-Винсент және Гренадин аралдарыВенесуэлаБрита" + - "ндық Виргин аралдарыАҚШ-тың Виргин аралдарыВьетнамВануатуУоллис және Фу" + - "тунаСамоаКосовоЙеменМайоттаОңтүстік Африка РеспубликасыЗамбияЗимбабвеБе" + - "лгісіз аймақӘлемАфрикаСолтүстік АмерикаОңтүстік АмерикаОкеанияБатыс Афр" + - "икаОрталық АмерикаШығыс АфрикаСолтүстік АфрикаОрталық АфрикаОңтүстік Аф" + - "рикаСолтүстік және Оңтүстік АмерикаСолтүстік Америка (аймақ)КарибШығыс " + - "АзияОңтүстік АзияОңтүстік-Шығыс АзияОңтүстік ЕуропаАвстралазияМеланезия" + - "Микронезия аймағыПолинезияАзияОрталық АзияБатыс АзияЕуропаШығыс ЕуропаС" + - "олтүстік ЕуропаБатыс ЕуропаЛатын Америкасы" - -var kkRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001b, 0x0029, 0x0059, 0x006b, 0x0091, 0x009f, 0x00ad, - 0x00bb, 0x00c7, 0x00db, 0x00ed, 0x010c, 0x011a, 0x012c, 0x0136, - 0x0151, 0x0165, 0x0191, 0x01a1, 0x01b3, 0x01c1, 0x01d8, 0x01e8, - 0x01f6, 0x0204, 0x020e, 0x0227, 0x0244, 0x0250, 0x025e, 0x0297, - 0x02a7, 0x02c2, 0x02cc, 0x02df, 0x02ef, 0x02ff, 0x0309, 0x0315, - 0x033f, 0x0349, 0x037d, 0x03b5, 0x03c7, 0x03dd, 0x03f4, 0x03fc, - 0x040a, 0x0414, 0x0424, 0x0443, 0x0456, 0x045e, 0x0471, 0x047f, - 0x049c, 0x04a4, 0x04ae, 0x04be, 0x04d5, 0x04e3, 0x04ed, 0x04fd, - // Entry 40 - 7F - 0x0528, 0x0532, 0x0554, 0x0562, 0x0570, 0x057a, 0x0591, 0x059f, - 0x05ad, 0x05bb, 0x05d6, 0x05e8, 0x05fa, 0x0604, 0x0625, 0x0639, - 0x0654, 0x0662, 0x066c, 0x0682, 0x0690, 0x069c, 0x06bb, 0x06c7, - 0x06cf, 0x06e1, 0x06f5, 0x0701, 0x070d, 0x071f, 0x0740, 0x074c, - 0x07a5, 0x07b7, 0x07bf, 0x07d6, 0x07e2, 0x07f5, 0x0837, 0x0847, - 0x0857, 0x0861, 0x086f, 0x088a, 0x089c, 0x08ac, 0x08ba, 0x08cb, - 0x08db, 0x0914, 0x091c, 0x0924, 0x0934, 0x0940, 0x094c, 0x0958, - 0x0968, 0x0976, 0x0980, 0x0994, 0x09a4, 0x09b4, 0x09cf, 0x09f4, - // Entry 80 - BF - 0x0a11, 0x0a2c, 0x0a38, 0x0a55, 0x0a67, 0x0a6f, 0x0a79, 0x0a8c, - 0x0aa2, 0x0ab3, 0x0ac1, 0x0acd, 0x0ad7, 0x0aeb, 0x0af7, 0x0b01, - 0x0b0f, 0x0b1b, 0x0b29, 0x0b3d, 0x0b50, 0x0b64, 0x0b83, 0x0b95, - 0x0b9d, 0x0bb6, 0x0bc6, 0x0bd7, 0x0c09, 0x0c1b, 0x0c2f, 0x0c43, - 0x0c4f, 0x0c5f, 0x0c7e, 0x0c8a, 0x0c98, 0x0ca8, 0x0cb8, 0x0cc6, - 0x0ce1, 0x0ceb, 0x0d04, 0x0d12, 0x0d24, 0x0d36, 0x0d46, 0x0d50, - 0x0d5a, 0x0d62, 0x0d7b, 0x0d83, 0x0d8f, 0x0d97, 0x0dbc, 0x0de0, - 0x0e01, 0x0e11, 0x0e1d, 0x0e44, 0x0e63, 0x0e78, 0x0e9d, 0x0eb1, - // Entry C0 - FF - 0x0ebb, 0x0ecb, 0x0ed5, 0x0eec, 0x0efa, 0x0f08, 0x0f14, 0x0f1e, - 0x0f2a, 0x0f43, 0x0f62, 0x0f81, 0x0f8b, 0x0f97, 0x0fa7, 0x0fc7, - 0x0fd7, 0x1004, 0x1014, 0x102b, 0x103e, 0x104c, 0x1058, 0x1066, - 0x1081, 0x10aa, 0x10bc, 0x10d1, 0x10db, 0x10ed, 0x110b, 0x113c, - 0x1142, 0x117a, 0x1182, 0x1190, 0x11a2, 0x11b0, 0x11c5, 0x11dd, - 0x11e7, 0x11f1, 0x11fd, 0x1223, 0x122f, 0x123d, 0x124d, 0x125b, - 0x1267, 0x129b, 0x12c3, 0x12ef, 0x12fd, 0x130f, 0x131d, 0x135f, - 0x1371, 0x13a1, 0x13cc, 0x13da, 0x13e8, 0x140a, 0x1414, 0x1420, - // Entry 100 - 13F - 0x142a, 0x1438, 0x146e, 0x147a, 0x148a, 0x14a5, 0x14ad, 0x14b9, - 0x14da, 0x14f9, 0x1507, 0x151e, 0x153b, 0x1552, 0x1571, 0x158c, - 0x15a9, 0x15e4, 0x1612, 0x161c, 0x162f, 0x1648, 0x166c, 0x1689, - 0x169f, 0x16b1, 0x16d2, 0x16e4, 0x16ec, 0x1703, 0x1716, 0x1722, - 0x1739, 0x1758, 0x176f, 0x176f, 0x178c, -} // Size: 610 bytes - -const kmRegionStr string = "" + // Size: 9122 bytes - "កោះ\u200bអាសេនសិនអង់ដូរ៉ាអេមីរ៉ាត\u200bអារ៉ាប់\u200bរួមអាហ្វហ្គានីស្ថានអ" + - "ង់ទីហ្គា និង បាប៊ុយដាអង់ហ្គីឡាអាល់បានីអាមេនីអង់ហ្គោឡាអង់តាក់ទិកអាហ្សង់" + - "ទីនសាម័រ អាមេរិកាំងអូទ្រីសអូស្ត្រាលីអារូបាកោះ\u200bអាឡង់អាស៊ែបៃហ្សង់បូ" + - "ស្នី និងហឺហ្សីហ្គូវីណាបាបាដុសបង់ក្លាដែសបែលហ្ស៊ិកបួគីណាហ្វាសូប៊ុលហ្គារី" + - "បារ៉ែនប៊ូរុនឌីបេណាំងសាំង\u200bបាថេឡេមីប៊ឺមុយដាព្រុយណេបូលីវីហូឡង់ ការ៉ា" + - "ប៊ីនប្រេស៊ីលបាហាម៉ាប៊ូតង់កោះ\u200bប៊ូវ៉េតបុតស្វាណាបេឡារុសបេលីកាណាដាកោះ" + - "\u200bកូកូស (គីលីង)កុងហ្គោ- គីនស្ហាសាសាធារណរដ្ឋអាហ្វ្រិកកណ្ដាលកុងហ្គោ - " + - "ប្រាហ្សាវីលស្វីសកូតឌីវ័រកោះ\u200bខូកស៊ីលីកាមេរូនចិនកូឡុំប៊ីកោះ\u200bឃ្" + - "លីភឺតុនកូស្តារីកាគុយបាកាប់វែរកូរ៉ាកៅកោះ\u200bគ្រីស្មាសស៊ីបឆែគាអាល្លឺម៉" + - "ង់ឌៀហ្គោហ្គាស៊ីជីប៊ូទីដាណឺម៉ាកដូមីនីកសាធារណរដ្ឋ\u200bដូមីនីកអាល់ហ្សេរី" + - "ជឺតា និង\u200bម៉េលីឡាអេក្វាទ័រអេស្តូនីអេហ្ស៊ីបសាហារ៉ាខាងលិចអេរីត្រេអេស" + - "្ប៉ាញអេត្យូពីសហភាព\u200bអឺរ៉ុបតំបន់ចាយលុយអឺរ៉ូហ្វាំងឡង់ហ្វីជីកោះ\u200b" + - "ហ្វក់ឡែនមីក្រូណេស៊ីកោះ\u200bហ្វារ៉ូបារាំងហ្គាបុងចក្រភព\u200bអង់គ្លេសហ្" + - "គ្រើណាដហ្សកហ្ស៊ីហ្គីអាណា បារាំងហ្គេនស៊ីហ្គាណាហ្ស៊ីប្រាល់តាហ្គ្រោអង់ឡង់" + - "ហ្គំប៊ីហ្គីណេហ្គោដឺឡុបហ្គីណេអេក្វាទ័រក្រិកកោះ\u200bហ្សកហ្ស៊ី\u200bខាងត" + - "្បូង និង សង់វិច\u200bខាងត្បូងក្វាតេម៉ាឡាហ្គាំហ្គីណេប៊ីស្សូហ្គីយ៉ានហុងក" + - "ុងកោះ\u200bហឺដ និង\u200bម៉ាក់ដូណាល់ហុងឌូរ៉ាសក្រូអាស៊ីហៃទីហុងគ្រីកោះ" + - "\u200bកាណារីឥណ្ឌូណេស៊ីអៀរឡង់អ៊ីស្រាអែលអែលអុហ្វមែនឥណ្ឌាដែនដី\u200bអង់គ្លេ" + - "ស\u200bនៅ\u200bមហា\u200bសមុទ្រ\u200bឥណ្ឌាអ៊ីរ៉ាក់អ៊ីរ៉ង់អ៊ីស្លង់អ៊ីតាល" + - "ីជឺស៊ីហ្សាម៉ាអ៊ីកហ៊្សកដានីជប៉ុនកេនយ៉ាកៀហ្ស៊ីស៊ីស្ថានកម្ពុជាគិរីបាទីកូម" + - "័រសាំង\u200bគីត និង ណេវីសកូរ៉េ\u200bខាង\u200bជើងកូរ៉េ\u200bខាង\u200bត្" + - "បូងកូវ៉ែតកោះ\u200bកៃម៉ង់កាហ្សាក់ស្ថានឡាវលីបង់សាំងលូស៊ីលិចតិនស្ដាញស្រីល" + - "ង្កាលីបេរីយ៉ាឡេសូតូលីទុយអានីលុចសំបួឡេតូនីលីប៊ីម៉ារ៉ុកម៉ូណាកូម៉ុលដាវីម៉" + - "ុងតេណេហ្គ្រោសាំង\u200bម៉ាទីនម៉ាដាហ្គាស្កាកោះ\u200bម៉ាស់សលម៉ាសេដ្វានម៉ា" + - "លីមីយ៉ាន់ម៉ា (ភូមា)ម៉ុងហ្គោលីម៉ាកាវ តំបន់រដ្ឋបាលពិសេសចិនកោះ\u200bម៉ារី" + - "ណា\u200bខាង\u200bជើងម៉ាទីនីកម៉ូរីតានីម៉ុងស៊ែរ៉ាម៉ាល់ត៍ម៉ូរីសម៉ាល់ឌីវម៉" + - "ាឡាវីម៉ិកស៊ិកម៉ាឡេស៊ីម៉ូសំប៊ិកណាមីប៊ីនូវែល\u200bកាឡេដូនីនីហ្សេកោះ" + - "\u200bណ័រហ្វក់នីហ្សេរីយ៉ានីការ៉ាហ្គាហូឡង់ន័រវែសនេប៉ាល់ណូរូណៀនូវែល\u200bស" + - "េឡង់អូម៉ង់ប៉ាណាម៉ាប៉េរូប៉ូលី\u200bណេស៊ី\u200bបារាំងប៉ាពូអាស៊ី\u200bនូវ" + - "ែលហ្គីណេហ្វីលីពីនប៉ាគីស្ថានប៉ូឡូញសង់ព្យែរ និង\u200bមីគីឡុងកោះ\u200bភីត" + - "កានព័រតូរីកូដែន\u200bដីប៉ាលេស្ទីនព័រទុយហ្គាល់ផៅឡូប៉ារ៉ាហ្គាយកាតាតំបន់ជ" + - "ាយអូសេអានីរេអុយញ៉ុងរូម៉ានីសែប៊ីរុស្ស៊ីរវ៉ាន់ដាអារ៉ាប៊ីសាអូឌីតកោះ\u200b" + - "សូឡូម៉ុងសីស្ហែលស៊ូដង់ស៊ុយអែតសិង្ហបុរីសង់\u200bហេឡេណាស្លូវេនីស្វាលបាដ ន" + - "ិង ហ្សង់ម៉ាយេនស្លូវ៉ាគីសៀរ៉ាឡេអូនសាន\u200bម៉ារីណូសេណេហ្គាល់សូម៉ាលីសូរី" + - "ណាមស៊ូដង់\u200bខាង\u200bត្បូងសៅតូម៉េ និង ប្រាំងស៊ីបអែលសាល់វ៉ាឌ័រសីង" + - "\u200bម៉ាធីនស៊ីរីស្វាស៊ីឡង់ទ្រីស្តង់\u200bដា\u200bចូនហាកោះ\u200bទួគ និង " + - "កៃកូសឆាដដែនដី\u200bបារាំង\u200bនៅ\u200bភាគខាងត្បូងតូហ្គោថៃតាហ្ស៊ីគីស្ថ" + - "ានតូខេឡៅទីម័រលីសតួកម៉េនីស្ថានទុយនីស៊ីតុងហ្គាតួកគីទ្រីនីដាត និង\u200bតូ" + - "បាហ្គោទូវ៉ាលូតៃវ៉ាន់តង់សានីអ៊ុយក្រែនអ៊ូហ្គង់ដាកោះ\u200bអៅឡាយីង\u200bអា" + - "មេរិកអង្គការសហប្រជាជាតិសហរដ្ឋអាមេរិកអ៊ុយរូហ្គាយអ៊ូសបេគីស្ថានបុរី\u200b" + - "វ៉ាទីកង់សាំង\u200bវ៉ាំងសង់ និង ហ្គ្រេណាឌីនវ៉េណេស៊ុយអេឡាកោះ\u200bវឺជិន" + - "\u200bចក្រភព\u200bអង់គ្លេសកោះ\u200bវឺជីន\u200bអាមេរិកវៀតណាមវ៉ានូទូវ៉ាលីស" + - " និង\u200bហ្វូទូណាសាម័រកូសូវ៉ូយេម៉ែនម៉ាយុតអាហ្វ្រិកខាងត្បូងសំប៊ីស៊ីមបាវ៉" + - "េតំបន់មិនស្គាល់ពិភពលោកអាហ្វ្រិកអាមេរិក\u200bខាង\u200bជើងអាមេរិក\u200bខ" + - "ាង\u200bត្បូងអូសេអានីអាហ្វ្រិក\u200bខាង\u200bលិចអាមេរិក\u200bកណ្ដាលអាហ" + - "្វ្រិកខាងកើតអាហ្វ្រិក\u200bខាង\u200bជើងអាហ្វ្រិក\u200bកណ្តាលអាហ្វ្រិកភ" + - "ាគខាងត្បូងអាមេរិកអាមេរិក\u200bភាគ\u200bខាង\u200bជើងការ៉ាប៊ីនអាស៊ី" + - "\u200bខាង\u200bកើតអាស៊ី\u200bខាង\u200bត្បូងអាស៊ីអាគ្នេយ៍អឺរ៉ុប\u200bខាង" + - "\u200bត្បូងអូស្ត្រាឡាស៊ីមេឡាណេស៊ីតំបន់\u200bមីក្រូណេស៊ីប៉ូលីណេស៊ីអាស៊ីអា" + - "ស៊ី\u200bកណ្ដាលអាស៊ី\u200bខាង\u200bលិចអឺរ៉ុបអឺរ៉ុប\u200bខាង\u200bកើតអឺ" + - "រ៉ុប\u200bខាង\u200bជើងអឺរ៉ុប\u200bខាង\u200bលិចអាមេរិក\u200bឡាទីន" - -var kmRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0024, 0x003c, 0x0078, 0x00a8, 0x00e6, 0x0101, 0x0119, - 0x012b, 0x0146, 0x0164, 0x0182, 0x01b0, 0x01c5, 0x01e3, 0x01f5, - 0x0210, 0x0234, 0x027a, 0x028f, 0x02ad, 0x02c8, 0x02ec, 0x030a, - 0x031c, 0x0334, 0x0346, 0x036d, 0x0385, 0x039a, 0x03ac, 0x03d7, - 0x03ef, 0x0404, 0x0416, 0x0437, 0x0452, 0x0467, 0x0473, 0x0485, - 0x04b2, 0x04e4, 0x052f, 0x0568, 0x0577, 0x058f, 0x05a4, 0x05b3, - 0x05c8, 0x05d1, 0x05e9, 0x0610, 0x062e, 0x063d, 0x0652, 0x0667, - 0x068e, 0x069a, 0x06a6, 0x06c4, 0x06eb, 0x0700, 0x0718, 0x072d, - // Entry 40 - 7F - 0x0763, 0x0781, 0x07af, 0x07ca, 0x07e2, 0x07fa, 0x0821, 0x0839, - 0x0851, 0x0869, 0x088d, 0x08bd, 0x08d8, 0x08ea, 0x090e, 0x092f, - 0x0950, 0x0962, 0x0977, 0x09a4, 0x09bf, 0x09da, 0x0a05, 0x0a1d, - 0x0a2f, 0x0a56, 0x0a7a, 0x0a8f, 0x0aa1, 0x0abc, 0x0ae9, 0x0af8, - 0x0b72, 0x0b93, 0x0ba2, 0x0bc9, 0x0be1, 0x0bf3, 0x0c36, 0x0c51, - 0x0c6c, 0x0c78, 0x0c8d, 0x0cab, 0x0cc9, 0x0cdb, 0x0cf9, 0x0d1a, - 0x0d29, 0x0d8f, 0x0da7, 0x0dbc, 0x0dd4, 0x0de9, 0x0df8, 0x0e19, - 0x0e34, 0x0e43, 0x0e55, 0x0e82, 0x0e97, 0x0eaf, 0x0ebe, 0x0ef0, - // Entry 80 - BF - 0x0f17, 0x0f44, 0x0f56, 0x0f74, 0x0f9b, 0x0fa4, 0x0fb3, 0x0fce, - 0x0fef, 0x100a, 0x1025, 0x1037, 0x1052, 0x1067, 0x1079, 0x1088, - 0x109d, 0x10b2, 0x10ca, 0x10f4, 0x1115, 0x113c, 0x115d, 0x117b, - 0x118a, 0x11b7, 0x11d5, 0x1224, 0x125d, 0x1275, 0x1290, 0x12ae, - 0x12c3, 0x12d5, 0x12ed, 0x1302, 0x131a, 0x1332, 0x134d, 0x1362, - 0x138c, 0x139e, 0x13c2, 0x13e3, 0x1404, 0x1413, 0x1425, 0x143a, - 0x1446, 0x144c, 0x146d, 0x147f, 0x1497, 0x14a6, 0x14dc, 0x151e, - 0x1539, 0x1557, 0x1569, 0x15a3, 0x15c1, 0x15dc, 0x160c, 0x1630, - // Entry C0 - FF - 0x163c, 0x165d, 0x1669, 0x1699, 0x16b4, 0x16c9, 0x16d8, 0x16ed, - 0x1705, 0x1732, 0x1756, 0x176b, 0x177d, 0x1792, 0x17ad, 0x17cb, - 0x17e3, 0x1827, 0x1842, 0x1860, 0x1881, 0x189f, 0x18b4, 0x18c9, - 0x18f9, 0x1937, 0x195e, 0x197c, 0x198b, 0x19a9, 0x19df, 0x1a0e, - 0x1a17, 0x1a68, 0x1a7a, 0x1a80, 0x1aaa, 0x1abc, 0x1ad4, 0x1afb, - 0x1b13, 0x1b28, 0x1b37, 0x1b77, 0x1b8c, 0x1ba1, 0x1bb6, 0x1bd1, - 0x1bef, 0x1c28, 0x1c5e, 0x1c85, 0x1ca6, 0x1ccd, 0x1cf4, 0x1d47, - 0x1d6e, 0x1db9, 0x1dec, 0x1dfe, 0x1e13, 0x1e4a, 0x1e59, 0x1e6e, - // Entry 100 - 13F - 0x1e80, 0x1e92, 0x1ec5, 0x1ed4, 0x1eef, 0x1f19, 0x1f2e, 0x1f49, - 0x1f76, 0x1fa9, 0x1fc1, 0x1ff4, 0x201e, 0x204b, 0x207e, 0x20ae, - 0x20ea, 0x20ff, 0x2138, 0x2153, 0x217a, 0x21a7, 0x21ce, 0x21fe, - 0x2225, 0x2240, 0x2273, 0x2291, 0x22a0, 0x22c4, 0x22eb, 0x22fd, - 0x2327, 0x2351, 0x237b, 0x237b, 0x23a2, -} // Size: 610 bytes - -const knRegionStr string = "" + // Size: 9421 bytes - "ಅಸೆನ್ಶನ್ ದ್ವೀಪಅಂಡೋರಾಯುನೈಟೆಡ್ ಅರಬ್ ಎಮಿರೇಟ್ಸ್ಅಫಘಾನಿಸ್ಥಾನಆಂಟಿಗುವಾ ಮತ್ತು ಬರ್" + - "ಬುಡಾಆಂಗ್ವಿಲ್ಲಾಅಲ್ಬೇನಿಯಾಆರ್ಮೇನಿಯಅಂಗೋಲಾಅಂಟಾರ್ಟಿಕಾಅರ್ಜೆಂಟಿನಾಅಮೇರಿಕನ್ ಸಮೋವ" + - "ಾಆಸ್ಟ್ರಿಯಾಆಸ್ಟ್ರೇಲಿಯಾಅರುಬಾಆಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳುಅಜರ್ಬೈಜಾನ್ಬೋಸ್ನಿಯಾ ಮತ್ತು ಹರ" + - "್ಜೆಗೋವಿನಾಬಾರ್ಬಡೋಸ್ಬಾಂಗ್ಲಾದೇಶಬೆಲ್ಜಿಯಮ್ಬುರ್ಕಿನಾ ಫಾಸೊಬಲ್ಗೇರಿಯಾಬಹ್ರೇನ್ಬುರು" + - "ಂಡಿಬೆನಿನ್ಸೇಂಟ್ ಬಾರ್ಥೆಲೆಮಿಬರ್ಮುಡಾಬ್ರೂನಿಬೊಲಿವಿಯಾಕೆರೀಬಿಯನ್ ನೆದರ್\u200cಲ್ಯ" + - "ಾಂಡ್ಸ್ಬ್ರೆಜಿಲ್ಬಹಾಮಾಸ್ಭೂತಾನ್ಬೋವೆಟ್ ದ್ವೀಪಬೋಟ್ಸ್\u200cವಾನಾಬೆಲಾರಸ್ಬೆಲಿಜ್ಕೆ" + - "ನಡಾಕೊಕೊಸ್ (ಕೀಲಿಂಗ್) ದ್ವೀಪಗಳುಕಾಂಗೋ - ಕಿನ್ಶಾಸಾಮಧ್ಯ ಆಫ್ರಿಕಾ ಗಣರಾಜ್ಯಕಾಂಗೋ " + - "- ಬ್ರಾಜಾವಿಲ್ಲೇಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್ಕೋತ್\u200c ದಿವಾರ್\u200dಕುಕ್ ದ್ವೀಪಗಳುಚಿಲಿಕ್" + - "ಯಾಮರೂನ್ಚೀನಾಕೊಲಂಬಿಯಾಕ್ಲಿಪ್ಪರ್\u200cಟಾನ್ ದ್ವೀಪಕೊಸ್ಟಾ ರಿಕಾಕ್ಯೂಬಾಕೇಪ್ ವರ್ಡ" + - "ೆಕುರಾಕಾವ್ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪಸೈಪ್ರಸ್ಝೆಕಿಯಾಜರ್ಮನಿಡೈಗೋ ಗಾರ್ಸಿಯಜಿಬೂಟಿಡೆನ್ಮಾರ್ಕ" + - "್ಡೊಮಿನಿಕಾಡೊಮೆನಿಕನ್ ರಿಪಬ್ಲಿಕ್ಅಲ್ಜೀರಿಯಸೆಯುಟಾ ಹಾಗೂ ಮೆಲಿಲ್ಲಾಈಕ್ವೆಡಾರ್ಎಸ್ಟೋ" + - "ನಿಯಾಈಜಿಪ್ಟ್ಪಶ್ಚಿಮ ಸಹಾರಾಎರಿಟ್ರಿಯಾಸ್ಪೇನ್ಇಥಿಯೋಪಿಯಾಯುರೋಪಿಯನ್ ಒಕ್ಕೂಟಯೂರೋಝೋನ" + - "್\u200cಫಿನ್\u200cಲ್ಯಾಂಡ್ಫಿಜಿಫಾಕ್\u200cಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳುಮೈಕ್ರೋನೇಶಿಯಾಫರೋ " + - "ದ್ವೀಪಗಳುಫ್ರಾನ್ಸ್ಗೆಬೊನ್ಬ್ರಿಟನ್/ಇಂಗ್ಲೆಂಡ್ಗ್ರೆನೆಡಾಜಾರ್ಜಿಯಾಫ್ರೆಂಚ್ ಗಯಾನಾಗು" + - "ರ್ನ್\u200cಸೆಘಾನಾಗಿಬ್ರಾಲ್ಟರ್ಗ್ರೀನ್\u200cಲ್ಯಾಂಡ್ಗ್ಯಾಂಬಿಯಾಗಿನಿಗುಡೆಲೋಪ್ಈಕ್" + - "ವೆಟೋರಿಯಲ್ ಗಿನಿಗ್ರೀಸ್ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಮತ್ತು ದಕ್ಷಿಣ ಸ್ಯಾಂಡ್\u200dವಿಚ್ ದ್ವ" + - "ೀಪಗಳುಗ್ವಾಟೆಮಾಲಾಗುವಾಮ್ಗಿನಿ-ಬಿಸ್ಸಾವ್ಗಯಾನಾಹಾಂಗ್ ಕಾಂಗ್ SAR ಚೈನಾಹರ್ಡ್ ಮತ್ತು" + - " ಮ್ಯಾಕ್\u200cಡೋನಾಲ್ಡ್ ದ್ವೀಪಗಳುಹೊಂಡುರಾಸ್ಕ್ರೊಯೇಷಿಯಾಹೈಟಿಹಂಗೇರಿಕ್ಯಾನರಿ ದ್ವೀಪ" + - "ಗಳುಇಂಡೋನೇಶಿಯಾಐರ್ಲೆಂಡ್ಇಸ್ರೇಲ್ಐಲ್ ಆಫ್ ಮ್ಯಾನ್ಭಾರತಬ್ರಿಟೀಷ್ ಹಿಂದೂ ಮಹಾಸಾಗರದ " + - "ಪ್ರದೇಶಇರಾಕ್ಇರಾನ್ಐಸ್\u200cಲ್ಯಾಂಡ್ಇಟಲಿಜೆರ್ಸಿಜಮೈಕಾಜೋರ್ಡಾನ್ಜಪಾನ್ಕೀನ್ಯಾಕಿರ್" + - "ಗಿಸ್ಥಾನ್ಕಾಂಬೋಡಿಯಾಕಿರಿಬಾಟಿಕೊಮೊರೊಸ್ಸೇಂಟ್ ಕಿಟ್ಸ್ ಮತ್ತು ನೆವಿಸ್ಉತ್ತರ ಕೊರಿಯಾ" + - "ದಕ್ಷಿಣ ಕೊರಿಯಾಕುವೈತ್ಕೇಮನ್ ದ್ವೀಪಗಳುಕಝಾಕಿಸ್ಥಾನ್ಲಾವೋಸ್ಲೆಬನಾನ್ಸೇಂಟ್ ಲೂಸಿಯಾಲ" + - "ಿಚೆನ್\u200cಸ್ಟೈನ್ಶ್ರೀಲಂಕಾಲಿಬೇರಿಯಾಲೆಸೊಥೊಲಿಥುವೇನಿಯಾಲಕ್ಸೆಂಬರ್ಗ್ಲಾಟ್ವಿಯಾಲಿ" + - "ಬಿಯಾಮೊರಾಕ್ಕೊಮೊನಾಕೊಮೊಲ್ಡೋವಾಮೊಂಟೆನೆಗ್ರೋಸೇಂಟ್ ಮಾರ್ಟಿನ್ಮಡಗಾಸ್ಕರ್ಮಾರ್ಷಲ್ ದ್" + - "ವೀಪಗಳುಮ್ಯಾಸಿಡೋನಿಯಾಮಾಲಿಮಯನ್ಮಾರ್ (ಬರ್ಮಾ)ಮಂಗೋಲಿಯಾಮಕಾವು SAR ಚೈನಾಉತ್ತರ ಮರಿಯ" + - "ಾನಾ ದ್ವೀಪಗಳುಮಾರ್ಟಿನಿಕ್ಮಾರಿಟೇನಿಯಾಮಾಂಟ್\u200cಸೆರಟ್ಮಾಲ್ಟಾಮಾರಿಷಸ್ಮಾಲ್ಡೀವ್ಸ" + - "್ಮಲಾವಿಮೆಕ್ಸಿಕೊಮಲೇಶಿಯಾಮೊಜಾಂಬಿಕ್ನಮೀಬಿಯಾನ್ಯೂ ಕ್ಯಾಲಿಡೋನಿಯಾನೈಜರ್ನಾರ್ಫೋಕ್ ದ್" + - "ವೀಪನೈಜೀರಿಯಾನಿಕಾರಾಗುವಾನೆದರ್\u200cಲ್ಯಾಂಡ್ಸ್ನಾರ್ವೆನೇಪಾಳನೌರುನಿಯುನ್ಯೂಜಿಲೆಂಡ" + - "್ಓಮನ್ಪನಾಮಾಪೆರುಫ್ರೆಂಚ್ ಪಾಲಿನೇಷ್ಯಾಪಪುವಾ ನ್ಯೂಗಿನಿಯಾಫಿಲಿಫೈನ್ಸ್ಪಾಕಿಸ್ತಾನಪೋಲ" + - "್ಯಾಂಡ್ಸೇಂಟ್ ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ಪಿಟ್\u200cಕೈರ್ನ್ ದ್ವೀಪಗಳುಪ್ಯೂರ್ಟೋ ರಿಕ" + - "ೊಪ್ಯಾಲೇಸ್ಟೇನಿಯನ್ ಪ್ರದೇಶಗಳುಪೋರ್ಚುಗಲ್ಪಲಾವುಪರಾಗ್ವೇಖತಾರ್ಔಟ್ ಲೈಯಿಂಗ್ ಓಷಿಯಾನ" + - "ಿಯಾರಿಯೂನಿಯನ್ರೊಮೇನಿಯಾಸೆರ್ಬಿಯಾರಷ್ಯಾರುವಾಂಡಾಸೌದಿ ಅರೇಬಿಯಾಸಾಲೊಮನ್ ದ್ವೀಪಗಳುಸೀ" + - "ಶೆಲ್ಲೆಸ್ಸುಡಾನ್ಸ್ವೀಡನ್ಸಿಂಗಾಪುರ್ಸೇಂಟ್ ಹೆಲೆನಾಸ್ಲೋವೇನಿಯಾಸ್ವಾಲ್ಬಾರ್ಡ್ ಮತ್ತು" + - " ಜಾನ್ ಮೆಯನ್ಸ್ಲೊವಾಕಿಯಾಸಿಯೆರ್ರಾ ಲಿಯೋನ್ಸ್ಯಾನ್ ಮೆರಿನೋಸೆನೆಗಲ್ಸೊಮಾಲಿಯಾಸುರಿನಾಮ್" + - "ದಕ್ಷಿಣ ಸುಡಾನ್ಸಾವೋ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪಿಎಲ್ ಸಾಲ್ವೇಡಾರ್ಸಿಂಟ್ ಮಾರ್ಟೆನ್ಸಿರ" + - "ಿಯಾಸ್ವಾಜಿಲ್ಯಾಂಡ್ಟ್ರಿಸ್ತನ್ ಡಾ ಕುನ್ಹಾಟರ್ಕ್ಸ್ ಮತ್ತು ಕೈಕೋಸ್ ದ್ವೀಪಗಳುಚಾದ್ಫ್" + - "ರೆಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳುಟೋಗೋಥೈಲ್ಯಾಂಡ್ತಜಿಕಿಸ್ತಾನ್ಟೊಕೆಲಾವ್ಪೂರ್ವ ತಿಮೋರ್ತುರ್" + - "ಕಮೆನಿಸ್ತಾನ್ಟುನೀಶಿಯಟೊಂಗಾಟರ್ಕಿಟ್ರಿನಿಡಾಡ್ ಮತ್ತು ಟೊಬಾಗೊಟುವಾಲುತೈವಾನ್ತಾಂಜೇನಿ" + - "ಯಾಉಕ್ರೈನ್ಉಗಾಂಡಾಯುಎಸ್\u200c ಔಟ್\u200cಲೇಯಿಂಗ್ ದ್ವೀಪಗಳುಸಂಯುಕ್ತ ಸಂಸ್ಥಾನಗಳು" + - "ಅಮೇರಿಕಾ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನಉರುಗ್ವೆಉಜ್ಬೇಕಿಸ್ಥಾನ್ವ್ಯಾಟಿಕನ್ ಸಿಟಿಸೇಂಟ್. ವಿನ್ಸೆ" + - "ಂಟ್ ಮತ್ತು ಗ್ರೆನೆಡೈನ್ಸ್ವೆನೆಜುವೆಲಾಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳುಯು.ಎಸ್. ವರ್ಜಿ" + - "ನ್ ದ್ವೀಪಗಳುವಿಯೆಟ್ನಾಮ್ವನೌಟುವಾಲಿಸ್ ಮತ್ತು ಫುಟುನಾಸಮೋವಾಕೊಸೊವೊಯೆಮನ್ಮಯೊಟ್ಟೆದಕ" + - "್ಷಿಣ ಆಫ್ರಿಕಾಜಾಂಬಿಯಜಿಂಬಾಬ್ವೆಅಜ್ಞಾತ ಪ್ರದೇಶಪ್ರಪಂಚಆಫ್ರಿಕಾಉತ್ತರ ಅಮೇರಿಕಾದಕ್ಷ" + - "ಿಣ ಅಮೇರಿಕಾಓಶಿಯೇನಿಯಾಪಶ್ಚಿಮ ಆಫ್ರಿಕಾಮಧ್ಯ ಅಮೇರಿಕಾಪೂರ್ವ ಆಫ್ರಿಕಾಉತ್ತರ ಆಫ್ರಿಕ" + - "ಾಮಧ್ಯ ಆಫ್ರಿಕಾಆಫ್ರಿಕಾದ ದಕ್ಷಿಣ ಭಾಗಅಮೆರಿಕಾಸ್ಅಮೇರಿಕಾದ ಉತ್ತರ ಭಾಗಕೆರೀಬಿಯನ್ಪೂ" + - "ರ್ವ ಏಷ್ಯಾದಕ್ಷಿಣ ಏಷ್ಯಾಆಗ್ನೇಯ ಏಷ್ಯಾದಕ್ಷಿಣ ಯೂರೋಪ್ಆಸ್ಟ್ರೇಲೇಷ್ಯಾಮೆಲನೇಷಿಯಾಮೈ" + - "ಕ್ರೋನೇಶಿಯನ್ ಪ್ರದೇಶಪಾಲಿನೇಷ್ಯಾಏಷ್ಯಾಮಧ್ಯ ಏಷ್ಯಾಪಶ್ಚಿಮ ಏಷ್ಯಾಯೂರೋಪ್ಪೂರ್ವ ಯೂರ" + - "ೋಪ್ಉತ್ತರ ಯೂರೋಪ್ಪಶ್ಚಿಮ ಯೂರೋಪ್ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕಾ" - -var knRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0028, 0x003a, 0x007b, 0x009c, 0x00da, 0x00f8, 0x0113, - 0x012b, 0x013d, 0x015b, 0x0179, 0x01a1, 0x01bc, 0x01dd, 0x01ec, - 0x021d, 0x023b, 0x0285, 0x02a0, 0x02be, 0x02d9, 0x02fe, 0x0319, - 0x032e, 0x0343, 0x0355, 0x0383, 0x0398, 0x03aa, 0x03c2, 0x040b, - 0x0423, 0x0438, 0x044a, 0x046c, 0x048d, 0x04a2, 0x04b4, 0x04c3, - 0x0506, 0x0530, 0x0568, 0x059e, 0x05ce, 0x05f3, 0x0618, 0x0624, - 0x063f, 0x064b, 0x0663, 0x069d, 0x06bc, 0x06ce, 0x06ea, 0x0702, - 0x072d, 0x0742, 0x0754, 0x0766, 0x0788, 0x079a, 0x07b8, 0x07d0, - // Entry 40 - 7F - 0x0807, 0x081f, 0x0857, 0x0872, 0x088d, 0x08a2, 0x08c4, 0x08df, - 0x08f1, 0x090c, 0x093a, 0x0955, 0x0979, 0x0985, 0x09c2, 0x09e6, - 0x0a08, 0x0a20, 0x0a32, 0x0a63, 0x0a7b, 0x0a93, 0x0ab8, 0x0ad3, - 0x0adf, 0x0b00, 0x0b2a, 0x0b45, 0x0b51, 0x0b69, 0x0b9a, 0x0bac, - 0x0c38, 0x0c56, 0x0c68, 0x0c8d, 0x0c9c, 0x0ccc, 0x0d32, 0x0d4d, - 0x0d6b, 0x0d77, 0x0d89, 0x0db7, 0x0dd5, 0x0ded, 0x0e02, 0x0e28, - 0x0e34, 0x0e88, 0x0e97, 0x0ea6, 0x0ec7, 0x0ed3, 0x0ee5, 0x0ef4, - 0x0f0c, 0x0f1b, 0x0f2d, 0x0f51, 0x0f6c, 0x0f84, 0x0f9c, 0x0fe1, - // Entry 80 - BF - 0x1003, 0x1028, 0x103a, 0x1062, 0x1083, 0x1095, 0x10aa, 0x10cc, - 0x10f3, 0x110b, 0x1123, 0x1135, 0x1153, 0x1174, 0x118c, 0x119e, - 0x11b6, 0x11c8, 0x11e0, 0x1201, 0x1229, 0x1244, 0x1272, 0x1296, - 0x12a2, 0x12cc, 0x12e4, 0x1304, 0x1342, 0x1360, 0x137e, 0x139f, - 0x13b1, 0x13c6, 0x13e4, 0x13f3, 0x140b, 0x1420, 0x143b, 0x1450, - 0x1481, 0x1490, 0x14b8, 0x14d0, 0x14ee, 0x151b, 0x152d, 0x153c, - 0x1548, 0x1554, 0x1575, 0x1581, 0x1590, 0x159c, 0x15d0, 0x15fe, - 0x161c, 0x1637, 0x1652, 0x169d, 0x16d7, 0x16fc, 0x1745, 0x1760, - // Entry C0 - FF - 0x176f, 0x1784, 0x1793, 0x17ce, 0x17e9, 0x1801, 0x1819, 0x1828, - 0x183d, 0x185f, 0x188d, 0x18ab, 0x18bd, 0x18d2, 0x18ed, 0x190f, - 0x192d, 0x197e, 0x199c, 0x19c7, 0x19ec, 0x1a01, 0x1a19, 0x1a31, - 0x1a56, 0x1a9e, 0x1ac6, 0x1aee, 0x1b00, 0x1b27, 0x1b5c, 0x1bad, - 0x1bb9, 0x1bfd, 0x1c09, 0x1c24, 0x1c45, 0x1c5d, 0x1c7f, 0x1cac, - 0x1cc1, 0x1cd0, 0x1cdf, 0x1d20, 0x1d32, 0x1d44, 0x1d5f, 0x1d74, - 0x1d86, 0x1dd3, 0x1e07, 0x1e48, 0x1e5d, 0x1e84, 0x1eac, 0x1f0d, - 0x1f2b, 0x1f72, 0x1fb2, 0x1fd0, 0x1fdf, 0x2014, 0x2023, 0x2035, - // Entry 100 - 13F - 0x2044, 0x2059, 0x2081, 0x2093, 0x20ae, 0x20d3, 0x20e5, 0x20fa, - 0x211f, 0x2147, 0x2162, 0x218a, 0x21ac, 0x21d1, 0x21f6, 0x2218, - 0x224d, 0x2268, 0x229a, 0x22b5, 0x22d4, 0x22f6, 0x2318, 0x233d, - 0x2364, 0x237f, 0x23b9, 0x23d7, 0x23e6, 0x2402, 0x2424, 0x2436, - 0x2458, 0x247a, 0x249f, 0x249f, 0x24cd, -} // Size: 610 bytes - -const koRegionStr string = "" + // Size: 3889 bytes - "어센션 섬안도라아랍에미리트아프가니스탄앤티가 바부다앵귈라알바니아아르메니아앙골라남극 대륙아르헨티나아메리칸 사모아오스트리아오스트레일리아" + - "아루바올란드 제도아제르바이잔보스니아 헤르체고비나바베이도스방글라데시벨기에부르키나파소불가리아바레인부룬디베냉생바르텔레미버뮤다브루나이" + - "볼리비아네덜란드령 카리브브라질바하마부탄부베섬보츠와나벨라루스벨리즈캐나다코코스 제도콩고-킨샤사중앙 아프리카 공화국콩고-브라자빌스위" + - "스코트디부아르쿡 제도칠레카메룬중국콜롬비아클립퍼튼 섬코스타리카쿠바카보베르데퀴라소크리스마스섬키프로스체코독일디에고 가르시아지부티덴마" + - "크도미니카도미니카 공화국알제리세우타 및 멜리야에콰도르에스토니아이집트서사하라에리트리아스페인에티오피아유럽 연합유로존핀란드피지포클랜" + - "드 제도미크로네시아페로 제도프랑스가봉영국그레나다조지아프랑스령 기아나건지가나지브롤터그린란드감비아기니과들루프적도 기니그리스사우스조" + - "지아 사우스샌드위치 제도과테말라괌기니비사우가이아나홍콩(중국 특별행정구)허드 맥도널드 제도온두라스크로아티아아이티헝가리카나리아 제" + - "도인도네시아아일랜드이스라엘맨 섬인도영국령 인도양 식민지이라크이란아이슬란드이탈리아저지자메이카요르단일본케냐키르기스스탄캄보디아키리바" + - "시코모로세인트키츠 네비스북한대한민국쿠웨이트케이맨 제도카자흐스탄라오스레바논세인트루시아리히텐슈타인스리랑카라이베리아레소토리투아니아룩" + - "셈부르크라트비아리비아모로코모나코몰도바몬테네그로생마르탱마다가스카르마셜 제도마케도니아말리미얀마몽골마카오(중국 특별행정구)북마리아나" + - "제도마르티니크모리타니몬트세라트몰타모리셔스몰디브말라위멕시코말레이시아모잠비크나미비아뉴칼레도니아니제르노퍽섬나이지리아니카라과네덜란드노" + - "르웨이네팔나우루니우에뉴질랜드오만파나마페루프랑스령 폴리네시아파푸아뉴기니필리핀파키스탄폴란드생피에르 미클롱핏케언 섬푸에르토리코팔레스" + - "타인 지구포르투갈팔라우파라과이카타르오세아니아 외곽리유니온루마니아세르비아러시아르완다사우디아라비아솔로몬 제도세이셸수단스웨덴싱가포르" + - "세인트헬레나슬로베니아스발바르제도-얀마웬섬슬로바키아시에라리온산마리노세네갈소말리아수리남남수단상투메 프린시페엘살바도르신트마르턴시리아" + - "스와질란드트리스탄다쿠나터크스 케이커스 제도차드프랑스 남부 지방토고태국타지키스탄토켈라우동티모르투르크메니스탄튀니지통가터키트리니다드" + - " 토바고투발루대만탄자니아우크라이나우간다미국령 해외 제도유엔미국우루과이우즈베키스탄바티칸 시국세인트빈센트그레나딘베네수엘라영국령 버진아" + - "일랜드미국령 버진아일랜드베트남바누아투왈리스-푸투나 제도사모아코소보예멘마요트남아프리카잠비아짐바브웨알려지지 않은 지역세계아프리카북" + - "아메리카남아메리카(남미)오세아니아서부 아프리카중앙 아메리카동부 아프리카북부 아프리카중부 아프리카남부 아프리카아메리카 대륙북부 " + - "아메리카카리브 제도동아시아남아시아동남아시아남유럽오스트랄라시아멜라네시아미크로네시아 지역폴리네시아아시아중앙 아시아서아시아유럽동유럽" + - "북유럽서유럽라틴 아메리카" - -var koRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000d, 0x0016, 0x0028, 0x003a, 0x004d, 0x0056, 0x0062, - 0x0071, 0x007a, 0x0087, 0x0096, 0x00ac, 0x00bb, 0x00d0, 0x00d9, - 0x00e9, 0x00fb, 0x011a, 0x0129, 0x0138, 0x0141, 0x0153, 0x015f, - 0x0168, 0x0171, 0x0177, 0x0189, 0x0192, 0x019e, 0x01aa, 0x01c3, - 0x01cc, 0x01d5, 0x01db, 0x01e4, 0x01f0, 0x01fc, 0x0205, 0x020e, - 0x021e, 0x022e, 0x024b, 0x025e, 0x0267, 0x0279, 0x0283, 0x0289, - 0x0292, 0x0298, 0x02a4, 0x02b4, 0x02c3, 0x02c9, 0x02d8, 0x02e1, - 0x02f3, 0x02ff, 0x0305, 0x030b, 0x0321, 0x032a, 0x0333, 0x033f, - // Entry 40 - 7F - 0x0355, 0x035e, 0x0375, 0x0381, 0x0390, 0x0399, 0x03a5, 0x03b4, - 0x03bd, 0x03cc, 0x03d9, 0x03e2, 0x03eb, 0x03f1, 0x0404, 0x0416, - 0x0423, 0x042c, 0x0432, 0x0438, 0x0444, 0x044d, 0x0463, 0x0469, - 0x046f, 0x047b, 0x0487, 0x0490, 0x0496, 0x04a2, 0x04af, 0x04b8, - 0x04e7, 0x04f3, 0x04f6, 0x0505, 0x0511, 0x052f, 0x0549, 0x0555, - 0x0564, 0x056d, 0x0576, 0x0589, 0x0598, 0x05a4, 0x05b0, 0x05b7, - 0x05bd, 0x05da, 0x05e3, 0x05e9, 0x05f8, 0x0604, 0x060a, 0x0616, - 0x061f, 0x0625, 0x062b, 0x063d, 0x0649, 0x0655, 0x065e, 0x0677, - // Entry 80 - BF - 0x067d, 0x0689, 0x0695, 0x06a5, 0x06b4, 0x06bd, 0x06c6, 0x06d8, - 0x06ea, 0x06f6, 0x0705, 0x070e, 0x071d, 0x072c, 0x0738, 0x0741, - 0x074a, 0x0753, 0x075c, 0x076b, 0x0777, 0x0789, 0x0796, 0x07a5, - 0x07ab, 0x07b4, 0x07ba, 0x07db, 0x07f0, 0x07ff, 0x080b, 0x081a, - 0x0820, 0x082c, 0x0835, 0x083e, 0x0847, 0x0856, 0x0862, 0x086e, - 0x0880, 0x0889, 0x0892, 0x08a1, 0x08ad, 0x08b9, 0x08c5, 0x08cb, - 0x08d4, 0x08dd, 0x08e9, 0x08ef, 0x08f8, 0x08fe, 0x091a, 0x092c, - 0x0935, 0x0941, 0x094a, 0x0960, 0x096d, 0x097f, 0x0995, 0x09a1, - // Entry C0 - FF - 0x09aa, 0x09b6, 0x09bf, 0x09d5, 0x09e1, 0x09ed, 0x09f9, 0x0a02, - 0x0a0b, 0x0a20, 0x0a30, 0x0a39, 0x0a3f, 0x0a48, 0x0a54, 0x0a66, - 0x0a75, 0x0a94, 0x0aa3, 0x0ab2, 0x0abe, 0x0ac7, 0x0ad3, 0x0adc, - 0x0ae5, 0x0afb, 0x0b0a, 0x0b19, 0x0b22, 0x0b31, 0x0b46, 0x0b63, - 0x0b69, 0x0b80, 0x0b86, 0x0b8c, 0x0b9b, 0x0ba7, 0x0bb3, 0x0bc8, - 0x0bd1, 0x0bd7, 0x0bdd, 0x0bf6, 0x0bff, 0x0c05, 0x0c11, 0x0c20, - 0x0c29, 0x0c40, 0x0c46, 0x0c4c, 0x0c58, 0x0c6a, 0x0c7a, 0x0c98, - 0x0ca7, 0x0cc3, 0x0cdf, 0x0ce8, 0x0cf4, 0x0d0e, 0x0d17, 0x0d20, - // Entry 100 - 13F - 0x0d26, 0x0d2f, 0x0d3e, 0x0d47, 0x0d53, 0x0d6d, 0x0d73, 0x0d7f, - 0x0d8e, 0x0da5, 0x0db4, 0x0dc7, 0x0dda, 0x0ded, 0x0e00, 0x0e13, - 0x0e26, 0x0e39, 0x0e4c, 0x0e5c, 0x0e68, 0x0e74, 0x0e83, 0x0e8c, - 0x0ea1, 0x0eb0, 0x0ec9, 0x0ed8, 0x0ee1, 0x0ef1, 0x0efd, 0x0f03, - 0x0f0c, 0x0f15, 0x0f1e, 0x0f1e, 0x0f31, -} // Size: 610 bytes - -const kyRegionStr string = "" + // Size: 5829 bytes - "Вознесение аралыАндорраБириккен Араб ЭмираттарыАфганистанАнтигуа жана Ба" + - "рбудаАнгильяАлбанияАрменияАнголаАнтарктидаАргентинаАмерикалык СамоаАвст" + - "рияАвстралияАрубаАланд аралдарыАзербайжанБосния жана ГерцеговинаБарбадо" + - "сБангладешБельгияБуркина-ФасоБолгарияБахрейнБурундиБенинСент БартелемиБ" + - "ермуд аралдарыБрунейБоливияКариб НидерланддарыБразилияБагама аралдарыБу" + - "танБуве аралыБотсванаБеларусьБелизКанадаКокос (Килинг) аралдарыКонго-Ки" + - "ншасаБорбордук Африка РеспубликасыКонго-БраззавилШвейцарияКот-д’ИвуарКу" + - "к аралдарыЧилиКамерунКытайКолумбияКлиппертон аралыКоста-РикаКубаКапе Ве" + - "рдеКюрасаоРождество аралыКипрЧехияГерманияДиего ГарсияДжибутиДанияДомин" + - "икаДоминика РеспубликасыАлжирСеута жана МелиллаЭквадорЭстонияЕгипетБаты" + - "ш СахараЭритреяИспанияЭфиопияЕвропа БиримдигиЕврозонаФинляндияФиджиФолк" + - "ленд аралдарыМикронезияФарер аралдарыФранцияГабонУлуу БританияГренадаГр" + - "узияФранцуздук ГвианаГернсиГанаГибралтарГренландияГамбияГвинеяГваделупа" + - "Экватордук ГвинеяГрецияТүштүк Жоржия жана Түштүк Сэндвич аралдарыГватем" + - "алаГуамГвинея-БисауГайанаГонконг Кытай АААХерд жана Макдональд аралдары" + - "ГондурасХорватияГаитиВенгрияКанар аралдарыИндонезияИрландияИзраильМэн а" + - "ралыИндияИнди океанындагы Британ территориясыИракИранИсландияИталияЖерс" + - "иЯмайкаИорданияЯпонияКенияКыргызстанКамбоджаКирибатиКоморосСент-Китс жа" + - "на НевисТүндүк КореяТүштүк КореяКувейтКайман аралдарыКазакстанЛаосЛиван" + - "Сент-ЛюсияЛихтенштейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМа" + - "роккоМонакоМолдоваЧерногорияСент-МартинМадагаскарМаршалл аралдарыМакедо" + - "нияМалиМьянма (Бирма)МонголияМакау Кытай АААТүндүк Мариана аралдарыМарт" + - "иникаМавританияМонтсерратМальтаМаврикийМальдивМалавиМексикаМалайзияМоза" + - "мбикНамибияЖаӊы КаледонияНигерНорфолк аралыНигерияНикарагуаНидерландНор" + - "вегияНепалНауруНиуэЖаӊы ЗеландияОманПанамаПеруПолинезия (франциялык)Пап" + - "уа-Жаңы ГвинеяФиллипинПакистанПольшаСен-Пьер жана МикелонПиткэрн аралда" + - "рыПуэрто-РикоПалестина аймактарыПортугалияПалауПарагвайКатарАлыскы Океа" + - "нияРеюньонРумынияСербияРоссияРуандаСауд АрабиясыСоломон аралдарыСейшел " + - "аралдарыСуданШвецияСингапурЫйык ЕленаСловенияШпицберген жана Ян-МайенСл" + - "овакияСьерра-ЛеонеСан МариноСенегалСомалиСуринамТүштүк СуданСан-Томе жа" + - "на ПринсипиЭль-СальвадорСинт-МартенСирияСвазилендТристан-да-КуньяТүркс " + - "жана Кайкос аралдарыЧадФранциянын Түштүктөгү аймактарыТогоТайландТажикс" + - "танТокелауТимор-ЛестеТүркмөнстанТунисТонгаТүркияТринидад жана ТобагоТув" + - "алуТайваньТанзанияУкраинаУгандаАКШнын сырткы аралдарыБУАмерика Кошмо Шт" + - "аттарыУругвайӨзбекстанВатиканСент-Винсент жана ГренадиндерВенесуэлаВирг" + - "ин аралдары (Британия)Виргин аралдары (АКШ)ВьетнамВануатуУоллис жана Фу" + - "тунаСамоаКосовоЙеменМайоттаТүштүк-Африка РеспубликасыЗамбияЗимбабвеБелг" + - "исиз чөлкөмДүйнөАфрикаТүндүк АмерикаТүштүк АмерикаОкеанияБатыш АфрикаБо" + - "рбордук АмерикаЧыгыш АфрикаТүндүк АфрикаБорбордук АфрикаТүштүк АфрикаАм" + - "ерикаТүндүк Америка (чөлкөм)Кариб аралдарыЧыгыш АзияТүштүк АзияТүштүк-Ч" + - "ыгыш АзияТүштүк ЕвропаАвстралазияМеланезияМикронезия чөлкөмүПолинезияАз" + - "ияБорбор АзияБатыш АзияЕвропаЧыгыш ЕвропаТүндүк ЕвропаБатыш ЕвропаЛатын" + - " Америкасы" - -var kyRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001f, 0x002d, 0x005b, 0x006f, 0x0095, 0x00a3, 0x00b1, - 0x00bf, 0x00cb, 0x00df, 0x00f1, 0x0110, 0x011e, 0x0130, 0x013a, - 0x0155, 0x0169, 0x0195, 0x01a5, 0x01b7, 0x01c5, 0x01dc, 0x01ec, - 0x01fa, 0x0208, 0x0212, 0x022d, 0x024a, 0x0256, 0x0264, 0x0289, - 0x0299, 0x02b6, 0x02c0, 0x02d3, 0x02e3, 0x02f3, 0x02fd, 0x0309, - 0x0333, 0x034c, 0x0384, 0x03a1, 0x03b3, 0x03c9, 0x03e0, 0x03e8, - 0x03f6, 0x0400, 0x0410, 0x042f, 0x0442, 0x044a, 0x045d, 0x046b, - 0x0488, 0x0490, 0x049a, 0x04aa, 0x04c1, 0x04cf, 0x04d9, 0x04e9, - // Entry 40 - 7F - 0x0512, 0x051c, 0x053e, 0x054c, 0x055a, 0x0566, 0x057d, 0x058b, - 0x0599, 0x05a7, 0x05c6, 0x05d6, 0x05e8, 0x05f2, 0x0613, 0x0627, - 0x0642, 0x0650, 0x065a, 0x0673, 0x0681, 0x068d, 0x06ae, 0x06ba, - 0x06c2, 0x06d4, 0x06e8, 0x06f4, 0x0700, 0x0712, 0x0733, 0x073f, - 0x078e, 0x07a0, 0x07a8, 0x07bf, 0x07cb, 0x07eb, 0x0822, 0x0832, - 0x0842, 0x084c, 0x085a, 0x0875, 0x0887, 0x0897, 0x08a5, 0x08b6, - 0x08c0, 0x0905, 0x090d, 0x0915, 0x0925, 0x0931, 0x093b, 0x0947, - 0x0957, 0x0963, 0x096d, 0x0981, 0x0991, 0x09a1, 0x09af, 0x09d4, - // Entry 80 - BF - 0x09eb, 0x0a02, 0x0a0e, 0x0a2b, 0x0a3d, 0x0a45, 0x0a4f, 0x0a62, - 0x0a78, 0x0a89, 0x0a97, 0x0aa3, 0x0aad, 0x0ac1, 0x0acd, 0x0ad7, - 0x0ae5, 0x0af1, 0x0aff, 0x0b13, 0x0b28, 0x0b3c, 0x0b5b, 0x0b6d, - 0x0b75, 0x0b8e, 0x0b9e, 0x0bba, 0x0be6, 0x0bf8, 0x0c0c, 0x0c20, - 0x0c2c, 0x0c3c, 0x0c4a, 0x0c56, 0x0c64, 0x0c74, 0x0c84, 0x0c92, - 0x0cad, 0x0cb7, 0x0cd0, 0x0cde, 0x0cf0, 0x0d02, 0x0d12, 0x0d1c, - 0x0d26, 0x0d2e, 0x0d47, 0x0d4f, 0x0d5b, 0x0d63, 0x0d8c, 0x0dac, - 0x0dbc, 0x0dcc, 0x0dd8, 0x0dff, 0x0e1e, 0x0e33, 0x0e58, 0x0e6c, - // Entry C0 - FF - 0x0e76, 0x0e86, 0x0e90, 0x0eab, 0x0eb9, 0x0ec7, 0x0ed3, 0x0edf, - 0x0eeb, 0x0f04, 0x0f23, 0x0f40, 0x0f4a, 0x0f56, 0x0f66, 0x0f79, - 0x0f89, 0x0fb6, 0x0fc6, 0x0fdd, 0x0ff0, 0x0ffe, 0x100a, 0x1018, - 0x102f, 0x1058, 0x1071, 0x1086, 0x1090, 0x10a2, 0x10c0, 0x10f1, - 0x10f7, 0x1133, 0x113b, 0x1149, 0x115b, 0x1169, 0x117e, 0x1194, - 0x119e, 0x11a8, 0x11b4, 0x11da, 0x11e6, 0x11f4, 0x1204, 0x1212, - 0x121e, 0x1248, 0x124c, 0x1276, 0x1284, 0x1296, 0x12a4, 0x12db, - 0x12ed, 0x131d, 0x1343, 0x1351, 0x135f, 0x1381, 0x138b, 0x1397, - // Entry 100 - 13F - 0x13a1, 0x13af, 0x13e1, 0x13ed, 0x13fd, 0x141a, 0x1424, 0x1430, - 0x144b, 0x1466, 0x1474, 0x148b, 0x14ac, 0x14c3, 0x14dc, 0x14fb, - 0x1514, 0x1522, 0x154c, 0x1567, 0x157a, 0x158f, 0x15af, 0x15c8, - 0x15de, 0x15f0, 0x1613, 0x1625, 0x162d, 0x1642, 0x1655, 0x1661, - 0x1678, 0x1691, 0x16a8, 0x16a8, 0x16c5, -} // Size: 610 bytes - -const loRegionStr string = "" + // Size: 8218 bytes - "ເກາະອາເຊນຊັນອັນດໍຣາສະຫະລັດອາຣັບເອມິເຣດອາຟການິດສະຖານແອນທິກົວ ແລະ ບາບູດາແອ" + - "ນກຸຍລາແອວເບເນຍອາເມເນຍແອງໂກລາແອນຕາດຕິກາອາເຈນທິນາອາເມຣິກາ ຊາມົວອອສເທຣຍອອ" + - "ສເຕຣເລຍອາຣູບາຫມູ່ເກາະໂອລັນອາເຊີໄບຈານບອດສະເນຍ ແລະ ແຮສໂກວີນາບາບາໂດສບັງກະ" + - "ລາເທດເບວຢຽມເບີກິນາ ຟາໂຊບັງກາເຣຍບາເຣນບູຣຸນດິເບນິນເຊນ ບາເທເລມີເບີມິວດາບຣ" + - "ູໄນໂບລິເວຍຄາຣິບບຽນ ເນເທີແລນບຣາຊິວບາຮາມາສພູຖານເກາະບູເວດບອດສະວານາເບວບາຣຸ" + - "ສເບລີຊແຄນາດາຫມູ່ເກາະໂກໂກສຄອງໂກ - ຄິນຊາຊາສາທາລະນະລັດອາຟຣິກາກາງຄອງໂກ - ບ" + - "ຣາຊາວິວສະວິດເຊີແລນໂຄຕີ ວົວໝູ່ເກາະຄຸກຊິລີຄາເມຣູນຈີນໂຄລົມເບຍເກາະຄລິບເປີຕ" + - "ັນໂຄສຕາ ຣິກາຄິວບາເຄບ ເວີດຄູຣາຊາວເກາະຄຣິສມາດໄຊປຣັສເຊັກເຊຍເຢຍລະມັນດິເອໂກ" + - " ກາເຊຍຈິບູຕິເດນມາກໂດມີນິຄາສາທາລະນະລັດ ໂດມິນິກັນອັລຈິເຣຍເຊວຕາ ແລະເມລິນລາເ" + - "ອກວາດໍເອສໂຕເນຍອີຢິບຊາຮາຣາຕາເວັນຕົກເອຣິເທຣຍສະເປນອີທິໂອເປຍສະຫະພາບຢູໂຣບເຂ" + - "ດຢູໂຣບຟິນແລນຟິຈິຫມູ່ເກາະຟອກແລນໄມໂຄຣນີເຊຍຫມູ່ເກາະແຟໂຣຝຣັ່ງກາບອນສະຫະລາດຊ" + - "ະອະນາຈັກເກຣເນດາຈໍເຈຍເຟຣນຊ໌ ກຸຍອານາເກີນຊີການາຈິບບຣອນທາກຣີນແລນສາທາລະນະລັ" + - "ດແກມເບຍກິນີກົວດາລູບເອຄົວໂທຣຽວ ກີນີກຣີຊໝູ່ເກາະ ຈໍເຈຍຕອນໃຕ້ ແລະ ແຊນວິດຕອ" + - "ນໃຕ້ກົວເທມາລາກວາມກິນີ-ບິສເຊົາກາຍຢານາຮົງກົງ ເຂດປົກຄອງພິເສດ ຈີນໝູ່ເກາະເຮ" + - "ີດ & ແມັກໂດນອລຮອນດູຣັສໂຄຣເອເທຍໄຮຕິຮັງກາຣີໝູ່ເກາະຄານາຣີອິນໂດເນເຊຍໄອແລນອ" + - "ິສຣາເອວເອວ ອອບ ແມນອິນເດຍເຂດແດນອັງກິດໃນມະຫາສະມຸດອິນເດຍອີຣັກອີຣານໄອສແລນອ" + - "ິຕາລີເຈີຊີຈາໄມຄາຈໍແດນຍີ່ປຸ່ນເຄນຢາຄຽກກິດສະຖານກຳປູເຈຍຄິຣິບາທິໂຄໂມໂຣສເຊນ " + - "ຄິດ ແລະ ເນວິສເກົາຫລີເໜືອເກົາຫລີໃຕ້ກູເວດໝູ່ເກາະ ເຄແມນຄາຊັກສະຖານລາວເລບານ" + - "ອນເຊນ ລູເຊຍລິດເທນສະຕາຍສີລັງກາລິເບີເຣຍເລໂຊໂທລິທົວເນຍລຸກແຊມເບີກລັດເວຍລິເ" + - "ບຍໂມຣັອກໂຄໂມນາໂຄໂມນໂດວາມອນເຕເນໂກຣເຊນ ມາທິນມາດາກາສະກາຫມູ່ເກາະມາແຊວແມຊິໂ" + - "ດເນຍມາລີມຽນມາ (ເບີມາ)ມອງໂກເລຍມາກາວ ເຂດປົກຄອງພິເສດ ຈີນຫມູ່ເກາະມາແຊວຕອນເ" + - "ຫນືອມາຕິນີກມົວຣິເທເນຍມອນເຊີຣາດມອນທາມົວຣິຊຽສມັນດິຟມາລາວີເມັກຊິໂກມາເລເຊຍ" + - "ໂມແຊມບິກນາມີເບຍນິວ ຄາເລໂດເນຍນິເຈີເກາະນໍໂຟກໄນຈີເຣຍນິກຄາຣາກົວເນເທີແລນນໍເ" + - "ວເນປານນາອູຣູນີອູເອນິວຊີແລນໂອມານພານາມາເປຣູເຟຣນຊ໌ ໂພລິນີເຊຍປາປົວນິວກີນີຟ" + - "ິລິບປິນປາກິດສະຖານໂປແລນເຊນ ປີແອ ມິເກວລອນໝູ່ເກາະພິດແຄນເພືອໂຕ ຣິໂກດິນແດນ " + - "ປາເລສຕິນຽນພອລທູໂກປາລາວພາຣາກວຍກາຕາເຂດຫ່າງໄກໂອຊີເນຍເຣອູນິຍົງໂຣແມເນຍເຊີເບ" + - "ຍຣັດເຊຍຣວັນດາຊາອຸດິ ອາຣາເບຍຫມູ່ເກາະໂຊໂລມອນເຊເຊວເລສຊູດານສະວີເດັນສິງກະໂປ" + - "ເຊນ ເຮເລນາສະໂລເວເນຍສະວາບາ ແລະ ແຢນ ມາເຢນສະໂລວາເກຍເຊຍຣາ ລີໂອນແຊນ ມາຣິໂນເ" + - "ຊນີໂກລໂຊມາເລຍຊູຣິນາມຊູດານໃຕ້ເຊົາທູເມ ແລະ ພຣິນຊິບເອວ ຊໍວາດໍຊິນ ມາເທັນຊີ" + - "ເຣຍສະວາຊິແລນທຣິສຕັນ ດາ ກັນຮາໝູ່ເກາະ ເທີກ ແລະ ໄຄໂຄສຊາດເຂດແດນທາງໃຕ້ຂອຝຮັ" + - "່ງໂຕໂກໄທທາຈິກິດສະຖານໂຕເກເລົາທິມໍ-ເລສເຕເທີກເມນິສະຖານຕູນິເຊຍທອງກາເທີຄີທຣ" + - "ິນິແດດ ແລະ ໂທແບໂກຕູວາລູໄຕ້ຫວັນທານຊາເນຍຢູເຄຣນອູການດາໝູ່ເກາະຮອບນອກຂອງສະຫ" + - "ະລັດຯສະຫະປະຊາຊາດສະຫະລັດອູຣຸກວຍອຸສເບກິສະຖານນະຄອນ ວາຕິກັນເຊນ ວິນເຊນ ແລະ " + - "ເກຣເນດິນເວເນຊູເອລາໝູ່ເກາະ ເວີຈິນຂອງອັງກິດໝູ່ເກາະ ເວີຈິນ ຂອງສະຫະລັດຫວຽດ" + - "ນາມວານົວຕູວາລລິສ ແລະ ຟູຕູນາຊາມົວໂຄໂຊໂວເຢເມນມາຢັອດອາຟຣິກາໃຕ້ແຊມເບຍຊິມບັ" + - "ບເວຂົງເຂດທີ່ບໍ່ຮູ້ຈັກໂລກອາຟຣິກາອາເມລິກາເໜືອອາເມລິກາໃຕ້ໂອຊີອານີອາຟຣິກາຕ" + - "າເວັນຕົກອາເມລິກາກາງອາຟຣິກາຕາເວັນອອກອາຟຣິກາເໜືອອາຟຣິກາກາງອາຟຣິກາຕອນໃຕ້ອ" + - "າເມຣິກາພາກເໜືອອາເມລີກາຄາຣິບບຽນອາຊີຕາເວັນອອກອາຊີໄຕ້ອາຊີຕາເວັນອອກສ່ຽງໄຕ້" + - "ຢູໂຣບໃຕ້ໂອດສະຕາລີເມລານີເຊຍເຂດໄມໂຄຣເນຊຽນໂພລີນີເຊຍອາຊີອາຊີກາງອາຊີຕາເວັນຕ" + - "ົກຢູໂຣບຢູໂຣບຕາເວັນອອກຢູໂຣບເໜືອຢູໂຣບຕາເວັນຕົກລາຕິນ ອາເມລິກາ" - -var loRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0024, 0x0039, 0x0072, 0x0099, 0x00ce, 0x00e6, 0x00fe, - 0x0113, 0x0128, 0x0146, 0x0161, 0x0189, 0x019e, 0x01b9, 0x01cb, - 0x01f2, 0x0210, 0x024e, 0x0263, 0x0281, 0x0293, 0x02b5, 0x02cd, - 0x02dc, 0x02f1, 0x0300, 0x0322, 0x033a, 0x0349, 0x035e, 0x038f, - 0x03a1, 0x03b6, 0x03c5, 0x03e0, 0x03fb, 0x0413, 0x0422, 0x0434, - 0x045b, 0x0482, 0x04c1, 0x04eb, 0x050c, 0x0522, 0x0540, 0x054c, - 0x0561, 0x056a, 0x0582, 0x05ac, 0x05c8, 0x05d7, 0x05ed, 0x0602, - 0x0623, 0x0635, 0x064a, 0x0662, 0x0684, 0x0696, 0x06a8, 0x06c0, - // Entry 40 - 7F - 0x06fd, 0x0715, 0x0743, 0x0758, 0x0770, 0x077f, 0x07ac, 0x07c4, - 0x07d3, 0x07ee, 0x0812, 0x082a, 0x083c, 0x0848, 0x0872, 0x0890, - 0x08b4, 0x08c3, 0x08d2, 0x0902, 0x0917, 0x0926, 0x094e, 0x0960, - 0x096c, 0x0987, 0x099c, 0x09cf, 0x09db, 0x09f3, 0x0a1e, 0x0a2a, - 0x0a90, 0x0aab, 0x0ab7, 0x0ad9, 0x0aee, 0x0b35, 0x0b74, 0x0b8c, - 0x0ba4, 0x0bb0, 0x0bc5, 0x0bec, 0x0c0a, 0x0c19, 0x0c31, 0x0c4e, - 0x0c60, 0x0cb7, 0x0cc6, 0x0cd5, 0x0ce7, 0x0cf9, 0x0d08, 0x0d1a, - 0x0d29, 0x0d3e, 0x0d4d, 0x0d6e, 0x0d83, 0x0d9b, 0x0db0, 0x0ddd, - // Entry 80 - BF - 0x0dfe, 0x0e1c, 0x0e2b, 0x0e50, 0x0e6e, 0x0e77, 0x0e8c, 0x0ea5, - 0x0ec6, 0x0edb, 0x0ef3, 0x0f05, 0x0f1d, 0x0f3b, 0x0f4d, 0x0f5c, - 0x0f74, 0x0f86, 0x0f9b, 0x0fb9, 0x0fd2, 0x0ff0, 0x1017, 0x1032, - 0x103e, 0x105f, 0x1077, 0x10bb, 0x10fa, 0x110f, 0x112d, 0x1148, - 0x1157, 0x116f, 0x1181, 0x1193, 0x11ab, 0x11c0, 0x11d8, 0x11ed, - 0x1212, 0x1221, 0x123c, 0x1251, 0x126f, 0x1287, 0x1293, 0x12a2, - 0x12b4, 0x12c6, 0x12de, 0x12ed, 0x12ff, 0x130b, 0x1339, 0x135d, - 0x1375, 0x1393, 0x13a2, 0x13d1, 0x13f8, 0x1417, 0x1448, 0x145d, - // Entry C0 - FF - 0x146c, 0x1481, 0x148d, 0x14bd, 0x14d8, 0x14ed, 0x14ff, 0x1511, - 0x1523, 0x154b, 0x1578, 0x1590, 0x159f, 0x15b7, 0x15cc, 0x15e8, - 0x1603, 0x1639, 0x1654, 0x1673, 0x168f, 0x16a4, 0x16b9, 0x16ce, - 0x16e6, 0x171e, 0x173a, 0x1756, 0x1765, 0x1780, 0x17ac, 0x17e8, - 0x17f1, 0x182a, 0x1836, 0x183c, 0x1860, 0x1878, 0x1894, 0x18bb, - 0x18d0, 0x18df, 0x18ee, 0x1923, 0x1935, 0x194a, 0x1962, 0x1974, - 0x1989, 0x19d1, 0x19f2, 0x1a07, 0x1a1c, 0x1a40, 0x1a65, 0x1aa4, - 0x1ac2, 0x1b05, 0x1b4c, 0x1b61, 0x1b76, 0x1ba5, 0x1bb4, 0x1bc6, - // Entry 100 - 13F - 0x1bd5, 0x1be7, 0x1c05, 0x1c17, 0x1c2f, 0x1c65, 0x1c6e, 0x1c83, - 0x1ca7, 0x1cc8, 0x1ce0, 0x1d10, 0x1d31, 0x1d61, 0x1d82, 0x1da0, - 0x1dc7, 0x1ddf, 0x1e0c, 0x1e24, 0x1e4b, 0x1e60, 0x1e9c, 0x1eb4, - 0x1ecf, 0x1eea, 0x1f11, 0x1f2c, 0x1f38, 0x1f4d, 0x1f74, 0x1f83, - 0x1fad, 0x1fc8, 0x1ff2, 0x1ff2, 0x201a, -} // Size: 610 bytes - -const ltRegionStr string = "" + // Size: 3408 bytes - "Dangun Žengimo salaAndoraJungtiniai Arabų EmyrataiAfganistanasAntigva ir" + - " BarbudaAngilijaAlbanijaArmėnijaAngolaAntarktidaArgentinaAmerikos SamoaA" + - "ustrijaAustralijaArubaAlandų SalosAzerbaidžanasBosnija ir HercegovinaBar" + - "badosasBangladešasBelgijaBurkina FasasBulgarijaBahreinasBurundisBeninasS" + - "en BartelemiBermudaBrunėjusBolivijaKaribų NyderlandaiBrazilijaBahamosBut" + - "anasBuvė SalaBotsvanaBaltarusijaBelizasKanadaKokosų (Kilingo) SalosKonga" + - "s-KinšasaCentrinės Afrikos RespublikaKongas-BrazavilisŠveicarijaDramblio" + - " Kaulo KrantasKuko SalosČilėKamerūnasKinijaKolumbijaKlipertono salaKosta" + - " RikaKubaŽaliasis KyšulysKiurasaoKalėdų SalaKiprasČekijaVokietijaDiego G" + - "arsijaDžibutisDanijaDominikaDominikos RespublikaAlžyrasSeuta ir MelilaEk" + - "vadorasEstijaEgiptasVakarų SacharaEritrėjaIspanijaEtiopijaEuropos Sąjung" + - "aeuro zonaSuomijaFidžisFolklando SalosMikronezijaFarerų SalosPrancūzijaG" + - "abonasJungtinė KaralystėGrenadaGruzijaPrancūzijos GvianaGernsisGanaGibra" + - "ltarasGrenlandijaGambijaGvinėjaGvadelupaPusiaujo GvinėjaGraikijaPietų Dž" + - "ordžija ir Pietų Sandvičo salosGvatemalaGuamasBisau GvinėjaGajanaYpating" + - "asis Administracinis Kinijos Regionas HonkongasHerdo ir Makdonaldo Salos" + - "HondūrasKroatijaHaitisVengrijaKanarų salosIndonezijaAirijaIzraelisMeno S" + - "alaIndijaIndijos Vandenyno Britų SritisIrakasIranasIslandijaItalijaDžers" + - "isJamaikaJordanijaJaponijaKenijaKirgizijaKambodžaKiribatisKomoraiSent Ki" + - "tsas ir NevisŠiaurės KorėjaPietų KorėjaKuveitasKaimanų SalosKazachstanas" + - "LaosasLibanasSent LusijaLichtenšteinasŠri LankaLiberijaLesotasLietuvaLiu" + - "ksemburgasLatvijaLibijaMarokasMonakasMoldovaJuodkalnijaSen MartenasMadag" + - "askarasMaršalo SalosMakedonijaMalisMianmaras (Birma)MongolijaYpatingasis" + - " Administracinis Kinijos Regionas MakaoMarianos Šiaurinės SalosMartinika" + - "MauritanijaMontseratasMaltaMauricijusMaldyvaiMalavisMeksikaMalaizijaMoza" + - "mbikasNamibijaNaujoji KaledonijaNigerisNorfolko salaNigerijaNikaragvaNyd" + - "erlandaiNorvegijaNepalasNauruNiujėNaujoji ZelandijaOmanasPanamaPeruPranc" + - "ūzijos PolinezijaPapua Naujoji GvinėjaFilipinaiPakistanasLenkijaSen Pje" + - "ras ir MikelonasPitkerno salosPuerto RikasPalestinos teritorijaPortugali" + - "jaPalauParagvajusKatarasNuošali OkeanijaReunjonasRumunijaSerbijaRusijaRu" + - "andaSaudo ArabijaSaliamono SalosSeišeliaiSudanasŠvedijaSingapūrasŠv. Ele" + - "nos SalaSlovėnijaSvalbardas ir Janas MajenasSlovakijaSiera LeonėSan Mari" + - "nasSenegalasSomalisSurinamasPietų SudanasSan Tomė ir PrinsipėSalvadorasS" + - "int MartenasSirijaSvazilandasTristanas da KunjaTerkso ir Kaikoso SalosČa" + - "dasPrancūzijos Pietų sritysTogasTailandasTadžikijaTokelauRytų TimorasTur" + - "kmėnistanasTunisasTongaTurkijaTrinidadas ir TobagasTuvaluTaivanasTanzani" + - "jaUkrainaUgandaJungtinių Valstijų Mažosios Tolimosios SalosJungtinės Tau" + - "tosJungtinės ValstijosUrugvajusUzbekistanasVatikano Miesto ValstybėŠvent" + - "asis Vincentas ir GrenadinaiVenesuelaDidžiosios Britanijos Mergelių Salo" + - "sJungtinių Valstijų Mergelių SalosVietnamasVanuatuVolisas ir FutūnaSamoa" + - "KosovasJemenasMajotasPietų AfrikaZambijaZimbabvėnežinoma sritispasaulisA" + - "frikaŠiaurės AmerikaPietų AmerikaOkeanijaVakarų AfrikaCentrinė AmerikaRy" + - "tų AfrikaŠiaurės AfrikaVidurio AfrikaPietinė AfrikaAmerikaŠiaurinė Ameri" + - "kaKaribaiRytų AzijaPietų AzijaPietryčių AzijaPietų EuropaAustralazijaMel" + - "anezijaMikronezijos regionasPolinezijaAzijaCentrinė AzijaVakarų AzijaEur" + - "opaRytų EuropaŠiaurės EuropaVakarų EuropaLotynų Amerika" - -var ltRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0014, 0x001a, 0x0034, 0x0040, 0x0052, 0x005a, 0x0062, - 0x006b, 0x0071, 0x007b, 0x0084, 0x0092, 0x009a, 0x00a4, 0x00a9, - 0x00b6, 0x00c4, 0x00da, 0x00e4, 0x00f0, 0x00f7, 0x0104, 0x010d, - 0x0116, 0x011e, 0x0125, 0x0132, 0x0139, 0x0142, 0x014a, 0x015d, - 0x0166, 0x016d, 0x0174, 0x017e, 0x0186, 0x0191, 0x0198, 0x019e, - 0x01b5, 0x01c4, 0x01e1, 0x01f2, 0x01fd, 0x0213, 0x021d, 0x0223, - 0x022d, 0x0233, 0x023c, 0x024b, 0x0255, 0x0259, 0x026b, 0x0273, - 0x0280, 0x0286, 0x028d, 0x0296, 0x02a3, 0x02ac, 0x02b2, 0x02ba, - // Entry 40 - 7F - 0x02ce, 0x02d6, 0x02e5, 0x02ee, 0x02f4, 0x02fb, 0x030a, 0x0313, - 0x031b, 0x0323, 0x0333, 0x033c, 0x0343, 0x034a, 0x0359, 0x0364, - 0x0371, 0x037c, 0x0383, 0x0397, 0x039e, 0x03a5, 0x03b8, 0x03bf, - 0x03c3, 0x03ce, 0x03d9, 0x03e0, 0x03e8, 0x03f1, 0x0402, 0x040a, - 0x0436, 0x043f, 0x0445, 0x0453, 0x0459, 0x048f, 0x04a8, 0x04b1, - 0x04b9, 0x04bf, 0x04c7, 0x04d4, 0x04de, 0x04e4, 0x04ec, 0x04f5, - 0x04fb, 0x051a, 0x0520, 0x0526, 0x052f, 0x0536, 0x053e, 0x0545, - 0x054e, 0x0556, 0x055c, 0x0565, 0x056e, 0x0577, 0x057e, 0x0592, - // Entry 80 - BF - 0x05a3, 0x05b1, 0x05b9, 0x05c7, 0x05d3, 0x05d9, 0x05e0, 0x05eb, - 0x05fa, 0x0604, 0x060c, 0x0613, 0x061a, 0x0627, 0x062e, 0x0634, - 0x063b, 0x0642, 0x0649, 0x0654, 0x0660, 0x066c, 0x067a, 0x0684, - 0x0689, 0x069a, 0x06a3, 0x06d5, 0x06ef, 0x06f8, 0x0703, 0x070e, - 0x0713, 0x071d, 0x0725, 0x072c, 0x0733, 0x073c, 0x0746, 0x074e, - 0x0760, 0x0767, 0x0774, 0x077c, 0x0785, 0x0790, 0x0799, 0x07a0, - 0x07a5, 0x07ab, 0x07bc, 0x07c2, 0x07c8, 0x07cc, 0x07e3, 0x07f9, - 0x0802, 0x080c, 0x0813, 0x082a, 0x0838, 0x0844, 0x0859, 0x0864, - // Entry C0 - FF - 0x0869, 0x0873, 0x087a, 0x088b, 0x0894, 0x089c, 0x08a3, 0x08a9, - 0x08af, 0x08bc, 0x08cb, 0x08d5, 0x08dc, 0x08e4, 0x08ef, 0x08ff, - 0x0909, 0x0924, 0x092d, 0x0939, 0x0944, 0x094d, 0x0954, 0x095d, - 0x096b, 0x0981, 0x098b, 0x0998, 0x099e, 0x09a9, 0x09bb, 0x09d2, - 0x09d8, 0x09f2, 0x09f7, 0x0a00, 0x0a0a, 0x0a11, 0x0a1e, 0x0a2d, - 0x0a34, 0x0a39, 0x0a40, 0x0a55, 0x0a5b, 0x0a63, 0x0a6c, 0x0a73, - 0x0a79, 0x0aa8, 0x0ab9, 0x0acd, 0x0ad6, 0x0ae2, 0x0afb, 0x0b1d, - 0x0b26, 0x0b4c, 0x0b70, 0x0b79, 0x0b80, 0x0b92, 0x0b97, 0x0b9e, - // Entry 100 - 13F - 0x0ba5, 0x0bac, 0x0bb9, 0x0bc0, 0x0bc9, 0x0bd9, 0x0be1, 0x0be7, - 0x0bf8, 0x0c06, 0x0c0e, 0x0c1c, 0x0c2d, 0x0c39, 0x0c49, 0x0c57, - 0x0c66, 0x0c6d, 0x0c7f, 0x0c86, 0x0c91, 0x0c9d, 0x0cae, 0x0cbb, - 0x0cc7, 0x0cd1, 0x0ce6, 0x0cf0, 0x0cf5, 0x0d04, 0x0d11, 0x0d17, - 0x0d23, 0x0d33, 0x0d41, 0x0d41, 0x0d50, -} // Size: 610 bytes - -const lvRegionStr string = "" + // Size: 3338 bytes - "Debesbraukšanas salaAndoraApvienotie Arābu EmirātiAfganistānaAntigva un " + - "BarbudaAngiljaAlbānijaArmēnijaAngolaAntarktikaArgentīnaASV SamoaAustrija" + - "AustrālijaArubaOlandes salasAzerbaidžānaBosnija un HercegovinaBarbadosaB" + - "angladešaBeļģijaBurkinafasoBulgārijaBahreinaBurundijaBeninaSenbartelmīBe" + - "rmudu salasBrunejaBolīvijaNīderlandes Karību salasBrazīlijaBahamu salasB" + - "utānaBuvē salaBotsvānaBaltkrievijaBelizaKanādaKokosu (Kīlinga) salasKong" + - "o (Kinšasa)Centrālāfrikas RepublikaKongo (Brazavila)ŠveiceKotdivuāraKuka" + - " salasČīleKamerūnaĶīnaKolumbijaKlipertona salaKostarikaKubaKaboverdeKira" + - "saoZiemsvētku salaKipraČehijaVācijaDjego Garsijas atolsDžibutijaDānijaDo" + - "minikaDominikānaAlžīrijaSeūta un MeliljaEkvadoraIgaunijaĒģipteRietumsahā" + - "raEritrejaSpānijaEtiopijaEiropas SavienībaEirozonaSomijaFidžiFolklenda s" + - "alasMikronēzijaFēru salasFrancijaGabonaLielbritānijaGrenādaGruzijaFranci" + - "jas GviānaGērnsijaGanaGibraltārsGrenlandeGambijaGvinejaGvadelupaEkvatori" + - "ālā GvinejaGrieķijaDienviddžordžija un Dienvidsendviču salasGvatemalaGu" + - "amaGvineja-BisavaGajānaĶīnas īpašās pārvaldes apgabals HonkongaHērda sal" + - "a un Makdonalda salasHondurasaHorvātijaHaitiUngārijaKanāriju salasIndonē" + - "zijaĪrijaIzraēlaMenaIndijaIndijas okeāna Britu teritorijaIrākaIrānaIslan" + - "deItālijaDžērsijaJamaikaJordānijaJapānaKenijaKirgizstānaKambodžaKiribati" + - "Komoru salasSentkitsa un NevisaZiemeļkorejaDienvidkorejaKuveitaKaimanu s" + - "alasKazahstānaLaosaLibānaSentlūsijaLihtenšteinaŠrilankaLibērijaLesotoLie" + - "tuvaLuksemburgaLatvijaLībijaMarokaMonakoMoldovaMelnkalneSenmartēnaMadaga" + - "skaraMāršala salasMaķedonijaMaliMjanma (Birma)MongolijaĶīnas īpašās pārv" + - "aldes apgabals MakaoZiemeļu Marianas salasMartinikaMauritānijaMontserrat" + - "aMaltaMaurīcijaMaldīvijaMalāvijaMeksikaMalaizijaMozambikaNamībijaJaunkal" + - "edonijaNigēraNorfolkas salaNigērijaNikaragvaNīderlandeNorvēģijaNepālaNau" + - "ruNiueJaunzēlandeOmānaPanamaPeruFrancijas PolinēzijaPapua-JaungvinejaFil" + - "ipīnasPakistānaPolijaSenpjēra un MikelonaPitkērnas salasPuertorikoPalest" + - "īnaPortugālePalauParagvajaKataraOkeānijas attālās salasReinjonaRumānija" + - "SerbijaKrievijaRuandaSaūda ArābijaZālamana salasSeišelu salasSudānaZvied" + - "rijaSingapūraSv.Helēnas salaSlovēnijaSvalbāra un Jana Majena salaSlovāki" + - "jaSjerraleoneSanmarīnoSenegālaSomālijaSurinamaDienvidsudānaSantome un Pr" + - "insipiSalvadoraSintmārtenaSīrijaSvazilendaTristana da Kuņas salasTērksas" + - " un Kaikosas salasČadaFrancijas Dienvidjūru teritorijaTogoTaizemeTadžiki" + - "stānaTokelauAustrumtimoraTurkmenistānaTunisijaTongaTurcijaTrinidāda un T" + - "obāgoTuvaluTaivānaTanzānijaUkrainaUgandaASV Mazās Aizjūras salasApvienot" + - "o Nāciju OrganizācijaAmerikas Savienotās ValstisUrugvajaUzbekistānaVatik" + - "ānsSentvinsenta un GrenadīnasVenecuēlaBritu VirdžīnasASV VirdžīnasVjetn" + - "amaVanuatuVolisa un Futunas salasSamoaKosovaJemenaMajotaDienvidāfrikas R" + - "epublikaZambijaZimbabvenezināms reģionspasauleĀfrikaZiemeļamerikaDienvid" + - "amerikaOkeānijaRietumāfrikaCentrālamerikaAustrumāfrikaZiemeļāfrikaVidusā" + - "frikaDienvidāfrikaAmerikaAmerikas ziemeļu daļaKarību jūras reģionsAustru" + - "māzijaDienvidāzijaCentrālaustrumāzijaDienvideiropaAustrālāzijaMelanēzija" + - "Mikronēzijas reģionsPolinēzijaĀzijaCentrālāzijaRietumāzijaEiropaAustrume" + - "iropaZiemeļeiropaRietumeiropaLatīņamerika" - -var lvRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0015, 0x001b, 0x0035, 0x0041, 0x0053, 0x005a, 0x0063, - 0x006c, 0x0072, 0x007c, 0x0086, 0x008f, 0x0097, 0x00a2, 0x00a7, - 0x00b4, 0x00c2, 0x00d8, 0x00e1, 0x00ec, 0x00f5, 0x0100, 0x010a, - 0x0112, 0x011b, 0x0121, 0x012d, 0x013a, 0x0141, 0x014a, 0x0164, - 0x016e, 0x017a, 0x0181, 0x018b, 0x0194, 0x01a0, 0x01a6, 0x01ad, - 0x01c4, 0x01d4, 0x01ee, 0x01ff, 0x0206, 0x0211, 0x021b, 0x0221, - 0x022a, 0x0230, 0x0239, 0x0248, 0x0251, 0x0255, 0x025e, 0x0265, - 0x0275, 0x027a, 0x0281, 0x0288, 0x029c, 0x02a6, 0x02ad, 0x02b5, - // Entry 40 - 7F - 0x02c0, 0x02ca, 0x02db, 0x02e3, 0x02eb, 0x02f3, 0x0300, 0x0308, - 0x0310, 0x0318, 0x032a, 0x0332, 0x0338, 0x033e, 0x034d, 0x0359, - 0x0364, 0x036c, 0x0372, 0x0380, 0x0388, 0x038f, 0x03a0, 0x03a9, - 0x03ad, 0x03b8, 0x03c1, 0x03c8, 0x03cf, 0x03d8, 0x03ed, 0x03f6, - 0x0422, 0x042b, 0x0430, 0x043e, 0x0445, 0x0473, 0x0492, 0x049b, - 0x04a5, 0x04aa, 0x04b3, 0x04c2, 0x04cd, 0x04d3, 0x04db, 0x04df, - 0x04e5, 0x0505, 0x050b, 0x0511, 0x0518, 0x0520, 0x052a, 0x0531, - 0x053b, 0x0542, 0x0548, 0x0554, 0x055d, 0x0565, 0x0571, 0x0584, - // Entry 80 - BF - 0x0591, 0x059e, 0x05a5, 0x05b2, 0x05bd, 0x05c2, 0x05c9, 0x05d4, - 0x05e1, 0x05ea, 0x05f3, 0x05f9, 0x0600, 0x060b, 0x0612, 0x0619, - 0x061f, 0x0625, 0x062c, 0x0635, 0x0640, 0x064b, 0x065a, 0x0665, - 0x0669, 0x0677, 0x0680, 0x06ab, 0x06c2, 0x06cb, 0x06d7, 0x06e2, - 0x06e7, 0x06f1, 0x06fb, 0x0704, 0x070b, 0x0714, 0x071d, 0x0726, - 0x0734, 0x073b, 0x0749, 0x0752, 0x075b, 0x0766, 0x0771, 0x0778, - 0x077d, 0x0781, 0x078d, 0x0793, 0x0799, 0x079d, 0x07b2, 0x07c3, - 0x07cd, 0x07d7, 0x07dd, 0x07f2, 0x0802, 0x080c, 0x0816, 0x0820, - // Entry C0 - FF - 0x0825, 0x082e, 0x0834, 0x084e, 0x0856, 0x085f, 0x0866, 0x086e, - 0x0874, 0x0883, 0x0892, 0x08a0, 0x08a7, 0x08b0, 0x08ba, 0x08ca, - 0x08d4, 0x08f1, 0x08fb, 0x0906, 0x0910, 0x0919, 0x0922, 0x092a, - 0x0938, 0x094b, 0x0954, 0x0960, 0x0967, 0x0971, 0x0989, 0x09a3, - 0x09a8, 0x09c9, 0x09cd, 0x09d4, 0x09e2, 0x09e9, 0x09f6, 0x0a04, - 0x0a0c, 0x0a11, 0x0a18, 0x0a2d, 0x0a33, 0x0a3b, 0x0a45, 0x0a4c, - 0x0a52, 0x0a6c, 0x0a8b, 0x0aa7, 0x0aaf, 0x0abb, 0x0ac4, 0x0adf, - 0x0ae9, 0x0afa, 0x0b09, 0x0b11, 0x0b18, 0x0b2f, 0x0b34, 0x0b3a, - // Entry 100 - 13F - 0x0b40, 0x0b46, 0x0b5f, 0x0b66, 0x0b6e, 0x0b80, 0x0b87, 0x0b8e, - 0x0b9c, 0x0baa, 0x0bb3, 0x0bc0, 0x0bcf, 0x0bdd, 0x0beb, 0x0bf7, - 0x0c05, 0x0c0c, 0x0c23, 0x0c3a, 0x0c47, 0x0c54, 0x0c69, 0x0c76, - 0x0c84, 0x0c8f, 0x0ca5, 0x0cb0, 0x0cb6, 0x0cc4, 0x0cd0, 0x0cd6, - 0x0ce3, 0x0cf0, 0x0cfc, 0x0cfc, 0x0d0a, -} // Size: 610 bytes - -const mkRegionStr string = "" + // Size: 6022 bytes - "Остров АсенсионАндораОбединети Арапски ЕмиратиАвганистанАнтига и Барбуда" + - "АнгвилаАлбанијаЕрменијаАнголаАнтарктикАргентинаАмериканска СамоаАвстриј" + - "аАвстралијаАрубаОландски ОстровиАзербејџанБосна и ХерцеговинаБарбадосБа" + - "нгладешБелгијаБуркина ФасоБугаријаБахреинБурундиБенинСвети ВартоломејБе" + - "рмудиБрунејБоливијаКарипска ХоландијаБразилБахамиБутанОстров БувеБоцван" + - "аБелорусијаБелизеКанадаКокосови (Килиншки) ОстровиКонго - КиншасаЦентра" + - "лноафриканска РепубликаКонго - БразавилШвајцаријаБрегот на Слоновата Ко" + - "скаКукови ОстровиЧилеКамерунКинаКолумбијаОстров КлипертонКостарикаКубаЗ" + - "елен ’РтКурасаоБожиќен ОстровКипарЧешкаГерманијаДиего ГарсијаЏибутиДанс" + - "каДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстонијаЕгипе" + - "тЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска унијаЕврозонаФинскаФиџиФ" + - "олкландски ОстровиМикронезијаФарски ОстровиФранцијаГабонОбединето Кралс" + - "твоГренадаГрузијаФранцуска ГвајанаГернзиГанаГибралтарГренландГамбијаГви" + - "нејаГвадалупеЕкваторска ГвинејаГрцијаЈужна Џорџија и Јужни Сендвички Ос" + - "тровиГватемалаГуамГвинеја-БисауГвајанаХонг Конг С.А.Р КинаОстров Херд и" + - " Острови МекдоналдХондурасХрватскаХаитиУнгаријаКанарски ОстровиИндонезиј" + - "аИрскаИзраелОстров МанИндијаБританска Индоокеанска ТериторијаИракИранИс" + - "ландИталијаЏерсиЈамајкаЈорданЈапонијаКенијаКиргистанКамбоџаКирибатиКомо" + - "рски ОстровиСвети Китс и НевисСеверна КорејаЈужна КорејаКувајтКајмански" + - " ОстровиКазахстанЛаосЛибанСент ЛусијаЛихтенштајнШри ЛанкаЛиберијаЛесотоЛ" + - "итванијаЛуксембургЛатвијаЛибијаМарокоМонакоМолдавијаЦрна ГораСент Марти" + - "нМадагаскарМаршалски ОстровиМакедонијаМалиМјанмар (Бурма)МонголијаМакао" + - " САРСеверни Маријански ОстровиМартиникМавританијаМонсератМалтаМаврициусМ" + - "алдивиМалавиМексикоМалезијаМозамбикНамибијаНова КаледонијаНигерНорфолшк" + - "и ОстровНигеријаНикарагваХоландијаНорвешкаНепалНауруНиујеНов ЗеландОман" + - "ПанамаПеруФранцуска ПолинезијаПапуа Нова ГвинејаФилипиниПакистанПолскаС" + - "ент Пјер и МикеланПиткернски ОстровиПорторикоПалестински територииПорту" + - "галијаПалауПарагвајКатарЗависни земји во ОкеанијаРеунионРоманијаСрбијаР" + - "усијаРуандаСаудиска АрабијаСоломонски ОстровиСејшелиСуданШведскаСингапу" + - "рСвета ЕленаСловенијаСвалбард и Жан МејенСловачкаСиера ЛеонеСан МариноС" + - "енегалСомалијаСуринамЈужен СуданСао Томе и ПринсипеЕл СалвадорСвети Мар" + - "тинСиријаСвазилендТристан да КуњаОстрови Туркс и КаикосЧадФранцуски Јуж" + - "ни ТериторииТогоТајландТаџикистанТокелауИсточен Тимор (Тимор Лесте)Турк" + - "менистанТунисТонгаТурцијаТринидад и ТобагоТувалуТајванТанзанијаУкраинаУ" + - "гандаАмерикански територии во ПацификотОбединети нацииСоединети Америка" + - "нски ДржавиУругвајУзбекистанВатиканСент Винсент и ГренадиниВенецуелаБри" + - "тански Девствени ОстровиАмерикански Девствени ОстровиВиетнамВануатуВали" + - "с и ФутунаСамоаКосовоЈеменМајотЈужноафриканска РепубликаЗамбијаЗимбабве" + - "Непознат регионСветАфрикаСеверна АмерикаЈужна АмерикаОкеанијаЗападна Аф" + - "рикаЦентрална АмерикаИсточна АфрикаСеверна АфрикаСредна АфрикаЈужна Афр" + - "икаАмерикиСеверна континентална АмерикаКарибиИсточна АзијаЈужна АзијаЈу" + - "гоисточна АзијаЈужна ЕвропаАвстралазијаМеланезијаМикронезиски регионПол" + - "инезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсточна ЕвропаСеверна Евр" + - "опаЗападна ЕвропаЛатинска Америка" - -var mkRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008b, 0x0099, 0x00a9, - 0x00b9, 0x00c5, 0x00d7, 0x00e9, 0x010a, 0x011a, 0x012e, 0x0138, - 0x0157, 0x016b, 0x018f, 0x019f, 0x01b1, 0x01bf, 0x01d6, 0x01e6, - 0x01f4, 0x0202, 0x020c, 0x022b, 0x0239, 0x0245, 0x0255, 0x0278, - 0x0284, 0x0290, 0x029a, 0x02af, 0x02bd, 0x02d1, 0x02dd, 0x02e9, - 0x031b, 0x0336, 0x036f, 0x038c, 0x03a0, 0x03cf, 0x03ea, 0x03f2, - 0x0400, 0x0408, 0x041a, 0x0439, 0x044b, 0x0453, 0x0465, 0x0473, - 0x048e, 0x0498, 0x04a2, 0x04b4, 0x04cd, 0x04d9, 0x04e5, 0x04f5, - // Entry 40 - 7F - 0x0520, 0x052a, 0x0544, 0x0552, 0x0562, 0x056e, 0x0589, 0x0599, - 0x05a7, 0x05b7, 0x05d2, 0x05e2, 0x05ee, 0x05f6, 0x061b, 0x0631, - 0x064c, 0x065c, 0x0666, 0x0689, 0x0697, 0x06a5, 0x06c6, 0x06d2, - 0x06da, 0x06ec, 0x06fc, 0x070a, 0x0718, 0x072a, 0x074d, 0x0759, - 0x07a2, 0x07b4, 0x07bc, 0x07d5, 0x07e3, 0x0806, 0x0840, 0x0850, - 0x0860, 0x086a, 0x087a, 0x0899, 0x08ad, 0x08b7, 0x08c3, 0x08d6, - 0x08e2, 0x0922, 0x092a, 0x0932, 0x093e, 0x094c, 0x0956, 0x0964, - 0x0970, 0x0980, 0x098c, 0x099e, 0x09ac, 0x09bc, 0x09db, 0x09fc, - // Entry 80 - BF - 0x0a17, 0x0a2e, 0x0a3a, 0x0a5b, 0x0a6d, 0x0a75, 0x0a7f, 0x0a94, - 0x0aaa, 0x0abb, 0x0acb, 0x0ad7, 0x0ae9, 0x0afd, 0x0b0b, 0x0b17, - 0x0b23, 0x0b2f, 0x0b41, 0x0b52, 0x0b67, 0x0b7b, 0x0b9c, 0x0bb0, - 0x0bb8, 0x0bd3, 0x0be5, 0x0bf6, 0x0c28, 0x0c38, 0x0c4e, 0x0c5e, - 0x0c68, 0x0c7a, 0x0c88, 0x0c94, 0x0ca2, 0x0cb2, 0x0cc2, 0x0cd2, - 0x0cef, 0x0cf9, 0x0d18, 0x0d28, 0x0d3a, 0x0d4c, 0x0d5c, 0x0d66, - 0x0d70, 0x0d7a, 0x0d8d, 0x0d95, 0x0da1, 0x0da9, 0x0dd0, 0x0df2, - 0x0e02, 0x0e12, 0x0e1e, 0x0e41, 0x0e64, 0x0e76, 0x0e9f, 0x0eb5, - // Entry C0 - FF - 0x0ebf, 0x0ecf, 0x0ed9, 0x0f08, 0x0f16, 0x0f26, 0x0f32, 0x0f3e, - 0x0f4a, 0x0f69, 0x0f8c, 0x0f9a, 0x0fa4, 0x0fb2, 0x0fc2, 0x0fd7, - 0x0fe9, 0x100e, 0x101e, 0x1033, 0x1046, 0x1054, 0x1064, 0x1072, - 0x1087, 0x10aa, 0x10bf, 0x10d6, 0x10e2, 0x10f4, 0x1110, 0x1139, - 0x113f, 0x116f, 0x1177, 0x1185, 0x1199, 0x11a7, 0x11d8, 0x11f0, - 0x11fa, 0x1204, 0x1212, 0x1232, 0x123e, 0x124a, 0x125c, 0x126a, - 0x1276, 0x12b7, 0x12d4, 0x130a, 0x1318, 0x132c, 0x133a, 0x1367, - 0x1379, 0x13ad, 0x13e5, 0x13f3, 0x1401, 0x141b, 0x1425, 0x1431, - // Entry 100 - 13F - 0x143b, 0x1445, 0x1476, 0x1484, 0x1494, 0x14b1, 0x14b9, 0x14c5, - 0x14e2, 0x14fb, 0x150b, 0x1526, 0x1547, 0x1562, 0x157d, 0x1596, - 0x15ad, 0x15bb, 0x15f3, 0x15ff, 0x1618, 0x162d, 0x164e, 0x1665, - 0x167d, 0x1691, 0x16b6, 0x16ca, 0x16d4, 0x16f1, 0x170a, 0x1716, - 0x1731, 0x174c, 0x1767, 0x1767, 0x1786, -} // Size: 610 bytes - -const mlRegionStr string = "" + // Size: 9184 bytes - "അസൻഷൻ ദ്വീപ്അൻഡോറയുണൈറ്റഡ് അറബ് എമിറൈറ്റ്\u200cസ്അഫ്\u200cഗാനിസ്ഥാൻആൻറിഗ" + - "്വയും ബർബുഡയുംആൻഗ്വില്ലഅൽബേനിയഅർമേനിയഅംഗോളഅന്റാർട്ടിക്കഅർജന്റീനഅമേരിക്" + - "കൻ സമോവഓസ്ട്രിയഓസ്\u200cട്രേലിയഅറൂബഅലൻഡ് ദ്വീപുകൾഅസർബൈജാൻബോസ്നിയയും ഹെ" + - "ർസഗോവിനയുംബാർബഡോസ്ബംഗ്ലാദേശ്ബെൽജിയംബർക്കിന ഫാസോബൾഗേറിയബഹ്റിൻബറുണ്ടിബെന" + - "ിൻസെന്റ് ബാർത്തലമിബർമുഡബ്രൂണൈബൊളീവിയകരീബിയൻ നെതർലാൻഡ്സ്ബ്രസീൽബഹാമാസ്ഭൂ" + - "ട്ടാൻബൗവെട്ട് ദ്വീപ്ബോട്സ്വാനബെലറൂസ്ബെലീസ്കാനഡകോക്കസ് (കീലിംഗ്) ദ്വീപു" + - "കൾകോംഗോ - കിൻഷാസസെൻട്രൽ ആഫ്രിക്കൻ റിപ്പബ്ലിക്ക്കോംഗോ - ബ്രാസവില്ലിസ്വി" + - "റ്റ്സർലാൻഡ്കോട്ട് ഡി വാർകുക്ക് ദ്വീപുകൾചിലികാമറൂൺചൈനകൊളംബിയക്ലിപ്പെർട്" + - "ടൻ ദ്വീപ്കോസ്റ്ററിക്കക്യൂബകേപ്പ് വേർഡ്കുറാകാവോക്രിസ്മസ് ദ്വീപ്സൈപ്രസ്ച" + - "െക്കിയജർമ്മനിഡീഗോ ഗ്രാഷ്യദിജിബൗട്ടിഡെൻമാർക്ക്ഡൊമിനിക്കഡൊമിനിക്കൻ റിപ്പ" + - "ബ്ലിക്ക്അൾജീരിയസെയൂത്ത ആൻഡ് മെലിയഇക്വഡോർഎസ്റ്റോണിയ\u200dഈജിപ്ത്പശ്ചിമ " + - "സഹാറഎറിത്രിയസ്\u200cപെയിൻഎത്യോപ്യയൂറോപ്യൻ യൂണിയൻയൂറോസോൺഫിൻലാൻഡ്ഫിജിഫാക" + - "്ക്\u200cലാന്റ് ദ്വീപുകൾമൈക്രോനേഷ്യഫറോ ദ്വീപുകൾഫ്രാൻസ്ഗാബൺയുണൈറ്റഡ് കി" + - "ംഗ്ഡംഗ്രനേഡജോർജ്ജിയഫ്രഞ്ച് ഗയാനഗേൺസിഘാനജിബ്രാൾട്ടർഗ്രീൻലാൻറ്ഗാംബിയഗിനി" + - "യഗ്വാഡലൂപ്പ്ഇക്വറ്റോറിയൽ ഗിനിയഗ്രീസ്ദക്ഷിണ ജോർജ്ജിയയും ദക്ഷിണ സാൻഡ്" + - "\u200cവിച്ച് ദ്വീപുകളുംഗ്വാട്ടിമാലഗ്വാംഗിനിയ-ബിസൗഗയാനഹോങ്കോങ് (SAR) ചൈനഹ" + - "ിയേർഡും മക്\u200cഡൊണാൾഡ് ദ്വീപുകളുംഹോണ്ടുറാസ്ക്രൊയേഷ്യഹെയ്തിഹംഗറികാനറി" + - " ദ്വീപുകൾഇന്തോനേഷ്യഅയർലൻഡ്ഇസ്രായേൽഐൽ ഓഫ് മാൻഇന്ത്യബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാ" + - "സമുദ്ര പ്രദേശംഇറാഖ്ഇറാൻഐസ്\u200cലാന്റ്ഇറ്റലിജേഴ്സിജമൈക്കജോർദ്ദാൻജപ്പാൻ" + - "കെനിയകിർഗിസ്ഥാൻകംബോഡിയകിരിബാട്ടികോമൊറോസ്സെന്റ് കിറ്റ്\u200cസും നെവിസും" + - "ഉത്തരകൊറിയദക്ഷിണകൊറിയകുവൈറ്റ്കേയ്മാൻ ദ്വീപുകൾകസാഖിസ്ഥാൻലാവോസ്ലെബനൻസെന്" + - "റ് ലൂസിയലിച്ചൺസ്റ്റൈൻശ്രീലങ്കലൈബീരിയലെസോതോലിത്വാനിയലക്സംബർഗ്ലാറ്റ്വിയല" + - "ിബിയമൊറോക്കൊമൊണാക്കോമൾഡോവമോണ്ടെനെഗ്രോസെന്റ് മാർട്ടിൻമഡഗാസ്കർമാർഷൽ ദ്വീ" + - "പുകൾമാസിഡോണിയമാലിമ്യാൻമാർ (ബർമ്മ)മംഗോളിയമക്കാവു (SAR) ചൈനഉത്തര മറിയാനാ" + - " ദ്വീപുകൾമാർട്ടിനിക്ക്മൗറിറ്റാനിയമൊണ്ടെസരത്ത്മാൾട്ടമൗറീഷ്യസ്മാലിദ്വീപ്മല" + - "ാവിമെക്സിക്കോമലേഷ്യമൊസാംബിക്ക്നമീബിയന്യൂ കാലിഡോണിയനൈജർനോർഫോക് ദ്വീപ്നൈ" + - "ജീരിയനിക്കരാഗ്വനെതർലാൻഡ്\u200cസ്നോർവെനേപ്പാൾനൗറുന്യൂയിന്യൂസിലാൻറ്ഒമാൻപ" + - "നാമപെറുഫ്രഞ്ച് പോളിനേഷ്യപാപ്പുവ ന്യൂ ഗിനിയഫിലിപ്പീൻസ്പാക്കിസ്ഥാൻപോളണ്ട" + - "്സെന്റ് പിയറിയും മിക്കലണുംപിറ്റ്\u200cകെയ്\u200cൻ ദ്വീപുകൾപോർട്ടോ റിക്" + - "കോപാലസ്\u200cതീൻ പ്രദേശങ്ങൾപോർച്ചുഗൽപലാവുപരാഗ്വേഖത്തർദ്വീപസമൂഹംറീയൂണിയ" + - "ൻറൊമാനിയസെർബിയറഷ്യറുവാണ്ടസൗദി അറേബ്യസോളമൻ ദ്വീപുകൾസീഷെൽസ്സുഡാൻസ്വീഡൻസി" + - "ംഗപ്പൂർസെന്റ് ഹെലീനസ്ലോവേനിയസ്വാൽബാഡും ജാൻ മായേനുംസ്ലോവാക്യസിയെറ ലിയോൺ" + - "സാൻ മറിനോസെനഗൽസോമാലിയസുരിനാംദക്ഷിണ സുഡാൻസാവോ ടോമും പ്രിൻസിപെയുംഎൽ സാൽവ" + - "ദോർസിന്റ് മാർട്ടെൻസിറിയസ്വാസിലാന്റ്ട്രസ്റ്റൻ ഡ കൂനടർക്ക്\u200cസും കെയ്" + - "\u200cക്കോ ദ്വീപുകളുംഛാഡ്ഫ്രഞ്ച് ദക്ഷിണ ഭൂപ്രദേശംടോഗോതായ്\u200cലാൻഡ്താജി" + - "ക്കിസ്ഥാൻടോക്കെലൂതിമോർ-ലെസ്റ്റെതുർക്ക്മെനിസ്ഥാൻടുണീഷ്യടോംഗതുർക്കിട്രിന" + - "ിഡാഡും ടുബാഗോയുംടുവാലുതായ്\u200cവാൻടാൻസാനിയഉക്രെയ്\u200cൻഉഗാണ്ടയു.എസ്." + - " ദ്വീപസമൂഹങ്ങൾഐക്യരാഷ്ട്രസഭഅമേരിക്കൻ ഐക്യനാടുകൾഉറുഗ്വേഉസ്\u200cബെക്കിസ്ഥ" + - "ാൻവത്തിക്കാൻസെന്റ് വിൻസെന്റും ഗ്രനെഡൈൻസുംവെനിസ്വേലബ്രിട്ടീഷ് വെർജിൻ ദ്" + - "വീപുകൾയു.എസ്. വെർജിൻ ദ്വീപുകൾവിയറ്റ്നാംവന്വാതുവാലിസ് ആന്റ് ഫ്യൂച്യുനസമ" + - "ോവകൊസോവൊയെമൻമയോട്ടിദക്ഷിണാഫ്രിക്കസാംബിയസിംബാബ്\u200cവേഅജ്ഞാത പ്രദേശംലോ" + - "കംആഫ്രിക്കവടക്കേ അമേരിക്കതെക്കേ അമേരിക്കഓഷ്യാനിയപശ്ചിമ ആഫ്രിക്കമദ്ധ്യഅ" + - "മേരിക്കകിഴക്കൻ ആഫ്രിക്കഉത്തരാഫ്രിക്കമദ്ധ്യആഫ്രിക്കതെക്കേ ആഫ്രിക്കഅമേരി" + - "ക്കകൾവടക്കൻ അമേരിക്കകരീബിയൻകിഴക്കൻ ഏഷ്യതെക്കേ ഏഷ്യതെക്ക്-കിഴക്കൻ ഏഷ്യത" + - "െക്കേ യൂറോപ്പ്ഓസ്\u200cട്രേലിയയും ന്യൂസിലാൻഡുംമെലനേഷ്യമൈക്രോനേഷ്യൻ പ്ര" + - "ദേശംപോളിനേഷ്യഏഷ്യമദ്ധ്യേഷ്യപശ്ചിമേഷ്യയൂറോപ്പ്കിഴക്കൻ യൂറോപ്പ്വടക്കേ യൂ" + - "റോപ്പ്പശ്ചിമ യൂറോപ്പ്ലാറ്റിനമേരിക്ക" - -var mlRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0022, 0x0031, 0x007e, 0x00a5, 0x00dc, 0x00f7, 0x010c, - 0x0121, 0x0130, 0x0157, 0x016f, 0x0197, 0x01af, 0x01d0, 0x01dc, - 0x0204, 0x021c, 0x025f, 0x0277, 0x0295, 0x02aa, 0x02cc, 0x02e1, - 0x02f3, 0x0308, 0x0317, 0x0345, 0x0354, 0x0366, 0x037b, 0x03b2, - 0x03c4, 0x03d9, 0x03ee, 0x0419, 0x0434, 0x0449, 0x045b, 0x0467, - 0x04ad, 0x04d1, 0x052a, 0x055d, 0x058a, 0x05ad, 0x05d8, 0x05e4, - 0x05f6, 0x05ff, 0x0614, 0x064e, 0x0672, 0x0681, 0x06a3, 0x06bb, - 0x06e9, 0x06fe, 0x0713, 0x0728, 0x074a, 0x0768, 0x0786, 0x07a1, - // Entry 40 - 7F - 0x07e7, 0x07fc, 0x082e, 0x0843, 0x0864, 0x0879, 0x0898, 0x08b0, - 0x08c8, 0x08e0, 0x090b, 0x0920, 0x0938, 0x0944, 0x0984, 0x09a5, - 0x09c7, 0x09dc, 0x09e8, 0x0a19, 0x0a2b, 0x0a43, 0x0a65, 0x0a74, - 0x0a7d, 0x0a9e, 0x0abc, 0x0ace, 0x0add, 0x0afe, 0x0b32, 0x0b44, - 0x0bcf, 0x0bf0, 0x0bff, 0x0c1b, 0x0c27, 0x0c4f, 0x0ca8, 0x0cc6, - 0x0ce1, 0x0cf3, 0x0d02, 0x0d2a, 0x0d48, 0x0d5d, 0x0d75, 0x0d8f, - 0x0da1, 0x0e07, 0x0e16, 0x0e22, 0x0e40, 0x0e52, 0x0e64, 0x0e76, - 0x0e8e, 0x0ea0, 0x0eaf, 0x0ecd, 0x0ee2, 0x0f00, 0x0f18, 0x0f5f, - // Entry 80 - BF - 0x0f7d, 0x0f9e, 0x0fb6, 0x0fe4, 0x1002, 0x1014, 0x1023, 0x1045, - 0x106c, 0x1084, 0x1099, 0x10ab, 0x10c6, 0x10e1, 0x10fc, 0x110b, - 0x1123, 0x113b, 0x114a, 0x116e, 0x1199, 0x11b1, 0x11d9, 0x11f4, - 0x1200, 0x122a, 0x123f, 0x1264, 0x12a2, 0x12c9, 0x12ea, 0x130e, - 0x1320, 0x133b, 0x1359, 0x1368, 0x1386, 0x1398, 0x13b9, 0x13cb, - 0x13f3, 0x13ff, 0x1427, 0x143c, 0x145a, 0x147e, 0x148d, 0x14a2, - 0x14ae, 0x14c0, 0x14e1, 0x14ed, 0x14f9, 0x1505, 0x1536, 0x1568, - 0x1589, 0x15aa, 0x15bf, 0x1606, 0x1646, 0x166e, 0x16a8, 0x16c3, - // Entry C0 - FF - 0x16d2, 0x16e7, 0x16f6, 0x1714, 0x172c, 0x1741, 0x1753, 0x175f, - 0x1774, 0x1793, 0x17bb, 0x17d0, 0x17df, 0x17f1, 0x180c, 0x182e, - 0x1849, 0x1887, 0x18a2, 0x18c1, 0x18da, 0x18e9, 0x18fe, 0x1913, - 0x1935, 0x1976, 0x1992, 0x19bd, 0x19cc, 0x19f0, 0x1a19, 0x1a72, - 0x1a7e, 0x1ac2, 0x1ace, 0x1aec, 0x1b13, 0x1b2b, 0x1b53, 0x1b83, - 0x1b98, 0x1ba4, 0x1bb9, 0x1bf6, 0x1c08, 0x1c20, 0x1c38, 0x1c53, - 0x1c65, 0x1c9e, 0x1cc5, 0x1cff, 0x1d14, 0x1d41, 0x1d5f, 0x1db2, - 0x1dcd, 0x1e17, 0x1e54, 0x1e72, 0x1e87, 0x1ec5, 0x1ed1, 0x1ee3, - // Entry 100 - 13F - 0x1eef, 0x1f04, 0x1f2e, 0x1f40, 0x1f5e, 0x1f86, 0x1f92, 0x1faa, - 0x1fd5, 0x2000, 0x2018, 0x2043, 0x206d, 0x209b, 0x20c2, 0x20ec, - 0x2117, 0x2135, 0x2160, 0x2175, 0x2197, 0x21b6, 0x21eb, 0x2216, - 0x2265, 0x227d, 0x22b7, 0x22d2, 0x22de, 0x22fc, 0x231a, 0x2332, - 0x2360, 0x238b, 0x23b6, 0x23b6, 0x23e0, -} // Size: 610 bytes - -const mnRegionStr string = "" + // Size: 5609 bytes - "Асенсион аралАндорраАрабын Нэгдсэн Эмират УлсАфганистанАнтигуа ба Барбуд" + - "аАнгильяАлбаниАрмениАнголАнтарктидАргентинАмерикийн СамоаАвстриАвстрали" + - "АрубаАландын арлуудАзербайжанБосни-ГерцеговинБарбадосБангладешБельгиБур" + - "кина ФасоБолгарБахрейнБурундиБенинСент-БартельмиБермудаБрунейБоливиКари" + - "бын НидерландБразилБагамын арлуудБутанБуве аралБотсванаБеларусьБелизКан" + - "адКокос (Кийлинг) арлуудКонго-КиншасаТөв Африкийн Бүгд Найрамдах УлсКон" + - "го БраззавильШвейцарьКот-д’ИвуарКүүкийн арлуудЧилиКамерунХятадКолумбиКл" + - "иппертон аралКоста-РикаКубаКабо-ВердеКюрасаоЗул сарын аралКипрЧехГерман" + - "Диего ГарсиаДжибутиДаниДоминикаБүгд Найрамдах Доминикан УлсАлжирСеута б" + - "а МелильяЭквадорЭстониЕгипетБаруун СахарЭритрейИспаниЭтиопЕвропын Холбо" + - "оЕвро бүсФинландФижиФолклендийн арлуудМикронезиФарерын арлуудФранцГабон" + - "Их БританиГренадаГүржФранцын ГвианаГернсиГанаГибралтарГренландГамбиГвин" + - "ейГваделупЭкваторын ГвинейГрекӨмнөд Жоржиа ба Өмнөд Сэндвичийн АрлуудГв" + - "атемалГуамГвиней-БисауГайанаБНХАУ-ын Тусгай захиргааны бүс Хонг КонгХер" + - "д ба Макдональдийн арлуудГондурасХорватГаитиУнгарКанарын арлуудИндонезИ" + - "рландИзраильМэн АралЭнэтхэгБританийн харьяа Энэтхэгийн далай дахь нутаг" + - " дэвсгэрИракИранИсландИталиЖерсиЯмайкаЙорданЯпонКениКыргызстанКамбожКири" + - "батиКоморын арлуудСент-Киттс ба НевисХойд СолонгосӨмнөд СолонгосКувейтК" + - "айманы арлуудКазахстанЛаосЛиванСент ЛюсиаЛихтенштейнШри-ЛанкаЛибериЛесо" + - "тоЛитваЛюксембургЛатвиЛивиМороккоМонакоМолдавМонтенегроСент-МартинМадаг" + - "аскарМаршаллын арлуудМакедонМалиМьянмарМонголБНХАУ-ын Тусгай захиргааны" + - " бүс МакаоХойд Марианы арлуудМартиникМавританиМонтсерратМальтаМаврикиМал" + - "ьдивМалавиМексикМалайзМозамбикНамибиШинэ КаледониНигерНорфолк аралНигер" + - "иНикарагуаНидерландНорвегиБалбаНауруНиуэШинэ ЗеландОманПанамПеруФранцын" + - " ПолинезПапуа Шинэ ГвинейФилиппинПакистанПольшСент-Пьер ба МикелоПиткэрн" + - " арлуудПуэрто-РикоПалестины нутаг дэвсгэрүүдПортугалПалауПарагвайКатарНо" + - "мхон далайг тойрсон улс орнуудРеюнионРумынСербиОросРуандаСаудын АрабСол" + - "омоны арлуудСейшелийн арлуудСуданШведСингапурСент ХеленаСловениСвалбард" + - " ба Ян МайенСловакСьерра-ЛеонеСан-МариноСенегалСомалиСуринамӨмнөд СуданС" + - "ан-Томе ба ПринсипиЭль СальвадорСинт МартенСириСвазиландТристан да Кунъ" + - "яТурк ба Кайкосын АрлуудЧадФранцын өмнөд газар нутагТогоТайландТажикист" + - "анТокелауТимор-ЛестеТуркменистанТунисТонгаТуркТринидад ба ТобагоТувалуТ" + - "айваньТанзаниУкраинУгандаАмерикийн Нэгдсэн Улсын бага арлуудНэгдсэн Үнд" + - "эстний БайгууллагаАмерикийн Нэгдсэн УлсУругвайУзбекистанВатикан хот улс" + - "Сент-Винсент ба ГренадинВенесуэлБританийн Виржиний АрлуудАНУ-ын Виржини" + - "й АрлуудВьетнамВануатуУоллис ба ФутунаСамоаКосовоЙеменМайоттаӨмнөд Афри" + - "кЗамбиЗимбабвеТодорхойгүй бүсДэлхийАфрикХойд АмерикӨмнөд АмерикНомхон д" + - "алайн орнуудБаруун АфрикТөв АмерикЗүүн АфрикХойд АфрикТөв АфрикӨмнөд Аф" + - "рик тивАмерикХойд Америк тивКарибынЗүүн АзиӨмнөд АзиЗүүн өмнөд АзиӨмнөд" + - " ЕвропАвстралиазиМеланезиМикронезийн бүсПолинезиАзиТөв АзиБаруун АзиЕвро" + - "пЗүүн ЕвропХойд ЕвропБаруун ЕвропЛатин Америк" - -var mnRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0019, 0x0027, 0x0056, 0x006a, 0x008c, 0x009a, 0x00a6, - 0x00b2, 0x00bc, 0x00ce, 0x00de, 0x00fb, 0x0107, 0x0117, 0x0121, - 0x013c, 0x0150, 0x016f, 0x017f, 0x0191, 0x019d, 0x01b4, 0x01c0, - 0x01ce, 0x01dc, 0x01e6, 0x0201, 0x020f, 0x021b, 0x0227, 0x0248, - 0x0254, 0x026f, 0x0279, 0x028a, 0x029a, 0x02aa, 0x02b4, 0x02be, - 0x02e6, 0x02ff, 0x0339, 0x0358, 0x0368, 0x037e, 0x0399, 0x03a1, - 0x03af, 0x03b9, 0x03c7, 0x03e4, 0x03f7, 0x03ff, 0x0412, 0x0420, - 0x043a, 0x0442, 0x0448, 0x0454, 0x046b, 0x0479, 0x0481, 0x0491, - // Entry 40 - 7F - 0x04c6, 0x04d0, 0x04ee, 0x04fc, 0x0508, 0x0514, 0x052b, 0x0539, - 0x0545, 0x054f, 0x056a, 0x0579, 0x0587, 0x058f, 0x05b2, 0x05c4, - 0x05df, 0x05e9, 0x05f3, 0x0606, 0x0614, 0x061c, 0x0637, 0x0643, - 0x064b, 0x065d, 0x066d, 0x0677, 0x0683, 0x0693, 0x06b2, 0x06ba, - 0x0703, 0x0713, 0x071b, 0x0732, 0x073e, 0x0788, 0x07bd, 0x07cd, - 0x07d9, 0x07e3, 0x07ed, 0x0808, 0x0816, 0x0822, 0x0830, 0x083f, - 0x084d, 0x08af, 0x08b7, 0x08bf, 0x08cb, 0x08d5, 0x08df, 0x08eb, - 0x08f7, 0x08ff, 0x0907, 0x091b, 0x0927, 0x0937, 0x0952, 0x0975, - // Entry 80 - BF - 0x098e, 0x09a9, 0x09b5, 0x09d0, 0x09e2, 0x09ea, 0x09f4, 0x0a07, - 0x0a1d, 0x0a2e, 0x0a3a, 0x0a46, 0x0a50, 0x0a64, 0x0a6e, 0x0a76, - 0x0a84, 0x0a90, 0x0a9c, 0x0ab0, 0x0ac5, 0x0ad9, 0x0af8, 0x0b06, - 0x0b0e, 0x0b1c, 0x0b28, 0x0b6b, 0x0b8f, 0x0b9f, 0x0bb1, 0x0bc5, - 0x0bd1, 0x0bdf, 0x0bed, 0x0bf9, 0x0c05, 0x0c11, 0x0c21, 0x0c2d, - 0x0c46, 0x0c50, 0x0c67, 0x0c73, 0x0c85, 0x0c97, 0x0ca5, 0x0caf, - 0x0cb9, 0x0cc1, 0x0cd6, 0x0cde, 0x0ce8, 0x0cf0, 0x0d0d, 0x0d2d, - 0x0d3d, 0x0d4d, 0x0d57, 0x0d7a, 0x0d95, 0x0daa, 0x0ddc, 0x0dec, - // Entry C0 - FF - 0x0df6, 0x0e06, 0x0e10, 0x0e4c, 0x0e5a, 0x0e64, 0x0e6e, 0x0e76, - 0x0e82, 0x0e97, 0x0eb4, 0x0ed3, 0x0edd, 0x0ee5, 0x0ef5, 0x0f0a, - 0x0f18, 0x0f3d, 0x0f49, 0x0f60, 0x0f73, 0x0f81, 0x0f8d, 0x0f9b, - 0x0fb0, 0x0fd5, 0x0fee, 0x1003, 0x100b, 0x101d, 0x103b, 0x1066, - 0x106c, 0x109b, 0x10a3, 0x10b1, 0x10c5, 0x10d3, 0x10e8, 0x1100, - 0x110a, 0x1114, 0x111c, 0x113e, 0x114a, 0x1158, 0x1166, 0x1172, - 0x117e, 0x11c0, 0x11f8, 0x1220, 0x122e, 0x1242, 0x125e, 0x128b, - 0x129b, 0x12cb, 0x12f4, 0x1302, 0x1310, 0x132e, 0x1338, 0x1344, - // Entry 100 - 13F - 0x134e, 0x135c, 0x1371, 0x137b, 0x138b, 0x13a8, 0x13b4, 0x13be, - 0x13d3, 0x13ea, 0x1410, 0x1427, 0x143a, 0x144d, 0x1460, 0x1471, - 0x148d, 0x1499, 0x14b5, 0x14c3, 0x14d2, 0x14e3, 0x14fd, 0x1512, - 0x1528, 0x1538, 0x1555, 0x1565, 0x156b, 0x1578, 0x158b, 0x1595, - 0x15a8, 0x15bb, 0x15d2, 0x15d2, 0x15e9, -} // Size: 610 bytes - -const mrRegionStr string = "" + // Size: 8477 bytes - "अ\u200dॅसेन्शियन बेटअँडोरासंयुक्त अरब अमीरातअफगाणिस्तानअँटिग्वा आणि बर्ब" + - "ुडाअँग्विलाअल्बानियाअर्मेनियाअंगोलाअंटार्क्टिकाअर्जेंटिनाअमेरिकन सामोआ" + - "ऑस्ट्रियाऑस्ट्रेलियाअरुबाअ\u200dॅलँड बेटेअझरबैजानबोस्निया अणि हर्जेगोव" + - "िनाबार्बाडोसबांगलादेशबेल्जियमबुर्किना फासोबल्गेरियाबहारीनबुरुंडीबेनिनस" + - "ेंट बार्थेलेमीबर्मुडाब्रुनेईबोलिव्हियाकॅरिबियन नेदरलँड्सब्राझिलबहामाजभ" + - "ूतानबोउवेट बेटबोट्सवानाबेलारूसबेलिझेकॅनडाकोकोस (कीलिंग) बेटेकाँगो - कि" + - "ंशासाकेंद्रीय अफ्रिकी प्रजासत्ताककाँगो - ब्राझाविलेस्वित्झर्लंडआयव्हरी" + - " कोस्टकुक बेटेचिलीकॅमेरूनचीनकोलम्बियाक्लिपरटोन बेटकोस्टा रिकाक्यूबाकेप व" + - "्हर्डेक्युरासाओख्रिसमस बेटसायप्रसझेकियाजर्मनीदिएगो गार्सियाजिबौटीडेन्म" + - "ार्कडोमिनिकाडोमिनिकन प्रजासत्ताकअल्जीरियास्यूटा आणि मेलिलाइक्वाडोरएस्ट" + - "ोनियाइजिप्तपश्चिम सहाराएरिट्रियास्पेनइथिओपियायुरोपीय संघयुरोझोनफिनलंडफ" + - "िजीफॉकलंड बेटेमायक्रोनेशियाफेरो बेटेफ्रान्सगॅबॉनयुनायटेड किंगडमग्रेनेड" + - "ाजॉर्जियाफ्रेंच गयानाग्वेर्नसेघानाजिब्राल्टरग्रीनलंडगाम्बियागिनीग्वाडे" + - "लोउपेइक्वेटोरियल गिनीग्रीसदक्षिण जॉर्जिया आणि दक्षिण सँडविच बेटेग्वाटे" + - "मालागुआमगिनी-बिसाउगयानाहाँगकाँग एसएआर चीनहर्ड आणि मॅक्डोनाल्ड बेटेहोंड" + - "ुरासक्रोएशियाहैतीहंगेरीकॅनरी बेटेइंडोनेशियाआयर्लंडइस्त्राइलआयल ऑफ मॅनभ" + - "ारतब्रिटिश हिंदी महासागर क्षेत्रइराकइराणआइसलँडइटलीजर्सीजमैकाजॉर्डनजपान" + - "केनियाकिरगिझस्तानकंबोडियाकिरीबाटीकोमोरोजसेंट किट्स आणि नेव्हिसउत्तर को" + - "रियादक्षिण कोरियाकुवेतकेमन बेटेकझाकस्तानलाओसलेबनॉनसेंट ल्यूसियालिक्टेन" + - "स्टाइनश्रीलंकालायबेरियालेसोथोलिथुआनियालक्झेंबर्गलात्वियालिबियामोरोक्को" + - "मोनॅकोमोल्डोव्हामोंटेनेग्रोसेंट मार्टिनमादागास्करमार्शल बेटेमॅसेडोनिया" + - "मालीम्यानमार (बर्मा)मंगोलियामकाओ एसएआर चीनउत्तरी मारियाना बेटेमार्टिनि" + - "कमॉरिटानियामॉन्ट्सेराटमाल्टामॉरिशसमालदीवमलावीमेक्सिकोमलेशियामोझाम्बिकन" + - "ामिबियान्यू कॅलेडोनियानाइजरनॉरफॉक बेटनायजेरियानिकाराग्वानेदरलँडनॉर्वेन" + - "ेपाळनाउरूनीयून्यूझीलंडओमानपनामापेरूफ्रेंच पॉलिनेशियापापुआ न्यू गिनीफिल" + - "िपिन्सपाकिस्तानपोलंडसेंट पियरे आणि मिक्वेलोनपिटकैर्न बेटेप्युएर्तो रिक" + - "ोपॅलेस्टिनियन प्रदेशपोर्तुगालपलाऊपराग्वेकतारआउटलाईंग ओशनियारियुनियनरोम" + - "ानियासर्बियारशियारवांडासौदी अरबसोलोमन बेटेसेशेल्ससुदानस्वीडनसिंगापूरसे" + - "ंट हेलेनास्लोव्हेनियास्वालबर्ड आणि जान मायेनस्लोव्हाकियासिएरा लिओनसॅन " + - "मरीनोसेनेगलसोमालियासुरिनामदक्षिण सुदानसाओ टोम आणि प्रिंसिपेअल साल्वाडो" + - "रसिंट मार्टेनसीरियास्वाझिलँडट्रिस्टन दा कुन्हाटर्क्स आणि कैकोस बेटेचाड" + - "फ्रेंच दाक्षिणात्य प्रदेशटोगोथायलंडताजिकिस्तानतोकेलाउतिमोर-लेस्तेतुर्क" + - "मेनिस्तानट्यूनिशियाटोंगातुर्कीत्रिनिदाद आणि टोबॅगोटुवालुतैवानटांझानिया" + - "युक्रेनयुगांडायू.एस. आउटलाइंग बेटेसंयुक्त राष्ट्रयुनायटेड स्टेट्सउरुग्" + - "वेउझबेकिस्तानव्हॅटिकन सिटीसेंट व्हिन्सेंट आणि ग्रेनडाइन्सव्हेनेझुएलाब्" + - "रिटिश व्हर्जिन बेटेयू.एस. व्हर्जिन बेटेव्हिएतनामवानुआतुवालिस आणि फ्यूच" + - "ूनासामोआकोसोव्होयेमेनमायोट्टेदक्षिण आफ्रिकाझाम्बियाझिम्बाब्वेअज्ञात प्" + - "रदेशविश्वआफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओशनियापश्चिम आफ्रिकामध्य अम" + - "ेरिकापूर्व आफ्रिकाउत्तर आफ्रिकामध्य आफ्रिकादक्षिणी आफ्रिकाअमेरिकाउत्तर" + - "ी अमेरिकाकॅरीबियनपूर्व आशियादक्षिण आशियादक्षिण पूर्व आशियादक्षिण युरोप" + - "ऑस्\u200dट्रेलेशियामेलानेशियामायक्रोनेशियन प्रदेशपॉलिनेशियाअशियामध्य आ" + - "शियापश्चिम आशियायुरोपपूर्व युरोपउत्तर युरोपपश्चिम युरोपलॅटिन अमेरिका" - -var mrRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x002b, 0x003d, 0x006f, 0x0090, 0x00c8, 0x00e0, 0x00fb, - 0x0116, 0x0128, 0x014c, 0x016a, 0x018f, 0x01aa, 0x01cb, 0x01da, - 0x01f9, 0x0211, 0x0255, 0x0270, 0x028b, 0x02a3, 0x02c8, 0x02e3, - 0x02f5, 0x030a, 0x0319, 0x0344, 0x0359, 0x036e, 0x038c, 0x03c0, - 0x03d5, 0x03e7, 0x03f6, 0x0412, 0x042d, 0x0442, 0x0454, 0x0463, - 0x0494, 0x04bb, 0x050b, 0x053b, 0x055f, 0x0584, 0x059a, 0x05a6, - 0x05bb, 0x05c4, 0x05df, 0x0604, 0x0623, 0x0635, 0x0654, 0x066f, - 0x068e, 0x06a3, 0x06b5, 0x06c7, 0x06ef, 0x0701, 0x071c, 0x0734, - // Entry 40 - 7F - 0x076e, 0x0789, 0x07b8, 0x07d0, 0x07eb, 0x07fd, 0x081f, 0x083a, - 0x0849, 0x0861, 0x0880, 0x0895, 0x08a7, 0x08b3, 0x08d2, 0x08f9, - 0x0912, 0x0927, 0x0936, 0x0961, 0x0979, 0x0991, 0x09b3, 0x09ce, - 0x09da, 0x09f8, 0x0a10, 0x0a28, 0x0a34, 0x0a55, 0x0a83, 0x0a92, - 0x0afa, 0x0b18, 0x0b24, 0x0b40, 0x0b4f, 0x0b81, 0x0bc6, 0x0bde, - 0x0bf9, 0x0c05, 0x0c17, 0x0c33, 0x0c51, 0x0c66, 0x0c81, 0x0c9b, - 0x0ca7, 0x0cf8, 0x0d04, 0x0d10, 0x0d22, 0x0d2e, 0x0d3d, 0x0d4c, - 0x0d5e, 0x0d6a, 0x0d7c, 0x0d9d, 0x0db5, 0x0dcd, 0x0de2, 0x0e1e, - // Entry 80 - BF - 0x0e40, 0x0e65, 0x0e74, 0x0e8d, 0x0ea8, 0x0eb4, 0x0ec6, 0x0eeb, - 0x0f12, 0x0f2a, 0x0f45, 0x0f57, 0x0f72, 0x0f90, 0x0fa8, 0x0fba, - 0x0fd2, 0x0fe4, 0x1002, 0x1023, 0x1045, 0x1063, 0x1082, 0x10a0, - 0x10ac, 0x10d6, 0x10ee, 0x1114, 0x114c, 0x1167, 0x1185, 0x11a6, - 0x11b8, 0x11ca, 0x11dc, 0x11eb, 0x1203, 0x1218, 0x1233, 0x124b, - 0x1276, 0x1285, 0x12a1, 0x12bc, 0x12da, 0x12ef, 0x1301, 0x1310, - 0x131f, 0x132b, 0x1346, 0x1352, 0x1361, 0x136d, 0x139e, 0x13c7, - 0x13e2, 0x13fd, 0x140c, 0x144e, 0x1473, 0x149b, 0x14d2, 0x14ed, - // Entry C0 - FF - 0x14f9, 0x150e, 0x151a, 0x1545, 0x155d, 0x1575, 0x158a, 0x1599, - 0x15ab, 0x15c1, 0x15e0, 0x15f5, 0x1604, 0x1616, 0x162e, 0x164d, - 0x1671, 0x16b0, 0x16d4, 0x16f0, 0x1709, 0x171b, 0x1733, 0x1748, - 0x176a, 0x17a3, 0x17c5, 0x17e7, 0x17f9, 0x1814, 0x1846, 0x187f, - 0x1888, 0x18cf, 0x18db, 0x18ed, 0x190e, 0x1923, 0x1945, 0x196f, - 0x198d, 0x199c, 0x19ae, 0x19e6, 0x19f8, 0x1a07, 0x1a22, 0x1a37, - 0x1a4c, 0x1a80, 0x1aab, 0x1ad9, 0x1aee, 0x1b0f, 0x1b34, 0x1b8b, - 0x1bac, 0x1be7, 0x1c1b, 0x1c36, 0x1c4b, 0x1c7d, 0x1c8c, 0x1ca4, - // Entry 100 - 13F - 0x1cb3, 0x1ccb, 0x1cf3, 0x1d0b, 0x1d29, 0x1d4e, 0x1d5d, 0x1d72, - 0x1d97, 0x1dbf, 0x1dd1, 0x1df9, 0x1e1b, 0x1e40, 0x1e65, 0x1e87, - 0x1eb2, 0x1ec7, 0x1eef, 0x1f07, 0x1f26, 0x1f48, 0x1f7a, 0x1f9c, - 0x1fc6, 0x1fe4, 0x201e, 0x203c, 0x204b, 0x2067, 0x2089, 0x2098, - 0x20b7, 0x20d6, 0x20f8, 0x20f8, 0x211d, -} // Size: 610 bytes - -const msRegionStr string = "" + // Size: 2968 bytes - "Pulau AscensionAndorraEmiriah Arab BersatuAfghanistanAntigua dan Barbuda" + - "AnguillaAlbaniaArmeniaAngolaAntartikaArgentinaSamoa AmerikaAustriaAustra" + - "liaArubaKepulauan AlandAzerbaijanBosnia dan HerzegovinaBarbadosBanglades" + - "hBelgiumBurkina FasoBulgariaBahrainBurundiBeninSaint BarthélemyBermudaBr" + - "uneiBoliviaBelanda CaribbeanBrazilBahamasBhutanPulau BouvetBotswanaBelar" + - "usBelizeKanadaKepulauan Cocos (Keeling)Congo - KinshasaRepublik Afrika T" + - "engahCongo - BrazzavilleSwitzerlandCote d’IvoireKepulauan CookChileCamer" + - "oonChinaColombiaPulau ClippertonCosta RicaCubaCape VerdeCuracaoPulau Kri" + - "smasCyprusCzechiaJermanDiego GarciaDjiboutiDenmarkDominicaRepublik Domin" + - "icaAlgeriaCeuta dan MelillaEcuadorEstoniaMesirSahara BaratEritreaSepanyo" + - "lEthiopiaKesatuan EropahZon EuroFinlandFijiKepulauan FalklandMicronesiaK" + - "epulauan FaroePerancisGabonUnited KingdomGrenadaGeorgiaGuiana PerancisGu" + - "ernseyGhanaGibraltarGreenlandGambiaGuineaGuadeloupeGuinea KhatulistiwaGr" + - "eeceKepulauan Georgia Selatan & Sandwich SelatanGuatemalaGuamGuinea Biss" + - "auGuyanaHong Kong SAR ChinaKepulauan Heard & McDonaldHondurasCroatiaHait" + - "iHungaryKepulauan CanaryIndonesiaIrelandIsraelIsle of ManIndiaWilayah La" + - "utan Hindi BritishIraqIranIcelandItaliJerseyJamaicaJordanJepunKenyaKyrgy" + - "zstanKembojaKiribatiComorosSaint Kitts dan NevisKorea UtaraKorea Selatan" + - "KuwaitKepulauan CaymanKazakhstanLaosLubnanSaint LuciaLiechtensteinSri La" + - "nkaLiberiaLesothoLithuaniaLuxembourgLatviaLibyaMaghribiMonacoMoldovaMont" + - "enegroSaint MartinMadagaskarKepulauan MarshallMacedoniaMaliMyanmar (Burm" + - "a)MongoliaMacau SAR ChinaKepulauan Mariana UtaraMartiniqueMauritaniaMont" + - "serratMaltaMauritiusMaldivesMalawiMexicoMalaysiaMozambiqueNamibiaNew Cal" + - "edoniaNigerPulau NorfolkNigeriaNicaraguaBelandaNorwayNepalNauruNiueNew Z" + - "ealandOmanPanamaPeruPolinesia PerancisPapua New GuineaFilipinaPakistanPo" + - "landSaint Pierre dan MiquelonKepulauan PitcairnPuerto RicoWilayah Palest" + - "inPortugalPalauParaguayQatarOceania TerpencilReunionRomaniaSerbiaRusiaRw" + - "andaArab SaudiKepulauan SolomonSeychellesSudanSwedenSingapuraSaint Helen" + - "aSloveniaSvalbard dan Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSoma" + - "liaSurinamSudan SelatanSao Tome dan PrincipeEl SalvadorSint MaartenSyria" + - "SwazilandTristan da CunhaKepulauan Turks dan CaicosChadWilayah Selatan P" + - "erancisTogoThailandTajikistanTokelauTimor-LesteTurkmenistanTunisiaTongaT" + - "urkiTrinidad dan TobagoTuvaluTaiwanTanzaniaUkraineUgandaKepulauan Terpen" + - "cil A.S.Bangsa-bangsa BersatuAmerika SyarikatUruguayUzbekistanKota Vatic" + - "anSaint Vincent dan GrenadinesVenezuelaKepulauan Virgin BritishKepulauan" + - " Virgin A.S.VietnamVanuatuWallis dan FutunaSamoaKosovoYamanMayotteAfrika" + - " SelatanZambiaZimbabweWilayah Tidak DiketahuiDuniaAfrikaAmerika UtaraAme" + - "rika SelatanOceaniaAfrika BaratAmerika TengahAfrika TimurAfrika UtaraAfr" + - "ika TengahSelatan AfrikaAmerikaUtara AmerikaCaribbeanAsia TimurAsia Sela" + - "tanAsia TenggaraEropah SelatanAustralasiaMelanesiaWilayah MikronesiaPoli" + - "nesiaAsiaAsia TengahAsia BaratEropahEropah TimurEropah UtaraEropah Barat" + - "Amerika Latin" - -var msRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0016, 0x002a, 0x0035, 0x0048, 0x0050, 0x0057, - 0x005e, 0x0064, 0x006d, 0x0076, 0x0083, 0x008a, 0x0093, 0x0098, - 0x00a7, 0x00b1, 0x00c7, 0x00cf, 0x00d9, 0x00e0, 0x00ec, 0x00f4, - 0x00fb, 0x0102, 0x0107, 0x0118, 0x011f, 0x0125, 0x012c, 0x013d, - 0x0143, 0x014a, 0x0150, 0x015c, 0x0164, 0x016b, 0x0171, 0x0177, - 0x0190, 0x01a0, 0x01b6, 0x01c9, 0x01d4, 0x01e3, 0x01f1, 0x01f6, - 0x01fe, 0x0203, 0x020b, 0x021b, 0x0225, 0x0229, 0x0233, 0x023a, - 0x0247, 0x024d, 0x0254, 0x025a, 0x0266, 0x026e, 0x0275, 0x027d, - // Entry 40 - 7F - 0x028e, 0x0295, 0x02a6, 0x02ad, 0x02b4, 0x02b9, 0x02c5, 0x02cc, - 0x02d4, 0x02dc, 0x02eb, 0x02f3, 0x02fa, 0x02fe, 0x0310, 0x031a, - 0x0329, 0x0331, 0x0336, 0x0344, 0x034b, 0x0352, 0x0361, 0x0369, - 0x036e, 0x0377, 0x0380, 0x0386, 0x038c, 0x0396, 0x03a9, 0x03af, - 0x03db, 0x03e4, 0x03e8, 0x03f5, 0x03fb, 0x040e, 0x0428, 0x0430, - 0x0437, 0x043c, 0x0443, 0x0453, 0x045c, 0x0463, 0x0469, 0x0474, - 0x0479, 0x0495, 0x0499, 0x049d, 0x04a4, 0x04a9, 0x04af, 0x04b6, - 0x04bc, 0x04c1, 0x04c6, 0x04d0, 0x04d7, 0x04df, 0x04e6, 0x04fb, - // Entry 80 - BF - 0x0506, 0x0513, 0x0519, 0x0529, 0x0533, 0x0537, 0x053d, 0x0548, - 0x0555, 0x055e, 0x0565, 0x056c, 0x0575, 0x057f, 0x0585, 0x058a, - 0x0592, 0x0598, 0x059f, 0x05a9, 0x05b5, 0x05bf, 0x05d1, 0x05da, - 0x05de, 0x05ed, 0x05f5, 0x0604, 0x061b, 0x0625, 0x062f, 0x0639, - 0x063e, 0x0647, 0x064f, 0x0655, 0x065b, 0x0663, 0x066d, 0x0674, - 0x0681, 0x0686, 0x0693, 0x069a, 0x06a3, 0x06aa, 0x06b0, 0x06b5, - 0x06ba, 0x06be, 0x06c9, 0x06cd, 0x06d3, 0x06d7, 0x06e9, 0x06f9, - 0x0701, 0x0709, 0x070f, 0x0728, 0x073a, 0x0745, 0x0755, 0x075d, - // Entry C0 - FF - 0x0762, 0x076a, 0x076f, 0x0780, 0x0787, 0x078e, 0x0794, 0x0799, - 0x079f, 0x07a9, 0x07ba, 0x07c4, 0x07c9, 0x07cf, 0x07d8, 0x07e4, - 0x07ec, 0x0802, 0x080a, 0x0816, 0x0820, 0x0827, 0x082e, 0x0835, - 0x0842, 0x0857, 0x0862, 0x086e, 0x0873, 0x087c, 0x088c, 0x08a6, - 0x08aa, 0x08c2, 0x08c6, 0x08ce, 0x08d8, 0x08df, 0x08ea, 0x08f6, - 0x08fd, 0x0902, 0x0907, 0x091a, 0x0920, 0x0926, 0x092e, 0x0935, - 0x093b, 0x0953, 0x0968, 0x0978, 0x097f, 0x0989, 0x0995, 0x09b1, - 0x09ba, 0x09d2, 0x09e7, 0x09ee, 0x09f5, 0x0a06, 0x0a0b, 0x0a11, - // Entry 100 - 13F - 0x0a16, 0x0a1d, 0x0a2b, 0x0a31, 0x0a39, 0x0a50, 0x0a55, 0x0a5b, - 0x0a68, 0x0a77, 0x0a7e, 0x0a8a, 0x0a98, 0x0aa4, 0x0ab0, 0x0abd, - 0x0acb, 0x0ad2, 0x0adf, 0x0ae8, 0x0af2, 0x0afe, 0x0b0b, 0x0b19, - 0x0b24, 0x0b2d, 0x0b3f, 0x0b48, 0x0b4c, 0x0b57, 0x0b61, 0x0b67, - 0x0b73, 0x0b7f, 0x0b8b, 0x0b8b, 0x0b98, -} // Size: 610 bytes - -const myRegionStr string = "" + // Size: 9686 bytes - "အဆန်းရှင်းကျွန်းအန်ဒိုရာယူအေအီးအာဖဂန်နစ္စတန်အန်တီဂွါနှင့် ဘာဘူဒါအန်ဂီလာအ" + - "ယ်လ်ဘေးနီးယားအာမေးနီးယားအန်ဂိုလာအန္တာတိကအာဂျင်တီးနားအမေရိကန် ဆမိုးအားဩ" + - "စတြီးယားဩစတြေးလျအာရူးဗားအာလန်ကျွန်းအဇာဘိုင်ဂျန်ဘော့စနီးယားနှင့် ဟာဇီဂိ" + - "ုဗီနားဘာဘေးဒိုးစ်ဘင်္ဂလားဒေ့ရှ်ဘယ်လ်ဂျီယမ်ဘာကီးနား ဖားဆိုဘူလ်ဂေးရီးယား" + - "ဘာရိန်းဘူရွန်ဒီဘီနင်စိန့်ဘာသယ်လ်မီဘာမြူဒါဘရူနိုင်းဘိုလီးဗီးယားကာရစ်ဘီယ" + - "ံ နယ်သာလန်ဘရာဇီးဘဟားမားဘူတန်ဘူဗက်ကျွန်းဘော့ဆွာနာဘီလာရုစ်ဘလိဇ်ကနေဒါကိုက" + - "ိုးကျွန်းကွန်ဂိုဗဟို အာဖရိက ပြည်ထောင်စုကွန်ဂို-ဘရာဇာဗီးလ်ဆွစ်ဇာလန်ကို့" + - "တ် ဒီဗွာကွတ် ကျွန်းစုချီလီကင်မရွန်းတရုတ်ကိုလံဘီယာကလစ်ပါတန်ကျွန်းကို့စ်" + - "တာရီကာကျူးဘားကိတ်ဗာဒီကျူရေးကိုးစ်ခရစ်စမတ် ကျွန်းဆိုက်ပရပ်စ်ချက်ကီယားဂျ" + - "ာမနီဒီအဲဂိုဂါစီရာဂျီဘူတီဒိန်းမတ်ဒိုမီနီကာဒိုမီနီကန်အယ်လ်ဂျီးရီးယားဆယ်ဥ" + - "တာနှင့်မယ်လီလ်လာအီကွေဒေါအက်စတိုးနီးယားအီဂျစ်အနောက် ဆာဟာရအီရီထရီးယားစပိ" + - "န်အီသီယိုးပီးယားဥရောပသမဂ္ဂဥရောပဒေသဖင်လန်ဖီဂျီဖော့ကလန် ကျွန်းစုမိုင်ခရိ" + - "ုနီရှားဖာရိုး ကျွန်းစုများပြင်သစ်ဂါဘွန်ယူနိုက်တက်ကင်းဒမ်းဂရီနေဒါဂျော်ဂ" + - "ျီယာပြင်သစ် ဂီယာနာဂွန်းဇီဂါနာဂျီဘရော်လ်တာဂရင်းလန်းဂမ်ဘီရာဂီနီဂွါဒီလုအီ" + - "ကွေတာ ဂီနီဂရိတောင် ဂျော်ဂျီယာ နှင့် တောင် ဆင်းဒဝစ်ဂျ် ကျွန်းစုများဂွါတ" + - "ီမာလာဂူအမ်ဂီနီ-ဘီစောဂိုင်ယာနာဟောင်ကောင် (တရုတ်ပြည်)ဟတ်ကျွန်းနှင့်မက်ဒေ" + - "ါနယ်ကျွန်းစုဟွန်ဒူးရပ်စ်ခရိုအေးရှားဟေတီဟန်ဂေရီကနေရီ ကျွန်းစုအင်ဒိုနီးရ" + - "ှားအိုင်ယာလန်အစ္စရေးမန်ကျွန်းအိန္ဒိယဗြိတိသျှပိုင် အိန္ဒိယသမုဒ္ဒရာကျွန်" + - "းများအီရတ်အီရန်အိုက်စလန်အီတလီဂျာစီဂျမေကာဂျော်ဒန်ဂျပန်ကင်ညာကာဂျစ္စတန်ကမ" + - "္ဘောဒီးယားခီရီဘာတီကိုမိုရိုစ်စိန့်ကစ်နှင့်နီဗီစ်မြောက်ကိုရီးယားတောင်ကိ" + - "ုရီးယားကူဝိတ်ကေမန် ကျွန်းစုကာဇက်စတန်လာအိုလက်ဘနွန်စိန့်လူစီယာလစ်တန်စတိန" + - "်းသီရိလင်္ကာလိုက်ဘေးရီးယားလီဆိုသိုလစ်သူယေးနီးယားလူဇင်ဘတ်လတ်ဗီးယားလစ်ဗျ" + - "ားမော်ရိုကိုမိုနာကိုမောလ်ဒိုဗာမွန်တီနိဂရိုးစိန့်မာတင်မဒါဂတ်စကားမာရှယ် " + - "ကျွန်းစုမက်ဆီဒိုးနီးယားမာလီမြန်မာမွန်ဂိုးလီးယားမကာအို (တရုတ်ပြည်)တောင်" + - "ပိုင်းမာရီအာနာကျွန်းစုမာတီနိခ်မော်ရီတေးနီးယားမောင့်စဲရက်မောလ်တာမောရစ်ရ" + - "ှမော်လ်ဒိုက်မာလာဝီမက္ကဆီကိုမလေးရှားမိုဇမ်ဘစ်နမီးဘီးယားနယူး ကယ်လီဒိုနီး" + - "ယားနိုင်ဂျာနောဖုတ်ကျွန်းနိုင်ဂျီးရီးယားနီကာရာဂွါနယ်သာလန်နော်ဝေနီပေါနော" + - "်ရူးနီဥူအေနယူးဇီလန်အိုမန်ပနားမားပီရူးပြင်သစ် ပေါ်လီနီးရှားပါပူအာ နယူးဂ" + - "ီနီဖိလစ်ပိုင်ပါကစ္စတန်ပိုလန်စိန့်ပီအဲရ်နှင့် မီကွီလွန်ပစ်တ်ကိန်းကျွန်း" + - "စုပေါ်တိုရီကိုပါလက်စတိုင်း ပိုင်နက်ပေါ်တူဂီပလာအိုပါရာဂွေးကာတာသမုဒ္ဒရာ " + - "အပြင်ဘက်ရှိ ကျွန်းနိုင်ငံများရီယူနီယန်ရိုမေးနီးယားဆားဘီးယားရုရှားရဝန်ဒ" + - "ါဆော်ဒီအာရေးဘီးယားဆော်လမွန်ကျွန်းစုဆေးရှဲဆူဒန်ဆွီဒင်စင်္ကာပူစိန့်ဟယ်လယ" + - "်နာဆလိုဗေးနီးယားစဗိုလ်ဘတ်နှင့်ဂျန်မေရန်ဆလိုဗက်ကီးယားဆီယာရာ လီယွန်းဆန်မ" + - "ာရီနိုဆီနီဂေါဆိုမာလီယာဆူရာနမ်တောင် ဆူဒန်ဆောင်တူမေးနှင့် ပရင်စီပီအယ်လ်ဆ" + - "ာဗေးဒိုးစင့်မာတင်ဆီးရီးယားဆွာဇီလန်ထရစ္စတန် ဒါ ကွန်ဟာတခ်စ်နှင့်ကာအီကိုစ" + - "်ကျွန်းစုချဒ်ပြင်သစ် တောင်ပိုင်း ပိုင်နက်များတိုဂိုထိုင်းတာဂျီကစ္စတန်တ" + - "ိုကလောင်အရှေ့တီမောတာ့ခ်မင်နစ္စတန်တူနီးရှားတွန်ဂါတူရကီထရီနီဒတ်နှင့် တို" + - "ဘက်ဂိုတူဗားလူထိုင်ဝမ်တန်ဇန်းနီးယားယူကရိန်းယူဂန်းဒါးယူနိုက်တက်စတိတ် ကျွ" + - "န်းနိုင်ငံများကုလသမဂ္ဂအမေရိကန် ပြည်ထောင်စုဥရုဂွေးဥဇဘက်ကစ္စတန်ဗာတီကန်စီ" + - "းတီးစိန့်ဗင်းဆင့်နှင့် ဂရိနေဒိုင်ဗင်နီဇွဲလားဗြိတိသျှ ဗာဂျင်း ကျွန်းစုယ" + - "ူအက်စ် ဗာဂျင်း ကျွန်းစုဗီယက်နမ်ဗနွားတူဝေါလစ်နှင့် ဖူကျူးနားဆမိုးအားကို" + - "ဆိုဗိုယီမင်မေယော့တောင်အာဖရိကဇမ်ဘီယာဇင်ဘာဘွေမသိ (သို့) မရှိသော ဒေသကမ္ဘာ" + - "အာဖရိကမြောက် အမေရိကတိုက်တောင် အမေရိကသမုဒ္ဒရာဒေသအနောက် အာဖရိကဗဟို အမေရိ" + - "ကအရှေ့ အာဖရိကမြောက် အာဖရိကအလယ် အာဖရိကအာဖရိက တောင်ပိုင်းအမေရိကန်မြောက် " + - "အမေရိကကာရစ်ဘီယံအရှေ့အာရှတောင်အာရှအရှေ့တောင်အာရှတောင်ဥရောပဩစတြေးလျနှင့်" + - " နယူးဇီလန်မီလာနီးရှားမိုက်ခရိုနီးရှား ဒေသပိုလီနီရှားအာရှအလယ်အာရှအနောက်အာ" + - "ရှဥရောပအရှေ့ ဥရောပမြောက် ဥရောပအနောက် ဥရောပလက်တင်အမေရိက" - -var myRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0030, 0x0048, 0x005d, 0x0084, 0x00be, 0x00d3, 0x00fd, - 0x011e, 0x0136, 0x014e, 0x0172, 0x01a3, 0x01be, 0x01d6, 0x01ee, - 0x020f, 0x0233, 0x0288, 0x02a9, 0x02d3, 0x02f4, 0x031f, 0x0346, - 0x035b, 0x0373, 0x0382, 0x03ac, 0x03c1, 0x03dc, 0x0400, 0x0434, - 0x0446, 0x045b, 0x046a, 0x048b, 0x04a6, 0x04be, 0x04cd, 0x04dc, - 0x0503, 0x0518, 0x0559, 0x058d, 0x05a8, 0x05ca, 0x05ef, 0x05fe, - 0x0619, 0x0628, 0x0643, 0x0670, 0x0694, 0x06a9, 0x06c1, 0x06e5, - 0x0710, 0x0731, 0x074c, 0x075e, 0x0785, 0x079a, 0x07b2, 0x07cd, - // Entry 40 - 7F - 0x07eb, 0x0818, 0x0854, 0x086c, 0x0896, 0x08a8, 0x08ca, 0x08eb, - 0x08fa, 0x0924, 0x0942, 0x095a, 0x096c, 0x097b, 0x09ac, 0x09d9, - 0x0a10, 0x0a25, 0x0a37, 0x0a6d, 0x0a82, 0x0aa0, 0x0ac8, 0x0add, - 0x0ae9, 0x0b0d, 0x0b28, 0x0b3d, 0x0b49, 0x0b5e, 0x0b80, 0x0b89, - 0x0c1e, 0x0c39, 0x0c48, 0x0c64, 0x0c7f, 0x0cbb, 0x0d18, 0x0d3c, - 0x0d5d, 0x0d69, 0x0d7e, 0x0da6, 0x0dcd, 0x0deb, 0x0e00, 0x0e1b, - 0x0e30, 0x0ea3, 0x0eb2, 0x0ec1, 0x0edc, 0x0eeb, 0x0efa, 0x0f0c, - 0x0f24, 0x0f33, 0x0f42, 0x0f60, 0x0f84, 0x0f9c, 0x0fbd, 0x0ff6, - // Entry 80 - BF - 0x1023, 0x104d, 0x105f, 0x1087, 0x10a2, 0x10b1, 0x10c9, 0x10ea, - 0x110e, 0x112c, 0x1156, 0x116e, 0x1198, 0x11b0, 0x11cb, 0x11e0, - 0x11fe, 0x1216, 0x1234, 0x125b, 0x1279, 0x1297, 0x12c2, 0x12ef, - 0x12fb, 0x130d, 0x1337, 0x1367, 0x13b8, 0x13d0, 0x13fd, 0x141e, - 0x1433, 0x144b, 0x146c, 0x147e, 0x1499, 0x14b1, 0x14cc, 0x14ea, - 0x1521, 0x1539, 0x1560, 0x158d, 0x15a8, 0x15c0, 0x15d2, 0x15e1, - 0x15f6, 0x1608, 0x1623, 0x1635, 0x164a, 0x1659, 0x1696, 0x16c1, - 0x16df, 0x16fa, 0x170c, 0x1758, 0x178e, 0x17b2, 0x17ef, 0x1807, - // Entry C0 - FF - 0x1819, 0x1831, 0x183d, 0x18ab, 0x18c6, 0x18ea, 0x1905, 0x1917, - 0x1929, 0x195c, 0x198f, 0x19a1, 0x19b0, 0x19c2, 0x19da, 0x1a01, - 0x1a28, 0x1a6d, 0x1a94, 0x1abc, 0x1ada, 0x1aef, 0x1b0a, 0x1b1f, - 0x1b3e, 0x1b84, 0x1bae, 0x1bc9, 0x1be4, 0x1bfc, 0x1c2e, 0x1c7f, - 0x1c8b, 0x1ce7, 0x1cf9, 0x1d0b, 0x1d2f, 0x1d4a, 0x1d68, 0x1d95, - 0x1db0, 0x1dc2, 0x1dd1, 0x1e14, 0x1e29, 0x1e41, 0x1e68, 0x1e80, - 0x1e9b, 0x1efc, 0x1f14, 0x1f4e, 0x1f63, 0x1f87, 0x1fae, 0x2003, - 0x2024, 0x206b, 0x20af, 0x20c7, 0x20dc, 0x2119, 0x2131, 0x214c, - // Entry 100 - 13F - 0x215b, 0x216d, 0x218e, 0x21a3, 0x21bb, 0x21f3, 0x2202, 0x2214, - 0x2248, 0x226a, 0x228b, 0x22b0, 0x22cf, 0x22f1, 0x2316, 0x2335, - 0x2369, 0x2381, 0x23a6, 0x23c1, 0x23dc, 0x23f7, 0x2421, 0x243f, - 0x2482, 0x24a3, 0x24dd, 0x24fe, 0x250a, 0x2522, 0x2540, 0x254f, - 0x256e, 0x2590, 0x25b2, 0x25b2, 0x25d6, -} // Size: 610 bytes - -const neRegionStr string = "" + // Size: 9054 bytes - "एस्केन्सन टापुअन्डोर्रासंयुक्त अरब इमिराट्सअफगानिस्तानएन्टिगुआ र बारबुडा" + - "आङ्गुइलाअल्बेनियाआर्मेनियाअङ्गोलाअन्टारटिकाअर्जेन्टिनाअमेरिकी समोआअष्ट" + - "्रियाअष्ट्रेलियाअरुबाअलान्ड टापुहरुअजरबैजानबोस्निया एण्ड हर्जगोभिनियाब" + - "ार्बाडोसबङ्गलादेशबेल्जियमबर्किना फासोबुल्गेरियाबहराइनबुरूण्डीबेनिनसेन्" + - "ट बार्थालेमीबर्मुडाब्रुनाइबोलिभियाक्यारिवियन नेदरल्याण्ड्सब्राजिलबहामा" + - "सभुटानबुभेट टापुबोट्स्वानाबेलारूसबेलिजक्यानाडाकोकोस (किलिंग) टापुहरुकङ" + - "्गो - किन्शासाकेन्द्रीय अफ्रिकी गणतन्त्रकङ्गो ब्राजाभिलस्विजरल्याण्डआइ" + - "भोरी कोस्टकुक टापुहरुचिलीक्यामरूनचीनकोलोम्बियाक्लिप्पेर्टन टापुकोष्टार" + - "िकाक्युबाकेप भर्डेकुराकाओक्रिष्टमस टापुसाइप्रसचेकियाजर्मनीडियगो गार्सि" + - "याडिजिबुटीडेनमार्कडोमिनिकाडोमिनिकन गणतन्त्रअल्जेरियासिउटा र मेलिलाइक्व" + - "ेडोरइस्टोनियाइजिप्टपश्चिमी साहाराएरित्रियास्पेनइथियोपियायुरोपियन युनिय" + - "नयुरोजोनफिन्ल्याण्डफिजीफकल्याण्ड टापुहरुमाइक्रोनेसियाफारो टापुहरूफ्रान" + - "्सगावोनबेलायतग्रेनाडाजर्जियाफ्रान्सेली गायनागुएर्नसेघानाजिब्राल्टारग्र" + - "िनल्याण्डगाम्वियागिनीग्वाडेलुपभू-मध्यीय गिनीग्रिसदक्षिण जर्जिया र दक्ष" + - "िण स्यान्डवीच टापुहरूग्वाटेमालागुवामगिनी-बिसाउगुयानाहङकङ चिनियाँ समाजब" + - "ादी स्वायत्त क्षेत्रहर्ड टापु र म्याकडोनाल्ड टापुहरुहन्डुरासक्रोएशियाह" + - "ैटीहङ्गेरीक्यानारी टापुहरूइन्डोनेशियाआयरल्याण्डइजरायलआइल अफ म्यानभारतब" + - "ेलायती हिन्द महासागर क्षेत्रइराकइरानआइस्ल्याण्डइटालीजर्सीजमाइकाजोर्डनज" + - "ापानकेन्याकिर्गिस्तानकम्बोडियाकिरिबाटीकोमोरोससेन्ट किट्स र नेभिसउत्तर " + - "कोरियादक्षिण कोरियाकुवेतकेयमान टापुकाजाकस्तानलाओसलेबननसेन्ट लुसियालिएख" + - "टेन्स्टाइनश्रीलङ्कालाइबेरियालेसोथोलिथुएनियालक्जेमबर्गलाट्भियालिबियामोर" + - "ोक्कोमोनाकोमाल्डोभामोन्टेनेग्रोसेन्ट मार्टिनमाडागास्करमार्शल टापुहरुम्" + - "यासेडोनियामालीम्यान्मार (बर्मा)मङ्गोलियामकाउ चिनियाँ स्वशासित क्षेत्रउ" + - "त्तरी मारिआना टापुमार्टिनिकमाउरिटानियामोन्टसेर्राटमाल्टामाउरिटसमाल्दिभ" + - "्समालावीमेक्सिकोमलेसियामोजाम्बिकनामिबियान्यु क्यालेडोनियानाइजरनोरफोल्क" + - " टापुनाइजेरियानिकारागुवानेदरल्याण्डनर्वेनेपालनाउरूनियुइन्युजिल्याण्डओमनप" + - "्यानामापेरूफ्रान्सेली पोलिनेसियापपुआ न्यू गाइनियाफिलिपिन्सपाकिस्तानपोल" + - "्याण्डसेन्ट पिर्रे र मिक्केलोनपिटकाइर्न टापुहरुपुएर्टो रिकोप्यालेस्टनी" + - " भू-भागहरुपोर्चुगलपलाउप्याराग्वेकतारबाह्य ओसनियारियुनियनरोमेनियासर्बियार" + - "ूसरवाण्डासाउदी अरबसोलोमोन टापुहरुसेचेलेससुडानस्विडेनसिङ्गापुरसेन्ट हेल" + - "ेनास्लोभेनियासभाल्बार्ड र जान मायेनस्लोभाकियासिएर्रा लिओनसान् मारिनोसे" + - "नेगलसोमालियासुरिनेमदक्षिणी सुडानसाओ टोमे र प्रिन्सिपएल् साल्भाडोरसिन्ट" + - " मार्टेनसिरियास्वाजिल्याण्डट्रिस्टान डा कुन्हातुर्क र काइकोस टापुचाडफ्रा" + - "न्सेली दक्षिणी क्षेत्रहरुटोगोथाइल्याण्डताजिकिस्तानतोकेलाउटिमोर-लेस्टेत" + - "ुर्कमेनिस्तानट्युनिसियाटोंगाटर्कीत्रिनिडाड एण्ड टोबागोतुभालुताइवानतान्" + - "जानियायुक्रेनयुगाण्डासंयुक्त राज्यका बाह्य टापुहरुसंयुक्त राष्ट्र संघस" + - "ंयुक्त राज्यउरूग्वेउज्बेकिस्तानभेटिकन सिटीसेन्ट भिन्सेन्ट र ग्रेनाडिन्" + - "सभेनेजुएलाबेलायती भर्जिन टापुहरुसंयुक्त राज्य भर्जिन टापुहरुभिएतनामभान" + - "ुआतुवालिस र फुटुनासामोआकोसोभोयेमेनमायोट्टदक्षिण अफ्रिकाजाम्बियाजिम्बाब" + - "ेअज्ञात क्षेत्रविश्वअफ्रिकाउत्तर अमेरिकादक्षिण अमेरिकाओसनियापश्चिमी अफ" + - "्रिकाकेन्द्रीय अमेरिकापूर्वी अफ्रिकाउत्तरी अफ्रिकामध्य अफ्रिकादक्षिणी " + - "अफ्रिकाअमेरिकासउत्तरी अमेरिकाक्यारिबियनपूर्वी एशियादक्षिणी एशियादक्षिण" + - " पूर्वी एशियादक्षिणी युरोपअष्ट्रालासियामेलानेसियामाइक्रोनेसियाली क्षेत्र" + - "पोलिनेशियाएशियाकेन्द्रीय एशियापश्चिमी एशियायुरोपपूर्वी युरोपउत्तरी युर" + - "ोपपश्चिमी युरोपल्याटिन अमेरिका" - -var neRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0028, 0x0043, 0x007b, 0x009c, 0x00ce, 0x00e6, 0x0101, - 0x011c, 0x0131, 0x014f, 0x0170, 0x0192, 0x01ad, 0x01ce, 0x01dd, - 0x0205, 0x021d, 0x0267, 0x0282, 0x029d, 0x02b5, 0x02d7, 0x02f5, - 0x0307, 0x031f, 0x032e, 0x035c, 0x0371, 0x0386, 0x039e, 0x03e4, - 0x03f9, 0x040b, 0x041a, 0x0436, 0x0454, 0x0469, 0x0478, 0x0490, - 0x04ca, 0x04f4, 0x053e, 0x0569, 0x0590, 0x05b2, 0x05d1, 0x05dd, - 0x05f5, 0x05fe, 0x061c, 0x064d, 0x066b, 0x067d, 0x0696, 0x06ab, - 0x06d3, 0x06e8, 0x06fa, 0x070c, 0x0734, 0x074c, 0x0764, 0x077c, - // Entry 40 - 7F - 0x07ad, 0x07c8, 0x07ee, 0x0806, 0x0821, 0x0833, 0x085b, 0x0876, - 0x0885, 0x08a0, 0x08cb, 0x08e0, 0x0901, 0x090d, 0x093e, 0x0965, - 0x0987, 0x099c, 0x09ab, 0x09bd, 0x09d5, 0x09ea, 0x0a18, 0x0a30, - 0x0a3c, 0x0a5d, 0x0a81, 0x0a99, 0x0aa5, 0x0ac0, 0x0ae6, 0x0af5, - 0x0b69, 0x0b87, 0x0b96, 0x0bb2, 0x0bc4, 0x0c2e, 0x0c86, 0x0c9e, - 0x0cb9, 0x0cc5, 0x0cda, 0x0d08, 0x0d29, 0x0d47, 0x0d59, 0x0d79, - 0x0d85, 0x0dd6, 0x0de2, 0x0dee, 0x0e0f, 0x0e1e, 0x0e2d, 0x0e3f, - 0x0e51, 0x0e60, 0x0e72, 0x0e93, 0x0eae, 0x0ec6, 0x0edb, 0x0f0e, - // Entry 80 - BF - 0x0f30, 0x0f55, 0x0f64, 0x0f83, 0x0fa1, 0x0fad, 0x0fbc, 0x0fde, - 0x1008, 0x1023, 0x103e, 0x1050, 0x106b, 0x1089, 0x10a1, 0x10b3, - 0x10cb, 0x10dd, 0x10f5, 0x1119, 0x113e, 0x115c, 0x1184, 0x11a8, - 0x11b4, 0x11e1, 0x11fc, 0x124d, 0x1282, 0x129d, 0x12be, 0x12e2, - 0x12f4, 0x1309, 0x1324, 0x1336, 0x134e, 0x1363, 0x137e, 0x1396, - 0x13c7, 0x13d6, 0x13fb, 0x1416, 0x1434, 0x1455, 0x1464, 0x1473, - 0x1482, 0x1491, 0x14b8, 0x14c1, 0x14d9, 0x14e5, 0x1522, 0x1551, - 0x156c, 0x1587, 0x15a2, 0x15e4, 0x1615, 0x1637, 0x1672, 0x168a, - // Entry C0 - FF - 0x1696, 0x16b4, 0x16c0, 0x16e2, 0x16fa, 0x1712, 0x1727, 0x1730, - 0x1745, 0x175e, 0x1789, 0x179e, 0x17ad, 0x17c2, 0x17dd, 0x17ff, - 0x181d, 0x1859, 0x1877, 0x1899, 0x18b8, 0x18ca, 0x18e2, 0x18f7, - 0x191c, 0x1952, 0x1977, 0x199c, 0x19ae, 0x19d5, 0x1a0a, 0x1a3d, - 0x1a46, 0x1a99, 0x1aa5, 0x1ac3, 0x1ae4, 0x1af9, 0x1b1b, 0x1b45, - 0x1b63, 0x1b72, 0x1b81, 0x1bbc, 0x1bce, 0x1be0, 0x1bfe, 0x1c13, - 0x1c2b, 0x1c7c, 0x1cb1, 0x1cd6, 0x1ceb, 0x1d0f, 0x1d2e, 0x1d7f, - 0x1d9a, 0x1dd8, 0x1e26, 0x1e3b, 0x1e50, 0x1e76, 0x1e85, 0x1e97, - // Entry 100 - 13F - 0x1ea6, 0x1ebb, 0x1ee3, 0x1efb, 0x1f13, 0x1f3b, 0x1f4a, 0x1f5f, - 0x1f84, 0x1fac, 0x1fbe, 0x1fe9, 0x201a, 0x2042, 0x206a, 0x208c, - 0x20b7, 0x20cf, 0x20f7, 0x2115, 0x2137, 0x215c, 0x2191, 0x21b6, - 0x21dd, 0x21fb, 0x223e, 0x225c, 0x226b, 0x2296, 0x22bb, 0x22ca, - 0x22ec, 0x230e, 0x2333, 0x2333, 0x235e, -} // Size: 610 bytes - -const nlRegionStr string = "" + // Size: 3081 bytes - "AscensionAndorraVerenigde Arabische EmiratenAfghanistanAntigua en Barbud" + - "aAnguillaAlbaniëArmeniëAngolaAntarcticaArgentiniëAmerikaans-SamoaOostenr" + - "ijkAustraliëArubaÅlandAzerbeidzjanBosnië en HerzegovinaBarbadosBanglades" + - "hBelgiëBurkina FasoBulgarijeBahreinBurundiBeninSaint-BarthélemyBermudaBr" + - "uneiBoliviaCaribisch NederlandBraziliëBahama’sBhutanBouveteilandBotswana" + - "BelarusBelizeCanadaCocoseilandenCongo-KinshasaCentraal-Afrikaanse Republ" + - "iekCongo-BrazzavilleZwitserlandIvoorkustCookeilandenChiliKameroenChinaCo" + - "lombiaClippertonCosta RicaCubaKaapverdiëCuraçaoChristmaseilandCyprusTsje" + - "chiëDuitslandDiego GarciaDjiboutiDenemarkenDominicaDominicaanse Republie" + - "kAlgerijeCeuta en MelillaEcuadorEstlandEgypteWestelijke SaharaEritreaSpa" + - "njeEthiopiëEuropese UnieeurozoneFinlandFijiFalklandeilandenMicronesiaFae" + - "röerFrankrijkGabonVerenigd KoninkrijkGrenadaGeorgiëFrans-GuyanaGuernseyG" + - "hanaGibraltarGroenlandGambiaGuineeGuadeloupeEquatoriaal-GuineaGriekenlan" + - "dZuid-Georgia en Zuidelijke SandwicheilandenGuatemalaGuamGuinee-BissauGu" + - "yanaHongkong SAR van ChinaHeard en McDonaldeilandenHondurasKroatiëHaïtiH" + - "ongarijeCanarische EilandenIndonesiëIerlandIsraëlIsle of ManIndiaBrits I" + - "ndische OceaanterritoriumIrakIranIJslandItaliëJerseyJamaicaJordaniëJapan" + - "KeniaKirgiziëCambodjaKiribatiComorenSaint Kitts en NevisNoord-KoreaZuid-" + - "KoreaKoeweitKaaimaneilandenKazachstanLaosLibanonSaint LuciaLiechtenstein" + - "Sri LankaLiberiaLesothoLitouwenLuxemburgLetlandLibiëMarokkoMonacoMoldavi" + - "ëMontenegroSaint-MartinMadagaskarMarshalleilandenMacedoniëMaliMyanmar (" + - "Birma)MongoliëMacau SAR van ChinaNoordelijke MarianenMartiniqueMauritani" + - "ëMontserratMaltaMauritiusMaldivenMalawiMexicoMaleisiëMozambiqueNamibiëN" + - "ieuw-CaledoniëNigerNorfolkNigeriaNicaraguaNederlandNoorwegenNepalNauruNi" + - "ueNieuw-ZeelandOmanPanamaPeruFrans-PolynesiëPapoea-Nieuw-GuineaFilipijne" + - "nPakistanPolenSaint-Pierre en MiquelonPitcairneilandenPuerto RicoPalesti" + - "jnse gebiedenPortugalPalauParaguayQataroverig OceaniëRéunionRoemeniëServ" + - "iëRuslandRwandaSaoedi-ArabiëSalomonseilandenSeychellenSoedanZwedenSingap" + - "oreSint-HelenaSloveniëSpitsbergen en Jan MayenSlowakijeSierra LeoneSan M" + - "arinoSenegalSomaliëSurinameZuid-SoedanSao Tomé en PrincipeEl SalvadorSin" + - "t-MaartenSyriëSwazilandTristan da CunhaTurks- en CaicoseilandenTsjaadFra" + - "nse Gebieden in de zuidelijke Indische OceaanTogoThailandTadzjikistanTok" + - "elauOost-TimorTurkmenistanTunesiëTongaTurkijeTrinidad en TobagoTuvaluTai" + - "wanTanzaniaOekraïneOegandaKleine afgelegen eilanden van de Verenigde Sta" + - "tenVerenigde NatiesVerenigde StatenUruguayOezbekistanVaticaanstadSaint V" + - "incent en de GrenadinesVenezuelaBritse MaagdeneilandenAmerikaanse Maagde" + - "neilandenVietnamVanuatuWallis en FutunaSamoaKosovoJemenMayotteZuid-Afrik" + - "aZambiaZimbabweonbekend gebiedwereldAfrikaNoord-AmerikaZuid-AmerikaOcean" + - "iëWest-AfrikaMidden-AmerikaOost-AfrikaNoord-AfrikaCentraal-AfrikaZuideli" + - "jk AfrikaAmerikaNoordelijk AmerikaCaribisch gebiedOost-AziëZuid-AziëZuid" + - "oost-AziëZuid-EuropaAustralaziëMelanesiëMicronesische regioPolynesiëAzië" + - "Centraal-AziëWest-AziëEuropaOost-EuropaNoord-EuropaWest-EuropaLatijns-Am" + - "erika" - -var nlRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0049, 0x0051, 0x0059, - 0x0061, 0x0067, 0x0071, 0x007c, 0x008c, 0x0096, 0x00a0, 0x00a5, - 0x00ab, 0x00b7, 0x00cd, 0x00d5, 0x00df, 0x00e6, 0x00f2, 0x00fb, - 0x0102, 0x0109, 0x010e, 0x011f, 0x0126, 0x012c, 0x0133, 0x0146, - 0x014f, 0x0159, 0x015f, 0x016b, 0x0173, 0x017a, 0x0180, 0x0186, - 0x0193, 0x01a1, 0x01be, 0x01cf, 0x01da, 0x01e3, 0x01ef, 0x01f4, - 0x01fc, 0x0201, 0x0209, 0x0213, 0x021d, 0x0221, 0x022c, 0x0234, - 0x0243, 0x0249, 0x0252, 0x025b, 0x0267, 0x026f, 0x0279, 0x0281, - // Entry 40 - 7F - 0x0297, 0x029f, 0x02af, 0x02b6, 0x02bd, 0x02c3, 0x02d4, 0x02db, - 0x02e1, 0x02ea, 0x02f7, 0x02ff, 0x0306, 0x030a, 0x031a, 0x0324, - 0x032c, 0x0335, 0x033a, 0x034d, 0x0354, 0x035c, 0x0368, 0x0370, - 0x0375, 0x037e, 0x0387, 0x038d, 0x0393, 0x039d, 0x03af, 0x03ba, - 0x03e5, 0x03ee, 0x03f2, 0x03ff, 0x0405, 0x041b, 0x0434, 0x043c, - 0x0444, 0x044a, 0x0453, 0x0466, 0x0470, 0x0477, 0x047e, 0x0489, - 0x048e, 0x04ae, 0x04b2, 0x04b6, 0x04bd, 0x04c4, 0x04ca, 0x04d1, - 0x04da, 0x04df, 0x04e4, 0x04ed, 0x04f5, 0x04fd, 0x0504, 0x0518, - // Entry 80 - BF - 0x0523, 0x052d, 0x0534, 0x0543, 0x054d, 0x0551, 0x0558, 0x0563, - 0x0570, 0x0579, 0x0580, 0x0587, 0x058f, 0x0598, 0x059f, 0x05a5, - 0x05ac, 0x05b2, 0x05bb, 0x05c5, 0x05d1, 0x05db, 0x05eb, 0x05f5, - 0x05f9, 0x0608, 0x0611, 0x0624, 0x0638, 0x0642, 0x064d, 0x0657, - 0x065c, 0x0665, 0x066d, 0x0673, 0x0679, 0x0682, 0x068c, 0x0694, - 0x06a4, 0x06a9, 0x06b0, 0x06b7, 0x06c0, 0x06c9, 0x06d2, 0x06d7, - 0x06dc, 0x06e0, 0x06ed, 0x06f1, 0x06f7, 0x06fb, 0x070b, 0x071e, - 0x0728, 0x0730, 0x0735, 0x074d, 0x075d, 0x0768, 0x077c, 0x0784, - // Entry C0 - FF - 0x0789, 0x0791, 0x0796, 0x07a5, 0x07ad, 0x07b6, 0x07bd, 0x07c4, - 0x07ca, 0x07d8, 0x07e8, 0x07f2, 0x07f8, 0x07fe, 0x0807, 0x0812, - 0x081b, 0x0833, 0x083c, 0x0848, 0x0852, 0x0859, 0x0861, 0x0869, - 0x0874, 0x0889, 0x0894, 0x08a0, 0x08a6, 0x08af, 0x08bf, 0x08d7, - 0x08dd, 0x090d, 0x0911, 0x0919, 0x0925, 0x092c, 0x0936, 0x0942, - 0x094a, 0x094f, 0x0956, 0x0968, 0x096e, 0x0974, 0x097c, 0x0985, - 0x098c, 0x09bd, 0x09cd, 0x09dd, 0x09e4, 0x09ef, 0x09fb, 0x0a19, - 0x0a22, 0x0a38, 0x0a53, 0x0a5a, 0x0a61, 0x0a71, 0x0a76, 0x0a7c, - // Entry 100 - 13F - 0x0a81, 0x0a88, 0x0a93, 0x0a99, 0x0aa1, 0x0ab0, 0x0ab6, 0x0abc, - 0x0ac9, 0x0ad5, 0x0add, 0x0ae8, 0x0af6, 0x0b01, 0x0b0d, 0x0b1c, - 0x0b2c, 0x0b33, 0x0b45, 0x0b55, 0x0b5f, 0x0b69, 0x0b77, 0x0b82, - 0x0b8e, 0x0b98, 0x0bab, 0x0bb5, 0x0bba, 0x0bc8, 0x0bd2, 0x0bd8, - 0x0be3, 0x0bef, 0x0bfa, 0x0bfa, 0x0c09, -} // Size: 610 bytes - -const noRegionStr string = "" + // Size: 2825 bytes - "AscensionAndorraDe forente arabiske emiraterAfghanistanAntigua og Barbud" + - "aAnguillaAlbaniaArmeniaAngolaAntarktisArgentinaAmerikansk SamoaØsterrike" + - "AustraliaArubaÅlandAserbajdsjanBosnia-HercegovinaBarbadosBangladeshBelgi" + - "aBurkina FasoBulgariaBahrainBurundiBeninSaint-BarthélemyBermudaBruneiBol" + - "iviaKaribisk NederlandBrasilBahamasBhutanBouvetøyaBotswanaHviterusslandB" + - "elizeCanadaKokosøyeneKongo-KinshasaDen sentralafrikanske republikkKongo-" + - "BrazzavilleSveitsElfenbenskystenCookøyeneChileKamerunKinaColombiaClipper" + - "tonøyaCosta RicaCubaKapp VerdeCuraçaoChristmasøyaKyprosTsjekkiaTysklandD" + - "iego GarciaDjiboutiDanmarkDominicaDen dominikanske republikkAlgerieCeuta" + - " og MelillaEcuadorEstlandEgyptVest-SaharaEritreaSpaniaEtiopiaEUeurosonen" + - "FinlandFijiFalklandsøyeneMikronesiaføderasjonenFærøyeneFrankrikeGabonSto" + - "rbritanniaGrenadaGeorgiaFransk GuyanaGuernseyGhanaGibraltarGrønlandGambi" + - "aGuineaGuadeloupeEkvatorial-GuineaHellasSør-Georgia og Sør-Sandwichøyene" + - "GuatemalaGuamGuinea-BissauGuyanaHongkong S.A.R. KinaHeard- og McDonaldøy" + - "eneHondurasKroatiaHaitiUngarnKanariøyeneIndonesiaIrlandIsraelManIndiaDet" + - " britiske territoriet i IndiahavetIrakIranIslandItaliaJerseyJamaicaJorda" + - "nJapanKenyaKirgisistanKambodsjaKiribatiKomoreneSaint Kitts og NevisNord-" + - "KoreaSør-KoreaKuwaitCaymanøyeneKasakhstanLaosLibanonSt. LuciaLiechtenste" + - "inSri LankaLiberiaLesothoLitauenLuxemburgLatviaLibyaMarokkoMonacoMoldova" + - "MontenegroSaint-MartinMadagaskarMarshalløyeneMakedoniaMaliMyanmar (Burma" + - ")MongoliaMacao S.A.R. KinaNord-MarianeneMartiniqueMauritaniaMontserratMa" + - "ltaMauritiusMaldiveneMalawiMexicoMalaysiaMosambikNamibiaNy-CaledoniaNige" + - "rNorfolkøyaNigeriaNicaraguaNederlandNorgeNepalNauruNiueNew ZealandOmanPa" + - "namaPeruFransk PolynesiaPapua Ny-GuineaFilippinenePakistanPolenSaint-Pie" + - "rre-et-MiquelonPitcairnPuerto RicoDet palestinske områdetPortugalPalauPa" + - "raguayQatarYtre OseaniaRéunionRomaniaSerbiaRusslandRwandaSaudi-ArabiaSal" + - "omonøyeneSeychelleneSudanSverigeSingaporeSt. HelenaSloveniaSvalbard og J" + - "an MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinamSør-SudanSão " + - "Tomé og PríncipeEl SalvadorSint MaartenSyriaSwazilandTristan da CunhaTur" + - "ks- og CaicosøyeneTsjadDe franske sørterritorierTogoThailandTadsjikistan" + - "TokelauØst-TimorTurkmenistanTunisiaTongaTyrkiaTrinidad og TobagoTuvaluTa" + - "iwanTanzaniaUkrainaUgandaUSAs ytre øyerFNUSAUruguayUsbekistanVatikanstat" + - "enSt. Vincent og GrenadineneVenezuelaDe britiske jomfruøyeneDe amerikans" + - "ke jomfruøyeneVietnamVanuatuWallis og FutunaSamoaKosovoJemenMayotteSør-A" + - "frikaZambiaZimbabweukjent områdeverdenAfrikaNord-AmerikaSør-AmerikaOsean" + - "iaVest-AfrikaMellom-AmerikaØst-AfrikaNord-AfrikaSentral-AfrikaSørlige Af" + - "rikaAmerikaNordlige AmerikaKaribiaØst-AsiaSør-AsiaSørøst-AsiaSør-EuropaA" + - "ustralasiaMelanesiaMikronesiaPolynesiaAsiaSentral-AsiaVest-AsiaEuropaØst" + - "-EuropaNord-EuropaVest-EuropaLatin-Amerika" - -var noRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002c, 0x0037, 0x0049, 0x0051, 0x0058, - 0x005f, 0x0065, 0x006e, 0x0077, 0x0087, 0x0091, 0x009a, 0x009f, - 0x00a5, 0x00b1, 0x00c3, 0x00cb, 0x00d5, 0x00db, 0x00e7, 0x00ef, - 0x00f6, 0x00fd, 0x0102, 0x0113, 0x011a, 0x0120, 0x0127, 0x0139, - 0x013f, 0x0146, 0x014c, 0x0156, 0x015e, 0x016b, 0x0171, 0x0177, - 0x0182, 0x0190, 0x01af, 0x01c0, 0x01c6, 0x01d5, 0x01df, 0x01e4, - 0x01eb, 0x01ef, 0x01f7, 0x0205, 0x020f, 0x0213, 0x021d, 0x0225, - 0x0232, 0x0238, 0x0240, 0x0248, 0x0254, 0x025c, 0x0263, 0x026b, - // Entry 40 - 7F - 0x0285, 0x028c, 0x029c, 0x02a3, 0x02aa, 0x02af, 0x02ba, 0x02c1, - 0x02c7, 0x02ce, 0x02d0, 0x02d9, 0x02e0, 0x02e4, 0x02f3, 0x030a, - 0x0314, 0x031d, 0x0322, 0x032f, 0x0336, 0x033d, 0x034a, 0x0352, - 0x0357, 0x0360, 0x0369, 0x036f, 0x0375, 0x037f, 0x0390, 0x0396, - 0x03b9, 0x03c2, 0x03c6, 0x03d3, 0x03d9, 0x03ed, 0x0405, 0x040d, - 0x0414, 0x0419, 0x041f, 0x042b, 0x0434, 0x043a, 0x0440, 0x0443, - 0x0448, 0x046d, 0x0471, 0x0475, 0x047b, 0x0481, 0x0487, 0x048e, - 0x0494, 0x0499, 0x049e, 0x04a9, 0x04b2, 0x04ba, 0x04c2, 0x04d6, - // Entry 80 - BF - 0x04e0, 0x04ea, 0x04f0, 0x04fc, 0x0506, 0x050a, 0x0511, 0x051a, - 0x0527, 0x0530, 0x0537, 0x053e, 0x0545, 0x054e, 0x0554, 0x0559, - 0x0560, 0x0566, 0x056d, 0x0577, 0x0583, 0x058d, 0x059b, 0x05a4, - 0x05a8, 0x05b7, 0x05bf, 0x05d0, 0x05de, 0x05e8, 0x05f2, 0x05fc, - 0x0601, 0x060a, 0x0613, 0x0619, 0x061f, 0x0627, 0x062f, 0x0636, - 0x0642, 0x0647, 0x0652, 0x0659, 0x0662, 0x066b, 0x0670, 0x0675, - 0x067a, 0x067e, 0x0689, 0x068d, 0x0693, 0x0697, 0x06a7, 0x06b6, - 0x06c1, 0x06c9, 0x06ce, 0x06e6, 0x06ee, 0x06f9, 0x0711, 0x0719, - // Entry C0 - FF - 0x071e, 0x0726, 0x072b, 0x0737, 0x073f, 0x0746, 0x074c, 0x0754, - 0x075a, 0x0766, 0x0773, 0x077e, 0x0783, 0x078a, 0x0793, 0x079d, - 0x07a5, 0x07ba, 0x07c2, 0x07ce, 0x07d8, 0x07df, 0x07e6, 0x07ed, - 0x07f7, 0x080e, 0x0819, 0x0825, 0x082a, 0x0833, 0x0843, 0x0859, - 0x085e, 0x0878, 0x087c, 0x0884, 0x0890, 0x0897, 0x08a1, 0x08ad, - 0x08b4, 0x08b9, 0x08bf, 0x08d1, 0x08d7, 0x08dd, 0x08e5, 0x08ec, - 0x08f2, 0x0901, 0x0903, 0x0906, 0x090d, 0x0917, 0x0924, 0x093e, - 0x0947, 0x095f, 0x097a, 0x0981, 0x0988, 0x0998, 0x099d, 0x09a3, - // Entry 100 - 13F - 0x09a8, 0x09af, 0x09ba, 0x09c0, 0x09c8, 0x09d6, 0x09dc, 0x09e2, - 0x09ee, 0x09fa, 0x0a01, 0x0a0c, 0x0a1a, 0x0a25, 0x0a30, 0x0a3e, - 0x0a4d, 0x0a54, 0x0a64, 0x0a6b, 0x0a74, 0x0a7d, 0x0a8a, 0x0a95, - 0x0aa0, 0x0aa9, 0x0ab3, 0x0abc, 0x0ac0, 0x0acc, 0x0ad5, 0x0adb, - 0x0ae6, 0x0af1, 0x0afc, 0x0afc, 0x0b09, -} // Size: 610 bytes - -const paRegionStr string = "" + // Size: 7705 bytes - "ਅਸੈਂਸ਼ਨ ਟਾਪੂਅੰਡੋਰਾਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤਅਫ਼ਗਾਨਿਸਤਾਨਐਂਟੀਗੁਆ ਅਤੇ ਬਾਰਬੁਡਾਅੰਗੁਇਲਾ" + - "ਅਲਬਾਨੀਆਅਰਮੀਨੀਆਅੰਗੋਲਾਅੰਟਾਰਕਟਿਕਾਅਰਜਨਟੀਨਾਅਮੈਰੀਕਨ ਸਮੋਆਆਸਟਰੀਆਆਸਟ੍ਰੇਲੀਆਅਰੂਬਾ" + - "ਅਲੈਂਡ ਟਾਪੂਅਜ਼ਰਬਾਈਜਾਨਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾਬਾਰਬਾਡੋਸਬੰਗਲਾਦੇਸ਼ਬੈਲਜੀਅਮਬੁਰਕ" + - "ੀਨਾ ਫ਼ਾਸੋਬੁਲਗਾਰੀਆਬਹਿਰੀਨਬੁਰੁੰਡੀਬੇਨਿਨਸੇਂਟ ਬਾਰਥੇਲੇਮੀਬਰਮੂਡਾਬਰੂਨੇਈਬੋਲੀਵੀਆਕੈ" + - "ਰੇਬੀਆਈ ਨੀਦਰਲੈਂਡਬ੍ਰਾਜ਼ੀਲਬਹਾਮਾਸਭੂਟਾਨਬੌਵੇਟ ਟਾਪੂਬੋਤਸਵਾਨਾਬੇਲਾਰੂਸਬੇਲੀਜ਼ਕੈਨੇਡ" + - "ਾਕੋਕੋਸ (ਕੀਲਿੰਗ) ਟਾਪੂਕਾਂਗੋ - ਕਿੰਸ਼ਾਸਾਕੇਂਦਰੀ ਅਫ਼ਰੀਕੀ ਗਣਰਾਜਕਾਂਗੋ - ਬ੍ਰਾਜ਼" + - "ਾਵਿਲੇਸਵਿਟਜ਼ਰਲੈਂਡਕੋਟ ਡੀਵੋਆਰਕੁੱਕ ਟਾਪੂਚਿਲੀਕੈਮਰੂਨਚੀਨਕੋਲੰਬੀਆਕਲਿੱਪਰਟਨ ਟਾਪੂਕੋ" + - "ਸਟਾ ਰੀਕਾਕਿਊਬਾਕੇਪ ਵਰਡੇਕੁਰਾਕਾਓਕ੍ਰਿਸਮਿਸ ਟਾਪੂਸਾਇਪ੍ਰਸਚੈਕੀਆਜਰਮਨੀਡੀਇਗੋ ਗਾਰਸੀਆ" + - "ਜ਼ੀਬੂਤੀਡੈਨਮਾਰਕਡੋਮੀਨਿਕਾਡੋਮੀਨਿਕਾਈ ਗਣਰਾਜਅਲਜੀਰੀਆਸਿਓਟਾ ਅਤੇ ਮੇਲਿੱਲਾਇਕਵੇਡੋਰਇਸ" + - "ਟੋਨੀਆਮਿਸਰਪੱਛਮੀ ਸਹਾਰਾਇਰੀਟ੍ਰਿਆਸਪੇਨਇਥੋਪੀਆਯੂਰਪੀ ਸੰਘEZਫਿਨਲੈਂਡਫ਼ਿਜੀਫ਼ਾਕਲੈਂਡ " + - "ਟਾਪੂਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਫੈਰੋ ਟਾਪੂਫ਼ਰਾਂਸਗਬੋਨਯੂਨਾਈਟਡ ਕਿੰਗਡਮਗ੍ਰੇਨਾਡਾਜਾਰਜੀਆਫਰੈਂਚ " + - "ਗੁਇਆਨਾਗਰਨਜੀਘਾਨਾਜਿਬਰਾਲਟਰਗ੍ਰੀਨਲੈਂਡਗੈਂਬੀਆਗਿਨੀਗੁਆਡੇਲੋਪਭੂ-ਖੰਡੀ ਗਿਨੀਗ੍ਰੀਸਦੱਖ" + - "ਣੀ ਜਾਰਜੀਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਟਾਪੂਗੁਆਟੇਮਾਲਾਗੁਆਮਗਿਨੀ-ਬਿਸਾਉਗੁਯਾਨਾਹਾਂਗ ਕਾਂਗ" + - " ਐਸਏਆਰ ਚੀਨਹਰਡ ਤੇ ਮੈਕਡੋਨਾਲਡ ਟਾਪੂਹੋਂਡੁਰਸਕਰੋਏਸ਼ੀਆਹੈਤੀਹੰਗਰੀਕੇਨਾਰੀ ਟਾਪੂਇੰਡੋਨੇ" + - "ਸ਼ੀਆਆਇਰਲੈਂਡਇਜ਼ਰਾਈਲਆਇਲ ਆਫ ਮੈਨਭਾਰਤਬਰਤਾਨਵੀ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਖਿੱਤਾਇਰਾਕਈਰਾਨਆਈਸ" + - "ਲੈਂਡਇਟਲੀਜਰਸੀਜਮਾਇਕਾਜਾਰਡਨਜਪਾਨਕੀਨੀਆਕਿਰਗਿਜ਼ਸਤਾਨਕੰਬੋਡੀਆਕਿਰਬਾਤੀਕੋਮੋਰੋਸਸੇਂਟ ਕ" + - "ਿਟਸ ਐਂਡ ਨੇਵਿਸਉੱਤਰ ਕੋਰੀਆਦੱਖਣ ਕੋਰੀਆਕੁਵੈਤਕੇਮੈਨ ਟਾਪੂਕਜ਼ਾਖਸਤਾਨਲਾਓਸਲੈਬਨਾਨਸੇਂ" + - "ਟ ਲੂਸੀਆਲਿਚੇਂਸਟਾਇਨਸ੍ਰੀ ਲੰਕਾਲਾਈਬੀਰੀਆਲੇਸੋਥੋਲਿਥੁਆਨੀਆਲਕਜ਼ਮਬਰਗਲਾਤਵੀਆਲੀਬੀਆਮੋਰ" + - "ੱਕੋਮੋਨਾਕੋਮੋਲਡੋਵਾਮੋਂਟੇਨੇਗਰੋਸੇਂਟ ਮਾਰਟਿਨਮੈਡਾਗਾਸਕਰਮਾਰਸ਼ਲ ਟਾਪੂਮੈਕਡੋਨੀਆਮਾਲੀਮ" + - "ਿਆਂਮਾਰ (ਬਰਮਾ)ਮੰਗੋਲੀਆਮਕਾਉ ਐਸਏਆਰ ਚੀਨਉੱਤਰੀ ਮਾਰੀਆਨਾ ਟਾਪੂਮਾਰਟੀਨਿਕਮੋਰਿਟਾਨੀਆਮ" + - "ੋਂਟਸੇਰਾਤਮਾਲਟਾਮੌਰੀਸ਼ਸਮਾਲਦੀਵਮਲਾਵੀਮੈਕਸੀਕੋਮਲੇਸ਼ੀਆਮੋਜ਼ਾਮਬੀਕਨਾਮੀਬੀਆਨਿਊ ਕੈਲੇਡ" + - "ੋਨੀਆਨਾਈਜਰਨੋਰਫੌਕ ਟਾਪੂਨਾਈਜੀਰੀਆਨਿਕਾਰਾਗੁਆਨੀਦਰਲੈਂਡਨਾਰਵੇਨੇਪਾਲਨਾਉਰੂਨਿਯੂਨਿਊਜ਼ੀ" + - "ਲੈਂਡਓਮਾਨਪਨਾਮਾਪੇਰੂਫਰੈਂਚ ਪੋਲੀਨੇਸ਼ੀਆਪਾਪੂਆ ਨਿਊ ਗਿਨੀਫਿਲੀਪੀਨਜਪਾਕਿਸਤਾਨਪੋਲੈਂਡਸ" + - "ੇਂਟ ਪੀਅਰੇ ਐਂਡ ਮਿਕੇਲਨਪਿਟਕੇਰਨ ਟਾਪੂਪਿਊਰਟੋ ਰਿਕੋਫਿਲੀਸਤੀਨੀ ਇਲਾਕਾਪੁਰਤਗਾਲਪਲਾਉਪ" + - "ੈਰਾਗਵੇਕਤਰਆਊਟਲਾਇੰਗ ਓਸ਼ੀਨੀਆਰਿਯੂਨੀਅਨਰੋਮਾਨੀਆਸਰਬੀਆਰੂਸਰਵਾਂਡਾਸਾਊਦੀ ਅਰਬਸੋਲੋਮਨ " + - "ਟਾਪੂਸੇਸ਼ਲਸਸੂਡਾਨਸਵੀਡਨਸਿੰਗਾਪੁਰਸੇਂਟ ਹੇਲੇਨਾਸਲੋਵੇਨੀਆਸਵਾਲਬਰਡ ਅਤੇ ਜਾਨ ਮਾਯੇਨਸਲ" + - "ੋਵਾਕੀਆਸਿਏਰਾ ਲਿਓਨਸੈਨ ਮਰੀਨੋਸੇਨੇਗਲਸੋਮਾਲੀਆਸੂਰੀਨਾਮਦੱਖਣ ਸੁਡਾਨਸਾਓ ਟੋਮ ਅਤੇ ਪ੍ਰ" + - "ਿੰਸੀਪੇਅਲ ਸਲਵਾਡੋਰਸਿੰਟ ਮਾਰਟੀਨਸੀਰੀਆਸਵਾਜ਼ੀਲੈਂਡਟ੍ਰਿਸਟਾਨ ਦਾ ਕੁੰਹਾਟੁਰਕਸ ਅਤੇ ਕ" + - "ੈਕੋਸ ਟਾਪੂਚਾਡਫਰੈਂਚ ਦੱਖਣੀ ਪ੍ਰਦੇਸ਼ਟੋਗੋਥਾਈਲੈਂਡਤਾਜਿਕਿਸਤਾਨਟੋਕੇਲਾਉਤਿਮੋਰ-ਲੇਸਤੇ" + - "ਤੁਰਕਮੇਨਿਸਤਾਨਟਿਊਨੀਸ਼ੀਆਟੌਂਗਾਤੁਰਕੀਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋਟੁਵਾਲੂਤਾਇਵਾਨਤਨਜ਼ਾਨੀ" + - "ਆਯੂਕਰੇਨਯੂਗਾਂਡਾਯੂ.ਐੱਸ. ਦੂਰ-ਦੁਰਾਡੇ ਟਾਪੂਸੰਯੁਕਤ ਰਾਸ਼ਟਰਸੰਯੁਕਤ ਰਾਜਉਰੂਗਵੇਉਜ਼ਬ" + - "ੇਕਿਸਤਾਨਵੈਟੀਕਨ ਸਿਟੀਸੇਂਟ ਵਿਨਸੈਂਟ ਐਂਡ ਗ੍ਰੇਨਾਡੀਨਸਵੇਨੇਜ਼ੂਏਲਾਬ੍ਰਿਟਿਸ਼ ਵਰਜਿਨ " + - "ਟਾਪੂਯੂ ਐੱਸ ਵਰਜਿਨ ਟਾਪੂਵੀਅਤਨਾਮਵਾਨੂਆਟੂਵਾਲਿਸ ਅਤੇ ਫੂਟੂਨਾਸਾਮੋਆਕੋਸੋਵੋਯਮਨਮਾਯੋਟ" + - "ੀਦੱਖਣੀ ਅਫਰੀਕਾਜ਼ਾਮਬੀਆਜ਼ਿੰਬਾਬਵੇਅਣਪਛਾਤਾ ਇਲਾਕਾਸੰਸਾਰਅਫ਼ਰੀਕਾਉੱਤਰ ਅਮਰੀਕਾਦੱਖਣ " + - "ਅਮਰੀਕਾਓਸ਼ੇਨੀਆਪੱਛਮੀ ਅਫ਼ਰੀਕਾਕੇਂਦਰੀ ਅਮਰੀਕਾਪੂਰਬੀ ਅਫ਼ਰੀਕਾਉੱਤਰੀ ਅਫ਼ਰੀਕਾਮੱਧ ਅ" + - "ਫ਼ਰੀਕਾਦੱਖਣੀ ਅਫ਼ਰੀਕਾਅਮਰੀਕਾਉੱਤਰੀ ਅਮਰੀਕਾਕੈਰੇਬੀਆਈਪੂਰਬੀ ਏਸ਼ੀਆਦੱਖਣੀ ਏਸ਼ੀਆਦੱਖ" + - "ਣ-ਪੂਰਬੀ ਏਸ਼ੀਆਦੱਖਣੀ ਯੂਰਪਆਸਟਰੇਲੇਸ਼ੀਆਮੇਲਾਨੇਸ਼ੀਆਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਈ ਇਲਾਕਾਪੋਲੀਨੇ" + - "ਸ਼ੀਆਏਸ਼ੀਆਕੇਂਦਰੀ ਏਸ਼ੀਆਪੱਛਮੀ ਏਸ਼ੀਆਯੂਰਪਪੂਰਬੀ ਯੂਰਪਉੱਤਰੀ ਯੂਰਪਪੱਛਮੀ ਯੂਰਪਲਾਤੀ" + - "ਨੀ ਅਮਰੀਕਾ" - -var paRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0022, 0x0034, 0x0063, 0x0084, 0x00b9, 0x00ce, 0x00e3, - 0x00f8, 0x010a, 0x0128, 0x0140, 0x0162, 0x0174, 0x018f, 0x019e, - 0x01ba, 0x01d8, 0x0216, 0x022e, 0x0249, 0x025e, 0x0283, 0x029b, - 0x02ad, 0x02c2, 0x02d1, 0x02f9, 0x030b, 0x031d, 0x0332, 0x0363, - 0x037b, 0x038d, 0x039c, 0x03b8, 0x03d0, 0x03e5, 0x03f7, 0x0409, - 0x043a, 0x0464, 0x049c, 0x04cf, 0x04f0, 0x050c, 0x0525, 0x0531, - 0x0543, 0x054c, 0x0561, 0x0586, 0x05a2, 0x05b1, 0x05c7, 0x05dc, - 0x0601, 0x0616, 0x0625, 0x0634, 0x0656, 0x066b, 0x0680, 0x0698, - // Entry 40 - 7F - 0x06c3, 0x06d8, 0x0707, 0x071c, 0x0731, 0x073d, 0x075c, 0x0774, - 0x0780, 0x0792, 0x07ab, 0x07ad, 0x07c2, 0x07d1, 0x07f6, 0x081d, - 0x0836, 0x0848, 0x0854, 0x087c, 0x0894, 0x08a6, 0x08c8, 0x08d7, - 0x08e3, 0x08fb, 0x0916, 0x0928, 0x0934, 0x094c, 0x096c, 0x097b, - 0x09da, 0x09f5, 0x0a01, 0x0a1d, 0x0a2f, 0x0a62, 0x0a9b, 0x0ab0, - 0x0ac8, 0x0ad4, 0x0ae3, 0x0b02, 0x0b20, 0x0b35, 0x0b4a, 0x0b64, - 0x0b70, 0x0bbb, 0x0bc7, 0x0bd3, 0x0be8, 0x0bf4, 0x0c00, 0x0c12, - 0x0c21, 0x0c2d, 0x0c3c, 0x0c5d, 0x0c72, 0x0c87, 0x0c9c, 0x0ccf, - // Entry 80 - BF - 0x0ceb, 0x0d07, 0x0d16, 0x0d32, 0x0d4d, 0x0d59, 0x0d6b, 0x0d87, - 0x0da5, 0x0dbe, 0x0dd6, 0x0de8, 0x0e00, 0x0e18, 0x0e2a, 0x0e39, - 0x0e4b, 0x0e5d, 0x0e72, 0x0e90, 0x0eaf, 0x0eca, 0x0ee9, 0x0f01, - 0x0f0d, 0x0f31, 0x0f46, 0x0f6c, 0x0f9e, 0x0fb6, 0x0fd1, 0x0fec, - 0x0ffb, 0x1010, 0x1022, 0x1031, 0x1046, 0x105b, 0x1076, 0x108b, - 0x10b0, 0x10bf, 0x10de, 0x10f6, 0x1111, 0x1129, 0x1138, 0x1147, - 0x1156, 0x1162, 0x1180, 0x118c, 0x119b, 0x11a7, 0x11d5, 0x11fb, - 0x1213, 0x122b, 0x123d, 0x1276, 0x1298, 0x12b7, 0x12e2, 0x12f7, - // Entry C0 - FF - 0x1303, 0x1318, 0x1321, 0x134f, 0x1367, 0x137c, 0x138b, 0x1394, - 0x13a6, 0x13bf, 0x13de, 0x13f0, 0x13ff, 0x140e, 0x1426, 0x1445, - 0x145d, 0x1496, 0x14ae, 0x14ca, 0x14e3, 0x14f5, 0x150a, 0x151f, - 0x153b, 0x1574, 0x1590, 0x15af, 0x15be, 0x15dc, 0x160b, 0x1641, - 0x164a, 0x167f, 0x168b, 0x16a0, 0x16be, 0x16d3, 0x16f2, 0x1716, - 0x1731, 0x1740, 0x174f, 0x1787, 0x1799, 0x17ab, 0x17c3, 0x17d5, - 0x17ea, 0x1825, 0x184a, 0x1866, 0x1878, 0x1899, 0x18b8, 0x1903, - 0x1921, 0x1956, 0x1983, 0x1998, 0x19ad, 0x19d9, 0x19e8, 0x19fa, - // Entry 100 - 13F - 0x1a03, 0x1a15, 0x1a37, 0x1a4c, 0x1a67, 0x1a8c, 0x1a9b, 0x1ab0, - 0x1acf, 0x1aee, 0x1b03, 0x1b28, 0x1b4d, 0x1b72, 0x1b97, 0x1bb6, - 0x1bdb, 0x1bed, 0x1c0f, 0x1c27, 0x1c46, 0x1c65, 0x1c91, 0x1cad, - 0x1cce, 0x1cec, 0x1d26, 0x1d44, 0x1d53, 0x1d75, 0x1d94, 0x1da0, - 0x1dbc, 0x1dd8, 0x1df4, 0x1df4, 0x1e19, -} // Size: 610 bytes - -const plRegionStr string = "" + // Size: 3189 bytes - "Wyspa WniebowstąpieniaAndoraZjednoczone Emiraty ArabskieAfganistanAntigu" + - "a i BarbudaAnguillaAlbaniaArmeniaAngolaAntarktydaArgentynaSamoa Amerykań" + - "skieAustriaAustraliaArubaWyspy AlandzkieAzerbejdżanBośnia i HercegowinaB" + - "arbadosBangladeszBelgiaBurkina FasoBułgariaBahrajnBurundiBeninSaint-Bart" + - "hélemyBermudyBruneiBoliwiaNiderlandy KaraibskieBrazyliaBahamyBhutanWyspa" + - " BouvetaBotswanaBiałoruśBelizeKanadaWyspy KokosoweDemokratyczna Republik" + - "a KongaRepublika ŚrodkowoafrykańskaKongoSzwajcariaCôte d’IvoireWyspy Coo" + - "kaChileKamerunChinyKolumbiaClippertonKostarykaKubaRepublika Zielonego Pr" + - "zylądkaCuraçaoWyspa Bożego NarodzeniaCyprCzechyNiemcyDiego GarciaDżibuti" + - "DaniaDominikaDominikanaAlgieriaCeuta i MelillaEkwadorEstoniaEgiptSahara " + - "ZachodniaErytreaHiszpaniaEtiopiaUnia Europejskastrefa euroFinlandiaFidżi" + - "FalklandyMikronezjaWyspy OwczeFrancjaGabonWielka BrytaniaGrenadaGruzjaGu" + - "jana FrancuskaGuernseyGhanaGibraltarGrenlandiaGambiaGwineaGwadelupaGwine" + - "a RównikowaGrecjaGeorgia Południowa i Sandwich PołudniowyGwatemalaGuamGw" + - "inea BissauGujanaSRA Hongkong (Chiny)Wyspy Heard i McDonaldaHondurasChor" + - "wacjaHaitiWęgryWyspy KanaryjskieIndonezjaIrlandiaIzraelWyspa ManIndieBry" + - "tyjskie Terytorium Oceanu IndyjskiegoIrakIranIslandiaWłochyJerseyJamajka" + - "JordaniaJaponiaKeniaKirgistanKambodżaKiribatiKomorySaint Kitts i NevisKo" + - "rea PółnocnaKorea PołudniowaKuwejtKajmanyKazachstanLaosLibanSaint LuciaL" + - "iechtensteinSri LankaLiberiaLesothoLitwaLuksemburgŁotwaLibiaMarokoMonako" + - "MołdawiaCzarnogóraSaint-MartinMadagaskarWyspy MarshallaMacedoniaMaliMjan" + - "ma (Birma)MongoliaSRA Makau (Chiny)Mariany PółnocneMartynikaMauretaniaMo" + - "ntserratMaltaMauritiusMalediwyMalawiMeksykMalezjaMozambikNamibiaNowa Kal" + - "edoniaNigerNorfolkNigeriaNikaraguaHolandiaNorwegiaNepalNauruNiueNowa Zel" + - "andiaOmanPanamaPeruPolinezja FrancuskaPapua-Nowa GwineaFilipinyPakistanP" + - "olskaSaint-Pierre i MiquelonPitcairnPortorykoTerytoria PalestyńskiePortu" + - "galiaPalauParagwajKatarOceania — wyspy dalekieReunionRumuniaSerbiaRosjaR" + - "wandaArabia SaudyjskaWyspy SalomonaSeszeleSudanSzwecjaSingapurWyspa Świę" + - "tej HelenySłoweniaSvalbard i Jan MayenSłowacjaSierra LeoneSan MarinoSene" + - "galSomaliaSurinamSudan PołudniowyWyspy Świętego Tomasza i KsiążęcaSalwad" + - "orSint MaartenSyriaSuaziTristan da CunhaTurks i CaicosCzadFrancuskie Ter" + - "ytoria Południowe i AntarktyczneTogoTajlandiaTadżykistanTokelauTimor Wsc" + - "hodniTurkmenistanTunezjaTongaTurcjaTrynidad i TobagoTuvaluTajwanTanzania" + - "UkrainaUgandaDalekie Wyspy Mniejsze Stanów ZjednoczonychOrganizacja Naro" + - "dów ZjednoczonychStany ZjednoczoneUrugwajUzbekistanWatykanSaint Vincent " + - "i GrenadynyWenezuelaBrytyjskie Wyspy DziewiczeWyspy Dziewicze Stanów Zje" + - "dnoczonychWietnamVanuatuWallis i FutunaSamoaKosowoJemenMajottaRepublika " + - "Południowej AfrykiZambiaZimbabweNieznany regionświatAfrykaAmeryka Północ" + - "naAmeryka PołudniowaOceaniaAfryka ZachodniaAmeryka ŚrodkowaAfryka Wschod" + - "niaAfryka PółnocnaAfryka ŚrodkowaAfryka PołudniowaAmerykaAmeryka Północn" + - "a (USA, Kanada)KaraibyAzja WschodniaAzja PołudniowaAzja Południowo-Wscho" + - "dniaEuropa PołudniowaAustralazjaMelanezjaRegion MikronezjiPolinezjaAzjaA" + - "zja ŚrodkowaAzja ZachodniaEuropaEuropa WschodniaEuropa PółnocnaEuropa Za" + - "chodniaAmeryka Łacińska" - -var plRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0017, 0x001d, 0x0039, 0x0043, 0x0054, 0x005c, 0x0063, - 0x006a, 0x0070, 0x007a, 0x0083, 0x0096, 0x009d, 0x00a6, 0x00ab, - 0x00ba, 0x00c6, 0x00db, 0x00e3, 0x00ed, 0x00f3, 0x00ff, 0x0108, - 0x010f, 0x0116, 0x011b, 0x012c, 0x0133, 0x0139, 0x0140, 0x0155, - 0x015d, 0x0163, 0x0169, 0x0176, 0x017e, 0x0188, 0x018e, 0x0194, - 0x01a2, 0x01bf, 0x01dd, 0x01e2, 0x01ec, 0x01fc, 0x0207, 0x020c, - 0x0213, 0x0218, 0x0220, 0x022a, 0x0233, 0x0237, 0x0255, 0x025d, - 0x0275, 0x0279, 0x027f, 0x0285, 0x0291, 0x0299, 0x029e, 0x02a6, - // Entry 40 - 7F - 0x02b0, 0x02b8, 0x02c7, 0x02ce, 0x02d5, 0x02da, 0x02ea, 0x02f1, - 0x02fa, 0x0301, 0x0310, 0x031b, 0x0324, 0x032a, 0x0333, 0x033d, - 0x0348, 0x034f, 0x0354, 0x0363, 0x036a, 0x0370, 0x0380, 0x0388, - 0x038d, 0x0396, 0x03a0, 0x03a6, 0x03ac, 0x03b5, 0x03c6, 0x03cc, - 0x03f6, 0x03ff, 0x0403, 0x0410, 0x0416, 0x042a, 0x0441, 0x0449, - 0x0452, 0x0457, 0x045d, 0x046e, 0x0477, 0x047f, 0x0485, 0x048e, - 0x0493, 0x04bb, 0x04bf, 0x04c3, 0x04cb, 0x04d2, 0x04d8, 0x04df, - 0x04e7, 0x04ee, 0x04f3, 0x04fc, 0x0505, 0x050d, 0x0513, 0x0526, - // Entry 80 - BF - 0x0536, 0x0547, 0x054d, 0x0554, 0x055e, 0x0562, 0x0567, 0x0572, - 0x057f, 0x0588, 0x058f, 0x0596, 0x059b, 0x05a5, 0x05ab, 0x05b0, - 0x05b6, 0x05bc, 0x05c5, 0x05d0, 0x05dc, 0x05e6, 0x05f5, 0x05fe, - 0x0602, 0x0610, 0x0618, 0x0629, 0x063b, 0x0644, 0x064e, 0x0658, - 0x065d, 0x0666, 0x066e, 0x0674, 0x067a, 0x0681, 0x0689, 0x0690, - 0x069e, 0x06a3, 0x06aa, 0x06b1, 0x06ba, 0x06c2, 0x06ca, 0x06cf, - 0x06d4, 0x06d8, 0x06e5, 0x06e9, 0x06ef, 0x06f3, 0x0706, 0x0717, - 0x071f, 0x0727, 0x072d, 0x0744, 0x074c, 0x0755, 0x076c, 0x0776, - // Entry C0 - FF - 0x077b, 0x0783, 0x0788, 0x07a1, 0x07a8, 0x07af, 0x07b5, 0x07ba, - 0x07c0, 0x07d0, 0x07de, 0x07e5, 0x07ea, 0x07f1, 0x07f9, 0x080f, - 0x0818, 0x082c, 0x0835, 0x0841, 0x084b, 0x0852, 0x0859, 0x0860, - 0x0871, 0x0897, 0x089f, 0x08ab, 0x08b0, 0x08b5, 0x08c5, 0x08d3, - 0x08d7, 0x0906, 0x090a, 0x0913, 0x091f, 0x0926, 0x0934, 0x0940, - 0x0947, 0x094c, 0x0952, 0x0963, 0x0969, 0x096f, 0x0977, 0x097e, - 0x0984, 0x09b0, 0x09d2, 0x09e3, 0x09ea, 0x09f4, 0x09fb, 0x0a14, - 0x0a1d, 0x0a37, 0x0a5c, 0x0a63, 0x0a6a, 0x0a79, 0x0a7e, 0x0a84, - // Entry 100 - 13F - 0x0a89, 0x0a90, 0x0aad, 0x0ab3, 0x0abb, 0x0aca, 0x0ad0, 0x0ad6, - 0x0ae8, 0x0afb, 0x0b02, 0x0b12, 0x0b23, 0x0b33, 0x0b44, 0x0b54, - 0x0b66, 0x0b6d, 0x0b8d, 0x0b94, 0x0ba2, 0x0bb2, 0x0bcc, 0x0bde, - 0x0be9, 0x0bf2, 0x0c03, 0x0c0c, 0x0c10, 0x0c1e, 0x0c2c, 0x0c32, - 0x0c42, 0x0c53, 0x0c63, 0x0c63, 0x0c75, -} // Size: 610 bytes - -const ptRegionStr string = "" + // Size: 3174 bytes - "Ilha de AscensãoAndorraEmirados Árabes UnidosAfeganistãoAntígua e Barbud" + - "aAnguillaAlbâniaArmêniaAngolaAntártidaArgentinaSamoa AmericanaÁustriaAus" + - "tráliaArubaIlhas AlandAzerbaijãoBósnia e HerzegovinaBarbadosBangladeshBé" + - "lgicaBurquina FasoBulgáriaBahreinBurundiBeninSão BartolomeuBermudasBrune" + - "iBolíviaPaíses Baixos CaribenhosBrasilBahamasButãoIlha BouvetBotsuanaBie" + - "lorrússiaBelizeCanadáIlhas Cocos (Keeling)Congo - KinshasaRepública Cent" + - "ro-AfricanaCongo - BrazzavilleSuíçaCosta do MarfimIlhas CookChileCamarõe" + - "sChinaColômbiaIlha de ClippertonCosta RicaCubaCabo VerdeCuraçaoIlha Chri" + - "stmasChipreTchéquiaAlemanhaDiego GarciaDjibutiDinamarcaDominicaRepública" + - " DominicanaArgéliaCeuta e MelilhaEquadorEstôniaEgitoSaara OcidentalEritr" + - "eiaEspanhaEtiópiaUnião Europeiazona do euroFinlândiaFijiIlhas MalvinasMi" + - "cronésiaIlhas FaroeFrançaGabãoReino UnidoGranadaGeórgiaGuiana FrancesaGu" + - "ernseyGanaGibraltarGroenlândiaGâmbiaGuinéGuadalupeGuiné EquatorialGrécia" + - "Ilhas Geórgia do Sul e Sandwich do SulGuatemalaGuamGuiné-BissauGuianaHon" + - "g Kong, RAE da ChinaIlhas Heard e McDonaldHondurasCroáciaHaitiHungriaIlh" + - "as CanáriasIndonésiaIrlandaIsraelIlha de ManÍndiaTerritório Britânico do" + - " Oceano ÍndicoIraqueIrãIslândiaItáliaJerseyJamaicaJordâniaJapãoQuêniaQui" + - "rguistãoCambojaQuiribatiComoresSão Cristóvão e NévisCoreia do NorteCorei" + - "a do SulKuwaitIlhas CaymanCazaquistãoLaosLíbanoSanta LúciaLiechtensteinS" + - "ri LankaLibériaLesotoLituâniaLuxemburgoLetôniaLíbiaMarrocosMônacoMoldávi" + - "aMontenegroSão MartinhoMadagascarIlhas MarshallMacedôniaMaliMianmar (Bir" + - "mânia)MongóliaMacau, RAE da ChinaIlhas Marianas do NorteMartinicaMauritâ" + - "niaMontserratMaltaMaurícioMaldivasMalauiMéxicoMalásiaMoçambiqueNamíbiaNo" + - "va CaledôniaNígerIlha NorfolkNigériaNicaráguaHolandaNoruegaNepalNauruNiu" + - "eNova ZelândiaOmãPanamáPeruPolinésia FrancesaPapua-Nova GuinéFilipinasPa" + - "quistãoPolôniaSão Pedro e MiquelãoIlhas PitcairnPorto RicoTerritórios pa" + - "lestinosPortugalPalauParaguaiCatarOceania RemotaReuniãoRomêniaSérviaRúss" + - "iaRuandaArábia SauditaIlhas SalomãoSeichelesSudãoSuéciaSingapuraSanta He" + - "lenaEslovêniaSvalbard e Jan MayenEslováquiaSerra LeoaSan MarinoSenegalSo" + - "máliaSurinameSudão do SulSão Tomé e PríncipeEl SalvadorSint MaartenSíria" + - "SuazilândiaTristão da CunhaIlhas Turks e CaicosChadeTerritórios Francese" + - "s do SulTogoTailândiaTadjiquistãoTokelauTimor-LesteTurcomenistãoTunísiaT" + - "ongaTurquiaTrinidad e TobagoTuvaluTaiwanTanzâniaUcrâniaUgandaIlhas Menor" + - "es Distantes dos EUANações UnidasEstados UnidosUruguaiUzbequistãoCidade " + - "do VaticanoSão Vicente e GranadinasVenezuelaIlhas Virgens BritânicasIlha" + - "s Virgens AmericanasVietnãVanuatuWallis e FutunaSamoaKosovoIêmenMayotteÁ" + - "frica do SulZâmbiaZimbábueRegião desconhecidaMundoÁfricaAmérica do Norte" + - "América do SulOceaniaÁfrica OcidentalAmérica CentralÁfrica OrientalÁfric" + - "a do NorteÁfrica CentralÁfrica MeridionalAméricasAmérica SetentrionalCar" + - "ibeÁsia OrientalÁsia MeridionalSudeste AsiáticoEuropa MeridionalAustralá" + - "siaMelanésiaRegião da MicronésiaPolinésiaÁsiaÁsia CentralÁsia OcidentalE" + - "uropaEuropa OrientalEuropa SetentrionalEuropa OcidentalAmérica Latina" - -var ptRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0011, 0x0018, 0x002f, 0x003b, 0x004d, 0x0055, 0x005d, - 0x0065, 0x006b, 0x0075, 0x007e, 0x008d, 0x0095, 0x009f, 0x00a4, - 0x00af, 0x00ba, 0x00cf, 0x00d7, 0x00e1, 0x00e9, 0x00f6, 0x00ff, - 0x0106, 0x010d, 0x0112, 0x0121, 0x0129, 0x012f, 0x0137, 0x0150, - 0x0156, 0x015d, 0x0163, 0x016e, 0x0176, 0x0183, 0x0189, 0x0190, - 0x01a5, 0x01b5, 0x01cf, 0x01e2, 0x01e9, 0x01f8, 0x0202, 0x0207, - 0x0210, 0x0215, 0x021e, 0x0230, 0x023a, 0x023e, 0x0248, 0x0250, - 0x025e, 0x0264, 0x026d, 0x0275, 0x0281, 0x0288, 0x0291, 0x0299, - // Entry 40 - 7F - 0x02ae, 0x02b6, 0x02c5, 0x02cc, 0x02d4, 0x02d9, 0x02e8, 0x02f0, - 0x02f7, 0x02ff, 0x030e, 0x031a, 0x0324, 0x0328, 0x0336, 0x0341, - 0x034c, 0x0353, 0x0359, 0x0364, 0x036b, 0x0373, 0x0382, 0x038a, - 0x038e, 0x0397, 0x03a3, 0x03aa, 0x03b0, 0x03b9, 0x03ca, 0x03d1, - 0x03f8, 0x0401, 0x0405, 0x0412, 0x0418, 0x042f, 0x0445, 0x044d, - 0x0455, 0x045a, 0x0461, 0x0470, 0x047a, 0x0481, 0x0487, 0x0492, - 0x0498, 0x04c0, 0x04c6, 0x04ca, 0x04d3, 0x04da, 0x04e0, 0x04e7, - 0x04f0, 0x04f6, 0x04fd, 0x0509, 0x0510, 0x0519, 0x0520, 0x0539, - // Entry 80 - BF - 0x0548, 0x0555, 0x055b, 0x0567, 0x0573, 0x0577, 0x057e, 0x058a, - 0x0597, 0x05a0, 0x05a8, 0x05ae, 0x05b7, 0x05c1, 0x05c9, 0x05cf, - 0x05d7, 0x05de, 0x05e7, 0x05f1, 0x05fe, 0x0608, 0x0616, 0x0620, - 0x0624, 0x0637, 0x0640, 0x0653, 0x066a, 0x0673, 0x067e, 0x0688, - 0x068d, 0x0696, 0x069e, 0x06a4, 0x06ab, 0x06b3, 0x06be, 0x06c6, - 0x06d5, 0x06db, 0x06e7, 0x06ef, 0x06f9, 0x0700, 0x0707, 0x070c, - 0x0711, 0x0715, 0x0723, 0x0727, 0x072e, 0x0732, 0x0745, 0x0756, - 0x075f, 0x0769, 0x0771, 0x0787, 0x0795, 0x079f, 0x07b6, 0x07be, - // Entry C0 - FF - 0x07c3, 0x07cb, 0x07d0, 0x07de, 0x07e6, 0x07ee, 0x07f5, 0x07fc, - 0x0802, 0x0811, 0x081f, 0x0828, 0x082e, 0x0835, 0x083e, 0x084a, - 0x0854, 0x0868, 0x0873, 0x087d, 0x0887, 0x088e, 0x0896, 0x089e, - 0x08ab, 0x08c1, 0x08cc, 0x08d8, 0x08de, 0x08ea, 0x08fb, 0x090f, - 0x0914, 0x0931, 0x0935, 0x093f, 0x094c, 0x0953, 0x095e, 0x096c, - 0x0974, 0x0979, 0x0980, 0x0991, 0x0997, 0x099d, 0x09a6, 0x09ae, - 0x09b4, 0x09d3, 0x09e2, 0x09f0, 0x09f7, 0x0a03, 0x0a15, 0x0a2e, - 0x0a37, 0x0a50, 0x0a68, 0x0a6f, 0x0a76, 0x0a85, 0x0a8a, 0x0a90, - // Entry 100 - 13F - 0x0a96, 0x0a9d, 0x0aab, 0x0ab2, 0x0abb, 0x0acf, 0x0ad4, 0x0adb, - 0x0aec, 0x0afb, 0x0b02, 0x0b13, 0x0b23, 0x0b33, 0x0b43, 0x0b52, - 0x0b64, 0x0b6d, 0x0b82, 0x0b88, 0x0b96, 0x0ba6, 0x0bb7, 0x0bc8, - 0x0bd4, 0x0bde, 0x0bf4, 0x0bfe, 0x0c03, 0x0c10, 0x0c1f, 0x0c25, - 0x0c34, 0x0c47, 0x0c57, 0x0c57, 0x0c66, -} // Size: 610 bytes - -const ptPTRegionStr string = "" + // Size: 809 bytes - "AnguilaArméniaAlandaBangladecheBarémBenimBaamasIlhas dos Cocos (Keeling)" + - "Congo-KinshasaCongo-BrazzavilleCôte d’Ivoire (Costa do Marfim)CuraçauIlh" + - "a do NatalChéquiaJibutiDomínicaEstóniaSara OcidentalZona EuroIlhas Falkl" + - "andIlhas FaroéGronelândiaGuameIrãoQuéniaQuiribátiSão Cristóvão e NevesKo" + - "weitIlhas CaimãoListenstaineSri LancaLetóniaMónacoMadagáscarMacedóniaMon" + - "serrateMauríciaMaláuiNova CaledóniaPaíses BaixosNiuêPolóniaTerritórios p" + - "alestinianosOceânia InsularRoméniaEslovéniaSão MarinhoSalvadorSão Martin" + - "ho (Sint Maarten)Ilhas Turcas e CaicosTajiquistãoToquelauTurquemenistãoT" + - "rindade e TobagoIlhas Menores Afastadas dos EUAUsbequistãoIlhas Virgens " + - "dos EUAVietnameIémenMaioteZimbabuéOceâniaNorte de ÁfricaÁfrica AustralCa" + - "raíbasÁsia do SulEuropa do SulEuropa do Norte" - -var ptPTRegionIdx = []uint16{ // 290 elements - // Entry 0 - 3F - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0007, - 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x0015, 0x0015, 0x0015, 0x0015, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0026, 0x0026, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, 0x002b, - 0x002b, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, 0x0031, - 0x004a, 0x0058, 0x0058, 0x0069, 0x0069, 0x008b, 0x008b, 0x008b, - 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x008b, 0x0093, - 0x00a0, 0x00a0, 0x00a8, 0x00a8, 0x00a8, 0x00ae, 0x00ae, 0x00b7, - // Entry 40 - 7F - 0x00b7, 0x00b7, 0x00b7, 0x00b7, 0x00bf, 0x00bf, 0x00cd, 0x00cd, - 0x00cd, 0x00cd, 0x00cd, 0x00d6, 0x00d6, 0x00d6, 0x00e4, 0x00e4, - 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, 0x00f0, - 0x00f0, 0x00f0, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, 0x00fc, - 0x00fc, 0x00fc, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, 0x0101, - 0x0101, 0x0101, 0x0101, 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, - 0x0106, 0x0106, 0x010d, 0x010d, 0x010d, 0x0117, 0x0117, 0x012f, - // Entry 80 - BF - 0x012f, 0x012f, 0x0135, 0x0142, 0x0142, 0x0142, 0x0142, 0x0142, - 0x014e, 0x0157, 0x0157, 0x0157, 0x0157, 0x0157, 0x015f, 0x015f, - 0x015f, 0x0166, 0x0166, 0x0166, 0x0166, 0x0171, 0x0171, 0x017b, - 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x017b, 0x0185, - 0x0185, 0x018e, 0x018e, 0x0195, 0x0195, 0x0195, 0x0195, 0x0195, - 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01a4, 0x01b2, 0x01b2, 0x01b2, - 0x01b2, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, 0x01b7, - 0x01b7, 0x01b7, 0x01bf, 0x01bf, 0x01bf, 0x01bf, 0x01d9, 0x01d9, - // Entry C0 - FF - 0x01d9, 0x01d9, 0x01d9, 0x01e9, 0x01e9, 0x01f1, 0x01f1, 0x01f1, - 0x01f1, 0x01f1, 0x01f1, 0x01f1, 0x01f1, 0x01f1, 0x01f1, 0x01f1, - 0x01fb, 0x01fb, 0x01fb, 0x01fb, 0x0207, 0x0207, 0x0207, 0x0207, - 0x0207, 0x0207, 0x020f, 0x022b, 0x022b, 0x022b, 0x022b, 0x0240, - 0x0240, 0x0240, 0x0240, 0x0240, 0x024c, 0x0254, 0x0254, 0x0263, - 0x0263, 0x0263, 0x0263, 0x0274, 0x0274, 0x0274, 0x0274, 0x0274, - 0x0274, 0x0293, 0x0293, 0x0293, 0x0293, 0x029f, 0x029f, 0x029f, - 0x029f, 0x029f, 0x02b4, 0x02bc, 0x02bc, 0x02bc, 0x02bc, 0x02bc, - // Entry 100 - 13F - 0x02c2, 0x02c8, 0x02c8, 0x02c8, 0x02d1, 0x02d1, 0x02d1, 0x02d1, - 0x02d1, 0x02d1, 0x02d9, 0x02d9, 0x02d9, 0x02d9, 0x02e9, 0x02e9, - 0x02f8, 0x02f8, 0x02f8, 0x0301, 0x0301, 0x030d, 0x030d, 0x031a, - 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, 0x031a, - 0x031a, 0x0329, -} // Size: 604 bytes - -const roRegionStr string = "" + // Size: 3247 bytes - "Insula AscensionAndorraEmiratele Arabe UniteAfganistanAntigua și Barbuda" + - "AnguillaAlbaniaArmeniaAngolaAntarcticaArgentinaSamoa AmericanăAustriaAus" + - "traliaArubaInsulele ÅlandAzerbaidjanBosnia și HerțegovinaBarbadosBanglad" + - "eshBelgiaBurkina FasoBulgariaBahrainBurundiBeninSaint-BarthélemyBermudaB" + - "runeiBoliviaInsulele Caraibe OlandezeBraziliaBahamasBhutanInsula BouvetB" + - "otswanaBelarusBelizeCanadaInsulele Cocos (Keeling)Congo - KinshasaRepubl" + - "ica CentrafricanăCongo - BrazzavilleElvețiaCôte d’IvoireInsulele CookChi" + - "leCamerunChinaColumbiaInsula ClippertonCosta RicaCubaCapul VerdeCuraçaoI" + - "nsula ChristmasCipruCehiaGermaniaDiego GarciaDjiboutiDanemarcaDominicaRe" + - "publica DominicanăAlgeriaCeuta și MelillaEcuadorEstoniaEgiptSahara Occid" + - "entalăEritreeaSpaniaEtiopiaUniunea EuropeanăZona euroFinlandaFijiInsulel" + - "e FalklandMicroneziaInsulele FeroeFranțaGabonRegatul UnitGrenadaGeorgiaG" + - "uyana FrancezăGuernseyGhanaGibraltarGroenlandaGambiaGuineeaGuadelupaGuin" + - "eea EcuatorialăGreciaGeorgia de Sud și Insulele Sandwich de SudGuatemala" + - "GuamGuineea-BissauGuyanaR.A.S. Hong Kong a ChineiInsula Heard și Insulel" + - "e McDonaldHondurasCroațiaHaitiUngariaInsulele CanareIndoneziaIrlandaIsra" + - "elInsula ManIndiaTeritoriul Britanic din Oceanul IndianIrakIranIslandaIt" + - "aliaJerseyJamaicaIordaniaJaponiaKenyaKârgâzstanCambodgiaKiribatiComoreSa" + - "int Kitts și NevisCoreea de NordCoreea de SudKuweitInsulele CaymanKazahs" + - "tanLaosLibanSfânta LuciaLiechtensteinSri LankaLiberiaLesothoLituaniaLuxe" + - "mburgLetoniaLibiaMarocMonacoRepublica MoldovaMuntenegruSfântul MartinMad" + - "agascarInsulele MarshallRepublica MacedoniaMaliMyanmar (Birmania)Mongoli" + - "aR.A.S. Macao a ChineiInsulele Mariane de NordMartinicaMauritaniaMontser" + - "ratMaltaMauritiusMaldiveMalawiMexicMalaysiaMozambicNamibiaNoua Caledonie" + - "NigerInsula NorfolkNigeriaNicaraguaȚările de JosNorvegiaNepalNauruNiueNo" + - "ua ZeelandăOmanPanamaPeruPolinezia FrancezăPapua-Noua GuineeFilipinePaki" + - "stanPoloniaSaint-Pierre și MiquelonInsulele PitcairnPuerto RicoTeritorii" + - "le PalestinienePortugaliaPalauParaguayQatarOceania PerifericăRéunionRomâ" + - "niaSerbiaRusiaRwandaArabia SaudităInsulele SolomonSeychellesSudanSuediaS" + - "ingaporeSfânta ElenaSloveniaSvalbard și Jan MayenSlovaciaSierra LeoneSan" + - " MarinoSenegalSomaliaSurinameSudanul de SudSao Tome și PrincipeEl Salvad" + - "orSint-MaartenSiriaSwazilandTristan da CunhaInsulele Turks și CaicosCiad" + - "Teritoriile Australe și Antarctice FrancezeTogoThailandaTadjikistanTokel" + - "auTimorul de EstTurkmenistanTunisiaTongaTurciaTrinidad și TobagoTuvaluTa" + - "iwanTanzaniaUcrainaUgandaInsulele Îndepărtate ale S.U.A.Națiunile UniteS" + - "tatele Unite ale AmericiiUruguayUzbekistanStatul Cetății VaticanuluiSain" + - "t Vincent și GrenadineleVenezuelaInsulele Virgine BritaniceInsulele Virg" + - "ine AmericaneVietnamVanuatuWallis și FutunaSamoaKosovoYemenMayotteAfrica" + - " de SudZambiaZimbabweRegiune necunoscutăLumeAfricaAmerica de NordAmerica" + - " de SudOceaniaAfrica OccidentalăAmerica CentralăAfrica OrientalăAfrica S" + - "eptentrionalăAfrica CentralăAfrica MeridionalăAmericiAmerica Septentrion" + - "alăCaraibeAsia OrientalăAsia MeridionalăAsia de Sud-EstEuropa Meridional" + - "ăAustralasiaMelaneziaRegiunea MicroneziaPolineziaAsiaAsia CentralăAsia " + - "OccidentalăEuropaEuropa OrientalăEuropa SeptentrionalăEuropa Occidentală" + - "America Latină" - -var roRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x002c, 0x0036, 0x0049, 0x0051, 0x0058, - 0x005f, 0x0065, 0x006f, 0x0078, 0x0088, 0x008f, 0x0098, 0x009d, - 0x00ac, 0x00b7, 0x00ce, 0x00d6, 0x00e0, 0x00e6, 0x00f2, 0x00fa, - 0x0101, 0x0108, 0x010d, 0x011e, 0x0125, 0x012b, 0x0132, 0x014b, - 0x0153, 0x015a, 0x0160, 0x016d, 0x0175, 0x017c, 0x0182, 0x0188, - 0x01a0, 0x01b0, 0x01c8, 0x01db, 0x01e3, 0x01f3, 0x0200, 0x0205, - 0x020c, 0x0211, 0x0219, 0x022a, 0x0234, 0x0238, 0x0243, 0x024b, - 0x025b, 0x0260, 0x0265, 0x026d, 0x0279, 0x0281, 0x028a, 0x0292, - // Entry 40 - 7F - 0x02a7, 0x02ae, 0x02bf, 0x02c6, 0x02cd, 0x02d2, 0x02e5, 0x02ed, - 0x02f3, 0x02fa, 0x030c, 0x0315, 0x031d, 0x0321, 0x0332, 0x033c, - 0x034a, 0x0351, 0x0356, 0x0362, 0x0369, 0x0370, 0x0380, 0x0388, - 0x038d, 0x0396, 0x03a0, 0x03a6, 0x03ad, 0x03b6, 0x03ca, 0x03d0, - 0x03fb, 0x0404, 0x0408, 0x0416, 0x041c, 0x0435, 0x0457, 0x045f, - 0x0467, 0x046c, 0x0473, 0x0482, 0x048b, 0x0492, 0x0498, 0x04a2, - 0x04a7, 0x04cd, 0x04d1, 0x04d5, 0x04dc, 0x04e2, 0x04e8, 0x04ef, - 0x04f7, 0x04fe, 0x0503, 0x050f, 0x0518, 0x0520, 0x0526, 0x053b, - // Entry 80 - BF - 0x0549, 0x0556, 0x055c, 0x056b, 0x0574, 0x0578, 0x057d, 0x058a, - 0x0597, 0x05a0, 0x05a7, 0x05ae, 0x05b6, 0x05bf, 0x05c6, 0x05cb, - 0x05d0, 0x05d6, 0x05e7, 0x05f1, 0x0600, 0x060a, 0x061b, 0x062e, - 0x0632, 0x0644, 0x064c, 0x0661, 0x0679, 0x0682, 0x068c, 0x0696, - 0x069b, 0x06a4, 0x06ab, 0x06b1, 0x06b6, 0x06be, 0x06c6, 0x06cd, - 0x06db, 0x06e0, 0x06ee, 0x06f5, 0x06fe, 0x070d, 0x0715, 0x071a, - 0x071f, 0x0723, 0x0731, 0x0735, 0x073b, 0x073f, 0x0752, 0x0763, - 0x076b, 0x0773, 0x077a, 0x0793, 0x07a4, 0x07af, 0x07c7, 0x07d1, - // Entry C0 - FF - 0x07d6, 0x07de, 0x07e3, 0x07f6, 0x07fe, 0x0806, 0x080c, 0x0811, - 0x0817, 0x0826, 0x0836, 0x0840, 0x0845, 0x084b, 0x0854, 0x0861, - 0x0869, 0x087f, 0x0887, 0x0893, 0x089d, 0x08a4, 0x08ab, 0x08b3, - 0x08c1, 0x08d6, 0x08e1, 0x08ed, 0x08f2, 0x08fb, 0x090b, 0x0924, - 0x0928, 0x0954, 0x0958, 0x0961, 0x096c, 0x0973, 0x0981, 0x098d, - 0x0994, 0x0999, 0x099f, 0x09b2, 0x09b8, 0x09be, 0x09c6, 0x09cd, - 0x09d3, 0x09f4, 0x0a04, 0x0a1e, 0x0a25, 0x0a2f, 0x0a4b, 0x0a68, - 0x0a71, 0x0a8b, 0x0aa5, 0x0aac, 0x0ab3, 0x0ac4, 0x0ac9, 0x0acf, - // Entry 100 - 13F - 0x0ad4, 0x0adb, 0x0ae8, 0x0aee, 0x0af6, 0x0b0a, 0x0b0e, 0x0b14, - 0x0b23, 0x0b31, 0x0b38, 0x0b4b, 0x0b5c, 0x0b6d, 0x0b83, 0x0b93, - 0x0ba6, 0x0bad, 0x0bc4, 0x0bcb, 0x0bda, 0x0beb, 0x0bfa, 0x0c0d, - 0x0c18, 0x0c21, 0x0c34, 0x0c3d, 0x0c41, 0x0c4f, 0x0c60, 0x0c66, - 0x0c77, 0x0c8d, 0x0ca0, 0x0ca0, 0x0caf, -} // Size: 610 bytes - -const ruRegionStr string = "" + // Size: 5863 bytes - "о-в ВознесенияАндорраОАЭАфганистанАнтигуа и БарбудаАнгильяАлбанияАрмения" + - "АнголаАнтарктидаАргентинаАмериканское СамоаАвстрияАвстралияАрубаАландск" + - "ие о-ваАзербайджанБосния и ГерцеговинаБарбадосБангладешБельгияБуркина-Ф" + - "асоБолгарияБахрейнБурундиБенинСен-БартелемиБермудские о-ваБруней-Дарусс" + - "аламБоливияБонэйр, Синт-Эстатиус и СабаБразилияБагамыБутано-в БувеБотсв" + - "анаБеларусьБелизКанадаКокосовые о-ваКонго - КиншасаЦентрально-Африканск" + - "ая РеспубликаКонго - БраззавильШвейцарияКот-д’ИвуарОстрова КукаЧилиКаме" + - "рунКитайКолумбияо-в КлиппертонКоста-РикаКубаКабо-ВердеКюрасаоо-в Рождес" + - "тваКипрЧехияГерманияДиего-ГарсияДжибутиДанияДоминикаДоминиканская Респу" + - "бликаАлжирСеута и МелильяЭквадорЭстонияЕгипетЗападная СахараЭритреяИспа" + - "нияЭфиопияЕвропейский союзеврозонаФинляндияФиджиФолклендские о-ваФедера" + - "тивные Штаты МикронезииФарерские о-ваФранцияГабонВеликобританияГренадаГ" + - "рузияФранцузская ГвианаГернсиГанаГибралтарГренландияГамбияГвинеяГваделу" + - "паЭкваториальная ГвинеяГрецияЮжная Георгия и Южные Сандвичевы о-ваГвате" + - "малаГуамГвинея-БисауГайанаГонконг (САР)о-ва Херд и МакдональдГондурасХо" + - "рватияГаитиВенгрияКанарские о-ваИндонезияИрландияИзраильо-в МэнИндияБри" + - "танская территория в Индийском океанеИракИранИсландияИталияДжерсиЯмайка" + - "ИорданияЯпонияКенияКиргизияКамбоджаКирибатиКоморыСент-Китс и НевисКНДРР" + - "еспублика КореяКувейтКаймановы о-ваКазахстанЛаосЛиванСент-ЛюсияЛихтеншт" + - "ейнШри-ЛанкаЛиберияЛесотоЛитваЛюксембургЛатвияЛивияМароккоМонакоМолдова" + - "ЧерногорияСен-МартенМадагаскарМаршалловы ОстроваМакедонияМалиМьянма (Би" + - "рма)МонголияМакао (САР)Северные Марианские о-ваМартиникаМавританияМонтс" + - "ерратМальтаМаврикийМальдивыМалавиМексикаМалайзияМозамбикНамибияНовая Ка" + - "ледонияНигеро-в НорфолкНигерияНикарагуаНидерландыНорвегияНепалНауруНиуэ" + - "Новая ЗеландияОманПанамаПеруФранцузская ПолинезияПапуа — Новая ГвинеяФи" + - "липпиныПакистанПольшаСен-Пьер и Микелонострова ПиткэрнПуэрто-РикоПалест" + - "инские территорииПортугалияПалауПарагвайКатарВнешняя ОкеанияРеюньонРумы" + - "нияСербияРоссияРуандаСаудовская АравияСоломоновы ОстроваСейшельские Ост" + - "роваСуданШвецияСингапуро-в Св. ЕленыСловенияШпицберген и Ян-МайенСловак" + - "ияСьерра-ЛеонеСан-МариноСенегалСомалиСуринамЮжный СуданСан-Томе и Принс" + - "ипиСальвадорСинт-МартенСирияСвазилендТристан-да-Куньяо-ва Тёркс и Кайко" + - "сЧадФранцузские Южные территорииТогоТаиландТаджикистанТокелауВосточный " + - "ТиморТуркменистанТунисТонгаТурцияТринидад и ТобагоТувалуТайваньТанзания" + - "УкраинаУгандаВнешние малые о-ва (США)Организация Объединенных НацийСоед" + - "иненные ШтатыУругвайУзбекистанВатиканСент-Винсент и ГренадиныВенесуэлаВ" + - "иргинские о-ва (Британские)Виргинские о-ва (США)ВьетнамВануатуУоллис и " + - "ФутунаСамоаКосовоЙеменМайоттаЮжно-Африканская РеспубликаЗамбияЗимбабвен" + - "еизвестный регионвесь мирАфрикаСеверная АмерикаЮжная АмерикаОкеанияЗапа" + - "дная АфрикаЦентральная АмерикаВосточная АфрикаСеверная АфрикаЦентральна" + - "я АфрикаЮжная АфрикаАмерикаСевероамериканский регионКарибыВосточная Ази" + - "яЮжная АзияЮго-Восточная АзияЮжная ЕвропаАвстралазияМеланезияМикронезия" + - "ПолинезияАзияЦентральная АзияЗападная АзияЕвропаВосточная ЕвропаСеверна" + - "я ЕвропаЗападная ЕвропаЛатинская Америка" - -var ruRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001a, 0x0028, 0x002e, 0x0042, 0x0062, 0x0070, 0x007e, - 0x008c, 0x0098, 0x00ac, 0x00be, 0x00e1, 0x00ef, 0x0101, 0x010b, - 0x0125, 0x013b, 0x0161, 0x0171, 0x0183, 0x0191, 0x01a8, 0x01b8, - 0x01c6, 0x01d4, 0x01de, 0x01f7, 0x0213, 0x0234, 0x0242, 0x0275, - 0x0285, 0x0291, 0x029b, 0x02a9, 0x02b9, 0x02c9, 0x02d3, 0x02df, - 0x02f9, 0x0314, 0x0354, 0x0375, 0x0387, 0x039d, 0x03b4, 0x03bc, - 0x03ca, 0x03d4, 0x03e4, 0x03fe, 0x0411, 0x0419, 0x042c, 0x043a, - 0x0452, 0x045a, 0x0464, 0x0474, 0x048b, 0x0499, 0x04a3, 0x04b3, - // Entry 40 - 7F - 0x04e2, 0x04ec, 0x0508, 0x0516, 0x0524, 0x0530, 0x054d, 0x055b, - 0x0569, 0x0577, 0x0596, 0x05a6, 0x05b8, 0x05c2, 0x05e2, 0x061a, - 0x0634, 0x0642, 0x064c, 0x0668, 0x0676, 0x0682, 0x06a5, 0x06b1, - 0x06b9, 0x06cb, 0x06df, 0x06eb, 0x06f7, 0x0709, 0x0732, 0x073e, - 0x0782, 0x0794, 0x079c, 0x07b3, 0x07bf, 0x07d6, 0x07fe, 0x080e, - 0x081e, 0x0828, 0x0836, 0x0850, 0x0862, 0x0872, 0x0880, 0x088c, - 0x0896, 0x08e2, 0x08ea, 0x08f2, 0x0902, 0x090e, 0x091a, 0x0926, - 0x0936, 0x0942, 0x094c, 0x095c, 0x096c, 0x097c, 0x0988, 0x09a7, - // Entry 80 - BF - 0x09af, 0x09ce, 0x09da, 0x09f4, 0x0a06, 0x0a0e, 0x0a18, 0x0a2b, - 0x0a41, 0x0a52, 0x0a60, 0x0a6c, 0x0a76, 0x0a8a, 0x0a96, 0x0aa0, - 0x0aae, 0x0aba, 0x0ac8, 0x0adc, 0x0aef, 0x0b03, 0x0b26, 0x0b38, - 0x0b40, 0x0b59, 0x0b69, 0x0b7c, 0x0ba9, 0x0bbb, 0x0bcf, 0x0be3, - 0x0bef, 0x0bff, 0x0c0f, 0x0c1b, 0x0c29, 0x0c39, 0x0c49, 0x0c57, - 0x0c74, 0x0c7e, 0x0c92, 0x0ca0, 0x0cb2, 0x0cc6, 0x0cd6, 0x0ce0, - 0x0cea, 0x0cf2, 0x0d0d, 0x0d15, 0x0d21, 0x0d29, 0x0d52, 0x0d78, - 0x0d8a, 0x0d9a, 0x0da6, 0x0dc7, 0x0de4, 0x0df9, 0x0e26, 0x0e3a, - // Entry C0 - FF - 0x0e44, 0x0e54, 0x0e5e, 0x0e7b, 0x0e89, 0x0e97, 0x0ea3, 0x0eaf, - 0x0ebb, 0x0edc, 0x0eff, 0x0f24, 0x0f2e, 0x0f3a, 0x0f4a, 0x0f60, - 0x0f70, 0x0f97, 0x0fa7, 0x0fbe, 0x0fd1, 0x0fdf, 0x0feb, 0x0ff9, - 0x100e, 0x1031, 0x1043, 0x1058, 0x1062, 0x1074, 0x1092, 0x10b4, - 0x10ba, 0x10f0, 0x10f8, 0x1106, 0x111c, 0x112a, 0x1147, 0x115f, - 0x1169, 0x1173, 0x117f, 0x119f, 0x11ab, 0x11b9, 0x11c9, 0x11d7, - 0x11e3, 0x120d, 0x1247, 0x1268, 0x1276, 0x128a, 0x1298, 0x12c5, - 0x12d7, 0x130a, 0x132f, 0x133d, 0x134b, 0x1367, 0x1371, 0x137d, - // Entry 100 - 13F - 0x1387, 0x1395, 0x13c9, 0x13d5, 0x13e5, 0x1408, 0x1417, 0x1423, - 0x1442, 0x145b, 0x1469, 0x1486, 0x14ab, 0x14ca, 0x14e7, 0x150a, - 0x1521, 0x152f, 0x1560, 0x156c, 0x1587, 0x159a, 0x15bc, 0x15d3, - 0x15e9, 0x15fb, 0x160f, 0x1621, 0x1629, 0x1648, 0x1661, 0x166d, - 0x168c, 0x16a9, 0x16c6, 0x16c6, 0x16e7, -} // Size: 610 bytes - -const siRegionStr string = "" + // Size: 9354 bytes - "ඇසෙන්ෂන් දිවයිනඇන්ඩෝරාවඑක්සත් අරාබි එමිර් රාජ්\u200dයයඇෆ්ගනිස්ථානයඇන්ටිග" + - "ුවා සහ බාබියුඩාවඇන්ගුයිලාවඇල්බේනියාවආර්මේනියාවඇන්ගෝලාවඇන්ටාක්ටිකාවආර්ජ" + - "ෙන්ටිනාවඇමරිකානු සැමෝවාවඔස්ට්\u200dරියාවඕස්ට්\u200dරේලියාවඅරූබාඕලන්ඩ් " + - "දූපත්අසර්බයිජානයබොස්නියාව සහ හර්සගොවීනාවබාබඩෝස්බංග්ලාදේශයබෙල්ජියමබර්කි" + - "නා ෆාසෝබල්ගේරියාවබහරේන්බුරුන්දිබෙනින්ශාන්ත බර්තලෙමිබර්මියුඩාබෲනායිබොලී" + - "වියාවකැරිබියානු නෙදර්ලන්තයබ්\u200dරසීලයබහමාස්භූතානයබුවට් දුපත්බොට්ස්වා" + - "නාබෙලරුස්බෙලීස්කැනඩාවකොකෝස් දූපත්කොංගො - කින්ශාසාමධ්\u200dයම අප්\u200d" + - "රිකානු ජනරජයකොංගො - බ්\u200dරසාවිල්ස්විස්ටර්ලන්තයකෝට් දි අයිවරිකුක් දූ" + - "පත්චිලීකැමරූන්චීනයකොළොම්බියාවක්ලීපර්ටන් දූපතකොස්ටරිකාවකියුබාවකේප් වර්ඩ" + - "්කුරකාවෝක්\u200dරිස්මස් දූපතසයිප්\u200dරසයචෙක් ජනරජයජර්මනියදියාගෝ ගාර්" + - "සියාජිබුටිඩෙන්මාර්කයඩොමිනිකාවඩොමිනිකා ජනරජයඇල්ජීරියාවසෙයුටා සහ මෙලිල්ල" + - "ාඉක්වදෝරයඑස්තෝනියාවඊජිප්තුවබටහිර සහරාවඑරිත්\u200dරියාවස්පාඤ්ඤයඉතියෝපිය" + - "ාවයුරෝපා සංගමයයුරෝ කලාපයෆින්ලන්තයෆීජීෆෝක්ලන්ත දූපත්මයික්\u200dරොනීසියා" + - "වෆැරෝ දූපත්ප්\u200dරංශයගැබොන්එක්සත් රාජධානියග්\u200dරැනඩාවජෝර්ජියාවප්" + - "\u200dරංශ ගයනාවගර්න්සියඝානාවජිබ්\u200dරෝල්ටාවග්\u200dරීන්ලන්තයගැම්බියාවග" + - "ිණියාවග්වෝඩලෝප්සමක ගිනියාවග්\u200dරීසියදකුණු ජෝර්ජියාව සහ දකුණු සැන්ඩ්" + - "විච් දූපත්ගෝතමාලාවගුවාම්ගිනි බිසව්ගයනාවහොංකොං චීන විශේෂ පරිපාලන කලාපයහ" + - "ර්ඩ් දූපත සහ මැක්ඩොනල්ඩ් දූපත්හොන්ඩුරාස්ක්\u200dරොඒෂියාවහයිටිහන්ගේරියා" + - "වකැනරි සූපත්ඉන්දුනීසියාවඅයර්ලන්තයඊශ්\u200dරායලයඅයිල් ඔෆ් මෑන්ඉන්දියාවබ" + - "්\u200dරිතාන්\u200dය ඉන්දීය සාගර බල ප්\u200dරදේශයඉරාකයඉරානයඅයිස්ලන්තයඉ" + - "තාලියජර්සිජැමෙයිකාවජෝර්දානයජපානයකෙන්යාවකිර්ගිස්තානයකාම්බෝජයකිරිබතිකොමො" + - "රෝස්ශාන්ත කිට්ස් සහ නේවිස්උතුරු කොරියාවදකුණු කොරියාවකුවේටයකේමන් දූපත්ක" + - "සකස්තානයලාඕසයලෙබනනයශාන්ත ලුසියාලික්ටන්ස්ටයින්ශ්\u200dරී ලංකාවලයිබීරියා" + - "වලෙසතෝලිතුවේනියාවලක්ශම්බර්ග්ලැට්වියාවලිබියාවමොරොක්කෝවමොනාකෝවමොල්ඩෝවාවම" + - "ොන්ටෙනීග්\u200dරෝශාන්ත මාර්ටින්මැඩගස්කරයමාෂල් දූපත්මැසිඩෝනියාවමාලිමියන" + - "්මාරය (බුරුමය)මොන්ගෝලියාවමකාවු චීන විශේෂ පරිපාලන කලාපයඋතුරු මරියානා දූ" + - "පත්මර්ටිනික්මොරිටේනියාවමොන්සෙරාට්මෝල්ටාවමුරුසියමාල දිවයිනමලාවිමෙක්සිකෝ" + - "වමැලේසියාවමොසැම්බික්නැමීබියාවනව කැලිඩෝනියාවනයිජර්නෝෆෝක් දූපතනයිජීරියාව" + - "නිකරගුවාවනෙදර්ලන්තයනෝර්වේනේපාලයනාවුරුනියූනවසීලන්තයඕමානයපැනමාවපේරුප්" + - "\u200dරංශ පොලිනීසියාවපැපුවා නිව් ගිනියාවපිලිපීනයපාකිස්තානයපෝලන්තයශාන්ත ප" + - "ියරේ සහ මැකෝලන්පිට්කෙය්න් දූපත්පුවර්ටෝ රිකෝපලස්තීන රාජ්\u200dයයපෘතුගාල" + - "යපලාවුපැරගුවේකටාර්ඈත ඕෂනියාවරීයුනියන්රුමේනියාවසර්බියාවරුසියාවරුවන්ඩාවස" + - "ෞදි අරාබියසොලමන් දූපත්සීශෙල්ස්සූඩානයස්වීඩනයසිංගප්පූරුවශාන්ත හෙලේනාස්ලෝ" + - "වේනියාවස්වෙල්බර්ඩ් සහ ජේන් මයේන්ස්ලෝවැකියාවසියරාලියෝන්සැන් මැරිනෝසෙනගා" + - "ලයසෝමාලියාවසුරිනාමයදකුණු සුඩානයසාඕ තෝම් සහ ප්\u200dරින්සිප්එල් සැල්වදෝ" + - "රයශාන්ත මාර්ටෙන්සිරියාවස්වාසිලන්තයට්\u200dරිස්ටන් ද කුන්හාටර්ක්ස් සහ ක" + - "යිකොස් දූපත්චැච්දකුණු ප්\u200dරංශ දූපත් සමූහයටොගෝතායිලන්තයටජිකිස්තානයට" + - "ොකලාවුටිමෝර් - ලෙස්ත්ටර්ක්මෙනිස්ථානයටියුනීසියාවටොංගාතුර්කියට්\u200dරින" + - "ිඩෑඩ් සහ ටොබැගෝටුවාලූතායිවානයටැන්සානියාවයුක්රේනයඋගන්ඩාවඑක්සත් ජනපද ඈත " + - "දූපත්එක්සත් ජාතීන්එක්සත් ජනපදයඋරුගුවේඋස්බෙකිස්ථානයවතිකානු නගරයශාන්ත වි" + - "න්සන්ට් සහ ග්\u200dරෙනඩින්ස්වෙනිසියුලාවබ්\u200dරිතාන්\u200dය වර්ජින් ද" + - "ූපත්ඇමරිකානු වර්ජින් දූපත්වියට්නාමයවනුවාටුවැලිස් සහ ෆුටුනාසැමෝවාකොසෝවෝ" + - "යේමනයමයෝට්දකුණු අප්\u200dරිකාවසැම්බියාවසිම්බාබ්වේහඳුනා නොගත් කළාපයලෝකය" + - "අප්\u200dරිකාවඋතුරු ඇමෙරිකාවදකුණු ඇමෙරිකාවඕෂනියාවබටහිරදිග අප්\u200dරික" + - "ාවමධ්\u200dයම ඇමෙරිකාවපෙරදිග අප්\u200dරිකාවඋතුරුදිග අප්\u200dරිකාවමධ්" + - "\u200dයම අප්\u200dරිකාවදකුණුදිග අප්\u200dරිකාවඇමරිකාවඋතුරුදිග ඇමෙරිකාවකැ" + - "රීබියන්නැගෙනහිර ආසියාවදකුණු ආසියාවඅග්නිදිග ආසියාවදකුණුදිග යුරෝපයඕස්ට්" + - "\u200dරලේෂියාවමෙලනීසියාවමයික්\u200dරෝනීසියානු කළාපයපොලිනීසියාවආසියාවමධ්" + - "\u200dයම ආසියාවබටහිර ආසියාවයුරෝපයනැගෙනහිර යුරෝපයඋතුරු යුරෝපයබටහිර යුරෝපය" + - "ලතින් ඇමෙරිකාව" - -var siRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x002b, 0x0043, 0x008b, 0x00af, 0x00ed, 0x010b, 0x0129, - 0x0147, 0x015f, 0x0183, 0x01a7, 0x01d5, 0x01f6, 0x021d, 0x022c, - 0x024e, 0x026f, 0x02b3, 0x02c8, 0x02e6, 0x02fe, 0x0320, 0x033e, - 0x0350, 0x0368, 0x037a, 0x03a2, 0x03bd, 0x03cf, 0x03ea, 0x0427, - 0x043f, 0x0451, 0x0463, 0x0482, 0x04a0, 0x04b5, 0x04c7, 0x04d9, - 0x04fb, 0x0525, 0x0566, 0x0596, 0x05c0, 0x05e6, 0x0602, 0x060e, - 0x0623, 0x062f, 0x0650, 0x067b, 0x0699, 0x06ae, 0x06ca, 0x06df, - 0x070a, 0x0725, 0x0741, 0x0756, 0x0781, 0x0793, 0x07b1, 0x07cc, - // Entry 40 - 7F - 0x07f4, 0x0812, 0x0844, 0x085c, 0x087a, 0x0892, 0x08b1, 0x08d2, - 0x08ea, 0x0908, 0x092a, 0x0946, 0x0961, 0x096d, 0x0995, 0x09c2, - 0x09de, 0x09f3, 0x0a05, 0x0a30, 0x0a4b, 0x0a66, 0x0a88, 0x0aa0, - 0x0aaf, 0x0ad3, 0x0af7, 0x0b12, 0x0b27, 0x0b42, 0x0b61, 0x0b79, - 0x0bea, 0x0c02, 0x0c14, 0x0c30, 0x0c3f, 0x0c91, 0x0ce6, 0x0d04, - 0x0d25, 0x0d34, 0x0d52, 0x0d71, 0x0d95, 0x0db0, 0x0dcb, 0x0df1, - 0x0e09, 0x0e6a, 0x0e79, 0x0e88, 0x0ea6, 0x0eb8, 0x0ec7, 0x0ee2, - 0x0efa, 0x0f09, 0x0f1e, 0x0f42, 0x0f5a, 0x0f6f, 0x0f87, 0x0fc3, - // Entry 80 - BF - 0x0fe8, 0x100d, 0x101f, 0x103e, 0x1059, 0x1068, 0x107a, 0x109c, - 0x10c6, 0x10e5, 0x1103, 0x1112, 0x1133, 0x1154, 0x116f, 0x1184, - 0x119f, 0x11b4, 0x11cf, 0x11f6, 0x121e, 0x1239, 0x1258, 0x1279, - 0x1285, 0x12b5, 0x12d6, 0x1325, 0x135a, 0x1375, 0x1396, 0x13b4, - 0x13c9, 0x13de, 0x13fa, 0x1409, 0x1424, 0x143f, 0x145d, 0x1478, - 0x14a0, 0x14b2, 0x14d1, 0x14ef, 0x150a, 0x1528, 0x153a, 0x154c, - 0x155e, 0x156a, 0x1585, 0x1594, 0x15a6, 0x15b2, 0x15e6, 0x161b, - 0x1633, 0x1651, 0x1666, 0x16a2, 0x16d0, 0x16f2, 0x171d, 0x1735, - // Entry C0 - FF - 0x1744, 0x1759, 0x1768, 0x1784, 0x179f, 0x17ba, 0x17d2, 0x17e7, - 0x17ff, 0x181e, 0x1840, 0x1858, 0x186a, 0x187f, 0x18a0, 0x18c2, - 0x18e3, 0x1928, 0x1949, 0x196a, 0x1989, 0x199e, 0x19b9, 0x19d1, - 0x19f3, 0x1a32, 0x1a57, 0x1a7f, 0x1a94, 0x1ab5, 0x1aea, 0x1b2c, - 0x1b38, 0x1b7a, 0x1b86, 0x1ba1, 0x1bc2, 0x1bd7, 0x1bfe, 0x1c2b, - 0x1c4c, 0x1c5b, 0x1c70, 0x1cab, 0x1cbd, 0x1cd5, 0x1cf6, 0x1d0e, - 0x1d23, 0x1d59, 0x1d7e, 0x1da0, 0x1db5, 0x1ddc, 0x1dfe, 0x1e55, - 0x1e76, 0x1ebd, 0x1efb, 0x1f16, 0x1f2b, 0x1f57, 0x1f69, 0x1f7b, - // Entry 100 - 13F - 0x1f8a, 0x1f99, 0x1fc4, 0x1fdf, 0x1ffd, 0x202c, 0x2038, 0x2053, - 0x207b, 0x20a3, 0x20b8, 0x20ec, 0x2117, 0x2145, 0x2179, 0x21a7, - 0x21db, 0x21f0, 0x2221, 0x223c, 0x2267, 0x2289, 0x22b4, 0x22df, - 0x2309, 0x2327, 0x2367, 0x2388, 0x239a, 0x23bf, 0x23e1, 0x23f3, - 0x241e, 0x2440, 0x2462, 0x2462, 0x248a, -} // Size: 610 bytes - -const skRegionStr string = "" + // Size: 3252 bytes - "AscensionAndorraSpojené arabské emirátyAfganistanAntigua a BarbudaAnguil" + - "laAlbánskoArménskoAngolaAntarktídaArgentínaAmerická SamoaRakúskoAustráli" + - "aArubaAlandyAzerbajdžanBosna a HercegovinaBarbadosBangladéšBelgickoBurki" + - "na FasoBulharskoBahrajnBurundiBeninSvätý BartolomejBermudyBrunejBolíviaK" + - "aribské HolandskoBrazíliaBahamyBhutánBouvetov ostrovBotswanaBieloruskoBe" + - "lizeKanadaKokosové ostrovyKonžská demokratická republikaStredoafrická re" + - "publikaKonžská republikaŠvajčiarskoPobrežie SlonovinyCookove ostrovyČile" + - "KamerunČínaKolumbiaClippertonKostarikaKubaKapverdyCuraçaoVianočný ostrov" + - "CyprusČeskoNemeckoDiego GarciaDžibutskoDánskoDominikaDominikánska republ" + - "ikaAlžírskoCeuta a MelillaEkvádorEstónskoEgyptZápadná SaharaEritreaŠpani" + - "elskoEtiópiaEurópska úniaeurozónaFínskoFidžiFalklandyMikronéziaFaerské o" + - "strovyFrancúzskoGabonSpojené kráľovstvoGrenadaGruzínskoFrancúzska Guyana" + - "GuernseyGhanaGibraltárGrónskoGambiaGuineaGuadeloupeRovníková GuineaGréck" + - "oJužná Georgia a Južné Sandwichove ostrovyGuatemalaGuamGuinea-BissauGuya" + - "naHongkong – OAO ČínyHeardov ostrov a Macdonaldove ostrovyHondurasChorvá" + - "tskoHaitiMaďarskoKanárske ostrovyIndonéziaÍrskoIzraelOstrov ManIndiaBrit" + - "ské indickooceánske územieIrakIránIslandTalianskoJerseyJamajkaJordánskoJ" + - "aponskoKeňaKirgizskoKambodžaKiribatiKomorySvätý Krištof a NevisSeverná K" + - "óreaJužná KóreaKuvajtKajmanie ostrovyKazachstanLaosLibanonSvätá LuciaLi" + - "chtenštajnskoSrí LankaLibériaLesothoLitvaLuxemburskoLotyšskoLíbyaMarokoM" + - "onakoMoldavskoČierna HoraSvätý Martin (fr.)MadagaskarMarshallove ostrovy" + - "MacedónskoMaliMjanmarskoMongolskoMacao – OAO ČínySeverné MariányMartinik" + - "MauritániaMontserratMaltaMauríciusMaldivyMalawiMexikoMalajziaMozambikNam" + - "íbiaNová KaledóniaNigerNorfolkNigériaNikaraguaHolandskoNórskoNepálNauru" + - "NiueNový ZélandOmánPanamaPeruFrancúzska PolynéziaPapua-Nová GuineaFilipí" + - "nyPakistanPoľskoSaint Pierre a MiquelonPitcairnove ostrovyPortorikoPales" + - "tínske územiaPortugalskoPalauParaguajKatarostatné TichomorieRéunionRumun" + - "skoSrbskoRuskoRwandaSaudská ArábiaŠalamúnove ostrovySeychelySudánŠvédsko" + - "SingapurSvätá HelenaSlovinskoSvalbard a Jan MayenSlovenskoSierra LeoneSa" + - "n MarínoSenegalSomálskoSurinamJužný SudánSvätý Tomáš a Princov ostrovSal" + - "vádorSvätý Martin (hol.)SýriaSvazijskoTristan da CunhaTurks a CaicosČadF" + - "rancúzske južné a antarktické územiaTogoThajskoTadžikistanTokelauVýchodn" + - "ý TimorTurkménskoTuniskoTongaTureckoTrinidad a TobagoTuvaluTaiwanTanzán" + - "iaUkrajinaUgandaMenšie odľahlé ostrovy USAOrganizácia Spojených národovS" + - "pojené štátyUruguajUzbekistanVatikánSvätý Vincent a GrenadínyVenezuelaBr" + - "itské Panenské ostrovyAmerické Panenské ostrovyVietnamVanuatuWallis a Fu" + - "tunaSamoaKosovoJemenMayotteJužná AfrikaZambiaZimbabweneznámy regiónsvetA" + - "frikaSeverná AmerikaJužná AmerikaOceániazápadná AfrikaStredná Amerikavýc" + - "hodná Afrikaseverná Afrikastredná Afrikajužné územia AfrikyAmerikasevern" + - "é územia AmerikyKaribikvýchodná Áziajužná Áziajuhovýchodná Áziajužná Eu" + - "rópaAustraláziaMelanéziaoblasť MikronéziePolynéziaÁziastredná Áziazápadn" + - "á ÁziaEurópavýchodná Európaseverná Európazápadná EurópaLatinská Amerika" - -var skRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x002a, 0x0034, 0x0045, 0x004d, 0x0056, - 0x005f, 0x0065, 0x0070, 0x007a, 0x0089, 0x0091, 0x009b, 0x00a0, - 0x00a6, 0x00b2, 0x00c5, 0x00cd, 0x00d8, 0x00e0, 0x00ec, 0x00f5, - 0x00fc, 0x0103, 0x0108, 0x011a, 0x0121, 0x0127, 0x012f, 0x0142, - 0x014b, 0x0151, 0x0158, 0x0167, 0x016f, 0x0179, 0x017f, 0x0185, - 0x0196, 0x01b7, 0x01cf, 0x01e2, 0x01ef, 0x0202, 0x0211, 0x0216, - 0x021d, 0x0223, 0x022b, 0x0235, 0x023e, 0x0242, 0x024a, 0x0252, - 0x0263, 0x0269, 0x026f, 0x0276, 0x0282, 0x028c, 0x0293, 0x029b, - // Entry 40 - 7F - 0x02b2, 0x02bc, 0x02cb, 0x02d3, 0x02dc, 0x02e1, 0x02f1, 0x02f8, - 0x0303, 0x030b, 0x031a, 0x0323, 0x032a, 0x0330, 0x0339, 0x0344, - 0x0354, 0x035f, 0x0364, 0x0379, 0x0380, 0x038a, 0x039c, 0x03a4, - 0x03a9, 0x03b3, 0x03bb, 0x03c1, 0x03c7, 0x03d1, 0x03e3, 0x03ea, - 0x0417, 0x0420, 0x0424, 0x0431, 0x0437, 0x044e, 0x0473, 0x047b, - 0x0486, 0x048b, 0x0494, 0x04a5, 0x04af, 0x04b5, 0x04bb, 0x04c5, - 0x04ca, 0x04eb, 0x04ef, 0x04f4, 0x04fa, 0x0503, 0x0509, 0x0510, - 0x051a, 0x0522, 0x0527, 0x0530, 0x0539, 0x0541, 0x0547, 0x055f, - // Entry 80 - BF - 0x056e, 0x057c, 0x0582, 0x0592, 0x059c, 0x05a0, 0x05a7, 0x05b4, - 0x05c4, 0x05ce, 0x05d6, 0x05dd, 0x05e2, 0x05ed, 0x05f6, 0x05fc, - 0x0602, 0x0608, 0x0611, 0x061d, 0x0631, 0x063b, 0x064e, 0x0659, - 0x065d, 0x0667, 0x0670, 0x0684, 0x0695, 0x069d, 0x06a8, 0x06b2, - 0x06b7, 0x06c1, 0x06c8, 0x06ce, 0x06d4, 0x06dc, 0x06e4, 0x06ec, - 0x06fc, 0x0701, 0x0708, 0x0710, 0x0719, 0x0722, 0x0729, 0x072f, - 0x0734, 0x0738, 0x0745, 0x074a, 0x0750, 0x0754, 0x076a, 0x077c, - 0x0785, 0x078d, 0x0794, 0x07ab, 0x07be, 0x07c7, 0x07db, 0x07e6, - // Entry C0 - FF - 0x07eb, 0x07f3, 0x07f8, 0x080b, 0x0813, 0x081b, 0x0821, 0x0826, - 0x082c, 0x083c, 0x0850, 0x0858, 0x085e, 0x0867, 0x086f, 0x087d, - 0x0886, 0x089a, 0x08a3, 0x08af, 0x08ba, 0x08c1, 0x08ca, 0x08d1, - 0x08df, 0x08ff, 0x0908, 0x091d, 0x0923, 0x092c, 0x093c, 0x094a, - 0x094e, 0x0978, 0x097c, 0x0983, 0x098f, 0x0996, 0x09a6, 0x09b1, - 0x09b8, 0x09bd, 0x09c4, 0x09d5, 0x09db, 0x09e1, 0x09ea, 0x09f2, - 0x09f8, 0x0a15, 0x0a35, 0x0a45, 0x0a4c, 0x0a56, 0x0a5e, 0x0a7a, - 0x0a83, 0x0a9d, 0x0ab8, 0x0abf, 0x0ac6, 0x0ad5, 0x0ada, 0x0ae0, - // Entry 100 - 13F - 0x0ae5, 0x0aec, 0x0afa, 0x0b00, 0x0b08, 0x0b18, 0x0b1c, 0x0b22, - 0x0b32, 0x0b41, 0x0b49, 0x0b59, 0x0b69, 0x0b7a, 0x0b89, 0x0b98, - 0x0bae, 0x0bb5, 0x0bcd, 0x0bd4, 0x0be4, 0x0bf1, 0x0c05, 0x0c14, - 0x0c20, 0x0c2a, 0x0c3d, 0x0c47, 0x0c4c, 0x0c5a, 0x0c69, 0x0c70, - 0x0c82, 0x0c92, 0x0ca3, 0x0ca3, 0x0cb4, -} // Size: 610 bytes - -const slRegionStr string = "" + // Size: 3214 bytes - "Otok AscensionAndoraZdruženi arabski emiratiAfganistanAntigva in Barbuda" + - "AngvilaAlbanijaArmenijaAngolaAntarktikaArgentinaAmeriška SamoaAvstrijaAv" + - "stralijaArubaÅlandski otokiAzerbajdžanBosna in HercegovinaBarbadosBangla" + - "dešBelgijaBurkina FasoBolgarijaBahrajnBurundiBeninSaint BarthélemyBermud" + - "iBrunejBolivijaNizozemski KaribiBrazilijaBahamiButanBouvetov otokBocvana" + - "BelorusijaBelizeKanadaKokosovi otokiDemokratična republika KongoCentraln" + - "oafriška republikaKongo - BrazzavilleŠvicaSlonokoščena obalaCookovi otok" + - "iČileKamerunKitajskaKolumbijaOtok ClippertonKostarikaKubaZelenortski oto" + - "kiCuraçaoBožični otokCiperČeškaNemčijaDiego GarciaDžibutiDanskaDominikaD" + - "ominikanska republikaAlžirijaCeuta in MelillaEkvadorEstonijaEgiptZahodna" + - " SaharaEritrejaŠpanijaEtiopijaEvropska unijaevroobmočjeFinskaFidžiFalkla" + - "ndski otokiMikronezijaFerski otokiFrancijaGabonZdruženo kraljestvoGrenad" + - "aGruzijaFrancoska GvajanaGuernseyGanaGibraltarGrenlandijaGambijaGvinejaG" + - "uadeloupeEkvatorialna GvinejaGrčijaJužna Georgia in Južni Sandwichevi ot" + - "okiGvatemalaGuamGvineja BissauGvajanaPosebno administrativno območje LR " + - "Kitajske HongkongHeardov otok in McDonaldovi otokiHondurasHrvaškaHaitiMa" + - "džarskaKanarski otokiIndonezijaIrskaIzraelOtok ManIndijaBritansko ozemlj" + - "e v Indijskem oceanuIrakIranIslandijaItalijaJerseyJamajkaJordanijaJapons" + - "kaKenijaKirgizistanKambodžaKiribatiKomoriSaint Kitts in NevisSeverna Kor" + - "ejaJužna KorejaKuvajtKajmanski otokiKazahstanLaosLibanonSaint LuciaLihte" + - "nštajnŠrilankaLiberijaLesotoLitvaLuksemburgLatvijaLibijaMarokoMonakoMold" + - "avijaČrna goraSaint MartinMadagaskarMarshallovi otokiMakedonijaMaliMjanm" + - "ar (Burma)MongolijaPosebno administrativno območje LR Kitajske MacaoSeve" + - "rni Marianski otokiMartinikMavretanijaMontserratMaltaMauritiusMaldiviMal" + - "aviMehikaMalezijaMozambikNamibijaNova KaledonijaNigerNorfolški otokNiger" + - "ijaNikaragvaNizozemskaNorveškaNepalNauruNiueNova ZelandijaOmanPanamaPeru" + - "Francoska PolinezijaPapua Nova GvinejaFilipiniPakistanPoljskaSaint Pierr" + - "e in MiquelonPitcairnPortorikoPalestinsko ozemljePortugalskaPalauParagva" + - "jKatarOstala oceanijaReunionRomunijaSrbijaRusijaRuandaSaudova ArabijaSal" + - "omonovi otokiSejšeliSudanŠvedskaSingapurSveta HelenaSlovenijaSvalbard in" + - " Jan MayenSlovaškaSierra LeoneSan MarinoSenegalSomalijaSurinamJužni Suda" + - "nSao Tome in PrincipeSalvadorSint MaartenSirijaSvaziTristan da CunhaOtok" + - "i Turks in CaicosČadFrancosko južno ozemljeTogoTajskaTadžikistanTokelauT" + - "imor-LesteTurkmenistanTunizijaTongaTurčijaTrinidad in TobagoTuvaluTajvan" + - "TanzanijaUkrajinaUgandaStranski zunanji otoki Združenih državZdruženi na" + - "rodiZdružene države AmerikeUrugvajUzbekistanVatikanSaint Vincent in Gren" + - "adineVenezuelaBritanski Deviški otokiAmeriški Deviški otokiVietnamVanuat" + - "uWallis in FutunaSamoaKosovoJemenMayotteJužnoafriška republikaZambijaZim" + - "babveNeznano ali neveljavno območjesvetAfrikaSeverna AmerikaJužna Amerik" + - "aOceanijaZahodna AfrikaSrednja AmerikaVzhodna AfrikaSeverna AfrikaSrednj" + - "a AfrikaJužna AfrikaAmerikesevernoameriška celinaKaribiVzhodna AzijaJužn" + - "a AzijaJugovzhodna AzijaJužna EvropaAvstralija in Nova ZelandijaMelanezi" + - "jamikronezijska regijaPolinezijaAzijaOsrednja AzijaZahodna AzijaEvropaVz" + - "hodna EvropaSeverna EvropaZahodna EvropaLatinska Amerika" - -var slRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x0014, 0x002d, 0x0037, 0x0049, 0x0050, 0x0058, - 0x0060, 0x0066, 0x0070, 0x0079, 0x0088, 0x0090, 0x009a, 0x009f, - 0x00ae, 0x00ba, 0x00ce, 0x00d6, 0x00e0, 0x00e7, 0x00f3, 0x00fc, - 0x0103, 0x010a, 0x010f, 0x0120, 0x0127, 0x012d, 0x0135, 0x0146, - 0x014f, 0x0155, 0x015a, 0x0167, 0x016e, 0x0178, 0x017e, 0x0184, - 0x0192, 0x01af, 0x01ca, 0x01dd, 0x01e3, 0x01f7, 0x0204, 0x0209, - 0x0210, 0x0218, 0x0221, 0x0230, 0x0239, 0x023d, 0x024e, 0x0256, - 0x0264, 0x0269, 0x0270, 0x0278, 0x0284, 0x028c, 0x0292, 0x029a, - // Entry 40 - 7F - 0x02b0, 0x02b9, 0x02c9, 0x02d0, 0x02d8, 0x02dd, 0x02eb, 0x02f3, - 0x02fb, 0x0303, 0x0311, 0x031d, 0x0323, 0x0329, 0x033a, 0x0345, - 0x0351, 0x0359, 0x035e, 0x0372, 0x0379, 0x0380, 0x0391, 0x0399, - 0x039d, 0x03a6, 0x03b1, 0x03b8, 0x03bf, 0x03c9, 0x03dd, 0x03e4, - 0x040e, 0x0417, 0x041b, 0x0429, 0x0430, 0x0465, 0x0486, 0x048e, - 0x0496, 0x049b, 0x04a5, 0x04b3, 0x04bd, 0x04c2, 0x04c8, 0x04d0, - 0x04d6, 0x04fa, 0x04fe, 0x0502, 0x050b, 0x0512, 0x0518, 0x051f, - 0x0528, 0x0530, 0x0536, 0x0541, 0x054a, 0x0552, 0x0558, 0x056c, - // Entry 80 - BF - 0x057a, 0x0587, 0x058d, 0x059c, 0x05a5, 0x05a9, 0x05b0, 0x05bb, - 0x05c7, 0x05d0, 0x05d8, 0x05de, 0x05e3, 0x05ed, 0x05f4, 0x05fa, - 0x0600, 0x0606, 0x060f, 0x0619, 0x0625, 0x062f, 0x0640, 0x064a, - 0x064e, 0x065d, 0x0666, 0x0698, 0x06af, 0x06b7, 0x06c2, 0x06cc, - 0x06d1, 0x06da, 0x06e1, 0x06e7, 0x06ed, 0x06f5, 0x06fd, 0x0705, - 0x0714, 0x0719, 0x0728, 0x0730, 0x0739, 0x0743, 0x074c, 0x0751, - 0x0756, 0x075a, 0x0768, 0x076c, 0x0772, 0x0776, 0x078a, 0x079c, - 0x07a4, 0x07ac, 0x07b3, 0x07cb, 0x07d3, 0x07dc, 0x07ef, 0x07fa, - // Entry C0 - FF - 0x07ff, 0x0807, 0x080c, 0x081b, 0x0822, 0x082a, 0x0830, 0x0836, - 0x083c, 0x084b, 0x085b, 0x0863, 0x0868, 0x0870, 0x0878, 0x0884, - 0x088d, 0x08a2, 0x08ab, 0x08b7, 0x08c1, 0x08c8, 0x08d0, 0x08d7, - 0x08e3, 0x08f7, 0x08ff, 0x090b, 0x0911, 0x0916, 0x0926, 0x093b, - 0x093f, 0x0957, 0x095b, 0x0961, 0x096d, 0x0974, 0x097f, 0x098b, - 0x0993, 0x0998, 0x09a0, 0x09b2, 0x09b8, 0x09be, 0x09c7, 0x09cf, - 0x09d5, 0x09fd, 0x0a0d, 0x0a26, 0x0a2d, 0x0a37, 0x0a3e, 0x0a58, - 0x0a61, 0x0a79, 0x0a91, 0x0a98, 0x0a9f, 0x0aaf, 0x0ab4, 0x0aba, - // Entry 100 - 13F - 0x0abf, 0x0ac6, 0x0ade, 0x0ae5, 0x0aed, 0x0b0c, 0x0b10, 0x0b16, - 0x0b25, 0x0b33, 0x0b3b, 0x0b49, 0x0b58, 0x0b66, 0x0b74, 0x0b82, - 0x0b8f, 0x0b96, 0x0bad, 0x0bb3, 0x0bc0, 0x0bcc, 0x0bdd, 0x0bea, - 0x0c06, 0x0c10, 0x0c24, 0x0c2e, 0x0c33, 0x0c41, 0x0c4e, 0x0c54, - 0x0c62, 0x0c70, 0x0c7e, 0x0c7e, 0x0c8e, -} // Size: 610 bytes - -const sqRegionStr string = "" + // Size: 3075 bytes - "Ishulli AsenshionAndorrëEmiratet e Bashkuara ArabeAfganistanAntigua e Ba" + - "rbudaAnguilëShqipëriArmeniAngolëAntarktikëArgjentinëSamoa AmerikaneAustr" + - "iAustraliArubëIshujt AlandëAzerbajxhanBosnjë-HercegovinëBarbadosBanglade" + - "shBelgjikëBurkina-FasoBullgariBahrejnBurundiBeninShën BartolomeuBermudëB" + - "runeiBoliviKaraibet holandezeBrazilBahamasButanIshulli BoveBotsvanëBjell" + - "orusiBelizëKanadaIshujt KokosKongo-KinshasaRepublika e Afrikës QendroreK" + - "ongo-BrazavilëZvicërCôte d’IvoireIshujt KukKiliKamerunKinëKolumbiIshulli" + - " KlipërtonKosta-RikëKubëKepi i GjelbërKuraçaoIshulli i KrishtlindjesQipr" + - "oÇekiGjermaniDiego-GarsiaXhibutiDanimarkëDominikëRepublika DominikaneAlg" + - "jeriTheuta e MelilaEkuadorEstoniEgjiptSaharaja PerëndimoreEritreSpanjëEt" + - "iopiBashkimi EuropianEurozonëFinlandëFixhiIshujt FalklandMikroneziIshujt" + - " FaroeFrancëGabonMbretëria e BashkuarGrenadëGjeorgjiGuajana FrancezeGern" + - "sejGanëGjibraltarGrenlandëGambiaGuineGuadalupeGuineja EkuatorialeGreqiXh" + - "orxha Jugore dhe Ishujt Senduiçë të JugutGuatemalëGuamGuine-BisauGuajanë" + - "RPA i Hong-KongutIshulli Hërd dhe Ishujt MekdonaldHondurasKroaciHaitiHun" + - "gariIshujt KanarieIndoneziIrlandëIzraelIshulli i ManitIndiTerritori Brit" + - "anik i Oqeanit IndianIrakIranIslandëItaliXhersejXhamajkëJordaniJaponiKen" + - "iaKirgistanKamboxhiaKiribatiKomoreShën-Kits dhe NevisKoreja e VeriutKore" + - "ja e JugutKuvajtIshujt KajmanKazakistanLaosLibanShën-LuçiaLihtenshtajnSr" + - "i-LankëLiberiLesotoLituaniLuksemburgLetoniLibiMarokMonakoMoldaviMal i Zi" + - "Shën-MartinMadagaskarIshujt MarshallMaqedoniMaliMianmar (Burma)MongoliRP" + - "A i MakaosIshujt e Marianës VerioreMartinikëMauritaniMontseratMaltëMauri" + - "tiusMaldiveMalaviMeksikëMalajziMozambikNamibiKaledonia e ReNigerIshulli " + - "NorfolkNigeriNikaraguaHolandëNorvegjiNepalNauruNiueZelandë e ReOmanPanam" + - "aPeruPolinezia FrancezeGuineja e Re-PapuaFilipinePakistanPoloniShën Pier" + - " dhe MikelonIshujt PitkernPorto-RikoTerritoret PalestinezePortugaliPalau" + - "ParaguaiKatarOqeania e Largët (Lindja e Largët)ReunionRumaniSerbiRusiRua" + - "ndëArabia SauditeIshujt SolomonSejshelleSudanSuediSingaporShën-HelenëSll" + - "oveniSvalbard dhe Jan-MajenSllovakiSiera-LeoneSan-MarinoSenegalSomaliSur" + - "inamiSudani i JugutSao Tome dhe PrincipeSalvadorSint-MartenSiriSvaziland" + - "ëTristan-da-KunaIshujt Turks dhe KaikosÇadTerritoret Jugore FrancezeTog" + - "oTajlandëTaxhikistanTokelauTimor-LesteTurkmenistanTuniziTongaTurqiTrinid" + - "ad e TobagoTuvaluTajvanTanzaniUkrainëUgandëIshujt Periferikë të SHBA-sëK" + - "ombet e BashkuaraShtetet e Bashkuara të AmerikësUruguaiUzbekistanVatikan" + - "Shën-Vincent dhe GrenadineVenezuelëIshujt e Virgjër BritanikëIshujt e Vi" + - "rgjër të SHBA-sëVietnamVanuatuUollis e FutunaSamoaKosovëJemenMajotëAfrik" + - "a e JugutZambiaZimbabveI panjohurBotaAfrikëAmerika e VeriutAmerika e Jug" + - "utOqeaniAfrika PerëndimoreAmerika QendroreAfrika LindoreAfrika VerioreAf" + - "rika e MesmeAfrika JugoreAmerikëAmerika VerioreKaraibeAzia LindoreAzia J" + - "ugoreAzia JuglindoreEuropa JugoreAustralaziaMelaneziaRajoni MikronezianP" + - "olineziaAziAzia QendroreAzia PerëndimoreEuropëEuropa LindoreEuropa Verio" + - "reEuropa PerëndimoreAmerika Latine" - -var sqRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0011, 0x0019, 0x0033, 0x003d, 0x004e, 0x0056, 0x005f, - 0x0065, 0x006c, 0x0077, 0x0082, 0x0091, 0x0097, 0x009f, 0x00a5, - 0x00b3, 0x00be, 0x00d2, 0x00da, 0x00e4, 0x00ed, 0x00f9, 0x0101, - 0x0108, 0x010f, 0x0114, 0x0124, 0x012c, 0x0132, 0x0138, 0x014a, - 0x0150, 0x0157, 0x015c, 0x0168, 0x0171, 0x017b, 0x0182, 0x0188, - 0x0194, 0x01a2, 0x01bf, 0x01cf, 0x01d6, 0x01e6, 0x01f0, 0x01f4, - 0x01fb, 0x0200, 0x0207, 0x0219, 0x0224, 0x0229, 0x0238, 0x0240, - 0x0257, 0x025c, 0x0261, 0x0269, 0x0275, 0x027c, 0x0286, 0x028f, - // Entry 40 - 7F - 0x02a3, 0x02aa, 0x02b9, 0x02c0, 0x02c6, 0x02cc, 0x02e1, 0x02e7, - 0x02ee, 0x02f4, 0x0305, 0x030e, 0x0317, 0x031c, 0x032b, 0x0334, - 0x0340, 0x0347, 0x034c, 0x0361, 0x0369, 0x0371, 0x0381, 0x0388, - 0x038d, 0x0397, 0x03a1, 0x03a7, 0x03ac, 0x03b5, 0x03c8, 0x03cd, - 0x03fb, 0x0405, 0x0409, 0x0414, 0x041c, 0x042d, 0x044f, 0x0457, - 0x045d, 0x0462, 0x0469, 0x0477, 0x047f, 0x0487, 0x048d, 0x049c, - 0x04a0, 0x04c3, 0x04c7, 0x04cb, 0x04d3, 0x04d8, 0x04df, 0x04e8, - 0x04ef, 0x04f5, 0x04fa, 0x0503, 0x050c, 0x0514, 0x051a, 0x052e, - // Entry 80 - BF - 0x053d, 0x054b, 0x0551, 0x055e, 0x0568, 0x056c, 0x0571, 0x057d, - 0x0589, 0x0593, 0x0599, 0x059f, 0x05a6, 0x05b0, 0x05b6, 0x05ba, - 0x05bf, 0x05c5, 0x05cc, 0x05d4, 0x05e0, 0x05ea, 0x05f9, 0x0601, - 0x0605, 0x0614, 0x061b, 0x0627, 0x0641, 0x064b, 0x0654, 0x065d, - 0x0663, 0x066c, 0x0673, 0x0679, 0x0681, 0x0688, 0x0690, 0x0696, - 0x06a4, 0x06a9, 0x06b8, 0x06be, 0x06c7, 0x06cf, 0x06d7, 0x06dc, - 0x06e1, 0x06e5, 0x06f2, 0x06f6, 0x06fc, 0x0700, 0x0712, 0x0724, - 0x072c, 0x0734, 0x073a, 0x0750, 0x075e, 0x0768, 0x077e, 0x0787, - // Entry C0 - FF - 0x078c, 0x0794, 0x0799, 0x07bd, 0x07c4, 0x07ca, 0x07cf, 0x07d3, - 0x07da, 0x07e8, 0x07f6, 0x07ff, 0x0804, 0x0809, 0x0811, 0x081e, - 0x0826, 0x083c, 0x0844, 0x084f, 0x0859, 0x0860, 0x0866, 0x086e, - 0x087c, 0x0891, 0x0899, 0x08a4, 0x08a8, 0x08b3, 0x08c2, 0x08d9, - 0x08dd, 0x08f7, 0x08fb, 0x0904, 0x090f, 0x0916, 0x0921, 0x092d, - 0x0933, 0x0938, 0x093d, 0x094e, 0x0954, 0x095a, 0x0961, 0x0969, - 0x0970, 0x098f, 0x09a1, 0x09c2, 0x09c9, 0x09d3, 0x09da, 0x09f5, - 0x09ff, 0x0a1b, 0x0a39, 0x0a40, 0x0a47, 0x0a56, 0x0a5b, 0x0a62, - // Entry 100 - 13F - 0x0a67, 0x0a6e, 0x0a7c, 0x0a82, 0x0a8a, 0x0a94, 0x0a98, 0x0a9f, - 0x0aaf, 0x0abe, 0x0ac4, 0x0ad7, 0x0ae7, 0x0af5, 0x0b03, 0x0b11, - 0x0b1e, 0x0b26, 0x0b35, 0x0b3c, 0x0b48, 0x0b53, 0x0b62, 0x0b6f, - 0x0b7a, 0x0b83, 0x0b95, 0x0b9e, 0x0ba1, 0x0bae, 0x0bbf, 0x0bc6, - 0x0bd4, 0x0be2, 0x0bf5, 0x0bf5, 0x0c03, -} // Size: 610 bytes - -const srRegionStr string = "" + // Size: 6047 bytes - "Острво АсенсионАндораУједињени Арапски ЕмиратиАвганистанАнтигва и Барбуд" + - "аАнгвилаАлбанијаЈерменијаАнголаАнтарктикАргентинаАмеричка СамоаАустрија" + - "АустралијаАрубаОландска ОстрваАзербејџанБосна и ХерцеговинаБарбадосБанг" + - "ладешБелгијаБуркина ФасоБугарскаБахреинБурундиБенинСвети БартоломејБерм" + - "удаБрунејБоливијаКарипска ХоландијаБразилБахамиБутанОстрво БувеБоцванаБ" + - "елорусијаБелизеКанадаКокосова (Килингова) ОстрваКонго - КиншасаЦентралн" + - "оафричка РепубликаКонго - БразавилШвајцарскаОбала Слоноваче (Кот д’Ивоа" + - "р)Кукова ОстрваЧилеКамерунКинаКолумбијаОстрво КлипертонКостарикаКубаЗел" + - "енортска ОстрваКурасаоБожићно ОстрвоКипарЧешкаНемачкаДијего ГарсијаЏибу" + - "тиДанскаДоминикаДоминиканска РепубликаАлжирСеута и МелиљаЕквадорЕстониј" + - "аЕгипатЗападна СахараЕритрејаШпанијаЕтиопијаЕвропска УнијаЕврозонаФинск" + - "аФиџиФокландска ОстрваМикронезијаФарска ОстрваФранцускаГабонУједињено К" + - "раљевствоГренадаГрузијаФранцуска ГвајанаГернзиГанаГибралтарГренландГамб" + - "ијаГвинејаГваделупЕкваторијална ГвинејаГрчкаЈужна Џорџија и Јужна Сендв" + - "ичка ОстрваГватемалаГуамГвинеја-БисаоГвајанаСАР Хонгконг (Кина)Острво Х" + - "ерд и Мекдоналдова острваХондурасХрватскаХаитиМађарскаКанарска ОстрваИн" + - "донезијаИрскаИзраелОстрво МанИндијаБританска територија Индијског океан" + - "аИракИранИсландИталијаЏерзиЈамајкаЈорданЈапанКенијаКиргистанКамбоџаКири" + - "батиКоморска ОстрваСент Китс и НевисСеверна КорејаЈужна КорејаКувајтКај" + - "манска ОстрваКазахстанЛаосЛибанСвета ЛуцијаЛихтенштајнШри ЛанкаЛиберија" + - "ЛесотоЛитванијаЛуксембургЛетонијаЛибијаМарокоМонакоМолдавијаЦрна ГораСв" + - "ети Мартин (Француска)МадагаскарМаршалска ОстрваМакедонијаМалиМијанмар " + - "(Бурма)МонголијаСАР Макао (Кина)Северна Маријанска ОстрваМартиникМаурита" + - "нијаМонсератМалтаМаурицијусМалдивиМалавиМексикоМалезијаМозамбикНамибија" + - "Нова КаледонијаНигерОстрво НорфокНигеријаНикарагваХоландијаНорвешкаНепа" + - "лНауруНиуеНови ЗеландОманПанамаПеруФранцуска ПолинезијаПапуа Нова Гвине" + - "јаФилипиниПакистанПољскаСен Пјер и МикелонПиткернПорторикоПалестинске т" + - "ериторијеПортугалијаПалауПарагвајКатарОкеанија (удаљена острва)РеинионР" + - "умунијаСрбијаРусијаРуандаСаудијска АрабијаСоломонска ОстрваСејшелиСудан" + - "ШведскаСингапурСвета ЈеленаСловенијаСвалбард и Јан МајенСловачкаСијера " + - "ЛеонеСан МариноСенегалСомалијаСуринамЈужни СуданСао Томе и ПринципеСалв" + - "адорСвети Мартин (Холандија)СиријаСвазилендТристан да КуњаОстрва Туркс " + - "и КаикосЧадФранцуске Јужне ТериторијеТогоТајландТаџикистанТокелауТимор-" + - "Лесте (Источни Тимор)ТуркменистанТунисТонгаТурскаТринидад и ТобагоТувал" + - "уТајванТанзанијаУкрајинаУгандаУдаљена острва САДУједињене нацијеСједиње" + - "не ДржавеУругвајУзбекистанВатиканСент Винсент и ГренадиниВенецуелаБрита" + - "нска Девичанска ОстрваАмеричка Девичанска ОстрваВијетнамВануатуВалис и " + - "ФутунаСамоаКосовоЈеменМајотЈужноафричка РепубликаЗамбијаЗимбабвеНепозна" + - "т регионсветАфрикаСеверноамерички континентЈужна АмерикаОкеанијаЗападна" + - " АфрикаЦентрална АмерикаИсточна АфрикаСеверна АфрикаЦентрална АфрикаЈужн" + - "а АфрикаСеверна и Јужна АмерикаСеверна АмерикаКарибиИсточна АзијаЈужна " + - "АзијаЈугоисточна АзијаЈужна ЕвропаАустралија и Нови ЗеландМеланезијаМик" + - "ронезијски регионПолинезијаАзијаЦентрална АзијаЗападна АзијаЕвропаИсточ" + - "на ЕвропаСеверна ЕвропаЗападна ЕвропаЛатинска Америка" - -var srRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x001d, 0x0029, 0x0059, 0x006d, 0x008d, 0x009b, 0x00ab, - 0x00bd, 0x00c9, 0x00db, 0x00ed, 0x0108, 0x0118, 0x012c, 0x0136, - 0x0153, 0x0167, 0x018b, 0x019b, 0x01ad, 0x01bb, 0x01d2, 0x01e2, - 0x01f0, 0x01fe, 0x0208, 0x0227, 0x0235, 0x0241, 0x0251, 0x0274, - 0x0280, 0x028c, 0x0296, 0x02ab, 0x02b9, 0x02cd, 0x02d9, 0x02e5, - 0x0317, 0x0332, 0x0365, 0x0382, 0x0396, 0x03cc, 0x03e5, 0x03ed, - 0x03fb, 0x0403, 0x0415, 0x0434, 0x0446, 0x044e, 0x0471, 0x047f, - 0x049a, 0x04a4, 0x04ae, 0x04bc, 0x04d7, 0x04e3, 0x04ef, 0x04ff, - // Entry 40 - 7F - 0x052a, 0x0534, 0x054e, 0x055c, 0x056c, 0x0578, 0x0593, 0x05a3, - 0x05b1, 0x05c1, 0x05dc, 0x05ec, 0x05f8, 0x0600, 0x0621, 0x0637, - 0x0650, 0x0662, 0x066c, 0x0693, 0x06a1, 0x06af, 0x06d0, 0x06dc, - 0x06e4, 0x06f6, 0x0706, 0x0714, 0x0722, 0x0732, 0x075b, 0x0765, - 0x07ac, 0x07be, 0x07c6, 0x07df, 0x07ed, 0x080f, 0x084d, 0x085d, - 0x086d, 0x0877, 0x0887, 0x08a4, 0x08b8, 0x08c2, 0x08ce, 0x08e1, - 0x08ed, 0x0934, 0x093c, 0x0944, 0x0950, 0x095e, 0x0968, 0x0976, - 0x0982, 0x098c, 0x0998, 0x09aa, 0x09b8, 0x09c8, 0x09e5, 0x0a04, - // Entry 80 - BF - 0x0a1f, 0x0a36, 0x0a42, 0x0a61, 0x0a73, 0x0a7b, 0x0a85, 0x0a9c, - 0x0ab2, 0x0ac3, 0x0ad3, 0x0adf, 0x0af1, 0x0b05, 0x0b15, 0x0b21, - 0x0b2d, 0x0b39, 0x0b4b, 0x0b5c, 0x0b88, 0x0b9c, 0x0bbb, 0x0bcf, - 0x0bd7, 0x0bf4, 0x0c06, 0x0c22, 0x0c52, 0x0c62, 0x0c78, 0x0c88, - 0x0c92, 0x0ca6, 0x0cb4, 0x0cc0, 0x0cce, 0x0cde, 0x0cee, 0x0cfe, - 0x0d1b, 0x0d25, 0x0d3e, 0x0d4e, 0x0d60, 0x0d72, 0x0d82, 0x0d8c, - 0x0d96, 0x0d9e, 0x0db3, 0x0dbb, 0x0dc7, 0x0dcf, 0x0df6, 0x0e18, - 0x0e28, 0x0e38, 0x0e44, 0x0e65, 0x0e73, 0x0e85, 0x0eb0, 0x0ec6, - // Entry C0 - FF - 0x0ed0, 0x0ee0, 0x0eea, 0x0f18, 0x0f26, 0x0f36, 0x0f42, 0x0f4e, - 0x0f5a, 0x0f7b, 0x0f9c, 0x0faa, 0x0fb4, 0x0fc2, 0x0fd2, 0x0fe9, - 0x0ffb, 0x1020, 0x1030, 0x1047, 0x105a, 0x1068, 0x1078, 0x1086, - 0x109b, 0x10be, 0x10ce, 0x10fa, 0x1106, 0x1118, 0x1134, 0x115b, - 0x1161, 0x1193, 0x119b, 0x11a9, 0x11bd, 0x11cb, 0x11fc, 0x1214, - 0x121e, 0x1228, 0x1234, 0x1254, 0x1260, 0x126c, 0x127e, 0x128e, - 0x129a, 0x12bc, 0x12db, 0x12fa, 0x1308, 0x131c, 0x132a, 0x1357, - 0x1369, 0x139d, 0x13cf, 0x13df, 0x13ed, 0x1407, 0x1411, 0x141d, - // Entry 100 - 13F - 0x1427, 0x1431, 0x145c, 0x146a, 0x147a, 0x1497, 0x149f, 0x14ab, - 0x14dc, 0x14f5, 0x1505, 0x1520, 0x1541, 0x155c, 0x1577, 0x1596, - 0x15ad, 0x15d8, 0x15f5, 0x1601, 0x161a, 0x162f, 0x1650, 0x1667, - 0x1694, 0x16a8, 0x16cf, 0x16e3, 0x16ed, 0x170a, 0x1723, 0x172f, - 0x174a, 0x1765, 0x1780, 0x1780, 0x179f, -} // Size: 610 bytes - -const srLatnRegionStr string = "" + // Size: 3184 bytes - "Ostrvo AsensionAndoraUjedinjeni Arapski EmiratiAvganistanAntigva i Barbu" + - "daAngvilaAlbanijaJermenijaAngolaAntarktikArgentinaAmerička SamoaAustrija" + - "AustralijaArubaOlandska OstrvaAzerbejdžanBosna i HercegovinaBarbadosBang" + - "ladešBelgijaBurkina FasoBugarskaBahreinBurundiBeninSveti BartolomejBermu" + - "daBrunejBolivijaKaripska HolandijaBrazilBahamiButanOstrvo BuveBocvanaBel" + - "orusijaBelizeKanadaKokosova (Kilingova) OstrvaKongo - KinšasaCentralnoaf" + - "rička RepublikaKongo - BrazavilŠvajcarskaObala Slonovače (Kot d’Ivoar)Ku" + - "kova OstrvaČileKamerunKinaKolumbijaOstrvo KlipertonKostarikaKubaZelenort" + - "ska OstrvaKurasaoBožićno OstrvoKiparČeškaNemačkaDijego GarsijaDžibutiDan" + - "skaDominikaDominikanska RepublikaAlžirSeuta i MeliljaEkvadorEstonijaEgip" + - "atZapadna SaharaEritrejaŠpanijaEtiopijaEvropska UnijaEvrozonaFinskaFidži" + - "Foklandska OstrvaMikronezijaFarska OstrvaFrancuskaGabonUjedinjeno Kralje" + - "vstvoGrenadaGruzijaFrancuska GvajanaGernziGanaGibraltarGrenlandGambijaGv" + - "inejaGvadelupEkvatorijalna GvinejaGrčkaJužna Džordžija i Južna Sendvička" + - " OstrvaGvatemalaGuamGvineja-BisaoGvajanaSAR Hongkong (Kina)Ostrvo Herd i" + - " Mekdonaldova ostrvaHondurasHrvatskaHaitiMađarskaKanarska OstrvaIndonezi" + - "jaIrskaIzraelOstrvo ManIndijaBritanska teritorija Indijskog okeanaIrakIr" + - "anIslandItalijaDžerziJamajkaJordanJapanKenijaKirgistanKambodžaKiribatiKo" + - "morska OstrvaSent Kits i NevisSeverna KorejaJužna KorejaKuvajtKajmanska " + - "OstrvaKazahstanLaosLibanSveta LucijaLihtenštajnŠri LankaLiberijaLesotoLi" + - "tvanijaLuksemburgLetonijaLibijaMarokoMonakoMoldavijaCrna GoraSveti Marti" + - "n (Francuska)MadagaskarMaršalska OstrvaMakedonijaMaliMijanmar (Burma)Mon" + - "golijaSAR Makao (Kina)Severna Marijanska OstrvaMartinikMauritanijaMonser" + - "atMaltaMauricijusMaldiviMalaviMeksikoMalezijaMozambikNamibijaNova Kaledo" + - "nijaNigerOstrvo NorfokNigerijaNikaragvaHolandijaNorveškaNepalNauruNiueNo" + - "vi ZelandOmanPanamaPeruFrancuska PolinezijaPapua Nova GvinejaFilipiniPak" + - "istanPoljskaSen Pjer i MikelonPitkernPortorikoPalestinske teritorijePort" + - "ugalijaPalauParagvajKatarOkeanija (udaljena ostrva)ReinionRumunijaSrbija" + - "RusijaRuandaSaudijska ArabijaSolomonska OstrvaSejšeliSudanŠvedskaSingapu" + - "rSveta JelenaSlovenijaSvalbard i Jan MajenSlovačkaSijera LeoneSan Marino" + - "SenegalSomalijaSurinamJužni SudanSao Tome i PrincipeSalvadorSveti Martin" + - " (Holandija)SirijaSvazilendTristan da KunjaOstrva Turks i KaikosČadFranc" + - "uske Južne TeritorijeTogoTajlandTadžikistanTokelauTimor-Leste (Istočni T" + - "imor)TurkmenistanTunisTongaTurskaTrinidad i TobagoTuvaluTajvanTanzanijaU" + - "krajinaUgandaUdaljena ostrva SADUjedinjene nacijeSjedinjene DržaveUrugva" + - "jUzbekistanVatikanSent Vinsent i GrenadiniVenecuelaBritanska Devičanska " + - "OstrvaAmerička Devičanska OstrvaVijetnamVanuatuValis i FutunaSamoaKosovo" + - "JemenMajotJužnoafrička RepublikaZambijaZimbabveNepoznat regionsvetAfrika" + - "Severnoamerički kontinentJužna AmerikaOkeanijaZapadna AfrikaCentralna Am" + - "erikaIstočna AfrikaSeverna AfrikaCentralna AfrikaJužna AfrikaSeverna i J" + - "užna AmerikaSeverna AmerikaKaribiIstočna AzijaJužna AzijaJugoistočna Azi" + - "jaJužna EvropaAustralija i Novi ZelandMelanezijaMikronezijski regionPoli" + - "nezijaAzijaCentralna AzijaZapadna AzijaEvropaIstočna EvropaSeverna Evrop" + - "aZapadna EvropaLatinska Amerika" - -var srLatnRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000f, 0x0015, 0x002f, 0x0039, 0x004a, 0x0051, 0x0059, - 0x0062, 0x0068, 0x0071, 0x007a, 0x0089, 0x0091, 0x009b, 0x00a0, - 0x00af, 0x00bb, 0x00ce, 0x00d6, 0x00e0, 0x00e7, 0x00f3, 0x00fb, - 0x0102, 0x0109, 0x010e, 0x011e, 0x0125, 0x012b, 0x0133, 0x0145, - 0x014b, 0x0151, 0x0156, 0x0161, 0x0168, 0x0172, 0x0178, 0x017e, - 0x0199, 0x01a9, 0x01c4, 0x01d4, 0x01df, 0x01ff, 0x020c, 0x0211, - 0x0218, 0x021c, 0x0225, 0x0235, 0x023e, 0x0242, 0x0254, 0x025b, - 0x026b, 0x0270, 0x0277, 0x027f, 0x028d, 0x0295, 0x029b, 0x02a3, - // Entry 40 - 7F - 0x02b9, 0x02bf, 0x02ce, 0x02d5, 0x02dd, 0x02e3, 0x02f1, 0x02f9, - 0x0301, 0x0309, 0x0317, 0x031f, 0x0325, 0x032b, 0x033c, 0x0347, - 0x0354, 0x035d, 0x0362, 0x0378, 0x037f, 0x0386, 0x0397, 0x039d, - 0x03a1, 0x03aa, 0x03b2, 0x03b9, 0x03c0, 0x03c8, 0x03dd, 0x03e3, - 0x0410, 0x0419, 0x041d, 0x042a, 0x0431, 0x0444, 0x0465, 0x046d, - 0x0475, 0x047a, 0x0483, 0x0492, 0x049c, 0x04a1, 0x04a7, 0x04b1, - 0x04b7, 0x04dc, 0x04e0, 0x04e4, 0x04ea, 0x04f1, 0x04f8, 0x04ff, - 0x0505, 0x050a, 0x0510, 0x0519, 0x0522, 0x052a, 0x0539, 0x054a, - // Entry 80 - BF - 0x0558, 0x0565, 0x056b, 0x057b, 0x0584, 0x0588, 0x058d, 0x0599, - 0x05a5, 0x05af, 0x05b7, 0x05bd, 0x05c6, 0x05d0, 0x05d8, 0x05de, - 0x05e4, 0x05ea, 0x05f3, 0x05fc, 0x0614, 0x061e, 0x062f, 0x0639, - 0x063d, 0x064d, 0x0656, 0x0666, 0x067f, 0x0687, 0x0692, 0x069a, - 0x069f, 0x06a9, 0x06b0, 0x06b6, 0x06bd, 0x06c5, 0x06cd, 0x06d5, - 0x06e4, 0x06e9, 0x06f6, 0x06fe, 0x0707, 0x0710, 0x0719, 0x071e, - 0x0723, 0x0727, 0x0732, 0x0736, 0x073c, 0x0740, 0x0754, 0x0766, - 0x076e, 0x0776, 0x077d, 0x078f, 0x0796, 0x079f, 0x07b5, 0x07c0, - // Entry C0 - FF - 0x07c5, 0x07cd, 0x07d2, 0x07ec, 0x07f3, 0x07fb, 0x0801, 0x0807, - 0x080d, 0x081e, 0x082f, 0x0837, 0x083c, 0x0844, 0x084c, 0x0858, - 0x0861, 0x0875, 0x087e, 0x088a, 0x0894, 0x089b, 0x08a3, 0x08aa, - 0x08b6, 0x08c9, 0x08d1, 0x08e9, 0x08ef, 0x08f8, 0x0908, 0x091d, - 0x0921, 0x093c, 0x0940, 0x0947, 0x0953, 0x095a, 0x0976, 0x0982, - 0x0987, 0x098c, 0x0992, 0x09a3, 0x09a9, 0x09af, 0x09b8, 0x09c0, - 0x09c6, 0x09d9, 0x09ea, 0x09fc, 0x0a03, 0x0a0d, 0x0a14, 0x0a2c, - 0x0a35, 0x0a51, 0x0a6d, 0x0a75, 0x0a7c, 0x0a8a, 0x0a8f, 0x0a95, - // Entry 100 - 13F - 0x0a9a, 0x0a9f, 0x0ab7, 0x0abe, 0x0ac6, 0x0ad5, 0x0ad9, 0x0adf, - 0x0af9, 0x0b07, 0x0b0f, 0x0b1d, 0x0b2e, 0x0b3d, 0x0b4b, 0x0b5b, - 0x0b68, 0x0b80, 0x0b8f, 0x0b95, 0x0ba3, 0x0baf, 0x0bc1, 0x0bce, - 0x0be6, 0x0bf0, 0x0c04, 0x0c0e, 0x0c13, 0x0c22, 0x0c2f, 0x0c35, - 0x0c44, 0x0c52, 0x0c60, 0x0c60, 0x0c70, -} // Size: 610 bytes - -const svRegionStr string = "" + // Size: 2904 bytes - "AscensionAndorraFörenade ArabemiratenAfghanistanAntigua och BarbudaAngui" + - "llaAlbanienArmenienAngolaAntarktisArgentinaAmerikanska SamoaÖsterrikeAus" + - "tralienArubaÅlandAzerbajdzjanBosnien och HercegovinaBarbadosBangladeshBe" + - "lgienBurkina FasoBulgarienBahrainBurundiBeninS:t BarthélemyBermudaBrunei" + - "BoliviaKaribiska NederländernaBrasilienBahamasBhutanBouvetönBotswanaVitr" + - "ysslandBelizeKanadaKokosöarnaKongo-KinshasaCentralafrikanska republikenK" + - "ongo-BrazzavilleSchweizElfenbenskustenCooköarnaChileKamerunKinaColombiaC" + - "lippertonönCosta RicaKubaKap VerdeCuraçaoJulönCypernTjeckienTysklandDieg" + - "o GarciaDjiboutiDanmarkDominicaDominikanska republikenAlgerietCeuta och " + - "MelillaEcuadorEstlandEgyptenVästsaharaEritreaSpanienEtiopienEuropeiska u" + - "nioneneurozonenFinlandFijiFalklandsöarnaMikronesienFäröarnaFrankrikeGabo" + - "nStorbritannienGrenadaGeorgienFranska GuyanaGuernseyGhanaGibraltarGrönla" + - "ndGambiaGuineaGuadeloupeEkvatorialguineaGreklandSydgeorgien och Sydsandw" + - "ichöarnaGuatemalaGuamGuinea-BissauGuyanaHongkongHeardön och McDonaldöarn" + - "aHondurasKroatienHaitiUngernKanarieöarnaIndonesienIrlandIsraelIsle of Ma" + - "nIndienBrittiska territoriet i Indiska oceanenIrakIranIslandItalienJerse" + - "yJamaicaJordanienJapanKenyaKirgizistanKambodjaKiribatiKomorernaS:t Kitts" + - " och NevisNordkoreaSydkoreaKuwaitCaymanöarnaKazakstanLaosLibanonS:t Luci" + - "aLiechtensteinSri LankaLiberiaLesothoLitauenLuxemburgLettlandLibyenMaroc" + - "koMonacoMoldavienMontenegroSaint-MartinMadagaskarMarshallöarnaMakedonien" + - "MaliMyanmar (Burma)MongolietMacaoNordmarianernaMartiniqueMauretanienMont" + - "serratMaltaMauritiusMaldivernaMalawiMexikoMalaysiaMoçambiqueNamibiaNya K" + - "aledonienNigerNorfolkönNigeriaNicaraguaNederländernaNorgeNepalNauruNiueN" + - "ya ZeelandOmanPanamaPeruFranska PolynesienPapua Nya GuineaFilippinernaPa" + - "kistanPolenS:t Pierre och MiquelonPitcairnöarnaPuerto RicoPalestinska te" + - "rritoriernaPortugalPalauParaguayQataryttre öar i OceanienRéunionRumänien" + - "SerbienRysslandRwandaSaudiarabienSalomonöarnaSeychellernaSudanSverigeSin" + - "gaporeS:t HelenaSlovenienSvalbard och Jan MayenSlovakienSierra LeoneSan " + - "MarinoSenegalSomaliaSurinamSydsudanSão Tomé och PríncipeEl SalvadorSint " + - "MaartenSyrienSwazilandTristan da CunhaTurks- och CaicosöarnaTchadFranska" + - " sydterritoriernaTogoThailandTadzjikistanTokelauÖsttimorTurkmenistanTuni" + - "sienTongaTurkietTrinidad och TobagoTuvaluTaiwanTanzaniaUkrainaUgandaUSA:" + - "s yttre öarFörenta NationernaUSAUruguayUzbekistanVatikanstatenS:t Vincen" + - "t och GrenadinernaVenezuelaBrittiska JungfruöarnaAmerikanska Jungfruöarn" + - "aVietnamVanuatuWallis- och FutunaöarnaSamoaKosovoJemenMayotteSydafrikaZa" + - "mbiaZimbabweokänd regionvärldenAfrikaNordamerikaSydamerikaOceanienVästaf" + - "rikaCentralamerikaÖstafrikaNordafrikaCentralafrikasödra AfrikaNord- och " + - "Sydamerikanorra AmerikaKaribienÖstasienSydasienSydostasienSydeuropaAustr" + - "alasienMelanesienMikronesiska öarnaPolynesienAsienCentralasienVästasienE" + - "uropaÖsteuropaNordeuropaVästeuropaLatinamerika" - -var svRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x0010, 0x0026, 0x0031, 0x0044, 0x004c, 0x0054, - 0x005c, 0x0062, 0x006b, 0x0074, 0x0085, 0x008f, 0x0099, 0x009e, - 0x00a4, 0x00b0, 0x00c7, 0x00cf, 0x00d9, 0x00e0, 0x00ec, 0x00f5, - 0x00fc, 0x0103, 0x0108, 0x0117, 0x011e, 0x0124, 0x012b, 0x0143, - 0x014c, 0x0153, 0x0159, 0x0162, 0x016a, 0x0175, 0x017b, 0x0181, - 0x018c, 0x019a, 0x01b6, 0x01c7, 0x01ce, 0x01dd, 0x01e7, 0x01ec, - 0x01f3, 0x01f7, 0x01ff, 0x020c, 0x0216, 0x021a, 0x0223, 0x022b, - 0x0231, 0x0237, 0x023f, 0x0247, 0x0253, 0x025b, 0x0262, 0x026a, - // Entry 40 - 7F - 0x0281, 0x0289, 0x029a, 0x02a1, 0x02a8, 0x02af, 0x02ba, 0x02c1, - 0x02c8, 0x02d0, 0x02e2, 0x02eb, 0x02f2, 0x02f6, 0x0305, 0x0310, - 0x031a, 0x0323, 0x0328, 0x0336, 0x033d, 0x0345, 0x0353, 0x035b, - 0x0360, 0x0369, 0x0372, 0x0378, 0x037e, 0x0388, 0x0398, 0x03a0, - 0x03c1, 0x03ca, 0x03ce, 0x03db, 0x03e1, 0x03e9, 0x0404, 0x040c, - 0x0414, 0x0419, 0x041f, 0x042c, 0x0436, 0x043c, 0x0442, 0x044d, - 0x0453, 0x047a, 0x047e, 0x0482, 0x0488, 0x048f, 0x0495, 0x049c, - 0x04a5, 0x04aa, 0x04af, 0x04ba, 0x04c2, 0x04ca, 0x04d3, 0x04e6, - // Entry 80 - BF - 0x04ef, 0x04f7, 0x04fd, 0x0509, 0x0512, 0x0516, 0x051d, 0x0526, - 0x0533, 0x053c, 0x0543, 0x054a, 0x0551, 0x055a, 0x0562, 0x0568, - 0x056f, 0x0575, 0x057e, 0x0588, 0x0594, 0x059e, 0x05ac, 0x05b6, - 0x05ba, 0x05c9, 0x05d2, 0x05d7, 0x05e5, 0x05ef, 0x05fa, 0x0604, - 0x0609, 0x0612, 0x061c, 0x0622, 0x0628, 0x0630, 0x063b, 0x0642, - 0x0650, 0x0655, 0x065f, 0x0666, 0x066f, 0x067d, 0x0682, 0x0687, - 0x068c, 0x0690, 0x069b, 0x069f, 0x06a5, 0x06a9, 0x06bb, 0x06cb, - 0x06d7, 0x06df, 0x06e4, 0x06fb, 0x0709, 0x0714, 0x072d, 0x0735, - // Entry C0 - FF - 0x073a, 0x0742, 0x0747, 0x075c, 0x0764, 0x076d, 0x0774, 0x077c, - 0x0782, 0x078e, 0x079b, 0x07a7, 0x07ac, 0x07b3, 0x07bc, 0x07c6, - 0x07cf, 0x07e5, 0x07ee, 0x07fa, 0x0804, 0x080b, 0x0812, 0x0819, - 0x0821, 0x0839, 0x0844, 0x0850, 0x0856, 0x085f, 0x086f, 0x0886, - 0x088b, 0x08a3, 0x08a7, 0x08af, 0x08bb, 0x08c2, 0x08cb, 0x08d7, - 0x08df, 0x08e4, 0x08eb, 0x08fe, 0x0904, 0x090a, 0x0912, 0x0919, - 0x091f, 0x092f, 0x0942, 0x0945, 0x094c, 0x0956, 0x0963, 0x097f, - 0x0988, 0x099f, 0x09b8, 0x09bf, 0x09c6, 0x09de, 0x09e3, 0x09e9, - // Entry 100 - 13F - 0x09ee, 0x09f5, 0x09fe, 0x0a04, 0x0a0c, 0x0a19, 0x0a21, 0x0a27, - 0x0a32, 0x0a3c, 0x0a44, 0x0a4f, 0x0a5d, 0x0a67, 0x0a71, 0x0a7e, - 0x0a8b, 0x0a9f, 0x0aac, 0x0ab4, 0x0abd, 0x0ac5, 0x0ad0, 0x0ad9, - 0x0ae5, 0x0aef, 0x0b02, 0x0b0c, 0x0b11, 0x0b1d, 0x0b27, 0x0b2d, - 0x0b37, 0x0b41, 0x0b4c, 0x0b4c, 0x0b58, -} // Size: 610 bytes - -const swRegionStr string = "" + // Size: 3120 bytes - "Kisiwa cha AscensionAndorraFalme za KiarabuAfghanistanAntigua na Barbuda" + - "AnguillaAlbaniaArmeniaAngolaAntaktikiAjentinaSamoa ya MarekaniAustriaAus" + - "traliaArubaVisiwa vya AlandAzerbaijanBosnia na HezegovinaBabadosiBanglad" + - "eshiUbelgijiBukinafasoBulgariaBahareniBurundiBeninSt. BarthelemyBermudaB" + - "runeiBoliviaUholanzi ya KaribianiBrazilBahamaBhutanKisiwa cha BouvetBots" + - "wanaBelarusBelizeKanadaVisiwa vya Cocos (Keeling)Jamhuri ya Kidemokrasia" + - " ya KongoJamhuri ya Afrika ya KatiKongo - BrazzavilleUswisiCote d’Ivoire" + - "Visiwa vya CookChileKameruniUchinaKolombiaKisiwa cha ClippertonKostarika" + - "CubaCape VerdeCuracaoKisiwa cha KrismasiCyprusChechiaUjerumaniDiego Garc" + - "iaJibutiDenmarkDominikaJamhuri ya DominikaAljeriaCeuta na MelillaEcuador" + - "EstoniaMisriSahara MagharibiEritreaUhispaniaEthiopiaUmoja wa UlayaEZUfin" + - "iFijiVisiwa vya FalklandMicronesiaVisiwa vya FaroeUfaransaGabonUingereza" + - "GrenadaJojiaGuiana ya UfaransaGuernseyGhanaGibraltarGreenlandGambiaGineG" + - "uadeloupeGuinea ya IkwetaUgirikiGeorgia Kusini na Visiwa vya Sandwich Ku" + - "siniGuatemalaGuamGinebisauGuyanaHong Kong SAR ChinaKisiwa cha Heard na V" + - "isiwa vya McDonaldHondurasCroatiaHaitiHungariaVisiwa vya KanariIndonesia" + - "AyalandiIsraeliIsle of ManIndiaEneo la Uingereza katika Bahari HindiIrak" + - "iIranAislandiItaliaJerseyJamaikaJordanJapaniKenyaKirigizistaniKambodiaKi" + - "ribatiKomoroSt. Kitts na NevisKorea KaskaziniKorea KusiniKuwaitVisiwa vy" + - "a CaymanKazakistaniLaosLebanonSt. LuciaLiechtensteinSri LankaLiberiaLeso" + - "toLithuaniaLuxembourgLatviaLibyaMoroccoMonacoMoldovaMontenegroSt. Martin" + - "MadagaskaVisiwa vya MarshallMacedoniaMaliMyanmar (Burma)MongoliaMacau SA" + - "R ChinaVisiwa vya Mariana vya KaskaziniMartiniqueMoritaniaMontserratMalt" + - "aMorisiMaldivesMalawiMeksikoMalesiaMsumbijiNamibiaNew CaledoniaNigerKisi" + - "wa cha NorfolkNigeriaNikaragwaUholanziNorwayNepalNauruNiueNyuzilandiOman" + - "PanamaPeruPolynesia ya UfaransaPapua New GuineaUfilipinoPakistaniPolandS" + - "antapierre na MiquelonVisiwa vya PitcairnPuerto RicoMaeneo ya PalestinaU" + - "renoPalauParaguayQatarOceania ya NjeReunionRomaniaSerbiaUrusiRwandaSaudi" + - "aVisiwa vya SolomonUshelisheliSudanUswidiSingaporeSt. HelenaSloveniaSval" + - "bard na Jan MayenSlovakiaSiera LeoniSan MarinoSenegaliSomaliaSurinameSud" + - "an KusiniSão Tomé na PríncipeEl SalvadorSint MaartenSyriaUswaziTristan d" + - "a CunhaVisiwa vya Turks na CaicosChadMaeneo ya Kusini ya UfaransaTogoTai" + - "landiTajikistaniTokelauTimor-LesteTurkmenistanTunisiaTongaUturukiTrinida" + - "d na TobagoTuvaluTaiwanTanzaniaUkraineUgandaVisiwa Vidogo vya Nje vya Ma" + - "rekaniUmoja wa MataifaMarekaniUruguayUzibekistaniMji wa VaticanSt. Vince" + - "nt na GrenadinesVenezuelaVisiwa vya Virgin, UingerezaVisiwa vya Virgin, " + - "MarekaniVietnamVanuatuWallis na FutunaSamoaKosovoYemeniMayotteAfrika Kus" + - "iniZambiaZimbabweEneo lisilojulikanaDuniaAfrikaAmerika KaskaziniAmerika " + - "KusiniOceaniaAfrika ya MagharibiAmerika ya KatiAfrika ya MasharikiAfrika" + - " ya KaskaziniAfrika ya KatiAfrika ya KusiniAmerikaAmerika ya KaskaziniKa" + - "ribianiAsia ya MasharikiAsia ya KusiniAsia ya Kusini MasharikiUlaya ya K" + - "usiniAustralasiaMelanesiaEneo la MikronesiaPolynesiaAsiaAsia ya KatiAsia" + - " ya MagharibiUlayaUlaya ya MasharikiUlaya ya KaskaziniUlaya ya Magharibi" + - "Amerika ya Kilatini" - -var swRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0014, 0x001b, 0x002b, 0x0036, 0x0048, 0x0050, 0x0057, - 0x005e, 0x0064, 0x006d, 0x0075, 0x0086, 0x008d, 0x0096, 0x009b, - 0x00ab, 0x00b5, 0x00c9, 0x00d1, 0x00dc, 0x00e4, 0x00ee, 0x00f6, - 0x00fe, 0x0105, 0x010a, 0x0118, 0x011f, 0x0125, 0x012c, 0x0141, - 0x0147, 0x014d, 0x0153, 0x0164, 0x016c, 0x0173, 0x0179, 0x017f, - 0x0199, 0x01b9, 0x01d2, 0x01e5, 0x01eb, 0x01fa, 0x0209, 0x020e, - 0x0216, 0x021c, 0x0224, 0x0239, 0x0242, 0x0246, 0x0250, 0x0257, - 0x026a, 0x0270, 0x0277, 0x0280, 0x028c, 0x0292, 0x0299, 0x02a1, - // Entry 40 - 7F - 0x02b4, 0x02bb, 0x02cb, 0x02d2, 0x02d9, 0x02de, 0x02ee, 0x02f5, - 0x02fe, 0x0306, 0x0314, 0x0316, 0x031b, 0x031f, 0x0332, 0x033c, - 0x034c, 0x0354, 0x0359, 0x0362, 0x0369, 0x036e, 0x0380, 0x0388, - 0x038d, 0x0396, 0x039f, 0x03a5, 0x03a9, 0x03b3, 0x03c3, 0x03ca, - 0x03f6, 0x03ff, 0x0403, 0x040c, 0x0412, 0x0425, 0x044c, 0x0454, - 0x045b, 0x0460, 0x0468, 0x0479, 0x0482, 0x048a, 0x0491, 0x049c, - 0x04a1, 0x04c6, 0x04cb, 0x04cf, 0x04d7, 0x04dd, 0x04e3, 0x04ea, - 0x04f0, 0x04f6, 0x04fb, 0x0508, 0x0510, 0x0518, 0x051e, 0x0530, - // Entry 80 - BF - 0x053f, 0x054b, 0x0551, 0x0562, 0x056d, 0x0571, 0x0578, 0x0581, - 0x058e, 0x0597, 0x059e, 0x05a4, 0x05ad, 0x05b7, 0x05bd, 0x05c2, - 0x05c9, 0x05cf, 0x05d6, 0x05e0, 0x05ea, 0x05f3, 0x0606, 0x060f, - 0x0613, 0x0622, 0x062a, 0x0639, 0x0659, 0x0663, 0x066c, 0x0676, - 0x067b, 0x0681, 0x0689, 0x068f, 0x0696, 0x069d, 0x06a5, 0x06ac, - 0x06b9, 0x06be, 0x06d0, 0x06d7, 0x06e0, 0x06e8, 0x06ee, 0x06f3, - 0x06f8, 0x06fc, 0x0706, 0x070a, 0x0710, 0x0714, 0x0729, 0x0739, - 0x0742, 0x074b, 0x0751, 0x0768, 0x077b, 0x0786, 0x0799, 0x079e, - // Entry C0 - FF - 0x07a3, 0x07ab, 0x07b0, 0x07be, 0x07c5, 0x07cc, 0x07d2, 0x07d7, - 0x07dd, 0x07e3, 0x07f5, 0x0800, 0x0805, 0x080b, 0x0814, 0x081e, - 0x0826, 0x083b, 0x0843, 0x084e, 0x0858, 0x0860, 0x0867, 0x086f, - 0x087b, 0x0892, 0x089d, 0x08a9, 0x08ae, 0x08b4, 0x08c4, 0x08de, - 0x08e2, 0x08fe, 0x0902, 0x090a, 0x0915, 0x091c, 0x0927, 0x0933, - 0x093a, 0x093f, 0x0946, 0x0958, 0x095e, 0x0964, 0x096c, 0x0973, - 0x0979, 0x099b, 0x09ab, 0x09b3, 0x09ba, 0x09c6, 0x09d4, 0x09ed, - 0x09f6, 0x0a12, 0x0a2d, 0x0a34, 0x0a3b, 0x0a4b, 0x0a50, 0x0a56, - // Entry 100 - 13F - 0x0a5c, 0x0a63, 0x0a70, 0x0a76, 0x0a7e, 0x0a91, 0x0a96, 0x0a9c, - 0x0aad, 0x0abb, 0x0ac2, 0x0ad5, 0x0ae4, 0x0af7, 0x0b0a, 0x0b18, - 0x0b28, 0x0b2f, 0x0b43, 0x0b4c, 0x0b5d, 0x0b6b, 0x0b83, 0x0b92, - 0x0b9d, 0x0ba6, 0x0bb8, 0x0bc1, 0x0bc5, 0x0bd1, 0x0be2, 0x0be7, - 0x0bf9, 0x0c0b, 0x0c1d, 0x0c1d, 0x0c30, -} // Size: 610 bytes - -const taRegionStr string = "" + // Size: 9569 bytes - "அஷன்ஷியன் தீவுஅன்டோராஐக்கிய அரபு எமிரேட்ஸ்ஆப்கானிஸ்தான்ஆண்டிகுவா மற்றும்" + - " பார்புடாஅங்குய்லாஅல்பேனியாஅர்மேனியாஅங்கோலாஅண்டார்டிகாஅர்ஜென்டினாஅமெரிக்" + - "க சமோவாஆஸ்திரியாஆஸ்திரேலியாஅரூபாஆலந்து தீவுகள்அசர்பைஜான்போஸ்னியா & ஹெர" + - "்ஸகோவினாபார்படோஸ்பங்களாதேஷ்பெல்ஜியம்புர்கினா ஃபாஸோபல்கேரியாபஹ்ரைன்புரு" + - "ண்டிபெனின்செயின்ட் பார்தேலெமிபெர்முடாபுருனேபொலிவியாகரீபியன் நெதர்லாந்த" + - "ுபிரேசில்பஹாமாஸ்பூடான்பொவேட் தீவுகள்போட்ஸ்வானாபெலாரூஸ்பெலிஸ்கனடாகோகோஸ்" + - " (கீலிங்) தீவுகள்காங்கோ - கின்ஷாசாமத்திய ஆப்ரிக்கக் குடியரசுகாங்கோ - ப்ர" + - "ாஸாவில்லேஸ்விட்சர்லாந்துகோட் தி’வாயர்குக் தீவுகள்சிலிகேமரூன்சீனாகொலம்ப" + - "ியாகிலிப்பர்டன் தீவுகோஸ்டாரிகாகியூபாகேப் வெர்டேகுராகவ்கிறிஸ்துமஸ் தீவு" + - "சைப்ரஸ்செசியாஜெர்மனிடியகோ கார்ஷியாஜிபௌட்டிடென்மார்க்டொமினிகாடொமினிகன் " + - "குடியரசுஅல்ஜீரியாசியூடா & மெலில்லாஈக்வடார்எஸ்டோனியாஎகிப்துமேற்கு சஹாரா" + - "எரிட்ரியாஸ்பெயின்எத்தியோப்பியாஐரோப்பிய யூனியன்யூரோஜோன்பின்லாந்துஃபிஜிஃ" + - "பாக்லாந்து தீவுகள்மைக்ரோனேஷியாஃபாரோ தீவுகள்பிரான்ஸ்கேபான்யுனைடெட் கிங்" + - "டம்கிரனெடாஜார்ஜியாபிரெஞ்சு கயானாகெர்ன்சிகானாஜிப்ரால்டர்கிரீன்லாந்துகாம" + - "்பியாகினியாக்வாதேலோப்ஈக்வடோரியல் கினியாகிரீஸ்தெற்கு ஜார்ஜியா மற்றும் த" + - "ெற்கு சாண்ட்விச் தீவுகள்கவுதமாலாகுவாம்கினியா-பிஸ்ஸாவ்கயானாஹாங்காங் எஸ்" + - "ஏஆர் சீனாஹேர்ட் மற்றும் மெக்டொனால்டு தீவுகள்ஹோண்டூராஸ்குரேஷியாஹைட்டிஹங" + - "்கேரிகேனரி தீவுகள்இந்தோனேசியாஅயர்லாந்துஇஸ்ரேல்ஐல் ஆஃப் மேன்இந்தியாபிரி" + - "ட்டிஷ் இந்தியப் பெருங்கடல் பிரதேசம்ஈராக்ஈரான்ஐஸ்லாந்துஇத்தாலிஜெர்சிஜமை" + - "காஜோர்டான்ஜப்பான்கென்யாகிர்கிஸ்தான்கம்போடியாகிரிபாட்டிகோமரோஸ்செயின்ட் " + - "கிட்ஸ் & நெவிஸ்வட கொரியாதென் கொரியாகுவைத்கெய்மென் தீவுகள்கஸகஸ்தான்லாவோ" + - "ஸ்லெபனான்செயின்ட் லூசியாலிச்செண்ஸ்டெய்ன்இலங்கைலைபீரியாலெசோதோலிதுவேனியா" + - "லக்ஸ்சம்பர்க்லாட்வியாலிபியாமொராக்கோமொனாக்கோமால்டோவாமான்டேனெக்ரோசெயின்ட" + - "் மார்ட்டீன்மடகாஸ்கர்மார்ஷல் தீவுகள்மாசிடோனியாமாலிமியான்மார் (பர்மா)மங" + - "்கோலியாமகாவ் எஸ்ஏஆர் சீனாவடக்கு மரியானா தீவுகள்மார்டினிக்மௌரிடானியாமாண" + - "்ட்செராட்மால்டாமொரிசியஸ்மாலத்தீவுமலாவிமெக்சிகோமலேசியாமொசாம்பிக்நமீபியா" + - "நியூ கேலிடோனியாநைஜர்நார்ஃபோக் தீவுகள்நைஜீரியாநிகரகுவாநெதர்லாந்துநார்வே" + - "நேபாளம்நௌருநியூநியூசிலாந்துஓமன்பனாமாபெருபிரெஞ்சு பாலினேஷியாபப்புவா நிய" + - "ூ கினியாபிலிப்பைன்ஸ்பாகிஸ்தான்போலந்துசெயின்ட் பியர் & மிக்வேலான்பிட்கெ" + - "ய்ர்ன் தீவுகள்பியூர்டோ ரிகோபாலஸ்தீனிய பிரதேசங்கள்போர்ச்சுக்கல்பாலோபராக" + - "ுவேகத்தார்வெளிப்புற ஓஷியானியாரீயூனியன்ருமேனியாசெர்பியாரஷ்யாருவாண்டாசவூ" + - "தி அரேபியாசாலமன் தீவுகள்சீஷெல்ஸ்சூடான்ஸ்வீடன்சிங்கப்பூர்செயின்ட் ஹெலென" + - "ாஸ்லோவேனியாஸ்வல்பார்டு & ஜான் மேயன்ஸ்லோவாகியாசியாரா லியோன்சான் மரினோசெ" + - "னெகல்சோமாலியாசுரினாம்தெற்கு சூடான்சாவ் தோம் & ப்ரின்சிபிஎல் சால்வடார்ச" + - "ின்ட் மார்டென்சிரியாஸ்வாஸிலாந்துடிரிஸ்டன் டா குன்ஹாடர்க்ஸ் & கைகோஸ் தீ" + - "வுகள்சாட்பிரெஞ்சு தெற்கு பிரதேசங்கள்டோகோதாய்லாந்துதஜிகிஸ்தான்டோகேலோதைம" + - "ூர்-லெஸ்தேதுர்க்மெனிஸ்தான்டுனிசியாடோங்காதுருக்கிடிரினிடாட் & டொபாகோதுவ" + - "ாலூதைவான்தான்சானியாஉக்ரைன்உகாண்டாயூ.எஸ். வெளிப்புறத் தீவுகள்ஐக்கிய நாட" + - "ுகள்அமெரிக்காஉருகுவேஉஸ்பெகிஸ்தான்வாடிகன் நகரம்செயின்ட் வின்சென்ட் & கி" + - "ரெனடைன்ஸ்வெனிசுலாபிரிட்டீஷ் கன்னித் தீவுகள்யூ.எஸ். கன்னித் தீவுகள்வியட" + - "்நாம்வனுவாட்டுவாலிஸ் மற்றும் ஃபுடுனாசமோவாகொசோவோஏமன்மயோட்தென் ஆப்பிரிக்" + - "காஜாம்பியாஜிம்பாப்வேஅறியப்படாத பிரதேசம்உலகம்ஆப்ரிக்காவட அமெரிக்காதென் " + - "அமெரிக்காஓஷியானியாமேற்கு ஆப்ரிக்காமத்திய அமெரிக்காகிழக்கு ஆப்ரிக்காவடக" + - "்கு ஆப்ரிக்காமத்திய ஆப்ரிக்காதெற்கு ஆப்ரிக்காஅமெரிக்காஸ்வடக்கு அமெரிக்" + - "காகரீபியன்கிழக்காசியாதெற்காசியாதென்கிழக்காசியாதெற்கு ஐரோப்பாஆஸ்திரலேசி" + - "யாமெலனேஷியாமைக்ரோ நேஷியா பிரதேசம்பாலினேஷியாஆசியாமத்திய ஆசியாமேற்காசியா" + - "ஐரோப்பாகிழக்கு ஐரோப்பாவடக்கு ஐரோப்பாமேற்கு ஐரோப்பாலத்தீன் அமெரிக்கா" - -var taRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0028, 0x003d, 0x0078, 0x009f, 0x00e9, 0x0104, 0x011f, - 0x013a, 0x014f, 0x0170, 0x0191, 0x01b9, 0x01d4, 0x01f5, 0x0204, - 0x022c, 0x024a, 0x0286, 0x02a1, 0x02bf, 0x02da, 0x0302, 0x031d, - 0x0332, 0x034a, 0x035c, 0x0393, 0x03ab, 0x03bd, 0x03d5, 0x040f, - 0x0427, 0x043c, 0x044e, 0x0476, 0x0494, 0x04ac, 0x04be, 0x04ca, - 0x0507, 0x0534, 0x057e, 0x05b7, 0x05e4, 0x0609, 0x062b, 0x0637, - 0x064c, 0x0658, 0x0673, 0x06a4, 0x06c2, 0x06d4, 0x06f3, 0x0708, - 0x0736, 0x074b, 0x075d, 0x0772, 0x079a, 0x07b2, 0x07d0, 0x07e8, - // Entry 40 - 7F - 0x081c, 0x0837, 0x0864, 0x087c, 0x0897, 0x08ac, 0x08ce, 0x08e9, - 0x0901, 0x0928, 0x0956, 0x096e, 0x098c, 0x099b, 0x09d2, 0x09f6, - 0x0a1b, 0x0a33, 0x0a45, 0x0a73, 0x0a88, 0x0aa0, 0x0ac8, 0x0ae0, - 0x0aec, 0x0b0d, 0x0b31, 0x0b49, 0x0b5b, 0x0b79, 0x0bad, 0x0bbf, - 0x0c48, 0x0c60, 0x0c72, 0x0c9d, 0x0cac, 0x0ce7, 0x0d4a, 0x0d68, - 0x0d80, 0x0d92, 0x0da7, 0x0dcc, 0x0ded, 0x0e0b, 0x0e20, 0x0e43, - 0x0e58, 0x0ec7, 0x0ed6, 0x0ee5, 0x0f00, 0x0f15, 0x0f27, 0x0f36, - 0x0f4e, 0x0f63, 0x0f75, 0x0f99, 0x0fb4, 0x0fd2, 0x0fe7, 0x1027, - // Entry 80 - BF - 0x1040, 0x105f, 0x1071, 0x109f, 0x10ba, 0x10cc, 0x10e1, 0x110c, - 0x113c, 0x114e, 0x1166, 0x1178, 0x1196, 0x11bd, 0x11d5, 0x11e7, - 0x11ff, 0x1217, 0x122f, 0x1253, 0x128a, 0x12a5, 0x12d0, 0x12ee, - 0x12fa, 0x132a, 0x1345, 0x1377, 0x13b5, 0x13d3, 0x13f1, 0x1415, - 0x1427, 0x1442, 0x145d, 0x146c, 0x1484, 0x1499, 0x14b7, 0x14cc, - 0x14f7, 0x1506, 0x1537, 0x154f, 0x1567, 0x1588, 0x159a, 0x15af, - 0x15bb, 0x15c7, 0x15eb, 0x15f7, 0x1606, 0x1612, 0x1649, 0x167e, - 0x16a2, 0x16c0, 0x16d5, 0x171e, 0x1758, 0x177d, 0x17bd, 0x17e4, - // Entry C0 - FF - 0x17f0, 0x1805, 0x181a, 0x1851, 0x186c, 0x1884, 0x189c, 0x18ab, - 0x18c3, 0x18e8, 0x1910, 0x1928, 0x193a, 0x194f, 0x1970, 0x199b, - 0x19b9, 0x19f9, 0x1a17, 0x1a3c, 0x1a58, 0x1a6d, 0x1a85, 0x1a9d, - 0x1ac2, 0x1afc, 0x1b21, 0x1b4c, 0x1b5e, 0x1b82, 0x1bb7, 0x1bf7, - 0x1c03, 0x1c50, 0x1c5c, 0x1c7a, 0x1c9b, 0x1cad, 0x1cd2, 0x1d02, - 0x1d1a, 0x1d2c, 0x1d44, 0x1d77, 0x1d89, 0x1d9b, 0x1db9, 0x1dce, - 0x1de3, 0x1e2c, 0x1e54, 0x1e6f, 0x1e84, 0x1eab, 0x1ed0, 0x1f2b, - 0x1f43, 0x1f8d, 0x1fca, 0x1fe5, 0x2000, 0x203e, 0x204d, 0x205f, - // Entry 100 - 13F - 0x206b, 0x207a, 0x20a8, 0x20c0, 0x20de, 0x2115, 0x2124, 0x213f, - 0x2161, 0x2189, 0x21a4, 0x21d2, 0x2200, 0x2231, 0x225f, 0x228d, - 0x22bb, 0x22dc, 0x230a, 0x2322, 0x2343, 0x2361, 0x238e, 0x23b6, - 0x23da, 0x23f5, 0x2433, 0x2451, 0x2460, 0x2482, 0x24a0, 0x24b5, - 0x24e0, 0x2508, 0x2530, 0x2530, 0x2561, -} // Size: 610 bytes - -const teRegionStr string = "" + // Size: 9303 bytes - "అసెన్షన్ దీవిఆండోరాయునైటెడ్ అరబ్ ఎమిరేట్స్ఆఫ్ఘనిస్తాన్ఆంటిగ్వా మరియు బార" + - "్బుడాఆంగ్విల్లాఅల్బేనియాఆర్మేనియాఅంగోలాఅంటార్కిటికాఅర్జెంటీనాఅమెరికన్ " + - "సమోవాఆస్ట్రియాఆస్ట్రేలియాఅరుబాఆలాండ్ దీవులుఅజర్బైజాన్బోస్నియా మరియు హె" + - "ర్జెగొవీనాబార్బడోస్బంగ్లాదేశ్బెల్జియంబుర్కినా ఫాసోబల్గేరియాబహ్రెయిన్బు" + - "రుండిబెనిన్సెయింట్ బర్తేలెమీబెర్ముడాబ్రూనేబొలీవియాకరీబియన్ నెదర్లాండ్స" + - "్బ్రెజిల్బహామాస్భూటాన్బొవెట్ దీవిబోట్స్వానాబెలారస్బెలిజ్కెనడాకోకోస్ (క" + - "ీలింగ్) దీవులుకాంగో- కిన్షాసాసెంట్రల్ ఆఫ్రికన్ రిపబ్లిక్కాంగో- బ్రాజావ" + - "ిల్లిస్విట్జర్లాండ్కోట్ డి ఐవోర్కుక్ దీవులుచిలీకామెరూన్చైనాకొలంబియాక్ల" + - "ిప్పర్టన్ దీవికోస్టా రికాక్యూబాకేప్ వెర్డెకురాకవోక్రిస్మస్ దీవిసైప్రస్" + - "చెకియాజర్మనీడియాగో గార్సియాజిబౌటిడెన్మార్క్డొమినికాడొమినికన్ రిపబ్లిక్" + - "అల్జీరియాస్యూటా & మెలిల్లాఈక్వడార్ఎస్టోనియాఈజిప్ట్పడమటి సహారాఎరిట్రియా" + - "స్పెయిన్ఇథియోపియాయూరోపియన్ యూనియన్యూరోజోన్ఫిన్లాండ్ఫిజీఫాక్\u200cల్యాం" + - "డ్ దీవులుమైక్రోనేషియాఫారో దీవులుఫ్రాన్స్\u200cగాబన్యునైటెడ్ కింగ్" + - "\u200cడమ్గ్రెనడాజార్జియాఫ్రెంచ్ గియానాగర్న్\u200cసీఘనాజిబ్రాల్టర్గ్రీన్" + - "\u200cల్యాండ్గాంబియాగినియాగ్వాడెలోప్ఈక్వటోరియల్ గినియాగ్రీస్దక్షిణ జార్జ" + - "ియా & దక్షిణ శాండ్విచ్ దీవులుగ్వాటిమాలాగ్వామ్గినియా-బిస్సావ్గయానాహాంకా" + - "ంగ్ ఎస్ఏఆర్ చైనాహెర్డ్ & మెక్ డొనాల్డ్ దీవులుహోండురాస్క్రోయేషియాహైటిహం" + - "గేరీకేనరీ దీవులుఇండోనేషియాఐర్లాండ్ఇజ్రాయిల్ఐల్ ఆఫ్ మాన్భారతదేశంబ్రిటీష" + - "్ హిందూ మహాసముద్ర ప్రాంతంఇరాక్ఇరాన్ఐస్లాండ్ఇటలీజెర్సీజమైకాజోర్డాన్జపాన" + - "్కెన్యాకిర్గిజిస్తాన్కంబోడియాకిరిబాటికొమొరోస్సెయింట్ కిట్స్ మరియు నెవి" + - "స్ఉత్తర కొరియాదక్షిణ కొరియాకువైట్కేమాన్ దీవులుకజకిస్తాన్లావోస్లెబనాన్స" + - "ెయింట్ లూసియాలిక్టెన్\u200cస్టెయిన్శ్రీలంకలైబీరియాలెసోతోలిథువేనియాలక్స" + - "ంబర్గ్లాత్వియాలిబియామొరాకోమొనాకోమోల్డోవామోంటెనీగ్రోసెయింట్ మార్టిన్మడగ" + - "ాస్కర్మార్షల్ దీవులుమేసిడోనియామాలిమయన్మార్ (బర్మా)మంగోలియామకావ్ ఎస్ఏఆర" + - "్ చైనాఉత్తర మరియానా దీవులుమార్టినీక్మౌరిటేనియామాంట్సెరాట్మాల్టామారిషస్" + - "మాల్దీవులుమాలావిమెక్సికోమలేషియామొజాంబిక్నమీబియాక్రొత్త కాలెడోనియానైజర్" + - "నార్ఫోక్ దీవినైజీరియానికరాగువానెదర్లాండ్స్నార్వేనేపాల్నౌరునియూన్యూజిలా" + - "ండ్ఒమన్పనామాపెరూఫ్రెంచ్ పోలినీషియాపాపువా న్యూ గినియాఫిలిప్పైన్స్పాకిస్" + - "తాన్పోలాండ్సెయింట్ పియెర్ మరియు మికెలాన్పిట్\u200cకెయిర్న్ దీవులుప్యూర" + - "్టో రికోపాలస్తీనియన్ ప్రాంతాలుపోర్చుగల్పాలావ్పరాగ్వేఖతార్ఒషీనియా బయటున" + - "్నవిరియూనియన్రోమానియాసెర్బియారష్యారువాండాసౌదీ అరేబియాసోలమన్ దీవులుసీషె" + - "ల్స్సూడాన్స్వీడన్సింగపూర్సెయింట్ హెలెనాస్లోవేనియాస్వాల్\u200cబార్డ్ & " + - "జాన్ మాయెన్స్లోవేకియాసియెర్రా లియాన్శాన్ మారినోసెనెగల్సోమాలియాసూరినామ్" + - "దక్షిణ సూడాన్సావోటోమ్ & ప్రిన్సిపేఎల్ సాల్వడోర్సింట్ మార్టెన్సిరియాస్వ" + - "ాజిల్యాండ్ట్రిస్టన్ డ కన్హాటర్క్స్ & కైకోస్ దీవులుచాద్ఫ్రెంచ్ దక్షిణ ప" + - "్రాంతాలుటోగోథాయిలాండ్తజికిస్తాన్టోకెలావ్టిమోర్-లెస్టెటర్క్\u200cమెనిస్" + - "తాన్ట్యునీషియాటాంగాటర్కీట్రినిడాడ్ మరియు టొబాగోటువాలుతైవాన్టాంజానియాఉక" + - "్రెయిన్ఉగాండాసంయుక్త రాజ్య అమెరికా బయట ఉన్న దీవులుయునైటెడ్ నేషన్స్యునై" + - "టెడ్ స్టేట్స్ఉరుగ్వేఉజ్బెకిస్తాన్వాటికన్ నగరంసెయింట్ విన్సెంట్ & గ్రెన" + - "డీన్స్వెనిజులాబ్రిటిష్ వర్జిన్ దీవులుయు.ఎస్. వర్జిన్ దీవులువియత్నాంవనా" + - "టువాలిస్ & ఫ్యుత్యునాసమోవాకొసోవోయెమెన్మాయొట్దక్షిణ ఆఫ్రికాజాంబియాజింబా" + - "బ్వేతెలియని ప్రాంతంప్రపంచంఆఫ్రికాఉత్తర అమెరికాదక్షిణ అమెరికాఓషినియాపశ్" + - "చిమ ఆఫ్రికా భూభాగంమధ్యమ అమెరికాతూర్పు ఆఫ్రికాఉత్తర ఆఫ్రికామధ్యమ ఆఫ్రిక" + - "ాదక్షిణ ఆఫ్రికా భూభాగంఅమెరికాస్ఉత్తర అమెరికా భూభాగంకరిబ్బియన్తూర్పు ఆస" + - "ియాదక్షిణ ఆసియానైరుతి ఆసియాదక్షిణ యూరోప్ఆస్ట్రేలేసియామెలనేశియమైక్రోనేశ" + - "ియ ప్రాంతంపాలినేషియాఆసియామధ్య ఆసియాపడమటి ఆసియాయూరోప్తూర్పు యూరోప్ఉత్తర" + - " యూరోప్పశ్చిమ యూరోప్లాటిన్ అమెరికా" - -var teRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0025, 0x0037, 0x0078, 0x009c, 0x00dd, 0x00fb, 0x0116, - 0x0131, 0x0143, 0x0167, 0x0185, 0x01ad, 0x01c8, 0x01e9, 0x01f8, - 0x021d, 0x023b, 0x0288, 0x02a3, 0x02c1, 0x02d9, 0x02fe, 0x0319, - 0x0334, 0x0349, 0x035b, 0x038c, 0x03a4, 0x03b6, 0x03ce, 0x040b, - 0x0423, 0x0438, 0x044a, 0x0469, 0x0487, 0x049c, 0x04ae, 0x04bd, - 0x04fa, 0x0523, 0x0570, 0x05a5, 0x05cf, 0x05f2, 0x0611, 0x061d, - 0x0635, 0x0641, 0x0659, 0x068a, 0x06a9, 0x06bb, 0x06da, 0x06ef, - 0x0717, 0x072c, 0x073e, 0x0750, 0x077b, 0x078d, 0x07ab, 0x07c3, - // Entry 40 - 7F - 0x07fa, 0x0815, 0x0842, 0x085a, 0x0875, 0x088a, 0x08a9, 0x08c4, - 0x08dc, 0x08f7, 0x0928, 0x0940, 0x095b, 0x0967, 0x099e, 0x09c2, - 0x09e1, 0x09fc, 0x0a0b, 0x0a3f, 0x0a54, 0x0a6c, 0x0a94, 0x0aac, - 0x0ab5, 0x0ad6, 0x0b00, 0x0b15, 0x0b27, 0x0b45, 0x0b79, 0x0b8b, - 0x0bfa, 0x0c18, 0x0c2a, 0x0c55, 0x0c64, 0x0c9f, 0x0cec, 0x0d07, - 0x0d25, 0x0d31, 0x0d43, 0x0d65, 0x0d83, 0x0d9b, 0x0db6, 0x0dd6, - 0x0dee, 0x0e48, 0x0e57, 0x0e66, 0x0e7e, 0x0e8a, 0x0e9c, 0x0eab, - 0x0ec3, 0x0ed2, 0x0ee4, 0x0f0e, 0x0f26, 0x0f3e, 0x0f56, 0x0fa1, - // Entry 80 - BF - 0x0fc3, 0x0fe8, 0x0ffa, 0x101f, 0x103d, 0x104f, 0x1064, 0x108c, - 0x10bf, 0x10d4, 0x10ec, 0x10fe, 0x111c, 0x113a, 0x1152, 0x1164, - 0x1176, 0x1188, 0x11a0, 0x11c1, 0x11ef, 0x120a, 0x1232, 0x1250, - 0x125c, 0x1286, 0x129e, 0x12d0, 0x1308, 0x1326, 0x1344, 0x1365, - 0x1377, 0x138c, 0x13aa, 0x13bc, 0x13d4, 0x13e9, 0x1404, 0x1419, - 0x144d, 0x145c, 0x1481, 0x1499, 0x14b4, 0x14d8, 0x14ea, 0x14fc, - 0x1508, 0x1514, 0x1535, 0x1541, 0x1550, 0x155c, 0x1590, 0x15c2, - 0x15e6, 0x1604, 0x1619, 0x166a, 0x16a4, 0x16c9, 0x1709, 0x1724, - // Entry C0 - FF - 0x1736, 0x174b, 0x175a, 0x178b, 0x17a6, 0x17be, 0x17d6, 0x17e5, - 0x17fa, 0x181c, 0x1841, 0x1859, 0x186b, 0x1880, 0x1898, 0x18c0, - 0x18de, 0x1927, 0x1945, 0x1970, 0x198f, 0x19a4, 0x19bc, 0x19d4, - 0x19f9, 0x1a32, 0x1a57, 0x1a7f, 0x1a91, 0x1ab8, 0x1ae7, 0x1b24, - 0x1b30, 0x1b74, 0x1b80, 0x1b9b, 0x1bbc, 0x1bd4, 0x1bf9, 0x1c29, - 0x1c47, 0x1c56, 0x1c65, 0x1ca6, 0x1cb8, 0x1cca, 0x1ce5, 0x1d00, - 0x1d12, 0x1d77, 0x1da5, 0x1dd6, 0x1deb, 0x1e12, 0x1e34, 0x1e89, - 0x1ea1, 0x1ee2, 0x1f1c, 0x1f34, 0x1f43, 0x1f76, 0x1f85, 0x1f97, - // Entry 100 - 13F - 0x1fa9, 0x1fbb, 0x1fe3, 0x1ff8, 0x2013, 0x203e, 0x2053, 0x2068, - 0x208d, 0x20b5, 0x20ca, 0x2105, 0x212a, 0x2152, 0x2177, 0x219c, - 0x21d7, 0x21f2, 0x222a, 0x2248, 0x226a, 0x228c, 0x22ae, 0x22d3, - 0x22fa, 0x2312, 0x2349, 0x2367, 0x2376, 0x2392, 0x23b1, 0x23c3, - 0x23e8, 0x240a, 0x242f, 0x242f, 0x2457, -} // Size: 610 bytes - -const thRegionStr string = "" + // Size: 9032 bytes - "เกาะแอสเซนชันอันดอร์ราสหรัฐอาหรับเอมิเรตส์อัฟกานิสถานแอนติกาและบาร์บูดาแ" + - "องกวิลลาแอลเบเนียอาร์เมเนียแองโกลาแอนตาร์กติกาอาร์เจนตินาอเมริกันซามัว" + - "ออสเตรียออสเตรเลียอารูบาหมู่เกาะโอลันด์อาเซอร์ไบจานบอสเนียและเฮอร์เซโก" + - "วีนาบาร์เบโดสบังกลาเทศเบลเยียมบูร์กินาฟาโซบัลแกเรียบาห์เรนบุรุนดีเบนิน" + - "เซนต์บาร์เธเลมีเบอร์มิวดาบรูไนโบลิเวียเนเธอร์แลนด์แคริบเบียนบราซิลบาฮา" + - "มาสภูฏานเกาะบูเวตบอตสวานาเบลารุสเบลีซแคนาดาหมู่เกาะโคโคส (คีลิง)คองโก " + - "- กินชาซาสาธารณรัฐแอฟริกากลางคองโก - บราซซาวิลสวิตเซอร์แลนด์โกตดิวัวร์หม" + - "ู่เกาะคุกชิลีแคเมอรูนจีนโคลอมเบียเกาะคลิปเปอร์ตันคอสตาริกาคิวบาเคปเวิร" + - "์ดคูราเซาเกาะคริสต์มาสไซปรัสเช็กเยอรมนีดิเอโกการ์เซียจิบูตีเดนมาร์กโดม" + - "ินิกาสาธารณรัฐโดมินิกันแอลจีเรียเซวตาและเมลียาเอกวาดอร์เอสโตเนียอียิปต" + - "์ซาฮาราตะวันตกเอริเทรียสเปนเอธิโอเปียสหภาพยุโรปยูโรโซนฟินแลนด์ฟิจิหมู่" + - "เกาะฟอล์กแลนด์ไมโครนีเซียหมู่เกาะแฟโรฝรั่งเศสกาบองสหราชอาณาจักรเกรเนดา" + - "จอร์เจียเฟรนช์เกียนาเกิร์นซีย์กานายิบรอลตาร์กรีนแลนด์แกมเบียกินีกวาเดอ" + - "ลูปอิเควทอเรียลกินีกรีซเกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิชกัวเตม" + - "าลากวมกินี-บิสเซากายอานาเขตปกครองพิเศษฮ่องกงแห่งสาธารณรัฐประชาชนจีนเกา" + - "ะเฮิร์ดและหมู่เกาะแมกดอนัลด์ฮอนดูรัสโครเอเชียเฮติฮังการีหมู่เกาะคานารี" + - "อินโดนีเซียไอร์แลนด์อิสราเอลเกาะแมนอินเดียบริติชอินเดียนโอเชียนเทร์ริท" + - "อรีอิรักอิหร่านไอซ์แลนด์อิตาลีเจอร์ซีย์จาเมกาจอร์แดนญี่ปุ่นเคนยาคีร์กี" + - "ซสถานกัมพูชาคิริบาสคอโมโรสเซนต์คิตส์และเนวิสเกาหลีเหนือเกาหลีใต้คูเวตห" + - "มู่เกาะเคย์แมนคาซัคสถานลาวเลบานอนเซนต์ลูเซียลิกเตนสไตน์ศรีลังกาไลบีเรี" + - "ยเลโซโทลิทัวเนียลักเซมเบิร์กลัตเวียลิเบียโมร็อกโกโมนาโกมอลโดวามอนเตเนโ" + - "กรเซนต์มาร์ตินมาดากัสการ์หมู่เกาะมาร์แชลล์มาซิโดเนียมาลีเมียนมาร์ (พม่" + - "า)มองโกเลียเขตปกครองพิเศษมาเก๊าแห่งสาธารณรัฐประชาชนจีนหมู่เกาะนอร์เทิร" + - "์นมาเรียนามาร์ตินีกมอริเตเนียมอนต์เซอร์รัตมอลตามอริเชียสมัลดีฟส์มาลาวี" + - "เม็กซิโกมาเลเซียโมซัมบิกนามิเบียนิวแคลิโดเนียไนเจอร์เกาะนอร์ฟอล์กไนจีเ" + - "รียนิการากัวเนเธอร์แลนด์นอร์เวย์เนปาลนาอูรูนีอูเอนิวซีแลนด์โอมานปานามา" + - "เปรูเฟรนช์โปลินีเซียปาปัวนิวกินีฟิลิปปินส์ปากีสถานโปแลนด์แซงปีแยร์และม" + - "ีเกอลงหมู่เกาะพิตแคร์นเปอร์โตริโกดินแดนปาเลสไตน์โปรตุเกสปาเลาปารากวัยก" + - "าตาร์เอาต์ไลอิงโอเชียเนียเรอูนียงโรมาเนียเซอร์เบียรัสเซียรวันดาซาอุดีอ" + - "าระเบียหมู่เกาะโซโลมอนเซเชลส์ซูดานสวีเดนสิงคโปร์เซนต์เฮเลนาสโลวีเนียสฟ" + - "าลบาร์และยานไมเอนสโลวะเกียเซียร์ราลีโอนซานมาริโนเซเนกัลโซมาเลียซูรินาเ" + - "มซูดานใต้เซาตูเมและปรินซิปีเอลซัลวาดอร์ซินต์มาร์เทนซีเรียสวาซิแลนด์ทริ" + - "สตันดาคูนาหมู่เกาะเติกส์และหมู่เกาะเคคอสชาดเฟรนช์เซาเทิร์นเทร์ริทอรีส์" + - "โตโกไทยทาจิกิสถานโตเกเลาติมอร์-เลสเตเติร์กเมนิสถานตูนิเซียตองกาตุรกีตร" + - "ินิแดดและโตเบโกตูวาลูไต้หวันแทนซาเนียยูเครนยูกันดาหมู่เกาะรอบนอกของสหร" + - "ัฐอเมริกาสหประชาชาติสหรัฐอเมริกาอุรุกวัยอุซเบกิสถานนครวาติกันเซนต์วินเ" + - "ซนต์และเกรนาดีนส์เวเนซุเอลาหมู่เกาะบริติชเวอร์จินหมู่เกาะยูเอสเวอร์จิน" + - "เวียดนามวานูอาตูวาลลิสและฟุตูนาซามัวโคโซโวเยเมนมายอตแอฟริกาใต้แซมเบียซ" + - "ิมบับเวภูมิภาคที่ไม่รู้จักโลกแอฟริกาอเมริกาเหนืออเมริกาใต้โอเชียเนียแอ" + - "ฟริกาตะวันตกอเมริกากลางแอฟริกาตะวันออกแอฟริกาเหนือแอฟริกากลางแอฟริกาตอ" + - "นใต้อเมริกาอเมริกาตอนเหนือแคริบเบียนเอเชียตะวันออกเอเชียใต้เอเชียตะวัน" + - "ออกเฉียงใต้ยุโรปใต้ออสตราเลเซียเมลานีเซียเขตไมโครนีเซียโปลินีเซียเอเชี" + - "ยเอเชียกลางเอเชียตะวันตกยุโรปยุโรปตะวันออกยุโรปเหนือยุโรปตะวันตกละตินอ" + - "เมริกา" - -var thRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0027, 0x0042, 0x007e, 0x009f, 0x00d5, 0x00f0, 0x010b, - 0x0129, 0x013e, 0x0162, 0x0183, 0x01aa, 0x01c2, 0x01e0, 0x01f2, - 0x021f, 0x0243, 0x0288, 0x02a3, 0x02be, 0x02d6, 0x02fa, 0x0315, - 0x032a, 0x033f, 0x034e, 0x037b, 0x0399, 0x03a8, 0x03c0, 0x0402, - 0x0414, 0x0429, 0x0438, 0x0453, 0x046b, 0x0480, 0x048f, 0x04a1, - 0x04da, 0x0501, 0x053d, 0x056a, 0x0594, 0x05b2, 0x05d3, 0x05df, - 0x05f7, 0x0600, 0x061b, 0x064b, 0x0666, 0x0675, 0x0690, 0x06a5, - 0x06cc, 0x06de, 0x06ea, 0x06ff, 0x0729, 0x073b, 0x0753, 0x076b, - // Entry 40 - 7F - 0x07a1, 0x07bc, 0x07e6, 0x0801, 0x081c, 0x0831, 0x0858, 0x0873, - 0x087f, 0x089d, 0x08bb, 0x08d0, 0x08e8, 0x08f4, 0x092a, 0x094b, - 0x096f, 0x0987, 0x0996, 0x09bd, 0x09d2, 0x09ea, 0x0a0e, 0x0a2c, - 0x0a38, 0x0a56, 0x0a71, 0x0a86, 0x0a92, 0x0aad, 0x0add, 0x0ae9, - 0x0b64, 0x0b7f, 0x0b88, 0x0ba7, 0x0bbc, 0x0c3d, 0x0c9a, 0x0cb2, - 0x0ccd, 0x0cd9, 0x0cee, 0x0d18, 0x0d39, 0x0d54, 0x0d6c, 0x0d81, - 0x0d96, 0x0df3, 0x0e02, 0x0e17, 0x0e32, 0x0e44, 0x0e5f, 0x0e71, - 0x0e86, 0x0e9b, 0x0eaa, 0x0ecb, 0x0ee0, 0x0ef5, 0x0f0a, 0x0f40, - // Entry 80 - BF - 0x0f61, 0x0f7c, 0x0f8b, 0x0fb8, 0x0fd3, 0x0fdc, 0x0ff1, 0x1012, - 0x1033, 0x104b, 0x1063, 0x1075, 0x1090, 0x10b4, 0x10c9, 0x10db, - 0x10f3, 0x1105, 0x111a, 0x1138, 0x115c, 0x117d, 0x11b0, 0x11ce, - 0x11da, 0x1204, 0x121f, 0x12a0, 0x12ee, 0x1309, 0x1327, 0x134e, - 0x135d, 0x1378, 0x1390, 0x13a2, 0x13ba, 0x13d2, 0x13ea, 0x1402, - 0x1429, 0x143e, 0x1465, 0x147d, 0x1498, 0x14bc, 0x14d4, 0x14e3, - 0x14f5, 0x1507, 0x1525, 0x1534, 0x1546, 0x1552, 0x1582, 0x15a6, - 0x15c4, 0x15dc, 0x15f1, 0x162a, 0x165a, 0x167b, 0x16a8, 0x16c0, - // Entry C0 - FF - 0x16cf, 0x16e7, 0x16f9, 0x1735, 0x174d, 0x1765, 0x1780, 0x1795, - 0x17a7, 0x17d1, 0x17fe, 0x1813, 0x1822, 0x1834, 0x184c, 0x186d, - 0x1888, 0x18c1, 0x18dc, 0x1903, 0x191e, 0x1933, 0x194b, 0x1963, - 0x197b, 0x19b1, 0x19d5, 0x19f9, 0x1a0b, 0x1a29, 0x1a50, 0x1aaa, - 0x1ab3, 0x1b04, 0x1b10, 0x1b19, 0x1b37, 0x1b4c, 0x1b6e, 0x1b98, - 0x1bb0, 0x1bbf, 0x1bce, 0x1c01, 0x1c13, 0x1c28, 0x1c43, 0x1c55, - 0x1c6a, 0x1cc1, 0x1ce2, 0x1d06, 0x1d1e, 0x1d3f, 0x1d5d, 0x1dab, - 0x1dc9, 0x1e0b, 0x1e4a, 0x1e62, 0x1e7a, 0x1ea7, 0x1eb6, 0x1ec8, - // Entry 100 - 13F - 0x1ed7, 0x1ee6, 0x1f04, 0x1f19, 0x1f31, 0x1f6a, 0x1f73, 0x1f88, - 0x1fac, 0x1fca, 0x1fe8, 0x2012, 0x2033, 0x2060, 0x2084, 0x20a5, - 0x20cc, 0x20e1, 0x210e, 0x212c, 0x2156, 0x2171, 0x21b3, 0x21cb, - 0x21ef, 0x220d, 0x2237, 0x2255, 0x2267, 0x2285, 0x22ac, 0x22bb, - 0x22e2, 0x2300, 0x2324, 0x2324, 0x2348, -} // Size: 610 bytes - -const trRegionStr string = "" + // Size: 3061 bytes - "Ascension AdasıAndorraBirleşik Arap EmirlikleriAfganistanAntigua ve Barb" + - "udaAnguillaArnavutlukErmenistanAngolaAntarktikaArjantinAmerikan SamoasıA" + - "vusturyaAvustralyaArubaÅland AdalarıAzerbaycanBosna-HersekBarbadosBangla" + - "deşBelçikaBurkina FasoBulgaristanBahreynBurundiBeninSaint BarthelemyBerm" + - "udaBruneiBolivyaKarayip HollandasıBrezilyaBahamalarButanBouvet AdasıBots" + - "vanaBelarusBelizeKanadaCocos (Keeling) AdalarıKongo - KinşasaOrta Afrika" + - " CumhuriyetiKongo - BrazavilİsviçreFildişi SahiliCook AdalarıŞiliKamerun" + - "ÇinKolombiyaClipperton AdasıKosta RikaKübaCape VerdeCuraçaoChristmas Ad" + - "asıKıbrısÇekyaAlmanyaDiego GarciaCibutiDanimarkaDominikaDominik Cumhuriy" + - "etiCezayirSepte ve MelillaEkvadorEstonyaMısırBatı SahraEritreİspanyaEtiy" + - "opyaAvrupa BirliğiEuro BölgesiFinlandiyaFijiFalkland AdalarıMikronezyaFa" + - "roe AdalarıFransaGabonBirleşik KrallıkGrenadaGürcistanFransız GuyanasıGu" + - "ernseyGanaCebelitarıkGrönlandGambiyaGineGuadeloupeEkvator GinesiYunanist" + - "anGüney Georgia ve Güney Sandwich AdalarıGuatemalaGuamGine-BissauGuyanaÇ" + - "in Hong Kong ÖİBHeard Adası ve McDonald AdalarıHondurasHırvatistanHaitiM" + - "acaristanKanarya AdalarıEndonezyaİrlandaİsrailMan AdasıHindistanBritanya" + - " Hint Okyanusu TopraklarıIrakİranİzlandaİtalyaJerseyJamaikaÜrdünJaponyaK" + - "enyaKırgızistanKamboçyaKiribatiKomorlarSaint Kitts ve NevisKuzey KoreGün" + - "ey KoreKuveytCayman AdalarıKazakistanLaosLübnanSaint LuciaLiechtensteinS" + - "ri LankaLiberyaLesothoLitvanyaLüksemburgLetonyaLibyaFasMonakoMoldovaKara" + - "dağSaint MartinMadagaskarMarshall AdalarıMakedonyaMaliMyanmar (Burma)Moğ" + - "olistanÇin Makao ÖİBKuzey Mariana AdalarıMartinikMoritanyaMontserratMalt" + - "aMauritiusMaldivlerMalaviMeksikaMalezyaMozambikNamibyaYeni KaledonyaNije" + - "rNorfolk AdasıNijeryaNikaraguaHollandaNorveçNepalNauruNiueYeni ZelandaUm" + - "manPanamaPeruFransız PolinezyasıPapua Yeni GineFilipinlerPakistanPolonya" + - "Saint Pierre ve MiquelonPitcairn AdalarıPorto RikoFilistin BölgeleriPort" + - "ekizPalauParaguayKatarUzak OkyanusyaRéunionRomanyaSırbistanRusyaRuandaSu" + - "udi ArabistanSolomon AdalarıSeyşellerSudanİsveçSingapurSaint HelenaSlove" + - "nyaSvalbard ve Jan MayenSlovakyaSierra LeoneSan MarinoSenegalSomaliSurin" + - "amGüney SudanSão Tomé ve PríncipeEl SalvadorSint MaartenSuriyeSvazilandT" + - "ristan da CunhaTurks ve Caicos AdalarıÇadFransız Güney TopraklarıTogoTay" + - "landTacikistanTokelauTimor-LesteTürkmenistanTunusTongaTürkiyeTrinidad ve" + - " TobagoTuvaluTayvanTanzanyaUkraynaUgandaABD Küçük Harici AdalarıBirleşmi" + - "ş MilletlerAmerika Birleşik DevletleriUruguayÖzbekistanVatikanSaint Vin" + - "cent ve GrenadinlerVenezuelaBritanya Virjin AdalarıABD Virjin AdalarıVie" + - "tnamVanuatuWallis ve FutunaSamoaKosovaYemenMayotteGüney AfrikaZambiyaZim" + - "babveBilinmeyen BölgeDünyaAfrikaKuzey AmerikaGüney AmerikaOkyanusyaBatı " + - "AfrikaOrta AmerikaDoğu AfrikaKuzey AfrikaOrta AfrikaAfrika’nın GüneyiAme" + - "rikaAmerika’nın KuzeyiKarayiplerDoğu AsyaGüney AsyaGüneydoğu AsyaGüney A" + - "vrupaAvustralasyaMelanezyaMikronezya BölgesiPolinezyaAsyaOrta AsyaBatı A" + - "syaAvrupaDoğu AvrupaKuzey AvrupaBatı AvrupaLatin Amerika" - -var trRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x0031, 0x003b, 0x004d, 0x0055, 0x005f, - 0x0069, 0x006f, 0x0079, 0x0081, 0x0092, 0x009b, 0x00a5, 0x00aa, - 0x00b9, 0x00c3, 0x00cf, 0x00d7, 0x00e1, 0x00e9, 0x00f5, 0x0100, - 0x0107, 0x010e, 0x0113, 0x0123, 0x012a, 0x0130, 0x0137, 0x014a, - 0x0152, 0x015b, 0x0160, 0x016d, 0x0175, 0x017c, 0x0182, 0x0188, - 0x01a0, 0x01b0, 0x01c7, 0x01d7, 0x01e0, 0x01ef, 0x01fc, 0x0201, - 0x0208, 0x020c, 0x0215, 0x0226, 0x0230, 0x0235, 0x023f, 0x0247, - 0x0257, 0x025f, 0x0265, 0x026c, 0x0278, 0x027e, 0x0287, 0x028f, - // Entry 40 - 7F - 0x02a2, 0x02a9, 0x02b9, 0x02c0, 0x02c7, 0x02ce, 0x02d9, 0x02df, - 0x02e7, 0x02ef, 0x02fe, 0x030b, 0x0315, 0x0319, 0x032a, 0x0334, - 0x0342, 0x0348, 0x034d, 0x035f, 0x0366, 0x0370, 0x0382, 0x038a, - 0x038e, 0x039a, 0x03a3, 0x03aa, 0x03ae, 0x03b8, 0x03c6, 0x03d0, - 0x03fa, 0x0403, 0x0407, 0x0412, 0x0418, 0x042c, 0x044d, 0x0455, - 0x0461, 0x0466, 0x0470, 0x0480, 0x0489, 0x0491, 0x0498, 0x04a2, - 0x04ab, 0x04cd, 0x04d1, 0x04d6, 0x04de, 0x04e5, 0x04eb, 0x04f2, - 0x04f9, 0x0500, 0x0505, 0x0512, 0x051b, 0x0523, 0x052b, 0x053f, - // Entry 80 - BF - 0x0549, 0x0554, 0x055a, 0x0569, 0x0573, 0x0577, 0x057e, 0x0589, - 0x0596, 0x059f, 0x05a6, 0x05ad, 0x05b5, 0x05c0, 0x05c7, 0x05cc, - 0x05cf, 0x05d5, 0x05dc, 0x05e4, 0x05f0, 0x05fa, 0x060b, 0x0614, - 0x0618, 0x0627, 0x0632, 0x0642, 0x0658, 0x0660, 0x0669, 0x0673, - 0x0678, 0x0681, 0x068a, 0x0690, 0x0697, 0x069e, 0x06a6, 0x06ad, - 0x06bb, 0x06c0, 0x06ce, 0x06d5, 0x06de, 0x06e6, 0x06ed, 0x06f2, - 0x06f7, 0x06fb, 0x0707, 0x070c, 0x0712, 0x0716, 0x072b, 0x073a, - 0x0744, 0x074c, 0x0753, 0x076b, 0x077c, 0x0786, 0x0799, 0x07a1, - // Entry C0 - FF - 0x07a6, 0x07ae, 0x07b3, 0x07c1, 0x07c9, 0x07d0, 0x07da, 0x07df, - 0x07e5, 0x07f4, 0x0804, 0x080e, 0x0813, 0x081a, 0x0822, 0x082e, - 0x0836, 0x084b, 0x0853, 0x085f, 0x0869, 0x0870, 0x0876, 0x087d, - 0x0889, 0x08a0, 0x08ab, 0x08b7, 0x08bd, 0x08c6, 0x08d6, 0x08ee, - 0x08f2, 0x090d, 0x0911, 0x0918, 0x0922, 0x0929, 0x0934, 0x0941, - 0x0946, 0x094b, 0x0953, 0x0965, 0x096b, 0x0971, 0x0979, 0x0980, - 0x0986, 0x09a2, 0x09b7, 0x09d3, 0x09da, 0x09e5, 0x09ec, 0x0a08, - 0x0a11, 0x0a29, 0x0a3c, 0x0a43, 0x0a4a, 0x0a5a, 0x0a5f, 0x0a65, - // Entry 100 - 13F - 0x0a6a, 0x0a71, 0x0a7e, 0x0a85, 0x0a8d, 0x0a9e, 0x0aa4, 0x0aaa, - 0x0ab7, 0x0ac5, 0x0ace, 0x0ada, 0x0ae6, 0x0af2, 0x0afe, 0x0b09, - 0x0b1e, 0x0b25, 0x0b3a, 0x0b44, 0x0b4e, 0x0b59, 0x0b69, 0x0b76, - 0x0b82, 0x0b8b, 0x0b9e, 0x0ba7, 0x0bab, 0x0bb4, 0x0bbe, 0x0bc4, - 0x0bd0, 0x0bdc, 0x0be8, 0x0be8, 0x0bf5, -} // Size: 610 bytes - -const ukRegionStr string = "" + // Size: 6164 bytes - "Острів ВознесінняАндорраОбʼєднані Арабські ЕміратиАфганістанАнтиґуа і Ба" + - "рбудаАнґільяАлбаніяВірменіяАнголаАнтарктикаАргентинаАмериканське СамоаА" + - "встріяАвстраліяАрубаАландські островиАзербайджанБоснія і ГерцеґовинаБар" + - "бадосБангладешБельґіяБуркіна-ФасоБолгаріяБахрейнБурундіБенінСен-Бартель" + - "міБермудські островиБрунейБолівіяНідерландські Карибські островиБразілі" + - "яБагамські ОстровиБутанОстрів БувеБотсванаБілорусьБелізКанадаКокосові (" + - "Кілінгові) островиКонго – КіншасаЦентральноафриканська РеспублікаКонго " + - "– БраззавільШвейцаріяКот-д’ІвуарОстрови КукаЧіліКамерунКитайКолумбіяОс" + - "трів КліппертонКоста-РікаКубаКабо-ВердеКюрасаоОстрів РіздваКіпрЧехіяНім" + - "еччинаДієго-ГарсіяДжибутіДаніяДомінікаДомініканська РеспублікаАлжирСеут" + - "а і МелільяЕквадорЕстоніяЄгипетЗахідна СахараЕритреяІспаніяЕфіопіяЄвроп" + - "ейський СоюзЄврозонаФінляндіяФіджіФолклендські островиМікронезіяФарерсь" + - "кі ОстровиФранціяГабонВелика БританіяҐренадаГрузіяФранцузька ҐвіанаҐерн" + - "сіГанॳбралтарҐренландіяГамбіяГвінеяҐваделупаЕкваторіальна ГвінеяГреці" + - "яПівденна Джорджія та Південні Сандвічеві островиҐватемалаҐуамГвінея-Бі" + - "сауҐайанаГонконг, О.А.Р. Китаюострів Герд і острови МакдоналдГондурасХо" + - "рватіяГаїтіУгорщинаКанарські островиІндонезіяІрландіяІзраїльОстрів МенІ" + - "ндіяБританська територія в Індійському ОкеаніІракІранІсландіяІталіяДжер" + - "сіЯмайкаЙорданіяЯпоніяКеніяКиргизстанКамбоджаКірібатіКоморські островиС" + - "ент-Кітс і НевісПівнічна КореяПівденна КореяКувейтКайманові островиКаза" + - "хстанЛаосЛіванСент-ЛюсіяЛіхтенштейнШрі-ЛанкаЛіберіяЛесотоЛитваЛюксембур" + - "ґЛатвіяЛівіяМароккоМонакоМолдоваЧорногоріяСен-МартенМадагаскарМаршаллов" + - "і ОстровиМакедоніяМаліМʼянма (Бірма)МонголіяМакао, О.А.Р КитаюПівнічні " + - "Маріанські ОстровиМартінікаМавританіяМонтсерратМальтаМаврікійМальдівиМа" + - "лавіМексикаМалайзіяМозамбікНамібіяНова КаледоніяНігерОстрів НорфолкНіге" + - "ріяНікараґуаНідерландиНорвеґіяНепалНауруНіуеНова ЗеландіяОманПанамаПеру" + - "Французька ПолінезіяПапуа-Нова ҐвінеяФіліппіниПакистанПольщаСен-Пʼєр і " + - "МікелонОстрови ПіткернПуерто-РікоПалестинські територіїПортуґаліяПалауП" + - "араґвайКатарВіддалена ОкеаніяРеюньйонРумуніяСербіяРосіяРуандаСаудівська" + - " АравіяСоломонові ОстровиСейшельські ОстровиСуданШвеціяСінгапурОстрів Св" + - "ятої ЄлениСловеніяШпіцберґен і Ян-МайенСловаччинаСьєрра-ЛеонеСан-Маріно" + - "СенегалСомаліСурінамПівденний СуданСан-Томе і ПрінсіпіСальвадорСінт-Мар" + - "тенСиріяСвазілендТрістан-да-КуньяОстрови Теркс і КайкосЧадФранцузькі Пі" + - "вденні ТериторіїТогоТаїландТаджикистанТокелауТімор-ЛештіТуркменістанТун" + - "ісТонґаТуреччинаТрінідад і ТобаґоТувалуТайваньТанзаніяУкраїнаУгандаВідд" + - "алені острови СШАОрганізація Об’єднаних НаційСполучені ШтатиУруґвайУзбе" + - "кистанВатиканСент-Вінсент і ҐренадіниВенесуелаБританські Віргінські ост" + - "ровиВіргінські острови, СШАВʼєтнамВануатуУолліс і ФутунаСамоаКосовоЄмен" + - "МайоттаПівденно-Африканська РеспублікаЗамбіяЗімбабвеНевідомий регіонСві" + - "тАфрикаПівнічна АмерикаПівденна АмерикаОкеаніяЗахідна АфрикаЦентральна " + - "АмерикаСхідна АфрикаПівнічна АфрикаЦентральна АфрикаПівденна АфрикаАмер" + - "икаПівнічна Америка (регіон)Карибський басейнСхідна АзіяПівденна АзіяПі" + - "вденно-Східна АзіяПівденна ЄвропаАвстралазіяМеланезіяМікронезійський ре" + - "гіонПолінезіяАзіяЦентральна АзіяЗахідна АзіяЄвропаСхідна ЄвропаПівнічна" + - " ЄвропаЗахідна ЄвропаЛатинська Америка" - -var ukRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0021, 0x002f, 0x0061, 0x0075, 0x0095, 0x00a3, 0x00b1, - 0x00c1, 0x00cd, 0x00e1, 0x00f3, 0x0116, 0x0124, 0x0136, 0x0140, - 0x0161, 0x0177, 0x019d, 0x01ad, 0x01bf, 0x01cd, 0x01e4, 0x01f4, - 0x0202, 0x0210, 0x021a, 0x0233, 0x0256, 0x0262, 0x0270, 0x02ac, - 0x02bc, 0x02dd, 0x02e7, 0x02fc, 0x030c, 0x031c, 0x0326, 0x0332, - 0x0366, 0x0383, 0x03c2, 0x03e5, 0x03f7, 0x040d, 0x0424, 0x042c, - 0x043a, 0x0444, 0x0454, 0x0475, 0x0488, 0x0490, 0x04a3, 0x04b1, - 0x04ca, 0x04d2, 0x04dc, 0x04ee, 0x0505, 0x0513, 0x051d, 0x052d, - // Entry 40 - 7F - 0x055c, 0x0566, 0x0582, 0x0590, 0x059e, 0x05aa, 0x05c5, 0x05d3, - 0x05e1, 0x05ef, 0x0610, 0x0620, 0x0632, 0x063c, 0x0663, 0x0677, - 0x0698, 0x06a6, 0x06b0, 0x06cd, 0x06db, 0x06e7, 0x0708, 0x0714, - 0x071c, 0x072e, 0x0742, 0x074e, 0x075a, 0x076c, 0x0793, 0x079f, - 0x07fa, 0x080c, 0x0814, 0x082b, 0x0837, 0x085b, 0x0895, 0x08a5, - 0x08b5, 0x08bf, 0x08cf, 0x08f0, 0x0902, 0x0912, 0x0920, 0x0933, - 0x093d, 0x098b, 0x0993, 0x099b, 0x09ab, 0x09b7, 0x09c3, 0x09cf, - 0x09df, 0x09eb, 0x09f5, 0x0a09, 0x0a19, 0x0a29, 0x0a4a, 0x0a69, - // Entry 80 - BF - 0x0a84, 0x0a9f, 0x0aab, 0x0acc, 0x0ade, 0x0ae6, 0x0af0, 0x0b03, - 0x0b19, 0x0b2a, 0x0b38, 0x0b44, 0x0b4e, 0x0b62, 0x0b6e, 0x0b78, - 0x0b86, 0x0b92, 0x0ba0, 0x0bb4, 0x0bc7, 0x0bdb, 0x0bfe, 0x0c10, - 0x0c18, 0x0c31, 0x0c41, 0x0c60, 0x0c94, 0x0ca6, 0x0cba, 0x0cce, - 0x0cda, 0x0cea, 0x0cfa, 0x0d06, 0x0d14, 0x0d24, 0x0d34, 0x0d42, - 0x0d5d, 0x0d67, 0x0d82, 0x0d90, 0x0da2, 0x0db6, 0x0dc6, 0x0dd0, - 0x0dda, 0x0de2, 0x0dfb, 0x0e03, 0x0e0f, 0x0e17, 0x0e3e, 0x0e5e, - 0x0e70, 0x0e80, 0x0e8c, 0x0ead, 0x0eca, 0x0edf, 0x0f0a, 0x0f1e, - // Entry C0 - FF - 0x0f28, 0x0f38, 0x0f42, 0x0f63, 0x0f73, 0x0f81, 0x0f8d, 0x0f97, - 0x0fa3, 0x0fc4, 0x0fe7, 0x100c, 0x1016, 0x1022, 0x1032, 0x1056, - 0x1066, 0x108d, 0x10a1, 0x10b8, 0x10cb, 0x10d9, 0x10e5, 0x10f3, - 0x1110, 0x1133, 0x1145, 0x115a, 0x1164, 0x1176, 0x1194, 0x11bd, - 0x11c3, 0x11fb, 0x1203, 0x1211, 0x1227, 0x1235, 0x124a, 0x1262, - 0x126c, 0x1276, 0x1288, 0x12a8, 0x12b4, 0x12c2, 0x12d2, 0x12e0, - 0x12ec, 0x1314, 0x134b, 0x1368, 0x1376, 0x138a, 0x1398, 0x13c5, - 0x13d7, 0x140f, 0x143a, 0x1448, 0x1456, 0x1472, 0x147c, 0x1488, - // Entry 100 - 13F - 0x1490, 0x149e, 0x14da, 0x14e6, 0x14f6, 0x1515, 0x151d, 0x1529, - 0x1548, 0x1567, 0x1575, 0x1590, 0x15b3, 0x15cc, 0x15e9, 0x160a, - 0x1627, 0x1635, 0x1663, 0x1684, 0x1699, 0x16b2, 0x16d8, 0x16f5, - 0x170b, 0x171d, 0x1748, 0x175a, 0x1762, 0x177f, 0x1796, 0x17a2, - 0x17bb, 0x17d8, 0x17f3, 0x17f3, 0x1814, -} // Size: 610 bytes - -const urRegionStr string = "" + // Size: 5126 bytes - "اسینشن آئلینڈانڈورامتحدہ عرب اماراتافغانستانانٹیگوا اور باربوداانگوئیلاا" + - "لبانیہآرمینیاانگولاانٹارکٹیکاارجنٹیناامریکی ساموآآسٹریاآسٹریلیااروباآلی" + - "نڈ آئلینڈزآذربائیجانبوسنیا اور ہرزیگووینابارباڈوسبنگلہ دیشبیلجیمبرکینا " + - "فاسوبلغاریہبحرینبرونڈیبیننسینٹ برتھلیمیبرمودابرونائیبولیویاکریبیائی نید" + - "رلینڈزبرازیلبہاماسبھوٹانبؤویٹ آئلینڈبوتسوانابیلاروسبیلائزکینیڈاکوکوس (ک" + - "یلنگ) جزائرکانگو - کنشاساوسط افریقی جمہوریہکانگو - برازاویلےسوئٹزر لینڈ" + - "کوٹ ڈی آئیوریکک آئلینڈزچلیکیمرونچینکولمبیاکلپرٹن آئلینڈکوسٹا ریکاکیوباک" + - "یپ ورڈیکیوراکاؤجزیرہ کرسمسقبرصچیکیاجرمنیڈائجو گارسیاجبوتیڈنمارکڈومنیکاج" + - "مہوریہ ڈومينيکنالجیریاسیئوٹا اور میلیلاایکواڈوراسٹونیامصرمغربی صحارااری" + - "ٹیریاہسپانیہایتھوپیایوروپی یونینیوروزونفن لینڈفجیفاکلینڈ جزائرمائکرونیش" + - "یاجزائر فاروفرانسگیبونسلطنت متحدہگریناڈاجارجیافرینچ گیاناگوئرنسیگھاناجب" + - "ل الطارقگرین لینڈگیمبیاگنیگواڈیلوپاستوائی گیانایونانجنوبی جارجیا اور جن" + - "وبی سینڈوچ جزائرگواٹے مالاگوامگنی بساؤگیاناہانگ کانگ SAR چینہیرڈ جزیرہ " + - "و میکڈولینڈ جزائرہونڈاروسکروشیاہیٹیہنگریکینری آئلینڈزانڈونیشیاآئرلینڈاس" + - "رائیلآئل آف مینبھارتبرطانوی بحر ہند کا علاقہعراقایرانآئس لینڈاٹلیجرسیجم" + - "ائیکااردنجاپانکینیاکرغزستانکمبوڈیاکریباتیکوموروسسینٹ کٹس اور نیویسشمالی" + - " کوریاجنوبی کوریاکویتکیمین آئلینڈزقزاخستانلاؤسلبنانسینٹ لوسیالیشٹنسٹائنس" + - "ری لنکالائبیریالیسوتھولیتھونیالکسمبرگلٹویالیبیامراکشموناکومالدووامونٹے " + - "نیگروسینٹ مارٹنمڈغاسکرمارشل آئلینڈزمقدونیہمالیمیانمار (برما)منگولیامکاؤ" + - " SAR چینشمالی ماریانا آئلینڈزمارٹینکموریطانیہمونٹسیراٹمالٹاماریشسمالدیپم" + - "لاویمیکسیکوملائشیاموزمبیقنامیبیانیو کلیڈونیانائجرنارفوک آئلینڈنائجیریان" + - "کاراگووانیدر لینڈزناروےنیپالنؤرونیئونیوزی لینڈعمانپانامہپیروفرانسیسی پو" + - "لینیشیاپاپوآ نیو گنیفلپائنپاکستانپولینڈسینٹ پیئر اور میکلیئونپٹکائرن جز" + - "ائرپیورٹو ریکوفلسطینی خطےپرتگالپلاؤپیراگوئےقطربیرونی اوشیانیاری یونینرو" + - "مانیہسربیاروسروانڈاسعودی عربسولومن آئلینڈزسشلیزسوڈانسویڈنسنگاپورسینٹ ہی" + - "لیناسلووینیاسوالبرڈ اور جان ماینسلوواکیہسیرالیونسان مارینوسینیگلصومالیہ" + - "سورینامجنوبی سوڈانساؤ ٹوم اور پرنسپےال سلواڈورسنٹ مارٹنشامسوازی لینڈٹرس" + - "ٹن ڈا کیونہاترکس اور کیکاؤس جزائرچاڈفرانسیسی جنوبی خطےٹوگوتھائی لینڈتاج" + - "کستانٹوکیلاؤتیمور لیسٹترکمانستانتونسٹونگاترکیترینیداد اور ٹوباگوٹووالوت" + - "ائیوانتنزانیہیوکرینیوگنڈاامریکہ سے باہر کے چھوٹے جزائزاقوام متحدہریاستہ" + - "ائے متحدہیوروگوئےازبکستانویٹیکن سٹیسینٹ ونسنٹ اور گرینیڈائنزوینزوئیلابر" + - "ٹش ورجن آئلینڈزامریکی ورجن آئلینڈزویتناموینوآٹوویلیز اور فیوٹیوناساموآک" + - "وسووویمنمایوٹجنوبی افریقہزامبیازمبابوےنامعلوم علاقہدنیاافریقہشمالی امری" + - "کہجنوبی امریکہاوشیانیامغربی افریقہوسطی امریکہمشرقی افریقہشمالی افریقہوس" + - "طی افریقہجنوبی افریقہ کے علاقہامیریکازشمالی امریکہ کا علاقہکریبیائیمشرق" + - "ی ایشیاجنوبی ایشیاجنوب مشرقی ایشیاجنوبی یورپآسٹریلیشیامالینیشیامائکرونی" + - "شیائی علاقہپولینیشیاایشیاوسطی ایشیامغربی ایشیایورپمشرقی یورپشمالی یورپم" + - "غربی یورپلاطینی امریکہ" - -var urRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0019, 0x0025, 0x0043, 0x0055, 0x0079, 0x0089, 0x0097, - 0x00a5, 0x00b1, 0x00c5, 0x00d5, 0x00ec, 0x00f8, 0x0108, 0x0112, - 0x012b, 0x013f, 0x0167, 0x0177, 0x0188, 0x0194, 0x01a9, 0x01b7, - 0x01c1, 0x01cd, 0x01d5, 0x01ee, 0x01fa, 0x0208, 0x0216, 0x0239, - 0x0245, 0x0251, 0x025d, 0x0274, 0x0284, 0x0292, 0x029e, 0x02aa, - 0x02cc, 0x02e5, 0x0307, 0x0326, 0x033b, 0x0353, 0x0366, 0x036c, - 0x0378, 0x037e, 0x038c, 0x03a5, 0x03b8, 0x03c2, 0x03d1, 0x03e1, - 0x03f6, 0x03fe, 0x0408, 0x0412, 0x0429, 0x0433, 0x043f, 0x044d, - // Entry 40 - 7F - 0x046c, 0x047a, 0x049a, 0x04aa, 0x04b8, 0x04be, 0x04d3, 0x04e3, - 0x04f1, 0x0501, 0x0518, 0x0526, 0x0533, 0x0539, 0x0552, 0x0568, - 0x057b, 0x0585, 0x058f, 0x05a4, 0x05b2, 0x05be, 0x05d3, 0x05e1, - 0x05eb, 0x05fe, 0x060f, 0x061b, 0x0621, 0x0631, 0x064a, 0x0654, - 0x0695, 0x06a8, 0x06b0, 0x06bf, 0x06c9, 0x06e5, 0x0719, 0x0729, - 0x0735, 0x073d, 0x0747, 0x0760, 0x0772, 0x0780, 0x078e, 0x07a0, - 0x07aa, 0x07d6, 0x07de, 0x07e8, 0x07f7, 0x07ff, 0x0807, 0x0815, - 0x081d, 0x0827, 0x0831, 0x0841, 0x084f, 0x085d, 0x086b, 0x088c, - // Entry 80 - BF - 0x08a1, 0x08b6, 0x08be, 0x08d7, 0x08e7, 0x08ef, 0x08f9, 0x090c, - 0x0920, 0x092f, 0x093f, 0x094d, 0x095d, 0x096b, 0x0975, 0x097f, - 0x0989, 0x0995, 0x09a3, 0x09b8, 0x09cb, 0x09d9, 0x09f2, 0x0a00, - 0x0a08, 0x0a21, 0x0a2f, 0x0a42, 0x0a6a, 0x0a78, 0x0a8a, 0x0a9c, - 0x0aa6, 0x0ab2, 0x0abe, 0x0ac8, 0x0ad6, 0x0ae4, 0x0af2, 0x0b00, - 0x0b17, 0x0b21, 0x0b3a, 0x0b4a, 0x0b5c, 0x0b6f, 0x0b79, 0x0b83, - 0x0b8b, 0x0b93, 0x0ba6, 0x0bae, 0x0bba, 0x0bc2, 0x0be5, 0x0bfd, - 0x0c09, 0x0c17, 0x0c23, 0x0c4c, 0x0c65, 0x0c7a, 0x0c8f, 0x0c9b, - // Entry C0 - FF - 0x0ca3, 0x0cb3, 0x0cb9, 0x0cd6, 0x0ce5, 0x0cf3, 0x0cfd, 0x0d03, - 0x0d0f, 0x0d20, 0x0d3b, 0x0d45, 0x0d4f, 0x0d59, 0x0d67, 0x0d7c, - 0x0d8c, 0x0db1, 0x0dc1, 0x0dd1, 0x0de4, 0x0df0, 0x0dfe, 0x0e0c, - 0x0e21, 0x0e42, 0x0e55, 0x0e66, 0x0e6c, 0x0e7f, 0x0e9b, 0x0ec2, - 0x0ec8, 0x0eea, 0x0ef2, 0x0f05, 0x0f15, 0x0f23, 0x0f36, 0x0f4a, - 0x0f52, 0x0f5c, 0x0f64, 0x0f88, 0x0f94, 0x0fa2, 0x0fb0, 0x0fbc, - 0x0fc8, 0x0ffd, 0x1012, 0x102f, 0x103f, 0x104f, 0x1062, 0x1091, - 0x10a3, 0x10c3, 0x10e7, 0x10f3, 0x1101, 0x1123, 0x112d, 0x1139, - // Entry 100 - 13F - 0x113f, 0x1149, 0x1160, 0x116c, 0x117a, 0x1193, 0x119b, 0x11a7, - 0x11be, 0x11d5, 0x11e5, 0x11fc, 0x1211, 0x1228, 0x123f, 0x1254, - 0x127b, 0x128b, 0x12b2, 0x12c2, 0x12d7, 0x12ec, 0x130a, 0x131d, - 0x1331, 0x1343, 0x1368, 0x137a, 0x1384, 0x1397, 0x13ac, 0x13b4, - 0x13c7, 0x13da, 0x13ed, 0x13ed, 0x1406, -} // Size: 610 bytes - -const uzRegionStr string = "" + // Size: 3237 bytes - "Me’roj oroliAndorraBirlashgan Arab AmirliklariAfgʻonistonAntigua va Barb" + - "udaAngilyaAlbaniyaArmanistonAngolaAntarktidaArgentinaAmerika SamoasiAvst" + - "riyaAvstraliyaArubaAland orollariOzarbayjonBosniya va GertsegovinaBarbad" + - "osBangladeshBelgiyaBurkina-FasoBolgariyaBahraynBurundiBeninSen-Bartelemi" + - "Bermuda orollariBruneyBoliviyaBoneyr, Sint-Estatius va SabaBraziliyaBaga" + - "ma orollariButanBuve oroliBotsvanaBelarusBelizKanadaKokos (Kiling) oroll" + - "ariKongo – KinshasaMarkaziy Afrika RespublikasiKongo – BrazzavilShveytsa" + - "riyaKot-d’IvuarKuk orollariChiliKamerunXitoyKolumbiyaKlipperton oroliKos" + - "ta-RikaKubaKabo-VerdeKyurasaoRojdestvo oroliKiprChexiyaGermaniyaDiyego-G" + - "arsiyaJibutiDaniyaDominikaDominikan RespublikasiJazoirSeuta va MelilyaEk" + - "vadorEstoniyaMisrG‘arbiy Sahroi KabirEritreyaIspaniyaEfiopiyaYevropa Itt" + - "ifoqiyevrozonaFinlandiyaFijiFolklend orollariMikroneziyaFarer orollariFr" + - "ansiyaGabonBuyuk BritaniyaGrenadaGruziyaFransuz GvianasiGernsiGanaGibral" + - "tarGrenlandiyaGambiyaGvineyaGvadelupeEkvatorial GvineyaGretsiyaJanubiy G" + - "eorgiya va Janubiy Sendvich orollariGvatemalaGuamGvineya-BisauGayanaGonk" + - "ong (Xitoy MMH)Xerd va Makdonald orollariGondurasXorvatiyaGaitiVengriyaK" + - "anar orollariIndoneziyaIrlandiyaIsroilMen oroliHindistonBritaniyaning Hi" + - "nd okeanidagi hududiIroqEronIslandiyaItaliyaJersiYamaykaIordaniyaYaponiy" + - "aKeniyaQirgʻizistonKambodjaKiribatiKomor orollariSent-Kits va NevisShimo" + - "liy KoreyaJanubiy KoreyaQuvaytKayman orollariQozogʻistonLaosLivanSent-Ly" + - "usiyaLixtenshteynShri-LankaLiberiyaLesotoLitvaLyuksemburgLatviyaLiviyaMa" + - "rokashMonakoMoldovaChernogoriyaSent-MartinMadagaskarMarshall orollariMak" + - "edoniyaMaliMyanma (Birma)MongoliyaMakao (Xitoy MMH)Shimoliy Mariana orol" + - "lariMartinikaMavritaniyaMontserratMaltaMavrikiyMaldiv orollariMalaviMeks" + - "ikaMalayziyaMozambikNamibiyaYangi KaledoniyaNigerNorfolk oroliNigeriyaNi" + - "karaguaNiderlandiyaNorvegiyaNepalNauruNiueYangi ZelandiyaUmmonPanamaPeru" + - "Fransuz PolineziyasiPapua – Yangi GvineyaFilippinPokistonPolshaSen-Pyer " + - "va MikelonPitkern orollariPuerto-RikoFalastin hududlariPortugaliyaPalauP" + - "aragvayQatarTashqi OkeaniyaReyunionRuminiyaSerbiyaRossiyaRuandaSaudiya A" + - "rabistoniSolomon orollariSeyshel orollariSudanShvetsiyaSingapurMuqaddas " + - "Yelena oroliSloveniyaShpitsbergen va Yan-MayenSlovakiyaSyerra-LeoneSan-M" + - "arinoSenegalSomaliSurinamJanubiy SudanSan-Tome va PrinsipiSalvadorSint-M" + - "artenSuriyaSvazilendTristan-da-KunyaTurks va Kaykos orollariChadFransuz " + - "Janubiy hududlariTogoTailandTojikistonTokelauTimor-LesteTurkmanistonTuni" + - "sTongaTurkiyaTrinidad va TobagoTuvaluTayvanTanzaniyaUkrainaUgandaAQSH yo" + - "ndosh orollariBirlashgan Millatlar TashkilotiAmerika Qo‘shma ShtatlariUr" + - "ugvayOʻzbekistonVatikanSent-Vinsent va GrenadinVenesuelaBritaniya Virgin" + - " orollariAQSH Virgin orollariVyetnamVanuatuUollis va FutunaSamoaKosovoYa" + - "manMayottaJanubiy Afrika RespublikasiZambiyaZimbabveNoma’lum mintaqaDuny" + - "oAfrikaShimoliy AmerikaJanubiy AmerikaOkeaniyaG‘arbiy AfrikaMarkaziy Ame" + - "rikaSharqiy AfrikaShimoliy AfrikaMarkaziy AfrikaJanubiy AfrikaAmerikaShi" + - "moliy Amerika – AQSH va KanadaKarib havzasiSharqiy OsiyoJanubiy OsiyoJan" + - "ubi-sharqiy OsiyoJanubiy YevropaAvstralaziyaMelaneziyaMikroneziya mintaq" + - "asiPolineziyaOsiyoMarkaziy OsiyoG‘arbiy OsiyoYevropaSharqiy YevropaShimo" + - "liy YevropaG‘arbiy YevropaLotin Amerikasi" - -var uzRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000e, 0x0015, 0x0030, 0x003c, 0x004e, 0x0055, 0x005d, - 0x0067, 0x006d, 0x0077, 0x0080, 0x008f, 0x0097, 0x00a1, 0x00a6, - 0x00b4, 0x00be, 0x00d5, 0x00dd, 0x00e7, 0x00ee, 0x00fa, 0x0103, - 0x010a, 0x0111, 0x0116, 0x0123, 0x0133, 0x0139, 0x0141, 0x015e, - 0x0167, 0x0176, 0x017b, 0x0185, 0x018d, 0x0194, 0x0199, 0x019f, - 0x01b6, 0x01c8, 0x01e4, 0x01f7, 0x0203, 0x0210, 0x021c, 0x0221, - 0x0228, 0x022d, 0x0236, 0x0246, 0x0250, 0x0254, 0x025e, 0x0266, - 0x0275, 0x0279, 0x0280, 0x0289, 0x0297, 0x029d, 0x02a3, 0x02ab, - // Entry 40 - 7F - 0x02c1, 0x02c7, 0x02d7, 0x02de, 0x02e6, 0x02ea, 0x0300, 0x0308, - 0x0310, 0x0318, 0x0328, 0x0331, 0x033b, 0x033f, 0x0350, 0x035b, - 0x0369, 0x0371, 0x0376, 0x0385, 0x038c, 0x0393, 0x03a3, 0x03a9, - 0x03ad, 0x03b6, 0x03c1, 0x03c8, 0x03cf, 0x03d8, 0x03ea, 0x03f2, - 0x041f, 0x0428, 0x042c, 0x0439, 0x043f, 0x0452, 0x046c, 0x0474, - 0x047d, 0x0482, 0x048a, 0x0498, 0x04a2, 0x04ab, 0x04b1, 0x04ba, - 0x04c3, 0x04e7, 0x04eb, 0x04ef, 0x04f8, 0x04ff, 0x0504, 0x050b, - 0x0514, 0x051c, 0x0522, 0x052f, 0x0537, 0x053f, 0x054d, 0x055f, - // Entry 80 - BF - 0x056e, 0x057c, 0x0582, 0x0591, 0x059d, 0x05a1, 0x05a6, 0x05b2, - 0x05be, 0x05c8, 0x05d0, 0x05d6, 0x05db, 0x05e6, 0x05ed, 0x05f3, - 0x05fb, 0x0601, 0x0608, 0x0614, 0x061f, 0x0629, 0x063a, 0x0644, - 0x0648, 0x0656, 0x065f, 0x0670, 0x0689, 0x0692, 0x069d, 0x06a7, - 0x06ac, 0x06b4, 0x06c3, 0x06c9, 0x06d0, 0x06d9, 0x06e1, 0x06e9, - 0x06f9, 0x06fe, 0x070b, 0x0713, 0x071c, 0x0728, 0x0731, 0x0736, - 0x073b, 0x073f, 0x074e, 0x0753, 0x0759, 0x075d, 0x0771, 0x0788, - 0x0790, 0x0798, 0x079e, 0x07b1, 0x07c1, 0x07cc, 0x07de, 0x07e9, - // Entry C0 - FF - 0x07ee, 0x07f6, 0x07fb, 0x080a, 0x0812, 0x081a, 0x0821, 0x0828, - 0x082e, 0x0840, 0x0850, 0x0860, 0x0865, 0x086e, 0x0876, 0x088b, - 0x0894, 0x08ad, 0x08b6, 0x08c2, 0x08cc, 0x08d3, 0x08d9, 0x08e0, - 0x08ed, 0x0901, 0x0909, 0x0914, 0x091a, 0x0923, 0x0933, 0x094b, - 0x094f, 0x0968, 0x096c, 0x0973, 0x097d, 0x0984, 0x098f, 0x099b, - 0x09a0, 0x09a5, 0x09ac, 0x09be, 0x09c4, 0x09ca, 0x09d3, 0x09da, - 0x09e0, 0x09f5, 0x0a14, 0x0a2f, 0x0a36, 0x0a42, 0x0a49, 0x0a61, - 0x0a6a, 0x0a83, 0x0a97, 0x0a9e, 0x0aa5, 0x0ab5, 0x0aba, 0x0ac0, - // Entry 100 - 13F - 0x0ac5, 0x0acc, 0x0ae7, 0x0aee, 0x0af6, 0x0b08, 0x0b0d, 0x0b13, - 0x0b23, 0x0b32, 0x0b3a, 0x0b4a, 0x0b5a, 0x0b68, 0x0b77, 0x0b86, - 0x0b94, 0x0b9b, 0x0bbe, 0x0bcb, 0x0bd8, 0x0be5, 0x0bf9, 0x0c08, - 0x0c14, 0x0c1e, 0x0c33, 0x0c3d, 0x0c42, 0x0c50, 0x0c5f, 0x0c66, - 0x0c75, 0x0c85, 0x0c96, 0x0c96, 0x0ca5, -} // Size: 610 bytes - -const viRegionStr string = "" + // Size: 3253 bytes - "Đảo AscensionAndorraCác Tiểu Vương quốc Ả Rập Thống nhấtAfghanistanAntig" + - "ua và BarbudaAnguillaAlbaniaArmeniaAngolaNam CựcArgentinaĐảo Somoa thuộc" + - " MỹÁoAustraliaArubaQuần đảo ÅlandAzerbaijanBosnia và HerzegovinaBarbados" + - "BangladeshBỉBurkina FasoBulgariaBahrainBurundiBeninSt. BarthélemyBermuda" + - "BruneiBoliviaCa-ri-bê Hà LanBrazilBahamasBhutanĐảo BouvetBotswanaBelarus" + - "BelizeCanadaQuần đảo Cocos (Keeling)Congo - KinshasaCộng hòa Trung PhiCo" + - "ngo - BrazzavilleThụy SĩCôte d’IvoireQuần đảo CookChileCameroonTrung Quố" + - "cColombiaĐảo ClippertonCosta RicaCubaCape VerdeCuraçaoĐảo Giáng SinhSípS" + - "écĐứcDiego GarciaDjiboutiĐan MạchDominicaCộng hòa DominicaAlgeriaCeuta " + - "và MelillaEcuadorEstoniaAi CậpTây SaharaEritreaTây Ban NhaEthiopiaLiên M" + - "inh Châu ÂuKhu vực đồng EuroPhần LanFijiQuần đảo FalklandMicronesiaQuần " + - "đảo FaroePhápGabonVương quốc AnhGrenadaGruziaGuiana thuộc PhápGuernseyG" + - "hanaGibraltarGreenlandGambiaGuineaGuadeloupeGuinea Xích ĐạoHy LạpNam Geo" + - "rgia & Quần đảo Nam SandwichGuatemalaGuamGuinea-BissauGuyanaHồng Kông, T" + - "rung QuốcQuần đảo Heard và McDonaldHondurasCroatiaHaitiHungaryQuần đảo C" + - "anaryIndonesiaIrelandIsraelĐảo ManẤn ĐộLãnh thổ Ấn độ dương thuộc AnhIra" + - "qIranIcelandItalyJerseyJamaicaJordanNhật BảnKenyaKyrgyzstanCampuchiaKiri" + - "batiComorosSt. Kitts và NevisTriều TiênHàn QuốcKuwaitQuần đảo CaymanKaza" + - "khstanLàoLi-băngSt. LuciaLiechtensteinSri LankaLiberiaLesothoLitvaLuxemb" + - "ourgLatviaLibyaMa-rốcMonacoMoldovaMontenegroSt. MartinMadagascarQuần đảo" + - " MarshallMacedoniaMaliMyanmar (Miến Điện)Mông CổMacao, Trung QuốcQuần đả" + - "o Bắc MarianaMartiniqueMauritaniaMontserratMaltaMauritiusMaldivesMalawiM" + - "exicoMalaysiaMozambiqueNamibiaNew CaledoniaNigerĐảo NorfolkNigeriaNicara" + - "guaHà LanNa UyNepalNauruNiueNew ZealandOmanPanamaPeruPolynesia thuộc Phá" + - "pPapua New GuineaPhilippinesPakistanBa LanSaint Pierre và MiquelonQuần đ" + - "ảo PitcairnPuerto RicoLãnh thổ PalestineBồ Đào NhaPalauParaguayQatarVù" + - "ng xa xôi thuộc Châu Đại DươngRéunionRomaniaSerbiaNgaRwandaẢ Rập Xê-útQu" + - "ần đảo SolomonSeychellesSudanThụy ĐiểnSingaporeSt. HelenaSloveniaSvalb" + - "ard và Jan MayenSlovakiaSierra LeoneSan MarinoSenegalSomaliaSurinameNam " + - "SudanSão Tomé và PríncipeEl SalvadorSint MaartenSyriaSwazilandTristan da" + - " CunhaQuần đảo Turks và CaicosChadLãnh thổ phía Nam Thuộc PhápTogoThái L" + - "anTajikistanTokelauTimor-LesteTurkmenistanTunisiaTongaThổ Nhĩ KỳTrinidad" + - " và TobagoTuvaluĐài LoanTanzaniaUkrainaUgandaCác tiểu đảo xa của Hoa KỳL" + - "iên hiệp quốcHoa KỳUruguayUzbekistanThành VaticanSt. Vincent và Grenadin" + - "esVenezuelaQuần đảo Virgin thuộc AnhQuần đảo Virgin thuộc MỹViệt NamVanu" + - "atuWallis và FutunaSamoaKosovoYemenMayotteNam PhiZambiaZimbabweVùng khôn" + - "g xác địnhThế giớiChâu PhiBắc MỹNam MỹChâu Đại DươngTây PhiTrung MỹĐông " + - "PhiBắc PhiTrung PhiMiền Nam Châu PhiChâu MỹMiền Bắc Châu MỹCa-ri-bêĐông " + - "ÁNam ÁĐông Nam ÁNam ÂuÚc và New ZealandMelanesiaVùng MicronesianPolynes" + - "iaChâu ÁTrung ÁTây ÁChâu ÂuĐông ÂuBắc ÂuTây ÂuChâu Mỹ La-tinh" - -var viRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0010, 0x0017, 0x004a, 0x0055, 0x0068, 0x0070, 0x0077, - 0x007e, 0x0084, 0x008d, 0x0096, 0x00af, 0x00b2, 0x00bb, 0x00c0, - 0x00d4, 0x00de, 0x00f4, 0x00fc, 0x0106, 0x010a, 0x0116, 0x011e, - 0x0125, 0x012c, 0x0131, 0x0140, 0x0147, 0x014d, 0x0154, 0x0165, - 0x016b, 0x0172, 0x0178, 0x0185, 0x018d, 0x0194, 0x019a, 0x01a0, - 0x01bd, 0x01cd, 0x01e2, 0x01f5, 0x01ff, 0x020f, 0x0221, 0x0226, - 0x022e, 0x023a, 0x0242, 0x0253, 0x025d, 0x0261, 0x026b, 0x0273, - 0x0285, 0x0289, 0x028d, 0x0293, 0x029f, 0x02a7, 0x02b2, 0x02ba, - // Entry 40 - 7F - 0x02ce, 0x02d5, 0x02e6, 0x02ed, 0x02f4, 0x02fc, 0x0307, 0x030e, - 0x031a, 0x0322, 0x0336, 0x034c, 0x0356, 0x035a, 0x0370, 0x037a, - 0x038d, 0x0392, 0x0397, 0x03a9, 0x03b0, 0x03b6, 0x03ca, 0x03d2, - 0x03d7, 0x03e0, 0x03e9, 0x03ef, 0x03f5, 0x03ff, 0x0412, 0x041a, - 0x0442, 0x044b, 0x044f, 0x045c, 0x0462, 0x047c, 0x049c, 0x04a4, - 0x04ab, 0x04b0, 0x04b7, 0x04cb, 0x04d4, 0x04db, 0x04e1, 0x04eb, - 0x04f5, 0x051f, 0x0523, 0x0527, 0x052e, 0x0533, 0x0539, 0x0540, - 0x0546, 0x0552, 0x0557, 0x0561, 0x056a, 0x0572, 0x0579, 0x058c, - // Entry 80 - BF - 0x0599, 0x05a4, 0x05aa, 0x05be, 0x05c8, 0x05cc, 0x05d4, 0x05dd, - 0x05ea, 0x05f3, 0x05fa, 0x0601, 0x0606, 0x0610, 0x0616, 0x061b, - 0x0623, 0x0629, 0x0630, 0x063a, 0x0644, 0x064e, 0x0664, 0x066d, - 0x0671, 0x0689, 0x0693, 0x06a6, 0x06c1, 0x06cb, 0x06d5, 0x06df, - 0x06e4, 0x06ed, 0x06f5, 0x06fb, 0x0701, 0x0709, 0x0713, 0x071a, - 0x0727, 0x072c, 0x073a, 0x0741, 0x074a, 0x0751, 0x0756, 0x075b, - 0x0760, 0x0764, 0x076f, 0x0773, 0x0779, 0x077d, 0x0794, 0x07a4, - 0x07af, 0x07b7, 0x07bd, 0x07d6, 0x07ec, 0x07f7, 0x080c, 0x081a, - // Entry C0 - FF - 0x081f, 0x0827, 0x082c, 0x0856, 0x085e, 0x0865, 0x086b, 0x086e, - 0x0874, 0x0885, 0x089a, 0x08a4, 0x08a9, 0x08b7, 0x08c0, 0x08ca, - 0x08d2, 0x08e8, 0x08f0, 0x08fc, 0x0906, 0x090d, 0x0914, 0x091c, - 0x0925, 0x093d, 0x0948, 0x0954, 0x0959, 0x0962, 0x0972, 0x0990, - 0x0994, 0x09b7, 0x09bb, 0x09c4, 0x09ce, 0x09d5, 0x09e0, 0x09ec, - 0x09f3, 0x09f8, 0x0a07, 0x0a1a, 0x0a20, 0x0a2a, 0x0a32, 0x0a39, - 0x0a3f, 0x0a63, 0x0a76, 0x0a7e, 0x0a85, 0x0a8f, 0x0a9d, 0x0ab7, - 0x0ac0, 0x0ae0, 0x0b01, 0x0b0b, 0x0b12, 0x0b23, 0x0b28, 0x0b2e, - // Entry 100 - 13F - 0x0b33, 0x0b3a, 0x0b41, 0x0b47, 0x0b4f, 0x0b68, 0x0b74, 0x0b7d, - 0x0b87, 0x0b8f, 0x0ba3, 0x0bab, 0x0bb5, 0x0bbf, 0x0bc8, 0x0bd1, - 0x0be5, 0x0bef, 0x0c06, 0x0c0f, 0x0c18, 0x0c1e, 0x0c2b, 0x0c32, - 0x0c45, 0x0c4e, 0x0c5f, 0x0c68, 0x0c70, 0x0c78, 0x0c7f, 0x0c88, - 0x0c92, 0x0c9b, 0x0ca3, 0x0ca3, 0x0cb5, -} // Size: 610 bytes - -const zhRegionStr string = "" + // Size: 3319 bytes - "阿森松岛安道尔阿拉伯联合酋长国阿富汗安提瓜和巴布达安圭拉阿尔巴尼亚亚美尼亚安哥拉南极洲阿根廷美属萨摩亚奥地利澳大利亚阿鲁巴奥兰群岛阿塞拜疆波斯尼" + - "亚和黑塞哥维那巴巴多斯孟加拉国比利时布基纳法索保加利亚巴林布隆迪贝宁圣巴泰勒米百慕大文莱玻利维亚荷属加勒比区巴西巴哈马不丹布韦岛博茨瓦纳白俄" + - "罗斯伯利兹加拿大科科斯(基林)群岛刚果(金)中非共和国刚果(布)瑞士科特迪瓦库克群岛智利喀麦隆中国哥伦比亚克利珀顿岛哥斯达黎加古巴佛得角库拉" + - "索圣诞岛塞浦路斯捷克德国迪戈加西亚岛吉布提丹麦多米尼克多米尼加共和国阿尔及利亚休达及梅利利亚厄瓜多尔爱沙尼亚埃及西撒哈拉厄立特里亚西班牙埃塞" + - "俄比亚欧盟欧元区芬兰斐济福克兰群岛密克罗尼西亚法罗群岛法国加蓬英国格林纳达格鲁吉亚法属圭亚那根西岛加纳直布罗陀格陵兰冈比亚几内亚瓜德罗普赤道" + - "几内亚希腊南乔治亚和南桑威奇群岛危地马拉关岛几内亚比绍圭亚那中国香港特别行政区赫德岛和麦克唐纳群岛洪都拉斯克罗地亚海地匈牙利加纳利群岛印度尼" + - "西亚爱尔兰以色列马恩岛印度英属印度洋领地伊拉克伊朗冰岛意大利泽西岛牙买加约旦日本肯尼亚吉尔吉斯斯坦柬埔寨基里巴斯科摩罗圣基茨和尼维斯朝鲜韩国" + - "科威特开曼群岛哈萨克斯坦老挝黎巴嫩圣卢西亚列支敦士登斯里兰卡利比里亚莱索托立陶宛卢森堡拉脱维亚利比亚摩洛哥摩纳哥摩尔多瓦黑山法属圣马丁马达加" + - "斯加马绍尔群岛马其顿马里缅甸蒙古中国澳门特别行政区北马里亚纳群岛马提尼克毛里塔尼亚蒙特塞拉特马耳他毛里求斯马尔代夫马拉维墨西哥马来西亚莫桑比" + - "克纳米比亚新喀里多尼亚尼日尔诺福克岛尼日利亚尼加拉瓜荷兰挪威尼泊尔瑙鲁纽埃新西兰阿曼巴拿马秘鲁法属波利尼西亚巴布亚新几内亚菲律宾巴基斯坦波兰" + - "圣皮埃尔和密克隆群岛皮特凯恩群岛波多黎各巴勒斯坦领土葡萄牙帕劳巴拉圭卡塔尔大洋洲边远群岛留尼汪罗马尼亚塞尔维亚俄罗斯卢旺达沙特阿拉伯所罗门群" + - "岛塞舌尔苏丹瑞典新加坡圣赫勒拿斯洛文尼亚斯瓦尔巴和扬马延斯洛伐克塞拉利昂圣马力诺塞内加尔索马里苏里南南苏丹圣多美和普林西比萨尔瓦多荷属圣马丁" + - "叙利亚斯威士兰特里斯坦-达库尼亚群岛特克斯和凯科斯群岛乍得法属南部领地多哥泰国塔吉克斯坦托克劳东帝汶土库曼斯坦突尼斯汤加土耳其特立尼达和多巴" + - "哥图瓦卢台湾坦桑尼亚乌克兰乌干达美国本土外小岛屿联合国美国乌拉圭乌兹别克斯坦梵蒂冈圣文森特和格林纳丁斯委内瑞拉英属维尔京群岛美属维尔京群岛越" + - "南瓦努阿图瓦利斯和富图纳萨摩亚科索沃也门马约特南非赞比亚津巴布韦未知地区世界非洲北美洲南美洲大洋洲西非中美洲东非北非中非南部非洲美洲美洲北部" + - "加勒比地区东亚南亚东南亚南欧澳大拉西亚美拉尼西亚密克罗尼西亚地区玻利尼西亚亚洲中亚西亚欧洲东欧北欧西欧拉丁美洲" - -var zhRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063, - 0x006f, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a2, 0x00ae, 0x00b7, - 0x00c3, 0x00cf, 0x00ed, 0x00f9, 0x0105, 0x010e, 0x011d, 0x0129, - 0x012f, 0x0138, 0x013e, 0x014d, 0x0156, 0x015c, 0x0168, 0x017a, - 0x0180, 0x0189, 0x018f, 0x0198, 0x01a4, 0x01b0, 0x01b9, 0x01c2, - 0x01dd, 0x01ec, 0x01fb, 0x020a, 0x0210, 0x021c, 0x0228, 0x022e, - 0x0237, 0x023d, 0x0249, 0x0258, 0x0267, 0x026d, 0x0276, 0x027f, - 0x0288, 0x0294, 0x029a, 0x02a0, 0x02b2, 0x02bb, 0x02c1, 0x02cd, - // Entry 40 - 7F - 0x02e2, 0x02f1, 0x0306, 0x0312, 0x031e, 0x0324, 0x0330, 0x033f, - 0x0348, 0x0357, 0x035d, 0x0366, 0x036c, 0x0372, 0x0381, 0x0393, - 0x039f, 0x03a5, 0x03ab, 0x03b1, 0x03bd, 0x03c9, 0x03d8, 0x03e1, - 0x03e7, 0x03f3, 0x03fc, 0x0405, 0x040e, 0x041a, 0x0429, 0x042f, - 0x0450, 0x045c, 0x0462, 0x0471, 0x047a, 0x0495, 0x04b3, 0x04bf, - 0x04cb, 0x04d1, 0x04da, 0x04e9, 0x04f8, 0x0501, 0x050a, 0x0513, - 0x0519, 0x052e, 0x0537, 0x053d, 0x0543, 0x054c, 0x0555, 0x055e, - 0x0564, 0x056a, 0x0573, 0x0585, 0x058e, 0x059a, 0x05a3, 0x05b8, - // Entry 80 - BF - 0x05be, 0x05c4, 0x05cd, 0x05d9, 0x05e8, 0x05ee, 0x05f7, 0x0603, - 0x0612, 0x061e, 0x062a, 0x0633, 0x063c, 0x0645, 0x0651, 0x065a, - 0x0663, 0x066c, 0x0678, 0x067e, 0x068d, 0x069c, 0x06ab, 0x06b4, - 0x06ba, 0x06c0, 0x06c6, 0x06e1, 0x06f6, 0x0702, 0x0711, 0x0720, - 0x0729, 0x0735, 0x0741, 0x074a, 0x0753, 0x075f, 0x076b, 0x0777, - 0x0789, 0x0792, 0x079e, 0x07aa, 0x07b6, 0x07bc, 0x07c2, 0x07cb, - 0x07d1, 0x07d7, 0x07e0, 0x07e6, 0x07ef, 0x07f5, 0x080a, 0x081f, - 0x0828, 0x0834, 0x083a, 0x0858, 0x086a, 0x0876, 0x0888, 0x0891, - // Entry C0 - FF - 0x0897, 0x08a0, 0x08a9, 0x08be, 0x08c7, 0x08d3, 0x08df, 0x08e8, - 0x08f1, 0x0900, 0x090f, 0x0918, 0x091e, 0x0924, 0x092d, 0x0939, - 0x0948, 0x0960, 0x096c, 0x0978, 0x0984, 0x0990, 0x0999, 0x09a2, - 0x09ab, 0x09c3, 0x09cf, 0x09de, 0x09e7, 0x09f3, 0x0a12, 0x0a2d, - 0x0a33, 0x0a45, 0x0a4b, 0x0a51, 0x0a60, 0x0a69, 0x0a72, 0x0a81, - 0x0a8a, 0x0a90, 0x0a99, 0x0ab1, 0x0aba, 0x0ac0, 0x0acc, 0x0ad5, - 0x0ade, 0x0af6, 0x0aff, 0x0b05, 0x0b0e, 0x0b20, 0x0b29, 0x0b47, - 0x0b53, 0x0b68, 0x0b7d, 0x0b83, 0x0b8f, 0x0ba4, 0x0bad, 0x0bb6, - // Entry 100 - 13F - 0x0bbc, 0x0bc5, 0x0bcb, 0x0bd4, 0x0be0, 0x0bec, 0x0bf2, 0x0bf8, - 0x0c01, 0x0c0a, 0x0c13, 0x0c19, 0x0c22, 0x0c28, 0x0c2e, 0x0c34, - 0x0c40, 0x0c46, 0x0c52, 0x0c61, 0x0c67, 0x0c6d, 0x0c76, 0x0c7c, - 0x0c8b, 0x0c9a, 0x0cb2, 0x0cc1, 0x0cc7, 0x0ccd, 0x0cd3, 0x0cd9, - 0x0cdf, 0x0ce5, 0x0ceb, 0x0ceb, 0x0cf7, -} // Size: 610 bytes - -const zhHantRegionStr string = "" + // Size: 3264 bytes - "阿森松島安道爾阿拉伯聯合大公國阿富汗安地卡及巴布達安奎拉阿爾巴尼亞亞美尼亞安哥拉南極洲阿根廷美屬薩摩亞奧地利澳洲荷屬阿魯巴奧蘭群島亞塞拜然波士尼" + - "亞與赫塞哥維納巴貝多孟加拉比利時布吉納法索保加利亞巴林蒲隆地貝南聖巴瑟米百慕達汶萊玻利維亞荷蘭加勒比區巴西巴哈馬不丹布威島波札那白俄羅斯貝里" + - "斯加拿大科克斯(基靈)群島剛果(金夏沙)中非共和國剛果(布拉薩)瑞士象牙海岸庫克群島智利喀麥隆中國哥倫比亞克里派頓島哥斯大黎加古巴維德角庫拉" + - "索聖誕島賽普勒斯捷克德國迪亞哥加西亞島吉布地丹麥多米尼克多明尼加共和國阿爾及利亞休達與梅利利亞厄瓜多愛沙尼亞埃及西撒哈拉厄利垂亞西班牙衣索比" + - "亞歐盟歐元區芬蘭斐濟福克蘭群島密克羅尼西亞法羅群島法國加彭英國格瑞那達喬治亞法屬圭亞那根息迦納直布羅陀格陵蘭甘比亞幾內亞瓜地洛普赤道幾內亞希" + - "臘南喬治亞與南三明治群島瓜地馬拉關島幾內亞比索蓋亞那中國香港特別行政區赫德島及麥唐納群島宏都拉斯克羅埃西亞海地匈牙利加那利群島印尼愛爾蘭以色" + - "列曼島印度英屬印度洋領地伊拉克伊朗冰島義大利澤西島牙買加約旦日本肯亞吉爾吉斯柬埔寨吉里巴斯葛摩聖克里斯多福及尼維斯北韓南韓科威特開曼群島哈薩" + - "克寮國黎巴嫩聖露西亞列支敦斯登斯里蘭卡賴比瑞亞賴索托立陶宛盧森堡拉脫維亞利比亞摩洛哥摩納哥摩爾多瓦蒙特內哥羅法屬聖馬丁馬達加斯加馬紹爾群島馬" + - "其頓馬利緬甸蒙古中國澳門特別行政區北馬利安納群島馬丁尼克茅利塔尼亞蒙哲臘馬爾他模里西斯馬爾地夫馬拉威墨西哥馬來西亞莫三比克納米比亞新喀里多尼" + - "亞尼日諾福克島奈及利亞尼加拉瓜荷蘭挪威尼泊爾諾魯紐埃島紐西蘭阿曼巴拿馬秘魯法屬玻里尼西亞巴布亞紐幾內亞菲律賓巴基斯坦波蘭聖皮埃與密克隆群島皮" + - "特肯群島波多黎各巴勒斯坦自治區葡萄牙帛琉巴拉圭卡達大洋洲邊疆群島留尼旺羅馬尼亞塞爾維亞俄羅斯盧安達沙烏地阿拉伯索羅門群島塞席爾蘇丹瑞典新加坡" + - "聖赫勒拿島斯洛維尼亞挪威屬斯瓦巴及尖棉斯洛伐克獅子山聖馬利諾塞內加爾索馬利亞蘇利南南蘇丹聖多美普林西比薩爾瓦多荷屬聖馬丁敘利亞史瓦濟蘭特里斯" + - "坦達庫尼亞群島土克斯及開科斯群島查德法屬南部屬地多哥泰國塔吉克托克勞群島東帝汶土庫曼突尼西亞東加土耳其千里達及托巴哥吐瓦魯台灣坦尚尼亞烏克蘭" + - "烏干達美國本土外小島嶼聯合國美國烏拉圭烏茲別克梵蒂岡聖文森及格瑞那丁委內瑞拉英屬維京群島美屬維京群島越南萬那杜瓦利斯群島和富圖那群島薩摩亞科" + - "索沃葉門馬約特島南非尚比亞辛巴威未知區域世界非洲北美洲南美洲大洋洲西非中美東非北非中非非洲南部美洲北美加勒比海東亞南亞東南亞南歐澳洲與紐西蘭" + - "美拉尼西亞密克羅尼西亞群島玻里尼西亞亞洲中亞西亞歐洲東歐北歐西歐拉丁美洲" - -var zhHantRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x000c, 0x0015, 0x002d, 0x0036, 0x004b, 0x0054, 0x0063, - 0x006f, 0x0078, 0x0081, 0x008a, 0x0099, 0x00a2, 0x00a8, 0x00b7, - 0x00c3, 0x00cf, 0x00ed, 0x00f6, 0x00ff, 0x0108, 0x0117, 0x0123, - 0x0129, 0x0132, 0x0138, 0x0144, 0x014d, 0x0153, 0x015f, 0x0171, - 0x0177, 0x0180, 0x0186, 0x018f, 0x0198, 0x01a4, 0x01ad, 0x01b6, - 0x01d1, 0x01e6, 0x01f5, 0x020a, 0x0210, 0x021c, 0x0228, 0x022e, - 0x0237, 0x023d, 0x0249, 0x0258, 0x0267, 0x026d, 0x0276, 0x027f, - 0x0288, 0x0294, 0x029a, 0x02a0, 0x02b5, 0x02be, 0x02c4, 0x02d0, - // Entry 40 - 7F - 0x02e5, 0x02f4, 0x0309, 0x0312, 0x031e, 0x0324, 0x0330, 0x033c, - 0x0345, 0x0351, 0x0357, 0x0360, 0x0366, 0x036c, 0x037b, 0x038d, - 0x0399, 0x039f, 0x03a5, 0x03ab, 0x03b7, 0x03c0, 0x03cf, 0x03d5, - 0x03db, 0x03e7, 0x03f0, 0x03f9, 0x0402, 0x040e, 0x041d, 0x0423, - 0x0444, 0x0450, 0x0456, 0x0465, 0x046e, 0x0489, 0x04a4, 0x04b0, - 0x04bf, 0x04c5, 0x04ce, 0x04dd, 0x04e3, 0x04ec, 0x04f5, 0x04fb, - 0x0501, 0x0516, 0x051f, 0x0525, 0x052b, 0x0534, 0x053d, 0x0546, - 0x054c, 0x0552, 0x0558, 0x0564, 0x056d, 0x0579, 0x057f, 0x059d, - // Entry 80 - BF - 0x05a3, 0x05a9, 0x05b2, 0x05be, 0x05c7, 0x05cd, 0x05d6, 0x05e2, - 0x05f1, 0x05fd, 0x0609, 0x0612, 0x061b, 0x0624, 0x0630, 0x0639, - 0x0642, 0x064b, 0x0657, 0x0666, 0x0675, 0x0684, 0x0693, 0x069c, - 0x06a2, 0x06a8, 0x06ae, 0x06c9, 0x06de, 0x06ea, 0x06f9, 0x0702, - 0x070b, 0x0717, 0x0723, 0x072c, 0x0735, 0x0741, 0x074d, 0x0759, - 0x076b, 0x0771, 0x077d, 0x0789, 0x0795, 0x079b, 0x07a1, 0x07aa, - 0x07b0, 0x07b9, 0x07c2, 0x07c8, 0x07d1, 0x07d7, 0x07ec, 0x0801, - 0x080a, 0x0816, 0x081c, 0x0837, 0x0846, 0x0852, 0x0867, 0x0870, - // Entry C0 - FF - 0x0876, 0x087f, 0x0885, 0x089a, 0x08a3, 0x08af, 0x08bb, 0x08c4, - 0x08cd, 0x08df, 0x08ee, 0x08f7, 0x08fd, 0x0903, 0x090c, 0x091b, - 0x092a, 0x0945, 0x0951, 0x095a, 0x0966, 0x0972, 0x097e, 0x0987, - 0x0990, 0x09a5, 0x09b1, 0x09c0, 0x09c9, 0x09d5, 0x09f3, 0x0a0e, - 0x0a14, 0x0a26, 0x0a2c, 0x0a32, 0x0a3b, 0x0a4a, 0x0a53, 0x0a5c, - 0x0a68, 0x0a6e, 0x0a77, 0x0a8c, 0x0a95, 0x0a9b, 0x0aa7, 0x0ab0, - 0x0ab9, 0x0ad1, 0x0ada, 0x0ae0, 0x0ae9, 0x0af5, 0x0afe, 0x0b16, - 0x0b22, 0x0b34, 0x0b46, 0x0b4c, 0x0b55, 0x0b76, 0x0b7f, 0x0b88, - // Entry 100 - 13F - 0x0b8e, 0x0b9a, 0x0ba0, 0x0ba9, 0x0bb2, 0x0bbe, 0x0bc4, 0x0bca, - 0x0bd3, 0x0bdc, 0x0be5, 0x0beb, 0x0bf1, 0x0bf7, 0x0bfd, 0x0c03, - 0x0c0f, 0x0c15, 0x0c1b, 0x0c27, 0x0c2d, 0x0c33, 0x0c3c, 0x0c42, - 0x0c54, 0x0c63, 0x0c7b, 0x0c8a, 0x0c90, 0x0c96, 0x0c9c, 0x0ca2, - 0x0ca8, 0x0cae, 0x0cb4, 0x0cb4, 0x0cc0, -} // Size: 610 bytes - -const zuRegionStr string = "" + // Size: 3566 bytes - "i-Ascension Islandi-Andorrai-United Arab Emiratesi-Afghanistani-Antigua " + - "ne-Barbudai-Anguillai-Albaniai-Armeniai-Angolai-Antarcticai-Argentinai-A" + - "merican Samoai-Austriai-Australiai-Arubai-Åland Islandsi-Azerbaijani-Bos" + - "nia ne-Herzegovinai-Barbadosi-Bangladeshi-Belgiumi-Burkina Fasoi-Bulgari" + - "ai-Bahraini-Burundii-Benini-Saint Barthélemyi-Bermudai-Bruneii-Boliviai-" + - "Caribbean Netherlandsi-Brazili-Bahamasi-Bhutani-Bouvet IslandiBotswanai-" + - "Belarusi-Belizei-Canadai-Cocos (Keeling) Islandsi-Congo - Kinshasai-Cent" + - "ral African Republici-Congo - Brazzavillei-Switzerlandi-Côte d’Ivoirei-C" + - "ook Islandsi-Chilei-Camerooni-Chinai-Colombiai-Clipperton Islandi-Costa " + - "Ricai-Cubai-Cape Verdei-Curaçaoi-Christmas Islandi-Cyprusi-Czechiai-Germ" + - "anyi-Diego Garciai-Djiboutii-Denmarki-Dominicai-Dominican Republici-Alge" + - "riai-Cueta ne-Melillai-Ecuadori-Estoniai-Egypti-Western Saharai-Eritreai" + - "-Spaini-Ethiopiai-European UnionEZi-Finlandi-Fijii-Falkland Islandsi-Mic" + - "ronesiai-Faroe Islandsi-Francei-Gaboni-United Kingdomi-Grenadai-Georgiai" + - "-French Guianai-Guernseyi-Ghanai-Gibraltari-Greenlandi-Gambiai-Guineai-G" + - "uadeloupei-Equatorial Guineai-Greecei-South Georgia ne-South Sandwich Is" + - "landsi-Guatemalai-Guami-Guinea-Bissaui-Guyanai-Hong Kong SAR Chinai-Hear" + - "d Island ne-McDonald Islandsi-Hondurasi-Croatiai-Haitii-Hungaryi-Canary " + - "Islandsi-Indonesiai-Irelandkwa-Israeli-Isle of Mani-Indiai-British India" + - "n Ocean Territoryi-Iraqi-Irani-Icelandi-Italyi-Jerseyi-Jamaicai-Jordani-" + - "Japani-Kenyai-Kyrgyzstani-Cambodiai-Kiribatii-Comorosi-Saint Kitts ne-Ne" + - "visi-North Koreai-South Koreai-Kuwaiti-Cayman Islandsi-Kazakhstani-Laosi" + - "-Lebanoni-Saint Luciai-Liechtensteini-Sri Lankai-LiberiaiLesothoi-Lithua" + - "niai-Luxembourgi-Latviai-Libyai-Moroccoi-Monacoi-Moldovai-Montenegroi-Sa" + - "int Martini-Madagascari-Marshall Islandsi-MacedoniaiMalii-Myanmar (Burma" + - ")i-Mongoliai-Macau SAR Chinai-Northern Mariana Islandsi-Martiniquei-Maur" + - "itaniai-Montserrati-Maltai-Mauritiusi-MaldivesiMalawii-Mexicoi-Malaysiai" + - "-Mozambiquei-Namibiai-New Caledoniai-Nigeri-Norfolk Islandi-Nigeriai-Nic" + - "araguai-Netherlandsi-Norwayi-Nepali-Naurui-Niuei-New Zealandi-Omani-Pana" + - "mai-Perui-French Polynesiai-Papua New Guineai-Philippinesi-Pakistani-Pol" + - "andi-Saint Pierre kanye ne-Miqueloni-Pitcairn Islandsi-Puerto Ricoi-Pale" + - "stinian Territoriesi-Portugali-Palaui-Paraguayi-Qatari-Outlying Oceaniai" + - "-Réunioni-Romaniai-Serbiai-Russiai-Rwandai-Saudi Arabiai-Solomon Islands" + - "i-Seychellesi-Sudani-Swedeni-Singaporei-St. Helenai-Sloveniai-Svalbard n" + - "e-Jan Mayeni-Slovakiai-Sierra Leonei-San Marinoi-Senegali-Somaliai-Surin" + - "amei-South Sudani-São Tomé kanye ne-Príncipei-El Salvadori-Sint Maarteni" + - "-Syriai-Swazilandi-Tristan da Cunhai-Turks ne-Caicos Islandsi-Chadi-Fren" + - "ch Southern Territoriesi-Togoi-Thailandi-Tajikistani-Tokelaui-Timor-Lest" + - "ei-Turkmenistani-Tunisiai-Tongai-Turkeyi-Trinidad ne-Tobagoi-Tuvalui-Tai" + - "wani-Tanzaniai-Ukrainei-Ugandai-U.S. Minor Outlying IslandsI-United Nati" + - "onsi-United Statesi-Uruguayi-Uzbekistani-Vatican Cityi-Saint Vincent ne-" + - "Grenadinesi-Venezuelai-British Virgin Islandsi-U.S. Virgin Islandsi-Viet" + - "nami-Vanuatui-Wallis ne-Futunai-Samoai-Kosovoi-Yemeni-MayotteiNingizimu " + - "Afrikai-ZambiaiZimbabweiSifunda esingaziwaumhlabai-Africai-North America" + - "i-South Americai-Oceaniai-Western Africai-Central Americai-Eastern Afric" + - "ai-Northern Africai-Middle Africai-Southern Africai-Americasi-Northern A" + - "mericai-Caribbeani-Eastern Asiai-Southern Asiai-South-Eastern Asiai-Sout" + - "hern Europei-Australasiai-Melanesiai-Micronesian Regioni-Polynesiai-Asia" + - "i-Central Asiai-Western Asiai-Europei-Eastern Europei-Northern Europei-W" + - "estern Europei-Latin America" - -var zuRegionIdx = []uint16{ // 293 elements - // Entry 0 - 3F - 0x0000, 0x0012, 0x001b, 0x0031, 0x003e, 0x0052, 0x005c, 0x0065, - 0x006e, 0x0076, 0x0082, 0x008d, 0x009d, 0x00a6, 0x00b1, 0x00b8, - 0x00c8, 0x00d4, 0x00eb, 0x00f5, 0x0101, 0x010a, 0x0118, 0x0122, - 0x012b, 0x0134, 0x013b, 0x014e, 0x0157, 0x015f, 0x0168, 0x017f, - 0x0187, 0x0190, 0x0198, 0x01a7, 0x01b0, 0x01b9, 0x01c1, 0x01c9, - 0x01e2, 0x01f4, 0x020e, 0x0223, 0x0230, 0x0242, 0x0250, 0x0257, - 0x0261, 0x0268, 0x0272, 0x0285, 0x0291, 0x0297, 0x02a3, 0x02ad, - 0x02bf, 0x02c7, 0x02d0, 0x02d9, 0x02e7, 0x02f1, 0x02fa, 0x0304, - // Entry 40 - 7F - 0x0318, 0x0321, 0x0333, 0x033c, 0x0345, 0x034c, 0x035c, 0x0365, - 0x036c, 0x0376, 0x0386, 0x0388, 0x0391, 0x0397, 0x03a9, 0x03b5, - 0x03c4, 0x03cc, 0x03d3, 0x03e3, 0x03ec, 0x03f5, 0x0404, 0x040e, - 0x0415, 0x0420, 0x042b, 0x0433, 0x043b, 0x0447, 0x045a, 0x0462, - 0x048b, 0x0496, 0x049c, 0x04ab, 0x04b3, 0x04c8, 0x04ea, 0x04f4, - 0x04fd, 0x0504, 0x050d, 0x051d, 0x0528, 0x0531, 0x053b, 0x0548, - 0x054f, 0x056f, 0x0575, 0x057b, 0x0584, 0x058b, 0x0593, 0x059c, - 0x05a4, 0x05ab, 0x05b2, 0x05be, 0x05c8, 0x05d2, 0x05db, 0x05f1, - // Entry 80 - BF - 0x05fe, 0x060b, 0x0613, 0x0623, 0x062f, 0x0635, 0x063e, 0x064b, - 0x065a, 0x0665, 0x066e, 0x0676, 0x0681, 0x068d, 0x0695, 0x069c, - 0x06a5, 0x06ad, 0x06b6, 0x06c2, 0x06d0, 0x06dc, 0x06ee, 0x06f9, - 0x06fe, 0x070f, 0x0719, 0x072a, 0x0744, 0x0750, 0x075c, 0x0768, - 0x076f, 0x077a, 0x0784, 0x078b, 0x0793, 0x079d, 0x07a9, 0x07b2, - 0x07c1, 0x07c8, 0x07d8, 0x07e1, 0x07ec, 0x07f9, 0x0801, 0x0808, - 0x080f, 0x0815, 0x0822, 0x0828, 0x0830, 0x0836, 0x0848, 0x085a, - 0x0867, 0x0871, 0x0879, 0x0899, 0x08ab, 0x08b8, 0x08d1, 0x08db, - // Entry C0 - FF - 0x08e2, 0x08ec, 0x08f3, 0x0905, 0x090f, 0x0918, 0x0920, 0x0928, - 0x0930, 0x093e, 0x094f, 0x095b, 0x0962, 0x096a, 0x0975, 0x0981, - 0x098b, 0x09a2, 0x09ac, 0x09ba, 0x09c6, 0x09cf, 0x09d8, 0x09e2, - 0x09ef, 0x0a0e, 0x0a1b, 0x0a29, 0x0a30, 0x0a3b, 0x0a4d, 0x0a66, - 0x0a6c, 0x0a89, 0x0a8f, 0x0a99, 0x0aa5, 0x0aae, 0x0abb, 0x0ac9, - 0x0ad2, 0x0ad9, 0x0ae1, 0x0af5, 0x0afd, 0x0b05, 0x0b0f, 0x0b18, - 0x0b20, 0x0b3d, 0x0b4d, 0x0b5c, 0x0b65, 0x0b71, 0x0b7f, 0x0b9c, - 0x0ba7, 0x0bbf, 0x0bd4, 0x0bdd, 0x0be6, 0x0bf8, 0x0bff, 0x0c07, - // Entry 100 - 13F - 0x0c0e, 0x0c17, 0x0c28, 0x0c30, 0x0c39, 0x0c4c, 0x0c53, 0x0c5b, - 0x0c6a, 0x0c79, 0x0c82, 0x0c92, 0x0ca3, 0x0cb3, 0x0cc4, 0x0cd3, - 0x0ce4, 0x0cee, 0x0d00, 0x0d0b, 0x0d19, 0x0d28, 0x0d3c, 0x0d4d, - 0x0d5a, 0x0d65, 0x0d79, 0x0d84, 0x0d8a, 0x0d98, 0x0da6, 0x0dae, - 0x0dbe, 0x0dcf, 0x0ddf, 0x0ddf, 0x0dee, -} // Size: 610 bytes - -// Total size for region: 915280 bytes (915 KB) - -const numSupported = 261 - -const supported string = "" + // Size: 1105 bytes - "af|agq|ak|am|ar|ar-EG|ar-LY|ar-SA|as|asa|ast|az|az-Cyrl|bas|be|bem|bez|b" + - "g|bm|bn|bn-IN|bo|bo-IN|br|brx|bs|bs-Cyrl|ca|ccp|ce|cgg|chr|ckb|cs|cy|da|" + - "dav|de|de-AT|de-CH|de-LU|dje|dsb|dua|dyo|dz|ebu|ee|el|en|en-AU|en-CA|en-" + - "GB|en-IN|en-NZ|eo|es|es-419|es-AR|es-BO|es-CL|es-CO|es-CR|es-DO|es-EC|es" + - "-GT|es-HN|es-MX|es-NI|es-PA|es-PE|es-PR|es-PY|es-SV|es-US|es-VE|et|eu|ew" + - "o|fa|fa-AF|ff|fi|fil|fo|fr|fr-BE|fr-CA|fr-CH|fur|fy|ga|gd|gl|gsw|gu|guz|" + - "gv|ha|haw|he|hi|hr|hsb|hu|hy|id|ig|ii|is|it|ja|jgo|jmc|ka|kab|kam|kde|ke" + - "a|khq|ki|kk|kkj|kl|kln|km|kn|ko|ko-KP|kok|ks|ksb|ksf|ksh|kw|ky|lag|lb|lg" + - "|lkt|ln|lo|lrc|lt|lu|luo|luy|lv|mas|mer|mfe|mg|mgh|mgo|mk|ml|mn|mr|ms|mt" + - "|mua|my|mzn|naq|nd|ne|nl|nmg|nn|nnh|no|nus|nyn|om|or|os|pa|pa-Arab|pl|pr" + - "g|ps|pt|pt-PT|qu|rm|rn|ro|ro-MD|rof|ru|ru-UA|rw|rwk|sah|saq|sbp|sd|se|se" + - "-FI|seh|ses|sg|shi|shi-Latn|si|sk|sl|smn|sn|so|sq|sr|sr-Cyrl-BA|sr-Cyrl-" + - "ME|sr-Cyrl-XK|sr-Latn|sr-Latn-BA|sr-Latn-ME|sr-Latn-XK|sv|sv-FI|sw|sw-CD" + - "|sw-KE|ta|te|teo|tg|th|ti|tk|to|tr|tt|twq|tzm|ug|uk|ur|ur-IN|uz|uz-Arab|" + - "uz-Cyrl|vai|vai-Latn|vi|vun|wae|wo|xog|yav|yi|yo|yo-BJ|yue|yue-Hans|zgh|" + - "zh|zh-Hant|zh-Hant-HK|zu|" - -// Dictionary entries of frequent languages -var ( - af = Dictionary{ // af - nil, - header{afLangStr, afLangIdx}, - header{afScriptStr, afScriptIdx}, - header{afRegionStr, afRegionIdx}, - } - am = Dictionary{ // am - nil, - header{amLangStr, amLangIdx}, - header{amScriptStr, amScriptIdx}, - header{amRegionStr, amRegionIdx}, - } - ar = Dictionary{ // ar - nil, - header{arLangStr, arLangIdx}, - header{arScriptStr, arScriptIdx}, - header{arRegionStr, arRegionIdx}, - } - az = Dictionary{ // az - nil, - header{azLangStr, azLangIdx}, - header{azScriptStr, azScriptIdx}, - header{azRegionStr, azRegionIdx}, - } - bg = Dictionary{ // bg - nil, - header{bgLangStr, bgLangIdx}, - header{bgScriptStr, bgScriptIdx}, - header{bgRegionStr, bgRegionIdx}, - } - bn = Dictionary{ // bn - nil, - header{bnLangStr, bnLangIdx}, - header{bnScriptStr, bnScriptIdx}, - header{bnRegionStr, bnRegionIdx}, - } - ca = Dictionary{ // ca - nil, - header{caLangStr, caLangIdx}, - header{caScriptStr, caScriptIdx}, - header{caRegionStr, caRegionIdx}, - } - cs = Dictionary{ // cs - nil, - header{csLangStr, csLangIdx}, - header{csScriptStr, csScriptIdx}, - header{csRegionStr, csRegionIdx}, - } - da = Dictionary{ // da - nil, - header{daLangStr, daLangIdx}, - header{daScriptStr, daScriptIdx}, - header{daRegionStr, daRegionIdx}, - } - de = Dictionary{ // de - nil, - header{deLangStr, deLangIdx}, - header{deScriptStr, deScriptIdx}, - header{deRegionStr, deRegionIdx}, - } - el = Dictionary{ // el - nil, - header{elLangStr, elLangIdx}, - header{elScriptStr, elScriptIdx}, - header{elRegionStr, elRegionIdx}, - } - en = Dictionary{ // en - nil, - header{enLangStr, enLangIdx}, - header{enScriptStr, enScriptIdx}, - header{enRegionStr, enRegionIdx}, - } - enGB = Dictionary{ // en-GB - &en, - header{enGBLangStr, enGBLangIdx}, - header{enGBScriptStr, enGBScriptIdx}, - header{enGBRegionStr, enGBRegionIdx}, - } - es = Dictionary{ // es - nil, - header{esLangStr, esLangIdx}, - header{esScriptStr, esScriptIdx}, - header{esRegionStr, esRegionIdx}, - } - es419 = Dictionary{ // es-419 - &es, - header{es419LangStr, es419LangIdx}, - header{es419ScriptStr, es419ScriptIdx}, - header{es419RegionStr, es419RegionIdx}, - } - et = Dictionary{ // et - nil, - header{etLangStr, etLangIdx}, - header{etScriptStr, etScriptIdx}, - header{etRegionStr, etRegionIdx}, - } - fa = Dictionary{ // fa - nil, - header{faLangStr, faLangIdx}, - header{faScriptStr, faScriptIdx}, - header{faRegionStr, faRegionIdx}, - } - fi = Dictionary{ // fi - nil, - header{fiLangStr, fiLangIdx}, - header{fiScriptStr, fiScriptIdx}, - header{fiRegionStr, fiRegionIdx}, - } - fil = Dictionary{ // fil - nil, - header{filLangStr, filLangIdx}, - header{filScriptStr, filScriptIdx}, - header{filRegionStr, filRegionIdx}, - } - fr = Dictionary{ // fr - nil, - header{frLangStr, frLangIdx}, - header{frScriptStr, frScriptIdx}, - header{frRegionStr, frRegionIdx}, - } - frCA = Dictionary{ // fr-CA - &fr, - header{frCALangStr, frCALangIdx}, - header{frCAScriptStr, frCAScriptIdx}, - header{frCARegionStr, frCARegionIdx}, - } - gu = Dictionary{ // gu - nil, - header{guLangStr, guLangIdx}, - header{guScriptStr, guScriptIdx}, - header{guRegionStr, guRegionIdx}, - } - he = Dictionary{ // he - nil, - header{heLangStr, heLangIdx}, - header{heScriptStr, heScriptIdx}, - header{heRegionStr, heRegionIdx}, - } - hi = Dictionary{ // hi - nil, - header{hiLangStr, hiLangIdx}, - header{hiScriptStr, hiScriptIdx}, - header{hiRegionStr, hiRegionIdx}, - } - hr = Dictionary{ // hr - nil, - header{hrLangStr, hrLangIdx}, - header{hrScriptStr, hrScriptIdx}, - header{hrRegionStr, hrRegionIdx}, - } - hu = Dictionary{ // hu - nil, - header{huLangStr, huLangIdx}, - header{huScriptStr, huScriptIdx}, - header{huRegionStr, huRegionIdx}, - } - hy = Dictionary{ // hy - nil, - header{hyLangStr, hyLangIdx}, - header{hyScriptStr, hyScriptIdx}, - header{hyRegionStr, hyRegionIdx}, - } - id = Dictionary{ // id - nil, - header{idLangStr, idLangIdx}, - header{idScriptStr, idScriptIdx}, - header{idRegionStr, idRegionIdx}, - } - is = Dictionary{ // is - nil, - header{isLangStr, isLangIdx}, - header{isScriptStr, isScriptIdx}, - header{isRegionStr, isRegionIdx}, - } - it = Dictionary{ // it - nil, - header{itLangStr, itLangIdx}, - header{itScriptStr, itScriptIdx}, - header{itRegionStr, itRegionIdx}, - } - ja = Dictionary{ // ja - nil, - header{jaLangStr, jaLangIdx}, - header{jaScriptStr, jaScriptIdx}, - header{jaRegionStr, jaRegionIdx}, - } - ka = Dictionary{ // ka - nil, - header{kaLangStr, kaLangIdx}, - header{kaScriptStr, kaScriptIdx}, - header{kaRegionStr, kaRegionIdx}, - } - kk = Dictionary{ // kk - nil, - header{kkLangStr, kkLangIdx}, - header{kkScriptStr, kkScriptIdx}, - header{kkRegionStr, kkRegionIdx}, - } - km = Dictionary{ // km - nil, - header{kmLangStr, kmLangIdx}, - header{kmScriptStr, kmScriptIdx}, - header{kmRegionStr, kmRegionIdx}, - } - kn = Dictionary{ // kn - nil, - header{knLangStr, knLangIdx}, - header{knScriptStr, knScriptIdx}, - header{knRegionStr, knRegionIdx}, - } - ko = Dictionary{ // ko - nil, - header{koLangStr, koLangIdx}, - header{koScriptStr, koScriptIdx}, - header{koRegionStr, koRegionIdx}, - } - ky = Dictionary{ // ky - nil, - header{kyLangStr, kyLangIdx}, - header{kyScriptStr, kyScriptIdx}, - header{kyRegionStr, kyRegionIdx}, - } - lo = Dictionary{ // lo - nil, - header{loLangStr, loLangIdx}, - header{loScriptStr, loScriptIdx}, - header{loRegionStr, loRegionIdx}, - } - lt = Dictionary{ // lt - nil, - header{ltLangStr, ltLangIdx}, - header{ltScriptStr, ltScriptIdx}, - header{ltRegionStr, ltRegionIdx}, - } - lv = Dictionary{ // lv - nil, - header{lvLangStr, lvLangIdx}, - header{lvScriptStr, lvScriptIdx}, - header{lvRegionStr, lvRegionIdx}, - } - mk = Dictionary{ // mk - nil, - header{mkLangStr, mkLangIdx}, - header{mkScriptStr, mkScriptIdx}, - header{mkRegionStr, mkRegionIdx}, - } - ml = Dictionary{ // ml - nil, - header{mlLangStr, mlLangIdx}, - header{mlScriptStr, mlScriptIdx}, - header{mlRegionStr, mlRegionIdx}, - } - mn = Dictionary{ // mn - nil, - header{mnLangStr, mnLangIdx}, - header{mnScriptStr, mnScriptIdx}, - header{mnRegionStr, mnRegionIdx}, - } - mr = Dictionary{ // mr - nil, - header{mrLangStr, mrLangIdx}, - header{mrScriptStr, mrScriptIdx}, - header{mrRegionStr, mrRegionIdx}, - } - ms = Dictionary{ // ms - nil, - header{msLangStr, msLangIdx}, - header{msScriptStr, msScriptIdx}, - header{msRegionStr, msRegionIdx}, - } - my = Dictionary{ // my - nil, - header{myLangStr, myLangIdx}, - header{myScriptStr, myScriptIdx}, - header{myRegionStr, myRegionIdx}, - } - ne = Dictionary{ // ne - nil, - header{neLangStr, neLangIdx}, - header{neScriptStr, neScriptIdx}, - header{neRegionStr, neRegionIdx}, - } - nl = Dictionary{ // nl - nil, - header{nlLangStr, nlLangIdx}, - header{nlScriptStr, nlScriptIdx}, - header{nlRegionStr, nlRegionIdx}, - } - no = Dictionary{ // no - nil, - header{noLangStr, noLangIdx}, - header{noScriptStr, noScriptIdx}, - header{noRegionStr, noRegionIdx}, - } - pa = Dictionary{ // pa - nil, - header{paLangStr, paLangIdx}, - header{paScriptStr, paScriptIdx}, - header{paRegionStr, paRegionIdx}, - } - pl = Dictionary{ // pl - nil, - header{plLangStr, plLangIdx}, - header{plScriptStr, plScriptIdx}, - header{plRegionStr, plRegionIdx}, - } - pt = Dictionary{ // pt - nil, - header{ptLangStr, ptLangIdx}, - header{ptScriptStr, ptScriptIdx}, - header{ptRegionStr, ptRegionIdx}, - } - ptPT = Dictionary{ // pt-PT - &pt, - header{ptPTLangStr, ptPTLangIdx}, - header{ptPTScriptStr, ptPTScriptIdx}, - header{ptPTRegionStr, ptPTRegionIdx}, - } - ro = Dictionary{ // ro - nil, - header{roLangStr, roLangIdx}, - header{roScriptStr, roScriptIdx}, - header{roRegionStr, roRegionIdx}, - } - ru = Dictionary{ // ru - nil, - header{ruLangStr, ruLangIdx}, - header{ruScriptStr, ruScriptIdx}, - header{ruRegionStr, ruRegionIdx}, - } - si = Dictionary{ // si - nil, - header{siLangStr, siLangIdx}, - header{siScriptStr, siScriptIdx}, - header{siRegionStr, siRegionIdx}, - } - sk = Dictionary{ // sk - nil, - header{skLangStr, skLangIdx}, - header{skScriptStr, skScriptIdx}, - header{skRegionStr, skRegionIdx}, - } - sl = Dictionary{ // sl - nil, - header{slLangStr, slLangIdx}, - header{slScriptStr, slScriptIdx}, - header{slRegionStr, slRegionIdx}, - } - sq = Dictionary{ // sq - nil, - header{sqLangStr, sqLangIdx}, - header{sqScriptStr, sqScriptIdx}, - header{sqRegionStr, sqRegionIdx}, - } - sr = Dictionary{ // sr - nil, - header{srLangStr, srLangIdx}, - header{srScriptStr, srScriptIdx}, - header{srRegionStr, srRegionIdx}, - } - srLatn = Dictionary{ // sr-Latn - nil, - header{srLatnLangStr, srLatnLangIdx}, - header{srLatnScriptStr, srLatnScriptIdx}, - header{srLatnRegionStr, srLatnRegionIdx}, - } - sv = Dictionary{ // sv - nil, - header{svLangStr, svLangIdx}, - header{svScriptStr, svScriptIdx}, - header{svRegionStr, svRegionIdx}, - } - sw = Dictionary{ // sw - nil, - header{swLangStr, swLangIdx}, - header{swScriptStr, swScriptIdx}, - header{swRegionStr, swRegionIdx}, - } - ta = Dictionary{ // ta - nil, - header{taLangStr, taLangIdx}, - header{taScriptStr, taScriptIdx}, - header{taRegionStr, taRegionIdx}, - } - te = Dictionary{ // te - nil, - header{teLangStr, teLangIdx}, - header{teScriptStr, teScriptIdx}, - header{teRegionStr, teRegionIdx}, - } - th = Dictionary{ // th - nil, - header{thLangStr, thLangIdx}, - header{thScriptStr, thScriptIdx}, - header{thRegionStr, thRegionIdx}, - } - tr = Dictionary{ // tr - nil, - header{trLangStr, trLangIdx}, - header{trScriptStr, trScriptIdx}, - header{trRegionStr, trRegionIdx}, - } - uk = Dictionary{ // uk - nil, - header{ukLangStr, ukLangIdx}, - header{ukScriptStr, ukScriptIdx}, - header{ukRegionStr, ukRegionIdx}, - } - ur = Dictionary{ // ur - nil, - header{urLangStr, urLangIdx}, - header{urScriptStr, urScriptIdx}, - header{urRegionStr, urRegionIdx}, - } - uz = Dictionary{ // uz - nil, - header{uzLangStr, uzLangIdx}, - header{uzScriptStr, uzScriptIdx}, - header{uzRegionStr, uzRegionIdx}, - } - vi = Dictionary{ // vi - nil, - header{viLangStr, viLangIdx}, - header{viScriptStr, viScriptIdx}, - header{viRegionStr, viRegionIdx}, - } - zh = Dictionary{ // zh - nil, - header{zhLangStr, zhLangIdx}, - header{zhScriptStr, zhScriptIdx}, - header{zhRegionStr, zhRegionIdx}, - } - zhHant = Dictionary{ // zh-Hant - nil, - header{zhHantLangStr, zhHantLangIdx}, - header{zhHantScriptStr, zhHantScriptIdx}, - header{zhHantRegionStr, zhHantRegionIdx}, - } - zu = Dictionary{ // zu - nil, - header{zuLangStr, zuLangIdx}, - header{zuScriptStr, zuScriptIdx}, - header{zuRegionStr, zuRegionIdx}, - } -) - -// Total size for 79 entries: 10112 bytes (10 KB) - -// Number of keys: 223 -var ( - selfIndex = tagIndex{ - "afakamarasazbebgbmbnbobrbscacecscydadedzeeeleneoeseteufafffifofrfygagdgl" + - "gugvhahehihrhuhyidigiiisitjakakikkklkmknkokskwkylblglnloltlulvmgmkml" + - "mnmrmsmtmyndnenlnnnoomorospaplpsptqurmrnrorurwsdsesgsiskslsnsosqsrsv" + - "swtatetgthtitktotrttugukuruzviwoyiyozhzu", - "agqasaastbasbembezbrxccpcggchrckbdavdjedsbduadyoebuewofilfurgswguzhawhsb" + - "jgojmckabkamkdekeakhqkkjklnkokksbksfkshlaglktlrcluoluymasmermfemghmg" + - "omuamznnaqnnhnusnynprgrofrwksahsaqsbpsehsesshismnteotwqtzmvaivunwaex" + - "ogyavyuezgh", - "", - } - selfTagsLong = []string{ // 26 elements - "ar-001", - "az-Cyrl", - "bs-Cyrl", - "de-AT", - "de-CH", - "en-AU", - "en-CA", - "en-GB", - "en-US", - "es-419", - "es-ES", - "es-MX", - "fa-AF", - "fr-CA", - "fr-CH", - "pa-Arab", - "pt-PT", - "shi-Latn", - "sr-Latn", - "sw-CD", - "uz-Arab", - "uz-Cyrl", - "vai-Latn", - "yue-Hans", - "zh-Hans", - "zh-Hant", - } -) - -var selfHeaders = [1]header{ - { // mul - "AfrikaansAkanአማርኛالعربيةঅসমীয়াazərbaycanбеларускаябългарскиbamanakanবাং" + - "লাབོད་སྐད་brezhonegbosanskicatalàнохчийнčeštinaCymraegdanskDeutsch" + - "རྫོང་ཁEʋegbeΕλληνικάEnglishesperantoespañoleestieuskaraفارسیPulaar" + - "suomiføroysktfrançaisFryskGaeilgeGàidhliggalegoગુજરાતીGaelgHausaעברי" + - "תहिन्दीhrvatskimagyarհայերենIndonesiaIgboꆈꌠꉙíslenskaitaliano日本語ქართ" + - "ულიGikuyuқазақ тіліkalaallisutខ្មែរಕನ್ನಡ한국어کٲشُرkernewekкыргызчаLë" + - "tzebuergeschLugandalingálaລາວlietuviųTshilubalatviešuMalagasyмакедон" + - "скиമലയാളംмонголमराठीMelayuMaltiမြန်မာisiNdebeleनेपालीNederlandsnyno" + - "rsknorsk bokmålOromooଓଡ଼ିଆиронਪੰਜਾਬੀpolskiپښتوportuguêsRunasimiruman" + - "tschIkirundiromânăрусскийKinyarwandaسنڌيdavvisámegiellaSängöසිංහලslo" + - "venčinaslovenščinachiShonaSoomaalishqipсрпскиsvenskaKiswahiliதமிழ்తె" + - "లుగుтоҷикӣไทยትግርኛTürkmen dililea fakatongaTürkçeтатарئۇيغۇرچەукраї" + - "нськаاردوo‘zbekTiếng ViệtWolofייִדישÈdè Yorùbá中文isiZuluAghemKiparea" + - "sturianuƁàsàaIchibembaHibenaबड़ो𑄌𑄋𑄴𑄟𑄳𑄦RukigaᏣᎳᎩکوردیی ناوەندیKitaita" + - "ZarmaciinedolnoserbšćinaduálájoolaKĩembuewondoFilipinofurlanSchwiize" + - "rtüütschEkegusiiʻŌlelo HawaiʻihornjoserbšćinaNdaꞌaKimachameTaqbaylit" + - "KikambaChimakondekabuverdianuKoyra ciinikakɔKalenjinकोंकणीKishambaar" + - "ikpaKölschKɨlaangiLakȟólʼiyapiلۊری شومالیDholuoLuluhiaMaaKĩmĩrũkreol" + - " morisienMakuametaʼMUNDAŊمازرونیKhoekhoegowabShwóŋò ngiembɔɔnThok Na" + - "thRunyankoreprūsiskanKihoromboKiruwaсаха тылаKisampurIshisangusenaKo" + - "yraboro senniⵜⴰⵛⵍⵃⵉⵜanarâškielâKitesoTasawaq senniTamaziɣt n laṭlaṣꕙ" + - "ꔤKyivunjoWalserOlusoganuasue粵語ⵜⴰⵎⴰⵣⵉⵖⵜالعربية الرسمية الحديثةазәрб" + - "ајҹанбосанскиÖsterreichisches DeutschSchweizer HochdeutschAustralia" + - "n EnglishCanadian EnglishBritish EnglishAmerican Englishespañol lati" + - "noamericanoespañol de Españaespañol de Méxicoدریfrançais canadienfra" + - "nçais suisseپنجابیportuguês europeuTashelḥiytsrpskohrvatskiKingwanaا" + - "وزبیکўзбекчаVai粤语简体中文繁體中文", - []uint16{ // 224 elements - // Entry 0 - 3F - 0x0000, 0x0009, 0x000d, 0x0019, 0x0027, 0x003c, 0x0047, 0x005b, - 0x006d, 0x0076, 0x0085, 0x009d, 0x00a6, 0x00ae, 0x00b5, 0x00c3, - 0x00cc, 0x00d3, 0x00d8, 0x00df, 0x00f1, 0x00f8, 0x0108, 0x010f, - 0x0118, 0x0120, 0x0125, 0x012c, 0x0136, 0x013c, 0x0141, 0x014a, - 0x0153, 0x0158, 0x015f, 0x0168, 0x016e, 0x0183, 0x0188, 0x018d, - 0x0197, 0x01a9, 0x01b1, 0x01b7, 0x01c5, 0x01ce, 0x01d2, 0x01db, - 0x01e4, 0x01ec, 0x01f5, 0x020a, 0x0210, 0x0223, 0x022e, 0x023d, - 0x024c, 0x0255, 0x025f, 0x0267, 0x0277, 0x0286, 0x028d, 0x0295, - // Entry 40 - 7F - 0x029e, 0x02a7, 0x02af, 0x02b8, 0x02c0, 0x02d4, 0x02e6, 0x02f2, - 0x0301, 0x0307, 0x030c, 0x031e, 0x0328, 0x033a, 0x0344, 0x034b, - 0x0358, 0x035e, 0x036d, 0x0375, 0x0387, 0x038d, 0x0395, 0x039f, - 0x03a7, 0x03b0, 0x03b8, 0x03c0, 0x03ce, 0x03d9, 0x03e1, 0x03f1, - 0x03f8, 0x0407, 0x0412, 0x041f, 0x0427, 0x042f, 0x0434, 0x0440, - 0x0447, 0x0450, 0x045f, 0x0471, 0x047d, 0x0486, 0x0492, 0x049f, - 0x04ac, 0x04b4, 0x04be, 0x04ce, 0x04e2, 0x04ea, 0x04f2, 0x0500, - 0x0505, 0x0511, 0x051f, 0x0525, 0x052c, 0x0531, 0x0537, 0x0540, - // Entry 80 - BF - 0x0548, 0x0551, 0x0557, 0x0563, 0x057b, 0x0581, 0x058a, 0x05a5, - 0x05ac, 0x05b6, 0x05c6, 0x05cd, 0x05d2, 0x05d9, 0x05df, 0x05e7, - 0x05ed, 0x05ff, 0x0607, 0x0618, 0x0629, 0x0630, 0x0639, 0x0642, - 0x0649, 0x0653, 0x065f, 0x066a, 0x066f, 0x0677, 0x0689, 0x0692, - 0x0697, 0x069e, 0x06a7, 0x06b6, 0x06cb, 0x06d1, 0x06d8, 0x06db, - 0x06e4, 0x06f2, 0x06f7, 0x06fd, 0x0704, 0x0712, 0x071f, 0x0734, - 0x073d, 0x0747, 0x0751, 0x075a, 0x0760, 0x0771, 0x0779, 0x0782, - 0x0786, 0x0795, 0x07aa, 0x07b8, 0x07be, 0x07cb, 0x07e1, 0x07e7, - // Entry C0 - FF - 0x07ef, 0x07f5, 0x07fc, 0x0802, 0x0808, 0x0820, 0x084c, 0x0860, - 0x0870, 0x0889, 0x089e, 0x08b0, 0x08c0, 0x08cf, 0x08df, 0x08f7, - 0x090a, 0x091d, 0x0923, 0x0935, 0x0945, 0x0951, 0x0963, 0x096f, - 0x097d, 0x0985, 0x0991, 0x099f, 0x09a2, 0x09a8, 0x09b4, 0x09c0, - }, - }, -} - -// Total size for self: 4120 bytes (4 KB) - -// Total table size 2284393 bytes (2230KiB); checksum: 63468642 diff --git a/vendor/golang.org/x/text/language/examples_test.go b/vendor/golang.org/x/text/language/examples_test.go deleted file mode 100644 index d5e8176d..00000000 --- a/vendor/golang.org/x/text/language/examples_test.go +++ /dev/null @@ -1,413 +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_test - -import ( - "fmt" - "net/http" - - "golang.org/x/text/language" -) - -func ExampleCanonType() { - p := func(id string) { - fmt.Printf("Default(%s) -> %s\n", id, language.Make(id)) - fmt.Printf("BCP47(%s) -> %s\n", id, language.BCP47.Make(id)) - fmt.Printf("Macro(%s) -> %s\n", id, language.Macro.Make(id)) - fmt.Printf("All(%s) -> %s\n", id, language.All.Make(id)) - } - p("en-Latn") - p("sh") - p("zh-cmn") - p("bjd") - p("iw-Latn-fonipa-u-cu-usd") - // Output: - // Default(en-Latn) -> en-Latn - // BCP47(en-Latn) -> en - // Macro(en-Latn) -> en-Latn - // All(en-Latn) -> en - // Default(sh) -> sr-Latn - // BCP47(sh) -> sh - // Macro(sh) -> sh - // All(sh) -> sr-Latn - // Default(zh-cmn) -> cmn - // BCP47(zh-cmn) -> cmn - // Macro(zh-cmn) -> zh - // All(zh-cmn) -> zh - // Default(bjd) -> drl - // BCP47(bjd) -> drl - // Macro(bjd) -> bjd - // All(bjd) -> drl - // Default(iw-Latn-fonipa-u-cu-usd) -> he-Latn-fonipa-u-cu-usd - // BCP47(iw-Latn-fonipa-u-cu-usd) -> he-Latn-fonipa-u-cu-usd - // Macro(iw-Latn-fonipa-u-cu-usd) -> iw-Latn-fonipa-u-cu-usd - // All(iw-Latn-fonipa-u-cu-usd) -> he-Latn-fonipa-u-cu-usd -} - -func ExampleTag_Base() { - fmt.Println(language.Make("und").Base()) - fmt.Println(language.Make("und-US").Base()) - fmt.Println(language.Make("und-NL").Base()) - fmt.Println(language.Make("und-419").Base()) // Latin America - fmt.Println(language.Make("und-ZZ").Base()) - // Output: - // en Low - // en High - // nl High - // es Low - // en Low -} - -func ExampleTag_Script() { - en := language.Make("en") - sr := language.Make("sr") - sr_Latn := language.Make("sr_Latn") - fmt.Println(en.Script()) - fmt.Println(sr.Script()) - // Was a script explicitly specified? - _, c := sr.Script() - fmt.Println(c == language.Exact) - _, c = sr_Latn.Script() - fmt.Println(c == language.Exact) - // Output: - // Latn High - // Cyrl Low - // false - // true -} - -func ExampleTag_Region() { - ru := language.Make("ru") - en := language.Make("en") - fmt.Println(ru.Region()) - fmt.Println(en.Region()) - // Output: - // RU Low - // US Low -} - -func ExampleRegion_TLD() { - us := language.MustParseRegion("US") - gb := language.MustParseRegion("GB") - uk := language.MustParseRegion("UK") - bu := language.MustParseRegion("BU") - - fmt.Println(us.TLD()) - fmt.Println(gb.TLD()) - fmt.Println(uk.TLD()) - fmt.Println(bu.TLD()) - - fmt.Println(us.Canonicalize().TLD()) - fmt.Println(gb.Canonicalize().TLD()) - fmt.Println(uk.Canonicalize().TLD()) - fmt.Println(bu.Canonicalize().TLD()) - // Output: - // US <nil> - // UK <nil> - // UK <nil> - // ZZ language: region is not a valid ccTLD - // US <nil> - // UK <nil> - // UK <nil> - // MM <nil> -} - -func ExampleCompose() { - nl, _ := language.ParseBase("nl") - us, _ := language.ParseRegion("US") - de := language.Make("de-1901-u-co-phonebk") - jp := language.Make("ja-JP") - fi := language.Make("fi-x-ing") - - u, _ := language.ParseExtension("u-nu-arabic") - x, _ := language.ParseExtension("x-piglatin") - - // Combine a base language and region. - fmt.Println(language.Compose(nl, us)) - // Combine a base language and extension. - fmt.Println(language.Compose(nl, x)) - // Replace the region. - fmt.Println(language.Compose(jp, us)) - // Combine several tags. - fmt.Println(language.Compose(us, nl, u)) - - // Replace the base language of a tag. - fmt.Println(language.Compose(de, nl)) - fmt.Println(language.Compose(de, nl, u)) - // Remove the base language. - fmt.Println(language.Compose(de, language.Base{})) - // Remove all variants. - fmt.Println(language.Compose(de, []language.Variant{})) - // Remove all extensions. - fmt.Println(language.Compose(de, []language.Extension{})) - fmt.Println(language.Compose(fi, []language.Extension{})) - // Remove all variants and extensions. - fmt.Println(language.Compose(de.Raw())) - - // An error is gobbled or returned if non-nil. - fmt.Println(language.Compose(language.ParseRegion("ZA"))) - fmt.Println(language.Compose(language.ParseRegion("HH"))) - - // Compose uses the same Default canonicalization as Make. - fmt.Println(language.Compose(language.Raw.Parse("en-Latn-UK"))) - - // Call compose on a different CanonType for different results. - fmt.Println(language.All.Compose(language.Raw.Parse("en-Latn-UK"))) - - // Output: - // nl-US <nil> - // nl-x-piglatin <nil> - // ja-US <nil> - // nl-US-u-nu-arabic <nil> - // nl-1901-u-co-phonebk <nil> - // nl-1901-u-nu-arabic <nil> - // und-1901-u-co-phonebk <nil> - // de-u-co-phonebk <nil> - // de-1901 <nil> - // fi <nil> - // de <nil> - // und-ZA <nil> - // und language: subtag "HH" is well-formed but unknown - // en-Latn-GB <nil> - // en-GB <nil> -} - -func ExampleParse_errors() { - for _, s := range []string{"Foo", "Bar", "Foobar"} { - _, err := language.Parse(s) - if err != nil { - if inv, ok := err.(language.ValueError); ok { - fmt.Println(inv.Subtag()) - } else { - fmt.Println(s) - } - } - } - for _, s := range []string{"en", "aa-Uuuu", "AC", "ac-u"} { - _, err := language.Parse(s) - switch e := err.(type) { - case language.ValueError: - fmt.Printf("%s: culprit %q\n", s, e.Subtag()) - case nil: - // No error. - default: - // A syntax error. - fmt.Printf("%s: ill-formed\n", s) - } - } - // Output: - // foo - // Foobar - // aa-Uuuu: culprit "Uuuu" - // AC: culprit "ac" - // ac-u: ill-formed -} - -func ExampleParent() { - p := func(tag string) { - fmt.Printf("parent(%v): %v\n", tag, language.Make(tag).Parent()) - } - p("zh-CN") - - // Australian English inherits from World English. - p("en-AU") - - // If the tag has a different maximized script from its parent, a tag with - // this maximized script is inserted. This allows different language tags - // which have the same base language and script in common to inherit from - // a common set of settings. - p("zh-HK") - - // If the maximized script of the parent is not identical, CLDR will skip - // inheriting from it, as it means there will not be many entries in common - // and inheriting from it is nonsensical. - p("zh-Hant") - - // The parent of a tag with variants and extensions is the tag with all - // variants and extensions removed. - p("de-1994-u-co-phonebk") - - // Remove default script. - p("de-Latn-LU") - - // Output: - // parent(zh-CN): zh - // parent(en-AU): en-001 - // parent(zh-HK): zh-Hant - // parent(zh-Hant): und - // parent(de-1994-u-co-phonebk): de - // parent(de-Latn-LU): de -} - -// ExampleMatcher_bestMatch gives some examples of getting the best match of -// a set of tags to any of the tags of given set. -func ExampleMatcher() { - // This is the set of tags from which we want to pick the best match. These - // can be, for example, the supported languages for some package. - tags := []language.Tag{ - language.English, - language.BritishEnglish, - language.French, - language.Afrikaans, - language.BrazilianPortuguese, - language.EuropeanPortuguese, - language.Croatian, - language.SimplifiedChinese, - language.Raw.Make("iw-IL"), - language.Raw.Make("iw"), - language.Raw.Make("he"), - } - m := language.NewMatcher(tags) - - // A simple match. - fmt.Println(m.Match(language.Make("fr"))) - - // Australian English is closer to British than American English. - fmt.Println(m.Match(language.Make("en-AU"))) - - // Default to the first tag passed to the Matcher if there is no match. - fmt.Println(m.Match(language.Make("ar"))) - - // Get the default tag. - fmt.Println(m.Match()) - - fmt.Println("----") - - // Someone specifying sr-Latn is probably fine with getting Croatian. - fmt.Println(m.Match(language.Make("sr-Latn"))) - - // We match SimplifiedChinese, but with Low confidence. - fmt.Println(m.Match(language.TraditionalChinese)) - - // Serbian in Latin script is a closer match to Croatian than Traditional - // Chinese to Simplified Chinese. - fmt.Println(m.Match(language.TraditionalChinese, language.Make("sr-Latn"))) - - fmt.Println("----") - - // In case a multiple variants of a language are available, the most spoken - // variant is typically returned. - fmt.Println(m.Match(language.Portuguese)) - - // Pick the first value passed to Match in case of a tie. - fmt.Println(m.Match(language.Dutch, language.Make("fr-BE"), language.Make("af-NA"))) - fmt.Println(m.Match(language.Dutch, language.Make("af-NA"), language.Make("fr-BE"))) - - fmt.Println("----") - - // If a Matcher is initialized with a language and it's deprecated version, - // it will distinguish between them. - fmt.Println(m.Match(language.Raw.Make("iw"))) - - // However, for non-exact matches, it will treat deprecated versions as - // equivalent and consider other factors first. - fmt.Println(m.Match(language.Raw.Make("he-IL"))) - - fmt.Println("----") - - // User settings passed to the Unicode extension are ignored for matching - // and preserved in the returned tag. - fmt.Println(m.Match(language.Make("de-u-co-phonebk"), language.Make("fr-u-cu-frf"))) - - // Even if the matching language is different. - fmt.Println(m.Match(language.Make("de-u-co-phonebk"), language.Make("br-u-cu-frf"))) - - // If there is no matching language, the options of the first preferred tag are used. - fmt.Println(m.Match(language.Make("de-u-co-phonebk"))) - - // Output: - // fr 2 Exact - // en-GB 1 High - // en 0 No - // en 0 No - // ---- - // hr 6 High - // zh-Hans 7 Low - // hr 6 High - // ---- - // pt-BR 4 High - // fr 2 High - // af 3 High - // ---- - // iw 9 Exact - // he 10 Exact - // ---- - // fr-u-cu-frf 2 Exact - // fr-u-cu-frf 2 High - // en-u-co-phonebk 0 No - - // TODO: "he" should be "he-u-rg-IL High" -} - -func ExampleMatchStrings() { - // languages supported by this service: - matcher := language.NewMatcher([]language.Tag{ - language.English, language.Dutch, language.German, - }) - - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - lang, _ := r.Cookie("lang") - tag, _ := language.MatchStrings(matcher, lang.String(), r.Header.Get("Accept-Language")) - - fmt.Println("User language:", tag) - }) -} - -func ExampleComprehends() { - // Various levels of comprehensibility. - fmt.Println(language.Comprehends(language.English, language.English)) - fmt.Println(language.Comprehends(language.AmericanEnglish, language.BritishEnglish)) - - // An explicit Und results in no match. - fmt.Println(language.Comprehends(language.English, language.Und)) - - fmt.Println("----") - - // There is usually no mutual comprehensibility between different scripts. - fmt.Println(language.Comprehends(language.Make("en-Dsrt"), language.English)) - - // One exception is for Traditional versus Simplified Chinese, albeit with - // a low confidence. - fmt.Println(language.Comprehends(language.TraditionalChinese, language.SimplifiedChinese)) - - fmt.Println("----") - - // A Swiss German speaker will often understand High German. - fmt.Println(language.Comprehends(language.Make("gsw"), language.Make("de"))) - - // The converse is not generally the case. - fmt.Println(language.Comprehends(language.Make("de"), language.Make("gsw"))) - - // Output: - // Exact - // High - // No - // ---- - // No - // Low - // ---- - // High - // No -} - -func ExampleTag_values() { - us := language.MustParseRegion("US") - en := language.MustParseBase("en") - - lang, _, region := language.AmericanEnglish.Raw() - fmt.Println(lang == en, region == us) - - lang, _, region = language.BritishEnglish.Raw() - fmt.Println(lang == en, region == us) - - // Tags can be compared for exact equivalence using '=='. - en_us, _ := language.Compose(en, us) - fmt.Println(en_us == language.AmericanEnglish) - - // Output: - // true true - // true false - // true -} diff --git a/vendor/golang.org/x/text/language/httpexample_test.go b/vendor/golang.org/x/text/language/httpexample_test.go deleted file mode 100644 index 40d0663c..00000000 --- a/vendor/golang.org/x/text/language/httpexample_test.go +++ /dev/null @@ -1,48 +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 language_test - -import ( - "fmt" - "net/http" - "strings" - - "golang.org/x/text/language" -) - -// matcher is a language.Matcher configured for all supported languages. -var matcher = language.NewMatcher([]language.Tag{ - language.BritishEnglish, - language.Norwegian, - language.German, -}) - -// handler is a http.HandlerFunc. -func handler(w http.ResponseWriter, r *http.Request) { - t, q, err := language.ParseAcceptLanguage(r.Header.Get("Accept-Language")) - // We ignore the error: the default language will be selected for t == nil. - tag, _, _ := matcher.Match(t...) - fmt.Printf("%5v (t: %6v; q: %3v; err: %v)\n", tag, t, q, err) -} - -func ExampleParseAcceptLanguage() { - for _, al := range []string{ - "nn;q=0.3, en-us;q=0.8, en,", - "gsw, en;q=0.7, en-US;q=0.8", - "gsw, nl, da", - "invalid", - } { - // Create dummy request with Accept-Language set and pass it to handler. - r, _ := http.NewRequest("GET", "example.com", strings.NewReader("Hello")) - r.Header.Set("Accept-Language", al) - handler(nil, r) - } - - // Output: - // en-GB (t: [ en en-US nn]; q: [ 1 0.8 0.3]; err: <nil>) - // en-GB (t: [ gsw en-US en]; q: [ 1 0.8 0.7]; err: <nil>) - // de (t: [ gsw nl da]; q: [ 1 1 1]; err: <nil>) - // en-GB (t: []; q: []; err: language: tag is not well-formed) -} diff --git a/vendor/golang.org/x/text/language/language_test.go b/vendor/golang.org/x/text/language/language_test.go deleted file mode 100644 index 9e42d15d..00000000 --- a/vendor/golang.org/x/text/language/language_test.go +++ /dev/null @@ -1,911 +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 ( - "reflect" - "testing" - - "golang.org/x/text/internal/testtext" -) - -func TestTagSize(t *testing.T) { - id := Tag{} - typ := reflect.TypeOf(id) - if typ.Size() > 24 { - t.Errorf("size of Tag was %d; want 24", typ.Size()) - } -} - -func TestIsRoot(t *testing.T) { - loc := Tag{} - if !loc.IsRoot() { - t.Errorf("unspecified should be root.") - } - for i, tt := range parseTests() { - loc, _ := Parse(tt.in) - undef := tt.lang == "und" && tt.script == "" && tt.region == "" && tt.ext == "" - if loc.IsRoot() != undef { - t.Errorf("%d: was %v; want %v", i, loc.IsRoot(), undef) - } - } -} - -func TestEquality(t *testing.T) { - for i, tt := range parseTests()[48:49] { - s := tt.in - tag := Make(s) - t1 := Make(tag.String()) - if tag != t1 { - t.Errorf("%d:%s: equality test 1 failed\n got: %#v\nwant: %#v)", i, s, t1, tag) - } - t2, _ := Compose(tag) - if tag != t2 { - t.Errorf("%d:%s: equality test 2 failed\n got: %#v\nwant: %#v", i, s, t2, tag) - } - } -} - -func TestMakeString(t *testing.T) { - tests := []struct{ in, out string }{ - {"und", "und"}, - {"und", "und-CW"}, - {"nl", "nl-NL"}, - {"de-1901", "nl-1901"}, - {"de-1901", "de-Arab-1901"}, - {"x-a-b", "de-Arab-x-a-b"}, - {"x-a-b", "x-a-b"}, - } - for i, tt := range tests { - id, _ := Parse(tt.in) - mod, _ := Parse(tt.out) - id.setTagsFrom(mod) - for j := 0; j < 2; j++ { - id.remakeString() - if str := id.String(); str != tt.out { - t.Errorf("%d:%d: found %s; want %s", i, j, id.String(), tt.out) - } - } - // The bytes to string conversion as used in remakeString - // occasionally measures as more than one alloc, breaking this test. - // To alleviate this we set the number of runs to more than 1. - if n := testtext.AllocsPerRun(8, id.remakeString); n > 1 { - t.Errorf("%d: # allocs got %.1f; want <= 1", i, n) - } - } -} - -func TestCompactIndex(t *testing.T) { - tests := []struct { - tag string - index int - ok bool - }{ - // TODO: these values will change with each CLDR update. This issue - // will be solved if we decide to fix the indexes. - {"und", 0, true}, - {"ca-ES-valencia", 1, true}, - {"ca-ES-valencia-u-va-posix", 0, false}, - {"ca-ES-valencia-u-co-phonebk", 1, true}, - {"ca-ES-valencia-u-co-phonebk-va-posix", 0, false}, - {"x-klingon", 0, false}, - {"en-US", 232, true}, - {"en-US-u-va-posix", 2, true}, - {"en", 136, true}, - {"en-u-co-phonebk", 136, true}, - {"en-001", 137, true}, - {"sh", 0, false}, // We don't normalize. - } - for _, tt := range tests { - x, ok := CompactIndex(Raw.MustParse(tt.tag)) - if x != tt.index || ok != tt.ok { - t.Errorf("%s: got %d, %v; want %d %v", tt.tag, x, ok, tt.index, tt.ok) - } - } -} - -func TestMarshal(t *testing.T) { - testCases := []string{ - // TODO: these values will change with each CLDR update. This issue - // will be solved if we decide to fix the indexes. - "und", - "ca-ES-valencia", - "ca-ES-valencia-u-va-posix", - "ca-ES-valencia-u-co-phonebk", - "ca-ES-valencia-u-co-phonebk-va-posix", - "x-klingon", - "en-US", - "en-US-u-va-posix", - "en", - "en-u-co-phonebk", - "en-001", - "sh", - } - for _, tc := range testCases { - var tag Tag - err := tag.UnmarshalText([]byte(tc)) - if err != nil { - t.Errorf("UnmarshalText(%q): unexpected error: %v", tc, err) - } - b, err := tag.MarshalText() - if err != nil { - t.Errorf("MarshalText(%q): unexpected error: %v", tc, err) - } - if got := string(b); got != tc { - t.Errorf("%s: got %q; want %q", tc, got, tc) - } - } -} - -func TestBase(t *testing.T) { - tests := []struct { - loc, lang string - conf Confidence - }{ - {"und", "en", Low}, - {"x-abc", "und", No}, - {"en", "en", Exact}, - {"und-Cyrl", "ru", High}, - // If a region is not included, the official language should be English. - {"und-US", "en", High}, - // TODO: not-explicitly listed scripts should probably be und, No - // Modify addTags to return info on how the match was derived. - // {"und-Aghb", "und", No}, - } - for i, tt := range tests { - loc, _ := Parse(tt.loc) - lang, conf := loc.Base() - if lang.String() != tt.lang { - t.Errorf("%d: language was %s; want %s", i, lang, tt.lang) - } - if conf != tt.conf { - t.Errorf("%d: confidence was %d; want %d", i, conf, tt.conf) - } - } -} - -func TestParseBase(t *testing.T) { - tests := []struct { - in string - out string - ok bool - }{ - {"en", "en", true}, - {"EN", "en", true}, - {"nld", "nl", true}, - {"dut", "dut", true}, // bibliographic - {"aaj", "und", false}, // unknown - {"qaa", "qaa", true}, - {"a", "und", false}, - {"", "und", false}, - {"aaaa", "und", false}, - } - for i, tt := range tests { - x, err := ParseBase(tt.in) - if x.String() != tt.out || err == nil != tt.ok { - t.Errorf("%d:%s: was %s, %v; want %s, %v", i, tt.in, x, err == nil, tt.out, tt.ok) - } - if y, _, _ := Raw.Make(tt.out).Raw(); x != y { - t.Errorf("%d:%s: tag was %s; want %s", i, tt.in, x, y) - } - } -} - -func TestScript(t *testing.T) { - tests := []struct { - loc, scr string - conf Confidence - }{ - {"und", "Latn", Low}, - {"en-Latn", "Latn", Exact}, - {"en", "Latn", High}, - {"sr", "Cyrl", Low}, - {"kk", "Cyrl", High}, - {"kk-CN", "Arab", Low}, - {"cmn", "Hans", Low}, - {"ru", "Cyrl", High}, - {"ru-RU", "Cyrl", High}, - {"yue", "Hant", Low}, - {"x-abc", "Zzzz", Low}, - {"und-zyyy", "Zyyy", Exact}, - } - for i, tt := range tests { - loc, _ := Parse(tt.loc) - sc, conf := loc.Script() - if sc.String() != tt.scr { - t.Errorf("%d:%s: script was %s; want %s", i, tt.loc, sc, tt.scr) - } - if conf != tt.conf { - t.Errorf("%d:%s: confidence was %d; want %d", i, tt.loc, conf, tt.conf) - } - } -} - -func TestParseScript(t *testing.T) { - tests := []struct { - in string - out string - ok bool - }{ - {"Latn", "Latn", true}, - {"zzzz", "Zzzz", true}, - {"zyyy", "Zyyy", true}, - {"Latm", "Zzzz", false}, - {"Zzz", "Zzzz", false}, - {"", "Zzzz", false}, - {"Zzzxx", "Zzzz", false}, - } - for i, tt := range tests { - x, err := ParseScript(tt.in) - if x.String() != tt.out || err == nil != tt.ok { - t.Errorf("%d:%s: was %s, %v; want %s, %v", i, tt.in, x, err == nil, tt.out, tt.ok) - } - if err == nil { - if _, y, _ := Raw.Make("und-" + tt.out).Raw(); x != y { - t.Errorf("%d:%s: tag was %s; want %s", i, tt.in, x, y) - } - } - } -} - -func TestRegion(t *testing.T) { - tests := []struct { - loc, reg string - conf Confidence - }{ - {"und", "US", Low}, - {"en", "US", Low}, - {"zh-Hant", "TW", Low}, - {"en-US", "US", Exact}, - {"cmn", "CN", Low}, - {"ru", "RU", Low}, - {"yue", "HK", Low}, - {"x-abc", "ZZ", Low}, - } - for i, tt := range tests { - loc, _ := Raw.Parse(tt.loc) - reg, conf := loc.Region() - if reg.String() != tt.reg { - t.Errorf("%d:%s: region was %s; want %s", i, tt.loc, reg, tt.reg) - } - if conf != tt.conf { - t.Errorf("%d:%s: confidence was %d; want %d", i, tt.loc, conf, tt.conf) - } - } -} - -func TestEncodeM49(t *testing.T) { - tests := []struct { - m49 int - code string - ok bool - }{ - {1, "001", true}, - {840, "US", true}, - {899, "ZZ", false}, - } - for i, tt := range tests { - if r, err := EncodeM49(tt.m49); r.String() != tt.code || err == nil != tt.ok { - t.Errorf("%d:%d: was %s, %v; want %s, %v", i, tt.m49, r, err == nil, tt.code, tt.ok) - } - } - for i := 1; i <= 1000; i++ { - if r, err := EncodeM49(i); err == nil && r.M49() == 0 { - t.Errorf("%d has no error, but maps to undefined region", i) - } - } -} - -func TestParseRegion(t *testing.T) { - tests := []struct { - in string - out string - ok bool - }{ - {"001", "001", true}, - {"840", "US", true}, - {"899", "ZZ", false}, - {"USA", "US", true}, - {"US", "US", true}, - {"BC", "ZZ", false}, - {"C", "ZZ", false}, - {"CCCC", "ZZ", false}, - {"01", "ZZ", false}, - } - for i, tt := range tests { - r, err := ParseRegion(tt.in) - if r.String() != tt.out || err == nil != tt.ok { - t.Errorf("%d:%s: was %s, %v; want %s, %v", i, tt.in, r, err == nil, tt.out, tt.ok) - } - if err == nil { - if _, _, y := Raw.Make("und-" + tt.out).Raw(); r != y { - t.Errorf("%d:%s: tag was %s; want %s", i, tt.in, r, y) - } - } - } -} - -func TestIsCountry(t *testing.T) { - tests := []struct { - reg string - country bool - }{ - {"US", true}, - {"001", false}, - {"958", false}, - {"419", false}, - {"203", true}, - {"020", true}, - {"900", false}, - {"999", false}, - {"QO", false}, - {"EU", false}, - {"AA", false}, - {"XK", true}, - } - for i, tt := range tests { - reg, _ := getRegionID([]byte(tt.reg)) - r := Region{reg} - if r.IsCountry() != tt.country { - t.Errorf("%d: IsCountry(%s) was %v; want %v", i, tt.reg, r.IsCountry(), tt.country) - } - } -} - -func TestIsGroup(t *testing.T) { - tests := []struct { - reg string - group bool - }{ - {"US", false}, - {"001", true}, - {"958", false}, - {"419", true}, - {"203", false}, - {"020", false}, - {"900", false}, - {"999", false}, - {"QO", true}, - {"EU", true}, - {"AA", false}, - {"XK", false}, - } - for i, tt := range tests { - reg, _ := getRegionID([]byte(tt.reg)) - r := Region{reg} - if r.IsGroup() != tt.group { - t.Errorf("%d: IsGroup(%s) was %v; want %v", i, tt.reg, r.IsGroup(), tt.group) - } - } -} - -func TestContains(t *testing.T) { - tests := []struct { - enclosing, contained string - contains bool - }{ - // A region contains itself. - {"US", "US", true}, - {"001", "001", true}, - - // Direct containment. - {"001", "002", true}, - {"039", "XK", true}, - {"150", "XK", true}, - {"EU", "AT", true}, - {"QO", "AQ", true}, - - // Indirect containemnt. - {"001", "US", true}, - {"001", "419", true}, - {"001", "013", true}, - - // No containment. - {"US", "001", false}, - {"155", "EU", false}, - } - for i, tt := range tests { - enc, _ := getRegionID([]byte(tt.enclosing)) - con, _ := getRegionID([]byte(tt.contained)) - r := Region{enc} - if got := r.Contains(Region{con}); got != tt.contains { - t.Errorf("%d: %s.Contains(%s) was %v; want %v", i, tt.enclosing, tt.contained, got, tt.contains) - } - } -} - -func TestRegionCanonicalize(t *testing.T) { - for i, tt := range []struct{ in, out string }{ - {"UK", "GB"}, - {"TP", "TL"}, - {"QU", "EU"}, - {"SU", "SU"}, - {"VD", "VN"}, - {"DD", "DE"}, - } { - r := MustParseRegion(tt.in) - want := MustParseRegion(tt.out) - if got := r.Canonicalize(); got != want { - t.Errorf("%d: got %v; want %v", i, got, want) - } - } -} - -func TestRegionTLD(t *testing.T) { - for _, tt := range []struct { - in, out string - ok bool - }{ - {"EH", "EH", true}, - {"FR", "FR", true}, - {"TL", "TL", true}, - - // In ccTLD before in ISO. - {"GG", "GG", true}, - - // Non-standard assignment of ccTLD to ISO code. - {"GB", "UK", true}, - - // Exceptionally reserved in ISO and valid ccTLD. - {"UK", "UK", true}, - {"AC", "AC", true}, - {"EU", "EU", true}, - {"SU", "SU", true}, - - // Exceptionally reserved in ISO and invalid ccTLD. - {"CP", "ZZ", false}, - {"DG", "ZZ", false}, - {"EA", "ZZ", false}, - {"FX", "ZZ", false}, - {"IC", "ZZ", false}, - {"TA", "ZZ", false}, - - // Transitionally reserved in ISO (e.g. deprecated) but valid ccTLD as - // it is still being phased out. - {"AN", "AN", true}, - {"TP", "TP", true}, - - // Transitionally reserved in ISO (e.g. deprecated) and invalid ccTLD. - // Defined in package language as it has a mapping in CLDR. - {"BU", "ZZ", false}, - {"CS", "ZZ", false}, - {"NT", "ZZ", false}, - {"YU", "ZZ", false}, - {"ZR", "ZZ", false}, - // Not defined in package: SF. - - // Indeterminately reserved in ISO. - // Defined in package language as it has a legacy mapping in CLDR. - {"DY", "ZZ", false}, - {"RH", "ZZ", false}, - {"VD", "ZZ", false}, - // Not defined in package: EW, FL, JA, LF, PI, RA, RB, RC, RI, RL, RM, - // RN, RP, WG, WL, WV, and YV. - - // Not assigned in ISO, but legacy definitions in CLDR. - {"DD", "ZZ", false}, - {"YD", "ZZ", false}, - - // Normal mappings but somewhat special status in ccTLD. - {"BL", "BL", true}, - {"MF", "MF", true}, - {"BV", "BV", true}, - {"SJ", "SJ", true}, - - // Have values when normalized, but not as is. - {"QU", "ZZ", false}, - - // ISO Private Use. - {"AA", "ZZ", false}, - {"QM", "ZZ", false}, - {"QO", "ZZ", false}, - {"XA", "ZZ", false}, - {"XK", "ZZ", false}, // Sometimes used for Kosovo, but invalid ccTLD. - } { - if tt.in == "" { - continue - } - - r := MustParseRegion(tt.in) - var want Region - if tt.out != "ZZ" { - want = MustParseRegion(tt.out) - } - tld, err := r.TLD() - if got := err == nil; got != tt.ok { - t.Errorf("error(%v): got %v; want %v", r, got, tt.ok) - } - if tld != want { - t.Errorf("TLD(%v): got %v; want %v", r, tld, want) - } - } -} - -func TestCanonicalize(t *testing.T) { - // TODO: do a full test using CLDR data in a separate regression test. - tests := []struct { - in, out string - option CanonType - }{ - {"en-Latn", "en", SuppressScript}, - {"sr-Cyrl", "sr-Cyrl", SuppressScript}, - {"sh", "sr-Latn", Legacy}, - {"sh-HR", "sr-Latn-HR", Legacy}, - {"sh-Cyrl-HR", "sr-Cyrl-HR", Legacy}, - {"tl", "fil", Legacy}, - {"no", "no", Legacy}, - {"no", "nb", Legacy | CLDR}, - {"cmn", "cmn", Legacy}, - {"cmn", "zh", Macro}, - {"cmn-u-co-stroke", "zh-u-co-stroke", Macro}, - {"yue", "yue", Macro}, - {"nb", "no", Macro}, - {"nb", "nb", Macro | CLDR}, - {"no", "no", Macro}, - {"no", "no", Macro | CLDR}, - {"iw", "he", DeprecatedBase}, - {"iw", "he", Deprecated | CLDR}, - {"mo", "ro-MD", Deprecated}, // Adopted by CLDR as of version 25. - {"alb", "sq", Legacy}, // bibliographic - {"dut", "nl", Legacy}, // bibliographic - // As of CLDR 25, mo is no longer considered a legacy mapping. - {"mo", "mo", Legacy | CLDR}, - {"und-AN", "und-AN", Deprecated}, - {"und-YD", "und-YE", DeprecatedRegion}, - {"und-YD", "und-YD", DeprecatedBase}, - {"und-Qaai", "und-Zinh", DeprecatedScript}, - {"und-Qaai", "und-Qaai", DeprecatedBase}, - {"drh", "mn", All}, // drh -> khk -> mn - } - for i, tt := range tests { - in, _ := Raw.Parse(tt.in) - in, _ = tt.option.Canonicalize(in) - if in.String() != tt.out { - t.Errorf("%d:%s: was %s; want %s", i, tt.in, in.String(), tt.out) - } - if int(in.pVariant) > int(in.pExt) || int(in.pExt) > len(in.str) { - t.Errorf("%d:%s:offsets %d <= %d <= %d must be true", i, tt.in, in.pVariant, in.pExt, len(in.str)) - } - } - // Test idempotence. - for _, base := range Supported.BaseLanguages() { - tag, _ := Raw.Compose(base) - got, _ := All.Canonicalize(tag) - want, _ := All.Canonicalize(got) - if got != want { - t.Errorf("idem(%s): got %s; want %s", tag, got, want) - } - } -} - -func TestTypeForKey(t *testing.T) { - tests := []struct{ key, in, out string }{ - {"co", "en", ""}, - {"co", "en-u-abc", ""}, - {"co", "en-u-co-phonebk", "phonebk"}, - {"co", "en-u-co-phonebk-cu-aud", "phonebk"}, - {"co", "x-foo-u-co-phonebk", ""}, - {"nu", "en-u-co-phonebk-nu-arabic", "arabic"}, - {"kc", "cmn-u-co-stroke", ""}, - } - for _, tt := range tests { - if v := Make(tt.in).TypeForKey(tt.key); v != tt.out { - t.Errorf("%q[%q]: was %q; want %q", tt.in, tt.key, v, tt.out) - } - } -} - -func TestSetTypeForKey(t *testing.T) { - tests := []struct { - key, value, in, out string - err bool - }{ - // replace existing value - {"co", "pinyin", "en-u-co-phonebk", "en-u-co-pinyin", false}, - {"co", "pinyin", "en-u-co-phonebk-cu-xau", "en-u-co-pinyin-cu-xau", false}, - {"co", "pinyin", "en-u-co-phonebk-v-xx", "en-u-co-pinyin-v-xx", false}, - {"co", "pinyin", "en-u-co-phonebk-x-x", "en-u-co-pinyin-x-x", false}, - {"nu", "arabic", "en-u-co-phonebk-nu-vaai", "en-u-co-phonebk-nu-arabic", false}, - // add to existing -u extension - {"co", "pinyin", "en-u-ca-gregory", "en-u-ca-gregory-co-pinyin", false}, - {"co", "pinyin", "en-u-ca-gregory-nu-vaai", "en-u-ca-gregory-co-pinyin-nu-vaai", false}, - {"co", "pinyin", "en-u-ca-gregory-v-va", "en-u-ca-gregory-co-pinyin-v-va", false}, - {"co", "pinyin", "en-u-ca-gregory-x-a", "en-u-ca-gregory-co-pinyin-x-a", false}, - {"ca", "gregory", "en-u-co-pinyin", "en-u-ca-gregory-co-pinyin", false}, - // remove pair - {"co", "", "en-u-co-phonebk", "en", false}, - {"co", "", "en-u-ca-gregory-co-phonebk", "en-u-ca-gregory", false}, - {"co", "", "en-u-co-phonebk-nu-arabic", "en-u-nu-arabic", false}, - {"co", "", "en", "en", false}, - // add -u extension - {"co", "pinyin", "en", "en-u-co-pinyin", false}, - {"co", "pinyin", "und", "und-u-co-pinyin", false}, - {"co", "pinyin", "en-a-aaa", "en-a-aaa-u-co-pinyin", false}, - {"co", "pinyin", "en-x-aaa", "en-u-co-pinyin-x-aaa", false}, - {"co", "pinyin", "en-v-aa", "en-u-co-pinyin-v-aa", false}, - {"co", "pinyin", "en-a-aaa-x-x", "en-a-aaa-u-co-pinyin-x-x", false}, - {"co", "pinyin", "en-a-aaa-v-va", "en-a-aaa-u-co-pinyin-v-va", false}, - // error on invalid values - {"co", "pinyinxxx", "en", "en", true}, - {"co", "piny.n", "en", "en", true}, - {"co", "pinyinxxx", "en-a-aaa", "en-a-aaa", true}, - {"co", "pinyinxxx", "en-u-aaa", "en-u-aaa", true}, - {"co", "pinyinxxx", "en-u-aaa-co-pinyin", "en-u-aaa-co-pinyin", true}, - {"co", "pinyi.", "en-u-aaa-co-pinyin", "en-u-aaa-co-pinyin", true}, - {"col", "pinyin", "en", "en", true}, - {"co", "cu", "en", "en", true}, - // error when setting on a private use tag - {"co", "phonebook", "x-foo", "x-foo", true}, - } - for i, tt := range tests { - tag := Make(tt.in) - if v, err := tag.SetTypeForKey(tt.key, tt.value); v.String() != tt.out { - t.Errorf("%d:%q[%q]=%q: was %q; want %q", i, tt.in, tt.key, tt.value, v, tt.out) - } else if (err != nil) != tt.err { - t.Errorf("%d:%q[%q]=%q: error was %v; want %v", i, tt.in, tt.key, tt.value, err != nil, tt.err) - } else if val := v.TypeForKey(tt.key); err == nil && val != tt.value { - t.Errorf("%d:%q[%q]==%q: was %v; want %v", i, tt.out, tt.key, tt.value, val, tt.value) - } - if len(tag.String()) <= 3 { - // Simulate a tag for which the string has not been set. - tag.str, tag.pExt, tag.pVariant = "", 0, 0 - if tag, err := tag.SetTypeForKey(tt.key, tt.value); err == nil { - if val := tag.TypeForKey(tt.key); err == nil && val != tt.value { - t.Errorf("%d:%q[%q]==%q: was %v; want %v", i, tt.out, tt.key, tt.value, val, tt.value) - } - } - } - } -} - -func TestFindKeyAndType(t *testing.T) { - // out is either the matched type in case of a match or the original - // string up till the insertion point. - tests := []struct { - key string - hasExt bool - in, out string - }{ - // Don't search past a private use extension. - {"co", false, "en-x-foo-u-co-pinyin", "en"}, - {"co", false, "x-foo-u-co-pinyin", ""}, - {"co", false, "en-s-fff-x-foo", "en-s-fff"}, - // Insertion points in absence of -u extension. - {"cu", false, "en", ""}, // t.str is "" - {"cu", false, "en-v-va", "en"}, - {"cu", false, "en-a-va", "en-a-va"}, - {"cu", false, "en-a-va-v-va", "en-a-va"}, - {"cu", false, "en-x-a", "en"}, - // Tags with the -u extension. - {"co", true, "en-u-co-standard", "standard"}, - {"co", true, "yue-u-co-pinyin", "pinyin"}, - {"co", true, "en-u-co-abc", "abc"}, - {"co", true, "en-u-co-abc-def", "abc-def"}, - {"co", true, "en-u-co-abc-def-x-foo", "abc-def"}, - {"co", true, "en-u-co-standard-nu-arab", "standard"}, - {"co", true, "yue-u-co-pinyin-nu-arab", "pinyin"}, - // Insertion points. - {"cu", true, "en-u-co-standard", "en-u-co-standard"}, - {"cu", true, "yue-u-co-pinyin-x-foo", "yue-u-co-pinyin"}, - {"cu", true, "en-u-co-abc", "en-u-co-abc"}, - {"cu", true, "en-u-nu-arabic", "en-u"}, - {"cu", true, "en-u-co-abc-def-nu-arabic", "en-u-co-abc-def"}, - } - for i, tt := range tests { - start, end, hasExt := Make(tt.in).findTypeForKey(tt.key) - if start != end { - res := tt.in[start:end] - if res != tt.out { - t.Errorf("%d:%s: was %q; want %q", i, tt.in, res, tt.out) - } - } else { - if hasExt != tt.hasExt { - t.Errorf("%d:%s: hasExt was %v; want %v", i, tt.in, hasExt, tt.hasExt) - continue - } - if tt.in[:start] != tt.out { - t.Errorf("%d:%s: insertion point was %q; want %q", i, tt.in, tt.in[:start], tt.out) - } - } - } -} - -func TestParent(t *testing.T) { - tests := []struct{ in, out string }{ - // Strip variants and extensions first - {"de-u-co-phonebk", "de"}, - {"de-1994", "de"}, - {"de-Latn-1994", "de"}, // remove superfluous script. - - // Ensure the canonical Tag for an entry is in the chain for base-script - // pairs. - {"zh-Hans", "zh"}, - - // Skip the script if it is the maximized version. CLDR files for the - // skipped tag are always empty. - {"zh-Hans-TW", "zh"}, - {"zh-Hans-CN", "zh"}, - - // Insert the script if the maximized script is not the same as the - // maximized script of the base language. - {"zh-TW", "zh-Hant"}, - {"zh-HK", "zh-Hant"}, - {"zh-Hant-TW", "zh-Hant"}, - {"zh-Hant-HK", "zh-Hant"}, - - // Non-default script skips to und. - // CLDR - {"az-Cyrl", "und"}, - {"bs-Cyrl", "und"}, - {"en-Dsrt", "und"}, - {"ha-Arab", "und"}, - {"mn-Mong", "und"}, - {"pa-Arab", "und"}, - {"shi-Latn", "und"}, - {"sr-Latn", "und"}, - {"uz-Arab", "und"}, - {"uz-Cyrl", "und"}, - {"vai-Latn", "und"}, - {"zh-Hant", "und"}, - // extra - {"nl-Cyrl", "und"}, - - // World english inherits from en-001. - {"en-150", "en-001"}, - {"en-AU", "en-001"}, - {"en-BE", "en-001"}, - {"en-GG", "en-001"}, - {"en-GI", "en-001"}, - {"en-HK", "en-001"}, - {"en-IE", "en-001"}, - {"en-IM", "en-001"}, - {"en-IN", "en-001"}, - {"en-JE", "en-001"}, - {"en-MT", "en-001"}, - {"en-NZ", "en-001"}, - {"en-PK", "en-001"}, - {"en-SG", "en-001"}, - - // Spanish in Latin-American countries have es-419 as parent. - {"es-AR", "es-419"}, - {"es-BO", "es-419"}, - {"es-CL", "es-419"}, - {"es-CO", "es-419"}, - {"es-CR", "es-419"}, - {"es-CU", "es-419"}, - {"es-DO", "es-419"}, - {"es-EC", "es-419"}, - {"es-GT", "es-419"}, - {"es-HN", "es-419"}, - {"es-MX", "es-419"}, - {"es-NI", "es-419"}, - {"es-PA", "es-419"}, - {"es-PE", "es-419"}, - {"es-PR", "es-419"}, - {"es-PY", "es-419"}, - {"es-SV", "es-419"}, - {"es-US", "es-419"}, - {"es-UY", "es-419"}, - {"es-VE", "es-419"}, - // exceptions (according to CLDR) - {"es-CW", "es"}, - - // Inherit from pt-PT, instead of pt for these countries. - {"pt-AO", "pt-PT"}, - {"pt-CV", "pt-PT"}, - {"pt-GW", "pt-PT"}, - {"pt-MO", "pt-PT"}, - {"pt-MZ", "pt-PT"}, - {"pt-ST", "pt-PT"}, - {"pt-TL", "pt-PT"}, - } - for _, tt := range tests { - tag := Raw.MustParse(tt.in) - if p := Raw.MustParse(tt.out); p != tag.Parent() { - t.Errorf("%s: was %v; want %v", tt.in, tag.Parent(), p) - } - } -} - -var ( - // Tags without error that don't need to be changed. - benchBasic = []string{ - "en", - "en-Latn", - "en-GB", - "za", - "zh-Hant", - "zh", - "zh-HK", - "ar-MK", - "en-CA", - "fr-CA", - "fr-CH", - "fr", - "lv", - "he-IT", - "tlh", - "ja", - "ja-Jpan", - "ja-Jpan-JP", - "de-1996", - "de-CH", - "sr", - "sr-Latn", - } - // Tags with extensions, not changes required. - benchExt = []string{ - "x-a-b-c-d", - "x-aa-bbbb-cccccccc-d", - "en-x_cc-b-bbb-a-aaa", - "en-c_cc-b-bbb-a-aaa-x-x", - "en-u-co-phonebk", - "en-Cyrl-u-co-phonebk", - "en-US-u-co-phonebk-cu-xau", - "en-nedix-u-co-phonebk", - "en-t-t0-abcd", - "en-t-nl-latn", - "en-t-t0-abcd-x-a", - } - // Change, but not memory allocation required. - benchSimpleChange = []string{ - "EN", - "i-klingon", - "en-latn", - "zh-cmn-Hans-CN", - "iw-NL", - } - // Change and memory allocation required. - benchChangeAlloc = []string{ - "en-c_cc-b-bbb-a-aaa", - "en-u-cu-xua-co-phonebk", - "en-u-cu-xua-co-phonebk-a-cd", - "en-u-def-abc-cu-xua-co-phonebk", - "en-t-en-Cyrl-NL-1994", - "en-t-en-Cyrl-NL-1994-t0-abc-def", - } - // Tags that result in errors. - benchErr = []string{ - // IllFormed - "x_A.-B-C_D", - "en-u-cu-co-phonebk", - "en-u-cu-xau-co", - "en-t-nl-abcd", - // Invalid - "xx", - "nl-Uuuu", - "nl-QB", - } - benchChange = append(benchSimpleChange, benchChangeAlloc...) - benchAll = append(append(append(benchBasic, benchExt...), benchChange...), benchErr...) -) - -func doParse(b *testing.B, tag []string) { - for i := 0; i < b.N; i++ { - // Use the modulo instead of looping over all tags so that we get a somewhat - // meaningful ns/op. - Parse(tag[i%len(tag)]) - } -} - -func BenchmarkParse(b *testing.B) { - doParse(b, benchAll) -} - -func BenchmarkParseBasic(b *testing.B) { - doParse(b, benchBasic) -} - -func BenchmarkParseError(b *testing.B) { - doParse(b, benchErr) -} - -func BenchmarkParseSimpleChange(b *testing.B) { - doParse(b, benchSimpleChange) -} - -func BenchmarkParseChangeAlloc(b *testing.B) { - doParse(b, benchChangeAlloc) -} diff --git a/vendor/golang.org/x/text/language/lookup_test.go b/vendor/golang.org/x/text/language/lookup_test.go deleted file mode 100644 index 9833830c..00000000 --- a/vendor/golang.org/x/text/language/lookup_test.go +++ /dev/null @@ -1,457 +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 ( - "testing" - - "golang.org/x/text/internal/tag" -) - -func b(s string) []byte { - return []byte(s) -} - -func TestLangID(t *testing.T) { - tests := []struct { - id, bcp47, iso3, norm string - err error - }{ - {id: "", bcp47: "und", iso3: "und", err: errSyntax}, - {id: " ", bcp47: "und", iso3: "und", err: errSyntax}, - {id: " ", bcp47: "und", iso3: "und", err: errSyntax}, - {id: " ", bcp47: "und", iso3: "und", err: errSyntax}, - {id: "xxx", bcp47: "und", iso3: "und", err: mkErrInvalid([]byte("xxx"))}, - {id: "und", bcp47: "und", iso3: "und"}, - {id: "aju", bcp47: "aju", iso3: "aju", norm: "jrb"}, - {id: "jrb", bcp47: "jrb", iso3: "jrb"}, - {id: "es", bcp47: "es", iso3: "spa"}, - {id: "spa", bcp47: "es", iso3: "spa"}, - {id: "ji", bcp47: "ji", iso3: "yid-", norm: "yi"}, - {id: "jw", bcp47: "jw", iso3: "jav-", norm: "jv"}, - {id: "ar", bcp47: "ar", iso3: "ara"}, - {id: "kw", bcp47: "kw", iso3: "cor"}, - {id: "arb", bcp47: "arb", iso3: "arb", norm: "ar"}, - {id: "ar", bcp47: "ar", iso3: "ara"}, - {id: "kur", bcp47: "ku", iso3: "kur"}, - {id: "nl", bcp47: "nl", iso3: "nld"}, - {id: "NL", bcp47: "nl", iso3: "nld"}, - {id: "gsw", bcp47: "gsw", iso3: "gsw"}, - {id: "gSW", bcp47: "gsw", iso3: "gsw"}, - {id: "und", bcp47: "und", iso3: "und"}, - {id: "sh", bcp47: "sh", iso3: "hbs", norm: "sr"}, - {id: "hbs", bcp47: "sh", iso3: "hbs", norm: "sr"}, - {id: "no", bcp47: "no", iso3: "nor", norm: "no"}, - {id: "nor", bcp47: "no", iso3: "nor", norm: "no"}, - {id: "cmn", bcp47: "cmn", iso3: "cmn", norm: "zh"}, - } - for i, tt := range tests { - want, err := getLangID(b(tt.id)) - if err != tt.err { - t.Errorf("%d:err(%s): found %q; want %q", i, tt.id, err, tt.err) - } - if err != nil { - continue - } - if id, _ := getLangISO2(b(tt.bcp47)); len(tt.bcp47) == 2 && want != id { - t.Errorf("%d:getISO2(%s): found %v; want %v", i, tt.bcp47, id, want) - } - if len(tt.iso3) == 3 { - if id, _ := getLangISO3(b(tt.iso3)); want != id { - t.Errorf("%d:getISO3(%s): found %q; want %q", i, tt.iso3, id, want) - } - if id, _ := getLangID(b(tt.iso3)); want != id { - t.Errorf("%d:getID3(%s): found %v; want %v", i, tt.iso3, id, want) - } - } - norm := want - if tt.norm != "" { - norm, _ = getLangID(b(tt.norm)) - } - id, _ := normLang(want) - if id != norm { - t.Errorf("%d:norm(%s): found %v; want %v", i, tt.id, id, norm) - } - if id := want.String(); tt.bcp47 != id { - t.Errorf("%d:String(): found %s; want %s", i, id, tt.bcp47) - } - if id := want.ISO3(); tt.iso3[:3] != id { - t.Errorf("%d:iso3(): found %s; want %s", i, id, tt.iso3[:3]) - } - } -} - -func TestGrandfathered(t *testing.T) { - for _, tt := range []struct{ in, out string }{ - {"art-lojban", "jbo"}, - {"i-ami", "ami"}, - {"i-bnn", "bnn"}, - {"i-hak", "hak"}, - {"i-klingon", "tlh"}, - {"i-lux", "lb"}, - {"i-navajo", "nv"}, - {"i-pwn", "pwn"}, - {"i-tao", "tao"}, - {"i-tay", "tay"}, - {"i-tsu", "tsu"}, - {"no-bok", "nb"}, - {"no-nyn", "nn"}, - {"sgn-BE-FR", "sfb"}, - {"sgn-BE-NL", "vgt"}, - {"sgn-CH-DE", "sgg"}, - {"sgn-ch-de", "sgg"}, - {"zh-guoyu", "cmn"}, - {"zh-hakka", "hak"}, - {"zh-min-nan", "nan"}, - {"zh-xiang", "hsn"}, - - // Grandfathered tags with no modern replacement will be converted as follows: - {"cel-gaulish", "xtg-x-cel-gaulish"}, - {"en-GB-oed", "en-GB-oxendict"}, - {"en-gb-oed", "en-GB-oxendict"}, - {"i-default", "en-x-i-default"}, - {"i-enochian", "und-x-i-enochian"}, - {"i-mingo", "see-x-i-mingo"}, - {"zh-min", "nan-x-zh-min"}, - - {"root", "und"}, - {"en_US_POSIX", "en-US-u-va-posix"}, - {"en_us_posix", "en-US-u-va-posix"}, - {"en-us-posix", "en-US-u-va-posix"}, - } { - got := Raw.Make(tt.in) - want := Raw.MustParse(tt.out) - if got != want { - t.Errorf("%s: got %q; want %q", tt.in, got, want) - } - } -} - -func TestRegionID(t *testing.T) { - tests := []struct { - in, out string - }{ - {"_ ", ""}, - {"_000", ""}, - {"419", "419"}, - {"AA", "AA"}, - {"ATF", "TF"}, - {"HV", "HV"}, - {"CT", "CT"}, - {"DY", "DY"}, - {"IC", "IC"}, - {"FQ", "FQ"}, - {"JT", "JT"}, - {"ZZ", "ZZ"}, - {"EU", "EU"}, - {"QO", "QO"}, - {"FX", "FX"}, - } - for i, tt := range tests { - if tt.in[0] == '_' { - id := tt.in[1:] - if _, err := getRegionID(b(id)); err == nil { - t.Errorf("%d:err(%s): found nil; want error", i, id) - } - continue - } - want, _ := getRegionID(b(tt.in)) - if s := want.String(); s != tt.out { - t.Errorf("%d:%s: found %q; want %q", i, tt.in, s, tt.out) - } - if len(tt.in) == 2 { - want, _ := getRegionISO2(b(tt.in)) - if s := want.String(); s != tt.out { - t.Errorf("%d:getISO2(%s): found %q; want %q", i, tt.in, s, tt.out) - } - } - } -} - -func TestRegionType(t *testing.T) { - for _, tt := range []struct { - r string - t byte - }{ - {"NL", bcp47Region | ccTLD}, - {"EU", bcp47Region | ccTLD}, // exceptionally reserved - {"AN", bcp47Region | ccTLD}, // transitionally reserved - - {"DD", bcp47Region}, // deleted in ISO, deprecated in BCP 47 - {"NT", bcp47Region}, // transitionally reserved, deprecated in BCP 47 - - {"XA", iso3166UserAssigned | bcp47Region}, - {"ZZ", iso3166UserAssigned | bcp47Region}, - {"AA", iso3166UserAssigned | bcp47Region}, - {"QO", iso3166UserAssigned | bcp47Region}, - {"QM", iso3166UserAssigned | bcp47Region}, - {"XK", iso3166UserAssigned | bcp47Region}, - - {"CT", 0}, // deleted in ISO, not in BCP 47, canonicalized in CLDR - } { - r := MustParseRegion(tt.r) - if tp := r.typ(); tp != tt.t { - t.Errorf("Type(%s): got %x; want %x", tt.r, tp, tt.t) - } - } -} - -func TestRegionISO3(t *testing.T) { - tests := []struct { - from, iso3, to string - }{ - {" ", "ZZZ", "ZZ"}, - {"000", "ZZZ", "ZZ"}, - {"AA", "AAA", ""}, - {"CT", "CTE", ""}, - {"DY", "DHY", ""}, - {"EU", "QUU", ""}, - {"HV", "HVO", ""}, - {"IC", "ZZZ", "ZZ"}, - {"JT", "JTN", ""}, - {"PZ", "PCZ", ""}, - {"QU", "QUU", "EU"}, - {"QO", "QOO", ""}, - {"YD", "YMD", ""}, - {"FQ", "ATF", "TF"}, - {"TF", "ATF", ""}, - {"FX", "FXX", ""}, - {"ZZ", "ZZZ", ""}, - {"419", "ZZZ", "ZZ"}, - } - for _, tt := range tests { - r, _ := getRegionID(b(tt.from)) - if s := r.ISO3(); s != tt.iso3 { - t.Errorf("iso3(%q): found %q; want %q", tt.from, s, tt.iso3) - } - if tt.iso3 == "" { - continue - } - want := tt.to - if tt.to == "" { - want = tt.from - } - r, _ = getRegionID(b(want)) - if id, _ := getRegionISO3(b(tt.iso3)); id != r { - t.Errorf("%s: found %q; want %q", tt.iso3, id, want) - } - } -} - -func TestRegionM49(t *testing.T) { - fromTests := []struct { - m49 int - id string - }{ - {0, ""}, - {-1, ""}, - {1000, ""}, - {10000, ""}, - - {001, "001"}, - {104, "MM"}, - {180, "CD"}, - {230, "ET"}, - {231, "ET"}, - {249, "FX"}, - {250, "FR"}, - {276, "DE"}, - {278, "DD"}, - {280, "DE"}, - {419, "419"}, - {626, "TL"}, - {736, "SD"}, - {840, "US"}, - {854, "BF"}, - {891, "CS"}, - {899, ""}, - {958, "AA"}, - {966, "QT"}, - {967, "EU"}, - {999, "ZZ"}, - } - for _, tt := range fromTests { - id, err := getRegionM49(tt.m49) - if want, have := err != nil, tt.id == ""; want != have { - t.Errorf("error(%d): have %v; want %v", tt.m49, have, want) - continue - } - r, _ := getRegionID(b(tt.id)) - if r != id { - t.Errorf("region(%d): have %s; want %s", tt.m49, id, r) - } - } - - toTests := []struct { - m49 int - id string - }{ - {0, "000"}, - {0, "IC"}, // Some codes don't have an ID - - {001, "001"}, - {104, "MM"}, - {104, "BU"}, - {180, "CD"}, - {180, "ZR"}, - {231, "ET"}, - {250, "FR"}, - {249, "FX"}, - {276, "DE"}, - {278, "DD"}, - {419, "419"}, - {626, "TL"}, - {626, "TP"}, - {729, "SD"}, - {826, "GB"}, - {840, "US"}, - {854, "BF"}, - {891, "YU"}, - {891, "CS"}, - {958, "AA"}, - {966, "QT"}, - {967, "EU"}, - {967, "QU"}, - {999, "ZZ"}, - // For codes that don't have an M49 code use the replacement value, - // if available. - {854, "HV"}, // maps to Burkino Faso - } - for _, tt := range toTests { - r, _ := getRegionID(b(tt.id)) - if r.M49() != tt.m49 { - t.Errorf("m49(%q): have %d; want %d", tt.id, r.M49(), tt.m49) - } - } -} - -func TestRegionDeprecation(t *testing.T) { - tests := []struct{ in, out string }{ - {"BU", "MM"}, - {"BUR", "MM"}, - {"CT", "KI"}, - {"DD", "DE"}, - {"DDR", "DE"}, - {"DY", "BJ"}, - {"FX", "FR"}, - {"HV", "BF"}, - {"JT", "UM"}, - {"MI", "UM"}, - {"NH", "VU"}, - {"NQ", "AQ"}, - {"PU", "UM"}, - {"PZ", "PA"}, - {"QU", "EU"}, - {"RH", "ZW"}, - {"TP", "TL"}, - {"UK", "GB"}, - {"VD", "VN"}, - {"WK", "UM"}, - {"YD", "YE"}, - {"NL", "NL"}, - } - for _, tt := range tests { - rIn, _ := getRegionID([]byte(tt.in)) - rOut, _ := getRegionISO2([]byte(tt.out)) - r := normRegion(rIn) - if rOut == rIn && r != 0 { - t.Errorf("%s: was %q; want %q", tt.in, r, tt.in) - } - if rOut != rIn && r != rOut { - t.Errorf("%s: was %q; want %q", tt.in, r, tt.out) - } - - } -} - -func TestGetScriptID(t *testing.T) { - idx := tag.Index("0000BbbbDdddEeeeZzzz\xff\xff\xff\xff") - tests := []struct { - in string - out scriptID - }{ - {" ", 0}, - {" ", 0}, - {" ", 0}, - {"", 0}, - {"Aaaa", 0}, - {"Bbbb", 1}, - {"Dddd", 2}, - {"dddd", 2}, - {"dDDD", 2}, - {"Eeee", 3}, - {"Zzzz", 4}, - } - for i, tt := range tests { - if id, err := getScriptID(idx, b(tt.in)); id != tt.out { - t.Errorf("%d:%s: found %d; want %d", i, tt.in, id, tt.out) - } else if id == 0 && err == nil { - t.Errorf("%d:%s: no error; expected one", i, tt.in) - } - } -} - -func TestIsPrivateUse(t *testing.T) { - type test struct { - s string - private bool - } - tests := []test{ - {"en", false}, - {"und", false}, - {"pzn", false}, - {"qaa", true}, - {"qtz", true}, - {"qua", false}, - } - for i, tt := range tests { - x, _ := getLangID([]byte(tt.s)) - if b := x.IsPrivateUse(); b != tt.private { - t.Errorf("%d: langID.IsPrivateUse(%s) was %v; want %v", i, tt.s, b, tt.private) - } - } - tests = []test{ - {"001", false}, - {"419", false}, - {"899", false}, - {"900", false}, - {"957", false}, - {"958", true}, - {"AA", true}, - {"AC", false}, - {"EU", false}, // CLDR grouping, exceptionally reserved in ISO. - {"QU", true}, // Canonicalizes to EU, User-assigned in ISO. - {"QO", true}, // CLDR grouping, User-assigned in ISO. - {"QA", false}, - {"QM", true}, - {"QZ", true}, - {"XA", true}, - {"XK", true}, // Assigned to Kosovo in CLDR, User-assigned in ISO. - {"XZ", true}, - {"ZW", false}, - {"ZZ", true}, - } - for i, tt := range tests { - x, _ := getRegionID([]byte(tt.s)) - if b := x.IsPrivateUse(); b != tt.private { - t.Errorf("%d: regionID.IsPrivateUse(%s) was %v; want %v", i, tt.s, b, tt.private) - } - } - tests = []test{ - {"Latn", false}, - {"Laaa", false}, // invalid - {"Qaaa", true}, - {"Qabx", true}, - {"Qaby", false}, - {"Zyyy", false}, - {"Zzzz", false}, - } - for i, tt := range tests { - x, _ := getScriptID(script, []byte(tt.s)) - if b := x.IsPrivateUse(); b != tt.private { - t.Errorf("%d: scriptID.IsPrivateUse(%s) was %v; want %v", i, tt.s, b, tt.private) - } - } -} diff --git a/vendor/golang.org/x/text/language/match_test.go b/vendor/golang.org/x/text/language/match_test.go deleted file mode 100644 index 8b60b07a..00000000 --- a/vendor/golang.org/x/text/language/match_test.go +++ /dev/null @@ -1,505 +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" - "flag" - "fmt" - "os" - "path" - "path/filepath" - "strings" - "testing" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/internal/ucd" -) - -var verbose = flag.Bool("verbose", false, "set to true to print the internal tables of matchers") - -func TestCompliance(t *testing.T) { - filepath.Walk("testdata", func(file string, info os.FileInfo, err error) error { - if info.IsDir() { - return nil - } - r, err := os.Open(file) - if err != nil { - t.Fatal(err) - } - ucd.Parse(r, func(p *ucd.Parser) { - name := strings.Replace(path.Join(p.String(0), p.String(1)), " ", "", -1) - if skip[name] { - return - } - t.Run(info.Name()+"/"+name, func(t *testing.T) { - supported := makeTagList(p.String(0)) - desired := makeTagList(p.String(1)) - gotCombined, index, conf := NewMatcher(supported).Match(desired...) - - gotMatch := supported[index] - wantMatch := mk(p.String(2)) - if gotMatch != wantMatch { - t.Fatalf("match: got %q; want %q (%v)", gotMatch, wantMatch, conf) - } - wantCombined, err := Raw.Parse(p.String(3)) - if err == nil && gotCombined != wantCombined { - t.Errorf("combined: got %q; want %q (%v)", gotCombined, wantCombined, conf) - } - }) - }) - return nil - }) -} - -var skip = map[string]bool{ - // TODO: bugs - // Honor the wildcard match. This may only be useful to select non-exact - // stuff. - "mul,af/nl": true, // match: got "af"; want "mul" - - // TODO: include other extensions. - // combined: got "en-GB-u-ca-buddhist-nu-arab"; want "en-GB-fonipa-t-m0-iso-i0-pinyin-u-ca-buddhist-nu-arab" - "und,en-GB-u-sd-gbsct/en-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin": true, - - // Inconsistencies with Mark Davis' implementation where it is not clear - // which is better. - - // Inconsistencies in combined. I think the Go approach is more appropriate. - // We could use -u-rg- and -u-va- as alternative. - "und,fr/fr-BE-fonipa": true, // combined: got "fr"; want "fr-BE-fonipa" - "und,fr-CA/fr-BE-fonipa": true, // combined: got "fr-CA"; want "fr-BE-fonipa" - "und,fr-fonupa/fr-BE-fonipa": true, // combined: got "fr-fonupa"; want "fr-BE-fonipa" - "und,no/nn-BE-fonipa": true, // combined: got "no"; want "no-BE-fonipa" - "50,und,fr-CA-fonupa/fr-BE-fonipa": true, // combined: got "fr-CA-fonupa"; want "fr-BE-fonipa" - - // The initial number is a threshold. As we don't use scoring, we will not - // implement this. - "50,und,fr-Cyrl-CA-fonupa/fr-BE-fonipa": true, - // match: got "und"; want "fr-Cyrl-CA-fonupa" - // combined: got "und"; want "fr-Cyrl-BE-fonipa" - - // Other interesting cases to test: - // - Should same language or same script have the preference if there is - // usually no understanding of the other script? - // - More specific region in desired may replace enclosing supported. -} - -func makeTagList(s string) (tags []Tag) { - for _, s := range strings.Split(s, ",") { - tags = append(tags, mk(strings.TrimSpace(s))) - } - return tags -} - -func TestMatchStrings(t *testing.T) { - testCases := []struct { - supported string - desired string // strings separted by | - tag string - index int - }{{ - supported: "en", - desired: "", - tag: "en", - index: 0, - }, { - supported: "en", - desired: "nl", - tag: "en", - index: 0, - }, { - supported: "en,nl", - desired: "nl", - tag: "nl", - index: 1, - }, { - supported: "en,nl", - desired: "nl|en", - tag: "nl", - index: 1, - }, { - supported: "en-GB,nl", - desired: "en ; q=0.1,nl", - tag: "nl", - index: 1, - }, { - supported: "en-GB,nl", - desired: "en;q=0.005 | dk; q=0.1,nl ", - tag: "en-GB", - index: 0, - }, { - // do not match faulty tags with und - supported: "en,und", - desired: "|en", - tag: "en", - index: 0, - }} - for _, tc := range testCases { - t.Run(path.Join(tc.supported, tc.desired), func(t *testing.T) { - m := NewMatcher(makeTagList(tc.supported)) - tag, index := MatchStrings(m, strings.Split(tc.desired, "|")...) - if tag.String() != tc.tag || index != tc.index { - t.Errorf("got %v, %d; want %v, %d", tag, index, tc.tag, tc.index) - } - }) - } -} - -func TestAddLikelySubtags(t *testing.T) { - tests := []struct{ in, out string }{ - {"aa", "aa-Latn-ET"}, - {"aa-Latn", "aa-Latn-ET"}, - {"aa-Arab", "aa-Arab-ET"}, - {"aa-Arab-ER", "aa-Arab-ER"}, - {"kk", "kk-Cyrl-KZ"}, - {"kk-CN", "kk-Arab-CN"}, - {"cmn", "cmn"}, - {"zh-AU", "zh-Hant-AU"}, - {"zh-VN", "zh-Hant-VN"}, - {"zh-SG", "zh-Hans-SG"}, - {"zh-Hant", "zh-Hant-TW"}, - {"zh-Hani", "zh-Hani-CN"}, - {"und-Hani", "zh-Hani-CN"}, - {"und", "en-Latn-US"}, - {"und-GB", "en-Latn-GB"}, - {"und-CW", "pap-Latn-CW"}, - {"und-YT", "fr-Latn-YT"}, - {"und-Arab", "ar-Arab-EG"}, - {"und-AM", "hy-Armn-AM"}, - {"und-TW", "zh-Hant-TW"}, - {"und-002", "en-Latn-NG"}, - {"und-Latn-002", "en-Latn-NG"}, - {"en-Latn-002", "en-Latn-NG"}, - {"en-002", "en-Latn-NG"}, - {"en-001", "en-Latn-US"}, - {"und-003", "en-Latn-US"}, - {"und-GB", "en-Latn-GB"}, - {"Latn-001", "en-Latn-US"}, - {"en-001", "en-Latn-US"}, - {"es-419", "es-Latn-419"}, - {"he-145", "he-Hebr-IL"}, - {"ky-145", "ky-Latn-TR"}, - {"kk", "kk-Cyrl-KZ"}, - // Don't specialize duplicate and ambiguous matches. - {"kk-034", "kk-Arab-034"}, // Matches IR and AF. Both are Arab. - {"ku-145", "ku-Latn-TR"}, // Matches IQ, TR, and LB, but kk -> TR. - {"und-Arab-CC", "ms-Arab-CC"}, - {"und-Arab-GB", "ks-Arab-GB"}, - {"und-Hans-CC", "zh-Hans-CC"}, - {"und-CC", "en-Latn-CC"}, - {"sr", "sr-Cyrl-RS"}, - {"sr-151", "sr-Latn-151"}, // Matches RO and RU. - // We would like addLikelySubtags to generate the same results if the input - // only changes by adding tags that would otherwise have been added - // by the expansion. - // In other words: - // und-AA -> xx-Scrp-AA implies und-Scrp-AA -> xx-Scrp-AA - // und-AA -> xx-Scrp-AA implies xx-AA -> xx-Scrp-AA - // und-Scrp -> xx-Scrp-AA implies und-Scrp-AA -> xx-Scrp-AA - // und-Scrp -> xx-Scrp-AA implies xx-Scrp -> xx-Scrp-AA - // xx -> xx-Scrp-AA implies xx-Scrp -> xx-Scrp-AA - // xx -> xx-Scrp-AA implies xx-AA -> xx-Scrp-AA - // - // The algorithm specified in - // http://unicode.org/reports/tr35/tr35-9.html#Supplemental_Data, - // Section C.10, does not handle the first case. For example, - // the CLDR data contains an entry und-BJ -> fr-Latn-BJ, but not - // there is no rule for und-Latn-BJ. According to spec, und-Latn-BJ - // would expand to en-Latn-BJ, violating the aforementioned principle. - // We deviate from the spec by letting und-Scrp-AA expand to xx-Scrp-AA - // if a rule of the form und-AA -> xx-Scrp-AA is defined. - // Note that as of version 23, CLDR has some explicitly specified - // entries that do not conform to these rules. The implementation - // will not correct these explicit inconsistencies. A later versions of CLDR - // is supposed to fix this. - {"und-Latn-BJ", "fr-Latn-BJ"}, - {"und-Bugi-ID", "bug-Bugi-ID"}, - // regions, scripts and languages without definitions - {"und-Arab-AA", "ar-Arab-AA"}, - {"und-Afak-RE", "fr-Afak-RE"}, - {"und-Arab-GB", "ks-Arab-GB"}, - {"abp-Arab-GB", "abp-Arab-GB"}, - // script has preference over region - {"und-Arab-NL", "ar-Arab-NL"}, - {"zza", "zza-Latn-TR"}, - // preserve variants and extensions - {"de-1901", "de-Latn-DE-1901"}, - {"de-x-abc", "de-Latn-DE-x-abc"}, - {"de-1901-x-abc", "de-Latn-DE-1901-x-abc"}, - {"x-abc", "x-abc"}, // TODO: is this the desired behavior? - } - for i, tt := range tests { - in, _ := Parse(tt.in) - out, _ := Parse(tt.out) - in, _ = in.addLikelySubtags() - if in.String() != out.String() { - t.Errorf("%d: add(%s) was %s; want %s", i, tt.in, in, tt.out) - } - } -} -func TestMinimize(t *testing.T) { - tests := []struct{ in, out string }{ - {"aa", "aa"}, - {"aa-Latn", "aa"}, - {"aa-Latn-ET", "aa"}, - {"aa-ET", "aa"}, - {"aa-Arab", "aa-Arab"}, - {"aa-Arab-ER", "aa-Arab-ER"}, - {"aa-Arab-ET", "aa-Arab"}, - {"und", "und"}, - {"und-Latn", "und"}, - {"und-Latn-US", "und"}, - {"en-Latn-US", "en"}, - {"cmn", "cmn"}, - {"cmn-Hans", "cmn-Hans"}, - {"cmn-Hant", "cmn-Hant"}, - {"zh-AU", "zh-AU"}, - {"zh-VN", "zh-VN"}, - {"zh-SG", "zh-SG"}, - {"zh-Hant", "zh-Hant"}, - {"zh-Hant-TW", "zh-TW"}, - {"zh-Hans", "zh"}, - {"zh-Hani", "zh-Hani"}, - {"und-Hans", "und-Hans"}, - {"und-Hani", "und-Hani"}, - - {"und-CW", "und-CW"}, - {"und-YT", "und-YT"}, - {"und-Arab", "und-Arab"}, - {"und-AM", "und-AM"}, - {"und-Arab-CC", "und-Arab-CC"}, - {"und-CC", "und-CC"}, - {"und-Latn-BJ", "und-BJ"}, - {"und-Bugi-ID", "und-Bugi"}, - {"bug-Bugi-ID", "bug-Bugi"}, - // regions, scripts and languages without definitions - {"und-Arab-AA", "und-Arab-AA"}, - // preserve variants and extensions - {"de-Latn-1901", "de-1901"}, - {"de-Latn-x-abc", "de-x-abc"}, - {"de-DE-1901-x-abc", "de-1901-x-abc"}, - {"x-abc", "x-abc"}, // TODO: is this the desired behavior? - } - for i, tt := range tests { - in, _ := Parse(tt.in) - out, _ := Parse(tt.out) - min, _ := in.minimize() - if min.String() != out.String() { - t.Errorf("%d: min(%s) was %s; want %s", i, tt.in, min, tt.out) - } - max, _ := min.addLikelySubtags() - if x, _ := in.addLikelySubtags(); x.String() != max.String() { - t.Errorf("%d: max(min(%s)) = %s; want %s", i, tt.in, max, x) - } - } -} - -func TestRegionGroups(t *testing.T) { - testCases := []struct { - a, b string - distance uint8 - }{ - {"zh-TW", "zh-HK", 5}, - {"zh-MO", "zh-HK", 4}, - {"es-ES", "es-AR", 5}, - {"es-ES", "es", 4}, - {"es-419", "es-MX", 4}, - {"es-AR", "es-MX", 4}, - {"es-ES", "es-MX", 5}, - {"es-PT", "es-MX", 5}, - } - for _, tc := range testCases { - a := MustParse(tc.a) - aScript, _ := a.Script() - b := MustParse(tc.b) - bScript, _ := b.Script() - - if aScript != bScript { - t.Errorf("scripts differ: %q vs %q", aScript, bScript) - continue - } - d, _ := regionGroupDist(a.region, b.region, aScript.scriptID, a.lang) - if d != tc.distance { - t.Errorf("got %q; want %q", d, tc.distance) - } - } -} - -func TestIsParadigmLocale(t *testing.T) { - testCases := map[string]bool{ - "en-US": true, - "en-GB": true, - "en-VI": false, - "es-GB": false, - "es-ES": true, - "es-419": true, - } - for str, want := range testCases { - tag := Make(str) - got := isParadigmLocale(tag.lang, tag.region) - if got != want { - t.Errorf("isPL(%q) = %v; want %v", str, got, want) - } - } -} - -// Implementation of String methods for various types for debugging purposes. - -func (m *matcher) String() string { - w := &bytes.Buffer{} - fmt.Fprintln(w, "Default:", m.default_) - for tag, h := range m.index { - fmt.Fprintf(w, " %s: %v\n", tag, h) - } - return w.String() -} - -func (h *matchHeader) String() string { - w := &bytes.Buffer{} - fmt.Fprint(w, "haveTag: ") - for _, h := range h.haveTags { - fmt.Fprintf(w, "%v, ", h) - } - return w.String() -} - -func (t haveTag) String() string { - return fmt.Sprintf("%v:%d:%v:%v-%v|%v", t.tag, t.index, t.conf, t.maxRegion, t.maxScript, t.altScript) -} - -func TestBestMatchAlloc(t *testing.T) { - m := NewMatcher(makeTagList("en sr nl")) - // Go allocates when creating a list of tags from a single tag! - list := []Tag{English} - avg := testtext.AllocsPerRun(1, func() { - m.Match(list...) - }) - if avg > 0 { - t.Errorf("got %f; want 0", avg) - } -} - -var benchHave = []Tag{ - mk("en"), - mk("en-GB"), - mk("za"), - mk("zh-Hant"), - mk("zh-Hans-CN"), - mk("zh"), - mk("zh-HK"), - mk("ar-MK"), - mk("en-CA"), - mk("fr-CA"), - mk("fr-US"), - mk("fr-CH"), - mk("fr"), - mk("lt"), - mk("lv"), - mk("iw"), - mk("iw-NL"), - mk("he"), - mk("he-IT"), - mk("tlh"), - mk("ja"), - mk("ja-Jpan"), - mk("ja-Jpan-JP"), - mk("de"), - mk("de-CH"), - mk("de-AT"), - mk("de-DE"), - mk("sr"), - mk("sr-Latn"), - mk("sr-Cyrl"), - mk("sr-ME"), -} - -var benchWant = [][]Tag{ - []Tag{ - mk("en"), - }, - []Tag{ - mk("en-AU"), - mk("de-HK"), - mk("nl"), - mk("fy"), - mk("lv"), - }, - []Tag{ - mk("en-AU"), - mk("de-HK"), - mk("nl"), - mk("fy"), - }, - []Tag{ - mk("ja-Hant"), - mk("da-HK"), - mk("nl"), - mk("zh-TW"), - }, - []Tag{ - mk("ja-Hant"), - mk("da-HK"), - mk("nl"), - mk("hr"), - }, -} - -func BenchmarkMatch(b *testing.B) { - m := newMatcher(benchHave, nil) - for i := 0; i < b.N; i++ { - for _, want := range benchWant { - m.getBest(want...) - } - } -} - -func BenchmarkMatchExact(b *testing.B) { - want := mk("en") - m := newMatcher(benchHave, nil) - for i := 0; i < b.N; i++ { - m.getBest(want) - } -} - -func BenchmarkMatchAltLanguagePresent(b *testing.B) { - want := mk("hr") - m := newMatcher(benchHave, nil) - for i := 0; i < b.N; i++ { - m.getBest(want) - } -} - -func BenchmarkMatchAltLanguageNotPresent(b *testing.B) { - want := mk("nn") - m := newMatcher(benchHave, nil) - for i := 0; i < b.N; i++ { - m.getBest(want) - } -} - -func BenchmarkMatchAltScriptPresent(b *testing.B) { - want := mk("zh-Hant-CN") - m := newMatcher(benchHave, nil) - for i := 0; i < b.N; i++ { - m.getBest(want) - } -} - -func BenchmarkMatchAltScriptNotPresent(b *testing.B) { - want := mk("fr-Cyrl") - m := newMatcher(benchHave, nil) - for i := 0; i < b.N; i++ { - m.getBest(want) - } -} - -func BenchmarkMatchLimitedExact(b *testing.B) { - want := []Tag{mk("he-NL"), mk("iw-NL")} - m := newMatcher(benchHave, nil) - for i := 0; i < b.N; i++ { - m.getBest(want...) - } -} diff --git a/vendor/golang.org/x/text/language/parse_test.go b/vendor/golang.org/x/text/language/parse_test.go deleted file mode 100644 index 9b40eb44..00000000 --- a/vendor/golang.org/x/text/language/parse_test.go +++ /dev/null @@ -1,517 +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" - "strings" - "testing" - - "golang.org/x/text/internal/tag" -) - -type scanTest struct { - ok bool // true if scanning does not result in an error - in string - tok []string // the expected tokens -} - -var tests = []scanTest{ - {true, "", []string{}}, - {true, "1", []string{"1"}}, - {true, "en", []string{"en"}}, - {true, "root", []string{"root"}}, - {true, "maxchars", []string{"maxchars"}}, - {false, "bad/", []string{}}, - {false, "morethan8", []string{}}, - {false, "-", []string{}}, - {false, "----", []string{}}, - {false, "_", []string{}}, - {true, "en-US", []string{"en", "US"}}, - {true, "en_US", []string{"en", "US"}}, - {false, "en-US-", []string{"en", "US"}}, - {false, "en-US--", []string{"en", "US"}}, - {false, "en-US---", []string{"en", "US"}}, - {false, "en--US", []string{"en", "US"}}, - {false, "-en-US", []string{"en", "US"}}, - {false, "-en--US-", []string{"en", "US"}}, - {false, "-en--US-", []string{"en", "US"}}, - {false, "en-.-US", []string{"en", "US"}}, - {false, ".-en--US-.", []string{"en", "US"}}, - {false, "en-u.-US", []string{"en", "US"}}, - {true, "en-u1-US", []string{"en", "u1", "US"}}, - {true, "maxchar1_maxchar2-maxchar3", []string{"maxchar1", "maxchar2", "maxchar3"}}, - {false, "moreThan8-moreThan8-e", []string{"e"}}, -} - -func TestScan(t *testing.T) { - for i, tt := range tests { - scan := makeScannerString(tt.in) - for j := 0; !scan.done; j++ { - if j >= len(tt.tok) { - t.Errorf("%d: extra token %q", i, scan.token) - } else if tag.Compare(tt.tok[j], scan.token) != 0 { - t.Errorf("%d: token %d: found %q; want %q", i, j, scan.token, tt.tok[j]) - break - } - scan.scan() - } - if s := strings.Join(tt.tok, "-"); tag.Compare(s, bytes.Replace(scan.b, b("_"), b("-"), -1)) != 0 { - t.Errorf("%d: input: found %q; want %q", i, scan.b, s) - } - if (scan.err == nil) != tt.ok { - t.Errorf("%d: ok: found %v; want %v", i, scan.err == nil, tt.ok) - } - } -} - -func TestAcceptMinSize(t *testing.T) { - for i, tt := range tests { - // count number of successive tokens with a minimum size. - for sz := 1; sz <= 8; sz++ { - scan := makeScannerString(tt.in) - scan.end, scan.next = 0, 0 - end := scan.acceptMinSize(sz) - n := 0 - for i := 0; i < len(tt.tok) && len(tt.tok[i]) >= sz; i++ { - n += len(tt.tok[i]) - if i > 0 { - n++ - } - } - if end != n { - t.Errorf("%d:%d: found len %d; want %d", i, sz, end, n) - } - } - } -} - -type parseTest struct { - i int // the index of this test - in string - lang, script, region string - variants, ext string - extList []string // only used when more than one extension is present - invalid bool - rewrite bool // special rewrite not handled by parseTag - changed bool // string needed to be reformatted -} - -func parseTests() []parseTest { - tests := []parseTest{ - {in: "root", lang: "und"}, - {in: "und", lang: "und"}, - {in: "en", lang: "en"}, - {in: "xy", lang: "und", invalid: true}, - {in: "en-ZY", lang: "en", invalid: true}, - {in: "gsw", lang: "gsw"}, - {in: "sr_Latn", lang: "sr", script: "Latn"}, - {in: "af-Arab", lang: "af", script: "Arab"}, - {in: "nl-BE", lang: "nl", region: "BE"}, - {in: "es-419", lang: "es", region: "419"}, - {in: "und-001", lang: "und", region: "001"}, - {in: "de-latn-be", lang: "de", script: "Latn", region: "BE"}, - // Variants - {in: "de-1901", lang: "de", variants: "1901"}, - // Accept with unsuppressed script. - {in: "de-Latn-1901", lang: "de", script: "Latn", variants: "1901"}, - // Specialized. - {in: "sl-rozaj", lang: "sl", variants: "rozaj"}, - {in: "sl-rozaj-lipaw", lang: "sl", variants: "rozaj-lipaw"}, - {in: "sl-rozaj-biske", lang: "sl", variants: "rozaj-biske"}, - {in: "sl-rozaj-biske-1994", lang: "sl", variants: "rozaj-biske-1994"}, - {in: "sl-rozaj-1994", lang: "sl", variants: "rozaj-1994"}, - // Maximum number of variants while adhering to prefix rules. - {in: "sl-rozaj-biske-1994-alalc97-fonipa-fonupa-fonxsamp", lang: "sl", variants: "rozaj-biske-1994-alalc97-fonipa-fonupa-fonxsamp"}, - - // Sorting. - {in: "sl-1994-biske-rozaj", lang: "sl", variants: "rozaj-biske-1994", changed: true}, - {in: "sl-rozaj-biske-1994-alalc97-fonupa-fonipa-fonxsamp", lang: "sl", variants: "rozaj-biske-1994-alalc97-fonipa-fonupa-fonxsamp", changed: true}, - {in: "nl-fonxsamp-alalc97-fonipa-fonupa", lang: "nl", variants: "alalc97-fonipa-fonupa-fonxsamp", changed: true}, - - // Duplicates variants are removed, but not an error. - {in: "nl-fonupa-fonupa", lang: "nl", variants: "fonupa"}, - - // Variants that do not have correct prefixes. We still accept these. - {in: "de-Cyrl-1901", lang: "de", script: "Cyrl", variants: "1901"}, - {in: "sl-rozaj-lipaw-1994", lang: "sl", variants: "rozaj-lipaw-1994"}, - {in: "sl-1994-biske-rozaj-1994-biske-rozaj", lang: "sl", variants: "rozaj-biske-1994", changed: true}, - {in: "de-Cyrl-1901", lang: "de", script: "Cyrl", variants: "1901"}, - - // Invalid variant. - {in: "de-1902", lang: "de", variants: "", invalid: true}, - - {in: "EN_CYRL", lang: "en", script: "Cyrl"}, - // private use and extensions - {in: "x-a-b-c-d", ext: "x-a-b-c-d"}, - {in: "x_A.-B-C_D", ext: "x-b-c-d", invalid: true, changed: true}, - {in: "x-aa-bbbb-cccccccc-d", ext: "x-aa-bbbb-cccccccc-d"}, - {in: "en-c_cc-b-bbb-a-aaa", lang: "en", changed: true, extList: []string{"a-aaa", "b-bbb", "c-cc"}}, - {in: "en-x_cc-b-bbb-a-aaa", lang: "en", ext: "x-cc-b-bbb-a-aaa", changed: true}, - {in: "en-c_cc-b-bbb-a-aaa-x-x", lang: "en", changed: true, extList: []string{"a-aaa", "b-bbb", "c-cc", "x-x"}}, - {in: "en-v-c", lang: "en", ext: "", invalid: true}, - {in: "en-v-abcdefghi", lang: "en", ext: "", invalid: true}, - {in: "en-v-abc-x", lang: "en", ext: "v-abc", invalid: true}, - {in: "en-v-abc-x-", lang: "en", ext: "v-abc", invalid: true}, - {in: "en-v-abc-w-x-xx", lang: "en", extList: []string{"v-abc", "x-xx"}, invalid: true, changed: true}, - {in: "en-v-abc-w-y-yx", lang: "en", extList: []string{"v-abc", "y-yx"}, invalid: true, changed: true}, - {in: "en-v-c-abc", lang: "en", ext: "c-abc", invalid: true, changed: true}, - {in: "en-v-w-abc", lang: "en", ext: "w-abc", invalid: true, changed: true}, - {in: "en-v-x-abc", lang: "en", ext: "x-abc", invalid: true, changed: true}, - {in: "en-v-x-a", lang: "en", ext: "x-a", invalid: true, changed: true}, - {in: "en-9-aa-0-aa-z-bb-x-a", lang: "en", extList: []string{"0-aa", "9-aa", "z-bb", "x-a"}, changed: true}, - {in: "en-u-c", lang: "en", ext: "", invalid: true}, - {in: "en-u-co-phonebk", lang: "en", ext: "u-co-phonebk"}, - {in: "en-u-co-phonebk-ca", lang: "en", ext: "u-co-phonebk", invalid: true}, - {in: "en-u-nu-arabic-co-phonebk-ca", lang: "en", ext: "u-co-phonebk-nu-arabic", invalid: true, changed: true}, - {in: "en-u-nu-arabic-co-phonebk-ca-x", lang: "en", ext: "u-co-phonebk-nu-arabic", invalid: true, changed: true}, - {in: "en-u-nu-arabic-co-phonebk-ca-s", lang: "en", ext: "u-co-phonebk-nu-arabic", invalid: true, changed: true}, - {in: "en-u-nu-arabic-co-phonebk-ca-a12345678", lang: "en", ext: "u-co-phonebk-nu-arabic", invalid: true, changed: true}, - {in: "en-u-co-phonebook", lang: "en", ext: "", invalid: true}, - {in: "en-u-co-phonebook-cu-xau", lang: "en", ext: "u-cu-xau", invalid: true, changed: true}, - {in: "en-Cyrl-u-co-phonebk", lang: "en", script: "Cyrl", ext: "u-co-phonebk"}, - {in: "en-US-u-co-phonebk", lang: "en", region: "US", ext: "u-co-phonebk"}, - {in: "en-US-u-co-phonebk-cu-xau", lang: "en", region: "US", ext: "u-co-phonebk-cu-xau"}, - {in: "en-scotland-u-co-phonebk", lang: "en", variants: "scotland", ext: "u-co-phonebk"}, - {in: "en-u-cu-xua-co-phonebk", lang: "en", ext: "u-co-phonebk-cu-xua", changed: true}, - {in: "en-u-def-abc-cu-xua-co-phonebk", lang: "en", ext: "u-abc-def-co-phonebk-cu-xua", changed: true}, - {in: "en-u-def-abc", lang: "en", ext: "u-abc-def", changed: true}, - {in: "en-u-cu-xua-co-phonebk-a-cd", lang: "en", extList: []string{"a-cd", "u-co-phonebk-cu-xua"}, changed: true}, - // Invalid "u" extension. Drop invalid parts. - {in: "en-u-cu-co-phonebk", lang: "en", extList: []string{"u-co-phonebk"}, invalid: true, changed: true}, - {in: "en-u-cu-xau-co", lang: "en", extList: []string{"u-cu-xau"}, invalid: true}, - // We allow duplicate keys as the LDML spec does not explicitly prohibit it. - // TODO: Consider eliminating duplicates and returning an error. - {in: "en-u-cu-xau-co-phonebk-cu-xau", lang: "en", ext: "u-co-phonebk-cu-xau-cu-xau", changed: true}, - {in: "en-t-en-Cyrl-NL-fonipa", lang: "en", ext: "t-en-cyrl-nl-fonipa", changed: true}, - {in: "en-t-en-Cyrl-NL-fonipa-t0-abc-def", lang: "en", ext: "t-en-cyrl-nl-fonipa-t0-abc-def", changed: true}, - {in: "en-t-t0-abcd", lang: "en", ext: "t-t0-abcd"}, - // Not necessary to have changed here. - {in: "en-t-nl-abcd", lang: "en", ext: "t-nl", invalid: true}, - {in: "en-t-nl-latn", lang: "en", ext: "t-nl-latn"}, - {in: "en-t-t0-abcd-x-a", lang: "en", extList: []string{"t-t0-abcd", "x-a"}}, - // invalid - {in: "", lang: "und", invalid: true}, - {in: "-", lang: "und", invalid: true}, - {in: "x", lang: "und", invalid: true}, - {in: "x-", lang: "und", invalid: true}, - {in: "x--", lang: "und", invalid: true}, - {in: "a-a-b-c-d", lang: "und", invalid: true}, - {in: "en-", lang: "en", invalid: true}, - {in: "enne-", lang: "und", invalid: true}, - {in: "en.", lang: "und", invalid: true}, - {in: "en.-latn", lang: "und", invalid: true}, - {in: "en.-en", lang: "en", invalid: true}, - {in: "x-a-tooManyChars-c-d", ext: "x-a-c-d", invalid: true, changed: true}, - {in: "a-tooManyChars-c-d", lang: "und", invalid: true}, - // TODO: check key-value validity - // { in: "en-u-cu-xd", lang: "en", ext: "u-cu-xd", invalid: true }, - {in: "en-t-abcd", lang: "en", invalid: true}, - {in: "en-Latn-US-en", lang: "en", script: "Latn", region: "US", invalid: true}, - // rewrites (more tests in TestGrandfathered) - {in: "zh-min-nan", lang: "nan"}, - {in: "zh-yue", lang: "yue"}, - {in: "zh-xiang", lang: "hsn", rewrite: true}, - {in: "zh-guoyu", lang: "cmn", rewrite: true}, - {in: "iw", lang: "iw"}, - {in: "sgn-BE-FR", lang: "sfb", rewrite: true}, - {in: "i-klingon", lang: "tlh", rewrite: true}, - } - for i, tt := range tests { - tests[i].i = i - if tt.extList != nil { - tests[i].ext = strings.Join(tt.extList, "-") - } - if tt.ext != "" && tt.extList == nil { - tests[i].extList = []string{tt.ext} - } - } - return tests -} - -func TestParseExtensions(t *testing.T) { - for i, tt := range parseTests() { - if tt.ext == "" || tt.rewrite { - continue - } - scan := makeScannerString(tt.in) - if len(scan.b) > 1 && scan.b[1] != '-' { - scan.end = nextExtension(string(scan.b), 0) - scan.next = scan.end + 1 - scan.scan() - } - start := scan.start - scan.toLower(start, len(scan.b)) - parseExtensions(&scan) - ext := string(scan.b[start:]) - if ext != tt.ext { - t.Errorf("%d(%s): ext was %v; want %v", i, tt.in, ext, tt.ext) - } - if changed := !strings.HasPrefix(tt.in[start:], ext); changed != tt.changed { - t.Errorf("%d(%s): changed was %v; want %v", i, tt.in, changed, tt.changed) - } - } -} - -// partChecks runs checks for each part by calling the function returned by f. -func partChecks(t *testing.T, f func(*parseTest) (Tag, bool)) { - for i, tt := range parseTests() { - tag, skip := f(&tt) - if skip { - continue - } - if l, _ := getLangID(b(tt.lang)); l != tag.lang { - t.Errorf("%d: lang was %q; want %q", i, tag.lang, l) - } - if sc, _ := getScriptID(script, b(tt.script)); sc != tag.script { - t.Errorf("%d: script was %q; want %q", i, tag.script, sc) - } - if r, _ := getRegionID(b(tt.region)); r != tag.region { - t.Errorf("%d: region was %q; want %q", i, tag.region, r) - } - if tag.str == "" { - continue - } - p := int(tag.pVariant) - if p < int(tag.pExt) { - p++ - } - if s, g := tag.str[p:tag.pExt], tt.variants; s != g { - t.Errorf("%d: variants was %q; want %q", i, s, g) - } - p = int(tag.pExt) - if p > 0 && p < len(tag.str) { - p++ - } - if s, g := (tag.str)[p:], tt.ext; s != g { - t.Errorf("%d: extensions were %q; want %q", i, s, g) - } - } -} - -func TestParseTag(t *testing.T) { - partChecks(t, func(tt *parseTest) (id Tag, skip bool) { - if strings.HasPrefix(tt.in, "x-") || tt.rewrite { - return Tag{}, true - } - scan := makeScannerString(tt.in) - id, end := parseTag(&scan) - id.str = string(scan.b[:end]) - tt.ext = "" - tt.extList = []string{} - return id, false - }) -} - -func TestParse(t *testing.T) { - partChecks(t, func(tt *parseTest) (id Tag, skip bool) { - id, err := Raw.Parse(tt.in) - ext := "" - if id.str != "" { - if strings.HasPrefix(id.str, "x-") { - ext = id.str - } else if int(id.pExt) < len(id.str) && id.pExt > 0 { - ext = id.str[id.pExt+1:] - } - } - if tag, _ := Raw.Parse(id.String()); tag.String() != id.String() { - t.Errorf("%d:%s: reparse was %q; want %q", tt.i, tt.in, id.String(), tag.String()) - } - if ext != tt.ext { - t.Errorf("%d:%s: ext was %q; want %q", tt.i, tt.in, ext, tt.ext) - } - changed := id.str != "" && !strings.HasPrefix(tt.in, id.str) - if changed != tt.changed { - t.Errorf("%d:%s: changed was %v; want %v", tt.i, tt.in, changed, tt.changed) - } - if (err != nil) != tt.invalid { - t.Errorf("%d:%s: invalid was %v; want %v. Error: %v", tt.i, tt.in, err != nil, tt.invalid, err) - } - return id, false - }) -} - -func TestErrors(t *testing.T) { - mkInvalid := func(s string) error { - return mkErrInvalid([]byte(s)) - } - tests := []struct { - in string - out error - }{ - // invalid subtags. - {"ac", mkInvalid("ac")}, - {"AC", mkInvalid("ac")}, - {"aa-Uuuu", mkInvalid("Uuuu")}, - {"aa-AB", mkInvalid("AB")}, - // ill-formed wins over invalid. - {"ac-u", errSyntax}, - {"ac-u-ca", errSyntax}, - {"ac-u-ca-co-pinyin", errSyntax}, - {"noob", errSyntax}, - } - for _, tt := range tests { - _, err := Parse(tt.in) - if err != tt.out { - t.Errorf("%s: was %q; want %q", tt.in, err, tt.out) - } - } -} - -func TestCompose1(t *testing.T) { - partChecks(t, func(tt *parseTest) (id Tag, skip bool) { - l, _ := ParseBase(tt.lang) - s, _ := ParseScript(tt.script) - r, _ := ParseRegion(tt.region) - v := []Variant{} - for _, x := range strings.Split(tt.variants, "-") { - p, _ := ParseVariant(x) - v = append(v, p) - } - e := []Extension{} - for _, x := range tt.extList { - p, _ := ParseExtension(x) - e = append(e, p) - } - id, _ = Raw.Compose(l, s, r, v, e) - return id, false - }) -} - -func TestCompose2(t *testing.T) { - partChecks(t, func(tt *parseTest) (id Tag, skip bool) { - l, _ := ParseBase(tt.lang) - s, _ := ParseScript(tt.script) - r, _ := ParseRegion(tt.region) - p := []interface{}{l, s, r, s, r, l} - for _, x := range strings.Split(tt.variants, "-") { - v, _ := ParseVariant(x) - p = append(p, v) - } - for _, x := range tt.extList { - e, _ := ParseExtension(x) - p = append(p, e) - } - id, _ = Raw.Compose(p...) - return id, false - }) -} - -func TestCompose3(t *testing.T) { - partChecks(t, func(tt *parseTest) (id Tag, skip bool) { - id, _ = Raw.Parse(tt.in) - id, _ = Raw.Compose(id) - return id, false - }) -} - -func mk(s string) Tag { - return Raw.Make(s) -} - -func TestParseAcceptLanguage(t *testing.T) { - type res struct { - t Tag - q float32 - } - en := []res{{mk("en"), 1.0}} - tests := []struct { - out []res - in string - ok bool - }{ - {en, "en", true}, - {en, " en", true}, - {en, "en ", true}, - {en, " en ", true}, - {en, "en,", true}, - {en, ",en", true}, - {en, ",,,en,,,", true}, - {en, ",en;q=1", true}, - - // We allow an empty input, contrary to spec. - {nil, "", true}, - {[]res{{mk("aa"), 1}}, "aa;", true}, // allow unspecified weight - - // errors - {nil, ";", false}, - {nil, "$", false}, - {nil, "e;", false}, - {nil, "x;", false}, - {nil, "x", false}, - {nil, "ac", false}, // non-existing language - {nil, "aa;q", false}, - {nil, "aa;q=", false}, - {nil, "aa;q=.", false}, - - // odd fallbacks - { - []res{{mk("en"), 0.1}}, - " english ;q=.1", - true, - }, - { - []res{{mk("it"), 1.0}, {mk("de"), 1.0}, {mk("fr"), 1.0}}, - " italian, deutsch, french", - true, - }, - - // lists - { - []res{{mk("en"), 0.1}}, - "en;q=.1", - true, - }, - { - []res{{mk("mul"), 1.0}}, - "*", - true, - }, - { - []res{{mk("en"), 1.0}, {mk("de"), 1.0}}, - "en,de", - true, - }, - { - []res{{mk("en"), 1.0}, {mk("de"), .5}}, - "en,de;q=0.5", - true, - }, - { - []res{{mk("de"), 0.8}, {mk("en"), 0.5}}, - " en ; q = 0.5 , , de;q=0.8", - true, - }, - { - []res{{mk("en"), 1.0}, {mk("de"), 1.0}, {mk("fr"), 1.0}, {mk("tlh"), 1.0}}, - "en,de,fr,i-klingon", - true, - }, - // sorting - { - []res{{mk("tlh"), 0.4}, {mk("de"), 0.2}, {mk("fr"), 0.2}, {mk("en"), 0.1}}, - "en;q=0.1,de;q=0.2,fr;q=0.2,i-klingon;q=0.4", - true, - }, - // dropping - { - []res{{mk("fr"), 0.2}, {mk("en"), 0.1}}, - "en;q=0.1,de;q=0,fr;q=0.2,i-klingon;q=0.0", - true, - }, - } - for i, tt := range tests { - tags, qs, e := ParseAcceptLanguage(tt.in) - if e == nil != tt.ok { - t.Errorf("%d:%s:err: was %v; want %v", i, tt.in, e == nil, tt.ok) - } - for j, tag := range tags { - if out := tt.out[j]; !tag.equalTags(out.t) || qs[j] != out.q { - t.Errorf("%d:%s: was %s, %1f; want %s, %1f", i, tt.in, tag, qs[j], out.t, out.q) - break - } - } - } -} diff --git a/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt b/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt deleted file mode 100644 index 6568f2d3..00000000 --- a/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt +++ /dev/null @@ -1,389 +0,0 @@ -# TODO: this file has not yet been included in the main CLDR release. -# The intent is to verify this file against the Go implementation and then -# correct the cases and add merge in other interesting test cases. -# See TestCLDRCompliance in match_test.go, as well as the list of exceptions -# defined in the map skip below it, for the work in progress. - -# Data-driven test for the XLocaleMatcher. -# Format -# • Everything after "#" is a comment -# • Arguments are separated by ";". They are: - -# supported ; desired ; expected - -# • The supported may have the threshold distance reset as a first item, eg 50, en, fr -# A line starting with @debug will reach a statement in the test code where you can put a breakpoint for debugging -# The test code also supports reformatting this file, by setting the REFORMAT flag. - -################################################## -# testParentLocales - -# es-419, es-AR, and es-MX are in a cluster; es is in a different one - -es-419, es-ES ; es-AR ; es-419 -es-ES, es-419 ; es-AR ; es-419 - -es-419, es ; es-AR ; es-419 -es, es-419 ; es-AR ; es-419 - -es-MX, es ; es-AR ; es-MX -es, es-MX ; es-AR ; es-MX - -# en-GB, en-AU, and en-NZ are in a cluster; en in a different one - -en-GB, en-US ; en-AU ; en-GB -en-US, en-GB ; en-AU ; en-GB - -en-GB, en ; en-AU ; en-GB -en, en-GB ; en-AU ; en-GB - -en-NZ, en-US ; en-AU ; en-NZ -en-US, en-NZ ; en-AU ; en-NZ - -en-NZ, en ; en-AU ; en-NZ -en, en-NZ ; en-AU ; en-NZ - -# pt-AU and pt-PT in one cluster; pt-BR in another - -pt-PT, pt-BR ; pt-AO ; pt-PT -pt-BR, pt-PT ; pt-AO ; pt-PT - -pt-PT, pt ; pt-AO ; pt-PT -pt, pt-PT ; pt-AO ; pt-PT - -zh-MO, zh-TW ; zh-HK ; zh-MO -zh-TW, zh-MO ; zh-HK ; zh-MO - -zh-MO, zh-TW ; zh-HK ; zh-MO -zh-TW, zh-MO ; zh-HK ; zh-MO - -zh-MO, zh-CN ; zh-HK ; zh-MO -zh-CN, zh-MO ; zh-HK ; zh-MO - -zh-MO, zh ; zh-HK ; zh-MO -zh, zh-MO ; zh-HK ; zh-MO - -################################################## -# testChinese - -zh-CN, zh-TW, iw ; zh-Hant-TW ; zh-TW -zh-CN, zh-TW, iw ; zh-Hant ; zh-TW -zh-CN, zh-TW, iw ; zh-TW ; zh-TW -zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN -zh-CN, zh-TW, iw ; zh-CN ; zh-CN -zh-CN, zh-TW, iw ; zh ; zh-CN - -################################################## -# testenGB - -fr, en, en-GB, es-419, es-MX, es ; en-NZ ; en-GB -fr, en, en-GB, es-419, es-MX, es ; es-ES ; es -fr, en, en-GB, es-419, es-MX, es ; es-AR ; es-419 -fr, en, en-GB, es-419, es-MX, es ; es-MX ; es-MX - -################################################## -# testFallbacks - -91, en, hi ; sa ; hi - -################################################## -# testBasics - -fr, en-GB, en ; en-GB ; en-GB -fr, en-GB, en ; en ; en -fr, en-GB, en ; fr ; fr -fr, en-GB, en ; ja ; fr # return first if no match - -################################################## -# testFallback - -# check that script fallbacks are handled right - -zh-CN, zh-TW, iw ; zh-Hant ; zh-TW -zh-CN, zh-TW, iw ; zh ; zh-CN -zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN -zh-CN, zh-TW, iw ; zh-Hant-HK ; zh-TW -zh-CN, zh-TW, iw ; he-IT ; iw - -################################################## -# testSpecials - -# check that nearby languages are handled - -en, fil, ro, nn ; tl ; fil -en, fil, ro, nn ; mo ; ro -en, fil, ro, nn ; nb ; nn - -# make sure default works - -en, fil, ro, nn ; ja ; en - -################################################## -# testRegionalSpecials - -# verify that en-AU is closer to en-GB than to en (which is en-US) - -en, en-GB, es, es-419 ; es-MX ; es-419 -en, en-GB, es, es-419 ; en-AU ; en-GB -en, en-GB, es, es-419 ; es-ES ; es - -################################################## -# testHK - -# HK and MO are closer to each other for Hant than to TW - -zh, zh-TW, zh-MO ; zh-HK ; zh-MO -zh, zh-TW, zh-HK ; zh-MO ; zh-HK - -################################################## -# testMatch-exact - -# see localeDistance.txt - -################################################## -# testMatch-none - -# see localeDistance.txt - -################################################## -# testMatch-matchOnMazimized - -zh, zh-Hant ; und-TW ; zh-Hant # und-TW should be closer to zh-Hant than to zh -en-Hant-TW, und-TW ; zh-Hant ; und-TW # zh-Hant should be closer to und-TW than to en-Hant-TW -en-Hant-TW, und-TW ; zh ; und-TW # zh should be closer to und-TW than to en-Hant-TW - -################################################## -# testMatchGrandfatheredCode - -fr, i-klingon, en-Latn-US ; en-GB-oed ; en-Latn-US - -################################################## -# testGetBestMatchForList-exactMatch -fr, en-GB, ja, es-ES, es-MX ; ja, de ; ja - -################################################## -# testGetBestMatchForList-simpleVariantMatch -fr, en-GB, ja, es-ES, es-MX ; de, en-US ; en-GB # Intentionally avoiding a perfect-match or two candidates for variant matches. - -# Fallback. - -fr, en-GB, ja, es-ES, es-MX ; de, zh ; fr - -################################################## -# testGetBestMatchForList-matchOnMaximized -# Check that if the preference is maximized already, it works as well. - -en, ja ; ja-Jpan-JP, en-AU ; ja # Match for ja-Jpan-JP (maximized already) - -# ja-JP matches ja on likely subtags, and it's listed first, thus it wins over the second preference en-GB. - -en, ja ; ja-JP, en-US ; ja # Match for ja-Jpan-JP (maximized already) - -# Check that if the preference is maximized already, it works as well. - -en, ja ; ja-Jpan-JP, en-US ; ja # Match for ja-Jpan-JP (maximized already) - -################################################## -# testGetBestMatchForList-noMatchOnMaximized -# Regression test for http://b/5714572 . -# de maximizes to de-DE. Pick the exact match for the secondary language instead. -en, de, fr, ja ; de-CH, fr ; de - -################################################## -# testBestMatchForTraditionalChinese - -# Scenario: An application that only supports Simplified Chinese (and some other languages), -# but does not support Traditional Chinese. zh-Hans-CN could be replaced with zh-CN, zh, or -# zh-Hans, it wouldn't make much of a difference. - -# The script distance (simplified vs. traditional Han) is considered small enough -# to be an acceptable match. The regional difference is considered almost insignificant. - -fr, zh-Hans-CN, en-US ; zh-TW ; zh-Hans-CN -fr, zh-Hans-CN, en-US ; zh-Hant ; zh-Hans-CN - -# For geo-political reasons, you might want to avoid a zh-Hant -> zh-Hans match. -# In this case, if zh-TW, zh-HK or a tag starting with zh-Hant is requested, you can -# change your call to getBestMatch to include a 2nd language preference. -# "en" is a better match since its distance to "en-US" is closer than the distance -# from "zh-TW" to "zh-CN" (script distance). - -fr, zh-Hans-CN, en-US ; zh-TW, en ; en-US -fr, zh-Hans-CN, en-US ; zh-Hant-CN, en, en ; en-US -fr, zh-Hans-CN, en-US ; zh-Hans, en ; zh-Hans-CN - -################################################## -# testUndefined -# When the undefined language doesn't match anything in the list, -# getBestMatch returns the default, as usual. - -it, fr ; und ; it - -# When it *does* occur in the list, bestMatch returns it, as expected. -it, und ; und ; und - -# The unusual part: max("und") = "en-Latn-US", and since matching is based on maximized -# tags, the undefined language would normally match English. But that would produce the -# counterintuitive results that getBestMatch("und", XLocaleMatcher("it,en")) would be "en", and -# getBestMatch("en", XLocaleMatcher("it,und")) would be "und". - -# To avoid that, we change the matcher's definitions of max -# so that max("und")="und". That produces the following, more desirable -# results: - -it, en ; und ; it -it, und ; en ; it - -################################################## -# testGetBestMatch-regionDistance - -es-AR, es ; es-MX ; es-AR -fr, en, en-GB ; en-CA ; en-GB -de-AT, de-DE, de-CH ; de ; de-DE - -################################################## -# testAsymmetry - -mul, nl ; af ; nl # af => nl -mul, af ; nl ; mul # but nl !=> af - -################################################## -# testGetBestMatchForList-matchOnMaximized2 - -# ja-JP matches ja on likely subtags, and it's listed first, thus it wins over the second preference en-GB. - -fr, en-GB, ja, es-ES, es-MX ; ja-JP, en-GB ; ja # Match for ja-JP, with likely region subtag - -# Check that if the preference is maximized already, it works as well. - -fr, en-GB, ja, es-ES, es-MX ; ja-Jpan-JP, en-GB ; ja # Match for ja-Jpan-JP (maximized already) - -################################################## -# testGetBestMatchForList-closeEnoughMatchOnMaximized - -en-GB, en, de, fr, ja ; de-CH, fr ; de -en-GB, en, de, fr, ja ; en-US, ar, nl, de, ja ; en - -################################################## -# testGetBestMatchForPortuguese - -# pt might be supported and not pt-PT - -# European user who prefers Spanish over Brazillian Portuguese as a fallback. - -pt-PT, pt-BR, es, es-419 ; pt-PT, es, pt ; pt-PT -pt-PT, pt, es, es-419 ; pt-PT, es, pt ; pt-PT # pt implicit - -# Brazillian user who prefers South American Spanish over European Portuguese as a fallback. -# The asymmetry between this case and above is because it's "pt-PT" that's missing between the -# matchers as "pt-BR" is a much more common language. - -pt-PT, pt-BR, es, es-419 ; pt, es-419, pt-PT ; pt-BR -pt-PT, pt-BR, es, es-419 ; pt-PT, es, pt ; pt-PT -pt-PT, pt, es, es-419 ; pt-PT, es, pt ; pt-PT -pt-PT, pt, es, es-419 ; pt, es-419, pt-PT ; pt - -pt-BR, es, es-419 ; pt, es-419, pt-PT ; pt-BR - -# Code that adds the user's country can get "pt-US" for a user's language. -# That should fall back to "pt-BR". - -pt-PT, pt-BR, es, es-419 ; pt-US, pt-PT ; pt-BR -pt-PT, pt, es, es-419 ; pt-US, pt-PT, pt ; pt # pt-BR implicit - -################################################## -# testVariantWithScriptMatch 1 and 2 - -fr, en, sv ; en-GB ; en -fr, en, sv ; en-GB ; en -en, sv ; en-GB, sv ; en - -################################################## -# testLongLists - -en, sv ; sv ; sv -af, am, ar, az, be, bg, bn, bs, ca, cs, cy, cy, da, de, el, en, en-GB, es, es-419, et, eu, fa, fi, fil, fr, ga, gl, gu, hi, hr, hu, hy, id, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, ne, nl, no, pa, pl, pt, pt-PT, ro, ru, si, sk, sl, sq, sr, sr-Latn, sv, sw, ta, te, th, tr, uk, ur, uz, vi, zh-CN, zh-TW, zu ; sv ; sv -af, af-NA, af-ZA, agq, agq-CM, ak, ak-GH, am, am-ET, ar, ar-001, ar-AE, ar-BH, ar-DJ, ar-DZ, ar-EG, ar-EH, ar-ER, ar-IL, ar-IQ, ar-JO, ar-KM, ar-KW, ar-LB, ar-LY, ar-MA, ar-MR, ar-OM, ar-PS, ar-QA, ar-SA, ar-SD, ar-SO, ar-SS, ar-SY, ar-TD, ar-TN, ar-YE, as, as-IN, asa, asa-TZ, ast, ast-ES, az, az-Cyrl, az-Cyrl-AZ, az-Latn, az-Latn-AZ, bas, bas-CM, be, be-BY, bem, bem-ZM, bez, bez-TZ, bg, bg-BG, bm, bm-ML, bn, bn-BD, bn-IN, bo, bo-CN, bo-IN, br, br-FR, brx, brx-IN, bs, bs-Cyrl, bs-Cyrl-BA, bs-Latn, bs-Latn-BA, ca, ca-AD, ca-ES, ca-ES-VALENCIA, ca-FR, ca-IT, ce, ce-RU, cgg, cgg-UG, chr, chr-US, ckb, ckb-IQ, ckb-IR, cs, cs-CZ, cu, cu-RU, cy, cy-GB, da, da-DK, da-GL, dav, dav-KE, de, de-AT, de-BE, de-CH, de-DE, de-LI, de-LU, dje, dje-NE, dsb, dsb-DE, dua, dua-CM, dyo, dyo-SN, dz, dz-BT, ebu, ebu-KE, ee, ee-GH, ee-TG, el, el-CY, el-GR, en, en-001, en-150, en-AG, en-AI, en-AS, en-AT, en-AU, en-BB, en-BE, en-BI, en-BM, en-BS, en-BW, en-BZ, en-CA, en-CC, en-CH, en-CK, en-CM, en-CX, en-CY, en-DE, en-DG, en-DK, en-DM, en-ER, en-FI, en-FJ, en-FK, en-FM, en-GB, en-GD, en-GG, en-GH, en-GI, en-GM, en-GU, en-GY, en-HK, en-IE, en-IL, en-IM, en-IN, en-IO, en-JE, en-JM, en-KE, en-KI, en-KN, en-KY, en-LC, en-LR, en-LS, en-MG, en-MH, en-MO, en-MP, en-MS, en-MT, en-MU, en-MW, en-MY, en-NA, en-NF, en-NG, en-NL, en-NR, en-NU, en-NZ, en-PG, en-PH, en-PK, en-PN, en-PR, en-PW, en-RW, en-SB, en-SC, en-SD, en-SE, en-SG, en-SH, en-SI, en-SL, en-SS, en-SX, en-SZ, en-TC, en-TK, en-TO, en-TT, en-TV, en-TZ, en-UG, en-UM, en-US, en-US-POSIX, en-VC, en-VG, en-VI, en-VU, en-WS, en-ZA, en-ZM, en-ZW, eo, eo-001, es, es-419, es-AR, es-BO, es-CL, es-CO, es-CR, es-CU, es-DO, es-EA, es-EC, es-ES, es-GQ, es-GT, es-HN, es-IC, es-MX, es-NI, es-PA, es-PE, es-PH, es-PR, es-PY, es-SV, es-US, es-UY, es-VE, et, et-EE, eu, eu-ES, ewo, ewo-CM, fa, fa-AF, fa-IR, ff, ff-CM, ff-GN, ff-MR, ff-SN, fi, fi-FI, fil, fil-PH, fo, fo-DK, fo-FO, fr, fr-BE, fr-BF, fr-BI, fr-BJ, fr-BL, fr-CA, fr-CD, fr-CF, fr-CG, fr-CH, fr-CI, fr-CM, fr-DJ, fr-DZ, fr-FR, fr-GA, fr-GF, fr-GN, fr-GP, fr-GQ, fr-HT, fr-KM, fr-LU, fr-MA, fr-MC, fr-MF, fr-MG, fr-ML, fr-MQ, fr-MR, fr-MU, fr-NC, fr-NE, fr-PF, fr-PM, fr-RE, fr-RW, fr-SC, fr-SN, fr-SY, fr-TD, fr-TG, fr-TN, fr-VU, fr-WF, fr-YT, fur, fur-IT, fy, fy-NL, ga, ga-IE, gd, gd-GB, gl, gl-ES, gsw, gsw-CH, gsw-FR, gsw-LI, gu, gu-IN, guz, guz-KE, gv, gv-IM, ha, ha-GH, ha-NE, ha-NG, haw, haw-US, he, he-IL, hi, hi-IN, hr, hr-BA, hr-HR, hsb, hsb-DE, hu, hu-HU, hy, hy-AM, id, id-ID, ig, ig-NG, ii, ii-CN, is, is-IS, it, it-CH, it-IT, it-SM, ja, ja-JP, jgo, jgo-CM, jmc, jmc-TZ, ka, ka-GE, kab, kab-DZ, kam, kam-KE, kde, kde-TZ, kea, kea-CV, khq, khq-ML, ki, ki-KE, kk, kk-KZ, kkj, kkj-CM, kl, kl-GL, kln, kln-KE, km, km-KH, kn, kn-IN, ko, ko-KP, ko-KR, kok, kok-IN, ks, ks-IN, ksb, ksb-TZ, ksf, ksf-CM, ksh, ksh-DE, kw, kw-GB, ky, ky-KG, lag, lag-TZ, lb, lb-LU, lg, lg-UG, lkt, lkt-US, ln, ln-AO, ln-CD, ln-CF, ln-CG, lo, lo-LA, lrc, lrc-IQ, lrc-IR, lt, lt-LT, lu, lu-CD, luo, luo-KE, luy, luy-KE, lv, lv-LV, mas, mas-KE, mas-TZ, mer, mer-KE, mfe, mfe-MU, mg, mg-MG, mgh, mgh-MZ, mgo, mgo-CM, mk, mk-MK, ml, ml-IN, mn, mn-MN, mr, mr-IN, ms, ms-BN, ms-MY, ms-SG, mt, mt-MT, mua, mua-CM, my, my-MM, mzn, mzn-IR, naq, naq-NA, nb, nb-NO, nb-SJ, nd, nd-ZW, ne, ne-IN, ne-NP, nl, nl-AW, nl-BE, nl-BQ, nl-CW, nl-NL, nl-SR, nl-SX, nmg, nmg-CM, nn, nn-NO, nnh, nnh-CM, nus, nus-SS, nyn, nyn-UG, om, om-ET, om-KE, or, or-IN, os, os-GE, os-RU, pa, pa-Arab, pa-Arab-PK, pa-Guru, pa-Guru-IN, pl, pl-PL, prg, prg-001, ps, ps-AF, pt, pt-AO, pt-BR, pt-CV, pt-GW, pt-MO, pt-MZ, pt-PT, pt-ST, pt-TL, qu, qu-BO, qu-EC, qu-PE, rm, rm-CH, rn, rn-BI, ro, ro-MD, ro-RO, rof, rof-TZ, root, ru, ru-BY, ru-KG, ru-KZ, ru-MD, ru-RU, ru-UA, rw, rw-RW, rwk, rwk-TZ, sah, sah-RU, saq, saq-KE, sbp, sbp-TZ, se, se-FI, se-NO, se-SE, seh, seh-MZ, ses, ses-ML, sg, sg-CF, shi, shi-Latn, shi-Latn-MA, shi-Tfng, shi-Tfng-MA, si, si-LK, sk, sk-SK, sl, sl-SI, smn, smn-FI, sn, sn-ZW, so, so-DJ, so-ET, so-KE, so-SO, sq, sq-AL, sq-MK, sq-XK, sr, sr-Cyrl, sr-Cyrl-BA, sr-Cyrl-ME, sr-Cyrl-RS, sr-Cyrl-XK, sr-Latn, sr-Latn-BA, sr-Latn-ME, sr-Latn-RS, sr-Latn-XK, sv, sv-AX, sv-FI, sv-SE, sw, sw-CD, sw-KE, sw-TZ, sw-UG, ta, ta-IN, ta-LK, ta-MY, ta-SG, te, te-IN, teo, teo-KE, teo-UG, th, th-TH, ti, ti-ER, ti-ET, tk, tk-TM, to, to-TO, tr, tr-CY, tr-TR, twq, twq-NE, tzm, tzm-MA, ug, ug-CN, uk, uk-UA, ur, ur-IN, ur-PK, uz, uz-Arab, uz-Arab-AF, uz-Cyrl, uz-Cyrl-UZ, uz-Latn, uz-Latn-UZ, vai, vai-Latn, vai-Latn-LR, vai-Vaii, vai-Vaii-LR, vi, vi-VN, vo, vo-001, vun, vun-TZ, wae, wae-CH, xog, xog-UG, yav, yav-CM, yi, yi-001, yo, yo-BJ, yo-NG, zgh, zgh-MA, zh, zh-Hans, zh-Hans-CN, zh-Hans-HK, zh-Hans-MO, zh-Hans-SG, zh-Hant, zh-Hant-HK, zh-Hant-MO, zh-Hant-TW, zu, zu-ZA ; sv ; sv - -################################################## -# test8288 - -it, en ; und ; it -it, en ; und, en ; en - -# examples from -# http://unicode.org/repos/cldr/tags/latest/common/bcp47/ -# http://unicode.org/repos/cldr/tags/latest/common/validity/variant.xml - -################################################## -# testUnHack - -en-NZ, en-IT ; en-US ; en-NZ - -################################################## -# testEmptySupported => null - ; en ; null - -################################################## -# testVariantsAndExtensions -################################################## -# tests the .combine() method - -und, fr ; fr-BE-fonipa ; fr ; fr-BE-fonipa -und, fr-CA ; fr-BE-fonipa ; fr-CA ; fr-BE-fonipa -und, fr-fonupa ; fr-BE-fonipa ; fr-fonupa ; fr-BE-fonipa -und, no ; nn-BE-fonipa ; no ; no-BE-fonipa -und, en-GB-u-sd-gbsct ; en-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin ; en-GB-u-sd-gbsct ; en-GB-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin - -en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; fr-PSCRACK ; fr-PSCRACK -en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; fr ; fr-PSCRACK -en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; de-CH ; de-PSCRACK - -################################################## -# testClusters -# we favor es-419 over others in cluster. Clusters: es- {ES, MA, EA} {419, AR, MX} - -und, es, es-MA, es-MX, es-419 ; es-AR ; es-419 -und, es-MA, es, es-419, es-MX ; es-AR ; es-419 -und, es, es-MA, es-MX, es-419 ; es-EA ; es -und, es-MA, es, es-419, es-MX ; es-EA ; es - -# of course, fall back to within cluster - -und, es, es-MA, es-MX ; es-AR ; es-MX -und, es-MA, es, es-MX ; es-AR ; es-MX -und, es-MA, es-MX, es-419 ; es-EA ; es-MA -und, es-MA, es-419, es-MX ; es-EA ; es-MA - -# we favor es-GB over others in cluster. Clusters: en- {US, GU, VI} {GB, IN, ZA} - -und, en, en-GU, en-IN, en-GB ; en-ZA ; en-GB -und, en-GU, en, en-GB, en-IN ; en-ZA ; en-GB -und, en, en-GU, en-IN, en-GB ; en-VI ; en -und, en-GU, en, en-GB, en-IN ; en-VI ; en - -# of course, fall back to within cluster - -und, en, en-GU, en-IN ; en-ZA ; en-IN -und, en-GU, en, en-IN ; en-ZA ; en-IN -und, en-GU, en-IN, en-GB ; en-VI ; en-GU -und, en-GU, en-GB, en-IN ; en-VI ; en-GU - -################################################## -# testThreshold -@Threshold=60 - -50, und, fr-CA-fonupa ; fr-BE-fonipa ; fr-CA-fonupa ; fr-BE-fonipa -50, und, fr-Cyrl-CA-fonupa ; fr-BE-fonipa ; fr-Cyrl-CA-fonupa ; fr-Cyrl-BE-fonipa - -@Threshold=-1 # restore - -################################################## -# testScriptFirst -@DistanceOption=SCRIPT_FIRST -@debug - -ru, fr ; zh, pl ; fr -ru, fr ; zh-Cyrl, pl ; ru -hr, en-Cyrl; sr ; en-Cyrl -da, ru, hr; sr ; ru \ No newline at end of file diff --git a/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt b/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt deleted file mode 100644 index 4f4c6093..00000000 --- a/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt +++ /dev/null @@ -1,226 +0,0 @@ -# basics -fr, en-GB, en ; en-GB ; en-GB -fr, en-GB, en ; en-US ; en -fr, en-GB, en ; fr-FR ; fr -fr, en-GB, en ; ja-JP ; fr - -# script fallbacks -zh-CN, zh-TW, iw ; zh-Hant ; zh-TW -zh-CN, zh-TW, iw ; zh ; zh-CN -zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN -zh-CN, zh-TW, iw ; zh-Hant-HK ; zh-TW -zh-CN, zh-TW, iw ; he-IT ; iw ; iw - -# language-specific script fallbacks 1 -en, sr, nl ; sr-Latn ; sr -en, sr, nl ; sh ; sr # different script, but seems okay and is as CLDR suggests -en, sr, nl ; hr ; en -en, sr, nl ; bs ; en -en, sr, nl ; nl-Cyrl ; sr - -# language-specific script fallbacks 2 -en, sh ; sr ; sh -en, sh ; sr-Cyrl ; sh -en, sh ; hr ; sh - -# don't match hr to sr-Latn -en, sr-Latn ; hr ; en - -# both deprecated and not -fil, tl, iw, he ; he-IT ; he -fil, tl, iw, he ; he ; he -fil, tl, iw, he ; iw ; iw -fil, tl, iw, he ; fil-IT ; fil -fil, tl, iw, he ; fil ; fil -fil, tl, iw, he ; tl ; tl - -# nearby languages -en, fil, ro, nn ; tl ; fil -en, fil, ro, nn ; mo ; ro -en, fil, ro, nn ; nb ; nn -en, fil, ro, nn ; ja ; en - -# nearby languages: Nynorsk to Bokmål -en, nb ; nn ; nb - -# nearby languages: Danish does not match nn -en, nn ; da ; en - -# nearby languages: Danish matches no -en, no ; da ; no - -# nearby languages: Danish matches nb -en, nb ; da ; nb - -# prefer matching languages over language variants. -nn, en-GB ; no, en-US ; en-GB -nn, en-GB ; nb, en-US ; en-GB - -# deprecated version is closer than same language with other differences -nl, he, en-GB ; iw, en-US ; he - -# macro equivalent is closer than same language with other differences -nl, zh, en-GB, no ; cmn, en-US ; zh -nl, zh, en-GB, no ; nb, en-US ; no - -# legacy equivalent is closer than same language with other differences -nl, fil, en-GB ; tl, en-US ; fil - -# distinguish near equivalents -en, ro, mo, ro-MD ; ro ; ro -en, ro, mo, ro-MD ; mo ; mo -en, ro, mo, ro-MD ; ro-MD ; ro-MD - -# maximization of legacy -sr-Cyrl, sr-Latn, ro, ro-MD ; sh ; sr-Latn -sr-Cyrl, sr-Latn, ro, ro-MD ; mo ; ro-MD - -# empty - ; fr ; und - ; en ; und - -# private use subtags -fr, en-GB, x-bork, es-ES, es-419 ; x-piglatin ; fr -fr, en-GB, x-bork, es-ES, es-419 ; x-bork ; x-bork - -# grandfathered codes -fr, i-klingon, en-Latn-US ; en-GB-oed ; en-Latn-US -fr, i-klingon, en-Latn-US ; i-klingon ; tlh - - -# simple variant match -fr, en-GB, ja, es-ES, es-MX ; de, en-US ; en-GB -fr, en-GB, ja, es-ES, es-MX ; de, zh ; fr - -# best match for traditional Chinese -fr, zh-Hans-CN, en-US ; zh-TW ; zh-Hans-CN -fr, zh-Hans-CN, en-US ; zh-Hant ; zh-Hans-CN -fr, zh-Hans-CN, en-US ; zh-TW, en ; en-US -fr, zh-Hans-CN, en-US ; zh-Hant-CN, en ; en-US -fr, zh-Hans-CN, en-US ; zh-Hans, en ; zh-Hans-CN - -# more specific script should win in case regions are identical -af, af-Latn, af-Arab ; af ; af -af, af-Latn, af-Arab ; af-ZA ; af -af, af-Latn, af-Arab ; af-Latn-ZA ; af-Latn -af, af-Latn, af-Arab ; af-Latn ; af-Latn - -# more specific region should win -nl, nl-NL, nl-BE ; nl ; nl -nl, nl-NL, nl-BE ; nl-Latn ; nl -nl, nl-NL, nl-BE ; nl-Latn-NL ; nl-NL -nl, nl-NL, nl-BE ; nl-NL ; nl-NL - -# region may replace matched if matched is enclosing -es-419,es ; es-MX ; es-419 ; es-MX -es-419,es ; es-SG ; es - -# more specific region wins over more specific script -nl, nl-Latn, nl-NL, nl-BE ; nl ; nl -nl, nl-Latn, nl-NL, nl-BE ; nl-Latn ; nl-Latn -nl, nl-Latn, nl-NL, nl-BE ; nl-NL ; nl-NL -nl, nl-Latn, nl-NL, nl-BE ; nl-Latn-NL ; nl-NL - -# region distance Portuguese -pt, pt-PT ; pt-ES ; pt-PT - -# if no preferred locale specified, pick top language, not regional -en, fr, fr-CA, fr-CH ; fr-US ; fr #TODO: ; fr-u-rg-US - -# region distance German -de-AT, de-DE, de-CH ; de ; de-DE - -# en-AU is closer to en-GB than to en (which is en-US) -en, en-GB, es-ES, es-419 ; en-AU ; en-GB -en, en-GB, es-ES, es-419 ; es-MX ; es-419 ; es-MX -en, en-GB, es-ES, es-419 ; es-PT ; es-ES - -# undefined -it, fr ; und ; it - -# und does not match en -it, en ; und ; it - -# undefined in priority list -it, und ; und ; und -it, und ; en ; it - -# undefined -it, fr, zh ; und-FR ; fr -it, fr, zh ; und-CN ; zh -it, fr, zh ; und-Hans ; zh -it, fr, zh ; und-Hant ; zh -it, fr, zh ; und-Latn ; it - -# match on maximized tag -fr, en-GB, ja, es-ES, es-MX ; ja-JP, en-GB ; ja -fr, en-GB, ja, es-ES, es-MX ; ja-Jpan-JP, en-GB ; ja - -# pick best maximized tag -ja, ja-Jpan-US, ja-JP, en, ru ; ja-Jpan, ru ; ja -ja, ja-Jpan-US, ja-JP, en, ru ; ja-JP, ru ; ja-JP -ja, ja-Jpan-US, ja-JP, en, ru ; ja-US, ru ; ja-Jpan-US - -# termination: pick best maximized match -ja, ja-Jpan, ja-JP, en, ru ; ja-Jpan-JP, ru ; ja-JP -ja, ja-Jpan, ja-JP, en, ru ; ja-Jpan, ru ; ja-Jpan - -# same language over exact, but distinguish when user is explicit -fr, en-GB, ja, es-ES, es-MX ; ja, de ; ja -en, de, fr, ja ; de-CH, fr ; de # TODO: ; de-u-rg-CH -en-GB, nl ; en, nl ; en-GB -en-GB, nl ; en, nl, en-GB ; nl - -# parent relation preserved -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-150 ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-AU ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-BE ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-GG ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-GI ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-HK ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IE ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IM ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IN ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-JE ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-MT ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-NZ ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-PK ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-SG ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-DE ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-MT ; en-GB -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-AR ; es-419 ; es-AR -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-BO ; es-419 ; es-BO -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CL ; es-419 ; es-CL -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CO ; es-419 ; es-CO -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CR ; es-419 ; es-CR -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CU ; es-419 ; es-CU -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-DO ; es-419 ; es-DO -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-EC ; es-419 ; es-EC -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-GT ; es-419 ; es-GT -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-HN ; es-419 ; es-HN -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-MX ; es-419 ; es-MX -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-NI ; es-419 ; es-NI -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PA ; es-419 ; es-PA -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PE ; es-419 ; es-PE -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PR ; es-419 ; es-PR -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PT ; es -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PY ; es-419 ; es-PY -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-SV ; es-419 ; es-SV -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-US ; es-419 -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-UY ; es-419 ; es-UY -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-VE ; es-419 ; es-VE -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-AO ; pt-PT -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-CV ; pt-PT -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-GW ; pt-PT -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-MO ; pt-PT -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-MZ ; pt-PT -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-ST ; pt-PT -en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-TL ; pt-PT - -# preserve extensions -en, de, sl-nedis ; de-FR-u-co-phonebk ; de ; de-u-co-phonebk -en, de, sl-nedis ; sl-nedis-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur -en, de, sl-nedis ; sl-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur -en, de, sl-nedis ; sl-HR-nedis-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur -en, de, sl-nedis ; de-t-m0-iso-i0-pinyin ; de ; de-t-m0-iso-i0-pinyin - diff --git a/vendor/golang.org/x/text/message/catalog.go b/vendor/golang.org/x/text/message/catalog.go deleted file mode 100644 index 068271de..00000000 --- a/vendor/golang.org/x/text/message/catalog.go +++ /dev/null @@ -1,36 +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 message - -// TODO: some types in this file will need to be made public at some time. -// Documentation and method names will reflect this by using the exported name. - -import ( - "golang.org/x/text/language" - "golang.org/x/text/message/catalog" -) - -// MatchLanguage reports the matched tag obtained from language.MatchStrings for -// the Matcher of the DefaultCatalog. -func MatchLanguage(preferred ...string) language.Tag { - c := DefaultCatalog - tag, _ := language.MatchStrings(c.Matcher(), preferred...) - return tag -} - -// DefaultCatalog is used by SetString. -var DefaultCatalog catalog.Catalog = defaultCatalog - -var defaultCatalog = catalog.NewBuilder() - -// SetString calls SetString on the initial default Catalog. -func SetString(tag language.Tag, key string, msg string) error { - return defaultCatalog.SetString(tag, key, msg) -} - -// Set calls Set on the initial default Catalog. -func Set(tag language.Tag, key string, msg ...catalog.Message) error { - return defaultCatalog.Set(tag, key, msg...) -} diff --git a/vendor/golang.org/x/text/message/catalog/catalog.go b/vendor/golang.org/x/text/message/catalog/catalog.go deleted file mode 100644 index 34a30d3c..00000000 --- a/vendor/golang.org/x/text/message/catalog/catalog.go +++ /dev/null @@ -1,369 +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 catalog defines collections of translated format strings. -// -// This package mostly defines types for populating catalogs with messages. The -// catmsg package contains further definitions for creating custom message and -// dictionary types as well as packages that use Catalogs. -// -// Package catalog defines various interfaces: Dictionary, Loader, and Message. -// A Dictionary maintains a set of translations of format strings for a single -// language. The Loader interface defines a source of dictionaries. A -// translation of a format string is represented by a Message. -// -// -// Catalogs -// -// A Catalog defines a programmatic interface for setting message translations. -// It maintains a set of per-language dictionaries with translations for a set -// of keys. For message translation to function properly, a translation should -// be defined for each key for each supported language. A dictionary may be -// underspecified, though, if there is a parent language that already defines -// the key. For example, a Dictionary for "en-GB" could leave out entries that -// are identical to those in a dictionary for "en". -// -// -// Messages -// -// A Message is a format string which varies on the value of substitution -// variables. For instance, to indicate the number of results one could want "no -// results" if there are none, "1 result" if there is 1, and "%d results" for -// any other number. Catalog is agnostic to the kind of format strings that are -// used: for instance, messages can follow either the printf-style substitution -// from package fmt or use templates. -// -// A Message does not substitute arguments in the format string. This job is -// reserved for packages that render strings, such as message, that use Catalogs -// to selected string. This separation of concerns allows Catalog to be used to -// store any kind of formatting strings. -// -// -// Selecting messages based on linguistic features of substitution arguments -// -// Messages may vary based on any linguistic features of the argument values. -// The most common one is plural form, but others exist. -// -// Selection messages are provided in packages that provide support for a -// specific linguistic feature. The following snippet uses plural.Select: -// -// catalog.Set(language.English, "You are %d minute(s) late.", -// plural.Select(1, -// "one", "You are 1 minute late.", -// "other", "You are %d minutes late.")) -// -// In this example, a message is stored in the Catalog where one of two messages -// is selected based on the first argument, a number. The first message is -// selected if the argument is singular (identified by the selector "one") and -// the second message is selected in all other cases. The selectors are defined -// by the plural rules defined in CLDR. The selector "other" is special and will -// always match. Each language always defines one of the linguistic categories -// to be "other." For English, singular is "one" and plural is "other". -// -// Selects can be nested. This allows selecting sentences based on features of -// multiple arguments or multiple linguistic properties of a single argument. -// -// -// String interpolation -// -// There is often a lot of commonality between the possible variants of a -// message. For instance, in the example above the word "minute" varies based on -// the plural catogory of the argument, but the rest of the sentence is -// identical. Using interpolation the above message can be rewritten as: -// -// catalog.Set(language.English, "You are %d minute(s) late.", -// catalog.Var("minutes", -// plural.Select(1, "one", "minute", "other", "minutes")), -// catalog.String("You are %[1]d ${minutes} late.")) -// -// Var is defined to return the variable name if the message does not yield a -// match. This allows us to further simplify this snippet to -// -// catalog.Set(language.English, "You are %d minute(s) late.", -// catalog.Var("minutes", plural.Select(1, "one", "minute")), -// catalog.String("You are %d ${minutes} late.")) -// -// Overall this is still only a minor improvement, but things can get a lot more -// unwieldy if more than one linguistic feature is used to determine a message -// variant. Consider the following example: -// -// // argument 1: list of hosts, argument 2: list of guests -// catalog.Set(language.English, "%[1]v invite(s) %[2]v to their party.", -// catalog.Var("their", -// plural.Select(1, -// "one", gender.Select(1, "female", "her", "other", "his"))), -// catalog.Var("invites", plural.Select(1, "one", "invite")) -// catalog.String("%[1]v ${invites} %[2]v to ${their} party.")), -// -// Without variable substitution, this would have to be written as -// -// // argument 1: list of hosts, argument 2: list of guests -// catalog.Set(language.English, "%[1]v invite(s) %[2]v to their party.", -// plural.Select(1, -// "one", gender.Select(1, -// "female", "%[1]v invites %[2]v to her party." -// "other", "%[1]v invites %[2]v to his party."), -// "other", "%[1]v invites %[2]v to their party.") -// -// Not necessarily shorter, but using variables there is less duplication and -// the messages are more maintenance friendly. Moreover, languages may have up -// to six plural forms. This makes the use of variables more welcome. -// -// Different messages using the same inflections can reuse variables by moving -// them to macros. Using macros we can rewrite the message as: -// -// // argument 1: list of hosts, argument 2: list of guests -// catalog.SetString(language.English, "%[1]v invite(s) %[2]v to their party.", -// "%[1]v ${invites(1)} %[2]v to ${their(1)} party.") -// -// Where the following macros were defined separately. -// -// catalog.SetMacro(language.English, "invites", plural.Select(1, "one", "invite")) -// catalog.SetMacro(language.English, "their", plural.Select(1, -// "one", gender.Select(1, "female", "her", "other", "his"))), -// -// Placeholders use parentheses and the arguments to invoke a macro. -// -// -// Looking up messages -// -// Message lookup using Catalogs is typically only done by specialized packages -// and is not something the user should be concerned with. For instance, to -// express the tardiness of a user using the related message we defined earlier, -// the user may use the package message like so: -// -// p := message.NewPrinter(language.English) -// p.Printf("You are %d minute(s) late.", 5) -// -// Which would print: -// You are 5 minutes late. -// -// -// This package is UNDER CONSTRUCTION and its API may change. -package catalog // import "golang.org/x/text/message/catalog" - -// TODO: -// Some way to freeze a catalog. -// - Locking on each lockup turns out to be about 50% of the total running time -// for some of the benchmarks in the message package. -// Consider these: -// - Sequence type to support sequences in user-defined messages. -// - Garbage collection: Remove dictionaries that can no longer be reached -// as other dictionaries have been added that cover all possible keys. - -import ( - "errors" - "fmt" - - "golang.org/x/text/internal" - - "golang.org/x/text/internal/catmsg" - "golang.org/x/text/language" -) - -// A Catalog allows lookup of translated messages. -type Catalog interface { - // Languages returns all languages for which the Catalog contains variants. - Languages() []language.Tag - - // Matcher returns a Matcher for languages from this Catalog. - Matcher() language.Matcher - - // A Context is used for evaluating Messages. - Context(tag language.Tag, r catmsg.Renderer) *Context - - // This method also makes Catalog a private interface. - lookup(tag language.Tag, key string) (data string, ok bool) -} - -// NewFromMap creates a Catalog from the given map. If a Dictionary is -// underspecified the entry is retrieved from a parent language. -func NewFromMap(dictionaries map[string]Dictionary, opts ...Option) (Catalog, error) { - options := options{} - for _, o := range opts { - o(&options) - } - c := &catalog{ - dicts: map[language.Tag]Dictionary{}, - } - _, hasFallback := dictionaries[options.fallback.String()] - if hasFallback { - // TODO: Should it be okay to not have a fallback language? - // Catalog generators could enforce there is always a fallback. - c.langs = append(c.langs, options.fallback) - } - for lang, dict := range dictionaries { - tag, err := language.Parse(lang) - if err != nil { - return nil, fmt.Errorf("catalog: invalid language tag %q", lang) - } - if _, ok := c.dicts[tag]; ok { - return nil, fmt.Errorf("catalog: duplicate entry for tag %q after normalization", tag) - } - c.dicts[tag] = dict - if !hasFallback || tag != options.fallback { - c.langs = append(c.langs, tag) - } - } - if hasFallback { - internal.SortTags(c.langs[1:]) - } else { - internal.SortTags(c.langs) - } - c.matcher = language.NewMatcher(c.langs) - return c, nil -} - -// A Dictionary is a source of translations for a single language. -type Dictionary interface { - // Lookup returns a message compiled with catmsg.Compile for the given key. - // It returns false for ok if such a message could not be found. - Lookup(key string) (data string, ok bool) -} - -type catalog struct { - langs []language.Tag - dicts map[language.Tag]Dictionary - macros store - matcher language.Matcher -} - -func (c *catalog) Languages() []language.Tag { return c.langs } -func (c *catalog) Matcher() language.Matcher { return c.matcher } - -func (c *catalog) lookup(tag language.Tag, key string) (data string, ok bool) { - for ; ; tag = tag.Parent() { - if dict, ok := c.dicts[tag]; ok { - if data, ok := dict.Lookup(key); ok { - return data, true - } - } - if tag == language.Und { - break - } - } - return "", false -} - -// Context returns a Context for formatting messages. -// Only one Message may be formatted per context at any given time. -func (c *catalog) Context(tag language.Tag, r catmsg.Renderer) *Context { - return &Context{ - cat: c, - tag: tag, - dec: catmsg.NewDecoder(tag, r, &dict{&c.macros, tag}), - } -} - -// A Builder allows building a Catalog programmatically. -type Builder struct { - options - matcher language.Matcher - - index store - macros store -} - -type options struct { - fallback language.Tag -} - -// An Option configures Catalog behavior. -type Option func(*options) - -// Fallback specifies the default fallback language. The default is Und. -func Fallback(tag language.Tag) Option { - return func(o *options) { o.fallback = tag } -} - -// TODO: -// // Catalogs specifies one or more sources for a Catalog. -// // Lookups are in order. -// // This can be changed inserting a Catalog used for setting, which implements -// // Loader, used for setting in the chain. -// func Catalogs(d ...Loader) Option { -// return nil -// } -// -// func Delims(start, end string) Option {} -// -// func Dict(tag language.Tag, d ...Dictionary) Option - -// NewBuilder returns an empty mutable Catalog. -func NewBuilder(opts ...Option) *Builder { - c := &Builder{} - for _, o := range opts { - o(&c.options) - } - return c -} - -// SetString is shorthand for Set(tag, key, String(msg)). -func (c *Builder) SetString(tag language.Tag, key string, msg string) error { - return c.set(tag, key, &c.index, String(msg)) -} - -// Set sets the translation for the given language and key. -// -// When evaluation this message, the first Message in the sequence to msgs to -// evaluate to a string will be the message returned. -func (c *Builder) Set(tag language.Tag, key string, msg ...Message) error { - return c.set(tag, key, &c.index, msg...) -} - -// SetMacro defines a Message that may be substituted in another message. -// The arguments to a macro Message are passed as arguments in the -// placeholder the form "${foo(arg1, arg2)}". -func (c *Builder) SetMacro(tag language.Tag, name string, msg ...Message) error { - return c.set(tag, name, &c.macros, msg...) -} - -// ErrNotFound indicates there was no message for the given key. -var ErrNotFound = errors.New("catalog: message not found") - -// String specifies a plain message string. It can be used as fallback if no -// other strings match or as a simple standalone message. -// -// It is an error to pass more than one String in a message sequence. -func String(name string) Message { - return catmsg.String(name) -} - -// Var sets a variable that may be substituted in formatting patterns using -// named substitution of the form "${name}". The name argument is used as a -// fallback if the statements do not produce a match. The statement sequence may -// not contain any Var calls. -// -// The name passed to a Var must be unique within message sequence. -func Var(name string, msg ...Message) Message { - return &catmsg.Var{Name: name, Message: firstInSequence(msg)} -} - -// Context returns a Context for formatting messages. -// Only one Message may be formatted per context at any given time. -func (b *Builder) Context(tag language.Tag, r catmsg.Renderer) *Context { - return &Context{ - cat: b, - tag: tag, - dec: catmsg.NewDecoder(tag, r, &dict{&b.macros, tag}), - } -} - -// A Context is used for evaluating Messages. -// Only one Message may be formatted per context at any given time. -type Context struct { - cat Catalog - tag language.Tag // TODO: use compact index. - dec *catmsg.Decoder -} - -// Execute looks up and executes the message with the given key. -// It returns ErrNotFound if no message could be found in the index. -func (c *Context) Execute(key string) error { - data, ok := c.cat.lookup(c.tag, key) - if !ok { - return ErrNotFound - } - return c.dec.Execute(data) -} diff --git a/vendor/golang.org/x/text/message/catalog/catalog_test.go b/vendor/golang.org/x/text/message/catalog/catalog_test.go deleted file mode 100644 index 08bfdc7c..00000000 --- a/vendor/golang.org/x/text/message/catalog/catalog_test.go +++ /dev/null @@ -1,296 +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 catalog - -import ( - "bytes" - "path" - "reflect" - "strings" - "testing" - - "golang.org/x/text/internal/catmsg" - "golang.org/x/text/language" -) - -type entry struct { - tag, key string - msg interface{} -} - -func langs(s string) []language.Tag { - t, _, _ := language.ParseAcceptLanguage(s) - return t -} - -type testCase struct { - desc string - cat []entry - lookup []entry - fallback string - match []string - tags []language.Tag -} - -var testCases = []testCase{{ - desc: "empty catalog", - lookup: []entry{ - {"en", "key", ""}, - {"en", "", ""}, - {"nl", "", ""}, - }, - match: []string{ - "gr -> und", - "en-US -> und", - "af -> und", - }, - tags: nil, // not an empty list. -}, { - desc: "one entry", - cat: []entry{ - {"en", "hello", "Hello!"}, - }, - lookup: []entry{ - {"und", "hello", ""}, - {"nl", "hello", ""}, - {"en", "hello", "Hello!"}, - {"en-US", "hello", "Hello!"}, - {"en-GB", "hello", "Hello!"}, - {"en-oxendict", "hello", "Hello!"}, - {"en-oxendict-u-ms-metric", "hello", "Hello!"}, - }, - match: []string{ - "gr -> en", - "en-US -> en", - }, - tags: langs("en"), -}, { - desc: "hierarchical languages", - cat: []entry{ - {"en", "hello", "Hello!"}, - {"en-GB", "hello", "Hellø!"}, - {"en-US", "hello", "Howdy!"}, - {"en", "greetings", "Greetings!"}, - {"gsw", "hello", "Grüetzi!"}, - }, - lookup: []entry{ - {"und", "hello", ""}, - {"nl", "hello", ""}, - {"en", "hello", "Hello!"}, - {"en-US", "hello", "Howdy!"}, - {"en-GB", "hello", "Hellø!"}, - {"en-oxendict", "hello", "Hello!"}, - {"en-US-oxendict-u-ms-metric", "hello", "Howdy!"}, - - {"und", "greetings", ""}, - {"nl", "greetings", ""}, - {"en", "greetings", "Greetings!"}, - {"en-US", "greetings", "Greetings!"}, - {"en-GB", "greetings", "Greetings!"}, - {"en-oxendict", "greetings", "Greetings!"}, - {"en-US-oxendict-u-ms-metric", "greetings", "Greetings!"}, - }, - fallback: "gsw", - match: []string{ - "gr -> gsw", - "en-US -> en-US", - }, - tags: langs("gsw, en, en-GB, en-US"), -}, { - desc: "variables", - cat: []entry{ - {"en", "hello %s", []Message{ - Var("person", String("Jane")), - String("Hello ${person}!"), - }}, - {"en", "hello error", []Message{ - Var("person", String("Jane")), - noMatchMessage{}, // trigger sequence path. - String("Hello ${person."), - }}, - {"en", "fallback to var value", []Message{ - Var("you", noMatchMessage{}, noMatchMessage{}), - String("Hello ${you}."), - }}, - {"en", "scopes", []Message{ - Var("person1", String("Mark")), - Var("person2", String("Jane")), - Var("couple", - Var("person1", String("Joe")), - String("${person1} and ${person2}")), - String("Hello ${couple}."), - }}, - {"en", "missing var", String("Hello ${missing}.")}, - }, - lookup: []entry{ - {"en", "hello %s", "Hello Jane!"}, - {"en", "hello error", "Hello $!(MISSINGBRACE)"}, - {"en", "fallback to var value", "Hello you."}, - {"en", "scopes", "Hello Joe and Jane."}, - {"en", "missing var", "Hello missing."}, - }, - tags: langs("en"), -}, { - desc: "macros", - cat: []entry{ - {"en", "macro1", String("Hello ${macro1(1)}.")}, - {"en", "macro2", String("Hello ${ macro1(2) }!")}, - {"en", "macroWS", String("Hello ${ macro1( 2 ) }!")}, - {"en", "missing", String("Hello ${ missing(1 }.")}, - {"en", "badnum", String("Hello ${ badnum(1b) }.")}, - {"en", "undefined", String("Hello ${ undefined(1) }.")}, - {"en", "macroU", String("Hello ${ macroU(2) }!")}, - }, - lookup: []entry{ - {"en", "macro1", "Hello Joe."}, - {"en", "macro2", "Hello Joe!"}, - {"en-US", "macroWS", "Hello Joe!"}, - {"en-NL", "missing", "Hello $!(MISSINGPAREN)."}, - {"en", "badnum", "Hello $!(BADNUM)."}, - {"en", "undefined", "Hello undefined."}, - {"en", "macroU", "Hello macroU!"}, - }, - tags: langs("en"), -}} - -func setMacros(b *Builder) { - b.SetMacro(language.English, "macro1", String("Joe")) - b.SetMacro(language.Und, "macro2", String("${macro1(1)}")) - b.SetMacro(language.English, "macroU", noMatchMessage{}) -} - -type buildFunc func(t *testing.T, tc testCase) Catalog - -func initBuilder(t *testing.T, tc testCase) Catalog { - options := []Option{} - if tc.fallback != "" { - options = append(options, Fallback(language.MustParse(tc.fallback))) - } - cat := NewBuilder(options...) - for _, e := range tc.cat { - tag := language.MustParse(e.tag) - switch msg := e.msg.(type) { - case string: - - cat.SetString(tag, e.key, msg) - case Message: - cat.Set(tag, e.key, msg) - case []Message: - cat.Set(tag, e.key, msg...) - } - } - setMacros(cat) - return cat -} - -type dictionary map[string]string - -func (d dictionary) Lookup(key string) (data string, ok bool) { - data, ok = d[key] - return data, ok -} - -func initCatalog(t *testing.T, tc testCase) Catalog { - m := map[string]Dictionary{} - for _, e := range tc.cat { - m[e.tag] = dictionary{} - } - for _, e := range tc.cat { - var msg Message - switch x := e.msg.(type) { - case string: - msg = String(x) - case Message: - msg = x - case []Message: - msg = firstInSequence(x) - } - data, _ := catmsg.Compile(language.MustParse(e.tag), nil, msg) - m[e.tag].(dictionary)[e.key] = data - } - options := []Option{} - if tc.fallback != "" { - options = append(options, Fallback(language.MustParse(tc.fallback))) - } - c, err := NewFromMap(m, options...) - if err != nil { - t.Fatal(err) - } - // TODO: implement macros for fixed catalogs. - b := NewBuilder() - setMacros(b) - c.(*catalog).macros.index = b.macros.index - return c -} - -func TestMatcher(t *testing.T) { - test := func(t *testing.T, init buildFunc) { - for _, tc := range testCases { - for _, s := range tc.match { - a := strings.Split(s, "->") - t.Run(path.Join(tc.desc, a[0]), func(t *testing.T) { - cat := init(t, tc) - got, _ := language.MatchStrings(cat.Matcher(), a[0]) - want := language.MustParse(strings.TrimSpace(a[1])) - if got != want { - t.Errorf("got %q; want %q", got, want) - } - }) - } - } - } - t.Run("Builder", func(t *testing.T) { test(t, initBuilder) }) - t.Run("Catalog", func(t *testing.T) { test(t, initCatalog) }) -} - -func TestCatalog(t *testing.T) { - test := func(t *testing.T, init buildFunc) { - for _, tc := range testCases { - cat := init(t, tc) - wantTags := tc.tags - if got := cat.Languages(); !reflect.DeepEqual(got, wantTags) { - t.Errorf("%s:Languages: got %v; want %v", tc.desc, got, wantTags) - } - - for _, e := range tc.lookup { - t.Run(path.Join(tc.desc, e.tag, e.key), func(t *testing.T) { - tag := language.MustParse(e.tag) - buf := testRenderer{} - ctx := cat.Context(tag, &buf) - want := e.msg.(string) - err := ctx.Execute(e.key) - gotFound := err != ErrNotFound - wantFound := want != "" - if gotFound != wantFound { - t.Fatalf("err: got %v (%v); want %v", gotFound, err, wantFound) - } - if got := buf.buf.String(); got != want { - t.Errorf("Lookup:\ngot %q\nwant %q", got, want) - } - }) - } - } - } - t.Run("Builder", func(t *testing.T) { test(t, initBuilder) }) - t.Run("Catalog", func(t *testing.T) { test(t, initCatalog) }) -} - -type testRenderer struct { - buf bytes.Buffer -} - -func (f *testRenderer) Arg(i int) interface{} { return nil } -func (f *testRenderer) Render(s string) { f.buf.WriteString(s) } - -var msgNoMatch = catmsg.Register("no match", func(d *catmsg.Decoder) bool { - return false // no match -}) - -type noMatchMessage struct{} - -func (noMatchMessage) Compile(e *catmsg.Encoder) error { - e.EncodeMessageType(msgNoMatch) - return catmsg.ErrIncomplete -} diff --git a/vendor/golang.org/x/text/message/catalog/dict.go b/vendor/golang.org/x/text/message/catalog/dict.go deleted file mode 100644 index a0eb8181..00000000 --- a/vendor/golang.org/x/text/message/catalog/dict.go +++ /dev/null @@ -1,129 +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 catalog - -import ( - "sync" - - "golang.org/x/text/internal" - "golang.org/x/text/internal/catmsg" - "golang.org/x/text/language" -) - -// TODO: -// Dictionary returns a Dictionary that returns the first Message, using the -// given language tag, that matches: -// 1. the last one registered by one of the Set methods -// 2. returned by one of the Loaders -// 3. repeat from 1. using the parent language -// This approach allows messages to be underspecified. -// func (c *Catalog) Dictionary(tag language.Tag) (Dictionary, error) { -// // TODO: verify dictionary exists. -// return &dict{&c.index, tag}, nil -// } - -type dict struct { - s *store - tag language.Tag // TODO: make compact tag. -} - -func (d *dict) Lookup(key string) (data string, ok bool) { - return d.s.lookup(d.tag, key) -} - -func (b *Builder) lookup(tag language.Tag, key string) (data string, ok bool) { - return b.index.lookup(tag, key) -} - -func (c *Builder) set(tag language.Tag, key string, s *store, msg ...Message) error { - data, err := catmsg.Compile(tag, &dict{&c.macros, tag}, firstInSequence(msg)) - - s.mutex.Lock() - defer s.mutex.Unlock() - - m := s.index[tag] - if m == nil { - m = msgMap{} - if s.index == nil { - s.index = map[language.Tag]msgMap{} - } - c.matcher = nil - s.index[tag] = m - } - - m[key] = data - return err -} - -func (c *Builder) Matcher() language.Matcher { - c.index.mutex.RLock() - m := c.matcher - c.index.mutex.RUnlock() - if m != nil { - return m - } - - c.index.mutex.Lock() - if c.matcher == nil { - c.matcher = language.NewMatcher(c.unlockedLanguages()) - } - m = c.matcher - c.index.mutex.Unlock() - return m -} - -type store struct { - mutex sync.RWMutex - index map[language.Tag]msgMap -} - -type msgMap map[string]string - -func (s *store) lookup(tag language.Tag, key string) (data string, ok bool) { - s.mutex.RLock() - defer s.mutex.RUnlock() - - for ; ; tag = tag.Parent() { - if msgs, ok := s.index[tag]; ok { - if msg, ok := msgs[key]; ok { - return msg, true - } - } - if tag == language.Und { - break - } - } - return "", false -} - -// Languages returns all languages for which the Catalog contains variants. -func (b *Builder) Languages() []language.Tag { - s := &b.index - s.mutex.RLock() - defer s.mutex.RUnlock() - - return b.unlockedLanguages() -} - -func (b *Builder) unlockedLanguages() []language.Tag { - s := &b.index - if len(s.index) == 0 { - return nil - } - tags := make([]language.Tag, 0, len(s.index)) - _, hasFallback := s.index[b.options.fallback] - offset := 0 - if hasFallback { - tags = append(tags, b.options.fallback) - offset = 1 - } - for t := range s.index { - if t != b.options.fallback { - tags = append(tags, t) - } - } - internal.SortTags(tags[offset:]) - return tags -} diff --git a/vendor/golang.org/x/text/message/catalog/go19.go b/vendor/golang.org/x/text/message/catalog/go19.go deleted file mode 100644 index 147fc7cf..00000000 --- a/vendor/golang.org/x/text/message/catalog/go19.go +++ /dev/null @@ -1,15 +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. - -// +build go1.9 - -package catalog - -import "golang.org/x/text/internal/catmsg" - -// A Message holds a collection of translations for the same phrase that may -// vary based on the values of substitution arguments. -type Message = catmsg.Message - -type firstInSequence = catmsg.FirstOf diff --git a/vendor/golang.org/x/text/message/catalog/gopre19.go b/vendor/golang.org/x/text/message/catalog/gopre19.go deleted file mode 100644 index a9753b90..00000000 --- a/vendor/golang.org/x/text/message/catalog/gopre19.go +++ /dev/null @@ -1,23 +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. - -// +build !go1.9 - -package catalog - -import "golang.org/x/text/internal/catmsg" - -// A Message holds a collection of translations for the same phrase that may -// vary based on the values of substitution arguments. -type Message interface { - catmsg.Message -} - -func firstInSequence(m []Message) catmsg.Message { - a := []catmsg.Message{} - for _, m := range m { - a = append(a, m) - } - return catmsg.FirstOf(a) -} diff --git a/vendor/golang.org/x/text/message/catalog_test.go b/vendor/golang.org/x/text/message/catalog_test.go deleted file mode 100644 index 7a2301c0..00000000 --- a/vendor/golang.org/x/text/message/catalog_test.go +++ /dev/null @@ -1,43 +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 message - -import ( - "strings" - "testing" - - "golang.org/x/text/language" - "golang.org/x/text/message/catalog" -) - -func TestMatchLanguage(t *testing.T) { - c := catalog.NewBuilder(catalog.Fallback(language.English)) - c.SetString(language.Bengali, "", "") - c.SetString(language.English, "", "") - c.SetString(language.German, "", "") - - testCases := []struct { - args string // '|'-separated list - want string - }{{ - args: "de-CH", - want: "de", - }, { - args: "bn-u-nu-latn|en-US,en;q=0.9,de;q=0.8,nl;q=0.7", - want: "bn-u-nu-latn", - }, { - args: "gr", - want: "en", - }} - for _, tc := range testCases { - DefaultCatalog = c - t.Run(tc.args, func(t *testing.T) { - got := MatchLanguage(strings.Split(tc.args, "|")...) - if got != language.Make(tc.want) { - t.Errorf("got %q; want %q", got, tc.want) - } - }) - } -} diff --git a/vendor/golang.org/x/text/message/doc.go b/vendor/golang.org/x/text/message/doc.go deleted file mode 100644 index 2f7effd2..00000000 --- a/vendor/golang.org/x/text/message/doc.go +++ /dev/null @@ -1,100 +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 message implements formatted I/O for localized strings with functions -// analogous to the fmt's print functions. It is a drop-in replacement for fmt. -// -// -// Localized Formatting -// -// A format string can be localized by replacing any of the print functions of -// fmt with an equivalent call to a Printer. -// -// p := message.NewPrinter(message.MatchLanguage("en")) -// p.Println(123456.78) // Prints 123,456.78 -// -// p.Printf("%d ducks in a row", 4331) // Prints 4,331 ducks in a row -// -// p := message.NewPrinter(message.MatchLanguage("nl")) -// p.Println("Hoogte: %f meter", 1244.9) // Prints Hoogte: 1.244,9 meter -// -// p := message.NewPrinter(message.MatchLanguage("bn")) -// p.Println(123456.78) // Prints ১,২৩,৪৫৬.৭৮ -// -// Printer currently supports numbers and specialized types for which packages -// exist in x/text. Other builtin types such as time.Time and slices are -// planned. -// -// Format strings largely have the same meaning as with fmt with the following -// notable exceptions: -// - flag # always resorts to fmt for printing -// - verb 'f', 'e', 'g', 'd' use localized formatting unless the '#' flag is -// specified. -// -// See package fmt for more options. -// -// -// Translation -// -// The format strings that are passed to Printf, Sprintf, Fprintf, or Errorf -// are used as keys to look up translations for the specified languages. -// More on how these need to be specified below. -// -// One can use arbitrary keys to distinguish between otherwise ambiguous -// strings: -// p := message.NewPrinter(language.English) -// p.Printf("archive(noun)") // Prints "archive" -// p.Printf("archive(verb)") // Prints "archive" -// -// p := message.NewPrinter(language.German) -// p.Printf("archive(noun)") // Prints "Archiv" -// p.Printf("archive(verb)") // Prints "archivieren" -// -// To retain the fallback functionality, use Key: -// p.Printf(message.Key("archive(noun)", "archive")) -// p.Printf(message.Key("archive(verb)", "archive")) -// -// -// Translation Pipeline -// -// Format strings that contain text need to be translated to support different -// locales. The first step is to extract strings that need to be translated. -// -// 1. Install gotext -// go get -u golang.org/x/text/cmd/gotext -// gotext -help -// -// 2. Mark strings in your source to be translated by using message.Printer, -// instead of the functions of the fmt package. -// -// 3. Extract the strings from your source -// -// gotext extract -// -// The output will be written to the textdata directory. -// -// 4. Send the files for translation -// -// It is planned to support multiple formats, but for now one will have to -// rewrite the JSON output to the desired format. -// -// 5. Inject translations into program -// -// 6. Repeat from 2 -// -// Right now this has to be done programmatically with calls to Set or -// SetString. These functions as well as the methods defined in -// see also package golang.org/x/text/message/catalog can be used to implement -// either dynamic or static loading of messages. -// -// -// Plural and Gender Forms -// -// Translated messages can vary based on the plural and gender forms of -// substitution values. In general, it is up to the translators to provide -// alternative translations for such forms. See the packages in -// golang.org/x/text/feature and golang.org/x/text/message/catalog for more -// information. -// -package message diff --git a/vendor/golang.org/x/text/message/examples_test.go b/vendor/golang.org/x/text/message/examples_test.go deleted file mode 100644 index c73eaf90..00000000 --- a/vendor/golang.org/x/text/message/examples_test.go +++ /dev/null @@ -1,42 +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 message_test - -import ( - "net/http" - - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -func Example_http() { - // languages supported by this service: - matcher := language.NewMatcher(message.DefaultCatalog.Languages()) - - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - lang, _ := r.Cookie("lang") - accept := r.Header.Get("Accept-Language") - fallback := "en" - tag, _ := language.MatchStrings(matcher, lang.String(), accept, fallback) - - p := message.NewPrinter(tag) - - p.Fprintln(w, "User language is", tag) - }) -} - -func ExamplePrinter_numbers() { - for _, lang := range []string{"en", "de", "de-CH", "fr", "bn"} { - p := message.NewPrinter(language.Make(lang)) - p.Printf("%-6s %g\n", lang, 123456.78) - } - - // Output: - // en 123,456.78 - // de 123.456,78 - // de-CH 123’456.78 - // fr 123 456,78 - // bn ১,২৩,৪৫৬.৭৮ -} diff --git a/vendor/golang.org/x/text/message/fmt_test.go b/vendor/golang.org/x/text/message/fmt_test.go deleted file mode 100644 index 2d6872bf..00000000 --- a/vendor/golang.org/x/text/message/fmt_test.go +++ /dev/null @@ -1,1871 +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 message - -import ( - "bytes" - "fmt" - "io" - "math" - "reflect" - "runtime" - "strings" - "testing" - "time" - - "golang.org/x/text/language" -) - -type ( - renamedBool bool - renamedInt int - renamedInt8 int8 - renamedInt16 int16 - renamedInt32 int32 - renamedInt64 int64 - renamedUint uint - renamedUint8 uint8 - renamedUint16 uint16 - renamedUint32 uint32 - renamedUint64 uint64 - renamedUintptr uintptr - renamedString string - renamedBytes []byte - renamedFloat32 float32 - renamedFloat64 float64 - renamedComplex64 complex64 - renamedComplex128 complex128 -) - -func TestFmtInterface(t *testing.T) { - p := NewPrinter(language.Und) - var i1 interface{} - i1 = "abc" - s := p.Sprintf("%s", i1) - if s != "abc" { - t.Errorf(`Sprintf("%%s", empty("abc")) = %q want %q`, s, "abc") - } -} - -var ( - NaN = math.NaN() - posInf = math.Inf(1) - negInf = math.Inf(-1) - - intVar = 0 - - array = [5]int{1, 2, 3, 4, 5} - iarray = [4]interface{}{1, "hello", 2.5, nil} - slice = array[:] - islice = iarray[:] -) - -type A struct { - i int - j uint - s string - x []int -} - -type I int - -func (i I) String() string { - p := NewPrinter(language.Und) - return p.Sprintf("<%d>", int(i)) -} - -type B struct { - I I - j int -} - -type C struct { - i int - B -} - -type F int - -func (f F) Format(s fmt.State, c rune) { - p := NewPrinter(language.Und) - p.Fprintf(s, "<%c=F(%d)>", c, int(f)) -} - -type G int - -func (g G) GoString() string { - p := NewPrinter(language.Und) - return p.Sprintf("GoString(%d)", int(g)) -} - -type S struct { - F F // a struct field that Formats - G G // a struct field that GoStrings -} - -type SI struct { - I interface{} -} - -// P is a type with a String method with pointer receiver for testing %p. -type P int - -var pValue P - -func (p *P) String() string { - return "String(p)" -} - -var barray = [5]renamedUint8{1, 2, 3, 4, 5} -var bslice = barray[:] - -type byteStringer byte - -func (byteStringer) String() string { - return "X" -} - -var byteStringerSlice = []byteStringer{'h', 'e', 'l', 'l', 'o'} - -type byteFormatter byte - -func (byteFormatter) Format(f fmt.State, _ rune) { - p := NewPrinter(language.Und) - p.Fprint(f, "X") -} - -var byteFormatterSlice = []byteFormatter{'h', 'e', 'l', 'l', 'o'} - -var fmtTests = []struct { - fmt string - val interface{} - out string -}{ - // The behavior of the following tests differs from that of the fmt package. - - // Unlike with the fmt package, it is okay to have extra arguments for - // strings without format parameters. This is because it is impossible to - // distinguish between reordered or ordered format strings in this case. - // (For reordered format strings it is okay to not use arguments.) - {"", nil, ""}, - {"", 2, ""}, - {"no args", "hello", "no args"}, - - {"%017091901790959340919092959340919017929593813360", 0, "%!(NOVERB)"}, - {"%184467440737095516170v", 0, "%!(NOVERB)"}, - // Extra argument errors should format without flags set. - {"%010.2", "12345", "%!(NOVERB)"}, - - // Some key other differences, asides from localized values: - // - NaN values should not use affixes; so no signs (CLDR requirement) - // - Infinity uses patterns, so signs may be different (CLDR requirement) - // - The # flag is used to disable localization. - - // All following tests are analogous to those of the fmt package, but with - // localized numbers when appropriate. - {"%d", 12345, "12,345"}, - {"%v", 12345, "12,345"}, - {"%t", true, "true"}, - - // basic string - {"%s", "abc", "abc"}, - {"%q", "abc", `"abc"`}, - {"%x", "abc", "616263"}, - {"%x", "\xff\xf0\x0f\xff", "fff00fff"}, - {"%X", "\xff\xf0\x0f\xff", "FFF00FFF"}, - {"%x", "", ""}, - {"% x", "", ""}, - {"%#x", "", ""}, - {"%# x", "", ""}, - {"%x", "xyz", "78797a"}, - {"%X", "xyz", "78797A"}, - {"% x", "xyz", "78 79 7a"}, - {"% X", "xyz", "78 79 7A"}, - {"%#x", "xyz", "0x78797a"}, - {"%#X", "xyz", "0X78797A"}, - {"%# x", "xyz", "0x78 0x79 0x7a"}, - {"%# X", "xyz", "0X78 0X79 0X7A"}, - - // basic bytes - {"%s", []byte("abc"), "abc"}, - {"%s", [3]byte{'a', 'b', 'c'}, "abc"}, - {"%s", &[3]byte{'a', 'b', 'c'}, "&abc"}, - {"%q", []byte("abc"), `"abc"`}, - {"%x", []byte("abc"), "616263"}, - {"%x", []byte("\xff\xf0\x0f\xff"), "fff00fff"}, - {"%X", []byte("\xff\xf0\x0f\xff"), "FFF00FFF"}, - {"%x", []byte(""), ""}, - {"% x", []byte(""), ""}, - {"%#x", []byte(""), ""}, - {"%# x", []byte(""), ""}, - {"%x", []byte("xyz"), "78797a"}, - {"%X", []byte("xyz"), "78797A"}, - {"% x", []byte("xyz"), "78 79 7a"}, - {"% X", []byte("xyz"), "78 79 7A"}, - {"%#x", []byte("xyz"), "0x78797a"}, - {"%#X", []byte("xyz"), "0X78797A"}, - {"%# x", []byte("xyz"), "0x78 0x79 0x7a"}, - {"%# X", []byte("xyz"), "0X78 0X79 0X7A"}, - - // escaped strings - {"%q", "", `""`}, - {"%#q", "", "``"}, - {"%q", "\"", `"\""`}, - {"%#q", "\"", "`\"`"}, - {"%q", "`", `"` + "`" + `"`}, - {"%#q", "`", `"` + "`" + `"`}, - {"%q", "\n", `"\n"`}, - {"%#q", "\n", `"\n"`}, - {"%q", `\n`, `"\\n"`}, - {"%#q", `\n`, "`\\n`"}, - {"%q", "abc", `"abc"`}, - {"%#q", "abc", "`abc`"}, - {"%q", "日本語", `"日本語"`}, - {"%+q", "日本語", `"\u65e5\u672c\u8a9e"`}, - {"%#q", "日本語", "`日本語`"}, - {"%#+q", "日本語", "`日本語`"}, - {"%q", "\a\b\f\n\r\t\v\"\\", `"\a\b\f\n\r\t\v\"\\"`}, - {"%+q", "\a\b\f\n\r\t\v\"\\", `"\a\b\f\n\r\t\v\"\\"`}, - {"%#q", "\a\b\f\n\r\t\v\"\\", `"\a\b\f\n\r\t\v\"\\"`}, - {"%#+q", "\a\b\f\n\r\t\v\"\\", `"\a\b\f\n\r\t\v\"\\"`}, - {"%q", "☺", `"☺"`}, - {"% q", "☺", `"☺"`}, // The space modifier should have no effect. - {"%+q", "☺", `"\u263a"`}, - {"%#q", "☺", "`☺`"}, - {"%#+q", "☺", "`☺`"}, - {"%10q", "⌘", ` "⌘"`}, - {"%+10q", "⌘", ` "\u2318"`}, - {"%-10q", "⌘", `"⌘" `}, - {"%+-10q", "⌘", `"\u2318" `}, - {"%010q", "⌘", `0000000"⌘"`}, - {"%+010q", "⌘", `00"\u2318"`}, - {"%-010q", "⌘", `"⌘" `}, // 0 has no effect when - is present. - {"%+-010q", "⌘", `"\u2318" `}, - {"%#8q", "\n", ` "\n"`}, - {"%#+8q", "\r", ` "\r"`}, - {"%#-8q", "\t", "` ` "}, - {"%#+-8q", "\b", `"\b" `}, - {"%q", "abc\xffdef", `"abc\xffdef"`}, - {"%+q", "abc\xffdef", `"abc\xffdef"`}, - {"%#q", "abc\xffdef", `"abc\xffdef"`}, - {"%#+q", "abc\xffdef", `"abc\xffdef"`}, - // Runes that are not printable. - {"%q", "\U0010ffff", `"\U0010ffff"`}, - {"%+q", "\U0010ffff", `"\U0010ffff"`}, - {"%#q", "\U0010ffff", "`􏿿`"}, - {"%#+q", "\U0010ffff", "`􏿿`"}, - // Runes that are not valid. - {"%q", string(0x110000), `"�"`}, - {"%+q", string(0x110000), `"\ufffd"`}, - {"%#q", string(0x110000), "`�`"}, - {"%#+q", string(0x110000), "`�`"}, - - // characters - {"%c", uint('x'), "x"}, - {"%c", 0xe4, "ä"}, - {"%c", 0x672c, "本"}, - {"%c", '日', "日"}, - {"%.0c", '⌘', "⌘"}, // Specifying precision should have no effect. - {"%3c", '⌘', " ⌘"}, - {"%-3c", '⌘', "⌘ "}, - // Runes that are not printable. - {"%c", '\U00000e00', "\u0e00"}, - {"%c", '\U0010ffff', "\U0010ffff"}, - // Runes that are not valid. - {"%c", -1, "�"}, - {"%c", 0xDC80, "�"}, - {"%c", rune(0x110000), "�"}, - {"%c", int64(0xFFFFFFFFF), "�"}, - {"%c", uint64(0xFFFFFFFFF), "�"}, - - // escaped characters - {"%q", uint(0), `'\x00'`}, - {"%+q", uint(0), `'\x00'`}, - {"%q", '"', `'"'`}, - {"%+q", '"', `'"'`}, - {"%q", '\'', `'\''`}, - {"%+q", '\'', `'\''`}, - {"%q", '`', "'`'"}, - {"%+q", '`', "'`'"}, - {"%q", 'x', `'x'`}, - {"%+q", 'x', `'x'`}, - {"%q", 'ÿ', `'ÿ'`}, - {"%+q", 'ÿ', `'\u00ff'`}, - {"%q", '\n', `'\n'`}, - {"%+q", '\n', `'\n'`}, - {"%q", '☺', `'☺'`}, - {"%+q", '☺', `'\u263a'`}, - {"% q", '☺', `'☺'`}, // The space modifier should have no effect. - {"%.0q", '☺', `'☺'`}, // Specifying precision should have no effect. - {"%10q", '⌘', ` '⌘'`}, - {"%+10q", '⌘', ` '\u2318'`}, - {"%-10q", '⌘', `'⌘' `}, - {"%+-10q", '⌘', `'\u2318' `}, - {"%010q", '⌘', `0000000'⌘'`}, - {"%+010q", '⌘', `00'\u2318'`}, - {"%-010q", '⌘', `'⌘' `}, // 0 has no effect when - is present. - {"%+-010q", '⌘', `'\u2318' `}, - // Runes that are not printable. - {"%q", '\U00000e00', `'\u0e00'`}, - {"%q", '\U0010ffff', `'\U0010ffff'`}, - // Runes that are not valid. - {"%q", int32(-1), "%!q(int32=-1)"}, - {"%q", 0xDC80, `'�'`}, - {"%q", rune(0x110000), "%!q(int32=1,114,112)"}, - {"%q", int64(0xFFFFFFFFF), "%!q(int64=68,719,476,735)"}, - {"%q", uint64(0xFFFFFFFFF), "%!q(uint64=68,719,476,735)"}, - - // width - {"%5s", "abc", " abc"}, - {"%2s", "\u263a", " ☺"}, - {"%-5s", "abc", "abc "}, - {"%-8q", "abc", `"abc" `}, - {"%05s", "abc", "00abc"}, - {"%08q", "abc", `000"abc"`}, - {"%5s", "abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz"}, - {"%.5s", "abcdefghijklmnopqrstuvwxyz", "abcde"}, - {"%.0s", "日本語日本語", ""}, - {"%.5s", "日本語日本語", "日本語日本"}, - {"%.10s", "日本語日本語", "日本語日本語"}, - {"%.5s", []byte("日本語日本語"), "日本語日本"}, - {"%.5q", "abcdefghijklmnopqrstuvwxyz", `"abcde"`}, - {"%.5x", "abcdefghijklmnopqrstuvwxyz", "6162636465"}, - {"%.5q", []byte("abcdefghijklmnopqrstuvwxyz"), `"abcde"`}, - {"%.5x", []byte("abcdefghijklmnopqrstuvwxyz"), "6162636465"}, - {"%.3q", "日本語日本語", `"日本語"`}, - {"%.3q", []byte("日本語日本語"), `"日本語"`}, - {"%.1q", "日本語", `"日"`}, - {"%.1q", []byte("日本語"), `"日"`}, - {"%.1x", "日本語", "e6"}, - {"%.1X", []byte("日本語"), "E6"}, - {"%10.1q", "日本語日本語", ` "日"`}, - {"%10v", nil, " <nil>"}, - {"%-10v", nil, "<nil> "}, - - // integers - {"%d", uint(12345), "12,345"}, - {"%d", int(-12345), "-12,345"}, - {"%d", ^uint8(0), "255"}, - {"%d", ^uint16(0), "65,535"}, - {"%d", ^uint32(0), "4,294,967,295"}, - {"%d", ^uint64(0), "18,446,744,073,709,551,615"}, - {"%d", int8(-1 << 7), "-128"}, - {"%d", int16(-1 << 15), "-32,768"}, - {"%d", int32(-1 << 31), "-2,147,483,648"}, - {"%d", int64(-1 << 63), "-9,223,372,036,854,775,808"}, - {"%.d", 0, ""}, - {"%.0d", 0, ""}, - {"%6.0d", 0, " "}, - {"%06.0d", 0, " "}, - {"% d", 12345, " 12,345"}, - {"%+d", 12345, "+12,345"}, - {"%+d", -12345, "-12,345"}, - {"%b", 7, "111"}, - {"%b", -6, "-110"}, - {"%b", ^uint32(0), "11111111111111111111111111111111"}, - {"%b", ^uint64(0), "1111111111111111111111111111111111111111111111111111111111111111"}, - {"%b", int64(-1 << 63), zeroFill("-1", 63, "")}, - {"%o", 01234, "1234"}, - {"%#o", 01234, "01234"}, - {"%o", ^uint32(0), "37777777777"}, - {"%o", ^uint64(0), "1777777777777777777777"}, - {"%#X", 0, "0X0"}, - {"%x", 0x12abcdef, "12abcdef"}, - {"%X", 0x12abcdef, "12ABCDEF"}, - {"%x", ^uint32(0), "ffffffff"}, - {"%X", ^uint64(0), "FFFFFFFFFFFFFFFF"}, - {"%.20b", 7, "00000000000000000111"}, - {"%10d", 12345, " 12,345"}, - {"%10d", -12345, " -12,345"}, - {"%+10d", 12345, " +12,345"}, - {"%010d", 12345, "0,000,012,345"}, - {"%010d", -12345, "-0,000,012,345"}, - {"%20.8d", 1234, " 00,001,234"}, - {"%20.8d", -1234, " -00,001,234"}, - {"%020.8d", 1234, " 00,001,234"}, - {"%020.8d", -1234, " -00,001,234"}, - {"%-20.8d", 1234, "00,001,234 "}, - {"%-20.8d", -1234, "-00,001,234 "}, - {"%-#20.8x", 0x1234abc, "0x01234abc "}, - {"%-#20.8X", 0x1234abc, "0X01234ABC "}, - {"%-#20.8o", 01234, "00001234 "}, - - // Test correct f.intbuf overflow checks. - {"%068d", 1, "00," + strings.Repeat("000,", 21) + "001"}, - {"%068d", -1, "-00," + strings.Repeat("000,", 21) + "001"}, - {"%#.68x", 42, zeroFill("0x", 68, "2a")}, - {"%.68d", -42, "-00," + strings.Repeat("000,", 21) + "042"}, - {"%+.68d", 42, "+00," + strings.Repeat("000,", 21) + "042"}, - {"% .68d", 42, " 00," + strings.Repeat("000,", 21) + "042"}, - {"% +.68d", 42, "+00," + strings.Repeat("000,", 21) + "042"}, - - // unicode format - {"%U", 0, "U+0000"}, - {"%U", -1, "U+FFFFFFFFFFFFFFFF"}, - {"%U", '\n', `U+000A`}, - {"%#U", '\n', `U+000A`}, - {"%+U", 'x', `U+0078`}, // Plus flag should have no effect. - {"%# U", 'x', `U+0078 'x'`}, // Space flag should have no effect. - {"%#.2U", 'x', `U+0078 'x'`}, // Precisions below 4 should print 4 digits. - {"%U", '\u263a', `U+263A`}, - {"%#U", '\u263a', `U+263A '☺'`}, - {"%U", '\U0001D6C2', `U+1D6C2`}, - {"%#U", '\U0001D6C2', `U+1D6C2 '𝛂'`}, - {"%#14.6U", '⌘', " U+002318 '⌘'"}, - {"%#-14.6U", '⌘', "U+002318 '⌘' "}, - {"%#014.6U", '⌘', " U+002318 '⌘'"}, - {"%#-014.6U", '⌘', "U+002318 '⌘' "}, - {"%.68U", uint(42), zeroFill("U+", 68, "2A")}, - {"%#.68U", '日', zeroFill("U+", 68, "65E5") + " '日'"}, - - // floats - {"%+.3e", 0.0, "+0.000\u202f×\u202f10⁰⁰"}, - {"%+.3e", 1.0, "+1.000\u202f×\u202f10⁰⁰"}, - {"%+.3f", -1.0, "-1.000"}, - {"%+.3F", -1.0, "-1.000"}, - {"%+.3F", float32(-1.0), "-1.000"}, - {"%+07.2f", 1.0, "+001.00"}, - {"%+07.2f", -1.0, "-001.00"}, - {"%-07.2f", 1.0, "1.00 "}, - {"%-07.2f", -1.0, "-1.00 "}, - {"%+-07.2f", 1.0, "+1.00 "}, - {"%+-07.2f", -1.0, "-1.00 "}, - {"%-+07.2f", 1.0, "+1.00 "}, - {"%-+07.2f", -1.0, "-1.00 "}, - {"%+10.2f", +1.0, " +1.00"}, - {"%+10.2f", -1.0, " -1.00"}, - {"% .3E", -1.0, "-1.000\u202f×\u202f10⁰⁰"}, - {"% .3e", 1.0, " 1.000\u202f×\u202f10⁰⁰"}, - {"%+.3g", 0.0, "+0"}, - {"%+.3g", 1.0, "+1"}, - {"%+.3g", -1.0, "-1"}, - {"% .3g", -1.0, "-1"}, - {"% .3g", 1.0, " 1"}, - {"%b", float32(1.0), "8388608p-23"}, - {"%b", 1.0, "4503599627370496p-52"}, - // Test sharp flag used with floats. - {"%#g", 1e-323, "1.00000e-323"}, - {"%#g", -1.0, "-1.00000"}, - {"%#g", 1.1, "1.10000"}, - {"%#g", 123456.0, "123456."}, - {"%#g", 1234567.0, "1.234567e+06"}, - {"%#g", 1230000.0, "1.23000e+06"}, - {"%#g", 1000000.0, "1.00000e+06"}, - {"%#.0f", 1.0, "1."}, - {"%#.0e", 1.0, "1.e+00"}, - {"%#.0g", 1.0, "1."}, - {"%#.0g", 1100000.0, "1.e+06"}, - {"%#.4f", 1.0, "1.0000"}, - {"%#.4e", 1.0, "1.0000e+00"}, - {"%#.4g", 1.0, "1.000"}, - {"%#.4g", 100000.0, "1.000e+05"}, - {"%#.0f", 123.0, "123."}, - {"%#.0e", 123.0, "1.e+02"}, - {"%#.0g", 123.0, "1.e+02"}, - {"%#.4f", 123.0, "123.0000"}, - {"%#.4e", 123.0, "1.2300e+02"}, - {"%#.4g", 123.0, "123.0"}, - {"%#.4g", 123000.0, "1.230e+05"}, - {"%#9.4g", 1.0, " 1.000"}, - // The sharp flag has no effect for binary float format. - {"%#b", 1.0, "4503599627370496p-52"}, - // Precision has no effect for binary float format. - {"%.4b", float32(1.0), "8388608p-23"}, - {"%.4b", -1.0, "-4503599627370496p-52"}, - // Test correct f.intbuf boundary checks. - {"%.68f", 1.0, zeroFill("1.", 68, "")}, - {"%.68f", -1.0, zeroFill("-1.", 68, "")}, - // float infinites and NaNs - {"%f", posInf, "∞"}, - {"%.1f", negInf, "-∞"}, - {"% f", NaN, "NaN"}, - {"%20f", posInf, " ∞"}, - {"% 20F", posInf, " ∞"}, - {"% 20e", negInf, " -∞"}, - {"%+20E", negInf, " -∞"}, - {"% +20g", negInf, " -∞"}, - {"%+-20G", posInf, "+∞ "}, - {"%20e", NaN, " NaN"}, - {"% +20E", NaN, " NaN"}, - {"% -20g", NaN, "NaN "}, - {"%+-20G", NaN, "NaN "}, - // Zero padding does not apply to infinities and NaN. - {"%+020e", posInf, " +∞"}, - {"%-020f", negInf, "-∞ "}, - {"%-020E", NaN, "NaN "}, - - // complex values - {"%.f", 0i, "(0+0i)"}, - {"% .f", 0i, "( 0+0i)"}, - {"%+.f", 0i, "(+0+0i)"}, - {"% +.f", 0i, "(+0+0i)"}, - {"%+.3e", 0i, "(+0.000\u202f×\u202f10⁰⁰+0.000\u202f×\u202f10⁰⁰i)"}, - {"%+.3f", 0i, "(+0.000+0.000i)"}, - {"%+.3g", 0i, "(+0+0i)"}, - {"%+.3e", 1 + 2i, "(+1.000\u202f×\u202f10⁰⁰+2.000\u202f×\u202f10⁰⁰i)"}, - {"%+.3f", 1 + 2i, "(+1.000+2.000i)"}, - {"%+.3g", 1 + 2i, "(+1+2i)"}, - {"%.3e", 0i, "(0.000\u202f×\u202f10⁰⁰+0.000\u202f×\u202f10⁰⁰i)"}, - {"%.3f", 0i, "(0.000+0.000i)"}, - {"%.3F", 0i, "(0.000+0.000i)"}, - {"%.3F", complex64(0i), "(0.000+0.000i)"}, - {"%.3g", 0i, "(0+0i)"}, - {"%.3e", 1 + 2i, "(1.000\u202f×\u202f10⁰⁰+2.000\u202f×\u202f10⁰⁰i)"}, - {"%.3f", 1 + 2i, "(1.000+2.000i)"}, - {"%.3g", 1 + 2i, "(1+2i)"}, - {"%.3e", -1 - 2i, "(-1.000\u202f×\u202f10⁰⁰-2.000\u202f×\u202f10⁰⁰i)"}, - {"%.3f", -1 - 2i, "(-1.000-2.000i)"}, - {"%.3g", -1 - 2i, "(-1-2i)"}, - {"% .3E", -1 - 2i, "(-1.000\u202f×\u202f10⁰⁰-2.000\u202f×\u202f10⁰⁰i)"}, - {"%+.3g", 1 + 2i, "(+1+2i)"}, - {"%+.3g", complex64(1 + 2i), "(+1+2i)"}, - {"%#g", 1 + 2i, "(1.00000+2.00000i)"}, - {"%#g", 123456 + 789012i, "(123456.+789012.i)"}, - {"%#g", 1e-10i, "(0.00000+1.00000e-10i)"}, - {"%#g", -1e10 - 1.11e100i, "(-1.00000e+10-1.11000e+100i)"}, - {"%#.0f", 1.23 + 1.0i, "(1.+1.i)"}, - {"%#.0e", 1.23 + 1.0i, "(1.e+00+1.e+00i)"}, - {"%#.0g", 1.23 + 1.0i, "(1.+1.i)"}, - {"%#.0g", 0 + 100000i, "(0.+1.e+05i)"}, - {"%#.0g", 1230000 + 0i, "(1.e+06+0.i)"}, - {"%#.4f", 1 + 1.23i, "(1.0000+1.2300i)"}, - {"%#.4e", 123 + 1i, "(1.2300e+02+1.0000e+00i)"}, - {"%#.4g", 123 + 1.23i, "(123.0+1.230i)"}, - {"%#12.5g", 0 + 100000i, "( 0.0000 +1.0000e+05i)"}, - {"%#12.5g", 1230000 - 0i, "( 1.2300e+06 +0.0000i)"}, - {"%b", 1 + 2i, "(4503599627370496p-52+4503599627370496p-51i)"}, - {"%b", complex64(1 + 2i), "(8388608p-23+8388608p-22i)"}, - // The sharp flag has no effect for binary complex format. - {"%#b", 1 + 2i, "(4503599627370496p-52+4503599627370496p-51i)"}, - // Precision has no effect for binary complex format. - {"%.4b", 1 + 2i, "(4503599627370496p-52+4503599627370496p-51i)"}, - {"%.4b", complex64(1 + 2i), "(8388608p-23+8388608p-22i)"}, - // complex infinites and NaNs - {"%f", complex(posInf, posInf), "(∞+∞i)"}, - {"%f", complex(negInf, negInf), "(-∞-∞i)"}, - {"%f", complex(NaN, NaN), "(NaN+NaNi)"}, - {"%.1f", complex(posInf, posInf), "(∞+∞i)"}, - {"% f", complex(posInf, posInf), "( ∞+∞i)"}, - {"% f", complex(negInf, negInf), "(-∞-∞i)"}, - {"% f", complex(NaN, NaN), "(NaN+NaNi)"}, - {"%8e", complex(posInf, posInf), "( ∞ +∞i)"}, - {"% 8E", complex(posInf, posInf), "( ∞ +∞i)"}, - {"%+8f", complex(negInf, negInf), "( -∞ -∞i)"}, - {"% +8g", complex(negInf, negInf), "( -∞ -∞i)"}, // TODO(g) - {"% -8G", complex(NaN, NaN), "(NaN +NaN i)"}, - {"%+-8b", complex(NaN, NaN), "(+NaN +NaN i)"}, - // Zero padding does not apply to infinities and NaN. - {"%08f", complex(posInf, posInf), "( ∞ +∞i)"}, - {"%-08g", complex(negInf, negInf), "(-∞ -∞ i)"}, - {"%-08G", complex(NaN, NaN), "(NaN +NaN i)"}, - - // old test/fmt_test.go - {"%e", 1.0, "1.000000\u202f×\u202f10⁰⁰"}, - {"%e", 1234.5678e3, "1.234568\u202f×\u202f10⁰⁶"}, - {"%e", 1234.5678e-8, "1.234568\u202f×\u202f10⁻⁰⁵"}, - {"%e", -7.0, "-7.000000\u202f×\u202f10⁰⁰"}, - {"%e", -1e-9, "-1.000000\u202f×\u202f10⁻⁰⁹"}, - {"%f", 1234.5678e3, "1,234,567.800000"}, - {"%f", 1234.5678e-8, "0.000012"}, - {"%f", -7.0, "-7.000000"}, - {"%f", -1e-9, "-0.000000"}, - {"%g", 1234.5678e3, "1.2345678\u202f×\u202f10⁰⁶"}, - {"%g", float32(1234.5678e3), "1.2345678\u202f×\u202f10⁰⁶"}, - {"%g", 1234.5678e-8, "1.2345678\u202f×\u202f10⁻⁰⁵"}, - {"%g", -7.0, "-7"}, - {"%g", -1e-9, "-1\u202f×\u202f10⁻⁰⁹"}, - {"%g", float32(-1e-9), "-1\u202f×\u202f10⁻⁰⁹"}, - {"%E", 1.0, "1.000000\u202f×\u202f10⁰⁰"}, - {"%E", 1234.5678e3, "1.234568\u202f×\u202f10⁰⁶"}, - {"%E", 1234.5678e-8, "1.234568\u202f×\u202f10⁻⁰⁵"}, - {"%E", -7.0, "-7.000000\u202f×\u202f10⁰⁰"}, - {"%E", -1e-9, "-1.000000\u202f×\u202f10⁻⁰⁹"}, - {"%G", 1234.5678e3, "1.2345678\u202f×\u202f10⁰⁶"}, - {"%G", float32(1234.5678e3), "1.2345678\u202f×\u202f10⁰⁶"}, - {"%G", 1234.5678e-8, "1.2345678\u202f×\u202f10⁻⁰⁵"}, - {"%G", -7.0, "-7"}, - {"%G", -1e-9, "-1\u202f×\u202f10⁻⁰⁹"}, - {"%G", float32(-1e-9), "-1\u202f×\u202f10⁻⁰⁹"}, - {"%20.5s", "qwertyuiop", " qwert"}, - {"%.5s", "qwertyuiop", "qwert"}, - {"%-20.5s", "qwertyuiop", "qwert "}, - {"%20c", 'x', " x"}, - {"%-20c", 'x', "x "}, - {"%20.6e", 1.2345e3, " 1.234500\u202f×\u202f10⁰³"}, - {"%20.6e", 1.2345e-3, " 1.234500\u202f×\u202f10⁻⁰³"}, - {"%20e", 1.2345e3, " 1.234500\u202f×\u202f10⁰³"}, - {"%20e", 1.2345e-3, " 1.234500\u202f×\u202f10⁻⁰³"}, - {"%20.8e", 1.2345e3, " 1.23450000\u202f×\u202f10⁰³"}, - {"%20f", 1.23456789e3, " 1,234.567890"}, - {"%20f", 1.23456789e-3, " 0.001235"}, - {"%20f", 12345678901.23456789, "12,345,678,901.234568"}, - {"%-20f", 1.23456789e3, "1,234.567890 "}, - {"%20.8f", 1.23456789e3, " 1,234.56789000"}, - {"%20.8f", 1.23456789e-3, " 0.00123457"}, - {"%g", 1.23456789e3, "1,234.56789"}, - {"%g", 1.23456789e-3, "0.00123456789"}, - {"%g", 1.23456789e20, "1.23456789\u202f×\u202f10²⁰"}, - - // arrays - {"%v", array, "[1 2 3 4 5]"}, - {"%v", iarray, "[1 hello 2.5 <nil>]"}, - {"%v", barray, "[1 2 3 4 5]"}, - {"%v", &array, "&[1 2 3 4 5]"}, - {"%v", &iarray, "&[1 hello 2.5 <nil>]"}, - {"%v", &barray, "&[1 2 3 4 5]"}, - - // slices - {"%v", slice, "[1 2 3 4 5]"}, - {"%v", islice, "[1 hello 2.5 <nil>]"}, - {"%v", bslice, "[1 2 3 4 5]"}, - {"%v", &slice, "&[1 2 3 4 5]"}, - {"%v", &islice, "&[1 hello 2.5 <nil>]"}, - {"%v", &bslice, "&[1 2 3 4 5]"}, - - // byte arrays and slices with %b,%c,%d,%o,%U and %v - {"%b", [3]byte{65, 66, 67}, "[1000001 1000010 1000011]"}, - {"%c", [3]byte{65, 66, 67}, "[A B C]"}, - {"%d", [3]byte{65, 66, 67}, "[65 66 67]"}, - {"%o", [3]byte{65, 66, 67}, "[101 102 103]"}, - {"%U", [3]byte{65, 66, 67}, "[U+0041 U+0042 U+0043]"}, - {"%v", [3]byte{65, 66, 67}, "[65 66 67]"}, - {"%v", [1]byte{123}, "[123]"}, - {"%012v", []byte{}, "[]"}, - {"%#012v", []byte{}, "[]byte{}"}, - {"%6v", []byte{1, 11, 111}, "[ 1 11 111]"}, - {"%06v", []byte{1, 11, 111}, "[000001 000011 000111]"}, - {"%-6v", []byte{1, 11, 111}, "[1 11 111 ]"}, - {"%-06v", []byte{1, 11, 111}, "[1 11 111 ]"}, - {"%#v", []byte{1, 11, 111}, "[]byte{0x1, 0xb, 0x6f}"}, - {"%#6v", []byte{1, 11, 111}, "[]byte{ 0x1, 0xb, 0x6f}"}, - {"%#06v", []byte{1, 11, 111}, "[]byte{0x000001, 0x00000b, 0x00006f}"}, - {"%#-6v", []byte{1, 11, 111}, "[]byte{0x1 , 0xb , 0x6f }"}, - {"%#-06v", []byte{1, 11, 111}, "[]byte{0x1 , 0xb , 0x6f }"}, - // f.space should and f.plus should not have an effect with %v. - {"% v", []byte{1, 11, 111}, "[ 1 11 111]"}, - {"%+v", [3]byte{1, 11, 111}, "[1 11 111]"}, - {"%# -6v", []byte{1, 11, 111}, "[]byte{ 0x1 , 0xb , 0x6f }"}, - {"%#+-6v", [3]byte{1, 11, 111}, "[3]uint8{0x1 , 0xb , 0x6f }"}, - // f.space and f.plus should have an effect with %d. - {"% d", []byte{1, 11, 111}, "[ 1 11 111]"}, - {"%+d", [3]byte{1, 11, 111}, "[+1 +11 +111]"}, - {"%# -6d", []byte{1, 11, 111}, "[ 1 11 111 ]"}, - {"%#+-6d", [3]byte{1, 11, 111}, "[+1 +11 +111 ]"}, - - // floates with %v - {"%v", 1.2345678, "1.2345678"}, - {"%v", float32(1.2345678), "1.2345678"}, - - // complexes with %v - {"%v", 1 + 2i, "(1+2i)"}, - {"%v", complex64(1 + 2i), "(1+2i)"}, - - // structs - {"%v", A{1, 2, "a", []int{1, 2}}, `{1 2 a [1 2]}`}, - {"%+v", A{1, 2, "a", []int{1, 2}}, `{i:1 j:2 s:a x:[1 2]}`}, - - // +v on structs with Stringable items - {"%+v", B{1, 2}, `{I:<1> j:2}`}, - {"%+v", C{1, B{2, 3}}, `{i:1 B:{I:<2> j:3}}`}, - - // other formats on Stringable items - {"%s", I(23), `<23>`}, - {"%q", I(23), `"<23>"`}, - {"%x", I(23), `3c32333e`}, - {"%#x", I(23), `0x3c32333e`}, - {"%# x", I(23), `0x3c 0x32 0x33 0x3e`}, - // Stringer applies only to string formats. - {"%d", I(23), `23`}, - // Stringer applies to the extracted value. - {"%s", reflect.ValueOf(I(23)), `<23>`}, - - // go syntax - {"%#v", A{1, 2, "a", []int{1, 2}}, `message.A{i:1, j:0x2, s:"a", x:[]int{1, 2}}`}, - {"%#v", new(byte), "(*uint8)(0xPTR)"}, - {"%#v", TestFmtInterface, "(func(*testing.T))(0xPTR)"}, - {"%#v", make(chan int), "(chan int)(0xPTR)"}, - {"%#v", uint64(1<<64 - 1), "0xffffffffffffffff"}, - {"%#v", 1000000000, "1000000000"}, - {"%#v", map[string]int{"a": 1}, `map[string]int{"a":1}`}, - {"%#v", map[string]B{"a": {1, 2}}, `map[string]message.B{"a":message.B{I:1, j:2}}`}, - {"%#v", []string{"a", "b"}, `[]string{"a", "b"}`}, - {"%#v", SI{}, `message.SI{I:interface {}(nil)}`}, - {"%#v", []int(nil), `[]int(nil)`}, - {"%#v", []int{}, `[]int{}`}, - {"%#v", array, `[5]int{1, 2, 3, 4, 5}`}, - {"%#v", &array, `&[5]int{1, 2, 3, 4, 5}`}, - {"%#v", iarray, `[4]interface {}{1, "hello", 2.5, interface {}(nil)}`}, - {"%#v", &iarray, `&[4]interface {}{1, "hello", 2.5, interface {}(nil)}`}, - {"%#v", map[int]byte(nil), `map[int]uint8(nil)`}, - {"%#v", map[int]byte{}, `map[int]uint8{}`}, - {"%#v", "foo", `"foo"`}, - {"%#v", barray, `[5]message.renamedUint8{0x1, 0x2, 0x3, 0x4, 0x5}`}, - {"%#v", bslice, `[]message.renamedUint8{0x1, 0x2, 0x3, 0x4, 0x5}`}, - {"%#v", []int32(nil), "[]int32(nil)"}, - {"%#v", 1.2345678, "1.2345678"}, - {"%#v", float32(1.2345678), "1.2345678"}, - // Only print []byte and []uint8 as type []byte if they appear at the top level. - {"%#v", []byte(nil), "[]byte(nil)"}, - {"%#v", []uint8(nil), "[]byte(nil)"}, - {"%#v", []byte{}, "[]byte{}"}, - {"%#v", []uint8{}, "[]byte{}"}, - {"%#v", reflect.ValueOf([]byte{}), "[]uint8{}"}, - {"%#v", reflect.ValueOf([]uint8{}), "[]uint8{}"}, - {"%#v", &[]byte{}, "&[]uint8{}"}, - {"%#v", &[]byte{}, "&[]uint8{}"}, - {"%#v", [3]byte{}, "[3]uint8{0x0, 0x0, 0x0}"}, - {"%#v", [3]uint8{}, "[3]uint8{0x0, 0x0, 0x0}"}, - - // slices with other formats - {"%#x", []int{1, 2, 15}, `[0x1 0x2 0xf]`}, - {"%x", []int{1, 2, 15}, `[1 2 f]`}, - {"%d", []int{1, 2, 15}, `[1 2 15]`}, - {"%d", []byte{1, 2, 15}, `[1 2 15]`}, - {"%q", []string{"a", "b"}, `["a" "b"]`}, - {"% 02x", []byte{1}, "01"}, - {"% 02x", []byte{1, 2, 3}, "01 02 03"}, - - // Padding with byte slices. - {"%2x", []byte{}, " "}, - {"%#2x", []byte{}, " "}, - {"% 02x", []byte{}, "00"}, - {"%# 02x", []byte{}, "00"}, - {"%-2x", []byte{}, " "}, - {"%-02x", []byte{}, " "}, - {"%8x", []byte{0xab}, " ab"}, - {"% 8x", []byte{0xab}, " ab"}, - {"%#8x", []byte{0xab}, " 0xab"}, - {"%# 8x", []byte{0xab}, " 0xab"}, - {"%08x", []byte{0xab}, "000000ab"}, - {"% 08x", []byte{0xab}, "000000ab"}, - {"%#08x", []byte{0xab}, "00000xab"}, - {"%# 08x", []byte{0xab}, "00000xab"}, - {"%10x", []byte{0xab, 0xcd}, " abcd"}, - {"% 10x", []byte{0xab, 0xcd}, " ab cd"}, - {"%#10x", []byte{0xab, 0xcd}, " 0xabcd"}, - {"%# 10x", []byte{0xab, 0xcd}, " 0xab 0xcd"}, - {"%010x", []byte{0xab, 0xcd}, "000000abcd"}, - {"% 010x", []byte{0xab, 0xcd}, "00000ab cd"}, - {"%#010x", []byte{0xab, 0xcd}, "00000xabcd"}, - {"%# 010x", []byte{0xab, 0xcd}, "00xab 0xcd"}, - {"%-10X", []byte{0xab}, "AB "}, - {"% -010X", []byte{0xab}, "AB "}, - {"%#-10X", []byte{0xab, 0xcd}, "0XABCD "}, - {"%# -010X", []byte{0xab, 0xcd}, "0XAB 0XCD "}, - // Same for strings - {"%2x", "", " "}, - {"%#2x", "", " "}, - {"% 02x", "", "00"}, - {"%# 02x", "", "00"}, - {"%-2x", "", " "}, - {"%-02x", "", " "}, - {"%8x", "\xab", " ab"}, - {"% 8x", "\xab", " ab"}, - {"%#8x", "\xab", " 0xab"}, - {"%# 8x", "\xab", " 0xab"}, - {"%08x", "\xab", "000000ab"}, - {"% 08x", "\xab", "000000ab"}, - {"%#08x", "\xab", "00000xab"}, - {"%# 08x", "\xab", "00000xab"}, - {"%10x", "\xab\xcd", " abcd"}, - {"% 10x", "\xab\xcd", " ab cd"}, - {"%#10x", "\xab\xcd", " 0xabcd"}, - {"%# 10x", "\xab\xcd", " 0xab 0xcd"}, - {"%010x", "\xab\xcd", "000000abcd"}, - {"% 010x", "\xab\xcd", "00000ab cd"}, - {"%#010x", "\xab\xcd", "00000xabcd"}, - {"%# 010x", "\xab\xcd", "00xab 0xcd"}, - {"%-10X", "\xab", "AB "}, - {"% -010X", "\xab", "AB "}, - {"%#-10X", "\xab\xcd", "0XABCD "}, - {"%# -010X", "\xab\xcd", "0XAB 0XCD "}, - - // renamings - {"%v", renamedBool(true), "true"}, - {"%d", renamedBool(true), "%!d(message.renamedBool=true)"}, - {"%o", renamedInt(8), "10"}, - {"%d", renamedInt8(-9), "-9"}, - {"%v", renamedInt16(10), "10"}, - {"%v", renamedInt32(-11), "-11"}, - {"%X", renamedInt64(255), "FF"}, - {"%v", renamedUint(13), "13"}, - {"%o", renamedUint8(14), "16"}, - {"%X", renamedUint16(15), "F"}, - {"%d", renamedUint32(16), "16"}, - {"%X", renamedUint64(17), "11"}, - {"%o", renamedUintptr(18), "22"}, - {"%x", renamedString("thing"), "7468696e67"}, - {"%d", renamedBytes([]byte{1, 2, 15}), `[1 2 15]`}, - {"%q", renamedBytes([]byte("hello")), `"hello"`}, - {"%x", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, "68656c6c6f"}, - {"%X", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, "68656C6C6F"}, - {"%s", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, "hello"}, - {"%q", []renamedUint8{'h', 'e', 'l', 'l', 'o'}, `"hello"`}, - {"%v", renamedFloat32(22), "22"}, - {"%v", renamedFloat64(33), "33"}, - {"%v", renamedComplex64(3 + 4i), "(3+4i)"}, - {"%v", renamedComplex128(4 - 3i), "(4-3i)"}, - - // Formatter - {"%x", F(1), "<x=F(1)>"}, - {"%x", G(2), "2"}, - {"%+v", S{F(4), G(5)}, "{F:<v=F(4)> G:5}"}, - - // GoStringer - {"%#v", G(6), "GoString(6)"}, - {"%#v", S{F(7), G(8)}, "message.S{F:<v=F(7)>, G:GoString(8)}"}, - - // %T - {"%T", byte(0), "uint8"}, - {"%T", reflect.ValueOf(nil), "reflect.Value"}, - {"%T", (4 - 3i), "complex128"}, - {"%T", renamedComplex128(4 - 3i), "message.renamedComplex128"}, - {"%T", intVar, "int"}, - {"%6T", &intVar, " *int"}, - {"%10T", nil, " <nil>"}, - {"%-10T", nil, "<nil> "}, - - // %p with pointers - {"%p", (*int)(nil), "0x0"}, - {"%#p", (*int)(nil), "0"}, - {"%p", &intVar, "0xPTR"}, - {"%#p", &intVar, "PTR"}, - {"%p", &array, "0xPTR"}, - {"%p", &slice, "0xPTR"}, - {"%8.2p", (*int)(nil), " 0x00"}, - {"%-20.16p", &intVar, "0xPTR "}, - // %p on non-pointers - {"%p", make(chan int), "0xPTR"}, - {"%p", make(map[int]int), "0xPTR"}, - {"%p", func() {}, "0xPTR"}, - {"%p", 27, "%!p(int=27)"}, // not a pointer at all - {"%p", nil, "%!p(<nil>)"}, // nil on its own has no type ... - {"%#p", nil, "%!p(<nil>)"}, // ... and hence is not a pointer type. - // pointers with specified base - {"%b", &intVar, "PTR_b"}, - {"%d", &intVar, "PTR_d"}, - {"%o", &intVar, "PTR_o"}, - {"%x", &intVar, "PTR_x"}, - {"%X", &intVar, "PTR_X"}, - // %v on pointers - {"%v", nil, "<nil>"}, - {"%#v", nil, "<nil>"}, - {"%v", (*int)(nil), "<nil>"}, - {"%#v", (*int)(nil), "(*int)(nil)"}, - {"%v", &intVar, "0xPTR"}, - {"%#v", &intVar, "(*int)(0xPTR)"}, - {"%8.2v", (*int)(nil), " <nil>"}, - {"%-20.16v", &intVar, "0xPTR "}, - // string method on pointer - {"%s", &pValue, "String(p)"}, // String method... - {"%p", &pValue, "0xPTR"}, // ... is not called with %p. - - // %d on Stringer should give integer if possible - {"%s", time.Time{}.Month(), "January"}, - {"%d", time.Time{}.Month(), "1"}, - - // erroneous things - {"%s %", "hello", "hello %!(NOVERB)"}, - {"%s %.2", "hello", "hello %!(NOVERB)"}, - - // The "<nil>" show up because maps are printed by - // first obtaining a list of keys and then looking up - // each key. Since NaNs can be map keys but cannot - // be fetched directly, the lookup fails and returns a - // zero reflect.Value, which formats as <nil>. - // This test is just to check that it shows the two NaNs at all. - {"%v", map[float64]int{NaN: 1, NaN: 2}, "map[NaN:<nil> NaN:<nil>]"}, - - // Comparison of padding rules with C printf. - /* - C program: - #include <stdio.h> - - char *format[] = { - "[%.2f]", - "[% .2f]", - "[%+.2f]", - "[%7.2f]", - "[% 7.2f]", - "[%+7.2f]", - "[% +7.2f]", - "[%07.2f]", - "[% 07.2f]", - "[%+07.2f]", - "[% +07.2f]" - }; - - int main(void) { - int i; - for(i = 0; i < 11; i++) { - printf("%s: ", format[i]); - printf(format[i], 1.0); - printf(" "); - printf(format[i], -1.0); - printf("\n"); - } - } - - Output: - [%.2f]: [1.00] [-1.00] - [% .2f]: [ 1.00] [-1.00] - [%+.2f]: [+1.00] [-1.00] - [%7.2f]: [ 1.00] [ -1.00] - [% 7.2f]: [ 1.00] [ -1.00] - [%+7.2f]: [ +1.00] [ -1.00] - [% +7.2f]: [ +1.00] [ -1.00] - [%07.2f]: [0001.00] [-001.00] - [% 07.2f]: [ 001.00] [-001.00] - [%+07.2f]: [+001.00] [-001.00] - [% +07.2f]: [+001.00] [-001.00] - - */ - {"%.2f", 1.0, "1.00"}, - {"%.2f", -1.0, "-1.00"}, - {"% .2f", 1.0, " 1.00"}, - {"% .2f", -1.0, "-1.00"}, - {"%+.2f", 1.0, "+1.00"}, - {"%+.2f", -1.0, "-1.00"}, - {"%7.2f", 1.0, " 1.00"}, - {"%7.2f", -1.0, " -1.00"}, - {"% 7.2f", 1.0, " 1.00"}, - {"% 7.2f", -1.0, " -1.00"}, - {"%+7.2f", 1.0, " +1.00"}, - {"%+7.2f", -1.0, " -1.00"}, - {"% +7.2f", 1.0, " +1.00"}, - {"% +7.2f", -1.0, " -1.00"}, - // Padding with 0's indicates minimum number of integer digits minus the - // period, if present, and minus the sign if it is fixed. - // TODO: consider making this number the number of significant digits. - {"%07.2f", 1.0, "0,001.00"}, - {"%07.2f", -1.0, "-0,001.00"}, - {"% 07.2f", 1.0, " 001.00"}, - {"% 07.2f", -1.0, "-001.00"}, - {"%+07.2f", 1.0, "+001.00"}, - {"%+07.2f", -1.0, "-001.00"}, - {"% +07.2f", 1.0, "+001.00"}, - {"% +07.2f", -1.0, "-001.00"}, - - // Complex numbers: exhaustively tested in TestComplexFormatting. - {"%7.2f", 1 + 2i, "( 1.00 +2.00i)"}, - {"%+07.2f", -1 - 2i, "(-001.00-002.00i)"}, - - // Use spaces instead of zero if padding to the right. - {"%0-5s", "abc", "abc "}, - {"%-05.1f", 1.0, "1.0 "}, - - // float and complex formatting should not change the padding width - // for other elements. See issue 14642. - {"%06v", []interface{}{+10.0, 10}, "[000,010 000,010]"}, - {"%06v", []interface{}{-10.0, 10}, "[-000,010 000,010]"}, - {"%06v", []interface{}{+10.0 + 10i, 10}, "[(000,010+00,010i) 000,010]"}, - {"%06v", []interface{}{-10.0 + 10i, 10}, "[(-000,010+00,010i) 000,010]"}, - - // integer formatting should not alter padding for other elements. - {"%03.6v", []interface{}{1, 2.0, "x"}, "[000,001 002 00x]"}, - {"%03.0v", []interface{}{0, 2.0, "x"}, "[ 002 000]"}, - - // Complex fmt used to leave the plus flag set for future entries in the array - // causing +2+0i and +3+0i instead of 2+0i and 3+0i. - {"%v", []complex64{1, 2, 3}, "[(1+0i) (2+0i) (3+0i)]"}, - {"%v", []complex128{1, 2, 3}, "[(1+0i) (2+0i) (3+0i)]"}, - - // Incomplete format specification caused crash. - {"%.", 3, "%!.(int=3)"}, - - // Padding for complex numbers. Has been bad, then fixed, then bad again. - {"%+10.2f", +104.66 + 440.51i, "( +104.66 +440.51i)"}, - {"%+10.2f", -104.66 + 440.51i, "( -104.66 +440.51i)"}, - {"%+10.2f", +104.66 - 440.51i, "( +104.66 -440.51i)"}, - {"%+10.2f", -104.66 - 440.51i, "( -104.66 -440.51i)"}, - {"%010.2f", +104.66 + 440.51i, "(0,000,104.66+000,440.51i)"}, - {"%+010.2f", +104.66 + 440.51i, "(+000,104.66+000,440.51i)"}, - {"%+010.2f", -104.66 + 440.51i, "(-000,104.66+000,440.51i)"}, - {"%+010.2f", +104.66 - 440.51i, "(+000,104.66-000,440.51i)"}, - {"%+010.2f", -104.66 - 440.51i, "(-000,104.66-000,440.51i)"}, - - // []T where type T is a byte with a Stringer method. - {"%v", byteStringerSlice, "[X X X X X]"}, - {"%s", byteStringerSlice, "hello"}, - {"%q", byteStringerSlice, "\"hello\""}, - {"%x", byteStringerSlice, "68656c6c6f"}, - {"%X", byteStringerSlice, "68656C6C6F"}, - {"%#v", byteStringerSlice, "[]message.byteStringer{0x68, 0x65, 0x6c, 0x6c, 0x6f}"}, - - // And the same for Formatter. - {"%v", byteFormatterSlice, "[X X X X X]"}, - {"%s", byteFormatterSlice, "hello"}, - {"%q", byteFormatterSlice, "\"hello\""}, - {"%x", byteFormatterSlice, "68656c6c6f"}, - {"%X", byteFormatterSlice, "68656C6C6F"}, - // This next case seems wrong, but the docs say the Formatter wins here. - {"%#v", byteFormatterSlice, "[]message.byteFormatter{X, X, X, X, X}"}, - - // reflect.Value handled specially in Go 1.5, making it possible to - // see inside non-exported fields (which cannot be accessed with Interface()). - // Issue 8965. - {"%v", reflect.ValueOf(A{}).Field(0).String(), "<int Value>"}, // Equivalent to the old way. - {"%v", reflect.ValueOf(A{}).Field(0), "0"}, // Sees inside the field. - - // verbs apply to the extracted value too. - {"%s", reflect.ValueOf("hello"), "hello"}, - {"%q", reflect.ValueOf("hello"), `"hello"`}, - {"%#04x", reflect.ValueOf(256), "0x0100"}, - - // invalid reflect.Value doesn't crash. - {"%v", reflect.Value{}, "<invalid reflect.Value>"}, - {"%v", &reflect.Value{}, "<invalid Value>"}, - {"%v", SI{reflect.Value{}}, "{<invalid Value>}"}, - - // Tests to check that not supported verbs generate an error string. - {"%☠", nil, "%!☠(<nil>)"}, - {"%☠", interface{}(nil), "%!☠(<nil>)"}, - {"%☠", int(0), "%!☠(int=0)"}, - {"%☠", uint(0), "%!☠(uint=0)"}, - {"%☠", []byte{0, 1}, "[%!☠(uint8=0) %!☠(uint8=1)]"}, - {"%☠", []uint8{0, 1}, "[%!☠(uint8=0) %!☠(uint8=1)]"}, - {"%☠", [1]byte{0}, "[%!☠(uint8=0)]"}, - {"%☠", [1]uint8{0}, "[%!☠(uint8=0)]"}, - {"%☠", "hello", "%!☠(string=hello)"}, - {"%☠", 1.2345678, "%!☠(float64=1.2345678)"}, - {"%☠", float32(1.2345678), "%!☠(float32=1.2345678)"}, - {"%☠", 1.2345678 + 1.2345678i, "%!☠(complex128=(1.2345678+1.2345678i))"}, - {"%☠", complex64(1.2345678 + 1.2345678i), "%!☠(complex64=(1.2345678+1.2345678i))"}, - {"%☠", &intVar, "%!☠(*int=0xPTR)"}, - {"%☠", make(chan int), "%!☠(chan int=0xPTR)"}, - {"%☠", func() {}, "%!☠(func()=0xPTR)"}, - {"%☠", reflect.ValueOf(renamedInt(0)), "%!☠(message.renamedInt=0)"}, - {"%☠", SI{renamedInt(0)}, "{%!☠(message.renamedInt=0)}"}, - {"%☠", &[]interface{}{I(1), G(2)}, "&[%!☠(message.I=1) %!☠(message.G=2)]"}, - {"%☠", SI{&[]interface{}{I(1), G(2)}}, "{%!☠(*[]interface {}=&[1 2])}"}, - {"%☠", reflect.Value{}, "<invalid reflect.Value>"}, - {"%☠", map[float64]int{NaN: 1}, "map[%!☠(float64=NaN):%!☠(<nil>)]"}, -} - -// zeroFill generates zero-filled strings of the specified width. The length -// of the suffix (but not the prefix) is compensated for in the width calculation. -func zeroFill(prefix string, width int, suffix string) string { - return prefix + strings.Repeat("0", width-len(suffix)) + suffix -} - -func TestSprintf(t *testing.T) { - p := NewPrinter(language.Und) - for _, tt := range fmtTests { - t.Run(fmt.Sprint(tt.fmt, "/", tt.val), func(t *testing.T) { - s := p.Sprintf(tt.fmt, tt.val) - i := strings.Index(tt.out, "PTR") - if i >= 0 && i < len(s) { - var pattern, chars string - switch { - case strings.HasPrefix(tt.out[i:], "PTR_b"): - pattern = "PTR_b" - chars = "01" - case strings.HasPrefix(tt.out[i:], "PTR_o"): - pattern = "PTR_o" - chars = "01234567" - case strings.HasPrefix(tt.out[i:], "PTR_d"): - pattern = "PTR_d" - chars = "0123456789" - case strings.HasPrefix(tt.out[i:], "PTR_x"): - pattern = "PTR_x" - chars = "0123456789abcdef" - case strings.HasPrefix(tt.out[i:], "PTR_X"): - pattern = "PTR_X" - chars = "0123456789ABCDEF" - default: - pattern = "PTR" - chars = "0123456789abcdefABCDEF" - } - p := s[:i] + pattern - for j := i; j < len(s); j++ { - if !strings.ContainsRune(chars, rune(s[j])) { - p += s[j:] - break - } - } - s = p - } - if s != tt.out { - if _, ok := tt.val.(string); ok { - // Don't requote the already-quoted strings. - // It's too confusing to read the errors. - t.Errorf("Sprintf(%q, %q) = <%s> want <%s>", tt.fmt, tt.val, s, tt.out) - } else { - t.Errorf("Sprintf(%q, %v) = %q want %q", tt.fmt, tt.val, s, tt.out) - } - } - }) - } -} - -var f float64 - -// TestComplexFormatting checks that a complex always formats to the same -// thing as if done by hand with two singleton prints. -func TestComplexFormatting(t *testing.T) { - var yesNo = []bool{true, false} - var values = []float64{1, 0, -1, posInf, negInf, NaN} - p := NewPrinter(language.Und) - for _, plus := range yesNo { - for _, zero := range yesNo { - for _, space := range yesNo { - for _, char := range "fFeEgG" { - realFmt := "%" - if zero { - realFmt += "0" - } - if space { - realFmt += " " - } - if plus { - realFmt += "+" - } - realFmt += "10.2" - realFmt += string(char) - // Imaginary part always has a sign, so force + and ignore space. - imagFmt := "%" - if zero { - imagFmt += "0" - } - imagFmt += "+" - imagFmt += "10.2" - imagFmt += string(char) - for _, realValue := range values { - for _, imagValue := range values { - one := p.Sprintf(realFmt, complex(realValue, imagValue)) - two := p.Sprintf("("+realFmt+imagFmt+"i)", realValue, imagValue) - if math.IsNaN(imagValue) { - p := len(two) - len("NaNi)") - 1 - if two[p] == ' ' { - two = two[:p] + "+" + two[p+1:] - } else { - two = two[:p+1] + "+" + two[p+1:] - } - } - if one != two { - t.Error(f, one, two) - } - } - } - } - } - } - } -} - -type SE []interface{} // slice of empty; notational compactness. - -var reorderTests = []struct { - format string - args SE - out string -}{ - {"%[1]d", SE{1}, "1"}, - {"%[2]d", SE{2, 1}, "1"}, - {"%[2]d %[1]d", SE{1, 2}, "2 1"}, - {"%[2]*[1]d", SE{2, 5}, " 2"}, - {"%6.2f", SE{12.0}, " 12.00"}, // Explicit version of next line. - {"%[3]*.[2]*[1]f", SE{12.0, 2, 6}, " 12.00"}, - {"%[1]*.[2]*[3]f", SE{6, 2, 12.0}, " 12.00"}, - {"%10f", SE{12.0}, " 12.000000"}, - {"%[1]*[3]f", SE{10, 99, 12.0}, " 12.000000"}, - {"%.6f", SE{12.0}, "12.000000"}, // Explicit version of next line. - {"%.[1]*[3]f", SE{6, 99, 12.0}, "12.000000"}, - {"%6.f", SE{12.0}, " 12"}, // // Explicit version of next line; empty precision means zero. - {"%[1]*.[3]f", SE{6, 3, 12.0}, " 12"}, - // An actual use! Print the same arguments twice. - {"%d %d %d %#[1]o %#o %#o", SE{11, 12, 13}, "11 12 13 013 014 015"}, - - // Erroneous cases. - {"%[d", SE{2, 1}, "%!d(BADINDEX)"}, - {"%]d", SE{2, 1}, "%!](int=2)d%!(EXTRA int=1)"}, - {"%[]d", SE{2, 1}, "%!d(BADINDEX)"}, - {"%[-3]d", SE{2, 1}, "%!d(BADINDEX)"}, - {"%[99]d", SE{2, 1}, "%!d(BADINDEX)"}, - {"%[3]", SE{2, 1}, "%!(NOVERB)"}, - {"%[1].2d", SE{5, 6}, "%!d(BADINDEX)"}, - {"%[1]2d", SE{2, 1}, "%!d(BADINDEX)"}, - {"%3.[2]d", SE{7}, "%!d(BADINDEX)"}, - {"%.[2]d", SE{7}, "%!d(BADINDEX)"}, - {"%d %d %d %#[1]o %#o %#o %#o", SE{11, 12, 13}, "11 12 13 013 014 015 %!o(MISSING)"}, - {"%[5]d %[2]d %d", SE{1, 2, 3}, "%!d(BADINDEX) 2 3"}, - {"%d %[3]d %d", SE{1, 2}, "1 %!d(BADINDEX) 2"}, // Erroneous index does not affect sequence. - {"%.[]", SE{}, "%!](BADINDEX)"}, // Issue 10675 - {"%.-3d", SE{42}, "%!-(int=42)3d"}, // TODO: Should this set return better error messages? - // The following messages are interpreted as if there is no substitution, - // in which case it is okay to have extra arguments. This is different - // semantics from the fmt package. - {"%2147483648d", SE{42}, "%!(NOVERB)"}, - {"%-2147483648d", SE{42}, "%!(NOVERB)"}, - {"%.2147483648d", SE{42}, "%!(NOVERB)"}, -} - -func TestReorder(t *testing.T) { - p := NewPrinter(language.Und) - for _, tc := range reorderTests { - t.Run(fmt.Sprint(tc.format, "/", tc.args), func(t *testing.T) { - s := p.Sprintf(tc.format, tc.args...) - if s != tc.out { - t.Errorf("Sprintf(%q, %v) = %q want %q", tc.format, tc.args, s, tc.out) - } - }) - } -} - -func BenchmarkSprintfPadding(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%16f", 1.0) - } - }) -} - -func BenchmarkSprintfEmpty(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("") - } - }) -} - -func BenchmarkSprintfString(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%s", "hello") - } - }) -} - -func BenchmarkSprintfTruncateString(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%.3s", "日本語日本語日本語") - } - }) -} - -func BenchmarkSprintfQuoteString(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%q", "日本語日本語日本語") - } - }) -} - -func BenchmarkSprintfInt(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%d", 5) - } - }) -} - -func BenchmarkSprintfIntInt(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%d %d", 5, 6) - } - }) -} - -func BenchmarkSprintfPrefixedInt(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("This is some meaningless prefix text that needs to be scanned %d", 6) - } - }) -} - -func BenchmarkSprintfFloat(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%g", 5.23184) - } - }) -} - -func BenchmarkSprintfComplex(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%f", 5.23184+5.23184i) - } - }) -} - -func BenchmarkSprintfBoolean(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%t", true) - } - }) -} - -func BenchmarkSprintfHexString(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("% #x", "0123456789abcdef") - } - }) -} - -func BenchmarkSprintfHexBytes(b *testing.B) { - data := []byte("0123456789abcdef") - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("% #x", data) - } - }) -} - -func BenchmarkSprintfBytes(b *testing.B) { - data := []byte("0123456789abcdef") - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%v", data) - } - }) -} - -func BenchmarkSprintfStringer(b *testing.B) { - stringer := I(12345) - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%v", stringer) - } - }) -} - -func BenchmarkSprintfStructure(b *testing.B) { - s := &[]interface{}{SI{12345}, map[int]string{0: "hello"}} - b.RunParallel(func(pb *testing.PB) { - p := NewPrinter(language.English) - for pb.Next() { - p.Sprintf("%#v", s) - } - }) -} - -func BenchmarkManyArgs(b *testing.B) { - b.RunParallel(func(pb *testing.PB) { - var buf bytes.Buffer - p := NewPrinter(language.English) - for pb.Next() { - buf.Reset() - p.Fprintf(&buf, "%2d/%2d/%2d %d:%d:%d %s %s\n", 3, 4, 5, 11, 12, 13, "hello", "world") - } - }) -} - -func BenchmarkFprintInt(b *testing.B) { - var buf bytes.Buffer - p := NewPrinter(language.English) - for i := 0; i < b.N; i++ { - buf.Reset() - p.Fprint(&buf, 123456) - } -} - -func BenchmarkFprintfBytes(b *testing.B) { - data := []byte(string("0123456789")) - var buf bytes.Buffer - p := NewPrinter(language.English) - for i := 0; i < b.N; i++ { - buf.Reset() - p.Fprintf(&buf, "%s", data) - } -} - -func BenchmarkFprintIntNoAlloc(b *testing.B) { - var x interface{} = 123456 - var buf bytes.Buffer - p := NewPrinter(language.English) - for i := 0; i < b.N; i++ { - buf.Reset() - p.Fprint(&buf, x) - } -} - -var mallocBuf bytes.Buffer -var mallocPointer *int // A pointer so we know the interface value won't allocate. - -var mallocTest = []struct { - count int - desc string - fn func(p *Printer) -}{ - {0, `Sprintf("")`, func(p *Printer) { p.Sprintf("") }}, - {1, `Sprintf("xxx")`, func(p *Printer) { p.Sprintf("xxx") }}, - {2, `Sprintf("%x")`, func(p *Printer) { p.Sprintf("%x", 7) }}, - {2, `Sprintf("%s")`, func(p *Printer) { p.Sprintf("%s", "hello") }}, - {3, `Sprintf("%x %x")`, func(p *Printer) { p.Sprintf("%x %x", 7, 112) }}, - {2, `Sprintf("%g")`, func(p *Printer) { p.Sprintf("%g", float32(3.14159)) }}, // TODO: Can this be 1? - {1, `Fprintf(buf, "%s")`, func(p *Printer) { mallocBuf.Reset(); p.Fprintf(&mallocBuf, "%s", "hello") }}, - // If the interface value doesn't need to allocate, amortized allocation overhead should be zero. - {0, `Fprintf(buf, "%x %x %x")`, func(p *Printer) { - mallocBuf.Reset() - p.Fprintf(&mallocBuf, "%x %x %x", mallocPointer, mallocPointer, mallocPointer) - }}, -} - -var _ bytes.Buffer - -func TestCountMallocs(t *testing.T) { - switch { - case testing.Short(): - t.Skip("skipping malloc count in short mode") - case runtime.GOMAXPROCS(0) > 1: - t.Skip("skipping; GOMAXPROCS>1") - // TODO: detect race detecter enabled. - // case race.Enabled: - // t.Skip("skipping malloc count under race detector") - } - p := NewPrinter(language.English) - for _, mt := range mallocTest { - mallocs := testing.AllocsPerRun(100, func() { mt.fn(p) }) - if got, max := mallocs, float64(mt.count); got > max { - t.Errorf("%s: got %v allocs, want <=%v", mt.desc, got, max) - } - } -} - -type flagPrinter struct{} - -func (flagPrinter) Format(f fmt.State, c rune) { - s := "%" - for i := 0; i < 128; i++ { - if f.Flag(i) { - s += string(i) - } - } - if w, ok := f.Width(); ok { - s += fmt.Sprintf("%d", w) - } - if p, ok := f.Precision(); ok { - s += fmt.Sprintf(".%d", p) - } - s += string(c) - io.WriteString(f, "["+s+"]") -} - -var flagtests = []struct { - in string - out string -}{ - {"%a", "[%a]"}, - {"%-a", "[%-a]"}, - {"%+a", "[%+a]"}, - {"%#a", "[%#a]"}, - {"% a", "[% a]"}, - {"%0a", "[%0a]"}, - {"%1.2a", "[%1.2a]"}, - {"%-1.2a", "[%-1.2a]"}, - {"%+1.2a", "[%+1.2a]"}, - {"%-+1.2a", "[%+-1.2a]"}, - {"%-+1.2abc", "[%+-1.2a]bc"}, - {"%-1.2abc", "[%-1.2a]bc"}, -} - -func TestFlagParser(t *testing.T) { - var flagprinter flagPrinter - for _, tt := range flagtests { - s := NewPrinter(language.Und).Sprintf(tt.in, &flagprinter) - if s != tt.out { - t.Errorf("Sprintf(%q, &flagprinter) => %q, want %q", tt.in, s, tt.out) - } - } -} - -func TestStructPrinter(t *testing.T) { - type T struct { - a string - b string - c int - } - var s T - s.a = "abc" - s.b = "def" - s.c = 123 - var tests = []struct { - fmt string - out string - }{ - {"%v", "{abc def 123}"}, - {"%+v", "{a:abc b:def c:123}"}, - {"%#v", `message.T{a:"abc", b:"def", c:123}`}, - } - p := NewPrinter(language.Und) - for _, tt := range tests { - out := p.Sprintf(tt.fmt, s) - if out != tt.out { - t.Errorf("Sprintf(%q, s) = %#q, want %#q", tt.fmt, out, tt.out) - } - // The same but with a pointer. - out = p.Sprintf(tt.fmt, &s) - if out != "&"+tt.out { - t.Errorf("Sprintf(%q, &s) = %#q, want %#q", tt.fmt, out, "&"+tt.out) - } - } -} - -func TestSlicePrinter(t *testing.T) { - p := NewPrinter(language.Und) - slice := []int{} - s := p.Sprint(slice) - if s != "[]" { - t.Errorf("empty slice printed as %q not %q", s, "[]") - } - slice = []int{1, 2, 3} - s = p.Sprint(slice) - if s != "[1 2 3]" { - t.Errorf("slice: got %q expected %q", s, "[1 2 3]") - } - s = p.Sprint(&slice) - if s != "&[1 2 3]" { - t.Errorf("&slice: got %q expected %q", s, "&[1 2 3]") - } -} - -// presentInMap checks map printing using substrings so we don't depend on the -// print order. -func presentInMap(s string, a []string, t *testing.T) { - for i := 0; i < len(a); i++ { - loc := strings.Index(s, a[i]) - if loc < 0 { - t.Errorf("map print: expected to find %q in %q", a[i], s) - } - // make sure the match ends here - loc += len(a[i]) - if loc >= len(s) || (s[loc] != ' ' && s[loc] != ']') { - t.Errorf("map print: %q not properly terminated in %q", a[i], s) - } - } -} - -func TestMapPrinter(t *testing.T) { - p := NewPrinter(language.Und) - m0 := make(map[int]string) - s := p.Sprint(m0) - if s != "map[]" { - t.Errorf("empty map printed as %q not %q", s, "map[]") - } - m1 := map[int]string{1: "one", 2: "two", 3: "three"} - a := []string{"1:one", "2:two", "3:three"} - presentInMap(p.Sprintf("%v", m1), a, t) - presentInMap(p.Sprint(m1), a, t) - // Pointer to map prints the same but with initial &. - if !strings.HasPrefix(p.Sprint(&m1), "&") { - t.Errorf("no initial & for address of map") - } - presentInMap(p.Sprintf("%v", &m1), a, t) - presentInMap(p.Sprint(&m1), a, t) -} - -func TestEmptyMap(t *testing.T) { - const emptyMapStr = "map[]" - var m map[string]int - p := NewPrinter(language.Und) - s := p.Sprint(m) - if s != emptyMapStr { - t.Errorf("nil map printed as %q not %q", s, emptyMapStr) - } - m = make(map[string]int) - s = p.Sprint(m) - if s != emptyMapStr { - t.Errorf("empty map printed as %q not %q", s, emptyMapStr) - } -} - -// TestBlank checks that Sprint (and hence Print, Fprint) puts spaces in the -// right places, that is, between arg pairs in which neither is a string. -func TestBlank(t *testing.T) { - p := NewPrinter(language.Und) - got := p.Sprint("<", 1, ">:", 1, 2, 3, "!") - expect := "<1>:1 2 3!" - if got != expect { - t.Errorf("got %q expected %q", got, expect) - } -} - -// TestBlankln checks that Sprintln (and hence Println, Fprintln) puts spaces in -// the right places, that is, between all arg pairs. -func TestBlankln(t *testing.T) { - p := NewPrinter(language.Und) - got := p.Sprintln("<", 1, ">:", 1, 2, 3, "!") - expect := "< 1 >: 1 2 3 !\n" - if got != expect { - t.Errorf("got %q expected %q", got, expect) - } -} - -// TestFormatterPrintln checks Formatter with Sprint, Sprintln, Sprintf. -func TestFormatterPrintln(t *testing.T) { - p := NewPrinter(language.Und) - f := F(1) - expect := "<v=F(1)>\n" - s := p.Sprint(f, "\n") - if s != expect { - t.Errorf("Sprint wrong with Formatter: expected %q got %q", expect, s) - } - s = p.Sprintln(f) - if s != expect { - t.Errorf("Sprintln wrong with Formatter: expected %q got %q", expect, s) - } - s = p.Sprintf("%v\n", f) - if s != expect { - t.Errorf("Sprintf wrong with Formatter: expected %q got %q", expect, s) - } -} - -func args(a ...interface{}) []interface{} { return a } - -var startests = []struct { - fmt string - in []interface{} - out string -}{ - {"%*d", args(4, 42), " 42"}, - {"%-*d", args(4, 42), "42 "}, - {"%*d", args(-4, 42), "42 "}, - {"%-*d", args(-4, 42), "42 "}, - {"%.*d", args(4, 42), "0,042"}, - {"%*.*d", args(8, 4, 42), " 0,042"}, - {"%0*d", args(4, 42), "0,042"}, - // Some non-int types for width. (Issue 10732). - {"%0*d", args(uint(4), 42), "0,042"}, - {"%0*d", args(uint64(4), 42), "0,042"}, - {"%0*d", args('\x04', 42), "0,042"}, - {"%0*d", args(uintptr(4), 42), "0,042"}, - - // erroneous - {"%*d", args(nil, 42), "%!(BADWIDTH)42"}, - {"%*d", args(int(1e7), 42), "%!(BADWIDTH)42"}, - {"%*d", args(int(-1e7), 42), "%!(BADWIDTH)42"}, - {"%.*d", args(nil, 42), "%!(BADPREC)42"}, - {"%.*d", args(-1, 42), "%!(BADPREC)42"}, - {"%.*d", args(int(1e7), 42), "%!(BADPREC)42"}, - {"%.*d", args(uint(1e7), 42), "%!(BADPREC)42"}, - {"%.*d", args(uint64(1<<63), 42), "%!(BADPREC)42"}, // Huge negative (-inf). - {"%.*d", args(uint64(1<<64-1), 42), "%!(BADPREC)42"}, // Small negative (-1). - {"%*d", args(5, "foo"), "%!d(string= foo)"}, - {"%*% %d", args(20, 5), "% 5"}, - {"%*", args(4), "%!(NOVERB)"}, -} - -func TestWidthAndPrecision(t *testing.T) { - p := NewPrinter(language.Und) - for i, tt := range startests { - t.Run(fmt.Sprint(tt.fmt, tt.in), func(t *testing.T) { - s := p.Sprintf(tt.fmt, tt.in...) - if s != tt.out { - t.Errorf("#%d: %q: got %q expected %q", i, tt.fmt, s, tt.out) - } - }) - } -} - -// PanicS is a type that panics in String. -type PanicS struct { - message interface{} -} - -// Value receiver. -func (p PanicS) String() string { - panic(p.message) -} - -// PanicGo is a type that panics in GoString. -type PanicGo struct { - message interface{} -} - -// Value receiver. -func (p PanicGo) GoString() string { - panic(p.message) -} - -// PanicF is a type that panics in Format. -type PanicF struct { - message interface{} -} - -// Value receiver. -func (p PanicF) Format(f fmt.State, c rune) { - panic(p.message) -} - -var panictests = []struct { - desc string - fmt string - in interface{} - out string -}{ - // String - {"String", "%s", (*PanicS)(nil), "<nil>"}, // nil pointer special case - {"String", "%s", PanicS{io.ErrUnexpectedEOF}, "%!s(PANIC=unexpected EOF)"}, - {"String", "%s", PanicS{3}, "%!s(PANIC=3)"}, - // GoString - {"GoString", "%#v", (*PanicGo)(nil), "<nil>"}, // nil pointer special case - {"GoString", "%#v", PanicGo{io.ErrUnexpectedEOF}, "%!v(PANIC=unexpected EOF)"}, - {"GoString", "%#v", PanicGo{3}, "%!v(PANIC=3)"}, - // Issue 18282. catchPanic should not clear fmtFlags permanently. - {"Issue 18282", "%#v", []interface{}{PanicGo{3}, PanicGo{3}}, "[]interface {}{%!v(PANIC=3), %!v(PANIC=3)}"}, - // Format - {"Format", "%s", (*PanicF)(nil), "<nil>"}, // nil pointer special case - {"Format", "%s", PanicF{io.ErrUnexpectedEOF}, "%!s(PANIC=unexpected EOF)"}, - {"Format", "%s", PanicF{3}, "%!s(PANIC=3)"}, -} - -func TestPanics(t *testing.T) { - p := NewPrinter(language.Und) - for i, tt := range panictests { - t.Run(fmt.Sprint(tt.desc, "/", tt.fmt, "/", tt.in), func(t *testing.T) { - s := p.Sprintf(tt.fmt, tt.in) - if s != tt.out { - t.Errorf("%d: %q: got %q expected %q", i, tt.fmt, s, tt.out) - } - }) - } -} - -// recurCount tests that erroneous String routine doesn't cause fatal recursion. -var recurCount = 0 - -type Recur struct { - i int - failed *bool -} - -func (r *Recur) String() string { - p := NewPrinter(language.Und) - if recurCount++; recurCount > 10 { - *r.failed = true - return "FAIL" - } - // This will call badVerb. Before the fix, that would cause us to recur into - // this routine to print %!p(value). Now we don't call the user's method - // during an error. - return p.Sprintf("recur@%p value: %d", r, r.i) -} - -func TestBadVerbRecursion(t *testing.T) { - p := NewPrinter(language.Und) - failed := false - r := &Recur{3, &failed} - p.Sprintf("recur@%p value: %d\n", &r, r.i) - if failed { - t.Error("fail with pointer") - } - failed = false - r = &Recur{4, &failed} - p.Sprintf("recur@%p, value: %d\n", r, r.i) - if failed { - t.Error("fail with value") - } -} - -func TestNilDoesNotBecomeTyped(t *testing.T) { - p := NewPrinter(language.Und) - type A struct{} - type B struct{} - var a *A = nil - var b B = B{} - - // indirect the Sprintf call through this noVetWarn variable to avoid - // "go test" failing vet checks in Go 1.10+. - noVetWarn := p.Sprintf - got := noVetWarn("%s %s %s %s %s", nil, a, nil, b, nil) - - const expect = "%!s(<nil>) %!s(*message.A=<nil>) %!s(<nil>) {} %!s(<nil>)" - if got != expect { - t.Errorf("expected:\n\t%q\ngot:\n\t%q", expect, got) - } -} - -var formatterFlagTests = []struct { - in string - val interface{} - out string -}{ - // scalar values with the (unused by fmt) 'a' verb. - {"%a", flagPrinter{}, "[%a]"}, - {"%-a", flagPrinter{}, "[%-a]"}, - {"%+a", flagPrinter{}, "[%+a]"}, - {"%#a", flagPrinter{}, "[%#a]"}, - {"% a", flagPrinter{}, "[% a]"}, - {"%0a", flagPrinter{}, "[%0a]"}, - {"%1.2a", flagPrinter{}, "[%1.2a]"}, - {"%-1.2a", flagPrinter{}, "[%-1.2a]"}, - {"%+1.2a", flagPrinter{}, "[%+1.2a]"}, - {"%-+1.2a", flagPrinter{}, "[%+-1.2a]"}, - {"%-+1.2abc", flagPrinter{}, "[%+-1.2a]bc"}, - {"%-1.2abc", flagPrinter{}, "[%-1.2a]bc"}, - - // composite values with the 'a' verb - {"%a", [1]flagPrinter{}, "[[%a]]"}, - {"%-a", [1]flagPrinter{}, "[[%-a]]"}, - {"%+a", [1]flagPrinter{}, "[[%+a]]"}, - {"%#a", [1]flagPrinter{}, "[[%#a]]"}, - {"% a", [1]flagPrinter{}, "[[% a]]"}, - {"%0a", [1]flagPrinter{}, "[[%0a]]"}, - {"%1.2a", [1]flagPrinter{}, "[[%1.2a]]"}, - {"%-1.2a", [1]flagPrinter{}, "[[%-1.2a]]"}, - {"%+1.2a", [1]flagPrinter{}, "[[%+1.2a]]"}, - {"%-+1.2a", [1]flagPrinter{}, "[[%+-1.2a]]"}, - {"%-+1.2abc", [1]flagPrinter{}, "[[%+-1.2a]]bc"}, - {"%-1.2abc", [1]flagPrinter{}, "[[%-1.2a]]bc"}, - - // simple values with the 'v' verb - {"%v", flagPrinter{}, "[%v]"}, - {"%-v", flagPrinter{}, "[%-v]"}, - {"%+v", flagPrinter{}, "[%+v]"}, - {"%#v", flagPrinter{}, "[%#v]"}, - {"% v", flagPrinter{}, "[% v]"}, - {"%0v", flagPrinter{}, "[%0v]"}, - {"%1.2v", flagPrinter{}, "[%1.2v]"}, - {"%-1.2v", flagPrinter{}, "[%-1.2v]"}, - {"%+1.2v", flagPrinter{}, "[%+1.2v]"}, - {"%-+1.2v", flagPrinter{}, "[%+-1.2v]"}, - {"%-+1.2vbc", flagPrinter{}, "[%+-1.2v]bc"}, - {"%-1.2vbc", flagPrinter{}, "[%-1.2v]bc"}, - - // composite values with the 'v' verb. - {"%v", [1]flagPrinter{}, "[[%v]]"}, - {"%-v", [1]flagPrinter{}, "[[%-v]]"}, - {"%+v", [1]flagPrinter{}, "[[%+v]]"}, - {"%#v", [1]flagPrinter{}, "[1]message.flagPrinter{[%#v]}"}, - {"% v", [1]flagPrinter{}, "[[% v]]"}, - {"%0v", [1]flagPrinter{}, "[[%0v]]"}, - {"%1.2v", [1]flagPrinter{}, "[[%1.2v]]"}, - {"%-1.2v", [1]flagPrinter{}, "[[%-1.2v]]"}, - {"%+1.2v", [1]flagPrinter{}, "[[%+1.2v]]"}, - {"%-+1.2v", [1]flagPrinter{}, "[[%+-1.2v]]"}, - {"%-+1.2vbc", [1]flagPrinter{}, "[[%+-1.2v]]bc"}, - {"%-1.2vbc", [1]flagPrinter{}, "[[%-1.2v]]bc"}, -} - -func TestFormatterFlags(t *testing.T) { - p := NewPrinter(language.Und) - for _, tt := range formatterFlagTests { - s := p.Sprintf(tt.in, tt.val) - if s != tt.out { - t.Errorf("Sprintf(%q, %T) = %q, want %q", tt.in, tt.val, s, tt.out) - } - } -} diff --git a/vendor/golang.org/x/text/message/format.go b/vendor/golang.org/x/text/message/format.go deleted file mode 100644 index a47d17dd..00000000 --- a/vendor/golang.org/x/text/message/format.go +++ /dev/null @@ -1,510 +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 message - -import ( - "bytes" - "strconv" - "unicode/utf8" - - "golang.org/x/text/internal/format" -) - -const ( - ldigits = "0123456789abcdefx" - udigits = "0123456789ABCDEFX" -) - -const ( - signed = true - unsigned = false -) - -// A formatInfo is the raw formatter used by Printf etc. -// It prints into a buffer that must be set up separately. -type formatInfo struct { - buf *bytes.Buffer - - format.Parser - - // intbuf is large enough to store %b of an int64 with a sign and - // avoids padding at the end of the struct on 32 bit architectures. - intbuf [68]byte -} - -func (f *formatInfo) init(buf *bytes.Buffer) { - f.ClearFlags() - f.buf = buf -} - -// writePadding generates n bytes of padding. -func (f *formatInfo) writePadding(n int) { - if n <= 0 { // No padding bytes needed. - return - } - f.buf.Grow(n) - // Decide which byte the padding should be filled with. - padByte := byte(' ') - if f.Zero { - padByte = byte('0') - } - // Fill padding with padByte. - for i := 0; i < n; i++ { - f.buf.WriteByte(padByte) // TODO: make more efficient. - } -} - -// pad appends b to f.buf, padded on left (!f.minus) or right (f.minus). -func (f *formatInfo) pad(b []byte) { - if !f.WidthPresent || f.Width == 0 { - f.buf.Write(b) - return - } - width := f.Width - utf8.RuneCount(b) - if !f.Minus { - // left padding - f.writePadding(width) - f.buf.Write(b) - } else { - // right padding - f.buf.Write(b) - f.writePadding(width) - } -} - -// padString appends s to f.buf, padded on left (!f.minus) or right (f.minus). -func (f *formatInfo) padString(s string) { - if !f.WidthPresent || f.Width == 0 { - f.buf.WriteString(s) - return - } - width := f.Width - utf8.RuneCountInString(s) - if !f.Minus { - // left padding - f.writePadding(width) - f.buf.WriteString(s) - } else { - // right padding - f.buf.WriteString(s) - f.writePadding(width) - } -} - -// fmt_boolean formats a boolean. -func (f *formatInfo) fmt_boolean(v bool) { - if v { - f.padString("true") - } else { - f.padString("false") - } -} - -// fmt_unicode formats a uint64 as "U+0078" or with f.sharp set as "U+0078 'x'". -func (f *formatInfo) fmt_unicode(u uint64) { - buf := f.intbuf[0:] - - // With default precision set the maximum needed buf length is 18 - // for formatting -1 with %#U ("U+FFFFFFFFFFFFFFFF") which fits - // into the already allocated intbuf with a capacity of 68 bytes. - prec := 4 - if f.PrecPresent && f.Prec > 4 { - prec = f.Prec - // Compute space needed for "U+" , number, " '", character, "'". - width := 2 + prec + 2 + utf8.UTFMax + 1 - if width > len(buf) { - buf = make([]byte, width) - } - } - - // Format into buf, ending at buf[i]. Formatting numbers is easier right-to-left. - i := len(buf) - - // For %#U we want to add a space and a quoted character at the end of the buffer. - if f.Sharp && u <= utf8.MaxRune && strconv.IsPrint(rune(u)) { - i-- - buf[i] = '\'' - i -= utf8.RuneLen(rune(u)) - utf8.EncodeRune(buf[i:], rune(u)) - i-- - buf[i] = '\'' - i-- - buf[i] = ' ' - } - // Format the Unicode code point u as a hexadecimal number. - for u >= 16 { - i-- - buf[i] = udigits[u&0xF] - prec-- - u >>= 4 - } - i-- - buf[i] = udigits[u] - prec-- - // Add zeros in front of the number until requested precision is reached. - for prec > 0 { - i-- - buf[i] = '0' - prec-- - } - // Add a leading "U+". - i-- - buf[i] = '+' - i-- - buf[i] = 'U' - - oldZero := f.Zero - f.Zero = false - f.pad(buf[i:]) - f.Zero = oldZero -} - -// fmt_integer formats signed and unsigned integers. -func (f *formatInfo) fmt_integer(u uint64, base int, isSigned bool, digits string) { - negative := isSigned && int64(u) < 0 - if negative { - u = -u - } - - buf := f.intbuf[0:] - // The already allocated f.intbuf with a capacity of 68 bytes - // is large enough for integer formatting when no precision or width is set. - if f.WidthPresent || f.PrecPresent { - // Account 3 extra bytes for possible addition of a sign and "0x". - width := 3 + f.Width + f.Prec // wid and prec are always positive. - if width > len(buf) { - // We're going to need a bigger boat. - buf = make([]byte, width) - } - } - - // Two ways to ask for extra leading zero digits: %.3d or %03d. - // If both are specified the f.zero flag is ignored and - // padding with spaces is used instead. - prec := 0 - if f.PrecPresent { - prec = f.Prec - // Precision of 0 and value of 0 means "print nothing" but padding. - if prec == 0 && u == 0 { - oldZero := f.Zero - f.Zero = false - f.writePadding(f.Width) - f.Zero = oldZero - return - } - } else if f.Zero && f.WidthPresent { - prec = f.Width - if negative || f.Plus || f.Space { - prec-- // leave room for sign - } - } - - // Because printing is easier right-to-left: format u into buf, ending at buf[i]. - // We could make things marginally faster by splitting the 32-bit case out - // into a separate block but it's not worth the duplication, so u has 64 bits. - i := len(buf) - // Use constants for the division and modulo for more efficient code. - // Switch cases ordered by popularity. - switch base { - case 10: - for u >= 10 { - i-- - next := u / 10 - buf[i] = byte('0' + u - next*10) - u = next - } - case 16: - for u >= 16 { - i-- - buf[i] = digits[u&0xF] - u >>= 4 - } - case 8: - for u >= 8 { - i-- - buf[i] = byte('0' + u&7) - u >>= 3 - } - case 2: - for u >= 2 { - i-- - buf[i] = byte('0' + u&1) - u >>= 1 - } - default: - panic("fmt: unknown base; can't happen") - } - i-- - buf[i] = digits[u] - for i > 0 && prec > len(buf)-i { - i-- - buf[i] = '0' - } - - // Various prefixes: 0x, -, etc. - if f.Sharp { - switch base { - case 8: - if buf[i] != '0' { - i-- - buf[i] = '0' - } - case 16: - // Add a leading 0x or 0X. - i-- - buf[i] = digits[16] - i-- - buf[i] = '0' - } - } - - if negative { - i-- - buf[i] = '-' - } else if f.Plus { - i-- - buf[i] = '+' - } else if f.Space { - i-- - buf[i] = ' ' - } - - // Left padding with zeros has already been handled like precision earlier - // or the f.zero flag is ignored due to an explicitly set precision. - oldZero := f.Zero - f.Zero = false - f.pad(buf[i:]) - f.Zero = oldZero -} - -// truncate truncates the string to the specified precision, if present. -func (f *formatInfo) truncate(s string) string { - if f.PrecPresent { - n := f.Prec - for i := range s { - n-- - if n < 0 { - return s[:i] - } - } - } - return s -} - -// fmt_s formats a string. -func (f *formatInfo) fmt_s(s string) { - s = f.truncate(s) - f.padString(s) -} - -// fmt_sbx formats a string or byte slice as a hexadecimal encoding of its bytes. -func (f *formatInfo) fmt_sbx(s string, b []byte, digits string) { - length := len(b) - if b == nil { - // No byte slice present. Assume string s should be encoded. - length = len(s) - } - // Set length to not process more bytes than the precision demands. - if f.PrecPresent && f.Prec < length { - length = f.Prec - } - // Compute width of the encoding taking into account the f.sharp and f.space flag. - width := 2 * length - if width > 0 { - if f.Space { - // Each element encoded by two hexadecimals will get a leading 0x or 0X. - if f.Sharp { - width *= 2 - } - // Elements will be separated by a space. - width += length - 1 - } else if f.Sharp { - // Only a leading 0x or 0X will be added for the whole string. - width += 2 - } - } else { // The byte slice or string that should be encoded is empty. - if f.WidthPresent { - f.writePadding(f.Width) - } - return - } - // Handle padding to the left. - if f.WidthPresent && f.Width > width && !f.Minus { - f.writePadding(f.Width - width) - } - // Write the encoding directly into the output buffer. - buf := f.buf - if f.Sharp { - // Add leading 0x or 0X. - buf.WriteByte('0') - buf.WriteByte(digits[16]) - } - var c byte - for i := 0; i < length; i++ { - if f.Space && i > 0 { - // Separate elements with a space. - buf.WriteByte(' ') - if f.Sharp { - // Add leading 0x or 0X for each element. - buf.WriteByte('0') - buf.WriteByte(digits[16]) - } - } - if b != nil { - c = b[i] // Take a byte from the input byte slice. - } else { - c = s[i] // Take a byte from the input string. - } - // Encode each byte as two hexadecimal digits. - buf.WriteByte(digits[c>>4]) - buf.WriteByte(digits[c&0xF]) - } - // Handle padding to the right. - if f.WidthPresent && f.Width > width && f.Minus { - f.writePadding(f.Width - width) - } -} - -// fmt_sx formats a string as a hexadecimal encoding of its bytes. -func (f *formatInfo) fmt_sx(s, digits string) { - f.fmt_sbx(s, nil, digits) -} - -// fmt_bx formats a byte slice as a hexadecimal encoding of its bytes. -func (f *formatInfo) fmt_bx(b []byte, digits string) { - f.fmt_sbx("", b, digits) -} - -// fmt_q formats a string as a double-quoted, escaped Go string constant. -// If f.sharp is set a raw (backquoted) string may be returned instead -// if the string does not contain any control characters other than tab. -func (f *formatInfo) fmt_q(s string) { - s = f.truncate(s) - if f.Sharp && strconv.CanBackquote(s) { - f.padString("`" + s + "`") - return - } - buf := f.intbuf[:0] - if f.Plus { - f.pad(strconv.AppendQuoteToASCII(buf, s)) - } else { - f.pad(strconv.AppendQuote(buf, s)) - } -} - -// fmt_c formats an integer as a Unicode character. -// If the character is not valid Unicode, it will print '\ufffd'. -func (f *formatInfo) fmt_c(c uint64) { - r := rune(c) - if c > utf8.MaxRune { - r = utf8.RuneError - } - buf := f.intbuf[:0] - w := utf8.EncodeRune(buf[:utf8.UTFMax], r) - f.pad(buf[:w]) -} - -// fmt_qc formats an integer as a single-quoted, escaped Go character constant. -// If the character is not valid Unicode, it will print '\ufffd'. -func (f *formatInfo) fmt_qc(c uint64) { - r := rune(c) - if c > utf8.MaxRune { - r = utf8.RuneError - } - buf := f.intbuf[:0] - if f.Plus { - f.pad(strconv.AppendQuoteRuneToASCII(buf, r)) - } else { - f.pad(strconv.AppendQuoteRune(buf, r)) - } -} - -// fmt_float formats a float64. It assumes that verb is a valid format specifier -// for strconv.AppendFloat and therefore fits into a byte. -func (f *formatInfo) fmt_float(v float64, size int, verb rune, prec int) { - // Explicit precision in format specifier overrules default precision. - if f.PrecPresent { - prec = f.Prec - } - // Format number, reserving space for leading + sign if needed. - num := strconv.AppendFloat(f.intbuf[:1], v, byte(verb), prec, size) - if num[1] == '-' || num[1] == '+' { - num = num[1:] - } else { - num[0] = '+' - } - // f.space means to add a leading space instead of a "+" sign unless - // the sign is explicitly asked for by f.plus. - if f.Space && num[0] == '+' && !f.Plus { - num[0] = ' ' - } - // Special handling for infinities and NaN, - // which don't look like a number so shouldn't be padded with zeros. - if num[1] == 'I' || num[1] == 'N' { - oldZero := f.Zero - f.Zero = false - // Remove sign before NaN if not asked for. - if num[1] == 'N' && !f.Space && !f.Plus { - num = num[1:] - } - f.pad(num) - f.Zero = oldZero - return - } - // The sharp flag forces printing a decimal point for non-binary formats - // and retains trailing zeros, which we may need to restore. - if f.Sharp && verb != 'b' { - digits := 0 - switch verb { - case 'v', 'g', 'G': - digits = prec - // If no precision is set explicitly use a precision of 6. - if digits == -1 { - digits = 6 - } - } - - // Buffer pre-allocated with enough room for - // exponent notations of the form "e+123". - var tailBuf [5]byte - tail := tailBuf[:0] - - hasDecimalPoint := false - // Starting from i = 1 to skip sign at num[0]. - for i := 1; i < len(num); i++ { - switch num[i] { - case '.': - hasDecimalPoint = true - case 'e', 'E': - tail = append(tail, num[i:]...) - num = num[:i] - default: - digits-- - } - } - if !hasDecimalPoint { - num = append(num, '.') - } - for digits > 0 { - num = append(num, '0') - digits-- - } - num = append(num, tail...) - } - // We want a sign if asked for and if the sign is not positive. - if f.Plus || num[0] != '+' { - // If we're zero padding to the left we want the sign before the leading zeros. - // Achieve this by writing the sign out and then padding the unsigned number. - if f.Zero && f.WidthPresent && f.Width > len(num) { - f.buf.WriteByte(num[0]) - f.writePadding(f.Width - len(num)) - f.buf.Write(num[1:]) - return - } - f.pad(num) - return - } - // No sign to show and the number is positive; just print the unsigned number. - f.pad(num[1:]) -} diff --git a/vendor/golang.org/x/text/message/message.go b/vendor/golang.org/x/text/message/message.go deleted file mode 100644 index a3473bff..00000000 --- a/vendor/golang.org/x/text/message/message.go +++ /dev/null @@ -1,186 +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 message // import "golang.org/x/text/message" - -import ( - "io" - "os" - - // Include features to facilitate generated catalogs. - _ "golang.org/x/text/feature/plural" - - "golang.org/x/text/internal/number" - "golang.org/x/text/language" - "golang.org/x/text/message/catalog" -) - -// A Printer implements language-specific formatted I/O analogous to the fmt -// package. -type Printer struct { - // the language - tag language.Tag - - toDecimal number.Formatter - toScientific number.Formatter - - cat catalog.Catalog -} - -type options struct { - cat catalog.Catalog - // TODO: - // - allow %s to print integers in written form (tables are likely too large - // to enable this by default). - // - list behavior - // -} - -// An Option defines an option of a Printer. -type Option func(o *options) - -// Catalog defines the catalog to be used. -func Catalog(c catalog.Catalog) Option { - return func(o *options) { o.cat = c } -} - -// NewPrinter returns a Printer that formats messages tailored to language t. -func NewPrinter(t language.Tag, opts ...Option) *Printer { - options := &options{ - cat: DefaultCatalog, - } - for _, o := range opts { - o(options) - } - p := &Printer{ - tag: t, - cat: options.cat, - } - p.toDecimal.InitDecimal(t) - p.toScientific.InitScientific(t) - return p -} - -// Sprint is like fmt.Sprint, but using language-specific formatting. -func (p *Printer) Sprint(a ...interface{}) string { - pp := newPrinter(p) - pp.doPrint(a) - s := pp.String() - pp.free() - return s -} - -// Fprint is like fmt.Fprint, but using language-specific formatting. -func (p *Printer) Fprint(w io.Writer, a ...interface{}) (n int, err error) { - pp := newPrinter(p) - pp.doPrint(a) - n64, err := io.Copy(w, &pp.Buffer) - pp.free() - return int(n64), err -} - -// Print is like fmt.Print, but using language-specific formatting. -func (p *Printer) Print(a ...interface{}) (n int, err error) { - return p.Fprint(os.Stdout, a...) -} - -// Sprintln is like fmt.Sprintln, but using language-specific formatting. -func (p *Printer) Sprintln(a ...interface{}) string { - pp := newPrinter(p) - pp.doPrintln(a) - s := pp.String() - pp.free() - return s -} - -// Fprintln is like fmt.Fprintln, but using language-specific formatting. -func (p *Printer) Fprintln(w io.Writer, a ...interface{}) (n int, err error) { - pp := newPrinter(p) - pp.doPrintln(a) - n64, err := io.Copy(w, &pp.Buffer) - pp.free() - return int(n64), err -} - -// Println is like fmt.Println, but using language-specific formatting. -func (p *Printer) Println(a ...interface{}) (n int, err error) { - return p.Fprintln(os.Stdout, a...) -} - -// Sprintf is like fmt.Sprintf, but using language-specific formatting. -func (p *Printer) Sprintf(key Reference, a ...interface{}) string { - pp := newPrinter(p) - lookupAndFormat(pp, key, a) - s := pp.String() - pp.free() - return s -} - -// Fprintf is like fmt.Fprintf, but using language-specific formatting. -func (p *Printer) Fprintf(w io.Writer, key Reference, a ...interface{}) (n int, err error) { - pp := newPrinter(p) - lookupAndFormat(pp, key, a) - n, err = w.Write(pp.Bytes()) - pp.free() - return n, err - -} - -// Printf is like fmt.Printf, but using language-specific formatting. -func (p *Printer) Printf(key Reference, a ...interface{}) (n int, err error) { - pp := newPrinter(p) - lookupAndFormat(pp, key, a) - n, err = os.Stdout.Write(pp.Bytes()) - pp.free() - return n, err -} - -func lookupAndFormat(p *printer, r Reference, a []interface{}) { - p.fmt.Reset(a) - var id, msg string - switch v := r.(type) { - case string: - id, msg = v, v - case key: - id, msg = v.id, v.fallback - default: - panic("key argument is not a Reference") - } - - if p.catContext.Execute(id) == catalog.ErrNotFound { - if p.catContext.Execute(msg) == catalog.ErrNotFound { - p.Render(msg) - return - } - } -} - -// Arg implements catmsg.Renderer. -func (p *printer) Arg(i int) interface{} { // TODO, also return "ok" bool - i-- - if uint(i) < uint(len(p.fmt.Args)) { - return p.fmt.Args[i] - } - return nil -} - -// Render implements catmsg.Renderer. -func (p *printer) Render(msg string) { - p.doPrintf(msg) -} - -// A Reference is a string or a message reference. -type Reference interface { - // TODO: also allow []string -} - -// Key creates a message Reference for a message where the given id is used for -// message lookup and the fallback is returned when no matches are found. -func Key(id string, fallback string) Reference { - return key{id, fallback} -} - -type key struct { - id, fallback string -} diff --git a/vendor/golang.org/x/text/message/message_test.go b/vendor/golang.org/x/text/message/message_test.go deleted file mode 100644 index 326f716f..00000000 --- a/vendor/golang.org/x/text/message/message_test.go +++ /dev/null @@ -1,181 +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 message - -import ( - "bytes" - "fmt" - "io" - "testing" - - "golang.org/x/text/internal" - "golang.org/x/text/internal/format" - "golang.org/x/text/language" - "golang.org/x/text/message/catalog" -) - -type formatFunc func(s fmt.State, v rune) - -func (f formatFunc) Format(s fmt.State, v rune) { f(s, v) } - -func TestBinding(t *testing.T) { - testCases := []struct { - tag string - value interface{} - want string - }{ - {"en", 1, "1"}, - {"en", "2", "2"}, - { // Language is passed. - "en", - formatFunc(func(fs fmt.State, v rune) { - s := fs.(format.State) - io.WriteString(s, s.Language().String()) - }), - "en", - }, - } - for i, tc := range testCases { - p := NewPrinter(language.MustParse(tc.tag)) - if got := p.Sprint(tc.value); got != tc.want { - t.Errorf("%d:%s:Sprint(%v) = %q; want %q", i, tc.tag, tc.value, got, tc.want) - } - var buf bytes.Buffer - p.Fprint(&buf, tc.value) - if got := buf.String(); got != tc.want { - t.Errorf("%d:%s:Fprint(%v) = %q; want %q", i, tc.tag, tc.value, got, tc.want) - } - } -} - -func TestLocalization(t *testing.T) { - type test struct { - tag string - key Reference - args []interface{} - want string - } - args := func(x ...interface{}) []interface{} { return x } - empty := []interface{}{} - joe := []interface{}{"Joe"} - joeAndMary := []interface{}{"Joe", "Mary"} - - testCases := []struct { - desc string - cat []entry - test []test - }{{ - desc: "empty", - test: []test{ - {"en", "key", empty, "key"}, - {"en", "", empty, ""}, - {"nl", "", empty, ""}, - }, - }, { - desc: "hierarchical languages", - cat: []entry{ - {"en", "hello %s", "Hello %s!"}, - {"en-GB", "hello %s", "Hellø %s!"}, - {"en-US", "hello %s", "Howdy %s!"}, - {"en", "greetings %s and %s", "Greetings %s and %s!"}, - }, - test: []test{ - {"und", "hello %s", joe, "hello Joe"}, - {"nl", "hello %s", joe, "hello Joe"}, - {"en", "hello %s", joe, "Hello Joe!"}, - {"en-US", "hello %s", joe, "Howdy Joe!"}, - {"en-GB", "hello %s", joe, "Hellø Joe!"}, - {"en-oxendict", "hello %s", joe, "Hello Joe!"}, - {"en-US-oxendict-u-ms-metric", "hello %s", joe, "Howdy Joe!"}, - - {"und", "greetings %s and %s", joeAndMary, "greetings Joe and Mary"}, - {"nl", "greetings %s and %s", joeAndMary, "greetings Joe and Mary"}, - {"en", "greetings %s and %s", joeAndMary, "Greetings Joe and Mary!"}, - {"en-US", "greetings %s and %s", joeAndMary, "Greetings Joe and Mary!"}, - {"en-GB", "greetings %s and %s", joeAndMary, "Greetings Joe and Mary!"}, - {"en-oxendict", "greetings %s and %s", joeAndMary, "Greetings Joe and Mary!"}, - {"en-US-oxendict-u-ms-metric", "greetings %s and %s", joeAndMary, "Greetings Joe and Mary!"}, - }, - }, { - desc: "references", - cat: []entry{ - {"en", "hello", "Hello!"}, - }, - test: []test{ - {"en", "hello", empty, "Hello!"}, - {"en", Key("hello", "fallback"), empty, "Hello!"}, - {"en", Key("xxx", "fallback"), empty, "fallback"}, - {"und", Key("hello", "fallback"), empty, "fallback"}, - }, - }, { - desc: "zero substitution", // work around limitation of fmt - cat: []entry{ - {"en", "hello %s", "Hello!"}, - {"en", "hi %s and %s", "Hello %[2]s!"}, - }, - test: []test{ - {"en", "hello %s", joe, "Hello!"}, - {"en", "hello %s", joeAndMary, "Hello!"}, - {"en", "hi %s and %s", joeAndMary, "Hello Mary!"}, - // The following tests resolve to the fallback string. - {"und", "hello", joeAndMary, "hello"}, - {"und", "hello %%%%", joeAndMary, "hello %%"}, - {"und", "hello %#%%4.2% ", joeAndMary, "hello %% "}, - {"und", "hello %s", joeAndMary, "hello Joe%!(EXTRA string=Mary)"}, - {"und", "hello %+%%s", joeAndMary, "hello %Joe%!(EXTRA string=Mary)"}, - {"und", "hello %-42%%s ", joeAndMary, "hello %Joe %!(EXTRA string=Mary)"}, - }, - }, { - desc: "number formatting", // work around limitation of fmt - cat: []entry{ - {"und", "files", "%d files left"}, - {"und", "meters", "%.2f meters"}, - {"de", "files", "%d Dateien übrig"}, - }, - test: []test{ - {"en", "meters", args(3000.2), "3,000.20 meters"}, - {"en-u-nu-gujr", "files", args(123456), "૧૨૩,૪૫૬ files left"}, - {"de", "files", args(1234), "1.234 Dateien übrig"}, - {"de-CH", "files", args(1234), "1’234 Dateien übrig"}, - {"de-CH-u-nu-mong", "files", args(1234), "᠑’᠒᠓᠔ Dateien übrig"}, - }, - }} - - for _, tc := range testCases { - cat, _ := initCat(tc.cat) - - for i, pt := range tc.test { - t.Run(fmt.Sprintf("%s:%d", tc.desc, i), func(t *testing.T) { - p := NewPrinter(language.MustParse(pt.tag), Catalog(cat)) - - if got := p.Sprintf(pt.key, pt.args...); got != pt.want { - t.Errorf("Sprintf(%q, %v) = %s; want %s", - pt.key, pt.args, got, pt.want) - return // Next error will likely be the same. - } - - w := &bytes.Buffer{} - p.Fprintf(w, pt.key, pt.args...) - if got := w.String(); got != pt.want { - t.Errorf("Fprintf(%q, %v) = %s; want %s", - pt.key, pt.args, got, pt.want) - } - }) - } - } -} - -type entry struct{ tag, key, msg string } - -func initCat(entries []entry) (*catalog.Builder, []language.Tag) { - tags := []language.Tag{} - cat := catalog.NewBuilder() - for _, e := range entries { - tag := language.MustParse(e.tag) - tags = append(tags, tag) - cat.SetString(tag, e.key, e.msg) - } - return cat, internal.UniqueTags(tags) -} diff --git a/vendor/golang.org/x/text/message/pipeline/extract.go b/vendor/golang.org/x/text/message/pipeline/extract.go deleted file mode 100644 index 20ad9146..00000000 --- a/vendor/golang.org/x/text/message/pipeline/extract.go +++ /dev/null @@ -1,305 +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 pipeline - -import ( - "bytes" - "fmt" - "go/ast" - "go/constant" - "go/format" - "go/token" - "go/types" - "path" - "path/filepath" - "strings" - "unicode" - "unicode/utf8" - - fmtparser "golang.org/x/text/internal/format" - "golang.org/x/tools/go/loader" -) - -// TODO: -// - merge information into existing files -// - handle different file formats (PO, XLIFF) -// - handle features (gender, plural) -// - message rewriting - -// Extract extracts all strings form the package defined in Config. -func Extract(c *Config) (*Locale, error) { - conf := loader.Config{} - prog, err := loadPackages(&conf, c.Packages) - if err != nil { - return nil, wrap(err, "") - } - - // print returns Go syntax for the specified node. - print := func(n ast.Node) string { - var buf bytes.Buffer - format.Node(&buf, conf.Fset, n) - return buf.String() - } - - var messages []Message - - for _, info := range prog.AllPackages { - for _, f := range info.Files { - // Associate comments with nodes. - cmap := ast.NewCommentMap(prog.Fset, f, f.Comments) - getComment := func(n ast.Node) string { - cs := cmap.Filter(n).Comments() - if len(cs) > 0 { - return strings.TrimSpace(cs[0].Text()) - } - return "" - } - - // Find function calls. - ast.Inspect(f, func(n ast.Node) bool { - call, ok := n.(*ast.CallExpr) - if !ok { - return true - } - - // Skip calls of functions other than - // (*message.Printer).{Sp,Fp,P}rintf. - sel, ok := call.Fun.(*ast.SelectorExpr) - if !ok { - return true - } - meth := info.Selections[sel] - if meth == nil || meth.Kind() != types.MethodVal { - return true - } - // TODO: remove cheap hack and check if the type either - // implements some interface or is specifically of type - // "golang.org/x/text/message".Printer. - m, ok := extractFuncs[path.Base(meth.Recv().String())] - if !ok { - return true - } - - fmtType, ok := m[meth.Obj().Name()] - if !ok { - return true - } - // argn is the index of the format string. - argn := fmtType.arg - if argn >= len(call.Args) { - return true - } - - args := call.Args[fmtType.arg:] - - fmtMsg, ok := msgStr(info, args[0]) - if !ok { - // TODO: identify the type of the format argument. If it - // is not a string, multiple keys may be defined. - return true - } - comment := "" - key := []string{} - if ident, ok := args[0].(*ast.Ident); ok { - key = append(key, ident.Name) - if v, ok := ident.Obj.Decl.(*ast.ValueSpec); ok && v.Comment != nil { - // TODO: get comment above ValueSpec as well - comment = v.Comment.Text() - } - } - - arguments := []argument{} - args = args[1:] - simArgs := make([]interface{}, len(args)) - for i, arg := range args { - expr := print(arg) - val := "" - if v := info.Types[arg].Value; v != nil { - val = v.ExactString() - simArgs[i] = val - switch arg.(type) { - case *ast.BinaryExpr, *ast.UnaryExpr: - expr = val - } - } - arguments = append(arguments, argument{ - ArgNum: i + 1, - Type: info.Types[arg].Type.String(), - UnderlyingType: info.Types[arg].Type.Underlying().String(), - Expr: expr, - Value: val, - Comment: getComment(arg), - Position: posString(conf, info, arg.Pos()), - // TODO report whether it implements - // interfaces plural.Interface, - // gender.Interface. - }) - } - msg := "" - - ph := placeholders{index: map[string]string{}} - - p := fmtparser.Parser{} - p.Reset(simArgs) - for p.SetFormat(fmtMsg); p.Scan(); { - switch p.Status { - case fmtparser.StatusText: - msg += p.Text() - case fmtparser.StatusSubstitution, - fmtparser.StatusBadWidthSubstitution, - fmtparser.StatusBadPrecSubstitution: - arguments[p.ArgNum-1].used = true - arg := arguments[p.ArgNum-1] - sub := p.Text() - if !p.HasIndex { - r, sz := utf8.DecodeLastRuneInString(sub) - sub = fmt.Sprintf("%s[%d]%c", sub[:len(sub)-sz], p.ArgNum, r) - } - msg += fmt.Sprintf("{%s}", ph.addArg(&arg, sub)) - } - } - key = append(key, msg) - - // Add additional Placeholders that can be used in translations - // that are not present in the string. - for _, arg := range arguments { - if arg.used { - continue - } - ph.addArg(&arg, fmt.Sprintf("%%[%d]v", arg.ArgNum)) - } - - if c := getComment(call.Args[0]); c != "" { - comment = c - } - - messages = append(messages, Message{ - ID: key, - Key: fmtMsg, - Message: Text{Msg: msg}, - // TODO(fix): this doesn't get the before comment. - Comment: comment, - Placeholders: ph.slice, - Position: posString(conf, info, call.Lparen), - }) - return true - }) - } - } - - out := &Locale{ - Language: c.SourceLanguage, - Messages: messages, - } - return out, nil -} - -func posString(conf loader.Config, info *loader.PackageInfo, pos token.Pos) string { - p := conf.Fset.Position(pos) - file := fmt.Sprintf("%s:%d:%d", filepath.Base(p.Filename), p.Line, p.Column) - return filepath.Join(info.Pkg.Path(), file) -} - -// extractFuncs indicates the types and methods for which to extract strings, -// and which argument to extract. -// TODO: use the types in conf.Import("golang.org/x/text/message") to extract -// the correct instances. -var extractFuncs = map[string]map[string]extractType{ - // TODO: Printer -> *golang.org/x/text/message.Printer - "message.Printer": { - "Printf": extractType{arg: 0, format: true}, - "Sprintf": extractType{arg: 0, format: true}, - "Fprintf": extractType{arg: 1, format: true}, - - "Lookup": extractType{arg: 0}, - }, -} - -type extractType struct { - // format indicates if the next arg is a formatted string or whether to - // concatenate all arguments - format bool - // arg indicates the position of the argument to extract. - arg int -} - -func getID(arg *argument) string { - s := getLastComponent(arg.Expr) - s = strip(s) - s = strings.Replace(s, " ", "", -1) - // For small variable names, use user-defined types for more info. - if len(s) <= 2 && arg.UnderlyingType != arg.Type { - s = getLastComponent(arg.Type) - } - return strings.Title(s) -} - -// strip is a dirty hack to convert function calls to placeholder IDs. -func strip(s string) string { - s = strings.Map(func(r rune) rune { - if unicode.IsSpace(r) || r == '-' { - return '_' - } - if !unicode.In(r, unicode.Letter, unicode.Mark) { - return -1 - } - return r - }, s) - // Strip "Get" from getter functions. - if strings.HasPrefix(s, "Get") || strings.HasPrefix(s, "get") { - if len(s) > len("get") { - r, _ := utf8.DecodeRuneInString(s) - if !unicode.In(r, unicode.Ll, unicode.M) { // not lower or mark - s = s[len("get"):] - } - } - } - return s -} - -type placeholders struct { - index map[string]string - slice []Placeholder -} - -func (p *placeholders) addArg(arg *argument, sub string) (id string) { - id = getID(arg) - id1 := id - alt, ok := p.index[id1] - for i := 1; ok && alt != sub; i++ { - id1 = fmt.Sprintf("%s_%d", id, i) - alt, ok = p.index[id1] - } - p.index[id1] = sub - p.slice = append(p.slice, Placeholder{ - ID: id1, - String: sub, - Type: arg.Type, - UnderlyingType: arg.UnderlyingType, - ArgNum: arg.ArgNum, - Expr: arg.Expr, - Comment: arg.Comment, - }) - return id1 -} - -func getLastComponent(s string) string { - return s[1+strings.LastIndexByte(s, '.'):] -} - -func msgStr(info *loader.PackageInfo, e ast.Expr) (s string, ok bool) { - v := info.Types[e].Value - if v == nil || v.Kind() != constant.String { - return "", false - } - s = constant.StringVal(v) - // Only record strings with letters. - for _, r := range s { - if unicode.In(r, unicode.L) { - return s, true - } - } - return "", false -} diff --git a/vendor/golang.org/x/text/message/pipeline/generate.go b/vendor/golang.org/x/text/message/pipeline/generate.go deleted file mode 100644 index c5e51bd8..00000000 --- a/vendor/golang.org/x/text/message/pipeline/generate.go +++ /dev/null @@ -1,251 +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 pipeline - -import ( - "fmt" - "io" - "regexp" - "sort" - "strings" - "text/template" - - "golang.org/x/text/collate" - "golang.org/x/text/feature/plural" - "golang.org/x/text/internal" - "golang.org/x/text/internal/catmsg" - "golang.org/x/text/internal/gen" - "golang.org/x/text/language" -) - -var transRe = regexp.MustCompile(`messages\.(.*)\.json`) - -// Generate writes a Go file with the given package name to w, which defines a -// Catalog with translated messages. -func Generate(w io.Writer, pkg string, extracted *Locale, trans ...*Locale) (n int, err error) { - // TODO: add in external input. Right now we assume that all files are - // manually created and stored in the textdata directory. - - // Build up index of translations and original messages. - translations := map[language.Tag]map[string]Message{} - languages := []language.Tag{} - langVars := []string{} - usedKeys := map[string]int{} - - for _, loc := range trans { - tag := loc.Language - if _, ok := translations[tag]; !ok { - translations[tag] = map[string]Message{} - languages = append(languages, tag) - } - for _, m := range loc.Messages { - if !m.Translation.IsEmpty() { - for _, id := range m.ID { - if _, ok := translations[tag][id]; ok { - logf("Duplicate translation in locale %q for message %q", tag, id) - } - translations[tag][id] = m - } - } - } - } - - // Verify completeness and register keys. - internal.SortTags(languages) - - for _, tag := range languages { - langVars = append(langVars, strings.Replace(tag.String(), "-", "_", -1)) - dict := translations[tag] - for _, msg := range extracted.Messages { - for _, id := range msg.ID { - if trans, ok := dict[id]; ok && !trans.Translation.IsEmpty() { - if _, ok := usedKeys[msg.Key]; !ok { - usedKeys[msg.Key] = len(usedKeys) - } - break - } - // TODO: log missing entry. - logf("%s: Missing entry for %q.", tag, id) - } - } - } - - cw := gen.NewCodeWriter() - - x := &struct { - Fallback language.Tag - Languages []string - }{ - Fallback: extracted.Language, - Languages: langVars, - } - - if err := lookup.Execute(cw, x); err != nil { - return 0, wrap(err, "error") - } - - keyToIndex := []string{} - for k := range usedKeys { - keyToIndex = append(keyToIndex, k) - } - sort.Strings(keyToIndex) - fmt.Fprint(cw, "var messageKeyToIndex = map[string]int{\n") - for _, k := range keyToIndex { - fmt.Fprintf(cw, "%q: %d,\n", k, usedKeys[k]) - } - fmt.Fprint(cw, "}\n\n") - - for i, tag := range languages { - dict := translations[tag] - a := make([]string, len(usedKeys)) - for _, msg := range extracted.Messages { - for _, id := range msg.ID { - if trans, ok := dict[id]; ok && !trans.Translation.IsEmpty() { - m, err := assemble(&msg, &trans.Translation) - if err != nil { - return 0, wrap(err, "error") - } - // TODO: support macros. - data, err := catmsg.Compile(tag, nil, m) - if err != nil { - return 0, wrap(err, "error") - } - key := usedKeys[msg.Key] - if d := a[key]; d != "" && d != data { - logf("Duplicate non-consistent translation for key %q, picking the one for message %q", msg.Key, id) - } - a[key] = string(data) - break - } - } - } - index := []uint32{0} - p := 0 - for _, s := range a { - p += len(s) - index = append(index, uint32(p)) - } - - cw.WriteVar(langVars[i]+"Index", index) - cw.WriteConst(langVars[i]+"Data", strings.Join(a, "")) - } - return cw.WriteGo(w, pkg, "") -} - -func assemble(m *Message, t *Text) (msg catmsg.Message, err error) { - keys := []string{} - for k := range t.Var { - keys = append(keys, k) - } - sort.Strings(keys) - var a []catmsg.Message - for _, k := range keys { - t := t.Var[k] - m, err := assemble(m, &t) - if err != nil { - return nil, err - } - a = append(a, &catmsg.Var{Name: k, Message: m}) - } - if t.Select != nil { - s, err := assembleSelect(m, t.Select) - if err != nil { - return nil, err - } - a = append(a, s) - } - if t.Msg != "" { - sub, err := m.Substitute(t.Msg) - if err != nil { - return nil, err - } - a = append(a, catmsg.String(sub)) - } - switch len(a) { - case 0: - return nil, errorf("generate: empty message") - case 1: - return a[0], nil - default: - return catmsg.FirstOf(a), nil - - } -} - -func assembleSelect(m *Message, s *Select) (msg catmsg.Message, err error) { - cases := []string{} - for c := range s.Cases { - cases = append(cases, c) - } - sortCases(cases) - - caseMsg := []interface{}{} - for _, c := range cases { - cm := s.Cases[c] - m, err := assemble(m, &cm) - if err != nil { - return nil, err - } - caseMsg = append(caseMsg, c, m) - } - - ph := m.Placeholder(s.Arg) - - switch s.Feature { - case "plural": - // TODO: only printf-style selects are supported as of yet. - return plural.Selectf(ph.ArgNum, ph.String, caseMsg...), nil - } - return nil, errorf("unknown feature type %q", s.Feature) -} - -func sortCases(cases []string) { - // TODO: implement full interface. - sort.Slice(cases, func(i, j int) bool { - if cases[j] == "other" && cases[i] != "other" { - return true - } - // the following code relies on '<' < '=' < any letter. - return cmpNumeric(cases[i], cases[j]) == -1 - }) -} - -var cmpNumeric = collate.New(language.Und, collate.Numeric).CompareString - -var lookup = template.Must(template.New("gen").Parse(` -import ( - "golang.org/x/text/language" - "golang.org/x/text/message" - "golang.org/x/text/message/catalog" -) - -type dictionary struct { - index []uint32 - data string -} - -func (d *dictionary) Lookup(key string) (data string, ok bool) { - p := messageKeyToIndex[key] - start, end := d.index[p], d.index[p+1] - if start == end { - return "", false - } - return d.data[start:end], true -} - -func init() { - dict := map[string]catalog.Dictionary{ - {{range .Languages}}"{{.}}": &dictionary{index: {{.}}Index, data: {{.}}Data }, - {{end}} - } - fallback := language.MustParse("{{.Fallback}}") - cat, err := catalog.NewFromMap(dict, catalog.Fallback(fallback)) - if err != nil { - panic(err) - } - message.DefaultCatalog = cat -} - -`)) diff --git a/vendor/golang.org/x/text/message/pipeline/message.go b/vendor/golang.org/x/text/message/pipeline/message.go deleted file mode 100644 index 8e547007..00000000 --- a/vendor/golang.org/x/text/message/pipeline/message.go +++ /dev/null @@ -1,241 +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 pipeline - -import ( - "encoding/json" - "strings" - - "golang.org/x/text/language" -) - -// TODO: these definitions should be moved to a package so that the can be used -// by other tools. - -// The file contains the structures used to define translations of a certain -// messages. -// -// A translation may have multiple translations strings, or messages, depending -// on the feature values of the various arguments. For instance, consider -// a hypothetical translation from English to English, where the source defines -// the format string "%d file(s) remaining". -// See the examples directory for examples of extracted messages. - -// Config contains configuration for the translation pipeline. -type Config struct { - SourceLanguage language.Tag - - // Supported indicates the languages for which data should be generated. - // If unspecified, it will attempt to derive the set of supported languages - // from the context. - Supported []language.Tag - - Packages []string - - // TODO: - // - Printf-style configuration - // - Template-style configuration - // - Extraction options - // - Rewrite options - // - Generation options -} - -// A Locale is used to store all information for a single locale. This type is -// used both for extraction and injection. -type Locale struct { - Language language.Tag `json:"language"` - Messages []Message `json:"messages"` - Macros map[string]Text `json:"macros,omitempty"` -} - -// A Message describes a message to be translated. -type Message struct { - // ID contains a list of identifiers for the message. - ID IDList `json:"id"` - // Key is the string that is used to look up the message at runtime. - Key string `json:"key"` - Meaning string `json:"meaning,omitempty"` - Message Text `json:"message"` - Translation Text `json:"translation"` - - Comment string `json:"comment,omitempty"` - TranslatorComment string `json:"translatorComment,omitempty"` - - Placeholders []Placeholder `json:"placeholders,omitempty"` - - // TODO: default placeholder syntax is {foo}. Allow alternative escaping - // like `foo`. - - // Extraction information. - Position string `json:"position,omitempty"` // filePosition:line -} - -// Placeholder reports the placeholder for the given ID if it is defined or nil -// otherwise. -func (m *Message) Placeholder(id string) *Placeholder { - for _, p := range m.Placeholders { - if p.ID == id { - return &p - } - } - return nil -} - -// Substitute replaces placeholders in msg with their original value. -func (m *Message) Substitute(msg string) (sub string, err error) { - last := 0 - for i := 0; i < len(msg); { - pLeft := strings.IndexByte(msg[i:], '{') - if pLeft == -1 { - break - } - pLeft += i - pRight := strings.IndexByte(msg[pLeft:], '}') - if pRight == -1 { - return "", errorf("unmatched '}'") - } - pRight += pLeft - id := strings.TrimSpace(msg[pLeft+1 : pRight]) - i = pRight + 1 - if id != "" && id[0] == '$' { - continue - } - sub += msg[last:pLeft] - last = i - ph := m.Placeholder(id) - if ph == nil { - return "", errorf("unknown placeholder %q in message %q", id, msg) - } - sub += ph.String - } - sub += msg[last:] - return sub, err -} - -// A Placeholder is a part of the message that should not be changed by a -// translator. It can be used to hide or prettify format strings (e.g. %d or -// {{.Count}}), hide HTML, or mark common names that should not be translated. -type Placeholder struct { - // ID is the placeholder identifier without the curly braces. - ID string `json:"id"` - - // String is the string with which to replace the placeholder. This may be a - // formatting string (for instance "%d" or "{{.Count}}") or a literal string - // (<div>). - String string `json:"string"` - - Type string `json:"type"` - UnderlyingType string `json:"underlyingType"` - // ArgNum and Expr are set if the placeholder is a substitution of an - // argument. - ArgNum int `json:"argNum,omitempty"` - Expr string `json:"expr,omitempty"` - - Comment string `json:"comment,omitempty"` - Example string `json:"example,omitempty"` - - // Features contains the features that are available for the implementation - // of this argument. - Features []Feature `json:"features,omitempty"` -} - -// An argument contains information about the arguments passed to a message. -type argument struct { - // ArgNum corresponds to the number that should be used for explicit argument indexes (e.g. - // "%[1]d"). - ArgNum int `json:"argNum,omitempty"` - - used bool // Used by Placeholder - Type string `json:"type"` - UnderlyingType string `json:"underlyingType"` - Expr string `json:"expr"` - Value string `json:"value,omitempty"` - Comment string `json:"comment,omitempty"` - Position string `json:"position,omitempty"` -} - -// Feature holds information about a feature that can be implemented by -// an Argument. -type Feature struct { - Type string `json:"type"` // Right now this is only gender and plural. - - // TODO: possible values and examples for the language under consideration. - -} - -// Text defines a message to be displayed. -type Text struct { - // Msg and Select contains the message to be displayed. Msg may be used as - // a fallback value if none of the select cases match. - Msg string `json:"msg,omitempty"` - Select *Select `json:"select,omitempty"` - - // Var defines a map of variables that may be substituted in the selected - // message. - Var map[string]Text `json:"var,omitempty"` - - // Example contains an example message formatted with default values. - Example string `json:"example,omitempty"` -} - -// IsEmpty reports whether this Text can generate anything. -func (t *Text) IsEmpty() bool { - return t.Msg == "" && t.Select == nil && t.Var == nil -} - -// rawText erases the UnmarshalJSON method. -type rawText Text - -// UnmarshalJSON implements json.Unmarshaler. -func (t *Text) UnmarshalJSON(b []byte) error { - if b[0] == '"' { - return json.Unmarshal(b, &t.Msg) - } - return json.Unmarshal(b, (*rawText)(t)) -} - -// MarshalJSON implements json.Marshaler. -func (t *Text) MarshalJSON() ([]byte, error) { - if t.Select == nil && t.Var == nil && t.Example == "" { - return json.Marshal(t.Msg) - } - return json.Marshal((*rawText)(t)) -} - -// IDList is a set identifiers that each may refer to possibly different -// versions of the same message. When looking up a messages, the first -// identifier in the list takes precedence. -type IDList []string - -// UnmarshalJSON implements json.Unmarshaler. -func (id *IDList) UnmarshalJSON(b []byte) error { - if b[0] == '"' { - *id = []string{""} - return json.Unmarshal(b, &((*id)[0])) - } - return json.Unmarshal(b, (*[]string)(id)) -} - -// MarshalJSON implements json.Marshaler. -func (id *IDList) MarshalJSON() ([]byte, error) { - if len(*id) == 1 { - return json.Marshal((*id)[0]) - } - return json.Marshal((*[]string)(id)) -} - -// Select selects a Text based on the feature value associated with a feature of -// a certain argument. -type Select struct { - Feature string `json:"feature"` // Name of Feature type (e.g plural) - Arg string `json:"arg"` // The placeholder ID - Cases map[string]Text `json:"cases"` -} - -// TODO: order matters, but can we derive the ordering from the case keys? -// type Case struct { -// Key string `json:"key"` -// Value Text `json:"value"` -// } diff --git a/vendor/golang.org/x/text/message/pipeline/pipeline.go b/vendor/golang.org/x/text/message/pipeline/pipeline.go deleted file mode 100644 index 733a50c5..00000000 --- a/vendor/golang.org/x/text/message/pipeline/pipeline.go +++ /dev/null @@ -1,57 +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 pipeline provides tools for creating translation pipelines. -// -// NOTE: UNDER DEVELOPMENT. API MAY CHANGE. -package pipeline - -import ( - "fmt" - "go/build" - "go/parser" - "log" - - "golang.org/x/tools/go/loader" -) - -const ( - extractFile = "extracted.gotext.json" - outFile = "out.gotext.json" - gotextSuffix = ".gotext.json" -) - -// NOTE: The command line tool already prefixes with "gotext:". -var ( - wrap = func(err error, msg string) error { - return fmt.Errorf("%s: %v", msg, err) - } - wrapf = func(err error, msg string, args ...interface{}) error { - return wrap(err, fmt.Sprintf(msg, args...)) - } - errorf = fmt.Errorf -) - -// TODO: don't log. -func logf(format string, args ...interface{}) { - log.Printf(format, args...) -} - -func loadPackages(conf *loader.Config, args []string) (*loader.Program, error) { - if len(args) == 0 { - args = []string{"."} - } - - conf.Build = &build.Default - conf.ParserMode = parser.ParseComments - - // Use the initial packages from the command line. - args, err := conf.FromArgs(args, false) - if err != nil { - return nil, wrap(err, "loading packages failed") - } - - // Load, parse and type-check the whole program. - return conf.Load() -} diff --git a/vendor/golang.org/x/text/message/pipeline/rewrite.go b/vendor/golang.org/x/text/message/pipeline/rewrite.go deleted file mode 100644 index fa78324e..00000000 --- a/vendor/golang.org/x/text/message/pipeline/rewrite.go +++ /dev/null @@ -1,268 +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 pipeline - -import ( - "bytes" - "fmt" - "go/ast" - "go/constant" - "go/format" - "go/token" - "io" - "os" - "strings" - - "golang.org/x/tools/go/loader" -) - -const printerType = "golang.org/x/text/message.Printer" - -// Rewrite rewrites the Go files in a single package to use the localization -// machinery and rewrites strings to adopt best practices when possible. -// If w is not nil the generated files are written to it, each files with a -// "--- <filename>" header. Otherwise the files are overwritten. -func Rewrite(w io.Writer, goPackage string) error { - conf := &loader.Config{ - AllowErrors: true, // Allow unused instances of message.Printer. - } - prog, err := loadPackages(conf, []string{goPackage}) - if err != nil { - return wrap(err, "") - } - - for _, info := range prog.InitialPackages() { - for _, f := range info.Files { - // Associate comments with nodes. - - // Pick up initialized Printers at the package level. - r := rewriter{info: info, conf: conf} - for _, n := range info.InitOrder { - if t := r.info.Types[n.Rhs].Type.String(); strings.HasSuffix(t, printerType) { - r.printerVar = n.Lhs[0].Name() - } - } - - ast.Walk(&r, f) - - w := w - if w == nil { - var err error - if w, err = os.Create(conf.Fset.File(f.Pos()).Name()); err != nil { - return wrap(err, "open failed") - } - } else { - fmt.Fprintln(w, "---", conf.Fset.File(f.Pos()).Name()) - } - - if err := format.Node(w, conf.Fset, f); err != nil { - return wrap(err, "go format failed") - } - } - } - - return nil -} - -type rewriter struct { - info *loader.PackageInfo - conf *loader.Config - printerVar string -} - -// print returns Go syntax for the specified node. -func (r *rewriter) print(n ast.Node) string { - var buf bytes.Buffer - format.Node(&buf, r.conf.Fset, n) - return buf.String() -} - -func (r *rewriter) Visit(n ast.Node) ast.Visitor { - // Save the state by scope. - if _, ok := n.(*ast.BlockStmt); ok { - r := *r - return &r - } - // Find Printers created by assignment. - stmt, ok := n.(*ast.AssignStmt) - if ok { - for _, v := range stmt.Lhs { - if r.printerVar == r.print(v) { - r.printerVar = "" - } - } - for i, v := range stmt.Rhs { - if t := r.info.Types[v].Type.String(); strings.HasSuffix(t, printerType) { - r.printerVar = r.print(stmt.Lhs[i]) - return r - } - } - } - // Find Printers created by variable declaration. - spec, ok := n.(*ast.ValueSpec) - if ok { - for _, v := range spec.Names { - if r.printerVar == r.print(v) { - r.printerVar = "" - } - } - for i, v := range spec.Values { - if t := r.info.Types[v].Type.String(); strings.HasSuffix(t, printerType) { - r.printerVar = r.print(spec.Names[i]) - return r - } - } - } - if r.printerVar == "" { - return r - } - call, ok := n.(*ast.CallExpr) - if !ok { - return r - } - - // TODO: Handle literal values? - sel, ok := call.Fun.(*ast.SelectorExpr) - if !ok { - return r - } - meth := r.info.Selections[sel] - - source := r.print(sel.X) - fun := r.print(sel.Sel) - if meth != nil { - source = meth.Recv().String() - fun = meth.Obj().Name() - } - - // TODO: remove cheap hack and check if the type either - // implements some interface or is specifically of type - // "golang.org/x/text/message".Printer. - m, ok := rewriteFuncs[source] - if !ok { - return r - } - - rewriteType, ok := m[fun] - if !ok { - return r - } - ident := ast.NewIdent(r.printerVar) - ident.NamePos = sel.X.Pos() - sel.X = ident - if rewriteType.method != "" { - sel.Sel.Name = rewriteType.method - } - - // Analyze arguments. - argn := rewriteType.arg - if rewriteType.format || argn >= len(call.Args) { - return r - } - hasConst := false - for _, a := range call.Args[argn:] { - if v := r.info.Types[a].Value; v != nil && v.Kind() == constant.String { - hasConst = true - break - } - } - if !hasConst { - return r - } - sel.Sel.Name = rewriteType.methodf - - // We are done if there is only a single string that does not need to be - // escaped. - if len(call.Args) == 1 { - s, ok := constStr(r.info, call.Args[0]) - if ok && !strings.Contains(s, "%") && !rewriteType.newLine { - return r - } - } - - // Rewrite arguments as format string. - expr := &ast.BasicLit{ - ValuePos: call.Lparen, - Kind: token.STRING, - } - newArgs := append(call.Args[:argn:argn], expr) - newStr := []string{} - for i, a := range call.Args[argn:] { - if s, ok := constStr(r.info, a); ok { - newStr = append(newStr, strings.Replace(s, "%", "%%", -1)) - } else { - newStr = append(newStr, "%v") - newArgs = append(newArgs, call.Args[argn+i]) - } - } - s := strings.Join(newStr, rewriteType.sep) - if rewriteType.newLine { - s += "\n" - } - expr.Value = fmt.Sprintf("%q", s) - - call.Args = newArgs - - // TODO: consider creating an expression instead of a constant string and - // then wrapping it in an escape function or so: - // call.Args[argn+i] = &ast.CallExpr{ - // Fun: &ast.SelectorExpr{ - // X: ast.NewIdent("message"), - // Sel: ast.NewIdent("Lookup"), - // }, - // Args: []ast.Expr{a}, - // } - // } - - return r -} - -type rewriteType struct { - // method is the name of the equivalent method on a printer, or "" if it is - // the same. - method string - - // methodf is the method to use if the arguments can be rewritten as a - // arguments to a printf-style call. - methodf string - - // format is true if the method takes a formatting string followed by - // substitution arguments. - format bool - - // arg indicates the position of the argument to extract. If all is - // positive, all arguments from this argument onwards needs to be extracted. - arg int - - sep string - newLine bool -} - -// rewriteFuncs list functions that can be directly mapped to the printer -// functions of the message package. -var rewriteFuncs = map[string]map[string]rewriteType{ - // TODO: Printer -> *golang.org/x/text/message.Printer - "fmt": { - "Print": rewriteType{methodf: "Printf"}, - "Sprint": rewriteType{methodf: "Sprintf"}, - "Fprint": rewriteType{methodf: "Fprintf"}, - - "Println": rewriteType{methodf: "Printf", sep: " ", newLine: true}, - "Sprintln": rewriteType{methodf: "Sprintf", sep: " ", newLine: true}, - "Fprintln": rewriteType{methodf: "Fprintf", sep: " ", newLine: true}, - - "Printf": rewriteType{method: "Printf", format: true}, - "Sprintf": rewriteType{method: "Sprintf", format: true}, - "Fprintf": rewriteType{method: "Fprintf", format: true}, - }, -} - -func constStr(info *loader.PackageInfo, e ast.Expr) (s string, ok bool) { - v := info.Types[e].Value - if v == nil || v.Kind() != constant.String { - return "", false - } - return constant.StringVal(v), true -} diff --git a/vendor/golang.org/x/text/message/print.go b/vendor/golang.org/x/text/message/print.go deleted file mode 100644 index 777e1724..00000000 --- a/vendor/golang.org/x/text/message/print.go +++ /dev/null @@ -1,979 +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 message - -import ( - "bytes" - "fmt" // TODO: consider copying interfaces from package fmt to avoid dependency. - "math" - "reflect" - "sync" - "unicode/utf8" - - "golang.org/x/text/internal/format" - "golang.org/x/text/internal/number" - "golang.org/x/text/language" - "golang.org/x/text/message/catalog" -) - -// Strings for use with buffer.WriteString. -// This is less overhead than using buffer.Write with byte arrays. -const ( - commaSpaceString = ", " - nilAngleString = "<nil>" - nilParenString = "(nil)" - nilString = "nil" - mapString = "map[" - percentBangString = "%!" - missingString = "(MISSING)" - badIndexString = "(BADINDEX)" - panicString = "(PANIC=" - extraString = "%!(EXTRA " - badWidthString = "%!(BADWIDTH)" - badPrecString = "%!(BADPREC)" - noVerbString = "%!(NOVERB)" - - invReflectString = "<invalid reflect.Value>" -) - -var printerPool = sync.Pool{ - New: func() interface{} { return new(printer) }, -} - -// newPrinter allocates a new printer struct or grabs a cached one. -func newPrinter(pp *Printer) *printer { - p := printerPool.Get().(*printer) - p.Printer = *pp - // TODO: cache most of the following call. - p.catContext = pp.cat.Context(pp.tag, p) - - p.panicking = false - p.erroring = false - p.fmt.init(&p.Buffer) - return p -} - -// free saves used printer structs in printerFree; avoids an allocation per invocation. -func (p *printer) free() { - p.Buffer.Reset() - p.arg = nil - p.value = reflect.Value{} - printerPool.Put(p) -} - -// printer is used to store a printer's state. -// It implements "golang.org/x/text/internal/format".State. -type printer struct { - Printer - - // the context for looking up message translations - catContext *catalog.Context - - // buffer for accumulating output. - bytes.Buffer - - // arg holds the current item, as an interface{}. - arg interface{} - // value is used instead of arg for reflect values. - value reflect.Value - - // fmt is used to format basic items such as integers or strings. - fmt formatInfo - - // panicking is set by catchPanic to avoid infinite panic, recover, panic, ... recursion. - panicking bool - // erroring is set when printing an error string to guard against calling handleMethods. - erroring bool -} - -// Language implements "golang.org/x/text/internal/format".State. -func (p *printer) Language() language.Tag { return p.tag } - -func (p *printer) Width() (wid int, ok bool) { return p.fmt.Width, p.fmt.WidthPresent } - -func (p *printer) Precision() (prec int, ok bool) { return p.fmt.Prec, p.fmt.PrecPresent } - -func (p *printer) Flag(b int) bool { - switch b { - case '-': - return p.fmt.Minus - case '+': - return p.fmt.Plus || p.fmt.PlusV - case '#': - return p.fmt.Sharp || p.fmt.SharpV - case ' ': - return p.fmt.Space - case '0': - return p.fmt.Zero - } - return false -} - -// getField gets the i'th field of the struct value. -// If the field is itself is an interface, return a value for -// the thing inside the interface, not the interface itself. -func getField(v reflect.Value, i int) reflect.Value { - val := v.Field(i) - if val.Kind() == reflect.Interface && !val.IsNil() { - val = val.Elem() - } - return val -} - -func (p *printer) unknownType(v reflect.Value) { - if !v.IsValid() { - p.WriteString(nilAngleString) - return - } - p.WriteByte('?') - p.WriteString(v.Type().String()) - p.WriteByte('?') -} - -func (p *printer) badVerb(verb rune) { - p.erroring = true - p.WriteString(percentBangString) - p.WriteRune(verb) - p.WriteByte('(') - switch { - case p.arg != nil: - p.WriteString(reflect.TypeOf(p.arg).String()) - p.WriteByte('=') - p.printArg(p.arg, 'v') - case p.value.IsValid(): - p.WriteString(p.value.Type().String()) - p.WriteByte('=') - p.printValue(p.value, 'v', 0) - default: - p.WriteString(nilAngleString) - } - p.WriteByte(')') - p.erroring = false -} - -func (p *printer) fmtBool(v bool, verb rune) { - switch verb { - case 't', 'v': - p.fmt.fmt_boolean(v) - default: - p.badVerb(verb) - } -} - -// fmt0x64 formats a uint64 in hexadecimal and prefixes it with 0x or -// not, as requested, by temporarily setting the sharp flag. -func (p *printer) fmt0x64(v uint64, leading0x bool) { - sharp := p.fmt.Sharp - p.fmt.Sharp = leading0x - p.fmt.fmt_integer(v, 16, unsigned, ldigits) - p.fmt.Sharp = sharp -} - -// fmtInteger formats a signed or unsigned integer. -func (p *printer) fmtInteger(v uint64, isSigned bool, verb rune) { - switch verb { - case 'v': - if p.fmt.SharpV && !isSigned { - p.fmt0x64(v, true) - return - } - fallthrough - case 'd': - if p.fmt.Sharp || p.fmt.SharpV { - p.fmt.fmt_integer(v, 10, isSigned, ldigits) - } else { - p.fmtDecimalInt(v, isSigned) - } - case 'b': - p.fmt.fmt_integer(v, 2, isSigned, ldigits) - case 'o': - p.fmt.fmt_integer(v, 8, isSigned, ldigits) - case 'x': - p.fmt.fmt_integer(v, 16, isSigned, ldigits) - case 'X': - p.fmt.fmt_integer(v, 16, isSigned, udigits) - case 'c': - p.fmt.fmt_c(v) - case 'q': - if v <= utf8.MaxRune { - p.fmt.fmt_qc(v) - } else { - p.badVerb(verb) - } - case 'U': - p.fmt.fmt_unicode(v) - default: - p.badVerb(verb) - } -} - -// fmtFloat formats a float. The default precision for each verb -// is specified as last argument in the call to fmt_float. -func (p *printer) fmtFloat(v float64, size int, verb rune) { - switch verb { - case 'b': - p.fmt.fmt_float(v, size, verb, -1) - case 'v': - verb = 'g' - fallthrough - case 'g', 'G': - if p.fmt.Sharp || p.fmt.SharpV { - p.fmt.fmt_float(v, size, verb, -1) - } else { - p.fmtVariableFloat(v, size) - } - case 'e', 'E': - if p.fmt.Sharp || p.fmt.SharpV { - p.fmt.fmt_float(v, size, verb, 6) - } else { - p.fmtScientific(v, size, 6) - } - case 'f', 'F': - if p.fmt.Sharp || p.fmt.SharpV { - p.fmt.fmt_float(v, size, verb, 6) - } else { - p.fmtDecimalFloat(v, size, 6) - } - default: - p.badVerb(verb) - } -} - -func (p *printer) setFlags(f *number.Formatter) { - f.Flags &^= number.ElideSign - if p.fmt.Plus || p.fmt.Space { - f.Flags |= number.AlwaysSign - if !p.fmt.Plus { - f.Flags |= number.ElideSign - } - } else { - f.Flags &^= number.AlwaysSign - } -} - -func (p *printer) updatePadding(f *number.Formatter) { - f.Flags &^= number.PadMask - if p.fmt.Minus { - f.Flags |= number.PadAfterSuffix - } else { - f.Flags |= number.PadBeforePrefix - } - f.PadRune = ' ' - f.FormatWidth = uint16(p.fmt.Width) -} - -func (p *printer) initDecimal(minFrac, maxFrac int) { - f := &p.toDecimal - f.MinIntegerDigits = 1 - f.MaxIntegerDigits = 0 - f.MinFractionDigits = uint8(minFrac) - f.MaxFractionDigits = int16(maxFrac) - p.setFlags(f) - f.PadRune = 0 - if p.fmt.WidthPresent { - if p.fmt.Zero { - wid := p.fmt.Width - // Use significant integers for this. - // TODO: this is not the same as width, but so be it. - if f.MinFractionDigits > 0 { - wid -= 1 + int(f.MinFractionDigits) - } - if p.fmt.Plus || p.fmt.Space { - wid-- - } - if wid > 0 && wid > int(f.MinIntegerDigits) { - f.MinIntegerDigits = uint8(wid) - } - } - p.updatePadding(f) - } -} - -func (p *printer) initScientific(minFrac, maxFrac int) { - f := &p.toScientific - if maxFrac < 0 { - f.SetPrecision(maxFrac) - } else { - f.SetPrecision(maxFrac + 1) - f.MinFractionDigits = uint8(minFrac) - f.MaxFractionDigits = int16(maxFrac) - } - f.MinExponentDigits = 2 - p.setFlags(f) - f.PadRune = 0 - if p.fmt.WidthPresent { - f.Flags &^= number.PadMask - if p.fmt.Zero { - f.PadRune = f.Digit(0) - f.Flags |= number.PadAfterPrefix - } else { - f.PadRune = ' ' - f.Flags |= number.PadBeforePrefix - } - p.updatePadding(f) - } -} - -func (p *printer) fmtDecimalInt(v uint64, isSigned bool) { - var d number.Decimal - - f := &p.toDecimal - if p.fmt.PrecPresent { - p.setFlags(f) - f.MinIntegerDigits = uint8(p.fmt.Prec) - f.MaxIntegerDigits = 0 - f.MinFractionDigits = 0 - f.MaxFractionDigits = 0 - if p.fmt.WidthPresent { - p.updatePadding(f) - } - } else { - p.initDecimal(0, 0) - } - d.ConvertInt(p.toDecimal.RoundingContext, isSigned, v) - - out := p.toDecimal.Format([]byte(nil), &d) - p.Buffer.Write(out) -} - -func (p *printer) fmtDecimalFloat(v float64, size, prec int) { - var d number.Decimal - if p.fmt.PrecPresent { - prec = p.fmt.Prec - } - p.initDecimal(prec, prec) - d.ConvertFloat(p.toDecimal.RoundingContext, v, size) - - out := p.toDecimal.Format([]byte(nil), &d) - p.Buffer.Write(out) -} - -func (p *printer) fmtVariableFloat(v float64, size int) { - prec := -1 - if p.fmt.PrecPresent { - prec = p.fmt.Prec - } - var d number.Decimal - p.initScientific(0, prec) - d.ConvertFloat(p.toScientific.RoundingContext, v, size) - - // Copy logic of 'g' formatting from strconv. It is simplified a bit as - // we don't have to mind having prec > len(d.Digits). - shortest := prec < 0 - ePrec := prec - if shortest { - prec = len(d.Digits) - ePrec = 6 - } else if prec == 0 { - prec = 1 - ePrec = 1 - } - exp := int(d.Exp) - 1 - if exp < -4 || exp >= ePrec { - p.initScientific(0, prec) - - out := p.toScientific.Format([]byte(nil), &d) - p.Buffer.Write(out) - } else { - if prec > int(d.Exp) { - prec = len(d.Digits) - } - if prec -= int(d.Exp); prec < 0 { - prec = 0 - } - p.initDecimal(0, prec) - - out := p.toDecimal.Format([]byte(nil), &d) - p.Buffer.Write(out) - } -} - -func (p *printer) fmtScientific(v float64, size, prec int) { - var d number.Decimal - if p.fmt.PrecPresent { - prec = p.fmt.Prec - } - p.initScientific(prec, prec) - rc := p.toScientific.RoundingContext - d.ConvertFloat(rc, v, size) - - out := p.toScientific.Format([]byte(nil), &d) - p.Buffer.Write(out) - -} - -// fmtComplex formats a complex number v with -// r = real(v) and j = imag(v) as (r+ji) using -// fmtFloat for r and j formatting. -func (p *printer) fmtComplex(v complex128, size int, verb rune) { - // Make sure any unsupported verbs are found before the - // calls to fmtFloat to not generate an incorrect error string. - switch verb { - case 'v', 'b', 'g', 'G', 'f', 'F', 'e', 'E': - p.WriteByte('(') - p.fmtFloat(real(v), size/2, verb) - // Imaginary part always has a sign. - if math.IsNaN(imag(v)) { - // By CLDR's rules, NaNs do not use patterns or signs. As this code - // relies on AlwaysSign working for imaginary parts, we need to - // manually handle NaNs. - f := &p.toScientific - p.setFlags(f) - p.updatePadding(f) - p.setFlags(f) - nan := f.Symbol(number.SymNan) - extra := 0 - if w, ok := p.Width(); ok { - extra = w - utf8.RuneCountInString(nan) - 1 - } - if f.Flags&number.PadAfterNumber == 0 { - for ; extra > 0; extra-- { - p.WriteRune(f.PadRune) - } - } - p.WriteString(f.Symbol(number.SymPlusSign)) - p.WriteString(nan) - for ; extra > 0; extra-- { - p.WriteRune(f.PadRune) - } - p.WriteString("i)") - return - } - oldPlus := p.fmt.Plus - p.fmt.Plus = true - p.fmtFloat(imag(v), size/2, verb) - p.WriteString("i)") // TODO: use symbol? - p.fmt.Plus = oldPlus - default: - p.badVerb(verb) - } -} - -func (p *printer) fmtString(v string, verb rune) { - switch verb { - case 'v': - if p.fmt.SharpV { - p.fmt.fmt_q(v) - } else { - p.fmt.fmt_s(v) - } - case 's': - p.fmt.fmt_s(v) - case 'x': - p.fmt.fmt_sx(v, ldigits) - case 'X': - p.fmt.fmt_sx(v, udigits) - case 'q': - p.fmt.fmt_q(v) - default: - p.badVerb(verb) - } -} - -func (p *printer) fmtBytes(v []byte, verb rune, typeString string) { - switch verb { - case 'v', 'd': - if p.fmt.SharpV { - p.WriteString(typeString) - if v == nil { - p.WriteString(nilParenString) - return - } - p.WriteByte('{') - for i, c := range v { - if i > 0 { - p.WriteString(commaSpaceString) - } - p.fmt0x64(uint64(c), true) - } - p.WriteByte('}') - } else { - p.WriteByte('[') - for i, c := range v { - if i > 0 { - p.WriteByte(' ') - } - p.fmt.fmt_integer(uint64(c), 10, unsigned, ldigits) - } - p.WriteByte(']') - } - case 's': - p.fmt.fmt_s(string(v)) - case 'x': - p.fmt.fmt_bx(v, ldigits) - case 'X': - p.fmt.fmt_bx(v, udigits) - case 'q': - p.fmt.fmt_q(string(v)) - default: - p.printValue(reflect.ValueOf(v), verb, 0) - } -} - -func (p *printer) fmtPointer(value reflect.Value, verb rune) { - var u uintptr - switch value.Kind() { - case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer: - u = value.Pointer() - default: - p.badVerb(verb) - return - } - - switch verb { - case 'v': - if p.fmt.SharpV { - p.WriteByte('(') - p.WriteString(value.Type().String()) - p.WriteString(")(") - if u == 0 { - p.WriteString(nilString) - } else { - p.fmt0x64(uint64(u), true) - } - p.WriteByte(')') - } else { - if u == 0 { - p.fmt.padString(nilAngleString) - } else { - p.fmt0x64(uint64(u), !p.fmt.Sharp) - } - } - case 'p': - p.fmt0x64(uint64(u), !p.fmt.Sharp) - case 'b', 'o', 'd', 'x', 'X': - if verb == 'd' { - p.fmt.Sharp = true // Print as standard go. TODO: does this make sense? - } - p.fmtInteger(uint64(u), unsigned, verb) - default: - p.badVerb(verb) - } -} - -func (p *printer) catchPanic(arg interface{}, verb rune) { - if err := recover(); err != nil { - // If it's a nil pointer, just say "<nil>". The likeliest causes are a - // Stringer that fails to guard against nil or a nil pointer for a - // value receiver, and in either case, "<nil>" is a nice result. - if v := reflect.ValueOf(arg); v.Kind() == reflect.Ptr && v.IsNil() { - p.WriteString(nilAngleString) - return - } - // Otherwise print a concise panic message. Most of the time the panic - // value will print itself nicely. - if p.panicking { - // Nested panics; the recursion in printArg cannot succeed. - panic(err) - } - - oldFlags := p.fmt.Parser - // For this output we want default behavior. - p.fmt.ClearFlags() - - p.WriteString(percentBangString) - p.WriteRune(verb) - p.WriteString(panicString) - p.panicking = true - p.printArg(err, 'v') - p.panicking = false - p.WriteByte(')') - - p.fmt.Parser = oldFlags - } -} - -func (p *printer) handleMethods(verb rune) (handled bool) { - if p.erroring { - return - } - // Is it a Formatter? - if formatter, ok := p.arg.(format.Formatter); ok { - handled = true - defer p.catchPanic(p.arg, verb) - formatter.Format(p, verb) - return - } - if formatter, ok := p.arg.(fmt.Formatter); ok { - handled = true - defer p.catchPanic(p.arg, verb) - formatter.Format(p, verb) - return - } - - // If we're doing Go syntax and the argument knows how to supply it, take care of it now. - if p.fmt.SharpV { - if stringer, ok := p.arg.(fmt.GoStringer); ok { - handled = true - defer p.catchPanic(p.arg, verb) - // Print the result of GoString unadorned. - p.fmt.fmt_s(stringer.GoString()) - return - } - } else { - // If a string is acceptable according to the format, see if - // the value satisfies one of the string-valued interfaces. - // Println etc. set verb to %v, which is "stringable". - switch verb { - case 'v', 's', 'x', 'X', 'q': - // Is it an error or Stringer? - // The duplication in the bodies is necessary: - // setting handled and deferring catchPanic - // must happen before calling the method. - switch v := p.arg.(type) { - case error: - handled = true - defer p.catchPanic(p.arg, verb) - p.fmtString(v.Error(), verb) - return - - case fmt.Stringer: - handled = true - defer p.catchPanic(p.arg, verb) - p.fmtString(v.String(), verb) - return - } - } - } - return false -} - -func (p *printer) printArg(arg interface{}, verb rune) { - p.arg = arg - p.value = reflect.Value{} - - if arg == nil { - switch verb { - case 'T', 'v': - p.fmt.padString(nilAngleString) - default: - p.badVerb(verb) - } - return - } - - // Special processing considerations. - // %T (the value's type) and %p (its address) are special; we always do them first. - switch verb { - case 'T': - p.fmt.fmt_s(reflect.TypeOf(arg).String()) - return - case 'p': - p.fmtPointer(reflect.ValueOf(arg), 'p') - return - } - - // Some types can be done without reflection. - switch f := arg.(type) { - case bool: - p.fmtBool(f, verb) - case float32: - p.fmtFloat(float64(f), 32, verb) - case float64: - p.fmtFloat(f, 64, verb) - case complex64: - p.fmtComplex(complex128(f), 64, verb) - case complex128: - p.fmtComplex(f, 128, verb) - case int: - p.fmtInteger(uint64(f), signed, verb) - case int8: - p.fmtInteger(uint64(f), signed, verb) - case int16: - p.fmtInteger(uint64(f), signed, verb) - case int32: - p.fmtInteger(uint64(f), signed, verb) - case int64: - p.fmtInteger(uint64(f), signed, verb) - case uint: - p.fmtInteger(uint64(f), unsigned, verb) - case uint8: - p.fmtInteger(uint64(f), unsigned, verb) - case uint16: - p.fmtInteger(uint64(f), unsigned, verb) - case uint32: - p.fmtInteger(uint64(f), unsigned, verb) - case uint64: - p.fmtInteger(f, unsigned, verb) - case uintptr: - p.fmtInteger(uint64(f), unsigned, verb) - case string: - p.fmtString(f, verb) - case []byte: - p.fmtBytes(f, verb, "[]byte") - case reflect.Value: - // Handle extractable values with special methods - // since printValue does not handle them at depth 0. - if f.IsValid() && f.CanInterface() { - p.arg = f.Interface() - if p.handleMethods(verb) { - return - } - } - p.printValue(f, verb, 0) - default: - // If the type is not simple, it might have methods. - if !p.handleMethods(verb) { - // Need to use reflection, since the type had no - // interface methods that could be used for formatting. - p.printValue(reflect.ValueOf(f), verb, 0) - } - } -} - -// printValue is similar to printArg but starts with a reflect value, not an interface{} value. -// It does not handle 'p' and 'T' verbs because these should have been already handled by printArg. -func (p *printer) printValue(value reflect.Value, verb rune, depth int) { - // Handle values with special methods if not already handled by printArg (depth == 0). - if depth > 0 && value.IsValid() && value.CanInterface() { - p.arg = value.Interface() - if p.handleMethods(verb) { - return - } - } - p.arg = nil - p.value = value - - switch f := value; value.Kind() { - case reflect.Invalid: - if depth == 0 { - p.WriteString(invReflectString) - } else { - switch verb { - case 'v': - p.WriteString(nilAngleString) - default: - p.badVerb(verb) - } - } - case reflect.Bool: - p.fmtBool(f.Bool(), verb) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - p.fmtInteger(uint64(f.Int()), signed, verb) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - p.fmtInteger(f.Uint(), unsigned, verb) - case reflect.Float32: - p.fmtFloat(f.Float(), 32, verb) - case reflect.Float64: - p.fmtFloat(f.Float(), 64, verb) - case reflect.Complex64: - p.fmtComplex(f.Complex(), 64, verb) - case reflect.Complex128: - p.fmtComplex(f.Complex(), 128, verb) - case reflect.String: - p.fmtString(f.String(), verb) - case reflect.Map: - if p.fmt.SharpV { - p.WriteString(f.Type().String()) - if f.IsNil() { - p.WriteString(nilParenString) - return - } - p.WriteByte('{') - } else { - p.WriteString(mapString) - } - keys := f.MapKeys() - for i, key := range keys { - if i > 0 { - if p.fmt.SharpV { - p.WriteString(commaSpaceString) - } else { - p.WriteByte(' ') - } - } - p.printValue(key, verb, depth+1) - p.WriteByte(':') - p.printValue(f.MapIndex(key), verb, depth+1) - } - if p.fmt.SharpV { - p.WriteByte('}') - } else { - p.WriteByte(']') - } - case reflect.Struct: - if p.fmt.SharpV { - p.WriteString(f.Type().String()) - } - p.WriteByte('{') - for i := 0; i < f.NumField(); i++ { - if i > 0 { - if p.fmt.SharpV { - p.WriteString(commaSpaceString) - } else { - p.WriteByte(' ') - } - } - if p.fmt.PlusV || p.fmt.SharpV { - if name := f.Type().Field(i).Name; name != "" { - p.WriteString(name) - p.WriteByte(':') - } - } - p.printValue(getField(f, i), verb, depth+1) - } - p.WriteByte('}') - case reflect.Interface: - value := f.Elem() - if !value.IsValid() { - if p.fmt.SharpV { - p.WriteString(f.Type().String()) - p.WriteString(nilParenString) - } else { - p.WriteString(nilAngleString) - } - } else { - p.printValue(value, verb, depth+1) - } - case reflect.Array, reflect.Slice: - switch verb { - case 's', 'q', 'x', 'X': - // Handle byte and uint8 slices and arrays special for the above verbs. - t := f.Type() - if t.Elem().Kind() == reflect.Uint8 { - var bytes []byte - if f.Kind() == reflect.Slice { - bytes = f.Bytes() - } else if f.CanAddr() { - bytes = f.Slice(0, f.Len()).Bytes() - } else { - // We have an array, but we cannot Slice() a non-addressable array, - // so we build a slice by hand. This is a rare case but it would be nice - // if reflection could help a little more. - bytes = make([]byte, f.Len()) - for i := range bytes { - bytes[i] = byte(f.Index(i).Uint()) - } - } - p.fmtBytes(bytes, verb, t.String()) - return - } - } - if p.fmt.SharpV { - p.WriteString(f.Type().String()) - if f.Kind() == reflect.Slice && f.IsNil() { - p.WriteString(nilParenString) - return - } - p.WriteByte('{') - for i := 0; i < f.Len(); i++ { - if i > 0 { - p.WriteString(commaSpaceString) - } - p.printValue(f.Index(i), verb, depth+1) - } - p.WriteByte('}') - } else { - p.WriteByte('[') - for i := 0; i < f.Len(); i++ { - if i > 0 { - p.WriteByte(' ') - } - p.printValue(f.Index(i), verb, depth+1) - } - p.WriteByte(']') - } - case reflect.Ptr: - // pointer to array or slice or struct? ok at top level - // but not embedded (avoid loops) - if depth == 0 && f.Pointer() != 0 { - switch a := f.Elem(); a.Kind() { - case reflect.Array, reflect.Slice, reflect.Struct, reflect.Map: - p.WriteByte('&') - p.printValue(a, verb, depth+1) - return - } - } - fallthrough - case reflect.Chan, reflect.Func, reflect.UnsafePointer: - p.fmtPointer(f, verb) - default: - p.unknownType(f) - } -} - -func (p *printer) badArgNum(verb rune) { - p.WriteString(percentBangString) - p.WriteRune(verb) - p.WriteString(badIndexString) -} - -func (p *printer) missingArg(verb rune) { - p.WriteString(percentBangString) - p.WriteRune(verb) - p.WriteString(missingString) -} - -func (p *printer) doPrintf(fmt string) { - for p.fmt.Parser.SetFormat(fmt); p.fmt.Scan(); { - switch p.fmt.Status { - case format.StatusText: - p.WriteString(p.fmt.Text()) - case format.StatusSubstitution: - p.printArg(p.Arg(p.fmt.ArgNum), p.fmt.Verb) - case format.StatusBadWidthSubstitution: - p.WriteString(badWidthString) - p.printArg(p.Arg(p.fmt.ArgNum), p.fmt.Verb) - case format.StatusBadPrecSubstitution: - p.WriteString(badPrecString) - p.printArg(p.Arg(p.fmt.ArgNum), p.fmt.Verb) - case format.StatusNoVerb: - p.WriteString(noVerbString) - case format.StatusBadArgNum: - p.badArgNum(p.fmt.Verb) - case format.StatusMissingArg: - p.missingArg(p.fmt.Verb) - default: - panic("unreachable") - } - } - - // Check for extra arguments, but only if there was at least one ordered - // argument. Note that this behavior is necessarily different from fmt: - // different variants of messages may opt to drop some or all of the - // arguments. - if !p.fmt.Reordered && p.fmt.ArgNum < len(p.fmt.Args) && p.fmt.ArgNum != 0 { - p.fmt.ClearFlags() - p.WriteString(extraString) - for i, arg := range p.fmt.Args[p.fmt.ArgNum:] { - if i > 0 { - p.WriteString(commaSpaceString) - } - if arg == nil { - p.WriteString(nilAngleString) - } else { - p.WriteString(reflect.TypeOf(arg).String()) - p.WriteString("=") - p.printArg(arg, 'v') - } - } - p.WriteByte(')') - } -} - -func (p *printer) doPrint(a []interface{}) { - prevString := false - for argNum, arg := range a { - isString := arg != nil && reflect.TypeOf(arg).Kind() == reflect.String - // Add a space between two non-string arguments. - if argNum > 0 && !isString && !prevString { - p.WriteByte(' ') - } - p.printArg(arg, 'v') - prevString = isString - } -} - -// doPrintln is like doPrint but always adds a space between arguments -// and a newline after the last argument. -func (p *printer) doPrintln(a []interface{}) { - for argNum, arg := range a { - if argNum > 0 { - p.WriteByte(' ') - } - p.printArg(arg, 'v') - } - p.WriteByte('\n') -} diff --git a/vendor/golang.org/x/text/number/doc.go b/vendor/golang.org/x/text/number/doc.go deleted file mode 100644 index 2ad8d431..00000000 --- a/vendor/golang.org/x/text/number/doc.go +++ /dev/null @@ -1,28 +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 formats numbers according to the customs of different locales. -// -// The number formats of this package allow for greater formatting flexibility -// than passing values to message.Printf calls as is. It currently supports the -// builtin Go types and anything that implements the Convert interface -// (currently internal). -// -// p := message.NewPrinter(language.English) -// -// p.Printf("%v bottles of beer on the wall.", number.Decimal(1234)) -// // Prints: 1,234 bottles of beer on the wall. -// -// p.Printf("%v of gophers lose too much fur", number.Percent(0.12)) -// // Prints: 12% of gophers lose too much fur. -// -// p := message.NewPrinter(language.Dutch) -// -// p.Printf("There are %v bikes per household.", number.Decimal(1.2)) -// // Prints: Er zijn 1,2 fietsen per huishouden. -// -// -// The width and scale specified in the formatting directives override the -// configuration of the formatter. -package number diff --git a/vendor/golang.org/x/text/number/examples_test.go b/vendor/golang.org/x/text/number/examples_test.go deleted file mode 100644 index fb9bcc96..00000000 --- a/vendor/golang.org/x/text/number/examples_test.go +++ /dev/null @@ -1,28 +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_test - -import ( - "golang.org/x/text/language" - "golang.org/x/text/message" - "golang.org/x/text/number" -) - -func ExampleMaxIntegerDigits() { - const year = 1999 - p := message.NewPrinter(language.English) - p.Println("Year:", number.Decimal(year, number.MaxIntegerDigits(2))) - - // Output: - // Year: 99 -} - -func ExampleIncrementString() { - p := message.NewPrinter(language.English) - - p.Println(number.Decimal(1.33, number.IncrementString("0.50"))) - - // Output: 1.50 -} diff --git a/vendor/golang.org/x/text/number/format.go b/vendor/golang.org/x/text/number/format.go deleted file mode 100644 index 1c3d41be..00000000 --- a/vendor/golang.org/x/text/number/format.go +++ /dev/null @@ -1,122 +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 ( - "fmt" - "strings" - - "golang.org/x/text/feature/plural" - "golang.org/x/text/internal/format" - "golang.org/x/text/internal/number" - "golang.org/x/text/language" -) - -// A FormatFunc formates a number. -type FormatFunc func(x interface{}, opts ...Option) Formatter - -// NewFormat creates a FormatFunc based on another FormatFunc and new options. -// Use NewFormat to cash the creation of formatters. -func NewFormat(format FormatFunc, opts ...Option) FormatFunc { - o := *format(nil).options - n := len(o.options) - o.options = append(o.options[:n:n], opts...) - return func(x interface{}, opts ...Option) Formatter { - return newFormatter(&o, opts, x) - } -} - -type options struct { - verbs string - initFunc initFunc - options []Option - pluralFunc func(t language.Tag, scale int) (f plural.Form, n int) -} - -type optionFlag uint16 - -const ( - hasScale optionFlag = 1 << iota - hasPrecision - noSeparator - exact -) - -type initFunc func(f *number.Formatter, t language.Tag) - -func newFormatter(o *options, opts []Option, value interface{}) Formatter { - if len(opts) > 0 { - n := *o - n.options = opts - o = &n - } - return Formatter{o, value} -} - -func newOptions(verbs string, f initFunc) *options { - return &options{verbs: verbs, initFunc: f} -} - -type Formatter struct { - *options - value interface{} -} - -// Format implements format.Formatter. It is for internal use only for now. -func (f Formatter) Format(state format.State, verb rune) { - // TODO: consider implementing fmt.Formatter instead and using the following - // piece of code. This allows numbers to be rendered mostly as expected - // when using fmt. But it may get weird with the spellout options and we - // may need more of format.State over time. - // lang := language.Und - // if s, ok := state.(format.State); ok { - // lang = s.Language() - // } - - lang := state.Language() - if !strings.Contains(f.verbs, string(verb)) { - fmt.Fprintf(state, "%%!%s(%T=%v)", string(verb), f.value, f.value) - return - } - var p number.Formatter - f.initFunc(&p, lang) - for _, o := range f.options.options { - o(lang, &p) - } - if w, ok := state.Width(); ok { - p.FormatWidth = uint16(w) - } - if prec, ok := state.Precision(); ok { - switch verb { - case 'd': - p.SetScale(0) - case 'f': - p.SetScale(prec) - case 'e': - p.SetPrecision(prec + 1) - case 'g': - p.SetPrecision(prec) - } - } - var d number.Decimal - d.Convert(p.RoundingContext, f.value) - state.Write(p.Format(nil, &d)) -} - -// Digits returns information about which logical digits will be presented to -// the user. This information is relevant, for instance, to determine plural -// forms. -func (f Formatter) Digits(buf []byte, tag language.Tag, scale int) number.Digits { - var p number.Formatter - f.initFunc(&p, tag) - if scale >= 0 { - // TODO: this only works well for decimal numbers, which is generally - // fine. - p.SetScale(scale) - } - var d number.Decimal - d.Convert(p.RoundingContext, f.value) - return number.FormatDigits(&d, p.RoundingContext) -} diff --git a/vendor/golang.org/x/text/number/format_test.go b/vendor/golang.org/x/text/number/format_test.go deleted file mode 100644 index 0205f8d0..00000000 --- a/vendor/golang.org/x/text/number/format_test.go +++ /dev/null @@ -1,112 +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 ( - "fmt" - "testing" - - "golang.org/x/text/feature/plural" - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -func TestWrongVerb(t *testing.T) { - testCases := []struct { - f Formatter - fmt string - want string - }{{ - f: Decimal(12), - fmt: "%e", - want: "%!e(int=12)", - }, { - f: Scientific(12), - fmt: "%f", - want: "%!f(int=12)", - }, { - f: Engineering(12), - fmt: "%f", - want: "%!f(int=12)", - }, { - f: Percent(12), - fmt: "%e", - want: "%!e(int=12)", - }} - for _, tc := range testCases { - t.Run("", func(t *testing.T) { - tag := language.Und - got := message.NewPrinter(tag).Sprintf(tc.fmt, tc.f) - if got != tc.want { - t.Errorf("got %q; want %q", got, tc.want) - } - }) - } -} - -func TestDigits(t *testing.T) { - testCases := []struct { - f Formatter - scale int - want string - }{{ - f: Decimal(3), - scale: 0, - want: "digits:[3] exp:1 comma:0 end:1", - }, { - f: Decimal(3.1), - scale: 0, - want: "digits:[3] exp:1 comma:0 end:1", - }, { - f: Scientific(3.1), - scale: 0, - want: "digits:[3] exp:1 comma:1 end:1", - }, { - f: Scientific(3.1), - scale: 3, - want: "digits:[3 1] exp:1 comma:1 end:4", - }} - for _, tc := range testCases { - t.Run("", func(t *testing.T) { - d := tc.f.Digits(nil, language.Croatian, tc.scale) - got := fmt.Sprintf("digits:%d exp:%d comma:%d end:%d", d.Digits, d.Exp, d.Comma, d.End) - if got != tc.want { - t.Errorf("got %v; want %v", got, tc.want) - } - }) - } -} - -func TestPluralIntegration(t *testing.T) { - testCases := []struct { - f Formatter - want string - }{{ - f: Decimal(1), - want: "one: 1", - }, { - f: Decimal(5), - want: "other: 5", - }} - for _, tc := range testCases { - t.Run("", func(t *testing.T) { - message.Set(language.English, "num %f", plural.Selectf(1, "%f", - "one", "one: %f", - "other", "other: %f")) - - p := message.NewPrinter(language.English) - - // Indirect the call to p.Sprintf through the variable f - // to avoid Go tip failing a vet check. - // TODO: remove once vet check has been fixed. See Issue #22936. - f := p.Sprintf - got := f("num %f", tc.f) - - if got != tc.want { - t.Errorf("got %q; want %q", got, tc.want) - } - }) - } -} diff --git a/vendor/golang.org/x/text/number/number.go b/vendor/golang.org/x/text/number/number.go deleted file mode 100644 index f5ca93b1..00000000 --- a/vendor/golang.org/x/text/number/number.go +++ /dev/null @@ -1,77 +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 - -// TODO: -// p.Printf("The gauge was at %v.", number.Spell(number.Percent(23))) -// // Prints: The gauge was at twenty-three percent. -// -// p.Printf("From here to %v!", number.Spell(math.Inf())) -// // Prints: From here to infinity! -// - -import ( - "golang.org/x/text/internal/number" -) - -const ( - decimalVerbs = "vfgd" - scientificVerbs = "veg" -) - -// Decimal formats a number as a floating point decimal. -func Decimal(x interface{}, opts ...Option) Formatter { - return newFormatter(decimalOptions, opts, x) -} - -var decimalOptions = newOptions(decimalVerbs, (*number.Formatter).InitDecimal) - -// Scientific formats a number in scientific format. -func Scientific(x interface{}, opts ...Option) Formatter { - return newFormatter(scientificOptions, opts, x) -} - -var scientificOptions = newOptions(scientificVerbs, (*number.Formatter).InitScientific) - -// Engineering formats a number using engineering notation, which is like -// scientific notation, but with the exponent normalized to multiples of 3. -func Engineering(x interface{}, opts ...Option) Formatter { - return newFormatter(engineeringOptions, opts, x) -} - -var engineeringOptions = newOptions(scientificVerbs, (*number.Formatter).InitEngineering) - -// Percent formats a number as a percentage. A value of 1.0 means 100%. -func Percent(x interface{}, opts ...Option) Formatter { - return newFormatter(percentOptions, opts, x) -} - -var percentOptions = newOptions(decimalVerbs, (*number.Formatter).InitPercent) - -// PerMille formats a number as a per mille indication. A value of 1.0 means -// 1000‰. -func PerMille(x interface{}, opts ...Option) Formatter { - return newFormatter(perMilleOptions, opts, x) -} - -var perMilleOptions = newOptions(decimalVerbs, (*number.Formatter).InitPerMille) - -// TODO: -// - Shortest: akin to verb 'g' of 'G' -// -// TODO: RBNF forms: -// - Compact: 1M 3.5T -// - CompactBinary: 1Mi 3.5Ti -// - Long: 1 million -// - Ordinal: -// - Roman: MCMIIXX -// - RomanSmall: mcmiixx -// - Text: numbers as it typically appears in running text, allowing -// language-specific choices for when to use numbers and when to use words. -// - Spell?: spelled-out number. Maybe just allow as an option? - -// NOTE: both spelled-out numbers and ordinals, to render correctly, need -// detailed linguistic information from the translated string into which they -// are substituted. We will need to implement that first. diff --git a/vendor/golang.org/x/text/number/number_test.go b/vendor/golang.org/x/text/number/number_test.go deleted file mode 100644 index 3dcac364..00000000 --- a/vendor/golang.org/x/text/number/number_test.go +++ /dev/null @@ -1,190 +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 ( - "strings" - "testing" - - "golang.org/x/text/language" - "golang.org/x/text/message" -) - -func TestFormatter(t *testing.T) { - overrides := map[string]string{ - "en": "*e#######0", - "nl": "*n#######0", - } - testCases := []struct { - desc string - tag string - f Formatter - want string - }{{ - desc: "decimal", - f: Decimal(3), - want: "3", - }, { - desc: "decimal fraction", - f: Decimal(0.123), - want: "0.123", - }, { - desc: "separators", - f: Decimal(1234.567), - want: "1,234.567", - }, { - desc: "no separators", - f: Decimal(1234.567, NoSeparator()), - want: "1234.567", - }, { - desc: "max integer", - f: Decimal(1973, MaxIntegerDigits(2)), - want: "73", - }, { - desc: "max integer overflow", - f: Decimal(1973, MaxIntegerDigits(1000)), - want: "1,973", - }, { - desc: "min integer", - f: Decimal(12, MinIntegerDigits(5)), - want: "00,012", - }, { - desc: "max fraction zero", - f: Decimal(0.12345, MaxFractionDigits(0)), - want: "0", - }, { - desc: "max fraction 2", - f: Decimal(0.12, MaxFractionDigits(2)), - want: "0.12", - }, { - desc: "min fraction 2", - f: Decimal(0.12, MaxFractionDigits(2)), - want: "0.12", - }, { - desc: "max fraction overflow", - f: Decimal(0.125, MaxFractionDigits(1e6)), - want: "0.125", - }, { - desc: "min integer overflow", - f: Decimal(0, MinIntegerDigits(1e6)), - want: strings.Repeat("000,", 255/3-1) + "000", - }, { - desc: "min fraction overflow", - f: Decimal(0, MinFractionDigits(1e6)), - want: "0." + strings.Repeat("0", 255), // TODO: fraction separators - }, { - desc: "format width", - f: Decimal(123, FormatWidth(10)), - want: " 123", - }, { - desc: "format width pad option before", - f: Decimal(123, Pad('*'), FormatWidth(10)), - want: "*******123", - }, { - desc: "format width pad option after", - f: Decimal(123, FormatWidth(10), Pad('*')), - want: "*******123", - }, { - desc: "format width illegal", - f: Decimal(123, FormatWidth(-1)), - want: "123", - }, { - desc: "increment", - f: Decimal(10.33, IncrementString("0.5")), - want: "10.5", - }, { - desc: "increment", - f: Decimal(10, IncrementString("ppp")), - want: "10", - }, { - desc: "increment and scale", - f: Decimal(10.33, IncrementString("0.5"), Scale(2)), - want: "10.50", - }, { - desc: "pattern overrides en", - tag: "en", - f: Decimal(101, PatternOverrides(overrides)), - want: "eeeee101", - }, { - desc: "pattern overrides nl", - tag: "nl", - f: Decimal(101, PatternOverrides(overrides)), - want: "nnnnn101", - }, { - desc: "pattern overrides de", - tag: "de", - f: Decimal(101, PatternOverrides(overrides)), - want: "101", - }, { - desc: "language selection", - tag: "bn", - f: Decimal(123456.78, Scale(2)), - want: "১,২৩,৪৫৬.৭৮", - }, { - desc: "scale", - f: Decimal(1234.567, Scale(2)), - want: "1,234.57", - }, { - desc: "scientific", - f: Scientific(3.00), - want: "3\u202f×\u202f10⁰", - }, { - desc: "scientific", - f: Scientific(1234), - want: "1.234\u202f×\u202f10³", - }, { - desc: "scientific", - f: Scientific(1234, Scale(2)), - want: "1.23\u202f×\u202f10³", - }, { - desc: "engineering", - f: Engineering(12345), - want: "12.345\u202f×\u202f10³", - }, { - desc: "engineering scale", - f: Engineering(12345, Scale(2)), - want: "12.34\u202f×\u202f10³", - }, { - desc: "engineering precision(4)", - f: Engineering(12345, Precision(4)), - want: "12.34\u202f×\u202f10³", - }, { - desc: "engineering precision(2)", - f: Engineering(1234.5, Precision(2)), - want: "1.2\u202f×\u202f10³", - }, { - desc: "percent", - f: Percent(0.12), - want: "12%", - }, { - desc: "permille", - f: PerMille(0.123), - want: "123‰", - }, { - desc: "percent rounding", - f: PerMille(0.12345), - want: "123‰", - }, { - desc: "percent fraction", - f: PerMille(0.12345, Scale(2)), - want: "123.45‰", - }, { - desc: "percent fraction", - f: PerMille(0.12344, Scale(1)), - want: "123.4‰", - }} - for _, tc := range testCases { - t.Run(tc.desc, func(t *testing.T) { - tag := language.Und - if tc.tag != "" { - tag = language.MustParse(tc.tag) - } - got := message.NewPrinter(tag).Sprint(tc.f) - if got != tc.want { - t.Errorf("got %q; want %q", got, tc.want) - } - }) - } -} diff --git a/vendor/golang.org/x/text/number/option.go b/vendor/golang.org/x/text/number/option.go deleted file mode 100644 index de96f8ea..00000000 --- a/vendor/golang.org/x/text/number/option.go +++ /dev/null @@ -1,177 +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 ( - "fmt" - - "golang.org/x/text/internal/number" - "golang.org/x/text/language" -) - -// An Option configures a Formatter. -type Option option - -type option func(tag language.Tag, f *number.Formatter) - -// TODO: SpellOut requires support of the ICU RBNF format. -// func SpellOut() Option - -// NoSeparator causes a number to be displayed without grouping separators. -func NoSeparator() Option { - return func(t language.Tag, f *number.Formatter) { - f.GroupingSize = [2]uint8{} - } -} - -// MaxIntegerDigits limits the number of integer digits, eliminating the -// most significant digits. -func MaxIntegerDigits(max int) Option { - return func(t language.Tag, f *number.Formatter) { - if max >= 1<<8 { - max = (1 << 8) - 1 - } - f.MaxIntegerDigits = uint8(max) - } -} - -// MinIntegerDigits specifies the minimum number of integer digits, adding -// leading zeros when needed. -func MinIntegerDigits(min int) Option { - return func(t language.Tag, f *number.Formatter) { - if min >= 1<<8 { - min = (1 << 8) - 1 - } - f.MinIntegerDigits = uint8(min) - } -} - -// MaxFractionDigits specifies the maximum number of fractional digits. -func MaxFractionDigits(max int) Option { - return func(t language.Tag, f *number.Formatter) { - if max >= 1<<15 { - max = (1 << 15) - 1 - } - f.MaxFractionDigits = int16(max) - } -} - -// MinFractionDigits specifies the minimum number of fractional digits. -func MinFractionDigits(min int) Option { - return func(t language.Tag, f *number.Formatter) { - if min >= 1<<8 { - min = (1 << 8) - 1 - } - f.MinFractionDigits = uint8(min) - } -} - -// Precision sets the maximum number of significant digits. A negative value -// means exact. -func Precision(prec int) Option { - return func(t language.Tag, f *number.Formatter) { - f.SetPrecision(prec) - } -} - -// Scale simultaneously sets MinFractionDigits and MaxFractionDigits to the -// given value. -func Scale(decimals int) Option { - return func(t language.Tag, f *number.Formatter) { - f.SetScale(decimals) - } -} - -// IncrementString sets the incremental value to which numbers should be -// rounded. For instance: Increment("0.05") will cause 1.44 to round to 1.45. -// IncrementString also sets scale to the scale of the increment. -func IncrementString(decimal string) Option { - increment := 0 - scale := 0 - d := decimal - p := 0 - for ; p < len(d) && '0' <= d[p] && d[p] <= '9'; p++ { - increment *= 10 - increment += int(d[p]) - '0' - } - if p < len(d) && d[p] == '.' { - for p++; p < len(d) && '0' <= d[p] && d[p] <= '9'; p++ { - increment *= 10 - increment += int(d[p]) - '0' - scale++ - } - } - if p < len(d) { - increment = 0 - scale = 0 - } - return func(t language.Tag, f *number.Formatter) { - f.Increment = uint32(increment) - f.IncrementScale = uint8(scale) - f.SetScale(scale) - } -} - -func noop(language.Tag, *number.Formatter) {} - -// PatternOverrides allows users to specify alternative patterns for specific -// languages. The Pattern will be overridden for all languages in a subgroup as -// well. The function will panic for invalid input. It is best to create this -// option at startup time. -// PatternOverrides must be the first Option passed to a formatter. -func PatternOverrides(patterns map[string]string) Option { - // TODO: make it so that it does not have to be the first option. - // TODO: use -x-nochild to indicate it does not override child tags. - m := map[language.Tag]*number.Pattern{} - for k, v := range patterns { - tag := language.MustParse(k) - p, err := number.ParsePattern(v) - if err != nil { - panic(fmt.Errorf("number: PatternOverrides: %v", err)) - } - m[tag] = p - } - return func(t language.Tag, f *number.Formatter) { - // TODO: Use language grouping relation instead of parent relation. - // TODO: Should parent implement the grouping relation? - for lang := t; ; lang = t.Parent() { - if p, ok := m[lang]; ok { - f.Pattern = *p - break - } - if lang == language.Und { - break - } - } - } -} - -// FormatWidth sets the total format width. -func FormatWidth(n int) Option { - if n <= 0 { - return noop - } - return func(t language.Tag, f *number.Formatter) { - f.FormatWidth = uint16(n) - if f.PadRune == 0 { - f.PadRune = ' ' - } - } -} - -// Pad sets the rune to be used for filling up to the format width. -func Pad(r rune) Option { - return func(t language.Tag, f *number.Formatter) { - f.PadRune = r - } -} - -// TODO: -// - FormatPosition (using type aliasing?) -// - Multiplier: find a better way to represent and figure out what to do -// with clashes with percent/permille. -// - NumberingSystem(nu string): not accessable in number.Info now. Also, should -// this be keyed by language or generic? -// - SymbolOverrides(symbols map[string]map[number.SymbolType]string) Option diff --git a/vendor/golang.org/x/text/runes/cond_test.go b/vendor/golang.org/x/text/runes/cond_test.go deleted file mode 100644 index 44cd36d0..00000000 --- a/vendor/golang.org/x/text/runes/cond_test.go +++ /dev/null @@ -1,282 +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 runes - -import ( - "strings" - "testing" - "unicode" - - "golang.org/x/text/cases" - "golang.org/x/text/language" - "golang.org/x/text/transform" -) - -var ( - toUpper = cases.Upper(language.Und) - toLower = cases.Lower(language.Und) -) - -type spanformer interface { - transform.SpanningTransformer -} - -func TestPredicate(t *testing.T) { - testConditional(t, func(rt *unicode.RangeTable, t, f spanformer) spanformer { - return If(Predicate(func(r rune) bool { - return unicode.Is(rt, r) - }), t, f) - }) -} - -func TestIn(t *testing.T) { - testConditional(t, func(rt *unicode.RangeTable, t, f spanformer) spanformer { - return If(In(rt), t, f) - }) -} - -func TestNotIn(t *testing.T) { - testConditional(t, func(rt *unicode.RangeTable, t, f spanformer) spanformer { - return If(NotIn(rt), f, t) - }) -} - -func testConditional(t *testing.T, f func(rt *unicode.RangeTable, t, f spanformer) spanformer) { - lower := f(unicode.Latin, toLower, toLower) - - for i, tt := range []transformTest{{ - desc: "empty", - szDst: large, - atEOF: true, - in: "", - out: "", - outFull: "", - t: lower, - }, { - desc: "small", - szDst: 1, - atEOF: true, - in: "B", - out: "b", - outFull: "b", - errSpan: transform.ErrEndOfSpan, - t: lower, - }, { - desc: "short dst", - szDst: 2, - atEOF: true, - in: "AAA", - out: "aa", - outFull: "aaa", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: lower, - }, { - desc: "short dst writing error", - szDst: 1, - atEOF: false, - in: "A\x80", - out: "a", - outFull: "a\x80", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: lower, - }, { - desc: "short dst writing incomplete rune", - szDst: 2, - atEOF: true, - in: "Σ\xc2", - out: "Σ", - outFull: "Σ\xc2", - err: transform.ErrShortDst, - t: f(unicode.Latin, toLower, nil), - }, { - desc: "short dst, longer", - szDst: 5, - atEOF: true, - in: "Hellø", - out: "Hell", - outFull: "Hellø", - err: transform.ErrShortDst, - // idem is used to test short buffers by forcing processing of full-rune increments. - t: f(unicode.Latin, Map(idem), nil), - }, { - desc: "short dst, longer, writing error", - szDst: 6, - atEOF: false, - in: "\x80Hello\x80", - out: "\x80Hello", - outFull: "\x80Hello\x80", - err: transform.ErrShortDst, - t: f(unicode.Latin, Map(idem), nil), - }, { - desc: "short src", - szDst: 2, - atEOF: false, - in: "A\xc2", - out: "a", - outFull: "a\xc2", - err: transform.ErrShortSrc, - errSpan: transform.ErrEndOfSpan, - t: lower, - }, { - desc: "short src no change", - szDst: 2, - atEOF: false, - in: "a\xc2", - out: "a", - outFull: "a\xc2", - err: transform.ErrShortSrc, - errSpan: transform.ErrShortSrc, - nSpan: 1, - t: lower, - }, { - desc: "invalid input, atEOF", - szDst: large, - atEOF: true, - in: "\x80", - out: "\x80", - outFull: "\x80", - t: lower, - }, { - desc: "invalid input, !atEOF", - szDst: large, - atEOF: false, - in: "\x80", - out: "\x80", - outFull: "\x80", - t: lower, - }, { - desc: "invalid input, incomplete rune atEOF", - szDst: large, - atEOF: true, - in: "\xc2", - out: "\xc2", - outFull: "\xc2", - t: lower, - }, { - desc: "nop", - szDst: large, - atEOF: true, - in: "Hello World!", - out: "Hello World!", - outFull: "Hello World!", - t: f(unicode.Latin, nil, nil), - }, { - desc: "nop in", - szDst: large, - atEOF: true, - in: "THIS IS α ΤΕΣΤ", - out: "this is α ΤΕΣΤ", - outFull: "this is α ΤΕΣΤ", - errSpan: transform.ErrEndOfSpan, - t: f(unicode.Greek, nil, toLower), - }, { - desc: "nop in latin", - szDst: large, - atEOF: true, - in: "THIS IS α ΤΕΣΤ", - out: "THIS IS α τεστ", - outFull: "THIS IS α τεστ", - errSpan: transform.ErrEndOfSpan, - t: f(unicode.Latin, nil, toLower), - }, { - desc: "nop not in", - szDst: large, - atEOF: true, - in: "THIS IS α ΤΕΣΤ", - out: "this is α ΤΕΣΤ", - outFull: "this is α ΤΕΣΤ", - errSpan: transform.ErrEndOfSpan, - t: f(unicode.Latin, toLower, nil), - }, { - desc: "pass atEOF is true when at end", - szDst: large, - atEOF: true, - in: "hello", - out: "HELLO", - outFull: "HELLO", - errSpan: transform.ErrEndOfSpan, - t: f(unicode.Latin, upperAtEOF{}, nil), - }, { - desc: "pass atEOF is true when at end of segment", - szDst: large, - atEOF: true, - in: "hello ", - out: "HELLO ", - outFull: "HELLO ", - errSpan: transform.ErrEndOfSpan, - t: f(unicode.Latin, upperAtEOF{}, nil), - }, { - desc: "don't pass atEOF is true when atEOF is false", - szDst: large, - atEOF: false, - in: "hello", - out: "", - outFull: "HELLO", - err: transform.ErrShortSrc, - errSpan: transform.ErrShortSrc, - t: f(unicode.Latin, upperAtEOF{}, nil), - }, { - desc: "pass atEOF is true when at end, no change", - szDst: large, - atEOF: true, - in: "HELLO", - out: "HELLO", - outFull: "HELLO", - t: f(unicode.Latin, upperAtEOF{}, nil), - }, { - desc: "pass atEOF is true when at end of segment, no change", - szDst: large, - atEOF: true, - in: "HELLO ", - out: "HELLO ", - outFull: "HELLO ", - t: f(unicode.Latin, upperAtEOF{}, nil), - }, { - desc: "large input ASCII", - szDst: 12000, - atEOF: false, - in: strings.Repeat("HELLO", 2000), - out: strings.Repeat("hello", 2000), - outFull: strings.Repeat("hello", 2000), - errSpan: transform.ErrEndOfSpan, - err: nil, - t: lower, - }, { - desc: "large input non-ASCII", - szDst: 12000, - atEOF: false, - in: strings.Repeat("\u3333", 2000), - out: strings.Repeat("\u3333", 2000), - outFull: strings.Repeat("\u3333", 2000), - err: nil, - t: lower, - }} { - tt.check(t, i) - } -} - -// upperAtEOF is a strange Transformer that converts text to uppercase, but only -// if atEOF is true. -type upperAtEOF struct{ transform.NopResetter } - -func (upperAtEOF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if !atEOF { - return 0, 0, transform.ErrShortSrc - } - return toUpper.Transform(dst, src, atEOF) -} - -func (upperAtEOF) Span(src []byte, atEOF bool) (n int, err error) { - if !atEOF { - return 0, transform.ErrShortSrc - } - return toUpper.Span(src, atEOF) -} - -func BenchmarkConditional(b *testing.B) { - doBench(b, If(In(unicode.Hangul), transform.Nop, transform.Nop)) -} diff --git a/vendor/golang.org/x/text/runes/example_test.go b/vendor/golang.org/x/text/runes/example_test.go deleted file mode 100644 index a60bfd9d..00000000 --- a/vendor/golang.org/x/text/runes/example_test.go +++ /dev/null @@ -1,60 +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 runes_test - -import ( - "fmt" - "unicode" - - "golang.org/x/text/runes" - "golang.org/x/text/transform" - "golang.org/x/text/unicode/norm" - "golang.org/x/text/width" -) - -func ExampleRemove() { - t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC) - s, _, _ := transform.String(t, "résumé") - fmt.Println(s) - - // Output: - // resume -} - -func ExampleMap() { - replaceHyphens := runes.Map(func(r rune) rune { - if unicode.Is(unicode.Hyphen, r) { - return '|' - } - return r - }) - s, _, _ := transform.String(replaceHyphens, "a-b‐c⸗d﹣e") - fmt.Println(s) - - // Output: - // a|b|c|d|e -} - -func ExampleIn() { - // Convert Latin characters to their canonical form, while keeping other - // width distinctions. - t := runes.If(runes.In(unicode.Latin), width.Fold, nil) - s, _, _ := transform.String(t, "アルアノリウ tech / アルアノリウ tech") - fmt.Println(s) - - // Output: - // アルアノリウ tech / アルアノリウ tech -} - -func ExampleIf() { - // Widen everything but ASCII. - isASCII := func(r rune) bool { return r <= unicode.MaxASCII } - t := runes.If(runes.Predicate(isASCII), nil, width.Widen) - s, _, _ := transform.String(t, "アルアノリウ tech / 中國 / 5₩") - fmt.Println(s) - - // Output: - // アルアノリウ tech / 中國 / 5₩ -} diff --git a/vendor/golang.org/x/text/runes/runes_test.go b/vendor/golang.org/x/text/runes/runes_test.go deleted file mode 100644 index 23c5bc95..00000000 --- a/vendor/golang.org/x/text/runes/runes_test.go +++ /dev/null @@ -1,664 +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 runes - -import ( - "strings" - "testing" - "unicode/utf8" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/transform" -) - -type transformTest struct { - desc string - szDst int - atEOF bool - repl string - in string - out string // result string of first call to Transform - outFull string // transform of entire input string - err error - errSpan error - nSpan int - - t transform.SpanningTransformer -} - -const large = 10240 - -func (tt *transformTest) check(t *testing.T, i int) { - if tt.t == nil { - return - } - dst := make([]byte, tt.szDst) - src := []byte(tt.in) - nDst, nSrc, err := tt.t.Transform(dst, src, tt.atEOF) - if err != tt.err { - t.Errorf("%d:%s:error: got %v; want %v", i, tt.desc, err, tt.err) - } - if got := string(dst[:nDst]); got != tt.out { - t.Errorf("%d:%s:out: got %q; want %q", i, tt.desc, got, tt.out) - } - - // Calls tt.t.Transform for the remainder of the input. We use this to test - // the nSrc return value. - out := make([]byte, large) - n := copy(out, dst[:nDst]) - nDst, _, _ = tt.t.Transform(out[n:], src[nSrc:], true) - if got, want := string(out[:n+nDst]), tt.outFull; got != want { - t.Errorf("%d:%s:outFull: got %q; want %q", i, tt.desc, got, want) - } - - tt.t.Reset() - p := 0 - for ; p < len(tt.in) && p < len(tt.outFull) && tt.in[p] == tt.outFull[p]; p++ { - } - if tt.nSpan != 0 { - p = tt.nSpan - } - if n, err = tt.t.Span([]byte(tt.in), tt.atEOF); n != p || err != tt.errSpan { - t.Errorf("%d:%s:span: got %d, %v; want %d, %v", i, tt.desc, n, err, p, tt.errSpan) - } -} - -func idem(r rune) rune { return r } - -func TestMap(t *testing.T) { - runes := []rune{'a', 'ç', '中', '\U00012345', 'a'} - // Default mapper used for this test. - rotate := Map(func(r rune) rune { - for i, m := range runes { - if m == r { - return runes[i+1] - } - } - return r - }) - - for i, tt := range []transformTest{{ - desc: "empty", - szDst: large, - atEOF: true, - in: "", - out: "", - outFull: "", - t: rotate, - }, { - desc: "no change", - szDst: 1, - atEOF: true, - in: "b", - out: "b", - outFull: "b", - t: rotate, - }, { - desc: "short dst", - szDst: 2, - atEOF: true, - in: "aaaa", - out: "ç", - outFull: "çççç", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "short dst ascii, no change", - szDst: 2, - atEOF: true, - in: "bbb", - out: "bb", - outFull: "bbb", - err: transform.ErrShortDst, - t: rotate, - }, { - desc: "short dst writing error", - szDst: 2, - atEOF: false, - in: "a\x80", - out: "ç", - outFull: "ç\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "short dst writing incomplete rune", - szDst: 2, - atEOF: true, - in: "a\xc0", - out: "ç", - outFull: "ç\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "short dst, longer", - szDst: 5, - atEOF: true, - in: "Hellø", - out: "Hell", - outFull: "Hellø", - err: transform.ErrShortDst, - t: rotate, - }, { - desc: "short dst, single", - szDst: 1, - atEOF: false, - in: "ø", - out: "", - outFull: "ø", - err: transform.ErrShortDst, - t: Map(idem), - }, { - desc: "short dst, longer, writing error", - szDst: 8, - atEOF: false, - in: "\x80Hello\x80", - out: "\ufffdHello", - outFull: "\ufffdHello\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "short src", - szDst: 2, - atEOF: false, - in: "a\xc2", - out: "ç", - outFull: "ç\ufffd", - err: transform.ErrShortSrc, - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "invalid input, atEOF", - szDst: large, - atEOF: true, - in: "\x80", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "invalid input, !atEOF", - szDst: large, - atEOF: false, - in: "\x80", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "incomplete rune !atEOF", - szDst: large, - atEOF: false, - in: "\xc2", - out: "", - outFull: "\ufffd", - err: transform.ErrShortSrc, - errSpan: transform.ErrShortSrc, - t: rotate, - }, { - desc: "invalid input, incomplete rune atEOF", - szDst: large, - atEOF: true, - in: "\xc2", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "misc correct", - szDst: large, - atEOF: true, - in: "a\U00012345 ç!", - out: "ça 中!", - outFull: "ça 中!", - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "misc correct and invalid", - szDst: large, - atEOF: true, - in: "Hello\x80 w\x80orl\xc0d!\xc0", - out: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", - outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "misc correct and invalid, short src", - szDst: large, - atEOF: false, - in: "Hello\x80 w\x80orl\xc0d!\xc2", - out: "Hello\ufffd w\ufffdorl\ufffdd!", - outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", - err: transform.ErrShortSrc, - errSpan: transform.ErrEndOfSpan, - t: rotate, - }, { - desc: "misc correct and invalid, short src, replacing RuneError", - szDst: large, - atEOF: false, - in: "Hel\ufffdlo\x80 w\x80orl\xc0d!\xc2", - out: "Hel?lo? w?orl?d!", - outFull: "Hel?lo? w?orl?d!?", - errSpan: transform.ErrEndOfSpan, - err: transform.ErrShortSrc, - t: Map(func(r rune) rune { - if r == utf8.RuneError { - return '?' - } - return r - }), - }} { - tt.check(t, i) - } -} - -func TestRemove(t *testing.T) { - remove := Remove(Predicate(func(r rune) bool { - return strings.ContainsRune("aeiou\u0300\uFF24\U00012345", r) - })) - - for i, tt := range []transformTest{ - 0: { - szDst: large, - atEOF: true, - in: "", - out: "", - outFull: "", - t: remove, - }, - 1: { - szDst: 0, - atEOF: true, - in: "aaaa", - out: "", - outFull: "", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 2: { - szDst: 1, - atEOF: true, - in: "aaaa", - out: "", - outFull: "", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 3: { - szDst: 1, - atEOF: true, - in: "baaaa", - out: "b", - outFull: "b", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 4: { - szDst: 2, - atEOF: true, - in: "açaaa", - out: "ç", - outFull: "ç", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 5: { - szDst: 2, - atEOF: true, - in: "aaaç", - out: "ç", - outFull: "ç", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 6: { - szDst: 2, - atEOF: false, - in: "a\x80", - out: "", - outFull: "\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 7: { - szDst: 1, - atEOF: true, - in: "a\xc0", - out: "", - outFull: "\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 8: { - szDst: 1, - atEOF: false, - in: "a\xc2", - out: "", - outFull: "\ufffd", - err: transform.ErrShortSrc, - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 9: { - szDst: large, - atEOF: true, - in: "\x80", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 10: { - szDst: large, - atEOF: false, - in: "\x80", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 11: { - szDst: large, - atEOF: true, - in: "\xc2", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 12: { - szDst: large, - atEOF: false, - in: "\xc2", - out: "", - outFull: "\ufffd", - err: transform.ErrShortSrc, - errSpan: transform.ErrShortSrc, - t: remove, - }, - 13: { - szDst: large, - atEOF: true, - in: "Hello \U00012345world!", - out: "Hll wrld!", - outFull: "Hll wrld!", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 14: { - szDst: large, - atEOF: true, - in: "Hello\x80 w\x80orl\xc0d!\xc0", - out: "Hll\ufffd w\ufffdrl\ufffdd!\ufffd", - outFull: "Hll\ufffd w\ufffdrl\ufffdd!\ufffd", - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 15: { - szDst: large, - atEOF: false, - in: "Hello\x80 w\x80orl\xc0d!\xc2", - out: "Hll\ufffd w\ufffdrl\ufffdd!", - outFull: "Hll\ufffd w\ufffdrl\ufffdd!\ufffd", - err: transform.ErrShortSrc, - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 16: { - szDst: large, - atEOF: false, - in: "Hel\ufffdlo\x80 w\x80orl\xc0d!\xc2", - out: "Hello world!", - outFull: "Hello world!", - err: transform.ErrShortSrc, - errSpan: transform.ErrEndOfSpan, - t: Remove(Predicate(func(r rune) bool { return r == utf8.RuneError })), - }, - 17: { - szDst: 4, - atEOF: true, - in: "Hellø", - out: "Hll", - outFull: "Hllø", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 18: { - szDst: 4, - atEOF: false, - in: "Hellø", - out: "Hll", - outFull: "Hllø", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 19: { - szDst: 8, - atEOF: false, - in: "\x80Hello\uFF24\x80", - out: "\ufffdHll", - outFull: "\ufffdHll\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: remove, - }, - 20: { - szDst: 8, - atEOF: false, - in: "Hllll", - out: "Hllll", - outFull: "Hllll", - t: remove, - }} { - tt.check(t, i) - } -} - -func TestReplaceIllFormed(t *testing.T) { - replace := ReplaceIllFormed() - - for i, tt := range []transformTest{ - 0: { - szDst: large, - atEOF: true, - in: "", - out: "", - outFull: "", - t: replace, - }, - 1: { - szDst: 1, - atEOF: true, - in: "aa", - out: "a", - outFull: "aa", - err: transform.ErrShortDst, - t: replace, - }, - 2: { - szDst: 1, - atEOF: true, - in: "a\x80", - out: "a", - outFull: "a\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: replace, - }, - 3: { - szDst: 1, - atEOF: true, - in: "a\xc2", - out: "a", - outFull: "a\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: replace, - }, - 4: { - szDst: large, - atEOF: true, - in: "\x80", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: replace, - }, - 5: { - szDst: large, - atEOF: false, - in: "\x80", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: replace, - }, - 6: { - szDst: large, - atEOF: true, - in: "\xc2", - out: "\ufffd", - outFull: "\ufffd", - errSpan: transform.ErrEndOfSpan, - t: replace, - }, - 7: { - szDst: large, - atEOF: false, - in: "\xc2", - out: "", - outFull: "\ufffd", - err: transform.ErrShortSrc, - errSpan: transform.ErrShortSrc, - t: replace, - }, - 8: { - szDst: large, - atEOF: true, - in: "Hello world!", - out: "Hello world!", - outFull: "Hello world!", - t: replace, - }, - 9: { - szDst: large, - atEOF: true, - in: "Hello\x80 w\x80orl\xc2d!\xc2", - out: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", - outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", - errSpan: transform.ErrEndOfSpan, - t: replace, - }, - 10: { - szDst: large, - atEOF: false, - in: "Hello\x80 w\x80orl\xc2d!\xc2", - out: "Hello\ufffd w\ufffdorl\ufffdd!", - outFull: "Hello\ufffd w\ufffdorl\ufffdd!\ufffd", - err: transform.ErrShortSrc, - errSpan: transform.ErrEndOfSpan, - t: replace, - }, - 16: { - szDst: 10, - atEOF: false, - in: "\x80Hello\x80", - out: "\ufffdHello", - outFull: "\ufffdHello\ufffd", - err: transform.ErrShortDst, - errSpan: transform.ErrEndOfSpan, - t: replace, - }, - 17: { - szDst: 10, - atEOF: false, - in: "\ufffdHello\ufffd", - out: "\ufffdHello", - outFull: "\ufffdHello\ufffd", - err: transform.ErrShortDst, - t: replace, - }, - } { - tt.check(t, i) - } -} - -func TestMapAlloc(t *testing.T) { - if n := testtext.AllocsPerRun(3, func() { - Map(idem).Transform(nil, nil, false) - }); n > 0 { - t.Errorf("got %f; want 0", n) - } -} - -func rmNop(r rune) bool { return false } - -func TestRemoveAlloc(t *testing.T) { - if n := testtext.AllocsPerRun(3, func() { - Remove(Predicate(rmNop)).Transform(nil, nil, false) - }); n > 0 { - t.Errorf("got %f; want 0", n) - } -} - -func TestReplaceIllFormedAlloc(t *testing.T) { - if n := testtext.AllocsPerRun(3, func() { - ReplaceIllFormed().Transform(nil, nil, false) - }); n > 0 { - t.Errorf("got %f; want 0", n) - } -} - -func doBench(b *testing.B, t Transformer) { - for _, bc := range []struct{ name, data string }{ - {"ascii", testtext.ASCII}, - {"3byte", testtext.ThreeByteUTF8}, - } { - dst := make([]byte, 2*len(bc.data)) - src := []byte(bc.data) - - testtext.Bench(b, bc.name+"/transform", func(b *testing.B) { - b.SetBytes(int64(len(src))) - for i := 0; i < b.N; i++ { - t.Transform(dst, src, true) - } - }) - src = t.Bytes(src) - t.Reset() - testtext.Bench(b, bc.name+"/span", func(b *testing.B) { - b.SetBytes(int64(len(src))) - for i := 0; i < b.N; i++ { - t.Span(src, true) - } - }) - } -} - -func BenchmarkRemove(b *testing.B) { - doBench(b, Remove(Predicate(func(r rune) bool { return r == 'e' }))) -} - -func BenchmarkMapAll(b *testing.B) { - doBench(b, Map(func(r rune) rune { return 'a' })) -} - -func BenchmarkMapNone(b *testing.B) { - doBench(b, Map(func(r rune) rune { return r })) -} - -func BenchmarkReplaceIllFormed(b *testing.B) { - doBench(b, ReplaceIllFormed()) -} - -var ( - input = strings.Repeat("Thé qüick brøwn føx jumps øver the lazy døg. ", 100) -) diff --git a/vendor/golang.org/x/text/search/index.go b/vendor/golang.org/x/text/search/index.go deleted file mode 100644 index 35de8f5f..00000000 --- a/vendor/golang.org/x/text/search/index.go +++ /dev/null @@ -1,35 +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. - -// Note: this file is identical to the file text/collate/index.go. Both files -// will be removed when the new colltab package is finished and in use. - -package search - -import "golang.org/x/text/internal/colltab" - -const blockSize = 64 - -func getTable(t tableIndex) *colltab.Table { - return &colltab.Table{ - Index: colltab.Trie{ - Index0: mainLookup[:][blockSize*t.lookupOffset:], - Values0: mainValues[:][blockSize*t.valuesOffset:], - Index: mainLookup[:], - Values: mainValues[:], - }, - ExpandElem: mainExpandElem[:], - ContractTries: colltab.ContractTrieSet(mainCTEntries[:]), - ContractElem: mainContractElem[:], - MaxContractLen: 18, - VariableTop: varTop, - } -} - -// tableIndex holds information for constructing a table -// for a certain locale based on the main table. -type tableIndex struct { - lookupOffset uint32 - valuesOffset uint32 -} diff --git a/vendor/golang.org/x/text/search/pattern.go b/vendor/golang.org/x/text/search/pattern.go deleted file mode 100644 index 2497cfd2..00000000 --- a/vendor/golang.org/x/text/search/pattern.go +++ /dev/null @@ -1,155 +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 search - -import ( - "golang.org/x/text/internal/colltab" -) - -// TODO: handle variable primary weights? - -func (p *Pattern) deleteEmptyElements() { - k := 0 - for _, e := range p.ce { - if !isIgnorable(p.m, e) { - p.ce[k] = e - k++ - } - } - p.ce = p.ce[:k] -} - -func isIgnorable(m *Matcher, e colltab.Elem) bool { - if e.Primary() > 0 { - return false - } - if e.Secondary() > 0 { - if !m.ignoreDiacritics { - return false - } - // Primary value is 0 and ignoreDiacritics is true. In this case we - // ignore the tertiary element, as it only pertains to the modifier. - return true - } - // TODO: further distinguish once we have the new implementation. - if !(m.ignoreWidth || m.ignoreCase) && e.Tertiary() > 0 { - return false - } - // TODO: we ignore the Quaternary level for now. - return true -} - -// TODO: Use a Boyer-Moore-like algorithm (probably Sunday) for searching. - -func (p *Pattern) forwardSearch(it *colltab.Iter) (start, end int) { - for start := 0; it.Next(); it.Reset(start) { - nextStart := it.End() - if end := p.searchOnce(it); end != -1 { - return start, end - } - start = nextStart - } - return -1, -1 -} - -func (p *Pattern) anchoredForwardSearch(it *colltab.Iter) (start, end int) { - if it.Next() { - if end := p.searchOnce(it); end != -1 { - return 0, end - } - } - return -1, -1 -} - -// next advances to the next weight in a pattern. f must return one of the -// weights of a collation element. next will advance to the first non-zero -// weight and return this weight and true if it exists, or 0, false otherwise. -func (p *Pattern) next(i *int, f func(colltab.Elem) int) (weight int, ok bool) { - for *i < len(p.ce) { - v := f(p.ce[*i]) - *i++ - if v != 0 { - // Skip successive ignorable values. - for ; *i < len(p.ce) && f(p.ce[*i]) == 0; *i++ { - } - return v, true - } - } - return 0, false -} - -// TODO: remove this function once Elem is internal and Tertiary returns int. -func tertiary(e colltab.Elem) int { - return int(e.Tertiary()) -} - -// searchOnce tries to match the pattern s.p at the text position i. s.buf needs -// to be filled with collation elements of the first segment, where n is the -// number of source bytes consumed for this segment. It will return the end -// position of the match or -1. -func (p *Pattern) searchOnce(it *colltab.Iter) (end int) { - var pLevel [4]int - - m := p.m - for { - k := 0 - for ; k < it.N; k++ { - if v := it.Elems[k].Primary(); v > 0 { - if w, ok := p.next(&pLevel[0], colltab.Elem.Primary); !ok || v != w { - return -1 - } - } - - if !m.ignoreDiacritics { - if v := it.Elems[k].Secondary(); v > 0 { - if w, ok := p.next(&pLevel[1], colltab.Elem.Secondary); !ok || v != w { - return -1 - } - } - } else if it.Elems[k].Primary() == 0 { - // We ignore tertiary values of collation elements of the - // secondary level. - continue - } - - // TODO: distinguish between case and width. This will be easier to - // implement after we moved to the new collation implementation. - if !m.ignoreWidth && !m.ignoreCase { - if v := it.Elems[k].Tertiary(); v > 0 { - if w, ok := p.next(&pLevel[2], tertiary); !ok || int(v) != w { - return -1 - } - } - } - // TODO: check quaternary weight - } - it.Discard() // Remove the current segment from the buffer. - - // Check for completion. - switch { - // If any of these cases match, we are not at the end. - case pLevel[0] < len(p.ce): - case !m.ignoreDiacritics && pLevel[1] < len(p.ce): - case !(m.ignoreWidth || m.ignoreCase) && pLevel[2] < len(p.ce): - default: - // At this point, both the segment and pattern has matched fully. - // However, the segment may still be have trailing modifiers. - // This can be verified by another call to next. - end = it.End() - if it.Next() && it.Elems[0].Primary() == 0 { - if !m.ignoreDiacritics { - return -1 - } - end = it.End() - } - return end - } - - // Fill the buffer with the next batch of collation elements. - if !it.Next() { - return -1 - } - } -} diff --git a/vendor/golang.org/x/text/search/pattern_test.go b/vendor/golang.org/x/text/search/pattern_test.go deleted file mode 100644 index 931fa656..00000000 --- a/vendor/golang.org/x/text/search/pattern_test.go +++ /dev/null @@ -1,357 +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 search - -import ( - "reflect" - "strings" - "testing" - - "golang.org/x/text/language" -) - -func TestCompile(t *testing.T) { - for i, tc := range []struct { - desc string - pattern string - options []Option - n int - }{{ - desc: "empty", - pattern: "", - n: 0, - }, { - desc: "single", - pattern: "a", - n: 1, - }, { - desc: "keep modifier", - pattern: "a\u0300", // U+0300: COMBINING GRAVE ACCENT - n: 2, - }, { - desc: "remove modifier", - pattern: "a\u0300", // U+0300: COMBINING GRAVE ACCENT - options: []Option{IgnoreDiacritics}, - n: 1, - }, { - desc: "single with double collation element", - pattern: "ä", - n: 2, - }, { - desc: "leading variable", - pattern: " a", - n: 2, - }, { - desc: "trailing variable", - pattern: "aa ", - n: 3, - }, { - desc: "leading and trailing variable", - pattern: " äb ", - n: 5, - }, { - desc: "keep interior variable", - pattern: " ä b ", - n: 6, - }, { - desc: "keep interior variables", - pattern: " b ä ", - n: 7, - }, { - desc: "remove ignoreables (zero-weights across the board)", - pattern: "\u009Db\u009Dä\u009D", // U+009D: OPERATING SYSTEM COMMAND - n: 3, - }} { - m := New(language.Und, tc.options...) - p := m.CompileString(tc.pattern) - if len(p.ce) != tc.n { - t.Errorf("%d:%s: Compile(%+q): got %d; want %d", i, tc.desc, tc.pattern, len(p.ce), tc.n) - } - } -} - -func TestNorm(t *testing.T) { - // U+0300: COMBINING GRAVE ACCENT (CCC=230) - // U+031B: COMBINING HORN (CCC=216) - for _, tc := range []struct { - desc string - a string - b string - want bool // a and b compile into the same pattern? - }{{ - "simple", - "eee\u0300\u031b", - "eee\u031b\u0300", - true, - }, { - "large number of modifiers in pattern", - strings.Repeat("\u0300", 29) + "\u0318", - "\u0318" + strings.Repeat("\u0300", 29), - true, - }, { - "modifier overflow in pattern", - strings.Repeat("\u0300", 30) + "\u0318", - "\u0318" + strings.Repeat("\u0300", 30), - false, - }} { - m := New(language.Und) - a := m.CompileString(tc.a) - b := m.CompileString(tc.b) - if got := reflect.DeepEqual(a, b); got != tc.want { - t.Errorf("Compile(a) == Compile(b) == %v; want %v", got, tc.want) - } - } -} - -func TestForwardSearch(t *testing.T) { - for i, tc := range []struct { - desc string - tag string - options []Option - pattern string - text string - want []int - }{{ - // The semantics of an empty search is to match nothing. - // TODO: change this to be in line with strings.Index? It is quite a - // different beast, so not sure yet. - - desc: "empty pattern and text", - tag: "und", - pattern: "", - text: "", - want: nil, // TODO: consider: []int{0, 0}, - }, { - desc: "non-empty pattern and empty text", - tag: "und", - pattern: " ", - text: "", - want: nil, - }, { - desc: "empty pattern and non-empty text", - tag: "und", - pattern: "", - text: "abc", - want: nil, // TODO: consider: []int{0, 0, 1, 1, 2, 2, 3, 3}, - }, { - // Variable-only patterns. We don't support variables at the moment, - // but verify that, given this, the behavior is indeed as expected. - - desc: "exact match of variable", - tag: "und", - pattern: " ", - text: " ", - want: []int{0, 1}, - }, { - desc: "variables not handled by default", - tag: "und", - pattern: "- ", - text: " -", - want: nil, // Would be (1, 2) for a median match with variable}. - }, { - desc: "multiple subsequent identical variables", - tag: "und", - pattern: " ", - text: " ", - want: []int{0, 1, 1, 2, 2, 3, 3, 4}, - }, { - desc: "text with variables", - tag: "und", - options: []Option{IgnoreDiacritics}, - pattern: "abc", - text: "3 abc 3", - want: []int{2, 5}, - }, { - desc: "pattern with interior variables", - tag: "und", - options: []Option{IgnoreDiacritics}, - pattern: "a b c", - text: "3 a b c abc a b c 3", - want: []int{2, 7}, // Would have 3 matches using variable. - - // TODO: Different variable handling settings. - }, { - // Options. - - desc: "match all levels", - tag: "und", - pattern: "Abc", - text: "abcAbcABCÁbcábc", - want: []int{3, 6}, - }, { - desc: "ignore diacritics in text", - tag: "und", - options: []Option{IgnoreDiacritics}, - pattern: "Abc", - text: "Ábc", - want: []int{0, 4}, - }, { - desc: "ignore diacritics in pattern", - tag: "und", - options: []Option{IgnoreDiacritics}, - pattern: "Ábc", - text: "Abc", - want: []int{0, 3}, - }, { - desc: "ignore diacritics", - tag: "und", - options: []Option{IgnoreDiacritics}, - pattern: "Abc", - text: "abcAbcABCÁbcábc", - want: []int{3, 6, 9, 13}, - }, { - desc: "ignore case", - tag: "und", - options: []Option{IgnoreCase}, - pattern: "Abc", - text: "abcAbcABCÁbcábc", - want: []int{0, 3, 3, 6, 6, 9}, - }, { - desc: "ignore case and diacritics", - tag: "und", - options: []Option{IgnoreCase, IgnoreDiacritics}, - pattern: "Abc", - text: "abcAbcABCÁbcábc", - want: []int{0, 3, 3, 6, 6, 9, 9, 13, 13, 17}, - }, { - desc: "ignore width to fullwidth", - tag: "und", - options: []Option{IgnoreWidth}, - pattern: "abc", - text: "123 \uFF41\uFF42\uFF43 123", // U+FF41-3: FULLWIDTH LATIN SMALL LETTER A-C - want: []int{4, 13}, - }, { - // TODO: distinguish between case and width. - desc: "don't ignore width to fullwidth, ignoring only case", - tag: "und", - options: []Option{IgnoreCase}, - pattern: "abc", - text: "123 \uFF41\uFF42\uFF43 123", // U+FF41-3: FULLWIDTH LATIN SMALL LETTER A-C - want: []int{4, 13}, - }, { - desc: "ignore width to fullwidth and diacritics", - tag: "und", - options: []Option{IgnoreWidth, IgnoreDiacritics}, - pattern: "abc", - text: "123 \uFF41\uFF42\uFF43 123", // U+FF41-3: FULLWIDTH LATIN SMALL LETTER A-C - want: []int{4, 13}, - }, { - desc: "whole grapheme, single rune", - tag: "und", - pattern: "eee", - text: "123 eeé 123", - want: nil, - }, { - // Note: rules on when to apply contractions may, for certain languages, - // differ between search and collation. For example, "ch" is not - // considered a contraction for the purpose of searching in Spanish. - // Therefore, be careful picking this test. - desc: "whole grapheme, contractions", - tag: "da", - pattern: "aba", - // Fails at the primary level, because "aa" is a contraction. - text: "123 abaa 123", - want: []int{}, - }, { - desc: "whole grapheme, trailing modifier", - tag: "und", - pattern: "eee", - text: "123 eee\u0300 123", // U+0300: COMBINING GRAVE ACCENT - want: nil, - }, { - // Language-specific matching. - - desc: "", - tag: "da", - options: []Option{IgnoreCase}, - pattern: "Århus", - text: "AarhusÅrhus Århus ", - want: []int{0, 6, 6, 12, 14, 20}, - }, { - desc: "", - tag: "da", - options: []Option{IgnoreCase}, - pattern: "Aarhus", - text: "Århus Aarhus", - want: []int{0, 6, 7, 13}, - }, { - desc: "", - tag: "en", // Å does not match A for English. - options: []Option{IgnoreCase}, - pattern: "Aarhus", - text: "Århus", - want: nil, - }, { - desc: "ignore modifier in text", - options: []Option{IgnoreDiacritics}, - tag: "und", - pattern: "eee", - text: "123 eee\u0300 123", // U+0300: COMBINING GRAVE ACCENT - want: []int{4, 9}, // Matches on grapheme boundary. - }, { - desc: "ignore multiple modifiers in text", - options: []Option{IgnoreDiacritics}, - tag: "und", - pattern: "eee", - text: "123 eee\u0300\u0300 123", // U+0300: COMBINING GRAVE ACCENT - want: []int{4, 11}, // Matches on grapheme boundary. - }, { - desc: "ignore modifier in pattern", - options: []Option{IgnoreDiacritics}, - tag: "und", - pattern: "eee\u0300", // U+0300: COMBINING GRAVE ACCENT - text: "123 eee 123", - want: []int{4, 7}, - }, { - desc: "ignore multiple modifiers in pattern", - options: []Option{IgnoreDiacritics}, - tag: "und", - pattern: "eee\u0300\u0300", // U+0300: COMBINING GRAVE ACCENT - text: "123 eee 123", - want: []int{4, 7}, - }, { - desc: "match non-normalized pattern", - tag: "und", - // U+0300: COMBINING GRAVE ACCENT (CCC=230) - // U+031B: COMBINING HORN (CCC=216) - pattern: "eee\u0300\u031b", - text: "123 eee\u031b\u0300 123", - want: []int{4, 11}, - }, { - desc: "match non-normalized text", - tag: "und", - // U+0300: COMBINING GRAVE ACCENT (CCC=230) - // U+031B: COMBINING HORN (CCC=216) - pattern: "eee\u031b\u0300", - text: "123 eee\u0300\u031b 123", - want: []int{4, 11}, - }} { - m := New(language.MustParse(tc.tag), tc.options...) - p := m.CompileString(tc.pattern) - for j := 0; j < len(tc.text); { - start, end := p.IndexString(tc.text[j:]) - if start == -1 && end == -1 { - j++ - continue - } - start += j - end += j - j = end - if len(tc.want) == 0 { - t.Errorf("%d:%s: found unexpected result [%d %d]", i, tc.desc, start, end) - break - } - if tc.want[0] != start || tc.want[1] != end { - t.Errorf("%d:%s: got [%d %d]; want %v", i, tc.desc, start, end, tc.want[:2]) - tc.want = tc.want[2:] - break - } - tc.want = tc.want[2:] - } - if len(tc.want) != 0 { - t.Errorf("%d:%s: %d extra results", i, tc.desc, len(tc.want)/2) - } - } -} diff --git a/vendor/golang.org/x/text/search/search.go b/vendor/golang.org/x/text/search/search.go deleted file mode 100644 index 894b6c6c..00000000 --- a/vendor/golang.org/x/text/search/search.go +++ /dev/null @@ -1,237 +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. - -//go:generate go run ../collate/maketables.go -cldr=23 -unicode=6.2.0 -types=search,searchjl -package=search - -// Package search provides language-specific search and string matching. -// -// Natural language matching can be intricate. For example, Danish will insist -// "Århus" and "Aarhus" are the same name and Turkish will match I to ı (note -// the lack of a dot) in a case-insensitive match. This package handles such -// language-specific details. -// -// Text passed to any of the calls in this message does not need to be -// normalized. -package search // import "golang.org/x/text/search" - -import ( - "strings" - - "golang.org/x/text/internal/colltab" - "golang.org/x/text/language" -) - -// An Option configures a Matcher. -type Option func(*Matcher) - -var ( - // WholeWord restricts matches to complete words. The default is to match at - // the character level. - WholeWord Option = nil - - // Exact requires that two strings are their exact equivalent. For example - // å would not match aa in Danish. It overrides any of the ignore options. - Exact Option = nil - - // Loose causes case, diacritics and width to be ignored. - Loose Option = loose - - // IgnoreCase enables case-insensitive search. - IgnoreCase Option = ignoreCase - - // IgnoreDiacritics causes diacritics to be ignored ("ö" == "o"). - IgnoreDiacritics Option = ignoreDiacritics - - // IgnoreWidth equates narrow with wide variants. - IgnoreWidth Option = ignoreWidth -) - -func ignoreDiacritics(m *Matcher) { m.ignoreDiacritics = true } -func ignoreCase(m *Matcher) { m.ignoreCase = true } -func ignoreWidth(m *Matcher) { m.ignoreWidth = true } -func loose(m *Matcher) { - ignoreDiacritics(m) - ignoreCase(m) - ignoreWidth(m) -} - -var ( - // Supported lists the languages for which search differs from its parent. - Supported language.Coverage - - tags []language.Tag -) - -func init() { - ids := strings.Split(availableLocales, ",") - tags = make([]language.Tag, len(ids)) - for i, s := range ids { - tags[i] = language.Raw.MustParse(s) - } - Supported = language.NewCoverage(tags) -} - -// New returns a new Matcher for the given language and options. -func New(t language.Tag, opts ...Option) *Matcher { - m := &Matcher{ - w: getTable(locales[colltab.MatchLang(t, tags)]), - } - for _, f := range opts { - f(m) - } - return m -} - -// A Matcher implements language-specific string matching. -type Matcher struct { - w colltab.Weighter - ignoreCase bool - ignoreWidth bool - ignoreDiacritics bool -} - -// An IndexOption specifies how the Index methods of Pattern or Matcher should -// match the input. -type IndexOption byte - -const ( - // Anchor restricts the search to the start (or end for Backwards) of the - // text. - Anchor IndexOption = 1 << iota - - // Backwards starts the search from the end of the text. - Backwards - - anchorBackwards = Anchor | Backwards -) - -// Index reports the start and end position of the first occurrence of pat in b -// or -1, -1 if pat is not present. -func (m *Matcher) Index(b, pat []byte, opts ...IndexOption) (start, end int) { - // TODO: implement optimized version that does not use a pattern. - return m.Compile(pat).Index(b, opts...) -} - -// IndexString reports the start and end position of the first occurrence of pat -// in s or -1, -1 if pat is not present. -func (m *Matcher) IndexString(s, pat string, opts ...IndexOption) (start, end int) { - // TODO: implement optimized version that does not use a pattern. - return m.CompileString(pat).IndexString(s, opts...) -} - -// Equal reports whether a and b are equivalent. -func (m *Matcher) Equal(a, b []byte) bool { - _, end := m.Index(a, b, Anchor) - return end == len(a) -} - -// EqualString reports whether a and b are equivalent. -func (m *Matcher) EqualString(a, b string) bool { - _, end := m.IndexString(a, b, Anchor) - return end == len(a) -} - -// Compile compiles and returns a pattern that can be used for faster searching. -func (m *Matcher) Compile(b []byte) *Pattern { - p := &Pattern{m: m} - iter := colltab.Iter{Weighter: m.w} - for iter.SetInput(b); iter.Next(); { - } - p.ce = iter.Elems - p.deleteEmptyElements() - return p -} - -// CompileString compiles and returns a pattern that can be used for faster -// searching. -func (m *Matcher) CompileString(s string) *Pattern { - p := &Pattern{m: m} - iter := colltab.Iter{Weighter: m.w} - for iter.SetInputString(s); iter.Next(); { - } - p.ce = iter.Elems - p.deleteEmptyElements() - return p -} - -// A Pattern is a compiled search string. It is safe for concurrent use. -type Pattern struct { - m *Matcher - ce []colltab.Elem -} - -// Design note (TODO remove): -// The cost of retrieving collation elements for each rune, which is used for -// search as well, is not trivial. Also, algorithms like Boyer-Moore and -// Sunday require some additional precomputing. - -// Index reports the start and end position of the first occurrence of p in b -// or -1, -1 if p is not present. -func (p *Pattern) Index(b []byte, opts ...IndexOption) (start, end int) { - // Pick a large enough buffer such that we likely do not need to allocate - // and small enough to not cause too much overhead initializing. - var buf [8]colltab.Elem - - it := &colltab.Iter{ - Weighter: p.m.w, - Elems: buf[:0], - } - it.SetInput(b) - - var optMask IndexOption - for _, o := range opts { - optMask |= o - } - - switch optMask { - case 0: - return p.forwardSearch(it) - case Anchor: - return p.anchoredForwardSearch(it) - case Backwards, anchorBackwards: - panic("TODO: implement") - default: - panic("unrecognized option") - } -} - -// IndexString reports the start and end position of the first occurrence of p -// in s or -1, -1 if p is not present. -func (p *Pattern) IndexString(s string, opts ...IndexOption) (start, end int) { - // Pick a large enough buffer such that we likely do not need to allocate - // and small enough to not cause too much overhead initializing. - var buf [8]colltab.Elem - - it := &colltab.Iter{ - Weighter: p.m.w, - Elems: buf[:0], - } - it.SetInputString(s) - - var optMask IndexOption - for _, o := range opts { - optMask |= o - } - - switch optMask { - case 0: - return p.forwardSearch(it) - case Anchor: - return p.anchoredForwardSearch(it) - case Backwards, anchorBackwards: - panic("TODO: implement") - default: - panic("unrecognized option") - } -} - -// TODO: -// - Maybe IndexAll methods (probably not necessary). -// - Some way to match patterns in a Reader (a bit tricky). -// - Some fold transformer that folds text to comparable text, based on the -// search options. This is a common technique, though very different from the -// collation-based design of this package. It has a somewhat different use -// case, so probably makes sense to support both. Should probably be in a -// different package, though, as it uses completely different kind of tables -// (based on norm, cases, width and range tables.) diff --git a/vendor/golang.org/x/text/search/tables.go b/vendor/golang.org/x/text/search/tables.go deleted file mode 100644 index 72d27b5d..00000000 --- a/vendor/golang.org/x/text/search/tables.go +++ /dev/null @@ -1,12448 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package search - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "6.2.0" - -// CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "23" - -var availableLocales = "und,az,bs,ca,cs,da,de,en,en-US,es,fi,fo,fr,he,hr,is,kl,ko,ko-u-co-searchjl,nb,nn,se,sk,sr-Latn,sv,tr" - -const varTop = 0x30e - -var locales = [...]tableIndex{ - { // und - lookupOffset: 0x1a, - valuesOffset: 0x1b4, - }, - { // az - lookupOffset: 0x20, - valuesOffset: 0x1c8, - }, - { // bs - lookupOffset: 0x15, - valuesOffset: 0x0, - }, - { // ca - lookupOffset: 0x21, - valuesOffset: 0x1da, - }, - { // cs - lookupOffset: 0x23, - valuesOffset: 0x1de, - }, - { // da - lookupOffset: 0x26, - valuesOffset: 0x1e8, - }, - { // de - lookupOffset: 0x28, - valuesOffset: 0x1f2, - }, - { // en - lookupOffset: 0x1a, - valuesOffset: 0x1b4, - }, - { // en-US - lookupOffset: 0x1a, - valuesOffset: 0x1b4, - }, - { // es - lookupOffset: 0x29, - valuesOffset: 0x1f8, - }, - { // fi - lookupOffset: 0x2f, - valuesOffset: 0x1fb, - }, - { // fo - lookupOffset: 0x26, - valuesOffset: 0x1e8, - }, - { // fr - lookupOffset: 0x1a, - valuesOffset: 0x1b4, - }, - { // he - lookupOffset: 0x31, - valuesOffset: 0x20b, - }, - { // hr - lookupOffset: 0x33, - valuesOffset: 0x210, - }, - { // is - lookupOffset: 0x35, - valuesOffset: 0x217, - }, - { // kl - lookupOffset: 0x36, - valuesOffset: 0x221, - }, - { // ko - lookupOffset: 0x38, - valuesOffset: 0x1b4, - }, - { // ko-u-co-searchjl - lookupOffset: 0x3b, - valuesOffset: 0x0, - }, - { // nb - lookupOffset: 0x26, - valuesOffset: 0x22f, - }, - { // nn - lookupOffset: 0x26, - valuesOffset: 0x22f, - }, - { // se - lookupOffset: 0x3e, - valuesOffset: 0x231, - }, - { // sk - lookupOffset: 0x40, - valuesOffset: 0x23d, - }, - { // sr-Latn - lookupOffset: 0x15, - valuesOffset: 0x0, - }, - { // sv - lookupOffset: 0x42, - valuesOffset: 0x244, - }, - { // tr - lookupOffset: 0x48, - valuesOffset: 0x24c, - }, -} - -// mainExpandElem: 10841 entries, 43364 bytes -var mainExpandElem = [10841]uint32{ - // Block 0, offset 0x0 - 0x00000002, 0xAE604702, 0xAE603202, 0x00000002, 0xA000A51A, 0xA000BA1A, - 0x00000002, 0xA000A91A, 0xA000BA1A, 0x00000002, 0xA000AD1A, 0xA000BA1A, - 0x00000002, 0xA000B21A, 0xA000BA1A, 0x00000002, 0xA000B61A, 0xA000BA1A, - 0x00000002, 0xA000BA1A, 0xA000D11A, 0x00000004, 0x0003F484, 0x0029CE84, - 0x0029CC84, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029CE84, - 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029D084, 0x0003F69F, - 0x00000004, 0x0003F484, 0x0029CE84, 0x0029D284, 0x0003F69F, 0x00000004, - 0x0003F484, 0x0029CE84, 0x0029D484, 0x0003F69F, 0x00000004, 0x0003F484, - 0x0029CE84, 0x0029D684, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, - 0x0029D884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029DA84, - 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, - // Block 1, offset 0x40 - 0x0029DC84, 0x0003F69F, 0x00000004, 0x0003F484, 0x0029CE84, 0x0029DE84, - 0x0003F69F, 0x00000004, 0x0003F484, 0x0029D084, 0x0029CC84, 0x0003F69F, - 0x00000004, 0x0003F484, 0x0062AC84, 0x0063A884, 0x0003F69F, 0x00000004, - 0x0003F484, 0x0062B084, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, - 0x0062B284, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062B684, - 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062B884, 0x0063A884, - 0x0003F69F, 0x00000004, 0x0003F484, 0x0062BA84, 0x0063A884, 0x0003F69F, - 0x00000004, 0x0003F484, 0x0062BE84, 0x0063A884, 0x0003F69F, 0x00000004, - 0x0003F484, 0x0062C284, 0x0063A884, 0x0003F69F, 0x00000007, 0x0003F484, - 0x0062C284, 0x0063B884, 0x0062C484, 0x0063B084, 0x00646A84, 0x0003F69F, - 0x00000006, 0x0003F484, 0x0062C284, 0x0063B884, - // Block 2, offset 0x80 - 0x0062D084, 0x0063C284, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C484, - 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C484, 0x0063C284, - 0x0003F69F, 0x00000004, 0x0003F484, 0x0062C884, 0x0063A884, 0x0003F69F, - 0x00000004, 0x0003F484, 0x0062CA84, 0x0063A884, 0x0003F69F, 0x00000004, - 0x0003F484, 0x0062CC84, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, - 0x0062CE84, 0x0063A884, 0x0003F69F, 0x00000004, 0x0003F484, 0x0062D084, - 0x0063A884, 0x0003F69F, 0x00000004, 0x00050E84, 0x00050E84, 0x00050E84, - 0x00050E9F, 0x00000002, 0x40062C20, 0xAE603202, 0x00000002, 0x40062C20, - 0xAE603502, 0x00000002, 0x40062C20, 0xAE604502, 0x00000002, 0x40063620, - 0xAE603202, 0x00000002, 0x40063620, 0xAE603502, 0x00000002, 0x40063620, - 0xAE604502, 0x00000002, 0x40063820, 0xAE603202, - // Block 3, offset 0xc0 - 0x00000002, 0x40063820, 0xAE603502, 0x00000002, 0x40063820, 0xAE604502, - 0x00000002, 0x40084420, 0xA0105402, 0x00000002, 0x40084620, 0xA0105402, - 0x00000002, 0x40084C20, 0xA0105402, 0x00000002, 0x4008B820, 0xA0105402, - 0x00000002, 0x4008BC20, 0xA0105402, 0x00000002, 0x4008C020, 0xA0105402, - 0x00000002, 0x40091E20, 0xA0105402, 0x00000002, 0x40092620, 0xA0105402, - 0x00000002, 0x40092A20, 0xA0105402, 0x00000002, 0x40094020, 0xA0105402, - 0x00000002, 0x40094220, 0xA0105402, 0x00000002, 0x40094420, 0xA0105402, - 0x00000002, 0x40097820, 0xA0105402, 0x00000002, 0x40097A20, 0xA0105402, - 0x00000004, 0x00098484, 0x00098484, 0x00098484, 0x0009849F, 0x00000002, - 0x40099E20, 0xA0105402, 0x00000002, 0x4009AA20, 0xA0105402, 0x00000002, - 0x4009AC20, 0xA0105402, 0x00000002, 0x4009B020, - // Block 4, offset 0x100 - 0xA0105402, 0x00000002, 0x4009B820, 0xA0105402, 0x00000002, 0x4009DE20, - 0xA0105402, 0x00000002, 0x4009E220, 0xA0105402, 0x00000002, 0x4009E420, - 0xA0105402, 0x00000002, 0x4009F420, 0xA0105402, 0x00000002, 0x4009F620, - 0xA0105402, 0x00000002, 0x4009F820, 0xA0105402, 0x00000002, 0x4009FA20, - 0xA0105402, 0x00000002, 0x4009FC20, 0xA0105402, 0x00000002, 0x4009FE20, - 0xA0105402, 0x00000002, 0x400A0020, 0xA0105402, 0x00000002, 0x400A0220, - 0xA0105402, 0x00000002, 0x400A0820, 0xA0105402, 0x00000002, 0x400A0A20, - 0xA0105402, 0x00000002, 0x400A0C20, 0xA0105402, 0x00000002, 0x400A0E20, - 0xA0105402, 0x00000002, 0x400A1E20, 0xA0105402, 0x00000002, 0x400A2020, - 0xA0105402, 0x00000002, 0x400A4020, 0xA0105402, 0x00000002, 0x400A4C20, - 0xA0105402, 0x00000002, 0x400A4E20, 0xA0105402, - // Block 5, offset 0x140 - 0x00000002, 0x400A5220, 0xA0105402, 0x00000002, 0x400A5820, 0xA0105402, - 0x00000002, 0x400A5A20, 0xA0105402, 0x00000002, 0x400A5C20, 0xA0105402, - 0x00000002, 0x400A5E20, 0xA0105402, 0x00000002, 0x40164620, 0xA0105402, - 0x00000002, 0x4027CE20, 0xA0012802, 0x00000002, 0x4027D020, 0xA0012802, - 0x00000002, 0x4027D420, 0xA0812802, 0x00000002, 0x4027D820, 0xA0812802, - 0x00000002, 0x4029CC20, 0xA0013F02, 0x00000002, 0x4029CC20, 0xA0014002, - 0x00000002, 0x4029CC20, 0xA0014202, 0x00000002, 0x4029CC20, 0xA0014402, - 0x00000002, 0x4029CC20, 0xA0014502, 0x00000002, 0x4029CC20, 0xA0014602, - 0x00000002, 0x4029CC20, 0xA0014702, 0x00000002, 0x4029CC20, 0xA0014802, - 0x00000002, 0x4029CC20, 0xA0014902, 0x00000002, 0x4029CC20, 0xA0014A02, - 0x00000002, 0x4029CC20, 0xA0014B02, 0x00000002, - // Block 6, offset 0x180 - 0x4029CC20, 0xA0014B02, 0x00000002, 0x4029CC20, 0xA0014C02, 0x00000002, - 0x4029CC20, 0xA0014D02, 0x00000002, 0x4029CC20, 0xA0014E02, 0x00000002, - 0x4029CC20, 0xA0014F02, 0x00000002, 0x4029CC20, 0xA0015002, 0x00000002, - 0x4029CC20, 0xA0015102, 0x00000002, 0x4029CC20, 0xA0015202, 0x00000002, - 0x4029CC20, 0xA0015302, 0x00000002, 0x4029CC20, 0xA0015402, 0x00000002, - 0x4029CC20, 0xA0015502, 0x00000002, 0x4029CC20, 0xA0015602, 0x00000002, - 0x0029CC84, 0xA0015604, 0x00000002, 0x4029CC20, 0xA0015702, 0x00000002, - 0x4029CC20, 0xA0015802, 0x00000002, 0x4029CC20, 0xA0015902, 0x00000002, - 0x4029CC20, 0xA0015A02, 0x00000002, 0x4029CC20, 0xA0015B02, 0x00000002, - 0x4029CC20, 0xA0015C02, 0x00000002, 0x4029CC20, 0xA0015D02, 0x00000002, - 0x4029CC20, 0xA0015E02, 0x00000002, 0x4029CC20, - // Block 7, offset 0x1c0 - 0xA0015F02, 0x00000002, 0x4029CC20, 0xA0016002, 0x00000002, 0x4029CC20, - 0xA0016102, 0x00000002, 0x4029CC20, 0xA0016202, 0x00000002, 0x4029CC20, - 0xA0016302, 0x00000002, 0x4029CC20, 0xA0016402, 0x00000002, 0x4029CC20, - 0xA0016502, 0x00000002, 0x4029CC20, 0xA0016602, 0x00000002, 0x4029CC20, - 0xA0016802, 0x00000002, 0x4029CC20, 0xA0017202, 0x00000002, 0x4029CC20, - 0xA0017302, 0x00000002, 0x4029CC20, 0xA0017402, 0x00000003, 0x0029CC9E, - 0x0009589E, 0x0029D29E, 0x00000002, 0x4029CE20, 0xA0013F02, 0x00000002, - 0x4029CE20, 0xA0014002, 0x00000002, 0x4029CE20, 0xA0014102, 0x00000002, - 0x4029CE20, 0xA0014202, 0x00000002, 0x4029CE20, 0xA0014302, 0x00000002, - 0x4029CE20, 0xA0014402, 0x00000002, 0x4029CE20, 0xA0014502, 0x00000002, - 0x4029CE20, 0xA0014602, 0x00000002, 0x4029CE20, - // Block 8, offset 0x200 - 0xA0014702, 0x00000002, 0x4029CE20, 0xA0014802, 0x00000002, 0x4029CE20, - 0xA0014902, 0x00000002, 0x4029CE20, 0xA0014A02, 0x00000002, 0x4029CE20, - 0xA0014B02, 0x00000002, 0x4029CE20, 0xA0014B02, 0x00000002, 0x4029CE20, - 0xA0014B02, 0x00000002, 0x4029CE20, 0xA0014C02, 0x00000002, 0x4029CE20, - 0xA0014D02, 0x00000002, 0x4029CE20, 0xA0014E02, 0x00000002, 0x4029CE20, - 0xA0014F02, 0x00000002, 0x4029CE20, 0xA0015002, 0x00000002, 0x4029CE20, - 0xA0015102, 0x00000002, 0x4029CE20, 0xA0015102, 0x00000002, 0x4029CE20, - 0xA0015202, 0x00000002, 0x4029CE20, 0xA0015302, 0x00000002, 0x4029CE20, - 0xA0015402, 0x00000002, 0x4029CE20, 0xA0015502, 0x00000002, 0x4029CE20, - 0xA0015602, 0x00000002, 0x0029CE84, 0xA0015604, 0x00000002, 0x4029CE20, - 0xA0015702, 0x00000002, 0x4029CE20, 0xA0015802, - // Block 9, offset 0x240 - 0x00000002, 0x4029CE20, 0xA0015902, 0x00000002, 0x4029CE20, 0xA0015A02, - 0x00000002, 0x4029CE20, 0xA0015B02, 0x00000002, 0x4029CE20, 0xA0015C02, - 0x00000002, 0x4029CE20, 0xA0015D02, 0x00000002, 0x4029CE20, 0xA0015E02, - 0x00000002, 0x4029CE20, 0xA0015F02, 0x00000002, 0x4029CE20, 0xA0016002, - 0x00000002, 0x4029CE20, 0xA0016102, 0x00000002, 0x4029CE20, 0xA0016202, - 0x00000002, 0x4029CE20, 0xA0016302, 0x00000002, 0x4029CE20, 0xA0016402, - 0x00000002, 0x4029CE20, 0xA0016502, 0x00000002, 0x4029CE20, 0xA0016602, - 0x00000002, 0x4029CE20, 0xA0016702, 0x00000002, 0x4029CE20, 0xA0016802, - 0x00000002, 0x4029CE20, 0xA0016802, 0x00000002, 0x4029CE20, 0xA0016802, - 0x00000002, 0x4029CE20, 0xA0016802, 0x00000002, 0x4029CE20, 0xA0016A02, - 0x00000002, 0x4029CE20, 0xA0016B02, 0x00000002, - // Block 10, offset 0x280 - 0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002, - 0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002, - 0x4029CE20, 0xA0016C02, 0x00000002, 0x4029CE20, 0xA0016C02, 0x00000002, - 0x4029CE20, 0xA0016D02, 0x00000002, 0x4029CE20, 0xA0016E02, 0x00000002, - 0x4029CE20, 0xA0016F02, 0x00000002, 0x4029CE20, 0xA0017002, 0x00000002, - 0x4029CE20, 0xA0017102, 0x00000002, 0x4029CE20, 0xA0017202, 0x00000002, - 0x4029CE20, 0xA0017302, 0x00000002, 0x4029CE20, 0xA0017402, 0x00000002, - 0x4029CE20, 0xA0017502, 0x00000002, 0x4029CE20, 0xA0017602, 0x00000002, - 0x4029CE20, 0xA0017702, 0x00000004, 0x0029CE9E, 0x0009589E, 0x0029CE9E, - 0x0029CC9E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029D09E, 0x00000003, - 0x0029CE9E, 0x0009589E, 0x0029D29E, 0x00000003, - // Block 11, offset 0x2c0 - 0x0029CE9E, 0x0009589E, 0x0029D49E, 0x00000003, 0x0029CE9E, 0x0009589E, - 0x0029D69E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029D89E, 0x00000003, - 0x0029CE9E, 0x0009589E, 0x0029DA9E, 0x00000003, 0x0029CE9E, 0x0009589E, - 0x0029DC9E, 0x00000003, 0x0029CE9E, 0x0009589E, 0x0029DE9E, 0x00000002, - 0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CC86, 0x00000002, - 0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CC86, 0x00000002, - 0x0029CE86, 0x0029CC86, 0x00000002, 0x0029CE86, 0x0029CE86, 0x00000002, - 0x0029CE86, 0x0029D086, 0x00000002, 0x0029CE86, 0x0029D286, 0x00000002, - 0x0029CE86, 0x0029D486, 0x00000002, 0x0029CE86, 0x0029D686, 0x00000002, - 0x0029CE86, 0x0029D886, 0x00000002, 0x0029CE86, 0x0029DA86, 0x00000002, - 0x0029CE86, 0x0029DC86, 0x00000002, 0x0029CE86, - // Block 12, offset 0x300 - 0x0029DE86, 0x00000002, 0x4029D020, 0xA0013F02, 0x00000002, 0x4029D020, - 0xA0014002, 0x00000002, 0x4029D020, 0xA0014102, 0x00000002, 0x4029D020, - 0xA0014202, 0x00000002, 0x4029D020, 0xA0014302, 0x00000002, 0x4029D020, - 0xA0014402, 0x00000002, 0x4029D020, 0xA0014502, 0x00000002, 0x4029D020, - 0xA0014602, 0x00000002, 0x4029D020, 0xA0014702, 0x00000002, 0x4029D020, - 0xA0014802, 0x00000002, 0x4029D020, 0xA0014902, 0x00000002, 0x4029D020, - 0xA0014A02, 0x00000002, 0x4029D020, 0xA0014B02, 0x00000002, 0x4029D020, - 0xA0014B02, 0x00000002, 0x4029D020, 0xA0014B02, 0x00000002, 0x4029D020, - 0xA0014C02, 0x00000002, 0x4029D020, 0xA0014D02, 0x00000002, 0x4029D020, - 0xA0014E02, 0x00000002, 0x4029D020, 0xA0014F02, 0x00000002, 0x4029D020, - 0xA0015002, 0x00000002, 0x4029D020, 0xA0015102, - // Block 13, offset 0x340 - 0x00000002, 0x4029D020, 0xA0015202, 0x00000002, 0x4029D020, 0xA0015302, - 0x00000002, 0x4029D020, 0xA0015402, 0x00000002, 0x4029D020, 0xA0015502, - 0x00000002, 0x4029D020, 0xA0015602, 0x00000002, 0x0029D084, 0xA0015604, - 0x00000002, 0x4029D020, 0xA0015702, 0x00000002, 0x4029D020, 0xA0015802, - 0x00000002, 0x4029D020, 0xA0015902, 0x00000002, 0x4029D020, 0xA0015A02, - 0x00000002, 0x4029D020, 0xA0015B02, 0x00000002, 0x4029D020, 0xA0015C02, - 0x00000002, 0x4029D020, 0xA0015D02, 0x00000002, 0x4029D020, 0xA0015E02, - 0x00000002, 0x4029D020, 0xA0015F02, 0x00000002, 0x4029D020, 0xA0016002, - 0x00000002, 0x4029D020, 0xA0016102, 0x00000002, 0x4029D020, 0xA0016202, - 0x00000002, 0x4029D020, 0xA0016302, 0x00000002, 0x4029D020, 0xA0016402, - 0x00000002, 0x4029D020, 0xA0016502, 0x00000002, - // Block 14, offset 0x380 - 0x4029D020, 0xA0016602, 0x00000002, 0x4029D020, 0xA0016702, 0x00000002, - 0x4029D020, 0xA0016802, 0x00000002, 0x4029D020, 0xA0016802, 0x00000002, - 0x4029D020, 0xA0016802, 0x00000002, 0x4029D020, 0xA0016802, 0x00000002, - 0x4029D020, 0xA0016B02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002, - 0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002, - 0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002, - 0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002, - 0x4029D020, 0xA0016C02, 0x00000002, 0x4029D020, 0xA0016C02, 0x00000002, - 0x4029D020, 0xA0016E02, 0x00000002, 0x4029D020, 0xA0016F02, 0x00000002, - 0x4029D020, 0xA0017002, 0x00000002, 0x4029D020, 0xA0017102, 0x00000002, - 0x4029D020, 0xA0017202, 0x00000002, 0x4029D020, - // Block 15, offset 0x3c0 - 0xA0017302, 0x00000002, 0x4029D020, 0xA0017402, 0x00000002, 0x4029D020, - 0xA0017502, 0x00000002, 0x4029D020, 0xA0017602, 0x00000002, 0x4029D020, - 0xA0017702, 0x00000003, 0x0029D09E, 0x0009589E, 0x0029D29E, 0x00000003, - 0x0029D09E, 0x0009589E, 0x0029D69E, 0x00000002, 0x0029D086, 0x0029CC86, - 0x00000002, 0x0029D086, 0x0029CC86, 0x00000002, 0x4029D220, 0xA0013F02, - 0x00000002, 0x4029D220, 0xA0014002, 0x00000002, 0x4029D220, 0xA0014102, - 0x00000002, 0x4029D220, 0xA0014202, 0x00000002, 0x4029D220, 0xA0014302, - 0x00000002, 0x4029D220, 0xA0014402, 0x00000002, 0x4029D220, 0xA0014502, - 0x00000002, 0x4029D220, 0xA0014602, 0x00000002, 0x4029D220, 0xA0014702, - 0x00000002, 0x4029D220, 0xA0014802, 0x00000002, 0x4029D220, 0xA0014902, - 0x00000002, 0x4029D220, 0xA0014A02, 0x00000002, - // Block 16, offset 0x400 - 0x4029D220, 0xA0014B02, 0x00000002, 0x4029D220, 0xA0014B02, 0x00000002, - 0x4029D220, 0xA0014B02, 0x00000002, 0x4029D220, 0xA0014C02, 0x00000002, - 0x4029D220, 0xA0014D02, 0x00000002, 0x4029D220, 0xA0014E02, 0x00000002, - 0x4029D220, 0xA0014F02, 0x00000002, 0x4029D220, 0xA0015002, 0x00000002, - 0x4029D220, 0xA0015102, 0x00000002, 0x4029D220, 0xA0015202, 0x00000002, - 0x4029D220, 0xA0015302, 0x00000002, 0x4029D220, 0xA0015402, 0x00000002, - 0x4029D220, 0xA0015502, 0x00000002, 0x4029D220, 0xA0015602, 0x00000002, - 0x0029D284, 0xA0015604, 0x00000002, 0x4029D220, 0xA0015702, 0x00000002, - 0x4029D220, 0xA0015802, 0x00000002, 0x4029D220, 0xA0015902, 0x00000002, - 0x4029D220, 0xA0015A02, 0x00000002, 0x4029D220, 0xA0015B02, 0x00000002, - 0x4029D220, 0xA0015C02, 0x00000002, 0x4029D220, - // Block 17, offset 0x440 - 0xA0015D02, 0x00000002, 0x4029D220, 0xA0015E02, 0x00000002, 0x4029D220, - 0xA0015F02, 0x00000002, 0x4029D220, 0xA0016002, 0x00000002, 0x4029D220, - 0xA0016102, 0x00000002, 0x4029D220, 0xA0016202, 0x00000002, 0x4029D220, - 0xA0016302, 0x00000002, 0x4029D220, 0xA0016402, 0x00000002, 0x4029D220, - 0xA0016502, 0x00000002, 0x4029D220, 0xA0016602, 0x00000002, 0x4029D220, - 0xA0016702, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, - 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, - 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, - 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, - 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, - 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, - // Block 18, offset 0x480 - 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016C02, - 0x00000002, 0x4029D220, 0xA0016C02, 0x00000002, 0x4029D220, 0xA0016E02, - 0x00000002, 0x4029D220, 0xA0016F02, 0x00000002, 0x4029D220, 0xA0017002, - 0x00000002, 0x4029D220, 0xA0017102, 0x00000002, 0x4029D220, 0xA0017202, - 0x00000002, 0x4029D220, 0xA0017302, 0x00000002, 0x4029D220, 0xA0017402, - 0x00000002, 0x4029D220, 0xA0017502, 0x00000002, 0x4029D220, 0xA0017602, - 0x00000002, 0x4029D220, 0xA0017702, 0x00000003, 0x0029D29E, 0x0009589E, - 0x0029D49E, 0x00000003, 0x0029D29E, 0x0009589E, 0x0029D69E, 0x00000003, - 0x0029D29E, 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029D286, 0x0029CC86, - 0x00000002, 0x4029D420, 0xA0013F02, 0x00000002, 0x4029D420, 0xA0014002, - 0x00000002, 0x4029D420, 0xA0014102, 0x00000002, - // Block 19, offset 0x4c0 - 0x4029D420, 0xA0014202, 0x00000002, 0x4029D420, 0xA0014302, 0x00000002, - 0x4029D420, 0xA0014402, 0x00000002, 0x4029D420, 0xA0014502, 0x00000002, - 0x4029D420, 0xA0014602, 0x00000002, 0x4029D420, 0xA0014702, 0x00000002, - 0x4029D420, 0xA0014802, 0x00000002, 0x4029D420, 0xA0014902, 0x00000002, - 0x4029D420, 0xA0014A02, 0x00000002, 0x4029D420, 0xA0014B02, 0x00000002, - 0x4029D420, 0xA0014C02, 0x00000002, 0x4029D420, 0xA0014D02, 0x00000002, - 0x4029D420, 0xA0014E02, 0x00000002, 0x4029D420, 0xA0014F02, 0x00000002, - 0x4029D420, 0xA0015002, 0x00000002, 0x4029D420, 0xA0015102, 0x00000002, - 0x4029D420, 0xA0015202, 0x00000002, 0x4029D420, 0xA0015302, 0x00000002, - 0x4029D420, 0xA0015402, 0x00000002, 0x4029D420, 0xA0015502, 0x00000002, - 0x4029D420, 0xA0015602, 0x00000002, 0x0029D484, - // Block 20, offset 0x500 - 0xA0015604, 0x00000002, 0x4029D420, 0xA0015702, 0x00000002, 0x4029D420, - 0xA0015802, 0x00000002, 0x4029D420, 0xA0015902, 0x00000002, 0x4029D420, - 0xA0015A02, 0x00000002, 0x4029D420, 0xA0015B02, 0x00000002, 0x4029D420, - 0xA0015C02, 0x00000002, 0x4029D420, 0xA0015D02, 0x00000002, 0x4029D420, - 0xA0015E02, 0x00000002, 0x4029D420, 0xA0015F02, 0x00000002, 0x4029D420, - 0xA0016002, 0x00000002, 0x4029D420, 0xA0016102, 0x00000002, 0x4029D420, - 0xA0016202, 0x00000002, 0x4029D420, 0xA0016302, 0x00000002, 0x4029D420, - 0xA0016402, 0x00000002, 0x4029D420, 0xA0016502, 0x00000002, 0x4029D420, - 0xA0016602, 0x00000002, 0x4029D420, 0xA0016702, 0x00000002, 0x4029D420, - 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, - 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, - // Block 21, offset 0x540 - 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, - 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, - 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, - 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, - 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0016C02, - 0x00000002, 0x4029D420, 0xA0016C02, 0x00000002, 0x4029D420, 0xA0017002, - 0x00000002, 0x4029D420, 0xA0017102, 0x00000002, 0x4029D420, 0xA0017202, - 0x00000002, 0x4029D420, 0xA0017302, 0x00000002, 0x4029D420, 0xA0017402, - 0x00000002, 0x4029D420, 0xA0017502, 0x00000002, 0x4029D420, 0xA0017602, - 0x00000002, 0x4029D420, 0xA0017702, 0x00000003, 0x0029D49E, 0x0009589E, - 0x0029D69E, 0x00000002, 0x0029D486, 0x0029CC86, - // Block 22, offset 0x580 - 0x00000002, 0x4029D620, 0xA0013F02, 0x00000002, 0x4029D620, 0xA0014002, - 0x00000002, 0x4029D620, 0xA0014102, 0x00000002, 0x4029D620, 0xA0014202, - 0x00000002, 0x4029D620, 0xA0014302, 0x00000002, 0x4029D620, 0xA0014402, - 0x00000002, 0x4029D620, 0xA0014502, 0x00000002, 0x4029D620, 0xA0014602, - 0x00000002, 0x4029D620, 0xA0014702, 0x00000002, 0x4029D620, 0xA0014802, - 0x00000002, 0x4029D620, 0xA0014902, 0x00000002, 0x4029D620, 0xA0014A02, - 0x00000002, 0x4029D620, 0xA0014B02, 0x00000002, 0x4029D620, 0xA0014C02, - 0x00000002, 0x4029D620, 0xA0014D02, 0x00000002, 0x4029D620, 0xA0014E02, - 0x00000002, 0x4029D620, 0xA0014F02, 0x00000002, 0x4029D620, 0xA0015002, - 0x00000002, 0x4029D620, 0xA0015102, 0x00000002, 0x4029D620, 0xA0015202, - 0x00000002, 0x4029D620, 0xA0015302, 0x00000002, - // Block 23, offset 0x5c0 - 0x4029D620, 0xA0015402, 0x00000002, 0x4029D620, 0xA0015502, 0x00000002, - 0x4029D620, 0xA0015602, 0x00000002, 0x0029D684, 0xA0015604, 0x00000002, - 0x4029D620, 0xA0015702, 0x00000002, 0x4029D620, 0xA0015802, 0x00000002, - 0x4029D620, 0xA0015902, 0x00000002, 0x4029D620, 0xA0015A02, 0x00000002, - 0x4029D620, 0xA0015B02, 0x00000002, 0x4029D620, 0xA0015C02, 0x00000002, - 0x4029D620, 0xA0015D02, 0x00000002, 0x4029D620, 0xA0015E02, 0x00000002, - 0x4029D620, 0xA0015F02, 0x00000002, 0x4029D620, 0xA0016002, 0x00000002, - 0x4029D620, 0xA0016102, 0x00000002, 0x4029D620, 0xA0016202, 0x00000002, - 0x4029D620, 0xA0016302, 0x00000002, 0x4029D620, 0xA0016402, 0x00000002, - 0x4029D620, 0xA0016502, 0x00000002, 0x4029D620, 0xA0016602, 0x00000002, - 0x4029D620, 0xA0016702, 0x00000002, 0x4029D620, - // Block 24, offset 0x600 - 0xA0016802, 0x00000002, 0x4029D620, 0xA0016802, 0x00000002, 0x4029D620, - 0xA0016802, 0x00000002, 0x4029D620, 0xA0016802, 0x00000002, 0x4029D620, - 0xA0016802, 0x00000002, 0x4029D620, 0xA0016A02, 0x00000002, 0x4029D620, - 0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620, - 0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620, - 0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620, - 0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620, - 0xA0016C02, 0x00000002, 0x4029D620, 0xA0016C02, 0x00000002, 0x4029D620, - 0xA0016C02, 0x00000002, 0x4029D620, 0xA0017202, 0x00000002, 0x4029D620, - 0xA0017302, 0x00000002, 0x4029D620, 0xA0017402, 0x00000002, 0x4029D620, - 0xA0017502, 0x00000002, 0x4029D620, 0xA0017702, - // Block 25, offset 0x640 - 0x00000003, 0x0029D69E, 0x0009589E, 0x0029D89E, 0x00000003, 0x0029D69E, - 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029D686, 0x0029CC86, 0x00000002, - 0x4029D820, 0xA0013F02, 0x00000002, 0x4029D820, 0xA0014002, 0x00000002, - 0x4029D820, 0xA0014102, 0x00000002, 0x4029D820, 0xA0014202, 0x00000002, - 0x4029D820, 0xA0014302, 0x00000002, 0x4029D820, 0xA0014402, 0x00000002, - 0x4029D820, 0xA0014502, 0x00000002, 0x4029D820, 0xA0014602, 0x00000002, - 0x4029D820, 0xA0014702, 0x00000002, 0x4029D820, 0xA0014802, 0x00000002, - 0x4029D820, 0xA0014902, 0x00000002, 0x4029D820, 0xA0014A02, 0x00000002, - 0x4029D820, 0xA0014B02, 0x00000002, 0x4029D820, 0xA0014C02, 0x00000002, - 0x4029D820, 0xA0014D02, 0x00000002, 0x4029D820, 0xA0014E02, 0x00000002, - 0x4029D820, 0xA0014F02, 0x00000002, 0x4029D820, - // Block 26, offset 0x680 - 0xA0015002, 0x00000002, 0x4029D820, 0xA0015102, 0x00000002, 0x4029D820, - 0xA0015202, 0x00000002, 0x4029D820, 0xA0015302, 0x00000002, 0x4029D820, - 0xA0015402, 0x00000002, 0x4029D820, 0xA0015502, 0x00000002, 0x4029D820, - 0xA0015602, 0x00000002, 0x0029D884, 0xA0015604, 0x00000002, 0x4029D820, - 0xA0015702, 0x00000002, 0x4029D820, 0xA0015802, 0x00000002, 0x4029D820, - 0xA0015902, 0x00000002, 0x4029D820, 0xA0015A02, 0x00000002, 0x4029D820, - 0xA0015B02, 0x00000002, 0x4029D820, 0xA0015C02, 0x00000002, 0x4029D820, - 0xA0015D02, 0x00000002, 0x4029D820, 0xA0015E02, 0x00000002, 0x4029D820, - 0xA0015F02, 0x00000002, 0x4029D820, 0xA0016002, 0x00000002, 0x4029D820, - 0xA0016102, 0x00000002, 0x4029D820, 0xA0016202, 0x00000002, 0x4029D820, - 0xA0016302, 0x00000002, 0x4029D820, 0xA0016402, - // Block 27, offset 0x6c0 - 0x00000002, 0x4029D820, 0xA0016502, 0x00000002, 0x4029D820, 0xA0016602, - 0x00000002, 0x4029D820, 0xA0016702, 0x00000002, 0x4029D820, 0xA0016902, - 0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02, - 0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02, - 0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0016C02, - 0x00000002, 0x4029D820, 0xA0016C02, 0x00000002, 0x4029D820, 0xA0017202, - 0x00000002, 0x4029D820, 0xA0017302, 0x00000002, 0x4029D820, 0xA0017402, - 0x00000002, 0x4029D820, 0xA0017502, 0x00000002, 0x4029D820, 0xA0017702, - 0x00000002, 0x0029D886, 0x0029CC86, 0x00000002, 0x4029DA20, 0xA0013F02, - 0x00000002, 0x4029DA20, 0xA0014002, 0x00000002, 0x4029DA20, 0xA0014102, - 0x00000002, 0x4029DA20, 0xA0014202, 0x00000002, - // Block 28, offset 0x700 - 0x4029DA20, 0xA0014302, 0x00000002, 0x4029DA20, 0xA0014402, 0x00000002, - 0x4029DA20, 0xA0014502, 0x00000002, 0x4029DA20, 0xA0014602, 0x00000002, - 0x4029DA20, 0xA0014702, 0x00000002, 0x4029DA20, 0xA0014802, 0x00000002, - 0x4029DA20, 0xA0014902, 0x00000002, 0x4029DA20, 0xA0014A02, 0x00000002, - 0x4029DA20, 0xA0014B02, 0x00000002, 0x4029DA20, 0xA0014C02, 0x00000002, - 0x4029DA20, 0xA0014D02, 0x00000002, 0x4029DA20, 0xA0014E02, 0x00000002, - 0x4029DA20, 0xA0014F02, 0x00000002, 0x4029DA20, 0xA0015002, 0x00000002, - 0x4029DA20, 0xA0015102, 0x00000002, 0x4029DA20, 0xA0015202, 0x00000002, - 0x4029DA20, 0xA0015302, 0x00000002, 0x4029DA20, 0xA0015402, 0x00000002, - 0x4029DA20, 0xA0015502, 0x00000002, 0x4029DA20, 0xA0015602, 0x00000002, - 0x0029DA84, 0xA0015604, 0x00000002, 0x4029DA20, - // Block 29, offset 0x740 - 0xA0015702, 0x00000002, 0x4029DA20, 0xA0015802, 0x00000002, 0x4029DA20, - 0xA0015902, 0x00000002, 0x4029DA20, 0xA0015A02, 0x00000002, 0x4029DA20, - 0xA0015B02, 0x00000002, 0x4029DA20, 0xA0015C02, 0x00000002, 0x4029DA20, - 0xA0015D02, 0x00000002, 0x4029DA20, 0xA0015E02, 0x00000002, 0x4029DA20, - 0xA0015F02, 0x00000002, 0x4029DA20, 0xA0016002, 0x00000002, 0x4029DA20, - 0xA0016102, 0x00000002, 0x4029DA20, 0xA0016202, 0x00000002, 0x4029DA20, - 0xA0016302, 0x00000002, 0x4029DA20, 0xA0016402, 0x00000002, 0x4029DA20, - 0xA0016502, 0x00000002, 0x4029DA20, 0xA0016602, 0x00000002, 0x4029DA20, - 0xA0016702, 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, - 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, - 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02, - // Block 30, offset 0x780 - 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0016C02, - 0x00000002, 0x4029DA20, 0xA0016C02, 0x00000002, 0x4029DA20, 0xA0017202, - 0x00000002, 0x4029DA20, 0xA0017302, 0x00000002, 0x4029DA20, 0xA0017402, - 0x00000002, 0x4029DA20, 0xA0017502, 0x00000002, 0x4029DA20, 0xA0017702, - 0x00000003, 0x0029DA9E, 0x0009589E, 0x0029DC9E, 0x00000002, 0x0029DA86, - 0x0029CC86, 0x00000002, 0x4029DC20, 0xA0013F02, 0x00000002, 0x4029DC20, - 0xA0014002, 0x00000002, 0x4029DC20, 0xA0014102, 0x00000002, 0x4029DC20, - 0xA0014202, 0x00000002, 0x4029DC20, 0xA0014302, 0x00000002, 0x4029DC20, - 0xA0014402, 0x00000002, 0x4029DC20, 0xA0014502, 0x00000002, 0x4029DC20, - 0xA0014602, 0x00000002, 0x4029DC20, 0xA0014702, 0x00000002, 0x4029DC20, - 0xA0014802, 0x00000002, 0x4029DC20, 0xA0014902, - // Block 31, offset 0x7c0 - 0x00000002, 0x4029DC20, 0xA0014A02, 0x00000002, 0x4029DC20, 0xA0014B02, - 0x00000002, 0x4029DC20, 0xA0014C02, 0x00000002, 0x4029DC20, 0xA0014D02, - 0x00000002, 0x4029DC20, 0xA0014E02, 0x00000002, 0x4029DC20, 0xA0014F02, - 0x00000002, 0x4029DC20, 0xA0015002, 0x00000002, 0x4029DC20, 0xA0015102, - 0x00000002, 0x4029DC20, 0xA0015202, 0x00000002, 0x4029DC20, 0xA0015302, - 0x00000002, 0x4029DC20, 0xA0015402, 0x00000002, 0x4029DC20, 0xA0015502, - 0x00000002, 0x4029DC20, 0xA0015602, 0x00000002, 0x0029DC84, 0xA0015604, - 0x00000002, 0x4029DC20, 0xA0015702, 0x00000002, 0x4029DC20, 0xA0015802, - 0x00000002, 0x4029DC20, 0xA0015902, 0x00000002, 0x4029DC20, 0xA0015A02, - 0x00000002, 0x4029DC20, 0xA0015B02, 0x00000002, 0x4029DC20, 0xA0015C02, - 0x00000002, 0x4029DC20, 0xA0015D02, 0x00000002, - // Block 32, offset 0x800 - 0x4029DC20, 0xA0015E02, 0x00000002, 0x4029DC20, 0xA0015F02, 0x00000002, - 0x4029DC20, 0xA0016002, 0x00000002, 0x4029DC20, 0xA0016102, 0x00000002, - 0x4029DC20, 0xA0016202, 0x00000002, 0x4029DC20, 0xA0016302, 0x00000002, - 0x4029DC20, 0xA0016402, 0x00000002, 0x4029DC20, 0xA0016502, 0x00000002, - 0x4029DC20, 0xA0016602, 0x00000002, 0x4029DC20, 0xA0016702, 0x00000002, - 0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002, - 0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002, - 0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0016C02, 0x00000002, - 0x4029DC20, 0xA0016C02, 0x00000002, 0x4029DC20, 0xA0017202, 0x00000002, - 0x4029DC20, 0xA0017302, 0x00000002, 0x4029DC20, 0xA0017402, 0x00000002, - 0x4029DC20, 0xA0017502, 0x00000002, 0x4029DC20, - // Block 33, offset 0x840 - 0xA0017702, 0x00000002, 0x0029DC86, 0x0029CC86, 0x00000002, 0x4029DE20, - 0xA0013F02, 0x00000002, 0x4029DE20, 0xA0014002, 0x00000002, 0x4029DE20, - 0xA0014102, 0x00000002, 0x4029DE20, 0xA0014202, 0x00000002, 0x4029DE20, - 0xA0014302, 0x00000002, 0x4029DE20, 0xA0014402, 0x00000002, 0x4029DE20, - 0xA0014502, 0x00000002, 0x4029DE20, 0xA0014602, 0x00000002, 0x4029DE20, - 0xA0014702, 0x00000002, 0x4029DE20, 0xA0014802, 0x00000002, 0x4029DE20, - 0xA0014902, 0x00000002, 0x4029DE20, 0xA0014A02, 0x00000002, 0x4029DE20, - 0xA0014B02, 0x00000002, 0x4029DE20, 0xA0014C02, 0x00000002, 0x4029DE20, - 0xA0014D02, 0x00000002, 0x4029DE20, 0xA0014E02, 0x00000002, 0x4029DE20, - 0xA0014F02, 0x00000002, 0x4029DE20, 0xA0015002, 0x00000002, 0x4029DE20, - 0xA0015102, 0x00000002, 0x4029DE20, 0xA0015202, - // Block 34, offset 0x880 - 0x00000002, 0x4029DE20, 0xA0015302, 0x00000002, 0x4029DE20, 0xA0015402, - 0x00000002, 0x4029DE20, 0xA0015502, 0x00000002, 0x4029DE20, 0xA0015602, - 0x00000002, 0x0029DE84, 0xA0015604, 0x00000002, 0x4029DE20, 0xA0015702, - 0x00000002, 0x4029DE20, 0xA0015802, 0x00000002, 0x4029DE20, 0xA0015902, - 0x00000002, 0x4029DE20, 0xA0015A02, 0x00000002, 0x4029DE20, 0xA0015B02, - 0x00000002, 0x4029DE20, 0xA0015C02, 0x00000002, 0x4029DE20, 0xA0015D02, - 0x00000002, 0x4029DE20, 0xA0015E02, 0x00000002, 0x4029DE20, 0xA0015F02, - 0x00000002, 0x4029DE20, 0xA0016002, 0x00000002, 0x4029DE20, 0xA0016102, - 0x00000002, 0x4029DE20, 0xA0016202, 0x00000002, 0x4029DE20, 0xA0016302, - 0x00000002, 0x4029DE20, 0xA0016402, 0x00000002, 0x4029DE20, 0xA0016502, - 0x00000002, 0x4029DE20, 0xA0016602, 0x00000002, - // Block 35, offset 0x8c0 - 0x4029DE20, 0xA0016702, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002, - 0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002, - 0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002, - 0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002, - 0x4029DE20, 0xA0016C02, 0x00000002, 0x4029DE20, 0xA0016C02, 0x00000002, - 0x4029DE20, 0xA0017202, 0x00000002, 0x4029DE20, 0xA0017302, 0x00000002, - 0x4029DE20, 0xA0017402, 0x00000002, 0x4029DE20, 0xA0017502, 0x00000002, - 0x4029DE20, 0xA0017702, 0x00000002, 0x402BDE20, 0xAE603202, 0x00000002, - 0x002BDE88, 0xAE603202, 0x00000002, 0x402BDE20, 0xAE603502, 0x00000002, - 0x002BDE88, 0xAE603502, 0x00000002, 0x402BDE20, 0xAE603702, 0x00000002, - 0x002BDE88, 0xAE603702, 0x00000003, 0x402BDE20, - // Block 36, offset 0x900 - 0xAE603702, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE603702, 0xAE603202, - 0x00000003, 0x402BDE20, 0xAE603702, 0xAE603502, 0x00000003, 0x002BDE88, - 0xAE603702, 0xAE603502, 0x00000003, 0x402BDE20, 0xAE603702, 0xAE604E02, - 0x00000003, 0x002BDE88, 0xAE603702, 0xAE604E02, 0x00000003, 0x402BDE20, - 0xAE603702, 0xAE606402, 0x00000003, 0x002BDE88, 0xAE603702, 0xAE606402, - 0x00000002, 0x402BDE20, 0xAE603C02, 0x00000002, 0x002BDE88, 0xAE603C02, - 0x00000003, 0x402BDE20, 0xAE603C02, 0xAE603202, 0x00000003, 0x002BDE88, - 0xAE603C02, 0xAE603202, 0x00000003, 0x402BDE20, 0xAE603C02, 0xAE603502, - 0x00000003, 0x002BDE88, 0xAE603C02, 0xAE603502, 0x00000003, 0x402BDE20, - 0xAE603C02, 0xAE604E02, 0x00000003, 0x002BDE88, 0xAE603C02, 0xAE604E02, - 0x00000003, 0x402BDE20, 0xAE603C02, 0xAE606402, - // Block 37, offset 0x940 - 0x00000003, 0x002BDE88, 0xAE603C02, 0xAE606402, 0x00000002, 0x402BDE20, - 0xAE604102, 0x00000002, 0x002BDE88, 0xAE604102, 0x00000002, 0x402BDE20, - 0xAE604302, 0x00000002, 0x002BDE88, 0xAE604302, 0x00000003, 0x402BDE20, - 0xAE604302, 0xAE603202, 0x00000003, 0x002BDE88, 0xAE604302, 0xAE603202, - 0x00000002, 0x402BDE20, 0xAE604702, 0x00000002, 0x002BDE88, 0xAE604702, - 0x00000003, 0x402BDE20, 0xAE604702, 0xAE605B02, 0x00000003, 0x002BDE88, - 0xAE604702, 0xAE605B02, 0x00000002, 0x402BDE20, 0xAE604E02, 0x00000002, - 0x002BDE88, 0xAE604E02, 0x00000002, 0x402BDE20, 0xAE605202, 0x00000002, - 0x002BDE88, 0xAE605202, 0x00000003, 0x402BDE20, 0xAE605202, 0xAE605B02, - 0x00000003, 0x002BDE88, 0xAE605202, 0xAE605B02, 0x00000002, 0x402BDE20, - 0xACA05902, 0x00000002, 0x002BDE88, 0xACA05902, - // Block 38, offset 0x980 - 0x00000002, 0x402BDE20, 0xAE605B02, 0x00000002, 0x002BDE88, 0xAE605B02, - 0x00000002, 0x402BDE20, 0xAE606402, 0x00000002, 0x002BDE88, 0xAE606402, - 0x00000002, 0x402BDE20, 0xAE606502, 0x00000002, 0x002BDE88, 0xAE606502, - 0x00000002, 0x402BDE20, 0xAE606702, 0x00000002, 0x002BDE88, 0xAE606702, - 0x00000002, 0x402BDE20, 0xADC07002, 0x00000002, 0x002BDE88, 0xADC07002, - 0x00000003, 0x402BDE20, 0xADC07002, 0xAE603702, 0x00000003, 0x002BDE88, - 0xADC07002, 0xAE603702, 0x00000003, 0x402BDE20, 0xADC07002, 0xAE603C02, - 0x00000003, 0x002BDE88, 0xADC07002, 0xAE603C02, 0x00000002, 0x402BDE20, - 0xADC07602, 0x00000002, 0x002BDE88, 0xADC07602, 0x00000002, 0x84E615EF, - 0xAE613904, 0x00000004, 0x002BDE9C, 0x0002E49C, 0x002E829C, 0x0002E49C, - 0x00000003, 0x002BDE84, 0x0004E284, 0x002C3A84, - // Block 39, offset 0x9c0 - 0x00000003, 0x002BDE84, 0x0004E284, 0x002FE684, 0x00000003, 0x002BDE8A, - 0x0004E284, 0x002FE68A, 0x00000003, 0x002BDE9D, 0x0009569C, 0x002E829C, - 0x00000002, 0x002BDE84, 0x002BDE84, 0x00000002, 0x002BDE8A, 0x002BDE8A, - 0x00000002, 0x002BDE9D, 0x002C0A9D, 0x00000003, 0x002BDE84, 0xA0013904, - 0x002C9884, 0x00000003, 0x84E615EF, 0xAE613904, 0x84E6164C, 0x00000003, - 0x002BDE8A, 0xA0013904, 0x002C988A, 0x00000003, 0x002BDE94, 0xA0013914, - 0x002C9894, 0x00000004, 0x002BDE84, 0xA0013904, 0x002C9884, 0xAE603202, - 0x00000004, 0x002BDE8A, 0xA0013904, 0x002C988A, 0xAE603202, 0x00000004, - 0x002BDE84, 0xA0013904, 0x002C9884, 0xAE605B02, 0x00000004, 0x002BDE8A, - 0xA0013904, 0x002C988A, 0xAE605B02, 0x00000002, 0x84E615EF, 0x84E61771, - 0x00000002, 0x002BDE84, 0x002EE284, 0x00000002, - // Block 40, offset 0xa00 - 0x002BDE8A, 0x002EE28A, 0x00000002, 0x002BDE84, 0x00306C84, 0x00000002, - 0x002BDE8A, 0x00306C8A, 0x00000002, 0x84E615EF, 0x84E6185F, 0x00000002, - 0x002BDE84, 0x0030BE84, 0x00000002, 0x002BDE8A, 0x0030BE8A, 0x00000003, - 0x002BDE84, 0xA0013904, 0x0030BE84, 0x00000003, 0x002BDE8A, 0xA0013904, - 0x0030BE8A, 0x00000002, 0x002BDE84, 0x00310084, 0x00000002, 0x002BDE8A, - 0x0031008A, 0x00000002, 0x402C0A20, 0xAE605202, 0x00000002, 0x002C0A88, - 0xAE605202, 0x00000002, 0x402C0A20, 0xADC07002, 0x00000002, 0x002C0A88, - 0xADC07002, 0x00000002, 0x402C0A20, 0xADC07B02, 0x00000002, 0x002C0A88, - 0xADC07B02, 0x00000003, 0x002C0A9C, 0x002BDE9C, 0x002F7A9C, 0x00000002, - 0x402C3A20, 0xAE603202, 0x00000002, 0x002C3A88, 0xAE603202, 0x00000002, - 0x402C3A20, 0xAE603C02, 0x00000002, 0x002C3A88, - // Block 41, offset 0xa40 - 0xAE603C02, 0x00000002, 0x402C3A20, 0xAE604102, 0x00000002, 0x002C3A88, - 0xAE604102, 0x00000002, 0x402C3A20, 0xAE605202, 0x00000002, 0x002C3A88, - 0xAE605202, 0x00000002, 0x402C3A20, 0xACA05602, 0x00000002, 0x84E6161D, - 0xAE605604, 0x00000002, 0x002C3A88, 0xACA05602, 0x00000003, 0x402C3A20, - 0xACA05602, 0xAE603202, 0x00000003, 0x002C3A88, 0xACA05602, 0xAE603202, - 0x00000003, 0x002C3A84, 0x0004E284, 0x002EE284, 0x00000003, 0x002C3A84, - 0x0004E284, 0x00306C84, 0x00000004, 0x002C3A9D, 0x0009569C, 0x002DFE9C, - 0x002D229C, 0x00000003, 0x002C3A9C, 0x002BDE9C, 0x002E229C, 0x00000002, - 0x002C3A9D, 0x002E229D, 0x00000003, 0x002C3A9C, 0x002E829C, 0x0029D09C, - 0x00000003, 0x002C3A9C, 0x002E829C, 0x0029D29C, 0x00000003, 0x002C3A9D, - 0x002EE29C, 0x0002E49C, 0x00000004, 0x002C3A9D, - // Block 42, offset 0xa80 - 0x002EE29D, 0x002EE29D, 0x002E229D, 0x00000002, 0x402C6220, 0xAE604102, - 0x00000002, 0x002C6288, 0xAE604102, 0x00000002, 0x402C6220, 0xAE605202, - 0x00000002, 0x002C6288, 0xAE605202, 0x00000002, 0x402C6220, 0xACA05602, - 0x00000002, 0x002C6288, 0xACA05602, 0x00000002, 0x402C6220, 0xADC07002, - 0x00000002, 0x002C6288, 0xADC07002, 0x00000002, 0x402C6220, 0xADC07802, - 0x00000002, 0x002C6288, 0xADC07802, 0x00000002, 0x402C6220, 0xADC07B02, - 0x00000002, 0x002C6288, 0xADC07B02, 0x00000002, 0x402C6220, 0xA0007D02, - 0x00000002, 0x002C6288, 0xA0007D02, 0x00000002, 0x002C6284, 0xA0013904, - 0x00000002, 0x84E61631, 0xAE613904, 0x00000002, 0x002C628A, 0xA0013904, - 0x00000002, 0x84E61631, 0xAE613A04, 0x00000002, 0x002C6284, 0xA0013A04, - 0x00000002, 0x002C628A, 0xA0013A04, 0x00000002, - // Block 43, offset 0xac0 - 0x002C6284, 0x002C0A84, 0x00000003, 0x002C629C, 0x002E829C, 0x0029D09C, - 0x00000003, 0x002C629C, 0x002E829C, 0x0029D29C, 0x00000002, 0x002C6284, - 0x00312A84, 0x00000003, 0x002C6284, 0x00312A84, 0xA0004104, 0x00000003, - 0x002C628A, 0x00312A84, 0xA0004104, 0x00000003, 0x002C628A, 0x00312A8A, - 0xA0004104, 0x00000002, 0x002C6284, 0x00315084, 0x00000002, 0x002C6284, - 0x00316484, 0x00000002, 0x402C9820, 0xAE603202, 0x00000002, 0x002C9888, - 0xAE603202, 0x00000002, 0x402C9820, 0xAE603502, 0x00000002, 0x002C9888, - 0xAE603502, 0x00000002, 0x402C9820, 0xAE603702, 0x00000002, 0x002C9888, - 0xAE603702, 0x00000002, 0x402C9820, 0xAE603C02, 0x00000002, 0x002C9888, - 0xAE603C02, 0x00000003, 0x402C9820, 0xAE603C02, 0xAE603202, 0x00000003, - 0x002C9888, 0xAE603C02, 0xAE603202, 0x00000003, - // Block 44, offset 0xb00 - 0x402C9820, 0xAE603C02, 0xAE603502, 0x00000003, 0x002C9888, 0xAE603C02, - 0xAE603502, 0x00000003, 0x402C9820, 0xAE603C02, 0xAE604E02, 0x00000003, - 0x002C9888, 0xAE603C02, 0xAE604E02, 0x00000003, 0x402C9820, 0xAE603C02, - 0xAE606402, 0x00000003, 0x002C9888, 0xAE603C02, 0xAE606402, 0x00000002, - 0x402C9820, 0xAE604102, 0x00000002, 0x002C9888, 0xAE604102, 0x00000002, - 0x402C9820, 0xAE604702, 0x00000002, 0x002C9888, 0xAE604702, 0x00000002, - 0x402C9820, 0xAE604E02, 0x00000002, 0x002C9888, 0xAE604E02, 0x00000002, - 0x402C9820, 0xAE605202, 0x00000002, 0x002C9888, 0xAE605202, 0x00000002, - 0x402C9820, 0xACA05602, 0x00000002, 0x002C9888, 0xACA05602, 0x00000003, - 0x402C9820, 0xACA05602, 0xAE603702, 0x00000003, 0x002C9888, 0xACA05602, - 0xAE603702, 0x00000002, 0x402C9820, 0xACA05902, - // Block 45, offset 0xb40 - 0x00000002, 0x002C9888, 0xACA05902, 0x00000002, 0x402C9820, 0xAE605B02, - 0x00000002, 0x002C9888, 0xAE605B02, 0x00000003, 0x402C9820, 0xAE605B02, - 0xAE603202, 0x00000003, 0x002C9888, 0xAE605B02, 0xAE603202, 0x00000003, - 0x402C9820, 0xAE605B02, 0xAE603502, 0x00000003, 0x002C9888, 0xAE605B02, - 0xAE603502, 0x00000002, 0x402C9820, 0xAE606402, 0x00000002, 0x002C9888, - 0xAE606402, 0x00000002, 0x402C9820, 0xAE606502, 0x00000002, 0x002C9888, - 0xAE606502, 0x00000002, 0x402C9820, 0xAE606702, 0x00000002, 0x002C9888, - 0xAE606702, 0x00000002, 0x402C9820, 0xADC07002, 0x00000002, 0x002C9888, - 0xADC07002, 0x00000003, 0x402C9820, 0xADC07002, 0xAE603C02, 0x00000003, - 0x002C9888, 0xADC07002, 0xAE603C02, 0x00000002, 0x402C9820, 0xADC07802, - 0x00000002, 0x002C9888, 0xADC07802, 0x00000002, - // Block 46, offset 0xb80 - 0x402C9820, 0xADC07A02, 0x00000002, 0x002C9888, 0xADC07A02, 0x00000003, - 0x002C989C, 0x002F7A9C, 0x002D229C, 0x00000002, 0x402D0820, 0xAE605202, - 0x00000002, 0x002D0888, 0xAE605202, 0x00000002, 0x002D0884, 0xA0013A04, - 0x00000002, 0x002D088A, 0xA0013A04, 0x00000003, 0x002D088A, 0x002BDE8A, - 0x0030F68A, 0x00000003, 0x002D0884, 0x002D0884, 0x002D9A84, 0x00000003, - 0x002D0884, 0x002D0884, 0x002E2284, 0x00000002, 0x002D0884, 0x002EDA84, - 0x00000004, 0x002D089D, 0x002F7A9D, 0x002C989D, 0x002C989D, 0x00000002, - 0x402D2220, 0xAE603202, 0x00000002, 0x002D2288, 0xAE603202, 0x00000002, - 0x402D2220, 0xAE603702, 0x00000002, 0x002D2288, 0xAE603702, 0x00000002, - 0x402D2220, 0xAE603C02, 0x00000002, 0x002D2288, 0xAE603C02, 0x00000002, - 0x402D2220, 0xAE604102, 0x00000002, 0x002D2288, - // Block 47, offset 0xbc0 - 0xAE604102, 0x00000002, 0x402D2220, 0xAE605202, 0x00000002, 0x002D2288, - 0xAE605202, 0x00000002, 0x402D2220, 0xACA05602, 0x00000002, 0x002D2288, - 0xACA05602, 0x00000002, 0x402D2220, 0xAE605B02, 0x00000002, 0x002D2288, - 0xAE605B02, 0x00000002, 0x002D2284, 0xA0006104, 0x00000002, 0x002D228A, - 0xA0006104, 0x00000002, 0x002D2284, 0xA0013A04, 0x00000002, 0x002D228A, - 0xA0013A04, 0x00000003, 0x002D229C, 0x002BDE9C, 0x002E229C, 0x00000003, - 0x002D229D, 0x002D689D, 0x00312A9C, 0x00000003, 0x002D229D, 0x002F2C9D, - 0x002BDE9C, 0x00000002, 0x402D6820, 0xAE603C02, 0x00000002, 0x002D6888, - 0xAE603C02, 0x00000002, 0x402D6820, 0xAE604102, 0x00000002, 0x002D6888, - 0xAE604102, 0x00000002, 0x402D6820, 0xAE604702, 0x00000002, 0x002D6888, - 0xAE604702, 0x00000002, 0x402D6820, 0xAE605202, - // Block 48, offset 0xc00 - 0x00000002, 0x002D6888, 0xAE605202, 0x00000002, 0x402D6820, 0xACA05602, - 0x00000002, 0x002D6888, 0xACA05602, 0x00000002, 0x402D6820, 0xADC07002, - 0x00000002, 0x002D6888, 0xADC07002, 0x00000002, 0x402D6820, 0xADC07902, - 0x00000002, 0x002D6888, 0xADC07902, 0x00000002, 0x402D6820, 0xADC07B02, - 0x00000002, 0x402D6820, 0xA0007D02, 0x00000002, 0x002D6888, 0xA0007D02, - 0x00000003, 0x002D689C, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402D9A20, - 0xAE603202, 0x00000002, 0x002D9A88, 0xAE603202, 0x00000002, 0x402D9A20, - 0xAE603502, 0x00000002, 0x002D9A88, 0xAE603502, 0x00000002, 0x402D9A20, - 0xAE603702, 0x00000002, 0x002D9A88, 0xAE603702, 0x00000002, 0x402D9A20, - 0xAE603C02, 0x00000002, 0x002D9A88, 0xAE603C02, 0x00000002, 0x402D9A20, - 0xAE604102, 0x00000002, 0x002D9A88, 0xAE604102, - // Block 49, offset 0xc40 - 0x00000002, 0x402D9A20, 0xAE604702, 0x00000002, 0x002D9A88, 0xAE604702, - 0x00000003, 0x402D9A20, 0xAE604702, 0xAE603202, 0x00000003, 0x002D9A88, - 0xAE604702, 0xAE603202, 0x00000002, 0x402D9A20, 0xAE604E02, 0x00000002, - 0x002D9A88, 0xAE604E02, 0x00000002, 0x002D9A88, 0xAE605202, 0x00000002, - 0x402D9A20, 0xACA05902, 0x00000002, 0x002D9A88, 0xACA05902, 0x00000002, - 0x402D9A20, 0xAE605B02, 0x00000002, 0x002D9A88, 0xAE605B02, 0x00000002, - 0x402D9A20, 0xAE606402, 0x00000002, 0x002D9A88, 0xAE606402, 0x00000002, - 0x402D9A20, 0xAE606502, 0x00000002, 0x002D9A88, 0xAE606502, 0x00000002, - 0x402D9A20, 0xAE606702, 0x00000002, 0x002D9A88, 0xAE606702, 0x00000002, - 0x402D9A20, 0xADC07002, 0x00000002, 0x002D9A88, 0xADC07002, 0x00000002, - 0x402D9A20, 0xADC07A02, 0x00000002, 0x002D9A88, - // Block 50, offset 0xc80 - 0xADC07A02, 0x00000002, 0x002D9A9D, 0x002C3A9D, 0x00000002, 0x002D9A9D, - 0x002C629D, 0x00000002, 0x402DCC20, 0xAE603C02, 0x00000002, 0x002DCC88, - 0xAE603C02, 0x00000002, 0x402DCC20, 0xAE604102, 0x00000002, 0x402DFE20, - 0xAE603202, 0x00000002, 0x002DFE88, 0xAE603202, 0x00000002, 0x402DFE20, - 0xAE604102, 0x00000002, 0x002DFE88, 0xAE604102, 0x00000002, 0x402DFE20, - 0xACA05602, 0x00000002, 0x002DFE88, 0xACA05602, 0x00000002, 0x002DFE84, - 0xA0006104, 0x00000002, 0x002DFE8A, 0xA0006104, 0x00000002, 0x402DFE20, - 0xADC07002, 0x00000002, 0x002DFE88, 0xADC07002, 0x00000002, 0x402DFE20, - 0xADC07B02, 0x00000002, 0x002DFE88, 0xADC07B02, 0x00000004, 0x002DFE9C, - 0x002C3A9C, 0x002BDE9C, 0x002E229C, 0x00000003, 0x002DFE9C, 0x002D689D, - 0x00312A9C, 0x00000003, 0x002DFE9C, 0x002E829C, - // Block 51, offset 0xcc0 - 0x0029D09C, 0x00000003, 0x002DFE9C, 0x002E829C, 0x0029D29C, 0x00000003, - 0x002DFE9C, 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402E2220, 0xAE603202, - 0x00000002, 0x002E2288, 0xAE603202, 0x00000002, 0x402E2220, 0xAE604102, - 0x00000002, 0x002E2288, 0xAE604102, 0x00000002, 0x402E2220, 0xACA05602, - 0x00000002, 0x002E2288, 0xACA05602, 0x00000002, 0x402E2220, 0xADC07002, - 0x00000002, 0x002E2288, 0xADC07002, 0x00000003, 0x402E2220, 0xADC07002, - 0xAE605B02, 0x00000003, 0x002E2288, 0xADC07002, 0xAE605B02, 0x00000002, - 0x402E2220, 0xADC07802, 0x00000002, 0x002E2288, 0xADC07802, 0x00000002, - 0x402E2220, 0xADC07B02, 0x00000002, 0x002E2288, 0xADC07B02, 0x00000002, - 0x402E2220, 0xA0007D02, 0x00000002, 0x002E2288, 0xA0007D02, 0x00000002, - 0x402E2220, 0xA0013902, 0x00000002, 0x402E2220, - // Block 52, offset 0xd00 - 0xA0013902, 0x00000002, 0x002E2288, 0xA0013902, 0x00000002, 0x002E2288, - 0xA0013902, 0x00000002, 0x002E2284, 0x002E2284, 0x00000002, 0x002E228A, - 0x002E228A, 0x00000003, 0x002E229C, 0x002EE29C, 0x002D229C, 0x00000002, - 0x002E2284, 0x002FE684, 0x00000003, 0x002E229D, 0x00302C9D, 0x002C629D, - 0x00000002, 0x002E2284, 0x00312A84, 0x00000002, 0x402E8220, 0xAE603202, - 0x00000002, 0x002E8288, 0xAE603202, 0x00000002, 0x402E8220, 0xAE605202, - 0x00000002, 0x002E8288, 0xAE605202, 0x00000002, 0x402E8220, 0xADC07002, - 0x00000002, 0x002E8288, 0xADC07002, 0x00000003, 0x002E829C, 0x0009569C, - 0x002FE69C, 0x00000004, 0x002E829C, 0x0009569C, 0x002FE69C, 0x0029D09C, - 0x00000003, 0x002E829D, 0x002D689D, 0x00312A9C, 0x00000003, 0x002E829C, - 0x002D9A9C, 0x002E229C, 0x00000003, 0x002E829C, - // Block 53, offset 0xd40 - 0x002E829C, 0x0029D09C, 0x00000003, 0x002E829C, 0x002E829C, 0x0029D29C, - 0x00000003, 0x002E829C, 0x002EE29C, 0x002E229C, 0x00000003, 0x002E829D, - 0x002F2C9D, 0x002BDE9C, 0x00000002, 0x402E9E20, 0xAE603202, 0x00000002, - 0x002E9E88, 0xAE603202, 0x00000002, 0x402E9E20, 0xAE603502, 0x00000002, - 0x002E9E88, 0xAE603502, 0x00000002, 0x402E9E20, 0xAE604102, 0x00000002, - 0x002E9E88, 0xAE604102, 0x00000002, 0x402E9E20, 0xAE604E02, 0x00000002, - 0x002E9E88, 0xAE604E02, 0x00000002, 0x402E9E20, 0xAE605202, 0x00000002, - 0x002E9E88, 0xAE605202, 0x00000002, 0x402E9E20, 0xACA05602, 0x00000002, - 0x002E9E88, 0xACA05602, 0x00000002, 0x002E9E84, 0xA0006104, 0x00000002, - 0x002E9E8A, 0xA0006104, 0x00000002, 0x402E9E20, 0xADC07002, 0x00000002, - 0x002E9E88, 0xADC07002, 0x00000002, 0x402E9E20, - // Block 54, offset 0xd80 - 0xADC07802, 0x00000002, 0x002E9E88, 0xADC07802, 0x00000002, 0x402E9E20, - 0xADC07B02, 0x00000002, 0x002E9E88, 0xADC07B02, 0x00000003, 0x002E9E9D, - 0x002C989D, 0x0030E29D, 0x00000002, 0x002E9E9D, 0x002D229D, 0x00000002, - 0x402EE220, 0xAE603202, 0x00000002, 0x002EE288, 0xAE603202, 0x00000002, - 0x402EE220, 0xAE603502, 0x00000002, 0x002EE288, 0xAE603502, 0x00000002, - 0x402EE220, 0xAE603702, 0x00000002, 0x002EE288, 0xAE603702, 0x00000002, - 0x402EE220, 0xAE603C02, 0x00000002, 0x002EE288, 0xAE603C02, 0x00000003, - 0x402EE220, 0xAE603C02, 0xAE603202, 0x00000003, 0x002EE288, 0xAE603C02, - 0xAE603202, 0x00000003, 0x402EE220, 0xAE603C02, 0xAE603502, 0x00000003, - 0x002EE288, 0xAE603C02, 0xAE603502, 0x00000003, 0x402EE220, 0xAE603C02, - 0xAE604E02, 0x00000003, 0x002EE288, 0xAE603C02, - // Block 55, offset 0xdc0 - 0xAE604E02, 0x00000003, 0x402EE220, 0xAE603C02, 0xAE606402, 0x00000003, - 0x002EE288, 0xAE603C02, 0xAE606402, 0x00000002, 0x402EE220, 0xAE604102, - 0x00000002, 0x002EE288, 0xAE604102, 0x00000002, 0x402EE220, 0xAE604702, - 0x00000002, 0x002EE288, 0xAE604702, 0x00000003, 0x402EE220, 0xAE604702, - 0xAE605B02, 0x00000003, 0x002EE288, 0xAE604702, 0xAE605B02, 0x00000002, - 0x402EE220, 0xAE604D02, 0x00000002, 0x002EE288, 0xAE604D02, 0x00000002, - 0x402EE220, 0xAE604E02, 0x00000002, 0x002EE288, 0xAE604E02, 0x00000003, - 0x402EE220, 0xAE604E02, 0xAE603202, 0x00000003, 0x002EE288, 0xAE604E02, - 0xAE603202, 0x00000003, 0x402EE220, 0xAE604E02, 0xAE604702, 0x00000003, - 0x002EE288, 0xAE604E02, 0xAE604702, 0x00000003, 0x402EE220, 0xAE604E02, - 0xAE605B02, 0x00000003, 0x002EE288, 0xAE604E02, - // Block 56, offset 0xe00 - 0xAE605B02, 0x00000002, 0x402EE220, 0xAE605202, 0x00000002, 0x002EE288, - 0xAE605202, 0x00000003, 0x402EE220, 0xAE605202, 0xAE605B02, 0x00000003, - 0x002EE288, 0xAE605202, 0xAE605B02, 0x00000002, 0x402EE220, 0xA0005402, - 0x00000002, 0x002EE288, 0xA0005402, 0x00000003, 0x402EE220, 0xA0005402, - 0xAE603202, 0x00000003, 0x002EE288, 0xA0005402, 0xAE603202, 0x00000002, - 0x402EE220, 0xACA05902, 0x00000002, 0x002EE288, 0xACA05902, 0x00000003, - 0x402EE220, 0xACA05902, 0xAE605B02, 0x00000003, 0x002EE288, 0xACA05902, - 0xAE605B02, 0x00000002, 0x402EE220, 0xAE605B02, 0x00000002, 0x002EE288, - 0xAE605B02, 0x00000003, 0x402EE220, 0xAE605B02, 0xAE603202, 0x00000003, - 0x002EE288, 0xAE605B02, 0xAE603202, 0x00000003, 0x402EE220, 0xAE605B02, - 0xAE603502, 0x00000003, 0x002EE288, 0xAE605B02, - // Block 57, offset 0xe40 - 0xAE603502, 0x00000002, 0x402EE220, 0xAE606402, 0x00000002, 0x002EE288, - 0xAE606402, 0x00000002, 0x402EE220, 0xAE606502, 0x00000002, 0x002EE288, - 0xAE606502, 0x00000002, 0x402EE220, 0xAE606702, 0x00000002, 0x002EE288, - 0xAE606702, 0x00000002, 0x402EE220, 0xAD806802, 0x00000002, 0x002EE288, - 0xAD806802, 0x00000003, 0x402EE220, 0xAD806802, 0xAE603202, 0x00000003, - 0x002EE288, 0xAD806802, 0xAE603202, 0x00000003, 0x402EE220, 0xAD806802, - 0xAE603502, 0x00000003, 0x002EE288, 0xAD806802, 0xAE603502, 0x00000003, - 0x402EE220, 0xAD806802, 0xAE604E02, 0x00000003, 0x002EE288, 0xAD806802, - 0xAE604E02, 0x00000003, 0x402EE220, 0xAD806802, 0xAE606402, 0x00000003, - 0x002EE288, 0xAD806802, 0xAE606402, 0x00000003, 0x402EE220, 0xAD806802, - 0xADC07002, 0x00000003, 0x002EE288, 0xAD806802, - // Block 58, offset 0xe80 - 0xADC07002, 0x00000002, 0x402EE220, 0xADC07002, 0x00000002, 0x002EE288, - 0xADC07002, 0x00000003, 0x402EE220, 0xADC07002, 0xAE603C02, 0x00000003, - 0x002EE288, 0xADC07002, 0xAE603C02, 0x00000003, 0x002EE284, 0xA0013904, - 0x002C9884, 0x00000003, 0x002EE28A, 0xA0013904, 0x002C988A, 0x00000003, - 0x002EE294, 0xA0013914, 0x002C9894, 0x00000002, 0x002EE29D, 0x002DFE9D, - 0x00000002, 0x002EE284, 0x002EE284, 0x00000002, 0x002EE28A, 0x002EE28A, - 0x00000002, 0x402F2C20, 0xAE603202, 0x00000002, 0x002F2C88, 0xAE603202, - 0x00000002, 0x402F2C20, 0xAE605202, 0x00000002, 0x002F2C88, 0xAE605202, - 0x00000004, 0x002F2C9C, 0x0002E49C, 0x002E829C, 0x0002E49C, 0x00000002, - 0x002F2C9D, 0x002BDE9D, 0x00000003, 0x002F2C9D, 0x002F2C9D, 0x002E829D, - 0x00000003, 0x002F2C9D, 0x002F2C9D, 0x0030BE9D, - // Block 59, offset 0xec0 - 0x00000003, 0x002F2C9D, 0x00302C9D, 0x002C989D, 0x00000002, 0x002F5684, - 0x002F2C84, 0x00000002, 0x402F7A20, 0xAE603202, 0x00000002, 0x002F7A88, - 0xAE603202, 0x00000002, 0x402F7A20, 0xAE604102, 0x00000002, 0x002F7A88, - 0xAE604102, 0x00000002, 0x402F7A20, 0xAE605202, 0x00000002, 0x002F7A88, - 0xAE605202, 0x00000002, 0x402F7A20, 0xACA05602, 0x00000002, 0x002F7A88, - 0xACA05602, 0x00000002, 0x002F7A84, 0xA0006104, 0x00000002, 0x002F7A8A, - 0xA0006104, 0x00000002, 0x402F7A20, 0xAE606502, 0x00000002, 0x002F7A88, - 0xAE606502, 0x00000002, 0x402F7A20, 0xAE606702, 0x00000002, 0x002F7A88, - 0xAE606702, 0x00000002, 0x402F7A20, 0xADC07002, 0x00000002, 0x002F7A88, - 0xADC07002, 0x00000003, 0x402F7A20, 0xADC07002, 0xAE605B02, 0x00000003, - 0x002F7A88, 0xADC07002, 0xAE605B02, 0x00000002, - // Block 60, offset 0xf00 - 0x402F7A20, 0xADC07B02, 0x00000002, 0x002F7A88, 0xADC07B02, 0x00000002, - 0x002F7A84, 0xA0013A04, 0x00000002, 0x002F7A8A, 0xA0013A04, 0x00000003, - 0x002F7A9C, 0x002BDE9C, 0x002C629C, 0x00000005, 0x002F7A9C, 0x002BDE9C, - 0x002C629C, 0x0009569C, 0x002FE69C, 0x00000006, 0x002F7A9C, 0x002BDE9C, - 0x002C629C, 0x0009569C, 0x002FE69C, 0x0029D09C, 0x00000002, 0x402FE620, - 0xAE603202, 0x00000002, 0x002FE688, 0xAE603202, 0x00000003, 0x402FE620, - 0xAE603202, 0xAE605202, 0x00000003, 0x002FE688, 0xAE603202, 0xAE605202, - 0x00000002, 0x402FE620, 0xAE603C02, 0x00000002, 0x002FE688, 0xAE603C02, - 0x00000002, 0x402FE620, 0xAE604102, 0x00000002, 0x002FE688, 0xAE604102, - 0x00000003, 0x402FE620, 0xAE604102, 0xAE605202, 0x00000003, 0x002FE688, - 0xAE604102, 0xAE605202, 0x00000002, 0x402FE620, - // Block 61, offset 0xf40 - 0xAE605202, 0x00000002, 0x002FE688, 0xAE605202, 0x00000002, 0x402FE620, - 0xACA05602, 0x00000002, 0x002FE688, 0xACA05602, 0x00000002, 0x002FE684, - 0xA0006104, 0x00000002, 0x002FE68A, 0xA0006104, 0x00000002, 0x402FE620, - 0xADC07002, 0x00000002, 0x002FE688, 0xADC07002, 0x00000003, 0x402FE620, - 0xADC07002, 0xAE605202, 0x00000003, 0x002FE688, 0xADC07002, 0xAE605202, - 0x00000002, 0x402FE620, 0xADC07702, 0x00000002, 0x002FE688, 0xADC07702, - 0x00000002, 0x002FE684, 0xA0013A04, 0x00000002, 0x84E617F3, 0xAE613A04, - 0x00000002, 0x002FE684, 0xA0013A04, 0x00000002, 0x002FE68A, 0xA0013A04, - 0x00000003, 0x002FE684, 0xA0013A04, 0xAE605202, 0x00000002, 0x002FE69D, - 0x002BDE9D, 0x00000003, 0x002FE69D, 0x002EE29D, 0x002FE69D, 0x00000003, - 0x002FE684, 0xA0013904, 0x002FE684, 0x00000003, - // Block 62, offset 0xf80 - 0x002FE68A, 0xA0013904, 0x002FE68A, 0x00000003, 0x002FE684, 0xA0013A04, - 0x00302C84, 0x00000002, 0x40302C20, 0xAE604102, 0x00000002, 0x00302C88, - 0xAE604102, 0x00000002, 0x40302C20, 0xAE604702, 0x00000002, 0x40302C20, - 0xAE605202, 0x00000002, 0x00302C88, 0xAE605202, 0x00000002, 0x40302C20, - 0xACA05602, 0x00000002, 0x00302C88, 0xACA05602, 0x00000002, 0x40302C20, - 0xADC07002, 0x00000002, 0x00302C88, 0xADC07002, 0x00000002, 0x40302C20, - 0xADC07702, 0x00000002, 0x00302C88, 0xADC07702, 0x00000002, 0x40302C20, - 0xADC07802, 0x00000002, 0x00302C88, 0xADC07802, 0x00000002, 0x40302C20, - 0xADC07B02, 0x00000002, 0x00302C88, 0xADC07B02, 0x00000002, 0x00302C84, - 0xA0013A04, 0x00000002, 0x00302C8A, 0xA0013A04, 0x00000002, 0x00302C84, - 0x002C5684, 0x00000003, 0x00302C8A, 0x002C988A, - // Block 63, offset 0xfc0 - 0x002E228A, 0x00000003, 0x00302C84, 0xA0013904, 0x002D6884, 0x00000003, - 0x00302C9D, 0x002D689D, 0x00312A9C, 0x00000002, 0x00302C84, 0x002FE684, - 0x00000002, 0x00302C84, 0x002FE684, 0x00000002, 0x00302C84, 0x00300884, - 0x00000002, 0x00302C84, 0x00312A84, 0x00000002, 0x00302C8A, 0x00312A84, - 0x00000002, 0x40306C20, 0xAE603202, 0x00000002, 0x00306C88, 0xAE603202, - 0x00000002, 0x40306C20, 0xAE603502, 0x00000002, 0x00306C88, 0xAE603502, - 0x00000002, 0x40306C20, 0xAE603702, 0x00000002, 0x00306C88, 0xAE603702, - 0x00000002, 0x40306C20, 0xAE603C02, 0x00000002, 0x00306C88, 0xAE603C02, - 0x00000002, 0x40306C20, 0xAE604102, 0x00000002, 0x00306C88, 0xAE604102, - 0x00000002, 0x40306C20, 0xAE604302, 0x00000002, 0x00306C88, 0xAE604302, - 0x00000002, 0x40306C20, 0xAE604702, 0x00000002, - // Block 64, offset 0x1000 - 0x00306C88, 0xAE604702, 0x00000003, 0x40306C20, 0xAE604702, 0xAE603202, - 0x00000003, 0x00306C88, 0xAE604702, 0xAE603202, 0x00000003, 0x40306C20, - 0xAE604702, 0xAE603502, 0x00000003, 0x00306C88, 0xAE604702, 0xAE603502, - 0x00000003, 0x40306C20, 0xAE604702, 0xAE604102, 0x00000003, 0x00306C88, - 0xAE604702, 0xAE604102, 0x00000003, 0x40306C20, 0xAE604702, 0xAE605B02, - 0x00000003, 0x00306C88, 0xAE604702, 0xAE605B02, 0x00000002, 0x40306C20, - 0xAE604D02, 0x00000002, 0x00306C88, 0xAE604D02, 0x00000002, 0x40306C20, - 0xAE604E02, 0x00000002, 0x00306C88, 0xAE604E02, 0x00000003, 0x40306C20, - 0xAE604E02, 0xAE603202, 0x00000003, 0x00306C88, 0xAE604E02, 0xAE603202, - 0x00000002, 0x40306C20, 0xACA05902, 0x00000002, 0x00306C88, 0xACA05902, - 0x00000002, 0x40306C20, 0xAE605B02, 0x00000002, - // Block 65, offset 0x1040 - 0x00306C88, 0xAE605B02, 0x00000003, 0x40306C20, 0xAE605B02, 0xAE604702, - 0x00000003, 0x00306C88, 0xAE605B02, 0xAE604702, 0x00000002, 0x40306C20, - 0xAE606402, 0x00000002, 0x00306C88, 0xAE606402, 0x00000002, 0x40306C20, - 0xAE606502, 0x00000002, 0x00306C88, 0xAE606502, 0x00000002, 0x40306C20, - 0xAE606702, 0x00000002, 0x00306C88, 0xAE606702, 0x00000002, 0x40306C20, - 0xAD806802, 0x00000002, 0x00306C88, 0xAD806802, 0x00000003, 0x40306C20, - 0xAD806802, 0xAE603202, 0x00000003, 0x00306C88, 0xAD806802, 0xAE603202, - 0x00000003, 0x40306C20, 0xAD806802, 0xAE603502, 0x00000003, 0x00306C88, - 0xAD806802, 0xAE603502, 0x00000003, 0x40306C20, 0xAD806802, 0xAE604E02, - 0x00000003, 0x00306C88, 0xAD806802, 0xAE604E02, 0x00000003, 0x40306C20, - 0xAD806802, 0xAE606402, 0x00000003, 0x00306C88, - // Block 66, offset 0x1080 - 0xAD806802, 0xAE606402, 0x00000003, 0x40306C20, 0xAD806802, 0xADC07002, - 0x00000003, 0x00306C88, 0xAD806802, 0xADC07002, 0x00000002, 0x40306C20, - 0xADC07002, 0x00000002, 0x00306C88, 0xADC07002, 0x00000002, 0x40306C20, - 0xADC07502, 0x00000002, 0x00306C88, 0xADC07502, 0x00000002, 0x40306C20, - 0xADC07802, 0x00000002, 0x00306C88, 0xADC07802, 0x00000002, 0x40306C20, - 0xADC07A02, 0x00000002, 0x00306C88, 0xADC07A02, 0x00000003, 0x00306C9D, - 0x002F2C9D, 0x0002BA9C, 0x00000002, 0x4030BE20, 0xAE604E02, 0x00000002, - 0x0030BE88, 0xAE604E02, 0x00000002, 0x4030BE20, 0xADC07002, 0x00000002, - 0x0030BE88, 0xADC07002, 0x00000003, 0x0030BE9D, 0x0009569C, 0x002E829C, - 0x00000004, 0x0030BE84, 0x002D9A84, 0x002D9A84, 0x002D9A9F, 0x00000004, - 0x0030BE8A, 0x002D9A8A, 0x002D9A8A, 0x002D9A9F, - // Block 67, offset 0x10c0 - 0x00000002, 0x0030BE9D, 0x002FE69D, 0x00000002, 0x0030BE84, 0x00310084, - 0x00000002, 0x0030BE8A, 0x0031008A, 0x00000002, 0x4030E220, 0xAE603202, - 0x00000002, 0x0030E288, 0xAE603202, 0x00000002, 0x4030E220, 0xAE603502, - 0x00000002, 0x0030E288, 0xAE603502, 0x00000002, 0x4030E220, 0xAE603C02, - 0x00000002, 0x0030E288, 0xAE603C02, 0x00000002, 0x4030E220, 0xAE604302, - 0x00000002, 0x4030E220, 0xAE604702, 0x00000002, 0x0030E288, 0xAE604702, - 0x00000002, 0x4030E220, 0xAE605202, 0x00000002, 0x0030E288, 0xAE605202, - 0x00000002, 0x4030E220, 0xADC07002, 0x00000002, 0x0030E288, 0xADC07002, - 0x00000002, 0x0030E29D, 0x002C3A9D, 0x00000002, 0x4030F620, 0xAE604702, - 0x00000002, 0x0030F688, 0xAE604702, 0x00000002, 0x4030F620, 0xAE605202, - 0x00000002, 0x0030F688, 0xAE605202, 0x00000002, - // Block 68, offset 0x1100 - 0x40310020, 0xAE603202, 0x00000002, 0x00310088, 0xAE603202, 0x00000002, - 0x40310020, 0xAE603502, 0x00000002, 0x00310088, 0xAE603502, 0x00000002, - 0x40310020, 0xAE603C02, 0x00000002, 0x00310088, 0xAE603C02, 0x00000002, - 0x40310020, 0xAE604302, 0x00000002, 0x40310020, 0xAE604702, 0x00000002, - 0x00310088, 0xAE604702, 0x00000002, 0x40310020, 0xAE604E02, 0x00000002, - 0x00310088, 0xAE604E02, 0x00000002, 0x40310020, 0xAE605202, 0x00000002, - 0x00310088, 0xAE605202, 0x00000002, 0x40310020, 0xAE605B02, 0x00000002, - 0x00310088, 0xAE605B02, 0x00000002, 0x40310020, 0xAE606402, 0x00000002, - 0x00310088, 0xAE606402, 0x00000002, 0x40310020, 0xADC07002, 0x00000002, - 0x00310088, 0xADC07002, 0x00000002, 0x40312A20, 0xAE603202, 0x00000002, - 0x00312A88, 0xAE603202, 0x00000002, 0x40312A20, - // Block 69, offset 0x1140 - 0xAE603C02, 0x00000002, 0x00312A88, 0xAE603C02, 0x00000002, 0x40312A20, - 0xAE604102, 0x00000002, 0x00312A88, 0xAE604102, 0x00000002, 0x40312A20, - 0xAE605202, 0x00000002, 0x00312A88, 0xAE605202, 0x00000002, 0x40312A20, - 0xADC07002, 0x00000002, 0x00312A88, 0xADC07002, 0x00000002, 0x40312A20, - 0xADC07B02, 0x00000002, 0x00312A88, 0xADC07B02, 0x00000002, 0x00312A84, - 0x0030E284, 0x00000002, 0x40316420, 0xAE604102, 0x00000002, 0x00316488, - 0xAE604102, 0x00000002, 0x40325220, 0xAE602202, 0x00000002, 0x00325288, - 0xAE602202, 0x00000003, 0x40325220, 0xAE602202, 0xAE603202, 0x00000003, - 0x00325288, 0xAE602202, 0xAE603202, 0x00000004, 0x40325220, 0xAE602202, - 0xAE603202, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602202, 0xAE603202, - 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202, - // Block 70, offset 0x1180 - 0xAE603502, 0x00000003, 0x00325288, 0xAE602202, 0xAE603502, 0x00000004, - 0x40325220, 0xAE602202, 0xAE603502, 0xAF007F02, 0x00000004, 0x00325288, - 0xAE602202, 0xAE603502, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202, - 0xAE604502, 0x00000003, 0x00325288, 0xAE602202, 0xAE604502, 0x00000004, - 0x40325220, 0xAE602202, 0xAE604502, 0xAF007F02, 0x00000004, 0x00325288, - 0xAE602202, 0xAE604502, 0xAF007F02, 0x00000003, 0x40325220, 0xAE602202, - 0xAF007F02, 0x00000003, 0x00325288, 0xAE602202, 0xAF007F02, 0x00000002, - 0x40325220, 0xAE602A02, 0x00000002, 0x00325288, 0xAE602A02, 0x00000003, - 0x40325220, 0xAE602A02, 0xAE603202, 0x00000003, 0x00325288, 0xAE602A02, - 0xAE603202, 0x00000004, 0x40325220, 0xAE602A02, 0xAE603202, 0xAF007F02, - 0x00000004, 0x00325288, 0xAE602A02, 0xAE603202, - // Block 71, offset 0x11c0 - 0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE603502, 0x00000003, - 0x00325288, 0xAE602A02, 0xAE603502, 0x00000004, 0x40325220, 0xAE602A02, - 0xAE603502, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE603502, - 0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAE604502, 0x00000003, - 0x00325288, 0xAE602A02, 0xAE604502, 0x00000004, 0x40325220, 0xAE602A02, - 0xAE604502, 0xAF007F02, 0x00000004, 0x00325288, 0xAE602A02, 0xAE604502, - 0xAF007F02, 0x00000003, 0x40325220, 0xAE602A02, 0xAF007F02, 0x00000003, - 0x00325288, 0xAE602A02, 0xAF007F02, 0x00000002, 0x40325220, 0xAE603202, - 0x00000002, 0x00325288, 0xAE603202, 0x00000003, 0x40325220, 0xAE603202, - 0xAF007F02, 0x00000002, 0x40325220, 0xAE603502, 0x00000002, 0x00325288, - 0xAE603502, 0x00000003, 0x40325220, 0xAE603502, - // Block 72, offset 0x1200 - 0xAF007F02, 0x00000002, 0x40325220, 0xAE603702, 0x00000002, 0x00325288, - 0xAE603702, 0x00000002, 0x40325220, 0xAE604502, 0x00000003, 0x40325220, - 0xAE604502, 0xAF007F02, 0x00000002, 0x40325220, 0xAE605B02, 0x00000002, - 0x00325288, 0xAE605B02, 0x00000002, 0x40325220, 0xAF007F02, 0x00000002, - 0x00325288, 0xAF007F02, 0x00000002, 0x40325C20, 0xAE602202, 0x00000002, - 0x00325C88, 0xAE602202, 0x00000003, 0x40325C20, 0xAE602202, 0xAE603202, - 0x00000003, 0x00325C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40325C20, - 0xAE602202, 0xAE603502, 0x00000003, 0x00325C88, 0xAE602202, 0xAE603502, - 0x00000002, 0x40325C20, 0xAE602A02, 0x00000002, 0x00325C88, 0xAE602A02, - 0x00000003, 0x40325C20, 0xAE602A02, 0xAE603202, 0x00000003, 0x00325C88, - 0xAE602A02, 0xAE603202, 0x00000003, 0x40325C20, - // Block 73, offset 0x1240 - 0xAE602A02, 0xAE603502, 0x00000003, 0x00325C88, 0xAE602A02, 0xAE603502, - 0x00000002, 0x40325C20, 0xAE603202, 0x00000002, 0x00325C88, 0xAE603202, - 0x00000002, 0x40325C20, 0xAE603502, 0x00000002, 0x00325C88, 0xAE603502, - 0x00000002, 0x40326820, 0xAE602202, 0x00000002, 0x00326888, 0xAE602202, - 0x00000003, 0x40326820, 0xAE602202, 0xAE603202, 0x00000003, 0x00326888, - 0xAE602202, 0xAE603202, 0x00000004, 0x40326820, 0xAE602202, 0xAE603202, - 0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603202, 0xAF007F02, - 0x00000003, 0x40326820, 0xAE602202, 0xAE603502, 0x00000003, 0x00326888, - 0xAE602202, 0xAE603502, 0x00000004, 0x40326820, 0xAE602202, 0xAE603502, - 0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, 0xAE603502, 0xAF007F02, - 0x00000003, 0x40326820, 0xAE602202, 0xAE604502, - // Block 74, offset 0x1280 - 0x00000003, 0x00326888, 0xAE602202, 0xAE604502, 0x00000004, 0x40326820, - 0xAE602202, 0xAE604502, 0xAF007F02, 0x00000004, 0x00326888, 0xAE602202, - 0xAE604502, 0xAF007F02, 0x00000003, 0x40326820, 0xAE602202, 0xAF007F02, - 0x00000003, 0x00326888, 0xAE602202, 0xAF007F02, 0x00000002, 0x40326820, - 0xAE602A02, 0x00000002, 0x00326888, 0xAE602A02, 0x00000003, 0x40326820, - 0xAE602A02, 0xAE603202, 0x00000003, 0x00326888, 0xAE602A02, 0xAE603202, - 0x00000004, 0x40326820, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000004, - 0x00326888, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000003, 0x40326820, - 0xAE602A02, 0xAE603502, 0x00000003, 0x00326888, 0xAE602A02, 0xAE603502, - 0x00000004, 0x40326820, 0xAE602A02, 0xAE603502, 0xAF007F02, 0x00000004, - 0x00326888, 0xAE602A02, 0xAE603502, 0xAF007F02, - // Block 75, offset 0x12c0 - 0x00000003, 0x40326820, 0xAE602A02, 0xAE604502, 0x00000003, 0x00326888, - 0xAE602A02, 0xAE604502, 0x00000004, 0x40326820, 0xAE602A02, 0xAE604502, - 0xAF007F02, 0x00000004, 0x00326888, 0xAE602A02, 0xAE604502, 0xAF007F02, - 0x00000003, 0x40326820, 0xAE602A02, 0xAF007F02, 0x00000003, 0x00326888, - 0xAE602A02, 0xAF007F02, 0x00000002, 0x40326820, 0xAE603202, 0x00000002, - 0x00326888, 0xAE603202, 0x00000003, 0x40326820, 0xAE603202, 0xAF007F02, - 0x00000002, 0x40326820, 0xAE603502, 0x00000002, 0x00326888, 0xAE603502, - 0x00000003, 0x40326820, 0xAE603502, 0xAF007F02, 0x00000002, 0x40326820, - 0xAE604502, 0x00000003, 0x40326820, 0xAE604502, 0xAF007F02, 0x00000002, - 0x40326820, 0xAF007F02, 0x00000002, 0x00326888, 0xAF007F02, 0x00000002, - 0x40326C20, 0xAE602202, 0x00000002, 0x00326C88, - // Block 76, offset 0x1300 - 0xAE602202, 0x00000003, 0x40326C20, 0xAE602202, 0xAE603202, 0x00000003, - 0x00326C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40326C20, 0xAE602202, - 0xAE603502, 0x00000003, 0x00326C88, 0xAE602202, 0xAE603502, 0x00000003, - 0x40326C20, 0xAE602202, 0xAE604502, 0x00000003, 0x00326C88, 0xAE602202, - 0xAE604502, 0x00000002, 0x40326C20, 0xAE602A02, 0x00000002, 0x00326C88, - 0xAE602A02, 0x00000003, 0x40326C20, 0xAE602A02, 0xAE603202, 0x00000003, - 0x00326C88, 0xAE602A02, 0xAE603202, 0x00000003, 0x40326C20, 0xAE602A02, - 0xAE603502, 0x00000003, 0x00326C88, 0xAE602A02, 0xAE603502, 0x00000003, - 0x40326C20, 0xAE602A02, 0xAE604502, 0x00000003, 0x00326C88, 0xAE602A02, - 0xAE604502, 0x00000002, 0x40326C20, 0xAE603202, 0x00000002, 0x00326C88, - 0xAE603202, 0x00000002, 0x40326C20, 0xAE603502, - // Block 77, offset 0x1340 - 0x00000002, 0x00326C88, 0xAE603502, 0x00000002, 0x40326C20, 0xAE603702, - 0x00000002, 0x00326C88, 0xAE603702, 0x00000002, 0x40326C20, 0xAE604502, - 0x00000002, 0x40326C20, 0xAE604702, 0x00000002, 0x00326C88, 0xAE604702, - 0x00000003, 0x40326C20, 0xAE604702, 0xAE603202, 0x00000003, 0x40326C20, - 0xAE604702, 0xAE603502, 0x00000003, 0x40326C20, 0xAE604702, 0xAE604502, - 0x00000002, 0x40326C20, 0xAE605B02, 0x00000002, 0x00326C88, 0xAE605B02, - 0x00000003, 0x00327084, 0x00325284, 0x00326C84, 0x00000003, 0x0032708A, - 0x00325284, 0x00326C84, 0x00000002, 0x40327C20, 0xAE602202, 0x00000002, - 0x00327C88, 0xAE602202, 0x00000003, 0x40327C20, 0xAE602202, 0xAE603202, - 0x00000003, 0x00327C88, 0xAE602202, 0xAE603202, 0x00000003, 0x40327C20, - 0xAE602202, 0xAE603502, 0x00000003, 0x00327C88, - // Block 78, offset 0x1380 - 0xAE602202, 0xAE603502, 0x00000002, 0x40327C20, 0xAE602A02, 0x00000002, - 0x00327C88, 0xAE602A02, 0x00000003, 0x40327C20, 0xAE602A02, 0xAE603202, - 0x00000003, 0x00327C88, 0xAE602A02, 0xAE603202, 0x00000003, 0x40327C20, - 0xAE602A02, 0xAE603502, 0x00000003, 0x00327C88, 0xAE602A02, 0xAE603502, - 0x00000002, 0x40327C20, 0xAE603202, 0x00000002, 0x00327C88, 0xAE603202, - 0x00000002, 0x40327C20, 0xAE603502, 0x00000002, 0x00327C88, 0xAE603502, - 0x00000002, 0x40328820, 0xAE602202, 0x00000002, 0x40328820, 0xAE602A02, - 0x00000002, 0x00328888, 0xAE602A02, 0x00000002, 0x40329820, 0xAE602202, - 0x00000003, 0x40329820, 0xAE602202, 0xAE603202, 0x00000003, 0x40329820, - 0xAE602202, 0xAE603502, 0x00000003, 0x40329820, 0xAE602202, 0xAE604502, - 0x00000002, 0x40329820, 0xAE602A02, 0x00000002, - // Block 79, offset 0x13c0 - 0x00329888, 0xAE602A02, 0x00000003, 0x40329820, 0xAE602A02, 0xAE603202, - 0x00000003, 0x00329888, 0xAE602A02, 0xAE603202, 0x00000003, 0x40329820, - 0xAE602A02, 0xAE603502, 0x00000003, 0x00329888, 0xAE602A02, 0xAE603502, - 0x00000003, 0x40329820, 0xAE602A02, 0xAE604502, 0x00000003, 0x00329888, - 0xAE602A02, 0xAE604502, 0x00000002, 0x40329820, 0xAE603202, 0x00000002, - 0x00329888, 0xAE603202, 0x00000002, 0x40329820, 0xAE603502, 0x00000002, - 0x00329888, 0xAE603502, 0x00000002, 0x40329820, 0xAE603702, 0x00000002, - 0x00329888, 0xAE603702, 0x00000002, 0x40329820, 0xAE604502, 0x00000002, - 0x40329820, 0xAE604702, 0x00000002, 0x00329888, 0xAE604702, 0x00000003, - 0x40329820, 0xAE604702, 0xAE603202, 0x00000003, 0x40329820, 0xAE604702, - 0xAE603502, 0x00000003, 0x40329820, 0xAE604702, - // Block 80, offset 0x1400 - 0xAE604502, 0x00000002, 0x40329820, 0xAE605B02, 0x00000002, 0x00329888, - 0xAE605B02, 0x00000002, 0x4032A220, 0xAE602202, 0x00000002, 0x0032A288, - 0xAE602202, 0x00000003, 0x4032A220, 0xAE602202, 0xAE603202, 0x00000003, - 0x0032A288, 0xAE602202, 0xAE603202, 0x00000004, 0x4032A220, 0xAE602202, - 0xAE603202, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603202, - 0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, 0xAE603502, 0x00000003, - 0x0032A288, 0xAE602202, 0xAE603502, 0x00000004, 0x4032A220, 0xAE602202, - 0xAE603502, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602202, 0xAE603502, - 0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, 0xAE604502, 0x00000003, - 0x0032A288, 0xAE602202, 0xAE604502, 0x00000004, 0x4032A220, 0xAE602202, - 0xAE604502, 0xAF007F02, 0x00000004, 0x0032A288, - // Block 81, offset 0x1440 - 0xAE602202, 0xAE604502, 0xAF007F02, 0x00000003, 0x4032A220, 0xAE602202, - 0xAF007F02, 0x00000003, 0x0032A288, 0xAE602202, 0xAF007F02, 0x00000002, - 0x4032A220, 0xAE602A02, 0x00000002, 0x0032A288, 0xAE602A02, 0x00000003, - 0x4032A220, 0xAE602A02, 0xAE603202, 0x00000003, 0x0032A288, 0xAE602A02, - 0xAE603202, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603202, 0xAF007F02, - 0x00000004, 0x0032A288, 0xAE602A02, 0xAE603202, 0xAF007F02, 0x00000003, - 0x4032A220, 0xAE602A02, 0xAE603502, 0x00000003, 0x0032A288, 0xAE602A02, - 0xAE603502, 0x00000004, 0x4032A220, 0xAE602A02, 0xAE603502, 0xAF007F02, - 0x00000004, 0x0032A288, 0xAE602A02, 0xAE603502, 0xAF007F02, 0x00000003, - 0x4032A220, 0xAE602A02, 0xAE604502, 0x00000003, 0x0032A288, 0xAE602A02, - 0xAE604502, 0x00000004, 0x4032A220, 0xAE602A02, - // Block 82, offset 0x1480 - 0xAE604502, 0xAF007F02, 0x00000004, 0x0032A288, 0xAE602A02, 0xAE604502, - 0xAF007F02, 0x00000003, 0x4032A220, 0xAE602A02, 0xAF007F02, 0x00000003, - 0x0032A288, 0xAE602A02, 0xAF007F02, 0x00000002, 0x4032A220, 0xAE603202, - 0x00000002, 0x0032A288, 0xAE603202, 0x00000003, 0x4032A220, 0xAE603202, - 0xAF007F02, 0x00000002, 0x4032A220, 0xAE603502, 0x00000002, 0x0032A288, - 0xAE603502, 0x00000003, 0x4032A220, 0xAE603502, 0xAF007F02, 0x00000002, - 0x4032A220, 0xAE604502, 0x00000003, 0x4032A220, 0xAE604502, 0xAF007F02, - 0x00000002, 0x4032A220, 0xAF007F02, 0x00000002, 0x0032A288, 0xAF007F02, - 0x00000003, 0x0032C084, 0x0032AA84, 0x0032BE84, 0x00000002, 0x00336284, - 0xA0013A04, 0x00000002, 0x0033628A, 0xA0013A04, 0x00000002, 0x4033B220, - 0xAE603502, 0x00000002, 0x0033B288, 0xAE603502, - // Block 83, offset 0x14c0 - 0x00000002, 0x4033B220, 0xAE604702, 0x00000002, 0x0033B288, 0xAE604702, - 0x00000002, 0x4033CA20, 0xAE603702, 0x00000002, 0x0033CA88, 0xAE603702, - 0x00000002, 0x40341420, 0xAE603502, 0x00000002, 0x00341488, 0xAE603502, - 0x00000002, 0x40341420, 0xAE605B02, 0x00000002, 0x00341488, 0xAE605B02, - 0x00000002, 0x84E61A9D, 0x84E61AA6, 0x00000002, 0x40357220, 0xAE605B02, - 0x00000002, 0x00357288, 0xAE605B02, 0x00000002, 0x40389020, 0xA1108C02, - 0x00000002, 0x40389020, 0xA1208D02, 0x00000002, 0x40389020, 0xA1509202, - 0x00000002, 0x40389220, 0xA1509202, 0x00000002, 0x40389220, 0xA1709502, - 0x00000002, 0x40389420, 0xA1509202, 0x00000002, 0x40389620, 0xA1509202, - 0x00000002, 0x40389820, 0xA1509202, 0x00000002, 0x40389A20, 0xA1308E02, - 0x00000002, 0x40389A20, 0xA1509202, 0x00000002, - // Block 84, offset 0x1500 - 0x00389A84, 0x00389A84, 0x00000002, 0x00389A84, 0x0038A284, 0x00000002, - 0x40389C20, 0xA1509202, 0x00000002, 0x4038A020, 0xA1509202, 0x00000002, - 0x4038A220, 0xA0E08902, 0x00000002, 0x4038A220, 0xA1509202, 0x00000002, - 0x0038A284, 0x0038A284, 0x00000003, 0x0038A284, 0x0038A284, 0xA1108C02, - 0x00000002, 0x4038A420, 0xA1509202, 0x00000002, 0x0038A499, 0xA1509202, - 0x00000002, 0x4038A420, 0xA1709502, 0x00000002, 0x4038A620, 0xA1509202, - 0x00000002, 0x4038A820, 0xA1509202, 0x00000002, 0x4038AA20, 0xA1509202, - 0x00000002, 0x4038AC20, 0xA1509202, 0x00000002, 0x4038B020, 0xA1509202, - 0x00000002, 0x0038B099, 0xA1509202, 0x00000002, 0x4038B020, 0xA1709502, - 0x00000002, 0x4038B220, 0xA1509202, 0x00000002, 0x4038B420, 0xA1509202, - 0x00000002, 0x4038B620, 0xA1509202, 0x00000002, - // Block 85, offset 0x1540 - 0x4038B820, 0xA1909002, 0x00000002, 0x4038B820, 0xA1809102, 0x00000002, - 0x4038B820, 0xA1509202, 0x00000003, 0x4038B820, 0xA1509202, 0xA1909002, - 0x00000003, 0x4038B820, 0xA1509202, 0xA1809102, 0x00000002, 0x4038BA20, - 0xA1509202, 0x00000002, 0x00391C84, 0xA0013A04, 0x00000002, 0x00393099, - 0x00393899, 0x00000002, 0x0039309A, 0x0039389A, 0x00000002, 0x00393097, - 0x00396497, 0x00000002, 0x0039309A, 0x0039649A, 0x00000002, 0x00393097, - 0x00397297, 0x00000002, 0x0039309A, 0x0039729A, 0x00000002, 0x00393097, - 0x00397497, 0x00000002, 0x00393099, 0x0039A499, 0x00000002, 0x00393099, - 0x0039A699, 0x00000002, 0x00393097, 0x003A4E97, 0x00000002, 0x00393098, - 0x003A4E98, 0x00000002, 0x00393099, 0x003A4E99, 0x00000002, 0x0039309A, - 0x003A4E9A, 0x00000002, 0x00393099, 0x003A5699, - // Block 86, offset 0x1580 - 0x00000002, 0x00393097, 0x003A6897, 0x00000002, 0x00393098, 0x003A6898, - 0x00000002, 0x00393099, 0x003A7299, 0x00000002, 0x0039309A, 0x003A729A, - 0x00000002, 0x00393099, 0x003A7499, 0x00000002, 0x0039309A, 0x003A749A, - 0x00000002, 0x00393099, 0x003A7A99, 0x00000002, 0x0039309A, 0x003A7A9A, - 0x00000002, 0x00393099, 0x003A7C99, 0x00000002, 0x0039309A, 0x003A7C9A, - 0x00000002, 0x00393099, 0x003A7E99, 0x00000002, 0x0039309A, 0x003A7E9A, - 0x00000002, 0x00393097, 0x003A8E97, 0x00000002, 0x00393099, 0x003A8E99, - 0x00000002, 0x00393099, 0x003A8E99, 0x00000002, 0x0039309A, 0x003A8E9A, - 0x00000002, 0x0039309A, 0x003A8E9A, 0x00000002, 0x00393099, 0x003A9099, - 0x00000002, 0x0039309A, 0x003A909A, 0x00000002, 0x00393097, 0x003A9897, - 0x00000002, 0x00393099, 0x003A9899, 0x00000002, - // Block 87, offset 0x15c0 - 0x0039309A, 0x003A989A, 0x00000004, 0x0039389A, 0x003A1A9A, 0x00393C9A, - 0x0039A49A, 0x00000004, 0x0039389A, 0x003A409A, 0x003A409A, 0x003A689A, - 0x00000003, 0x00393C99, 0x00397299, 0x003A9099, 0x00000003, 0x00393C99, - 0x00397499, 0x003A9099, 0x00000003, 0x00395697, 0x00396497, 0x003A4E97, - 0x00000003, 0x00395699, 0x00396499, 0x003A8E99, 0x00000003, 0x00395699, - 0x00396499, 0x003A9099, 0x00000003, 0x00395697, 0x00397297, 0x00396497, - 0x00000003, 0x00395699, 0x00397299, 0x00396499, 0x00000003, 0x00395697, - 0x00397297, 0x003A4E97, 0x00000003, 0x00395697, 0x00397497, 0x003A4E97, - 0x00000003, 0x00395699, 0x00397499, 0x003A8E99, 0x00000003, 0x00395699, - 0x00397499, 0x003A9099, 0x00000003, 0x00395697, 0x003A4E97, 0x00396497, - 0x00000003, 0x00395697, 0x003A4E97, 0x00397297, - // Block 88, offset 0x1600 - 0x00000003, 0x00395697, 0x003A4E97, 0x00397497, 0x00000003, 0x00395699, - 0x003A4E99, 0x003A8E99, 0x00000003, 0x00395699, 0x003A4E99, 0x003A9099, - 0x00000003, 0x00396499, 0x00397299, 0x003A8E99, 0x00000003, 0x00396499, - 0x00397299, 0x003A9099, 0x00000008, 0x0039649A, 0x003A409A, 0x0002129A, - 0x0039649A, 0x003A409A, 0x0039389A, 0x003A409A, 0x003A689A, 0x00000003, - 0x00396497, 0x003A4E97, 0x00397297, 0x00000003, 0x00396499, 0x003A4E99, - 0x00397299, 0x00000003, 0x00396499, 0x003A4E99, 0x003A8E99, 0x00000003, - 0x00396499, 0x003A4E99, 0x003A9099, 0x00000003, 0x00397299, 0x00396499, - 0x003A9099, 0x00000003, 0x00397299, 0x003A4E99, 0x003A8E99, 0x00000003, - 0x00397299, 0x003A4E99, 0x003A9099, 0x00000004, 0x0039A49A, 0x0039C69A, - 0x003A749A, 0x003A409A, 0x00000003, 0x0039C697, - // Block 89, offset 0x1640 - 0x00396497, 0x00397297, 0x00000003, 0x0039C699, 0x00396499, 0x003A8E99, - 0x00000003, 0x0039C697, 0x00397297, 0x00396497, 0x00000003, 0x0039C699, - 0x00397499, 0x003A8E99, 0x00000003, 0x0039C699, 0x00397499, 0x003A9099, - 0x00000003, 0x0039C697, 0x003A4E97, 0x00396497, 0x00000003, 0x0039C697, - 0x003A4E97, 0x00397297, 0x00000003, 0x0039C699, 0x003A4E99, 0x00397299, - 0x00000003, 0x0039C697, 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039C699, - 0x003A4E99, 0x003A4E99, 0x00000003, 0x0039C899, 0x00396499, 0x003A9099, - 0x00000003, 0x0039C897, 0x00397297, 0x003A4E97, 0x00000003, 0x0039C899, - 0x00397299, 0x003A4E99, 0x00000003, 0x0039C899, 0x00397299, 0x003A9099, - 0x00000003, 0x0039C897, 0x003A4E97, 0x00397497, 0x00000003, 0x0039C899, - 0x003A4E99, 0x00397499, 0x00000003, 0x0039C897, - // Block 90, offset 0x1680 - 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039C899, 0x003A4E99, 0x003A4E99, - 0x00000003, 0x0039DC97, 0x00397297, 0x00397297, 0x00000003, 0x0039DC99, - 0x00397299, 0x00397299, 0x00000003, 0x0039DC99, 0x00397299, 0x003A9099, - 0x00000004, 0x0039DC9A, 0x003A409A, 0x0039EE9A, 0x003A4E9A, 0x00000003, - 0x0039DC9A, 0x003A409A, 0x003A8E9A, 0x00000012, 0x0039DC9A, 0x003A409A, - 0x003A8E9A, 0x0002129A, 0x0039389A, 0x003A409A, 0x003A409A, 0x003A689A, - 0x0002129A, 0x0039EE9A, 0x003A409A, 0x003A909A, 0x003A689A, 0x0002129A, - 0x003A749A, 0x0039C69A, 0x003A409A, 0x003A4E9A, 0x00000003, 0x0039DC9A, - 0x003A409A, 0x003AAA9A, 0x00000003, 0x0039DC97, 0x003A4E97, 0x003A4E97, - 0x00000003, 0x0039DC99, 0x003A4E99, 0x003A4E99, 0x00000003, 0x0039DE99, - 0x00397299, 0x003A8E99, 0x00000003, 0x0039DE99, - // Block 91, offset 0x16c0 - 0x00397299, 0x003A9099, 0x00000003, 0x0039DE97, 0x00397497, 0x003A4E97, - 0x00000003, 0x0039DE99, 0x00397499, 0x003A4E99, 0x00000003, 0x0039E697, - 0x003A4E97, 0x00397297, 0x00000003, 0x0039E699, 0x003A4E99, 0x00397299, - 0x00000003, 0x0039E697, 0x003A4E97, 0x003A4E97, 0x00000003, 0x0039E699, - 0x003A4E99, 0x003A9099, 0x00000003, 0x0039EE97, 0x00396497, 0x003A4E97, - 0x00000003, 0x0039EE99, 0x00396499, 0x003A4E99, 0x00000004, 0x0039EE9A, - 0x003A409A, 0x003A909A, 0x003A689A, 0x00000003, 0x0039EE97, 0x003A4E97, - 0x003A4E97, 0x00000003, 0x0039EE99, 0x003A4E99, 0x003A4E99, 0x00000003, - 0x0039EE99, 0x003A4E99, 0x003A8E99, 0x00000003, 0x0039EE99, 0x003A4E99, - 0x003A9099, 0x00000003, 0x0039F099, 0x003A4E99, 0x003A4E99, 0x00000003, - 0x0039F099, 0x003A4E99, 0x003A8E99, 0x00000003, - // Block 92, offset 0x1700 - 0x0039F099, 0x003A4E99, 0x003A9099, 0x00000003, 0x0039FC97, 0x00397497, - 0x003A4E97, 0x00000003, 0x0039FC99, 0x00397499, 0x003A4E99, 0x00000003, - 0x0039FC99, 0x003A4E99, 0x003A9099, 0x00000003, 0x003A129A, 0x003A409A, - 0x003AAA9A, 0x00000003, 0x003A1297, 0x003A4E97, 0x00397297, 0x00000003, - 0x003A1299, 0x003A4E99, 0x00397299, 0x00000003, 0x003A1299, 0x003A4E99, - 0x003A4E99, 0x00000003, 0x003A1299, 0x003A4E99, 0x003A9099, 0x00000003, - 0x003A1A97, 0x003A4E97, 0x003A4E97, 0x00000003, 0x003A1A99, 0x003A4E99, - 0x003A4E99, 0x00000003, 0x003A1A99, 0x003A4E99, 0x003A9099, 0x00000002, - 0x003A4099, 0x00391E99, 0x00000002, 0x003A409A, 0x00391E9A, 0x00000002, - 0x003A4099, 0x00392099, 0x00000002, 0x003A409A, 0x0039209A, 0x00000002, - 0x003A4099, 0x00392899, 0x00000002, 0x003A409A, - // Block 93, offset 0x1740 - 0x0039289A, 0x00000003, 0x003A4097, 0x00396497, 0x00396497, 0x00000003, - 0x003A4099, 0x00396499, 0x00396499, 0x00000003, 0x003A4097, 0x00396497, - 0x003A4E97, 0x00000003, 0x003A4099, 0x00396499, 0x003A4E99, 0x00000003, - 0x003A4099, 0x00396499, 0x003A9099, 0x00000003, 0x003A4097, 0x00397297, - 0x003A4E97, 0x00000003, 0x003A4099, 0x00397299, 0x003A4E99, 0x00000003, - 0x003A4099, 0x00397299, 0x003A8E99, 0x00000003, 0x003A4099, 0x00397299, - 0x003A9099, 0x00000003, 0x003A4097, 0x00397497, 0x003A4E97, 0x00000003, - 0x003A4099, 0x00397499, 0x003A4E99, 0x00000003, 0x003A4097, 0x003A4E97, - 0x00397297, 0x00000003, 0x003A4099, 0x003A4E99, 0x00397299, 0x00000003, - 0x003A4099, 0x003A4E99, 0x003A9099, 0x00000002, 0x003A4E84, 0xA0013A04, - 0x00000003, 0x003A4E97, 0x00396497, 0x00397297, - // Block 94, offset 0x1780 - 0x00000003, 0x003A4E97, 0x00396497, 0x00397497, 0x00000003, 0x003A4E97, - 0x00396497, 0x003A4E97, 0x00000003, 0x003A4E99, 0x00396499, 0x003A9099, - 0x00000003, 0x003A4E97, 0x00397297, 0x00396497, 0x00000003, 0x003A4E97, - 0x00397297, 0x003A4E97, 0x00000004, 0x003A4E9A, 0x0039729A, 0x003A4E9A, - 0x0039889A, 0x00000003, 0x003A4E99, 0x00397299, 0x003A9099, 0x00000003, - 0x003A4E97, 0x00397497, 0x00396497, 0x00000003, 0x003A4E97, 0x00397497, - 0x003A4E97, 0x00000003, 0x003A4E99, 0x00397499, 0x003A9099, 0x00000003, - 0x003A4E99, 0x003A4E99, 0x003A9099, 0x00000003, 0x003A5697, 0x00396497, - 0x00397297, 0x00000003, 0x003A5699, 0x00396499, 0x00397299, 0x00000003, - 0x003A5697, 0x00396497, 0x003A4E97, 0x00000003, 0x003A5699, 0x00396499, - 0x003A4E99, 0x00000003, 0x003A5699, 0x00396499, - // Block 95, offset 0x17c0 - 0x003A8E99, 0x00000003, 0x003A5699, 0x00396499, 0x003A9099, 0x00000003, - 0x003A5697, 0x00397297, 0x003A4E97, 0x00000003, 0x003A5699, 0x00397299, - 0x003A8E99, 0x00000003, 0x003A5699, 0x00397299, 0x003A9099, 0x00000003, - 0x003A5699, 0x003A4E99, 0x003A8E99, 0x00000003, 0x003A5699, 0x003A4E99, - 0x003A9099, 0x00000003, 0x003A6897, 0x003A4E97, 0x00396497, 0x00000003, - 0x003A6897, 0x003A4E97, 0x003A4E97, 0x00000002, 0x403A6C20, 0xAE60BE02, - 0x00000002, 0x403A7220, 0xAE60BE02, 0x00000004, 0x003A749A, 0x0039C69A, - 0x003A409A, 0x003A4E9A, 0x00000003, 0x003A9099, 0x00396499, 0x003A9099, - 0x00000003, 0x003A9099, 0x00397299, 0x003A9099, 0x00000003, 0x003A9097, - 0x003A4E97, 0x003A4E97, 0x00000003, 0x003A9099, 0x003A4E99, 0x003A4E99, - 0x00000003, 0x003A9099, 0x003A4E99, 0x003A9099, - // Block 96, offset 0x1800 - 0x00000002, 0x403AAA20, 0xAE60BE02, 0x00000002, 0x003AB284, 0xA0013C04, - 0x00000002, 0x003AB484, 0xA0013A04, 0x00000002, 0x003AB484, 0xA0013C04, - 0x00000002, 0x003AB884, 0xA0013C04, 0x00000002, 0x003AC484, 0xA0013A04, - 0x00000002, 0x003AD884, 0xA0013A04, 0x00000002, 0x003B9484, 0xA0013904, - 0x00000002, 0x003B9684, 0xA0013904, 0x00000002, 0x003B9A84, 0xA0013904, - 0x00000002, 0x403FEC20, 0xA070F102, 0x00000002, 0x403FEE20, 0xA070F102, - 0x00000002, 0x403FF020, 0xA070F102, 0x00000002, 0x403FFC20, 0xA070F102, - 0x00000002, 0x40400A20, 0xA070F102, 0x00000002, 0x40400E20, 0xA070F102, - 0x00000002, 0x40401A20, 0xA070F102, 0x00000002, 0x40401E20, 0xA070F102, - 0x00000002, 0x40402820, 0xA070F102, 0x00000002, 0x40402C20, 0xA070F102, - 0x00000002, 0x40403020, 0xA070F102, 0x00000002, - // Block 97, offset 0x1840 - 0x4040B020, 0xA070F102, 0x00000002, 0x4040B220, 0xA070F102, 0x00000002, - 0x0040B684, 0x0040F884, 0x00000002, 0x4040CA20, 0xA070F102, 0x00000002, - 0x40411620, 0xA070F102, 0x00000002, 0x40411E20, 0xA070F102, 0x00000002, - 0x40412020, 0xA070F102, 0x00000002, 0x40412A20, 0xA070F102, 0x00000002, - 0x40414620, 0xA070F102, 0x00000002, 0x40415420, 0xA070F102, 0x00000002, - 0x40422A20, 0xA070F102, 0x00000002, 0x40422C20, 0xA070F102, 0x00000002, - 0x00442284, 0x00449084, 0x00000002, 0x00443E84, 0x00449084, 0x00000002, - 0x00444884, 0x00449084, 0x00000002, 0x00445884, 0x00449084, 0x00000002, - 0x00445884, 0x00449084, 0x00000002, 0x00445A84, 0x00449084, 0x00000002, - 0x00446684, 0x00449084, 0x00000002, 0x4046AA20, 0xA070F102, 0x00000002, - 0x4046AC20, 0xA070F102, 0x00000002, 0x4046BE20, - // Block 98, offset 0x1880 - 0xA070F102, 0x00000002, 0x40491020, 0x40498420, 0x00000002, 0x40491020, - 0x40498620, 0x00000002, 0x40491020, 0x40498820, 0x00000002, 0x40491020, - 0x40498A20, 0x00000002, 0x40491020, 0x40498C20, 0x00000002, 0x40491220, - 0x40498420, 0x00000002, 0x40491220, 0x40498620, 0x00000002, 0x40491220, - 0x40498820, 0x00000002, 0x40491220, 0x40498A20, 0x00000002, 0x40491220, - 0x40498C20, 0x00000002, 0x40491420, 0x40498420, 0x00000002, 0x40491420, - 0x40498620, 0x00000002, 0x40491420, 0x40498820, 0x00000002, 0x40491420, - 0x40498A20, 0x00000002, 0x40491420, 0x40498C20, 0x00000002, 0x40491620, - 0x40498420, 0x00000002, 0x40491620, 0x40498620, 0x00000002, 0x40491620, - 0x40498820, 0x00000002, 0x40491620, 0x40498A20, 0x00000002, 0x40491620, - 0x40498C20, 0x00000002, 0x40491820, 0x40498420, - // Block 99, offset 0x18c0 - 0x00000002, 0x40491820, 0x40498620, 0x00000002, 0x40491820, 0x40498820, - 0x00000002, 0x40491820, 0x40498A20, 0x00000002, 0x40491820, 0x40498C20, - 0x00000002, 0x40491A20, 0x40498420, 0x00000002, 0x40491A20, 0x40498620, - 0x00000002, 0x40491A20, 0x40498820, 0x00000002, 0x40491A20, 0x40498A20, - 0x00000002, 0x40491A20, 0x40498C20, 0x00000002, 0x40491C20, 0x40498420, - 0x00000002, 0x40491C20, 0x40498620, 0x00000002, 0x40491C20, 0x40498820, - 0x00000002, 0x40491C20, 0x40498A20, 0x00000002, 0x40491C20, 0x40498C20, - 0x00000002, 0x40491E20, 0x40498420, 0x00000002, 0x40491E20, 0x40498620, - 0x00000002, 0x40491E20, 0x40498820, 0x00000002, 0x40491E20, 0x40498A20, - 0x00000002, 0x40491E20, 0x40498C20, 0x00000002, 0x40492020, 0x40498420, - 0x00000002, 0x40492020, 0x40498620, 0x00000002, - // Block 100, offset 0x1900 - 0x40492020, 0x40498820, 0x00000002, 0x40492020, 0x40498A20, 0x00000002, - 0x40492020, 0x40498C20, 0x00000002, 0x40492220, 0x40498420, 0x00000002, - 0x40492220, 0x40498620, 0x00000002, 0x40492220, 0x40498820, 0x00000002, - 0x40492220, 0x40498A20, 0x00000002, 0x40492220, 0x40498C20, 0x00000002, - 0x40492420, 0x40498420, 0x00000002, 0x40492420, 0x40498620, 0x00000002, - 0x40492420, 0x40498820, 0x00000002, 0x40492420, 0x40498A20, 0x00000002, - 0x40492420, 0x40498C20, 0x00000002, 0x40492620, 0x40498420, 0x00000002, - 0x40492620, 0x40498620, 0x00000002, 0x40492620, 0x40498820, 0x00000002, - 0x40492620, 0x40498A20, 0x00000002, 0x40492620, 0x40498C20, 0x00000002, - 0x40492820, 0x40498420, 0x00000002, 0x40492820, 0x40498620, 0x00000002, - 0x40492820, 0x40498820, 0x00000002, 0x40492820, - // Block 101, offset 0x1940 - 0x40498A20, 0x00000002, 0x40492820, 0x40498C20, 0x00000002, 0x40492A20, - 0x40498420, 0x00000002, 0x40492A20, 0x40498620, 0x00000002, 0x40492A20, - 0x40498820, 0x00000002, 0x40492A20, 0x40498A20, 0x00000002, 0x40492A20, - 0x40498C20, 0x00000002, 0x40492C20, 0x40498420, 0x00000002, 0x40492C20, - 0x40498620, 0x00000002, 0x40492C20, 0x40498820, 0x00000002, 0x40492C20, - 0x40498A20, 0x00000002, 0x40492C20, 0x40498C20, 0x00000002, 0x40492E20, - 0x40498420, 0x00000002, 0x40492E20, 0x40498620, 0x00000002, 0x40492E20, - 0x40498820, 0x00000002, 0x40492E20, 0x40498A20, 0x00000002, 0x40492E20, - 0x40498C20, 0x00000002, 0x40493020, 0x40498420, 0x00000002, 0x40493020, - 0x40498620, 0x00000002, 0x40493020, 0x40498820, 0x00000002, 0x40493020, - 0x40498A20, 0x00000002, 0x40493020, 0x40498C20, - // Block 102, offset 0x1980 - 0x00000002, 0x40493220, 0x40498420, 0x00000002, 0x40493220, 0x40498620, - 0x00000002, 0x40493220, 0x40498820, 0x00000002, 0x40493220, 0x40498A20, - 0x00000002, 0x40493220, 0x40498C20, 0x00000002, 0x40493420, 0x40498420, - 0x00000002, 0x40493420, 0x40498620, 0x00000002, 0x40493420, 0x40498820, - 0x00000002, 0x40493420, 0x40498A20, 0x00000002, 0x40493420, 0x40498C20, - 0x00000002, 0x40493620, 0x40498420, 0x00000002, 0x40493620, 0x40498620, - 0x00000002, 0x40493620, 0x40498820, 0x00000002, 0x40493620, 0x40498A20, - 0x00000002, 0x40493620, 0x40498C20, 0x00000002, 0x40493820, 0x40498420, - 0x00000002, 0x40493820, 0x40498620, 0x00000002, 0x40493820, 0x40498820, - 0x00000002, 0x40493820, 0x40498A20, 0x00000002, 0x40493820, 0x40498C20, - 0x00000002, 0x40493A20, 0x40498420, 0x00000002, - // Block 103, offset 0x19c0 - 0x40493A20, 0x40498620, 0x00000002, 0x40493A20, 0x40498820, 0x00000002, - 0x40493A20, 0x40498A20, 0x00000002, 0x40493A20, 0x40498C20, 0x00000002, - 0x40493C20, 0x40498420, 0x00000002, 0x40493C20, 0x40498620, 0x00000002, - 0x40493C20, 0x40498820, 0x00000002, 0x40493C20, 0x40498A20, 0x00000002, - 0x40493C20, 0x40498C20, 0x00000002, 0x40493E20, 0x40498420, 0x00000002, - 0x40493E20, 0x40498620, 0x00000002, 0x40493E20, 0x40498820, 0x00000002, - 0x40493E20, 0x40498A20, 0x00000002, 0x40493E20, 0x40498C20, 0x00000002, - 0x40494020, 0x40498420, 0x00000002, 0x40494020, 0x40498620, 0x00000002, - 0x40494020, 0x40498820, 0x00000002, 0x40494020, 0x40498A20, 0x00000002, - 0x40494020, 0x40498C20, 0x00000002, 0x40494220, 0x40498420, 0x00000002, - 0x40494220, 0x40498620, 0x00000002, 0x40494220, - // Block 104, offset 0x1a00 - 0x40498820, 0x00000002, 0x40494220, 0x40498A20, 0x00000002, 0x40494220, - 0x40498C20, 0x00000002, 0x40494420, 0x40498420, 0x00000002, 0x40494420, - 0x40498620, 0x00000002, 0x40494420, 0x40498820, 0x00000002, 0x40494420, - 0x40498A20, 0x00000002, 0x40494420, 0x40498C20, 0x00000002, 0x40494620, - 0x40498420, 0x00000002, 0x40494620, 0x40498620, 0x00000002, 0x40494620, - 0x40498820, 0x00000002, 0x40494620, 0x40498A20, 0x00000002, 0x40494620, - 0x40498C20, 0x00000002, 0x40494820, 0x40498420, 0x00000002, 0x40494820, - 0x40498620, 0x00000002, 0x40494820, 0x40498820, 0x00000002, 0x40494820, - 0x40498A20, 0x00000002, 0x40494820, 0x40498C20, 0x00000002, 0x40494A20, - 0x40498420, 0x00000002, 0x40494A20, 0x40498620, 0x00000002, 0x40494A20, - 0x40498820, 0x00000002, 0x40494A20, 0x40498A20, - // Block 105, offset 0x1a40 - 0x00000002, 0x40494A20, 0x40498C20, 0x00000002, 0x40494C20, 0x40498420, - 0x00000002, 0x40494C20, 0x40498620, 0x00000002, 0x40494C20, 0x40498820, - 0x00000002, 0x40494C20, 0x40498A20, 0x00000002, 0x40494C20, 0x40498C20, - 0x00000002, 0x40494E20, 0x40498420, 0x00000002, 0x40494E20, 0x40498620, - 0x00000002, 0x40494E20, 0x40498820, 0x00000002, 0x40494E20, 0x40498A20, - 0x00000002, 0x40494E20, 0x40498C20, 0x00000002, 0x40495020, 0x40498420, - 0x00000002, 0x40495020, 0x40498620, 0x00000002, 0x40495020, 0x40498820, - 0x00000002, 0x40495020, 0x40498A20, 0x00000002, 0x40495020, 0x40498C20, - 0x00000002, 0x40495220, 0x40498420, 0x00000002, 0x40495220, 0x40498620, - 0x00000002, 0x40495220, 0x40498820, 0x00000002, 0x40495220, 0x40498A20, - 0x00000002, 0x40495220, 0x40498C20, 0x00000002, - // Block 106, offset 0x1a80 - 0x40495420, 0x40498420, 0x00000002, 0x40495420, 0x40498620, 0x00000002, - 0x40495420, 0x40498820, 0x00000002, 0x40495420, 0x40498A20, 0x00000002, - 0x40495420, 0x40498C20, 0x00000002, 0x40495620, 0x40498420, 0x00000002, - 0x40495620, 0x40498620, 0x00000002, 0x40495620, 0x40498820, 0x00000002, - 0x40495620, 0x40498A20, 0x00000002, 0x40495620, 0x40498C20, 0x00000002, - 0x40495820, 0x40498420, 0x00000002, 0x40495820, 0x40498620, 0x00000002, - 0x40495820, 0x40498820, 0x00000002, 0x40495820, 0x40498A20, 0x00000002, - 0x40495820, 0x40498C20, 0x00000002, 0x40495A20, 0x40498420, 0x00000002, - 0x40495A20, 0x40498620, 0x00000002, 0x40495A20, 0x40498820, 0x00000002, - 0x40495A20, 0x40498A20, 0x00000002, 0x40495A20, 0x40498C20, 0x00000002, - 0x40495C20, 0x40498420, 0x00000002, 0x40495C20, - // Block 107, offset 0x1ac0 - 0x40498620, 0x00000002, 0x40495C20, 0x40498820, 0x00000002, 0x40495C20, - 0x40498A20, 0x00000002, 0x40495C20, 0x40498C20, 0x00000002, 0x40495E20, - 0x40498420, 0x00000002, 0x40495E20, 0x40498620, 0x00000002, 0x40495E20, - 0x40498820, 0x00000002, 0x40495E20, 0x40498A20, 0x00000002, 0x40495E20, - 0x40498C20, 0x00000002, 0x40496020, 0x40498420, 0x00000002, 0x40496020, - 0x40498620, 0x00000002, 0x40496020, 0x40498820, 0x00000002, 0x40496020, - 0x40498A20, 0x00000002, 0x40496020, 0x40498C20, 0x00000002, 0x40496220, - 0x40498420, 0x00000002, 0x40496220, 0x40498620, 0x00000002, 0x40496220, - 0x40498820, 0x00000002, 0x40496220, 0x40498A20, 0x00000002, 0x40496220, - 0x40498C20, 0x00000002, 0x40496420, 0x40498420, 0x00000002, 0x40496420, - 0x40498620, 0x00000002, 0x40496420, 0x40498820, - // Block 108, offset 0x1b00 - 0x00000002, 0x40496420, 0x40498A20, 0x00000002, 0x40496420, 0x40498C20, - 0x00000002, 0x40496620, 0x40498420, 0x00000002, 0x40496620, 0x40498620, - 0x00000002, 0x40496620, 0x40498820, 0x00000002, 0x40496620, 0x40498A20, - 0x00000002, 0x40496620, 0x40498C20, 0x00000002, 0x40496820, 0x40498420, - 0x00000002, 0x40496820, 0x40498620, 0x00000002, 0x40496820, 0x40498820, - 0x00000002, 0x40496820, 0x40498A20, 0x00000002, 0x40496820, 0x40498C20, - 0x00000002, 0x40496A20, 0x40498420, 0x00000002, 0x40496A20, 0x40498620, - 0x00000002, 0x40496A20, 0x40498820, 0x00000002, 0x40496A20, 0x40498A20, - 0x00000002, 0x40496A20, 0x40498C20, 0x00000002, 0x40499020, 0x4049E620, - 0x00000002, 0x40499020, 0x4049E820, 0x00000002, 0x40499020, 0x4049EA20, - 0x00000002, 0x40499020, 0x4049EC20, 0x00000002, - // Block 109, offset 0x1b40 - 0x40499020, 0x4049EE20, 0x00000002, 0x40499220, 0x4049E620, 0x00000002, - 0x40499220, 0x4049E820, 0x00000002, 0x40499220, 0x4049EA20, 0x00000002, - 0x40499220, 0x4049EC20, 0x00000002, 0x40499220, 0x4049EE20, 0x00000002, - 0x40499420, 0x4049E620, 0x00000002, 0x40499420, 0x4049E820, 0x00000002, - 0x40499420, 0x4049EA20, 0x00000002, 0x40499420, 0x4049EC20, 0x00000002, - 0x40499420, 0x4049EE20, 0x00000002, 0x40499620, 0x4049E620, 0x00000002, - 0x40499620, 0x4049E820, 0x00000002, 0x40499620, 0x4049EA20, 0x00000002, - 0x40499620, 0x4049EC20, 0x00000002, 0x40499620, 0x4049EE20, 0x00000002, - 0x40499820, 0x4049E620, 0x00000002, 0x40499820, 0x4049E820, 0x00000002, - 0x40499820, 0x4049EA20, 0x00000002, 0x40499820, 0x4049EC20, 0x00000002, - 0x40499820, 0x4049EE20, 0x00000002, 0x40499A20, - // Block 110, offset 0x1b80 - 0x4049E620, 0x00000002, 0x40499A20, 0x4049E820, 0x00000002, 0x40499A20, - 0x4049EA20, 0x00000002, 0x40499A20, 0x4049EC20, 0x00000002, 0x40499A20, - 0x4049EE20, 0x00000002, 0x40499C20, 0x4049E620, 0x00000002, 0x40499C20, - 0x4049E820, 0x00000002, 0x40499C20, 0x4049EA20, 0x00000002, 0x40499C20, - 0x4049EC20, 0x00000002, 0x40499C20, 0x4049EE20, 0x00000002, 0x40499E20, - 0x4049E620, 0x00000002, 0x40499E20, 0x4049E820, 0x00000002, 0x40499E20, - 0x4049EA20, 0x00000002, 0x40499E20, 0x4049EC20, 0x00000002, 0x40499E20, - 0x4049EE20, 0x00000002, 0x4049A020, 0x4049E620, 0x00000002, 0x4049A020, - 0x4049E820, 0x00000002, 0x4049A020, 0x4049EA20, 0x00000002, 0x4049A020, - 0x4049EC20, 0x00000002, 0x4049A020, 0x4049EE20, 0x00000002, 0x4049A220, - 0x4049E620, 0x00000002, 0x4049A220, 0x4049E820, - // Block 111, offset 0x1bc0 - 0x00000002, 0x4049A220, 0x4049EA20, 0x00000002, 0x4049A220, 0x4049EC20, - 0x00000002, 0x4049A220, 0x4049EE20, 0x00000002, 0x4049A420, 0x4049E620, - 0x00000002, 0x4049A420, 0x4049E820, 0x00000002, 0x4049A420, 0x4049EA20, - 0x00000002, 0x4049A420, 0x4049EC20, 0x00000002, 0x4049A420, 0x4049EE20, - 0x00000002, 0x4049A620, 0x4049E620, 0x00000002, 0x4049A620, 0x4049E820, - 0x00000002, 0x4049A620, 0x4049EA20, 0x00000002, 0x4049A620, 0x4049EC20, - 0x00000002, 0x4049A620, 0x4049EE20, 0x00000002, 0x4049A820, 0x4049E620, - 0x00000002, 0x4049A820, 0x4049E820, 0x00000002, 0x4049A820, 0x4049EA20, - 0x00000002, 0x4049A820, 0x4049EC20, 0x00000002, 0x4049A820, 0x4049EE20, - 0x00000002, 0x4049AA20, 0x4049E620, 0x00000002, 0x4049AA20, 0x4049E820, - 0x00000002, 0x4049AA20, 0x4049EA20, 0x00000002, - // Block 112, offset 0x1c00 - 0x4049AA20, 0x4049EC20, 0x00000002, 0x4049AA20, 0x4049EE20, 0x00000002, - 0x4049AC20, 0x4049E620, 0x00000002, 0x4049AC20, 0x4049E820, 0x00000002, - 0x4049AC20, 0x4049EA20, 0x00000002, 0x4049AC20, 0x4049EC20, 0x00000002, - 0x4049AC20, 0x4049EE20, 0x00000002, 0x4049AE20, 0x4049E620, 0x00000002, - 0x4049AE20, 0x4049E820, 0x00000002, 0x4049AE20, 0x4049EA20, 0x00000002, - 0x4049AE20, 0x4049EC20, 0x00000002, 0x4049AE20, 0x4049EE20, 0x00000002, - 0x4049B020, 0x4049E620, 0x00000002, 0x4049B020, 0x4049E820, 0x00000002, - 0x4049B020, 0x4049EA20, 0x00000002, 0x4049B020, 0x4049EC20, 0x00000002, - 0x4049B020, 0x4049EE20, 0x00000002, 0x4049B220, 0x4049E620, 0x00000002, - 0x4049B220, 0x4049E820, 0x00000002, 0x4049B220, 0x4049EA20, 0x00000002, - 0x4049B220, 0x4049EC20, 0x00000002, 0x4049B220, - // Block 113, offset 0x1c40 - 0x4049EE20, 0x00000002, 0x4049B420, 0x4049E620, 0x00000002, 0x4049B420, - 0x4049E820, 0x00000002, 0x4049B420, 0x4049EA20, 0x00000002, 0x4049B420, - 0x4049EC20, 0x00000002, 0x4049B420, 0x4049EE20, 0x00000002, 0x4049B620, - 0x4049E620, 0x00000002, 0x4049B620, 0x4049E820, 0x00000002, 0x4049B620, - 0x4049EA20, 0x00000002, 0x4049B620, 0x4049EC20, 0x00000002, 0x4049B620, - 0x4049EE20, 0x00000002, 0x4049B820, 0x4049E620, 0x00000002, 0x4049B820, - 0x4049E820, 0x00000002, 0x4049B820, 0x4049EA20, 0x00000002, 0x4049B820, - 0x4049EC20, 0x00000002, 0x4049B820, 0x4049EE20, 0x00000002, 0x4049BA20, - 0x4049E620, 0x00000002, 0x4049BA20, 0x4049E820, 0x00000002, 0x4049BA20, - 0x4049EA20, 0x00000002, 0x4049BA20, 0x4049EC20, 0x00000002, 0x4049BA20, - 0x4049EE20, 0x00000002, 0x4049BC20, 0x4049E620, - // Block 114, offset 0x1c80 - 0x00000002, 0x4049BC20, 0x4049E820, 0x00000002, 0x4049BC20, 0x4049EA20, - 0x00000002, 0x4049BC20, 0x4049EC20, 0x00000002, 0x4049BC20, 0x4049EE20, - 0x00000002, 0x4049BE20, 0x4049E620, 0x00000002, 0x4049BE20, 0x4049E820, - 0x00000002, 0x4049BE20, 0x4049EA20, 0x00000002, 0x4049BE20, 0x4049EC20, - 0x00000002, 0x4049BE20, 0x4049EE20, 0x00000002, 0x4049C020, 0x4049E620, - 0x00000002, 0x4049C020, 0x4049E820, 0x00000002, 0x4049C020, 0x4049EA20, - 0x00000002, 0x4049C020, 0x4049EC20, 0x00000002, 0x4049C020, 0x4049EE20, - 0x00000002, 0x4049C220, 0x4049E620, 0x00000002, 0x4049C220, 0x4049E820, - 0x00000002, 0x4049C220, 0x4049EA20, 0x00000002, 0x4049C220, 0x4049EC20, - 0x00000002, 0x4049C220, 0x4049EE20, 0x00000003, 0x0049C484, 0x0049AC84, - 0x4049E620, 0x00000003, 0x0049C484, 0x0049AC84, - // Block 115, offset 0x1cc0 - 0x4049E820, 0x00000003, 0x0049C484, 0x0049AC84, 0x4049EA20, 0x00000003, - 0x0049C484, 0x0049AC84, 0x4049EC20, 0x00000003, 0x0049C484, 0x0049AC84, - 0x4049EE20, 0x00000003, 0x0049C484, 0x0049BA84, 0x4049E620, 0x00000003, - 0x0049C484, 0x0049BA84, 0x4049E820, 0x00000003, 0x0049C484, 0x0049BA84, - 0x4049EA20, 0x00000003, 0x0049C484, 0x0049BA84, 0x4049EC20, 0x00000003, - 0x0049C484, 0x0049BA84, 0x4049EE20, 0x00000002, 0x4049C420, 0x4049E620, - 0x00000002, 0x4049C420, 0x4049E820, 0x00000002, 0x4049C420, 0x4049EA20, - 0x00000002, 0x4049C420, 0x4049EC20, 0x00000002, 0x4049C420, 0x4049EE20, - 0x00000002, 0x4049C620, 0x4049E620, 0x00000002, 0x4049C620, 0x4049E820, - 0x00000002, 0x4049C620, 0x4049EA20, 0x00000002, 0x4049C620, 0x4049EC20, - 0x00000002, 0x4049C620, 0x4049EE20, 0x00000002, - // Block 116, offset 0x1d00 - 0x4049C820, 0x4049E620, 0x00000002, 0x4049C820, 0x4049E820, 0x00000002, - 0x4049C820, 0x4049EA20, 0x00000002, 0x4049C820, 0x4049EC20, 0x00000002, - 0x4049C820, 0x4049EE20, 0x00000002, 0x4049F020, 0x404A5A20, 0x00000002, - 0x4049F020, 0x404A5C20, 0x00000002, 0x4049F020, 0x404A6220, 0x00000002, - 0x4049F020, 0x404A6620, 0x00000002, 0x4049F020, 0x404A6820, 0x00000002, - 0x4049F220, 0x404A5A20, 0x00000002, 0x4049F220, 0x404A5C20, 0x00000002, - 0x4049F220, 0x404A6220, 0x00000002, 0x4049F220, 0x404A6620, 0x00000002, - 0x4049F220, 0x404A6820, 0x00000002, 0x4049F420, 0x404A5A20, 0x00000002, - 0x4049F420, 0x404A5C20, 0x00000002, 0x4049F420, 0x404A6220, 0x00000002, - 0x4049F420, 0x404A6620, 0x00000002, 0x4049F420, 0x404A6820, 0x00000002, - 0x4049F620, 0x404A5A20, 0x00000002, 0x4049F620, - // Block 117, offset 0x1d40 - 0x404A5C20, 0x00000002, 0x4049F620, 0x404A6220, 0x00000002, 0x4049F620, - 0x404A6620, 0x00000002, 0x4049F620, 0x404A6820, 0x00000002, 0x4049F820, - 0x404A5A20, 0x00000002, 0x4049F820, 0x404A5C20, 0x00000002, 0x4049F820, - 0x404A6220, 0x00000002, 0x4049F820, 0x404A6620, 0x00000002, 0x4049F820, - 0x404A6820, 0x00000002, 0x4049FA20, 0x404A5A20, 0x00000002, 0x4049FA20, - 0x404A5C20, 0x00000002, 0x4049FA20, 0x404A6220, 0x00000002, 0x4049FA20, - 0x404A6620, 0x00000002, 0x4049FA20, 0x404A6820, 0x00000002, 0x4049FC20, - 0x404A5A20, 0x00000002, 0x4049FC20, 0x404A5C20, 0x00000002, 0x4049FC20, - 0x404A6220, 0x00000002, 0x4049FC20, 0x404A6620, 0x00000002, 0x4049FC20, - 0x404A6820, 0x00000002, 0x4049FE20, 0x404A5A20, 0x00000002, 0x4049FE20, - 0x404A5C20, 0x00000002, 0x4049FE20, 0x404A6220, - // Block 118, offset 0x1d80 - 0x00000002, 0x4049FE20, 0x404A6620, 0x00000002, 0x4049FE20, 0x404A6820, - 0x00000002, 0x404A0020, 0x404A5A20, 0x00000002, 0x404A0020, 0x404A5C20, - 0x00000002, 0x404A0020, 0x404A6220, 0x00000002, 0x404A0020, 0x404A6620, - 0x00000002, 0x404A0020, 0x404A6820, 0x00000002, 0x404A0220, 0x404A5A20, - 0x00000002, 0x404A0220, 0x404A5C20, 0x00000002, 0x404A0220, 0x404A6220, - 0x00000002, 0x404A0220, 0x404A6620, 0x00000002, 0x404A0220, 0x404A6820, - 0x00000002, 0x404A0420, 0x404A5A20, 0x00000002, 0x404A0420, 0x404A5C20, - 0x00000002, 0x404A0420, 0x404A6220, 0x00000002, 0x404A0420, 0x404A6620, - 0x00000002, 0x404A0420, 0x404A6820, 0x00000002, 0x404A0620, 0x404A5A20, - 0x00000002, 0x404A0620, 0x404A5C20, 0x00000002, 0x404A0620, 0x404A6220, - 0x00000002, 0x404A0620, 0x404A6620, 0x00000002, - // Block 119, offset 0x1dc0 - 0x404A0620, 0x404A6820, 0x00000002, 0x404A0820, 0x404A5A20, 0x00000002, - 0x404A0820, 0x404A5C20, 0x00000002, 0x404A0820, 0x404A6220, 0x00000002, - 0x404A0820, 0x404A6620, 0x00000002, 0x404A0820, 0x404A6820, 0x00000002, - 0x404A0A20, 0x404A5A20, 0x00000002, 0x404A0A20, 0x404A5C20, 0x00000002, - 0x404A0A20, 0x404A6220, 0x00000002, 0x404A0A20, 0x404A6620, 0x00000002, - 0x404A0A20, 0x404A6820, 0x00000002, 0x404A0C20, 0x404A5A20, 0x00000002, - 0x404A0C20, 0x404A5C20, 0x00000002, 0x404A0C20, 0x404A6220, 0x00000002, - 0x404A0C20, 0x404A6620, 0x00000002, 0x404A0C20, 0x404A6820, 0x00000002, - 0x404A0E20, 0x404A5A20, 0x00000002, 0x404A0E20, 0x404A5C20, 0x00000002, - 0x404A0E20, 0x404A6220, 0x00000002, 0x404A0E20, 0x404A6620, 0x00000002, - 0x404A0E20, 0x404A6820, 0x00000002, 0x404A1020, - // Block 120, offset 0x1e00 - 0x404A5A20, 0x00000002, 0x404A1020, 0x404A5C20, 0x00000002, 0x404A1020, - 0x404A6220, 0x00000002, 0x404A1020, 0x404A6620, 0x00000002, 0x404A1020, - 0x404A6820, 0x00000002, 0x404A1220, 0x404A5A20, 0x00000002, 0x404A1220, - 0x404A5C20, 0x00000002, 0x404A1220, 0x404A6220, 0x00000002, 0x404A1220, - 0x404A6620, 0x00000002, 0x404A1220, 0x404A6820, 0x00000002, 0x404A1420, - 0x404A5A20, 0x00000002, 0x404A1420, 0x404A5C20, 0x00000002, 0x404A1420, - 0x404A6220, 0x00000002, 0x404A1420, 0x404A6620, 0x00000002, 0x404A1420, - 0x404A6820, 0x00000002, 0x404A1620, 0x404A5A20, 0x00000002, 0x404A1620, - 0x404A5C20, 0x00000002, 0x404A1620, 0x404A6220, 0x00000002, 0x404A1620, - 0x404A6620, 0x00000002, 0x404A1620, 0x404A6820, 0x00000002, 0x404A1820, - 0x404A5A20, 0x00000002, 0x404A1820, 0x404A5C20, - // Block 121, offset 0x1e40 - 0x00000002, 0x404A1820, 0x404A6220, 0x00000002, 0x404A1820, 0x404A6620, - 0x00000002, 0x404A1820, 0x404A6820, 0x00000002, 0x404A1A20, 0x404A5A20, - 0x00000002, 0x404A1A20, 0x404A5C20, 0x00000002, 0x404A1A20, 0x404A6220, - 0x00000002, 0x404A1A20, 0x404A6620, 0x00000002, 0x404A1A20, 0x404A6820, - 0x00000002, 0x404A1C20, 0x404A5A20, 0x00000002, 0x404A1C20, 0x404A5C20, - 0x00000002, 0x404A1C20, 0x404A6220, 0x00000002, 0x404A1C20, 0x404A6620, - 0x00000002, 0x404A1C20, 0x404A6820, 0x00000002, 0x404A1E20, 0x404A5A20, - 0x00000002, 0x404A1E20, 0x404A5C20, 0x00000002, 0x404A1E20, 0x404A6220, - 0x00000002, 0x404A1E20, 0x404A6620, 0x00000002, 0x404A1E20, 0x404A6820, - 0x00000002, 0x404A2020, 0x404A5A20, 0x00000002, 0x404A2020, 0x404A5C20, - 0x00000002, 0x404A2020, 0x404A6220, 0x00000002, - // Block 122, offset 0x1e80 - 0x404A2020, 0x404A6620, 0x00000002, 0x404A2020, 0x404A6820, 0x00000002, - 0x404A2220, 0x404A5A20, 0x00000002, 0x404A2220, 0x404A5C20, 0x00000002, - 0x404A2220, 0x404A6220, 0x00000002, 0x404A2220, 0x404A6620, 0x00000002, - 0x404A2220, 0x404A6820, 0x00000002, 0x404A2420, 0x404A5A20, 0x00000002, - 0x404A2420, 0x404A5C20, 0x00000002, 0x404A2420, 0x404A6220, 0x00000002, - 0x404A2420, 0x404A6620, 0x00000002, 0x404A2420, 0x404A6820, 0x00000002, - 0x404A2620, 0x404A5A20, 0x00000002, 0x404A2620, 0x404A5C20, 0x00000002, - 0x404A2620, 0x404A6220, 0x00000002, 0x404A2620, 0x404A6620, 0x00000002, - 0x404A2620, 0x404A6820, 0x00000002, 0x404A2820, 0x404A5A20, 0x00000002, - 0x404A2820, 0x404A5C20, 0x00000002, 0x404A2820, 0x404A6220, 0x00000002, - 0x404A2820, 0x404A6620, 0x00000002, 0x404A2820, - // Block 123, offset 0x1ec0 - 0x404A6820, 0x00000002, 0x404A2A20, 0x404A5A20, 0x00000002, 0x404A2A20, - 0x404A5C20, 0x00000002, 0x404A2A20, 0x404A6220, 0x00000002, 0x404A2A20, - 0x404A6620, 0x00000002, 0x404A2A20, 0x404A6820, 0x00000002, 0x404A2C20, - 0x404A5A20, 0x00000002, 0x404A2C20, 0x404A5C20, 0x00000002, 0x404A2C20, - 0x404A6220, 0x00000002, 0x404A2C20, 0x404A6620, 0x00000002, 0x404A2C20, - 0x404A6820, 0x00000002, 0x404A2E20, 0x404A5A20, 0x00000002, 0x404A2E20, - 0x404A5C20, 0x00000002, 0x404A2E20, 0x404A6220, 0x00000002, 0x404A2E20, - 0x404A6620, 0x00000002, 0x404A2E20, 0x404A6820, 0x00000002, 0x404A3020, - 0x404A5A20, 0x00000002, 0x404A3020, 0x404A5C20, 0x00000002, 0x404A3020, - 0x404A6220, 0x00000002, 0x404A3020, 0x404A6620, 0x00000002, 0x404A3020, - 0x404A6820, 0x00000002, 0x404A3220, 0x404A5A20, - // Block 124, offset 0x1f00 - 0x00000002, 0x404A3220, 0x404A5C20, 0x00000002, 0x404A3220, 0x404A6220, - 0x00000002, 0x404A3220, 0x404A6620, 0x00000002, 0x404A3220, 0x404A6820, - 0x00000002, 0x404A3420, 0x404A5A20, 0x00000002, 0x404A3420, 0x404A5C20, - 0x00000002, 0x404A3420, 0x404A6220, 0x00000002, 0x404A3420, 0x404A6620, - 0x00000002, 0x404A3420, 0x404A6820, 0x00000002, 0x404A3620, 0x404A5A20, - 0x00000002, 0x404A3620, 0x404A5C20, 0x00000002, 0x404A3620, 0x404A6220, - 0x00000002, 0x404A3620, 0x404A6620, 0x00000002, 0x404A3620, 0x404A6820, - 0x00000002, 0x404A3820, 0x404A5A20, 0x00000002, 0x404A3820, 0x404A5C20, - 0x00000002, 0x404A3820, 0x404A6220, 0x00000002, 0x404A3820, 0x404A6620, - 0x00000002, 0x404A3820, 0x404A6820, 0x00000002, 0x404A3A20, 0x404A5A20, - 0x00000002, 0x404A3A20, 0x404A5C20, 0x00000002, - // Block 125, offset 0x1f40 - 0x404A3A20, 0x404A6220, 0x00000002, 0x404A3A20, 0x404A6620, 0x00000002, - 0x404A3A20, 0x404A6820, 0x00000002, 0x404A3C20, 0x404A5A20, 0x00000002, - 0x404A3C20, 0x404A5C20, 0x00000002, 0x404A3C20, 0x404A6220, 0x00000002, - 0x404A3C20, 0x404A6620, 0x00000002, 0x404A3C20, 0x404A6820, 0x00000002, - 0x404A3E20, 0x404A5A20, 0x00000002, 0x404A3E20, 0x404A5C20, 0x00000002, - 0x404A3E20, 0x404A6220, 0x00000002, 0x404A3E20, 0x404A6620, 0x00000002, - 0x404A3E20, 0x404A6820, 0x00000002, 0x404A4020, 0x404A5A20, 0x00000002, - 0x404A4020, 0x404A5C20, 0x00000002, 0x404A4020, 0x404A6220, 0x00000002, - 0x404A4020, 0x404A6620, 0x00000002, 0x404A4020, 0x404A6820, 0x00000002, - 0x404A4220, 0x404A5A20, 0x00000002, 0x404A4220, 0x404A5C20, 0x00000002, - 0x404A4220, 0x404A6220, 0x00000002, 0x404A4220, - // Block 126, offset 0x1f80 - 0x404A6620, 0x00000002, 0x404A4220, 0x404A6820, 0x00000002, 0x404A4420, - 0x404A5A20, 0x00000002, 0x404A4420, 0x404A5C20, 0x00000002, 0x404A4420, - 0x404A6220, 0x00000002, 0x404A4420, 0x404A6620, 0x00000002, 0x404A4420, - 0x404A6820, 0x00000002, 0x404A4620, 0x404A5A20, 0x00000002, 0x404A4620, - 0x404A5C20, 0x00000002, 0x404A4620, 0x404A6220, 0x00000002, 0x404A4620, - 0x404A6620, 0x00000002, 0x404A4620, 0x404A6820, 0x00000002, 0x404A4820, - 0x404A5A20, 0x00000002, 0x404A4820, 0x404A5C20, 0x00000002, 0x404A4820, - 0x404A6220, 0x00000002, 0x404A4820, 0x404A6620, 0x00000002, 0x404A4820, - 0x404A6820, 0x00000002, 0x404A4A20, 0x404A5A20, 0x00000002, 0x404A4A20, - 0x404A5C20, 0x00000002, 0x404A4A20, 0x404A6220, 0x00000002, 0x404A4A20, - 0x404A6620, 0x00000002, 0x404A4A20, 0x404A6820, - // Block 127, offset 0x1fc0 - 0x00000002, 0x404A4C20, 0x404A5A20, 0x00000002, 0x404A4C20, 0x404A5C20, - 0x00000002, 0x404A4C20, 0x404A6220, 0x00000002, 0x404A4C20, 0x404A6620, - 0x00000002, 0x404A4C20, 0x404A6820, 0x00000002, 0x404A4E20, 0x404A5A20, - 0x00000002, 0x404A4E20, 0x404A5C20, 0x00000002, 0x404A4E20, 0x404A6220, - 0x00000002, 0x404A4E20, 0x404A6620, 0x00000002, 0x404A4E20, 0x404A6820, - 0x00000002, 0x404A7620, 0x404AF820, 0x00000002, 0x404A7820, 0x404AF820, - 0x00000002, 0x404A8020, 0x404B0020, 0x00000002, 0x404A8220, 0x404B0020, - 0x00000002, 0x404AA020, 0x404B0020, 0x00000002, 0x404AA220, 0x404B0020, - 0x00000002, 0x404AB020, 0x404B0020, 0x00000002, 0x404AB220, 0x404B0020, - 0x00000002, 0x404AC020, 0x404B0020, 0x00000002, 0x404AC220, 0x404B0020, - 0x00000002, 0x404AD020, 0x404B0020, 0x00000002, - // Block 128, offset 0x2000 - 0x404AD220, 0x404B0020, 0x00000002, 0x004AD684, 0xA0013A04, 0x00000002, - 0x004AE684, 0xA0013A04, 0x00000002, 0x004AE884, 0xA0013A04, 0x00000002, - 0x004AEA84, 0xA0013A04, 0x00000002, 0x404AEA20, 0x8281258D, 0x00000002, - 0x404AEA20, 0x82812591, 0x00000002, 0x404AF020, 0x8281258D, 0x00000002, - 0x404AF020, 0x82812591, 0x00000003, 0x004B0284, 0x004B3084, 0xA000F304, - 0x00000003, 0x004EA684, 0x004F1484, 0x004EA684, 0x00000002, 0x0050AE84, - 0x0050DA84, 0x00000003, 0x0050AE84, 0x0050DA84, 0x0050F084, 0x00000003, - 0x00514E84, 0x00519A84, 0x00514E84, 0x00000002, 0x005ADA84, 0xA0013904, - 0x00000002, 0x005ADC84, 0xA0013904, 0x00000002, 0x005ADC84, 0xA0013A04, - 0x00000002, 0x005ADE84, 0xA0013904, 0x00000002, 0x005ADE84, 0x005ADE84, - 0x00000002, 0x005AE084, 0xA0013904, 0x00000002, - // Block 129, offset 0x2040 - 0x005AE084, 0xA0013A04, 0x00000002, 0x005AE084, 0xA0013C04, 0x00000002, - 0x005AE084, 0xA0013D04, 0x00000002, 0x005AE884, 0xA0013904, 0x00000002, - 0x005AE884, 0xA0013A04, 0x00000002, 0x005AE884, 0xA0013C04, 0x00000002, - 0x005AE884, 0xA0013D04, 0x00000002, 0x005AEC84, 0xA0013904, 0x00000002, - 0x005AEE84, 0xA0013904, 0x00000002, 0x005AEE84, 0xA0013A04, 0x00000002, - 0x005AEE84, 0xA0013C04, 0x00000002, 0x005AF084, 0xA0013904, 0x00000002, - 0x005AF084, 0xA0013A04, 0x00000002, 0x005AF284, 0xA0013904, 0x00000002, - 0x005AF484, 0xA0013904, 0x00000002, 0x005AF684, 0xA0013904, 0x00000002, - 0x005AF684, 0x005B0884, 0x00000002, 0x005AFA84, 0xA0013904, 0x00000002, - 0x005AFE84, 0xA0013904, 0x00000002, 0x005AFE84, 0xA0013A04, 0x00000002, - 0x005AFE84, 0xA0013C04, 0x00000002, 0x005AFE84, - // Block 130, offset 0x2080 - 0xA0013D04, 0x00000002, 0x005AFE84, 0xA0013E04, 0x00000002, 0x005B0084, - 0xA0013904, 0x00000002, 0x005B0084, 0xA0013A04, 0x00000002, 0x005B0284, - 0xA0013904, 0x00000002, 0x005B0284, 0xA0013A04, 0x00000002, 0x005B0684, - 0xA0013904, 0x00000002, 0x005B0684, 0xA0013A04, 0x00000004, 0x005B0684, - 0xA0013904, 0x005B0684, 0xA0013904, 0x00000002, 0x005B0884, 0xA0013904, - 0x00000002, 0x005B0A84, 0xA0013904, 0x00000002, 0x005B2484, 0xA0013904, - 0x00000002, 0x005B2484, 0xA0013A04, 0x00000002, 0x005B2684, 0xA0013904, - 0x00000002, 0x005B2A84, 0xA0013904, 0x00000002, 0x005B3084, 0xA0013904, - 0x00000002, 0x005B3284, 0xA0013904, 0x00000002, 0x005B3484, 0xA0013904, - 0x00000002, 0x005B3684, 0xA0013904, 0x00000002, 0x005B3884, 0xA0013904, - 0x00000002, 0x005B3A84, 0xA0013904, 0x00000002, - // Block 131, offset 0x20c0 - 0x005B3E84, 0xA0013904, 0x00000002, 0x005B4084, 0xA0013904, 0x00000002, - 0x005B4284, 0xA0013904, 0x00000002, 0x005B4484, 0xA0013904, 0x00000002, - 0x005B4684, 0xA0013904, 0x00000002, 0x005B4884, 0xA0013904, 0x00000002, - 0x005B5284, 0xA0013904, 0x00000002, 0x005B5484, 0xA0013904, 0x00000002, - 0x005B5684, 0xA0013904, 0x00000002, 0x005B5884, 0xA0013904, 0x00000002, - 0x005B5C84, 0xA0013904, 0x00000002, 0x005B6484, 0xA0013904, 0x00000002, - 0x005B6684, 0xA0013904, 0x00000002, 0x005B6884, 0xA0013904, 0x00000002, - 0x005B6A84, 0xA0013904, 0x00000002, 0x005B6C84, 0xA0013904, 0x00000002, - 0x005B7484, 0xA0013904, 0x00000002, 0x005B7684, 0xA0013904, 0x00000002, - 0x005B7884, 0xA0013904, 0x00000002, 0x005B7A84, 0xA0013904, 0x00000002, - 0x005B9884, 0x005D9684, 0x00000002, 0x005BBC84, - // Block 132, offset 0x2100 - 0x005D9684, 0x00000002, 0x005BE684, 0x005D9684, 0x00000002, 0x005C0E84, - 0x005D9884, 0x00000002, 0x005C2484, 0x005D9684, 0x00000002, 0x005C3084, - 0x005D9884, 0x00000002, 0x005C3484, 0x005D9884, 0x00000002, 0x005C4084, - 0x005D9684, 0x00000002, 0x005C8A84, 0x005D9684, 0x00000002, 0x005CE884, - 0x005D9684, 0x00000002, 0x005D1684, 0x005D9684, 0x00000002, 0x005D2284, - 0x005D9884, 0x00000002, 0x005D3084, 0x005D9684, 0x00000004, 0x0062C486, - 0x0063C286, 0x0062C286, 0x0063CE86, 0x00000005, 0x0062C886, 0x0063A886, - 0x00648286, 0x0062AC86, 0x0063B886, 0x00000003, 0x0065769C, 0x0027D69C, - 0x0065CA9C, 0x00000005, 0x0065769C, 0x0065AA9C, 0xA001291C, 0x0027D69C, - 0x00659E9C, 0x00000004, 0x0065769C, 0x0065CA9C, 0x0065AE9C, 0x0065769C, - 0x00000005, 0x0065769C, 0x0065D89C, 0x0065B09C, - // Block 133, offset 0x2140 - 0xA001291C, 0x0065769C, 0x00000005, 0x0065789C, 0x0065A29C, 0x0065D89C, - 0x0065869C, 0xA001281C, 0x00000003, 0x0065789C, 0x0065D89C, 0x0065989C, - 0x00000002, 0x00657A8E, 0xA0812802, 0x00000002, 0x00657A91, 0xA0812802, - 0x00000003, 0x00657A9C, 0x0065809C, 0x0065D89C, 0x00000004, 0x00657E9C, - 0x0027D69C, 0x0065829C, 0x0027D69C, 0x00000006, 0x00657E9C, 0x0065909C, - 0x0065869C, 0x0027D69C, 0x00659E9C, 0xA001281C, 0x00000003, 0x0065809C, - 0x0027D69C, 0x0065B89C, 0x00000003, 0x0065809C, 0x0065D89C, 0x0065909C, - 0x00000002, 0x0065828E, 0xA0812802, 0x00000002, 0x00658291, 0xA0812802, - 0x00000003, 0x0065829C, 0x0065789C, 0x0065C89C, 0x00000004, 0x0065829C, - 0x0065C69C, 0x00659A9C, 0x00659E9C, 0x00000004, 0x0065829C, 0x0065CE9C, - 0x0065C89C, 0x0027D69C, 0x00000004, 0x0065829C, - // Block 134, offset 0x2180 - 0xA001281C, 0x0065CE9C, 0x0065D89C, 0x00000004, 0x0065829C, 0xA001281C, - 0x0065D89C, 0x0065B49C, 0x00000002, 0x0065848E, 0xA0812802, 0x00000002, - 0x00658491, 0xA0812802, 0x00000004, 0x0065849C, 0xA001281C, 0x0065829C, - 0xA001281C, 0x00000004, 0x0065849C, 0xA001281C, 0x0065A29C, 0x0027D69C, - 0x00000004, 0x0065849C, 0x0065C09C, 0x0065C89C, 0x0027D69C, 0x00000006, - 0x0065849C, 0xA001281C, 0x0065CA9C, 0x0065969C, 0xA001281C, 0x0027D69C, - 0x00000006, 0x0065849C, 0x0065CE9C, 0x0065869C, 0xA001281C, 0x0065C69C, - 0x0065B89C, 0x00000006, 0x0065849C, 0x0065CE9C, 0x0065BA9C, 0x0027D69C, - 0x00659E9C, 0x0065CA9C, 0x00000005, 0x0065849C, 0x0065CE9C, 0x0065D09C, - 0x00659A9C, 0x00659E9C, 0x00000002, 0x0065868E, 0xA0812802, 0x00000002, - 0x00658691, 0xA0812802, 0x00000004, 0x0065869C, - // Block 135, offset 0x21c0 - 0xA001281C, 0x0065C69C, 0x0065B89C, 0x00000006, 0x0065869C, 0xA001281C, - 0x0065C69C, 0x0065B89C, 0x00659E9C, 0x0065D89C, 0x00000006, 0x0065869C, - 0x0065CA9C, 0x0065929C, 0xA001281C, 0x0065789C, 0x0065CE9C, 0x00000004, - 0x0065869C, 0x0065CE9C, 0x0027D69C, 0x0065A69C, 0x00000002, 0x0065888E, - 0xA0812802, 0x00000002, 0x00658891, 0xA0812802, 0x00000003, 0x0065889C, - 0x0027D69C, 0x0065909C, 0x00000002, 0x00658A8E, 0xA0812802, 0x00000002, - 0x00658A91, 0xA0812802, 0x00000004, 0x00658A9C, 0x0027D69C, 0x0065B29C, - 0xA001291C, 0x00000003, 0x00658A9C, 0x0065CA9C, 0x0065A09C, 0x00000002, - 0x00658C8E, 0xA0812802, 0x00000002, 0x00658C91, 0xA0812802, 0x00000004, - 0x00658C9C, 0x0065789C, 0x0065869C, 0x0065CA9C, 0x00000005, 0x00658C9C, - 0x0065D89C, 0x0065989C, 0x0027D69C, 0x0065B89C, - // Block 136, offset 0x2200 - 0x00000002, 0x00658E8E, 0xA0812802, 0x00000002, 0x00658E91, 0xA0812802, - 0x00000002, 0x00658E84, 0x0065BA84, 0x00000005, 0x00658E9C, 0x0065C89C, - 0x0065D89C, 0x0065869C, 0xA001281C, 0x00000002, 0x0065908E, 0xA0812802, - 0x00000002, 0x00659091, 0xA0812802, 0x00000002, 0x0065928E, 0xA0812802, - 0x00000002, 0x00659291, 0xA0812802, 0x00000003, 0x0065929C, 0x0065D89C, - 0x0065989C, 0x00000003, 0x0065929C, 0x0065D89C, 0x00659E9C, 0x00000002, - 0x0065948E, 0xA0812802, 0x00000002, 0x00659491, 0xA0812802, 0x00000002, - 0x0065968E, 0xA0812802, 0x00000002, 0x00659691, 0xA0812802, 0x00000004, - 0x0065969C, 0xA001281C, 0x0027D69C, 0x0065909C, 0x00000002, 0x0065988E, - 0xA0812802, 0x00000002, 0x00659891, 0xA0812802, 0x00000002, 0x00659A8E, - 0xA0812802, 0x00000002, 0x00659A91, 0xA0812802, - // Block 137, offset 0x2240 - 0x00000002, 0x00659C8E, 0xA0812802, 0x00000002, 0x00659C91, 0xA0812802, - 0x00000003, 0x00659C9C, 0xA001281C, 0x00658E9C, 0x00000002, 0x00659E8E, - 0xA0812802, 0x00000002, 0x00659E91, 0xA0812802, 0x00000003, 0x00659E9C, - 0xA001281C, 0x0065CA9C, 0x00000003, 0x0065A89C, 0x00659A9C, 0x00659E9C, - 0x00000002, 0x0065AA8E, 0xA0812802, 0x00000002, 0x0065AA91, 0xA0812802, - 0x00000002, 0x0065AA8E, 0xA0812902, 0x00000002, 0x0065AA91, 0xA0812902, - 0x00000006, 0x0065AA9C, 0xA001291C, 0x0027D69C, 0x0065929C, 0x0065D89C, - 0x00659E9C, 0x00000004, 0x0065AA9C, 0xA001291C, 0x0027D69C, 0x00659A9C, - 0x00000005, 0x0065AA9C, 0xA001281C, 0x0027D69C, 0x0065CC9C, 0x0065CA9C, - 0x00000003, 0x0065AA9C, 0x0065789C, 0x00659A9C, 0x00000002, 0x0065AC8E, - 0xA0812802, 0x00000002, 0x0065AC91, 0xA0812802, - // Block 138, offset 0x2280 - 0x00000002, 0x0065AC8E, 0xA0812902, 0x00000002, 0x0065AC91, 0xA0812902, - 0x00000006, 0x0065AC9C, 0xA001291C, 0x0065769C, 0x0065909C, 0x00659E9C, - 0x0065CA9C, 0x00000004, 0x0065AC9C, 0xA001291C, 0x0065869C, 0x0065CA9C, - 0x00000003, 0x0065AC9C, 0xA001291C, 0x00658A9C, 0x00000003, 0x0065AC9C, - 0xA001281C, 0x0065CA9C, 0x00000002, 0x0065AE8E, 0xA0812802, 0x00000002, - 0x0065AE91, 0xA0812802, 0x00000002, 0x0065AE8E, 0xA0812902, 0x00000002, - 0x0065AE91, 0xA0812902, 0x00000006, 0x0065AE9C, 0x0065769C, 0x0065C69C, - 0x00659A9C, 0x00659E9C, 0xA001281C, 0x00000004, 0x0065AE9C, 0x0065789C, - 0x0027D69C, 0x00659E9C, 0x00000006, 0x0065AE9C, 0xA001281C, 0x00659A9C, - 0x00658E9C, 0x00657E9C, 0x0065CA9C, 0x00000003, 0x0065AE9C, 0x0065C69C, - 0x0065D89C, 0x00000002, 0x0065B08E, 0xA0812802, - // Block 139, offset 0x22c0 - 0x00000002, 0x0065B091, 0xA0812802, 0x00000002, 0x0065B08E, 0xA0812902, - 0x00000002, 0x0065B091, 0xA0812902, 0x00000005, 0x0065B09C, 0xA001291C, - 0x0027D69C, 0x00658E9C, 0xA001281C, 0x00000004, 0x0065B09C, 0xA001281C, - 0x0027D69C, 0x0065969C, 0x00000005, 0x0065B09C, 0x0065869C, 0x0065969C, - 0x0027D69C, 0x0065CA9C, 0x00000003, 0x0065B09C, 0xA001291C, 0x0065949C, - 0x00000004, 0x0065B09C, 0xA001291C, 0x0065A29C, 0x0065AC9C, 0x00000003, - 0x0065B09C, 0x0065CA9C, 0x00659A9C, 0x00000004, 0x0065B09C, 0xA001291C, - 0x0065D89C, 0x0065909C, 0x00000002, 0x0065B28E, 0xA0812802, 0x00000002, - 0x0065B291, 0xA0812802, 0x00000002, 0x0065B28E, 0xA0812902, 0x00000002, - 0x0065B291, 0xA0812902, 0x00000003, 0x0065B29C, 0x0027D69C, 0x0065CA9C, - 0x00000003, 0x0065B29C, 0x0027D69C, 0x0065D89C, - // Block 140, offset 0x2300 - 0x00000005, 0x0065B29C, 0xA001291C, 0x0065789C, 0x0065D89C, 0x00659E9C, - 0x00000004, 0x0065B29C, 0xA001281C, 0x0065CA9C, 0x00659E9C, 0x00000005, - 0x0065B29C, 0xA001291C, 0x0065D89C, 0x00659E9C, 0xA001281C, 0x00000004, - 0x0065B49C, 0x0065789C, 0x0065869C, 0x0065CE9C, 0x00000003, 0x0065B49C, - 0x0065789C, 0x0065CA9C, 0x00000002, 0x0065B484, 0x00659084, 0x00000003, - 0x0065B49C, 0x00659A9C, 0x0065AA9C, 0x00000003, 0x0065B49C, 0x0065CA9C, - 0x0065869C, 0x00000005, 0x0065B49C, 0x0065D89C, 0x00658E9C, 0x0065C49C, - 0x0065D89C, 0x00000004, 0x0065B69C, 0x0065869C, 0x0065CE9C, 0x0065D89C, - 0x00000006, 0x0065B69C, 0x0065C89C, 0x0065AA9C, 0xA001281C, 0x0027D69C, - 0x0065CA9C, 0x00000004, 0x0065BA9C, 0x0027D69C, 0x00659E9C, 0x0065CA9C, - 0x00000003, 0x0065BA9C, 0x0065829C, 0xA001281C, - // Block 141, offset 0x2340 - 0x00000005, 0x0065BA9C, 0x0065829C, 0xA001281C, 0x00659E9C, 0x0065D89C, - 0x00000004, 0x0065BE9C, 0x0027D69C, 0x00659E9C, 0xA001281C, 0x00000003, - 0x0065BE9C, 0x0027D69C, 0x0065CA9C, 0x00000003, 0x0065C09C, 0x0065769C, - 0x0065D89C, 0x00000004, 0x0065C89C, 0x00659A9C, 0x00659E9C, 0x0065CA9C, - 0x00000005, 0x0065CA9C, 0x0027D69C, 0x0065AE9C, 0xA001281C, 0x0065CA9C, - 0x00000004, 0x0065CA9C, 0x0065AC9C, 0xA001291C, 0x0027D69C, 0x00000006, - 0x0065CC9C, 0x0065D89C, 0x00659E9C, 0x0065889C, 0xA001281C, 0x0065D89C, - 0x00000002, 0x0065D091, 0xA0812802, 0x00000003, 0x0065D09C, 0x00659A9C, - 0x00659E9C, 0x00000002, 0x0065D291, 0xA0812802, 0x00000002, 0x0065D491, - 0xA0812802, 0x00000002, 0x0065D691, 0xA0812802, 0x00000002, 0x0065DA84, - 0xA0013A04, 0x00000002, 0x0065EC84, 0xA0013A04, - // Block 142, offset 0x2380 - 0x00000002, 0x0065F684, 0xA0013A04, 0x00000002, 0x00660684, 0xA0013A04, - 0x00000002, 0x00661284, 0xA0013A04, 0x00000002, 0x00661484, 0xA0013A04, - 0x00000002, 0x00661C84, 0xA0013A04, 0x00000002, 0x00661E84, 0xA0013A04, - 0x00000002, 0x00662284, 0xA0013A04, 0x00000002, 0x00663884, 0xA0013A04, - 0x00000002, 0x00663896, 0xA0013A16, 0x00000002, 0x00663A84, 0xA0013A04, - 0x00000002, 0x00663A84, 0xA0013C04, 0x00000002, 0x0075C284, 0xA0013904, - 0x00000002, 0x00862084, 0xA0013904, 0x00000002, 0x00862284, 0xA0013904, - 0x00000002, 0x00862484, 0xA0013904, 0x00000002, 0x00862684, 0xA0013904, - 0x00000002, 0x00862884, 0xA0013904, 0x00000002, 0x00862A84, 0xA0013904, - 0x00000002, 0x00862C84, 0xA0013904, 0x00000002, 0x00862C84, 0xA0013A04, - 0x00000002, 0x00862E84, 0xA0013904, 0x00000002, - // Block 143, offset 0x23c0 - 0x00863084, 0xA0013904, 0x00000002, 0x00863284, 0xA0013904, 0x00000002, - 0x00863284, 0xA0013A04, 0x00000002, 0x00863484, 0xA0013904, 0x00000002, - 0x00863484, 0xA0013A04, 0x00000002, 0x00863684, 0xA0013904, 0x00000002, - 0x00863684, 0xA0013A04, 0x00000002, 0x00863884, 0xA0013904, 0x00000002, - 0x00863A84, 0xA0013904, 0x00000002, 0x00863C84, 0xA0013904, 0x00000002, - 0x00863E84, 0xA0013904, 0x00000002, 0x00863E84, 0xA0013A04, 0x00000002, - 0x00863E84, 0xA0013C04, 0x00000002, 0x00864084, 0xA0013904, 0x00000002, - 0x00864284, 0xA0013904, 0x00000002, 0x00864484, 0xA0013904, 0x00000002, - 0x00864684, 0xA0013904, 0x00000002, 0x00864684, 0xA0013A04, 0x00000002, - 0x00864884, 0xA0013904, 0x00000002, 0x00864884, 0xA0013A04, 0x00000002, - 0x00864A84, 0xA0013904, 0x00000002, 0x00864C84, - // Block 144, offset 0x2400 - 0xA0013904, 0x00000002, 0x029C6C84, 0xA0013904, 0x00000002, 0x029CB284, - 0xA0013904, 0x00000002, 0x02A30484, 0xA0013904, 0x00000002, 0x02A3C084, - 0xA0013904, 0x00000002, 0x02A40084, 0xA0013904, 0x00000002, 0x02A6B884, - 0xA0013904, 0x00000002, 0x02A6D284, 0xA0013904, 0x00000002, 0x02A70484, - 0xA0013904, 0x00000002, 0x02B81E84, 0xA0013904, 0x00000002, 0x02B81E84, - 0xA0013A04, 0x00000002, 0x02B84484, 0xA0013904, 0x00000002, 0x02B84684, - 0xA0013904, 0x00000002, 0x02BEA084, 0xA0013904, 0x00000002, 0x02BF8684, - 0xA0013904, 0x00000002, 0x02CBCA84, 0xA0013904, 0x00000002, 0x02CE1084, - 0xA0013904, 0x00000004, 0x02D0549C, 0x02BE1E9C, 0x029E349C, 0x02F27C9C, - 0x00000002, 0x02D6F484, 0xA0013904, 0x00000002, 0x02E45684, 0xA0013904, - 0x00000002, 0x02E4B684, 0xA0013904, 0x00000002, - // Block 145, offset 0x2440 - 0x02E71684, 0xA0013904, 0x00000002, 0x02EB1684, 0xA0013904, 0x00000002, - 0x02EDDC84, 0xA0013904, 0x00000002, 0x02F27484, 0xA0013904, 0x00000002, - 0x02F5F284, 0xA0013904, 0x00000002, 0x02FEA484, 0xA0013904, 0x00000002, - 0x02FEA684, 0xA0013904, 0x00000002, 0x02FEA684, 0xA0013A04, 0x00000002, - 0x02FF1484, 0xA0013904, 0x00000002, 0x02FF1484, 0xA0013A04, 0x00000002, - 0x0300FE84, 0xA0013904, 0x00000002, 0x03011284, 0xA0013904, 0x00000002, - 0x0303F884, 0xA0013904, 0x00000002, 0x0304F284, 0xA0013904, 0x00000002, - 0x0304F284, 0xA0013A04, 0x00000002, 0x0313A484, 0xA0013904, 0x00000002, - 0x031B6684, 0xA0013904, 0x00000002, 0x031F6C84, 0xA0013904, 0x00000002, - 0x031F6C84, 0xA0013A04, 0x00000002, 0x03212284, 0xA0013904, 0x00000002, - 0x032C3884, 0xA0013904, 0x00000002, 0x032DD084, - // Block 146, offset 0x2480 - 0xA0013904, 0x00000002, 0x0331C084, 0xA0013904, 0x00000002, 0x03332C84, - 0xA0013904, 0x00000002, 0x03355084, 0xA0013904, 0x00000002, 0x03367884, - 0xA0013904, 0x00000002, 0x033CEA84, 0xA0013904, 0x00000002, 0x033E9484, - 0xA0013904, 0x00000002, 0x033EA484, 0xA0013904, 0x00000002, 0x033F1A84, - 0xA0013904, 0x00000002, 0x033F3884, 0xA0013904, 0x00000002, 0x033F3884, - 0xA0013A04, 0x00000002, 0xA000AD18, 0xA000BA18, 0x00000002, 0xA000B218, - 0xA000BA18, 0x00000002, 0xA000B618, 0xA000BA18, 0x00000002, 0x00393C99, - 0x003A8E99, 0x00000002, 0x00393C9A, 0x003A8E9A, 0x00000002, 0x00395699, - 0x003A8E99, 0x00000002, 0x0039569A, 0x003A8E9A, 0x00000002, 0x00395899, - 0x003A8E99, 0x00000002, 0x0039589A, 0x003A8E9A, 0x00000002, 0x00396499, - 0x003A8E99, 0x00000002, 0x0039649A, 0x003A8E9A, - // Block 147, offset 0x24c0 - 0x00000002, 0x00397299, 0x003A8E99, 0x00000002, 0x0039729A, 0x003A8E9A, - 0x00000002, 0x00397499, 0x003A8E99, 0x00000002, 0x0039749A, 0x003A8E9A, - 0x00000002, 0x0039C699, 0x003A8E99, 0x00000002, 0x0039C69A, 0x003A8E9A, - 0x00000002, 0x0039C899, 0x003A8E99, 0x00000002, 0x0039C89A, 0x003A8E9A, - 0x00000002, 0x0039DC99, 0x003A8E99, 0x00000002, 0x0039DC9A, 0x003A8E9A, - 0x00000002, 0x0039DE99, 0x003A8E99, 0x00000002, 0x0039DE9A, 0x003A8E9A, - 0x00000002, 0x0039E699, 0x003A8E99, 0x00000002, 0x0039E69A, 0x003A8E9A, - 0x00000002, 0x0039EE99, 0x003A8E99, 0x00000002, 0x0039EE9A, 0x003A8E9A, - 0x00000002, 0x0039F099, 0x003A8E99, 0x00000002, 0x0039F09A, 0x003A8E9A, - 0x00000002, 0x0039FC99, 0x003A8E99, 0x00000002, 0x0039FC9A, 0x003A8E9A, - 0x00000002, 0x003A1299, 0x003A8E99, 0x00000002, - // Block 148, offset 0x2500 - 0x003A129A, 0x003A8E9A, 0x00000002, 0x003A1A99, 0x003A8E99, 0x00000002, - 0x003A1A9A, 0x003A8E9A, 0x00000002, 0x003A4099, 0x003A8E99, 0x00000002, - 0x003A409A, 0x003A8E9A, 0x00000002, 0x003A4E9A, 0x003A8E9A, 0x00000002, - 0x003A5699, 0x003A8E99, 0x00000002, 0x003A569A, 0x003A8E9A, 0x00000002, - 0x003A689A, 0x003A8E9A, 0x00000002, 0x003A8E99, 0xA000D119, 0x00000002, - 0x003A8E9A, 0xA000D11A, 0x00000002, 0x003A9099, 0x003A8E99, 0x00000002, - 0x003A909A, 0x003A8E9A, 0x00000002, 0x4062AC20, 0x4062AC20, 0x00000002, - 0x4062AC20, 0x4062BE20, 0x00000002, 0x4062B020, 0x4062C420, 0x00000002, - 0x4062B020, 0x4062D020, 0x00000002, 0x4062B220, 0x4062B220, 0x00000002, - 0x4062B620, 0x4062AC20, 0x00000002, 0x4062B620, 0x4062B820, 0x00000002, - 0x4062B620, 0x4062BA20, 0x00000002, 0x4062B620, - // Block 149, offset 0x2540 - 0x4062BE20, 0x00000002, 0x4062B620, 0x4062CC20, 0x00000002, 0x4062B620, - 0x4062CE20, 0x00000002, 0x4062B620, 0x4062D020, 0x00000002, 0x4062BA20, - 0x4062BA20, 0x00000002, 0x4062BA20, 0x4062BE20, 0x00000002, 0x4062BE20, - 0x4062BE20, 0x00000002, 0x4062C420, 0x4062C420, 0x00000002, 0x4063A820, - 0x4063D020, 0x00000002, 0x4063AC20, 0x4063D020, 0x00000002, 0x4063B020, - 0x4063D020, 0x00000002, 0x4063B420, 0x4063D020, 0x00000002, 0x4063B820, - 0x4063A820, 0x00000003, 0x4063B820, 0x4063A820, 0x4063D020, 0x00000002, - 0x4063B820, 0x4063D020, 0x00000002, 0x4063C220, 0x4063CE20, 0x00000003, - 0x4063C220, 0x4063CE20, 0x4063D020, 0x00000002, 0x4063C220, 0x4063D020, - 0x00000003, 0x0003F484, 0x002D9A8A, 0x0003F69F, 0x00000003, 0x0003F484, - 0x002F5684, 0x0003F69F, 0x00000003, 0x0003F484, - // Block 150, offset 0x2580 - 0x002F568A, 0x0003F69F, 0x00000003, 0x0003F484, 0x0030F684, 0x0003F69F, - 0x00000003, 0x0003F484, 0x0030F68A, 0x0003F69F, 0x00000002, 0x002C0A9D, - 0x002F569C, 0x00000002, 0x402C3C20, 0xAE603202, 0x00000002, 0x002C3C83, - 0xAE603202, 0x00000002, 0x402D6A20, 0xAE604702, 0x00000002, 0x002D6A83, - 0xAE604702, 0x00000002, 0x402D6A20, 0xAE605202, 0x00000002, 0x002D6A83, - 0xAE605202, 0x00000002, 0x002D9883, 0xAE603202, 0x00000002, 0x002D9883, - 0xAE603502, 0x00000002, 0x002D9883, 0xAE603702, 0x00000002, 0x002D9883, - 0xAE603C02, 0x00000002, 0x002D9883, 0xAE604102, 0x00000002, 0x002D9883, - 0xAE604702, 0x00000003, 0x002D9883, 0xAE604702, 0xAE603202, 0x00000002, - 0x002D9883, 0xAE604E02, 0x00000002, 0x002D9883, 0xACA05902, 0x00000002, - 0x002D9883, 0xAE605B02, 0x00000002, 0x002D9883, - // Block 151, offset 0x25c0 - 0xAE606402, 0x00000002, 0x002D9883, 0xAE606502, 0x00000002, 0x002D9883, - 0xAE606702, 0x00000002, 0x002D9883, 0xADC07002, 0x00000002, 0x002D9883, - 0xADC07A02, 0x00000002, 0x002D9A8A, 0x002D9A9F, 0x00000003, 0x002D9A8A, - 0x002D9A8A, 0x002D9A9F, 0x00000002, 0x002D9A8A, 0x002DCC8A, 0x00000002, - 0x002D9A9D, 0x00306C9D, 0x00000002, 0x002D9A8A, 0x0030BE9F, 0x00000002, - 0x002D9A84, 0x0030F69F, 0x00000002, 0x002D9A8A, 0x0030F69F, 0x00000002, - 0x002E229C, 0x0030F69C, 0x00000002, 0x402EE420, 0xAE604E02, 0x00000002, - 0x002EE483, 0xAE604E02, 0x00000002, 0x402EE420, 0xAE605B02, 0x00000002, - 0x002EE483, 0xAE605B02, 0x00000002, 0x40306E20, 0xAE603202, 0x00000002, - 0x00306E83, 0xAE603202, 0x00000002, 0x40306E20, 0xAE603502, 0x00000002, - 0x00306E83, 0xAE603502, 0x00000002, 0x40306E20, - // Block 152, offset 0x2600 - 0xAE604102, 0x00000002, 0x00306E83, 0xAE604102, 0x00000002, 0x40306E20, - 0xAE605B02, 0x00000002, 0x00306E83, 0xAE605B02, 0x00000002, 0x0030BE8A, - 0x002D9A9F, 0x00000003, 0x0030BE8A, 0x002D9A8A, 0x002D9A9F, 0x00000002, - 0x0030F684, 0x002D9A9F, 0x00000002, 0x0030F68A, 0x002D9A9F, 0x00000003, - 0x0030F684, 0x002D9A84, 0x002D9A9F, 0x00000003, 0x0030F68A, 0x002D9A8A, - 0x002D9A9F, 0x00000002, 0x402BE020, 0xAE603702, 0x00000002, 0x002BE083, - 0xAE603702, 0x00000002, 0x402BE020, 0xAE603C02, 0x00000002, 0x002BE083, - 0xAE603C02, 0x00000002, 0x402BE020, 0xAE604302, 0x00000002, 0x002BE083, - 0xAE604302, 0x00000002, 0x402C9A20, 0xAE603C02, 0x00000002, 0x002C9A83, - 0xAE603C02, 0x00000002, 0x402C9A20, 0xAE605B02, 0x00000002, 0x002C9A83, - 0xAE605B02, 0x00000002, 0x402D9C20, 0xAE604702, - // Block 153, offset 0x2640 - 0x00000002, 0x002D9C83, 0xAE604702, 0x00000002, 0x402EE420, 0xAE603C02, - 0x00000002, 0x002EE483, 0xAE603C02, 0x00000002, 0x402EE420, 0xAD806802, - 0x00000002, 0x002EE483, 0xAD806802, 0x00000002, 0x402FE820, 0xAE605202, - 0x00000002, 0x002FE883, 0xAE605202, 0x00000002, 0x40306E20, 0xAE604702, - 0x00000002, 0x00306E83, 0xAE604702, 0x00000002, 0x40306E20, 0xAE604E02, - 0x00000002, 0x00306E83, 0xAE604E02, 0x00000002, 0x40306E20, 0xAD806802, - 0x00000002, 0x00306E83, 0xAD806802, 0x00000002, 0x002C6294, 0xA0013914, - 0x00000002, 0x00302C83, 0x402D6820, 0x00000002, 0x00302C89, 0x002D6888, - 0x00000002, 0x40310021, 0xAE603202, 0x00000002, 0x003100A3, 0xAE603202, - 0x00000002, 0x40310021, 0xAE603502, 0x00000002, 0x003100A3, 0xAE603502, - 0x00000002, 0x40310021, 0xAE604102, 0x00000002, - // Block 154, offset 0x2680 - 0x003100A3, 0xAE604102, 0x00000002, 0x40310021, 0xAE605B02, 0x00000002, - 0x003100A3, 0xAE605B02, 0x00000002, 0x40320C20, 0xAE603202, 0x00000002, - 0x00320C83, 0xAE603202, 0x00000002, 0x40320C20, 0xAE605B02, 0x00000002, - 0x00320C83, 0xAE605B02, 0x00000002, 0x40320C21, 0xAE605B02, 0x00000002, - 0x00320CA3, 0xAE605B02, 0x00000002, 0x40320E20, 0xAE603202, 0x00000002, - 0x00320E83, 0xAE603202, 0x00000002, 0x40320E21, 0xAE604E02, 0x00000002, - 0x00320EA3, 0xAE604E02, 0x00000002, 0x40320E21, 0xAE605B02, 0x00000002, - 0x00320EA3, 0xAE605B02, 0x00000002, 0x40321020, 0xAE603202, 0x00000002, - 0x00321083, 0xAE603202, 0x00000002, 0x402BDE21, 0x002C9888, 0x00000002, - 0x002BDEA3, 0x002C9888, 0x00000003, 0x402BDE21, 0x002C9888, 0xAE605B02, - 0x00000003, 0x002BDEA3, 0x002C9888, 0xAE605B02, - // Block 155, offset 0x26c0 - 0x00000002, 0x402EE221, 0x002C9888, 0x00000002, 0x002EE2A3, 0x002C9888, - 0x00000003, 0x402EE221, 0x002C9888, 0xAE604E02, 0x00000003, 0x002EE2A3, - 0x002C9888, 0xAE604E02, 0x00000003, 0x402EE221, 0x002C9888, 0xAE605B02, - 0x00000003, 0x002EE2A3, 0x002C9888, 0xAE605B02, 0x00000002, 0x40306C21, - 0x002C9888, 0x00000002, 0x00306CA3, 0x002C9888, 0x00000003, 0x40306C21, - 0x002C9888, 0xAE603202, 0x00000003, 0x00306CA3, 0x002C9888, 0xAE603202, - 0x00000003, 0x40306C21, 0x002C9888, 0xAE603502, 0x00000003, 0x00306CA3, - 0x002C9888, 0xAE603502, 0x00000003, 0x40306C21, 0x002C9888, 0xAE604102, - 0x00000003, 0x00306CA3, 0x002C9888, 0xAE604102, 0x00000003, 0x40306C21, - 0x002C9888, 0xAE605B02, 0x00000003, 0x00306CA3, 0x002C9888, 0xAE605B02, - 0x00000003, 0x0003F484, 0x0030E284, 0x0003F69F, - // Block 156, offset 0x2700 - 0x00000003, 0x0003F484, 0x0030E28A, 0x0003F69F, 0x00000002, 0x002DFE9C, - 0x0030E29D, 0x00000002, 0x002E829C, 0x0030E29D, 0x00000002, 0x002E829D, - 0x0030E29D, 0x00000002, 0x002E9E9C, 0x0030E29D, 0x00000002, 0x002F2C9C, - 0x0030E29D, 0x00000002, 0x40302C21, 0x402D6820, 0x00000002, 0x00302CA3, - 0x402D6820, 0x00000002, 0x4030BE21, 0xAE603202, 0x00000002, 0x0030BEA3, - 0xAE603202, 0x00000002, 0x4030BE21, 0xAE603502, 0x00000002, 0x0030BEA3, - 0xAE603502, 0x00000002, 0x4030BE21, 0xAE603C02, 0x00000002, 0x0030BEA3, - 0xAE603C02, 0x00000002, 0x4030BE21, 0xAE604302, 0x00000002, 0x4030BE21, - 0xAE604702, 0x00000002, 0x0030BEA3, 0xAE604702, 0x00000002, 0x4030BE21, - 0xAE605202, 0x00000002, 0x0030BEA3, 0xAE605202, 0x00000002, 0x4030BE21, - 0xADC07002, 0x00000002, 0x0030BEA3, 0xADC07002, - // Block 157, offset 0x2740 - 0x00000002, 0x0030E29D, 0x002C0A9C, 0x00000002, 0x0030E29D, 0x002C3A9D, - 0x00000002, 0x0030E28C, 0x00312A8C, 0x00000002, 0x40320E20, 0xAE605B02, - 0x00000002, 0x00320E83, 0xAE605B02, 0x00000002, 0x40320E21, 0xAE603202, - 0x00000002, 0x00320EA3, 0xAE603202, 0x00000002, 0x40321020, 0xAE605B02, - 0x00000002, 0x00321083, 0xAE605B02, 0x00000002, 0x40321021, 0xAE603202, - 0x00000002, 0x003210A3, 0xAE603202, 0x00000002, 0x40321023, 0xAE603202, - 0x00000002, 0x003210E3, 0xAE603202, 0x00000002, 0x40321023, 0xAE603C02, - 0x00000002, 0x003210E3, 0xAE603C02, 0x00000002, 0x40321023, 0xAE604702, - 0x00000002, 0x003210E3, 0xAE604702, 0x00000002, 0x40321023, 0xAE605B02, - 0x00000002, 0x003210E3, 0xAE605B02, 0x00000002, 0x40321023, 0xAD806802, - 0x00000002, 0x003210E3, 0xAD806802, 0x00000002, - // Block 158, offset 0x2780 - 0x0032769C, 0x0030E29D, 0x00000002, 0x402C3E20, 0xACA05602, 0x00000002, - 0x002C3E83, 0xACA05602, 0x00000002, 0x402C0820, 0xAE603702, 0x00000002, - 0x002C0883, 0xAE603702, 0x00000002, 0x402C0820, 0xAE603C02, 0x00000002, - 0x002C0883, 0xAE603C02, 0x00000002, 0x402D0620, 0xAE603C02, 0x00000002, - 0x002D0683, 0xAE603C02, 0x00000002, 0x402D0620, 0xAE605B02, 0x00000002, - 0x002D0683, 0xAE605B02, 0x00000002, 0x402DCA20, 0xAE604702, 0x00000002, - 0x002DCA83, 0xAE604702, 0x00000002, 0x402F2A20, 0xAE603C02, 0x00000002, - 0x002F2A83, 0xAE603C02, 0x00000002, 0x402F2A20, 0xAE604E02, 0x00000002, - 0x002F2A83, 0xAE604E02, 0x00000002, 0x402F2A20, 0xAE605B02, 0x00000002, - 0x002F2A83, 0xAE605B02, 0x00000002, 0x402F2A20, 0xAD806802, 0x00000002, - 0x002F2A83, 0xAD806802, 0x00000002, 0x4030BC20, - // Block 159, offset 0x27c0 - 0xAE604702, 0x00000002, 0x0030BC83, 0xAE604702, 0x00000002, 0x4030BC20, - 0xAE604E02, 0x00000002, 0x0030BC83, 0xAE604E02, 0x00000002, 0x4030BC20, - 0xAD806802, 0x00000002, 0x0030BC83, 0xAD806802, 0x00000002, 0x40320E20, - 0xAE604E02, 0x00000002, 0x00320E83, 0xAE604E02, 0x00000002, 0x4062AC20, - 0x4062B020, 0x00000002, 0x4062AC20, 0x4062B220, 0x00000002, 0x4062AC20, - 0x4062B620, 0x00000002, 0x4062AC20, 0x4062BA20, 0x00000003, 0x4062AC20, - 0x4062BE20, 0x4062AC20, 0x00000002, 0x4062AC20, 0x4062C820, 0x00000002, - 0x4062AC20, 0x4062CA20, 0x00000002, 0x4062AC20, 0x4062D020, 0x00000002, - 0x4062B020, 0x4062AC20, 0x00000002, 0x4062B020, 0x4062B020, 0x00000002, - 0x4062B020, 0x4062B220, 0x00000002, 0x4062B020, 0x4062BA20, 0x00000002, - 0x4062B020, 0x4062BE20, 0x00000002, 0x4062B020, - // Block 160, offset 0x2800 - 0x4062CC20, 0x00000002, 0x4062B220, 0x4062AC20, 0x00000002, 0x4062B220, - 0x4062B620, 0x00000003, 0x4062B620, 0x4062AC20, 0x4062BE20, 0x00000002, - 0x4062B620, 0x4062B020, 0x00000002, 0x4062B620, 0x4062B220, 0x00000003, - 0x4062B620, 0x4062B220, 0x4062D020, 0x00000002, 0x4062B620, 0x4062B620, - 0x00000003, 0x4062B620, 0x4062B820, 0x4062AC20, 0x00000003, 0x4062B620, - 0x4062B820, 0x4062BE20, 0x00000003, 0x4062B620, 0x4062BA20, 0x4062BE20, - 0x00000003, 0x4062B620, 0x4062BA20, 0x4062C220, 0x00000003, 0x4062B620, - 0x4062BA20, 0x4062D020, 0x00000003, 0x4062B620, 0x4062BE20, 0x4062BE20, - 0x00000002, 0x4062B620, 0x4062C220, 0x00000002, 0x4062B620, 0x4062CA20, - 0x00000002, 0x4062B820, 0x4062AC20, 0x00000002, 0x4062B820, 0x4062B620, - 0x00000002, 0x4062B820, 0x4062BA20, 0x00000002, - // Block 161, offset 0x2840 - 0x4062B820, 0x4062BE20, 0x00000003, 0x4062B820, 0x4062BE20, 0x4062BE20, - 0x00000002, 0x4062B820, 0x4062C220, 0x00000002, 0x4062B820, 0x4062C820, - 0x00000002, 0x4062B820, 0x4062D020, 0x00000002, 0x4062BA20, 0x4062AC20, - 0x00000002, 0x4062BA20, 0x4062B020, 0x00000002, 0x4062BA20, 0x4062B220, - 0x00000002, 0x4062BA20, 0x4062B620, 0x00000003, 0x4062BA20, 0x4062BA20, - 0x4062C220, 0x00000003, 0x4062BA20, 0x4062BE20, 0x4062AC20, 0x00000003, - 0x4062BA20, 0x4062BE20, 0x4062B220, 0x00000003, 0x4062BA20, 0x4062BE20, - 0x4062BA20, 0x00000003, 0x4062BA20, 0x4062BE20, 0x4062BE20, 0x00000003, - 0x4062BA20, 0x4062BE20, 0x4062C420, 0x00000002, 0x4062BA20, 0x4062C220, - 0x00000002, 0x4062BA20, 0x4062C420, 0x00000002, 0x4062BA20, 0x4062C820, - 0x00000002, 0x4062BA20, 0x4062CC20, 0x00000002, - // Block 162, offset 0x2880 - 0x4062BA20, 0x4062CE20, 0x00000002, 0x4062BA20, 0x4062D020, 0x00000002, - 0x4062BE20, 0x4062AC20, 0x00000002, 0x4062BE20, 0x4062B020, 0x00000002, - 0x4062BE20, 0x4062B220, 0x00000002, 0x4062BE20, 0x4062B620, 0x00000002, - 0x4062BE20, 0x4062B820, 0x00000002, 0x4062BE20, 0x4062BA20, 0x00000003, - 0x4062BE20, 0x4062BA20, 0x4062AC20, 0x00000003, 0x4062BE20, 0x4062BE20, - 0x4062BE20, 0x00000002, 0x4062BE20, 0x4062C220, 0x00000002, 0x4062BE20, - 0x4062C420, 0x00000002, 0x4062BE20, 0x4062C820, 0x00000002, 0x4062BE20, - 0x4062CA20, 0x00000002, 0x4062BE20, 0x4062CC20, 0x00000002, 0x4062BE20, - 0x4062CE20, 0x00000002, 0x4062BE20, 0x4062D020, 0x00000002, 0x4062C220, - 0x4062AC20, 0x00000003, 0x4062C220, 0x4062AC20, 0x4062AC20, 0x00000002, - 0x4062C220, 0x4062B220, 0x00000002, 0x4062C220, - // Block 163, offset 0x28c0 - 0x4062B820, 0x00000002, 0x4062C220, 0x4062BA20, 0x00000002, 0x4062C220, - 0x4062BE20, 0x00000002, 0x4062C220, 0x4062C220, 0x00000002, 0x4062C220, - 0x4062C420, 0x00000002, 0x4062C220, 0x4062C820, 0x00000002, 0x4062C220, - 0x4062CA20, 0x00000002, 0x4062C220, 0x4062CC20, 0x00000002, 0x4062C220, - 0x4062CE20, 0x00000002, 0x4062C420, 0x4062C220, 0x00000002, 0x4062C820, - 0x4062CA20, 0x00000002, 0x4062C820, 0x4062D020, 0x00000002, 0x4062CE20, - 0x4062BA20, 0x00000002, 0x4062CE20, 0x4062C220, 0x00000002, 0x4062D020, - 0x4062B020, 0x00000002, 0x4062D020, 0x4062B620, 0x00000002, 0x4062D020, - 0x4062B820, 0x00000002, 0x4062D020, 0x4062BA20, 0x00000002, 0x4062D020, - 0x4062D020, 0x00000002, 0x4063A820, 0x4063B820, 0x00000002, 0x4063A820, - 0x4063C220, 0x00000002, 0x4063A820, 0x4063CC20, - // Block 164, offset 0x2900 - 0x00000002, 0x4063AC20, 0x4063B820, 0x00000002, 0x4063AC20, 0x4063C020, - 0x00000002, 0x4063AC20, 0x4063C220, 0x00000002, 0x4063B020, 0x4063B820, - 0x00000002, 0x4063B020, 0x4063C220, 0x00000002, 0x4063B020, 0x4063CC20, - 0x00000002, 0x4063B420, 0x4063AC20, 0x00000002, 0x4063B420, 0x4063B820, - 0x00000002, 0x4063B420, 0x4063C220, 0x00000002, 0x4063B820, 0x4063AC20, - 0x00000003, 0x4063B820, 0x4063AC20, 0x4063D020, 0x00000002, 0x4063B820, - 0x4063B020, 0x00000003, 0x4063B820, 0x4063B020, 0x4063D020, 0x00000003, - 0x4063B820, 0x4063B420, 0x4063D020, 0x00000002, 0x4063B820, 0x4063B820, - 0x00000002, 0x4063B820, 0x4063C220, 0x00000002, 0x4063C020, 0x4063AC20, - 0x00000003, 0x4063C020, 0x4063AC20, 0x4063D020, 0x00000002, 0x4063C020, - 0x4063B420, 0x00000002, 0x4063C020, 0x4063B820, - // Block 165, offset 0x2940 - 0x00000002, 0x4063C020, 0x4063D020, 0x00000002, 0x4063C220, 0x4063A820, - 0x00000003, 0x4063C220, 0x4063A820, 0x4063D020, 0x00000003, 0x4063C220, - 0x4063B020, 0x4063CC20, 0x00000003, 0x4063C220, 0x4063B420, 0x4063D020, - 0x00000002, 0x4063C220, 0x4063C220, 0x00000002, 0x4063CA20, 0x4063A820, - 0x00000002, 0x4063CA20, 0x4063B020, 0x00000003, 0x4063CA20, 0x4063B020, - 0x4063D020, 0x00000002, 0x4063CA20, 0x4063B420, 0x00000003, 0x4063CA20, - 0x4063B420, 0x4063D020, 0x00000002, 0x4063CA20, 0x4063C220, 0x00000002, - 0x4063CA20, 0x4063D020, 0x00000002, 0x4063CC20, 0x4063C220, 0x00000002, - 0x4063CC20, 0x4063CC20, 0x00000002, 0x4063CE20, 0x4063C220, 0x00000002, - 0x4063D020, 0x4063A820, 0x00000002, 0x4063D020, 0x4063AC20, 0x00000002, - 0x4063D020, 0x4063B820, 0x00000002, 0x4063D020, - // Block 166, offset 0x2980 - 0x4063C220, 0x00000002, 0x4063D020, 0x4063CC20, 0x00000002, 0x0062AC86, - 0x0063A886, 0x00000002, 0x0062B086, 0x0063A886, 0x00000002, 0x0062B286, - 0x0063A886, 0x00000002, 0x0062B686, 0x0063A886, 0x00000002, 0x0062B886, - 0x0063A886, 0x00000002, 0x0062BA86, 0x0063A886, 0x00000002, 0x0062BE86, - 0x0063A886, 0x00000002, 0x0062C286, 0x0063A886, 0x00000002, 0x0062C286, - 0x0063C286, 0x00000002, 0x0062C486, 0x0063A886, 0x00000002, 0x0062C886, - 0x0063A886, 0x00000002, 0x0062CA86, 0x0063A886, 0x00000002, 0x0062CC86, - 0x0063A886, 0x00000002, 0x0062CE86, 0x0063A886, 0x00000002, 0x0062D086, - 0x0063A886, 0x00000002, 0x40302A20, 0xAE605202, 0x00000002, 0x00302A83, - 0xAE605202, 0x00000002, 0x40320820, 0xAE603202, 0x00000002, 0x00320883, - 0xAE603202, 0x00000002, 0x40320A20, 0xAE603202, - // Block 167, offset 0x29c0 - 0x00000002, 0x00320A83, 0xAE603202, 0x00000002, 0x40320A20, 0xAE605B02, - 0x00000002, 0x00320A83, 0xAE605B02, 0x00000002, 0x40320E21, 0xAE603702, - 0x00000002, 0x00320EA3, 0xAE603702, 0x00000002, 0x40320E21, 0xAE603C02, - 0x00000002, 0x00320EA3, 0xAE603C02, 0x00000002, 0x40321022, 0xAE603202, - 0x00000002, 0x003210C3, 0xAE603202, 0x00000002, 0x40321022, 0xAE604702, - 0x00000002, 0x003210C3, 0xAE604702, 0x00000002, 0x40321022, 0xAE605B02, - 0x00000002, 0x003210C3, 0xAE605B02, 0x00000002, 0x40321022, 0xAD806802, - 0x00000002, 0x003210C3, 0xAD806802, 0x00000002, 0x40321023, 0xAE603502, - 0x00000002, 0x003210E3, 0xAE603502, 0x00000002, 0x40321023, 0xAE604E02, - 0x00000002, 0x003210E3, 0xAE604E02, 0x00000002, 0x40321023, 0xAE606402, - 0x00000002, 0x003210E3, 0xAE606402, 0x00000002, - // Block 168, offset 0x2a00 - 0x40321023, 0xADC07002, 0x00000002, 0x003210E3, 0xADC07002, 0x00000002, - 0x40321024, 0xAE605B02, 0x00000002, 0x00321103, 0xAE605B02, 0x00000002, - 0x402BE220, 0xAE605B02, 0x00000002, 0x002BE283, 0xAE605B02, 0x00000002, - 0x402EE620, 0xAE603202, 0x00000002, 0x002EE683, 0xAE603202, 0x00000002, - 0x402EE620, 0xAE603502, 0x00000002, 0x002EE683, 0xAE603502, 0x00000002, - 0x402EE620, 0xAE604E02, 0x00000002, 0x002EE683, 0xAE604E02, 0x00000002, - 0x402EE620, 0xAE606402, 0x00000002, 0x002EE683, 0xAE606402, 0x00000002, - 0x402EE620, 0xADC07002, 0x00000002, 0x002EE683, 0xADC07002, 0x00000002, - 0x0030BE83, 0xAE604E02, 0x00000002, 0x0030BE83, 0xADC07002, 0x00000002, - 0x40321020, 0xAE604E02, 0x00000002, 0x00321083, 0xAE604E02, 0x00000002, - 0x40321024, 0xAE603202, 0x00000002, 0x00321103, - // Block 169, offset 0x2a40 - 0xAE603202, 0x00000002, 0x40321024, 0xAE603502, 0x00000002, 0x00321103, - 0xAE603502, 0x00000002, 0x40321024, 0xAE604E02, 0x00000002, 0x00321103, - 0xAE604E02, 0x00000002, 0x40321024, 0xAE606402, 0x00000002, 0x00321103, - 0xAE606402, 0x00000002, 0x40321024, 0xADC07002, 0x00000002, 0x00321103, - 0xADC07002, -} - -// mainContractElem: 1125 entries, 4500 bytes -var mainContractElem = [1125]uint32{ - // Block 0, offset 0x0 - 0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x002E2288, 0xE0000D01, 0xE0000D01, - 0x40332220, 0x40332A20, 0x40333220, 0x00332288, 0x00332A88, 0x00333288, - 0x40333A20, 0x40334220, 0x00333A88, 0x00334288, 0x40336220, 0x4033A220, - 0x4033A220, 0x00336288, 0x0033A288, 0x0033A288, 0x4033B220, 0x4033BA20, - 0x0033B288, 0x0033BA88, 0x4033CA20, 0x4033D420, 0x0033CA88, 0x0033D488, - 0x4033E420, 0x4033F220, 0x0033E488, 0x0033F288, 0x40341420, 0x40343E20, - 0x40342420, 0x00341488, 0x00343E88, 0x00342488, 0x40342C20, 0x40343620, - 0x00342C88, 0x00343688, 0x4034EE20, 0x4034F620, 0x0034EE88, 0x0034F688, - 0x4034FE20, 0x40350620, 0x0034FE88, 0x00350688, 0x40345020, 0x40356A20, - 0x40356A20, 0x00345088, 0x00356A88, 0x00356A88, 0x40357220, 0x40357A20, - 0x40358220, 0x40358A20, 0x00357288, 0x00357A88, - // Block 1, offset 0x40 - 0x00358288, 0x00358A88, 0x40361820, 0x40362220, 0x00361888, 0x00362288, - 0x40367E20, 0x40368620, 0x00367E88, 0x00368688, 0x4036A820, 0x4036B020, - 0x0036A888, 0x0036B088, 0x40371420, 0x40371C20, 0x00371488, 0x00371C88, - 0x40393820, 0x40391E20, 0x40392020, 0x40392820, 0x403A7420, 0x40392620, - 0x403A9020, 0x40393020, 0x4040F020, 0x4040F420, 0x4040F620, 0x40426E20, - 0x40427220, 0x40427020, 0x40427420, 0x40429020, 0x40429420, 0x4042D020, - 0x4042D620, 0x4042DA20, 0x4042D220, 0x4042D820, 0x40435E20, 0x40436220, - 0x4043E020, 0x4043E220, 0x4043F020, 0x4043F820, 0x4043F620, 0x4043F220, - 0x4043F420, 0x4043F620, 0x4043F820, 0x40448220, 0x40448820, 0x40448C20, - 0x40448420, 0x40448A20, 0x40451E20, 0x40452620, 0x40452020, 0x40452420, - 0x40452820, 0x40452420, 0x40452620, 0x40498420, - // Block 2, offset 0x80 - 0xE0001881, 0xE0001890, 0xE000189F, 0xE00018AE, 0xE00018BD, 0xE00018CC, - 0xE00018DB, 0xE00018EA, 0xE00018F9, 0xE0001908, 0xE0001917, 0xE0001926, - 0xE0001935, 0xE0001944, 0xE0001953, 0xE0001962, 0xE0001971, 0xE0001980, - 0xE000198F, 0xE000199E, 0xE00019AD, 0xE00019BC, 0xE00019CB, 0xE00019DA, - 0xE00019E9, 0xE00019F8, 0xE0001A07, 0xE0001A16, 0xE0001A25, 0xE0001A34, - 0xE0001A43, 0xE0001A52, 0xE0001A61, 0xE0001A70, 0xE0001A7F, 0xE0001A8E, - 0xE0001A9D, 0xE0001AAC, 0xE0001ABB, 0xE0001ACA, 0xE0001AD9, 0xE0001AE8, - 0xE0001AF7, 0xE0001B06, 0xE0001B15, 0xE0001B24, 0x40498620, 0xE0001884, - 0xE0001893, 0xE00018A2, 0xE00018B1, 0xE00018C0, 0xE00018CF, 0xE00018DE, - 0xE00018ED, 0xE00018FC, 0xE000190B, 0xE000191A, 0xE0001929, 0xE0001938, - 0xE0001947, 0xE0001956, 0xE0001965, 0xE0001974, - // Block 3, offset 0xc0 - 0xE0001983, 0xE0001992, 0xE00019A1, 0xE00019B0, 0xE00019BF, 0xE00019CE, - 0xE00019DD, 0xE00019EC, 0xE00019FB, 0xE0001A0A, 0xE0001A19, 0xE0001A28, - 0xE0001A37, 0xE0001A46, 0xE0001A55, 0xE0001A64, 0xE0001A73, 0xE0001A82, - 0xE0001A91, 0xE0001AA0, 0xE0001AAF, 0xE0001ABE, 0xE0001ACD, 0xE0001ADC, - 0xE0001AEB, 0xE0001AFA, 0xE0001B09, 0xE0001B18, 0xE0001B27, 0x40498820, - 0xE0001887, 0xE0001896, 0xE00018A5, 0xE00018B4, 0xE00018C3, 0xE00018D2, - 0xE00018E1, 0xE00018F0, 0xE00018FF, 0xE000190E, 0xE000191D, 0xE000192C, - 0xE000193B, 0xE000194A, 0xE0001959, 0xE0001968, 0xE0001977, 0xE0001986, - 0xE0001995, 0xE00019A4, 0xE00019B3, 0xE00019C2, 0xE00019D1, 0xE00019E0, - 0xE00019EF, 0xE00019FE, 0xE0001A0D, 0xE0001A1C, 0xE0001A2B, 0xE0001A3A, - 0xE0001A49, 0xE0001A58, 0xE0001A67, 0xE0001A76, - // Block 4, offset 0x100 - 0xE0001A85, 0xE0001A94, 0xE0001AA3, 0xE0001AB2, 0xE0001AC1, 0xE0001AD0, - 0xE0001ADF, 0xE0001AEE, 0xE0001AFD, 0xE0001B0C, 0xE0001B1B, 0xE0001B2A, - 0x40498A20, 0xE000188A, 0xE0001899, 0xE00018A8, 0xE00018B7, 0xE00018C6, - 0xE00018D5, 0xE00018E4, 0xE00018F3, 0xE0001902, 0xE0001911, 0xE0001920, - 0xE000192F, 0xE000193E, 0xE000194D, 0xE000195C, 0xE000196B, 0xE000197A, - 0xE0001989, 0xE0001998, 0xE00019A7, 0xE00019B6, 0xE00019C5, 0xE00019D4, - 0xE00019E3, 0xE00019F2, 0xE0001A01, 0xE0001A10, 0xE0001A1F, 0xE0001A2E, - 0xE0001A3D, 0xE0001A4C, 0xE0001A5B, 0xE0001A6A, 0xE0001A79, 0xE0001A88, - 0xE0001A97, 0xE0001AA6, 0xE0001AB5, 0xE0001AC4, 0xE0001AD3, 0xE0001AE2, - 0xE0001AF1, 0xE0001B00, 0xE0001B0F, 0xE0001B1E, 0xE0001B2D, 0x40498C20, - 0xE000188D, 0xE000189C, 0xE00018AB, 0xE00018BA, - // Block 5, offset 0x140 - 0xE00018C9, 0xE00018D8, 0xE00018E7, 0xE00018F6, 0xE0001905, 0xE0001914, - 0xE0001923, 0xE0001932, 0xE0001941, 0xE0001950, 0xE000195F, 0xE000196E, - 0xE000197D, 0xE000198C, 0xE000199B, 0xE00019AA, 0xE00019B9, 0xE00019C8, - 0xE00019D7, 0xE00019E6, 0xE00019F5, 0xE0001A04, 0xE0001A13, 0xE0001A22, - 0xE0001A31, 0xE0001A40, 0xE0001A4F, 0xE0001A5E, 0xE0001A6D, 0xE0001A7C, - 0xE0001A8B, 0xE0001A9A, 0xE0001AA9, 0xE0001AB8, 0xE0001AC7, 0xE0001AD6, - 0xE0001AE5, 0xE0001AF4, 0xE0001B03, 0xE0001B12, 0xE0001B21, 0xE0001B30, - 0xA0010502, 0x40497420, 0x4049E620, 0xE0001B42, 0xE0001B51, 0xE0001B60, - 0xE0001B6F, 0xE0001B7E, 0xE0001B9C, 0xE0001BBA, 0xE0001BC9, 0xE0001BD8, - 0xE0001BE7, 0xE0001BF6, 0xE0001C05, 0xE0001C14, 0xE0001C23, 0xE0001C32, - 0xE0001C41, 0xE0001C50, 0xE0001C5F, 0xE0001C6E, - // Block 6, offset 0x180 - 0xE0001C7D, 0xE0001C8C, 0xE0001C9B, 0xE0001CAA, 0xE0001B8D, 0xE0001CE1, - 0xE0001CF0, 0xE0001CFF, 0xE0001CB9, 0xE0001CCD, 0xE0001B33, 0xE0001BAB, - 0x4049E820, 0xE0001B45, 0xE0001B54, 0xE0001B63, 0xE0001B72, 0xE0001B81, - 0xE0001B9F, 0xE0001BBD, 0xE0001BCC, 0xE0001BDB, 0xE0001BEA, 0xE0001BF9, - 0xE0001C08, 0xE0001C17, 0xE0001C26, 0xE0001C35, 0xE0001C44, 0xE0001C53, - 0xE0001C62, 0xE0001C71, 0xE0001C80, 0xE0001C8F, 0xE0001C9E, 0xE0001CAD, - 0xE0001B90, 0xE0001CE4, 0xE0001CF3, 0xE0001D02, 0xE0001CBD, 0xE0001CD1, - 0xE0001B36, 0xE0001BAE, 0x4049EA20, 0xE0001B48, 0xE0001B57, 0xE0001B66, - 0xE0001B75, 0xE0001B84, 0xE0001BA2, 0xE0001BC0, 0xE0001BCF, 0xE0001BDE, - 0xE0001BED, 0xE0001BFC, 0xE0001C0B, 0xE0001C1A, 0xE0001C29, 0xE0001C38, - 0xE0001C47, 0xE0001C56, 0xE0001C65, 0xE0001C74, - // Block 7, offset 0x1c0 - 0xE0001C83, 0xE0001C92, 0xE0001CA1, 0xE0001CB0, 0xE0001B93, 0xE0001CE7, - 0xE0001CF6, 0xE0001D05, 0xE0001CC1, 0xE0001CD5, 0xE0001B39, 0xE0001BB1, - 0x4049EC20, 0xE0001B4B, 0xE0001B5A, 0xE0001B69, 0xE0001B78, 0xE0001B87, - 0xE0001BA5, 0xE0001BC3, 0xE0001BD2, 0xE0001BE1, 0xE0001BF0, 0xE0001BFF, - 0xE0001C0E, 0xE0001C1D, 0xE0001C2C, 0xE0001C3B, 0xE0001C4A, 0xE0001C59, - 0xE0001C68, 0xE0001C77, 0xE0001C86, 0xE0001C95, 0xE0001CA4, 0xE0001CB3, - 0xE0001B96, 0xE0001CEA, 0xE0001CF9, 0xE0001D08, 0xE0001CC5, 0xE0001CD9, - 0xE0001B3C, 0xE0001BB4, 0x4049EE20, 0xE0001B4E, 0xE0001B5D, 0xE0001B6C, - 0xE0001B7B, 0xE0001B8A, 0xE0001BA8, 0xE0001BC6, 0xE0001BD5, 0xE0001BE4, - 0xE0001BF3, 0xE0001C02, 0xE0001C11, 0xE0001C20, 0xE0001C2F, 0xE0001C3E, - 0xE0001C4D, 0xE0001C5C, 0xE0001C6B, 0xE0001C7A, - // Block 8, offset 0x200 - 0xE0001C89, 0xE0001C98, 0xE0001CA7, 0xE0001CB6, 0xE0001B99, 0xE0001CED, - 0xE0001CFC, 0xE0001D0B, 0xE0001CC9, 0xE0001CDD, 0xE0001B3F, 0xE0001BB7, - 0xA0010B02, 0x4049D220, 0x404A5A20, 0xE0001D0E, 0xE0001D1D, 0xE0001D2C, - 0xE0001D3B, 0xE0001D4A, 0xE0001D59, 0xE0001D68, 0xE0001D77, 0xE0001D86, - 0xE0001D95, 0xE0001DA4, 0xE0001DB3, 0xE0001DC2, 0xE0001DD1, 0xE0001DE0, - 0xE0001DEF, 0xE0001DFE, 0xE0001E0D, 0xE0001E1C, 0xE0001E2B, 0xE0001E3A, - 0xE0001E49, 0xE0001E58, 0xE0001E67, 0xE0001E76, 0xE0001E85, 0xE0001E94, - 0xE0001EA3, 0xE0001EB2, 0xE0001EC1, 0xE0001ED0, 0xE0001EDF, 0xE0001EEE, - 0xE0001EFD, 0xE0001F0C, 0xE0001F1B, 0xE0001F2A, 0xE0001F39, 0xE0001F48, - 0xE0001F57, 0xE0001F66, 0xE0001F75, 0xE0001F84, 0xE0001F93, 0xE0001FA2, - 0xE0001FB1, 0xE0001FC0, 0xE0001FCF, 0x404A5C20, - // Block 9, offset 0x240 - 0xE0001D11, 0xE0001D20, 0xE0001D2F, 0xE0001D3E, 0xE0001D4D, 0xE0001D5C, - 0xE0001D6B, 0xE0001D7A, 0xE0001D89, 0xE0001D98, 0xE0001DA7, 0xE0001DB6, - 0xE0001DC5, 0xE0001DD4, 0xE0001DE3, 0xE0001DF2, 0xE0001E01, 0xE0001E10, - 0xE0001E1F, 0xE0001E2E, 0xE0001E3D, 0xE0001E4C, 0xE0001E5B, 0xE0001E6A, - 0xE0001E79, 0xE0001E88, 0xE0001E97, 0xE0001EA6, 0xE0001EB5, 0xE0001EC4, - 0xE0001ED3, 0xE0001EE2, 0xE0001EF1, 0xE0001F00, 0xE0001F0F, 0xE0001F1E, - 0xE0001F2D, 0xE0001F3C, 0xE0001F4B, 0xE0001F5A, 0xE0001F69, 0xE0001F78, - 0xE0001F87, 0xE0001F96, 0xE0001FA5, 0xE0001FB4, 0xE0001FC3, 0xE0001FD2, - 0x404A6220, 0xE0001D14, 0xE0001D23, 0xE0001D32, 0xE0001D41, 0xE0001D50, - 0xE0001D5F, 0xE0001D6E, 0xE0001D7D, 0xE0001D8C, 0xE0001D9B, 0xE0001DAA, - 0xE0001DB9, 0xE0001DC8, 0xE0001DD7, 0xE0001DE6, - // Block 10, offset 0x280 - 0xE0001DF5, 0xE0001E04, 0xE0001E13, 0xE0001E22, 0xE0001E31, 0xE0001E40, - 0xE0001E4F, 0xE0001E5E, 0xE0001E6D, 0xE0001E7C, 0xE0001E8B, 0xE0001E9A, - 0xE0001EA9, 0xE0001EB8, 0xE0001EC7, 0xE0001ED6, 0xE0001EE5, 0xE0001EF4, - 0xE0001F03, 0xE0001F12, 0xE0001F21, 0xE0001F30, 0xE0001F3F, 0xE0001F4E, - 0xE0001F5D, 0xE0001F6C, 0xE0001F7B, 0xE0001F8A, 0xE0001F99, 0xE0001FA8, - 0xE0001FB7, 0xE0001FC6, 0xE0001FD5, 0x404A6620, 0xE0001D17, 0xE0001D26, - 0xE0001D35, 0xE0001D44, 0xE0001D53, 0xE0001D62, 0xE0001D71, 0xE0001D80, - 0xE0001D8F, 0xE0001D9E, 0xE0001DAD, 0xE0001DBC, 0xE0001DCB, 0xE0001DDA, - 0xE0001DE9, 0xE0001DF8, 0xE0001E07, 0xE0001E16, 0xE0001E25, 0xE0001E34, - 0xE0001E43, 0xE0001E52, 0xE0001E61, 0xE0001E70, 0xE0001E7F, 0xE0001E8E, - 0xE0001E9D, 0xE0001EAC, 0xE0001EBB, 0xE0001ECA, - // Block 11, offset 0x2c0 - 0xE0001ED9, 0xE0001EE8, 0xE0001EF7, 0xE0001F06, 0xE0001F15, 0xE0001F24, - 0xE0001F33, 0xE0001F42, 0xE0001F51, 0xE0001F60, 0xE0001F6F, 0xE0001F7E, - 0xE0001F8D, 0xE0001F9C, 0xE0001FAB, 0xE0001FBA, 0xE0001FC9, 0xE0001FD8, - 0x404A6820, 0xE0001D1A, 0xE0001D29, 0xE0001D38, 0xE0001D47, 0xE0001D56, - 0xE0001D65, 0xE0001D74, 0xE0001D83, 0xE0001D92, 0xE0001DA1, 0xE0001DB0, - 0xE0001DBF, 0xE0001DCE, 0xE0001DDD, 0xE0001DEC, 0xE0001DFB, 0xE0001E0A, - 0xE0001E19, 0xE0001E28, 0xE0001E37, 0xE0001E46, 0xE0001E55, 0xE0001E64, - 0xE0001E73, 0xE0001E82, 0xE0001E91, 0xE0001EA0, 0xE0001EAF, 0xE0001EBE, - 0xE0001ECD, 0xE0001EDC, 0xE0001EEB, 0xE0001EFA, 0xE0001F09, 0xE0001F18, - 0xE0001F27, 0xE0001F36, 0xE0001F45, 0xE0001F54, 0xE0001F63, 0xE0001F72, - 0xE0001F81, 0xE0001F90, 0xE0001F9F, 0xE0001FAE, - // Block 12, offset 0x300 - 0xE0001FBD, 0xE0001FCC, 0xE0001FDB, 0x404AEA20, 0xE000200E, 0xE0002011, - 0x404B2620, 0x404B2420, 0x404B2620, 0x404AF020, 0xE0002014, 0xE0002017, - 0x404B2A20, 0x404B2820, 0x404B2A20, 0x8281258B, 0x8281258D, 0x82812591, - 0x8281258F, 0x404ECA20, 0x404ECC20, 0x404F9C20, 0x404F9620, 0x404F9E20, - 0x404F9820, 0x40522620, 0x40522820, 0x40522A20, 0x40522C20, 0x40522E20, - 0x40523020, 0x40523220, 0x40523420, 0x40523620, 0x40523820, 0x40523E20, - 0x40524020, 0x40529C20, 0x40529E20, 0x4052A020, 0x4052A220, 0x4052A420, - 0x4052A820, 0x4052A620, 0x4052AA20, 0x4052AC20, 0x4052AE20, 0x40094220, - 0x40094420, 0x40393820, 0x40393A21, 0x40393A22, 0x40393A23, 0x403A7420, - 0x403A7621, 0x403A9020, 0x403A9221, 0x402C3A20, 0x402C3C20, 0x002C3A88, - 0x002C3C83, 0x402D2220, 0x402D2420, 0x002D2288, - // Block 13, offset 0x340 - 0x002D2483, 0x002D9883, 0x002D9A83, 0x402EE220, 0x402EE420, 0x002EE288, - 0x002EE483, 0x402FE620, 0x402FE820, 0x002FE688, 0x002FE883, 0x40306C20, - 0x40306E20, 0x00306C88, 0x00306E83, 0x402E2220, 0x402E2420, 0x402E2420, - 0x002E2288, 0x002E2483, 0x002E2483, 0x402BDE20, 0x402BE020, 0x002BDE88, - 0x002BE083, 0x402C6220, 0x402C6420, 0x002C6288, 0x002C6483, 0x402C9820, - 0x402C9A20, 0x402C9C20, 0x002C9888, 0x002C9A83, 0x002C9C83, 0x402D9A20, - 0x402D9C20, 0x002D9A88, 0x002D9C83, 0x402E9E20, 0x402EA020, 0x002E9E88, - 0x002EA083, 0x402F7A20, 0x402F7C20, 0x002F7A88, 0x002F7C83, 0x40302C20, - 0x40302E20, 0x00302C88, 0x00302E83, 0x40306C20, 0x40306E20, 0x40307020, - 0x00306C88, 0x00306E83, 0x00307083, 0x40310020, 0x40310220, 0x00310088, - 0x00310283, 0x40312A20, 0x40312C20, 0x00312A88, - // Block 14, offset 0x380 - 0x00312C83, 0x40306C20, 0x40310021, 0x40310022, 0x00306C88, 0x003100A3, - 0x003100C3, 0x402BDE20, 0x40320C21, 0x40321020, 0x00321084, 0x002BDE88, - 0x00320CA3, 0x00321083, 0x00321086, 0x00321085, 0x402C9820, 0x40320C22, - 0x002C9888, 0x00320CC3, 0x402EE220, 0x40320E21, 0x40320E22, 0x002EE288, - 0x00320EA3, 0x00320EC3, 0x402BDE20, 0xE00026B2, 0x002BDE88, 0xE00026B5, - 0x402EE220, 0xE00026C0, 0x002EE288, 0xE00026C3, 0x40306C20, 0xE00026D6, - 0x00306C88, 0xE00026D9, 0x402BDE20, 0x40320E20, 0x40320C20, 0x002BDE88, - 0x00320E83, 0x00320C83, 0x402EE220, 0x40321023, 0x40321020, 0x40321022, - 0x002EE288, 0x003210E3, 0x00321083, 0x003210C3, 0x402C3A20, 0x402C3E20, - 0x402C3C20, 0x002C3A88, 0x002C3E83, 0x002C3C83, 0x402C6220, 0x402C6420, - 0x402C6420, 0x002C6288, 0x002C6486, 0x002C6484, - // Block 15, offset 0x3c0 - 0x002C6486, 0x002C6484, 0x402E2220, 0xE0000CFB, 0xE0000CFB, 0x402E2420, - 0x002E2288, 0xE0000D01, 0xE0000D01, 0x002E2486, 0x002E2484, 0x002E9E88, - 0x002EA086, 0x002EA084, 0x402BDE20, 0x402C0820, 0x40320C21, 0x40321020, - 0x002BDE88, 0x002C0883, 0x00320CA3, 0x00321083, 0x402C9820, 0x402D0620, - 0x002C9888, 0x002D0683, 0x402D9A20, 0x402DCA20, 0x002D9A88, 0x002DCA83, - 0x402EE220, 0x402F2A20, 0x40320E20, 0x002EE288, 0x002F2A83, 0x00320E83, - 0x40306C20, 0x4030BC20, 0x00306C88, 0x0030BC83, 0x40310020, 0x40312820, - 0x00310088, 0x00312883, 0x002DFE88, 0x002F56A3, 0x402BDE20, 0x40320C21, - 0x40321020, 0x002BDE88, 0x00320CA3, 0x00321083, 0x4062AC20, 0x4062AC21, - 0x4062B220, 0x4062B221, 0x4062BA20, 0x4062BA21, 0x4062BE20, 0x4062BE21, - 0x4062C420, 0x4062C421, 0x402BDE20, 0x40320C21, - // Block 16, offset 0x400 - 0x40321020, 0x40321021, 0x002BDE88, 0x00320CA3, 0x00321083, 0x003210A4, - 0x003210A3, 0x402BDE20, 0x402C0820, 0x40320E21, 0x40320C21, 0x40320E20, - 0x40320C20, 0x002BDE88, 0x002C0883, 0x00320EA3, 0x00320CA3, 0x00320E83, - 0x00320C83, 0x402C3A20, 0x402C5C20, 0x002C3A88, 0x002C5C83, 0x402C5E20, - 0x402C6020, 0x002C5E83, 0x002C6083, 0x402D2220, 0x402D6420, 0x002D2288, - 0x002D6483, 0x402DFE20, 0x402E2020, 0x002DFE88, 0x002E2083, 0x402E9E20, - 0x402EE021, 0x402EE022, 0x002E9E88, 0x002EE0A3, 0x002EE0C3, 0x402FE620, - 0x40302A20, 0x002FE688, 0x00302A83, 0x40312A20, 0x40320620, 0x00312A88, - 0x00320683, 0x402EE220, 0x40321023, 0x40321022, 0x40321020, 0x40321021, - 0x40321024, 0x002EE288, 0x003210E3, 0x003210C3, 0x00321083, 0x003210A3, - 0x00321103, 0x402BDE20, 0x402BE020, 0x402BE220, - // Block 17, offset 0x440 - 0x002BDE88, 0x002BE083, 0x002BE283, 0x402E2220, 0xE0000CFB, 0x402E2420, - 0x402E2620, 0xE0000CFB, 0x002E2288, 0xE0000D01, 0x002E2483, 0x002E2683, - 0xE0000D01, 0x402EE220, 0x402EE420, 0x402EE620, 0x002EE288, 0x002EE483, - 0x002EE683, 0x402F7A20, 0x402F7C20, 0x402F7E20, 0x002F7A88, 0x002F7C83, - 0x002F7E83, 0x402C9820, 0x40320E22, 0x002C9888, 0x00320EC3, 0x402EE220, - 0x40321024, 0x40321020, 0x40321022, 0x002EE288, 0x00321103, 0x00321083, - 0x003210C3, -} - -// mainValues: 37888 entries, 151552 bytes -// Block 2 is the null block. -var mainValues = [37888]uint32{ - // Block 0x0, offset 0x0 - 0x0000: 0xa0000000, 0x0001: 0xa0000000, 0x0002: 0xa0000000, 0x0003: 0xa0000000, - 0x0004: 0xa0000000, 0x0005: 0xa0000000, 0x0006: 0xa0000000, 0x0007: 0xa0000000, - 0x0008: 0xa0000000, 0x0009: 0x40020020, 0x000a: 0x40020220, 0x000b: 0x40020420, - 0x000c: 0x40020620, 0x000d: 0x40020820, 0x000e: 0xa0000000, 0x000f: 0xa0000000, - 0x0010: 0xa0000000, 0x0011: 0xa0000000, 0x0012: 0xa0000000, 0x0013: 0xa0000000, - 0x0014: 0xa0000000, 0x0015: 0xa0000000, 0x0016: 0xa0000000, 0x0017: 0xa0000000, - 0x0018: 0xa0000000, 0x0019: 0xa0000000, 0x001a: 0xa0000000, 0x001b: 0xa0000000, - 0x001c: 0xa0000000, 0x001d: 0xa0000000, 0x001e: 0xa0000000, 0x001f: 0xa0000000, - 0x0020: 0x40021220, 0x0021: 0x4002ba20, 0x0022: 0x4003e020, 0x0023: 0x4004ea20, - 0x0024: 0x4027de20, 0x0025: 0x4004ec20, 0x0026: 0x4004e620, 0x0027: 0x4003d220, - 0x0028: 0x4003f420, 0x0029: 0x4003f620, 0x002a: 0x4004d820, 0x002b: 0x40093820, - 0x002c: 0x40024020, 0x002d: 0x40021a20, 0x002e: 0x4002e420, 0x002f: 0x4004e220, - 0x0030: 0x4029cc20, 0x0031: 0x4029ce20, 0x0032: 0x4029d020, 0x0033: 0x4029d220, - 0x0034: 0x4029d420, 0x0035: 0x4029d620, 0x0036: 0x4029d820, 0x0037: 0x4029da20, - 0x0038: 0x4029dc20, 0x0039: 0x4029de20, 0x003a: 0x40026c20, 0x003b: 0x40026220, - 0x003c: 0x40094020, 0x003d: 0x40094220, 0x003e: 0x40094420, 0x003f: 0x4002c420, - // Block 0x1, offset 0x40 - 0x0040: 0x4004d620, 0x0041: 0x002bde88, 0x0042: 0x002c0a88, 0x0043: 0x002c3a88, - 0x0044: 0x002c6288, 0x0045: 0x002c9888, 0x0046: 0x002d0888, 0x0047: 0x002d2288, - 0x0048: 0x002d6888, 0x0049: 0x002d9a88, 0x004a: 0x002dcc88, 0x004b: 0x002dfe88, - 0x004c: 0xc0030002, 0x004d: 0x002e8288, 0x004e: 0x002e9e88, 0x004f: 0x002ee288, - 0x0050: 0x002f2c88, 0x0051: 0x002f5688, 0x0052: 0x002f7a88, 0x0053: 0x002fe688, - 0x0054: 0x00302c88, 0x0055: 0x00306c88, 0x0056: 0x0030be88, 0x0057: 0x0030e288, - 0x0058: 0x0030f688, 0x0059: 0x00310088, 0x005a: 0x00312a88, 0x005b: 0x4003f820, - 0x005c: 0x4004e420, 0x005d: 0x4003fa20, 0x005e: 0x40062420, 0x005f: 0x40021620, - 0x0060: 0x40061e20, 0x0061: 0x402bde20, 0x0062: 0x402c0a20, 0x0063: 0x402c3a20, - 0x0064: 0x402c6220, 0x0065: 0x402c9820, 0x0066: 0x402d0820, 0x0067: 0x402d2220, - 0x0068: 0x402d6820, 0x0069: 0x402d9a20, 0x006a: 0x402dcc20, 0x006b: 0x402dfe20, - 0x006c: 0xc0000002, 0x006d: 0x402e8220, 0x006e: 0x402e9e20, 0x006f: 0x402ee220, - 0x0070: 0x402f2c20, 0x0071: 0x402f5620, 0x0072: 0x402f7a20, 0x0073: 0x402fe620, - 0x0074: 0x40302c20, 0x0075: 0x40306c20, 0x0076: 0x4030be20, 0x0077: 0x4030e220, - 0x0078: 0x4030f620, 0x0079: 0x40310020, 0x007a: 0x40312a20, 0x007b: 0x4003fc20, - 0x007c: 0x40094820, 0x007d: 0x4003fe20, 0x007e: 0x40094c20, 0x007f: 0xa0000000, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0x00c0: 0xa0000000, 0x00c1: 0xa0000000, 0x00c2: 0xa0000000, 0x00c3: 0xa0000000, - 0x00c4: 0xa0000000, 0x00c5: 0x40020a20, 0x00c6: 0xa0000000, 0x00c7: 0xa0000000, - 0x00c8: 0xa0000000, 0x00c9: 0xa0000000, 0x00ca: 0xa0000000, 0x00cb: 0xa0000000, - 0x00cc: 0xa0000000, 0x00cd: 0xa0000000, 0x00ce: 0xa0000000, 0x00cf: 0xa0000000, - 0x00d0: 0xa0000000, 0x00d1: 0xa0000000, 0x00d2: 0xa0000000, 0x00d3: 0xa0000000, - 0x00d4: 0xa0000000, 0x00d5: 0xa0000000, 0x00d6: 0xa0000000, 0x00d7: 0xa0000000, - 0x00d8: 0xa0000000, 0x00d9: 0xa0000000, 0x00da: 0xa0000000, 0x00db: 0xa0000000, - 0x00dc: 0xa0000000, 0x00dd: 0xa0000000, 0x00de: 0xa0000000, 0x00df: 0xa0000000, - 0x00e0: 0x0002129b, 0x00e1: 0x4002bc20, 0x00e2: 0x4027dc20, 0x00e3: 0x4027e020, - 0x00e4: 0x4027da20, 0x00e5: 0x4027e220, 0x00e6: 0x40094a20, 0x00e7: 0x4004ce20, - 0x00e8: 0x40062c20, 0x00e9: 0x40081820, 0x00ea: 0x002bde94, 0x00eb: 0x4003f020, - 0x00ec: 0x40094620, 0x00ed: 0xa0000000, 0x00ee: 0x40081a20, 0x00ef: 0x40062620, - 0x00f0: 0x40070420, 0x00f1: 0x40093a20, 0x00f2: 0x0029d094, 0x00f3: 0x0029d294, - 0x00f4: 0x40062020, 0x00f5: 0x00327684, 0x00f6: 0x4004d220, 0x00f7: 0x40030620, - 0x00f8: 0x40063220, 0x00f9: 0x0029ce94, 0x00fa: 0x002ee294, 0x00fb: 0x4003f220, - 0x00fc: 0xe00002bf, 0x00fd: 0xe00002b7, 0x00fe: 0xe00004a7, 0x00ff: 0x4002c620, - // Block 0x4, offset 0x100 - 0x0100: 0xe00008f5, 0x0101: 0xe00008ef, 0x0102: 0xe0000921, 0x0103: 0xe0000969, - 0x0104: 0xe000095b, 0x0105: 0xe000094d, 0x0106: 0xe00009dd, 0x0107: 0xe0000a53, - 0x0108: 0xe0000ae8, 0x0109: 0xe0000ae2, 0x010a: 0xe0000af4, 0x010b: 0xe0000b20, - 0x010c: 0xe0000c2b, 0x010d: 0xe0000c25, 0x010e: 0xe0000c37, 0x010f: 0xe0000c43, - 0x0110: 0xe0000ab3, 0x0111: 0xe0000d63, 0x0112: 0xe0000d9a, 0x0113: 0xe0000d94, - 0x0114: 0xe0000da6, 0x0115: 0xe0000de6, 0x0116: 0xe0000dd2, 0x0117: 0x40093e20, - 0x0118: 0xe0000e12, 0x0119: 0xe0000fe1, 0x011a: 0xe0000fdb, 0x011b: 0xe0000fed, - 0x011c: 0xe0000fff, 0x011d: 0xe0001102, 0x011e: 0x00318888, 0x011f: 0xe0000f7b, - 0x0120: 0xe00008f2, 0x0121: 0xe00008ec, 0x0122: 0xe000091e, 0x0123: 0xe0000966, - 0x0124: 0xe0000958, 0x0125: 0xe000094a, 0x0126: 0xe00009d5, 0x0127: 0xe0000a4d, - 0x0128: 0xe0000ae5, 0x0129: 0xe0000adf, 0x012a: 0xe0000af1, 0x012b: 0xe0000b1d, - 0x012c: 0xe0000c28, 0x012d: 0xe0000c22, 0x012e: 0xe0000c34, 0x012f: 0xe0000c40, - 0x0130: 0xe0000aad, 0x0131: 0xe0000d60, 0x0132: 0xe0000d97, 0x0133: 0xe0000d91, - 0x0134: 0xe0000da3, 0x0135: 0xe0000de3, 0x0136: 0xe0000dcf, 0x0137: 0x40093c20, - 0x0138: 0xe0000e0f, 0x0139: 0xe0000fde, 0x013a: 0xe0000fd8, 0x013b: 0xe0000fea, - 0x013c: 0xe0000ffc, 0x013d: 0xe00010ff, 0x013e: 0x40318820, 0x013f: 0xe0001114, - // Block 0x5, offset 0x140 - 0x0140: 0xe0000983, 0x0141: 0xe0000980, 0x0142: 0xe00008fb, 0x0143: 0xe00008f8, - 0x0144: 0xe000097d, 0x0145: 0xe000097a, 0x0146: 0xe0000a38, 0x0147: 0xe0000a35, - 0x0148: 0xe0000a3e, 0x0149: 0xe0000a3b, 0x014a: 0xe0000a4a, 0x014b: 0xe0000a47, - 0x014c: 0xe0000a44, 0x014d: 0xe0000a41, 0x014e: 0xe0000a86, 0x014f: 0xe0000a83, - 0x0150: 0xe0000aaa, 0x0151: 0xe0000aa7, 0x0152: 0xe0000b46, 0x0153: 0xe0000b43, - 0x0154: 0xe0000aee, 0x0155: 0xe0000aeb, 0x0156: 0xe0000b2c, 0x0157: 0xe0000b29, - 0x0158: 0xe0000b40, 0x0159: 0xe0000b3d, 0x015a: 0xe0000b1a, 0x015b: 0xe0000b17, - 0x015c: 0xe0000bb8, 0x015d: 0xe0000bb5, 0x015e: 0xe0000bb2, 0x015f: 0xe0000baf, - 0x0160: 0xe0000bc4, 0x0161: 0xe0000bc1, 0x0162: 0xe0000bca, 0x0163: 0xe0000bc7, - 0x0164: 0xe0000bee, 0x0165: 0xe0000beb, 0x0166: 0xe0000c1b, 0x0167: 0xe0000c18, - 0x0168: 0xe0000c51, 0x0169: 0xe0000c4e, 0x016a: 0xe0000c60, 0x016b: 0xe0000c5d, - 0x016c: 0xe0000c31, 0x016d: 0xe0000c2e, 0x016e: 0xe0000c5a, 0x016f: 0xe0000c57, - 0x0170: 0xe0000c54, 0x0171: 0x402da220, 0x0172: 0xf0000a0a, 0x0173: 0xf0000404, - 0x0174: 0xe0000c8a, 0x0175: 0xe0000c87, 0x0176: 0xe0000c9f, 0x0177: 0xe0000c9c, - 0x0178: 0x402f7220, 0x0179: 0xe0000ccc, 0x017a: 0xe0000cc9, 0x017b: 0xe0000cd8, - 0x017c: 0xe0000cd5, 0x017d: 0xe0000cd2, 0x017e: 0xe0000ccf, 0x017f: 0xe0000d04, - // Block 0x6, offset 0x180 - 0x0180: 0xe0000cfe, 0x0181: 0xe0000cf8, 0x0182: 0xe0000cf5, 0x0183: 0xe0000d51, - 0x0184: 0xe0000d4e, 0x0185: 0xe0000d6f, 0x0186: 0xe0000d6c, 0x0187: 0xe0000d5d, - 0x0188: 0xe0000d5a, 0x0189: 0xf0000404, 0x018a: 0x002eda88, 0x018b: 0x402eda20, - 0x018c: 0xe0000e2e, 0x018d: 0xe0000e2b, 0x018e: 0xe0000da0, 0x018f: 0xe0000d9d, - 0x0190: 0xe0000de0, 0x0191: 0xe0000ddd, 0x0192: 0xe0000e93, 0x0193: 0xe0000e8f, - 0x0194: 0xe0000eca, 0x0195: 0xe0000ec7, 0x0196: 0xe0000edc, 0x0197: 0xe0000ed9, - 0x0198: 0xe0000ed0, 0x0199: 0xe0000ecd, 0x019a: 0xe0000f1f, 0x019b: 0xe0000f1c, - 0x019c: 0xe0000f2d, 0x019d: 0xe0000f2a, 0x019e: 0xe0000f47, 0x019f: 0xe0000f44, - 0x01a0: 0xe0000f33, 0x01a1: 0xe0000f30, 0x01a2: 0xe0000f99, 0x01a3: 0xe0000f96, - 0x01a4: 0xe0000f8a, 0x01a5: 0xe0000f87, 0x01a6: 0x00303688, 0x01a7: 0x40303620, - 0x01a8: 0xe000102b, 0x01a9: 0xe0001028, 0x01aa: 0xe000103f, 0x01ab: 0xe000103c, - 0x01ac: 0xe0000fe7, 0x01ad: 0xe0000fe4, 0x01ae: 0xe0000ff9, 0x01af: 0xe0000ff6, - 0x01b0: 0xe0001025, 0x01b1: 0xe0001022, 0x01b2: 0xe0001039, 0x01b3: 0xe0001036, - 0x01b4: 0xe00010d8, 0x01b5: 0xe00010d5, 0x01b6: 0xe000110e, 0x01b7: 0xe000110b, - 0x01b8: 0xe0001117, 0x01b9: 0xe000113b, 0x01ba: 0xe0001138, 0x01bb: 0xe000114d, - 0x01bc: 0xe000114a, 0x01bd: 0xe0001147, 0x01be: 0xe0001144, 0x01bf: 0xe0000f64, - // Block 0x7, offset 0x1c0 - 0x01c0: 0x402c1a20, 0x01c1: 0x002c2a88, 0x01c2: 0x002c3288, 0x01c3: 0x402c3220, - 0x01c4: 0x0031c488, 0x01c5: 0x4031c420, 0x01c6: 0x002efa88, 0x01c7: 0x002c4e88, - 0x01c8: 0x402c4e20, 0x01c9: 0x002c7288, 0x01ca: 0x002c7a88, 0x01cb: 0x002c8488, - 0x01cc: 0x402c8420, 0x01cd: 0xe000115c, 0x01ce: 0x002cae88, 0x01cf: 0x002cb888, - 0x01d0: 0x002cc288, 0x01d1: 0x002d1688, 0x01d2: 0x402d1620, 0x01d3: 0x002d4488, - 0x01d4: 0x002d5888, 0x01d5: 0x402d7820, 0x01d6: 0x002dc288, 0x01d7: 0x002db688, - 0x01d8: 0x002e0a88, 0x01d9: 0x402e0a20, 0x01da: 0x402e3820, 0x01db: 0x402e7220, - 0x01dc: 0x0030a088, 0x01dd: 0x002eb488, 0x01de: 0x402ebc20, 0x01df: 0x002f1088, - 0x01e0: 0xe0000e56, 0x01e1: 0xe0000e53, 0x01e2: 0x002d6088, 0x01e3: 0x402d6020, - 0x01e4: 0x002f3e88, 0x01e5: 0x402f3e20, 0x01e6: 0x002f8288, 0x01e7: 0x0031b488, - 0x01e8: 0x4031b420, 0x01e9: 0x00300888, 0x01ea: 0x40301220, 0x01eb: 0x40304220, - 0x01ec: 0x00304a88, 0x01ed: 0x40304a20, 0x01ee: 0x00305288, 0x01ef: 0xe000105f, - 0x01f0: 0xe000105c, 0x01f1: 0x0030b488, 0x01f2: 0x0030cc88, 0x01f3: 0x00311888, - 0x01f4: 0x40311820, 0x01f5: 0x00313488, 0x01f6: 0x40313420, 0x01f7: 0x00316488, - 0x01f8: 0x00316e88, 0x01f9: 0x40316e20, 0x01fa: 0x40317820, 0x01fb: 0x4031a620, - 0x01fc: 0x0031bc88, 0x01fd: 0x4031bc20, 0x01fe: 0xe0000fc9, 0x01ff: 0x40319420, - // Block 0x8, offset 0x200 - 0x0200: 0x40321220, 0x0201: 0x40321a20, 0x0202: 0x40322220, 0x0203: 0x40322a20, - 0x0204: 0xe0000ad5, 0x0205: 0xe0000ad1, 0x0206: 0xe0000acd, 0x0207: 0xf0000a0a, - 0x0208: 0xf000040a, 0x0209: 0xf0000404, 0x020a: 0xf0000a0a, 0x020b: 0xf000040a, - 0x020c: 0xf0000404, 0x020d: 0xe0000947, 0x020e: 0xe0000944, 0x020f: 0xe0000c3d, - 0x0210: 0xe0000c3a, 0x0211: 0xe0000dcc, 0x0212: 0xe0000dc9, 0x0213: 0xe0000ff3, - 0x0214: 0xe0000ff0, 0x0215: 0xe000101e, 0x0216: 0xe000101a, 0x0217: 0xe0001006, - 0x0218: 0xe0001002, 0x0219: 0xe0001016, 0x021a: 0xe0001012, 0x021b: 0xe000100e, - 0x021c: 0xe000100a, 0x021d: 0x402cae20, 0x021e: 0xe0000962, 0x021f: 0xe000095e, - 0x0220: 0xe0000976, 0x0221: 0xe0000972, 0x0222: 0xe00009f4, 0x0223: 0xe00009ef, - 0x0224: 0x002d3a88, 0x0225: 0x402d3a20, 0x0226: 0xe0000bbe, 0x0227: 0xe0000bbb, - 0x0228: 0xe0000c99, 0x0229: 0xe0000c96, 0x022a: 0xe0000e20, 0x022b: 0xe0000e1d, - 0x022c: 0xe0000e27, 0x022d: 0xe0000e23, 0x022e: 0xe0001162, 0x022f: 0xe000115f, - 0x0230: 0xe0000c8d, 0x0231: 0xf0000a0a, 0x0232: 0xf000040a, 0x0233: 0xf0000404, - 0x0234: 0xe0000bac, 0x0235: 0xe0000ba9, 0x0236: 0x002d7888, 0x0237: 0x00319488, - 0x0238: 0xe0000d57, 0x0239: 0xe0000d54, 0x023a: 0xe0000954, 0x023b: 0xe0000950, - 0x023c: 0xe00009ea, 0x023d: 0xe00009e5, 0x023e: 0xe0000e19, 0x023f: 0xe0000e15, - // Block 0x9, offset 0x240 - 0x0240: 0xe000098f, 0x0241: 0xe000098c, 0x0242: 0xe0000995, 0x0243: 0xe0000992, - 0x0244: 0xe0000b62, 0x0245: 0xe0000b5f, 0x0246: 0xe0000b68, 0x0247: 0xe0000b65, - 0x0248: 0xe0000c6c, 0x0249: 0xe0000c69, 0x024a: 0xe0000c72, 0x024b: 0xe0000c6f, - 0x024c: 0xe0000e4a, 0x024d: 0xe0000e47, 0x024e: 0xe0000e50, 0x024f: 0xe0000e4d, - 0x0250: 0xe0000ee8, 0x0251: 0xe0000ee5, 0x0252: 0xe0000eee, 0x0253: 0xe0000eeb, - 0x0254: 0xe0001053, 0x0255: 0xe0001050, 0x0256: 0xe0001059, 0x0257: 0xe0001056, - 0x0258: 0xe0000f61, 0x0259: 0xe0000f5e, 0x025a: 0xe0000fa5, 0x025b: 0xe0000fa2, - 0x025c: 0x00312288, 0x025d: 0x40312220, 0x025e: 0xe0000bf4, 0x025f: 0xe0000bf1, - 0x0260: 0x002ebc88, 0x0261: 0x402c8c20, 0x0262: 0x002f2288, 0x0263: 0x402f2220, - 0x0264: 0x00314088, 0x0265: 0x40314020, 0x0266: 0xe000096f, 0x0267: 0xe000096c, - 0x0268: 0xe0000b32, 0x0269: 0xe0000b2f, 0x026a: 0xe0000dd9, 0x026b: 0xe0000dd5, - 0x026c: 0xe0000dfd, 0x026d: 0xe0000df9, 0x026e: 0xe0000e04, 0x026f: 0xe0000e01, - 0x0270: 0xe0000e0b, 0x0271: 0xe0000e07, 0x0272: 0xe0001129, 0x0273: 0xe0001126, - 0x0274: 0x402e5e20, 0x0275: 0x402ed020, 0x0276: 0x40305a20, 0x0277: 0x402dd420, - 0x0278: 0xe0000abf, 0x0279: 0xe0000ec4, 0x027a: 0x002be888, 0x027b: 0x002c4488, - 0x027c: 0x402c4420, 0x027d: 0x002e3888, 0x027e: 0x00303e88, 0x027f: 0x402ffc20, - // Block 0xa, offset 0x280 - 0x0280: 0x40315820, 0x0281: 0x0031d488, 0x0282: 0x4031d420, 0x0283: 0x002c1a88, - 0x0284: 0x00307c88, 0x0285: 0x0030da88, 0x0286: 0x002ca288, 0x0287: 0x402ca220, - 0x0288: 0x002dde88, 0x0289: 0x402dde20, 0x028a: 0x002f6a88, 0x028b: 0x402f6a20, - 0x028c: 0x002f8e88, 0x028d: 0x402f8e20, 0x028e: 0x00311088, 0x028f: 0x40311020, - 0x0290: 0x402bf020, 0x0291: 0x402bf820, 0x0292: 0x402c0220, 0x0293: 0x402c2a20, - 0x0294: 0x402efa20, 0x0295: 0x402c5620, 0x0296: 0x402c7220, 0x0297: 0x402c7a20, - 0x0298: 0x402ccc20, 0x0299: 0x402cb820, 0x029a: 0x402cd420, 0x029b: 0x402cc220, - 0x029c: 0x402cdc20, 0x029d: 0x402ce820, 0x029e: 0x402cf020, 0x029f: 0x402dee20, - 0x02a0: 0x402d4420, 0x02a1: 0x402d2a20, 0x02a2: 0x402d3220, 0x02a3: 0x402d5820, - 0x02a4: 0x402d0020, 0x02a5: 0x40308820, 0x02a6: 0x402d8020, 0x02a7: 0x402d8e20, - 0x02a8: 0x402db620, 0x02a9: 0x402dc220, 0x02aa: 0x402daa20, 0x02ab: 0x402e4220, - 0x02ac: 0x402e4a20, 0x02ad: 0x402e5420, 0x02ae: 0x402e6820, 0x02af: 0x4030a020, - 0x02b0: 0x4030ac20, 0x02b1: 0x402e9020, 0x02b2: 0x402eb420, 0x02b3: 0x402ec820, - 0x02b4: 0x402ea620, 0x02b5: 0x402f1020, 0x02b6: 0x402eee20, 0x02b7: 0x402f1a20, - 0x02b8: 0x402f4c20, 0x02b9: 0x402f9820, 0x02ba: 0x402fa220, 0x02bb: 0x402fac20, - 0x02bc: 0x402fb620, 0x02bd: 0x402fbe20, 0x02be: 0x402fc620, 0x02bf: 0x402fd020, - // Block 0xb, offset 0x2c0 - 0x02c0: 0x402f8220, 0x02c1: 0x402fd820, 0x02c2: 0x402ff420, 0x02c3: 0x40300820, - 0x02c4: 0x402df620, 0x02c5: 0x40301a20, 0x02c6: 0x40302420, 0x02c7: 0x40306420, - 0x02c8: 0x40305220, 0x02c9: 0x40307c20, 0x02ca: 0x4030b420, 0x02cb: 0x4030cc20, - 0x02cc: 0x4030da20, 0x02cd: 0x4030ee20, 0x02ce: 0x402e7a20, 0x02cf: 0x40310820, - 0x02d0: 0x40314820, 0x02d1: 0x40315020, 0x02d2: 0x40316420, 0x02d3: 0x40318020, - 0x02d4: 0x4031cc20, 0x02d5: 0x4031e820, 0x02d6: 0x40320a20, 0x02d7: 0x40323220, - 0x02d8: 0x40323a20, 0x02d9: 0x402c1220, 0x02da: 0x402cf820, 0x02db: 0x402d4c20, - 0x02dc: 0x402d7020, 0x02dd: 0x402de620, 0x02de: 0x402e1a20, 0x02df: 0x402e2a20, - 0x02e0: 0x402f6220, 0x02e1: 0x4031fa20, 0x02e2: 0x40320220, 0x02e3: 0xe0000aca, - 0x02e4: 0xe0000adc, 0x02e5: 0xe0000ad9, 0x02e6: 0xe0000fcc, 0x02e7: 0xe0000fcf, - 0x02e8: 0xe0000fba, 0x02e9: 0xe0000ba1, 0x02ea: 0xe0000d11, 0x02eb: 0xe0000d18, - 0x02ec: 0x40324220, 0x02ed: 0x40324a20, 0x02ee: 0x40309020, 0x02ef: 0x40309820, - 0x02f0: 0x002d6894, 0x02f1: 0x002d8094, 0x02f2: 0x002dcc94, 0x02f3: 0x002f7a94, - 0x02f4: 0x002f9894, 0x02f5: 0x002fac94, 0x02f6: 0x002fd894, 0x02f7: 0x0030e294, - 0x02f8: 0x00310094, 0x02f9: 0x40064020, 0x02fa: 0x40064420, 0x02fb: 0x402d9620, - 0x02fc: 0x4031de20, 0x02fd: 0x402d9820, 0x02fe: 0x4031e220, 0x02ff: 0x4031f020, - // Block 0xc, offset 0x300 - 0x0300: 0x4031dc20, 0x0301: 0x4031f220, 0x0302: 0x40064620, 0x0303: 0x40064820, - 0x0304: 0x40064a20, 0x0305: 0x40064c20, 0x0306: 0x40064e20, 0x0307: 0x40065020, - 0x0308: 0x40065220, 0x0309: 0x40065420, 0x030a: 0x40065620, 0x030b: 0x40065820, - 0x030c: 0x40065a20, 0x030d: 0x40065c20, 0x030e: 0x40065e20, 0x030f: 0x40066020, - 0x0310: 0x4027b220, 0x0311: 0x4027b420, 0x0312: 0x40066220, 0x0313: 0x40066420, - 0x0314: 0x40066620, 0x0315: 0x40066820, 0x0316: 0x40066a20, 0x0317: 0x40066c20, - 0x0318: 0x40062820, 0x0319: 0x40062a20, 0x031a: 0x40062e20, 0x031b: 0x40063420, - 0x031c: 0x40062220, 0x031d: 0x40063020, 0x031e: 0x40066e20, 0x031f: 0x40067020, - 0x0320: 0x002d5894, 0x0321: 0x002e2294, 0x0322: 0x002fe694, 0x0323: 0x0030f694, - 0x0324: 0x0031e894, 0x0325: 0x40067220, 0x0326: 0x40067420, 0x0327: 0x40067620, - 0x0328: 0x40067820, 0x0329: 0x40067a20, 0x032a: 0x40067c20, 0x032b: 0x40067e20, - 0x032c: 0x40068020, 0x032d: 0x40068220, 0x032e: 0x4031e020, 0x032f: 0x40068420, - 0x0330: 0x40068620, 0x0331: 0x40068820, 0x0332: 0x40068a20, 0x0333: 0x40068c20, - 0x0334: 0x40068e20, 0x0335: 0x40069020, 0x0336: 0x40069220, 0x0337: 0x40069420, - 0x0338: 0x40069620, 0x0339: 0x40069820, 0x033a: 0x40069a20, 0x033b: 0x40069c20, - 0x033c: 0x40069e20, 0x033d: 0x4006a020, 0x033e: 0x4006a220, 0x033f: 0x4006a420, - // Block 0xd, offset 0x340 - 0x0340: 0xae603502, 0x0341: 0xae603202, 0x0342: 0xae603c02, 0x0343: 0xae604e02, - 0x0344: 0xae605b02, 0x0345: 0xae606302, 0x0346: 0xae603702, 0x0347: 0xae605202, - 0x0348: 0xae604702, 0x0349: 0xae606402, 0x034a: 0xae604302, 0x034b: 0xae604d02, - 0x034c: 0xae604102, 0x034d: 0xae605f02, 0x034e: 0xae605f02, 0x034f: 0xae606502, - 0x0350: 0xae606602, 0x0351: 0xae606702, 0x0352: 0xae605f02, 0x0353: 0xae602202, - 0x0354: 0xae602a02, 0x0355: 0xae805f02, 0x0356: 0xadc06002, 0x0357: 0xadc06002, - 0x0358: 0xadc06002, 0x0359: 0xadc06002, 0x035a: 0xae805f02, 0x035b: 0xad806802, - 0x035c: 0xadc06002, 0x035d: 0xadc06002, 0x035e: 0xadc06002, 0x035f: 0xadc06002, - 0x0360: 0xadc06002, 0x0361: 0xaca06e02, 0x0362: 0xaca06f02, 0x0363: 0xadc07002, - 0x0364: 0xadc07502, 0x0365: 0xadc07602, 0x0366: 0xadc07702, 0x0367: 0xaca05602, - 0x0368: 0xaca05902, 0x0369: 0xadc06002, 0x036a: 0xadc06002, 0x036b: 0xadc06002, - 0x036c: 0xadc06002, 0x036d: 0xadc07802, 0x036e: 0xadc07902, 0x036f: 0xadc06002, - 0x0370: 0xadc07a02, 0x0371: 0xadc07b02, 0x0372: 0xadc02102, 0x0373: 0xadc06002, - 0x0374: 0xa0107c02, 0x0375: 0xa0107d02, 0x0376: 0xa0106102, 0x0377: 0xa0106102, - 0x0378: 0xa0105402, 0x0379: 0xadc07e02, 0x037a: 0xadc06002, 0x037b: 0xadc06002, - 0x037c: 0xadc06002, 0x037d: 0xae605f02, 0x037e: 0xae605f02, 0x037f: 0xae605f02, - // Block 0xe, offset 0x380 - 0x0380: 0xae603502, 0x0381: 0xae603202, 0x0382: 0xae604502, 0x0383: 0xae602202, - 0x0384: 0xe0000000, 0x0385: 0xaf007f02, 0x0386: 0xae605f02, 0x0387: 0xadc06002, - 0x0388: 0xadc06002, 0x0389: 0xadc06002, 0x038a: 0xae605f02, 0x038b: 0xae605f02, - 0x038c: 0xae605f02, 0x038d: 0xadc06002, 0x038e: 0xadc06002, 0x038f: 0xa0000000, - 0x0390: 0xae605f02, 0x0391: 0xae605f02, 0x0392: 0xae605f02, 0x0393: 0xadc06002, - 0x0394: 0xadc06002, 0x0395: 0xadc06002, 0x0396: 0xadc06002, 0x0397: 0xae605f02, - 0x0398: 0xae808002, 0x0399: 0xadc06002, 0x039a: 0xadc06002, 0x039b: 0xae605f02, - 0x039c: 0xae906002, 0x039d: 0xaea05f02, 0x039e: 0xaea05f02, 0x039f: 0xae906002, - 0x03a0: 0xaea08102, 0x03a1: 0xaea08202, 0x03a2: 0xae906002, 0x03a3: 0x84e615ef, - 0x03a4: 0x84e6164c, 0x03a5: 0x84e616cd, 0x03a6: 0x84e61771, 0x03a7: 0x84e61836, - 0x03a8: 0x84e6161d, 0x03a9: 0x84e61631, 0x03aa: 0x84e616b4, 0x03ab: 0x84e61741, - 0x03ac: 0x84e617bd, 0x03ad: 0x84e61816, 0x03ae: 0x84e6185f, 0x03af: 0x84e6187b, - 0x03b0: 0x00326688, 0x03b1: 0x40326620, 0x03b2: 0x0032a688, 0x03b3: 0x4032a620, - 0x03b4: 0x40064020, 0x03b5: 0x40064220, 0x03b6: 0x00326088, 0x03b7: 0x40326020, - 0x03ba: 0x00326c84, 0x03bb: 0x40329220, - 0x03bc: 0x40329020, 0x03bd: 0x40329420, 0x03be: 0x40026220, - // Block 0xf, offset 0x3c0 - 0x03c4: 0x40062020, 0x03c5: 0xe00000ab, 0x03c6: 0xe00011f0, 0x03c7: 0x40030620, - 0x03c8: 0xe0001249, 0x03c9: 0xe00012dd, 0x03ca: 0xe000133a, - 0x03cc: 0xe000139b, 0x03ce: 0xe00013dd, 0x03cf: 0xe0001492, - 0x03d0: 0xe0001352, 0x03d1: 0x00325288, 0x03d2: 0x00325488, 0x03d3: 0x00325688, - 0x03d4: 0x00325a88, 0x03d5: 0x00325c88, 0x03d6: 0x00326488, 0x03d7: 0x00326888, - 0x03d8: 0x00326a88, 0x03d9: 0x00326c88, 0x03da: 0x00327088, 0x03db: 0x00327288, - 0x03dc: 0x00327688, 0x03dd: 0x00327888, 0x03de: 0x00327a88, 0x03df: 0x00327c88, - 0x03e0: 0x00327e88, 0x03e1: 0x00328888, 0x03e3: 0x00328e88, - 0x03e4: 0x00329688, 0x03e5: 0x00329888, 0x03e6: 0x00329a88, 0x03e7: 0x00329c88, - 0x03e8: 0x00329e88, 0x03e9: 0x0032a288, 0x03ea: 0xe000134f, 0x03eb: 0xe00013f2, - 0x03ec: 0xe00011ed, 0x03ed: 0xe0001246, 0x03ee: 0xe00012da, 0x03ef: 0xe0001337, - 0x03f0: 0xe00013f5, 0x03f1: 0x40325220, 0x03f2: 0x40325420, 0x03f3: 0x40325620, - 0x03f4: 0x40325a20, 0x03f5: 0x40325c20, 0x03f6: 0x40326420, 0x03f7: 0x40326820, - 0x03f8: 0x40326a20, 0x03f9: 0x40326c20, 0x03fa: 0x40327020, 0x03fb: 0x40327220, - 0x03fc: 0x40327620, 0x03fd: 0x40327820, 0x03fe: 0x40327a20, 0x03ff: 0x40327c20, - // Block 0x10, offset 0x400 - 0x0400: 0x40327e20, 0x0401: 0x40328820, 0x0402: 0x00328e99, 0x0403: 0x40328e20, - 0x0404: 0x40329620, 0x0405: 0x40329820, 0x0406: 0x40329a20, 0x0407: 0x40329c20, - 0x0408: 0x40329e20, 0x0409: 0x4032a220, 0x040a: 0xe000134c, 0x040b: 0xe00013ef, - 0x040c: 0xe0001398, 0x040d: 0xe00013da, 0x040e: 0xe000148f, 0x040f: 0xe0001368, - 0x0410: 0x00325484, 0x0411: 0x00326a84, 0x0412: 0x0032988a, 0x0413: 0xf000020a, - 0x0414: 0xf000020a, 0x0415: 0x00329a84, 0x0416: 0x00327e84, 0x0417: 0xe0001364, - 0x0418: 0x00328688, 0x0419: 0x40328620, 0x041a: 0x00326288, 0x041b: 0x40326220, - 0x041c: 0x00325e88, 0x041d: 0x40325e20, 0x041e: 0x00328488, 0x041f: 0x40328420, - 0x0420: 0x0032a488, 0x0421: 0x4032a420, 0x0422: 0x0032e888, 0x0423: 0x4032e820, - 0x0424: 0x0032f288, 0x0425: 0x4032f220, 0x0426: 0x0032f488, 0x0427: 0x4032f420, - 0x0428: 0x0032fa88, 0x0429: 0x4032fa20, 0x042a: 0x00330888, 0x042b: 0x40330820, - 0x042c: 0x00330e88, 0x042d: 0x40330e20, 0x042e: 0x00331688, 0x042f: 0x40331620, - 0x0430: 0x00327084, 0x0431: 0x00328884, 0x0432: 0x00328e84, 0x0433: 0x40326e20, - 0x0434: 0x00326a8a, 0x0435: 0x00325c84, 0x0436: 0x40092e20, 0x0437: 0x0032a888, - 0x0438: 0x4032a820, 0x0439: 0x00328e8a, 0x043a: 0x00328288, 0x043b: 0x40328220, - 0x043c: 0x40328c20, 0x043d: 0x00329288, 0x043e: 0x00329088, 0x043f: 0x00329488, - // Block 0x11, offset 0x440 - 0x0440: 0xe00014bd, 0x0441: 0xe00014c3, 0x0442: 0x00339688, 0x0443: 0x0033a288, - 0x0444: 0x0033c288, 0x0445: 0x0033fc88, 0x0446: 0xc02a0071, 0x0447: 0x00343688, - 0x0448: 0x00344688, 0x0449: 0x00349a88, 0x044a: 0x0034e488, 0x044b: 0x00356288, - 0x044c: 0x00356a88, 0x044d: 0xe00014cf, 0x044e: 0x00357a88, 0x044f: 0x00365488, - 0x0450: 0xc0090041, 0x0451: 0x00335288, 0x0452: 0x00335a88, 0x0453: 0xc0130092, - 0x0454: 0x00338a88, 0x0455: 0xc01800d1, 0x0456: 0xc01c0071, 0x0457: 0xc0200071, - 0x0458: 0xc0250041, 0x0459: 0x00343e88, 0x045a: 0xc0370092, 0x045b: 0x00348488, - 0x045c: 0x0034a888, 0x045d: 0x0034ba88, 0x045e: 0xc02e0071, 0x045f: 0x00350e88, - 0x0460: 0x00352888, 0x0461: 0x00353a88, 0x0462: 0x00354c88, 0x0463: 0xc03e00f1, - 0x0464: 0x0035ac88, 0x0465: 0x0035b488, 0x0466: 0x00360288, 0x0467: 0xc0440071, - 0x0468: 0x00365c88, 0x0469: 0x00366688, 0x046a: 0x00367488, 0x046b: 0xc0480071, - 0x046c: 0x00368e88, 0x046d: 0xc04c0071, 0x046e: 0x0036b888, 0x046f: 0x0036c488, - 0x0470: 0xc0060041, 0x0471: 0x40335220, 0x0472: 0x40335a20, 0x0473: 0xc0100092, - 0x0474: 0x40338a20, 0x0475: 0xc01600d1, 0x0476: 0xc01a0071, 0x0477: 0xc01e0071, - 0x0478: 0xc0220041, 0x0479: 0x40343e20, 0x047a: 0xc0340092, 0x047b: 0x40348420, - 0x047c: 0x4034a820, 0x047d: 0x4034ba20, 0x047e: 0xc02c0071, 0x047f: 0x40350e20, - // Block 0x12, offset 0x480 - 0x0480: 0x40352820, 0x0481: 0x40353a20, 0x0482: 0x40354c20, 0x0483: 0xc03a00f1, - 0x0484: 0x4035ac20, 0x0485: 0x4035b420, 0x0486: 0x40360220, 0x0487: 0xc0420071, - 0x0488: 0x40365c20, 0x0489: 0x40366620, 0x048a: 0x40367420, 0x048b: 0xc0460071, - 0x048c: 0x40368e20, 0x048d: 0xc04a0071, 0x048e: 0x4036b820, 0x048f: 0x4036c420, - 0x0490: 0xe00014ba, 0x0491: 0xe00014c0, 0x0492: 0x40339620, 0x0493: 0x4033a220, - 0x0494: 0x4033c220, 0x0495: 0x4033fc20, 0x0496: 0xc0280071, 0x0497: 0x40343620, - 0x0498: 0x40344620, 0x0499: 0x40349a20, 0x049a: 0x4034e420, 0x049b: 0x40356220, - 0x049c: 0x40356a20, 0x049d: 0xe00014cc, 0x049e: 0x40357a20, 0x049f: 0x40365420, - 0x04a0: 0x0035e088, 0x04a1: 0x4035e020, 0x04a2: 0x00369e88, 0x04a3: 0x40369e20, - 0x04a4: 0x0036ce88, 0x04a5: 0x4036ce20, 0x04a6: 0x0036d688, 0x04a7: 0x4036d620, - 0x04a8: 0x0036ea88, 0x04a9: 0x4036ea20, 0x04aa: 0x0036e088, 0x04ab: 0x4036e020, - 0x04ac: 0x0036f488, 0x04ad: 0x4036f420, 0x04ae: 0x0036fc88, 0x04af: 0x4036fc20, - 0x04b0: 0x00370488, 0x04b1: 0x40370420, 0x04b2: 0x00370c88, 0x04b3: 0x40370c20, - 0x04b4: 0xc0500131, 0x04b5: 0xc04e0131, 0x04b6: 0x00371c88, 0x04b7: 0x40371c20, - 0x04b8: 0x0035a488, 0x04b9: 0x4035a420, 0x04ba: 0x0035fa88, 0x04bb: 0x4035fa20, - 0x04bc: 0x0035f288, 0x04bd: 0x4035f220, 0x04be: 0x0035e888, 0x04bf: 0x4035e820, - // Block 0x13, offset 0x4c0 - 0x04c0: 0x00352088, 0x04c1: 0x40352020, 0x04c2: 0x40070620, 0x04c3: 0xae608302, - 0x04c4: 0xae605f02, 0x04c5: 0xae602a02, 0x04c6: 0xae602202, 0x04c7: 0xae605f02, - 0x04c8: 0xa0000000, 0x04c9: 0xa0000000, 0x04ca: 0x00341c88, 0x04cb: 0x40341c20, - 0x04cc: 0x00369688, 0x04cd: 0x40369620, 0x04ce: 0x00353088, 0x04cf: 0x40353020, - 0x04d0: 0xe00014b7, 0x04d1: 0xe00014b4, 0x04d2: 0x00336a88, 0x04d3: 0x40336a20, - 0x04d4: 0x00337a88, 0x04d5: 0x40337a20, 0x04d6: 0x0033dc88, 0x04d7: 0x4033dc20, - 0x04d8: 0x0033aa88, 0x04d9: 0x4033aa20, 0x04da: 0x00345888, 0x04db: 0x40345820, - 0x04dc: 0x00347888, 0x04dd: 0x40347820, 0x04de: 0x00347088, 0x04df: 0x40347020, - 0x04e0: 0x00346888, 0x04e1: 0x40346820, 0x04e2: 0x0034ca88, 0x04e3: 0x4034ca20, - 0x04e4: 0x0034dc88, 0x04e5: 0x4034dc20, 0x04e6: 0x00351888, 0x04e7: 0x40351820, - 0x04e8: 0x00372688, 0x04e9: 0x40372620, 0x04ea: 0x00354488, 0x04eb: 0x40354420, - 0x04ec: 0x00355888, 0x04ed: 0x40355820, 0x04ee: 0x00359288, 0x04ef: 0x40359220, - 0x04f0: 0x00359a88, 0x04f1: 0x40359a20, 0x04f2: 0x0035cc88, 0x04f3: 0x4035cc20, - 0x04f4: 0x00360e88, 0x04f5: 0x40360e20, 0x04f6: 0x00362a88, 0x04f7: 0x40362a20, - 0x04f8: 0x00363a88, 0x04f9: 0x40363a20, 0x04fa: 0x0035d488, 0x04fb: 0x4035d420, - 0x04fc: 0x00364488, 0x04fd: 0x40364420, 0x04fe: 0x00364c88, 0x04ff: 0x40364c20, - // Block 0x14, offset 0x500 - 0x0500: 0x00373088, 0x0501: 0xe00014c9, 0x0502: 0xe00014c6, 0x0503: 0x00346088, - 0x0504: 0x40346020, 0x0505: 0x00348e88, 0x0506: 0x40348e20, 0x0507: 0x0034d288, - 0x0508: 0x4034d220, 0x0509: 0x0034c288, 0x050a: 0x4034c220, 0x050b: 0x00363288, - 0x050c: 0x40363220, 0x050d: 0x0034b088, 0x050e: 0x4034b020, 0x050f: 0x40373020, - 0x0510: 0x00332a88, 0x0511: 0x40332a20, 0x0512: 0x00333288, 0x0513: 0x40333220, - 0x0514: 0x00334a88, 0x0515: 0x40334a20, 0x0516: 0x0033ba88, 0x0517: 0x4033ba20, - 0x0518: 0xc00e0071, 0x0519: 0xc00c0071, 0x051a: 0x00334288, 0x051b: 0x40334220, - 0x051c: 0x0033d488, 0x051d: 0x4033d420, 0x051e: 0x0033f288, 0x051f: 0x4033f220, - 0x0520: 0x00340688, 0x0521: 0x40340620, 0x0522: 0xe00014d5, 0x0523: 0xe00014d2, - 0x0524: 0x00342488, 0x0525: 0x40342420, 0x0526: 0x0034f688, 0x0527: 0x4034f620, - 0x0528: 0xc0320071, 0x0529: 0xc0300071, 0x052a: 0x00350688, 0x052b: 0x40350620, - 0x052c: 0x0036b088, 0x052d: 0x4036b020, 0x052e: 0xe00014de, 0x052f: 0xe00014db, - 0x0530: 0x00358288, 0x0531: 0x40358220, 0x0532: 0x00358a88, 0x0533: 0x40358a20, - 0x0534: 0x00362288, 0x0535: 0x40362220, 0x0536: 0x00338288, 0x0537: 0x40338220, - 0x0538: 0x00368688, 0x0539: 0x40368620, 0x053a: 0x00337288, 0x053b: 0x40337220, - 0x053c: 0x0035bc88, 0x053d: 0x4035bc20, 0x053e: 0x0035c488, 0x053f: 0x4035c420, - // Block 0x15, offset 0x540 - 0x0540: 0x00339288, 0x0541: 0x40339220, 0x0542: 0x0033a088, 0x0543: 0x4033a020, - 0x0544: 0x0033ee88, 0x0545: 0x4033ee20, 0x0546: 0x00341088, 0x0547: 0x40341020, - 0x0548: 0x0034a488, 0x0549: 0x4034a420, 0x054a: 0x0034ec88, 0x054b: 0x4034ec20, - 0x054c: 0x00354288, 0x054d: 0x40354220, 0x054e: 0x00355688, 0x054f: 0x40355620, - 0x0550: 0x0033f088, 0x0551: 0x4033f020, 0x0552: 0x00349688, 0x0553: 0x40349620, - 0x0554: 0x0034a688, 0x0555: 0x4034a620, 0x0556: 0x00353888, 0x0557: 0x40353820, - 0x0558: 0x0036cc88, 0x0559: 0x4036cc20, 0x055a: 0x00348288, 0x055b: 0x40348220, - 0x055c: 0x00372e88, 0x055d: 0x40372e20, 0x055e: 0x00348088, 0x055f: 0x40348020, - 0x0560: 0x00349888, 0x0561: 0x40349820, 0x0562: 0x0034da88, 0x0563: 0x4034da20, - 0x0564: 0x00351688, 0x0565: 0x40351620, 0x0566: 0x0035dc88, 0x0567: 0x4035dc20, - 0x0571: 0x00384288, 0x0572: 0x00384488, 0x0573: 0x00384688, - 0x0574: 0x00384888, 0x0575: 0x00384a88, 0x0576: 0x00384c88, 0x0577: 0x00384e88, - 0x0578: 0x00385088, 0x0579: 0x00385288, 0x057a: 0x00385488, 0x057b: 0x00385688, - 0x057c: 0x00385888, 0x057d: 0x00385a88, 0x057e: 0x00385c88, 0x057f: 0x00385e88, - // Block 0x16, offset 0x580 - 0x0580: 0x00386088, 0x0581: 0x00386288, 0x0582: 0x00386488, 0x0583: 0x00386688, - 0x0584: 0x00386888, 0x0585: 0x00386a88, 0x0586: 0x00386c88, 0x0587: 0x00386e88, - 0x0588: 0x00387088, 0x0589: 0x00387288, 0x058a: 0x00387488, 0x058b: 0x00387688, - 0x058c: 0x00387888, 0x058d: 0x00387a88, 0x058e: 0x00387c88, 0x058f: 0x00387e88, - 0x0590: 0x00388088, 0x0591: 0x00388288, 0x0592: 0x00388488, 0x0593: 0x00388688, - 0x0594: 0x00388888, 0x0595: 0x00388a88, 0x0596: 0x00388c88, - 0x0599: 0x40388e20, 0x059a: 0x40054e20, 0x059b: 0x40055020, - 0x059c: 0x4002be20, 0x059d: 0x40024620, 0x059e: 0x4002ca20, 0x059f: 0x40055220, - 0x05a1: 0x40384220, 0x05a2: 0x40384420, 0x05a3: 0x40384620, - 0x05a4: 0x40384820, 0x05a5: 0x40384a20, 0x05a6: 0x40384c20, 0x05a7: 0x40384e20, - 0x05a8: 0x40385020, 0x05a9: 0x40385220, 0x05aa: 0x40385420, 0x05ab: 0x40385620, - 0x05ac: 0x40385820, 0x05ad: 0x40385a20, 0x05ae: 0x40385c20, 0x05af: 0x40385e20, - 0x05b0: 0x40386020, 0x05b1: 0x40386220, 0x05b2: 0x40386420, 0x05b3: 0x40386620, - 0x05b4: 0x40386820, 0x05b5: 0x40386a20, 0x05b6: 0x40386c20, 0x05b7: 0x40386e20, - 0x05b8: 0x40387020, 0x05b9: 0x40387220, 0x05ba: 0x40387420, 0x05bb: 0x40387620, - 0x05bc: 0x40387820, 0x05bd: 0x40387a20, 0x05be: 0x40387c20, 0x05bf: 0x40387e20, - // Block 0x17, offset 0x5c0 - 0x05c0: 0x40388020, 0x05c1: 0x40388220, 0x05c2: 0x40388420, 0x05c3: 0x40388620, - 0x05c4: 0x40388820, 0x05c5: 0x40388a20, 0x05c6: 0x40388c20, 0x05c7: 0xf0000404, - 0x05c9: 0x40026e20, 0x05ca: 0x40021c20, - 0x05cf: 0x4027e420, - 0x05d1: 0xadc00000, 0x05d2: 0xae600000, 0x05d3: 0xae600000, - 0x05d4: 0xae600000, 0x05d5: 0xae600000, 0x05d6: 0xadc00000, 0x05d7: 0xae600000, - 0x05d8: 0xae600000, 0x05d9: 0xae600000, 0x05da: 0xade00000, 0x05db: 0xadc00000, - 0x05dc: 0xae600000, 0x05dd: 0xae600000, 0x05de: 0xae600000, 0x05df: 0xae600000, - 0x05e0: 0xae600000, 0x05e1: 0xae600000, 0x05e2: 0xadc00000, 0x05e3: 0xadc00000, - 0x05e4: 0xadc00000, 0x05e5: 0xadc00000, 0x05e6: 0xadc00000, 0x05e7: 0xadc00000, - 0x05e8: 0xae600000, 0x05e9: 0xae600000, 0x05ea: 0xadc00000, 0x05eb: 0xae600000, - 0x05ec: 0xae600000, 0x05ed: 0xade00000, 0x05ee: 0xae400000, 0x05ef: 0xae600000, - 0x05f0: 0xa0a08502, 0x05f1: 0xa0b08602, 0x05f2: 0xa0c08702, 0x05f3: 0xa0d08802, - 0x05f4: 0xa0e08902, 0x05f5: 0xa0f08a02, 0x05f6: 0xa1008b02, 0x05f7: 0xa1108c02, - 0x05f8: 0xa1208d02, 0x05f9: 0xa1308e02, 0x05fa: 0xa1308e02, 0x05fb: 0xa1408f02, - 0x05fc: 0xa1509202, 0x05fd: 0xa1600000, 0x05fe: 0x40055420, 0x05ff: 0xa1709502, - // Block 0x18, offset 0x600 - 0x0600: 0x40055620, 0x0601: 0xa1809102, 0x0602: 0xa1909002, 0x0603: 0x40055820, - 0x0604: 0xae600000, 0x0605: 0xadc00000, 0x0606: 0x40055a20, 0x0607: 0xa1208d02, - 0x0610: 0x40389020, 0x0611: 0x40389220, 0x0612: 0x40389420, 0x0613: 0x40389620, - 0x0614: 0x40389820, 0x0615: 0x40389a20, 0x0616: 0x40389c20, 0x0617: 0x40389e20, - 0x0618: 0x4038a020, 0x0619: 0x4038a220, 0x061a: 0x0038a499, 0x061b: 0x4038a420, - 0x061c: 0x4038a620, 0x061d: 0x0038a899, 0x061e: 0x4038a820, 0x061f: 0x0038aa99, - 0x0620: 0x4038aa20, 0x0621: 0x4038ac20, 0x0622: 0x4038ae20, 0x0623: 0x0038b099, - 0x0624: 0x4038b020, 0x0625: 0x0038b299, 0x0626: 0x4038b220, 0x0627: 0x4038b420, - 0x0628: 0x4038b620, 0x0629: 0x4038b820, 0x062a: 0x4038ba20, - 0x0630: 0xe00014ff, 0x0631: 0xe0001502, 0x0632: 0xe0001511, 0x0633: 0x40055c20, - 0x0634: 0x40055e20, - // Block 0x19, offset 0x640 - 0x0640: 0xa0000000, 0x0641: 0xa0000000, 0x0642: 0xa0000000, 0x0643: 0xa0000000, - 0x0644: 0xa0000000, 0x0646: 0x40096620, 0x0647: 0x40096a20, - 0x0648: 0x40070820, 0x0649: 0x4004f220, 0x064a: 0x4004f620, 0x064b: 0x4027e620, - 0x064c: 0x40024820, 0x064d: 0x40024a20, 0x064e: 0x40070e20, 0x064f: 0x40071020, - 0x0650: 0xae600000, 0x0651: 0xae600000, 0x0652: 0xae600000, 0x0653: 0xae600000, - 0x0654: 0xae600000, 0x0655: 0xae600000, 0x0656: 0xae600000, 0x0657: 0xae600000, - 0x0658: 0xa1e00000, 0x0659: 0xa1f00000, 0x065a: 0xa2000000, 0x065b: 0x40026420, - 0x065e: 0x40027020, 0x065f: 0x4002cc20, - 0x0660: 0x403aa220, 0x0661: 0x40391c20, 0x0662: 0x40391e20, 0x0663: 0x40392020, - 0x0664: 0x40392620, 0x0665: 0x40392820, 0x0666: 0x40393020, 0x0667: 0xc0520151, - 0x0668: 0x40393c20, 0x0669: 0x40395420, 0x066a: 0x40395620, 0x066b: 0x40395820, - 0x066c: 0x40396420, 0x066d: 0x40397220, 0x066e: 0x40397420, 0x066f: 0x40398820, - 0x0670: 0x40398a20, 0x0671: 0x4039a420, 0x0672: 0x4039a620, 0x0673: 0x4039c620, - 0x0674: 0x4039c820, 0x0675: 0x4039dc20, 0x0676: 0x4039de20, 0x0677: 0x4039e620, - 0x0678: 0x4039e820, 0x0679: 0x4039ee20, 0x067a: 0x4039f020, 0x067b: 0x403a3820, - 0x067c: 0x403a3a20, 0x067d: 0x403a9c20, 0x067e: 0x403a9e20, 0x067f: 0x403aa020, - // Block 0x1a, offset 0x680 - 0x0680: 0xa0000000, 0x0681: 0x4039fc20, 0x0682: 0x403a1220, 0x0683: 0x403a1a20, - 0x0684: 0x403a4020, 0x0685: 0x403a4e20, 0x0686: 0x403a5620, 0x0687: 0x403a6820, - 0x0688: 0xc0560171, 0x0689: 0x403a8e20, 0x068a: 0xc0580171, 0x068b: 0xa1b0a202, - 0x068c: 0xa1c0a502, 0x068d: 0xa1d0a902, 0x068e: 0xa1e0ad02, 0x068f: 0xa1f0b202, - 0x0690: 0xa200b602, 0x0691: 0xa210ba02, 0x0692: 0xa220bc02, 0x0693: 0xae60bd02, - 0x0694: 0xae60be02, 0x0695: 0xadc0bf02, 0x0696: 0xadc0c102, 0x0697: 0xae60c202, - 0x0698: 0xae60c302, 0x0699: 0xae60c402, 0x069a: 0xae60c502, 0x069b: 0xae60c602, - 0x069c: 0xadc0c702, 0x069d: 0xae60c802, 0x069e: 0xae60c902, 0x069f: 0xadc0c002, - 0x06a0: 0xe000015e, 0x06a1: 0xe00001e6, 0x06a2: 0xe0000301, 0x06a3: 0xe00003db, - 0x06a4: 0xe00004b6, 0x06a5: 0xe0000580, 0x06a6: 0xe000064b, 0x06a7: 0xe00006f3, - 0x06a8: 0xe000079f, 0x06a9: 0xe0000844, 0x06aa: 0x4004ee20, 0x06ab: 0x40024c20, - 0x06ac: 0x40024e20, 0x06ad: 0x4004de20, 0x06ae: 0x40393a20, 0x06af: 0x403a1020, - 0x06b0: 0xa230d102, 0x06b1: 0x40392420, 0x06b2: 0x40392220, 0x06b3: 0x40392a20, - 0x06b4: 0x00391c84, 0x06b5: 0xf0000404, 0x06b6: 0xf0000404, 0x06b7: 0xf0000404, - 0x06b8: 0xf0000404, 0x06b9: 0x40395a20, 0x06ba: 0x40395c20, 0x06bb: 0x40393e20, - 0x06bc: 0x40395e20, 0x06bd: 0x40396020, 0x06be: 0x40394020, 0x06bf: 0x40396220, - // Block 0x1b, offset 0x6c0 - 0x06c0: 0x40394220, 0x06c1: 0x40397620, 0x06c2: 0x40397820, 0x06c3: 0x40396620, - 0x06c4: 0x40396820, 0x06c5: 0x40397a20, 0x06c6: 0x40396a20, 0x06c7: 0x40396e20, - 0x06c8: 0x40398c20, 0x06c9: 0x40398e20, 0x06ca: 0x40399020, 0x06cb: 0x40399220, - 0x06cc: 0x40399420, 0x06cd: 0x40399620, 0x06ce: 0x40399820, 0x06cf: 0x40399a20, - 0x06d0: 0x40399c20, 0x06d1: 0x4039a820, 0x06d2: 0x4039aa20, 0x06d3: 0x4039ac20, - 0x06d4: 0x4039ae20, 0x06d5: 0x4039b020, 0x06d6: 0x4039b220, 0x06d7: 0x4039b420, - 0x06d8: 0x4039b620, 0x06d9: 0x4039b820, 0x06da: 0x4039ca20, 0x06db: 0x4039cc20, - 0x06dc: 0x4039ce20, 0x06dd: 0x4039e020, 0x06de: 0x4039e220, 0x06df: 0x4039ea20, - 0x06e0: 0x4039f220, 0x06e1: 0x4039fe20, 0x06e2: 0x403a0020, 0x06e3: 0x403a0220, - 0x06e4: 0x403a0420, 0x06e5: 0x403a0820, 0x06e6: 0x403a0a20, 0x06e7: 0x403a1420, - 0x06e8: 0x403a1620, 0x06e9: 0x403a1c20, 0x06ea: 0x403a1e20, 0x06eb: 0x403a2020, - 0x06ec: 0x403a2220, 0x06ed: 0x403a2620, 0x06ee: 0x403a2820, 0x06ef: 0x403a2a20, - 0x06f0: 0x403a2c20, 0x06f1: 0x403a2e20, 0x06f2: 0x403a3020, 0x06f3: 0x403a3220, - 0x06f4: 0x403a3420, 0x06f5: 0x403a4220, 0x06f6: 0x403a4420, 0x06f7: 0x403a4620, - 0x06f8: 0x403a4820, 0x06f9: 0x403a6020, 0x06fa: 0x403a5820, 0x06fb: 0x403a5a20, - 0x06fc: 0x403a5c20, 0x06fd: 0x403a5e20, 0x06fe: 0x403a6a20, 0x06ff: 0x40396c20, - // Block 0x1c, offset 0x700 - 0x0700: 0xe00017e4, 0x0701: 0x403a6c20, 0x0702: 0xe00017e1, 0x0703: 0x403a6e20, - 0x0704: 0x403a7620, 0x0705: 0x403a7820, 0x0706: 0x403a7a20, 0x0707: 0x403a7c20, - 0x0708: 0x403a7e20, 0x0709: 0x403a8020, 0x070a: 0x403a8220, 0x070b: 0x403a8420, - 0x070c: 0x403a9220, 0x070d: 0x403a9420, 0x070e: 0x403a9620, 0x070f: 0x403a8620, - 0x0710: 0x403a9820, 0x0711: 0x403a9a20, 0x0712: 0x403aaa20, 0x0713: 0xe0001800, - 0x0714: 0x4002e820, 0x0715: 0x403a7220, 0x0716: 0xae600000, 0x0717: 0xae600000, - 0x0718: 0xae600000, 0x0719: 0xae600000, 0x071a: 0xae600000, 0x071b: 0xae600000, - 0x071c: 0xae600000, 0x071d: 0xa0000000, 0x071e: 0x40071220, 0x071f: 0xae600000, - 0x0720: 0xae600000, 0x0721: 0xae600000, 0x0722: 0xae600000, 0x0723: 0xadc00000, - 0x0724: 0xae600000, 0x0725: 0x003a7484, 0x0726: 0x003a9084, 0x0727: 0xae600000, - 0x0728: 0xae600000, 0x0729: 0x40071420, 0x072a: 0xadc00000, 0x072b: 0xae600000, - 0x072c: 0xae600000, 0x072d: 0xadc00000, 0x072e: 0x40399e20, 0x072f: 0x4039ba20, - 0x0730: 0xe0000161, 0x0731: 0xe00001e9, 0x0732: 0xe0000304, 0x0733: 0xe00003de, - 0x0734: 0xe00004b9, 0x0735: 0xe0000583, 0x0736: 0xe000064e, 0x0737: 0xe00006f6, - 0x0738: 0xe00007a2, 0x0739: 0xe0000847, 0x073a: 0x4039d020, 0x073b: 0x4039e420, - 0x073c: 0x4039f420, 0x073d: 0xe0001553, 0x073e: 0xe0001779, 0x073f: 0x403a7020, - // Block 0x1d, offset 0x740 - 0x0740: 0x40035c20, 0x0741: 0x4002ea20, 0x0742: 0x4002ec20, 0x0743: 0x40027220, - 0x0744: 0x40027420, 0x0745: 0x40027620, 0x0746: 0x40027820, 0x0747: 0x40027a20, - 0x0748: 0x40027c20, 0x0749: 0x4002ce20, 0x074a: 0x40056020, 0x074b: 0x40056220, - 0x074c: 0x40056420, 0x074d: 0x40056620, 0x074f: 0xa0000000, - 0x0750: 0x403ab020, 0x0751: 0xa240d202, 0x0752: 0x403ab220, 0x0753: 0x403ab420, - 0x0754: 0xe0001806, 0x0755: 0x403ab820, 0x0756: 0x403ab620, 0x0757: 0x403aba20, - 0x0758: 0x403abc20, 0x0759: 0x403abe20, 0x075a: 0x403ac220, 0x075b: 0x403ac420, - 0x075c: 0xe000180f, 0x075d: 0x403ac620, 0x075e: 0x403ac820, 0x075f: 0x403aca20, - 0x0760: 0x403ace20, 0x0761: 0x403ad020, 0x0762: 0x403ad220, 0x0763: 0x403ad420, - 0x0764: 0x003ad499, 0x0765: 0x403ad620, 0x0766: 0x403ad820, 0x0767: 0xe0001812, - 0x0768: 0x403adc20, 0x0769: 0x403ade20, 0x076a: 0x403ae020, 0x076b: 0x403ae220, - 0x076c: 0x403ae420, 0x076d: 0xe0001803, 0x076e: 0xe0001809, 0x076f: 0xe000180c, - 0x0770: 0xae60d302, 0x0771: 0xadc0d402, 0x0772: 0xae60d502, 0x0773: 0xae60d602, - 0x0774: 0xadc0d702, 0x0775: 0xae60d802, 0x0776: 0xae60d902, 0x0777: 0xadc0da02, - 0x0778: 0xadc0db02, 0x0779: 0xadc0dc02, 0x077a: 0xae60dd02, 0x077b: 0xadc0de02, - 0x077c: 0xadc0df02, 0x077d: 0xae60e002, 0x077e: 0xadc0e102, 0x077f: 0xae60e202, - // Block 0x1e, offset 0x780 - 0x0780: 0xae600000, 0x0781: 0xae605f02, 0x0782: 0xadc06002, 0x0783: 0xae600000, - 0x0784: 0xadc00000, 0x0785: 0xae605f02, 0x0786: 0xadc06002, 0x0787: 0xae600000, - 0x0788: 0xadc00000, 0x0789: 0xae600000, 0x078a: 0xae600000, - 0x078d: 0x403ac020, 0x078e: 0x403acc20, 0x078f: 0x403ada20, - 0x0790: 0x40394420, 0x0791: 0x40394620, 0x0792: 0x40394820, 0x0793: 0x40394a20, - 0x0794: 0x40394c20, 0x0795: 0x40394e20, 0x0796: 0x40395220, 0x0797: 0x40397c20, - 0x0798: 0x40397e20, 0x0799: 0x4039a020, 0x079a: 0x4039a220, 0x079b: 0x4039bc20, - 0x079c: 0x4039d220, 0x079d: 0x4039f620, 0x079e: 0x4039f820, 0x079f: 0x4039fa20, - 0x07a0: 0x403a0c20, 0x07a1: 0x403a0e20, 0x07a2: 0x403a3620, 0x07a3: 0x403a3c20, - 0x07a4: 0x403a3e20, 0x07a5: 0x403a5020, 0x07a6: 0x403a5220, 0x07a7: 0x403a6220, - 0x07a8: 0x403a6420, 0x07a9: 0x403a6620, 0x07aa: 0x403a4a20, 0x07ab: 0x4039be20, - 0x07ac: 0x4039c020, 0x07ad: 0x4039d420, 0x07ae: 0x40398020, 0x07af: 0x40398220, - 0x07b0: 0x4039d620, 0x07b1: 0x4039c220, 0x07b2: 0x40398420, 0x07b3: 0x40392c20, - 0x07b4: 0x40392e20, 0x07b5: 0x403aa420, 0x07b6: 0x403aa620, 0x07b7: 0x403aa820, - 0x07b8: 0x403a8820, 0x07b9: 0x403a8a20, 0x07ba: 0x403aac20, 0x07bb: 0x403aae20, - 0x07bc: 0x40398620, 0x07bd: 0x4039d820, 0x07be: 0x4039da20, 0x07bf: 0x403a2420, - // Block 0x1f, offset 0x7c0 - 0x07c0: 0x403b1820, 0x07c1: 0x403b1e20, 0x07c2: 0x403b2020, 0x07c3: 0x403b2220, - 0x07c4: 0x403b2620, 0x07c5: 0x403b2820, 0x07c6: 0x403b2a20, 0x07c7: 0x403b2c20, - 0x07c8: 0x403b3220, 0x07c9: 0x403b3620, 0x07ca: 0x403b3820, 0x07cb: 0x403b3a20, - 0x07cc: 0x403b3e20, 0x07cd: 0x403b4620, 0x07ce: 0x403b4820, 0x07cf: 0x403b4c20, - 0x07d0: 0x403b4e20, 0x07d1: 0x403b5620, 0x07d2: 0x403b5820, 0x07d3: 0x403b5a20, - 0x07d4: 0x403b5c20, 0x07d5: 0x403b5e20, 0x07d6: 0x403b6020, 0x07d7: 0x403b6220, - 0x07d8: 0x403b4020, 0x07d9: 0x403b1a20, 0x07da: 0x403b1c20, 0x07db: 0x403b3c20, - 0x07dc: 0x403b2420, 0x07dd: 0x403b5020, 0x07de: 0x403b5220, 0x07df: 0x403b5420, - 0x07e0: 0x403b4220, 0x07e1: 0x403b4420, 0x07e2: 0x403b2e20, 0x07e3: 0x403b3020, - 0x07e4: 0x403b4a20, 0x07e5: 0x403b3420, 0x07e6: 0x403b6620, 0x07e7: 0x403b6820, - 0x07e8: 0x403b6a20, 0x07e9: 0x403b6c20, 0x07ea: 0x403b6e20, 0x07eb: 0x403b7020, - 0x07ec: 0x403b7220, 0x07ed: 0x403b7420, 0x07ee: 0x403b7620, 0x07ef: 0x403b7820, - 0x07f0: 0x403b7a20, 0x07f1: 0x403b6420, - // Block 0x20, offset 0x800 - 0x0800: 0xe0000164, 0x0801: 0xe00001ef, 0x0802: 0xe000030a, 0x0803: 0xe00003e4, - 0x0804: 0xe00004bf, 0x0805: 0xe0000589, 0x0806: 0xe0000654, 0x0807: 0xe00006fc, - 0x0808: 0xe00007a8, 0x0809: 0xe000084d, 0x080a: 0x403b7c20, 0x080b: 0x403b7e20, - 0x080c: 0x403b8020, 0x080d: 0x403b8220, 0x080e: 0x403b8420, 0x080f: 0x403b8620, - 0x0810: 0x403b8820, 0x0811: 0x403b8a20, 0x0812: 0x403b8c20, 0x0813: 0x403b8e20, - 0x0814: 0x403b9020, 0x0815: 0x403b9220, 0x0816: 0x403b9420, 0x0817: 0x403b9620, - 0x0818: 0x403b9820, 0x0819: 0x403b9a20, 0x081a: 0x403b9c20, 0x081b: 0x403b9e20, - 0x081c: 0x403ba020, 0x081d: 0x403ba220, 0x081e: 0x403ba420, 0x081f: 0x403ba620, - 0x0820: 0x403ba820, 0x0821: 0x403baa20, 0x0822: 0x403bac20, 0x0823: 0x403bae20, - 0x0824: 0x403bb020, 0x0825: 0x403bb220, 0x0826: 0x403bb420, 0x0827: 0x403bb620, - 0x0828: 0xe0001815, 0x0829: 0xe0001818, 0x082a: 0xe000181b, 0x082b: 0xae60e302, - 0x082c: 0xae60e402, 0x082d: 0xae60e502, 0x082e: 0xae60e602, 0x082f: 0xae60e702, - 0x0830: 0xae60e802, 0x0831: 0xae60e902, 0x0832: 0xadc0ea02, 0x0833: 0xae60eb02, - 0x0834: 0x403bb820, 0x0835: 0x403bba20, 0x0836: 0x40073820, 0x0837: 0x40035e20, - 0x0838: 0x40025020, 0x0839: 0x4002c020, 0x083a: 0xa0000000, - // Block 0x21, offset 0x840 - 0x0840: 0x4038e820, 0x0841: 0x4038ea20, 0x0842: 0x4038ec20, 0x0843: 0x4038ee20, - 0x0844: 0x4038f020, 0x0845: 0x4038f220, 0x0846: 0x4038f420, 0x0847: 0x4038f620, - 0x0848: 0x4038f820, 0x0849: 0x4038fa20, 0x084a: 0x4038fc20, 0x084b: 0x4038fe20, - 0x084c: 0x40390020, 0x084d: 0x40390220, 0x084e: 0x40390420, 0x084f: 0x40390620, - 0x0850: 0x40390820, 0x0851: 0x40390a20, 0x0852: 0x40390c20, 0x0853: 0x40390e20, - 0x0854: 0x40391020, 0x0855: 0x40391220, 0x0856: 0x82e61c8a, 0x0857: 0x82e61c8b, - 0x0858: 0xae609f02, 0x0859: 0xae60a002, 0x085a: 0x40391820, 0x085b: 0x82e61c8d, - 0x085c: 0xae609702, 0x085d: 0xae609702, 0x085e: 0xae609802, 0x085f: 0xae609802, - 0x0860: 0xae609802, 0x0861: 0xae609902, 0x0862: 0xae609902, 0x0863: 0xae609902, - 0x0864: 0xa0009a02, 0x0865: 0xae609a02, 0x0866: 0xae609b02, 0x0867: 0xae609b02, - 0x0868: 0xa0009c02, 0x0869: 0xae609c02, 0x086a: 0xae609c02, 0x086b: 0xae609d02, - 0x086c: 0xae609e02, 0x086d: 0xae60a102, - 0x0870: 0x40027e20, 0x0871: 0x40028020, 0x0872: 0x40028220, 0x0873: 0x40028420, - 0x0874: 0x40028620, 0x0875: 0x40028820, 0x0876: 0x40028a20, 0x0877: 0x40028c20, - 0x0878: 0x40028e20, 0x0879: 0x40029020, 0x087a: 0x40029220, 0x087b: 0x40029420, - 0x087c: 0x40029620, 0x087d: 0x40029820, 0x087e: 0x40029a20, - // Block 0x22, offset 0x880 - 0x0880: 0x403ae620, 0x0881: 0x403ae820, 0x0882: 0x403aea20, 0x0883: 0x403aec20, - 0x0884: 0x403aee20, 0x0885: 0x403af020, 0x0886: 0x403af220, 0x0887: 0x403af420, - 0x0888: 0x403af620, 0x0889: 0x403af820, 0x088a: 0x403afa20, 0x088b: 0x403afc20, - 0x088c: 0x403afe20, 0x088d: 0x403b0020, 0x088e: 0x403b0220, 0x088f: 0x403b0420, - 0x0890: 0x403b0620, 0x0891: 0x403b0820, 0x0892: 0x403b0a20, 0x0893: 0x403b0c20, - 0x0894: 0x403b0e20, 0x0895: 0x403b1020, 0x0896: 0x403b1220, 0x0897: 0x403b1420, - 0x0898: 0x403b1620, 0x0899: 0xadc06002, 0x089a: 0xadc06002, 0x089b: 0xadc06002, - 0x089e: 0x40056820, - // Block 0x23, offset 0x8c0 - 0x08e0: 0x40395020, 0x08e2: 0x40397020, 0x08e3: 0x4039ec20, - 0x08e4: 0x403a0620, 0x08e5: 0x403a1820, 0x08e6: 0x403a4c20, 0x08e7: 0x403a5420, - 0x08e8: 0x40393220, 0x08e9: 0x40393420, 0x08ea: 0x4039c420, 0x08eb: 0x403a8c20, - 0x08ec: 0x40393620, - // Block 0x24, offset 0x900 - 0x0924: 0xae60af02, 0x0925: 0xae60b402, 0x0926: 0xadc0b802, 0x0927: 0xae60a402, - 0x0928: 0xae60a802, 0x0929: 0xadc0ac02, 0x092a: 0xae600000, 0x092b: 0xae600000, - 0x092c: 0xae600000, 0x092d: 0xadc00000, 0x092e: 0xadc00000, 0x092f: 0xadc00000, - 0x0930: 0xa1b0a302, 0x0931: 0xa1c0a702, 0x0932: 0xa1d0ab02, 0x0933: 0xae600000, - 0x0934: 0xae60b002, 0x0935: 0xae60b102, 0x0936: 0xadc0b902, 0x0937: 0xae60ca02, - 0x0938: 0xae60cb02, 0x0939: 0xadc0cf02, 0x093a: 0xadc0d002, 0x093b: 0xae60cd02, - 0x093c: 0xae60ce02, 0x093d: 0xae60cc02, 0x093e: 0xae60b502, - // Block 0x25, offset 0x940 - 0x0940: 0xa000f202, 0x0941: 0xa000f202, 0x0942: 0xa000f302, 0x0943: 0xa000f402, - 0x0944: 0x403fbc20, 0x0945: 0x403fbe20, 0x0946: 0x403fc020, 0x0947: 0x403fcc20, - 0x0948: 0x403fce20, 0x0949: 0x403fd020, 0x094a: 0x403fd220, 0x094b: 0x403fd420, - 0x094c: 0x403fd820, 0x094d: 0x403fdc20, 0x094e: 0x403fde20, 0x094f: 0x403fe020, - 0x0950: 0x403fe220, 0x0951: 0x403fe420, 0x0952: 0x403fe620, 0x0953: 0x403fe820, - 0x0954: 0x403fea20, 0x0955: 0x403fec20, 0x0956: 0x403fee20, 0x0957: 0x403ff020, - 0x0958: 0x403ff420, 0x0959: 0x403ff620, 0x095a: 0x403ff820, 0x095b: 0x403ffa20, - 0x095c: 0x403ffc20, 0x095d: 0x40400220, 0x095e: 0x40400420, 0x095f: 0x40400620, - 0x0960: 0x40400820, 0x0961: 0x40400a20, 0x0962: 0x40400e20, 0x0963: 0x40401020, - 0x0964: 0x40401220, 0x0965: 0x40401420, 0x0966: 0x40401620, 0x0967: 0x40401820, - 0x0968: 0x40401a20, 0x0969: 0xe0001830, 0x096a: 0x40401c20, 0x096b: 0x40401e20, - 0x096c: 0x40402020, 0x096d: 0x40402420, 0x096e: 0x40402620, 0x096f: 0x40402820, - 0x0970: 0x40402c20, 0x0971: 0xe0001839, 0x0972: 0x40402e20, 0x0973: 0x40403020, - 0x0974: 0xe000183c, 0x0975: 0x40403220, 0x0976: 0x40403420, 0x0977: 0x40403620, - 0x0978: 0x40403820, 0x0979: 0x40403a20, 0x097a: 0x40404c20, 0x097b: 0x40404e20, - 0x097c: 0xa070f102, 0x097d: 0x40403c20, 0x097e: 0x40404a20, 0x097f: 0x40405620, - // Block 0x26, offset 0x980 - 0x0980: 0x40405820, 0x0981: 0x40405a20, 0x0982: 0x40405c20, 0x0983: 0x40405e20, - 0x0984: 0x40406020, 0x0985: 0x40406620, 0x0986: 0x40406a20, 0x0987: 0x40406c20, - 0x0988: 0x40407020, 0x0989: 0x40407220, 0x098a: 0x40407420, 0x098b: 0x40407620, - 0x098c: 0x40407820, 0x098d: 0x8209203d, 0x098e: 0x40406e20, 0x098f: 0x40405020, - 0x0990: 0x403fb820, 0x0991: 0xae600000, 0x0992: 0xadc00000, 0x0993: 0xae603502, - 0x0994: 0xae603202, 0x0995: 0x40406820, 0x0996: 0x40405220, 0x0997: 0x40405420, - 0x0998: 0xe000181e, 0x0999: 0xe0001821, 0x099a: 0xe0001824, 0x099b: 0xe0001827, - 0x099c: 0xe000182a, 0x099d: 0xe000182d, 0x099e: 0xe0001833, 0x099f: 0xe0001836, - 0x09a0: 0x403fd620, 0x09a1: 0x403fda20, 0x09a2: 0x40406220, 0x09a3: 0x40406420, - 0x09a4: 0x40030c20, 0x09a5: 0x40030e20, 0x09a6: 0xe000016a, 0x09a7: 0xe00001f8, - 0x09a8: 0xe0000313, 0x09a9: 0xe00003ed, 0x09aa: 0xe00004c8, 0x09ab: 0xe0000592, - 0x09ac: 0xe000065d, 0x09ad: 0xe0000705, 0x09ae: 0xe00007b1, 0x09af: 0xe0000856, - 0x09b0: 0x40056c20, 0x09b1: 0x4027b620, 0x09b2: 0x403fba20, 0x09b3: 0x403fc220, - 0x09b4: 0x403fc420, 0x09b5: 0x403fc620, 0x09b6: 0x403fc820, 0x09b7: 0x403fca20, - 0x09b9: 0x403ffe20, 0x09ba: 0x40402a20, 0x09bb: 0x403ff220, - 0x09bc: 0x40400020, 0x09bd: 0x40403e20, 0x09be: 0x40400c20, 0x09bf: 0x40402220, - // Block 0x27, offset 0x9c0 - 0x09c1: 0xa000f202, 0x09c2: 0xa000f302, 0x09c3: 0xa000f402, - 0x09c5: 0x40407c20, 0x09c6: 0x40407e20, 0x09c7: 0x40408020, - 0x09c8: 0x40408220, 0x09c9: 0x40408420, 0x09ca: 0x40408620, 0x09cb: 0x40408820, - 0x09cc: 0x40408c20, 0x09cf: 0x40409020, - 0x09d0: 0x40409220, 0x09d3: 0x40409420, - 0x09d4: 0x40409620, 0x09d5: 0x40409820, 0x09d6: 0x40409a20, 0x09d7: 0x40409c20, - 0x09d8: 0x40409e20, 0x09d9: 0x4040a020, 0x09da: 0x4040a220, 0x09db: 0x4040a420, - 0x09dc: 0x4040a620, 0x09dd: 0x4040a820, 0x09de: 0x4040aa20, 0x09df: 0x4040ac20, - 0x09e0: 0x4040ae20, 0x09e1: 0x4040b020, 0x09e2: 0x4040b220, 0x09e3: 0x4040b420, - 0x09e4: 0x4040b620, 0x09e5: 0x4040b820, 0x09e6: 0x4040ba20, 0x09e7: 0x4040bc20, - 0x09e8: 0x4040be20, 0x09ea: 0x4040c020, 0x09eb: 0x4040c220, - 0x09ec: 0x4040c420, 0x09ed: 0x4040c620, 0x09ee: 0x4040c820, 0x09ef: 0x4040ca20, - 0x09f0: 0x4040cc20, 0x09f2: 0x4040d020, - 0x09f6: 0x4040d420, 0x09f7: 0x4040d620, - 0x09f8: 0x4040d820, 0x09f9: 0x4040da20, - 0x09fc: 0xa070f102, 0x09fd: 0x4040dc20, 0x09fe: 0x4040de20, 0x09ff: 0x4040e020, - // Block 0x28, offset 0xa00 - 0x0a00: 0x4040e220, 0x0a01: 0x4040e420, 0x0a02: 0x4040e620, 0x0a03: 0x4040e820, - 0x0a04: 0x4040ea20, 0x0a07: 0xc05a0191, - 0x0a08: 0x4040f220, 0x0a0b: 0x4040f420, - 0x0a0c: 0x4040f620, 0x0a0d: 0x8209207c, 0x0a0e: 0xe0001845, - 0x0a17: 0x4040fa20, - 0x0a1c: 0xe000183f, 0x0a1d: 0xe0001842, 0x0a1f: 0xe0001848, - 0x0a20: 0x40408a20, 0x0a21: 0x40408e20, 0x0a22: 0x4040ec20, 0x0a23: 0x4040ee20, - 0x0a26: 0xe000016d, 0x0a27: 0xe00001fb, - 0x0a28: 0xe0000316, 0x0a29: 0xe00003f0, 0x0a2a: 0xe00004cb, 0x0a2b: 0xe0000595, - 0x0a2c: 0xe0000660, 0x0a2d: 0xe0000708, 0x0a2e: 0xe00007b4, 0x0a2f: 0xe0000859, - 0x0a30: 0x4040ce20, 0x0a31: 0x4040d220, 0x0a32: 0x4027e820, 0x0a33: 0x4027ea20, - 0x0a34: 0x40283020, 0x0a35: 0x40283220, 0x0a36: 0x40283420, 0x0a37: 0x40283620, - 0x0a38: 0x40283820, 0x0a39: 0x40283a20, 0x0a3a: 0x40073a20, 0x0a3b: 0x4027ec20, - // Block 0x29, offset 0xa40 - 0x0a41: 0xa000f202, 0x0a42: 0xa000f302, 0x0a43: 0xa000f402, - 0x0a45: 0x40410620, 0x0a46: 0x40410820, 0x0a47: 0x40411020, - 0x0a48: 0x40411220, 0x0a49: 0x40410020, 0x0a4a: 0x40410220, - 0x0a4f: 0x40411420, - 0x0a50: 0x40410a20, 0x0a53: 0x40410420, - 0x0a54: 0x40410c20, 0x0a55: 0x40411c20, 0x0a56: 0x40411e20, 0x0a57: 0x40412020, - 0x0a58: 0x40412220, 0x0a59: 0x40412420, 0x0a5a: 0x40412620, 0x0a5b: 0x40412820, - 0x0a5c: 0x40412a20, 0x0a5d: 0x40412c20, 0x0a5e: 0x40412e20, 0x0a5f: 0x40413020, - 0x0a60: 0x40413220, 0x0a61: 0x40413420, 0x0a62: 0x40413620, 0x0a63: 0x40413820, - 0x0a64: 0x40413a20, 0x0a65: 0x40413c20, 0x0a66: 0x40413e20, 0x0a67: 0x40414020, - 0x0a68: 0x40414220, 0x0a6a: 0x40414420, 0x0a6b: 0x40414620, - 0x0a6c: 0x40414820, 0x0a6d: 0x40414a20, 0x0a6e: 0x40414c20, 0x0a6f: 0x40414e20, - 0x0a70: 0x40415220, 0x0a72: 0x40415420, 0x0a73: 0xe000185a, - 0x0a75: 0x40415620, 0x0a76: 0xe000184b, - 0x0a78: 0x40411620, 0x0a79: 0x40411820, - 0x0a7c: 0xa070f102, 0x0a7e: 0x40415a20, 0x0a7f: 0x40415c20, - // Block 0x2a, offset 0xa80 - 0x0a80: 0x40415e20, 0x0a81: 0x40416020, 0x0a82: 0x40416220, - 0x0a87: 0x40416420, - 0x0a88: 0x40416620, 0x0a8b: 0x40416820, - 0x0a8c: 0x40416a20, 0x0a8d: 0x820920b6, - 0x0a91: 0x40411a20, - 0x0a99: 0xe000184e, 0x0a9a: 0xe0001851, 0x0a9b: 0xe0001854, - 0x0a9c: 0x40415820, 0x0a9e: 0xe0001857, - 0x0aa6: 0xe0000170, 0x0aa7: 0xe00001fe, - 0x0aa8: 0xe0000319, 0x0aa9: 0xe00003f3, 0x0aaa: 0xe00004ce, 0x0aab: 0xe0000598, - 0x0aac: 0xe0000663, 0x0aad: 0xe000070b, 0x0aae: 0xe00007b7, 0x0aaf: 0xe000085c, - 0x0ab0: 0xa000f502, 0x0ab1: 0xa000f602, 0x0ab2: 0x40410e20, 0x0ab3: 0x4040fe20, - 0x0ab4: 0x4040fc20, 0x0ab5: 0x40415020, - // Block 0x2b, offset 0xac0 - 0x0ac1: 0xa000f202, 0x0ac2: 0xa000f302, 0x0ac3: 0xa000f402, - 0x0ac5: 0x40417020, 0x0ac6: 0x40417220, 0x0ac7: 0x40417420, - 0x0ac8: 0x40417620, 0x0ac9: 0x40417820, 0x0aca: 0x40417a20, 0x0acb: 0x40417c20, - 0x0acc: 0x40418020, 0x0acd: 0x40418420, 0x0acf: 0x40418620, - 0x0ad0: 0x40418820, 0x0ad1: 0x40418a20, 0x0ad3: 0x40418c20, - 0x0ad4: 0x40418e20, 0x0ad5: 0x40419020, 0x0ad6: 0x40419220, 0x0ad7: 0x40419420, - 0x0ad8: 0x40419620, 0x0ad9: 0x40419820, 0x0ada: 0x40419a20, 0x0adb: 0x40419c20, - 0x0adc: 0x40419e20, 0x0add: 0x4041a020, 0x0ade: 0x4041a220, 0x0adf: 0x4041a420, - 0x0ae0: 0x4041a620, 0x0ae1: 0x4041a820, 0x0ae2: 0x4041aa20, 0x0ae3: 0x4041ac20, - 0x0ae4: 0x4041ae20, 0x0ae5: 0x4041b020, 0x0ae6: 0x4041b220, 0x0ae7: 0x4041b420, - 0x0ae8: 0x4041b620, 0x0aea: 0x4041b820, 0x0aeb: 0x4041ba20, - 0x0aec: 0x4041bc20, 0x0aed: 0x4041be20, 0x0aee: 0x4041c020, 0x0aef: 0x4041c220, - 0x0af0: 0x4041c420, 0x0af2: 0x4041c620, 0x0af3: 0x4041d220, - 0x0af5: 0x4041c820, 0x0af6: 0x4041ca20, 0x0af7: 0x4041cc20, - 0x0af8: 0x4041ce20, 0x0af9: 0x4041d020, - 0x0afc: 0xa070f102, 0x0afd: 0x4041d420, 0x0afe: 0x4041d620, 0x0aff: 0x4041d820, - // Block 0x2c, offset 0xb00 - 0x0b00: 0x4041da20, 0x0b01: 0x4041dc20, 0x0b02: 0x4041de20, 0x0b03: 0x4041e020, - 0x0b04: 0x4041e220, 0x0b05: 0x4041e820, 0x0b07: 0x4041ea20, - 0x0b08: 0x4041ec20, 0x0b09: 0x4041ee20, 0x0b0b: 0x4041f020, - 0x0b0c: 0x4041f220, 0x0b0d: 0x820920fa, - 0x0b10: 0x40416e20, - 0x0b20: 0x40417e20, 0x0b21: 0x40418220, 0x0b22: 0x4041e420, 0x0b23: 0x4041e620, - 0x0b26: 0xe0000173, 0x0b27: 0xe0000201, - 0x0b28: 0xe000031c, 0x0b29: 0xe00003f6, 0x0b2a: 0xe00004d1, 0x0b2b: 0xe000059b, - 0x0b2c: 0xe0000666, 0x0b2d: 0xe000070e, 0x0b2e: 0xe00007ba, 0x0b2f: 0xe000085f, - 0x0b30: 0x40057420, 0x0b31: 0x4027ee20, - // Block 0x2d, offset 0xb40 - 0x0b41: 0xa000f202, 0x0b42: 0xa000f302, 0x0b43: 0xa000f402, - 0x0b45: 0x4041f620, 0x0b46: 0x4041f820, 0x0b47: 0x4041fa20, - 0x0b48: 0x4041fc20, 0x0b49: 0x4041fe20, 0x0b4a: 0x40420020, 0x0b4b: 0x40420220, - 0x0b4c: 0x40420620, 0x0b4f: 0x40420a20, - 0x0b50: 0x40420c20, 0x0b53: 0x40420e20, - 0x0b54: 0x40421020, 0x0b55: 0x40421220, 0x0b56: 0x40421420, 0x0b57: 0x40421620, - 0x0b58: 0x40421820, 0x0b59: 0x40421a20, 0x0b5a: 0x40421c20, 0x0b5b: 0x40421e20, - 0x0b5c: 0x40422020, 0x0b5d: 0x40422220, 0x0b5e: 0x40422420, 0x0b5f: 0x40422620, - 0x0b60: 0x40422820, 0x0b61: 0x40422a20, 0x0b62: 0x40422c20, 0x0b63: 0x40422e20, - 0x0b64: 0x40423020, 0x0b65: 0x40423220, 0x0b66: 0x40423420, 0x0b67: 0x40423620, - 0x0b68: 0x40423820, 0x0b6a: 0x40423a20, 0x0b6b: 0x40423c20, - 0x0b6c: 0x40423e20, 0x0b6d: 0x40424020, 0x0b6e: 0x40424220, 0x0b6f: 0x40424420, - 0x0b70: 0x40424820, 0x0b72: 0x40424a20, 0x0b73: 0x40424c20, - 0x0b75: 0x40424e20, 0x0b76: 0x40425220, 0x0b77: 0x40425420, - 0x0b78: 0x40425620, 0x0b79: 0x40425820, - 0x0b7c: 0xa070f102, 0x0b7d: 0x40425a20, 0x0b7e: 0x40425c20, 0x0b7f: 0x40425e20, - // Block 0x2e, offset 0xb80 - 0x0b80: 0x40426020, 0x0b81: 0x40426220, 0x0b82: 0x40426420, 0x0b83: 0x40426620, - 0x0b84: 0x40426820, 0x0b87: 0xc05d01e1, - 0x0b88: 0x40427020, 0x0b8b: 0x40427220, - 0x0b8c: 0x40427420, 0x0b8d: 0x8209213b, - 0x0b96: 0x40427820, 0x0b97: 0x40427a20, - 0x0b9c: 0xe000185d, 0x0b9d: 0xe0001860, 0x0b9f: 0x40424620, - 0x0ba0: 0x40420420, 0x0ba1: 0x40420820, 0x0ba2: 0x40426a20, 0x0ba3: 0x40426c20, - 0x0ba6: 0xe0000176, 0x0ba7: 0xe0000204, - 0x0ba8: 0xe000031f, 0x0ba9: 0xe00003f9, 0x0baa: 0xe00004d4, 0x0bab: 0xe000059e, - 0x0bac: 0xe0000669, 0x0bad: 0xe0000711, 0x0bae: 0xe00007bd, 0x0baf: 0xe0000862, - 0x0bb0: 0x40073c20, 0x0bb1: 0x40425020, 0x0bb2: 0x40283c20, 0x0bb3: 0x40283e20, - 0x0bb4: 0x40284020, 0x0bb5: 0x40284220, 0x0bb6: 0x40284420, 0x0bb7: 0x40284620, - // Block 0x2f, offset 0xbc0 - 0x0bc2: 0xa000f302, 0x0bc3: 0x40429620, - 0x0bc5: 0x40427e20, 0x0bc6: 0x40428020, 0x0bc7: 0x40428220, - 0x0bc8: 0x40428420, 0x0bc9: 0x40428620, 0x0bca: 0x40428820, - 0x0bce: 0x40428a20, 0x0bcf: 0x40428c20, - 0x0bd0: 0x40428e20, 0x0bd2: 0xc0610231, 0x0bd3: 0x40429220, - 0x0bd4: 0x40429420, 0x0bd5: 0x40429820, - 0x0bd9: 0x40429a20, 0x0bda: 0x40429c20, - 0x0bdc: 0x4042bc20, 0x0bde: 0x40429e20, 0x0bdf: 0x4042a020, - 0x0be3: 0x4042a220, - 0x0be4: 0x4042a420, - 0x0be8: 0x4042a620, 0x0be9: 0x4042ba20, 0x0bea: 0x4042a820, - 0x0bee: 0x4042aa20, 0x0bef: 0x4042ac20, - 0x0bf0: 0x4042ae20, 0x0bf1: 0x4042b820, 0x0bf2: 0x4042b020, 0x0bf3: 0x4042b620, - 0x0bf4: 0x4042b420, 0x0bf5: 0x4042b220, 0x0bf6: 0x4042be20, 0x0bf7: 0x4042c020, - 0x0bf8: 0x4042c220, 0x0bf9: 0x4042c420, - 0x0bfe: 0x4042c620, 0x0bff: 0x4042c820, - // Block 0x30, offset 0xc00 - 0x0c00: 0x4042ca20, 0x0c01: 0x4042cc20, 0x0c02: 0x4042ce20, - 0x0c06: 0xc0630261, 0x0c07: 0xc06602b1, - 0x0c08: 0x4042d420, 0x0c0a: 0x4042d620, 0x0c0b: 0x4042d820, - 0x0c0c: 0x4042da20, 0x0c0d: 0x8209216e, - 0x0c10: 0x40427c20, - 0x0c17: 0x4042de20, - 0x0c26: 0xe0000179, 0x0c27: 0xe0000207, - 0x0c28: 0xe0000322, 0x0c29: 0xe00003fc, 0x0c2a: 0xe00004d7, 0x0c2b: 0xe00005a1, - 0x0c2c: 0xe000066c, 0x0c2d: 0xe0000714, 0x0c2e: 0xe00007c0, 0x0c2f: 0xe0000865, - 0x0c30: 0x40285420, 0x0c31: 0x40285620, 0x0c32: 0x40285820, 0x0c33: 0x40073e20, - 0x0c34: 0x40074020, 0x0c35: 0x40074220, 0x0c36: 0x40074420, 0x0c37: 0x40074620, - 0x0c38: 0x40074820, 0x0c39: 0x4027f220, 0x0c3a: 0x40074a20, - // Block 0x31, offset 0xc40 - 0x0c41: 0xa000f202, 0x0c42: 0xa000f302, 0x0c43: 0xa000f402, - 0x0c45: 0x4042e020, 0x0c46: 0x4042e220, 0x0c47: 0x4042e420, - 0x0c48: 0x4042e620, 0x0c49: 0x4042e820, 0x0c4a: 0x4042ea20, 0x0c4b: 0x4042ec20, - 0x0c4c: 0x4042f020, 0x0c4e: 0x4042f420, 0x0c4f: 0x4042f620, - 0x0c50: 0x4042f820, 0x0c52: 0x4042fa20, 0x0c53: 0x4042fc20, - 0x0c54: 0x4042fe20, 0x0c55: 0x40430020, 0x0c56: 0x40430220, 0x0c57: 0x40430420, - 0x0c58: 0x40430620, 0x0c59: 0x40430820, 0x0c5a: 0x40430a20, 0x0c5b: 0x40430e20, - 0x0c5c: 0x40431020, 0x0c5d: 0x40431420, 0x0c5e: 0x40431620, 0x0c5f: 0x40431820, - 0x0c60: 0x40431a20, 0x0c61: 0x40431c20, 0x0c62: 0x40431e20, 0x0c63: 0x40432020, - 0x0c64: 0x40432220, 0x0c65: 0x40432420, 0x0c66: 0x40432620, 0x0c67: 0x40432820, - 0x0c68: 0x40432a20, 0x0c6a: 0x40432c20, 0x0c6b: 0x40432e20, - 0x0c6c: 0x40433020, 0x0c6d: 0x40433220, 0x0c6e: 0x40433420, 0x0c6f: 0x40433620, - 0x0c70: 0x40433820, 0x0c71: 0x40433a20, 0x0c72: 0x40433c20, 0x0c73: 0x40434820, - 0x0c75: 0x40433e20, 0x0c76: 0x40434020, 0x0c77: 0x40434220, - 0x0c78: 0x40434420, 0x0c79: 0x40434620, - 0x0c7d: 0x40434a20, 0x0c7e: 0x40434c20, 0x0c7f: 0x40434e20, - // Block 0x32, offset 0xc80 - 0x0c80: 0x40435020, 0x0c81: 0x40435220, 0x0c82: 0x40435420, 0x0c83: 0x40435620, - 0x0c84: 0x40435820, 0x0c86: 0xc06802e1, 0x0c87: 0x40436020, - 0x0c88: 0x40436220, 0x0c8a: 0x40436420, 0x0c8b: 0x40436620, - 0x0c8c: 0x40436820, 0x0c8d: 0x820921b5, - 0x0c95: 0x825421b6, 0x0c96: 0x825b21b7, - 0x0c98: 0x40430c20, 0x0c99: 0x40431220, - 0x0ca0: 0x4042ee20, 0x0ca1: 0x4042f220, 0x0ca2: 0x40435a20, 0x0ca3: 0x40435c20, - 0x0ca6: 0xe000017c, 0x0ca7: 0xe000020a, - 0x0ca8: 0xe0000325, 0x0ca9: 0xe00003ff, 0x0caa: 0xe00004da, 0x0cab: 0xe00005a4, - 0x0cac: 0xe000066f, 0x0cad: 0xe0000717, 0x0cae: 0xe00007c3, 0x0caf: 0xe0000868, - 0x0cb8: 0xe000017f, 0x0cb9: 0xe000020d, 0x0cba: 0xe0000328, 0x0cbb: 0xe0000402, - 0x0cbc: 0xe0000210, 0x0cbd: 0xe000032b, 0x0cbe: 0xe0000405, 0x0cbf: 0x40074c20, - // Block 0x33, offset 0xcc0 - 0x0cc2: 0xa000f302, 0x0cc3: 0xa000f402, - 0x0cc5: 0x40437020, 0x0cc6: 0x40437220, 0x0cc7: 0x40437420, - 0x0cc8: 0x40437620, 0x0cc9: 0x40437820, 0x0cca: 0x40437a20, 0x0ccb: 0x40437c20, - 0x0ccc: 0x40438020, 0x0cce: 0x40438420, 0x0ccf: 0x40438620, - 0x0cd0: 0x40438820, 0x0cd2: 0x40438a20, 0x0cd3: 0x40438c20, - 0x0cd4: 0x40438e20, 0x0cd5: 0x40439020, 0x0cd6: 0x40439220, 0x0cd7: 0x40439420, - 0x0cd8: 0x40439620, 0x0cd9: 0x40439820, 0x0cda: 0x40439a20, 0x0cdb: 0x40439c20, - 0x0cdc: 0x40439e20, 0x0cdd: 0x4043a020, 0x0cde: 0x4043a220, 0x0cdf: 0x4043a420, - 0x0ce0: 0x4043a620, 0x0ce1: 0x4043a820, 0x0ce2: 0x4043aa20, 0x0ce3: 0x4043ac20, - 0x0ce4: 0x4043ae20, 0x0ce5: 0x4043b020, 0x0ce6: 0x4043b220, 0x0ce7: 0x4043b420, - 0x0ce8: 0x4043b620, 0x0cea: 0x4043b820, 0x0ceb: 0x4043ba20, - 0x0cec: 0x4043bc20, 0x0ced: 0x4043be20, 0x0cee: 0x4043c020, 0x0cef: 0x4043c220, - 0x0cf0: 0x4043c420, 0x0cf1: 0x4043c620, 0x0cf2: 0x4043c820, 0x0cf3: 0x4043d420, - 0x0cf5: 0x4043ca20, 0x0cf6: 0x4043cc20, 0x0cf7: 0x4043ce20, - 0x0cf8: 0x4043d020, 0x0cf9: 0x4043d220, - 0x0cfc: 0xa070f102, 0x0cfd: 0x4043d820, 0x0cfe: 0x4043de20, 0x0cff: 0xc06a0311, - // Block 0x34, offset 0xd00 - 0x0d00: 0x4043e220, 0x0d01: 0x4043e420, 0x0d02: 0x4043e620, 0x0d03: 0x4043e820, - 0x0d04: 0x4043ea20, 0x0d06: 0xc06c0341, 0x0d07: 0x4043f220, - 0x0d08: 0x4043f420, 0x0d0a: 0xc0710311, 0x0d0b: 0x4043f820, - 0x0d0c: 0x4043fa20, 0x0d0d: 0x820921fe, - 0x0d15: 0x4043fe20, 0x0d16: 0x40440020, - 0x0d1e: 0x4043d620, - 0x0d20: 0x40437e20, 0x0d21: 0x40438220, 0x0d22: 0x4043ec20, 0x0d23: 0x4043ee20, - 0x0d26: 0xe0000182, 0x0d27: 0xe0000213, - 0x0d28: 0xe000032e, 0x0d29: 0xe0000408, 0x0d2a: 0xe00004dd, 0x0d2b: 0xe00005a7, - 0x0d2c: 0xe0000672, 0x0d2d: 0xe000071a, 0x0d2e: 0xe00007c6, 0x0d2f: 0xe000086b, - 0x0d31: 0x4043da20, 0x0d32: 0x4043dc20, - // Block 0x35, offset 0xd40 - 0x0d42: 0xa000f302, 0x0d43: 0xa000f402, - 0x0d45: 0x40440220, 0x0d46: 0x40440420, 0x0d47: 0x40440620, - 0x0d48: 0x40440820, 0x0d49: 0x40440a20, 0x0d4a: 0x40440c20, 0x0d4b: 0x40440e20, - 0x0d4c: 0x40441220, 0x0d4e: 0x40441620, 0x0d4f: 0x40441820, - 0x0d50: 0x40441a20, 0x0d52: 0x40441c20, 0x0d53: 0x40441e20, - 0x0d54: 0x40442020, 0x0d55: 0x40442220, 0x0d56: 0x40442420, 0x0d57: 0x40442620, - 0x0d58: 0x40442820, 0x0d59: 0x40442a20, 0x0d5a: 0x40442c20, 0x0d5b: 0x40442e20, - 0x0d5c: 0x40443020, 0x0d5d: 0x40443220, 0x0d5e: 0x40443420, 0x0d5f: 0x40443620, - 0x0d60: 0x40443820, 0x0d61: 0x40443a20, 0x0d62: 0x40443c20, 0x0d63: 0x40443e20, - 0x0d64: 0x40444020, 0x0d65: 0x40444220, 0x0d66: 0x40444420, 0x0d67: 0x40444620, - 0x0d68: 0x40444820, 0x0d69: 0x40444a20, 0x0d6a: 0x40444c20, 0x0d6b: 0x40444e20, - 0x0d6c: 0x40445020, 0x0d6d: 0x40445220, 0x0d6e: 0x40445420, 0x0d6f: 0x40445620, - 0x0d70: 0x40445820, 0x0d71: 0x40446a20, 0x0d72: 0x40445a20, 0x0d73: 0x40446620, - 0x0d74: 0x40446820, 0x0d75: 0x40445c20, 0x0d76: 0x40445e20, 0x0d77: 0x40446020, - 0x0d78: 0x40446220, 0x0d79: 0x40446420, 0x0d7a: 0x40446c20, - 0x0d7d: 0x40446e20, 0x0d7e: 0x40447020, 0x0d7f: 0x40447220, - // Block 0x36, offset 0xd80 - 0x0d80: 0x40447420, 0x0d81: 0x40447620, 0x0d82: 0x40447820, 0x0d83: 0x40447a20, - 0x0d84: 0x40447c20, 0x0d86: 0xc07303b1, 0x0d87: 0xc0760401, - 0x0d88: 0x40448620, 0x0d8a: 0x40448820, 0x0d8b: 0x40448a20, - 0x0d8c: 0x40448c20, 0x0d8d: 0x82092248, 0x0d8e: 0xe000186c, - 0x0d97: 0x40448e20, - 0x0da0: 0x40441020, 0x0da1: 0x40441420, 0x0da2: 0x40447e20, 0x0da3: 0x40448020, - 0x0da6: 0xe0000185, 0x0da7: 0xe0000216, - 0x0da8: 0xe0000331, 0x0da9: 0xe000040b, 0x0daa: 0xe00004e0, 0x0dab: 0xe00005aa, - 0x0dac: 0xe0000675, 0x0dad: 0xe000071d, 0x0dae: 0xe00007c9, 0x0daf: 0xe000086e, - 0x0db0: 0x40285a20, 0x0db1: 0x40285c20, 0x0db2: 0x40285e20, 0x0db3: 0x40286020, - 0x0db4: 0x40286220, 0x0db5: 0x40286420, - 0x0db9: 0x40074e20, 0x0dba: 0xe0001866, 0x0dbb: 0xe0001869, - 0x0dbc: 0xe000186f, 0x0dbd: 0xe0001872, 0x0dbe: 0xe0001875, 0x0dbf: 0xe0001863, - // Block 0x37, offset 0xdc0 - 0x0dc2: 0xa000f302, 0x0dc3: 0xa000f402, - 0x0dc5: 0x40449220, 0x0dc6: 0x40449420, 0x0dc7: 0x40449620, - 0x0dc8: 0x40449820, 0x0dc9: 0x40449a20, 0x0dca: 0x40449c20, 0x0dcb: 0x40449e20, - 0x0dcc: 0x4044a020, 0x0dcd: 0x4044a220, 0x0dce: 0x4044a420, 0x0dcf: 0x4044a620, - 0x0dd0: 0x4044a820, 0x0dd1: 0x4044aa20, 0x0dd2: 0x4044ac20, 0x0dd3: 0x4044ae20, - 0x0dd4: 0x4044b020, 0x0dd5: 0x4044b220, 0x0dd6: 0x4044b420, - 0x0dda: 0x4044b620, 0x0ddb: 0x4044b820, - 0x0ddc: 0x4044ba20, 0x0ddd: 0x4044bc20, 0x0dde: 0x4044be20, 0x0ddf: 0x4044c020, - 0x0de0: 0x4044c220, 0x0de1: 0x4044c420, 0x0de2: 0x4044c620, 0x0de3: 0x4044c820, - 0x0de4: 0x4044ca20, 0x0de5: 0x4044cc20, 0x0de6: 0x4044ce20, 0x0de7: 0x4044d020, - 0x0de8: 0x4044d220, 0x0de9: 0x4044d420, 0x0dea: 0x4044d620, 0x0deb: 0x4044d820, - 0x0dec: 0x4044da20, 0x0ded: 0x4044dc20, 0x0dee: 0x4044de20, 0x0def: 0x4044e020, - 0x0df0: 0x4044e220, 0x0df1: 0x4044e420, 0x0df3: 0x4044e620, - 0x0df4: 0x4044e820, 0x0df5: 0x4044ea20, 0x0df6: 0x4044ec20, 0x0df7: 0x4044ee20, - 0x0df8: 0x4044f020, 0x0df9: 0x4044f220, 0x0dfa: 0x4044f420, 0x0dfb: 0x4044f620, - 0x0dfd: 0x4044f820, - // Block 0x38, offset 0xe00 - 0x0e00: 0x4044fa20, 0x0e01: 0x4044fc20, 0x0e02: 0x4044fe20, 0x0e03: 0x40450020, - 0x0e04: 0x40450220, 0x0e05: 0x40450420, 0x0e06: 0x40450620, - 0x0e0a: 0x82092295, - 0x0e0f: 0x40450820, - 0x0e10: 0x40450a20, 0x0e11: 0x40450c20, 0x0e12: 0x40450e20, 0x0e13: 0x40451020, - 0x0e14: 0x40451220, 0x0e16: 0x40451420, - 0x0e18: 0x40451620, 0x0e19: 0xc0780431, 0x0e1a: 0x40452020, 0x0e1b: 0x40452220, - 0x0e1c: 0xc07d04b1, 0x0e1d: 0x40452620, 0x0e1e: 0x40452820, 0x0e1f: 0x40451a20, - 0x0e32: 0x40451820, 0x0e33: 0x40451c20, - 0x0e34: 0x40057620, - // Block 0x39, offset 0xe40 - 0x0e41: 0x40491020, 0x0e42: 0x40491220, 0x0e43: 0x40491420, - 0x0e44: 0x40491620, 0x0e45: 0x40491820, 0x0e46: 0x40491a20, 0x0e47: 0x40491c20, - 0x0e48: 0x40491e20, 0x0e49: 0x40492020, 0x0e4a: 0x40492220, 0x0e4b: 0x40492420, - 0x0e4c: 0x40492620, 0x0e4d: 0x40492820, 0x0e4e: 0x40492a20, 0x0e4f: 0x40492c20, - 0x0e50: 0x40492e20, 0x0e51: 0x40493020, 0x0e52: 0x40493220, 0x0e53: 0x40493420, - 0x0e54: 0x40493620, 0x0e55: 0x40493820, 0x0e56: 0x40493a20, 0x0e57: 0x40493c20, - 0x0e58: 0x40493e20, 0x0e59: 0x40494020, 0x0e5a: 0x40494220, 0x0e5b: 0x40494420, - 0x0e5c: 0x40494620, 0x0e5d: 0x40494820, 0x0e5e: 0x40494a20, 0x0e5f: 0x40494c20, - 0x0e60: 0x40494e20, 0x0e61: 0x40495020, 0x0e62: 0x40495220, 0x0e63: 0x40495420, - 0x0e64: 0x40495620, 0x0e65: 0x40495820, 0x0e66: 0x40495a20, 0x0e67: 0x40495c20, - 0x0e68: 0x40495e20, 0x0e69: 0x40496020, 0x0e6a: 0x40496220, 0x0e6b: 0x40496420, - 0x0e6c: 0x40496620, 0x0e6d: 0x40496820, 0x0e6e: 0x40496a20, 0x0e6f: 0x40496c20, - 0x0e70: 0x40496e20, 0x0e71: 0x40497020, 0x0e72: 0x40497220, 0x0e73: 0x40497420, - 0x0e74: 0x40497620, 0x0e75: 0x40497820, 0x0e76: 0x40497a20, 0x0e77: 0x40497c20, - 0x0e78: 0x826724bf, 0x0e79: 0x826724c0, 0x0e7a: 0x820924c1, - 0x0e7f: 0x4027f420, - // Block 0x3a, offset 0xe80 - 0x0e80: 0xc07f04e1, 0x0e81: 0xc0ae04e1, 0x0e82: 0xc0dd04e1, 0x0e83: 0xc10c04e1, - 0x0e84: 0xc13b04e1, 0x0e85: 0x40498e20, 0x0e86: 0x4027b820, 0x0e87: 0xa000ff02, - 0x0e88: 0xa6b10002, 0x0e89: 0xa6b10102, 0x0e8a: 0xa6b10202, 0x0e8b: 0xa6b10302, - 0x0e8c: 0xa0010402, 0x0e8d: 0xc16a0511, 0x0e8e: 0xa000fe02, 0x0e8f: 0x40057820, - 0x0e90: 0xe000019a, 0x0e91: 0xe000022e, 0x0e92: 0xe0000346, 0x0e93: 0xe0000420, - 0x0e94: 0xe00004f5, 0x0e95: 0xe00005bf, 0x0e96: 0xe000068a, 0x0e97: 0xe0000732, - 0x0e98: 0xe00007de, 0x0e99: 0xe0000883, 0x0e9a: 0x40057a20, 0x0e9b: 0x40057c20, - // Block 0x3b, offset 0xec0 - 0x0ec1: 0x40499220, 0x0ec2: 0x40499420, - 0x0ec4: 0x40499620, 0x0ec7: 0x40499820, - 0x0ec8: 0x40499a20, 0x0eca: 0x40499e20, - 0x0ecd: 0x4049a220, - 0x0ed4: 0x4049a420, 0x0ed5: 0x4049a620, 0x0ed6: 0x4049a820, 0x0ed7: 0x4049aa20, - 0x0ed9: 0x4049ac20, 0x0eda: 0x4049ae20, 0x0edb: 0x4049b020, - 0x0edc: 0x4049b220, 0x0edd: 0x4049b420, 0x0ede: 0x4049b620, 0x0edf: 0x4049b820, - 0x0ee1: 0x4049ba20, 0x0ee2: 0x4049bc20, 0x0ee3: 0x4049be20, - 0x0ee5: 0x4049c020, 0x0ee7: 0x4049c220, - 0x0eea: 0x40499c20, 0x0eeb: 0x4049c420, - 0x0eed: 0x4049c620, 0x0eee: 0x4049c820, 0x0eef: 0x4049ca20, - 0x0ef0: 0x4049cc20, 0x0ef1: 0x4049ce20, 0x0ef2: 0x4049d020, 0x0ef3: 0x4049d220, - 0x0ef4: 0x4049d420, 0x0ef5: 0x4049d620, 0x0ef6: 0x4049d820, 0x0ef7: 0x4049da20, - 0x0ef8: 0x827624ee, 0x0ef9: 0x827624ef, 0x0efb: 0x4049e020, - 0x0efc: 0x4049e220, 0x0efd: 0x4049e420, - // Block 0x3c, offset 0xf00 - 0x0f00: 0xc16c0541, 0x0f01: 0xc18c0541, 0x0f02: 0xc1ac0541, 0x0f03: 0xc1cc0541, - 0x0f04: 0xc1ec0541, 0x0f06: 0x4027ba20, - 0x0f08: 0xa7a10602, 0x0f09: 0xa7a10702, 0x0f0a: 0xa7a10802, 0x0f0b: 0xa7a10902, - 0x0f0c: 0xa0010a02, 0x0f0d: 0xc20c0641, - 0x0f10: 0xe000019d, 0x0f11: 0xe0000231, 0x0f12: 0xe0000349, 0x0f13: 0xe0000423, - 0x0f14: 0xe00004f8, 0x0f15: 0xe00005c2, 0x0f16: 0xe000068d, 0x0f17: 0xe0000735, - 0x0f18: 0xe00007e1, 0x0f19: 0xe0000886, - 0x0f1c: 0xf0000404, 0x0f1d: 0xf0000404, 0x0f1e: 0x40499020, 0x0f1f: 0x4049a020, - // Block 0x3d, offset 0xf40 - 0x0f40: 0xe000201a, 0x0f41: 0x40075e20, 0x0f42: 0x40076020, 0x0f43: 0x40076220, - 0x0f44: 0x40058220, 0x0f45: 0x40058420, 0x0f46: 0x40058620, 0x0f47: 0x40058820, - 0x0f48: 0x40058a20, 0x0f49: 0x40058c20, 0x0f4a: 0x40058e20, 0x0f4b: 0x40059420, - 0x0f4c: 0x0005949b, 0x0f4d: 0x40059620, 0x0f4e: 0x40059820, 0x0f4f: 0x40059a20, - 0x0f50: 0x40059c20, 0x0f51: 0x40059e20, 0x0f52: 0x4005a020, 0x0f53: 0x40076420, - 0x0f54: 0x4002aa20, 0x0f55: 0x40076620, 0x0f56: 0x40076820, 0x0f57: 0x40076a20, - 0x0f58: 0xadc00000, 0x0f59: 0xadc00000, 0x0f5a: 0x40076c20, 0x0f5b: 0x40076e20, - 0x0f5c: 0x40077020, 0x0f5d: 0x40077220, 0x0f5e: 0x40077420, 0x0f5f: 0x40077620, - 0x0f60: 0xe00001a0, 0x0f61: 0xe0000234, 0x0f62: 0xe000034c, 0x0f63: 0xe0000426, - 0x0f64: 0xe00004fb, 0x0f65: 0xe00005c5, 0x0f66: 0xe0000690, 0x0f67: 0xe0000738, - 0x0f68: 0xe00007e4, 0x0f69: 0xe0000889, 0x0f6a: 0xe0000237, 0x0f6b: 0xe000034f, - 0x0f6c: 0xe0000429, 0x0f6d: 0xe00004fe, 0x0f6e: 0xe00005c8, 0x0f6f: 0xe0000693, - 0x0f70: 0xe000073b, 0x0f71: 0xe00007e7, 0x0f72: 0xe000088c, 0x0f73: 0xe00001a3, - 0x0f74: 0x40077820, 0x0f75: 0xadc00000, 0x0f76: 0x40077a20, 0x0f77: 0xadc00000, - 0x0f78: 0x40077c20, 0x0f79: 0xad810e02, 0x0f7a: 0x40040020, 0x0f7b: 0x40040220, - 0x0f7c: 0x40040420, 0x0f7d: 0x40040620, 0x0f7e: 0xa0000000, 0x0f7f: 0xa0000000, - // Block 0x3e, offset 0xf80 - 0x0f80: 0x404a7620, 0x0f81: 0x404a7c20, 0x0f82: 0x404a8020, 0x0f83: 0xe0001fe4, - 0x0f84: 0x404a8420, 0x0f85: 0x404a8820, 0x0f86: 0x404a8c20, 0x0f87: 0x404a9020, - 0x0f89: 0x404a9420, 0x0f8a: 0x404a9820, 0x0f8b: 0x404a9c20, - 0x0f8c: 0x404aa020, 0x0f8d: 0xe0001fea, 0x0f8e: 0x404aa420, 0x0f8f: 0x404aa820, - 0x0f90: 0x404aac20, 0x0f91: 0x404ab020, 0x0f92: 0xe0001ff0, 0x0f93: 0x404ab420, - 0x0f94: 0x404ab820, 0x0f95: 0x404abc20, 0x0f96: 0x404ac020, 0x0f97: 0xe0001ff6, - 0x0f98: 0x404ac420, 0x0f99: 0x404ac820, 0x0f9a: 0x404acc20, 0x0f9b: 0x404ad020, - 0x0f9c: 0xe0001ffc, 0x0f9d: 0x404ad420, 0x0f9e: 0x404ad820, 0x0f9f: 0x404adc20, - 0x0fa0: 0x404ae020, 0x0fa1: 0x404ae420, 0x0fa2: 0x404ae820, 0x0fa3: 0x404aee20, - 0x0fa4: 0x404af220, 0x0fa5: 0x404af620, 0x0fa6: 0x404afa20, 0x0fa7: 0x404afe20, - 0x0fa8: 0x404b0220, 0x0fa9: 0xe0001fde, 0x0faa: 0xe0002008, 0x0fab: 0x404a7a20, - 0x0fac: 0x404aec20, - 0x0fb1: 0xc30f0751, 0x0fb2: 0x8282258c, 0x0fb3: 0x8281258d, - 0x0fb4: 0x82842590, 0x0fb5: 0x82812591, 0x0fb6: 0x404b2420, 0x0fb7: 0x404b2620, - 0x0fb8: 0x404b2820, 0x0fb9: 0x404b2a20, 0x0fba: 0x82822596, 0x0fbb: 0x82822597, - 0x0fbc: 0x82822598, 0x0fbd: 0x82822599, 0x0fbe: 0xa000f302, 0x0fbf: 0xa000f402, - // Block 0x3f, offset 0xfc0 - 0x0fc0: 0x8282258e, 0x0fc1: 0x8281258f, 0x0fc2: 0xae600000, 0x0fc3: 0xae600000, - 0x0fc4: 0x8209259a, 0x0fc5: 0x4005a220, 0x0fc6: 0xae600000, 0x0fc7: 0xae600000, - 0x0fc8: 0x404b0620, 0x0fc9: 0x404b0a20, 0x0fca: 0x404b1220, 0x0fcb: 0x404b1420, - 0x0fcc: 0x404b0e20, 0x0fcd: 0x404b0820, 0x0fce: 0x404b0c20, 0x0fcf: 0x404b1020, - 0x0fd0: 0x404a7820, 0x0fd1: 0x404a7e20, 0x0fd2: 0x404a8220, 0x0fd3: 0xe0001fe7, - 0x0fd4: 0x404a8620, 0x0fd5: 0x404a8a20, 0x0fd6: 0x404a8e20, 0x0fd7: 0x404a9220, - 0x0fd9: 0x404a9620, 0x0fda: 0x404a9a20, 0x0fdb: 0x404a9e20, - 0x0fdc: 0x404aa220, 0x0fdd: 0xe0001fed, 0x0fde: 0x404aa620, 0x0fdf: 0x404aaa20, - 0x0fe0: 0x404aae20, 0x0fe1: 0x404ab220, 0x0fe2: 0xe0001ff3, 0x0fe3: 0x404ab620, - 0x0fe4: 0x404aba20, 0x0fe5: 0x404abe20, 0x0fe6: 0x404ac220, 0x0fe7: 0xe0001ff9, - 0x0fe8: 0x404ac620, 0x0fe9: 0x404aca20, 0x0fea: 0x404ace20, 0x0feb: 0x404ad220, - 0x0fec: 0xe0001fff, 0x0fed: 0x404ad620, 0x0fee: 0x404ada20, 0x0fef: 0x404ade20, - 0x0ff0: 0x404ae220, 0x0ff1: 0x404ae620, 0x0ff2: 0xc30306a1, 0x0ff3: 0xc30906a1, - 0x0ff4: 0x404af420, 0x0ff5: 0x404af820, 0x0ff6: 0x404afc20, 0x0ff7: 0x404b0020, - 0x0ff8: 0x404b0420, 0x0ff9: 0xe0001fe1, 0x0ffa: 0xe0002002, 0x0ffb: 0xe0002005, - 0x0ffc: 0xe000200b, 0x0ffe: 0x40077e20, 0x0fff: 0x40078020, - // Block 0x40, offset 0x1000 - 0x1000: 0x40078220, 0x1001: 0x40078420, 0x1002: 0x40078620, 0x1003: 0x40078820, - 0x1004: 0x40078a20, 0x1005: 0x40078c20, 0x1006: 0xadc00000, 0x1007: 0x40078e20, - 0x1008: 0x40079020, 0x1009: 0x40079220, 0x100a: 0x40079420, 0x100b: 0x40079620, - 0x100c: 0x40079820, 0x100e: 0x40079a20, 0x100f: 0x40079c20, - 0x1010: 0x40059020, 0x1011: 0x40059220, 0x1012: 0x4005a420, 0x1013: 0x4005a620, - 0x1014: 0x4005a820, 0x1015: 0x40079e20, 0x1016: 0x4007a020, 0x1017: 0x4007a220, - 0x1018: 0x4007a420, 0x1019: 0x4005aa20, 0x101a: 0x4005ac20, - // Block 0x41, offset 0x1040 - 0x1040: 0x404e1420, 0x1041: 0x404e1820, 0x1042: 0x404e1c20, 0x1043: 0x404e2220, - 0x1044: 0x404e2420, 0x1045: 0x404e2820, 0x1046: 0x404e2e20, 0x1047: 0x404e3220, - 0x1048: 0x404e3a20, 0x1049: 0x404e4220, 0x104a: 0x404e4820, 0x104b: 0x404e4a20, - 0x104c: 0x404e4e20, 0x104d: 0x404e5220, 0x104e: 0x404e5620, 0x104f: 0x404e5a20, - 0x1050: 0x404e5e20, 0x1051: 0x404e6020, 0x1052: 0x404e6220, 0x1053: 0x404e6620, - 0x1054: 0x404e6a20, 0x1055: 0x404e7220, 0x1056: 0x404e7420, 0x1057: 0x404e7e20, - 0x1058: 0x404e8220, 0x1059: 0x404e8420, 0x105a: 0x404e8820, 0x105b: 0x404e8c20, - 0x105c: 0x404e9420, 0x105d: 0x404e9820, 0x105e: 0x404ea620, 0x105f: 0x404eaa20, - 0x1060: 0x404eb620, 0x1061: 0x404ec220, 0x1062: 0x404ec420, 0x1063: 0x404ec620, - 0x1064: 0x404ec820, 0x1065: 0xc31307b1, 0x1066: 0x404ecc20, 0x1067: 0x404ed620, - 0x1068: 0x404ed820, 0x1069: 0x404eda20, 0x106a: 0x404edc20, 0x106b: 0x004ede84, - 0x106c: 0x404ede20, 0x106d: 0x404ee620, 0x106e: 0x404eea20, 0x106f: 0x404eee20, - 0x1070: 0x404ef420, 0x1071: 0x404efe20, 0x1072: 0x404f0620, 0x1073: 0x404eec20, - 0x1074: 0x404f0a20, 0x1075: 0x404f0220, 0x1076: 0xa000f302, 0x1077: 0xa0711202, - 0x1078: 0xa000f402, 0x1079: 0x8209278a, 0x107a: 0x8209278b, 0x107b: 0x404e8a20, - 0x107c: 0x404e9220, 0x107d: 0x404e9a20, 0x107e: 0x404eb020, 0x107f: 0xe000201e, - // Block 0x42, offset 0x1080 - 0x1080: 0xe00001ac, 0x1081: 0xe0000240, 0x1082: 0xe0000358, 0x1083: 0xe0000432, - 0x1084: 0xe0000507, 0x1085: 0xe00005d1, 0x1086: 0xe000069c, 0x1087: 0xe0000744, - 0x1088: 0xe00007f0, 0x1089: 0xe0000895, 0x108a: 0x40032220, 0x108b: 0x40032420, - 0x108c: 0x4005b420, 0x108d: 0x4005b620, 0x108e: 0x4005b820, 0x108f: 0x4005ba20, - 0x1090: 0x404ea020, 0x1091: 0x404ea220, 0x1092: 0x404ece20, 0x1093: 0x404ed020, - 0x1094: 0x404ed220, 0x1095: 0x404ed420, 0x1096: 0x404ef620, 0x1097: 0x404ef820, - 0x1098: 0x404efa20, 0x1099: 0x404efc20, 0x109a: 0x404e2620, 0x109b: 0x404e3c20, - 0x109c: 0x404eb820, 0x109d: 0x404eba20, 0x109e: 0x404e7020, 0x109f: 0x404e8620, - 0x10a0: 0x404e9620, 0x10a1: 0x404e4020, 0x10a2: 0x404f0c20, 0x10a3: 0x404f1820, - 0x10a4: 0x404f1a20, 0x10a5: 0x404ea420, 0x10a6: 0x404ec020, 0x10a7: 0x404f0e20, - 0x10a8: 0x404f1020, 0x10a9: 0x404f1c20, 0x10aa: 0x404f1e20, 0x10ab: 0x404f2020, - 0x10ac: 0x404f2220, 0x10ad: 0x404f2420, 0x10ae: 0x404e5c20, 0x10af: 0x404ebc20, - 0x10b0: 0x404ebe20, 0x10b1: 0x404ee820, 0x10b2: 0x404ee220, 0x10b3: 0x404ef020, - 0x10b4: 0x404ef220, 0x10b5: 0x404e1620, 0x10b6: 0x404e1a20, 0x10b7: 0x404e1e20, - 0x10b8: 0x404e2a20, 0x10b9: 0x404e3620, 0x10ba: 0x404e4420, 0x10bb: 0x404e6420, - 0x10bc: 0x404e6c20, 0x10bd: 0x404e7620, 0x10be: 0x404e7820, 0x10bf: 0x404e8020, - // Block 0x43, offset 0x10c0 - 0x10c0: 0x404e9e20, 0x10c1: 0x404eac20, 0x10c2: 0x404e9c20, 0x10c3: 0x404ee020, - 0x10c4: 0x404f0020, 0x10c5: 0x404f0420, 0x10c6: 0x404f1220, 0x10c7: 0x404f2620, - 0x10c8: 0x404f2a20, 0x10c9: 0x404f2e20, 0x10ca: 0x404f3020, 0x10cb: 0x404f2820, - 0x10cc: 0x404f2c20, 0x10cd: 0xadc11302, 0x10ce: 0x404e7c20, 0x10cf: 0x404f3220, - 0x10d0: 0xe00001af, 0x10d1: 0xe0000243, 0x10d2: 0xe000035b, 0x10d3: 0xe0000435, - 0x10d4: 0xe000050a, 0x10d5: 0xe00005d4, 0x10d6: 0xe000069f, 0x10d7: 0xe0000747, - 0x10d8: 0xe00007f3, 0x10d9: 0xe0000898, 0x10da: 0x404f3420, 0x10db: 0x404f3620, - 0x10dc: 0x404ee420, 0x10dd: 0x404f0820, 0x10de: 0x4007a820, 0x10df: 0x4007aa20, - 0x10e0: 0x00379888, 0x10e1: 0x00379c88, 0x10e2: 0x0037a088, 0x10e3: 0x0037a488, - 0x10e4: 0x0037a888, 0x10e5: 0x0037ac88, 0x10e6: 0x0037b088, 0x10e7: 0x0037b888, - 0x10e8: 0x0037bc88, 0x10e9: 0x0037c088, 0x10ea: 0x0037c488, 0x10eb: 0x0037c888, - 0x10ec: 0x0037cc88, 0x10ed: 0x0037d488, 0x10ee: 0x0037d888, 0x10ef: 0x0037dc88, - 0x10f0: 0x0037e088, 0x10f1: 0x0037e488, 0x10f2: 0x0037e888, 0x10f3: 0x0037f088, - 0x10f4: 0x0037f488, 0x10f5: 0x0037f888, 0x10f6: 0x0037fc88, 0x10f7: 0x00380088, - 0x10f8: 0x00380488, 0x10f9: 0x00380888, 0x10fa: 0x00380c88, 0x10fb: 0x00381088, - 0x10fc: 0x00381488, 0x10fd: 0x00381888, 0x10fe: 0x00381c88, 0x10ff: 0x00382488, - // Block 0x44, offset 0x1100 - 0x1100: 0x00382888, 0x1101: 0x0037b488, 0x1102: 0x0037d088, 0x1103: 0x0037ec88, - 0x1104: 0x00382088, 0x1105: 0x00382c88, 0x1107: 0x00383288, - 0x110d: 0x00383c88, - 0x1110: 0x40379620, 0x1111: 0x40379a20, 0x1112: 0x40379e20, 0x1113: 0x4037a220, - 0x1114: 0x4037a620, 0x1115: 0x4037aa20, 0x1116: 0x4037ae20, 0x1117: 0x4037b620, - 0x1118: 0x4037ba20, 0x1119: 0x4037be20, 0x111a: 0x4037c220, 0x111b: 0x4037c620, - 0x111c: 0x4037ca20, 0x111d: 0x4037d220, 0x111e: 0x4037d620, 0x111f: 0x4037da20, - 0x1120: 0x4037de20, 0x1121: 0x4037e220, 0x1122: 0x4037e620, 0x1123: 0x4037ee20, - 0x1124: 0x4037f220, 0x1125: 0x4037f620, 0x1126: 0x4037fa20, 0x1127: 0x4037fe20, - 0x1128: 0x40380220, 0x1129: 0x40380620, 0x112a: 0x40380a20, 0x112b: 0x40380e20, - 0x112c: 0x40381220, 0x112d: 0x40381620, 0x112e: 0x40381a20, 0x112f: 0x40382220, - 0x1130: 0x40382620, 0x1131: 0x4037b220, 0x1132: 0x4037ce20, 0x1133: 0x4037ea20, - 0x1134: 0x40381e20, 0x1135: 0x40382a20, 0x1136: 0x40382e20, 0x1137: 0x40383020, - 0x1138: 0x40383420, 0x1139: 0x40383620, 0x113a: 0x40383820, 0x113b: 0x40036020, - 0x113c: 0x0037ca94, 0x113d: 0x40383a20, 0x113e: 0x40383e20, 0x113f: 0x40384020, - // Block 0x45, offset 0x1140 - 0x1140: 0x4062ac20, 0x1141: 0x4062ae20, 0x1142: 0x4062b020, 0x1143: 0x4062b220, - 0x1144: 0x4062b420, 0x1145: 0x4062b620, 0x1146: 0x4062b820, 0x1147: 0x4062ba20, - 0x1148: 0x4062bc20, 0x1149: 0x4062be20, 0x114a: 0x4062c020, 0x114b: 0x4062c220, - 0x114c: 0x4062c420, 0x114d: 0x4062c620, 0x114e: 0x4062c820, 0x114f: 0x4062ca20, - 0x1150: 0x4062cc20, 0x1151: 0x4062ce20, 0x1152: 0x4062d020, 0x1153: 0x4062d220, - 0x1154: 0x4062d420, 0x1155: 0x4062d620, 0x1156: 0x4062d820, 0x1157: 0x4062da20, - 0x1158: 0x4062dc20, 0x1159: 0x4062de20, 0x115a: 0x4062e020, 0x115b: 0x4062e220, - 0x115c: 0x4062e420, 0x115d: 0x4062e620, 0x115e: 0x4062e820, 0x115f: 0x4062ea20, - 0x1160: 0x4062ec20, 0x1161: 0x4062ee20, 0x1162: 0x4062f020, 0x1163: 0x4062f220, - 0x1164: 0x4062f420, 0x1165: 0x4062f620, 0x1166: 0x4062f820, 0x1167: 0x4062fa20, - 0x1168: 0x4062fc20, 0x1169: 0x4062fe20, 0x116a: 0x40630020, 0x116b: 0x40630220, - 0x116c: 0x40630420, 0x116d: 0x40630620, 0x116e: 0x40630820, 0x116f: 0x40630a20, - 0x1170: 0x40630c20, 0x1171: 0x40630e20, 0x1172: 0x40631020, 0x1173: 0x40631220, - 0x1174: 0x40631420, 0x1175: 0x40631620, 0x1176: 0x40631820, 0x1177: 0x40631a20, - 0x1178: 0x40631c20, 0x1179: 0x40631e20, 0x117a: 0x40632020, 0x117b: 0x40632220, - 0x117c: 0x40632420, 0x117d: 0x40632620, 0x117e: 0x40632820, 0x117f: 0x40632a20, - // Block 0x46, offset 0x1180 - 0x1180: 0x40632c20, 0x1181: 0x40632e20, 0x1182: 0x40633020, 0x1183: 0x40633220, - 0x1184: 0x40633420, 0x1185: 0x40633620, 0x1186: 0x40633820, 0x1187: 0x40633a20, - 0x1188: 0x40633c20, 0x1189: 0x40633e20, 0x118a: 0x40634020, 0x118b: 0x40634220, - 0x118c: 0x40634420, 0x118d: 0x40634620, 0x118e: 0x40634820, 0x118f: 0x40634a20, - 0x1190: 0x40634c20, 0x1191: 0x40634e20, 0x1192: 0x40635020, 0x1193: 0x40635220, - 0x1194: 0x40635420, 0x1195: 0x40635620, 0x1196: 0x40635820, 0x1197: 0x40635a20, - 0x1198: 0x40635c20, 0x1199: 0x40635e20, 0x119a: 0x40636020, 0x119b: 0x40636220, - 0x119c: 0x40636420, 0x119d: 0x40636620, 0x119e: 0x40636820, 0x119f: 0x4063a420, - 0x11a0: 0x4063a620, 0x11a1: 0x4063a820, 0x11a2: 0x4063aa20, 0x11a3: 0x4063ac20, - 0x11a4: 0x4063ae20, 0x11a5: 0x4063b020, 0x11a6: 0x4063b220, 0x11a7: 0x4063b420, - 0x11a8: 0x4063b620, 0x11a9: 0x4063b820, 0x11aa: 0x4063ba20, 0x11ab: 0x4063bc20, - 0x11ac: 0x4063be20, 0x11ad: 0x4063c020, 0x11ae: 0x4063c220, 0x11af: 0x4063c420, - 0x11b0: 0x4063c620, 0x11b1: 0x4063c820, 0x11b2: 0x4063ca20, 0x11b3: 0x4063cc20, - 0x11b4: 0x4063ce20, 0x11b5: 0x4063d020, 0x11b6: 0x4063d220, 0x11b7: 0x4063d420, - 0x11b8: 0x4063d620, 0x11b9: 0x4063d820, 0x11ba: 0x4063da20, 0x11bb: 0x4063dc20, - 0x11bc: 0x4063de20, 0x11bd: 0x4063e020, 0x11be: 0x4063e220, 0x11bf: 0x4063e420, - // Block 0x47, offset 0x11c0 - 0x11c0: 0x4063e620, 0x11c1: 0x4063e820, 0x11c2: 0x4063ea20, 0x11c3: 0x4063ec20, - 0x11c4: 0x4063ee20, 0x11c5: 0x4063f020, 0x11c6: 0x4063f220, 0x11c7: 0x4063f420, - 0x11c8: 0x4063f620, 0x11c9: 0x4063f820, 0x11ca: 0x4063fa20, 0x11cb: 0x4063fc20, - 0x11cc: 0x4063fe20, 0x11cd: 0x40640020, 0x11ce: 0x40640220, 0x11cf: 0x40640420, - 0x11d0: 0x40640620, 0x11d1: 0x40640820, 0x11d2: 0x40640a20, 0x11d3: 0x40640c20, - 0x11d4: 0x40640e20, 0x11d5: 0x40641020, 0x11d6: 0x40641220, 0x11d7: 0x40641420, - 0x11d8: 0x40641620, 0x11d9: 0x40641820, 0x11da: 0x40641a20, 0x11db: 0x40641c20, - 0x11dc: 0x40641e20, 0x11dd: 0x40642020, 0x11de: 0x40642220, 0x11df: 0x40642420, - 0x11e0: 0x40642620, 0x11e1: 0x40642820, 0x11e2: 0x40642a20, 0x11e3: 0x40642c20, - 0x11e4: 0x40642e20, 0x11e5: 0x40643020, 0x11e6: 0x40643220, 0x11e7: 0x40643420, - 0x11e8: 0x40646420, 0x11e9: 0x40646620, 0x11ea: 0x40646820, 0x11eb: 0x40646a20, - 0x11ec: 0x40646c20, 0x11ed: 0x40646e20, 0x11ee: 0x40647020, 0x11ef: 0x40647220, - 0x11f0: 0x40647420, 0x11f1: 0x40647620, 0x11f2: 0x40647820, 0x11f3: 0x40647a20, - 0x11f4: 0x40647c20, 0x11f5: 0x40647e20, 0x11f6: 0x40648020, 0x11f7: 0x40648220, - 0x11f8: 0x40648420, 0x11f9: 0x40648620, 0x11fa: 0x40648820, 0x11fb: 0x40648a20, - 0x11fc: 0x40648c20, 0x11fd: 0x40648e20, 0x11fe: 0x40649020, 0x11ff: 0x40649220, - // Block 0x48, offset 0x1200 - 0x1200: 0x40649420, 0x1201: 0x40649620, 0x1202: 0x40649820, 0x1203: 0x40649a20, - 0x1204: 0x40649c20, 0x1205: 0x40649e20, 0x1206: 0x4064a020, 0x1207: 0x4064a220, - 0x1208: 0x4064a420, 0x1209: 0x4064a620, 0x120a: 0x4064a820, 0x120b: 0x4064aa20, - 0x120c: 0x4064ac20, 0x120d: 0x4064ae20, 0x120e: 0x4064b020, 0x120f: 0x4064b220, - 0x1210: 0x4064b420, 0x1211: 0x4064b620, 0x1212: 0x4064b820, 0x1213: 0x4064ba20, - 0x1214: 0x4064bc20, 0x1215: 0x4064be20, 0x1216: 0x4064c020, 0x1217: 0x4064c220, - 0x1218: 0x4064c420, 0x1219: 0x4064c620, 0x121a: 0x4064c820, 0x121b: 0x4064ca20, - 0x121c: 0x4064cc20, 0x121d: 0x4064ce20, 0x121e: 0x4064d020, 0x121f: 0x4064d220, - 0x1220: 0x4064d420, 0x1221: 0x4064d620, 0x1222: 0x4064d820, 0x1223: 0x4064da20, - 0x1224: 0x4064dc20, 0x1225: 0x4064de20, 0x1226: 0x4064e020, 0x1227: 0x4064e220, - 0x1228: 0x4064e420, 0x1229: 0x4064e620, 0x122a: 0x4064e820, 0x122b: 0x4064ea20, - 0x122c: 0x4064ec20, 0x122d: 0x4064ee20, 0x122e: 0x4064f020, 0x122f: 0x4064f220, - 0x1230: 0x4064f420, 0x1231: 0x4064f620, 0x1232: 0x4064f820, 0x1233: 0x4064fa20, - 0x1234: 0x4064fc20, 0x1235: 0x4064fe20, 0x1236: 0x40650020, 0x1237: 0x40650220, - 0x1238: 0x40650420, 0x1239: 0x40650620, 0x123a: 0x40650820, 0x123b: 0x40650a20, - 0x123c: 0x40650c20, 0x123d: 0x40650e20, 0x123e: 0x40651020, 0x123f: 0x40651220, - // Block 0x49, offset 0x1240 - 0x1240: 0x403c2e20, 0x1241: 0x403c3020, 0x1242: 0x403c3220, 0x1243: 0x403c3420, - 0x1244: 0x403c3620, 0x1245: 0x403c3820, 0x1246: 0x403c3a20, 0x1247: 0x403c3c20, - 0x1248: 0x403c3e20, 0x1249: 0x403c4020, 0x124a: 0x403c4220, 0x124b: 0x403c4420, - 0x124c: 0x403c4620, 0x124d: 0x403c4820, 0x124e: 0x403c4a20, 0x124f: 0x403c4c20, - 0x1250: 0x403c5020, 0x1251: 0x403c5220, 0x1252: 0x403c5420, 0x1253: 0x403c5620, - 0x1254: 0x403c5820, 0x1255: 0x403c5a20, 0x1256: 0x403c5c20, 0x1257: 0x403c5e20, - 0x1258: 0x403c6020, 0x1259: 0x403c6220, 0x125a: 0x403c6420, 0x125b: 0x403c6620, - 0x125c: 0x403c6820, 0x125d: 0x403c6a20, 0x125e: 0x403c6c20, 0x125f: 0x403c6e20, - 0x1260: 0x403c7a20, 0x1261: 0x403c7c20, 0x1262: 0x403c7e20, 0x1263: 0x403c8020, - 0x1264: 0x403c8220, 0x1265: 0x403c8420, 0x1266: 0x403c8620, 0x1267: 0x403c8820, - 0x1268: 0x403c8a20, 0x1269: 0x403c8c20, 0x126a: 0x403c8e20, 0x126b: 0x403c9020, - 0x126c: 0x403c9220, 0x126d: 0x403c9420, 0x126e: 0x403c9620, 0x126f: 0x403c9820, - 0x1270: 0x403c9c20, 0x1271: 0x403c9e20, 0x1272: 0x403ca020, 0x1273: 0x403ca220, - 0x1274: 0x403ca420, 0x1275: 0x403ca620, 0x1276: 0x403ca820, 0x1277: 0x403caa20, - 0x1278: 0x403cba20, 0x1279: 0x403cbc20, 0x127a: 0x403cbe20, 0x127b: 0x403cc020, - 0x127c: 0x403cc220, 0x127d: 0x403cc420, 0x127e: 0x403cc620, 0x127f: 0x403cc820, - // Block 0x4a, offset 0x1280 - 0x1280: 0x403ccc20, 0x1281: 0x403cce20, 0x1282: 0x403cd020, 0x1283: 0x403cd220, - 0x1284: 0x403cd420, 0x1285: 0x403cd620, 0x1286: 0x403cd820, 0x1287: 0x403cda20, - 0x1288: 0x403cdc20, 0x128a: 0x403cde20, 0x128b: 0x403ce020, - 0x128c: 0x403ce220, 0x128d: 0x403ce420, - 0x1290: 0x403ce620, 0x1291: 0x403ce820, 0x1292: 0x403cea20, 0x1293: 0x403cec20, - 0x1294: 0x403cee20, 0x1295: 0x403cf020, 0x1296: 0x403cf220, - 0x1298: 0x403cf420, 0x129a: 0x403cf620, 0x129b: 0x403cf820, - 0x129c: 0x403cfa20, 0x129d: 0x403cfc20, - 0x12a0: 0x403cfe20, 0x12a1: 0x403d0020, 0x12a2: 0x403d0220, 0x12a3: 0x403d0420, - 0x12a4: 0x403d0620, 0x12a5: 0x403d0820, 0x12a6: 0x403d0a20, 0x12a7: 0x403d0c20, - 0x12a8: 0x403d1820, 0x12a9: 0x403d1a20, 0x12aa: 0x403d1c20, 0x12ab: 0x403d1e20, - 0x12ac: 0x403d2020, 0x12ad: 0x403d2220, 0x12ae: 0x403d2420, 0x12af: 0x403d2620, - 0x12b0: 0x403d2820, 0x12b1: 0x403d2a20, 0x12b2: 0x403d2c20, 0x12b3: 0x403d2e20, - 0x12b4: 0x403d3020, 0x12b5: 0x403d3220, 0x12b6: 0x403d3420, 0x12b7: 0x403d3620, - 0x12b8: 0x403d3a20, 0x12b9: 0x403d3c20, 0x12ba: 0x403d3e20, 0x12bb: 0x403d4020, - 0x12bc: 0x403d4220, 0x12bd: 0x403d4420, 0x12be: 0x403d4620, 0x12bf: 0x403d4820, - // Block 0x4b, offset 0x12c0 - 0x12c0: 0x403d4c20, 0x12c1: 0x403d4e20, 0x12c2: 0x403d5020, 0x12c3: 0x403d5220, - 0x12c4: 0x403d5420, 0x12c5: 0x403d5620, 0x12c6: 0x403d5820, 0x12c7: 0x403d5a20, - 0x12c8: 0x403d5c20, 0x12ca: 0x403d5e20, 0x12cb: 0x403d6020, - 0x12cc: 0x403d6220, 0x12cd: 0x403d6420, - 0x12d0: 0x403d6620, 0x12d1: 0x403d6820, 0x12d2: 0x403d6a20, 0x12d3: 0x403d6c20, - 0x12d4: 0x403d6e20, 0x12d5: 0x403d7020, 0x12d6: 0x403d7220, 0x12d7: 0x403d7420, - 0x12d8: 0x403d7820, 0x12d9: 0x403d7a20, 0x12da: 0x403d7c20, 0x12db: 0x403d7e20, - 0x12dc: 0x403d8020, 0x12dd: 0x403d8220, 0x12de: 0x403d8420, 0x12df: 0x403d8620, - 0x12e0: 0x403d8a20, 0x12e1: 0x403d8c20, 0x12e2: 0x403d8e20, 0x12e3: 0x403d9020, - 0x12e4: 0x403d9220, 0x12e5: 0x403d9420, 0x12e6: 0x403d9620, 0x12e7: 0x403d9820, - 0x12e8: 0x403d9c20, 0x12e9: 0x403d9e20, 0x12ea: 0x403da020, 0x12eb: 0x403da220, - 0x12ec: 0x403da420, 0x12ed: 0x403da620, 0x12ee: 0x403da820, 0x12ef: 0x403daa20, - 0x12f0: 0x403dac20, 0x12f2: 0x403dae20, 0x12f3: 0x403db020, - 0x12f4: 0x403db220, 0x12f5: 0x403db420, - 0x12f8: 0x403db620, 0x12f9: 0x403db820, 0x12fa: 0x403dba20, 0x12fb: 0x403dbc20, - 0x12fc: 0x403dbe20, 0x12fd: 0x403dc020, 0x12fe: 0x403dc220, - // Block 0x4c, offset 0x1300 - 0x1300: 0x403dc420, 0x1302: 0x403dc620, 0x1303: 0x403dc820, - 0x1304: 0x403dca20, 0x1305: 0x403dcc20, - 0x1308: 0x403dce20, 0x1309: 0x403dd020, 0x130a: 0x403dd220, 0x130b: 0x403dd420, - 0x130c: 0x403dd620, 0x130d: 0x403dd820, 0x130e: 0x403dda20, 0x130f: 0x403ddc20, - 0x1310: 0x403dde20, 0x1311: 0x403de020, 0x1312: 0x403de220, 0x1313: 0x403de420, - 0x1314: 0x403de620, 0x1315: 0x403de820, 0x1316: 0x403dea20, - 0x1318: 0x403dec20, 0x1319: 0x403dee20, 0x131a: 0x403df020, 0x131b: 0x403df220, - 0x131c: 0x403df420, 0x131d: 0x403df620, 0x131e: 0x403df820, 0x131f: 0x403dfa20, - 0x1320: 0x403e0a20, 0x1321: 0x403e0c20, 0x1322: 0x403e0e20, 0x1323: 0x403e1020, - 0x1324: 0x403e1220, 0x1325: 0x403e1420, 0x1326: 0x403e1620, 0x1327: 0x403e1820, - 0x1328: 0x403e1a20, 0x1329: 0x403e1c20, 0x132a: 0x403e1e20, 0x132b: 0x403e2020, - 0x132c: 0x403e2220, 0x132d: 0x403e2420, 0x132e: 0x403e2620, 0x132f: 0x403e2820, - 0x1330: 0x403e2a20, 0x1331: 0x403e2c20, 0x1332: 0x403e2e20, 0x1333: 0x403e3020, - 0x1334: 0x403e3220, 0x1335: 0x403e3420, 0x1336: 0x403e3620, 0x1337: 0x403e3820, - 0x1338: 0x403e4820, 0x1339: 0x403e4a20, 0x133a: 0x403e4c20, 0x133b: 0x403e4e20, - 0x133c: 0x403e5020, 0x133d: 0x403e5220, 0x133e: 0x403e5420, 0x133f: 0x403e5620, - // Block 0x4d, offset 0x1340 - 0x1340: 0x403e5a20, 0x1341: 0x403e5c20, 0x1342: 0x403e5e20, 0x1343: 0x403e6020, - 0x1344: 0x403e6220, 0x1345: 0x403e6420, 0x1346: 0x403e6620, 0x1347: 0x403e6820, - 0x1348: 0x403e6c20, 0x1349: 0x403e6e20, 0x134a: 0x403e7020, 0x134b: 0x403e7220, - 0x134c: 0x403e7420, 0x134d: 0x403e7620, 0x134e: 0x403e7820, 0x134f: 0x403e7a20, - 0x1350: 0x403e7c20, 0x1352: 0x403e7e20, 0x1353: 0x403e8020, - 0x1354: 0x403e8220, 0x1355: 0x403e8420, - 0x1358: 0x403e8620, 0x1359: 0x403e8820, 0x135a: 0x403e8a20, 0x135b: 0x403e8c20, - 0x135c: 0x403e8e20, 0x135d: 0x403e9020, 0x135e: 0x403e9220, 0x135f: 0x403e9420, - 0x1360: 0x403e9e20, 0x1361: 0x403ea020, 0x1362: 0x403ea220, 0x1363: 0x403ea420, - 0x1364: 0x403ea620, 0x1365: 0x403ea820, 0x1366: 0x403eaa20, 0x1367: 0x403eac20, - 0x1368: 0x403eb020, 0x1369: 0x403eb220, 0x136a: 0x403eb420, 0x136b: 0x403eb620, - 0x136c: 0x403eb820, 0x136d: 0x403eba20, 0x136e: 0x403ebc20, 0x136f: 0x403ebe20, - 0x1370: 0x403ed020, 0x1371: 0x403ed220, 0x1372: 0x403ed420, 0x1373: 0x403ed620, - 0x1374: 0x403ed820, 0x1375: 0x403eda20, 0x1376: 0x403edc20, 0x1377: 0x403ede20, - 0x1378: 0x403ee220, 0x1379: 0x403ee420, 0x137a: 0x403ee620, 0x137b: 0x403ee820, - 0x137c: 0x403eea20, 0x137d: 0x403eec20, 0x137e: 0x403eee20, 0x137f: 0x403ef020, - // Block 0x4e, offset 0x1380 - 0x1380: 0x403f0020, 0x1381: 0x403f0220, 0x1382: 0x403f0420, 0x1383: 0x403f0620, - 0x1384: 0x403f0820, 0x1385: 0x403f0a20, 0x1386: 0x403f0c20, 0x1387: 0x403f0e20, - 0x1388: 0x403f1020, 0x1389: 0x403f1220, 0x138a: 0x403f1420, 0x138b: 0x403f1620, - 0x138c: 0x403f1820, 0x138d: 0x403f1a20, 0x138e: 0x403f1c20, 0x138f: 0x403f1e20, - 0x1390: 0x403f2820, 0x1391: 0x403f2a20, 0x1392: 0x403f2c20, 0x1393: 0x403f2e20, - 0x1394: 0x403f3020, 0x1395: 0x403f3220, 0x1396: 0x403f3420, 0x1397: 0x403f3620, - 0x1398: 0x403f4220, 0x1399: 0x403f4420, 0x139a: 0x403f4620, - 0x139d: 0xae60ee02, 0x139e: 0xae60ed02, 0x139f: 0xae60ec02, - 0x13a0: 0x40036220, 0x13a1: 0x40029c20, 0x13a2: 0x4002ee20, 0x13a3: 0x40029e20, - 0x13a4: 0x4002a020, 0x13a5: 0x4002a220, 0x13a6: 0x4002a420, 0x13a7: 0x4002d020, - 0x13a8: 0x40036420, 0x13a9: 0xe00001f2, 0x13aa: 0xe000030d, 0x13ab: 0xe00003e7, - 0x13ac: 0xe00004c2, 0x13ad: 0xe000058c, 0x13ae: 0xe0000657, 0x13af: 0xe00006ff, - 0x13b0: 0xe00007ab, 0x13b1: 0xe0000850, 0x13b2: 0x40286620, 0x13b3: 0x40286820, - 0x13b4: 0x40286a20, 0x13b5: 0x40286c20, 0x13b6: 0x40286e20, 0x13b7: 0x40287020, - 0x13b8: 0x40287220, 0x13b9: 0x40287420, 0x13ba: 0x40287620, 0x13bb: 0x40287820, - 0x13bc: 0x40287a20, - // Block 0x4f, offset 0x13c0 - 0x13c0: 0x403c7020, 0x13c1: 0x403c7220, 0x13c2: 0x403c7420, 0x13c3: 0x403c7620, - 0x13c4: 0x403d0e20, 0x13c5: 0x403d1020, 0x13c6: 0x403d1220, 0x13c7: 0x403d1420, - 0x13c8: 0x403f2020, 0x13c9: 0x403f2220, 0x13ca: 0x403f2420, 0x13cb: 0x403f2620, - 0x13cc: 0x403f3820, 0x13cd: 0x403f3a20, 0x13ce: 0x403f3c20, 0x13cf: 0x403f3e20, - 0x13d0: 0x4006a620, 0x13d1: 0x4006a820, 0x13d2: 0x4006aa20, 0x13d3: 0x4006ac20, - 0x13d4: 0x4006ae20, 0x13d5: 0x4006b020, 0x13d6: 0x4006b220, 0x13d7: 0x4006b420, - 0x13d8: 0x4006b620, 0x13d9: 0x4006b820, - 0x13e0: 0x40547620, 0x13e1: 0x40547820, 0x13e2: 0x40547a20, 0x13e3: 0x40547c20, - 0x13e4: 0x40547e20, 0x13e5: 0x40548020, 0x13e6: 0x40548220, 0x13e7: 0x40548420, - 0x13e8: 0x40548620, 0x13e9: 0x40548820, 0x13ea: 0x40548a20, 0x13eb: 0x40548c20, - 0x13ec: 0x40548e20, 0x13ed: 0x40549020, 0x13ee: 0x40549220, 0x13ef: 0x40549420, - 0x13f0: 0x40549620, 0x13f1: 0x40549820, 0x13f2: 0x40549a20, 0x13f3: 0x40549c20, - 0x13f4: 0x40549e20, 0x13f5: 0x4054a020, 0x13f6: 0x4054a220, 0x13f7: 0x4054a420, - 0x13f8: 0x4054a620, 0x13f9: 0x4054a820, 0x13fa: 0x4054aa20, 0x13fb: 0x4054ac20, - 0x13fc: 0x4054ae20, 0x13fd: 0x4054b020, 0x13fe: 0x4054b220, 0x13ff: 0x4054b420, - // Block 0x50, offset 0x1400 - 0x1400: 0x4054b620, 0x1401: 0x4054b820, 0x1402: 0x4054ba20, 0x1403: 0x4054bc20, - 0x1404: 0x4054be20, 0x1405: 0x4054c020, 0x1406: 0x4054c220, 0x1407: 0x4054c420, - 0x1408: 0x4054c620, 0x1409: 0x4054c820, 0x140a: 0x4054ca20, 0x140b: 0x4054cc20, - 0x140c: 0x4054ce20, 0x140d: 0x4054d020, 0x140e: 0x4054d220, 0x140f: 0x4054d420, - 0x1410: 0x4054d620, 0x1411: 0x4054d820, 0x1412: 0x4054da20, 0x1413: 0x4054dc20, - 0x1414: 0x4054de20, 0x1415: 0x4054e020, 0x1416: 0x4054e220, 0x1417: 0x4054e420, - 0x1418: 0x4054e620, 0x1419: 0x4054e820, 0x141a: 0x4054ea20, 0x141b: 0x4054ec20, - 0x141c: 0x4054ee20, 0x141d: 0x4054f020, 0x141e: 0x4054f220, 0x141f: 0x4054f420, - 0x1420: 0x4054f620, 0x1421: 0x4054f820, 0x1422: 0x4054fa20, 0x1423: 0x4054fc20, - 0x1424: 0x4054fe20, 0x1425: 0x40550020, 0x1426: 0x40550220, 0x1427: 0x40550420, - 0x1428: 0x40550620, 0x1429: 0x40550820, 0x142a: 0x40550a20, 0x142b: 0x40550c20, - 0x142c: 0x40550e20, 0x142d: 0x40551020, 0x142e: 0x40551220, 0x142f: 0x40551420, - 0x1430: 0x40551620, 0x1431: 0x40551820, 0x1432: 0x40551a20, 0x1433: 0x40551c20, - 0x1434: 0x40551e20, - // Block 0x51, offset 0x1440 - 0x1440: 0x40021e20, 0x1441: 0x40552020, 0x1442: 0x40552220, 0x1443: 0x40552420, - 0x1444: 0x40552620, 0x1445: 0x40552820, 0x1446: 0x40552a20, 0x1447: 0x40552c20, - 0x1448: 0x40552e20, 0x1449: 0x40553020, 0x144a: 0x40553220, 0x144b: 0x40553420, - 0x144c: 0x40553620, 0x144d: 0x40553820, 0x144e: 0x40553a20, 0x144f: 0x40553c20, - 0x1450: 0x40553e20, 0x1451: 0x40554020, 0x1452: 0x40554220, 0x1453: 0x40554420, - 0x1454: 0x40554620, 0x1455: 0x40554820, 0x1456: 0x40554a20, 0x1457: 0x40554c20, - 0x1458: 0x40554e20, 0x1459: 0x40555020, 0x145a: 0x40555220, 0x145b: 0x40555420, - 0x145c: 0x40555620, 0x145d: 0x40555820, 0x145e: 0x40555a20, 0x145f: 0x40555c20, - 0x1460: 0x40555e20, 0x1461: 0x40556020, 0x1462: 0x40556220, 0x1463: 0x40556420, - 0x1464: 0x40556620, 0x1465: 0x40556820, 0x1466: 0x40556a20, 0x1467: 0x40556c20, - 0x1468: 0x40556e20, 0x1469: 0x40557020, 0x146a: 0x40557220, 0x146b: 0x40557420, - 0x146c: 0x40557620, 0x146d: 0x40557820, 0x146e: 0x40557a20, 0x146f: 0x40557c20, - 0x1470: 0x40557e20, 0x1471: 0x40558020, 0x1472: 0x40558220, 0x1473: 0x40558420, - 0x1474: 0x40558620, 0x1475: 0x40558820, 0x1476: 0x40558a20, 0x1477: 0x40558c20, - 0x1478: 0x40558e20, 0x1479: 0x40559020, 0x147a: 0x40559220, 0x147b: 0x40559420, - 0x147c: 0x40559620, 0x147d: 0x40559820, 0x147e: 0x40559a20, 0x147f: 0x40559c20, - // Block 0x52, offset 0x1480 - 0x1480: 0x40559e20, 0x1481: 0x4055a020, 0x1482: 0x4055a220, 0x1483: 0x4055a420, - 0x1484: 0x4055a620, 0x1485: 0x4055a820, 0x1486: 0x4055aa20, 0x1487: 0x4055ac20, - 0x1488: 0x4055ae20, 0x1489: 0x4055b020, 0x148a: 0x4055b220, 0x148b: 0x4055b420, - 0x148c: 0x4055b620, 0x148d: 0x4055b820, 0x148e: 0x4055ba20, 0x148f: 0x4055bc20, - 0x1490: 0x4055be20, 0x1491: 0x4055c020, 0x1492: 0x4055c220, 0x1493: 0x4055c420, - 0x1494: 0x4055c620, 0x1495: 0x4055c820, 0x1496: 0x4055ca20, 0x1497: 0x4055cc20, - 0x1498: 0x4055ce20, 0x1499: 0x4055d020, 0x149a: 0x4055d220, 0x149b: 0x4055d420, - 0x149c: 0x4055d620, 0x149d: 0x4055d820, 0x149e: 0x4055da20, 0x149f: 0x4055dc20, - 0x14a0: 0x4055de20, 0x14a1: 0x4055e020, 0x14a2: 0x4055e220, 0x14a3: 0x4055e420, - 0x14a4: 0x4055e620, 0x14a5: 0x4055e820, 0x14a6: 0x4055ea20, 0x14a7: 0x4055ec20, - 0x14a8: 0x4055ee20, 0x14a9: 0x4055f020, 0x14aa: 0x4055f220, 0x14ab: 0x4055f420, - 0x14ac: 0x4055f620, 0x14ad: 0x4055f820, 0x14ae: 0x4055fa20, 0x14af: 0x4055fc20, - 0x14b0: 0x4055fe20, 0x14b1: 0x40560020, 0x14b2: 0x40560220, 0x14b3: 0x40560420, - 0x14b4: 0x40560620, 0x14b5: 0x40560820, 0x14b6: 0x40560a20, 0x14b7: 0x40560c20, - 0x14b8: 0x40560e20, 0x14b9: 0x40561020, 0x14ba: 0x40561220, 0x14bb: 0x40561420, - 0x14bc: 0x40561620, 0x14bd: 0x40561820, 0x14be: 0x40561a20, 0x14bf: 0x40561c20, - // Block 0x53, offset 0x14c0 - 0x14c0: 0x40561e20, 0x14c1: 0x40562020, 0x14c2: 0x40562220, 0x14c3: 0x40562420, - 0x14c4: 0x40562620, 0x14c5: 0x40562820, 0x14c6: 0x40562a20, 0x14c7: 0x40562c20, - 0x14c8: 0x40562e20, 0x14c9: 0x40563020, 0x14ca: 0x40563220, 0x14cb: 0x40563420, - 0x14cc: 0x40563620, 0x14cd: 0x40563820, 0x14ce: 0x40563a20, 0x14cf: 0x40563c20, - 0x14d0: 0x40563e20, 0x14d1: 0x40564020, 0x14d2: 0x40564220, 0x14d3: 0x40564420, - 0x14d4: 0x40564620, 0x14d5: 0x40564820, 0x14d6: 0x40564a20, 0x14d7: 0x40564c20, - 0x14d8: 0x40564e20, 0x14d9: 0x40565020, 0x14da: 0x40565220, 0x14db: 0x40565420, - 0x14dc: 0x40565620, 0x14dd: 0x40565820, 0x14de: 0x40565a20, 0x14df: 0x40565c20, - 0x14e0: 0x40565e20, 0x14e1: 0x40566020, 0x14e2: 0x40566220, 0x14e3: 0x40566420, - 0x14e4: 0x40566620, 0x14e5: 0x40566820, 0x14e6: 0x40566a20, 0x14e7: 0x40566c20, - 0x14e8: 0x40566e20, 0x14e9: 0x40567020, 0x14ea: 0x40567220, 0x14eb: 0x40567420, - 0x14ec: 0x40567620, 0x14ed: 0x40567820, 0x14ee: 0x40567a20, 0x14ef: 0x40567c20, - 0x14f0: 0x40567e20, 0x14f1: 0x40568020, 0x14f2: 0x40568220, 0x14f3: 0x40568420, - 0x14f4: 0x40568620, 0x14f5: 0x40568820, 0x14f6: 0x40568a20, 0x14f7: 0x40568c20, - 0x14f8: 0x40568e20, 0x14f9: 0x40569020, 0x14fa: 0x40569220, 0x14fb: 0x40569420, - 0x14fc: 0x40569620, 0x14fd: 0x40569820, 0x14fe: 0x40569a20, 0x14ff: 0x40569c20, - // Block 0x54, offset 0x1500 - 0x1500: 0x40569e20, 0x1501: 0x4056a020, 0x1502: 0x4056a220, 0x1503: 0x4056a420, - 0x1504: 0x4056a620, 0x1505: 0x4056a820, 0x1506: 0x4056aa20, 0x1507: 0x4056ac20, - 0x1508: 0x4056ae20, 0x1509: 0x4056b020, 0x150a: 0x4056b220, 0x150b: 0x4056b420, - 0x150c: 0x4056b620, 0x150d: 0x4056b820, 0x150e: 0x4056ba20, 0x150f: 0x4056bc20, - 0x1510: 0x4056be20, 0x1511: 0x4056c020, 0x1512: 0x4056c220, 0x1513: 0x4056c420, - 0x1514: 0x4056c620, 0x1515: 0x4056c820, 0x1516: 0x4056ca20, 0x1517: 0x4056cc20, - 0x1518: 0x4056ce20, 0x1519: 0x4056d020, 0x151a: 0x4056d220, 0x151b: 0x4056d420, - 0x151c: 0x4056d620, 0x151d: 0x4056d820, 0x151e: 0x4056da20, 0x151f: 0x4056dc20, - 0x1520: 0x4056de20, 0x1521: 0x4056e020, 0x1522: 0x4056e220, 0x1523: 0x4056e420, - 0x1524: 0x4056e620, 0x1525: 0x4056e820, 0x1526: 0x4056ea20, 0x1527: 0x4056ec20, - 0x1528: 0x4056ee20, 0x1529: 0x4056f020, 0x152a: 0x4056f220, 0x152b: 0x4056f420, - 0x152c: 0x4056f620, 0x152d: 0x4056f820, 0x152e: 0x4056fa20, 0x152f: 0x4056fc20, - 0x1530: 0x4056fe20, 0x1531: 0x40570020, 0x1532: 0x40570220, 0x1533: 0x40570420, - 0x1534: 0x40570620, 0x1535: 0x40570820, 0x1536: 0x40570a20, 0x1537: 0x40570c20, - 0x1538: 0x40570e20, 0x1539: 0x40571020, 0x153a: 0x40571220, 0x153b: 0x40571420, - 0x153c: 0x40571620, 0x153d: 0x40571820, 0x153e: 0x40571a20, 0x153f: 0x40571c20, - // Block 0x55, offset 0x1540 - 0x1540: 0x40571e20, 0x1541: 0x40572020, 0x1542: 0x40572220, 0x1543: 0x40572420, - 0x1544: 0x40572620, 0x1545: 0x40572820, 0x1546: 0x40572a20, 0x1547: 0x40572c20, - 0x1548: 0x40572e20, 0x1549: 0x40573020, 0x154a: 0x40573220, 0x154b: 0x40573420, - 0x154c: 0x40573620, 0x154d: 0x40573820, 0x154e: 0x40573a20, 0x154f: 0x40573c20, - 0x1550: 0x40573e20, 0x1551: 0x40574020, 0x1552: 0x40574220, 0x1553: 0x40574420, - 0x1554: 0x40574620, 0x1555: 0x40574820, 0x1556: 0x40574a20, 0x1557: 0x40574c20, - 0x1558: 0x40574e20, 0x1559: 0x40575020, 0x155a: 0x40575220, 0x155b: 0x40575420, - 0x155c: 0x40575620, 0x155d: 0x40575820, 0x155e: 0x40575a20, 0x155f: 0x40575c20, - 0x1560: 0x40575e20, 0x1561: 0x40576020, 0x1562: 0x40576220, 0x1563: 0x40576420, - 0x1564: 0x40576620, 0x1565: 0x40576820, 0x1566: 0x40576a20, 0x1567: 0x40576c20, - 0x1568: 0x40576e20, 0x1569: 0x40577020, 0x156a: 0x40577220, 0x156b: 0x40577420, - 0x156c: 0x40577620, 0x156d: 0x40577820, 0x156e: 0x40577a20, 0x156f: 0x40577c20, - 0x1570: 0x40577e20, 0x1571: 0x40578020, 0x1572: 0x40578220, 0x1573: 0x40578420, - 0x1574: 0x40578620, 0x1575: 0x40578820, 0x1576: 0x40578a20, 0x1577: 0x40578c20, - 0x1578: 0x40578e20, 0x1579: 0x40579020, 0x157a: 0x40579220, 0x157b: 0x40579420, - 0x157c: 0x40579620, 0x157d: 0x40579820, 0x157e: 0x40579a20, 0x157f: 0x40579c20, - // Block 0x56, offset 0x1580 - 0x1580: 0x40579e20, 0x1581: 0x4057a020, 0x1582: 0x4057a220, 0x1583: 0x4057a420, - 0x1584: 0x4057a620, 0x1585: 0x4057a820, 0x1586: 0x4057aa20, 0x1587: 0x4057ac20, - 0x1588: 0x4057ae20, 0x1589: 0x4057b020, 0x158a: 0x4057b220, 0x158b: 0x4057b420, - 0x158c: 0x4057b620, 0x158d: 0x4057b820, 0x158e: 0x4057ba20, 0x158f: 0x4057bc20, - 0x1590: 0x4057be20, 0x1591: 0x4057c020, 0x1592: 0x4057c220, 0x1593: 0x4057c420, - 0x1594: 0x4057c620, 0x1595: 0x4057c820, 0x1596: 0x4057ca20, 0x1597: 0x4057cc20, - 0x1598: 0x4057ce20, 0x1599: 0x4057d020, 0x159a: 0x4057d220, 0x159b: 0x4057d420, - 0x159c: 0x4057d620, 0x159d: 0x4057d820, 0x159e: 0x4057da20, 0x159f: 0x4057dc20, - 0x15a0: 0x4057de20, 0x15a1: 0x4057e020, 0x15a2: 0x4057e220, 0x15a3: 0x4057e420, - 0x15a4: 0x4057e620, 0x15a5: 0x4057e820, 0x15a6: 0x4057ea20, 0x15a7: 0x4057ec20, - 0x15a8: 0x4057ee20, 0x15a9: 0x4057f020, 0x15aa: 0x4057f220, 0x15ab: 0x4057f420, - 0x15ac: 0x4057f620, 0x15ad: 0x4057f820, 0x15ae: 0x4057fa20, 0x15af: 0x4057fc20, - 0x15b0: 0x4057fe20, 0x15b1: 0x40580020, 0x15b2: 0x40580220, 0x15b3: 0x40580420, - 0x15b4: 0x40580620, 0x15b5: 0x40580820, 0x15b6: 0x40580a20, 0x15b7: 0x40580c20, - 0x15b8: 0x40580e20, 0x15b9: 0x40581020, 0x15ba: 0x40581220, 0x15bb: 0x40581420, - 0x15bc: 0x40587a20, 0x15bd: 0x40581620, 0x15be: 0x40581a20, 0x15bf: 0x40581c20, - // Block 0x57, offset 0x15c0 - 0x15c0: 0x40581e20, 0x15c1: 0x40582020, 0x15c2: 0x40582220, 0x15c3: 0x40582420, - 0x15c4: 0x40582620, 0x15c5: 0x40582820, 0x15c6: 0x40582a20, 0x15c7: 0x40582c20, - 0x15c8: 0x40582e20, 0x15c9: 0x40583020, 0x15ca: 0x40583220, 0x15cb: 0x40583420, - 0x15cc: 0x40583620, 0x15cd: 0x40583820, 0x15ce: 0x40583c20, 0x15cf: 0x40583e20, - 0x15d0: 0x40584020, 0x15d1: 0x40584220, 0x15d2: 0x40584420, 0x15d3: 0x40584620, - 0x15d4: 0x40584820, 0x15d5: 0x40584a20, 0x15d6: 0x40585820, 0x15d7: 0x40585a20, - 0x15d8: 0x40585c20, 0x15d9: 0x40585e20, 0x15da: 0x40586020, 0x15db: 0x40586220, - 0x15dc: 0x40586420, 0x15dd: 0x40586620, 0x15de: 0x40586820, 0x15df: 0x40586a20, - 0x15e0: 0x40586c20, 0x15e1: 0x40586e20, 0x15e2: 0x40587020, 0x15e3: 0x40587220, - 0x15e4: 0x40587420, 0x15e5: 0x40587620, 0x15e6: 0x40587820, 0x15e7: 0x40587c20, - 0x15e8: 0x40587e20, 0x15e9: 0x40588020, 0x15ea: 0x40588220, 0x15eb: 0x40588420, - 0x15ec: 0x40588620, 0x15ed: 0x40588820, 0x15ee: 0x40588a20, 0x15ef: 0x40588c20, - 0x15f0: 0x40588e20, 0x15f1: 0x40589020, 0x15f2: 0x40589220, 0x15f3: 0x40589420, - 0x15f4: 0x40589620, 0x15f5: 0x40589820, 0x15f6: 0x40589a20, 0x15f7: 0x40589c20, - 0x15f8: 0x40589e20, 0x15f9: 0x4058a020, 0x15fa: 0x4058a220, 0x15fb: 0x4058a420, - 0x15fc: 0x4058a620, 0x15fd: 0x4058a820, 0x15fe: 0x4058aa20, 0x15ff: 0x4058ac20, - // Block 0x58, offset 0x1600 - 0x1600: 0x4058ae20, 0x1601: 0x4058b020, 0x1602: 0x4058b220, 0x1603: 0x4058b420, - 0x1604: 0x4058b620, 0x1605: 0x4058b820, 0x1606: 0x4058ba20, 0x1607: 0x4058bc20, - 0x1608: 0x4058be20, 0x1609: 0x4058c020, 0x160a: 0x4058c220, 0x160b: 0x4058c420, - 0x160c: 0x4058c620, 0x160d: 0x4058c820, 0x160e: 0x4058ca20, 0x160f: 0x4058cc20, - 0x1610: 0x4058ce20, 0x1611: 0x4058d020, 0x1612: 0x4058d220, 0x1613: 0x4058d420, - 0x1614: 0x4058d620, 0x1615: 0x4058d820, 0x1616: 0x4058da20, 0x1617: 0x4058dc20, - 0x1618: 0x4058de20, 0x1619: 0x4058e020, 0x161a: 0x4058e220, 0x161b: 0x4058e420, - 0x161c: 0x4058e620, 0x161d: 0x4058e820, 0x161e: 0x4058ea20, 0x161f: 0x4058ec20, - 0x1620: 0x4058ee20, 0x1621: 0x4058f020, 0x1622: 0x4058f220, 0x1623: 0x4058f420, - 0x1624: 0x4058f620, 0x1625: 0x4058f820, 0x1626: 0x4058fa20, 0x1627: 0x4058fc20, - 0x1628: 0x4058fe20, 0x1629: 0x40590020, 0x162a: 0x40590220, 0x162b: 0x40590420, - 0x162c: 0x40590620, 0x162d: 0x40590820, 0x162e: 0x40590a20, 0x162f: 0x40590c20, - 0x1630: 0x40590e20, 0x1631: 0x40591020, 0x1632: 0x40591220, 0x1633: 0x40591420, - 0x1634: 0x40591620, 0x1635: 0x40591820, 0x1636: 0x40591a20, 0x1637: 0x40591c20, - 0x1638: 0x40591e20, 0x1639: 0x40592020, 0x163a: 0x40592220, 0x163b: 0x40592420, - 0x163c: 0x40592620, 0x163d: 0x40592820, 0x163e: 0x40592a20, 0x163f: 0x40592c20, - // Block 0x59, offset 0x1640 - 0x1640: 0x40592e20, 0x1641: 0x40593020, 0x1642: 0x40593220, 0x1643: 0x40593420, - 0x1644: 0x40593620, 0x1645: 0x40593820, 0x1646: 0x40593a20, 0x1647: 0x40593c20, - 0x1648: 0x40593e20, 0x1649: 0x40594020, 0x164a: 0x40594220, 0x164b: 0x40594420, - 0x164c: 0x40594620, 0x164d: 0x40594820, 0x164e: 0x40594a20, 0x164f: 0x40594c20, - 0x1650: 0x40594e20, 0x1651: 0x40595020, 0x1652: 0x40595220, 0x1653: 0x40595420, - 0x1654: 0x40595620, 0x1655: 0x40595820, 0x1656: 0x40595a20, 0x1657: 0x40595c20, - 0x1658: 0x40595e20, 0x1659: 0x40596020, 0x165a: 0x40596220, 0x165b: 0x40596420, - 0x165c: 0x40596620, 0x165d: 0x40596820, 0x165e: 0x40596a20, 0x165f: 0x40596c20, - 0x1660: 0x40596e20, 0x1661: 0x40597020, 0x1662: 0x40597220, 0x1663: 0x40597420, - 0x1664: 0x40597620, 0x1665: 0x40597820, 0x1666: 0x40597a20, 0x1667: 0x40597c20, - 0x1668: 0x40597e20, 0x1669: 0x40598020, 0x166a: 0x40598220, 0x166b: 0x40598420, - 0x166c: 0x40598620, 0x166d: 0x40598820, 0x166e: 0x40598a20, 0x166f: 0x40598c20, - 0x1670: 0x40598e20, 0x1671: 0x40599020, 0x1672: 0x40599220, 0x1673: 0x40599420, - 0x1674: 0x40599620, 0x1675: 0x40599820, 0x1676: 0x40599a20, 0x1677: 0x40599c20, - 0x1678: 0x40599e20, 0x1679: 0x4059a020, 0x167a: 0x4059a220, 0x167b: 0x4059a420, - 0x167c: 0x4059a620, 0x167d: 0x4059a820, 0x167e: 0x4059aa20, 0x167f: 0x4059ac20, - // Block 0x5a, offset 0x1680 - 0x1680: 0x4059ae20, 0x1681: 0x4059b020, 0x1682: 0x4059b220, 0x1683: 0x4059b420, - 0x1684: 0x4059b620, 0x1685: 0x4059b820, 0x1686: 0x4059ba20, 0x1687: 0x4059bc20, - 0x1688: 0x4059be20, 0x1689: 0x4059c020, 0x168a: 0x4059c220, 0x168b: 0x4059c420, - 0x168c: 0x4059c620, 0x168d: 0x4059c820, 0x168e: 0x4059ca20, 0x168f: 0x4059cc20, - 0x1690: 0x4059ce20, 0x1691: 0x4059d020, 0x1692: 0x4059d220, 0x1693: 0x4059d420, - 0x1694: 0x4059d620, 0x1695: 0x4059d820, 0x1696: 0x4059da20, 0x1697: 0x4059dc20, - 0x1698: 0x4059de20, 0x1699: 0x4059e020, 0x169a: 0x4059e220, 0x169b: 0x4059e420, - 0x169c: 0x4059e620, 0x169d: 0x4059e820, 0x169e: 0x4059ea20, 0x169f: 0x4059ec20, - 0x16a0: 0x4059ee20, 0x16a1: 0x4059f020, 0x16a2: 0x4059f220, 0x16a3: 0x4059f420, - 0x16a4: 0x4059f620, 0x16a5: 0x4059f820, 0x16a6: 0x4059fa20, 0x16a7: 0x4059fc20, - 0x16a8: 0x4059fe20, 0x16a9: 0x405a0020, 0x16aa: 0x405a0220, 0x16ab: 0x405a0420, - 0x16ac: 0x405a0620, 0x16ad: 0x4005d420, 0x16ae: 0x4002f420, 0x16af: 0x40581820, - 0x16b0: 0x40583a20, 0x16b1: 0x40584c20, 0x16b2: 0x40584e20, 0x16b3: 0x40585020, - 0x16b4: 0x40585220, 0x16b5: 0x40585420, 0x16b6: 0x40585620, 0x16b7: 0x405a0820, - 0x16b8: 0x405a0a20, 0x16b9: 0x405a0c20, 0x16ba: 0x405a0e20, 0x16bb: 0x405a1020, - 0x16bc: 0x405a1220, 0x16bd: 0x405a1420, 0x16be: 0x405a1620, 0x16bf: 0x405a1820, - // Block 0x5b, offset 0x16c0 - 0x16c0: 0x00021284, 0x16c1: 0x405aa620, 0x16c2: 0x405aa820, 0x16c3: 0x405aaa20, - 0x16c4: 0x405aac20, 0x16c5: 0x405aae20, 0x16c6: 0x405ab020, 0x16c7: 0x405ab220, - 0x16c8: 0x405ab420, 0x16c9: 0x405ab620, 0x16ca: 0x405ab820, 0x16cb: 0x405aba20, - 0x16cc: 0x405abc20, 0x16cd: 0x405abe20, 0x16ce: 0x405ac020, 0x16cf: 0x405ac220, - 0x16d0: 0x405ac420, 0x16d1: 0x405ac620, 0x16d2: 0x405ac820, 0x16d3: 0x405aca20, - 0x16d4: 0x405acc20, 0x16d5: 0x405ace20, 0x16d6: 0x405ad020, 0x16d7: 0x405ad220, - 0x16d8: 0x405ad420, 0x16d9: 0x405ad620, 0x16da: 0x405ad820, 0x16db: 0x40040820, - 0x16dc: 0x40040a20, - 0x16e0: 0x405ada20, 0x16e1: 0xe000202d, 0x16e2: 0x405adc20, 0x16e3: 0x405b1420, - 0x16e4: 0xe0002030, 0x16e5: 0xe0002033, 0x16e6: 0x405ade20, 0x16e7: 0xe0002036, - 0x16e8: 0x405ae020, 0x16e9: 0xe000203c, 0x16ea: 0x405b1020, 0x16eb: 0x405b1220, - 0x16ec: 0xe000203f, 0x16ed: 0xe0002042, 0x16ee: 0xe0002045, 0x16ef: 0x405ae220, - 0x16f0: 0x405ae420, 0x16f1: 0x405ae620, 0x16f2: 0x405ae820, 0x16f3: 0xe0002048, - 0x16f4: 0xe000204b, 0x16f5: 0xe000204e, 0x16f6: 0xe0002051, 0x16f7: 0x405aea20, - 0x16f8: 0x405b1a20, 0x16f9: 0x405aec20, 0x16fa: 0x405aee20, 0x16fb: 0xe0002057, - 0x16fc: 0xe000205a, 0x16fd: 0xe000205d, 0x16fe: 0x405af020, 0x16ff: 0xe0002060, - // Block 0x5c, offset 0x1700 - 0x1700: 0xe0002063, 0x1701: 0x405af220, 0x1702: 0xe0002066, 0x1703: 0x405af420, - 0x1704: 0xe0002069, 0x1705: 0x405af620, 0x1706: 0xe000206c, 0x1707: 0x405af820, - 0x1708: 0x405afa20, 0x1709: 0x405afc20, 0x170a: 0x405afe20, 0x170b: 0xe0002075, - 0x170c: 0xe000207b, 0x170d: 0xe000207e, 0x170e: 0xe0002081, 0x170f: 0x405b0020, - 0x1710: 0xe0002084, 0x1711: 0xe0002087, 0x1712: 0x405b0220, 0x1713: 0xe000208a, - 0x1714: 0xe000208d, 0x1715: 0xe0002072, 0x1716: 0x405b0420, 0x1717: 0x405b0620, - 0x1718: 0xe0002090, 0x1719: 0xe0002093, 0x171a: 0x405b0820, 0x171b: 0xe000209b, - 0x171c: 0x405b0a20, 0x171d: 0xe000209e, 0x171e: 0x405b0c20, 0x171f: 0x405b0e20, - 0x1720: 0x405b1620, 0x1721: 0x405b1e20, 0x1722: 0x405b2020, 0x1723: 0x405b1820, - 0x1724: 0x405b1c20, 0x1725: 0x405b2220, 0x1726: 0x405b2420, 0x1727: 0xe00020a1, - 0x1728: 0xe00020a4, 0x1729: 0xe0002054, 0x172a: 0xe0002078, 0x172b: 0x4002b220, - 0x172c: 0x4002b420, 0x172d: 0x4002b620, 0x172e: 0xe000206f, 0x172f: 0xe0002096, - 0x1730: 0xe0002039, - // Block 0x5d, offset 0x1740 - 0x1740: 0x404c7620, 0x1741: 0x404c7820, 0x1742: 0x404c7a20, 0x1743: 0x404c7c20, - 0x1744: 0x404c7e20, 0x1745: 0x404c8020, 0x1746: 0x404c8220, 0x1747: 0x404c8420, - 0x1748: 0x404c8620, 0x1749: 0x404c8820, 0x174a: 0x404c8a20, 0x174b: 0x404c8c20, - 0x174c: 0x404c8e20, 0x174e: 0x404c9020, 0x174f: 0x404c9220, - 0x1750: 0x404c9420, 0x1751: 0x404c9620, 0x1752: 0x404c9820, 0x1753: 0x404c9a20, - 0x1754: 0x8209264e, - 0x1760: 0x404c9e20, 0x1761: 0x404ca020, 0x1762: 0x404ca220, 0x1763: 0x404ca420, - 0x1764: 0x404ca620, 0x1765: 0x404ca820, 0x1766: 0x404caa20, 0x1767: 0x404cac20, - 0x1768: 0x404cae20, 0x1769: 0x404cb020, 0x176a: 0x404cb220, 0x176b: 0x404cb420, - 0x176c: 0x404cb620, 0x176d: 0x404cb820, 0x176e: 0x404cba20, 0x176f: 0x404cbc20, - 0x1770: 0x404cbe20, 0x1771: 0x404cc020, 0x1772: 0x404cc220, 0x1773: 0x404cc420, - 0x1774: 0x82092663, 0x1775: 0x40031c20, 0x1776: 0x40031e20, - // Block 0x5e, offset 0x1780 - 0x1780: 0x404cc820, 0x1781: 0x404cca20, 0x1782: 0x404ccc20, 0x1783: 0x404cce20, - 0x1784: 0x404cd020, 0x1785: 0x404cd220, 0x1786: 0x404cd420, 0x1787: 0x404cd620, - 0x1788: 0x404cd820, 0x1789: 0x404cda20, 0x178a: 0x404cdc20, 0x178b: 0x404cde20, - 0x178c: 0x404ce020, 0x178d: 0x404ce220, 0x178e: 0x404ce420, 0x178f: 0x404ce620, - 0x1790: 0x404ce820, 0x1791: 0x404cea20, 0x1792: 0x404cec20, 0x1793: 0x404cee20, - 0x17a0: 0x404cf020, 0x17a1: 0x404cf220, 0x17a2: 0x404cf420, 0x17a3: 0x404cf620, - 0x17a4: 0x404cf820, 0x17a5: 0x404cfa20, 0x17a6: 0x404cfc20, 0x17a7: 0x404cfe20, - 0x17a8: 0x404d0020, 0x17a9: 0x404d0220, 0x17aa: 0x404d0420, 0x17ab: 0x404d0620, - 0x17ac: 0x404d0820, 0x17ae: 0x404d0a20, 0x17af: 0x404d0c20, - 0x17b0: 0x404d0e20, 0x17b2: 0x404d1020, 0x17b3: 0x404d1220, - // Block 0x5f, offset 0x17c0 - 0x17c0: 0x404fa420, 0x17c1: 0x404fa620, 0x17c2: 0x404fa820, 0x17c3: 0x404faa20, - 0x17c4: 0x404fac20, 0x17c5: 0x404fae20, 0x17c6: 0x404fb020, 0x17c7: 0x404fb220, - 0x17c8: 0x404fb420, 0x17c9: 0x404fb620, 0x17ca: 0x404fb820, 0x17cb: 0x404fba20, - 0x17cc: 0x404fbc20, 0x17cd: 0x404fbe20, 0x17ce: 0x404fc020, 0x17cf: 0x404fc220, - 0x17d0: 0x404fc420, 0x17d1: 0x404fc620, 0x17d2: 0x404fc820, 0x17d3: 0x404fca20, - 0x17d4: 0x404fcc20, 0x17d5: 0x404fce20, 0x17d6: 0x404fd020, 0x17d7: 0x404fd220, - 0x17d8: 0x404fd420, 0x17d9: 0x404fd620, 0x17da: 0x404fd820, 0x17db: 0x404fda20, - 0x17dc: 0x404fdc20, 0x17dd: 0x404fde20, 0x17de: 0x404fe020, 0x17df: 0x404fe220, - 0x17e0: 0x404fe420, 0x17e1: 0x404fe620, 0x17e2: 0x404fe820, 0x17e3: 0x404fec20, - 0x17e4: 0x404fee20, 0x17e5: 0x404ff020, 0x17e6: 0x404ff220, 0x17e7: 0x404ff420, - 0x17e8: 0x404ff620, 0x17e9: 0x404ff820, 0x17ea: 0x404ffa20, 0x17eb: 0x404ffc20, - 0x17ec: 0x404ffe20, 0x17ed: 0x40500020, 0x17ee: 0x40500220, 0x17ef: 0x40500420, - 0x17f0: 0x40500620, 0x17f1: 0x40500820, 0x17f2: 0x40500a20, 0x17f3: 0x40500c20, - 0x17f4: 0xa0000000, 0x17f5: 0xa0000000, 0x17f6: 0x40500e20, 0x17f7: 0x40501020, - 0x17f8: 0x40501220, 0x17f9: 0x40501420, 0x17fa: 0x40501620, 0x17fb: 0x40501820, - 0x17fc: 0x40501a20, 0x17fd: 0x40501c20, 0x17fe: 0x40501e20, 0x17ff: 0x40502020, - // Block 0x60, offset 0x1800 - 0x1800: 0x40502220, 0x1801: 0x40502420, 0x1802: 0x40502620, 0x1803: 0x40502820, - 0x1804: 0x40502a20, 0x1805: 0x40502c20, 0x1806: 0xa000f302, 0x1807: 0xa000f402, - 0x1808: 0xa0011402, 0x1809: 0xa0011502, 0x180a: 0xa0011602, 0x180b: 0xa0005f02, - 0x180c: 0xa0005f02, 0x180d: 0xa0005f02, 0x180e: 0xa0005f02, 0x180f: 0xa0005f02, - 0x1810: 0xa0005f02, 0x1811: 0xa0005f02, 0x1812: 0x82092817, 0x1813: 0xa0000000, - 0x1814: 0x40032620, 0x1815: 0x40032820, 0x1816: 0x4002ac20, 0x1817: 0x4027bc20, - 0x1818: 0x4005bc20, 0x1819: 0x4005be20, 0x181a: 0x4005c020, 0x181b: 0x4027f620, - 0x181c: 0x404fea20, 0x181d: 0xae605f02, - 0x1820: 0xe00001b5, 0x1821: 0xe0000249, 0x1822: 0xe0000361, 0x1823: 0xe000043b, - 0x1824: 0xe0000510, 0x1825: 0xe00005da, 0x1826: 0xe00006a5, 0x1827: 0xe000074d, - 0x1828: 0xe00007f9, 0x1829: 0xe000089e, - 0x1830: 0xe00001b8, 0x1831: 0xe000024c, 0x1832: 0xe0000364, 0x1833: 0xe000043e, - 0x1834: 0xe0000513, 0x1835: 0xe00005dd, 0x1836: 0xe00006a8, 0x1837: 0xe0000750, - 0x1838: 0xe00007fc, 0x1839: 0xe00008a1, - // Block 0x61, offset 0x1840 - 0x1840: 0x40056a20, 0x1841: 0x4002e620, 0x1842: 0x40025220, 0x1843: 0x4002f020, - 0x1844: 0x4002a620, 0x1845: 0x4002a820, 0x1846: 0x40022220, 0x1847: 0x40022420, - 0x1848: 0x40025420, 0x1849: 0x4002f220, 0x184a: 0xa0000000, 0x184b: 0xa0000000, - 0x184c: 0xa0000000, 0x184d: 0xa0000000, 0x184e: 0x40020c20, - 0x1850: 0xe00001c7, 0x1851: 0xe000025b, 0x1852: 0xe0000373, 0x1853: 0xe000044d, - 0x1854: 0xe0000522, 0x1855: 0xe00005ec, 0x1856: 0xe00006b7, 0x1857: 0xe000075f, - 0x1858: 0xe000080b, 0x1859: 0xe00008b0, - 0x1860: 0x40533820, 0x1861: 0x40533c20, 0x1862: 0x40534220, 0x1863: 0x40534e20, - 0x1864: 0x40535220, 0x1865: 0x40535820, 0x1866: 0x40535c20, 0x1867: 0x40536220, - 0x1868: 0x40536420, 0x1869: 0x40536620, 0x186a: 0x40537020, 0x186b: 0x40537420, - 0x186c: 0x40537a20, 0x186d: 0x40537e20, 0x186e: 0x40538820, 0x186f: 0x40538c20, - 0x1870: 0x40538e20, 0x1871: 0x40539020, 0x1872: 0x40539e20, 0x1873: 0x4053a420, - 0x1874: 0x4053aa20, 0x1875: 0x4053b420, 0x1876: 0x4053bc20, 0x1877: 0x4053c220, - 0x1878: 0x4053c620, 0x1879: 0x4053ca20, 0x187a: 0x4053d020, 0x187b: 0x4053da20, - 0x187c: 0x4053dc20, 0x187d: 0x4053e220, 0x187e: 0x4053ea20, 0x187f: 0x4053f020, - // Block 0x62, offset 0x1880 - 0x1880: 0x4053f220, 0x1881: 0x4053f420, 0x1882: 0x4053f620, 0x1883: 0x40533620, - 0x1884: 0x40533e20, 0x1885: 0x40534420, 0x1886: 0x40535020, 0x1887: 0x40535420, - 0x1888: 0x40535a20, 0x1889: 0x40535e20, 0x188a: 0x40536820, 0x188b: 0x40537220, - 0x188c: 0x40537620, 0x188d: 0x40537c20, 0x188e: 0x40538020, 0x188f: 0x40538a20, - 0x1890: 0x4053a020, 0x1891: 0x4053a620, 0x1892: 0x4053ac20, 0x1893: 0x4053b620, - 0x1894: 0x4053de20, 0x1895: 0x4053be20, 0x1896: 0x4053c820, 0x1897: 0x4053d220, - 0x1898: 0x4053e620, 0x1899: 0x4053ec20, 0x189a: 0x4053f820, 0x189b: 0x4053fa20, - 0x189c: 0x4053b020, 0x189d: 0x40534020, 0x189e: 0x40534620, 0x189f: 0x40534c20, - 0x18a0: 0x40536020, 0x18a1: 0x40535620, 0x18a2: 0x40536a20, 0x18a3: 0x4053d420, - 0x18a4: 0x40538220, 0x18a5: 0x40538620, 0x18a6: 0x40537820, 0x18a7: 0x40539220, - 0x18a8: 0x4053a220, 0x18a9: 0x4053a820, 0x18aa: 0x4053b820, 0x18ab: 0x4053cc20, - 0x18ac: 0x4053e820, 0x18ad: 0x4053ee20, 0x18ae: 0x4053e020, 0x18af: 0x4053e420, - 0x18b0: 0x4053fc20, 0x18b1: 0x4053ae20, 0x18b2: 0x4053c020, 0x18b3: 0x40534820, - 0x18b4: 0x4053d620, 0x18b5: 0x4053c420, 0x18b6: 0x4053ce20, 0x18b7: 0x4053ba20, - // Block 0x63, offset 0x18c0 - 0x18c0: 0x40532820, 0x18c1: 0x40532a20, 0x18c2: 0x40532c20, 0x18c3: 0x40532e20, - 0x18c4: 0x40533020, 0x18c5: 0x40533220, 0x18c6: 0x40533420, 0x18c7: 0x40533a20, - 0x18c8: 0x40534a20, 0x18c9: 0x4053d820, 0x18ca: 0x40536c20, 0x18cb: 0x4053b220, - 0x18cc: 0x4053fe20, 0x18cd: 0x40540220, 0x18ce: 0x40540420, 0x18cf: 0x40540820, - 0x18d0: 0x40540a20, 0x18d1: 0x40541020, 0x18d2: 0x40541420, 0x18d3: 0x40541620, - 0x18d4: 0x40541a20, 0x18d5: 0x40541e20, 0x18d6: 0x40542220, 0x18d7: 0x40542420, - 0x18d8: 0x40540c20, 0x18d9: 0x40542020, 0x18da: 0x40538420, 0x18db: 0x40536e20, - 0x18dc: 0x40539420, 0x18dd: 0x40539620, 0x18de: 0x40540020, 0x18df: 0x40540620, - 0x18e0: 0x40540e20, 0x18e1: 0x40541220, 0x18e2: 0x40539820, 0x18e3: 0x40541c20, - 0x18e4: 0x40539a20, 0x18e5: 0x40539c20, 0x18e6: 0x40542620, 0x18e7: 0x40542820, - 0x18e8: 0x40541820, 0x18e9: 0x82e42a16, 0x18ea: 0x40542a20, - 0x18f0: 0x405a1a20, 0x18f1: 0x405a1c20, 0x18f2: 0x405a1e20, 0x18f3: 0x405a2020, - 0x18f4: 0x405a2220, 0x18f5: 0x405a2420, 0x18f6: 0x405a2620, 0x18f7: 0x405a2820, - 0x18f8: 0x405a2a20, 0x18f9: 0x405a2c20, 0x18fa: 0x405a2e20, 0x18fb: 0x405a3020, - 0x18fc: 0x405a3220, 0x18fd: 0x405a3420, 0x18fe: 0x405a3620, 0x18ff: 0x405a3820, - // Block 0x64, offset 0x1900 - 0x1900: 0x405a3a20, 0x1901: 0x405a3c20, 0x1902: 0x405a3e20, 0x1903: 0x405a4020, - 0x1904: 0x405a4220, 0x1905: 0x405a4420, 0x1906: 0x405a4620, 0x1907: 0x405a4820, - 0x1908: 0x405a4a20, 0x1909: 0x405a4c20, 0x190a: 0x405a4e20, 0x190b: 0x405a5020, - 0x190c: 0x405a5220, 0x190d: 0x405a5420, 0x190e: 0x405a5620, 0x190f: 0x405a5820, - 0x1910: 0x405a5a20, 0x1911: 0x405a5c20, 0x1912: 0x405a5e20, 0x1913: 0x405a6020, - 0x1914: 0x405a6220, 0x1915: 0x405a6420, 0x1916: 0x405a6620, 0x1917: 0x405a6820, - 0x1918: 0x405a6a20, 0x1919: 0x405a6c20, 0x191a: 0x405a6e20, 0x191b: 0x405a7020, - 0x191c: 0x405a7220, 0x191d: 0x405a7420, 0x191e: 0x405a7620, 0x191f: 0x405a7820, - 0x1920: 0x405a7a20, 0x1921: 0x405a7c20, 0x1922: 0x405a7e20, 0x1923: 0x405a8020, - 0x1924: 0x405a8220, 0x1925: 0x405a8420, 0x1926: 0x405a8620, 0x1927: 0x405a8820, - 0x1928: 0x405a8a20, 0x1929: 0x405a8c20, 0x192a: 0x405a8e20, 0x192b: 0x405a9020, - 0x192c: 0x405a9220, 0x192d: 0x405a9420, 0x192e: 0x405a9620, 0x192f: 0x405a9820, - 0x1930: 0x405a9a20, 0x1931: 0x405a9c20, 0x1932: 0x405a9e20, 0x1933: 0x405aa020, - 0x1934: 0x405aa220, 0x1935: 0x405aa420, - // Block 0x65, offset 0x1940 - 0x1940: 0x404c1220, 0x1941: 0x404c1420, 0x1942: 0x404c1620, 0x1943: 0x404c1820, - 0x1944: 0x404c1a20, 0x1945: 0x404c1c20, 0x1946: 0x404c1e20, 0x1947: 0x404c2020, - 0x1948: 0x404c2220, 0x1949: 0x404c2420, 0x194a: 0x404c2620, 0x194b: 0x404c2820, - 0x194c: 0x404c2a20, 0x194d: 0x404c2c20, 0x194e: 0x404c2e20, 0x194f: 0x404c3020, - 0x1950: 0x404c3220, 0x1951: 0x404c3420, 0x1952: 0x404c3620, 0x1953: 0x404c3820, - 0x1954: 0x404c3a20, 0x1955: 0x404c3c20, 0x1956: 0x404c3e20, 0x1957: 0x404c4020, - 0x1958: 0x404c4220, 0x1959: 0x404c4420, 0x195a: 0x404c4620, 0x195b: 0x404c4820, - 0x195c: 0x404c4a20, - 0x1960: 0x404c4c20, 0x1961: 0x404c4e20, 0x1962: 0x404c5020, 0x1963: 0x404c5220, - 0x1964: 0x404c5420, 0x1965: 0x404c5620, 0x1966: 0x404c5820, 0x1967: 0x404c5a20, - 0x1968: 0x404c5c20, 0x1969: 0x404c5e20, 0x196a: 0x404c6020, 0x196b: 0x404c6220, - 0x1970: 0x404c6420, 0x1971: 0x404c6620, 0x1972: 0x404c6820, 0x1973: 0x404c6a20, - 0x1974: 0x404c6c20, 0x1975: 0x404c6e20, 0x1976: 0x404c7020, 0x1977: 0x404c7220, - 0x1978: 0x404c7420, 0x1979: 0xade11f02, 0x197a: 0xae612002, 0x197b: 0xadc12102, - // Block 0x66, offset 0x1980 - 0x1980: 0x4007a620, - 0x1984: 0x4002c220, 0x1985: 0x4002d220, 0x1986: 0xe000018e, 0x1987: 0xe000021f, - 0x1988: 0xe000033a, 0x1989: 0xe0000414, 0x198a: 0xe00004e9, 0x198b: 0xe00005b3, - 0x198c: 0xe000067e, 0x198d: 0xe0000726, 0x198e: 0xe00007d2, 0x198f: 0xe0000877, - 0x1990: 0x40503020, 0x1991: 0x40503220, 0x1992: 0x40503420, 0x1993: 0x40503620, - 0x1994: 0x40503820, 0x1995: 0x40503a20, 0x1996: 0x40503c20, 0x1997: 0x40503e20, - 0x1998: 0x40504020, 0x1999: 0x40504220, 0x199a: 0x40504420, 0x199b: 0x40504620, - 0x199c: 0x40504820, 0x199d: 0x40504a20, 0x199e: 0x40504c20, 0x199f: 0x40504e20, - 0x19a0: 0x40505020, 0x19a1: 0x40505220, 0x19a2: 0x40505420, 0x19a3: 0x40505620, - 0x19a4: 0x40505820, 0x19a5: 0x40505a20, 0x19a6: 0x40505c20, 0x19a7: 0x40505e20, - 0x19a8: 0x40506020, 0x19a9: 0x40506220, 0x19aa: 0x40506420, 0x19ab: 0x40506620, - 0x19ac: 0x40506820, 0x19ad: 0x40506a20, - 0x19b0: 0x40506c20, 0x19b1: 0x40506e20, 0x19b2: 0x40507020, 0x19b3: 0x40507220, - 0x19b4: 0x40507420, - // Block 0x67, offset 0x19c0 - 0x19c0: 0x40507620, 0x19c1: 0x40507820, 0x19c2: 0x40507a20, 0x19c3: 0x40507c20, - 0x19c4: 0x40507e20, 0x19c5: 0x40508020, 0x19c6: 0x40508220, 0x19c7: 0x40508420, - 0x19c8: 0x40508620, 0x19c9: 0x40508820, 0x19ca: 0x40508a20, 0x19cb: 0x40508c20, - 0x19cc: 0x40508e20, 0x19cd: 0x40509020, 0x19ce: 0x40509220, 0x19cf: 0x40509420, - 0x19d0: 0x40509620, 0x19d1: 0x40509820, 0x19d2: 0x40509a20, 0x19d3: 0x40509c20, - 0x19d4: 0x40509e20, 0x19d5: 0x4050a020, 0x19d6: 0x4050a220, 0x19d7: 0x4050a420, - 0x19d8: 0x4050a620, 0x19d9: 0x4050a820, 0x19da: 0x4050aa20, 0x19db: 0x4050ac20, - 0x19dc: 0x4050ae20, 0x19dd: 0x4050b020, 0x19de: 0x4050b220, 0x19df: 0x4050b420, - 0x19e0: 0x4050b620, 0x19e1: 0x4050b820, 0x19e2: 0x4050ba20, 0x19e3: 0x4050bc20, - 0x19e4: 0x4050be20, 0x19e5: 0x4050c020, 0x19e6: 0x4050c220, 0x19e7: 0x4050c420, - 0x19e8: 0x4050c620, 0x19e9: 0x4050c820, 0x19ea: 0x4050ca20, 0x19eb: 0x4050cc20, - 0x19f0: 0x4050ce20, 0x19f1: 0x4050d020, 0x19f2: 0x4050d220, 0x19f3: 0x4050d420, - 0x19f4: 0x4050d620, 0x19f5: 0x4050d820, 0x19f6: 0x4050da20, 0x19f7: 0x4050dc20, - 0x19f8: 0x4050de20, 0x19f9: 0x4050e020, 0x19fa: 0x4050e220, 0x19fb: 0x4050e420, - 0x19fc: 0x4050e620, 0x19fd: 0x4050e820, 0x19fe: 0x4050ea20, 0x19ff: 0x4050ec20, - // Block 0x68, offset 0x1a00 - 0x1a00: 0x4050ee20, 0x1a01: 0x4050f020, 0x1a02: 0x4050f220, 0x1a03: 0x4050f420, - 0x1a04: 0x4050f620, 0x1a05: 0x4050f820, 0x1a06: 0x4050fa20, 0x1a07: 0x4050fc20, - 0x1a08: 0x4050fe20, 0x1a09: 0x40510020, - 0x1a10: 0xe0000191, 0x1a11: 0xe0000222, 0x1a12: 0xe000033d, 0x1a13: 0xe0000417, - 0x1a14: 0xe00004ec, 0x1a15: 0xe00005b6, 0x1a16: 0xe0000681, 0x1a17: 0xe0000729, - 0x1a18: 0xe00007d5, 0x1a19: 0xe000087a, 0x1a1a: 0xe0000225, - 0x1a1e: 0xe0002022, 0x1a1f: 0xe0002025, - 0x1a20: 0x4007b220, 0x1a21: 0x4007b420, 0x1a22: 0x4007b620, 0x1a23: 0x4007b820, - 0x1a24: 0x4007ba20, 0x1a25: 0x4007bc20, 0x1a26: 0x4007be20, 0x1a27: 0x4007c020, - 0x1a28: 0x4007c220, 0x1a29: 0x4007c420, 0x1a2a: 0x4007c620, 0x1a2b: 0x4007c820, - 0x1a2c: 0x4007ca20, 0x1a2d: 0x4007cc20, 0x1a2e: 0x4007ce20, 0x1a2f: 0x4007d020, - 0x1a30: 0x4007d220, 0x1a31: 0x4007d420, 0x1a32: 0x4007d620, 0x1a33: 0x4007d820, - 0x1a34: 0x4007da20, 0x1a35: 0x4007dc20, 0x1a36: 0x4007de20, 0x1a37: 0x4007e020, - 0x1a38: 0x4007e220, 0x1a39: 0x4007e420, 0x1a3a: 0x4007e620, 0x1a3b: 0x4007e820, - 0x1a3c: 0x4007ea20, 0x1a3d: 0x4007ec20, 0x1a3e: 0x4007ee20, 0x1a3f: 0x4007f020, - // Block 0x69, offset 0x1a40 - 0x1a40: 0x404d1420, 0x1a41: 0x404d1620, 0x1a42: 0x404d1820, 0x1a43: 0x404d1a20, - 0x1a44: 0x404d1c20, 0x1a45: 0x404d1e20, 0x1a46: 0x404d2020, 0x1a47: 0x404d2220, - 0x1a48: 0x404d2420, 0x1a49: 0x404d2620, 0x1a4a: 0x404d2820, 0x1a4b: 0x404d2a20, - 0x1a4c: 0x404d2c20, 0x1a4d: 0x404d2e20, 0x1a4e: 0x404d3020, 0x1a4f: 0x404d3220, - 0x1a50: 0x404d3420, 0x1a51: 0x404d3620, 0x1a52: 0x404d3820, 0x1a53: 0x404d3a20, - 0x1a54: 0x404d3c20, 0x1a55: 0x404d3e20, 0x1a56: 0x404d4020, 0x1a57: 0x82e626a1, - 0x1a58: 0x82dc26a2, 0x1a59: 0x404d4620, 0x1a5a: 0x404d4820, 0x1a5b: 0x404d4a20, - 0x1a5e: 0x40036620, 0x1a5f: 0x40036820, - 0x1a60: 0x40510220, 0x1a61: 0x40510420, 0x1a62: 0x40510620, 0x1a63: 0x40510820, - 0x1a64: 0x40510a20, 0x1a65: 0x40510c20, 0x1a66: 0x40510e20, 0x1a67: 0x40511020, - 0x1a68: 0x40511220, 0x1a69: 0x40511420, 0x1a6a: 0x40511620, 0x1a6b: 0x40511820, - 0x1a6c: 0x40511a20, 0x1a6d: 0x40511c20, 0x1a6e: 0x40511e20, 0x1a6f: 0x40512020, - 0x1a70: 0x40512220, 0x1a71: 0x40512420, 0x1a72: 0x40512620, 0x1a73: 0x40512820, - 0x1a74: 0x40512a20, 0x1a75: 0x40512c20, 0x1a76: 0x40512e20, 0x1a77: 0x40513020, - 0x1a78: 0x40513220, 0x1a79: 0x40513420, 0x1a7a: 0x40513620, 0x1a7b: 0x40513820, - 0x1a7c: 0x40513a20, 0x1a7d: 0x40513c20, 0x1a7e: 0x40513e20, 0x1a7f: 0x40514020, - // Block 0x6a, offset 0x1a80 - 0x1a80: 0x40514220, 0x1a81: 0x40514420, 0x1a82: 0x40514620, 0x1a83: 0x40514820, - 0x1a84: 0x40514a20, 0x1a85: 0x40514c20, 0x1a86: 0x40514e20, 0x1a87: 0x40515020, - 0x1a88: 0x40515220, 0x1a89: 0x40515420, 0x1a8a: 0x40515620, 0x1a8b: 0x40515820, - 0x1a8c: 0x40515a20, 0x1a8d: 0x40516c20, 0x1a8e: 0x40516e20, 0x1a8f: 0x40517020, - 0x1a90: 0x40517220, 0x1a91: 0x40517420, 0x1a92: 0x40517620, 0x1a93: 0x40515c20, - 0x1a94: 0xe0002029, 0x1a95: 0x40516020, 0x1a96: 0x40516220, 0x1a97: 0x40516420, - 0x1a98: 0x00510e84, 0x1a99: 0x00510e84, 0x1a9a: 0x00513884, 0x1a9b: 0x00513884, - 0x1a9c: 0x40516620, 0x1a9d: 0x40516820, 0x1a9e: 0x40516a20, - 0x1aa0: 0x820928cd, 0x1aa1: 0x40517820, 0x1aa2: 0x40517c20, 0x1aa3: 0x40517e20, - 0x1aa4: 0x00517e84, 0x1aa5: 0x40518020, 0x1aa6: 0x40518220, 0x1aa7: 0x40518420, - 0x1aa8: 0x40518620, 0x1aa9: 0x40518820, 0x1aaa: 0x40518a20, 0x1aab: 0x40515e20, - 0x1aac: 0x40517a20, 0x1aad: 0x40519820, 0x1aae: 0x40518c20, 0x1aaf: 0x40518e20, - 0x1ab0: 0x40519220, 0x1ab1: 0x40519420, 0x1ab2: 0x40519620, 0x1ab3: 0x40519020, - 0x1ab4: 0xa000f302, 0x1ab5: 0xae611702, 0x1ab6: 0xae611802, 0x1ab7: 0xae611902, - 0x1ab8: 0xae611a02, 0x1ab9: 0xae611b02, 0x1aba: 0xae611c02, 0x1abb: 0xae611d02, - 0x1abc: 0xae611e02, 0x1abf: 0xadc00000, - // Block 0x6b, offset 0x1ac0 - 0x1ac0: 0xe0000194, 0x1ac1: 0xe0000228, 0x1ac2: 0xe0000340, 0x1ac3: 0xe000041a, - 0x1ac4: 0xe00004ef, 0x1ac5: 0xe00005b9, 0x1ac6: 0xe0000684, 0x1ac7: 0xe000072c, - 0x1ac8: 0xe00007d8, 0x1ac9: 0xe000087d, - 0x1ad0: 0xe0000197, 0x1ad1: 0xe000022b, 0x1ad2: 0xe0000343, 0x1ad3: 0xe000041d, - 0x1ad4: 0xe00004f2, 0x1ad5: 0xe00005bc, 0x1ad6: 0xe0000687, 0x1ad7: 0xe000072f, - 0x1ad8: 0xe00007db, 0x1ad9: 0xe0000880, - 0x1ae0: 0x4005c220, 0x1ae1: 0x4005c420, 0x1ae2: 0x4005c620, 0x1ae3: 0x4005c820, - 0x1ae4: 0x4005ca20, 0x1ae5: 0x4005cc20, 0x1ae6: 0x4005ce20, 0x1ae7: 0x4027be20, - 0x1ae8: 0x40032a20, 0x1ae9: 0x40032c20, 0x1aea: 0x40032e20, 0x1aeb: 0x40033020, - 0x1aec: 0x4005d020, 0x1aed: 0x4005d220, - // Block 0x6c, offset 0x1b00 - 0x1b00: 0xa000f202, 0x1b01: 0xa000f202, 0x1b02: 0xa000f302, 0x1b03: 0xa000f702, - 0x1b04: 0xa000f402, 0x1b05: 0xc3190821, 0x1b06: 0x40522820, 0x1b07: 0xc31b0821, - 0x1b08: 0x40522c20, 0x1b09: 0xc31d0821, 0x1b0a: 0x40523020, 0x1b0b: 0xc31f0821, - 0x1b0c: 0x40523420, 0x1b0d: 0xc3210821, 0x1b0e: 0x40523820, 0x1b0f: 0x40523a20, - 0x1b10: 0x40523c20, 0x1b11: 0xc3230821, 0x1b12: 0x40524020, 0x1b13: 0x40524220, - 0x1b14: 0x40524820, 0x1b15: 0x40524a20, 0x1b16: 0x40524c20, 0x1b17: 0x40524e20, - 0x1b18: 0x40525020, 0x1b19: 0x40525220, 0x1b1a: 0x40525420, 0x1b1b: 0x40525620, - 0x1b1c: 0x40525820, 0x1b1d: 0x40525a20, 0x1b1e: 0x40525c20, 0x1b1f: 0x40525e20, - 0x1b20: 0x40526020, 0x1b21: 0x40526220, 0x1b22: 0x40526420, 0x1b23: 0x40526820, - 0x1b24: 0x40526a20, 0x1b25: 0x40526c20, 0x1b26: 0x40526e20, 0x1b27: 0x40527020, - 0x1b28: 0x40527420, 0x1b29: 0x40527620, 0x1b2a: 0x40527820, 0x1b2b: 0x40527a20, - 0x1b2c: 0x40527c20, 0x1b2d: 0x40527e20, 0x1b2e: 0x40528020, 0x1b2f: 0x40528220, - 0x1b30: 0x40528620, 0x1b31: 0x40528820, 0x1b32: 0x40528a20, 0x1b33: 0x40529020, - 0x1b34: 0xa070f102, 0x1b35: 0x40529220, 0x1b36: 0x40529420, 0x1b37: 0x40529620, - 0x1b38: 0x40529820, 0x1b39: 0x40529a20, 0x1b3a: 0xc3250821, 0x1b3b: 0x40529e20, - 0x1b3c: 0xc3270821, 0x1b3d: 0x4052a220, 0x1b3e: 0xc3290821, 0x1b3f: 0xc32b0821, - // Block 0x6d, offset 0x1b40 - 0x1b40: 0x4052a820, 0x1b41: 0x4052aa20, 0x1b42: 0xc32d0821, 0x1b43: 0x4052ae20, - 0x1b44: 0x82092958, 0x1b45: 0x40524420, 0x1b46: 0x40524620, 0x1b47: 0x40526620, - 0x1b48: 0x40527220, 0x1b49: 0x40528420, 0x1b4a: 0x40528c20, 0x1b4b: 0x40528e20, - 0x1b50: 0xe00001be, 0x1b51: 0xe0000252, 0x1b52: 0xe000036a, 0x1b53: 0xe0000444, - 0x1b54: 0xe0000519, 0x1b55: 0xe00005e3, 0x1b56: 0xe00006ae, 0x1b57: 0xe0000756, - 0x1b58: 0xe0000802, 0x1b59: 0xe00008a7, 0x1b5a: 0x40036a20, 0x1b5b: 0x40036c20, - 0x1b5c: 0x4002f620, 0x1b5d: 0x4002ae20, 0x1b5e: 0x40033220, 0x1b5f: 0x40033420, - 0x1b60: 0x40022020, 0x1b61: 0x4007f220, 0x1b62: 0x4007f420, 0x1b63: 0x4007f620, - 0x1b64: 0x4007f820, 0x1b65: 0x4007fa20, 0x1b66: 0x4007fc20, 0x1b67: 0x4007fe20, - 0x1b68: 0x40080020, 0x1b69: 0x40080220, 0x1b6a: 0x40080420, 0x1b6b: 0xae600000, - 0x1b6c: 0xadc00000, 0x1b6d: 0xae600000, 0x1b6e: 0xae600000, 0x1b6f: 0xae600000, - 0x1b70: 0xae600000, 0x1b71: 0xae600000, 0x1b72: 0xae600000, 0x1b73: 0xae600000, - 0x1b74: 0x40080620, 0x1b75: 0x40080820, 0x1b76: 0x40080a20, 0x1b77: 0x40080c20, - 0x1b78: 0x40080e20, 0x1b79: 0x40081020, 0x1b7a: 0x40081220, 0x1b7b: 0x40081420, - 0x1b7c: 0x40081620, - // Block 0x6e, offset 0x1b80 - 0x1b80: 0xa000f302, 0x1b81: 0xa000f902, 0x1b82: 0xa000f402, 0x1b83: 0x4047d420, - 0x1b84: 0x4047d620, 0x1b85: 0x4047d820, 0x1b86: 0x4047da20, 0x1b87: 0x4047dc20, - 0x1b88: 0x4047de20, 0x1b89: 0x4047e020, 0x1b8a: 0x4047e220, 0x1b8b: 0x4047e620, - 0x1b8c: 0x4047e820, 0x1b8d: 0x4047ea20, 0x1b8e: 0x4047ec20, 0x1b8f: 0x4047ee20, - 0x1b90: 0x4047f020, 0x1b91: 0x4047f220, 0x1b92: 0x4047f420, 0x1b93: 0x4047f620, - 0x1b94: 0x4047f820, 0x1b95: 0x4047fa20, 0x1b96: 0x4047fc20, 0x1b97: 0x4047fe20, - 0x1b98: 0x40480020, 0x1b99: 0x40480420, 0x1b9a: 0x40480820, 0x1b9b: 0x40480c20, - 0x1b9c: 0x40481220, 0x1b9d: 0x40481820, 0x1b9e: 0x40481c20, 0x1b9f: 0x40481e20, - 0x1ba0: 0x40482220, 0x1ba1: 0x40480a20, 0x1ba2: 0x40480e20, 0x1ba3: 0x40481420, - 0x1ba4: 0x40482420, 0x1ba5: 0x40482620, 0x1ba6: 0x40482820, 0x1ba7: 0x40482a20, - 0x1ba8: 0x40482c20, 0x1ba9: 0x40482e20, 0x1baa: 0x82092418, 0x1bab: 0x82092419, - 0x1bac: 0x40480620, 0x1bad: 0x40481a20, 0x1bae: 0x4047e420, 0x1baf: 0x40482020, - 0x1bb0: 0xe00001c4, 0x1bb1: 0xe0000258, 0x1bb2: 0xe0000370, 0x1bb3: 0xe000044a, - 0x1bb4: 0xe000051f, 0x1bb5: 0xe00005e9, 0x1bb6: 0xe00006b4, 0x1bb7: 0xe000075c, - 0x1bb8: 0xe0000808, 0x1bb9: 0xe00008ad, 0x1bba: 0x0047d484, 0x1bbb: 0x40481020, - 0x1bbc: 0x40481620, 0x1bbd: 0x40480220, 0x1bbe: 0x0047e299, 0x1bbf: 0x00480499, - // Block 0x6f, offset 0x1bc0 - 0x1bc0: 0x404d4c20, 0x1bc1: 0x004d4c84, 0x1bc2: 0x404d4e20, 0x1bc3: 0x004d4e84, - 0x1bc4: 0x004d4e84, 0x1bc5: 0x404d5020, 0x1bc6: 0x004d5084, 0x1bc7: 0x404d5220, - 0x1bc8: 0x004d5284, 0x1bc9: 0x404d5420, 0x1bca: 0x004d5484, 0x1bcb: 0x404d5620, - 0x1bcc: 0x004d5684, 0x1bcd: 0x004d5684, 0x1bce: 0x404d5820, 0x1bcf: 0x004d5884, - 0x1bd0: 0x404d5a20, 0x1bd1: 0x404d5c20, 0x1bd2: 0x404d5e20, 0x1bd3: 0x004d5e84, - 0x1bd4: 0x404d6020, 0x1bd5: 0x004d6084, 0x1bd6: 0x404d6220, 0x1bd7: 0x004d6284, - 0x1bd8: 0x404d6420, 0x1bd9: 0x004d6484, 0x1bda: 0x004d6484, 0x1bdb: 0x404d6620, - 0x1bdc: 0x004d6684, 0x1bdd: 0x404d6820, 0x1bde: 0x404d6a20, 0x1bdf: 0x004d6a84, - 0x1be0: 0x404d6c20, 0x1be1: 0x404d6e20, 0x1be2: 0x404d7020, 0x1be3: 0x404d7220, - 0x1be4: 0x404d7420, 0x1be5: 0x404d7620, 0x1be6: 0xa070f102, 0x1be7: 0x404d7820, - 0x1be8: 0x004d7884, 0x1be9: 0x404d7a20, 0x1bea: 0x404d7c20, 0x1beb: 0x004d7c84, - 0x1bec: 0x404d7e20, 0x1bed: 0x004d7e84, 0x1bee: 0x404d8020, 0x1bef: 0x004d8084, - 0x1bf0: 0x404d8220, 0x1bf1: 0x404d8420, 0x1bf2: 0x820926c3, 0x1bf3: 0x820926c4, - 0x1bfc: 0x4005ec20, 0x1bfd: 0x4005ee20, 0x1bfe: 0x4005f020, 0x1bff: 0x4005f220, - // Block 0x70, offset 0x1c00 - 0x1c00: 0x404b3620, 0x1c01: 0x404b3820, 0x1c02: 0x404b3a20, 0x1c03: 0x404b3c20, - 0x1c04: 0x404b3e20, 0x1c05: 0x404b4020, 0x1c06: 0x404b4220, 0x1c07: 0x404b4420, - 0x1c08: 0x404b4620, 0x1c09: 0x404b4820, 0x1c0a: 0x404b5020, 0x1c0b: 0x404b5220, - 0x1c0c: 0x404b5420, 0x1c0d: 0x404b5620, 0x1c0e: 0x404b5820, 0x1c0f: 0x404b5a20, - 0x1c10: 0x404b5c20, 0x1c11: 0x404b5e20, 0x1c12: 0x404b6020, 0x1c13: 0x404b6220, - 0x1c14: 0x404b6420, 0x1c15: 0x404b6620, 0x1c16: 0x404b6820, 0x1c17: 0x404b6a20, - 0x1c18: 0x404b6c20, 0x1c19: 0x404b6e20, 0x1c1a: 0x404b7020, 0x1c1b: 0x404b7420, - 0x1c1c: 0x404b7820, 0x1c1d: 0x404b7a20, 0x1c1e: 0x404b7c20, 0x1c1f: 0x404b7e20, - 0x1c20: 0x404b8020, 0x1c21: 0x404b8220, 0x1c22: 0x404b8420, 0x1c23: 0x404b8620, - 0x1c24: 0x404b7220, 0x1c25: 0x404b7620, 0x1c26: 0x404b8a20, 0x1c27: 0x404b8c20, - 0x1c28: 0x404b8e20, 0x1c29: 0x404b9020, 0x1c2a: 0x404b9220, 0x1c2b: 0x404b9420, - 0x1c2c: 0x404b9620, 0x1c2d: 0x404b9820, 0x1c2e: 0x404b9a20, 0x1c2f: 0x404b9c20, - 0x1c30: 0x404b9e20, 0x1c31: 0x404ba020, 0x1c32: 0x404ba220, 0x1c33: 0x404ba420, - 0x1c34: 0x404ba620, 0x1c35: 0x404ba820, 0x1c36: 0x404b8820, 0x1c37: 0xa070f102, - 0x1c3b: 0x40031420, - 0x1c3c: 0x40031620, 0x1c3d: 0x4005ae20, 0x1c3e: 0x4005b020, 0x1c3f: 0x4005b220, - // Block 0x71, offset 0x1c40 - 0x1c40: 0xe00001a6, 0x1c41: 0xe000023a, 0x1c42: 0xe0000352, 0x1c43: 0xe000042c, - 0x1c44: 0xe0000501, 0x1c45: 0xe00005cb, 0x1c46: 0xe0000696, 0x1c47: 0xe000073e, - 0x1c48: 0xe00007ea, 0x1c49: 0xe000088f, - 0x1c4d: 0x404b4a20, 0x1c4e: 0x404b4c20, 0x1c4f: 0x404b4e20, - 0x1c50: 0xe00001ca, 0x1c51: 0xe000025e, 0x1c52: 0xe0000376, 0x1c53: 0xe0000450, - 0x1c54: 0xe0000525, 0x1c55: 0xe00005ef, 0x1c56: 0xe00006ba, 0x1c57: 0xe0000762, - 0x1c58: 0xe000080e, 0x1c59: 0xe00008b3, 0x1c5a: 0x40542e20, 0x1c5b: 0x40543020, - 0x1c5c: 0x40543220, 0x1c5d: 0x40543420, 0x1c5e: 0x40543620, 0x1c5f: 0x40543820, - 0x1c60: 0x40543a20, 0x1c61: 0x40543c20, 0x1c62: 0x40543e20, 0x1c63: 0x40544020, - 0x1c64: 0x40544220, 0x1c65: 0x40544420, 0x1c66: 0x40544620, 0x1c67: 0x40544820, - 0x1c68: 0x40544a20, 0x1c69: 0x40544c20, 0x1c6a: 0x40544e20, 0x1c6b: 0x40545020, - 0x1c6c: 0x40545220, 0x1c6d: 0x40545420, 0x1c6e: 0x40545620, 0x1c6f: 0x40545820, - 0x1c70: 0x40545a20, 0x1c71: 0x40545c20, 0x1c72: 0x40545e20, 0x1c73: 0x40546020, - 0x1c74: 0x40546220, 0x1c75: 0x40546420, 0x1c76: 0x40546620, 0x1c77: 0x40546820, - 0x1c78: 0x40546a20, 0x1c79: 0x40546c20, 0x1c7a: 0x40546e20, 0x1c7b: 0x40547020, - 0x1c7c: 0x40547220, 0x1c7d: 0x40547420, 0x1c7e: 0x40035820, 0x1c7f: 0x40035a20, - // Block 0x72, offset 0x1c80 - 0x1c80: 0x4005d620, 0x1c81: 0x4005d820, 0x1c82: 0x4005da20, 0x1c83: 0x4005dc20, - 0x1c84: 0x4005de20, 0x1c85: 0x4005e020, 0x1c86: 0x4005e220, 0x1c87: 0x4005e420, - 0x1c90: 0xae600000, 0x1c91: 0xae600000, 0x1c92: 0xae600000, 0x1c93: 0xa0000000, - 0x1c94: 0xa0100000, 0x1c95: 0xadc00000, 0x1c96: 0xadc00000, 0x1c97: 0xadc00000, - 0x1c98: 0xadc00000, 0x1c99: 0xadc00000, 0x1c9a: 0xae600000, 0x1c9b: 0xae600000, - 0x1c9c: 0xadc00000, 0x1c9d: 0xadc00000, 0x1c9e: 0xadc00000, 0x1c9f: 0xadc00000, - 0x1ca0: 0xae600000, 0x1ca1: 0xa0000000, 0x1ca2: 0xa0100000, 0x1ca3: 0xa0100000, - 0x1ca4: 0xa0100000, 0x1ca5: 0xa0100000, 0x1ca6: 0xa0100000, 0x1ca7: 0xa0100000, - 0x1ca8: 0xa0100000, 0x1ca9: 0x40404020, 0x1caa: 0x00404084, 0x1cab: 0x00404084, - 0x1cac: 0x00404084, 0x1cad: 0xadc0f302, 0x1cae: 0x00404084, 0x1caf: 0x00404084, - 0x1cb0: 0x00404084, 0x1cb1: 0x00404084, 0x1cb2: 0xa000f402, 0x1cb3: 0xa000f402, - 0x1cb4: 0xae600000, 0x1cb5: 0x40404220, 0x1cb6: 0x40404420, - // Block 0x73, offset 0x1cc0 - 0x1cc0: 0x402be620, 0x1cc1: 0x402bec20, 0x1cc2: 0x402bee20, 0x1cc3: 0x402c2420, - 0x1cc4: 0x402c4220, 0x1cc5: 0x402c6a20, 0x1cc6: 0x402c6c20, 0x1cc7: 0x402ca020, - 0x1cc8: 0x402ce620, 0x1cc9: 0x402db420, 0x1cca: 0x402ddc20, 0x1ccb: 0x402e0620, - 0x1ccc: 0x402e3420, 0x1ccd: 0x402e8a20, 0x1cce: 0x402eb020, 0x1ccf: 0x402eea20, - 0x1cd0: 0x402f0220, 0x1cd1: 0x402eec20, 0x1cd2: 0x402f0420, 0x1cd3: 0x402ef820, - 0x1cd4: 0x402ef620, 0x1cd5: 0x402f2a20, 0x1cd6: 0x402f0a20, 0x1cd7: 0x402f0c20, - 0x1cd8: 0x402f3420, 0x1cd9: 0x402f8c20, 0x1cda: 0x402fa020, 0x1cdb: 0x40303420, - 0x1cdc: 0x40307420, 0x1cdd: 0x40307620, 0x1cde: 0x40307820, 0x1cdf: 0x4030aa20, - 0x1ce0: 0x4030c620, 0x1ce1: 0x4030ea20, 0x1ce2: 0x40313220, 0x1ce3: 0x40316c20, - 0x1ce4: 0x4031f420, 0x1ce5: 0x4031f620, 0x1ce6: 0x40325820, 0x1ce7: 0x40327420, - 0x1ce8: 0x40328020, 0x1ce9: 0x40328a20, 0x1cea: 0x4032a020, 0x1ceb: 0x40348c20, - 0x1cec: 0x002bde9d, 0x1ced: 0xe00009e1, 0x1cee: 0x002c0a9d, 0x1cef: 0x402c2220, - 0x1cf0: 0x002c629d, 0x1cf1: 0x002c989d, 0x1cf2: 0x002cae9d, 0x1cf3: 0x002d229d, - 0x1cf4: 0x002d689d, 0x1cf5: 0x002d9a9d, 0x1cf6: 0x002dcc9d, 0x1cf7: 0x002dfe9d, - 0x1cf8: 0x002e229d, 0x1cf9: 0x002e829d, 0x1cfa: 0x002e9e9d, 0x1cfb: 0x402eae20, - 0x1cfc: 0x002ee29d, 0x1cfd: 0x002f229d, 0x1cfe: 0x002f2c9d, 0x1cff: 0x002f7a9d, - // Block 0x74, offset 0x1d00 - 0x1d00: 0x00302c9d, 0x1d01: 0x00306c9d, 0x1d02: 0x0030e29d, 0x1d03: 0x002bde94, - 0x1d04: 0x002bf094, 0x1d05: 0x002bf894, 0x1d06: 0x002bee94, 0x1d07: 0x002c0a94, - 0x1d08: 0x002c6294, 0x1d09: 0x002c9894, 0x1d0a: 0x002cb894, 0x1d0b: 0x002cc294, - 0x1d0c: 0x002ce694, 0x1d0d: 0x002d2294, 0x1d0e: 0x002db494, 0x1d0f: 0x002dfe94, - 0x1d10: 0x002e8294, 0x1d11: 0x002eda94, 0x1d12: 0x002ee294, 0x1d13: 0x002efa94, - 0x1d14: 0x002f0a94, 0x1d15: 0x002f0c94, 0x1d16: 0x002f2c94, 0x1d17: 0x00302c94, - 0x1d18: 0x00306c94, 0x1d19: 0x00307694, 0x1d1a: 0x0030a094, 0x1d1b: 0x0030be94, - 0x1d1c: 0x0031f694, 0x1d1d: 0x00325494, 0x1d1e: 0x00325694, 0x1d1f: 0x00325a94, - 0x1d20: 0x00329a94, 0x1d21: 0x00329c94, 0x1d22: 0x002d9a95, 0x1d23: 0x002f7a95, - 0x1d24: 0x00306c95, 0x1d25: 0x0030be95, 0x1d26: 0x00325495, 0x1d27: 0x00325695, - 0x1d28: 0x00328895, 0x1d29: 0x00329a95, 0x1d2a: 0x00329c95, 0x1d2b: 0x40307a20, - 0x1d2c: 0x402c2620, 0x1d2d: 0x402c6e20, 0x1d2e: 0x402d1220, 0x1d2f: 0x402e8c20, - 0x1d30: 0x402eb220, 0x1d31: 0x402f3a20, 0x1d32: 0x402f9620, 0x1d33: 0x402fce20, - 0x1d34: 0x402ff020, 0x1d35: 0x40304020, 0x1d36: 0x40313c20, 0x1d37: 0x402d5420, - 0x1d38: 0x0034ba94, 0x1d39: 0xe0000bd9, 0x1d3a: 0xe0000fc1, 0x1d3b: 0x402dbe20, - 0x1d3c: 0x402dca20, 0x1d3d: 0x402f3620, 0x1d3e: 0x40308420, 0x1d3f: 0x4030bc20, - // Block 0x75, offset 0x1d40 - 0x1d40: 0x402c2820, 0x1d41: 0x402c7020, 0x1d42: 0x402d1420, 0x1d43: 0x402d4220, - 0x1d44: 0x402e0820, 0x1d45: 0x402e5220, 0x1d46: 0x402e8e20, 0x1d47: 0x402ec620, - 0x1d48: 0x402f3c20, 0x1d49: 0x402faa20, 0x1d4a: 0x402ff220, 0x1d4b: 0x40301020, - 0x1d4c: 0x4030ca20, 0x1d4d: 0x4030fe20, 0x1d4e: 0x40313e20, 0x1d4f: 0x402bea20, - 0x1d50: 0x402c0020, 0x1d51: 0x402c8220, 0x1d52: 0x402caa20, 0x1d53: 0x402cca20, - 0x1d54: 0x402ce420, 0x1d55: 0x402cc020, 0x1d56: 0x402dc020, 0x1d57: 0x402f0620, - 0x1d58: 0x40302220, 0x1d59: 0x40308620, 0x1d5a: 0x40317620, 0x1d5b: 0x002c0294, - 0x1d5c: 0x002c3a94, 0x1d5d: 0x002c5694, 0x1d5e: 0xf0001414, 0x1d5f: 0x002cdc94, - 0x1d60: 0x002d0894, 0x1d61: 0x002dee94, 0x1d62: 0x002d2a94, 0x1d63: 0x00308894, - 0x1d64: 0x002db694, 0x1d65: 0x002dc294, 0x1d66: 0x002daa94, 0x1d67: 0x002dbe94, - 0x1d68: 0x002de694, 0x1d69: 0x002e5494, 0x1d6a: 0x002e5294, 0x1d6b: 0x002e2a94, - 0x1d6c: 0x002e9094, 0x1d6d: 0x0030ac94, 0x1d6e: 0x002eb494, 0x1d6f: 0x002ec894, - 0x1d70: 0x002ea694, 0x1d71: 0x002f1094, 0x1d72: 0x002f4c94, 0x1d73: 0x002ff494, - 0x1d74: 0x00300894, 0x1d75: 0x00304294, 0x1d76: 0x00307c94, 0x1d77: 0x0030b494, - 0x1d78: 0x00307494, 0x1d79: 0x0030cc94, 0x1d7a: 0x0030da94, 0x1d7b: 0x00312a94, - 0x1d7c: 0x00314894, 0x1d7d: 0x00315094, 0x1d7e: 0x00316494, 0x1d7f: 0x00326a94, - // Block 0x76, offset 0x1d80 - 0x1d80: 0xae605f02, 0x1d81: 0xae605f02, 0x1d82: 0xadc06002, 0x1d83: 0xae605f02, - 0x1d84: 0xae605f02, 0x1d85: 0xae605f02, 0x1d86: 0xae605f02, 0x1d87: 0xae605f02, - 0x1d88: 0xae605f02, 0x1d89: 0xae605f02, 0x1d8a: 0x84dc17bd, 0x1d8b: 0xae605f02, - 0x1d8c: 0xae605f02, 0x1d8d: 0xaea05f02, 0x1d8e: 0xad605f02, 0x1d8f: 0xadc06002, - 0x1d90: 0xaca06002, 0x1d91: 0xae605f02, 0x1d92: 0x84e618d1, 0x1d93: 0xe00009b4, - 0x1d94: 0xe00009d9, 0x1d95: 0xe00009f9, 0x1d96: 0xe0000a08, 0x1d97: 0xe0000a50, - 0x1d98: 0xe0000ab6, 0x1d99: 0xe0000ab0, 0x1d9a: 0x84e61691, 0x1d9b: 0x84e61699, - 0x1d9c: 0x84e616ff, 0x1d9d: 0x84e61711, 0x1d9e: 0x84e61715, 0x1d9f: 0x84e61745, - 0x1da0: 0x84e6174f, 0x1da1: 0x84e61753, 0x1da2: 0x84e617c1, 0x1da3: 0x84e617c5, - 0x1da4: 0x84e617f3, 0x1da5: 0xe0000f67, 0x1da6: 0x84e61895, - 0x1dbc: 0xae906002, 0x1dbd: 0xadc06002, 0x1dbe: 0xae605f02, 0x1dbf: 0xadc06002, - // Block 0x77, offset 0x1dc0 - 0x1dc0: 0xe00009b1, 0x1dc1: 0xe00009ae, 0x1dc2: 0xe0000a22, 0x1dc3: 0xe0000a1f, - 0x1dc4: 0xe0000a28, 0x1dc5: 0xe0000a25, 0x1dc6: 0xe0000a2e, 0x1dc7: 0xe0000a2b, - 0x1dc8: 0xe0000a5a, 0x1dc9: 0xe0000a56, 0x1dca: 0xe0000a8c, 0x1dcb: 0xe0000a89, - 0x1dcc: 0xe0000a98, 0x1dcd: 0xe0000a95, 0x1dce: 0xe0000aa4, 0x1dcf: 0xe0000aa1, - 0x1dd0: 0xe0000a92, 0x1dd1: 0xe0000a8f, 0x1dd2: 0xe0000a9e, 0x1dd3: 0xe0000a9b, - 0x1dd4: 0xe0000b55, 0x1dd5: 0xe0000b51, 0x1dd6: 0xe0000b4d, 0x1dd7: 0xe0000b49, - 0x1dd8: 0xe0000b7c, 0x1dd9: 0xe0000b79, 0x1dda: 0xe0000b82, 0x1ddb: 0xe0000b7f, - 0x1ddc: 0xe0000b39, 0x1ddd: 0xe0000b35, 0x1dde: 0xe0000b8c, 0x1ddf: 0xe0000b89, - 0x1de0: 0xe0000bd0, 0x1de1: 0xe0000bcd, 0x1de2: 0xe0000c00, 0x1de3: 0xe0000bfd, - 0x1de4: 0xe0000c0c, 0x1de5: 0xe0000c09, 0x1de6: 0xe0000bfa, 0x1de7: 0xe0000bf7, - 0x1de8: 0xe0000c06, 0x1de9: 0xe0000c03, 0x1dea: 0xe0000c12, 0x1deb: 0xe0000c0f, - 0x1dec: 0xe0000c7e, 0x1ded: 0xe0000c7b, 0x1dee: 0xe0000c4a, 0x1def: 0xe0000c46, - 0x1df0: 0xe0000c93, 0x1df1: 0xe0000c90, 0x1df2: 0xe0000cab, 0x1df3: 0xe0000ca8, - 0x1df4: 0xe0000cb1, 0x1df5: 0xe0000cae, 0x1df6: 0xe0000cde, 0x1df7: 0xe0000cdb, - 0x1df8: 0xe0000ce5, 0x1df9: 0xe0000ce1, 0x1dfa: 0xe0000cf2, 0x1dfb: 0xe0000cef, - 0x1dfc: 0xe0000cec, 0x1dfd: 0xe0000ce9, 0x1dfe: 0xe0000d1e, 0x1dff: 0xe0000d1b, - // Block 0x78, offset 0x1e00 - 0x1e00: 0xe0000d24, 0x1e01: 0xe0000d21, 0x1e02: 0xe0000d2a, 0x1e03: 0xe0000d27, - 0x1e04: 0xe0000d69, 0x1e05: 0xe0000d66, 0x1e06: 0xe0000d7b, 0x1e07: 0xe0000d78, - 0x1e08: 0xe0000d87, 0x1e09: 0xe0000d84, 0x1e0a: 0xe0000d81, 0x1e0b: 0xe0000d7e, - 0x1e0c: 0xe0000ded, 0x1e0d: 0xe0000de9, 0x1e0e: 0xe0000df5, 0x1e0f: 0xe0000df1, - 0x1e10: 0xe0000e3d, 0x1e11: 0xe0000e39, 0x1e12: 0xe0000e35, 0x1e13: 0xe0000e31, - 0x1e14: 0xe0000ea7, 0x1e15: 0xe0000ea4, 0x1e16: 0xe0000ead, 0x1e17: 0xe0000eaa, - 0x1e18: 0xe0000ed6, 0x1e19: 0xe0000ed3, 0x1e1a: 0xe0000ef4, 0x1e1b: 0xe0000ef1, - 0x1e1c: 0xe0000efb, 0x1e1d: 0xe0000ef7, 0x1e1e: 0xe0000f02, 0x1e1f: 0xe0000eff, - 0x1e20: 0xe0000f41, 0x1e21: 0xe0000f3e, 0x1e22: 0xe0000f53, 0x1e23: 0xe0000f50, - 0x1e24: 0xe0000f26, 0x1e25: 0xe0000f22, 0x1e26: 0xe0000f3a, 0x1e27: 0xe0000f36, - 0x1e28: 0xe0000f5a, 0x1e29: 0xe0000f56, 0x1e2a: 0xe0000f93, 0x1e2b: 0xe0000f90, - 0x1e2c: 0xe0000f9f, 0x1e2d: 0xe0000f9c, 0x1e2e: 0xe0000fb1, 0x1e2f: 0xe0000fae, - 0x1e30: 0xe0000fab, 0x1e31: 0xe0000fa8, 0x1e32: 0xe0001093, 0x1e33: 0xe0001090, - 0x1e34: 0xe000109f, 0x1e35: 0xe000109c, 0x1e36: 0xe0001099, 0x1e37: 0xe0001096, - 0x1e38: 0xe0001032, 0x1e39: 0xe000102e, 0x1e3a: 0xe0001046, 0x1e3b: 0xe0001042, - 0x1e3c: 0xe00010a9, 0x1e3d: 0xe00010a6, 0x1e3e: 0xe00010af, 0x1e3f: 0xe00010ac, - // Block 0x79, offset 0x1e40 - 0x1e40: 0xe00010d2, 0x1e41: 0xe00010cf, 0x1e42: 0xe00010cc, 0x1e43: 0xe00010c9, - 0x1e44: 0xe00010e1, 0x1e45: 0xe00010de, 0x1e46: 0xe00010e7, 0x1e47: 0xe00010e4, - 0x1e48: 0xe00010ed, 0x1e49: 0xe00010ea, 0x1e4a: 0xe00010fc, 0x1e4b: 0xe00010f9, - 0x1e4c: 0xe00010f6, 0x1e4d: 0xe00010f3, 0x1e4e: 0xe0001123, 0x1e4f: 0xe0001120, - 0x1e50: 0xe0001141, 0x1e51: 0xe000113e, 0x1e52: 0xe0001153, 0x1e53: 0xe0001150, - 0x1e54: 0xe0001159, 0x1e55: 0xe0001156, 0x1e56: 0xe0000c15, 0x1e57: 0xe0000f8d, - 0x1e58: 0xe00010db, 0x1e59: 0xe0001111, 0x1e5a: 0xf0000404, 0x1e5b: 0xe0000f70, - 0x1e5c: 0x40300420, 0x1e5d: 0x40300620, 0x1e5e: 0xe0000f7f, 0x1e5f: 0x402c9620, - 0x1e60: 0xe000099b, 0x1e61: 0xe0000998, 0x1e62: 0xe0000989, 0x1e63: 0xe0000986, - 0x1e64: 0xe0000928, 0x1e65: 0xe0000924, 0x1e66: 0xe0000930, 0x1e67: 0xe000092c, - 0x1e68: 0xe0000940, 0x1e69: 0xe000093c, 0x1e6a: 0xe0000938, 0x1e6b: 0xe0000934, - 0x1e6c: 0xe00009aa, 0x1e6d: 0xe00009a6, 0x1e6e: 0xe0000902, 0x1e6f: 0xe00008fe, - 0x1e70: 0xe000090a, 0x1e71: 0xe0000906, 0x1e72: 0xe000091a, 0x1e73: 0xe0000916, - 0x1e74: 0xe0000912, 0x1e75: 0xe000090e, 0x1e76: 0xe00009a2, 0x1e77: 0xe000099e, - 0x1e78: 0xe0000b6e, 0x1e79: 0xe0000b6b, 0x1e7a: 0xe0000b5c, 0x1e7b: 0xe0000b59, - 0x1e7c: 0xe0000b26, 0x1e7d: 0xe0000b23, 0x1e7e: 0xe0000afb, 0x1e7f: 0xe0000af7, - // Block 0x7a, offset 0x1e80 - 0x1e80: 0xe0000b03, 0x1e81: 0xe0000aff, 0x1e82: 0xe0000b13, 0x1e83: 0xe0000b0f, - 0x1e84: 0xe0000b0b, 0x1e85: 0xe0000b07, 0x1e86: 0xe0000b75, 0x1e87: 0xe0000b71, - 0x1e88: 0xe0000c66, 0x1e89: 0xe0000c63, 0x1e8a: 0xe0000c78, 0x1e8b: 0xe0000c75, - 0x1e8c: 0xe0000e84, 0x1e8d: 0xe0000e81, 0x1e8e: 0xe0000e44, 0x1e8f: 0xe0000e41, - 0x1e90: 0xe0000dad, 0x1e91: 0xe0000da9, 0x1e92: 0xe0000db5, 0x1e93: 0xe0000db1, - 0x1e94: 0xe0000dc5, 0x1e95: 0xe0000dc1, 0x1e96: 0xe0000dbd, 0x1e97: 0xe0000db9, - 0x1e98: 0xe0000e8b, 0x1e99: 0xe0000e87, 0x1e9a: 0xe0000e5d, 0x1e9b: 0xe0000e59, - 0x1e9c: 0xe0000e65, 0x1e9d: 0xe0000e61, 0x1e9e: 0xe0000e75, 0x1e9f: 0xe0000e71, - 0x1ea0: 0xe0000e6d, 0x1ea1: 0xe0000e69, 0x1ea2: 0xe0000e7d, 0x1ea3: 0xe0000e79, - 0x1ea4: 0xe000108d, 0x1ea5: 0xe000108a, 0x1ea6: 0xe000104d, 0x1ea7: 0xe000104a, - 0x1ea8: 0xe0001066, 0x1ea9: 0xe0001062, 0x1eaa: 0xe000106e, 0x1eab: 0xe000106a, - 0x1eac: 0xe000107e, 0x1ead: 0xe000107a, 0x1eae: 0xe0001076, 0x1eaf: 0xe0001072, - 0x1eb0: 0xe0001086, 0x1eb1: 0xe0001082, 0x1eb2: 0xe0001108, 0x1eb3: 0xe0001105, - 0x1eb4: 0xe0001135, 0x1eb5: 0xe0001132, 0x1eb6: 0xe000112f, 0x1eb7: 0xe000112c, - 0x1eb8: 0xe000111d, 0x1eb9: 0xe000111a, 0x1eba: 0xe0000d0a, 0x1ebb: 0xe0000d07, - 0x1ebc: 0x0030d888, 0x1ebd: 0x4030d820, 0x1ebe: 0x00312088, 0x1ebf: 0x40312020, - // Block 0x7b, offset 0x1ec0 - 0x1ec0: 0xe0001165, 0x1ec1: 0xe00011a9, 0x1ec2: 0xe000117d, 0x1ec3: 0xe00011c1, - 0x1ec4: 0xe000116b, 0x1ec5: 0xe00011af, 0x1ec6: 0xe000118f, 0x1ec7: 0xe00011d3, - 0x1ec8: 0xe0001168, 0x1ec9: 0xe00011ac, 0x1eca: 0xe0001181, 0x1ecb: 0xe00011c5, - 0x1ecc: 0xe000116f, 0x1ecd: 0xe00011b3, 0x1ece: 0xe0001193, 0x1ecf: 0xe00011d7, - 0x1ed0: 0xe000121a, 0x1ed1: 0xe0001230, 0x1ed2: 0xe0001228, 0x1ed3: 0xe000123e, - 0x1ed4: 0xe0001220, 0x1ed5: 0xe0001236, - 0x1ed8: 0xe000121d, 0x1ed9: 0xe0001233, 0x1eda: 0xe000122c, 0x1edb: 0xe0001242, - 0x1edc: 0xe0001224, 0x1edd: 0xe000123a, - 0x1ee0: 0xe0001252, 0x1ee1: 0xe0001296, 0x1ee2: 0xe000126a, 0x1ee3: 0xe00012ae, - 0x1ee4: 0xe0001258, 0x1ee5: 0xe000129c, 0x1ee6: 0xe000127c, 0x1ee7: 0xe00012c0, - 0x1ee8: 0xe0001255, 0x1ee9: 0xe0001299, 0x1eea: 0xe000126e, 0x1eeb: 0xe00012b2, - 0x1eec: 0xe000125c, 0x1eed: 0xe00012a0, 0x1eee: 0xe0001280, 0x1eef: 0xe00012c4, - 0x1ef0: 0xe00012fb, 0x1ef1: 0xe0001319, 0x1ef2: 0xe0001309, 0x1ef3: 0xe0001327, - 0x1ef4: 0xe0001301, 0x1ef5: 0xe000131f, 0x1ef6: 0xe0001311, 0x1ef7: 0xe000132f, - 0x1ef8: 0xe00012fe, 0x1ef9: 0xe000131c, 0x1efa: 0xe000130d, 0x1efb: 0xe000132b, - 0x1efc: 0xe0001305, 0x1efd: 0xe0001323, 0x1efe: 0xe0001315, 0x1eff: 0xe0001333, - // Block 0x7c, offset 0x1f00 - 0x1f00: 0xe000136c, 0x1f01: 0xe0001382, 0x1f02: 0xe000137a, 0x1f03: 0xe0001390, - 0x1f04: 0xe0001372, 0x1f05: 0xe0001388, - 0x1f08: 0xe000136f, 0x1f09: 0xe0001385, 0x1f0a: 0xe000137e, 0x1f0b: 0xe0001394, - 0x1f0c: 0xe0001376, 0x1f0d: 0xe000138c, - 0x1f10: 0xe00013ad, 0x1f11: 0xe00013bc, 0x1f12: 0xe00013b4, 0x1f13: 0xe00013ca, - 0x1f14: 0xe00013b0, 0x1f15: 0xe00013c2, 0x1f16: 0xe00013b8, 0x1f17: 0xe00013d2, - 0x1f19: 0xe00013bf, 0x1f1b: 0xe00013ce, - 0x1f1d: 0xe00013c6, 0x1f1f: 0xe00013d6, - 0x1f20: 0xe0001407, 0x1f21: 0xe000144b, 0x1f22: 0xe000141f, 0x1f23: 0xe0001463, - 0x1f24: 0xe000140d, 0x1f25: 0xe0001451, 0x1f26: 0xe0001431, 0x1f27: 0xe0001475, - 0x1f28: 0xe000140a, 0x1f29: 0xe000144e, 0x1f2a: 0xe0001423, 0x1f2b: 0xe0001467, - 0x1f2c: 0xe0001411, 0x1f2d: 0xe0001455, 0x1f2e: 0xe0001435, 0x1f2f: 0xe0001479, - 0x1f30: 0xe00011f7, 0x1f31: 0xe00011ed, 0x1f32: 0xe000124c, 0x1f33: 0xe0001246, - 0x1f34: 0xe00012e4, 0x1f35: 0xe00012da, 0x1f36: 0xe000133d, 0x1f37: 0xe0001337, - 0x1f38: 0xe000139e, 0x1f39: 0xe0001398, 0x1f3a: 0xe00013e0, 0x1f3b: 0xe00013da, - 0x1f3c: 0xe0001499, 0x1f3d: 0xe000148f, - // Block 0x7d, offset 0x1f40 - 0x1f40: 0xe00011a1, 0x1f41: 0xe00011e5, 0x1f42: 0xe0001185, 0x1f43: 0xe00011c9, - 0x1f44: 0xe0001173, 0x1f45: 0xe00011b7, 0x1f46: 0xe0001197, 0x1f47: 0xe00011db, - 0x1f48: 0xe00011a5, 0x1f49: 0xe00011e9, 0x1f4a: 0xe000118a, 0x1f4b: 0xe00011ce, - 0x1f4c: 0xe0001178, 0x1f4d: 0xe00011bc, 0x1f4e: 0xe000119c, 0x1f4f: 0xe00011e0, - 0x1f50: 0xe000128e, 0x1f51: 0xe00012d2, 0x1f52: 0xe0001272, 0x1f53: 0xe00012b6, - 0x1f54: 0xe0001260, 0x1f55: 0xe00012a4, 0x1f56: 0xe0001284, 0x1f57: 0xe00012c8, - 0x1f58: 0xe0001292, 0x1f59: 0xe00012d6, 0x1f5a: 0xe0001277, 0x1f5b: 0xe00012bb, - 0x1f5c: 0xe0001265, 0x1f5d: 0xe00012a9, 0x1f5e: 0xe0001289, 0x1f5f: 0xe00012cd, - 0x1f60: 0xe0001443, 0x1f61: 0xe0001487, 0x1f62: 0xe0001427, 0x1f63: 0xe000146b, - 0x1f64: 0xe0001415, 0x1f65: 0xe0001459, 0x1f66: 0xe0001439, 0x1f67: 0xe000147d, - 0x1f68: 0xe0001447, 0x1f69: 0xe000148b, 0x1f6a: 0xe000142c, 0x1f6b: 0xe0001470, - 0x1f6c: 0xe000141a, 0x1f6d: 0xe000145e, 0x1f6e: 0xe000143e, 0x1f6f: 0xe0001482, - 0x1f70: 0xe0001201, 0x1f71: 0xe000120e, 0x1f72: 0xe00011fd, 0x1f73: 0xe0001214, - 0x1f74: 0xe00011f3, 0x1f76: 0xe0001207, 0x1f77: 0xe000120a, - 0x1f78: 0xe0001204, 0x1f79: 0xe0001211, 0x1f7a: 0xe00011fa, 0x1f7b: 0xe00011f0, - 0x1f7c: 0xe0001217, 0x1f7d: 0x40063620, 0x1f7e: 0x40326c20, 0x1f7f: 0x40063620, - // Block 0x7e, offset 0x1f80 - 0x1f80: 0x40063a20, 0x1f81: 0xe00000b1, 0x1f82: 0xe00012ea, 0x1f83: 0xe00012f5, - 0x1f84: 0xe00012e0, 0x1f86: 0xe00012ee, 0x1f87: 0xe00012f1, - 0x1f88: 0xe000124f, 0x1f89: 0xe0001249, 0x1f8a: 0xe00012e7, 0x1f8b: 0xe00012dd, - 0x1f8c: 0xe00012f8, 0x1f8d: 0xe00000b7, 0x1f8e: 0xe00000b4, 0x1f8f: 0xe00000ba, - 0x1f90: 0xe0001343, 0x1f91: 0xe000135e, 0x1f92: 0xe0001356, 0x1f93: 0xe0001352, - 0x1f96: 0xe0001349, 0x1f97: 0xe000135a, - 0x1f98: 0xe0001346, 0x1f99: 0xe0001361, 0x1f9a: 0xe0001340, 0x1f9b: 0xe000133a, - 0x1f9d: 0xe00000c0, 0x1f9e: 0xe00000bd, 0x1f9f: 0xe00000c3, - 0x1fa0: 0xe00013e6, 0x1fa1: 0xe0001401, 0x1fa2: 0xe00013f9, 0x1fa3: 0xe00013f5, - 0x1fa4: 0xe00013a4, 0x1fa5: 0xe00013a7, 0x1fa6: 0xe00013ec, 0x1fa7: 0xe00013fd, - 0x1fa8: 0xe00013e9, 0x1fa9: 0xe0001404, 0x1faa: 0xe00013e3, 0x1fab: 0xe00013dd, - 0x1fac: 0xe00013aa, 0x1fad: 0xe00000ae, 0x1fae: 0xe00000ab, 0x1faf: 0x40061e20, - 0x1fb2: 0xe000149f, 0x1fb3: 0xe00014aa, - 0x1fb4: 0xe0001495, 0x1fb6: 0xe00014a3, 0x1fb7: 0xe00014a6, - 0x1fb8: 0xe00013a1, 0x1fb9: 0xe000139b, 0x1fba: 0xe000149c, 0x1fbb: 0xe0001492, - 0x1fbc: 0xe00014ad, 0x1fbd: 0x40062020, 0x1fbe: 0x40063820, - // Block 0x7f, offset 0x1fc0 - 0x1fc0: 0x00021284, 0x1fc1: 0x00021284, 0x1fc2: 0x00021284, 0x1fc3: 0x00021284, - 0x1fc4: 0x00021284, 0x1fc5: 0x00021284, 0x1fc6: 0x00021284, 0x1fc7: 0x0002129b, - 0x1fc8: 0x00021284, 0x1fc9: 0x00021284, 0x1fca: 0x00021284, 0x1fcb: 0xa0000000, - 0x1fcc: 0xa0000000, 0x1fcd: 0xa0000000, 0x1fce: 0xa0000000, 0x1fcf: 0xa0000000, - 0x1fd0: 0x40022620, 0x1fd1: 0x0002269b, 0x1fd2: 0x40022820, 0x1fd3: 0x40022a20, - 0x1fd4: 0x40022c20, 0x1fd5: 0x40022e20, 0x1fd6: 0x4004c420, 0x1fd7: 0x40021820, - 0x1fd8: 0x4003d420, 0x1fd9: 0x4003d620, 0x1fda: 0x4003d820, 0x1fdb: 0x4003da20, - 0x1fdc: 0x4003e220, 0x1fdd: 0x4003e420, 0x1fde: 0x4003e620, 0x1fdf: 0x4003e820, - 0x1fe0: 0x4004f820, 0x1fe1: 0x4004fa20, 0x1fe2: 0x40050220, 0x1fe3: 0x40050420, - 0x1fe4: 0x0002e484, 0x1fe5: 0xf0001f04, 0x1fe6: 0xf0000404, 0x1fe7: 0x40050620, - 0x1fe8: 0x40020e20, 0x1fe9: 0x40021020, 0x1fea: 0xa0000000, 0x1feb: 0xa0000000, - 0x1fec: 0xa0000000, 0x1fed: 0xa0000000, 0x1fee: 0xa0000000, 0x1fef: 0x0002129b, - 0x1ff0: 0x4004f020, 0x1ff1: 0x4004f420, 0x1ff2: 0x40050e20, 0x1ff3: 0xf0001f04, - 0x1ff4: 0xf0000404, 0x1ff5: 0x40051020, 0x1ff6: 0xf0001f04, 0x1ff7: 0xf0000404, - 0x1ff8: 0x40051620, 0x1ff9: 0x4003dc20, 0x1ffa: 0x4003de20, 0x1ffb: 0x40051820, - 0x1ffc: 0xf0001f04, 0x1ffd: 0x4002e020, 0x1ffe: 0x40021420, 0x1fff: 0x40051a20, - // Block 0x80, offset 0x2000 - 0x2000: 0x40051e20, 0x2001: 0x40052220, 0x2002: 0x40052420, 0x2003: 0x40050820, - 0x2004: 0x40095820, 0x2005: 0x40040c20, 0x2006: 0x40040e20, 0x2007: 0xf0001f04, - 0x2008: 0xf0001f04, 0x2009: 0xf0001f04, 0x200a: 0x4004e820, 0x200b: 0x4004d420, - 0x200c: 0x40050a20, 0x200d: 0x40050c20, 0x200e: 0x4004da20, 0x200f: 0x40026620, - 0x2010: 0x40052020, 0x2011: 0x4004dc20, 0x2012: 0x40095020, 0x2013: 0x40023420, - 0x2014: 0x40051c20, 0x2015: 0x40039c20, 0x2016: 0x40039e20, 0x2017: 0xe00000a6, - 0x2018: 0x4003a020, 0x2019: 0x4003a220, 0x201a: 0x4003a420, 0x201b: 0x4003a620, - 0x201c: 0x4003a820, 0x201d: 0x4003aa20, 0x201e: 0x4003ac20, 0x201f: 0x00021284, - 0x2020: 0xa0000000, 0x2021: 0xa0000000, 0x2022: 0xa0000000, 0x2023: 0xa0000000, - 0x2024: 0xa0000000, - 0x202a: 0xa0000000, 0x202b: 0xa0000000, - 0x202c: 0xa0000000, 0x202d: 0xa0000000, 0x202e: 0xa0000000, 0x202f: 0xa0000000, - 0x2030: 0x0029cc94, 0x2031: 0x002d9a94, - 0x2034: 0x0029d494, 0x2035: 0x0029d694, 0x2036: 0x0029d894, 0x2037: 0x0029da94, - 0x2038: 0x0029dc94, 0x2039: 0x0029de94, 0x203a: 0x00093894, 0x203b: 0x00094e94, - 0x203c: 0x00094294, 0x203d: 0x0003f494, 0x203e: 0x0003f694, 0x203f: 0x002e9e94, - // Block 0x81, offset 0x2040 - 0x2040: 0x0029cc95, 0x2041: 0x0029ce95, 0x2042: 0x0029d095, 0x2043: 0x0029d295, - 0x2044: 0x0029d495, 0x2045: 0x0029d695, 0x2046: 0x0029d895, 0x2047: 0x0029da95, - 0x2048: 0x0029dc95, 0x2049: 0x0029de95, 0x204a: 0x00093895, 0x204b: 0x00094e95, - 0x204c: 0x00094295, 0x204d: 0x0003f495, 0x204e: 0x0003f695, - 0x2050: 0x002bde95, 0x2051: 0x002c9895, 0x2052: 0x002ee295, 0x2053: 0x0030f695, - 0x2054: 0x002cb895, 0x2055: 0x002d6895, 0x2056: 0x002dfe95, 0x2057: 0x002e2295, - 0x2058: 0x002e8295, 0x2059: 0x002e9e95, 0x205a: 0x002f2c95, 0x205b: 0x002fe695, - 0x205c: 0x00302c95, - 0x2060: 0x4027f820, 0x2061: 0x4027fa20, 0x2062: 0x4027fc20, 0x2063: 0x4027fe20, - 0x2064: 0x40280020, 0x2065: 0x40280220, 0x2066: 0x40280420, 0x2067: 0x40280620, - 0x2068: 0x40282c20, 0x2069: 0x40280820, 0x206a: 0x40280a20, 0x206b: 0x40280c20, - 0x206c: 0x40280e20, 0x206d: 0x40281020, 0x206e: 0x40281220, 0x206f: 0x40281420, - 0x2070: 0x40281620, 0x2071: 0x40281820, 0x2072: 0x40281a20, 0x2073: 0x40281c20, - 0x2074: 0x40281e20, 0x2075: 0x40282020, 0x2076: 0x40282220, 0x2077: 0x40282420, - 0x2078: 0x40282620, 0x2079: 0x40282820, 0x207a: 0x40282a20, - // Block 0x82, offset 0x2080 - 0x2090: 0xae612a02, 0x2091: 0xae612b02, 0x2092: 0xa0112c02, 0x2093: 0xa0112c02, - 0x2094: 0xae612d02, 0x2095: 0xae612e02, 0x2096: 0xae612f02, 0x2097: 0xae613002, - 0x2098: 0xa0106102, 0x2099: 0xa0106102, 0x209a: 0xa0106102, 0x209b: 0xae613102, - 0x209c: 0xae613202, 0x209d: 0xa0006202, 0x209e: 0xa0006202, 0x209f: 0xa0006202, - 0x20a0: 0xa0006202, 0x20a1: 0xae613302, 0x20a2: 0xa0006202, 0x20a3: 0xa0006202, - 0x20a4: 0xa0006202, 0x20a5: 0xa0106102, 0x20a6: 0xa0113402, 0x20a7: 0xae613502, - 0x20a8: 0xadc13602, 0x20a9: 0xae613702, 0x20aa: 0xa0106102, 0x20ab: 0xa0106102, - 0x20ac: 0xadc06002, 0x20ad: 0xadc06002, 0x20ae: 0xadc06002, 0x20af: 0xadc06002, - 0x20b0: 0xae605f02, - // Block 0x83, offset 0x20c0 - 0x20c0: 0xe00009bc, 0x20c1: 0xe00009c0, 0x20c2: 0x002c3a8b, 0x20c3: 0xf0000a04, - 0x20c4: 0x40081c20, 0x20c5: 0xe0000a5e, 0x20c6: 0xe0000a62, 0x20c7: 0x002cc28a, - 0x20c8: 0x40081e20, 0x20c9: 0xf0000a04, 0x20ca: 0x002d2285, 0x20cb: 0x002d688b, - 0x20cc: 0x002d688b, 0x20cd: 0x002d688b, 0x20ce: 0x002d6885, 0x20cf: 0xf0000202, - 0x20d0: 0x002d9a8b, 0x20d1: 0x002d9a8b, 0x20d2: 0x002e228b, 0x20d3: 0x002e2285, - 0x20d4: 0x40082020, 0x20d5: 0x002e9e8b, 0x20d6: 0xf000040a, 0x20d7: 0x40082220, - 0x20d8: 0x40082420, 0x20d9: 0x002f2c8b, 0x20da: 0x002f568b, 0x20db: 0x002f7a8b, - 0x20dc: 0x002f7a8b, 0x20dd: 0x002f7a8b, 0x20de: 0x40082620, 0x20df: 0x40082820, - 0x20e0: 0xf0001414, 0x20e1: 0xe0000fbd, 0x20e2: 0xf0001414, 0x20e3: 0x40082a20, - 0x20e4: 0x00312a8b, 0x20e5: 0x40082c20, 0x20e6: 0x0032a288, 0x20e7: 0x40082e20, - 0x20e8: 0x00312a8b, 0x20e9: 0x40083020, 0x20ea: 0x002dfe88, 0x20eb: 0xe000094d, - 0x20ec: 0x002c0a8b, 0x20ed: 0x002c3a8b, 0x20ee: 0x40083220, 0x20ef: 0x002c9885, - 0x20f0: 0x002c988b, 0x20f1: 0x002d088b, 0x20f2: 0x002d1e88, 0x20f3: 0x002e828b, - 0x20f4: 0x002ee285, 0x20f5: 0x00389084, 0x20f6: 0x00389284, 0x20f7: 0x00389484, - 0x20f8: 0x00389684, 0x20f9: 0x002d9a85, 0x20fa: 0x40083420, 0x20fb: 0xe0000b95, - 0x20fc: 0x00327e85, 0x20fd: 0x00325685, 0x20fe: 0x0032568b, 0x20ff: 0x00327e8b, - // Block 0x84, offset 0x2100 - 0x2100: 0x00093685, 0x2101: 0x40083620, 0x2102: 0x40083820, 0x2103: 0x40083a20, - 0x2104: 0x40083c20, 0x2105: 0x002c628b, 0x2106: 0x002c6285, 0x2107: 0x002c9885, - 0x2108: 0x002d9a85, 0x2109: 0x002dcc85, 0x210a: 0x40083e20, 0x210b: 0x400a6e20, - 0x210c: 0x40084020, 0x210d: 0xe00009c4, 0x210e: 0x402d1e20, 0x210f: 0x40084220, - 0x2110: 0xe00002cb, 0x2111: 0xe00002d3, 0x2112: 0xe00002b2, 0x2113: 0xe00002bb, - 0x2114: 0xe00003cd, 0x2115: 0xe00002c3, 0x2116: 0xe00003d1, 0x2117: 0xe00004ab, - 0x2118: 0xe0000579, 0x2119: 0xe00002c7, 0x211a: 0xe0000640, 0x211b: 0xe00002cf, - 0x211c: 0xe00004af, 0x211d: 0xe0000644, 0x211e: 0xe0000798, 0x211f: 0xf0001e1e, - 0x2120: 0x002d9a8a, 0x2121: 0xf0001f0a, 0x2122: 0xf0000a0a, 0x2123: 0xf0001f0a, - 0x2124: 0x0030be8a, 0x2125: 0xf0001f0a, 0x2126: 0xf0000a0a, 0x2127: 0xe00010bb, - 0x2128: 0xf0001f0a, 0x2129: 0x0030f68a, 0x212a: 0xf0001f0a, 0x212b: 0xf0000a0a, - 0x212c: 0x002e228a, 0x212d: 0x002c3a8a, 0x212e: 0x002c628a, 0x212f: 0x002e828a, - 0x2130: 0x002d9a84, 0x2131: 0xf0001f04, 0x2132: 0xf0000404, 0x2133: 0xf0001f04, - 0x2134: 0x0030be84, 0x2135: 0xf0001f04, 0x2136: 0xf0000404, 0x2137: 0xe00010b6, - 0x2138: 0xf0001f04, 0x2139: 0x0030f684, 0x213a: 0xf0001f04, 0x213b: 0xf0000404, - 0x213c: 0x002e2284, 0x213d: 0x002c3a84, 0x213e: 0x002c6284, 0x213f: 0x002e8284, - // Block 0x85, offset 0x2140 - 0x2140: 0x40287c20, 0x2141: 0x40287e20, 0x2142: 0x40288020, 0x2143: 0x002c5e88, - 0x2144: 0x402c5e20, 0x2145: 0xe00006c9, 0x2146: 0x40288220, 0x2147: 0x40288420, - 0x2148: 0x40288620, 0x2149: 0xe00001e2, - 0x2150: 0x40084420, 0x2151: 0x40084820, 0x2152: 0x40084620, 0x2153: 0x40084a20, - 0x2154: 0x40084c20, 0x2155: 0x40084e20, 0x2156: 0x40085020, 0x2157: 0x40085220, - 0x2158: 0x40085420, 0x2159: 0x40085620, 0x215a: 0xe00000c6, 0x215b: 0xe00000c9, - 0x215c: 0x40085820, 0x215d: 0x40085a20, 0x215e: 0x40085c20, 0x215f: 0x40085e20, - 0x2160: 0x40086020, 0x2161: 0x40086220, 0x2162: 0x40086420, 0x2163: 0x40086620, - 0x2164: 0x40086820, 0x2165: 0x40086a20, 0x2166: 0x40086c20, 0x2167: 0x40086e20, - 0x2168: 0x40087020, 0x2169: 0x40087220, 0x216a: 0x40087420, 0x216b: 0x40087620, - 0x216c: 0x40087820, 0x216d: 0x40087a20, 0x216e: 0xe00000cc, 0x216f: 0x40087c20, - 0x2170: 0x40087e20, 0x2171: 0x40088020, 0x2172: 0x40088220, 0x2173: 0x40088420, - 0x2174: 0x40088620, 0x2175: 0x40088820, 0x2176: 0x40088a20, 0x2177: 0x40088c20, - 0x2178: 0x40088e20, 0x2179: 0x40089020, 0x217a: 0x40089220, 0x217b: 0x40089420, - 0x217c: 0x40089620, 0x217d: 0x40089820, 0x217e: 0x40089a20, 0x217f: 0x40089c20, - // Block 0x86, offset 0x2180 - 0x2180: 0x40089e20, 0x2181: 0x4008a020, 0x2182: 0x4008a220, 0x2183: 0x4008a420, - 0x2184: 0x4008a620, 0x2185: 0x4008a820, 0x2186: 0x4008aa20, 0x2187: 0x4008ac20, - 0x2188: 0x4008ae20, 0x2189: 0x4008b020, 0x218a: 0x4008b220, 0x218b: 0x4008b420, - 0x218c: 0x4008b620, 0x218d: 0xe00000cf, 0x218e: 0xe00000d5, 0x218f: 0xe00000d2, - 0x2190: 0x4008b820, 0x2191: 0x4008ba20, 0x2192: 0x4008bc20, 0x2193: 0x4008be20, - 0x2194: 0x4008c020, 0x2195: 0x4008c220, 0x2196: 0x4008c420, 0x2197: 0x4008c620, - 0x2198: 0x4008c820, 0x2199: 0x4008ca20, 0x219a: 0x4008cc20, 0x219b: 0x4008ce20, - 0x219c: 0x4008d020, 0x219d: 0x4008d220, 0x219e: 0x4008d420, 0x219f: 0x4008d620, - 0x21a0: 0x4008d820, 0x21a1: 0x4008da20, 0x21a2: 0x4008dc20, 0x21a3: 0x4008de20, - 0x21a4: 0x4008e020, 0x21a5: 0x4008e220, 0x21a6: 0x4008e420, 0x21a7: 0x4008e620, - 0x21a8: 0x4008e820, 0x21a9: 0x4008ea20, 0x21aa: 0x4008ec20, 0x21ab: 0x4008ee20, - 0x21ac: 0x4008f020, 0x21ad: 0x4008f220, 0x21ae: 0x4008f420, 0x21af: 0x4008f620, - 0x21b0: 0x4008f820, 0x21b1: 0x4008fa20, 0x21b2: 0x4008fc20, 0x21b3: 0x4008fe20, - 0x21b4: 0x40090020, 0x21b5: 0x40090220, 0x21b6: 0x40090420, 0x21b7: 0x40090620, - 0x21b8: 0x40090820, 0x21b9: 0x40090a20, 0x21ba: 0x40090c20, 0x21bb: 0x40090e20, - 0x21bc: 0x40091020, 0x21bd: 0x40091220, 0x21be: 0x40091420, 0x21bf: 0x40091620, - // Block 0x87, offset 0x21c0 - 0x21c0: 0x40091820, 0x21c1: 0x40091a20, 0x21c2: 0x40091c20, 0x21c3: 0x40091e20, - 0x21c4: 0xe00000d8, 0x21c5: 0x40092020, 0x21c6: 0x40092220, 0x21c7: 0x40092420, - 0x21c8: 0x40092620, 0x21c9: 0xe00000db, 0x21ca: 0x40092820, 0x21cb: 0x40092a20, - 0x21cc: 0xe00000de, 0x21cd: 0x40092c20, 0x21ce: 0x40093020, 0x21cf: 0x40093220, - 0x21d0: 0x40093420, 0x21d1: 0x40093620, 0x21d2: 0x40094e20, 0x21d3: 0x40095220, - 0x21d4: 0x40095420, 0x21d5: 0x40095620, 0x21d6: 0x40095a20, 0x21d7: 0x40095c20, - 0x21d8: 0x40095e20, 0x21d9: 0x40096020, 0x21da: 0x40096220, 0x21db: 0x40096420, - 0x21dc: 0x40096820, 0x21dd: 0x40096c20, 0x21de: 0x40096e20, 0x21df: 0x40097020, - 0x21e0: 0x40097220, 0x21e1: 0x40097420, 0x21e2: 0x40097620, 0x21e3: 0x40097820, - 0x21e4: 0xe00000ea, 0x21e5: 0x40097a20, 0x21e6: 0xe00000ed, 0x21e7: 0x40097c20, - 0x21e8: 0x40097e20, 0x21e9: 0x40098020, 0x21ea: 0x40098220, 0x21eb: 0x40098420, - 0x21ec: 0xf0001f04, 0x21ed: 0xf0000404, 0x21ee: 0x40098620, 0x21ef: 0xf0001f04, - 0x21f0: 0xf0000404, 0x21f1: 0x40098820, 0x21f2: 0x40098a20, 0x21f3: 0x40098c20, - 0x21f4: 0x40098e20, 0x21f5: 0x40099020, 0x21f6: 0x40099220, 0x21f7: 0x40099420, - 0x21f8: 0x40099620, 0x21f9: 0x40099820, 0x21fa: 0x40099a20, 0x21fb: 0x40099c20, - 0x21fc: 0x40099e20, 0x21fd: 0x4009a020, 0x21fe: 0x4009a220, 0x21ff: 0x4009a420, - // Block 0x88, offset 0x2200 - 0x2200: 0x4009a620, 0x2201: 0xe00000f5, 0x2202: 0x4009a820, 0x2203: 0x4009aa20, - 0x2204: 0xe00000f8, 0x2205: 0x4009ac20, 0x2206: 0x4009ae20, 0x2207: 0xe00000fb, - 0x2208: 0x4009b020, 0x2209: 0xe00000fe, 0x220a: 0x4009b220, 0x220b: 0x4009b420, - 0x220c: 0x4009b620, 0x220d: 0x4009b820, 0x220e: 0x4009ba20, 0x220f: 0x4009bc20, - 0x2210: 0x4009be20, 0x2211: 0x4009c020, 0x2212: 0x4009c220, 0x2213: 0x4009c420, - 0x2214: 0x4009c620, 0x2215: 0x4009c820, 0x2216: 0x4009ca20, 0x2217: 0x4009cc20, - 0x2218: 0x4009ce20, 0x2219: 0x4009d020, 0x221a: 0x4009d220, 0x221b: 0x4009d420, - 0x221c: 0x4009d620, 0x221d: 0x4009d820, 0x221e: 0x4009da20, 0x221f: 0x4009dc20, - 0x2220: 0xe00000e4, 0x2221: 0x4009de20, 0x2222: 0xe0000104, 0x2223: 0x4009e020, - 0x2224: 0x4009e220, 0x2225: 0x4009e420, 0x2226: 0x4009e620, 0x2227: 0x4009e820, - 0x2228: 0x4009ea20, 0x2229: 0x4009ec20, 0x222a: 0x4009ee20, 0x222b: 0x4009f020, - 0x222c: 0x4009f220, 0x222d: 0xe0000101, 0x222e: 0xe00000e1, 0x222f: 0xe00000e7, - 0x2230: 0xe0000107, 0x2231: 0xe000010a, 0x2232: 0x4009f420, 0x2233: 0x4009f620, - 0x2234: 0xe000010d, 0x2235: 0xe0000110, 0x2236: 0x4009f820, 0x2237: 0x4009fa20, - 0x2238: 0xe0000113, 0x2239: 0xe0000116, 0x223a: 0x4009fc20, 0x223b: 0x4009fe20, - 0x223c: 0x400a0020, 0x223d: 0x400a0220, 0x223e: 0x400a0420, 0x223f: 0x400a0620, - // Block 0x89, offset 0x2240 - 0x2240: 0xe0000119, 0x2241: 0xe000011c, 0x2242: 0x400a0820, 0x2243: 0x400a0a20, - 0x2244: 0xe0000125, 0x2245: 0xe0000128, 0x2246: 0x400a0c20, 0x2247: 0x400a0e20, - 0x2248: 0xe000012b, 0x2249: 0xe000012e, 0x224a: 0x400a1020, 0x224b: 0x400a1220, - 0x224c: 0x400a1420, 0x224d: 0x400a1620, 0x224e: 0x400a1820, 0x224f: 0x400a1a20, - 0x2250: 0x400a1c20, 0x2251: 0x400a1e20, 0x2252: 0x400a2020, 0x2253: 0x400a2220, - 0x2254: 0x400a2420, 0x2255: 0x400a2620, 0x2256: 0x400a2820, 0x2257: 0x400a2a20, - 0x2258: 0x400a2c20, 0x2259: 0x400a2e20, 0x225a: 0x400a3020, 0x225b: 0x400a3220, - 0x225c: 0x400a3420, 0x225d: 0x400a3620, 0x225e: 0x400a3820, 0x225f: 0x400a3a20, - 0x2260: 0x400a3c20, 0x2261: 0x400a3e20, 0x2262: 0x400a4020, 0x2263: 0x400a4220, - 0x2264: 0x400a4420, 0x2265: 0x400a4620, 0x2266: 0x400a4820, 0x2267: 0x400a4a20, - 0x2268: 0x400a4c20, 0x2269: 0x400a4e20, 0x226a: 0x400a5020, 0x226b: 0x400a5220, - 0x226c: 0xe0000137, 0x226d: 0xe000013a, 0x226e: 0xe000013d, 0x226f: 0xe0000140, - 0x2270: 0x400a5420, 0x2271: 0x400a5620, 0x2272: 0x400a5820, 0x2273: 0x400a5a20, - 0x2274: 0x400a5c20, 0x2275: 0x400a5e20, 0x2276: 0x400a6020, 0x2277: 0x400a6220, - 0x2278: 0x400a6420, 0x2279: 0x400a6620, 0x227a: 0x400a6820, 0x227b: 0x400a6a20, - 0x227c: 0x400a6c20, 0x227d: 0x400a7020, 0x227e: 0x400a7220, 0x227f: 0x400a7420, - // Block 0x8a, offset 0x2280 - 0x2280: 0x400a7620, 0x2281: 0x400a7820, 0x2282: 0x400a7a20, 0x2283: 0x400a7c20, - 0x2284: 0x400a7e20, 0x2285: 0x400a8020, 0x2286: 0x400a8220, 0x2287: 0x400a8420, - 0x2288: 0x400a8620, 0x2289: 0x400a8820, 0x228a: 0x400a8a20, 0x228b: 0x400a8c20, - 0x228c: 0x400a8e20, 0x228d: 0x400a9020, 0x228e: 0x400a9220, 0x228f: 0x400a9420, - 0x2290: 0x400a9620, 0x2291: 0x400a9820, 0x2292: 0x400a9a20, 0x2293: 0x400a9c20, - 0x2294: 0x400a9e20, 0x2295: 0x400aa020, 0x2296: 0x400aa220, 0x2297: 0x400aa420, - 0x2298: 0x400aa620, 0x2299: 0x400aa820, 0x229a: 0x400aaa20, 0x229b: 0x400aac20, - 0x229c: 0x400aae20, 0x229d: 0x400ab020, 0x229e: 0x400ab220, 0x229f: 0x400ab420, - 0x22a0: 0xe000011f, 0x22a1: 0xe0000122, 0x22a2: 0xe0000131, 0x22a3: 0xe0000134, - 0x22a4: 0x400ab620, 0x22a5: 0x400ab820, 0x22a6: 0x400aba20, 0x22a7: 0x400abc20, - 0x22a8: 0x400abe20, 0x22a9: 0x400ac020, 0x22aa: 0xe0000143, 0x22ab: 0xe0000146, - 0x22ac: 0xe0000149, 0x22ad: 0xe000014c, 0x22ae: 0x400ac220, 0x22af: 0x400ac420, - 0x22b0: 0x400ac620, 0x22b1: 0x400ac820, 0x22b2: 0x400aca20, 0x22b3: 0x400acc20, - 0x22b4: 0x400ace20, 0x22b5: 0x400ad020, 0x22b6: 0x400ad220, 0x22b7: 0x400ad420, - 0x22b8: 0x400ad620, 0x22b9: 0x400ad820, 0x22ba: 0x400ada20, 0x22bb: 0x400adc20, - 0x22bc: 0x400ade20, 0x22bd: 0x400ae020, 0x22be: 0x400ae220, 0x22bf: 0x400ae420, - // Block 0x8b, offset 0x22c0 - 0x22c0: 0x400ae620, 0x22c1: 0x400ae820, 0x22c2: 0x400aea20, 0x22c3: 0x400aec20, - 0x22c4: 0x400aee20, 0x22c5: 0x400af020, 0x22c6: 0x400af220, 0x22c7: 0x400af420, - 0x22c8: 0x400af620, 0x22c9: 0x400af820, 0x22ca: 0x400afa20, 0x22cb: 0x400afc20, - 0x22cc: 0x400afe20, 0x22cd: 0x400b0020, 0x22ce: 0x400b0220, 0x22cf: 0x400b0420, - 0x22d0: 0x400b0620, 0x22d1: 0x400b0820, 0x22d2: 0x400b0a20, 0x22d3: 0x400b0c20, - 0x22d4: 0x400b0e20, 0x22d5: 0x400b1020, 0x22d6: 0x400b1220, 0x22d7: 0x400b1420, - 0x22d8: 0x400b1620, 0x22d9: 0x400b1820, 0x22da: 0x400b1a20, 0x22db: 0x400b1c20, - 0x22dc: 0x400b1e20, 0x22dd: 0x400b2020, 0x22de: 0x400b2220, 0x22df: 0x400b2420, - 0x22e0: 0x400b2620, 0x22e1: 0x400b2820, 0x22e2: 0x400b2a20, 0x22e3: 0x400b2c20, - 0x22e4: 0x400b2e20, 0x22e5: 0x400b3020, 0x22e6: 0x400b3220, 0x22e7: 0x400b3420, - 0x22e8: 0x400b3620, 0x22e9: 0x40049c20, 0x22ea: 0x40049e20, 0x22eb: 0x400b3820, - 0x22ec: 0x400b3a20, 0x22ed: 0x400b3c20, 0x22ee: 0x400b3e20, 0x22ef: 0x400b4020, - 0x22f0: 0x400b4220, 0x22f1: 0x400b4420, 0x22f2: 0x400b4620, 0x22f3: 0x400b4820, - 0x22f4: 0x400b4a20, 0x22f5: 0x400b4c20, 0x22f6: 0x400b4e20, 0x22f7: 0x400b5020, - 0x22f8: 0x400b5220, 0x22f9: 0x400b5420, 0x22fa: 0x400b5620, 0x22fb: 0x400b5820, - 0x22fc: 0x400b5a20, 0x22fd: 0x400b5c20, 0x22fe: 0x400b5e20, 0x22ff: 0x400b6020, - // Block 0x8c, offset 0x2300 - 0x2300: 0x400b6220, 0x2301: 0x400b6420, 0x2302: 0x400b6620, 0x2303: 0x400b6820, - 0x2304: 0x400b6a20, 0x2305: 0x400b6c20, 0x2306: 0x400b6e20, 0x2307: 0x400b7020, - 0x2308: 0x400b7220, 0x2309: 0x400b7420, 0x230a: 0x400b7620, 0x230b: 0x400b7820, - 0x230c: 0x400b7a20, 0x230d: 0x400b7c20, 0x230e: 0x400b7e20, 0x230f: 0x400b8020, - 0x2310: 0x400b8220, 0x2311: 0x400b8420, 0x2312: 0x400b8620, 0x2313: 0x400b8820, - 0x2314: 0x400b8a20, 0x2315: 0x400b8c20, 0x2316: 0x400b8e20, 0x2317: 0x400b9020, - 0x2318: 0x400b9220, 0x2319: 0x400b9420, 0x231a: 0x400b9620, 0x231b: 0x400b9820, - 0x231c: 0x400b9a20, 0x231d: 0x400b9c20, 0x231e: 0x400b9e20, 0x231f: 0x400ba020, - 0x2320: 0x400ba220, 0x2321: 0x400ba420, 0x2322: 0x400ba620, 0x2323: 0x400ba820, - 0x2324: 0x400baa20, 0x2325: 0x400bac20, 0x2326: 0x400bae20, 0x2327: 0x400bb020, - 0x2328: 0x400bb220, 0x2329: 0x400bb420, 0x232a: 0x400bb620, 0x232b: 0x400bb820, - 0x232c: 0x400bba20, 0x232d: 0x400bbc20, 0x232e: 0x400bbe20, 0x232f: 0x400bc020, - 0x2330: 0x400bc220, 0x2331: 0x400bc420, 0x2332: 0x400bc620, 0x2333: 0x400bc820, - 0x2334: 0x400bca20, 0x2335: 0x400bcc20, 0x2336: 0x400bce20, 0x2337: 0x400bd020, - 0x2338: 0x400bd220, 0x2339: 0x400bd420, 0x233a: 0x400bd620, 0x233b: 0x400bd820, - 0x233c: 0x400bda20, 0x233d: 0x400bdc20, 0x233e: 0x400bde20, 0x233f: 0x400be020, - // Block 0x8d, offset 0x2340 - 0x2340: 0x400be220, 0x2341: 0x400be420, 0x2342: 0x400be620, 0x2343: 0x400be820, - 0x2344: 0x400bea20, 0x2345: 0x400bec20, 0x2346: 0x400bee20, 0x2347: 0x400bf020, - 0x2348: 0x400bf220, 0x2349: 0x400bf420, 0x234a: 0x400bf620, 0x234b: 0x400bf820, - 0x234c: 0x400bfa20, 0x234d: 0x400bfc20, 0x234e: 0x400bfe20, 0x234f: 0x400c0020, - 0x2350: 0x400c0220, 0x2351: 0x400c0420, 0x2352: 0x400c0620, 0x2353: 0x400c0820, - 0x2354: 0x400c0a20, 0x2355: 0x400c0c20, 0x2356: 0x400c0e20, 0x2357: 0x400c1020, - 0x2358: 0x400c1220, 0x2359: 0x400c1420, 0x235a: 0x400c1620, 0x235b: 0x400c1820, - 0x235c: 0x400c1a20, 0x235d: 0x400c1c20, 0x235e: 0x400c1e20, 0x235f: 0x400c2020, - 0x2360: 0x400c2220, 0x2361: 0x400c2420, 0x2362: 0x400c2620, 0x2363: 0x400c2820, - 0x2364: 0x400c2a20, 0x2365: 0x400c2c20, 0x2366: 0x400c2e20, 0x2367: 0x400c3020, - 0x2368: 0x400c3220, 0x2369: 0x400c3420, 0x236a: 0x400c3620, 0x236b: 0x400c3820, - 0x236c: 0x400c3a20, 0x236d: 0x400c3c20, 0x236e: 0x400c3e20, 0x236f: 0x400c4020, - 0x2370: 0x400c4220, 0x2371: 0x400c4420, 0x2372: 0x400c4620, 0x2373: 0x400c4820, - 0x2374: 0x400c4a20, 0x2375: 0x400c4c20, 0x2376: 0x400c4e20, 0x2377: 0x400c5020, - 0x2378: 0x400c5220, 0x2379: 0x400c5420, 0x237a: 0x400c5620, 0x237b: 0x400c5820, - 0x237c: 0x400c5a20, 0x237d: 0x400c5c20, 0x237e: 0x400c5e20, 0x237f: 0x400c6020, - // Block 0x8e, offset 0x2380 - 0x2380: 0x400c6220, 0x2381: 0x400c6420, 0x2382: 0x400c6620, 0x2383: 0x400c6820, - 0x2384: 0x400c6a20, 0x2385: 0x400c6c20, 0x2386: 0x400c6e20, 0x2387: 0x400c7020, - 0x2388: 0x400c7220, 0x2389: 0x400c7420, 0x238a: 0x400c7620, 0x238b: 0x400c7820, - 0x238c: 0x400c7a20, 0x238d: 0x400c7c20, 0x238e: 0x400c7e20, 0x238f: 0x400c8020, - 0x2390: 0x400c8220, 0x2391: 0x400c8420, 0x2392: 0x400c8620, 0x2393: 0x400c8820, - 0x2394: 0x400c8a20, 0x2395: 0x400c8c20, 0x2396: 0x400c8e20, 0x2397: 0x400c9020, - 0x2398: 0x400c9220, 0x2399: 0x400c9420, 0x239a: 0x400c9620, 0x239b: 0x400c9820, - 0x239c: 0x400c9a20, 0x239d: 0x400c9c20, 0x239e: 0x400c9e20, 0x239f: 0x400ca020, - 0x23a0: 0x400ca220, 0x23a1: 0x400ca420, 0x23a2: 0x400ca620, 0x23a3: 0x400ca820, - 0x23a4: 0x400caa20, 0x23a5: 0x400cac20, 0x23a6: 0x400cae20, 0x23a7: 0x400cb020, - 0x23a8: 0x400cb220, 0x23a9: 0x400cb420, 0x23aa: 0x400cb620, 0x23ab: 0x400cb820, - 0x23ac: 0x400cba20, 0x23ad: 0x400cbc20, 0x23ae: 0x400cbe20, 0x23af: 0x400cc020, - 0x23b0: 0x400cc220, 0x23b1: 0x400cc420, 0x23b2: 0x400cc620, 0x23b3: 0x400cc820, - // Block 0x8f, offset 0x23c0 - 0x23c0: 0x400cca20, 0x23c1: 0x400ccc20, 0x23c2: 0x400cce20, 0x23c3: 0x400cd020, - 0x23c4: 0x400cd220, 0x23c5: 0x400cd420, 0x23c6: 0x400cd620, 0x23c7: 0x400cd820, - 0x23c8: 0x400cda20, 0x23c9: 0x400cdc20, 0x23ca: 0x400cde20, 0x23cb: 0x400ce020, - 0x23cc: 0x400ce220, 0x23cd: 0x400ce420, 0x23ce: 0x400ce620, 0x23cf: 0x400ce820, - 0x23d0: 0x400cea20, 0x23d1: 0x400cec20, 0x23d2: 0x400cee20, 0x23d3: 0x400cf020, - 0x23d4: 0x400cf220, 0x23d5: 0x400cf420, 0x23d6: 0x400cf620, 0x23d7: 0x400cf820, - 0x23d8: 0x400cfa20, 0x23d9: 0x400cfc20, 0x23da: 0x400cfe20, 0x23db: 0x400d0020, - 0x23dc: 0x400d0220, 0x23dd: 0x400d0420, 0x23de: 0x400d0620, 0x23df: 0x400d0820, - 0x23e0: 0x400d0a20, 0x23e1: 0x400d0c20, 0x23e2: 0x400d0e20, 0x23e3: 0x400d1020, - 0x23e4: 0x400d1220, 0x23e5: 0x400d1420, 0x23e6: 0x400d1620, - // Block 0x90, offset 0x2400 - 0x2400: 0x400d1820, 0x2401: 0x400d1a20, 0x2402: 0x400d1c20, 0x2403: 0x400d1e20, - 0x2404: 0x400d2020, 0x2405: 0x400d2220, 0x2406: 0x400d2420, 0x2407: 0x400d2620, - 0x2408: 0x400d2820, 0x2409: 0x400d2a20, 0x240a: 0x400d2c20, - 0x2420: 0x0029ce86, 0x2421: 0x0029d086, 0x2422: 0x0029d286, 0x2423: 0x0029d486, - 0x2424: 0x0029d686, 0x2425: 0x0029d886, 0x2426: 0x0029da86, 0x2427: 0x0029dc86, - 0x2428: 0x0029de86, 0x2429: 0xf0000606, 0x242a: 0xf0000606, 0x242b: 0xf0000606, - 0x242c: 0xf0000606, 0x242d: 0xf0000606, 0x242e: 0xf0000606, 0x242f: 0xf0000606, - 0x2430: 0xf0000606, 0x2431: 0xf0000606, 0x2432: 0xf0000606, 0x2433: 0xf0000606, - 0x2434: 0xf0000404, 0x2435: 0xf0000404, 0x2436: 0xf0000404, 0x2437: 0xf0000404, - 0x2438: 0xf0000404, 0x2439: 0xf0000404, 0x243a: 0xf0000404, 0x243b: 0xf0000404, - 0x243c: 0xf0000404, 0x243d: 0xe0000015, 0x243e: 0xe000001a, 0x243f: 0xe000001f, - // Block 0x91, offset 0x2440 - 0x2440: 0xe0000024, 0x2441: 0xe0000029, 0x2442: 0xe000002e, 0x2443: 0xe0000033, - 0x2444: 0xe0000038, 0x2445: 0xe000003d, 0x2446: 0xe0000042, 0x2447: 0xe0000047, - 0x2448: 0xf0001f04, 0x2449: 0xf0001f04, 0x244a: 0xf0001f04, 0x244b: 0xf0001f04, - 0x244c: 0xf0001f04, 0x244d: 0xf0001f04, 0x244e: 0xf0001f04, 0x244f: 0xf0001f04, - 0x2450: 0xf0001f04, 0x2451: 0xf0000404, 0x2452: 0xf0000404, 0x2453: 0xf0000404, - 0x2454: 0xf0000404, 0x2455: 0xf0000404, 0x2456: 0xf0000404, 0x2457: 0xf0000404, - 0x2458: 0xf0000404, 0x2459: 0xf0000404, 0x245a: 0xf0000404, 0x245b: 0xf0000404, - 0x245c: 0xf0000404, 0x245d: 0xf0000404, 0x245e: 0xf0000404, 0x245f: 0xf0000404, - 0x2460: 0xf0000404, 0x2461: 0xf0000404, 0x2462: 0xf0000404, 0x2463: 0xf0000404, - 0x2464: 0xf0000404, 0x2465: 0xf0000404, 0x2466: 0xf0000404, 0x2467: 0xf0000404, - 0x2468: 0xf0000404, 0x2469: 0xf0000404, 0x246a: 0xf0000404, 0x246b: 0xf0000404, - 0x246c: 0xf0000404, 0x246d: 0xf0000404, 0x246e: 0xf0000404, 0x246f: 0xf0000404, - 0x2470: 0xf0000404, 0x2471: 0xf0000404, 0x2472: 0xf0000404, 0x2473: 0xf0000404, - 0x2474: 0xf0000404, 0x2475: 0xf0000404, 0x2476: 0x002bde8c, 0x2477: 0x002c0a8c, - 0x2478: 0x002c3a8c, 0x2479: 0x002c628c, 0x247a: 0x002c988c, 0x247b: 0x002d088c, - 0x247c: 0x002d228c, 0x247d: 0x002d688c, 0x247e: 0x002d9a8c, 0x247f: 0x002dcc8c, - // Block 0x92, offset 0x2480 - 0x2480: 0x002dfe8c, 0x2481: 0x002e228c, 0x2482: 0x002e828c, 0x2483: 0x002e9e8c, - 0x2484: 0x002ee28c, 0x2485: 0x002f2c8c, 0x2486: 0x002f568c, 0x2487: 0x002f7a8c, - 0x2488: 0x002fe68c, 0x2489: 0x00302c8c, 0x248a: 0x00306c8c, 0x248b: 0x0030be8c, - 0x248c: 0x0030e28c, 0x248d: 0x0030f68c, 0x248e: 0x0031008c, 0x248f: 0x00312a8c, - 0x2490: 0x002bde86, 0x2491: 0x002c0a86, 0x2492: 0x002c3a86, 0x2493: 0x002c6286, - 0x2494: 0x002c9886, 0x2495: 0x002d0886, 0x2496: 0x002d2286, 0x2497: 0x002d6886, - 0x2498: 0x002d9a86, 0x2499: 0x002dcc86, 0x249a: 0x002dfe86, 0x249b: 0x002e2286, - 0x249c: 0x002e8286, 0x249d: 0x002e9e86, 0x249e: 0x002ee286, 0x249f: 0x002f2c86, - 0x24a0: 0x002f5686, 0x24a1: 0x002f7a86, 0x24a2: 0x002fe686, 0x24a3: 0x00302c86, - 0x24a4: 0x00306c86, 0x24a5: 0x0030be86, 0x24a6: 0x0030e286, 0x24a7: 0x0030f686, - 0x24a8: 0x00310086, 0x24a9: 0x00312a86, 0x24aa: 0x0029cc86, 0x24ab: 0xe00002e6, - 0x24ac: 0xe00002e9, 0x24ad: 0xe00002ec, 0x24ae: 0xe00002ef, 0x24af: 0xe00002f2, - 0x24b0: 0xe00002f5, 0x24b1: 0xe00002f8, 0x24b2: 0xe00002fb, 0x24b3: 0xe00002fe, - 0x24b4: 0xe00003d5, 0x24b5: 0x0029ce86, 0x24b6: 0x0029d086, 0x24b7: 0x0029d286, - 0x24b8: 0x0029d486, 0x24b9: 0x0029d686, 0x24ba: 0x0029d886, 0x24bb: 0x0029da86, - 0x24bc: 0x0029dc86, 0x24bd: 0x0029de86, 0x24be: 0xe00002d7, 0x24bf: 0x0029cc86, - // Block 0x93, offset 0x24c0 - 0x24c0: 0x400d2e20, 0x24c1: 0x400d3020, 0x24c2: 0x400d3220, 0x24c3: 0x400d3420, - 0x24c4: 0x400d3620, 0x24c5: 0x400d3820, 0x24c6: 0x400d3a20, 0x24c7: 0x400d3c20, - 0x24c8: 0x400d3e20, 0x24c9: 0x400d4020, 0x24ca: 0x400d4220, 0x24cb: 0x400d4420, - 0x24cc: 0x400d4620, 0x24cd: 0x400d4820, 0x24ce: 0x400d4a20, 0x24cf: 0x400d4c20, - 0x24d0: 0x400d4e20, 0x24d1: 0x400d5020, 0x24d2: 0x400d5220, 0x24d3: 0x400d5420, - 0x24d4: 0x400d5620, 0x24d5: 0x400d5820, 0x24d6: 0x400d5a20, 0x24d7: 0x400d5c20, - 0x24d8: 0x400d5e20, 0x24d9: 0x400d6020, 0x24da: 0x400d6220, 0x24db: 0x400d6420, - 0x24dc: 0x400d6620, 0x24dd: 0x400d6820, 0x24de: 0x400d6a20, 0x24df: 0x400d6c20, - 0x24e0: 0x400d6e20, 0x24e1: 0x400d7020, 0x24e2: 0x400d7220, 0x24e3: 0x400d7420, - 0x24e4: 0x400d7620, 0x24e5: 0x400d7820, 0x24e6: 0x400d7a20, 0x24e7: 0x400d7c20, - 0x24e8: 0x400d7e20, 0x24e9: 0x400d8020, 0x24ea: 0x400d8220, 0x24eb: 0x400d8420, - 0x24ec: 0x400d8620, 0x24ed: 0x400d8820, 0x24ee: 0x400d8a20, 0x24ef: 0x400d8c20, - 0x24f0: 0x400d8e20, 0x24f1: 0x400d9020, 0x24f2: 0x400d9220, 0x24f3: 0x400d9420, - 0x24f4: 0x400d9620, 0x24f5: 0x400d9820, 0x24f6: 0x400d9a20, 0x24f7: 0x400d9c20, - 0x24f8: 0x400d9e20, 0x24f9: 0x400da020, 0x24fa: 0x400da220, 0x24fb: 0x400da420, - 0x24fc: 0x400da620, 0x24fd: 0x400da820, 0x24fe: 0x400daa20, 0x24ff: 0x400dac20, - // Block 0x94, offset 0x2500 - 0x2500: 0x400dae20, 0x2501: 0x400db020, 0x2502: 0x400db220, 0x2503: 0x400db420, - 0x2504: 0x400db620, 0x2505: 0x400db820, 0x2506: 0x400dba20, 0x2507: 0x400dbc20, - 0x2508: 0x400dbe20, 0x2509: 0x400dc020, 0x250a: 0x400dc220, 0x250b: 0x400dc420, - 0x250c: 0x400dc620, 0x250d: 0x400dc820, 0x250e: 0x400dca20, 0x250f: 0x400dcc20, - 0x2510: 0x400dce20, 0x2511: 0x400dd020, 0x2512: 0x400dd220, 0x2513: 0x400dd420, - 0x2514: 0x400dd620, 0x2515: 0x400dd820, 0x2516: 0x400dda20, 0x2517: 0x400ddc20, - 0x2518: 0x400dde20, 0x2519: 0x400de020, 0x251a: 0x400de220, 0x251b: 0x400de420, - 0x251c: 0x400de620, 0x251d: 0x400de820, 0x251e: 0x400dea20, 0x251f: 0x400dec20, - 0x2520: 0x400dee20, 0x2521: 0x400df020, 0x2522: 0x400df220, 0x2523: 0x400df420, - 0x2524: 0x400df620, 0x2525: 0x400df820, 0x2526: 0x400dfa20, 0x2527: 0x400dfc20, - 0x2528: 0x400dfe20, 0x2529: 0x400e0020, 0x252a: 0x400e0220, 0x252b: 0x400e0420, - 0x252c: 0x400e0620, 0x252d: 0x400e0820, 0x252e: 0x400e0a20, 0x252f: 0x400e0c20, - 0x2530: 0x400e0e20, 0x2531: 0x400e1020, 0x2532: 0x400e1220, 0x2533: 0x400e1420, - 0x2534: 0x400e1620, 0x2535: 0x400e1820, 0x2536: 0x400e1a20, 0x2537: 0x400e1c20, - 0x2538: 0x400e1e20, 0x2539: 0x400e2020, 0x253a: 0x400e2220, 0x253b: 0x400e2420, - 0x253c: 0x400e2620, 0x253d: 0x400e2820, 0x253e: 0x400e2a20, 0x253f: 0x400e2c20, - // Block 0x95, offset 0x2540 - 0x2540: 0x400e2e20, 0x2541: 0x400e3020, 0x2542: 0x400e3220, 0x2543: 0x400e3420, - 0x2544: 0x400e3620, 0x2545: 0x400e3820, 0x2546: 0x400e3a20, 0x2547: 0x400e3c20, - 0x2548: 0x400e3e20, 0x2549: 0x400e4020, 0x254a: 0x400e4220, 0x254b: 0x400e4420, - 0x254c: 0x400e4620, 0x254d: 0x400e4820, 0x254e: 0x400e4a20, 0x254f: 0x400e4c20, - 0x2550: 0x400e4e20, 0x2551: 0x400e5020, 0x2552: 0x400e5220, 0x2553: 0x400e5420, - 0x2554: 0x400e5620, 0x2555: 0x400e5820, 0x2556: 0x400e5a20, 0x2557: 0x400e5c20, - 0x2558: 0x400e5e20, 0x2559: 0x400e6020, 0x255a: 0x400e6220, 0x255b: 0x400e6420, - 0x255c: 0x400e6620, 0x255d: 0x400e6820, 0x255e: 0x400e6a20, 0x255f: 0x400e6c20, - 0x2560: 0x400e6e20, 0x2561: 0x400e7020, 0x2562: 0x400e7220, 0x2563: 0x400e7420, - 0x2564: 0x400e7620, 0x2565: 0x400e7820, 0x2566: 0x400e7a20, 0x2567: 0x400e7c20, - 0x2568: 0x400e7e20, 0x2569: 0x400e8020, 0x256a: 0x400e8220, 0x256b: 0x400e8420, - 0x256c: 0x400e8620, 0x256d: 0x400e8820, 0x256e: 0x400e8a20, 0x256f: 0x400e8c20, - 0x2570: 0x400e8e20, 0x2571: 0x400e9020, 0x2572: 0x400e9220, 0x2573: 0x400e9420, - 0x2574: 0x400e9620, 0x2575: 0x400e9820, 0x2576: 0x400e9a20, 0x2577: 0x400e9c20, - 0x2578: 0x400e9e20, 0x2579: 0x400ea020, 0x257a: 0x400ea220, 0x257b: 0x400ea420, - 0x257c: 0x400ea620, 0x257d: 0x400ea820, 0x257e: 0x400eaa20, 0x257f: 0x400eac20, - // Block 0x96, offset 0x2580 - 0x2580: 0x400eae20, 0x2581: 0x400eb020, 0x2582: 0x400eb220, 0x2583: 0x400eb420, - 0x2584: 0x400eb620, 0x2585: 0x400eb820, 0x2586: 0x400eba20, 0x2587: 0x400ebc20, - 0x2588: 0x400ebe20, 0x2589: 0x400ec020, 0x258a: 0x400ec220, 0x258b: 0x400ec420, - 0x258c: 0x400ec620, 0x258d: 0x400ec820, 0x258e: 0x400eca20, 0x258f: 0x400ecc20, - 0x2590: 0x400ece20, 0x2591: 0x400ed020, 0x2592: 0x400ed220, 0x2593: 0x400ed420, - 0x2594: 0x400ed620, 0x2595: 0x400ed820, 0x2596: 0x400eda20, 0x2597: 0x400edc20, - 0x2598: 0x400ede20, 0x2599: 0x400ee020, 0x259a: 0x400ee220, 0x259b: 0x400ee420, - 0x259c: 0x400ee620, 0x259d: 0x400ee820, 0x259e: 0x400eea20, 0x259f: 0x400eec20, - 0x25a0: 0x400eee20, 0x25a1: 0x400ef020, 0x25a2: 0x400ef220, 0x25a3: 0x400ef420, - 0x25a4: 0x400ef620, 0x25a5: 0x400ef820, 0x25a6: 0x400efa20, 0x25a7: 0x400efc20, - 0x25a8: 0x400efe20, 0x25a9: 0x400f0020, 0x25aa: 0x400f0220, 0x25ab: 0x400f0420, - 0x25ac: 0x400f0620, 0x25ad: 0x400f0820, 0x25ae: 0x400f0a20, 0x25af: 0x400f0c20, - 0x25b0: 0x400f0e20, 0x25b1: 0x400f1020, 0x25b2: 0x400f1220, 0x25b3: 0x400f1420, - 0x25b4: 0x400f1620, 0x25b5: 0x400f1820, 0x25b6: 0x400f1a20, 0x25b7: 0x400f1c20, - 0x25b8: 0x400f1e20, 0x25b9: 0x400f2020, 0x25ba: 0x400f2220, 0x25bb: 0x400f2420, - 0x25bc: 0x400f2620, 0x25bd: 0x400f2820, 0x25be: 0x400f2a20, 0x25bf: 0x400f2c20, - // Block 0x97, offset 0x25c0 - 0x25c0: 0x400f2e20, 0x25c1: 0x400f3020, 0x25c2: 0x400f3220, 0x25c3: 0x400f3420, - 0x25c4: 0x400f3620, 0x25c5: 0x400f3820, 0x25c6: 0x400f3a20, 0x25c7: 0x400f3c20, - 0x25c8: 0x400f3e20, 0x25c9: 0x400f4020, 0x25ca: 0x400f4220, 0x25cb: 0x400f4420, - 0x25cc: 0x400f4620, 0x25cd: 0x400f4820, 0x25ce: 0x400f4a20, 0x25cf: 0x400f4c20, - 0x25d0: 0x400f4e20, 0x25d1: 0x400f5020, 0x25d2: 0x400f5220, 0x25d3: 0x400f5420, - 0x25d4: 0x400f5620, 0x25d5: 0x400f5820, 0x25d6: 0x400f5a20, 0x25d7: 0x400f5c20, - 0x25d8: 0x400f5e20, 0x25d9: 0x400f6020, 0x25da: 0x400f6220, 0x25db: 0x400f6420, - 0x25dc: 0x400f6620, 0x25dd: 0x400f6820, 0x25de: 0x400f6a20, 0x25df: 0x400f6c20, - 0x25e0: 0x400f6e20, 0x25e1: 0x400f7020, 0x25e2: 0x400f7220, 0x25e3: 0x400f7420, - 0x25e4: 0x400f7620, 0x25e5: 0x400f7820, 0x25e6: 0x400f7a20, 0x25e7: 0x400f7c20, - 0x25e8: 0x400f7e20, 0x25e9: 0x400f8020, 0x25ea: 0x400f8220, 0x25eb: 0x400f8420, - 0x25ec: 0x400f8620, 0x25ed: 0x400f8820, 0x25ee: 0x400f8a20, 0x25ef: 0x400f8c20, - 0x25f0: 0x40195220, 0x25f1: 0x40195420, 0x25f2: 0x40195620, 0x25f3: 0x40195820, - 0x25f4: 0x40195a20, 0x25f5: 0x40195c20, 0x25f6: 0x40195e20, 0x25f7: 0x40196020, - 0x25f8: 0x400f8e20, 0x25f9: 0x400f9020, 0x25fa: 0x400f9220, 0x25fb: 0x400f9420, - 0x25fc: 0x400f9620, 0x25fd: 0x400f9820, 0x25fe: 0x400f9a20, 0x25ff: 0x400f9c20, - // Block 0x98, offset 0x2600 - 0x2600: 0x400f9e20, 0x2601: 0x400fa020, 0x2602: 0x400fa220, 0x2603: 0x400fa420, - 0x2604: 0x400fa620, 0x2605: 0x400fa820, 0x2606: 0x400faa20, 0x2607: 0x400fac20, - 0x2608: 0x400fae20, 0x2609: 0x400fb020, 0x260a: 0x400fb220, 0x260b: 0x400fb420, - 0x260c: 0x400fb620, 0x260d: 0x400fb820, 0x260e: 0x400fba20, 0x260f: 0x400fbc20, - 0x2610: 0x400fbe20, 0x2611: 0x400fc020, 0x2612: 0x400fc220, 0x2613: 0x400fc420, - 0x2614: 0x400fc620, 0x2615: 0x400fc820, 0x2616: 0x400fca20, 0x2617: 0x400fcc20, - 0x2618: 0x400fce20, 0x2619: 0x400fd020, 0x261a: 0x400fd220, 0x261b: 0x400fd420, - 0x261c: 0x400fd620, 0x261d: 0x400fd820, 0x261e: 0x400fda20, 0x261f: 0x400fdc20, - 0x2620: 0x400fde20, 0x2621: 0x400fe020, 0x2622: 0x400fe220, 0x2623: 0x400fe420, - 0x2624: 0x400fe620, 0x2625: 0x400fe820, 0x2626: 0x400fea20, 0x2627: 0x400fec20, - 0x2628: 0x400fee20, 0x2629: 0x400ff020, 0x262a: 0x400ff220, 0x262b: 0x400ff420, - 0x262c: 0x400ff620, 0x262d: 0x401dde20, 0x262e: 0x401de020, 0x262f: 0x401de220, - 0x2630: 0x400ff820, 0x2631: 0x400ffa20, 0x2632: 0x400ffc20, 0x2633: 0x400ffe20, - 0x2634: 0x40100020, 0x2635: 0x40100220, 0x2636: 0x40100420, 0x2637: 0x40100620, - 0x2638: 0x40100820, 0x2639: 0x40100a20, 0x263a: 0x40100c20, 0x263b: 0x40100e20, - 0x263c: 0x40101020, 0x263d: 0x40101220, 0x263e: 0x40101420, 0x263f: 0x40101620, - // Block 0x99, offset 0x2640 - 0x2640: 0x40101820, 0x2641: 0x40101a20, 0x2642: 0x40101c20, 0x2643: 0x40101e20, - 0x2644: 0x40102020, 0x2645: 0x40102220, 0x2646: 0x40102420, 0x2647: 0x40102620, - 0x2648: 0x40102820, 0x2649: 0x40102a20, 0x264a: 0x40194620, 0x264b: 0x40194820, - 0x264c: 0x40194a20, 0x264d: 0x40194c20, 0x264e: 0x40194e20, 0x264f: 0x40195020, - 0x2650: 0x40102c20, 0x2651: 0x40102e20, 0x2652: 0x40103020, 0x2653: 0x40103220, - 0x2654: 0x40103420, 0x2655: 0x40103620, 0x2656: 0x40103820, 0x2657: 0x40103a20, - 0x2658: 0x40103c20, 0x2659: 0x40103e20, 0x265a: 0x40104020, 0x265b: 0x40104220, - 0x265c: 0x40104420, 0x265d: 0x40104620, 0x265e: 0x40104820, 0x265f: 0x40104a20, - 0x2660: 0x40104c20, 0x2661: 0x40104e20, 0x2662: 0x40105020, 0x2663: 0x40105220, - 0x2664: 0x40105420, 0x2665: 0x40105620, 0x2666: 0x40105820, 0x2667: 0x40105a20, - 0x2668: 0x40105c20, 0x2669: 0x40105e20, 0x266a: 0x40106020, 0x266b: 0x40106220, - 0x266c: 0x40106420, 0x266d: 0x40106620, 0x266e: 0x40106820, 0x266f: 0x40106a20, - 0x2670: 0x40106c20, 0x2671: 0x40106e20, 0x2672: 0x40107020, 0x2673: 0x40107220, - 0x2674: 0x40107420, 0x2675: 0x40107620, 0x2676: 0x40107820, 0x2677: 0x40107a20, - 0x2678: 0x40107c20, 0x2679: 0x40107e20, 0x267a: 0x40108020, 0x267b: 0x40108220, - 0x267c: 0x40108420, 0x267d: 0x40108620, 0x267e: 0x40108820, 0x267f: 0x40108a20, - // Block 0x9a, offset 0x2680 - 0x2680: 0x40108c20, 0x2681: 0x40108e20, 0x2682: 0x40109020, 0x2683: 0x40109220, - 0x2684: 0x40109420, 0x2685: 0x40109620, 0x2686: 0x40109820, 0x2687: 0x40109a20, - 0x2688: 0x40109c20, 0x2689: 0x40109e20, 0x268a: 0x4010a020, 0x268b: 0x4010a220, - 0x268c: 0x4010a420, 0x268d: 0x4010a620, 0x268e: 0x4010a820, 0x268f: 0x4010aa20, - 0x2690: 0x4010ac20, 0x2691: 0x4010ae20, 0x2692: 0x4010b020, 0x2693: 0x4010b220, - 0x2694: 0x4010b420, 0x2695: 0x4010b620, 0x2696: 0x4010b820, 0x2697: 0x4010ba20, - 0x2698: 0x4010bc20, 0x2699: 0x4010be20, 0x269a: 0x4010c020, 0x269b: 0x4010c220, - 0x269c: 0x4010c420, 0x269d: 0x4010c620, 0x269e: 0x4010c820, 0x269f: 0x4010ca20, - 0x26a0: 0x4010cc20, 0x26a1: 0x4010ce20, 0x26a2: 0x4010d020, 0x26a3: 0x4010d220, - 0x26a4: 0x4010d420, 0x26a5: 0x4010d620, 0x26a6: 0x4010d820, 0x26a7: 0x4010da20, - 0x26a8: 0x4010dc20, 0x26a9: 0x4010de20, 0x26aa: 0x4010e020, 0x26ab: 0x4010e220, - 0x26ac: 0x4010e420, 0x26ad: 0x4010e620, 0x26ae: 0x4010e820, 0x26af: 0x4010ea20, - 0x26b0: 0x4010ec20, 0x26b1: 0x4010ee20, 0x26b2: 0x4010f020, 0x26b3: 0x4010f220, - 0x26b4: 0x4010f420, 0x26b5: 0x4010f620, 0x26b6: 0x4010f820, 0x26b7: 0x4010fa20, - 0x26b8: 0x4010fc20, 0x26b9: 0x4010fe20, 0x26ba: 0x40110020, 0x26bb: 0x40110220, - 0x26bc: 0x40110420, 0x26bd: 0x40110620, 0x26be: 0x40110820, 0x26bf: 0x40110a20, - // Block 0x9b, offset 0x26c0 - 0x26c1: 0x40114020, 0x26c2: 0x40114220, 0x26c3: 0x40114420, - 0x26c4: 0x40114620, 0x26c5: 0x40114820, 0x26c6: 0x40114a20, 0x26c7: 0x40114c20, - 0x26c8: 0x40114e20, 0x26c9: 0x40115020, 0x26ca: 0x40115220, 0x26cb: 0x40115420, - 0x26cc: 0x40115620, 0x26cd: 0x40115820, 0x26ce: 0x40115a20, 0x26cf: 0x40115c20, - 0x26d0: 0x40115e20, 0x26d1: 0x40116020, 0x26d2: 0x40116220, 0x26d3: 0x40116420, - 0x26d4: 0x40116620, 0x26d5: 0x40116820, 0x26d6: 0x40116a20, 0x26d7: 0x40116c20, - 0x26d8: 0x40116e20, 0x26d9: 0x40117020, 0x26da: 0x40117220, 0x26db: 0x40117420, - 0x26dc: 0x40117620, 0x26dd: 0x40117820, 0x26de: 0x40117a20, 0x26df: 0x40117c20, - 0x26e0: 0x40117e20, 0x26e1: 0x40118020, 0x26e2: 0x40118220, 0x26e3: 0x40118420, - 0x26e4: 0x40118620, 0x26e5: 0x40118820, 0x26e6: 0x40118a20, 0x26e7: 0x40118c20, - 0x26e8: 0x40118e20, 0x26e9: 0x40119020, 0x26ea: 0x40119220, 0x26eb: 0x40119420, - 0x26ec: 0x40119620, 0x26ed: 0x40119820, 0x26ee: 0x40119a20, 0x26ef: 0x40119c20, - 0x26f0: 0x40119e20, 0x26f1: 0x4011a020, 0x26f2: 0x4011a220, 0x26f3: 0x4011a420, - 0x26f4: 0x4011a620, 0x26f5: 0x4011a820, 0x26f6: 0x4011aa20, 0x26f7: 0x4011ac20, - 0x26f8: 0x4011ae20, 0x26f9: 0x4011b020, 0x26fa: 0x4011b220, 0x26fb: 0x4011b420, - 0x26fc: 0x4011b620, 0x26fd: 0x4011b820, 0x26fe: 0x4011ba20, 0x26ff: 0x4011bc20, - // Block 0x9c, offset 0x2700 - 0x2700: 0x4011be20, 0x2701: 0x4011c020, 0x2702: 0x4011c220, 0x2703: 0x4011c420, - 0x2704: 0x4011c620, 0x2705: 0x4011c820, 0x2706: 0x4011ca20, 0x2707: 0x4011cc20, - 0x2708: 0x4011ce20, 0x2709: 0x4011d020, 0x270a: 0x4011d220, 0x270b: 0x4011d420, - 0x270c: 0x4011d620, 0x270d: 0x4011d820, 0x270e: 0x4011da20, 0x270f: 0x4011dc20, - 0x2710: 0x4011de20, 0x2711: 0x4011e020, 0x2712: 0x4011e220, 0x2713: 0x4011e420, - 0x2714: 0x4011e620, 0x2715: 0x4011e820, 0x2716: 0x4011ea20, 0x2717: 0x4011ec20, - 0x2718: 0x4011ee20, 0x2719: 0x4011f020, 0x271a: 0x4011f220, 0x271b: 0x4011f420, - 0x271c: 0x4011f620, 0x271d: 0x4011f820, 0x271e: 0x4011fa20, 0x271f: 0x4011fc20, - 0x2720: 0x4011fe20, 0x2721: 0x40120020, 0x2722: 0x40120220, 0x2723: 0x40120420, - 0x2724: 0x40120620, 0x2725: 0x40120820, 0x2726: 0x40120a20, 0x2727: 0x40120c20, - 0x2728: 0x40045820, 0x2729: 0x40045a20, 0x272a: 0x40045c20, 0x272b: 0x40045e20, - 0x272c: 0x40046020, 0x272d: 0x40046220, 0x272e: 0x40046420, 0x272f: 0x40046620, - 0x2730: 0x40046820, 0x2731: 0x40046a20, 0x2732: 0x40046c20, 0x2733: 0x40046e20, - 0x2734: 0x40047020, 0x2735: 0x40047220, 0x2736: 0x0029ce86, 0x2737: 0x0029d086, - 0x2738: 0x0029d286, 0x2739: 0x0029d486, 0x273a: 0x0029d686, 0x273b: 0x0029d886, - 0x273c: 0x0029da86, 0x273d: 0x0029dc86, 0x273e: 0x0029de86, 0x273f: 0xe00002da, - // Block 0x9d, offset 0x2740 - 0x2740: 0x0029ce86, 0x2741: 0x0029d086, 0x2742: 0x0029d286, 0x2743: 0x0029d486, - 0x2744: 0x0029d686, 0x2745: 0x0029d886, 0x2746: 0x0029da86, 0x2747: 0x0029dc86, - 0x2748: 0x0029de86, 0x2749: 0xe00002dd, 0x274a: 0x0029ce86, 0x274b: 0x0029d086, - 0x274c: 0x0029d286, 0x274d: 0x0029d486, 0x274e: 0x0029d686, 0x274f: 0x0029d886, - 0x2750: 0x0029da86, 0x2751: 0x0029dc86, 0x2752: 0x0029de86, 0x2753: 0xe00002e0, - 0x2754: 0x40120e20, 0x2755: 0x40121020, 0x2756: 0x40121220, 0x2757: 0x40121420, - 0x2758: 0x40121620, 0x2759: 0x40121820, 0x275a: 0x40121a20, 0x275b: 0x40121c20, - 0x275c: 0x40121e20, 0x275d: 0x40122020, 0x275e: 0x40122220, 0x275f: 0x40122420, - 0x2760: 0x40122620, 0x2761: 0x40122820, 0x2762: 0x40122a20, 0x2763: 0x40122c20, - 0x2764: 0x40122e20, 0x2765: 0x40123020, 0x2766: 0x40123220, 0x2767: 0x40123420, - 0x2768: 0x40123620, 0x2769: 0x40123820, 0x276a: 0x40123a20, 0x276b: 0x40123c20, - 0x276c: 0x40123e20, 0x276d: 0x40124020, 0x276e: 0x40124220, 0x276f: 0x40124420, - 0x2770: 0x40124620, 0x2771: 0x40124820, 0x2772: 0x40124a20, 0x2773: 0x40124c20, - 0x2774: 0x40124e20, 0x2775: 0x40125020, 0x2776: 0x40125220, 0x2777: 0x40125420, - 0x2778: 0x40125620, 0x2779: 0x40125820, 0x277a: 0x40125a20, 0x277b: 0x40125c20, - 0x277c: 0x40125e20, 0x277d: 0x40126020, 0x277e: 0x40126220, 0x277f: 0x40126420, - // Block 0x9e, offset 0x2780 - 0x2780: 0x40126620, 0x2781: 0x40126820, 0x2782: 0x40126a20, 0x2783: 0x40126c20, - 0x2784: 0x40126e20, 0x2785: 0x40044020, 0x2786: 0x40044220, 0x2787: 0x40127020, - 0x2788: 0x40127220, 0x2789: 0x40127420, 0x278a: 0x40127620, 0x278b: 0x40127820, - 0x278c: 0x40127a20, 0x278d: 0x40127c20, 0x278e: 0x40127e20, 0x278f: 0x40128020, - 0x2790: 0x40128220, 0x2791: 0x40128420, 0x2792: 0x40128620, 0x2793: 0x40128820, - 0x2794: 0x40128a20, 0x2795: 0x40128c20, 0x2796: 0x40128e20, 0x2797: 0x40129020, - 0x2798: 0x40129220, 0x2799: 0x40129420, 0x279a: 0x40129620, 0x279b: 0x40129820, - 0x279c: 0x40129a20, 0x279d: 0x40129c20, 0x279e: 0x40129e20, 0x279f: 0x4012a020, - 0x27a0: 0x4012a220, 0x27a1: 0x4012a420, 0x27a2: 0x4012a620, 0x27a3: 0x4012a820, - 0x27a4: 0x4012aa20, 0x27a5: 0x4012ac20, 0x27a6: 0x40044420, 0x27a7: 0x40044620, - 0x27a8: 0x40044820, 0x27a9: 0x40044a20, 0x27aa: 0x40044c20, 0x27ab: 0x40044e20, - 0x27ac: 0x40045020, 0x27ad: 0x40045220, 0x27ae: 0x40045420, 0x27af: 0x40045620, - 0x27b0: 0x4012ae20, 0x27b1: 0x4012b020, 0x27b2: 0x4012b220, 0x27b3: 0x4012b420, - 0x27b4: 0x4012b620, 0x27b5: 0x4012b820, 0x27b6: 0x4012ba20, 0x27b7: 0x4012bc20, - 0x27b8: 0x4012be20, 0x27b9: 0x4012c020, 0x27ba: 0x4012c220, 0x27bb: 0x4012c420, - 0x27bc: 0x4012c620, 0x27bd: 0x4012c820, 0x27be: 0x4012ca20, 0x27bf: 0x4012cc20, - // Block 0x9f, offset 0x27c0 - 0x27c0: 0x40174620, 0x27c1: 0x40174820, 0x27c2: 0x40174a20, 0x27c3: 0x40174c20, - 0x27c4: 0x40174e20, 0x27c5: 0x40175020, 0x27c6: 0x40175220, 0x27c7: 0x40175420, - 0x27c8: 0x40175620, 0x27c9: 0x40175820, 0x27ca: 0x40175a20, 0x27cb: 0x40175c20, - 0x27cc: 0x40175e20, 0x27cd: 0x40176020, 0x27ce: 0x40176220, 0x27cf: 0x40176420, - 0x27d0: 0x40176620, 0x27d1: 0x40176820, 0x27d2: 0x40176a20, 0x27d3: 0x40176c20, - 0x27d4: 0x40176e20, 0x27d5: 0x40177020, 0x27d6: 0x40177220, 0x27d7: 0x40177420, - 0x27d8: 0x40177620, 0x27d9: 0x40177820, 0x27da: 0x40177a20, 0x27db: 0x40177c20, - 0x27dc: 0x40177e20, 0x27dd: 0x40178020, 0x27de: 0x40178220, 0x27df: 0x40178420, - 0x27e0: 0x40178620, 0x27e1: 0x40178820, 0x27e2: 0x40178a20, 0x27e3: 0x40178c20, - 0x27e4: 0x40178e20, 0x27e5: 0x40179020, 0x27e6: 0x40179220, 0x27e7: 0x40179420, - 0x27e8: 0x40179620, 0x27e9: 0x40179820, 0x27ea: 0x40179a20, 0x27eb: 0x40179c20, - 0x27ec: 0x40179e20, 0x27ed: 0x4017a020, 0x27ee: 0x4017a220, 0x27ef: 0x4017a420, - 0x27f0: 0x4017a620, 0x27f1: 0x4017a820, 0x27f2: 0x4017aa20, 0x27f3: 0x4017ac20, - 0x27f4: 0x4017ae20, 0x27f5: 0x4017b020, 0x27f6: 0x4017b220, 0x27f7: 0x4017b420, - 0x27f8: 0x4017b620, 0x27f9: 0x4017b820, 0x27fa: 0x4017ba20, 0x27fb: 0x4017bc20, - 0x27fc: 0x4017be20, 0x27fd: 0x4017c020, 0x27fe: 0x4017c220, 0x27ff: 0x4017c420, - // Block 0xa0, offset 0x2800 - 0x2800: 0x4017c620, 0x2801: 0x4017c820, 0x2802: 0x4017ca20, 0x2803: 0x4017cc20, - 0x2804: 0x4017ce20, 0x2805: 0x4017d020, 0x2806: 0x4017d220, 0x2807: 0x4017d420, - 0x2808: 0x4017d620, 0x2809: 0x4017d820, 0x280a: 0x4017da20, 0x280b: 0x4017dc20, - 0x280c: 0x4017de20, 0x280d: 0x4017e020, 0x280e: 0x4017e220, 0x280f: 0x4017e420, - 0x2810: 0x4017e620, 0x2811: 0x4017e820, 0x2812: 0x4017ea20, 0x2813: 0x4017ec20, - 0x2814: 0x4017ee20, 0x2815: 0x4017f020, 0x2816: 0x4017f220, 0x2817: 0x4017f420, - 0x2818: 0x4017f620, 0x2819: 0x4017f820, 0x281a: 0x4017fa20, 0x281b: 0x4017fc20, - 0x281c: 0x4017fe20, 0x281d: 0x40180020, 0x281e: 0x40180220, 0x281f: 0x40180420, - 0x2820: 0x40180620, 0x2821: 0x40180820, 0x2822: 0x40180a20, 0x2823: 0x40180c20, - 0x2824: 0x40180e20, 0x2825: 0x40181020, 0x2826: 0x40181220, 0x2827: 0x40181420, - 0x2828: 0x40181620, 0x2829: 0x40181820, 0x282a: 0x40181a20, 0x282b: 0x40181c20, - 0x282c: 0x40181e20, 0x282d: 0x40182020, 0x282e: 0x40182220, 0x282f: 0x40182420, - 0x2830: 0x40182620, 0x2831: 0x40182820, 0x2832: 0x40182a20, 0x2833: 0x40182c20, - 0x2834: 0x40182e20, 0x2835: 0x40183020, 0x2836: 0x40183220, 0x2837: 0x40183420, - 0x2838: 0x40183620, 0x2839: 0x40183820, 0x283a: 0x40183a20, 0x283b: 0x40183c20, - 0x283c: 0x40183e20, 0x283d: 0x40184020, 0x283e: 0x40184220, 0x283f: 0x40184420, - // Block 0xa1, offset 0x2840 - 0x2840: 0x40184620, 0x2841: 0x40184820, 0x2842: 0x40184a20, 0x2843: 0x40184c20, - 0x2844: 0x40184e20, 0x2845: 0x40185020, 0x2846: 0x40185220, 0x2847: 0x40185420, - 0x2848: 0x40185620, 0x2849: 0x40185820, 0x284a: 0x40185a20, 0x284b: 0x40185c20, - 0x284c: 0x40185e20, 0x284d: 0x40186020, 0x284e: 0x40186220, 0x284f: 0x40186420, - 0x2850: 0x40186620, 0x2851: 0x40186820, 0x2852: 0x40186a20, 0x2853: 0x40186c20, - 0x2854: 0x40186e20, 0x2855: 0x40187020, 0x2856: 0x40187220, 0x2857: 0x40187420, - 0x2858: 0x40187620, 0x2859: 0x40187820, 0x285a: 0x40187a20, 0x285b: 0x40187c20, - 0x285c: 0x40187e20, 0x285d: 0x40188020, 0x285e: 0x40188220, 0x285f: 0x40188420, - 0x2860: 0x40188620, 0x2861: 0x40188820, 0x2862: 0x40188a20, 0x2863: 0x40188c20, - 0x2864: 0x40188e20, 0x2865: 0x40189020, 0x2866: 0x40189220, 0x2867: 0x40189420, - 0x2868: 0x40189620, 0x2869: 0x40189820, 0x286a: 0x40189a20, 0x286b: 0x40189c20, - 0x286c: 0x40189e20, 0x286d: 0x4018a020, 0x286e: 0x4018a220, 0x286f: 0x4018a420, - 0x2870: 0x4018a620, 0x2871: 0x4018a820, 0x2872: 0x4018aa20, 0x2873: 0x4018ac20, - 0x2874: 0x4018ae20, 0x2875: 0x4018b020, 0x2876: 0x4018b220, 0x2877: 0x4018b420, - 0x2878: 0x4018b620, 0x2879: 0x4018b820, 0x287a: 0x4018ba20, 0x287b: 0x4018bc20, - 0x287c: 0x4018be20, 0x287d: 0x4018c020, 0x287e: 0x4018c220, 0x287f: 0x4018c420, - // Block 0xa2, offset 0x2880 - 0x2880: 0x4018c620, 0x2881: 0x4018c820, 0x2882: 0x4018ca20, 0x2883: 0x4018cc20, - 0x2884: 0x4018ce20, 0x2885: 0x4018d020, 0x2886: 0x4018d220, 0x2887: 0x4018d420, - 0x2888: 0x4018d620, 0x2889: 0x4018d820, 0x288a: 0x4018da20, 0x288b: 0x4018dc20, - 0x288c: 0x4018de20, 0x288d: 0x4018e020, 0x288e: 0x4018e220, 0x288f: 0x4018e420, - 0x2890: 0x4018e620, 0x2891: 0x4018e820, 0x2892: 0x4018ea20, 0x2893: 0x4018ec20, - 0x2894: 0x4018ee20, 0x2895: 0x4018f020, 0x2896: 0x4018f220, 0x2897: 0x4018f420, - 0x2898: 0x4018f620, 0x2899: 0x4018f820, 0x289a: 0x4018fa20, 0x289b: 0x4018fc20, - 0x289c: 0x4018fe20, 0x289d: 0x40190020, 0x289e: 0x40190220, 0x289f: 0x40190420, - 0x28a0: 0x40190620, 0x28a1: 0x40190820, 0x28a2: 0x40190a20, 0x28a3: 0x40190c20, - 0x28a4: 0x40190e20, 0x28a5: 0x40191020, 0x28a6: 0x40191220, 0x28a7: 0x40191420, - 0x28a8: 0x40191620, 0x28a9: 0x40191820, 0x28aa: 0x40191a20, 0x28ab: 0x40191c20, - 0x28ac: 0x40191e20, 0x28ad: 0x40192020, 0x28ae: 0x40192220, 0x28af: 0x40192420, - 0x28b0: 0x40192620, 0x28b1: 0x40192820, 0x28b2: 0x40192a20, 0x28b3: 0x40192c20, - 0x28b4: 0x40192e20, 0x28b5: 0x40193020, 0x28b6: 0x40193220, 0x28b7: 0x40193420, - 0x28b8: 0x40193620, 0x28b9: 0x40193820, 0x28ba: 0x40193a20, 0x28bb: 0x40193c20, - 0x28bc: 0x40193e20, 0x28bd: 0x40194020, 0x28be: 0x40194220, 0x28bf: 0x40194420, - // Block 0xa3, offset 0x28c0 - 0x28c0: 0x4012ce20, 0x28c1: 0x4012d020, 0x28c2: 0x4012d220, 0x28c3: 0x4012d420, - 0x28c4: 0x4012d620, 0x28c5: 0x4012d820, 0x28c6: 0x4012da20, 0x28c7: 0x4012dc20, - 0x28c8: 0x4012de20, 0x28c9: 0x4012e020, 0x28ca: 0x4012e220, 0x28cb: 0x4012e420, - 0x28cc: 0x4012e620, 0x28cd: 0x4012e820, 0x28ce: 0x4012ea20, 0x28cf: 0x4012ec20, - 0x28d0: 0x4012ee20, 0x28d1: 0x4012f020, 0x28d2: 0x4012f220, 0x28d3: 0x4012f420, - 0x28d4: 0x4012f620, 0x28d5: 0x4012f820, 0x28d6: 0x4012fa20, 0x28d7: 0x4012fc20, - 0x28d8: 0x4012fe20, 0x28d9: 0x40130020, 0x28da: 0x40130220, 0x28db: 0x40130420, - 0x28dc: 0x40130620, 0x28dd: 0x40130820, 0x28de: 0x40130a20, 0x28df: 0x40130c20, - 0x28e0: 0x40130e20, 0x28e1: 0x40131020, 0x28e2: 0x40131220, 0x28e3: 0x40131420, - 0x28e4: 0x40131620, 0x28e5: 0x40131820, 0x28e6: 0x40131a20, 0x28e7: 0x40131c20, - 0x28e8: 0x40131e20, 0x28e9: 0x40132020, 0x28ea: 0x40132220, 0x28eb: 0x40132420, - 0x28ec: 0x40132620, 0x28ed: 0x40132820, 0x28ee: 0x40132a20, 0x28ef: 0x40132c20, - 0x28f0: 0x40132e20, 0x28f1: 0x40133020, 0x28f2: 0x40133220, 0x28f3: 0x40133420, - 0x28f4: 0x40133620, 0x28f5: 0x40133820, 0x28f6: 0x40133a20, 0x28f7: 0x40133c20, - 0x28f8: 0x40133e20, 0x28f9: 0x40134020, 0x28fa: 0x40134220, 0x28fb: 0x40134420, - 0x28fc: 0x40134620, 0x28fd: 0x40134820, 0x28fe: 0x40134a20, 0x28ff: 0x40134c20, - // Block 0xa4, offset 0x2900 - 0x2900: 0x40134e20, 0x2901: 0x40135020, 0x2902: 0x40135220, 0x2903: 0x40135420, - 0x2904: 0x40135620, 0x2905: 0x40135820, 0x2906: 0x40135a20, 0x2907: 0x40135c20, - 0x2908: 0x40135e20, 0x2909: 0x40136020, 0x290a: 0x40136220, 0x290b: 0x40136420, - 0x290c: 0x40136620, 0x290d: 0x40136820, 0x290e: 0x40136a20, 0x290f: 0x40136c20, - 0x2910: 0x40136e20, 0x2911: 0x40137020, 0x2912: 0x40137220, 0x2913: 0x40137420, - 0x2914: 0x40137620, 0x2915: 0x40137820, 0x2916: 0x40137a20, 0x2917: 0x40137c20, - 0x2918: 0x40137e20, 0x2919: 0x40138020, 0x291a: 0x40138220, 0x291b: 0x40138420, - 0x291c: 0x40138620, 0x291d: 0x40138820, 0x291e: 0x40138a20, 0x291f: 0x40138c20, - 0x2920: 0x40138e20, 0x2921: 0x40139020, 0x2922: 0x40139220, 0x2923: 0x40139420, - 0x2924: 0x40139620, 0x2925: 0x40139820, 0x2926: 0x40139a20, 0x2927: 0x40139c20, - 0x2928: 0x40139e20, 0x2929: 0x4013a020, 0x292a: 0x4013a220, 0x292b: 0x4013a420, - 0x292c: 0x4013a620, 0x292d: 0x4013a820, 0x292e: 0x4013aa20, 0x292f: 0x4013ac20, - 0x2930: 0x4013ae20, 0x2931: 0x4013b020, 0x2932: 0x4013b220, 0x2933: 0x4013b420, - 0x2934: 0x4013b620, 0x2935: 0x4013b820, 0x2936: 0x4013ba20, 0x2937: 0x4013bc20, - 0x2938: 0x4013be20, 0x2939: 0x4013c020, 0x293a: 0x4013c220, 0x293b: 0x4013c420, - 0x293c: 0x4013c620, 0x293d: 0x4013c820, 0x293e: 0x4013ca20, 0x293f: 0x4013cc20, - // Block 0xa5, offset 0x2940 - 0x2940: 0x4013ce20, 0x2941: 0x4013d020, 0x2942: 0x4013d220, 0x2943: 0x40041420, - 0x2944: 0x40041620, 0x2945: 0x40041820, 0x2946: 0x40041a20, 0x2947: 0x40041c20, - 0x2948: 0x40041e20, 0x2949: 0x40042020, 0x294a: 0x40042220, 0x294b: 0x40042420, - 0x294c: 0x40042620, 0x294d: 0x40042820, 0x294e: 0x40042a20, 0x294f: 0x40042c20, - 0x2950: 0x40042e20, 0x2951: 0x40043020, 0x2952: 0x40043220, 0x2953: 0x40043420, - 0x2954: 0x40043620, 0x2955: 0x40043820, 0x2956: 0x40043a20, 0x2957: 0x40043c20, - 0x2958: 0x40043e20, 0x2959: 0x4013d420, 0x295a: 0x4013d620, 0x295b: 0x4013d820, - 0x295c: 0x4013da20, 0x295d: 0x4013dc20, 0x295e: 0x4013de20, 0x295f: 0x4013e020, - 0x2960: 0x4013e220, 0x2961: 0x4013e420, 0x2962: 0x4013e620, 0x2963: 0x4013e820, - 0x2964: 0x4013ea20, 0x2965: 0x4013ec20, 0x2966: 0x4013ee20, 0x2967: 0x4013f020, - 0x2968: 0x4013f220, 0x2969: 0x4013f420, 0x296a: 0x4013f620, 0x296b: 0x4013f820, - 0x296c: 0x4013fa20, 0x296d: 0x4013fc20, 0x296e: 0x4013fe20, 0x296f: 0x40140020, - 0x2970: 0x40140220, 0x2971: 0x40140420, 0x2972: 0x40140620, 0x2973: 0x40140820, - 0x2974: 0x40140a20, 0x2975: 0x40140c20, 0x2976: 0x40140e20, 0x2977: 0x40141020, - 0x2978: 0x40141220, 0x2979: 0x40141420, 0x297a: 0x40141620, 0x297b: 0x40141820, - 0x297c: 0x40141a20, 0x297d: 0x40141c20, 0x297e: 0x40141e20, 0x297f: 0x40142020, - // Block 0xa6, offset 0x2980 - 0x2980: 0x40142220, 0x2981: 0x40142420, 0x2982: 0x40142620, 0x2983: 0x40142820, - 0x2984: 0x40142a20, 0x2985: 0x40142c20, 0x2986: 0x40142e20, 0x2987: 0x40143020, - 0x2988: 0x40143220, 0x2989: 0x40143420, 0x298a: 0x40143620, 0x298b: 0x40143820, - 0x298c: 0x40143a20, 0x298d: 0x40143c20, 0x298e: 0x40143e20, 0x298f: 0x40144020, - 0x2990: 0x40144220, 0x2991: 0x40144420, 0x2992: 0x40144620, 0x2993: 0x40144820, - 0x2994: 0x40144a20, 0x2995: 0x40144c20, 0x2996: 0x40144e20, 0x2997: 0x40145020, - 0x2998: 0x4004c620, 0x2999: 0x4004c820, 0x299a: 0x4004ca20, 0x299b: 0x4004cc20, - 0x299c: 0x40145220, 0x299d: 0x40145420, 0x299e: 0x40145620, 0x299f: 0x40145820, - 0x29a0: 0x40145a20, 0x29a1: 0x40145c20, 0x29a2: 0x40145e20, 0x29a3: 0x40146020, - 0x29a4: 0x40146220, 0x29a5: 0x40146420, 0x29a6: 0x40146620, 0x29a7: 0x40146820, - 0x29a8: 0x40146a20, 0x29a9: 0x40146c20, 0x29aa: 0x40146e20, 0x29ab: 0x40147020, - 0x29ac: 0x40147220, 0x29ad: 0x40147420, 0x29ae: 0x40147620, 0x29af: 0x40147820, - 0x29b0: 0x40147a20, 0x29b1: 0x40147c20, 0x29b2: 0x40147e20, 0x29b3: 0x40148020, - 0x29b4: 0x40148220, 0x29b5: 0x40148420, 0x29b6: 0x40148620, 0x29b7: 0x40148820, - 0x29b8: 0x40148a20, 0x29b9: 0x40148c20, 0x29ba: 0x40148e20, 0x29bb: 0x40149020, - 0x29bc: 0x40041020, 0x29bd: 0x40041220, 0x29be: 0x40149220, 0x29bf: 0x40149420, - // Block 0xa7, offset 0x29c0 - 0x29c0: 0x40149620, 0x29c1: 0x40149820, 0x29c2: 0x40149a20, 0x29c3: 0x40149c20, - 0x29c4: 0x40149e20, 0x29c5: 0x4014a020, 0x29c6: 0x4014a220, 0x29c7: 0x4014a420, - 0x29c8: 0x4014a620, 0x29c9: 0x4014a820, 0x29ca: 0x4014aa20, 0x29cb: 0x4014ac20, - 0x29cc: 0xe00000f0, 0x29cd: 0x4014ae20, 0x29ce: 0x4014b020, 0x29cf: 0x4014b220, - 0x29d0: 0x4014b420, 0x29d1: 0x4014b620, 0x29d2: 0x4014b820, 0x29d3: 0x4014ba20, - 0x29d4: 0x4014bc20, 0x29d5: 0x4014be20, 0x29d6: 0x4014c020, 0x29d7: 0x4014c220, - 0x29d8: 0x4014c420, 0x29d9: 0x4014c620, 0x29da: 0x4014c820, 0x29db: 0x4014ca20, - 0x29dc: 0x4014cc20, 0x29dd: 0x4014ce20, 0x29de: 0x4014d020, 0x29df: 0x4014d220, - 0x29e0: 0x4014d420, 0x29e1: 0x4014d620, 0x29e2: 0x4014d820, 0x29e3: 0x4014da20, - 0x29e4: 0x4014dc20, 0x29e5: 0x4014de20, 0x29e6: 0x4014e020, 0x29e7: 0x4014e220, - 0x29e8: 0x4014e420, 0x29e9: 0x4014e620, 0x29ea: 0x4014e820, 0x29eb: 0x4014ea20, - 0x29ec: 0x4014ec20, 0x29ed: 0x4014ee20, 0x29ee: 0x4014f020, 0x29ef: 0x4014f220, - 0x29f0: 0x4014f420, 0x29f1: 0x4014f620, 0x29f2: 0x4014f820, 0x29f3: 0x4014fa20, - 0x29f4: 0x4014fc20, 0x29f5: 0x4014fe20, 0x29f6: 0x40150020, 0x29f7: 0x40150220, - 0x29f8: 0x40150420, 0x29f9: 0x40150620, 0x29fa: 0x40150820, 0x29fb: 0x40150a20, - 0x29fc: 0x40150c20, 0x29fd: 0x40150e20, 0x29fe: 0x40151020, 0x29ff: 0x40151220, - // Block 0xa8, offset 0x2a00 - 0x2a00: 0x40151420, 0x2a01: 0x40151620, 0x2a02: 0x40151820, 0x2a03: 0x40151a20, - 0x2a04: 0x40151c20, 0x2a05: 0x40151e20, 0x2a06: 0x40152020, 0x2a07: 0x40152220, - 0x2a08: 0x40152420, 0x2a09: 0x40152620, 0x2a0a: 0x40152820, 0x2a0b: 0x40152a20, - 0x2a0c: 0x40152c20, 0x2a0d: 0x40152e20, 0x2a0e: 0x40153020, 0x2a0f: 0x40153220, - 0x2a10: 0x40153420, 0x2a11: 0x40153620, 0x2a12: 0x40153820, 0x2a13: 0x40153a20, - 0x2a14: 0x40153c20, 0x2a15: 0x40153e20, 0x2a16: 0x40154020, 0x2a17: 0x40154220, - 0x2a18: 0x40154420, 0x2a19: 0x40154620, 0x2a1a: 0x40154820, 0x2a1b: 0x40154a20, - 0x2a1c: 0x40154c20, 0x2a1d: 0x40154e20, 0x2a1e: 0x40155020, 0x2a1f: 0x40155220, - 0x2a20: 0x40155420, 0x2a21: 0x40155620, 0x2a22: 0x40155820, 0x2a23: 0x40155a20, - 0x2a24: 0x40155c20, 0x2a25: 0x40155e20, 0x2a26: 0x40156020, 0x2a27: 0x40156220, - 0x2a28: 0x40156420, 0x2a29: 0x40156620, 0x2a2a: 0x40156820, 0x2a2b: 0x40156a20, - 0x2a2c: 0x40156c20, 0x2a2d: 0x40156e20, 0x2a2e: 0x40157020, 0x2a2f: 0x40157220, - 0x2a30: 0x40157420, 0x2a31: 0x40157620, 0x2a32: 0x40157820, 0x2a33: 0x40157a20, - 0x2a34: 0xf0000404, 0x2a35: 0xf0001f04, 0x2a36: 0xf0000404, 0x2a37: 0x40157c20, - 0x2a38: 0x40157e20, 0x2a39: 0x40158020, 0x2a3a: 0x40158220, 0x2a3b: 0x40158420, - 0x2a3c: 0x40158620, 0x2a3d: 0x40158820, 0x2a3e: 0x40158a20, 0x2a3f: 0x40158c20, - // Block 0xa9, offset 0x2a40 - 0x2a40: 0x40158e20, 0x2a41: 0x40159020, 0x2a42: 0x40159220, 0x2a43: 0x40159420, - 0x2a44: 0x40159620, 0x2a45: 0x40159820, 0x2a46: 0x40159a20, 0x2a47: 0x40159c20, - 0x2a48: 0x40159e20, 0x2a49: 0x4015a020, 0x2a4a: 0x4015a220, 0x2a4b: 0x4015a420, - 0x2a4c: 0x4015a620, 0x2a4d: 0x4015a820, 0x2a4e: 0x4015aa20, 0x2a4f: 0x4015ac20, - 0x2a50: 0x4015ae20, 0x2a51: 0x4015b020, 0x2a52: 0x4015b220, 0x2a53: 0x4015b420, - 0x2a54: 0x4015b620, 0x2a55: 0x4015b820, 0x2a56: 0x4015ba20, 0x2a57: 0x4015bc20, - 0x2a58: 0x4015be20, 0x2a59: 0x4015c020, 0x2a5a: 0x4015c220, 0x2a5b: 0x4015c420, - 0x2a5c: 0x4015c620, 0x2a5d: 0x4015c820, 0x2a5e: 0x4015ca20, 0x2a5f: 0x4015cc20, - 0x2a60: 0x4015ce20, 0x2a61: 0x4015d020, 0x2a62: 0x4015d220, 0x2a63: 0x4015d420, - 0x2a64: 0x4015d620, 0x2a65: 0x4015d820, 0x2a66: 0x4015da20, 0x2a67: 0x4015dc20, - 0x2a68: 0x4015de20, 0x2a69: 0x4015e020, 0x2a6a: 0x4015e220, 0x2a6b: 0x4015e420, - 0x2a6c: 0x4015e620, 0x2a6d: 0x4015e820, 0x2a6e: 0x4015ea20, 0x2a6f: 0x4015ec20, - 0x2a70: 0x4015ee20, 0x2a71: 0x4015f020, 0x2a72: 0x4015f220, 0x2a73: 0x4015f420, - 0x2a74: 0x4015f620, 0x2a75: 0x4015f820, 0x2a76: 0x4015fa20, 0x2a77: 0x4015fc20, - 0x2a78: 0x4015fe20, 0x2a79: 0x40160020, 0x2a7a: 0x40160220, 0x2a7b: 0x40160420, - 0x2a7c: 0x40160620, 0x2a7d: 0x40160820, 0x2a7e: 0x40160a20, 0x2a7f: 0x40160c20, - // Block 0xaa, offset 0x2a80 - 0x2a80: 0x40160e20, 0x2a81: 0x40161020, 0x2a82: 0x40161220, 0x2a83: 0x40161420, - 0x2a84: 0x40161620, 0x2a85: 0x40161820, 0x2a86: 0x40161a20, 0x2a87: 0x40161c20, - 0x2a88: 0x40161e20, 0x2a89: 0x40162020, 0x2a8a: 0x40162220, 0x2a8b: 0x40162420, - 0x2a8c: 0x40162620, 0x2a8d: 0x40162820, 0x2a8e: 0x40162a20, 0x2a8f: 0x40162c20, - 0x2a90: 0x40162e20, 0x2a91: 0x40163020, 0x2a92: 0x40163220, 0x2a93: 0x40163420, - 0x2a94: 0x40163620, 0x2a95: 0x40163820, 0x2a96: 0x40163a20, 0x2a97: 0x40163c20, - 0x2a98: 0x40163e20, 0x2a99: 0x40164020, 0x2a9a: 0x40164220, 0x2a9b: 0x40164420, - 0x2a9c: 0xe000014f, 0x2a9d: 0x40164620, 0x2a9e: 0x40164820, 0x2a9f: 0x40164a20, - 0x2aa0: 0x40164c20, 0x2aa1: 0x40164e20, 0x2aa2: 0x40165020, 0x2aa3: 0x40165220, - 0x2aa4: 0x40165420, 0x2aa5: 0x40165620, 0x2aa6: 0x40165820, 0x2aa7: 0x40165a20, - 0x2aa8: 0x40165c20, 0x2aa9: 0x40165e20, 0x2aaa: 0x40166020, 0x2aab: 0x40166220, - 0x2aac: 0x40166420, 0x2aad: 0x40166620, 0x2aae: 0x40166820, 0x2aaf: 0x40166a20, - 0x2ab0: 0x40166c20, 0x2ab1: 0x40166e20, 0x2ab2: 0x40167020, 0x2ab3: 0x40167220, - 0x2ab4: 0x40167420, 0x2ab5: 0x40167620, 0x2ab6: 0x40167820, 0x2ab7: 0x40167a20, - 0x2ab8: 0x40167c20, 0x2ab9: 0x40167e20, 0x2aba: 0x40168020, 0x2abb: 0x40168220, - 0x2abc: 0x40168420, 0x2abd: 0x40168620, 0x2abe: 0x40168820, 0x2abf: 0x40168a20, - // Block 0xab, offset 0x2ac0 - 0x2ac0: 0x40168c20, 0x2ac1: 0x40168e20, 0x2ac2: 0x40169020, 0x2ac3: 0x40169220, - 0x2ac4: 0x40169420, 0x2ac5: 0x40169620, 0x2ac6: 0x40169820, 0x2ac7: 0x40169a20, - 0x2ac8: 0x40169c20, 0x2ac9: 0x40169e20, 0x2aca: 0x4016a020, 0x2acb: 0x4016a220, - 0x2acc: 0x4016a420, 0x2acd: 0x4016a620, 0x2ace: 0x4016a820, 0x2acf: 0x4016aa20, - 0x2ad0: 0x4016ac20, 0x2ad1: 0x4016ae20, 0x2ad2: 0x4016b020, 0x2ad3: 0x4016b220, - 0x2ad4: 0x4016b420, 0x2ad5: 0x4016b620, 0x2ad6: 0x4016b820, 0x2ad7: 0x4016ba20, - 0x2ad8: 0x4016bc20, 0x2ad9: 0x4016be20, 0x2ada: 0x4016c020, 0x2adb: 0x4016c220, - 0x2adc: 0x4016c420, 0x2add: 0x4016c620, 0x2ade: 0x4016c820, 0x2adf: 0x4016ca20, - 0x2ae0: 0x4016cc20, 0x2ae1: 0x4016ce20, 0x2ae2: 0x4016d020, 0x2ae3: 0x4016d220, - 0x2ae4: 0x4016d420, 0x2ae5: 0x4016d620, 0x2ae6: 0x4016d820, 0x2ae7: 0x4016da20, - 0x2ae8: 0x4016dc20, 0x2ae9: 0x4016de20, 0x2aea: 0x4016e020, 0x2aeb: 0x4016e220, - 0x2aec: 0x4016e420, 0x2aed: 0x4016e620, 0x2aee: 0x4016e820, 0x2aef: 0x4016ea20, - 0x2af0: 0x4016ec20, 0x2af1: 0x4016ee20, 0x2af2: 0x4016f020, 0x2af3: 0x4016f220, - 0x2af4: 0x4016f420, 0x2af5: 0x4016f620, 0x2af6: 0x4016f820, 0x2af7: 0x4016fa20, - 0x2af8: 0x4016fc20, 0x2af9: 0x4016fe20, 0x2afa: 0x40170020, 0x2afb: 0x40170220, - 0x2afc: 0x40170420, 0x2afd: 0x40170620, 0x2afe: 0x40170820, 0x2aff: 0x40170a20, - // Block 0xac, offset 0x2b00 - 0x2b00: 0x40170c20, 0x2b01: 0x40170e20, 0x2b02: 0x40171020, 0x2b03: 0x40171220, - 0x2b04: 0x40171420, 0x2b05: 0x40171620, 0x2b06: 0x40171820, 0x2b07: 0x40171a20, - 0x2b08: 0x40171c20, 0x2b09: 0x40171e20, 0x2b0a: 0x40172020, 0x2b0b: 0x40172220, - 0x2b0c: 0x40172420, - 0x2b10: 0x40172620, 0x2b11: 0x40172820, 0x2b12: 0x40172a20, 0x2b13: 0x40172c20, - 0x2b14: 0x40172e20, 0x2b15: 0x40173020, 0x2b16: 0x40173220, 0x2b17: 0x40173420, - 0x2b18: 0x40173620, 0x2b19: 0x40173820, - // Block 0xad, offset 0x2b40 - 0x2b40: 0x00373888, 0x2b41: 0x00373a88, 0x2b42: 0x00373c88, 0x2b43: 0x00373e88, - 0x2b44: 0x00374088, 0x2b45: 0x00374288, 0x2b46: 0x00374488, 0x2b47: 0x00374688, - 0x2b48: 0x00374888, 0x2b49: 0x00374a88, 0x2b4a: 0x00374c88, 0x2b4b: 0x00374e88, - 0x2b4c: 0x00375088, 0x2b4d: 0x00375288, 0x2b4e: 0x00375488, 0x2b4f: 0x00375688, - 0x2b50: 0x00375888, 0x2b51: 0x00375a88, 0x2b52: 0x00375c88, 0x2b53: 0x00375e88, - 0x2b54: 0x00376088, 0x2b55: 0x00376288, 0x2b56: 0x00376488, 0x2b57: 0x00376688, - 0x2b58: 0x00376888, 0x2b59: 0x00376a88, 0x2b5a: 0x00376c88, 0x2b5b: 0x00376e88, - 0x2b5c: 0x00377088, 0x2b5d: 0x00377288, 0x2b5e: 0x00377488, 0x2b5f: 0x00377688, - 0x2b60: 0x00377888, 0x2b61: 0x00377a88, 0x2b62: 0x00377c88, 0x2b63: 0x00377e88, - 0x2b64: 0x00378088, 0x2b65: 0x00378288, 0x2b66: 0x00378488, 0x2b67: 0x00378688, - 0x2b68: 0x00378888, 0x2b69: 0x00378a88, 0x2b6a: 0x00378c88, 0x2b6b: 0x00378e88, - 0x2b6c: 0x00379088, 0x2b6d: 0x00379288, 0x2b6e: 0x00379488, - 0x2b70: 0x40373820, 0x2b71: 0x40373a20, 0x2b72: 0x40373c20, 0x2b73: 0x40373e20, - 0x2b74: 0x40374020, 0x2b75: 0x40374220, 0x2b76: 0x40374420, 0x2b77: 0x40374620, - 0x2b78: 0x40374820, 0x2b79: 0x40374a20, 0x2b7a: 0x40374c20, 0x2b7b: 0x40374e20, - 0x2b7c: 0x40375020, 0x2b7d: 0x40375220, 0x2b7e: 0x40375420, 0x2b7f: 0x40375620, - // Block 0xae, offset 0x2b80 - 0x2b80: 0x40375820, 0x2b81: 0x40375a20, 0x2b82: 0x40375c20, 0x2b83: 0x40375e20, - 0x2b84: 0x40376020, 0x2b85: 0x40376220, 0x2b86: 0x40376420, 0x2b87: 0x40376620, - 0x2b88: 0x40376820, 0x2b89: 0x40376a20, 0x2b8a: 0x40376c20, 0x2b8b: 0x40376e20, - 0x2b8c: 0x40377020, 0x2b8d: 0x40377220, 0x2b8e: 0x40377420, 0x2b8f: 0x40377620, - 0x2b90: 0x40377820, 0x2b91: 0x40377a20, 0x2b92: 0x40377c20, 0x2b93: 0x40377e20, - 0x2b94: 0x40378020, 0x2b95: 0x40378220, 0x2b96: 0x40378420, 0x2b97: 0x40378620, - 0x2b98: 0x40378820, 0x2b99: 0x40378a20, 0x2b9a: 0x40378c20, 0x2b9b: 0x40378e20, - 0x2b9c: 0x40379020, 0x2b9d: 0x40379220, 0x2b9e: 0x40379420, - 0x2ba0: 0x002e4088, 0x2ba1: 0x402e4020, 0x2ba2: 0x002e4288, 0x2ba3: 0x002f3688, - 0x2ba4: 0x002fbe88, 0x2ba5: 0x402be820, 0x2ba6: 0x40303e20, 0x2ba7: 0x002d8888, - 0x2ba8: 0x402d8820, 0x2ba9: 0x002e1288, 0x2baa: 0x402e1220, 0x2bab: 0x00316088, - 0x2bac: 0x40316020, 0x2bad: 0x002bf888, 0x2bae: 0x002e9088, 0x2baf: 0x002bf088, - 0x2bb0: 0x002c0288, 0x2bb1: 0x4030d420, 0x2bb2: 0x0030ec88, 0x2bb3: 0x4030ec20, - 0x2bb4: 0x4030d620, 0x2bb5: 0x002d8a88, 0x2bb6: 0x402d8a20, 0x2bb7: 0x402f5420, - 0x2bb8: 0x402cac20, 0x2bb9: 0x402fb420, 0x2bba: 0x402f0e20, 0x2bbb: 0x402cb620, - 0x2bbc: 0x002dcc95, 0x2bbd: 0x0030be9d, 0x2bbe: 0x002ffc88, 0x2bbf: 0x00315888, - // Block 0xaf, offset 0x2bc0 - 0x2bc0: 0x0032aa88, 0x2bc1: 0x4032aa20, 0x2bc2: 0x0032ac88, 0x2bc3: 0x4032ac20, - 0x2bc4: 0x0032ae88, 0x2bc5: 0x4032ae20, 0x2bc6: 0x0032b088, 0x2bc7: 0x4032b020, - 0x2bc8: 0x0032b288, 0x2bc9: 0x4032b220, 0x2bca: 0x0032b688, 0x2bcb: 0x4032b620, - 0x2bcc: 0x0032b888, 0x2bcd: 0x4032b820, 0x2bce: 0x0032ba88, 0x2bcf: 0x4032ba20, - 0x2bd0: 0x0032bc88, 0x2bd1: 0x4032bc20, 0x2bd2: 0x0032be88, 0x2bd3: 0x4032be20, - 0x2bd4: 0x0032c088, 0x2bd5: 0x4032c020, 0x2bd6: 0x0032c488, 0x2bd7: 0x4032c420, - 0x2bd8: 0x0032c688, 0x2bd9: 0x4032c620, 0x2bda: 0x0032c888, 0x2bdb: 0x4032c820, - 0x2bdc: 0x0032ce88, 0x2bdd: 0x4032ce20, 0x2bde: 0x0032d088, 0x2bdf: 0x4032d020, - 0x2be0: 0x0032d288, 0x2be1: 0x4032d220, 0x2be2: 0x0032d488, 0x2be3: 0x4032d420, - 0x2be4: 0x0032d688, 0x2be5: 0x4032d620, 0x2be6: 0x0032d888, 0x2be7: 0x4032d820, - 0x2be8: 0x0032da88, 0x2be9: 0x4032da20, 0x2bea: 0x0032dc88, 0x2beb: 0x4032dc20, - 0x2bec: 0x0032de88, 0x2bed: 0x4032de20, 0x2bee: 0x0032e088, 0x2bef: 0x4032e020, - 0x2bf0: 0x0032e288, 0x2bf1: 0x4032e220, 0x2bf2: 0x00331888, 0x2bf3: 0x40331820, - 0x2bf4: 0x00331a88, 0x2bf5: 0x40331a20, 0x2bf6: 0x0032b488, 0x2bf7: 0x4032b420, - 0x2bf8: 0x0032c288, 0x2bf9: 0x4032c220, 0x2bfa: 0x0032ca88, 0x2bfb: 0x4032ca20, - 0x2bfc: 0x0032cc88, 0x2bfd: 0x4032cc20, 0x2bfe: 0x0032e488, 0x2bff: 0x4032e420, - // Block 0xb0, offset 0x2c00 - 0x2c00: 0x0032e688, 0x2c01: 0x4032e620, 0x2c02: 0x0032ec88, 0x2c03: 0x4032ec20, - 0x2c04: 0x0032ee88, 0x2c05: 0x4032ee20, 0x2c06: 0x0032f088, 0x2c07: 0x4032f020, - 0x2c08: 0x0032f888, 0x2c09: 0x4032f820, 0x2c0a: 0x0032fc88, 0x2c0b: 0x4032fc20, - 0x2c0c: 0x0032fe88, 0x2c0d: 0x4032fe20, 0x2c0e: 0x00330088, 0x2c0f: 0x40330020, - 0x2c10: 0x00330288, 0x2c11: 0x40330220, 0x2c12: 0x00330488, 0x2c13: 0x40330420, - 0x2c14: 0x00330688, 0x2c15: 0x40330620, 0x2c16: 0x00330c88, 0x2c17: 0x40330c20, - 0x2c18: 0x00331088, 0x2c19: 0x40331020, 0x2c1a: 0x00331288, 0x2c1b: 0x40331220, - 0x2c1c: 0x00331488, 0x2c1d: 0x40331420, 0x2c1e: 0x00331c88, 0x2c1f: 0x40331c20, - 0x2c20: 0x00331e88, 0x2c21: 0x40331e20, 0x2c22: 0x00332088, 0x2c23: 0x40332020, - 0x2c24: 0xe00014b0, 0x2c25: 0x40173a20, 0x2c26: 0x40173c20, 0x2c27: 0x40173e20, - 0x2c28: 0x40174020, 0x2c29: 0x40174220, 0x2c2a: 0x40174420, 0x2c2b: 0x0032ea88, - 0x2c2c: 0x4032ea20, 0x2c2d: 0x00330a88, 0x2c2e: 0x40330a20, 0x2c2f: 0xae605f02, - 0x2c30: 0xae602a02, 0x2c31: 0xae602202, 0x2c32: 0x0032f688, 0x2c33: 0x4032f620, - 0x2c39: 0x4002f820, 0x2c3a: 0x4002d420, 0x2c3b: 0x4002d620, - 0x2c3c: 0x4003b620, 0x2c3d: 0x4028b420, 0x2c3e: 0x4002fa20, 0x2c3f: 0x4003b820, - // Block 0xb1, offset 0x2c40 - 0x2c40: 0x40379820, 0x2c41: 0x40379c20, 0x2c42: 0x4037a020, 0x2c43: 0x4037a420, - 0x2c44: 0x4037a820, 0x2c45: 0x4037ac20, 0x2c46: 0x4037b020, 0x2c47: 0x4037b820, - 0x2c48: 0x4037bc20, 0x2c49: 0x4037c020, 0x2c4a: 0x4037c420, 0x2c4b: 0x4037c820, - 0x2c4c: 0x4037cc20, 0x2c4d: 0x4037d420, 0x2c4e: 0x4037d820, 0x2c4f: 0x4037dc20, - 0x2c50: 0x4037e020, 0x2c51: 0x4037e420, 0x2c52: 0x4037e820, 0x2c53: 0x4037f020, - 0x2c54: 0x4037f420, 0x2c55: 0x4037f820, 0x2c56: 0x4037fc20, 0x2c57: 0x40380020, - 0x2c58: 0x40380420, 0x2c59: 0x40380820, 0x2c5a: 0x40380c20, 0x2c5b: 0x40381020, - 0x2c5c: 0x40381420, 0x2c5d: 0x40381820, 0x2c5e: 0x40381c20, 0x2c5f: 0x40382420, - 0x2c60: 0x40382820, 0x2c61: 0x4037b420, 0x2c62: 0x4037d020, 0x2c63: 0x4037ec20, - 0x2c64: 0x40382020, 0x2c65: 0x40382c20, 0x2c67: 0x40383220, - 0x2c6d: 0x40383c20, - 0x2c70: 0x403bbc20, 0x2c71: 0x403bbe20, 0x2c72: 0x403bc020, 0x2c73: 0x403bc220, - 0x2c74: 0x403bc420, 0x2c75: 0x403bc620, 0x2c76: 0x403bc820, 0x2c77: 0x403bca20, - 0x2c78: 0x403bcc20, 0x2c79: 0x403bce20, 0x2c7a: 0x403bd020, 0x2c7b: 0x403bd220, - 0x2c7c: 0x403bd620, 0x2c7d: 0x403bd820, 0x2c7e: 0x403bda20, 0x2c7f: 0x403bdc20, - // Block 0xb2, offset 0x2c80 - 0x2c80: 0x403bde20, 0x2c81: 0x403be020, 0x2c82: 0x403be220, 0x2c83: 0x403be420, - 0x2c84: 0x403be620, 0x2c85: 0x403be820, 0x2c86: 0x403bea20, 0x2c87: 0x403bec20, - 0x2c88: 0x403bee20, 0x2c89: 0x403bf020, 0x2c8a: 0x403bf220, 0x2c8b: 0x403bf420, - 0x2c8c: 0x403bf620, 0x2c8d: 0x403bf820, 0x2c8e: 0x403bfa20, 0x2c8f: 0x403bfc20, - 0x2c90: 0x403bfe20, 0x2c91: 0x403c0020, 0x2c92: 0x403c0220, 0x2c93: 0x403c0420, - 0x2c94: 0x403c0820, 0x2c95: 0x403c0a20, 0x2c96: 0x403c0c20, 0x2c97: 0x403c0e20, - 0x2c98: 0x403c1020, 0x2c99: 0x403c1220, 0x2c9a: 0x403c1420, 0x2c9b: 0x403c1620, - 0x2c9c: 0x403c1820, 0x2c9d: 0x403c1a20, 0x2c9e: 0x403c1c20, 0x2c9f: 0x403c1e20, - 0x2ca0: 0x403c2020, 0x2ca1: 0x403c2220, 0x2ca2: 0x403c2420, 0x2ca3: 0x403c2620, - 0x2ca4: 0x403c2820, 0x2ca5: 0x403c2a20, 0x2ca6: 0x403bd420, 0x2ca7: 0x403c0620, - 0x2caf: 0x403c2c20, - 0x2cb0: 0x4005e620, - 0x2cbf: 0xa0900000, - // Block 0xb3, offset 0x2cc0 - 0x2cc0: 0x403c4e20, 0x2cc1: 0x403c7820, 0x2cc2: 0x403c9a20, 0x2cc3: 0x403cac20, - 0x2cc4: 0x403cca20, 0x2cc5: 0x403d1620, 0x2cc6: 0x403d3820, 0x2cc7: 0x403d4a20, - 0x2cc8: 0x403d7620, 0x2cc9: 0x403d8820, 0x2cca: 0x403d9a20, 0x2ccb: 0x403dfc20, - 0x2ccc: 0x403e3a20, 0x2ccd: 0x403e5820, 0x2cce: 0x403e6a20, 0x2ccf: 0x403eae20, - 0x2cd0: 0x403ec020, 0x2cd1: 0x403ee020, 0x2cd2: 0x403f4020, 0x2cd3: 0x403e9620, - 0x2cd4: 0x403e9820, 0x2cd5: 0x403e9a20, 0x2cd6: 0x403e9c20, - 0x2ce0: 0x403f4820, 0x2ce1: 0x403f4a20, 0x2ce2: 0x403f4c20, 0x2ce3: 0x403f4e20, - 0x2ce4: 0x403f5020, 0x2ce5: 0x403f5220, 0x2ce6: 0x403f5420, - 0x2ce8: 0x403f5620, 0x2ce9: 0x403f5820, 0x2cea: 0x403f5a20, 0x2ceb: 0x403f5c20, - 0x2cec: 0x403f5e20, 0x2ced: 0x403f6020, 0x2cee: 0x403f6220, - 0x2cf0: 0x403f6420, 0x2cf1: 0x403f6620, 0x2cf2: 0x403f6820, 0x2cf3: 0x403f6a20, - 0x2cf4: 0x403f6c20, 0x2cf5: 0x403f6e20, 0x2cf6: 0x403f7020, - 0x2cf8: 0x403f7220, 0x2cf9: 0x403f7420, 0x2cfa: 0x403f7620, 0x2cfb: 0x403f7820, - 0x2cfc: 0x403f7a20, 0x2cfd: 0x403f7c20, 0x2cfe: 0x403f7e20, - // Block 0xb4, offset 0x2d00 - 0x2d00: 0x403f8020, 0x2d01: 0x403f8220, 0x2d02: 0x403f8420, 0x2d03: 0x403f8620, - 0x2d04: 0x403f8820, 0x2d05: 0x403f8a20, 0x2d06: 0x403f8c20, - 0x2d08: 0x403f8e20, 0x2d09: 0x403f9020, 0x2d0a: 0x403f9220, 0x2d0b: 0x403f9420, - 0x2d0c: 0x403f9620, 0x2d0d: 0x403f9820, 0x2d0e: 0x403f9a20, - 0x2d10: 0x403f9c20, 0x2d11: 0x403f9e20, 0x2d12: 0x403fa020, 0x2d13: 0x403fa220, - 0x2d14: 0x403fa420, 0x2d15: 0x403fa620, 0x2d16: 0x403fa820, - 0x2d18: 0x403faa20, 0x2d19: 0x403fac20, 0x2d1a: 0x403fae20, 0x2d1b: 0x403fb020, - 0x2d1c: 0x403fb220, 0x2d1d: 0x403fb420, 0x2d1e: 0x403fb620, - 0x2d20: 0x84e619a9, 0x2d21: 0x84e619ad, 0x2d22: 0x84e619b1, 0x2d23: 0x84e619c5, - 0x2d24: 0x84e619e5, 0x2d25: 0x84e619f2, 0x2d26: 0x84e61a28, 0x2d27: 0x84e61a42, - 0x2d28: 0x84e61a54, 0x2d29: 0x84e61a5d, 0x2d2a: 0x84e61a77, 0x2d2b: 0x84e61a87, - 0x2d2c: 0x84e61a94, 0x2d2d: 0x84e61a9d, 0x2d2e: 0x84e61aa6, 0x2d2f: 0x84e61ada, - 0x2d30: 0x84e61b01, 0x2d31: 0x84e61b0c, 0x2d32: 0x84e61b2e, 0x2d33: 0x84e61b33, - 0x2d34: 0x84e61b86, 0x2d35: 0xe00014d8, 0x2d36: 0x84e61991, 0x2d37: 0x84e619d9, - 0x2d38: 0x84e61a27, 0x2d39: 0x84e61ad1, 0x2d3a: 0x84e61b4f, 0x2d3b: 0x84e61b5c, - 0x2d3c: 0x84e61b61, 0x2d3d: 0x84e61b6b, 0x2d3e: 0x84e61b70, 0x2d3f: 0x84e61b7a, - // Block 0xb5, offset 0x2d40 - 0x2d40: 0x40052620, 0x2d41: 0x40052820, 0x2d42: 0x40047420, 0x2d43: 0x40047620, - 0x2d44: 0x40047820, 0x2d45: 0x40047a20, 0x2d46: 0x40052a20, 0x2d47: 0x40052c20, - 0x2d48: 0x40052e20, 0x2d49: 0x40047c20, 0x2d4a: 0x40047e20, 0x2d4b: 0x40053020, - 0x2d4c: 0x40048020, 0x2d4d: 0x40048220, 0x2d4e: 0x40053220, 0x2d4f: 0x40053420, - 0x2d50: 0x40053620, 0x2d51: 0x40053820, 0x2d52: 0x40053a20, 0x2d53: 0x40053c20, - 0x2d54: 0x40053e20, 0x2d55: 0x40054020, 0x2d56: 0x40054220, 0x2d57: 0x40023620, - 0x2d58: 0x4002e220, 0x2d59: 0x4003ba20, 0x2d5a: 0x40054420, 0x2d5b: 0x40054620, - 0x2d5c: 0x40048420, 0x2d5d: 0x40048620, 0x2d5e: 0x40054820, 0x2d5f: 0x40054a20, - 0x2d60: 0x40048820, 0x2d61: 0x40048a20, 0x2d62: 0x40048c20, 0x2d63: 0x40048e20, - 0x2d64: 0x40049020, 0x2d65: 0x40049220, 0x2d66: 0x40049420, 0x2d67: 0x40049620, - 0x2d68: 0x40049820, 0x2d69: 0x40049a20, 0x2d6a: 0x4003ae20, 0x2d6b: 0x4003b020, - 0x2d6c: 0x4003b220, 0x2d6d: 0x4003b420, 0x2d6e: 0x4002c820, 0x2d6f: 0x40367020, - 0x2d70: 0x4002fc20, 0x2d71: 0x40030820, 0x2d72: 0x40024420, 0x2d73: 0x40030a20, - 0x2d74: 0x40024220, 0x2d75: 0x40026820, 0x2d76: 0x4004fc20, 0x2d77: 0x4004fe20, - 0x2d78: 0x40050020, 0x2d79: 0x4004d020, 0x2d7a: 0x40023020, 0x2d7b: 0x40023220, - // Block 0xb6, offset 0x2d80 - 0x2d80: 0xe0002401, 0x2d81: 0xe0002416, 0x2d82: 0x029cb684, 0x2d83: 0x029cb484, - 0x2d84: 0xe0002404, 0x2d85: 0x029d7684, 0x2d86: 0xe0002407, 0x2d87: 0xe000240a, - 0x2d88: 0xe000240d, 0x2d89: 0x02a40484, 0x2d8a: 0xe0002410, 0x2d8b: 0xe0002413, - 0x2d8c: 0xe0002419, 0x2d8d: 0xe000241c, 0x2d8e: 0xe000241f, 0x2d8f: 0x02b84684, - 0x2d90: 0x02b84484, 0x2d91: 0xe0002422, 0x2d92: 0x02bbe684, 0x2d93: 0x02bcf484, - 0x2d94: 0x02bea284, 0x2d95: 0xe0002425, 0x2d96: 0x02bf8884, 0x2d97: 0xe0002428, - 0x2d98: 0x02c49884, 0x2d99: 0x02ca6a84, 0x2d9b: 0x02cbc284, - 0x2d9c: 0xe000242b, 0x2d9d: 0xe000242e, 0x2d9e: 0xe0002436, 0x2d9f: 0x02d79a84, - 0x2da0: 0x02d82284, 0x2da1: 0x02d86a84, 0x2da2: 0x02d87484, 0x2da3: 0x02e0d884, - 0x2da4: 0x02e45684, 0x2da5: 0xe0002439, 0x2da6: 0x029c5884, 0x2da7: 0xe000243c, - 0x2da8: 0x02e55a84, 0x2da9: 0xe000243f, 0x2daa: 0xe0002442, 0x2dab: 0xe0002445, - 0x2dac: 0xe0002448, 0x2dad: 0x02f27684, 0x2dae: 0xe000244b, 0x2daf: 0x02f9f284, - 0x2db0: 0x02fd3e84, 0x2db1: 0x02fea684, 0x2db2: 0x02fea484, 0x2db3: 0xe0002451, - 0x2db4: 0xe0002454, 0x2db5: 0xe000244e, 0x2db6: 0xe0002457, 0x2db7: 0xe000245a, - 0x2db8: 0x02ff1684, 0x2db9: 0x03000484, 0x2dba: 0x03010084, 0x2dbb: 0xe000245d, - 0x2dbc: 0xe0002460, 0x2dbd: 0xe0002463, 0x2dbe: 0x0304f284, 0x2dbf: 0xe0002466, - // Block 0xb7, offset 0x2dc0 - 0x2dc0: 0xe0002469, 0x2dc1: 0x030c9c84, 0x2dc2: 0x0310c884, 0x2dc3: 0x03130084, - 0x2dc4: 0x0312fe84, 0x2dc5: 0x03138284, 0x2dc6: 0x0313a484, 0x2dc7: 0xe000246c, - 0x2dc8: 0x03174084, 0x2dc9: 0x031a3a84, 0x2dca: 0xe000246f, 0x2dcb: 0x031ecc84, - 0x2dcc: 0x031f6c84, 0x2dcd: 0xe0002472, 0x2dce: 0xe0002475, 0x2dcf: 0xe0002478, - 0x2dd0: 0x03290a84, 0x2dd1: 0x032aee84, 0x2dd2: 0x032af084, 0x2dd3: 0x032afe84, - 0x2dd4: 0x032bd084, 0x2dd5: 0xe000247b, 0x2dd6: 0x032c3a84, 0x2dd7: 0xe000247e, - 0x2dd8: 0x032ea484, 0x2dd9: 0x032fcc84, 0x2dda: 0x0330ea84, 0x2ddb: 0x03319c84, - 0x2ddc: 0x0331bc84, 0x2ddd: 0x0331be84, 0x2dde: 0xe0002481, 0x2ddf: 0x0331c084, - 0x2de0: 0x0332c684, 0x2de1: 0xe0002484, 0x2de2: 0x0334d884, 0x2de3: 0xe0002487, - 0x2de4: 0xe000248a, 0x2de5: 0x0338f884, 0x2de6: 0x033c3e84, 0x2de7: 0xe000248d, - 0x2de8: 0x033d4c84, 0x2de9: 0x033d8884, 0x2dea: 0x033dfc84, 0x2deb: 0xe0002490, - 0x2dec: 0x033ea084, 0x2ded: 0xe0002493, 0x2dee: 0x033efe84, 0x2def: 0xe0002496, - 0x2df0: 0x033f3284, 0x2df1: 0xe0002499, 0x2df2: 0xe000249c, 0x2df3: 0x033f3e84, - // Block 0xb8, offset 0x2e00 - 0x2e00: 0x029c0084, 0x2e01: 0x029c5084, 0x2e02: 0x029c6c84, 0x2e03: 0x029c7e84, - 0x2e04: 0x029cb284, 0x2e05: 0x029d0a84, 0x2e06: 0x029d1884, 0x2e07: 0x029d4084, - 0x2e08: 0x029d7484, 0x2e09: 0x02a27e84, 0x2e0a: 0x02a2ca84, 0x2e0b: 0x02a2d684, - 0x2e0c: 0x02a30484, 0x2e0d: 0x02a32c84, 0x2e0e: 0x02a35684, 0x2e0f: 0x02a3c084, - 0x2e10: 0x02a3ea84, 0x2e11: 0x02a40084, 0x2e12: 0x02a53684, 0x2e13: 0x02a5f284, - 0x2e14: 0x02a62a84, 0x2e15: 0x02a63484, 0x2e16: 0x02a67084, 0x2e17: 0x02a68284, - 0x2e18: 0x02a6b884, 0x2e19: 0x02a6d284, 0x2e1a: 0x02a70484, 0x2e1b: 0x02a76c84, - 0x2e1c: 0x02a79084, 0x2e1d: 0x02a7c684, 0x2e1e: 0x02adae84, 0x2e1f: 0x02ae3e84, - 0x2e20: 0x02b1d684, 0x2e21: 0x02b20484, 0x2e22: 0x02b21484, 0x2e23: 0x02b22a84, - 0x2e24: 0x02b24e84, 0x2e25: 0x02b2e684, 0x2e26: 0x02b6a084, 0x2e27: 0x02b70084, - 0x2e28: 0x02b7f084, 0x2e29: 0x02b81e84, 0x2e2a: 0x02b84484, 0x2e2b: 0x02b87084, - 0x2e2c: 0x02b8dc84, 0x2e2d: 0x02b8e284, 0x2e2e: 0x02bbb684, 0x2e2f: 0x02bbca84, - 0x2e30: 0x02bbe284, 0x2e31: 0x02bbfc84, 0x2e32: 0x02bce484, 0x2e33: 0x02bcf484, - 0x2e34: 0x02bcfe84, 0x2e35: 0x02bde884, 0x2e36: 0x02bdfc84, 0x2e37: 0x02be1684, - 0x2e38: 0x02be2684, 0x2e39: 0x02bea084, 0x2e3a: 0x02bec284, 0x2e3b: 0x02bee684, - 0x2e3c: 0x02bf8684, 0x2e3d: 0x02c41084, 0x2e3e: 0x02c46c84, 0x2e3f: 0x02c49684, - // Block 0xb9, offset 0x2e40 - 0x2e40: 0x02ca5e84, 0x2e41: 0x02ca6884, 0x2e42: 0x02cb0e84, 0x2e43: 0x02cb2e84, - 0x2e44: 0x02cb4884, 0x2e45: 0x02cb7284, 0x2e46: 0x02cbc084, 0x2e47: 0x02cbca84, - 0x2e48: 0x02cde084, 0x2e49: 0x02ce1084, 0x2e4a: 0x02ce5084, 0x2e4b: 0x02d64084, - 0x2e4c: 0x02d6c484, 0x2e4d: 0x02d6f284, 0x2e4e: 0x02d76684, 0x2e4f: 0x02d79684, - 0x2e50: 0x02d7a884, 0x2e51: 0x02d7b684, 0x2e52: 0x02d81e84, 0x2e53: 0x02d82884, - 0x2e54: 0x02d86884, 0x2e55: 0x02e0d684, 0x2e56: 0x02e45484, 0x2e57: 0x02e46c84, - 0x2e58: 0x02e47684, 0x2e59: 0x02e47e84, 0x2e5a: 0x02e48e84, 0x2e5b: 0x02e4b284, - 0x2e5c: 0x02e4b684, 0x2e5d: 0x02e55884, 0x2e5e: 0x02e70884, 0x2e5f: 0x02e71284, - 0x2e60: 0x02e9b884, 0x2e61: 0x02e9cc84, 0x2e62: 0x02ea3084, 0x2e63: 0x02ea3e84, - 0x2e64: 0x02ea5084, 0x2e65: 0x02ea6084, 0x2e66: 0x02eb1684, 0x2e67: 0x02eb2484, - 0x2e68: 0x02ecec84, 0x2e69: 0x02ecfa84, 0x2e6a: 0x02ed5c84, 0x2e6b: 0x02ed7e84, - 0x2e6c: 0x02eddc84, 0x2e6d: 0x02efb684, 0x2e6e: 0x02efc484, 0x2e6f: 0x02efe684, - 0x2e70: 0x02f27484, 0x2e71: 0x02f37084, 0x2e72: 0x02f37c84, 0x2e73: 0x02f4e884, - 0x2e74: 0x02f59684, 0x2e75: 0x02f5f284, 0x2e76: 0x02f8e684, 0x2e77: 0x02f9f084, - 0x2e78: 0x02fe6c84, 0x2e79: 0x02fea284, 0x2e7a: 0x02ff1484, 0x2e7b: 0x02ff7a84, - 0x2e7c: 0x03000284, 0x2e7d: 0x03001884, 0x2e7e: 0x03002484, 0x2e7f: 0x03006684, - // Block 0xba, offset 0x2e80 - 0x2e80: 0x0300fe84, 0x2e81: 0x03011284, 0x2e82: 0x0303c684, 0x2e83: 0x0303d484, - 0x2e84: 0x0303e684, 0x2e85: 0x0303f884, 0x2e86: 0x03041884, 0x2e87: 0x03043684, - 0x2e88: 0x03043e84, 0x2e89: 0x0304dc84, 0x2e8a: 0x0304e484, 0x2e8b: 0x0304f084, - 0x2e8c: 0x030c9a84, 0x2e8d: 0x030cd684, 0x2e8e: 0x03108084, 0x2e8f: 0x03109884, - 0x2e90: 0x0310c684, 0x2e91: 0x0312fc84, 0x2e92: 0x03131684, 0x2e93: 0x0313a484, - 0x2e94: 0x03140084, 0x2e95: 0x03186e84, 0x2e96: 0x03188c84, 0x2e97: 0x0318aa84, - 0x2e98: 0x0318f084, 0x2e99: 0x03193a84, 0x2e9a: 0x031ac884, 0x2e9b: 0x031ae084, - 0x2e9c: 0x031b6684, 0x2e9d: 0x031d5684, 0x2e9e: 0x031d9484, 0x2e9f: 0x031f3684, - 0x2ea0: 0x031f6084, 0x2ea1: 0x031f6a84, 0x2ea2: 0x03212284, 0x2ea3: 0x03229284, - 0x2ea4: 0x03238c84, 0x2ea5: 0x03239884, 0x2ea6: 0x0323a284, 0x2ea7: 0x032aee84, - 0x2ea8: 0x032b0084, 0x2ea9: 0x032c3884, 0x2eaa: 0x032d6c84, 0x2eab: 0x032d7284, - 0x2eac: 0x032dd084, 0x2ead: 0x032ea284, 0x2eae: 0x032ebc84, 0x2eaf: 0x032ec484, - 0x2eb0: 0x032ed284, 0x2eb1: 0x032f9684, 0x2eb2: 0x032fda84, 0x2eb3: 0x032fe684, - 0x2eb4: 0x03300284, 0x2eb5: 0x03315084, 0x2eb6: 0x0331b684, 0x2eb7: 0x0331be84, - 0x2eb8: 0x03332c84, 0x2eb9: 0x03333284, 0x2eba: 0x03335884, 0x2ebb: 0x03355084, - 0x2ebc: 0x0335b084, 0x2ebd: 0x0335be84, 0x2ebe: 0x03364a84, 0x2ebf: 0x03365e84, - // Block 0xbb, offset 0x2ec0 - 0x2ec0: 0x03366484, 0x2ec1: 0x03367884, 0x2ec2: 0x0336b484, 0x2ec3: 0x0339ca84, - 0x2ec4: 0x033cea84, 0x2ec5: 0x033cfe84, 0x2ec6: 0x033d4a84, 0x2ec7: 0x033d7684, - 0x2ec8: 0x033d8684, 0x2ec9: 0x033d9a84, 0x2eca: 0x033da284, 0x2ecb: 0x033df284, - 0x2ecc: 0x033dfa84, 0x2ecd: 0x033e1c84, 0x2ece: 0x033e2684, 0x2ecf: 0x033e4084, - 0x2ed0: 0x033e7684, 0x2ed1: 0x033e9484, 0x2ed2: 0x033ea484, 0x2ed3: 0x033f1a84, - 0x2ed4: 0x033f3884, 0x2ed5: 0x033f4084, - 0x2ef0: 0x40273a20, 0x2ef1: 0x40273c20, 0x2ef2: 0x40273e20, 0x2ef3: 0x40274020, - 0x2ef4: 0x40274220, 0x2ef5: 0x40274420, 0x2ef6: 0x40274620, 0x2ef7: 0x40274820, - 0x2ef8: 0x40274a20, 0x2ef9: 0x40274c20, 0x2efa: 0x40274e20, 0x2efb: 0x40275020, - // Block 0xbc, offset 0x2f00 - 0x2f00: 0x00021283, 0x2f01: 0x40025c20, 0x2f02: 0x40030420, 0x2f03: 0x40051220, - 0x2f04: 0x40279a20, 0x2f05: 0x4027ca20, 0x2f06: 0xe0002206, 0x2f07: 0xe00001d3, - 0x2f08: 0x40049c20, 0x2f09: 0x40049e20, 0x2f0a: 0x4004a020, 0x2f0b: 0x4004a220, - 0x2f0c: 0x4004a420, 0x2f0d: 0x4004a620, 0x2f0e: 0x4004a820, 0x2f0f: 0x4004aa20, - 0x2f10: 0x4004ac20, 0x2f11: 0x4004ae20, 0x2f12: 0x40279c20, 0x2f13: 0x40279e20, - 0x2f14: 0x4004b020, 0x2f15: 0x4004b220, 0x2f16: 0x4004b420, 0x2f17: 0x4004b620, - 0x2f18: 0x4004b820, 0x2f19: 0x4004ba20, 0x2f1a: 0x4004bc20, 0x2f1b: 0x4004be20, - 0x2f1c: 0x40023820, 0x2f1d: 0x4003ea20, 0x2f1e: 0x4003ec20, 0x2f1f: 0x4003ee20, - 0x2f20: 0x4027a020, 0x2f21: 0xe0000267, 0x2f22: 0xe000037f, 0x2f23: 0xe0000459, - 0x2f24: 0xe000052e, 0x2f25: 0xe00005f8, 0x2f26: 0xe00006c3, 0x2f27: 0xe000076b, - 0x2f28: 0xe0000817, 0x2f29: 0xe00008bc, 0x2f2a: 0xada12202, 0x2f2b: 0xae412302, - 0x2f2c: 0xae812402, 0x2f2d: 0xade12502, 0x2f2e: 0xae012602, 0x2f2f: 0xae012702, - 0x2f30: 0x40023a20, 0x2f31: 0x4027ce20, 0x2f32: 0xe0000152, 0x2f33: 0x4027d020, - 0x2f34: 0xe0000155, 0x2f35: 0x4027d220, 0x2f36: 0x00279c84, 0x2f37: 0x4027a220, - 0x2f38: 0x02a68284, 0x2f39: 0x02a68884, 0x2f3a: 0x02a68a84, 0x2f3b: 0x4027cc20, - 0x2f3c: 0xe000231a, 0x2f3d: 0x40051420, 0x2f3e: 0x4027a420, 0x2f3f: 0x4027a620, - // Block 0xbd, offset 0x2f40 - 0x2f41: 0x0065768d, 0x2f42: 0x0065768e, 0x2f43: 0x0065788d, - 0x2f44: 0x0065788e, 0x2f45: 0x00657a8d, 0x2f46: 0x00657a8e, 0x2f47: 0x00657e8d, - 0x2f48: 0x00657e8e, 0x2f49: 0x0065808d, 0x2f4a: 0x0065808e, 0x2f4b: 0x0065828e, - 0x2f4c: 0xe000216a, 0x2f4d: 0x0065848e, 0x2f4e: 0xe0002188, 0x2f4f: 0x0065868e, - 0x2f50: 0xe00021b8, 0x2f51: 0x0065888e, 0x2f52: 0xe00021d6, 0x2f53: 0x00658a8e, - 0x2f54: 0xe00021e0, 0x2f55: 0x00658c8e, 0x2f56: 0xe00021ef, 0x2f57: 0x00658e8e, - 0x2f58: 0xe0002200, 0x2f59: 0x0065908e, 0x2f5a: 0xe000220f, 0x2f5b: 0x0065928e, - 0x2f5c: 0xe0002215, 0x2f5d: 0x0065948e, 0x2f5e: 0xe0002223, 0x2f5f: 0x0065968e, - 0x2f60: 0xe0002229, 0x2f61: 0x0065988e, 0x2f62: 0xe0002234, 0x2f63: 0x00659a8d, - 0x2f64: 0x00659a8e, 0x2f65: 0xe000223a, 0x2f66: 0x00659c8e, 0x2f67: 0xe0002240, - 0x2f68: 0x00659e8e, 0x2f69: 0xe000224a, 0x2f6a: 0x0065a08e, 0x2f6b: 0x0065a28e, - 0x2f6c: 0x0065a48e, 0x2f6d: 0x0065a68e, 0x2f6e: 0x0065a88e, 0x2f6f: 0x0065aa8e, - 0x2f70: 0xe0002258, 0x2f71: 0xe000225e, 0x2f72: 0x0065ac8e, 0x2f73: 0xe000227a, - 0x2f74: 0xe0002280, 0x2f75: 0x0065ae8e, 0x2f76: 0xe000229a, 0x2f77: 0xe00022a0, - 0x2f78: 0x0065b08e, 0x2f79: 0xe00022bd, 0x2f7a: 0xe00022c3, 0x2f7b: 0x0065b28e, - 0x2f7c: 0xe00022ec, 0x2f7d: 0xe00022f2, 0x2f7e: 0x0065b48e, 0x2f7f: 0x0065b68e, - // Block 0xbe, offset 0x2f80 - 0x2f80: 0x0065b88e, 0x2f81: 0x0065ba8e, 0x2f82: 0x0065bc8e, 0x2f83: 0x0065be8d, - 0x2f84: 0x0065be8e, 0x2f85: 0x0065c08d, 0x2f86: 0x0065c08e, 0x2f87: 0x0065c48d, - 0x2f88: 0x0065c48e, 0x2f89: 0x0065c68e, 0x2f8a: 0x0065c88e, 0x2f8b: 0x0065ca8e, - 0x2f8c: 0x0065cc8e, 0x2f8d: 0x0065ce8e, 0x2f8e: 0x0065d08d, 0x2f8f: 0x0065d08e, - 0x2f90: 0x0065d28e, 0x2f91: 0x0065d48e, 0x2f92: 0x0065d68e, 0x2f93: 0x0065d88e, - 0x2f94: 0xe000214c, 0x2f95: 0x0065828d, 0x2f96: 0x0065888d, - 0x2f99: 0xa0812802, 0x2f9a: 0xa0812902, 0x2f9b: 0x40063c20, - 0x2f9c: 0x40063e20, 0x2f9d: 0x4027d420, 0x2f9e: 0xe0000158, 0x2f9f: 0xf0001616, - 0x2fa0: 0x40023c20, 0x2fa1: 0x0065768f, 0x2fa2: 0x00657691, 0x2fa3: 0x0065788f, - 0x2fa4: 0x00657891, 0x2fa5: 0x00657a8f, 0x2fa6: 0x00657a91, 0x2fa7: 0x00657e8f, - 0x2fa8: 0x00657e91, 0x2fa9: 0x0065808f, 0x2faa: 0x00658091, 0x2fab: 0x00658291, - 0x2fac: 0xe000216d, 0x2fad: 0x00658491, 0x2fae: 0xe000218b, 0x2faf: 0x00658691, - 0x2fb0: 0xe00021bb, 0x2fb1: 0x00658891, 0x2fb2: 0xe00021d9, 0x2fb3: 0x00658a91, - 0x2fb4: 0xe00021e3, 0x2fb5: 0x00658c91, 0x2fb6: 0xe00021f2, 0x2fb7: 0x00658e91, - 0x2fb8: 0xe0002203, 0x2fb9: 0x00659091, 0x2fba: 0xe0002212, 0x2fbb: 0x00659291, - 0x2fbc: 0xe0002218, 0x2fbd: 0x00659491, 0x2fbe: 0xe0002226, 0x2fbf: 0x00659691, - // Block 0xbf, offset 0x2fc0 - 0x2fc0: 0xe000222c, 0x2fc1: 0x00659891, 0x2fc2: 0xe0002237, 0x2fc3: 0x00659a8f, - 0x2fc4: 0x00659a91, 0x2fc5: 0xe000223d, 0x2fc6: 0x00659c91, 0x2fc7: 0xe0002243, - 0x2fc8: 0x00659e91, 0x2fc9: 0xe000224d, 0x2fca: 0x0065a091, 0x2fcb: 0x0065a291, - 0x2fcc: 0x0065a491, 0x2fcd: 0x0065a691, 0x2fce: 0x0065a891, 0x2fcf: 0x0065aa91, - 0x2fd0: 0xe000225b, 0x2fd1: 0xe0002261, 0x2fd2: 0x0065ac91, 0x2fd3: 0xe000227d, - 0x2fd4: 0xe0002283, 0x2fd5: 0x0065ae91, 0x2fd6: 0xe000229d, 0x2fd7: 0xe00022a3, - 0x2fd8: 0x0065b091, 0x2fd9: 0xe00022c0, 0x2fda: 0xe00022c6, 0x2fdb: 0x0065b291, - 0x2fdc: 0xe00022ef, 0x2fdd: 0xe00022f5, 0x2fde: 0x0065b491, 0x2fdf: 0x0065b691, - 0x2fe0: 0x0065b891, 0x2fe1: 0x0065ba91, 0x2fe2: 0x0065bc91, 0x2fe3: 0x0065be8f, - 0x2fe4: 0x0065be91, 0x2fe5: 0x0065c08f, 0x2fe6: 0x0065c091, 0x2fe7: 0x0065c48f, - 0x2fe8: 0x0065c491, 0x2fe9: 0x0065c691, 0x2fea: 0x0065c891, 0x2feb: 0x0065ca91, - 0x2fec: 0x0065cc91, 0x2fed: 0x0065ce91, 0x2fee: 0x0065d08f, 0x2fef: 0x0065d091, - 0x2ff0: 0x0065d291, 0x2ff1: 0x0065d491, 0x2ff2: 0x0065d691, 0x2ff3: 0x0065d891, - 0x2ff4: 0xe000214f, 0x2ff5: 0x0065828f, 0x2ff6: 0x0065888f, 0x2ff7: 0xe000236a, - 0x2ff8: 0xe0002371, 0x2ff9: 0xe0002374, 0x2ffa: 0xe0002377, 0x2ffb: 0x40023e20, - 0x2ffc: 0x4027d620, 0x2ffd: 0x4027d820, 0x2ffe: 0xe000015b, 0x2fff: 0xf0001616, - // Block 0xc0, offset 0x3000 - 0x3005: 0x4065da20, 0x3006: 0x4065dc20, 0x3007: 0x4065de20, - 0x3008: 0x4065e020, 0x3009: 0x4065e420, 0x300a: 0x4065e620, 0x300b: 0x4065e820, - 0x300c: 0x4065ea20, 0x300d: 0x4065ec20, 0x300e: 0x4065ee20, 0x300f: 0x4065f420, - 0x3010: 0x4065f620, 0x3011: 0x4065f820, 0x3012: 0x4065fa20, 0x3013: 0x4065fe20, - 0x3014: 0x40660020, 0x3015: 0x40660220, 0x3016: 0x40660420, 0x3017: 0x40660620, - 0x3018: 0x40660820, 0x3019: 0x40660a20, 0x301a: 0x40661220, 0x301b: 0x40661420, - 0x301c: 0x40661820, 0x301d: 0x40661a20, 0x301e: 0x40661e20, 0x301f: 0x40662020, - 0x3020: 0x40662220, 0x3021: 0x40662420, 0x3022: 0x40662620, 0x3023: 0x40662820, - 0x3024: 0x40662a20, 0x3025: 0x40662e20, 0x3026: 0x40663620, 0x3027: 0x40663820, - 0x3028: 0x40663a20, 0x3029: 0x40663c20, 0x302a: 0x4065e220, 0x302b: 0x4065f020, - 0x302c: 0x4065fc20, 0x302d: 0x40663e20, - 0x3031: 0x0062ac84, 0x3032: 0x0062ae84, 0x3033: 0x00646884, - 0x3034: 0x0062b084, 0x3035: 0x00646c84, 0x3036: 0x00646e84, 0x3037: 0x0062b284, - 0x3038: 0x0062b484, 0x3039: 0x0062b684, 0x303a: 0x00647484, 0x303b: 0x00647684, - 0x303c: 0x00647884, 0x303d: 0x00647a84, 0x303e: 0x00647c84, 0x303f: 0x00647e84, - // Block 0xc1, offset 0x3040 - 0x3040: 0x0062e084, 0x3041: 0x0062b884, 0x3042: 0x0062ba84, 0x3043: 0x0062bc84, - 0x3044: 0x0062ee84, 0x3045: 0x0062be84, 0x3046: 0x0062c084, 0x3047: 0x0062c284, - 0x3048: 0x0062c484, 0x3049: 0x0062c684, 0x304a: 0x0062c884, 0x304b: 0x0062ca84, - 0x304c: 0x0062cc84, 0x304d: 0x0062ce84, 0x304e: 0x0062d084, 0x304f: 0x0063a884, - 0x3050: 0x0063aa84, 0x3051: 0x0063ac84, 0x3052: 0x0063ae84, 0x3053: 0x0063b084, - 0x3054: 0x0063b284, 0x3055: 0x0063b484, 0x3056: 0x0063b684, 0x3057: 0x0063b884, - 0x3058: 0x0063ba84, 0x3059: 0x0063bc84, 0x305a: 0x0063be84, 0x305b: 0x0063c084, - 0x305c: 0x0063c284, 0x305d: 0x0063c484, 0x305e: 0x0063c684, 0x305f: 0x0063c884, - 0x3060: 0x0063ca84, 0x3061: 0x0063cc84, 0x3062: 0x0063ce84, 0x3063: 0x0063d084, - 0x3064: 0x0063a684, 0x3065: 0x0062d484, 0x3066: 0x0062d684, 0x3067: 0x0064a284, - 0x3068: 0x0064a484, 0x3069: 0x0064ac84, 0x306a: 0x0064b084, 0x306b: 0x0064ba84, - 0x306c: 0x0064c284, 0x306d: 0x0064c684, 0x306e: 0x0062e484, 0x306f: 0x0064ce84, - 0x3070: 0x0064d284, 0x3071: 0x0062e684, 0x3072: 0x0062e884, 0x3073: 0x0062ec84, - 0x3074: 0x0062f084, 0x3075: 0x0062f284, 0x3076: 0x0062fa84, 0x3077: 0x0062fe84, - 0x3078: 0x00630284, 0x3079: 0x00630484, 0x307a: 0x00630684, 0x307b: 0x00630884, - 0x307c: 0x00630a84, 0x307d: 0x00631084, 0x307e: 0x00631884, 0x307f: 0x00632c84, - // Block 0xc2, offset 0x3080 - 0x3080: 0x00633a84, 0x3081: 0x00634484, 0x3082: 0x0064f684, 0x3083: 0x0064f884, - 0x3084: 0x00635a84, 0x3085: 0x00635c84, 0x3086: 0x00635e84, 0x3087: 0x0063ee84, - 0x3088: 0x0063f084, 0x3089: 0x0063f684, 0x308a: 0x00640884, 0x308b: 0x00640a84, - 0x308c: 0x00640e84, 0x308d: 0x00642284, 0x308e: 0x00642884, - 0x3090: 0x4027a820, 0x3091: 0x4027aa20, 0x3092: 0x029c0094, 0x3093: 0x029d1894, - 0x3094: 0x029c1294, 0x3095: 0x02adb694, 0x3096: 0x029c1494, 0x3097: 0x029c5a94, - 0x3098: 0x029c1694, 0x3099: 0x02ea6494, 0x309a: 0x029cb294, 0x309b: 0x029c3294, - 0x309c: 0x029c0294, 0x309d: 0x02b25294, 0x309e: 0x02ae6094, 0x309f: 0x029d7494, - 0x30a0: 0xe000237a, 0x30a1: 0xe0002383, 0x30a2: 0xe0002380, 0x30a3: 0xe000237d, - 0x30a4: 0x40661c20, 0x30a5: 0xe000238c, 0x30a6: 0x40661620, 0x30a7: 0xe0002389, - 0x30a8: 0xe000239e, 0x30a9: 0xe0002386, 0x30aa: 0xe0002395, 0x30ab: 0xe000239b, - 0x30ac: 0x40663420, 0x30ad: 0x4065f220, 0x30ae: 0xe000238f, 0x30af: 0xe0002392, - 0x30b0: 0x40663020, 0x30b1: 0x40663220, 0x30b2: 0x40662c20, 0x30b3: 0xe0002398, - 0x30b4: 0x0065dc99, 0x30b5: 0x0065e699, 0x30b6: 0x0065ee99, 0x30b7: 0x0065f499, - 0x30b8: 0x40660c20, 0x30b9: 0x40660e20, 0x30ba: 0x40661020, - // Block 0xc3, offset 0x30c0 - 0x30c0: 0x40275220, 0x30c1: 0x40275420, 0x30c2: 0x40275620, 0x30c3: 0x40275820, - 0x30c4: 0x40275a20, 0x30c5: 0x40275c20, 0x30c6: 0x40275e20, 0x30c7: 0x40276020, - 0x30c8: 0x40276220, 0x30c9: 0x40276420, 0x30ca: 0x40276620, 0x30cb: 0x40276820, - 0x30cc: 0x40276a20, 0x30cd: 0x40276c20, 0x30ce: 0x40276e20, 0x30cf: 0x40277020, - 0x30d0: 0x40277220, 0x30d1: 0x40277420, 0x30d2: 0x40277620, 0x30d3: 0x40277820, - 0x30d4: 0x40277a20, 0x30d5: 0x40277c20, 0x30d6: 0x40277e20, 0x30d7: 0x40278020, - 0x30d8: 0x40278220, 0x30d9: 0x40278420, 0x30da: 0x40278620, 0x30db: 0x40278820, - 0x30dc: 0x40278a20, 0x30dd: 0x40278c20, 0x30de: 0x40278e20, 0x30df: 0x40279020, - 0x30e0: 0x40279220, 0x30e1: 0x40279420, 0x30e2: 0x40279620, 0x30e3: 0x40279820, - 0x30f0: 0x0065868f, 0x30f1: 0x00658e8f, 0x30f2: 0x0065908f, 0x30f3: 0x00659e8f, - 0x30f4: 0x0065a48f, 0x30f5: 0x0065aa8f, 0x30f6: 0x0065ac8f, 0x30f7: 0x0065ae8f, - 0x30f8: 0x0065b08f, 0x30f9: 0x0065b28f, 0x30fa: 0x0065b88f, 0x30fb: 0x0065c68f, - 0x30fc: 0x0065c88f, 0x30fd: 0x0065ca8f, 0x30fe: 0x0065cc8f, 0x30ff: 0x0065ce8f, - // Block 0xc4, offset 0x3100 - 0x3100: 0xf0000404, 0x3101: 0xf0000404, 0x3102: 0xf0000404, 0x3103: 0xf0000404, - 0x3104: 0xf0000404, 0x3105: 0xf0000404, 0x3106: 0xf0000404, 0x3107: 0xf0000404, - 0x3108: 0xf0000404, 0x3109: 0xf0000404, 0x310a: 0xf0000404, 0x310b: 0xf0000404, - 0x310c: 0xf0000404, 0x310d: 0xf0000404, 0x310e: 0xe000004c, 0x310f: 0xe0000051, - 0x3110: 0xe0000056, 0x3111: 0xe000005b, 0x3112: 0xe0000060, 0x3113: 0xe0000065, - 0x3114: 0xe000006a, 0x3115: 0xe000006f, 0x3116: 0xe0000083, 0x3117: 0xe000008d, - 0x3118: 0xe0000092, 0x3119: 0xe0000097, 0x311a: 0xe000009c, 0x311b: 0xe00000a1, - 0x311c: 0xe0000088, 0x311d: 0xe0000074, 0x311e: 0xe000007c, - 0x3120: 0xf0000404, 0x3121: 0xf0000404, 0x3122: 0xf0000404, 0x3123: 0xf0000404, - 0x3124: 0xf0000404, 0x3125: 0xf0000404, 0x3126: 0xf0000404, 0x3127: 0xf0000404, - 0x3128: 0xf0000404, 0x3129: 0xf0000404, 0x312a: 0xf0000404, 0x312b: 0xf0000404, - 0x312c: 0xf0000404, 0x312d: 0xf0000404, 0x312e: 0xf0000404, 0x312f: 0xf0000404, - 0x3130: 0xf0000404, 0x3131: 0xf0000404, 0x3132: 0xf0000404, 0x3133: 0xf0000404, - 0x3134: 0xf0000404, 0x3135: 0xf0000404, 0x3136: 0xf0000404, 0x3137: 0xf0000404, - 0x3138: 0xf0000404, 0x3139: 0xf0000404, 0x313a: 0xf0000404, 0x313b: 0xf0000404, - 0x313c: 0xf0000404, 0x313d: 0xf0000404, 0x313e: 0xf0000404, 0x313f: 0xf0000404, - // Block 0xc5, offset 0x3140 - 0x3140: 0xf0000404, 0x3141: 0xf0000404, 0x3142: 0xf0000404, 0x3143: 0xf0000404, - 0x3144: 0x02aa9e86, 0x3145: 0x02bcf886, 0x3146: 0x02cb0e86, 0x3147: 0x02f71e86, - 0x3148: 0xe00002e3, 0x3149: 0xe00003d8, 0x314a: 0xe00004b3, 0x314b: 0xe000057d, - 0x314c: 0xe0000648, 0x314d: 0xe00006f0, 0x314e: 0xe000079c, 0x314f: 0xe0000841, - 0x3150: 0xe0000ec0, 0x3151: 0xf0000606, 0x3152: 0xf0000606, 0x3153: 0xf0000606, - 0x3154: 0xf0000606, 0x3155: 0xf0000606, 0x3156: 0xf0000606, 0x3157: 0xf0000606, - 0x3158: 0xf0000606, 0x3159: 0xf0000606, 0x315a: 0xf0000606, 0x315b: 0xf0000606, - 0x315c: 0xf0000606, 0x315d: 0xf0000606, 0x315e: 0xf0000606, 0x315f: 0xf0000606, - 0x3160: 0x0062ac86, 0x3161: 0x0062b086, 0x3162: 0x0062b286, 0x3163: 0x0062b686, - 0x3164: 0x0062b886, 0x3165: 0x0062ba86, 0x3166: 0x0062be86, 0x3167: 0x0062c286, - 0x3168: 0x0062c486, 0x3169: 0x0062c886, 0x316a: 0x0062ca86, 0x316b: 0x0062cc86, - 0x316c: 0x0062ce86, 0x316d: 0x0062d086, 0x316e: 0xf0000606, 0x316f: 0xf0000606, - 0x3170: 0xf0000606, 0x3171: 0xf0000606, 0x3172: 0xf0000606, 0x3173: 0xf0000606, - 0x3174: 0xf0000606, 0x3175: 0xf0000606, 0x3176: 0xf0000606, 0x3177: 0xf0000606, - 0x3178: 0xf0000606, 0x3179: 0xf0000606, 0x317a: 0xf0000606, 0x317b: 0xf0000606, - 0x317c: 0xe0002127, 0x317d: 0xe0002122, 0x317e: 0xf0000606, 0x317f: 0x4027ac20, - // Block 0xc6, offset 0x3180 - 0x3180: 0x029c0086, 0x3181: 0x029d1886, 0x3182: 0x029c1286, 0x3183: 0x02adb686, - 0x3184: 0x029d2886, 0x3185: 0x02a2da86, 0x3186: 0x029c0686, 0x3187: 0x02a2d686, - 0x3188: 0x029cba86, 0x3189: 0x02a68286, 0x318a: 0x02ce1086, 0x318b: 0x02e0d686, - 0x318c: 0x02d86886, 0x318d: 0x02ce5086, 0x318e: 0x0323a286, 0x318f: 0x02ae3e86, - 0x3190: 0x02cbca86, 0x3191: 0x02d05486, 0x3192: 0x02ce1286, 0x3193: 0x02f27c86, - 0x3194: 0x02a81a86, 0x3195: 0x02e4f286, 0x3196: 0x03194286, 0x3197: 0x02f2ba86, - 0x3198: 0x02a56886, 0x3199: 0x02f3b086, 0x319a: 0x02ea6e86, 0x319b: 0x02b2e686, - 0x319c: 0x0320d286, 0x319d: 0x02a25486, 0x319e: 0x02a6e086, 0x319f: 0x02d9d086, - 0x31a0: 0x03300a86, 0x31a1: 0x029e2286, 0x31a2: 0x02a33286, 0x31a3: 0x02d6c686, - 0x31a4: 0x029c1486, 0x31a5: 0x029c5a86, 0x31a6: 0x029c1686, 0x31a7: 0x02bbcc86, - 0x31a8: 0x02a7e686, 0x31a9: 0x02a67686, 0x31aa: 0x02b72e86, 0x31ab: 0x02b6cc86, - 0x31ac: 0x02edc686, 0x31ad: 0x029e0286, 0x31ae: 0x03198e86, 0x31af: 0x02a6a886, - 0x31b0: 0x02b23886, 0x31b1: 0xf0000606, 0x31b2: 0xf0000606, 0x31b3: 0xf0000606, - 0x31b4: 0xf0000606, 0x31b5: 0xf0000606, 0x31b6: 0xf0000606, 0x31b7: 0xf0000606, - 0x31b8: 0xf0000606, 0x31b9: 0xf0000606, 0x31ba: 0xf0000606, 0x31bb: 0xf0000606, - 0x31bc: 0xf0000606, 0x31bd: 0xf0000606, 0x31be: 0xf0000606, 0x31bf: 0xf0000606, - // Block 0xc7, offset 0x31c0 - 0x31c0: 0xf0001f04, 0x31c1: 0xf0001f04, 0x31c2: 0xf0001f04, 0x31c3: 0xf0001f04, - 0x31c4: 0xf0001f04, 0x31c5: 0xf0001f04, 0x31c6: 0xf0001f04, 0x31c7: 0xf0001f04, - 0x31c8: 0xf0001f04, 0x31c9: 0xf0000404, 0x31ca: 0xf0000404, 0x31cb: 0xf0000404, - 0x31cc: 0xf0001c1d, 0x31cd: 0xe0000b85, 0x31ce: 0xf0001d1c, 0x31cf: 0xe0000d14, - 0x31d0: 0x00657693, 0x31d1: 0x00657893, 0x31d2: 0x00657a93, 0x31d3: 0x00657e93, - 0x31d4: 0x00658093, 0x31d5: 0x00658293, 0x31d6: 0x00658493, 0x31d7: 0x00658693, - 0x31d8: 0x00658893, 0x31d9: 0x00658a93, 0x31da: 0x00658c93, 0x31db: 0x00658e93, - 0x31dc: 0x00659093, 0x31dd: 0x00659293, 0x31de: 0x00659493, 0x31df: 0x00659693, - 0x31e0: 0x00659893, 0x31e1: 0x00659a93, 0x31e2: 0x00659c93, 0x31e3: 0x00659e93, - 0x31e4: 0x0065a093, 0x31e5: 0x0065a293, 0x31e6: 0x0065a493, 0x31e7: 0x0065a693, - 0x31e8: 0x0065a893, 0x31e9: 0x0065aa93, 0x31ea: 0x0065ac93, 0x31eb: 0x0065ae93, - 0x31ec: 0x0065b093, 0x31ed: 0x0065b293, 0x31ee: 0x0065b493, 0x31ef: 0x0065b693, - 0x31f0: 0x0065b893, 0x31f1: 0x0065ba93, 0x31f2: 0x0065bc93, 0x31f3: 0x0065be93, - 0x31f4: 0x0065c093, 0x31f5: 0x0065c493, 0x31f6: 0x0065c693, 0x31f7: 0x0065c893, - 0x31f8: 0x0065ca93, 0x31f9: 0x0065cc93, 0x31fa: 0x0065ce93, 0x31fb: 0x0065d093, - 0x31fc: 0x0065d293, 0x31fd: 0x0065d493, 0x31fe: 0x0065d693, - // Block 0xc8, offset 0x3200 - 0x3200: 0xe0002131, 0x3201: 0xe0002137, 0x3202: 0xe000213c, 0x3203: 0xe000212d, - 0x3204: 0xe0002142, 0x3205: 0xe0002148, 0x3206: 0xe0002152, 0x3207: 0xe000215b, - 0x3208: 0xe0002156, 0x3209: 0xe0002166, 0x320a: 0xe0002162, 0x320b: 0xe0002170, - 0x320c: 0xe0002174, 0x320d: 0xe0002179, 0x320e: 0xe000217e, 0x320f: 0xe0002183, - 0x3210: 0xe000218e, 0x3211: 0xe0002193, 0x3212: 0xe0002198, 0x3213: 0xe000219d, - 0x3214: 0xf0001c1c, 0x3215: 0xe00021a4, 0x3216: 0xe00021ab, 0x3217: 0xe00021b2, - 0x3218: 0xe00021be, 0x3219: 0xe00021c3, 0x321a: 0xe00021ca, 0x321b: 0xe00021d1, - 0x321c: 0xe00021dc, 0x321d: 0xe00021eb, 0x321e: 0xe00021e6, 0x321f: 0xe00021f5, - 0x3220: 0xe00021fa, 0x3221: 0xe0002209, 0x3222: 0xe000221b, 0x3223: 0xe000221f, - 0x3224: 0xe000222f, 0x3225: 0xe0002246, 0x3226: 0xe0002250, 0x3227: 0xf0001c1c, - 0x3228: 0xf0001c1c, 0x3229: 0xe0002254, 0x322a: 0xe0002276, 0x322b: 0xe0002264, - 0x322c: 0xe000226b, 0x322d: 0xe0002270, 0x322e: 0xe0002286, 0x322f: 0xe000228d, - 0x3230: 0xe0002292, 0x3231: 0xe0002296, 0x3232: 0xe00022a6, 0x3233: 0xe00022ad, - 0x3234: 0xe00022b2, 0x3235: 0xe00022b9, 0x3236: 0xe00022d4, 0x3237: 0xe00022da, - 0x3238: 0xe00022de, 0x3239: 0xe00022e3, 0x323a: 0xe00022e7, 0x323b: 0xe00022c9, - 0x323c: 0xe00022cf, 0x323d: 0xe0002300, 0x323e: 0xe0002306, 0x323f: 0xf0001c1c, - // Block 0xc9, offset 0x3240 - 0x3240: 0xe000230b, 0x3241: 0xe00022f8, 0x3242: 0xe00022fc, 0x3243: 0xe0002311, - 0x3244: 0xe0002316, 0x3245: 0xe000231d, 0x3246: 0xe0002321, 0x3247: 0xe0002325, - 0x3248: 0xe000232b, 0x3249: 0xf0001c1c, 0x324a: 0xe0002330, 0x324b: 0xe000233c, - 0x324c: 0xe0002340, 0x324d: 0xe0002337, 0x324e: 0xe0002346, 0x324f: 0xe000234b, - 0x3250: 0xe000234f, 0x3251: 0xe0002353, 0x3252: 0xf0001c1c, 0x3253: 0xe000235e, - 0x3254: 0xe0002358, 0x3255: 0xf0001c1c, 0x3256: 0xe0002363, 0x3257: 0xe000236d, - 0x3258: 0xf0001f04, 0x3259: 0xf0001f04, 0x325a: 0xf0001f04, 0x325b: 0xf0001f04, - 0x325c: 0xf0001f04, 0x325d: 0xf0001f04, 0x325e: 0xf0001f04, 0x325f: 0xf0001f04, - 0x3260: 0xf0001f04, 0x3261: 0xf0001f04, 0x3262: 0xf0000404, 0x3263: 0xf0000404, - 0x3264: 0xf0000404, 0x3265: 0xf0000404, 0x3266: 0xf0000404, 0x3267: 0xf0000404, - 0x3268: 0xf0000404, 0x3269: 0xf0000404, 0x326a: 0xf0000404, 0x326b: 0xf0000404, - 0x326c: 0xf0000404, 0x326d: 0xf0000404, 0x326e: 0xf0000404, 0x326f: 0xf0000404, - 0x3270: 0xf0000404, 0x3271: 0xe0000c1e, 0x3272: 0xf0001c1c, 0x3273: 0xf0001d1d, - 0x3274: 0xe0000a31, 0x3275: 0xf0001d1c, 0x3276: 0xf0001c1c, 0x3277: 0xf0001c1c, - 0x3278: 0xe0000ac2, 0x3279: 0xe0000ac6, 0x327a: 0xf0001d1d, 0x327b: 0xf0001c1c, - 0x327c: 0xf0001c1c, 0x327d: 0xf0001c1c, 0x327e: 0xf0001c1c, 0x327f: 0xe0002431, - // Block 0xca, offset 0x3280 - 0x3280: 0xf0001d1c, 0x3281: 0xf0001d1c, 0x3282: 0xf0001d1c, 0x3283: 0xf0001d1c, - 0x3284: 0xf0001d1c, 0x3285: 0xf0001d1d, 0x3286: 0xf0001d1d, 0x3287: 0xf0001d1d, - 0x3288: 0xe0000a6b, 0x3289: 0xe0000cb4, 0x328a: 0xf0001d1c, 0x328b: 0xf0001d1c, - 0x328c: 0xf0001d1c, 0x328d: 0xf0001c1c, 0x328e: 0xf0001c1c, 0x328f: 0xf0001c1c, - 0x3290: 0xf0001c1d, 0x3291: 0xe0000cb9, 0x3292: 0xe0000d36, 0x3293: 0xe0000be3, - 0x3294: 0xe0000fc5, 0x3295: 0xf0001c1c, 0x3296: 0xf0001c1c, 0x3297: 0xf0001c1c, - 0x3298: 0xf0001c1c, 0x3299: 0xf0001c1c, 0x329a: 0xf0001c1c, 0x329b: 0xf0001c1c, - 0x329c: 0xf0001c1c, 0x329d: 0xf0001c1c, 0x329e: 0xf0001c1c, 0x329f: 0xe0000d3e, - 0x32a0: 0xe0000a72, 0x32a1: 0xf0001c1c, 0x32a2: 0xe0000cbd, 0x32a3: 0xe0000d42, - 0x32a4: 0xe0000a76, 0x32a5: 0xf0001c1c, 0x32a6: 0xe0000cc1, 0x32a7: 0xe0000d2d, - 0x32a8: 0xe0000d31, 0x32a9: 0xf0001c1d, 0x32aa: 0xe0000cc5, 0x32ab: 0xe0000d4a, - 0x32ac: 0xe0000be7, 0x32ad: 0xe0000f0b, 0x32ae: 0xe0000f0f, 0x32af: 0xe0000f15, - 0x32b0: 0xf0001c1c, 0x32b1: 0xf0001c1c, 0x32b2: 0xf0001c1c, 0x32b3: 0xf0001c1c, - 0x32b4: 0xf0001d1c, 0x32b5: 0xf0001d1c, 0x32b6: 0xf0001d1c, 0x32b7: 0xf0001d1c, - 0x32b8: 0xf0001d1c, 0x32b9: 0xf0001d1d, 0x32ba: 0xf0001d1c, 0x32bb: 0xf0001d1c, - 0x32bc: 0xf0001d1c, 0x32bd: 0xf0001d1c, 0x32be: 0xf0001d1c, 0x32bf: 0xf0001d1d, - // Block 0xcb, offset 0x32c0 - 0x32c0: 0xf0001d1c, 0x32c1: 0xf0001d1d, 0x32c2: 0xe00009b7, 0x32c3: 0xf0001c1d, - 0x32c4: 0xf0001c1c, 0x32c5: 0xf0001c1c, 0x32c6: 0xe0000a66, 0x32c7: 0xe0000a7a, - 0x32c8: 0xf0001d1c, 0x32c9: 0xf0001c1d, 0x32ca: 0xf0001c1c, 0x32cb: 0xf0001d1d, - 0x32cc: 0xf0001c1c, 0x32cd: 0xf0001d1d, 0x32ce: 0xf0001d1d, 0x32cf: 0xf0001c1c, - 0x32d0: 0xf0001c1c, 0x32d1: 0xf0001c1c, 0x32d2: 0xe0000d0d, 0x32d3: 0xf0001c1c, - 0x32d4: 0xf0001c1c, 0x32d5: 0xe0000d3a, 0x32d6: 0xe0000d46, 0x32d7: 0xf0001d1d, - 0x32d8: 0xe0000eb0, 0x32d9: 0xe0000eb8, 0x32da: 0xf0001d1d, 0x32db: 0xf0001c1c, - 0x32dc: 0xf0001c1d, 0x32dd: 0xf0001c1d, 0x32de: 0xe00010b2, 0x32df: 0xe00009c8, - 0x32e0: 0xf0001f04, 0x32e1: 0xf0001f04, 0x32e2: 0xf0001f04, 0x32e3: 0xf0001f04, - 0x32e4: 0xf0001f04, 0x32e5: 0xf0001f04, 0x32e6: 0xf0001f04, 0x32e7: 0xf0001f04, - 0x32e8: 0xf0001f04, 0x32e9: 0xf0000404, 0x32ea: 0xf0000404, 0x32eb: 0xf0000404, - 0x32ec: 0xf0000404, 0x32ed: 0xf0000404, 0x32ee: 0xf0000404, 0x32ef: 0xf0000404, - 0x32f0: 0xf0000404, 0x32f1: 0xf0000404, 0x32f2: 0xf0000404, 0x32f3: 0xf0000404, - 0x32f4: 0xf0000404, 0x32f5: 0xf0000404, 0x32f6: 0xf0000404, 0x32f7: 0xf0000404, - 0x32f8: 0xf0000404, 0x32f9: 0xf0000404, 0x32fa: 0xf0000404, 0x32fb: 0xf0000404, - 0x32fc: 0xf0000404, 0x32fd: 0xf0000404, 0x32fe: 0xf0000404, 0x32ff: 0xe0000bdf, - // Block 0xcc, offset 0x3300 - 0x3300: 0x40196220, 0x3301: 0x40196420, 0x3302: 0x40196620, 0x3303: 0x40196820, - 0x3304: 0x40196a20, 0x3305: 0x40196c20, 0x3306: 0x40196e20, 0x3307: 0x40197020, - 0x3308: 0x40197220, 0x3309: 0x40197420, 0x330a: 0x40197620, 0x330b: 0x40197820, - 0x330c: 0x40197a20, 0x330d: 0x40197c20, 0x330e: 0x40197e20, 0x330f: 0x40198020, - 0x3310: 0x40198220, 0x3311: 0x40198420, 0x3312: 0x40198620, 0x3313: 0x40198820, - 0x3314: 0x40198a20, 0x3315: 0x40198c20, 0x3316: 0x40198e20, 0x3317: 0x40199020, - 0x3318: 0x40199220, 0x3319: 0x40199420, 0x331a: 0x40199620, 0x331b: 0x40199820, - 0x331c: 0x40199a20, 0x331d: 0x40199c20, 0x331e: 0x40199e20, 0x331f: 0x4019a020, - 0x3320: 0x4019a220, 0x3321: 0x4019a420, 0x3322: 0x4019a620, 0x3323: 0x4019a820, - 0x3324: 0x4019aa20, 0x3325: 0x4019ac20, 0x3326: 0x4019ae20, 0x3327: 0x4019b020, - 0x3328: 0x4019b220, 0x3329: 0x4019b420, 0x332a: 0x4019b620, 0x332b: 0x4019b820, - 0x332c: 0x4019ba20, 0x332d: 0x4019bc20, 0x332e: 0x4019be20, 0x332f: 0x4019c020, - 0x3330: 0x4019c220, 0x3331: 0x4019c420, 0x3332: 0x4019c620, 0x3333: 0x4019c820, - 0x3334: 0x4019ca20, 0x3335: 0x4019cc20, 0x3336: 0x4019ce20, 0x3337: 0x4019d020, - 0x3338: 0x4019d220, 0x3339: 0x4019d420, 0x333a: 0x4019d620, 0x333b: 0x4019d820, - 0x333c: 0x4019da20, 0x333d: 0x4019dc20, 0x333e: 0x4019de20, 0x333f: 0x4019e020, - // Block 0xcd, offset 0x3340 - 0x3340: 0x40664020, 0x3341: 0x40664220, 0x3342: 0x40664420, 0x3343: 0x40664620, - 0x3344: 0x40664820, 0x3345: 0x40664a20, 0x3346: 0x40664c20, 0x3347: 0x40664e20, - 0x3348: 0x40665020, 0x3349: 0x40665220, 0x334a: 0x40665420, 0x334b: 0x40665620, - 0x334c: 0x40665820, 0x334d: 0x40665a20, 0x334e: 0x40665c20, 0x334f: 0x40665e20, - 0x3350: 0x40666020, 0x3351: 0x40666220, 0x3352: 0x40666420, 0x3353: 0x40666620, - 0x3354: 0x40666820, 0x3355: 0x40666a20, 0x3356: 0x40666c20, 0x3357: 0x40666e20, - 0x3358: 0x40667020, 0x3359: 0x40667220, 0x335a: 0x40667420, 0x335b: 0x40667620, - 0x335c: 0x40667820, 0x335d: 0x40667a20, 0x335e: 0x40667c20, 0x335f: 0x40667e20, - 0x3360: 0x40668020, 0x3361: 0x40668220, 0x3362: 0x40668420, 0x3363: 0x40668620, - 0x3364: 0x40668820, 0x3365: 0x40668a20, 0x3366: 0x40668c20, 0x3367: 0x40668e20, - 0x3368: 0x40669020, 0x3369: 0x40669220, 0x336a: 0x40669420, 0x336b: 0x40669620, - 0x336c: 0x40669820, 0x336d: 0x40669a20, 0x336e: 0x40669c20, 0x336f: 0x40669e20, - 0x3370: 0x4066a020, 0x3371: 0x4066a220, 0x3372: 0x4066a420, 0x3373: 0x4066a620, - 0x3374: 0x4066a820, 0x3375: 0x4066aa20, 0x3376: 0x4066ac20, 0x3377: 0x4066ae20, - 0x3378: 0x4066b020, 0x3379: 0x4066b220, 0x337a: 0x4066b420, 0x337b: 0x4066b620, - 0x337c: 0x4066b820, 0x337d: 0x4066ba20, 0x337e: 0x4066bc20, 0x337f: 0x4066be20, - // Block 0xce, offset 0x3380 - 0x3380: 0x4066c020, 0x3381: 0x4066c220, 0x3382: 0x4066c420, 0x3383: 0x4066c620, - 0x3384: 0x4066c820, 0x3385: 0x4066ca20, 0x3386: 0x4066cc20, 0x3387: 0x4066ce20, - 0x3388: 0x4066d020, 0x3389: 0x4066d220, 0x338a: 0x4066d420, 0x338b: 0x4066d620, - 0x338c: 0x4066d820, 0x338d: 0x4066da20, 0x338e: 0x4066dc20, 0x338f: 0x4066de20, - 0x3390: 0x4066e020, 0x3391: 0x4066e220, 0x3392: 0x4066e420, 0x3393: 0x4066e620, - 0x3394: 0x4066e820, 0x3395: 0x4066ea20, 0x3396: 0x4066ec20, 0x3397: 0x4066ee20, - 0x3398: 0x4066f020, 0x3399: 0x4066f220, 0x339a: 0x4066f420, 0x339b: 0x4066f620, - 0x339c: 0x4066f820, 0x339d: 0x4066fa20, 0x339e: 0x4066fc20, 0x339f: 0x4066fe20, - 0x33a0: 0x40670020, 0x33a1: 0x40670220, 0x33a2: 0x40670420, 0x33a3: 0x40670620, - 0x33a4: 0x40670820, 0x33a5: 0x40670a20, 0x33a6: 0x40670c20, 0x33a7: 0x40670e20, - 0x33a8: 0x40671020, 0x33a9: 0x40671220, 0x33aa: 0x40671420, 0x33ab: 0x40671620, - 0x33ac: 0x40671820, 0x33ad: 0x40671a20, 0x33ae: 0x40671c20, 0x33af: 0x40671e20, - 0x33b0: 0x40672020, 0x33b1: 0x40672220, 0x33b2: 0x40672420, 0x33b3: 0x40672620, - 0x33b4: 0x40672820, 0x33b5: 0x40672a20, 0x33b6: 0x40672c20, 0x33b7: 0x40672e20, - 0x33b8: 0x40673020, 0x33b9: 0x40673220, 0x33ba: 0x40673420, 0x33bb: 0x40673620, - 0x33bc: 0x40673820, 0x33bd: 0x40673a20, 0x33be: 0x40673c20, 0x33bf: 0x40673e20, - // Block 0xcf, offset 0x33c0 - 0x33c0: 0x40674020, 0x33c1: 0x40674220, 0x33c2: 0x40674420, 0x33c3: 0x40674620, - 0x33c4: 0x40674820, 0x33c5: 0x40674a20, 0x33c6: 0x40674c20, 0x33c7: 0x40674e20, - 0x33c8: 0x40675020, 0x33c9: 0x40675220, 0x33ca: 0x40675420, 0x33cb: 0x40675620, - 0x33cc: 0x40675820, 0x33cd: 0x40675a20, 0x33ce: 0x40675c20, 0x33cf: 0x40675e20, - 0x33d0: 0x40676020, 0x33d1: 0x40676220, 0x33d2: 0x40676420, 0x33d3: 0x40676620, - 0x33d4: 0x40676820, 0x33d5: 0x40676a20, 0x33d6: 0x40676c20, 0x33d7: 0x40676e20, - 0x33d8: 0x40677020, 0x33d9: 0x40677220, 0x33da: 0x40677420, 0x33db: 0x40677620, - 0x33dc: 0x40677820, 0x33dd: 0x40677a20, 0x33de: 0x40677c20, 0x33df: 0x40677e20, - 0x33e0: 0x40678020, 0x33e1: 0x40678220, 0x33e2: 0x40678420, 0x33e3: 0x40678620, - 0x33e4: 0x40678820, 0x33e5: 0x40678a20, 0x33e6: 0x40678c20, 0x33e7: 0x40678e20, - 0x33e8: 0x40679020, 0x33e9: 0x40679220, 0x33ea: 0x40679420, 0x33eb: 0x40679620, - 0x33ec: 0x40679820, 0x33ed: 0x40679a20, 0x33ee: 0x40679c20, 0x33ef: 0x40679e20, - 0x33f0: 0x4067a020, 0x33f1: 0x4067a220, 0x33f2: 0x4067a420, 0x33f3: 0x4067a620, - 0x33f4: 0x4067a820, 0x33f5: 0x4067aa20, 0x33f6: 0x4067ac20, 0x33f7: 0x4067ae20, - 0x33f8: 0x4067b020, 0x33f9: 0x4067b220, 0x33fa: 0x4067b420, 0x33fb: 0x4067b620, - 0x33fc: 0x4067b820, 0x33fd: 0x4067ba20, 0x33fe: 0x4067bc20, 0x33ff: 0x4067be20, - // Block 0xd0, offset 0x3400 - 0x3400: 0x4067c020, 0x3401: 0x4067c220, 0x3402: 0x4067c420, 0x3403: 0x4067c620, - 0x3404: 0x4067c820, 0x3405: 0x4067ca20, 0x3406: 0x4067cc20, 0x3407: 0x4067ce20, - 0x3408: 0x4067d020, 0x3409: 0x4067d220, 0x340a: 0x4067d420, 0x340b: 0x4067d620, - 0x340c: 0x4067d820, 0x340d: 0x4067da20, 0x340e: 0x4067dc20, 0x340f: 0x4067de20, - 0x3410: 0x4067e020, 0x3411: 0x4067e220, 0x3412: 0x4067e420, 0x3413: 0x4067e620, - 0x3414: 0x4067e820, 0x3415: 0x4067ea20, 0x3416: 0x4067ec20, 0x3417: 0x4067ee20, - 0x3418: 0x4067f020, 0x3419: 0x4067f220, 0x341a: 0x4067f420, 0x341b: 0x4067f620, - 0x341c: 0x4067f820, 0x341d: 0x4067fa20, 0x341e: 0x4067fc20, 0x341f: 0x4067fe20, - 0x3420: 0x40680020, 0x3421: 0x40680220, 0x3422: 0x40680420, 0x3423: 0x40680620, - 0x3424: 0x40680820, 0x3425: 0x40680a20, 0x3426: 0x40680c20, 0x3427: 0x40680e20, - 0x3428: 0x40681020, 0x3429: 0x40681220, 0x342a: 0x40681420, 0x342b: 0x40681620, - 0x342c: 0x40681820, 0x342d: 0x40681a20, 0x342e: 0x40681c20, 0x342f: 0x40681e20, - 0x3430: 0x40682020, 0x3431: 0x40682220, 0x3432: 0x40682420, 0x3433: 0x40682620, - 0x3434: 0x40682820, 0x3435: 0x40682a20, 0x3436: 0x40682c20, 0x3437: 0x40682e20, - 0x3438: 0x40683020, 0x3439: 0x40683220, 0x343a: 0x40683420, 0x343b: 0x40683620, - 0x343c: 0x40683820, 0x343d: 0x40683a20, 0x343e: 0x40683c20, 0x343f: 0x40683e20, - // Block 0xd1, offset 0x3440 - 0x3440: 0x40684020, 0x3441: 0x40684220, 0x3442: 0x40684420, 0x3443: 0x40684620, - 0x3444: 0x40684820, 0x3445: 0x40684a20, 0x3446: 0x40684c20, 0x3447: 0x40684e20, - 0x3448: 0x40685020, 0x3449: 0x40685220, 0x344a: 0x40685420, 0x344b: 0x40685620, - 0x344c: 0x40685820, 0x344d: 0x40685a20, 0x344e: 0x40685c20, 0x344f: 0x40685e20, - 0x3450: 0x40686020, 0x3451: 0x40686220, 0x3452: 0x40686420, 0x3453: 0x40686620, - 0x3454: 0x40686820, 0x3455: 0x40686a20, 0x3456: 0x40686c20, 0x3457: 0x40686e20, - 0x3458: 0x40687020, 0x3459: 0x40687220, 0x345a: 0x40687420, 0x345b: 0x40687620, - 0x345c: 0x40687820, 0x345d: 0x40687a20, 0x345e: 0x40687c20, 0x345f: 0x40687e20, - 0x3460: 0x40688020, 0x3461: 0x40688220, 0x3462: 0x40688420, 0x3463: 0x40688620, - 0x3464: 0x40688820, 0x3465: 0x40688a20, 0x3466: 0x40688c20, 0x3467: 0x40688e20, - 0x3468: 0x40689020, 0x3469: 0x40689220, 0x346a: 0x40689420, 0x346b: 0x40689620, - 0x346c: 0x40689820, 0x346d: 0x40689a20, 0x346e: 0x40689c20, 0x346f: 0x40689e20, - 0x3470: 0x4068a020, 0x3471: 0x4068a220, 0x3472: 0x4068a420, 0x3473: 0x4068a620, - 0x3474: 0x4068a820, 0x3475: 0x4068aa20, 0x3476: 0x4068ac20, 0x3477: 0x4068ae20, - 0x3478: 0x4068b020, 0x3479: 0x4068b220, 0x347a: 0x4068b420, 0x347b: 0x4068b620, - 0x347c: 0x4068b820, 0x347d: 0x4068ba20, 0x347e: 0x4068bc20, 0x347f: 0x4068be20, - // Block 0xd2, offset 0x3480 - 0x3480: 0x4068c020, 0x3481: 0x4068c220, 0x3482: 0x4068c420, 0x3483: 0x4068c620, - 0x3484: 0x4068c820, 0x3485: 0x4068ca20, 0x3486: 0x4068cc20, 0x3487: 0x4068ce20, - 0x3488: 0x4068d020, 0x3489: 0x4068d220, 0x348a: 0x4068d420, 0x348b: 0x4068d620, - 0x348c: 0x4068d820, 0x348d: 0x4068da20, 0x348e: 0x4068dc20, 0x348f: 0x4068de20, - 0x3490: 0x4068e020, 0x3491: 0x4068e220, 0x3492: 0x4068e420, 0x3493: 0x4068e620, - 0x3494: 0x4068e820, 0x3495: 0x4068ea20, 0x3496: 0x4068ec20, 0x3497: 0x4068ee20, - 0x3498: 0x4068f020, 0x3499: 0x4068f220, 0x349a: 0x4068f420, 0x349b: 0x4068f620, - 0x349c: 0x4068f820, 0x349d: 0x4068fa20, 0x349e: 0x4068fc20, 0x349f: 0x4068fe20, - 0x34a0: 0x40690020, 0x34a1: 0x40690220, 0x34a2: 0x40690420, 0x34a3: 0x40690620, - 0x34a4: 0x40690820, 0x34a5: 0x40690a20, 0x34a6: 0x40690c20, 0x34a7: 0x40690e20, - 0x34a8: 0x40691020, 0x34a9: 0x40691220, 0x34aa: 0x40691420, 0x34ab: 0x40691620, - 0x34ac: 0x40691820, 0x34ad: 0x40691a20, 0x34ae: 0x40691c20, 0x34af: 0x40691e20, - 0x34b0: 0x40692020, 0x34b1: 0x40692220, 0x34b2: 0x40692420, 0x34b3: 0x40692620, - 0x34b4: 0x40692820, 0x34b5: 0x40692a20, 0x34b6: 0x40692c20, 0x34b7: 0x40692e20, - 0x34b8: 0x40693020, 0x34b9: 0x40693220, 0x34ba: 0x40693420, 0x34bb: 0x40693620, - 0x34bc: 0x40693820, 0x34bd: 0x40693a20, 0x34be: 0x40693c20, 0x34bf: 0x40693e20, - // Block 0xd3, offset 0x34c0 - 0x34c0: 0x40694020, 0x34c1: 0x40694220, 0x34c2: 0x40694420, 0x34c3: 0x40694620, - 0x34c4: 0x40694820, 0x34c5: 0x40694a20, 0x34c6: 0x40694c20, 0x34c7: 0x40694e20, - 0x34c8: 0x40695020, 0x34c9: 0x40695220, 0x34ca: 0x40695420, 0x34cb: 0x40695620, - 0x34cc: 0x40695820, 0x34cd: 0x40695a20, 0x34ce: 0x40695c20, 0x34cf: 0x40695e20, - 0x34d0: 0x40696020, 0x34d1: 0x40696220, 0x34d2: 0x40696420, 0x34d3: 0x40696620, - 0x34d4: 0x40696820, 0x34d5: 0x40696a20, 0x34d6: 0x40696c20, 0x34d7: 0x40696e20, - 0x34d8: 0x40697020, 0x34d9: 0x40697220, 0x34da: 0x40697420, 0x34db: 0x40697620, - 0x34dc: 0x40697820, 0x34dd: 0x40697a20, 0x34de: 0x40697c20, 0x34df: 0x40697e20, - 0x34e0: 0x40698020, 0x34e1: 0x40698220, 0x34e2: 0x40698420, 0x34e3: 0x40698620, - 0x34e4: 0x40698820, 0x34e5: 0x40698a20, 0x34e6: 0x40698c20, 0x34e7: 0x40698e20, - 0x34e8: 0x40699020, 0x34e9: 0x40699220, 0x34ea: 0x40699420, 0x34eb: 0x40699620, - 0x34ec: 0x40699820, 0x34ed: 0x40699a20, 0x34ee: 0x40699c20, 0x34ef: 0x40699e20, - 0x34f0: 0x4069a020, 0x34f1: 0x4069a220, 0x34f2: 0x4069a420, 0x34f3: 0x4069a620, - 0x34f4: 0x4069a820, 0x34f5: 0x4069aa20, 0x34f6: 0x4069ac20, 0x34f7: 0x4069ae20, - 0x34f8: 0x4069b020, 0x34f9: 0x4069b220, 0x34fa: 0x4069b420, 0x34fb: 0x4069b620, - 0x34fc: 0x4069b820, 0x34fd: 0x4069ba20, 0x34fe: 0x4069bc20, 0x34ff: 0x4069be20, - // Block 0xd4, offset 0x3500 - 0x3500: 0x4069c020, 0x3501: 0x4069c220, 0x3502: 0x4069c420, 0x3503: 0x4069c620, - 0x3504: 0x4069c820, 0x3505: 0x4069ca20, 0x3506: 0x4069cc20, 0x3507: 0x4069ce20, - 0x3508: 0x4069d020, 0x3509: 0x4069d220, 0x350a: 0x4069d420, 0x350b: 0x4069d620, - 0x350c: 0x4069d820, 0x350d: 0x4069da20, 0x350e: 0x4069dc20, 0x350f: 0x4069de20, - 0x3510: 0x4069e020, 0x3511: 0x4069e220, 0x3512: 0x4069e420, 0x3513: 0x4069e620, - 0x3514: 0x4069e820, 0x3515: 0x4069ea20, 0x3516: 0x4069ec20, 0x3517: 0x4069ee20, - 0x3518: 0x4069f020, 0x3519: 0x4069f220, 0x351a: 0x4069f420, 0x351b: 0x4069f620, - 0x351c: 0x4069f820, 0x351d: 0x4069fa20, 0x351e: 0x4069fc20, 0x351f: 0x4069fe20, - 0x3520: 0x406a0020, 0x3521: 0x406a0220, 0x3522: 0x406a0420, 0x3523: 0x406a0620, - 0x3524: 0x406a0820, 0x3525: 0x406a0a20, 0x3526: 0x406a0c20, 0x3527: 0x406a0e20, - 0x3528: 0x406a1020, 0x3529: 0x406a1220, 0x352a: 0x406a1420, 0x352b: 0x406a1620, - 0x352c: 0x406a1820, 0x352d: 0x406a1a20, 0x352e: 0x406a1c20, 0x352f: 0x406a1e20, - 0x3530: 0x406a2020, 0x3531: 0x406a2220, 0x3532: 0x406a2420, 0x3533: 0x406a2620, - 0x3534: 0x406a2820, 0x3535: 0x406a2a20, 0x3536: 0x406a2c20, 0x3537: 0x406a2e20, - 0x3538: 0x406a3020, 0x3539: 0x406a3220, 0x353a: 0x406a3420, 0x353b: 0x406a3620, - 0x353c: 0x406a3820, 0x353d: 0x406a3a20, 0x353e: 0x406a3c20, 0x353f: 0x406a3e20, - // Block 0xd5, offset 0x3540 - 0x3540: 0x406a4020, 0x3541: 0x406a4220, 0x3542: 0x406a4420, 0x3543: 0x406a4620, - 0x3544: 0x406a4820, 0x3545: 0x406a4a20, 0x3546: 0x406a4c20, 0x3547: 0x406a4e20, - 0x3548: 0x406a5020, 0x3549: 0x406a5220, 0x354a: 0x406a5420, 0x354b: 0x406a5620, - 0x354c: 0x406a5820, 0x354d: 0x406a5a20, 0x354e: 0x406a5c20, 0x354f: 0x406a5e20, - 0x3550: 0x406a6020, 0x3551: 0x406a6220, 0x3552: 0x406a6420, 0x3553: 0x406a6620, - 0x3554: 0x406a6820, 0x3555: 0x406a6a20, 0x3556: 0x406a6c20, 0x3557: 0x406a6e20, - 0x3558: 0x406a7020, 0x3559: 0x406a7220, 0x355a: 0x406a7420, 0x355b: 0x406a7620, - 0x355c: 0x406a7820, 0x355d: 0x406a7a20, 0x355e: 0x406a7c20, 0x355f: 0x406a7e20, - 0x3560: 0x406a8020, 0x3561: 0x406a8220, 0x3562: 0x406a8420, 0x3563: 0x406a8620, - 0x3564: 0x406a8820, 0x3565: 0x406a8a20, 0x3566: 0x406a8c20, 0x3567: 0x406a8e20, - 0x3568: 0x406a9020, 0x3569: 0x406a9220, 0x356a: 0x406a9420, 0x356b: 0x406a9620, - 0x356c: 0x406a9820, 0x356d: 0x406a9a20, 0x356e: 0x406a9c20, 0x356f: 0x406a9e20, - 0x3570: 0x406aa020, 0x3571: 0x406aa220, 0x3572: 0x406aa420, 0x3573: 0x406aa620, - 0x3574: 0x406aa820, 0x3575: 0x406aaa20, 0x3576: 0x406aac20, 0x3577: 0x406aae20, - 0x3578: 0x406ab020, 0x3579: 0x406ab220, 0x357a: 0x406ab420, 0x357b: 0x406ab620, - 0x357c: 0x406ab820, 0x357d: 0x406aba20, 0x357e: 0x406abc20, 0x357f: 0x406abe20, - // Block 0xd6, offset 0x3580 - 0x3580: 0x406ac020, 0x3581: 0x406ac220, 0x3582: 0x406ac420, 0x3583: 0x406ac620, - 0x3584: 0x406ac820, 0x3585: 0x406aca20, 0x3586: 0x406acc20, 0x3587: 0x406ace20, - 0x3588: 0x406ad020, 0x3589: 0x406ad220, 0x358a: 0x406ad420, 0x358b: 0x406ad620, - 0x358c: 0x406ad820, 0x358d: 0x406ada20, 0x358e: 0x406adc20, 0x358f: 0x406ade20, - 0x3590: 0x406ae020, 0x3591: 0x406ae220, 0x3592: 0x406ae420, 0x3593: 0x406ae620, - 0x3594: 0x406ae820, 0x3595: 0x406aea20, 0x3596: 0x406aec20, 0x3597: 0x406aee20, - 0x3598: 0x406af020, 0x3599: 0x406af220, 0x359a: 0x406af420, 0x359b: 0x406af620, - 0x359c: 0x406af820, 0x359d: 0x406afa20, 0x359e: 0x406afc20, 0x359f: 0x406afe20, - 0x35a0: 0x406b0020, 0x35a1: 0x406b0220, 0x35a2: 0x406b0420, 0x35a3: 0x406b0620, - 0x35a4: 0x406b0820, 0x35a5: 0x406b0a20, 0x35a6: 0x406b0c20, 0x35a7: 0x406b0e20, - 0x35a8: 0x406b1020, 0x35a9: 0x406b1220, 0x35aa: 0x406b1420, 0x35ab: 0x406b1620, - 0x35ac: 0x406b1820, 0x35ad: 0x406b1a20, 0x35ae: 0x406b1c20, 0x35af: 0x406b1e20, - 0x35b0: 0x406b2020, 0x35b1: 0x406b2220, 0x35b2: 0x406b2420, 0x35b3: 0x406b2620, - 0x35b4: 0x406b2820, 0x35b5: 0x406b2a20, 0x35b6: 0x406b2c20, 0x35b7: 0x406b2e20, - 0x35b8: 0x406b3020, 0x35b9: 0x406b3220, 0x35ba: 0x406b3420, 0x35bb: 0x406b3620, - 0x35bc: 0x406b3820, 0x35bd: 0x406b3a20, 0x35be: 0x406b3c20, 0x35bf: 0x406b3e20, - // Block 0xd7, offset 0x35c0 - 0x35c0: 0x406b4020, 0x35c1: 0x406b4220, 0x35c2: 0x406b4420, 0x35c3: 0x406b4620, - 0x35c4: 0x406b4820, 0x35c5: 0x406b4a20, 0x35c6: 0x406b4c20, 0x35c7: 0x406b4e20, - 0x35c8: 0x406b5020, 0x35c9: 0x406b5220, 0x35ca: 0x406b5420, 0x35cb: 0x406b5620, - 0x35cc: 0x406b5820, 0x35cd: 0x406b5a20, 0x35ce: 0x406b5c20, 0x35cf: 0x406b5e20, - 0x35d0: 0x406b6020, 0x35d1: 0x406b6220, 0x35d2: 0x406b6420, 0x35d3: 0x406b6620, - 0x35d4: 0x406b6820, 0x35d5: 0x406b6a20, 0x35d6: 0x406b6c20, 0x35d7: 0x406b6e20, - 0x35d8: 0x406b7020, 0x35d9: 0x406b7220, 0x35da: 0x406b7420, 0x35db: 0x406b7620, - 0x35dc: 0x406b7820, 0x35dd: 0x406b7a20, 0x35de: 0x406b7c20, 0x35df: 0x406b7e20, - 0x35e0: 0x406b8020, 0x35e1: 0x406b8220, 0x35e2: 0x406b8420, 0x35e3: 0x406b8620, - 0x35e4: 0x406b8820, 0x35e5: 0x406b8a20, 0x35e6: 0x406b8c20, 0x35e7: 0x406b8e20, - 0x35e8: 0x406b9020, 0x35e9: 0x406b9220, 0x35ea: 0x406b9420, 0x35eb: 0x406b9620, - 0x35ec: 0x406b9820, 0x35ed: 0x406b9a20, 0x35ee: 0x406b9c20, 0x35ef: 0x406b9e20, - 0x35f0: 0x406ba020, 0x35f1: 0x406ba220, 0x35f2: 0x406ba420, 0x35f3: 0x406ba620, - 0x35f4: 0x406ba820, 0x35f5: 0x406baa20, 0x35f6: 0x406bac20, 0x35f7: 0x406bae20, - 0x35f8: 0x406bb020, 0x35f9: 0x406bb220, 0x35fa: 0x406bb420, 0x35fb: 0x406bb620, - 0x35fc: 0x406bb820, 0x35fd: 0x406bba20, 0x35fe: 0x406bbc20, 0x35ff: 0x406bbe20, - // Block 0xd8, offset 0x3600 - 0x3600: 0x406bc020, 0x3601: 0x406bc220, 0x3602: 0x406bc420, 0x3603: 0x406bc620, - 0x3604: 0x406bc820, 0x3605: 0x406bca20, 0x3606: 0x406bcc20, 0x3607: 0x406bce20, - 0x3608: 0x406bd020, 0x3609: 0x406bd220, 0x360a: 0x406bd420, 0x360b: 0x406bd620, - 0x360c: 0x406bd820, 0x360d: 0x406bda20, 0x360e: 0x406bdc20, 0x360f: 0x406bde20, - 0x3610: 0x406be020, 0x3611: 0x406be220, 0x3612: 0x406be420, 0x3613: 0x406be620, - 0x3614: 0x406be820, 0x3615: 0x406bea20, 0x3616: 0x406bec20, 0x3617: 0x406bee20, - 0x3618: 0x406bf020, 0x3619: 0x406bf220, 0x361a: 0x406bf420, 0x361b: 0x406bf620, - 0x361c: 0x406bf820, 0x361d: 0x406bfa20, 0x361e: 0x406bfc20, 0x361f: 0x406bfe20, - 0x3620: 0x406c0020, 0x3621: 0x406c0220, 0x3622: 0x406c0420, 0x3623: 0x406c0620, - 0x3624: 0x406c0820, 0x3625: 0x406c0a20, 0x3626: 0x406c0c20, 0x3627: 0x406c0e20, - 0x3628: 0x406c1020, 0x3629: 0x406c1220, 0x362a: 0x406c1420, 0x362b: 0x406c1620, - 0x362c: 0x406c1820, 0x362d: 0x406c1a20, 0x362e: 0x406c1c20, 0x362f: 0x406c1e20, - 0x3630: 0x406c2020, 0x3631: 0x406c2220, 0x3632: 0x406c2420, 0x3633: 0x406c2620, - 0x3634: 0x406c2820, 0x3635: 0x406c2a20, 0x3636: 0x406c2c20, 0x3637: 0x406c2e20, - 0x3638: 0x406c3020, 0x3639: 0x406c3220, 0x363a: 0x406c3420, 0x363b: 0x406c3620, - 0x363c: 0x406c3820, 0x363d: 0x406c3a20, 0x363e: 0x406c3c20, 0x363f: 0x406c3e20, - // Block 0xd9, offset 0x3640 - 0x3640: 0x406c4020, 0x3641: 0x406c4220, 0x3642: 0x406c4420, 0x3643: 0x406c4620, - 0x3644: 0x406c4820, 0x3645: 0x406c4a20, 0x3646: 0x406c4c20, 0x3647: 0x406c4e20, - 0x3648: 0x406c5020, 0x3649: 0x406c5220, 0x364a: 0x406c5420, 0x364b: 0x406c5620, - 0x364c: 0x406c5820, 0x364d: 0x406c5a20, 0x364e: 0x406c5c20, 0x364f: 0x406c5e20, - 0x3650: 0x406c6020, 0x3651: 0x406c6220, 0x3652: 0x406c6420, 0x3653: 0x406c6620, - 0x3654: 0x406c6820, 0x3655: 0x406c6a20, 0x3656: 0x406c6c20, 0x3657: 0x406c6e20, - 0x3658: 0x406c7020, 0x3659: 0x406c7220, 0x365a: 0x406c7420, 0x365b: 0x406c7620, - 0x365c: 0x406c7820, 0x365d: 0x406c7a20, 0x365e: 0x406c7c20, 0x365f: 0x406c7e20, - 0x3660: 0x406c8020, 0x3661: 0x406c8220, 0x3662: 0x406c8420, 0x3663: 0x406c8620, - 0x3664: 0x406c8820, 0x3665: 0x406c8a20, 0x3666: 0x406c8c20, 0x3667: 0x406c8e20, - 0x3668: 0x406c9020, 0x3669: 0x406c9220, 0x366a: 0x406c9420, 0x366b: 0x406c9620, - 0x366c: 0x406c9820, 0x366d: 0x406c9a20, 0x366e: 0x406c9c20, 0x366f: 0x406c9e20, - 0x3670: 0x406ca020, 0x3671: 0x406ca220, 0x3672: 0x406ca420, 0x3673: 0x406ca620, - 0x3674: 0x406ca820, 0x3675: 0x406caa20, 0x3676: 0x406cac20, 0x3677: 0x406cae20, - 0x3678: 0x406cb020, 0x3679: 0x406cb220, 0x367a: 0x406cb420, 0x367b: 0x406cb620, - 0x367c: 0x406cb820, 0x367d: 0x406cba20, 0x367e: 0x406cbc20, 0x367f: 0x406cbe20, - // Block 0xda, offset 0x3680 - 0x3680: 0x406cc020, 0x3681: 0x406cc220, 0x3682: 0x406cc420, 0x3683: 0x406cc620, - 0x3684: 0x406cc820, 0x3685: 0x406cca20, 0x3686: 0x406ccc20, 0x3687: 0x406cce20, - 0x3688: 0x406cd020, 0x3689: 0x406cd220, 0x368a: 0x406cd420, 0x368b: 0x406cd620, - 0x368c: 0x406cd820, 0x368d: 0x406cda20, 0x368e: 0x406cdc20, 0x368f: 0x406cde20, - 0x3690: 0x406ce020, 0x3691: 0x406ce220, 0x3692: 0x406ce420, 0x3693: 0x406ce620, - 0x3694: 0x406ce820, 0x3695: 0x406cea20, 0x3696: 0x406cec20, 0x3697: 0x406cee20, - 0x3698: 0x406cf020, 0x3699: 0x406cf220, 0x369a: 0x406cf420, 0x369b: 0x406cf620, - 0x369c: 0x406cf820, 0x369d: 0x406cfa20, 0x369e: 0x406cfc20, 0x369f: 0x406cfe20, - 0x36a0: 0x406d0020, 0x36a1: 0x406d0220, 0x36a2: 0x406d0420, 0x36a3: 0x406d0620, - 0x36a4: 0x406d0820, 0x36a5: 0x406d0a20, 0x36a6: 0x406d0c20, 0x36a7: 0x406d0e20, - 0x36a8: 0x406d1020, 0x36a9: 0x406d1220, 0x36aa: 0x406d1420, 0x36ab: 0x406d1620, - 0x36ac: 0x406d1820, 0x36ad: 0x406d1a20, 0x36ae: 0x406d1c20, 0x36af: 0x406d1e20, - 0x36b0: 0x406d2020, 0x36b1: 0x406d2220, 0x36b2: 0x406d2420, 0x36b3: 0x406d2620, - 0x36b4: 0x406d2820, 0x36b5: 0x406d2a20, 0x36b6: 0x406d2c20, 0x36b7: 0x406d2e20, - 0x36b8: 0x406d3020, 0x36b9: 0x406d3220, 0x36ba: 0x406d3420, 0x36bb: 0x406d3620, - 0x36bc: 0x406d3820, 0x36bd: 0x406d3a20, 0x36be: 0x406d3c20, 0x36bf: 0x406d3e20, - // Block 0xdb, offset 0x36c0 - 0x36c0: 0x406d4020, 0x36c1: 0x406d4220, 0x36c2: 0x406d4420, 0x36c3: 0x406d4620, - 0x36c4: 0x406d4820, 0x36c5: 0x406d4a20, 0x36c6: 0x406d4c20, 0x36c7: 0x406d4e20, - 0x36c8: 0x406d5020, 0x36c9: 0x406d5220, 0x36ca: 0x406d5420, 0x36cb: 0x406d5620, - 0x36cc: 0x406d5820, 0x36cd: 0x406d5a20, 0x36ce: 0x406d5c20, 0x36cf: 0x406d5e20, - 0x36d0: 0x406d6020, 0x36d1: 0x406d6220, 0x36d2: 0x406d6420, 0x36d3: 0x406d6620, - 0x36d4: 0x406d6820, 0x36d5: 0x406d6a20, 0x36d6: 0x406d6c20, 0x36d7: 0x406d6e20, - 0x36d8: 0x406d7020, 0x36d9: 0x406d7220, 0x36da: 0x406d7420, 0x36db: 0x406d7620, - 0x36dc: 0x406d7820, 0x36dd: 0x406d7a20, 0x36de: 0x406d7c20, 0x36df: 0x406d7e20, - 0x36e0: 0x406d8020, 0x36e1: 0x406d8220, 0x36e2: 0x406d8420, 0x36e3: 0x406d8620, - 0x36e4: 0x406d8820, 0x36e5: 0x406d8a20, 0x36e6: 0x406d8c20, 0x36e7: 0x406d8e20, - 0x36e8: 0x406d9020, 0x36e9: 0x406d9220, 0x36ea: 0x406d9420, 0x36eb: 0x406d9620, - 0x36ec: 0x406d9820, 0x36ed: 0x406d9a20, 0x36ee: 0x406d9c20, 0x36ef: 0x406d9e20, - 0x36f0: 0x406da020, 0x36f1: 0x406da220, 0x36f2: 0x406da420, 0x36f3: 0x406da620, - 0x36f4: 0x406da820, 0x36f5: 0x406daa20, 0x36f6: 0x406dac20, 0x36f7: 0x406dae20, - 0x36f8: 0x406db020, 0x36f9: 0x406db220, 0x36fa: 0x406db420, 0x36fb: 0x406db620, - 0x36fc: 0x406db820, 0x36fd: 0x406dba20, 0x36fe: 0x406dbc20, 0x36ff: 0x406dbe20, - // Block 0xdc, offset 0x3700 - 0x3700: 0x406dc020, 0x3701: 0x406dc220, 0x3702: 0x406dc420, 0x3703: 0x406dc620, - 0x3704: 0x406dc820, 0x3705: 0x406dca20, 0x3706: 0x406dcc20, 0x3707: 0x406dce20, - 0x3708: 0x406dd020, 0x3709: 0x406dd220, 0x370a: 0x406dd420, 0x370b: 0x406dd620, - 0x370c: 0x406dd820, 0x370d: 0x406dda20, 0x370e: 0x406ddc20, 0x370f: 0x406dde20, - 0x3710: 0x406de020, 0x3711: 0x406de220, 0x3712: 0x406de420, 0x3713: 0x406de620, - 0x3714: 0x406de820, 0x3715: 0x406dea20, 0x3716: 0x406dec20, 0x3717: 0x406dee20, - 0x3718: 0x406df020, 0x3719: 0x406df220, 0x371a: 0x406df420, 0x371b: 0x406df620, - 0x371c: 0x406df820, 0x371d: 0x406dfa20, 0x371e: 0x406dfc20, 0x371f: 0x406dfe20, - 0x3720: 0x406e0020, 0x3721: 0x406e0220, 0x3722: 0x406e0420, 0x3723: 0x406e0620, - 0x3724: 0x406e0820, 0x3725: 0x406e0a20, 0x3726: 0x406e0c20, 0x3727: 0x406e0e20, - 0x3728: 0x406e1020, 0x3729: 0x406e1220, 0x372a: 0x406e1420, 0x372b: 0x406e1620, - 0x372c: 0x406e1820, 0x372d: 0x406e1a20, 0x372e: 0x406e1c20, 0x372f: 0x406e1e20, - 0x3730: 0x406e2020, 0x3731: 0x406e2220, 0x3732: 0x406e2420, 0x3733: 0x406e2620, - 0x3734: 0x406e2820, 0x3735: 0x406e2a20, 0x3736: 0x406e2c20, 0x3737: 0x406e2e20, - 0x3738: 0x406e3020, 0x3739: 0x406e3220, 0x373a: 0x406e3420, 0x373b: 0x406e3620, - 0x373c: 0x406e3820, 0x373d: 0x406e3a20, 0x373e: 0x406e3c20, 0x373f: 0x406e3e20, - // Block 0xdd, offset 0x3740 - 0x3740: 0x406e4020, 0x3741: 0x406e4220, 0x3742: 0x406e4420, 0x3743: 0x406e4620, - 0x3744: 0x406e4820, 0x3745: 0x406e4a20, 0x3746: 0x406e4c20, 0x3747: 0x406e4e20, - 0x3748: 0x406e5020, 0x3749: 0x406e5220, 0x374a: 0x406e5420, 0x374b: 0x406e5620, - 0x374c: 0x406e5820, 0x374d: 0x406e5a20, 0x374e: 0x406e5c20, 0x374f: 0x406e5e20, - 0x3750: 0x406e6020, 0x3751: 0x406e6220, 0x3752: 0x406e6420, 0x3753: 0x406e6620, - 0x3754: 0x406e6820, 0x3755: 0x406e6a20, 0x3756: 0x406e6c20, 0x3757: 0x406e6e20, - 0x3758: 0x406e7020, 0x3759: 0x406e7220, 0x375a: 0x406e7420, 0x375b: 0x406e7620, - 0x375c: 0x406e7820, 0x375d: 0x406e7a20, 0x375e: 0x406e7c20, 0x375f: 0x406e7e20, - 0x3760: 0x406e8020, 0x3761: 0x406e8220, 0x3762: 0x406e8420, 0x3763: 0x406e8620, - 0x3764: 0x406e8820, 0x3765: 0x406e8a20, 0x3766: 0x406e8c20, 0x3767: 0x406e8e20, - 0x3768: 0x406e9020, 0x3769: 0x406e9220, 0x376a: 0x406e9420, 0x376b: 0x406e9620, - 0x376c: 0x406e9820, 0x376d: 0x406e9a20, 0x376e: 0x406e9c20, 0x376f: 0x406e9e20, - 0x3770: 0x406ea020, 0x3771: 0x406ea220, 0x3772: 0x406ea420, 0x3773: 0x406ea620, - 0x3774: 0x406ea820, 0x3775: 0x406eaa20, 0x3776: 0x406eac20, 0x3777: 0x406eae20, - 0x3778: 0x406eb020, 0x3779: 0x406eb220, 0x377a: 0x406eb420, 0x377b: 0x406eb620, - 0x377c: 0x406eb820, 0x377d: 0x406eba20, 0x377e: 0x406ebc20, 0x377f: 0x406ebe20, - // Block 0xde, offset 0x3780 - 0x3780: 0x406ec020, 0x3781: 0x406ec220, 0x3782: 0x406ec420, 0x3783: 0x406ec620, - 0x3784: 0x406ec820, 0x3785: 0x406eca20, 0x3786: 0x406ecc20, 0x3787: 0x406ece20, - 0x3788: 0x406ed020, 0x3789: 0x406ed220, 0x378a: 0x406ed420, 0x378b: 0x406ed620, - 0x378c: 0x406ed820, 0x378d: 0x406eda20, 0x378e: 0x406edc20, 0x378f: 0x406ede20, - 0x3790: 0x406ee020, 0x3791: 0x406ee220, 0x3792: 0x406ee420, 0x3793: 0x406ee620, - 0x3794: 0x406ee820, 0x3795: 0x406eea20, 0x3796: 0x406eec20, 0x3797: 0x406eee20, - 0x3798: 0x406ef020, 0x3799: 0x406ef220, 0x379a: 0x406ef420, 0x379b: 0x406ef620, - 0x379c: 0x406ef820, 0x379d: 0x406efa20, 0x379e: 0x406efc20, 0x379f: 0x406efe20, - 0x37a0: 0x406f0020, 0x37a1: 0x406f0220, 0x37a2: 0x406f0420, 0x37a3: 0x406f0620, - 0x37a4: 0x406f0820, 0x37a5: 0x406f0a20, 0x37a6: 0x406f0c20, 0x37a7: 0x406f0e20, - 0x37a8: 0x406f1020, 0x37a9: 0x406f1220, 0x37aa: 0x406f1420, 0x37ab: 0x406f1620, - 0x37ac: 0x406f1820, 0x37ad: 0x406f1a20, 0x37ae: 0x406f1c20, 0x37af: 0x406f1e20, - 0x37b0: 0x406f2020, 0x37b1: 0x406f2220, 0x37b2: 0x406f2420, 0x37b3: 0x406f2620, - 0x37b4: 0x406f2820, 0x37b5: 0x406f2a20, 0x37b6: 0x406f2c20, 0x37b7: 0x406f2e20, - 0x37b8: 0x406f3020, 0x37b9: 0x406f3220, 0x37ba: 0x406f3420, 0x37bb: 0x406f3620, - 0x37bc: 0x406f3820, 0x37bd: 0x406f3a20, 0x37be: 0x406f3c20, 0x37bf: 0x406f3e20, - // Block 0xdf, offset 0x37c0 - 0x37c0: 0x406f4020, 0x37c1: 0x406f4220, 0x37c2: 0x406f4420, 0x37c3: 0x406f4620, - 0x37c4: 0x406f4820, 0x37c5: 0x406f4a20, 0x37c6: 0x406f4c20, 0x37c7: 0x406f4e20, - 0x37c8: 0x406f5020, 0x37c9: 0x406f5220, 0x37ca: 0x406f5420, 0x37cb: 0x406f5620, - 0x37cc: 0x406f5820, - 0x37d0: 0x401a9020, 0x37d1: 0x401a9220, 0x37d2: 0x401a9420, 0x37d3: 0x401a9620, - 0x37d4: 0x401a9820, 0x37d5: 0x401a9a20, 0x37d6: 0x401a9c20, 0x37d7: 0x401a9e20, - 0x37d8: 0x401aa020, 0x37d9: 0x401aa220, 0x37da: 0x401aa420, 0x37db: 0x401aa620, - 0x37dc: 0x401aa820, 0x37dd: 0x401aaa20, 0x37de: 0x401aac20, 0x37df: 0x401aae20, - 0x37e0: 0x401ab020, 0x37e1: 0x401ab220, 0x37e2: 0x401ab420, 0x37e3: 0x401ab620, - 0x37e4: 0x401ab820, 0x37e5: 0x401aba20, 0x37e6: 0x401abc20, 0x37e7: 0x401abe20, - 0x37e8: 0x401ac020, 0x37e9: 0x401ac220, 0x37ea: 0x401ac420, 0x37eb: 0x401ac620, - 0x37ec: 0x401ac820, 0x37ed: 0x401aca20, 0x37ee: 0x401acc20, 0x37ef: 0x401ace20, - 0x37f0: 0x401ad020, 0x37f1: 0x401ad220, 0x37f2: 0x401ad420, 0x37f3: 0x401ad620, - 0x37f4: 0x401ad820, 0x37f5: 0x401ada20, 0x37f6: 0x401adc20, 0x37f7: 0x401ade20, - 0x37f8: 0x401ae020, 0x37f9: 0x401ae220, 0x37fa: 0x401ae420, 0x37fb: 0x401ae620, - 0x37fc: 0x401ae820, 0x37fd: 0x401aea20, 0x37fe: 0x401aec20, 0x37ff: 0x401aee20, - // Block 0xe0, offset 0x3800 - 0x3800: 0x401af020, 0x3801: 0x401af220, 0x3802: 0x401af420, 0x3803: 0x401af620, - 0x3804: 0x401af820, 0x3805: 0x401afa20, 0x3806: 0x401afc20, - 0x3810: 0x406f6620, 0x3811: 0x406f6820, 0x3812: 0x406f6a20, 0x3813: 0x406f6c20, - 0x3814: 0x406f6e20, 0x3815: 0x406f7020, 0x3816: 0x406f7220, 0x3817: 0x406f7420, - 0x3818: 0x406f7620, 0x3819: 0x406f7820, 0x381a: 0x406f7a20, 0x381b: 0x406f7c20, - 0x381c: 0x406f7e20, 0x381d: 0x406f8020, 0x381e: 0x406f8220, 0x381f: 0x406f8420, - 0x3820: 0x406f8620, 0x3821: 0x406f8820, 0x3822: 0x406f8a20, 0x3823: 0x406f8c20, - 0x3824: 0x406f8e20, 0x3825: 0x406f9020, 0x3826: 0x406f9220, 0x3827: 0x406f9420, - 0x3828: 0x406f9620, 0x3829: 0x406f9820, 0x382a: 0x406f9e20, 0x382b: 0x406f9a20, - 0x382c: 0x406fa020, 0x382d: 0x406f9c20, 0x382e: 0x406fa220, 0x382f: 0x406fa420, - 0x3830: 0x406fa620, 0x3831: 0x406fa820, 0x3832: 0x406faa20, 0x3833: 0x406fac20, - 0x3834: 0x406fae20, 0x3835: 0x406fb020, 0x3836: 0x406fb220, 0x3837: 0x406fb420, - 0x3838: 0x406f5a20, 0x3839: 0x406f5c20, 0x383a: 0x406f5e20, 0x383b: 0x406f6020, - 0x383c: 0x406f6420, 0x383d: 0x406f6220, 0x383e: 0x40025620, 0x383f: 0x4002fe20, - // Block 0xe1, offset 0x3840 - 0x3840: 0x405b8020, 0x3841: 0x405b8220, 0x3842: 0x405b8420, 0x3843: 0x405b8620, - 0x3844: 0x405b8820, 0x3845: 0x405b8a20, 0x3846: 0x405b8c20, 0x3847: 0x405b8e20, - 0x3848: 0x405b9020, 0x3849: 0x405b9220, 0x384a: 0x405b9420, 0x384b: 0x405b9620, - 0x384c: 0x405b9820, 0x384d: 0x405b9a20, 0x384e: 0x405b9c20, 0x384f: 0x405b9e20, - 0x3850: 0x405ba020, 0x3851: 0x405ba220, 0x3852: 0x405ba420, 0x3853: 0x405ba620, - 0x3854: 0x405ba820, 0x3855: 0x405baa20, 0x3856: 0x405bac20, 0x3857: 0x405bae20, - 0x3858: 0x405bb020, 0x3859: 0x405bb220, 0x385a: 0x405bb420, 0x385b: 0x405bb620, - 0x385c: 0x405bb820, 0x385d: 0x405bba20, 0x385e: 0x405bbc20, 0x385f: 0x405bbe20, - 0x3860: 0x405bc020, 0x3861: 0x405bc220, 0x3862: 0x405bc420, 0x3863: 0x405bc620, - 0x3864: 0x405bc820, 0x3865: 0x405bca20, 0x3866: 0x405bcc20, 0x3867: 0x405bce20, - 0x3868: 0x405bd020, 0x3869: 0x405bd220, 0x386a: 0x405bd420, 0x386b: 0x405bd620, - 0x386c: 0x405bd820, 0x386d: 0x405bda20, 0x386e: 0x405bdc20, 0x386f: 0x405bde20, - 0x3870: 0x405be020, 0x3871: 0x405be220, 0x3872: 0x405be420, 0x3873: 0x405be620, - 0x3874: 0x405be820, 0x3875: 0x405bea20, 0x3876: 0x405bec20, 0x3877: 0x405bee20, - 0x3878: 0x405bf020, 0x3879: 0x405bf220, 0x387a: 0x405bf420, 0x387b: 0x405bf620, - 0x387c: 0x405bf820, 0x387d: 0x405bfa20, 0x387e: 0x405bfc20, 0x387f: 0x405bfe20, - // Block 0xe2, offset 0x3880 - 0x3880: 0x405c0020, 0x3881: 0x405c0220, 0x3882: 0x405c0420, 0x3883: 0x405c0620, - 0x3884: 0x405c0820, 0x3885: 0x405c0a20, 0x3886: 0x405c0c20, 0x3887: 0x405c0e20, - 0x3888: 0x405c1020, 0x3889: 0x405c1220, 0x388a: 0x405c1420, 0x388b: 0x405c1620, - 0x388c: 0x405c1820, 0x388d: 0x405c1a20, 0x388e: 0x405c1c20, 0x388f: 0x405c1e20, - 0x3890: 0x405c2020, 0x3891: 0x405c2220, 0x3892: 0x405c2420, 0x3893: 0x405c2620, - 0x3894: 0x405c2820, 0x3895: 0x405c2a20, 0x3896: 0x405c2c20, 0x3897: 0x405c2e20, - 0x3898: 0x405c3020, 0x3899: 0x405c3220, 0x389a: 0x405c3420, 0x389b: 0x405c3620, - 0x389c: 0x405c3820, 0x389d: 0x405c3a20, 0x389e: 0x405c3c20, 0x389f: 0x405c3e20, - 0x38a0: 0x405c4020, 0x38a1: 0x405c4220, 0x38a2: 0x405c4420, 0x38a3: 0x405c4620, - 0x38a4: 0x405c4820, 0x38a5: 0x405c4a20, 0x38a6: 0x405c4c20, 0x38a7: 0x405c4e20, - 0x38a8: 0x405c5020, 0x38a9: 0x405c5220, 0x38aa: 0x405c5420, 0x38ab: 0x405c5620, - 0x38ac: 0x405c5820, 0x38ad: 0x405c5a20, 0x38ae: 0x405c5c20, 0x38af: 0x405c5e20, - 0x38b0: 0x405c6020, 0x38b1: 0x405c6220, 0x38b2: 0x405c6420, 0x38b3: 0x405c6620, - 0x38b4: 0x405c6820, 0x38b5: 0x405c6a20, 0x38b6: 0x405c6c20, 0x38b7: 0x405c6e20, - 0x38b8: 0x405c7020, 0x38b9: 0x405c7220, 0x38ba: 0x405c7420, 0x38bb: 0x405c7620, - 0x38bc: 0x405c7820, 0x38bd: 0x405c7a20, 0x38be: 0x405c7c20, 0x38bf: 0x405c7e20, - // Block 0xe3, offset 0x38c0 - 0x38c0: 0x405c8020, 0x38c1: 0x405c8220, 0x38c2: 0x405c8420, 0x38c3: 0x405c8620, - 0x38c4: 0x405c8820, 0x38c5: 0x405c8a20, 0x38c6: 0x405c8c20, 0x38c7: 0x405c8e20, - 0x38c8: 0x405c9020, 0x38c9: 0x405c9220, 0x38ca: 0x405c9420, 0x38cb: 0x405c9620, - 0x38cc: 0x405c9820, 0x38cd: 0x405c9a20, 0x38ce: 0x405c9c20, 0x38cf: 0x405c9e20, - 0x38d0: 0x405ca020, 0x38d1: 0x405ca220, 0x38d2: 0x405ca420, 0x38d3: 0x405ca620, - 0x38d4: 0x405ca820, 0x38d5: 0x405caa20, 0x38d6: 0x405cac20, 0x38d7: 0x405cae20, - 0x38d8: 0x405cb020, 0x38d9: 0x405cb220, 0x38da: 0x405cb420, 0x38db: 0x405cb620, - 0x38dc: 0x405cb820, 0x38dd: 0x405cba20, 0x38de: 0x405cbc20, 0x38df: 0x405cbe20, - 0x38e0: 0x405cc020, 0x38e1: 0x405cc220, 0x38e2: 0x405cc420, 0x38e3: 0x405cc620, - 0x38e4: 0x405cc820, 0x38e5: 0x405cca20, 0x38e6: 0x405ccc20, 0x38e7: 0x405cce20, - 0x38e8: 0x405cd020, 0x38e9: 0x405cd220, 0x38ea: 0x405cd420, 0x38eb: 0x405cd620, - 0x38ec: 0x405cd820, 0x38ed: 0x405cda20, 0x38ee: 0x405cdc20, 0x38ef: 0x405cde20, - 0x38f0: 0x405ce020, 0x38f1: 0x405ce220, 0x38f2: 0x405ce420, 0x38f3: 0x405ce620, - 0x38f4: 0x405ce820, 0x38f5: 0x405cea20, 0x38f6: 0x405cec20, 0x38f7: 0x405cee20, - 0x38f8: 0x405cf020, 0x38f9: 0x405cf220, 0x38fa: 0x405cf420, 0x38fb: 0x405cf620, - 0x38fc: 0x405cf820, 0x38fd: 0x405cfa20, 0x38fe: 0x405cfc20, 0x38ff: 0x405cfe20, - // Block 0xe4, offset 0x3900 - 0x3900: 0x405d0020, 0x3901: 0x405d0220, 0x3902: 0x405d0420, 0x3903: 0x405d0620, - 0x3904: 0x405d0820, 0x3905: 0x405d0a20, 0x3906: 0x405d0c20, 0x3907: 0x405d0e20, - 0x3908: 0x405d1020, 0x3909: 0x405d1220, 0x390a: 0x405d1420, 0x390b: 0x405d1620, - 0x390c: 0x405d1820, 0x390d: 0x405d1a20, 0x390e: 0x405d1c20, 0x390f: 0x405d1e20, - 0x3910: 0x405d2020, 0x3911: 0x405d2220, 0x3912: 0x405d2420, 0x3913: 0x405d2620, - 0x3914: 0x405d2820, 0x3915: 0x405d2a20, 0x3916: 0x405d2c20, 0x3917: 0x405d2e20, - 0x3918: 0x405d3020, 0x3919: 0x405d3220, 0x391a: 0x405d3420, 0x391b: 0x405d3620, - 0x391c: 0x405d3820, 0x391d: 0x405d3a20, 0x391e: 0x405d3c20, 0x391f: 0x405d3e20, - 0x3920: 0x405d4020, 0x3921: 0x405d4220, 0x3922: 0x405d4420, 0x3923: 0x405d4620, - 0x3924: 0x405d4820, 0x3925: 0x405d4a20, 0x3926: 0x405d4c20, 0x3927: 0x405d4e20, - 0x3928: 0x405d5020, 0x3929: 0x405d5220, 0x392a: 0x405d5420, 0x392b: 0x405d5620, - 0x392c: 0x405d5820, 0x392d: 0x405d5a20, 0x392e: 0x405d5c20, 0x392f: 0x405d5e20, - 0x3930: 0x405d6020, 0x3931: 0x405d6220, 0x3932: 0x405d6420, 0x3933: 0x405d6620, - 0x3934: 0x405d6820, 0x3935: 0x405d6a20, 0x3936: 0x405d6c20, 0x3937: 0x405d6e20, - 0x3938: 0x405d7020, 0x3939: 0x405d7220, 0x393a: 0x405d7420, 0x393b: 0x405d7620, - 0x393c: 0x405d7820, 0x393d: 0x405d7a20, 0x393e: 0x405d7c20, 0x393f: 0x405d7e20, - // Block 0xe5, offset 0x3940 - 0x3940: 0x405d8020, 0x3941: 0x405d8220, 0x3942: 0x405d8420, 0x3943: 0x405d8620, - 0x3944: 0x405d8820, 0x3945: 0x405d8a20, 0x3946: 0x405d8c20, 0x3947: 0x405d8e20, - 0x3948: 0x405d9020, 0x3949: 0x405d9220, 0x394a: 0x405d9420, 0x394b: 0x405d9620, - 0x394c: 0x405d9820, 0x394d: 0x40025820, 0x394e: 0x40030020, 0x394f: 0x4002d820, - 0x3950: 0x005c3084, 0x3951: 0x005c5484, 0x3952: 0x005c8e84, 0x3953: 0xe00020fb, - 0x3954: 0xe00020fe, 0x3955: 0xe0002101, 0x3956: 0xe0002104, 0x3957: 0xe0002107, - 0x3958: 0xe000210a, 0x3959: 0xe000210d, 0x395a: 0xe0002110, 0x395b: 0xe0002113, - 0x395c: 0xe0002116, 0x395d: 0xe0002119, 0x395e: 0xe000211c, 0x395f: 0xe000211f, - 0x3960: 0xe00001cd, 0x3961: 0xe0000261, 0x3962: 0xe0000379, 0x3963: 0xe0000453, - 0x3964: 0xe0000528, 0x3965: 0xe00005f2, 0x3966: 0xe00006bd, 0x3967: 0xe0000765, - 0x3968: 0xe0000811, 0x3969: 0xe00008b6, 0x396a: 0x005c5c84, 0x396b: 0x005d2284, - // Block 0xe6, offset 0x3980 - 0x3980: 0x0033ec88, 0x3981: 0x4033ec20, 0x3982: 0x0033fa88, 0x3983: 0x4033fa20, - 0x3984: 0x00340488, 0x3985: 0x40340420, 0x3986: 0x00343488, 0x3987: 0x40343420, - 0x3988: 0x00344e88, 0x3989: 0x40344e20, 0x398a: 0x0035a288, 0x398b: 0x4035a220, - 0x398c: 0x0035f088, 0x398d: 0x4035f020, 0x398e: 0x00366e88, 0x398f: 0x40366e20, - 0x3990: 0x00367c88, 0x3991: 0x40367c20, 0x3992: 0x0036a688, 0x3993: 0x4036a620, - 0x3994: 0x0036c088, 0x3995: 0x4036c020, 0x3996: 0x0036c288, 0x3997: 0x4036c220, - 0x3998: 0x0036de88, 0x3999: 0x4036de20, 0x399a: 0x0036e888, 0x399b: 0x4036e820, - 0x399c: 0x0036f288, 0x399d: 0x4036f220, 0x399e: 0x00372488, 0x399f: 0x40372420, - 0x39a0: 0x00360a88, 0x39a1: 0x40360a20, 0x39a2: 0x00339e88, 0x39a3: 0x40339e20, - 0x39a4: 0x0034a288, 0x39a5: 0x4034a220, 0x39a6: 0x0034b888, 0x39a7: 0x4034b820, - 0x39a8: 0x0034ee8a, 0x39a9: 0x0034ee84, 0x39aa: 0x0034ee8a, 0x39ab: 0x0034ee84, - 0x39ac: 0x0034ee8a, 0x39ad: 0x0034ee84, 0x39ae: 0x0034ee84, 0x39af: 0xae608402, - 0x39b0: 0xa0000000, 0x39b1: 0xa0000000, 0x39b2: 0xa0000000, 0x39b3: 0x4004e020, - 0x39b4: 0x84e619e1, 0x39b5: 0x84e61a0a, 0x39b6: 0x84e61a1b, 0x39b7: 0x84e61ab9, - 0x39b8: 0x84e61b3a, 0x39b9: 0x84e61b3f, 0x39ba: 0x84e61b47, 0x39bb: 0x84e61af0, - 0x39bc: 0xae605f02, 0x39bd: 0xae605f02, 0x39be: 0x40054c20, 0x39bf: 0x40367220, - // Block 0xe7, offset 0x39c0 - 0x39c0: 0x00339488, 0x39c1: 0x40339420, 0x39c2: 0x00341288, 0x39c3: 0x40341220, - 0x39c4: 0x0033d288, 0x39c5: 0x4033d220, 0x39c6: 0x00364288, 0x39c7: 0x40364220, - 0x39c8: 0x00340e88, 0x39c9: 0x40340e20, 0x39ca: 0x00356088, 0x39cb: 0x40356020, - 0x39cc: 0x00355488, 0x39cd: 0x40355420, 0x39ce: 0x00360c88, 0x39cf: 0x40360c20, - 0x39d0: 0x00361688, 0x39d1: 0x40361620, 0x39d2: 0x00362088, 0x39d3: 0x40362020, - 0x39d4: 0x0035de88, 0x39d5: 0x4035de20, 0x39d6: 0x00366488, 0x39d7: 0x40366420, - 0x39df: 0x84e61b67, - 0x39e0: 0x405d9a20, 0x39e1: 0x405d9c20, 0x39e2: 0x405d9e20, 0x39e3: 0x405da020, - 0x39e4: 0x405da220, 0x39e5: 0x405da420, 0x39e6: 0x405da620, 0x39e7: 0x405da820, - 0x39e8: 0x405daa20, 0x39e9: 0x405dac20, 0x39ea: 0x405dae20, 0x39eb: 0x405db020, - 0x39ec: 0x405db220, 0x39ed: 0x405db420, 0x39ee: 0x405db620, 0x39ef: 0x405db820, - 0x39f0: 0x405dba20, 0x39f1: 0x405dbc20, 0x39f2: 0x405dbe20, 0x39f3: 0x405dc020, - 0x39f4: 0x405dc220, 0x39f5: 0x405dc420, 0x39f6: 0x405dc620, 0x39f7: 0x405dc820, - 0x39f8: 0x405dca20, 0x39f9: 0x405dcc20, 0x39fa: 0x405dce20, 0x39fb: 0x405dd020, - 0x39fc: 0x405dd220, 0x39fd: 0x405dd420, 0x39fe: 0x405dd620, 0x39ff: 0x405dd820, - // Block 0xe8, offset 0x3a00 - 0x3a00: 0x405dda20, 0x3a01: 0x405ddc20, 0x3a02: 0x405dde20, 0x3a03: 0x405de020, - 0x3a04: 0x405de220, 0x3a05: 0x405de420, 0x3a06: 0x405de620, 0x3a07: 0x405de820, - 0x3a08: 0x405dea20, 0x3a09: 0x405dec20, 0x3a0a: 0x405dee20, 0x3a0b: 0x405df020, - 0x3a0c: 0x405df220, 0x3a0d: 0x405df420, 0x3a0e: 0x405df620, 0x3a0f: 0x405df820, - 0x3a10: 0x405dfa20, 0x3a11: 0x405dfc20, 0x3a12: 0x405dfe20, 0x3a13: 0x405e0020, - 0x3a14: 0x405e0220, 0x3a15: 0x405e0420, 0x3a16: 0x405e0620, 0x3a17: 0x405e0820, - 0x3a18: 0x405e0a20, 0x3a19: 0x405e0c20, 0x3a1a: 0x405e0e20, 0x3a1b: 0x405e1020, - 0x3a1c: 0x405e1220, 0x3a1d: 0x405e1420, 0x3a1e: 0x405e1620, 0x3a1f: 0x405e1820, - 0x3a20: 0x405e1a20, 0x3a21: 0x405e1c20, 0x3a22: 0x405e1e20, 0x3a23: 0x405e2020, - 0x3a24: 0x405e2220, 0x3a25: 0x405e2420, 0x3a26: 0x405e2620, 0x3a27: 0x405e2820, - 0x3a28: 0x405e2a20, 0x3a29: 0x405e2c20, 0x3a2a: 0x405e2e20, 0x3a2b: 0x405e3020, - 0x3a2c: 0x405e3220, 0x3a2d: 0x405e3420, 0x3a2e: 0x405e3620, 0x3a2f: 0x405e3820, - 0x3a30: 0xae60ef02, 0x3a31: 0xae60f002, 0x3a32: 0x40038220, 0x3a33: 0x40030220, - 0x3a34: 0x4002b820, 0x3a35: 0x40025a20, 0x3a36: 0x40026a20, 0x3a37: 0x4002da20, - // Block 0xe9, offset 0x3a40 - 0x3a40: 0x4006ba20, 0x3a41: 0x4006bc20, 0x3a42: 0x4006be20, 0x3a43: 0x4006c020, - 0x3a44: 0x4006c220, 0x3a45: 0x4006c420, 0x3a46: 0x4006c620, 0x3a47: 0x4006c820, - 0x3a48: 0x4006ca20, 0x3a49: 0x4006cc20, 0x3a4a: 0x4006ce20, 0x3a4b: 0x4006d020, - 0x3a4c: 0x4006d220, 0x3a4d: 0x4006d420, 0x3a4e: 0x4006d620, 0x3a4f: 0x4006d820, - 0x3a50: 0x4006da20, 0x3a51: 0x4006dc20, 0x3a52: 0x4006de20, 0x3a53: 0x4006e020, - 0x3a54: 0x4006e220, 0x3a55: 0x4006e420, 0x3a56: 0x4006e620, 0x3a57: 0x4006e820, - 0x3a58: 0x4006ea20, 0x3a59: 0x4006ec20, 0x3a5a: 0x4006ee20, 0x3a5b: 0x4006f020, - 0x3a5c: 0x4006f220, 0x3a5d: 0x4006f420, 0x3a5e: 0x4006f620, 0x3a5f: 0x4006f820, - 0x3a60: 0x4006fa20, 0x3a61: 0x4006fc20, 0x3a62: 0x0031e488, 0x3a63: 0x4031e420, - 0x3a64: 0x0031f888, 0x3a65: 0x4031f820, 0x3a66: 0x002d8c88, 0x3a67: 0x402d8c20, - 0x3a68: 0xe0000fd5, 0x3a69: 0xe0000fd2, 0x3a6a: 0x0031ae88, 0x3a6b: 0x4031ae20, - 0x3a6c: 0x0031b088, 0x3a6d: 0x4031b020, 0x3a6e: 0x0031b288, 0x3a6f: 0x4031b220, - 0x3a70: 0x402d1020, 0x3a71: 0x402fee20, 0x3a72: 0xe00009cf, 0x3a73: 0xe00009cc, - 0x3a74: 0xe00009ff, 0x3a75: 0xe00009fc, 0x3a76: 0xe0000a05, 0x3a77: 0xe0000a02, - 0x3a78: 0xe0000a0e, 0x3a79: 0xe0000a0b, 0x3a7a: 0xe0000a15, 0x3a7b: 0xe0000a11, - 0x3a7c: 0xe0000a1c, 0x3a7d: 0xe0000a19, 0x3a7e: 0x002c6088, 0x3a7f: 0x402c6020, - // Block 0xea, offset 0x3a80 - 0x3a80: 0x002e1488, 0x3a81: 0x402e1420, 0x3a82: 0x002e1688, 0x3a83: 0x402e1620, - 0x3a84: 0x002e1888, 0x3a85: 0x402e1820, 0x3a86: 0x002e3288, 0x3a87: 0x402e3220, - 0x3a88: 0x002e3688, 0x3a89: 0x402e3620, 0x3a8a: 0x002f1888, 0x3a8b: 0x402f1820, - 0x3a8c: 0x002f0888, 0x3a8d: 0x402f0820, 0x3a8e: 0xe0000ea1, 0x3a8f: 0xe0000e9e, - 0x3a90: 0x002f3888, 0x3a91: 0x402f3820, 0x3a92: 0x002f4688, 0x3a93: 0x402f4620, - 0x3a94: 0x002f4888, 0x3a95: 0x402f4820, 0x3a96: 0x002f5e88, 0x3a97: 0x402f5e20, - 0x3a98: 0x002f6088, 0x3a99: 0x402f6020, 0x3a9a: 0x002f8a88, 0x3a9b: 0x402f8a20, - 0x3a9c: 0x002fe488, 0x3a9d: 0x402fe420, 0x3a9e: 0x0030c888, 0x3a9f: 0x4030c820, - 0x3aa0: 0xe00010c6, 0x3aa1: 0xe00010c3, 0x3aa2: 0x00316288, 0x3aa3: 0x40316220, - 0x3aa4: 0x00319088, 0x3aa5: 0x40319020, 0x3aa6: 0x00319288, 0x3aa7: 0x40319220, - 0x3aa8: 0x00319c88, 0x3aa9: 0x40319c20, 0x3aaa: 0x00319e88, 0x3aab: 0x40319e20, - 0x3aac: 0x0031a088, 0x3aad: 0x4031a020, 0x3aae: 0x0031a288, 0x3aaf: 0x4031a220, - 0x3ab0: 0x0031a294, 0x3ab1: 0x402c9420, 0x3ab2: 0x402e6620, 0x3ab3: 0x402e9c20, - 0x3ab4: 0x402ed820, 0x3ab5: 0x402fe020, 0x3ab6: 0x402fe220, 0x3ab7: 0x40306220, - 0x3ab8: 0x4031a420, 0x3ab9: 0xe0000abc, 0x3aba: 0xe0000ab9, 0x3abb: 0xe0000b92, - 0x3abc: 0xe0000b8f, 0x3abd: 0xe0000bdc, 0x3abe: 0x002d5688, 0x3abf: 0x402d5620, - // Block 0xeb, offset 0x3ac0 - 0x3ac0: 0x002e7088, 0x3ac1: 0x402e7020, 0x3ac2: 0xe0000f08, 0x3ac3: 0xe0000f05, - 0x3ac4: 0xe0000f6d, 0x3ac5: 0xe0000f6a, 0x3ac6: 0xe0000fb7, 0x3ac7: 0xe0000fb4, - 0x3ac8: 0x4006fe20, 0x3ac9: 0x40070020, 0x3aca: 0x40070220, 0x3acb: 0x0031e688, - 0x3acc: 0x4031e620, 0x3acd: 0x00308888, 0x3ace: 0x402e5c20, - 0x3ad0: 0x002ec488, 0x3ad1: 0x402ec420, 0x3ad2: 0x002c4c88, 0x3ad3: 0x402c4c20, - 0x3ae0: 0xe0000bd6, 0x3ae1: 0xe0000bd3, 0x3ae2: 0xe0000ca5, 0x3ae3: 0xe0000ca2, - 0x3ae4: 0xe0000d75, 0x3ae5: 0xe0000d72, 0x3ae6: 0xe0000ee2, 0x3ae7: 0xe0000edf, - 0x3ae8: 0xe0000f4d, 0x3ae9: 0xe0000f4a, 0x3aea: 0x002d8088, - // Block 0xec, offset 0x3b00 - 0x3b38: 0xf0001414, 0x3b39: 0xe0000e97, 0x3b3a: 0x4030a820, 0x3b3b: 0x402d2020, - 0x3b3c: 0x402f4a20, 0x3b3d: 0x402e9820, 0x3b3e: 0x402db220, 0x3b3f: 0x402e9a20, - // Block 0xed, offset 0x3b40 - 0x3b40: 0x4045aa20, 0x3b41: 0x4045ac20, 0x3b42: 0x4045ae20, 0x3b43: 0x4045b020, - 0x3b44: 0x4045b220, 0x3b45: 0x4045b420, 0x3b46: 0x820922db, 0x3b47: 0x4045b820, - 0x3b48: 0x4045ba20, 0x3b49: 0x4045bc20, 0x3b4a: 0x4045be20, 0x3b4b: 0xa000f302, - 0x3b4c: 0x4045c020, 0x3b4d: 0x4045c220, 0x3b4e: 0x4045c420, 0x3b4f: 0x4045c620, - 0x3b50: 0x4045c820, 0x3b51: 0x4045ca20, 0x3b52: 0x4045cc20, 0x3b53: 0x4045ce20, - 0x3b54: 0x4045d020, 0x3b55: 0x4045d220, 0x3b56: 0x4045d420, 0x3b57: 0x4045d620, - 0x3b58: 0x4045d820, 0x3b59: 0x4045da20, 0x3b5a: 0x4045dc20, 0x3b5b: 0x4045de20, - 0x3b5c: 0x4045e020, 0x3b5d: 0x4045e220, 0x3b5e: 0x4045e420, 0x3b5f: 0x4045e620, - 0x3b60: 0x4045e820, 0x3b61: 0x4045ea20, 0x3b62: 0x4045ec20, 0x3b63: 0x4045ee20, - 0x3b64: 0x4045f020, 0x3b65: 0x4045f220, 0x3b66: 0x4045f420, 0x3b67: 0x4045f620, - 0x3b68: 0x40075020, 0x3b69: 0x40075220, 0x3b6a: 0x40075420, 0x3b6b: 0x40075620, - 0x3b70: 0x40284820, 0x3b71: 0x40284a20, 0x3b72: 0x40284c20, 0x3b73: 0x40284e20, - 0x3b74: 0x40285020, 0x3b75: 0x40285220, 0x3b76: 0x40075820, 0x3b77: 0x40075a20, - 0x3b78: 0x4027f020, 0x3b79: 0x40075c20, - // Block 0xee, offset 0x3b80 - 0x3b80: 0x404baa20, 0x3b81: 0x404bac20, 0x3b82: 0x404bae20, 0x3b83: 0x404bb020, - 0x3b84: 0x404bb220, 0x3b85: 0x404bb420, 0x3b86: 0x404bb620, 0x3b87: 0x404bb820, - 0x3b88: 0x404bc220, 0x3b89: 0x404bc420, 0x3b8a: 0x404bc620, 0x3b8b: 0x404bc820, - 0x3b8c: 0x404bca20, 0x3b8d: 0x404bcc20, 0x3b8e: 0x404bce20, 0x3b8f: 0x404bd020, - 0x3b90: 0x404bd220, 0x3b91: 0x404bd420, 0x3b92: 0x404bd620, 0x3b93: 0x404bd820, - 0x3b94: 0x404bdc20, 0x3b95: 0x404bde20, 0x3b96: 0x404be020, 0x3b97: 0x404be220, - 0x3b98: 0x404be820, 0x3b99: 0x404bee20, 0x3b9a: 0x404bf020, 0x3b9b: 0x404bf420, - 0x3b9c: 0x404bf620, 0x3b9d: 0x404bfc20, 0x3b9e: 0x404c0620, 0x3b9f: 0x404c0820, - 0x3ba0: 0x404c0a20, 0x3ba1: 0x404c0c20, 0x3ba2: 0x404bfe20, 0x3ba3: 0x404c0020, - 0x3ba4: 0x404c0220, 0x3ba5: 0x404c0420, 0x3ba6: 0x404c0e20, 0x3ba7: 0x404bda20, - 0x3ba8: 0x404be420, 0x3ba9: 0x404bba20, 0x3baa: 0x404bbc20, 0x3bab: 0x404bbe20, - 0x3bac: 0x404bc020, 0x3bad: 0x404be620, 0x3bae: 0x404bf220, 0x3baf: 0x404bf820, - 0x3bb0: 0x404bfa20, 0x3bb1: 0x404bea20, 0x3bb2: 0x404bec20, 0x3bb3: 0x404c1020, - 0x3bb4: 0x4005e820, 0x3bb5: 0x4005ea20, 0x3bb6: 0x40031820, 0x3bb7: 0x40031a20, - // Block 0xef, offset 0x3bc0 - 0x3bc0: 0xa000f302, 0x3bc1: 0xa000f402, 0x3bc2: 0x4045f820, 0x3bc3: 0x4045fa20, - 0x3bc4: 0x4045fc20, 0x3bc5: 0x4045fe20, 0x3bc6: 0x40460020, 0x3bc7: 0x40460220, - 0x3bc8: 0x40460420, 0x3bc9: 0x40460620, 0x3bca: 0x40460820, 0x3bcb: 0x40460a20, - 0x3bcc: 0x40460c20, 0x3bcd: 0x40460e20, 0x3bce: 0x40461020, 0x3bcf: 0x40461220, - 0x3bd0: 0x40461420, 0x3bd1: 0x40461620, 0x3bd2: 0x40461820, 0x3bd3: 0x40461a20, - 0x3bd4: 0x40461c20, 0x3bd5: 0x40461e20, 0x3bd6: 0x40462020, 0x3bd7: 0x40462220, - 0x3bd8: 0x40462420, 0x3bd9: 0x40462620, 0x3bda: 0x40462820, 0x3bdb: 0x40462a20, - 0x3bdc: 0x40462c20, 0x3bdd: 0x40462e20, 0x3bde: 0x40463020, 0x3bdf: 0x40463220, - 0x3be0: 0x40463420, 0x3be1: 0x40463620, 0x3be2: 0x40463820, 0x3be3: 0x40463a20, - 0x3be4: 0x40463c20, 0x3be5: 0x40463e20, 0x3be6: 0x40464020, 0x3be7: 0x40464220, - 0x3be8: 0x40464420, 0x3be9: 0x40464620, 0x3bea: 0x40464820, 0x3beb: 0x40464a20, - 0x3bec: 0x40464c20, 0x3bed: 0x40464e20, 0x3bee: 0x40465020, 0x3bef: 0x40465220, - 0x3bf0: 0x40465420, 0x3bf1: 0x40465620, 0x3bf2: 0x40465820, 0x3bf3: 0x40465a20, - 0x3bf4: 0x40465c20, 0x3bf5: 0x40465e20, 0x3bf6: 0x40466020, 0x3bf7: 0x40466220, - 0x3bf8: 0x40466420, 0x3bf9: 0x40466620, 0x3bfa: 0x40466820, 0x3bfb: 0x40466a20, - 0x3bfc: 0x40466c20, 0x3bfd: 0x40466e20, 0x3bfe: 0x40467020, 0x3bff: 0x40467220, - // Block 0xf0, offset 0x3c00 - 0x3c00: 0x40467420, 0x3c01: 0x40467620, 0x3c02: 0x40467820, 0x3c03: 0x40467a20, - 0x3c04: 0x8209233e, - 0x3c0e: 0x40031020, 0x3c0f: 0x40031220, - 0x3c10: 0xe000018b, 0x3c11: 0xe000021c, 0x3c12: 0xe0000337, 0x3c13: 0xe0000411, - 0x3c14: 0xe00004e6, 0x3c15: 0xe00005b0, 0x3c16: 0xe000067b, 0x3c17: 0xe0000723, - 0x3c18: 0xe00007cf, 0x3c19: 0xe0000874, - 0x3c20: 0xae600000, 0x3c21: 0xae600000, 0x3c22: 0xae600000, 0x3c23: 0xae600000, - 0x3c24: 0xae600000, 0x3c25: 0xae600000, 0x3c26: 0xae600000, 0x3c27: 0xae600000, - 0x3c28: 0xae600000, 0x3c29: 0xae600000, 0x3c2a: 0xae600000, 0x3c2b: 0xae600000, - 0x3c2c: 0xae600000, 0x3c2d: 0xae600000, 0x3c2e: 0xae600000, 0x3c2f: 0xae600000, - 0x3c30: 0xae600000, 0x3c31: 0xae600000, 0x3c32: 0x40404620, 0x3c33: 0x00404684, - 0x3c34: 0x00404684, 0x3c35: 0x00404684, 0x3c36: 0x00404684, 0x3c37: 0x00404684, - 0x3c38: 0x40056e20, 0x3c39: 0x40057020, 0x3c3a: 0x40057220, 0x3c3b: 0x40404820, - // Block 0xf1, offset 0x3c40 - 0x3c40: 0xe00001a9, 0x3c41: 0xe000023d, 0x3c42: 0xe0000355, 0x3c43: 0xe000042f, - 0x3c44: 0xe0000504, 0x3c45: 0xe00005ce, 0x3c46: 0xe0000699, 0x3c47: 0xe0000741, - 0x3c48: 0xe00007ed, 0x3c49: 0xe0000892, 0x3c4a: 0x404dd220, 0x3c4b: 0x404dd420, - 0x3c4c: 0x404dd620, 0x3c4d: 0x404dd820, 0x3c4e: 0x404dda20, 0x3c4f: 0x404ddc20, - 0x3c50: 0x404dde20, 0x3c51: 0x404de020, 0x3c52: 0x404de220, 0x3c53: 0x404de420, - 0x3c54: 0x404de620, 0x3c55: 0x404de820, 0x3c56: 0x404dea20, 0x3c57: 0x404dec20, - 0x3c58: 0x404dee20, 0x3c59: 0x404df020, 0x3c5a: 0x404df220, 0x3c5b: 0x404df420, - 0x3c5c: 0x404df620, 0x3c5d: 0x404df820, 0x3c5e: 0x404dfa20, 0x3c5f: 0x404dfc20, - 0x3c60: 0x404dfe20, 0x3c61: 0x404e0020, 0x3c62: 0x404e0220, 0x3c63: 0x404e0420, - 0x3c64: 0x404e0620, 0x3c65: 0x404e0820, 0x3c66: 0x404e0a20, 0x3c67: 0x404e0c20, - 0x3c68: 0x404e0e20, 0x3c69: 0x404e1020, 0x3c6a: 0x404e1220, 0x3c6b: 0xadc10f02, - 0x3c6c: 0xadc11002, 0x3c6d: 0xadc11102, 0x3c6e: 0x4005f420, 0x3c6f: 0x40032020, - 0x3c70: 0x404d8a20, 0x3c71: 0x404d8c20, 0x3c72: 0x404d8e20, 0x3c73: 0x404d9020, - 0x3c74: 0x404d9220, 0x3c75: 0x404d9420, 0x3c76: 0x404d9620, 0x3c77: 0x404d9820, - 0x3c78: 0x404d9a20, 0x3c79: 0x404d9c20, 0x3c7a: 0x404d9e20, 0x3c7b: 0x404da020, - 0x3c7c: 0x404da220, 0x3c7d: 0x404da420, 0x3c7e: 0x404da620, 0x3c7f: 0x404da820, - // Block 0xf2, offset 0x3c80 - 0x3c80: 0x404daa20, 0x3c81: 0x404dac20, 0x3c82: 0x404dae20, 0x3c83: 0x404db020, - 0x3c84: 0x404db220, 0x3c85: 0x404db420, 0x3c86: 0x404db620, 0x3c87: 0x404db820, - 0x3c88: 0x404dba20, 0x3c89: 0x404dbc20, 0x3c8a: 0x404dbe20, 0x3c8b: 0x404dc020, - 0x3c8c: 0x404dc220, 0x3c8d: 0x404dc420, 0x3c8e: 0x404dc620, 0x3c8f: 0x404dc820, - 0x3c90: 0x404dca20, 0x3c91: 0x404dcc20, 0x3c92: 0x404dce20, 0x3c93: 0x820926e8, - 0x3c9f: 0x40038420, - 0x3ca0: 0x40636a20, 0x3ca1: 0x40636c20, 0x3ca2: 0x40636e20, 0x3ca3: 0x40637020, - 0x3ca4: 0x40637220, 0x3ca5: 0x40637420, 0x3ca6: 0x40637620, 0x3ca7: 0x40637820, - 0x3ca8: 0x40637a20, 0x3ca9: 0x40637c20, 0x3caa: 0x40637e20, 0x3cab: 0x40638020, - 0x3cac: 0x40638220, 0x3cad: 0x40638420, 0x3cae: 0x40638620, 0x3caf: 0x40638820, - 0x3cb0: 0x40638a20, 0x3cb1: 0x40638c20, 0x3cb2: 0x40638e20, 0x3cb3: 0x40639020, - 0x3cb4: 0x40639220, 0x3cb5: 0x40639420, 0x3cb6: 0x40639620, 0x3cb7: 0x40639820, - 0x3cb8: 0x40639a20, 0x3cb9: 0x40639c20, 0x3cba: 0x40639e20, 0x3cbb: 0x4063a020, - 0x3cbc: 0x4063a220, - // Block 0xf3, offset 0x3cc0 - 0x3cc0: 0xa000f202, 0x3cc1: 0xa000f302, 0x3cc2: 0xa000f802, 0x3cc3: 0xa000f402, - 0x3cc4: 0x4052b220, 0x3cc5: 0x4052b420, 0x3cc6: 0x4052b620, 0x3cc7: 0x4052b820, - 0x3cc8: 0x4052ba20, 0x3cc9: 0x4052bc20, 0x3cca: 0x4052be20, 0x3ccb: 0x4052c020, - 0x3ccc: 0x4052c220, 0x3ccd: 0x4052c420, 0x3cce: 0x4052c620, 0x3ccf: 0x4052c820, - 0x3cd0: 0x4052ca20, 0x3cd1: 0x4052cc20, 0x3cd2: 0x4052ce20, 0x3cd3: 0x4052d020, - 0x3cd4: 0x4052d220, 0x3cd5: 0x4052d420, 0x3cd6: 0x4052d620, 0x3cd7: 0x4052d820, - 0x3cd8: 0x4052da20, 0x3cd9: 0x4052dc20, 0x3cda: 0x4052de20, 0x3cdb: 0x4052e020, - 0x3cdc: 0x4052e220, 0x3cdd: 0x4052e420, 0x3cde: 0x4052e620, 0x3cdf: 0x4052e820, - 0x3ce0: 0x4052ea20, 0x3ce1: 0x4052ec20, 0x3ce2: 0x4052ee20, 0x3ce3: 0x4052f020, - 0x3ce4: 0x4052f220, 0x3ce5: 0x4052f420, 0x3ce6: 0x4052f620, 0x3ce7: 0x4052f820, - 0x3ce8: 0x4052fa20, 0x3ce9: 0x4052fc20, 0x3cea: 0x4052fe20, 0x3ceb: 0x40530220, - 0x3cec: 0x00530284, 0x3ced: 0x40530620, 0x3cee: 0x40530820, 0x3cef: 0x40530a20, - 0x3cf0: 0x40530c20, 0x3cf1: 0x40530e20, 0x3cf2: 0x40531020, 0x3cf3: 0xa070f102, - 0x3cf4: 0x40531220, 0x3cf5: 0x40532420, 0x3cf6: 0x40531620, 0x3cf7: 0x40531820, - 0x3cf8: 0x40531a20, 0x3cf9: 0x40531c20, 0x3cfa: 0x40532020, 0x3cfb: 0x40532220, - 0x3cfc: 0x40531420, 0x3cfd: 0x40531e20, 0x3cfe: 0x40530020, 0x3cff: 0x40530420, - // Block 0xf4, offset 0x3d00 - 0x3d00: 0x82092993, 0x3d01: 0x40036e20, 0x3d02: 0x40037020, 0x3d03: 0x40037220, - 0x3d04: 0x40037420, 0x3d05: 0x40037620, 0x3d06: 0x40037820, 0x3d07: 0x4002b020, - 0x3d08: 0x40033620, 0x3d09: 0x40033820, 0x3d0a: 0x40037a20, 0x3d0b: 0x40037c20, - 0x3d0c: 0x40037e20, 0x3d0d: 0x40038020, 0x3d0f: 0x4027c020, - 0x3d10: 0xe00001c1, 0x3d11: 0xe0000255, 0x3d12: 0xe000036d, 0x3d13: 0xe0000447, - 0x3d14: 0xe000051c, 0x3d15: 0xe00005e6, 0x3d16: 0xe00006b1, 0x3d17: 0xe0000759, - 0x3d18: 0xe0000805, 0x3d19: 0xe00008aa, - 0x3d1e: 0x4005f620, 0x3d1f: 0x4005f820, - // Block 0xf5, offset 0x3d40 - 0x3d40: 0x40519c20, 0x3d41: 0x40519e20, 0x3d42: 0x4051a020, 0x3d43: 0x4051a220, - 0x3d44: 0x4051a420, 0x3d45: 0x4051a620, 0x3d46: 0x4051a820, 0x3d47: 0x4051aa20, - 0x3d48: 0x4051ac20, 0x3d49: 0x4051ae20, 0x3d4a: 0x4051b020, 0x3d4b: 0x4051b220, - 0x3d4c: 0x4051b420, 0x3d4d: 0x4051b620, 0x3d4e: 0x4051b820, 0x3d4f: 0x4051ba20, - 0x3d50: 0x4051bc20, 0x3d51: 0x4051be20, 0x3d52: 0x4051c020, 0x3d53: 0x4051c220, - 0x3d54: 0x4051c420, 0x3d55: 0x4051c620, 0x3d56: 0x4051c820, 0x3d57: 0x4051ca20, - 0x3d58: 0x4051cc20, 0x3d59: 0x4051ce20, 0x3d5a: 0x4051d020, 0x3d5b: 0x4051d220, - 0x3d5c: 0x4051d420, 0x3d5d: 0x4051d620, 0x3d5e: 0x4051d820, 0x3d5f: 0x4051da20, - 0x3d60: 0x4051dc20, 0x3d61: 0x4051de20, 0x3d62: 0x4051e020, 0x3d63: 0x4051e220, - 0x3d64: 0x4051e420, 0x3d65: 0x4051e620, 0x3d66: 0x4051e820, 0x3d67: 0x4051ea20, - 0x3d68: 0x4051ec20, 0x3d69: 0x4051f620, 0x3d6a: 0x4051f820, 0x3d6b: 0x4051fa20, - 0x3d6c: 0x4051fc20, 0x3d6d: 0x4051fe20, 0x3d6e: 0x40520020, 0x3d6f: 0x40520220, - 0x3d70: 0x40520420, 0x3d71: 0x40520620, 0x3d72: 0x40520820, 0x3d73: 0x4051ee20, - 0x3d74: 0x4051f020, 0x3d75: 0x4051f220, 0x3d76: 0x4051f420, - // Block 0xf6, offset 0x3d80 - 0x3d80: 0x40520a20, 0x3d81: 0x40520c20, 0x3d82: 0x40520e20, 0x3d83: 0x40521020, - 0x3d84: 0x40521220, 0x3d85: 0x40521420, 0x3d86: 0x40521620, 0x3d87: 0x40521820, - 0x3d88: 0x40521a20, 0x3d89: 0x40521c20, 0x3d8a: 0x40521e20, 0x3d8b: 0x40522020, - 0x3d8c: 0x40522220, 0x3d8d: 0x40522420, - 0x3d90: 0xe00001bb, 0x3d91: 0xe000024f, 0x3d92: 0xe0000367, 0x3d93: 0xe0000441, - 0x3d94: 0xe0000516, 0x3d95: 0xe00005e0, 0x3d96: 0xe00006ab, 0x3d97: 0xe0000753, - 0x3d98: 0xe00007ff, 0x3d99: 0xe00008a4, - 0x3d9c: 0x4005fa20, 0x3d9d: 0x40033a20, 0x3d9e: 0x40033c20, 0x3d9f: 0x40033e20, - 0x3da0: 0x404e2020, 0x3da1: 0x404e2c20, 0x3da2: 0x404e3020, 0x3da3: 0x404e3420, - 0x3da4: 0x404e3e20, 0x3da5: 0x404e4620, 0x3da6: 0x404e4c20, 0x3da7: 0x404e5020, - 0x3da8: 0x404e5420, 0x3da9: 0x404e5820, 0x3daa: 0x404e6820, 0x3dab: 0x404e6e20, - 0x3dac: 0x404ea820, 0x3dad: 0x404eae20, 0x3dae: 0x404eb220, 0x3daf: 0x404e7a20, - 0x3db0: 0x4027c220, 0x3db1: 0x404eb420, 0x3db2: 0x404e3820, 0x3db3: 0x404e8e20, - 0x3db4: 0x404f3a20, 0x3db5: 0x404f3c20, 0x3db6: 0x404f3e20, 0x3db7: 0x4007ac20, - 0x3db8: 0x4007ae20, 0x3db9: 0x4007b020, 0x3dba: 0x404e9020, 0x3dbb: 0x404f3820, - // Block 0xf7, offset 0x3dc0 - 0x3dc0: 0x4049f020, 0x3dc1: 0x4049f220, 0x3dc2: 0x4049f420, 0x3dc3: 0x4049f620, - 0x3dc4: 0x4049f820, 0x3dc5: 0x4049fa20, 0x3dc6: 0x4049fc20, 0x3dc7: 0x4049fe20, - 0x3dc8: 0x404a0020, 0x3dc9: 0x404a0220, 0x3dca: 0x404a0420, 0x3dcb: 0x404a0620, - 0x3dcc: 0x404a0820, 0x3dcd: 0x404a0a20, 0x3dce: 0x404a0c20, 0x3dcf: 0x404a0e20, - 0x3dd0: 0x404a1020, 0x3dd1: 0x404a1220, 0x3dd2: 0x404a1420, 0x3dd3: 0x404a1620, - 0x3dd4: 0x404a1820, 0x3dd5: 0x404a1a20, 0x3dd6: 0x404a1c20, 0x3dd7: 0x404a1e20, - 0x3dd8: 0x404a2020, 0x3dd9: 0x404a2220, 0x3dda: 0x404a2420, 0x3ddb: 0x404a2620, - 0x3ddc: 0x404a2820, 0x3ddd: 0x404a2a20, 0x3dde: 0x404a2c20, 0x3ddf: 0x404a2e20, - 0x3de0: 0x404a3020, 0x3de1: 0x404a3220, 0x3de2: 0x404a3420, 0x3de3: 0x404a3620, - 0x3de4: 0x404a3820, 0x3de5: 0x404a3a20, 0x3de6: 0x404a3c20, 0x3de7: 0x404a3e20, - 0x3de8: 0x404a4020, 0x3de9: 0x404a4220, 0x3dea: 0x404a4420, 0x3deb: 0x404a4620, - 0x3dec: 0x404a4820, 0x3ded: 0x404a4a20, 0x3dee: 0x404a4c20, 0x3def: 0x404a4e20, - 0x3df0: 0x82e62528, 0x3df1: 0x404a5220, 0x3df2: 0x82e6252a, 0x3df3: 0x82e6252b, - 0x3df4: 0x82dc252c, 0x3df5: 0xc20e0671, 0x3df6: 0xc23f0671, 0x3df7: 0x82e6252f, - 0x3df8: 0x82e62530, 0x3df9: 0xc2700671, 0x3dfa: 0x404a6420, 0x3dfb: 0xc2a10671, - 0x3dfc: 0xc2d20671, 0x3dfd: 0x404a6a20, 0x3dfe: 0x82e62536, 0x3dff: 0xae610c02, - // Block 0xf8, offset 0x3e00 - 0x3e00: 0x404a6e20, 0x3e01: 0xae610d02, 0x3e02: 0x404a7020, - 0x3e1b: 0x404a7220, - 0x3e1c: 0x404a7420, 0x3e1d: 0x4027c420, 0x3e1e: 0x40057e20, 0x3e1f: 0x40058020, - 0x3e20: 0x40456420, 0x3e21: 0x40456620, 0x3e22: 0x40456820, 0x3e23: 0x40456a20, - 0x3e24: 0x40456c20, 0x3e25: 0x40456e20, 0x3e26: 0x40457020, 0x3e27: 0x40457220, - 0x3e28: 0x40457420, 0x3e29: 0x40457620, 0x3e2a: 0x40457820, 0x3e2b: 0x40458a20, - 0x3e2c: 0x40458c20, 0x3e2d: 0x40458e20, 0x3e2e: 0x40459020, 0x3e2f: 0x40459220, - 0x3e30: 0x40034020, 0x3e31: 0x4002dc20, 0x3e32: 0x40452c20, 0x3e33: 0x4027c620, - 0x3e34: 0x4027c820, 0x3e35: 0x40459420, 0x3e36: 0x820922d4, - // Block 0xf9, offset 0x3e40 - 0x3e41: 0x403cae20, 0x3e42: 0x403cb020, 0x3e43: 0x403cb220, - 0x3e44: 0x403cb420, 0x3e45: 0x403cb620, 0x3e46: 0x403cb820, - 0x3e49: 0x403e3c20, 0x3e4a: 0x403e3e20, 0x3e4b: 0x403e4020, - 0x3e4c: 0x403e4220, 0x3e4d: 0x403e4420, 0x3e4e: 0x403e4620, - 0x3e51: 0x403dfe20, 0x3e52: 0x403e0020, 0x3e53: 0x403e0220, - 0x3e54: 0x403e0420, 0x3e55: 0x403e0620, 0x3e56: 0x403e0820, - 0x3e60: 0x403ec220, 0x3e61: 0x403ec420, 0x3e62: 0x403ec620, 0x3e63: 0x403ec820, - 0x3e64: 0x403eca20, 0x3e65: 0x403ecc20, 0x3e66: 0x403ece20, - 0x3e68: 0x403ef220, 0x3e69: 0x403ef420, 0x3e6a: 0x403ef620, 0x3e6b: 0x403ef820, - 0x3e6c: 0x403efa20, 0x3e6d: 0x403efc20, 0x3e6e: 0x403efe20, - // Block 0xfa, offset 0x3e80 - 0x3e80: 0x40452e20, 0x3e81: 0x40453020, 0x3e82: 0x40453220, 0x3e83: 0x40453420, - 0x3e84: 0x40453620, 0x3e85: 0x40453820, 0x3e86: 0x40453a20, 0x3e87: 0x40453c20, - 0x3e88: 0x40453e20, 0x3e89: 0x40454020, 0x3e8a: 0x40454220, 0x3e8b: 0x40454420, - 0x3e8c: 0x40454620, 0x3e8d: 0x40454820, 0x3e8e: 0x40454a20, 0x3e8f: 0x40454c20, - 0x3e90: 0x40454e20, 0x3e91: 0x40455020, 0x3e92: 0x40455220, 0x3e93: 0x40455420, - 0x3e94: 0x40455620, 0x3e95: 0x40455820, 0x3e96: 0x40455a20, 0x3e97: 0x40455c20, - 0x3e98: 0x40455e20, 0x3e99: 0x40456020, 0x3e9a: 0x40456220, 0x3e9b: 0x40459620, - 0x3e9c: 0x40459820, 0x3e9d: 0x40459a20, 0x3e9e: 0x40459c20, 0x3e9f: 0x40459e20, - 0x3ea0: 0x4045a020, 0x3ea1: 0x4045a220, 0x3ea2: 0x4045a420, 0x3ea3: 0x40457a20, - 0x3ea4: 0x40457c20, 0x3ea5: 0x40457e20, 0x3ea6: 0x40458020, 0x3ea7: 0x40458220, - 0x3ea8: 0x40458420, 0x3ea9: 0x40458620, 0x3eaa: 0x40458820, 0x3eab: 0x40034220, - 0x3eac: 0xa000fa02, 0x3ead: 0x820922d3, - 0x3eb0: 0xe0000188, 0x3eb1: 0xe0000219, 0x3eb2: 0xe0000334, 0x3eb3: 0xe000040e, - 0x3eb4: 0xe00004e3, 0x3eb5: 0xe00005ad, 0x3eb6: 0xe0000678, 0x3eb7: 0xe0000720, - 0x3eb8: 0xe00007cc, 0x3eb9: 0xe0000871, - // Block 0xfb, offset 0x3ec0 - 0x3ef0: 0x40643620, 0x3ef1: 0x40643820, 0x3ef2: 0x40643a20, 0x3ef3: 0x40643c20, - 0x3ef4: 0x40643e20, 0x3ef5: 0x40644020, 0x3ef6: 0x40644220, 0x3ef7: 0x40644420, - 0x3ef8: 0x40644620, 0x3ef9: 0x40644820, 0x3efa: 0x40644a20, 0x3efb: 0x40644c20, - 0x3efc: 0x40644e20, 0x3efd: 0x40645020, 0x3efe: 0x40645220, 0x3eff: 0x40645420, - // Block 0xfc, offset 0x3f00 - 0x3f00: 0x40645620, 0x3f01: 0x40645820, 0x3f02: 0x40645a20, 0x3f03: 0x40645c20, - 0x3f04: 0x40645e20, 0x3f05: 0x40646020, 0x3f06: 0x40646220, - 0x3f0b: 0x40651420, - 0x3f0c: 0x40651620, 0x3f0d: 0x40651820, 0x3f0e: 0x40651a20, 0x3f0f: 0x40651c20, - 0x3f10: 0x40651e20, 0x3f11: 0x40652020, 0x3f12: 0x40652220, 0x3f13: 0x40652420, - 0x3f14: 0x40652620, 0x3f15: 0x40652820, 0x3f16: 0x40652a20, 0x3f17: 0x40652c20, - 0x3f18: 0x40652e20, 0x3f19: 0x40653020, 0x3f1a: 0x40653220, 0x3f1b: 0x40653420, - 0x3f1c: 0x40653620, 0x3f1d: 0x40653820, 0x3f1e: 0x40653a20, 0x3f1f: 0x40653c20, - 0x3f20: 0x40653e20, 0x3f21: 0x40654020, 0x3f22: 0x40654220, 0x3f23: 0x40654420, - 0x3f24: 0x40654620, 0x3f25: 0x40654820, 0x3f26: 0x40654a20, 0x3f27: 0x40654c20, - 0x3f28: 0x40654e20, 0x3f29: 0x40655020, 0x3f2a: 0x40655220, 0x3f2b: 0x40655420, - 0x3f2c: 0x40655620, 0x3f2d: 0x40655820, 0x3f2e: 0x40655a20, 0x3f2f: 0x40655c20, - 0x3f30: 0x40655e20, 0x3f31: 0x40656020, 0x3f32: 0x40656220, 0x3f33: 0x40656420, - 0x3f34: 0x40656620, 0x3f35: 0x40656820, 0x3f36: 0x40656a20, 0x3f37: 0x40656c20, - 0x3f38: 0x40656e20, 0x3f39: 0x40657020, 0x3f3a: 0x40657220, 0x3f3b: 0x40657420, - // Block 0xfd, offset 0x3f40 - 0x3f40: 0x43189020, 0x3f41: 0x42cde820, 0x3f42: 0x431d9420, 0x3f43: 0x43199020, - 0x3f44: 0x42dda220, 0x3f45: 0x429c6420, 0x3f46: 0x42a7ca20, 0x3f47: 0x433f3820, - 0x3f48: 0x433f3820, 0x3f49: 0x42b2a220, 0x3f4a: 0x4323a220, 0x3f4b: 0x42ab0e20, - 0x3f4c: 0x42b29020, 0x3f4d: 0x42c3ec20, 0x3f4e: 0x42ecd220, 0x3f4f: 0x42ff0a20, - 0x3f50: 0x430c7e20, 0x3f51: 0x430f7420, 0x3f52: 0x4311f020, 0x3f53: 0x43211e20, - 0x3f54: 0x42d40420, 0x3f55: 0x42da3620, 0x3f56: 0x42e1b220, 0x3f57: 0x42e7bc20, - 0x3f58: 0x43087a20, 0x3f59: 0x4322d420, 0x3f5a: 0x4333e220, 0x3f5b: 0x429d0420, - 0x3f5c: 0x42a6ea20, 0x3f5d: 0x42d60820, 0x3f5e: 0x42e43620, 0x3f5f: 0x430c5a20, - 0x3f60: 0x433c3c20, 0x3f61: 0x42baa020, 0x3f62: 0x42dfd620, 0x3f63: 0x430b9a20, - 0x3f64: 0x4312c820, 0x3f65: 0x42c59220, 0x3f66: 0x4303b020, 0x3f67: 0x43103e20, - 0x3f68: 0x42bd9420, 0x3f69: 0x42ce2e20, 0x3f6a: 0x42dad420, 0x3f6b: 0x42e5f820, - 0x3f6c: 0x43219c20, 0x3f6d: 0x429f0c20, 0x3f6e: 0x42a36e20, 0x3f6f: 0x42a5bc20, - 0x3f70: 0x42c98820, 0x3f71: 0x42d5a620, 0x3f72: 0x42e42020, 0x3f73: 0x42edce20, - 0x3f74: 0x43000220, 0x3f75: 0x430c0c20, 0x3f76: 0x430cb820, 0x3f77: 0x431bde20, - 0x3f78: 0x432e6420, 0x3f79: 0x4336de20, 0x3f7a: 0x433bf420, 0x3f7b: 0x42f11820, - 0x3f7c: 0x42f2fe20, 0x3f7d: 0x42fb4020, 0x3f7e: 0x43079220, 0x3f7f: 0x43260820, - // Block 0xfe, offset 0x3f80 - 0x3f80: 0x433cfe20, 0x3f81: 0x4315ac20, 0x3f82: 0x42b1be20, 0x3f83: 0x42be0820, - 0x3f84: 0x42f8c020, 0x3f85: 0x4300fc20, 0x3f86: 0x42e4c420, 0x3f87: 0x42f19420, - 0x3f88: 0x43198420, 0x3f89: 0x432dee20, 0x3f8a: 0x42b1b020, 0x3f8b: 0x42b8c420, - 0x3f8c: 0x42d42620, 0x3f8d: 0x42dbb420, 0x3f8e: 0x42de1e20, 0x3f8f: 0x42fa5e20, - 0x3f90: 0x42fc6e20, 0x3f91: 0x432c9620, 0x3f92: 0x42a5a420, 0x3f93: 0x43011620, - 0x3f94: 0x42a3b820, 0x3f95: 0x42a39820, 0x3f96: 0x42f43820, 0x3f97: 0x42fb7c20, - 0x3f98: 0x4307e220, 0x3f99: 0x432cea20, 0x3f9a: 0x43170020, 0x3f9b: 0x42c59e20, - 0x3f9c: 0x42d40420, 0x3f9d: 0x4315fc20, 0x3f9e: 0x429c7220, 0x3f9f: 0x42b7ce20, - 0x3fa0: 0x42c02420, 0x3fa1: 0x42e70e20, 0x3fa2: 0x42eae020, 0x3fa3: 0x42a62e20, - 0x3fa4: 0x42f1f620, 0x3fa5: 0x429f7e20, 0x3fa6: 0x42bf5220, 0x3fa7: 0x429c1a20, - 0x3fa8: 0x42d99820, 0x3fa9: 0x42caf020, 0x3faa: 0x42fa4420, 0x3fab: 0x42a78620, - 0x3fac: 0x42b0bc20, 0x3fad: 0x42ee0220, 0x3fae: 0x43089220, 0x3faf: 0x43155420, - 0x3fb0: 0x42d77420, 0x3fb1: 0x431f6020, 0x3fb2: 0x42d91020, 0x3fb3: 0x42c5fc20, - 0x3fb4: 0x4305ca20, 0x3fb5: 0x42c74020, 0x3fb6: 0x42eaca20, 0x3fb7: 0x429d5c20, - 0x3fb8: 0x42a2d220, 0x3fb9: 0x42a39220, 0x3fba: 0x42d10220, 0x3fbb: 0x42f9ce20, - 0x3fbc: 0x4304de20, 0x3fbd: 0x4315a420, 0x3fbe: 0x43239e20, 0x3fbf: 0x42a5ea20, - // Block 0xff, offset 0x3fc0 - 0x3fc0: 0x42a88420, 0x3fc1: 0x42b2e620, 0x3fc2: 0x42bdd820, 0x3fc3: 0x42cb8a20, - 0x3fc4: 0x42dffc20, 0x3fc5: 0x42f25420, 0x3fc6: 0x432b5a20, 0x3fc7: 0x4334d420, - 0x3fc8: 0x433d2e20, 0x3fc9: 0x433d9c20, 0x3fca: 0x42a53620, 0x3fcb: 0x42cd8c20, - 0x3fcc: 0x42d6ee20, 0x3fcd: 0x431ec420, 0x3fce: 0x42bce820, 0x3fcf: 0x42c32020, - 0x3fd0: 0x42c40020, 0x3fd1: 0x42c93420, 0x3fd2: 0x42de4620, 0x3fd3: 0x42e29220, - 0x3fd4: 0x42e91220, 0x3fd5: 0x42f39420, 0x3fd6: 0x42fbe820, 0x3fd7: 0x4300de20, - 0x3fd8: 0x431e4c20, 0x3fd9: 0x4309dc20, 0x3fda: 0x43204620, 0x3fdb: 0x43269420, - 0x3fdc: 0x42a42e20, 0x3fdd: 0x42a54620, 0x3fde: 0x42a97a20, 0x3fdf: 0x42e19020, - 0x3fe0: 0x43118420, 0x3fe1: 0x43155420, 0x3fe2: 0x42bd9220, 0x3fe3: 0x42bfea20, - 0x3fe4: 0x42c6f620, 0x3fe5: 0x42d75c20, 0x3fe6: 0x42f87c20, 0x3fe7: 0x42e6ea20, - 0x3fe8: 0x429dc820, 0x3fe9: 0x42adf220, 0x3fea: 0x42b7ce20, 0x3feb: 0x42bb7420, - 0x3fec: 0x42c03820, 0x3fed: 0x42e76420, 0x3fee: 0x42e8d220, 0x3fef: 0x42ff3420, - 0x3ff0: 0x43008c20, 0x3ff1: 0x43246820, 0x3ff2: 0x432dec20, 0x3ff3: 0x432e9020, - 0x3ff4: 0x43303020, 0x3ff5: 0x429f1620, 0x3ff6: 0x42f35c20, 0x3ff7: 0x43236820, - 0x3ff8: 0x432d7020, 0x3ff9: 0x42c1c220, 0x3ffa: 0x429d0c20, 0x3ffb: 0x42a1b420, - 0x3ffc: 0x42b7dc20, 0x3ffd: 0x42b87e20, 0x3ffe: 0x42cb3220, 0x3fff: 0x42d40420, - // Block 0x100, offset 0x4000 - 0x4000: 0x42e39c20, 0x4001: 0x42ec8420, 0x4002: 0x4309f820, 0x4003: 0x4320f820, - 0x4004: 0x433f1a20, 0x4005: 0x42cd1020, 0x4006: 0x432c5c20, 0x4007: 0x42a51220, - 0x4008: 0x42cef620, 0x4009: 0x42cfe620, 0x400a: 0x42da8220, 0x400b: 0x42dd3820, - 0x400c: 0x42e81220, 0x400d: 0x42eab220, 0x400e: 0x42f0d620, 0x400f: 0x42fa2020, - 0x4010: 0x4330bc20, 0x4011: 0x42a2da20, 0x4012: 0x42c45c20, 0x4013: 0x432cf020, - 0x4014: 0x42a05620, 0x4015: 0x42ba3220, 0x4016: 0x42dbd420, 0x4017: 0x431e5420, - 0x4018: 0x42bf1620, 0x4019: 0x42c28820, 0x401a: 0x42d02e20, 0x401b: 0x42e70e20, - 0x401c: 0x432d0c20, 0x401d: 0x42a45220, 0x401e: 0x42a81e20, 0x401f: 0x42b8ca20, - 0x4020: 0x42cc2620, 0x4021: 0x42ce9c20, 0x4022: 0x42d15020, 0x4023: 0x42d9ca20, - 0x4024: 0x42e80c20, 0x4025: 0x42ebc420, 0x4026: 0x42fef220, 0x4027: 0x43119e20, - 0x4028: 0x4311c220, 0x4029: 0x43239820, 0x402a: 0x432dc420, 0x402b: 0x42a67e20, - 0x402c: 0x42dd7420, 0x402d: 0x42a83a20, 0x402e: 0x42e3a020, 0x402f: 0x42e93020, - 0x4030: 0x430bf420, 0x4031: 0x432d4620, 0x4032: 0x4338ae20, 0x4033: 0x433d3e20, - 0x4034: 0x42cf2e20, 0x4035: 0x42db9620, 0x4036: 0x4303d020, 0x4037: 0x42f59620, - 0x4038: 0x42f64020, 0x4039: 0x42f92420, 0x403a: 0x42e58020, 0x403b: 0x42e13220, - 0x403c: 0x4316b020, 0x403d: 0x429d8020, 0x403e: 0x43066c20, 0x403f: 0x42a47420, - // Block 0x101, offset 0x4040 - 0x4040: 0x42a40e20, 0x4041: 0x42bd4c20, 0x4042: 0x42c5a620, 0x4043: 0x42f9ac20, - 0x4044: 0x42b70a20, 0x4045: 0x42da3c20, 0x4046: 0x42cd6820, 0x4047: 0x431e7620, - 0x4048: 0x43109820, 0x4049: 0x432c9a20, 0x404a: 0x43131620, 0x404b: 0x42bda620, - 0x404c: 0x42a28020, 0x404d: 0x42ab8020, 0x404e: 0x43f41c20, 0x404f: 0x43f41e20, - 0x4050: 0x42b0b420, 0x4051: 0x43f42220, 0x4052: 0x42cce820, 0x4053: 0x43f42620, - 0x4054: 0x43f42820, 0x4055: 0x42a3bc20, 0x4056: 0x42e65420, 0x4057: 0x42ed9420, - 0x4058: 0x42f27820, 0x4059: 0x42f2bc20, 0x405a: 0x42f2ca20, 0x405b: 0x42f31e20, - 0x405c: 0x432eac20, 0x405d: 0x42f97c20, 0x405e: 0x42ff7a20, 0x405f: 0x43f43e20, - 0x4060: 0x430c2420, 0x4061: 0x43f44220, 0x4062: 0x4315f020, 0x4063: 0x43f44620, - 0x4064: 0x43f44820, 0x4065: 0x43207020, 0x4066: 0x4321fa20, 0x4067: 0x43f44e20, - 0x4068: 0x43f45020, 0x4069: 0x43f45220, 0x406a: 0x4331de20, 0x406b: 0x4331f820, - 0x406c: 0x43325020, 0x406d: 0x433b6820, 0x406e: 0x4321bc20, 0x406f: 0x432d6e20, - 0x4070: 0x429f5c20, 0x4071: 0x42a1ce20, 0x4072: 0x42a29a20, 0x4073: 0x42a59220, - 0x4074: 0x42a5c820, 0x4075: 0x42a6a220, 0x4076: 0x42ab3a20, 0x4077: 0x42ac0c20, - 0x4078: 0x42acd020, 0x4079: 0x42b08020, 0x407a: 0x42b15020, 0x407b: 0x42b8c820, - 0x407c: 0x42b8dc20, 0x407d: 0x42c12820, 0x407e: 0x42c2d020, 0x407f: 0x42c31c20, - // Block 0x102, offset 0x4080 - 0x4080: 0x42c3e420, 0x4081: 0x42ca9e20, 0x4082: 0x42cbc420, 0x4083: 0x42cd2220, - 0x4084: 0x42d10a20, 0x4085: 0x42daee20, 0x4086: 0x42dc3420, 0x4087: 0x42de4420, - 0x4088: 0x42e2dc20, 0x4089: 0x42e45620, 0x408a: 0x42e84420, 0x408b: 0x42f12220, - 0x408c: 0x42f27c20, 0x408d: 0x42f29220, 0x408e: 0x42f29020, 0x408f: 0x42f2a020, - 0x4090: 0x42f2ac20, 0x4091: 0x42f2ba20, 0x4092: 0x42f31a20, 0x4093: 0x42f31c20, - 0x4094: 0x42f48020, 0x4095: 0x42f50220, 0x4096: 0x42f78020, 0x4097: 0x42fbe820, - 0x4098: 0x42fc1220, 0x4099: 0x42fc8220, 0x409a: 0x42fee420, 0x409b: 0x43000a20, - 0x409c: 0x4303da20, 0x409d: 0x4304f220, 0x409e: 0x4304f220, 0x409f: 0x4308ae20, - 0x40a0: 0x43122020, 0x40a1: 0x43132c20, 0x40a2: 0x43160220, 0x40a3: 0x43167220, - 0x40a4: 0x4319a620, 0x40a5: 0x431a1020, 0x40a6: 0x431f6c20, 0x40a7: 0x43207020, - 0x40a8: 0x432dc620, 0x40a9: 0x432ffe20, 0x40aa: 0x43307620, 0x40ab: 0x42c0ea20, - 0x40ac: 0x4885dc20, 0x40ad: 0x43043020, - 0x40b0: 0x429c4c20, 0x40b1: 0x42a36a20, 0x40b2: 0x42a2d020, 0x40b3: 0x429f0020, - 0x40b4: 0x42a28a20, 0x40b5: 0x42a30020, 0x40b6: 0x42a58e20, 0x40b7: 0x42a5f420, - 0x40b8: 0x42ab3a20, 0x40b9: 0x42aaaa20, 0x40ba: 0x42ab3220, 0x40bb: 0x42abc420, - 0x40bc: 0x42b0b420, 0x40bd: 0x42b16620, 0x40be: 0x42b28820, 0x40bf: 0x42b2a820, - // Block 0x103, offset 0x40c0 - 0x40c0: 0x42b4c420, 0x40c1: 0x42b65020, 0x40c2: 0x42bda420, 0x40c3: 0x42bdb220, - 0x40c4: 0x42bed220, 0x40c5: 0x42bf5a20, 0x40c6: 0x42c1b020, 0x40c7: 0x42c29c20, - 0x40c8: 0x42c21020, 0x40c9: 0x42c31c20, 0x40ca: 0x42c2c020, 0x40cb: 0x42c3e420, - 0x40cc: 0x42c46820, 0x40cd: 0x42c78820, 0x40ce: 0x42c83820, 0x40cf: 0x42c8a420, - 0x40d0: 0x42caac20, 0x40d1: 0x42cce820, 0x40d2: 0x42ce2e20, 0x40d3: 0x42ce3620, - 0x40d4: 0x42ceac20, 0x40d5: 0x42d6f220, 0x40d6: 0x42d77420, 0x40d7: 0x42da8220, - 0x40d8: 0x42ddb620, 0x40d9: 0x42dd9620, 0x40da: 0x42de4420, 0x40db: 0x42e03c20, - 0x40dc: 0x42e2dc20, 0x40dd: 0x42ef4e20, 0x40de: 0x42e46a20, 0x40df: 0x42e55e20, - 0x40e0: 0x42e65420, 0x40e1: 0x42e8e220, 0x40e2: 0x42ea0c20, 0x40e3: 0x42ea7620, - 0x40e4: 0x42ec3a20, 0x40e5: 0x42ec3e20, 0x40e6: 0x42ed9420, 0x40e7: 0x42edb620, - 0x40e8: 0x42ede820, 0x40e9: 0x42ee9420, 0x40ea: 0x42ee8020, 0x40eb: 0x42f19820, - 0x40ec: 0x42f56220, 0x40ed: 0x42f78020, 0x40ee: 0x42f8f620, 0x40ef: 0x42fab620, - 0x40f0: 0x42fbe820, 0x40f1: 0x42fe7c20, 0x40f2: 0x43000a20, 0x40f3: 0x4306a420, - 0x40f4: 0x4307de20, 0x40f5: 0x430ef220, 0x40f6: 0x43128220, 0x40f7: 0x43130c20, - 0x40f8: 0x43132c20, 0x40f9: 0x43157e20, 0x40fa: 0x4315f020, 0x40fb: 0x43159620, - 0x40fc: 0x43160220, 0x40fd: 0x4315fc20, 0x40fe: 0x4315da20, 0x40ff: 0x43167220, - // Block 0x104, offset 0x4100 - 0x4100: 0x43171420, 0x4101: 0x431a1020, 0x4102: 0x431e7020, 0x4103: 0x4320e420, - 0x4104: 0x43233220, 0x4105: 0x4324ec20, 0x4106: 0x432cf820, 0x4107: 0x432dc620, - 0x4108: 0x432eac20, 0x4109: 0x432fb620, 0x410a: 0x432ffe20, 0x410b: 0x43301620, - 0x410c: 0x43307620, 0x410d: 0x43362420, 0x410e: 0x433f3820, 0x410f: 0x48509420, - 0x4110: 0x48508820, 0x4111: 0x4867aa20, 0x4112: 0x44773a20, 0x4113: 0x44803020, - 0x4114: 0x44807220, 0x4115: 0x48a49220, 0x4116: 0x48b9a020, 0x4117: 0x48fda620, - 0x4118: 0x433e8620, 0x4119: 0x433f1c20, - // Block 0x105, offset 0x4140 - 0x4140: 0xf0000404, 0x4141: 0xf0000404, 0x4142: 0xf0000404, 0x4143: 0xe0000b99, - 0x4144: 0xe0000b9d, 0x4145: 0xe0000f83, 0x4146: 0xf0000404, - 0x4153: 0xf0000404, - 0x4154: 0xf0000404, 0x4155: 0xf0000404, 0x4156: 0xf0000404, 0x4157: 0xf0000404, - 0x415d: 0xe000150b, 0x415e: 0xa1a09602, 0x415f: 0xe0001514, - 0x4160: 0x0038ae85, 0x4161: 0x00389085, 0x4162: 0x00389685, 0x4163: 0x00389885, - 0x4164: 0x0038a485, 0x4165: 0x0038a685, 0x4166: 0x0038a885, 0x4167: 0x0038b685, - 0x4168: 0x0038ba85, 0x4169: 0x00093885, 0x416a: 0xe0001542, 0x416b: 0xe000153f, - 0x416c: 0xe000154c, 0x416d: 0xe0001548, 0x416e: 0xe00014e1, 0x416f: 0xe00014e4, - 0x4170: 0xe00014e7, 0x4171: 0xe00014ea, 0x4172: 0xe00014f0, 0x4173: 0xe00014f3, - 0x4174: 0xe00014f6, 0x4175: 0xe00014fc, 0x4176: 0xe0001505, - 0x4178: 0xe0001508, 0x4179: 0xe000150e, 0x417a: 0xe000151b, 0x417b: 0xe0001518, - 0x417c: 0xe0001521, 0x417e: 0xe0001524, - // Block 0x106, offset 0x4180 - 0x4180: 0xe0001527, 0x4181: 0xe000152a, 0x4183: 0xe0001530, - 0x4184: 0xe000152d, 0x4186: 0xe0001536, 0x4187: 0xe0001539, - 0x4188: 0xe000153c, 0x4189: 0xe0001545, 0x418a: 0xe0001550, 0x418b: 0xe00014f9, - 0x418c: 0xe00014ed, 0x418d: 0xe000151e, 0x418e: 0xe0001533, 0x418f: 0xf0000404, - 0x4190: 0x0039249a, 0x4191: 0x00392499, 0x4192: 0x00393e9a, 0x4193: 0x00393e99, - 0x4194: 0x00393e97, 0x4195: 0x00393e98, 0x4196: 0x0039409a, 0x4197: 0x00394099, - 0x4198: 0x00394097, 0x4199: 0x00394098, 0x419a: 0x0039429a, 0x419b: 0x00394299, - 0x419c: 0x00394297, 0x419d: 0x00394298, 0x419e: 0x00395c9a, 0x419f: 0x00395c99, - 0x41a0: 0x00395c97, 0x41a1: 0x00395c98, 0x41a2: 0x0039629a, 0x41a3: 0x00396299, - 0x41a4: 0x00396297, 0x41a5: 0x00396298, 0x41a6: 0x00395a9a, 0x41a7: 0x00395a99, - 0x41a8: 0x00395a97, 0x41a9: 0x00395a98, 0x41aa: 0x003a049a, 0x41ab: 0x003a0499, - 0x41ac: 0x003a0497, 0x41ad: 0x003a0498, 0x41ae: 0x003a0a9a, 0x41af: 0x003a0a99, - 0x41b0: 0x003a0a97, 0x41b1: 0x003a0a98, 0x41b2: 0x0039689a, 0x41b3: 0x00396899, - 0x41b4: 0x00396897, 0x41b5: 0x00396898, 0x41b6: 0x0039669a, 0x41b7: 0x00396699, - 0x41b8: 0x00396697, 0x41b9: 0x00396698, 0x41ba: 0x00396a9a, 0x41bb: 0x00396a99, - 0x41bc: 0x00396a97, 0x41bd: 0x00396a98, 0x41be: 0x00396e9a, 0x41bf: 0x00396e99, - // Block 0x107, offset 0x41c0 - 0x41c0: 0x00396e97, 0x41c1: 0x00396e98, 0x41c2: 0x0039969a, 0x41c3: 0x00399699, - 0x41c4: 0x0039949a, 0x41c5: 0x00399499, 0x41c6: 0x0039989a, 0x41c7: 0x00399899, - 0x41c8: 0x00398c9a, 0x41c9: 0x00398c99, 0x41ca: 0x0039b69a, 0x41cb: 0x0039b699, - 0x41cc: 0x0039a89a, 0x41cd: 0x0039a899, 0x41ce: 0x003a1c9a, 0x41cf: 0x003a1c99, - 0x41d0: 0x003a1c97, 0x41d1: 0x003a1c98, 0x41d2: 0x003a2a9a, 0x41d3: 0x003a2a99, - 0x41d4: 0x003a2a97, 0x41d5: 0x003a2a98, 0x41d6: 0x003a329a, 0x41d7: 0x003a3299, - 0x41d8: 0x003a3297, 0x41d9: 0x003a3298, 0x41da: 0x003a2e9a, 0x41db: 0x003a2e99, - 0x41dc: 0x003a2e97, 0x41dd: 0x003a2e98, 0x41de: 0x003a589a, 0x41df: 0x003a5899, - 0x41e0: 0x003a5a9a, 0x41e1: 0x003a5a99, 0x41e2: 0x003a5a97, 0x41e3: 0x003a5a98, - 0x41e4: 0xf0001a1a, 0x41e5: 0xf0001919, 0x41e6: 0x003a6c9a, 0x41e7: 0x003a6c99, - 0x41e8: 0x003a6c97, 0x41e9: 0x003a6c98, 0x41ea: 0x003a6a9a, 0x41eb: 0x003a6a99, - 0x41ec: 0x003a6a97, 0x41ed: 0x003a6a98, 0x41ee: 0x003aaa9a, 0x41ef: 0x003aaa99, - 0x41f0: 0xf0001a1a, 0x41f1: 0xf0001919, 0x41f2: 0x40071820, 0x41f3: 0x40071a20, - 0x41f4: 0x40071c20, 0x41f5: 0x40071e20, 0x41f6: 0x40072020, 0x41f7: 0x40072220, - 0x41f8: 0x40072420, 0x41f9: 0x40072620, 0x41fa: 0x40072820, 0x41fb: 0x40072a20, - 0x41fc: 0x40072c20, 0x41fd: 0x40072e20, 0x41fe: 0x40073020, 0x41ff: 0x40073220, - // Block 0x108, offset 0x4200 - 0x4200: 0x40073420, 0x4201: 0x40073620, - 0x4213: 0x003a269a, - 0x4214: 0x003a2699, 0x4215: 0x003a2697, 0x4216: 0x003a2698, 0x4217: 0x003a7c9a, - 0x4218: 0x003a7c99, 0x4219: 0x003a7a9a, 0x421a: 0x003a7a99, 0x421b: 0x003a7e9a, - 0x421c: 0x003a7e99, 0x421d: 0xf0001a1a, 0x421e: 0x003a849a, 0x421f: 0x003a8499, - 0x4220: 0x003a789a, 0x4221: 0x003a7899, 0x4222: 0x003a809a, 0x4223: 0x003a8099, - 0x4224: 0x003a989a, 0x4225: 0x003a9899, 0x4226: 0x003a9897, 0x4227: 0x003a9898, - 0x4228: 0x003a8e97, 0x4229: 0x003a8e98, 0x422a: 0xe0001559, 0x422b: 0xe0001556, - 0x422c: 0xe0001589, 0x422d: 0xe0001586, 0x422e: 0xe000158f, 0x422f: 0xe000158c, - 0x4230: 0xe000159b, 0x4231: 0xe0001598, 0x4232: 0xe0001595, 0x4233: 0xe0001592, - 0x4234: 0xe00015a1, 0x4235: 0xe000159e, 0x4236: 0xe00015bf, 0x4237: 0xe00015bc, - 0x4238: 0xe00015b9, 0x4239: 0xe00015ad, 0x423a: 0xe00015a7, 0x423b: 0xe00015a4, - 0x423c: 0x003a929a, 0x423d: 0x003a9299, 0x423e: 0x003a9297, 0x423f: 0x003a9298, - // Block 0x109, offset 0x4240 - 0x4240: 0xe000155f, 0x4241: 0xe0001565, 0x4242: 0xe000157a, 0x4243: 0xe00015b0, - 0x4244: 0xe00015b6, 0x4245: 0xf0001a1a, 0x4246: 0xf0001a1a, 0x4247: 0xf0001a1a, - 0x4248: 0xf0001a1a, 0x4249: 0xf0001a1a, 0x424a: 0xf0001a1a, 0x424b: 0xf0001a1a, - 0x424c: 0xf0001a1a, 0x424d: 0xf0001a1a, 0x424e: 0xf0001a1a, 0x424f: 0xf0001a1a, - 0x4250: 0xf0001a1a, 0x4251: 0xf0001a1a, 0x4252: 0xf0001a1a, 0x4253: 0xf0001a1a, - 0x4254: 0xf0001a1a, 0x4255: 0xf0001a1a, 0x4256: 0xf0001a1a, 0x4257: 0xf0001a1a, - 0x4258: 0xf0001a1a, 0x4259: 0xf0001a1a, 0x425a: 0xf0001a1a, 0x425b: 0xf0001a1a, - 0x425c: 0xf0001a1a, 0x425d: 0xf0001a1a, 0x425e: 0xf0001a1a, 0x425f: 0xf0001a1a, - 0x4260: 0xf0001a1a, 0x4261: 0xf0001a1a, 0x4262: 0xf0001a1a, 0x4263: 0xf0001a1a, - 0x4264: 0xf0001a1a, 0x4265: 0xf0001a1a, 0x4266: 0xf0001a1a, 0x4267: 0xf0001a1a, - 0x4268: 0xf0001a1a, 0x4269: 0xf0001a1a, 0x426a: 0xf0001a1a, 0x426b: 0xf0001a1a, - 0x426c: 0xf0001a1a, 0x426d: 0xf0001a1a, 0x426e: 0xf0001a1a, 0x426f: 0xf0001a1a, - 0x4270: 0xf0001a1a, 0x4271: 0xf0001a1a, 0x4272: 0xf0001a1a, 0x4273: 0xf0001a1a, - 0x4274: 0xf0001a1a, 0x4275: 0xf0001a1a, 0x4276: 0xf0001a1a, 0x4277: 0xf0001a1a, - 0x4278: 0xf0001a1a, 0x4279: 0xf0001a1a, 0x427a: 0xf0001a1a, 0x427b: 0xf0001a1a, - 0x427c: 0xf0001a1a, 0x427d: 0xf0001a1a, 0x427e: 0xf0001a1a, 0x427f: 0xf0001a1a, - // Block 0x10a, offset 0x4280 - 0x4280: 0xf0001a1a, 0x4281: 0xf0001a1a, 0x4282: 0xf0001a1a, 0x4283: 0xf0001a1a, - 0x4284: 0xf0001a1a, 0x4285: 0xf0001a1a, 0x4286: 0xf0001a1a, 0x4287: 0xf0001a1a, - 0x4288: 0xf0001a1a, 0x4289: 0xf0001a1a, 0x428a: 0xf0001a1a, 0x428b: 0xf0001a1a, - 0x428c: 0xf0001a1a, 0x428d: 0xf0001a1a, 0x428e: 0xf0001a1a, 0x428f: 0xf0001a1a, - 0x4290: 0xf0001a1a, 0x4291: 0xf0001a1a, 0x4292: 0xf0001a1a, 0x4293: 0xf0001a1a, - 0x4294: 0xf0001a1a, 0x4295: 0xf0001a1a, 0x4296: 0xf0001a1a, 0x4297: 0xf0001a1a, - 0x4298: 0xf0001a1a, 0x4299: 0xf0001a1a, 0x429a: 0xf0001a1a, 0x429b: 0xf0001a1a, - 0x429c: 0xf0001a1a, 0x429d: 0xf0001a1a, 0x429e: 0xe0000003, 0x429f: 0xe0000006, - 0x42a0: 0xe0000009, 0x42a1: 0xe000000c, 0x42a2: 0xe000000f, 0x42a3: 0xe0000012, - 0x42a4: 0xe000156b, 0x42a5: 0xe000156e, 0x42a6: 0xe0001577, 0x42a7: 0xe000157d, - 0x42a8: 0xe00015aa, 0x42a9: 0xe00015b3, 0x42aa: 0xf0001919, 0x42ab: 0xf0001919, - 0x42ac: 0xf0001919, 0x42ad: 0xf0001919, 0x42ae: 0xf0001919, 0x42af: 0xf0001919, - 0x42b0: 0xf0001919, 0x42b1: 0xf0001919, 0x42b2: 0xf0001919, 0x42b3: 0xf0001919, - 0x42b4: 0xf0001919, 0x42b5: 0xf0001919, 0x42b6: 0xf0001919, 0x42b7: 0xf0001919, - 0x42b8: 0xf0001919, 0x42b9: 0xf0001919, 0x42ba: 0xf0001919, 0x42bb: 0xf0001919, - 0x42bc: 0xf0001919, 0x42bd: 0xf0001919, 0x42be: 0xf0001919, 0x42bf: 0xf0001919, - // Block 0x10b, offset 0x42c0 - 0x42c0: 0xf0001919, 0x42c1: 0xf0001919, 0x42c2: 0xf0001919, 0x42c3: 0xf0001919, - 0x42c4: 0xf0001919, 0x42c5: 0xf0001919, 0x42c6: 0xf0001919, 0x42c7: 0xf0001919, - 0x42c8: 0xf0001919, 0x42c9: 0xf0001919, 0x42ca: 0xf0001919, 0x42cb: 0xf0001919, - 0x42cc: 0xf0001919, 0x42cd: 0xf0001919, 0x42ce: 0xf0001919, 0x42cf: 0xf0001919, - 0x42d0: 0xf0001919, 0x42d1: 0xf0001919, 0x42d2: 0xf0001919, 0x42d3: 0xf0001919, - 0x42d4: 0xf0001919, 0x42d5: 0xf0001919, 0x42d6: 0xf0001919, 0x42d7: 0xe000155c, - 0x42d8: 0xe0001562, 0x42d9: 0xe0001568, 0x42da: 0xe0001571, 0x42db: 0xe0001580, - 0x42dc: 0xf0001717, 0x42dd: 0xf0001717, 0x42de: 0xf0001717, 0x42df: 0xf0001717, - 0x42e0: 0xf0001717, 0x42e1: 0xf0001717, 0x42e2: 0xf0001717, 0x42e3: 0xf0001717, - 0x42e4: 0xf0001717, 0x42e5: 0xf0001717, 0x42e6: 0xf0001717, 0x42e7: 0xf0001717, - 0x42e8: 0xf0001717, 0x42e9: 0xf0001717, 0x42ea: 0xf0001717, 0x42eb: 0xf0001717, - 0x42ec: 0xf0001717, 0x42ed: 0xf0001717, 0x42ee: 0xf0001717, 0x42ef: 0xf0001717, - 0x42f0: 0xf0001717, 0x42f1: 0xf0001717, 0x42f2: 0xf0001717, 0x42f3: 0xf0001717, - 0x42f4: 0xf0001717, 0x42f5: 0xf0001717, 0x42f6: 0xf0001717, 0x42f7: 0xf0001717, - 0x42f8: 0xf0001717, 0x42f9: 0xf0001717, 0x42fa: 0xf0001717, 0x42fb: 0xf0001717, - 0x42fc: 0xf0001717, 0x42fd: 0xf0001717, 0x42fe: 0xf0001717, 0x42ff: 0xf0001717, - // Block 0x10c, offset 0x4300 - 0x4300: 0xf0001717, 0x4301: 0xf0001717, 0x4302: 0xf0001717, 0x4303: 0xf0001717, - 0x4304: 0xf0001717, 0x4305: 0xf0001717, 0x4306: 0xf0001717, 0x4307: 0xf0001717, - 0x4308: 0xf0001717, 0x4309: 0xf0001717, 0x430a: 0xf0001717, 0x430b: 0xf0001717, - 0x430c: 0xf0001717, 0x430d: 0xf0001717, 0x430e: 0xf0001717, 0x430f: 0xf0001717, - 0x4310: 0xf0001717, 0x4311: 0xf0001717, 0x4312: 0xf0001717, 0x4313: 0xf0001717, - 0x4314: 0xf0001717, 0x4315: 0xf0001717, 0x4316: 0xf0001717, 0x4317: 0xf0001717, - 0x4318: 0xf0001717, 0x4319: 0xf0001717, 0x431a: 0xf0001717, 0x431b: 0xf0001717, - 0x431c: 0xf0001717, 0x431d: 0xf0001717, 0x431e: 0xf0001717, 0x431f: 0xe0001574, - 0x4320: 0xe0001583, 0x4321: 0xf0001818, 0x4322: 0xf0001818, 0x4323: 0xf0001818, - 0x4324: 0xf0001818, 0x4325: 0xf0001818, 0x4326: 0xf0001818, 0x4327: 0xf0001818, - 0x4328: 0xf0001818, 0x4329: 0xf0001818, 0x432a: 0xf0001818, 0x432b: 0xf0001818, - 0x432c: 0xf0001818, 0x432d: 0xf0001818, 0x432e: 0xf0001818, 0x432f: 0xf0001818, - 0x4330: 0xf0001818, 0x4331: 0xf0001818, 0x4332: 0xf0001818, 0x4333: 0xf0001818, - 0x4334: 0xf0001818, 0x4335: 0xf0001a1a, 0x4336: 0xf0001a1a, 0x4337: 0xf0001a1a, - 0x4338: 0xf0001a1a, 0x4339: 0xf0001a1a, 0x433a: 0xf0001a1a, 0x433b: 0xf0001a1a, - 0x433c: 0xf0001a1a, 0x433d: 0xf0001a1a, 0x433e: 0xf0001a1a, 0x433f: 0xf0001a1a, - // Block 0x10d, offset 0x4340 - 0x4340: 0xf0001a1a, 0x4341: 0xf0001a1a, 0x4342: 0xf0001a1a, 0x4343: 0xf0001a1a, - 0x4344: 0xf0001a1a, 0x4345: 0xf0001a1a, 0x4346: 0xf0001a1a, 0x4347: 0xf0001a1a, - 0x4348: 0xf0001a1a, 0x4349: 0xf0001a1a, 0x434a: 0xf0001a1a, 0x434b: 0xf0001a1a, - 0x434c: 0xf0001a1a, 0x434d: 0xf0001a1a, 0x434e: 0xf0001a1a, 0x434f: 0xf0001a1a, - 0x4350: 0xf0001a1a, 0x4351: 0xf0001919, 0x4352: 0xf0001919, 0x4353: 0xf0001919, - 0x4354: 0xf0001919, 0x4355: 0xf0001919, 0x4356: 0xf0001919, 0x4357: 0xf0001919, - 0x4358: 0xf0001919, 0x4359: 0xf0001919, 0x435a: 0xf0001919, 0x435b: 0xf0001919, - 0x435c: 0xf0001919, 0x435d: 0xf0001919, 0x435e: 0xf0001919, 0x435f: 0xf0001919, - 0x4360: 0xf0001919, 0x4361: 0xf0001919, 0x4362: 0xf0001919, 0x4363: 0xf0001919, - 0x4364: 0xf0001919, 0x4365: 0xf0001919, 0x4366: 0xf0001919, 0x4367: 0xf0001919, - 0x4368: 0xf0001919, 0x4369: 0xf0001919, 0x436a: 0xf0001919, 0x436b: 0xf0001919, - 0x436c: 0xf0001919, 0x436d: 0xf0001717, 0x436e: 0xf0001717, 0x436f: 0xf0001717, - 0x4370: 0xf0001717, 0x4371: 0xf0001717, 0x4372: 0xf0001717, 0x4373: 0xf0001717, - 0x4374: 0xf0001818, 0x4375: 0xf0001818, 0x4376: 0xf0001818, 0x4377: 0xf0001818, - 0x4378: 0xf0001818, 0x4379: 0xf0001818, 0x437a: 0xf0001818, 0x437b: 0xf0001818, - 0x437c: 0xf0001919, 0x437d: 0xf0001a1a, 0x437e: 0x4004c020, 0x437f: 0x4004c220, - // Block 0x10e, offset 0x4380 - 0x4390: 0xe00015d4, 0x4391: 0xe00015e4, 0x4392: 0xe00015e0, 0x4393: 0xe00015e8, - 0x4394: 0xe00015ec, 0x4395: 0xe00015f8, 0x4396: 0xe00015fc, 0x4397: 0xe0001600, - 0x4398: 0xe0001621, 0x4399: 0xe000161d, 0x439a: 0xe0001635, 0x439b: 0xe0001631, - 0x439c: 0xe0001646, 0x439d: 0xe000163e, 0x439e: 0xe0001642, 0x439f: 0xe000165a, - 0x43a0: 0xe0001656, 0x43a1: 0xe0001652, 0x43a2: 0xe0001662, 0x43a3: 0xe000165e, - 0x43a4: 0xe000168a, 0x43a5: 0xe0001686, 0x43a6: 0xe00016b6, 0x43a7: 0xe000166e, - 0x43a8: 0xe000166a, 0x43a9: 0xe0001666, 0x43aa: 0xe000167a, 0x43ab: 0xe0001676, - 0x43ac: 0xe0001682, 0x43ad: 0xe000167e, 0x43ae: 0xe00016ba, 0x43af: 0xe00016c6, - 0x43b0: 0xe00016c2, 0x43b1: 0xe00016ce, 0x43b2: 0xe00016ca, 0x43b3: 0xe00016d2, - 0x43b4: 0xe00016d6, 0x43b5: 0xe00016de, 0x43b6: 0xe00016eb, 0x43b7: 0xe00016e7, - 0x43b8: 0xe00016ef, 0x43b9: 0xe00016f7, 0x43ba: 0xe00016ff, 0x43bb: 0xe00016fb, - 0x43bc: 0xe0001707, 0x43bd: 0xe0001703, 0x43be: 0xe0001717, 0x43bf: 0xe000171b, - // Block 0x10f, offset 0x43c0 - 0x43c0: 0xe0001759, 0x43c1: 0xe0001761, 0x43c2: 0xe000175d, 0x43c3: 0xe0001741, - 0x43c4: 0xe0001745, 0x43c5: 0xe0001769, 0x43c6: 0xe0001765, 0x43c7: 0xe0001771, - 0x43c8: 0xe000176d, 0x43c9: 0xe000178c, 0x43ca: 0xe0001790, 0x43cb: 0xe0001799, - 0x43cc: 0xe000177c, 0x43cd: 0xe0001784, 0x43ce: 0xe000179d, 0x43cf: 0xe00017a1, - 0x43d2: 0xe0001780, 0x43d3: 0xe00017d9, - 0x43d4: 0xe00017dd, 0x43d5: 0xe00017c5, 0x43d6: 0xe00017c9, 0x43d7: 0xe00017b9, - 0x43d8: 0xe00017b5, 0x43d9: 0xe00017bd, 0x43da: 0xe00017d5, 0x43db: 0xe00017d1, - 0x43dc: 0xe00017f8, 0x43dd: 0xe00017f4, 0x43de: 0xe00015d0, 0x43df: 0xe00015dc, - 0x43e0: 0xe00015d8, 0x43e1: 0xe00015f4, 0x43e2: 0xe00015f0, 0x43e3: 0xe0001608, - 0x43e4: 0xe0001604, 0x43e5: 0xe0001629, 0x43e6: 0xe000160c, 0x43e7: 0xe0001625, - 0x43e8: 0xe000164a, 0x43e9: 0xe000168e, 0x43ea: 0xe0001672, 0x43eb: 0xe00016be, - 0x43ec: 0xe0001751, 0x43ed: 0xe0001775, 0x43ee: 0xe00017f0, 0x43ef: 0xe00017ec, - 0x43f0: 0xe00017fc, 0x43f1: 0xe00017a9, 0x43f2: 0xe000171f, 0x43f3: 0xe00017cd, - 0x43f4: 0xe0001713, 0x43f5: 0xe0001755, 0x43f6: 0xe00016f3, 0x43f7: 0xe000172b, - 0x43f8: 0xe00017ad, 0x43f9: 0xe00017a5, 0x43fa: 0xe0001749, 0x43fb: 0xe0001727, - 0x43fc: 0xe000174d, 0x43fd: 0xe00017b1, 0x43fe: 0xe0001610, 0x43ff: 0xe000162d, - // Block 0x110, offset 0x4400 - 0x4400: 0xe0001788, 0x4401: 0xe000170b, 0x4402: 0xe00015cc, 0x4403: 0xe0001723, - 0x4404: 0xe00016da, 0x4405: 0xe00016b2, 0x4406: 0xe000164e, 0x4407: 0xe00017c1, - 0x4430: 0xe00016ae, 0x4431: 0xe000170f, 0x4432: 0xe00015c7, 0x4433: 0xe00015c2, - 0x4434: 0xe0001794, 0x4435: 0xe0001692, 0x4436: 0xe0001639, 0x4437: 0xe00016e2, - 0x4438: 0xe00017e7, 0x4439: 0xe0001697, 0x443a: 0xe000169b, 0x443b: 0xe0001614, - 0x443c: 0x40282e20, 0x443d: 0x40071620, - // Block 0x111, offset 0x4440 - 0x4440: 0xa0000000, 0x4441: 0xa0000000, 0x4442: 0xa0000000, 0x4443: 0xa0000000, - 0x4444: 0xa0000000, 0x4445: 0xa0000000, 0x4446: 0xa0000000, 0x4447: 0xa0000000, - 0x4448: 0xa0000000, 0x4449: 0xa0000000, 0x444a: 0xa0000000, 0x444b: 0xa0000000, - 0x444c: 0xa0000000, 0x444d: 0xa0000000, 0x444e: 0xa0000000, 0x444f: 0xa0000000, - 0x4450: 0x00024096, 0x4451: 0x00025c96, 0x4452: 0x00030496, 0x4453: 0x00026c96, - 0x4454: 0x00026296, 0x4455: 0x0002ba96, 0x4456: 0x0002c496, 0x4457: 0x0004b496, - 0x4458: 0x0004b696, 0x4459: 0xf0001616, - 0x4460: 0xae608202, 0x4461: 0xae600000, 0x4462: 0xae608102, 0x4463: 0xae600000, - 0x4464: 0xae600000, 0x4465: 0xae600000, 0x4466: 0xae600000, - 0x4470: 0xf0001f16, 0x4471: 0x00022c96, 0x4472: 0x00022a96, 0x4473: 0x00021696, - 0x4474: 0x00021696, 0x4475: 0x0003f496, 0x4476: 0x0003f696, 0x4477: 0x0003fc96, - 0x4478: 0x0003fe96, 0x4479: 0x0004b096, 0x447a: 0x0004b296, 0x447b: 0x0004ac96, - 0x447c: 0x0004ae96, 0x447d: 0x0004a096, 0x447e: 0x0004a296, 0x447f: 0x00049c96, - // Block 0x112, offset 0x4480 - 0x4480: 0x00049e96, 0x4481: 0x0004a496, 0x4482: 0x0004a696, 0x4483: 0x0004a896, - 0x4484: 0x0004aa96, 0x4485: 0x40025e20, 0x4486: 0x40026020, 0x4487: 0x0003f896, - 0x4488: 0x0003fa96, 0x4489: 0x00021484, 0x448a: 0x00021484, 0x448b: 0x00021484, - 0x448c: 0x00021484, 0x448d: 0x00021684, 0x448e: 0x00021684, 0x448f: 0x00021684, - 0x4490: 0x0002408f, 0x4491: 0x00025c8f, 0x4492: 0x0002e48f, - 0x4494: 0x0002628f, 0x4495: 0x00026c8f, 0x4496: 0x0002c48f, 0x4497: 0x0002ba8f, - 0x4498: 0x00022c8f, 0x4499: 0x0003f48f, 0x449a: 0x0003f68f, 0x449b: 0x0003fc8f, - 0x449c: 0x0003fe8f, 0x449d: 0x0004b08f, 0x449e: 0x0004b28f, 0x449f: 0x0004ea8f, - 0x44a0: 0x0004e68f, 0x44a1: 0x0004d88f, 0x44a2: 0x0009388f, 0x44a3: 0x00021a8f, - 0x44a4: 0x0009408f, 0x44a5: 0x0009448f, 0x44a6: 0x0009428f, - 0x44a8: 0x0004e48f, 0x44a9: 0x0027de8f, 0x44aa: 0x0004ec8f, 0x44ab: 0x0004d68f, - 0x44b0: 0xa000a21a, 0x44b1: 0xa000a218, 0x44b2: 0xa000a51a, 0x44b3: 0xa0000000, - 0x44b4: 0xa000a91a, 0x44b6: 0xa000ad1a, 0x44b7: 0xa000ad18, - 0x44b8: 0xa000b21a, 0x44b9: 0xa000b218, 0x44ba: 0xa000b61a, 0x44bb: 0xa000b618, - 0x44bc: 0xa000ba1a, 0x44bd: 0xa000ba18, 0x44be: 0xa000bc1a, 0x44bf: 0xa000bc18, - // Block 0x113, offset 0x44c0 - 0x44c0: 0x00391c9a, 0x44c1: 0x00391e9a, 0x44c2: 0x00391e99, 0x44c3: 0x0039209a, - 0x44c4: 0x00392099, 0x44c5: 0x0039269a, 0x44c6: 0x00392699, 0x44c7: 0x0039289a, - 0x44c8: 0x00392899, 0x44c9: 0x0039309a, 0x44ca: 0x00393099, 0x44cb: 0x00393097, - 0x44cc: 0x00393098, 0x44cd: 0x0039389a, 0x44ce: 0x00393899, 0x44cf: 0x00393c9a, - 0x44d0: 0x00393c99, 0x44d1: 0x00393c97, 0x44d2: 0x00393c98, 0x44d3: 0x0039549a, - 0x44d4: 0x00395499, 0x44d5: 0x0039569a, 0x44d6: 0x00395699, 0x44d7: 0x00395697, - 0x44d8: 0x00395698, 0x44d9: 0x0039589a, 0x44da: 0x00395899, 0x44db: 0x00395897, - 0x44dc: 0x00395898, 0x44dd: 0x0039649a, 0x44de: 0x00396499, 0x44df: 0x00396497, - 0x44e0: 0x00396498, 0x44e1: 0x0039729a, 0x44e2: 0x00397299, 0x44e3: 0x00397297, - 0x44e4: 0x00397298, 0x44e5: 0x0039749a, 0x44e6: 0x00397499, 0x44e7: 0x00397497, - 0x44e8: 0x00397498, 0x44e9: 0x0039889a, 0x44ea: 0x00398899, 0x44eb: 0x00398a9a, - 0x44ec: 0x00398a99, 0x44ed: 0x0039a49a, 0x44ee: 0x0039a499, 0x44ef: 0x0039a69a, - 0x44f0: 0x0039a699, 0x44f1: 0x0039c69a, 0x44f2: 0x0039c699, 0x44f3: 0x0039c697, - 0x44f4: 0x0039c698, 0x44f5: 0x0039c89a, 0x44f6: 0x0039c899, 0x44f7: 0x0039c897, - 0x44f8: 0x0039c898, 0x44f9: 0x0039dc9a, 0x44fa: 0x0039dc99, 0x44fb: 0x0039dc97, - 0x44fc: 0x0039dc98, 0x44fd: 0x0039de9a, 0x44fe: 0x0039de99, 0x44ff: 0x0039de97, - // Block 0x114, offset 0x4500 - 0x4500: 0x0039de98, 0x4501: 0x0039e69a, 0x4502: 0x0039e699, 0x4503: 0x0039e697, - 0x4504: 0x0039e698, 0x4505: 0x0039e89a, 0x4506: 0x0039e899, 0x4507: 0x0039e897, - 0x4508: 0x0039e898, 0x4509: 0x0039ee9a, 0x450a: 0x0039ee99, 0x450b: 0x0039ee97, - 0x450c: 0x0039ee98, 0x450d: 0x0039f09a, 0x450e: 0x0039f099, 0x450f: 0x0039f097, - 0x4510: 0x0039f098, 0x4511: 0x0039fc9a, 0x4512: 0x0039fc99, 0x4513: 0x0039fc97, - 0x4514: 0x0039fc98, 0x4515: 0x003a129a, 0x4516: 0x003a1299, 0x4517: 0x003a1297, - 0x4518: 0x003a1298, 0x4519: 0x003a1a9a, 0x451a: 0x003a1a99, 0x451b: 0x003a1a97, - 0x451c: 0x003a1a98, 0x451d: 0x003a409a, 0x451e: 0x003a4099, 0x451f: 0x003a4097, - 0x4520: 0x003a4098, 0x4521: 0x003a4e9a, 0x4522: 0x003a4e99, 0x4523: 0x003a4e97, - 0x4524: 0x003a4e98, 0x4525: 0x003a569a, 0x4526: 0x003a5699, 0x4527: 0x003a5697, - 0x4528: 0x003a5698, 0x4529: 0x003a689a, 0x452a: 0x003a6899, 0x452b: 0x003a6897, - 0x452c: 0x003a6898, 0x452d: 0x003a749a, 0x452e: 0x003a7499, 0x452f: 0x003a8e9a, - 0x4530: 0x003a8e99, 0x4531: 0x003a909a, 0x4532: 0x003a9099, 0x4533: 0x003a9097, - 0x4534: 0x003a9098, 0x4535: 0xe0001732, 0x4536: 0xe000172f, 0x4537: 0xe0001738, - 0x4538: 0xe0001735, 0x4539: 0xe000173e, 0x453a: 0xe000173b, 0x453b: 0xf0001a1a, - 0x453c: 0xf0001919, 0x453f: 0xa0000000, - // Block 0x115, offset 0x4540 - 0x4541: 0x0002ba83, 0x4542: 0x0003e083, 0x4543: 0x0004ea83, - 0x4544: 0x0027de83, 0x4545: 0x0004ec83, 0x4546: 0x0004e683, 0x4547: 0x0003d283, - 0x4548: 0x0003f483, 0x4549: 0x0003f683, 0x454a: 0x0004d883, 0x454b: 0x00093883, - 0x454c: 0x00024083, 0x454d: 0x00021a83, 0x454e: 0x0002e483, 0x454f: 0x0004e283, - 0x4550: 0x0029cc83, 0x4551: 0x0029ce83, 0x4552: 0x0029d083, 0x4553: 0x0029d283, - 0x4554: 0x0029d483, 0x4555: 0x0029d683, 0x4556: 0x0029d883, 0x4557: 0x0029da83, - 0x4558: 0x0029dc83, 0x4559: 0x0029de83, 0x455a: 0x00026c83, 0x455b: 0x00026283, - 0x455c: 0x00094083, 0x455d: 0x00094283, 0x455e: 0x00094483, 0x455f: 0x0002c483, - 0x4560: 0x0004d683, 0x4561: 0x002bde89, 0x4562: 0x002c0a89, 0x4563: 0x002c3a89, - 0x4564: 0x002c6289, 0x4565: 0x002c9889, 0x4566: 0x002d0889, 0x4567: 0x002d2289, - 0x4568: 0x002d6889, 0x4569: 0x002d9a89, 0x456a: 0x002dcc89, 0x456b: 0x002dfe89, - 0x456c: 0x002e2289, 0x456d: 0x002e8289, 0x456e: 0x002e9e89, 0x456f: 0x002ee289, - 0x4570: 0x002f2c89, 0x4571: 0x002f5689, 0x4572: 0x002f7a89, 0x4573: 0x002fe689, - 0x4574: 0x00302c89, 0x4575: 0x00306c89, 0x4576: 0x0030be89, 0x4577: 0x0030e289, - 0x4578: 0x0030f689, 0x4579: 0x00310089, 0x457a: 0x00312a89, 0x457b: 0x0003f883, - 0x457c: 0x0004e483, 0x457d: 0x0003fa83, 0x457e: 0x00062483, 0x457f: 0x00021683, - // Block 0x116, offset 0x4580 - 0x4580: 0x00061e83, 0x4581: 0x002bde83, 0x4582: 0x002c0a83, 0x4583: 0x002c3a83, - 0x4584: 0x002c6283, 0x4585: 0x002c9883, 0x4586: 0x002d0883, 0x4587: 0x002d2283, - 0x4588: 0x002d6883, 0x4589: 0x002d9a83, 0x458a: 0x002dcc83, 0x458b: 0x002dfe83, - 0x458c: 0x002e2283, 0x458d: 0x002e8283, 0x458e: 0x002e9e83, 0x458f: 0x002ee283, - 0x4590: 0x002f2c83, 0x4591: 0x002f5683, 0x4592: 0x002f7a83, 0x4593: 0x002fe683, - 0x4594: 0x00302c83, 0x4595: 0x00306c83, 0x4596: 0x0030be83, 0x4597: 0x0030e283, - 0x4598: 0x0030f683, 0x4599: 0x00310083, 0x459a: 0x00312a83, 0x459b: 0x0003fc83, - 0x459c: 0x00094883, 0x459d: 0x0003fe83, 0x459e: 0x00094c83, 0x459f: 0x00041883, - 0x45a0: 0x00041a83, 0x45a1: 0x00030492, 0x45a2: 0x0004a492, 0x45a3: 0x0004a692, - 0x45a4: 0x00025c92, 0x45a5: 0x00023e92, 0x45a6: 0x0065d692, 0x45a7: 0x00657690, - 0x45a8: 0x00657890, 0x45a9: 0x00657a90, 0x45aa: 0x00657e90, 0x45ab: 0x00658090, - 0x45ac: 0x0065be90, 0x45ad: 0x0065c090, 0x45ae: 0x0065c490, 0x45af: 0x00659a90, - 0x45b0: 0x0027d692, 0x45b1: 0x00657692, 0x45b2: 0x00657892, 0x45b3: 0x00657a92, - 0x45b4: 0x00657e92, 0x45b5: 0x00658092, 0x45b6: 0x00658292, 0x45b7: 0x00658492, - 0x45b8: 0x00658692, 0x45b9: 0x00658892, 0x45ba: 0x00658a92, 0x45bb: 0x00658c92, - 0x45bc: 0x00658e92, 0x45bd: 0x00659092, 0x45be: 0x00659292, 0x45bf: 0x00659492, - // Block 0x117, offset 0x45c0 - 0x45c0: 0x00659692, 0x45c1: 0x00659892, 0x45c2: 0x00659a92, 0x45c3: 0x00659c92, - 0x45c4: 0x00659e92, 0x45c5: 0x0065a092, 0x45c6: 0x0065a292, 0x45c7: 0x0065a492, - 0x45c8: 0x0065a692, 0x45c9: 0x0065a892, 0x45ca: 0x0065aa92, 0x45cb: 0x0065ac92, - 0x45cc: 0x0065ae92, 0x45cd: 0x0065b092, 0x45ce: 0x0065b292, 0x45cf: 0x0065b492, - 0x45d0: 0x0065b692, 0x45d1: 0x0065b892, 0x45d2: 0x0065ba92, 0x45d3: 0x0065bc92, - 0x45d4: 0x0065be92, 0x45d5: 0x0065c092, 0x45d6: 0x0065c492, 0x45d7: 0x0065c692, - 0x45d8: 0x0065c892, 0x45d9: 0x0065ca92, 0x45da: 0x0065cc92, 0x45db: 0x0065ce92, - 0x45dc: 0x0065d092, 0x45dd: 0x0065d892, 0x45de: 0xa0012812, 0x45df: 0xa0012912, - 0x45e0: 0x0063a692, 0x45e1: 0x0062ac92, 0x45e2: 0x0062ae92, 0x45e3: 0x00646892, - 0x45e4: 0x0062b092, 0x45e5: 0x00646c92, 0x45e6: 0x00646e92, 0x45e7: 0x0062b292, - 0x45e8: 0x0062b492, 0x45e9: 0x0062b692, 0x45ea: 0x00647492, 0x45eb: 0x00647692, - 0x45ec: 0x00647892, 0x45ed: 0x00647a92, 0x45ee: 0x00647c92, 0x45ef: 0x00647e92, - 0x45f0: 0x0062e092, 0x45f1: 0x0062b892, 0x45f2: 0x0062ba92, 0x45f3: 0x0062bc92, - 0x45f4: 0x0062ee92, 0x45f5: 0x0062be92, 0x45f6: 0x0062c092, 0x45f7: 0x0062c292, - 0x45f8: 0x0062c492, 0x45f9: 0x0062c692, 0x45fa: 0x0062c892, 0x45fb: 0x0062ca92, - 0x45fc: 0x0062cc92, 0x45fd: 0x0062ce92, 0x45fe: 0x0062d092, - // Block 0x118, offset 0x4600 - 0x4602: 0x0063a892, 0x4603: 0x0063aa92, - 0x4604: 0x0063ac92, 0x4605: 0x0063ae92, 0x4606: 0x0063b092, 0x4607: 0x0063b292, - 0x460a: 0x0063b492, 0x460b: 0x0063b692, - 0x460c: 0x0063b892, 0x460d: 0x0063ba92, 0x460e: 0x0063bc92, 0x460f: 0x0063be92, - 0x4612: 0x0063c092, 0x4613: 0x0063c292, - 0x4614: 0x0063c492, 0x4615: 0x0063c692, 0x4616: 0x0063c892, 0x4617: 0x0063ca92, - 0x461a: 0x0063cc92, 0x461b: 0x0063ce92, - 0x461c: 0x0063d092, - 0x4620: 0x0027dc83, 0x4621: 0x0027e083, 0x4622: 0x00094683, 0x4623: 0x00062683, - 0x4624: 0x00094a83, 0x4625: 0x0027e283, 0x4626: 0x00280883, - 0x4628: 0x000d3292, 0x4629: 0x00084492, 0x462a: 0x00084892, 0x462b: 0x00084692, - 0x462c: 0x00084a92, 0x462d: 0x000e6e92, 0x462e: 0x000ec492, - 0x4639: 0xa0000000, 0x463a: 0xa0000000, 0x463b: 0xa0000000, - 0x463c: 0x4027ae20, 0x463d: 0x4027b020, 0x463e: 0x00000285, 0x463f: 0x2bfffe85, - // Block 0x119, offset 0x4640 - 0x4640: 0x40731a20, 0x4641: 0x40731c20, 0x4642: 0x40731e20, 0x4643: 0x40732020, - 0x4644: 0x40732220, 0x4645: 0x40732420, 0x4646: 0x40732620, 0x4647: 0x40732820, - 0x4648: 0x40732a20, 0x4649: 0x40732c20, 0x464a: 0x40732e20, 0x464b: 0x40733020, - 0x464d: 0x40733220, 0x464e: 0x40733420, 0x464f: 0x40733620, - 0x4650: 0x40733820, 0x4651: 0x40733a20, 0x4652: 0x40733c20, 0x4653: 0x40733e20, - 0x4654: 0x40734020, 0x4655: 0x40734220, 0x4656: 0x40734420, 0x4657: 0x40734620, - 0x4658: 0x40734820, 0x4659: 0x40734a20, 0x465a: 0x40734c20, 0x465b: 0x40734e20, - 0x465c: 0x40735020, 0x465d: 0x40735220, 0x465e: 0x40735420, 0x465f: 0x40735620, - 0x4660: 0x40735820, 0x4661: 0x40735a20, 0x4662: 0x40735c20, 0x4663: 0x40735e20, - 0x4664: 0x40736020, 0x4665: 0x40736220, 0x4666: 0x40736420, - 0x4668: 0x40736620, 0x4669: 0x40736820, 0x466a: 0x40736a20, 0x466b: 0x40736c20, - 0x466c: 0x40736e20, 0x466d: 0x40737020, 0x466e: 0x40737220, 0x466f: 0x40737420, - 0x4670: 0x40737620, 0x4671: 0x40737820, 0x4672: 0x40737a20, 0x4673: 0x40737c20, - 0x4674: 0x40737e20, 0x4675: 0x40738020, 0x4676: 0x40738220, 0x4677: 0x40738420, - 0x4678: 0x40738620, 0x4679: 0x40738820, 0x467a: 0x40738a20, - 0x467c: 0x40738c20, 0x467d: 0x40738e20, 0x467f: 0x40739020, - // Block 0x11a, offset 0x4680 - 0x4680: 0x40739220, 0x4681: 0x40739420, 0x4682: 0x40739620, 0x4683: 0x40739820, - 0x4684: 0x40739a20, 0x4685: 0x40739c20, 0x4686: 0x40739e20, 0x4687: 0x4073a020, - 0x4688: 0x4073a220, 0x4689: 0x4073a420, 0x468a: 0x4073a620, 0x468b: 0x4073a820, - 0x468c: 0x4073aa20, 0x468d: 0x4073ac20, - 0x4690: 0x4073ae20, 0x4691: 0x4073b020, 0x4692: 0x4073b220, 0x4693: 0x4073b420, - 0x4694: 0x4073b620, 0x4695: 0x4073b820, 0x4696: 0x4073ba20, 0x4697: 0x4073bc20, - 0x4698: 0x4073be20, 0x4699: 0x4073c020, 0x469a: 0x4073c220, 0x469b: 0x4073c420, - 0x469c: 0x4073c620, 0x469d: 0x4073c820, - // Block 0x11b, offset 0x46c0 - 0x46c0: 0x4073ca20, 0x46c1: 0x4073cc20, 0x46c2: 0x4073ce20, 0x46c3: 0x4073d020, - 0x46c4: 0x4073d220, 0x46c5: 0x4073d420, 0x46c6: 0x4073d620, 0x46c7: 0x4073d820, - 0x46c8: 0x4073da20, 0x46c9: 0x4073dc20, 0x46ca: 0x4073de20, 0x46cb: 0x4073e020, - 0x46cc: 0x4073e220, 0x46cd: 0x4073e420, 0x46ce: 0x4073e620, 0x46cf: 0x4073e820, - 0x46d0: 0x4073ea20, 0x46d1: 0x4073ec20, 0x46d2: 0x4073ee20, 0x46d3: 0x4073f020, - 0x46d4: 0x4073f220, 0x46d5: 0x4073f420, 0x46d6: 0x4073f620, 0x46d7: 0x4073f820, - 0x46d8: 0x4073fa20, 0x46d9: 0x4073fc20, 0x46da: 0x4073fe20, 0x46db: 0x40740020, - 0x46dc: 0x40740220, 0x46dd: 0x40740420, 0x46de: 0x40740620, 0x46df: 0x40740820, - 0x46e0: 0x40740a20, 0x46e1: 0x40740c20, 0x46e2: 0x40740e20, 0x46e3: 0x40741020, - 0x46e4: 0x40741220, 0x46e5: 0x40741420, 0x46e6: 0x40741620, 0x46e7: 0x40741820, - 0x46e8: 0x40741a20, 0x46e9: 0x40741c20, 0x46ea: 0x40741e20, 0x46eb: 0x40742020, - 0x46ec: 0x40742220, 0x46ed: 0x40742420, 0x46ee: 0x40742620, 0x46ef: 0x40742820, - 0x46f0: 0x40742a20, 0x46f1: 0x40742c20, 0x46f2: 0x40742e20, 0x46f3: 0x40743020, - 0x46f4: 0x40743220, 0x46f5: 0x40743420, 0x46f6: 0x40743620, 0x46f7: 0x40743820, - 0x46f8: 0x40743a20, 0x46f9: 0x40743c20, 0x46fa: 0x40743e20, 0x46fb: 0x40744020, - 0x46fc: 0x40744220, 0x46fd: 0x40744420, 0x46fe: 0x40744620, 0x46ff: 0x40744820, - // Block 0x11c, offset 0x4700 - 0x4700: 0x40744a20, 0x4701: 0x40744c20, 0x4702: 0x40744e20, 0x4703: 0x40745020, - 0x4704: 0x40745220, 0x4705: 0x40745420, 0x4706: 0x40745620, 0x4707: 0x40745820, - 0x4708: 0x40745a20, 0x4709: 0x40745c20, 0x470a: 0x40745e20, 0x470b: 0x40746020, - 0x470c: 0x40746220, 0x470d: 0x40746420, 0x470e: 0x40746620, 0x470f: 0x40746820, - 0x4710: 0x40746a20, 0x4711: 0x40746c20, 0x4712: 0x40746e20, 0x4713: 0x40747020, - 0x4714: 0x40747220, 0x4715: 0x40747420, 0x4716: 0x40747620, 0x4717: 0x40747820, - 0x4718: 0x40747a20, 0x4719: 0x40747c20, 0x471a: 0x40747e20, 0x471b: 0x40748020, - 0x471c: 0x40748220, 0x471d: 0x40748420, 0x471e: 0x40748620, 0x471f: 0x40748820, - 0x4720: 0x40748a20, 0x4721: 0x40748c20, 0x4722: 0x40748e20, 0x4723: 0x40749020, - 0x4724: 0x40749220, 0x4725: 0x40749420, 0x4726: 0x40749620, 0x4727: 0x40749820, - 0x4728: 0x40749a20, 0x4729: 0x40749c20, 0x472a: 0x40749e20, 0x472b: 0x4074a020, - 0x472c: 0x4074a220, 0x472d: 0x4074a420, 0x472e: 0x4074a620, 0x472f: 0x4074a820, - 0x4730: 0x4074aa20, 0x4731: 0x4074ac20, 0x4732: 0x4074ae20, 0x4733: 0x4074b020, - 0x4734: 0x4074b220, 0x4735: 0x4074b420, 0x4736: 0x4074b620, 0x4737: 0x4074b820, - 0x4738: 0x4074ba20, 0x4739: 0x4074bc20, 0x473a: 0x4074be20, - // Block 0x11d, offset 0x4740 - 0x4740: 0x4003be20, 0x4741: 0x4003c020, 0x4742: 0x4003c220, - 0x4747: 0xe000026a, - 0x4748: 0xe0000382, 0x4749: 0xe000045c, 0x474a: 0xe0000531, 0x474b: 0xe00005fb, - 0x474c: 0xe00006c6, 0x474d: 0xe000076e, 0x474e: 0xe000081a, 0x474f: 0xe00008bf, - 0x4750: 0x4028ba20, 0x4751: 0x4028bc20, 0x4752: 0x4028be20, 0x4753: 0x4028c020, - 0x4754: 0x4028c220, 0x4755: 0x4028c420, 0x4756: 0x4028c620, 0x4757: 0x4028c820, - 0x4758: 0x4028ca20, 0x4759: 0x4028cc20, 0x475a: 0x4028ce20, 0x475b: 0x4028d020, - 0x475c: 0x4028d220, 0x475d: 0x4028d420, 0x475e: 0x4028d620, 0x475f: 0x4028d820, - 0x4760: 0x4028da20, 0x4761: 0x4028dc20, 0x4762: 0x4028de20, 0x4763: 0x4028e020, - 0x4764: 0x4028e220, 0x4765: 0x4028e420, 0x4766: 0x4028e620, 0x4767: 0x4028e820, - 0x4768: 0x4028ea20, 0x4769: 0x4028ec20, 0x476a: 0x4028ee20, 0x476b: 0x4028f020, - 0x476c: 0x4028f220, 0x476d: 0x4028f420, 0x476e: 0x4028f620, 0x476f: 0x4028f820, - 0x4770: 0x4028fa20, 0x4771: 0x4028fc20, 0x4772: 0x4028fe20, 0x4773: 0x40290020, - 0x4777: 0x401afe20, - 0x4778: 0x401b0020, 0x4779: 0x401b0220, 0x477a: 0x401b0420, 0x477b: 0x401b0620, - 0x477c: 0x401b0820, 0x477d: 0x401b0a20, 0x477e: 0x401b0c20, 0x477f: 0x401b0e20, - // Block 0x11e, offset 0x4780 - 0x4780: 0x40290220, 0x4781: 0x40290420, 0x4782: 0xe000026d, 0x4783: 0xe00005fe, - 0x4784: 0x40290620, 0x4785: 0x40290820, 0x4786: 0x40290a20, 0x4787: 0x40290c20, - 0x4788: 0xe0000601, 0x4789: 0x40290e20, 0x478a: 0x40291020, 0x478b: 0x40291220, - 0x478c: 0x40291420, 0x478d: 0x40291620, 0x478e: 0x40291820, 0x478f: 0xe0000604, - 0x4790: 0x40291a20, 0x4791: 0x40291c20, 0x4792: 0x40291e20, 0x4793: 0x40292020, - 0x4794: 0x40292220, 0x4795: 0x40292420, 0x4796: 0x40292620, 0x4797: 0x40292820, - 0x4798: 0xe0000270, 0x4799: 0xe0000273, 0x479a: 0xe0000276, 0x479b: 0xe0000385, - 0x479c: 0xe0000388, 0x479d: 0xe000038b, 0x479e: 0xe000038e, 0x479f: 0xe0000607, - 0x47a0: 0x40292a20, 0x47a1: 0x40292c20, 0x47a2: 0x40292e20, 0x47a3: 0x40293020, - 0x47a4: 0x40293220, 0x47a5: 0x40293420, 0x47a6: 0x40293620, 0x47a7: 0x40293820, - 0x47a8: 0x40293a20, 0x47a9: 0x40293c20, 0x47aa: 0x40293e20, 0x47ab: 0x40294020, - 0x47ac: 0x40294220, 0x47ad: 0x40294420, 0x47ae: 0x40294620, 0x47af: 0x40294820, - 0x47b0: 0x40294a20, 0x47b1: 0x40294c20, 0x47b2: 0x40294e20, 0x47b3: 0xe000060a, - 0x47b4: 0x40295020, 0x47b5: 0x40295220, 0x47b6: 0x40295420, 0x47b7: 0x40295620, - 0x47b8: 0x40295820, 0x47b9: 0x401b1020, 0x47ba: 0x401b1220, 0x47bb: 0x401b1420, - 0x47bc: 0x401b1620, 0x47bd: 0x401b1820, 0x47be: 0x401b1a20, 0x47bf: 0x401b1c20, - // Block 0x11f, offset 0x47c0 - 0x47c0: 0x401b1e20, 0x47c1: 0x401b2020, 0x47c2: 0x401b2220, 0x47c3: 0x401b2420, - 0x47c4: 0x401b2620, 0x47c5: 0x401b2820, 0x47c6: 0x401b2a20, 0x47c7: 0x401b2c20, - 0x47c8: 0x401b2e20, 0x47c9: 0x401b3020, 0x47ca: 0xe00001d6, - 0x47d0: 0x401b3220, 0x47d1: 0x401b3420, 0x47d2: 0x401b3620, 0x47d3: 0x401b3820, - 0x47d4: 0x401b3a20, 0x47d5: 0x401b3c20, 0x47d6: 0x401b3e20, 0x47d7: 0x401b4020, - 0x47d8: 0x401b4220, 0x47d9: 0x401b4420, 0x47da: 0x401b4620, 0x47db: 0x401b4820, - // Block 0x120, offset 0x4800 - 0x4810: 0x401b4a20, 0x4811: 0x401b4c20, 0x4812: 0x401b4e20, 0x4813: 0x401b5020, - 0x4814: 0x401b5220, 0x4815: 0x401b5420, 0x4816: 0x401b5620, 0x4817: 0x401b5820, - 0x4818: 0x401b5a20, 0x4819: 0x401b5c20, 0x481a: 0x401b5e20, 0x481b: 0x401b6020, - 0x481c: 0x401b6220, 0x481d: 0x401b6420, 0x481e: 0x401b6620, 0x481f: 0x401b6820, - 0x4820: 0x401b6a20, 0x4821: 0x401b6c20, 0x4822: 0x401b6e20, 0x4823: 0x401b7020, - 0x4824: 0x401b7220, 0x4825: 0x401b7420, 0x4826: 0x401b7620, 0x4827: 0x401b7820, - 0x4828: 0x401b7a20, 0x4829: 0x401b7c20, 0x482a: 0x401b7e20, 0x482b: 0x401b8020, - 0x482c: 0x401b8220, 0x482d: 0x401b8420, 0x482e: 0x401b8620, 0x482f: 0x401b8820, - 0x4830: 0x401b8a20, 0x4831: 0x401b8c20, 0x4832: 0x401b8e20, 0x4833: 0x401b9020, - 0x4834: 0x401b9220, 0x4835: 0x401b9420, 0x4836: 0x401b9620, 0x4837: 0x401b9820, - 0x4838: 0x401b9a20, 0x4839: 0x401b9c20, 0x483a: 0x401b9e20, 0x483b: 0x401ba020, - 0x483c: 0x401ba220, 0x483d: 0xadc13802, - // Block 0x121, offset 0x4840 - 0x4840: 0x4070b820, 0x4841: 0x4070ba20, 0x4842: 0x4070bc20, 0x4843: 0x4070be20, - 0x4844: 0x4070c020, 0x4845: 0x4070c220, 0x4846: 0x4070c420, 0x4847: 0x4070c620, - 0x4848: 0x4070c820, 0x4849: 0x4070ca20, 0x484a: 0x4070cc20, 0x484b: 0x4070ce20, - 0x484c: 0x4070d020, 0x484d: 0x4070d220, 0x484e: 0x4070d420, 0x484f: 0x4070d620, - 0x4850: 0x4070d820, 0x4851: 0x4070da20, 0x4852: 0x4070dc20, 0x4853: 0x4070de20, - 0x4854: 0x4070e020, 0x4855: 0x4070e220, 0x4856: 0x4070e420, 0x4857: 0x4070e620, - 0x4858: 0x4070e820, 0x4859: 0x4070ea20, 0x485a: 0x4070ec20, 0x485b: 0x4070ee20, - 0x485c: 0x4070f020, - 0x4860: 0x4070f220, 0x4861: 0x4070f420, 0x4862: 0x4070f620, 0x4863: 0x4070f820, - 0x4864: 0x4070fa20, 0x4865: 0x4070fc20, 0x4866: 0x4070fe20, 0x4867: 0x40710020, - 0x4868: 0x40710220, 0x4869: 0x40710420, 0x486a: 0x40710620, 0x486b: 0x40710820, - 0x486c: 0x40710a20, 0x486d: 0x40710c20, 0x486e: 0x40710e20, 0x486f: 0x40711020, - 0x4870: 0x40711220, 0x4871: 0x40711420, 0x4872: 0x40711620, 0x4873: 0x40711820, - 0x4874: 0x40711a20, 0x4875: 0x40711c20, 0x4876: 0x40711e20, 0x4877: 0x40712020, - 0x4878: 0x40712220, 0x4879: 0x40712420, 0x487a: 0x40712620, 0x487b: 0x40712820, - 0x487c: 0x40712a20, 0x487d: 0x40712c20, 0x487e: 0x40712e20, 0x487f: 0x40713020, - // Block 0x122, offset 0x4880 - 0x4880: 0x40713220, 0x4881: 0x40713420, 0x4882: 0x40713620, 0x4883: 0x40713820, - 0x4884: 0x40713a20, 0x4885: 0x40713c20, 0x4886: 0x40713e20, 0x4887: 0x40714020, - 0x4888: 0x40714220, 0x4889: 0x40714420, 0x488a: 0x40714620, 0x488b: 0x40714820, - 0x488c: 0x40714a20, 0x488d: 0x40714c20, 0x488e: 0x40714e20, 0x488f: 0x40715020, - 0x4890: 0x40715220, - // Block 0x123, offset 0x48c0 - 0x48c0: 0x40718820, 0x48c1: 0x40718a20, 0x48c2: 0x40718c20, 0x48c3: 0x40718e20, - 0x48c4: 0x40719020, 0x48c5: 0x40719220, 0x48c6: 0x40719420, 0x48c7: 0x40719620, - 0x48c8: 0x40719820, 0x48c9: 0x40719a20, 0x48ca: 0x40719c20, 0x48cb: 0x40719e20, - 0x48cc: 0x4071a020, 0x48cd: 0x4071a220, 0x48ce: 0x4071a420, 0x48cf: 0x4071a620, - 0x48d0: 0x4071a820, 0x48d1: 0x4071aa20, 0x48d2: 0x4071ac20, 0x48d3: 0x4071ae20, - 0x48d4: 0x4071b020, 0x48d5: 0x4071b220, 0x48d6: 0x4071b420, 0x48d7: 0x4071b620, - 0x48d8: 0x4071b820, 0x48d9: 0x4071ba20, 0x48da: 0x4071bc20, 0x48db: 0x4071be20, - 0x48dc: 0x4071c020, 0x48dd: 0x4071c220, 0x48de: 0x4071c420, - 0x48e0: 0xe0000279, 0x48e1: 0xe000060d, 0x48e2: 0x4028b620, 0x48e3: 0x4028b820, - 0x48f0: 0x4071c620, 0x48f1: 0x4071c820, 0x48f2: 0x4071ca20, 0x48f3: 0x4071cc20, - 0x48f4: 0x4071ce20, 0x48f5: 0x4071d020, 0x48f6: 0x4071d220, 0x48f7: 0x4071d420, - 0x48f8: 0x4071d620, 0x48f9: 0x4071d820, 0x48fa: 0x4071da20, 0x48fb: 0x4071dc20, - 0x48fc: 0x4071de20, 0x48fd: 0x4071e020, 0x48fe: 0x4071e220, 0x48ff: 0x4071e420, - // Block 0x124, offset 0x4900 - 0x4900: 0x4071e620, 0x4901: 0x4071e820, 0x4902: 0x4071ea20, 0x4903: 0x4071ec20, - 0x4904: 0x4071ee20, 0x4905: 0x4071f020, 0x4906: 0x4071f220, 0x4907: 0x4071f420, - 0x4908: 0x4071f620, 0x4909: 0x4071f820, 0x490a: 0x4071fa20, - // Block 0x125, offset 0x4940 - 0x4940: 0x40765020, 0x4941: 0x40765220, 0x4942: 0x40765420, 0x4943: 0x40765620, - 0x4944: 0x40765820, 0x4945: 0x40765a20, 0x4946: 0x40765c20, 0x4947: 0x40765e20, - 0x4948: 0x40766020, 0x4949: 0x40766220, 0x494a: 0x40766420, 0x494b: 0x40766620, - 0x494c: 0x40766820, 0x494d: 0x40766a20, 0x494e: 0x40766c20, 0x494f: 0x40766e20, - 0x4950: 0x40767020, 0x4951: 0x40767220, 0x4952: 0x40767420, 0x4953: 0x40767620, - 0x4954: 0x40767820, 0x4955: 0x40767a20, 0x4956: 0x40767c20, 0x4957: 0x40767e20, - 0x4958: 0x40768020, 0x4959: 0x40768220, 0x495a: 0x40768420, 0x495b: 0x40768620, - 0x495c: 0x40768820, 0x495d: 0x40768a20, 0x495f: 0x4003c420, - 0x4960: 0x40768c20, 0x4961: 0x40768e20, 0x4962: 0x40769020, 0x4963: 0x40769220, - 0x4964: 0x40769420, 0x4965: 0x40769620, 0x4966: 0x40769820, 0x4967: 0x40769a20, - 0x4968: 0x40769c20, 0x4969: 0x40769e20, 0x496a: 0x4076a020, 0x496b: 0x4076a220, - 0x496c: 0x4076a420, 0x496d: 0x4076a620, 0x496e: 0x4076a820, 0x496f: 0x4076aa20, - 0x4970: 0x4076ac20, 0x4971: 0x4076ae20, 0x4972: 0x4076b020, 0x4973: 0x4076b220, - 0x4974: 0x4076b420, 0x4975: 0x4076b620, 0x4976: 0x4076b820, 0x4977: 0x4076ba20, - 0x4978: 0x4076bc20, 0x4979: 0x4076be20, 0x497a: 0x4076c020, 0x497b: 0x4076c220, - 0x497c: 0x4076c420, 0x497d: 0x4076c620, 0x497e: 0x4076c820, 0x497f: 0x4076ca20, - // Block 0x126, offset 0x4980 - 0x4980: 0x4076cc20, 0x4981: 0x4076ce20, 0x4982: 0x4076d020, 0x4983: 0x4076d220, - 0x4988: 0x4076d420, 0x4989: 0x4076d620, 0x498a: 0x4076d820, 0x498b: 0x4076da20, - 0x498c: 0x4076dc20, 0x498d: 0x4076de20, 0x498e: 0x4076e020, 0x498f: 0x4076e220, - 0x4990: 0x4003c620, 0x4991: 0xe000027c, 0x4992: 0xe0000391, 0x4993: 0x40295a20, - 0x4994: 0x40295c20, 0x4995: 0x40295e20, - // Block 0x127, offset 0x49c0 - 0x49c0: 0x0071fc88, 0x49c1: 0x0071fe88, 0x49c2: 0x00720088, 0x49c3: 0x00720288, - 0x49c4: 0x00720488, 0x49c5: 0x00720688, 0x49c6: 0x00720888, 0x49c7: 0x00720a88, - 0x49c8: 0x00720c88, 0x49c9: 0x00720e88, 0x49ca: 0x00721088, 0x49cb: 0x00721288, - 0x49cc: 0x00721488, 0x49cd: 0x00721688, 0x49ce: 0x00721888, 0x49cf: 0x00721a88, - 0x49d0: 0x00721c88, 0x49d1: 0x00721e88, 0x49d2: 0x00722088, 0x49d3: 0x00722288, - 0x49d4: 0x00722488, 0x49d5: 0x00722688, 0x49d6: 0x00722888, 0x49d7: 0x00722a88, - 0x49d8: 0x00722c88, 0x49d9: 0x00722e88, 0x49da: 0x00723088, 0x49db: 0x00723288, - 0x49dc: 0x00723488, 0x49dd: 0x00723688, 0x49de: 0x00723888, 0x49df: 0x00723a88, - 0x49e0: 0x00723c88, 0x49e1: 0x00723e88, 0x49e2: 0x00724088, 0x49e3: 0x00724288, - 0x49e4: 0x00724488, 0x49e5: 0x00724688, 0x49e6: 0x00724888, 0x49e7: 0x00724a88, - 0x49e8: 0x4071fc20, 0x49e9: 0x4071fe20, 0x49ea: 0x40720020, 0x49eb: 0x40720220, - 0x49ec: 0x40720420, 0x49ed: 0x40720620, 0x49ee: 0x40720820, 0x49ef: 0x40720a20, - 0x49f0: 0x40720c20, 0x49f1: 0x40720e20, 0x49f2: 0x40721020, 0x49f3: 0x40721220, - 0x49f4: 0x40721420, 0x49f5: 0x40721620, 0x49f6: 0x40721820, 0x49f7: 0x40721a20, - 0x49f8: 0x40721c20, 0x49f9: 0x40721e20, 0x49fa: 0x40722020, 0x49fb: 0x40722220, - 0x49fc: 0x40722420, 0x49fd: 0x40722620, 0x49fe: 0x40722820, 0x49ff: 0x40722a20, - // Block 0x128, offset 0x4a00 - 0x4a00: 0x40722c20, 0x4a01: 0x40722e20, 0x4a02: 0x40723020, 0x4a03: 0x40723220, - 0x4a04: 0x40723420, 0x4a05: 0x40723620, 0x4a06: 0x40723820, 0x4a07: 0x40723a20, - 0x4a08: 0x40723c20, 0x4a09: 0x40723e20, 0x4a0a: 0x40724020, 0x4a0b: 0x40724220, - 0x4a0c: 0x40724420, 0x4a0d: 0x40724620, 0x4a0e: 0x40724820, 0x4a0f: 0x40724a20, - 0x4a10: 0x40724c20, 0x4a11: 0x40724e20, 0x4a12: 0x40725020, 0x4a13: 0x40725220, - 0x4a14: 0x40725420, 0x4a15: 0x40725620, 0x4a16: 0x40725820, 0x4a17: 0x40725a20, - 0x4a18: 0x40725c20, 0x4a19: 0x40725e20, 0x4a1a: 0x40726020, 0x4a1b: 0x40726220, - 0x4a1c: 0x40726420, 0x4a1d: 0x40726620, 0x4a1e: 0x40726820, 0x4a1f: 0x40726a20, - 0x4a20: 0x40726c20, 0x4a21: 0x40726e20, 0x4a22: 0x40727020, 0x4a23: 0x40727220, - 0x4a24: 0x40727420, 0x4a25: 0x40727620, 0x4a26: 0x40727820, 0x4a27: 0x40727a20, - 0x4a28: 0x40727c20, 0x4a29: 0x40727e20, 0x4a2a: 0x40728020, 0x4a2b: 0x40728220, - 0x4a2c: 0x40728420, 0x4a2d: 0x40728620, 0x4a2e: 0x40728820, 0x4a2f: 0x40728a20, - 0x4a30: 0x40728c20, 0x4a31: 0x40728e20, 0x4a32: 0x40729020, 0x4a33: 0x40729220, - 0x4a34: 0x40729420, 0x4a35: 0x40729620, 0x4a36: 0x40729820, 0x4a37: 0x40729a20, - 0x4a38: 0x40729c20, 0x4a39: 0x40729e20, 0x4a3a: 0x4072a020, 0x4a3b: 0x4072a220, - 0x4a3c: 0x4072a420, 0x4a3d: 0x4072a620, 0x4a3e: 0x4072a820, 0x4a3f: 0x4072aa20, - // Block 0x129, offset 0x4a40 - 0x4a40: 0x4072ac20, 0x4a41: 0x4072ae20, 0x4a42: 0x4072b020, 0x4a43: 0x4072b220, - 0x4a44: 0x4072b420, 0x4a45: 0x4072b620, 0x4a46: 0x4072b820, 0x4a47: 0x4072ba20, - 0x4a48: 0x4072bc20, 0x4a49: 0x4072be20, 0x4a4a: 0x4072c020, 0x4a4b: 0x4072c220, - 0x4a4c: 0x4072c420, 0x4a4d: 0x4072c620, 0x4a4e: 0x4072c820, 0x4a4f: 0x4072ca20, - 0x4a50: 0x4072cc20, 0x4a51: 0x4072ce20, 0x4a52: 0x4072d020, 0x4a53: 0x4072d220, - 0x4a54: 0x4072d420, 0x4a55: 0x4072d620, 0x4a56: 0x4072d820, 0x4a57: 0x4072da20, - 0x4a58: 0x4072dc20, 0x4a59: 0x4072de20, 0x4a5a: 0x4072e020, 0x4a5b: 0x4072e220, - 0x4a5c: 0x4072e420, 0x4a5d: 0x4072e620, - 0x4a60: 0xe0000167, 0x4a61: 0xe00001f5, 0x4a62: 0xe0000310, 0x4a63: 0xe00003ea, - 0x4a64: 0xe00004c5, 0x4a65: 0xe000058f, 0x4a66: 0xe000065a, 0x4a67: 0xe0000702, - 0x4a68: 0xe00007ae, 0x4a69: 0xe0000853, - // Block 0x12a, offset 0x4a80 - 0x4a80: 0x4074c020, 0x4a81: 0x4074c220, 0x4a82: 0x4074c420, 0x4a83: 0x4074c620, - 0x4a84: 0x4074c820, 0x4a85: 0x4074ca20, - 0x4a88: 0x4074cc20, 0x4a8a: 0x4074ce20, 0x4a8b: 0x4074d020, - 0x4a8c: 0x4074d220, 0x4a8d: 0x4074d420, 0x4a8e: 0x4074d620, 0x4a8f: 0x4074d820, - 0x4a90: 0x4074da20, 0x4a91: 0x4074dc20, 0x4a92: 0x4074de20, 0x4a93: 0x4074e020, - 0x4a94: 0x4074e220, 0x4a95: 0x4074e420, 0x4a96: 0x4074e620, 0x4a97: 0x4074e820, - 0x4a98: 0x4074ea20, 0x4a99: 0x4074ec20, 0x4a9a: 0x4074ee20, 0x4a9b: 0x4074f020, - 0x4a9c: 0x4074f220, 0x4a9d: 0x4074f420, 0x4a9e: 0x4074f620, 0x4a9f: 0x4074f820, - 0x4aa0: 0x4074fa20, 0x4aa1: 0x4074fc20, 0x4aa2: 0x4074fe20, 0x4aa3: 0x40750020, - 0x4aa4: 0x40750220, 0x4aa5: 0x40750420, 0x4aa6: 0x40750620, 0x4aa7: 0x40750820, - 0x4aa8: 0x40750a20, 0x4aa9: 0x40750c20, 0x4aaa: 0x40750e20, 0x4aab: 0x40751020, - 0x4aac: 0x40751220, 0x4aad: 0x40751420, 0x4aae: 0x40751620, 0x4aaf: 0x40751820, - 0x4ab0: 0x40751a20, 0x4ab1: 0x40751c20, 0x4ab2: 0x40751e20, 0x4ab3: 0x40752020, - 0x4ab4: 0x40752220, 0x4ab5: 0x40752420, 0x4ab7: 0x40752620, - 0x4ab8: 0x40752820, - 0x4abc: 0x40752a20, 0x4abf: 0x40752c20, - // Block 0x12b, offset 0x4ac0 - 0x4ac0: 0x4075d220, 0x4ac1: 0x4075d420, 0x4ac2: 0x4075d620, 0x4ac3: 0x4075d820, - 0x4ac4: 0x4075da20, 0x4ac5: 0x4075dc20, 0x4ac6: 0x4075de20, 0x4ac7: 0x4075e020, - 0x4ac8: 0x4075e220, 0x4ac9: 0x4075e420, 0x4aca: 0x4075e620, 0x4acb: 0x4075e820, - 0x4acc: 0x4075ea20, 0x4acd: 0x4075ec20, 0x4ace: 0x4075ee20, 0x4acf: 0x4075f020, - 0x4ad0: 0x4075f220, 0x4ad1: 0x4075f420, 0x4ad2: 0x4075f620, 0x4ad3: 0x4075f820, - 0x4ad4: 0x4075fa20, 0x4ad5: 0x4075fc20, 0x4ad7: 0x40038620, - 0x4ad8: 0xe0000297, 0x4ad9: 0xe00003b2, 0x4ada: 0xe000048c, 0x4adb: 0x40296820, - 0x4adc: 0x40296a20, 0x4add: 0x40296c20, 0x4ade: 0x40296e20, 0x4adf: 0x40297020, - // Block 0x12c, offset 0x4b00 - 0x4b00: 0x4038bc20, 0x4b01: 0x4038be20, 0x4b02: 0x4038c020, 0x4b03: 0x4038c220, - 0x4b04: 0x4038c420, 0x4b05: 0x4038c620, 0x4b06: 0x4038c820, 0x4b07: 0x4038ca20, - 0x4b08: 0x4038cc20, 0x4b09: 0x4038ce20, 0x4b0a: 0x4038d020, 0x4b0b: 0x4038d220, - 0x4b0c: 0x4038d420, 0x4b0d: 0x4038d620, 0x4b0e: 0x4038d820, 0x4b0f: 0x4038da20, - 0x4b10: 0x4038dc20, 0x4b11: 0x4038de20, 0x4b12: 0x4038e020, 0x4b13: 0x4038e220, - 0x4b14: 0x4038e420, 0x4b15: 0x4038e620, 0x4b16: 0xe0000294, 0x4b17: 0x40296220, - 0x4b18: 0x40296420, 0x4b19: 0x40296620, 0x4b1a: 0xe00003af, 0x4b1b: 0xe0000489, - 0x4b1f: 0x4003c820, - 0x4b20: 0x40715420, 0x4b21: 0x40715620, 0x4b22: 0x40715820, 0x4b23: 0x40715a20, - 0x4b24: 0x40715c20, 0x4b25: 0x40715e20, 0x4b26: 0x40716020, 0x4b27: 0x40716220, - 0x4b28: 0x40716420, 0x4b29: 0x40716620, 0x4b2a: 0x40716820, 0x4b2b: 0x40716a20, - 0x4b2c: 0x40716c20, 0x4b2d: 0x40716e20, 0x4b2e: 0x40717020, 0x4b2f: 0x40717220, - 0x4b30: 0x40717420, 0x4b31: 0x40717620, 0x4b32: 0x40717820, 0x4b33: 0x40717a20, - 0x4b34: 0x40717c20, 0x4b35: 0x40717e20, 0x4b36: 0x40718020, 0x4b37: 0x40718220, - 0x4b38: 0x40718420, 0x4b39: 0x40718620, - 0x4b3f: 0x4003bc20, - // Block 0x12d, offset 0x4b40 - 0x4b40: 0xe00023a4, 0x4b41: 0xe00023a7, 0x4b42: 0xe00023aa, 0x4b43: 0xe00023ad, - 0x4b44: 0xe00023b0, 0x4b45: 0xe00023b3, 0x4b46: 0xe00023b6, 0x4b47: 0xe00023b9, - 0x4b48: 0xe00023bc, 0x4b49: 0xe00023bf, 0x4b4a: 0xe00023c2, 0x4b4b: 0xe00023c5, - 0x4b4c: 0xe00023c8, 0x4b4d: 0xe00023cb, 0x4b4e: 0xe00023ce, 0x4b4f: 0xe00023d1, - 0x4b50: 0xe00023d4, 0x4b51: 0xe00023d7, 0x4b52: 0xe00023da, 0x4b53: 0xe00023e0, - 0x4b54: 0xe00023e3, 0x4b55: 0xe00023e6, 0x4b56: 0xe00023e9, 0x4b57: 0xe00023ec, - 0x4b58: 0xe00023ef, 0x4b59: 0xe00023f2, 0x4b5a: 0xe00023f5, 0x4b5b: 0xe00023f8, - 0x4b5c: 0xe00023fb, 0x4b5d: 0xe00023fe, 0x4b5e: 0x40865220, 0x4b5f: 0x40865420, - 0x4b60: 0x40862020, 0x4b61: 0x40862220, 0x4b62: 0x40862420, 0x4b63: 0x40862620, - 0x4b64: 0x40862820, 0x4b65: 0x40862a20, 0x4b66: 0x40862c20, 0x4b67: 0x40862e20, - 0x4b68: 0x40863020, 0x4b69: 0x40863220, 0x4b6a: 0x40863420, 0x4b6b: 0x40863620, - 0x4b6c: 0x40863820, 0x4b6d: 0x40863a20, 0x4b6e: 0x40863c20, 0x4b6f: 0x40863e20, - 0x4b70: 0xe00023dd, 0x4b71: 0x40864020, 0x4b72: 0x40864220, 0x4b73: 0x40864420, - 0x4b74: 0x40864620, 0x4b75: 0x40864820, 0x4b76: 0x40864a20, 0x4b77: 0x40864c20, - 0x4b7e: 0x40864e20, 0x4b7f: 0x40865020, - // Block 0x12e, offset 0x4b80 - 0x4b80: 0x4048bc20, 0x4b81: 0x4048be20, 0x4b82: 0x4048c020, 0x4b83: 0x4048c220, - 0x4b85: 0x4048c420, 0x4b86: 0x4048c620, - 0x4b8c: 0x4048c820, 0x4b8d: 0xadc06002, 0x4b8e: 0xa000f302, 0x4b8f: 0xae60f402, - 0x4b90: 0x4048ca20, 0x4b91: 0x4048cc20, 0x4b92: 0x4048ce20, 0x4b93: 0x4048d020, - 0x4b95: 0x4048d220, 0x4b96: 0x4048d420, 0x4b97: 0x4048d620, - 0x4b99: 0x4048d820, 0x4b9a: 0x4048da20, 0x4b9b: 0x4048dc20, - 0x4b9c: 0x4048de20, 0x4b9d: 0x4048e020, 0x4b9e: 0x4048e220, 0x4b9f: 0x4048e420, - 0x4ba0: 0x4048e620, 0x4ba1: 0x4048e820, 0x4ba2: 0x4048ea20, 0x4ba3: 0x4048ec20, - 0x4ba4: 0x4048ee20, 0x4ba5: 0x4048f020, 0x4ba6: 0x4048f220, 0x4ba7: 0x4048f420, - 0x4ba8: 0x4048f620, 0x4ba9: 0x4048f820, 0x4baa: 0x4048fa20, 0x4bab: 0x4048fc20, - 0x4bac: 0x4048fe20, 0x4bad: 0x40490020, 0x4bae: 0x40490220, 0x4baf: 0x40490420, - 0x4bb0: 0x40490620, 0x4bb1: 0x40490820, 0x4bb2: 0x40490a20, 0x4bb3: 0x40490c20, - 0x4bb8: 0xae60fb02, 0x4bb9: 0xa010fc02, 0x4bba: 0xadc0fd02, - 0x4bbf: 0x82092487, - // Block 0x12f, offset 0x4bc0 - 0x4bc0: 0xe00002ac, 0x4bc1: 0xe00003c7, 0x4bc2: 0xe00004a1, 0x4bc3: 0xe0000573, - 0x4bc4: 0x40299820, 0x4bc5: 0x40299a20, 0x4bc6: 0x40299c20, 0x4bc7: 0x40299e20, - 0x4bd0: 0x40060620, 0x4bd1: 0x40060820, 0x4bd2: 0x40060a20, 0x4bd3: 0x40060c20, - 0x4bd4: 0x40060e20, 0x4bd5: 0x40061020, 0x4bd6: 0x40034420, 0x4bd7: 0x40034620, - 0x4bd8: 0x40061220, - 0x4be0: 0x40752e20, 0x4be1: 0x40753020, 0x4be2: 0x40753220, 0x4be3: 0x40753420, - 0x4be4: 0x40753620, 0x4be5: 0x40753820, 0x4be6: 0x40753a20, 0x4be7: 0x40753c20, - 0x4be8: 0x40753e20, 0x4be9: 0x40754020, 0x4bea: 0x40754220, 0x4beb: 0x40754420, - 0x4bec: 0x40754620, 0x4bed: 0x40754820, 0x4bee: 0x40754a20, 0x4bef: 0x40754c20, - 0x4bf0: 0x40754e20, 0x4bf1: 0x40755020, 0x4bf2: 0x40755220, 0x4bf3: 0x40755420, - 0x4bf4: 0x40755620, 0x4bf5: 0x40755820, 0x4bf6: 0x40755a20, 0x4bf7: 0x40755c20, - 0x4bf8: 0x40755e20, 0x4bf9: 0x40756020, 0x4bfa: 0x40756220, 0x4bfb: 0x40756420, - 0x4bfc: 0x40756620, 0x4bfd: 0xe0000291, 0x4bfe: 0x40296020, 0x4bff: 0x40061c20, - // Block 0x130, offset 0x4c00 - 0x4c00: 0x40756820, 0x4c01: 0x40756a20, 0x4c02: 0x40756c20, 0x4c03: 0x40756e20, - 0x4c04: 0x40757020, 0x4c05: 0x40757220, 0x4c06: 0x40757420, 0x4c07: 0x40757620, - 0x4c08: 0x40757820, 0x4c09: 0x40757a20, 0x4c0a: 0x40757c20, 0x4c0b: 0x40757e20, - 0x4c0c: 0x40758020, 0x4c0d: 0x40758220, 0x4c0e: 0x40758420, 0x4c0f: 0x40758620, - 0x4c10: 0x40758820, 0x4c11: 0x40758a20, 0x4c12: 0x40758c20, 0x4c13: 0x40758e20, - 0x4c14: 0x40759020, 0x4c15: 0x40759220, 0x4c16: 0x40759420, 0x4c17: 0x40759620, - 0x4c18: 0x40759820, 0x4c19: 0x40759a20, 0x4c1a: 0x40759c20, 0x4c1b: 0x40759e20, - 0x4c1c: 0x4075a020, 0x4c1d: 0x4075a220, 0x4c1e: 0x4075a420, 0x4c1f: 0x4075a620, - 0x4c20: 0x4075a820, 0x4c21: 0x4075aa20, 0x4c22: 0x4075ac20, 0x4c23: 0x4075ae20, - 0x4c24: 0x4075b020, 0x4c25: 0x4075b220, 0x4c26: 0x4075b420, 0x4c27: 0x4075b620, - 0x4c28: 0x4075b820, 0x4c29: 0x4075ba20, 0x4c2a: 0x4075bc20, 0x4c2b: 0x4075be20, - 0x4c2c: 0x4075c020, 0x4c2d: 0x4075c220, 0x4c2e: 0xe00023a1, 0x4c2f: 0x4075c420, - 0x4c30: 0x4075c620, 0x4c31: 0x4075c820, 0x4c32: 0x4075ca20, 0x4c33: 0x4075cc20, - 0x4c34: 0x4075ce20, 0x4c35: 0x4075d020, - 0x4c39: 0x40061420, 0x4c3a: 0x40038820, 0x4c3b: 0x40038a20, - 0x4c3c: 0x40038c20, 0x4c3d: 0x40038e20, 0x4c3e: 0x40039020, 0x4c3f: 0x40039220, - // Block 0x131, offset 0x4c40 - 0x4c40: 0x4075fe20, 0x4c41: 0x40760020, 0x4c42: 0x40760220, 0x4c43: 0x40760420, - 0x4c44: 0x40760620, 0x4c45: 0x40760820, 0x4c46: 0x40760a20, 0x4c47: 0x40760c20, - 0x4c48: 0x40760e20, 0x4c49: 0x40761020, 0x4c4a: 0x40761220, 0x4c4b: 0x40761420, - 0x4c4c: 0x40761620, 0x4c4d: 0x40761820, 0x4c4e: 0x40761a20, 0x4c4f: 0x40761c20, - 0x4c50: 0x40761e20, 0x4c51: 0x40762020, 0x4c52: 0x40762220, 0x4c53: 0x40762420, - 0x4c54: 0x40762620, 0x4c55: 0x40762820, - 0x4c58: 0xe000029a, 0x4c59: 0xe00003b5, 0x4c5a: 0xe000048f, 0x4c5b: 0xe0000561, - 0x4c5c: 0x40297220, 0x4c5d: 0x40297420, 0x4c5e: 0x40297620, 0x4c5f: 0x40297820, - 0x4c60: 0x40762a20, 0x4c61: 0x40762c20, 0x4c62: 0x40762e20, 0x4c63: 0x40763020, - 0x4c64: 0x40763220, 0x4c65: 0x40763420, 0x4c66: 0x40763620, 0x4c67: 0x40763820, - 0x4c68: 0x40763a20, 0x4c69: 0x40763c20, 0x4c6a: 0x40763e20, 0x4c6b: 0x40764020, - 0x4c6c: 0x40764220, 0x4c6d: 0x40764420, 0x4c6e: 0x40764620, 0x4c6f: 0x40764820, - 0x4c70: 0x40764a20, 0x4c71: 0x40764c20, 0x4c72: 0x40764e20, - 0x4c78: 0xe000029d, 0x4c79: 0xe00003b8, 0x4c7a: 0xe0000492, 0x4c7b: 0xe0000564, - 0x4c7c: 0x40297a20, 0x4c7d: 0x40297c20, 0x4c7e: 0x40297e20, 0x4c7f: 0x40298020, - // Block 0x132, offset 0x4c80 - 0x4c80: 0x405b2620, 0x4c81: 0xe00020a7, 0x4c82: 0x405b2820, 0x4c83: 0x405b2a20, - 0x4c84: 0xe00020aa, 0x4c85: 0x405b2c20, 0x4c86: 0x405b2e20, 0x4c87: 0x405b3020, - 0x4c88: 0xe00020ad, 0x4c89: 0x405b3220, 0x4c8a: 0xe00020b0, 0x4c8b: 0x405b3420, - 0x4c8c: 0xe00020b3, 0x4c8d: 0x405b3620, 0x4c8e: 0xe00020b6, 0x4c8f: 0x405b3820, - 0x4c90: 0xe00020b9, 0x4c91: 0x405b3a20, 0x4c92: 0xe00020bc, 0x4c93: 0x405b3c20, - 0x4c94: 0x405b3e20, 0x4c95: 0xe00020bf, 0x4c96: 0x405b4020, 0x4c97: 0xe00020c2, - 0x4c98: 0x405b4220, 0x4c99: 0xe00020c5, 0x4c9a: 0x405b4420, 0x4c9b: 0xe00020c8, - 0x4c9c: 0x405b4620, 0x4c9d: 0xe00020cb, 0x4c9e: 0x405b4820, 0x4c9f: 0xe00020ce, - 0x4ca0: 0x405b4a20, 0x4ca1: 0x405b4c20, 0x4ca2: 0x405b4e20, 0x4ca3: 0x405b5020, - 0x4ca4: 0x405b5220, 0x4ca5: 0xe00020d1, 0x4ca6: 0x405b5420, 0x4ca7: 0xe00020d4, - 0x4ca8: 0x405b5620, 0x4ca9: 0xe00020d7, 0x4caa: 0x405b5820, 0x4cab: 0xe00020da, - 0x4cac: 0x405b5a20, 0x4cad: 0x405b5c20, 0x4cae: 0xe00020dd, 0x4caf: 0x405b5e20, - 0x4cb0: 0x405b6020, 0x4cb1: 0x405b6220, 0x4cb2: 0x405b6420, 0x4cb3: 0xe00020e0, - 0x4cb4: 0x405b6620, 0x4cb5: 0xe00020e3, 0x4cb6: 0x405b6820, 0x4cb7: 0xe00020e6, - 0x4cb8: 0x405b6a20, 0x4cb9: 0xe00020e9, 0x4cba: 0x405b6c20, 0x4cbb: 0xe00020ec, - 0x4cbc: 0x405b6e20, 0x4cbd: 0x405b7020, 0x4cbe: 0x405b7220, 0x4cbf: 0x405b7420, - // Block 0x133, offset 0x4cc0 - 0x4cc0: 0xe00020ef, 0x4cc1: 0x405b7620, 0x4cc2: 0xe00020f2, 0x4cc3: 0x405b7820, - 0x4cc4: 0xe00020f5, 0x4cc5: 0x405b7a20, 0x4cc6: 0xe00020f8, 0x4cc7: 0x405b7c20, - 0x4cc8: 0x405b7e20, - // Block 0x134, offset 0x4d00 - 0x4d20: 0xe00001ec, 0x4d21: 0xe0000307, 0x4d22: 0xe00003e1, 0x4d23: 0xe00004bc, - 0x4d24: 0xe0000586, 0x4d25: 0xe0000651, 0x4d26: 0xe00006f9, 0x4d27: 0xe00007a5, - 0x4d28: 0xe000084a, 0x4d29: 0x40288820, 0x4d2a: 0x40288a20, 0x4d2b: 0x40288c20, - 0x4d2c: 0x40288e20, 0x4d2d: 0x40289020, 0x4d2e: 0x40289220, 0x4d2f: 0x40289420, - 0x4d30: 0x40289620, 0x4d31: 0x40289820, 0x4d32: 0x40289a20, 0x4d33: 0x40289c20, - 0x4d34: 0x40289e20, 0x4d35: 0x4028a020, 0x4d36: 0x4028a220, 0x4d37: 0x4028a420, - 0x4d38: 0x4028a620, 0x4d39: 0x4028a820, 0x4d3a: 0x4028aa20, 0x4d3b: 0x4028ac20, - 0x4d3c: 0x4028ae20, 0x4d3d: 0x4028b020, 0x4d3e: 0x4028b220, - // Block 0x135, offset 0x4d40 - 0x4d40: 0xa000f202, 0x4d41: 0xa000f302, 0x4d42: 0xa000f402, 0x4d43: 0x40489220, - 0x4d44: 0x40489420, 0x4d45: 0x40483420, 0x4d46: 0x40483620, 0x4d47: 0x40483820, - 0x4d48: 0x40483a20, 0x4d49: 0x40483c20, 0x4d4a: 0x40483e20, 0x4d4b: 0x40484020, - 0x4d4c: 0x40484220, 0x4d4d: 0x40484420, 0x4d4e: 0x40484620, 0x4d4f: 0x40484820, - 0x4d50: 0x40484a20, 0x4d51: 0x40484c20, 0x4d52: 0x40484e20, 0x4d53: 0x40485020, - 0x4d54: 0x40485220, 0x4d55: 0x40485420, 0x4d56: 0x40485620, 0x4d57: 0x40485820, - 0x4d58: 0x40485a20, 0x4d59: 0x40485c20, 0x4d5a: 0x40485e20, 0x4d5b: 0x40486020, - 0x4d5c: 0x40486220, 0x4d5d: 0x40486420, 0x4d5e: 0x40486620, 0x4d5f: 0x40486820, - 0x4d60: 0x40486a20, 0x4d61: 0x40486c20, 0x4d62: 0x40486e20, 0x4d63: 0x40487020, - 0x4d64: 0x40487220, 0x4d65: 0x40487420, 0x4d66: 0x40487620, 0x4d67: 0x40487820, - 0x4d68: 0x40487a20, 0x4d69: 0x40487c20, 0x4d6a: 0x40487e20, 0x4d6b: 0x40488020, - 0x4d6c: 0x40488220, 0x4d6d: 0x40488420, 0x4d6e: 0x40488620, 0x4d6f: 0x40488820, - 0x4d70: 0x40488a20, 0x4d71: 0x40488c20, 0x4d72: 0x40488e20, 0x4d73: 0x40489020, - 0x4d74: 0x40489620, 0x4d75: 0x40489820, 0x4d76: 0x40489a20, 0x4d77: 0x40489c20, - 0x4d78: 0x40489e20, 0x4d79: 0x4048a020, 0x4d7a: 0x4048a220, 0x4d7b: 0x4048a420, - 0x4d7c: 0x4048a620, 0x4d7d: 0x4048a820, 0x4d7e: 0x4048aa20, 0x4d7f: 0x4048ac20, - // Block 0x136, offset 0x4d80 - 0x4d80: 0x4048ae20, 0x4d81: 0x4048b020, 0x4d82: 0x4048b220, 0x4d83: 0x4048b420, - 0x4d84: 0x4048b620, 0x4d85: 0x4048b820, 0x4d86: 0x8209245d, 0x4d87: 0x40034820, - 0x4d88: 0x40034a20, 0x4d89: 0x4005fc20, 0x4d8a: 0x4005fe20, 0x4d8b: 0x40060020, - 0x4d8c: 0x40060220, 0x4d8d: 0x40060420, - 0x4d92: 0xe00002a9, 0x4d93: 0xe00003c4, - 0x4d94: 0xe000049e, 0x4d95: 0xe0000570, 0x4d96: 0xe000063a, 0x4d97: 0xe00006ea, - 0x4d98: 0xe0000792, 0x4d99: 0xe000083b, 0x4d9a: 0xe00008e6, 0x4d9b: 0x40298220, - 0x4d9c: 0x40298420, 0x4d9d: 0x40298620, 0x4d9e: 0x40298820, 0x4d9f: 0x40298a20, - 0x4da0: 0x40298c20, 0x4da1: 0x40298e20, 0x4da2: 0x40299020, 0x4da3: 0x40299220, - 0x4da4: 0x40299420, 0x4da5: 0x40299620, 0x4da6: 0xe00001df, 0x4da7: 0xe00002a6, - 0x4da8: 0xe00003c1, 0x4da9: 0xe000049b, 0x4daa: 0xe000056d, 0x4dab: 0xe0000637, - 0x4dac: 0xe00006e7, 0x4dad: 0xe000078f, 0x4dae: 0xe0000838, 0x4daf: 0xe00008e3, - // Block 0x137, offset 0x4dc0 - 0x4dc0: 0xa000f202, 0x4dc1: 0xa000f302, 0x4dc2: 0xa000f402, 0x4dc3: 0x40467e20, - 0x4dc4: 0x40468020, 0x4dc5: 0x40468220, 0x4dc6: 0x40468420, 0x4dc7: 0x40468620, - 0x4dc8: 0x40468820, 0x4dc9: 0x40468a20, 0x4dca: 0x40468c20, 0x4dcb: 0x40468e20, - 0x4dcc: 0x40469020, 0x4dcd: 0x40469220, 0x4dce: 0x40469420, 0x4dcf: 0x40469620, - 0x4dd0: 0x40469820, 0x4dd1: 0x40469a20, 0x4dd2: 0x40469c20, 0x4dd3: 0x40469e20, - 0x4dd4: 0x4046a020, 0x4dd5: 0x4046a220, 0x4dd6: 0x4046a420, 0x4dd7: 0x4046a620, - 0x4dd8: 0x4046a820, 0x4dd9: 0x4046aa20, 0x4dda: 0xe0001878, 0x4ddb: 0x4046ac20, - 0x4ddc: 0xe000187b, 0x4ddd: 0x4046ae20, 0x4dde: 0x4046b020, 0x4ddf: 0x4046b220, - 0x4de0: 0x4046b420, 0x4de1: 0x4046b620, 0x4de2: 0x4046b820, 0x4de3: 0x4046ba20, - 0x4de4: 0x4046bc20, 0x4de5: 0x4046be20, 0x4de6: 0x4046c020, 0x4de7: 0x4046c220, - 0x4de8: 0x4046c420, 0x4de9: 0x4046c620, 0x4dea: 0x4046c820, 0x4deb: 0xe000187e, - 0x4dec: 0x4046ca20, 0x4ded: 0x4046cc20, 0x4dee: 0x4046ce20, 0x4def: 0x4046d020, - 0x4df0: 0x4046d220, 0x4df1: 0x4046d420, 0x4df2: 0x4046d620, 0x4df3: 0x4046d820, - 0x4df4: 0x4046da20, 0x4df5: 0x4046dc20, 0x4df6: 0x4046de20, 0x4df7: 0x4046e020, - 0x4df8: 0x4046e220, 0x4df9: 0x82092372, 0x4dfa: 0xa070f102, 0x4dfb: 0x40061620, - 0x4dfc: 0x40061820, 0x4dfd: 0xa0000000, 0x4dfe: 0x40039420, 0x4dff: 0x40039620, - // Block 0x138, offset 0x4e00 - 0x4e00: 0x40034c20, 0x4e01: 0x40034e20, - 0x4e10: 0x4072e820, 0x4e11: 0x4072ea20, 0x4e12: 0x4072ec20, 0x4e13: 0x4072ee20, - 0x4e14: 0x4072f020, 0x4e15: 0x4072f220, 0x4e16: 0x4072f420, 0x4e17: 0x4072f620, - 0x4e18: 0x4072f820, 0x4e19: 0x4072fa20, 0x4e1a: 0x4072fc20, 0x4e1b: 0x4072fe20, - 0x4e1c: 0x40730020, 0x4e1d: 0x40730220, 0x4e1e: 0x40730420, 0x4e1f: 0x40730620, - 0x4e20: 0x40730820, 0x4e21: 0x40730a20, 0x4e22: 0x40730c20, 0x4e23: 0x40730e20, - 0x4e24: 0x40731020, 0x4e25: 0x40731220, 0x4e26: 0x40731420, 0x4e27: 0x40731620, - 0x4e28: 0x40731820, - 0x4e30: 0xe00001d0, 0x4e31: 0xe0000264, 0x4e32: 0xe000037c, 0x4e33: 0xe0000456, - 0x4e34: 0xe000052b, 0x4e35: 0xe00005f5, 0x4e36: 0xe00006c0, 0x4e37: 0xe0000768, - 0x4e38: 0xe0000814, 0x4e39: 0xe00008b9, - // Block 0x139, offset 0x4e40 - 0x4e40: 0xae60f202, 0x4e41: 0xae60f302, 0x4e42: 0xae60f402, 0x4e43: 0x404f4020, - 0x4e44: 0x404f4220, 0x4e45: 0x404f4420, 0x4e46: 0x404f4620, 0x4e47: 0x404f4820, - 0x4e48: 0x404f4a20, 0x4e49: 0x404f4c20, 0x4e4a: 0x404f4e20, 0x4e4b: 0x404f5020, - 0x4e4c: 0x404f5220, 0x4e4d: 0x404f5420, 0x4e4e: 0x404f5620, 0x4e4f: 0x404f5820, - 0x4e50: 0x404f5a20, 0x4e51: 0x404f5c20, 0x4e52: 0x404f5e20, 0x4e53: 0x404f6020, - 0x4e54: 0x404f6220, 0x4e55: 0x404f6420, 0x4e56: 0x404f6620, 0x4e57: 0x404f6820, - 0x4e58: 0x404f6a20, 0x4e59: 0x404f6c20, 0x4e5a: 0x404f6e20, 0x4e5b: 0x404f7020, - 0x4e5c: 0x404f7220, 0x4e5d: 0x404f7420, 0x4e5e: 0x404f7620, 0x4e5f: 0x404f7820, - 0x4e60: 0x404f7a20, 0x4e61: 0x404f7c20, 0x4e62: 0x404f7e20, 0x4e63: 0x404f8020, - 0x4e64: 0x404f8220, 0x4e65: 0x404f8420, 0x4e66: 0x404f8620, 0x4e67: 0x404f8820, - 0x4e68: 0x404f8a20, 0x4e69: 0x404f8c20, 0x4e6a: 0x404f8e20, 0x4e6b: 0x404f9020, - 0x4e6c: 0x404f9220, 0x4e6d: 0x404f9420, 0x4e6e: 0x404f9620, 0x4e6f: 0x404f9820, - 0x4e70: 0x404f9a20, 0x4e71: 0xc31507e1, 0x4e72: 0xc31707e1, 0x4e73: 0x820927d0, - 0x4e74: 0x820927d1, 0x4e76: 0xe00001b2, 0x4e77: 0xe0000246, - 0x4e78: 0xe000035e, 0x4e79: 0xe0000438, 0x4e7a: 0xe000050d, 0x4e7b: 0xe00005d7, - 0x4e7c: 0xe00006a2, 0x4e7d: 0xe000074a, 0x4e7e: 0xe00007f6, 0x4e7f: 0xe000089b, - // Block 0x13a, offset 0x4e80 - 0x4e80: 0x40039820, 0x4e81: 0x40035020, 0x4e82: 0x40035220, 0x4e83: 0x4002de20, - // Block 0x13b, offset 0x4ec0 - 0x4ec0: 0xa000f202, 0x4ec1: 0xa000f302, 0x4ec2: 0xa000f402, 0x4ec3: 0x4046e820, - 0x4ec4: 0x4046ea20, 0x4ec5: 0x4046ec20, 0x4ec6: 0x4046ee20, 0x4ec7: 0x4046f020, - 0x4ec8: 0x4046f220, 0x4ec9: 0x4046f420, 0x4eca: 0x4046f620, 0x4ecb: 0x4046f820, - 0x4ecc: 0x4046fa20, 0x4ecd: 0x4046fc20, 0x4ece: 0x4046fe20, 0x4ecf: 0x40470020, - 0x4ed0: 0x40470220, 0x4ed1: 0x40470420, 0x4ed2: 0x40470620, 0x4ed3: 0x40470820, - 0x4ed4: 0x40470a20, 0x4ed5: 0x40470c20, 0x4ed6: 0x40470e20, 0x4ed7: 0x40471020, - 0x4ed8: 0x40471220, 0x4ed9: 0x40471420, 0x4eda: 0x40471620, 0x4edb: 0x40471820, - 0x4edc: 0x40471a20, 0x4edd: 0x40471c20, 0x4ede: 0x40471e20, 0x4edf: 0x40472020, - 0x4ee0: 0x40472220, 0x4ee1: 0x40472420, 0x4ee2: 0x40472620, 0x4ee3: 0x40472820, - 0x4ee4: 0x40472a20, 0x4ee5: 0x40472c20, 0x4ee6: 0x40472e20, 0x4ee7: 0x40473020, - 0x4ee8: 0x40473220, 0x4ee9: 0x40473420, 0x4eea: 0x40473620, 0x4eeb: 0x40473820, - 0x4eec: 0x40473a20, 0x4eed: 0x40473c20, 0x4eee: 0x40473e20, 0x4eef: 0x40474020, - 0x4ef0: 0x40474220, 0x4ef1: 0x40474420, 0x4ef2: 0x40474620, 0x4ef3: 0x40474820, - 0x4ef4: 0x40474a20, 0x4ef5: 0x40474c20, 0x4ef6: 0x40474e20, 0x4ef7: 0x40475020, - 0x4ef8: 0x40475220, 0x4ef9: 0x40475420, 0x4efa: 0x40475620, 0x4efb: 0x40475820, - 0x4efc: 0x40475a20, 0x4efd: 0x40475c20, 0x4efe: 0x40475e20, 0x4eff: 0x40476020, - // Block 0x13c, offset 0x4f00 - 0x4f00: 0x820923b1, 0x4f01: 0x40476420, 0x4f02: 0x40476620, 0x4f03: 0x40476820, - 0x4f04: 0x4046e620, 0x4f05: 0x40035420, 0x4f06: 0x40035620, 0x4f07: 0x40061a20, - 0x4f08: 0x40039a20, - 0x4f10: 0xe00001d9, 0x4f11: 0xe00002a0, 0x4f12: 0xe00003bb, 0x4f13: 0xe0000495, - 0x4f14: 0xe0000567, 0x4f15: 0xe0000631, 0x4f16: 0xe00006e1, 0x4f17: 0xe0000789, - 0x4f18: 0xe0000832, 0x4f19: 0xe00008dd, - // Block 0x13d, offset 0x4f40 - 0x4f40: 0x40476a20, 0x4f41: 0x40476c20, 0x4f42: 0x40476e20, 0x4f43: 0x40477020, - 0x4f44: 0x40477220, 0x4f45: 0x40477420, 0x4f46: 0x40477620, 0x4f47: 0x40477820, - 0x4f48: 0x40477a20, 0x4f49: 0x40477c20, 0x4f4a: 0x40478420, 0x4f4b: 0x40478620, - 0x4f4c: 0x40478820, 0x4f4d: 0x40478a20, 0x4f4e: 0x40478c20, 0x4f4f: 0x40478e20, - 0x4f50: 0x40479020, 0x4f51: 0x40479220, 0x4f52: 0x40479420, 0x4f53: 0x40479620, - 0x4f54: 0x40479820, 0x4f55: 0x40479a20, 0x4f56: 0x40479c20, 0x4f57: 0x40479e20, - 0x4f58: 0x4047a020, 0x4f59: 0x4047a220, 0x4f5a: 0x4047a420, 0x4f5b: 0x4047a620, - 0x4f5c: 0x4047a820, 0x4f5d: 0x4047aa20, 0x4f5e: 0x4047ac20, 0x4f5f: 0x4047ae20, - 0x4f60: 0x4047b020, 0x4f61: 0x4047b220, 0x4f62: 0x4047b420, 0x4f63: 0x4047b620, - 0x4f64: 0x4047b820, 0x4f65: 0x4047ba20, 0x4f66: 0x4047bc20, 0x4f67: 0x40478020, - 0x4f68: 0x40477e20, 0x4f69: 0x40478220, 0x4f6a: 0x4047be20, 0x4f6b: 0xa000f302, - 0x4f6c: 0xa000f402, 0x4f6d: 0x4047c020, 0x4f6e: 0x4047c220, 0x4f6f: 0x4047c420, - 0x4f70: 0x4047c620, 0x4f71: 0x4047c820, 0x4f72: 0x4047ca20, 0x4f73: 0x4047cc20, - 0x4f74: 0x4047ce20, 0x4f75: 0x4047d020, 0x4f76: 0x820923e9, 0x4f77: 0xa070f102, - // Block 0x13e, offset 0x4f80 - 0x4f80: 0xe00001dc, 0x4f81: 0xe00002a3, 0x4f82: 0xe00003be, 0x4f83: 0xe0000498, - 0x4f84: 0xe000056a, 0x4f85: 0xe0000634, 0x4f86: 0xe00006e4, 0x4f87: 0xe000078c, - 0x4f88: 0xe0000835, 0x4f89: 0xe00008e0, - // Block 0x13f, offset 0x4fc0 - 0x4fc0: 0x4076e420, 0x4fc1: 0x4076e620, 0x4fc2: 0x4076e820, 0x4fc3: 0x4076ea20, - 0x4fc4: 0x4076ec20, 0x4fc5: 0x4076ee20, 0x4fc6: 0x4076f020, 0x4fc7: 0x4076f220, - 0x4fc8: 0x4076f420, 0x4fc9: 0x4076f620, 0x4fca: 0x4076f820, 0x4fcb: 0x4076fa20, - 0x4fcc: 0x4076fc20, 0x4fcd: 0x4076fe20, 0x4fce: 0x40770020, 0x4fcf: 0x40770220, - 0x4fd0: 0x40770420, 0x4fd1: 0x40770620, 0x4fd2: 0x40770820, 0x4fd3: 0x40770a20, - 0x4fd4: 0x40770c20, 0x4fd5: 0x40770e20, 0x4fd6: 0x40771020, 0x4fd7: 0x40771220, - 0x4fd8: 0x40771420, 0x4fd9: 0x40771620, 0x4fda: 0x40771820, 0x4fdb: 0x40771a20, - 0x4fdc: 0x40771c20, 0x4fdd: 0x40771e20, 0x4fde: 0x40772020, 0x4fdf: 0x40772220, - 0x4fe0: 0x40772420, 0x4fe1: 0x40772620, 0x4fe2: 0x40772820, 0x4fe3: 0x40772a20, - 0x4fe4: 0x40772c20, 0x4fe5: 0x40772e20, 0x4fe6: 0x40773020, 0x4fe7: 0x40773220, - 0x4fe8: 0x40773420, 0x4fe9: 0x40773620, 0x4fea: 0x40773820, 0x4feb: 0x40773a20, - 0x4fec: 0x40773c20, 0x4fed: 0x40773e20, 0x4fee: 0x40774020, 0x4fef: 0x40774220, - 0x4ff0: 0x40774420, 0x4ff1: 0x40774620, 0x4ff2: 0x40774820, 0x4ff3: 0x40774a20, - 0x4ff4: 0x40774c20, 0x4ff5: 0x40774e20, 0x4ff6: 0x40775020, 0x4ff7: 0x40775220, - 0x4ff8: 0x40775420, 0x4ff9: 0x40775620, 0x4ffa: 0x40775820, 0x4ffb: 0x40775a20, - 0x4ffc: 0x40775c20, 0x4ffd: 0x40775e20, 0x4ffe: 0x40776020, 0x4fff: 0x40776220, - // Block 0x140, offset 0x5000 - 0x5000: 0x40776420, 0x5001: 0x40776620, 0x5002: 0x40776820, 0x5003: 0x40776a20, - 0x5004: 0x40776c20, 0x5005: 0x40776e20, 0x5006: 0x40777020, 0x5007: 0x40777220, - 0x5008: 0x40777420, 0x5009: 0x40777620, 0x500a: 0x40777820, 0x500b: 0x40777a20, - 0x500c: 0x40777c20, 0x500d: 0x40777e20, 0x500e: 0x40778020, 0x500f: 0x40778220, - 0x5010: 0x40778420, 0x5011: 0x40778620, 0x5012: 0x40778820, 0x5013: 0x40778a20, - 0x5014: 0x40778c20, 0x5015: 0x40778e20, 0x5016: 0x40779020, 0x5017: 0x40779220, - 0x5018: 0x40779420, 0x5019: 0x40779620, 0x501a: 0x40779820, 0x501b: 0x40779a20, - 0x501c: 0x40779c20, 0x501d: 0x40779e20, 0x501e: 0x4077a020, 0x501f: 0x4077a220, - 0x5020: 0x4077a420, 0x5021: 0x4077a620, 0x5022: 0x4077a820, 0x5023: 0x4077aa20, - 0x5024: 0x4077ac20, 0x5025: 0x4077ae20, 0x5026: 0x4077b020, 0x5027: 0x4077b220, - 0x5028: 0x4077b420, 0x5029: 0x4077b620, 0x502a: 0x4077b820, 0x502b: 0x4077ba20, - 0x502c: 0x4077bc20, 0x502d: 0x4077be20, 0x502e: 0x4077c020, 0x502f: 0x4077c220, - 0x5030: 0x4077c420, 0x5031: 0x4077c620, 0x5032: 0x4077c820, 0x5033: 0x4077ca20, - 0x5034: 0x4077cc20, 0x5035: 0x4077ce20, 0x5036: 0x4077d020, 0x5037: 0x4077d220, - 0x5038: 0x4077d420, 0x5039: 0x4077d620, 0x503a: 0x4077d820, 0x503b: 0x4077da20, - 0x503c: 0x4077dc20, 0x503d: 0x4077de20, 0x503e: 0x4077e020, 0x503f: 0x4077e220, - // Block 0x141, offset 0x5040 - 0x5040: 0x4077e420, 0x5041: 0x4077e620, 0x5042: 0x4077e820, 0x5043: 0x4077ea20, - 0x5044: 0x4077ec20, 0x5045: 0x4077ee20, 0x5046: 0x4077f020, 0x5047: 0x4077f220, - 0x5048: 0x4077f420, 0x5049: 0x4077f620, 0x504a: 0x4077f820, 0x504b: 0x4077fa20, - 0x504c: 0x4077fc20, 0x504d: 0x4077fe20, 0x504e: 0x40780020, 0x504f: 0x40780220, - 0x5050: 0x40780420, 0x5051: 0x40780620, 0x5052: 0x40780820, 0x5053: 0x40780a20, - 0x5054: 0x40780c20, 0x5055: 0x40780e20, 0x5056: 0x40781020, 0x5057: 0x40781220, - 0x5058: 0x40781420, 0x5059: 0x40781620, 0x505a: 0x40781820, 0x505b: 0x40781a20, - 0x505c: 0x40781c20, 0x505d: 0x40781e20, 0x505e: 0x40782020, 0x505f: 0x40782220, - 0x5060: 0x40782420, 0x5061: 0x40782620, 0x5062: 0x40782820, 0x5063: 0x40782a20, - 0x5064: 0x40782c20, 0x5065: 0x40782e20, 0x5066: 0x40783020, 0x5067: 0x40783220, - 0x5068: 0x40783420, 0x5069: 0x40783620, 0x506a: 0x40783820, 0x506b: 0x40783a20, - 0x506c: 0x40783c20, 0x506d: 0x40783e20, 0x506e: 0x40784020, 0x506f: 0x40784220, - 0x5070: 0x40784420, 0x5071: 0x40784620, 0x5072: 0x40784820, 0x5073: 0x40784a20, - 0x5074: 0x40784c20, 0x5075: 0x40784e20, 0x5076: 0x40785020, 0x5077: 0x40785220, - 0x5078: 0x40785420, 0x5079: 0x40785620, 0x507a: 0x40785820, 0x507b: 0x40785a20, - 0x507c: 0x40785c20, 0x507d: 0x40785e20, 0x507e: 0x40786020, 0x507f: 0x40786220, - // Block 0x142, offset 0x5080 - 0x5080: 0x40786420, 0x5081: 0x40786620, 0x5082: 0x40786820, 0x5083: 0x40786a20, - 0x5084: 0x40786c20, 0x5085: 0x40786e20, 0x5086: 0x40787020, 0x5087: 0x40787220, - 0x5088: 0x40787420, 0x5089: 0x40787620, 0x508a: 0x40787820, 0x508b: 0x40787a20, - 0x508c: 0x40787c20, 0x508d: 0x40787e20, 0x508e: 0x40788020, 0x508f: 0x40788220, - 0x5090: 0x40788420, 0x5091: 0x40788620, 0x5092: 0x40788820, 0x5093: 0x40788a20, - 0x5094: 0x40788c20, 0x5095: 0x40788e20, 0x5096: 0x40789020, 0x5097: 0x40789220, - 0x5098: 0x40789420, 0x5099: 0x40789620, 0x509a: 0x40789820, 0x509b: 0x40789a20, - 0x509c: 0x40789c20, 0x509d: 0x40789e20, 0x509e: 0x4078a020, 0x509f: 0x4078a220, - 0x50a0: 0x4078a420, 0x50a1: 0x4078a620, 0x50a2: 0x4078a820, 0x50a3: 0x4078aa20, - 0x50a4: 0x4078ac20, 0x50a5: 0x4078ae20, 0x50a6: 0x4078b020, 0x50a7: 0x4078b220, - 0x50a8: 0x4078b420, 0x50a9: 0x4078b620, 0x50aa: 0x4078b820, 0x50ab: 0x4078ba20, - 0x50ac: 0x4078bc20, 0x50ad: 0x4078be20, 0x50ae: 0x4078c020, 0x50af: 0x4078c220, - 0x50b0: 0x4078c420, 0x50b1: 0x4078c620, 0x50b2: 0x4078c820, 0x50b3: 0x4078ca20, - 0x50b4: 0x4078cc20, 0x50b5: 0x4078ce20, 0x50b6: 0x4078d020, 0x50b7: 0x4078d220, - 0x50b8: 0x4078d420, 0x50b9: 0x4078d620, 0x50ba: 0x4078d820, 0x50bb: 0x4078da20, - 0x50bc: 0x4078dc20, 0x50bd: 0x4078de20, 0x50be: 0x4078e020, 0x50bf: 0x4078e220, - // Block 0x143, offset 0x50c0 - 0x50c0: 0x4078e420, 0x50c1: 0x4078e620, 0x50c2: 0x4078e820, 0x50c3: 0x4078ea20, - 0x50c4: 0x4078ec20, 0x50c5: 0x4078ee20, 0x50c6: 0x4078f020, 0x50c7: 0x4078f220, - 0x50c8: 0x4078f420, 0x50c9: 0x4078f620, 0x50ca: 0x4078f820, 0x50cb: 0x4078fa20, - 0x50cc: 0x4078fc20, 0x50cd: 0x4078fe20, 0x50ce: 0x40790020, 0x50cf: 0x40790220, - 0x50d0: 0x40790420, 0x50d1: 0x40790620, 0x50d2: 0x40790820, 0x50d3: 0x40790a20, - 0x50d4: 0x40790c20, 0x50d5: 0x40790e20, 0x50d6: 0x40791020, 0x50d7: 0x40791220, - 0x50d8: 0x40791420, 0x50d9: 0x40791620, 0x50da: 0x40791820, 0x50db: 0x40791a20, - 0x50dc: 0x40791c20, 0x50dd: 0x40791e20, 0x50de: 0x40792020, 0x50df: 0x40792220, - 0x50e0: 0x40792420, 0x50e1: 0x40792620, 0x50e2: 0x40792820, 0x50e3: 0x40792a20, - 0x50e4: 0x40792c20, 0x50e5: 0x40792e20, 0x50e6: 0x40793020, 0x50e7: 0x40793220, - 0x50e8: 0x40793420, 0x50e9: 0x40793620, 0x50ea: 0x40793820, 0x50eb: 0x40793a20, - 0x50ec: 0x40793c20, 0x50ed: 0x40793e20, 0x50ee: 0x40794020, 0x50ef: 0x40794220, - 0x50f0: 0x40794420, 0x50f1: 0x40794620, 0x50f2: 0x40794820, 0x50f3: 0x40794a20, - 0x50f4: 0x40794c20, 0x50f5: 0x40794e20, 0x50f6: 0x40795020, 0x50f7: 0x40795220, - 0x50f8: 0x40795420, 0x50f9: 0x40795620, 0x50fa: 0x40795820, 0x50fb: 0x40795a20, - 0x50fc: 0x40795c20, 0x50fd: 0x40795e20, 0x50fe: 0x40796020, 0x50ff: 0x40796220, - // Block 0x144, offset 0x5100 - 0x5100: 0x40796420, 0x5101: 0x40796620, 0x5102: 0x40796820, 0x5103: 0x40796a20, - 0x5104: 0x40796c20, 0x5105: 0x40796e20, 0x5106: 0x40797020, 0x5107: 0x40797220, - 0x5108: 0x40797420, 0x5109: 0x40797620, 0x510a: 0x40797820, 0x510b: 0x40797a20, - 0x510c: 0x40797c20, 0x510d: 0x40797e20, 0x510e: 0x40798020, 0x510f: 0x40798220, - 0x5110: 0x40798420, 0x5111: 0x40798620, 0x5112: 0x40798820, 0x5113: 0x40798a20, - 0x5114: 0x40798c20, 0x5115: 0x40798e20, 0x5116: 0x40799020, 0x5117: 0x40799220, - 0x5118: 0x40799420, 0x5119: 0x40799620, 0x511a: 0x40799820, 0x511b: 0x40799a20, - 0x511c: 0x40799c20, 0x511d: 0x40799e20, 0x511e: 0x4079a020, 0x511f: 0x4079a220, - 0x5120: 0x4079a420, 0x5121: 0x4079a620, 0x5122: 0x4079a820, 0x5123: 0x4079aa20, - 0x5124: 0x4079ac20, 0x5125: 0x4079ae20, 0x5126: 0x4079b020, 0x5127: 0x4079b220, - 0x5128: 0x4079b420, 0x5129: 0x4079b620, 0x512a: 0x4079b820, 0x512b: 0x4079ba20, - 0x512c: 0x4079bc20, 0x512d: 0x4079be20, 0x512e: 0x4079c020, 0x512f: 0x4079c220, - 0x5130: 0x4079c420, 0x5131: 0x4079c620, 0x5132: 0x4079c820, 0x5133: 0x4079ca20, - 0x5134: 0x4079cc20, 0x5135: 0x4079ce20, 0x5136: 0x4079d020, 0x5137: 0x4079d220, - 0x5138: 0x4079d420, 0x5139: 0x4079d620, 0x513a: 0x4079d820, 0x513b: 0x4079da20, - 0x513c: 0x4079dc20, 0x513d: 0x4079de20, 0x513e: 0x4079e020, 0x513f: 0x4079e220, - // Block 0x145, offset 0x5140 - 0x5140: 0x4079e420, 0x5141: 0x4079e620, 0x5142: 0x4079e820, 0x5143: 0x4079ea20, - 0x5144: 0x4079ec20, 0x5145: 0x4079ee20, 0x5146: 0x4079f020, 0x5147: 0x4079f220, - 0x5148: 0x4079f420, 0x5149: 0x4079f620, 0x514a: 0x4079f820, 0x514b: 0x4079fa20, - 0x514c: 0x4079fc20, 0x514d: 0x4079fe20, 0x514e: 0x407a0020, 0x514f: 0x407a0220, - 0x5150: 0x407a0420, 0x5151: 0x407a0620, 0x5152: 0x407a0820, 0x5153: 0x407a0a20, - 0x5154: 0x407a0c20, 0x5155: 0x407a0e20, 0x5156: 0x407a1020, 0x5157: 0x407a1220, - 0x5158: 0x407a1420, 0x5159: 0x407a1620, 0x515a: 0x407a1820, 0x515b: 0x407a1a20, - 0x515c: 0x407a1c20, 0x515d: 0x407a1e20, 0x515e: 0x407a2020, 0x515f: 0x407a2220, - 0x5160: 0x407a2420, 0x5161: 0x407a2620, 0x5162: 0x407a2820, 0x5163: 0x407a2a20, - 0x5164: 0x407a2c20, 0x5165: 0x407a2e20, 0x5166: 0x407a3020, 0x5167: 0x407a3220, - 0x5168: 0x407a3420, 0x5169: 0x407a3620, 0x516a: 0x407a3820, 0x516b: 0x407a3a20, - 0x516c: 0x407a3c20, 0x516d: 0x407a3e20, 0x516e: 0x407a4020, 0x516f: 0x407a4220, - 0x5170: 0x407a4420, 0x5171: 0x407a4620, 0x5172: 0x407a4820, 0x5173: 0x407a4a20, - 0x5174: 0x407a4c20, 0x5175: 0x407a4e20, 0x5176: 0x407a5020, 0x5177: 0x407a5220, - 0x5178: 0x407a5420, 0x5179: 0x407a5620, 0x517a: 0x407a5820, 0x517b: 0x407a5a20, - 0x517c: 0x407a5c20, 0x517d: 0x407a5e20, 0x517e: 0x407a6020, 0x517f: 0x407a6220, - // Block 0x146, offset 0x5180 - 0x5180: 0x407a6420, 0x5181: 0x407a6620, 0x5182: 0x407a6820, 0x5183: 0x407a6a20, - 0x5184: 0x407a6c20, 0x5185: 0x407a6e20, 0x5186: 0x407a7020, 0x5187: 0x407a7220, - 0x5188: 0x407a7420, 0x5189: 0x407a7620, 0x518a: 0x407a7820, 0x518b: 0x407a7a20, - 0x518c: 0x407a7c20, 0x518d: 0x407a7e20, 0x518e: 0x407a8020, 0x518f: 0x407a8220, - 0x5190: 0x407a8420, 0x5191: 0x407a8620, 0x5192: 0x407a8820, 0x5193: 0x407a8a20, - 0x5194: 0x407a8c20, 0x5195: 0x407a8e20, 0x5196: 0x407a9020, 0x5197: 0x407a9220, - 0x5198: 0x407a9420, 0x5199: 0x407a9620, 0x519a: 0x407a9820, 0x519b: 0x407a9a20, - 0x519c: 0x407a9c20, 0x519d: 0x407a9e20, 0x519e: 0x407aa020, 0x519f: 0x407aa220, - 0x51a0: 0x407aa420, 0x51a1: 0x407aa620, 0x51a2: 0x407aa820, 0x51a3: 0x407aaa20, - 0x51a4: 0x407aac20, 0x51a5: 0x407aae20, 0x51a6: 0x407ab020, 0x51a7: 0x407ab220, - 0x51a8: 0x407ab420, 0x51a9: 0x407ab620, 0x51aa: 0x407ab820, 0x51ab: 0x407aba20, - 0x51ac: 0x407abc20, 0x51ad: 0x407abe20, 0x51ae: 0x407ac020, 0x51af: 0x407ac220, - 0x51b0: 0x407ac420, 0x51b1: 0x407ac620, 0x51b2: 0x407ac820, 0x51b3: 0x407aca20, - 0x51b4: 0x407acc20, 0x51b5: 0x407ace20, 0x51b6: 0x407ad020, 0x51b7: 0x407ad220, - 0x51b8: 0x407ad420, 0x51b9: 0x407ad620, 0x51ba: 0x407ad820, 0x51bb: 0x407ada20, - 0x51bc: 0x407adc20, 0x51bd: 0x407ade20, 0x51be: 0x407ae020, 0x51bf: 0x407ae220, - // Block 0x147, offset 0x51c0 - 0x51c0: 0x407ae420, 0x51c1: 0x407ae620, 0x51c2: 0x407ae820, 0x51c3: 0x407aea20, - 0x51c4: 0x407aec20, 0x51c5: 0x407aee20, 0x51c6: 0x407af020, 0x51c7: 0x407af220, - 0x51c8: 0x407af420, 0x51c9: 0x407af620, 0x51ca: 0x407af820, 0x51cb: 0x407afa20, - 0x51cc: 0x407afc20, 0x51cd: 0x407afe20, 0x51ce: 0x407b0020, 0x51cf: 0x407b0220, - 0x51d0: 0x407b0420, 0x51d1: 0x407b0620, 0x51d2: 0x407b0820, 0x51d3: 0x407b0a20, - 0x51d4: 0x407b0c20, 0x51d5: 0x407b0e20, 0x51d6: 0x407b1020, 0x51d7: 0x407b1220, - 0x51d8: 0x407b1420, 0x51d9: 0x407b1620, 0x51da: 0x407b1820, 0x51db: 0x407b1a20, - 0x51dc: 0x407b1c20, 0x51dd: 0x407b1e20, 0x51de: 0x407b2020, 0x51df: 0x407b2220, - 0x51e0: 0x407b2420, 0x51e1: 0x407b2620, 0x51e2: 0x407b2820, 0x51e3: 0x407b2a20, - 0x51e4: 0x407b2c20, 0x51e5: 0x407b2e20, 0x51e6: 0x407b3020, 0x51e7: 0x407b3220, - 0x51e8: 0x407b3420, 0x51e9: 0x407b3620, 0x51ea: 0x407b3820, 0x51eb: 0x407b3a20, - 0x51ec: 0x407b3c20, 0x51ed: 0x407b3e20, 0x51ee: 0x407b4020, 0x51ef: 0x407b4220, - 0x51f0: 0x407b4420, 0x51f1: 0x407b4620, 0x51f2: 0x407b4820, 0x51f3: 0x407b4a20, - 0x51f4: 0x407b4c20, 0x51f5: 0x407b4e20, 0x51f6: 0x407b5020, 0x51f7: 0x407b5220, - 0x51f8: 0x407b5420, 0x51f9: 0x407b5620, 0x51fa: 0x407b5820, 0x51fb: 0x407b5a20, - 0x51fc: 0x407b5c20, 0x51fd: 0x407b5e20, 0x51fe: 0x407b6020, 0x51ff: 0x407b6220, - // Block 0x148, offset 0x5200 - 0x5200: 0x407b6420, 0x5201: 0x407b6620, 0x5202: 0x407b6820, 0x5203: 0x407b6a20, - 0x5204: 0x407b6c20, 0x5205: 0x407b6e20, 0x5206: 0x407b7020, 0x5207: 0x407b7220, - 0x5208: 0x407b7420, 0x5209: 0x407b7620, 0x520a: 0x407b7820, 0x520b: 0x407b7a20, - 0x520c: 0x407b7c20, 0x520d: 0x407b7e20, 0x520e: 0x407b8020, 0x520f: 0x407b8220, - 0x5210: 0x407b8420, 0x5211: 0x407b8620, 0x5212: 0x407b8820, 0x5213: 0x407b8a20, - 0x5214: 0x407b8c20, 0x5215: 0x407b8e20, 0x5216: 0x407b9020, 0x5217: 0x407b9220, - 0x5218: 0x407b9420, 0x5219: 0x407b9620, 0x521a: 0x407b9820, 0x521b: 0x407b9a20, - 0x521c: 0x407b9c20, 0x521d: 0x407b9e20, 0x521e: 0x407ba020, 0x521f: 0x407ba220, - 0x5220: 0x407ba420, 0x5221: 0x407ba620, 0x5222: 0x407ba820, 0x5223: 0x407baa20, - 0x5224: 0x407bac20, 0x5225: 0x407bae20, 0x5226: 0x407bb020, 0x5227: 0x407bb220, - 0x5228: 0x407bb420, 0x5229: 0x407bb620, 0x522a: 0x407bb820, 0x522b: 0x407bba20, - 0x522c: 0x407bbc20, 0x522d: 0x407bbe20, 0x522e: 0x407bc020, 0x522f: 0x407bc220, - 0x5230: 0x407bc420, 0x5231: 0x407bc620, 0x5232: 0x407bc820, 0x5233: 0x407bca20, - 0x5234: 0x407bcc20, 0x5235: 0x407bce20, 0x5236: 0x407bd020, 0x5237: 0x407bd220, - 0x5238: 0x407bd420, 0x5239: 0x407bd620, 0x523a: 0x407bd820, 0x523b: 0x407bda20, - 0x523c: 0x407bdc20, 0x523d: 0x407bde20, 0x523e: 0x407be020, 0x523f: 0x407be220, - // Block 0x149, offset 0x5240 - 0x5240: 0x407be420, 0x5241: 0x407be620, 0x5242: 0x407be820, 0x5243: 0x407bea20, - 0x5244: 0x407bec20, 0x5245: 0x407bee20, 0x5246: 0x407bf020, 0x5247: 0x407bf220, - 0x5248: 0x407bf420, 0x5249: 0x407bf620, 0x524a: 0x407bf820, 0x524b: 0x407bfa20, - 0x524c: 0x407bfc20, 0x524d: 0x407bfe20, 0x524e: 0x407c0020, 0x524f: 0x407c0220, - 0x5250: 0x407c0420, 0x5251: 0x407c0620, 0x5252: 0x407c0820, 0x5253: 0x407c0a20, - 0x5254: 0x407c0c20, 0x5255: 0x407c0e20, 0x5256: 0x407c1020, 0x5257: 0x407c1220, - 0x5258: 0x407c1420, 0x5259: 0x407c1620, 0x525a: 0x407c1820, 0x525b: 0x407c1a20, - 0x525c: 0x407c1c20, 0x525d: 0x407c1e20, 0x525e: 0x407c2020, 0x525f: 0x407c2220, - 0x5260: 0x407c2420, 0x5261: 0x407c2620, 0x5262: 0x407c2820, 0x5263: 0x407c2a20, - 0x5264: 0x407c2c20, 0x5265: 0x407c2e20, 0x5266: 0x407c3020, 0x5267: 0x407c3220, - 0x5268: 0x407c3420, 0x5269: 0x407c3620, 0x526a: 0x407c3820, 0x526b: 0x407c3a20, - 0x526c: 0x407c3c20, 0x526d: 0x407c3e20, 0x526e: 0x407c4020, 0x526f: 0x407c4220, - 0x5270: 0x407c4420, 0x5271: 0x407c4620, 0x5272: 0x407c4820, 0x5273: 0x407c4a20, - 0x5274: 0x407c4c20, 0x5275: 0x407c4e20, 0x5276: 0x407c5020, 0x5277: 0x407c5220, - 0x5278: 0x407c5420, 0x5279: 0x407c5620, 0x527a: 0x407c5820, 0x527b: 0x407c5a20, - 0x527c: 0x407c5c20, 0x527d: 0x407c5e20, 0x527e: 0x407c6020, 0x527f: 0x407c6220, - // Block 0x14a, offset 0x5280 - 0x5280: 0x407c6420, 0x5281: 0x407c6620, 0x5282: 0x407c6820, 0x5283: 0x407c6a20, - 0x5284: 0x407c6c20, 0x5285: 0x407c6e20, 0x5286: 0x407c7020, 0x5287: 0x407c7220, - 0x5288: 0x407c7420, 0x5289: 0x407c7620, 0x528a: 0x407c7820, 0x528b: 0x407c7a20, - 0x528c: 0x407c7c20, 0x528d: 0x407c7e20, 0x528e: 0x407c8020, 0x528f: 0x407c8220, - 0x5290: 0x407c8420, 0x5291: 0x407c8620, 0x5292: 0x407c8820, 0x5293: 0x407c8a20, - 0x5294: 0x407c8c20, 0x5295: 0x407c8e20, 0x5296: 0x407c9020, 0x5297: 0x407c9220, - 0x5298: 0x407c9420, 0x5299: 0x407c9620, 0x529a: 0x407c9820, 0x529b: 0x407c9a20, - 0x529c: 0x407c9c20, 0x529d: 0x407c9e20, 0x529e: 0x407ca020, 0x529f: 0x407ca220, - 0x52a0: 0x407ca420, 0x52a1: 0x407ca620, 0x52a2: 0x407ca820, 0x52a3: 0x407caa20, - 0x52a4: 0x407cac20, 0x52a5: 0x407cae20, 0x52a6: 0x407cb020, 0x52a7: 0x407cb220, - 0x52a8: 0x407cb420, 0x52a9: 0x407cb620, 0x52aa: 0x407cb820, 0x52ab: 0x407cba20, - 0x52ac: 0x407cbc20, 0x52ad: 0x407cbe20, 0x52ae: 0x407cc020, 0x52af: 0x407cc220, - 0x52b0: 0x407cc420, 0x52b1: 0x407cc620, 0x52b2: 0x407cc820, 0x52b3: 0x407cca20, - 0x52b4: 0x407ccc20, 0x52b5: 0x407cce20, 0x52b6: 0x407cd020, 0x52b7: 0x407cd220, - 0x52b8: 0x407cd420, 0x52b9: 0x407cd620, 0x52ba: 0x407cd820, 0x52bb: 0x407cda20, - 0x52bc: 0x407cdc20, 0x52bd: 0x407cde20, 0x52be: 0x407ce020, 0x52bf: 0x407ce220, - // Block 0x14b, offset 0x52c0 - 0x52c0: 0x407ce420, 0x52c1: 0x407ce620, 0x52c2: 0x407ce820, 0x52c3: 0x407cea20, - 0x52c4: 0x407cec20, 0x52c5: 0x407cee20, 0x52c6: 0x407cf020, 0x52c7: 0x407cf220, - 0x52c8: 0x407cf420, 0x52c9: 0x407cf620, 0x52ca: 0x407cf820, 0x52cb: 0x407cfa20, - 0x52cc: 0x407cfc20, 0x52cd: 0x407cfe20, 0x52ce: 0x407d0020, 0x52cf: 0x407d0220, - 0x52d0: 0x407d0420, 0x52d1: 0x407d0620, 0x52d2: 0x407d0820, 0x52d3: 0x407d0a20, - 0x52d4: 0x407d0c20, 0x52d5: 0x407d0e20, 0x52d6: 0x407d1020, 0x52d7: 0x407d1220, - 0x52d8: 0x407d1420, 0x52d9: 0x407d1620, 0x52da: 0x407d1820, 0x52db: 0x407d1a20, - 0x52dc: 0x407d1c20, 0x52dd: 0x407d1e20, 0x52de: 0x407d2020, 0x52df: 0x407d2220, - 0x52e0: 0x407d2420, 0x52e1: 0x407d2620, 0x52e2: 0x407d2820, 0x52e3: 0x407d2a20, - 0x52e4: 0x407d2c20, 0x52e5: 0x407d2e20, 0x52e6: 0x407d3020, 0x52e7: 0x407d3220, - 0x52e8: 0x407d3420, 0x52e9: 0x407d3620, 0x52ea: 0x407d3820, 0x52eb: 0x407d3a20, - 0x52ec: 0x407d3c20, 0x52ed: 0x407d3e20, 0x52ee: 0x407d4020, 0x52ef: 0x407d4220, - 0x52f0: 0x407d4420, 0x52f1: 0x407d4620, 0x52f2: 0x407d4820, 0x52f3: 0x407d4a20, - 0x52f4: 0x407d4c20, 0x52f5: 0x407d4e20, 0x52f6: 0x407d5020, 0x52f7: 0x407d5220, - 0x52f8: 0x407d5420, 0x52f9: 0x407d5620, 0x52fa: 0x407d5820, 0x52fb: 0x407d5a20, - 0x52fc: 0x407d5c20, 0x52fd: 0x407d5e20, 0x52fe: 0x407d6020, 0x52ff: 0x407d6220, - // Block 0x14c, offset 0x5300 - 0x5300: 0x407d6420, 0x5301: 0x407d6620, 0x5302: 0x407d6820, 0x5303: 0x407d6a20, - 0x5304: 0x407d6c20, 0x5305: 0x407d6e20, 0x5306: 0x407d7020, 0x5307: 0x407d7220, - 0x5308: 0x407d7420, 0x5309: 0x407d7620, 0x530a: 0x407d7820, 0x530b: 0x407d7a20, - 0x530c: 0x407d7c20, 0x530d: 0x407d7e20, 0x530e: 0x407d8020, 0x530f: 0x407d8220, - 0x5310: 0x407d8420, 0x5311: 0x407d8620, 0x5312: 0x407d8820, 0x5313: 0x407d8a20, - 0x5314: 0x407d8c20, 0x5315: 0x407d8e20, 0x5316: 0x407d9020, 0x5317: 0x407d9220, - 0x5318: 0x407d9420, 0x5319: 0x407d9620, 0x531a: 0x407d9820, 0x531b: 0x407d9a20, - 0x531c: 0x407d9c20, 0x531d: 0x407d9e20, 0x531e: 0x407da020, 0x531f: 0x407da220, - 0x5320: 0x407da420, 0x5321: 0x407da620, 0x5322: 0x407da820, 0x5323: 0x407daa20, - 0x5324: 0x407dac20, 0x5325: 0x407dae20, 0x5326: 0x407db020, 0x5327: 0x407db220, - 0x5328: 0x407db420, 0x5329: 0x407db620, 0x532a: 0x407db820, 0x532b: 0x407dba20, - 0x532c: 0x407dbc20, 0x532d: 0x407dbe20, 0x532e: 0x407dc020, - // Block 0x14d, offset 0x5340 - 0x5340: 0xe0000394, 0x5341: 0xe000045f, 0x5342: 0xe0000534, 0x5343: 0xe0000610, - 0x5344: 0xe00006cc, 0x5345: 0xe0000771, 0x5346: 0xe000081d, 0x5347: 0xe00008c2, - 0x5348: 0xe0000462, 0x5349: 0xe0000537, 0x534a: 0xe0000613, 0x534b: 0xe00006cf, - 0x534c: 0xe0000774, 0x534d: 0xe0000820, 0x534e: 0xe00008c5, 0x534f: 0xe000053a, - 0x5350: 0xe0000616, 0x5351: 0xe00006d2, 0x5352: 0xe0000777, 0x5353: 0xe0000823, - 0x5354: 0xe00008c8, 0x5355: 0xe000027f, 0x5356: 0xe0000397, 0x5357: 0xe0000465, - 0x5358: 0xe000053d, 0x5359: 0xe0000619, 0x535a: 0xe00006d5, 0x535b: 0xe000077a, - 0x535c: 0xe0000826, 0x535d: 0xe00008cb, 0x535e: 0xe0000282, 0x535f: 0xe000039a, - 0x5360: 0xe0000468, 0x5361: 0xe0000540, 0x5362: 0xe000061c, 0x5363: 0xe000039d, - 0x5364: 0xe000046b, 0x5365: 0xe000046e, 0x5366: 0xe0000543, 0x5367: 0xe000061f, - 0x5368: 0xe00006d8, 0x5369: 0xe000077d, 0x536a: 0xe0000829, 0x536b: 0xe00008ce, - 0x536c: 0xe0000285, 0x536d: 0xe00003a0, 0x536e: 0xe0000471, 0x536f: 0xe0000474, - 0x5370: 0xe0000546, 0x5371: 0xe0000622, 0x5372: 0x4029a020, 0x5373: 0x4029a220, - 0x5374: 0xe0000288, 0x5375: 0xe00003a3, 0x5376: 0xe0000477, 0x5377: 0xe000047a, - 0x5378: 0xe0000549, 0x5379: 0xe0000625, 0x537a: 0xe000047d, 0x537b: 0xe0000480, - 0x537c: 0xe000054c, 0x537d: 0xe000054f, 0x537e: 0xe0000552, 0x537f: 0xe0000555, - // Block 0x14e, offset 0x5380 - 0x5380: 0xe00006db, 0x5381: 0xe0000780, 0x5382: 0xe0000783, 0x5383: 0xe0000786, - 0x5384: 0xe000082c, 0x5385: 0xe000082f, 0x5386: 0xe00008d1, 0x5387: 0xe00008d4, - 0x5388: 0xe00008d7, 0x5389: 0xe00008da, 0x538a: 0xe00003a6, 0x538b: 0xe0000483, - 0x538c: 0xe0000558, 0x538d: 0xe0000628, 0x538e: 0xe00006de, 0x538f: 0xe000028b, - 0x5390: 0xe00003a9, 0x5391: 0xe0000486, 0x5392: 0xe000055b, 0x5393: 0xe000055e, - 0x5394: 0xe000062b, 0x5395: 0xe000062e, 0x5396: 0x4029a420, 0x5397: 0x4029a620, - 0x5398: 0xe000028e, 0x5399: 0xe00003ac, 0x539a: 0x4029a820, 0x539b: 0x4029aa20, - 0x539c: 0x4029ac20, 0x539d: 0x4029ae20, 0x539e: 0x4029b020, 0x539f: 0x4029b220, - 0x53a0: 0x4029b420, 0x53a1: 0x4029b620, 0x53a2: 0x4029b820, - 0x53b0: 0x4003ca20, 0x53b1: 0x4003cc20, 0x53b2: 0x4003ce20, 0x53b3: 0x4003d020, - // Block 0x14f, offset 0x53c0 - 0x53c0: 0x407dc220, 0x53c1: 0x407dc420, 0x53c2: 0x407dc620, 0x53c3: 0x407dc820, - 0x53c4: 0x407dca20, 0x53c5: 0x407dcc20, 0x53c6: 0x407dce20, 0x53c7: 0x407dd020, - 0x53c8: 0x407dd220, 0x53c9: 0x407dd420, 0x53ca: 0x407dd620, 0x53cb: 0x407dd820, - 0x53cc: 0x407dda20, 0x53cd: 0x407ddc20, 0x53ce: 0x407dde20, 0x53cf: 0x407de020, - 0x53d0: 0x407de220, 0x53d1: 0x407de420, 0x53d2: 0x407de620, 0x53d3: 0x407de820, - 0x53d4: 0x407dea20, 0x53d5: 0x407dec20, 0x53d6: 0x407dee20, 0x53d7: 0x407df020, - 0x53d8: 0x407df220, 0x53d9: 0x407df420, 0x53da: 0x407df620, 0x53db: 0x407df820, - 0x53dc: 0x407dfa20, 0x53dd: 0x407dfc20, 0x53de: 0x407dfe20, 0x53df: 0x407e0020, - 0x53e0: 0x407e0220, 0x53e1: 0x407e0420, 0x53e2: 0x407e0620, 0x53e3: 0x407e0820, - 0x53e4: 0x407e0a20, 0x53e5: 0x407e0c20, 0x53e6: 0x407e0e20, 0x53e7: 0x407e1020, - 0x53e8: 0x407e1220, 0x53e9: 0x407e1420, 0x53ea: 0x407e1620, 0x53eb: 0x407e1820, - 0x53ec: 0x407e1a20, 0x53ed: 0x407e1c20, 0x53ee: 0x407e1e20, 0x53ef: 0x407e2020, - 0x53f0: 0x407e2220, 0x53f1: 0x407e2420, 0x53f2: 0x407e2620, 0x53f3: 0x407e2820, - 0x53f4: 0x407e2a20, 0x53f5: 0x407e2c20, 0x53f6: 0x407e2e20, 0x53f7: 0x407e3020, - 0x53f8: 0x407e3220, 0x53f9: 0x407e3420, 0x53fa: 0x407e3620, 0x53fb: 0x407e3820, - 0x53fc: 0x407e3a20, 0x53fd: 0x407e3c20, 0x53fe: 0x407e3e20, 0x53ff: 0x407e4020, - // Block 0x150, offset 0x5400 - 0x5400: 0x407e4220, 0x5401: 0x407e4420, 0x5402: 0x407e4620, 0x5403: 0x407e4820, - 0x5404: 0x407e4a20, 0x5405: 0x407e4c20, 0x5406: 0x407e4e20, 0x5407: 0x407e5020, - 0x5408: 0x407e5220, 0x5409: 0x407e5420, 0x540a: 0x407e5620, 0x540b: 0x407e5820, - 0x540c: 0x407e5a20, 0x540d: 0x407e5c20, 0x540e: 0x407e5e20, 0x540f: 0x407e6020, - 0x5410: 0x407e6220, 0x5411: 0x407e6420, 0x5412: 0x407e6620, 0x5413: 0x407e6820, - 0x5414: 0x407e6a20, 0x5415: 0x407e6c20, 0x5416: 0x407e6e20, 0x5417: 0x407e7020, - 0x5418: 0x407e7220, 0x5419: 0x407e7420, 0x541a: 0x407e7620, 0x541b: 0x407e7820, - 0x541c: 0x407e7a20, 0x541d: 0x407e7c20, 0x541e: 0x407e7e20, 0x541f: 0x407e8020, - 0x5420: 0x407e8220, 0x5421: 0x407e8420, 0x5422: 0x407e8620, 0x5423: 0x407e8820, - 0x5424: 0x407e8a20, 0x5425: 0x407e8c20, 0x5426: 0x407e8e20, 0x5427: 0x407e9020, - 0x5428: 0x407e9220, 0x5429: 0x407e9420, 0x542a: 0x407e9620, 0x542b: 0x407e9820, - 0x542c: 0x407e9a20, 0x542d: 0x407e9c20, 0x542e: 0x407e9e20, 0x542f: 0x407ea020, - 0x5430: 0x407ea220, 0x5431: 0x407ea420, 0x5432: 0x407ea620, 0x5433: 0x407ea820, - 0x5434: 0x407eaa20, 0x5435: 0x407eac20, 0x5436: 0x407eae20, 0x5437: 0x407eb020, - 0x5438: 0x407eb220, 0x5439: 0x407eb420, 0x543a: 0x407eb620, 0x543b: 0x407eb820, - 0x543c: 0x407eba20, 0x543d: 0x407ebc20, 0x543e: 0x407ebe20, 0x543f: 0x407ec020, - // Block 0x151, offset 0x5440 - 0x5440: 0x407ec220, 0x5441: 0x407ec420, 0x5442: 0x407ec620, 0x5443: 0x407ec820, - 0x5444: 0x407eca20, 0x5445: 0x407ecc20, 0x5446: 0x407ece20, 0x5447: 0x407ed020, - 0x5448: 0x407ed220, 0x5449: 0x407ed420, 0x544a: 0x407ed620, 0x544b: 0x407ed820, - 0x544c: 0x407eda20, 0x544d: 0x407edc20, 0x544e: 0x407ede20, 0x544f: 0x407ee020, - 0x5450: 0x407ee220, 0x5451: 0x407ee420, 0x5452: 0x407ee620, 0x5453: 0x407ee820, - 0x5454: 0x407eea20, 0x5455: 0x407eec20, 0x5456: 0x407eee20, 0x5457: 0x407ef020, - 0x5458: 0x407ef220, 0x5459: 0x407ef420, 0x545a: 0x407ef620, 0x545b: 0x407ef820, - 0x545c: 0x407efa20, 0x545d: 0x407efc20, 0x545e: 0x407efe20, 0x545f: 0x407f0020, - 0x5460: 0x407f0220, 0x5461: 0x407f0420, 0x5462: 0x407f0620, 0x5463: 0x407f0820, - 0x5464: 0x407f0a20, 0x5465: 0x407f0c20, 0x5466: 0x407f0e20, 0x5467: 0x407f1020, - 0x5468: 0x407f1220, 0x5469: 0x407f1420, 0x546a: 0x407f1620, 0x546b: 0x407f1820, - 0x546c: 0x407f1a20, 0x546d: 0x407f1c20, 0x546e: 0x407f1e20, 0x546f: 0x407f2020, - 0x5470: 0x407f2220, 0x5471: 0x407f2420, 0x5472: 0x407f2620, 0x5473: 0x407f2820, - 0x5474: 0x407f2a20, 0x5475: 0x407f2c20, 0x5476: 0x407f2e20, 0x5477: 0x407f3020, - 0x5478: 0x407f3220, 0x5479: 0x407f3420, 0x547a: 0x407f3620, 0x547b: 0x407f3820, - 0x547c: 0x407f3a20, 0x547d: 0x407f3c20, 0x547e: 0x407f3e20, 0x547f: 0x407f4020, - // Block 0x152, offset 0x5480 - 0x5480: 0x407f4220, 0x5481: 0x407f4420, 0x5482: 0x407f4620, 0x5483: 0x407f4820, - 0x5484: 0x407f4a20, 0x5485: 0x407f4c20, 0x5486: 0x407f4e20, 0x5487: 0x407f5020, - 0x5488: 0x407f5220, 0x5489: 0x407f5420, 0x548a: 0x407f5620, 0x548b: 0x407f5820, - 0x548c: 0x407f5a20, 0x548d: 0x407f5c20, 0x548e: 0x407f5e20, 0x548f: 0x407f6020, - 0x5490: 0x407f6220, 0x5491: 0x407f6420, 0x5492: 0x407f6620, 0x5493: 0x407f6820, - 0x5494: 0x407f6a20, 0x5495: 0x407f6c20, 0x5496: 0x407f6e20, 0x5497: 0x407f7020, - 0x5498: 0x407f7220, 0x5499: 0x407f7420, 0x549a: 0x407f7620, 0x549b: 0x407f7820, - 0x549c: 0x407f7a20, 0x549d: 0x407f7c20, 0x549e: 0x407f7e20, 0x549f: 0x407f8020, - 0x54a0: 0x407f8220, 0x54a1: 0x407f8420, 0x54a2: 0x407f8620, 0x54a3: 0x407f8820, - 0x54a4: 0x407f8a20, 0x54a5: 0x407f8c20, 0x54a6: 0x407f8e20, 0x54a7: 0x407f9020, - 0x54a8: 0x407f9220, 0x54a9: 0x407f9420, 0x54aa: 0x407f9620, 0x54ab: 0x407f9820, - 0x54ac: 0x407f9a20, 0x54ad: 0x407f9c20, 0x54ae: 0x407f9e20, 0x54af: 0x407fa020, - 0x54b0: 0x407fa220, 0x54b1: 0x407fa420, 0x54b2: 0x407fa620, 0x54b3: 0x407fa820, - 0x54b4: 0x407faa20, 0x54b5: 0x407fac20, 0x54b6: 0x407fae20, 0x54b7: 0x407fb020, - 0x54b8: 0x407fb220, 0x54b9: 0x407fb420, 0x54ba: 0x407fb620, 0x54bb: 0x407fb820, - 0x54bc: 0x407fba20, 0x54bd: 0x407fbc20, 0x54be: 0x407fbe20, 0x54bf: 0x407fc020, - // Block 0x153, offset 0x54c0 - 0x54c0: 0x407fc220, 0x54c1: 0x407fc420, 0x54c2: 0x407fc620, 0x54c3: 0x407fc820, - 0x54c4: 0x407fca20, 0x54c5: 0x407fcc20, 0x54c6: 0x407fce20, 0x54c7: 0x407fd020, - 0x54c8: 0x407fd220, 0x54c9: 0x407fd420, 0x54ca: 0x407fd620, 0x54cb: 0x407fd820, - 0x54cc: 0x407fda20, 0x54cd: 0x407fdc20, 0x54ce: 0x407fde20, 0x54cf: 0x407fe020, - 0x54d0: 0x407fe220, 0x54d1: 0x407fe420, 0x54d2: 0x407fe620, 0x54d3: 0x407fe820, - 0x54d4: 0x407fea20, 0x54d5: 0x407fec20, 0x54d6: 0x407fee20, 0x54d7: 0x407ff020, - 0x54d8: 0x407ff220, 0x54d9: 0x407ff420, 0x54da: 0x407ff620, 0x54db: 0x407ff820, - 0x54dc: 0x407ffa20, 0x54dd: 0x407ffc20, 0x54de: 0x407ffe20, 0x54df: 0x40800020, - 0x54e0: 0x40800220, 0x54e1: 0x40800420, 0x54e2: 0x40800620, 0x54e3: 0x40800820, - 0x54e4: 0x40800a20, 0x54e5: 0x40800c20, 0x54e6: 0x40800e20, 0x54e7: 0x40801020, - 0x54e8: 0x40801220, 0x54e9: 0x40801420, 0x54ea: 0x40801620, 0x54eb: 0x40801820, - 0x54ec: 0x40801a20, 0x54ed: 0x40801c20, 0x54ee: 0x40801e20, 0x54ef: 0x40802020, - 0x54f0: 0x40802220, 0x54f1: 0x40802420, 0x54f2: 0x40802620, 0x54f3: 0x40802820, - 0x54f4: 0x40802a20, 0x54f5: 0x40802c20, 0x54f6: 0x40802e20, 0x54f7: 0x40803020, - 0x54f8: 0x40803220, 0x54f9: 0x40803420, 0x54fa: 0x40803620, 0x54fb: 0x40803820, - 0x54fc: 0x40803a20, 0x54fd: 0x40803c20, 0x54fe: 0x40803e20, 0x54ff: 0x40804020, - // Block 0x154, offset 0x5500 - 0x5500: 0x40804220, 0x5501: 0x40804420, 0x5502: 0x40804620, 0x5503: 0x40804820, - 0x5504: 0x40804a20, 0x5505: 0x40804c20, 0x5506: 0x40804e20, 0x5507: 0x40805020, - 0x5508: 0x40805220, 0x5509: 0x40805420, 0x550a: 0x40805620, 0x550b: 0x40805820, - 0x550c: 0x40805a20, 0x550d: 0x40805c20, 0x550e: 0x40805e20, 0x550f: 0x40806020, - 0x5510: 0x40806220, 0x5511: 0x40806420, 0x5512: 0x40806620, 0x5513: 0x40806820, - 0x5514: 0x40806a20, 0x5515: 0x40806c20, 0x5516: 0x40806e20, 0x5517: 0x40807020, - 0x5518: 0x40807220, 0x5519: 0x40807420, 0x551a: 0x40807620, 0x551b: 0x40807820, - 0x551c: 0x40807a20, 0x551d: 0x40807c20, 0x551e: 0x40807e20, 0x551f: 0x40808020, - 0x5520: 0x40808220, 0x5521: 0x40808420, 0x5522: 0x40808620, 0x5523: 0x40808820, - 0x5524: 0x40808a20, 0x5525: 0x40808c20, 0x5526: 0x40808e20, 0x5527: 0x40809020, - 0x5528: 0x40809220, 0x5529: 0x40809420, 0x552a: 0x40809620, 0x552b: 0x40809820, - 0x552c: 0x40809a20, 0x552d: 0x40809c20, 0x552e: 0x40809e20, 0x552f: 0x4080a020, - 0x5530: 0x4080a220, 0x5531: 0x4080a420, 0x5532: 0x4080a620, 0x5533: 0x4080a820, - 0x5534: 0x4080aa20, 0x5535: 0x4080ac20, 0x5536: 0x4080ae20, 0x5537: 0x4080b020, - 0x5538: 0x4080b220, 0x5539: 0x4080b420, 0x553a: 0x4080b620, 0x553b: 0x4080b820, - 0x553c: 0x4080ba20, 0x553d: 0x4080bc20, 0x553e: 0x4080be20, 0x553f: 0x4080c020, - // Block 0x155, offset 0x5540 - 0x5540: 0x4080c220, 0x5541: 0x4080c420, 0x5542: 0x4080c620, 0x5543: 0x4080c820, - 0x5544: 0x4080ca20, 0x5545: 0x4080cc20, 0x5546: 0x4080ce20, 0x5547: 0x4080d020, - 0x5548: 0x4080d220, 0x5549: 0x4080d420, 0x554a: 0x4080d620, 0x554b: 0x4080d820, - 0x554c: 0x4080da20, 0x554d: 0x4080dc20, 0x554e: 0x4080de20, 0x554f: 0x4080e020, - 0x5550: 0x4080e220, 0x5551: 0x4080e420, 0x5552: 0x4080e620, 0x5553: 0x4080e820, - 0x5554: 0x4080ea20, 0x5555: 0x4080ec20, 0x5556: 0x4080ee20, 0x5557: 0x4080f020, - 0x5558: 0x4080f220, 0x5559: 0x4080f420, 0x555a: 0x4080f620, 0x555b: 0x4080f820, - 0x555c: 0x4080fa20, 0x555d: 0x4080fc20, 0x555e: 0x4080fe20, 0x555f: 0x40810020, - 0x5560: 0x40810220, 0x5561: 0x40810420, 0x5562: 0x40810620, 0x5563: 0x40810820, - 0x5564: 0x40810a20, 0x5565: 0x40810c20, 0x5566: 0x40810e20, 0x5567: 0x40811020, - 0x5568: 0x40811220, 0x5569: 0x40811420, 0x556a: 0x40811620, 0x556b: 0x40811820, - 0x556c: 0x40811a20, 0x556d: 0x40811c20, 0x556e: 0x40811e20, 0x556f: 0x40812020, - 0x5570: 0x40812220, 0x5571: 0x40812420, 0x5572: 0x40812620, 0x5573: 0x40812820, - 0x5574: 0x40812a20, 0x5575: 0x40812c20, 0x5576: 0x40812e20, 0x5577: 0x40813020, - 0x5578: 0x40813220, 0x5579: 0x40813420, 0x557a: 0x40813620, 0x557b: 0x40813820, - 0x557c: 0x40813a20, 0x557d: 0x40813c20, 0x557e: 0x40813e20, 0x557f: 0x40814020, - // Block 0x156, offset 0x5580 - 0x5580: 0x40814220, 0x5581: 0x40814420, 0x5582: 0x40814620, 0x5583: 0x40814820, - 0x5584: 0x40814a20, 0x5585: 0x40814c20, 0x5586: 0x40814e20, 0x5587: 0x40815020, - 0x5588: 0x40815220, 0x5589: 0x40815420, 0x558a: 0x40815620, 0x558b: 0x40815820, - 0x558c: 0x40815a20, 0x558d: 0x40815c20, 0x558e: 0x40815e20, 0x558f: 0x40816020, - 0x5590: 0x40816220, 0x5591: 0x40816420, 0x5592: 0x40816620, 0x5593: 0x40816820, - 0x5594: 0x40816a20, 0x5595: 0x40816c20, 0x5596: 0x40816e20, 0x5597: 0x40817020, - 0x5598: 0x40817220, 0x5599: 0x40817420, 0x559a: 0x40817620, 0x559b: 0x40817820, - 0x559c: 0x40817a20, 0x559d: 0x40817c20, 0x559e: 0x40817e20, 0x559f: 0x40818020, - 0x55a0: 0x40818220, 0x55a1: 0x40818420, 0x55a2: 0x40818620, 0x55a3: 0x40818820, - 0x55a4: 0x40818a20, 0x55a5: 0x40818c20, 0x55a6: 0x40818e20, 0x55a7: 0x40819020, - 0x55a8: 0x40819220, 0x55a9: 0x40819420, 0x55aa: 0x40819620, 0x55ab: 0x40819820, - 0x55ac: 0x40819a20, 0x55ad: 0x40819c20, 0x55ae: 0x40819e20, 0x55af: 0x4081a020, - 0x55b0: 0x4081a220, 0x55b1: 0x4081a420, 0x55b2: 0x4081a620, 0x55b3: 0x4081a820, - 0x55b4: 0x4081aa20, 0x55b5: 0x4081ac20, 0x55b6: 0x4081ae20, 0x55b7: 0x4081b020, - 0x55b8: 0x4081b220, 0x55b9: 0x4081b420, 0x55ba: 0x4081b620, 0x55bb: 0x4081b820, - 0x55bc: 0x4081ba20, 0x55bd: 0x4081bc20, 0x55be: 0x4081be20, 0x55bf: 0x4081c020, - // Block 0x157, offset 0x55c0 - 0x55c0: 0x4081c220, 0x55c1: 0x4081c420, 0x55c2: 0x4081c620, 0x55c3: 0x4081c820, - 0x55c4: 0x4081ca20, 0x55c5: 0x4081cc20, 0x55c6: 0x4081ce20, 0x55c7: 0x4081d020, - 0x55c8: 0x4081d220, 0x55c9: 0x4081d420, 0x55ca: 0x4081d620, 0x55cb: 0x4081d820, - 0x55cc: 0x4081da20, 0x55cd: 0x4081dc20, 0x55ce: 0x4081de20, 0x55cf: 0x4081e020, - 0x55d0: 0x4081e220, 0x55d1: 0x4081e420, 0x55d2: 0x4081e620, 0x55d3: 0x4081e820, - 0x55d4: 0x4081ea20, 0x55d5: 0x4081ec20, 0x55d6: 0x4081ee20, 0x55d7: 0x4081f020, - 0x55d8: 0x4081f220, 0x55d9: 0x4081f420, 0x55da: 0x4081f620, 0x55db: 0x4081f820, - 0x55dc: 0x4081fa20, 0x55dd: 0x4081fc20, 0x55de: 0x4081fe20, 0x55df: 0x40820020, - 0x55e0: 0x40820220, 0x55e1: 0x40820420, 0x55e2: 0x40820620, 0x55e3: 0x40820820, - 0x55e4: 0x40820a20, 0x55e5: 0x40820c20, 0x55e6: 0x40820e20, 0x55e7: 0x40821020, - 0x55e8: 0x40821220, 0x55e9: 0x40821420, 0x55ea: 0x40821620, 0x55eb: 0x40821820, - 0x55ec: 0x40821a20, 0x55ed: 0x40821c20, 0x55ee: 0x40821e20, 0x55ef: 0x40822020, - 0x55f0: 0x40822220, 0x55f1: 0x40822420, 0x55f2: 0x40822620, 0x55f3: 0x40822820, - 0x55f4: 0x40822a20, 0x55f5: 0x40822c20, 0x55f6: 0x40822e20, 0x55f7: 0x40823020, - 0x55f8: 0x40823220, 0x55f9: 0x40823420, 0x55fa: 0x40823620, 0x55fb: 0x40823820, - 0x55fc: 0x40823a20, 0x55fd: 0x40823c20, 0x55fe: 0x40823e20, 0x55ff: 0x40824020, - // Block 0x158, offset 0x5600 - 0x5600: 0x40824220, 0x5601: 0x40824420, 0x5602: 0x40824620, 0x5603: 0x40824820, - 0x5604: 0x40824a20, 0x5605: 0x40824c20, 0x5606: 0x40824e20, 0x5607: 0x40825020, - 0x5608: 0x40825220, 0x5609: 0x40825420, 0x560a: 0x40825620, 0x560b: 0x40825820, - 0x560c: 0x40825a20, 0x560d: 0x40825c20, 0x560e: 0x40825e20, 0x560f: 0x40826020, - 0x5610: 0x40826220, 0x5611: 0x40826420, 0x5612: 0x40826620, 0x5613: 0x40826820, - 0x5614: 0x40826a20, 0x5615: 0x40826c20, 0x5616: 0x40826e20, 0x5617: 0x40827020, - 0x5618: 0x40827220, 0x5619: 0x40827420, 0x561a: 0x40827620, 0x561b: 0x40827820, - 0x561c: 0x40827a20, 0x561d: 0x40827c20, 0x561e: 0x40827e20, 0x561f: 0x40828020, - 0x5620: 0x40828220, 0x5621: 0x40828420, 0x5622: 0x40828620, 0x5623: 0x40828820, - 0x5624: 0x40828a20, 0x5625: 0x40828c20, 0x5626: 0x40828e20, 0x5627: 0x40829020, - 0x5628: 0x40829220, 0x5629: 0x40829420, 0x562a: 0x40829620, 0x562b: 0x40829820, - 0x562c: 0x40829a20, 0x562d: 0x40829c20, 0x562e: 0x40829e20, 0x562f: 0x4082a020, - 0x5630: 0x4082a220, 0x5631: 0x4082a420, 0x5632: 0x4082a620, 0x5633: 0x4082a820, - 0x5634: 0x4082aa20, 0x5635: 0x4082ac20, 0x5636: 0x4082ae20, 0x5637: 0x4082b020, - 0x5638: 0x4082b220, 0x5639: 0x4082b420, 0x563a: 0x4082b620, 0x563b: 0x4082b820, - 0x563c: 0x4082ba20, 0x563d: 0x4082bc20, 0x563e: 0x4082be20, 0x563f: 0x4082c020, - // Block 0x159, offset 0x5640 - 0x5640: 0x4082c220, 0x5641: 0x4082c420, 0x5642: 0x4082c620, 0x5643: 0x4082c820, - 0x5644: 0x4082ca20, 0x5645: 0x4082cc20, 0x5646: 0x4082ce20, 0x5647: 0x4082d020, - 0x5648: 0x4082d220, 0x5649: 0x4082d420, 0x564a: 0x4082d620, 0x564b: 0x4082d820, - 0x564c: 0x4082da20, 0x564d: 0x4082dc20, 0x564e: 0x4082de20, 0x564f: 0x4082e020, - 0x5650: 0x4082e220, 0x5651: 0x4082e420, 0x5652: 0x4082e620, 0x5653: 0x4082e820, - 0x5654: 0x4082ea20, 0x5655: 0x4082ec20, 0x5656: 0x4082ee20, 0x5657: 0x4082f020, - 0x5658: 0x4082f220, 0x5659: 0x4082f420, 0x565a: 0x4082f620, 0x565b: 0x4082f820, - 0x565c: 0x4082fa20, 0x565d: 0x4082fc20, 0x565e: 0x4082fe20, 0x565f: 0x40830020, - 0x5660: 0x40830220, 0x5661: 0x40830420, 0x5662: 0x40830620, 0x5663: 0x40830820, - 0x5664: 0x40830a20, 0x5665: 0x40830c20, 0x5666: 0x40830e20, 0x5667: 0x40831020, - 0x5668: 0x40831220, 0x5669: 0x40831420, 0x566a: 0x40831620, 0x566b: 0x40831820, - 0x566c: 0x40831a20, 0x566d: 0x40831c20, 0x566e: 0x40831e20, 0x566f: 0x40832020, - 0x5670: 0x40832220, 0x5671: 0x40832420, 0x5672: 0x40832620, 0x5673: 0x40832820, - 0x5674: 0x40832a20, 0x5675: 0x40832c20, 0x5676: 0x40832e20, 0x5677: 0x40833020, - 0x5678: 0x40833220, 0x5679: 0x40833420, 0x567a: 0x40833620, 0x567b: 0x40833820, - 0x567c: 0x40833a20, 0x567d: 0x40833c20, 0x567e: 0x40833e20, 0x567f: 0x40834020, - // Block 0x15a, offset 0x5680 - 0x5680: 0x40834220, 0x5681: 0x40834420, 0x5682: 0x40834620, 0x5683: 0x40834820, - 0x5684: 0x40834a20, 0x5685: 0x40834c20, 0x5686: 0x40834e20, 0x5687: 0x40835020, - 0x5688: 0x40835220, 0x5689: 0x40835420, 0x568a: 0x40835620, 0x568b: 0x40835820, - 0x568c: 0x40835a20, 0x568d: 0x40835c20, 0x568e: 0x40835e20, 0x568f: 0x40836020, - 0x5690: 0x40836220, 0x5691: 0x40836420, 0x5692: 0x40836620, 0x5693: 0x40836820, - 0x5694: 0x40836a20, 0x5695: 0x40836c20, 0x5696: 0x40836e20, 0x5697: 0x40837020, - 0x5698: 0x40837220, 0x5699: 0x40837420, 0x569a: 0x40837620, 0x569b: 0x40837820, - 0x569c: 0x40837a20, 0x569d: 0x40837c20, 0x569e: 0x40837e20, 0x569f: 0x40838020, - 0x56a0: 0x40838220, 0x56a1: 0x40838420, 0x56a2: 0x40838620, 0x56a3: 0x40838820, - 0x56a4: 0x40838a20, 0x56a5: 0x40838c20, 0x56a6: 0x40838e20, 0x56a7: 0x40839020, - 0x56a8: 0x40839220, 0x56a9: 0x40839420, 0x56aa: 0x40839620, 0x56ab: 0x40839820, - 0x56ac: 0x40839a20, 0x56ad: 0x40839c20, 0x56ae: 0x40839e20, 0x56af: 0x4083a020, - 0x56b0: 0x4083a220, 0x56b1: 0x4083a420, 0x56b2: 0x4083a620, 0x56b3: 0x4083a820, - 0x56b4: 0x4083aa20, 0x56b5: 0x4083ac20, 0x56b6: 0x4083ae20, 0x56b7: 0x4083b020, - 0x56b8: 0x4083b220, 0x56b9: 0x4083b420, 0x56ba: 0x4083b620, 0x56bb: 0x4083b820, - 0x56bc: 0x4083ba20, 0x56bd: 0x4083bc20, 0x56be: 0x4083be20, 0x56bf: 0x4083c020, - // Block 0x15b, offset 0x56c0 - 0x56c0: 0x4083c220, 0x56c1: 0x4083c420, 0x56c2: 0x4083c620, 0x56c3: 0x4083c820, - 0x56c4: 0x4083ca20, 0x56c5: 0x4083cc20, 0x56c6: 0x4083ce20, 0x56c7: 0x4083d020, - 0x56c8: 0x4083d220, 0x56c9: 0x4083d420, 0x56ca: 0x4083d620, 0x56cb: 0x4083d820, - 0x56cc: 0x4083da20, 0x56cd: 0x4083dc20, 0x56ce: 0x4083de20, 0x56cf: 0x4083e020, - 0x56d0: 0x4083e220, 0x56d1: 0x4083e420, 0x56d2: 0x4083e620, 0x56d3: 0x4083e820, - 0x56d4: 0x4083ea20, 0x56d5: 0x4083ec20, 0x56d6: 0x4083ee20, 0x56d7: 0x4083f020, - 0x56d8: 0x4083f220, 0x56d9: 0x4083f420, 0x56da: 0x4083f620, 0x56db: 0x4083f820, - 0x56dc: 0x4083fa20, 0x56dd: 0x4083fc20, 0x56de: 0x4083fe20, 0x56df: 0x40840020, - 0x56e0: 0x40840220, 0x56e1: 0x40840420, 0x56e2: 0x40840620, 0x56e3: 0x40840820, - 0x56e4: 0x40840a20, 0x56e5: 0x40840c20, 0x56e6: 0x40840e20, 0x56e7: 0x40841020, - 0x56e8: 0x40841220, 0x56e9: 0x40841420, 0x56ea: 0x40841620, 0x56eb: 0x40841820, - 0x56ec: 0x40841a20, 0x56ed: 0x40841c20, 0x56ee: 0x40841e20, 0x56ef: 0x40842020, - 0x56f0: 0x40842220, 0x56f1: 0x40842420, 0x56f2: 0x40842620, 0x56f3: 0x40842820, - 0x56f4: 0x40842a20, 0x56f5: 0x40842c20, 0x56f6: 0x40842e20, 0x56f7: 0x40843020, - 0x56f8: 0x40843220, 0x56f9: 0x40843420, 0x56fa: 0x40843620, 0x56fb: 0x40843820, - 0x56fc: 0x40843a20, 0x56fd: 0x40843c20, 0x56fe: 0x40843e20, 0x56ff: 0x40844020, - // Block 0x15c, offset 0x5700 - 0x5700: 0x40844220, 0x5701: 0x40844420, 0x5702: 0x40844620, 0x5703: 0x40844820, - 0x5704: 0x40844a20, 0x5705: 0x40844c20, 0x5706: 0x40844e20, 0x5707: 0x40845020, - 0x5708: 0x40845220, 0x5709: 0x40845420, 0x570a: 0x40845620, 0x570b: 0x40845820, - 0x570c: 0x40845a20, 0x570d: 0x40845c20, 0x570e: 0x40845e20, 0x570f: 0x40846020, - 0x5710: 0x40846220, 0x5711: 0x40846420, 0x5712: 0x40846620, 0x5713: 0x40846820, - 0x5714: 0x40846a20, 0x5715: 0x40846c20, 0x5716: 0x40846e20, 0x5717: 0x40847020, - 0x5718: 0x40847220, 0x5719: 0x40847420, 0x571a: 0x40847620, 0x571b: 0x40847820, - 0x571c: 0x40847a20, 0x571d: 0x40847c20, 0x571e: 0x40847e20, 0x571f: 0x40848020, - 0x5720: 0x40848220, 0x5721: 0x40848420, 0x5722: 0x40848620, 0x5723: 0x40848820, - 0x5724: 0x40848a20, 0x5725: 0x40848c20, 0x5726: 0x40848e20, 0x5727: 0x40849020, - 0x5728: 0x40849220, 0x5729: 0x40849420, 0x572a: 0x40849620, 0x572b: 0x40849820, - 0x572c: 0x40849a20, 0x572d: 0x40849c20, 0x572e: 0x40849e20, 0x572f: 0x4084a020, - 0x5730: 0x4084a220, 0x5731: 0x4084a420, 0x5732: 0x4084a620, 0x5733: 0x4084a820, - 0x5734: 0x4084aa20, 0x5735: 0x4084ac20, 0x5736: 0x4084ae20, 0x5737: 0x4084b020, - 0x5738: 0x4084b220, 0x5739: 0x4084b420, 0x573a: 0x4084b620, 0x573b: 0x4084b820, - 0x573c: 0x4084ba20, 0x573d: 0x4084bc20, 0x573e: 0x4084be20, 0x573f: 0x4084c020, - // Block 0x15d, offset 0x5740 - 0x5740: 0x4084c220, 0x5741: 0x4084c420, 0x5742: 0x4084c620, 0x5743: 0x4084c820, - 0x5744: 0x4084ca20, 0x5745: 0x4084cc20, 0x5746: 0x4084ce20, 0x5747: 0x4084d020, - 0x5748: 0x4084d220, 0x5749: 0x4084d420, 0x574a: 0x4084d620, 0x574b: 0x4084d820, - 0x574c: 0x4084da20, 0x574d: 0x4084dc20, 0x574e: 0x4084de20, 0x574f: 0x4084e020, - 0x5750: 0x4084e220, 0x5751: 0x4084e420, 0x5752: 0x4084e620, 0x5753: 0x4084e820, - 0x5754: 0x4084ea20, 0x5755: 0x4084ec20, 0x5756: 0x4084ee20, 0x5757: 0x4084f020, - 0x5758: 0x4084f220, 0x5759: 0x4084f420, 0x575a: 0x4084f620, 0x575b: 0x4084f820, - 0x575c: 0x4084fa20, 0x575d: 0x4084fc20, 0x575e: 0x4084fe20, 0x575f: 0x40850020, - 0x5760: 0x40850220, 0x5761: 0x40850420, 0x5762: 0x40850620, 0x5763: 0x40850820, - 0x5764: 0x40850a20, 0x5765: 0x40850c20, 0x5766: 0x40850e20, 0x5767: 0x40851020, - 0x5768: 0x40851220, 0x5769: 0x40851420, 0x576a: 0x40851620, 0x576b: 0x40851820, - 0x576c: 0x40851a20, 0x576d: 0x40851c20, 0x576e: 0x40851e20, 0x576f: 0x40852020, - 0x5770: 0x40852220, 0x5771: 0x40852420, 0x5772: 0x40852620, 0x5773: 0x40852820, - 0x5774: 0x40852a20, 0x5775: 0x40852c20, 0x5776: 0x40852e20, 0x5777: 0x40853020, - 0x5778: 0x40853220, 0x5779: 0x40853420, 0x577a: 0x40853620, 0x577b: 0x40853820, - 0x577c: 0x40853a20, 0x577d: 0x40853c20, 0x577e: 0x40853e20, 0x577f: 0x40854020, - // Block 0x15e, offset 0x5780 - 0x5780: 0x40854220, 0x5781: 0x40854420, 0x5782: 0x40854620, 0x5783: 0x40854820, - 0x5784: 0x40854a20, 0x5785: 0x40854c20, 0x5786: 0x40854e20, 0x5787: 0x40855020, - 0x5788: 0x40855220, 0x5789: 0x40855420, 0x578a: 0x40855620, 0x578b: 0x40855820, - 0x578c: 0x40855a20, 0x578d: 0x40855c20, 0x578e: 0x40855e20, 0x578f: 0x40856020, - 0x5790: 0x40856220, 0x5791: 0x40856420, 0x5792: 0x40856620, 0x5793: 0x40856820, - 0x5794: 0x40856a20, 0x5795: 0x40856c20, 0x5796: 0x40856e20, 0x5797: 0x40857020, - 0x5798: 0x40857220, 0x5799: 0x40857420, 0x579a: 0x40857620, 0x579b: 0x40857820, - 0x579c: 0x40857a20, 0x579d: 0x40857c20, 0x579e: 0x40857e20, 0x579f: 0x40858020, - 0x57a0: 0x40858220, 0x57a1: 0x40858420, 0x57a2: 0x40858620, 0x57a3: 0x40858820, - 0x57a4: 0x40858a20, 0x57a5: 0x40858c20, 0x57a6: 0x40858e20, 0x57a7: 0x40859020, - 0x57a8: 0x40859220, 0x57a9: 0x40859420, 0x57aa: 0x40859620, 0x57ab: 0x40859820, - 0x57ac: 0x40859a20, 0x57ad: 0x40859c20, 0x57ae: 0x40859e20, 0x57af: 0x4085a020, - 0x57b0: 0x4085a220, 0x57b1: 0x4085a420, 0x57b2: 0x4085a620, 0x57b3: 0x4085a820, - 0x57b4: 0x4085aa20, 0x57b5: 0x4085ac20, 0x57b6: 0x4085ae20, 0x57b7: 0x4085b020, - 0x57b8: 0x4085b220, 0x57b9: 0x4085b420, 0x57ba: 0x4085b620, 0x57bb: 0x4085b820, - 0x57bc: 0x4085ba20, 0x57bd: 0x4085bc20, 0x57be: 0x4085be20, 0x57bf: 0x4085c020, - // Block 0x15f, offset 0x57c0 - 0x57c0: 0x4085c220, 0x57c1: 0x4085c420, 0x57c2: 0x4085c620, 0x57c3: 0x4085c820, - 0x57c4: 0x4085ca20, 0x57c5: 0x4085cc20, 0x57c6: 0x4085ce20, 0x57c7: 0x4085d020, - 0x57c8: 0x4085d220, 0x57c9: 0x4085d420, 0x57ca: 0x4085d620, 0x57cb: 0x4085d820, - 0x57cc: 0x4085da20, 0x57cd: 0x4085dc20, 0x57ce: 0x4085de20, 0x57cf: 0x4085e020, - 0x57d0: 0x4085e220, 0x57d1: 0x4085e420, 0x57d2: 0x4085e620, 0x57d3: 0x4085e820, - 0x57d4: 0x4085ea20, 0x57d5: 0x4085ec20, 0x57d6: 0x4085ee20, 0x57d7: 0x4085f020, - 0x57d8: 0x4085f220, 0x57d9: 0x4085f420, 0x57da: 0x4085f620, 0x57db: 0x4085f820, - 0x57dc: 0x4085fa20, 0x57dd: 0x4085fc20, 0x57de: 0x4085fe20, 0x57df: 0x40860020, - 0x57e0: 0x40860220, 0x57e1: 0x40860420, 0x57e2: 0x40860620, 0x57e3: 0x40860820, - 0x57e4: 0x40860a20, 0x57e5: 0x40860c20, 0x57e6: 0x40860e20, 0x57e7: 0x40861020, - 0x57e8: 0x40861220, 0x57e9: 0x40861420, 0x57ea: 0x40861620, 0x57eb: 0x40861820, - 0x57ec: 0x40861a20, 0x57ed: 0x40861c20, 0x57ee: 0x40861e20, - // Block 0x160, offset 0x5800 - 0x5800: 0x405e3a20, 0x5801: 0x405e3c20, 0x5802: 0x405e3e20, 0x5803: 0x405e4020, - 0x5804: 0x405e4220, 0x5805: 0x405e4420, 0x5806: 0x405e4620, 0x5807: 0x405e4820, - 0x5808: 0x405e4a20, 0x5809: 0x405e4c20, 0x580a: 0x405e4e20, 0x580b: 0x405e5020, - 0x580c: 0x405e5220, 0x580d: 0x405e5420, 0x580e: 0x405e5620, 0x580f: 0x405e5820, - 0x5810: 0x405e5a20, 0x5811: 0x405e5c20, 0x5812: 0x405e5e20, 0x5813: 0x405e6020, - 0x5814: 0x405e6220, 0x5815: 0x405e6420, 0x5816: 0x405e6620, 0x5817: 0x405e6820, - 0x5818: 0x405e6a20, 0x5819: 0x405e6c20, 0x581a: 0x405e6e20, 0x581b: 0x405e7020, - 0x581c: 0x405e7220, 0x581d: 0x405e7420, 0x581e: 0x405e7620, 0x581f: 0x405e7820, - 0x5820: 0x405e7a20, 0x5821: 0x405e7c20, 0x5822: 0x405e7e20, 0x5823: 0x405e8020, - 0x5824: 0x405e8220, 0x5825: 0x405e8420, 0x5826: 0x405e8620, 0x5827: 0x405e8820, - 0x5828: 0x405e8a20, 0x5829: 0x405e8c20, 0x582a: 0x405e8e20, 0x582b: 0x405e9020, - 0x582c: 0x405e9220, 0x582d: 0x405e9420, 0x582e: 0x405e9620, 0x582f: 0x405e9820, - 0x5830: 0x405e9a20, 0x5831: 0x405e9c20, 0x5832: 0x405e9e20, 0x5833: 0x405ea020, - 0x5834: 0x405ea220, 0x5835: 0x405ea420, 0x5836: 0x405ea620, 0x5837: 0x405ea820, - 0x5838: 0x405eaa20, 0x5839: 0x405eac20, 0x583a: 0x405eae20, 0x583b: 0x405eb020, - 0x583c: 0x405eb220, 0x583d: 0x405eb420, 0x583e: 0x405eb620, 0x583f: 0x405eb820, - // Block 0x161, offset 0x5840 - 0x5840: 0x405eba20, 0x5841: 0x405ebc20, 0x5842: 0x405ebe20, 0x5843: 0x405ec020, - 0x5844: 0x405ec220, 0x5845: 0x405ec420, 0x5846: 0x405ec620, 0x5847: 0x405ec820, - 0x5848: 0x405eca20, 0x5849: 0x405ecc20, 0x584a: 0x405ece20, 0x584b: 0x405ed020, - 0x584c: 0x405ed220, 0x584d: 0x405ed420, 0x584e: 0x405ed620, 0x584f: 0x405ed820, - 0x5850: 0x405eda20, 0x5851: 0x405edc20, 0x5852: 0x405ede20, 0x5853: 0x405ee020, - 0x5854: 0x405ee220, 0x5855: 0x405ee420, 0x5856: 0x405ee620, 0x5857: 0x405ee820, - 0x5858: 0x405eea20, 0x5859: 0x405eec20, 0x585a: 0x405eee20, 0x585b: 0x405ef020, - 0x585c: 0x405ef220, 0x585d: 0x405ef420, 0x585e: 0x405ef620, 0x585f: 0x405ef820, - 0x5860: 0x405efa20, 0x5861: 0x405efc20, 0x5862: 0x405efe20, 0x5863: 0x405f0020, - 0x5864: 0x405f0220, 0x5865: 0x405f0420, 0x5866: 0x405f0620, 0x5867: 0x405f0820, - 0x5868: 0x405f0a20, 0x5869: 0x405f0c20, 0x586a: 0x405f0e20, 0x586b: 0x405f1020, - 0x586c: 0x405f1220, 0x586d: 0x405f1420, 0x586e: 0x405f1620, 0x586f: 0x405f1820, - 0x5870: 0x405f1a20, 0x5871: 0x405f1c20, 0x5872: 0x405f1e20, 0x5873: 0x405f2020, - 0x5874: 0x405f2220, 0x5875: 0x405f2420, 0x5876: 0x405f2620, 0x5877: 0x405f2820, - 0x5878: 0x405f2a20, 0x5879: 0x405f2c20, 0x587a: 0x405f2e20, 0x587b: 0x405f3020, - 0x587c: 0x405f3220, 0x587d: 0x405f3420, 0x587e: 0x405f3620, 0x587f: 0x405f3820, - // Block 0x162, offset 0x5880 - 0x5880: 0x405f3a20, 0x5881: 0x405f3c20, 0x5882: 0x405f3e20, 0x5883: 0x405f4020, - 0x5884: 0x405f4220, 0x5885: 0x405f4420, 0x5886: 0x405f4620, 0x5887: 0x405f4820, - 0x5888: 0x405f4a20, 0x5889: 0x405f4c20, 0x588a: 0x405f4e20, 0x588b: 0x405f5020, - 0x588c: 0x405f5220, 0x588d: 0x405f5420, 0x588e: 0x405f5620, 0x588f: 0x405f5820, - 0x5890: 0x405f5a20, 0x5891: 0x405f5c20, 0x5892: 0x405f5e20, 0x5893: 0x405f6020, - 0x5894: 0x405f6220, 0x5895: 0x405f6420, 0x5896: 0x405f6620, 0x5897: 0x405f6820, - 0x5898: 0x405f6a20, 0x5899: 0x405f6c20, 0x589a: 0x405f6e20, 0x589b: 0x405f7020, - 0x589c: 0x405f7220, 0x589d: 0x405f7420, 0x589e: 0x405f7620, 0x589f: 0x405f7820, - 0x58a0: 0x405f7a20, 0x58a1: 0x405f7c20, 0x58a2: 0x405f7e20, 0x58a3: 0x405f8020, - 0x58a4: 0x405f8220, 0x58a5: 0x405f8420, 0x58a6: 0x405f8620, 0x58a7: 0x405f8820, - 0x58a8: 0x405f8a20, 0x58a9: 0x405f8c20, 0x58aa: 0x405f8e20, 0x58ab: 0x405f9020, - 0x58ac: 0x405f9220, 0x58ad: 0x405f9420, 0x58ae: 0x405f9620, 0x58af: 0x405f9820, - 0x58b0: 0x405f9a20, 0x58b1: 0x405f9c20, 0x58b2: 0x405f9e20, 0x58b3: 0x405fa020, - 0x58b4: 0x405fa220, 0x58b5: 0x405fa420, 0x58b6: 0x405fa620, 0x58b7: 0x405fa820, - 0x58b8: 0x405faa20, 0x58b9: 0x405fac20, 0x58ba: 0x405fae20, 0x58bb: 0x405fb020, - 0x58bc: 0x405fb220, 0x58bd: 0x405fb420, 0x58be: 0x405fb620, 0x58bf: 0x405fb820, - // Block 0x163, offset 0x58c0 - 0x58c0: 0x405fba20, 0x58c1: 0x405fbc20, 0x58c2: 0x405fbe20, 0x58c3: 0x405fc020, - 0x58c4: 0x405fc220, 0x58c5: 0x405fc420, 0x58c6: 0x405fc620, 0x58c7: 0x405fc820, - 0x58c8: 0x405fca20, 0x58c9: 0x405fcc20, 0x58ca: 0x405fce20, 0x58cb: 0x405fd020, - 0x58cc: 0x405fd220, 0x58cd: 0x405fd420, 0x58ce: 0x405fd620, 0x58cf: 0x405fd820, - 0x58d0: 0x405fda20, 0x58d1: 0x405fdc20, 0x58d2: 0x405fde20, 0x58d3: 0x405fe020, - 0x58d4: 0x405fe220, 0x58d5: 0x405fe420, 0x58d6: 0x405fe620, 0x58d7: 0x405fe820, - 0x58d8: 0x405fea20, 0x58d9: 0x405fec20, 0x58da: 0x405fee20, 0x58db: 0x405ff020, - 0x58dc: 0x405ff220, 0x58dd: 0x405ff420, 0x58de: 0x405ff620, 0x58df: 0x405ff820, - 0x58e0: 0x405ffa20, 0x58e1: 0x405ffc20, 0x58e2: 0x405ffe20, 0x58e3: 0x40600020, - 0x58e4: 0x40600220, 0x58e5: 0x40600420, 0x58e6: 0x40600620, 0x58e7: 0x40600820, - 0x58e8: 0x40600a20, 0x58e9: 0x40600c20, 0x58ea: 0x40600e20, 0x58eb: 0x40601020, - 0x58ec: 0x40601220, 0x58ed: 0x40601420, 0x58ee: 0x40601620, 0x58ef: 0x40601820, - 0x58f0: 0x40601a20, 0x58f1: 0x40601c20, 0x58f2: 0x40601e20, 0x58f3: 0x40602020, - 0x58f4: 0x40602220, 0x58f5: 0x40602420, 0x58f6: 0x40602620, 0x58f7: 0x40602820, - 0x58f8: 0x40602a20, 0x58f9: 0x40602c20, 0x58fa: 0x40602e20, 0x58fb: 0x40603020, - 0x58fc: 0x40603220, 0x58fd: 0x40603420, 0x58fe: 0x40603620, 0x58ff: 0x40603820, - // Block 0x164, offset 0x5900 - 0x5900: 0x40603a20, 0x5901: 0x40603c20, 0x5902: 0x40603e20, 0x5903: 0x40604020, - 0x5904: 0x40604220, 0x5905: 0x40604420, 0x5906: 0x40604620, 0x5907: 0x40604820, - 0x5908: 0x40604a20, 0x5909: 0x40604c20, 0x590a: 0x40604e20, 0x590b: 0x40605020, - 0x590c: 0x40605220, 0x590d: 0x40605420, 0x590e: 0x40605620, 0x590f: 0x40605820, - 0x5910: 0x40605a20, 0x5911: 0x40605c20, 0x5912: 0x40605e20, 0x5913: 0x40606020, - 0x5914: 0x40606220, 0x5915: 0x40606420, 0x5916: 0x40606620, 0x5917: 0x40606820, - 0x5918: 0x40606a20, 0x5919: 0x40606c20, 0x591a: 0x40606e20, 0x591b: 0x40607020, - 0x591c: 0x40607220, 0x591d: 0x40607420, 0x591e: 0x40607620, 0x591f: 0x40607820, - 0x5920: 0x40607a20, 0x5921: 0x40607c20, 0x5922: 0x40607e20, 0x5923: 0x40608020, - 0x5924: 0x40608220, 0x5925: 0x40608420, 0x5926: 0x40608620, 0x5927: 0x40608820, - 0x5928: 0x40608a20, 0x5929: 0x40608c20, 0x592a: 0x40608e20, 0x592b: 0x40609020, - 0x592c: 0x40609220, 0x592d: 0x40609420, 0x592e: 0x40609620, 0x592f: 0x40609820, - 0x5930: 0x40609a20, 0x5931: 0x40609c20, 0x5932: 0x40609e20, 0x5933: 0x4060a020, - 0x5934: 0x4060a220, 0x5935: 0x4060a420, 0x5936: 0x4060a620, 0x5937: 0x4060a820, - 0x5938: 0x4060aa20, 0x5939: 0x4060ac20, 0x593a: 0x4060ae20, 0x593b: 0x4060b020, - 0x593c: 0x4060b220, 0x593d: 0x4060b420, 0x593e: 0x4060b620, 0x593f: 0x4060b820, - // Block 0x165, offset 0x5940 - 0x5940: 0x4060ba20, 0x5941: 0x4060bc20, 0x5942: 0x4060be20, 0x5943: 0x4060c020, - 0x5944: 0x4060c220, 0x5945: 0x4060c420, 0x5946: 0x4060c620, 0x5947: 0x4060c820, - 0x5948: 0x4060ca20, 0x5949: 0x4060cc20, 0x594a: 0x4060ce20, 0x594b: 0x4060d020, - 0x594c: 0x4060d220, 0x594d: 0x4060d420, 0x594e: 0x4060d620, 0x594f: 0x4060d820, - 0x5950: 0x4060da20, 0x5951: 0x4060dc20, 0x5952: 0x4060de20, 0x5953: 0x4060e020, - 0x5954: 0x4060e220, 0x5955: 0x4060e420, 0x5956: 0x4060e620, 0x5957: 0x4060e820, - 0x5958: 0x4060ea20, 0x5959: 0x4060ec20, 0x595a: 0x4060ee20, 0x595b: 0x4060f020, - 0x595c: 0x4060f220, 0x595d: 0x4060f420, 0x595e: 0x4060f620, 0x595f: 0x4060f820, - 0x5960: 0x4060fa20, 0x5961: 0x4060fc20, 0x5962: 0x4060fe20, 0x5963: 0x40610020, - 0x5964: 0x40610220, 0x5965: 0x40610420, 0x5966: 0x40610620, 0x5967: 0x40610820, - 0x5968: 0x40610a20, 0x5969: 0x40610c20, 0x596a: 0x40610e20, 0x596b: 0x40611020, - 0x596c: 0x40611220, 0x596d: 0x40611420, 0x596e: 0x40611620, 0x596f: 0x40611820, - 0x5970: 0x40611a20, 0x5971: 0x40611c20, 0x5972: 0x40611e20, 0x5973: 0x40612020, - 0x5974: 0x40612220, 0x5975: 0x40612420, 0x5976: 0x40612620, 0x5977: 0x40612820, - 0x5978: 0x40612a20, 0x5979: 0x40612c20, 0x597a: 0x40612e20, 0x597b: 0x40613020, - 0x597c: 0x40613220, 0x597d: 0x40613420, 0x597e: 0x40613620, 0x597f: 0x40613820, - // Block 0x166, offset 0x5980 - 0x5980: 0x40613a20, 0x5981: 0x40613c20, 0x5982: 0x40613e20, 0x5983: 0x40614020, - 0x5984: 0x40614220, 0x5985: 0x40614420, 0x5986: 0x40614620, 0x5987: 0x40614820, - 0x5988: 0x40614a20, 0x5989: 0x40614c20, 0x598a: 0x40614e20, 0x598b: 0x40615020, - 0x598c: 0x40615220, 0x598d: 0x40615420, 0x598e: 0x40615620, 0x598f: 0x40615820, - 0x5990: 0x40615a20, 0x5991: 0x40615c20, 0x5992: 0x40615e20, 0x5993: 0x40616020, - 0x5994: 0x40616220, 0x5995: 0x40616420, 0x5996: 0x40616620, 0x5997: 0x40616820, - 0x5998: 0x40616a20, 0x5999: 0x40616c20, 0x599a: 0x40616e20, 0x599b: 0x40617020, - 0x599c: 0x40617220, 0x599d: 0x40617420, 0x599e: 0x40617620, 0x599f: 0x40617820, - 0x59a0: 0x40617a20, 0x59a1: 0x40617c20, 0x59a2: 0x40617e20, 0x59a3: 0x40618020, - 0x59a4: 0x40618220, 0x59a5: 0x40618420, 0x59a6: 0x40618620, 0x59a7: 0x40618820, - 0x59a8: 0x40618a20, 0x59a9: 0x40618c20, 0x59aa: 0x40618e20, 0x59ab: 0x40619020, - 0x59ac: 0x40619220, 0x59ad: 0x40619420, 0x59ae: 0x40619620, 0x59af: 0x40619820, - 0x59b0: 0x40619a20, 0x59b1: 0x40619c20, 0x59b2: 0x40619e20, 0x59b3: 0x4061a020, - 0x59b4: 0x4061a220, 0x59b5: 0x4061a420, 0x59b6: 0x4061a620, 0x59b7: 0x4061a820, - 0x59b8: 0x4061aa20, 0x59b9: 0x4061ac20, 0x59ba: 0x4061ae20, 0x59bb: 0x4061b020, - 0x59bc: 0x4061b220, 0x59bd: 0x4061b420, 0x59be: 0x4061b620, 0x59bf: 0x4061b820, - // Block 0x167, offset 0x59c0 - 0x59c0: 0x4061ba20, 0x59c1: 0x4061bc20, 0x59c2: 0x4061be20, 0x59c3: 0x4061c020, - 0x59c4: 0x4061c220, 0x59c5: 0x4061c420, 0x59c6: 0x4061c620, 0x59c7: 0x4061c820, - 0x59c8: 0x4061ca20, 0x59c9: 0x4061cc20, 0x59ca: 0x4061ce20, 0x59cb: 0x4061d020, - 0x59cc: 0x4061d220, 0x59cd: 0x4061d420, 0x59ce: 0x4061d620, 0x59cf: 0x4061d820, - 0x59d0: 0x4061da20, 0x59d1: 0x4061dc20, 0x59d2: 0x4061de20, 0x59d3: 0x4061e020, - 0x59d4: 0x4061e220, 0x59d5: 0x4061e420, 0x59d6: 0x4061e620, 0x59d7: 0x4061e820, - 0x59d8: 0x4061ea20, 0x59d9: 0x4061ec20, 0x59da: 0x4061ee20, 0x59db: 0x4061f020, - 0x59dc: 0x4061f220, 0x59dd: 0x4061f420, 0x59de: 0x4061f620, 0x59df: 0x4061f820, - 0x59e0: 0x4061fa20, 0x59e1: 0x4061fc20, 0x59e2: 0x4061fe20, 0x59e3: 0x40620020, - 0x59e4: 0x40620220, 0x59e5: 0x40620420, 0x59e6: 0x40620620, 0x59e7: 0x40620820, - 0x59e8: 0x40620a20, 0x59e9: 0x40620c20, 0x59ea: 0x40620e20, 0x59eb: 0x40621020, - 0x59ec: 0x40621220, 0x59ed: 0x40621420, 0x59ee: 0x40621620, 0x59ef: 0x40621820, - 0x59f0: 0x40621a20, 0x59f1: 0x40621c20, 0x59f2: 0x40621e20, 0x59f3: 0x40622020, - 0x59f4: 0x40622220, 0x59f5: 0x40622420, 0x59f6: 0x40622620, 0x59f7: 0x40622820, - 0x59f8: 0x40622a20, 0x59f9: 0x40622c20, 0x59fa: 0x40622e20, 0x59fb: 0x40623020, - 0x59fc: 0x40623220, 0x59fd: 0x40623420, 0x59fe: 0x40623620, 0x59ff: 0x40623820, - // Block 0x168, offset 0x5a00 - 0x5a00: 0x40623a20, 0x5a01: 0x40623c20, 0x5a02: 0x40623e20, 0x5a03: 0x40624020, - 0x5a04: 0x40624220, 0x5a05: 0x40624420, 0x5a06: 0x40624620, 0x5a07: 0x40624820, - 0x5a08: 0x40624a20, 0x5a09: 0x40624c20, 0x5a0a: 0x40624e20, 0x5a0b: 0x40625020, - 0x5a0c: 0x40625220, 0x5a0d: 0x40625420, 0x5a0e: 0x40625620, 0x5a0f: 0x40625820, - 0x5a10: 0x40625a20, 0x5a11: 0x40625c20, 0x5a12: 0x40625e20, 0x5a13: 0x40626020, - 0x5a14: 0x40626220, 0x5a15: 0x40626420, 0x5a16: 0x40626620, 0x5a17: 0x40626820, - 0x5a18: 0x40626a20, 0x5a19: 0x40626c20, 0x5a1a: 0x40626e20, 0x5a1b: 0x40627020, - 0x5a1c: 0x40627220, 0x5a1d: 0x40627420, 0x5a1e: 0x40627620, 0x5a1f: 0x40627820, - 0x5a20: 0x40627a20, 0x5a21: 0x40627c20, 0x5a22: 0x40627e20, 0x5a23: 0x40628020, - 0x5a24: 0x40628220, 0x5a25: 0x40628420, 0x5a26: 0x40628620, 0x5a27: 0x40628820, - 0x5a28: 0x40628a20, 0x5a29: 0x40628c20, 0x5a2a: 0x40628e20, 0x5a2b: 0x40629020, - 0x5a2c: 0x40629220, 0x5a2d: 0x40629420, 0x5a2e: 0x40629620, 0x5a2f: 0x40629820, - 0x5a30: 0x40629a20, 0x5a31: 0x40629c20, 0x5a32: 0x40629e20, 0x5a33: 0x4062a020, - 0x5a34: 0x4062a220, 0x5a35: 0x4062a420, 0x5a36: 0x4062a620, 0x5a37: 0x4062a820, - 0x5a38: 0x4062aa20, - // Block 0x169, offset 0x5a40 - 0x5a40: 0x406fb620, 0x5a41: 0x406fb820, 0x5a42: 0x406fba20, 0x5a43: 0x406fbc20, - 0x5a44: 0x406fbe20, 0x5a45: 0x406fc020, 0x5a46: 0x006fbe84, 0x5a47: 0x406fc220, - 0x5a48: 0x406fc420, 0x5a49: 0x406fc620, 0x5a4a: 0x406fc820, 0x5a4b: 0x406fca20, - 0x5a4c: 0x406fcc20, 0x5a4d: 0x406fce20, 0x5a4e: 0x406fd020, 0x5a4f: 0x406fd220, - 0x5a50: 0x406fd420, 0x5a51: 0x406fd620, 0x5a52: 0x406fd820, 0x5a53: 0x006fd484, - 0x5a54: 0x406fda20, 0x5a55: 0x406fdc20, 0x5a56: 0x406fde20, 0x5a57: 0x406fe020, - 0x5a58: 0x406fe220, 0x5a59: 0x406fe420, 0x5a5a: 0x406fe620, 0x5a5b: 0x406fe820, - 0x5a5c: 0x406fea20, 0x5a5d: 0x406fec20, 0x5a5e: 0x406fee20, 0x5a5f: 0x406ff020, - 0x5a60: 0x406ff220, 0x5a61: 0x406ff420, 0x5a62: 0x406ff620, 0x5a63: 0x406ff820, - 0x5a64: 0x406ffa20, 0x5a65: 0x006ff884, 0x5a66: 0x406ffc20, 0x5a67: 0x406ffe20, - 0x5a68: 0x40700020, 0x5a69: 0x40700220, 0x5a6a: 0x40700420, 0x5a6b: 0x40700620, - 0x5a6c: 0x40700820, 0x5a6d: 0x40700a20, 0x5a6e: 0x40700c20, 0x5a6f: 0x40700e20, - 0x5a70: 0x40701020, 0x5a71: 0x40701220, 0x5a72: 0x40701420, 0x5a73: 0x40701620, - 0x5a74: 0x40701820, 0x5a75: 0x40701a20, 0x5a76: 0x40701c20, 0x5a77: 0x40701e20, - 0x5a78: 0x40702020, 0x5a79: 0x40702220, 0x5a7a: 0x40702420, 0x5a7b: 0x40702620, - 0x5a7c: 0x40702820, 0x5a7d: 0x40702a20, 0x5a7e: 0x40702c20, 0x5a7f: 0x00702a84, - // Block 0x16a, offset 0x5a80 - 0x5a80: 0x40702e20, 0x5a81: 0x40703020, 0x5a82: 0x40703220, 0x5a83: 0x40703420, - 0x5a84: 0x40703620, - 0x5a90: 0x40703820, 0x5a91: 0x40703a20, 0x5a92: 0x40703c20, 0x5a93: 0x40703e20, - 0x5a94: 0x40704020, 0x5a95: 0x40704220, 0x5a96: 0x40704420, 0x5a97: 0x40704620, - 0x5a98: 0x40704820, 0x5a99: 0x40704a20, 0x5a9a: 0x40704c20, 0x5a9b: 0x40704e20, - 0x5a9c: 0x40705020, 0x5a9d: 0x40705220, 0x5a9e: 0x40705420, 0x5a9f: 0x40705620, - 0x5aa0: 0x40705820, 0x5aa1: 0x40705a20, 0x5aa2: 0x40705c20, 0x5aa3: 0x40705e20, - 0x5aa4: 0x40706020, 0x5aa5: 0x40706220, 0x5aa6: 0x40706420, 0x5aa7: 0x40706620, - 0x5aa8: 0x40706820, 0x5aa9: 0x40706a20, 0x5aaa: 0x40706c20, 0x5aab: 0x40706e20, - 0x5aac: 0x40707020, 0x5aad: 0x40707220, 0x5aae: 0x40707420, 0x5aaf: 0x40707620, - 0x5ab0: 0x40707820, 0x5ab1: 0x40707a20, 0x5ab2: 0x40707c20, 0x5ab3: 0x40707e20, - 0x5ab4: 0x40708020, 0x5ab5: 0x40708220, 0x5ab6: 0x40708420, 0x5ab7: 0x40708620, - 0x5ab8: 0x40708820, 0x5ab9: 0x40708a20, 0x5aba: 0x40708c20, 0x5abb: 0x40708e20, - 0x5abc: 0x40709020, 0x5abd: 0x40709220, 0x5abe: 0x40709420, - // Block 0x16b, offset 0x5ac0 - 0x5acf: 0x40709620, - 0x5ad0: 0x40709820, 0x5ad1: 0x40709a20, 0x5ad2: 0x40709c20, 0x5ad3: 0x40709e20, - 0x5ad4: 0x4070a020, 0x5ad5: 0x4070a220, 0x5ad6: 0x4070a420, 0x5ad7: 0x4070a620, - 0x5ad8: 0x4070a820, 0x5ad9: 0x4070aa20, 0x5ada: 0x4070ac20, 0x5adb: 0x4070ae20, - 0x5adc: 0x4070b020, 0x5add: 0x4070b220, 0x5ade: 0x4070b420, 0x5adf: 0x4070b620, - // Block 0x16c, offset 0x5b00 - 0x5b00: 0x00657c91, 0x5b01: 0x0065c28e, - // Block 0x16d, offset 0x5b40 - 0x5b40: 0x401ba420, 0x5b41: 0x401ba620, 0x5b42: 0x401ba820, 0x5b43: 0x401baa20, - 0x5b44: 0x401bac20, 0x5b45: 0x401bae20, 0x5b46: 0x401bb020, 0x5b47: 0x401bb220, - 0x5b48: 0x401bb420, 0x5b49: 0x401bb620, 0x5b4a: 0x401bb820, 0x5b4b: 0x401bba20, - 0x5b4c: 0x401bbc20, 0x5b4d: 0x401bbe20, 0x5b4e: 0x401bc020, 0x5b4f: 0x401bc220, - 0x5b50: 0x401bc420, 0x5b51: 0x401bc620, 0x5b52: 0x401bc820, 0x5b53: 0x401bca20, - 0x5b54: 0x401bcc20, 0x5b55: 0x401bce20, 0x5b56: 0x401bd020, 0x5b57: 0x401bd220, - 0x5b58: 0x401bd420, 0x5b59: 0x401bd620, 0x5b5a: 0x401bd820, 0x5b5b: 0x401bda20, - 0x5b5c: 0x401bdc20, 0x5b5d: 0x401bde20, 0x5b5e: 0x401be020, 0x5b5f: 0x401be220, - 0x5b60: 0x401be420, 0x5b61: 0x401be620, 0x5b62: 0x401be820, 0x5b63: 0x401bea20, - 0x5b64: 0x401bec20, 0x5b65: 0x401bee20, 0x5b66: 0x401bf020, 0x5b67: 0x401bf220, - 0x5b68: 0x401bf420, 0x5b69: 0x401bf620, 0x5b6a: 0x401bf820, 0x5b6b: 0x401bfa20, - 0x5b6c: 0x401bfc20, 0x5b6d: 0x401bfe20, 0x5b6e: 0x401c0020, 0x5b6f: 0x401c0220, - 0x5b70: 0x401c0420, 0x5b71: 0x401c0620, 0x5b72: 0x401c0820, 0x5b73: 0x401c0a20, - 0x5b74: 0x401c0c20, 0x5b75: 0x401c0e20, 0x5b76: 0x401c1020, 0x5b77: 0x401c1220, - 0x5b78: 0x401c1420, 0x5b79: 0x401c1620, 0x5b7a: 0x401c1820, 0x5b7b: 0x401c1a20, - 0x5b7c: 0x401c1c20, 0x5b7d: 0x401c1e20, 0x5b7e: 0x401c2020, 0x5b7f: 0x401c2220, - // Block 0x16e, offset 0x5b80 - 0x5b80: 0x401c2420, 0x5b81: 0x401c2620, 0x5b82: 0x401c2820, 0x5b83: 0x401c2a20, - 0x5b84: 0x401c2c20, 0x5b85: 0x401c2e20, 0x5b86: 0x401c3020, 0x5b87: 0x401c3220, - 0x5b88: 0x401c3420, 0x5b89: 0x401c3620, 0x5b8a: 0x401c3820, 0x5b8b: 0x401c3a20, - 0x5b8c: 0x401c3c20, 0x5b8d: 0x401c3e20, 0x5b8e: 0x401c4020, 0x5b8f: 0x401c4220, - 0x5b90: 0x401c4420, 0x5b91: 0x401c4620, 0x5b92: 0x401c4820, 0x5b93: 0x401c4a20, - 0x5b94: 0x401c4c20, 0x5b95: 0x401c4e20, 0x5b96: 0x401c5020, 0x5b97: 0x401c5220, - 0x5b98: 0x401c5420, 0x5b99: 0x401c5620, 0x5b9a: 0x401c5820, 0x5b9b: 0x401c5a20, - 0x5b9c: 0x401c5c20, 0x5b9d: 0x401c5e20, 0x5b9e: 0x401c6020, 0x5b9f: 0x401c6220, - 0x5ba0: 0x401c6420, 0x5ba1: 0x401c6620, 0x5ba2: 0x401c6820, 0x5ba3: 0x401c6a20, - 0x5ba4: 0x401c6c20, 0x5ba5: 0x401c6e20, 0x5ba6: 0x401c7020, 0x5ba7: 0x401c7220, - 0x5ba8: 0x401c7420, 0x5ba9: 0x401c7620, 0x5baa: 0x401c7820, 0x5bab: 0x401c7a20, - 0x5bac: 0x401c7c20, 0x5bad: 0x401c7e20, 0x5bae: 0x401c8020, 0x5baf: 0x401c8220, - 0x5bb0: 0x401c8420, 0x5bb1: 0x401c8620, 0x5bb2: 0x401c8820, 0x5bb3: 0x401c8a20, - 0x5bb4: 0x401c8c20, 0x5bb5: 0x401c8e20, 0x5bb6: 0x401c9020, 0x5bb7: 0x401c9220, - 0x5bb8: 0x401c9420, 0x5bb9: 0x401c9620, 0x5bba: 0x401c9820, 0x5bbb: 0x401c9a20, - 0x5bbc: 0x401c9c20, 0x5bbd: 0x401c9e20, 0x5bbe: 0x401ca020, 0x5bbf: 0x401ca220, - // Block 0x16f, offset 0x5bc0 - 0x5bc0: 0x401ca420, 0x5bc1: 0x401ca620, 0x5bc2: 0x401ca820, 0x5bc3: 0x401caa20, - 0x5bc4: 0x401cac20, 0x5bc5: 0x401cae20, 0x5bc6: 0x401cb020, 0x5bc7: 0x401cb220, - 0x5bc8: 0x401cb420, 0x5bc9: 0x401cb620, 0x5bca: 0x401cb820, 0x5bcb: 0x401cba20, - 0x5bcc: 0x401cbc20, 0x5bcd: 0x401cbe20, 0x5bce: 0x401cc020, 0x5bcf: 0x401cc220, - 0x5bd0: 0x401cc420, 0x5bd1: 0x401cc620, 0x5bd2: 0x401cc820, 0x5bd3: 0x401cca20, - 0x5bd4: 0x401ccc20, 0x5bd5: 0x401cce20, 0x5bd6: 0x401cd020, 0x5bd7: 0x401cd220, - 0x5bd8: 0x401cd420, 0x5bd9: 0x401cd620, 0x5bda: 0x401cd820, 0x5bdb: 0x401cda20, - 0x5bdc: 0x401cdc20, 0x5bdd: 0x401cde20, 0x5bde: 0x401ce020, 0x5bdf: 0x401ce220, - 0x5be0: 0x401ce420, 0x5be1: 0x401ce620, 0x5be2: 0x401ce820, 0x5be3: 0x401cea20, - 0x5be4: 0x401cec20, 0x5be5: 0x401cee20, 0x5be6: 0x401cf020, 0x5be7: 0x401cf220, - 0x5be8: 0x401cf420, 0x5be9: 0x401cf620, 0x5bea: 0x401cf820, 0x5beb: 0x401cfa20, - 0x5bec: 0x401cfc20, 0x5bed: 0x401cfe20, 0x5bee: 0x401d0020, 0x5bef: 0x401d0220, - 0x5bf0: 0x401d0420, 0x5bf1: 0x401d0620, 0x5bf2: 0x401d0820, 0x5bf3: 0x401d0a20, - 0x5bf4: 0x401d0c20, 0x5bf5: 0x401d0e20, 0x5bf6: 0x401d1020, 0x5bf7: 0x401d1220, - 0x5bf8: 0x401d1420, 0x5bf9: 0x401d1620, 0x5bfa: 0x401d1820, 0x5bfb: 0x401d1a20, - 0x5bfc: 0x401d1c20, 0x5bfd: 0x401d1e20, 0x5bfe: 0x401d2020, 0x5bff: 0x401d2220, - // Block 0x170, offset 0x5c00 - 0x5c00: 0x401d2420, 0x5c01: 0x401d2620, 0x5c02: 0x401d2820, 0x5c03: 0x401d2a20, - 0x5c04: 0x401d2c20, 0x5c05: 0x401d2e20, 0x5c06: 0x401d3020, 0x5c07: 0x401d3220, - 0x5c08: 0x401d3420, 0x5c09: 0x401d3620, 0x5c0a: 0x401d3820, 0x5c0b: 0x401d3a20, - 0x5c0c: 0x401d3c20, 0x5c0d: 0x401d3e20, 0x5c0e: 0x401d4020, 0x5c0f: 0x401d4220, - 0x5c10: 0x401d4420, 0x5c11: 0x401d4620, 0x5c12: 0x401d4820, 0x5c13: 0x401d4a20, - 0x5c14: 0x401d4c20, 0x5c15: 0x401d4e20, 0x5c16: 0x401d5020, 0x5c17: 0x401d5220, - 0x5c18: 0x401d5420, 0x5c19: 0x401d5620, 0x5c1a: 0x401d5820, 0x5c1b: 0x401d5a20, - 0x5c1c: 0x401d5c20, 0x5c1d: 0x401d5e20, 0x5c1e: 0x401d6020, 0x5c1f: 0x401d6220, - 0x5c20: 0x401d6420, 0x5c21: 0x401d6620, 0x5c22: 0x401d6820, 0x5c23: 0x401d6a20, - 0x5c24: 0x401d6c20, 0x5c25: 0x401d6e20, 0x5c26: 0x401d7020, 0x5c27: 0x401d7220, - 0x5c28: 0x401d7420, 0x5c29: 0x401d7620, 0x5c2a: 0x401d7820, 0x5c2b: 0x401d7a20, - 0x5c2c: 0x401d7c20, 0x5c2d: 0x401d7e20, 0x5c2e: 0x401d8020, 0x5c2f: 0x401d8220, - 0x5c30: 0x401d8420, 0x5c31: 0x401d8620, 0x5c32: 0x401d8820, 0x5c33: 0x401d8a20, - 0x5c34: 0x401d8c20, 0x5c35: 0x401d8e20, - // Block 0x171, offset 0x5c40 - 0x5c40: 0x401d9020, 0x5c41: 0x401d9220, 0x5c42: 0x401d9420, 0x5c43: 0x401d9620, - 0x5c44: 0x401d9820, 0x5c45: 0x401d9a20, 0x5c46: 0x401d9c20, 0x5c47: 0x401d9e20, - 0x5c48: 0x401da020, 0x5c49: 0x401da220, 0x5c4a: 0x401da420, 0x5c4b: 0x401da620, - 0x5c4c: 0x401da820, 0x5c4d: 0x401daa20, 0x5c4e: 0x401dac20, 0x5c4f: 0x401dae20, - 0x5c50: 0x401db020, 0x5c51: 0x401db220, 0x5c52: 0x401db420, 0x5c53: 0x401db620, - 0x5c54: 0x401db820, 0x5c55: 0x401dba20, 0x5c56: 0x401dbc20, 0x5c57: 0x401dbe20, - 0x5c58: 0x401dc020, 0x5c59: 0x401dc220, 0x5c5a: 0x401dc420, 0x5c5b: 0x401dc620, - 0x5c5c: 0x401dc820, 0x5c5d: 0x401dca20, 0x5c5e: 0x401dcc20, 0x5c5f: 0x401dce20, - 0x5c60: 0x401dd020, 0x5c61: 0x401dd220, 0x5c62: 0x401dd420, 0x5c63: 0x401dd620, - 0x5c64: 0x401dd820, 0x5c65: 0x401dda20, 0x5c66: 0x401ddc20, - 0x5c69: 0x401e0420, 0x5c6a: 0x401de420, 0x5c6b: 0x401de620, - 0x5c6c: 0x401de820, 0x5c6d: 0x401dea20, 0x5c6e: 0x401dec20, 0x5c6f: 0x401dee20, - 0x5c70: 0x401df020, 0x5c71: 0x401df220, 0x5c72: 0x401df420, 0x5c73: 0x401df620, - 0x5c74: 0x401df820, 0x5c75: 0x401dfa20, 0x5c76: 0x401dfc20, 0x5c77: 0x401dfe20, - 0x5c78: 0x401e0020, 0x5c79: 0x401e0220, 0x5c7a: 0x401e0620, 0x5c7b: 0x401e0820, - 0x5c7c: 0x401e0a20, 0x5c7d: 0x401e0c20, 0x5c7e: 0x401e0e20, 0x5c7f: 0x401e1020, - // Block 0x172, offset 0x5c80 - 0x5c80: 0x401e1220, 0x5c81: 0x401e1420, 0x5c82: 0x401e1620, 0x5c83: 0x401e1820, - 0x5c84: 0x401e1a20, 0x5c85: 0x401e1c20, 0x5c86: 0x401e1e20, 0x5c87: 0x401e2020, - 0x5c88: 0x401e2220, 0x5c89: 0x401e2420, 0x5c8a: 0x401e2620, 0x5c8b: 0x401e2820, - 0x5c8c: 0x401e2a20, 0x5c8d: 0x401e2c20, 0x5c8e: 0x401e2e20, 0x5c8f: 0x401e3020, - 0x5c90: 0x401e3220, 0x5c91: 0x401e3420, 0x5c92: 0x401e3620, 0x5c93: 0x401e3820, - 0x5c94: 0x401e3a20, 0x5c95: 0x401e3c20, 0x5c96: 0x401e3e20, 0x5c97: 0x401e4020, - 0x5c98: 0x401e4220, 0x5c99: 0x401e4420, 0x5c9a: 0x401e4620, 0x5c9b: 0x401e4820, - 0x5c9c: 0x401e4a20, 0x5c9d: 0x401e4c20, 0x5c9e: 0x401e4020, 0x5c9f: 0x401e4220, - 0x5ca0: 0x401e4220, 0x5ca1: 0x401e4220, 0x5ca2: 0x401e4220, 0x5ca3: 0x401e4220, - 0x5ca4: 0x401e4220, 0x5ca5: 0xad800000, 0x5ca6: 0xad800000, 0x5ca7: 0xa0100000, - 0x5ca8: 0xa0100000, 0x5ca9: 0xa0100000, 0x5caa: 0x401e4e20, 0x5cab: 0x401e5020, - 0x5cac: 0x401e5220, 0x5cad: 0xae200000, 0x5cae: 0xad800000, 0x5caf: 0xad800000, - 0x5cb0: 0xad800000, 0x5cb1: 0xad800000, 0x5cb2: 0xad800000, 0x5cb3: 0xa0000000, - 0x5cb4: 0xa0000000, 0x5cb5: 0xa0000000, 0x5cb6: 0xa0000000, 0x5cb7: 0xa0000000, - 0x5cb8: 0xa0000000, 0x5cb9: 0xa0000000, 0x5cba: 0xa0000000, 0x5cbb: 0xadc00000, - 0x5cbc: 0xadc00000, 0x5cbd: 0xadc00000, 0x5cbe: 0xadc00000, 0x5cbf: 0xadc00000, - // Block 0x173, offset 0x5cc0 - 0x5cc0: 0xadc00000, 0x5cc1: 0xadc00000, 0x5cc2: 0xadc00000, 0x5cc3: 0x401e5420, - 0x5cc4: 0x401e5620, 0x5cc5: 0xae600000, 0x5cc6: 0xae600000, 0x5cc7: 0xae600000, - 0x5cc8: 0xae600000, 0x5cc9: 0xae600000, 0x5cca: 0xadc00000, 0x5ccb: 0xadc00000, - 0x5ccc: 0x401e5820, 0x5ccd: 0x401e5a20, 0x5cce: 0x401e5c20, 0x5ccf: 0x401e5e20, - 0x5cd0: 0x401e6020, 0x5cd1: 0x401e6220, 0x5cd2: 0x401e6420, 0x5cd3: 0x401e6620, - 0x5cd4: 0x401e6820, 0x5cd5: 0x401e6a20, 0x5cd6: 0x401e6c20, 0x5cd7: 0x401e6e20, - 0x5cd8: 0x401e7020, 0x5cd9: 0x401e7220, 0x5cda: 0x401e7420, 0x5cdb: 0x401e7620, - 0x5cdc: 0x401e7820, 0x5cdd: 0x401e7a20, 0x5cde: 0x401e7c20, 0x5cdf: 0x401e7e20, - 0x5ce0: 0x401e8020, 0x5ce1: 0x401e8220, 0x5ce2: 0x401e8420, 0x5ce3: 0x401e8620, - 0x5ce4: 0x401e8820, 0x5ce5: 0x401e8a20, 0x5ce6: 0x401e8c20, 0x5ce7: 0x401e8e20, - 0x5ce8: 0x401e9020, 0x5ce9: 0x401e9220, 0x5cea: 0xae600000, 0x5ceb: 0xae600000, - 0x5cec: 0xae600000, 0x5ced: 0xae600000, 0x5cee: 0x401e9420, 0x5cef: 0x401e9620, - 0x5cf0: 0x401e9820, 0x5cf1: 0x401e9a20, 0x5cf2: 0x401e9c20, 0x5cf3: 0x401e9e20, - 0x5cf4: 0x401ea020, 0x5cf5: 0x401ea220, 0x5cf6: 0x401ea420, 0x5cf7: 0x401ea620, - 0x5cf8: 0x401ea820, 0x5cf9: 0x401eaa20, 0x5cfa: 0x401eac20, 0x5cfb: 0x401eaa20, - 0x5cfc: 0x401eac20, 0x5cfd: 0x401eaa20, 0x5cfe: 0x401eac20, 0x5cff: 0x401eaa20, - // Block 0x174, offset 0x5d00 - 0x5d00: 0x401eac20, 0x5d01: 0x401eae20, 0x5d02: 0x401eb020, 0x5d03: 0x401eb220, - 0x5d04: 0x401eb420, 0x5d05: 0x401eb620, 0x5d06: 0x401eb820, 0x5d07: 0x401eba20, - 0x5d08: 0x401ebc20, 0x5d09: 0x401ebe20, 0x5d0a: 0x401ec020, 0x5d0b: 0x401ec220, - 0x5d0c: 0x401ec420, 0x5d0d: 0x401ec620, 0x5d0e: 0x401ec820, 0x5d0f: 0x401eca20, - 0x5d10: 0x401ecc20, 0x5d11: 0x401ece20, 0x5d12: 0x401ed020, 0x5d13: 0x401ed220, - 0x5d14: 0x401ed420, 0x5d15: 0x401ed620, 0x5d16: 0x401ed820, 0x5d17: 0x401eda20, - 0x5d18: 0x401edc20, 0x5d19: 0x401ede20, 0x5d1a: 0x401ee020, 0x5d1b: 0x401ee220, - 0x5d1c: 0x401ee420, 0x5d1d: 0x401ee620, - // Block 0x175, offset 0x5d40 - 0x5d40: 0x401ee820, 0x5d41: 0x401eea20, 0x5d42: 0x401eec20, 0x5d43: 0x401eee20, - 0x5d44: 0x401ef020, 0x5d45: 0x401ef220, 0x5d46: 0x401ef420, 0x5d47: 0x401ef620, - 0x5d48: 0x401ef820, 0x5d49: 0x401efa20, 0x5d4a: 0x401efc20, 0x5d4b: 0x401efe20, - 0x5d4c: 0x401f0020, 0x5d4d: 0x401f0220, 0x5d4e: 0x401f0420, 0x5d4f: 0x401f0620, - 0x5d50: 0x401f0820, 0x5d51: 0x401f0a20, 0x5d52: 0x401f0c20, 0x5d53: 0x401f0e20, - 0x5d54: 0x401f1020, 0x5d55: 0x401f1220, 0x5d56: 0x401f1420, 0x5d57: 0x401f1620, - 0x5d58: 0x401f1820, 0x5d59: 0x401f1a20, 0x5d5a: 0x401f1c20, 0x5d5b: 0x401f1e20, - 0x5d5c: 0x401f2020, 0x5d5d: 0x401f2220, 0x5d5e: 0x401f2420, 0x5d5f: 0x401f2620, - 0x5d60: 0x401f2820, 0x5d61: 0x401f2a20, 0x5d62: 0x401f2c20, 0x5d63: 0x401f2e20, - 0x5d64: 0x401f3020, 0x5d65: 0x401f3220, 0x5d66: 0x401f3420, 0x5d67: 0x401f3620, - 0x5d68: 0x401f3820, 0x5d69: 0x401f3a20, 0x5d6a: 0x401f3c20, 0x5d6b: 0x401f3e20, - 0x5d6c: 0x401f4020, 0x5d6d: 0x401f4220, 0x5d6e: 0x401f4420, 0x5d6f: 0x401f4620, - 0x5d70: 0x401f4820, 0x5d71: 0x401f4a20, 0x5d72: 0x401f4c20, 0x5d73: 0x401f4e20, - 0x5d74: 0x401f5020, 0x5d75: 0x401f5220, 0x5d76: 0x401f5420, 0x5d77: 0x401f5620, - 0x5d78: 0x401f5820, 0x5d79: 0x401f5a20, 0x5d7a: 0x401f5c20, 0x5d7b: 0x401f5e20, - 0x5d7c: 0x401f6020, 0x5d7d: 0x401f6220, 0x5d7e: 0x401f6420, 0x5d7f: 0x401f6620, - // Block 0x176, offset 0x5d80 - 0x5d80: 0x401f6820, 0x5d81: 0x401f6a20, 0x5d82: 0xae600000, 0x5d83: 0xae600000, - 0x5d84: 0xae600000, 0x5d85: 0x401f6c20, - // Block 0x177, offset 0x5dc0 - 0x5dc0: 0x4019e220, 0x5dc1: 0x4019e420, 0x5dc2: 0x4019e620, 0x5dc3: 0x4019e820, - 0x5dc4: 0x4019ea20, 0x5dc5: 0x4019ec20, 0x5dc6: 0x4019ee20, 0x5dc7: 0x4019f020, - 0x5dc8: 0x4019f220, 0x5dc9: 0x4019f420, 0x5dca: 0x4019f620, 0x5dcb: 0x4019f820, - 0x5dcc: 0x4019fa20, 0x5dcd: 0x4019fc20, 0x5dce: 0x4019fe20, 0x5dcf: 0x401a0020, - 0x5dd0: 0x401a0220, 0x5dd1: 0x401a0420, 0x5dd2: 0x401a0620, 0x5dd3: 0x401a0820, - 0x5dd4: 0x401a0a20, 0x5dd5: 0x401a0c20, 0x5dd6: 0x401a0e20, 0x5dd7: 0x401a1020, - 0x5dd8: 0x401a1220, 0x5dd9: 0x401a1420, 0x5dda: 0x401a1620, 0x5ddb: 0x401a1820, - 0x5ddc: 0x401a1a20, 0x5ddd: 0x401a1c20, 0x5dde: 0x401a1e20, 0x5ddf: 0x401a2020, - 0x5de0: 0x401a2220, 0x5de1: 0x401a2420, 0x5de2: 0x401a2620, 0x5de3: 0x401a2820, - 0x5de4: 0x401a2a20, 0x5de5: 0x401a2c20, 0x5de6: 0x401a2e20, 0x5de7: 0x401a3020, - 0x5de8: 0x401a3220, 0x5de9: 0x401a3420, 0x5dea: 0x401a3620, 0x5deb: 0x401a3820, - 0x5dec: 0x401a3a20, 0x5ded: 0x401a3c20, 0x5dee: 0x401a3e20, 0x5def: 0x401a4020, - 0x5df0: 0x401a4220, 0x5df1: 0x401a4420, 0x5df2: 0x401a4620, 0x5df3: 0x401a4820, - 0x5df4: 0x401a4a20, 0x5df5: 0x401a4c20, 0x5df6: 0x401a4e20, 0x5df7: 0x401a5020, - 0x5df8: 0x401a5220, 0x5df9: 0x401a5420, 0x5dfa: 0x401a5620, 0x5dfb: 0x401a5820, - 0x5dfc: 0x401a5a20, 0x5dfd: 0x401a5c20, 0x5dfe: 0x401a5e20, 0x5dff: 0x401a6020, - // Block 0x178, offset 0x5e00 - 0x5e00: 0x401a6220, 0x5e01: 0x401a6420, 0x5e02: 0x401a6620, 0x5e03: 0x401a6820, - 0x5e04: 0x401a6a20, 0x5e05: 0x401a6c20, 0x5e06: 0x401a6e20, 0x5e07: 0x401a7020, - 0x5e08: 0x401a7220, 0x5e09: 0x401a7420, 0x5e0a: 0x401a7620, 0x5e0b: 0x401a7820, - 0x5e0c: 0x401a7a20, 0x5e0d: 0x401a7c20, 0x5e0e: 0x401a7e20, 0x5e0f: 0x401a8020, - 0x5e10: 0x401a8220, 0x5e11: 0x401a8420, 0x5e12: 0x401a8620, 0x5e13: 0x401a8820, - 0x5e14: 0x401a8a20, 0x5e15: 0x401a8c20, 0x5e16: 0x401a8e20, - 0x5e20: 0xe00002af, 0x5e21: 0xe00003ca, 0x5e22: 0xe00004a4, 0x5e23: 0xe0000576, - 0x5e24: 0xe000063d, 0x5e25: 0xe00006ed, 0x5e26: 0xe0000795, 0x5e27: 0xe000083e, - 0x5e28: 0xe00008e9, 0x5e29: 0x4029ba20, 0x5e2a: 0x4029bc20, 0x5e2b: 0x4029be20, - 0x5e2c: 0x4029c020, 0x5e2d: 0x4029c220, 0x5e2e: 0x4029c420, 0x5e2f: 0x4029c620, - 0x5e30: 0x4029c820, 0x5e31: 0x4029ca20, - // Block 0x179, offset 0x5e40 - 0x5e40: 0x002bde8b, 0x5e41: 0x002c0a8b, 0x5e42: 0x002c3a8b, 0x5e43: 0x002c628b, - 0x5e44: 0x002c988b, 0x5e45: 0x002d088b, 0x5e46: 0x002d228b, 0x5e47: 0x002d688b, - 0x5e48: 0x002d9a8b, 0x5e49: 0x002dcc8b, 0x5e4a: 0x002dfe8b, 0x5e4b: 0x002e228b, - 0x5e4c: 0x002e828b, 0x5e4d: 0x002e9e8b, 0x5e4e: 0x002ee28b, 0x5e4f: 0x002f2c8b, - 0x5e50: 0x002f568b, 0x5e51: 0x002f7a8b, 0x5e52: 0x002fe68b, 0x5e53: 0x00302c8b, - 0x5e54: 0x00306c8b, 0x5e55: 0x0030be8b, 0x5e56: 0x0030e28b, 0x5e57: 0x0030f68b, - 0x5e58: 0x0031008b, 0x5e59: 0x00312a8b, 0x5e5a: 0x002bde85, 0x5e5b: 0x002c0a85, - 0x5e5c: 0x002c3a85, 0x5e5d: 0x002c6285, 0x5e5e: 0x002c9885, 0x5e5f: 0x002d0885, - 0x5e60: 0x002d2285, 0x5e61: 0x002d6885, 0x5e62: 0x002d9a85, 0x5e63: 0x002dcc85, - 0x5e64: 0x002dfe85, 0x5e65: 0x002e2285, 0x5e66: 0x002e8285, 0x5e67: 0x002e9e85, - 0x5e68: 0x002ee285, 0x5e69: 0x002f2c85, 0x5e6a: 0x002f5685, 0x5e6b: 0x002f7a85, - 0x5e6c: 0x002fe685, 0x5e6d: 0x00302c85, 0x5e6e: 0x00306c85, 0x5e6f: 0x0030be85, - 0x5e70: 0x0030e285, 0x5e71: 0x0030f685, 0x5e72: 0x00310085, 0x5e73: 0x00312a85, - 0x5e74: 0x002bde8b, 0x5e75: 0x002c0a8b, 0x5e76: 0x002c3a8b, 0x5e77: 0x002c628b, - 0x5e78: 0x002c988b, 0x5e79: 0x002d088b, 0x5e7a: 0x002d228b, 0x5e7b: 0x002d688b, - 0x5e7c: 0x002d9a8b, 0x5e7d: 0x002dcc8b, 0x5e7e: 0x002dfe8b, 0x5e7f: 0x002e228b, - // Block 0x17a, offset 0x5e80 - 0x5e80: 0x002e828b, 0x5e81: 0x002e9e8b, 0x5e82: 0x002ee28b, 0x5e83: 0x002f2c8b, - 0x5e84: 0x002f568b, 0x5e85: 0x002f7a8b, 0x5e86: 0x002fe68b, 0x5e87: 0x00302c8b, - 0x5e88: 0x00306c8b, 0x5e89: 0x0030be8b, 0x5e8a: 0x0030e28b, 0x5e8b: 0x0030f68b, - 0x5e8c: 0x0031008b, 0x5e8d: 0x00312a8b, 0x5e8e: 0x002bde85, 0x5e8f: 0x002c0a85, - 0x5e90: 0x002c3a85, 0x5e91: 0x002c6285, 0x5e92: 0x002c9885, 0x5e93: 0x002d0885, - 0x5e94: 0x002d2285, 0x5e96: 0x002d9a85, 0x5e97: 0x002dcc85, - 0x5e98: 0x002dfe85, 0x5e99: 0x002e2285, 0x5e9a: 0x002e8285, 0x5e9b: 0x002e9e85, - 0x5e9c: 0x002ee285, 0x5e9d: 0x002f2c85, 0x5e9e: 0x002f5685, 0x5e9f: 0x002f7a85, - 0x5ea0: 0x002fe685, 0x5ea1: 0x00302c85, 0x5ea2: 0x00306c85, 0x5ea3: 0x0030be85, - 0x5ea4: 0x0030e285, 0x5ea5: 0x0030f685, 0x5ea6: 0x00310085, 0x5ea7: 0x00312a85, - 0x5ea8: 0x002bde8b, 0x5ea9: 0x002c0a8b, 0x5eaa: 0x002c3a8b, 0x5eab: 0x002c628b, - 0x5eac: 0x002c988b, 0x5ead: 0x002d088b, 0x5eae: 0x002d228b, 0x5eaf: 0x002d688b, - 0x5eb0: 0x002d9a8b, 0x5eb1: 0x002dcc8b, 0x5eb2: 0x002dfe8b, 0x5eb3: 0x002e228b, - 0x5eb4: 0x002e828b, 0x5eb5: 0x002e9e8b, 0x5eb6: 0x002ee28b, 0x5eb7: 0x002f2c8b, - 0x5eb8: 0x002f568b, 0x5eb9: 0x002f7a8b, 0x5eba: 0x002fe68b, 0x5ebb: 0x00302c8b, - 0x5ebc: 0x00306c8b, 0x5ebd: 0x0030be8b, 0x5ebe: 0x0030e28b, 0x5ebf: 0x0030f68b, - // Block 0x17b, offset 0x5ec0 - 0x5ec0: 0x0031008b, 0x5ec1: 0x00312a8b, 0x5ec2: 0x002bde85, 0x5ec3: 0x002c0a85, - 0x5ec4: 0x002c3a85, 0x5ec5: 0x002c6285, 0x5ec6: 0x002c9885, 0x5ec7: 0x002d0885, - 0x5ec8: 0x002d2285, 0x5ec9: 0x002d6885, 0x5eca: 0x002d9a85, 0x5ecb: 0x002dcc85, - 0x5ecc: 0x002dfe85, 0x5ecd: 0x002e2285, 0x5ece: 0x002e8285, 0x5ecf: 0x002e9e85, - 0x5ed0: 0x002ee285, 0x5ed1: 0x002f2c85, 0x5ed2: 0x002f5685, 0x5ed3: 0x002f7a85, - 0x5ed4: 0x002fe685, 0x5ed5: 0x00302c85, 0x5ed6: 0x00306c85, 0x5ed7: 0x0030be85, - 0x5ed8: 0x0030e285, 0x5ed9: 0x0030f685, 0x5eda: 0x00310085, 0x5edb: 0x00312a85, - 0x5edc: 0x002bde8b, 0x5ede: 0x002c3a8b, 0x5edf: 0x002c628b, - 0x5ee2: 0x002d228b, - 0x5ee5: 0x002dcc8b, 0x5ee6: 0x002dfe8b, - 0x5ee9: 0x002e9e8b, 0x5eea: 0x002ee28b, 0x5eeb: 0x002f2c8b, - 0x5eec: 0x002f568b, 0x5eee: 0x002fe68b, 0x5eef: 0x00302c8b, - 0x5ef0: 0x00306c8b, 0x5ef1: 0x0030be8b, 0x5ef2: 0x0030e28b, 0x5ef3: 0x0030f68b, - 0x5ef4: 0x0031008b, 0x5ef5: 0x00312a8b, 0x5ef6: 0x002bde85, 0x5ef7: 0x002c0a85, - 0x5ef8: 0x002c3a85, 0x5ef9: 0x002c6285, 0x5efb: 0x002d0885, - 0x5efd: 0x002d6885, 0x5efe: 0x002d9a85, 0x5eff: 0x002dcc85, - // Block 0x17c, offset 0x5f00 - 0x5f00: 0x002dfe85, 0x5f01: 0x002e2285, 0x5f02: 0x002e8285, 0x5f03: 0x002e9e85, - 0x5f05: 0x002f2c85, 0x5f06: 0x002f5685, 0x5f07: 0x002f7a85, - 0x5f08: 0x002fe685, 0x5f09: 0x00302c85, 0x5f0a: 0x00306c85, 0x5f0b: 0x0030be85, - 0x5f0c: 0x0030e285, 0x5f0d: 0x0030f685, 0x5f0e: 0x00310085, 0x5f0f: 0x00312a85, - 0x5f10: 0x002bde8b, 0x5f11: 0x002c0a8b, 0x5f12: 0x002c3a8b, 0x5f13: 0x002c628b, - 0x5f14: 0x002c988b, 0x5f15: 0x002d088b, 0x5f16: 0x002d228b, 0x5f17: 0x002d688b, - 0x5f18: 0x002d9a8b, 0x5f19: 0x002dcc8b, 0x5f1a: 0x002dfe8b, 0x5f1b: 0x002e228b, - 0x5f1c: 0x002e828b, 0x5f1d: 0x002e9e8b, 0x5f1e: 0x002ee28b, 0x5f1f: 0x002f2c8b, - 0x5f20: 0x002f568b, 0x5f21: 0x002f7a8b, 0x5f22: 0x002fe68b, 0x5f23: 0x00302c8b, - 0x5f24: 0x00306c8b, 0x5f25: 0x0030be8b, 0x5f26: 0x0030e28b, 0x5f27: 0x0030f68b, - 0x5f28: 0x0031008b, 0x5f29: 0x00312a8b, 0x5f2a: 0x002bde85, 0x5f2b: 0x002c0a85, - 0x5f2c: 0x002c3a85, 0x5f2d: 0x002c6285, 0x5f2e: 0x002c9885, 0x5f2f: 0x002d0885, - 0x5f30: 0x002d2285, 0x5f31: 0x002d6885, 0x5f32: 0x002d9a85, 0x5f33: 0x002dcc85, - 0x5f34: 0x002dfe85, 0x5f35: 0x002e2285, 0x5f36: 0x002e8285, 0x5f37: 0x002e9e85, - 0x5f38: 0x002ee285, 0x5f39: 0x002f2c85, 0x5f3a: 0x002f5685, 0x5f3b: 0x002f7a85, - 0x5f3c: 0x002fe685, 0x5f3d: 0x00302c85, 0x5f3e: 0x00306c85, 0x5f3f: 0x0030be85, - // Block 0x17d, offset 0x5f40 - 0x5f40: 0x0030e285, 0x5f41: 0x0030f685, 0x5f42: 0x00310085, 0x5f43: 0x00312a85, - 0x5f44: 0x002bde8b, 0x5f45: 0x002c0a8b, 0x5f47: 0x002c628b, - 0x5f48: 0x002c988b, 0x5f49: 0x002d088b, 0x5f4a: 0x002d228b, - 0x5f4d: 0x002dcc8b, 0x5f4e: 0x002dfe8b, 0x5f4f: 0x002e228b, - 0x5f50: 0x002e828b, 0x5f51: 0x002e9e8b, 0x5f52: 0x002ee28b, 0x5f53: 0x002f2c8b, - 0x5f54: 0x002f568b, 0x5f56: 0x002fe68b, 0x5f57: 0x00302c8b, - 0x5f58: 0x00306c8b, 0x5f59: 0x0030be8b, 0x5f5a: 0x0030e28b, 0x5f5b: 0x0030f68b, - 0x5f5c: 0x0031008b, 0x5f5e: 0x002bde85, 0x5f5f: 0x002c0a85, - 0x5f60: 0x002c3a85, 0x5f61: 0x002c6285, 0x5f62: 0x002c9885, 0x5f63: 0x002d0885, - 0x5f64: 0x002d2285, 0x5f65: 0x002d6885, 0x5f66: 0x002d9a85, 0x5f67: 0x002dcc85, - 0x5f68: 0x002dfe85, 0x5f69: 0x002e2285, 0x5f6a: 0x002e8285, 0x5f6b: 0x002e9e85, - 0x5f6c: 0x002ee285, 0x5f6d: 0x002f2c85, 0x5f6e: 0x002f5685, 0x5f6f: 0x002f7a85, - 0x5f70: 0x002fe685, 0x5f71: 0x00302c85, 0x5f72: 0x00306c85, 0x5f73: 0x0030be85, - 0x5f74: 0x0030e285, 0x5f75: 0x0030f685, 0x5f76: 0x00310085, 0x5f77: 0x00312a85, - 0x5f78: 0x002bde8b, 0x5f79: 0x002c0a8b, 0x5f7b: 0x002c628b, - 0x5f7c: 0x002c988b, 0x5f7d: 0x002d088b, 0x5f7e: 0x002d228b, - // Block 0x17e, offset 0x5f80 - 0x5f80: 0x002d9a8b, 0x5f81: 0x002dcc8b, 0x5f82: 0x002dfe8b, 0x5f83: 0x002e228b, - 0x5f84: 0x002e828b, 0x5f86: 0x002ee28b, - 0x5f8a: 0x002fe68b, 0x5f8b: 0x00302c8b, - 0x5f8c: 0x00306c8b, 0x5f8d: 0x0030be8b, 0x5f8e: 0x0030e28b, 0x5f8f: 0x0030f68b, - 0x5f90: 0x0031008b, 0x5f92: 0x002bde85, 0x5f93: 0x002c0a85, - 0x5f94: 0x002c3a85, 0x5f95: 0x002c6285, 0x5f96: 0x002c9885, 0x5f97: 0x002d0885, - 0x5f98: 0x002d2285, 0x5f99: 0x002d6885, 0x5f9a: 0x002d9a85, 0x5f9b: 0x002dcc85, - 0x5f9c: 0x002dfe85, 0x5f9d: 0x002e2285, 0x5f9e: 0x002e8285, 0x5f9f: 0x002e9e85, - 0x5fa0: 0x002ee285, 0x5fa1: 0x002f2c85, 0x5fa2: 0x002f5685, 0x5fa3: 0x002f7a85, - 0x5fa4: 0x002fe685, 0x5fa5: 0x00302c85, 0x5fa6: 0x00306c85, 0x5fa7: 0x0030be85, - 0x5fa8: 0x0030e285, 0x5fa9: 0x0030f685, 0x5faa: 0x00310085, 0x5fab: 0x00312a85, - 0x5fac: 0x002bde8b, 0x5fad: 0x002c0a8b, 0x5fae: 0x002c3a8b, 0x5faf: 0x002c628b, - 0x5fb0: 0x002c988b, 0x5fb1: 0x002d088b, 0x5fb2: 0x002d228b, 0x5fb3: 0x002d688b, - 0x5fb4: 0x002d9a8b, 0x5fb5: 0x002dcc8b, 0x5fb6: 0x002dfe8b, 0x5fb7: 0x002e228b, - 0x5fb8: 0x002e828b, 0x5fb9: 0x002e9e8b, 0x5fba: 0x002ee28b, 0x5fbb: 0x002f2c8b, - 0x5fbc: 0x002f568b, 0x5fbd: 0x002f7a8b, 0x5fbe: 0x002fe68b, 0x5fbf: 0x00302c8b, - // Block 0x17f, offset 0x5fc0 - 0x5fc0: 0x00306c8b, 0x5fc1: 0x0030be8b, 0x5fc2: 0x0030e28b, 0x5fc3: 0x0030f68b, - 0x5fc4: 0x0031008b, 0x5fc5: 0x00312a8b, 0x5fc6: 0x002bde85, 0x5fc7: 0x002c0a85, - 0x5fc8: 0x002c3a85, 0x5fc9: 0x002c6285, 0x5fca: 0x002c9885, 0x5fcb: 0x002d0885, - 0x5fcc: 0x002d2285, 0x5fcd: 0x002d6885, 0x5fce: 0x002d9a85, 0x5fcf: 0x002dcc85, - 0x5fd0: 0x002dfe85, 0x5fd1: 0x002e2285, 0x5fd2: 0x002e8285, 0x5fd3: 0x002e9e85, - 0x5fd4: 0x002ee285, 0x5fd5: 0x002f2c85, 0x5fd6: 0x002f5685, 0x5fd7: 0x002f7a85, - 0x5fd8: 0x002fe685, 0x5fd9: 0x00302c85, 0x5fda: 0x00306c85, 0x5fdb: 0x0030be85, - 0x5fdc: 0x0030e285, 0x5fdd: 0x0030f685, 0x5fde: 0x00310085, 0x5fdf: 0x00312a85, - 0x5fe0: 0x002bde8b, 0x5fe1: 0x002c0a8b, 0x5fe2: 0x002c3a8b, 0x5fe3: 0x002c628b, - 0x5fe4: 0x002c988b, 0x5fe5: 0x002d088b, 0x5fe6: 0x002d228b, 0x5fe7: 0x002d688b, - 0x5fe8: 0x002d9a8b, 0x5fe9: 0x002dcc8b, 0x5fea: 0x002dfe8b, 0x5feb: 0x002e228b, - 0x5fec: 0x002e828b, 0x5fed: 0x002e9e8b, 0x5fee: 0x002ee28b, 0x5fef: 0x002f2c8b, - 0x5ff0: 0x002f568b, 0x5ff1: 0x002f7a8b, 0x5ff2: 0x002fe68b, 0x5ff3: 0x00302c8b, - 0x5ff4: 0x00306c8b, 0x5ff5: 0x0030be8b, 0x5ff6: 0x0030e28b, 0x5ff7: 0x0030f68b, - 0x5ff8: 0x0031008b, 0x5ff9: 0x00312a8b, 0x5ffa: 0x002bde85, 0x5ffb: 0x002c0a85, - 0x5ffc: 0x002c3a85, 0x5ffd: 0x002c6285, 0x5ffe: 0x002c9885, 0x5fff: 0x002d0885, - // Block 0x180, offset 0x6000 - 0x6000: 0x002d2285, 0x6001: 0x002d6885, 0x6002: 0x002d9a85, 0x6003: 0x002dcc85, - 0x6004: 0x002dfe85, 0x6005: 0x002e2285, 0x6006: 0x002e8285, 0x6007: 0x002e9e85, - 0x6008: 0x002ee285, 0x6009: 0x002f2c85, 0x600a: 0x002f5685, 0x600b: 0x002f7a85, - 0x600c: 0x002fe685, 0x600d: 0x00302c85, 0x600e: 0x00306c85, 0x600f: 0x0030be85, - 0x6010: 0x0030e285, 0x6011: 0x0030f685, 0x6012: 0x00310085, 0x6013: 0x00312a85, - 0x6014: 0x002bde8b, 0x6015: 0x002c0a8b, 0x6016: 0x002c3a8b, 0x6017: 0x002c628b, - 0x6018: 0x002c988b, 0x6019: 0x002d088b, 0x601a: 0x002d228b, 0x601b: 0x002d688b, - 0x601c: 0x002d9a8b, 0x601d: 0x002dcc8b, 0x601e: 0x002dfe8b, 0x601f: 0x002e228b, - 0x6020: 0x002e828b, 0x6021: 0x002e9e8b, 0x6022: 0x002ee28b, 0x6023: 0x002f2c8b, - 0x6024: 0x002f568b, 0x6025: 0x002f7a8b, 0x6026: 0x002fe68b, 0x6027: 0x00302c8b, - 0x6028: 0x00306c8b, 0x6029: 0x0030be8b, 0x602a: 0x0030e28b, 0x602b: 0x0030f68b, - 0x602c: 0x0031008b, 0x602d: 0x00312a8b, 0x602e: 0x002bde85, 0x602f: 0x002c0a85, - 0x6030: 0x002c3a85, 0x6031: 0x002c6285, 0x6032: 0x002c9885, 0x6033: 0x002d0885, - 0x6034: 0x002d2285, 0x6035: 0x002d6885, 0x6036: 0x002d9a85, 0x6037: 0x002dcc85, - 0x6038: 0x002dfe85, 0x6039: 0x002e2285, 0x603a: 0x002e8285, 0x603b: 0x002e9e85, - 0x603c: 0x002ee285, 0x603d: 0x002f2c85, 0x603e: 0x002f5685, 0x603f: 0x002f7a85, - // Block 0x181, offset 0x6040 - 0x6040: 0x002fe685, 0x6041: 0x00302c85, 0x6042: 0x00306c85, 0x6043: 0x0030be85, - 0x6044: 0x0030e285, 0x6045: 0x0030f685, 0x6046: 0x00310085, 0x6047: 0x00312a85, - 0x6048: 0x002bde8b, 0x6049: 0x002c0a8b, 0x604a: 0x002c3a8b, 0x604b: 0x002c628b, - 0x604c: 0x002c988b, 0x604d: 0x002d088b, 0x604e: 0x002d228b, 0x604f: 0x002d688b, - 0x6050: 0x002d9a8b, 0x6051: 0x002dcc8b, 0x6052: 0x002dfe8b, 0x6053: 0x002e228b, - 0x6054: 0x002e828b, 0x6055: 0x002e9e8b, 0x6056: 0x002ee28b, 0x6057: 0x002f2c8b, - 0x6058: 0x002f568b, 0x6059: 0x002f7a8b, 0x605a: 0x002fe68b, 0x605b: 0x00302c8b, - 0x605c: 0x00306c8b, 0x605d: 0x0030be8b, 0x605e: 0x0030e28b, 0x605f: 0x0030f68b, - 0x6060: 0x0031008b, 0x6061: 0x00312a8b, 0x6062: 0x002bde85, 0x6063: 0x002c0a85, - 0x6064: 0x002c3a85, 0x6065: 0x002c6285, 0x6066: 0x002c9885, 0x6067: 0x002d0885, - 0x6068: 0x002d2285, 0x6069: 0x002d6885, 0x606a: 0x002d9a85, 0x606b: 0x002dcc85, - 0x606c: 0x002dfe85, 0x606d: 0x002e2285, 0x606e: 0x002e8285, 0x606f: 0x002e9e85, - 0x6070: 0x002ee285, 0x6071: 0x002f2c85, 0x6072: 0x002f5685, 0x6073: 0x002f7a85, - 0x6074: 0x002fe685, 0x6075: 0x00302c85, 0x6076: 0x00306c85, 0x6077: 0x0030be85, - 0x6078: 0x0030e285, 0x6079: 0x0030f685, 0x607a: 0x00310085, 0x607b: 0x00312a85, - 0x607c: 0x002bde8b, 0x607d: 0x002c0a8b, 0x607e: 0x002c3a8b, 0x607f: 0x002c628b, - // Block 0x182, offset 0x6080 - 0x6080: 0x002c988b, 0x6081: 0x002d088b, 0x6082: 0x002d228b, 0x6083: 0x002d688b, - 0x6084: 0x002d9a8b, 0x6085: 0x002dcc8b, 0x6086: 0x002dfe8b, 0x6087: 0x002e228b, - 0x6088: 0x002e828b, 0x6089: 0x002e9e8b, 0x608a: 0x002ee28b, 0x608b: 0x002f2c8b, - 0x608c: 0x002f568b, 0x608d: 0x002f7a8b, 0x608e: 0x002fe68b, 0x608f: 0x00302c8b, - 0x6090: 0x00306c8b, 0x6091: 0x0030be8b, 0x6092: 0x0030e28b, 0x6093: 0x0030f68b, - 0x6094: 0x0031008b, 0x6095: 0x00312a8b, 0x6096: 0x002bde85, 0x6097: 0x002c0a85, - 0x6098: 0x002c3a85, 0x6099: 0x002c6285, 0x609a: 0x002c9885, 0x609b: 0x002d0885, - 0x609c: 0x002d2285, 0x609d: 0x002d6885, 0x609e: 0x002d9a85, 0x609f: 0x002dcc85, - 0x60a0: 0x002dfe85, 0x60a1: 0x002e2285, 0x60a2: 0x002e8285, 0x60a3: 0x002e9e85, - 0x60a4: 0x002ee285, 0x60a5: 0x002f2c85, 0x60a6: 0x002f5685, 0x60a7: 0x002f7a85, - 0x60a8: 0x002fe685, 0x60a9: 0x00302c85, 0x60aa: 0x00306c85, 0x60ab: 0x0030be85, - 0x60ac: 0x0030e285, 0x60ad: 0x0030f685, 0x60ae: 0x00310085, 0x60af: 0x00312a85, - 0x60b0: 0x002bde8b, 0x60b1: 0x002c0a8b, 0x60b2: 0x002c3a8b, 0x60b3: 0x002c628b, - 0x60b4: 0x002c988b, 0x60b5: 0x002d088b, 0x60b6: 0x002d228b, 0x60b7: 0x002d688b, - 0x60b8: 0x002d9a8b, 0x60b9: 0x002dcc8b, 0x60ba: 0x002dfe8b, 0x60bb: 0x002e228b, - 0x60bc: 0x002e828b, 0x60bd: 0x002e9e8b, 0x60be: 0x002ee28b, 0x60bf: 0x002f2c8b, - // Block 0x183, offset 0x60c0 - 0x60c0: 0x002f568b, 0x60c1: 0x002f7a8b, 0x60c2: 0x002fe68b, 0x60c3: 0x00302c8b, - 0x60c4: 0x00306c8b, 0x60c5: 0x0030be8b, 0x60c6: 0x0030e28b, 0x60c7: 0x0030f68b, - 0x60c8: 0x0031008b, 0x60c9: 0x00312a8b, 0x60ca: 0x002bde85, 0x60cb: 0x002c0a85, - 0x60cc: 0x002c3a85, 0x60cd: 0x002c6285, 0x60ce: 0x002c9885, 0x60cf: 0x002d0885, - 0x60d0: 0x002d2285, 0x60d1: 0x002d6885, 0x60d2: 0x002d9a85, 0x60d3: 0x002dcc85, - 0x60d4: 0x002dfe85, 0x60d5: 0x002e2285, 0x60d6: 0x002e8285, 0x60d7: 0x002e9e85, - 0x60d8: 0x002ee285, 0x60d9: 0x002f2c85, 0x60da: 0x002f5685, 0x60db: 0x002f7a85, - 0x60dc: 0x002fe685, 0x60dd: 0x00302c85, 0x60de: 0x00306c85, 0x60df: 0x0030be85, - 0x60e0: 0x0030e285, 0x60e1: 0x0030f685, 0x60e2: 0x00310085, 0x60e3: 0x00312a85, - 0x60e4: 0x002da285, 0x60e5: 0x002dd485, - 0x60e8: 0x0032528b, 0x60e9: 0x0032548b, 0x60ea: 0x0032568b, 0x60eb: 0x00325a8b, - 0x60ec: 0x00325c8b, 0x60ed: 0x0032648b, 0x60ee: 0x0032688b, 0x60ef: 0x00326a8b, - 0x60f0: 0x00326c8b, 0x60f1: 0x0032708b, 0x60f2: 0x0032728b, 0x60f3: 0x0032768b, - 0x60f4: 0x0032788b, 0x60f5: 0x00327a8b, 0x60f6: 0x00327c8b, 0x60f7: 0x00327e8b, - 0x60f8: 0x0032888b, 0x60f9: 0x00326a8b, 0x60fa: 0x00328e8b, 0x60fb: 0x0032968b, - 0x60fc: 0x0032988b, 0x60fd: 0x00329a8b, 0x60fe: 0x00329c8b, 0x60ff: 0x00329e8b, - // Block 0x184, offset 0x6100 - 0x6100: 0x0032a28b, 0x6101: 0x00092485, 0x6102: 0x00325285, 0x6103: 0x00325485, - 0x6104: 0x00325685, 0x6105: 0x00325a85, 0x6106: 0x00325c85, 0x6107: 0x00326485, - 0x6108: 0x00326885, 0x6109: 0x00326a85, 0x610a: 0x00326c85, 0x610b: 0x00327085, - 0x610c: 0x00327285, 0x610d: 0x00327685, 0x610e: 0x00327885, 0x610f: 0x00327a85, - 0x6110: 0x00327c85, 0x6111: 0x00327e85, 0x6112: 0x00328885, 0x6113: 0x00328e85, - 0x6114: 0x00328e85, 0x6115: 0x00329685, 0x6116: 0x00329885, 0x6117: 0x00329a85, - 0x6118: 0x00329c85, 0x6119: 0x00329e85, 0x611a: 0x0032a285, 0x611b: 0x00091c85, - 0x611c: 0x00325c85, 0x611d: 0x00326a85, 0x611e: 0x00327085, 0x611f: 0x00329a85, - 0x6120: 0x00328885, 0x6121: 0x00327e85, 0x6122: 0x0032528b, 0x6123: 0x0032548b, - 0x6124: 0x0032568b, 0x6125: 0x00325a8b, 0x6126: 0x00325c8b, 0x6127: 0x0032648b, - 0x6128: 0x0032688b, 0x6129: 0x00326a8b, 0x612a: 0x00326c8b, 0x612b: 0x0032708b, - 0x612c: 0x0032728b, 0x612d: 0x0032768b, 0x612e: 0x0032788b, 0x612f: 0x00327a8b, - 0x6130: 0x00327c8b, 0x6131: 0x00327e8b, 0x6132: 0x0032888b, 0x6133: 0x00326a8b, - 0x6134: 0x00328e8b, 0x6135: 0x0032968b, 0x6136: 0x0032988b, 0x6137: 0x00329a8b, - 0x6138: 0x00329c8b, 0x6139: 0x00329e8b, 0x613a: 0x0032a28b, 0x613b: 0x00092485, - 0x613c: 0x00325285, 0x613d: 0x00325485, 0x613e: 0x00325685, 0x613f: 0x00325a85, - // Block 0x185, offset 0x6140 - 0x6140: 0x00325c85, 0x6141: 0x00326485, 0x6142: 0x00326885, 0x6143: 0x00326a85, - 0x6144: 0x00326c85, 0x6145: 0x00327085, 0x6146: 0x00327285, 0x6147: 0x00327685, - 0x6148: 0x00327885, 0x6149: 0x00327a85, 0x614a: 0x00327c85, 0x614b: 0x00327e85, - 0x614c: 0x00328885, 0x614d: 0x00328e85, 0x614e: 0x00328e85, 0x614f: 0x00329685, - 0x6150: 0x00329885, 0x6151: 0x00329a85, 0x6152: 0x00329c85, 0x6153: 0x00329e85, - 0x6154: 0x0032a285, 0x6155: 0x00091c85, 0x6156: 0x00325c85, 0x6157: 0x00326a85, - 0x6158: 0x00327085, 0x6159: 0x00329a85, 0x615a: 0x00328885, 0x615b: 0x00327e85, - 0x615c: 0x0032528b, 0x615d: 0x0032548b, 0x615e: 0x0032568b, 0x615f: 0x00325a8b, - 0x6160: 0x00325c8b, 0x6161: 0x0032648b, 0x6162: 0x0032688b, 0x6163: 0x00326a8b, - 0x6164: 0x00326c8b, 0x6165: 0x0032708b, 0x6166: 0x0032728b, 0x6167: 0x0032768b, - 0x6168: 0x0032788b, 0x6169: 0x00327a8b, 0x616a: 0x00327c8b, 0x616b: 0x00327e8b, - 0x616c: 0x0032888b, 0x616d: 0x00326a8b, 0x616e: 0x00328e8b, 0x616f: 0x0032968b, - 0x6170: 0x0032988b, 0x6171: 0x00329a8b, 0x6172: 0x00329c8b, 0x6173: 0x00329e8b, - 0x6174: 0x0032a28b, 0x6175: 0x00092485, 0x6176: 0x00325285, 0x6177: 0x00325485, - 0x6178: 0x00325685, 0x6179: 0x00325a85, 0x617a: 0x00325c85, 0x617b: 0x00326485, - 0x617c: 0x00326885, 0x617d: 0x00326a85, 0x617e: 0x00326c85, 0x617f: 0x00327085, - // Block 0x186, offset 0x6180 - 0x6180: 0x00327285, 0x6181: 0x00327685, 0x6182: 0x00327885, 0x6183: 0x00327a85, - 0x6184: 0x00327c85, 0x6185: 0x00327e85, 0x6186: 0x00328885, 0x6187: 0x00328e85, - 0x6188: 0x00328e85, 0x6189: 0x00329685, 0x618a: 0x00329885, 0x618b: 0x00329a85, - 0x618c: 0x00329c85, 0x618d: 0x00329e85, 0x618e: 0x0032a285, 0x618f: 0x00091c85, - 0x6190: 0x00325c85, 0x6191: 0x00326a85, 0x6192: 0x00327085, 0x6193: 0x00329a85, - 0x6194: 0x00328885, 0x6195: 0x00327e85, 0x6196: 0x0032528b, 0x6197: 0x0032548b, - 0x6198: 0x0032568b, 0x6199: 0x00325a8b, 0x619a: 0x00325c8b, 0x619b: 0x0032648b, - 0x619c: 0x0032688b, 0x619d: 0x00326a8b, 0x619e: 0x00326c8b, 0x619f: 0x0032708b, - 0x61a0: 0x0032728b, 0x61a1: 0x0032768b, 0x61a2: 0x0032788b, 0x61a3: 0x00327a8b, - 0x61a4: 0x00327c8b, 0x61a5: 0x00327e8b, 0x61a6: 0x0032888b, 0x61a7: 0x00326a8b, - 0x61a8: 0x00328e8b, 0x61a9: 0x0032968b, 0x61aa: 0x0032988b, 0x61ab: 0x00329a8b, - 0x61ac: 0x00329c8b, 0x61ad: 0x00329e8b, 0x61ae: 0x0032a28b, 0x61af: 0x00092485, - 0x61b0: 0x00325285, 0x61b1: 0x00325485, 0x61b2: 0x00325685, 0x61b3: 0x00325a85, - 0x61b4: 0x00325c85, 0x61b5: 0x00326485, 0x61b6: 0x00326885, 0x61b7: 0x00326a85, - 0x61b8: 0x00326c85, 0x61b9: 0x00327085, 0x61ba: 0x00327285, 0x61bb: 0x00327685, - 0x61bc: 0x00327885, 0x61bd: 0x00327a85, 0x61be: 0x00327c85, 0x61bf: 0x00327e85, - // Block 0x187, offset 0x61c0 - 0x61c0: 0x00328885, 0x61c1: 0x00328e85, 0x61c2: 0x00328e85, 0x61c3: 0x00329685, - 0x61c4: 0x00329885, 0x61c5: 0x00329a85, 0x61c6: 0x00329c85, 0x61c7: 0x00329e85, - 0x61c8: 0x0032a285, 0x61c9: 0x00091c85, 0x61ca: 0x00325c85, 0x61cb: 0x00326a85, - 0x61cc: 0x00327085, 0x61cd: 0x00329a85, 0x61ce: 0x00328885, 0x61cf: 0x00327e85, - 0x61d0: 0x0032528b, 0x61d1: 0x0032548b, 0x61d2: 0x0032568b, 0x61d3: 0x00325a8b, - 0x61d4: 0x00325c8b, 0x61d5: 0x0032648b, 0x61d6: 0x0032688b, 0x61d7: 0x00326a8b, - 0x61d8: 0x00326c8b, 0x61d9: 0x0032708b, 0x61da: 0x0032728b, 0x61db: 0x0032768b, - 0x61dc: 0x0032788b, 0x61dd: 0x00327a8b, 0x61de: 0x00327c8b, 0x61df: 0x00327e8b, - 0x61e0: 0x0032888b, 0x61e1: 0x00326a8b, 0x61e2: 0x00328e8b, 0x61e3: 0x0032968b, - 0x61e4: 0x0032988b, 0x61e5: 0x00329a8b, 0x61e6: 0x00329c8b, 0x61e7: 0x00329e8b, - 0x61e8: 0x0032a28b, 0x61e9: 0x00092485, 0x61ea: 0x00325285, 0x61eb: 0x00325485, - 0x61ec: 0x00325685, 0x61ed: 0x00325a85, 0x61ee: 0x00325c85, 0x61ef: 0x00326485, - 0x61f0: 0x00326885, 0x61f1: 0x00326a85, 0x61f2: 0x00326c85, 0x61f3: 0x00327085, - 0x61f4: 0x00327285, 0x61f5: 0x00327685, 0x61f6: 0x00327885, 0x61f7: 0x00327a85, - 0x61f8: 0x00327c85, 0x61f9: 0x00327e85, 0x61fa: 0x00328885, 0x61fb: 0x00328e85, - 0x61fc: 0x00328e85, 0x61fd: 0x00329685, 0x61fe: 0x00329885, 0x61ff: 0x00329a85, - // Block 0x188, offset 0x6200 - 0x6200: 0x00329c85, 0x6201: 0x00329e85, 0x6202: 0x0032a285, 0x6203: 0x00091c85, - 0x6204: 0x00325c85, 0x6205: 0x00326a85, 0x6206: 0x00327085, 0x6207: 0x00329a85, - 0x6208: 0x00328885, 0x6209: 0x00327e85, 0x620a: 0x00325e8b, 0x620b: 0x00325e85, - 0x620e: 0x0029cc85, 0x620f: 0x0029ce85, - 0x6210: 0x0029d085, 0x6211: 0x0029d285, 0x6212: 0x0029d485, 0x6213: 0x0029d685, - 0x6214: 0x0029d885, 0x6215: 0x0029da85, 0x6216: 0x0029dc85, 0x6217: 0x0029de85, - 0x6218: 0x0029cc85, 0x6219: 0x0029ce85, 0x621a: 0x0029d085, 0x621b: 0x0029d285, - 0x621c: 0x0029d485, 0x621d: 0x0029d685, 0x621e: 0x0029d885, 0x621f: 0x0029da85, - 0x6220: 0x0029dc85, 0x6221: 0x0029de85, 0x6222: 0x0029cc85, 0x6223: 0x0029ce85, - 0x6224: 0x0029d085, 0x6225: 0x0029d285, 0x6226: 0x0029d485, 0x6227: 0x0029d685, - 0x6228: 0x0029d885, 0x6229: 0x0029da85, 0x622a: 0x0029dc85, 0x622b: 0x0029de85, - 0x622c: 0x0029cc85, 0x622d: 0x0029ce85, 0x622e: 0x0029d085, 0x622f: 0x0029d285, - 0x6230: 0x0029d485, 0x6231: 0x0029d685, 0x6232: 0x0029d885, 0x6233: 0x0029da85, - 0x6234: 0x0029dc85, 0x6235: 0x0029de85, 0x6236: 0x0029cc85, 0x6237: 0x0029ce85, - 0x6238: 0x0029d085, 0x6239: 0x0029d285, 0x623a: 0x0029d485, 0x623b: 0x0029d685, - 0x623c: 0x0029d885, 0x623d: 0x0029da85, 0x623e: 0x0029dc85, 0x623f: 0x0029de85, - // Block 0x189, offset 0x6240 - 0x6240: 0x00393885, 0x6241: 0x00393c85, 0x6242: 0x00396485, 0x6243: 0x00398885, - 0x6245: 0x003a7485, 0x6246: 0x0039a685, 0x6247: 0x00397285, - 0x6248: 0x0039e685, 0x6249: 0x003a9085, 0x624a: 0x003a1a85, 0x624b: 0x003a4085, - 0x624c: 0x003a4e85, 0x624d: 0x003a5685, 0x624e: 0x0039c685, 0x624f: 0x0039ee85, - 0x6250: 0x0039fc85, 0x6251: 0x0039dc85, 0x6252: 0x003a1285, 0x6253: 0x0039a485, - 0x6254: 0x0039c885, 0x6255: 0x00395685, 0x6256: 0x00395885, 0x6257: 0x00397485, - 0x6258: 0x00398a85, 0x6259: 0x0039de85, 0x625a: 0x0039e885, 0x625b: 0x0039f085, - 0x625c: 0x00393a85, 0x625d: 0x003a5885, 0x625e: 0x0039fe85, 0x625f: 0x003a1085, - 0x6261: 0x00393c85, 0x6262: 0x00396485, - 0x6264: 0x003a6885, 0x6267: 0x00397285, - 0x6269: 0x003a9085, 0x626a: 0x003a1a85, 0x626b: 0x003a4085, - 0x626c: 0x003a4e85, 0x626d: 0x003a5685, 0x626e: 0x0039c685, 0x626f: 0x0039ee85, - 0x6270: 0x0039fc85, 0x6271: 0x0039dc85, 0x6272: 0x003a1285, - 0x6274: 0x0039c885, 0x6275: 0x00395685, 0x6276: 0x00395885, 0x6277: 0x00397485, - 0x6279: 0x0039de85, 0x627b: 0x0039f085, - // Block 0x18a, offset 0x6280 - 0x6282: 0x00396485, - 0x6287: 0x00397285, - 0x6289: 0x003a9085, 0x628b: 0x003a4085, - 0x628d: 0x003a5685, 0x628e: 0x0039c685, 0x628f: 0x0039ee85, - 0x6291: 0x0039dc85, 0x6292: 0x003a1285, - 0x6294: 0x0039c885, 0x6297: 0x00397485, - 0x6299: 0x0039de85, 0x629b: 0x0039f085, - 0x629d: 0x003a5885, 0x629f: 0x003a1085, - 0x62a1: 0x00393c85, 0x62a2: 0x00396485, - 0x62a4: 0x003a6885, 0x62a7: 0x00397285, - 0x62a8: 0x0039e685, 0x62a9: 0x003a9085, 0x62aa: 0x003a1a85, - 0x62ac: 0x003a4e85, 0x62ad: 0x003a5685, 0x62ae: 0x0039c685, 0x62af: 0x0039ee85, - 0x62b0: 0x0039fc85, 0x62b1: 0x0039dc85, 0x62b2: 0x003a1285, - 0x62b4: 0x0039c885, 0x62b5: 0x00395685, 0x62b6: 0x00395885, 0x62b7: 0x00397485, - 0x62b9: 0x0039de85, 0x62ba: 0x0039e885, 0x62bb: 0x0039f085, - 0x62bc: 0x00393a85, 0x62be: 0x0039fe85, - // Block 0x18b, offset 0x62c0 - 0x62c0: 0x00393885, 0x62c1: 0x00393c85, 0x62c2: 0x00396485, 0x62c3: 0x00398885, - 0x62c4: 0x003a6885, 0x62c5: 0x003a7485, 0x62c6: 0x0039a685, 0x62c7: 0x00397285, - 0x62c8: 0x0039e685, 0x62c9: 0x003a9085, 0x62cb: 0x003a4085, - 0x62cc: 0x003a4e85, 0x62cd: 0x003a5685, 0x62ce: 0x0039c685, 0x62cf: 0x0039ee85, - 0x62d0: 0x0039fc85, 0x62d1: 0x0039dc85, 0x62d2: 0x003a1285, 0x62d3: 0x0039a485, - 0x62d4: 0x0039c885, 0x62d5: 0x00395685, 0x62d6: 0x00395885, 0x62d7: 0x00397485, - 0x62d8: 0x00398a85, 0x62d9: 0x0039de85, 0x62da: 0x0039e885, 0x62db: 0x0039f085, - 0x62e1: 0x00393c85, 0x62e2: 0x00396485, 0x62e3: 0x00398885, - 0x62e5: 0x003a7485, 0x62e6: 0x0039a685, 0x62e7: 0x00397285, - 0x62e8: 0x0039e685, 0x62e9: 0x003a9085, 0x62eb: 0x003a4085, - 0x62ec: 0x003a4e85, 0x62ed: 0x003a5685, 0x62ee: 0x0039c685, 0x62ef: 0x0039ee85, - 0x62f0: 0x0039fc85, 0x62f1: 0x0039dc85, 0x62f2: 0x003a1285, 0x62f3: 0x0039a485, - 0x62f4: 0x0039c885, 0x62f5: 0x00395685, 0x62f6: 0x00395885, 0x62f7: 0x00397485, - 0x62f8: 0x00398a85, 0x62f9: 0x0039de85, 0x62fa: 0x0039e885, 0x62fb: 0x0039f085, - // Block 0x18c, offset 0x6300 - 0x6330: 0x40070a20, 0x6331: 0x40070c20, - // Block 0x18d, offset 0x6340 - 0x6340: 0x401f6e20, 0x6341: 0x401f7020, 0x6342: 0x401f7220, 0x6343: 0x401f7420, - 0x6344: 0x401f7620, 0x6345: 0x401f7820, 0x6346: 0x401f7a20, 0x6347: 0x401f7c20, - 0x6348: 0x401f7e20, 0x6349: 0x401f8020, 0x634a: 0x401f8220, 0x634b: 0x401f8420, - 0x634c: 0x401f8620, 0x634d: 0x401f8820, 0x634e: 0x401f8a20, 0x634f: 0x401f8c20, - 0x6350: 0x401f8e20, 0x6351: 0x401f9020, 0x6352: 0x401f9220, 0x6353: 0x401f9420, - 0x6354: 0x401f9620, 0x6355: 0x401f9820, 0x6356: 0x401f9a20, 0x6357: 0x401f9c20, - 0x6358: 0x401f9e20, 0x6359: 0x401fa020, 0x635a: 0x401fa220, 0x635b: 0x401fa420, - 0x635c: 0x401fa620, 0x635d: 0x401fa820, 0x635e: 0x401faa20, 0x635f: 0x401fac20, - 0x6360: 0x401fae20, 0x6361: 0x401fb020, 0x6362: 0x401fb220, 0x6363: 0x401fb420, - 0x6364: 0x401fb620, 0x6365: 0x401fb820, 0x6366: 0x401fba20, 0x6367: 0x401fbc20, - 0x6368: 0x401fbe20, 0x6369: 0x401fc020, 0x636a: 0x401fc220, 0x636b: 0x401fc420, - 0x6370: 0x401fc620, 0x6371: 0x401fc820, 0x6372: 0x401fca20, 0x6373: 0x401fcc20, - 0x6374: 0x401fce20, 0x6375: 0x401fd020, 0x6376: 0x401fd220, 0x6377: 0x401fd420, - 0x6378: 0x401fd620, 0x6379: 0x401fd820, 0x637a: 0x401fda20, 0x637b: 0x401fdc20, - 0x637c: 0x401fde20, 0x637d: 0x401fe020, 0x637e: 0x401fe220, 0x637f: 0x401fe420, - // Block 0x18e, offset 0x6380 - 0x6380: 0x401fe620, 0x6381: 0x401fe820, 0x6382: 0x401fea20, 0x6383: 0x401fec20, - 0x6384: 0x401fee20, 0x6385: 0x401ff020, 0x6386: 0x401ff220, 0x6387: 0x401ff420, - 0x6388: 0x401ff620, 0x6389: 0x401ff820, 0x638a: 0x401ffa20, 0x638b: 0x401ffc20, - 0x638c: 0x401ffe20, 0x638d: 0x40200020, 0x638e: 0x40200220, 0x638f: 0x40200420, - 0x6390: 0x40200620, 0x6391: 0x40200820, 0x6392: 0x40200a20, 0x6393: 0x40200c20, - 0x6394: 0x40200e20, 0x6395: 0x40201020, 0x6396: 0x40201220, 0x6397: 0x40201420, - 0x6398: 0x40201620, 0x6399: 0x40201820, 0x639a: 0x40201a20, 0x639b: 0x40201c20, - 0x639c: 0x40201e20, 0x639d: 0x40202020, 0x639e: 0x40202220, 0x639f: 0x40202420, - 0x63a0: 0x40202620, 0x63a1: 0x40202820, 0x63a2: 0x40202a20, 0x63a3: 0x40202c20, - 0x63a4: 0x40202e20, 0x63a5: 0x40203020, 0x63a6: 0x40203220, 0x63a7: 0x40203420, - 0x63a8: 0x40203620, 0x63a9: 0x40203820, 0x63aa: 0x40203a20, 0x63ab: 0x40203c20, - 0x63ac: 0x40203e20, 0x63ad: 0x40204020, 0x63ae: 0x40204220, 0x63af: 0x40204420, - 0x63b0: 0x40204620, 0x63b1: 0x40204820, 0x63b2: 0x40204a20, 0x63b3: 0x40204c20, - 0x63b4: 0x40204e20, 0x63b5: 0x40205020, 0x63b6: 0x40205220, 0x63b7: 0x40205420, - 0x63b8: 0x40205620, 0x63b9: 0x40205820, 0x63ba: 0x40205a20, 0x63bb: 0x40205c20, - 0x63bc: 0x40205e20, 0x63bd: 0x40206020, 0x63be: 0x40206220, 0x63bf: 0x40206420, - // Block 0x18f, offset 0x63c0 - 0x63c0: 0x40206620, 0x63c1: 0x40206820, 0x63c2: 0x40206a20, 0x63c3: 0x40206c20, - 0x63c4: 0x40206e20, 0x63c5: 0x40207020, 0x63c6: 0x40207220, 0x63c7: 0x40207420, - 0x63c8: 0x40207620, 0x63c9: 0x40207820, 0x63ca: 0x40207a20, 0x63cb: 0x40207c20, - 0x63cc: 0x40207e20, 0x63cd: 0x40208020, 0x63ce: 0x40208220, 0x63cf: 0x40208420, - 0x63d0: 0x40208620, 0x63d1: 0x40208820, 0x63d2: 0x40208a20, 0x63d3: 0x40208c20, - 0x63e0: 0x40208e20, 0x63e1: 0x40209020, 0x63e2: 0x40209220, 0x63e3: 0x40209420, - 0x63e4: 0x40209620, 0x63e5: 0x40209820, 0x63e6: 0x40209a20, 0x63e7: 0x40209c20, - 0x63e8: 0x40209e20, 0x63e9: 0x4020a020, 0x63ea: 0x4020a220, 0x63eb: 0x4020a420, - 0x63ec: 0x4020a620, 0x63ed: 0x4020a820, 0x63ee: 0x4020aa20, - 0x63f1: 0x4020ac20, 0x63f2: 0x4020ae20, 0x63f3: 0x4020b020, - 0x63f4: 0x4020b220, 0x63f5: 0x4020b420, 0x63f6: 0x4020b620, 0x63f7: 0x4020b820, - 0x63f8: 0x4020ba20, 0x63f9: 0x4020bc20, 0x63fa: 0x4020be20, 0x63fb: 0x4020c020, - 0x63fc: 0x4020c220, 0x63fd: 0x4020c420, 0x63fe: 0x4020c620, - // Block 0x190, offset 0x6400 - 0x6401: 0x4020c820, 0x6402: 0x4020ca20, 0x6403: 0x4020cc20, - 0x6404: 0x4020ce20, 0x6405: 0x4020d020, 0x6406: 0x4020d220, 0x6407: 0x4020d420, - 0x6408: 0x4020d620, 0x6409: 0x4020d820, 0x640a: 0x4020da20, 0x640b: 0x4020dc20, - 0x640c: 0x4020de20, 0x640d: 0x4020e020, 0x640e: 0x4020e220, 0x640f: 0x4020e420, - 0x6411: 0x4020e620, 0x6412: 0x4020e820, 0x6413: 0x4020ea20, - 0x6414: 0x4020ec20, 0x6415: 0x4020ee20, 0x6416: 0x4020f020, 0x6417: 0x4020f220, - 0x6418: 0x4020f420, 0x6419: 0x4020f620, 0x641a: 0x4020f820, 0x641b: 0x4020fa20, - 0x641c: 0x4020fc20, 0x641d: 0x4020fe20, 0x641e: 0x40210020, 0x641f: 0x40210220, - // Block 0x191, offset 0x6440 - 0x6440: 0xf0001f04, 0x6441: 0xf0001f04, 0x6442: 0xf0001f04, 0x6443: 0xf0001f04, - 0x6444: 0xf0001f04, 0x6445: 0xf0001f04, 0x6446: 0xf0001f04, 0x6447: 0xf0001f04, - 0x6448: 0xf0001f04, 0x6449: 0xf0001f04, 0x644a: 0xf0001f04, - 0x6450: 0xf0000a04, 0x6451: 0xf0000a04, 0x6452: 0xf0000a04, 0x6453: 0xf0000a04, - 0x6454: 0xf0000a04, 0x6455: 0xf0000a04, 0x6456: 0xf0000a04, 0x6457: 0xf0000a04, - 0x6458: 0xf0000a04, 0x6459: 0xf0000a04, 0x645a: 0xf0000a04, 0x645b: 0xf0000a04, - 0x645c: 0xf0000a04, 0x645d: 0xf0000a04, 0x645e: 0xf0000a04, 0x645f: 0xf0000a04, - 0x6460: 0xf0000a04, 0x6461: 0xf0000a04, 0x6462: 0xf0000a04, 0x6463: 0xf0000a04, - 0x6464: 0xf0000a04, 0x6465: 0xf0000a04, 0x6466: 0xf0000a04, 0x6467: 0xf0000a04, - 0x6468: 0xf0000a04, 0x6469: 0xf0000a04, 0x646a: 0xf0000a04, 0x646b: 0x002c3a8c, - 0x646c: 0x002f7a8c, 0x646d: 0xf0000c0c, 0x646e: 0xf0000c0c, - 0x6470: 0x002bde9d, 0x6471: 0x002c0a9d, 0x6472: 0x002c3a9d, 0x6473: 0x002c629d, - 0x6474: 0x002c989d, 0x6475: 0x002d089d, 0x6476: 0x002d229d, 0x6477: 0x002d689d, - 0x6478: 0x002d9a9d, 0x6479: 0x002dcc9d, 0x647a: 0x002dfe9d, 0x647b: 0x002e229d, - 0x647c: 0x002e829d, 0x647d: 0x002e9e9d, 0x647e: 0x002ee29d, 0x647f: 0x002f2c9d, - // Block 0x192, offset 0x6480 - 0x6480: 0x002f569d, 0x6481: 0x002f7a9d, 0x6482: 0x002fe69d, 0x6483: 0x00302c9d, - 0x6484: 0x00306c9d, 0x6485: 0x0030be9d, 0x6486: 0x0030e29d, 0x6487: 0x0030f69d, - 0x6488: 0x0031009d, 0x6489: 0x00312a9d, 0x648a: 0xf0001d1d, 0x648b: 0xf0001d1d, - 0x648c: 0xf0001d1d, 0x648d: 0xf0001d1d, 0x648e: 0xe0000ebc, 0x648f: 0xf0001d1d, - 0x6490: 0x002bde8c, 0x6491: 0x002c0a8c, 0x6492: 0x002c3a8c, 0x6493: 0x002c628c, - 0x6494: 0x002c988c, 0x6495: 0x002d088c, 0x6496: 0x002d228c, 0x6497: 0x002d688c, - 0x6498: 0x002d9a8c, 0x6499: 0x002dcc8c, 0x649a: 0x002dfe8c, 0x649b: 0x002e228c, - 0x649c: 0x002e828c, 0x649d: 0x002e9e8c, 0x649e: 0x002ee28c, 0x649f: 0x002f2c8c, - 0x64a0: 0x002f568c, 0x64a1: 0x002f7a8c, 0x64a2: 0x002fe68c, 0x64a3: 0x00302c8c, - 0x64a4: 0x00306c8c, 0x64a5: 0x0030be8c, 0x64a6: 0x0030e28c, 0x64a7: 0x0030f68c, - 0x64a8: 0x0031008c, 0x64a9: 0x00312a8c, 0x64aa: 0xf0001414, 0x64ab: 0xf0001414, - 0x64b0: 0x002bde9d, 0x64b1: 0x002c0a9d, 0x64b2: 0x002c3a9d, 0x64b3: 0x002c629d, - 0x64b4: 0x002c989d, 0x64b5: 0x002d089d, 0x64b6: 0x002d229d, 0x64b7: 0x002d689d, - 0x64b8: 0x002d9a9d, 0x64b9: 0x002dcc9d, 0x64ba: 0x002dfe9d, 0x64bb: 0x002e229d, - 0x64bc: 0x002e829d, 0x64bd: 0x002e9e9d, 0x64be: 0x002ee29d, 0x64bf: 0x002f2c9d, - // Block 0x193, offset 0x64c0 - 0x64c0: 0x002f569d, 0x64c1: 0x002f7a9d, 0x64c2: 0x002fe69d, 0x64c3: 0x00302c9d, - 0x64c4: 0x00306c9d, 0x64c5: 0x0030be9d, 0x64c6: 0x0030e29d, 0x64c7: 0x0030f69d, - 0x64c8: 0x0031009d, 0x64c9: 0x00312a9d, 0x64ca: 0x002f2c9d, 0x64cb: 0xe0000c81, - 0x64cc: 0xe0000eb5, 0x64cd: 0xe0000f74, 0x64ce: 0xe00009d2, 0x64cf: 0xe00010f0, - 0x64d0: 0xf0001d1d, 0x64d1: 0xe0000a6f, 0x64d2: 0xe0000a7e, 0x64d3: 0xe0000ba4, - 0x64d4: 0xe0000c84, 0x64d5: 0xe0000d8a, 0x64d6: 0xe0000d8e, 0x64d7: 0xe0000e9b, - 0x64d8: 0xe0000f77, 0x64d9: 0xe00010a2, 0x64da: 0xe00010c0, - // Block 0x194, offset 0x6500 - 0x6526: 0x40110c20, 0x6527: 0x40110e20, - 0x6528: 0x40111020, 0x6529: 0x40111220, 0x652a: 0x40111420, 0x652b: 0x40111620, - 0x652c: 0x40111820, 0x652d: 0x40111a20, 0x652e: 0x40111c20, 0x652f: 0x40111e20, - 0x6530: 0x40112020, 0x6531: 0x40112220, 0x6532: 0x40112420, 0x6533: 0x40112620, - 0x6534: 0x40112820, 0x6535: 0x40112a20, 0x6536: 0x40112c20, 0x6537: 0x40112e20, - 0x6538: 0x40113020, 0x6539: 0x40113220, 0x653a: 0x40113420, 0x653b: 0x40113620, - 0x653c: 0x40113820, 0x653d: 0x40113a20, 0x653e: 0x40113c20, 0x653f: 0x40113e20, - // Block 0x195, offset 0x6540 - 0x6540: 0xf0001c1c, 0x6541: 0xf0001c1c, 0x6542: 0x00658c9c, - 0x6550: 0x02c4969c, 0x6551: 0x02b6ae9c, 0x6552: 0x02a7989c, 0x6553: 0xf0001c1c, - 0x6554: 0x029d189c, 0x6555: 0x02b2349c, 0x6556: 0x0313c69c, 0x6557: 0x02b2529c, - 0x6558: 0x029d489c, 0x6559: 0x02cc409c, 0x655a: 0x02e2429c, 0x655b: 0x02cb329c, - 0x655c: 0x02a49a9c, 0x655d: 0x02bf189c, 0x655e: 0x02a31a9c, 0x655f: 0x02cb609c, - 0x6560: 0x02a43a9c, 0x6561: 0x02fa849c, 0x6562: 0x02ea3e9c, 0x6563: 0x0319529c, - 0x6564: 0x02b1e09c, 0x6565: 0x02a8729c, 0x6566: 0x02de289c, 0x6567: 0x02c52a9c, - 0x6568: 0x02c6aa9c, 0x6569: 0x029c009c, 0x656a: 0x029c129c, 0x656b: 0x0320949c, - 0x656c: 0x02bbcc9c, 0x656d: 0x029c5a9c, 0x656e: 0x02a7e69c, 0x656f: 0x02c60e9c, - 0x6570: 0x031ae09c, 0x6571: 0x02c4a69c, 0x6572: 0x02f3029c, 0x6573: 0x02f4f49c, - 0x6574: 0x02a8109c, 0x6575: 0x02dd009c, 0x6576: 0x02ce129c, 0x6577: 0x02ce109c, - 0x6578: 0x02ea669c, 0x6579: 0x02a4e49c, 0x657a: 0x02ab6c9c, - // Block 0x196, offset 0x6580 - 0x6580: 0xf0000404, 0x6581: 0xf0000404, 0x6582: 0xf0000404, 0x6583: 0xf0000404, - 0x6584: 0xf0000404, 0x6585: 0xf0000404, 0x6586: 0xf0000404, 0x6587: 0xf0000404, - 0x6588: 0xf0000404, - 0x6590: 0x02bf2e86, 0x6591: 0x02a7de86, - // Block 0x197, offset 0x65c0 - 0x65c0: 0x40210420, 0x65c1: 0x40210620, 0x65c2: 0x40210820, 0x65c3: 0x40210a20, - 0x65c4: 0x40210c20, 0x65c5: 0x40210e20, 0x65c6: 0x40211020, 0x65c7: 0x40211220, - 0x65c8: 0x40211420, 0x65c9: 0x40211620, 0x65ca: 0x40211820, 0x65cb: 0x40211a20, - 0x65cc: 0x40211c20, 0x65cd: 0x40211e20, 0x65ce: 0x40212020, 0x65cf: 0x40212220, - 0x65d0: 0x40212420, 0x65d1: 0x40212620, 0x65d2: 0x40212820, 0x65d3: 0x40212a20, - 0x65d4: 0x40212c20, 0x65d5: 0x40212e20, 0x65d6: 0x40213020, 0x65d7: 0x40213220, - 0x65d8: 0x40213420, 0x65d9: 0x40213620, 0x65da: 0x40213820, 0x65db: 0x40213a20, - 0x65dc: 0x40213c20, 0x65dd: 0x40213e20, 0x65de: 0x40214020, 0x65df: 0x40214220, - 0x65e0: 0x40214420, - 0x65f0: 0x40214620, 0x65f1: 0x40214820, 0x65f2: 0x40214a20, 0x65f3: 0x40214c20, - 0x65f4: 0x40214e20, 0x65f5: 0x40215020, 0x65f7: 0x40215220, - 0x65f8: 0x40215420, 0x65f9: 0x40215620, 0x65fa: 0x40215820, 0x65fb: 0x40215a20, - 0x65fc: 0x40215c20, 0x65fd: 0x40215e20, 0x65fe: 0x40216020, 0x65ff: 0x40216220, - // Block 0x198, offset 0x6600 - 0x6600: 0x40216420, 0x6601: 0x40216620, 0x6602: 0x40216820, 0x6603: 0x40216a20, - 0x6604: 0x40216c20, 0x6605: 0x40216e20, 0x6606: 0x40217020, 0x6607: 0x40217220, - 0x6608: 0x40217420, 0x6609: 0x40217620, 0x660a: 0x40217820, 0x660b: 0x40217a20, - 0x660c: 0x40217c20, 0x660d: 0x40217e20, 0x660e: 0x40218020, 0x660f: 0x40218220, - 0x6610: 0x40218420, 0x6611: 0x40218620, 0x6612: 0x40218820, 0x6613: 0x40218a20, - 0x6614: 0x40218c20, 0x6615: 0x40218e20, 0x6616: 0x40219020, 0x6617: 0x40219220, - 0x6618: 0x40219420, 0x6619: 0x40219620, 0x661a: 0x40219820, 0x661b: 0x40219a20, - 0x661c: 0x40219c20, 0x661d: 0x40219e20, 0x661e: 0x4021a020, 0x661f: 0x4021a220, - 0x6620: 0x4021a420, 0x6621: 0x4021a620, 0x6622: 0x4021a820, 0x6623: 0x4021aa20, - 0x6624: 0x4021ac20, 0x6625: 0x4021ae20, 0x6626: 0x4021b020, 0x6627: 0x4021b220, - 0x6628: 0x4021b420, 0x6629: 0x4021b620, 0x662a: 0x4021b820, 0x662b: 0x4021ba20, - 0x662c: 0x4021bc20, 0x662d: 0x4021be20, 0x662e: 0x4021c020, 0x662f: 0x4021c220, - 0x6630: 0x4021c420, 0x6631: 0x4021c620, 0x6632: 0x4021c820, 0x6633: 0x4021ca20, - 0x6634: 0x4021cc20, 0x6635: 0x4021ce20, 0x6636: 0x4021d020, 0x6637: 0x4021d220, - 0x6638: 0x4021d420, 0x6639: 0x4021d620, 0x663a: 0x4021d820, 0x663b: 0x4021da20, - 0x663c: 0x4021dc20, - // Block 0x199, offset 0x6640 - 0x6640: 0x4021de20, 0x6641: 0x4021e020, 0x6642: 0x4021e220, 0x6643: 0x4021e420, - 0x6644: 0x4021e620, 0x6645: 0x4021e820, 0x6646: 0x4021ea20, 0x6647: 0x4021ec20, - 0x6648: 0x4021ee20, 0x6649: 0x4021f020, 0x664a: 0x4021f220, 0x664b: 0x4021f420, - 0x664c: 0x4021f620, 0x664d: 0x4021f820, 0x664e: 0x4021fa20, 0x664f: 0x4021fc20, - 0x6650: 0x4021fe20, 0x6651: 0x40220020, 0x6652: 0x40220220, 0x6653: 0x40220420, - 0x6660: 0x40220620, 0x6661: 0x40220820, 0x6662: 0x40220a20, 0x6663: 0x40220c20, - 0x6664: 0x40220e20, 0x6665: 0x40221020, 0x6666: 0x40221220, 0x6667: 0x40221420, - 0x6668: 0x40221620, 0x6669: 0x40221820, 0x666a: 0x40221a20, 0x666b: 0x40221c20, - 0x666c: 0x40221e20, 0x666d: 0x40222020, 0x666e: 0x40222220, 0x666f: 0x40222420, - 0x6670: 0x40222620, 0x6671: 0x40222820, 0x6672: 0x40222a20, 0x6673: 0x40222c20, - 0x6674: 0x40222e20, 0x6675: 0x40223020, 0x6676: 0x40223220, 0x6677: 0x40223420, - 0x6678: 0x40223620, 0x6679: 0x40223820, 0x667a: 0x40223a20, 0x667b: 0x40223c20, - 0x667c: 0x40223e20, 0x667d: 0x40224020, 0x667e: 0x40224220, 0x667f: 0x40224420, - // Block 0x19a, offset 0x6680 - 0x6680: 0x40224620, 0x6681: 0x40224820, 0x6682: 0x40224a20, 0x6683: 0x40224c20, - 0x6684: 0x40224e20, 0x6686: 0x40225020, 0x6687: 0x40225220, - 0x6688: 0x40225420, 0x6689: 0x40225620, 0x668a: 0x40225820, - 0x66a0: 0x40225a20, 0x66a1: 0x40225c20, 0x66a2: 0x40225e20, 0x66a3: 0x40226020, - 0x66a4: 0x40226220, 0x66a5: 0x40226420, 0x66a6: 0x40226620, 0x66a7: 0x40226820, - 0x66a8: 0x40226a20, 0x66a9: 0x40226c20, 0x66aa: 0x40226e20, 0x66ab: 0x40227020, - 0x66ac: 0x40227220, 0x66ad: 0x40227420, 0x66ae: 0x40227620, 0x66af: 0x40227820, - 0x66b0: 0x40227a20, - // Block 0x19b, offset 0x66c0 - 0x66c0: 0x40227c20, 0x66c1: 0x40227e20, 0x66c2: 0x40228020, 0x66c3: 0x40228220, - 0x66c4: 0x40228420, 0x66c5: 0x40228620, 0x66c6: 0x40228820, 0x66c7: 0x40228a20, - 0x66c8: 0x40228c20, 0x66c9: 0x40228e20, 0x66ca: 0x40229020, 0x66cb: 0x40229220, - 0x66cc: 0x40229420, 0x66cd: 0x40229620, 0x66ce: 0x40229820, 0x66cf: 0x40229a20, - 0x66d0: 0x40229c20, 0x66d1: 0x40229e20, 0x66d2: 0x4022a020, 0x66d3: 0x4022a220, - 0x66d4: 0x4022a420, 0x66d5: 0x4022a620, 0x66d6: 0x4022a820, 0x66d7: 0x4022aa20, - 0x66d8: 0x4022ac20, 0x66d9: 0x4022ae20, 0x66da: 0x4022b020, 0x66db: 0x4022b220, - 0x66dc: 0x4022b420, 0x66dd: 0x4022b620, 0x66de: 0x4022b820, 0x66df: 0x4022ba20, - 0x66e0: 0x4022bc20, 0x66e1: 0x4022be20, 0x66e2: 0x4022c020, 0x66e3: 0x4022c220, - 0x66e4: 0x4022c420, 0x66e5: 0x4022c620, 0x66e6: 0x4022c820, 0x66e7: 0x4022ca20, - 0x66e8: 0x4022cc20, 0x66e9: 0x4022ce20, 0x66ea: 0x4022d020, 0x66eb: 0x4022d220, - 0x66ec: 0x4022d420, 0x66ed: 0x4022d620, 0x66ee: 0x4022d820, 0x66ef: 0x4022da20, - 0x66f0: 0x4022dc20, 0x66f1: 0x4022de20, 0x66f2: 0x4022e020, 0x66f3: 0x4022e220, - 0x66f4: 0x4022e420, 0x66f5: 0x4022e620, 0x66f6: 0x4022e820, 0x66f7: 0x4022ea20, - 0x66f8: 0x4022ec20, 0x66f9: 0x4022ee20, 0x66fa: 0x4022f020, 0x66fb: 0x4022f220, - 0x66fc: 0x4022f420, 0x66fd: 0x4022f620, 0x66fe: 0x4022f820, - // Block 0x19c, offset 0x6700 - 0x6700: 0x4022fa20, 0x6702: 0x4022fc20, 0x6703: 0x4022fe20, - 0x6704: 0x40230020, 0x6705: 0x40230220, 0x6706: 0x40230420, 0x6707: 0x40230620, - 0x6708: 0x40230820, 0x6709: 0x40230a20, 0x670a: 0x40230c20, 0x670b: 0x40230e20, - 0x670c: 0x40231020, 0x670d: 0x40231220, 0x670e: 0x40231420, 0x670f: 0x40231620, - 0x6710: 0x40231820, 0x6711: 0x40231a20, 0x6712: 0x40231c20, 0x6713: 0x40231e20, - 0x6714: 0x40232020, 0x6715: 0x40232220, 0x6716: 0x40232420, 0x6717: 0x40232620, - 0x6718: 0x40232820, 0x6719: 0x40232a20, 0x671a: 0x40232c20, 0x671b: 0x40232e20, - 0x671c: 0x40233020, 0x671d: 0x40233220, 0x671e: 0x40233420, 0x671f: 0x40233620, - 0x6720: 0x40233820, 0x6721: 0x40233a20, 0x6722: 0x40233c20, 0x6723: 0x40233e20, - 0x6724: 0x40234020, 0x6725: 0x40234220, 0x6726: 0x40234420, 0x6727: 0x40234620, - 0x6728: 0x40234820, 0x6729: 0x40234a20, 0x672a: 0x40234c20, 0x672b: 0x40234e20, - 0x672c: 0x40235020, 0x672d: 0x40235220, 0x672e: 0x40235420, 0x672f: 0x40235620, - 0x6730: 0x40235820, 0x6731: 0x40235a20, 0x6732: 0x40235c20, 0x6733: 0x40235e20, - 0x6734: 0x40236020, 0x6735: 0x40236220, 0x6736: 0x40236420, 0x6737: 0x40236620, - 0x6738: 0x40236820, 0x6739: 0x40236a20, 0x673a: 0x40236c20, 0x673b: 0x40236e20, - 0x673c: 0x40237020, 0x673d: 0x40237220, 0x673e: 0x40237420, 0x673f: 0x40237620, - // Block 0x19d, offset 0x6740 - 0x6740: 0x40237820, 0x6741: 0x40237a20, 0x6742: 0x40237c20, 0x6743: 0x40237e20, - 0x6744: 0x40238020, 0x6745: 0x40238220, 0x6746: 0x40238420, 0x6747: 0x40238620, - 0x6748: 0x40238820, 0x6749: 0x40238a20, 0x674a: 0x40238c20, 0x674b: 0x40238e20, - 0x674c: 0x40239020, 0x674d: 0x40239220, 0x674e: 0x40239420, 0x674f: 0x40239620, - 0x6750: 0x40239820, 0x6751: 0x40239a20, 0x6752: 0x40239c20, 0x6753: 0x40239e20, - 0x6754: 0x4023a020, 0x6755: 0x4023a220, 0x6756: 0x4023a420, 0x6757: 0x4023a620, - 0x6758: 0x4023a820, 0x6759: 0x4023aa20, 0x675a: 0x4023ac20, 0x675b: 0x4023ae20, - 0x675c: 0x4023b020, 0x675d: 0x4023b220, 0x675e: 0x4023b420, 0x675f: 0x4023b620, - 0x6760: 0x4023b820, 0x6761: 0x4023ba20, 0x6762: 0x4023bc20, 0x6763: 0x4023be20, - 0x6764: 0x4023c020, 0x6765: 0x4023c220, 0x6766: 0x4023c420, 0x6767: 0x4023c620, - 0x6768: 0x4023c820, 0x6769: 0x4023ca20, 0x676a: 0x4023cc20, 0x676b: 0x4023ce20, - 0x676c: 0x4023d020, 0x676d: 0x4023d220, 0x676e: 0x4023d420, 0x676f: 0x4023d620, - 0x6770: 0x4023d820, 0x6771: 0x4023da20, 0x6772: 0x4023dc20, 0x6773: 0x4023de20, - 0x6774: 0x4023e020, 0x6775: 0x4023e220, 0x6776: 0x4023e420, 0x6777: 0x4023e620, - 0x6778: 0x4023e820, 0x6779: 0x4023ea20, 0x677a: 0x4023ec20, 0x677b: 0x4023ee20, - 0x677c: 0x4023f020, 0x677d: 0x4023f220, 0x677e: 0x4023f420, 0x677f: 0x4023f620, - // Block 0x19e, offset 0x6780 - 0x6780: 0x4023f820, 0x6781: 0x4023fa20, 0x6782: 0x4023fc20, 0x6783: 0x4023fe20, - 0x6784: 0x40240020, 0x6785: 0x40240220, 0x6786: 0x40240420, 0x6787: 0x40240620, - 0x6788: 0x40240820, 0x6789: 0x40240a20, 0x678a: 0x40240c20, 0x678b: 0x40240e20, - 0x678c: 0x40241020, 0x678d: 0x40241220, 0x678e: 0x40241420, 0x678f: 0x40241620, - 0x6790: 0x40241820, 0x6791: 0x40241a20, 0x6792: 0x40241c20, 0x6793: 0x40241e20, - 0x6794: 0x40242020, 0x6795: 0x40242220, 0x6796: 0x40242420, 0x6797: 0x40242620, - 0x6798: 0x40242820, 0x6799: 0x40242a20, 0x679a: 0x40242c20, 0x679b: 0x40242e20, - 0x679c: 0x40243020, 0x679d: 0x40243220, 0x679e: 0x40243420, 0x679f: 0x40243620, - 0x67a0: 0x40243820, 0x67a1: 0x40243a20, 0x67a2: 0x40243c20, 0x67a3: 0x40243e20, - 0x67a4: 0x40244020, 0x67a5: 0x40244220, 0x67a6: 0x40244420, 0x67a7: 0x40244620, - 0x67a8: 0x40244820, 0x67a9: 0x40244a20, 0x67aa: 0x40244c20, 0x67ab: 0x40244e20, - 0x67ac: 0x40245020, 0x67ad: 0x40245220, 0x67ae: 0x40245420, 0x67af: 0x40245620, - 0x67b0: 0x40245820, 0x67b1: 0x40245a20, 0x67b2: 0x40245c20, 0x67b3: 0x40245e20, - 0x67b4: 0x40246020, 0x67b5: 0x40246220, 0x67b6: 0x40246420, 0x67b7: 0x40246620, - 0x67b9: 0x40246820, 0x67ba: 0x40246a20, 0x67bb: 0x40246c20, - 0x67bc: 0x40246e20, - // Block 0x19f, offset 0x67c0 - 0x67c0: 0x40247020, 0x67c1: 0x40247220, 0x67c2: 0x40247420, 0x67c3: 0x40247620, - 0x67c4: 0x40247820, 0x67c5: 0x40247a20, 0x67c6: 0x40247c20, 0x67c7: 0x40247e20, - 0x67c8: 0x40248020, 0x67c9: 0x40248220, 0x67ca: 0x40248420, 0x67cb: 0x40248620, - 0x67cc: 0x40248820, 0x67cd: 0x40248a20, 0x67ce: 0x40248c20, 0x67cf: 0x40248e20, - 0x67d0: 0x40249020, 0x67d1: 0x40249220, 0x67d2: 0x40249420, 0x67d3: 0x40249620, - 0x67d4: 0x40249820, 0x67d5: 0x40249a20, 0x67d6: 0x40249c20, 0x67d7: 0x40249e20, - 0x67d8: 0x4024a020, 0x67d9: 0x4024a220, 0x67da: 0x4024a420, 0x67db: 0x4024a620, - 0x67dc: 0x4024a820, 0x67dd: 0x4024aa20, 0x67de: 0x4024ac20, 0x67df: 0x4024ae20, - 0x67e0: 0x4024b020, 0x67e1: 0x4024b220, 0x67e2: 0x4024b420, 0x67e3: 0x4024b620, - 0x67e4: 0x4024b820, 0x67e5: 0x4024ba20, 0x67e6: 0x4024bc20, 0x67e7: 0x4024be20, - 0x67e8: 0x4024c020, 0x67e9: 0x4024c220, 0x67ea: 0x4024c420, 0x67eb: 0x4024c620, - 0x67ec: 0x4024c820, 0x67ed: 0x4024ca20, 0x67ee: 0x4024cc20, 0x67ef: 0x4024ce20, - 0x67f0: 0x4024d020, 0x67f1: 0x4024d220, 0x67f2: 0x4024d420, 0x67f3: 0x4024d620, - 0x67f4: 0x4024d820, 0x67f5: 0x4024da20, 0x67f6: 0x4024dc20, 0x67f7: 0x4024de20, - 0x67f8: 0x4024e020, 0x67f9: 0x4024e220, 0x67fa: 0x4024e420, 0x67fb: 0x4024e620, - 0x67fc: 0x4024e820, 0x67fd: 0x4024ea20, - // Block 0x1a0, offset 0x6800 - 0x6800: 0x4024ec20, 0x6801: 0x4024ee20, 0x6802: 0x4024f020, 0x6803: 0x4024f220, - 0x6810: 0x4024f420, 0x6811: 0x4024f620, 0x6812: 0x4024f820, 0x6813: 0x4024fa20, - 0x6814: 0x4024fc20, 0x6815: 0x4024fe20, 0x6816: 0x40250020, 0x6817: 0x40250220, - 0x6818: 0x40250420, 0x6819: 0x40250620, 0x681a: 0x40250820, 0x681b: 0x40250a20, - 0x681c: 0x40250c20, 0x681d: 0x40250e20, 0x681e: 0x40251020, 0x681f: 0x40251220, - 0x6820: 0x40251420, 0x6821: 0x40251620, 0x6822: 0x40251820, 0x6823: 0x40251a20, - 0x6824: 0x40251c20, 0x6825: 0x40251e20, 0x6826: 0x40252020, 0x6827: 0x40252220, - // Block 0x1a1, offset 0x6840 - 0x687b: 0x40252420, - 0x687c: 0x40252620, 0x687d: 0x40252820, 0x687e: 0x40252a20, 0x687f: 0x40252c20, - // Block 0x1a2, offset 0x6880 - 0x6880: 0x40252e20, 0x6881: 0x40253020, 0x6882: 0x40253220, 0x6883: 0x40253420, - 0x6884: 0x40253620, 0x6885: 0x40253820, 0x6886: 0x40253a20, 0x6887: 0x40253c20, - 0x6888: 0x40253e20, 0x6889: 0x40254020, 0x688a: 0x40254220, 0x688b: 0x40254420, - 0x688c: 0x40254620, 0x688d: 0x40254820, 0x688e: 0x40254a20, 0x688f: 0x40254c20, - 0x6890: 0x40254e20, 0x6891: 0x40255020, 0x6892: 0x40255220, 0x6893: 0x40255420, - 0x6894: 0x40255620, 0x6895: 0x40255820, 0x6896: 0x40255a20, 0x6897: 0x40255c20, - 0x6898: 0x40255e20, 0x6899: 0x40256020, 0x689a: 0x40256220, 0x689b: 0x40256420, - 0x689c: 0x40256620, 0x689d: 0x40256820, 0x689e: 0x40256a20, 0x689f: 0x40256c20, - 0x68a0: 0x40256e20, 0x68a1: 0x40257020, 0x68a2: 0x40257220, 0x68a3: 0x40257420, - 0x68a4: 0x40257620, 0x68a5: 0x40257820, 0x68a6: 0x40257a20, 0x68a7: 0x40257c20, - 0x68a8: 0x40257e20, 0x68a9: 0x40258020, 0x68aa: 0x40258220, 0x68ab: 0x40258420, - 0x68ac: 0x40258620, 0x68ad: 0x40258820, 0x68ae: 0x40258a20, 0x68af: 0x40258c20, - 0x68b0: 0x40258e20, 0x68b1: 0x40259020, 0x68b2: 0x40259220, 0x68b3: 0x40259420, - 0x68b4: 0x40259620, 0x68b5: 0x40259820, 0x68b6: 0x40259a20, 0x68b7: 0x40259c20, - 0x68b8: 0x40259e20, 0x68b9: 0x4025a020, 0x68ba: 0x4025a220, 0x68bb: 0x4025a420, - 0x68bc: 0x4025a620, 0x68bd: 0x4025a820, 0x68be: 0x4025aa20, 0x68bf: 0x4025ac20, - // Block 0x1a3, offset 0x68c0 - 0x68c0: 0x4025ae20, - 0x68c5: 0x4025b020, 0x68c6: 0x4025b220, 0x68c7: 0x4025b420, - 0x68c8: 0x4025b620, 0x68c9: 0x4025b820, 0x68ca: 0x4025ba20, 0x68cb: 0x4025bc20, - 0x68cc: 0x4025be20, 0x68cd: 0x4025c020, 0x68ce: 0x4025c220, 0x68cf: 0x4025c420, - // Block 0x1a4, offset 0x6900 - 0x6900: 0x4025c620, 0x6901: 0x4025c820, 0x6902: 0x4025ca20, 0x6903: 0x4025cc20, - 0x6904: 0x4025ce20, 0x6905: 0x4025d020, 0x6906: 0x4025d220, 0x6907: 0x4025d420, - 0x6908: 0x4025d620, 0x6909: 0x4025d820, 0x690a: 0x4025da20, 0x690b: 0x4025dc20, - 0x690c: 0x4025de20, 0x690d: 0x4025e020, 0x690e: 0x4025e220, 0x690f: 0x4025e420, - 0x6910: 0x4025e620, 0x6911: 0x4025e820, 0x6912: 0x4025ea20, 0x6913: 0x4025ec20, - 0x6914: 0x4025ee20, 0x6915: 0x4025f020, 0x6916: 0x4025f220, 0x6917: 0x4025f420, - 0x6918: 0x4025f620, 0x6919: 0x4025f820, 0x691a: 0x4025fa20, 0x691b: 0x4025fc20, - 0x691c: 0x4025fe20, 0x691d: 0x40260020, 0x691e: 0x40260220, 0x691f: 0x40260420, - 0x6920: 0x40260620, 0x6921: 0x40260820, 0x6922: 0x40260a20, 0x6923: 0x40260c20, - 0x6924: 0x40260e20, 0x6925: 0x40261020, 0x6926: 0x40261220, 0x6927: 0x40261420, - 0x6928: 0x40261620, 0x6929: 0x40261820, 0x692a: 0x40261a20, 0x692b: 0x40261c20, - 0x692c: 0x40261e20, 0x692d: 0x40262020, 0x692e: 0x40262220, 0x692f: 0x40262420, - 0x6930: 0x40262620, 0x6931: 0x40262820, 0x6932: 0x40262a20, 0x6933: 0x40262c20, - 0x6934: 0x40262e20, 0x6935: 0x40263020, 0x6936: 0x40263220, 0x6937: 0x40263420, - 0x6938: 0x40263620, 0x6939: 0x40263820, 0x693a: 0x40263a20, 0x693b: 0x40263c20, - 0x693c: 0x40263e20, 0x693d: 0x40264020, 0x693e: 0x40264220, 0x693f: 0x40264420, - // Block 0x1a5, offset 0x6940 - 0x6940: 0x40264620, 0x6941: 0x40264820, 0x6942: 0x40264a20, 0x6943: 0x40264c20, - 0x6944: 0x40264e20, 0x6945: 0x40265020, - // Block 0x1a6, offset 0x6980 - 0x6980: 0x40265220, 0x6981: 0x40265420, 0x6982: 0x40265620, 0x6983: 0x40265820, - 0x6984: 0x40265a20, 0x6985: 0x40265c20, 0x6986: 0x40265e20, 0x6987: 0x40266020, - 0x6988: 0x40266220, 0x6989: 0x40266420, 0x698a: 0x40266620, 0x698b: 0x40266820, - 0x698c: 0x40266a20, 0x698d: 0x40266c20, 0x698e: 0x40266e20, 0x698f: 0x40267020, - 0x6990: 0x40267220, 0x6991: 0x40267420, 0x6992: 0x40267620, 0x6993: 0x40267820, - 0x6994: 0x40267a20, 0x6995: 0x40267c20, 0x6996: 0x40267e20, 0x6997: 0x40268020, - 0x6998: 0x40268220, 0x6999: 0x40268420, 0x699a: 0x40268620, 0x699b: 0x40268820, - 0x699c: 0x40268a20, 0x699d: 0x40268c20, 0x699e: 0x40268e20, 0x699f: 0x40269020, - 0x69a0: 0x40269220, 0x69a1: 0x40269420, 0x69a2: 0x40269620, 0x69a3: 0x40269820, - 0x69a4: 0x40269a20, 0x69a5: 0x40269c20, 0x69a6: 0x40269e20, 0x69a7: 0x4026a020, - 0x69a8: 0x4026a220, 0x69a9: 0x4026a420, 0x69aa: 0x4026a620, 0x69ab: 0x4026a820, - 0x69ac: 0x4026aa20, 0x69ad: 0x4026ac20, 0x69ae: 0x4026ae20, 0x69af: 0x4026b020, - 0x69b0: 0x4026b220, 0x69b1: 0x4026b420, 0x69b2: 0x4026b620, 0x69b3: 0x4026b820, - 0x69b4: 0x4026ba20, 0x69b5: 0x4026bc20, 0x69b6: 0x4026be20, 0x69b7: 0x4026c020, - 0x69b8: 0x4026c220, 0x69b9: 0x4026c420, 0x69ba: 0x4026c620, 0x69bb: 0x4026c820, - 0x69bc: 0x4026ca20, 0x69bd: 0x4026cc20, 0x69be: 0x4026ce20, 0x69bf: 0x4026d020, - // Block 0x1a7, offset 0x69c0 - 0x69c0: 0x4026d220, 0x69c1: 0x4026d420, 0x69c2: 0x4026d620, 0x69c3: 0x4026d820, - 0x69c4: 0x4026da20, 0x69c5: 0x4026dc20, 0x69c6: 0x4026de20, 0x69c7: 0x4026e020, - 0x69c8: 0x4026e220, 0x69c9: 0x4026e420, 0x69ca: 0x4026e620, 0x69cb: 0x4026e820, - 0x69cc: 0x4026ea20, 0x69cd: 0x4026ec20, 0x69ce: 0x4026ee20, 0x69cf: 0x4026f020, - 0x69d0: 0x4026f220, 0x69d1: 0x4026f420, 0x69d2: 0x4026f620, 0x69d3: 0x4026f820, - 0x69d4: 0x4026fa20, 0x69d5: 0x4026fc20, 0x69d6: 0x4026fe20, 0x69d7: 0x40270020, - 0x69d8: 0x40270220, 0x69d9: 0x40270420, 0x69da: 0x40270620, 0x69db: 0x40270820, - 0x69dc: 0x40270a20, 0x69dd: 0x40270c20, 0x69de: 0x40270e20, 0x69df: 0x40271020, - 0x69e0: 0x40271220, 0x69e1: 0x40271420, 0x69e2: 0x40271620, 0x69e3: 0x40271820, - 0x69e4: 0x40271a20, 0x69e5: 0x40271c20, 0x69e6: 0x40271e20, 0x69e7: 0x40272020, - 0x69e8: 0x40272220, 0x69e9: 0x40272420, 0x69ea: 0x40272620, 0x69eb: 0x40272820, - 0x69ec: 0x40272a20, 0x69ed: 0x40272c20, 0x69ee: 0x40272e20, 0x69ef: 0x40273020, - 0x69f0: 0x40273220, 0x69f1: 0x40273420, 0x69f2: 0x40273620, 0x69f3: 0x40273820, - // Block 0x1a8, offset 0x6a00 - 0x6a00: 0x429c7a20, 0x6a01: 0x429c7020, 0x6a02: 0x429c8220, 0x6a03: 0x48024420, - 0x6a04: 0x429ec020, 0x6a05: 0x429f5c20, 0x6a06: 0x429f7620, 0x6a07: 0x42a00420, - 0x6a08: 0x42a0f420, 0x6a09: 0x42a13220, 0x6a0a: 0x42a1ce20, 0x6a0b: 0x42a19e20, - 0x6a0c: 0x44693c20, 0x6a0d: 0x480c7420, 0x6a0e: 0x42a29a20, 0x6a0f: 0x42a2a820, - 0x6a10: 0x42a2c820, 0x6a11: 0x42a2ee20, 0x6a12: 0x480a3820, 0x6a13: 0x44697220, - 0x6a14: 0x42a2ce20, 0x6a15: 0x42a31a20, 0x6a16: 0x480a9620, 0x6a17: 0x42a32e20, - 0x6a18: 0x42a34820, 0x6a19: 0x429d9820, 0x6a1a: 0x42a35820, 0x6a1b: 0x42a36a20, - 0x6a1c: 0x4923be20, 0x6a1d: 0x42a3ea20, 0x6a1e: 0x42a40620, 0x6a1f: 0x4469be20, - 0x6a20: 0x42a47620, 0x6a21: 0x42a48c20, 0x6a22: 0x42a4e420, 0x6a23: 0x42a4ee20, - 0x6a24: 0x446a2a20, 0x6a25: 0x42a58e20, 0x6a26: 0x42a59220, 0x6a27: 0x42a5c820, - 0x6a28: 0x42a5f420, 0x6a29: 0x42a60a20, 0x6a2a: 0x42a60c20, 0x6a2b: 0x42a62e20, - 0x6a2c: 0x42a69220, 0x6a2d: 0x42a6a220, 0x6a2e: 0x42a6b420, 0x6a2f: 0x42a6e620, - 0x6a30: 0x42a6fa20, 0x6a31: 0x42a6fe20, 0x6a32: 0x42a6fe20, 0x6a33: 0x42a6fe20, - 0x6a34: 0x48145820, 0x6a35: 0x42e0e020, 0x6a36: 0x42a79420, 0x6a37: 0x42a7be20, - 0x6a38: 0x4816c620, 0x6a39: 0x42a7d620, 0x6a3a: 0x42a7e220, 0x6a3b: 0x42a80c20, - 0x6a3c: 0x42a93c20, 0x6a3d: 0x42a87020, 0x6a3e: 0x42a89020, 0x6a3f: 0x42a8d020, - // Block 0x1a9, offset 0x6a40 - 0x6a40: 0x42a94420, 0x6a41: 0x42a9ec20, 0x6a42: 0x42aa2020, 0x6a43: 0x42aaa620, - 0x6a44: 0x42aac620, 0x6a45: 0x42ab0820, 0x6a46: 0x42ab0820, 0x6a47: 0x42ab3220, - 0x6a48: 0x42ab5620, 0x6a49: 0x42ab6620, 0x6a4a: 0x42ab8420, 0x6a4b: 0x42ae2c20, - 0x6a4c: 0x42ac0c20, 0x6a4d: 0x42ae2e20, 0x6a4e: 0x42aca220, 0x6a4f: 0x42ace820, - 0x6a50: 0x42a40e20, 0x6a51: 0x42b1dc20, 0x6a52: 0x42af9c20, 0x6a53: 0x42afe820, - 0x6a54: 0x42b01a20, 0x6a55: 0x42af1620, 0x6a56: 0x42b06420, 0x6a57: 0x42b06220, - 0x6a58: 0x42b15820, 0x6a59: 0x4829c820, 0x6a5a: 0x42b1e420, 0x6a5b: 0x42b1ee20, - 0x6a5c: 0x42b20c20, 0x6a5d: 0x42b23420, 0x6a5e: 0x42b24420, 0x6a5f: 0x42b2c420, - 0x6a60: 0x482d5020, 0x6a61: 0x482dd420, 0x6a62: 0x42b3d820, 0x6a63: 0x42b43620, - 0x6a64: 0x42b44e20, 0x6a65: 0x42b3b020, 0x6a66: 0x42b4cc20, 0x6a67: 0x446ddc20, - 0x6a68: 0x446df820, 0x6a69: 0x42b61020, 0x6a6a: 0x42b67c20, 0x6a6b: 0x42b67c20, - 0x6a6c: 0x48339020, 0x6a6d: 0x42b78620, 0x6a6e: 0x42b7b020, 0x6a6f: 0x42b7ce20, - 0x6a70: 0x42b7e620, 0x6a71: 0x48363020, 0x6a72: 0x42b7fe20, 0x6a73: 0x42b80c20, - 0x6a74: 0x42bea620, 0x6a75: 0x42b84420, 0x6a76: 0x446f0220, 0x6a77: 0x42b8c020, - 0x6a78: 0x42b8dc20, 0x6a79: 0x42b98020, 0x6a7a: 0x42b91a20, 0x6a7b: 0x483bc820, - 0x6a7c: 0x42ba8620, 0x6a7d: 0x483bcc20, 0x6a7e: 0x42badc20, 0x6a7f: 0x42bad620, - // Block 0x1aa, offset 0x6a80 - 0x6a80: 0x42baf820, 0x6a81: 0x42bbc220, 0x6a82: 0x42bbc420, 0x6a83: 0x44705e20, - 0x6a84: 0x42bbfa20, 0x6a85: 0x42bc5020, 0x6a86: 0x42bc7a20, 0x6a87: 0x42bcd220, - 0x6a88: 0x4470c420, 0x6a89: 0x48430620, 0x6a8a: 0x4470f820, 0x6a8b: 0x42bd6020, - 0x6a8c: 0x42bd6620, 0x6a8d: 0x42bd6c20, 0x6a8e: 0x42bd9420, 0x6a8f: 0x49472420, - 0x6a90: 0x42bdfc20, 0x6a91: 0x48466220, 0x6a92: 0x48466220, 0x6a93: 0x43040220, - 0x6a94: 0x42be4420, 0x6a95: 0x42be4420, 0x6a96: 0x44718e20, 0x6a97: 0x48657020, - 0x6a98: 0x48c3b420, 0x6a99: 0x42bec420, 0x6a9a: 0x42bed620, 0x6a9b: 0x4471c620, - 0x6a9c: 0x42bf3420, 0x6a9d: 0x42bf9a20, 0x6a9e: 0x42bfae20, 0x6a9f: 0x42bff220, - 0x6aa0: 0x42c10220, 0x6aa1: 0x44727420, 0x6aa2: 0x44723820, 0x6aa3: 0x42c12820, - 0x6aa4: 0x484da820, 0x6aa5: 0x42c18e20, 0x6aa6: 0x42c29020, 0x6aa7: 0x42c29820, - 0x6aa8: 0x42c29c20, 0x6aa9: 0x42c29820, 0x6aaa: 0x42c2f420, 0x6aab: 0x42c31c20, - 0x6aac: 0x42c36420, 0x6aad: 0x42c34820, 0x6aae: 0x42c35e20, 0x6aaf: 0x42c3bc20, - 0x6ab0: 0x42c3e420, 0x6ab1: 0x42c3ec20, 0x6ab2: 0x42c42020, 0x6ab3: 0x42c43620, - 0x6ab4: 0x42c4ba20, 0x6ab5: 0x42c56220, 0x6ab6: 0x42c5a820, 0x6ab7: 0x42c6a020, - 0x6ab8: 0x48561820, 0x6ab9: 0x42c67a20, 0x6aba: 0x42c5f820, 0x6abb: 0x42c6d020, - 0x6abc: 0x42c70620, 0x6abd: 0x42c7c820, 0x6abe: 0x4857e220, 0x6abf: 0x42c84420, - // Block 0x1ab, offset 0x6ac0 - 0x6ac0: 0x42c78a20, 0x6ac1: 0x42c75220, 0x6ac2: 0x44745c20, 0x6ac3: 0x42c8d220, - 0x6ac4: 0x42c8fc20, 0x6ac5: 0x42c93a20, 0x6ac6: 0x42c8ee20, 0x6ac7: 0x4474d820, - 0x6ac8: 0x42ca9e20, 0x6ac9: 0x42cad820, 0x6aca: 0x48601420, 0x6acb: 0x42cbc620, - 0x6acc: 0x42cdf020, 0x6acd: 0x42cc9220, 0x6ace: 0x44763220, 0x6acf: 0x42cd2220, - 0x6ad0: 0x44761020, 0x6ad1: 0x4475c820, 0x6ad2: 0x42a32420, 0x6ad3: 0x42a32a20, - 0x6ad4: 0x42ce0020, 0x6ad5: 0x42cd3820, 0x6ad6: 0x43015a20, 0x6ad7: 0x4487b220, - 0x6ad8: 0x42ce2e20, 0x6ad9: 0x42ce3620, 0x6ada: 0x42ce4220, 0x6adb: 0x42cebc20, - 0x6adc: 0x42cea620, 0x6add: 0x48678620, 0x6ade: 0x44769220, 0x6adf: 0x42cff420, - 0x6ae0: 0x42cf0a20, 0x6ae1: 0x42d0a420, 0x6ae2: 0x42d10a20, 0x6ae3: 0x4868da20, - 0x6ae4: 0x42d11c20, 0x6ae5: 0x42d03e20, 0x6ae6: 0x42d22820, 0x6ae7: 0x44773a20, - 0x6ae8: 0x42d28420, 0x6ae9: 0x42d34620, 0x6aea: 0x42d3d420, 0x6aeb: 0x42d55020, - 0x6aec: 0x486d4620, 0x6aed: 0x42d5b620, 0x6aee: 0x44783020, 0x6aef: 0x42d64220, - 0x6af0: 0x48714e20, 0x6af1: 0x42d6a820, 0x6af2: 0x44789c20, 0x6af3: 0x42d6e420, - 0x6af4: 0x42d73e20, 0x6af5: 0x42d77420, 0x6af6: 0x42d77620, 0x6af7: 0x48751a20, - 0x6af8: 0x483a1620, 0x6af9: 0x4875f420, 0x6afa: 0x42d89c20, 0x6afb: 0x48797820, - 0x6afc: 0x42d97e20, 0x6afd: 0x42d99a20, 0x6afe: 0x42d8ce20, 0x6aff: 0x42da2c20, - // Block 0x1ac, offset 0x6b00 - 0x6b00: 0x42da7c20, 0x6b01: 0x42daee20, 0x6b02: 0x42da8220, 0x6b03: 0x42dad220, - 0x6b04: 0x42daf020, 0x6b05: 0x42db0a20, 0x6b06: 0x487a3c20, 0x6b07: 0x42da6820, - 0x6b08: 0x42dc5e20, 0x6b09: 0x42dcdc20, 0x6b0a: 0x447a6620, 0x6b0b: 0x42dd9620, - 0x6b0c: 0x42dd8e20, 0x6b0d: 0x487da220, 0x6b0e: 0x42dbf220, 0x6b0f: 0x42dedc20, - 0x6b10: 0x487ebc20, 0x6b11: 0x487f1c20, 0x6b12: 0x42df8c20, 0x6b13: 0x42e07220, - 0x6b14: 0x42e03c20, 0x6b15: 0x42e03620, 0x6b16: 0x447b2c20, 0x6b17: 0x42e09420, - 0x6b18: 0x42e0fa20, 0x6b19: 0x42e0ee20, 0x6b1a: 0x42e15a20, 0x6b1b: 0x480a4a20, - 0x6b1c: 0x42e28a20, 0x6b1d: 0x4884c620, 0x6b1e: 0x42e33820, 0x6b1f: 0x48875620, - 0x6b20: 0x42e45020, 0x6b21: 0x42e46a20, 0x6b22: 0x42e4a020, 0x6b23: 0x488c1020, - 0x6b24: 0x42e50020, 0x6b25: 0x42e52a20, 0x6b26: 0x488e6a20, 0x6b27: 0x48902820, - 0x6b28: 0x42e6f420, 0x6b29: 0x42e71620, 0x6b2a: 0x447d5820, 0x6b2b: 0x42e74a20, - 0x6b2c: 0x447d7020, 0x6b2d: 0x447d7020, 0x6b2e: 0x42e88e20, 0x6b2f: 0x42e8b820, - 0x6b30: 0x42e8e220, 0x6b31: 0x42e90a20, 0x6b32: 0x42e99420, 0x6b33: 0x447e3620, - 0x6b34: 0x42ea4820, 0x6b35: 0x48986c20, 0x6b36: 0x42ea7c20, 0x6b37: 0x48992420, - 0x6b38: 0x42eae020, 0x6b39: 0x48433e20, 0x6b3a: 0x42ec2020, 0x6b3b: 0x489f4220, - 0x6b3c: 0x489f7020, 0x6b3d: 0x48a08820, 0x6b3e: 0x447ff820, 0x6b3f: 0x44801020, - // Block 0x1ad, offset 0x6b40 - 0x6b40: 0x42ede820, 0x6b41: 0x48a1e620, 0x6b42: 0x48a1e420, 0x6b43: 0x48a23220, - 0x6b44: 0x48a26620, 0x6b45: 0x42ee3c20, 0x6b46: 0x42ee3e20, 0x6b47: 0x42ee3e20, - 0x6b48: 0x42ee9420, 0x6b49: 0x44807220, 0x6b4a: 0x42ef1620, 0x6b4b: 0x44808c20, - 0x6b4c: 0x44812c20, 0x6b4d: 0x48a83a20, 0x6b4e: 0x42f09c20, 0x6b4f: 0x42f11820, - 0x6b50: 0x42f19820, 0x6b51: 0x4481c620, 0x6b52: 0x48ac4c20, 0x6b53: 0x42f2ac20, - 0x6b54: 0x48ad3420, 0x6b55: 0x48ad8a20, 0x6b56: 0x42f31e20, 0x6b57: 0x42f3d620, - 0x6b58: 0x44825e20, 0x6b59: 0x42f48020, 0x6b5a: 0x42f49420, 0x6b5b: 0x42f49e20, - 0x6b5c: 0x48b2f820, 0x6b5d: 0x48b54e20, 0x6b5e: 0x48b54e20, 0x6b5f: 0x42f5dc20, - 0x6b60: 0x44840420, 0x6b61: 0x48b75620, 0x6b62: 0x42f78c20, 0x6b63: 0x42f79220, - 0x6b64: 0x44844e20, 0x6b65: 0x48b90020, 0x6b66: 0x42f9a420, 0x6b67: 0x44854020, - 0x6b68: 0x42f9d020, 0x6b69: 0x42f9c620, 0x6b6a: 0x42fa0020, 0x6b6b: 0x48bf0c20, - 0x6b6c: 0x42fac620, 0x6b6d: 0x44860220, 0x6b6e: 0x42fb8e20, 0x6b6f: 0x42fc0420, - 0x6b70: 0x42fc8a20, 0x6b71: 0x44866820, 0x6b72: 0x48c45020, 0x6b73: 0x48c48e20, - 0x6b74: 0x4486b220, 0x6b75: 0x48c5b220, 0x6b76: 0x42fef420, 0x6b77: 0x48c67c20, - 0x6b78: 0x42ff2a20, 0x6b79: 0x42fff420, 0x6b7a: 0x43000a20, 0x6b7b: 0x48c9b420, - 0x6b7c: 0x48ca4620, 0x6b7d: 0x4300c020, 0x6b7e: 0x48cb5020, 0x6b7f: 0x4300e020, - // Block 0x1ae, offset 0x6b80 - 0x6b80: 0x4866be20, 0x6b81: 0x4487aa20, 0x6b82: 0x43016420, 0x6b83: 0x43020620, - 0x6b84: 0x44881620, 0x6b85: 0x43027c20, 0x6b86: 0x42b56a20, 0x6b87: 0x48cf4e20, - 0x6b88: 0x48cf6a20, 0x6b89: 0x48672620, 0x6b8a: 0x48673820, 0x6b8b: 0x43040220, - 0x6b8c: 0x43040820, 0x6b8d: 0x431f3c20, 0x6b8e: 0x4488d620, 0x6b8f: 0x43052220, - 0x6b90: 0x43051620, 0x6b91: 0x43053a20, 0x6b92: 0x42a56620, 0x6b93: 0x43056220, - 0x6b94: 0x43056620, 0x6b95: 0x43057a20, 0x6b96: 0x4305cc20, 0x6b97: 0x48d67820, - 0x6b98: 0x4305ca20, 0x6b99: 0x43063a20, 0x6b9a: 0x4306c620, 0x6b9b: 0x43075a20, - 0x6b9c: 0x43064620, 0x6b9d: 0x43077a20, 0x6b9e: 0x4307ce20, 0x6b9f: 0x4308ae20, - 0x6ba0: 0x4306a620, 0x6ba1: 0x43079420, 0x6ba2: 0x43079820, 0x6ba3: 0x4307b820, - 0x6ba4: 0x48d86c20, 0x6ba5: 0x48dad620, 0x6ba6: 0x48d9aa20, 0x6ba7: 0x448a5620, - 0x6ba8: 0x4309e220, 0x6ba9: 0x4309e620, 0x6baa: 0x430a2c20, 0x6bab: 0x48e79420, - 0x6bac: 0x430ac820, 0x6bad: 0x48de5820, 0x6bae: 0x448aba20, 0x6baf: 0x448ac220, - 0x6bb0: 0x48df6220, 0x6bb1: 0x48e1a420, 0x6bb2: 0x448ad620, 0x6bb3: 0x430ca020, - 0x6bb4: 0x430cb820, 0x6bb5: 0x430cce20, 0x6bb6: 0x430cd220, 0x6bb7: 0x430d5220, - 0x6bb8: 0x430d1020, 0x6bb9: 0x430e1c20, 0x6bba: 0x430dc420, 0x6bbb: 0x430ef220, - 0x6bbc: 0x430e5020, 0x6bbd: 0x430ed620, 0x6bbe: 0x430f0c20, 0x6bbf: 0x448bae20, - // Block 0x1af, offset 0x6bc0 - 0x6bc0: 0x430fc220, 0x6bc1: 0x43100220, 0x6bc2: 0x448bf220, 0x6bc3: 0x4310c020, - 0x6bc4: 0x4310c620, 0x6bc5: 0x48ecce20, 0x6bc6: 0x4311ae20, 0x6bc7: 0x4311bc20, - 0x6bc8: 0x448c6a20, 0x6bc9: 0x4311f420, 0x6bca: 0x44697620, 0x6bcb: 0x48f15c20, - 0x6bcc: 0x48f2cc20, 0x6bcd: 0x448d7c20, 0x6bce: 0x448d8e20, 0x6bcf: 0x43154020, - 0x6bd0: 0x4315da20, 0x6bd1: 0x43171420, 0x6bd2: 0x4318aa20, 0x6bd3: 0x48f95020, - 0x6bd4: 0x43195620, 0x6bd5: 0x43198220, 0x6bd6: 0x431a3620, 0x6bd7: 0x431aee20, - 0x6bd8: 0x48fe5e20, 0x6bd9: 0x48100820, 0x6bda: 0x431b9620, 0x6bdb: 0x431b7820, - 0x6bdc: 0x431be020, 0x6bdd: 0x4811bc20, 0x6bde: 0x431da820, 0x6bdf: 0x431e7020, - 0x6be0: 0x490ba420, 0x6be1: 0x490bda20, 0x6be2: 0x43212820, 0x6be3: 0x4321e220, - 0x6be4: 0x43222220, 0x6be5: 0x490e5c20, 0x6be6: 0x43223620, 0x6be7: 0x43247020, - 0x6be8: 0x4325ae20, 0x6be9: 0x4325b020, 0x6bea: 0x4324f820, 0x6beb: 0x4327f220, - 0x6bec: 0x43282a20, 0x6bed: 0x4917f420, 0x6bee: 0x432b1620, 0x6bef: 0x44932a20, - 0x6bf0: 0x432b6e20, 0x6bf1: 0x491aee20, 0x6bf2: 0x4493cc20, 0x6bf3: 0x432d8620, - 0x6bf4: 0x42bb6420, 0x6bf5: 0x432e4620, 0x6bf6: 0x49228a20, 0x6bf7: 0x49243420, - 0x6bf8: 0x4494dc20, 0x6bf9: 0x4494ec20, 0x6bfa: 0x432fc020, 0x6bfb: 0x49281420, - 0x6bfc: 0x44956420, 0x6bfd: 0x49292c20, 0x6bfe: 0x43301620, 0x6bff: 0x43301620, - // Block 0x1b0, offset 0x6c00 - 0x6c00: 0x43305220, 0x6c01: 0x492b6c20, 0x6c02: 0x4331c420, 0x6c03: 0x44966620, - 0x6c04: 0x43325220, 0x6c05: 0x43334e20, 0x6c06: 0x43338420, 0x6c07: 0x4333fc20, - 0x6c08: 0x44979c20, 0x6c09: 0x49366020, 0x6c0a: 0x43362420, 0x6c0b: 0x43388020, - 0x6c0c: 0x4339fa20, 0x6c0d: 0x44999c20, 0x6c0e: 0x4499da20, 0x6c0f: 0x433ace20, - 0x6c10: 0x49419c20, 0x6c11: 0x4499f020, 0x6c12: 0x49420a20, 0x6c13: 0x49441c20, - 0x6c14: 0x49452220, 0x6c15: 0x433d7620, 0x6c16: 0x449aac20, 0x6c17: 0x433df220, - 0x6c18: 0x433dfc20, 0x6c19: 0x433e0a20, 0x6c1a: 0x433e1e20, 0x6c1b: 0x433e2c20, - 0x6c1c: 0x433e7620, 0x6c1d: 0x494c0020, - // Block 0x1b1, offset 0x6c40 - 0x6c41: 0xa0000000, - 0x6c60: 0xa0000000, 0x6c61: 0xa0000000, 0x6c62: 0xa0000000, 0x6c63: 0xa0000000, - 0x6c64: 0xa0000000, 0x6c65: 0xa0000000, 0x6c66: 0xa0000000, 0x6c67: 0xa0000000, - 0x6c68: 0xa0000000, 0x6c69: 0xa0000000, 0x6c6a: 0xa0000000, 0x6c6b: 0xa0000000, - 0x6c6c: 0xa0000000, 0x6c6d: 0xa0000000, 0x6c6e: 0xa0000000, 0x6c6f: 0xa0000000, - 0x6c70: 0xa0000000, 0x6c71: 0xa0000000, 0x6c72: 0xa0000000, 0x6c73: 0xa0000000, - 0x6c74: 0xa0000000, 0x6c75: 0xa0000000, 0x6c76: 0xa0000000, 0x6c77: 0xa0000000, - 0x6c78: 0xa0000000, 0x6c79: 0xa0000000, 0x6c7a: 0xa0000000, 0x6c7b: 0xa0000000, - 0x6c7c: 0xa0000000, 0x6c7d: 0xa0000000, 0x6c7e: 0xa0000000, 0x6c7f: 0xa0000000, - // Block 0x1b2, offset 0x6c80 - 0x6c80: 0xa0000000, 0x6c81: 0xa0000000, 0x6c82: 0xa0000000, 0x6c83: 0xa0000000, - 0x6c84: 0xa0000000, 0x6c85: 0xa0000000, 0x6c86: 0xa0000000, 0x6c87: 0xa0000000, - 0x6c88: 0xa0000000, 0x6c89: 0xa0000000, 0x6c8a: 0xa0000000, 0x6c8b: 0xa0000000, - 0x6c8c: 0xa0000000, 0x6c8d: 0xa0000000, 0x6c8e: 0xa0000000, 0x6c8f: 0xa0000000, - 0x6c90: 0xa0000000, 0x6c91: 0xa0000000, 0x6c92: 0xa0000000, 0x6c93: 0xa0000000, - 0x6c94: 0xa0000000, 0x6c95: 0xa0000000, 0x6c96: 0xa0000000, 0x6c97: 0xa0000000, - 0x6c98: 0xa0000000, 0x6c99: 0xa0000000, 0x6c9a: 0xa0000000, 0x6c9b: 0xa0000000, - 0x6c9c: 0xa0000000, 0x6c9d: 0xa0000000, 0x6c9e: 0xa0000000, 0x6c9f: 0xa0000000, - 0x6ca0: 0xa0000000, 0x6ca1: 0xa0000000, 0x6ca2: 0xa0000000, 0x6ca3: 0xa0000000, - 0x6ca4: 0xa0000000, 0x6ca5: 0xa0000000, 0x6ca6: 0xa0000000, 0x6ca7: 0xa0000000, - 0x6ca8: 0xa0000000, 0x6ca9: 0xa0000000, 0x6caa: 0xa0000000, 0x6cab: 0xa0000000, - 0x6cac: 0xa0000000, 0x6cad: 0xa0000000, 0x6cae: 0xa0000000, 0x6caf: 0xa0000000, - 0x6cb0: 0xa0000000, 0x6cb1: 0xa0000000, 0x6cb2: 0xa0000000, 0x6cb3: 0xa0000000, - 0x6cb4: 0xa0000000, 0x6cb5: 0xa0000000, 0x6cb6: 0xa0000000, 0x6cb7: 0xa0000000, - 0x6cb8: 0xa0000000, 0x6cb9: 0xa0000000, 0x6cba: 0xa0000000, 0x6cbb: 0xa0000000, - 0x6cbc: 0xa0000000, 0x6cbd: 0xa0000000, 0x6cbe: 0xa0000000, 0x6cbf: 0xa0000000, - // Block 0x1b3, offset 0x6cc0 - 0x6cc0: 0xa0000000, 0x6cc1: 0xa0000000, 0x6cc2: 0xa0000000, 0x6cc3: 0xa0000000, - 0x6cc4: 0xa0000000, 0x6cc5: 0xa0000000, 0x6cc6: 0xa0000000, 0x6cc7: 0xa0000000, - 0x6cc8: 0xa0000000, 0x6cc9: 0xa0000000, 0x6cca: 0xa0000000, 0x6ccb: 0xa0000000, - 0x6ccc: 0xa0000000, 0x6ccd: 0xa0000000, 0x6cce: 0xa0000000, 0x6ccf: 0xa0000000, - 0x6cd0: 0xa0000000, 0x6cd1: 0xa0000000, 0x6cd2: 0xa0000000, 0x6cd3: 0xa0000000, - 0x6cd4: 0xa0000000, 0x6cd5: 0xa0000000, 0x6cd6: 0xa0000000, 0x6cd7: 0xa0000000, - 0x6cd8: 0xa0000000, 0x6cd9: 0xa0000000, 0x6cda: 0xa0000000, 0x6cdb: 0xa0000000, - 0x6cdc: 0xa0000000, 0x6cdd: 0xa0000000, 0x6cde: 0xa0000000, 0x6cdf: 0xa0000000, - 0x6ce0: 0xa0000000, 0x6ce1: 0xa0000000, 0x6ce2: 0xa0000000, 0x6ce3: 0xa0000000, - 0x6ce4: 0xa0000000, 0x6ce5: 0xa0000000, 0x6ce6: 0xa0000000, 0x6ce7: 0xa0000000, - 0x6ce8: 0xa0000000, 0x6ce9: 0xa0000000, 0x6cea: 0xa0000000, 0x6ceb: 0xa0000000, - 0x6cec: 0xa0000000, 0x6ced: 0xa0000000, 0x6cee: 0xa0000000, 0x6cef: 0xa0000000, - // Block 0x1b4, offset 0x6d00 - 0x6d00: 0xa0000000, 0x6d01: 0xa0000000, 0x6d02: 0xa0000000, 0x6d03: 0xa0000000, - 0x6d04: 0xa0000000, 0x6d05: 0xa0000000, 0x6d06: 0xa0000000, 0x6d07: 0xa0000000, - 0x6d08: 0xa0000000, 0x6d09: 0x40020020, 0x6d0a: 0x40020220, 0x6d0b: 0x40020420, - 0x6d0c: 0x40020620, 0x6d0d: 0x40020820, 0x6d0e: 0xa0000000, 0x6d0f: 0xa0000000, - 0x6d10: 0xa0000000, 0x6d11: 0xa0000000, 0x6d12: 0xa0000000, 0x6d13: 0xa0000000, - 0x6d14: 0xa0000000, 0x6d15: 0xa0000000, 0x6d16: 0xa0000000, 0x6d17: 0xa0000000, - 0x6d18: 0xa0000000, 0x6d19: 0xa0000000, 0x6d1a: 0xa0000000, 0x6d1b: 0xa0000000, - 0x6d1c: 0xa0000000, 0x6d1d: 0xa0000000, 0x6d1e: 0xa0000000, 0x6d1f: 0xa0000000, - 0x6d20: 0x40021220, 0x6d21: 0x4002ba20, 0x6d22: 0x4003e020, 0x6d23: 0x4004ea20, - 0x6d24: 0x4027de20, 0x6d25: 0x4004ec20, 0x6d26: 0x4004e620, 0x6d27: 0x4003d220, - 0x6d28: 0x4003f420, 0x6d29: 0x4003f620, 0x6d2a: 0x4004d820, 0x6d2b: 0x40093820, - 0x6d2c: 0x40024020, 0x6d2d: 0x40021a20, 0x6d2e: 0x4002e420, 0x6d2f: 0x4004e220, - 0x6d30: 0x4029cc20, 0x6d31: 0x4029ce20, 0x6d32: 0x4029d020, 0x6d33: 0x4029d220, - 0x6d34: 0x4029d420, 0x6d35: 0x4029d620, 0x6d36: 0x4029d820, 0x6d37: 0x4029da20, - 0x6d38: 0x4029dc20, 0x6d39: 0x4029de20, 0x6d3a: 0x40026c20, 0x6d3b: 0x40026220, - 0x6d3c: 0x40094020, 0x6d3d: 0xc32f0851, 0x6d3e: 0x40094420, 0x6d3f: 0x4002c420, - // Block 0x1b5, offset 0x6d40 - 0x6d40: 0x4004d620, 0x6d41: 0x002bde88, 0x6d42: 0x002c0a88, 0x6d43: 0x002c3a88, - 0x6d44: 0x002c6288, 0x6d45: 0x002c9888, 0x6d46: 0x002d0888, 0x6d47: 0x002d2288, - 0x6d48: 0x002d6888, 0x6d49: 0x002d9a88, 0x6d4a: 0x002dcc88, 0x6d4b: 0x002dfe88, - 0x6d4c: 0xc0030002, 0x6d4d: 0x002e8288, 0x6d4e: 0x002e9e88, 0x6d4f: 0x002ee288, - 0x6d50: 0x002f2c88, 0x6d51: 0x002f5688, 0x6d52: 0x002f7a88, 0x6d53: 0x002fe688, - 0x6d54: 0x00302c88, 0x6d55: 0x00306c88, 0x6d56: 0x0030be88, 0x6d57: 0x0030e288, - 0x6d58: 0x0030f688, 0x6d59: 0x00310088, 0x6d5a: 0x00312a88, 0x6d5b: 0x4003f820, - 0x6d5c: 0x4004e420, 0x6d5d: 0x4003fa20, 0x6d5e: 0x40062420, 0x6d5f: 0x40021620, - 0x6d60: 0x40061e20, 0x6d61: 0x402bde20, 0x6d62: 0x402c0a20, 0x6d63: 0x402c3a20, - 0x6d64: 0x402c6220, 0x6d65: 0x402c9820, 0x6d66: 0x402d0820, 0x6d67: 0x402d2220, - 0x6d68: 0x402d6820, 0x6d69: 0x402d9a20, 0x6d6a: 0x402dcc20, 0x6d6b: 0x402dfe20, - 0x6d6c: 0xc0000002, 0x6d6d: 0x402e8220, 0x6d6e: 0x402e9e20, 0x6d6f: 0x402ee220, - 0x6d70: 0x402f2c20, 0x6d71: 0x402f5620, 0x6d72: 0x402f7a20, 0x6d73: 0x402fe620, - 0x6d74: 0x40302c20, 0x6d75: 0x40306c20, 0x6d76: 0x4030be20, 0x6d77: 0x4030e220, - 0x6d78: 0x4030f620, 0x6d79: 0x40310020, 0x6d7a: 0x40312a20, 0x6d7b: 0x4003fc20, - 0x6d7c: 0x40094820, 0x6d7d: 0x4003fe20, 0x6d7e: 0x40094c20, 0x6d7f: 0xa0000000, - // Block 0x1b6, offset 0x6d80 - 0x6d80: 0x40055620, 0x6d81: 0xa1809102, 0x6d82: 0xa1909002, 0x6d83: 0x40055820, - 0x6d84: 0xae600000, 0x6d85: 0xadc00000, 0x6d86: 0x40055a20, 0x6d87: 0xa1208d02, - 0x6d90: 0x40389020, 0x6d91: 0x40389220, 0x6d92: 0x40389420, 0x6d93: 0x40389620, - 0x6d94: 0x40389820, 0x6d95: 0x40389a20, 0x6d96: 0x40389c20, 0x6d97: 0x40389e20, - 0x6d98: 0x4038a020, 0x6d99: 0x4038a220, 0x6d9a: 0x0038a499, 0x6d9b: 0x4038a420, - 0x6d9c: 0x4038a620, 0x6d9d: 0x0038a899, 0x6d9e: 0x4038a820, 0x6d9f: 0x0038aa99, - 0x6da0: 0x4038aa20, 0x6da1: 0x4038ac20, 0x6da2: 0x4038ae20, 0x6da3: 0x0038b099, - 0x6da4: 0x4038b020, 0x6da5: 0x0038b299, 0x6da6: 0x4038b220, 0x6da7: 0x4038b420, - 0x6da8: 0x4038b620, 0x6da9: 0x4038b820, 0x6daa: 0x4038ba20, - 0x6db0: 0xe00014ff, 0x6db1: 0xe0001502, 0x6db2: 0xe0001511, 0x6db3: 0xa0002102, - 0x6db4: 0xa0002202, - // Block 0x1b7, offset 0x6dc0 - 0x6dc0: 0xa0000000, 0x6dc1: 0xa0000000, 0x6dc2: 0xa0000000, 0x6dc3: 0xa0000000, - 0x6dc4: 0xa0000000, 0x6dc6: 0x40096620, 0x6dc7: 0x40096a20, - 0x6dc8: 0x40070820, 0x6dc9: 0x4004f220, 0x6dca: 0x4004f620, 0x6dcb: 0x4027e620, - 0x6dcc: 0x40024820, 0x6dcd: 0x40024a20, 0x6dce: 0x40070e20, 0x6dcf: 0x40071020, - 0x6dd0: 0xae600000, 0x6dd1: 0xae600000, 0x6dd2: 0xae600000, 0x6dd3: 0xae600000, - 0x6dd4: 0xae600000, 0x6dd5: 0xae600000, 0x6dd6: 0xae600000, 0x6dd7: 0xae600000, - 0x6dd8: 0xa1e00000, 0x6dd9: 0xa1f00000, 0x6dda: 0xa2000000, 0x6ddb: 0x40026420, - 0x6dde: 0x40027020, 0x6ddf: 0x4002cc20, - 0x6de0: 0x403aa220, 0x6de1: 0x40391c20, 0x6de2: 0x40393a21, 0x6de3: 0x40393a22, - 0x6de4: 0x403a7621, 0x6de5: 0x40393a23, 0x6de6: 0x403a9221, 0x6de7: 0xc3310151, - 0x6de8: 0x40393c20, 0x6de9: 0x403a6a21, 0x6dea: 0x40395620, 0x6deb: 0x40395820, - 0x6dec: 0x40396420, 0x6ded: 0x40397220, 0x6dee: 0x40397420, 0x6def: 0x40398820, - 0x6df0: 0x40398a20, 0x6df1: 0x4039a420, 0x6df2: 0x4039a620, 0x6df3: 0x4039c620, - 0x6df4: 0x4039c820, 0x6df5: 0x4039dc20, 0x6df6: 0x4039de20, 0x6df7: 0x4039e620, - 0x6df8: 0x4039e820, 0x6df9: 0x4039ee20, 0x6dfa: 0x4039f020, 0x6dfb: 0x403a3820, - 0x6dfc: 0x403a3a20, 0x6dfd: 0x403a9c20, 0x6dfe: 0x403a9e20, 0x6dff: 0x403aa020, - // Block 0x1b8, offset 0x6e00 - 0x6e00: 0xa0002302, 0x6e01: 0x4039fc20, 0x6e02: 0x403a1220, 0x6e03: 0x403a1a20, - 0x6e04: 0x403a4020, 0x6e05: 0x403a4e20, 0x6e06: 0x403a5620, 0x6e07: 0x403a6820, - 0x6e08: 0xc3350171, 0x6e09: 0x403a9222, 0x6e0a: 0xc3370171, 0x6e0b: 0xa1b0a202, - 0x6e0c: 0xa1c0a502, 0x6e0d: 0xa1d0a902, 0x6e0e: 0xa1e0ad02, 0x6e0f: 0xa1f0b202, - 0x6e10: 0xa200b602, 0x6e11: 0xa210ba02, 0x6e12: 0xa220bc02, 0x6e13: 0xae60bd02, - 0x6e14: 0xae60be02, 0x6e15: 0xadc0bf02, 0x6e16: 0xadc0c102, 0x6e17: 0xae60c202, - 0x6e18: 0xae60c302, 0x6e19: 0xae60c402, 0x6e1a: 0xae60c502, 0x6e1b: 0xae60c602, - 0x6e1c: 0xadc0c702, 0x6e1d: 0xae60c802, 0x6e1e: 0xae60c902, 0x6e1f: 0xadc0c002, - 0x6e20: 0xe000015e, 0x6e21: 0xe00001e6, 0x6e22: 0xe0000301, 0x6e23: 0xe00003db, - 0x6e24: 0xe00004b6, 0x6e25: 0xe0000580, 0x6e26: 0xe000064b, 0x6e27: 0xe00006f3, - 0x6e28: 0xe000079f, 0x6e29: 0xe0000844, 0x6e2a: 0x4004ee20, 0x6e2b: 0x40024c20, - 0x6e2c: 0x40024e20, 0x6e2d: 0x4004de20, 0x6e2e: 0x40393a20, 0x6e2f: 0x403a1020, - 0x6e30: 0xa230d102, 0x6e31: 0x40392420, 0x6e32: 0x40392220, 0x6e33: 0x40392a20, - 0x6e34: 0x00391c84, 0x6e35: 0xf0000404, 0x6e36: 0xf0000404, 0x6e37: 0xf0000404, - 0x6e38: 0xf0000404, 0x6e39: 0x40395a20, 0x6e3a: 0x40395c20, 0x6e3b: 0x40393e20, - 0x6e3c: 0x40395e20, 0x6e3d: 0x40396020, 0x6e3e: 0x40394020, 0x6e3f: 0x40396220, - // Block 0x1b9, offset 0x6e40 - 0x6e40: 0xe00017e4, 0x6e41: 0x403a6c20, 0x6e42: 0xe00017e1, 0x6e43: 0x403a6e20, - 0x6e44: 0x403a7620, 0x6e45: 0x403a7820, 0x6e46: 0x403a7a20, 0x6e47: 0x403a7c20, - 0x6e48: 0x403a7e20, 0x6e49: 0x403a8020, 0x6e4a: 0x403a8220, 0x6e4b: 0x403a8420, - 0x6e4c: 0x403a9220, 0x6e4d: 0x403a9420, 0x6e4e: 0x403a9620, 0x6e4f: 0x403a8620, - 0x6e50: 0x403a9820, 0x6e51: 0x403a9a20, 0x6e52: 0x403aaa20, 0x6e53: 0xe0001800, - 0x6e54: 0x4002e820, 0x6e55: 0x403a7220, 0x6e56: 0xae600000, 0x6e57: 0xae600000, - 0x6e58: 0xae600000, 0x6e59: 0xae600000, 0x6e5a: 0xae600000, 0x6e5b: 0xae600000, - 0x6e5c: 0xae600000, 0x6e5d: 0xa0000000, 0x6e5e: 0x40071220, 0x6e5f: 0xae600000, - 0x6e60: 0xae600000, 0x6e61: 0xae600000, 0x6e62: 0xae600000, 0x6e63: 0xadc00000, - 0x6e64: 0xae600000, 0x6e65: 0x003a7483, 0x6e66: 0x003a9083, 0x6e67: 0xae600000, - 0x6e68: 0xae600000, 0x6e69: 0x40071420, 0x6e6a: 0xadc00000, 0x6e6b: 0xae600000, - 0x6e6c: 0xae600000, 0x6e6d: 0xadc00000, 0x6e6e: 0x40399e20, 0x6e6f: 0x4039ba20, - 0x6e70: 0xe0000161, 0x6e71: 0xe00001e9, 0x6e72: 0xe0000304, 0x6e73: 0xe00003de, - 0x6e74: 0xe00004b9, 0x6e75: 0xe0000583, 0x6e76: 0xe000064e, 0x6e77: 0xe00006f6, - 0x6e78: 0xe00007a2, 0x6e79: 0xe0000847, 0x6e7a: 0x4039d020, 0x6e7b: 0x4039e420, - 0x6e7c: 0x4039f420, 0x6e7d: 0xe0001553, 0x6e7e: 0xe0001779, 0x6e7f: 0x403a7020, - // Block 0x1ba, offset 0x6e80 - 0x6e81: 0x40491020, 0x6e82: 0x40491220, 0x6e83: 0x40491420, - 0x6e84: 0x40491620, 0x6e85: 0x40491820, 0x6e86: 0x40491a20, 0x6e87: 0x40491c20, - 0x6e88: 0x40491e20, 0x6e89: 0x40492020, 0x6e8a: 0x40492220, 0x6e8b: 0x40492420, - 0x6e8c: 0x40492620, 0x6e8d: 0x40492820, 0x6e8e: 0x40492a20, 0x6e8f: 0x40492c20, - 0x6e90: 0x40492e20, 0x6e91: 0x40493020, 0x6e92: 0x40493220, 0x6e93: 0x40493420, - 0x6e94: 0x40493620, 0x6e95: 0x40493820, 0x6e96: 0x40493a20, 0x6e97: 0x40493c20, - 0x6e98: 0x40493e20, 0x6e99: 0x40494020, 0x6e9a: 0x40494220, 0x6e9b: 0x40494420, - 0x6e9c: 0x40494620, 0x6e9d: 0x40494820, 0x6e9e: 0x40494a20, 0x6e9f: 0x40494c20, - 0x6ea0: 0x40494e20, 0x6ea1: 0x40495020, 0x6ea2: 0x40495220, 0x6ea3: 0x40495420, - 0x6ea4: 0x40495620, 0x6ea5: 0x40495820, 0x6ea6: 0x40495a20, 0x6ea7: 0x40495c20, - 0x6ea8: 0x40495e20, 0x6ea9: 0x40496020, 0x6eaa: 0x40496220, 0x6eab: 0x40496420, - 0x6eac: 0x40496620, 0x6ead: 0x40496820, 0x6eae: 0x40496a20, 0x6eaf: 0x40496c20, - 0x6eb0: 0x40496e20, 0x6eb1: 0x40497020, 0x6eb2: 0x40497220, 0x6eb3: 0x40497420, - 0x6eb4: 0x40497620, 0x6eb5: 0x40497820, 0x6eb6: 0x40497a20, 0x6eb7: 0x40497c20, - 0x6eb8: 0x826724bf, 0x6eb9: 0x826724c0, 0x6eba: 0xa0002402, - 0x6ebf: 0x4027f420, - // Block 0x1bb, offset 0x6ec0 - 0x6ec0: 0x4062ac20, 0x6ec1: 0xe0002526, 0x6ec2: 0x4062b020, 0x6ec3: 0x4062b220, - 0x6ec4: 0xe0002532, 0x6ec5: 0x4062b620, 0x6ec6: 0x4062b820, 0x6ec7: 0x4062ba20, - 0x6ec8: 0xe000254a, 0x6ec9: 0x4062be20, 0x6eca: 0xe0002550, 0x6ecb: 0x4062c220, - 0x6ecc: 0x4062c420, 0x6ecd: 0xe0002553, 0x6ece: 0x4062c820, 0x6ecf: 0x4062ca20, - 0x6ed0: 0x4062cc20, 0x6ed1: 0x4062ce20, 0x6ed2: 0x4062d020, 0x6ed3: 0x4062d220, - 0x6ed4: 0x4062d420, 0x6ed5: 0x4062d620, 0x6ed6: 0x4062d820, 0x6ed7: 0x4062da20, - 0x6ed8: 0x4062dc20, 0x6ed9: 0x4062de20, 0x6eda: 0x4062e020, 0x6edb: 0x4062e220, - 0x6edc: 0x4062e420, 0x6edd: 0x4062e620, 0x6ede: 0x4062e820, 0x6edf: 0x4062ea20, - 0x6ee0: 0x4062ec20, 0x6ee1: 0x4062ee20, 0x6ee2: 0x4062f020, 0x6ee3: 0x4062f220, - 0x6ee4: 0x4062f420, 0x6ee5: 0x4062f620, 0x6ee6: 0x4062f820, 0x6ee7: 0x4062fa20, - 0x6ee8: 0x4062fc20, 0x6ee9: 0x4062fe20, 0x6eea: 0x40630020, 0x6eeb: 0x40630220, - 0x6eec: 0x40630420, 0x6eed: 0x40630620, 0x6eee: 0x40630820, 0x6eef: 0x40630a20, - 0x6ef0: 0x40630c20, 0x6ef1: 0x40630e20, 0x6ef2: 0x40631020, 0x6ef3: 0x40631220, - 0x6ef4: 0x40631420, 0x6ef5: 0x40631620, 0x6ef6: 0x40631820, 0x6ef7: 0x40631a20, - 0x6ef8: 0x40631c20, 0x6ef9: 0x40631e20, 0x6efa: 0x40632020, 0x6efb: 0x40632220, - 0x6efc: 0x40632420, 0x6efd: 0x40632620, 0x6efe: 0x40632820, 0x6eff: 0x40632a20, - // Block 0x1bc, offset 0x6f00 - 0x6f00: 0x40632c20, 0x6f01: 0x40632e20, 0x6f02: 0x40633020, 0x6f03: 0x40633220, - 0x6f04: 0x40633420, 0x6f05: 0x40633620, 0x6f06: 0x40633820, 0x6f07: 0x40633a20, - 0x6f08: 0x40633c20, 0x6f09: 0x40633e20, 0x6f0a: 0x40634020, 0x6f0b: 0x40634220, - 0x6f0c: 0x40634420, 0x6f0d: 0x40634620, 0x6f0e: 0x40634820, 0x6f0f: 0x40634a20, - 0x6f10: 0x40634c20, 0x6f11: 0x40634e20, 0x6f12: 0x40635020, 0x6f13: 0x40635220, - 0x6f14: 0x40635420, 0x6f15: 0x40635620, 0x6f16: 0x40635820, 0x6f17: 0x40635a20, - 0x6f18: 0x40635c20, 0x6f19: 0x40635e20, 0x6f1a: 0x40636020, 0x6f1b: 0x40636220, - 0x6f1c: 0x40636420, 0x6f1d: 0x40636620, 0x6f1e: 0x40636820, 0x6f1f: 0x4063a420, - 0x6f20: 0x4063a620, 0x6f21: 0x4063a820, 0x6f22: 0xe0002556, 0x6f23: 0x4063ac20, - 0x6f24: 0xe0002559, 0x6f25: 0x4063b020, 0x6f26: 0xe000255c, 0x6f27: 0x4063b420, - 0x6f28: 0xe000255f, 0x6f29: 0x4063b820, 0x6f2a: 0xe0002562, 0x6f2b: 0xe0002565, - 0x6f2c: 0xe0002569, 0x6f2d: 0x4063c020, 0x6f2e: 0x4063c220, 0x6f2f: 0xe000256c, - 0x6f30: 0xe000256f, 0x6f31: 0xe0002573, 0x6f32: 0x4063ca20, 0x6f33: 0x4063cc20, - 0x6f34: 0x4063ce20, 0x6f35: 0x4063d020, 0x6f36: 0x4063d220, 0x6f37: 0x4063d420, - 0x6f38: 0x4063d620, 0x6f39: 0x4063d820, 0x6f3a: 0x4063da20, 0x6f3b: 0x4063dc20, - 0x6f3c: 0x4063de20, 0x6f3d: 0x4063e020, 0x6f3e: 0x4063e220, 0x6f3f: 0x4063e420, - // Block 0x1bd, offset 0x6f40 - 0x6f40: 0x4063e620, 0x6f41: 0x4063e820, 0x6f42: 0x4063ea20, 0x6f43: 0x4063ec20, - 0x6f44: 0x4063ee20, 0x6f45: 0x4063f020, 0x6f46: 0x4063f220, 0x6f47: 0x4063f420, - 0x6f48: 0x4063f620, 0x6f49: 0x4063f820, 0x6f4a: 0x4063fa20, 0x6f4b: 0x4063fc20, - 0x6f4c: 0x4063fe20, 0x6f4d: 0x40640020, 0x6f4e: 0x40640220, 0x6f4f: 0x40640420, - 0x6f50: 0x40640620, 0x6f51: 0x40640820, 0x6f52: 0x40640a20, 0x6f53: 0x40640c20, - 0x6f54: 0x40640e20, 0x6f55: 0x40641020, 0x6f56: 0x40641220, 0x6f57: 0x40641420, - 0x6f58: 0x40641620, 0x6f59: 0x40641820, 0x6f5a: 0x40641a20, 0x6f5b: 0x40641c20, - 0x6f5c: 0x40641e20, 0x6f5d: 0x40642020, 0x6f5e: 0x40642220, 0x6f5f: 0x40642420, - 0x6f60: 0x40642620, 0x6f61: 0x40642820, 0x6f62: 0x40642a20, 0x6f63: 0x40642c20, - 0x6f64: 0x40642e20, 0x6f65: 0x40643020, 0x6f66: 0x40643220, 0x6f67: 0x40643420, - 0x6f68: 0x4062ac20, 0x6f69: 0xe0002526, 0x6f6a: 0xe0002529, 0x6f6b: 0x4062b020, - 0x6f6c: 0xe000252c, 0x6f6d: 0xe000252f, 0x6f6e: 0x4062b220, 0x6f6f: 0x4062b620, - 0x6f70: 0xe0002535, 0x6f71: 0xe0002538, 0x6f72: 0xe000253b, 0x6f73: 0xe000253e, - 0x6f74: 0xe0002541, 0x6f75: 0xe0002544, 0x6f76: 0xe0002547, 0x6f77: 0x4062b820, - 0x6f78: 0x4062ba20, 0x6f79: 0xe000254d, 0x6f7a: 0x4062be20, 0x6f7b: 0xe0002550, - 0x6f7c: 0x4062c220, 0x6f7d: 0x4062c420, 0x6f7e: 0x4062c820, 0x6f7f: 0x4062ca20, - // Block 0x1be, offset 0x6f80 - 0x6f80: 0x4062cc20, 0x6f81: 0x4062ce20, 0x6f82: 0x4062d020, 0x6f83: 0x40649a20, - 0x6f84: 0x40649c20, 0x6f85: 0x40649e20, 0x6f86: 0x4064a020, 0x6f87: 0x4064a220, - 0x6f88: 0x4064a420, 0x6f89: 0x4064a620, 0x6f8a: 0x4064a820, 0x6f8b: 0x4064aa20, - 0x6f8c: 0x4064ac20, 0x6f8d: 0x4064ae20, 0x6f8e: 0x4064b020, 0x6f8f: 0x4064b220, - 0x6f90: 0x4064b420, 0x6f91: 0x4064b620, 0x6f92: 0x4064b820, 0x6f93: 0x4064ba20, - 0x6f94: 0x4064bc20, 0x6f95: 0x4064be20, 0x6f96: 0x4064c020, 0x6f97: 0x4064c220, - 0x6f98: 0x4064c420, 0x6f99: 0x4064c620, 0x6f9a: 0x4064c820, 0x6f9b: 0x4064ca20, - 0x6f9c: 0x4064cc20, 0x6f9d: 0x4064ce20, 0x6f9e: 0x4064d020, 0x6f9f: 0x4064d220, - 0x6fa0: 0x4064d420, 0x6fa1: 0x4064d620, 0x6fa2: 0x4064d820, 0x6fa3: 0x4064da20, - 0x6fa4: 0x4064dc20, 0x6fa5: 0x4064de20, 0x6fa6: 0x4064e020, 0x6fa7: 0x4064e220, - 0x6fa8: 0x4064e420, 0x6fa9: 0x4064e620, 0x6faa: 0x4064e820, 0x6fab: 0x4064ea20, - 0x6fac: 0x4064ec20, 0x6fad: 0x4064ee20, 0x6fae: 0x4064f020, 0x6faf: 0x4064f220, - 0x6fb0: 0x4064f420, 0x6fb1: 0x4064f620, 0x6fb2: 0x4064f820, 0x6fb3: 0x4064fa20, - 0x6fb4: 0x4064fc20, 0x6fb5: 0x4064fe20, 0x6fb6: 0x40650020, 0x6fb7: 0x40650220, - 0x6fb8: 0x40650420, 0x6fb9: 0x40650620, 0x6fba: 0x40650820, 0x6fbb: 0x40650a20, - 0x6fbc: 0x40650c20, 0x6fbd: 0x40650e20, 0x6fbe: 0x40651020, 0x6fbf: 0x40651220, - // Block 0x1bf, offset 0x6fc0 - 0x6fc0: 0x4009a620, 0x6fc1: 0xe00000f5, 0x6fc2: 0x4009a820, 0x6fc3: 0x4009aa20, - 0x6fc4: 0xe00000f8, 0x6fc5: 0x4009ac20, 0x6fc6: 0x4009ae20, 0x6fc7: 0xe00000fb, - 0x6fc8: 0x4009b020, 0x6fc9: 0xe00000fe, 0x6fca: 0x4009b220, 0x6fcb: 0x4009b420, - 0x6fcc: 0x4009b620, 0x6fcd: 0x4009b820, 0x6fce: 0x4009ba20, 0x6fcf: 0x4009bc20, - 0x6fd0: 0x4009be20, 0x6fd1: 0x4009c020, 0x6fd2: 0x4009c220, 0x6fd3: 0x4009c420, - 0x6fd4: 0x4009c620, 0x6fd5: 0x4009c820, 0x6fd6: 0x4009ca20, 0x6fd7: 0x4009cc20, - 0x6fd8: 0x4009ce20, 0x6fd9: 0x4009d020, 0x6fda: 0x4009d220, 0x6fdb: 0x4009d420, - 0x6fdc: 0x4009d620, 0x6fdd: 0x4009d820, 0x6fde: 0x4009da20, 0x6fdf: 0x4009dc20, - 0x6fe0: 0x40094420, 0x6fe1: 0x4009de20, 0x6fe2: 0xe0000104, 0x6fe3: 0x4009e020, - 0x6fe4: 0x4009e220, 0x6fe5: 0x4009e420, 0x6fe6: 0x4009e620, 0x6fe7: 0x4009e820, - 0x6fe8: 0x4009ea20, 0x6fe9: 0x4009ec20, 0x6fea: 0x4009ee20, 0x6feb: 0x4009f020, - 0x6fec: 0x4009f220, 0x6fed: 0xe0000101, 0x6fee: 0xe00000e1, 0x6fef: 0xe00000e7, - 0x6ff0: 0xe0000107, 0x6ff1: 0xe000010a, 0x6ff2: 0x4009f420, 0x6ff3: 0x4009f620, - 0x6ff4: 0xe000010d, 0x6ff5: 0xe0000110, 0x6ff6: 0x4009f820, 0x6ff7: 0x4009fa20, - 0x6ff8: 0xe0000113, 0x6ff9: 0xe0000116, 0x6ffa: 0x4009fc20, 0x6ffb: 0x4009fe20, - 0x6ffc: 0x400a0020, 0x6ffd: 0x400a0220, 0x6ffe: 0x400a0420, 0x6fff: 0x400a0620, - // Block 0x1c0, offset 0x7000 - 0x7000: 0x40073420, 0x7001: 0x40073620, - 0x7013: 0x003a269a, - 0x7014: 0x003a2699, 0x7015: 0x003a2697, 0x7016: 0x003a2698, 0x7017: 0x003a7c9a, - 0x7018: 0x003a7c99, 0x7019: 0x003a7a9a, 0x701a: 0x003a7a99, 0x701b: 0x003a7e9a, - 0x701c: 0x003a7e99, 0x701d: 0xf0001a1a, 0x701e: 0x003a849a, 0x701f: 0x003a8499, - 0x7020: 0x003a789a, 0x7021: 0x003a7899, 0x7022: 0x003a809a, 0x7023: 0x003a8099, - 0x7024: 0x003a989a, 0x7025: 0x003a9899, 0x7026: 0x003a9897, 0x7027: 0x003a9898, - 0x7028: 0x003a92c3, 0x7029: 0x003a92c4, 0x702a: 0xe0001559, 0x702b: 0xe0001556, - 0x702c: 0xe0001589, 0x702d: 0xe0001586, 0x702e: 0xe000158f, 0x702f: 0xe000158c, - 0x7030: 0xe000159b, 0x7031: 0xe0001598, 0x7032: 0xe0001595, 0x7033: 0xe0001592, - 0x7034: 0xe00015a1, 0x7035: 0xe000159e, 0x7036: 0xe00015bf, 0x7037: 0xe00015bc, - 0x7038: 0xe00015b9, 0x7039: 0xe00015ad, 0x703a: 0xe00015a7, 0x703b: 0xe00015a4, - 0x703c: 0x003a929a, 0x703d: 0x003a9299, 0x703e: 0x003a9297, 0x703f: 0x003a9298, - // Block 0x1c1, offset 0x7040 - 0x7040: 0xe000155f, 0x7041: 0xe0001565, 0x7042: 0xe000157a, 0x7043: 0xe00015b0, - 0x7044: 0xe00015b6, 0x7045: 0xf0001a1a, 0x7046: 0xf0001a1a, 0x7047: 0xf0001a1a, - 0x7048: 0xf0001a1a, 0x7049: 0xe00024ab, 0x704a: 0xf0001a1a, 0x704b: 0xf0001a1a, - 0x704c: 0xf0001a1a, 0x704d: 0xf0001a1a, 0x704e: 0xf0001a1a, 0x704f: 0xe00024b1, - 0x7050: 0xf0001a1a, 0x7051: 0xf0001a1a, 0x7052: 0xf0001a1a, 0x7053: 0xe00024b7, - 0x7054: 0xf0001a1a, 0x7055: 0xf0001a1a, 0x7056: 0xf0001a1a, 0x7057: 0xf0001a1a, - 0x7058: 0xf0001a1a, 0x7059: 0xf0001a1a, 0x705a: 0xf0001a1a, 0x705b: 0xf0001a1a, - 0x705c: 0xf0001a1a, 0x705d: 0xf0001a1a, 0x705e: 0xf0001a1a, 0x705f: 0xf0001a1a, - 0x7060: 0xf0001a1a, 0x7061: 0xf0001a1a, 0x7062: 0xf0001a1a, 0x7063: 0xf0001a1a, - 0x7064: 0xf0001a1a, 0x7065: 0xf0001a1a, 0x7066: 0xf0001a1a, 0x7067: 0xf0001a1a, - 0x7068: 0xf0001a1a, 0x7069: 0xf0001a1a, 0x706a: 0xf0001a1a, 0x706b: 0xf0001a1a, - 0x706c: 0xf0001a1a, 0x706d: 0xf0001a1a, 0x706e: 0xf0001a1a, 0x706f: 0xf0001a1a, - 0x7070: 0xf0001a1a, 0x7071: 0xe00024f9, 0x7072: 0xf0001a1a, 0x7073: 0xf0001a1a, - 0x7074: 0xf0001a1a, 0x7075: 0xe00024ff, 0x7076: 0xf0001a1a, 0x7077: 0xf0001a1a, - 0x7078: 0xf0001a1a, 0x7079: 0xf0001a1a, 0x707a: 0xf0001a1a, 0x707b: 0xf0001a1a, - 0x707c: 0xf0001a1a, 0x707d: 0xe0002505, 0x707e: 0xf0001a1a, 0x707f: 0xf0001a1a, - // Block 0x1c2, offset 0x7080 - 0x7080: 0xf0001a1a, 0x7081: 0xf0001a1a, 0x7082: 0xf0001a1a, 0x7083: 0xe000250b, - 0x7084: 0xf0001a1a, 0x7085: 0xf0001a1a, 0x7086: 0xf0001a1a, 0x7087: 0xf0001a1a, - 0x7088: 0xf0001a1a, 0x7089: 0xe000250e, 0x708a: 0xf0001a1a, 0x708b: 0xf0001a1a, - 0x708c: 0xf0001a1a, 0x708d: 0xf0001a1a, 0x708e: 0xf0001a1a, 0x708f: 0xe0002514, - 0x7090: 0xf0001a1a, 0x7091: 0xf0001a1a, 0x7092: 0xf0001a1a, 0x7093: 0xe0002517, - 0x7094: 0xf0001a1a, 0x7095: 0xf0001a1a, 0x7096: 0xf0001a1a, 0x7097: 0xf0001a1a, - 0x7098: 0xf0001a1a, 0x7099: 0xe0002523, 0x709a: 0xf0001a1a, 0x709b: 0xf0001a1a, - 0x709c: 0xf0001a1a, 0x709d: 0xe000251d, 0x709e: 0xe0000003, 0x709f: 0xe0000006, - 0x70a0: 0xe0000009, 0x70a1: 0xe000000c, 0x70a2: 0xe000000f, 0x70a3: 0xe0000012, - 0x70a4: 0xe000156b, 0x70a5: 0xe000156e, 0x70a6: 0xe0001577, 0x70a7: 0xe000157d, - 0x70a8: 0xe00015aa, 0x70a9: 0xe00015b3, 0x70aa: 0xf0001919, 0x70ab: 0xf0001919, - 0x70ac: 0xf0001919, 0x70ad: 0xf0001919, 0x70ae: 0xe00024a8, 0x70af: 0xf0001919, - 0x70b0: 0xf0001919, 0x70b1: 0xf0001919, 0x70b2: 0xf0001919, 0x70b3: 0xf0001919, - 0x70b4: 0xe00024ae, 0x70b5: 0xf0001919, 0x70b6: 0xf0001919, 0x70b7: 0xf0001919, - 0x70b8: 0xf0001919, 0x70b9: 0xf0001919, 0x70ba: 0xe00024b4, 0x70bb: 0xf0001919, - 0x70bc: 0xe00024f6, 0x70bd: 0xf0001919, 0x70be: 0xe00024fc, 0x70bf: 0xf0001919, - // Block 0x1c3, offset 0x70c0 - 0x70c0: 0xf0001919, 0x70c1: 0xf0001919, 0x70c2: 0xf0001919, 0x70c3: 0xe0002502, - 0x70c4: 0xf0001919, 0x70c5: 0xf0001919, 0x70c6: 0xe0002508, 0x70c7: 0xf0001919, - 0x70c8: 0xf0001919, 0x70c9: 0xf0001919, 0x70ca: 0xf0001919, 0x70cb: 0xf0001919, - 0x70cc: 0xf0001919, 0x70cd: 0xf0001919, 0x70ce: 0xe0002511, 0x70cf: 0xf0001919, - 0x70d0: 0xe000251a, 0x70d1: 0xf0001919, 0x70d2: 0xf0001919, 0x70d3: 0xf0001919, - 0x70d4: 0xf0001919, 0x70d5: 0xe0002520, 0x70d6: 0xf0001919, 0x70d7: 0xe000155c, - 0x70d8: 0xe0001562, 0x70d9: 0xe0001568, 0x70da: 0xe0001571, 0x70db: 0xe0001580, - 0x70dc: 0xf0001717, 0x70dd: 0xf0001717, 0x70de: 0xf0001717, 0x70df: 0xf0001717, - 0x70e0: 0xf0001717, 0x70e1: 0xf0001717, 0x70e2: 0xf0001717, 0x70e3: 0xf0001717, - 0x70e4: 0xf0001717, 0x70e5: 0xf0001717, 0x70e6: 0xf0001717, 0x70e7: 0xf0001717, - 0x70e8: 0xf0001717, 0x70e9: 0xf0001717, 0x70ea: 0xf0001717, 0x70eb: 0xf0001717, - 0x70ec: 0xf0001717, 0x70ed: 0xf0001717, 0x70ee: 0xf0001717, 0x70ef: 0xf0001717, - 0x70f0: 0xf0001717, 0x70f1: 0xf0001717, 0x70f2: 0xf0001717, 0x70f3: 0xf0001717, - 0x70f4: 0xf0001717, 0x70f5: 0xf0001717, 0x70f6: 0xf0001717, 0x70f7: 0xf0001717, - 0x70f8: 0xf0001717, 0x70f9: 0xf0001717, 0x70fa: 0xf0001717, 0x70fb: 0xf0001717, - 0x70fc: 0xf0001717, 0x70fd: 0xf0001717, 0x70fe: 0xf0001717, 0x70ff: 0xf0001717, - // Block 0x1c4, offset 0x7100 - 0x7100: 0xf0001717, 0x7101: 0xf0001717, 0x7102: 0xf0001717, 0x7103: 0xf0001717, - 0x7104: 0xf0001717, 0x7105: 0xf0001717, 0x7106: 0xf0001717, 0x7107: 0xf0001717, - 0x7108: 0xf0001717, 0x7109: 0xf0001717, 0x710a: 0xf0001717, 0x710b: 0xf0001717, - 0x710c: 0xf0001717, 0x710d: 0xf0001717, 0x710e: 0xf0001717, 0x710f: 0xf0001717, - 0x7110: 0xf0001717, 0x7111: 0xf0001717, 0x7112: 0xf0001717, 0x7113: 0xf0001717, - 0x7114: 0xf0001717, 0x7115: 0xf0001717, 0x7116: 0xf0001717, 0x7117: 0xf0001717, - 0x7118: 0xf0001717, 0x7119: 0xf0001717, 0x711a: 0xf0001717, 0x711b: 0xf0001717, - 0x711c: 0xf0001717, 0x711d: 0xf0001717, 0x711e: 0xf0001717, 0x711f: 0xe0001574, - 0x7120: 0xe0001583, 0x7121: 0xf0001818, 0x7122: 0xf0001818, 0x7123: 0xf0001818, - 0x7124: 0xf0001818, 0x7125: 0xf0001818, 0x7126: 0xf0001818, 0x7127: 0xf0001818, - 0x7128: 0xf0001818, 0x7129: 0xf0001818, 0x712a: 0xf0001818, 0x712b: 0xf0001818, - 0x712c: 0xf0001818, 0x712d: 0xf0001818, 0x712e: 0xf0001818, 0x712f: 0xf0001818, - 0x7130: 0xf0001818, 0x7131: 0xf0001818, 0x7132: 0xe000249f, 0x7133: 0xe00024a2, - 0x7134: 0xe00024a5, 0x7135: 0xe00024e7, 0x7136: 0xf0001a1a, 0x7137: 0xe00024ed, - 0x7138: 0xf0001a1a, 0x7139: 0xe00024f3, 0x713a: 0xf0001a1a, 0x713b: 0xe00024cf, - 0x713c: 0xf0001a1a, 0x713d: 0xe00024d5, 0x713e: 0xf0001a1a, 0x713f: 0xe00024c3, - // Block 0x1c5, offset 0x7140 - 0x7140: 0xf0001a1a, 0x7141: 0xe00024bd, 0x7142: 0xf0001a1a, 0x7143: 0xe00024c9, - 0x7144: 0xf0001a1a, 0x7145: 0xe00024db, 0x7146: 0xf0001a1a, 0x7147: 0xe00024e1, - 0x7148: 0xf0001a1a, 0x7149: 0xf0001a1a, 0x714a: 0xf0001a1a, 0x714b: 0xf0001a1a, - 0x714c: 0xf0001a1a, 0x714d: 0xf0001a1a, 0x714e: 0xf0001a1a, 0x714f: 0xf0001a1a, - 0x7150: 0xf0001a1a, 0x7151: 0xe00024e4, 0x7152: 0xf0001919, 0x7153: 0xe00024ea, - 0x7154: 0xf0001919, 0x7155: 0xe00024f0, 0x7156: 0xf0001919, 0x7157: 0xe00024cc, - 0x7158: 0xf0001919, 0x7159: 0xe00024d2, 0x715a: 0xf0001919, 0x715b: 0xe00024c0, - 0x715c: 0xf0001919, 0x715d: 0xe00024ba, 0x715e: 0xf0001919, 0x715f: 0xe00024c6, - 0x7160: 0xf0001919, 0x7161: 0xe00024d8, 0x7162: 0xf0001919, 0x7163: 0xe00024de, - 0x7164: 0xf0001919, 0x7165: 0xf0001919, 0x7166: 0xf0001919, 0x7167: 0xf0001919, - 0x7168: 0xf0001919, 0x7169: 0xf0001919, 0x716a: 0xf0001919, 0x716b: 0xf0001919, - 0x716c: 0xf0001919, 0x716d: 0xf0001717, 0x716e: 0xf0001717, 0x716f: 0xf0001717, - 0x7170: 0xf0001717, 0x7171: 0xf0001717, 0x7172: 0xf0001717, 0x7173: 0xf0001717, - 0x7174: 0xf0001818, 0x7175: 0xf0001818, 0x7176: 0xf0001818, 0x7177: 0xf0001818, - 0x7178: 0xf0001818, 0x7179: 0xf0001818, 0x717a: 0xf0001818, 0x717b: 0xf0001818, - 0x717c: 0xf0001919, 0x717d: 0xf0001a1a, 0x717e: 0x4004c020, 0x717f: 0x4004c220, - // Block 0x1c6, offset 0x7180 - 0x7180: 0x00391c9a, 0x7181: 0x00393aa4, 0x7182: 0x00393aa3, 0x7183: 0x00393ac4, - 0x7184: 0x00393ac3, 0x7185: 0x003a76a4, 0x7186: 0x003a76a3, 0x7187: 0x00393ae4, - 0x7188: 0x00393ae3, 0x7189: 0x003a92a6, 0x718a: 0x003a92a5, 0x718b: 0x003a92a3, - 0x718c: 0x003a92a4, 0x718d: 0x00393884, 0x718e: 0x00393883, 0x718f: 0x00393c9a, - 0x7190: 0x00393c99, 0x7191: 0x00393c97, 0x7192: 0x00393c98, 0x7193: 0x003a6aa4, - 0x7194: 0x003a6aa3, 0x7195: 0x0039569a, 0x7196: 0x00395699, 0x7197: 0x00395697, - 0x7198: 0x00395698, 0x7199: 0x0039589a, 0x719a: 0x00395899, 0x719b: 0x00395897, - 0x719c: 0x00395898, 0x719d: 0x0039649a, 0x719e: 0x00396499, 0x719f: 0x00396497, - 0x71a0: 0x00396498, 0x71a1: 0x0039729a, 0x71a2: 0x00397299, 0x71a3: 0x00397297, - 0x71a4: 0x00397298, 0x71a5: 0x0039749a, 0x71a6: 0x00397499, 0x71a7: 0x00397497, - 0x71a8: 0x00397498, 0x71a9: 0x0039889a, 0x71aa: 0x00398899, 0x71ab: 0x00398a9a, - 0x71ac: 0x00398a99, 0x71ad: 0x0039a49a, 0x71ae: 0x0039a499, 0x71af: 0x0039a69a, - 0x71b0: 0x0039a699, 0x71b1: 0x0039c69a, 0x71b2: 0x0039c699, 0x71b3: 0x0039c697, - 0x71b4: 0x0039c698, 0x71b5: 0x0039c89a, 0x71b6: 0x0039c899, 0x71b7: 0x0039c897, - 0x71b8: 0x0039c898, 0x71b9: 0x0039dc9a, 0x71ba: 0x0039dc99, 0x71bb: 0x0039dc97, - 0x71bc: 0x0039dc98, 0x71bd: 0x0039de9a, 0x71be: 0x0039de99, 0x71bf: 0x0039de97, - // Block 0x1c7, offset 0x71c0 - 0x71c0: 0x0039de98, 0x71c1: 0x0039e69a, 0x71c2: 0x0039e699, 0x71c3: 0x0039e697, - 0x71c4: 0x0039e698, 0x71c5: 0x0039e89a, 0x71c6: 0x0039e899, 0x71c7: 0x0039e897, - 0x71c8: 0x0039e898, 0x71c9: 0x0039ee9a, 0x71ca: 0x0039ee99, 0x71cb: 0x0039ee97, - 0x71cc: 0x0039ee98, 0x71cd: 0x0039f09a, 0x71ce: 0x0039f099, 0x71cf: 0x0039f097, - 0x71d0: 0x0039f098, 0x71d1: 0x0039fc9a, 0x71d2: 0x0039fc99, 0x71d3: 0x0039fc97, - 0x71d4: 0x0039fc98, 0x71d5: 0x003a129a, 0x71d6: 0x003a1299, 0x71d7: 0x003a1297, - 0x71d8: 0x003a1298, 0x71d9: 0x003a1a9a, 0x71da: 0x003a1a99, 0x71db: 0x003a1a97, - 0x71dc: 0x003a1a98, 0x71dd: 0x003a409a, 0x71de: 0x003a4099, 0x71df: 0x003a4097, - 0x71e0: 0x003a4098, 0x71e1: 0x003a4e9a, 0x71e2: 0x003a4e99, 0x71e3: 0x003a4e97, - 0x71e4: 0x003a4e98, 0x71e5: 0x003a569a, 0x71e6: 0x003a5699, 0x71e7: 0x003a5697, - 0x71e8: 0x003a5698, 0x71e9: 0x003a6886, 0x71ea: 0x003a6885, 0x71eb: 0x003a6883, - 0x71ec: 0x003a6884, 0x71ed: 0x003a7485, 0x71ee: 0x003a7484, 0x71ef: 0x003a92c6, - 0x71f0: 0x003a92c5, 0x71f1: 0x003a9087, 0x71f2: 0x003a9086, 0x71f3: 0x003a9084, - 0x71f4: 0x003a9085, 0x71f5: 0xe0001732, 0x71f6: 0xe000172f, 0x71f7: 0xe0001738, - 0x71f8: 0xe0001735, 0x71f9: 0xe000173e, 0x71fa: 0xe000173b, 0x71fb: 0xf0001a1a, - 0x71fc: 0xf0001919, 0x71ff: 0xa0000000, - // Block 0x1c8, offset 0x7200 - 0x7200: 0xa0000000, 0x7201: 0xa0000000, 0x7202: 0xa0000000, 0x7203: 0xa0000000, - 0x7204: 0xa0000000, 0x7205: 0xa0000000, 0x7206: 0xa0000000, 0x7207: 0xa0000000, - 0x7208: 0xa0000000, 0x7209: 0x40020020, 0x720a: 0x40020220, 0x720b: 0x40020420, - 0x720c: 0x40020620, 0x720d: 0x40020820, 0x720e: 0xa0000000, 0x720f: 0xa0000000, - 0x7210: 0xa0000000, 0x7211: 0xa0000000, 0x7212: 0xa0000000, 0x7213: 0xa0000000, - 0x7214: 0xa0000000, 0x7215: 0xa0000000, 0x7216: 0xa0000000, 0x7217: 0xa0000000, - 0x7218: 0xa0000000, 0x7219: 0xa0000000, 0x721a: 0xa0000000, 0x721b: 0xa0000000, - 0x721c: 0xa0000000, 0x721d: 0xa0000000, 0x721e: 0xa0000000, 0x721f: 0xa0000000, - 0x7220: 0x40021220, 0x7221: 0x4002ba20, 0x7222: 0x4003e020, 0x7223: 0x4004ea20, - 0x7224: 0x4027de20, 0x7225: 0x4004ec20, 0x7226: 0x4004e620, 0x7227: 0x4003d220, - 0x7228: 0x4003f420, 0x7229: 0x4003f620, 0x722a: 0x4004d820, 0x722b: 0x40093820, - 0x722c: 0x40024020, 0x722d: 0x40021a20, 0x722e: 0x4002e420, 0x722f: 0x4004e220, - 0x7230: 0x4029cc20, 0x7231: 0x4029ce20, 0x7232: 0x4029d020, 0x7233: 0x4029d220, - 0x7234: 0x4029d420, 0x7235: 0x4029d620, 0x7236: 0x4029d820, 0x7237: 0x4029da20, - 0x7238: 0x4029dc20, 0x7239: 0x4029de20, 0x723a: 0x40026c20, 0x723b: 0x40026220, - 0x723c: 0x40094020, 0x723d: 0xc32f0851, 0x723e: 0x40094420, 0x723f: 0x4002c420, - // Block 0x1c9, offset 0x7240 - 0x7240: 0x4004d620, 0x7241: 0x002bde88, 0x7242: 0x002c0a88, 0x7243: 0xc33b0871, - 0x7244: 0x002c6288, 0x7245: 0x002c9888, 0x7246: 0x002d0888, 0x7247: 0xc33f00d1, - 0x7248: 0x002d6888, 0x7249: 0xc3410891, 0x724a: 0x002dcc88, 0x724b: 0x002dfe88, - 0x724c: 0xc0030002, 0x724d: 0x002e8288, 0x724e: 0x002e9e88, 0x724f: 0xc3450071, - 0x7250: 0x002f2c88, 0x7251: 0x002e0083, 0x7252: 0x002f7a88, 0x7253: 0xc3490871, - 0x7254: 0x00302c88, 0x7255: 0xc34d0071, 0x7256: 0x0030be88, 0x7257: 0x0030e288, - 0x7258: 0x002d6a83, 0x7259: 0x00310088, 0x725a: 0x00312a88, 0x725b: 0x4003f820, - 0x725c: 0x4004e420, 0x725d: 0x4003fa20, 0x725e: 0x40062420, 0x725f: 0x40021620, - 0x7260: 0x40061e20, 0x7261: 0x402bde20, 0x7262: 0x402c0a20, 0x7263: 0xc3390871, - 0x7264: 0x402c6220, 0x7265: 0x402c9820, 0x7266: 0x402d0820, 0x7267: 0xc33d00d1, - 0x7268: 0x402d6820, 0x7269: 0x402d9a20, 0x726a: 0x402dcc20, 0x726b: 0x402dfe20, - 0x726c: 0xc0000002, 0x726d: 0x402e8220, 0x726e: 0x402e9e20, 0x726f: 0xc3430071, - 0x7270: 0x402f2c20, 0x7271: 0x402e0020, 0x7272: 0x402f7a20, 0x7273: 0xc3470871, - 0x7274: 0x40302c20, 0x7275: 0xc34b0071, 0x7276: 0x4030be20, 0x7277: 0x4030e220, - 0x7278: 0x402d6a20, 0x7279: 0x40310020, 0x727a: 0x40312a20, 0x727b: 0x4003fc20, - 0x727c: 0x40094820, 0x727d: 0x4003fe20, 0x727e: 0x40094c20, 0x727f: 0xa0000000, - // Block 0x1ca, offset 0x7280 - 0x7280: 0xe00008f5, 0x7281: 0xe00008ef, 0x7282: 0xe0000921, 0x7283: 0xe0000969, - 0x7284: 0xe000095b, 0x7285: 0xe000094d, 0x7286: 0xe00009dd, 0x7287: 0x002c3c83, - 0x7288: 0xe0000ae8, 0x7289: 0xe0000ae2, 0x728a: 0xe0000af4, 0x728b: 0xe0000b20, - 0x728c: 0xe00025a2, 0x728d: 0xe000259f, 0x728e: 0xe00025a8, 0x728f: 0xe00025ae, - 0x7290: 0xe0000ab3, 0x7291: 0xe0000d63, 0x7292: 0xe0000d9a, 0x7293: 0xe0000d94, - 0x7294: 0xe0000da6, 0x7295: 0xe0000de6, 0x7296: 0x002ee483, 0x7297: 0x40093e20, - 0x7298: 0xe0000e12, 0x7299: 0xe0000fe1, 0x729a: 0xe0000fdb, 0x729b: 0xe0000fed, - 0x729c: 0x00306e83, 0x729d: 0xe0001102, 0x729e: 0x00318888, 0x729f: 0xe0000f7b, - 0x72a0: 0xe00008f2, 0x72a1: 0xe00008ec, 0x72a2: 0xe000091e, 0x72a3: 0xe0000966, - 0x72a4: 0xe0000958, 0x72a5: 0xe000094a, 0x72a6: 0xe00009d5, 0x72a7: 0x402c3c20, - 0x72a8: 0xe0000ae5, 0x72a9: 0xe0000adf, 0x72aa: 0xe0000af1, 0x72ab: 0xe0000b1d, - 0x72ac: 0xe0000c28, 0x72ad: 0xe0000c22, 0x72ae: 0xe0000c34, 0x72af: 0xe0000c40, - 0x72b0: 0xe0000aad, 0x72b1: 0xe0000d60, 0x72b2: 0xe0000d97, 0x72b3: 0xe0000d91, - 0x72b4: 0xe0000da3, 0x72b5: 0xe0000de3, 0x72b6: 0x402ee420, 0x72b7: 0x40093c20, - 0x72b8: 0xe0000e0f, 0x72b9: 0xe0000fde, 0x72ba: 0xe0000fd8, 0x72bb: 0xe0000fea, - 0x72bc: 0x40306e20, 0x72bd: 0xe00010ff, 0x72be: 0x40318820, 0x72bf: 0xe0001114, - // Block 0x1cb, offset 0x72c0 - 0x72c0: 0xe0000983, 0x72c1: 0xe0000980, 0x72c2: 0xe00008fb, 0x72c3: 0xe00008f8, - 0x72c4: 0xe000097d, 0x72c5: 0xe000097a, 0x72c6: 0xe0000a38, 0x72c7: 0xe0000a35, - 0x72c8: 0xe0000a3e, 0x72c9: 0xe0000a3b, 0x72ca: 0xe0000a4a, 0x72cb: 0xe0000a47, - 0x72cc: 0xe0000a44, 0x72cd: 0xe0000a41, 0x72ce: 0xe0000a86, 0x72cf: 0xe0000a83, - 0x72d0: 0xe0000aaa, 0x72d1: 0xe0000aa7, 0x72d2: 0xe0000b46, 0x72d3: 0xe0000b43, - 0x72d4: 0xe0000aee, 0x72d5: 0xe0000aeb, 0x72d6: 0xe0000b2c, 0x72d7: 0xe0000b29, - 0x72d8: 0xe0000b40, 0x72d9: 0xe0000b3d, 0x72da: 0xe0000b1a, 0x72db: 0xe0000b17, - 0x72dc: 0xe0000bb8, 0x72dd: 0xe0000bb5, 0x72de: 0x002d2483, 0x72df: 0x402d2420, - 0x72e0: 0xe0000bc4, 0x72e1: 0xe0000bc1, 0x72e2: 0xe0000bca, 0x72e3: 0xe0000bc7, - 0x72e4: 0xe0000bee, 0x72e5: 0xe0000beb, 0x72e6: 0xe0000c1b, 0x72e7: 0xe0000c18, - 0x72e8: 0xe00025b5, 0x72e9: 0xe0000c4e, 0x72ea: 0xe00025bb, 0x72eb: 0xe0000c5d, - 0x72ec: 0xe00025a5, 0x72ed: 0xe0000c2e, 0x72ee: 0xe00025b8, 0x72ef: 0xe0000c57, - 0x72f0: 0x002d9a83, 0x72f1: 0x402d9820, 0x72f2: 0xe00025d4, 0x72f3: 0xf0000404, - 0x72f4: 0xe0000c8a, 0x72f5: 0xe0000c87, 0x72f6: 0xe0000c9f, 0x72f7: 0xe0000c9c, - 0x72f8: 0x402f7220, 0x72f9: 0xe0000ccc, 0x72fa: 0xe0000cc9, 0x72fb: 0xe0000cd8, - 0x72fc: 0xe0000cd5, 0x72fd: 0xe0000cd2, 0x72fe: 0xe0000ccf, 0x72ff: 0xe0000d04, - // Block 0x1cc, offset 0x7300 - 0x7300: 0xe0000cfe, 0x7301: 0xe0000cf8, 0x7302: 0xe0000cf5, 0x7303: 0xe0000d51, - 0x7304: 0xe0000d4e, 0x7305: 0xe0000d6f, 0x7306: 0xe0000d6c, 0x7307: 0xe0000d5d, - 0x7308: 0xe0000d5a, 0x7309: 0xf0000404, 0x730a: 0x002eda88, 0x730b: 0x402eda20, - 0x730c: 0xe0000e2e, 0x730d: 0xe0000e2b, 0x730e: 0xe0000da0, 0x730f: 0xe0000d9d, - 0x7310: 0xe0000de0, 0x7311: 0xe0000ddd, 0x7312: 0xe0000e93, 0x7313: 0xe0000e8f, - 0x7314: 0xe0000eca, 0x7315: 0xe0000ec7, 0x7316: 0xe0000edc, 0x7317: 0xe0000ed9, - 0x7318: 0xe0000ed0, 0x7319: 0xe0000ecd, 0x731a: 0xe0000f1f, 0x731b: 0xe0000f1c, - 0x731c: 0xe0000f2d, 0x731d: 0xe0000f2a, 0x731e: 0x002fe883, 0x731f: 0x402fe820, - 0x7320: 0xe0000f33, 0x7321: 0xe0000f30, 0x7322: 0xe0000f99, 0x7323: 0xe0000f96, - 0x7324: 0xe0000f8a, 0x7325: 0xe0000f87, 0x7326: 0x00303688, 0x7327: 0x40303620, - 0x7328: 0xe000102b, 0x7329: 0xe0001028, 0x732a: 0xe000103f, 0x732b: 0xe000103c, - 0x732c: 0xe0000fe7, 0x732d: 0xe0000fe4, 0x732e: 0xe0000ff9, 0x732f: 0xe0000ff6, - 0x7330: 0xe0001025, 0x7331: 0xe0001022, 0x7332: 0xe0001039, 0x7333: 0xe0001036, - 0x7334: 0xe00010d8, 0x7335: 0xe00010d5, 0x7336: 0xe000110e, 0x7337: 0xe000110b, - 0x7338: 0xe0001117, 0x7339: 0xe000113b, 0x733a: 0xe0001138, 0x733b: 0xe000114d, - 0x733c: 0xe000114a, 0x733d: 0xe0001147, 0x733e: 0xe0001144, 0x733f: 0xe0000f64, - // Block 0x1cd, offset 0x7340 - 0x7340: 0x402c1a20, 0x7341: 0x002c2a88, 0x7342: 0x002c3288, 0x7343: 0x402c3220, - 0x7344: 0x0031c488, 0x7345: 0x4031c420, 0x7346: 0x002efa88, 0x7347: 0x002c4e88, - 0x7348: 0x402c4e20, 0x7349: 0x002c7288, 0x734a: 0x002c7a88, 0x734b: 0x002c8488, - 0x734c: 0x402c8420, 0x734d: 0xe000115c, 0x734e: 0x002cae88, 0x734f: 0x002c9a83, - 0x7350: 0x002cc288, 0x7351: 0x002d1688, 0x7352: 0x402d1620, 0x7353: 0x002d4488, - 0x7354: 0x002d5888, 0x7355: 0x402d7820, 0x7356: 0x002dc288, 0x7357: 0x002db688, - 0x7358: 0x002e0a88, 0x7359: 0x402e0a20, 0x735a: 0x402e3820, 0x735b: 0x402e7220, - 0x735c: 0x0030a088, 0x735d: 0x002eb488, 0x735e: 0x402ebc20, 0x735f: 0x002f1088, - 0x7360: 0xe0000e56, 0x7361: 0xe0000e53, 0x7362: 0x002d6088, 0x7363: 0x402d6020, - 0x7364: 0x002f3e88, 0x7365: 0x402f3e20, 0x7366: 0x002f8288, 0x7367: 0x0031b488, - 0x7368: 0x4031b420, 0x7369: 0x00300888, 0x736a: 0x40301220, 0x736b: 0x40304220, - 0x736c: 0x00304a88, 0x736d: 0x40304a20, 0x736e: 0x00305288, 0x736f: 0xe000105f, - 0x7370: 0xe000105c, 0x7371: 0x0030b488, 0x7372: 0x0030cc88, 0x7373: 0x00311888, - 0x7374: 0x40311820, 0x7375: 0x00313488, 0x7376: 0x40313420, 0x7377: 0x00316488, - 0x7378: 0x00316e88, 0x7379: 0x40316e20, 0x737a: 0x40317820, 0x737b: 0x4031a620, - 0x737c: 0x0031bc88, 0x737d: 0x4031bc20, 0x737e: 0xe0000fc9, 0x737f: 0x40319420, - // Block 0x1ce, offset 0x7380 - 0x7380: 0x40321220, 0x7381: 0x40321a20, 0x7382: 0x40322220, 0x7383: 0x40322a20, - 0x7384: 0xe0000ad5, 0x7385: 0xe0000ad1, 0x7386: 0xe0000acd, 0x7387: 0xf0000a0a, - 0x7388: 0xf000040a, 0x7389: 0xf0000404, 0x738a: 0xf0000a0a, 0x738b: 0xf000040a, - 0x738c: 0xf0000404, 0x738d: 0xe0000947, 0x738e: 0xe0000944, 0x738f: 0xe00025ab, - 0x7390: 0xe0000c3a, 0x7391: 0xe0000dcc, 0x7392: 0xe0000dc9, 0x7393: 0xe0000ff3, - 0x7394: 0xe0000ff0, 0x7395: 0xe0002607, 0x7396: 0xe0002604, 0x7397: 0xe00025f5, - 0x7398: 0xe00025f2, 0x7399: 0xe0002601, 0x739a: 0xe00025fe, 0x739b: 0xe00025fb, - 0x739c: 0xe00025f8, 0x739d: 0x402cae20, 0x739e: 0xe0000962, 0x739f: 0xe000095e, - 0x73a0: 0xe0000976, 0x73a1: 0xe0000972, 0x73a2: 0xe00009f4, 0x73a3: 0xe00009ef, - 0x73a4: 0x002d3a88, 0x73a5: 0x402d3a20, 0x73a6: 0xe0000bbe, 0x73a7: 0xe0000bbb, - 0x73a8: 0xe0000c99, 0x73a9: 0xe0000c96, 0x73aa: 0xe0000e20, 0x73ab: 0xe0000e1d, - 0x73ac: 0xe0000e27, 0x73ad: 0xe0000e23, 0x73ae: 0xe0001162, 0x73af: 0xe000115f, - 0x73b0: 0xe0000c8d, 0x73b1: 0xf0000a0a, 0x73b2: 0xf000040a, 0x73b3: 0xf0000404, - 0x73b4: 0xe0000bac, 0x73b5: 0xe0000ba9, 0x73b6: 0x002d7888, 0x73b7: 0x00319488, - 0x73b8: 0xe0000d57, 0x73b9: 0xe0000d54, 0x73ba: 0xe0000954, 0x73bb: 0xe0000950, - 0x73bc: 0xe00009ea, 0x73bd: 0xe00009e5, 0x73be: 0xe0000e19, 0x73bf: 0xe0000e15, - // Block 0x1cf, offset 0x73c0 - 0x73c0: 0xe000098f, 0x73c1: 0xe000098c, 0x73c2: 0xe0000995, 0x73c3: 0xe0000992, - 0x73c4: 0xe0000b62, 0x73c5: 0xe0000b5f, 0x73c6: 0xe0000b68, 0x73c7: 0xe0000b65, - 0x73c8: 0xe00025c1, 0x73c9: 0xe0000c69, 0x73ca: 0xe00025c4, 0x73cb: 0xe0000c6f, - 0x73cc: 0xe0000e4a, 0x73cd: 0xe0000e47, 0x73ce: 0xe0000e50, 0x73cf: 0xe0000e4d, - 0x73d0: 0xe0000ee8, 0x73d1: 0xe0000ee5, 0x73d2: 0xe0000eee, 0x73d3: 0xe0000eeb, - 0x73d4: 0xe0001053, 0x73d5: 0xe0001050, 0x73d6: 0xe0001059, 0x73d7: 0xe0001056, - 0x73d8: 0xe0000f61, 0x73d9: 0xe0000f5e, 0x73da: 0xe0000fa5, 0x73db: 0xe0000fa2, - 0x73dc: 0x00312288, 0x73dd: 0x40312220, 0x73de: 0xe0000bf4, 0x73df: 0xe0000bf1, - 0x73e0: 0x002ebc88, 0x73e1: 0x402c8c20, 0x73e2: 0x002f2288, 0x73e3: 0x402f2220, - 0x73e4: 0x00314088, 0x73e5: 0x40314020, 0x73e6: 0xe000096f, 0x73e7: 0xe000096c, - 0x73e8: 0xe0000b32, 0x73e9: 0xe0000b2f, 0x73ea: 0xe00025ef, 0x73eb: 0xe00025ec, - 0x73ec: 0xe0000dfd, 0x73ed: 0xe0000df9, 0x73ee: 0xe0000e04, 0x73ef: 0xe0000e01, - 0x73f0: 0xe0000e0b, 0x73f1: 0xe0000e07, 0x73f2: 0xe0001129, 0x73f3: 0xe0001126, - 0x73f4: 0x402e5e20, 0x73f5: 0x402ed020, 0x73f6: 0x40305a20, 0x73f7: 0x402dd420, - 0x73f8: 0xe0000abf, 0x73f9: 0xe0000ec4, 0x73fa: 0x002be888, 0x73fb: 0x002c4488, - 0x73fc: 0x402c4420, 0x73fd: 0x002e3888, 0x73fe: 0x00303e88, 0x73ff: 0x402ffc20, - // Block 0x1d0, offset 0x7400 - 0x7400: 0x40315820, 0x7401: 0x0031d488, 0x7402: 0x4031d420, 0x7403: 0x002c1a88, - 0x7404: 0x00307c88, 0x7405: 0x0030da88, 0x7406: 0x002ca288, 0x7407: 0x402ca220, - 0x7408: 0x002dde88, 0x7409: 0x402dde20, 0x740a: 0x002f6a88, 0x740b: 0x402f6a20, - 0x740c: 0x002f8e88, 0x740d: 0x402f8e20, 0x740e: 0x00311088, 0x740f: 0x40311020, - 0x7410: 0x402bf020, 0x7411: 0x402bf820, 0x7412: 0x402c0220, 0x7413: 0x402c2a20, - 0x7414: 0x402efa20, 0x7415: 0x402c5620, 0x7416: 0x402c7220, 0x7417: 0x402c7a20, - 0x7418: 0x402ccc20, 0x7419: 0x402c9a20, 0x741a: 0x402cd420, 0x741b: 0x402cc220, - 0x741c: 0x402cdc20, 0x741d: 0x402ce820, 0x741e: 0x402cf020, 0x741f: 0x402dee20, - 0x7420: 0x402d4420, 0x7421: 0x402d2a20, 0x7422: 0x402d3220, 0x7423: 0x402d5820, - 0x7424: 0x402d0020, 0x7425: 0x40308820, 0x7426: 0x402d8020, 0x7427: 0x402d8e20, - 0x7428: 0x402db620, 0x7429: 0x402dc220, 0x742a: 0x402daa20, 0x742b: 0x402e4220, - 0x742c: 0x402e4a20, 0x742d: 0x402e5420, 0x742e: 0x402e6820, 0x742f: 0x4030a020, - 0x7430: 0x4030ac20, 0x7431: 0x402e9020, 0x7432: 0x402eb420, 0x7433: 0x402ec820, - 0x7434: 0x402ea620, 0x7435: 0x402f1020, 0x7436: 0x402eee20, 0x7437: 0x402f1a20, - 0x7438: 0x402f4c20, 0x7439: 0x402f9820, 0x743a: 0x402fa220, 0x743b: 0x402fac20, - 0x743c: 0x402fb620, 0x743d: 0x402fbe20, 0x743e: 0x402fc620, 0x743f: 0x402fd020, - // Block 0x1d1, offset 0x7440 - 0x7440: 0xe00009b1, 0x7441: 0xe00009ae, 0x7442: 0xe0000a22, 0x7443: 0xe0000a1f, - 0x7444: 0xe0000a28, 0x7445: 0xe0000a25, 0x7446: 0xe0000a2e, 0x7447: 0xe0000a2b, - 0x7448: 0xe0002590, 0x7449: 0xe000258d, 0x744a: 0xe0000a8c, 0x744b: 0xe0000a89, - 0x744c: 0xe0000a98, 0x744d: 0xe0000a95, 0x744e: 0xe0000aa4, 0x744f: 0xe0000aa1, - 0x7450: 0xe0000a92, 0x7451: 0xe0000a8f, 0x7452: 0xe0000a9e, 0x7453: 0xe0000a9b, - 0x7454: 0xe0000b55, 0x7455: 0xe0000b51, 0x7456: 0xe0000b4d, 0x7457: 0xe0000b49, - 0x7458: 0xe0000b7c, 0x7459: 0xe0000b79, 0x745a: 0xe0000b82, 0x745b: 0xe0000b7f, - 0x745c: 0xe0000b39, 0x745d: 0xe0000b35, 0x745e: 0xe0000b8c, 0x745f: 0xe0000b89, - 0x7460: 0xe0000bd0, 0x7461: 0xe0000bcd, 0x7462: 0xe0000c00, 0x7463: 0xe0000bfd, - 0x7464: 0xe0000c0c, 0x7465: 0xe0000c09, 0x7466: 0xe0000bfa, 0x7467: 0xe0000bf7, - 0x7468: 0xe0000c06, 0x7469: 0xe0000c03, 0x746a: 0xe0000c12, 0x746b: 0xe0000c0f, - 0x746c: 0xe00025ca, 0x746d: 0xe0000c7b, 0x746e: 0xe00025b1, 0x746f: 0xe0000c46, - 0x7470: 0xe0000c93, 0x7471: 0xe0000c90, 0x7472: 0xe0000cab, 0x7473: 0xe0000ca8, - 0x7474: 0xe0000cb1, 0x7475: 0xe0000cae, 0x7476: 0xe0000cde, 0x7477: 0xe0000cdb, - 0x7478: 0xe0000ce5, 0x7479: 0xe0000ce1, 0x747a: 0xe0000cf2, 0x747b: 0xe0000cef, - 0x747c: 0xe0000cec, 0x747d: 0xe0000ce9, 0x747e: 0xe0000d1e, 0x747f: 0xe0000d1b, - // Block 0x1d2, offset 0x7480 - 0x7480: 0xe0000d24, 0x7481: 0xe0000d21, 0x7482: 0xe0000d2a, 0x7483: 0xe0000d27, - 0x7484: 0xe0000d69, 0x7485: 0xe0000d66, 0x7486: 0xe0000d7b, 0x7487: 0xe0000d78, - 0x7488: 0xe0000d87, 0x7489: 0xe0000d84, 0x748a: 0xe0000d81, 0x748b: 0xe0000d7e, - 0x748c: 0xe0000ded, 0x748d: 0xe0000de9, 0x748e: 0xe00025e9, 0x748f: 0xe00025e6, - 0x7490: 0xe0000e3d, 0x7491: 0xe0000e39, 0x7492: 0xe0000e35, 0x7493: 0xe0000e31, - 0x7494: 0xe0000ea7, 0x7495: 0xe0000ea4, 0x7496: 0xe0000ead, 0x7497: 0xe0000eaa, - 0x7498: 0xe0000ed6, 0x7499: 0xe0000ed3, 0x749a: 0xe0000ef4, 0x749b: 0xe0000ef1, - 0x749c: 0xe0000efb, 0x749d: 0xe0000ef7, 0x749e: 0xe0000f02, 0x749f: 0xe0000eff, - 0x74a0: 0xe0000f41, 0x74a1: 0xe0000f3e, 0x74a2: 0xe0000f53, 0x74a3: 0xe0000f50, - 0x74a4: 0xe0000f26, 0x74a5: 0xe0000f22, 0x74a6: 0xe0000f3a, 0x74a7: 0xe0000f36, - 0x74a8: 0xe0000f5a, 0x74a9: 0xe0000f56, 0x74aa: 0xe0000f93, 0x74ab: 0xe0000f90, - 0x74ac: 0xe0000f9f, 0x74ad: 0xe0000f9c, 0x74ae: 0xe0000fb1, 0x74af: 0xe0000fae, - 0x74b0: 0xe0000fab, 0x74b1: 0xe0000fa8, 0x74b2: 0xe0001093, 0x74b3: 0xe0001090, - 0x74b4: 0xe000109f, 0x74b5: 0xe000109c, 0x74b6: 0xe0001099, 0x74b7: 0xe0001096, - 0x74b8: 0xe0001032, 0x74b9: 0xe000102e, 0x74ba: 0xe0002607, 0x74bb: 0xe0002604, - 0x74bc: 0xe00010a9, 0x74bd: 0xe00010a6, 0x74be: 0xe00010af, 0x74bf: 0xe00010ac, - // Block 0x1d3, offset 0x74c0 - 0x74c0: 0xe00010d2, 0x74c1: 0xe00010cf, 0x74c2: 0xe00010cc, 0x74c3: 0xe00010c9, - 0x74c4: 0xe00010e1, 0x74c5: 0xe00010de, 0x74c6: 0xe00010e7, 0x74c7: 0xe00010e4, - 0x74c8: 0xe00010ed, 0x74c9: 0xe00010ea, 0x74ca: 0xe000259c, 0x74cb: 0xe0002599, - 0x74cc: 0xe0002596, 0x74cd: 0xe0002593, 0x74ce: 0xe0001123, 0x74cf: 0xe0001120, - 0x74d0: 0xe0001141, 0x74d1: 0xe000113e, 0x74d2: 0xe0001153, 0x74d3: 0xe0001150, - 0x74d4: 0xe0001159, 0x74d5: 0xe0001156, 0x74d6: 0xe0000c15, 0x74d7: 0xe0000f8d, - 0x74d8: 0xe00010db, 0x74d9: 0xe0001111, 0x74da: 0xf0000404, 0x74db: 0xe0000f70, - 0x74dc: 0x40300420, 0x74dd: 0x40300620, 0x74de: 0xe0000f7f, 0x74df: 0x402c9620, - 0x74e0: 0xe000099b, 0x74e1: 0xe0000998, 0x74e2: 0xe0000989, 0x74e3: 0xe0000986, - 0x74e4: 0xe0000928, 0x74e5: 0xe0000924, 0x74e6: 0xe0000930, 0x74e7: 0xe000092c, - 0x74e8: 0xe0000940, 0x74e9: 0xe000093c, 0x74ea: 0xe0000938, 0x74eb: 0xe0000934, - 0x74ec: 0xe00009aa, 0x74ed: 0xe00009a6, 0x74ee: 0xe0000902, 0x74ef: 0xe00008fe, - 0x74f0: 0xe000090a, 0x74f1: 0xe0000906, 0x74f2: 0xe000091a, 0x74f3: 0xe0000916, - 0x74f4: 0xe0000912, 0x74f5: 0xe000090e, 0x74f6: 0xe00009a2, 0x74f7: 0xe000099e, - 0x74f8: 0xe0000b6e, 0x74f9: 0xe0000b6b, 0x74fa: 0xe0000b5c, 0x74fb: 0xe0000b59, - 0x74fc: 0xe0000b26, 0x74fd: 0xe0000b23, 0x74fe: 0xe0000afb, 0x74ff: 0xe0000af7, - // Block 0x1d4, offset 0x7500 - 0x7500: 0xe0000b03, 0x7501: 0xe0000aff, 0x7502: 0xe0000b13, 0x7503: 0xe0000b0f, - 0x7504: 0xe0000b0b, 0x7505: 0xe0000b07, 0x7506: 0xe0000b75, 0x7507: 0xe0000b71, - 0x7508: 0xe00025be, 0x7509: 0xe0000c63, 0x750a: 0xe00025c7, 0x750b: 0xe0000c75, - 0x750c: 0xe0000e84, 0x750d: 0xe0000e81, 0x750e: 0xe0000e44, 0x750f: 0xe0000e41, - 0x7510: 0xe0000dad, 0x7511: 0xe0000da9, 0x7512: 0xe0000db5, 0x7513: 0xe0000db1, - 0x7514: 0xe0000dc5, 0x7515: 0xe0000dc1, 0x7516: 0xe0000dbd, 0x7517: 0xe0000db9, - 0x7518: 0xe0000e8b, 0x7519: 0xe0000e87, 0x751a: 0xe0000e5d, 0x751b: 0xe0000e59, - 0x751c: 0xe0000e65, 0x751d: 0xe0000e61, 0x751e: 0xe0000e75, 0x751f: 0xe0000e71, - 0x7520: 0xe0000e6d, 0x7521: 0xe0000e69, 0x7522: 0xe0000e7d, 0x7523: 0xe0000e79, - 0x7524: 0xe000108d, 0x7525: 0xe000108a, 0x7526: 0xe000104d, 0x7527: 0xe000104a, - 0x7528: 0xe0001066, 0x7529: 0xe0001062, 0x752a: 0xe000106e, 0x752b: 0xe000106a, - 0x752c: 0xe000107e, 0x752d: 0xe000107a, 0x752e: 0xe0001076, 0x752f: 0xe0001072, - 0x7530: 0xe0001086, 0x7531: 0xe0001082, 0x7532: 0xe0001108, 0x7533: 0xe0001105, - 0x7534: 0xe0001135, 0x7535: 0xe0001132, 0x7536: 0xe000112f, 0x7537: 0xe000112c, - 0x7538: 0xe000111d, 0x7539: 0xe000111a, 0x753a: 0xe0000d0a, 0x753b: 0xe0000d07, - 0x753c: 0x0030d888, 0x753d: 0x4030d820, 0x753e: 0x00312088, 0x753f: 0x40312020, - // Block 0x1d5, offset 0x7540 - 0x7540: 0x00093685, 0x7541: 0x40083620, 0x7542: 0x40083820, 0x7543: 0x40083a20, - 0x7544: 0x40083c20, 0x7545: 0x002c628b, 0x7546: 0x002c6285, 0x7547: 0x002c9885, - 0x7548: 0x002d9a85, 0x7549: 0x002dcc85, 0x754a: 0x40083e20, 0x754b: 0x400a6e20, - 0x754c: 0x40084020, 0x754d: 0xe00009c4, 0x754e: 0x402d1e20, 0x754f: 0x40084220, - 0x7550: 0xe00002cb, 0x7551: 0xe00002d3, 0x7552: 0xe00002b2, 0x7553: 0xe00002bb, - 0x7554: 0xe00003cd, 0x7555: 0xe00002c3, 0x7556: 0xe00003d1, 0x7557: 0xe00004ab, - 0x7558: 0xe0000579, 0x7559: 0xe00002c7, 0x755a: 0xe0000640, 0x755b: 0xe00002cf, - 0x755c: 0xe00004af, 0x755d: 0xe0000644, 0x755e: 0xe0000798, 0x755f: 0xf0001e1e, - 0x7560: 0x002d9a8a, 0x7561: 0xe00025cd, 0x7562: 0xe00025d0, 0x7563: 0xe00025da, - 0x7564: 0x0030be8a, 0x7565: 0xe000260a, 0x7566: 0xe000260d, 0x7567: 0xe00010bb, - 0x7568: 0xe00025e0, 0x7569: 0x0030f68a, 0x756a: 0xe0002614, 0x756b: 0xe000261b, - 0x756c: 0x002e228a, 0x756d: 0x002c3a8a, 0x756e: 0x002c628a, 0x756f: 0x002e828a, - 0x7570: 0x002d9a84, 0x7571: 0xf0001f04, 0x7572: 0xf0000404, 0x7573: 0xf0001f04, - 0x7574: 0x0030be84, 0x7575: 0xf0001f04, 0x7576: 0xf0000404, 0x7577: 0xe00010b6, - 0x7578: 0xe00025dd, 0x7579: 0x0030f684, 0x757a: 0xe0002611, 0x757b: 0xe0002617, - 0x757c: 0x002e2284, 0x757d: 0x002c3a84, 0x757e: 0x002c6284, 0x757f: 0x002e8284, - // Block 0x1d6, offset 0x7580 - 0x7580: 0xe0000024, 0x7581: 0xe0000029, 0x7582: 0xe000002e, 0x7583: 0xe0000033, - 0x7584: 0xe0000038, 0x7585: 0xe000003d, 0x7586: 0xe0000042, 0x7587: 0xe0000047, - 0x7588: 0xf0001f04, 0x7589: 0xf0001f04, 0x758a: 0xf0001f04, 0x758b: 0xf0001f04, - 0x758c: 0xf0001f04, 0x758d: 0xf0001f04, 0x758e: 0xf0001f04, 0x758f: 0xf0001f04, - 0x7590: 0xf0001f04, 0x7591: 0xf0000404, 0x7592: 0xf0000404, 0x7593: 0xf0000404, - 0x7594: 0xf0000404, 0x7595: 0xf0000404, 0x7596: 0xf0000404, 0x7597: 0xf0000404, - 0x7598: 0xf0000404, 0x7599: 0xf0000404, 0x759a: 0xf0000404, 0x759b: 0xf0000404, - 0x759c: 0xf0000404, 0x759d: 0xf0000404, 0x759e: 0xf0000404, 0x759f: 0xf0000404, - 0x75a0: 0xf0000404, 0x75a1: 0xf0000404, 0x75a2: 0xf0000404, 0x75a3: 0xf0000404, - 0x75a4: 0xf0000404, 0x75a5: 0xf0000404, 0x75a6: 0xf0000404, 0x75a7: 0xf0000404, - 0x75a8: 0xf0000404, 0x75a9: 0xf0000404, 0x75aa: 0xf0000404, 0x75ab: 0xf0000404, - 0x75ac: 0xe000257a, 0x75ad: 0xf0000404, 0x75ae: 0xf0000404, 0x75af: 0xf0000404, - 0x75b0: 0xf0000404, 0x75b1: 0xf0000404, 0x75b2: 0xf0000404, 0x75b3: 0xe0002582, - 0x75b4: 0xf0000404, 0x75b5: 0xf0000404, 0x75b6: 0x002bde8c, 0x75b7: 0x002c0a8c, - 0x75b8: 0x002c3a8c, 0x75b9: 0x002c628c, 0x75ba: 0x002c988c, 0x75bb: 0x002d088c, - 0x75bc: 0x002d228c, 0x75bd: 0x002d688c, 0x75be: 0x002d9a8c, 0x75bf: 0x002dcc8c, - // Block 0x1d7, offset 0x75c0 - 0x75c0: 0xe000230b, 0x75c1: 0xe00022f8, 0x75c2: 0xe00022fc, 0x75c3: 0xe0002311, - 0x75c4: 0xe0002316, 0x75c5: 0xe000231d, 0x75c6: 0xe0002321, 0x75c7: 0xe0002325, - 0x75c8: 0xe000232b, 0x75c9: 0xf0001c1c, 0x75ca: 0xe0002330, 0x75cb: 0xe000233c, - 0x75cc: 0xe0002340, 0x75cd: 0xe0002337, 0x75ce: 0xe0002346, 0x75cf: 0xe000234b, - 0x75d0: 0xe000234f, 0x75d1: 0xe0002353, 0x75d2: 0xf0001c1c, 0x75d3: 0xe000235e, - 0x75d4: 0xe0002358, 0x75d5: 0xf0001c1c, 0x75d6: 0xe0002363, 0x75d7: 0xe000236d, - 0x75d8: 0xf0001f04, 0x75d9: 0xf0001f04, 0x75da: 0xf0001f04, 0x75db: 0xf0001f04, - 0x75dc: 0xf0001f04, 0x75dd: 0xf0001f04, 0x75de: 0xf0001f04, 0x75df: 0xf0001f04, - 0x75e0: 0xf0001f04, 0x75e1: 0xf0001f04, 0x75e2: 0xf0000404, 0x75e3: 0xf0000404, - 0x75e4: 0xf0000404, 0x75e5: 0xf0000404, 0x75e6: 0xf0000404, 0x75e7: 0xf0000404, - 0x75e8: 0xf0000404, 0x75e9: 0xf0000404, 0x75ea: 0xf0000404, 0x75eb: 0xf0000404, - 0x75ec: 0xf0000404, 0x75ed: 0xf0000404, 0x75ee: 0xf0000404, 0x75ef: 0xf0000404, - 0x75f0: 0xf0000404, 0x75f1: 0xe0000c1e, 0x75f2: 0xf0001c1c, 0x75f3: 0xf0001d1d, - 0x75f4: 0xe0000a31, 0x75f5: 0xf0001d1c, 0x75f6: 0xf0001c1c, 0x75f7: 0xf0001c1c, - 0x75f8: 0xe0000ac2, 0x75f9: 0xe0000ac6, 0x75fa: 0xe00025d7, 0x75fb: 0xf0001c1c, - 0x75fc: 0xf0001c1c, 0x75fd: 0xf0001c1c, 0x75fe: 0xf0001c1c, 0x75ff: 0xe0002431, - // Block 0x1d8, offset 0x7600 - 0x7600: 0xf0001d1c, 0x7601: 0xf0001d1d, 0x7602: 0xe00009b7, 0x7603: 0xe000258a, - 0x7604: 0xf0001c1c, 0x7605: 0xf0001c1c, 0x7606: 0xe0000a66, 0x7607: 0xe0000a7a, - 0x7608: 0xf0001d1c, 0x7609: 0xf0001c1d, 0x760a: 0xf0001c1c, 0x760b: 0xf0001d1d, - 0x760c: 0xf0001c1c, 0x760d: 0xf0001d1d, 0x760e: 0xf0001d1d, 0x760f: 0xf0001c1c, - 0x7610: 0xf0001c1c, 0x7611: 0xf0001c1c, 0x7612: 0xe0000d0d, 0x7613: 0xe00025e3, - 0x7614: 0xf0001c1c, 0x7615: 0xe0000d3a, 0x7616: 0xe0000d46, 0x7617: 0xf0001d1d, - 0x7618: 0xe0000eb0, 0x7619: 0xe0000eb8, 0x761a: 0xf0001d1d, 0x761b: 0xf0001c1c, - 0x761c: 0xf0001c1d, 0x761d: 0xf0001c1d, 0x761e: 0xe00010b2, 0x761f: 0xe00009c8, - 0x7620: 0xf0001f04, 0x7621: 0xf0001f04, 0x7622: 0xf0001f04, 0x7623: 0xf0001f04, - 0x7624: 0xf0001f04, 0x7625: 0xf0001f04, 0x7626: 0xf0001f04, 0x7627: 0xf0001f04, - 0x7628: 0xf0001f04, 0x7629: 0xf0000404, 0x762a: 0xf0000404, 0x762b: 0xf0000404, - 0x762c: 0xf0000404, 0x762d: 0xf0000404, 0x762e: 0xf0000404, 0x762f: 0xf0000404, - 0x7630: 0xf0000404, 0x7631: 0xf0000404, 0x7632: 0xf0000404, 0x7633: 0xf0000404, - 0x7634: 0xf0000404, 0x7635: 0xf0000404, 0x7636: 0xf0000404, 0x7637: 0xf0000404, - 0x7638: 0xf0000404, 0x7639: 0xf0000404, 0x763a: 0xf0000404, 0x763b: 0xf0000404, - 0x763c: 0xf0000404, 0x763d: 0xf0000404, 0x763e: 0xf0000404, 0x763f: 0xe0000bdf, - // Block 0x1d9, offset 0x7640 - 0x7640: 0xf0001f04, 0x7641: 0xf0001f04, 0x7642: 0xf0001f04, 0x7643: 0xf0001f04, - 0x7644: 0xf0001f04, 0x7645: 0xf0001f04, 0x7646: 0xf0001f04, 0x7647: 0xf0001f04, - 0x7648: 0xf0001f04, 0x7649: 0xf0001f04, 0x764a: 0xf0001f04, - 0x7650: 0xf0000a04, 0x7651: 0xf0000a04, 0x7652: 0xf0000a04, 0x7653: 0xf0000a04, - 0x7654: 0xf0000a04, 0x7655: 0xf0000a04, 0x7656: 0xf0000a04, 0x7657: 0xf0000a04, - 0x7658: 0xe0002576, 0x7659: 0xf0000a04, 0x765a: 0xf0000a04, 0x765b: 0xf0000a04, - 0x765c: 0xf0000a04, 0x765d: 0xf0000a04, 0x765e: 0xf0000a04, 0x765f: 0xf0000a04, - 0x7660: 0xe000257e, 0x7661: 0xf0000a04, 0x7662: 0xf0000a04, 0x7663: 0xf0000a04, - 0x7664: 0xf0000a04, 0x7665: 0xf0000a04, 0x7666: 0xf0000a04, 0x7667: 0xe0002586, - 0x7668: 0xf0000a04, 0x7669: 0xf0000a04, 0x766a: 0xf0000a04, 0x766b: 0x002c3a8c, - 0x766c: 0x002f7a8c, 0x766d: 0xf0000c0c, 0x766e: 0xf0000c0c, - 0x7670: 0x002bde9d, 0x7671: 0x002c0a9d, 0x7672: 0x002c3a9d, 0x7673: 0x002c629d, - 0x7674: 0x002c989d, 0x7675: 0x002d089d, 0x7676: 0x002d229d, 0x7677: 0x002d689d, - 0x7678: 0x002d9a9d, 0x7679: 0x002dcc9d, 0x767a: 0x002dfe9d, 0x767b: 0x002e229d, - 0x767c: 0x002e829d, 0x767d: 0x002e9e9d, 0x767e: 0x002ee29d, 0x767f: 0x002f2c9d, - // Block 0x1da, offset 0x7680 - 0x7680: 0xa0000000, 0x7681: 0xa0000000, 0x7682: 0xa0000000, 0x7683: 0xa0000000, - 0x7684: 0xa0000000, 0x7685: 0xa0000000, 0x7686: 0xa0000000, 0x7687: 0xa0000000, - 0x7688: 0xa0000000, 0x7689: 0x40020020, 0x768a: 0x40020220, 0x768b: 0x40020420, - 0x768c: 0x40020620, 0x768d: 0x40020820, 0x768e: 0xa0000000, 0x768f: 0xa0000000, - 0x7690: 0xa0000000, 0x7691: 0xa0000000, 0x7692: 0xa0000000, 0x7693: 0xa0000000, - 0x7694: 0xa0000000, 0x7695: 0xa0000000, 0x7696: 0xa0000000, 0x7697: 0xa0000000, - 0x7698: 0xa0000000, 0x7699: 0xa0000000, 0x769a: 0xa0000000, 0x769b: 0xa0000000, - 0x769c: 0xa0000000, 0x769d: 0xa0000000, 0x769e: 0xa0000000, 0x769f: 0xa0000000, - 0x76a0: 0x40021220, 0x76a1: 0x4002ba20, 0x76a2: 0x4003e020, 0x76a3: 0x4004ea20, - 0x76a4: 0x4027de20, 0x76a5: 0x4004ec20, 0x76a6: 0x4004e620, 0x76a7: 0x4003d220, - 0x76a8: 0x4003f420, 0x76a9: 0x4003f620, 0x76aa: 0x4004d820, 0x76ab: 0x40093820, - 0x76ac: 0x40024020, 0x76ad: 0x40021a20, 0x76ae: 0x4002e420, 0x76af: 0x4004e220, - 0x76b0: 0x4029cc20, 0x76b1: 0x4029ce20, 0x76b2: 0x4029d020, 0x76b3: 0x4029d220, - 0x76b4: 0x4029d420, 0x76b5: 0x4029d620, 0x76b6: 0x4029d820, 0x76b7: 0x4029da20, - 0x76b8: 0x4029dc20, 0x76b9: 0x4029de20, 0x76ba: 0x40026c20, 0x76bb: 0x40026220, - 0x76bc: 0x40094020, 0x76bd: 0xc32f0851, 0x76be: 0x40094420, 0x76bf: 0x4002c420, - // Block 0x1db, offset 0x76c0 - 0x76c0: 0x4004d620, 0x76c1: 0x002bde88, 0x76c2: 0x002c0a88, 0x76c3: 0x002c3a88, - 0x76c4: 0x002c6288, 0x76c5: 0x002c9888, 0x76c6: 0x002d0888, 0x76c7: 0x002d2288, - 0x76c8: 0x002d6888, 0x76c9: 0x002d9a88, 0x76ca: 0x002dcc88, 0x76cb: 0x002dfe88, - 0x76cc: 0xc3520002, 0x76cd: 0x002e8288, 0x76ce: 0x002e9e88, 0x76cf: 0x002ee288, - 0x76d0: 0x002f2c88, 0x76d1: 0x002f5688, 0x76d2: 0x002f7a88, 0x76d3: 0x002fe688, - 0x76d4: 0x00302c88, 0x76d5: 0x00306c88, 0x76d6: 0x0030be88, 0x76d7: 0x0030e288, - 0x76d8: 0x0030f688, 0x76d9: 0x00310088, 0x76da: 0x00312a88, 0x76db: 0x4003f820, - 0x76dc: 0x4004e420, 0x76dd: 0x4003fa20, 0x76de: 0x40062420, 0x76df: 0x40021620, - 0x76e0: 0x40061e20, 0x76e1: 0x402bde20, 0x76e2: 0x402c0a20, 0x76e3: 0x402c3a20, - 0x76e4: 0x402c6220, 0x76e5: 0x402c9820, 0x76e6: 0x402d0820, 0x76e7: 0x402d2220, - 0x76e8: 0x402d6820, 0x76e9: 0x402d9a20, 0x76ea: 0x402dcc20, 0x76eb: 0x402dfe20, - 0x76ec: 0xc34f0002, 0x76ed: 0x402e8220, 0x76ee: 0x402e9e20, 0x76ef: 0x402ee220, - 0x76f0: 0x402f2c20, 0x76f1: 0x402f5620, 0x76f2: 0x402f7a20, 0x76f3: 0x402fe620, - 0x76f4: 0x40302c20, 0x76f5: 0x40306c20, 0x76f6: 0x4030be20, 0x76f7: 0x4030e220, - 0x76f8: 0x4030f620, 0x76f9: 0x40310020, 0x76fa: 0x40312a20, 0x76fb: 0x4003fc20, - 0x76fc: 0x40094820, 0x76fd: 0x4003fe20, 0x76fe: 0x40094c20, 0x76ff: 0xa0000000, - // Block 0x1dc, offset 0x7700 - 0x7700: 0xe0000983, 0x7701: 0xe0000980, 0x7702: 0xe00008fb, 0x7703: 0xe00008f8, - 0x7704: 0xe000097d, 0x7705: 0xe000097a, 0x7706: 0xe0000a38, 0x7707: 0xe0000a35, - 0x7708: 0xe0000a3e, 0x7709: 0xe0000a3b, 0x770a: 0xe0000a4a, 0x770b: 0xe0000a47, - 0x770c: 0xe0000a44, 0x770d: 0xe0000a41, 0x770e: 0xe0000a86, 0x770f: 0xe0000a83, - 0x7710: 0xe0000aaa, 0x7711: 0xe0000aa7, 0x7712: 0xe0000b46, 0x7713: 0xe0000b43, - 0x7714: 0xe0000aee, 0x7715: 0xe0000aeb, 0x7716: 0xe0000b2c, 0x7717: 0xe0000b29, - 0x7718: 0xe0000b40, 0x7719: 0xe0000b3d, 0x771a: 0xe0000b1a, 0x771b: 0xe0000b17, - 0x771c: 0xe0000bb8, 0x771d: 0xe0000bb5, 0x771e: 0xe0000bb2, 0x771f: 0xe0000baf, - 0x7720: 0xe0000bc4, 0x7721: 0xe0000bc1, 0x7722: 0xe0000bca, 0x7723: 0xe0000bc7, - 0x7724: 0xe0000bee, 0x7725: 0xe0000beb, 0x7726: 0xe0000c1b, 0x7727: 0xe0000c18, - 0x7728: 0xe0000c51, 0x7729: 0xe0000c4e, 0x772a: 0xe0000c60, 0x772b: 0xe0000c5d, - 0x772c: 0xe0000c31, 0x772d: 0xe0000c2e, 0x772e: 0xe0000c5a, 0x772f: 0xe0000c57, - 0x7730: 0xe0000c54, 0x7731: 0x402da220, 0x7732: 0xf0000a0a, 0x7733: 0xf0000404, - 0x7734: 0xe0000c8a, 0x7735: 0xe0000c87, 0x7736: 0xe0000c9f, 0x7737: 0xe0000c9c, - 0x7738: 0x402f7220, 0x7739: 0xe0000ccc, 0x773a: 0xe0000cc9, 0x773b: 0xe0000cd8, - 0x773c: 0xe0000cd5, 0x773d: 0xe0000cd2, 0x773e: 0xe0000ccf, 0x773f: 0x002e2483, - // Block 0x1dd, offset 0x7740 - 0x7740: 0x402e2420, 0x7741: 0xe0000cf8, 0x7742: 0xe0000cf5, 0x7743: 0xe0000d51, - 0x7744: 0xe0000d4e, 0x7745: 0xe0000d6f, 0x7746: 0xe0000d6c, 0x7747: 0xe0000d5d, - 0x7748: 0xe0000d5a, 0x7749: 0xf0000404, 0x774a: 0x002eda88, 0x774b: 0x402eda20, - 0x774c: 0xe0000e2e, 0x774d: 0xe0000e2b, 0x774e: 0xe0000da0, 0x774f: 0xe0000d9d, - 0x7750: 0xe0000de0, 0x7751: 0xe0000ddd, 0x7752: 0xe0000e93, 0x7753: 0xe0000e8f, - 0x7754: 0xe0000eca, 0x7755: 0xe0000ec7, 0x7756: 0xe0000edc, 0x7757: 0xe0000ed9, - 0x7758: 0xe0000ed0, 0x7759: 0xe0000ecd, 0x775a: 0xe0000f1f, 0x775b: 0xe0000f1c, - 0x775c: 0xe0000f2d, 0x775d: 0xe0000f2a, 0x775e: 0xe0000f47, 0x775f: 0xe0000f44, - 0x7760: 0xe0000f33, 0x7761: 0xe0000f30, 0x7762: 0xe0000f99, 0x7763: 0xe0000f96, - 0x7764: 0xe0000f8a, 0x7765: 0xe0000f87, 0x7766: 0x00303688, 0x7767: 0x40303620, - 0x7768: 0xe000102b, 0x7769: 0xe0001028, 0x776a: 0xe000103f, 0x776b: 0xe000103c, - 0x776c: 0xe0000fe7, 0x776d: 0xe0000fe4, 0x776e: 0xe0000ff9, 0x776f: 0xe0000ff6, - 0x7770: 0xe0001025, 0x7771: 0xe0001022, 0x7772: 0xe0001039, 0x7773: 0xe0001036, - 0x7774: 0xe00010d8, 0x7775: 0xe00010d5, 0x7776: 0xe000110e, 0x7777: 0xe000110b, - 0x7778: 0xe0001117, 0x7779: 0xe000113b, 0x777a: 0xe0001138, 0x777b: 0xe000114d, - 0x777c: 0xe000114a, 0x777d: 0xe0001147, 0x777e: 0xe0001144, 0x777f: 0xe0000f64, - // Block 0x1de, offset 0x7780 - 0x7780: 0xa0000000, 0x7781: 0xa0000000, 0x7782: 0xa0000000, 0x7783: 0xa0000000, - 0x7784: 0xa0000000, 0x7785: 0xa0000000, 0x7786: 0xa0000000, 0x7787: 0xa0000000, - 0x7788: 0xa0000000, 0x7789: 0x40020020, 0x778a: 0x40020220, 0x778b: 0x40020420, - 0x778c: 0x40020620, 0x778d: 0x40020820, 0x778e: 0xa0000000, 0x778f: 0xa0000000, - 0x7790: 0xa0000000, 0x7791: 0xa0000000, 0x7792: 0xa0000000, 0x7793: 0xa0000000, - 0x7794: 0xa0000000, 0x7795: 0xa0000000, 0x7796: 0xa0000000, 0x7797: 0xa0000000, - 0x7798: 0xa0000000, 0x7799: 0xa0000000, 0x779a: 0xa0000000, 0x779b: 0xa0000000, - 0x779c: 0xa0000000, 0x779d: 0xa0000000, 0x779e: 0xa0000000, 0x779f: 0xa0000000, - 0x77a0: 0x40021220, 0x77a1: 0x4002ba20, 0x77a2: 0x4003e020, 0x77a3: 0x4004ea20, - 0x77a4: 0x4027de20, 0x77a5: 0x4004ec20, 0x77a6: 0x4004e620, 0x77a7: 0x4003d220, - 0x77a8: 0x4003f420, 0x77a9: 0x4003f620, 0x77aa: 0x4004d820, 0x77ab: 0x40093820, - 0x77ac: 0x40024020, 0x77ad: 0x40021a20, 0x77ae: 0x4002e420, 0x77af: 0x4004e220, - 0x77b0: 0x4029cc20, 0x77b1: 0x4029ce20, 0x77b2: 0x4029d020, 0x77b3: 0x4029d220, - 0x77b4: 0x4029d420, 0x77b5: 0x4029d620, 0x77b6: 0x4029d820, 0x77b7: 0x4029da20, - 0x77b8: 0x4029dc20, 0x77b9: 0x4029de20, 0x77ba: 0x40026c20, 0x77bb: 0x40026220, - 0x77bc: 0x40094020, 0x77bd: 0xc32f0851, 0x77be: 0x40094420, 0x77bf: 0x4002c420, - // Block 0x1df, offset 0x77c0 - 0x77c0: 0x4004d620, 0x77c1: 0xc35708b1, 0x77c2: 0x002c0a88, 0x77c3: 0xc33b08d1, - 0x77c4: 0xc35b08d1, 0x77c5: 0xc36008f1, 0x77c6: 0x002d0888, 0x77c7: 0x002d2288, - 0x77c8: 0x002d6888, 0x77c9: 0xc36508b1, 0x77ca: 0x002dcc88, 0x77cb: 0x002dfe88, - 0x77cc: 0xc0030002, 0x77cd: 0x002e8288, 0x77ce: 0xc36908d1, 0x77cf: 0xc34508b1, - 0x77d0: 0x002f2c88, 0x77d1: 0x002f5688, 0x77d2: 0xc36d08d1, 0x77d3: 0xc34908d1, - 0x77d4: 0xc37108d1, 0x77d5: 0xc3760921, 0x77d6: 0x0030be88, 0x77d7: 0x0030e288, - 0x77d8: 0x0030f688, 0x77d9: 0xc37b08b1, 0x77da: 0xc37f08d1, 0x77db: 0x4003f820, - 0x77dc: 0x4004e420, 0x77dd: 0x4003fa20, 0x77de: 0x40062420, 0x77df: 0x40021620, - 0x77e0: 0x40061e20, 0x77e1: 0xc35508b1, 0x77e2: 0x402c0a20, 0x77e3: 0xc33908d1, - 0x77e4: 0xc35908d1, 0x77e5: 0xc35d08f1, 0x77e6: 0x402d0820, 0x77e7: 0x402d2220, - 0x77e8: 0x402d6820, 0x77e9: 0xc36308b1, 0x77ea: 0x402dcc20, 0x77eb: 0x402dfe20, - 0x77ec: 0xc0000002, 0x77ed: 0x402e8220, 0x77ee: 0xc36708d1, 0x77ef: 0xc34308b1, - 0x77f0: 0x402f2c20, 0x77f1: 0x402f5620, 0x77f2: 0xc36b08d1, 0x77f3: 0xc34708d1, - 0x77f4: 0xc36f08d1, 0x77f5: 0xc3730921, 0x77f6: 0x4030be20, 0x77f7: 0x4030e220, - 0x77f8: 0x4030f620, 0x77f9: 0xc37908b1, 0x77fa: 0xc37d08d1, 0x77fb: 0x4003fc20, - 0x77fc: 0x40094820, 0x77fd: 0x4003fe20, 0x77fe: 0x40094c20, 0x77ff: 0xa0000000, - // Block 0x1e0, offset 0x7800 - 0x7800: 0xe00008f5, 0x7801: 0x002be083, 0x7802: 0xe0000921, 0x7803: 0xe0000969, - 0x7804: 0xe000095b, 0x7805: 0xe000094d, 0x7806: 0xe00009dd, 0x7807: 0xe0000a53, - 0x7808: 0xe0000ae8, 0x7809: 0x002c9a83, 0x780a: 0xe0000af4, 0x780b: 0xe0000b20, - 0x780c: 0xe0000c2b, 0x780d: 0x002d9c83, 0x780e: 0xe0000c37, 0x780f: 0xe0000c43, - 0x7810: 0xe0000ab3, 0x7811: 0xe0000d63, 0x7812: 0xe0000d9a, 0x7813: 0x002ee483, - 0x7814: 0xe0000da6, 0x7815: 0xe0000de6, 0x7816: 0xe0000dd2, 0x7817: 0x40093e20, - 0x7818: 0xe0000e12, 0x7819: 0xe0000fe1, 0x781a: 0x00306e83, 0x781b: 0xe0000fed, - 0x781c: 0xe0000fff, 0x781d: 0x00310283, 0x781e: 0x00318888, 0x781f: 0xe0000f7b, - 0x7820: 0xe00008f2, 0x7821: 0x402be020, 0x7822: 0xe000091e, 0x7823: 0xe0000966, - 0x7824: 0xe0000958, 0x7825: 0xe000094a, 0x7826: 0xe00009d5, 0x7827: 0xe0000a4d, - 0x7828: 0xe0000ae5, 0x7829: 0x402c9a20, 0x782a: 0xe0000af1, 0x782b: 0xe0000b1d, - 0x782c: 0xe0000c28, 0x782d: 0x402d9c20, 0x782e: 0xe0000c34, 0x782f: 0xe0000c40, - 0x7830: 0xe0000aad, 0x7831: 0xe0000d60, 0x7832: 0xe0000d97, 0x7833: 0x402ee420, - 0x7834: 0xe0000da3, 0x7835: 0xe0000de3, 0x7836: 0xe0000dcf, 0x7837: 0x40093c20, - 0x7838: 0xe0000e0f, 0x7839: 0xe0000fde, 0x783a: 0x40306e20, 0x783b: 0xe0000fea, - 0x783c: 0xe0000ffc, 0x783d: 0x40310220, 0x783e: 0x40318820, 0x783f: 0xe0001114, - // Block 0x1e1, offset 0x7840 - 0x7840: 0xe0000983, 0x7841: 0xe0000980, 0x7842: 0xe00008fb, 0x7843: 0xe00008f8, - 0x7844: 0xe000097d, 0x7845: 0xe000097a, 0x7846: 0xe0000a38, 0x7847: 0xe0000a35, - 0x7848: 0xe0000a3e, 0x7849: 0xe0000a3b, 0x784a: 0xe0000a4a, 0x784b: 0xe0000a47, - 0x784c: 0x002c3c83, 0x784d: 0x402c3c20, 0x784e: 0x002c6483, 0x784f: 0x402c6420, - 0x7850: 0xe0000aaa, 0x7851: 0xe0000aa7, 0x7852: 0xe0000b46, 0x7853: 0xe0000b43, - 0x7854: 0xe0000aee, 0x7855: 0xe0000aeb, 0x7856: 0xe0000b2c, 0x7857: 0xe0000b29, - 0x7858: 0xe0000b40, 0x7859: 0xe0000b3d, 0x785a: 0x002c9c83, 0x785b: 0x402c9c20, - 0x785c: 0xe0000bb8, 0x785d: 0xe0000bb5, 0x785e: 0xe0000bb2, 0x785f: 0xe0000baf, - 0x7860: 0xe0000bc4, 0x7861: 0xe0000bc1, 0x7862: 0xe0000bca, 0x7863: 0xe0000bc7, - 0x7864: 0xe0000bee, 0x7865: 0xe0000beb, 0x7866: 0xe0000c1b, 0x7867: 0xe0000c18, - 0x7868: 0xe0000c51, 0x7869: 0xe0000c4e, 0x786a: 0xe0000c60, 0x786b: 0xe0000c5d, - 0x786c: 0xe0000c31, 0x786d: 0xe0000c2e, 0x786e: 0xe0000c5a, 0x786f: 0xe0000c57, - 0x7870: 0xe0000c54, 0x7871: 0x402da220, 0x7872: 0xf0000a0a, 0x7873: 0xf0000404, - 0x7874: 0xe0000c8a, 0x7875: 0xe0000c87, 0x7876: 0xe0000c9f, 0x7877: 0xe0000c9c, - 0x7878: 0x402f7220, 0x7879: 0xe0000ccc, 0x787a: 0xe0000cc9, 0x787b: 0xe0000cd8, - 0x787c: 0xe0000cd5, 0x787d: 0xe0000cd2, 0x787e: 0xe0000ccf, 0x787f: 0xe0000d04, - // Block 0x1e2, offset 0x7880 - 0x7880: 0xe0000cfe, 0x7881: 0xe0000cf8, 0x7882: 0xe0000cf5, 0x7883: 0xe0000d51, - 0x7884: 0xe0000d4e, 0x7885: 0xe0000d6f, 0x7886: 0xe0000d6c, 0x7887: 0x002ea083, - 0x7888: 0x402ea020, 0x7889: 0xf0000404, 0x788a: 0x002eda88, 0x788b: 0x402eda20, - 0x788c: 0xe0000e2e, 0x788d: 0xe0000e2b, 0x788e: 0xe0000da0, 0x788f: 0xe0000d9d, - 0x7890: 0xe0000de0, 0x7891: 0xe0000ddd, 0x7892: 0xe0000e93, 0x7893: 0xe0000e8f, - 0x7894: 0xe0000eca, 0x7895: 0xe0000ec7, 0x7896: 0xe0000edc, 0x7897: 0xe0000ed9, - 0x7898: 0x002f7c83, 0x7899: 0x402f7c20, 0x789a: 0xe0000f1f, 0x789b: 0xe0000f1c, - 0x789c: 0xe0000f2d, 0x789d: 0xe0000f2a, 0x789e: 0xe0000f47, 0x789f: 0xe0000f44, - 0x78a0: 0x002fe883, 0x78a1: 0x402fe820, 0x78a2: 0xe0000f99, 0x78a3: 0xe0000f96, - 0x78a4: 0x00302e83, 0x78a5: 0x40302e20, 0x78a6: 0x00303688, 0x78a7: 0x40303620, - 0x78a8: 0xe000102b, 0x78a9: 0xe0001028, 0x78aa: 0xe000103f, 0x78ab: 0xe000103c, - 0x78ac: 0xe0000fe7, 0x78ad: 0xe0000fe4, 0x78ae: 0x00307083, 0x78af: 0x40307020, - 0x78b0: 0xe0001025, 0x78b1: 0xe0001022, 0x78b2: 0xe0001039, 0x78b3: 0xe0001036, - 0x78b4: 0xe00010d8, 0x78b5: 0xe00010d5, 0x78b6: 0xe000110e, 0x78b7: 0xe000110b, - 0x78b8: 0xe0001117, 0x78b9: 0xe000113b, 0x78ba: 0xe0001138, 0x78bb: 0xe000114d, - 0x78bc: 0xe000114a, 0x78bd: 0x00312c83, 0x78be: 0x40312c20, 0x78bf: 0xe0000f64, - // Block 0x1e3, offset 0x78c0 - 0x78c0: 0x40321220, 0x78c1: 0x40321a20, 0x78c2: 0x40322220, 0x78c3: 0x40322a20, - 0x78c4: 0xe0000ad5, 0x78c5: 0xe0000ad1, 0x78c6: 0xe0000acd, 0x78c7: 0xf0000a0a, - 0x78c8: 0xf000040a, 0x78c9: 0xf0000404, 0x78ca: 0xf0000a0a, 0x78cb: 0xf000040a, - 0x78cc: 0xf0000404, 0x78cd: 0xe0000947, 0x78ce: 0xe0000944, 0x78cf: 0xe0000c3d, - 0x78d0: 0xe0000c3a, 0x78d1: 0xe0000dcc, 0x78d2: 0xe0000dc9, 0x78d3: 0xe0000ff3, - 0x78d4: 0xe0000ff0, 0x78d5: 0xe000101e, 0x78d6: 0xe000101a, 0x78d7: 0xe0002658, - 0x78d8: 0xe0002655, 0x78d9: 0xe0001016, 0x78da: 0xe0001012, 0x78db: 0xe000100e, - 0x78dc: 0xe000100a, 0x78dd: 0x402cae20, 0x78de: 0xe0000962, 0x78df: 0xe000095e, - 0x78e0: 0xe0000976, 0x78e1: 0xe0000972, 0x78e2: 0xe00009f4, 0x78e3: 0xe00009ef, - 0x78e4: 0x002d3a88, 0x78e5: 0x402d3a20, 0x78e6: 0xe0000bbe, 0x78e7: 0xe0000bbb, - 0x78e8: 0xe0000c99, 0x78e9: 0xe0000c96, 0x78ea: 0xe0000e20, 0x78eb: 0xe0000e1d, - 0x78ec: 0xe0000e27, 0x78ed: 0xe0000e23, 0x78ee: 0xe0001162, 0x78ef: 0xe000115f, - 0x78f0: 0xe0000c8d, 0x78f1: 0xf0000a0a, 0x78f2: 0xf000040a, 0x78f3: 0xf0000404, - 0x78f4: 0xe0000bac, 0x78f5: 0xe0000ba9, 0x78f6: 0x002d7888, 0x78f7: 0x00319488, - 0x78f8: 0xe0000d57, 0x78f9: 0xe0000d54, 0x78fa: 0xe000262e, 0x78fb: 0xe000262b, - 0x78fc: 0xe00009ea, 0x78fd: 0xe00009e5, 0x78fe: 0xe0000e19, 0x78ff: 0xe0000e15, - // Block 0x1e4, offset 0x7900 - 0x7900: 0xe00009b1, 0x7901: 0xe00009ae, 0x7902: 0xe0000a22, 0x7903: 0xe0000a1f, - 0x7904: 0xe0000a28, 0x7905: 0xe0000a25, 0x7906: 0xe0000a2e, 0x7907: 0xe0000a2b, - 0x7908: 0xe0000a5a, 0x7909: 0xe0000a56, 0x790a: 0xe0000a8c, 0x790b: 0xe0000a89, - 0x790c: 0xe0000a98, 0x790d: 0xe0000a95, 0x790e: 0xe0000aa4, 0x790f: 0xe0000aa1, - 0x7910: 0xe0000a92, 0x7911: 0xe0000a8f, 0x7912: 0xe0000a9e, 0x7913: 0xe0000a9b, - 0x7914: 0xe0000b55, 0x7915: 0xe0000b51, 0x7916: 0xe000263a, 0x7917: 0xe0002637, - 0x7918: 0xe0000b7c, 0x7919: 0xe0000b79, 0x791a: 0xe0000b82, 0x791b: 0xe0000b7f, - 0x791c: 0xe0000b39, 0x791d: 0xe0000b35, 0x791e: 0xe0000b8c, 0x791f: 0xe0000b89, - 0x7920: 0xe0000bd0, 0x7921: 0xe0000bcd, 0x7922: 0xe0000c00, 0x7923: 0xe0000bfd, - 0x7924: 0xe0000c0c, 0x7925: 0xe0000c09, 0x7926: 0xe0000bfa, 0x7927: 0xe0000bf7, - 0x7928: 0xe0000c06, 0x7929: 0xe0000c03, 0x792a: 0xe0000c12, 0x792b: 0xe0000c0f, - 0x792c: 0xe0000c7e, 0x792d: 0xe0000c7b, 0x792e: 0xe0002640, 0x792f: 0xe000263d, - 0x7930: 0xe0000c93, 0x7931: 0xe0000c90, 0x7932: 0xe0000cab, 0x7933: 0xe0000ca8, - 0x7934: 0xe0000cb1, 0x7935: 0xe0000cae, 0x7936: 0xe0000cde, 0x7937: 0xe0000cdb, - 0x7938: 0xe0000ce5, 0x7939: 0xe0000ce1, 0x793a: 0xe0000cf2, 0x793b: 0xe0000cef, - 0x793c: 0xe0000cec, 0x793d: 0xe0000ce9, 0x793e: 0xe0000d1e, 0x793f: 0xe0000d1b, - // Block 0x1e5, offset 0x7940 - 0x7940: 0xe0000d24, 0x7941: 0xe0000d21, 0x7942: 0xe0000d2a, 0x7943: 0xe0000d27, - 0x7944: 0xe0000d69, 0x7945: 0xe0000d66, 0x7946: 0xe0000d7b, 0x7947: 0xe0000d78, - 0x7948: 0xe0000d87, 0x7949: 0xe0000d84, 0x794a: 0xe0000d81, 0x794b: 0xe0000d7e, - 0x794c: 0xe00025e9, 0x794d: 0xe00025e6, 0x794e: 0xe0000df5, 0x794f: 0xe0000df1, - 0x7950: 0xe0000e3d, 0x7951: 0xe0000e39, 0x7952: 0xe00025ef, 0x7953: 0xe00025ec, - 0x7954: 0xe0000ea7, 0x7955: 0xe0000ea4, 0x7956: 0xe0000ead, 0x7957: 0xe0000eaa, - 0x7958: 0xe0000ed6, 0x7959: 0xe0000ed3, 0x795a: 0xe0000ef4, 0x795b: 0xe0000ef1, - 0x795c: 0xe0000efb, 0x795d: 0xe0000ef7, 0x795e: 0xe0000f02, 0x795f: 0xe0000eff, - 0x7960: 0xe0000f41, 0x7961: 0xe0000f3e, 0x7962: 0xe0000f53, 0x7963: 0xe0000f50, - 0x7964: 0xe0000f26, 0x7965: 0xe0000f22, 0x7966: 0xe0002652, 0x7967: 0xe000264f, - 0x7968: 0xe0000f5a, 0x7969: 0xe0000f56, 0x796a: 0xe0000f93, 0x796b: 0xe0000f90, - 0x796c: 0xe0000f9f, 0x796d: 0xe0000f9c, 0x796e: 0xe0000fb1, 0x796f: 0xe0000fae, - 0x7970: 0xe0000fab, 0x7971: 0xe0000fa8, 0x7972: 0xe0001093, 0x7973: 0xe0001090, - 0x7974: 0xe000109f, 0x7975: 0xe000109c, 0x7976: 0xe0001099, 0x7977: 0xe0001096, - 0x7978: 0xe000265e, 0x7979: 0xe000265b, 0x797a: 0xe0001046, 0x797b: 0xe0001042, - 0x797c: 0xe00010a9, 0x797d: 0xe00010a6, 0x797e: 0xe00010af, 0x797f: 0xe00010ac, - // Block 0x1e6, offset 0x7980 - 0x7980: 0xe00010d2, 0x7981: 0xe00010cf, 0x7982: 0xe00010cc, 0x7983: 0xe00010c9, - 0x7984: 0xe00010e1, 0x7985: 0xe00010de, 0x7986: 0xe00010e7, 0x7987: 0xe00010e4, - 0x7988: 0xe00010ed, 0x7989: 0xe00010ea, 0x798a: 0xe00010fc, 0x798b: 0xe00010f9, - 0x798c: 0xe00010f6, 0x798d: 0xe00010f3, 0x798e: 0xe0001123, 0x798f: 0xe0001120, - 0x7990: 0xe0001141, 0x7991: 0xe000113e, 0x7992: 0xe0001153, 0x7993: 0xe0001150, - 0x7994: 0xe0001159, 0x7995: 0xe0001156, 0x7996: 0xe0000c15, 0x7997: 0xe0000f8d, - 0x7998: 0xe00010db, 0x7999: 0xe0001111, 0x799a: 0xf0000404, 0x799b: 0xe0000f70, - 0x799c: 0x40300420, 0x799d: 0x40300620, 0x799e: 0xe0000f7f, 0x799f: 0x402c9620, - 0x79a0: 0xe000099b, 0x79a1: 0xe0000998, 0x79a2: 0xe0000989, 0x79a3: 0xe0000986, - 0x79a4: 0xe0002628, 0x79a5: 0xe0002625, 0x79a6: 0xe0000930, 0x79a7: 0xe000092c, - 0x79a8: 0xe0000940, 0x79a9: 0xe000093c, 0x79aa: 0xe0000938, 0x79ab: 0xe0000934, - 0x79ac: 0xe00009aa, 0x79ad: 0xe00009a6, 0x79ae: 0xe0002622, 0x79af: 0xe000261f, - 0x79b0: 0xe000090a, 0x79b1: 0xe0000906, 0x79b2: 0xe000091a, 0x79b3: 0xe0000916, - 0x79b4: 0xe0000912, 0x79b5: 0xe000090e, 0x79b6: 0xe00009a2, 0x79b7: 0xe000099e, - 0x79b8: 0xe0000b6e, 0x79b9: 0xe0000b6b, 0x79ba: 0xe0000b5c, 0x79bb: 0xe0000b59, - 0x79bc: 0xe0000b26, 0x79bd: 0xe0000b23, 0x79be: 0xe0002634, 0x79bf: 0xe0002631, - // Block 0x1e7, offset 0x79c0 - 0x79c0: 0xe0000b03, 0x79c1: 0xe0000aff, 0x79c2: 0xe0000b13, 0x79c3: 0xe0000b0f, - 0x79c4: 0xe0000b0b, 0x79c5: 0xe0000b07, 0x79c6: 0xe0000b75, 0x79c7: 0xe0000b71, - 0x79c8: 0xe0000c66, 0x79c9: 0xe0000c63, 0x79ca: 0xe0000c78, 0x79cb: 0xe0000c75, - 0x79cc: 0xe0000e84, 0x79cd: 0xe0000e81, 0x79ce: 0xe0000e44, 0x79cf: 0xe0000e41, - 0x79d0: 0xe0002646, 0x79d1: 0xe0002643, 0x79d2: 0xe0000db5, 0x79d3: 0xe0000db1, - 0x79d4: 0xe0000dc5, 0x79d5: 0xe0000dc1, 0x79d6: 0xe0000dbd, 0x79d7: 0xe0000db9, - 0x79d8: 0xe0000e8b, 0x79d9: 0xe0000e87, 0x79da: 0xe000264c, 0x79db: 0xe0002649, - 0x79dc: 0xe0000e65, 0x79dd: 0xe0000e61, 0x79de: 0xe0000e75, 0x79df: 0xe0000e71, - 0x79e0: 0xe0000e6d, 0x79e1: 0xe0000e69, 0x79e2: 0xe0000e7d, 0x79e3: 0xe0000e79, - 0x79e4: 0xe000108d, 0x79e5: 0xe000108a, 0x79e6: 0xe000104d, 0x79e7: 0xe000104a, - 0x79e8: 0xe0002664, 0x79e9: 0xe0002661, 0x79ea: 0xe000106e, 0x79eb: 0xe000106a, - 0x79ec: 0xe000107e, 0x79ed: 0xe000107a, 0x79ee: 0xe0001076, 0x79ef: 0xe0001072, - 0x79f0: 0xe0001086, 0x79f1: 0xe0001082, 0x79f2: 0xe0001108, 0x79f3: 0xe0001105, - 0x79f4: 0xe0001135, 0x79f5: 0xe0001132, 0x79f6: 0xe000112f, 0x79f7: 0xe000112c, - 0x79f8: 0xe000111d, 0x79f9: 0xe000111a, 0x79fa: 0xe0000d0a, 0x79fb: 0xe0000d07, - 0x79fc: 0x0030d888, 0x79fd: 0x4030d820, 0x79fe: 0x00312088, 0x79ff: 0x40312020, - // Block 0x1e8, offset 0x7a00 - 0x7a00: 0xa0000000, 0x7a01: 0xa0000000, 0x7a02: 0xa0000000, 0x7a03: 0xa0000000, - 0x7a04: 0xa0000000, 0x7a05: 0xa0000000, 0x7a06: 0xa0000000, 0x7a07: 0xa0000000, - 0x7a08: 0xa0000000, 0x7a09: 0x40020020, 0x7a0a: 0x40020220, 0x7a0b: 0x40020420, - 0x7a0c: 0x40020620, 0x7a0d: 0x40020820, 0x7a0e: 0xa0000000, 0x7a0f: 0xa0000000, - 0x7a10: 0xa0000000, 0x7a11: 0xa0000000, 0x7a12: 0xa0000000, 0x7a13: 0xa0000000, - 0x7a14: 0xa0000000, 0x7a15: 0xa0000000, 0x7a16: 0xa0000000, 0x7a17: 0xa0000000, - 0x7a18: 0xa0000000, 0x7a19: 0xa0000000, 0x7a1a: 0xa0000000, 0x7a1b: 0xa0000000, - 0x7a1c: 0xa0000000, 0x7a1d: 0xa0000000, 0x7a1e: 0xa0000000, 0x7a1f: 0xa0000000, - 0x7a20: 0x40021220, 0x7a21: 0x4002ba20, 0x7a22: 0x4003e020, 0x7a23: 0x4004ea20, - 0x7a24: 0x4027de20, 0x7a25: 0x4004ec20, 0x7a26: 0x4004e620, 0x7a27: 0x4003d220, - 0x7a28: 0x4003f420, 0x7a29: 0x4003f620, 0x7a2a: 0x4004d820, 0x7a2b: 0x40093820, - 0x7a2c: 0x40024020, 0x7a2d: 0x40021a20, 0x7a2e: 0x4002e420, 0x7a2f: 0x4004e220, - 0x7a30: 0x4029cc20, 0x7a31: 0x4029ce20, 0x7a32: 0x4029d020, 0x7a33: 0x4029d220, - 0x7a34: 0x4029d420, 0x7a35: 0x4029d620, 0x7a36: 0x4029d820, 0x7a37: 0x4029da20, - 0x7a38: 0x4029dc20, 0x7a39: 0x4029de20, 0x7a3a: 0x40026c20, 0x7a3b: 0x40026220, - 0x7a3c: 0x40094020, 0x7a3d: 0xc32f0851, 0x7a3e: 0x40094420, 0x7a3f: 0x4002c420, - // Block 0x1e9, offset 0x7a40 - 0x7a40: 0x4004d620, 0x7a41: 0xc38b09c3, 0x7a42: 0x002c0a88, 0x7a43: 0x002c3a88, - 0x7a44: 0x002c6288, 0x7a45: 0xc3920a11, 0x7a46: 0x002d0888, 0x7a47: 0x002d2288, - 0x7a48: 0x002d6888, 0x7a49: 0x002d9a88, 0x7a4a: 0x002dcc88, 0x7a4b: 0x002dfe88, - 0x7a4c: 0xc0030002, 0x7a4d: 0x002e8288, 0x7a4e: 0x002e9e88, 0x7a4f: 0xc3970951, - 0x7a50: 0x002f2c88, 0x7a51: 0x002f5688, 0x7a52: 0x002f7a88, 0x7a53: 0x002fe688, - 0x7a54: 0x00302c88, 0x7a55: 0xc3840951, 0x7a56: 0x0030be88, 0x7a57: 0x0030e288, - 0x7a58: 0x0030f688, 0x7a59: 0x00310088, 0x7a5a: 0x00312a88, 0x7a5b: 0x4003f820, - 0x7a5c: 0x4004e420, 0x7a5d: 0x4003fa20, 0x7a5e: 0x40062420, 0x7a5f: 0x40021620, - 0x7a60: 0x40061e20, 0x7a61: 0xc3870982, 0x7a62: 0x402c0a20, 0x7a63: 0x402c3a20, - 0x7a64: 0x402c6220, 0x7a65: 0xc3900a11, 0x7a66: 0x402d0820, 0x7a67: 0x402d2220, - 0x7a68: 0x402d6820, 0x7a69: 0x402d9a20, 0x7a6a: 0x402dcc20, 0x7a6b: 0x402dfe20, - 0x7a6c: 0xc0000002, 0x7a6d: 0x402e8220, 0x7a6e: 0x402e9e20, 0x7a6f: 0xc3940951, - 0x7a70: 0x402f2c20, 0x7a71: 0x402f5620, 0x7a72: 0x402f7a20, 0x7a73: 0x402fe620, - 0x7a74: 0x40302c20, 0x7a75: 0xc3810951, 0x7a76: 0x4030be20, 0x7a77: 0x4030e220, - 0x7a78: 0x4030f620, 0x7a79: 0x40310020, 0x7a7a: 0x40312a20, 0x7a7b: 0x4003fc20, - 0x7a7c: 0x40094820, 0x7a7d: 0x4003fe20, 0x7a7e: 0x40094c20, 0x7a7f: 0xa0000000, - // Block 0x1ea, offset 0x7a80 - 0x7a80: 0xe00008f5, 0x7a81: 0xe00008ef, 0x7a82: 0xe0000921, 0x7a83: 0xe0000969, - 0x7a84: 0x00320ca3, 0x7a85: 0x00321083, 0x7a86: 0x00320c83, 0x7a87: 0xe0000a53, - 0x7a88: 0xe0000ae8, 0x7a89: 0xe0000ae2, 0x7a8a: 0xe0000af4, 0x7a8b: 0xe0000b20, - 0x7a8c: 0xe0000c2b, 0x7a8d: 0xe0000c25, 0x7a8e: 0xe0000c37, 0x7a8f: 0xe0000c43, - 0x7a90: 0x002c62c3, 0x7a91: 0xe0000d63, 0x7a92: 0xe0000d9a, 0x7a93: 0xe0000d94, - 0x7a94: 0xe0000da6, 0x7a95: 0xe0000de6, 0x7a96: 0x00320ea3, 0x7a97: 0x40093e20, - 0x7a98: 0x00320e83, 0x7a99: 0xe0000fe1, 0x7a9a: 0xe0000fdb, 0x7a9b: 0xe0000fed, - 0x7a9c: 0x003100a3, 0x7a9d: 0xe0001102, 0x7a9e: 0xe000266d, 0x7a9f: 0xe0000f7b, - 0x7aa0: 0xe00008f2, 0x7aa1: 0xe00008ec, 0x7aa2: 0xe000091e, 0x7aa3: 0xe0000966, - 0x7aa4: 0x40320c21, 0x7aa5: 0x40321020, 0x7aa6: 0x40320c20, 0x7aa7: 0xe0000a4d, - 0x7aa8: 0xe0000ae5, 0x7aa9: 0xe0000adf, 0x7aaa: 0xe0000af1, 0x7aab: 0xe0000b1d, - 0x7aac: 0xe0000c28, 0x7aad: 0xe0000c22, 0x7aae: 0xe0000c34, 0x7aaf: 0xe0000c40, - 0x7ab0: 0x402c6222, 0x7ab1: 0xe0000d60, 0x7ab2: 0xe0000d97, 0x7ab3: 0xe0000d91, - 0x7ab4: 0xe0000da3, 0x7ab5: 0xe0000de3, 0x7ab6: 0x40320e21, 0x7ab7: 0x40093c20, - 0x7ab8: 0x40320e20, 0x7ab9: 0xe0000fde, 0x7aba: 0xe0000fd8, 0x7abb: 0xe0000fea, - 0x7abc: 0x40310021, 0x7abd: 0xe00010ff, 0x7abe: 0xe000266a, 0x7abf: 0xe0001114, - // Block 0x1eb, offset 0x7ac0 - 0x7ac0: 0xe0000983, 0x7ac1: 0xe0000980, 0x7ac2: 0xe00008fb, 0x7ac3: 0xe00008f8, - 0x7ac4: 0xe000097d, 0x7ac5: 0xe000097a, 0x7ac6: 0xe0000a38, 0x7ac7: 0xe0000a35, - 0x7ac8: 0xe0000a3e, 0x7ac9: 0xe0000a3b, 0x7aca: 0xe0000a4a, 0x7acb: 0xe0000a47, - 0x7acc: 0xe0000a44, 0x7acd: 0xe0000a41, 0x7ace: 0xe0000a86, 0x7acf: 0xe0000a83, - 0x7ad0: 0x002c62a3, 0x7ad1: 0x402c6221, 0x7ad2: 0xe0000b46, 0x7ad3: 0xe0000b43, - 0x7ad4: 0xe0000aee, 0x7ad5: 0xe0000aeb, 0x7ad6: 0xe0000b2c, 0x7ad7: 0xe0000b29, - 0x7ad8: 0x00320cc3, 0x7ad9: 0x40320c22, 0x7ada: 0xe0000b1a, 0x7adb: 0xe0000b17, - 0x7adc: 0xe0000bb8, 0x7add: 0xe0000bb5, 0x7ade: 0xe0000bb2, 0x7adf: 0xe0000baf, - 0x7ae0: 0xe0000bc4, 0x7ae1: 0xe0000bc1, 0x7ae2: 0xe0000bca, 0x7ae3: 0xe0000bc7, - 0x7ae4: 0xe0000bee, 0x7ae5: 0xe0000beb, 0x7ae6: 0xe0000c1b, 0x7ae7: 0xe0000c18, - 0x7ae8: 0xe0000c51, 0x7ae9: 0xe0000c4e, 0x7aea: 0xe0000c60, 0x7aeb: 0xe0000c5d, - 0x7aec: 0xe0000c31, 0x7aed: 0xe0000c2e, 0x7aee: 0xe0000c5a, 0x7aef: 0xe0000c57, - 0x7af0: 0xe0000c54, 0x7af1: 0x402da220, 0x7af2: 0xf0000a0a, 0x7af3: 0xf0000404, - 0x7af4: 0xe0000c8a, 0x7af5: 0xe0000c87, 0x7af6: 0xe0000c9f, 0x7af7: 0xe0000c9c, - 0x7af8: 0x402f7220, 0x7af9: 0xe0000ccc, 0x7afa: 0xe0000cc9, 0x7afb: 0xe0000cd8, - 0x7afc: 0xe0000cd5, 0x7afd: 0xe0000cd2, 0x7afe: 0xe0000ccf, 0x7aff: 0xe0000d04, - // Block 0x1ec, offset 0x7b00 - 0x7b00: 0xe0000cfe, 0x7b01: 0xe0000cf8, 0x7b02: 0xe0000cf5, 0x7b03: 0xe0000d51, - 0x7b04: 0xe0000d4e, 0x7b05: 0xe0000d6f, 0x7b06: 0xe0000d6c, 0x7b07: 0xe0000d5d, - 0x7b08: 0xe0000d5a, 0x7b09: 0xf0000404, 0x7b0a: 0x002eda88, 0x7b0b: 0x402eda20, - 0x7b0c: 0xe0000e2e, 0x7b0d: 0xe0000e2b, 0x7b0e: 0xe0000da0, 0x7b0f: 0xe0000d9d, - 0x7b10: 0x00320ec3, 0x7b11: 0x40320e22, 0x7b12: 0x00320ee3, 0x7b13: 0x40320e23, - 0x7b14: 0xe0000eca, 0x7b15: 0xe0000ec7, 0x7b16: 0xe0000edc, 0x7b17: 0xe0000ed9, - 0x7b18: 0xe0000ed0, 0x7b19: 0xe0000ecd, 0x7b1a: 0xe0000f1f, 0x7b1b: 0xe0000f1c, - 0x7b1c: 0xe0000f2d, 0x7b1d: 0xe0000f2a, 0x7b1e: 0xe0000f47, 0x7b1f: 0xe0000f44, - 0x7b20: 0xe0000f33, 0x7b21: 0xe0000f30, 0x7b22: 0xe0000f99, 0x7b23: 0xe0000f96, - 0x7b24: 0xe0000f8a, 0x7b25: 0xe0000f87, 0x7b26: 0x00303688, 0x7b27: 0x40303620, - 0x7b28: 0xe000102b, 0x7b29: 0xe0001028, 0x7b2a: 0xe000103f, 0x7b2b: 0xe000103c, - 0x7b2c: 0xe0000fe7, 0x7b2d: 0xe0000fe4, 0x7b2e: 0xe0000ff9, 0x7b2f: 0xe0000ff6, - 0x7b30: 0x003100c3, 0x7b31: 0x40310022, 0x7b32: 0xe0001039, 0x7b33: 0xe0001036, - 0x7b34: 0xe00010d8, 0x7b35: 0xe00010d5, 0x7b36: 0xe000110e, 0x7b37: 0xe000110b, - 0x7b38: 0xe0001117, 0x7b39: 0xe000113b, 0x7b3a: 0xe0001138, 0x7b3b: 0xe000114d, - 0x7b3c: 0xe000114a, 0x7b3d: 0xe0001147, 0x7b3e: 0xe0001144, 0x7b3f: 0xe0000f64, - // Block 0x1ed, offset 0x7b40 - 0x7b40: 0x40321220, 0x7b41: 0x40321a20, 0x7b42: 0x40322220, 0x7b43: 0x40322a20, - 0x7b44: 0xe0000ad5, 0x7b45: 0xe0000ad1, 0x7b46: 0xe0000acd, 0x7b47: 0xf0000a0a, - 0x7b48: 0xf000040a, 0x7b49: 0xf0000404, 0x7b4a: 0xf0000a0a, 0x7b4b: 0xf000040a, - 0x7b4c: 0xf0000404, 0x7b4d: 0xe0000947, 0x7b4e: 0xe0000944, 0x7b4f: 0xe0000c3d, - 0x7b50: 0xe0000c3a, 0x7b51: 0xe0000dcc, 0x7b52: 0xe0000dc9, 0x7b53: 0xe0000ff3, - 0x7b54: 0xe0000ff0, 0x7b55: 0xe0002685, 0x7b56: 0xe0002682, 0x7b57: 0xe0002673, - 0x7b58: 0xe0002670, 0x7b59: 0xe000267f, 0x7b5a: 0xe000267c, 0x7b5b: 0xe0002679, - 0x7b5c: 0xe0002676, 0x7b5d: 0x402cae20, 0x7b5e: 0xe0002697, 0x7b5f: 0xe0002694, - 0x7b60: 0xe0000976, 0x7b61: 0xe0000972, 0x7b62: 0xe0002691, 0x7b63: 0xe000268e, - 0x7b64: 0x002d3a88, 0x7b65: 0x402d3a20, 0x7b66: 0xe0000bbe, 0x7b67: 0xe0000bbb, - 0x7b68: 0xe0000c99, 0x7b69: 0xe0000c96, 0x7b6a: 0xe0000e20, 0x7b6b: 0xe0000e1d, - 0x7b6c: 0xe0000e27, 0x7b6d: 0xe0000e23, 0x7b6e: 0xe0001162, 0x7b6f: 0xe000115f, - 0x7b70: 0xe0000c8d, 0x7b71: 0xf0000a0a, 0x7b72: 0xf000040a, 0x7b73: 0xf0000404, - 0x7b74: 0xe0000bac, 0x7b75: 0xe0000ba9, 0x7b76: 0x002d7888, 0x7b77: 0x00319488, - 0x7b78: 0xe0000d57, 0x7b79: 0xe0000d54, 0x7b7a: 0xe00026af, 0x7b7b: 0xe00026ac, - 0x7b7c: 0xe000268b, 0x7b7d: 0xe0002688, 0x7b7e: 0xe000269d, 0x7b7f: 0xe000269a, - // Block 0x1ee, offset 0x7b80 - 0x7b80: 0xe000098f, 0x7b81: 0xe000098c, 0x7b82: 0xe0000995, 0x7b83: 0xe0000992, - 0x7b84: 0xe0000b62, 0x7b85: 0xe0000b5f, 0x7b86: 0xe0000b68, 0x7b87: 0xe0000b65, - 0x7b88: 0xe0000c6c, 0x7b89: 0xe0000c69, 0x7b8a: 0xe0000c72, 0x7b8b: 0xe0000c6f, - 0x7b8c: 0xe0000e4a, 0x7b8d: 0xe0000e47, 0x7b8e: 0xe0000e50, 0x7b8f: 0xe0000e4d, - 0x7b90: 0xe0000ee8, 0x7b91: 0xe0000ee5, 0x7b92: 0xe0000eee, 0x7b93: 0xe0000eeb, - 0x7b94: 0xe0001053, 0x7b95: 0xe0001050, 0x7b96: 0xe0001059, 0x7b97: 0xe0001056, - 0x7b98: 0xe0000f61, 0x7b99: 0xe0000f5e, 0x7b9a: 0xe0000fa5, 0x7b9b: 0xe0000fa2, - 0x7b9c: 0x00312288, 0x7b9d: 0x40312220, 0x7b9e: 0xe0000bf4, 0x7b9f: 0xe0000bf1, - 0x7ba0: 0x002ebc88, 0x7ba1: 0x402c8c20, 0x7ba2: 0x002f2288, 0x7ba3: 0x402f2220, - 0x7ba4: 0x00314088, 0x7ba5: 0x40314020, 0x7ba6: 0xe000096f, 0x7ba7: 0xe000096c, - 0x7ba8: 0xe0000b32, 0x7ba9: 0xe0000b2f, 0x7baa: 0xe00026a9, 0x7bab: 0xe00026a6, - 0x7bac: 0xe0000dfd, 0x7bad: 0xe0000df9, 0x7bae: 0xe0000e04, 0x7baf: 0xe0000e01, - 0x7bb0: 0xe0000e0b, 0x7bb1: 0xe0000e07, 0x7bb2: 0xe0001129, 0x7bb3: 0xe0001126, - 0x7bb4: 0x402e5e20, 0x7bb5: 0x402ed020, 0x7bb6: 0x40305a20, 0x7bb7: 0x402dd420, - 0x7bb8: 0xe0000abf, 0x7bb9: 0xe0000ec4, 0x7bba: 0x002be888, 0x7bbb: 0x002c4488, - 0x7bbc: 0x402c4420, 0x7bbd: 0x002e3888, 0x7bbe: 0x00303e88, 0x7bbf: 0x402ffc20, - // Block 0x1ef, offset 0x7bc0 - 0x7bc0: 0x402c2820, 0x7bc1: 0x402c7020, 0x7bc2: 0x402d1420, 0x7bc3: 0x402d4220, - 0x7bc4: 0x402e0820, 0x7bc5: 0x402e5220, 0x7bc6: 0x402e8e20, 0x7bc7: 0x402ec620, - 0x7bc8: 0x402f3c20, 0x7bc9: 0x402faa20, 0x7bca: 0x402ff220, 0x7bcb: 0x40301020, - 0x7bcc: 0x4030ca20, 0x7bcd: 0x4030fe20, 0x7bce: 0x40313e20, 0x7bcf: 0x402bea20, - 0x7bd0: 0x402c0020, 0x7bd1: 0x402c8220, 0x7bd2: 0x402caa20, 0x7bd3: 0x402cca20, - 0x7bd4: 0x402ce420, 0x7bd5: 0x402cc020, 0x7bd6: 0x402dc020, 0x7bd7: 0x402f0620, - 0x7bd8: 0x40302220, 0x7bd9: 0x40308620, 0x7bda: 0x40317620, 0x7bdb: 0x002c0294, - 0x7bdc: 0x002c3a94, 0x7bdd: 0x002c5694, 0x7bde: 0xe0002667, 0x7bdf: 0x002cdc94, - 0x7be0: 0x002d0894, 0x7be1: 0x002dee94, 0x7be2: 0x002d2a94, 0x7be3: 0x00308894, - 0x7be4: 0x002db694, 0x7be5: 0x002dc294, 0x7be6: 0x002daa94, 0x7be7: 0x002dbe94, - 0x7be8: 0x002de694, 0x7be9: 0x002e5494, 0x7bea: 0x002e5294, 0x7beb: 0x002e2a94, - 0x7bec: 0x002e9094, 0x7bed: 0x0030ac94, 0x7bee: 0x002eb494, 0x7bef: 0x002ec894, - 0x7bf0: 0x002ea694, 0x7bf1: 0x002f1094, 0x7bf2: 0x002f4c94, 0x7bf3: 0x002ff494, - 0x7bf4: 0x00300894, 0x7bf5: 0x00304294, 0x7bf6: 0x00307c94, 0x7bf7: 0x0030b494, - 0x7bf8: 0x00307494, 0x7bf9: 0x0030cc94, 0x7bfa: 0x0030da94, 0x7bfb: 0x00312a94, - 0x7bfc: 0x00314894, 0x7bfd: 0x00315094, 0x7bfe: 0x00316494, 0x7bff: 0x00326a94, - // Block 0x1f0, offset 0x7c00 - 0x7c00: 0xe0000d24, 0x7c01: 0xe0000d21, 0x7c02: 0xe0000d2a, 0x7c03: 0xe0000d27, - 0x7c04: 0xe0000d69, 0x7c05: 0xe0000d66, 0x7c06: 0xe0000d7b, 0x7c07: 0xe0000d78, - 0x7c08: 0xe0000d87, 0x7c09: 0xe0000d84, 0x7c0a: 0xe0000d81, 0x7c0b: 0xe0000d7e, - 0x7c0c: 0xe0000ded, 0x7c0d: 0xe0000de9, 0x7c0e: 0xe00026a3, 0x7c0f: 0xe00026a0, - 0x7c10: 0xe0000e3d, 0x7c11: 0xe0000e39, 0x7c12: 0xe0000e35, 0x7c13: 0xe0000e31, - 0x7c14: 0xe0000ea7, 0x7c15: 0xe0000ea4, 0x7c16: 0xe0000ead, 0x7c17: 0xe0000eaa, - 0x7c18: 0xe0000ed6, 0x7c19: 0xe0000ed3, 0x7c1a: 0xe0000ef4, 0x7c1b: 0xe0000ef1, - 0x7c1c: 0xe0000efb, 0x7c1d: 0xe0000ef7, 0x7c1e: 0xe0000f02, 0x7c1f: 0xe0000eff, - 0x7c20: 0xe0000f41, 0x7c21: 0xe0000f3e, 0x7c22: 0xe0000f53, 0x7c23: 0xe0000f50, - 0x7c24: 0xe0000f26, 0x7c25: 0xe0000f22, 0x7c26: 0xe0000f3a, 0x7c27: 0xe0000f36, - 0x7c28: 0xe0000f5a, 0x7c29: 0xe0000f56, 0x7c2a: 0xe0000f93, 0x7c2b: 0xe0000f90, - 0x7c2c: 0xe0000f9f, 0x7c2d: 0xe0000f9c, 0x7c2e: 0xe0000fb1, 0x7c2f: 0xe0000fae, - 0x7c30: 0xe0000fab, 0x7c31: 0xe0000fa8, 0x7c32: 0xe0001093, 0x7c33: 0xe0001090, - 0x7c34: 0xe000109f, 0x7c35: 0xe000109c, 0x7c36: 0xe0001099, 0x7c37: 0xe0001096, - 0x7c38: 0xe0001032, 0x7c39: 0xe000102e, 0x7c3a: 0xe0002685, 0x7c3b: 0xe0002682, - 0x7c3c: 0xe00010a9, 0x7c3d: 0xe00010a6, 0x7c3e: 0xe00010af, 0x7c3f: 0xe00010ac, - // Block 0x1f1, offset 0x7c40 - 0x7c40: 0xe00009bc, 0x7c41: 0xe00009c0, 0x7c42: 0x002c3a8b, 0x7c43: 0xf0000a04, - 0x7c44: 0x40081c20, 0x7c45: 0xe0000a5e, 0x7c46: 0xe0000a62, 0x7c47: 0x002cc28a, - 0x7c48: 0x40081e20, 0x7c49: 0xf0000a04, 0x7c4a: 0x002d2285, 0x7c4b: 0x002d688b, - 0x7c4c: 0x002d688b, 0x7c4d: 0x002d688b, 0x7c4e: 0x002d6885, 0x7c4f: 0xf0000202, - 0x7c50: 0x002d9a8b, 0x7c51: 0x002d9a8b, 0x7c52: 0x002e228b, 0x7c53: 0x002e2285, - 0x7c54: 0x40082020, 0x7c55: 0x002e9e8b, 0x7c56: 0xf000040a, 0x7c57: 0x40082220, - 0x7c58: 0x40082420, 0x7c59: 0x002f2c8b, 0x7c5a: 0x002f568b, 0x7c5b: 0x002f7a8b, - 0x7c5c: 0x002f7a8b, 0x7c5d: 0x002f7a8b, 0x7c5e: 0x40082620, 0x7c5f: 0x40082820, - 0x7c60: 0xf0001414, 0x7c61: 0xe0000fbd, 0x7c62: 0xf0001414, 0x7c63: 0x40082a20, - 0x7c64: 0x00312a8b, 0x7c65: 0x40082c20, 0x7c66: 0x0032a288, 0x7c67: 0x40082e20, - 0x7c68: 0x00312a8b, 0x7c69: 0x40083020, 0x7c6a: 0x002dfe88, 0x7c6b: 0x00321083, - 0x7c6c: 0x002c0a8b, 0x7c6d: 0x002c3a8b, 0x7c6e: 0x40083220, 0x7c6f: 0x002c9885, - 0x7c70: 0x002c988b, 0x7c71: 0x002d088b, 0x7c72: 0x002d1e88, 0x7c73: 0x002e828b, - 0x7c74: 0x002ee285, 0x7c75: 0x00389084, 0x7c76: 0x00389284, 0x7c77: 0x00389484, - 0x7c78: 0x00389684, 0x7c79: 0x002d9a85, 0x7c7a: 0x40083420, 0x7c7b: 0xe0000b95, - 0x7c7c: 0x00327e85, 0x7c7d: 0x00325685, 0x7c7e: 0x0032568b, 0x7c7f: 0x00327e8b, - // Block 0x1f2, offset 0x7c80 - 0x7c80: 0xa0000000, 0x7c81: 0xa0000000, 0x7c82: 0xa0000000, 0x7c83: 0xa0000000, - 0x7c84: 0xa0000000, 0x7c85: 0xa0000000, 0x7c86: 0xa0000000, 0x7c87: 0xa0000000, - 0x7c88: 0xa0000000, 0x7c89: 0x40020020, 0x7c8a: 0x40020220, 0x7c8b: 0x40020420, - 0x7c8c: 0x40020620, 0x7c8d: 0x40020820, 0x7c8e: 0xa0000000, 0x7c8f: 0xa0000000, - 0x7c90: 0xa0000000, 0x7c91: 0xa0000000, 0x7c92: 0xa0000000, 0x7c93: 0xa0000000, - 0x7c94: 0xa0000000, 0x7c95: 0xa0000000, 0x7c96: 0xa0000000, 0x7c97: 0xa0000000, - 0x7c98: 0xa0000000, 0x7c99: 0xa0000000, 0x7c9a: 0xa0000000, 0x7c9b: 0xa0000000, - 0x7c9c: 0xa0000000, 0x7c9d: 0xa0000000, 0x7c9e: 0xa0000000, 0x7c9f: 0xa0000000, - 0x7ca0: 0x40021220, 0x7ca1: 0x4002ba20, 0x7ca2: 0x4003e020, 0x7ca3: 0x4004ea20, - 0x7ca4: 0x4027de20, 0x7ca5: 0x4004ec20, 0x7ca6: 0x4004e620, 0x7ca7: 0x4003d220, - 0x7ca8: 0x4003f420, 0x7ca9: 0x4003f620, 0x7caa: 0x4004d820, 0x7cab: 0x40093820, - 0x7cac: 0x40024020, 0x7cad: 0x40021a20, 0x7cae: 0x4002e420, 0x7caf: 0x4004e220, - 0x7cb0: 0x4029cc20, 0x7cb1: 0x4029ce20, 0x7cb2: 0x4029d020, 0x7cb3: 0x4029d220, - 0x7cb4: 0x4029d420, 0x7cb5: 0x4029d620, 0x7cb6: 0x4029d820, 0x7cb7: 0x4029da20, - 0x7cb8: 0x4029dc20, 0x7cb9: 0x4029de20, 0x7cba: 0x40026c20, 0x7cbb: 0x40026220, - 0x7cbc: 0x40094020, 0x7cbd: 0xc32f0851, 0x7cbe: 0x40094420, 0x7cbf: 0x4002c420, - // Block 0x1f3, offset 0x7cc0 - 0x7cc0: 0x4004d620, 0x7cc1: 0xc39c0071, 0x7cc2: 0x002c0a88, 0x7cc3: 0x002c3a88, - 0x7cc4: 0x002c6288, 0x7cc5: 0x002c9888, 0x7cc6: 0x002d0888, 0x7cc7: 0x002d2288, - 0x7cc8: 0x002d6888, 0x7cc9: 0x002d9a88, 0x7cca: 0x002dcc88, 0x7ccb: 0x002dfe88, - 0x7ccc: 0xc0030002, 0x7ccd: 0x002e8288, 0x7cce: 0x002e9e88, 0x7ccf: 0xc3a00071, - 0x7cd0: 0x002f2c88, 0x7cd1: 0x002f5688, 0x7cd2: 0x002f7a88, 0x7cd3: 0x002fe688, - 0x7cd4: 0x00302c88, 0x7cd5: 0xc3a40071, 0x7cd6: 0x0030be88, 0x7cd7: 0x0030e288, - 0x7cd8: 0x0030f688, 0x7cd9: 0x00310088, 0x7cda: 0x00312a88, 0x7cdb: 0x4003f820, - 0x7cdc: 0x4004e420, 0x7cdd: 0x4003fa20, 0x7cde: 0x40062420, 0x7cdf: 0x40021620, - 0x7ce0: 0x40061e20, 0x7ce1: 0xc39a0071, 0x7ce2: 0x402c0a20, 0x7ce3: 0x402c3a20, - 0x7ce4: 0x402c6220, 0x7ce5: 0x402c9820, 0x7ce6: 0x402d0820, 0x7ce7: 0x402d2220, - 0x7ce8: 0x402d6820, 0x7ce9: 0x402d9a20, 0x7cea: 0x402dcc20, 0x7ceb: 0x402dfe20, - 0x7cec: 0xc0000002, 0x7ced: 0x402e8220, 0x7cee: 0x402e9e20, 0x7cef: 0xc39e0071, - 0x7cf0: 0x402f2c20, 0x7cf1: 0x402f5620, 0x7cf2: 0x402f7a20, 0x7cf3: 0x402fe620, - 0x7cf4: 0x40302c20, 0x7cf5: 0xc3a20071, 0x7cf6: 0x4030be20, 0x7cf7: 0x4030e220, - 0x7cf8: 0x4030f620, 0x7cf9: 0x40310020, 0x7cfa: 0x40312a20, 0x7cfb: 0x4003fc20, - 0x7cfc: 0x40094820, 0x7cfd: 0x4003fe20, 0x7cfe: 0x40094c20, 0x7cff: 0xa0000000, - // Block 0x1f4, offset 0x7d00 - 0x7d00: 0xe00008f5, 0x7d01: 0xe00008ef, 0x7d02: 0xe0000921, 0x7d03: 0xe0000969, - 0x7d04: 0xe00026b5, 0x7d05: 0xe000094d, 0x7d06: 0xe00009dd, 0x7d07: 0xe0000a53, - 0x7d08: 0xe0000ae8, 0x7d09: 0xe0000ae2, 0x7d0a: 0xe0000af4, 0x7d0b: 0xe0000b20, - 0x7d0c: 0xe0000c2b, 0x7d0d: 0xe0000c25, 0x7d0e: 0xe0000c37, 0x7d0f: 0xe0000c43, - 0x7d10: 0xe0000ab3, 0x7d11: 0xe0000d63, 0x7d12: 0xe0000d9a, 0x7d13: 0xe0000d94, - 0x7d14: 0xe0000da6, 0x7d15: 0xe0000de6, 0x7d16: 0xe00026c3, 0x7d17: 0x40093e20, - 0x7d18: 0xe0000e12, 0x7d19: 0xe0000fe1, 0x7d1a: 0xe0000fdb, 0x7d1b: 0xe0000fed, - 0x7d1c: 0xe00026d9, 0x7d1d: 0xe0001102, 0x7d1e: 0x00318888, 0x7d1f: 0xe0000f7b, - 0x7d20: 0xe00008f2, 0x7d21: 0xe00008ec, 0x7d22: 0xe000091e, 0x7d23: 0xe0000966, - 0x7d24: 0xe00026b2, 0x7d25: 0xe000094a, 0x7d26: 0xe00009d5, 0x7d27: 0xe0000a4d, - 0x7d28: 0xe0000ae5, 0x7d29: 0xe0000adf, 0x7d2a: 0xe0000af1, 0x7d2b: 0xe0000b1d, - 0x7d2c: 0xe0000c28, 0x7d2d: 0xe0000c22, 0x7d2e: 0xe0000c34, 0x7d2f: 0xe0000c40, - 0x7d30: 0xe0000aad, 0x7d31: 0xe0000d60, 0x7d32: 0xe0000d97, 0x7d33: 0xe0000d91, - 0x7d34: 0xe0000da3, 0x7d35: 0xe0000de3, 0x7d36: 0xe00026c0, 0x7d37: 0x40093c20, - 0x7d38: 0xe0000e0f, 0x7d39: 0xe0000fde, 0x7d3a: 0xe0000fd8, 0x7d3b: 0xe0000fea, - 0x7d3c: 0xe00026d6, 0x7d3d: 0xe00010ff, 0x7d3e: 0x40318820, 0x7d3f: 0xe0001114, - // Block 0x1f5, offset 0x7d40 - 0x7d40: 0x40321220, 0x7d41: 0x40321a20, 0x7d42: 0x40322220, 0x7d43: 0x40322a20, - 0x7d44: 0xe0000ad5, 0x7d45: 0xe0000ad1, 0x7d46: 0xe0000acd, 0x7d47: 0xf0000a0a, - 0x7d48: 0xf000040a, 0x7d49: 0xf0000404, 0x7d4a: 0xf0000a0a, 0x7d4b: 0xf000040a, - 0x7d4c: 0xf0000404, 0x7d4d: 0xe0000947, 0x7d4e: 0xe0000944, 0x7d4f: 0xe0000c3d, - 0x7d50: 0xe0000c3a, 0x7d51: 0xe0000dcc, 0x7d52: 0xe0000dc9, 0x7d53: 0xe0000ff3, - 0x7d54: 0xe0000ff0, 0x7d55: 0xe00026f8, 0x7d56: 0xe00026f4, 0x7d57: 0xe00026e0, - 0x7d58: 0xe00026dc, 0x7d59: 0xe00026f0, 0x7d5a: 0xe00026ec, 0x7d5b: 0xe00026e8, - 0x7d5c: 0xe00026e4, 0x7d5d: 0x402cae20, 0x7d5e: 0xe00026bc, 0x7d5f: 0xe00026b8, - 0x7d60: 0xe0000976, 0x7d61: 0xe0000972, 0x7d62: 0xe00009f4, 0x7d63: 0xe00009ef, - 0x7d64: 0x002d3a88, 0x7d65: 0x402d3a20, 0x7d66: 0xe0000bbe, 0x7d67: 0xe0000bbb, - 0x7d68: 0xe0000c99, 0x7d69: 0xe0000c96, 0x7d6a: 0xe0000e20, 0x7d6b: 0xe0000e1d, - 0x7d6c: 0xe0000e27, 0x7d6d: 0xe0000e23, 0x7d6e: 0xe0001162, 0x7d6f: 0xe000115f, - 0x7d70: 0xe0000c8d, 0x7d71: 0xf0000a0a, 0x7d72: 0xf000040a, 0x7d73: 0xf0000404, - 0x7d74: 0xe0000bac, 0x7d75: 0xe0000ba9, 0x7d76: 0x002d7888, 0x7d77: 0x00319488, - 0x7d78: 0xe0000d57, 0x7d79: 0xe0000d54, 0x7d7a: 0xe0000954, 0x7d7b: 0xe0000950, - 0x7d7c: 0xe00009ea, 0x7d7d: 0xe00009e5, 0x7d7e: 0xe0000e19, 0x7d7f: 0xe0000e15, - // Block 0x1f6, offset 0x7d80 - 0x7d80: 0xe000098f, 0x7d81: 0xe000098c, 0x7d82: 0xe0000995, 0x7d83: 0xe0000992, - 0x7d84: 0xe0000b62, 0x7d85: 0xe0000b5f, 0x7d86: 0xe0000b68, 0x7d87: 0xe0000b65, - 0x7d88: 0xe0000c6c, 0x7d89: 0xe0000c69, 0x7d8a: 0xe0000c72, 0x7d8b: 0xe0000c6f, - 0x7d8c: 0xe0000e4a, 0x7d8d: 0xe0000e47, 0x7d8e: 0xe0000e50, 0x7d8f: 0xe0000e4d, - 0x7d90: 0xe0000ee8, 0x7d91: 0xe0000ee5, 0x7d92: 0xe0000eee, 0x7d93: 0xe0000eeb, - 0x7d94: 0xe0001053, 0x7d95: 0xe0001050, 0x7d96: 0xe0001059, 0x7d97: 0xe0001056, - 0x7d98: 0xe0000f61, 0x7d99: 0xe0000f5e, 0x7d9a: 0xe0000fa5, 0x7d9b: 0xe0000fa2, - 0x7d9c: 0x00312288, 0x7d9d: 0x40312220, 0x7d9e: 0xe0000bf4, 0x7d9f: 0xe0000bf1, - 0x7da0: 0x002ebc88, 0x7da1: 0x402c8c20, 0x7da2: 0x002f2288, 0x7da3: 0x402f2220, - 0x7da4: 0x00314088, 0x7da5: 0x40314020, 0x7da6: 0xe000096f, 0x7da7: 0xe000096c, - 0x7da8: 0xe0000b32, 0x7da9: 0xe0000b2f, 0x7daa: 0xe00026d2, 0x7dab: 0xe00026ce, - 0x7dac: 0xe0000dfd, 0x7dad: 0xe0000df9, 0x7dae: 0xe0000e04, 0x7daf: 0xe0000e01, - 0x7db0: 0xe0000e0b, 0x7db1: 0xe0000e07, 0x7db2: 0xe0001129, 0x7db3: 0xe0001126, - 0x7db4: 0x402e5e20, 0x7db5: 0x402ed020, 0x7db6: 0x40305a20, 0x7db7: 0x402dd420, - 0x7db8: 0xe0000abf, 0x7db9: 0xe0000ec4, 0x7dba: 0x002be888, 0x7dbb: 0x002c4488, - 0x7dbc: 0x402c4420, 0x7dbd: 0x002e3888, 0x7dbe: 0x00303e88, 0x7dbf: 0x402ffc20, - // Block 0x1f7, offset 0x7dc0 - 0x7dc0: 0xe0000d24, 0x7dc1: 0xe0000d21, 0x7dc2: 0xe0000d2a, 0x7dc3: 0xe0000d27, - 0x7dc4: 0xe0000d69, 0x7dc5: 0xe0000d66, 0x7dc6: 0xe0000d7b, 0x7dc7: 0xe0000d78, - 0x7dc8: 0xe0000d87, 0x7dc9: 0xe0000d84, 0x7dca: 0xe0000d81, 0x7dcb: 0xe0000d7e, - 0x7dcc: 0xe0000ded, 0x7dcd: 0xe0000de9, 0x7dce: 0xe00026ca, 0x7dcf: 0xe00026c6, - 0x7dd0: 0xe0000e3d, 0x7dd1: 0xe0000e39, 0x7dd2: 0xe0000e35, 0x7dd3: 0xe0000e31, - 0x7dd4: 0xe0000ea7, 0x7dd5: 0xe0000ea4, 0x7dd6: 0xe0000ead, 0x7dd7: 0xe0000eaa, - 0x7dd8: 0xe0000ed6, 0x7dd9: 0xe0000ed3, 0x7dda: 0xe0000ef4, 0x7ddb: 0xe0000ef1, - 0x7ddc: 0xe0000efb, 0x7ddd: 0xe0000ef7, 0x7dde: 0xe0000f02, 0x7ddf: 0xe0000eff, - 0x7de0: 0xe0000f41, 0x7de1: 0xe0000f3e, 0x7de2: 0xe0000f53, 0x7de3: 0xe0000f50, - 0x7de4: 0xe0000f26, 0x7de5: 0xe0000f22, 0x7de6: 0xe0000f3a, 0x7de7: 0xe0000f36, - 0x7de8: 0xe0000f5a, 0x7de9: 0xe0000f56, 0x7dea: 0xe0000f93, 0x7deb: 0xe0000f90, - 0x7dec: 0xe0000f9f, 0x7ded: 0xe0000f9c, 0x7dee: 0xe0000fb1, 0x7def: 0xe0000fae, - 0x7df0: 0xe0000fab, 0x7df1: 0xe0000fa8, 0x7df2: 0xe0001093, 0x7df3: 0xe0001090, - 0x7df4: 0xe000109f, 0x7df5: 0xe000109c, 0x7df6: 0xe0001099, 0x7df7: 0xe0001096, - 0x7df8: 0xe0001032, 0x7df9: 0xe000102e, 0x7dfa: 0xe00026f8, 0x7dfb: 0xe00026f4, - 0x7dfc: 0xe00010a9, 0x7dfd: 0xe00010a6, 0x7dfe: 0xe00010af, 0x7dff: 0xe00010ac, - // Block 0x1f8, offset 0x7e00 - 0x7e00: 0xa0000000, 0x7e01: 0xa0000000, 0x7e02: 0xa0000000, 0x7e03: 0xa0000000, - 0x7e04: 0xa0000000, 0x7e05: 0xa0000000, 0x7e06: 0xa0000000, 0x7e07: 0xa0000000, - 0x7e08: 0xa0000000, 0x7e09: 0x40020020, 0x7e0a: 0x40020220, 0x7e0b: 0x40020420, - 0x7e0c: 0x40020620, 0x7e0d: 0x40020820, 0x7e0e: 0xa0000000, 0x7e0f: 0xa0000000, - 0x7e10: 0xa0000000, 0x7e11: 0xa0000000, 0x7e12: 0xa0000000, 0x7e13: 0xa0000000, - 0x7e14: 0xa0000000, 0x7e15: 0xa0000000, 0x7e16: 0xa0000000, 0x7e17: 0xa0000000, - 0x7e18: 0xa0000000, 0x7e19: 0xa0000000, 0x7e1a: 0xa0000000, 0x7e1b: 0xa0000000, - 0x7e1c: 0xa0000000, 0x7e1d: 0xa0000000, 0x7e1e: 0xa0000000, 0x7e1f: 0xa0000000, - 0x7e20: 0x40021220, 0x7e21: 0x4002ba20, 0x7e22: 0x4003e020, 0x7e23: 0x4004ea20, - 0x7e24: 0x4027de20, 0x7e25: 0x4004ec20, 0x7e26: 0x4004e620, 0x7e27: 0x4003d220, - 0x7e28: 0x4003f420, 0x7e29: 0x4003f620, 0x7e2a: 0x4004d820, 0x7e2b: 0x40093820, - 0x7e2c: 0x40024020, 0x7e2d: 0x40021a20, 0x7e2e: 0x4002e420, 0x7e2f: 0x4004e220, - 0x7e30: 0x4029cc20, 0x7e31: 0x4029ce20, 0x7e32: 0x4029d020, 0x7e33: 0x4029d220, - 0x7e34: 0x4029d420, 0x7e35: 0x4029d620, 0x7e36: 0x4029d820, 0x7e37: 0x4029da20, - 0x7e38: 0x4029dc20, 0x7e39: 0x4029de20, 0x7e3a: 0x40026c20, 0x7e3b: 0x40026220, - 0x7e3c: 0x40094020, 0x7e3d: 0xc32f0851, 0x7e3e: 0x40094420, 0x7e3f: 0x4002c420, - // Block 0x1f9, offset 0x7e40 - 0x7e40: 0x4004d620, 0x7e41: 0x002bde88, 0x7e42: 0x002c0a88, 0x7e43: 0x002c3a88, - 0x7e44: 0x002c6288, 0x7e45: 0x002c9888, 0x7e46: 0x002d0888, 0x7e47: 0x002d2288, - 0x7e48: 0x002d6888, 0x7e49: 0x002d9a88, 0x7e4a: 0x002dcc88, 0x7e4b: 0x002dfe88, - 0x7e4c: 0xc0030002, 0x7e4d: 0x002e8288, 0x7e4e: 0xc3690a31, 0x7e4f: 0x002ee288, - 0x7e50: 0x002f2c88, 0x7e51: 0x002f5688, 0x7e52: 0x002f7a88, 0x7e53: 0x002fe688, - 0x7e54: 0x00302c88, 0x7e55: 0x00306c88, 0x7e56: 0x0030be88, 0x7e57: 0x0030e288, - 0x7e58: 0x0030f688, 0x7e59: 0x00310088, 0x7e5a: 0x00312a88, 0x7e5b: 0x4003f820, - 0x7e5c: 0x4004e420, 0x7e5d: 0x4003fa20, 0x7e5e: 0x40062420, 0x7e5f: 0x40021620, - 0x7e60: 0x40061e20, 0x7e61: 0x402bde20, 0x7e62: 0x402c0a20, 0x7e63: 0x402c3a20, - 0x7e64: 0x402c6220, 0x7e65: 0x402c9820, 0x7e66: 0x402d0820, 0x7e67: 0x402d2220, - 0x7e68: 0x402d6820, 0x7e69: 0x402d9a20, 0x7e6a: 0x402dcc20, 0x7e6b: 0x402dfe20, - 0x7e6c: 0xc0000002, 0x7e6d: 0x402e8220, 0x7e6e: 0xc3670a31, 0x7e6f: 0x402ee220, - 0x7e70: 0x402f2c20, 0x7e71: 0x402f5620, 0x7e72: 0x402f7a20, 0x7e73: 0x402fe620, - 0x7e74: 0x40302c20, 0x7e75: 0x40306c20, 0x7e76: 0x4030be20, 0x7e77: 0x4030e220, - 0x7e78: 0x4030f620, 0x7e79: 0x40310020, 0x7e7a: 0x40312a20, 0x7e7b: 0x4003fc20, - 0x7e7c: 0x40094820, 0x7e7d: 0x4003fe20, 0x7e7e: 0x40094c20, 0x7e7f: 0xa0000000, - // Block 0x1fa, offset 0x7e80 - 0x7e80: 0xe00008f5, 0x7e81: 0xe00008ef, 0x7e82: 0xe0000921, 0x7e83: 0xe0000969, - 0x7e84: 0xe000095b, 0x7e85: 0xe000094d, 0x7e86: 0xe00009dd, 0x7e87: 0xe0000a53, - 0x7e88: 0xe0000ae8, 0x7e89: 0xe0000ae2, 0x7e8a: 0xe0000af4, 0x7e8b: 0xe0000b20, - 0x7e8c: 0xe0000c2b, 0x7e8d: 0xe0000c25, 0x7e8e: 0xe0000c37, 0x7e8f: 0xe0000c43, - 0x7e90: 0xe0000ab3, 0x7e91: 0x002ea083, 0x7e92: 0xe0000d9a, 0x7e93: 0xe0000d94, - 0x7e94: 0xe0000da6, 0x7e95: 0xe0000de6, 0x7e96: 0xe0000dd2, 0x7e97: 0x40093e20, - 0x7e98: 0xe0000e12, 0x7e99: 0xe0000fe1, 0x7e9a: 0xe0000fdb, 0x7e9b: 0xe0000fed, - 0x7e9c: 0xe0000fff, 0x7e9d: 0xe0001102, 0x7e9e: 0x00318888, 0x7e9f: 0xe0000f7b, - 0x7ea0: 0xe00008f2, 0x7ea1: 0xe00008ec, 0x7ea2: 0xe000091e, 0x7ea3: 0xe0000966, - 0x7ea4: 0xe0000958, 0x7ea5: 0xe000094a, 0x7ea6: 0xe00009d5, 0x7ea7: 0xe0000a4d, - 0x7ea8: 0xe0000ae5, 0x7ea9: 0xe0000adf, 0x7eaa: 0xe0000af1, 0x7eab: 0xe0000b1d, - 0x7eac: 0xe0000c28, 0x7ead: 0xe0000c22, 0x7eae: 0xe0000c34, 0x7eaf: 0xe0000c40, - 0x7eb0: 0xe0000aad, 0x7eb1: 0x402ea020, 0x7eb2: 0xe0000d97, 0x7eb3: 0xe0000d91, - 0x7eb4: 0xe0000da3, 0x7eb5: 0xe0000de3, 0x7eb6: 0xe0000dcf, 0x7eb7: 0x40093c20, - 0x7eb8: 0xe0000e0f, 0x7eb9: 0xe0000fde, 0x7eba: 0xe0000fd8, 0x7ebb: 0xe0000fea, - 0x7ebc: 0xe0000ffc, 0x7ebd: 0xe00010ff, 0x7ebe: 0x40318820, 0x7ebf: 0xe0001114, - // Block 0x1fb, offset 0x7ec0 - 0x7ec0: 0xa0000000, 0x7ec1: 0xa0000000, 0x7ec2: 0xa0000000, 0x7ec3: 0xa0000000, - 0x7ec4: 0xa0000000, 0x7ec5: 0xa0000000, 0x7ec6: 0xa0000000, 0x7ec7: 0xa0000000, - 0x7ec8: 0xa0000000, 0x7ec9: 0x40020020, 0x7eca: 0x40020220, 0x7ecb: 0x40020420, - 0x7ecc: 0x40020620, 0x7ecd: 0x40020820, 0x7ece: 0xa0000000, 0x7ecf: 0xa0000000, - 0x7ed0: 0xa0000000, 0x7ed1: 0xa0000000, 0x7ed2: 0xa0000000, 0x7ed3: 0xa0000000, - 0x7ed4: 0xa0000000, 0x7ed5: 0xa0000000, 0x7ed6: 0xa0000000, 0x7ed7: 0xa0000000, - 0x7ed8: 0xa0000000, 0x7ed9: 0xa0000000, 0x7eda: 0xa0000000, 0x7edb: 0xa0000000, - 0x7edc: 0xa0000000, 0x7edd: 0xa0000000, 0x7ede: 0xa0000000, 0x7edf: 0xa0000000, - 0x7ee0: 0x40021220, 0x7ee1: 0x4002ba20, 0x7ee2: 0x4003e020, 0x7ee3: 0x4004ea20, - 0x7ee4: 0x4027de20, 0x7ee5: 0x4004ec20, 0x7ee6: 0x4004e620, 0x7ee7: 0x4003d220, - 0x7ee8: 0x4003f420, 0x7ee9: 0x4003f620, 0x7eea: 0x4004d820, 0x7eeb: 0x40093820, - 0x7eec: 0x40024020, 0x7eed: 0x40021a20, 0x7eee: 0x4002e420, 0x7eef: 0x4004e220, - 0x7ef0: 0x4029cc20, 0x7ef1: 0x4029ce20, 0x7ef2: 0x4029d020, 0x7ef3: 0x4029d220, - 0x7ef4: 0x4029d420, 0x7ef5: 0x4029d620, 0x7ef6: 0x4029d820, 0x7ef7: 0x4029da20, - 0x7ef8: 0x4029dc20, 0x7ef9: 0x4029de20, 0x7efa: 0x40026c20, 0x7efb: 0x40026220, - 0x7efc: 0x40094020, 0x7efd: 0xc32f0851, 0x7efe: 0x40094420, 0x7eff: 0x4002c420, - // Block 0x1fc, offset 0x7f00 - 0x7f00: 0x4004d620, 0x7f01: 0xc3a90a51, 0x7f02: 0x002c0a88, 0x7f03: 0x002c3a88, - 0x7f04: 0x002c6288, 0x7f05: 0x002c9888, 0x7f06: 0x002d0888, 0x7f07: 0x002d2288, - 0x7f08: 0x002d6888, 0x7f09: 0x002d9a88, 0x7f0a: 0x002dcc88, 0x7f0b: 0x002dfe88, - 0x7f0c: 0xc0030002, 0x7f0d: 0x002e8288, 0x7f0e: 0x002e9e88, 0x7f0f: 0xc3b00a81, - 0x7f10: 0x002f2c88, 0x7f11: 0x002f5688, 0x7f12: 0x002f7a88, 0x7f13: 0x002fe688, - 0x7f14: 0x00302c88, 0x7f15: 0xc3840951, 0x7f16: 0x0030be88, 0x7f17: 0x0030bea3, - 0x7f18: 0x0030f688, 0x7f19: 0x00310088, 0x7f1a: 0x00312a88, 0x7f1b: 0x4003f820, - 0x7f1c: 0x4004e420, 0x7f1d: 0x4003fa20, 0x7f1e: 0x40062420, 0x7f1f: 0x40021620, - 0x7f20: 0x40061e20, 0x7f21: 0xc3a60a51, 0x7f22: 0x402c0a20, 0x7f23: 0x402c3a20, - 0x7f24: 0x402c6220, 0x7f25: 0x402c9820, 0x7f26: 0x402d0820, 0x7f27: 0x402d2220, - 0x7f28: 0x402d6820, 0x7f29: 0x402d9a20, 0x7f2a: 0x402dcc20, 0x7f2b: 0x402dfe20, - 0x7f2c: 0xc0000002, 0x7f2d: 0x402e8220, 0x7f2e: 0x402e9e20, 0x7f2f: 0xc3ac0a81, - 0x7f30: 0x402f2c20, 0x7f31: 0x402f5620, 0x7f32: 0x402f7a20, 0x7f33: 0x402fe620, - 0x7f34: 0x40302c20, 0x7f35: 0xc3810951, 0x7f36: 0x4030be20, 0x7f37: 0x4030be21, - 0x7f38: 0x4030f620, 0x7f39: 0x40310020, 0x7f3a: 0x40312a20, 0x7f3b: 0x4003fc20, - 0x7f3c: 0x40094820, 0x7f3d: 0x4003fe20, 0x7f3e: 0x40094c20, 0x7f3f: 0xa0000000, - // Block 0x1fd, offset 0x7f40 - 0x7f40: 0xe00008f5, 0x7f41: 0xe00008ef, 0x7f42: 0xe0000921, 0x7f43: 0xe0000969, - 0x7f44: 0x00320e83, 0x7f45: 0x00320c83, 0x7f46: 0x00320ea3, 0x7f47: 0xe0000a53, - 0x7f48: 0xe0000ae8, 0x7f49: 0xe0000ae2, 0x7f4a: 0xe0000af4, 0x7f4b: 0xe0000b20, - 0x7f4c: 0xe0000c2b, 0x7f4d: 0xe0000c25, 0x7f4e: 0xe0000c37, 0x7f4f: 0xe0000c43, - 0x7f50: 0x002c62a3, 0x7f51: 0xe0000d63, 0x7f52: 0xe0000d9a, 0x7f53: 0xe0000d94, - 0x7f54: 0xe0000da6, 0x7f55: 0x003210e3, 0x7f56: 0x00321083, 0x7f57: 0x40093e20, - 0x7f58: 0x003210a3, 0x7f59: 0xe0000fe1, 0x7f5a: 0xe0000fdb, 0x7f5b: 0xe0000fed, - 0x7f5c: 0x003100a3, 0x7f5d: 0xe0001102, 0x7f5e: 0xe0002716, 0x7f5f: 0xe0000f7b, - 0x7f60: 0xe00008f2, 0x7f61: 0xe00008ec, 0x7f62: 0xe000091e, 0x7f63: 0xe0000966, - 0x7f64: 0x40320e20, 0x7f65: 0x40320c20, 0x7f66: 0x40320e21, 0x7f67: 0xe0000a4d, - 0x7f68: 0xe0000ae5, 0x7f69: 0xe0000adf, 0x7f6a: 0xe0000af1, 0x7f6b: 0xe0000b1d, - 0x7f6c: 0xe0000c28, 0x7f6d: 0xe0000c22, 0x7f6e: 0xe0000c34, 0x7f6f: 0xe0000c40, - 0x7f70: 0x402c6221, 0x7f71: 0xe0000d60, 0x7f72: 0xe0000d97, 0x7f73: 0xe0000d91, - 0x7f74: 0xe0000da3, 0x7f75: 0x40321023, 0x7f76: 0x40321020, 0x7f77: 0x40093c20, - 0x7f78: 0x40321021, 0x7f79: 0xe0000fde, 0x7f7a: 0xe0000fd8, 0x7f7b: 0xe0000fea, - 0x7f7c: 0x40310021, 0x7f7d: 0xe00010ff, 0x7f7e: 0xe0002713, 0x7f7f: 0xe0001114, - // Block 0x1fe, offset 0x7f80 - 0x7f80: 0xe0000983, 0x7f81: 0xe0000980, 0x7f82: 0xe00008fb, 0x7f83: 0xe00008f8, - 0x7f84: 0xe000097d, 0x7f85: 0xe000097a, 0x7f86: 0xe0000a38, 0x7f87: 0xe0000a35, - 0x7f88: 0xe0000a3e, 0x7f89: 0xe0000a3b, 0x7f8a: 0xe0000a4a, 0x7f8b: 0xe0000a47, - 0x7f8c: 0xe0000a44, 0x7f8d: 0xe0000a41, 0x7f8e: 0xe0000a86, 0x7f8f: 0xe0000a83, - 0x7f90: 0x002c62c3, 0x7f91: 0x402c6222, 0x7f92: 0xe0000b46, 0x7f93: 0xe0000b43, - 0x7f94: 0xe0000aee, 0x7f95: 0xe0000aeb, 0x7f96: 0xe0000b2c, 0x7f97: 0xe0000b29, - 0x7f98: 0xe0000b40, 0x7f99: 0xe0000b3d, 0x7f9a: 0xe0000b1a, 0x7f9b: 0xe0000b17, - 0x7f9c: 0xe0000bb8, 0x7f9d: 0xe0000bb5, 0x7f9e: 0xe0000bb2, 0x7f9f: 0xe0000baf, - 0x7fa0: 0xe0000bc4, 0x7fa1: 0xe0000bc1, 0x7fa2: 0xe0000bca, 0x7fa3: 0xe0000bc7, - 0x7fa4: 0xe0000bee, 0x7fa5: 0xe0000beb, 0x7fa6: 0xe0000c1b, 0x7fa7: 0xe0000c18, - 0x7fa8: 0xe0000c51, 0x7fa9: 0xe0000c4e, 0x7faa: 0xe0000c60, 0x7fab: 0xe0000c5d, - 0x7fac: 0xe0000c31, 0x7fad: 0xe0000c2e, 0x7fae: 0xe0000c5a, 0x7faf: 0xe0000c57, - 0x7fb0: 0xe0000c54, 0x7fb1: 0x402da220, 0x7fb2: 0xf0000a0a, 0x7fb3: 0xf0000404, - 0x7fb4: 0xe0000c8a, 0x7fb5: 0xe0000c87, 0x7fb6: 0xe0000c9f, 0x7fb7: 0xe0000c9c, - 0x7fb8: 0x402f7220, 0x7fb9: 0xe0000ccc, 0x7fba: 0xe0000cc9, 0x7fbb: 0xe0000cd8, - 0x7fbc: 0xe0000cd5, 0x7fbd: 0xe0000cd2, 0x7fbe: 0xe0000ccf, 0x7fbf: 0xe0000d04, - // Block 0x1ff, offset 0x7fc0 - 0x7fc0: 0xe0000cfe, 0x7fc1: 0xe0000cf8, 0x7fc2: 0xe0000cf5, 0x7fc3: 0xe0000d51, - 0x7fc4: 0xe0000d4e, 0x7fc5: 0xe0000d6f, 0x7fc6: 0xe0000d6c, 0x7fc7: 0xe0000d5d, - 0x7fc8: 0xe0000d5a, 0x7fc9: 0xf0000404, 0x7fca: 0x002e9ea3, 0x7fcb: 0x402e9e21, - 0x7fcc: 0xe0000e2e, 0x7fcd: 0xe0000e2b, 0x7fce: 0xe0000da0, 0x7fcf: 0xe0000d9d, - 0x7fd0: 0x003210c3, 0x7fd1: 0x40321022, 0x7fd2: 0x00321103, 0x7fd3: 0x40321024, - 0x7fd4: 0xe0000eca, 0x7fd5: 0xe0000ec7, 0x7fd6: 0xe0000edc, 0x7fd7: 0xe0000ed9, - 0x7fd8: 0xe0000ed0, 0x7fd9: 0xe0000ecd, 0x7fda: 0xe0000f1f, 0x7fdb: 0xe0000f1c, - 0x7fdc: 0xe0000f2d, 0x7fdd: 0xe0000f2a, 0x7fde: 0xe0000f47, 0x7fdf: 0xe0000f44, - 0x7fe0: 0xe0000f33, 0x7fe1: 0xe0000f30, 0x7fe2: 0xe0000f99, 0x7fe3: 0xe0000f96, - 0x7fe4: 0xe0000f8a, 0x7fe5: 0xe0000f87, 0x7fe6: 0x00303688, 0x7fe7: 0x40303620, - 0x7fe8: 0xe000102b, 0x7fe9: 0xe0001028, 0x7fea: 0xe000103f, 0x7feb: 0xe000103c, - 0x7fec: 0xe0000fe7, 0x7fed: 0xe0000fe4, 0x7fee: 0xe0000ff9, 0x7fef: 0xe0000ff6, - 0x7ff0: 0x003100c3, 0x7ff1: 0x40310022, 0x7ff2: 0xe0001039, 0x7ff3: 0xe0001036, - 0x7ff4: 0xe0002728, 0x7ff5: 0xe0002725, 0x7ff6: 0xe000110e, 0x7ff7: 0xe000110b, - 0x7ff8: 0xe0001117, 0x7ff9: 0xe000113b, 0x7ffa: 0xe0001138, 0x7ffb: 0xe000114d, - 0x7ffc: 0xe000114a, 0x7ffd: 0xe0001147, 0x7ffe: 0xe0001144, 0x7fff: 0xe0000f64, - // Block 0x200, offset 0x8000 - 0x8000: 0x40321220, 0x8001: 0x40321a20, 0x8002: 0x40322220, 0x8003: 0x40322a20, - 0x8004: 0xe0000ad5, 0x8005: 0xe0000ad1, 0x8006: 0xe0000acd, 0x8007: 0xf0000a0a, - 0x8008: 0xf000040a, 0x8009: 0xf0000404, 0x800a: 0xf0000a0a, 0x800b: 0xf000040a, - 0x800c: 0xf0000404, 0x800d: 0xe0000947, 0x800e: 0xe0000944, 0x800f: 0xe0000c3d, - 0x8010: 0xe0000c3a, 0x8011: 0xe0000dcc, 0x8012: 0xe0000dc9, 0x8013: 0xe0000ff3, - 0x8014: 0xe0000ff0, 0x8015: 0xe0002685, 0x8016: 0xe0002682, 0x8017: 0xe0002673, - 0x8018: 0xe0002670, 0x8019: 0xe000267f, 0x801a: 0xe000267c, 0x801b: 0xe0002679, - 0x801c: 0xe0002676, 0x801d: 0x402cae20, 0x801e: 0xe000274c, 0x801f: 0xe0002749, - 0x8020: 0xe0000976, 0x8021: 0xe0000972, 0x8022: 0xe00026a9, 0x8023: 0xe00026a6, - 0x8024: 0x002d3a88, 0x8025: 0x402d3a20, 0x8026: 0xe0000bbe, 0x8027: 0xe0000bbb, - 0x8028: 0xe0000c99, 0x8029: 0xe0000c96, 0x802a: 0xe0000e20, 0x802b: 0xe0000e1d, - 0x802c: 0xe0000e27, 0x802d: 0xe0000e23, 0x802e: 0xe0001162, 0x802f: 0xe000115f, - 0x8030: 0xe0000c8d, 0x8031: 0xf0000a0a, 0x8032: 0xf000040a, 0x8033: 0xf0000404, - 0x8034: 0xe0000bac, 0x8035: 0xe0000ba9, 0x8036: 0x002d7888, 0x8037: 0x00319488, - 0x8038: 0xe0000d57, 0x8039: 0xe0000d54, 0x803a: 0xe000268b, 0x803b: 0xe0002688, - 0x803c: 0xe0002752, 0x803d: 0xe000274f, 0x803e: 0xe000275e, 0x803f: 0xe000275b, - // Block 0x201, offset 0x8040 - 0x8040: 0xe000098f, 0x8041: 0xe000098c, 0x8042: 0xe0000995, 0x8043: 0xe0000992, - 0x8044: 0xe0000b62, 0x8045: 0xe0000b5f, 0x8046: 0xe0000b68, 0x8047: 0xe0000b65, - 0x8048: 0xe0000c6c, 0x8049: 0xe0000c69, 0x804a: 0xe0000c72, 0x804b: 0xe0000c6f, - 0x804c: 0xe0000e4a, 0x804d: 0xe0000e47, 0x804e: 0xe0000e50, 0x804f: 0xe0000e4d, - 0x8050: 0xe0000ee8, 0x8051: 0xe0000ee5, 0x8052: 0xe0000eee, 0x8053: 0xe0000eeb, - 0x8054: 0xe0001053, 0x8055: 0xe0001050, 0x8056: 0xe0001059, 0x8057: 0xe0001056, - 0x8058: 0xe0000f61, 0x8059: 0xe0000f5e, 0x805a: 0xe0000fa5, 0x805b: 0xe0000fa2, - 0x805c: 0x00312288, 0x805d: 0x40312220, 0x805e: 0xe0000bf4, 0x805f: 0xe0000bf1, - 0x8060: 0x002ebc88, 0x8061: 0x402c8c20, 0x8062: 0x002f2288, 0x8063: 0x402f2220, - 0x8064: 0x00314088, 0x8065: 0x40314020, 0x8066: 0xe000096f, 0x8067: 0xe000096c, - 0x8068: 0xe0000b32, 0x8069: 0xe0000b2f, 0x806a: 0xe0002758, 0x806b: 0xe0002755, - 0x806c: 0xe0002776, 0x806d: 0xe0002773, 0x806e: 0xe0000e04, 0x806f: 0xe0000e01, - 0x8070: 0xe0000e0b, 0x8071: 0xe0000e07, 0x8072: 0xe0001129, 0x8073: 0xe0001126, - 0x8074: 0x402e5e20, 0x8075: 0x402ed020, 0x8076: 0x40305a20, 0x8077: 0x402dd420, - 0x8078: 0xe0000abf, 0x8079: 0xe0000ec4, 0x807a: 0x002be888, 0x807b: 0x002c4488, - 0x807c: 0x402c4420, 0x807d: 0x002e3888, 0x807e: 0x00303e88, 0x807f: 0x402ffc20, - // Block 0x202, offset 0x8080 - 0x8080: 0xe0000d24, 0x8081: 0xe0000d21, 0x8082: 0xe0000d2a, 0x8083: 0xe0000d27, - 0x8084: 0xe0000d69, 0x8085: 0xe0000d66, 0x8086: 0xe0000d7b, 0x8087: 0xe0000d78, - 0x8088: 0xe0000d87, 0x8089: 0xe0000d84, 0x808a: 0xe0000d81, 0x808b: 0xe0000d7e, - 0x808c: 0xe0002764, 0x808d: 0xe0002761, 0x808e: 0xe0002770, 0x808f: 0xe000276d, - 0x8090: 0xe0000e3d, 0x8091: 0xe0000e39, 0x8092: 0xe0000e35, 0x8093: 0xe0000e31, - 0x8094: 0xe0000ea7, 0x8095: 0xe0000ea4, 0x8096: 0xe0000ead, 0x8097: 0xe0000eaa, - 0x8098: 0xe0000ed6, 0x8099: 0xe0000ed3, 0x809a: 0xe0000ef4, 0x809b: 0xe0000ef1, - 0x809c: 0xe0000efb, 0x809d: 0xe0000ef7, 0x809e: 0xe0000f02, 0x809f: 0xe0000eff, - 0x80a0: 0xe0000f41, 0x80a1: 0xe0000f3e, 0x80a2: 0xe0000f53, 0x80a3: 0xe0000f50, - 0x80a4: 0xe0000f26, 0x80a5: 0xe0000f22, 0x80a6: 0xe0000f3a, 0x80a7: 0xe0000f36, - 0x80a8: 0xe0000f5a, 0x80a9: 0xe0000f56, 0x80aa: 0xe0000f93, 0x80ab: 0xe0000f90, - 0x80ac: 0xe0000f9f, 0x80ad: 0xe0000f9c, 0x80ae: 0xe0000fb1, 0x80af: 0xe0000fae, - 0x80b0: 0xe0000fab, 0x80b1: 0xe0000fa8, 0x80b2: 0xe0001093, 0x80b3: 0xe0001090, - 0x80b4: 0xe000109f, 0x80b5: 0xe000109c, 0x80b6: 0xe0001099, 0x80b7: 0xe0001096, - 0x80b8: 0xe0001032, 0x80b9: 0xe000102e, 0x80ba: 0xe0002685, 0x80bb: 0xe0002682, - 0x80bc: 0xe00010a9, 0x80bd: 0xe00010a6, 0x80be: 0xe00010af, 0x80bf: 0xe00010ac, - // Block 0x203, offset 0x80c0 - 0x80c0: 0xe0002722, 0x80c1: 0xe000271f, 0x80c2: 0xe000271c, 0x80c3: 0xe0002719, - 0x80c4: 0xe0002731, 0x80c5: 0xe000272e, 0x80c6: 0xe0002737, 0x80c7: 0xe0002734, - 0x80c8: 0xe000273d, 0x80c9: 0xe000273a, 0x80ca: 0xe00010fc, 0x80cb: 0xe00010f9, - 0x80cc: 0xe00010f6, 0x80cd: 0xe00010f3, 0x80ce: 0xe0001123, 0x80cf: 0xe0001120, - 0x80d0: 0xe0001141, 0x80d1: 0xe000113e, 0x80d2: 0xe0001153, 0x80d3: 0xe0001150, - 0x80d4: 0xe0001159, 0x80d5: 0xe0001156, 0x80d6: 0xe0000c15, 0x80d7: 0xe0000f8d, - 0x80d8: 0xe000272b, 0x80d9: 0xe0001111, 0x80da: 0xf0000404, 0x80db: 0xe0000f70, - 0x80dc: 0x40300420, 0x80dd: 0x40300620, 0x80de: 0xe0000f7f, 0x80df: 0x402c9620, - 0x80e0: 0xe000099b, 0x80e1: 0xe0000998, 0x80e2: 0xe0000989, 0x80e3: 0xe0000986, - 0x80e4: 0xe0000928, 0x80e5: 0xe0000924, 0x80e6: 0xe0000930, 0x80e7: 0xe000092c, - 0x80e8: 0xe0000940, 0x80e9: 0xe000093c, 0x80ea: 0xe0000938, 0x80eb: 0xe0000934, - 0x80ec: 0xe00009aa, 0x80ed: 0xe00009a6, 0x80ee: 0xe0000902, 0x80ef: 0xe00008fe, - 0x80f0: 0xe000090a, 0x80f1: 0xe0000906, 0x80f2: 0xe000091a, 0x80f3: 0xe0000916, - 0x80f4: 0xe0000912, 0x80f5: 0xe000090e, 0x80f6: 0xe00009a2, 0x80f7: 0xe000099e, - 0x80f8: 0xe0000b6e, 0x80f9: 0xe0000b6b, 0x80fa: 0xe0000b5c, 0x80fb: 0xe0000b59, - 0x80fc: 0xe0000b26, 0x80fd: 0xe0000b23, 0x80fe: 0xe0000afb, 0x80ff: 0xe0000af7, - // Block 0x204, offset 0x8100 - 0x8100: 0xe0000b03, 0x8101: 0xe0000aff, 0x8102: 0xe0000b13, 0x8103: 0xe0000b0f, - 0x8104: 0xe0000b0b, 0x8105: 0xe0000b07, 0x8106: 0xe0000b75, 0x8107: 0xe0000b71, - 0x8108: 0xe0000c66, 0x8109: 0xe0000c63, 0x810a: 0xe0000c78, 0x810b: 0xe0000c75, - 0x810c: 0xe0000e84, 0x810d: 0xe0000e81, 0x810e: 0xe0000e44, 0x810f: 0xe0000e41, - 0x8110: 0xe0000dad, 0x8111: 0xe0000da9, 0x8112: 0xe0000db5, 0x8113: 0xe0000db1, - 0x8114: 0xe0000dc5, 0x8115: 0xe0000dc1, 0x8116: 0xe000276a, 0x8117: 0xe0002767, - 0x8118: 0xe0000e8b, 0x8119: 0xe0000e87, 0x811a: 0xe0000e5d, 0x811b: 0xe0000e59, - 0x811c: 0xe0000e65, 0x811d: 0xe0000e61, 0x811e: 0xe0000e75, 0x811f: 0xe0000e71, - 0x8120: 0xe000277c, 0x8121: 0xe0002779, 0x8122: 0xe0000e7d, 0x8123: 0xe0000e79, - 0x8124: 0xe000108d, 0x8125: 0xe000108a, 0x8126: 0xe000104d, 0x8127: 0xe000104a, - 0x8128: 0xe0001066, 0x8129: 0xe0001062, 0x812a: 0xe000106e, 0x812b: 0xe000106a, - 0x812c: 0xe000107e, 0x812d: 0xe000107a, 0x812e: 0xe0001076, 0x812f: 0xe0001072, - 0x8130: 0xe0001086, 0x8131: 0xe0001082, 0x8132: 0xe0001108, 0x8133: 0xe0001105, - 0x8134: 0xe0001135, 0x8135: 0xe0001132, 0x8136: 0xe000112f, 0x8137: 0xe000112c, - 0x8138: 0xe000111d, 0x8139: 0xe000111a, 0x813a: 0xe0000d0a, 0x813b: 0xe0000d07, - 0x813c: 0x0030d888, 0x813d: 0x4030d820, 0x813e: 0x00312088, 0x813f: 0x40312020, - // Block 0x205, offset 0x8140 - 0x8140: 0xe00009bc, 0x8141: 0xe00009c0, 0x8142: 0x002c3a8b, 0x8143: 0xf0000a04, - 0x8144: 0x40081c20, 0x8145: 0xe0000a5e, 0x8146: 0xe0000a62, 0x8147: 0x002cc28a, - 0x8148: 0x40081e20, 0x8149: 0xf0000a04, 0x814a: 0x002d2285, 0x814b: 0x002d688b, - 0x814c: 0x002d688b, 0x814d: 0x002d688b, 0x814e: 0x002d6885, 0x814f: 0xf0000202, - 0x8150: 0x002d9a8b, 0x8151: 0x002d9a8b, 0x8152: 0x002e228b, 0x8153: 0x002e2285, - 0x8154: 0x40082020, 0x8155: 0x002e9e8b, 0x8156: 0xf000040a, 0x8157: 0x40082220, - 0x8158: 0x40082420, 0x8159: 0x002f2c8b, 0x815a: 0x002f568b, 0x815b: 0x002f7a8b, - 0x815c: 0x002f7a8b, 0x815d: 0x002f7a8b, 0x815e: 0x40082620, 0x815f: 0x40082820, - 0x8160: 0xf0001414, 0x8161: 0xe0000fbd, 0x8162: 0xf0001414, 0x8163: 0x40082a20, - 0x8164: 0x00312a8b, 0x8165: 0x40082c20, 0x8166: 0x0032a288, 0x8167: 0x40082e20, - 0x8168: 0x00312a8b, 0x8169: 0x40083020, 0x816a: 0x002dfe88, 0x816b: 0x00320c83, - 0x816c: 0x002c0a8b, 0x816d: 0x002c3a8b, 0x816e: 0x40083220, 0x816f: 0x002c9885, - 0x8170: 0x002c988b, 0x8171: 0x002d088b, 0x8172: 0x002d1e88, 0x8173: 0x002e828b, - 0x8174: 0x002ee285, 0x8175: 0x00389084, 0x8176: 0x00389284, 0x8177: 0x00389484, - 0x8178: 0x00389684, 0x8179: 0x002d9a85, 0x817a: 0x40083420, 0x817b: 0xe0000b95, - 0x817c: 0x00327e85, 0x817d: 0x00325685, 0x817e: 0x0032568b, 0x817f: 0x00327e8b, - // Block 0x206, offset 0x8180 - 0x8180: 0xe0000024, 0x8181: 0xe0000029, 0x8182: 0xe000002e, 0x8183: 0xe0000033, - 0x8184: 0xe0000038, 0x8185: 0xe000003d, 0x8186: 0xe0000042, 0x8187: 0xe0000047, - 0x8188: 0xf0001f04, 0x8189: 0xf0001f04, 0x818a: 0xf0001f04, 0x818b: 0xf0001f04, - 0x818c: 0xf0001f04, 0x818d: 0xf0001f04, 0x818e: 0xf0001f04, 0x818f: 0xf0001f04, - 0x8190: 0xf0001f04, 0x8191: 0xf0000404, 0x8192: 0xf0000404, 0x8193: 0xf0000404, - 0x8194: 0xf0000404, 0x8195: 0xf0000404, 0x8196: 0xf0000404, 0x8197: 0xf0000404, - 0x8198: 0xf0000404, 0x8199: 0xf0000404, 0x819a: 0xf0000404, 0x819b: 0xf0000404, - 0x819c: 0xf0000404, 0x819d: 0xf0000404, 0x819e: 0xf0000404, 0x819f: 0xf0000404, - 0x81a0: 0xf0000404, 0x81a1: 0xf0000404, 0x81a2: 0xf0000404, 0x81a3: 0xf0000404, - 0x81a4: 0xf0000404, 0x81a5: 0xf0000404, 0x81a6: 0xf0000404, 0x81a7: 0xf0000404, - 0x81a8: 0xf0000404, 0x81a9: 0xf0000404, 0x81aa: 0xf0000404, 0x81ab: 0xf0000404, - 0x81ac: 0xf0000404, 0x81ad: 0xf0000404, 0x81ae: 0xf0000404, 0x81af: 0xf0000404, - 0x81b0: 0xf0000404, 0x81b1: 0xf0000404, 0x81b2: 0xe00026fc, 0x81b3: 0xf0000404, - 0x81b4: 0xf0000404, 0x81b5: 0xf0000404, 0x81b6: 0x002bde8c, 0x81b7: 0x002c0a8c, - 0x81b8: 0x002c3a8c, 0x81b9: 0x002c628c, 0x81ba: 0x002c988c, 0x81bb: 0x002d088c, - 0x81bc: 0x002d228c, 0x81bd: 0x002d688c, 0x81be: 0x002d9a8c, 0x81bf: 0x002dcc8c, - // Block 0x207, offset 0x81c0 - 0x81c0: 0xf0001d1c, 0x81c1: 0xf0001d1c, 0x81c2: 0xf0001d1c, 0x81c3: 0xf0001d1c, - 0x81c4: 0xf0001d1c, 0x81c5: 0xf0001d1d, 0x81c6: 0xf0001d1d, 0x81c7: 0xf0001d1d, - 0x81c8: 0xe0000a6b, 0x81c9: 0xe0000cb4, 0x81ca: 0xf0001d1c, 0x81cb: 0xf0001d1c, - 0x81cc: 0xf0001d1c, 0x81cd: 0xf0001c1c, 0x81ce: 0xf0001c1c, 0x81cf: 0xf0001c1c, - 0x81d0: 0xf0001c1d, 0x81d1: 0xe0000cb9, 0x81d2: 0xe0000d36, 0x81d3: 0xe0000be3, - 0x81d4: 0xe0000fc5, 0x81d5: 0xf0001c1c, 0x81d6: 0xf0001c1c, 0x81d7: 0xf0001c1c, - 0x81d8: 0xf0001c1c, 0x81d9: 0xf0001c1c, 0x81da: 0xf0001c1c, 0x81db: 0xf0001c1c, - 0x81dc: 0xf0001c1c, 0x81dd: 0xf0001c1c, 0x81de: 0xf0001c1c, 0x81df: 0xe0000d3e, - 0x81e0: 0xe0000a72, 0x81e1: 0xf0001c1c, 0x81e2: 0xe0000cbd, 0x81e3: 0xe0000d42, - 0x81e4: 0xe0000a76, 0x81e5: 0xf0001c1c, 0x81e6: 0xe0000cc1, 0x81e7: 0xe0000d2d, - 0x81e8: 0xe0000d31, 0x81e9: 0xf0001c1d, 0x81ea: 0xe0000cc5, 0x81eb: 0xe0000d4a, - 0x81ec: 0xe0000be7, 0x81ed: 0xe0000f0b, 0x81ee: 0xe0000f0f, 0x81ef: 0xe0000f15, - 0x81f0: 0xf0001c1c, 0x81f1: 0xf0001c1c, 0x81f2: 0xf0001c1c, 0x81f3: 0xf0001c1c, - 0x81f4: 0xf0001d1c, 0x81f5: 0xf0001d1c, 0x81f6: 0xf0001d1c, 0x81f7: 0xf0001d1c, - 0x81f8: 0xf0001d1c, 0x81f9: 0xf0001d1d, 0x81fa: 0xe0002710, 0x81fb: 0xe000270d, - 0x81fc: 0xe000277f, 0x81fd: 0xe0002707, 0x81fe: 0xe0002704, 0x81ff: 0xe000270a, - // Block 0x208, offset 0x8200 - 0x8200: 0xf0001d1c, 0x8201: 0xf0001d1d, 0x8202: 0xe00009b7, 0x8203: 0xf0001c1d, - 0x8204: 0xf0001c1c, 0x8205: 0xf0001c1c, 0x8206: 0xe0000a66, 0x8207: 0xe0000a7a, - 0x8208: 0xf0001d1c, 0x8209: 0xf0001c1d, 0x820a: 0xf0001c1c, 0x820b: 0xf0001d1d, - 0x820c: 0xf0001c1c, 0x820d: 0xf0001d1d, 0x820e: 0xf0001d1d, 0x820f: 0xf0001c1c, - 0x8210: 0xf0001c1c, 0x8211: 0xf0001c1c, 0x8212: 0xe0000d0d, 0x8213: 0xf0001c1c, - 0x8214: 0xf0001c1c, 0x8215: 0xe0000d3a, 0x8216: 0xe0000d46, 0x8217: 0xf0001d1d, - 0x8218: 0xe0000eb0, 0x8219: 0xe0000eb8, 0x821a: 0xf0001d1d, 0x821b: 0xf0001c1c, - 0x821c: 0xf0001c1d, 0x821d: 0xe0002740, 0x821e: 0xe00010b2, 0x821f: 0xe00009c8, - 0x8220: 0xf0001f04, 0x8221: 0xf0001f04, 0x8222: 0xf0001f04, 0x8223: 0xf0001f04, - 0x8224: 0xf0001f04, 0x8225: 0xf0001f04, 0x8226: 0xf0001f04, 0x8227: 0xf0001f04, - 0x8228: 0xf0001f04, 0x8229: 0xf0000404, 0x822a: 0xf0000404, 0x822b: 0xf0000404, - 0x822c: 0xf0000404, 0x822d: 0xf0000404, 0x822e: 0xf0000404, 0x822f: 0xf0000404, - 0x8230: 0xf0000404, 0x8231: 0xf0000404, 0x8232: 0xf0000404, 0x8233: 0xf0000404, - 0x8234: 0xf0000404, 0x8235: 0xf0000404, 0x8236: 0xf0000404, 0x8237: 0xf0000404, - 0x8238: 0xf0000404, 0x8239: 0xf0000404, 0x823a: 0xf0000404, 0x823b: 0xf0000404, - 0x823c: 0xf0000404, 0x823d: 0xf0000404, 0x823e: 0xf0000404, 0x823f: 0xe0000bdf, - // Block 0x209, offset 0x8240 - 0x8240: 0xf0001f04, 0x8241: 0xf0001f04, 0x8242: 0xf0001f04, 0x8243: 0xf0001f04, - 0x8244: 0xf0001f04, 0x8245: 0xf0001f04, 0x8246: 0xf0001f04, 0x8247: 0xf0001f04, - 0x8248: 0xf0001f04, 0x8249: 0xf0001f04, 0x824a: 0xf0001f04, - 0x8250: 0xf0000a04, 0x8251: 0xf0000a04, 0x8252: 0xf0000a04, 0x8253: 0xf0000a04, - 0x8254: 0xf0000a04, 0x8255: 0xf0000a04, 0x8256: 0xf0000a04, 0x8257: 0xf0000a04, - 0x8258: 0xf0000a04, 0x8259: 0xf0000a04, 0x825a: 0xf0000a04, 0x825b: 0xf0000a04, - 0x825c: 0xf0000a04, 0x825d: 0xf0000a04, 0x825e: 0xf0000a04, 0x825f: 0xf0000a04, - 0x8260: 0xf0000a04, 0x8261: 0xf0000a04, 0x8262: 0xf0000a04, 0x8263: 0xf0000a04, - 0x8264: 0xf0000a04, 0x8265: 0xf0000a04, 0x8266: 0xe0002700, 0x8267: 0xf0000a04, - 0x8268: 0xf0000a04, 0x8269: 0xf0000a04, 0x826a: 0xf0000a04, 0x826b: 0x002c3a8c, - 0x826c: 0x002f7a8c, 0x826d: 0xf0000c0c, 0x826e: 0xe0002746, - 0x8270: 0x002bde9d, 0x8271: 0x002c0a9d, 0x8272: 0x002c3a9d, 0x8273: 0x002c629d, - 0x8274: 0x002c989d, 0x8275: 0x002d089d, 0x8276: 0x002d229d, 0x8277: 0x002d689d, - 0x8278: 0x002d9a9d, 0x8279: 0x002dcc9d, 0x827a: 0x002dfe9d, 0x827b: 0x002e229d, - 0x827c: 0x002e829d, 0x827d: 0x002e9e9d, 0x827e: 0x002ee29d, 0x827f: 0x002f2c9d, - // Block 0x20a, offset 0x8280 - 0x8280: 0x002f569d, 0x8281: 0x002f7a9d, 0x8282: 0x002fe69d, 0x8283: 0x00302c9d, - 0x8284: 0x00306c9d, 0x8285: 0x0030be9d, 0x8286: 0x0030e29d, 0x8287: 0x0030f69d, - 0x8288: 0x0031009d, 0x8289: 0x00312a9d, 0x828a: 0xf0001d1d, 0x828b: 0xf0001d1d, - 0x828c: 0xf0001d1d, 0x828d: 0xf0001d1d, 0x828e: 0xe0000ebc, 0x828f: 0xe0002743, - 0x8290: 0x002bde8c, 0x8291: 0x002c0a8c, 0x8292: 0x002c3a8c, 0x8293: 0x002c628c, - 0x8294: 0x002c988c, 0x8295: 0x002d088c, 0x8296: 0x002d228c, 0x8297: 0x002d688c, - 0x8298: 0x002d9a8c, 0x8299: 0x002dcc8c, 0x829a: 0x002dfe8c, 0x829b: 0x002e228c, - 0x829c: 0x002e828c, 0x829d: 0x002e9e8c, 0x829e: 0x002ee28c, 0x829f: 0x002f2c8c, - 0x82a0: 0x002f568c, 0x82a1: 0x002f7a8c, 0x82a2: 0x002fe68c, 0x82a3: 0x00302c8c, - 0x82a4: 0x00306c8c, 0x82a5: 0x0030be8c, 0x82a6: 0x0030e28c, 0x82a7: 0x0030f68c, - 0x82a8: 0x0031008c, 0x82a9: 0x00312a8c, 0x82aa: 0xf0001414, 0x82ab: 0xf0001414, - 0x82b0: 0x002bde9d, 0x82b1: 0x002c0a9d, 0x82b2: 0x002c3a9d, 0x82b3: 0x002c629d, - 0x82b4: 0x002c989d, 0x82b5: 0x002d089d, 0x82b6: 0x002d229d, 0x82b7: 0x002d689d, - 0x82b8: 0x002d9a9d, 0x82b9: 0x002dcc9d, 0x82ba: 0x002dfe9d, 0x82bb: 0x002e229d, - 0x82bc: 0x002e829d, 0x82bd: 0x002e9e9d, 0x82be: 0x002ee29d, 0x82bf: 0x002f2c9d, - // Block 0x20b, offset 0x82c0 - 0x82c0: 0xa0000000, 0x82c1: 0xa0000000, 0x82c2: 0xa0000000, 0x82c3: 0xa0000000, - 0x82c4: 0xa0000000, 0x82c5: 0xa0000000, 0x82c6: 0xa0000000, 0x82c7: 0xa0000000, - 0x82c8: 0xa0000000, 0x82c9: 0x40020020, 0x82ca: 0x40020220, 0x82cb: 0x40020420, - 0x82cc: 0x40020620, 0x82cd: 0x40020820, 0x82ce: 0xa0000000, 0x82cf: 0xa0000000, - 0x82d0: 0xa0000000, 0x82d1: 0xa0000000, 0x82d2: 0xa0000000, 0x82d3: 0xa0000000, - 0x82d4: 0xa0000000, 0x82d5: 0xa0000000, 0x82d6: 0xa0000000, 0x82d7: 0xa0000000, - 0x82d8: 0xa0000000, 0x82d9: 0xa0000000, 0x82da: 0xa0000000, 0x82db: 0xa0000000, - 0x82dc: 0xa0000000, 0x82dd: 0xa0000000, 0x82de: 0xa0000000, 0x82df: 0xa0000000, - 0x82e0: 0x40021220, 0x82e1: 0x4002ba20, 0x82e2: 0xa0002402, 0x82e3: 0x4004ea20, - 0x82e4: 0x4027de20, 0x82e5: 0x4004ec20, 0x82e6: 0x4004e620, 0x82e7: 0xa0002202, - 0x82e8: 0x4003f420, 0x82e9: 0x4003f620, 0x82ea: 0x4004d820, 0x82eb: 0x40093820, - 0x82ec: 0x40024020, 0x82ed: 0x40021a20, 0x82ee: 0x4002e420, 0x82ef: 0x4004e220, - 0x82f0: 0x4029cc20, 0x82f1: 0x4029ce20, 0x82f2: 0x4029d020, 0x82f3: 0x4029d220, - 0x82f4: 0x4029d420, 0x82f5: 0x4029d620, 0x82f6: 0x4029d820, 0x82f7: 0x4029da20, - 0x82f8: 0x4029dc20, 0x82f9: 0x4029de20, 0x82fa: 0x40026c20, 0x82fb: 0x40026220, - 0x82fc: 0x40094020, 0x82fd: 0xc32f0851, 0x82fe: 0x40094420, 0x82ff: 0x4002c420, - // Block 0x20c, offset 0x8300 - 0x8300: 0x4004d620, 0x8301: 0x002bde88, 0x8302: 0x002c0a88, 0x8303: 0x002c3a88, - 0x8304: 0x002c6288, 0x8305: 0x002c9888, 0x8306: 0x002d0888, 0x8307: 0x002d2288, - 0x8308: 0x002d6888, 0x8309: 0x002d9a88, 0x830a: 0x002dcc88, 0x830b: 0x002dfe88, - 0x830c: 0xc0030002, 0x830d: 0x002e8288, 0x830e: 0x002e9e88, 0x830f: 0x002ee288, - 0x8310: 0x002f2c88, 0x8311: 0x002f5688, 0x8312: 0x002f7a88, 0x8313: 0x002fe688, - 0x8314: 0x00302c88, 0x8315: 0x00306c88, 0x8316: 0x0030be88, 0x8317: 0x0030e288, - 0x8318: 0x0030f688, 0x8319: 0x00310088, 0x831a: 0x00312a88, 0x831b: 0x4003f820, - 0x831c: 0x4004e420, 0x831d: 0x4003fa20, 0x831e: 0x40062420, 0x831f: 0x40021620, - 0x8320: 0x40061e20, 0x8321: 0x402bde20, 0x8322: 0x402c0a20, 0x8323: 0x402c3a20, - 0x8324: 0x402c6220, 0x8325: 0x402c9820, 0x8326: 0x402d0820, 0x8327: 0x402d2220, - 0x8328: 0x402d6820, 0x8329: 0x402d9a20, 0x832a: 0x402dcc20, 0x832b: 0x402dfe20, - 0x832c: 0xc0000002, 0x832d: 0x402e8220, 0x832e: 0x402e9e20, 0x832f: 0x402ee220, - 0x8330: 0x402f2c20, 0x8331: 0x402f5620, 0x8332: 0x402f7a20, 0x8333: 0x402fe620, - 0x8334: 0x40302c20, 0x8335: 0x40306c20, 0x8336: 0x4030be20, 0x8337: 0x4030e220, - 0x8338: 0x4030f620, 0x8339: 0x40310020, 0x833a: 0x40312a20, 0x833b: 0x4003fc20, - 0x833c: 0x40094820, 0x833d: 0x4003fe20, 0x833e: 0x40094c20, 0x833f: 0xa0000000, - // Block 0x20d, offset 0x8340 - 0x8340: 0x40055620, 0x8341: 0xa1809102, 0x8342: 0xa1909002, 0x8343: 0x40055820, - 0x8344: 0xae600000, 0x8345: 0xadc00000, 0x8346: 0x40055a20, 0x8347: 0xa1208d02, - 0x8350: 0x40389020, 0x8351: 0x40389220, 0x8352: 0x40389420, 0x8353: 0x40389620, - 0x8354: 0x40389820, 0x8355: 0x40389a20, 0x8356: 0x40389c20, 0x8357: 0x40389e20, - 0x8358: 0x4038a020, 0x8359: 0x4038a220, 0x835a: 0x0038a499, 0x835b: 0x4038a420, - 0x835c: 0x4038a620, 0x835d: 0x0038a899, 0x835e: 0x4038a820, 0x835f: 0x0038aa99, - 0x8360: 0x4038aa20, 0x8361: 0x4038ac20, 0x8362: 0x4038ae20, 0x8363: 0x0038b099, - 0x8364: 0x4038b020, 0x8365: 0x0038b299, 0x8366: 0x4038b220, 0x8367: 0x4038b420, - 0x8368: 0x4038b620, 0x8369: 0x4038b820, 0x836a: 0x4038ba20, - 0x8370: 0xe00014ff, 0x8371: 0xe0001502, 0x8372: 0xe0001511, 0x8373: 0xa0002102, - 0x8374: 0xa0002302, - // Block 0x20e, offset 0x8380 - 0x8380: 0xa0002502, 0x8381: 0x4039fc20, 0x8382: 0x403a1220, 0x8383: 0x403a1a20, - 0x8384: 0x403a4020, 0x8385: 0x403a4e20, 0x8386: 0x403a5620, 0x8387: 0x403a6820, - 0x8388: 0xc3350171, 0x8389: 0x403a9222, 0x838a: 0xc3370171, 0x838b: 0xa1b0a202, - 0x838c: 0xa1c0a502, 0x838d: 0xa1d0a902, 0x838e: 0xa1e0ad02, 0x838f: 0xa1f0b202, - 0x8390: 0xa200b602, 0x8391: 0xa210ba02, 0x8392: 0xa220bc02, 0x8393: 0xae60bd02, - 0x8394: 0xae60be02, 0x8395: 0xadc0bf02, 0x8396: 0xadc0c102, 0x8397: 0xae60c202, - 0x8398: 0xae60c302, 0x8399: 0xae60c402, 0x839a: 0xae60c502, 0x839b: 0xae60c602, - 0x839c: 0xadc0c702, 0x839d: 0xae60c802, 0x839e: 0xae60c902, 0x839f: 0xadc0c002, - 0x83a0: 0xe000015e, 0x83a1: 0xe00001e6, 0x83a2: 0xe0000301, 0x83a3: 0xe00003db, - 0x83a4: 0xe00004b6, 0x83a5: 0xe0000580, 0x83a6: 0xe000064b, 0x83a7: 0xe00006f3, - 0x83a8: 0xe000079f, 0x83a9: 0xe0000844, 0x83aa: 0x4004ee20, 0x83ab: 0x40024c20, - 0x83ac: 0x40024e20, 0x83ad: 0x4004de20, 0x83ae: 0x40393a20, 0x83af: 0x403a1020, - 0x83b0: 0xa230d102, 0x83b1: 0x40392420, 0x83b2: 0x40392220, 0x83b3: 0x40392a20, - 0x83b4: 0x00391c84, 0x83b5: 0xf0000404, 0x83b6: 0xf0000404, 0x83b7: 0xf0000404, - 0x83b8: 0xf0000404, 0x83b9: 0x40395a20, 0x83ba: 0x40395c20, 0x83bb: 0x40393e20, - 0x83bc: 0x40395e20, 0x83bd: 0x40396020, 0x83be: 0x40394020, 0x83bf: 0x40396220, - // Block 0x20f, offset 0x83c0 - 0x83c1: 0x40491020, 0x83c2: 0x40491220, 0x83c3: 0x40491420, - 0x83c4: 0x40491620, 0x83c5: 0x40491820, 0x83c6: 0x40491a20, 0x83c7: 0x40491c20, - 0x83c8: 0x40491e20, 0x83c9: 0x40492020, 0x83ca: 0x40492220, 0x83cb: 0x40492420, - 0x83cc: 0x40492620, 0x83cd: 0x40492820, 0x83ce: 0x40492a20, 0x83cf: 0x40492c20, - 0x83d0: 0x40492e20, 0x83d1: 0x40493020, 0x83d2: 0x40493220, 0x83d3: 0x40493420, - 0x83d4: 0x40493620, 0x83d5: 0x40493820, 0x83d6: 0x40493a20, 0x83d7: 0x40493c20, - 0x83d8: 0x40493e20, 0x83d9: 0x40494020, 0x83da: 0x40494220, 0x83db: 0x40494420, - 0x83dc: 0x40494620, 0x83dd: 0x40494820, 0x83de: 0x40494a20, 0x83df: 0x40494c20, - 0x83e0: 0x40494e20, 0x83e1: 0x40495020, 0x83e2: 0x40495220, 0x83e3: 0x40495420, - 0x83e4: 0x40495620, 0x83e5: 0x40495820, 0x83e6: 0x40495a20, 0x83e7: 0x40495c20, - 0x83e8: 0x40495e20, 0x83e9: 0x40496020, 0x83ea: 0x40496220, 0x83eb: 0x40496420, - 0x83ec: 0x40496620, 0x83ed: 0x40496820, 0x83ee: 0x40496a20, 0x83ef: 0x40496c20, - 0x83f0: 0x40496e20, 0x83f1: 0x40497020, 0x83f2: 0x40497220, 0x83f3: 0x40497420, - 0x83f4: 0x40497620, 0x83f5: 0x40497820, 0x83f6: 0x40497a20, 0x83f7: 0x40497c20, - 0x83f8: 0x826724bf, 0x83f9: 0x826724c0, 0x83fa: 0xa0002602, - 0x83ff: 0x4027f420, - // Block 0x210, offset 0x8400 - 0x8400: 0xa0000000, 0x8401: 0xa0000000, 0x8402: 0xa0000000, 0x8403: 0xa0000000, - 0x8404: 0xa0000000, 0x8405: 0xa0000000, 0x8406: 0xa0000000, 0x8407: 0xa0000000, - 0x8408: 0xa0000000, 0x8409: 0x40020020, 0x840a: 0x40020220, 0x840b: 0x40020420, - 0x840c: 0x40020620, 0x840d: 0x40020820, 0x840e: 0xa0000000, 0x840f: 0xa0000000, - 0x8410: 0xa0000000, 0x8411: 0xa0000000, 0x8412: 0xa0000000, 0x8413: 0xa0000000, - 0x8414: 0xa0000000, 0x8415: 0xa0000000, 0x8416: 0xa0000000, 0x8417: 0xa0000000, - 0x8418: 0xa0000000, 0x8419: 0xa0000000, 0x841a: 0xa0000000, 0x841b: 0xa0000000, - 0x841c: 0xa0000000, 0x841d: 0xa0000000, 0x841e: 0xa0000000, 0x841f: 0xa0000000, - 0x8420: 0x40021220, 0x8421: 0x4002ba20, 0x8422: 0x4003e020, 0x8423: 0x4004ea20, - 0x8424: 0x4027de20, 0x8425: 0x4004ec20, 0x8426: 0x4004e620, 0x8427: 0x4003d220, - 0x8428: 0x4003f420, 0x8429: 0x4003f620, 0x842a: 0x4004d820, 0x842b: 0x40093820, - 0x842c: 0x40024020, 0x842d: 0x40021a20, 0x842e: 0x4002e420, 0x842f: 0x4004e220, - 0x8430: 0x4029cc20, 0x8431: 0x4029ce20, 0x8432: 0x4029d020, 0x8433: 0x4029d220, - 0x8434: 0x4029d420, 0x8435: 0x4029d620, 0x8436: 0x4029d820, 0x8437: 0x4029da20, - 0x8438: 0x4029dc20, 0x8439: 0x4029de20, 0x843a: 0x40026c20, 0x843b: 0x40026220, - 0x843c: 0x40094020, 0x843d: 0xc32f0851, 0x843e: 0x40094420, 0x843f: 0x4002c420, - // Block 0x211, offset 0x8440 - 0x8440: 0x4004d620, 0x8441: 0x002bde88, 0x8442: 0x002c0a88, 0x8443: 0xc3b708f1, - 0x8444: 0xc3bd0b13, 0x8445: 0x002c9888, 0x8446: 0x002d0888, 0x8447: 0x002d2288, - 0x8448: 0x002d6888, 0x8449: 0x002d9a88, 0x844a: 0x002dcc88, 0x844b: 0x002dfe88, - 0x844c: 0xc3c60be4, 0x844d: 0x002e8288, 0x844e: 0xc3cb0c52, 0x844f: 0x002ee288, - 0x8450: 0x002f2c88, 0x8451: 0x002f5688, 0x8452: 0x002f7a88, 0x8453: 0xc34908d1, - 0x8454: 0x00302c88, 0x8455: 0x00306c88, 0x8456: 0x0030be88, 0x8457: 0x0030e288, - 0x8458: 0x0030f688, 0x8459: 0x00310088, 0x845a: 0xc37f08d1, 0x845b: 0x4003f820, - 0x845c: 0x4004e420, 0x845d: 0x4003fa20, 0x845e: 0x40062420, 0x845f: 0x40021620, - 0x8460: 0x40061e20, 0x8461: 0x402bde20, 0x8462: 0x402c0a20, 0x8463: 0xc3b408f1, - 0x8464: 0xc3ba0ac2, 0x8465: 0x402c9820, 0x8466: 0x402d0820, 0x8467: 0x402d2220, - 0x8468: 0x402d6820, 0x8469: 0x402d9a20, 0x846a: 0x402dcc20, 0x846b: 0x402dfe20, - 0x846c: 0xc3c20b93, 0x846d: 0x402e8220, 0x846e: 0xc3670c41, 0x846f: 0x402ee220, - 0x8470: 0x402f2c20, 0x8471: 0x402f5620, 0x8472: 0x402f7a20, 0x8473: 0xc34708d1, - 0x8474: 0x40302c20, 0x8475: 0x40306c20, 0x8476: 0x4030be20, 0x8477: 0x4030e220, - 0x8478: 0x4030f620, 0x8479: 0x40310020, 0x847a: 0xc37d08d1, 0x847b: 0x4003fc20, - 0x847c: 0x40094820, 0x847d: 0x4003fe20, 0x847e: 0x40094c20, 0x847f: 0xa0000000, - // Block 0x212, offset 0x8480 - 0x8480: 0xe0000983, 0x8481: 0xe0000980, 0x8482: 0xe00008fb, 0x8483: 0xe00008f8, - 0x8484: 0xe000097d, 0x8485: 0xe000097a, 0x8486: 0x002c3e83, 0x8487: 0x402c3e20, - 0x8488: 0xe0000a3e, 0x8489: 0xe0000a3b, 0x848a: 0xe0000a4a, 0x848b: 0xe0000a47, - 0x848c: 0x002c3c83, 0x848d: 0x402c3c20, 0x848e: 0xe0000a86, 0x848f: 0xe0000a83, - 0x8490: 0x002c6683, 0x8491: 0x402c6620, 0x8492: 0xe0000b46, 0x8493: 0xe0000b43, - 0x8494: 0xe0000aee, 0x8495: 0xe0000aeb, 0x8496: 0xe0000b2c, 0x8497: 0xe0000b29, - 0x8498: 0xe0000b40, 0x8499: 0xe0000b3d, 0x849a: 0xe0000b1a, 0x849b: 0xe0000b17, - 0x849c: 0xe0000bb8, 0x849d: 0xe0000bb5, 0x849e: 0xe0000bb2, 0x849f: 0xe0000baf, - 0x84a0: 0xe0000bc4, 0x84a1: 0xe0000bc1, 0x84a2: 0xe0000bca, 0x84a3: 0xe0000bc7, - 0x84a4: 0xe0000bee, 0x84a5: 0xe0000beb, 0x84a6: 0xe0000c1b, 0x84a7: 0xe0000c18, - 0x84a8: 0xe0000c51, 0x84a9: 0xe0000c4e, 0x84aa: 0xe0000c60, 0x84ab: 0xe0000c5d, - 0x84ac: 0xe0000c31, 0x84ad: 0xe0000c2e, 0x84ae: 0xe0000c5a, 0x84af: 0xe0000c57, - 0x84b0: 0xe0000c54, 0x84b1: 0x402da220, 0x84b2: 0xf0000a0a, 0x84b3: 0xf0000404, - 0x84b4: 0xe0000c8a, 0x84b5: 0xe0000c87, 0x84b6: 0xe0000c9f, 0x84b7: 0xe0000c9c, - 0x84b8: 0x402f7220, 0x84b9: 0xe0000ccc, 0x84ba: 0xe0000cc9, 0x84bb: 0xe0000cd8, - 0x84bc: 0xe0000cd5, 0x84bd: 0xe0000cd2, 0x84be: 0xe0000ccf, 0x84bf: 0xe0000d04, - // Block 0x213, offset 0x84c0 - 0x84c0: 0xe0000cfe, 0x84c1: 0xe0000cf8, 0x84c2: 0xe0000cf5, 0x84c3: 0xe0000d51, - 0x84c4: 0xe0000d4e, 0x84c5: 0xe0000d6f, 0x84c6: 0xe0000d6c, 0x84c7: 0xe0000d5d, - 0x84c8: 0xe0000d5a, 0x84c9: 0xf0000404, 0x84ca: 0x002eda88, 0x84cb: 0x402eda20, - 0x84cc: 0xe0000e2e, 0x84cd: 0xe0000e2b, 0x84ce: 0xe0000da0, 0x84cf: 0xe0000d9d, - 0x84d0: 0xe0000de0, 0x84d1: 0xe0000ddd, 0x84d2: 0xe0000e93, 0x84d3: 0xe0000e8f, - 0x84d4: 0xe0000eca, 0x84d5: 0xe0000ec7, 0x84d6: 0xe0000edc, 0x84d7: 0xe0000ed9, - 0x84d8: 0xe0000ed0, 0x84d9: 0xe0000ecd, 0x84da: 0xe0000f1f, 0x84db: 0xe0000f1c, - 0x84dc: 0xe0000f2d, 0x84dd: 0xe0000f2a, 0x84de: 0xe0000f47, 0x84df: 0xe0000f44, - 0x84e0: 0x002fe883, 0x84e1: 0x402fe820, 0x84e2: 0xe0000f99, 0x84e3: 0xe0000f96, - 0x84e4: 0xe0000f8a, 0x84e5: 0xe0000f87, 0x84e6: 0x00303688, 0x84e7: 0x40303620, - 0x84e8: 0xe000102b, 0x84e9: 0xe0001028, 0x84ea: 0xe000103f, 0x84eb: 0xe000103c, - 0x84ec: 0xe0000fe7, 0x84ed: 0xe0000fe4, 0x84ee: 0xe0000ff9, 0x84ef: 0xe0000ff6, - 0x84f0: 0xe0001025, 0x84f1: 0xe0001022, 0x84f2: 0xe0001039, 0x84f3: 0xe0001036, - 0x84f4: 0xe00010d8, 0x84f5: 0xe00010d5, 0x84f6: 0xe000110e, 0x84f7: 0xe000110b, - 0x84f8: 0xe0001117, 0x84f9: 0xe000113b, 0x84fa: 0xe0001138, 0x84fb: 0xe000114d, - 0x84fc: 0xe000114a, 0x84fd: 0x00312c83, 0x84fe: 0x40312c20, 0x84ff: 0xe0000f64, - // Block 0x214, offset 0x8500 - 0x8500: 0x40321220, 0x8501: 0x40321a20, 0x8502: 0x40322220, 0x8503: 0x40322a20, - 0x8504: 0x002c6487, 0x8505: 0x002c6485, 0x8506: 0x002c6483, 0x8507: 0x002e2487, - 0x8508: 0x002e2485, 0x8509: 0x002e2483, 0x850a: 0x002ea087, 0x850b: 0x002ea085, - 0x850c: 0x002ea083, 0x850d: 0xe0000947, 0x850e: 0xe0000944, 0x850f: 0xe0000c3d, - 0x8510: 0xe0000c3a, 0x8511: 0xe0000dcc, 0x8512: 0xe0000dc9, 0x8513: 0xe0000ff3, - 0x8514: 0xe0000ff0, 0x8515: 0xe000101e, 0x8516: 0xe000101a, 0x8517: 0xe0001006, - 0x8518: 0xe0001002, 0x8519: 0xe0001016, 0x851a: 0xe0001012, 0x851b: 0xe000100e, - 0x851c: 0xe000100a, 0x851d: 0x402cae20, 0x851e: 0xe0000962, 0x851f: 0xe000095e, - 0x8520: 0xe0000976, 0x8521: 0xe0000972, 0x8522: 0xe00009f4, 0x8523: 0xe00009ef, - 0x8524: 0x002d3a88, 0x8525: 0x402d3a20, 0x8526: 0xe0000bbe, 0x8527: 0xe0000bbb, - 0x8528: 0xe0000c99, 0x8529: 0xe0000c96, 0x852a: 0xe0000e20, 0x852b: 0xe0000e1d, - 0x852c: 0xe0000e27, 0x852d: 0xe0000e23, 0x852e: 0xe0001162, 0x852f: 0xe000115f, - 0x8530: 0xe0000c8d, 0x8531: 0xf0000a0a, 0x8532: 0xf000040a, 0x8533: 0xf0000404, - 0x8534: 0xe0000bac, 0x8535: 0xe0000ba9, 0x8536: 0x002d7888, 0x8537: 0x00319488, - 0x8538: 0xe0000d57, 0x8539: 0xe0000d54, 0x853a: 0xe0000954, 0x853b: 0xe0000950, - 0x853c: 0xe00009ea, 0x853d: 0xe00009e5, 0x853e: 0xe0000e19, 0x853f: 0xe0000e15, - // Block 0x215, offset 0x8540 - 0x8540: 0xe00009b1, 0x8541: 0xe00009ae, 0x8542: 0xe0000a22, 0x8543: 0xe0000a1f, - 0x8544: 0xe0000a28, 0x8545: 0xe0000a25, 0x8546: 0xe0000a2e, 0x8547: 0xe0000a2b, - 0x8548: 0xe0002785, 0x8549: 0xe0002782, 0x854a: 0xe0000a8c, 0x854b: 0xe0000a89, - 0x854c: 0xe0000a98, 0x854d: 0xe0000a95, 0x854e: 0xe0000aa4, 0x854f: 0xe0000aa1, - 0x8550: 0xe0000a92, 0x8551: 0xe0000a8f, 0x8552: 0xe0000a9e, 0x8553: 0xe0000a9b, - 0x8554: 0xe0000b55, 0x8555: 0xe0000b51, 0x8556: 0xe0000b4d, 0x8557: 0xe0000b49, - 0x8558: 0xe0000b7c, 0x8559: 0xe0000b79, 0x855a: 0xe0000b82, 0x855b: 0xe0000b7f, - 0x855c: 0xe0000b39, 0x855d: 0xe0000b35, 0x855e: 0xe0000b8c, 0x855f: 0xe0000b89, - 0x8560: 0xe0000bd0, 0x8561: 0xe0000bcd, 0x8562: 0xe0000c00, 0x8563: 0xe0000bfd, - 0x8564: 0xe0000c0c, 0x8565: 0xe0000c09, 0x8566: 0xe0000bfa, 0x8567: 0xe0000bf7, - 0x8568: 0xe0000c06, 0x8569: 0xe0000c03, 0x856a: 0xe0000c12, 0x856b: 0xe0000c0f, - 0x856c: 0xe0000c7e, 0x856d: 0xe0000c7b, 0x856e: 0xe0000c4a, 0x856f: 0xe0000c46, - 0x8570: 0xe0000c93, 0x8571: 0xe0000c90, 0x8572: 0xe0000cab, 0x8573: 0xe0000ca8, - 0x8574: 0xe0000cb1, 0x8575: 0xe0000cae, 0x8576: 0xe0000cde, 0x8577: 0xe0000cdb, - 0x8578: 0xe0000ce5, 0x8579: 0xe0000ce1, 0x857a: 0xe0000cf2, 0x857b: 0xe0000cef, - 0x857c: 0xe0000cec, 0x857d: 0xe0000ce9, 0x857e: 0xe0000d1e, 0x857f: 0xe0000d1b, - // Block 0x216, offset 0x8580 - 0x8580: 0xe0000d24, 0x8581: 0xe0000d21, 0x8582: 0xe0000d2a, 0x8583: 0xe0000d27, - 0x8584: 0xe0000d69, 0x8585: 0xe0000d66, 0x8586: 0xe0000d7b, 0x8587: 0xe0000d78, - 0x8588: 0xe0000d87, 0x8589: 0xe0000d84, 0x858a: 0xe0000d81, 0x858b: 0xe0000d7e, - 0x858c: 0xe0000ded, 0x858d: 0xe0000de9, 0x858e: 0xe0000df5, 0x858f: 0xe0000df1, - 0x8590: 0xe0000e3d, 0x8591: 0xe0000e39, 0x8592: 0xe0000e35, 0x8593: 0xe0000e31, - 0x8594: 0xe0000ea7, 0x8595: 0xe0000ea4, 0x8596: 0xe0000ead, 0x8597: 0xe0000eaa, - 0x8598: 0xe0000ed6, 0x8599: 0xe0000ed3, 0x859a: 0xe0000ef4, 0x859b: 0xe0000ef1, - 0x859c: 0xe0000efb, 0x859d: 0xe0000ef7, 0x859e: 0xe0000f02, 0x859f: 0xe0000eff, - 0x85a0: 0xe0000f41, 0x85a1: 0xe0000f3e, 0x85a2: 0xe0000f53, 0x85a3: 0xe0000f50, - 0x85a4: 0xe0000f26, 0x85a5: 0xe0000f22, 0x85a6: 0xe0002652, 0x85a7: 0xe000264f, - 0x85a8: 0xe0000f5a, 0x85a9: 0xe0000f56, 0x85aa: 0xe0000f93, 0x85ab: 0xe0000f90, - 0x85ac: 0xe0000f9f, 0x85ad: 0xe0000f9c, 0x85ae: 0xe0000fb1, 0x85af: 0xe0000fae, - 0x85b0: 0xe0000fab, 0x85b1: 0xe0000fa8, 0x85b2: 0xe0001093, 0x85b3: 0xe0001090, - 0x85b4: 0xe000109f, 0x85b5: 0xe000109c, 0x85b6: 0xe0001099, 0x85b7: 0xe0001096, - 0x85b8: 0xe0001032, 0x85b9: 0xe000102e, 0x85ba: 0xe0001046, 0x85bb: 0xe0001042, - 0x85bc: 0xe00010a9, 0x85bd: 0xe00010a6, 0x85be: 0xe00010af, 0x85bf: 0xe00010ac, - // Block 0x217, offset 0x85c0 - 0x85c0: 0xa0000000, 0x85c1: 0xa0000000, 0x85c2: 0xa0000000, 0x85c3: 0xa0000000, - 0x85c4: 0xa0000000, 0x85c5: 0xa0000000, 0x85c6: 0xa0000000, 0x85c7: 0xa0000000, - 0x85c8: 0xa0000000, 0x85c9: 0x40020020, 0x85ca: 0x40020220, 0x85cb: 0x40020420, - 0x85cc: 0x40020620, 0x85cd: 0x40020820, 0x85ce: 0xa0000000, 0x85cf: 0xa0000000, - 0x85d0: 0xa0000000, 0x85d1: 0xa0000000, 0x85d2: 0xa0000000, 0x85d3: 0xa0000000, - 0x85d4: 0xa0000000, 0x85d5: 0xa0000000, 0x85d6: 0xa0000000, 0x85d7: 0xa0000000, - 0x85d8: 0xa0000000, 0x85d9: 0xa0000000, 0x85da: 0xa0000000, 0x85db: 0xa0000000, - 0x85dc: 0xa0000000, 0x85dd: 0xa0000000, 0x85de: 0xa0000000, 0x85df: 0xa0000000, - 0x85e0: 0x40021220, 0x85e1: 0x4002ba20, 0x85e2: 0x4003e020, 0x85e3: 0x4004ea20, - 0x85e4: 0x4027de20, 0x85e5: 0x4004ec20, 0x85e6: 0x4004e620, 0x85e7: 0x4003d220, - 0x85e8: 0x4003f420, 0x85e9: 0x4003f620, 0x85ea: 0x4004d820, 0x85eb: 0x40093820, - 0x85ec: 0x40024020, 0x85ed: 0x40021a20, 0x85ee: 0x4002e420, 0x85ef: 0x4004e220, - 0x85f0: 0x4029cc20, 0x85f1: 0x4029ce20, 0x85f2: 0x4029d020, 0x85f3: 0x4029d220, - 0x85f4: 0x4029d420, 0x85f5: 0x4029d620, 0x85f6: 0x4029d820, 0x85f7: 0x4029da20, - 0x85f8: 0x4029dc20, 0x85f9: 0x4029de20, 0x85fa: 0x40026c20, 0x85fb: 0x40026220, - 0x85fc: 0x40094020, 0x85fd: 0xc32f0851, 0x85fe: 0x40094420, 0x85ff: 0x4002c420, - // Block 0x218, offset 0x8600 - 0x8600: 0x4004d620, 0x8601: 0xc3d20c71, 0x8602: 0x002c0a88, 0x8603: 0x002c3a88, - 0x8604: 0x002c6288, 0x8605: 0xc3d808b1, 0x8606: 0x002d0888, 0x8607: 0x002d2288, - 0x8608: 0x002d6888, 0x8609: 0xc3dc08b1, 0x860a: 0x002dcc88, 0x860b: 0x002dfe88, - 0x860c: 0xc0030002, 0x860d: 0x002e8288, 0x860e: 0x002e9e88, 0x860f: 0xc3e10cb1, - 0x8610: 0x002f2c88, 0x8611: 0x002f5688, 0x8612: 0x002f7a88, 0x8613: 0x002fe688, - 0x8614: 0x00302c88, 0x8615: 0xc3e608b1, 0x8616: 0x0030be88, 0x8617: 0x0030e288, - 0x8618: 0x0030f688, 0x8619: 0xc3ea08b1, 0x861a: 0x00312a88, 0x861b: 0x4003f820, - 0x861c: 0x4004e420, 0x861d: 0x4003fa20, 0x861e: 0x40062420, 0x861f: 0x40021620, - 0x8620: 0x40061e20, 0x8621: 0xc3ce0c71, 0x8622: 0x402c0a20, 0x8623: 0x402c3a20, - 0x8624: 0x402c6220, 0x8625: 0xc3d608b1, 0x8626: 0x402d0820, 0x8627: 0x402d2220, - 0x8628: 0x402d6820, 0x8629: 0xc3da08b1, 0x862a: 0x402dcc20, 0x862b: 0x402dfe20, - 0x862c: 0xc0000002, 0x862d: 0x402e8220, 0x862e: 0x402e9e20, 0x862f: 0xc3de0cb1, - 0x8630: 0x402f2c20, 0x8631: 0x402f5620, 0x8632: 0x402f7a20, 0x8633: 0x402fe620, - 0x8634: 0x40302c20, 0x8635: 0xc3e408b1, 0x8636: 0x4030be20, 0x8637: 0x4030e220, - 0x8638: 0x4030f620, 0x8639: 0xc3e808b1, 0x863a: 0x40312a20, 0x863b: 0x4003fc20, - 0x863c: 0x40094820, 0x863d: 0x4003fe20, 0x863e: 0x40094c20, 0x863f: 0xa0000000, - // Block 0x219, offset 0x8640 - 0x8640: 0xe00008f5, 0x8641: 0x002c0883, 0x8642: 0xe0000921, 0x8643: 0xe0000969, - 0x8644: 0x00320ca3, 0x8645: 0x00321083, 0x8646: 0x00320c83, 0x8647: 0xe0000a53, - 0x8648: 0xe0000ae8, 0x8649: 0x002d0683, 0x864a: 0xe0000af4, 0x864b: 0xe0000b20, - 0x864c: 0xe0000c2b, 0x864d: 0x002dca83, 0x864e: 0xe0000c37, 0x864f: 0xe0000c43, - 0x8650: 0x002c6483, 0x8651: 0xe0000d63, 0x8652: 0xe0000d9a, 0x8653: 0x002f2a83, - 0x8654: 0xe0000da6, 0x8655: 0xe0000de6, 0x8656: 0x00320e83, 0x8657: 0x40093e20, - 0x8658: 0x00320ea3, 0x8659: 0xe0000fe1, 0x865a: 0x0030bc83, 0x865b: 0xe0000fed, - 0x865c: 0xe0000fff, 0x865d: 0x00312883, 0x865e: 0x00318888, 0x865f: 0xe0000f7b, - 0x8660: 0xe00008f2, 0x8661: 0x402c0820, 0x8662: 0xe000091e, 0x8663: 0xe0000966, - 0x8664: 0x40320c21, 0x8665: 0x40321020, 0x8666: 0x40320c20, 0x8667: 0xe0000a4d, - 0x8668: 0xe0000ae5, 0x8669: 0x402d0620, 0x866a: 0xe0000af1, 0x866b: 0xe0000b1d, - 0x866c: 0xe0000c28, 0x866d: 0x402dca20, 0x866e: 0xe0000c34, 0x866f: 0xe0000c40, - 0x8670: 0x402c6420, 0x8671: 0xe0000d60, 0x8672: 0xe0000d97, 0x8673: 0x402f2a20, - 0x8674: 0xe0000da3, 0x8675: 0xe0000de3, 0x8676: 0x40320e20, 0x8677: 0x40093c20, - 0x8678: 0x40320e21, 0x8679: 0xe0000fde, 0x867a: 0x4030bc20, 0x867b: 0xe0000fea, - 0x867c: 0xe0000ffc, 0x867d: 0x40312820, 0x867e: 0x40318820, 0x867f: 0xe0001114, - // Block 0x21a, offset 0x8680 - 0x8680: 0xe0000983, 0x8681: 0xe0000980, 0x8682: 0xe00008fb, 0x8683: 0xe00008f8, - 0x8684: 0xe000097d, 0x8685: 0xe000097a, 0x8686: 0xe0000a38, 0x8687: 0xe0000a35, - 0x8688: 0xe0000a3e, 0x8689: 0xe0000a3b, 0x868a: 0xe0000a4a, 0x868b: 0xe0000a47, - 0x868c: 0xe0000a44, 0x868d: 0xe0000a41, 0x868e: 0xe0000a86, 0x868f: 0xe0000a83, - 0x8690: 0x002c62a3, 0x8691: 0x402c6221, 0x8692: 0xe0000b46, 0x8693: 0xe0000b43, - 0x8694: 0xe0000aee, 0x8695: 0xe0000aeb, 0x8696: 0xe0000b2c, 0x8697: 0xe0000b29, - 0x8698: 0xe0000b40, 0x8699: 0xe0000b3d, 0x869a: 0xe0000b1a, 0x869b: 0xe0000b17, - 0x869c: 0xe0000bb8, 0x869d: 0xe0000bb5, 0x869e: 0xe0000bb2, 0x869f: 0xe0000baf, - 0x86a0: 0xe0000bc4, 0x86a1: 0xe0000bc1, 0x86a2: 0xe0000bca, 0x86a3: 0xe0000bc7, - 0x86a4: 0xe0000bee, 0x86a5: 0xe0000beb, 0x86a6: 0xe0000c1b, 0x86a7: 0xe0000c18, - 0x86a8: 0xe0000c51, 0x86a9: 0xe0000c4e, 0x86aa: 0xe0000c60, 0x86ab: 0xe0000c5d, - 0x86ac: 0xe0000c31, 0x86ad: 0xe0000c2e, 0x86ae: 0xe0000c5a, 0x86af: 0xe0000c57, - 0x86b0: 0xe0000c54, 0x86b1: 0x402da220, 0x86b2: 0xf0000a0a, 0x86b3: 0xf0000404, - 0x86b4: 0xe0000c8a, 0x86b5: 0xe0000c87, 0x86b6: 0xe0000c9f, 0x86b7: 0xe0000c9c, - 0x86b8: 0x402f7220, 0x86b9: 0xe0000ccc, 0x86ba: 0xe0000cc9, 0x86bb: 0xe0000cd8, - 0x86bc: 0xe0000cd5, 0x86bd: 0xe0000cd2, 0x86be: 0xe0000ccf, 0x86bf: 0xe0000d04, - // Block 0x21b, offset 0x86c0 - 0x86c0: 0x40321220, 0x86c1: 0x40321a20, 0x86c2: 0x40322220, 0x86c3: 0x40322a20, - 0x86c4: 0xe0000ad5, 0x86c5: 0xe0000ad1, 0x86c6: 0xe0000acd, 0x86c7: 0xf0000a0a, - 0x86c8: 0xf000040a, 0x86c9: 0xf0000404, 0x86ca: 0xf0000a0a, 0x86cb: 0xf000040a, - 0x86cc: 0xf0000404, 0x86cd: 0xe0000947, 0x86ce: 0xe0000944, 0x86cf: 0xe0000c3d, - 0x86d0: 0xe0000c3a, 0x86d1: 0xe0000dcc, 0x86d2: 0xe0000dc9, 0x86d3: 0xe0000ff3, - 0x86d4: 0xe0000ff0, 0x86d5: 0xe000101e, 0x86d6: 0xe000101a, 0x86d7: 0xe00027c1, - 0x86d8: 0xe00027be, 0x86d9: 0xe0001016, 0x86da: 0xe0001012, 0x86db: 0xe000100e, - 0x86dc: 0xe000100a, 0x86dd: 0x402cae20, 0x86de: 0xe0002697, 0x86df: 0xe0002694, - 0x86e0: 0xe0000976, 0x86e1: 0xe0000972, 0x86e2: 0xe0002691, 0x86e3: 0xe000268e, - 0x86e4: 0x002d3a88, 0x86e5: 0x402d3a20, 0x86e6: 0xe0000bbe, 0x86e7: 0xe0000bbb, - 0x86e8: 0xe0000c99, 0x86e9: 0xe0000c96, 0x86ea: 0xe0000e20, 0x86eb: 0xe0000e1d, - 0x86ec: 0xe0000e27, 0x86ed: 0xe0000e23, 0x86ee: 0xe0001162, 0x86ef: 0xe000115f, - 0x86f0: 0xe0000c8d, 0x86f1: 0xf0000a0a, 0x86f2: 0xf000040a, 0x86f3: 0xf0000404, - 0x86f4: 0xe0000bac, 0x86f5: 0xe0000ba9, 0x86f6: 0x002d7888, 0x86f7: 0x00319488, - 0x86f8: 0xe0000d57, 0x86f9: 0xe0000d54, 0x86fa: 0xe00026af, 0x86fb: 0xe00026ac, - 0x86fc: 0xe000268b, 0x86fd: 0xe0002688, 0x86fe: 0xe0002752, 0x86ff: 0xe000274f, - // Block 0x21c, offset 0x8700 - 0x8700: 0xe000098f, 0x8701: 0xe000098c, 0x8702: 0xe0000995, 0x8703: 0xe0000992, - 0x8704: 0xe0000b62, 0x8705: 0xe0000b5f, 0x8706: 0xe0000b68, 0x8707: 0xe0000b65, - 0x8708: 0xe0000c6c, 0x8709: 0xe0000c69, 0x870a: 0xe0000c72, 0x870b: 0xe0000c6f, - 0x870c: 0xe0000e4a, 0x870d: 0xe0000e47, 0x870e: 0xe0000e50, 0x870f: 0xe0000e4d, - 0x8710: 0xe0000ee8, 0x8711: 0xe0000ee5, 0x8712: 0xe0000eee, 0x8713: 0xe0000eeb, - 0x8714: 0xe0001053, 0x8715: 0xe0001050, 0x8716: 0xe0001059, 0x8717: 0xe0001056, - 0x8718: 0xe0000f61, 0x8719: 0xe0000f5e, 0x871a: 0xe0000fa5, 0x871b: 0xe0000fa2, - 0x871c: 0x00312288, 0x871d: 0x40312220, 0x871e: 0xe0000bf4, 0x871f: 0xe0000bf1, - 0x8720: 0x002ebc88, 0x8721: 0x402c8c20, 0x8722: 0x002f2288, 0x8723: 0x402f2220, - 0x8724: 0x00314088, 0x8725: 0x40314020, 0x8726: 0xe000096f, 0x8727: 0xe000096c, - 0x8728: 0xe0000b32, 0x8729: 0xe0000b2f, 0x872a: 0xe000274c, 0x872b: 0xe0002749, - 0x872c: 0xe0000dfd, 0x872d: 0xe0000df9, 0x872e: 0xe0000e04, 0x872f: 0xe0000e01, - 0x8730: 0xe0000e0b, 0x8731: 0xe0000e07, 0x8732: 0xe0001129, 0x8733: 0xe0001126, - 0x8734: 0x402e5e20, 0x8735: 0x402ed020, 0x8736: 0x40305a20, 0x8737: 0x402dd420, - 0x8738: 0xe0000abf, 0x8739: 0xe0000ec4, 0x873a: 0x002be888, 0x873b: 0x002c4488, - 0x873c: 0x402c4420, 0x873d: 0x002e3888, 0x873e: 0x00303e88, 0x873f: 0x402ffc20, - // Block 0x21d, offset 0x8740 - 0x8740: 0xe00009b1, 0x8741: 0xe00009ae, 0x8742: 0xe0000a22, 0x8743: 0xe0000a1f, - 0x8744: 0xe0000a28, 0x8745: 0xe0000a25, 0x8746: 0xe0000a2e, 0x8747: 0xe0000a2b, - 0x8748: 0xe0000a5a, 0x8749: 0xe0000a56, 0x874a: 0xe0000a8c, 0x874b: 0xe0000a89, - 0x874c: 0xe0000a98, 0x874d: 0xe0000a95, 0x874e: 0xe0000aa4, 0x874f: 0xe0000aa1, - 0x8750: 0xe0000a92, 0x8751: 0xe0000a8f, 0x8752: 0xe0000a9e, 0x8753: 0xe0000a9b, - 0x8754: 0xe0000b55, 0x8755: 0xe0000b51, 0x8756: 0xe000279d, 0x8757: 0xe000279a, - 0x8758: 0xe0000b7c, 0x8759: 0xe0000b79, 0x875a: 0xe0000b82, 0x875b: 0xe0000b7f, - 0x875c: 0xe0000b39, 0x875d: 0xe0000b35, 0x875e: 0xe0000b8c, 0x875f: 0xe0000b89, - 0x8760: 0xe0000bd0, 0x8761: 0xe0000bcd, 0x8762: 0xe0000c00, 0x8763: 0xe0000bfd, - 0x8764: 0xe0000c0c, 0x8765: 0xe0000c09, 0x8766: 0xe0000bfa, 0x8767: 0xe0000bf7, - 0x8768: 0xe0000c06, 0x8769: 0xe0000c03, 0x876a: 0xe0000c12, 0x876b: 0xe0000c0f, - 0x876c: 0xe0000c7e, 0x876d: 0xe0000c7b, 0x876e: 0xe00027a3, 0x876f: 0xe00027a0, - 0x8770: 0xe0000c93, 0x8771: 0xe0000c90, 0x8772: 0xe0000cab, 0x8773: 0xe0000ca8, - 0x8774: 0xe0000cb1, 0x8775: 0xe0000cae, 0x8776: 0xe0000cde, 0x8777: 0xe0000cdb, - 0x8778: 0xe0000ce5, 0x8779: 0xe0000ce1, 0x877a: 0xe0000cf2, 0x877b: 0xe0000cef, - 0x877c: 0xe0000cec, 0x877d: 0xe0000ce9, 0x877e: 0xe0000d1e, 0x877f: 0xe0000d1b, - // Block 0x21e, offset 0x8780 - 0x8780: 0xe0000d24, 0x8781: 0xe0000d21, 0x8782: 0xe0000d2a, 0x8783: 0xe0000d27, - 0x8784: 0xe0000d69, 0x8785: 0xe0000d66, 0x8786: 0xe0000d7b, 0x8787: 0xe0000d78, - 0x8788: 0xe0000d87, 0x8789: 0xe0000d84, 0x878a: 0xe0000d81, 0x878b: 0xe0000d7e, - 0x878c: 0xe00027af, 0x878d: 0xe00027ac, 0x878e: 0xe00027d3, 0x878f: 0xe00027d0, - 0x8790: 0xe0000e3d, 0x8791: 0xe0000e39, 0x8792: 0xe00027b5, 0x8793: 0xe00027b2, - 0x8794: 0xe0000ea7, 0x8795: 0xe0000ea4, 0x8796: 0xe0000ead, 0x8797: 0xe0000eaa, - 0x8798: 0xe0000ed6, 0x8799: 0xe0000ed3, 0x879a: 0xe0000ef4, 0x879b: 0xe0000ef1, - 0x879c: 0xe0000efb, 0x879d: 0xe0000ef7, 0x879e: 0xe0000f02, 0x879f: 0xe0000eff, - 0x87a0: 0xe0000f41, 0x87a1: 0xe0000f3e, 0x87a2: 0xe0000f53, 0x87a3: 0xe0000f50, - 0x87a4: 0xe0000f26, 0x87a5: 0xe0000f22, 0x87a6: 0xe0000f3a, 0x87a7: 0xe0000f36, - 0x87a8: 0xe0000f5a, 0x87a9: 0xe0000f56, 0x87aa: 0xe0000f93, 0x87ab: 0xe0000f90, - 0x87ac: 0xe0000f9f, 0x87ad: 0xe0000f9c, 0x87ae: 0xe0000fb1, 0x87af: 0xe0000fae, - 0x87b0: 0xe0000fab, 0x87b1: 0xe0000fa8, 0x87b2: 0xe0001093, 0x87b3: 0xe0001090, - 0x87b4: 0xe000109f, 0x87b5: 0xe000109c, 0x87b6: 0xe0001099, 0x87b7: 0xe0001096, - 0x87b8: 0xe00027c7, 0x87b9: 0xe00027c4, 0x87ba: 0xe0001046, 0x87bb: 0xe0001042, - 0x87bc: 0xe00010a9, 0x87bd: 0xe00010a6, 0x87be: 0xe00010af, 0x87bf: 0xe00010ac, - // Block 0x21f, offset 0x87c0 - 0x87c0: 0xe00010d2, 0x87c1: 0xe00010cf, 0x87c2: 0xe00010cc, 0x87c3: 0xe00010c9, - 0x87c4: 0xe00010e1, 0x87c5: 0xe00010de, 0x87c6: 0xe00010e7, 0x87c7: 0xe00010e4, - 0x87c8: 0xe00010ed, 0x87c9: 0xe00010ea, 0x87ca: 0xe00010fc, 0x87cb: 0xe00010f9, - 0x87cc: 0xe00010f6, 0x87cd: 0xe00010f3, 0x87ce: 0xe0001123, 0x87cf: 0xe0001120, - 0x87d0: 0xe0001141, 0x87d1: 0xe000113e, 0x87d2: 0xe0001153, 0x87d3: 0xe0001150, - 0x87d4: 0xe0001159, 0x87d5: 0xe0001156, 0x87d6: 0xe0000c15, 0x87d7: 0xe0000f8d, - 0x87d8: 0xe00010db, 0x87d9: 0xe0001111, 0x87da: 0xf0000404, 0x87db: 0xe0000f70, - 0x87dc: 0x40300420, 0x87dd: 0x40300620, 0x87de: 0xe0000f7f, 0x87df: 0x402c9620, - 0x87e0: 0xe000099b, 0x87e1: 0xe0000998, 0x87e2: 0xe0000989, 0x87e3: 0xe0000986, - 0x87e4: 0xe0002791, 0x87e5: 0xe000278e, 0x87e6: 0xe0000930, 0x87e7: 0xe000092c, - 0x87e8: 0xe0000940, 0x87e9: 0xe000093c, 0x87ea: 0xe0000938, 0x87eb: 0xe0000934, - 0x87ec: 0xe00009aa, 0x87ed: 0xe00009a6, 0x87ee: 0xe000278b, 0x87ef: 0xe0002788, - 0x87f0: 0xe000090a, 0x87f1: 0xe0000906, 0x87f2: 0xe000091a, 0x87f3: 0xe0000916, - 0x87f4: 0xe0000912, 0x87f5: 0xe000090e, 0x87f6: 0xe00009a2, 0x87f7: 0xe000099e, - 0x87f8: 0xe0000b6e, 0x87f9: 0xe0000b6b, 0x87fa: 0xe0000b5c, 0x87fb: 0xe0000b59, - 0x87fc: 0xe0000b26, 0x87fd: 0xe0000b23, 0x87fe: 0xe0002797, 0x87ff: 0xe0002794, - // Block 0x220, offset 0x8800 - 0x8800: 0xe0000b03, 0x8801: 0xe0000aff, 0x8802: 0xe0000b13, 0x8803: 0xe0000b0f, - 0x8804: 0xe0000b0b, 0x8805: 0xe0000b07, 0x8806: 0xe0000b75, 0x8807: 0xe0000b71, - 0x8808: 0xe0000c66, 0x8809: 0xe0000c63, 0x880a: 0xe0000c78, 0x880b: 0xe0000c75, - 0x880c: 0xe0000e84, 0x880d: 0xe0000e81, 0x880e: 0xe0000e44, 0x880f: 0xe0000e41, - 0x8810: 0xe00027a9, 0x8811: 0xe00027a6, 0x8812: 0xe0000db5, 0x8813: 0xe0000db1, - 0x8814: 0xe0000dc5, 0x8815: 0xe0000dc1, 0x8816: 0xe0000dbd, 0x8817: 0xe0000db9, - 0x8818: 0xe0000e8b, 0x8819: 0xe0000e87, 0x881a: 0xe00027bb, 0x881b: 0xe00027b8, - 0x881c: 0xe0000e65, 0x881d: 0xe0000e61, 0x881e: 0xe0000e75, 0x881f: 0xe0000e71, - 0x8820: 0xe0000e6d, 0x8821: 0xe0000e69, 0x8822: 0xe0000e7d, 0x8823: 0xe0000e79, - 0x8824: 0xe000108d, 0x8825: 0xe000108a, 0x8826: 0xe000104d, 0x8827: 0xe000104a, - 0x8828: 0xe00027cd, 0x8829: 0xe00027ca, 0x882a: 0xe000106e, 0x882b: 0xe000106a, - 0x882c: 0xe000107e, 0x882d: 0xe000107a, 0x882e: 0xe0001076, 0x882f: 0xe0001072, - 0x8830: 0xe0001086, 0x8831: 0xe0001082, 0x8832: 0xe0001108, 0x8833: 0xe0001105, - 0x8834: 0xe0001135, 0x8835: 0xe0001132, 0x8836: 0xe000112f, 0x8837: 0xe000112c, - 0x8838: 0xe000111d, 0x8839: 0xe000111a, 0x883a: 0xe0000d0a, 0x883b: 0xe0000d07, - 0x883c: 0x0030d888, 0x883d: 0x4030d820, 0x883e: 0x00312088, 0x883f: 0x40312020, - // Block 0x221, offset 0x8840 - 0x8840: 0xa0000000, 0x8841: 0xa0000000, 0x8842: 0xa0000000, 0x8843: 0xa0000000, - 0x8844: 0xa0000000, 0x8845: 0xa0000000, 0x8846: 0xa0000000, 0x8847: 0xa0000000, - 0x8848: 0xa0000000, 0x8849: 0x40020020, 0x884a: 0x40020220, 0x884b: 0x40020420, - 0x884c: 0x40020620, 0x884d: 0x40020820, 0x884e: 0xa0000000, 0x884f: 0xa0000000, - 0x8850: 0xa0000000, 0x8851: 0xa0000000, 0x8852: 0xa0000000, 0x8853: 0xa0000000, - 0x8854: 0xa0000000, 0x8855: 0xa0000000, 0x8856: 0xa0000000, 0x8857: 0xa0000000, - 0x8858: 0xa0000000, 0x8859: 0xa0000000, 0x885a: 0xa0000000, 0x885b: 0xa0000000, - 0x885c: 0xa0000000, 0x885d: 0xa0000000, 0x885e: 0xa0000000, 0x885f: 0xa0000000, - 0x8860: 0x40021220, 0x8861: 0x4002ba20, 0x8862: 0x4003e020, 0x8863: 0x4004ea20, - 0x8864: 0x4027de20, 0x8865: 0x4004ec20, 0x8866: 0x4004e620, 0x8867: 0x4003d220, - 0x8868: 0x4003f420, 0x8869: 0x4003f620, 0x886a: 0x4004d820, 0x886b: 0x40093820, - 0x886c: 0x40024020, 0x886d: 0x40021a20, 0x886e: 0x4002e420, 0x886f: 0x4004e220, - 0x8870: 0x4029cc20, 0x8871: 0x4029ce20, 0x8872: 0x4029d020, 0x8873: 0x4029d220, - 0x8874: 0x4029d420, 0x8875: 0x4029d620, 0x8876: 0x4029d820, 0x8877: 0x4029da20, - 0x8878: 0x4029dc20, 0x8879: 0x4029de20, 0x887a: 0x40026c20, 0x887b: 0x40026220, - 0x887c: 0x40094020, 0x887d: 0xc32f0851, 0x887e: 0x40094420, 0x887f: 0x4002c420, - // Block 0x222, offset 0x8880 - 0x8880: 0x4004d620, 0x8881: 0xc3f10a51, 0x8882: 0x002c0a88, 0x8883: 0x002c3a88, - 0x8884: 0x002c6288, 0x8885: 0xc3920a11, 0x8886: 0x002d0888, 0x8887: 0x002d2288, - 0x8888: 0x002d6888, 0x8889: 0x002d9a88, 0x888a: 0x002dcc88, 0x888b: 0xc3ec0ce1, - 0x888c: 0xc0030002, 0x888d: 0x002e8288, 0x888e: 0x002e9e88, 0x888f: 0xc3970951, - 0x8890: 0x002f2c88, 0x8891: 0x002f5688, 0x8892: 0x002f7a88, 0x8893: 0x002fe688, - 0x8894: 0x00302c88, 0x8895: 0xc3840951, 0x8896: 0x0030be88, 0x8897: 0x0030e288, - 0x8898: 0x0030f688, 0x8899: 0x00310088, 0x889a: 0x00312a88, 0x889b: 0x4003f820, - 0x889c: 0x4004e420, 0x889d: 0x4003fa20, 0x889e: 0x40062420, 0x889f: 0x40021620, - 0x88a0: 0x40061e20, 0x88a1: 0xc3ee0a51, 0x88a2: 0x402c0a20, 0x88a3: 0x402c3a20, - 0x88a4: 0x402c6220, 0x88a5: 0xc3900a11, 0x88a6: 0x402d0820, 0x88a7: 0x402d2220, - 0x88a8: 0x402d6820, 0x88a9: 0x402d9a20, 0x88aa: 0x402dcc20, 0x88ab: 0x402dfe20, - 0x88ac: 0xc0000002, 0x88ad: 0x402e8220, 0x88ae: 0x402e9e20, 0x88af: 0xc3940951, - 0x88b0: 0x402f2c20, 0x88b1: 0x402f5620, 0x88b2: 0x402f7a20, 0x88b3: 0x402fe620, - 0x88b4: 0x40302c20, 0x88b5: 0xc3810951, 0x88b6: 0x4030be20, 0x88b7: 0x4030e220, - 0x88b8: 0x4030f620, 0x88b9: 0x40310020, 0x88ba: 0x40312a20, 0x88bb: 0x4003fc20, - 0x88bc: 0x40094820, 0x88bd: 0x4003fe20, 0x88be: 0x40094c20, 0x88bf: 0xa0000000, - // Block 0x223, offset 0x88c0 - 0x88c0: 0xe0000983, 0x88c1: 0xe0000980, 0x88c2: 0xe00008fb, 0x88c3: 0xe00008f8, - 0x88c4: 0xe000097d, 0x88c5: 0xe000097a, 0x88c6: 0xe0000a38, 0x88c7: 0xe0000a35, - 0x88c8: 0xe0000a3e, 0x88c9: 0xe0000a3b, 0x88ca: 0xe0000a4a, 0x88cb: 0xe0000a47, - 0x88cc: 0xe0000a44, 0x88cd: 0xe0000a41, 0x88ce: 0xe0000a86, 0x88cf: 0xe0000a83, - 0x88d0: 0x002c62a3, 0x88d1: 0x402c6221, 0x88d2: 0xe0000b46, 0x88d3: 0xe0000b43, - 0x88d4: 0xe0000aee, 0x88d5: 0xe0000aeb, 0x88d6: 0xe0000b2c, 0x88d7: 0xe0000b29, - 0x88d8: 0x00320cc3, 0x88d9: 0x40320c22, 0x88da: 0xe0000b1a, 0x88db: 0xe0000b17, - 0x88dc: 0xe0000bb8, 0x88dd: 0xe0000bb5, 0x88de: 0xe0000bb2, 0x88df: 0xe0000baf, - 0x88e0: 0xe0000bc4, 0x88e1: 0xe0000bc1, 0x88e2: 0xe0000bca, 0x88e3: 0xe0000bc7, - 0x88e4: 0xe0000bee, 0x88e5: 0xe0000beb, 0x88e6: 0xe0000c1b, 0x88e7: 0xe0000c18, - 0x88e8: 0xe0000c51, 0x88e9: 0xe0000c4e, 0x88ea: 0xe0000c60, 0x88eb: 0xe0000c5d, - 0x88ec: 0xe0000c31, 0x88ed: 0xe0000c2e, 0x88ee: 0xe0000c5a, 0x88ef: 0xe0000c57, - 0x88f0: 0xe0000c54, 0x88f1: 0x402da220, 0x88f2: 0xf0000a0a, 0x88f3: 0xf0000404, - 0x88f4: 0xe0000c8a, 0x88f5: 0xe0000c87, 0x88f6: 0xe0000c9f, 0x88f7: 0xe0000c9c, - 0x88f8: 0x402f5621, 0x88f9: 0xe0000ccc, 0x88fa: 0xe0000cc9, 0x88fb: 0xe0000cd8, - 0x88fc: 0xe0000cd5, 0x88fd: 0xe0000cd2, 0x88fe: 0xe0000ccf, 0x88ff: 0xe0000d04, - // Block 0x224, offset 0x8900 - 0x8900: 0x4062ac20, 0x8901: 0xe0002526, 0x8902: 0x4062b020, 0x8903: 0x4062b220, - 0x8904: 0xe0002532, 0x8905: 0x4062b620, 0x8906: 0x4062b820, 0x8907: 0x4062ba20, - 0x8908: 0xe000254a, 0x8909: 0x4062be20, 0x890a: 0xe0002550, 0x890b: 0x4062c220, - 0x890c: 0x4062c420, 0x890d: 0xe0002553, 0x890e: 0x4062c820, 0x890f: 0x4062ca20, - 0x8910: 0x4062cc20, 0x8911: 0x4062ce20, 0x8912: 0x4062d020, 0x8913: 0xe00027ef, - 0x8914: 0xe00027f2, 0x8915: 0xe00027f5, 0x8916: 0xe00027f8, 0x8917: 0xe0002801, - 0x8918: 0xe000280b, 0x8919: 0xe0002815, 0x891a: 0xe0002547, 0x891b: 0xe0002830, - 0x891c: 0xe000283c, 0x891d: 0xe0002846, 0x891e: 0xe000284f, 0x891f: 0xe0002852, - 0x8920: 0xe0002855, 0x8921: 0xe000254d, 0x8922: 0xe000285f, 0x8923: 0xe0002863, - 0x8924: 0xe0002867, 0x8925: 0xe000286b, 0x8926: 0xe000286f, 0x8927: 0xe0002876, - 0x8928: 0xe0002879, 0x8929: 0xe000287c, 0x892a: 0xe000287f, 0x892b: 0xe0002873, - 0x892c: 0xe000285b, 0x892d: 0xe0002885, 0x892e: 0xe0002888, 0x892f: 0xe000288b, - 0x8930: 0xe000288e, 0x8931: 0xe0002891, 0x8932: 0xe0002894, 0x8933: 0xe0002897, - 0x8934: 0xe000289b, 0x8935: 0xe000289f, 0x8936: 0xe00028a2, 0x8937: 0xe00028a5, - 0x8938: 0xe00028a8, 0x8939: 0xe00028ab, 0x893a: 0xe00028ae, 0x893b: 0xe00028b1, - 0x893c: 0x40632420, 0x893d: 0x40632620, 0x893e: 0x40632820, 0x893f: 0x40632a20, - // Block 0x225, offset 0x8940 - 0x8940: 0x40632c20, 0x8941: 0xe00028b4, 0x8942: 0xe00028bb, 0x8943: 0xe00028be, - 0x8944: 0xe00028c1, 0x8945: 0xe00028c4, 0x8946: 0x40633820, 0x8947: 0xe00028c7, - 0x8948: 0xe00028ca, 0x8949: 0xe00028cd, 0x894a: 0xe00028d3, 0x894b: 0xe00028d6, - 0x894c: 0x40634420, 0x894d: 0xe00028d9, 0x894e: 0x40634820, 0x894f: 0x40634a20, - 0x8950: 0x40634c20, 0x8951: 0x40634e20, 0x8952: 0xe00028dc, 0x8953: 0xe00028df, - 0x8954: 0x40635420, 0x8955: 0x40635620, 0x8956: 0xe00028e2, 0x8957: 0xe00028e5, - 0x8958: 0xe00028f4, 0x8959: 0x40635e20, 0x895a: 0xe00027d9, 0x895b: 0xe00027fb, - 0x895c: 0xe000252c, 0x895d: 0xe000252f, 0x895e: 0xe0002804, 0x895f: 0x4063a420, - 0x8960: 0x4063a620, 0x8961: 0x4063a820, 0x8962: 0xe0002556, 0x8963: 0x4063ac20, - 0x8964: 0xe0002559, 0x8965: 0x4063b020, 0x8966: 0xe000255c, 0x8967: 0x4063b420, - 0x8968: 0xe000255f, 0x8969: 0x4063b820, 0x896a: 0xe0002562, 0x896b: 0xe0002565, - 0x896c: 0xe0002569, 0x896d: 0x4063c020, 0x896e: 0x4063c220, 0x896f: 0xe000256c, - 0x8970: 0xe000256f, 0x8971: 0xe0002573, 0x8972: 0x4063ca20, 0x8973: 0x4063cc20, - 0x8974: 0x4063ce20, 0x8975: 0x4063d020, 0x8976: 0xe00028f7, 0x8977: 0xe00028fa, - 0x8978: 0xe0002900, 0x8979: 0xe0002903, 0x897a: 0xe0002909, 0x897b: 0xe000290c, - 0x897c: 0xe000290f, 0x897d: 0xe0002915, 0x897e: 0xe0002918, 0x897f: 0xe0002922, - // Block 0x226, offset 0x8980 - 0x8980: 0xe0002925, 0x8981: 0xe0002929, 0x8982: 0xe000292d, 0x8983: 0xe0002930, - 0x8984: 0xe0002933, 0x8985: 0xe0002936, 0x8986: 0xe000293a, 0x8987: 0xe000293d, - 0x8988: 0xe0002940, 0x8989: 0xe0002943, 0x898a: 0xe0002946, 0x898b: 0xe000294a, - 0x898c: 0xe000294e, 0x898d: 0xe0002952, 0x898e: 0xe0002955, 0x898f: 0xe0002958, - 0x8990: 0xe000295b, 0x8991: 0xe000295f, 0x8992: 0xe0002962, 0x8993: 0xe0002966, - 0x8994: 0xe0002969, 0x8995: 0xe000296c, 0x8996: 0xe000296f, 0x8997: 0xe0002972, - 0x8998: 0xe0002975, 0x8999: 0xe0002978, 0x899a: 0xe000297b, 0x899b: 0xe000297e, - 0x899c: 0xe0002981, 0x899d: 0x40642020, 0x899e: 0x40642220, 0x899f: 0x40642420, - 0x89a0: 0x40642620, 0x89a1: 0x40642820, 0x89a2: 0x40642a20, 0x89a3: 0xe00028fd, - 0x89a4: 0xe0002906, 0x89a5: 0xe0002912, 0x89a6: 0xe000291b, 0x89a7: 0xe000291e, - 0x89a8: 0x4062ac20, 0x89a9: 0xe0002526, 0x89aa: 0xe0002529, 0x89ab: 0x4062b020, - 0x89ac: 0xe000252c, 0x89ad: 0xe000252f, 0x89ae: 0x4062b220, 0x89af: 0x4062b620, - 0x89b0: 0xe0002535, 0x89b1: 0xe0002538, 0x89b2: 0xe000253b, 0x89b3: 0xe000253e, - 0x89b4: 0xe0002541, 0x89b5: 0xe0002544, 0x89b6: 0xe0002547, 0x89b7: 0x4062b820, - 0x89b8: 0x4062ba20, 0x89b9: 0xe000254d, 0x89ba: 0x4062be20, 0x89bb: 0xe0002550, - 0x89bc: 0x4062c220, 0x89bd: 0x4062c420, 0x89be: 0x4062c820, 0x89bf: 0x4062ca20, - // Block 0x227, offset 0x89c0 - 0x89c0: 0x4062cc20, 0x89c1: 0x4062ce20, 0x89c2: 0x4062d020, 0x89c3: 0xe00027dc, - 0x89c4: 0xe00027e2, 0x89c5: 0xe00027ef, 0x89c6: 0xe00027f5, 0x89c7: 0xe00027fb, - 0x89c8: 0x4064a420, 0x89c9: 0xe00027fe, 0x89ca: 0xe0002801, 0x89cb: 0xe0002804, - 0x89cc: 0xe0002807, 0x89cd: 0xe000280b, 0x89ce: 0xe000280e, 0x89cf: 0xe0002811, - 0x89d0: 0xe0002815, 0x89d1: 0xe0002818, 0x89d2: 0xe000281c, 0x89d3: 0xe0002820, - 0x89d4: 0xe0002828, 0x89d5: 0xe0002824, 0x89d6: 0xe000282c, 0x89d7: 0x4064c220, - 0x89d8: 0xe0002833, 0x89d9: 0x4064c620, 0x89da: 0xe0002836, 0x89db: 0xe0002839, - 0x89dc: 0xe000283c, 0x89dd: 0xe000283f, 0x89de: 0xe0002842, 0x89df: 0x4064d220, - 0x89e0: 0xe0002849, 0x89e1: 0xe000284c, 0x89e2: 0xe0002846, 0x89e3: 0xe0002858, - 0x89e4: 0xe000287f, 0x89e5: 0xe0002882, 0x89e6: 0xe0002873, 0x89e7: 0xe0002885, - 0x89e8: 0xe000288b, 0x89e9: 0xe000288e, 0x89ea: 0xe0002894, 0x89eb: 0x4064ea20, - 0x89ec: 0xe00028b4, 0x89ed: 0xe00028b7, 0x89ee: 0xe00028c7, 0x89ef: 0xe00028d0, - 0x89f0: 0x4064f420, 0x89f1: 0x4064f620, 0x89f2: 0x4064f820, 0x89f3: 0xe00028e2, - 0x89f4: 0xe00028e5, 0x89f5: 0xe00028e8, 0x89f6: 0xe00028eb, 0x89f7: 0xe00028ee, - 0x89f8: 0xe00028f1, 0x89f9: 0x40650620, 0x89fa: 0xe00027d6, 0x89fb: 0xe00027df, - 0x89fc: 0xe00027e6, 0x89fd: 0xe00027e9, 0x89fe: 0xe00027ec, 0x89ff: 0xe00027f2, - // Block 0x228, offset 0x8a00 - 0x8a00: 0xc3f40cf1, 0x8a01: 0x4062ac21, 0x8a02: 0x4062b020, 0x8a03: 0xc3f60d21, - 0x8a04: 0x4062b221, 0x8a05: 0x4062b620, 0x8a06: 0x4062b820, 0x8a07: 0xc3f80d51, - 0x8a08: 0x4062ba21, 0x8a09: 0xc3fa0d81, 0x8a0a: 0x4062be21, 0x8a0b: 0x4062c220, - 0x8a0c: 0xc3fc0db1, 0x8a0d: 0x4062c421, 0x8a0e: 0x4062c820, 0x8a0f: 0x4062ca20, - 0x8a10: 0x4062cc20, 0x8a11: 0x4062ce20, 0x8a12: 0x4062d020, 0x8a13: 0x4062d220, - 0x8a14: 0x4062d420, 0x8a15: 0x4062d620, 0x8a16: 0x4062d820, 0x8a17: 0x4062da20, - 0x8a18: 0x4062dc20, 0x8a19: 0x4062de20, 0x8a1a: 0x4062e020, 0x8a1b: 0x4062e220, - 0x8a1c: 0x4062e420, 0x8a1d: 0x4062e620, 0x8a1e: 0x4062e820, 0x8a1f: 0x4062ea20, - 0x8a20: 0x4062ec20, 0x8a21: 0x4062ee20, 0x8a22: 0x4062f020, 0x8a23: 0x4062f220, - 0x8a24: 0x4062f420, 0x8a25: 0x4062f620, 0x8a26: 0x4062f820, 0x8a27: 0x4062fa20, - 0x8a28: 0x4062fc20, 0x8a29: 0x4062fe20, 0x8a2a: 0x40630020, 0x8a2b: 0x40630220, - 0x8a2c: 0x40630420, 0x8a2d: 0x40630620, 0x8a2e: 0x40630820, 0x8a2f: 0x40630a20, - 0x8a30: 0x40630c20, 0x8a31: 0x40630e20, 0x8a32: 0x40631020, 0x8a33: 0x40631220, - 0x8a34: 0x40631420, 0x8a35: 0x40631620, 0x8a36: 0x40631820, 0x8a37: 0x40631a20, - 0x8a38: 0x40631c20, 0x8a39: 0x40631e20, 0x8a3a: 0x40632020, 0x8a3b: 0x40632220, - 0x8a3c: 0x40632420, 0x8a3d: 0x40632620, 0x8a3e: 0x40632820, 0x8a3f: 0x40632a20, - // Block 0x229, offset 0x8a40 - 0x8a40: 0x40632c20, 0x8a41: 0x40632e20, 0x8a42: 0x40633020, 0x8a43: 0x40633220, - 0x8a44: 0x40633420, 0x8a45: 0x40633620, 0x8a46: 0x40633820, 0x8a47: 0x40633a20, - 0x8a48: 0x40633c20, 0x8a49: 0x40633e20, 0x8a4a: 0x40634020, 0x8a4b: 0x40634220, - 0x8a4c: 0x40634420, 0x8a4d: 0x40634620, 0x8a4e: 0x40634820, 0x8a4f: 0x40634a20, - 0x8a50: 0x40634c20, 0x8a51: 0x40634e20, 0x8a52: 0x40635020, 0x8a53: 0x40635220, - 0x8a54: 0x40635420, 0x8a55: 0x40635620, 0x8a56: 0x40635820, 0x8a57: 0x40635a20, - 0x8a58: 0x40635c20, 0x8a59: 0x40635e20, 0x8a5a: 0x40636020, 0x8a5b: 0x40636220, - 0x8a5c: 0x40636420, 0x8a5d: 0x40636620, 0x8a5e: 0x40636820, 0x8a5f: 0x4063a420, - 0x8a60: 0x4063a620, 0x8a61: 0xa0002502, 0x8a62: 0xa0002602, 0x8a63: 0xa0002702, - 0x8a64: 0xa0002802, 0x8a65: 0xa0002902, 0x8a66: 0xa0002a02, 0x8a67: 0xa0002b02, - 0x8a68: 0xa0002c02, 0x8a69: 0xa0002d02, 0x8a6a: 0xa0002e02, 0x8a6b: 0xa0002f02, - 0x8a6c: 0xa0003002, 0x8a6d: 0xa0003102, 0x8a6e: 0xa0003202, 0x8a6f: 0xa0003302, - 0x8a70: 0xa0003402, 0x8a71: 0xa0003502, 0x8a72: 0xa0003602, 0x8a73: 0xa0003702, - 0x8a74: 0xa0003802, 0x8a75: 0xa0003902, 0x8a76: 0x4063d220, 0x8a77: 0x4063d420, - 0x8a78: 0x4063d620, 0x8a79: 0x4063d820, 0x8a7a: 0x4063da20, 0x8a7b: 0x4063dc20, - 0x8a7c: 0x4063de20, 0x8a7d: 0x4063e020, 0x8a7e: 0x4063e220, 0x8a7f: 0x4063e420, - // Block 0x22a, offset 0x8a80 - 0x8a80: 0x4063e620, 0x8a81: 0x4063e820, 0x8a82: 0x4063ea20, 0x8a83: 0x4063ec20, - 0x8a84: 0x4063ee20, 0x8a85: 0x4063f020, 0x8a86: 0x4063f220, 0x8a87: 0x4063f420, - 0x8a88: 0x4063f620, 0x8a89: 0x4063f820, 0x8a8a: 0x4063fa20, 0x8a8b: 0x4063fc20, - 0x8a8c: 0x4063fe20, 0x8a8d: 0x40640020, 0x8a8e: 0x40640220, 0x8a8f: 0x40640420, - 0x8a90: 0x40640620, 0x8a91: 0x40640820, 0x8a92: 0x40640a20, 0x8a93: 0x40640c20, - 0x8a94: 0x40640e20, 0x8a95: 0x40641020, 0x8a96: 0x40641220, 0x8a97: 0x40641420, - 0x8a98: 0x40641620, 0x8a99: 0x40641820, 0x8a9a: 0x40641a20, 0x8a9b: 0x40641c20, - 0x8a9c: 0x40641e20, 0x8a9d: 0x40642020, 0x8a9e: 0x40642220, 0x8a9f: 0x40642420, - 0x8aa0: 0x40642620, 0x8aa1: 0x40642820, 0x8aa2: 0x40642a20, 0x8aa3: 0x40642c20, - 0x8aa4: 0x40642e20, 0x8aa5: 0x40643020, 0x8aa6: 0x40643220, 0x8aa7: 0x40643420, - 0x8aa8: 0xa0003a02, 0x8aa9: 0xa0003b02, 0x8aaa: 0xa0003c02, 0x8aab: 0xa0003d02, - 0x8aac: 0xa0003e02, 0x8aad: 0xa0003f02, 0x8aae: 0xa0004002, 0x8aaf: 0xa0004102, - 0x8ab0: 0xa0004202, 0x8ab1: 0xa0004302, 0x8ab2: 0xa0004402, 0x8ab3: 0xa0004502, - 0x8ab4: 0xa0004602, 0x8ab5: 0xa0004702, 0x8ab6: 0xa0004802, 0x8ab7: 0xa0004902, - 0x8ab8: 0xa0004a02, 0x8ab9: 0xa0004b02, 0x8aba: 0xa0004c02, 0x8abb: 0xa0004d02, - 0x8abc: 0xa0004e02, 0x8abd: 0xa0004f02, 0x8abe: 0xa0005002, 0x8abf: 0xa0005102, - // Block 0x22b, offset 0x8ac0 - 0x8ac0: 0xa0005202, 0x8ac1: 0xa0005302, 0x8ac2: 0xa0005402, 0x8ac3: 0x40649a20, - 0x8ac4: 0x40649c20, 0x8ac5: 0x40649e20, 0x8ac6: 0x4064a020, 0x8ac7: 0x4064a220, - 0x8ac8: 0x4064a420, 0x8ac9: 0x4064a620, 0x8aca: 0x4064a820, 0x8acb: 0x4064aa20, - 0x8acc: 0x4064ac20, 0x8acd: 0x4064ae20, 0x8ace: 0x4064b020, 0x8acf: 0x4064b220, - 0x8ad0: 0x4064b420, 0x8ad1: 0x4064b620, 0x8ad2: 0x4064b820, 0x8ad3: 0x4064ba20, - 0x8ad4: 0x4064bc20, 0x8ad5: 0x4064be20, 0x8ad6: 0x4064c020, 0x8ad7: 0x4064c220, - 0x8ad8: 0x4064c420, 0x8ad9: 0x4064c620, 0x8ada: 0x4064c820, 0x8adb: 0x4064ca20, - 0x8adc: 0x4064cc20, 0x8add: 0x4064ce20, 0x8ade: 0x4064d020, 0x8adf: 0x4064d220, - 0x8ae0: 0x4064d420, 0x8ae1: 0x4064d620, 0x8ae2: 0x4064d820, 0x8ae3: 0x4064da20, - 0x8ae4: 0x4064dc20, 0x8ae5: 0x4064de20, 0x8ae6: 0x4064e020, 0x8ae7: 0x4064e220, - 0x8ae8: 0x4064e420, 0x8ae9: 0x4064e620, 0x8aea: 0x4064e820, 0x8aeb: 0x4064ea20, - 0x8aec: 0x4064ec20, 0x8aed: 0x4064ee20, 0x8aee: 0x4064f020, 0x8aef: 0x4064f220, - 0x8af0: 0x4064f420, 0x8af1: 0x4064f620, 0x8af2: 0x4064f820, 0x8af3: 0x4064fa20, - 0x8af4: 0x4064fc20, 0x8af5: 0x4064fe20, 0x8af6: 0x40650020, 0x8af7: 0x40650220, - 0x8af8: 0x40650420, 0x8af9: 0x40650620, 0x8afa: 0x40650820, 0x8afb: 0x40650a20, - 0x8afc: 0x40650c20, 0x8afd: 0x40650e20, 0x8afe: 0x40651020, 0x8aff: 0x40651220, - // Block 0x22c, offset 0x8b00 - 0x8b05: 0x4065da20, 0x8b06: 0x4065dc20, 0x8b07: 0x4065de20, - 0x8b08: 0x4065e020, 0x8b09: 0x4065e420, 0x8b0a: 0x4065e620, 0x8b0b: 0x4065e820, - 0x8b0c: 0x4065ea20, 0x8b0d: 0x4065ec20, 0x8b0e: 0x4065ee20, 0x8b0f: 0x4065f420, - 0x8b10: 0x4065f620, 0x8b11: 0x4065f820, 0x8b12: 0x4065fa20, 0x8b13: 0x4065fe20, - 0x8b14: 0x40660020, 0x8b15: 0x40660220, 0x8b16: 0x40660420, 0x8b17: 0x40660620, - 0x8b18: 0x40660820, 0x8b19: 0x40660a20, 0x8b1a: 0x40661220, 0x8b1b: 0x40661420, - 0x8b1c: 0x40661820, 0x8b1d: 0x40661a20, 0x8b1e: 0x40661e20, 0x8b1f: 0x40662020, - 0x8b20: 0x40662220, 0x8b21: 0x40662420, 0x8b22: 0x40662620, 0x8b23: 0x40662820, - 0x8b24: 0x40662a20, 0x8b25: 0x40662e20, 0x8b26: 0x40663620, 0x8b27: 0x40663820, - 0x8b28: 0x40663a20, 0x8b29: 0x40663c20, 0x8b2a: 0x4065e220, 0x8b2b: 0x4065f020, - 0x8b2c: 0x4065fc20, 0x8b2d: 0x40663e20, - 0x8b31: 0x0062ac84, 0x8b32: 0x0062aca3, 0x8b33: 0x00646884, - 0x8b34: 0x0062b084, 0x8b35: 0x00646c84, 0x8b36: 0x00646e84, 0x8b37: 0x0062b284, - 0x8b38: 0x0062b2a3, 0x8b39: 0x0062b684, 0x8b3a: 0x00647484, 0x8b3b: 0x00647684, - 0x8b3c: 0x00647884, 0x8b3d: 0x00647a84, 0x8b3e: 0x00647c84, 0x8b3f: 0x00647e84, - // Block 0x22d, offset 0x8b40 - 0x8b40: 0x0062e084, 0x8b41: 0x0062b884, 0x8b42: 0x0062ba84, 0x8b43: 0x0062baa3, - 0x8b44: 0x0062ee84, 0x8b45: 0x0062be84, 0x8b46: 0x0062bea3, 0x8b47: 0x0062c284, - 0x8b48: 0x0062c484, 0x8b49: 0x0062c4a3, 0x8b4a: 0x0062c884, 0x8b4b: 0x0062ca84, - 0x8b4c: 0x0062cc84, 0x8b4d: 0x0062ce84, 0x8b4e: 0x0062d084, 0x8b4f: 0x0063a884, - 0x8b50: 0x0063aa84, 0x8b51: 0x0063ac84, 0x8b52: 0x0063ae84, 0x8b53: 0x0063b084, - 0x8b54: 0x0063b284, 0x8b55: 0x0063b484, 0x8b56: 0x0063b684, 0x8b57: 0x0063b884, - 0x8b58: 0x0063ba84, 0x8b59: 0x0063bc84, 0x8b5a: 0x0063be84, 0x8b5b: 0x0063c084, - 0x8b5c: 0x0063c284, 0x8b5d: 0x0063c484, 0x8b5e: 0x0063c684, 0x8b5f: 0x0063c884, - 0x8b60: 0x0063ca84, 0x8b61: 0x0063cc84, 0x8b62: 0x0063ce84, 0x8b63: 0x0063d084, - 0x8b64: 0x0063a684, 0x8b65: 0x0062d484, 0x8b66: 0x0062d684, 0x8b67: 0x0064a284, - 0x8b68: 0x0064a484, 0x8b69: 0x0064ac84, 0x8b6a: 0x0064b084, 0x8b6b: 0x0064ba84, - 0x8b6c: 0x0064c284, 0x8b6d: 0x0064c684, 0x8b6e: 0x0062e484, 0x8b6f: 0x0064ce84, - 0x8b70: 0x0064d284, 0x8b71: 0x0062e684, 0x8b72: 0x0062e884, 0x8b73: 0x0062ec84, - 0x8b74: 0x0062f084, 0x8b75: 0x0062f284, 0x8b76: 0x0062fa84, 0x8b77: 0x0062fe84, - 0x8b78: 0x00630284, 0x8b79: 0x00630484, 0x8b7a: 0x00630684, 0x8b7b: 0x00630884, - 0x8b7c: 0x00630a84, 0x8b7d: 0x00631084, 0x8b7e: 0x00631884, 0x8b7f: 0x00632c84, - // Block 0x22e, offset 0x8b80 - 0x8b80: 0xf0000404, 0x8b81: 0xf0000404, 0x8b82: 0xf0000404, 0x8b83: 0xf0000404, - 0x8b84: 0x02aa9e86, 0x8b85: 0x02bcf886, 0x8b86: 0x02cb0e86, 0x8b87: 0x02f71e86, - 0x8b88: 0xe00002e3, 0x8b89: 0xe00003d8, 0x8b8a: 0xe00004b3, 0x8b8b: 0xe000057d, - 0x8b8c: 0xe0000648, 0x8b8d: 0xe00006f0, 0x8b8e: 0xe000079c, 0x8b8f: 0xe0000841, - 0x8b90: 0xe0000ec0, 0x8b91: 0xf0000606, 0x8b92: 0xf0000606, 0x8b93: 0xf0000606, - 0x8b94: 0xf0000606, 0x8b95: 0xf0000606, 0x8b96: 0xf0000606, 0x8b97: 0xf0000606, - 0x8b98: 0xf0000606, 0x8b99: 0xf0000606, 0x8b9a: 0xf0000606, 0x8b9b: 0xf0000606, - 0x8b9c: 0xf0000606, 0x8b9d: 0xf0000606, 0x8b9e: 0xf0000606, 0x8b9f: 0xf0000606, - 0x8ba0: 0x0062ac86, 0x8ba1: 0x0062b086, 0x8ba2: 0x0062b286, 0x8ba3: 0x0062b686, - 0x8ba4: 0x0062b886, 0x8ba5: 0x0062ba86, 0x8ba6: 0x0062be86, 0x8ba7: 0x0062c286, - 0x8ba8: 0x0062c486, 0x8ba9: 0x0062c886, 0x8baa: 0x0062ca86, 0x8bab: 0x0062cc86, - 0x8bac: 0x0062ce86, 0x8bad: 0x0062d086, 0x8bae: 0xe0002984, 0x8baf: 0xe0002987, - 0x8bb0: 0xe000298a, 0x8bb1: 0xe000298d, 0x8bb2: 0xe0002990, 0x8bb3: 0xe0002993, - 0x8bb4: 0xe0002996, 0x8bb5: 0xe0002999, 0x8bb6: 0xe000299f, 0x8bb7: 0xe00029a2, - 0x8bb8: 0xe00029a5, 0x8bb9: 0xe00029a8, 0x8bba: 0xe00029ab, 0x8bbb: 0xe00029ae, - 0x8bbc: 0xe0002127, 0x8bbd: 0xe0002122, 0x8bbe: 0xe000299c, 0x8bbf: 0x4027ac20, - // Block 0x22f, offset 0x8bc0 - 0x8bc0: 0xa0000000, 0x8bc1: 0xa0000000, 0x8bc2: 0xa0000000, 0x8bc3: 0xa0000000, - 0x8bc4: 0xa0000000, 0x8bc5: 0xa0000000, 0x8bc6: 0xa0000000, 0x8bc7: 0xa0000000, - 0x8bc8: 0xa0000000, 0x8bc9: 0x40020020, 0x8bca: 0x40020220, 0x8bcb: 0x40020420, - 0x8bcc: 0x40020620, 0x8bcd: 0x40020820, 0x8bce: 0xa0000000, 0x8bcf: 0xa0000000, - 0x8bd0: 0xa0000000, 0x8bd1: 0xa0000000, 0x8bd2: 0xa0000000, 0x8bd3: 0xa0000000, - 0x8bd4: 0xa0000000, 0x8bd5: 0xa0000000, 0x8bd6: 0xa0000000, 0x8bd7: 0xa0000000, - 0x8bd8: 0xa0000000, 0x8bd9: 0xa0000000, 0x8bda: 0xa0000000, 0x8bdb: 0xa0000000, - 0x8bdc: 0xa0000000, 0x8bdd: 0xa0000000, 0x8bde: 0xa0000000, 0x8bdf: 0xa0000000, - 0x8be0: 0x40021220, 0x8be1: 0x4002ba20, 0x8be2: 0x4003e020, 0x8be3: 0x4004ea20, - 0x8be4: 0x4027de20, 0x8be5: 0x4004ec20, 0x8be6: 0x4004e620, 0x8be7: 0x4003d220, - 0x8be8: 0x4003f420, 0x8be9: 0x4003f620, 0x8bea: 0x4004d820, 0x8beb: 0x40093820, - 0x8bec: 0x40024020, 0x8bed: 0x40021a20, 0x8bee: 0x4002e420, 0x8bef: 0x4004e220, - 0x8bf0: 0x4029cc20, 0x8bf1: 0x4029ce20, 0x8bf2: 0x4029d020, 0x8bf3: 0x4029d220, - 0x8bf4: 0x4029d420, 0x8bf5: 0x4029d620, 0x8bf6: 0x4029d820, 0x8bf7: 0x4029da20, - 0x8bf8: 0x4029dc20, 0x8bf9: 0x4029de20, 0x8bfa: 0x40026c20, 0x8bfb: 0x40026220, - 0x8bfc: 0x40094020, 0x8bfd: 0xc32f0851, 0x8bfe: 0x40094420, 0x8bff: 0x4002c420, - // Block 0x230, offset 0x8c00 - 0x8c00: 0x4004d620, 0x8c01: 0xc40209c3, 0x8c02: 0x002c0a88, 0x8c03: 0x002c3a88, - 0x8c04: 0x002c6288, 0x8c05: 0xc3920a11, 0x8c06: 0x002d0888, 0x8c07: 0x002d2288, - 0x8c08: 0x002d6888, 0x8c09: 0x002d9a88, 0x8c0a: 0x002dcc88, 0x8c0b: 0x002dfe88, - 0x8c0c: 0xc0030002, 0x8c0d: 0x002e8288, 0x8c0e: 0x002e9e88, 0x8c0f: 0xc3970951, - 0x8c10: 0x002f2c88, 0x8c11: 0x002f5688, 0x8c12: 0x002f7a88, 0x8c13: 0x002fe688, - 0x8c14: 0x00302c88, 0x8c15: 0xc3840951, 0x8c16: 0x0030be88, 0x8c17: 0x0030e288, - 0x8c18: 0x0030f688, 0x8c19: 0x00310088, 0x8c1a: 0x00312a88, 0x8c1b: 0x4003f820, - 0x8c1c: 0x4004e420, 0x8c1d: 0x4003fa20, 0x8c1e: 0x40062420, 0x8c1f: 0x40021620, - 0x8c20: 0x40061e20, 0x8c21: 0xc3fe0982, 0x8c22: 0x402c0a20, 0x8c23: 0x402c3a20, - 0x8c24: 0x402c6220, 0x8c25: 0xc3900a11, 0x8c26: 0x402d0820, 0x8c27: 0x402d2220, - 0x8c28: 0x402d6820, 0x8c29: 0x402d9a20, 0x8c2a: 0x402dcc20, 0x8c2b: 0x402dfe20, - 0x8c2c: 0xc0000002, 0x8c2d: 0x402e8220, 0x8c2e: 0x402e9e20, 0x8c2f: 0xc3940951, - 0x8c30: 0x402f2c20, 0x8c31: 0x402f5620, 0x8c32: 0x402f7a20, 0x8c33: 0x402fe620, - 0x8c34: 0x40302c20, 0x8c35: 0xc3810951, 0x8c36: 0x4030be20, 0x8c37: 0x4030e220, - 0x8c38: 0x4030f620, 0x8c39: 0x40310020, 0x8c3a: 0x40312a20, 0x8c3b: 0x4003fc20, - 0x8c3c: 0x40094820, 0x8c3d: 0x4003fe20, 0x8c3e: 0x40094c20, 0x8c3f: 0xa0000000, - // Block 0x231, offset 0x8c40 - 0x8c40: 0xa0000000, 0x8c41: 0xa0000000, 0x8c42: 0xa0000000, 0x8c43: 0xa0000000, - 0x8c44: 0xa0000000, 0x8c45: 0xa0000000, 0x8c46: 0xa0000000, 0x8c47: 0xa0000000, - 0x8c48: 0xa0000000, 0x8c49: 0x40020020, 0x8c4a: 0x40020220, 0x8c4b: 0x40020420, - 0x8c4c: 0x40020620, 0x8c4d: 0x40020820, 0x8c4e: 0xa0000000, 0x8c4f: 0xa0000000, - 0x8c50: 0xa0000000, 0x8c51: 0xa0000000, 0x8c52: 0xa0000000, 0x8c53: 0xa0000000, - 0x8c54: 0xa0000000, 0x8c55: 0xa0000000, 0x8c56: 0xa0000000, 0x8c57: 0xa0000000, - 0x8c58: 0xa0000000, 0x8c59: 0xa0000000, 0x8c5a: 0xa0000000, 0x8c5b: 0xa0000000, - 0x8c5c: 0xa0000000, 0x8c5d: 0xa0000000, 0x8c5e: 0xa0000000, 0x8c5f: 0xa0000000, - 0x8c60: 0x40021220, 0x8c61: 0x4002ba20, 0x8c62: 0x4003e020, 0x8c63: 0x4004ea20, - 0x8c64: 0x4027de20, 0x8c65: 0x4004ec20, 0x8c66: 0x4004e620, 0x8c67: 0x4003d220, - 0x8c68: 0x4003f420, 0x8c69: 0x4003f620, 0x8c6a: 0x4004d820, 0x8c6b: 0x40093820, - 0x8c6c: 0x40024020, 0x8c6d: 0x40021a20, 0x8c6e: 0x4002e420, 0x8c6f: 0x4004e220, - 0x8c70: 0x4029cc20, 0x8c71: 0x4029ce20, 0x8c72: 0x4029d020, 0x8c73: 0x4029d220, - 0x8c74: 0x4029d420, 0x8c75: 0x4029d620, 0x8c76: 0x4029d820, 0x8c77: 0x4029da20, - 0x8c78: 0x4029dc20, 0x8c79: 0x4029de20, 0x8c7a: 0x40026c20, 0x8c7b: 0x40026220, - 0x8c7c: 0x40094020, 0x8c7d: 0xc32f0851, 0x8c7e: 0x40094420, 0x8c7f: 0x4002c420, - // Block 0x232, offset 0x8c80 - 0x8c80: 0x4004d620, 0x8c81: 0xc40d0de1, 0x8c82: 0x002c0a88, 0x8c83: 0xc41508d1, - 0x8c84: 0x002c6288, 0x8c85: 0x002c9888, 0x8c86: 0x002d0888, 0x8c87: 0xc41d08d1, - 0x8c88: 0x002d6888, 0x8c89: 0x002d9a88, 0x8c8a: 0x002dcc88, 0x8c8b: 0xc42108d1, - 0x8c8c: 0xc0030002, 0x8c8d: 0x002e8288, 0x8c8e: 0xc4260e31, 0x8c8f: 0xc4370e61, - 0x8c90: 0x002f2c88, 0x8c91: 0x002f5688, 0x8c92: 0x002f7a88, 0x8c93: 0xc42b08d1, - 0x8c94: 0x00302c88, 0x8c95: 0xc3840951, 0x8c96: 0x0030be88, 0x8c97: 0x0030e288, - 0x8c98: 0x0030f688, 0x8c99: 0x00310088, 0x8c9a: 0xc42f08d1, 0x8c9b: 0x4003f820, - 0x8c9c: 0x4004e420, 0x8c9d: 0x4003fa20, 0x8c9e: 0x40062420, 0x8c9f: 0x40021620, - 0x8ca0: 0x40061e20, 0x8ca1: 0xc4070de1, 0x8ca2: 0x402c0a20, 0x8ca3: 0xc41308d1, - 0x8ca4: 0x402c6220, 0x8ca5: 0x402c9820, 0x8ca6: 0x402d0820, 0x8ca7: 0xc41b08d1, - 0x8ca8: 0x402d6820, 0x8ca9: 0x402d9a20, 0x8caa: 0x402dcc20, 0x8cab: 0xc41f08d1, - 0x8cac: 0xc0000002, 0x8cad: 0x402e8220, 0x8cae: 0xc4230e31, 0x8caf: 0xc4310e61, - 0x8cb0: 0x402f2c20, 0x8cb1: 0x402f5620, 0x8cb2: 0x402f7a20, 0x8cb3: 0xc42908d1, - 0x8cb4: 0x40302c20, 0x8cb5: 0xc3810951, 0x8cb6: 0x4030be20, 0x8cb7: 0x4030e220, - 0x8cb8: 0x4030f620, 0x8cb9: 0x40310020, 0x8cba: 0xc42d08d1, 0x8cbb: 0x4003fc20, - 0x8cbc: 0x40094820, 0x8cbd: 0x4003fe20, 0x8cbe: 0x40094c20, 0x8cbf: 0xa0000000, - // Block 0x233, offset 0x8cc0 - 0x8cc0: 0xe00008f5, 0x8cc1: 0x002c0883, 0x8cc2: 0xe0000921, 0x8cc3: 0x00320ea3, - 0x8cc4: 0x00320e83, 0x8cc5: 0x00320c83, 0x8cc6: 0x00320a83, 0x8cc7: 0xe0000a53, - 0x8cc8: 0xe0000ae8, 0x8cc9: 0xe0000ae2, 0x8cca: 0xe0000af4, 0x8ccb: 0xe0000b20, - 0x8ccc: 0xe0000c2b, 0x8ccd: 0xe0000c25, 0x8cce: 0xe0000c37, 0x8ccf: 0xe0000c43, - 0x8cd0: 0x002c96a3, 0x8cd1: 0x002ee0c3, 0x8cd2: 0xe0000d9a, 0x8cd3: 0xe0000d94, - 0x8cd4: 0x003210e3, 0x8cd5: 0x003210c3, 0x8cd6: 0x00321083, 0x8cd7: 0x40093e20, - 0x8cd8: 0x00320883, 0x8cd9: 0xe0000fe1, 0x8cda: 0xe0000fdb, 0x8cdb: 0xe0000fed, - 0x8cdc: 0x003100a3, 0x8cdd: 0xe0001102, 0x8cde: 0x00306aa3, 0x8cdf: 0xe0000f7b, - 0x8ce0: 0xe00008f2, 0x8ce1: 0x402c0820, 0x8ce2: 0xe000091e, 0x8ce3: 0x40320e21, - 0x8ce4: 0x40320e20, 0x8ce5: 0x40320c20, 0x8ce6: 0x40320a20, 0x8ce7: 0xe0000a4d, - 0x8ce8: 0xe0000ae5, 0x8ce9: 0xe0000adf, 0x8cea: 0xe0000af1, 0x8ceb: 0xe0000b1d, - 0x8cec: 0xe0000c28, 0x8ced: 0xe0000c22, 0x8cee: 0xe0000c34, 0x8cef: 0xe0000c40, - 0x8cf0: 0x402c9621, 0x8cf1: 0x402ee022, 0x8cf2: 0xe0000d97, 0x8cf3: 0xe0000d91, - 0x8cf4: 0x40321023, 0x8cf5: 0x40321022, 0x8cf6: 0x40321020, 0x8cf7: 0x40093c20, - 0x8cf8: 0x40320820, 0x8cf9: 0xe0000fde, 0x8cfa: 0xe0000fd8, 0x8cfb: 0xe0000fea, - 0x8cfc: 0x40310021, 0x8cfd: 0xe00010ff, 0x8cfe: 0x40306a21, 0x8cff: 0xe0001114, - // Block 0x234, offset 0x8d00 - 0x8d00: 0xe0000983, 0x8d01: 0xe0000980, 0x8d02: 0xe00008fb, 0x8d03: 0xe00008f8, - 0x8d04: 0xe000097d, 0x8d05: 0xe000097a, 0x8d06: 0xe0000a38, 0x8d07: 0xe0000a35, - 0x8d08: 0xe0000a3e, 0x8d09: 0xe0000a3b, 0x8d0a: 0xe0000a4a, 0x8d0b: 0xe0000a47, - 0x8d0c: 0x002c5c83, 0x8d0d: 0x402c5c20, 0x8d0e: 0xe0000a86, 0x8d0f: 0xe0000a83, - 0x8d10: 0x002c9683, 0x8d11: 0x402c9620, 0x8d12: 0xe0000b46, 0x8d13: 0xe0000b43, - 0x8d14: 0xe0000aee, 0x8d15: 0xe0000aeb, 0x8d16: 0xe0000b2c, 0x8d17: 0xe0000b29, - 0x8d18: 0xe0000b40, 0x8d19: 0xe0000b3d, 0x8d1a: 0xe0000b1a, 0x8d1b: 0xe0000b17, - 0x8d1c: 0xe0000bb8, 0x8d1d: 0xe0000bb5, 0x8d1e: 0xe0000bb2, 0x8d1f: 0xe0000baf, - 0x8d20: 0xe0000bc4, 0x8d21: 0xe0000bc1, 0x8d22: 0xe0000bca, 0x8d23: 0xe0000bc7, - 0x8d24: 0xe0000bee, 0x8d25: 0xe0000beb, 0x8d26: 0xe0000c1b, 0x8d27: 0xe0000c18, - 0x8d28: 0xe0000c51, 0x8d29: 0xe0000c4e, 0x8d2a: 0xe0000c60, 0x8d2b: 0xe0000c5d, - 0x8d2c: 0xe0000c31, 0x8d2d: 0xe0000c2e, 0x8d2e: 0xe0000c5a, 0x8d2f: 0xe0000c57, - 0x8d30: 0xe0000c54, 0x8d31: 0x402da220, 0x8d32: 0xf0000a0a, 0x8d33: 0xf0000404, - 0x8d34: 0xe0000c8a, 0x8d35: 0xe0000c87, 0x8d36: 0xe0000c9f, 0x8d37: 0xe0000c9c, - 0x8d38: 0x402f7220, 0x8d39: 0xe0000ccc, 0x8d3a: 0xe0000cc9, 0x8d3b: 0xe0000cd8, - 0x8d3c: 0xe0000cd5, 0x8d3d: 0xe0000cd2, 0x8d3e: 0xe0000ccf, 0x8d3f: 0xe0000d04, - // Block 0x235, offset 0x8d40 - 0x8d40: 0xe0000cfe, 0x8d41: 0xe0000cf8, 0x8d42: 0xe0000cf5, 0x8d43: 0x002ee0a3, - 0x8d44: 0x402ee021, 0x8d45: 0xe0000d6f, 0x8d46: 0xe0000d6c, 0x8d47: 0xe0000d5d, - 0x8d48: 0xe0000d5a, 0x8d49: 0xf0000404, 0x8d4a: 0x002ee083, 0x8d4b: 0x402ee020, - 0x8d4c: 0xe0000e2e, 0x8d4d: 0xe0000e2b, 0x8d4e: 0xe0000da0, 0x8d4f: 0xe0000d9d, - 0x8d50: 0x003210a3, 0x8d51: 0x40321021, 0x8d52: 0x003208a3, 0x8d53: 0x40320821, - 0x8d54: 0xe0000eca, 0x8d55: 0xe0000ec7, 0x8d56: 0xe0000edc, 0x8d57: 0xe0000ed9, - 0x8d58: 0xe0000ed0, 0x8d59: 0xe0000ecd, 0x8d5a: 0xe0000f1f, 0x8d5b: 0xe0000f1c, - 0x8d5c: 0xe0000f2d, 0x8d5d: 0xe0000f2a, 0x8d5e: 0xe0000f47, 0x8d5f: 0xe0000f44, - 0x8d60: 0x00302a83, 0x8d61: 0x40302a20, 0x8d62: 0xe0000f99, 0x8d63: 0xe0000f96, - 0x8d64: 0xe0000f8a, 0x8d65: 0xe0000f87, 0x8d66: 0x00306a83, 0x8d67: 0x40306a20, - 0x8d68: 0xe000102b, 0x8d69: 0xe0001028, 0x8d6a: 0xe000103f, 0x8d6b: 0xe000103c, - 0x8d6c: 0xe0000fe7, 0x8d6d: 0xe0000fe4, 0x8d6e: 0xe0000ff9, 0x8d6f: 0xe0000ff6, - 0x8d70: 0x003100c3, 0x8d71: 0x40310022, 0x8d72: 0xe0001039, 0x8d73: 0xe0001036, - 0x8d74: 0xe00010d8, 0x8d75: 0xe00010d5, 0x8d76: 0xe000110e, 0x8d77: 0xe000110b, - 0x8d78: 0xe0001117, 0x8d79: 0xe000113b, 0x8d7a: 0xe0001138, 0x8d7b: 0xe000114d, - 0x8d7c: 0xe000114a, 0x8d7d: 0x00320683, 0x8d7e: 0x40320620, 0x8d7f: 0xe0000f64, - // Block 0x236, offset 0x8d80 - 0x8d80: 0x402c1a20, 0x8d81: 0x002c2a88, 0x8d82: 0x002c3288, 0x8d83: 0x402c3220, - 0x8d84: 0x0031c488, 0x8d85: 0x4031c420, 0x8d86: 0x002efa88, 0x8d87: 0x002c4e88, - 0x8d88: 0x402c4e20, 0x8d89: 0x002c7288, 0x8d8a: 0x002c7a88, 0x8d8b: 0x002c8488, - 0x8d8c: 0x402c8420, 0x8d8d: 0xe000115c, 0x8d8e: 0x002cae88, 0x8d8f: 0x002cb888, - 0x8d90: 0x002cc288, 0x8d91: 0x002d1688, 0x8d92: 0x402d1620, 0x8d93: 0x002d4488, - 0x8d94: 0x002d5888, 0x8d95: 0x402d7820, 0x8d96: 0x002dc288, 0x8d97: 0x002db688, - 0x8d98: 0x002e0a88, 0x8d99: 0x402e0a20, 0x8d9a: 0x402e3820, 0x8d9b: 0x402e7220, - 0x8d9c: 0x0030a088, 0x8d9d: 0x002eb488, 0x8d9e: 0x402ebc20, 0x8d9f: 0x002f1088, - 0x8da0: 0xe0000e56, 0x8da1: 0xe0000e53, 0x8da2: 0x002d6088, 0x8da3: 0x402d6020, - 0x8da4: 0x002f3e88, 0x8da5: 0x402f3e20, 0x8da6: 0x002f8288, 0x8da7: 0x0031b488, - 0x8da8: 0x4031b420, 0x8da9: 0x00300888, 0x8daa: 0x40301220, 0x8dab: 0x40304220, - 0x8dac: 0x00304a88, 0x8dad: 0x40304a20, 0x8dae: 0x00305288, 0x8daf: 0xe000105f, - 0x8db0: 0xe000105c, 0x8db1: 0x0030b488, 0x8db2: 0x0030cc88, 0x8db3: 0x00311888, - 0x8db4: 0x40311820, 0x8db5: 0x00313488, 0x8db6: 0x40313420, 0x8db7: 0xc41908d1, - 0x8db8: 0x00316e88, 0x8db9: 0x40316e20, 0x8dba: 0x40317820, 0x8dbb: 0x4031a620, - 0x8dbc: 0x0031bc88, 0x8dbd: 0x4031bc20, 0x8dbe: 0xe0000fc9, 0x8dbf: 0x40319420, - // Block 0x237, offset 0x8dc0 - 0x8dc0: 0x40321220, 0x8dc1: 0x40321a20, 0x8dc2: 0x40322220, 0x8dc3: 0x40322a20, - 0x8dc4: 0xe0000ad5, 0x8dc5: 0xe0000ad1, 0x8dc6: 0xe0000acd, 0x8dc7: 0xf0000a0a, - 0x8dc8: 0xf000040a, 0x8dc9: 0xf0000404, 0x8dca: 0xf0000a0a, 0x8dcb: 0xf000040a, - 0x8dcc: 0xf0000404, 0x8dcd: 0xe0000947, 0x8dce: 0xe0000944, 0x8dcf: 0xe0000c3d, - 0x8dd0: 0xe0000c3a, 0x8dd1: 0xe0000dcc, 0x8dd2: 0xe0000dc9, 0x8dd3: 0xe0000ff3, - 0x8dd4: 0xe0000ff0, 0x8dd5: 0xe0002685, 0x8dd6: 0xe0002682, 0x8dd7: 0xe0002673, - 0x8dd8: 0xe0002670, 0x8dd9: 0xe000267f, 0x8dda: 0xe000267c, 0x8ddb: 0xe0002679, - 0x8ddc: 0xe0002676, 0x8ddd: 0x402cae20, 0x8dde: 0xe000274c, 0x8ddf: 0xe0002749, - 0x8de0: 0xe0002697, 0x8de1: 0xe0002694, 0x8de2: 0xe00029c6, 0x8de3: 0xe00029c3, - 0x8de4: 0x002d6683, 0x8de5: 0x402d6620, 0x8de6: 0x002d6483, 0x8de7: 0x402d6420, - 0x8de8: 0x002e2083, 0x8de9: 0x402e2020, 0x8dea: 0x00321103, 0x8deb: 0x40321024, - 0x8dec: 0xe0002a08, 0x8ded: 0xe0002a05, 0x8dee: 0x002c6083, 0x8def: 0x402c6020, - 0x8df0: 0xe0000c8d, 0x8df1: 0xf0000a0a, 0x8df2: 0xf000040a, 0x8df3: 0xf0000404, - 0x8df4: 0xe0000bac, 0x8df5: 0xe0000ba9, 0x8df6: 0x002d7888, 0x8df7: 0x00319488, - 0x8df8: 0xe0000d57, 0x8df9: 0xe0000d54, 0x8dfa: 0xe000268b, 0x8dfb: 0xe0002688, - 0x8dfc: 0xe00029c0, 0x8dfd: 0xe00029bd, 0x8dfe: 0xe00029ba, 0x8dff: 0xe00029b7, - // Block 0x238, offset 0x8e00 - 0x8e00: 0xe000098f, 0x8e01: 0xe000098c, 0x8e02: 0xe0000995, 0x8e03: 0xe0000992, - 0x8e04: 0xe0000b62, 0x8e05: 0xe0000b5f, 0x8e06: 0xe0000b68, 0x8e07: 0xe0000b65, - 0x8e08: 0xe0000c6c, 0x8e09: 0xe0000c69, 0x8e0a: 0xe0000c72, 0x8e0b: 0xe0000c6f, - 0x8e0c: 0xe0000e4a, 0x8e0d: 0xe0000e47, 0x8e0e: 0xe0000e50, 0x8e0f: 0xe0000e4d, - 0x8e10: 0xe0000ee8, 0x8e11: 0xe0000ee5, 0x8e12: 0xe0000eee, 0x8e13: 0xe0000eeb, - 0x8e14: 0xe0001053, 0x8e15: 0xe0001050, 0x8e16: 0xe0001059, 0x8e17: 0xe0001056, - 0x8e18: 0xe0000f61, 0x8e19: 0xe0000f5e, 0x8e1a: 0xe0000fa5, 0x8e1b: 0xe0000fa2, - 0x8e1c: 0x00312288, 0x8e1d: 0x40312220, 0x8e1e: 0xe0000bf4, 0x8e1f: 0xe0000bf1, - 0x8e20: 0x002ebc88, 0x8e21: 0x402c8c20, 0x8e22: 0x002f2288, 0x8e23: 0x402f2220, - 0x8e24: 0x00314088, 0x8e25: 0x40314020, 0x8e26: 0x00320ca3, 0x8e27: 0x40320c21, - 0x8e28: 0xe0000b32, 0x8e29: 0xe0000b2f, 0x8e2a: 0xe0002758, 0x8e2b: 0xe0002755, - 0x8e2c: 0xe00029e4, 0x8e2d: 0xe00029e1, 0x8e2e: 0xe0000e04, 0x8e2f: 0xe0000e01, - 0x8e30: 0xe0000e0b, 0x8e31: 0xe0000e07, 0x8e32: 0xe0001129, 0x8e33: 0xe0001126, - 0x8e34: 0x402e5e20, 0x8e35: 0x402ed020, 0x8e36: 0x40305a20, 0x8e37: 0x402dd420, - 0x8e38: 0xe0000abf, 0x8e39: 0xe0000ec4, 0x8e3a: 0x002be888, 0x8e3b: 0x002c4488, - 0x8e3c: 0x402c4420, 0x8e3d: 0x002e3888, 0x8e3e: 0x00303e88, 0x8e3f: 0x402ffc20, - // Block 0x239, offset 0x8e40 - 0x8e40: 0x402f8220, 0x8e41: 0x402fd820, 0x8e42: 0x402ff420, 0x8e43: 0x40300820, - 0x8e44: 0x402df620, 0x8e45: 0x40301a20, 0x8e46: 0x40302420, 0x8e47: 0x40306420, - 0x8e48: 0x40305220, 0x8e49: 0x40307c20, 0x8e4a: 0x4030b420, 0x8e4b: 0x4030cc20, - 0x8e4c: 0x4030da20, 0x8e4d: 0x4030ee20, 0x8e4e: 0x402e7a20, 0x8e4f: 0x40310820, - 0x8e50: 0x40314820, 0x8e51: 0x40315020, 0x8e52: 0xc41708d1, 0x8e53: 0x40318020, - 0x8e54: 0x4031cc20, 0x8e55: 0x4031e820, 0x8e56: 0x40320a20, 0x8e57: 0x40323220, - 0x8e58: 0x40323a20, 0x8e59: 0x402c1220, 0x8e5a: 0x402cf820, 0x8e5b: 0x402d4c20, - 0x8e5c: 0x402d7020, 0x8e5d: 0x402de620, 0x8e5e: 0x402e1a20, 0x8e5f: 0x402e2a20, - 0x8e60: 0x402f6220, 0x8e61: 0x4031fa20, 0x8e62: 0x40320220, 0x8e63: 0xe0000aca, - 0x8e64: 0xe0000adc, 0x8e65: 0xe0000ad9, 0x8e66: 0xe0000fcc, 0x8e67: 0xe0000fcf, - 0x8e68: 0xe0000fba, 0x8e69: 0xe0000ba1, 0x8e6a: 0xe0000d11, 0x8e6b: 0xe0000d18, - 0x8e6c: 0x40324220, 0x8e6d: 0x40324a20, 0x8e6e: 0x40309020, 0x8e6f: 0x40309820, - 0x8e70: 0x002d6894, 0x8e71: 0x002d8094, 0x8e72: 0x002dcc94, 0x8e73: 0x002f7a94, - 0x8e74: 0x002f9894, 0x8e75: 0x002fac94, 0x8e76: 0x002fd894, 0x8e77: 0x0030e294, - 0x8e78: 0x00310094, 0x8e79: 0x40064020, 0x8e7a: 0x40064420, 0x8e7b: 0x402d9620, - 0x8e7c: 0x4031de20, 0x8e7d: 0x402d9820, 0x8e7e: 0x4031e220, 0x8e7f: 0x4031f020, - // Block 0x23a, offset 0x8e80 - 0x8e80: 0xe0000d24, 0x8e81: 0xe0000d21, 0x8e82: 0xe0000d2a, 0x8e83: 0xe0000d27, - 0x8e84: 0xe0000d69, 0x8e85: 0xe0000d66, 0x8e86: 0xe0000d7b, 0x8e87: 0xe0000d78, - 0x8e88: 0xe0000d87, 0x8e89: 0xe0000d84, 0x8e8a: 0xe0000d81, 0x8e8b: 0xe0000d7e, - 0x8e8c: 0xe00029d8, 0x8e8d: 0xe00029d5, 0x8e8e: 0xe00029de, 0x8e8f: 0xe00029db, - 0x8e90: 0xe0000e3d, 0x8e91: 0xe0000e39, 0x8e92: 0xe0000e35, 0x8e93: 0xe0000e31, - 0x8e94: 0xe0000ea7, 0x8e95: 0xe0000ea4, 0x8e96: 0xe0000ead, 0x8e97: 0xe0000eaa, - 0x8e98: 0xe0000ed6, 0x8e99: 0xe0000ed3, 0x8e9a: 0xe0000ef4, 0x8e9b: 0xe0000ef1, - 0x8e9c: 0xe0000efb, 0x8e9d: 0xe0000ef7, 0x8e9e: 0xe0000f02, 0x8e9f: 0xe0000eff, - 0x8ea0: 0xe0000f41, 0x8ea1: 0xe0000f3e, 0x8ea2: 0xe0000f53, 0x8ea3: 0xe0000f50, - 0x8ea4: 0xe0000f26, 0x8ea5: 0xe0000f22, 0x8ea6: 0xe00029b4, 0x8ea7: 0xe00029b1, - 0x8ea8: 0xe0000f5a, 0x8ea9: 0xe0000f56, 0x8eaa: 0xe0000f93, 0x8eab: 0xe0000f90, - 0x8eac: 0xe0000f9f, 0x8ead: 0xe0000f9c, 0x8eae: 0xe0000fb1, 0x8eaf: 0xe0000fae, - 0x8eb0: 0xe0000fab, 0x8eb1: 0xe0000fa8, 0x8eb2: 0xe0001093, 0x8eb3: 0xe0001090, - 0x8eb4: 0xe000109f, 0x8eb5: 0xe000109c, 0x8eb6: 0xe0001099, 0x8eb7: 0xe0001096, - 0x8eb8: 0xe0001032, 0x8eb9: 0xe000102e, 0x8eba: 0xe0002685, 0x8ebb: 0xe0002682, - 0x8ebc: 0xe00010a9, 0x8ebd: 0xe00010a6, 0x8ebe: 0xe00010af, 0x8ebf: 0xe00010ac, - // Block 0x23b, offset 0x8ec0 - 0x8ec0: 0xe00010d2, 0x8ec1: 0xe00010cf, 0x8ec2: 0xe00010cc, 0x8ec3: 0xe00010c9, - 0x8ec4: 0xe00010e1, 0x8ec5: 0xe00010de, 0x8ec6: 0xe00010e7, 0x8ec7: 0xe00010e4, - 0x8ec8: 0xe00010ed, 0x8ec9: 0xe00010ea, 0x8eca: 0xe00010fc, 0x8ecb: 0xe00010f9, - 0x8ecc: 0xe00010f6, 0x8ecd: 0xe00010f3, 0x8ece: 0xe0001123, 0x8ecf: 0xe0001120, - 0x8ed0: 0xe0001141, 0x8ed1: 0xe000113e, 0x8ed2: 0xe0001153, 0x8ed3: 0xe0001150, - 0x8ed4: 0xe0001159, 0x8ed5: 0xe0001156, 0x8ed6: 0xe0000c15, 0x8ed7: 0xe0000f8d, - 0x8ed8: 0xe00010db, 0x8ed9: 0xe0001111, 0x8eda: 0xf0000404, 0x8edb: 0xe0000f70, - 0x8edc: 0x40300420, 0x8edd: 0x40300620, 0x8ede: 0xe0000f7f, 0x8edf: 0x402c9620, - 0x8ee0: 0xe000099b, 0x8ee1: 0xe0000998, 0x8ee2: 0xe0000989, 0x8ee3: 0xe0000986, - 0x8ee4: 0xe0002791, 0x8ee5: 0xe000278e, 0x8ee6: 0xe0000930, 0x8ee7: 0xe000092c, - 0x8ee8: 0xe0000940, 0x8ee9: 0xe000093c, 0x8eea: 0xe00029d2, 0x8eeb: 0xe00029cf, - 0x8eec: 0xe00009aa, 0x8eed: 0xe00009a6, 0x8eee: 0xe000278b, 0x8eef: 0xe0002788, - 0x8ef0: 0xe000090a, 0x8ef1: 0xe0000906, 0x8ef2: 0xe000091a, 0x8ef3: 0xe0000916, - 0x8ef4: 0xe00029cc, 0x8ef5: 0xe00029c9, 0x8ef6: 0xe00009a2, 0x8ef7: 0xe000099e, - 0x8ef8: 0xe0000b6e, 0x8ef9: 0xe0000b6b, 0x8efa: 0xe0000b5c, 0x8efb: 0xe0000b59, - 0x8efc: 0xe0000b26, 0x8efd: 0xe0000b23, 0x8efe: 0xe0000afb, 0x8eff: 0xe0000af7, - // Block 0x23c, offset 0x8f00 - 0x8f00: 0xe0000b03, 0x8f01: 0xe0000aff, 0x8f02: 0xe0000b13, 0x8f03: 0xe0000b0f, - 0x8f04: 0xe0000b0b, 0x8f05: 0xe0000b07, 0x8f06: 0xe0000b75, 0x8f07: 0xe0000b71, - 0x8f08: 0xe0000c66, 0x8f09: 0xe0000c63, 0x8f0a: 0xe0000c78, 0x8f0b: 0xe0000c75, - 0x8f0c: 0xe0000e84, 0x8f0d: 0xe0000e81, 0x8f0e: 0xe0000e44, 0x8f0f: 0xe0000e41, - 0x8f10: 0xe0002764, 0x8f11: 0xe0002761, 0x8f12: 0xe00029f0, 0x8f13: 0xe00029ed, - 0x8f14: 0xe00029fc, 0x8f15: 0xe00029f9, 0x8f16: 0xe00029f6, 0x8f17: 0xe00029f3, - 0x8f18: 0xe0002a02, 0x8f19: 0xe00029ff, 0x8f1a: 0xe0000e5d, 0x8f1b: 0xe0000e59, - 0x8f1c: 0xe0000e65, 0x8f1d: 0xe0000e61, 0x8f1e: 0xe0000e75, 0x8f1f: 0xe0000e71, - 0x8f20: 0xe00029ea, 0x8f21: 0xe00029e7, 0x8f22: 0xe0000e7d, 0x8f23: 0xe0000e79, - 0x8f24: 0xe000108d, 0x8f25: 0xe000108a, 0x8f26: 0xe000104d, 0x8f27: 0xe000104a, - 0x8f28: 0xe0001066, 0x8f29: 0xe0001062, 0x8f2a: 0xe000106e, 0x8f2b: 0xe000106a, - 0x8f2c: 0xe000107e, 0x8f2d: 0xe000107a, 0x8f2e: 0xe0001076, 0x8f2f: 0xe0001072, - 0x8f30: 0xe0001086, 0x8f31: 0xe0001082, 0x8f32: 0xe0001108, 0x8f33: 0xe0001105, - 0x8f34: 0xe0001135, 0x8f35: 0xe0001132, 0x8f36: 0xe000112f, 0x8f37: 0xe000112c, - 0x8f38: 0xe000111d, 0x8f39: 0xe000111a, 0x8f3a: 0xe0000d0a, 0x8f3b: 0xe0000d07, - 0x8f3c: 0x0030d888, 0x8f3d: 0x4030d820, 0x8f3e: 0x00312088, 0x8f3f: 0x40312020, - // Block 0x23d, offset 0x8f40 - 0x8f40: 0xa0000000, 0x8f41: 0xa0000000, 0x8f42: 0xa0000000, 0x8f43: 0xa0000000, - 0x8f44: 0xa0000000, 0x8f45: 0xa0000000, 0x8f46: 0xa0000000, 0x8f47: 0xa0000000, - 0x8f48: 0xa0000000, 0x8f49: 0x40020020, 0x8f4a: 0x40020220, 0x8f4b: 0x40020420, - 0x8f4c: 0x40020620, 0x8f4d: 0x40020820, 0x8f4e: 0xa0000000, 0x8f4f: 0xa0000000, - 0x8f50: 0xa0000000, 0x8f51: 0xa0000000, 0x8f52: 0xa0000000, 0x8f53: 0xa0000000, - 0x8f54: 0xa0000000, 0x8f55: 0xa0000000, 0x8f56: 0xa0000000, 0x8f57: 0xa0000000, - 0x8f58: 0xa0000000, 0x8f59: 0xa0000000, 0x8f5a: 0xa0000000, 0x8f5b: 0xa0000000, - 0x8f5c: 0xa0000000, 0x8f5d: 0xa0000000, 0x8f5e: 0xa0000000, 0x8f5f: 0xa0000000, - 0x8f60: 0x40021220, 0x8f61: 0x4002ba20, 0x8f62: 0x4003e020, 0x8f63: 0x4004ea20, - 0x8f64: 0x4027de20, 0x8f65: 0x4004ec20, 0x8f66: 0x4004e620, 0x8f67: 0x4003d220, - 0x8f68: 0x4003f420, 0x8f69: 0x4003f620, 0x8f6a: 0x4004d820, 0x8f6b: 0x40093820, - 0x8f6c: 0x40024020, 0x8f6d: 0x40021a20, 0x8f6e: 0x4002e420, 0x8f6f: 0x4004e220, - 0x8f70: 0x4029cc20, 0x8f71: 0x4029ce20, 0x8f72: 0x4029d020, 0x8f73: 0x4029d220, - 0x8f74: 0x4029d420, 0x8f75: 0x4029d620, 0x8f76: 0x4029d820, 0x8f77: 0x4029da20, - 0x8f78: 0x4029dc20, 0x8f79: 0x4029de20, 0x8f7a: 0x40026c20, 0x8f7b: 0x40026220, - 0x8f7c: 0x40094020, 0x8f7d: 0xc32f0851, 0x8f7e: 0x40094420, 0x8f7f: 0x4002c420, - // Block 0x23e, offset 0x8f80 - 0x8f80: 0x4004d620, 0x8f81: 0xc4400cb1, 0x8f82: 0x002c0a88, 0x8f83: 0xc33b08d1, - 0x8f84: 0xc35b08d1, 0x8f85: 0xc36008f1, 0x8f86: 0x002d0888, 0x8f87: 0x002d2288, - 0x8f88: 0x002d6888, 0x8f89: 0xc36508b1, 0x8f8a: 0x002dcc88, 0x8f8b: 0x002dfe88, - 0x8f8c: 0xc4480eb3, 0x8f8d: 0x002e8288, 0x8f8e: 0xc36908d1, 0x8f8f: 0xc4500f21, - 0x8f90: 0x002f2c88, 0x8f91: 0x002f5688, 0x8f92: 0xc45608f1, 0x8f93: 0xc34908d1, - 0x8f94: 0xc37108d1, 0x8f95: 0xc3760921, 0x8f96: 0x0030be88, 0x8f97: 0x0030e288, - 0x8f98: 0x0030f688, 0x8f99: 0xc37b08b1, 0x8f9a: 0xc37f08d1, 0x8f9b: 0x4003f820, - 0x8f9c: 0x4004e420, 0x8f9d: 0x4003fa20, 0x8f9e: 0x40062420, 0x8f9f: 0x40021620, - 0x8fa0: 0x40061e20, 0x8fa1: 0xc43d0cb1, 0x8fa2: 0x402c0a20, 0x8fa3: 0xc33908d1, - 0x8fa4: 0xc35908d1, 0x8fa5: 0xc35d08f1, 0x8fa6: 0x402d0820, 0x8fa7: 0x402d2220, - 0x8fa8: 0x402d6820, 0x8fa9: 0xc36308b1, 0x8faa: 0x402dcc20, 0x8fab: 0x402dfe20, - 0x8fac: 0xc4430eb3, 0x8fad: 0x402e8220, 0x8fae: 0xc36708d1, 0x8faf: 0xc44d0f21, - 0x8fb0: 0x402f2c20, 0x8fb1: 0x402f5620, 0x8fb2: 0xc45308f1, 0x8fb3: 0xc34708d1, - 0x8fb4: 0xc36f08d1, 0x8fb5: 0xc3730921, 0x8fb6: 0x4030be20, 0x8fb7: 0x4030e220, - 0x8fb8: 0x4030f620, 0x8fb9: 0xc37908b1, 0x8fba: 0xc37d08d1, 0x8fbb: 0x4003fc20, - 0x8fbc: 0x40094820, 0x8fbd: 0x4003fe20, 0x8fbe: 0x40094c20, 0x8fbf: 0xa0000000, - // Block 0x23f, offset 0x8fc0 - 0x8fc0: 0xe00008f5, 0x8fc1: 0x002be083, 0x8fc2: 0xe0000921, 0x8fc3: 0xe0000969, - 0x8fc4: 0x002be283, 0x8fc5: 0xe000094d, 0x8fc6: 0xe00009dd, 0x8fc7: 0xe0000a53, - 0x8fc8: 0xe0000ae8, 0x8fc9: 0x002c9a83, 0x8fca: 0xe0000af4, 0x8fcb: 0xe0000b20, - 0x8fcc: 0xe0000c2b, 0x8fcd: 0x002d9c83, 0x8fce: 0xe0000c37, 0x8fcf: 0xe0000c43, - 0x8fd0: 0xe0000ab3, 0x8fd1: 0xe0000d63, 0x8fd2: 0xe0000d9a, 0x8fd3: 0x002ee483, - 0x8fd4: 0x002ee683, 0x8fd5: 0xe0000de6, 0x8fd6: 0xe0000dd2, 0x8fd7: 0x40093e20, - 0x8fd8: 0xe0000e12, 0x8fd9: 0xe0000fe1, 0x8fda: 0x00306e83, 0x8fdb: 0xe0000fed, - 0x8fdc: 0xe0000fff, 0x8fdd: 0x00310283, 0x8fde: 0x00318888, 0x8fdf: 0xe0000f7b, - 0x8fe0: 0xe00008f2, 0x8fe1: 0x402be020, 0x8fe2: 0xe000091e, 0x8fe3: 0xe0000966, - 0x8fe4: 0x402be220, 0x8fe5: 0xe000094a, 0x8fe6: 0xe00009d5, 0x8fe7: 0xe0000a4d, - 0x8fe8: 0xe0000ae5, 0x8fe9: 0x402c9a20, 0x8fea: 0xe0000af1, 0x8feb: 0xe0000b1d, - 0x8fec: 0xe0000c28, 0x8fed: 0x402d9c20, 0x8fee: 0xe0000c34, 0x8fef: 0xe0000c40, - 0x8ff0: 0xe0000aad, 0x8ff1: 0xe0000d60, 0x8ff2: 0xe0000d97, 0x8ff3: 0x402ee420, - 0x8ff4: 0x402ee620, 0x8ff5: 0xe0000de3, 0x8ff6: 0xe0000dcf, 0x8ff7: 0x40093c20, - 0x8ff8: 0xe0000e0f, 0x8ff9: 0xe0000fde, 0x8ffa: 0x40306e20, 0x8ffb: 0xe0000fea, - 0x8ffc: 0xe0000ffc, 0x8ffd: 0x40310220, 0x8ffe: 0x40318820, 0x8fff: 0xe0001114, - // Block 0x240, offset 0x9000 - 0x9000: 0xe0000983, 0x9001: 0xe0000980, 0x9002: 0xe00008fb, 0x9003: 0xe00008f8, - 0x9004: 0xe000097d, 0x9005: 0xe000097a, 0x9006: 0xe0000a38, 0x9007: 0xe0000a35, - 0x9008: 0xe0000a3e, 0x9009: 0xe0000a3b, 0x900a: 0xe0000a4a, 0x900b: 0xe0000a47, - 0x900c: 0x002c3c83, 0x900d: 0x402c3c20, 0x900e: 0x002c6483, 0x900f: 0x402c6420, - 0x9010: 0xe0000aaa, 0x9011: 0xe0000aa7, 0x9012: 0xe0000b46, 0x9013: 0xe0000b43, - 0x9014: 0xe0000aee, 0x9015: 0xe0000aeb, 0x9016: 0xe0000b2c, 0x9017: 0xe0000b29, - 0x9018: 0xe0000b40, 0x9019: 0xe0000b3d, 0x901a: 0x002c9c83, 0x901b: 0x402c9c20, - 0x901c: 0xe0000bb8, 0x901d: 0xe0000bb5, 0x901e: 0xe0000bb2, 0x901f: 0xe0000baf, - 0x9020: 0xe0000bc4, 0x9021: 0xe0000bc1, 0x9022: 0xe0000bca, 0x9023: 0xe0000bc7, - 0x9024: 0xe0000bee, 0x9025: 0xe0000beb, 0x9026: 0xe0000c1b, 0x9027: 0xe0000c18, - 0x9028: 0xe0000c51, 0x9029: 0xe0000c4e, 0x902a: 0xe0000c60, 0x902b: 0xe0000c5d, - 0x902c: 0xe0000c31, 0x902d: 0xe0000c2e, 0x902e: 0xe0000c5a, 0x902f: 0xe0000c57, - 0x9030: 0xe0000c54, 0x9031: 0x402da220, 0x9032: 0xf0000a0a, 0x9033: 0xf0000404, - 0x9034: 0xe0000c8a, 0x9035: 0xe0000c87, 0x9036: 0xe0000c9f, 0x9037: 0xe0000c9c, - 0x9038: 0x402f7220, 0x9039: 0x002e2483, 0x903a: 0x402e2420, 0x903b: 0xe0000cd8, - 0x903c: 0xe0000cd5, 0x903d: 0x002e2683, 0x903e: 0x402e2620, 0x903f: 0xe0000d04, - // Block 0x241, offset 0x9040 - 0x9040: 0xe0000cfe, 0x9041: 0xe0000cf8, 0x9042: 0xe0000cf5, 0x9043: 0xe0000d51, - 0x9044: 0xe0000d4e, 0x9045: 0xe0000d6f, 0x9046: 0xe0000d6c, 0x9047: 0x002ea083, - 0x9048: 0x402ea020, 0x9049: 0xf0000404, 0x904a: 0x002eda88, 0x904b: 0x402eda20, - 0x904c: 0xe0000e2e, 0x904d: 0xe0000e2b, 0x904e: 0xe0000da0, 0x904f: 0xe0000d9d, - 0x9050: 0xe0000de0, 0x9051: 0xe0000ddd, 0x9052: 0xe0000e93, 0x9053: 0xe0000e8f, - 0x9054: 0x002f7c83, 0x9055: 0x402f7c20, 0x9056: 0xe0000edc, 0x9057: 0xe0000ed9, - 0x9058: 0x002f7e83, 0x9059: 0x402f7e20, 0x905a: 0xe0000f1f, 0x905b: 0xe0000f1c, - 0x905c: 0xe0000f2d, 0x905d: 0xe0000f2a, 0x905e: 0xe0000f47, 0x905f: 0xe0000f44, - 0x9060: 0x002fe883, 0x9061: 0x402fe820, 0x9062: 0xe0000f99, 0x9063: 0xe0000f96, - 0x9064: 0x00302e83, 0x9065: 0x40302e20, 0x9066: 0x00303688, 0x9067: 0x40303620, - 0x9068: 0xe000102b, 0x9069: 0xe0001028, 0x906a: 0xe000103f, 0x906b: 0xe000103c, - 0x906c: 0xe0000fe7, 0x906d: 0xe0000fe4, 0x906e: 0x00307083, 0x906f: 0x40307020, - 0x9070: 0xe0001025, 0x9071: 0xe0001022, 0x9072: 0xe0001039, 0x9073: 0xe0001036, - 0x9074: 0xe00010d8, 0x9075: 0xe00010d5, 0x9076: 0xe000110e, 0x9077: 0xe000110b, - 0x9078: 0xe0001117, 0x9079: 0xe000113b, 0x907a: 0xe0001138, 0x907b: 0xe000114d, - 0x907c: 0xe000114a, 0x907d: 0x00312c83, 0x907e: 0x40312c20, 0x907f: 0xe0000f64, - // Block 0x242, offset 0x9080 - 0x9080: 0x40321220, 0x9081: 0x40321a20, 0x9082: 0x40322220, 0x9083: 0x40322a20, - 0x9084: 0xe0000ad5, 0x9085: 0xe0000ad1, 0x9086: 0xe0000acd, 0x9087: 0xf0000a0a, - 0x9088: 0xf000040a, 0x9089: 0xf0000404, 0x908a: 0xf0000a0a, 0x908b: 0xf000040a, - 0x908c: 0xf0000404, 0x908d: 0xe0000947, 0x908e: 0xe0000944, 0x908f: 0xe0000c3d, - 0x9090: 0xe0000c3a, 0x9091: 0xe0000dcc, 0x9092: 0xe0000dc9, 0x9093: 0xe0000ff3, - 0x9094: 0xe0000ff0, 0x9095: 0xe000101e, 0x9096: 0xe000101a, 0x9097: 0xe0002658, - 0x9098: 0xe0002655, 0x9099: 0xe0001016, 0x909a: 0xe0001012, 0x909b: 0xe000100e, - 0x909c: 0xe000100a, 0x909d: 0x402cae20, 0x909e: 0xe0002a0e, 0x909f: 0xe0002a0b, - 0x90a0: 0xe0000976, 0x90a1: 0xe0000972, 0x90a2: 0xe00009f4, 0x90a3: 0xe00009ef, - 0x90a4: 0x002d3a88, 0x90a5: 0x402d3a20, 0x90a6: 0xe0000bbe, 0x90a7: 0xe0000bbb, - 0x90a8: 0xe0000c99, 0x90a9: 0xe0000c96, 0x90aa: 0xe0000e20, 0x90ab: 0xe0000e1d, - 0x90ac: 0xe0000e27, 0x90ad: 0xe0000e23, 0x90ae: 0xe0001162, 0x90af: 0xe000115f, - 0x90b0: 0xe0000c8d, 0x90b1: 0xf0000a0a, 0x90b2: 0xf000040a, 0x90b3: 0xf0000404, - 0x90b4: 0xe0000bac, 0x90b5: 0xe0000ba9, 0x90b6: 0x002d7888, 0x90b7: 0x00319488, - 0x90b8: 0xe0000d57, 0x90b9: 0xe0000d54, 0x90ba: 0xe000262e, 0x90bb: 0xe000262b, - 0x90bc: 0xe00009ea, 0x90bd: 0xe00009e5, 0x90be: 0xe0000e19, 0x90bf: 0xe0000e15, - // Block 0x243, offset 0x90c0 - 0x90c0: 0xe0000b03, 0x90c1: 0xe0000aff, 0x90c2: 0xe0000b13, 0x90c3: 0xe0000b0f, - 0x90c4: 0xe0000b0b, 0x90c5: 0xe0000b07, 0x90c6: 0xe0000b75, 0x90c7: 0xe0000b71, - 0x90c8: 0xe0000c66, 0x90c9: 0xe0000c63, 0x90ca: 0xe0000c78, 0x90cb: 0xe0000c75, - 0x90cc: 0xe0000e84, 0x90cd: 0xe0000e81, 0x90ce: 0xe0000e44, 0x90cf: 0xe0000e41, - 0x90d0: 0xe0002a14, 0x90d1: 0xe0002a11, 0x90d2: 0xe0002a1a, 0x90d3: 0xe0002a17, - 0x90d4: 0xe0002a26, 0x90d5: 0xe0002a23, 0x90d6: 0xe0002a20, 0x90d7: 0xe0002a1d, - 0x90d8: 0xe0002a2c, 0x90d9: 0xe0002a29, 0x90da: 0xe000264c, 0x90db: 0xe0002649, - 0x90dc: 0xe0000e65, 0x90dd: 0xe0000e61, 0x90de: 0xe0000e75, 0x90df: 0xe0000e71, - 0x90e0: 0xe0000e6d, 0x90e1: 0xe0000e69, 0x90e2: 0xe0000e7d, 0x90e3: 0xe0000e79, - 0x90e4: 0xe000108d, 0x90e5: 0xe000108a, 0x90e6: 0xe000104d, 0x90e7: 0xe000104a, - 0x90e8: 0xe0002664, 0x90e9: 0xe0002661, 0x90ea: 0xe000106e, 0x90eb: 0xe000106a, - 0x90ec: 0xe000107e, 0x90ed: 0xe000107a, 0x90ee: 0xe0001076, 0x90ef: 0xe0001072, - 0x90f0: 0xe0001086, 0x90f1: 0xe0001082, 0x90f2: 0xe0001108, 0x90f3: 0xe0001105, - 0x90f4: 0xe0001135, 0x90f5: 0xe0001132, 0x90f6: 0xe000112f, 0x90f7: 0xe000112c, - 0x90f8: 0xe000111d, 0x90f9: 0xe000111a, 0x90fa: 0xe0000d0a, 0x90fb: 0xe0000d07, - 0x90fc: 0x0030d888, 0x90fd: 0x4030d820, 0x90fe: 0x00312088, 0x90ff: 0x40312020, - // Block 0x244, offset 0x9100 - 0x9100: 0xa0000000, 0x9101: 0xa0000000, 0x9102: 0xa0000000, 0x9103: 0xa0000000, - 0x9104: 0xa0000000, 0x9105: 0xa0000000, 0x9106: 0xa0000000, 0x9107: 0xa0000000, - 0x9108: 0xa0000000, 0x9109: 0x40020020, 0x910a: 0x40020220, 0x910b: 0x40020420, - 0x910c: 0x40020620, 0x910d: 0x40020820, 0x910e: 0xa0000000, 0x910f: 0xa0000000, - 0x9110: 0xa0000000, 0x9111: 0xa0000000, 0x9112: 0xa0000000, 0x9113: 0xa0000000, - 0x9114: 0xa0000000, 0x9115: 0xa0000000, 0x9116: 0xa0000000, 0x9117: 0xa0000000, - 0x9118: 0xa0000000, 0x9119: 0xa0000000, 0x911a: 0xa0000000, 0x911b: 0xa0000000, - 0x911c: 0xa0000000, 0x911d: 0xa0000000, 0x911e: 0xa0000000, 0x911f: 0xa0000000, - 0x9120: 0x40021220, 0x9121: 0x4002ba20, 0x9122: 0x4003e020, 0x9123: 0x4004ea20, - 0x9124: 0x4027de20, 0x9125: 0x4004ec20, 0x9126: 0x4004e620, 0x9127: 0x4003d220, - 0x9128: 0x4003f420, 0x9129: 0x4003f620, 0x912a: 0x4004d820, 0x912b: 0x40093820, - 0x912c: 0x40024020, 0x912d: 0x40021a20, 0x912e: 0x4002e420, 0x912f: 0x4004e220, - 0x9130: 0x4029cc20, 0x9131: 0x4029ce20, 0x9132: 0x4029d020, 0x9133: 0x4029d220, - 0x9134: 0x4029d420, 0x9135: 0x4029d620, 0x9136: 0x4029d820, 0x9137: 0x4029da20, - 0x9138: 0x4029dc20, 0x9139: 0x4029de20, 0x913a: 0x40026c20, 0x913b: 0x40026220, - 0x913c: 0x40094020, 0x913d: 0xc32f0851, 0x913e: 0x40094420, 0x913f: 0x4002c420, - // Block 0x245, offset 0x9140 - 0x9140: 0x4004d620, 0x9141: 0xc3a90a51, 0x9142: 0x002c0a88, 0x9143: 0x002c3a88, - 0x9144: 0x002c6288, 0x9145: 0xc45b0a11, 0x9146: 0x002d0888, 0x9147: 0x002d2288, - 0x9148: 0x002d6888, 0x9149: 0x002d9a88, 0x914a: 0x002dcc88, 0x914b: 0x002dfe88, - 0x914c: 0xc0030002, 0x914d: 0x002e8288, 0x914e: 0x002e9e88, 0x914f: 0xc4610f41, - 0x9150: 0x002f2c88, 0x9151: 0x002f5688, 0x9152: 0x002f7a88, 0x9153: 0x002fe688, - 0x9154: 0x00302c88, 0x9155: 0xc3840951, 0x9156: 0x0030be83, 0x9157: 0x0030bea3, - 0x9158: 0x0030f688, 0x9159: 0x00310088, 0x915a: 0x00312a88, 0x915b: 0x4003f820, - 0x915c: 0x4004e420, 0x915d: 0x4003fa20, 0x915e: 0x40062420, 0x915f: 0x40021620, - 0x9160: 0x40061e20, 0x9161: 0xc3a60a51, 0x9162: 0x402c0a20, 0x9163: 0x402c3a20, - 0x9164: 0x402c6220, 0x9165: 0xc4590a11, 0x9166: 0x402d0820, 0x9167: 0x402d2220, - 0x9168: 0x402d6820, 0x9169: 0x402d9a20, 0x916a: 0x402dcc20, 0x916b: 0x402dfe20, - 0x916c: 0xc0000002, 0x916d: 0x402e8220, 0x916e: 0x402e9e20, 0x916f: 0xc45d0f41, - 0x9170: 0x402f2c20, 0x9171: 0x402f5620, 0x9172: 0x402f7a20, 0x9173: 0x402fe620, - 0x9174: 0x40302c20, 0x9175: 0xc3810951, 0x9176: 0x4030be20, 0x9177: 0x4030be21, - 0x9178: 0x4030f620, 0x9179: 0x40310020, 0x917a: 0x40312a20, 0x917b: 0x4003fc20, - 0x917c: 0x40094820, 0x917d: 0x4003fe20, 0x917e: 0x40094c20, 0x917f: 0xa0000000, - // Block 0x246, offset 0x9180 - 0x9180: 0xe00008f5, 0x9181: 0xe00008ef, 0x9182: 0xe0000921, 0x9183: 0xe0000969, - 0x9184: 0x00320e83, 0x9185: 0x00320c83, 0x9186: 0x00320ea3, 0x9187: 0xe0000a53, - 0x9188: 0xe0000ae8, 0x9189: 0xe0000ae2, 0x918a: 0xe0000af4, 0x918b: 0xe0000b20, - 0x918c: 0xe0000c2b, 0x918d: 0xe0000c25, 0x918e: 0xe0000c37, 0x918f: 0xe0000c43, - 0x9190: 0x002c62c3, 0x9191: 0xe0000d63, 0x9192: 0xe0000d9a, 0x9193: 0xe0000d94, - 0x9194: 0x00321103, 0x9195: 0xe0000de6, 0x9196: 0x00321083, 0x9197: 0x40093e20, - 0x9198: 0x003210a3, 0x9199: 0xe0000fe1, 0x919a: 0xe0000fdb, 0x919b: 0xe0000fed, - 0x919c: 0x003100a3, 0x919d: 0xe0001102, 0x919e: 0xe000266d, 0x919f: 0xe0000f7b, - 0x91a0: 0xe00008f2, 0x91a1: 0xe00008ec, 0x91a2: 0xe000091e, 0x91a3: 0xe0000966, - 0x91a4: 0x40320e20, 0x91a5: 0x40320c20, 0x91a6: 0x40320e21, 0x91a7: 0xe0000a4d, - 0x91a8: 0xe0000ae5, 0x91a9: 0xe0000adf, 0x91aa: 0xe0000af1, 0x91ab: 0xe0000b1d, - 0x91ac: 0xe0000c28, 0x91ad: 0xe0000c22, 0x91ae: 0xe0000c34, 0x91af: 0xe0000c40, - 0x91b0: 0x402c6222, 0x91b1: 0xe0000d60, 0x91b2: 0xe0000d97, 0x91b3: 0xe0000d91, - 0x91b4: 0x40321024, 0x91b5: 0xe0000de3, 0x91b6: 0x40321020, 0x91b7: 0x40093c20, - 0x91b8: 0x40321021, 0x91b9: 0xe0000fde, 0x91ba: 0xe0000fd8, 0x91bb: 0xe0000fea, - 0x91bc: 0x40310021, 0x91bd: 0xe00010ff, 0x91be: 0xe000266a, 0x91bf: 0xe0001114, - // Block 0x247, offset 0x91c0 - 0x91c0: 0xe0000983, 0x91c1: 0xe0000980, 0x91c2: 0xe00008fb, 0x91c3: 0xe00008f8, - 0x91c4: 0xe000097d, 0x91c5: 0xe000097a, 0x91c6: 0xe0000a38, 0x91c7: 0xe0000a35, - 0x91c8: 0xe0000a3e, 0x91c9: 0xe0000a3b, 0x91ca: 0xe0000a4a, 0x91cb: 0xe0000a47, - 0x91cc: 0xe0000a44, 0x91cd: 0xe0000a41, 0x91ce: 0xe0000a86, 0x91cf: 0xe0000a83, - 0x91d0: 0x002c62a3, 0x91d1: 0x402c6221, 0x91d2: 0xe0000b46, 0x91d3: 0xe0000b43, - 0x91d4: 0xe0000aee, 0x91d5: 0xe0000aeb, 0x91d6: 0xe0000b2c, 0x91d7: 0xe0000b29, - 0x91d8: 0x00320ec3, 0x91d9: 0x40320e22, 0x91da: 0xe0000b1a, 0x91db: 0xe0000b17, - 0x91dc: 0xe0000bb8, 0x91dd: 0xe0000bb5, 0x91de: 0xe0000bb2, 0x91df: 0xe0000baf, - 0x91e0: 0xe0000bc4, 0x91e1: 0xe0000bc1, 0x91e2: 0xe0000bca, 0x91e3: 0xe0000bc7, - 0x91e4: 0xe0000bee, 0x91e5: 0xe0000beb, 0x91e6: 0xe0000c1b, 0x91e7: 0xe0000c18, - 0x91e8: 0xe0000c51, 0x91e9: 0xe0000c4e, 0x91ea: 0xe0000c60, 0x91eb: 0xe0000c5d, - 0x91ec: 0xe0000c31, 0x91ed: 0xe0000c2e, 0x91ee: 0xe0000c5a, 0x91ef: 0xe0000c57, - 0x91f0: 0xe0000c54, 0x91f1: 0x402da220, 0x91f2: 0xf0000a0a, 0x91f3: 0xf0000404, - 0x91f4: 0xe0000c8a, 0x91f5: 0xe0000c87, 0x91f6: 0xe0000c9f, 0x91f7: 0xe0000c9c, - 0x91f8: 0x402f7220, 0x91f9: 0xe0000ccc, 0x91fa: 0xe0000cc9, 0x91fb: 0xe0000cd8, - 0x91fc: 0xe0000cd5, 0x91fd: 0xe0000cd2, 0x91fe: 0xe0000ccf, 0x91ff: 0xe0000d04, - // Block 0x248, offset 0x9200 - 0x9200: 0xe0000cfe, 0x9201: 0xe0000cf8, 0x9202: 0xe0000cf5, 0x9203: 0xe0000d51, - 0x9204: 0xe0000d4e, 0x9205: 0xe0000d6f, 0x9206: 0xe0000d6c, 0x9207: 0xe0000d5d, - 0x9208: 0xe0000d5a, 0x9209: 0xf0000404, 0x920a: 0x002eda88, 0x920b: 0x402eda20, - 0x920c: 0xe0000e2e, 0x920d: 0xe0000e2b, 0x920e: 0xe0000da0, 0x920f: 0xe0000d9d, - 0x9210: 0x003210c3, 0x9211: 0x40321022, 0x9212: 0x003210e3, 0x9213: 0x40321023, - 0x9214: 0xe0000eca, 0x9215: 0xe0000ec7, 0x9216: 0xe0000edc, 0x9217: 0xe0000ed9, - 0x9218: 0xe0000ed0, 0x9219: 0xe0000ecd, 0x921a: 0xe0000f1f, 0x921b: 0xe0000f1c, - 0x921c: 0xe0000f2d, 0x921d: 0xe0000f2a, 0x921e: 0xe0000f47, 0x921f: 0xe0000f44, - 0x9220: 0xe0000f33, 0x9221: 0xe0000f30, 0x9222: 0xe0000f99, 0x9223: 0xe0000f96, - 0x9224: 0xe0000f8a, 0x9225: 0xe0000f87, 0x9226: 0x00303688, 0x9227: 0x40303620, - 0x9228: 0xe000102b, 0x9229: 0xe0001028, 0x922a: 0xe000103f, 0x922b: 0xe000103c, - 0x922c: 0xe0000fe7, 0x922d: 0xe0000fe4, 0x922e: 0xe0000ff9, 0x922f: 0xe0000ff6, - 0x9230: 0x003100c3, 0x9231: 0x40310022, 0x9232: 0xe0001039, 0x9233: 0xe0001036, - 0x9234: 0xe0002728, 0x9235: 0xe0002725, 0x9236: 0xe000110e, 0x9237: 0xe000110b, - 0x9238: 0xe0001117, 0x9239: 0xe000113b, 0x923a: 0xe0001138, 0x923b: 0xe000114d, - 0x923c: 0xe000114a, 0x923d: 0xe0001147, 0x923e: 0xe0001144, 0x923f: 0xe0000f64, - // Block 0x249, offset 0x9240 - 0x9240: 0xe000098f, 0x9241: 0xe000098c, 0x9242: 0xe0000995, 0x9243: 0xe0000992, - 0x9244: 0xe0000b62, 0x9245: 0xe0000b5f, 0x9246: 0xe0000b68, 0x9247: 0xe0000b65, - 0x9248: 0xe0000c6c, 0x9249: 0xe0000c69, 0x924a: 0xe0000c72, 0x924b: 0xe0000c6f, - 0x924c: 0xe0000e4a, 0x924d: 0xe0000e47, 0x924e: 0xe0000e50, 0x924f: 0xe0000e4d, - 0x9250: 0xe0000ee8, 0x9251: 0xe0000ee5, 0x9252: 0xe0000eee, 0x9253: 0xe0000eeb, - 0x9254: 0xe0001053, 0x9255: 0xe0001050, 0x9256: 0xe0001059, 0x9257: 0xe0001056, - 0x9258: 0xe0000f61, 0x9259: 0xe0000f5e, 0x925a: 0xe0000fa5, 0x925b: 0xe0000fa2, - 0x925c: 0x00312288, 0x925d: 0x40312220, 0x925e: 0xe0000bf4, 0x925f: 0xe0000bf1, - 0x9260: 0x002ebc88, 0x9261: 0x402c8c20, 0x9262: 0x002f2288, 0x9263: 0x402f2220, - 0x9264: 0x00314088, 0x9265: 0x40314020, 0x9266: 0xe000096f, 0x9267: 0xe000096c, - 0x9268: 0xe0000b32, 0x9269: 0xe0000b2f, 0x926a: 0xe0002758, 0x926b: 0xe0002755, - 0x926c: 0xe0000dfd, 0x926d: 0xe0000df9, 0x926e: 0xe0000e04, 0x926f: 0xe0000e01, - 0x9270: 0xe0000e0b, 0x9271: 0xe0000e07, 0x9272: 0xe0001129, 0x9273: 0xe0001126, - 0x9274: 0x402e5e20, 0x9275: 0x402ed020, 0x9276: 0x40305a20, 0x9277: 0x402dd420, - 0x9278: 0xe0000abf, 0x9279: 0xe0000ec4, 0x927a: 0x002be888, 0x927b: 0x002c4488, - 0x927c: 0x402c4420, 0x927d: 0x002e3888, 0x927e: 0x00303e88, 0x927f: 0x402ffc20, - // Block 0x24a, offset 0x9280 - 0x9280: 0xe0000d24, 0x9281: 0xe0000d21, 0x9282: 0xe0000d2a, 0x9283: 0xe0000d27, - 0x9284: 0xe0000d69, 0x9285: 0xe0000d66, 0x9286: 0xe0000d7b, 0x9287: 0xe0000d78, - 0x9288: 0xe0000d87, 0x9289: 0xe0000d84, 0x928a: 0xe0000d81, 0x928b: 0xe0000d7e, - 0x928c: 0xe0000ded, 0x928d: 0xe0000de9, 0x928e: 0xe0002a38, 0x928f: 0xe0002a35, - 0x9290: 0xe0000e3d, 0x9291: 0xe0000e39, 0x9292: 0xe0000e35, 0x9293: 0xe0000e31, - 0x9294: 0xe0000ea7, 0x9295: 0xe0000ea4, 0x9296: 0xe0000ead, 0x9297: 0xe0000eaa, - 0x9298: 0xe0000ed6, 0x9299: 0xe0000ed3, 0x929a: 0xe0000ef4, 0x929b: 0xe0000ef1, - 0x929c: 0xe0000efb, 0x929d: 0xe0000ef7, 0x929e: 0xe0000f02, 0x929f: 0xe0000eff, - 0x92a0: 0xe0000f41, 0x92a1: 0xe0000f3e, 0x92a2: 0xe0000f53, 0x92a3: 0xe0000f50, - 0x92a4: 0xe0000f26, 0x92a5: 0xe0000f22, 0x92a6: 0xe0000f3a, 0x92a7: 0xe0000f36, - 0x92a8: 0xe0000f5a, 0x92a9: 0xe0000f56, 0x92aa: 0xe0000f93, 0x92ab: 0xe0000f90, - 0x92ac: 0xe0000f9f, 0x92ad: 0xe0000f9c, 0x92ae: 0xe0000fb1, 0x92af: 0xe0000fae, - 0x92b0: 0xe0000fab, 0x92b1: 0xe0000fa8, 0x92b2: 0xe0001093, 0x92b3: 0xe0001090, - 0x92b4: 0xe000109f, 0x92b5: 0xe000109c, 0x92b6: 0xe0001099, 0x92b7: 0xe0001096, - 0x92b8: 0xe0001032, 0x92b9: 0xe000102e, 0x92ba: 0xe0002685, 0x92bb: 0xe0002682, - 0x92bc: 0xe0002a2f, 0x92bd: 0xe00010a6, 0x92be: 0xe0002a32, 0x92bf: 0xe00010ac, - // Block 0x24b, offset 0x92c0 - 0x92c0: 0xe0000b03, 0x92c1: 0xe0000aff, 0x92c2: 0xe0000b13, 0x92c3: 0xe0000b0f, - 0x92c4: 0xe0000b0b, 0x92c5: 0xe0000b07, 0x92c6: 0xe0000b75, 0x92c7: 0xe0000b71, - 0x92c8: 0xe0000c66, 0x92c9: 0xe0000c63, 0x92ca: 0xe0000c78, 0x92cb: 0xe0000c75, - 0x92cc: 0xe0000e84, 0x92cd: 0xe0000e81, 0x92ce: 0xe0000e44, 0x92cf: 0xe0000e41, - 0x92d0: 0xe0002a3e, 0x92d1: 0xe0002a3b, 0x92d2: 0xe0002a44, 0x92d3: 0xe0002a41, - 0x92d4: 0xe0002a50, 0x92d5: 0xe0002a4d, 0x92d6: 0xe0002a4a, 0x92d7: 0xe0002a47, - 0x92d8: 0xe0002a56, 0x92d9: 0xe0002a53, 0x92da: 0xe0000e5d, 0x92db: 0xe0000e59, - 0x92dc: 0xe0000e65, 0x92dd: 0xe0000e61, 0x92de: 0xe0000e75, 0x92df: 0xe0000e71, - 0x92e0: 0xe0000e6d, 0x92e1: 0xe0000e69, 0x92e2: 0xe0000e7d, 0x92e3: 0xe0000e79, - 0x92e4: 0xe000108d, 0x92e5: 0xe000108a, 0x92e6: 0xe000104d, 0x92e7: 0xe000104a, - 0x92e8: 0xe0001066, 0x92e9: 0xe0001062, 0x92ea: 0xe000106e, 0x92eb: 0xe000106a, - 0x92ec: 0xe000107e, 0x92ed: 0xe000107a, 0x92ee: 0xe0001076, 0x92ef: 0xe0001072, - 0x92f0: 0xe0001086, 0x92f1: 0xe0001082, 0x92f2: 0xe0001108, 0x92f3: 0xe0001105, - 0x92f4: 0xe0001135, 0x92f5: 0xe0001132, 0x92f6: 0xe000112f, 0x92f7: 0xe000112c, - 0x92f8: 0xe000111d, 0x92f9: 0xe000111a, 0x92fa: 0xe0000d0a, 0x92fb: 0xe0000d07, - 0x92fc: 0x0030d888, 0x92fd: 0x4030d820, 0x92fe: 0x00312088, 0x92ff: 0x40312020, - // Block 0x24c, offset 0x9300 - 0x9300: 0xa0000000, 0x9301: 0xa0000000, 0x9302: 0xa0000000, 0x9303: 0xa0000000, - 0x9304: 0xa0000000, 0x9305: 0xa0000000, 0x9306: 0xa0000000, 0x9307: 0xa0000000, - 0x9308: 0xa0000000, 0x9309: 0x40020020, 0x930a: 0x40020220, 0x930b: 0x40020420, - 0x930c: 0x40020620, 0x930d: 0x40020820, 0x930e: 0xa0000000, 0x930f: 0xa0000000, - 0x9310: 0xa0000000, 0x9311: 0xa0000000, 0x9312: 0xa0000000, 0x9313: 0xa0000000, - 0x9314: 0xa0000000, 0x9315: 0xa0000000, 0x9316: 0xa0000000, 0x9317: 0xa0000000, - 0x9318: 0xa0000000, 0x9319: 0xa0000000, 0x931a: 0xa0000000, 0x931b: 0xa0000000, - 0x931c: 0xa0000000, 0x931d: 0xa0000000, 0x931e: 0xa0000000, 0x931f: 0xa0000000, - 0x9320: 0x40021220, 0x9321: 0x4002ba20, 0x9322: 0x4003e020, 0x9323: 0x4004ea20, - 0x9324: 0x4027de20, 0x9325: 0x4004ec20, 0x9326: 0x4004e620, 0x9327: 0x4003d220, - 0x9328: 0x4003f420, 0x9329: 0x4003f620, 0x932a: 0x4004d820, 0x932b: 0x40093820, - 0x932c: 0x40024020, 0x932d: 0x40021a20, 0x932e: 0x4002e420, 0x932f: 0x4004e220, - 0x9330: 0x4029cc20, 0x9331: 0x4029ce20, 0x9332: 0x4029d020, 0x9333: 0x4029d220, - 0x9334: 0x4029d420, 0x9335: 0x4029d620, 0x9336: 0x4029d820, 0x9337: 0x4029da20, - 0x9338: 0x4029dc20, 0x9339: 0x4029de20, 0x933a: 0x40026c20, 0x933b: 0x40026220, - 0x933c: 0x40094020, 0x933d: 0xc32f0851, 0x933e: 0x40094420, 0x933f: 0x4002c420, - // Block 0x24d, offset 0x9340 - 0x9340: 0x4004d620, 0x9341: 0x002bde88, 0x9342: 0x002c0a88, 0x9343: 0xc33b0871, - 0x9344: 0x002c6288, 0x9345: 0x002c9888, 0x9346: 0x002d0888, 0x9347: 0xc33f00d1, - 0x9348: 0x002d6888, 0x9349: 0xc3410891, 0x934a: 0x002dcc88, 0x934b: 0x002dfe88, - 0x934c: 0xc0030002, 0x934d: 0x002e8288, 0x934e: 0x002e9e88, 0x934f: 0xc3450071, - 0x9350: 0x002f2c88, 0x9351: 0x002f5688, 0x9352: 0x002f7a88, 0x9353: 0xc3490871, - 0x9354: 0x00302c88, 0x9355: 0xc34d0071, 0x9356: 0x0030be88, 0x9357: 0x0030e288, - 0x9358: 0x0030f688, 0x9359: 0x00310088, 0x935a: 0x00312a88, 0x935b: 0x4003f820, - 0x935c: 0x4004e420, 0x935d: 0x4003fa20, 0x935e: 0x40062420, 0x935f: 0x40021620, - 0x9360: 0x40061e20, 0x9361: 0x402bde20, 0x9362: 0x402c0a20, 0x9363: 0xc3390871, - 0x9364: 0x402c6220, 0x9365: 0x402c9820, 0x9366: 0x402d0820, 0x9367: 0xc33d00d1, - 0x9368: 0x402d6820, 0x9369: 0x402d9a20, 0x936a: 0x402dcc20, 0x936b: 0x402dfe20, - 0x936c: 0xc0000002, 0x936d: 0x402e8220, 0x936e: 0x402e9e20, 0x936f: 0xc3430071, - 0x9370: 0x402f2c20, 0x9371: 0x402f5620, 0x9372: 0x402f7a20, 0x9373: 0xc3470871, - 0x9374: 0x40302c20, 0x9375: 0xc34b0071, 0x9376: 0x4030be20, 0x9377: 0x4030e220, - 0x9378: 0x4030f620, 0x9379: 0x40310020, 0x937a: 0x40312a20, 0x937b: 0x4003fc20, - 0x937c: 0x40094820, 0x937d: 0x4003fe20, 0x937e: 0x40094c20, 0x937f: 0xa0000000, - // Block 0x24e, offset 0x9380 - 0x9380: 0x00093685, 0x9381: 0x40083620, 0x9382: 0x40083820, 0x9383: 0x40083a20, - 0x9384: 0x40083c20, 0x9385: 0x002c628b, 0x9386: 0x002c6285, 0x9387: 0x002c9885, - 0x9388: 0x002d9a85, 0x9389: 0x002dcc85, 0x938a: 0x40083e20, 0x938b: 0x400a6e20, - 0x938c: 0x40084020, 0x938d: 0xe00009c4, 0x938e: 0x402d1e20, 0x938f: 0x40084220, - 0x9390: 0xe00002cb, 0x9391: 0xe00002d3, 0x9392: 0xe00002b2, 0x9393: 0xe00002bb, - 0x9394: 0xe00003cd, 0x9395: 0xe00002c3, 0x9396: 0xe00003d1, 0x9397: 0xe00004ab, - 0x9398: 0xe0000579, 0x9399: 0xe00002c7, 0x939a: 0xe0000640, 0x939b: 0xe00002cf, - 0x939c: 0xe00004af, 0x939d: 0xe0000644, 0x939e: 0xe0000798, 0x939f: 0xf0001e1e, - 0x93a0: 0x002d9a8a, 0x93a1: 0xe00025cd, 0x93a2: 0xe00025d0, 0x93a3: 0xe00025da, - 0x93a4: 0x0030be8a, 0x93a5: 0xe000260a, 0x93a6: 0xe000260d, 0x93a7: 0xe00010bb, - 0x93a8: 0xe00025e0, 0x93a9: 0x0030f68a, 0x93aa: 0xe0002614, 0x93ab: 0xe000261b, - 0x93ac: 0x002e228a, 0x93ad: 0x002c3a8a, 0x93ae: 0x002c628a, 0x93af: 0x002e828a, - 0x93b0: 0x002d9a84, 0x93b1: 0xf0001f04, 0x93b2: 0xf0000404, 0x93b3: 0xf0001f04, - 0x93b4: 0x0030be84, 0x93b5: 0xf0001f04, 0x93b6: 0xf0000404, 0x93b7: 0xe00010b6, - 0x93b8: 0xf0001f04, 0x93b9: 0x0030f684, 0x93ba: 0xf0001f04, 0x93bb: 0xf0000404, - 0x93bc: 0x002e2284, 0x93bd: 0x002c3a84, 0x93be: 0x002c6284, 0x93bf: 0x002e8284, - // Block 0x24f, offset 0x93c0 - 0x93c0: 0xf0001f04, 0x93c1: 0xf0001f04, 0x93c2: 0xf0001f04, 0x93c3: 0xf0001f04, - 0x93c4: 0xf0001f04, 0x93c5: 0xf0001f04, 0x93c6: 0xf0001f04, 0x93c7: 0xf0001f04, - 0x93c8: 0xf0001f04, 0x93c9: 0xf0001f04, 0x93ca: 0xf0001f04, - 0x93d0: 0xf0000a04, 0x93d1: 0xf0000a04, 0x93d2: 0xf0000a04, 0x93d3: 0xf0000a04, - 0x93d4: 0xf0000a04, 0x93d5: 0xf0000a04, 0x93d6: 0xf0000a04, 0x93d7: 0xf0000a04, - 0x93d8: 0xe0002576, 0x93d9: 0xf0000a04, 0x93da: 0xf0000a04, 0x93db: 0xf0000a04, - 0x93dc: 0xf0000a04, 0x93dd: 0xf0000a04, 0x93de: 0xf0000a04, 0x93df: 0xf0000a04, - 0x93e0: 0xf0000a04, 0x93e1: 0xf0000a04, 0x93e2: 0xf0000a04, 0x93e3: 0xf0000a04, - 0x93e4: 0xf0000a04, 0x93e5: 0xf0000a04, 0x93e6: 0xf0000a04, 0x93e7: 0xf0000a04, - 0x93e8: 0xf0000a04, 0x93e9: 0xf0000a04, 0x93ea: 0xf0000a04, 0x93eb: 0x002c3a8c, - 0x93ec: 0x002f7a8c, 0x93ed: 0xf0000c0c, 0x93ee: 0xf0000c0c, - 0x93f0: 0x002bde9d, 0x93f1: 0x002c0a9d, 0x93f2: 0x002c3a9d, 0x93f3: 0x002c629d, - 0x93f4: 0x002c989d, 0x93f5: 0x002d089d, 0x93f6: 0x002d229d, 0x93f7: 0x002d689d, - 0x93f8: 0x002d9a9d, 0x93f9: 0x002dcc9d, 0x93fa: 0x002dfe9d, 0x93fb: 0x002e229d, - 0x93fc: 0x002e829d, 0x93fd: 0x002e9e9d, 0x93fe: 0x002ee29d, 0x93ff: 0x002f2c9d, -} - -// mainLookup: 4864 entries, 9728 bytes -// Block 0 is the null block. -var mainLookup = [4864]uint16{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0x0e0: 0x1f, 0x0e1: 0x20, 0x0e2: 0x21, 0x0e3: 0x22, 0x0e4: 0x23, 0x0e5: 0x24, 0x0e6: 0x25, 0x0e7: 0x26, - 0x0e8: 0x27, 0x0e9: 0x28, 0x0ea: 0x29, 0x0eb: 0x2a, 0x0ec: 0x2b, 0x0ed: 0x2c, 0x0ee: 0x2d, 0x0ef: 0x2e, - 0x0f0: 0x2f, 0x0f1: 0x30, 0x0f2: 0x31, 0x0f3: 0x32, 0x0f4: 0x33, 0x0f5: 0x34, 0x0f6: 0x35, 0x0f7: 0x36, - 0x0f8: 0x37, 0x0f9: 0x38, 0x0fa: 0x39, 0x0fb: 0x3a, 0x0fc: 0x3b, 0x0fd: 0x3c, 0x0fe: 0x3d, 0x0ff: 0x3e, - // Block 0x4, offset 0x100 - 0x100: 0x3f, 0x101: 0x40, 0x102: 0x41, 0x103: 0x42, 0x104: 0x43, 0x105: 0x44, 0x106: 0x45, 0x107: 0x46, - 0x108: 0x47, 0x109: 0x48, 0x10a: 0x49, 0x10b: 0x4a, 0x10c: 0x4b, 0x10d: 0x4c, 0x10e: 0x4d, 0x10f: 0x4e, - 0x110: 0x4f, 0x111: 0x50, 0x112: 0x51, 0x113: 0x52, 0x114: 0x53, 0x115: 0x54, 0x116: 0x55, 0x117: 0x56, - 0x118: 0x57, 0x119: 0x58, 0x11a: 0x59, 0x11b: 0x5a, 0x11c: 0x5b, 0x11d: 0x5c, 0x11e: 0x5d, 0x11f: 0x5e, - 0x120: 0x5f, 0x121: 0x60, 0x122: 0x61, 0x123: 0x62, 0x124: 0x63, 0x125: 0x64, 0x126: 0x65, 0x127: 0x66, - 0x128: 0x67, 0x129: 0x68, 0x12a: 0x69, 0x12c: 0x6a, 0x12d: 0x6b, 0x12e: 0x6c, 0x12f: 0x6d, - 0x130: 0x6e, 0x131: 0x6f, 0x133: 0x70, 0x134: 0x71, 0x135: 0x72, 0x136: 0x73, 0x137: 0x74, - 0x138: 0x75, 0x139: 0x76, 0x13a: 0x77, 0x13b: 0x78, 0x13c: 0x79, 0x13d: 0x7a, 0x13e: 0x7b, 0x13f: 0x7c, - // Block 0x5, offset 0x140 - 0x140: 0x7d, 0x141: 0x7e, 0x142: 0x7f, 0x143: 0x80, 0x144: 0x81, 0x145: 0x82, 0x146: 0x83, 0x147: 0x84, - 0x148: 0x85, 0x149: 0x86, 0x14a: 0x87, 0x14b: 0x88, 0x14c: 0x89, 0x14d: 0x8a, 0x14e: 0x8b, 0x14f: 0x8c, - 0x150: 0x8d, 0x151: 0x8e, 0x152: 0x8f, 0x153: 0x90, 0x154: 0x91, 0x155: 0x92, 0x156: 0x93, 0x157: 0x94, - 0x158: 0x95, 0x159: 0x96, 0x15a: 0x97, 0x15b: 0x98, 0x15c: 0x99, 0x15d: 0x9a, 0x15e: 0x9b, 0x15f: 0x9c, - 0x160: 0x9d, 0x161: 0x9e, 0x162: 0x9f, 0x163: 0xa0, 0x164: 0xa1, 0x165: 0xa2, 0x166: 0xa3, 0x167: 0xa4, - 0x168: 0xa5, 0x169: 0xa6, 0x16a: 0xa7, 0x16b: 0xa8, 0x16c: 0xa9, 0x16d: 0xaa, - 0x170: 0xab, 0x171: 0xac, 0x172: 0xad, 0x173: 0xae, 0x174: 0xaf, 0x175: 0xb0, 0x176: 0xb1, 0x177: 0xb2, - 0x178: 0xb3, 0x17a: 0xb4, 0x17b: 0xb5, 0x17c: 0xb6, 0x17d: 0xb7, 0x17e: 0xb8, 0x17f: 0xb9, - // Block 0x6, offset 0x180 - 0x180: 0xba, 0x181: 0xbb, 0x182: 0xbc, 0x183: 0xbd, 0x184: 0xbe, 0x185: 0xbf, 0x186: 0xc0, 0x187: 0xc1, - 0x188: 0xc2, 0x189: 0xc3, 0x18a: 0xc4, 0x18b: 0xc5, 0x18c: 0xc6, 0x18d: 0xc7, 0x18e: 0xc8, 0x18f: 0xc9, - // Block 0x7, offset 0x1c0 - 0x1f7: 0xca, - // Block 0x8, offset 0x200 - 0x200: 0xcb, 0x201: 0xcc, 0x202: 0xcd, 0x203: 0xce, 0x204: 0xcf, 0x205: 0xd0, 0x206: 0xd1, 0x207: 0xd2, - 0x208: 0xd3, 0x209: 0xd4, 0x20a: 0xd5, 0x20b: 0xd6, 0x20c: 0xd7, 0x20d: 0xd8, 0x20e: 0xd9, 0x20f: 0xda, - 0x210: 0xdb, 0x211: 0xdc, 0x212: 0xdd, 0x213: 0xde, 0x214: 0xdf, 0x215: 0xe0, 0x216: 0xe1, 0x217: 0xe2, - 0x218: 0xe3, 0x219: 0xe4, 0x21a: 0xe5, 0x21b: 0xe6, 0x21c: 0xe7, 0x21d: 0xe8, 0x21e: 0xe9, 0x21f: 0xea, - 0x220: 0xeb, 0x221: 0xec, 0x222: 0xed, 0x223: 0xee, 0x224: 0xef, 0x225: 0xf0, 0x226: 0xf1, 0x227: 0xf2, - 0x228: 0xf3, 0x229: 0xf4, 0x22a: 0xf5, 0x22b: 0xf6, 0x22c: 0xf7, 0x22f: 0xf8, - // Block 0x9, offset 0x240 - 0x25e: 0xf9, 0x25f: 0xfa, - // Block 0xa, offset 0x280 - 0x2a4: 0xfb, 0x2a5: 0xfc, 0x2a6: 0xfd, 0x2a7: 0xfe, - 0x2a8: 0xff, 0x2a9: 0x100, 0x2aa: 0x101, 0x2ab: 0x102, 0x2ac: 0x103, 0x2ad: 0x104, 0x2ae: 0x105, 0x2af: 0x106, - 0x2b0: 0x107, 0x2b1: 0x108, 0x2b2: 0x109, 0x2b3: 0x10a, 0x2b4: 0x10b, 0x2b5: 0x10c, 0x2b6: 0x10d, 0x2b7: 0x10e, - 0x2b8: 0x10f, 0x2b9: 0x110, 0x2ba: 0x111, 0x2bb: 0x112, 0x2bc: 0x113, 0x2bd: 0x114, 0x2be: 0x115, 0x2bf: 0x116, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x117, 0x2c1: 0x118, 0x2c2: 0x119, 0x2c3: 0x11a, 0x2c4: 0x11b, 0x2c5: 0x11c, 0x2c6: 0x11d, 0x2c7: 0x11e, - 0x2ca: 0x11f, 0x2cb: 0x120, 0x2cc: 0x121, 0x2cd: 0x122, 0x2ce: 0x123, 0x2cf: 0x124, - 0x2d0: 0x125, 0x2d1: 0x126, 0x2d2: 0x127, - 0x2e0: 0x128, 0x2e1: 0x129, 0x2e4: 0x12a, 0x2e6: 0x12b, - 0x2e8: 0x12c, 0x2e9: 0x12d, 0x2ec: 0x12e, 0x2ed: 0x12f, - 0x2f0: 0x130, 0x2f1: 0x131, - 0x2f9: 0x132, - // Block 0xc, offset 0x300 - 0x300: 0x133, 0x301: 0x134, 0x302: 0x135, 0x303: 0x136, 0x304: 0x137, 0x305: 0x138, 0x306: 0x139, 0x307: 0x13a, - 0x31a: 0x13b, 0x31b: 0x13c, - // Block 0xd, offset 0x340 - 0x340: 0x13d, 0x341: 0x13e, 0x342: 0x13f, 0x343: 0x140, 0x344: 0x141, 0x345: 0x142, 0x346: 0x143, 0x347: 0x144, - 0x348: 0x145, 0x349: 0x146, 0x34a: 0x147, 0x34b: 0x148, 0x34c: 0x149, 0x34d: 0x14a, - 0x350: 0x14b, 0x351: 0x14c, - // Block 0xe, offset 0x380 - 0x380: 0x14d, 0x381: 0x14e, 0x382: 0x14f, 0x383: 0x150, 0x384: 0x151, 0x385: 0x152, 0x386: 0x153, 0x387: 0x154, - 0x388: 0x155, 0x389: 0x156, 0x38a: 0x157, 0x38b: 0x158, 0x38c: 0x159, 0x38d: 0x15a, 0x38e: 0x15b, 0x38f: 0x15c, - 0x390: 0x15d, - // Block 0xf, offset 0x3c0 - 0x3e0: 0x15e, 0x3e1: 0x15f, 0x3e2: 0x160, 0x3e3: 0x161, 0x3e4: 0x162, 0x3e5: 0x163, 0x3e6: 0x164, 0x3e7: 0x165, - 0x3e8: 0x166, - 0x3fc: 0x167, 0x3fd: 0x168, 0x3fe: 0x169, - // Block 0x10, offset 0x400 - 0x400: 0x16a, - // Block 0x11, offset 0x440 - 0x440: 0x16b, 0x441: 0x16c, 0x442: 0x16d, 0x443: 0x16e, 0x444: 0x16f, 0x445: 0x170, 0x446: 0x171, 0x447: 0x172, - 0x448: 0x173, 0x449: 0x174, 0x44c: 0x175, 0x44d: 0x176, - 0x450: 0x177, 0x451: 0x178, 0x452: 0x179, 0x453: 0x17a, 0x454: 0x17b, 0x455: 0x17c, 0x456: 0x17d, 0x457: 0x17e, - 0x458: 0x17f, 0x459: 0x180, 0x45a: 0x181, 0x45b: 0x182, 0x45c: 0x183, 0x45d: 0x184, 0x45e: 0x185, 0x45f: 0x186, - // Block 0x12, offset 0x480 - 0x4b8: 0x187, 0x4b9: 0x188, 0x4ba: 0x189, 0x4bb: 0x18a, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x18b, 0x4c1: 0x18c, 0x4c2: 0x18d, 0x4c3: 0x18e, 0x4c4: 0x18f, 0x4c5: 0x190, 0x4c6: 0x191, 0x4c7: 0x192, - 0x4c8: 0x193, 0x4c9: 0x194, 0x4cc: 0x195, 0x4cd: 0x196, 0x4ce: 0x197, 0x4cf: 0x198, - 0x4d0: 0x199, 0x4d1: 0x19a, 0x4d2: 0x19b, 0x4d3: 0x19c, 0x4d4: 0x19d, 0x4d5: 0x19e, 0x4d7: 0x19f, - 0x4d8: 0x1a0, 0x4d9: 0x1a1, 0x4da: 0x1a2, 0x4db: 0x1a3, 0x4dc: 0x1a4, 0x4dd: 0x1a5, - // Block 0x14, offset 0x500 - 0x520: 0x1a6, 0x521: 0x1a7, 0x522: 0x1a8, 0x523: 0x1a9, 0x524: 0x1aa, 0x525: 0x1ab, 0x526: 0x1ac, 0x527: 0x1ad, - 0x528: 0x1ae, - // Block 0x15, offset 0x540 - 0x550: 0x09, 0x551: 0x0a, 0x552: 0x0b, 0x553: 0x0c, 0x556: 0x0d, - 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, - 0x56f: 0x12, - // Block 0x16, offset 0x580 - 0x580: 0x1af, 0x581: 0x1b0, 0x584: 0x1b0, 0x585: 0x1b0, 0x586: 0x1b0, 0x587: 0x1b1, - // Block 0x17, offset 0x5c0 - 0x5e0: 0x14, - // Block 0x18, offset 0x600 - 0x602: 0x01, 0x603: 0x02, 0x604: 0x03, 0x605: 0x04, 0x606: 0x05, 0x607: 0x06, - 0x608: 0x07, 0x609: 0x08, 0x60a: 0x09, 0x60b: 0x0a, 0x60c: 0x0b, 0x60d: 0x0c, 0x60e: 0x0d, 0x60f: 0x0e, - 0x610: 0x0f, 0x611: 0x10, 0x612: 0x11, 0x613: 0x12, 0x614: 0x13, 0x615: 0x14, 0x616: 0x15, 0x617: 0x16, - 0x618: 0x17, 0x619: 0x18, 0x61a: 0x19, 0x61b: 0x1a, 0x61c: 0x1b, 0x61d: 0x1c, 0x61e: 0x1d, 0x61f: 0x1e, - 0x620: 0x01, 0x621: 0x02, 0x622: 0x03, 0x623: 0x04, 0x624: 0x05, - 0x62a: 0x06, 0x62d: 0x07, 0x62f: 0x08, - 0x630: 0x13, 0x633: 0x15, - // Block 0x19, offset 0x640 - 0x660: 0x1f, 0x661: 0x20, 0x662: 0x21, 0x663: 0x22, 0x664: 0x23, 0x665: 0x24, 0x666: 0x25, 0x667: 0x26, - 0x668: 0x27, 0x669: 0x28, 0x66a: 0x29, 0x66b: 0x2a, 0x66c: 0x2b, 0x66d: 0x2c, 0x66e: 0x2d, 0x66f: 0x2e, - 0x670: 0x2f, 0x671: 0x30, 0x672: 0x31, 0x673: 0x32, 0x674: 0x33, 0x675: 0x34, 0x676: 0x35, 0x677: 0x36, - 0x678: 0x1b8, 0x679: 0x38, 0x67a: 0x39, 0x67b: 0x3a, 0x67c: 0x3b, 0x67d: 0x3c, 0x67e: 0x3d, 0x67f: 0x3e, - // Block 0x1a, offset 0x680 - 0x680: 0x3f, 0x681: 0x40, 0x682: 0x41, 0x683: 0x42, 0x684: 0x1b9, 0x685: 0x1ba, 0x686: 0x1bb, 0x687: 0x1bc, - 0x688: 0x47, 0x689: 0x48, 0x68a: 0x49, 0x68b: 0x4a, 0x68c: 0x4b, 0x68d: 0x4c, 0x68e: 0x4d, 0x68f: 0x4e, - 0x690: 0x4f, 0x691: 0x50, 0x692: 0x51, 0x693: 0x52, 0x694: 0x53, 0x695: 0x54, 0x696: 0x55, 0x697: 0x56, - 0x698: 0x57, 0x699: 0x58, 0x69a: 0x59, 0x69b: 0x5a, 0x69c: 0x5b, 0x69d: 0x5c, 0x69e: 0x5d, 0x69f: 0x5e, - 0x6a0: 0x5f, 0x6a1: 0x60, 0x6a2: 0x61, 0x6a3: 0x62, 0x6a4: 0x63, 0x6a5: 0x64, 0x6a6: 0x65, 0x6a7: 0x66, - 0x6a8: 0x67, 0x6a9: 0x68, 0x6aa: 0x69, 0x6ac: 0x6a, 0x6ad: 0x6b, 0x6ae: 0x6c, 0x6af: 0x6d, - 0x6b0: 0x6e, 0x6b1: 0x6f, 0x6b3: 0x70, 0x6b4: 0x71, 0x6b5: 0x72, 0x6b6: 0x73, 0x6b7: 0x74, - 0x6b8: 0x75, 0x6b9: 0x76, 0x6ba: 0x77, 0x6bb: 0x78, 0x6bc: 0x79, 0x6bd: 0x7a, 0x6be: 0x7b, 0x6bf: 0x7c, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x7d, 0x6c1: 0x7e, 0x6c2: 0x7f, 0x6c3: 0x80, 0x6c4: 0x81, 0x6c5: 0x82, 0x6c6: 0x83, 0x6c7: 0x84, - 0x6c8: 0x85, 0x6c9: 0x1bd, 0x6ca: 0x87, 0x6cb: 0x88, 0x6cc: 0x89, 0x6cd: 0x8a, 0x6ce: 0x8b, 0x6cf: 0x8c, - 0x6d0: 0x8d, 0x6d1: 0x8e, 0x6d2: 0x8f, 0x6d3: 0x90, 0x6d4: 0x91, 0x6d5: 0x92, 0x6d6: 0x93, 0x6d7: 0x94, - 0x6d8: 0x95, 0x6d9: 0x96, 0x6da: 0x97, 0x6db: 0x98, 0x6dc: 0x99, 0x6dd: 0x9a, 0x6de: 0x9b, 0x6df: 0x9c, - 0x6e0: 0x9d, 0x6e1: 0x9e, 0x6e2: 0x9f, 0x6e3: 0xa0, 0x6e4: 0xa1, 0x6e5: 0xa2, 0x6e6: 0xa3, 0x6e7: 0xa4, - 0x6e8: 0xa5, 0x6e9: 0xa6, 0x6ea: 0xa7, 0x6eb: 0xa8, 0x6ec: 0xa9, 0x6ed: 0xaa, - 0x6f0: 0xab, 0x6f1: 0xac, 0x6f2: 0xad, 0x6f3: 0xae, 0x6f4: 0xaf, 0x6f5: 0xb0, 0x6f6: 0xb1, 0x6f7: 0xb2, - 0x6f8: 0xb3, 0x6fa: 0xb4, 0x6fb: 0xb5, 0x6fc: 0xb6, 0x6fd: 0xb7, 0x6fe: 0xb8, 0x6ff: 0xb9, - // Block 0x1c, offset 0x700 - 0x724: 0xfb, 0x725: 0xfc, 0x726: 0xfd, 0x727: 0xfe, - 0x728: 0xff, 0x729: 0x100, 0x72a: 0x101, 0x72b: 0x102, 0x72c: 0x103, 0x72d: 0x104, 0x72e: 0x105, 0x72f: 0x1be, - 0x730: 0x1bf, 0x731: 0x1c0, 0x732: 0x1c1, 0x733: 0x1c2, 0x734: 0x1c3, 0x735: 0x10c, 0x736: 0x10d, 0x737: 0x10e, - 0x738: 0x10f, 0x739: 0x110, 0x73a: 0x1c4, 0x73b: 0x1c5, 0x73c: 0x113, 0x73d: 0x114, 0x73e: 0x115, 0x73f: 0x116, - // Block 0x1d, offset 0x740 - 0x742: 0x01, 0x743: 0x02, 0x744: 0x03, 0x745: 0x04, 0x746: 0x05, 0x747: 0x06, - 0x748: 0x07, 0x749: 0x08, 0x74a: 0x09, 0x74b: 0x0a, 0x74c: 0x0b, 0x74d: 0x0c, 0x74e: 0x0d, 0x74f: 0x0e, - 0x750: 0x0f, 0x751: 0x10, 0x752: 0x11, 0x753: 0x12, 0x754: 0x13, 0x755: 0x14, 0x756: 0x15, 0x757: 0x1b4, - 0x758: 0x1b5, 0x759: 0x1b6, 0x75a: 0x19, 0x75b: 0x1b7, 0x75c: 0x1b, 0x75d: 0x1c, 0x75e: 0x1d, 0x75f: 0x1e, - 0x760: 0x17, 0x761: 0x18, 0x762: 0x19, 0x763: 0x04, 0x764: 0x05, - 0x76a: 0x06, 0x76d: 0x07, 0x76f: 0x1a, - 0x770: 0x13, 0x773: 0x15, - // Block 0x1e, offset 0x780 - 0x780: 0x3f, 0x781: 0x40, 0x782: 0x41, 0x783: 0x42, 0x784: 0x1b9, 0x785: 0x1ba, 0x786: 0x1bb, 0x787: 0x1bc, - 0x788: 0x47, 0x789: 0x48, 0x78a: 0x49, 0x78b: 0x4a, 0x78c: 0x4b, 0x78d: 0x4c, 0x78e: 0x4d, 0x78f: 0x4e, - 0x790: 0x4f, 0x791: 0x50, 0x792: 0x51, 0x793: 0x52, 0x794: 0x53, 0x795: 0x54, 0x796: 0x55, 0x797: 0x56, - 0x798: 0x57, 0x799: 0x58, 0x79a: 0x59, 0x79b: 0x5a, 0x79c: 0x5b, 0x79d: 0x5c, 0x79e: 0x5d, 0x79f: 0x5e, - 0x7a0: 0x5f, 0x7a1: 0x60, 0x7a2: 0x61, 0x7a3: 0x62, 0x7a4: 0x63, 0x7a5: 0x64, 0x7a6: 0x65, 0x7a7: 0x66, - 0x7a8: 0x67, 0x7a9: 0x68, 0x7aa: 0x69, 0x7ac: 0x6a, 0x7ad: 0x6b, 0x7ae: 0x6c, 0x7af: 0x6d, - 0x7b0: 0x6e, 0x7b1: 0x6f, 0x7b3: 0x70, 0x7b4: 0x71, 0x7b5: 0x72, 0x7b6: 0x73, 0x7b7: 0x74, - 0x7b8: 0x1cf, 0x7b9: 0x1d0, 0x7ba: 0x1d1, 0x7bb: 0x1d2, 0x7bc: 0x79, 0x7bd: 0x7a, 0x7be: 0x7b, 0x7bf: 0x7c, - // Block 0x1f, offset 0x7c0 - 0x7c0: 0x7d, 0x7c1: 0x7e, 0x7c2: 0x7f, 0x7c3: 0x80, 0x7c4: 0x81, 0x7c5: 0x1d3, 0x7c6: 0x83, 0x7c7: 0x84, - 0x7c8: 0x85, 0x7c9: 0x1bd, 0x7ca: 0x87, 0x7cb: 0x88, 0x7cc: 0x89, 0x7cd: 0x8a, 0x7ce: 0x8b, 0x7cf: 0x8c, - 0x7d0: 0x8d, 0x7d1: 0x8e, 0x7d2: 0x1d4, 0x7d3: 0x90, 0x7d4: 0x91, 0x7d5: 0x92, 0x7d6: 0x93, 0x7d7: 0x94, - 0x7d8: 0x95, 0x7d9: 0x96, 0x7da: 0x97, 0x7db: 0x98, 0x7dc: 0x99, 0x7dd: 0x9a, 0x7de: 0x9b, 0x7df: 0x9c, - 0x7e0: 0x9d, 0x7e1: 0x9e, 0x7e2: 0x9f, 0x7e3: 0xa0, 0x7e4: 0xa1, 0x7e5: 0xa2, 0x7e6: 0xa3, 0x7e7: 0xa4, - 0x7e8: 0xa5, 0x7e9: 0xa6, 0x7ea: 0xa7, 0x7eb: 0xa8, 0x7ec: 0xa9, 0x7ed: 0xaa, - 0x7f0: 0xab, 0x7f1: 0xac, 0x7f2: 0xad, 0x7f3: 0xae, 0x7f4: 0xaf, 0x7f5: 0xb0, 0x7f6: 0xb1, 0x7f7: 0xb2, - 0x7f8: 0xb3, 0x7fa: 0xb4, 0x7fb: 0xb5, 0x7fc: 0xb6, 0x7fd: 0xb7, 0x7fe: 0xb8, 0x7ff: 0xb9, - // Block 0x20, offset 0x800 - 0x800: 0xba, 0x801: 0xbb, 0x802: 0xbc, 0x803: 0xbd, 0x804: 0xbe, 0x805: 0xbf, 0x806: 0xc0, 0x807: 0xc1, - 0x808: 0xc2, 0x809: 0xc3, 0x80a: 0xc4, 0x80b: 0xc5, 0x80c: 0xc6, 0x80d: 0x1d5, 0x80e: 0xc8, 0x80f: 0x1d6, - // Block 0x21, offset 0x840 - 0x840: 0x18b, 0x841: 0x18c, 0x842: 0x18d, 0x843: 0x18e, 0x844: 0x1d7, 0x845: 0x190, 0x846: 0x191, 0x847: 0x192, - 0x848: 0x193, 0x849: 0x194, 0x84c: 0x195, 0x84d: 0x196, 0x84e: 0x197, 0x84f: 0x198, - 0x850: 0x199, 0x851: 0x19a, 0x852: 0x19b, 0x853: 0x19c, 0x854: 0x19d, 0x855: 0x19e, 0x857: 0x19f, - 0x858: 0x1a0, 0x859: 0x1a1, 0x85a: 0x1a2, 0x85b: 0x1a3, 0x85c: 0x1a4, 0x85d: 0x1a5, - // Block 0x22, offset 0x880 - 0x890: 0x09, 0x891: 0x0a, 0x892: 0x0b, 0x893: 0x0c, 0x896: 0x0d, - 0x89b: 0x0e, 0x89d: 0x0f, 0x89e: 0x10, 0x89f: 0x1f, - 0x8af: 0x12, - // Block 0x23, offset 0x8c0 - 0x8c2: 0x01, 0x8c3: 0x1c8, 0x8c4: 0x1c9, 0x8c5: 0x1ca, 0x8c6: 0x1cb, 0x8c7: 0x1cc, - 0x8c8: 0x1cd, 0x8c9: 0x1ce, 0x8ca: 0x09, 0x8cb: 0x0a, 0x8cc: 0x0b, 0x8cd: 0x0c, 0x8ce: 0x0d, 0x8cf: 0x0e, - 0x8d0: 0x0f, 0x8d1: 0x10, 0x8d2: 0x11, 0x8d3: 0x12, 0x8d4: 0x13, 0x8d5: 0x14, 0x8d6: 0x15, 0x8d7: 0x1b4, - 0x8d8: 0x1b5, 0x8d9: 0x1b6, 0x8da: 0x19, 0x8db: 0x1b7, 0x8dc: 0x1b, 0x8dd: 0x1c, 0x8de: 0x1d, 0x8df: 0x1e, - 0x8e0: 0x17, 0x8e1: 0x1c, 0x8e2: 0x1d, 0x8e3: 0x1e, 0x8e4: 0x05, - 0x8ea: 0x06, 0x8ed: 0x07, 0x8ef: 0x1a, - 0x8f0: 0x20, 0x8f3: 0x15, - // Block 0x24, offset 0x900 - 0x902: 0x01, 0x903: 0x02, 0x904: 0x1da, 0x905: 0x1db, 0x906: 0x05, 0x907: 0x06, - 0x908: 0x07, 0x909: 0x08, 0x90a: 0x09, 0x90b: 0x0a, 0x90c: 0x0b, 0x90d: 0x0c, 0x90e: 0x0d, 0x90f: 0x0e, - 0x910: 0x0f, 0x911: 0x10, 0x912: 0x11, 0x913: 0x12, 0x914: 0x13, 0x915: 0x14, 0x916: 0x15, 0x917: 0x1b4, - 0x918: 0x1b5, 0x919: 0x1b6, 0x91a: 0x19, 0x91b: 0x1b7, 0x91c: 0x1b, 0x91d: 0x1c, 0x91e: 0x1d, 0x91f: 0x1e, - 0x920: 0x17, 0x921: 0x18, 0x922: 0x19, 0x923: 0x04, 0x924: 0x05, - 0x92a: 0x06, 0x92d: 0x07, 0x92f: 0x1a, - 0x930: 0x13, 0x933: 0x15, - // Block 0x25, offset 0x940 - 0x940: 0x3f, 0x941: 0x40, 0x942: 0x41, 0x943: 0x42, 0x944: 0x1b9, 0x945: 0x1ba, 0x946: 0x1bb, 0x947: 0x1bc, - 0x948: 0x47, 0x949: 0x48, 0x94a: 0x49, 0x94b: 0x4a, 0x94c: 0x4b, 0x94d: 0x4c, 0x94e: 0x4d, 0x94f: 0x4e, - 0x950: 0x4f, 0x951: 0x50, 0x952: 0x51, 0x953: 0x52, 0x954: 0x53, 0x955: 0x54, 0x956: 0x55, 0x957: 0x56, - 0x958: 0x57, 0x959: 0x58, 0x95a: 0x59, 0x95b: 0x5a, 0x95c: 0x5b, 0x95d: 0x5c, 0x95e: 0x5d, 0x95f: 0x5e, - 0x960: 0x5f, 0x961: 0x60, 0x962: 0x61, 0x963: 0x62, 0x964: 0x63, 0x965: 0x64, 0x966: 0x65, 0x967: 0x66, - 0x968: 0x67, 0x969: 0x68, 0x96a: 0x69, 0x96c: 0x6a, 0x96d: 0x6b, 0x96e: 0x6c, 0x96f: 0x6d, - 0x970: 0x6e, 0x971: 0x6f, 0x973: 0x70, 0x974: 0x71, 0x975: 0x72, 0x976: 0x73, 0x977: 0x74, - 0x978: 0x1e2, 0x979: 0x1e3, 0x97a: 0x1e4, 0x97b: 0x1e5, 0x97c: 0x79, 0x97d: 0x7a, 0x97e: 0x7b, 0x97f: 0x7c, - // Block 0x26, offset 0x980 - 0x982: 0x01, 0x983: 0x1de, 0x984: 0x1df, 0x985: 0x1e0, 0x986: 0x05, 0x987: 0x1e1, - 0x988: 0x07, 0x989: 0x08, 0x98a: 0x09, 0x98b: 0x0a, 0x98c: 0x0b, 0x98d: 0x0c, 0x98e: 0x0d, 0x98f: 0x0e, - 0x990: 0x0f, 0x991: 0x10, 0x992: 0x11, 0x993: 0x12, 0x994: 0x13, 0x995: 0x14, 0x996: 0x15, 0x997: 0x1b4, - 0x998: 0x1b5, 0x999: 0x1b6, 0x99a: 0x19, 0x99b: 0x1b7, 0x99c: 0x1b, 0x99d: 0x1c, 0x99e: 0x1d, 0x99f: 0x1e, - 0x9a0: 0x17, 0x9a1: 0x23, 0x9a2: 0x19, 0x9a3: 0x04, 0x9a4: 0x05, - 0x9aa: 0x06, 0x9ad: 0x07, 0x9af: 0x1a, - 0x9b0: 0x13, 0x9b3: 0x15, - // Block 0x27, offset 0x9c0 - 0x9c0: 0x3f, 0x9c1: 0x40, 0x9c2: 0x41, 0x9c3: 0x42, 0x9c4: 0x1b9, 0x9c5: 0x1ba, 0x9c6: 0x1bb, 0x9c7: 0x1bc, - 0x9c8: 0x47, 0x9c9: 0x48, 0x9ca: 0x49, 0x9cb: 0x4a, 0x9cc: 0x4b, 0x9cd: 0x4c, 0x9ce: 0x4d, 0x9cf: 0x4e, - 0x9d0: 0x4f, 0x9d1: 0x50, 0x9d2: 0x51, 0x9d3: 0x52, 0x9d4: 0x53, 0x9d5: 0x54, 0x9d6: 0x55, 0x9d7: 0x56, - 0x9d8: 0x57, 0x9d9: 0x58, 0x9da: 0x59, 0x9db: 0x5a, 0x9dc: 0x5b, 0x9dd: 0x5c, 0x9de: 0x5d, 0x9df: 0x5e, - 0x9e0: 0x5f, 0x9e1: 0x60, 0x9e2: 0x61, 0x9e3: 0x62, 0x9e4: 0x63, 0x9e5: 0x64, 0x9e6: 0x65, 0x9e7: 0x66, - 0x9e8: 0x67, 0x9e9: 0x68, 0x9ea: 0x69, 0x9ec: 0x6a, 0x9ed: 0x6b, 0x9ee: 0x6c, 0x9ef: 0x6d, - 0x9f0: 0x6e, 0x9f1: 0x6f, 0x9f3: 0x70, 0x9f4: 0x71, 0x9f5: 0x72, 0x9f6: 0x1ed, 0x9f7: 0x74, - 0x9f8: 0x75, 0x9f9: 0x1ee, 0x9fa: 0x77, 0x9fb: 0x78, 0x9fc: 0x79, 0x9fd: 0x7a, 0x9fe: 0x7b, 0x9ff: 0x7c, - // Block 0x28, offset 0xa00 - 0xa00: 0x7d, 0xa01: 0x7e, 0xa02: 0x7f, 0xa03: 0x80, 0xa04: 0x1ef, 0xa05: 0x82, 0xa06: 0x83, 0xa07: 0x84, - 0xa08: 0x85, 0xa09: 0x1bd, 0xa0a: 0x87, 0xa0b: 0x88, 0xa0c: 0x89, 0xa0d: 0x8a, 0xa0e: 0x8b, 0xa0f: 0x8c, - 0xa10: 0x8d, 0xa11: 0x8e, 0xa12: 0x8f, 0xa13: 0x90, 0xa14: 0x91, 0xa15: 0x92, 0xa16: 0x93, 0xa17: 0x94, - 0xa18: 0x95, 0xa19: 0x96, 0xa1a: 0x97, 0xa1b: 0x98, 0xa1c: 0x99, 0xa1d: 0x9a, 0xa1e: 0x9b, 0xa1f: 0x9c, - 0xa20: 0x9d, 0xa21: 0x9e, 0xa22: 0x9f, 0xa23: 0xa0, 0xa24: 0xa1, 0xa25: 0xa2, 0xa26: 0xa3, 0xa27: 0xa4, - 0xa28: 0xa5, 0xa29: 0xa6, 0xa2a: 0xa7, 0xa2b: 0xa8, 0xa2c: 0xa9, 0xa2d: 0xaa, - 0xa30: 0xab, 0xa31: 0xac, 0xa32: 0xad, 0xa33: 0xae, 0xa34: 0xaf, 0xa35: 0xb0, 0xa36: 0xb1, 0xa37: 0xb2, - 0xa38: 0xb3, 0xa3a: 0xb4, 0xa3b: 0xb5, 0xa3c: 0xb6, 0xa3d: 0xb7, 0xa3e: 0xb8, 0xa3f: 0xb9, - // Block 0x29, offset 0xa40 - 0xa42: 0x01, 0xa43: 0x1e8, 0xa44: 0x1e9, 0xa45: 0x1ea, 0xa46: 0x05, 0xa47: 0x1eb, - 0xa48: 0x1ec, 0xa49: 0x08, 0xa4a: 0x09, 0xa4b: 0x0a, 0xa4c: 0x0b, 0xa4d: 0x0c, 0xa4e: 0x0d, 0xa4f: 0x0e, - 0xa50: 0x0f, 0xa51: 0x10, 0xa52: 0x11, 0xa53: 0x12, 0xa54: 0x13, 0xa55: 0x14, 0xa56: 0x15, 0xa57: 0x1b4, - 0xa58: 0x1b5, 0xa59: 0x1b6, 0xa5a: 0x19, 0xa5b: 0x1b7, 0xa5c: 0x1b, 0xa5d: 0x1c, 0xa5e: 0x1d, 0xa5f: 0x1e, - 0xa60: 0x17, 0xa61: 0x25, 0xa62: 0x26, 0xa63: 0x04, 0xa64: 0x05, - 0xa6a: 0x06, 0xa6d: 0x07, 0xa6f: 0x1a, - 0xa70: 0x13, 0xa73: 0x15, - // Block 0x2a, offset 0xa80 - 0xa80: 0x3f, 0xa81: 0x40, 0xa82: 0x41, 0xa83: 0x42, 0xa84: 0x1b9, 0xa85: 0x1ba, 0xa86: 0x1bb, 0xa87: 0x1bc, - 0xa88: 0x47, 0xa89: 0x48, 0xa8a: 0x49, 0xa8b: 0x4a, 0xa8c: 0x4b, 0xa8d: 0x4c, 0xa8e: 0x4d, 0xa8f: 0x4e, - 0xa90: 0x4f, 0xa91: 0x50, 0xa92: 0x51, 0xa93: 0x52, 0xa94: 0x53, 0xa95: 0x54, 0xa96: 0x55, 0xa97: 0x56, - 0xa98: 0x57, 0xa99: 0x58, 0xa9a: 0x59, 0xa9b: 0x5a, 0xa9c: 0x5b, 0xa9d: 0x5c, 0xa9e: 0x5d, 0xa9f: 0x5e, - 0xaa0: 0x5f, 0xaa1: 0x60, 0xaa2: 0x61, 0xaa3: 0x62, 0xaa4: 0x63, 0xaa5: 0x64, 0xaa6: 0x65, 0xaa7: 0x66, - 0xaa8: 0x67, 0xaa9: 0x68, 0xaaa: 0x69, 0xaac: 0x6a, 0xaad: 0x6b, 0xaae: 0x6c, 0xaaf: 0x6d, - 0xab0: 0x6e, 0xab1: 0x6f, 0xab3: 0x70, 0xab4: 0x71, 0xab5: 0x72, 0xab6: 0x73, 0xab7: 0x74, - 0xab8: 0x75, 0xab9: 0x1f5, 0xaba: 0x77, 0xabb: 0x78, 0xabc: 0x79, 0xabd: 0x7a, 0xabe: 0x7b, 0xabf: 0x7c, - // Block 0x2b, offset 0xac0 - 0xac2: 0x01, 0xac3: 0x1f2, 0xac4: 0x03, 0xac5: 0x04, 0xac6: 0x05, 0xac7: 0x1f3, - 0xac8: 0x1f4, 0xac9: 0x08, 0xaca: 0x09, 0xacb: 0x0a, 0xacc: 0x0b, 0xacd: 0x0c, 0xace: 0x0d, 0xacf: 0x0e, - 0xad0: 0x0f, 0xad1: 0x10, 0xad2: 0x11, 0xad3: 0x12, 0xad4: 0x13, 0xad5: 0x14, 0xad6: 0x15, 0xad7: 0x1b4, - 0xad8: 0x1b5, 0xad9: 0x1b6, 0xada: 0x19, 0xadb: 0x1b7, 0xadc: 0x1b, 0xadd: 0x1c, 0xade: 0x1d, 0xadf: 0x1e, - 0xae0: 0x17, 0xae1: 0x28, 0xae2: 0x19, 0xae3: 0x04, 0xae4: 0x05, - 0xaea: 0x06, 0xaed: 0x07, 0xaef: 0x1a, - 0xaf0: 0x13, 0xaf3: 0x15, - // Block 0x2c, offset 0xb00 - 0xb02: 0x01, 0xb03: 0x1f8, 0xb04: 0x03, 0xb05: 0x04, 0xb06: 0x05, 0xb07: 0x06, - 0xb08: 0x07, 0xb09: 0x08, 0xb0a: 0x09, 0xb0b: 0x0a, 0xb0c: 0x0b, 0xb0d: 0x0c, 0xb0e: 0x0d, 0xb0f: 0x0e, - 0xb10: 0x0f, 0xb11: 0x10, 0xb12: 0x11, 0xb13: 0x12, 0xb14: 0x13, 0xb15: 0x14, 0xb16: 0x15, 0xb17: 0x1b4, - 0xb18: 0x1b5, 0xb19: 0x1b6, 0xb1a: 0x19, 0xb1b: 0x1b7, 0xb1c: 0x1b, 0xb1d: 0x1c, 0xb1e: 0x1d, 0xb1f: 0x1e, - 0xb20: 0x17, 0xb21: 0x18, 0xb22: 0x19, 0xb23: 0x04, 0xb24: 0x05, - 0xb2a: 0x06, 0xb2d: 0x07, 0xb2f: 0x1a, - 0xb30: 0x13, 0xb33: 0x15, - // Block 0x2d, offset 0xb40 - 0xb40: 0x3f, 0xb41: 0x40, 0xb42: 0x41, 0xb43: 0x42, 0xb44: 0x1b9, 0xb45: 0x1ba, 0xb46: 0x1bb, 0xb47: 0x1bc, - 0xb48: 0x47, 0xb49: 0x48, 0xb4a: 0x49, 0xb4b: 0x4a, 0xb4c: 0x4b, 0xb4d: 0x4c, 0xb4e: 0x4d, 0xb4f: 0x4e, - 0xb50: 0x4f, 0xb51: 0x50, 0xb52: 0x51, 0xb53: 0x52, 0xb54: 0x53, 0xb55: 0x54, 0xb56: 0x55, 0xb57: 0x56, - 0xb58: 0x57, 0xb59: 0x58, 0xb5a: 0x59, 0xb5b: 0x5a, 0xb5c: 0x5b, 0xb5d: 0x5c, 0xb5e: 0x5d, 0xb5f: 0x5e, - 0xb60: 0x5f, 0xb61: 0x60, 0xb62: 0x61, 0xb63: 0x62, 0xb64: 0x63, 0xb65: 0x64, 0xb66: 0x65, 0xb67: 0x66, - 0xb68: 0x67, 0xb69: 0x68, 0xb6a: 0x69, 0xb6c: 0x6a, 0xb6d: 0x6b, 0xb6e: 0x6c, 0xb6f: 0x6d, - 0xb70: 0x6e, 0xb71: 0x6f, 0xb73: 0x70, 0xb74: 0x71, 0xb75: 0x72, 0xb76: 0x1ed, 0xb77: 0x74, - 0xb78: 0x75, 0xb79: 0x200, 0xb7a: 0x201, 0xb7b: 0x202, 0xb7c: 0x79, 0xb7d: 0x7a, 0xb7e: 0x7b, 0xb7f: 0x7c, - // Block 0x2e, offset 0xb80 - 0xb80: 0x7d, 0xb81: 0x7e, 0xb82: 0x7f, 0xb83: 0x80, 0xb84: 0x203, 0xb85: 0x82, 0xb86: 0x83, 0xb87: 0x84, - 0xb88: 0x85, 0xb89: 0x1bd, 0xb8a: 0x87, 0xb8b: 0x88, 0xb8c: 0x89, 0xb8d: 0x8a, 0xb8e: 0x8b, 0xb8f: 0x8c, - 0xb90: 0x8d, 0xb91: 0x8e, 0xb92: 0x204, 0xb93: 0x90, 0xb94: 0x91, 0xb95: 0x92, 0xb96: 0x93, 0xb97: 0x94, - 0xb98: 0x95, 0xb99: 0x96, 0xb9a: 0x97, 0xb9b: 0x98, 0xb9c: 0x99, 0xb9d: 0x9a, 0xb9e: 0x9b, 0xb9f: 0x9c, - 0xba0: 0x9d, 0xba1: 0x9e, 0xba2: 0x9f, 0xba3: 0xa0, 0xba4: 0xa1, 0xba5: 0xa2, 0xba6: 0xa3, 0xba7: 0xa4, - 0xba8: 0xa5, 0xba9: 0xa6, 0xbaa: 0xa7, 0xbab: 0xa8, 0xbac: 0xa9, 0xbad: 0xaa, - 0xbb0: 0xab, 0xbb1: 0xac, 0xbb2: 0xad, 0xbb3: 0xae, 0xbb4: 0xaf, 0xbb5: 0xb0, 0xbb6: 0xb1, 0xbb7: 0xb2, - 0xbb8: 0xb3, 0xbba: 0xb4, 0xbbb: 0xb5, 0xbbc: 0xb6, 0xbbd: 0xb7, 0xbbe: 0xb8, 0xbbf: 0xb9, - // Block 0x2f, offset 0xbc0 - 0xbc0: 0xba, 0xbc1: 0xbb, 0xbc2: 0xbc, 0xbc3: 0xbd, 0xbc4: 0xbe, 0xbc5: 0xbf, 0xbc6: 0xc0, 0xbc7: 0xc1, - 0xbc8: 0xc2, 0xbc9: 0xc3, 0xbca: 0xc4, 0xbcb: 0xc5, 0xbcc: 0xc6, 0xbcd: 0xc7, 0xbce: 0x205, 0xbcf: 0x206, - // Block 0x30, offset 0xc00 - 0xc00: 0x18b, 0xc01: 0x18c, 0xc02: 0x18d, 0xc03: 0x18e, 0xc04: 0x207, 0xc05: 0x208, 0xc06: 0x191, 0xc07: 0x192, - 0xc08: 0x193, 0xc09: 0x194, 0xc0c: 0x195, 0xc0d: 0x196, 0xc0e: 0x197, 0xc0f: 0x198, - 0xc10: 0x199, 0xc11: 0x19a, 0xc12: 0x19b, 0xc13: 0x19c, 0xc14: 0x19d, 0xc15: 0x19e, 0xc17: 0x19f, - 0xc18: 0x1a0, 0xc19: 0x1a1, 0xc1a: 0x1a2, 0xc1b: 0x1a3, 0xc1c: 0x1a4, 0xc1d: 0x1a5, - // Block 0x31, offset 0xc40 - 0xc50: 0x09, 0xc51: 0x0a, 0xc52: 0x0b, 0xc53: 0x0c, 0xc56: 0x0d, - 0xc5b: 0x0e, 0xc5d: 0x0f, 0xc5e: 0x10, 0xc5f: 0x2e, - 0xc6f: 0x12, - // Block 0x32, offset 0xc80 - 0xc82: 0x01, 0xc83: 0x1fb, 0xc84: 0x1fc, 0xc85: 0x1fd, 0xc86: 0x05, 0xc87: 0x1fe, - 0xc88: 0x1ff, 0xc89: 0x08, 0xc8a: 0x09, 0xc8b: 0x0a, 0xc8c: 0x0b, 0xc8d: 0x0c, 0xc8e: 0x0d, 0xc8f: 0x0e, - 0xc90: 0x0f, 0xc91: 0x10, 0xc92: 0x11, 0xc93: 0x12, 0xc94: 0x13, 0xc95: 0x14, 0xc96: 0x15, 0xc97: 0x1b4, - 0xc98: 0x1b5, 0xc99: 0x1b6, 0xc9a: 0x19, 0xc9b: 0x1b7, 0xc9c: 0x1b, 0xc9d: 0x1c, 0xc9e: 0x1d, 0xc9f: 0x1e, - 0xca0: 0x17, 0xca1: 0x2b, 0xca2: 0x2c, 0xca3: 0x2d, 0xca4: 0x05, - 0xcaa: 0x06, 0xcad: 0x07, 0xcaf: 0x1a, - 0xcb0: 0x2f, 0xcb3: 0x15, - // Block 0x33, offset 0xcc0 - 0xce0: 0x1f, 0xce1: 0x20, 0xce2: 0x21, 0xce3: 0x22, 0xce4: 0x23, 0xce5: 0x24, 0xce6: 0x25, 0xce7: 0x26, - 0xce8: 0x27, 0xce9: 0x28, 0xcea: 0x29, 0xceb: 0x2a, 0xcec: 0x2b, 0xced: 0x2c, 0xcee: 0x2d, 0xcef: 0x2e, - 0xcf0: 0x2f, 0xcf1: 0x30, 0xcf2: 0x31, 0xcf3: 0x32, 0xcf4: 0x33, 0xcf5: 0x34, 0xcf6: 0x35, 0xcf7: 0x36, - 0xcf8: 0x20d, 0xcf9: 0x38, 0xcfa: 0x39, 0xcfb: 0x3a, 0xcfc: 0x3b, 0xcfd: 0x3c, 0xcfe: 0x3d, 0xcff: 0x3e, - // Block 0x34, offset 0xd00 - 0xd02: 0x01, 0xd03: 0x02, 0xd04: 0x03, 0xd05: 0x04, 0xd06: 0x05, 0xd07: 0x06, - 0xd08: 0x07, 0xd09: 0x08, 0xd0a: 0x09, 0xd0b: 0x0a, 0xd0c: 0x0b, 0xd0d: 0x0c, 0xd0e: 0x0d, 0xd0f: 0x0e, - 0xd10: 0x0f, 0xd11: 0x10, 0xd12: 0x11, 0xd13: 0x12, 0xd14: 0x13, 0xd15: 0x14, 0xd16: 0x15, 0xd17: 0x20b, - 0xd18: 0x1b5, 0xd19: 0x20c, 0xd1a: 0x19, 0xd1b: 0x1b7, 0xd1c: 0x1b, 0xd1d: 0x1c, 0xd1e: 0x1d, 0xd1f: 0x1e, - 0xd20: 0x31, 0xd21: 0x18, 0xd22: 0x19, 0xd23: 0x04, 0xd24: 0x05, - 0xd2a: 0x06, 0xd2d: 0x07, 0xd2f: 0x1a, - 0xd30: 0x13, 0xd33: 0x15, - // Block 0x35, offset 0xd40 - 0xd40: 0x3f, 0xd41: 0x40, 0xd42: 0x41, 0xd43: 0x42, 0xd44: 0x1b9, 0xd45: 0x1ba, 0xd46: 0x1bb, 0xd47: 0x1bc, - 0xd48: 0x47, 0xd49: 0x48, 0xd4a: 0x49, 0xd4b: 0x4a, 0xd4c: 0x4b, 0xd4d: 0x4c, 0xd4e: 0x4d, 0xd4f: 0x4e, - 0xd50: 0x4f, 0xd51: 0x50, 0xd52: 0x51, 0xd53: 0x52, 0xd54: 0x53, 0xd55: 0x54, 0xd56: 0x55, 0xd57: 0x56, - 0xd58: 0x57, 0xd59: 0x58, 0xd5a: 0x59, 0xd5b: 0x5a, 0xd5c: 0x5b, 0xd5d: 0x5c, 0xd5e: 0x5d, 0xd5f: 0x5e, - 0xd60: 0x5f, 0xd61: 0x60, 0xd62: 0x61, 0xd63: 0x62, 0xd64: 0x63, 0xd65: 0x64, 0xd66: 0x65, 0xd67: 0x66, - 0xd68: 0x67, 0xd69: 0x68, 0xd6a: 0x69, 0xd6c: 0x6a, 0xd6d: 0x6b, 0xd6e: 0x6c, 0xd6f: 0x6d, - 0xd70: 0x6e, 0xd71: 0x6f, 0xd73: 0x70, 0xd74: 0x71, 0xd75: 0x72, 0xd76: 0x73, 0xd77: 0x74, - 0xd78: 0x213, 0xd79: 0x214, 0xd7a: 0x77, 0xd7b: 0x78, 0xd7c: 0x79, 0xd7d: 0x7a, 0xd7e: 0x7b, 0xd7f: 0x7c, - // Block 0x36, offset 0xd80 - 0xd82: 0x01, 0xd83: 0x02, 0xd84: 0x210, 0xd85: 0x211, 0xd86: 0x05, 0xd87: 0x212, - 0xd88: 0x07, 0xd89: 0x08, 0xd8a: 0x09, 0xd8b: 0x0a, 0xd8c: 0x0b, 0xd8d: 0x0c, 0xd8e: 0x0d, 0xd8f: 0x0e, - 0xd90: 0x0f, 0xd91: 0x10, 0xd92: 0x11, 0xd93: 0x12, 0xd94: 0x13, 0xd95: 0x14, 0xd96: 0x15, 0xd97: 0x1b4, - 0xd98: 0x1b5, 0xd99: 0x1b6, 0xd9a: 0x19, 0xd9b: 0x1b7, 0xd9c: 0x1b, 0xd9d: 0x1c, 0xd9e: 0x1d, 0xd9f: 0x1e, - 0xda0: 0x17, 0xda1: 0x33, 0xda2: 0x19, 0xda3: 0x04, 0xda4: 0x05, - 0xdaa: 0x06, 0xdad: 0x07, 0xdaf: 0x1a, - 0xdb0: 0x13, 0xdb3: 0x15, - // Block 0x37, offset 0xdc0 - 0xdc0: 0x3f, 0xdc1: 0x40, 0xdc2: 0x41, 0xdc3: 0x42, 0xdc4: 0x1b9, 0xdc5: 0x1ba, 0xdc6: 0x1bb, 0xdc7: 0x1bc, - 0xdc8: 0x47, 0xdc9: 0x48, 0xdca: 0x49, 0xdcb: 0x4a, 0xdcc: 0x4b, 0xdcd: 0x4c, 0xdce: 0x4d, 0xdcf: 0x4e, - 0xdd0: 0x4f, 0xdd1: 0x50, 0xdd2: 0x51, 0xdd3: 0x52, 0xdd4: 0x53, 0xdd5: 0x54, 0xdd6: 0x55, 0xdd7: 0x56, - 0xdd8: 0x57, 0xdd9: 0x58, 0xdda: 0x59, 0xddb: 0x5a, 0xddc: 0x5b, 0xddd: 0x5c, 0xdde: 0x5d, 0xddf: 0x5e, - 0xde0: 0x5f, 0xde1: 0x60, 0xde2: 0x61, 0xde3: 0x62, 0xde4: 0x63, 0xde5: 0x64, 0xde6: 0x65, 0xde7: 0x66, - 0xde8: 0x67, 0xde9: 0x68, 0xdea: 0x69, 0xdec: 0x6a, 0xded: 0x6b, 0xdee: 0x6c, 0xdef: 0x6d, - 0xdf0: 0x6e, 0xdf1: 0x6f, 0xdf3: 0x70, 0xdf4: 0x71, 0xdf5: 0x72, 0xdf6: 0x1ed, 0xdf7: 0x74, - 0xdf8: 0x21b, 0xdf9: 0x21c, 0xdfa: 0x21d, 0xdfb: 0x21e, 0xdfc: 0x79, 0xdfd: 0x7a, 0xdfe: 0x7b, 0xdff: 0x7c, - // Block 0x38, offset 0xe00 - 0xe02: 0x01, 0xe03: 0x217, 0xe04: 0x218, 0xe05: 0x04, 0xe06: 0x05, 0xe07: 0x219, - 0xe08: 0x21a, 0xe09: 0x08, 0xe0a: 0x09, 0xe0b: 0x0a, 0xe0c: 0x0b, 0xe0d: 0x0c, 0xe0e: 0x0d, 0xe0f: 0x0e, - 0xe10: 0x0f, 0xe11: 0x10, 0xe12: 0x11, 0xe13: 0x12, 0xe14: 0x13, 0xe15: 0x14, 0xe16: 0x15, 0xe17: 0x1b4, - 0xe18: 0x1b5, 0xe19: 0x1b6, 0xe1a: 0x19, 0xe1b: 0x1b7, 0xe1c: 0x1b, 0xe1d: 0x1c, 0xe1e: 0x1d, 0xe1f: 0x1e, - 0xe20: 0x17, 0xe21: 0x35, 0xe22: 0x26, 0xe23: 0x04, 0xe24: 0x05, - 0xe2a: 0x06, 0xe2d: 0x07, 0xe2f: 0x1a, - 0xe30: 0x13, 0xe33: 0x15, - // Block 0x39, offset 0xe40 - 0xe42: 0x01, 0xe43: 0x1e8, 0xe44: 0x221, 0xe45: 0x1ea, 0xe46: 0x05, 0xe47: 0x1eb, - 0xe48: 0x1ec, 0xe49: 0x08, 0xe4a: 0x09, 0xe4b: 0x0a, 0xe4c: 0x0b, 0xe4d: 0x0c, 0xe4e: 0x0d, 0xe4f: 0x0e, - 0xe50: 0x0f, 0xe51: 0x10, 0xe52: 0x11, 0xe53: 0x12, 0xe54: 0x13, 0xe55: 0x14, 0xe56: 0x15, 0xe57: 0x1b4, - 0xe58: 0x1b5, 0xe59: 0x1b6, 0xe5a: 0x19, 0xe5b: 0x1b7, 0xe5c: 0x1b, 0xe5d: 0x1c, 0xe5e: 0x1d, 0xe5f: 0x1e, - 0xe60: 0x17, 0xe61: 0x25, 0xe62: 0x26, 0xe63: 0x04, 0xe64: 0x05, - 0xe6a: 0x06, 0xe6d: 0x07, 0xe6f: 0x1a, - 0xe70: 0x13, 0xe73: 0x15, - // Block 0x3a, offset 0xe80 - 0xe80: 0x3f, 0xe81: 0x40, 0xe82: 0x41, 0xe83: 0x42, 0xe84: 0x222, 0xe85: 0x223, 0xe86: 0x224, 0xe87: 0x225, - 0xe88: 0x47, 0xe89: 0x48, 0xe8a: 0x49, 0xe8b: 0x4a, 0xe8c: 0x4b, 0xe8d: 0x4c, 0xe8e: 0x4d, 0xe8f: 0x4e, - 0xe90: 0x4f, 0xe91: 0x50, 0xe92: 0x51, 0xe93: 0x52, 0xe94: 0x53, 0xe95: 0x54, 0xe96: 0x55, 0xe97: 0x56, - 0xe98: 0x57, 0xe99: 0x58, 0xe9a: 0x59, 0xe9b: 0x5a, 0xe9c: 0x5b, 0xe9d: 0x5c, 0xe9e: 0x5d, 0xe9f: 0x5e, - 0xea0: 0x5f, 0xea1: 0x60, 0xea2: 0x61, 0xea3: 0x62, 0xea4: 0x63, 0xea5: 0x64, 0xea6: 0x65, 0xea7: 0x66, - 0xea8: 0x67, 0xea9: 0x68, 0xeaa: 0x69, 0xeac: 0x6a, 0xead: 0x6b, 0xeae: 0x6c, 0xeaf: 0x6d, - 0xeb0: 0x6e, 0xeb1: 0x6f, 0xeb3: 0x70, 0xeb4: 0x71, 0xeb5: 0x72, 0xeb6: 0x73, 0xeb7: 0x74, - 0xeb8: 0x75, 0xeb9: 0x76, 0xeba: 0x77, 0xebb: 0x78, 0xebc: 0x79, 0xebd: 0x7a, 0xebe: 0x7b, 0xebf: 0x7c, - // Block 0x3b, offset 0xec0 - 0xec2: 0x01, 0xec3: 0x02, 0xec4: 0x03, 0xec5: 0x04, 0xec6: 0x05, 0xec7: 0x06, - 0xec8: 0x07, 0xec9: 0x08, 0xeca: 0x09, 0xecb: 0x0a, 0xecc: 0x0b, 0xecd: 0x0c, 0xece: 0x0d, 0xecf: 0x0e, - 0xed0: 0x0f, 0xed1: 0x10, 0xed2: 0x11, 0xed3: 0x12, 0xed4: 0x13, 0xed5: 0x14, 0xed6: 0x15, 0xed7: 0x1b4, - 0xed8: 0x1b5, 0xed9: 0x1b6, 0xeda: 0x19, 0xedb: 0x1b7, 0xedc: 0x1b, 0xedd: 0x1c, 0xede: 0x1d, 0xedf: 0x1e, - 0xee0: 0x17, 0xee1: 0x38, 0xee2: 0x19, 0xee3: 0x04, 0xee4: 0x05, - 0xeea: 0x06, 0xeed: 0x07, 0xeef: 0x1a, - 0xef0: 0x13, 0xef3: 0x15, - // Block 0x3c, offset 0xf00 - 0xf00: 0x3f, 0xf01: 0x40, 0xf02: 0x41, 0xf03: 0x42, 0xf04: 0x226, 0xf05: 0x227, 0xf06: 0x228, 0xf07: 0x229, - 0xf08: 0x47, 0xf09: 0x48, 0xf0a: 0x49, 0xf0b: 0x4a, 0xf0c: 0x4b, 0xf0d: 0x4c, 0xf0e: 0x4d, 0xf0f: 0x4e, - 0xf10: 0x4f, 0xf11: 0x50, 0xf12: 0x51, 0xf13: 0x52, 0xf14: 0x53, 0xf15: 0x54, 0xf16: 0x55, 0xf17: 0x56, - 0xf18: 0x57, 0xf19: 0x58, 0xf1a: 0x59, 0xf1b: 0x5a, 0xf1c: 0x5b, 0xf1d: 0x5c, 0xf1e: 0x5d, 0xf1f: 0x5e, - 0xf20: 0x5f, 0xf21: 0x60, 0xf22: 0x61, 0xf23: 0x62, 0xf24: 0x63, 0xf25: 0x64, 0xf26: 0x65, 0xf27: 0x66, - 0xf28: 0x67, 0xf29: 0x68, 0xf2a: 0x69, 0xf2c: 0x6a, 0xf2d: 0x6b, 0xf2e: 0x6c, 0xf2f: 0x6d, - 0xf30: 0x6e, 0xf31: 0x6f, 0xf33: 0x70, 0xf34: 0x71, 0xf35: 0x72, 0xf36: 0x73, 0xf37: 0x74, - 0xf38: 0x75, 0xf39: 0x76, 0xf3a: 0x77, 0xf3b: 0x78, 0xf3c: 0x79, 0xf3d: 0x7a, 0xf3e: 0x7b, 0xf3f: 0x7c, - // Block 0x3d, offset 0xf40 - 0xf40: 0xba, 0xf41: 0xbb, 0xf42: 0xbc, 0xf43: 0xbd, 0xf44: 0x22a, 0xf45: 0x22b, 0xf46: 0xc0, 0xf47: 0xc1, - 0xf48: 0xc2, 0xf49: 0x22c, 0xf4a: 0xc4, 0xf4b: 0xc5, 0xf4c: 0xc6, 0xf4d: 0xc7, 0xf4e: 0xc8, 0xf4f: 0xc9, - // Block 0x3e, offset 0xf80 - 0xf82: 0x01, 0xf83: 0x02, 0xf84: 0x03, 0xf85: 0x04, 0xf86: 0x05, 0xf87: 0x06, - 0xf88: 0x07, 0xf89: 0x08, 0xf8a: 0x09, 0xf8b: 0x0a, 0xf8c: 0x0b, 0xf8d: 0x0c, 0xf8e: 0x0d, 0xf8f: 0x0e, - 0xf90: 0x0f, 0xf91: 0x10, 0xf92: 0x11, 0xf93: 0x12, 0xf94: 0x13, 0xf95: 0x14, 0xf96: 0x15, 0xf97: 0x1b4, - 0xf98: 0x1b5, 0xf99: 0x1b6, 0xf9a: 0x19, 0xf9b: 0x1b7, 0xf9c: 0x1b, 0xf9d: 0x1c, 0xf9e: 0x1d, 0xf9f: 0x1e, - 0xfa0: 0x17, 0xfa1: 0x3a, 0xfa2: 0x03, 0xfa3: 0x3b, 0xfa4: 0x05, - 0xfaa: 0x06, 0xfad: 0x07, 0xfaf: 0x1a, - 0xfb0: 0x13, 0xfb3: 0x15, - // Block 0x3f, offset 0xfc0 - 0xfc0: 0x3f, 0xfc1: 0x40, 0xfc2: 0x41, 0xfc3: 0x42, 0xfc4: 0x1b9, 0xfc5: 0x1ba, 0xfc6: 0x1bb, 0xfc7: 0x1bc, - 0xfc8: 0x47, 0xfc9: 0x48, 0xfca: 0x49, 0xfcb: 0x4a, 0xfcc: 0x4b, 0xfcd: 0x4c, 0xfce: 0x4d, 0xfcf: 0x4e, - 0xfd0: 0x4f, 0xfd1: 0x50, 0xfd2: 0x51, 0xfd3: 0x52, 0xfd4: 0x53, 0xfd5: 0x54, 0xfd6: 0x55, 0xfd7: 0x56, - 0xfd8: 0x57, 0xfd9: 0x58, 0xfda: 0x59, 0xfdb: 0x5a, 0xfdc: 0x5b, 0xfdd: 0x5c, 0xfde: 0x5d, 0xfdf: 0x5e, - 0xfe0: 0x5f, 0xfe1: 0x60, 0xfe2: 0x61, 0xfe3: 0x62, 0xfe4: 0x63, 0xfe5: 0x64, 0xfe6: 0x65, 0xfe7: 0x66, - 0xfe8: 0x67, 0xfe9: 0x68, 0xfea: 0x69, 0xfec: 0x6a, 0xfed: 0x6b, 0xfee: 0x6c, 0xfef: 0x6d, - 0xff0: 0x6e, 0xff1: 0x6f, 0xff3: 0x70, 0xff4: 0x71, 0xff5: 0x72, 0xff6: 0x1ed, 0xff7: 0x74, - 0xff8: 0x75, 0xff9: 0x238, 0xffa: 0x239, 0xffb: 0x23a, 0xffc: 0x79, 0xffd: 0x7a, 0xffe: 0x7b, 0xfff: 0x7c, - // Block 0x40, offset 0x1000 - 0x1000: 0x7d, 0x1001: 0x7e, 0x1002: 0x7f, 0x1003: 0x80, 0x1004: 0x203, 0x1005: 0x82, 0x1006: 0x83, 0x1007: 0x84, - 0x1008: 0x85, 0x1009: 0x1bd, 0x100a: 0x87, 0x100b: 0x88, 0x100c: 0x89, 0x100d: 0x8a, 0x100e: 0x8b, 0x100f: 0x8c, - 0x1010: 0x8d, 0x1011: 0x8e, 0x1012: 0x8f, 0x1013: 0x90, 0x1014: 0x91, 0x1015: 0x92, 0x1016: 0x93, 0x1017: 0x94, - 0x1018: 0x95, 0x1019: 0x96, 0x101a: 0x97, 0x101b: 0x98, 0x101c: 0x99, 0x101d: 0x9a, 0x101e: 0x9b, 0x101f: 0x9c, - 0x1020: 0x9d, 0x1021: 0x9e, 0x1022: 0x9f, 0x1023: 0xa0, 0x1024: 0xa1, 0x1025: 0xa2, 0x1026: 0xa3, 0x1027: 0xa4, - 0x1028: 0xa5, 0x1029: 0xa6, 0x102a: 0xa7, 0x102b: 0xa8, 0x102c: 0xa9, 0x102d: 0xaa, - 0x1030: 0xab, 0x1031: 0xac, 0x1032: 0xad, 0x1033: 0xae, 0x1034: 0xaf, 0x1035: 0xb0, 0x1036: 0xb1, 0x1037: 0xb2, - 0x1038: 0xb3, 0x103a: 0xb4, 0x103b: 0xb5, 0x103c: 0xb6, 0x103d: 0xb7, 0x103e: 0xb8, 0x103f: 0xb9, - // Block 0x41, offset 0x1040 - 0x1042: 0x01, 0x1043: 0x231, 0x1044: 0x232, 0x1045: 0x233, 0x1046: 0x234, 0x1047: 0x235, - 0x1048: 0x236, 0x1049: 0x08, 0x104a: 0x237, 0x104b: 0x0a, 0x104c: 0x0b, 0x104d: 0x0c, 0x104e: 0x0d, 0x104f: 0x0e, - 0x1050: 0x0f, 0x1051: 0x10, 0x1052: 0x11, 0x1053: 0x12, 0x1054: 0x13, 0x1055: 0x14, 0x1056: 0x15, 0x1057: 0x1b4, - 0x1058: 0x1b5, 0x1059: 0x1b6, 0x105a: 0x19, 0x105b: 0x1b7, 0x105c: 0x1b, 0x105d: 0x1c, 0x105e: 0x1d, 0x105f: 0x1e, - 0x1060: 0x17, 0x1061: 0x3d, 0x1062: 0x3e, 0x1063: 0x04, 0x1064: 0x05, - 0x106a: 0x06, 0x106d: 0x07, 0x106f: 0x1a, - 0x1070: 0x13, 0x1073: 0x15, - // Block 0x42, offset 0x1080 - 0x1080: 0x3f, 0x1081: 0x40, 0x1082: 0x41, 0x1083: 0x42, 0x1084: 0x1b9, 0x1085: 0x1ba, 0x1086: 0x1bb, 0x1087: 0x1bc, - 0x1088: 0x47, 0x1089: 0x48, 0x108a: 0x49, 0x108b: 0x4a, 0x108c: 0x4b, 0x108d: 0x4c, 0x108e: 0x4d, 0x108f: 0x4e, - 0x1090: 0x4f, 0x1091: 0x50, 0x1092: 0x51, 0x1093: 0x52, 0x1094: 0x53, 0x1095: 0x54, 0x1096: 0x55, 0x1097: 0x56, - 0x1098: 0x57, 0x1099: 0x58, 0x109a: 0x59, 0x109b: 0x5a, 0x109c: 0x5b, 0x109d: 0x5c, 0x109e: 0x5d, 0x109f: 0x5e, - 0x10a0: 0x5f, 0x10a1: 0x60, 0x10a2: 0x61, 0x10a3: 0x62, 0x10a4: 0x63, 0x10a5: 0x64, 0x10a6: 0x65, 0x10a7: 0x66, - 0x10a8: 0x67, 0x10a9: 0x68, 0x10aa: 0x69, 0x10ac: 0x6a, 0x10ad: 0x6b, 0x10ae: 0x6c, 0x10af: 0x6d, - 0x10b0: 0x6e, 0x10b1: 0x6f, 0x10b3: 0x70, 0x10b4: 0x71, 0x10b5: 0x72, 0x10b6: 0x73, 0x10b7: 0x74, - 0x10b8: 0x1e2, 0x10b9: 0x1e3, 0x10ba: 0x1e4, 0x10bb: 0x241, 0x10bc: 0x79, 0x10bd: 0x7a, 0x10be: 0x7b, 0x10bf: 0x7c, - // Block 0x43, offset 0x10c0 - 0x10c2: 0x01, 0x10c3: 0x23d, 0x10c4: 0x23e, 0x10c5: 0x23f, 0x10c6: 0x05, 0x10c7: 0x240, - 0x10c8: 0x07, 0x10c9: 0x08, 0x10ca: 0x09, 0x10cb: 0x0a, 0x10cc: 0x0b, 0x10cd: 0x0c, 0x10ce: 0x0d, 0x10cf: 0x0e, - 0x10d0: 0x0f, 0x10d1: 0x10, 0x10d2: 0x11, 0x10d3: 0x12, 0x10d4: 0x13, 0x10d5: 0x14, 0x10d6: 0x15, 0x10d7: 0x1b4, - 0x10d8: 0x1b5, 0x10d9: 0x1b6, 0x10da: 0x19, 0x10db: 0x1b7, 0x10dc: 0x1b, 0x10dd: 0x1c, 0x10de: 0x1d, 0x10df: 0x1e, - 0x10e0: 0x17, 0x10e1: 0x40, 0x10e2: 0x19, 0x10e3: 0x04, 0x10e4: 0x05, - 0x10ea: 0x06, 0x10ed: 0x07, 0x10ef: 0x1a, - 0x10f0: 0x13, 0x10f3: 0x15, - // Block 0x44, offset 0x1100 - 0x1100: 0x3f, 0x1101: 0x40, 0x1102: 0x41, 0x1103: 0x42, 0x1104: 0x1b9, 0x1105: 0x1ba, 0x1106: 0x1bb, 0x1107: 0x1bc, - 0x1108: 0x47, 0x1109: 0x48, 0x110a: 0x49, 0x110b: 0x4a, 0x110c: 0x4b, 0x110d: 0x4c, 0x110e: 0x4d, 0x110f: 0x4e, - 0x1110: 0x4f, 0x1111: 0x50, 0x1112: 0x51, 0x1113: 0x52, 0x1114: 0x53, 0x1115: 0x54, 0x1116: 0x55, 0x1117: 0x56, - 0x1118: 0x57, 0x1119: 0x58, 0x111a: 0x59, 0x111b: 0x5a, 0x111c: 0x5b, 0x111d: 0x5c, 0x111e: 0x5d, 0x111f: 0x5e, - 0x1120: 0x5f, 0x1121: 0x60, 0x1122: 0x61, 0x1123: 0x62, 0x1124: 0x63, 0x1125: 0x64, 0x1126: 0x65, 0x1127: 0x66, - 0x1128: 0x67, 0x1129: 0x68, 0x112a: 0x69, 0x112c: 0x6a, 0x112d: 0x6b, 0x112e: 0x6c, 0x112f: 0x6d, - 0x1130: 0x6e, 0x1131: 0x6f, 0x1133: 0x70, 0x1134: 0x71, 0x1135: 0x72, 0x1136: 0x1ed, 0x1137: 0x74, - 0x1138: 0x75, 0x1139: 0x248, 0x113a: 0x201, 0x113b: 0x249, 0x113c: 0x79, 0x113d: 0x7a, 0x113e: 0x7b, 0x113f: 0x7c, - // Block 0x45, offset 0x1140 - 0x1142: 0x01, 0x1143: 0x244, 0x1144: 0x245, 0x1145: 0x246, 0x1146: 0x05, 0x1147: 0x1fe, - 0x1148: 0x247, 0x1149: 0x08, 0x114a: 0x09, 0x114b: 0x0a, 0x114c: 0x0b, 0x114d: 0x0c, 0x114e: 0x0d, 0x114f: 0x0e, - 0x1150: 0x0f, 0x1151: 0x10, 0x1152: 0x11, 0x1153: 0x12, 0x1154: 0x13, 0x1155: 0x14, 0x1156: 0x15, 0x1157: 0x1b4, - 0x1158: 0x1b5, 0x1159: 0x1b6, 0x115a: 0x19, 0x115b: 0x1b7, 0x115c: 0x1b, 0x115d: 0x1c, 0x115e: 0x1d, 0x115f: 0x1e, - 0x1160: 0x17, 0x1161: 0x42, 0x1162: 0x2c, 0x1163: 0x2d, 0x1164: 0x05, - 0x116a: 0x06, 0x116d: 0x07, 0x116f: 0x1a, - 0x1170: 0x2f, 0x1173: 0x15, - // Block 0x46, offset 0x1180 - 0x1180: 0x3f, 0x1181: 0x40, 0x1182: 0x41, 0x1183: 0x42, 0x1184: 0x1b9, 0x1185: 0x1ba, 0x1186: 0x1bb, 0x1187: 0x1bc, - 0x1188: 0x47, 0x1189: 0x48, 0x118a: 0x49, 0x118b: 0x4a, 0x118c: 0x4b, 0x118d: 0x4c, 0x118e: 0x4d, 0x118f: 0x4e, - 0x1190: 0x4f, 0x1191: 0x50, 0x1192: 0x51, 0x1193: 0x52, 0x1194: 0x53, 0x1195: 0x54, 0x1196: 0x55, 0x1197: 0x56, - 0x1198: 0x57, 0x1199: 0x58, 0x119a: 0x59, 0x119b: 0x5a, 0x119c: 0x5b, 0x119d: 0x5c, 0x119e: 0x5d, 0x119f: 0x5e, - 0x11a0: 0x5f, 0x11a1: 0x60, 0x11a2: 0x61, 0x11a3: 0x62, 0x11a4: 0x63, 0x11a5: 0x64, 0x11a6: 0x65, 0x11a7: 0x66, - 0x11a8: 0x67, 0x11a9: 0x68, 0x11aa: 0x69, 0x11ac: 0x6a, 0x11ad: 0x6b, 0x11ae: 0x6c, 0x11af: 0x6d, - 0x11b0: 0x6e, 0x11b1: 0x6f, 0x11b3: 0x70, 0x11b4: 0x71, 0x11b5: 0x72, 0x11b6: 0x73, 0x11b7: 0x74, - 0x11b8: 0x1cf, 0x11b9: 0x1d0, 0x11ba: 0x77, 0x11bb: 0x1d2, 0x11bc: 0x79, 0x11bd: 0x7a, 0x11be: 0x7b, 0x11bf: 0x7c, - // Block 0x47, offset 0x11c0 - 0x11c0: 0x7d, 0x11c1: 0x7e, 0x11c2: 0x7f, 0x11c3: 0x80, 0x11c4: 0x81, 0x11c5: 0x24c, 0x11c6: 0x83, 0x11c7: 0x84, - 0x11c8: 0x85, 0x11c9: 0x1bd, 0x11ca: 0x87, 0x11cb: 0x88, 0x11cc: 0x89, 0x11cd: 0x8a, 0x11ce: 0x8b, 0x11cf: 0x8c, - 0x11d0: 0x8d, 0x11d1: 0x8e, 0x11d2: 0x8f, 0x11d3: 0x90, 0x11d4: 0x91, 0x11d5: 0x92, 0x11d6: 0x93, 0x11d7: 0x94, - 0x11d8: 0x95, 0x11d9: 0x96, 0x11da: 0x97, 0x11db: 0x98, 0x11dc: 0x99, 0x11dd: 0x9a, 0x11de: 0x9b, 0x11df: 0x9c, - 0x11e0: 0x9d, 0x11e1: 0x9e, 0x11e2: 0x9f, 0x11e3: 0xa0, 0x11e4: 0xa1, 0x11e5: 0xa2, 0x11e6: 0xa3, 0x11e7: 0xa4, - 0x11e8: 0xa5, 0x11e9: 0xa6, 0x11ea: 0xa7, 0x11eb: 0xa8, 0x11ec: 0xa9, 0x11ed: 0xaa, - 0x11f0: 0xab, 0x11f1: 0xac, 0x11f2: 0xad, 0x11f3: 0xae, 0x11f4: 0xaf, 0x11f5: 0xb0, 0x11f6: 0xb1, 0x11f7: 0xb2, - 0x11f8: 0xb3, 0x11fa: 0xb4, 0x11fb: 0xb5, 0x11fc: 0xb6, 0x11fd: 0xb7, 0x11fe: 0xb8, 0x11ff: 0xb9, - // Block 0x48, offset 0x1200 - 0x1200: 0xba, 0x1201: 0xbb, 0x1202: 0xbc, 0x1203: 0xbd, 0x1204: 0xbe, 0x1205: 0xbf, 0x1206: 0xc0, 0x1207: 0xc1, - 0x1208: 0xc2, 0x1209: 0xc3, 0x120a: 0xc4, 0x120b: 0xc5, 0x120c: 0xc6, 0x120d: 0x1d5, 0x120e: 0xc8, 0x120f: 0xc9, - // Block 0x49, offset 0x1240 - 0x1240: 0x18b, 0x1241: 0x18c, 0x1242: 0x18d, 0x1243: 0x18e, 0x1244: 0x24d, 0x1245: 0x190, 0x1246: 0x191, 0x1247: 0x192, - 0x1248: 0x193, 0x1249: 0x194, 0x124c: 0x195, 0x124d: 0x196, 0x124e: 0x197, 0x124f: 0x198, - 0x1250: 0x199, 0x1251: 0x19a, 0x1252: 0x19b, 0x1253: 0x19c, 0x1254: 0x19d, 0x1255: 0x19e, 0x1257: 0x19f, - 0x1258: 0x1a0, 0x1259: 0x1a1, 0x125a: 0x1a2, 0x125b: 0x1a3, 0x125c: 0x1a4, 0x125d: 0x1a5, - // Block 0x4a, offset 0x1280 - 0x1290: 0x09, 0x1291: 0x0a, 0x1292: 0x0b, 0x1293: 0x0c, 0x1296: 0x0d, - 0x129b: 0x0e, 0x129d: 0x0f, 0x129e: 0x10, 0x129f: 0x47, - 0x12af: 0x12, - // Block 0x4b, offset 0x12c0 - 0x12c2: 0x01, 0x12c3: 0x1c8, 0x12c4: 0x1c9, 0x12c5: 0x1ca, 0x12c6: 0x05, 0x12c7: 0x1cc, - 0x12c8: 0x1cd, 0x12c9: 0x08, 0x12ca: 0x09, 0x12cb: 0x0a, 0x12cc: 0x0b, 0x12cd: 0x0c, 0x12ce: 0x0d, 0x12cf: 0x0e, - 0x12d0: 0x0f, 0x12d1: 0x10, 0x12d2: 0x11, 0x12d3: 0x12, 0x12d4: 0x13, 0x12d5: 0x14, 0x12d6: 0x15, 0x12d7: 0x1b4, - 0x12d8: 0x1b5, 0x12d9: 0x1b6, 0x12da: 0x19, 0x12db: 0x1b7, 0x12dc: 0x1b, 0x12dd: 0x1c, 0x12de: 0x1d, 0x12df: 0x1e, - 0x12e0: 0x17, 0x12e1: 0x44, 0x12e2: 0x45, 0x12e3: 0x46, 0x12e4: 0x05, - 0x12ea: 0x06, 0x12ed: 0x07, 0x12ef: 0x1a, - 0x12f0: 0x48, 0x12f3: 0x15, -} - -// mainCTEntries: 248 entries, 992 bytes -var mainCTEntries = [248]struct{ L, H, N, I uint8 }{ - {0xCE, 0x1, 1, 255}, - {0xC2, 0x0, 1, 255}, - {0xB7, 0xB7, 0, 1}, - {0x87, 0x87, 0, 2}, - {0xCC, 0x0, 2, 255}, - {0x88, 0x88, 0, 2}, - {0x86, 0x86, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0x88, 0x88, 0, 1}, - {0xCD, 0x1, 1, 255}, - {0xCC, 0x0, 1, 255}, - {0x81, 0x81, 0, 1}, - {0x81, 0x81, 0, 2}, - {0xCC, 0x0, 1, 255}, - {0x86, 0x86, 0, 1}, - {0xCC, 0x0, 3, 255}, - {0x8B, 0x8B, 0, 3}, - {0x88, 0x88, 0, 2}, - {0x86, 0x86, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0x8F, 0x8F, 0, 1}, - {0xD9, 0x0, 1, 255}, - {0x93, 0x95, 0, 1}, - {0xD9, 0x0, 1, 255}, - {0x94, 0x94, 0, 1}, - {0xE0, 0x0, 2, 255}, - {0xA7, 0x1, 1, 255}, - {0xA6, 0x0, 1, 255}, - {0xBE, 0xBE, 0, 1}, - {0x97, 0x97, 0, 2}, - {0xE0, 0x0, 2, 255}, - {0xAD, 0x1, 1, 255}, - {0xAC, 0x0, 1, 255}, - {0xBE, 0xBE, 0, 1}, - {0x96, 0x97, 0, 2}, - {0xE0, 0x0, 1, 255}, - {0xAF, 0x0, 1, 255}, - {0x97, 0x97, 0, 1}, - {0xE0, 0x0, 2, 255}, - {0xAF, 0x1, 1, 255}, - {0xAE, 0x0, 1, 255}, - {0xBE, 0xBE, 0, 1}, - {0x97, 0x97, 0, 2}, - {0xE0, 0x0, 1, 255}, - {0xAE, 0x0, 1, 255}, - {0xBE, 0xBE, 0, 1}, - {0xE0, 0x0, 1, 255}, - {0xB1, 0x0, 1, 255}, - {0x96, 0x96, 0, 1}, - {0xE0, 0x0, 1, 255}, - {0xB3, 0x0, 1, 255}, - {0x95, 0x95, 0, 1}, - {0xE0, 0x0, 1, 255}, - {0xB3, 0x0, 2, 255}, - {0x95, 0x96, 0, 3}, - {0x82, 0x0, 1, 2}, - {0xE0, 0x0, 1, 255}, - {0xB3, 0x0, 1, 255}, - {0x95, 0x95, 0, 1}, - {0xE0, 0x0, 2, 255}, - {0xB5, 0x1, 1, 255}, - {0xB4, 0x0, 1, 255}, - {0xBE, 0xBE, 0, 1}, - {0x97, 0x97, 0, 2}, - {0xE0, 0x0, 1, 255}, - {0xB4, 0x0, 1, 255}, - {0xBE, 0xBE, 0, 1}, - {0xE0, 0x0, 1, 255}, - {0xB7, 0x0, 3, 255}, - {0x9F, 0x9F, 0, 4}, - {0x8F, 0x0, 1, 3}, - {0x8A, 0x8A, 0, 2}, - {0xE0, 0x0, 1, 255}, - {0xB7, 0x0, 1, 255}, - {0x8A, 0x8A, 0, 1}, - {0xE0, 0x0, 1, 255}, - {0xB7, 0x0, 1, 255}, - {0x8A, 0x8A, 0, 1}, - {0xE0, 0x0, 1, 255}, - {0xB8, 0x0, 1, 255}, - {0x81, 0xAE, 0, 1}, - {0xE0, 0x0, 1, 255}, - {0xB8, 0x0, 1, 255}, - {0xB2, 0xB2, 0, 1}, - {0xE0, 0x0, 2, 255}, - {0xBB, 0xC, 1, 255}, - {0xBA, 0x0, 12, 255}, - {0xAD, 0xAE, 0, 26}, - {0xAA, 0xAB, 0, 24}, - {0xA7, 0xA7, 0, 23}, - {0xA5, 0xA5, 0, 22}, - {0xA1, 0xA3, 0, 19}, - {0x99, 0x9F, 0, 12}, - {0x94, 0x97, 0, 8}, - {0x8D, 0x8D, 0, 7}, - {0x8A, 0x8A, 0, 6}, - {0x87, 0x88, 0, 4}, - {0x84, 0x84, 0, 3}, - {0x81, 0x82, 0, 1}, - {0x9C, 0x9F, 0, 28}, - {0xE0, 0x0, 1, 255}, - {0xBA, 0x0, 1, 255}, - {0xB2, 0xB2, 0, 1}, - {0xEA, 0x0, 1, 255}, - {0xAA, 0x0, 1, 255}, - {0x80, 0xAF, 0, 1}, - {0xE0, 0x0, 2, 255}, - {0xBE, 0x7, 1, 255}, - {0xBD, 0x0, 1, 255}, - {0xB1, 0x0, 1, 255}, - {0xE0, 0x0, 2, 255}, - {0xBE, 0x2, 1, 255}, - {0xBD, 0x0, 2, 255}, - {0xB4, 0xB4, 0, 2}, - {0xB2, 0xB2, 0, 1}, - {0x80, 0x80, 0, 3}, - {0x80, 0x81, 0, 4}, - {0xE0, 0x0, 2, 255}, - {0xBE, 0x2, 1, 255}, - {0xBD, 0x0, 2, 255}, - {0xB4, 0xB4, 0, 2}, - {0xB2, 0xB2, 0, 1}, - {0x80, 0x80, 0, 3}, - {0xE1, 0x0, 1, 255}, - {0x80, 0x0, 1, 255}, - {0xAE, 0xAE, 0, 1}, - {0xF0, 0x0, 1, 255}, - {0x91, 0x0, 1, 255}, - {0x84, 0x0, 1, 255}, - {0xA7, 0xA7, 0, 1}, - {0xE1, 0x0, 1, 255}, - {0xAC, 0x0, 1, 255}, - {0xB5, 0xB5, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0xB8, 0xB8, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0xA7, 0xA7, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0x87, 0x87, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0x81, 0x81, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0x8C, 0x8C, 0, 1}, - {0xCC, 0x0, 2, 255}, - {0x8C, 0x8C, 0, 2}, - {0x81, 0x81, 0, 1}, - {0xCC, 0x0, 2, 255}, - {0x8A, 0x8A, 0, 2}, - {0x81, 0x81, 0, 1}, - {0xCC, 0x0, 2, 255}, - {0x8B, 0x8B, 0, 2}, - {0x88, 0x88, 0, 1}, - {0xCC, 0x0, 2, 255}, - {0x61, 0x61, 0, 3}, - {0x8A, 0x8A, 0, 2}, - {0x88, 0x88, 0, 1}, - {0xCC, 0x0, 2, 255}, - {0x61, 0x61, 0, 4}, - {0x41, 0x41, 0, 3}, - {0x8A, 0x8A, 0, 2}, - {0x88, 0x88, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0xA8, 0xA8, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0x83, 0x83, 0, 1}, - {0xCC, 0x0, 2, 255}, - {0x8A, 0x8A, 0, 2}, - {0x88, 0x88, 0, 1}, - {0xCC, 0x0, 3, 255}, - {0x8B, 0x8B, 0, 3}, - {0x88, 0x88, 0, 2}, - {0x83, 0x83, 0, 1}, - {0xC5, 0x2, 1, 255}, - {0x7A, 0x0, 1, 255}, - {0xCC, 0x0, 1, 255}, - {0x8C, 0x8C, 0, 1}, - {0xBE, 0xBE, 0, 2}, - {0xC5, 0x4, 1, 255}, - {0x7A, 0x2, 1, 255}, - {0x5A, 0x0, 1, 255}, - {0xCC, 0x0, 1, 255}, - {0x8C, 0x8C, 0, 1}, - {0xCC, 0x0, 1, 255}, - {0x8C, 0x8C, 0, 2}, - {0xBD, 0xBE, 0, 3}, - {0xCE, 0x1, 1, 255}, - {0xC2, 0x0, 1, 255}, - {0x6A, 0x6A, 0, 3}, - {0xB7, 0xB7, 0, 1}, - {0x87, 0x87, 0, 2}, - {0xCE, 0x1, 1, 255}, - {0xC2, 0x0, 1, 255}, - {0x6A, 0x6A, 0, 4}, - {0x4A, 0x4A, 0, 3}, - {0xB7, 0xB7, 0, 1}, - {0x87, 0x87, 0, 2}, - {0x6A, 0x6A, 0, 1}, - {0x6A, 0x6A, 0, 2}, - {0x4A, 0x4A, 0, 1}, - {0xCC, 0x0, 3, 255}, - {0x8A, 0x8A, 0, 3}, - {0x88, 0x88, 0, 2}, - {0x81, 0x81, 0, 1}, - {0xCC, 0x0, 2, 255}, - {0x88, 0x88, 0, 2}, - {0x81, 0x81, 0, 1}, - {0x27, 0x27, 0, 1}, - {0xE1, 0x0, 1, 255}, - {0x84, 0x0, 1, 255}, - {0x80, 0x80, 0, 1}, - {0xE1, 0x0, 1, 255}, - {0x84, 0x0, 1, 255}, - {0x83, 0x83, 0, 1}, - {0xE1, 0x0, 1, 255}, - {0x84, 0x0, 1, 255}, - {0x87, 0x87, 0, 1}, - {0xE1, 0x0, 1, 255}, - {0x84, 0x0, 1, 255}, - {0x89, 0x89, 0, 1}, - {0xE1, 0x0, 1, 255}, - {0x84, 0x0, 1, 255}, - {0x8C, 0x8C, 0, 1}, - {0xCC, 0x0, 4, 255}, - {0x8A, 0x8A, 0, 5}, - {0x87, 0x88, 0, 3}, - {0x83, 0x83, 0, 2}, - {0x81, 0x81, 0, 1}, - {0xCC, 0x0, 2, 255}, - {0x83, 0x83, 0, 2}, - {0x81, 0x81, 0, 1}, - {0xCC, 0x0, 4, 255}, - {0xA8, 0xA8, 0, 5}, - {0x8B, 0x8B, 0, 4}, - {0x88, 0x88, 0, 3}, - {0x82, 0x83, 0, 1}, - {0xCE, 0x3, 1, 255}, - {0xCC, 0x1, 2, 255}, - {0xC2, 0x0, 1, 255}, - {0xB7, 0xB7, 0, 1}, - {0x8C, 0x8C, 0, 3}, - {0x81, 0x81, 0, 2}, - {0x87, 0x87, 0, 4}, - {0xCC, 0x0, 1, 255}, - {0x81, 0x82, 0, 1}, - {0xCC, 0x0, 3, 255}, - {0x8B, 0x8B, 0, 3}, - {0x88, 0x88, 0, 2}, - {0x82, 0x82, 0, 1}, -} - -// Total size of mainTable is 210136 bytes diff --git a/vendor/golang.org/x/text/secure/bidirule/bench_test.go b/vendor/golang.org/x/text/secure/bidirule/bench_test.go deleted file mode 100644 index 2db922bf..00000000 --- a/vendor/golang.org/x/text/secure/bidirule/bench_test.go +++ /dev/null @@ -1,54 +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 bidirule - -import ( - "testing" - - "golang.org/x/text/internal/testtext" -) - -var benchData = []struct{ name, data string }{ - {"ascii", "Scheveningen"}, - {"arabic", "دبي"}, - {"hangul", "다음과"}, -} - -func doBench(b *testing.B, fn func(b *testing.B, data string)) { - for _, d := range benchData { - testtext.Bench(b, d.name, func(b *testing.B) { fn(b, d.data) }) - } -} - -func BenchmarkSpan(b *testing.B) { - r := New() - doBench(b, func(b *testing.B, str string) { - b.SetBytes(int64(len(str))) - data := []byte(str) - for i := 0; i < b.N; i++ { - r.Reset() - r.Span(data, true) - } - }) -} - -func BenchmarkDirectionASCII(b *testing.B) { - doBench(b, func(b *testing.B, str string) { - b.SetBytes(int64(len(str))) - data := []byte(str) - for i := 0; i < b.N; i++ { - Direction(data) - } - }) -} - -func BenchmarkDirectionStringASCII(b *testing.B) { - doBench(b, func(b *testing.B, str string) { - b.SetBytes(int64(len(str))) - for i := 0; i < b.N; i++ { - DirectionString(str) - } - }) -} diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0_test.go b/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0_test.go deleted file mode 100644 index 06ec5f5d..00000000 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0_test.go +++ /dev/null @@ -1,694 +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. - -// +build go1.10 - -package bidirule - -import ( - "golang.org/x/text/transform" - "golang.org/x/text/unicode/bidi" -) - -var testCases = [][]ruleTest{ - // Go-specific rules. - // Invalid UTF-8 is invalid. - 0: []ruleTest{{ - in: "", - dir: bidi.LeftToRight, - }, { - in: "\x80", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 0, - }, { - in: "\xcc", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 0, - }, { - in: "abc\x80", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 3, - }, { - in: "abc\xcc", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 3, - }, { - in: "abc\xccdef", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 3, - }, { - in: "\xccdef", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 0, - }, { - in: strR + "\x80", - dir: bidi.RightToLeft, - err: ErrInvalid, - n: len(strR), - }, { - in: strR + "\xcc", - dir: bidi.RightToLeft, - err: ErrInvalid, - n: len(strR), - }, { - in: strAL + "\xcc" + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: len(strAL), - }, { - in: "\xcc" + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 0, - }}, - - // Rule 2.1: The first character must be a character with Bidi property L, - // R, or AL. If it has the R or AL property, it is an RTL label; if it has - // the L property, it is an LTR label. - 1: []ruleTest{{ - in: strL, - dir: bidi.LeftToRight, - }, { - in: strR, - dir: bidi.RightToLeft, - }, { - in: strAL, - dir: bidi.RightToLeft, - }, { - in: strAN, - dir: bidi.RightToLeft, - err: ErrInvalid, - }, { - in: strEN, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strEN), - }, { - in: strES, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strES), - }, { - in: strET, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strET), - }, { - in: strCS, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strCS), - }, { - in: strNSM, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strNSM), - }, { - in: strBN, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strBN), - }, { - in: strB, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strB), - }, { - in: strS, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strS), - }, { - in: strWS, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strWS), - }, { - in: strON, - dir: bidi.LeftToRight, - err: ErrInvalid, - n: len(strON), - }, { - in: strEN + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 3, - }, { - in: strES + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 2, - }, { - in: strET + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }, { - in: strCS + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }, { - in: strNSM + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 2, - }, { - in: strBN + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 3, - }, { - in: strB + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 3, - }, { - in: strS + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }, { - in: strWS + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }, { - in: strON + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }}, - - // Rule 2.2: In an RTL label, only characters with the Bidi properties R, - // AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed. - 2: []ruleTest{{ - in: strR + strR + strAL, - dir: bidi.RightToLeft, - }, { - in: strR + strAL + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strAN + strAL, - dir: bidi.RightToLeft, - }, { - in: strR + strEN + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strES + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strCS + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strET + strAL, - dir: bidi.RightToLeft, - }, { - in: strR + strON + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strBN + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strNSM + strAL, - dir: bidi.RightToLeft, - }, { - in: strR + strL + strR, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strB + strR, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strS + strAL, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strWS + strAL, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strAL + strR + strAL, - dir: bidi.RightToLeft, - }, { - in: strAL + strAL + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strAN + strAL, - dir: bidi.RightToLeft, - }, { - in: strAL + strEN + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strES + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strCS + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strET + strAL, - dir: bidi.RightToLeft, - }, { - in: strAL + strON + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strBN + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strNSM + strAL, - dir: bidi.RightToLeft, - }, { - in: strAL + strL + strR, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strB + strR, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strS + strAL, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strWS + strAL, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }}, - - // Rule 2.3: In an RTL label, the end of the label must be a character with - // Bidi property R, AL, EN, or AN, followed by zero or more characters with - // Bidi property NSM. - 3: []ruleTest{{ - in: strR + strNSM, - dir: bidi.RightToLeft, - }, { - in: strR + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strAL + strNSM, - dir: bidi.RightToLeft, - }, { - in: strR + strEN + strNSM + strNSM, - dir: bidi.RightToLeft, - }, { - in: strR + strAN, - dir: bidi.RightToLeft, - }, { - in: strR + strES + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strES + strNSM), - err: ErrInvalid, - }, { - in: strR + strCS + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strCS + strNSM + strNSM), - err: ErrInvalid, - }, { - in: strR + strET, - dir: bidi.RightToLeft, - n: len(strR + strET), - err: ErrInvalid, - }, { - in: strR + strON + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strON + strNSM), - err: ErrInvalid, - }, { - in: strR + strBN + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strBN + strNSM + strNSM), - err: ErrInvalid, - }, { - in: strR + strL + strNSM, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strB + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strS, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strWS, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strAL + strNSM, - dir: bidi.RightToLeft, - }, { - in: strAL + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strAL + strNSM, - dir: bidi.RightToLeft, - }, { - in: strAL + strEN + strNSM + strNSM, - dir: bidi.RightToLeft, - }, { - in: strAL + strAN, - dir: bidi.RightToLeft, - }, { - in: strAL + strES + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strES + strNSM), - err: ErrInvalid, - }, { - in: strAL + strCS + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strCS + strNSM + strNSM), - err: ErrInvalid, - }, { - in: strAL + strET, - dir: bidi.RightToLeft, - n: len(strAL + strET), - err: ErrInvalid, - }, { - in: strAL + strON + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strON + strNSM), - err: ErrInvalid, - }, { - in: strAL + strBN + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strBN + strNSM + strNSM), - err: ErrInvalid, - }, { - in: strAL + strL + strNSM, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strB + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strS, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strWS, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }}, - - // Rule 2.4: In an RTL label, if an EN is present, no AN may be present, - // and vice versa. - 4: []ruleTest{{ - in: strR + strEN + strAN, - dir: bidi.RightToLeft, - n: len(strR + strEN), - err: ErrInvalid, - }, { - in: strR + strAN + strEN + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strAN), - err: ErrInvalid, - }, { - in: strAL + strEN + strAN, - dir: bidi.RightToLeft, - n: len(strAL + strEN), - err: ErrInvalid, - }, { - in: strAL + strAN + strEN + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strAN), - err: ErrInvalid, - }}, - - // Rule 2.5: In an LTR label, only characters with the Bidi properties L, - // EN, ES, CS, ET, ON, BN, or NSM are allowed. - 5: []ruleTest{{ - in: strL + strL + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strEN + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strES + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strCS + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strET + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strON + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strBN + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strNSM + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strR + strL, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strAL + strL, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strAN + strL, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strB + strL, - dir: bidi.LeftToRight, - n: len(strL + strB + strL), - err: ErrInvalid, - }, { - in: strL + strB + strL + strR, - dir: bidi.RightToLeft, - n: len(strL + strB + strL), - err: ErrInvalid, - }, { - in: strL + strS + strL, - dir: bidi.LeftToRight, - n: len(strL + strS + strL), - err: ErrInvalid, - }, { - in: strL + strS + strL + strR, - dir: bidi.RightToLeft, - n: len(strL + strS + strL), - err: ErrInvalid, - }, { - in: strL + strWS + strL, - dir: bidi.LeftToRight, - n: len(strL + strWS + strL), - err: ErrInvalid, - }, { - in: strL + strWS + strL + strR, - dir: bidi.RightToLeft, - n: len(strL + strWS + strL), - err: ErrInvalid, - }}, - - // Rule 2.6: In an LTR label, the end of the label must be a character with - // Bidi property L or EN, followed by zero or more characters with Bidi - // property NSM. - 6: []ruleTest{{ - in: strL, - dir: bidi.LeftToRight, - }, { - in: strL + strNSM, - dir: bidi.LeftToRight, - }, { - in: strL + strNSM + strNSM, - dir: bidi.LeftToRight, - }, { - in: strL + strEN, - dir: bidi.LeftToRight, - }, { - in: strL + strEN + strNSM, - dir: bidi.LeftToRight, - }, { - in: strL + strEN + strNSM + strNSM, - dir: bidi.LeftToRight, - }, { - in: strL + strES, - dir: bidi.LeftToRight, - n: len(strL + strES), - err: ErrInvalid, - }, { - in: strL + strES + strR, - dir: bidi.RightToLeft, - n: len(strL + strES), - err: ErrInvalid, - }, { - in: strL + strCS, - dir: bidi.LeftToRight, - n: len(strL + strCS), - err: ErrInvalid, - }, { - in: strL + strCS + strR, - dir: bidi.RightToLeft, - n: len(strL + strCS), - err: ErrInvalid, - }, { - in: strL + strET, - dir: bidi.LeftToRight, - n: len(strL + strET), - err: ErrInvalid, - }, { - in: strL + strET + strR, - dir: bidi.RightToLeft, - n: len(strL + strET), - err: ErrInvalid, - }, { - in: strL + strON, - dir: bidi.LeftToRight, - n: len(strL + strON), - err: ErrInvalid, - }, { - in: strL + strON + strR, - dir: bidi.RightToLeft, - n: len(strL + strON), - err: ErrInvalid, - }, { - in: strL + strBN, - dir: bidi.LeftToRight, - n: len(strL + strBN), - err: ErrInvalid, - }, { - in: strL + strBN + strR, - dir: bidi.RightToLeft, - n: len(strL + strBN), - err: ErrInvalid, - }, { - in: strL + strR, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strAL, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strAN, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strB, - dir: bidi.LeftToRight, - n: len(strL + strB), - err: ErrInvalid, - }, { - in: strL + strB + strR, - dir: bidi.RightToLeft, - n: len(strL + strB), - err: ErrInvalid, - }, { - in: strL + strS, - dir: bidi.LeftToRight, - n: len(strL + strS), - err: ErrInvalid, - }, { - in: strL + strS + strR, - dir: bidi.RightToLeft, - n: len(strL + strS), - err: ErrInvalid, - }, { - in: strL + strWS, - dir: bidi.LeftToRight, - n: len(strL + strWS), - err: ErrInvalid, - }, { - in: strL + strWS + strR, - dir: bidi.RightToLeft, - n: len(strL + strWS), - err: ErrInvalid, - }}, - - // Incremental processing. - 9: []ruleTest{{ - in: "e\u0301", // é - dir: bidi.LeftToRight, - - pSrc: 2, - nSrc: 1, - err0: transform.ErrShortSrc, - }, { - in: "e\u1000f", // é - dir: bidi.LeftToRight, - - pSrc: 3, - nSrc: 1, - err0: transform.ErrShortSrc, - }, { - // Remain invalid once invalid. - in: strR + "ab", - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - - pSrc: len(strR) + 1, - nSrc: len(strR), - err0: ErrInvalid, - }, { - // Short destination - in: "abcdefghij", - dir: bidi.LeftToRight, - - pSrc: 10, - szDst: 5, - nSrc: 5, - err0: transform.ErrShortDst, - }, { - in: "\U000102f7", - dir: bidi.LeftToRight, - n: len("\U000102f7"), - err: ErrInvalid, - }, { - // Short destination splitting input rune - in: "e\u0301", - dir: bidi.LeftToRight, - - pSrc: 3, - szDst: 2, - nSrc: 1, - err0: transform.ErrShortDst, - }, { - // Unicode 10.0.0 IDNA test string. - in: "FAX\u2a77\U0001d186", - dir: bidi.LeftToRight, - n: len("FAX\u2a77\U0001d186"), - err: ErrInvalid, - }, { - in: "\x80\u0660", - dir: bidi.RightToLeft, - n: 0, - err: ErrInvalid, - }}, -} diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go deleted file mode 100644 index 008874ed..00000000 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0_test.go +++ /dev/null @@ -1,668 +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. - -// +build !go1.10 - -package bidirule - -import ( - "golang.org/x/text/transform" - "golang.org/x/text/unicode/bidi" -) - -var testCases = [][]ruleTest{ - // Go-specific rules. - // Invalid UTF-8 is invalid. - 0: []ruleTest{{ - in: "", - dir: bidi.LeftToRight, - }, { - in: "\x80", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 0, - }, { - in: "\xcc", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 0, - }, { - in: "abc\x80", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 3, - }, { - in: "abc\xcc", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 3, - }, { - in: "abc\xccdef", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 3, - }, { - in: "\xccdef", - dir: bidi.LeftToRight, - err: ErrInvalid, - n: 0, - }, { - in: strR + "\x80", - dir: bidi.RightToLeft, - err: ErrInvalid, - n: len(strR), - }, { - in: strR + "\xcc", - dir: bidi.RightToLeft, - err: ErrInvalid, - n: len(strR), - }, { - in: strAL + "\xcc" + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: len(strAL), - }, { - in: "\xcc" + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 0, - }}, - - // Rule 2.1: The first character must be a character with Bidi property L, - // R, or AL. If it has the R or AL property, it is an RTL label; if it has - // the L property, it is an LTR label. - 1: []ruleTest{{ - in: strL, - dir: bidi.LeftToRight, - }, { - in: strR, - dir: bidi.RightToLeft, - }, { - in: strAL, - dir: bidi.RightToLeft, - }, { - in: strAN, - dir: bidi.RightToLeft, - err: ErrInvalid, - }, { - in: strEN, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strES, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strET, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strCS, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strNSM, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strBN, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strB, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strS, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strWS, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strON, - dir: bidi.LeftToRight, - err: nil, // not an RTL string - }, { - in: strEN + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 3, - }, { - in: strES + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 2, - }, { - in: strET + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }, { - in: strCS + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }, { - in: strNSM + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 2, - }, { - in: strBN + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 3, - }, { - in: strB + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 3, - }, { - in: strS + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }, { - in: strWS + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }, { - in: strON + strR, - dir: bidi.RightToLeft, - err: ErrInvalid, - n: 1, - }}, - - // Rule 2.2: In an RTL label, only characters with the Bidi properties R, - // AL, AN, EN, ES, CS, ET, ON, BN, or NSM are allowed. - 2: []ruleTest{{ - in: strR + strR + strAL, - dir: bidi.RightToLeft, - }, { - in: strR + strAL + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strAN + strAL, - dir: bidi.RightToLeft, - }, { - in: strR + strEN + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strES + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strCS + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strET + strAL, - dir: bidi.RightToLeft, - }, { - in: strR + strON + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strBN + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strNSM + strAL, - dir: bidi.RightToLeft, - }, { - in: strR + strL + strR, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strB + strR, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strS + strAL, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strWS + strAL, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strAL + strR + strAL, - dir: bidi.RightToLeft, - }, { - in: strAL + strAL + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strAN + strAL, - dir: bidi.RightToLeft, - }, { - in: strAL + strEN + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strES + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strCS + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strET + strAL, - dir: bidi.RightToLeft, - }, { - in: strAL + strON + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strBN + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strNSM + strAL, - dir: bidi.RightToLeft, - }, { - in: strAL + strL + strR, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strB + strR, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strS + strAL, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strWS + strAL, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }}, - - // Rule 2.3: In an RTL label, the end of the label must be a character with - // Bidi property R, AL, EN, or AN, followed by zero or more characters with - // Bidi property NSM. - 3: []ruleTest{{ - in: strR + strNSM, - dir: bidi.RightToLeft, - }, { - in: strR + strR, - dir: bidi.RightToLeft, - }, { - in: strR + strAL + strNSM, - dir: bidi.RightToLeft, - }, { - in: strR + strEN + strNSM + strNSM, - dir: bidi.RightToLeft, - }, { - in: strR + strAN, - dir: bidi.RightToLeft, - }, { - in: strR + strES + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strES + strNSM), - err: ErrInvalid, - }, { - in: strR + strCS + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strCS + strNSM + strNSM), - err: ErrInvalid, - }, { - in: strR + strET, - dir: bidi.RightToLeft, - n: len(strR + strET), - err: ErrInvalid, - }, { - in: strR + strON + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strON + strNSM), - err: ErrInvalid, - }, { - in: strR + strBN + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strBN + strNSM + strNSM), - err: ErrInvalid, - }, { - in: strR + strL + strNSM, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strB + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strS, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strR + strWS, - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - }, { - in: strAL + strNSM, - dir: bidi.RightToLeft, - }, { - in: strAL + strR, - dir: bidi.RightToLeft, - }, { - in: strAL + strAL + strNSM, - dir: bidi.RightToLeft, - }, { - in: strAL + strEN + strNSM + strNSM, - dir: bidi.RightToLeft, - }, { - in: strAL + strAN, - dir: bidi.RightToLeft, - }, { - in: strAL + strES + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strES + strNSM), - err: ErrInvalid, - }, { - in: strAL + strCS + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strCS + strNSM + strNSM), - err: ErrInvalid, - }, { - in: strAL + strET, - dir: bidi.RightToLeft, - n: len(strAL + strET), - err: ErrInvalid, - }, { - in: strAL + strON + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strON + strNSM), - err: ErrInvalid, - }, { - in: strAL + strBN + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strBN + strNSM + strNSM), - err: ErrInvalid, - }, { - in: strAL + strL + strNSM, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strB + strNSM + strNSM, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strS, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }, { - in: strAL + strWS, - dir: bidi.RightToLeft, - n: len(strAL), - err: ErrInvalid, - }}, - - // Rule 2.4: In an RTL label, if an EN is present, no AN may be present, - // and vice versa. - 4: []ruleTest{{ - in: strR + strEN + strAN, - dir: bidi.RightToLeft, - n: len(strR + strEN), - err: ErrInvalid, - }, { - in: strR + strAN + strEN + strNSM, - dir: bidi.RightToLeft, - n: len(strR + strAN), - err: ErrInvalid, - }, { - in: strAL + strEN + strAN, - dir: bidi.RightToLeft, - n: len(strAL + strEN), - err: ErrInvalid, - }, { - in: strAL + strAN + strEN + strNSM, - dir: bidi.RightToLeft, - n: len(strAL + strAN), - err: ErrInvalid, - }}, - - // Rule 2.5: In an LTR label, only characters with the Bidi properties L, - // EN, ES, CS, ET, ON, BN, or NSM are allowed. - 5: []ruleTest{{ - in: strL + strL + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strEN + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strES + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strCS + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strET + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strON + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strBN + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strNSM + strL, - dir: bidi.LeftToRight, - }, { - in: strL + strR + strL, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strAL + strL, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strAN + strL, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strB + strL, - dir: bidi.LeftToRight, - n: len(strL + strAN + strL), - err: nil, - }, { - in: strL + strB + strL + strR, - dir: bidi.RightToLeft, - n: len(strL + strB + strL), - err: ErrInvalid, - }, { - in: strL + strS + strL, - dir: bidi.LeftToRight, - n: len(strL + strS + strL), - err: nil, - }, { - in: strL + strS + strL + strR, - dir: bidi.RightToLeft, - n: len(strL + strS + strL), - err: ErrInvalid, - }, { - in: strL + strWS + strL, - dir: bidi.LeftToRight, - n: len(strL + strWS + strL), - err: nil, - }, { - in: strL + strWS + strL + strR, - dir: bidi.RightToLeft, - n: len(strL + strWS + strL), - err: ErrInvalid, - }}, - - // Rule 2.6: In an LTR label, the end of the label must be a character with - // Bidi property L or EN, followed by zero or more characters with Bidi - // property NSM. - 6: []ruleTest{{ - in: strL, - dir: bidi.LeftToRight, - }, { - in: strL + strNSM, - dir: bidi.LeftToRight, - }, { - in: strL + strNSM + strNSM, - dir: bidi.LeftToRight, - }, { - in: strL + strEN, - dir: bidi.LeftToRight, - }, { - in: strL + strEN + strNSM, - dir: bidi.LeftToRight, - }, { - in: strL + strEN + strNSM + strNSM, - dir: bidi.LeftToRight, - }, { - in: strL + strES, - dir: bidi.LeftToRight, - n: len(strL + strES), - err: nil, - }, { - in: strL + strES + strR, - dir: bidi.RightToLeft, - n: len(strL + strES), - err: ErrInvalid, - }, { - in: strL + strCS, - dir: bidi.LeftToRight, - n: len(strL + strCS), - err: nil, - }, { - in: strL + strCS + strR, - dir: bidi.RightToLeft, - n: len(strL + strCS), - err: ErrInvalid, - }, { - in: strL + strET, - dir: bidi.LeftToRight, - n: len(strL + strET), - err: nil, - }, { - in: strL + strET + strR, - dir: bidi.RightToLeft, - n: len(strL + strET), - err: ErrInvalid, - }, { - in: strL + strON, - dir: bidi.LeftToRight, - n: len(strL + strON), - err: nil, - }, { - in: strL + strON + strR, - dir: bidi.RightToLeft, - n: len(strL + strON), - err: ErrInvalid, - }, { - in: strL + strBN, - dir: bidi.LeftToRight, - n: len(strL + strBN), - err: nil, - }, { - in: strL + strBN + strR, - dir: bidi.RightToLeft, - n: len(strL + strBN), - err: ErrInvalid, - }, { - in: strL + strR, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strAL, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strAN, - dir: bidi.RightToLeft, - n: len(strL), - err: ErrInvalid, - }, { - in: strL + strB, - dir: bidi.LeftToRight, - n: len(strL + strB), - err: nil, - }, { - in: strL + strB + strR, - dir: bidi.RightToLeft, - n: len(strL + strB), - err: ErrInvalid, - }, { - in: strL + strB, - dir: bidi.LeftToRight, - n: len(strL + strB), - err: nil, - }, { - in: strL + strB + strR, - dir: bidi.RightToLeft, - n: len(strL + strB), - err: ErrInvalid, - }, { - in: strL + strB, - dir: bidi.LeftToRight, - n: len(strL + strB), - err: nil, - }, { - in: strL + strB + strR, - dir: bidi.RightToLeft, - n: len(strL + strB), - err: ErrInvalid, - }}, - - // Incremental processing. - 9: []ruleTest{{ - in: "e\u0301", // é - dir: bidi.LeftToRight, - - pSrc: 2, - nSrc: 1, - err0: transform.ErrShortSrc, - }, { - in: "e\u1000f", // é - dir: bidi.LeftToRight, - - pSrc: 3, - nSrc: 1, - err0: transform.ErrShortSrc, - }, { - // Remain invalid once invalid. - in: strR + "ab", - dir: bidi.RightToLeft, - n: len(strR), - err: ErrInvalid, - - pSrc: len(strR) + 1, - nSrc: len(strR), - err0: ErrInvalid, - }, { - // Short destination - in: "abcdefghij", - dir: bidi.LeftToRight, - - pSrc: 10, - szDst: 5, - nSrc: 5, - err0: transform.ErrShortDst, - }, { - // Short destination splitting input rune - in: "e\u0301", - dir: bidi.LeftToRight, - - pSrc: 3, - szDst: 2, - nSrc: 1, - err0: transform.ErrShortDst, - }}, -} diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go b/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go deleted file mode 100644 index e8fde338..00000000 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule_test.go +++ /dev/null @@ -1,168 +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 bidirule - -import ( - "fmt" - "testing" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/unicode/bidi" -) - -const ( - strL = "ABC" // Left to right - most letters in LTR scripts - strR = "עברית" // Right to left - most letters in non-Arabic RTL scripts - strAL = "دبي" // Arabic letters - most letters in the Arabic script - strEN = "123" // European Number (0-9, and Extended Arabic-Indic numbers) - strES = "+-" // European Number Separator (+ and -) - strET = "$" // European Number Terminator (currency symbols, the hash sign, the percent sign and so on) - strAN = "\u0660" // Arabic Number; this encompasses the Arabic-Indic numbers, but not the Extended Arabic-Indic numbers - strCS = "," // Common Number Separator (. , / : et al) - strNSM = "\u0300" // Nonspacing Mark - most combining accents - strBN = "\u200d" // Boundary Neutral - control characters (ZWNJ, ZWJ, and others) - strB = "\u2029" // Paragraph Separator - strS = "\u0009" // Segment Separator - strWS = " " // Whitespace, including the SPACE character - strON = "@" // Other Neutrals, including @, &, parentheses, MIDDLE DOT -) - -type ruleTest struct { - in string - dir bidi.Direction - n int // position at which the rule fails - err error - - // For tests that split the string in two. - pSrc int // number of source bytes to consume first - szDst int // size of destination buffer - nSrc int // source bytes consumed and bytes written - err0 error // error after first run -} - -func init() { - for rule, cases := range testCases { - for i, tc := range cases { - if tc.err == nil { - testCases[rule][i].n = len(tc.in) - } - } - } -} - -func doTests(t *testing.T, fn func(t *testing.T, tc ruleTest)) { - for rule, cases := range testCases { - for i, tc := range cases { - name := fmt.Sprintf("%d/%d:%+q:%s", rule, i, tc.in, tc.in) - testtext.Run(t, name, func(t *testing.T) { - fn(t, tc) - }) - } - } -} - -func TestDirection(t *testing.T) { - doTests(t, func(t *testing.T, tc ruleTest) { - dir := Direction([]byte(tc.in)) - if dir != tc.dir { - t.Errorf("dir was %v; want %v", dir, tc.dir) - } - }) -} - -func TestDirectionString(t *testing.T) { - doTests(t, func(t *testing.T, tc ruleTest) { - dir := DirectionString(tc.in) - if dir != tc.dir { - t.Errorf("dir was %v; want %v", dir, tc.dir) - } - }) -} - -func TestValid(t *testing.T) { - doTests(t, func(t *testing.T, tc ruleTest) { - got := Valid([]byte(tc.in)) - want := tc.err == nil - if got != want { - t.Fatalf("Valid: got %v; want %v", got, want) - } - - got = ValidString(tc.in) - want = tc.err == nil - if got != want { - t.Fatalf("Valid: got %v; want %v", got, want) - } - }) -} - -func TestSpan(t *testing.T) { - doTests(t, func(t *testing.T, tc ruleTest) { - // Skip tests that test for limited destination buffer size. - if tc.szDst > 0 { - return - } - - r := New() - src := []byte(tc.in) - - n, err := r.Span(src[:tc.pSrc], tc.pSrc == len(tc.in)) - if err != tc.err0 { - t.Errorf("err0 was %v; want %v", err, tc.err0) - } - if n != tc.nSrc { - t.Fatalf("nSrc was %d; want %d", n, tc.nSrc) - } - - n, err = r.Span(src[n:], true) - if err != tc.err { - t.Errorf("error was %v; want %v", err, tc.err) - } - if got := n + tc.nSrc; got != tc.n { - t.Errorf("n was %d; want %d", got, tc.n) - } - }) -} - -func TestTransform(t *testing.T) { - doTests(t, func(t *testing.T, tc ruleTest) { - r := New() - - src := []byte(tc.in) - dst := make([]byte, len(tc.in)) - if tc.szDst > 0 { - dst = make([]byte, tc.szDst) - } - - // First transform operates on a zero-length string for most tests. - nDst, nSrc, err := r.Transform(dst, src[:tc.pSrc], tc.pSrc == len(tc.in)) - if err != tc.err0 { - t.Errorf("err0 was %v; want %v", err, tc.err0) - } - if nDst != nSrc { - t.Fatalf("nDst (%d) and nSrc (%d) should match", nDst, nSrc) - } - if nSrc != tc.nSrc { - t.Fatalf("nSrc was %d; want %d", nSrc, tc.nSrc) - } - - dst1 := make([]byte, len(tc.in)) - copy(dst1, dst[:nDst]) - - nDst, nSrc, err = r.Transform(dst1[nDst:], src[nSrc:], true) - if err != tc.err { - t.Errorf("error was %v; want %v", err, tc.err) - } - if nDst != nSrc { - t.Fatalf("nDst (%d) and nSrc (%d) should match", nDst, nSrc) - } - n := nSrc + tc.nSrc - if n != tc.n { - t.Fatalf("n was %d; want %d", n, tc.n) - } - if got, want := string(dst1[:n]), tc.in[:tc.n]; got != want { - t.Errorf("got %+q; want %+q", got, want) - } - }) -} diff --git a/vendor/golang.org/x/text/secure/doc.go b/vendor/golang.org/x/text/secure/doc.go deleted file mode 100644 index e531c354..00000000 --- a/vendor/golang.org/x/text/secure/doc.go +++ /dev/null @@ -1,6 +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. - -// secure is a repository of text security related packages. -package secure // import "golang.org/x/text/secure" diff --git a/vendor/golang.org/x/text/secure/precis/benchmark_test.go b/vendor/golang.org/x/text/secure/precis/benchmark_test.go deleted file mode 100644 index 6337d006..00000000 --- a/vendor/golang.org/x/text/secure/precis/benchmark_test.go +++ /dev/null @@ -1,82 +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. - -// +build go1.7 - -package precis - -import ( - "testing" - - "golang.org/x/text/internal/testtext" -) - -var benchData = []struct{ name, str string }{ - {"ASCII", "Malvolio"}, - {"NotNormalized", "abcdefg\u0301\u031f"}, - {"Arabic", "دبي"}, - {"Hangul", "동일조건변경허락"}, -} - -var benchProfiles = []struct { - name string - p *Profile -}{ - {"FreeForm", NewFreeform()}, - {"Nickname", Nickname}, - {"OpaqueString", OpaqueString}, - {"UsernameCaseMapped", UsernameCaseMapped}, - {"UsernameCasePreserved", UsernameCasePreserved}, -} - -func doBench(b *testing.B, f func(b *testing.B, p *Profile, s string)) { - for _, bp := range benchProfiles { - for _, d := range benchData { - testtext.Bench(b, bp.name+"/"+d.name, func(b *testing.B) { - f(b, bp.p, d.str) - }) - } - } -} - -func BenchmarkString(b *testing.B) { - doBench(b, func(b *testing.B, p *Profile, s string) { - for i := 0; i < b.N; i++ { - p.String(s) - } - }) -} - -func BenchmarkBytes(b *testing.B) { - doBench(b, func(b *testing.B, p *Profile, s string) { - src := []byte(s) - b.ResetTimer() - for i := 0; i < b.N; i++ { - p.Bytes(src) - } - }) -} - -func BenchmarkAppend(b *testing.B) { - doBench(b, func(b *testing.B, p *Profile, s string) { - src := []byte(s) - dst := make([]byte, 0, 4096) - b.ResetTimer() - for i := 0; i < b.N; i++ { - p.Append(dst, src) - } - }) -} - -func BenchmarkTransform(b *testing.B) { - doBench(b, func(b *testing.B, p *Profile, s string) { - src := []byte(s) - dst := make([]byte, 2*len(s)) - t := p.NewTransformer() - b.ResetTimer() - for i := 0; i < b.N; i++ { - t.Transform(dst, src, true) - } - }) -} diff --git a/vendor/golang.org/x/text/secure/precis/class.go b/vendor/golang.org/x/text/secure/precis/class.go deleted file mode 100644 index f6b56413..00000000 --- a/vendor/golang.org/x/text/secure/precis/class.go +++ /dev/null @@ -1,36 +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 precis - -import ( - "unicode/utf8" -) - -// TODO: Add contextual character rules from Appendix A of RFC5892. - -// A class is a set of characters that match certain derived properties. The -// PRECIS framework defines two classes: The Freeform class and the Identifier -// class. The freeform class should be used for profiles where expressiveness is -// prioritized over safety such as nicknames or passwords. The identifier class -// should be used for profiles where safety is the first priority such as -// addressable network labels and usernames. -type class struct { - validFrom property -} - -// Contains satisfies the runes.Set interface and returns whether the given rune -// is a member of the class. -func (c class) Contains(r rune) bool { - b := make([]byte, 4) - n := utf8.EncodeRune(b, r) - - trieval, _ := dpTrie.lookup(b[:n]) - return c.validFrom <= property(trieval) -} - -var ( - identifier = &class{validFrom: pValid} - freeform = &class{validFrom: idDisOrFreePVal} -) diff --git a/vendor/golang.org/x/text/secure/precis/class_test.go b/vendor/golang.org/x/text/secure/precis/class_test.go deleted file mode 100644 index fbaf6457..00000000 --- a/vendor/golang.org/x/text/secure/precis/class_test.go +++ /dev/null @@ -1,50 +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 precis - -import ( - "testing" - - "golang.org/x/text/runes" -) - -// Compile-time regression test to ensure that Class is a Set -var _ runes.Set = (*class)(nil) - -// Ensure that certain characters are (or are not) in the identifer class. -func TestClassContains(t *testing.T) { - tests := []struct { - name string - class *class - allowed []rune - disallowed []rune - }{ - { - name: "Identifier", - class: identifier, - allowed: []rune("Aa0\u0021\u007e\u00df\u3007"), - disallowed: []rune("\u2150\u2100\u2200\u3164\u2190\u2600\u303b\u1e9b"), - }, - { - name: "Freeform", - class: freeform, - allowed: []rune("Aa0\u0021\u007e\u00df\u3007 \u2150\u2100\u2200\u2190\u2600\u1e9b"), - disallowed: []rune("\u3164\u303b"), - }, - } - - for _, rt := range tests { - for _, r := range rt.allowed { - if !rt.class.Contains(r) { - t.Errorf("Class %s should contain %U", rt.name, r) - } - } - for _, r := range rt.disallowed { - if rt.class.Contains(r) { - t.Errorf("Class %s should not contain %U", rt.name, r) - } - } - } -} diff --git a/vendor/golang.org/x/text/secure/precis/context.go b/vendor/golang.org/x/text/secure/precis/context.go deleted file mode 100644 index 2dcaf29d..00000000 --- a/vendor/golang.org/x/text/secure/precis/context.go +++ /dev/null @@ -1,139 +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 precis - -import "errors" - -// This file contains tables and code related to context rules. - -type catBitmap uint16 - -const ( - // These bits, once set depending on the current value, are never unset. - bJapanese catBitmap = 1 << iota - bArabicIndicDigit - bExtendedArabicIndicDigit - - // These bits are set on each iteration depending on the current value. - bJoinStart - bJoinMid - bJoinEnd - bVirama - bLatinSmallL - bGreek - bHebrew - - // These bits indicated which of the permanent bits need to be set at the - // end of the checks. - bMustHaveJapn - - permanent = bJapanese | bArabicIndicDigit | bExtendedArabicIndicDigit | bMustHaveJapn -) - -const finalShift = 10 - -var errContext = errors.New("precis: contextual rule violated") - -func init() { - // Programmatically set these required bits as, manually setting them seems - // too error prone. - for i, ct := range categoryTransitions { - categoryTransitions[i].keep |= permanent - categoryTransitions[i].accept |= ct.term - } -} - -var categoryTransitions = []struct { - keep catBitmap // mask selecting which bits to keep from the previous state - set catBitmap // mask for which bits to set for this transition - - // These bitmaps are used for rules that require lookahead. - // term&accept == term must be true, which is enforced programmatically. - term catBitmap // bits accepted as termination condition - accept catBitmap // bits that pass, but not sufficient as termination - - // The rule function cannot take a *context as an argument, as it would - // cause the context to escape, adding significant overhead. - rule func(beforeBits catBitmap) (doLookahead bool, err error) -}{ - joiningL: {set: bJoinStart}, - joiningD: {set: bJoinStart | bJoinEnd}, - joiningT: {keep: bJoinStart, set: bJoinMid}, - joiningR: {set: bJoinEnd}, - viramaModifier: {set: bVirama}, - viramaJoinT: {set: bVirama | bJoinMid}, - latinSmallL: {set: bLatinSmallL}, - greek: {set: bGreek}, - greekJoinT: {set: bGreek | bJoinMid}, - hebrew: {set: bHebrew}, - hebrewJoinT: {set: bHebrew | bJoinMid}, - japanese: {set: bJapanese}, - katakanaMiddleDot: {set: bMustHaveJapn}, - - zeroWidthNonJoiner: { - term: bJoinEnd, - accept: bJoinMid, - rule: func(before catBitmap) (doLookAhead bool, err error) { - if before&bVirama != 0 { - return false, nil - } - if before&bJoinStart == 0 { - return false, errContext - } - return true, nil - }, - }, - zeroWidthJoiner: { - rule: func(before catBitmap) (doLookAhead bool, err error) { - if before&bVirama == 0 { - err = errContext - } - return false, err - }, - }, - middleDot: { - term: bLatinSmallL, - rule: func(before catBitmap) (doLookAhead bool, err error) { - if before&bLatinSmallL == 0 { - return false, errContext - } - return true, nil - }, - }, - greekLowerNumeralSign: { - set: bGreek, - term: bGreek, - rule: func(before catBitmap) (doLookAhead bool, err error) { - return true, nil - }, - }, - hebrewPreceding: { - set: bHebrew, - rule: func(before catBitmap) (doLookAhead bool, err error) { - if before&bHebrew == 0 { - err = errContext - } - return false, err - }, - }, - arabicIndicDigit: { - set: bArabicIndicDigit, - rule: func(before catBitmap) (doLookAhead bool, err error) { - if before&bExtendedArabicIndicDigit != 0 { - err = errContext - } - return false, err - }, - }, - extendedArabicIndicDigit: { - set: bExtendedArabicIndicDigit, - rule: func(before catBitmap) (doLookAhead bool, err error) { - if before&bArabicIndicDigit != 0 { - err = errContext - } - return false, err - }, - }, -} diff --git a/vendor/golang.org/x/text/secure/precis/doc.go b/vendor/golang.org/x/text/secure/precis/doc.go deleted file mode 100644 index 939ff222..00000000 --- a/vendor/golang.org/x/text/secure/precis/doc.go +++ /dev/null @@ -1,14 +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 precis contains types and functions for the preparation, -// enforcement, and comparison of internationalized strings ("PRECIS") as -// defined in RFC 8264. It also contains several pre-defined profiles for -// passwords, nicknames, and usernames as defined in RFC 8265 and RFC 8266. -// -// BE ADVISED: This package is under construction and the API may change in -// backwards incompatible ways and without notice. -package precis // import "golang.org/x/text/secure/precis" - -//go:generate go run gen.go gen_trieval.go diff --git a/vendor/golang.org/x/text/secure/precis/enforce10.0.0_test.go b/vendor/golang.org/x/text/secure/precis/enforce10.0.0_test.go deleted file mode 100644 index f2249364..00000000 --- a/vendor/golang.org/x/text/secure/precis/enforce10.0.0_test.go +++ /dev/null @@ -1,244 +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. - -// +build go1.10 - -package precis - -import ( - "golang.org/x/text/secure/bidirule" -) - -var enforceTestCases = []struct { - name string - p *Profile - cases []testCase -}{ - {"Basic", NewFreeform(), []testCase{ - {"e\u0301\u031f", "\u00e9\u031f", nil}, // normalize - }}, - - {"Context Rule 1", NewFreeform(), []testCase{ - // Rule 1: zero-width non-joiner (U+200C) - // From RFC: - // False - // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True; - // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C - // (Joining_Type:T)*(Joining_Type:{R,D})) Then True; - // - // Example runes for different joining types: - // Join L: U+A872; PHAGS-PA SUPERFIXED LETTER RA - // Join D: U+062C; HAH WITH DOT BELOW - // Join T: U+0610; ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM - // Join R: U+0627; ALEF - // Virama: U+0A4D; GURMUKHI SIGN VIRAMA - // Virama and Join T: U+0ACD; GUJARATI SIGN VIRAMA - {"\u200c", "", errContext}, - {"\u200ca", "", errContext}, - {"a\u200c", "", errContext}, - {"\u200c\u0627", "", errContext}, // missing JoinStart - {"\u062c\u200c", "", errContext}, // missing JoinEnd - {"\u0610\u200c\u0610\u0627", "", errContext}, // missing JoinStart - {"\u062c\u0610\u200c\u0610", "", errContext}, // missing JoinEnd - - // Variants of: D T* U+200c T* R - {"\u062c\u200c\u0627", "\u062c\u200c\u0627", nil}, - {"\u062c\u0610\u200c\u0610\u0627", "\u062c\u0610\u200c\u0610\u0627", nil}, - {"\u062c\u0610\u0610\u200c\u0610\u0610\u0627", "\u062c\u0610\u0610\u200c\u0610\u0610\u0627", nil}, - {"\u062c\u0610\u200c\u0627", "\u062c\u0610\u200c\u0627", nil}, - {"\u062c\u200c\u0610\u0627", "\u062c\u200c\u0610\u0627", nil}, - - // Variants of: L T* U+200c T* D - {"\ua872\u200c\u062c", "\ua872\u200c\u062c", nil}, - {"\ua872\u0610\u200c\u0610\u062c", "\ua872\u0610\u200c\u0610\u062c", nil}, - {"\ua872\u0610\u0610\u200c\u0610\u0610\u062c", "\ua872\u0610\u0610\u200c\u0610\u0610\u062c", nil}, - {"\ua872\u0610\u200c\u062c", "\ua872\u0610\u200c\u062c", nil}, - {"\ua872\u200c\u0610\u062c", "\ua872\u200c\u0610\u062c", nil}, - - // Virama - {"\u0a4d\u200c", "\u0a4d\u200c", nil}, - {"\ua872\u0a4d\u200c", "\ua872\u0a4d\u200c", nil}, - {"\ua872\u0a4d\u0610\u200c", "", errContext}, - {"\ua872\u0a4d\u0610\u200c", "", errContext}, - - {"\u0acd\u200c", "\u0acd\u200c", nil}, - {"\ua872\u0acd\u200c", "\ua872\u0acd\u200c", nil}, - {"\ua872\u0acd\u0610\u200c", "", errContext}, - {"\ua872\u0acd\u0610\u200c", "", errContext}, - - // Using Virama as join T - {"\ua872\u0acd\u200c\u062c", "\ua872\u0acd\u200c\u062c", nil}, - {"\ua872\u200c\u0acd\u062c", "\ua872\u200c\u0acd\u062c", nil}, - }}, - - {"Context Rule 2", NewFreeform(), []testCase{ - // Rule 2: zero-width joiner (U+200D) - {"\u200d", "", errContext}, - {"\u200da", "", errContext}, - {"a\u200d", "", errContext}, - - {"\u0a4d\u200d", "\u0a4d\u200d", nil}, - {"\ua872\u0a4d\u200d", "\ua872\u0a4d\u200d", nil}, - {"\u0a4da\u200d", "", errContext}, - }}, - - {"Context Rule 3", NewFreeform(), []testCase{ - // Rule 3: middle dot - {"·", "", errContext}, - {"l·", "", errContext}, - {"·l", "", errContext}, - {"a·", "", errContext}, - {"l·a", "", errContext}, - {"a·a", "", errContext}, - {"l·l", "l·l", nil}, - {"al·la", "al·la", nil}, - }}, - - {"Context Rule 4", NewFreeform(), []testCase{ - // Rule 4: Greek lower numeral U+0375 - {"͵", "", errContext}, - {"͵a", "", errContext}, - {"α͵", "", errContext}, - {"͵α", "͵α", nil}, - {"α͵α", "α͵α", nil}, - {"͵͵α", "͵͵α", nil}, // The numeric sign is itself Greek. - {"α͵͵α", "α͵͵α", nil}, - {"α͵͵", "", errContext}, - {"α͵͵a", "", errContext}, - }}, - - {"Context Rule 5+6", NewFreeform(), []testCase{ - // Rule 5+6: Hebrew preceding - // U+05f3: Geresh - {"׳", "", errContext}, - {"׳ה", "", errContext}, - {"a׳b", "", errContext}, - {"ש׳", "ש׳", nil}, // U+05e9 U+05f3 - {"ש׳׳׳", "ש׳׳׳", nil}, // U+05e9 U+05f3 - - // U+05f4: Gershayim - {"״", "", errContext}, - {"״ה", "", errContext}, - {"a״b", "", errContext}, - {"ש״", "ש״", nil}, // U+05e9 U+05f4 - {"ש״״״", "ש״״״", nil}, // U+05e9 U+05f4 - {"aש״״״", "aש״״״", nil}, // U+05e9 U+05f4 - }}, - - {"Context Rule 7", NewFreeform(), []testCase{ - // Rule 7: Katakana middle Dot - {"・", "", errContext}, - {"abc・", "", errContext}, - {"・def", "", errContext}, - {"abc・def", "", errContext}, - {"aヅc・def", "aヅc・def", nil}, - {"abc・dぶf", "abc・dぶf", nil}, - {"⺐bc・def", "⺐bc・def", nil}, - }}, - - {"Context Rule 8+9", NewFreeform(), []testCase{ - // Rule 8+9: Arabic Indic Digit - {"١٢٣٤٥۶", "", errContext}, - {"۱۲۳۴۵٦", "", errContext}, - {"١٢٣٤٥", "١٢٣٤٥", nil}, - {"۱۲۳۴۵", "۱۲۳۴۵", nil}, - }}, - - {"Nickname", Nickname, []testCase{ - {" Swan of Avon ", "Swan of Avon", nil}, - {"", "", errEmptyString}, - {" ", "", errEmptyString}, - {" ", "", errEmptyString}, - {"a\u00A0a\u1680a\u2000a\u2001a\u2002a\u2003a\u2004a\u2005a\u2006a\u2007a\u2008a\u2009a\u200Aa\u202Fa\u205Fa\u3000a", "a a a a a a a a a a a a a a a a a", nil}, - {"Foo", "Foo", nil}, - {"foo", "foo", nil}, - {"Foo Bar", "Foo Bar", nil}, - {"foo bar", "foo bar", nil}, - {"\u03A3", "\u03A3", nil}, - {"\u03C3", "\u03C3", nil}, - // Greek final sigma is left as is (do not fold!) - {"\u03C2", "\u03C2", nil}, - {"\u265A", "♚", nil}, - {"Richard \u2163", "Richard IV", nil}, - {"\u212B", "Å", nil}, - {"\uFB00", "ff", nil}, // because of NFKC - {"שa", "שa", nil}, // no bidi rule - {"동일조건변경허락", "동일조건변경허락", nil}, - }}, - {"OpaqueString", OpaqueString, []testCase{ - {" Swan of Avon ", " Swan of Avon ", nil}, - {"", "", errEmptyString}, - {" ", " ", nil}, - {" ", " ", nil}, - {"a\u00A0a\u1680a\u2000a\u2001a\u2002a\u2003a\u2004a\u2005a\u2006a\u2007a\u2008a\u2009a\u200Aa\u202Fa\u205Fa\u3000a", "a a a a a a a a a a a a a a a a a", nil}, - {"Foo", "Foo", nil}, - {"foo", "foo", nil}, - {"Foo Bar", "Foo Bar", nil}, - {"foo bar", "foo bar", nil}, - {"\u03C3", "\u03C3", nil}, - {"Richard \u2163", "Richard \u2163", nil}, - {"\u212B", "Å", nil}, - {"Jack of \u2666s", "Jack of \u2666s", nil}, - {"my cat is a \u0009by", "", errDisallowedRune}, - {"שa", "שa", nil}, // no bidi rule - }}, - {"UsernameCaseMapped", UsernameCaseMapped, []testCase{ - // TODO: Should this work? - // {UsernameCaseMapped, "", "", errDisallowedRune}, - {"juliet@example.com", "juliet@example.com", nil}, - {"fussball", "fussball", nil}, - {"fu\u00DFball", "fu\u00DFball", nil}, - {"\u03C0", "\u03C0", nil}, - {"\u03A3", "\u03C3", nil}, - {"\u03C3", "\u03C3", nil}, - // Greek final sigma is left as is (do not fold!) - {"\u03C2", "\u03C2", nil}, - {"\u0049", "\u0069", nil}, - {"\u0049", "\u0069", nil}, - {"\u03D2", "", errDisallowedRune}, - {"\u03B0", "\u03B0", nil}, - {"foo bar", "", errDisallowedRune}, - {"♚", "", bidirule.ErrInvalid}, - {"\u007E", "~", nil}, - {"a", "a", nil}, - {"!", "!", nil}, - {"²", "", bidirule.ErrInvalid}, - {"\t", "", errDisallowedRune}, - {"\n", "", errDisallowedRune}, - {"\u26D6", "", bidirule.ErrInvalid}, - {"\u26FF", "", bidirule.ErrInvalid}, - {"\uFB00", "", errDisallowedRune}, - {"\u1680", "", bidirule.ErrInvalid}, - {" ", "", errDisallowedRune}, - {" ", "", errDisallowedRune}, - {"\u01C5", "", errDisallowedRune}, - {"\u16EE", "", errDisallowedRune}, // Nl RUNIC ARLAUG SYMBOL - {"\u0488", "", bidirule.ErrInvalid}, // Me COMBINING CYRILLIC HUNDRED THOUSANDS SIGN - {"\u212B", "\u00e5", nil}, // Angstrom sign, NFC -> U+00E5 - {"A\u030A", "å", nil}, // A + ring - {"\u00C5", "å", nil}, // A with ring - {"\u00E7", "ç", nil}, // c cedille - {"\u0063\u0327", "ç", nil}, // c + cedille - {"\u0158", "ř", nil}, - {"\u0052\u030C", "ř", nil}, - - {"\u1E61", "\u1E61", nil}, // LATIN SMALL LETTER S WITH DOT ABOVE - - // Confusable characters ARE allowed and should NOT be mapped. - {"\u0410", "\u0430", nil}, // CYRILLIC CAPITAL LETTER A - - // Full width should be mapped to the canonical decomposition. - {"AB", "ab", nil}, - {"שc", "", bidirule.ErrInvalid}, // bidi rule - - }}, - {"UsernameCasePreserved", UsernameCasePreserved, []testCase{ - {"ABC", "ABC", nil}, - {"AB", "AB", nil}, - {"שc", "", bidirule.ErrInvalid}, // bidi rule - {"\uFB00", "", errDisallowedRune}, - {"\u212B", "\u00c5", nil}, // Angstrom sign, NFC -> U+00E5 - {"ẛ", "", errDisallowedRune}, // LATIN SMALL LETTER LONG S WITH DOT ABOVE - }}, -} diff --git a/vendor/golang.org/x/text/secure/precis/enforce9.0.0_test.go b/vendor/golang.org/x/text/secure/precis/enforce9.0.0_test.go deleted file mode 100644 index 298c8a9b..00000000 --- a/vendor/golang.org/x/text/secure/precis/enforce9.0.0_test.go +++ /dev/null @@ -1,244 +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. - -// +build !go1.10 - -package precis - -import ( - "golang.org/x/text/secure/bidirule" -) - -var enforceTestCases = []struct { - name string - p *Profile - cases []testCase -}{ - {"Basic", NewFreeform(), []testCase{ - {"e\u0301\u031f", "\u00e9\u031f", nil}, // normalize - }}, - - {"Context Rule 1", NewFreeform(), []testCase{ - // Rule 1: zero-width non-joiner (U+200C) - // From RFC: - // False - // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True; - // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C - // (Joining_Type:T)*(Joining_Type:{R,D})) Then True; - // - // Example runes for different joining types: - // Join L: U+A872; PHAGS-PA SUPERFIXED LETTER RA - // Join D: U+062C; HAH WITH DOT BELOW - // Join T: U+0610; ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM - // Join R: U+0627; ALEF - // Virama: U+0A4D; GURMUKHI SIGN VIRAMA - // Virama and Join T: U+0ACD; GUJARATI SIGN VIRAMA - {"\u200c", "", errContext}, - {"\u200ca", "", errContext}, - {"a\u200c", "", errContext}, - {"\u200c\u0627", "", errContext}, // missing JoinStart - {"\u062c\u200c", "", errContext}, // missing JoinEnd - {"\u0610\u200c\u0610\u0627", "", errContext}, // missing JoinStart - {"\u062c\u0610\u200c\u0610", "", errContext}, // missing JoinEnd - - // Variants of: D T* U+200c T* R - {"\u062c\u200c\u0627", "\u062c\u200c\u0627", nil}, - {"\u062c\u0610\u200c\u0610\u0627", "\u062c\u0610\u200c\u0610\u0627", nil}, - {"\u062c\u0610\u0610\u200c\u0610\u0610\u0627", "\u062c\u0610\u0610\u200c\u0610\u0610\u0627", nil}, - {"\u062c\u0610\u200c\u0627", "\u062c\u0610\u200c\u0627", nil}, - {"\u062c\u200c\u0610\u0627", "\u062c\u200c\u0610\u0627", nil}, - - // Variants of: L T* U+200c T* D - {"\ua872\u200c\u062c", "\ua872\u200c\u062c", nil}, - {"\ua872\u0610\u200c\u0610\u062c", "\ua872\u0610\u200c\u0610\u062c", nil}, - {"\ua872\u0610\u0610\u200c\u0610\u0610\u062c", "\ua872\u0610\u0610\u200c\u0610\u0610\u062c", nil}, - {"\ua872\u0610\u200c\u062c", "\ua872\u0610\u200c\u062c", nil}, - {"\ua872\u200c\u0610\u062c", "\ua872\u200c\u0610\u062c", nil}, - - // Virama - {"\u0a4d\u200c", "\u0a4d\u200c", nil}, - {"\ua872\u0a4d\u200c", "\ua872\u0a4d\u200c", nil}, - {"\ua872\u0a4d\u0610\u200c", "", errContext}, - {"\ua872\u0a4d\u0610\u200c", "", errContext}, - - {"\u0acd\u200c", "\u0acd\u200c", nil}, - {"\ua872\u0acd\u200c", "\ua872\u0acd\u200c", nil}, - {"\ua872\u0acd\u0610\u200c", "", errContext}, - {"\ua872\u0acd\u0610\u200c", "", errContext}, - - // Using Virama as join T - {"\ua872\u0acd\u200c\u062c", "\ua872\u0acd\u200c\u062c", nil}, - {"\ua872\u200c\u0acd\u062c", "\ua872\u200c\u0acd\u062c", nil}, - }}, - - {"Context Rule 2", NewFreeform(), []testCase{ - // Rule 2: zero-width joiner (U+200D) - {"\u200d", "", errContext}, - {"\u200da", "", errContext}, - {"a\u200d", "", errContext}, - - {"\u0a4d\u200d", "\u0a4d\u200d", nil}, - {"\ua872\u0a4d\u200d", "\ua872\u0a4d\u200d", nil}, - {"\u0a4da\u200d", "", errContext}, - }}, - - {"Context Rule 3", NewFreeform(), []testCase{ - // Rule 3: middle dot - {"·", "", errContext}, - {"l·", "", errContext}, - {"·l", "", errContext}, - {"a·", "", errContext}, - {"l·a", "", errContext}, - {"a·a", "", errContext}, - {"l·l", "l·l", nil}, - {"al·la", "al·la", nil}, - }}, - - {"Context Rule 4", NewFreeform(), []testCase{ - // Rule 4: Greek lower numeral U+0375 - {"͵", "", errContext}, - {"͵a", "", errContext}, - {"α͵", "", errContext}, - {"͵α", "͵α", nil}, - {"α͵α", "α͵α", nil}, - {"͵͵α", "͵͵α", nil}, // The numeric sign is itself Greek. - {"α͵͵α", "α͵͵α", nil}, - {"α͵͵", "", errContext}, - {"α͵͵a", "", errContext}, - }}, - - {"Context Rule 5+6", NewFreeform(), []testCase{ - // Rule 5+6: Hebrew preceding - // U+05f3: Geresh - {"׳", "", errContext}, - {"׳ה", "", errContext}, - {"a׳b", "", errContext}, - {"ש׳", "ש׳", nil}, // U+05e9 U+05f3 - {"ש׳׳׳", "ש׳׳׳", nil}, // U+05e9 U+05f3 - - // U+05f4: Gershayim - {"״", "", errContext}, - {"״ה", "", errContext}, - {"a״b", "", errContext}, - {"ש״", "ש״", nil}, // U+05e9 U+05f4 - {"ש״״״", "ש״״״", nil}, // U+05e9 U+05f4 - {"aש״״״", "aש״״״", nil}, // U+05e9 U+05f4 - }}, - - {"Context Rule 7", NewFreeform(), []testCase{ - // Rule 7: Katakana middle Dot - {"・", "", errContext}, - {"abc・", "", errContext}, - {"・def", "", errContext}, - {"abc・def", "", errContext}, - {"aヅc・def", "aヅc・def", nil}, - {"abc・dぶf", "abc・dぶf", nil}, - {"⺐bc・def", "⺐bc・def", nil}, - }}, - - {"Context Rule 8+9", NewFreeform(), []testCase{ - // Rule 8+9: Arabic Indic Digit - {"١٢٣٤٥۶", "", errContext}, - {"۱۲۳۴۵٦", "", errContext}, - {"١٢٣٤٥", "١٢٣٤٥", nil}, - {"۱۲۳۴۵", "۱۲۳۴۵", nil}, - }}, - - {"Nickname", Nickname, []testCase{ - {" Swan of Avon ", "Swan of Avon", nil}, - {"", "", errEmptyString}, - {" ", "", errEmptyString}, - {" ", "", errEmptyString}, - {"a\u00A0a\u1680a\u2000a\u2001a\u2002a\u2003a\u2004a\u2005a\u2006a\u2007a\u2008a\u2009a\u200Aa\u202Fa\u205Fa\u3000a", "a a a a a a a a a a a a a a a a a", nil}, - {"Foo", "Foo", nil}, - {"foo", "foo", nil}, - {"Foo Bar", "Foo Bar", nil}, - {"foo bar", "foo bar", nil}, - {"\u03A3", "\u03A3", nil}, - {"\u03C3", "\u03C3", nil}, - // Greek final sigma is left as is (do not fold!) - {"\u03C2", "\u03C2", nil}, - {"\u265A", "♚", nil}, - {"Richard \u2163", "Richard IV", nil}, - {"\u212B", "Å", nil}, - {"\uFB00", "ff", nil}, // because of NFKC - {"שa", "שa", nil}, // no bidi rule - {"동일조건변경허락", "동일조건변경허락", nil}, - }}, - {"OpaqueString", OpaqueString, []testCase{ - {" Swan of Avon ", " Swan of Avon ", nil}, - {"", "", errEmptyString}, - {" ", " ", nil}, - {" ", " ", nil}, - {"a\u00A0a\u1680a\u2000a\u2001a\u2002a\u2003a\u2004a\u2005a\u2006a\u2007a\u2008a\u2009a\u200Aa\u202Fa\u205Fa\u3000a", "a a a a a a a a a a a a a a a a a", nil}, - {"Foo", "Foo", nil}, - {"foo", "foo", nil}, - {"Foo Bar", "Foo Bar", nil}, - {"foo bar", "foo bar", nil}, - {"\u03C3", "\u03C3", nil}, - {"Richard \u2163", "Richard \u2163", nil}, - {"\u212B", "Å", nil}, - {"Jack of \u2666s", "Jack of \u2666s", nil}, - {"my cat is a \u0009by", "", errDisallowedRune}, - {"שa", "שa", nil}, // no bidi rule - }}, - {"UsernameCaseMapped", UsernameCaseMapped, []testCase{ - // TODO: Should this work? - // {UsernameCaseMapped, "", "", errDisallowedRune}, - {"juliet@example.com", "juliet@example.com", nil}, - {"fussball", "fussball", nil}, - {"fu\u00DFball", "fu\u00DFball", nil}, - {"\u03C0", "\u03C0", nil}, - {"\u03A3", "\u03C3", nil}, - {"\u03C3", "\u03C3", nil}, - // Greek final sigma is left as is (do not fold!) - {"\u03C2", "\u03C2", nil}, - {"\u0049", "\u0069", nil}, - {"\u0049", "\u0069", nil}, - {"\u03D2", "", errDisallowedRune}, - {"\u03B0", "\u03B0", nil}, - {"foo bar", "", errDisallowedRune}, - {"♚", "", errDisallowedRune}, - {"\u007E", "~", nil}, - {"a", "a", nil}, - {"!", "!", nil}, - {"²", "", errDisallowedRune}, - {"\t", "", errDisallowedRune}, - {"\n", "", errDisallowedRune}, - {"\u26D6", "", errDisallowedRune}, - {"\u26FF", "", errDisallowedRune}, - {"\uFB00", "", errDisallowedRune}, - {"\u1680", "", errDisallowedRune}, - {" ", "", errDisallowedRune}, - {" ", "", errDisallowedRune}, - {"\u01C5", "", errDisallowedRune}, - {"\u16EE", "", errDisallowedRune}, // Nl RUNIC ARLAUG SYMBOL - {"\u0488", "", errDisallowedRune}, // Me COMBINING CYRILLIC HUNDRED THOUSANDS SIGN - {"\u212B", "\u00e5", nil}, // Angstrom sign, NFC -> U+00E5 - {"A\u030A", "å", nil}, // A + ring - {"\u00C5", "å", nil}, // A with ring - {"\u00E7", "ç", nil}, // c cedille - {"\u0063\u0327", "ç", nil}, // c + cedille - {"\u0158", "ř", nil}, - {"\u0052\u030C", "ř", nil}, - - {"\u1E61", "\u1E61", nil}, // LATIN SMALL LETTER S WITH DOT ABOVE - - // Confusable characters ARE allowed and should NOT be mapped. - {"\u0410", "\u0430", nil}, // CYRILLIC CAPITAL LETTER A - - // Full width should be mapped to the canonical decomposition. - {"AB", "ab", nil}, - {"שc", "", bidirule.ErrInvalid}, // bidi rule - - }}, - {"UsernameCasePreserved", UsernameCasePreserved, []testCase{ - {"ABC", "ABC", nil}, - {"AB", "AB", nil}, - {"שc", "", bidirule.ErrInvalid}, // bidi rule - {"\uFB00", "", errDisallowedRune}, - {"\u212B", "\u00c5", nil}, // Angstrom sign, NFC -> U+00E5 - {"ẛ", "", errDisallowedRune}, // LATIN SMALL LETTER LONG S WITH DOT ABOVE - }}, -} diff --git a/vendor/golang.org/x/text/secure/precis/enforce_test.go b/vendor/golang.org/x/text/secure/precis/enforce_test.go deleted file mode 100644 index ac2aad2c..00000000 --- a/vendor/golang.org/x/text/secure/precis/enforce_test.go +++ /dev/null @@ -1,162 +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 precis - -import ( - "bytes" - "fmt" - "reflect" - "testing" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/transform" -) - -type testCase struct { - input string - output string - err error -} - -func doTests(t *testing.T, fn func(t *testing.T, p *Profile, tc testCase)) { - for _, g := range enforceTestCases { - for i, tc := range g.cases { - name := fmt.Sprintf("%s:%d:%+q", g.name, i, tc.input) - testtext.Run(t, name, func(t *testing.T) { - fn(t, g.p, tc) - }) - } - } -} - -func TestString(t *testing.T) { - doTests(t, func(t *testing.T, p *Profile, tc testCase) { - if e, err := p.String(tc.input); tc.err != err || e != tc.output { - t.Errorf("got %+q (err: %v); want %+q (err: %v)", e, err, tc.output, tc.err) - } - }) -} - -func TestBytes(t *testing.T) { - doTests(t, func(t *testing.T, p *Profile, tc testCase) { - if e, err := p.Bytes([]byte(tc.input)); tc.err != err || string(e) != tc.output { - t.Errorf("got %+q (err: %v); want %+q (err: %v)", string(e), err, tc.output, tc.err) - } - }) - - t.Run("Copy", func(t *testing.T) { - // Test that calling Bytes with something that doesn't transform returns a - // copy. - orig := []byte("hello") - b, _ := NewFreeform().Bytes(orig) - if reflect.ValueOf(b).Pointer() == reflect.ValueOf(orig).Pointer() { - t.Error("original and result are the same slice; should be a copy") - } - }) -} - -func TestAppend(t *testing.T) { - doTests(t, func(t *testing.T, p *Profile, tc testCase) { - if e, err := p.Append(nil, []byte(tc.input)); tc.err != err || string(e) != tc.output { - t.Errorf("got %+q (err: %v); want %+q (err: %v)", string(e), err, tc.output, tc.err) - } - }) -} - -func TestStringMallocs(t *testing.T) { - if n := testtext.AllocsPerRun(100, func() { UsernameCaseMapped.String("helloworld") }); n > 0 { - // TODO: reduce this to 0. - t.Skipf("got %f allocs, want 0", n) - } -} - -func TestAppendMallocs(t *testing.T) { - str := []byte("helloworld") - out := make([]byte, 0, len(str)) - if n := testtext.AllocsPerRun(100, func() { UsernameCaseMapped.Append(out, str) }); n > 0 { - t.Errorf("got %f allocs, want 0", n) - } -} - -func TestTransformMallocs(t *testing.T) { - str := []byte("helloworld") - out := make([]byte, 0, len(str)) - tr := UsernameCaseMapped.NewTransformer() - if n := testtext.AllocsPerRun(100, func() { - tr.Reset() - tr.Transform(out, str, true) - }); n > 0 { - t.Errorf("got %f allocs, want 0", n) - } -} - -func min(a, b int) int { - if a < b { - return a - } - return b -} - -// TestTransformerShortBuffers tests that the precis.Transformer implements the -// spirit, not just the letter (the method signatures), of the -// transform.Transformer interface. -// -// In particular, it tests that, if one or both of the dst or src buffers are -// short, so that multiple Transform calls are required to complete the overall -// transformation, the end result is identical to one Transform call with -// sufficiently long buffers. -func TestTransformerShortBuffers(t *testing.T) { - srcUnit := []byte("a\u0300cce\u0301nts") // NFD normalization form. - wantUnit := []byte("àccénts") // NFC normalization form. - src := bytes.Repeat(srcUnit, 16) - want := bytes.Repeat(wantUnit, 16) - const long = 4096 - dst := make([]byte, long) - - // 5, 7, 9, 11, 13, 16 and 17 are all pair-wise co-prime, which means that - // slicing the dst and src buffers into 5, 7, 13 and 17 byte chunks will - // fall at different places inside the repeated srcUnit's and wantUnit's. - if len(srcUnit) != 11 || len(wantUnit) != 9 || len(src) > long || len(want) > long { - t.Fatal("inconsistent lengths") - } - - tr := NewFreeform().NewTransformer() - for _, deltaD := range []int{5, 7, 13, 17, long} { - loop: - for _, deltaS := range []int{5, 7, 13, 17, long} { - tr.Reset() - d0 := 0 - s0 := 0 - for { - d1 := min(len(dst), d0+deltaD) - s1 := min(len(src), s0+deltaS) - nDst, nSrc, err := tr.Transform(dst[d0:d1:d1], src[s0:s1:s1], s1 == len(src)) - d0 += nDst - s0 += nSrc - if err == nil { - break - } - if err == transform.ErrShortDst || err == transform.ErrShortSrc { - continue - } - t.Errorf("deltaD=%d, deltaS=%d: %v", deltaD, deltaS, err) - continue loop - } - if s0 != len(src) { - t.Errorf("deltaD=%d, deltaS=%d: s0: got %d, want %d", deltaD, deltaS, s0, len(src)) - continue - } - if d0 != len(want) { - t.Errorf("deltaD=%d, deltaS=%d: d0: got %d, want %d", deltaD, deltaS, d0, len(want)) - continue - } - got := dst[:d0] - if !bytes.Equal(got, want) { - t.Errorf("deltaD=%d, deltaS=%d:\ngot %q\nwant %q", deltaD, deltaS, got, want) - continue - } - } - } -} diff --git a/vendor/golang.org/x/text/secure/precis/gen.go b/vendor/golang.org/x/text/secure/precis/gen.go deleted file mode 100644 index 946acbaa..00000000 --- a/vendor/golang.org/x/text/secure/precis/gen.go +++ /dev/null @@ -1,310 +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. - -// Unicode table generator. -// Data read from the web. - -// +build ignore - -package main - -import ( - "flag" - "log" - "unicode" - "unicode/utf8" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/triegen" - "golang.org/x/text/internal/ucd" - "golang.org/x/text/unicode/norm" - "golang.org/x/text/unicode/rangetable" -) - -var outputFile = flag.String("output", "tables.go", "output file for generated tables; default tables.go") - -var assigned, disallowedRunes *unicode.RangeTable - -var runeCategory = map[rune]category{} - -var overrides = map[category]category{ - viramaModifier: viramaJoinT, - greek: greekJoinT, - hebrew: hebrewJoinT, -} - -func setCategory(r rune, cat category) { - if c, ok := runeCategory[r]; ok { - if override, ok := overrides[c]; cat == joiningT && ok { - cat = override - } else { - log.Fatalf("%U: multiple categories for rune (%v and %v)", r, c, cat) - } - } - runeCategory[r] = cat -} - -func init() { - if numCategories > 1<<propShift { - log.Fatalf("Number of categories is %d; may at most be %d", numCategories, 1<<propShift) - } -} - -func main() { - gen.Init() - - // Load data - runes := []rune{} - // PrecisIgnorableProperties: https://tools.ietf.org/html/rfc7564#section-9.13 - ucd.Parse(gen.OpenUCDFile("DerivedCoreProperties.txt"), func(p *ucd.Parser) { - if p.String(1) == "Default_Ignorable_Code_Point" { - runes = append(runes, p.Rune(0)) - } - }) - ucd.Parse(gen.OpenUCDFile("PropList.txt"), func(p *ucd.Parser) { - switch p.String(1) { - case "Noncharacter_Code_Point": - runes = append(runes, p.Rune(0)) - } - }) - // OldHangulJamo: https://tools.ietf.org/html/rfc5892#section-2.9 - ucd.Parse(gen.OpenUCDFile("HangulSyllableType.txt"), func(p *ucd.Parser) { - switch p.String(1) { - case "L", "V", "T": - runes = append(runes, p.Rune(0)) - } - }) - - disallowedRunes = rangetable.New(runes...) - assigned = rangetable.Assigned(unicode.Version) - - // Load category data. - runeCategory['l'] = latinSmallL - ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { - const cccVirama = 9 - if p.Int(ucd.CanonicalCombiningClass) == cccVirama { - setCategory(p.Rune(0), viramaModifier) - } - }) - ucd.Parse(gen.OpenUCDFile("Scripts.txt"), func(p *ucd.Parser) { - switch p.String(1) { - case "Greek": - setCategory(p.Rune(0), greek) - case "Hebrew": - setCategory(p.Rune(0), hebrew) - case "Hiragana", "Katakana", "Han": - setCategory(p.Rune(0), japanese) - } - }) - - // Set the rule categories associated with exceptions. This overrides any - // previously set categories. The original categories are manually - // reintroduced in the categoryTransitions table. - for r, e := range exceptions { - if e.cat != 0 { - runeCategory[r] = e.cat - } - } - cat := map[string]category{ - "L": joiningL, - "D": joiningD, - "T": joiningT, - - "R": joiningR, - } - ucd.Parse(gen.OpenUCDFile("extracted/DerivedJoiningType.txt"), func(p *ucd.Parser) { - switch v := p.String(1); v { - case "L", "D", "T", "R": - setCategory(p.Rune(0), cat[v]) - } - }) - - writeTables() - gen.Repackage("gen_trieval.go", "trieval.go", "precis") -} - -type exception struct { - prop property - cat category -} - -func init() { - // Programmatically add the Arabic and Indic digits to the exceptions map. - // See comment in the exceptions map below why these are marked disallowed. - for i := rune(0); i <= 9; i++ { - exceptions[0x0660+i] = exception{ - prop: disallowed, - cat: arabicIndicDigit, - } - exceptions[0x06F0+i] = exception{ - prop: disallowed, - cat: extendedArabicIndicDigit, - } - } -} - -// The Exceptions class as defined in RFC 5892 -// https://tools.ietf.org/html/rfc5892#section-2.6 -var exceptions = map[rune]exception{ - 0x00DF: {prop: pValid}, - 0x03C2: {prop: pValid}, - 0x06FD: {prop: pValid}, - 0x06FE: {prop: pValid}, - 0x0F0B: {prop: pValid}, - 0x3007: {prop: pValid}, - - // ContextO|J rules are marked as disallowed, taking a "guilty until proven - // innocent" approach. The main reason for this is that the check for - // whether a context rule should be applied can be moved to the logic for - // handing disallowed runes, taken it off the common path. The exception to - // this rule is for katakanaMiddleDot, as the rule logic is handled without - // using a rule function. - - // ContextJ (Join control) - 0x200C: {prop: disallowed, cat: zeroWidthNonJoiner}, - 0x200D: {prop: disallowed, cat: zeroWidthJoiner}, - - // ContextO - 0x00B7: {prop: disallowed, cat: middleDot}, - 0x0375: {prop: disallowed, cat: greekLowerNumeralSign}, - 0x05F3: {prop: disallowed, cat: hebrewPreceding}, // punctuation Geresh - 0x05F4: {prop: disallowed, cat: hebrewPreceding}, // punctuation Gershayim - 0x30FB: {prop: pValid, cat: katakanaMiddleDot}, - - // These are officially ContextO, but the implementation does not require - // special treatment of these, so we simply mark them as valid. - 0x0660: {prop: pValid}, - 0x0661: {prop: pValid}, - 0x0662: {prop: pValid}, - 0x0663: {prop: pValid}, - 0x0664: {prop: pValid}, - 0x0665: {prop: pValid}, - 0x0666: {prop: pValid}, - 0x0667: {prop: pValid}, - 0x0668: {prop: pValid}, - 0x0669: {prop: pValid}, - 0x06F0: {prop: pValid}, - 0x06F1: {prop: pValid}, - 0x06F2: {prop: pValid}, - 0x06F3: {prop: pValid}, - 0x06F4: {prop: pValid}, - 0x06F5: {prop: pValid}, - 0x06F6: {prop: pValid}, - 0x06F7: {prop: pValid}, - 0x06F8: {prop: pValid}, - 0x06F9: {prop: pValid}, - - 0x0640: {prop: disallowed}, - 0x07FA: {prop: disallowed}, - 0x302E: {prop: disallowed}, - 0x302F: {prop: disallowed}, - 0x3031: {prop: disallowed}, - 0x3032: {prop: disallowed}, - 0x3033: {prop: disallowed}, - 0x3034: {prop: disallowed}, - 0x3035: {prop: disallowed}, - 0x303B: {prop: disallowed}, -} - -// LetterDigits: https://tools.ietf.org/html/rfc5892#section-2.1 -// r in {Ll, Lu, Lo, Nd, Lm, Mn, Mc}. -func isLetterDigits(r rune) bool { - return unicode.In(r, - unicode.Ll, unicode.Lu, unicode.Lm, unicode.Lo, // Letters - unicode.Mn, unicode.Mc, // Modifiers - unicode.Nd, // Digits - ) -} - -func isIdDisAndFreePVal(r rune) bool { - return unicode.In(r, - // OtherLetterDigits: https://tools.ietf.org/html/rfc7564#section-9.18 - // r in in {Lt, Nl, No, Me} - unicode.Lt, unicode.Nl, unicode.No, // Other letters / numbers - unicode.Me, // Modifiers - - // Spaces: https://tools.ietf.org/html/rfc7564#section-9.14 - // r in in {Zs} - unicode.Zs, - - // Symbols: https://tools.ietf.org/html/rfc7564#section-9.15 - // r in {Sm, Sc, Sk, So} - unicode.Sm, unicode.Sc, unicode.Sk, unicode.So, - - // Punctuation: https://tools.ietf.org/html/rfc7564#section-9.16 - // r in {Pc, Pd, Ps, Pe, Pi, Pf, Po} - unicode.Pc, unicode.Pd, unicode.Ps, unicode.Pe, - unicode.Pi, unicode.Pf, unicode.Po, - ) -} - -// HasCompat: https://tools.ietf.org/html/rfc7564#section-9.17 -func hasCompat(r rune) bool { - return !norm.NFKC.IsNormalString(string(r)) -} - -// From https://tools.ietf.org/html/rfc5892: -// -// If .cp. .in. Exceptions Then Exceptions(cp); -// Else If .cp. .in. BackwardCompatible Then BackwardCompatible(cp); -// Else If .cp. .in. Unassigned Then UNASSIGNED; -// Else If .cp. .in. ASCII7 Then PVALID; -// Else If .cp. .in. JoinControl Then CONTEXTJ; -// Else If .cp. .in. OldHangulJamo Then DISALLOWED; -// Else If .cp. .in. PrecisIgnorableProperties Then DISALLOWED; -// Else If .cp. .in. Controls Then DISALLOWED; -// Else If .cp. .in. HasCompat Then ID_DIS or FREE_PVAL; -// Else If .cp. .in. LetterDigits Then PVALID; -// Else If .cp. .in. OtherLetterDigits Then ID_DIS or FREE_PVAL; -// Else If .cp. .in. Spaces Then ID_DIS or FREE_PVAL; -// Else If .cp. .in. Symbols Then ID_DIS or FREE_PVAL; -// Else If .cp. .in. Punctuation Then ID_DIS or FREE_PVAL; -// Else DISALLOWED; - -func writeTables() { - propTrie := triegen.NewTrie("derivedProperties") - w := gen.NewCodeWriter() - defer w.WriteVersionedGoFile(*outputFile, "precis") - gen.WriteUnicodeVersion(w) - - // Iterate over all the runes... - for i := rune(0); i < unicode.MaxRune; i++ { - r := rune(i) - - if !utf8.ValidRune(r) { - continue - } - - e, ok := exceptions[i] - p := e.prop - switch { - case ok: - case !unicode.In(r, assigned): - p = unassigned - case r >= 0x0021 && r <= 0x007e: // Is ASCII 7 - p = pValid - case unicode.In(r, disallowedRunes, unicode.Cc): - p = disallowed - case hasCompat(r): - p = idDisOrFreePVal - case isLetterDigits(r): - p = pValid - case isIdDisAndFreePVal(r): - p = idDisOrFreePVal - default: - p = disallowed - } - cat := runeCategory[r] - // Don't set category for runes that are disallowed. - if p == disallowed { - cat = exceptions[r].cat - } - propTrie.Insert(r, uint64(p)|uint64(cat)) - } - sz, err := propTrie.Gen(w) - if err != nil { - log.Fatal(err) - } - w.Size += sz -} diff --git a/vendor/golang.org/x/text/secure/precis/gen_trieval.go b/vendor/golang.org/x/text/secure/precis/gen_trieval.go deleted file mode 100644 index 308510c9..00000000 --- a/vendor/golang.org/x/text/secure/precis/gen_trieval.go +++ /dev/null @@ -1,68 +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. - -// +build ignore - -package main - -// entry is the entry of a trie table -// 7..6 property (unassigned, disallowed, maybe, valid) -// 5..0 category -type entry uint8 - -const ( - propShift = 6 - propMask = 0xc0 - catMask = 0x3f -) - -func (e entry) property() property { return property(e & propMask) } -func (e entry) category() category { return category(e & catMask) } - -type property uint8 - -// The order of these constants matter. A Profile may consider runes to be -// allowed either from pValid or idDisOrFreePVal. -const ( - unassigned property = iota << propShift - disallowed - idDisOrFreePVal // disallowed for Identifier, pValid for FreeForm - pValid -) - -// compute permutations of all properties and specialCategories. -type category uint8 - -const ( - other category = iota - - // Special rune types - joiningL - joiningD - joiningT - joiningR - viramaModifier - viramaJoinT // Virama + JoiningT - latinSmallL // U+006c - greek - greekJoinT // Greek + JoiningT - hebrew - hebrewJoinT // Hebrew + JoiningT - japanese // hirigana, katakana, han - - // Special rune types associated with contextual rules defined in - // https://tools.ietf.org/html/rfc5892#appendix-A. - // ContextO - zeroWidthNonJoiner // rule 1 - zeroWidthJoiner // rule 2 - // ContextJ - middleDot // rule 3 - greekLowerNumeralSign // rule 4 - hebrewPreceding // rule 5 and 6 - katakanaMiddleDot // rule 7 - arabicIndicDigit // rule 8 - extendedArabicIndicDigit // rule 9 - - numCategories -) diff --git a/vendor/golang.org/x/text/secure/precis/nickname.go b/vendor/golang.org/x/text/secure/precis/nickname.go deleted file mode 100644 index 11e0ccbb..00000000 --- a/vendor/golang.org/x/text/secure/precis/nickname.go +++ /dev/null @@ -1,72 +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 precis - -import ( - "unicode" - "unicode/utf8" - - "golang.org/x/text/transform" -) - -type nickAdditionalMapping struct { - // TODO: This transformer needs to be stateless somehow… - notStart bool - prevSpace bool -} - -func (t *nickAdditionalMapping) Reset() { - t.prevSpace = false - t.notStart = false -} - -func (t *nickAdditionalMapping) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - // RFC 8266 §2.1. Rules - // - // 2. Additional Mapping Rule: The additional mapping rule consists of - // the following sub-rules. - // - // a. Map any instances of non-ASCII space to SPACE (U+0020); a - // non-ASCII space is any Unicode code point having a general - // category of "Zs", naturally with the exception of SPACE - // (U+0020). (The inclusion of only ASCII space prevents - // confusion with various non-ASCII space code points, many of - // which are difficult to reproduce across different input - // methods.) - // - // b. Remove any instances of the ASCII space character at the - // beginning or end of a nickname (e.g., "stpeter " is mapped to - // "stpeter"). - // - // c. Map interior sequences of more than one ASCII space character - // to a single ASCII space character (e.g., "St Peter" is - // mapped to "St Peter"). - for nSrc < len(src) { - r, size := utf8.DecodeRune(src[nSrc:]) - if size == 0 { // Incomplete UTF-8 encoding - if !atEOF { - return nDst, nSrc, transform.ErrShortSrc - } - size = 1 - } - if unicode.Is(unicode.Zs, r) { - t.prevSpace = true - } else { - if t.prevSpace && t.notStart { - dst[nDst] = ' ' - nDst += 1 - } - if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { - nDst += size - return nDst, nSrc, transform.ErrShortDst - } - nDst += size - t.prevSpace = false - t.notStart = true - } - nSrc += size - } - return nDst, nSrc, nil -} diff --git a/vendor/golang.org/x/text/secure/precis/options.go b/vendor/golang.org/x/text/secure/precis/options.go deleted file mode 100644 index 26143db7..00000000 --- a/vendor/golang.org/x/text/secure/precis/options.go +++ /dev/null @@ -1,157 +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 precis - -import ( - "golang.org/x/text/cases" - "golang.org/x/text/language" - "golang.org/x/text/runes" - "golang.org/x/text/transform" - "golang.org/x/text/unicode/norm" -) - -// An Option is used to define the behavior and rules of a Profile. -type Option func(*options) - -type options struct { - // Preparation options - foldWidth bool - - // Enforcement options - asciiLower bool - cases transform.SpanningTransformer - disallow runes.Set - norm transform.SpanningTransformer - additional []func() transform.SpanningTransformer - width transform.SpanningTransformer - disallowEmpty bool - bidiRule bool - repeat bool - - // Comparison options - ignorecase bool -} - -func getOpts(o ...Option) (res options) { - for _, f := range o { - f(&res) - } - // Using a SpanningTransformer, instead of norm.Form prevents an allocation - // down the road. - if res.norm == nil { - res.norm = norm.NFC - } - return -} - -var ( - // The IgnoreCase option causes the profile to perform a case insensitive - // comparison during the PRECIS comparison step. - IgnoreCase Option = ignoreCase - - // The FoldWidth option causes the profile to map non-canonical wide and - // narrow variants to their decomposition mapping. This is useful for - // profiles that are based on the identifier class which would otherwise - // disallow such characters. - FoldWidth Option = foldWidth - - // The DisallowEmpty option causes the enforcement step to return an error if - // the resulting string would be empty. - DisallowEmpty Option = disallowEmpty - - // The BidiRule option causes the Bidi Rule defined in RFC 5893 to be - // applied. - BidiRule Option = bidiRule -) - -var ( - ignoreCase = func(o *options) { - o.ignorecase = true - } - foldWidth = func(o *options) { - o.foldWidth = true - } - disallowEmpty = func(o *options) { - o.disallowEmpty = true - } - bidiRule = func(o *options) { - o.bidiRule = true - } - repeat = func(o *options) { - o.repeat = true - } -) - -// TODO: move this logic to package transform - -type spanWrap struct{ transform.Transformer } - -func (s spanWrap) Span(src []byte, atEOF bool) (n int, err error) { - return 0, transform.ErrEndOfSpan -} - -// TODO: allow different types? For instance: -// func() transform.Transformer -// func() transform.SpanningTransformer -// func([]byte) bool // validation only -// -// Also, would be great if we could detect if a transformer is reentrant. - -// The AdditionalMapping option defines the additional mapping rule for the -// Profile by applying Transformer's in sequence. -func AdditionalMapping(t ...func() transform.Transformer) Option { - return func(o *options) { - for _, f := range t { - sf := func() transform.SpanningTransformer { - return f().(transform.SpanningTransformer) - } - if _, ok := f().(transform.SpanningTransformer); !ok { - sf = func() transform.SpanningTransformer { - return spanWrap{f()} - } - } - o.additional = append(o.additional, sf) - } - } -} - -// The Norm option defines a Profile's normalization rule. Defaults to NFC. -func Norm(f norm.Form) Option { - return func(o *options) { - o.norm = f - } -} - -// The FoldCase option defines a Profile's case mapping rule. Options can be -// provided to determine the type of case folding used. -func FoldCase(opts ...cases.Option) Option { - return func(o *options) { - o.asciiLower = true - o.cases = cases.Fold(opts...) - } -} - -// The LowerCase option defines a Profile's case mapping rule. Options can be -// provided to determine the type of case folding used. -func LowerCase(opts ...cases.Option) Option { - return func(o *options) { - o.asciiLower = true - if len(opts) == 0 { - o.cases = cases.Lower(language.Und, cases.HandleFinalSigma(false)) - return - } - - opts = append([]cases.Option{cases.HandleFinalSigma(false)}, opts...) - o.cases = cases.Lower(language.Und, opts...) - } -} - -// The Disallow option further restricts a Profile's allowed characters beyond -// what is disallowed by the underlying string class. -func Disallow(set runes.Set) Option { - return func(o *options) { - o.disallow = set - } -} diff --git a/vendor/golang.org/x/text/secure/precis/profile.go b/vendor/golang.org/x/text/secure/precis/profile.go deleted file mode 100644 index 0419159b..00000000 --- a/vendor/golang.org/x/text/secure/precis/profile.go +++ /dev/null @@ -1,402 +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 precis - -import ( - "bytes" - "errors" - "unicode/utf8" - - "golang.org/x/text/cases" - "golang.org/x/text/language" - "golang.org/x/text/runes" - "golang.org/x/text/secure/bidirule" - "golang.org/x/text/transform" - "golang.org/x/text/width" -) - -var ( - errDisallowedRune = errors.New("precis: disallowed rune encountered") -) - -var dpTrie = newDerivedPropertiesTrie(0) - -// A Profile represents a set of rules for normalizing and validating strings in -// the PRECIS framework. -type Profile struct { - options - class *class -} - -// NewIdentifier creates a new PRECIS profile based on the Identifier string -// class. Profiles created from this class are suitable for use where safety is -// prioritized over expressiveness like network identifiers, user accounts, chat -// rooms, and file names. -func NewIdentifier(opts ...Option) *Profile { - return &Profile{ - options: getOpts(opts...), - class: identifier, - } -} - -// NewFreeform creates a new PRECIS profile based on the Freeform string class. -// Profiles created from this class are suitable for use where expressiveness is -// prioritized over safety like passwords, and display-elements such as -// nicknames in a chat room. -func NewFreeform(opts ...Option) *Profile { - return &Profile{ - options: getOpts(opts...), - class: freeform, - } -} - -// NewTransformer creates a new transform.Transformer that performs the PRECIS -// preparation and enforcement steps on the given UTF-8 encoded bytes. -func (p *Profile) NewTransformer() *Transformer { - var ts []transform.Transformer - - // These transforms are applied in the order defined in - // https://tools.ietf.org/html/rfc7564#section-7 - - // RFC 8266 §2.1: - // - // Implementation experience has shown that applying the rules for the - // Nickname profile is not an idempotent procedure for all code points. - // Therefore, an implementation SHOULD apply the rules repeatedly until - // the output string is stable; if the output string does not stabilize - // after reapplying the rules three (3) additional times after the first - // application, the implementation SHOULD terminate application of the - // rules and reject the input string as invalid. - // - // There is no known string that will change indefinitely, so repeat 4 times - // and rely on the Span method to keep things relatively performant. - r := 1 - if p.options.repeat { - r = 4 - } - for ; r > 0; r-- { - if p.options.foldWidth { - ts = append(ts, width.Fold) - } - - for _, f := range p.options.additional { - ts = append(ts, f()) - } - - if p.options.cases != nil { - ts = append(ts, p.options.cases) - } - - ts = append(ts, p.options.norm) - - if p.options.bidiRule { - ts = append(ts, bidirule.New()) - } - - ts = append(ts, &checker{p: p, allowed: p.Allowed()}) - } - - // TODO: Add the disallow empty rule with a dummy transformer? - - return &Transformer{transform.Chain(ts...)} -} - -var errEmptyString = errors.New("precis: transformation resulted in empty string") - -type buffers struct { - src []byte - buf [2][]byte - next int -} - -func (b *buffers) apply(t transform.SpanningTransformer) (err error) { - n, err := t.Span(b.src, true) - if err != transform.ErrEndOfSpan { - return err - } - x := b.next & 1 - if b.buf[x] == nil { - b.buf[x] = make([]byte, 0, 8+len(b.src)+len(b.src)>>2) - } - span := append(b.buf[x][:0], b.src[:n]...) - b.src, _, err = transform.Append(t, span, b.src[n:]) - b.buf[x] = b.src - b.next++ - return err -} - -// Pre-allocate transformers when possible. In some cases this avoids allocation. -var ( - foldWidthT transform.SpanningTransformer = width.Fold - lowerCaseT transform.SpanningTransformer = cases.Lower(language.Und, cases.HandleFinalSigma(false)) -) - -// TODO: make this a method on profile. - -func (b *buffers) enforce(p *Profile, src []byte, comparing bool) (str []byte, err error) { - b.src = src - - ascii := true - for _, c := range src { - if c >= utf8.RuneSelf { - ascii = false - break - } - } - // ASCII fast path. - if ascii { - for _, f := range p.options.additional { - if err = b.apply(f()); err != nil { - return nil, err - } - } - switch { - case p.options.asciiLower || (comparing && p.options.ignorecase): - for i, c := range b.src { - if 'A' <= c && c <= 'Z' { - b.src[i] = c ^ 1<<5 - } - } - case p.options.cases != nil: - b.apply(p.options.cases) - } - c := checker{p: p} - if _, err := c.span(b.src, true); err != nil { - return nil, err - } - if p.disallow != nil { - for _, c := range b.src { - if p.disallow.Contains(rune(c)) { - return nil, errDisallowedRune - } - } - } - if p.options.disallowEmpty && len(b.src) == 0 { - return nil, errEmptyString - } - return b.src, nil - } - - // These transforms are applied in the order defined in - // https://tools.ietf.org/html/rfc8264#section-7 - - r := 1 - if p.options.repeat { - r = 4 - } - for ; r > 0; r-- { - // TODO: allow different width transforms options. - if p.options.foldWidth || (p.options.ignorecase && comparing) { - b.apply(foldWidthT) - } - for _, f := range p.options.additional { - if err = b.apply(f()); err != nil { - return nil, err - } - } - if p.options.cases != nil { - b.apply(p.options.cases) - } - if comparing && p.options.ignorecase { - b.apply(lowerCaseT) - } - b.apply(p.norm) - if p.options.bidiRule && !bidirule.Valid(b.src) { - return nil, bidirule.ErrInvalid - } - c := checker{p: p} - if _, err := c.span(b.src, true); err != nil { - return nil, err - } - if p.disallow != nil { - for i := 0; i < len(b.src); { - r, size := utf8.DecodeRune(b.src[i:]) - if p.disallow.Contains(r) { - return nil, errDisallowedRune - } - i += size - } - } - if p.options.disallowEmpty && len(b.src) == 0 { - return nil, errEmptyString - } - } - return b.src, nil -} - -// Append appends the result of applying p to src writing the result to dst. -// It returns an error if the input string is invalid. -func (p *Profile) Append(dst, src []byte) ([]byte, error) { - var buf buffers - b, err := buf.enforce(p, src, false) - if err != nil { - return nil, err - } - return append(dst, b...), nil -} - -func processBytes(p *Profile, b []byte, key bool) ([]byte, error) { - var buf buffers - b, err := buf.enforce(p, b, key) - if err != nil { - return nil, err - } - if buf.next == 0 { - c := make([]byte, len(b)) - copy(c, b) - return c, nil - } - return b, nil -} - -// Bytes returns a new byte slice with the result of applying the profile to b. -func (p *Profile) Bytes(b []byte) ([]byte, error) { - return processBytes(p, b, false) -} - -// AppendCompareKey appends the result of applying p to src (including any -// optional rules to make strings comparable or useful in a map key such as -// applying lowercasing) writing the result to dst. It returns an error if the -// input string is invalid. -func (p *Profile) AppendCompareKey(dst, src []byte) ([]byte, error) { - var buf buffers - b, err := buf.enforce(p, src, true) - if err != nil { - return nil, err - } - return append(dst, b...), nil -} - -func processString(p *Profile, s string, key bool) (string, error) { - var buf buffers - b, err := buf.enforce(p, []byte(s), key) - if err != nil { - return "", err - } - return string(b), nil -} - -// String returns a string with the result of applying the profile to s. -func (p *Profile) String(s string) (string, error) { - return processString(p, s, false) -} - -// CompareKey returns a string that can be used for comparison, hashing, or -// collation. -func (p *Profile) CompareKey(s string) (string, error) { - return processString(p, s, true) -} - -// Compare enforces both strings, and then compares them for bit-string identity -// (byte-for-byte equality). If either string cannot be enforced, the comparison -// is false. -func (p *Profile) Compare(a, b string) bool { - var buf buffers - - akey, err := buf.enforce(p, []byte(a), true) - if err != nil { - return false - } - - buf = buffers{} - bkey, err := buf.enforce(p, []byte(b), true) - if err != nil { - return false - } - - return bytes.Compare(akey, bkey) == 0 -} - -// Allowed returns a runes.Set containing every rune that is a member of the -// underlying profile's string class and not disallowed by any profile specific -// rules. -func (p *Profile) Allowed() runes.Set { - if p.options.disallow != nil { - return runes.Predicate(func(r rune) bool { - return p.class.Contains(r) && !p.options.disallow.Contains(r) - }) - } - return p.class -} - -type checker struct { - p *Profile - allowed runes.Set - - beforeBits catBitmap - termBits catBitmap - acceptBits catBitmap -} - -func (c *checker) Reset() { - c.beforeBits = 0 - c.termBits = 0 - c.acceptBits = 0 -} - -func (c *checker) span(src []byte, atEOF bool) (n int, err error) { - for n < len(src) { - e, sz := dpTrie.lookup(src[n:]) - d := categoryTransitions[category(e&catMask)] - if sz == 0 { - if !atEOF { - return n, transform.ErrShortSrc - } - return n, errDisallowedRune - } - doLookAhead := false - if property(e) < c.p.class.validFrom { - if d.rule == nil { - return n, errDisallowedRune - } - doLookAhead, err = d.rule(c.beforeBits) - if err != nil { - return n, err - } - } - c.beforeBits &= d.keep - c.beforeBits |= d.set - if c.termBits != 0 { - // We are currently in an unterminated lookahead. - if c.beforeBits&c.termBits != 0 { - c.termBits = 0 - c.acceptBits = 0 - } else if c.beforeBits&c.acceptBits == 0 { - // Invalid continuation of the unterminated lookahead sequence. - return n, errContext - } - } - if doLookAhead { - if c.termBits != 0 { - // A previous lookahead run has not been terminated yet. - return n, errContext - } - c.termBits = d.term - c.acceptBits = d.accept - } - n += sz - } - if m := c.beforeBits >> finalShift; c.beforeBits&m != m || c.termBits != 0 { - err = errContext - } - return n, err -} - -// TODO: we may get rid of this transform if transform.Chain understands -// something like a Spanner interface. -func (c checker) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - short := false - if len(dst) < len(src) { - src = src[:len(dst)] - atEOF = false - short = true - } - nSrc, err = c.span(src, atEOF) - nDst = copy(dst, src[:nSrc]) - if short && (err == transform.ErrShortSrc || err == nil) { - err = transform.ErrShortDst - } - return nDst, nSrc, err -} diff --git a/vendor/golang.org/x/text/secure/precis/profile_test.go b/vendor/golang.org/x/text/secure/precis/profile_test.go deleted file mode 100644 index 4edb28a7..00000000 --- a/vendor/golang.org/x/text/secure/precis/profile_test.go +++ /dev/null @@ -1,149 +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 precis - -import ( - "fmt" - "math/rand" - "testing" - "unicode" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/transform" -) - -// copyOrbit is a Transformer for the sole purpose of testing the apply method, -// testing that apply will always call Span for the prefix of the input that -// remains identical and then call Transform for the remainder. It will produce -// inconsistent output for other usage patterns. -// Provided that copyOrbit is used this way, the first t bytes of the output -// will be identical to the input and the remaining output will be the result -// of calling caseOrbit on the remaining input bytes. -type copyOrbit int - -func (t copyOrbit) Reset() {} -func (t copyOrbit) Span(src []byte, atEOF bool) (n int, err error) { - if int(t) == len(src) { - return int(t), nil - } - return int(t), transform.ErrEndOfSpan -} - -// Transform implements transform.Transformer specifically for testing the apply method. -// See documentation of copyOrbit before using this method. -func (t copyOrbit) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := copy(dst, src) - for i, c := range dst[:n] { - dst[i] = orbitCase(c) - } - return n, n, nil -} - -func orbitCase(c byte) byte { - if unicode.IsLower(rune(c)) { - return byte(unicode.ToUpper(rune(c))) - } else { - return byte(unicode.ToLower(rune(c))) - } -} - -func TestBuffers(t *testing.T) { - want := "Those who cannot remember the past are condemned to compute it." - - spans := rand.Perm(len(want) + 1) - - // Compute the result of applying copyOrbit(span) transforms in reverse. - input := []byte(want) - for i := len(spans) - 1; i >= 0; i-- { - for j := spans[i]; j < len(input); j++ { - input[j] = orbitCase(input[j]) - } - } - - // Apply the copyOrbit(span) transforms. - b := buffers{src: input} - for _, n := range spans { - b.apply(copyOrbit(n)) - if n%11 == 0 { - b.apply(transform.Nop) - } - } - if got := string(b.src); got != want { - t.Errorf("got %q; want %q", got, want) - } -} - -type compareTestCase struct { - a string - b string - result bool -} - -var compareTestCases = []struct { - name string - p *Profile - cases []compareTestCase -}{ - {"Nickname", Nickname, []compareTestCase{ - {"a", "b", false}, - {" Swan of Avon ", "swan of avon", true}, - {"Foo", "foo", true}, - {"foo", "foo", true}, - {"Foo Bar", "foo bar", true}, - {"foo bar", "foo bar", true}, - {"\u03A3", "\u03C3", true}, - {"\u03A3", "\u03C2", false}, - {"\u03C3", "\u03C2", false}, - {"Richard \u2163", "richard iv", true}, - {"Å", "å", true}, - {"ff", "ff", true}, // because of NFKC - {"ß", "sS", false}, - - // After applying the Nickname profile, \u00a8 becomes \u0020\u0308, - // however because the nickname profile is not idempotent, applying it again - // to \u0020\u0308 results in \u0308. - {"\u00a8", "\u0020\u0308", true}, - {"\u00a8", "\u0308", true}, - {"\u0020\u0308", "\u0308", true}, - }}, -} - -func doCompareTests(t *testing.T, fn func(t *testing.T, p *Profile, tc compareTestCase)) { - for _, g := range compareTestCases { - for i, tc := range g.cases { - name := fmt.Sprintf("%s:%d:%+q", g.name, i, tc.a) - testtext.Run(t, name, func(t *testing.T) { - fn(t, g.p, tc) - }) - } - } -} - -func TestCompare(t *testing.T) { - doCompareTests(t, func(t *testing.T, p *Profile, tc compareTestCase) { - if result := p.Compare(tc.a, tc.b); result != tc.result { - t.Errorf("got %v; want %v", result, tc.result) - } - }) -} - -func TestCompareString(t *testing.T) { - doCompareTests(t, func(t *testing.T, p *Profile, tc compareTestCase) { - a, err := p.CompareKey(tc.a) - if err != nil { - t.Errorf("Unexpected error when creating key: %v", err) - return - } - b, err := p.CompareKey(tc.b) - if err != nil { - t.Errorf("Unexpected error when creating key: %v", err) - return - } - - if result := (a == b); result != tc.result { - t.Errorf("got %v; want %v", result, tc.result) - } - }) -} diff --git a/vendor/golang.org/x/text/secure/precis/profiles.go b/vendor/golang.org/x/text/secure/precis/profiles.go deleted file mode 100644 index 061936d9..00000000 --- a/vendor/golang.org/x/text/secure/precis/profiles.go +++ /dev/null @@ -1,78 +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 precis - -import ( - "unicode" - - "golang.org/x/text/runes" - "golang.org/x/text/transform" - "golang.org/x/text/unicode/norm" -) - -var ( - // Implements the Nickname profile specified in RFC 8266. - Nickname *Profile = nickname - - // Implements the UsernameCaseMapped profile specified in RFC 8265. - UsernameCaseMapped *Profile = usernameCaseMap - - // Implements the UsernameCasePreserved profile specified in RFC 8265. - UsernameCasePreserved *Profile = usernameNoCaseMap - - // Implements the OpaqueString profile defined in RFC 8265 for passwords and - // other secure labels. - OpaqueString *Profile = opaquestring -) - -var ( - nickname = &Profile{ - options: getOpts( - AdditionalMapping(func() transform.Transformer { - return &nickAdditionalMapping{} - }), - IgnoreCase, - Norm(norm.NFKC), - DisallowEmpty, - repeat, - ), - class: freeform, - } - usernameCaseMap = &Profile{ - options: getOpts( - FoldWidth, - LowerCase(), - Norm(norm.NFC), - BidiRule, - ), - class: identifier, - } - usernameNoCaseMap = &Profile{ - options: getOpts( - FoldWidth, - Norm(norm.NFC), - BidiRule, - ), - class: identifier, - } - opaquestring = &Profile{ - options: getOpts( - AdditionalMapping(func() transform.Transformer { - return mapSpaces - }), - Norm(norm.NFC), - DisallowEmpty, - ), - class: freeform, - } -) - -// mapSpaces is a shared value of a runes.Map transformer. -var mapSpaces transform.Transformer = runes.Map(func(r rune) rune { - if unicode.Is(unicode.Zs, r) { - return ' ' - } - return r -}) diff --git a/vendor/golang.org/x/text/secure/precis/tables10.0.0.go b/vendor/golang.org/x/text/secure/precis/tables10.0.0.go deleted file mode 100644 index 22d5ee87..00000000 --- a/vendor/golang.org/x/text/secure/precis/tables10.0.0.go +++ /dev/null @@ -1,3889 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build go1.10 - -package precis - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "10.0.0" - -// 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 *derivedPropertiesTrie) lookup(s []byte) (v uint8, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return derivedPropertiesValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = derivedPropertiesIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = derivedPropertiesIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = derivedPropertiesIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *derivedPropertiesTrie) lookupUnsafe(s []byte) uint8 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return derivedPropertiesValues[c0] - } - i := derivedPropertiesIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *derivedPropertiesTrie) lookupString(s string) (v uint8, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return derivedPropertiesValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = derivedPropertiesIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = derivedPropertiesIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = derivedPropertiesIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *derivedPropertiesTrie) lookupStringUnsafe(s string) uint8 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return derivedPropertiesValues[c0] - } - i := derivedPropertiesIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// derivedPropertiesTrie. Total size: 25920 bytes (25.31 KiB). Checksum: 25eb1c8ad0a9331f. -type derivedPropertiesTrie struct{} - -func newDerivedPropertiesTrie(i int) *derivedPropertiesTrie { - return &derivedPropertiesTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *derivedPropertiesTrie) lookupValue(n uint32, b byte) uint8 { - switch { - default: - return uint8(derivedPropertiesValues[n<<6+uint32(b)]) - } -} - -// derivedPropertiesValues: 331 blocks, 21184 entries, 21184 bytes -// The third block is the zero block. -var derivedPropertiesValues = [21184]uint8{ - // Block 0x0, offset 0x0 - 0x00: 0x0040, 0x01: 0x0040, 0x02: 0x0040, 0x03: 0x0040, 0x04: 0x0040, 0x05: 0x0040, - 0x06: 0x0040, 0x07: 0x0040, 0x08: 0x0040, 0x09: 0x0040, 0x0a: 0x0040, 0x0b: 0x0040, - 0x0c: 0x0040, 0x0d: 0x0040, 0x0e: 0x0040, 0x0f: 0x0040, 0x10: 0x0040, 0x11: 0x0040, - 0x12: 0x0040, 0x13: 0x0040, 0x14: 0x0040, 0x15: 0x0040, 0x16: 0x0040, 0x17: 0x0040, - 0x18: 0x0040, 0x19: 0x0040, 0x1a: 0x0040, 0x1b: 0x0040, 0x1c: 0x0040, 0x1d: 0x0040, - 0x1e: 0x0040, 0x1f: 0x0040, 0x20: 0x0080, 0x21: 0x00c0, 0x22: 0x00c0, 0x23: 0x00c0, - 0x24: 0x00c0, 0x25: 0x00c0, 0x26: 0x00c0, 0x27: 0x00c0, 0x28: 0x00c0, 0x29: 0x00c0, - 0x2a: 0x00c0, 0x2b: 0x00c0, 0x2c: 0x00c0, 0x2d: 0x00c0, 0x2e: 0x00c0, 0x2f: 0x00c0, - 0x30: 0x00c0, 0x31: 0x00c0, 0x32: 0x00c0, 0x33: 0x00c0, 0x34: 0x00c0, 0x35: 0x00c0, - 0x36: 0x00c0, 0x37: 0x00c0, 0x38: 0x00c0, 0x39: 0x00c0, 0x3a: 0x00c0, 0x3b: 0x00c0, - 0x3c: 0x00c0, 0x3d: 0x00c0, 0x3e: 0x00c0, 0x3f: 0x00c0, - // Block 0x1, offset 0x40 - 0x40: 0x00c0, 0x41: 0x00c0, 0x42: 0x00c0, 0x43: 0x00c0, 0x44: 0x00c0, 0x45: 0x00c0, - 0x46: 0x00c0, 0x47: 0x00c0, 0x48: 0x00c0, 0x49: 0x00c0, 0x4a: 0x00c0, 0x4b: 0x00c0, - 0x4c: 0x00c0, 0x4d: 0x00c0, 0x4e: 0x00c0, 0x4f: 0x00c0, 0x50: 0x00c0, 0x51: 0x00c0, - 0x52: 0x00c0, 0x53: 0x00c0, 0x54: 0x00c0, 0x55: 0x00c0, 0x56: 0x00c0, 0x57: 0x00c0, - 0x58: 0x00c0, 0x59: 0x00c0, 0x5a: 0x00c0, 0x5b: 0x00c0, 0x5c: 0x00c0, 0x5d: 0x00c0, - 0x5e: 0x00c0, 0x5f: 0x00c0, 0x60: 0x00c0, 0x61: 0x00c0, 0x62: 0x00c0, 0x63: 0x00c0, - 0x64: 0x00c0, 0x65: 0x00c0, 0x66: 0x00c0, 0x67: 0x00c0, 0x68: 0x00c0, 0x69: 0x00c0, - 0x6a: 0x00c0, 0x6b: 0x00c0, 0x6c: 0x00c7, 0x6d: 0x00c0, 0x6e: 0x00c0, 0x6f: 0x00c0, - 0x70: 0x00c0, 0x71: 0x00c0, 0x72: 0x00c0, 0x73: 0x00c0, 0x74: 0x00c0, 0x75: 0x00c0, - 0x76: 0x00c0, 0x77: 0x00c0, 0x78: 0x00c0, 0x79: 0x00c0, 0x7a: 0x00c0, 0x7b: 0x00c0, - 0x7c: 0x00c0, 0x7d: 0x00c0, 0x7e: 0x00c0, 0x7f: 0x0040, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, - 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, - 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, - 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, - 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, - 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x0080, 0xe1: 0x0080, 0xe2: 0x0080, 0xe3: 0x0080, - 0xe4: 0x0080, 0xe5: 0x0080, 0xe6: 0x0080, 0xe7: 0x0080, 0xe8: 0x0080, 0xe9: 0x0080, - 0xea: 0x0080, 0xeb: 0x0080, 0xec: 0x0080, 0xed: 0x0040, 0xee: 0x0080, 0xef: 0x0080, - 0xf0: 0x0080, 0xf1: 0x0080, 0xf2: 0x0080, 0xf3: 0x0080, 0xf4: 0x0080, 0xf5: 0x0080, - 0xf6: 0x0080, 0xf7: 0x004f, 0xf8: 0x0080, 0xf9: 0x0080, 0xfa: 0x0080, 0xfb: 0x0080, - 0xfc: 0x0080, 0xfd: 0x0080, 0xfe: 0x0080, 0xff: 0x0080, - // Block 0x4, offset 0x100 - 0x100: 0x00c0, 0x101: 0x00c0, 0x102: 0x00c0, 0x103: 0x00c0, 0x104: 0x00c0, 0x105: 0x00c0, - 0x106: 0x00c0, 0x107: 0x00c0, 0x108: 0x00c0, 0x109: 0x00c0, 0x10a: 0x00c0, 0x10b: 0x00c0, - 0x10c: 0x00c0, 0x10d: 0x00c0, 0x10e: 0x00c0, 0x10f: 0x00c0, 0x110: 0x00c0, 0x111: 0x00c0, - 0x112: 0x00c0, 0x113: 0x00c0, 0x114: 0x00c0, 0x115: 0x00c0, 0x116: 0x00c0, 0x117: 0x0080, - 0x118: 0x00c0, 0x119: 0x00c0, 0x11a: 0x00c0, 0x11b: 0x00c0, 0x11c: 0x00c0, 0x11d: 0x00c0, - 0x11e: 0x00c0, 0x11f: 0x00c0, 0x120: 0x00c0, 0x121: 0x00c0, 0x122: 0x00c0, 0x123: 0x00c0, - 0x124: 0x00c0, 0x125: 0x00c0, 0x126: 0x00c0, 0x127: 0x00c0, 0x128: 0x00c0, 0x129: 0x00c0, - 0x12a: 0x00c0, 0x12b: 0x00c0, 0x12c: 0x00c0, 0x12d: 0x00c0, 0x12e: 0x00c0, 0x12f: 0x00c0, - 0x130: 0x00c0, 0x131: 0x00c0, 0x132: 0x00c0, 0x133: 0x00c0, 0x134: 0x00c0, 0x135: 0x00c0, - 0x136: 0x00c0, 0x137: 0x0080, 0x138: 0x00c0, 0x139: 0x00c0, 0x13a: 0x00c0, 0x13b: 0x00c0, - 0x13c: 0x00c0, 0x13d: 0x00c0, 0x13e: 0x00c0, 0x13f: 0x00c0, - // Block 0x5, offset 0x140 - 0x140: 0x00c0, 0x141: 0x00c0, 0x142: 0x00c0, 0x143: 0x00c0, 0x144: 0x00c0, 0x145: 0x00c0, - 0x146: 0x00c0, 0x147: 0x00c0, 0x148: 0x00c0, 0x149: 0x00c0, 0x14a: 0x00c0, 0x14b: 0x00c0, - 0x14c: 0x00c0, 0x14d: 0x00c0, 0x14e: 0x00c0, 0x14f: 0x00c0, 0x150: 0x00c0, 0x151: 0x00c0, - 0x152: 0x00c0, 0x153: 0x00c0, 0x154: 0x00c0, 0x155: 0x00c0, 0x156: 0x00c0, 0x157: 0x00c0, - 0x158: 0x00c0, 0x159: 0x00c0, 0x15a: 0x00c0, 0x15b: 0x00c0, 0x15c: 0x00c0, 0x15d: 0x00c0, - 0x15e: 0x00c0, 0x15f: 0x00c0, 0x160: 0x00c0, 0x161: 0x00c0, 0x162: 0x00c0, 0x163: 0x00c0, - 0x164: 0x00c0, 0x165: 0x00c0, 0x166: 0x00c0, 0x167: 0x00c0, 0x168: 0x00c0, 0x169: 0x00c0, - 0x16a: 0x00c0, 0x16b: 0x00c0, 0x16c: 0x00c0, 0x16d: 0x00c0, 0x16e: 0x00c0, 0x16f: 0x00c0, - 0x170: 0x00c0, 0x171: 0x00c0, 0x172: 0x0080, 0x173: 0x0080, 0x174: 0x00c0, 0x175: 0x00c0, - 0x176: 0x00c0, 0x177: 0x00c0, 0x178: 0x00c0, 0x179: 0x00c0, 0x17a: 0x00c0, 0x17b: 0x00c0, - 0x17c: 0x00c0, 0x17d: 0x00c0, 0x17e: 0x00c0, 0x17f: 0x0080, - // Block 0x6, offset 0x180 - 0x180: 0x0080, 0x181: 0x00c0, 0x182: 0x00c0, 0x183: 0x00c0, 0x184: 0x00c0, 0x185: 0x00c0, - 0x186: 0x00c0, 0x187: 0x00c0, 0x188: 0x00c0, 0x189: 0x0080, 0x18a: 0x00c0, 0x18b: 0x00c0, - 0x18c: 0x00c0, 0x18d: 0x00c0, 0x18e: 0x00c0, 0x18f: 0x00c0, 0x190: 0x00c0, 0x191: 0x00c0, - 0x192: 0x00c0, 0x193: 0x00c0, 0x194: 0x00c0, 0x195: 0x00c0, 0x196: 0x00c0, 0x197: 0x00c0, - 0x198: 0x00c0, 0x199: 0x00c0, 0x19a: 0x00c0, 0x19b: 0x00c0, 0x19c: 0x00c0, 0x19d: 0x00c0, - 0x19e: 0x00c0, 0x19f: 0x00c0, 0x1a0: 0x00c0, 0x1a1: 0x00c0, 0x1a2: 0x00c0, 0x1a3: 0x00c0, - 0x1a4: 0x00c0, 0x1a5: 0x00c0, 0x1a6: 0x00c0, 0x1a7: 0x00c0, 0x1a8: 0x00c0, 0x1a9: 0x00c0, - 0x1aa: 0x00c0, 0x1ab: 0x00c0, 0x1ac: 0x00c0, 0x1ad: 0x00c0, 0x1ae: 0x00c0, 0x1af: 0x00c0, - 0x1b0: 0x00c0, 0x1b1: 0x00c0, 0x1b2: 0x00c0, 0x1b3: 0x00c0, 0x1b4: 0x00c0, 0x1b5: 0x00c0, - 0x1b6: 0x00c0, 0x1b7: 0x00c0, 0x1b8: 0x00c0, 0x1b9: 0x00c0, 0x1ba: 0x00c0, 0x1bb: 0x00c0, - 0x1bc: 0x00c0, 0x1bd: 0x00c0, 0x1be: 0x00c0, 0x1bf: 0x0080, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x00c0, 0x1c1: 0x00c0, 0x1c2: 0x00c0, 0x1c3: 0x00c0, 0x1c4: 0x00c0, 0x1c5: 0x00c0, - 0x1c6: 0x00c0, 0x1c7: 0x00c0, 0x1c8: 0x00c0, 0x1c9: 0x00c0, 0x1ca: 0x00c0, 0x1cb: 0x00c0, - 0x1cc: 0x00c0, 0x1cd: 0x00c0, 0x1ce: 0x00c0, 0x1cf: 0x00c0, 0x1d0: 0x00c0, 0x1d1: 0x00c0, - 0x1d2: 0x00c0, 0x1d3: 0x00c0, 0x1d4: 0x00c0, 0x1d5: 0x00c0, 0x1d6: 0x00c0, 0x1d7: 0x00c0, - 0x1d8: 0x00c0, 0x1d9: 0x00c0, 0x1da: 0x00c0, 0x1db: 0x00c0, 0x1dc: 0x00c0, 0x1dd: 0x00c0, - 0x1de: 0x00c0, 0x1df: 0x00c0, 0x1e0: 0x00c0, 0x1e1: 0x00c0, 0x1e2: 0x00c0, 0x1e3: 0x00c0, - 0x1e4: 0x00c0, 0x1e5: 0x00c0, 0x1e6: 0x00c0, 0x1e7: 0x00c0, 0x1e8: 0x00c0, 0x1e9: 0x00c0, - 0x1ea: 0x00c0, 0x1eb: 0x00c0, 0x1ec: 0x00c0, 0x1ed: 0x00c0, 0x1ee: 0x00c0, 0x1ef: 0x00c0, - 0x1f0: 0x00c0, 0x1f1: 0x00c0, 0x1f2: 0x00c0, 0x1f3: 0x00c0, 0x1f4: 0x00c0, 0x1f5: 0x00c0, - 0x1f6: 0x00c0, 0x1f7: 0x00c0, 0x1f8: 0x00c0, 0x1f9: 0x00c0, 0x1fa: 0x00c0, 0x1fb: 0x00c0, - 0x1fc: 0x00c0, 0x1fd: 0x00c0, 0x1fe: 0x00c0, 0x1ff: 0x00c0, - // Block 0x8, offset 0x200 - 0x200: 0x00c0, 0x201: 0x00c0, 0x202: 0x00c0, 0x203: 0x00c0, 0x204: 0x0080, 0x205: 0x0080, - 0x206: 0x0080, 0x207: 0x0080, 0x208: 0x0080, 0x209: 0x0080, 0x20a: 0x0080, 0x20b: 0x0080, - 0x20c: 0x0080, 0x20d: 0x00c0, 0x20e: 0x00c0, 0x20f: 0x00c0, 0x210: 0x00c0, 0x211: 0x00c0, - 0x212: 0x00c0, 0x213: 0x00c0, 0x214: 0x00c0, 0x215: 0x00c0, 0x216: 0x00c0, 0x217: 0x00c0, - 0x218: 0x00c0, 0x219: 0x00c0, 0x21a: 0x00c0, 0x21b: 0x00c0, 0x21c: 0x00c0, 0x21d: 0x00c0, - 0x21e: 0x00c0, 0x21f: 0x00c0, 0x220: 0x00c0, 0x221: 0x00c0, 0x222: 0x00c0, 0x223: 0x00c0, - 0x224: 0x00c0, 0x225: 0x00c0, 0x226: 0x00c0, 0x227: 0x00c0, 0x228: 0x00c0, 0x229: 0x00c0, - 0x22a: 0x00c0, 0x22b: 0x00c0, 0x22c: 0x00c0, 0x22d: 0x00c0, 0x22e: 0x00c0, 0x22f: 0x00c0, - 0x230: 0x00c0, 0x231: 0x0080, 0x232: 0x0080, 0x233: 0x0080, 0x234: 0x00c0, 0x235: 0x00c0, - 0x236: 0x00c0, 0x237: 0x00c0, 0x238: 0x00c0, 0x239: 0x00c0, 0x23a: 0x00c0, 0x23b: 0x00c0, - 0x23c: 0x00c0, 0x23d: 0x00c0, 0x23e: 0x00c0, 0x23f: 0x00c0, - // Block 0x9, offset 0x240 - 0x240: 0x00c0, 0x241: 0x00c0, 0x242: 0x00c0, 0x243: 0x00c0, 0x244: 0x00c0, 0x245: 0x00c0, - 0x246: 0x00c0, 0x247: 0x00c0, 0x248: 0x00c0, 0x249: 0x00c0, 0x24a: 0x00c0, 0x24b: 0x00c0, - 0x24c: 0x00c0, 0x24d: 0x00c0, 0x24e: 0x00c0, 0x24f: 0x00c0, 0x250: 0x00c0, 0x251: 0x00c0, - 0x252: 0x00c0, 0x253: 0x00c0, 0x254: 0x00c0, 0x255: 0x00c0, 0x256: 0x00c0, 0x257: 0x00c0, - 0x258: 0x00c0, 0x259: 0x00c0, 0x25a: 0x00c0, 0x25b: 0x00c0, 0x25c: 0x00c0, 0x25d: 0x00c0, - 0x25e: 0x00c0, 0x25f: 0x00c0, 0x260: 0x00c0, 0x261: 0x00c0, 0x262: 0x00c0, 0x263: 0x00c0, - 0x264: 0x00c0, 0x265: 0x00c0, 0x266: 0x00c0, 0x267: 0x00c0, 0x268: 0x00c0, 0x269: 0x00c0, - 0x26a: 0x00c0, 0x26b: 0x00c0, 0x26c: 0x00c0, 0x26d: 0x00c0, 0x26e: 0x00c0, 0x26f: 0x00c0, - 0x270: 0x0080, 0x271: 0x0080, 0x272: 0x0080, 0x273: 0x0080, 0x274: 0x0080, 0x275: 0x0080, - 0x276: 0x0080, 0x277: 0x0080, 0x278: 0x0080, 0x279: 0x00c0, 0x27a: 0x00c0, 0x27b: 0x00c0, - 0x27c: 0x00c0, 0x27d: 0x00c0, 0x27e: 0x00c0, 0x27f: 0x00c0, - // Block 0xa, offset 0x280 - 0x280: 0x00c0, 0x281: 0x00c0, 0x282: 0x0080, 0x283: 0x0080, 0x284: 0x0080, 0x285: 0x0080, - 0x286: 0x00c0, 0x287: 0x00c0, 0x288: 0x00c0, 0x289: 0x00c0, 0x28a: 0x00c0, 0x28b: 0x00c0, - 0x28c: 0x00c0, 0x28d: 0x00c0, 0x28e: 0x00c0, 0x28f: 0x00c0, 0x290: 0x00c0, 0x291: 0x00c0, - 0x292: 0x0080, 0x293: 0x0080, 0x294: 0x0080, 0x295: 0x0080, 0x296: 0x0080, 0x297: 0x0080, - 0x298: 0x0080, 0x299: 0x0080, 0x29a: 0x0080, 0x29b: 0x0080, 0x29c: 0x0080, 0x29d: 0x0080, - 0x29e: 0x0080, 0x29f: 0x0080, 0x2a0: 0x0080, 0x2a1: 0x0080, 0x2a2: 0x0080, 0x2a3: 0x0080, - 0x2a4: 0x0080, 0x2a5: 0x0080, 0x2a6: 0x0080, 0x2a7: 0x0080, 0x2a8: 0x0080, 0x2a9: 0x0080, - 0x2aa: 0x0080, 0x2ab: 0x0080, 0x2ac: 0x00c0, 0x2ad: 0x0080, 0x2ae: 0x00c0, 0x2af: 0x0080, - 0x2b0: 0x0080, 0x2b1: 0x0080, 0x2b2: 0x0080, 0x2b3: 0x0080, 0x2b4: 0x0080, 0x2b5: 0x0080, - 0x2b6: 0x0080, 0x2b7: 0x0080, 0x2b8: 0x0080, 0x2b9: 0x0080, 0x2ba: 0x0080, 0x2bb: 0x0080, - 0x2bc: 0x0080, 0x2bd: 0x0080, 0x2be: 0x0080, 0x2bf: 0x0080, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x00c3, 0x2c1: 0x00c3, 0x2c2: 0x00c3, 0x2c3: 0x00c3, 0x2c4: 0x00c3, 0x2c5: 0x00c3, - 0x2c6: 0x00c3, 0x2c7: 0x00c3, 0x2c8: 0x00c3, 0x2c9: 0x00c3, 0x2ca: 0x00c3, 0x2cb: 0x00c3, - 0x2cc: 0x00c3, 0x2cd: 0x00c3, 0x2ce: 0x00c3, 0x2cf: 0x00c3, 0x2d0: 0x00c3, 0x2d1: 0x00c3, - 0x2d2: 0x00c3, 0x2d3: 0x00c3, 0x2d4: 0x00c3, 0x2d5: 0x00c3, 0x2d6: 0x00c3, 0x2d7: 0x00c3, - 0x2d8: 0x00c3, 0x2d9: 0x00c3, 0x2da: 0x00c3, 0x2db: 0x00c3, 0x2dc: 0x00c3, 0x2dd: 0x00c3, - 0x2de: 0x00c3, 0x2df: 0x00c3, 0x2e0: 0x00c3, 0x2e1: 0x00c3, 0x2e2: 0x00c3, 0x2e3: 0x00c3, - 0x2e4: 0x00c3, 0x2e5: 0x00c3, 0x2e6: 0x00c3, 0x2e7: 0x00c3, 0x2e8: 0x00c3, 0x2e9: 0x00c3, - 0x2ea: 0x00c3, 0x2eb: 0x00c3, 0x2ec: 0x00c3, 0x2ed: 0x00c3, 0x2ee: 0x00c3, 0x2ef: 0x00c3, - 0x2f0: 0x00c3, 0x2f1: 0x00c3, 0x2f2: 0x00c3, 0x2f3: 0x00c3, 0x2f4: 0x00c3, 0x2f5: 0x00c3, - 0x2f6: 0x00c3, 0x2f7: 0x00c3, 0x2f8: 0x00c3, 0x2f9: 0x00c3, 0x2fa: 0x00c3, 0x2fb: 0x00c3, - 0x2fc: 0x00c3, 0x2fd: 0x00c3, 0x2fe: 0x00c3, 0x2ff: 0x00c3, - // Block 0xc, offset 0x300 - 0x300: 0x0083, 0x301: 0x0083, 0x302: 0x00c3, 0x303: 0x0083, 0x304: 0x0083, 0x305: 0x00c3, - 0x306: 0x00c3, 0x307: 0x00c3, 0x308: 0x00c3, 0x309: 0x00c3, 0x30a: 0x00c3, 0x30b: 0x00c3, - 0x30c: 0x00c3, 0x30d: 0x00c3, 0x30e: 0x00c3, 0x30f: 0x0040, 0x310: 0x00c3, 0x311: 0x00c3, - 0x312: 0x00c3, 0x313: 0x00c3, 0x314: 0x00c3, 0x315: 0x00c3, 0x316: 0x00c3, 0x317: 0x00c3, - 0x318: 0x00c3, 0x319: 0x00c3, 0x31a: 0x00c3, 0x31b: 0x00c3, 0x31c: 0x00c3, 0x31d: 0x00c3, - 0x31e: 0x00c3, 0x31f: 0x00c3, 0x320: 0x00c3, 0x321: 0x00c3, 0x322: 0x00c3, 0x323: 0x00c3, - 0x324: 0x00c3, 0x325: 0x00c3, 0x326: 0x00c3, 0x327: 0x00c3, 0x328: 0x00c3, 0x329: 0x00c3, - 0x32a: 0x00c3, 0x32b: 0x00c3, 0x32c: 0x00c3, 0x32d: 0x00c3, 0x32e: 0x00c3, 0x32f: 0x00c3, - 0x330: 0x00c8, 0x331: 0x00c8, 0x332: 0x00c8, 0x333: 0x00c8, 0x334: 0x0080, 0x335: 0x0050, - 0x336: 0x00c8, 0x337: 0x00c8, 0x33a: 0x0088, 0x33b: 0x00c8, - 0x33c: 0x00c8, 0x33d: 0x00c8, 0x33e: 0x0080, 0x33f: 0x00c8, - // Block 0xd, offset 0x340 - 0x344: 0x0088, 0x345: 0x0080, - 0x346: 0x00c8, 0x347: 0x0080, 0x348: 0x00c8, 0x349: 0x00c8, 0x34a: 0x00c8, - 0x34c: 0x00c8, 0x34e: 0x00c8, 0x34f: 0x00c8, 0x350: 0x00c8, 0x351: 0x00c8, - 0x352: 0x00c8, 0x353: 0x00c8, 0x354: 0x00c8, 0x355: 0x00c8, 0x356: 0x00c8, 0x357: 0x00c8, - 0x358: 0x00c8, 0x359: 0x00c8, 0x35a: 0x00c8, 0x35b: 0x00c8, 0x35c: 0x00c8, 0x35d: 0x00c8, - 0x35e: 0x00c8, 0x35f: 0x00c8, 0x360: 0x00c8, 0x361: 0x00c8, 0x363: 0x00c8, - 0x364: 0x00c8, 0x365: 0x00c8, 0x366: 0x00c8, 0x367: 0x00c8, 0x368: 0x00c8, 0x369: 0x00c8, - 0x36a: 0x00c8, 0x36b: 0x00c8, 0x36c: 0x00c8, 0x36d: 0x00c8, 0x36e: 0x00c8, 0x36f: 0x00c8, - 0x370: 0x00c8, 0x371: 0x00c8, 0x372: 0x00c8, 0x373: 0x00c8, 0x374: 0x00c8, 0x375: 0x00c8, - 0x376: 0x00c8, 0x377: 0x00c8, 0x378: 0x00c8, 0x379: 0x00c8, 0x37a: 0x00c8, 0x37b: 0x00c8, - 0x37c: 0x00c8, 0x37d: 0x00c8, 0x37e: 0x00c8, 0x37f: 0x00c8, - // Block 0xe, offset 0x380 - 0x380: 0x00c8, 0x381: 0x00c8, 0x382: 0x00c8, 0x383: 0x00c8, 0x384: 0x00c8, 0x385: 0x00c8, - 0x386: 0x00c8, 0x387: 0x00c8, 0x388: 0x00c8, 0x389: 0x00c8, 0x38a: 0x00c8, 0x38b: 0x00c8, - 0x38c: 0x00c8, 0x38d: 0x00c8, 0x38e: 0x00c8, 0x38f: 0x00c8, 0x390: 0x0088, 0x391: 0x0088, - 0x392: 0x0088, 0x393: 0x0088, 0x394: 0x0088, 0x395: 0x0088, 0x396: 0x0088, 0x397: 0x00c8, - 0x398: 0x00c8, 0x399: 0x00c8, 0x39a: 0x00c8, 0x39b: 0x00c8, 0x39c: 0x00c8, 0x39d: 0x00c8, - 0x39e: 0x00c8, 0x39f: 0x00c8, 0x3a0: 0x00c8, 0x3a1: 0x00c8, 0x3a2: 0x00c0, 0x3a3: 0x00c0, - 0x3a4: 0x00c0, 0x3a5: 0x00c0, 0x3a6: 0x00c0, 0x3a7: 0x00c0, 0x3a8: 0x00c0, 0x3a9: 0x00c0, - 0x3aa: 0x00c0, 0x3ab: 0x00c0, 0x3ac: 0x00c0, 0x3ad: 0x00c0, 0x3ae: 0x00c0, 0x3af: 0x00c0, - 0x3b0: 0x0088, 0x3b1: 0x0088, 0x3b2: 0x0088, 0x3b3: 0x00c8, 0x3b4: 0x0088, 0x3b5: 0x0088, - 0x3b6: 0x0088, 0x3b7: 0x00c8, 0x3b8: 0x00c8, 0x3b9: 0x0088, 0x3ba: 0x00c8, 0x3bb: 0x00c8, - 0x3bc: 0x00c8, 0x3bd: 0x00c8, 0x3be: 0x00c8, 0x3bf: 0x00c8, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x00c0, 0x3c1: 0x00c0, 0x3c2: 0x0080, 0x3c3: 0x00c3, 0x3c4: 0x00c3, 0x3c5: 0x00c3, - 0x3c6: 0x00c3, 0x3c7: 0x00c3, 0x3c8: 0x0083, 0x3c9: 0x0083, 0x3ca: 0x00c0, 0x3cb: 0x00c0, - 0x3cc: 0x00c0, 0x3cd: 0x00c0, 0x3ce: 0x00c0, 0x3cf: 0x00c0, 0x3d0: 0x00c0, 0x3d1: 0x00c0, - 0x3d2: 0x00c0, 0x3d3: 0x00c0, 0x3d4: 0x00c0, 0x3d5: 0x00c0, 0x3d6: 0x00c0, 0x3d7: 0x00c0, - 0x3d8: 0x00c0, 0x3d9: 0x00c0, 0x3da: 0x00c0, 0x3db: 0x00c0, 0x3dc: 0x00c0, 0x3dd: 0x00c0, - 0x3de: 0x00c0, 0x3df: 0x00c0, 0x3e0: 0x00c0, 0x3e1: 0x00c0, 0x3e2: 0x00c0, 0x3e3: 0x00c0, - 0x3e4: 0x00c0, 0x3e5: 0x00c0, 0x3e6: 0x00c0, 0x3e7: 0x00c0, 0x3e8: 0x00c0, 0x3e9: 0x00c0, - 0x3ea: 0x00c0, 0x3eb: 0x00c0, 0x3ec: 0x00c0, 0x3ed: 0x00c0, 0x3ee: 0x00c0, 0x3ef: 0x00c0, - 0x3f0: 0x00c0, 0x3f1: 0x00c0, 0x3f2: 0x00c0, 0x3f3: 0x00c0, 0x3f4: 0x00c0, 0x3f5: 0x00c0, - 0x3f6: 0x00c0, 0x3f7: 0x00c0, 0x3f8: 0x00c0, 0x3f9: 0x00c0, 0x3fa: 0x00c0, 0x3fb: 0x00c0, - 0x3fc: 0x00c0, 0x3fd: 0x00c0, 0x3fe: 0x00c0, 0x3ff: 0x00c0, - // Block 0x10, offset 0x400 - 0x400: 0x00c0, 0x401: 0x00c0, 0x402: 0x00c0, 0x403: 0x00c0, 0x404: 0x00c0, 0x405: 0x00c0, - 0x406: 0x00c0, 0x407: 0x00c0, 0x408: 0x00c0, 0x409: 0x00c0, 0x40a: 0x00c0, 0x40b: 0x00c0, - 0x40c: 0x00c0, 0x40d: 0x00c0, 0x40e: 0x00c0, 0x40f: 0x00c0, 0x410: 0x00c0, 0x411: 0x00c0, - 0x412: 0x00c0, 0x413: 0x00c0, 0x414: 0x00c0, 0x415: 0x00c0, 0x416: 0x00c0, 0x417: 0x00c0, - 0x418: 0x00c0, 0x419: 0x00c0, 0x41a: 0x00c0, 0x41b: 0x00c0, 0x41c: 0x00c0, 0x41d: 0x00c0, - 0x41e: 0x00c0, 0x41f: 0x00c0, 0x420: 0x00c0, 0x421: 0x00c0, 0x422: 0x00c0, 0x423: 0x00c0, - 0x424: 0x00c0, 0x425: 0x00c0, 0x426: 0x00c0, 0x427: 0x00c0, 0x428: 0x00c0, 0x429: 0x00c0, - 0x42a: 0x00c0, 0x42b: 0x00c0, 0x42c: 0x00c0, 0x42d: 0x00c0, 0x42e: 0x00c0, 0x42f: 0x00c0, - 0x431: 0x00c0, 0x432: 0x00c0, 0x433: 0x00c0, 0x434: 0x00c0, 0x435: 0x00c0, - 0x436: 0x00c0, 0x437: 0x00c0, 0x438: 0x00c0, 0x439: 0x00c0, 0x43a: 0x00c0, 0x43b: 0x00c0, - 0x43c: 0x00c0, 0x43d: 0x00c0, 0x43e: 0x00c0, 0x43f: 0x00c0, - // Block 0x11, offset 0x440 - 0x440: 0x00c0, 0x441: 0x00c0, 0x442: 0x00c0, 0x443: 0x00c0, 0x444: 0x00c0, 0x445: 0x00c0, - 0x446: 0x00c0, 0x447: 0x00c0, 0x448: 0x00c0, 0x449: 0x00c0, 0x44a: 0x00c0, 0x44b: 0x00c0, - 0x44c: 0x00c0, 0x44d: 0x00c0, 0x44e: 0x00c0, 0x44f: 0x00c0, 0x450: 0x00c0, 0x451: 0x00c0, - 0x452: 0x00c0, 0x453: 0x00c0, 0x454: 0x00c0, 0x455: 0x00c0, 0x456: 0x00c0, - 0x459: 0x00c0, 0x45a: 0x0080, 0x45b: 0x0080, 0x45c: 0x0080, 0x45d: 0x0080, - 0x45e: 0x0080, 0x45f: 0x0080, 0x461: 0x00c0, 0x462: 0x00c0, 0x463: 0x00c0, - 0x464: 0x00c0, 0x465: 0x00c0, 0x466: 0x00c0, 0x467: 0x00c0, 0x468: 0x00c0, 0x469: 0x00c0, - 0x46a: 0x00c0, 0x46b: 0x00c0, 0x46c: 0x00c0, 0x46d: 0x00c0, 0x46e: 0x00c0, 0x46f: 0x00c0, - 0x470: 0x00c0, 0x471: 0x00c0, 0x472: 0x00c0, 0x473: 0x00c0, 0x474: 0x00c0, 0x475: 0x00c0, - 0x476: 0x00c0, 0x477: 0x00c0, 0x478: 0x00c0, 0x479: 0x00c0, 0x47a: 0x00c0, 0x47b: 0x00c0, - 0x47c: 0x00c0, 0x47d: 0x00c0, 0x47e: 0x00c0, 0x47f: 0x00c0, - // Block 0x12, offset 0x480 - 0x480: 0x00c0, 0x481: 0x00c0, 0x482: 0x00c0, 0x483: 0x00c0, 0x484: 0x00c0, 0x485: 0x00c0, - 0x486: 0x00c0, 0x487: 0x0080, 0x489: 0x0080, 0x48a: 0x0080, - 0x48d: 0x0080, 0x48e: 0x0080, 0x48f: 0x0080, 0x491: 0x00cb, - 0x492: 0x00cb, 0x493: 0x00cb, 0x494: 0x00cb, 0x495: 0x00cb, 0x496: 0x00cb, 0x497: 0x00cb, - 0x498: 0x00cb, 0x499: 0x00cb, 0x49a: 0x00cb, 0x49b: 0x00cb, 0x49c: 0x00cb, 0x49d: 0x00cb, - 0x49e: 0x00cb, 0x49f: 0x00cb, 0x4a0: 0x00cb, 0x4a1: 0x00cb, 0x4a2: 0x00cb, 0x4a3: 0x00cb, - 0x4a4: 0x00cb, 0x4a5: 0x00cb, 0x4a6: 0x00cb, 0x4a7: 0x00cb, 0x4a8: 0x00cb, 0x4a9: 0x00cb, - 0x4aa: 0x00cb, 0x4ab: 0x00cb, 0x4ac: 0x00cb, 0x4ad: 0x00cb, 0x4ae: 0x00cb, 0x4af: 0x00cb, - 0x4b0: 0x00cb, 0x4b1: 0x00cb, 0x4b2: 0x00cb, 0x4b3: 0x00cb, 0x4b4: 0x00cb, 0x4b5: 0x00cb, - 0x4b6: 0x00cb, 0x4b7: 0x00cb, 0x4b8: 0x00cb, 0x4b9: 0x00cb, 0x4ba: 0x00cb, 0x4bb: 0x00cb, - 0x4bc: 0x00cb, 0x4bd: 0x00cb, 0x4be: 0x008a, 0x4bf: 0x00cb, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x008a, 0x4c1: 0x00cb, 0x4c2: 0x00cb, 0x4c3: 0x008a, 0x4c4: 0x00cb, 0x4c5: 0x00cb, - 0x4c6: 0x008a, 0x4c7: 0x00cb, - 0x4d0: 0x00ca, 0x4d1: 0x00ca, - 0x4d2: 0x00ca, 0x4d3: 0x00ca, 0x4d4: 0x00ca, 0x4d5: 0x00ca, 0x4d6: 0x00ca, 0x4d7: 0x00ca, - 0x4d8: 0x00ca, 0x4d9: 0x00ca, 0x4da: 0x00ca, 0x4db: 0x00ca, 0x4dc: 0x00ca, 0x4dd: 0x00ca, - 0x4de: 0x00ca, 0x4df: 0x00ca, 0x4e0: 0x00ca, 0x4e1: 0x00ca, 0x4e2: 0x00ca, 0x4e3: 0x00ca, - 0x4e4: 0x00ca, 0x4e5: 0x00ca, 0x4e6: 0x00ca, 0x4e7: 0x00ca, 0x4e8: 0x00ca, 0x4e9: 0x00ca, - 0x4ea: 0x00ca, - 0x4f0: 0x00ca, 0x4f1: 0x00ca, 0x4f2: 0x00ca, 0x4f3: 0x0051, 0x4f4: 0x0051, - // Block 0x14, offset 0x500 - 0x500: 0x0040, 0x501: 0x0040, 0x502: 0x0040, 0x503: 0x0040, 0x504: 0x0040, 0x505: 0x0040, - 0x506: 0x0080, 0x507: 0x0080, 0x508: 0x0080, 0x509: 0x0080, 0x50a: 0x0080, 0x50b: 0x0080, - 0x50c: 0x0080, 0x50d: 0x0080, 0x50e: 0x0080, 0x50f: 0x0080, 0x510: 0x00c3, 0x511: 0x00c3, - 0x512: 0x00c3, 0x513: 0x00c3, 0x514: 0x00c3, 0x515: 0x00c3, 0x516: 0x00c3, 0x517: 0x00c3, - 0x518: 0x00c3, 0x519: 0x00c3, 0x51a: 0x00c3, 0x51b: 0x0080, 0x51c: 0x0040, - 0x51e: 0x0080, 0x51f: 0x0080, 0x520: 0x00c2, 0x521: 0x00c0, 0x522: 0x00c4, 0x523: 0x00c4, - 0x524: 0x00c4, 0x525: 0x00c4, 0x526: 0x00c2, 0x527: 0x00c4, 0x528: 0x00c2, 0x529: 0x00c4, - 0x52a: 0x00c2, 0x52b: 0x00c2, 0x52c: 0x00c2, 0x52d: 0x00c2, 0x52e: 0x00c2, 0x52f: 0x00c4, - 0x530: 0x00c4, 0x531: 0x00c4, 0x532: 0x00c4, 0x533: 0x00c2, 0x534: 0x00c2, 0x535: 0x00c2, - 0x536: 0x00c2, 0x537: 0x00c2, 0x538: 0x00c2, 0x539: 0x00c2, 0x53a: 0x00c2, 0x53b: 0x00c2, - 0x53c: 0x00c2, 0x53d: 0x00c2, 0x53e: 0x00c2, 0x53f: 0x00c2, - // Block 0x15, offset 0x540 - 0x540: 0x0040, 0x541: 0x00c2, 0x542: 0x00c2, 0x543: 0x00c2, 0x544: 0x00c2, 0x545: 0x00c2, - 0x546: 0x00c2, 0x547: 0x00c2, 0x548: 0x00c4, 0x549: 0x00c2, 0x54a: 0x00c2, 0x54b: 0x00c3, - 0x54c: 0x00c3, 0x54d: 0x00c3, 0x54e: 0x00c3, 0x54f: 0x00c3, 0x550: 0x00c3, 0x551: 0x00c3, - 0x552: 0x00c3, 0x553: 0x00c3, 0x554: 0x00c3, 0x555: 0x00c3, 0x556: 0x00c3, 0x557: 0x00c3, - 0x558: 0x00c3, 0x559: 0x00c3, 0x55a: 0x00c3, 0x55b: 0x00c3, 0x55c: 0x00c3, 0x55d: 0x00c3, - 0x55e: 0x00c3, 0x55f: 0x00c3, 0x560: 0x0053, 0x561: 0x0053, 0x562: 0x0053, 0x563: 0x0053, - 0x564: 0x0053, 0x565: 0x0053, 0x566: 0x0053, 0x567: 0x0053, 0x568: 0x0053, 0x569: 0x0053, - 0x56a: 0x0080, 0x56b: 0x0080, 0x56c: 0x0080, 0x56d: 0x0080, 0x56e: 0x00c2, 0x56f: 0x00c2, - 0x570: 0x00c3, 0x571: 0x00c4, 0x572: 0x00c4, 0x573: 0x00c4, 0x574: 0x00c0, 0x575: 0x0084, - 0x576: 0x0084, 0x577: 0x0084, 0x578: 0x0082, 0x579: 0x00c2, 0x57a: 0x00c2, 0x57b: 0x00c2, - 0x57c: 0x00c2, 0x57d: 0x00c2, 0x57e: 0x00c2, 0x57f: 0x00c2, - // Block 0x16, offset 0x580 - 0x580: 0x00c2, 0x581: 0x00c2, 0x582: 0x00c2, 0x583: 0x00c2, 0x584: 0x00c2, 0x585: 0x00c2, - 0x586: 0x00c2, 0x587: 0x00c2, 0x588: 0x00c4, 0x589: 0x00c4, 0x58a: 0x00c4, 0x58b: 0x00c4, - 0x58c: 0x00c4, 0x58d: 0x00c4, 0x58e: 0x00c4, 0x58f: 0x00c4, 0x590: 0x00c4, 0x591: 0x00c4, - 0x592: 0x00c4, 0x593: 0x00c4, 0x594: 0x00c4, 0x595: 0x00c4, 0x596: 0x00c4, 0x597: 0x00c4, - 0x598: 0x00c4, 0x599: 0x00c4, 0x59a: 0x00c2, 0x59b: 0x00c2, 0x59c: 0x00c2, 0x59d: 0x00c2, - 0x59e: 0x00c2, 0x59f: 0x00c2, 0x5a0: 0x00c2, 0x5a1: 0x00c2, 0x5a2: 0x00c2, 0x5a3: 0x00c2, - 0x5a4: 0x00c2, 0x5a5: 0x00c2, 0x5a6: 0x00c2, 0x5a7: 0x00c2, 0x5a8: 0x00c2, 0x5a9: 0x00c2, - 0x5aa: 0x00c2, 0x5ab: 0x00c2, 0x5ac: 0x00c2, 0x5ad: 0x00c2, 0x5ae: 0x00c2, 0x5af: 0x00c2, - 0x5b0: 0x00c2, 0x5b1: 0x00c2, 0x5b2: 0x00c2, 0x5b3: 0x00c2, 0x5b4: 0x00c2, 0x5b5: 0x00c2, - 0x5b6: 0x00c2, 0x5b7: 0x00c2, 0x5b8: 0x00c2, 0x5b9: 0x00c2, 0x5ba: 0x00c2, 0x5bb: 0x00c2, - 0x5bc: 0x00c2, 0x5bd: 0x00c2, 0x5be: 0x00c2, 0x5bf: 0x00c2, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x00c4, 0x5c1: 0x00c2, 0x5c2: 0x00c2, 0x5c3: 0x00c4, 0x5c4: 0x00c4, 0x5c5: 0x00c4, - 0x5c6: 0x00c4, 0x5c7: 0x00c4, 0x5c8: 0x00c4, 0x5c9: 0x00c4, 0x5ca: 0x00c4, 0x5cb: 0x00c4, - 0x5cc: 0x00c2, 0x5cd: 0x00c4, 0x5ce: 0x00c2, 0x5cf: 0x00c4, 0x5d0: 0x00c2, 0x5d1: 0x00c2, - 0x5d2: 0x00c4, 0x5d3: 0x00c4, 0x5d4: 0x0080, 0x5d5: 0x00c4, 0x5d6: 0x00c3, 0x5d7: 0x00c3, - 0x5d8: 0x00c3, 0x5d9: 0x00c3, 0x5da: 0x00c3, 0x5db: 0x00c3, 0x5dc: 0x00c3, 0x5dd: 0x0040, - 0x5de: 0x0080, 0x5df: 0x00c3, 0x5e0: 0x00c3, 0x5e1: 0x00c3, 0x5e2: 0x00c3, 0x5e3: 0x00c3, - 0x5e4: 0x00c3, 0x5e5: 0x00c0, 0x5e6: 0x00c0, 0x5e7: 0x00c3, 0x5e8: 0x00c3, 0x5e9: 0x0080, - 0x5ea: 0x00c3, 0x5eb: 0x00c3, 0x5ec: 0x00c3, 0x5ed: 0x00c3, 0x5ee: 0x00c4, 0x5ef: 0x00c4, - 0x5f0: 0x0054, 0x5f1: 0x0054, 0x5f2: 0x0054, 0x5f3: 0x0054, 0x5f4: 0x0054, 0x5f5: 0x0054, - 0x5f6: 0x0054, 0x5f7: 0x0054, 0x5f8: 0x0054, 0x5f9: 0x0054, 0x5fa: 0x00c2, 0x5fb: 0x00c2, - 0x5fc: 0x00c2, 0x5fd: 0x00c0, 0x5fe: 0x00c0, 0x5ff: 0x00c2, - // Block 0x18, offset 0x600 - 0x600: 0x0080, 0x601: 0x0080, 0x602: 0x0080, 0x603: 0x0080, 0x604: 0x0080, 0x605: 0x0080, - 0x606: 0x0080, 0x607: 0x0080, 0x608: 0x0080, 0x609: 0x0080, 0x60a: 0x0080, 0x60b: 0x0080, - 0x60c: 0x0080, 0x60d: 0x0080, 0x60f: 0x0040, 0x610: 0x00c4, 0x611: 0x00c3, - 0x612: 0x00c2, 0x613: 0x00c2, 0x614: 0x00c2, 0x615: 0x00c4, 0x616: 0x00c4, 0x617: 0x00c4, - 0x618: 0x00c4, 0x619: 0x00c4, 0x61a: 0x00c2, 0x61b: 0x00c2, 0x61c: 0x00c2, 0x61d: 0x00c2, - 0x61e: 0x00c4, 0x61f: 0x00c2, 0x620: 0x00c2, 0x621: 0x00c2, 0x622: 0x00c2, 0x623: 0x00c2, - 0x624: 0x00c2, 0x625: 0x00c2, 0x626: 0x00c2, 0x627: 0x00c2, 0x628: 0x00c4, 0x629: 0x00c2, - 0x62a: 0x00c4, 0x62b: 0x00c2, 0x62c: 0x00c4, 0x62d: 0x00c2, 0x62e: 0x00c2, 0x62f: 0x00c4, - 0x630: 0x00c3, 0x631: 0x00c3, 0x632: 0x00c3, 0x633: 0x00c3, 0x634: 0x00c3, 0x635: 0x00c3, - 0x636: 0x00c3, 0x637: 0x00c3, 0x638: 0x00c3, 0x639: 0x00c3, 0x63a: 0x00c3, 0x63b: 0x00c3, - 0x63c: 0x00c3, 0x63d: 0x00c3, 0x63e: 0x00c3, 0x63f: 0x00c3, - // Block 0x19, offset 0x640 - 0x640: 0x00c3, 0x641: 0x00c3, 0x642: 0x00c3, 0x643: 0x00c3, 0x644: 0x00c3, 0x645: 0x00c3, - 0x646: 0x00c3, 0x647: 0x00c3, 0x648: 0x00c3, 0x649: 0x00c3, 0x64a: 0x00c3, - 0x64d: 0x00c4, 0x64e: 0x00c2, 0x64f: 0x00c2, 0x650: 0x00c2, 0x651: 0x00c2, - 0x652: 0x00c2, 0x653: 0x00c2, 0x654: 0x00c2, 0x655: 0x00c2, 0x656: 0x00c2, 0x657: 0x00c2, - 0x658: 0x00c2, 0x659: 0x00c4, 0x65a: 0x00c4, 0x65b: 0x00c4, 0x65c: 0x00c2, 0x65d: 0x00c2, - 0x65e: 0x00c2, 0x65f: 0x00c2, 0x660: 0x00c2, 0x661: 0x00c2, 0x662: 0x00c2, 0x663: 0x00c2, - 0x664: 0x00c2, 0x665: 0x00c2, 0x666: 0x00c2, 0x667: 0x00c2, 0x668: 0x00c2, 0x669: 0x00c2, - 0x66a: 0x00c2, 0x66b: 0x00c4, 0x66c: 0x00c4, 0x66d: 0x00c2, 0x66e: 0x00c2, 0x66f: 0x00c2, - 0x670: 0x00c2, 0x671: 0x00c4, 0x672: 0x00c2, 0x673: 0x00c4, 0x674: 0x00c4, 0x675: 0x00c2, - 0x676: 0x00c2, 0x677: 0x00c2, 0x678: 0x00c4, 0x679: 0x00c4, 0x67a: 0x00c2, 0x67b: 0x00c2, - 0x67c: 0x00c2, 0x67d: 0x00c2, 0x67e: 0x00c2, 0x67f: 0x00c2, - // Block 0x1a, offset 0x680 - 0x680: 0x00c0, 0x681: 0x00c0, 0x682: 0x00c0, 0x683: 0x00c0, 0x684: 0x00c0, 0x685: 0x00c0, - 0x686: 0x00c0, 0x687: 0x00c0, 0x688: 0x00c0, 0x689: 0x00c0, 0x68a: 0x00c0, 0x68b: 0x00c0, - 0x68c: 0x00c0, 0x68d: 0x00c0, 0x68e: 0x00c0, 0x68f: 0x00c0, 0x690: 0x00c0, 0x691: 0x00c0, - 0x692: 0x00c0, 0x693: 0x00c0, 0x694: 0x00c0, 0x695: 0x00c0, 0x696: 0x00c0, 0x697: 0x00c0, - 0x698: 0x00c0, 0x699: 0x00c0, 0x69a: 0x00c0, 0x69b: 0x00c0, 0x69c: 0x00c0, 0x69d: 0x00c0, - 0x69e: 0x00c0, 0x69f: 0x00c0, 0x6a0: 0x00c0, 0x6a1: 0x00c0, 0x6a2: 0x00c0, 0x6a3: 0x00c0, - 0x6a4: 0x00c0, 0x6a5: 0x00c0, 0x6a6: 0x00c3, 0x6a7: 0x00c3, 0x6a8: 0x00c3, 0x6a9: 0x00c3, - 0x6aa: 0x00c3, 0x6ab: 0x00c3, 0x6ac: 0x00c3, 0x6ad: 0x00c3, 0x6ae: 0x00c3, 0x6af: 0x00c3, - 0x6b0: 0x00c3, 0x6b1: 0x00c0, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x00c0, 0x6c1: 0x00c0, 0x6c2: 0x00c0, 0x6c3: 0x00c0, 0x6c4: 0x00c0, 0x6c5: 0x00c0, - 0x6c6: 0x00c0, 0x6c7: 0x00c0, 0x6c8: 0x00c0, 0x6c9: 0x00c0, 0x6ca: 0x00c2, 0x6cb: 0x00c2, - 0x6cc: 0x00c2, 0x6cd: 0x00c2, 0x6ce: 0x00c2, 0x6cf: 0x00c2, 0x6d0: 0x00c2, 0x6d1: 0x00c2, - 0x6d2: 0x00c2, 0x6d3: 0x00c2, 0x6d4: 0x00c2, 0x6d5: 0x00c2, 0x6d6: 0x00c2, 0x6d7: 0x00c2, - 0x6d8: 0x00c2, 0x6d9: 0x00c2, 0x6da: 0x00c2, 0x6db: 0x00c2, 0x6dc: 0x00c2, 0x6dd: 0x00c2, - 0x6de: 0x00c2, 0x6df: 0x00c2, 0x6e0: 0x00c2, 0x6e1: 0x00c2, 0x6e2: 0x00c2, 0x6e3: 0x00c2, - 0x6e4: 0x00c2, 0x6e5: 0x00c2, 0x6e6: 0x00c2, 0x6e7: 0x00c2, 0x6e8: 0x00c2, 0x6e9: 0x00c2, - 0x6ea: 0x00c2, 0x6eb: 0x00c3, 0x6ec: 0x00c3, 0x6ed: 0x00c3, 0x6ee: 0x00c3, 0x6ef: 0x00c3, - 0x6f0: 0x00c3, 0x6f1: 0x00c3, 0x6f2: 0x00c3, 0x6f3: 0x00c3, 0x6f4: 0x00c0, 0x6f5: 0x00c0, - 0x6f6: 0x0080, 0x6f7: 0x0080, 0x6f8: 0x0080, 0x6f9: 0x0080, 0x6fa: 0x0040, - // Block 0x1c, offset 0x700 - 0x700: 0x00c0, 0x701: 0x00c0, 0x702: 0x00c0, 0x703: 0x00c0, 0x704: 0x00c0, 0x705: 0x00c0, - 0x706: 0x00c0, 0x707: 0x00c0, 0x708: 0x00c0, 0x709: 0x00c0, 0x70a: 0x00c0, 0x70b: 0x00c0, - 0x70c: 0x00c0, 0x70d: 0x00c0, 0x70e: 0x00c0, 0x70f: 0x00c0, 0x710: 0x00c0, 0x711: 0x00c0, - 0x712: 0x00c0, 0x713: 0x00c0, 0x714: 0x00c0, 0x715: 0x00c0, 0x716: 0x00c3, 0x717: 0x00c3, - 0x718: 0x00c3, 0x719: 0x00c3, 0x71a: 0x00c0, 0x71b: 0x00c3, 0x71c: 0x00c3, 0x71d: 0x00c3, - 0x71e: 0x00c3, 0x71f: 0x00c3, 0x720: 0x00c3, 0x721: 0x00c3, 0x722: 0x00c3, 0x723: 0x00c3, - 0x724: 0x00c0, 0x725: 0x00c3, 0x726: 0x00c3, 0x727: 0x00c3, 0x728: 0x00c0, 0x729: 0x00c3, - 0x72a: 0x00c3, 0x72b: 0x00c3, 0x72c: 0x00c3, 0x72d: 0x00c3, - 0x730: 0x0080, 0x731: 0x0080, 0x732: 0x0080, 0x733: 0x0080, 0x734: 0x0080, 0x735: 0x0080, - 0x736: 0x0080, 0x737: 0x0080, 0x738: 0x0080, 0x739: 0x0080, 0x73a: 0x0080, 0x73b: 0x0080, - 0x73c: 0x0080, 0x73d: 0x0080, 0x73e: 0x0080, - // Block 0x1d, offset 0x740 - 0x740: 0x00c4, 0x741: 0x00c2, 0x742: 0x00c2, 0x743: 0x00c2, 0x744: 0x00c2, 0x745: 0x00c2, - 0x746: 0x00c4, 0x747: 0x00c4, 0x748: 0x00c2, 0x749: 0x00c4, 0x74a: 0x00c2, 0x74b: 0x00c2, - 0x74c: 0x00c2, 0x74d: 0x00c2, 0x74e: 0x00c2, 0x74f: 0x00c2, 0x750: 0x00c2, 0x751: 0x00c2, - 0x752: 0x00c2, 0x753: 0x00c2, 0x754: 0x00c4, 0x755: 0x00c2, 0x756: 0x00c0, 0x757: 0x00c0, - 0x758: 0x00c0, 0x759: 0x00c3, 0x75a: 0x00c3, 0x75b: 0x00c3, - 0x75e: 0x0080, 0x760: 0x00c2, 0x761: 0x00c0, 0x762: 0x00c2, 0x763: 0x00c2, - 0x764: 0x00c2, 0x765: 0x00c2, 0x766: 0x00c0, 0x767: 0x00c4, 0x768: 0x00c2, 0x769: 0x00c4, - 0x76a: 0x00c4, - // Block 0x1e, offset 0x780 - 0x7a0: 0x00c2, 0x7a1: 0x00c2, 0x7a2: 0x00c2, 0x7a3: 0x00c2, - 0x7a4: 0x00c2, 0x7a5: 0x00c2, 0x7a6: 0x00c2, 0x7a7: 0x00c2, 0x7a8: 0x00c2, 0x7a9: 0x00c2, - 0x7aa: 0x00c4, 0x7ab: 0x00c4, 0x7ac: 0x00c4, 0x7ad: 0x00c0, 0x7ae: 0x00c4, 0x7af: 0x00c2, - 0x7b0: 0x00c2, 0x7b1: 0x00c4, 0x7b2: 0x00c4, 0x7b3: 0x00c2, 0x7b4: 0x00c2, - 0x7b6: 0x00c2, 0x7b7: 0x00c2, 0x7b8: 0x00c2, 0x7b9: 0x00c4, 0x7ba: 0x00c2, 0x7bb: 0x00c2, - 0x7bc: 0x00c2, 0x7bd: 0x00c2, - // Block 0x1f, offset 0x7c0 - 0x7d4: 0x00c3, 0x7d5: 0x00c3, 0x7d6: 0x00c3, 0x7d7: 0x00c3, - 0x7d8: 0x00c3, 0x7d9: 0x00c3, 0x7da: 0x00c3, 0x7db: 0x00c3, 0x7dc: 0x00c3, 0x7dd: 0x00c3, - 0x7de: 0x00c3, 0x7df: 0x00c3, 0x7e0: 0x00c3, 0x7e1: 0x00c3, 0x7e2: 0x0040, 0x7e3: 0x00c3, - 0x7e4: 0x00c3, 0x7e5: 0x00c3, 0x7e6: 0x00c3, 0x7e7: 0x00c3, 0x7e8: 0x00c3, 0x7e9: 0x00c3, - 0x7ea: 0x00c3, 0x7eb: 0x00c3, 0x7ec: 0x00c3, 0x7ed: 0x00c3, 0x7ee: 0x00c3, 0x7ef: 0x00c3, - 0x7f0: 0x00c3, 0x7f1: 0x00c3, 0x7f2: 0x00c3, 0x7f3: 0x00c3, 0x7f4: 0x00c3, 0x7f5: 0x00c3, - 0x7f6: 0x00c3, 0x7f7: 0x00c3, 0x7f8: 0x00c3, 0x7f9: 0x00c3, 0x7fa: 0x00c3, 0x7fb: 0x00c3, - 0x7fc: 0x00c3, 0x7fd: 0x00c3, 0x7fe: 0x00c3, 0x7ff: 0x00c3, - // Block 0x20, offset 0x800 - 0x800: 0x00c3, 0x801: 0x00c3, 0x802: 0x00c3, 0x803: 0x00c0, 0x804: 0x00c0, 0x805: 0x00c0, - 0x806: 0x00c0, 0x807: 0x00c0, 0x808: 0x00c0, 0x809: 0x00c0, 0x80a: 0x00c0, 0x80b: 0x00c0, - 0x80c: 0x00c0, 0x80d: 0x00c0, 0x80e: 0x00c0, 0x80f: 0x00c0, 0x810: 0x00c0, 0x811: 0x00c0, - 0x812: 0x00c0, 0x813: 0x00c0, 0x814: 0x00c0, 0x815: 0x00c0, 0x816: 0x00c0, 0x817: 0x00c0, - 0x818: 0x00c0, 0x819: 0x00c0, 0x81a: 0x00c0, 0x81b: 0x00c0, 0x81c: 0x00c0, 0x81d: 0x00c0, - 0x81e: 0x00c0, 0x81f: 0x00c0, 0x820: 0x00c0, 0x821: 0x00c0, 0x822: 0x00c0, 0x823: 0x00c0, - 0x824: 0x00c0, 0x825: 0x00c0, 0x826: 0x00c0, 0x827: 0x00c0, 0x828: 0x00c0, 0x829: 0x00c0, - 0x82a: 0x00c0, 0x82b: 0x00c0, 0x82c: 0x00c0, 0x82d: 0x00c0, 0x82e: 0x00c0, 0x82f: 0x00c0, - 0x830: 0x00c0, 0x831: 0x00c0, 0x832: 0x00c0, 0x833: 0x00c0, 0x834: 0x00c0, 0x835: 0x00c0, - 0x836: 0x00c0, 0x837: 0x00c0, 0x838: 0x00c0, 0x839: 0x00c0, 0x83a: 0x00c3, 0x83b: 0x00c0, - 0x83c: 0x00c3, 0x83d: 0x00c0, 0x83e: 0x00c0, 0x83f: 0x00c0, - // Block 0x21, offset 0x840 - 0x840: 0x00c0, 0x841: 0x00c3, 0x842: 0x00c3, 0x843: 0x00c3, 0x844: 0x00c3, 0x845: 0x00c3, - 0x846: 0x00c3, 0x847: 0x00c3, 0x848: 0x00c3, 0x849: 0x00c0, 0x84a: 0x00c0, 0x84b: 0x00c0, - 0x84c: 0x00c0, 0x84d: 0x00c6, 0x84e: 0x00c0, 0x84f: 0x00c0, 0x850: 0x00c0, 0x851: 0x00c3, - 0x852: 0x00c3, 0x853: 0x00c3, 0x854: 0x00c3, 0x855: 0x00c3, 0x856: 0x00c3, 0x857: 0x00c3, - 0x858: 0x0080, 0x859: 0x0080, 0x85a: 0x0080, 0x85b: 0x0080, 0x85c: 0x0080, 0x85d: 0x0080, - 0x85e: 0x0080, 0x85f: 0x0080, 0x860: 0x00c0, 0x861: 0x00c0, 0x862: 0x00c3, 0x863: 0x00c3, - 0x864: 0x0080, 0x865: 0x0080, 0x866: 0x00c0, 0x867: 0x00c0, 0x868: 0x00c0, 0x869: 0x00c0, - 0x86a: 0x00c0, 0x86b: 0x00c0, 0x86c: 0x00c0, 0x86d: 0x00c0, 0x86e: 0x00c0, 0x86f: 0x00c0, - 0x870: 0x0080, 0x871: 0x00c0, 0x872: 0x00c0, 0x873: 0x00c0, 0x874: 0x00c0, 0x875: 0x00c0, - 0x876: 0x00c0, 0x877: 0x00c0, 0x878: 0x00c0, 0x879: 0x00c0, 0x87a: 0x00c0, 0x87b: 0x00c0, - 0x87c: 0x00c0, 0x87d: 0x00c0, 0x87e: 0x00c0, 0x87f: 0x00c0, - // Block 0x22, offset 0x880 - 0x880: 0x00c0, 0x881: 0x00c3, 0x882: 0x00c0, 0x883: 0x00c0, 0x885: 0x00c0, - 0x886: 0x00c0, 0x887: 0x00c0, 0x888: 0x00c0, 0x889: 0x00c0, 0x88a: 0x00c0, 0x88b: 0x00c0, - 0x88c: 0x00c0, 0x88f: 0x00c0, 0x890: 0x00c0, - 0x893: 0x00c0, 0x894: 0x00c0, 0x895: 0x00c0, 0x896: 0x00c0, 0x897: 0x00c0, - 0x898: 0x00c0, 0x899: 0x00c0, 0x89a: 0x00c0, 0x89b: 0x00c0, 0x89c: 0x00c0, 0x89d: 0x00c0, - 0x89e: 0x00c0, 0x89f: 0x00c0, 0x8a0: 0x00c0, 0x8a1: 0x00c0, 0x8a2: 0x00c0, 0x8a3: 0x00c0, - 0x8a4: 0x00c0, 0x8a5: 0x00c0, 0x8a6: 0x00c0, 0x8a7: 0x00c0, 0x8a8: 0x00c0, - 0x8aa: 0x00c0, 0x8ab: 0x00c0, 0x8ac: 0x00c0, 0x8ad: 0x00c0, 0x8ae: 0x00c0, 0x8af: 0x00c0, - 0x8b0: 0x00c0, 0x8b2: 0x00c0, - 0x8b6: 0x00c0, 0x8b7: 0x00c0, 0x8b8: 0x00c0, 0x8b9: 0x00c0, - 0x8bc: 0x00c3, 0x8bd: 0x00c0, 0x8be: 0x00c0, 0x8bf: 0x00c0, - // Block 0x23, offset 0x8c0 - 0x8c0: 0x00c0, 0x8c1: 0x00c3, 0x8c2: 0x00c3, 0x8c3: 0x00c3, 0x8c4: 0x00c3, - 0x8c7: 0x00c0, 0x8c8: 0x00c0, 0x8cb: 0x00c0, - 0x8cc: 0x00c0, 0x8cd: 0x00c6, 0x8ce: 0x00c0, - 0x8d7: 0x00c0, - 0x8dc: 0x0080, 0x8dd: 0x0080, - 0x8df: 0x0080, 0x8e0: 0x00c0, 0x8e1: 0x00c0, 0x8e2: 0x00c3, 0x8e3: 0x00c3, - 0x8e6: 0x00c0, 0x8e7: 0x00c0, 0x8e8: 0x00c0, 0x8e9: 0x00c0, - 0x8ea: 0x00c0, 0x8eb: 0x00c0, 0x8ec: 0x00c0, 0x8ed: 0x00c0, 0x8ee: 0x00c0, 0x8ef: 0x00c0, - 0x8f0: 0x00c0, 0x8f1: 0x00c0, 0x8f2: 0x0080, 0x8f3: 0x0080, 0x8f4: 0x0080, 0x8f5: 0x0080, - 0x8f6: 0x0080, 0x8f7: 0x0080, 0x8f8: 0x0080, 0x8f9: 0x0080, 0x8fa: 0x0080, 0x8fb: 0x0080, - 0x8fc: 0x00c0, 0x8fd: 0x0080, - // Block 0x24, offset 0x900 - 0x901: 0x00c3, 0x902: 0x00c3, 0x903: 0x00c0, 0x905: 0x00c0, - 0x906: 0x00c0, 0x907: 0x00c0, 0x908: 0x00c0, 0x909: 0x00c0, 0x90a: 0x00c0, - 0x90f: 0x00c0, 0x910: 0x00c0, - 0x913: 0x00c0, 0x914: 0x00c0, 0x915: 0x00c0, 0x916: 0x00c0, 0x917: 0x00c0, - 0x918: 0x00c0, 0x919: 0x00c0, 0x91a: 0x00c0, 0x91b: 0x00c0, 0x91c: 0x00c0, 0x91d: 0x00c0, - 0x91e: 0x00c0, 0x91f: 0x00c0, 0x920: 0x00c0, 0x921: 0x00c0, 0x922: 0x00c0, 0x923: 0x00c0, - 0x924: 0x00c0, 0x925: 0x00c0, 0x926: 0x00c0, 0x927: 0x00c0, 0x928: 0x00c0, - 0x92a: 0x00c0, 0x92b: 0x00c0, 0x92c: 0x00c0, 0x92d: 0x00c0, 0x92e: 0x00c0, 0x92f: 0x00c0, - 0x930: 0x00c0, 0x932: 0x00c0, 0x933: 0x0080, 0x935: 0x00c0, - 0x936: 0x0080, 0x938: 0x00c0, 0x939: 0x00c0, - 0x93c: 0x00c3, 0x93e: 0x00c0, 0x93f: 0x00c0, - // Block 0x25, offset 0x940 - 0x940: 0x00c0, 0x941: 0x00c3, 0x942: 0x00c3, - 0x947: 0x00c3, 0x948: 0x00c3, 0x94b: 0x00c3, - 0x94c: 0x00c3, 0x94d: 0x00c6, 0x951: 0x00c3, - 0x959: 0x0080, 0x95a: 0x0080, 0x95b: 0x0080, 0x95c: 0x00c0, - 0x95e: 0x0080, - 0x966: 0x00c0, 0x967: 0x00c0, 0x968: 0x00c0, 0x969: 0x00c0, - 0x96a: 0x00c0, 0x96b: 0x00c0, 0x96c: 0x00c0, 0x96d: 0x00c0, 0x96e: 0x00c0, 0x96f: 0x00c0, - 0x970: 0x00c3, 0x971: 0x00c3, 0x972: 0x00c0, 0x973: 0x00c0, 0x974: 0x00c0, 0x975: 0x00c3, - // Block 0x26, offset 0x980 - 0x981: 0x00c3, 0x982: 0x00c3, 0x983: 0x00c0, 0x985: 0x00c0, - 0x986: 0x00c0, 0x987: 0x00c0, 0x988: 0x00c0, 0x989: 0x00c0, 0x98a: 0x00c0, 0x98b: 0x00c0, - 0x98c: 0x00c0, 0x98d: 0x00c0, 0x98f: 0x00c0, 0x990: 0x00c0, 0x991: 0x00c0, - 0x993: 0x00c0, 0x994: 0x00c0, 0x995: 0x00c0, 0x996: 0x00c0, 0x997: 0x00c0, - 0x998: 0x00c0, 0x999: 0x00c0, 0x99a: 0x00c0, 0x99b: 0x00c0, 0x99c: 0x00c0, 0x99d: 0x00c0, - 0x99e: 0x00c0, 0x99f: 0x00c0, 0x9a0: 0x00c0, 0x9a1: 0x00c0, 0x9a2: 0x00c0, 0x9a3: 0x00c0, - 0x9a4: 0x00c0, 0x9a5: 0x00c0, 0x9a6: 0x00c0, 0x9a7: 0x00c0, 0x9a8: 0x00c0, - 0x9aa: 0x00c0, 0x9ab: 0x00c0, 0x9ac: 0x00c0, 0x9ad: 0x00c0, 0x9ae: 0x00c0, 0x9af: 0x00c0, - 0x9b0: 0x00c0, 0x9b2: 0x00c0, 0x9b3: 0x00c0, 0x9b5: 0x00c0, - 0x9b6: 0x00c0, 0x9b7: 0x00c0, 0x9b8: 0x00c0, 0x9b9: 0x00c0, - 0x9bc: 0x00c3, 0x9bd: 0x00c0, 0x9be: 0x00c0, 0x9bf: 0x00c0, - // Block 0x27, offset 0x9c0 - 0x9c0: 0x00c0, 0x9c1: 0x00c3, 0x9c2: 0x00c3, 0x9c3: 0x00c3, 0x9c4: 0x00c3, 0x9c5: 0x00c3, - 0x9c7: 0x00c3, 0x9c8: 0x00c3, 0x9c9: 0x00c0, 0x9cb: 0x00c0, - 0x9cc: 0x00c0, 0x9cd: 0x00c6, 0x9d0: 0x00c0, - 0x9e0: 0x00c0, 0x9e1: 0x00c0, 0x9e2: 0x00c3, 0x9e3: 0x00c3, - 0x9e6: 0x00c0, 0x9e7: 0x00c0, 0x9e8: 0x00c0, 0x9e9: 0x00c0, - 0x9ea: 0x00c0, 0x9eb: 0x00c0, 0x9ec: 0x00c0, 0x9ed: 0x00c0, 0x9ee: 0x00c0, 0x9ef: 0x00c0, - 0x9f0: 0x0080, 0x9f1: 0x0080, - 0x9f9: 0x00c0, 0x9fa: 0x00c3, 0x9fb: 0x00c3, - 0x9fc: 0x00c3, 0x9fd: 0x00c3, 0x9fe: 0x00c3, 0x9ff: 0x00c3, - // Block 0x28, offset 0xa00 - 0xa01: 0x00c3, 0xa02: 0x00c0, 0xa03: 0x00c0, 0xa05: 0x00c0, - 0xa06: 0x00c0, 0xa07: 0x00c0, 0xa08: 0x00c0, 0xa09: 0x00c0, 0xa0a: 0x00c0, 0xa0b: 0x00c0, - 0xa0c: 0x00c0, 0xa0f: 0x00c0, 0xa10: 0x00c0, - 0xa13: 0x00c0, 0xa14: 0x00c0, 0xa15: 0x00c0, 0xa16: 0x00c0, 0xa17: 0x00c0, - 0xa18: 0x00c0, 0xa19: 0x00c0, 0xa1a: 0x00c0, 0xa1b: 0x00c0, 0xa1c: 0x00c0, 0xa1d: 0x00c0, - 0xa1e: 0x00c0, 0xa1f: 0x00c0, 0xa20: 0x00c0, 0xa21: 0x00c0, 0xa22: 0x00c0, 0xa23: 0x00c0, - 0xa24: 0x00c0, 0xa25: 0x00c0, 0xa26: 0x00c0, 0xa27: 0x00c0, 0xa28: 0x00c0, - 0xa2a: 0x00c0, 0xa2b: 0x00c0, 0xa2c: 0x00c0, 0xa2d: 0x00c0, 0xa2e: 0x00c0, 0xa2f: 0x00c0, - 0xa30: 0x00c0, 0xa32: 0x00c0, 0xa33: 0x00c0, 0xa35: 0x00c0, - 0xa36: 0x00c0, 0xa37: 0x00c0, 0xa38: 0x00c0, 0xa39: 0x00c0, - 0xa3c: 0x00c3, 0xa3d: 0x00c0, 0xa3e: 0x00c0, 0xa3f: 0x00c3, - // Block 0x29, offset 0xa40 - 0xa40: 0x00c0, 0xa41: 0x00c3, 0xa42: 0x00c3, 0xa43: 0x00c3, 0xa44: 0x00c3, - 0xa47: 0x00c0, 0xa48: 0x00c0, 0xa4b: 0x00c0, - 0xa4c: 0x00c0, 0xa4d: 0x00c6, - 0xa56: 0x00c3, 0xa57: 0x00c0, - 0xa5c: 0x0080, 0xa5d: 0x0080, - 0xa5f: 0x00c0, 0xa60: 0x00c0, 0xa61: 0x00c0, 0xa62: 0x00c3, 0xa63: 0x00c3, - 0xa66: 0x00c0, 0xa67: 0x00c0, 0xa68: 0x00c0, 0xa69: 0x00c0, - 0xa6a: 0x00c0, 0xa6b: 0x00c0, 0xa6c: 0x00c0, 0xa6d: 0x00c0, 0xa6e: 0x00c0, 0xa6f: 0x00c0, - 0xa70: 0x0080, 0xa71: 0x00c0, 0xa72: 0x0080, 0xa73: 0x0080, 0xa74: 0x0080, 0xa75: 0x0080, - 0xa76: 0x0080, 0xa77: 0x0080, - // Block 0x2a, offset 0xa80 - 0xa82: 0x00c3, 0xa83: 0x00c0, 0xa85: 0x00c0, - 0xa86: 0x00c0, 0xa87: 0x00c0, 0xa88: 0x00c0, 0xa89: 0x00c0, 0xa8a: 0x00c0, - 0xa8e: 0x00c0, 0xa8f: 0x00c0, 0xa90: 0x00c0, - 0xa92: 0x00c0, 0xa93: 0x00c0, 0xa94: 0x00c0, 0xa95: 0x00c0, - 0xa99: 0x00c0, 0xa9a: 0x00c0, 0xa9c: 0x00c0, - 0xa9e: 0x00c0, 0xa9f: 0x00c0, 0xaa3: 0x00c0, - 0xaa4: 0x00c0, 0xaa8: 0x00c0, 0xaa9: 0x00c0, - 0xaaa: 0x00c0, 0xaae: 0x00c0, 0xaaf: 0x00c0, - 0xab0: 0x00c0, 0xab1: 0x00c0, 0xab2: 0x00c0, 0xab3: 0x00c0, 0xab4: 0x00c0, 0xab5: 0x00c0, - 0xab6: 0x00c0, 0xab7: 0x00c0, 0xab8: 0x00c0, 0xab9: 0x00c0, - 0xabe: 0x00c0, 0xabf: 0x00c0, - // Block 0x2b, offset 0xac0 - 0xac0: 0x00c3, 0xac1: 0x00c0, 0xac2: 0x00c0, - 0xac6: 0x00c0, 0xac7: 0x00c0, 0xac8: 0x00c0, 0xaca: 0x00c0, 0xacb: 0x00c0, - 0xacc: 0x00c0, 0xacd: 0x00c6, 0xad0: 0x00c0, - 0xad7: 0x00c0, - 0xae6: 0x00c0, 0xae7: 0x00c0, 0xae8: 0x00c0, 0xae9: 0x00c0, - 0xaea: 0x00c0, 0xaeb: 0x00c0, 0xaec: 0x00c0, 0xaed: 0x00c0, 0xaee: 0x00c0, 0xaef: 0x00c0, - 0xaf0: 0x0080, 0xaf1: 0x0080, 0xaf2: 0x0080, 0xaf3: 0x0080, 0xaf4: 0x0080, 0xaf5: 0x0080, - 0xaf6: 0x0080, 0xaf7: 0x0080, 0xaf8: 0x0080, 0xaf9: 0x0080, 0xafa: 0x0080, - // Block 0x2c, offset 0xb00 - 0xb00: 0x00c3, 0xb01: 0x00c0, 0xb02: 0x00c0, 0xb03: 0x00c0, 0xb05: 0x00c0, - 0xb06: 0x00c0, 0xb07: 0x00c0, 0xb08: 0x00c0, 0xb09: 0x00c0, 0xb0a: 0x00c0, 0xb0b: 0x00c0, - 0xb0c: 0x00c0, 0xb0e: 0x00c0, 0xb0f: 0x00c0, 0xb10: 0x00c0, - 0xb12: 0x00c0, 0xb13: 0x00c0, 0xb14: 0x00c0, 0xb15: 0x00c0, 0xb16: 0x00c0, 0xb17: 0x00c0, - 0xb18: 0x00c0, 0xb19: 0x00c0, 0xb1a: 0x00c0, 0xb1b: 0x00c0, 0xb1c: 0x00c0, 0xb1d: 0x00c0, - 0xb1e: 0x00c0, 0xb1f: 0x00c0, 0xb20: 0x00c0, 0xb21: 0x00c0, 0xb22: 0x00c0, 0xb23: 0x00c0, - 0xb24: 0x00c0, 0xb25: 0x00c0, 0xb26: 0x00c0, 0xb27: 0x00c0, 0xb28: 0x00c0, - 0xb2a: 0x00c0, 0xb2b: 0x00c0, 0xb2c: 0x00c0, 0xb2d: 0x00c0, 0xb2e: 0x00c0, 0xb2f: 0x00c0, - 0xb30: 0x00c0, 0xb31: 0x00c0, 0xb32: 0x00c0, 0xb33: 0x00c0, 0xb34: 0x00c0, 0xb35: 0x00c0, - 0xb36: 0x00c0, 0xb37: 0x00c0, 0xb38: 0x00c0, 0xb39: 0x00c0, - 0xb3d: 0x00c0, 0xb3e: 0x00c3, 0xb3f: 0x00c3, - // Block 0x2d, offset 0xb40 - 0xb40: 0x00c3, 0xb41: 0x00c0, 0xb42: 0x00c0, 0xb43: 0x00c0, 0xb44: 0x00c0, - 0xb46: 0x00c3, 0xb47: 0x00c3, 0xb48: 0x00c3, 0xb4a: 0x00c3, 0xb4b: 0x00c3, - 0xb4c: 0x00c3, 0xb4d: 0x00c6, - 0xb55: 0x00c3, 0xb56: 0x00c3, - 0xb58: 0x00c0, 0xb59: 0x00c0, 0xb5a: 0x00c0, - 0xb60: 0x00c0, 0xb61: 0x00c0, 0xb62: 0x00c3, 0xb63: 0x00c3, - 0xb66: 0x00c0, 0xb67: 0x00c0, 0xb68: 0x00c0, 0xb69: 0x00c0, - 0xb6a: 0x00c0, 0xb6b: 0x00c0, 0xb6c: 0x00c0, 0xb6d: 0x00c0, 0xb6e: 0x00c0, 0xb6f: 0x00c0, - 0xb78: 0x0080, 0xb79: 0x0080, 0xb7a: 0x0080, 0xb7b: 0x0080, - 0xb7c: 0x0080, 0xb7d: 0x0080, 0xb7e: 0x0080, 0xb7f: 0x0080, - // Block 0x2e, offset 0xb80 - 0xb80: 0x00c0, 0xb81: 0x00c3, 0xb82: 0x00c0, 0xb83: 0x00c0, 0xb85: 0x00c0, - 0xb86: 0x00c0, 0xb87: 0x00c0, 0xb88: 0x00c0, 0xb89: 0x00c0, 0xb8a: 0x00c0, 0xb8b: 0x00c0, - 0xb8c: 0x00c0, 0xb8e: 0x00c0, 0xb8f: 0x00c0, 0xb90: 0x00c0, - 0xb92: 0x00c0, 0xb93: 0x00c0, 0xb94: 0x00c0, 0xb95: 0x00c0, 0xb96: 0x00c0, 0xb97: 0x00c0, - 0xb98: 0x00c0, 0xb99: 0x00c0, 0xb9a: 0x00c0, 0xb9b: 0x00c0, 0xb9c: 0x00c0, 0xb9d: 0x00c0, - 0xb9e: 0x00c0, 0xb9f: 0x00c0, 0xba0: 0x00c0, 0xba1: 0x00c0, 0xba2: 0x00c0, 0xba3: 0x00c0, - 0xba4: 0x00c0, 0xba5: 0x00c0, 0xba6: 0x00c0, 0xba7: 0x00c0, 0xba8: 0x00c0, - 0xbaa: 0x00c0, 0xbab: 0x00c0, 0xbac: 0x00c0, 0xbad: 0x00c0, 0xbae: 0x00c0, 0xbaf: 0x00c0, - 0xbb0: 0x00c0, 0xbb1: 0x00c0, 0xbb2: 0x00c0, 0xbb3: 0x00c0, 0xbb5: 0x00c0, - 0xbb6: 0x00c0, 0xbb7: 0x00c0, 0xbb8: 0x00c0, 0xbb9: 0x00c0, - 0xbbc: 0x00c3, 0xbbd: 0x00c0, 0xbbe: 0x00c0, 0xbbf: 0x00c3, - // Block 0x2f, offset 0xbc0 - 0xbc0: 0x00c0, 0xbc1: 0x00c0, 0xbc2: 0x00c0, 0xbc3: 0x00c0, 0xbc4: 0x00c0, - 0xbc6: 0x00c3, 0xbc7: 0x00c0, 0xbc8: 0x00c0, 0xbca: 0x00c0, 0xbcb: 0x00c0, - 0xbcc: 0x00c3, 0xbcd: 0x00c6, - 0xbd5: 0x00c0, 0xbd6: 0x00c0, - 0xbde: 0x00c0, 0xbe0: 0x00c0, 0xbe1: 0x00c0, 0xbe2: 0x00c3, 0xbe3: 0x00c3, - 0xbe6: 0x00c0, 0xbe7: 0x00c0, 0xbe8: 0x00c0, 0xbe9: 0x00c0, - 0xbea: 0x00c0, 0xbeb: 0x00c0, 0xbec: 0x00c0, 0xbed: 0x00c0, 0xbee: 0x00c0, 0xbef: 0x00c0, - 0xbf1: 0x00c0, 0xbf2: 0x00c0, - // Block 0x30, offset 0xc00 - 0xc00: 0x00c3, 0xc01: 0x00c3, 0xc02: 0x00c0, 0xc03: 0x00c0, 0xc05: 0x00c0, - 0xc06: 0x00c0, 0xc07: 0x00c0, 0xc08: 0x00c0, 0xc09: 0x00c0, 0xc0a: 0x00c0, 0xc0b: 0x00c0, - 0xc0c: 0x00c0, 0xc0e: 0x00c0, 0xc0f: 0x00c0, 0xc10: 0x00c0, - 0xc12: 0x00c0, 0xc13: 0x00c0, 0xc14: 0x00c0, 0xc15: 0x00c0, 0xc16: 0x00c0, 0xc17: 0x00c0, - 0xc18: 0x00c0, 0xc19: 0x00c0, 0xc1a: 0x00c0, 0xc1b: 0x00c0, 0xc1c: 0x00c0, 0xc1d: 0x00c0, - 0xc1e: 0x00c0, 0xc1f: 0x00c0, 0xc20: 0x00c0, 0xc21: 0x00c0, 0xc22: 0x00c0, 0xc23: 0x00c0, - 0xc24: 0x00c0, 0xc25: 0x00c0, 0xc26: 0x00c0, 0xc27: 0x00c0, 0xc28: 0x00c0, 0xc29: 0x00c0, - 0xc2a: 0x00c0, 0xc2b: 0x00c0, 0xc2c: 0x00c0, 0xc2d: 0x00c0, 0xc2e: 0x00c0, 0xc2f: 0x00c0, - 0xc30: 0x00c0, 0xc31: 0x00c0, 0xc32: 0x00c0, 0xc33: 0x00c0, 0xc34: 0x00c0, 0xc35: 0x00c0, - 0xc36: 0x00c0, 0xc37: 0x00c0, 0xc38: 0x00c0, 0xc39: 0x00c0, 0xc3a: 0x00c0, 0xc3b: 0x00c6, - 0xc3c: 0x00c6, 0xc3d: 0x00c0, 0xc3e: 0x00c0, 0xc3f: 0x00c0, - // Block 0x31, offset 0xc40 - 0xc40: 0x00c0, 0xc41: 0x00c3, 0xc42: 0x00c3, 0xc43: 0x00c3, 0xc44: 0x00c3, - 0xc46: 0x00c0, 0xc47: 0x00c0, 0xc48: 0x00c0, 0xc4a: 0x00c0, 0xc4b: 0x00c0, - 0xc4c: 0x00c0, 0xc4d: 0x00c6, 0xc4e: 0x00c0, 0xc4f: 0x0080, - 0xc54: 0x00c0, 0xc55: 0x00c0, 0xc56: 0x00c0, 0xc57: 0x00c0, - 0xc58: 0x0080, 0xc59: 0x0080, 0xc5a: 0x0080, 0xc5b: 0x0080, 0xc5c: 0x0080, 0xc5d: 0x0080, - 0xc5e: 0x0080, 0xc5f: 0x00c0, 0xc60: 0x00c0, 0xc61: 0x00c0, 0xc62: 0x00c3, 0xc63: 0x00c3, - 0xc66: 0x00c0, 0xc67: 0x00c0, 0xc68: 0x00c0, 0xc69: 0x00c0, - 0xc6a: 0x00c0, 0xc6b: 0x00c0, 0xc6c: 0x00c0, 0xc6d: 0x00c0, 0xc6e: 0x00c0, 0xc6f: 0x00c0, - 0xc70: 0x0080, 0xc71: 0x0080, 0xc72: 0x0080, 0xc73: 0x0080, 0xc74: 0x0080, 0xc75: 0x0080, - 0xc76: 0x0080, 0xc77: 0x0080, 0xc78: 0x0080, 0xc79: 0x0080, 0xc7a: 0x00c0, 0xc7b: 0x00c0, - 0xc7c: 0x00c0, 0xc7d: 0x00c0, 0xc7e: 0x00c0, 0xc7f: 0x00c0, - // Block 0x32, offset 0xc80 - 0xc82: 0x00c0, 0xc83: 0x00c0, 0xc85: 0x00c0, - 0xc86: 0x00c0, 0xc87: 0x00c0, 0xc88: 0x00c0, 0xc89: 0x00c0, 0xc8a: 0x00c0, 0xc8b: 0x00c0, - 0xc8c: 0x00c0, 0xc8d: 0x00c0, 0xc8e: 0x00c0, 0xc8f: 0x00c0, 0xc90: 0x00c0, 0xc91: 0x00c0, - 0xc92: 0x00c0, 0xc93: 0x00c0, 0xc94: 0x00c0, 0xc95: 0x00c0, 0xc96: 0x00c0, - 0xc9a: 0x00c0, 0xc9b: 0x00c0, 0xc9c: 0x00c0, 0xc9d: 0x00c0, - 0xc9e: 0x00c0, 0xc9f: 0x00c0, 0xca0: 0x00c0, 0xca1: 0x00c0, 0xca2: 0x00c0, 0xca3: 0x00c0, - 0xca4: 0x00c0, 0xca5: 0x00c0, 0xca6: 0x00c0, 0xca7: 0x00c0, 0xca8: 0x00c0, 0xca9: 0x00c0, - 0xcaa: 0x00c0, 0xcab: 0x00c0, 0xcac: 0x00c0, 0xcad: 0x00c0, 0xcae: 0x00c0, 0xcaf: 0x00c0, - 0xcb0: 0x00c0, 0xcb1: 0x00c0, 0xcb3: 0x00c0, 0xcb4: 0x00c0, 0xcb5: 0x00c0, - 0xcb6: 0x00c0, 0xcb7: 0x00c0, 0xcb8: 0x00c0, 0xcb9: 0x00c0, 0xcba: 0x00c0, 0xcbb: 0x00c0, - 0xcbd: 0x00c0, - // Block 0x33, offset 0xcc0 - 0xcc0: 0x00c0, 0xcc1: 0x00c0, 0xcc2: 0x00c0, 0xcc3: 0x00c0, 0xcc4: 0x00c0, 0xcc5: 0x00c0, - 0xcc6: 0x00c0, 0xcca: 0x00c6, - 0xccf: 0x00c0, 0xcd0: 0x00c0, 0xcd1: 0x00c0, - 0xcd2: 0x00c3, 0xcd3: 0x00c3, 0xcd4: 0x00c3, 0xcd6: 0x00c3, - 0xcd8: 0x00c0, 0xcd9: 0x00c0, 0xcda: 0x00c0, 0xcdb: 0x00c0, 0xcdc: 0x00c0, 0xcdd: 0x00c0, - 0xcde: 0x00c0, 0xcdf: 0x00c0, - 0xce6: 0x00c0, 0xce7: 0x00c0, 0xce8: 0x00c0, 0xce9: 0x00c0, - 0xcea: 0x00c0, 0xceb: 0x00c0, 0xcec: 0x00c0, 0xced: 0x00c0, 0xcee: 0x00c0, 0xcef: 0x00c0, - 0xcf2: 0x00c0, 0xcf3: 0x00c0, 0xcf4: 0x0080, - // Block 0x34, offset 0xd00 - 0xd01: 0x00c0, 0xd02: 0x00c0, 0xd03: 0x00c0, 0xd04: 0x00c0, 0xd05: 0x00c0, - 0xd06: 0x00c0, 0xd07: 0x00c0, 0xd08: 0x00c0, 0xd09: 0x00c0, 0xd0a: 0x00c0, 0xd0b: 0x00c0, - 0xd0c: 0x00c0, 0xd0d: 0x00c0, 0xd0e: 0x00c0, 0xd0f: 0x00c0, 0xd10: 0x00c0, 0xd11: 0x00c0, - 0xd12: 0x00c0, 0xd13: 0x00c0, 0xd14: 0x00c0, 0xd15: 0x00c0, 0xd16: 0x00c0, 0xd17: 0x00c0, - 0xd18: 0x00c0, 0xd19: 0x00c0, 0xd1a: 0x00c0, 0xd1b: 0x00c0, 0xd1c: 0x00c0, 0xd1d: 0x00c0, - 0xd1e: 0x00c0, 0xd1f: 0x00c0, 0xd20: 0x00c0, 0xd21: 0x00c0, 0xd22: 0x00c0, 0xd23: 0x00c0, - 0xd24: 0x00c0, 0xd25: 0x00c0, 0xd26: 0x00c0, 0xd27: 0x00c0, 0xd28: 0x00c0, 0xd29: 0x00c0, - 0xd2a: 0x00c0, 0xd2b: 0x00c0, 0xd2c: 0x00c0, 0xd2d: 0x00c0, 0xd2e: 0x00c0, 0xd2f: 0x00c0, - 0xd30: 0x00c0, 0xd31: 0x00c3, 0xd32: 0x00c0, 0xd33: 0x0080, 0xd34: 0x00c3, 0xd35: 0x00c3, - 0xd36: 0x00c3, 0xd37: 0x00c3, 0xd38: 0x00c3, 0xd39: 0x00c3, 0xd3a: 0x00c6, - 0xd3f: 0x0080, - // Block 0x35, offset 0xd40 - 0xd40: 0x00c0, 0xd41: 0x00c0, 0xd42: 0x00c0, 0xd43: 0x00c0, 0xd44: 0x00c0, 0xd45: 0x00c0, - 0xd46: 0x00c0, 0xd47: 0x00c3, 0xd48: 0x00c3, 0xd49: 0x00c3, 0xd4a: 0x00c3, 0xd4b: 0x00c3, - 0xd4c: 0x00c3, 0xd4d: 0x00c3, 0xd4e: 0x00c3, 0xd4f: 0x0080, 0xd50: 0x00c0, 0xd51: 0x00c0, - 0xd52: 0x00c0, 0xd53: 0x00c0, 0xd54: 0x00c0, 0xd55: 0x00c0, 0xd56: 0x00c0, 0xd57: 0x00c0, - 0xd58: 0x00c0, 0xd59: 0x00c0, 0xd5a: 0x0080, 0xd5b: 0x0080, - // Block 0x36, offset 0xd80 - 0xd81: 0x00c0, 0xd82: 0x00c0, 0xd84: 0x00c0, - 0xd87: 0x00c0, 0xd88: 0x00c0, 0xd8a: 0x00c0, - 0xd8d: 0x00c0, - 0xd94: 0x00c0, 0xd95: 0x00c0, 0xd96: 0x00c0, 0xd97: 0x00c0, - 0xd99: 0x00c0, 0xd9a: 0x00c0, 0xd9b: 0x00c0, 0xd9c: 0x00c0, 0xd9d: 0x00c0, - 0xd9e: 0x00c0, 0xd9f: 0x00c0, 0xda1: 0x00c0, 0xda2: 0x00c0, 0xda3: 0x00c0, - 0xda5: 0x00c0, 0xda7: 0x00c0, - 0xdaa: 0x00c0, 0xdab: 0x00c0, 0xdad: 0x00c0, 0xdae: 0x00c0, 0xdaf: 0x00c0, - 0xdb0: 0x00c0, 0xdb1: 0x00c3, 0xdb2: 0x00c0, 0xdb3: 0x0080, 0xdb4: 0x00c3, 0xdb5: 0x00c3, - 0xdb6: 0x00c3, 0xdb7: 0x00c3, 0xdb8: 0x00c3, 0xdb9: 0x00c3, 0xdbb: 0x00c3, - 0xdbc: 0x00c3, 0xdbd: 0x00c0, - // Block 0x37, offset 0xdc0 - 0xdc0: 0x00c0, 0xdc1: 0x00c0, 0xdc2: 0x00c0, 0xdc3: 0x00c0, 0xdc4: 0x00c0, - 0xdc6: 0x00c0, 0xdc8: 0x00c3, 0xdc9: 0x00c3, 0xdca: 0x00c3, 0xdcb: 0x00c3, - 0xdcc: 0x00c3, 0xdcd: 0x00c3, 0xdd0: 0x00c0, 0xdd1: 0x00c0, - 0xdd2: 0x00c0, 0xdd3: 0x00c0, 0xdd4: 0x00c0, 0xdd5: 0x00c0, 0xdd6: 0x00c0, 0xdd7: 0x00c0, - 0xdd8: 0x00c0, 0xdd9: 0x00c0, 0xddc: 0x0080, 0xddd: 0x0080, - 0xdde: 0x00c0, 0xddf: 0x00c0, - // Block 0x38, offset 0xe00 - 0xe00: 0x00c0, 0xe01: 0x0080, 0xe02: 0x0080, 0xe03: 0x0080, 0xe04: 0x0080, 0xe05: 0x0080, - 0xe06: 0x0080, 0xe07: 0x0080, 0xe08: 0x0080, 0xe09: 0x0080, 0xe0a: 0x0080, 0xe0b: 0x00c0, - 0xe0c: 0x0080, 0xe0d: 0x0080, 0xe0e: 0x0080, 0xe0f: 0x0080, 0xe10: 0x0080, 0xe11: 0x0080, - 0xe12: 0x0080, 0xe13: 0x0080, 0xe14: 0x0080, 0xe15: 0x0080, 0xe16: 0x0080, 0xe17: 0x0080, - 0xe18: 0x00c3, 0xe19: 0x00c3, 0xe1a: 0x0080, 0xe1b: 0x0080, 0xe1c: 0x0080, 0xe1d: 0x0080, - 0xe1e: 0x0080, 0xe1f: 0x0080, 0xe20: 0x00c0, 0xe21: 0x00c0, 0xe22: 0x00c0, 0xe23: 0x00c0, - 0xe24: 0x00c0, 0xe25: 0x00c0, 0xe26: 0x00c0, 0xe27: 0x00c0, 0xe28: 0x00c0, 0xe29: 0x00c0, - 0xe2a: 0x0080, 0xe2b: 0x0080, 0xe2c: 0x0080, 0xe2d: 0x0080, 0xe2e: 0x0080, 0xe2f: 0x0080, - 0xe30: 0x0080, 0xe31: 0x0080, 0xe32: 0x0080, 0xe33: 0x0080, 0xe34: 0x0080, 0xe35: 0x00c3, - 0xe36: 0x0080, 0xe37: 0x00c3, 0xe38: 0x0080, 0xe39: 0x00c3, 0xe3a: 0x0080, 0xe3b: 0x0080, - 0xe3c: 0x0080, 0xe3d: 0x0080, 0xe3e: 0x00c0, 0xe3f: 0x00c0, - // Block 0x39, offset 0xe40 - 0xe40: 0x00c0, 0xe41: 0x00c0, 0xe42: 0x00c0, 0xe43: 0x0080, 0xe44: 0x00c0, 0xe45: 0x00c0, - 0xe46: 0x00c0, 0xe47: 0x00c0, 0xe49: 0x00c0, 0xe4a: 0x00c0, 0xe4b: 0x00c0, - 0xe4c: 0x00c0, 0xe4d: 0x0080, 0xe4e: 0x00c0, 0xe4f: 0x00c0, 0xe50: 0x00c0, 0xe51: 0x00c0, - 0xe52: 0x0080, 0xe53: 0x00c0, 0xe54: 0x00c0, 0xe55: 0x00c0, 0xe56: 0x00c0, 0xe57: 0x0080, - 0xe58: 0x00c0, 0xe59: 0x00c0, 0xe5a: 0x00c0, 0xe5b: 0x00c0, 0xe5c: 0x0080, 0xe5d: 0x00c0, - 0xe5e: 0x00c0, 0xe5f: 0x00c0, 0xe60: 0x00c0, 0xe61: 0x00c0, 0xe62: 0x00c0, 0xe63: 0x00c0, - 0xe64: 0x00c0, 0xe65: 0x00c0, 0xe66: 0x00c0, 0xe67: 0x00c0, 0xe68: 0x00c0, 0xe69: 0x0080, - 0xe6a: 0x00c0, 0xe6b: 0x00c0, 0xe6c: 0x00c0, - 0xe71: 0x00c3, 0xe72: 0x00c3, 0xe73: 0x0083, 0xe74: 0x00c3, 0xe75: 0x0083, - 0xe76: 0x0083, 0xe77: 0x0083, 0xe78: 0x0083, 0xe79: 0x0083, 0xe7a: 0x00c3, 0xe7b: 0x00c3, - 0xe7c: 0x00c3, 0xe7d: 0x00c3, 0xe7e: 0x00c3, 0xe7f: 0x00c0, - // Block 0x3a, offset 0xe80 - 0xe80: 0x00c3, 0xe81: 0x0083, 0xe82: 0x00c3, 0xe83: 0x00c3, 0xe84: 0x00c6, 0xe85: 0x0080, - 0xe86: 0x00c3, 0xe87: 0x00c3, 0xe88: 0x00c0, 0xe89: 0x00c0, 0xe8a: 0x00c0, 0xe8b: 0x00c0, - 0xe8c: 0x00c0, 0xe8d: 0x00c3, 0xe8e: 0x00c3, 0xe8f: 0x00c3, 0xe90: 0x00c3, 0xe91: 0x00c3, - 0xe92: 0x00c3, 0xe93: 0x0083, 0xe94: 0x00c3, 0xe95: 0x00c3, 0xe96: 0x00c3, 0xe97: 0x00c3, - 0xe99: 0x00c3, 0xe9a: 0x00c3, 0xe9b: 0x00c3, 0xe9c: 0x00c3, 0xe9d: 0x0083, - 0xe9e: 0x00c3, 0xe9f: 0x00c3, 0xea0: 0x00c3, 0xea1: 0x00c3, 0xea2: 0x0083, 0xea3: 0x00c3, - 0xea4: 0x00c3, 0xea5: 0x00c3, 0xea6: 0x00c3, 0xea7: 0x0083, 0xea8: 0x00c3, 0xea9: 0x00c3, - 0xeaa: 0x00c3, 0xeab: 0x00c3, 0xeac: 0x0083, 0xead: 0x00c3, 0xeae: 0x00c3, 0xeaf: 0x00c3, - 0xeb0: 0x00c3, 0xeb1: 0x00c3, 0xeb2: 0x00c3, 0xeb3: 0x00c3, 0xeb4: 0x00c3, 0xeb5: 0x00c3, - 0xeb6: 0x00c3, 0xeb7: 0x00c3, 0xeb8: 0x00c3, 0xeb9: 0x0083, 0xeba: 0x00c3, 0xebb: 0x00c3, - 0xebc: 0x00c3, 0xebe: 0x0080, 0xebf: 0x0080, - // Block 0x3b, offset 0xec0 - 0xec0: 0x0080, 0xec1: 0x0080, 0xec2: 0x0080, 0xec3: 0x0080, 0xec4: 0x0080, 0xec5: 0x0080, - 0xec6: 0x00c3, 0xec7: 0x0080, 0xec8: 0x0080, 0xec9: 0x0080, 0xeca: 0x0080, 0xecb: 0x0080, - 0xecc: 0x0080, 0xece: 0x0080, 0xecf: 0x0080, 0xed0: 0x0080, 0xed1: 0x0080, - 0xed2: 0x0080, 0xed3: 0x0080, 0xed4: 0x0080, 0xed5: 0x0080, 0xed6: 0x0080, 0xed7: 0x0080, - 0xed8: 0x0080, 0xed9: 0x0080, 0xeda: 0x0080, - // Block 0x3c, offset 0xf00 - 0xf00: 0x00c0, 0xf01: 0x00c0, 0xf02: 0x00c0, 0xf03: 0x00c0, 0xf04: 0x00c0, 0xf05: 0x00c0, - 0xf06: 0x00c0, 0xf07: 0x00c0, 0xf08: 0x00c0, 0xf09: 0x00c0, 0xf0a: 0x00c0, 0xf0b: 0x00c0, - 0xf0c: 0x00c0, 0xf0d: 0x00c0, 0xf0e: 0x00c0, 0xf0f: 0x00c0, 0xf10: 0x00c0, 0xf11: 0x00c0, - 0xf12: 0x00c0, 0xf13: 0x00c0, 0xf14: 0x00c0, 0xf15: 0x00c0, 0xf16: 0x00c0, 0xf17: 0x00c0, - 0xf18: 0x00c0, 0xf19: 0x00c0, 0xf1a: 0x00c0, 0xf1b: 0x00c0, 0xf1c: 0x00c0, 0xf1d: 0x00c0, - 0xf1e: 0x00c0, 0xf1f: 0x00c0, 0xf20: 0x00c0, 0xf21: 0x00c0, 0xf22: 0x00c0, 0xf23: 0x00c0, - 0xf24: 0x00c0, 0xf25: 0x00c0, 0xf26: 0x00c0, 0xf27: 0x00c0, 0xf28: 0x00c0, 0xf29: 0x00c0, - 0xf2a: 0x00c0, 0xf2b: 0x00c0, 0xf2c: 0x00c0, 0xf2d: 0x00c3, 0xf2e: 0x00c3, 0xf2f: 0x00c3, - 0xf30: 0x00c3, 0xf31: 0x00c0, 0xf32: 0x00c3, 0xf33: 0x00c3, 0xf34: 0x00c3, 0xf35: 0x00c3, - 0xf36: 0x00c3, 0xf37: 0x00c3, 0xf38: 0x00c0, 0xf39: 0x00c6, 0xf3a: 0x00c6, 0xf3b: 0x00c0, - 0xf3c: 0x00c0, 0xf3d: 0x00c3, 0xf3e: 0x00c3, 0xf3f: 0x00c0, - // Block 0x3d, offset 0xf40 - 0xf40: 0x00c0, 0xf41: 0x00c0, 0xf42: 0x00c0, 0xf43: 0x00c0, 0xf44: 0x00c0, 0xf45: 0x00c0, - 0xf46: 0x00c0, 0xf47: 0x00c0, 0xf48: 0x00c0, 0xf49: 0x00c0, 0xf4a: 0x0080, 0xf4b: 0x0080, - 0xf4c: 0x0080, 0xf4d: 0x0080, 0xf4e: 0x0080, 0xf4f: 0x0080, 0xf50: 0x00c0, 0xf51: 0x00c0, - 0xf52: 0x00c0, 0xf53: 0x00c0, 0xf54: 0x00c0, 0xf55: 0x00c0, 0xf56: 0x00c0, 0xf57: 0x00c0, - 0xf58: 0x00c3, 0xf59: 0x00c3, 0xf5a: 0x00c0, 0xf5b: 0x00c0, 0xf5c: 0x00c0, 0xf5d: 0x00c0, - 0xf5e: 0x00c3, 0xf5f: 0x00c3, 0xf60: 0x00c3, 0xf61: 0x00c0, 0xf62: 0x00c0, 0xf63: 0x00c0, - 0xf64: 0x00c0, 0xf65: 0x00c0, 0xf66: 0x00c0, 0xf67: 0x00c0, 0xf68: 0x00c0, 0xf69: 0x00c0, - 0xf6a: 0x00c0, 0xf6b: 0x00c0, 0xf6c: 0x00c0, 0xf6d: 0x00c0, 0xf6e: 0x00c0, 0xf6f: 0x00c0, - 0xf70: 0x00c0, 0xf71: 0x00c3, 0xf72: 0x00c3, 0xf73: 0x00c3, 0xf74: 0x00c3, 0xf75: 0x00c0, - 0xf76: 0x00c0, 0xf77: 0x00c0, 0xf78: 0x00c0, 0xf79: 0x00c0, 0xf7a: 0x00c0, 0xf7b: 0x00c0, - 0xf7c: 0x00c0, 0xf7d: 0x00c0, 0xf7e: 0x00c0, 0xf7f: 0x00c0, - // Block 0x3e, offset 0xf80 - 0xf80: 0x00c0, 0xf81: 0x00c0, 0xf82: 0x00c3, 0xf83: 0x00c0, 0xf84: 0x00c0, 0xf85: 0x00c3, - 0xf86: 0x00c3, 0xf87: 0x00c0, 0xf88: 0x00c0, 0xf89: 0x00c0, 0xf8a: 0x00c0, 0xf8b: 0x00c0, - 0xf8c: 0x00c0, 0xf8d: 0x00c3, 0xf8e: 0x00c0, 0xf8f: 0x00c0, 0xf90: 0x00c0, 0xf91: 0x00c0, - 0xf92: 0x00c0, 0xf93: 0x00c0, 0xf94: 0x00c0, 0xf95: 0x00c0, 0xf96: 0x00c0, 0xf97: 0x00c0, - 0xf98: 0x00c0, 0xf99: 0x00c0, 0xf9a: 0x00c0, 0xf9b: 0x00c0, 0xf9c: 0x00c0, 0xf9d: 0x00c3, - 0xf9e: 0x0080, 0xf9f: 0x0080, 0xfa0: 0x00c0, 0xfa1: 0x00c0, 0xfa2: 0x00c0, 0xfa3: 0x00c0, - 0xfa4: 0x00c0, 0xfa5: 0x00c0, 0xfa6: 0x00c0, 0xfa7: 0x00c0, 0xfa8: 0x00c0, 0xfa9: 0x00c0, - 0xfaa: 0x00c0, 0xfab: 0x00c0, 0xfac: 0x00c0, 0xfad: 0x00c0, 0xfae: 0x00c0, 0xfaf: 0x00c0, - 0xfb0: 0x00c0, 0xfb1: 0x00c0, 0xfb2: 0x00c0, 0xfb3: 0x00c0, 0xfb4: 0x00c0, 0xfb5: 0x00c0, - 0xfb6: 0x00c0, 0xfb7: 0x00c0, 0xfb8: 0x00c0, 0xfb9: 0x00c0, 0xfba: 0x00c0, 0xfbb: 0x00c0, - 0xfbc: 0x00c0, 0xfbd: 0x00c0, 0xfbe: 0x00c0, 0xfbf: 0x00c0, - // Block 0x3f, offset 0xfc0 - 0xfc0: 0x00c0, 0xfc1: 0x00c0, 0xfc2: 0x00c0, 0xfc3: 0x00c0, 0xfc4: 0x00c0, 0xfc5: 0x00c0, - 0xfc7: 0x00c0, - 0xfcd: 0x00c0, 0xfd0: 0x00c0, 0xfd1: 0x00c0, - 0xfd2: 0x00c0, 0xfd3: 0x00c0, 0xfd4: 0x00c0, 0xfd5: 0x00c0, 0xfd6: 0x00c0, 0xfd7: 0x00c0, - 0xfd8: 0x00c0, 0xfd9: 0x00c0, 0xfda: 0x00c0, 0xfdb: 0x00c0, 0xfdc: 0x00c0, 0xfdd: 0x00c0, - 0xfde: 0x00c0, 0xfdf: 0x00c0, 0xfe0: 0x00c0, 0xfe1: 0x00c0, 0xfe2: 0x00c0, 0xfe3: 0x00c0, - 0xfe4: 0x00c0, 0xfe5: 0x00c0, 0xfe6: 0x00c0, 0xfe7: 0x00c0, 0xfe8: 0x00c0, 0xfe9: 0x00c0, - 0xfea: 0x00c0, 0xfeb: 0x00c0, 0xfec: 0x00c0, 0xfed: 0x00c0, 0xfee: 0x00c0, 0xfef: 0x00c0, - 0xff0: 0x00c0, 0xff1: 0x00c0, 0xff2: 0x00c0, 0xff3: 0x00c0, 0xff4: 0x00c0, 0xff5: 0x00c0, - 0xff6: 0x00c0, 0xff7: 0x00c0, 0xff8: 0x00c0, 0xff9: 0x00c0, 0xffa: 0x00c0, 0xffb: 0x0080, - 0xffc: 0x0080, 0xffd: 0x00c0, 0xffe: 0x00c0, 0xfff: 0x00c0, - // Block 0x40, offset 0x1000 - 0x1000: 0x0040, 0x1001: 0x0040, 0x1002: 0x0040, 0x1003: 0x0040, 0x1004: 0x0040, 0x1005: 0x0040, - 0x1006: 0x0040, 0x1007: 0x0040, 0x1008: 0x0040, 0x1009: 0x0040, 0x100a: 0x0040, 0x100b: 0x0040, - 0x100c: 0x0040, 0x100d: 0x0040, 0x100e: 0x0040, 0x100f: 0x0040, 0x1010: 0x0040, 0x1011: 0x0040, - 0x1012: 0x0040, 0x1013: 0x0040, 0x1014: 0x0040, 0x1015: 0x0040, 0x1016: 0x0040, 0x1017: 0x0040, - 0x1018: 0x0040, 0x1019: 0x0040, 0x101a: 0x0040, 0x101b: 0x0040, 0x101c: 0x0040, 0x101d: 0x0040, - 0x101e: 0x0040, 0x101f: 0x0040, 0x1020: 0x0040, 0x1021: 0x0040, 0x1022: 0x0040, 0x1023: 0x0040, - 0x1024: 0x0040, 0x1025: 0x0040, 0x1026: 0x0040, 0x1027: 0x0040, 0x1028: 0x0040, 0x1029: 0x0040, - 0x102a: 0x0040, 0x102b: 0x0040, 0x102c: 0x0040, 0x102d: 0x0040, 0x102e: 0x0040, 0x102f: 0x0040, - 0x1030: 0x0040, 0x1031: 0x0040, 0x1032: 0x0040, 0x1033: 0x0040, 0x1034: 0x0040, 0x1035: 0x0040, - 0x1036: 0x0040, 0x1037: 0x0040, 0x1038: 0x0040, 0x1039: 0x0040, 0x103a: 0x0040, 0x103b: 0x0040, - 0x103c: 0x0040, 0x103d: 0x0040, 0x103e: 0x0040, 0x103f: 0x0040, - // Block 0x41, offset 0x1040 - 0x1040: 0x00c0, 0x1041: 0x00c0, 0x1042: 0x00c0, 0x1043: 0x00c0, 0x1044: 0x00c0, 0x1045: 0x00c0, - 0x1046: 0x00c0, 0x1047: 0x00c0, 0x1048: 0x00c0, 0x104a: 0x00c0, 0x104b: 0x00c0, - 0x104c: 0x00c0, 0x104d: 0x00c0, 0x1050: 0x00c0, 0x1051: 0x00c0, - 0x1052: 0x00c0, 0x1053: 0x00c0, 0x1054: 0x00c0, 0x1055: 0x00c0, 0x1056: 0x00c0, - 0x1058: 0x00c0, 0x105a: 0x00c0, 0x105b: 0x00c0, 0x105c: 0x00c0, 0x105d: 0x00c0, - 0x1060: 0x00c0, 0x1061: 0x00c0, 0x1062: 0x00c0, 0x1063: 0x00c0, - 0x1064: 0x00c0, 0x1065: 0x00c0, 0x1066: 0x00c0, 0x1067: 0x00c0, 0x1068: 0x00c0, 0x1069: 0x00c0, - 0x106a: 0x00c0, 0x106b: 0x00c0, 0x106c: 0x00c0, 0x106d: 0x00c0, 0x106e: 0x00c0, 0x106f: 0x00c0, - 0x1070: 0x00c0, 0x1071: 0x00c0, 0x1072: 0x00c0, 0x1073: 0x00c0, 0x1074: 0x00c0, 0x1075: 0x00c0, - 0x1076: 0x00c0, 0x1077: 0x00c0, 0x1078: 0x00c0, 0x1079: 0x00c0, 0x107a: 0x00c0, 0x107b: 0x00c0, - 0x107c: 0x00c0, 0x107d: 0x00c0, 0x107e: 0x00c0, 0x107f: 0x00c0, - // Block 0x42, offset 0x1080 - 0x1080: 0x00c0, 0x1081: 0x00c0, 0x1082: 0x00c0, 0x1083: 0x00c0, 0x1084: 0x00c0, 0x1085: 0x00c0, - 0x1086: 0x00c0, 0x1087: 0x00c0, 0x1088: 0x00c0, 0x108a: 0x00c0, 0x108b: 0x00c0, - 0x108c: 0x00c0, 0x108d: 0x00c0, 0x1090: 0x00c0, 0x1091: 0x00c0, - 0x1092: 0x00c0, 0x1093: 0x00c0, 0x1094: 0x00c0, 0x1095: 0x00c0, 0x1096: 0x00c0, 0x1097: 0x00c0, - 0x1098: 0x00c0, 0x1099: 0x00c0, 0x109a: 0x00c0, 0x109b: 0x00c0, 0x109c: 0x00c0, 0x109d: 0x00c0, - 0x109e: 0x00c0, 0x109f: 0x00c0, 0x10a0: 0x00c0, 0x10a1: 0x00c0, 0x10a2: 0x00c0, 0x10a3: 0x00c0, - 0x10a4: 0x00c0, 0x10a5: 0x00c0, 0x10a6: 0x00c0, 0x10a7: 0x00c0, 0x10a8: 0x00c0, 0x10a9: 0x00c0, - 0x10aa: 0x00c0, 0x10ab: 0x00c0, 0x10ac: 0x00c0, 0x10ad: 0x00c0, 0x10ae: 0x00c0, 0x10af: 0x00c0, - 0x10b0: 0x00c0, 0x10b2: 0x00c0, 0x10b3: 0x00c0, 0x10b4: 0x00c0, 0x10b5: 0x00c0, - 0x10b8: 0x00c0, 0x10b9: 0x00c0, 0x10ba: 0x00c0, 0x10bb: 0x00c0, - 0x10bc: 0x00c0, 0x10bd: 0x00c0, 0x10be: 0x00c0, - // Block 0x43, offset 0x10c0 - 0x10c0: 0x00c0, 0x10c2: 0x00c0, 0x10c3: 0x00c0, 0x10c4: 0x00c0, 0x10c5: 0x00c0, - 0x10c8: 0x00c0, 0x10c9: 0x00c0, 0x10ca: 0x00c0, 0x10cb: 0x00c0, - 0x10cc: 0x00c0, 0x10cd: 0x00c0, 0x10ce: 0x00c0, 0x10cf: 0x00c0, 0x10d0: 0x00c0, 0x10d1: 0x00c0, - 0x10d2: 0x00c0, 0x10d3: 0x00c0, 0x10d4: 0x00c0, 0x10d5: 0x00c0, 0x10d6: 0x00c0, - 0x10d8: 0x00c0, 0x10d9: 0x00c0, 0x10da: 0x00c0, 0x10db: 0x00c0, 0x10dc: 0x00c0, 0x10dd: 0x00c0, - 0x10de: 0x00c0, 0x10df: 0x00c0, 0x10e0: 0x00c0, 0x10e1: 0x00c0, 0x10e2: 0x00c0, 0x10e3: 0x00c0, - 0x10e4: 0x00c0, 0x10e5: 0x00c0, 0x10e6: 0x00c0, 0x10e7: 0x00c0, 0x10e8: 0x00c0, 0x10e9: 0x00c0, - 0x10ea: 0x00c0, 0x10eb: 0x00c0, 0x10ec: 0x00c0, 0x10ed: 0x00c0, 0x10ee: 0x00c0, 0x10ef: 0x00c0, - 0x10f0: 0x00c0, 0x10f1: 0x00c0, 0x10f2: 0x00c0, 0x10f3: 0x00c0, 0x10f4: 0x00c0, 0x10f5: 0x00c0, - 0x10f6: 0x00c0, 0x10f7: 0x00c0, 0x10f8: 0x00c0, 0x10f9: 0x00c0, 0x10fa: 0x00c0, 0x10fb: 0x00c0, - 0x10fc: 0x00c0, 0x10fd: 0x00c0, 0x10fe: 0x00c0, 0x10ff: 0x00c0, - // Block 0x44, offset 0x1100 - 0x1100: 0x00c0, 0x1101: 0x00c0, 0x1102: 0x00c0, 0x1103: 0x00c0, 0x1104: 0x00c0, 0x1105: 0x00c0, - 0x1106: 0x00c0, 0x1107: 0x00c0, 0x1108: 0x00c0, 0x1109: 0x00c0, 0x110a: 0x00c0, 0x110b: 0x00c0, - 0x110c: 0x00c0, 0x110d: 0x00c0, 0x110e: 0x00c0, 0x110f: 0x00c0, 0x1110: 0x00c0, - 0x1112: 0x00c0, 0x1113: 0x00c0, 0x1114: 0x00c0, 0x1115: 0x00c0, - 0x1118: 0x00c0, 0x1119: 0x00c0, 0x111a: 0x00c0, 0x111b: 0x00c0, 0x111c: 0x00c0, 0x111d: 0x00c0, - 0x111e: 0x00c0, 0x111f: 0x00c0, 0x1120: 0x00c0, 0x1121: 0x00c0, 0x1122: 0x00c0, 0x1123: 0x00c0, - 0x1124: 0x00c0, 0x1125: 0x00c0, 0x1126: 0x00c0, 0x1127: 0x00c0, 0x1128: 0x00c0, 0x1129: 0x00c0, - 0x112a: 0x00c0, 0x112b: 0x00c0, 0x112c: 0x00c0, 0x112d: 0x00c0, 0x112e: 0x00c0, 0x112f: 0x00c0, - 0x1130: 0x00c0, 0x1131: 0x00c0, 0x1132: 0x00c0, 0x1133: 0x00c0, 0x1134: 0x00c0, 0x1135: 0x00c0, - 0x1136: 0x00c0, 0x1137: 0x00c0, 0x1138: 0x00c0, 0x1139: 0x00c0, 0x113a: 0x00c0, 0x113b: 0x00c0, - 0x113c: 0x00c0, 0x113d: 0x00c0, 0x113e: 0x00c0, 0x113f: 0x00c0, - // Block 0x45, offset 0x1140 - 0x1140: 0x00c0, 0x1141: 0x00c0, 0x1142: 0x00c0, 0x1143: 0x00c0, 0x1144: 0x00c0, 0x1145: 0x00c0, - 0x1146: 0x00c0, 0x1147: 0x00c0, 0x1148: 0x00c0, 0x1149: 0x00c0, 0x114a: 0x00c0, 0x114b: 0x00c0, - 0x114c: 0x00c0, 0x114d: 0x00c0, 0x114e: 0x00c0, 0x114f: 0x00c0, 0x1150: 0x00c0, 0x1151: 0x00c0, - 0x1152: 0x00c0, 0x1153: 0x00c0, 0x1154: 0x00c0, 0x1155: 0x00c0, 0x1156: 0x00c0, 0x1157: 0x00c0, - 0x1158: 0x00c0, 0x1159: 0x00c0, 0x115a: 0x00c0, 0x115d: 0x00c3, - 0x115e: 0x00c3, 0x115f: 0x00c3, 0x1160: 0x0080, 0x1161: 0x0080, 0x1162: 0x0080, 0x1163: 0x0080, - 0x1164: 0x0080, 0x1165: 0x0080, 0x1166: 0x0080, 0x1167: 0x0080, 0x1168: 0x0080, 0x1169: 0x0080, - 0x116a: 0x0080, 0x116b: 0x0080, 0x116c: 0x0080, 0x116d: 0x0080, 0x116e: 0x0080, 0x116f: 0x0080, - 0x1170: 0x0080, 0x1171: 0x0080, 0x1172: 0x0080, 0x1173: 0x0080, 0x1174: 0x0080, 0x1175: 0x0080, - 0x1176: 0x0080, 0x1177: 0x0080, 0x1178: 0x0080, 0x1179: 0x0080, 0x117a: 0x0080, 0x117b: 0x0080, - 0x117c: 0x0080, - // Block 0x46, offset 0x1180 - 0x1180: 0x00c0, 0x1181: 0x00c0, 0x1182: 0x00c0, 0x1183: 0x00c0, 0x1184: 0x00c0, 0x1185: 0x00c0, - 0x1186: 0x00c0, 0x1187: 0x00c0, 0x1188: 0x00c0, 0x1189: 0x00c0, 0x118a: 0x00c0, 0x118b: 0x00c0, - 0x118c: 0x00c0, 0x118d: 0x00c0, 0x118e: 0x00c0, 0x118f: 0x00c0, 0x1190: 0x0080, 0x1191: 0x0080, - 0x1192: 0x0080, 0x1193: 0x0080, 0x1194: 0x0080, 0x1195: 0x0080, 0x1196: 0x0080, 0x1197: 0x0080, - 0x1198: 0x0080, 0x1199: 0x0080, - 0x11a0: 0x00c0, 0x11a1: 0x00c0, 0x11a2: 0x00c0, 0x11a3: 0x00c0, - 0x11a4: 0x00c0, 0x11a5: 0x00c0, 0x11a6: 0x00c0, 0x11a7: 0x00c0, 0x11a8: 0x00c0, 0x11a9: 0x00c0, - 0x11aa: 0x00c0, 0x11ab: 0x00c0, 0x11ac: 0x00c0, 0x11ad: 0x00c0, 0x11ae: 0x00c0, 0x11af: 0x00c0, - 0x11b0: 0x00c0, 0x11b1: 0x00c0, 0x11b2: 0x00c0, 0x11b3: 0x00c0, 0x11b4: 0x00c0, 0x11b5: 0x00c0, - 0x11b6: 0x00c0, 0x11b7: 0x00c0, 0x11b8: 0x00c0, 0x11b9: 0x00c0, 0x11ba: 0x00c0, 0x11bb: 0x00c0, - 0x11bc: 0x00c0, 0x11bd: 0x00c0, 0x11be: 0x00c0, 0x11bf: 0x00c0, - // Block 0x47, offset 0x11c0 - 0x11c0: 0x00c0, 0x11c1: 0x00c0, 0x11c2: 0x00c0, 0x11c3: 0x00c0, 0x11c4: 0x00c0, 0x11c5: 0x00c0, - 0x11c6: 0x00c0, 0x11c7: 0x00c0, 0x11c8: 0x00c0, 0x11c9: 0x00c0, 0x11ca: 0x00c0, 0x11cb: 0x00c0, - 0x11cc: 0x00c0, 0x11cd: 0x00c0, 0x11ce: 0x00c0, 0x11cf: 0x00c0, 0x11d0: 0x00c0, 0x11d1: 0x00c0, - 0x11d2: 0x00c0, 0x11d3: 0x00c0, 0x11d4: 0x00c0, 0x11d5: 0x00c0, 0x11d6: 0x00c0, 0x11d7: 0x00c0, - 0x11d8: 0x00c0, 0x11d9: 0x00c0, 0x11da: 0x00c0, 0x11db: 0x00c0, 0x11dc: 0x00c0, 0x11dd: 0x00c0, - 0x11de: 0x00c0, 0x11df: 0x00c0, 0x11e0: 0x00c0, 0x11e1: 0x00c0, 0x11e2: 0x00c0, 0x11e3: 0x00c0, - 0x11e4: 0x00c0, 0x11e5: 0x00c0, 0x11e6: 0x00c0, 0x11e7: 0x00c0, 0x11e8: 0x00c0, 0x11e9: 0x00c0, - 0x11ea: 0x00c0, 0x11eb: 0x00c0, 0x11ec: 0x00c0, 0x11ed: 0x00c0, 0x11ee: 0x00c0, 0x11ef: 0x00c0, - 0x11f0: 0x00c0, 0x11f1: 0x00c0, 0x11f2: 0x00c0, 0x11f3: 0x00c0, 0x11f4: 0x00c0, 0x11f5: 0x00c0, - 0x11f8: 0x00c0, 0x11f9: 0x00c0, 0x11fa: 0x00c0, 0x11fb: 0x00c0, - 0x11fc: 0x00c0, 0x11fd: 0x00c0, - // Block 0x48, offset 0x1200 - 0x1200: 0x0080, 0x1201: 0x00c0, 0x1202: 0x00c0, 0x1203: 0x00c0, 0x1204: 0x00c0, 0x1205: 0x00c0, - 0x1206: 0x00c0, 0x1207: 0x00c0, 0x1208: 0x00c0, 0x1209: 0x00c0, 0x120a: 0x00c0, 0x120b: 0x00c0, - 0x120c: 0x00c0, 0x120d: 0x00c0, 0x120e: 0x00c0, 0x120f: 0x00c0, 0x1210: 0x00c0, 0x1211: 0x00c0, - 0x1212: 0x00c0, 0x1213: 0x00c0, 0x1214: 0x00c0, 0x1215: 0x00c0, 0x1216: 0x00c0, 0x1217: 0x00c0, - 0x1218: 0x00c0, 0x1219: 0x00c0, 0x121a: 0x00c0, 0x121b: 0x00c0, 0x121c: 0x00c0, 0x121d: 0x00c0, - 0x121e: 0x00c0, 0x121f: 0x00c0, 0x1220: 0x00c0, 0x1221: 0x00c0, 0x1222: 0x00c0, 0x1223: 0x00c0, - 0x1224: 0x00c0, 0x1225: 0x00c0, 0x1226: 0x00c0, 0x1227: 0x00c0, 0x1228: 0x00c0, 0x1229: 0x00c0, - 0x122a: 0x00c0, 0x122b: 0x00c0, 0x122c: 0x00c0, 0x122d: 0x00c0, 0x122e: 0x00c0, 0x122f: 0x00c0, - 0x1230: 0x00c0, 0x1231: 0x00c0, 0x1232: 0x00c0, 0x1233: 0x00c0, 0x1234: 0x00c0, 0x1235: 0x00c0, - 0x1236: 0x00c0, 0x1237: 0x00c0, 0x1238: 0x00c0, 0x1239: 0x00c0, 0x123a: 0x00c0, 0x123b: 0x00c0, - 0x123c: 0x00c0, 0x123d: 0x00c0, 0x123e: 0x00c0, 0x123f: 0x00c0, - // Block 0x49, offset 0x1240 - 0x1240: 0x00c0, 0x1241: 0x00c0, 0x1242: 0x00c0, 0x1243: 0x00c0, 0x1244: 0x00c0, 0x1245: 0x00c0, - 0x1246: 0x00c0, 0x1247: 0x00c0, 0x1248: 0x00c0, 0x1249: 0x00c0, 0x124a: 0x00c0, 0x124b: 0x00c0, - 0x124c: 0x00c0, 0x124d: 0x00c0, 0x124e: 0x00c0, 0x124f: 0x00c0, 0x1250: 0x00c0, 0x1251: 0x00c0, - 0x1252: 0x00c0, 0x1253: 0x00c0, 0x1254: 0x00c0, 0x1255: 0x00c0, 0x1256: 0x00c0, 0x1257: 0x00c0, - 0x1258: 0x00c0, 0x1259: 0x00c0, 0x125a: 0x00c0, 0x125b: 0x00c0, 0x125c: 0x00c0, 0x125d: 0x00c0, - 0x125e: 0x00c0, 0x125f: 0x00c0, 0x1260: 0x00c0, 0x1261: 0x00c0, 0x1262: 0x00c0, 0x1263: 0x00c0, - 0x1264: 0x00c0, 0x1265: 0x00c0, 0x1266: 0x00c0, 0x1267: 0x00c0, 0x1268: 0x00c0, 0x1269: 0x00c0, - 0x126a: 0x00c0, 0x126b: 0x00c0, 0x126c: 0x00c0, 0x126d: 0x0080, 0x126e: 0x0080, 0x126f: 0x00c0, - 0x1270: 0x00c0, 0x1271: 0x00c0, 0x1272: 0x00c0, 0x1273: 0x00c0, 0x1274: 0x00c0, 0x1275: 0x00c0, - 0x1276: 0x00c0, 0x1277: 0x00c0, 0x1278: 0x00c0, 0x1279: 0x00c0, 0x127a: 0x00c0, 0x127b: 0x00c0, - 0x127c: 0x00c0, 0x127d: 0x00c0, 0x127e: 0x00c0, 0x127f: 0x00c0, - // Block 0x4a, offset 0x1280 - 0x1280: 0x0080, 0x1281: 0x00c0, 0x1282: 0x00c0, 0x1283: 0x00c0, 0x1284: 0x00c0, 0x1285: 0x00c0, - 0x1286: 0x00c0, 0x1287: 0x00c0, 0x1288: 0x00c0, 0x1289: 0x00c0, 0x128a: 0x00c0, 0x128b: 0x00c0, - 0x128c: 0x00c0, 0x128d: 0x00c0, 0x128e: 0x00c0, 0x128f: 0x00c0, 0x1290: 0x00c0, 0x1291: 0x00c0, - 0x1292: 0x00c0, 0x1293: 0x00c0, 0x1294: 0x00c0, 0x1295: 0x00c0, 0x1296: 0x00c0, 0x1297: 0x00c0, - 0x1298: 0x00c0, 0x1299: 0x00c0, 0x129a: 0x00c0, 0x129b: 0x0080, 0x129c: 0x0080, - 0x12a0: 0x00c0, 0x12a1: 0x00c0, 0x12a2: 0x00c0, 0x12a3: 0x00c0, - 0x12a4: 0x00c0, 0x12a5: 0x00c0, 0x12a6: 0x00c0, 0x12a7: 0x00c0, 0x12a8: 0x00c0, 0x12a9: 0x00c0, - 0x12aa: 0x00c0, 0x12ab: 0x00c0, 0x12ac: 0x00c0, 0x12ad: 0x00c0, 0x12ae: 0x00c0, 0x12af: 0x00c0, - 0x12b0: 0x00c0, 0x12b1: 0x00c0, 0x12b2: 0x00c0, 0x12b3: 0x00c0, 0x12b4: 0x00c0, 0x12b5: 0x00c0, - 0x12b6: 0x00c0, 0x12b7: 0x00c0, 0x12b8: 0x00c0, 0x12b9: 0x00c0, 0x12ba: 0x00c0, 0x12bb: 0x00c0, - 0x12bc: 0x00c0, 0x12bd: 0x00c0, 0x12be: 0x00c0, 0x12bf: 0x00c0, - // Block 0x4b, offset 0x12c0 - 0x12c0: 0x00c0, 0x12c1: 0x00c0, 0x12c2: 0x00c0, 0x12c3: 0x00c0, 0x12c4: 0x00c0, 0x12c5: 0x00c0, - 0x12c6: 0x00c0, 0x12c7: 0x00c0, 0x12c8: 0x00c0, 0x12c9: 0x00c0, 0x12ca: 0x00c0, 0x12cb: 0x00c0, - 0x12cc: 0x00c0, 0x12cd: 0x00c0, 0x12ce: 0x00c0, 0x12cf: 0x00c0, 0x12d0: 0x00c0, 0x12d1: 0x00c0, - 0x12d2: 0x00c0, 0x12d3: 0x00c0, 0x12d4: 0x00c0, 0x12d5: 0x00c0, 0x12d6: 0x00c0, 0x12d7: 0x00c0, - 0x12d8: 0x00c0, 0x12d9: 0x00c0, 0x12da: 0x00c0, 0x12db: 0x00c0, 0x12dc: 0x00c0, 0x12dd: 0x00c0, - 0x12de: 0x00c0, 0x12df: 0x00c0, 0x12e0: 0x00c0, 0x12e1: 0x00c0, 0x12e2: 0x00c0, 0x12e3: 0x00c0, - 0x12e4: 0x00c0, 0x12e5: 0x00c0, 0x12e6: 0x00c0, 0x12e7: 0x00c0, 0x12e8: 0x00c0, 0x12e9: 0x00c0, - 0x12ea: 0x00c0, 0x12eb: 0x0080, 0x12ec: 0x0080, 0x12ed: 0x0080, 0x12ee: 0x0080, 0x12ef: 0x0080, - 0x12f0: 0x0080, 0x12f1: 0x00c0, 0x12f2: 0x00c0, 0x12f3: 0x00c0, 0x12f4: 0x00c0, 0x12f5: 0x00c0, - 0x12f6: 0x00c0, 0x12f7: 0x00c0, 0x12f8: 0x00c0, - // Block 0x4c, offset 0x1300 - 0x1300: 0x00c0, 0x1301: 0x00c0, 0x1302: 0x00c0, 0x1303: 0x00c0, 0x1304: 0x00c0, 0x1305: 0x00c0, - 0x1306: 0x00c0, 0x1307: 0x00c0, 0x1308: 0x00c0, 0x1309: 0x00c0, 0x130a: 0x00c0, 0x130b: 0x00c0, - 0x130c: 0x00c0, 0x130e: 0x00c0, 0x130f: 0x00c0, 0x1310: 0x00c0, 0x1311: 0x00c0, - 0x1312: 0x00c3, 0x1313: 0x00c3, 0x1314: 0x00c6, - 0x1320: 0x00c0, 0x1321: 0x00c0, 0x1322: 0x00c0, 0x1323: 0x00c0, - 0x1324: 0x00c0, 0x1325: 0x00c0, 0x1326: 0x00c0, 0x1327: 0x00c0, 0x1328: 0x00c0, 0x1329: 0x00c0, - 0x132a: 0x00c0, 0x132b: 0x00c0, 0x132c: 0x00c0, 0x132d: 0x00c0, 0x132e: 0x00c0, 0x132f: 0x00c0, - 0x1330: 0x00c0, 0x1331: 0x00c0, 0x1332: 0x00c3, 0x1333: 0x00c3, 0x1334: 0x00c6, 0x1335: 0x0080, - 0x1336: 0x0080, - // Block 0x4d, offset 0x1340 - 0x1340: 0x00c0, 0x1341: 0x00c0, 0x1342: 0x00c0, 0x1343: 0x00c0, 0x1344: 0x00c0, 0x1345: 0x00c0, - 0x1346: 0x00c0, 0x1347: 0x00c0, 0x1348: 0x00c0, 0x1349: 0x00c0, 0x134a: 0x00c0, 0x134b: 0x00c0, - 0x134c: 0x00c0, 0x134d: 0x00c0, 0x134e: 0x00c0, 0x134f: 0x00c0, 0x1350: 0x00c0, 0x1351: 0x00c0, - 0x1352: 0x00c3, 0x1353: 0x00c3, - 0x1360: 0x00c0, 0x1361: 0x00c0, 0x1362: 0x00c0, 0x1363: 0x00c0, - 0x1364: 0x00c0, 0x1365: 0x00c0, 0x1366: 0x00c0, 0x1367: 0x00c0, 0x1368: 0x00c0, 0x1369: 0x00c0, - 0x136a: 0x00c0, 0x136b: 0x00c0, 0x136c: 0x00c0, 0x136e: 0x00c0, 0x136f: 0x00c0, - 0x1370: 0x00c0, 0x1372: 0x00c3, 0x1373: 0x00c3, - // Block 0x4e, offset 0x1380 - 0x1380: 0x00c0, 0x1381: 0x00c0, 0x1382: 0x00c0, 0x1383: 0x00c0, 0x1384: 0x00c0, 0x1385: 0x00c0, - 0x1386: 0x00c0, 0x1387: 0x00c0, 0x1388: 0x00c0, 0x1389: 0x00c0, 0x138a: 0x00c0, 0x138b: 0x00c0, - 0x138c: 0x00c0, 0x138d: 0x00c0, 0x138e: 0x00c0, 0x138f: 0x00c0, 0x1390: 0x00c0, 0x1391: 0x00c0, - 0x1392: 0x00c0, 0x1393: 0x00c0, 0x1394: 0x00c0, 0x1395: 0x00c0, 0x1396: 0x00c0, 0x1397: 0x00c0, - 0x1398: 0x00c0, 0x1399: 0x00c0, 0x139a: 0x00c0, 0x139b: 0x00c0, 0x139c: 0x00c0, 0x139d: 0x00c0, - 0x139e: 0x00c0, 0x139f: 0x00c0, 0x13a0: 0x00c0, 0x13a1: 0x00c0, 0x13a2: 0x00c0, 0x13a3: 0x00c0, - 0x13a4: 0x00c0, 0x13a5: 0x00c0, 0x13a6: 0x00c0, 0x13a7: 0x00c0, 0x13a8: 0x00c0, 0x13a9: 0x00c0, - 0x13aa: 0x00c0, 0x13ab: 0x00c0, 0x13ac: 0x00c0, 0x13ad: 0x00c0, 0x13ae: 0x00c0, 0x13af: 0x00c0, - 0x13b0: 0x00c0, 0x13b1: 0x00c0, 0x13b2: 0x00c0, 0x13b3: 0x00c0, 0x13b4: 0x0040, 0x13b5: 0x0040, - 0x13b6: 0x00c0, 0x13b7: 0x00c3, 0x13b8: 0x00c3, 0x13b9: 0x00c3, 0x13ba: 0x00c3, 0x13bb: 0x00c3, - 0x13bc: 0x00c3, 0x13bd: 0x00c3, 0x13be: 0x00c0, 0x13bf: 0x00c0, - // Block 0x4f, offset 0x13c0 - 0x13c0: 0x00c0, 0x13c1: 0x00c0, 0x13c2: 0x00c0, 0x13c3: 0x00c0, 0x13c4: 0x00c0, 0x13c5: 0x00c0, - 0x13c6: 0x00c3, 0x13c7: 0x00c0, 0x13c8: 0x00c0, 0x13c9: 0x00c3, 0x13ca: 0x00c3, 0x13cb: 0x00c3, - 0x13cc: 0x00c3, 0x13cd: 0x00c3, 0x13ce: 0x00c3, 0x13cf: 0x00c3, 0x13d0: 0x00c3, 0x13d1: 0x00c3, - 0x13d2: 0x00c6, 0x13d3: 0x00c3, 0x13d4: 0x0080, 0x13d5: 0x0080, 0x13d6: 0x0080, 0x13d7: 0x00c0, - 0x13d8: 0x0080, 0x13d9: 0x0080, 0x13da: 0x0080, 0x13db: 0x0080, 0x13dc: 0x00c0, 0x13dd: 0x00c3, - 0x13e0: 0x00c0, 0x13e1: 0x00c0, 0x13e2: 0x00c0, 0x13e3: 0x00c0, - 0x13e4: 0x00c0, 0x13e5: 0x00c0, 0x13e6: 0x00c0, 0x13e7: 0x00c0, 0x13e8: 0x00c0, 0x13e9: 0x00c0, - 0x13f0: 0x0080, 0x13f1: 0x0080, 0x13f2: 0x0080, 0x13f3: 0x0080, 0x13f4: 0x0080, 0x13f5: 0x0080, - 0x13f6: 0x0080, 0x13f7: 0x0080, 0x13f8: 0x0080, 0x13f9: 0x0080, - // Block 0x50, offset 0x1400 - 0x1400: 0x0080, 0x1401: 0x0080, 0x1402: 0x0080, 0x1403: 0x0080, 0x1404: 0x0080, 0x1405: 0x0080, - 0x1406: 0x0080, 0x1407: 0x0082, 0x1408: 0x0080, 0x1409: 0x0080, 0x140a: 0x0080, 0x140b: 0x0040, - 0x140c: 0x0040, 0x140d: 0x0040, 0x140e: 0x0040, 0x1410: 0x00c0, 0x1411: 0x00c0, - 0x1412: 0x00c0, 0x1413: 0x00c0, 0x1414: 0x00c0, 0x1415: 0x00c0, 0x1416: 0x00c0, 0x1417: 0x00c0, - 0x1418: 0x00c0, 0x1419: 0x00c0, - 0x1420: 0x00c2, 0x1421: 0x00c2, 0x1422: 0x00c2, 0x1423: 0x00c2, - 0x1424: 0x00c2, 0x1425: 0x00c2, 0x1426: 0x00c2, 0x1427: 0x00c2, 0x1428: 0x00c2, 0x1429: 0x00c2, - 0x142a: 0x00c2, 0x142b: 0x00c2, 0x142c: 0x00c2, 0x142d: 0x00c2, 0x142e: 0x00c2, 0x142f: 0x00c2, - 0x1430: 0x00c2, 0x1431: 0x00c2, 0x1432: 0x00c2, 0x1433: 0x00c2, 0x1434: 0x00c2, 0x1435: 0x00c2, - 0x1436: 0x00c2, 0x1437: 0x00c2, 0x1438: 0x00c2, 0x1439: 0x00c2, 0x143a: 0x00c2, 0x143b: 0x00c2, - 0x143c: 0x00c2, 0x143d: 0x00c2, 0x143e: 0x00c2, 0x143f: 0x00c2, - // Block 0x51, offset 0x1440 - 0x1440: 0x00c2, 0x1441: 0x00c2, 0x1442: 0x00c2, 0x1443: 0x00c2, 0x1444: 0x00c2, 0x1445: 0x00c2, - 0x1446: 0x00c2, 0x1447: 0x00c2, 0x1448: 0x00c2, 0x1449: 0x00c2, 0x144a: 0x00c2, 0x144b: 0x00c2, - 0x144c: 0x00c2, 0x144d: 0x00c2, 0x144e: 0x00c2, 0x144f: 0x00c2, 0x1450: 0x00c2, 0x1451: 0x00c2, - 0x1452: 0x00c2, 0x1453: 0x00c2, 0x1454: 0x00c2, 0x1455: 0x00c2, 0x1456: 0x00c2, 0x1457: 0x00c2, - 0x1458: 0x00c2, 0x1459: 0x00c2, 0x145a: 0x00c2, 0x145b: 0x00c2, 0x145c: 0x00c2, 0x145d: 0x00c2, - 0x145e: 0x00c2, 0x145f: 0x00c2, 0x1460: 0x00c2, 0x1461: 0x00c2, 0x1462: 0x00c2, 0x1463: 0x00c2, - 0x1464: 0x00c2, 0x1465: 0x00c2, 0x1466: 0x00c2, 0x1467: 0x00c2, 0x1468: 0x00c2, 0x1469: 0x00c2, - 0x146a: 0x00c2, 0x146b: 0x00c2, 0x146c: 0x00c2, 0x146d: 0x00c2, 0x146e: 0x00c2, 0x146f: 0x00c2, - 0x1470: 0x00c2, 0x1471: 0x00c2, 0x1472: 0x00c2, 0x1473: 0x00c2, 0x1474: 0x00c2, 0x1475: 0x00c2, - 0x1476: 0x00c2, 0x1477: 0x00c2, - // Block 0x52, offset 0x1480 - 0x1480: 0x00c0, 0x1481: 0x00c0, 0x1482: 0x00c0, 0x1483: 0x00c0, 0x1484: 0x00c0, 0x1485: 0x00c3, - 0x1486: 0x00c3, 0x1487: 0x00c2, 0x1488: 0x00c2, 0x1489: 0x00c2, 0x148a: 0x00c2, 0x148b: 0x00c2, - 0x148c: 0x00c2, 0x148d: 0x00c2, 0x148e: 0x00c2, 0x148f: 0x00c2, 0x1490: 0x00c2, 0x1491: 0x00c2, - 0x1492: 0x00c2, 0x1493: 0x00c2, 0x1494: 0x00c2, 0x1495: 0x00c2, 0x1496: 0x00c2, 0x1497: 0x00c2, - 0x1498: 0x00c2, 0x1499: 0x00c2, 0x149a: 0x00c2, 0x149b: 0x00c2, 0x149c: 0x00c2, 0x149d: 0x00c2, - 0x149e: 0x00c2, 0x149f: 0x00c2, 0x14a0: 0x00c2, 0x14a1: 0x00c2, 0x14a2: 0x00c2, 0x14a3: 0x00c2, - 0x14a4: 0x00c2, 0x14a5: 0x00c2, 0x14a6: 0x00c2, 0x14a7: 0x00c2, 0x14a8: 0x00c2, 0x14a9: 0x00c3, - 0x14aa: 0x00c2, - 0x14b0: 0x00c0, 0x14b1: 0x00c0, 0x14b2: 0x00c0, 0x14b3: 0x00c0, 0x14b4: 0x00c0, 0x14b5: 0x00c0, - 0x14b6: 0x00c0, 0x14b7: 0x00c0, 0x14b8: 0x00c0, 0x14b9: 0x00c0, 0x14ba: 0x00c0, 0x14bb: 0x00c0, - 0x14bc: 0x00c0, 0x14bd: 0x00c0, 0x14be: 0x00c0, 0x14bf: 0x00c0, - // Block 0x53, offset 0x14c0 - 0x14c0: 0x00c0, 0x14c1: 0x00c0, 0x14c2: 0x00c0, 0x14c3: 0x00c0, 0x14c4: 0x00c0, 0x14c5: 0x00c0, - 0x14c6: 0x00c0, 0x14c7: 0x00c0, 0x14c8: 0x00c0, 0x14c9: 0x00c0, 0x14ca: 0x00c0, 0x14cb: 0x00c0, - 0x14cc: 0x00c0, 0x14cd: 0x00c0, 0x14ce: 0x00c0, 0x14cf: 0x00c0, 0x14d0: 0x00c0, 0x14d1: 0x00c0, - 0x14d2: 0x00c0, 0x14d3: 0x00c0, 0x14d4: 0x00c0, 0x14d5: 0x00c0, 0x14d6: 0x00c0, 0x14d7: 0x00c0, - 0x14d8: 0x00c0, 0x14d9: 0x00c0, 0x14da: 0x00c0, 0x14db: 0x00c0, 0x14dc: 0x00c0, 0x14dd: 0x00c0, - 0x14de: 0x00c0, 0x14df: 0x00c0, 0x14e0: 0x00c0, 0x14e1: 0x00c0, 0x14e2: 0x00c0, 0x14e3: 0x00c0, - 0x14e4: 0x00c0, 0x14e5: 0x00c0, 0x14e6: 0x00c0, 0x14e7: 0x00c0, 0x14e8: 0x00c0, 0x14e9: 0x00c0, - 0x14ea: 0x00c0, 0x14eb: 0x00c0, 0x14ec: 0x00c0, 0x14ed: 0x00c0, 0x14ee: 0x00c0, 0x14ef: 0x00c0, - 0x14f0: 0x00c0, 0x14f1: 0x00c0, 0x14f2: 0x00c0, 0x14f3: 0x00c0, 0x14f4: 0x00c0, 0x14f5: 0x00c0, - // Block 0x54, offset 0x1500 - 0x1500: 0x00c0, 0x1501: 0x00c0, 0x1502: 0x00c0, 0x1503: 0x00c0, 0x1504: 0x00c0, 0x1505: 0x00c0, - 0x1506: 0x00c0, 0x1507: 0x00c0, 0x1508: 0x00c0, 0x1509: 0x00c0, 0x150a: 0x00c0, 0x150b: 0x00c0, - 0x150c: 0x00c0, 0x150d: 0x00c0, 0x150e: 0x00c0, 0x150f: 0x00c0, 0x1510: 0x00c0, 0x1511: 0x00c0, - 0x1512: 0x00c0, 0x1513: 0x00c0, 0x1514: 0x00c0, 0x1515: 0x00c0, 0x1516: 0x00c0, 0x1517: 0x00c0, - 0x1518: 0x00c0, 0x1519: 0x00c0, 0x151a: 0x00c0, 0x151b: 0x00c0, 0x151c: 0x00c0, 0x151d: 0x00c0, - 0x151e: 0x00c0, 0x1520: 0x00c3, 0x1521: 0x00c3, 0x1522: 0x00c3, 0x1523: 0x00c0, - 0x1524: 0x00c0, 0x1525: 0x00c0, 0x1526: 0x00c0, 0x1527: 0x00c3, 0x1528: 0x00c3, 0x1529: 0x00c0, - 0x152a: 0x00c0, 0x152b: 0x00c0, - 0x1530: 0x00c0, 0x1531: 0x00c0, 0x1532: 0x00c3, 0x1533: 0x00c0, 0x1534: 0x00c0, 0x1535: 0x00c0, - 0x1536: 0x00c0, 0x1537: 0x00c0, 0x1538: 0x00c0, 0x1539: 0x00c3, 0x153a: 0x00c3, 0x153b: 0x00c3, - // Block 0x55, offset 0x1540 - 0x1540: 0x0080, 0x1544: 0x0080, 0x1545: 0x0080, - 0x1546: 0x00c0, 0x1547: 0x00c0, 0x1548: 0x00c0, 0x1549: 0x00c0, 0x154a: 0x00c0, 0x154b: 0x00c0, - 0x154c: 0x00c0, 0x154d: 0x00c0, 0x154e: 0x00c0, 0x154f: 0x00c0, 0x1550: 0x00c0, 0x1551: 0x00c0, - 0x1552: 0x00c0, 0x1553: 0x00c0, 0x1554: 0x00c0, 0x1555: 0x00c0, 0x1556: 0x00c0, 0x1557: 0x00c0, - 0x1558: 0x00c0, 0x1559: 0x00c0, 0x155a: 0x00c0, 0x155b: 0x00c0, 0x155c: 0x00c0, 0x155d: 0x00c0, - 0x155e: 0x00c0, 0x155f: 0x00c0, 0x1560: 0x00c0, 0x1561: 0x00c0, 0x1562: 0x00c0, 0x1563: 0x00c0, - 0x1564: 0x00c0, 0x1565: 0x00c0, 0x1566: 0x00c0, 0x1567: 0x00c0, 0x1568: 0x00c0, 0x1569: 0x00c0, - 0x156a: 0x00c0, 0x156b: 0x00c0, 0x156c: 0x00c0, 0x156d: 0x00c0, - 0x1570: 0x00c0, 0x1571: 0x00c0, 0x1572: 0x00c0, 0x1573: 0x00c0, 0x1574: 0x00c0, - // Block 0x56, offset 0x1580 - 0x1580: 0x00c0, 0x1581: 0x00c0, 0x1582: 0x00c0, 0x1583: 0x00c0, 0x1584: 0x00c0, 0x1585: 0x00c0, - 0x1586: 0x00c0, 0x1587: 0x00c0, 0x1588: 0x00c0, 0x1589: 0x00c0, 0x158a: 0x00c0, 0x158b: 0x00c0, - 0x158c: 0x00c0, 0x158d: 0x00c0, 0x158e: 0x00c0, 0x158f: 0x00c0, 0x1590: 0x00c0, 0x1591: 0x00c0, - 0x1592: 0x00c0, 0x1593: 0x00c0, 0x1594: 0x00c0, 0x1595: 0x00c0, 0x1596: 0x00c0, 0x1597: 0x00c0, - 0x1598: 0x00c0, 0x1599: 0x00c0, 0x159a: 0x00c0, 0x159b: 0x00c0, 0x159c: 0x00c0, 0x159d: 0x00c0, - 0x159e: 0x00c0, 0x159f: 0x00c0, 0x15a0: 0x00c0, 0x15a1: 0x00c0, 0x15a2: 0x00c0, 0x15a3: 0x00c0, - 0x15a4: 0x00c0, 0x15a5: 0x00c0, 0x15a6: 0x00c0, 0x15a7: 0x00c0, 0x15a8: 0x00c0, 0x15a9: 0x00c0, - 0x15aa: 0x00c0, 0x15ab: 0x00c0, - 0x15b0: 0x00c0, 0x15b1: 0x00c0, 0x15b2: 0x00c0, 0x15b3: 0x00c0, 0x15b4: 0x00c0, 0x15b5: 0x00c0, - 0x15b6: 0x00c0, 0x15b7: 0x00c0, 0x15b8: 0x00c0, 0x15b9: 0x00c0, 0x15ba: 0x00c0, 0x15bb: 0x00c0, - 0x15bc: 0x00c0, 0x15bd: 0x00c0, 0x15be: 0x00c0, 0x15bf: 0x00c0, - // Block 0x57, offset 0x15c0 - 0x15c0: 0x00c0, 0x15c1: 0x00c0, 0x15c2: 0x00c0, 0x15c3: 0x00c0, 0x15c4: 0x00c0, 0x15c5: 0x00c0, - 0x15c6: 0x00c0, 0x15c7: 0x00c0, 0x15c8: 0x00c0, 0x15c9: 0x00c0, - 0x15d0: 0x00c0, 0x15d1: 0x00c0, - 0x15d2: 0x00c0, 0x15d3: 0x00c0, 0x15d4: 0x00c0, 0x15d5: 0x00c0, 0x15d6: 0x00c0, 0x15d7: 0x00c0, - 0x15d8: 0x00c0, 0x15d9: 0x00c0, 0x15da: 0x0080, - 0x15de: 0x0080, 0x15df: 0x0080, 0x15e0: 0x0080, 0x15e1: 0x0080, 0x15e2: 0x0080, 0x15e3: 0x0080, - 0x15e4: 0x0080, 0x15e5: 0x0080, 0x15e6: 0x0080, 0x15e7: 0x0080, 0x15e8: 0x0080, 0x15e9: 0x0080, - 0x15ea: 0x0080, 0x15eb: 0x0080, 0x15ec: 0x0080, 0x15ed: 0x0080, 0x15ee: 0x0080, 0x15ef: 0x0080, - 0x15f0: 0x0080, 0x15f1: 0x0080, 0x15f2: 0x0080, 0x15f3: 0x0080, 0x15f4: 0x0080, 0x15f5: 0x0080, - 0x15f6: 0x0080, 0x15f7: 0x0080, 0x15f8: 0x0080, 0x15f9: 0x0080, 0x15fa: 0x0080, 0x15fb: 0x0080, - 0x15fc: 0x0080, 0x15fd: 0x0080, 0x15fe: 0x0080, 0x15ff: 0x0080, - // Block 0x58, offset 0x1600 - 0x1600: 0x00c0, 0x1601: 0x00c0, 0x1602: 0x00c0, 0x1603: 0x00c0, 0x1604: 0x00c0, 0x1605: 0x00c0, - 0x1606: 0x00c0, 0x1607: 0x00c0, 0x1608: 0x00c0, 0x1609: 0x00c0, 0x160a: 0x00c0, 0x160b: 0x00c0, - 0x160c: 0x00c0, 0x160d: 0x00c0, 0x160e: 0x00c0, 0x160f: 0x00c0, 0x1610: 0x00c0, 0x1611: 0x00c0, - 0x1612: 0x00c0, 0x1613: 0x00c0, 0x1614: 0x00c0, 0x1615: 0x00c0, 0x1616: 0x00c0, 0x1617: 0x00c3, - 0x1618: 0x00c3, 0x1619: 0x00c0, 0x161a: 0x00c0, 0x161b: 0x00c3, - 0x161e: 0x0080, 0x161f: 0x0080, 0x1620: 0x00c0, 0x1621: 0x00c0, 0x1622: 0x00c0, 0x1623: 0x00c0, - 0x1624: 0x00c0, 0x1625: 0x00c0, 0x1626: 0x00c0, 0x1627: 0x00c0, 0x1628: 0x00c0, 0x1629: 0x00c0, - 0x162a: 0x00c0, 0x162b: 0x00c0, 0x162c: 0x00c0, 0x162d: 0x00c0, 0x162e: 0x00c0, 0x162f: 0x00c0, - 0x1630: 0x00c0, 0x1631: 0x00c0, 0x1632: 0x00c0, 0x1633: 0x00c0, 0x1634: 0x00c0, 0x1635: 0x00c0, - 0x1636: 0x00c0, 0x1637: 0x00c0, 0x1638: 0x00c0, 0x1639: 0x00c0, 0x163a: 0x00c0, 0x163b: 0x00c0, - 0x163c: 0x00c0, 0x163d: 0x00c0, 0x163e: 0x00c0, 0x163f: 0x00c0, - // Block 0x59, offset 0x1640 - 0x1640: 0x00c0, 0x1641: 0x00c0, 0x1642: 0x00c0, 0x1643: 0x00c0, 0x1644: 0x00c0, 0x1645: 0x00c0, - 0x1646: 0x00c0, 0x1647: 0x00c0, 0x1648: 0x00c0, 0x1649: 0x00c0, 0x164a: 0x00c0, 0x164b: 0x00c0, - 0x164c: 0x00c0, 0x164d: 0x00c0, 0x164e: 0x00c0, 0x164f: 0x00c0, 0x1650: 0x00c0, 0x1651: 0x00c0, - 0x1652: 0x00c0, 0x1653: 0x00c0, 0x1654: 0x00c0, 0x1655: 0x00c0, 0x1656: 0x00c3, 0x1657: 0x00c0, - 0x1658: 0x00c3, 0x1659: 0x00c3, 0x165a: 0x00c3, 0x165b: 0x00c3, 0x165c: 0x00c3, 0x165d: 0x00c3, - 0x165e: 0x00c3, 0x1660: 0x00c6, 0x1661: 0x00c0, 0x1662: 0x00c3, 0x1663: 0x00c0, - 0x1664: 0x00c0, 0x1665: 0x00c3, 0x1666: 0x00c3, 0x1667: 0x00c3, 0x1668: 0x00c3, 0x1669: 0x00c3, - 0x166a: 0x00c3, 0x166b: 0x00c3, 0x166c: 0x00c3, 0x166d: 0x00c0, 0x166e: 0x00c0, 0x166f: 0x00c0, - 0x1670: 0x00c0, 0x1671: 0x00c0, 0x1672: 0x00c0, 0x1673: 0x00c3, 0x1674: 0x00c3, 0x1675: 0x00c3, - 0x1676: 0x00c3, 0x1677: 0x00c3, 0x1678: 0x00c3, 0x1679: 0x00c3, 0x167a: 0x00c3, 0x167b: 0x00c3, - 0x167c: 0x00c3, 0x167f: 0x00c3, - // Block 0x5a, offset 0x1680 - 0x1680: 0x00c0, 0x1681: 0x00c0, 0x1682: 0x00c0, 0x1683: 0x00c0, 0x1684: 0x00c0, 0x1685: 0x00c0, - 0x1686: 0x00c0, 0x1687: 0x00c0, 0x1688: 0x00c0, 0x1689: 0x00c0, - 0x1690: 0x00c0, 0x1691: 0x00c0, - 0x1692: 0x00c0, 0x1693: 0x00c0, 0x1694: 0x00c0, 0x1695: 0x00c0, 0x1696: 0x00c0, 0x1697: 0x00c0, - 0x1698: 0x00c0, 0x1699: 0x00c0, - 0x16a0: 0x0080, 0x16a1: 0x0080, 0x16a2: 0x0080, 0x16a3: 0x0080, - 0x16a4: 0x0080, 0x16a5: 0x0080, 0x16a6: 0x0080, 0x16a7: 0x00c0, 0x16a8: 0x0080, 0x16a9: 0x0080, - 0x16aa: 0x0080, 0x16ab: 0x0080, 0x16ac: 0x0080, 0x16ad: 0x0080, - 0x16b0: 0x00c3, 0x16b1: 0x00c3, 0x16b2: 0x00c3, 0x16b3: 0x00c3, 0x16b4: 0x00c3, 0x16b5: 0x00c3, - 0x16b6: 0x00c3, 0x16b7: 0x00c3, 0x16b8: 0x00c3, 0x16b9: 0x00c3, 0x16ba: 0x00c3, 0x16bb: 0x00c3, - 0x16bc: 0x00c3, 0x16bd: 0x00c3, 0x16be: 0x0083, - // Block 0x5b, offset 0x16c0 - 0x16c0: 0x00c3, 0x16c1: 0x00c3, 0x16c2: 0x00c3, 0x16c3: 0x00c3, 0x16c4: 0x00c0, 0x16c5: 0x00c0, - 0x16c6: 0x00c0, 0x16c7: 0x00c0, 0x16c8: 0x00c0, 0x16c9: 0x00c0, 0x16ca: 0x00c0, 0x16cb: 0x00c0, - 0x16cc: 0x00c0, 0x16cd: 0x00c0, 0x16ce: 0x00c0, 0x16cf: 0x00c0, 0x16d0: 0x00c0, 0x16d1: 0x00c0, - 0x16d2: 0x00c0, 0x16d3: 0x00c0, 0x16d4: 0x00c0, 0x16d5: 0x00c0, 0x16d6: 0x00c0, 0x16d7: 0x00c0, - 0x16d8: 0x00c0, 0x16d9: 0x00c0, 0x16da: 0x00c0, 0x16db: 0x00c0, 0x16dc: 0x00c0, 0x16dd: 0x00c0, - 0x16de: 0x00c0, 0x16df: 0x00c0, 0x16e0: 0x00c0, 0x16e1: 0x00c0, 0x16e2: 0x00c0, 0x16e3: 0x00c0, - 0x16e4: 0x00c0, 0x16e5: 0x00c0, 0x16e6: 0x00c0, 0x16e7: 0x00c0, 0x16e8: 0x00c0, 0x16e9: 0x00c0, - 0x16ea: 0x00c0, 0x16eb: 0x00c0, 0x16ec: 0x00c0, 0x16ed: 0x00c0, 0x16ee: 0x00c0, 0x16ef: 0x00c0, - 0x16f0: 0x00c0, 0x16f1: 0x00c0, 0x16f2: 0x00c0, 0x16f3: 0x00c0, 0x16f4: 0x00c3, 0x16f5: 0x00c0, - 0x16f6: 0x00c3, 0x16f7: 0x00c3, 0x16f8: 0x00c3, 0x16f9: 0x00c3, 0x16fa: 0x00c3, 0x16fb: 0x00c0, - 0x16fc: 0x00c3, 0x16fd: 0x00c0, 0x16fe: 0x00c0, 0x16ff: 0x00c0, - // Block 0x5c, offset 0x1700 - 0x1700: 0x00c0, 0x1701: 0x00c0, 0x1702: 0x00c3, 0x1703: 0x00c0, 0x1704: 0x00c5, 0x1705: 0x00c0, - 0x1706: 0x00c0, 0x1707: 0x00c0, 0x1708: 0x00c0, 0x1709: 0x00c0, 0x170a: 0x00c0, 0x170b: 0x00c0, - 0x1710: 0x00c0, 0x1711: 0x00c0, - 0x1712: 0x00c0, 0x1713: 0x00c0, 0x1714: 0x00c0, 0x1715: 0x00c0, 0x1716: 0x00c0, 0x1717: 0x00c0, - 0x1718: 0x00c0, 0x1719: 0x00c0, 0x171a: 0x0080, 0x171b: 0x0080, 0x171c: 0x0080, 0x171d: 0x0080, - 0x171e: 0x0080, 0x171f: 0x0080, 0x1720: 0x0080, 0x1721: 0x0080, 0x1722: 0x0080, 0x1723: 0x0080, - 0x1724: 0x0080, 0x1725: 0x0080, 0x1726: 0x0080, 0x1727: 0x0080, 0x1728: 0x0080, 0x1729: 0x0080, - 0x172a: 0x0080, 0x172b: 0x00c3, 0x172c: 0x00c3, 0x172d: 0x00c3, 0x172e: 0x00c3, 0x172f: 0x00c3, - 0x1730: 0x00c3, 0x1731: 0x00c3, 0x1732: 0x00c3, 0x1733: 0x00c3, 0x1734: 0x0080, 0x1735: 0x0080, - 0x1736: 0x0080, 0x1737: 0x0080, 0x1738: 0x0080, 0x1739: 0x0080, 0x173a: 0x0080, 0x173b: 0x0080, - 0x173c: 0x0080, - // Block 0x5d, offset 0x1740 - 0x1740: 0x00c3, 0x1741: 0x00c3, 0x1742: 0x00c0, 0x1743: 0x00c0, 0x1744: 0x00c0, 0x1745: 0x00c0, - 0x1746: 0x00c0, 0x1747: 0x00c0, 0x1748: 0x00c0, 0x1749: 0x00c0, 0x174a: 0x00c0, 0x174b: 0x00c0, - 0x174c: 0x00c0, 0x174d: 0x00c0, 0x174e: 0x00c0, 0x174f: 0x00c0, 0x1750: 0x00c0, 0x1751: 0x00c0, - 0x1752: 0x00c0, 0x1753: 0x00c0, 0x1754: 0x00c0, 0x1755: 0x00c0, 0x1756: 0x00c0, 0x1757: 0x00c0, - 0x1758: 0x00c0, 0x1759: 0x00c0, 0x175a: 0x00c0, 0x175b: 0x00c0, 0x175c: 0x00c0, 0x175d: 0x00c0, - 0x175e: 0x00c0, 0x175f: 0x00c0, 0x1760: 0x00c0, 0x1761: 0x00c0, 0x1762: 0x00c3, 0x1763: 0x00c3, - 0x1764: 0x00c3, 0x1765: 0x00c3, 0x1766: 0x00c0, 0x1767: 0x00c0, 0x1768: 0x00c3, 0x1769: 0x00c3, - 0x176a: 0x00c5, 0x176b: 0x00c6, 0x176c: 0x00c3, 0x176d: 0x00c3, 0x176e: 0x00c0, 0x176f: 0x00c0, - 0x1770: 0x00c0, 0x1771: 0x00c0, 0x1772: 0x00c0, 0x1773: 0x00c0, 0x1774: 0x00c0, 0x1775: 0x00c0, - 0x1776: 0x00c0, 0x1777: 0x00c0, 0x1778: 0x00c0, 0x1779: 0x00c0, 0x177a: 0x00c0, 0x177b: 0x00c0, - 0x177c: 0x00c0, 0x177d: 0x00c0, 0x177e: 0x00c0, 0x177f: 0x00c0, - // Block 0x5e, offset 0x1780 - 0x1780: 0x00c0, 0x1781: 0x00c0, 0x1782: 0x00c0, 0x1783: 0x00c0, 0x1784: 0x00c0, 0x1785: 0x00c0, - 0x1786: 0x00c0, 0x1787: 0x00c0, 0x1788: 0x00c0, 0x1789: 0x00c0, 0x178a: 0x00c0, 0x178b: 0x00c0, - 0x178c: 0x00c0, 0x178d: 0x00c0, 0x178e: 0x00c0, 0x178f: 0x00c0, 0x1790: 0x00c0, 0x1791: 0x00c0, - 0x1792: 0x00c0, 0x1793: 0x00c0, 0x1794: 0x00c0, 0x1795: 0x00c0, 0x1796: 0x00c0, 0x1797: 0x00c0, - 0x1798: 0x00c0, 0x1799: 0x00c0, 0x179a: 0x00c0, 0x179b: 0x00c0, 0x179c: 0x00c0, 0x179d: 0x00c0, - 0x179e: 0x00c0, 0x179f: 0x00c0, 0x17a0: 0x00c0, 0x17a1: 0x00c0, 0x17a2: 0x00c0, 0x17a3: 0x00c0, - 0x17a4: 0x00c0, 0x17a5: 0x00c0, 0x17a6: 0x00c3, 0x17a7: 0x00c0, 0x17a8: 0x00c3, 0x17a9: 0x00c3, - 0x17aa: 0x00c0, 0x17ab: 0x00c0, 0x17ac: 0x00c0, 0x17ad: 0x00c3, 0x17ae: 0x00c0, 0x17af: 0x00c3, - 0x17b0: 0x00c3, 0x17b1: 0x00c3, 0x17b2: 0x00c5, 0x17b3: 0x00c5, - 0x17bc: 0x0080, 0x17bd: 0x0080, 0x17be: 0x0080, 0x17bf: 0x0080, - // Block 0x5f, offset 0x17c0 - 0x17c0: 0x00c0, 0x17c1: 0x00c0, 0x17c2: 0x00c0, 0x17c3: 0x00c0, 0x17c4: 0x00c0, 0x17c5: 0x00c0, - 0x17c6: 0x00c0, 0x17c7: 0x00c0, 0x17c8: 0x00c0, 0x17c9: 0x00c0, 0x17ca: 0x00c0, 0x17cb: 0x00c0, - 0x17cc: 0x00c0, 0x17cd: 0x00c0, 0x17ce: 0x00c0, 0x17cf: 0x00c0, 0x17d0: 0x00c0, 0x17d1: 0x00c0, - 0x17d2: 0x00c0, 0x17d3: 0x00c0, 0x17d4: 0x00c0, 0x17d5: 0x00c0, 0x17d6: 0x00c0, 0x17d7: 0x00c0, - 0x17d8: 0x00c0, 0x17d9: 0x00c0, 0x17da: 0x00c0, 0x17db: 0x00c0, 0x17dc: 0x00c0, 0x17dd: 0x00c0, - 0x17de: 0x00c0, 0x17df: 0x00c0, 0x17e0: 0x00c0, 0x17e1: 0x00c0, 0x17e2: 0x00c0, 0x17e3: 0x00c0, - 0x17e4: 0x00c0, 0x17e5: 0x00c0, 0x17e6: 0x00c0, 0x17e7: 0x00c0, 0x17e8: 0x00c0, 0x17e9: 0x00c0, - 0x17ea: 0x00c0, 0x17eb: 0x00c0, 0x17ec: 0x00c3, 0x17ed: 0x00c3, 0x17ee: 0x00c3, 0x17ef: 0x00c3, - 0x17f0: 0x00c3, 0x17f1: 0x00c3, 0x17f2: 0x00c3, 0x17f3: 0x00c3, 0x17f4: 0x00c0, 0x17f5: 0x00c0, - 0x17f6: 0x00c3, 0x17f7: 0x00c3, 0x17fb: 0x0080, - 0x17fc: 0x0080, 0x17fd: 0x0080, 0x17fe: 0x0080, 0x17ff: 0x0080, - // Block 0x60, offset 0x1800 - 0x1800: 0x00c0, 0x1801: 0x00c0, 0x1802: 0x00c0, 0x1803: 0x00c0, 0x1804: 0x00c0, 0x1805: 0x00c0, - 0x1806: 0x00c0, 0x1807: 0x00c0, 0x1808: 0x00c0, 0x1809: 0x00c0, - 0x180d: 0x00c0, 0x180e: 0x00c0, 0x180f: 0x00c0, 0x1810: 0x00c0, 0x1811: 0x00c0, - 0x1812: 0x00c0, 0x1813: 0x00c0, 0x1814: 0x00c0, 0x1815: 0x00c0, 0x1816: 0x00c0, 0x1817: 0x00c0, - 0x1818: 0x00c0, 0x1819: 0x00c0, 0x181a: 0x00c0, 0x181b: 0x00c0, 0x181c: 0x00c0, 0x181d: 0x00c0, - 0x181e: 0x00c0, 0x181f: 0x00c0, 0x1820: 0x00c0, 0x1821: 0x00c0, 0x1822: 0x00c0, 0x1823: 0x00c0, - 0x1824: 0x00c0, 0x1825: 0x00c0, 0x1826: 0x00c0, 0x1827: 0x00c0, 0x1828: 0x00c0, 0x1829: 0x00c0, - 0x182a: 0x00c0, 0x182b: 0x00c0, 0x182c: 0x00c0, 0x182d: 0x00c0, 0x182e: 0x00c0, 0x182f: 0x00c0, - 0x1830: 0x00c0, 0x1831: 0x00c0, 0x1832: 0x00c0, 0x1833: 0x00c0, 0x1834: 0x00c0, 0x1835: 0x00c0, - 0x1836: 0x00c0, 0x1837: 0x00c0, 0x1838: 0x00c0, 0x1839: 0x00c0, 0x183a: 0x00c0, 0x183b: 0x00c0, - 0x183c: 0x00c0, 0x183d: 0x00c0, 0x183e: 0x0080, 0x183f: 0x0080, - // Block 0x61, offset 0x1840 - 0x1840: 0x00c0, 0x1841: 0x00c0, 0x1842: 0x00c0, 0x1843: 0x00c0, 0x1844: 0x00c0, 0x1845: 0x00c0, - 0x1846: 0x00c0, 0x1847: 0x00c0, 0x1848: 0x00c0, - // Block 0x62, offset 0x1880 - 0x1880: 0x0080, 0x1881: 0x0080, 0x1882: 0x0080, 0x1883: 0x0080, 0x1884: 0x0080, 0x1885: 0x0080, - 0x1886: 0x0080, 0x1887: 0x0080, - 0x1890: 0x00c3, 0x1891: 0x00c3, - 0x1892: 0x00c3, 0x1893: 0x0080, 0x1894: 0x00c3, 0x1895: 0x00c3, 0x1896: 0x00c3, 0x1897: 0x00c3, - 0x1898: 0x00c3, 0x1899: 0x00c3, 0x189a: 0x00c3, 0x189b: 0x00c3, 0x189c: 0x00c3, 0x189d: 0x00c3, - 0x189e: 0x00c3, 0x189f: 0x00c3, 0x18a0: 0x00c3, 0x18a1: 0x00c0, 0x18a2: 0x00c3, 0x18a3: 0x00c3, - 0x18a4: 0x00c3, 0x18a5: 0x00c3, 0x18a6: 0x00c3, 0x18a7: 0x00c3, 0x18a8: 0x00c3, 0x18a9: 0x00c0, - 0x18aa: 0x00c0, 0x18ab: 0x00c0, 0x18ac: 0x00c0, 0x18ad: 0x00c3, 0x18ae: 0x00c0, 0x18af: 0x00c0, - 0x18b0: 0x00c0, 0x18b1: 0x00c0, 0x18b2: 0x00c0, 0x18b3: 0x00c0, 0x18b4: 0x00c3, 0x18b5: 0x00c0, - 0x18b6: 0x00c0, 0x18b7: 0x00c0, 0x18b8: 0x00c3, 0x18b9: 0x00c3, - // Block 0x63, offset 0x18c0 - 0x18c0: 0x00c0, 0x18c1: 0x00c0, 0x18c2: 0x00c0, 0x18c3: 0x00c0, 0x18c4: 0x00c0, 0x18c5: 0x00c0, - 0x18c6: 0x00c0, 0x18c7: 0x00c0, 0x18c8: 0x00c0, 0x18c9: 0x00c0, 0x18ca: 0x00c0, 0x18cb: 0x00c0, - 0x18cc: 0x00c0, 0x18cd: 0x00c0, 0x18ce: 0x00c0, 0x18cf: 0x00c0, 0x18d0: 0x00c0, 0x18d1: 0x00c0, - 0x18d2: 0x00c0, 0x18d3: 0x00c0, 0x18d4: 0x00c0, 0x18d5: 0x00c0, 0x18d6: 0x00c0, 0x18d7: 0x00c0, - 0x18d8: 0x00c0, 0x18d9: 0x00c0, 0x18da: 0x00c0, 0x18db: 0x00c0, 0x18dc: 0x00c0, 0x18dd: 0x00c0, - 0x18de: 0x00c0, 0x18df: 0x00c0, 0x18e0: 0x00c0, 0x18e1: 0x00c0, 0x18e2: 0x00c0, 0x18e3: 0x00c0, - 0x18e4: 0x00c0, 0x18e5: 0x00c0, 0x18e6: 0x00c8, 0x18e7: 0x00c8, 0x18e8: 0x00c8, 0x18e9: 0x00c8, - 0x18ea: 0x00c8, 0x18eb: 0x00c0, 0x18ec: 0x0080, 0x18ed: 0x0080, 0x18ee: 0x0080, 0x18ef: 0x00c0, - 0x18f0: 0x0080, 0x18f1: 0x0080, 0x18f2: 0x0080, 0x18f3: 0x0080, 0x18f4: 0x0080, 0x18f5: 0x0080, - 0x18f6: 0x0080, 0x18f7: 0x0080, 0x18f8: 0x0080, 0x18f9: 0x0080, 0x18fa: 0x0080, 0x18fb: 0x00c0, - 0x18fc: 0x0080, 0x18fd: 0x0080, 0x18fe: 0x0080, 0x18ff: 0x0080, - // Block 0x64, offset 0x1900 - 0x1900: 0x0080, 0x1901: 0x0080, 0x1902: 0x0080, 0x1903: 0x0080, 0x1904: 0x0080, 0x1905: 0x0080, - 0x1906: 0x0080, 0x1907: 0x0080, 0x1908: 0x0080, 0x1909: 0x0080, 0x190a: 0x0080, 0x190b: 0x0080, - 0x190c: 0x0080, 0x190d: 0x0080, 0x190e: 0x00c0, 0x190f: 0x0080, 0x1910: 0x0080, 0x1911: 0x0080, - 0x1912: 0x0080, 0x1913: 0x0080, 0x1914: 0x0080, 0x1915: 0x0080, 0x1916: 0x0080, 0x1917: 0x0080, - 0x1918: 0x0080, 0x1919: 0x0080, 0x191a: 0x0080, 0x191b: 0x0080, 0x191c: 0x0080, 0x191d: 0x0088, - 0x191e: 0x0088, 0x191f: 0x0088, 0x1920: 0x0088, 0x1921: 0x0088, 0x1922: 0x0080, 0x1923: 0x0080, - 0x1924: 0x0080, 0x1925: 0x0080, 0x1926: 0x0088, 0x1927: 0x0088, 0x1928: 0x0088, 0x1929: 0x0088, - 0x192a: 0x0088, 0x192b: 0x00c0, 0x192c: 0x00c0, 0x192d: 0x00c0, 0x192e: 0x00c0, 0x192f: 0x00c0, - 0x1930: 0x00c0, 0x1931: 0x00c0, 0x1932: 0x00c0, 0x1933: 0x00c0, 0x1934: 0x00c0, 0x1935: 0x00c0, - 0x1936: 0x00c0, 0x1937: 0x00c0, 0x1938: 0x0080, 0x1939: 0x00c0, 0x193a: 0x00c0, 0x193b: 0x00c0, - 0x193c: 0x00c0, 0x193d: 0x00c0, 0x193e: 0x00c0, 0x193f: 0x00c0, - // Block 0x65, offset 0x1940 - 0x1940: 0x00c0, 0x1941: 0x00c0, 0x1942: 0x00c0, 0x1943: 0x00c0, 0x1944: 0x00c0, 0x1945: 0x00c0, - 0x1946: 0x00c0, 0x1947: 0x00c0, 0x1948: 0x00c0, 0x1949: 0x00c0, 0x194a: 0x00c0, 0x194b: 0x00c0, - 0x194c: 0x00c0, 0x194d: 0x00c0, 0x194e: 0x00c0, 0x194f: 0x00c0, 0x1950: 0x00c0, 0x1951: 0x00c0, - 0x1952: 0x00c0, 0x1953: 0x00c0, 0x1954: 0x00c0, 0x1955: 0x00c0, 0x1956: 0x00c0, 0x1957: 0x00c0, - 0x1958: 0x00c0, 0x1959: 0x00c0, 0x195a: 0x00c0, 0x195b: 0x0080, 0x195c: 0x0080, 0x195d: 0x0080, - 0x195e: 0x0080, 0x195f: 0x0080, 0x1960: 0x0080, 0x1961: 0x0080, 0x1962: 0x0080, 0x1963: 0x0080, - 0x1964: 0x0080, 0x1965: 0x0080, 0x1966: 0x0080, 0x1967: 0x0080, 0x1968: 0x0080, 0x1969: 0x0080, - 0x196a: 0x0080, 0x196b: 0x0080, 0x196c: 0x0080, 0x196d: 0x0080, 0x196e: 0x0080, 0x196f: 0x0080, - 0x1970: 0x0080, 0x1971: 0x0080, 0x1972: 0x0080, 0x1973: 0x0080, 0x1974: 0x0080, 0x1975: 0x0080, - 0x1976: 0x0080, 0x1977: 0x0080, 0x1978: 0x0080, 0x1979: 0x0080, 0x197a: 0x0080, 0x197b: 0x0080, - 0x197c: 0x0080, 0x197d: 0x0080, 0x197e: 0x0080, 0x197f: 0x0088, - // Block 0x66, offset 0x1980 - 0x1980: 0x00c3, 0x1981: 0x00c3, 0x1982: 0x00c3, 0x1983: 0x00c3, 0x1984: 0x00c3, 0x1985: 0x00c3, - 0x1986: 0x00c3, 0x1987: 0x00c3, 0x1988: 0x00c3, 0x1989: 0x00c3, 0x198a: 0x00c3, 0x198b: 0x00c3, - 0x198c: 0x00c3, 0x198d: 0x00c3, 0x198e: 0x00c3, 0x198f: 0x00c3, 0x1990: 0x00c3, 0x1991: 0x00c3, - 0x1992: 0x00c3, 0x1993: 0x00c3, 0x1994: 0x00c3, 0x1995: 0x00c3, 0x1996: 0x00c3, 0x1997: 0x00c3, - 0x1998: 0x00c3, 0x1999: 0x00c3, 0x199a: 0x00c3, 0x199b: 0x00c3, 0x199c: 0x00c3, 0x199d: 0x00c3, - 0x199e: 0x00c3, 0x199f: 0x00c3, 0x19a0: 0x00c3, 0x19a1: 0x00c3, 0x19a2: 0x00c3, 0x19a3: 0x00c3, - 0x19a4: 0x00c3, 0x19a5: 0x00c3, 0x19a6: 0x00c3, 0x19a7: 0x00c3, 0x19a8: 0x00c3, 0x19a9: 0x00c3, - 0x19aa: 0x00c3, 0x19ab: 0x00c3, 0x19ac: 0x00c3, 0x19ad: 0x00c3, 0x19ae: 0x00c3, 0x19af: 0x00c3, - 0x19b0: 0x00c3, 0x19b1: 0x00c3, 0x19b2: 0x00c3, 0x19b3: 0x00c3, 0x19b4: 0x00c3, 0x19b5: 0x00c3, - 0x19b6: 0x00c3, 0x19b7: 0x00c3, 0x19b8: 0x00c3, 0x19b9: 0x00c3, 0x19bb: 0x00c3, - 0x19bc: 0x00c3, 0x19bd: 0x00c3, 0x19be: 0x00c3, 0x19bf: 0x00c3, - // Block 0x67, offset 0x19c0 - 0x19c0: 0x00c0, 0x19c1: 0x00c0, 0x19c2: 0x00c0, 0x19c3: 0x00c0, 0x19c4: 0x00c0, 0x19c5: 0x00c0, - 0x19c6: 0x00c0, 0x19c7: 0x00c0, 0x19c8: 0x00c0, 0x19c9: 0x00c0, 0x19ca: 0x00c0, 0x19cb: 0x00c0, - 0x19cc: 0x00c0, 0x19cd: 0x00c0, 0x19ce: 0x00c0, 0x19cf: 0x00c0, 0x19d0: 0x00c0, 0x19d1: 0x00c0, - 0x19d2: 0x00c0, 0x19d3: 0x00c0, 0x19d4: 0x00c0, 0x19d5: 0x00c0, 0x19d6: 0x00c0, 0x19d7: 0x00c0, - 0x19d8: 0x00c0, 0x19d9: 0x00c0, 0x19da: 0x0080, 0x19db: 0x0080, 0x19dc: 0x00c0, 0x19dd: 0x00c0, - 0x19de: 0x00c0, 0x19df: 0x00c0, 0x19e0: 0x00c0, 0x19e1: 0x00c0, 0x19e2: 0x00c0, 0x19e3: 0x00c0, - 0x19e4: 0x00c0, 0x19e5: 0x00c0, 0x19e6: 0x00c0, 0x19e7: 0x00c0, 0x19e8: 0x00c0, 0x19e9: 0x00c0, - 0x19ea: 0x00c0, 0x19eb: 0x00c0, 0x19ec: 0x00c0, 0x19ed: 0x00c0, 0x19ee: 0x00c0, 0x19ef: 0x00c0, - 0x19f0: 0x00c0, 0x19f1: 0x00c0, 0x19f2: 0x00c0, 0x19f3: 0x00c0, 0x19f4: 0x00c0, 0x19f5: 0x00c0, - 0x19f6: 0x00c0, 0x19f7: 0x00c0, 0x19f8: 0x00c0, 0x19f9: 0x00c0, 0x19fa: 0x00c0, 0x19fb: 0x00c0, - 0x19fc: 0x00c0, 0x19fd: 0x00c0, 0x19fe: 0x00c0, 0x19ff: 0x00c0, - // Block 0x68, offset 0x1a00 - 0x1a00: 0x00c8, 0x1a01: 0x00c8, 0x1a02: 0x00c8, 0x1a03: 0x00c8, 0x1a04: 0x00c8, 0x1a05: 0x00c8, - 0x1a06: 0x00c8, 0x1a07: 0x00c8, 0x1a08: 0x00c8, 0x1a09: 0x00c8, 0x1a0a: 0x00c8, 0x1a0b: 0x00c8, - 0x1a0c: 0x00c8, 0x1a0d: 0x00c8, 0x1a0e: 0x00c8, 0x1a0f: 0x00c8, 0x1a10: 0x00c8, 0x1a11: 0x00c8, - 0x1a12: 0x00c8, 0x1a13: 0x00c8, 0x1a14: 0x00c8, 0x1a15: 0x00c8, - 0x1a18: 0x00c8, 0x1a19: 0x00c8, 0x1a1a: 0x00c8, 0x1a1b: 0x00c8, 0x1a1c: 0x00c8, 0x1a1d: 0x00c8, - 0x1a20: 0x00c8, 0x1a21: 0x00c8, 0x1a22: 0x00c8, 0x1a23: 0x00c8, - 0x1a24: 0x00c8, 0x1a25: 0x00c8, 0x1a26: 0x00c8, 0x1a27: 0x00c8, 0x1a28: 0x00c8, 0x1a29: 0x00c8, - 0x1a2a: 0x00c8, 0x1a2b: 0x00c8, 0x1a2c: 0x00c8, 0x1a2d: 0x00c8, 0x1a2e: 0x00c8, 0x1a2f: 0x00c8, - 0x1a30: 0x00c8, 0x1a31: 0x00c8, 0x1a32: 0x00c8, 0x1a33: 0x00c8, 0x1a34: 0x00c8, 0x1a35: 0x00c8, - 0x1a36: 0x00c8, 0x1a37: 0x00c8, 0x1a38: 0x00c8, 0x1a39: 0x00c8, 0x1a3a: 0x00c8, 0x1a3b: 0x00c8, - 0x1a3c: 0x00c8, 0x1a3d: 0x00c8, 0x1a3e: 0x00c8, 0x1a3f: 0x00c8, - // Block 0x69, offset 0x1a40 - 0x1a40: 0x00c8, 0x1a41: 0x00c8, 0x1a42: 0x00c8, 0x1a43: 0x00c8, 0x1a44: 0x00c8, 0x1a45: 0x00c8, - 0x1a48: 0x00c8, 0x1a49: 0x00c8, 0x1a4a: 0x00c8, 0x1a4b: 0x00c8, - 0x1a4c: 0x00c8, 0x1a4d: 0x00c8, 0x1a50: 0x00c8, 0x1a51: 0x00c8, - 0x1a52: 0x00c8, 0x1a53: 0x00c8, 0x1a54: 0x00c8, 0x1a55: 0x00c8, 0x1a56: 0x00c8, 0x1a57: 0x00c8, - 0x1a59: 0x00c8, 0x1a5b: 0x00c8, 0x1a5d: 0x00c8, - 0x1a5f: 0x00c8, 0x1a60: 0x00c8, 0x1a61: 0x00c8, 0x1a62: 0x00c8, 0x1a63: 0x00c8, - 0x1a64: 0x00c8, 0x1a65: 0x00c8, 0x1a66: 0x00c8, 0x1a67: 0x00c8, 0x1a68: 0x00c8, 0x1a69: 0x00c8, - 0x1a6a: 0x00c8, 0x1a6b: 0x00c8, 0x1a6c: 0x00c8, 0x1a6d: 0x00c8, 0x1a6e: 0x00c8, 0x1a6f: 0x00c8, - 0x1a70: 0x00c8, 0x1a71: 0x0088, 0x1a72: 0x00c8, 0x1a73: 0x0088, 0x1a74: 0x00c8, 0x1a75: 0x0088, - 0x1a76: 0x00c8, 0x1a77: 0x0088, 0x1a78: 0x00c8, 0x1a79: 0x0088, 0x1a7a: 0x00c8, 0x1a7b: 0x0088, - 0x1a7c: 0x00c8, 0x1a7d: 0x0088, - // Block 0x6a, offset 0x1a80 - 0x1a80: 0x00c8, 0x1a81: 0x00c8, 0x1a82: 0x00c8, 0x1a83: 0x00c8, 0x1a84: 0x00c8, 0x1a85: 0x00c8, - 0x1a86: 0x00c8, 0x1a87: 0x00c8, 0x1a88: 0x0088, 0x1a89: 0x0088, 0x1a8a: 0x0088, 0x1a8b: 0x0088, - 0x1a8c: 0x0088, 0x1a8d: 0x0088, 0x1a8e: 0x0088, 0x1a8f: 0x0088, 0x1a90: 0x00c8, 0x1a91: 0x00c8, - 0x1a92: 0x00c8, 0x1a93: 0x00c8, 0x1a94: 0x00c8, 0x1a95: 0x00c8, 0x1a96: 0x00c8, 0x1a97: 0x00c8, - 0x1a98: 0x0088, 0x1a99: 0x0088, 0x1a9a: 0x0088, 0x1a9b: 0x0088, 0x1a9c: 0x0088, 0x1a9d: 0x0088, - 0x1a9e: 0x0088, 0x1a9f: 0x0088, 0x1aa0: 0x00c8, 0x1aa1: 0x00c8, 0x1aa2: 0x00c8, 0x1aa3: 0x00c8, - 0x1aa4: 0x00c8, 0x1aa5: 0x00c8, 0x1aa6: 0x00c8, 0x1aa7: 0x00c8, 0x1aa8: 0x0088, 0x1aa9: 0x0088, - 0x1aaa: 0x0088, 0x1aab: 0x0088, 0x1aac: 0x0088, 0x1aad: 0x0088, 0x1aae: 0x0088, 0x1aaf: 0x0088, - 0x1ab0: 0x00c8, 0x1ab1: 0x00c8, 0x1ab2: 0x00c8, 0x1ab3: 0x00c8, 0x1ab4: 0x00c8, - 0x1ab6: 0x00c8, 0x1ab7: 0x00c8, 0x1ab8: 0x00c8, 0x1ab9: 0x00c8, 0x1aba: 0x00c8, 0x1abb: 0x0088, - 0x1abc: 0x0088, 0x1abd: 0x0088, 0x1abe: 0x0088, 0x1abf: 0x0088, - // Block 0x6b, offset 0x1ac0 - 0x1ac0: 0x0088, 0x1ac1: 0x0088, 0x1ac2: 0x00c8, 0x1ac3: 0x00c8, 0x1ac4: 0x00c8, - 0x1ac6: 0x00c8, 0x1ac7: 0x00c8, 0x1ac8: 0x00c8, 0x1ac9: 0x0088, 0x1aca: 0x00c8, 0x1acb: 0x0088, - 0x1acc: 0x0088, 0x1acd: 0x0088, 0x1ace: 0x0088, 0x1acf: 0x0088, 0x1ad0: 0x00c8, 0x1ad1: 0x00c8, - 0x1ad2: 0x00c8, 0x1ad3: 0x0088, 0x1ad6: 0x00c8, 0x1ad7: 0x00c8, - 0x1ad8: 0x00c8, 0x1ad9: 0x00c8, 0x1ada: 0x00c8, 0x1adb: 0x0088, 0x1add: 0x0088, - 0x1ade: 0x0088, 0x1adf: 0x0088, 0x1ae0: 0x00c8, 0x1ae1: 0x00c8, 0x1ae2: 0x00c8, 0x1ae3: 0x0088, - 0x1ae4: 0x00c8, 0x1ae5: 0x00c8, 0x1ae6: 0x00c8, 0x1ae7: 0x00c8, 0x1ae8: 0x00c8, 0x1ae9: 0x00c8, - 0x1aea: 0x00c8, 0x1aeb: 0x0088, 0x1aec: 0x00c8, 0x1aed: 0x0088, 0x1aee: 0x0088, 0x1aef: 0x0088, - 0x1af2: 0x00c8, 0x1af3: 0x00c8, 0x1af4: 0x00c8, - 0x1af6: 0x00c8, 0x1af7: 0x00c8, 0x1af8: 0x00c8, 0x1af9: 0x0088, 0x1afa: 0x00c8, 0x1afb: 0x0088, - 0x1afc: 0x0088, 0x1afd: 0x0088, 0x1afe: 0x0088, - // Block 0x6c, offset 0x1b00 - 0x1b00: 0x0080, 0x1b01: 0x0080, 0x1b02: 0x0080, 0x1b03: 0x0080, 0x1b04: 0x0080, 0x1b05: 0x0080, - 0x1b06: 0x0080, 0x1b07: 0x0080, 0x1b08: 0x0080, 0x1b09: 0x0080, 0x1b0a: 0x0080, 0x1b0b: 0x0040, - 0x1b0c: 0x004d, 0x1b0d: 0x004e, 0x1b0e: 0x0040, 0x1b0f: 0x0040, 0x1b10: 0x0080, 0x1b11: 0x0080, - 0x1b12: 0x0080, 0x1b13: 0x0080, 0x1b14: 0x0080, 0x1b15: 0x0080, 0x1b16: 0x0080, 0x1b17: 0x0080, - 0x1b18: 0x0080, 0x1b19: 0x0080, 0x1b1a: 0x0080, 0x1b1b: 0x0080, 0x1b1c: 0x0080, 0x1b1d: 0x0080, - 0x1b1e: 0x0080, 0x1b1f: 0x0080, 0x1b20: 0x0080, 0x1b21: 0x0080, 0x1b22: 0x0080, 0x1b23: 0x0080, - 0x1b24: 0x0080, 0x1b25: 0x0080, 0x1b26: 0x0080, 0x1b27: 0x0080, 0x1b28: 0x0040, 0x1b29: 0x0040, - 0x1b2a: 0x0040, 0x1b2b: 0x0040, 0x1b2c: 0x0040, 0x1b2d: 0x0040, 0x1b2e: 0x0040, 0x1b2f: 0x0080, - 0x1b30: 0x0080, 0x1b31: 0x0080, 0x1b32: 0x0080, 0x1b33: 0x0080, 0x1b34: 0x0080, 0x1b35: 0x0080, - 0x1b36: 0x0080, 0x1b37: 0x0080, 0x1b38: 0x0080, 0x1b39: 0x0080, 0x1b3a: 0x0080, 0x1b3b: 0x0080, - 0x1b3c: 0x0080, 0x1b3d: 0x0080, 0x1b3e: 0x0080, 0x1b3f: 0x0080, - // Block 0x6d, offset 0x1b40 - 0x1b40: 0x0080, 0x1b41: 0x0080, 0x1b42: 0x0080, 0x1b43: 0x0080, 0x1b44: 0x0080, 0x1b45: 0x0080, - 0x1b46: 0x0080, 0x1b47: 0x0080, 0x1b48: 0x0080, 0x1b49: 0x0080, 0x1b4a: 0x0080, 0x1b4b: 0x0080, - 0x1b4c: 0x0080, 0x1b4d: 0x0080, 0x1b4e: 0x0080, 0x1b4f: 0x0080, 0x1b50: 0x0080, 0x1b51: 0x0080, - 0x1b52: 0x0080, 0x1b53: 0x0080, 0x1b54: 0x0080, 0x1b55: 0x0080, 0x1b56: 0x0080, 0x1b57: 0x0080, - 0x1b58: 0x0080, 0x1b59: 0x0080, 0x1b5a: 0x0080, 0x1b5b: 0x0080, 0x1b5c: 0x0080, 0x1b5d: 0x0080, - 0x1b5e: 0x0080, 0x1b5f: 0x0080, 0x1b60: 0x0040, 0x1b61: 0x0040, 0x1b62: 0x0040, 0x1b63: 0x0040, - 0x1b64: 0x0040, 0x1b66: 0x0040, 0x1b67: 0x0040, 0x1b68: 0x0040, 0x1b69: 0x0040, - 0x1b6a: 0x0040, 0x1b6b: 0x0040, 0x1b6c: 0x0040, 0x1b6d: 0x0040, 0x1b6e: 0x0040, 0x1b6f: 0x0040, - 0x1b70: 0x0080, 0x1b71: 0x0080, 0x1b74: 0x0080, 0x1b75: 0x0080, - 0x1b76: 0x0080, 0x1b77: 0x0080, 0x1b78: 0x0080, 0x1b79: 0x0080, 0x1b7a: 0x0080, 0x1b7b: 0x0080, - 0x1b7c: 0x0080, 0x1b7d: 0x0080, 0x1b7e: 0x0080, 0x1b7f: 0x0080, - // Block 0x6e, offset 0x1b80 - 0x1b80: 0x0080, 0x1b81: 0x0080, 0x1b82: 0x0080, 0x1b83: 0x0080, 0x1b84: 0x0080, 0x1b85: 0x0080, - 0x1b86: 0x0080, 0x1b87: 0x0080, 0x1b88: 0x0080, 0x1b89: 0x0080, 0x1b8a: 0x0080, 0x1b8b: 0x0080, - 0x1b8c: 0x0080, 0x1b8d: 0x0080, 0x1b8e: 0x0080, 0x1b90: 0x0080, 0x1b91: 0x0080, - 0x1b92: 0x0080, 0x1b93: 0x0080, 0x1b94: 0x0080, 0x1b95: 0x0080, 0x1b96: 0x0080, 0x1b97: 0x0080, - 0x1b98: 0x0080, 0x1b99: 0x0080, 0x1b9a: 0x0080, 0x1b9b: 0x0080, 0x1b9c: 0x0080, - 0x1ba0: 0x0080, 0x1ba1: 0x0080, 0x1ba2: 0x0080, 0x1ba3: 0x0080, - 0x1ba4: 0x0080, 0x1ba5: 0x0080, 0x1ba6: 0x0080, 0x1ba7: 0x0080, 0x1ba8: 0x0080, 0x1ba9: 0x0080, - 0x1baa: 0x0080, 0x1bab: 0x0080, 0x1bac: 0x0080, 0x1bad: 0x0080, 0x1bae: 0x0080, 0x1baf: 0x0080, - 0x1bb0: 0x0080, 0x1bb1: 0x0080, 0x1bb2: 0x0080, 0x1bb3: 0x0080, 0x1bb4: 0x0080, 0x1bb5: 0x0080, - 0x1bb6: 0x0080, 0x1bb7: 0x0080, 0x1bb8: 0x0080, 0x1bb9: 0x0080, 0x1bba: 0x0080, 0x1bbb: 0x0080, - 0x1bbc: 0x0080, 0x1bbd: 0x0080, 0x1bbe: 0x0080, 0x1bbf: 0x0080, - // Block 0x6f, offset 0x1bc0 - 0x1bd0: 0x00c3, 0x1bd1: 0x00c3, - 0x1bd2: 0x00c3, 0x1bd3: 0x00c3, 0x1bd4: 0x00c3, 0x1bd5: 0x00c3, 0x1bd6: 0x00c3, 0x1bd7: 0x00c3, - 0x1bd8: 0x00c3, 0x1bd9: 0x00c3, 0x1bda: 0x00c3, 0x1bdb: 0x00c3, 0x1bdc: 0x00c3, 0x1bdd: 0x0083, - 0x1bde: 0x0083, 0x1bdf: 0x0083, 0x1be0: 0x0083, 0x1be1: 0x00c3, 0x1be2: 0x0083, 0x1be3: 0x0083, - 0x1be4: 0x0083, 0x1be5: 0x00c3, 0x1be6: 0x00c3, 0x1be7: 0x00c3, 0x1be8: 0x00c3, 0x1be9: 0x00c3, - 0x1bea: 0x00c3, 0x1beb: 0x00c3, 0x1bec: 0x00c3, 0x1bed: 0x00c3, 0x1bee: 0x00c3, 0x1bef: 0x00c3, - 0x1bf0: 0x00c3, - // Block 0x70, offset 0x1c00 - 0x1c00: 0x0080, 0x1c01: 0x0080, 0x1c02: 0x0080, 0x1c03: 0x0080, 0x1c04: 0x0080, 0x1c05: 0x0080, - 0x1c06: 0x0080, 0x1c07: 0x0080, 0x1c08: 0x0080, 0x1c09: 0x0080, 0x1c0a: 0x0080, 0x1c0b: 0x0080, - 0x1c0c: 0x0080, 0x1c0d: 0x0080, 0x1c0e: 0x0080, 0x1c0f: 0x0080, 0x1c10: 0x0080, 0x1c11: 0x0080, - 0x1c12: 0x0080, 0x1c13: 0x0080, 0x1c14: 0x0080, 0x1c15: 0x0080, 0x1c16: 0x0080, 0x1c17: 0x0080, - 0x1c18: 0x0080, 0x1c19: 0x0080, 0x1c1a: 0x0080, 0x1c1b: 0x0080, 0x1c1c: 0x0080, 0x1c1d: 0x0080, - 0x1c1e: 0x0080, 0x1c1f: 0x0080, 0x1c20: 0x0080, 0x1c21: 0x0080, 0x1c22: 0x0080, 0x1c23: 0x0080, - 0x1c24: 0x0080, 0x1c25: 0x0080, 0x1c26: 0x0088, 0x1c27: 0x0080, 0x1c28: 0x0080, 0x1c29: 0x0080, - 0x1c2a: 0x0080, 0x1c2b: 0x0080, 0x1c2c: 0x0080, 0x1c2d: 0x0080, 0x1c2e: 0x0080, 0x1c2f: 0x0080, - 0x1c30: 0x0080, 0x1c31: 0x0080, 0x1c32: 0x00c0, 0x1c33: 0x0080, 0x1c34: 0x0080, 0x1c35: 0x0080, - 0x1c36: 0x0080, 0x1c37: 0x0080, 0x1c38: 0x0080, 0x1c39: 0x0080, 0x1c3a: 0x0080, 0x1c3b: 0x0080, - 0x1c3c: 0x0080, 0x1c3d: 0x0080, 0x1c3e: 0x0080, 0x1c3f: 0x0080, - // Block 0x71, offset 0x1c40 - 0x1c40: 0x0080, 0x1c41: 0x0080, 0x1c42: 0x0080, 0x1c43: 0x0080, 0x1c44: 0x0080, 0x1c45: 0x0080, - 0x1c46: 0x0080, 0x1c47: 0x0080, 0x1c48: 0x0080, 0x1c49: 0x0080, 0x1c4a: 0x0080, 0x1c4b: 0x0080, - 0x1c4c: 0x0080, 0x1c4d: 0x0080, 0x1c4e: 0x00c0, 0x1c4f: 0x0080, 0x1c50: 0x0080, 0x1c51: 0x0080, - 0x1c52: 0x0080, 0x1c53: 0x0080, 0x1c54: 0x0080, 0x1c55: 0x0080, 0x1c56: 0x0080, 0x1c57: 0x0080, - 0x1c58: 0x0080, 0x1c59: 0x0080, 0x1c5a: 0x0080, 0x1c5b: 0x0080, 0x1c5c: 0x0080, 0x1c5d: 0x0080, - 0x1c5e: 0x0080, 0x1c5f: 0x0080, 0x1c60: 0x0080, 0x1c61: 0x0080, 0x1c62: 0x0080, 0x1c63: 0x0080, - 0x1c64: 0x0080, 0x1c65: 0x0080, 0x1c66: 0x0080, 0x1c67: 0x0080, 0x1c68: 0x0080, 0x1c69: 0x0080, - 0x1c6a: 0x0080, 0x1c6b: 0x0080, 0x1c6c: 0x0080, 0x1c6d: 0x0080, 0x1c6e: 0x0080, 0x1c6f: 0x0080, - 0x1c70: 0x0080, 0x1c71: 0x0080, 0x1c72: 0x0080, 0x1c73: 0x0080, 0x1c74: 0x0080, 0x1c75: 0x0080, - 0x1c76: 0x0080, 0x1c77: 0x0080, 0x1c78: 0x0080, 0x1c79: 0x0080, 0x1c7a: 0x0080, 0x1c7b: 0x0080, - 0x1c7c: 0x0080, 0x1c7d: 0x0080, 0x1c7e: 0x0080, 0x1c7f: 0x0080, - // Block 0x72, offset 0x1c80 - 0x1c80: 0x0080, 0x1c81: 0x0080, 0x1c82: 0x0080, 0x1c83: 0x00c0, 0x1c84: 0x00c0, 0x1c85: 0x0080, - 0x1c86: 0x0080, 0x1c87: 0x0080, 0x1c88: 0x0080, 0x1c89: 0x0080, 0x1c8a: 0x0080, 0x1c8b: 0x0080, - 0x1c90: 0x0080, 0x1c91: 0x0080, - 0x1c92: 0x0080, 0x1c93: 0x0080, 0x1c94: 0x0080, 0x1c95: 0x0080, 0x1c96: 0x0080, 0x1c97: 0x0080, - 0x1c98: 0x0080, 0x1c99: 0x0080, 0x1c9a: 0x0080, 0x1c9b: 0x0080, 0x1c9c: 0x0080, 0x1c9d: 0x0080, - 0x1c9e: 0x0080, 0x1c9f: 0x0080, 0x1ca0: 0x0080, 0x1ca1: 0x0080, 0x1ca2: 0x0080, 0x1ca3: 0x0080, - 0x1ca4: 0x0080, 0x1ca5: 0x0080, 0x1ca6: 0x0080, 0x1ca7: 0x0080, 0x1ca8: 0x0080, 0x1ca9: 0x0080, - 0x1caa: 0x0080, 0x1cab: 0x0080, 0x1cac: 0x0080, 0x1cad: 0x0080, 0x1cae: 0x0080, 0x1caf: 0x0080, - 0x1cb0: 0x0080, 0x1cb1: 0x0080, 0x1cb2: 0x0080, 0x1cb3: 0x0080, 0x1cb4: 0x0080, 0x1cb5: 0x0080, - 0x1cb6: 0x0080, 0x1cb7: 0x0080, 0x1cb8: 0x0080, 0x1cb9: 0x0080, 0x1cba: 0x0080, 0x1cbb: 0x0080, - 0x1cbc: 0x0080, 0x1cbd: 0x0080, 0x1cbe: 0x0080, 0x1cbf: 0x0080, - // Block 0x73, offset 0x1cc0 - 0x1cc0: 0x0080, 0x1cc1: 0x0080, 0x1cc2: 0x0080, 0x1cc3: 0x0080, 0x1cc4: 0x0080, 0x1cc5: 0x0080, - 0x1cc6: 0x0080, 0x1cc7: 0x0080, 0x1cc8: 0x0080, 0x1cc9: 0x0080, 0x1cca: 0x0080, 0x1ccb: 0x0080, - 0x1ccc: 0x0080, 0x1ccd: 0x0080, 0x1cce: 0x0080, 0x1ccf: 0x0080, 0x1cd0: 0x0080, 0x1cd1: 0x0080, - 0x1cd2: 0x0080, 0x1cd3: 0x0080, 0x1cd4: 0x0080, 0x1cd5: 0x0080, 0x1cd6: 0x0080, 0x1cd7: 0x0080, - 0x1cd8: 0x0080, 0x1cd9: 0x0080, 0x1cda: 0x0080, 0x1cdb: 0x0080, 0x1cdc: 0x0080, 0x1cdd: 0x0080, - 0x1cde: 0x0080, 0x1cdf: 0x0080, 0x1ce0: 0x0080, 0x1ce1: 0x0080, 0x1ce2: 0x0080, 0x1ce3: 0x0080, - 0x1ce4: 0x0080, 0x1ce5: 0x0080, 0x1ce6: 0x0080, 0x1ce7: 0x0080, 0x1ce8: 0x0080, 0x1ce9: 0x0080, - 0x1cea: 0x0080, 0x1ceb: 0x0080, 0x1cec: 0x0080, 0x1ced: 0x0080, 0x1cee: 0x0080, 0x1cef: 0x0080, - 0x1cf0: 0x0080, 0x1cf1: 0x0080, 0x1cf2: 0x0080, 0x1cf3: 0x0080, 0x1cf4: 0x0080, 0x1cf5: 0x0080, - 0x1cf6: 0x0080, 0x1cf7: 0x0080, 0x1cf8: 0x0080, 0x1cf9: 0x0080, 0x1cfa: 0x0080, 0x1cfb: 0x0080, - 0x1cfc: 0x0080, 0x1cfd: 0x0080, 0x1cfe: 0x0080, 0x1cff: 0x0080, - // Block 0x74, offset 0x1d00 - 0x1d00: 0x0080, 0x1d01: 0x0080, 0x1d02: 0x0080, 0x1d03: 0x0080, 0x1d04: 0x0080, 0x1d05: 0x0080, - 0x1d06: 0x0080, 0x1d07: 0x0080, 0x1d08: 0x0080, 0x1d09: 0x0080, 0x1d0a: 0x0080, 0x1d0b: 0x0080, - 0x1d0c: 0x0080, 0x1d0d: 0x0080, 0x1d0e: 0x0080, 0x1d0f: 0x0080, 0x1d10: 0x0080, 0x1d11: 0x0080, - 0x1d12: 0x0080, 0x1d13: 0x0080, 0x1d14: 0x0080, 0x1d15: 0x0080, 0x1d16: 0x0080, 0x1d17: 0x0080, - 0x1d18: 0x0080, 0x1d19: 0x0080, 0x1d1a: 0x0080, 0x1d1b: 0x0080, 0x1d1c: 0x0080, 0x1d1d: 0x0080, - 0x1d1e: 0x0080, 0x1d1f: 0x0080, 0x1d20: 0x0080, 0x1d21: 0x0080, 0x1d22: 0x0080, 0x1d23: 0x0080, - 0x1d24: 0x0080, 0x1d25: 0x0080, 0x1d26: 0x0080, - // Block 0x75, offset 0x1d40 - 0x1d40: 0x0080, 0x1d41: 0x0080, 0x1d42: 0x0080, 0x1d43: 0x0080, 0x1d44: 0x0080, 0x1d45: 0x0080, - 0x1d46: 0x0080, 0x1d47: 0x0080, 0x1d48: 0x0080, 0x1d49: 0x0080, 0x1d4a: 0x0080, - 0x1d60: 0x0080, 0x1d61: 0x0080, 0x1d62: 0x0080, 0x1d63: 0x0080, - 0x1d64: 0x0080, 0x1d65: 0x0080, 0x1d66: 0x0080, 0x1d67: 0x0080, 0x1d68: 0x0080, 0x1d69: 0x0080, - 0x1d6a: 0x0080, 0x1d6b: 0x0080, 0x1d6c: 0x0080, 0x1d6d: 0x0080, 0x1d6e: 0x0080, 0x1d6f: 0x0080, - 0x1d70: 0x0080, 0x1d71: 0x0080, 0x1d72: 0x0080, 0x1d73: 0x0080, 0x1d74: 0x0080, 0x1d75: 0x0080, - 0x1d76: 0x0080, 0x1d77: 0x0080, 0x1d78: 0x0080, 0x1d79: 0x0080, 0x1d7a: 0x0080, 0x1d7b: 0x0080, - 0x1d7c: 0x0080, 0x1d7d: 0x0080, 0x1d7e: 0x0080, 0x1d7f: 0x0080, - // Block 0x76, offset 0x1d80 - 0x1d80: 0x0080, 0x1d81: 0x0080, 0x1d82: 0x0080, 0x1d83: 0x0080, 0x1d84: 0x0080, 0x1d85: 0x0080, - 0x1d86: 0x0080, 0x1d87: 0x0080, 0x1d88: 0x0080, 0x1d89: 0x0080, 0x1d8a: 0x0080, 0x1d8b: 0x0080, - 0x1d8c: 0x0080, 0x1d8d: 0x0080, 0x1d8e: 0x0080, 0x1d8f: 0x0080, 0x1d90: 0x0080, 0x1d91: 0x0080, - 0x1d92: 0x0080, 0x1d93: 0x0080, 0x1d94: 0x0080, 0x1d95: 0x0080, 0x1d96: 0x0080, 0x1d97: 0x0080, - 0x1d98: 0x0080, 0x1d99: 0x0080, 0x1d9a: 0x0080, 0x1d9b: 0x0080, 0x1d9c: 0x0080, 0x1d9d: 0x0080, - 0x1d9e: 0x0080, 0x1d9f: 0x0080, 0x1da0: 0x0080, 0x1da1: 0x0080, 0x1da2: 0x0080, 0x1da3: 0x0080, - 0x1da4: 0x0080, 0x1da5: 0x0080, 0x1da6: 0x0080, 0x1da7: 0x0080, 0x1da8: 0x0080, 0x1da9: 0x0080, - 0x1daa: 0x0080, 0x1dab: 0x0080, 0x1dac: 0x0080, 0x1dad: 0x0080, 0x1dae: 0x0080, 0x1daf: 0x0080, - 0x1db0: 0x0080, 0x1db1: 0x0080, 0x1db2: 0x0080, 0x1db3: 0x0080, - 0x1db6: 0x0080, 0x1db7: 0x0080, 0x1db8: 0x0080, 0x1db9: 0x0080, 0x1dba: 0x0080, 0x1dbb: 0x0080, - 0x1dbc: 0x0080, 0x1dbd: 0x0080, 0x1dbe: 0x0080, 0x1dbf: 0x0080, - // Block 0x77, offset 0x1dc0 - 0x1dc0: 0x0080, 0x1dc1: 0x0080, 0x1dc2: 0x0080, 0x1dc3: 0x0080, 0x1dc4: 0x0080, 0x1dc5: 0x0080, - 0x1dc6: 0x0080, 0x1dc7: 0x0080, 0x1dc8: 0x0080, 0x1dc9: 0x0080, 0x1dca: 0x0080, 0x1dcb: 0x0080, - 0x1dcc: 0x0080, 0x1dcd: 0x0080, 0x1dce: 0x0080, 0x1dcf: 0x0080, 0x1dd0: 0x0080, 0x1dd1: 0x0080, - 0x1dd2: 0x0080, 0x1dd3: 0x0080, 0x1dd4: 0x0080, 0x1dd5: 0x0080, - 0x1dd8: 0x0080, 0x1dd9: 0x0080, 0x1dda: 0x0080, 0x1ddb: 0x0080, 0x1ddc: 0x0080, 0x1ddd: 0x0080, - 0x1dde: 0x0080, 0x1ddf: 0x0080, 0x1de0: 0x0080, 0x1de1: 0x0080, 0x1de2: 0x0080, 0x1de3: 0x0080, - 0x1de4: 0x0080, 0x1de5: 0x0080, 0x1de6: 0x0080, 0x1de7: 0x0080, 0x1de8: 0x0080, 0x1de9: 0x0080, - 0x1dea: 0x0080, 0x1deb: 0x0080, 0x1dec: 0x0080, 0x1ded: 0x0080, 0x1dee: 0x0080, 0x1def: 0x0080, - 0x1df0: 0x0080, 0x1df1: 0x0080, 0x1df2: 0x0080, 0x1df3: 0x0080, 0x1df4: 0x0080, 0x1df5: 0x0080, - 0x1df6: 0x0080, 0x1df7: 0x0080, 0x1df8: 0x0080, 0x1df9: 0x0080, - 0x1dfd: 0x0080, 0x1dfe: 0x0080, 0x1dff: 0x0080, - // Block 0x78, offset 0x1e00 - 0x1e00: 0x0080, 0x1e01: 0x0080, 0x1e02: 0x0080, 0x1e03: 0x0080, 0x1e04: 0x0080, 0x1e05: 0x0080, - 0x1e06: 0x0080, 0x1e07: 0x0080, 0x1e08: 0x0080, 0x1e0a: 0x0080, 0x1e0b: 0x0080, - 0x1e0c: 0x0080, 0x1e0d: 0x0080, 0x1e0e: 0x0080, 0x1e0f: 0x0080, 0x1e10: 0x0080, 0x1e11: 0x0080, - 0x1e12: 0x0080, - 0x1e2c: 0x0080, 0x1e2d: 0x0080, 0x1e2e: 0x0080, 0x1e2f: 0x0080, - // Block 0x79, offset 0x1e40 - 0x1e40: 0x00c0, 0x1e41: 0x00c0, 0x1e42: 0x00c0, 0x1e43: 0x00c0, 0x1e44: 0x00c0, 0x1e45: 0x00c0, - 0x1e46: 0x00c0, 0x1e47: 0x00c0, 0x1e48: 0x00c0, 0x1e49: 0x00c0, 0x1e4a: 0x00c0, 0x1e4b: 0x00c0, - 0x1e4c: 0x00c0, 0x1e4d: 0x00c0, 0x1e4e: 0x00c0, 0x1e4f: 0x00c0, 0x1e50: 0x00c0, 0x1e51: 0x00c0, - 0x1e52: 0x00c0, 0x1e53: 0x00c0, 0x1e54: 0x00c0, 0x1e55: 0x00c0, 0x1e56: 0x00c0, 0x1e57: 0x00c0, - 0x1e58: 0x00c0, 0x1e59: 0x00c0, 0x1e5a: 0x00c0, 0x1e5b: 0x00c0, 0x1e5c: 0x00c0, 0x1e5d: 0x00c0, - 0x1e5e: 0x00c0, 0x1e5f: 0x00c0, 0x1e60: 0x00c0, 0x1e61: 0x00c0, 0x1e62: 0x00c0, 0x1e63: 0x00c0, - 0x1e64: 0x00c0, 0x1e65: 0x00c0, 0x1e66: 0x00c0, 0x1e67: 0x00c0, 0x1e68: 0x00c0, 0x1e69: 0x00c0, - 0x1e6a: 0x00c0, 0x1e6b: 0x00c0, 0x1e6c: 0x00c0, 0x1e6d: 0x00c0, 0x1e6e: 0x00c0, - 0x1e70: 0x00c0, 0x1e71: 0x00c0, 0x1e72: 0x00c0, 0x1e73: 0x00c0, 0x1e74: 0x00c0, 0x1e75: 0x00c0, - 0x1e76: 0x00c0, 0x1e77: 0x00c0, 0x1e78: 0x00c0, 0x1e79: 0x00c0, 0x1e7a: 0x00c0, 0x1e7b: 0x00c0, - 0x1e7c: 0x00c0, 0x1e7d: 0x00c0, 0x1e7e: 0x00c0, 0x1e7f: 0x00c0, - // Block 0x7a, offset 0x1e80 - 0x1e80: 0x00c0, 0x1e81: 0x00c0, 0x1e82: 0x00c0, 0x1e83: 0x00c0, 0x1e84: 0x00c0, 0x1e85: 0x00c0, - 0x1e86: 0x00c0, 0x1e87: 0x00c0, 0x1e88: 0x00c0, 0x1e89: 0x00c0, 0x1e8a: 0x00c0, 0x1e8b: 0x00c0, - 0x1e8c: 0x00c0, 0x1e8d: 0x00c0, 0x1e8e: 0x00c0, 0x1e8f: 0x00c0, 0x1e90: 0x00c0, 0x1e91: 0x00c0, - 0x1e92: 0x00c0, 0x1e93: 0x00c0, 0x1e94: 0x00c0, 0x1e95: 0x00c0, 0x1e96: 0x00c0, 0x1e97: 0x00c0, - 0x1e98: 0x00c0, 0x1e99: 0x00c0, 0x1e9a: 0x00c0, 0x1e9b: 0x00c0, 0x1e9c: 0x00c0, 0x1e9d: 0x00c0, - 0x1e9e: 0x00c0, 0x1ea0: 0x00c0, 0x1ea1: 0x00c0, 0x1ea2: 0x00c0, 0x1ea3: 0x00c0, - 0x1ea4: 0x00c0, 0x1ea5: 0x00c0, 0x1ea6: 0x00c0, 0x1ea7: 0x00c0, 0x1ea8: 0x00c0, 0x1ea9: 0x00c0, - 0x1eaa: 0x00c0, 0x1eab: 0x00c0, 0x1eac: 0x00c0, 0x1ead: 0x00c0, 0x1eae: 0x00c0, 0x1eaf: 0x00c0, - 0x1eb0: 0x00c0, 0x1eb1: 0x00c0, 0x1eb2: 0x00c0, 0x1eb3: 0x00c0, 0x1eb4: 0x00c0, 0x1eb5: 0x00c0, - 0x1eb6: 0x00c0, 0x1eb7: 0x00c0, 0x1eb8: 0x00c0, 0x1eb9: 0x00c0, 0x1eba: 0x00c0, 0x1ebb: 0x00c0, - 0x1ebc: 0x0080, 0x1ebd: 0x0080, 0x1ebe: 0x00c0, 0x1ebf: 0x00c0, - // Block 0x7b, offset 0x1ec0 - 0x1ec0: 0x00c0, 0x1ec1: 0x00c0, 0x1ec2: 0x00c0, 0x1ec3: 0x00c0, 0x1ec4: 0x00c0, 0x1ec5: 0x00c0, - 0x1ec6: 0x00c0, 0x1ec7: 0x00c0, 0x1ec8: 0x00c0, 0x1ec9: 0x00c0, 0x1eca: 0x00c0, 0x1ecb: 0x00c0, - 0x1ecc: 0x00c0, 0x1ecd: 0x00c0, 0x1ece: 0x00c0, 0x1ecf: 0x00c0, 0x1ed0: 0x00c0, 0x1ed1: 0x00c0, - 0x1ed2: 0x00c0, 0x1ed3: 0x00c0, 0x1ed4: 0x00c0, 0x1ed5: 0x00c0, 0x1ed6: 0x00c0, 0x1ed7: 0x00c0, - 0x1ed8: 0x00c0, 0x1ed9: 0x00c0, 0x1eda: 0x00c0, 0x1edb: 0x00c0, 0x1edc: 0x00c0, 0x1edd: 0x00c0, - 0x1ede: 0x00c0, 0x1edf: 0x00c0, 0x1ee0: 0x00c0, 0x1ee1: 0x00c0, 0x1ee2: 0x00c0, 0x1ee3: 0x00c0, - 0x1ee4: 0x00c0, 0x1ee5: 0x0080, 0x1ee6: 0x0080, 0x1ee7: 0x0080, 0x1ee8: 0x0080, 0x1ee9: 0x0080, - 0x1eea: 0x0080, 0x1eeb: 0x00c0, 0x1eec: 0x00c0, 0x1eed: 0x00c0, 0x1eee: 0x00c0, 0x1eef: 0x00c3, - 0x1ef0: 0x00c3, 0x1ef1: 0x00c3, 0x1ef2: 0x00c0, 0x1ef3: 0x00c0, - 0x1ef9: 0x0080, 0x1efa: 0x0080, 0x1efb: 0x0080, - 0x1efc: 0x0080, 0x1efd: 0x0080, 0x1efe: 0x0080, 0x1eff: 0x0080, - // Block 0x7c, offset 0x1f00 - 0x1f00: 0x00c0, 0x1f01: 0x00c0, 0x1f02: 0x00c0, 0x1f03: 0x00c0, 0x1f04: 0x00c0, 0x1f05: 0x00c0, - 0x1f06: 0x00c0, 0x1f07: 0x00c0, 0x1f08: 0x00c0, 0x1f09: 0x00c0, 0x1f0a: 0x00c0, 0x1f0b: 0x00c0, - 0x1f0c: 0x00c0, 0x1f0d: 0x00c0, 0x1f0e: 0x00c0, 0x1f0f: 0x00c0, 0x1f10: 0x00c0, 0x1f11: 0x00c0, - 0x1f12: 0x00c0, 0x1f13: 0x00c0, 0x1f14: 0x00c0, 0x1f15: 0x00c0, 0x1f16: 0x00c0, 0x1f17: 0x00c0, - 0x1f18: 0x00c0, 0x1f19: 0x00c0, 0x1f1a: 0x00c0, 0x1f1b: 0x00c0, 0x1f1c: 0x00c0, 0x1f1d: 0x00c0, - 0x1f1e: 0x00c0, 0x1f1f: 0x00c0, 0x1f20: 0x00c0, 0x1f21: 0x00c0, 0x1f22: 0x00c0, 0x1f23: 0x00c0, - 0x1f24: 0x00c0, 0x1f25: 0x00c0, 0x1f27: 0x00c0, - 0x1f2d: 0x00c0, - 0x1f30: 0x00c0, 0x1f31: 0x00c0, 0x1f32: 0x00c0, 0x1f33: 0x00c0, 0x1f34: 0x00c0, 0x1f35: 0x00c0, - 0x1f36: 0x00c0, 0x1f37: 0x00c0, 0x1f38: 0x00c0, 0x1f39: 0x00c0, 0x1f3a: 0x00c0, 0x1f3b: 0x00c0, - 0x1f3c: 0x00c0, 0x1f3d: 0x00c0, 0x1f3e: 0x00c0, 0x1f3f: 0x00c0, - // Block 0x7d, offset 0x1f40 - 0x1f40: 0x00c0, 0x1f41: 0x00c0, 0x1f42: 0x00c0, 0x1f43: 0x00c0, 0x1f44: 0x00c0, 0x1f45: 0x00c0, - 0x1f46: 0x00c0, 0x1f47: 0x00c0, 0x1f48: 0x00c0, 0x1f49: 0x00c0, 0x1f4a: 0x00c0, 0x1f4b: 0x00c0, - 0x1f4c: 0x00c0, 0x1f4d: 0x00c0, 0x1f4e: 0x00c0, 0x1f4f: 0x00c0, 0x1f50: 0x00c0, 0x1f51: 0x00c0, - 0x1f52: 0x00c0, 0x1f53: 0x00c0, 0x1f54: 0x00c0, 0x1f55: 0x00c0, 0x1f56: 0x00c0, 0x1f57: 0x00c0, - 0x1f58: 0x00c0, 0x1f59: 0x00c0, 0x1f5a: 0x00c0, 0x1f5b: 0x00c0, 0x1f5c: 0x00c0, 0x1f5d: 0x00c0, - 0x1f5e: 0x00c0, 0x1f5f: 0x00c0, 0x1f60: 0x00c0, 0x1f61: 0x00c0, 0x1f62: 0x00c0, 0x1f63: 0x00c0, - 0x1f64: 0x00c0, 0x1f65: 0x00c0, 0x1f66: 0x00c0, 0x1f67: 0x00c0, - 0x1f6f: 0x0080, - 0x1f70: 0x0080, - 0x1f7f: 0x00c6, - // Block 0x7e, offset 0x1f80 - 0x1f80: 0x00c0, 0x1f81: 0x00c0, 0x1f82: 0x00c0, 0x1f83: 0x00c0, 0x1f84: 0x00c0, 0x1f85: 0x00c0, - 0x1f86: 0x00c0, 0x1f87: 0x00c0, 0x1f88: 0x00c0, 0x1f89: 0x00c0, 0x1f8a: 0x00c0, 0x1f8b: 0x00c0, - 0x1f8c: 0x00c0, 0x1f8d: 0x00c0, 0x1f8e: 0x00c0, 0x1f8f: 0x00c0, 0x1f90: 0x00c0, 0x1f91: 0x00c0, - 0x1f92: 0x00c0, 0x1f93: 0x00c0, 0x1f94: 0x00c0, 0x1f95: 0x00c0, 0x1f96: 0x00c0, - 0x1fa0: 0x00c0, 0x1fa1: 0x00c0, 0x1fa2: 0x00c0, 0x1fa3: 0x00c0, - 0x1fa4: 0x00c0, 0x1fa5: 0x00c0, 0x1fa6: 0x00c0, 0x1fa8: 0x00c0, 0x1fa9: 0x00c0, - 0x1faa: 0x00c0, 0x1fab: 0x00c0, 0x1fac: 0x00c0, 0x1fad: 0x00c0, 0x1fae: 0x00c0, - 0x1fb0: 0x00c0, 0x1fb1: 0x00c0, 0x1fb2: 0x00c0, 0x1fb3: 0x00c0, 0x1fb4: 0x00c0, 0x1fb5: 0x00c0, - 0x1fb6: 0x00c0, 0x1fb8: 0x00c0, 0x1fb9: 0x00c0, 0x1fba: 0x00c0, 0x1fbb: 0x00c0, - 0x1fbc: 0x00c0, 0x1fbd: 0x00c0, 0x1fbe: 0x00c0, - // Block 0x7f, offset 0x1fc0 - 0x1fc0: 0x00c0, 0x1fc1: 0x00c0, 0x1fc2: 0x00c0, 0x1fc3: 0x00c0, 0x1fc4: 0x00c0, 0x1fc5: 0x00c0, - 0x1fc6: 0x00c0, 0x1fc8: 0x00c0, 0x1fc9: 0x00c0, 0x1fca: 0x00c0, 0x1fcb: 0x00c0, - 0x1fcc: 0x00c0, 0x1fcd: 0x00c0, 0x1fce: 0x00c0, 0x1fd0: 0x00c0, 0x1fd1: 0x00c0, - 0x1fd2: 0x00c0, 0x1fd3: 0x00c0, 0x1fd4: 0x00c0, 0x1fd5: 0x00c0, 0x1fd6: 0x00c0, - 0x1fd8: 0x00c0, 0x1fd9: 0x00c0, 0x1fda: 0x00c0, 0x1fdb: 0x00c0, 0x1fdc: 0x00c0, 0x1fdd: 0x00c0, - 0x1fde: 0x00c0, 0x1fe0: 0x00c3, 0x1fe1: 0x00c3, 0x1fe2: 0x00c3, 0x1fe3: 0x00c3, - 0x1fe4: 0x00c3, 0x1fe5: 0x00c3, 0x1fe6: 0x00c3, 0x1fe7: 0x00c3, 0x1fe8: 0x00c3, 0x1fe9: 0x00c3, - 0x1fea: 0x00c3, 0x1feb: 0x00c3, 0x1fec: 0x00c3, 0x1fed: 0x00c3, 0x1fee: 0x00c3, 0x1fef: 0x00c3, - 0x1ff0: 0x00c3, 0x1ff1: 0x00c3, 0x1ff2: 0x00c3, 0x1ff3: 0x00c3, 0x1ff4: 0x00c3, 0x1ff5: 0x00c3, - 0x1ff6: 0x00c3, 0x1ff7: 0x00c3, 0x1ff8: 0x00c3, 0x1ff9: 0x00c3, 0x1ffa: 0x00c3, 0x1ffb: 0x00c3, - 0x1ffc: 0x00c3, 0x1ffd: 0x00c3, 0x1ffe: 0x00c3, 0x1fff: 0x00c3, - // Block 0x80, offset 0x2000 - 0x2000: 0x0080, 0x2001: 0x0080, 0x2002: 0x0080, 0x2003: 0x0080, 0x2004: 0x0080, 0x2005: 0x0080, - 0x2006: 0x0080, 0x2007: 0x0080, 0x2008: 0x0080, 0x2009: 0x0080, 0x200a: 0x0080, 0x200b: 0x0080, - 0x200c: 0x0080, 0x200d: 0x0080, 0x200e: 0x0080, 0x200f: 0x0080, 0x2010: 0x0080, 0x2011: 0x0080, - 0x2012: 0x0080, 0x2013: 0x0080, 0x2014: 0x0080, 0x2015: 0x0080, 0x2016: 0x0080, 0x2017: 0x0080, - 0x2018: 0x0080, 0x2019: 0x0080, 0x201a: 0x0080, 0x201b: 0x0080, 0x201c: 0x0080, 0x201d: 0x0080, - 0x201e: 0x0080, 0x201f: 0x0080, 0x2020: 0x0080, 0x2021: 0x0080, 0x2022: 0x0080, 0x2023: 0x0080, - 0x2024: 0x0080, 0x2025: 0x0080, 0x2026: 0x0080, 0x2027: 0x0080, 0x2028: 0x0080, 0x2029: 0x0080, - 0x202a: 0x0080, 0x202b: 0x0080, 0x202c: 0x0080, 0x202d: 0x0080, 0x202e: 0x0080, 0x202f: 0x00c0, - 0x2030: 0x0080, 0x2031: 0x0080, 0x2032: 0x0080, 0x2033: 0x0080, 0x2034: 0x0080, 0x2035: 0x0080, - 0x2036: 0x0080, 0x2037: 0x0080, 0x2038: 0x0080, 0x2039: 0x0080, 0x203a: 0x0080, 0x203b: 0x0080, - 0x203c: 0x0080, 0x203d: 0x0080, 0x203e: 0x0080, 0x203f: 0x0080, - // Block 0x81, offset 0x2040 - 0x2040: 0x0080, 0x2041: 0x0080, 0x2042: 0x0080, 0x2043: 0x0080, 0x2044: 0x0080, 0x2045: 0x0080, - 0x2046: 0x0080, 0x2047: 0x0080, 0x2048: 0x0080, 0x2049: 0x0080, - // Block 0x82, offset 0x2080 - 0x2080: 0x008c, 0x2081: 0x008c, 0x2082: 0x008c, 0x2083: 0x008c, 0x2084: 0x008c, 0x2085: 0x008c, - 0x2086: 0x008c, 0x2087: 0x008c, 0x2088: 0x008c, 0x2089: 0x008c, 0x208a: 0x008c, 0x208b: 0x008c, - 0x208c: 0x008c, 0x208d: 0x008c, 0x208e: 0x008c, 0x208f: 0x008c, 0x2090: 0x008c, 0x2091: 0x008c, - 0x2092: 0x008c, 0x2093: 0x008c, 0x2094: 0x008c, 0x2095: 0x008c, 0x2096: 0x008c, 0x2097: 0x008c, - 0x2098: 0x008c, 0x2099: 0x008c, 0x209b: 0x008c, 0x209c: 0x008c, 0x209d: 0x008c, - 0x209e: 0x008c, 0x209f: 0x008c, 0x20a0: 0x008c, 0x20a1: 0x008c, 0x20a2: 0x008c, 0x20a3: 0x008c, - 0x20a4: 0x008c, 0x20a5: 0x008c, 0x20a6: 0x008c, 0x20a7: 0x008c, 0x20a8: 0x008c, 0x20a9: 0x008c, - 0x20aa: 0x008c, 0x20ab: 0x008c, 0x20ac: 0x008c, 0x20ad: 0x008c, 0x20ae: 0x008c, 0x20af: 0x008c, - 0x20b0: 0x008c, 0x20b1: 0x008c, 0x20b2: 0x008c, 0x20b3: 0x008c, 0x20b4: 0x008c, 0x20b5: 0x008c, - 0x20b6: 0x008c, 0x20b7: 0x008c, 0x20b8: 0x008c, 0x20b9: 0x008c, 0x20ba: 0x008c, 0x20bb: 0x008c, - 0x20bc: 0x008c, 0x20bd: 0x008c, 0x20be: 0x008c, 0x20bf: 0x008c, - // Block 0x83, offset 0x20c0 - 0x20c0: 0x008c, 0x20c1: 0x008c, 0x20c2: 0x008c, 0x20c3: 0x008c, 0x20c4: 0x008c, 0x20c5: 0x008c, - 0x20c6: 0x008c, 0x20c7: 0x008c, 0x20c8: 0x008c, 0x20c9: 0x008c, 0x20ca: 0x008c, 0x20cb: 0x008c, - 0x20cc: 0x008c, 0x20cd: 0x008c, 0x20ce: 0x008c, 0x20cf: 0x008c, 0x20d0: 0x008c, 0x20d1: 0x008c, - 0x20d2: 0x008c, 0x20d3: 0x008c, 0x20d4: 0x008c, 0x20d5: 0x008c, 0x20d6: 0x008c, 0x20d7: 0x008c, - 0x20d8: 0x008c, 0x20d9: 0x008c, 0x20da: 0x008c, 0x20db: 0x008c, 0x20dc: 0x008c, 0x20dd: 0x008c, - 0x20de: 0x008c, 0x20df: 0x008c, 0x20e0: 0x008c, 0x20e1: 0x008c, 0x20e2: 0x008c, 0x20e3: 0x008c, - 0x20e4: 0x008c, 0x20e5: 0x008c, 0x20e6: 0x008c, 0x20e7: 0x008c, 0x20e8: 0x008c, 0x20e9: 0x008c, - 0x20ea: 0x008c, 0x20eb: 0x008c, 0x20ec: 0x008c, 0x20ed: 0x008c, 0x20ee: 0x008c, 0x20ef: 0x008c, - 0x20f0: 0x008c, 0x20f1: 0x008c, 0x20f2: 0x008c, 0x20f3: 0x008c, - // Block 0x84, offset 0x2100 - 0x2100: 0x008c, 0x2101: 0x008c, 0x2102: 0x008c, 0x2103: 0x008c, 0x2104: 0x008c, 0x2105: 0x008c, - 0x2106: 0x008c, 0x2107: 0x008c, 0x2108: 0x008c, 0x2109: 0x008c, 0x210a: 0x008c, 0x210b: 0x008c, - 0x210c: 0x008c, 0x210d: 0x008c, 0x210e: 0x008c, 0x210f: 0x008c, 0x2110: 0x008c, 0x2111: 0x008c, - 0x2112: 0x008c, 0x2113: 0x008c, 0x2114: 0x008c, 0x2115: 0x008c, 0x2116: 0x008c, 0x2117: 0x008c, - 0x2118: 0x008c, 0x2119: 0x008c, 0x211a: 0x008c, 0x211b: 0x008c, 0x211c: 0x008c, 0x211d: 0x008c, - 0x211e: 0x008c, 0x211f: 0x008c, 0x2120: 0x008c, 0x2121: 0x008c, 0x2122: 0x008c, 0x2123: 0x008c, - 0x2124: 0x008c, 0x2125: 0x008c, 0x2126: 0x008c, 0x2127: 0x008c, 0x2128: 0x008c, 0x2129: 0x008c, - 0x212a: 0x008c, 0x212b: 0x008c, 0x212c: 0x008c, 0x212d: 0x008c, 0x212e: 0x008c, 0x212f: 0x008c, - 0x2130: 0x008c, 0x2131: 0x008c, 0x2132: 0x008c, 0x2133: 0x008c, 0x2134: 0x008c, 0x2135: 0x008c, - 0x2136: 0x008c, 0x2137: 0x008c, 0x2138: 0x008c, 0x2139: 0x008c, 0x213a: 0x008c, 0x213b: 0x008c, - 0x213c: 0x008c, 0x213d: 0x008c, 0x213e: 0x008c, 0x213f: 0x008c, - // Block 0x85, offset 0x2140 - 0x2140: 0x008c, 0x2141: 0x008c, 0x2142: 0x008c, 0x2143: 0x008c, 0x2144: 0x008c, 0x2145: 0x008c, - 0x2146: 0x008c, 0x2147: 0x008c, 0x2148: 0x008c, 0x2149: 0x008c, 0x214a: 0x008c, 0x214b: 0x008c, - 0x214c: 0x008c, 0x214d: 0x008c, 0x214e: 0x008c, 0x214f: 0x008c, 0x2150: 0x008c, 0x2151: 0x008c, - 0x2152: 0x008c, 0x2153: 0x008c, 0x2154: 0x008c, 0x2155: 0x008c, - 0x2170: 0x0080, 0x2171: 0x0080, 0x2172: 0x0080, 0x2173: 0x0080, 0x2174: 0x0080, 0x2175: 0x0080, - 0x2176: 0x0080, 0x2177: 0x0080, 0x2178: 0x0080, 0x2179: 0x0080, 0x217a: 0x0080, 0x217b: 0x0080, - // Block 0x86, offset 0x2180 - 0x2180: 0x0080, 0x2181: 0x0080, 0x2182: 0x0080, 0x2183: 0x0080, 0x2184: 0x0080, 0x2185: 0x00cc, - 0x2186: 0x00c0, 0x2187: 0x00cc, 0x2188: 0x0080, 0x2189: 0x0080, 0x218a: 0x0080, 0x218b: 0x0080, - 0x218c: 0x0080, 0x218d: 0x0080, 0x218e: 0x0080, 0x218f: 0x0080, 0x2190: 0x0080, 0x2191: 0x0080, - 0x2192: 0x0080, 0x2193: 0x0080, 0x2194: 0x0080, 0x2195: 0x0080, 0x2196: 0x0080, 0x2197: 0x0080, - 0x2198: 0x0080, 0x2199: 0x0080, 0x219a: 0x0080, 0x219b: 0x0080, 0x219c: 0x0080, 0x219d: 0x0080, - 0x219e: 0x0080, 0x219f: 0x0080, 0x21a0: 0x0080, 0x21a1: 0x008c, 0x21a2: 0x008c, 0x21a3: 0x008c, - 0x21a4: 0x008c, 0x21a5: 0x008c, 0x21a6: 0x008c, 0x21a7: 0x008c, 0x21a8: 0x008c, 0x21a9: 0x008c, - 0x21aa: 0x00c3, 0x21ab: 0x00c3, 0x21ac: 0x00c3, 0x21ad: 0x00c3, 0x21ae: 0x0040, 0x21af: 0x0040, - 0x21b0: 0x0080, 0x21b1: 0x0040, 0x21b2: 0x0040, 0x21b3: 0x0040, 0x21b4: 0x0040, 0x21b5: 0x0040, - 0x21b6: 0x0080, 0x21b7: 0x0080, 0x21b8: 0x008c, 0x21b9: 0x008c, 0x21ba: 0x008c, 0x21bb: 0x0040, - 0x21bc: 0x00c0, 0x21bd: 0x0080, 0x21be: 0x0080, 0x21bf: 0x0080, - // Block 0x87, offset 0x21c0 - 0x21c1: 0x00cc, 0x21c2: 0x00cc, 0x21c3: 0x00cc, 0x21c4: 0x00cc, 0x21c5: 0x00cc, - 0x21c6: 0x00cc, 0x21c7: 0x00cc, 0x21c8: 0x00cc, 0x21c9: 0x00cc, 0x21ca: 0x00cc, 0x21cb: 0x00cc, - 0x21cc: 0x00cc, 0x21cd: 0x00cc, 0x21ce: 0x00cc, 0x21cf: 0x00cc, 0x21d0: 0x00cc, 0x21d1: 0x00cc, - 0x21d2: 0x00cc, 0x21d3: 0x00cc, 0x21d4: 0x00cc, 0x21d5: 0x00cc, 0x21d6: 0x00cc, 0x21d7: 0x00cc, - 0x21d8: 0x00cc, 0x21d9: 0x00cc, 0x21da: 0x00cc, 0x21db: 0x00cc, 0x21dc: 0x00cc, 0x21dd: 0x00cc, - 0x21de: 0x00cc, 0x21df: 0x00cc, 0x21e0: 0x00cc, 0x21e1: 0x00cc, 0x21e2: 0x00cc, 0x21e3: 0x00cc, - 0x21e4: 0x00cc, 0x21e5: 0x00cc, 0x21e6: 0x00cc, 0x21e7: 0x00cc, 0x21e8: 0x00cc, 0x21e9: 0x00cc, - 0x21ea: 0x00cc, 0x21eb: 0x00cc, 0x21ec: 0x00cc, 0x21ed: 0x00cc, 0x21ee: 0x00cc, 0x21ef: 0x00cc, - 0x21f0: 0x00cc, 0x21f1: 0x00cc, 0x21f2: 0x00cc, 0x21f3: 0x00cc, 0x21f4: 0x00cc, 0x21f5: 0x00cc, - 0x21f6: 0x00cc, 0x21f7: 0x00cc, 0x21f8: 0x00cc, 0x21f9: 0x00cc, 0x21fa: 0x00cc, 0x21fb: 0x00cc, - 0x21fc: 0x00cc, 0x21fd: 0x00cc, 0x21fe: 0x00cc, 0x21ff: 0x00cc, - // Block 0x88, offset 0x2200 - 0x2200: 0x00cc, 0x2201: 0x00cc, 0x2202: 0x00cc, 0x2203: 0x00cc, 0x2204: 0x00cc, 0x2205: 0x00cc, - 0x2206: 0x00cc, 0x2207: 0x00cc, 0x2208: 0x00cc, 0x2209: 0x00cc, 0x220a: 0x00cc, 0x220b: 0x00cc, - 0x220c: 0x00cc, 0x220d: 0x00cc, 0x220e: 0x00cc, 0x220f: 0x00cc, 0x2210: 0x00cc, 0x2211: 0x00cc, - 0x2212: 0x00cc, 0x2213: 0x00cc, 0x2214: 0x00cc, 0x2215: 0x00cc, 0x2216: 0x00cc, - 0x2219: 0x00c3, 0x221a: 0x00c3, 0x221b: 0x0080, 0x221c: 0x0080, 0x221d: 0x00cc, - 0x221e: 0x00cc, 0x221f: 0x008c, 0x2220: 0x0080, 0x2221: 0x00cc, 0x2222: 0x00cc, 0x2223: 0x00cc, - 0x2224: 0x00cc, 0x2225: 0x00cc, 0x2226: 0x00cc, 0x2227: 0x00cc, 0x2228: 0x00cc, 0x2229: 0x00cc, - 0x222a: 0x00cc, 0x222b: 0x00cc, 0x222c: 0x00cc, 0x222d: 0x00cc, 0x222e: 0x00cc, 0x222f: 0x00cc, - 0x2230: 0x00cc, 0x2231: 0x00cc, 0x2232: 0x00cc, 0x2233: 0x00cc, 0x2234: 0x00cc, 0x2235: 0x00cc, - 0x2236: 0x00cc, 0x2237: 0x00cc, 0x2238: 0x00cc, 0x2239: 0x00cc, 0x223a: 0x00cc, 0x223b: 0x00cc, - 0x223c: 0x00cc, 0x223d: 0x00cc, 0x223e: 0x00cc, 0x223f: 0x00cc, - // Block 0x89, offset 0x2240 - 0x2240: 0x00cc, 0x2241: 0x00cc, 0x2242: 0x00cc, 0x2243: 0x00cc, 0x2244: 0x00cc, 0x2245: 0x00cc, - 0x2246: 0x00cc, 0x2247: 0x00cc, 0x2248: 0x00cc, 0x2249: 0x00cc, 0x224a: 0x00cc, 0x224b: 0x00cc, - 0x224c: 0x00cc, 0x224d: 0x00cc, 0x224e: 0x00cc, 0x224f: 0x00cc, 0x2250: 0x00cc, 0x2251: 0x00cc, - 0x2252: 0x00cc, 0x2253: 0x00cc, 0x2254: 0x00cc, 0x2255: 0x00cc, 0x2256: 0x00cc, 0x2257: 0x00cc, - 0x2258: 0x00cc, 0x2259: 0x00cc, 0x225a: 0x00cc, 0x225b: 0x00cc, 0x225c: 0x00cc, 0x225d: 0x00cc, - 0x225e: 0x00cc, 0x225f: 0x00cc, 0x2260: 0x00cc, 0x2261: 0x00cc, 0x2262: 0x00cc, 0x2263: 0x00cc, - 0x2264: 0x00cc, 0x2265: 0x00cc, 0x2266: 0x00cc, 0x2267: 0x00cc, 0x2268: 0x00cc, 0x2269: 0x00cc, - 0x226a: 0x00cc, 0x226b: 0x00cc, 0x226c: 0x00cc, 0x226d: 0x00cc, 0x226e: 0x00cc, 0x226f: 0x00cc, - 0x2270: 0x00cc, 0x2271: 0x00cc, 0x2272: 0x00cc, 0x2273: 0x00cc, 0x2274: 0x00cc, 0x2275: 0x00cc, - 0x2276: 0x00cc, 0x2277: 0x00cc, 0x2278: 0x00cc, 0x2279: 0x00cc, 0x227a: 0x00cc, 0x227b: 0x00d2, - 0x227c: 0x00c0, 0x227d: 0x00cc, 0x227e: 0x00cc, 0x227f: 0x008c, - // Block 0x8a, offset 0x2280 - 0x2285: 0x00c0, - 0x2286: 0x00c0, 0x2287: 0x00c0, 0x2288: 0x00c0, 0x2289: 0x00c0, 0x228a: 0x00c0, 0x228b: 0x00c0, - 0x228c: 0x00c0, 0x228d: 0x00c0, 0x228e: 0x00c0, 0x228f: 0x00c0, 0x2290: 0x00c0, 0x2291: 0x00c0, - 0x2292: 0x00c0, 0x2293: 0x00c0, 0x2294: 0x00c0, 0x2295: 0x00c0, 0x2296: 0x00c0, 0x2297: 0x00c0, - 0x2298: 0x00c0, 0x2299: 0x00c0, 0x229a: 0x00c0, 0x229b: 0x00c0, 0x229c: 0x00c0, 0x229d: 0x00c0, - 0x229e: 0x00c0, 0x229f: 0x00c0, 0x22a0: 0x00c0, 0x22a1: 0x00c0, 0x22a2: 0x00c0, 0x22a3: 0x00c0, - 0x22a4: 0x00c0, 0x22a5: 0x00c0, 0x22a6: 0x00c0, 0x22a7: 0x00c0, 0x22a8: 0x00c0, 0x22a9: 0x00c0, - 0x22aa: 0x00c0, 0x22ab: 0x00c0, 0x22ac: 0x00c0, 0x22ad: 0x00c0, 0x22ae: 0x00c0, - 0x22b1: 0x0080, 0x22b2: 0x0080, 0x22b3: 0x0080, 0x22b4: 0x0080, 0x22b5: 0x0080, - 0x22b6: 0x0080, 0x22b7: 0x0080, 0x22b8: 0x0080, 0x22b9: 0x0080, 0x22ba: 0x0080, 0x22bb: 0x0080, - 0x22bc: 0x0080, 0x22bd: 0x0080, 0x22be: 0x0080, 0x22bf: 0x0080, - // Block 0x8b, offset 0x22c0 - 0x22c0: 0x0080, 0x22c1: 0x0080, 0x22c2: 0x0080, 0x22c3: 0x0080, 0x22c4: 0x0080, 0x22c5: 0x0080, - 0x22c6: 0x0080, 0x22c7: 0x0080, 0x22c8: 0x0080, 0x22c9: 0x0080, 0x22ca: 0x0080, 0x22cb: 0x0080, - 0x22cc: 0x0080, 0x22cd: 0x0080, 0x22ce: 0x0080, 0x22cf: 0x0080, 0x22d0: 0x0080, 0x22d1: 0x0080, - 0x22d2: 0x0080, 0x22d3: 0x0080, 0x22d4: 0x0080, 0x22d5: 0x0080, 0x22d6: 0x0080, 0x22d7: 0x0080, - 0x22d8: 0x0080, 0x22d9: 0x0080, 0x22da: 0x0080, 0x22db: 0x0080, 0x22dc: 0x0080, 0x22dd: 0x0080, - 0x22de: 0x0080, 0x22df: 0x0080, 0x22e0: 0x0080, 0x22e1: 0x0080, 0x22e2: 0x0080, 0x22e3: 0x0080, - 0x22e4: 0x0040, 0x22e5: 0x0080, 0x22e6: 0x0080, 0x22e7: 0x0080, 0x22e8: 0x0080, 0x22e9: 0x0080, - 0x22ea: 0x0080, 0x22eb: 0x0080, 0x22ec: 0x0080, 0x22ed: 0x0080, 0x22ee: 0x0080, 0x22ef: 0x0080, - 0x22f0: 0x0080, 0x22f1: 0x0080, 0x22f2: 0x0080, 0x22f3: 0x0080, 0x22f4: 0x0080, 0x22f5: 0x0080, - 0x22f6: 0x0080, 0x22f7: 0x0080, 0x22f8: 0x0080, 0x22f9: 0x0080, 0x22fa: 0x0080, 0x22fb: 0x0080, - 0x22fc: 0x0080, 0x22fd: 0x0080, 0x22fe: 0x0080, 0x22ff: 0x0080, - // Block 0x8c, offset 0x2300 - 0x2300: 0x0080, 0x2301: 0x0080, 0x2302: 0x0080, 0x2303: 0x0080, 0x2304: 0x0080, 0x2305: 0x0080, - 0x2306: 0x0080, 0x2307: 0x0080, 0x2308: 0x0080, 0x2309: 0x0080, 0x230a: 0x0080, 0x230b: 0x0080, - 0x230c: 0x0080, 0x230d: 0x0080, 0x230e: 0x0080, 0x2310: 0x0080, 0x2311: 0x0080, - 0x2312: 0x0080, 0x2313: 0x0080, 0x2314: 0x0080, 0x2315: 0x0080, 0x2316: 0x0080, 0x2317: 0x0080, - 0x2318: 0x0080, 0x2319: 0x0080, 0x231a: 0x0080, 0x231b: 0x0080, 0x231c: 0x0080, 0x231d: 0x0080, - 0x231e: 0x0080, 0x231f: 0x0080, 0x2320: 0x00c0, 0x2321: 0x00c0, 0x2322: 0x00c0, 0x2323: 0x00c0, - 0x2324: 0x00c0, 0x2325: 0x00c0, 0x2326: 0x00c0, 0x2327: 0x00c0, 0x2328: 0x00c0, 0x2329: 0x00c0, - 0x232a: 0x00c0, 0x232b: 0x00c0, 0x232c: 0x00c0, 0x232d: 0x00c0, 0x232e: 0x00c0, 0x232f: 0x00c0, - 0x2330: 0x00c0, 0x2331: 0x00c0, 0x2332: 0x00c0, 0x2333: 0x00c0, 0x2334: 0x00c0, 0x2335: 0x00c0, - 0x2336: 0x00c0, 0x2337: 0x00c0, 0x2338: 0x00c0, 0x2339: 0x00c0, 0x233a: 0x00c0, - // Block 0x8d, offset 0x2340 - 0x2340: 0x0080, 0x2341: 0x0080, 0x2342: 0x0080, 0x2343: 0x0080, 0x2344: 0x0080, 0x2345: 0x0080, - 0x2346: 0x0080, 0x2347: 0x0080, 0x2348: 0x0080, 0x2349: 0x0080, 0x234a: 0x0080, 0x234b: 0x0080, - 0x234c: 0x0080, 0x234d: 0x0080, 0x234e: 0x0080, 0x234f: 0x0080, 0x2350: 0x0080, 0x2351: 0x0080, - 0x2352: 0x0080, 0x2353: 0x0080, 0x2354: 0x0080, 0x2355: 0x0080, 0x2356: 0x0080, 0x2357: 0x0080, - 0x2358: 0x0080, 0x2359: 0x0080, 0x235a: 0x0080, 0x235b: 0x0080, 0x235c: 0x0080, 0x235d: 0x0080, - 0x235e: 0x0080, 0x235f: 0x0080, 0x2360: 0x0080, 0x2361: 0x0080, 0x2362: 0x0080, 0x2363: 0x0080, - 0x2370: 0x00cc, 0x2371: 0x00cc, 0x2372: 0x00cc, 0x2373: 0x00cc, 0x2374: 0x00cc, 0x2375: 0x00cc, - 0x2376: 0x00cc, 0x2377: 0x00cc, 0x2378: 0x00cc, 0x2379: 0x00cc, 0x237a: 0x00cc, 0x237b: 0x00cc, - 0x237c: 0x00cc, 0x237d: 0x00cc, 0x237e: 0x00cc, 0x237f: 0x00cc, - // Block 0x8e, offset 0x2380 - 0x2380: 0x0080, 0x2381: 0x0080, 0x2382: 0x0080, 0x2383: 0x0080, 0x2384: 0x0080, 0x2385: 0x0080, - 0x2386: 0x0080, 0x2387: 0x0080, 0x2388: 0x0080, 0x2389: 0x0080, 0x238a: 0x0080, 0x238b: 0x0080, - 0x238c: 0x0080, 0x238d: 0x0080, 0x238e: 0x0080, 0x238f: 0x0080, 0x2390: 0x0080, 0x2391: 0x0080, - 0x2392: 0x0080, 0x2393: 0x0080, 0x2394: 0x0080, 0x2395: 0x0080, 0x2396: 0x0080, 0x2397: 0x0080, - 0x2398: 0x0080, 0x2399: 0x0080, 0x239a: 0x0080, 0x239b: 0x0080, 0x239c: 0x0080, 0x239d: 0x0080, - 0x239e: 0x0080, 0x23a0: 0x0080, 0x23a1: 0x0080, 0x23a2: 0x0080, 0x23a3: 0x0080, - 0x23a4: 0x0080, 0x23a5: 0x0080, 0x23a6: 0x0080, 0x23a7: 0x0080, 0x23a8: 0x0080, 0x23a9: 0x0080, - 0x23aa: 0x0080, 0x23ab: 0x0080, 0x23ac: 0x0080, 0x23ad: 0x0080, 0x23ae: 0x0080, 0x23af: 0x0080, - 0x23b0: 0x0080, 0x23b1: 0x0080, 0x23b2: 0x0080, 0x23b3: 0x0080, 0x23b4: 0x0080, 0x23b5: 0x0080, - 0x23b6: 0x0080, 0x23b7: 0x0080, 0x23b8: 0x0080, 0x23b9: 0x0080, 0x23ba: 0x0080, 0x23bb: 0x0080, - 0x23bc: 0x0080, 0x23bd: 0x0080, 0x23be: 0x0080, 0x23bf: 0x0080, - // Block 0x8f, offset 0x23c0 - 0x23c0: 0x0080, 0x23c1: 0x0080, 0x23c2: 0x0080, 0x23c3: 0x0080, 0x23c4: 0x0080, 0x23c5: 0x0080, - 0x23c6: 0x0080, 0x23c7: 0x0080, 0x23c8: 0x0080, 0x23c9: 0x0080, 0x23ca: 0x0080, 0x23cb: 0x0080, - 0x23cc: 0x0080, 0x23cd: 0x0080, 0x23ce: 0x0080, 0x23cf: 0x0080, 0x23d0: 0x008c, 0x23d1: 0x008c, - 0x23d2: 0x008c, 0x23d3: 0x008c, 0x23d4: 0x008c, 0x23d5: 0x008c, 0x23d6: 0x008c, 0x23d7: 0x008c, - 0x23d8: 0x008c, 0x23d9: 0x008c, 0x23da: 0x008c, 0x23db: 0x008c, 0x23dc: 0x008c, 0x23dd: 0x008c, - 0x23de: 0x008c, 0x23df: 0x008c, 0x23e0: 0x008c, 0x23e1: 0x008c, 0x23e2: 0x008c, 0x23e3: 0x008c, - 0x23e4: 0x008c, 0x23e5: 0x008c, 0x23e6: 0x008c, 0x23e7: 0x008c, 0x23e8: 0x008c, 0x23e9: 0x008c, - 0x23ea: 0x008c, 0x23eb: 0x008c, 0x23ec: 0x008c, 0x23ed: 0x008c, 0x23ee: 0x008c, 0x23ef: 0x008c, - 0x23f0: 0x008c, 0x23f1: 0x008c, 0x23f2: 0x008c, 0x23f3: 0x008c, 0x23f4: 0x008c, 0x23f5: 0x008c, - 0x23f6: 0x008c, 0x23f7: 0x008c, 0x23f8: 0x008c, 0x23f9: 0x008c, 0x23fa: 0x008c, 0x23fb: 0x008c, - 0x23fc: 0x008c, 0x23fd: 0x008c, 0x23fe: 0x008c, - // Block 0x90, offset 0x2400 - 0x2400: 0x008c, 0x2401: 0x008c, 0x2402: 0x008c, 0x2403: 0x008c, 0x2404: 0x008c, 0x2405: 0x008c, - 0x2406: 0x008c, 0x2407: 0x008c, 0x2408: 0x008c, 0x2409: 0x008c, 0x240a: 0x008c, 0x240b: 0x008c, - 0x240c: 0x008c, 0x240d: 0x008c, 0x240e: 0x008c, 0x240f: 0x008c, 0x2410: 0x008c, 0x2411: 0x008c, - 0x2412: 0x008c, 0x2413: 0x008c, 0x2414: 0x008c, 0x2415: 0x008c, 0x2416: 0x008c, 0x2417: 0x008c, - 0x2418: 0x0080, 0x2419: 0x0080, 0x241a: 0x0080, 0x241b: 0x0080, 0x241c: 0x0080, 0x241d: 0x0080, - 0x241e: 0x0080, 0x241f: 0x0080, 0x2420: 0x0080, 0x2421: 0x0080, 0x2422: 0x0080, 0x2423: 0x0080, - 0x2424: 0x0080, 0x2425: 0x0080, 0x2426: 0x0080, 0x2427: 0x0080, 0x2428: 0x0080, 0x2429: 0x0080, - 0x242a: 0x0080, 0x242b: 0x0080, 0x242c: 0x0080, 0x242d: 0x0080, 0x242e: 0x0080, 0x242f: 0x0080, - 0x2430: 0x0080, 0x2431: 0x0080, 0x2432: 0x0080, 0x2433: 0x0080, 0x2434: 0x0080, 0x2435: 0x0080, - 0x2436: 0x0080, 0x2437: 0x0080, 0x2438: 0x0080, 0x2439: 0x0080, 0x243a: 0x0080, 0x243b: 0x0080, - 0x243c: 0x0080, 0x243d: 0x0080, 0x243e: 0x0080, 0x243f: 0x0080, - // Block 0x91, offset 0x2440 - 0x2440: 0x00cc, 0x2441: 0x00cc, 0x2442: 0x00cc, 0x2443: 0x00cc, 0x2444: 0x00cc, 0x2445: 0x00cc, - 0x2446: 0x00cc, 0x2447: 0x00cc, 0x2448: 0x00cc, 0x2449: 0x00cc, 0x244a: 0x00cc, 0x244b: 0x00cc, - 0x244c: 0x00cc, 0x244d: 0x00cc, 0x244e: 0x00cc, 0x244f: 0x00cc, 0x2450: 0x00cc, 0x2451: 0x00cc, - 0x2452: 0x00cc, 0x2453: 0x00cc, 0x2454: 0x00cc, 0x2455: 0x00cc, 0x2456: 0x00cc, 0x2457: 0x00cc, - 0x2458: 0x00cc, 0x2459: 0x00cc, 0x245a: 0x00cc, 0x245b: 0x00cc, 0x245c: 0x00cc, 0x245d: 0x00cc, - 0x245e: 0x00cc, 0x245f: 0x00cc, 0x2460: 0x00cc, 0x2461: 0x00cc, 0x2462: 0x00cc, 0x2463: 0x00cc, - 0x2464: 0x00cc, 0x2465: 0x00cc, 0x2466: 0x00cc, 0x2467: 0x00cc, 0x2468: 0x00cc, 0x2469: 0x00cc, - 0x246a: 0x00cc, 0x246b: 0x00cc, 0x246c: 0x00cc, 0x246d: 0x00cc, 0x246e: 0x00cc, 0x246f: 0x00cc, - 0x2470: 0x00cc, 0x2471: 0x00cc, 0x2472: 0x00cc, 0x2473: 0x00cc, 0x2474: 0x00cc, 0x2475: 0x00cc, - 0x2476: 0x00cc, 0x2477: 0x00cc, 0x2478: 0x00cc, 0x2479: 0x00cc, 0x247a: 0x00cc, 0x247b: 0x00cc, - 0x247c: 0x00cc, 0x247d: 0x00cc, 0x247e: 0x00cc, 0x247f: 0x00cc, - // Block 0x92, offset 0x2480 - 0x2480: 0x00cc, 0x2481: 0x00cc, 0x2482: 0x00cc, 0x2483: 0x00cc, 0x2484: 0x00cc, 0x2485: 0x00cc, - 0x2486: 0x00cc, 0x2487: 0x00cc, 0x2488: 0x00cc, 0x2489: 0x00cc, 0x248a: 0x00cc, 0x248b: 0x00cc, - 0x248c: 0x00cc, 0x248d: 0x00cc, 0x248e: 0x00cc, 0x248f: 0x00cc, 0x2490: 0x00cc, 0x2491: 0x00cc, - 0x2492: 0x00cc, 0x2493: 0x00cc, 0x2494: 0x00cc, 0x2495: 0x00cc, 0x2496: 0x00cc, 0x2497: 0x00cc, - 0x2498: 0x00cc, 0x2499: 0x00cc, 0x249a: 0x00cc, 0x249b: 0x00cc, 0x249c: 0x00cc, 0x249d: 0x00cc, - 0x249e: 0x00cc, 0x249f: 0x00cc, 0x24a0: 0x00cc, 0x24a1: 0x00cc, 0x24a2: 0x00cc, 0x24a3: 0x00cc, - 0x24a4: 0x00cc, 0x24a5: 0x00cc, 0x24a6: 0x00cc, 0x24a7: 0x00cc, 0x24a8: 0x00cc, 0x24a9: 0x00cc, - 0x24aa: 0x00cc, 0x24ab: 0x00cc, 0x24ac: 0x00cc, 0x24ad: 0x00cc, 0x24ae: 0x00cc, 0x24af: 0x00cc, - 0x24b0: 0x00cc, 0x24b1: 0x00cc, 0x24b2: 0x00cc, 0x24b3: 0x00cc, 0x24b4: 0x00cc, 0x24b5: 0x00cc, - // Block 0x93, offset 0x24c0 - 0x24c0: 0x00cc, 0x24c1: 0x00cc, 0x24c2: 0x00cc, 0x24c3: 0x00cc, 0x24c4: 0x00cc, 0x24c5: 0x00cc, - 0x24c6: 0x00cc, 0x24c7: 0x00cc, 0x24c8: 0x00cc, 0x24c9: 0x00cc, 0x24ca: 0x00cc, 0x24cb: 0x00cc, - 0x24cc: 0x00cc, 0x24cd: 0x00cc, 0x24ce: 0x00cc, 0x24cf: 0x00cc, 0x24d0: 0x00cc, 0x24d1: 0x00cc, - 0x24d2: 0x00cc, 0x24d3: 0x00cc, 0x24d4: 0x00cc, 0x24d5: 0x00cc, 0x24d6: 0x00cc, 0x24d7: 0x00cc, - 0x24d8: 0x00cc, 0x24d9: 0x00cc, 0x24da: 0x00cc, 0x24db: 0x00cc, 0x24dc: 0x00cc, 0x24dd: 0x00cc, - 0x24de: 0x00cc, 0x24df: 0x00cc, 0x24e0: 0x00cc, 0x24e1: 0x00cc, 0x24e2: 0x00cc, 0x24e3: 0x00cc, - 0x24e4: 0x00cc, 0x24e5: 0x00cc, 0x24e6: 0x00cc, 0x24e7: 0x00cc, 0x24e8: 0x00cc, 0x24e9: 0x00cc, - 0x24ea: 0x00cc, - // Block 0x94, offset 0x2500 - 0x2500: 0x00c0, 0x2501: 0x00c0, 0x2502: 0x00c0, 0x2503: 0x00c0, 0x2504: 0x00c0, 0x2505: 0x00c0, - 0x2506: 0x00c0, 0x2507: 0x00c0, 0x2508: 0x00c0, 0x2509: 0x00c0, 0x250a: 0x00c0, 0x250b: 0x00c0, - 0x250c: 0x00c0, 0x2510: 0x0080, 0x2511: 0x0080, - 0x2512: 0x0080, 0x2513: 0x0080, 0x2514: 0x0080, 0x2515: 0x0080, 0x2516: 0x0080, 0x2517: 0x0080, - 0x2518: 0x0080, 0x2519: 0x0080, 0x251a: 0x0080, 0x251b: 0x0080, 0x251c: 0x0080, 0x251d: 0x0080, - 0x251e: 0x0080, 0x251f: 0x0080, 0x2520: 0x0080, 0x2521: 0x0080, 0x2522: 0x0080, 0x2523: 0x0080, - 0x2524: 0x0080, 0x2525: 0x0080, 0x2526: 0x0080, 0x2527: 0x0080, 0x2528: 0x0080, 0x2529: 0x0080, - 0x252a: 0x0080, 0x252b: 0x0080, 0x252c: 0x0080, 0x252d: 0x0080, 0x252e: 0x0080, 0x252f: 0x0080, - 0x2530: 0x0080, 0x2531: 0x0080, 0x2532: 0x0080, 0x2533: 0x0080, 0x2534: 0x0080, 0x2535: 0x0080, - 0x2536: 0x0080, 0x2537: 0x0080, 0x2538: 0x0080, 0x2539: 0x0080, 0x253a: 0x0080, 0x253b: 0x0080, - 0x253c: 0x0080, 0x253d: 0x0080, 0x253e: 0x0080, 0x253f: 0x0080, - // Block 0x95, offset 0x2540 - 0x2540: 0x0080, 0x2541: 0x0080, 0x2542: 0x0080, 0x2543: 0x0080, 0x2544: 0x0080, 0x2545: 0x0080, - 0x2546: 0x0080, - 0x2550: 0x00c0, 0x2551: 0x00c0, - 0x2552: 0x00c0, 0x2553: 0x00c0, 0x2554: 0x00c0, 0x2555: 0x00c0, 0x2556: 0x00c0, 0x2557: 0x00c0, - 0x2558: 0x00c0, 0x2559: 0x00c0, 0x255a: 0x00c0, 0x255b: 0x00c0, 0x255c: 0x00c0, 0x255d: 0x00c0, - 0x255e: 0x00c0, 0x255f: 0x00c0, 0x2560: 0x00c0, 0x2561: 0x00c0, 0x2562: 0x00c0, 0x2563: 0x00c0, - 0x2564: 0x00c0, 0x2565: 0x00c0, 0x2566: 0x00c0, 0x2567: 0x00c0, 0x2568: 0x00c0, 0x2569: 0x00c0, - 0x256a: 0x00c0, 0x256b: 0x00c0, 0x256c: 0x00c0, 0x256d: 0x00c0, 0x256e: 0x00c0, 0x256f: 0x00c0, - 0x2570: 0x00c0, 0x2571: 0x00c0, 0x2572: 0x00c0, 0x2573: 0x00c0, 0x2574: 0x00c0, 0x2575: 0x00c0, - 0x2576: 0x00c0, 0x2577: 0x00c0, 0x2578: 0x00c0, 0x2579: 0x00c0, 0x257a: 0x00c0, 0x257b: 0x00c0, - 0x257c: 0x00c0, 0x257d: 0x00c0, 0x257e: 0x0080, 0x257f: 0x0080, - // Block 0x96, offset 0x2580 - 0x2580: 0x00c0, 0x2581: 0x00c0, 0x2582: 0x00c0, 0x2583: 0x00c0, 0x2584: 0x00c0, 0x2585: 0x00c0, - 0x2586: 0x00c0, 0x2587: 0x00c0, 0x2588: 0x00c0, 0x2589: 0x00c0, 0x258a: 0x00c0, 0x258b: 0x00c0, - 0x258c: 0x00c0, 0x258d: 0x0080, 0x258e: 0x0080, 0x258f: 0x0080, 0x2590: 0x00c0, 0x2591: 0x00c0, - 0x2592: 0x00c0, 0x2593: 0x00c0, 0x2594: 0x00c0, 0x2595: 0x00c0, 0x2596: 0x00c0, 0x2597: 0x00c0, - 0x2598: 0x00c0, 0x2599: 0x00c0, 0x259a: 0x00c0, 0x259b: 0x00c0, 0x259c: 0x00c0, 0x259d: 0x00c0, - 0x259e: 0x00c0, 0x259f: 0x00c0, 0x25a0: 0x00c0, 0x25a1: 0x00c0, 0x25a2: 0x00c0, 0x25a3: 0x00c0, - 0x25a4: 0x00c0, 0x25a5: 0x00c0, 0x25a6: 0x00c0, 0x25a7: 0x00c0, 0x25a8: 0x00c0, 0x25a9: 0x00c0, - 0x25aa: 0x00c0, 0x25ab: 0x00c0, - // Block 0x97, offset 0x25c0 - 0x25c0: 0x00c0, 0x25c1: 0x00c0, 0x25c2: 0x00c0, 0x25c3: 0x00c0, 0x25c4: 0x00c0, 0x25c5: 0x00c0, - 0x25c6: 0x00c0, 0x25c7: 0x00c0, 0x25c8: 0x00c0, 0x25c9: 0x00c0, 0x25ca: 0x00c0, 0x25cb: 0x00c0, - 0x25cc: 0x00c0, 0x25cd: 0x00c0, 0x25ce: 0x00c0, 0x25cf: 0x00c0, 0x25d0: 0x00c0, 0x25d1: 0x00c0, - 0x25d2: 0x00c0, 0x25d3: 0x00c0, 0x25d4: 0x00c0, 0x25d5: 0x00c0, 0x25d6: 0x00c0, 0x25d7: 0x00c0, - 0x25d8: 0x00c0, 0x25d9: 0x00c0, 0x25da: 0x00c0, 0x25db: 0x00c0, 0x25dc: 0x00c0, 0x25dd: 0x00c0, - 0x25de: 0x00c0, 0x25df: 0x00c0, 0x25e0: 0x00c0, 0x25e1: 0x00c0, 0x25e2: 0x00c0, 0x25e3: 0x00c0, - 0x25e4: 0x00c0, 0x25e5: 0x00c0, 0x25e6: 0x00c0, 0x25e7: 0x00c0, 0x25e8: 0x00c0, 0x25e9: 0x00c0, - 0x25ea: 0x00c0, 0x25eb: 0x00c0, 0x25ec: 0x00c0, 0x25ed: 0x00c0, 0x25ee: 0x00c0, 0x25ef: 0x00c3, - 0x25f0: 0x0083, 0x25f1: 0x0083, 0x25f2: 0x0083, 0x25f3: 0x0080, 0x25f4: 0x00c3, 0x25f5: 0x00c3, - 0x25f6: 0x00c3, 0x25f7: 0x00c3, 0x25f8: 0x00c3, 0x25f9: 0x00c3, 0x25fa: 0x00c3, 0x25fb: 0x00c3, - 0x25fc: 0x00c3, 0x25fd: 0x00c3, 0x25fe: 0x0080, 0x25ff: 0x00c0, - // Block 0x98, offset 0x2600 - 0x2600: 0x00c0, 0x2601: 0x00c0, 0x2602: 0x00c0, 0x2603: 0x00c0, 0x2604: 0x00c0, 0x2605: 0x00c0, - 0x2606: 0x00c0, 0x2607: 0x00c0, 0x2608: 0x00c0, 0x2609: 0x00c0, 0x260a: 0x00c0, 0x260b: 0x00c0, - 0x260c: 0x00c0, 0x260d: 0x00c0, 0x260e: 0x00c0, 0x260f: 0x00c0, 0x2610: 0x00c0, 0x2611: 0x00c0, - 0x2612: 0x00c0, 0x2613: 0x00c0, 0x2614: 0x00c0, 0x2615: 0x00c0, 0x2616: 0x00c0, 0x2617: 0x00c0, - 0x2618: 0x00c0, 0x2619: 0x00c0, 0x261a: 0x00c0, 0x261b: 0x00c0, 0x261c: 0x0080, 0x261d: 0x0080, - 0x261e: 0x00c3, 0x261f: 0x00c3, 0x2620: 0x00c0, 0x2621: 0x00c0, 0x2622: 0x00c0, 0x2623: 0x00c0, - 0x2624: 0x00c0, 0x2625: 0x00c0, 0x2626: 0x00c0, 0x2627: 0x00c0, 0x2628: 0x00c0, 0x2629: 0x00c0, - 0x262a: 0x00c0, 0x262b: 0x00c0, 0x262c: 0x00c0, 0x262d: 0x00c0, 0x262e: 0x00c0, 0x262f: 0x00c0, - 0x2630: 0x00c0, 0x2631: 0x00c0, 0x2632: 0x00c0, 0x2633: 0x00c0, 0x2634: 0x00c0, 0x2635: 0x00c0, - 0x2636: 0x00c0, 0x2637: 0x00c0, 0x2638: 0x00c0, 0x2639: 0x00c0, 0x263a: 0x00c0, 0x263b: 0x00c0, - 0x263c: 0x00c0, 0x263d: 0x00c0, 0x263e: 0x00c0, 0x263f: 0x00c0, - // Block 0x99, offset 0x2640 - 0x2640: 0x00c0, 0x2641: 0x00c0, 0x2642: 0x00c0, 0x2643: 0x00c0, 0x2644: 0x00c0, 0x2645: 0x00c0, - 0x2646: 0x00c0, 0x2647: 0x00c0, 0x2648: 0x00c0, 0x2649: 0x00c0, 0x264a: 0x00c0, 0x264b: 0x00c0, - 0x264c: 0x00c0, 0x264d: 0x00c0, 0x264e: 0x00c0, 0x264f: 0x00c0, 0x2650: 0x00c0, 0x2651: 0x00c0, - 0x2652: 0x00c0, 0x2653: 0x00c0, 0x2654: 0x00c0, 0x2655: 0x00c0, 0x2656: 0x00c0, 0x2657: 0x00c0, - 0x2658: 0x00c0, 0x2659: 0x00c0, 0x265a: 0x00c0, 0x265b: 0x00c0, 0x265c: 0x00c0, 0x265d: 0x00c0, - 0x265e: 0x00c0, 0x265f: 0x00c0, 0x2660: 0x00c0, 0x2661: 0x00c0, 0x2662: 0x00c0, 0x2663: 0x00c0, - 0x2664: 0x00c0, 0x2665: 0x00c0, 0x2666: 0x0080, 0x2667: 0x0080, 0x2668: 0x0080, 0x2669: 0x0080, - 0x266a: 0x0080, 0x266b: 0x0080, 0x266c: 0x0080, 0x266d: 0x0080, 0x266e: 0x0080, 0x266f: 0x0080, - 0x2670: 0x00c3, 0x2671: 0x00c3, 0x2672: 0x0080, 0x2673: 0x0080, 0x2674: 0x0080, 0x2675: 0x0080, - 0x2676: 0x0080, 0x2677: 0x0080, - // Block 0x9a, offset 0x2680 - 0x2680: 0x0080, 0x2681: 0x0080, 0x2682: 0x0080, 0x2683: 0x0080, 0x2684: 0x0080, 0x2685: 0x0080, - 0x2686: 0x0080, 0x2687: 0x0080, 0x2688: 0x0080, 0x2689: 0x0080, 0x268a: 0x0080, 0x268b: 0x0080, - 0x268c: 0x0080, 0x268d: 0x0080, 0x268e: 0x0080, 0x268f: 0x0080, 0x2690: 0x0080, 0x2691: 0x0080, - 0x2692: 0x0080, 0x2693: 0x0080, 0x2694: 0x0080, 0x2695: 0x0080, 0x2696: 0x0080, 0x2697: 0x00c0, - 0x2698: 0x00c0, 0x2699: 0x00c0, 0x269a: 0x00c0, 0x269b: 0x00c0, 0x269c: 0x00c0, 0x269d: 0x00c0, - 0x269e: 0x00c0, 0x269f: 0x00c0, 0x26a0: 0x0080, 0x26a1: 0x0080, 0x26a2: 0x00c0, 0x26a3: 0x00c0, - 0x26a4: 0x00c0, 0x26a5: 0x00c0, 0x26a6: 0x00c0, 0x26a7: 0x00c0, 0x26a8: 0x00c0, 0x26a9: 0x00c0, - 0x26aa: 0x00c0, 0x26ab: 0x00c0, 0x26ac: 0x00c0, 0x26ad: 0x00c0, 0x26ae: 0x00c0, 0x26af: 0x00c0, - 0x26b0: 0x00c0, 0x26b1: 0x00c0, 0x26b2: 0x00c0, 0x26b3: 0x00c0, 0x26b4: 0x00c0, 0x26b5: 0x00c0, - 0x26b6: 0x00c0, 0x26b7: 0x00c0, 0x26b8: 0x00c0, 0x26b9: 0x00c0, 0x26ba: 0x00c0, 0x26bb: 0x00c0, - 0x26bc: 0x00c0, 0x26bd: 0x00c0, 0x26be: 0x00c0, 0x26bf: 0x00c0, - // Block 0x9b, offset 0x26c0 - 0x26c0: 0x00c0, 0x26c1: 0x00c0, 0x26c2: 0x00c0, 0x26c3: 0x00c0, 0x26c4: 0x00c0, 0x26c5: 0x00c0, - 0x26c6: 0x00c0, 0x26c7: 0x00c0, 0x26c8: 0x00c0, 0x26c9: 0x00c0, 0x26ca: 0x00c0, 0x26cb: 0x00c0, - 0x26cc: 0x00c0, 0x26cd: 0x00c0, 0x26ce: 0x00c0, 0x26cf: 0x00c0, 0x26d0: 0x00c0, 0x26d1: 0x00c0, - 0x26d2: 0x00c0, 0x26d3: 0x00c0, 0x26d4: 0x00c0, 0x26d5: 0x00c0, 0x26d6: 0x00c0, 0x26d7: 0x00c0, - 0x26d8: 0x00c0, 0x26d9: 0x00c0, 0x26da: 0x00c0, 0x26db: 0x00c0, 0x26dc: 0x00c0, 0x26dd: 0x00c0, - 0x26de: 0x00c0, 0x26df: 0x00c0, 0x26e0: 0x00c0, 0x26e1: 0x00c0, 0x26e2: 0x00c0, 0x26e3: 0x00c0, - 0x26e4: 0x00c0, 0x26e5: 0x00c0, 0x26e6: 0x00c0, 0x26e7: 0x00c0, 0x26e8: 0x00c0, 0x26e9: 0x00c0, - 0x26ea: 0x00c0, 0x26eb: 0x00c0, 0x26ec: 0x00c0, 0x26ed: 0x00c0, 0x26ee: 0x00c0, 0x26ef: 0x00c0, - 0x26f0: 0x0080, 0x26f1: 0x00c0, 0x26f2: 0x00c0, 0x26f3: 0x00c0, 0x26f4: 0x00c0, 0x26f5: 0x00c0, - 0x26f6: 0x00c0, 0x26f7: 0x00c0, 0x26f8: 0x00c0, 0x26f9: 0x00c0, 0x26fa: 0x00c0, 0x26fb: 0x00c0, - 0x26fc: 0x00c0, 0x26fd: 0x00c0, 0x26fe: 0x00c0, 0x26ff: 0x00c0, - // Block 0x9c, offset 0x2700 - 0x2700: 0x00c0, 0x2701: 0x00c0, 0x2702: 0x00c0, 0x2703: 0x00c0, 0x2704: 0x00c0, 0x2705: 0x00c0, - 0x2706: 0x00c0, 0x2707: 0x00c0, 0x2708: 0x00c0, 0x2709: 0x0080, 0x270a: 0x0080, 0x270b: 0x00c0, - 0x270c: 0x00c0, 0x270d: 0x00c0, 0x270e: 0x00c0, 0x270f: 0x00c0, 0x2710: 0x00c0, 0x2711: 0x00c0, - 0x2712: 0x00c0, 0x2713: 0x00c0, 0x2714: 0x00c0, 0x2715: 0x00c0, 0x2716: 0x00c0, 0x2717: 0x00c0, - 0x2718: 0x00c0, 0x2719: 0x00c0, 0x271a: 0x00c0, 0x271b: 0x00c0, 0x271c: 0x00c0, 0x271d: 0x00c0, - 0x271e: 0x00c0, 0x271f: 0x00c0, 0x2720: 0x00c0, 0x2721: 0x00c0, 0x2722: 0x00c0, 0x2723: 0x00c0, - 0x2724: 0x00c0, 0x2725: 0x00c0, 0x2726: 0x00c0, 0x2727: 0x00c0, 0x2728: 0x00c0, 0x2729: 0x00c0, - 0x272a: 0x00c0, 0x272b: 0x00c0, 0x272c: 0x00c0, 0x272d: 0x00c0, 0x272e: 0x00c0, - 0x2730: 0x00c0, 0x2731: 0x00c0, 0x2732: 0x00c0, 0x2733: 0x00c0, 0x2734: 0x00c0, 0x2735: 0x00c0, - 0x2736: 0x00c0, 0x2737: 0x00c0, - // Block 0x9d, offset 0x2740 - 0x2777: 0x00c0, 0x2778: 0x0080, 0x2779: 0x0080, 0x277a: 0x00c0, 0x277b: 0x00c0, - 0x277c: 0x00c0, 0x277d: 0x00c0, 0x277e: 0x00c0, 0x277f: 0x00c0, - // Block 0x9e, offset 0x2780 - 0x2780: 0x00c0, 0x2781: 0x00c0, 0x2782: 0x00c3, 0x2783: 0x00c0, 0x2784: 0x00c0, 0x2785: 0x00c0, - 0x2786: 0x00c6, 0x2787: 0x00c0, 0x2788: 0x00c0, 0x2789: 0x00c0, 0x278a: 0x00c0, 0x278b: 0x00c3, - 0x278c: 0x00c0, 0x278d: 0x00c0, 0x278e: 0x00c0, 0x278f: 0x00c0, 0x2790: 0x00c0, 0x2791: 0x00c0, - 0x2792: 0x00c0, 0x2793: 0x00c0, 0x2794: 0x00c0, 0x2795: 0x00c0, 0x2796: 0x00c0, 0x2797: 0x00c0, - 0x2798: 0x00c0, 0x2799: 0x00c0, 0x279a: 0x00c0, 0x279b: 0x00c0, 0x279c: 0x00c0, 0x279d: 0x00c0, - 0x279e: 0x00c0, 0x279f: 0x00c0, 0x27a0: 0x00c0, 0x27a1: 0x00c0, 0x27a2: 0x00c0, 0x27a3: 0x00c0, - 0x27a4: 0x00c0, 0x27a5: 0x00c3, 0x27a6: 0x00c3, 0x27a7: 0x00c0, 0x27a8: 0x0080, 0x27a9: 0x0080, - 0x27aa: 0x0080, 0x27ab: 0x0080, - 0x27b0: 0x0080, 0x27b1: 0x0080, 0x27b2: 0x0080, 0x27b3: 0x0080, 0x27b4: 0x0080, 0x27b5: 0x0080, - 0x27b6: 0x0080, 0x27b7: 0x0080, 0x27b8: 0x0080, 0x27b9: 0x0080, - // Block 0x9f, offset 0x27c0 - 0x27c0: 0x00c2, 0x27c1: 0x00c2, 0x27c2: 0x00c2, 0x27c3: 0x00c2, 0x27c4: 0x00c2, 0x27c5: 0x00c2, - 0x27c6: 0x00c2, 0x27c7: 0x00c2, 0x27c8: 0x00c2, 0x27c9: 0x00c2, 0x27ca: 0x00c2, 0x27cb: 0x00c2, - 0x27cc: 0x00c2, 0x27cd: 0x00c2, 0x27ce: 0x00c2, 0x27cf: 0x00c2, 0x27d0: 0x00c2, 0x27d1: 0x00c2, - 0x27d2: 0x00c2, 0x27d3: 0x00c2, 0x27d4: 0x00c2, 0x27d5: 0x00c2, 0x27d6: 0x00c2, 0x27d7: 0x00c2, - 0x27d8: 0x00c2, 0x27d9: 0x00c2, 0x27da: 0x00c2, 0x27db: 0x00c2, 0x27dc: 0x00c2, 0x27dd: 0x00c2, - 0x27de: 0x00c2, 0x27df: 0x00c2, 0x27e0: 0x00c2, 0x27e1: 0x00c2, 0x27e2: 0x00c2, 0x27e3: 0x00c2, - 0x27e4: 0x00c2, 0x27e5: 0x00c2, 0x27e6: 0x00c2, 0x27e7: 0x00c2, 0x27e8: 0x00c2, 0x27e9: 0x00c2, - 0x27ea: 0x00c2, 0x27eb: 0x00c2, 0x27ec: 0x00c2, 0x27ed: 0x00c2, 0x27ee: 0x00c2, 0x27ef: 0x00c2, - 0x27f0: 0x00c2, 0x27f1: 0x00c2, 0x27f2: 0x00c1, 0x27f3: 0x00c0, 0x27f4: 0x0080, 0x27f5: 0x0080, - 0x27f6: 0x0080, 0x27f7: 0x0080, - // Block 0xa0, offset 0x2800 - 0x2800: 0x00c0, 0x2801: 0x00c0, 0x2802: 0x00c0, 0x2803: 0x00c0, 0x2804: 0x00c6, 0x2805: 0x00c3, - 0x280e: 0x0080, 0x280f: 0x0080, 0x2810: 0x00c0, 0x2811: 0x00c0, - 0x2812: 0x00c0, 0x2813: 0x00c0, 0x2814: 0x00c0, 0x2815: 0x00c0, 0x2816: 0x00c0, 0x2817: 0x00c0, - 0x2818: 0x00c0, 0x2819: 0x00c0, - 0x2820: 0x00c3, 0x2821: 0x00c3, 0x2822: 0x00c3, 0x2823: 0x00c3, - 0x2824: 0x00c3, 0x2825: 0x00c3, 0x2826: 0x00c3, 0x2827: 0x00c3, 0x2828: 0x00c3, 0x2829: 0x00c3, - 0x282a: 0x00c3, 0x282b: 0x00c3, 0x282c: 0x00c3, 0x282d: 0x00c3, 0x282e: 0x00c3, 0x282f: 0x00c3, - 0x2830: 0x00c3, 0x2831: 0x00c3, 0x2832: 0x00c0, 0x2833: 0x00c0, 0x2834: 0x00c0, 0x2835: 0x00c0, - 0x2836: 0x00c0, 0x2837: 0x00c0, 0x2838: 0x0080, 0x2839: 0x0080, 0x283a: 0x0080, 0x283b: 0x00c0, - 0x283c: 0x0080, 0x283d: 0x00c0, - // Block 0xa1, offset 0x2840 - 0x2840: 0x00c0, 0x2841: 0x00c0, 0x2842: 0x00c0, 0x2843: 0x00c0, 0x2844: 0x00c0, 0x2845: 0x00c0, - 0x2846: 0x00c0, 0x2847: 0x00c0, 0x2848: 0x00c0, 0x2849: 0x00c0, 0x284a: 0x00c0, 0x284b: 0x00c0, - 0x284c: 0x00c0, 0x284d: 0x00c0, 0x284e: 0x00c0, 0x284f: 0x00c0, 0x2850: 0x00c0, 0x2851: 0x00c0, - 0x2852: 0x00c0, 0x2853: 0x00c0, 0x2854: 0x00c0, 0x2855: 0x00c0, 0x2856: 0x00c0, 0x2857: 0x00c0, - 0x2858: 0x00c0, 0x2859: 0x00c0, 0x285a: 0x00c0, 0x285b: 0x00c0, 0x285c: 0x00c0, 0x285d: 0x00c0, - 0x285e: 0x00c0, 0x285f: 0x00c0, 0x2860: 0x00c0, 0x2861: 0x00c0, 0x2862: 0x00c0, 0x2863: 0x00c0, - 0x2864: 0x00c0, 0x2865: 0x00c0, 0x2866: 0x00c3, 0x2867: 0x00c3, 0x2868: 0x00c3, 0x2869: 0x00c3, - 0x286a: 0x00c3, 0x286b: 0x00c3, 0x286c: 0x00c3, 0x286d: 0x00c3, 0x286e: 0x0080, 0x286f: 0x0080, - 0x2870: 0x00c0, 0x2871: 0x00c0, 0x2872: 0x00c0, 0x2873: 0x00c0, 0x2874: 0x00c0, 0x2875: 0x00c0, - 0x2876: 0x00c0, 0x2877: 0x00c0, 0x2878: 0x00c0, 0x2879: 0x00c0, 0x287a: 0x00c0, 0x287b: 0x00c0, - 0x287c: 0x00c0, 0x287d: 0x00c0, 0x287e: 0x00c0, 0x287f: 0x00c0, - // Block 0xa2, offset 0x2880 - 0x2880: 0x00c0, 0x2881: 0x00c0, 0x2882: 0x00c0, 0x2883: 0x00c0, 0x2884: 0x00c0, 0x2885: 0x00c0, - 0x2886: 0x00c0, 0x2887: 0x00c3, 0x2888: 0x00c3, 0x2889: 0x00c3, 0x288a: 0x00c3, 0x288b: 0x00c3, - 0x288c: 0x00c3, 0x288d: 0x00c3, 0x288e: 0x00c3, 0x288f: 0x00c3, 0x2890: 0x00c3, 0x2891: 0x00c3, - 0x2892: 0x00c0, 0x2893: 0x00c5, - 0x289f: 0x0080, 0x28a0: 0x0040, 0x28a1: 0x0040, 0x28a2: 0x0040, 0x28a3: 0x0040, - 0x28a4: 0x0040, 0x28a5: 0x0040, 0x28a6: 0x0040, 0x28a7: 0x0040, 0x28a8: 0x0040, 0x28a9: 0x0040, - 0x28aa: 0x0040, 0x28ab: 0x0040, 0x28ac: 0x0040, 0x28ad: 0x0040, 0x28ae: 0x0040, 0x28af: 0x0040, - 0x28b0: 0x0040, 0x28b1: 0x0040, 0x28b2: 0x0040, 0x28b3: 0x0040, 0x28b4: 0x0040, 0x28b5: 0x0040, - 0x28b6: 0x0040, 0x28b7: 0x0040, 0x28b8: 0x0040, 0x28b9: 0x0040, 0x28ba: 0x0040, 0x28bb: 0x0040, - 0x28bc: 0x0040, - // Block 0xa3, offset 0x28c0 - 0x28c0: 0x00c3, 0x28c1: 0x00c3, 0x28c2: 0x00c3, 0x28c3: 0x00c0, 0x28c4: 0x00c0, 0x28c5: 0x00c0, - 0x28c6: 0x00c0, 0x28c7: 0x00c0, 0x28c8: 0x00c0, 0x28c9: 0x00c0, 0x28ca: 0x00c0, 0x28cb: 0x00c0, - 0x28cc: 0x00c0, 0x28cd: 0x00c0, 0x28ce: 0x00c0, 0x28cf: 0x00c0, 0x28d0: 0x00c0, 0x28d1: 0x00c0, - 0x28d2: 0x00c0, 0x28d3: 0x00c0, 0x28d4: 0x00c0, 0x28d5: 0x00c0, 0x28d6: 0x00c0, 0x28d7: 0x00c0, - 0x28d8: 0x00c0, 0x28d9: 0x00c0, 0x28da: 0x00c0, 0x28db: 0x00c0, 0x28dc: 0x00c0, 0x28dd: 0x00c0, - 0x28de: 0x00c0, 0x28df: 0x00c0, 0x28e0: 0x00c0, 0x28e1: 0x00c0, 0x28e2: 0x00c0, 0x28e3: 0x00c0, - 0x28e4: 0x00c0, 0x28e5: 0x00c0, 0x28e6: 0x00c0, 0x28e7: 0x00c0, 0x28e8: 0x00c0, 0x28e9: 0x00c0, - 0x28ea: 0x00c0, 0x28eb: 0x00c0, 0x28ec: 0x00c0, 0x28ed: 0x00c0, 0x28ee: 0x00c0, 0x28ef: 0x00c0, - 0x28f0: 0x00c0, 0x28f1: 0x00c0, 0x28f2: 0x00c0, 0x28f3: 0x00c3, 0x28f4: 0x00c0, 0x28f5: 0x00c0, - 0x28f6: 0x00c3, 0x28f7: 0x00c3, 0x28f8: 0x00c3, 0x28f9: 0x00c3, 0x28fa: 0x00c0, 0x28fb: 0x00c0, - 0x28fc: 0x00c3, 0x28fd: 0x00c0, 0x28fe: 0x00c0, 0x28ff: 0x00c0, - // Block 0xa4, offset 0x2900 - 0x2900: 0x00c5, 0x2901: 0x0080, 0x2902: 0x0080, 0x2903: 0x0080, 0x2904: 0x0080, 0x2905: 0x0080, - 0x2906: 0x0080, 0x2907: 0x0080, 0x2908: 0x0080, 0x2909: 0x0080, 0x290a: 0x0080, 0x290b: 0x0080, - 0x290c: 0x0080, 0x290d: 0x0080, 0x290f: 0x00c0, 0x2910: 0x00c0, 0x2911: 0x00c0, - 0x2912: 0x00c0, 0x2913: 0x00c0, 0x2914: 0x00c0, 0x2915: 0x00c0, 0x2916: 0x00c0, 0x2917: 0x00c0, - 0x2918: 0x00c0, 0x2919: 0x00c0, - 0x291e: 0x0080, 0x291f: 0x0080, 0x2920: 0x00c0, 0x2921: 0x00c0, 0x2922: 0x00c0, 0x2923: 0x00c0, - 0x2924: 0x00c0, 0x2925: 0x00c3, 0x2926: 0x00c0, 0x2927: 0x00c0, 0x2928: 0x00c0, 0x2929: 0x00c0, - 0x292a: 0x00c0, 0x292b: 0x00c0, 0x292c: 0x00c0, 0x292d: 0x00c0, 0x292e: 0x00c0, 0x292f: 0x00c0, - 0x2930: 0x00c0, 0x2931: 0x00c0, 0x2932: 0x00c0, 0x2933: 0x00c0, 0x2934: 0x00c0, 0x2935: 0x00c0, - 0x2936: 0x00c0, 0x2937: 0x00c0, 0x2938: 0x00c0, 0x2939: 0x00c0, 0x293a: 0x00c0, 0x293b: 0x00c0, - 0x293c: 0x00c0, 0x293d: 0x00c0, 0x293e: 0x00c0, - // Block 0xa5, offset 0x2940 - 0x2940: 0x00c0, 0x2941: 0x00c0, 0x2942: 0x00c0, 0x2943: 0x00c0, 0x2944: 0x00c0, 0x2945: 0x00c0, - 0x2946: 0x00c0, 0x2947: 0x00c0, 0x2948: 0x00c0, 0x2949: 0x00c0, 0x294a: 0x00c0, 0x294b: 0x00c0, - 0x294c: 0x00c0, 0x294d: 0x00c0, 0x294e: 0x00c0, 0x294f: 0x00c0, 0x2950: 0x00c0, 0x2951: 0x00c0, - 0x2952: 0x00c0, 0x2953: 0x00c0, 0x2954: 0x00c0, 0x2955: 0x00c0, 0x2956: 0x00c0, 0x2957: 0x00c0, - 0x2958: 0x00c0, 0x2959: 0x00c0, 0x295a: 0x00c0, 0x295b: 0x00c0, 0x295c: 0x00c0, 0x295d: 0x00c0, - 0x295e: 0x00c0, 0x295f: 0x00c0, 0x2960: 0x00c0, 0x2961: 0x00c0, 0x2962: 0x00c0, 0x2963: 0x00c0, - 0x2964: 0x00c0, 0x2965: 0x00c0, 0x2966: 0x00c0, 0x2967: 0x00c0, 0x2968: 0x00c0, 0x2969: 0x00c3, - 0x296a: 0x00c3, 0x296b: 0x00c3, 0x296c: 0x00c3, 0x296d: 0x00c3, 0x296e: 0x00c3, 0x296f: 0x00c0, - 0x2970: 0x00c0, 0x2971: 0x00c3, 0x2972: 0x00c3, 0x2973: 0x00c0, 0x2974: 0x00c0, 0x2975: 0x00c3, - 0x2976: 0x00c3, - // Block 0xa6, offset 0x2980 - 0x2980: 0x00c0, 0x2981: 0x00c0, 0x2982: 0x00c0, 0x2983: 0x00c3, 0x2984: 0x00c0, 0x2985: 0x00c0, - 0x2986: 0x00c0, 0x2987: 0x00c0, 0x2988: 0x00c0, 0x2989: 0x00c0, 0x298a: 0x00c0, 0x298b: 0x00c0, - 0x298c: 0x00c3, 0x298d: 0x00c0, 0x2990: 0x00c0, 0x2991: 0x00c0, - 0x2992: 0x00c0, 0x2993: 0x00c0, 0x2994: 0x00c0, 0x2995: 0x00c0, 0x2996: 0x00c0, 0x2997: 0x00c0, - 0x2998: 0x00c0, 0x2999: 0x00c0, 0x299c: 0x0080, 0x299d: 0x0080, - 0x299e: 0x0080, 0x299f: 0x0080, 0x29a0: 0x00c0, 0x29a1: 0x00c0, 0x29a2: 0x00c0, 0x29a3: 0x00c0, - 0x29a4: 0x00c0, 0x29a5: 0x00c0, 0x29a6: 0x00c0, 0x29a7: 0x00c0, 0x29a8: 0x00c0, 0x29a9: 0x00c0, - 0x29aa: 0x00c0, 0x29ab: 0x00c0, 0x29ac: 0x00c0, 0x29ad: 0x00c0, 0x29ae: 0x00c0, 0x29af: 0x00c0, - 0x29b0: 0x00c0, 0x29b1: 0x00c0, 0x29b2: 0x00c0, 0x29b3: 0x00c0, 0x29b4: 0x00c0, 0x29b5: 0x00c0, - 0x29b6: 0x00c0, 0x29b7: 0x0080, 0x29b8: 0x0080, 0x29b9: 0x0080, 0x29ba: 0x00c0, 0x29bb: 0x00c0, - 0x29bc: 0x00c3, 0x29bd: 0x00c0, 0x29be: 0x00c0, 0x29bf: 0x00c0, - // Block 0xa7, offset 0x29c0 - 0x29c0: 0x00c0, 0x29c1: 0x00c0, 0x29c2: 0x00c0, 0x29c3: 0x00c0, 0x29c4: 0x00c0, 0x29c5: 0x00c0, - 0x29c6: 0x00c0, 0x29c7: 0x00c0, 0x29c8: 0x00c0, 0x29c9: 0x00c0, 0x29ca: 0x00c0, 0x29cb: 0x00c0, - 0x29cc: 0x00c0, 0x29cd: 0x00c0, 0x29ce: 0x00c0, 0x29cf: 0x00c0, 0x29d0: 0x00c0, 0x29d1: 0x00c0, - 0x29d2: 0x00c0, 0x29d3: 0x00c0, 0x29d4: 0x00c0, 0x29d5: 0x00c0, 0x29d6: 0x00c0, 0x29d7: 0x00c0, - 0x29d8: 0x00c0, 0x29d9: 0x00c0, 0x29da: 0x00c0, 0x29db: 0x00c0, 0x29dc: 0x00c0, 0x29dd: 0x00c0, - 0x29de: 0x00c0, 0x29df: 0x00c0, 0x29e0: 0x00c0, 0x29e1: 0x00c0, 0x29e2: 0x00c0, 0x29e3: 0x00c0, - 0x29e4: 0x00c0, 0x29e5: 0x00c0, 0x29e6: 0x00c0, 0x29e7: 0x00c0, 0x29e8: 0x00c0, 0x29e9: 0x00c0, - 0x29ea: 0x00c0, 0x29eb: 0x00c0, 0x29ec: 0x00c0, 0x29ed: 0x00c0, 0x29ee: 0x00c0, 0x29ef: 0x00c0, - 0x29f0: 0x00c3, 0x29f1: 0x00c0, 0x29f2: 0x00c3, 0x29f3: 0x00c3, 0x29f4: 0x00c3, 0x29f5: 0x00c0, - 0x29f6: 0x00c0, 0x29f7: 0x00c3, 0x29f8: 0x00c3, 0x29f9: 0x00c0, 0x29fa: 0x00c0, 0x29fb: 0x00c0, - 0x29fc: 0x00c0, 0x29fd: 0x00c0, 0x29fe: 0x00c3, 0x29ff: 0x00c3, - // Block 0xa8, offset 0x2a00 - 0x2a00: 0x00c0, 0x2a01: 0x00c3, 0x2a02: 0x00c0, - 0x2a1b: 0x00c0, 0x2a1c: 0x00c0, 0x2a1d: 0x00c0, - 0x2a1e: 0x0080, 0x2a1f: 0x0080, 0x2a20: 0x00c0, 0x2a21: 0x00c0, 0x2a22: 0x00c0, 0x2a23: 0x00c0, - 0x2a24: 0x00c0, 0x2a25: 0x00c0, 0x2a26: 0x00c0, 0x2a27: 0x00c0, 0x2a28: 0x00c0, 0x2a29: 0x00c0, - 0x2a2a: 0x00c0, 0x2a2b: 0x00c0, 0x2a2c: 0x00c3, 0x2a2d: 0x00c3, 0x2a2e: 0x00c0, 0x2a2f: 0x00c0, - 0x2a30: 0x0080, 0x2a31: 0x0080, 0x2a32: 0x00c0, 0x2a33: 0x00c0, 0x2a34: 0x00c0, 0x2a35: 0x00c0, - 0x2a36: 0x00c6, - // Block 0xa9, offset 0x2a40 - 0x2a41: 0x00c0, 0x2a42: 0x00c0, 0x2a43: 0x00c0, 0x2a44: 0x00c0, 0x2a45: 0x00c0, - 0x2a46: 0x00c0, 0x2a49: 0x00c0, 0x2a4a: 0x00c0, 0x2a4b: 0x00c0, - 0x2a4c: 0x00c0, 0x2a4d: 0x00c0, 0x2a4e: 0x00c0, 0x2a51: 0x00c0, - 0x2a52: 0x00c0, 0x2a53: 0x00c0, 0x2a54: 0x00c0, 0x2a55: 0x00c0, 0x2a56: 0x00c0, - 0x2a60: 0x00c0, 0x2a61: 0x00c0, 0x2a62: 0x00c0, 0x2a63: 0x00c0, - 0x2a64: 0x00c0, 0x2a65: 0x00c0, 0x2a66: 0x00c0, 0x2a68: 0x00c0, 0x2a69: 0x00c0, - 0x2a6a: 0x00c0, 0x2a6b: 0x00c0, 0x2a6c: 0x00c0, 0x2a6d: 0x00c0, 0x2a6e: 0x00c0, - 0x2a70: 0x00c0, 0x2a71: 0x00c0, 0x2a72: 0x00c0, 0x2a73: 0x00c0, 0x2a74: 0x00c0, 0x2a75: 0x00c0, - 0x2a76: 0x00c0, 0x2a77: 0x00c0, 0x2a78: 0x00c0, 0x2a79: 0x00c0, 0x2a7a: 0x00c0, 0x2a7b: 0x00c0, - 0x2a7c: 0x00c0, 0x2a7d: 0x00c0, 0x2a7e: 0x00c0, 0x2a7f: 0x00c0, - // Block 0xaa, offset 0x2a80 - 0x2a80: 0x00c0, 0x2a81: 0x00c0, 0x2a82: 0x00c0, 0x2a83: 0x00c0, 0x2a84: 0x00c0, 0x2a85: 0x00c0, - 0x2a86: 0x00c0, 0x2a87: 0x00c0, 0x2a88: 0x00c0, 0x2a89: 0x00c0, 0x2a8a: 0x00c0, 0x2a8b: 0x00c0, - 0x2a8c: 0x00c0, 0x2a8d: 0x00c0, 0x2a8e: 0x00c0, 0x2a8f: 0x00c0, 0x2a90: 0x00c0, 0x2a91: 0x00c0, - 0x2a92: 0x00c0, 0x2a93: 0x00c0, 0x2a94: 0x00c0, 0x2a95: 0x00c0, 0x2a96: 0x00c0, 0x2a97: 0x00c0, - 0x2a98: 0x00c0, 0x2a99: 0x00c0, 0x2a9a: 0x00c0, 0x2a9b: 0x0080, 0x2a9c: 0x0080, 0x2a9d: 0x0080, - 0x2a9e: 0x0080, 0x2a9f: 0x0080, 0x2aa0: 0x00c0, 0x2aa1: 0x00c0, 0x2aa2: 0x00c0, 0x2aa3: 0x00c0, - 0x2aa4: 0x00c0, 0x2aa5: 0x00c8, - 0x2ab0: 0x00c0, 0x2ab1: 0x00c0, 0x2ab2: 0x00c0, 0x2ab3: 0x00c0, 0x2ab4: 0x00c0, 0x2ab5: 0x00c0, - 0x2ab6: 0x00c0, 0x2ab7: 0x00c0, 0x2ab8: 0x00c0, 0x2ab9: 0x00c0, 0x2aba: 0x00c0, 0x2abb: 0x00c0, - 0x2abc: 0x00c0, 0x2abd: 0x00c0, 0x2abe: 0x00c0, 0x2abf: 0x00c0, - // Block 0xab, offset 0x2ac0 - 0x2ac0: 0x00c0, 0x2ac1: 0x00c0, 0x2ac2: 0x00c0, 0x2ac3: 0x00c0, 0x2ac4: 0x00c0, 0x2ac5: 0x00c0, - 0x2ac6: 0x00c0, 0x2ac7: 0x00c0, 0x2ac8: 0x00c0, 0x2ac9: 0x00c0, 0x2aca: 0x00c0, 0x2acb: 0x00c0, - 0x2acc: 0x00c0, 0x2acd: 0x00c0, 0x2ace: 0x00c0, 0x2acf: 0x00c0, 0x2ad0: 0x00c0, 0x2ad1: 0x00c0, - 0x2ad2: 0x00c0, 0x2ad3: 0x00c0, 0x2ad4: 0x00c0, 0x2ad5: 0x00c0, 0x2ad6: 0x00c0, 0x2ad7: 0x00c0, - 0x2ad8: 0x00c0, 0x2ad9: 0x00c0, 0x2ada: 0x00c0, 0x2adb: 0x00c0, 0x2adc: 0x00c0, 0x2add: 0x00c0, - 0x2ade: 0x00c0, 0x2adf: 0x00c0, 0x2ae0: 0x00c0, 0x2ae1: 0x00c0, 0x2ae2: 0x00c0, 0x2ae3: 0x00c0, - 0x2ae4: 0x00c0, 0x2ae5: 0x00c3, 0x2ae6: 0x00c0, 0x2ae7: 0x00c0, 0x2ae8: 0x00c3, 0x2ae9: 0x00c0, - 0x2aea: 0x00c0, 0x2aeb: 0x0080, 0x2aec: 0x00c0, 0x2aed: 0x00c6, - 0x2af0: 0x00c0, 0x2af1: 0x00c0, 0x2af2: 0x00c0, 0x2af3: 0x00c0, 0x2af4: 0x00c0, 0x2af5: 0x00c0, - 0x2af6: 0x00c0, 0x2af7: 0x00c0, 0x2af8: 0x00c0, 0x2af9: 0x00c0, - // Block 0xac, offset 0x2b00 - 0x2b00: 0x00c0, 0x2b01: 0x00c0, 0x2b02: 0x00c0, 0x2b03: 0x00c0, 0x2b04: 0x00c0, 0x2b05: 0x00c0, - 0x2b06: 0x00c0, 0x2b07: 0x00c0, 0x2b08: 0x00c0, 0x2b09: 0x00c0, 0x2b0a: 0x00c0, 0x2b0b: 0x00c0, - 0x2b0c: 0x00c0, 0x2b0d: 0x00c0, 0x2b0e: 0x00c0, 0x2b0f: 0x00c0, 0x2b10: 0x00c0, 0x2b11: 0x00c0, - 0x2b12: 0x00c0, 0x2b13: 0x00c0, 0x2b14: 0x00c0, 0x2b15: 0x00c0, 0x2b16: 0x00c0, 0x2b17: 0x00c0, - 0x2b18: 0x00c0, 0x2b19: 0x00c0, 0x2b1a: 0x00c0, 0x2b1b: 0x00c0, 0x2b1c: 0x00c0, 0x2b1d: 0x00c0, - 0x2b1e: 0x00c0, 0x2b1f: 0x00c0, 0x2b20: 0x00c0, 0x2b21: 0x00c0, 0x2b22: 0x00c0, 0x2b23: 0x00c0, - 0x2b30: 0x0040, 0x2b31: 0x0040, 0x2b32: 0x0040, 0x2b33: 0x0040, 0x2b34: 0x0040, 0x2b35: 0x0040, - 0x2b36: 0x0040, 0x2b37: 0x0040, 0x2b38: 0x0040, 0x2b39: 0x0040, 0x2b3a: 0x0040, 0x2b3b: 0x0040, - 0x2b3c: 0x0040, 0x2b3d: 0x0040, 0x2b3e: 0x0040, 0x2b3f: 0x0040, - // Block 0xad, offset 0x2b40 - 0x2b40: 0x0040, 0x2b41: 0x0040, 0x2b42: 0x0040, 0x2b43: 0x0040, 0x2b44: 0x0040, 0x2b45: 0x0040, - 0x2b46: 0x0040, 0x2b4b: 0x0040, - 0x2b4c: 0x0040, 0x2b4d: 0x0040, 0x2b4e: 0x0040, 0x2b4f: 0x0040, 0x2b50: 0x0040, 0x2b51: 0x0040, - 0x2b52: 0x0040, 0x2b53: 0x0040, 0x2b54: 0x0040, 0x2b55: 0x0040, 0x2b56: 0x0040, 0x2b57: 0x0040, - 0x2b58: 0x0040, 0x2b59: 0x0040, 0x2b5a: 0x0040, 0x2b5b: 0x0040, 0x2b5c: 0x0040, 0x2b5d: 0x0040, - 0x2b5e: 0x0040, 0x2b5f: 0x0040, 0x2b60: 0x0040, 0x2b61: 0x0040, 0x2b62: 0x0040, 0x2b63: 0x0040, - 0x2b64: 0x0040, 0x2b65: 0x0040, 0x2b66: 0x0040, 0x2b67: 0x0040, 0x2b68: 0x0040, 0x2b69: 0x0040, - 0x2b6a: 0x0040, 0x2b6b: 0x0040, 0x2b6c: 0x0040, 0x2b6d: 0x0040, 0x2b6e: 0x0040, 0x2b6f: 0x0040, - 0x2b70: 0x0040, 0x2b71: 0x0040, 0x2b72: 0x0040, 0x2b73: 0x0040, 0x2b74: 0x0040, 0x2b75: 0x0040, - 0x2b76: 0x0040, 0x2b77: 0x0040, 0x2b78: 0x0040, 0x2b79: 0x0040, 0x2b7a: 0x0040, 0x2b7b: 0x0040, - // Block 0xae, offset 0x2b80 - 0x2b80: 0x008c, 0x2b81: 0x008c, 0x2b82: 0x008c, 0x2b83: 0x008c, 0x2b84: 0x008c, 0x2b85: 0x008c, - 0x2b86: 0x008c, 0x2b87: 0x008c, 0x2b88: 0x008c, 0x2b89: 0x008c, 0x2b8a: 0x008c, 0x2b8b: 0x008c, - 0x2b8c: 0x008c, 0x2b8d: 0x008c, 0x2b8e: 0x00cc, 0x2b8f: 0x00cc, 0x2b90: 0x008c, 0x2b91: 0x00cc, - 0x2b92: 0x008c, 0x2b93: 0x00cc, 0x2b94: 0x00cc, 0x2b95: 0x008c, 0x2b96: 0x008c, 0x2b97: 0x008c, - 0x2b98: 0x008c, 0x2b99: 0x008c, 0x2b9a: 0x008c, 0x2b9b: 0x008c, 0x2b9c: 0x008c, 0x2b9d: 0x008c, - 0x2b9e: 0x008c, 0x2b9f: 0x00cc, 0x2ba0: 0x008c, 0x2ba1: 0x00cc, 0x2ba2: 0x008c, 0x2ba3: 0x00cc, - 0x2ba4: 0x00cc, 0x2ba5: 0x008c, 0x2ba6: 0x008c, 0x2ba7: 0x00cc, 0x2ba8: 0x00cc, 0x2ba9: 0x00cc, - 0x2baa: 0x008c, 0x2bab: 0x008c, 0x2bac: 0x008c, 0x2bad: 0x008c, 0x2bae: 0x008c, 0x2baf: 0x008c, - 0x2bb0: 0x008c, 0x2bb1: 0x008c, 0x2bb2: 0x008c, 0x2bb3: 0x008c, 0x2bb4: 0x008c, 0x2bb5: 0x008c, - 0x2bb6: 0x008c, 0x2bb7: 0x008c, 0x2bb8: 0x008c, 0x2bb9: 0x008c, 0x2bba: 0x008c, 0x2bbb: 0x008c, - 0x2bbc: 0x008c, 0x2bbd: 0x008c, 0x2bbe: 0x008c, 0x2bbf: 0x008c, - // Block 0xaf, offset 0x2bc0 - 0x2bc0: 0x008c, 0x2bc1: 0x008c, 0x2bc2: 0x008c, 0x2bc3: 0x008c, 0x2bc4: 0x008c, 0x2bc5: 0x008c, - 0x2bc6: 0x008c, 0x2bc7: 0x008c, 0x2bc8: 0x008c, 0x2bc9: 0x008c, 0x2bca: 0x008c, 0x2bcb: 0x008c, - 0x2bcc: 0x008c, 0x2bcd: 0x008c, 0x2bce: 0x008c, 0x2bcf: 0x008c, 0x2bd0: 0x008c, 0x2bd1: 0x008c, - 0x2bd2: 0x008c, 0x2bd3: 0x008c, 0x2bd4: 0x008c, 0x2bd5: 0x008c, 0x2bd6: 0x008c, 0x2bd7: 0x008c, - 0x2bd8: 0x008c, 0x2bd9: 0x008c, 0x2bda: 0x008c, 0x2bdb: 0x008c, 0x2bdc: 0x008c, 0x2bdd: 0x008c, - 0x2bde: 0x008c, 0x2bdf: 0x008c, 0x2be0: 0x008c, 0x2be1: 0x008c, 0x2be2: 0x008c, 0x2be3: 0x008c, - 0x2be4: 0x008c, 0x2be5: 0x008c, 0x2be6: 0x008c, 0x2be7: 0x008c, 0x2be8: 0x008c, 0x2be9: 0x008c, - 0x2bea: 0x008c, 0x2beb: 0x008c, 0x2bec: 0x008c, 0x2bed: 0x008c, - 0x2bf0: 0x008c, 0x2bf1: 0x008c, 0x2bf2: 0x008c, 0x2bf3: 0x008c, 0x2bf4: 0x008c, 0x2bf5: 0x008c, - 0x2bf6: 0x008c, 0x2bf7: 0x008c, 0x2bf8: 0x008c, 0x2bf9: 0x008c, 0x2bfa: 0x008c, 0x2bfb: 0x008c, - 0x2bfc: 0x008c, 0x2bfd: 0x008c, 0x2bfe: 0x008c, 0x2bff: 0x008c, - // Block 0xb0, offset 0x2c00 - 0x2c00: 0x008c, 0x2c01: 0x008c, 0x2c02: 0x008c, 0x2c03: 0x008c, 0x2c04: 0x008c, 0x2c05: 0x008c, - 0x2c06: 0x008c, 0x2c07: 0x008c, 0x2c08: 0x008c, 0x2c09: 0x008c, 0x2c0a: 0x008c, 0x2c0b: 0x008c, - 0x2c0c: 0x008c, 0x2c0d: 0x008c, 0x2c0e: 0x008c, 0x2c0f: 0x008c, 0x2c10: 0x008c, 0x2c11: 0x008c, - 0x2c12: 0x008c, 0x2c13: 0x008c, 0x2c14: 0x008c, 0x2c15: 0x008c, 0x2c16: 0x008c, 0x2c17: 0x008c, - 0x2c18: 0x008c, 0x2c19: 0x008c, - // Block 0xb1, offset 0x2c40 - 0x2c40: 0x0080, 0x2c41: 0x0080, 0x2c42: 0x0080, 0x2c43: 0x0080, 0x2c44: 0x0080, 0x2c45: 0x0080, - 0x2c46: 0x0080, - 0x2c53: 0x0080, 0x2c54: 0x0080, 0x2c55: 0x0080, 0x2c56: 0x0080, 0x2c57: 0x0080, - 0x2c5d: 0x008a, - 0x2c5e: 0x00cb, 0x2c5f: 0x008a, 0x2c60: 0x008a, 0x2c61: 0x008a, 0x2c62: 0x008a, 0x2c63: 0x008a, - 0x2c64: 0x008a, 0x2c65: 0x008a, 0x2c66: 0x008a, 0x2c67: 0x008a, 0x2c68: 0x008a, 0x2c69: 0x008a, - 0x2c6a: 0x008a, 0x2c6b: 0x008a, 0x2c6c: 0x008a, 0x2c6d: 0x008a, 0x2c6e: 0x008a, 0x2c6f: 0x008a, - 0x2c70: 0x008a, 0x2c71: 0x008a, 0x2c72: 0x008a, 0x2c73: 0x008a, 0x2c74: 0x008a, 0x2c75: 0x008a, - 0x2c76: 0x008a, 0x2c78: 0x008a, 0x2c79: 0x008a, 0x2c7a: 0x008a, 0x2c7b: 0x008a, - 0x2c7c: 0x008a, 0x2c7e: 0x008a, - // Block 0xb2, offset 0x2c80 - 0x2c80: 0x008a, 0x2c81: 0x008a, 0x2c83: 0x008a, 0x2c84: 0x008a, - 0x2c86: 0x008a, 0x2c87: 0x008a, 0x2c88: 0x008a, 0x2c89: 0x008a, 0x2c8a: 0x008a, 0x2c8b: 0x008a, - 0x2c8c: 0x008a, 0x2c8d: 0x008a, 0x2c8e: 0x008a, 0x2c8f: 0x008a, 0x2c90: 0x0080, 0x2c91: 0x0080, - 0x2c92: 0x0080, 0x2c93: 0x0080, 0x2c94: 0x0080, 0x2c95: 0x0080, 0x2c96: 0x0080, 0x2c97: 0x0080, - 0x2c98: 0x0080, 0x2c99: 0x0080, 0x2c9a: 0x0080, 0x2c9b: 0x0080, 0x2c9c: 0x0080, 0x2c9d: 0x0080, - 0x2c9e: 0x0080, 0x2c9f: 0x0080, 0x2ca0: 0x0080, 0x2ca1: 0x0080, 0x2ca2: 0x0080, 0x2ca3: 0x0080, - 0x2ca4: 0x0080, 0x2ca5: 0x0080, 0x2ca6: 0x0080, 0x2ca7: 0x0080, 0x2ca8: 0x0080, 0x2ca9: 0x0080, - 0x2caa: 0x0080, 0x2cab: 0x0080, 0x2cac: 0x0080, 0x2cad: 0x0080, 0x2cae: 0x0080, 0x2caf: 0x0080, - 0x2cb0: 0x0080, 0x2cb1: 0x0080, 0x2cb2: 0x0080, 0x2cb3: 0x0080, 0x2cb4: 0x0080, 0x2cb5: 0x0080, - 0x2cb6: 0x0080, 0x2cb7: 0x0080, 0x2cb8: 0x0080, 0x2cb9: 0x0080, 0x2cba: 0x0080, 0x2cbb: 0x0080, - 0x2cbc: 0x0080, 0x2cbd: 0x0080, 0x2cbe: 0x0080, 0x2cbf: 0x0080, - // Block 0xb3, offset 0x2cc0 - 0x2cc0: 0x0080, 0x2cc1: 0x0080, - 0x2cd3: 0x0080, 0x2cd4: 0x0080, 0x2cd5: 0x0080, 0x2cd6: 0x0080, 0x2cd7: 0x0080, - 0x2cd8: 0x0080, 0x2cd9: 0x0080, 0x2cda: 0x0080, 0x2cdb: 0x0080, 0x2cdc: 0x0080, 0x2cdd: 0x0080, - 0x2cde: 0x0080, 0x2cdf: 0x0080, 0x2ce0: 0x0080, 0x2ce1: 0x0080, 0x2ce2: 0x0080, 0x2ce3: 0x0080, - 0x2ce4: 0x0080, 0x2ce5: 0x0080, 0x2ce6: 0x0080, 0x2ce7: 0x0080, 0x2ce8: 0x0080, 0x2ce9: 0x0080, - 0x2cea: 0x0080, 0x2ceb: 0x0080, 0x2cec: 0x0080, 0x2ced: 0x0080, 0x2cee: 0x0080, 0x2cef: 0x0080, - 0x2cf0: 0x0080, 0x2cf1: 0x0080, 0x2cf2: 0x0080, 0x2cf3: 0x0080, 0x2cf4: 0x0080, 0x2cf5: 0x0080, - 0x2cf6: 0x0080, 0x2cf7: 0x0080, 0x2cf8: 0x0080, 0x2cf9: 0x0080, 0x2cfa: 0x0080, 0x2cfb: 0x0080, - 0x2cfc: 0x0080, 0x2cfd: 0x0080, 0x2cfe: 0x0080, 0x2cff: 0x0080, - // Block 0xb4, offset 0x2d00 - 0x2d10: 0x0080, 0x2d11: 0x0080, - 0x2d12: 0x0080, 0x2d13: 0x0080, 0x2d14: 0x0080, 0x2d15: 0x0080, 0x2d16: 0x0080, 0x2d17: 0x0080, - 0x2d18: 0x0080, 0x2d19: 0x0080, 0x2d1a: 0x0080, 0x2d1b: 0x0080, 0x2d1c: 0x0080, 0x2d1d: 0x0080, - 0x2d1e: 0x0080, 0x2d1f: 0x0080, 0x2d20: 0x0080, 0x2d21: 0x0080, 0x2d22: 0x0080, 0x2d23: 0x0080, - 0x2d24: 0x0080, 0x2d25: 0x0080, 0x2d26: 0x0080, 0x2d27: 0x0080, 0x2d28: 0x0080, 0x2d29: 0x0080, - 0x2d2a: 0x0080, 0x2d2b: 0x0080, 0x2d2c: 0x0080, 0x2d2d: 0x0080, 0x2d2e: 0x0080, 0x2d2f: 0x0080, - 0x2d30: 0x0080, 0x2d31: 0x0080, 0x2d32: 0x0080, 0x2d33: 0x0080, 0x2d34: 0x0080, 0x2d35: 0x0080, - 0x2d36: 0x0080, 0x2d37: 0x0080, 0x2d38: 0x0080, 0x2d39: 0x0080, 0x2d3a: 0x0080, 0x2d3b: 0x0080, - 0x2d3c: 0x0080, 0x2d3d: 0x0080, 0x2d3e: 0x0080, 0x2d3f: 0x0080, - // Block 0xb5, offset 0x2d40 - 0x2d40: 0x0080, 0x2d41: 0x0080, 0x2d42: 0x0080, 0x2d43: 0x0080, 0x2d44: 0x0080, 0x2d45: 0x0080, - 0x2d46: 0x0080, 0x2d47: 0x0080, 0x2d48: 0x0080, 0x2d49: 0x0080, 0x2d4a: 0x0080, 0x2d4b: 0x0080, - 0x2d4c: 0x0080, 0x2d4d: 0x0080, 0x2d4e: 0x0080, 0x2d4f: 0x0080, - 0x2d52: 0x0080, 0x2d53: 0x0080, 0x2d54: 0x0080, 0x2d55: 0x0080, 0x2d56: 0x0080, 0x2d57: 0x0080, - 0x2d58: 0x0080, 0x2d59: 0x0080, 0x2d5a: 0x0080, 0x2d5b: 0x0080, 0x2d5c: 0x0080, 0x2d5d: 0x0080, - 0x2d5e: 0x0080, 0x2d5f: 0x0080, 0x2d60: 0x0080, 0x2d61: 0x0080, 0x2d62: 0x0080, 0x2d63: 0x0080, - 0x2d64: 0x0080, 0x2d65: 0x0080, 0x2d66: 0x0080, 0x2d67: 0x0080, 0x2d68: 0x0080, 0x2d69: 0x0080, - 0x2d6a: 0x0080, 0x2d6b: 0x0080, 0x2d6c: 0x0080, 0x2d6d: 0x0080, 0x2d6e: 0x0080, 0x2d6f: 0x0080, - 0x2d70: 0x0080, 0x2d71: 0x0080, 0x2d72: 0x0080, 0x2d73: 0x0080, 0x2d74: 0x0080, 0x2d75: 0x0080, - 0x2d76: 0x0080, 0x2d77: 0x0080, 0x2d78: 0x0080, 0x2d79: 0x0080, 0x2d7a: 0x0080, 0x2d7b: 0x0080, - 0x2d7c: 0x0080, 0x2d7d: 0x0080, 0x2d7e: 0x0080, 0x2d7f: 0x0080, - // Block 0xb6, offset 0x2d80 - 0x2d80: 0x0080, 0x2d81: 0x0080, 0x2d82: 0x0080, 0x2d83: 0x0080, 0x2d84: 0x0080, 0x2d85: 0x0080, - 0x2d86: 0x0080, 0x2d87: 0x0080, - 0x2db0: 0x0080, 0x2db1: 0x0080, 0x2db2: 0x0080, 0x2db3: 0x0080, 0x2db4: 0x0080, 0x2db5: 0x0080, - 0x2db6: 0x0080, 0x2db7: 0x0080, 0x2db8: 0x0080, 0x2db9: 0x0080, 0x2dba: 0x0080, 0x2dbb: 0x0080, - 0x2dbc: 0x0080, 0x2dbd: 0x0080, - // Block 0xb7, offset 0x2dc0 - 0x2dc0: 0x0040, 0x2dc1: 0x0040, 0x2dc2: 0x0040, 0x2dc3: 0x0040, 0x2dc4: 0x0040, 0x2dc5: 0x0040, - 0x2dc6: 0x0040, 0x2dc7: 0x0040, 0x2dc8: 0x0040, 0x2dc9: 0x0040, 0x2dca: 0x0040, 0x2dcb: 0x0040, - 0x2dcc: 0x0040, 0x2dcd: 0x0040, 0x2dce: 0x0040, 0x2dcf: 0x0040, 0x2dd0: 0x0080, 0x2dd1: 0x0080, - 0x2dd2: 0x0080, 0x2dd3: 0x0080, 0x2dd4: 0x0080, 0x2dd5: 0x0080, 0x2dd6: 0x0080, 0x2dd7: 0x0080, - 0x2dd8: 0x0080, 0x2dd9: 0x0080, - 0x2de0: 0x00c3, 0x2de1: 0x00c3, 0x2de2: 0x00c3, 0x2de3: 0x00c3, - 0x2de4: 0x00c3, 0x2de5: 0x00c3, 0x2de6: 0x00c3, 0x2de7: 0x00c3, 0x2de8: 0x00c3, 0x2de9: 0x00c3, - 0x2dea: 0x00c3, 0x2deb: 0x00c3, 0x2dec: 0x00c3, 0x2ded: 0x00c3, 0x2dee: 0x00c3, 0x2def: 0x00c3, - 0x2df0: 0x0080, 0x2df1: 0x0080, 0x2df2: 0x0080, 0x2df3: 0x0080, 0x2df4: 0x0080, 0x2df5: 0x0080, - 0x2df6: 0x0080, 0x2df7: 0x0080, 0x2df8: 0x0080, 0x2df9: 0x0080, 0x2dfa: 0x0080, 0x2dfb: 0x0080, - 0x2dfc: 0x0080, 0x2dfd: 0x0080, 0x2dfe: 0x0080, 0x2dff: 0x0080, - // Block 0xb8, offset 0x2e00 - 0x2e00: 0x0080, 0x2e01: 0x0080, 0x2e02: 0x0080, 0x2e03: 0x0080, 0x2e04: 0x0080, 0x2e05: 0x0080, - 0x2e06: 0x0080, 0x2e07: 0x0080, 0x2e08: 0x0080, 0x2e09: 0x0080, 0x2e0a: 0x0080, 0x2e0b: 0x0080, - 0x2e0c: 0x0080, 0x2e0d: 0x0080, 0x2e0e: 0x0080, 0x2e0f: 0x0080, 0x2e10: 0x0080, 0x2e11: 0x0080, - 0x2e12: 0x0080, 0x2e14: 0x0080, 0x2e15: 0x0080, 0x2e16: 0x0080, 0x2e17: 0x0080, - 0x2e18: 0x0080, 0x2e19: 0x0080, 0x2e1a: 0x0080, 0x2e1b: 0x0080, 0x2e1c: 0x0080, 0x2e1d: 0x0080, - 0x2e1e: 0x0080, 0x2e1f: 0x0080, 0x2e20: 0x0080, 0x2e21: 0x0080, 0x2e22: 0x0080, 0x2e23: 0x0080, - 0x2e24: 0x0080, 0x2e25: 0x0080, 0x2e26: 0x0080, 0x2e28: 0x0080, 0x2e29: 0x0080, - 0x2e2a: 0x0080, 0x2e2b: 0x0080, - 0x2e30: 0x0080, 0x2e31: 0x0080, 0x2e32: 0x0080, 0x2e33: 0x00c0, 0x2e34: 0x0080, - 0x2e36: 0x0080, 0x2e37: 0x0080, 0x2e38: 0x0080, 0x2e39: 0x0080, 0x2e3a: 0x0080, 0x2e3b: 0x0080, - 0x2e3c: 0x0080, 0x2e3d: 0x0080, 0x2e3e: 0x0080, 0x2e3f: 0x0080, - // Block 0xb9, offset 0x2e40 - 0x2e40: 0x0080, 0x2e41: 0x0080, 0x2e42: 0x0080, 0x2e43: 0x0080, 0x2e44: 0x0080, 0x2e45: 0x0080, - 0x2e46: 0x0080, 0x2e47: 0x0080, 0x2e48: 0x0080, 0x2e49: 0x0080, 0x2e4a: 0x0080, 0x2e4b: 0x0080, - 0x2e4c: 0x0080, 0x2e4d: 0x0080, 0x2e4e: 0x0080, 0x2e4f: 0x0080, 0x2e50: 0x0080, 0x2e51: 0x0080, - 0x2e52: 0x0080, 0x2e53: 0x0080, 0x2e54: 0x0080, 0x2e55: 0x0080, 0x2e56: 0x0080, 0x2e57: 0x0080, - 0x2e58: 0x0080, 0x2e59: 0x0080, 0x2e5a: 0x0080, 0x2e5b: 0x0080, 0x2e5c: 0x0080, 0x2e5d: 0x0080, - 0x2e5e: 0x0080, 0x2e5f: 0x0080, 0x2e60: 0x0080, 0x2e61: 0x0080, 0x2e62: 0x0080, 0x2e63: 0x0080, - 0x2e64: 0x0080, 0x2e65: 0x0080, 0x2e66: 0x0080, 0x2e67: 0x0080, 0x2e68: 0x0080, 0x2e69: 0x0080, - 0x2e6a: 0x0080, 0x2e6b: 0x0080, 0x2e6c: 0x0080, 0x2e6d: 0x0080, 0x2e6e: 0x0080, 0x2e6f: 0x0080, - 0x2e70: 0x0080, 0x2e71: 0x0080, 0x2e72: 0x0080, 0x2e73: 0x0080, 0x2e74: 0x0080, 0x2e75: 0x0080, - 0x2e76: 0x0080, 0x2e77: 0x0080, 0x2e78: 0x0080, 0x2e79: 0x0080, 0x2e7a: 0x0080, 0x2e7b: 0x0080, - 0x2e7c: 0x0080, 0x2e7f: 0x0040, - // Block 0xba, offset 0x2e80 - 0x2e81: 0x0080, 0x2e82: 0x0080, 0x2e83: 0x0080, 0x2e84: 0x0080, 0x2e85: 0x0080, - 0x2e86: 0x0080, 0x2e87: 0x0080, 0x2e88: 0x0080, 0x2e89: 0x0080, 0x2e8a: 0x0080, 0x2e8b: 0x0080, - 0x2e8c: 0x0080, 0x2e8d: 0x0080, 0x2e8e: 0x0080, 0x2e8f: 0x0080, 0x2e90: 0x0080, 0x2e91: 0x0080, - 0x2e92: 0x0080, 0x2e93: 0x0080, 0x2e94: 0x0080, 0x2e95: 0x0080, 0x2e96: 0x0080, 0x2e97: 0x0080, - 0x2e98: 0x0080, 0x2e99: 0x0080, 0x2e9a: 0x0080, 0x2e9b: 0x0080, 0x2e9c: 0x0080, 0x2e9d: 0x0080, - 0x2e9e: 0x0080, 0x2e9f: 0x0080, 0x2ea0: 0x0080, 0x2ea1: 0x0080, 0x2ea2: 0x0080, 0x2ea3: 0x0080, - 0x2ea4: 0x0080, 0x2ea5: 0x0080, 0x2ea6: 0x0080, 0x2ea7: 0x0080, 0x2ea8: 0x0080, 0x2ea9: 0x0080, - 0x2eaa: 0x0080, 0x2eab: 0x0080, 0x2eac: 0x0080, 0x2ead: 0x0080, 0x2eae: 0x0080, 0x2eaf: 0x0080, - 0x2eb0: 0x0080, 0x2eb1: 0x0080, 0x2eb2: 0x0080, 0x2eb3: 0x0080, 0x2eb4: 0x0080, 0x2eb5: 0x0080, - 0x2eb6: 0x0080, 0x2eb7: 0x0080, 0x2eb8: 0x0080, 0x2eb9: 0x0080, 0x2eba: 0x0080, 0x2ebb: 0x0080, - 0x2ebc: 0x0080, 0x2ebd: 0x0080, 0x2ebe: 0x0080, 0x2ebf: 0x0080, - // Block 0xbb, offset 0x2ec0 - 0x2ec0: 0x0080, 0x2ec1: 0x0080, 0x2ec2: 0x0080, 0x2ec3: 0x0080, 0x2ec4: 0x0080, 0x2ec5: 0x0080, - 0x2ec6: 0x0080, 0x2ec7: 0x0080, 0x2ec8: 0x0080, 0x2ec9: 0x0080, 0x2eca: 0x0080, 0x2ecb: 0x0080, - 0x2ecc: 0x0080, 0x2ecd: 0x0080, 0x2ece: 0x0080, 0x2ecf: 0x0080, 0x2ed0: 0x0080, 0x2ed1: 0x0080, - 0x2ed2: 0x0080, 0x2ed3: 0x0080, 0x2ed4: 0x0080, 0x2ed5: 0x0080, 0x2ed6: 0x0080, 0x2ed7: 0x0080, - 0x2ed8: 0x0080, 0x2ed9: 0x0080, 0x2eda: 0x0080, 0x2edb: 0x0080, 0x2edc: 0x0080, 0x2edd: 0x0080, - 0x2ede: 0x0080, 0x2edf: 0x0080, 0x2ee0: 0x0080, 0x2ee1: 0x0080, 0x2ee2: 0x0080, 0x2ee3: 0x0080, - 0x2ee4: 0x0080, 0x2ee5: 0x0080, 0x2ee6: 0x008c, 0x2ee7: 0x008c, 0x2ee8: 0x008c, 0x2ee9: 0x008c, - 0x2eea: 0x008c, 0x2eeb: 0x008c, 0x2eec: 0x008c, 0x2eed: 0x008c, 0x2eee: 0x008c, 0x2eef: 0x008c, - 0x2ef0: 0x0080, 0x2ef1: 0x008c, 0x2ef2: 0x008c, 0x2ef3: 0x008c, 0x2ef4: 0x008c, 0x2ef5: 0x008c, - 0x2ef6: 0x008c, 0x2ef7: 0x008c, 0x2ef8: 0x008c, 0x2ef9: 0x008c, 0x2efa: 0x008c, 0x2efb: 0x008c, - 0x2efc: 0x008c, 0x2efd: 0x008c, 0x2efe: 0x008c, 0x2eff: 0x008c, - // Block 0xbc, offset 0x2f00 - 0x2f00: 0x008c, 0x2f01: 0x008c, 0x2f02: 0x008c, 0x2f03: 0x008c, 0x2f04: 0x008c, 0x2f05: 0x008c, - 0x2f06: 0x008c, 0x2f07: 0x008c, 0x2f08: 0x008c, 0x2f09: 0x008c, 0x2f0a: 0x008c, 0x2f0b: 0x008c, - 0x2f0c: 0x008c, 0x2f0d: 0x008c, 0x2f0e: 0x008c, 0x2f0f: 0x008c, 0x2f10: 0x008c, 0x2f11: 0x008c, - 0x2f12: 0x008c, 0x2f13: 0x008c, 0x2f14: 0x008c, 0x2f15: 0x008c, 0x2f16: 0x008c, 0x2f17: 0x008c, - 0x2f18: 0x008c, 0x2f19: 0x008c, 0x2f1a: 0x008c, 0x2f1b: 0x008c, 0x2f1c: 0x008c, 0x2f1d: 0x008c, - 0x2f1e: 0x0080, 0x2f1f: 0x0080, 0x2f20: 0x0040, 0x2f21: 0x0080, 0x2f22: 0x0080, 0x2f23: 0x0080, - 0x2f24: 0x0080, 0x2f25: 0x0080, 0x2f26: 0x0080, 0x2f27: 0x0080, 0x2f28: 0x0080, 0x2f29: 0x0080, - 0x2f2a: 0x0080, 0x2f2b: 0x0080, 0x2f2c: 0x0080, 0x2f2d: 0x0080, 0x2f2e: 0x0080, 0x2f2f: 0x0080, - 0x2f30: 0x0080, 0x2f31: 0x0080, 0x2f32: 0x0080, 0x2f33: 0x0080, 0x2f34: 0x0080, 0x2f35: 0x0080, - 0x2f36: 0x0080, 0x2f37: 0x0080, 0x2f38: 0x0080, 0x2f39: 0x0080, 0x2f3a: 0x0080, 0x2f3b: 0x0080, - 0x2f3c: 0x0080, 0x2f3d: 0x0080, 0x2f3e: 0x0080, - // Block 0xbd, offset 0x2f40 - 0x2f42: 0x0080, 0x2f43: 0x0080, 0x2f44: 0x0080, 0x2f45: 0x0080, - 0x2f46: 0x0080, 0x2f47: 0x0080, 0x2f4a: 0x0080, 0x2f4b: 0x0080, - 0x2f4c: 0x0080, 0x2f4d: 0x0080, 0x2f4e: 0x0080, 0x2f4f: 0x0080, - 0x2f52: 0x0080, 0x2f53: 0x0080, 0x2f54: 0x0080, 0x2f55: 0x0080, 0x2f56: 0x0080, 0x2f57: 0x0080, - 0x2f5a: 0x0080, 0x2f5b: 0x0080, 0x2f5c: 0x0080, - 0x2f60: 0x0080, 0x2f61: 0x0080, 0x2f62: 0x0080, 0x2f63: 0x0080, - 0x2f64: 0x0080, 0x2f65: 0x0080, 0x2f66: 0x0080, 0x2f68: 0x0080, 0x2f69: 0x0080, - 0x2f6a: 0x0080, 0x2f6b: 0x0080, 0x2f6c: 0x0080, 0x2f6d: 0x0080, 0x2f6e: 0x0080, - 0x2f79: 0x0040, 0x2f7a: 0x0040, 0x2f7b: 0x0040, - 0x2f7c: 0x0080, 0x2f7d: 0x0080, - // Block 0xbe, offset 0x2f80 - 0x2f80: 0x00c0, 0x2f81: 0x00c0, 0x2f82: 0x00c0, 0x2f83: 0x00c0, 0x2f84: 0x00c0, 0x2f85: 0x00c0, - 0x2f86: 0x00c0, 0x2f87: 0x00c0, 0x2f88: 0x00c0, 0x2f89: 0x00c0, 0x2f8a: 0x00c0, 0x2f8b: 0x00c0, - 0x2f8d: 0x00c0, 0x2f8e: 0x00c0, 0x2f8f: 0x00c0, 0x2f90: 0x00c0, 0x2f91: 0x00c0, - 0x2f92: 0x00c0, 0x2f93: 0x00c0, 0x2f94: 0x00c0, 0x2f95: 0x00c0, 0x2f96: 0x00c0, 0x2f97: 0x00c0, - 0x2f98: 0x00c0, 0x2f99: 0x00c0, 0x2f9a: 0x00c0, 0x2f9b: 0x00c0, 0x2f9c: 0x00c0, 0x2f9d: 0x00c0, - 0x2f9e: 0x00c0, 0x2f9f: 0x00c0, 0x2fa0: 0x00c0, 0x2fa1: 0x00c0, 0x2fa2: 0x00c0, 0x2fa3: 0x00c0, - 0x2fa4: 0x00c0, 0x2fa5: 0x00c0, 0x2fa6: 0x00c0, 0x2fa8: 0x00c0, 0x2fa9: 0x00c0, - 0x2faa: 0x00c0, 0x2fab: 0x00c0, 0x2fac: 0x00c0, 0x2fad: 0x00c0, 0x2fae: 0x00c0, 0x2faf: 0x00c0, - 0x2fb0: 0x00c0, 0x2fb1: 0x00c0, 0x2fb2: 0x00c0, 0x2fb3: 0x00c0, 0x2fb4: 0x00c0, 0x2fb5: 0x00c0, - 0x2fb6: 0x00c0, 0x2fb7: 0x00c0, 0x2fb8: 0x00c0, 0x2fb9: 0x00c0, 0x2fba: 0x00c0, - 0x2fbc: 0x00c0, 0x2fbd: 0x00c0, 0x2fbf: 0x00c0, - // Block 0xbf, offset 0x2fc0 - 0x2fc0: 0x00c0, 0x2fc1: 0x00c0, 0x2fc2: 0x00c0, 0x2fc3: 0x00c0, 0x2fc4: 0x00c0, 0x2fc5: 0x00c0, - 0x2fc6: 0x00c0, 0x2fc7: 0x00c0, 0x2fc8: 0x00c0, 0x2fc9: 0x00c0, 0x2fca: 0x00c0, 0x2fcb: 0x00c0, - 0x2fcc: 0x00c0, 0x2fcd: 0x00c0, 0x2fd0: 0x00c0, 0x2fd1: 0x00c0, - 0x2fd2: 0x00c0, 0x2fd3: 0x00c0, 0x2fd4: 0x00c0, 0x2fd5: 0x00c0, 0x2fd6: 0x00c0, 0x2fd7: 0x00c0, - 0x2fd8: 0x00c0, 0x2fd9: 0x00c0, 0x2fda: 0x00c0, 0x2fdb: 0x00c0, 0x2fdc: 0x00c0, 0x2fdd: 0x00c0, - // Block 0xc0, offset 0x3000 - 0x3000: 0x00c0, 0x3001: 0x00c0, 0x3002: 0x00c0, 0x3003: 0x00c0, 0x3004: 0x00c0, 0x3005: 0x00c0, - 0x3006: 0x00c0, 0x3007: 0x00c0, 0x3008: 0x00c0, 0x3009: 0x00c0, 0x300a: 0x00c0, 0x300b: 0x00c0, - 0x300c: 0x00c0, 0x300d: 0x00c0, 0x300e: 0x00c0, 0x300f: 0x00c0, 0x3010: 0x00c0, 0x3011: 0x00c0, - 0x3012: 0x00c0, 0x3013: 0x00c0, 0x3014: 0x00c0, 0x3015: 0x00c0, 0x3016: 0x00c0, 0x3017: 0x00c0, - 0x3018: 0x00c0, 0x3019: 0x00c0, 0x301a: 0x00c0, 0x301b: 0x00c0, 0x301c: 0x00c0, 0x301d: 0x00c0, - 0x301e: 0x00c0, 0x301f: 0x00c0, 0x3020: 0x00c0, 0x3021: 0x00c0, 0x3022: 0x00c0, 0x3023: 0x00c0, - 0x3024: 0x00c0, 0x3025: 0x00c0, 0x3026: 0x00c0, 0x3027: 0x00c0, 0x3028: 0x00c0, 0x3029: 0x00c0, - 0x302a: 0x00c0, 0x302b: 0x00c0, 0x302c: 0x00c0, 0x302d: 0x00c0, 0x302e: 0x00c0, 0x302f: 0x00c0, - 0x3030: 0x00c0, 0x3031: 0x00c0, 0x3032: 0x00c0, 0x3033: 0x00c0, 0x3034: 0x00c0, 0x3035: 0x00c0, - 0x3036: 0x00c0, 0x3037: 0x00c0, 0x3038: 0x00c0, 0x3039: 0x00c0, 0x303a: 0x00c0, - // Block 0xc1, offset 0x3040 - 0x3040: 0x0080, 0x3041: 0x0080, 0x3042: 0x0080, - 0x3047: 0x0080, 0x3048: 0x0080, 0x3049: 0x0080, 0x304a: 0x0080, 0x304b: 0x0080, - 0x304c: 0x0080, 0x304d: 0x0080, 0x304e: 0x0080, 0x304f: 0x0080, 0x3050: 0x0080, 0x3051: 0x0080, - 0x3052: 0x0080, 0x3053: 0x0080, 0x3054: 0x0080, 0x3055: 0x0080, 0x3056: 0x0080, 0x3057: 0x0080, - 0x3058: 0x0080, 0x3059: 0x0080, 0x305a: 0x0080, 0x305b: 0x0080, 0x305c: 0x0080, 0x305d: 0x0080, - 0x305e: 0x0080, 0x305f: 0x0080, 0x3060: 0x0080, 0x3061: 0x0080, 0x3062: 0x0080, 0x3063: 0x0080, - 0x3064: 0x0080, 0x3065: 0x0080, 0x3066: 0x0080, 0x3067: 0x0080, 0x3068: 0x0080, 0x3069: 0x0080, - 0x306a: 0x0080, 0x306b: 0x0080, 0x306c: 0x0080, 0x306d: 0x0080, 0x306e: 0x0080, 0x306f: 0x0080, - 0x3070: 0x0080, 0x3071: 0x0080, 0x3072: 0x0080, 0x3073: 0x0080, - 0x3077: 0x0080, 0x3078: 0x0080, 0x3079: 0x0080, 0x307a: 0x0080, 0x307b: 0x0080, - 0x307c: 0x0080, 0x307d: 0x0080, 0x307e: 0x0080, 0x307f: 0x0080, - // Block 0xc2, offset 0x3080 - 0x3080: 0x0088, 0x3081: 0x0088, 0x3082: 0x0088, 0x3083: 0x0088, 0x3084: 0x0088, 0x3085: 0x0088, - 0x3086: 0x0088, 0x3087: 0x0088, 0x3088: 0x0088, 0x3089: 0x0088, 0x308a: 0x0088, 0x308b: 0x0088, - 0x308c: 0x0088, 0x308d: 0x0088, 0x308e: 0x0088, 0x308f: 0x0088, 0x3090: 0x0088, 0x3091: 0x0088, - 0x3092: 0x0088, 0x3093: 0x0088, 0x3094: 0x0088, 0x3095: 0x0088, 0x3096: 0x0088, 0x3097: 0x0088, - 0x3098: 0x0088, 0x3099: 0x0088, 0x309a: 0x0088, 0x309b: 0x0088, 0x309c: 0x0088, 0x309d: 0x0088, - 0x309e: 0x0088, 0x309f: 0x0088, 0x30a0: 0x0088, 0x30a1: 0x0088, 0x30a2: 0x0088, 0x30a3: 0x0088, - 0x30a4: 0x0088, 0x30a5: 0x0088, 0x30a6: 0x0088, 0x30a7: 0x0088, 0x30a8: 0x0088, 0x30a9: 0x0088, - 0x30aa: 0x0088, 0x30ab: 0x0088, 0x30ac: 0x0088, 0x30ad: 0x0088, 0x30ae: 0x0088, 0x30af: 0x0088, - 0x30b0: 0x0088, 0x30b1: 0x0088, 0x30b2: 0x0088, 0x30b3: 0x0088, 0x30b4: 0x0088, 0x30b5: 0x0088, - 0x30b6: 0x0088, 0x30b7: 0x0088, 0x30b8: 0x0088, 0x30b9: 0x0088, 0x30ba: 0x0088, 0x30bb: 0x0088, - 0x30bc: 0x0088, 0x30bd: 0x0088, 0x30be: 0x0088, 0x30bf: 0x0088, - // Block 0xc3, offset 0x30c0 - 0x30c0: 0x0088, 0x30c1: 0x0088, 0x30c2: 0x0088, 0x30c3: 0x0088, 0x30c4: 0x0088, 0x30c5: 0x0088, - 0x30c6: 0x0088, 0x30c7: 0x0088, 0x30c8: 0x0088, 0x30c9: 0x0088, 0x30ca: 0x0088, 0x30cb: 0x0088, - 0x30cc: 0x0088, 0x30cd: 0x0088, 0x30ce: 0x0088, 0x30d0: 0x0080, 0x30d1: 0x0080, - 0x30d2: 0x0080, 0x30d3: 0x0080, 0x30d4: 0x0080, 0x30d5: 0x0080, 0x30d6: 0x0080, 0x30d7: 0x0080, - 0x30d8: 0x0080, 0x30d9: 0x0080, 0x30da: 0x0080, 0x30db: 0x0080, - 0x30e0: 0x0088, - // Block 0xc4, offset 0x3100 - 0x3110: 0x0080, 0x3111: 0x0080, - 0x3112: 0x0080, 0x3113: 0x0080, 0x3114: 0x0080, 0x3115: 0x0080, 0x3116: 0x0080, 0x3117: 0x0080, - 0x3118: 0x0080, 0x3119: 0x0080, 0x311a: 0x0080, 0x311b: 0x0080, 0x311c: 0x0080, 0x311d: 0x0080, - 0x311e: 0x0080, 0x311f: 0x0080, 0x3120: 0x0080, 0x3121: 0x0080, 0x3122: 0x0080, 0x3123: 0x0080, - 0x3124: 0x0080, 0x3125: 0x0080, 0x3126: 0x0080, 0x3127: 0x0080, 0x3128: 0x0080, 0x3129: 0x0080, - 0x312a: 0x0080, 0x312b: 0x0080, 0x312c: 0x0080, 0x312d: 0x0080, 0x312e: 0x0080, 0x312f: 0x0080, - 0x3130: 0x0080, 0x3131: 0x0080, 0x3132: 0x0080, 0x3133: 0x0080, 0x3134: 0x0080, 0x3135: 0x0080, - 0x3136: 0x0080, 0x3137: 0x0080, 0x3138: 0x0080, 0x3139: 0x0080, 0x313a: 0x0080, 0x313b: 0x0080, - 0x313c: 0x0080, 0x313d: 0x00c3, - // Block 0xc5, offset 0x3140 - 0x3140: 0x00c0, 0x3141: 0x00c0, 0x3142: 0x00c0, 0x3143: 0x00c0, 0x3144: 0x00c0, 0x3145: 0x00c0, - 0x3146: 0x00c0, 0x3147: 0x00c0, 0x3148: 0x00c0, 0x3149: 0x00c0, 0x314a: 0x00c0, 0x314b: 0x00c0, - 0x314c: 0x00c0, 0x314d: 0x00c0, 0x314e: 0x00c0, 0x314f: 0x00c0, 0x3150: 0x00c0, 0x3151: 0x00c0, - 0x3152: 0x00c0, 0x3153: 0x00c0, 0x3154: 0x00c0, 0x3155: 0x00c0, 0x3156: 0x00c0, 0x3157: 0x00c0, - 0x3158: 0x00c0, 0x3159: 0x00c0, 0x315a: 0x00c0, 0x315b: 0x00c0, 0x315c: 0x00c0, - 0x3160: 0x00c0, 0x3161: 0x00c0, 0x3162: 0x00c0, 0x3163: 0x00c0, - 0x3164: 0x00c0, 0x3165: 0x00c0, 0x3166: 0x00c0, 0x3167: 0x00c0, 0x3168: 0x00c0, 0x3169: 0x00c0, - 0x316a: 0x00c0, 0x316b: 0x00c0, 0x316c: 0x00c0, 0x316d: 0x00c0, 0x316e: 0x00c0, 0x316f: 0x00c0, - 0x3170: 0x00c0, 0x3171: 0x00c0, 0x3172: 0x00c0, 0x3173: 0x00c0, 0x3174: 0x00c0, 0x3175: 0x00c0, - 0x3176: 0x00c0, 0x3177: 0x00c0, 0x3178: 0x00c0, 0x3179: 0x00c0, 0x317a: 0x00c0, 0x317b: 0x00c0, - 0x317c: 0x00c0, 0x317d: 0x00c0, 0x317e: 0x00c0, 0x317f: 0x00c0, - // Block 0xc6, offset 0x3180 - 0x3180: 0x00c0, 0x3181: 0x00c0, 0x3182: 0x00c0, 0x3183: 0x00c0, 0x3184: 0x00c0, 0x3185: 0x00c0, - 0x3186: 0x00c0, 0x3187: 0x00c0, 0x3188: 0x00c0, 0x3189: 0x00c0, 0x318a: 0x00c0, 0x318b: 0x00c0, - 0x318c: 0x00c0, 0x318d: 0x00c0, 0x318e: 0x00c0, 0x318f: 0x00c0, 0x3190: 0x00c0, - 0x31a0: 0x00c3, 0x31a1: 0x0080, 0x31a2: 0x0080, 0x31a3: 0x0080, - 0x31a4: 0x0080, 0x31a5: 0x0080, 0x31a6: 0x0080, 0x31a7: 0x0080, 0x31a8: 0x0080, 0x31a9: 0x0080, - 0x31aa: 0x0080, 0x31ab: 0x0080, 0x31ac: 0x0080, 0x31ad: 0x0080, 0x31ae: 0x0080, 0x31af: 0x0080, - 0x31b0: 0x0080, 0x31b1: 0x0080, 0x31b2: 0x0080, 0x31b3: 0x0080, 0x31b4: 0x0080, 0x31b5: 0x0080, - 0x31b6: 0x0080, 0x31b7: 0x0080, 0x31b8: 0x0080, 0x31b9: 0x0080, 0x31ba: 0x0080, 0x31bb: 0x0080, - // Block 0xc7, offset 0x31c0 - 0x31c0: 0x00c0, 0x31c1: 0x00c0, 0x31c2: 0x00c0, 0x31c3: 0x00c0, 0x31c4: 0x00c0, 0x31c5: 0x00c0, - 0x31c6: 0x00c0, 0x31c7: 0x00c0, 0x31c8: 0x00c0, 0x31c9: 0x00c0, 0x31ca: 0x00c0, 0x31cb: 0x00c0, - 0x31cc: 0x00c0, 0x31cd: 0x00c0, 0x31ce: 0x00c0, 0x31cf: 0x00c0, 0x31d0: 0x00c0, 0x31d1: 0x00c0, - 0x31d2: 0x00c0, 0x31d3: 0x00c0, 0x31d4: 0x00c0, 0x31d5: 0x00c0, 0x31d6: 0x00c0, 0x31d7: 0x00c0, - 0x31d8: 0x00c0, 0x31d9: 0x00c0, 0x31da: 0x00c0, 0x31db: 0x00c0, 0x31dc: 0x00c0, 0x31dd: 0x00c0, - 0x31de: 0x00c0, 0x31df: 0x00c0, 0x31e0: 0x0080, 0x31e1: 0x0080, 0x31e2: 0x0080, 0x31e3: 0x0080, - 0x31ed: 0x00c0, 0x31ee: 0x00c0, 0x31ef: 0x00c0, - 0x31f0: 0x00c0, 0x31f1: 0x00c0, 0x31f2: 0x00c0, 0x31f3: 0x00c0, 0x31f4: 0x00c0, 0x31f5: 0x00c0, - 0x31f6: 0x00c0, 0x31f7: 0x00c0, 0x31f8: 0x00c0, 0x31f9: 0x00c0, 0x31fa: 0x00c0, 0x31fb: 0x00c0, - 0x31fc: 0x00c0, 0x31fd: 0x00c0, 0x31fe: 0x00c0, 0x31ff: 0x00c0, - // Block 0xc8, offset 0x3200 - 0x3200: 0x00c0, 0x3201: 0x0080, 0x3202: 0x00c0, 0x3203: 0x00c0, 0x3204: 0x00c0, 0x3205: 0x00c0, - 0x3206: 0x00c0, 0x3207: 0x00c0, 0x3208: 0x00c0, 0x3209: 0x00c0, 0x320a: 0x0080, - 0x3210: 0x00c0, 0x3211: 0x00c0, - 0x3212: 0x00c0, 0x3213: 0x00c0, 0x3214: 0x00c0, 0x3215: 0x00c0, 0x3216: 0x00c0, 0x3217: 0x00c0, - 0x3218: 0x00c0, 0x3219: 0x00c0, 0x321a: 0x00c0, 0x321b: 0x00c0, 0x321c: 0x00c0, 0x321d: 0x00c0, - 0x321e: 0x00c0, 0x321f: 0x00c0, 0x3220: 0x00c0, 0x3221: 0x00c0, 0x3222: 0x00c0, 0x3223: 0x00c0, - 0x3224: 0x00c0, 0x3225: 0x00c0, 0x3226: 0x00c0, 0x3227: 0x00c0, 0x3228: 0x00c0, 0x3229: 0x00c0, - 0x322a: 0x00c0, 0x322b: 0x00c0, 0x322c: 0x00c0, 0x322d: 0x00c0, 0x322e: 0x00c0, 0x322f: 0x00c0, - 0x3230: 0x00c0, 0x3231: 0x00c0, 0x3232: 0x00c0, 0x3233: 0x00c0, 0x3234: 0x00c0, 0x3235: 0x00c0, - 0x3236: 0x00c3, 0x3237: 0x00c3, 0x3238: 0x00c3, 0x3239: 0x00c3, 0x323a: 0x00c3, - // Block 0xc9, offset 0x3240 - 0x3240: 0x00c0, 0x3241: 0x00c0, 0x3242: 0x00c0, 0x3243: 0x00c0, 0x3244: 0x00c0, 0x3245: 0x00c0, - 0x3246: 0x00c0, 0x3247: 0x00c0, 0x3248: 0x00c0, 0x3249: 0x00c0, 0x324a: 0x00c0, 0x324b: 0x00c0, - 0x324c: 0x00c0, 0x324d: 0x00c0, 0x324e: 0x00c0, 0x324f: 0x00c0, 0x3250: 0x00c0, 0x3251: 0x00c0, - 0x3252: 0x00c0, 0x3253: 0x00c0, 0x3254: 0x00c0, 0x3255: 0x00c0, 0x3256: 0x00c0, 0x3257: 0x00c0, - 0x3258: 0x00c0, 0x3259: 0x00c0, 0x325a: 0x00c0, 0x325b: 0x00c0, 0x325c: 0x00c0, 0x325d: 0x00c0, - 0x325f: 0x0080, 0x3260: 0x00c0, 0x3261: 0x00c0, 0x3262: 0x00c0, 0x3263: 0x00c0, - 0x3264: 0x00c0, 0x3265: 0x00c0, 0x3266: 0x00c0, 0x3267: 0x00c0, 0x3268: 0x00c0, 0x3269: 0x00c0, - 0x326a: 0x00c0, 0x326b: 0x00c0, 0x326c: 0x00c0, 0x326d: 0x00c0, 0x326e: 0x00c0, 0x326f: 0x00c0, - 0x3270: 0x00c0, 0x3271: 0x00c0, 0x3272: 0x00c0, 0x3273: 0x00c0, 0x3274: 0x00c0, 0x3275: 0x00c0, - 0x3276: 0x00c0, 0x3277: 0x00c0, 0x3278: 0x00c0, 0x3279: 0x00c0, 0x327a: 0x00c0, 0x327b: 0x00c0, - 0x327c: 0x00c0, 0x327d: 0x00c0, 0x327e: 0x00c0, 0x327f: 0x00c0, - // Block 0xca, offset 0x3280 - 0x3280: 0x00c0, 0x3281: 0x00c0, 0x3282: 0x00c0, 0x3283: 0x00c0, - 0x3288: 0x00c0, 0x3289: 0x00c0, 0x328a: 0x00c0, 0x328b: 0x00c0, - 0x328c: 0x00c0, 0x328d: 0x00c0, 0x328e: 0x00c0, 0x328f: 0x00c0, 0x3290: 0x0080, 0x3291: 0x0080, - 0x3292: 0x0080, 0x3293: 0x0080, 0x3294: 0x0080, 0x3295: 0x0080, - // Block 0xcb, offset 0x32c0 - 0x32c0: 0x00c0, 0x32c1: 0x00c0, 0x32c2: 0x00c0, 0x32c3: 0x00c0, 0x32c4: 0x00c0, 0x32c5: 0x00c0, - 0x32c6: 0x00c0, 0x32c7: 0x00c0, 0x32c8: 0x00c0, 0x32c9: 0x00c0, 0x32ca: 0x00c0, 0x32cb: 0x00c0, - 0x32cc: 0x00c0, 0x32cd: 0x00c0, 0x32ce: 0x00c0, 0x32cf: 0x00c0, 0x32d0: 0x00c0, 0x32d1: 0x00c0, - 0x32d2: 0x00c0, 0x32d3: 0x00c0, 0x32d4: 0x00c0, 0x32d5: 0x00c0, 0x32d6: 0x00c0, 0x32d7: 0x00c0, - 0x32d8: 0x00c0, 0x32d9: 0x00c0, 0x32da: 0x00c0, 0x32db: 0x00c0, 0x32dc: 0x00c0, 0x32dd: 0x00c0, - 0x32e0: 0x00c0, 0x32e1: 0x00c0, 0x32e2: 0x00c0, 0x32e3: 0x00c0, - 0x32e4: 0x00c0, 0x32e5: 0x00c0, 0x32e6: 0x00c0, 0x32e7: 0x00c0, 0x32e8: 0x00c0, 0x32e9: 0x00c0, - 0x32f0: 0x00c0, 0x32f1: 0x00c0, 0x32f2: 0x00c0, 0x32f3: 0x00c0, 0x32f4: 0x00c0, 0x32f5: 0x00c0, - 0x32f6: 0x00c0, 0x32f7: 0x00c0, 0x32f8: 0x00c0, 0x32f9: 0x00c0, 0x32fa: 0x00c0, 0x32fb: 0x00c0, - 0x32fc: 0x00c0, 0x32fd: 0x00c0, 0x32fe: 0x00c0, 0x32ff: 0x00c0, - // Block 0xcc, offset 0x3300 - 0x3300: 0x00c0, 0x3301: 0x00c0, 0x3302: 0x00c0, 0x3303: 0x00c0, 0x3304: 0x00c0, 0x3305: 0x00c0, - 0x3306: 0x00c0, 0x3307: 0x00c0, 0x3308: 0x00c0, 0x3309: 0x00c0, 0x330a: 0x00c0, 0x330b: 0x00c0, - 0x330c: 0x00c0, 0x330d: 0x00c0, 0x330e: 0x00c0, 0x330f: 0x00c0, 0x3310: 0x00c0, 0x3311: 0x00c0, - 0x3312: 0x00c0, 0x3313: 0x00c0, - 0x3318: 0x00c0, 0x3319: 0x00c0, 0x331a: 0x00c0, 0x331b: 0x00c0, 0x331c: 0x00c0, 0x331d: 0x00c0, - 0x331e: 0x00c0, 0x331f: 0x00c0, 0x3320: 0x00c0, 0x3321: 0x00c0, 0x3322: 0x00c0, 0x3323: 0x00c0, - 0x3324: 0x00c0, 0x3325: 0x00c0, 0x3326: 0x00c0, 0x3327: 0x00c0, 0x3328: 0x00c0, 0x3329: 0x00c0, - 0x332a: 0x00c0, 0x332b: 0x00c0, 0x332c: 0x00c0, 0x332d: 0x00c0, 0x332e: 0x00c0, 0x332f: 0x00c0, - 0x3330: 0x00c0, 0x3331: 0x00c0, 0x3332: 0x00c0, 0x3333: 0x00c0, 0x3334: 0x00c0, 0x3335: 0x00c0, - 0x3336: 0x00c0, 0x3337: 0x00c0, 0x3338: 0x00c0, 0x3339: 0x00c0, 0x333a: 0x00c0, 0x333b: 0x00c0, - // Block 0xcd, offset 0x3340 - 0x3340: 0x00c0, 0x3341: 0x00c0, 0x3342: 0x00c0, 0x3343: 0x00c0, 0x3344: 0x00c0, 0x3345: 0x00c0, - 0x3346: 0x00c0, 0x3347: 0x00c0, 0x3348: 0x00c0, 0x3349: 0x00c0, 0x334a: 0x00c0, 0x334b: 0x00c0, - 0x334c: 0x00c0, 0x334d: 0x00c0, 0x334e: 0x00c0, 0x334f: 0x00c0, 0x3350: 0x00c0, 0x3351: 0x00c0, - 0x3352: 0x00c0, 0x3353: 0x00c0, 0x3354: 0x00c0, 0x3355: 0x00c0, 0x3356: 0x00c0, 0x3357: 0x00c0, - 0x3358: 0x00c0, 0x3359: 0x00c0, 0x335a: 0x00c0, 0x335b: 0x00c0, 0x335c: 0x00c0, 0x335d: 0x00c0, - 0x335e: 0x00c0, 0x335f: 0x00c0, 0x3360: 0x00c0, 0x3361: 0x00c0, 0x3362: 0x00c0, 0x3363: 0x00c0, - 0x3364: 0x00c0, 0x3365: 0x00c0, 0x3366: 0x00c0, 0x3367: 0x00c0, - 0x3370: 0x00c0, 0x3371: 0x00c0, 0x3372: 0x00c0, 0x3373: 0x00c0, 0x3374: 0x00c0, 0x3375: 0x00c0, - 0x3376: 0x00c0, 0x3377: 0x00c0, 0x3378: 0x00c0, 0x3379: 0x00c0, 0x337a: 0x00c0, 0x337b: 0x00c0, - 0x337c: 0x00c0, 0x337d: 0x00c0, 0x337e: 0x00c0, 0x337f: 0x00c0, - // Block 0xce, offset 0x3380 - 0x3380: 0x00c0, 0x3381: 0x00c0, 0x3382: 0x00c0, 0x3383: 0x00c0, 0x3384: 0x00c0, 0x3385: 0x00c0, - 0x3386: 0x00c0, 0x3387: 0x00c0, 0x3388: 0x00c0, 0x3389: 0x00c0, 0x338a: 0x00c0, 0x338b: 0x00c0, - 0x338c: 0x00c0, 0x338d: 0x00c0, 0x338e: 0x00c0, 0x338f: 0x00c0, 0x3390: 0x00c0, 0x3391: 0x00c0, - 0x3392: 0x00c0, 0x3393: 0x00c0, 0x3394: 0x00c0, 0x3395: 0x00c0, 0x3396: 0x00c0, 0x3397: 0x00c0, - 0x3398: 0x00c0, 0x3399: 0x00c0, 0x339a: 0x00c0, 0x339b: 0x00c0, 0x339c: 0x00c0, 0x339d: 0x00c0, - 0x339e: 0x00c0, 0x339f: 0x00c0, 0x33a0: 0x00c0, 0x33a1: 0x00c0, 0x33a2: 0x00c0, 0x33a3: 0x00c0, - 0x33af: 0x0080, - // Block 0xcf, offset 0x33c0 - 0x33c0: 0x00c0, 0x33c1: 0x00c0, 0x33c2: 0x00c0, 0x33c3: 0x00c0, 0x33c4: 0x00c0, 0x33c5: 0x00c0, - 0x33c6: 0x00c0, 0x33c7: 0x00c0, 0x33c8: 0x00c0, 0x33c9: 0x00c0, 0x33ca: 0x00c0, 0x33cb: 0x00c0, - 0x33cc: 0x00c0, 0x33cd: 0x00c0, 0x33ce: 0x00c0, 0x33cf: 0x00c0, 0x33d0: 0x00c0, 0x33d1: 0x00c0, - 0x33d2: 0x00c0, 0x33d3: 0x00c0, 0x33d4: 0x00c0, 0x33d5: 0x00c0, 0x33d6: 0x00c0, 0x33d7: 0x00c0, - 0x33d8: 0x00c0, 0x33d9: 0x00c0, 0x33da: 0x00c0, 0x33db: 0x00c0, 0x33dc: 0x00c0, 0x33dd: 0x00c0, - 0x33de: 0x00c0, 0x33df: 0x00c0, 0x33e0: 0x00c0, 0x33e1: 0x00c0, 0x33e2: 0x00c0, 0x33e3: 0x00c0, - 0x33e4: 0x00c0, 0x33e5: 0x00c0, 0x33e6: 0x00c0, 0x33e7: 0x00c0, 0x33e8: 0x00c0, 0x33e9: 0x00c0, - 0x33ea: 0x00c0, 0x33eb: 0x00c0, 0x33ec: 0x00c0, 0x33ed: 0x00c0, 0x33ee: 0x00c0, 0x33ef: 0x00c0, - 0x33f0: 0x00c0, 0x33f1: 0x00c0, 0x33f2: 0x00c0, 0x33f3: 0x00c0, 0x33f4: 0x00c0, 0x33f5: 0x00c0, - 0x33f6: 0x00c0, - // Block 0xd0, offset 0x3400 - 0x3400: 0x00c0, 0x3401: 0x00c0, 0x3402: 0x00c0, 0x3403: 0x00c0, 0x3404: 0x00c0, 0x3405: 0x00c0, - 0x3406: 0x00c0, 0x3407: 0x00c0, 0x3408: 0x00c0, 0x3409: 0x00c0, 0x340a: 0x00c0, 0x340b: 0x00c0, - 0x340c: 0x00c0, 0x340d: 0x00c0, 0x340e: 0x00c0, 0x340f: 0x00c0, 0x3410: 0x00c0, 0x3411: 0x00c0, - 0x3412: 0x00c0, 0x3413: 0x00c0, 0x3414: 0x00c0, 0x3415: 0x00c0, - 0x3420: 0x00c0, 0x3421: 0x00c0, 0x3422: 0x00c0, 0x3423: 0x00c0, - 0x3424: 0x00c0, 0x3425: 0x00c0, 0x3426: 0x00c0, 0x3427: 0x00c0, - // Block 0xd1, offset 0x3440 - 0x3440: 0x00c0, 0x3441: 0x00c0, 0x3442: 0x00c0, 0x3443: 0x00c0, 0x3444: 0x00c0, 0x3445: 0x00c0, - 0x3448: 0x00c0, 0x344a: 0x00c0, 0x344b: 0x00c0, - 0x344c: 0x00c0, 0x344d: 0x00c0, 0x344e: 0x00c0, 0x344f: 0x00c0, 0x3450: 0x00c0, 0x3451: 0x00c0, - 0x3452: 0x00c0, 0x3453: 0x00c0, 0x3454: 0x00c0, 0x3455: 0x00c0, 0x3456: 0x00c0, 0x3457: 0x00c0, - 0x3458: 0x00c0, 0x3459: 0x00c0, 0x345a: 0x00c0, 0x345b: 0x00c0, 0x345c: 0x00c0, 0x345d: 0x00c0, - 0x345e: 0x00c0, 0x345f: 0x00c0, 0x3460: 0x00c0, 0x3461: 0x00c0, 0x3462: 0x00c0, 0x3463: 0x00c0, - 0x3464: 0x00c0, 0x3465: 0x00c0, 0x3466: 0x00c0, 0x3467: 0x00c0, 0x3468: 0x00c0, 0x3469: 0x00c0, - 0x346a: 0x00c0, 0x346b: 0x00c0, 0x346c: 0x00c0, 0x346d: 0x00c0, 0x346e: 0x00c0, 0x346f: 0x00c0, - 0x3470: 0x00c0, 0x3471: 0x00c0, 0x3472: 0x00c0, 0x3473: 0x00c0, 0x3474: 0x00c0, 0x3475: 0x00c0, - 0x3477: 0x00c0, 0x3478: 0x00c0, - 0x347c: 0x00c0, 0x347f: 0x00c0, - // Block 0xd2, offset 0x3480 - 0x3480: 0x00c0, 0x3481: 0x00c0, 0x3482: 0x00c0, 0x3483: 0x00c0, 0x3484: 0x00c0, 0x3485: 0x00c0, - 0x3486: 0x00c0, 0x3487: 0x00c0, 0x3488: 0x00c0, 0x3489: 0x00c0, 0x348a: 0x00c0, 0x348b: 0x00c0, - 0x348c: 0x00c0, 0x348d: 0x00c0, 0x348e: 0x00c0, 0x348f: 0x00c0, 0x3490: 0x00c0, 0x3491: 0x00c0, - 0x3492: 0x00c0, 0x3493: 0x00c0, 0x3494: 0x00c0, 0x3495: 0x00c0, 0x3497: 0x0080, - 0x3498: 0x0080, 0x3499: 0x0080, 0x349a: 0x0080, 0x349b: 0x0080, 0x349c: 0x0080, 0x349d: 0x0080, - 0x349e: 0x0080, 0x349f: 0x0080, 0x34a0: 0x00c0, 0x34a1: 0x00c0, 0x34a2: 0x00c0, 0x34a3: 0x00c0, - 0x34a4: 0x00c0, 0x34a5: 0x00c0, 0x34a6: 0x00c0, 0x34a7: 0x00c0, 0x34a8: 0x00c0, 0x34a9: 0x00c0, - 0x34aa: 0x00c0, 0x34ab: 0x00c0, 0x34ac: 0x00c0, 0x34ad: 0x00c0, 0x34ae: 0x00c0, 0x34af: 0x00c0, - 0x34b0: 0x00c0, 0x34b1: 0x00c0, 0x34b2: 0x00c0, 0x34b3: 0x00c0, 0x34b4: 0x00c0, 0x34b5: 0x00c0, - 0x34b6: 0x00c0, 0x34b7: 0x0080, 0x34b8: 0x0080, 0x34b9: 0x0080, 0x34ba: 0x0080, 0x34bb: 0x0080, - 0x34bc: 0x0080, 0x34bd: 0x0080, 0x34be: 0x0080, 0x34bf: 0x0080, - // Block 0xd3, offset 0x34c0 - 0x34c0: 0x00c0, 0x34c1: 0x00c0, 0x34c2: 0x00c0, 0x34c3: 0x00c0, 0x34c4: 0x00c0, 0x34c5: 0x00c0, - 0x34c6: 0x00c0, 0x34c7: 0x00c0, 0x34c8: 0x00c0, 0x34c9: 0x00c0, 0x34ca: 0x00c0, 0x34cb: 0x00c0, - 0x34cc: 0x00c0, 0x34cd: 0x00c0, 0x34ce: 0x00c0, 0x34cf: 0x00c0, 0x34d0: 0x00c0, 0x34d1: 0x00c0, - 0x34d2: 0x00c0, 0x34d3: 0x00c0, 0x34d4: 0x00c0, 0x34d5: 0x00c0, 0x34d6: 0x00c0, 0x34d7: 0x00c0, - 0x34d8: 0x00c0, 0x34d9: 0x00c0, 0x34da: 0x00c0, 0x34db: 0x00c0, 0x34dc: 0x00c0, 0x34dd: 0x00c0, - 0x34de: 0x00c0, - 0x34e7: 0x0080, 0x34e8: 0x0080, 0x34e9: 0x0080, - 0x34ea: 0x0080, 0x34eb: 0x0080, 0x34ec: 0x0080, 0x34ed: 0x0080, 0x34ee: 0x0080, 0x34ef: 0x0080, - // Block 0xd4, offset 0x3500 - 0x3520: 0x00c0, 0x3521: 0x00c0, 0x3522: 0x00c0, 0x3523: 0x00c0, - 0x3524: 0x00c0, 0x3525: 0x00c0, 0x3526: 0x00c0, 0x3527: 0x00c0, 0x3528: 0x00c0, 0x3529: 0x00c0, - 0x352a: 0x00c0, 0x352b: 0x00c0, 0x352c: 0x00c0, 0x352d: 0x00c0, 0x352e: 0x00c0, 0x352f: 0x00c0, - 0x3530: 0x00c0, 0x3531: 0x00c0, 0x3532: 0x00c0, 0x3534: 0x00c0, 0x3535: 0x00c0, - 0x353b: 0x0080, - 0x353c: 0x0080, 0x353d: 0x0080, 0x353e: 0x0080, 0x353f: 0x0080, - // Block 0xd5, offset 0x3540 - 0x3540: 0x00c0, 0x3541: 0x00c0, 0x3542: 0x00c0, 0x3543: 0x00c0, 0x3544: 0x00c0, 0x3545: 0x00c0, - 0x3546: 0x00c0, 0x3547: 0x00c0, 0x3548: 0x00c0, 0x3549: 0x00c0, 0x354a: 0x00c0, 0x354b: 0x00c0, - 0x354c: 0x00c0, 0x354d: 0x00c0, 0x354e: 0x00c0, 0x354f: 0x00c0, 0x3550: 0x00c0, 0x3551: 0x00c0, - 0x3552: 0x00c0, 0x3553: 0x00c0, 0x3554: 0x00c0, 0x3555: 0x00c0, 0x3556: 0x0080, 0x3557: 0x0080, - 0x3558: 0x0080, 0x3559: 0x0080, 0x355a: 0x0080, 0x355b: 0x0080, - 0x355f: 0x0080, 0x3560: 0x00c0, 0x3561: 0x00c0, 0x3562: 0x00c0, 0x3563: 0x00c0, - 0x3564: 0x00c0, 0x3565: 0x00c0, 0x3566: 0x00c0, 0x3567: 0x00c0, 0x3568: 0x00c0, 0x3569: 0x00c0, - 0x356a: 0x00c0, 0x356b: 0x00c0, 0x356c: 0x00c0, 0x356d: 0x00c0, 0x356e: 0x00c0, 0x356f: 0x00c0, - 0x3570: 0x00c0, 0x3571: 0x00c0, 0x3572: 0x00c0, 0x3573: 0x00c0, 0x3574: 0x00c0, 0x3575: 0x00c0, - 0x3576: 0x00c0, 0x3577: 0x00c0, 0x3578: 0x00c0, 0x3579: 0x00c0, - 0x357f: 0x0080, - // Block 0xd6, offset 0x3580 - 0x3580: 0x00c0, 0x3581: 0x00c0, 0x3582: 0x00c0, 0x3583: 0x00c0, 0x3584: 0x00c0, 0x3585: 0x00c0, - 0x3586: 0x00c0, 0x3587: 0x00c0, 0x3588: 0x00c0, 0x3589: 0x00c0, 0x358a: 0x00c0, 0x358b: 0x00c0, - 0x358c: 0x00c0, 0x358d: 0x00c0, 0x358e: 0x00c0, 0x358f: 0x00c0, 0x3590: 0x00c0, 0x3591: 0x00c0, - 0x3592: 0x00c0, 0x3593: 0x00c0, 0x3594: 0x00c0, 0x3595: 0x00c0, 0x3596: 0x00c0, 0x3597: 0x00c0, - 0x3598: 0x00c0, 0x3599: 0x00c0, 0x359a: 0x00c0, 0x359b: 0x00c0, 0x359c: 0x00c0, 0x359d: 0x00c0, - 0x359e: 0x00c0, 0x359f: 0x00c0, 0x35a0: 0x00c0, 0x35a1: 0x00c0, 0x35a2: 0x00c0, 0x35a3: 0x00c0, - 0x35a4: 0x00c0, 0x35a5: 0x00c0, 0x35a6: 0x00c0, 0x35a7: 0x00c0, 0x35a8: 0x00c0, 0x35a9: 0x00c0, - 0x35aa: 0x00c0, 0x35ab: 0x00c0, 0x35ac: 0x00c0, 0x35ad: 0x00c0, 0x35ae: 0x00c0, 0x35af: 0x00c0, - 0x35b0: 0x00c0, 0x35b1: 0x00c0, 0x35b2: 0x00c0, 0x35b3: 0x00c0, 0x35b4: 0x00c0, 0x35b5: 0x00c0, - 0x35b6: 0x00c0, 0x35b7: 0x00c0, - 0x35bc: 0x0080, 0x35bd: 0x0080, 0x35be: 0x00c0, 0x35bf: 0x00c0, - // Block 0xd7, offset 0x35c0 - 0x35c0: 0x00c0, 0x35c1: 0x00c3, 0x35c2: 0x00c3, 0x35c3: 0x00c3, 0x35c5: 0x00c3, - 0x35c6: 0x00c3, - 0x35cc: 0x00c3, 0x35cd: 0x00c3, 0x35ce: 0x00c3, 0x35cf: 0x00c3, 0x35d0: 0x00c0, 0x35d1: 0x00c0, - 0x35d2: 0x00c0, 0x35d3: 0x00c0, 0x35d5: 0x00c0, 0x35d6: 0x00c0, 0x35d7: 0x00c0, - 0x35d9: 0x00c0, 0x35da: 0x00c0, 0x35db: 0x00c0, 0x35dc: 0x00c0, 0x35dd: 0x00c0, - 0x35de: 0x00c0, 0x35df: 0x00c0, 0x35e0: 0x00c0, 0x35e1: 0x00c0, 0x35e2: 0x00c0, 0x35e3: 0x00c0, - 0x35e4: 0x00c0, 0x35e5: 0x00c0, 0x35e6: 0x00c0, 0x35e7: 0x00c0, 0x35e8: 0x00c0, 0x35e9: 0x00c0, - 0x35ea: 0x00c0, 0x35eb: 0x00c0, 0x35ec: 0x00c0, 0x35ed: 0x00c0, 0x35ee: 0x00c0, 0x35ef: 0x00c0, - 0x35f0: 0x00c0, 0x35f1: 0x00c0, 0x35f2: 0x00c0, 0x35f3: 0x00c0, - 0x35f8: 0x00c3, 0x35f9: 0x00c3, 0x35fa: 0x00c3, - 0x35ff: 0x00c6, - // Block 0xd8, offset 0x3600 - 0x3600: 0x0080, 0x3601: 0x0080, 0x3602: 0x0080, 0x3603: 0x0080, 0x3604: 0x0080, 0x3605: 0x0080, - 0x3606: 0x0080, 0x3607: 0x0080, - 0x3610: 0x0080, 0x3611: 0x0080, - 0x3612: 0x0080, 0x3613: 0x0080, 0x3614: 0x0080, 0x3615: 0x0080, 0x3616: 0x0080, 0x3617: 0x0080, - 0x3618: 0x0080, - 0x3620: 0x00c0, 0x3621: 0x00c0, 0x3622: 0x00c0, 0x3623: 0x00c0, - 0x3624: 0x00c0, 0x3625: 0x00c0, 0x3626: 0x00c0, 0x3627: 0x00c0, 0x3628: 0x00c0, 0x3629: 0x00c0, - 0x362a: 0x00c0, 0x362b: 0x00c0, 0x362c: 0x00c0, 0x362d: 0x00c0, 0x362e: 0x00c0, 0x362f: 0x00c0, - 0x3630: 0x00c0, 0x3631: 0x00c0, 0x3632: 0x00c0, 0x3633: 0x00c0, 0x3634: 0x00c0, 0x3635: 0x00c0, - 0x3636: 0x00c0, 0x3637: 0x00c0, 0x3638: 0x00c0, 0x3639: 0x00c0, 0x363a: 0x00c0, 0x363b: 0x00c0, - 0x363c: 0x00c0, 0x363d: 0x0080, 0x363e: 0x0080, 0x363f: 0x0080, - // Block 0xd9, offset 0x3640 - 0x3640: 0x00c0, 0x3641: 0x00c0, 0x3642: 0x00c0, 0x3643: 0x00c0, 0x3644: 0x00c0, 0x3645: 0x00c0, - 0x3646: 0x00c0, 0x3647: 0x00c0, 0x3648: 0x00c0, 0x3649: 0x00c0, 0x364a: 0x00c0, 0x364b: 0x00c0, - 0x364c: 0x00c0, 0x364d: 0x00c0, 0x364e: 0x00c0, 0x364f: 0x00c0, 0x3650: 0x00c0, 0x3651: 0x00c0, - 0x3652: 0x00c0, 0x3653: 0x00c0, 0x3654: 0x00c0, 0x3655: 0x00c0, 0x3656: 0x00c0, 0x3657: 0x00c0, - 0x3658: 0x00c0, 0x3659: 0x00c0, 0x365a: 0x00c0, 0x365b: 0x00c0, 0x365c: 0x00c0, 0x365d: 0x0080, - 0x365e: 0x0080, 0x365f: 0x0080, - // Block 0xda, offset 0x3680 - 0x3680: 0x00c2, 0x3681: 0x00c2, 0x3682: 0x00c2, 0x3683: 0x00c2, 0x3684: 0x00c2, 0x3685: 0x00c4, - 0x3686: 0x00c0, 0x3687: 0x00c4, 0x3688: 0x0080, 0x3689: 0x00c4, 0x368a: 0x00c4, 0x368b: 0x00c0, - 0x368c: 0x00c0, 0x368d: 0x00c1, 0x368e: 0x00c4, 0x368f: 0x00c4, 0x3690: 0x00c4, 0x3691: 0x00c4, - 0x3692: 0x00c4, 0x3693: 0x00c2, 0x3694: 0x00c2, 0x3695: 0x00c2, 0x3696: 0x00c2, 0x3697: 0x00c1, - 0x3698: 0x00c2, 0x3699: 0x00c2, 0x369a: 0x00c2, 0x369b: 0x00c2, 0x369c: 0x00c2, 0x369d: 0x00c4, - 0x369e: 0x00c2, 0x369f: 0x00c2, 0x36a0: 0x00c2, 0x36a1: 0x00c4, 0x36a2: 0x00c0, 0x36a3: 0x00c0, - 0x36a4: 0x00c4, 0x36a5: 0x00c3, 0x36a6: 0x00c3, - 0x36ab: 0x0082, 0x36ac: 0x0082, 0x36ad: 0x0082, 0x36ae: 0x0082, 0x36af: 0x0084, - 0x36b0: 0x0080, 0x36b1: 0x0080, 0x36b2: 0x0080, 0x36b3: 0x0080, 0x36b4: 0x0080, 0x36b5: 0x0080, - 0x36b6: 0x0080, - // Block 0xdb, offset 0x36c0 - 0x36c0: 0x00c0, 0x36c1: 0x00c0, 0x36c2: 0x00c0, 0x36c3: 0x00c0, 0x36c4: 0x00c0, 0x36c5: 0x00c0, - 0x36c6: 0x00c0, 0x36c7: 0x00c0, 0x36c8: 0x00c0, 0x36c9: 0x00c0, 0x36ca: 0x00c0, 0x36cb: 0x00c0, - 0x36cc: 0x00c0, 0x36cd: 0x00c0, 0x36ce: 0x00c0, 0x36cf: 0x00c0, 0x36d0: 0x00c0, 0x36d1: 0x00c0, - 0x36d2: 0x00c0, 0x36d3: 0x00c0, 0x36d4: 0x00c0, 0x36d5: 0x00c0, 0x36d6: 0x00c0, 0x36d7: 0x00c0, - 0x36d8: 0x00c0, 0x36d9: 0x00c0, 0x36da: 0x00c0, 0x36db: 0x00c0, 0x36dc: 0x00c0, 0x36dd: 0x00c0, - 0x36de: 0x00c0, 0x36df: 0x00c0, 0x36e0: 0x00c0, 0x36e1: 0x00c0, 0x36e2: 0x00c0, 0x36e3: 0x00c0, - 0x36e4: 0x00c0, 0x36e5: 0x00c0, 0x36e6: 0x00c0, 0x36e7: 0x00c0, 0x36e8: 0x00c0, 0x36e9: 0x00c0, - 0x36ea: 0x00c0, 0x36eb: 0x00c0, 0x36ec: 0x00c0, 0x36ed: 0x00c0, 0x36ee: 0x00c0, 0x36ef: 0x00c0, - 0x36f0: 0x00c0, 0x36f1: 0x00c0, 0x36f2: 0x00c0, 0x36f3: 0x00c0, 0x36f4: 0x00c0, 0x36f5: 0x00c0, - 0x36f9: 0x0080, 0x36fa: 0x0080, 0x36fb: 0x0080, - 0x36fc: 0x0080, 0x36fd: 0x0080, 0x36fe: 0x0080, 0x36ff: 0x0080, - // Block 0xdc, offset 0x3700 - 0x3700: 0x00c0, 0x3701: 0x00c0, 0x3702: 0x00c0, 0x3703: 0x00c0, 0x3704: 0x00c0, 0x3705: 0x00c0, - 0x3706: 0x00c0, 0x3707: 0x00c0, 0x3708: 0x00c0, 0x3709: 0x00c0, 0x370a: 0x00c0, 0x370b: 0x00c0, - 0x370c: 0x00c0, 0x370d: 0x00c0, 0x370e: 0x00c0, 0x370f: 0x00c0, 0x3710: 0x00c0, 0x3711: 0x00c0, - 0x3712: 0x00c0, 0x3713: 0x00c0, 0x3714: 0x00c0, 0x3715: 0x00c0, - 0x3718: 0x0080, 0x3719: 0x0080, 0x371a: 0x0080, 0x371b: 0x0080, 0x371c: 0x0080, 0x371d: 0x0080, - 0x371e: 0x0080, 0x371f: 0x0080, 0x3720: 0x00c0, 0x3721: 0x00c0, 0x3722: 0x00c0, 0x3723: 0x00c0, - 0x3724: 0x00c0, 0x3725: 0x00c0, 0x3726: 0x00c0, 0x3727: 0x00c0, 0x3728: 0x00c0, 0x3729: 0x00c0, - 0x372a: 0x00c0, 0x372b: 0x00c0, 0x372c: 0x00c0, 0x372d: 0x00c0, 0x372e: 0x00c0, 0x372f: 0x00c0, - 0x3730: 0x00c0, 0x3731: 0x00c0, 0x3732: 0x00c0, - 0x3738: 0x0080, 0x3739: 0x0080, 0x373a: 0x0080, 0x373b: 0x0080, - 0x373c: 0x0080, 0x373d: 0x0080, 0x373e: 0x0080, 0x373f: 0x0080, - // Block 0xdd, offset 0x3740 - 0x3740: 0x00c2, 0x3741: 0x00c4, 0x3742: 0x00c2, 0x3743: 0x00c4, 0x3744: 0x00c4, 0x3745: 0x00c4, - 0x3746: 0x00c2, 0x3747: 0x00c2, 0x3748: 0x00c2, 0x3749: 0x00c4, 0x374a: 0x00c2, 0x374b: 0x00c2, - 0x374c: 0x00c4, 0x374d: 0x00c2, 0x374e: 0x00c4, 0x374f: 0x00c4, 0x3750: 0x00c2, 0x3751: 0x00c4, - 0x3759: 0x0080, 0x375a: 0x0080, 0x375b: 0x0080, 0x375c: 0x0080, - 0x3769: 0x0084, - 0x376a: 0x0084, 0x376b: 0x0084, 0x376c: 0x0084, 0x376d: 0x0082, 0x376e: 0x0082, 0x376f: 0x0080, - // Block 0xde, offset 0x3780 - 0x3780: 0x00c0, 0x3781: 0x00c0, 0x3782: 0x00c0, 0x3783: 0x00c0, 0x3784: 0x00c0, 0x3785: 0x00c0, - 0x3786: 0x00c0, 0x3787: 0x00c0, 0x3788: 0x00c0, 0x3789: 0x00c0, 0x378a: 0x00c0, 0x378b: 0x00c0, - 0x378c: 0x00c0, 0x378d: 0x00c0, 0x378e: 0x00c0, 0x378f: 0x00c0, 0x3790: 0x00c0, 0x3791: 0x00c0, - 0x3792: 0x00c0, 0x3793: 0x00c0, 0x3794: 0x00c0, 0x3795: 0x00c0, 0x3796: 0x00c0, 0x3797: 0x00c0, - 0x3798: 0x00c0, 0x3799: 0x00c0, 0x379a: 0x00c0, 0x379b: 0x00c0, 0x379c: 0x00c0, 0x379d: 0x00c0, - 0x379e: 0x00c0, 0x379f: 0x00c0, 0x37a0: 0x00c0, 0x37a1: 0x00c0, 0x37a2: 0x00c0, 0x37a3: 0x00c0, - 0x37a4: 0x00c0, 0x37a5: 0x00c0, 0x37a6: 0x00c0, 0x37a7: 0x00c0, 0x37a8: 0x00c0, 0x37a9: 0x00c0, - 0x37aa: 0x00c0, 0x37ab: 0x00c0, 0x37ac: 0x00c0, 0x37ad: 0x00c0, 0x37ae: 0x00c0, 0x37af: 0x00c0, - 0x37b0: 0x00c0, 0x37b1: 0x00c0, 0x37b2: 0x00c0, - // Block 0xdf, offset 0x37c0 - 0x37c0: 0x00c0, 0x37c1: 0x00c0, 0x37c2: 0x00c0, 0x37c3: 0x00c0, 0x37c4: 0x00c0, 0x37c5: 0x00c0, - 0x37c6: 0x00c0, 0x37c7: 0x00c0, 0x37c8: 0x00c0, 0x37c9: 0x00c0, 0x37ca: 0x00c0, 0x37cb: 0x00c0, - 0x37cc: 0x00c0, 0x37cd: 0x00c0, 0x37ce: 0x00c0, 0x37cf: 0x00c0, 0x37d0: 0x00c0, 0x37d1: 0x00c0, - 0x37d2: 0x00c0, 0x37d3: 0x00c0, 0x37d4: 0x00c0, 0x37d5: 0x00c0, 0x37d6: 0x00c0, 0x37d7: 0x00c0, - 0x37d8: 0x00c0, 0x37d9: 0x00c0, 0x37da: 0x00c0, 0x37db: 0x00c0, 0x37dc: 0x00c0, 0x37dd: 0x00c0, - 0x37de: 0x00c0, 0x37df: 0x00c0, 0x37e0: 0x00c0, 0x37e1: 0x00c0, 0x37e2: 0x00c0, 0x37e3: 0x00c0, - 0x37e4: 0x00c0, 0x37e5: 0x00c0, 0x37e6: 0x00c0, 0x37e7: 0x00c0, 0x37e8: 0x00c0, 0x37e9: 0x00c0, - 0x37ea: 0x00c0, 0x37eb: 0x00c0, 0x37ec: 0x00c0, 0x37ed: 0x00c0, 0x37ee: 0x00c0, 0x37ef: 0x00c0, - 0x37f0: 0x00c0, 0x37f1: 0x00c0, 0x37f2: 0x00c0, - 0x37fa: 0x0080, 0x37fb: 0x0080, - 0x37fc: 0x0080, 0x37fd: 0x0080, 0x37fe: 0x0080, 0x37ff: 0x0080, - // Block 0xe0, offset 0x3800 - 0x3820: 0x0080, 0x3821: 0x0080, 0x3822: 0x0080, 0x3823: 0x0080, - 0x3824: 0x0080, 0x3825: 0x0080, 0x3826: 0x0080, 0x3827: 0x0080, 0x3828: 0x0080, 0x3829: 0x0080, - 0x382a: 0x0080, 0x382b: 0x0080, 0x382c: 0x0080, 0x382d: 0x0080, 0x382e: 0x0080, 0x382f: 0x0080, - 0x3830: 0x0080, 0x3831: 0x0080, 0x3832: 0x0080, 0x3833: 0x0080, 0x3834: 0x0080, 0x3835: 0x0080, - 0x3836: 0x0080, 0x3837: 0x0080, 0x3838: 0x0080, 0x3839: 0x0080, 0x383a: 0x0080, 0x383b: 0x0080, - 0x383c: 0x0080, 0x383d: 0x0080, 0x383e: 0x0080, - // Block 0xe1, offset 0x3840 - 0x3840: 0x00c0, 0x3841: 0x00c3, 0x3842: 0x00c0, 0x3843: 0x00c0, 0x3844: 0x00c0, 0x3845: 0x00c0, - 0x3846: 0x00c0, 0x3847: 0x00c0, 0x3848: 0x00c0, 0x3849: 0x00c0, 0x384a: 0x00c0, 0x384b: 0x00c0, - 0x384c: 0x00c0, 0x384d: 0x00c0, 0x384e: 0x00c0, 0x384f: 0x00c0, 0x3850: 0x00c0, 0x3851: 0x00c0, - 0x3852: 0x00c0, 0x3853: 0x00c0, 0x3854: 0x00c0, 0x3855: 0x00c0, 0x3856: 0x00c0, 0x3857: 0x00c0, - 0x3858: 0x00c0, 0x3859: 0x00c0, 0x385a: 0x00c0, 0x385b: 0x00c0, 0x385c: 0x00c0, 0x385d: 0x00c0, - 0x385e: 0x00c0, 0x385f: 0x00c0, 0x3860: 0x00c0, 0x3861: 0x00c0, 0x3862: 0x00c0, 0x3863: 0x00c0, - 0x3864: 0x00c0, 0x3865: 0x00c0, 0x3866: 0x00c0, 0x3867: 0x00c0, 0x3868: 0x00c0, 0x3869: 0x00c0, - 0x386a: 0x00c0, 0x386b: 0x00c0, 0x386c: 0x00c0, 0x386d: 0x00c0, 0x386e: 0x00c0, 0x386f: 0x00c0, - 0x3870: 0x00c0, 0x3871: 0x00c0, 0x3872: 0x00c0, 0x3873: 0x00c0, 0x3874: 0x00c0, 0x3875: 0x00c0, - 0x3876: 0x00c0, 0x3877: 0x00c0, 0x3878: 0x00c3, 0x3879: 0x00c3, 0x387a: 0x00c3, 0x387b: 0x00c3, - 0x387c: 0x00c3, 0x387d: 0x00c3, 0x387e: 0x00c3, 0x387f: 0x00c3, - // Block 0xe2, offset 0x3880 - 0x3880: 0x00c3, 0x3881: 0x00c3, 0x3882: 0x00c3, 0x3883: 0x00c3, 0x3884: 0x00c3, 0x3885: 0x00c3, - 0x3886: 0x00c6, 0x3887: 0x0080, 0x3888: 0x0080, 0x3889: 0x0080, 0x388a: 0x0080, 0x388b: 0x0080, - 0x388c: 0x0080, 0x388d: 0x0080, - 0x3892: 0x0080, 0x3893: 0x0080, 0x3894: 0x0080, 0x3895: 0x0080, 0x3896: 0x0080, 0x3897: 0x0080, - 0x3898: 0x0080, 0x3899: 0x0080, 0x389a: 0x0080, 0x389b: 0x0080, 0x389c: 0x0080, 0x389d: 0x0080, - 0x389e: 0x0080, 0x389f: 0x0080, 0x38a0: 0x0080, 0x38a1: 0x0080, 0x38a2: 0x0080, 0x38a3: 0x0080, - 0x38a4: 0x0080, 0x38a5: 0x0080, 0x38a6: 0x00c0, 0x38a7: 0x00c0, 0x38a8: 0x00c0, 0x38a9: 0x00c0, - 0x38aa: 0x00c0, 0x38ab: 0x00c0, 0x38ac: 0x00c0, 0x38ad: 0x00c0, 0x38ae: 0x00c0, 0x38af: 0x00c0, - 0x38bf: 0x00c6, - // Block 0xe3, offset 0x38c0 - 0x38c0: 0x00c3, 0x38c1: 0x00c3, 0x38c2: 0x00c0, 0x38c3: 0x00c0, 0x38c4: 0x00c0, 0x38c5: 0x00c0, - 0x38c6: 0x00c0, 0x38c7: 0x00c0, 0x38c8: 0x00c0, 0x38c9: 0x00c0, 0x38ca: 0x00c0, 0x38cb: 0x00c0, - 0x38cc: 0x00c0, 0x38cd: 0x00c0, 0x38ce: 0x00c0, 0x38cf: 0x00c0, 0x38d0: 0x00c0, 0x38d1: 0x00c0, - 0x38d2: 0x00c0, 0x38d3: 0x00c0, 0x38d4: 0x00c0, 0x38d5: 0x00c0, 0x38d6: 0x00c0, 0x38d7: 0x00c0, - 0x38d8: 0x00c0, 0x38d9: 0x00c0, 0x38da: 0x00c0, 0x38db: 0x00c0, 0x38dc: 0x00c0, 0x38dd: 0x00c0, - 0x38de: 0x00c0, 0x38df: 0x00c0, 0x38e0: 0x00c0, 0x38e1: 0x00c0, 0x38e2: 0x00c0, 0x38e3: 0x00c0, - 0x38e4: 0x00c0, 0x38e5: 0x00c0, 0x38e6: 0x00c0, 0x38e7: 0x00c0, 0x38e8: 0x00c0, 0x38e9: 0x00c0, - 0x38ea: 0x00c0, 0x38eb: 0x00c0, 0x38ec: 0x00c0, 0x38ed: 0x00c0, 0x38ee: 0x00c0, 0x38ef: 0x00c0, - 0x38f0: 0x00c0, 0x38f1: 0x00c0, 0x38f2: 0x00c0, 0x38f3: 0x00c3, 0x38f4: 0x00c3, 0x38f5: 0x00c3, - 0x38f6: 0x00c3, 0x38f7: 0x00c0, 0x38f8: 0x00c0, 0x38f9: 0x00c6, 0x38fa: 0x00c3, 0x38fb: 0x0080, - 0x38fc: 0x0080, 0x38fd: 0x0040, 0x38fe: 0x0080, 0x38ff: 0x0080, - // Block 0xe4, offset 0x3900 - 0x3900: 0x0080, 0x3901: 0x0080, - 0x3910: 0x00c0, 0x3911: 0x00c0, - 0x3912: 0x00c0, 0x3913: 0x00c0, 0x3914: 0x00c0, 0x3915: 0x00c0, 0x3916: 0x00c0, 0x3917: 0x00c0, - 0x3918: 0x00c0, 0x3919: 0x00c0, 0x391a: 0x00c0, 0x391b: 0x00c0, 0x391c: 0x00c0, 0x391d: 0x00c0, - 0x391e: 0x00c0, 0x391f: 0x00c0, 0x3920: 0x00c0, 0x3921: 0x00c0, 0x3922: 0x00c0, 0x3923: 0x00c0, - 0x3924: 0x00c0, 0x3925: 0x00c0, 0x3926: 0x00c0, 0x3927: 0x00c0, 0x3928: 0x00c0, - 0x3930: 0x00c0, 0x3931: 0x00c0, 0x3932: 0x00c0, 0x3933: 0x00c0, 0x3934: 0x00c0, 0x3935: 0x00c0, - 0x3936: 0x00c0, 0x3937: 0x00c0, 0x3938: 0x00c0, 0x3939: 0x00c0, - // Block 0xe5, offset 0x3940 - 0x3940: 0x00c3, 0x3941: 0x00c3, 0x3942: 0x00c3, 0x3943: 0x00c0, 0x3944: 0x00c0, 0x3945: 0x00c0, - 0x3946: 0x00c0, 0x3947: 0x00c0, 0x3948: 0x00c0, 0x3949: 0x00c0, 0x394a: 0x00c0, 0x394b: 0x00c0, - 0x394c: 0x00c0, 0x394d: 0x00c0, 0x394e: 0x00c0, 0x394f: 0x00c0, 0x3950: 0x00c0, 0x3951: 0x00c0, - 0x3952: 0x00c0, 0x3953: 0x00c0, 0x3954: 0x00c0, 0x3955: 0x00c0, 0x3956: 0x00c0, 0x3957: 0x00c0, - 0x3958: 0x00c0, 0x3959: 0x00c0, 0x395a: 0x00c0, 0x395b: 0x00c0, 0x395c: 0x00c0, 0x395d: 0x00c0, - 0x395e: 0x00c0, 0x395f: 0x00c0, 0x3960: 0x00c0, 0x3961: 0x00c0, 0x3962: 0x00c0, 0x3963: 0x00c0, - 0x3964: 0x00c0, 0x3965: 0x00c0, 0x3966: 0x00c0, 0x3967: 0x00c3, 0x3968: 0x00c3, 0x3969: 0x00c3, - 0x396a: 0x00c3, 0x396b: 0x00c3, 0x396c: 0x00c0, 0x396d: 0x00c3, 0x396e: 0x00c3, 0x396f: 0x00c3, - 0x3970: 0x00c3, 0x3971: 0x00c3, 0x3972: 0x00c3, 0x3973: 0x00c6, 0x3974: 0x00c6, - 0x3976: 0x00c0, 0x3977: 0x00c0, 0x3978: 0x00c0, 0x3979: 0x00c0, 0x397a: 0x00c0, 0x397b: 0x00c0, - 0x397c: 0x00c0, 0x397d: 0x00c0, 0x397e: 0x00c0, 0x397f: 0x00c0, - // Block 0xe6, offset 0x3980 - 0x3980: 0x0080, 0x3981: 0x0080, 0x3982: 0x0080, 0x3983: 0x0080, - 0x3990: 0x00c0, 0x3991: 0x00c0, - 0x3992: 0x00c0, 0x3993: 0x00c0, 0x3994: 0x00c0, 0x3995: 0x00c0, 0x3996: 0x00c0, 0x3997: 0x00c0, - 0x3998: 0x00c0, 0x3999: 0x00c0, 0x399a: 0x00c0, 0x399b: 0x00c0, 0x399c: 0x00c0, 0x399d: 0x00c0, - 0x399e: 0x00c0, 0x399f: 0x00c0, 0x39a0: 0x00c0, 0x39a1: 0x00c0, 0x39a2: 0x00c0, 0x39a3: 0x00c0, - 0x39a4: 0x00c0, 0x39a5: 0x00c0, 0x39a6: 0x00c0, 0x39a7: 0x00c0, 0x39a8: 0x00c0, 0x39a9: 0x00c0, - 0x39aa: 0x00c0, 0x39ab: 0x00c0, 0x39ac: 0x00c0, 0x39ad: 0x00c0, 0x39ae: 0x00c0, 0x39af: 0x00c0, - 0x39b0: 0x00c0, 0x39b1: 0x00c0, 0x39b2: 0x00c0, 0x39b3: 0x00c3, 0x39b4: 0x0080, 0x39b5: 0x0080, - 0x39b6: 0x00c0, - // Block 0xe7, offset 0x39c0 - 0x39c0: 0x00c3, 0x39c1: 0x00c3, 0x39c2: 0x00c0, 0x39c3: 0x00c0, 0x39c4: 0x00c0, 0x39c5: 0x00c0, - 0x39c6: 0x00c0, 0x39c7: 0x00c0, 0x39c8: 0x00c0, 0x39c9: 0x00c0, 0x39ca: 0x00c0, 0x39cb: 0x00c0, - 0x39cc: 0x00c0, 0x39cd: 0x00c0, 0x39ce: 0x00c0, 0x39cf: 0x00c0, 0x39d0: 0x00c0, 0x39d1: 0x00c0, - 0x39d2: 0x00c0, 0x39d3: 0x00c0, 0x39d4: 0x00c0, 0x39d5: 0x00c0, 0x39d6: 0x00c0, 0x39d7: 0x00c0, - 0x39d8: 0x00c0, 0x39d9: 0x00c0, 0x39da: 0x00c0, 0x39db: 0x00c0, 0x39dc: 0x00c0, 0x39dd: 0x00c0, - 0x39de: 0x00c0, 0x39df: 0x00c0, 0x39e0: 0x00c0, 0x39e1: 0x00c0, 0x39e2: 0x00c0, 0x39e3: 0x00c0, - 0x39e4: 0x00c0, 0x39e5: 0x00c0, 0x39e6: 0x00c0, 0x39e7: 0x00c0, 0x39e8: 0x00c0, 0x39e9: 0x00c0, - 0x39ea: 0x00c0, 0x39eb: 0x00c0, 0x39ec: 0x00c0, 0x39ed: 0x00c0, 0x39ee: 0x00c0, 0x39ef: 0x00c0, - 0x39f0: 0x00c0, 0x39f1: 0x00c0, 0x39f2: 0x00c0, 0x39f3: 0x00c0, 0x39f4: 0x00c0, 0x39f5: 0x00c0, - 0x39f6: 0x00c3, 0x39f7: 0x00c3, 0x39f8: 0x00c3, 0x39f9: 0x00c3, 0x39fa: 0x00c3, 0x39fb: 0x00c3, - 0x39fc: 0x00c3, 0x39fd: 0x00c3, 0x39fe: 0x00c3, 0x39ff: 0x00c0, - // Block 0xe8, offset 0x3a00 - 0x3a00: 0x00c5, 0x3a01: 0x00c0, 0x3a02: 0x00c0, 0x3a03: 0x00c0, 0x3a04: 0x00c0, 0x3a05: 0x0080, - 0x3a06: 0x0080, 0x3a07: 0x0080, 0x3a08: 0x0080, 0x3a09: 0x0080, 0x3a0a: 0x00c3, 0x3a0b: 0x00c3, - 0x3a0c: 0x00c3, 0x3a0d: 0x0080, 0x3a10: 0x00c0, 0x3a11: 0x00c0, - 0x3a12: 0x00c0, 0x3a13: 0x00c0, 0x3a14: 0x00c0, 0x3a15: 0x00c0, 0x3a16: 0x00c0, 0x3a17: 0x00c0, - 0x3a18: 0x00c0, 0x3a19: 0x00c0, 0x3a1a: 0x00c0, 0x3a1b: 0x0080, 0x3a1c: 0x00c0, 0x3a1d: 0x0080, - 0x3a1e: 0x0080, 0x3a1f: 0x0080, 0x3a21: 0x0080, 0x3a22: 0x0080, 0x3a23: 0x0080, - 0x3a24: 0x0080, 0x3a25: 0x0080, 0x3a26: 0x0080, 0x3a27: 0x0080, 0x3a28: 0x0080, 0x3a29: 0x0080, - 0x3a2a: 0x0080, 0x3a2b: 0x0080, 0x3a2c: 0x0080, 0x3a2d: 0x0080, 0x3a2e: 0x0080, 0x3a2f: 0x0080, - 0x3a30: 0x0080, 0x3a31: 0x0080, 0x3a32: 0x0080, 0x3a33: 0x0080, 0x3a34: 0x0080, - // Block 0xe9, offset 0x3a40 - 0x3a40: 0x00c0, 0x3a41: 0x00c0, 0x3a42: 0x00c0, 0x3a43: 0x00c0, 0x3a44: 0x00c0, 0x3a45: 0x00c0, - 0x3a46: 0x00c0, 0x3a47: 0x00c0, 0x3a48: 0x00c0, 0x3a49: 0x00c0, 0x3a4a: 0x00c0, 0x3a4b: 0x00c0, - 0x3a4c: 0x00c0, 0x3a4d: 0x00c0, 0x3a4e: 0x00c0, 0x3a4f: 0x00c0, 0x3a50: 0x00c0, 0x3a51: 0x00c0, - 0x3a53: 0x00c0, 0x3a54: 0x00c0, 0x3a55: 0x00c0, 0x3a56: 0x00c0, 0x3a57: 0x00c0, - 0x3a58: 0x00c0, 0x3a59: 0x00c0, 0x3a5a: 0x00c0, 0x3a5b: 0x00c0, 0x3a5c: 0x00c0, 0x3a5d: 0x00c0, - 0x3a5e: 0x00c0, 0x3a5f: 0x00c0, 0x3a60: 0x00c0, 0x3a61: 0x00c0, 0x3a62: 0x00c0, 0x3a63: 0x00c0, - 0x3a64: 0x00c0, 0x3a65: 0x00c0, 0x3a66: 0x00c0, 0x3a67: 0x00c0, 0x3a68: 0x00c0, 0x3a69: 0x00c0, - 0x3a6a: 0x00c0, 0x3a6b: 0x00c0, 0x3a6c: 0x00c0, 0x3a6d: 0x00c0, 0x3a6e: 0x00c0, 0x3a6f: 0x00c3, - 0x3a70: 0x00c3, 0x3a71: 0x00c3, 0x3a72: 0x00c0, 0x3a73: 0x00c0, 0x3a74: 0x00c3, 0x3a75: 0x00c5, - 0x3a76: 0x00c3, 0x3a77: 0x00c3, 0x3a78: 0x0080, 0x3a79: 0x0080, 0x3a7a: 0x0080, 0x3a7b: 0x0080, - 0x3a7c: 0x0080, 0x3a7d: 0x0080, 0x3a7e: 0x00c3, - // Block 0xea, offset 0x3a80 - 0x3a80: 0x00c0, 0x3a81: 0x00c0, 0x3a82: 0x00c0, 0x3a83: 0x00c0, 0x3a84: 0x00c0, 0x3a85: 0x00c0, - 0x3a86: 0x00c0, 0x3a88: 0x00c0, 0x3a8a: 0x00c0, 0x3a8b: 0x00c0, - 0x3a8c: 0x00c0, 0x3a8d: 0x00c0, 0x3a8f: 0x00c0, 0x3a90: 0x00c0, 0x3a91: 0x00c0, - 0x3a92: 0x00c0, 0x3a93: 0x00c0, 0x3a94: 0x00c0, 0x3a95: 0x00c0, 0x3a96: 0x00c0, 0x3a97: 0x00c0, - 0x3a98: 0x00c0, 0x3a99: 0x00c0, 0x3a9a: 0x00c0, 0x3a9b: 0x00c0, 0x3a9c: 0x00c0, 0x3a9d: 0x00c0, - 0x3a9f: 0x00c0, 0x3aa0: 0x00c0, 0x3aa1: 0x00c0, 0x3aa2: 0x00c0, 0x3aa3: 0x00c0, - 0x3aa4: 0x00c0, 0x3aa5: 0x00c0, 0x3aa6: 0x00c0, 0x3aa7: 0x00c0, 0x3aa8: 0x00c0, 0x3aa9: 0x0080, - 0x3ab0: 0x00c0, 0x3ab1: 0x00c0, 0x3ab2: 0x00c0, 0x3ab3: 0x00c0, 0x3ab4: 0x00c0, 0x3ab5: 0x00c0, - 0x3ab6: 0x00c0, 0x3ab7: 0x00c0, 0x3ab8: 0x00c0, 0x3ab9: 0x00c0, 0x3aba: 0x00c0, 0x3abb: 0x00c0, - 0x3abc: 0x00c0, 0x3abd: 0x00c0, 0x3abe: 0x00c0, 0x3abf: 0x00c0, - // Block 0xeb, offset 0x3ac0 - 0x3ac0: 0x00c0, 0x3ac1: 0x00c0, 0x3ac2: 0x00c0, 0x3ac3: 0x00c0, 0x3ac4: 0x00c0, 0x3ac5: 0x00c0, - 0x3ac6: 0x00c0, 0x3ac7: 0x00c0, 0x3ac8: 0x00c0, 0x3ac9: 0x00c0, 0x3aca: 0x00c0, 0x3acb: 0x00c0, - 0x3acc: 0x00c0, 0x3acd: 0x00c0, 0x3ace: 0x00c0, 0x3acf: 0x00c0, 0x3ad0: 0x00c0, 0x3ad1: 0x00c0, - 0x3ad2: 0x00c0, 0x3ad3: 0x00c0, 0x3ad4: 0x00c0, 0x3ad5: 0x00c0, 0x3ad6: 0x00c0, 0x3ad7: 0x00c0, - 0x3ad8: 0x00c0, 0x3ad9: 0x00c0, 0x3ada: 0x00c0, 0x3adb: 0x00c0, 0x3adc: 0x00c0, 0x3add: 0x00c0, - 0x3ade: 0x00c0, 0x3adf: 0x00c3, 0x3ae0: 0x00c0, 0x3ae1: 0x00c0, 0x3ae2: 0x00c0, 0x3ae3: 0x00c3, - 0x3ae4: 0x00c3, 0x3ae5: 0x00c3, 0x3ae6: 0x00c3, 0x3ae7: 0x00c3, 0x3ae8: 0x00c3, 0x3ae9: 0x00c3, - 0x3aea: 0x00c6, - 0x3af0: 0x00c0, 0x3af1: 0x00c0, 0x3af2: 0x00c0, 0x3af3: 0x00c0, 0x3af4: 0x00c0, 0x3af5: 0x00c0, - 0x3af6: 0x00c0, 0x3af7: 0x00c0, 0x3af8: 0x00c0, 0x3af9: 0x00c0, - // Block 0xec, offset 0x3b00 - 0x3b00: 0x00c3, 0x3b01: 0x00c3, 0x3b02: 0x00c0, 0x3b03: 0x00c0, 0x3b05: 0x00c0, - 0x3b06: 0x00c0, 0x3b07: 0x00c0, 0x3b08: 0x00c0, 0x3b09: 0x00c0, 0x3b0a: 0x00c0, 0x3b0b: 0x00c0, - 0x3b0c: 0x00c0, 0x3b0f: 0x00c0, 0x3b10: 0x00c0, - 0x3b13: 0x00c0, 0x3b14: 0x00c0, 0x3b15: 0x00c0, 0x3b16: 0x00c0, 0x3b17: 0x00c0, - 0x3b18: 0x00c0, 0x3b19: 0x00c0, 0x3b1a: 0x00c0, 0x3b1b: 0x00c0, 0x3b1c: 0x00c0, 0x3b1d: 0x00c0, - 0x3b1e: 0x00c0, 0x3b1f: 0x00c0, 0x3b20: 0x00c0, 0x3b21: 0x00c0, 0x3b22: 0x00c0, 0x3b23: 0x00c0, - 0x3b24: 0x00c0, 0x3b25: 0x00c0, 0x3b26: 0x00c0, 0x3b27: 0x00c0, 0x3b28: 0x00c0, - 0x3b2a: 0x00c0, 0x3b2b: 0x00c0, 0x3b2c: 0x00c0, 0x3b2d: 0x00c0, 0x3b2e: 0x00c0, 0x3b2f: 0x00c0, - 0x3b30: 0x00c0, 0x3b32: 0x00c0, 0x3b33: 0x00c0, 0x3b35: 0x00c0, - 0x3b36: 0x00c0, 0x3b37: 0x00c0, 0x3b38: 0x00c0, 0x3b39: 0x00c0, - 0x3b3c: 0x00c3, 0x3b3d: 0x00c0, 0x3b3e: 0x00c0, 0x3b3f: 0x00c0, - // Block 0xed, offset 0x3b40 - 0x3b40: 0x00c3, 0x3b41: 0x00c0, 0x3b42: 0x00c0, 0x3b43: 0x00c0, 0x3b44: 0x00c0, - 0x3b47: 0x00c0, 0x3b48: 0x00c0, 0x3b4b: 0x00c0, - 0x3b4c: 0x00c0, 0x3b4d: 0x00c5, 0x3b50: 0x00c0, - 0x3b57: 0x00c0, - 0x3b5d: 0x00c0, - 0x3b5e: 0x00c0, 0x3b5f: 0x00c0, 0x3b60: 0x00c0, 0x3b61: 0x00c0, 0x3b62: 0x00c0, 0x3b63: 0x00c0, - 0x3b66: 0x00c3, 0x3b67: 0x00c3, 0x3b68: 0x00c3, 0x3b69: 0x00c3, - 0x3b6a: 0x00c3, 0x3b6b: 0x00c3, 0x3b6c: 0x00c3, - 0x3b70: 0x00c3, 0x3b71: 0x00c3, 0x3b72: 0x00c3, 0x3b73: 0x00c3, 0x3b74: 0x00c3, - // Block 0xee, offset 0x3b80 - 0x3b80: 0x00c0, 0x3b81: 0x00c0, 0x3b82: 0x00c0, 0x3b83: 0x00c0, 0x3b84: 0x00c0, 0x3b85: 0x00c0, - 0x3b86: 0x00c0, 0x3b87: 0x00c0, 0x3b88: 0x00c0, 0x3b89: 0x00c0, 0x3b8a: 0x00c0, 0x3b8b: 0x00c0, - 0x3b8c: 0x00c0, 0x3b8d: 0x00c0, 0x3b8e: 0x00c0, 0x3b8f: 0x00c0, 0x3b90: 0x00c0, 0x3b91: 0x00c0, - 0x3b92: 0x00c0, 0x3b93: 0x00c0, 0x3b94: 0x00c0, 0x3b95: 0x00c0, 0x3b96: 0x00c0, 0x3b97: 0x00c0, - 0x3b98: 0x00c0, 0x3b99: 0x00c0, 0x3b9a: 0x00c0, 0x3b9b: 0x00c0, 0x3b9c: 0x00c0, 0x3b9d: 0x00c0, - 0x3b9e: 0x00c0, 0x3b9f: 0x00c0, 0x3ba0: 0x00c0, 0x3ba1: 0x00c0, 0x3ba2: 0x00c0, 0x3ba3: 0x00c0, - 0x3ba4: 0x00c0, 0x3ba5: 0x00c0, 0x3ba6: 0x00c0, 0x3ba7: 0x00c0, 0x3ba8: 0x00c0, 0x3ba9: 0x00c0, - 0x3baa: 0x00c0, 0x3bab: 0x00c0, 0x3bac: 0x00c0, 0x3bad: 0x00c0, 0x3bae: 0x00c0, 0x3baf: 0x00c0, - 0x3bb0: 0x00c0, 0x3bb1: 0x00c0, 0x3bb2: 0x00c0, 0x3bb3: 0x00c0, 0x3bb4: 0x00c0, 0x3bb5: 0x00c0, - 0x3bb6: 0x00c0, 0x3bb7: 0x00c0, 0x3bb8: 0x00c3, 0x3bb9: 0x00c3, 0x3bba: 0x00c3, 0x3bbb: 0x00c3, - 0x3bbc: 0x00c3, 0x3bbd: 0x00c3, 0x3bbe: 0x00c3, 0x3bbf: 0x00c3, - // Block 0xef, offset 0x3bc0 - 0x3bc0: 0x00c0, 0x3bc1: 0x00c0, 0x3bc2: 0x00c6, 0x3bc3: 0x00c3, 0x3bc4: 0x00c3, 0x3bc5: 0x00c0, - 0x3bc6: 0x00c3, 0x3bc7: 0x00c0, 0x3bc8: 0x00c0, 0x3bc9: 0x00c0, 0x3bca: 0x00c0, 0x3bcb: 0x0080, - 0x3bcc: 0x0080, 0x3bcd: 0x0080, 0x3bce: 0x0080, 0x3bcf: 0x0080, 0x3bd0: 0x00c0, 0x3bd1: 0x00c0, - 0x3bd2: 0x00c0, 0x3bd3: 0x00c0, 0x3bd4: 0x00c0, 0x3bd5: 0x00c0, 0x3bd6: 0x00c0, 0x3bd7: 0x00c0, - 0x3bd8: 0x00c0, 0x3bd9: 0x00c0, 0x3bdb: 0x0080, 0x3bdd: 0x0080, - // Block 0xf0, offset 0x3c00 - 0x3c00: 0x00c0, 0x3c01: 0x00c0, 0x3c02: 0x00c0, 0x3c03: 0x00c0, 0x3c04: 0x00c0, 0x3c05: 0x00c0, - 0x3c06: 0x00c0, 0x3c07: 0x00c0, 0x3c08: 0x00c0, 0x3c09: 0x00c0, 0x3c0a: 0x00c0, 0x3c0b: 0x00c0, - 0x3c0c: 0x00c0, 0x3c0d: 0x00c0, 0x3c0e: 0x00c0, 0x3c0f: 0x00c0, 0x3c10: 0x00c0, 0x3c11: 0x00c0, - 0x3c12: 0x00c0, 0x3c13: 0x00c0, 0x3c14: 0x00c0, 0x3c15: 0x00c0, 0x3c16: 0x00c0, 0x3c17: 0x00c0, - 0x3c18: 0x00c0, 0x3c19: 0x00c0, 0x3c1a: 0x00c0, 0x3c1b: 0x00c0, 0x3c1c: 0x00c0, 0x3c1d: 0x00c0, - 0x3c1e: 0x00c0, 0x3c1f: 0x00c0, 0x3c20: 0x00c0, 0x3c21: 0x00c0, 0x3c22: 0x00c0, 0x3c23: 0x00c0, - 0x3c24: 0x00c0, 0x3c25: 0x00c0, 0x3c26: 0x00c0, 0x3c27: 0x00c0, 0x3c28: 0x00c0, 0x3c29: 0x00c0, - 0x3c2a: 0x00c0, 0x3c2b: 0x00c0, 0x3c2c: 0x00c0, 0x3c2d: 0x00c0, 0x3c2e: 0x00c0, 0x3c2f: 0x00c0, - 0x3c30: 0x00c0, 0x3c31: 0x00c0, 0x3c32: 0x00c0, 0x3c33: 0x00c3, 0x3c34: 0x00c3, 0x3c35: 0x00c3, - 0x3c36: 0x00c3, 0x3c37: 0x00c3, 0x3c38: 0x00c3, 0x3c39: 0x00c0, 0x3c3a: 0x00c3, 0x3c3b: 0x00c0, - 0x3c3c: 0x00c0, 0x3c3d: 0x00c0, 0x3c3e: 0x00c0, 0x3c3f: 0x00c3, - // Block 0xf1, offset 0x3c40 - 0x3c40: 0x00c3, 0x3c41: 0x00c0, 0x3c42: 0x00c6, 0x3c43: 0x00c3, 0x3c44: 0x00c0, 0x3c45: 0x00c0, - 0x3c46: 0x0080, 0x3c47: 0x00c0, - 0x3c50: 0x00c0, 0x3c51: 0x00c0, - 0x3c52: 0x00c0, 0x3c53: 0x00c0, 0x3c54: 0x00c0, 0x3c55: 0x00c0, 0x3c56: 0x00c0, 0x3c57: 0x00c0, - 0x3c58: 0x00c0, 0x3c59: 0x00c0, - // Block 0xf2, offset 0x3c80 - 0x3c80: 0x00c0, 0x3c81: 0x00c0, 0x3c82: 0x00c0, 0x3c83: 0x00c0, 0x3c84: 0x00c0, 0x3c85: 0x00c0, - 0x3c86: 0x00c0, 0x3c87: 0x00c0, 0x3c88: 0x00c0, 0x3c89: 0x00c0, 0x3c8a: 0x00c0, 0x3c8b: 0x00c0, - 0x3c8c: 0x00c0, 0x3c8d: 0x00c0, 0x3c8e: 0x00c0, 0x3c8f: 0x00c0, 0x3c90: 0x00c0, 0x3c91: 0x00c0, - 0x3c92: 0x00c0, 0x3c93: 0x00c0, 0x3c94: 0x00c0, 0x3c95: 0x00c0, 0x3c96: 0x00c0, 0x3c97: 0x00c0, - 0x3c98: 0x00c0, 0x3c99: 0x00c0, 0x3c9a: 0x00c0, 0x3c9b: 0x00c0, 0x3c9c: 0x00c0, 0x3c9d: 0x00c0, - 0x3c9e: 0x00c0, 0x3c9f: 0x00c0, 0x3ca0: 0x00c0, 0x3ca1: 0x00c0, 0x3ca2: 0x00c0, 0x3ca3: 0x00c0, - 0x3ca4: 0x00c0, 0x3ca5: 0x00c0, 0x3ca6: 0x00c0, 0x3ca7: 0x00c0, 0x3ca8: 0x00c0, 0x3ca9: 0x00c0, - 0x3caa: 0x00c0, 0x3cab: 0x00c0, 0x3cac: 0x00c0, 0x3cad: 0x00c0, 0x3cae: 0x00c0, 0x3caf: 0x00c0, - 0x3cb0: 0x00c0, 0x3cb1: 0x00c0, 0x3cb2: 0x00c3, 0x3cb3: 0x00c3, 0x3cb4: 0x00c3, 0x3cb5: 0x00c3, - 0x3cb8: 0x00c0, 0x3cb9: 0x00c0, 0x3cba: 0x00c0, 0x3cbb: 0x00c0, - 0x3cbc: 0x00c3, 0x3cbd: 0x00c3, 0x3cbe: 0x00c0, 0x3cbf: 0x00c6, - // Block 0xf3, offset 0x3cc0 - 0x3cc0: 0x00c3, 0x3cc1: 0x0080, 0x3cc2: 0x0080, 0x3cc3: 0x0080, 0x3cc4: 0x0080, 0x3cc5: 0x0080, - 0x3cc6: 0x0080, 0x3cc7: 0x0080, 0x3cc8: 0x0080, 0x3cc9: 0x0080, 0x3cca: 0x0080, 0x3ccb: 0x0080, - 0x3ccc: 0x0080, 0x3ccd: 0x0080, 0x3cce: 0x0080, 0x3ccf: 0x0080, 0x3cd0: 0x0080, 0x3cd1: 0x0080, - 0x3cd2: 0x0080, 0x3cd3: 0x0080, 0x3cd4: 0x0080, 0x3cd5: 0x0080, 0x3cd6: 0x0080, 0x3cd7: 0x0080, - 0x3cd8: 0x00c0, 0x3cd9: 0x00c0, 0x3cda: 0x00c0, 0x3cdb: 0x00c0, 0x3cdc: 0x00c3, 0x3cdd: 0x00c3, - // Block 0xf4, offset 0x3d00 - 0x3d00: 0x00c0, 0x3d01: 0x00c0, 0x3d02: 0x00c0, 0x3d03: 0x00c0, 0x3d04: 0x00c0, 0x3d05: 0x00c0, - 0x3d06: 0x00c0, 0x3d07: 0x00c0, 0x3d08: 0x00c0, 0x3d09: 0x00c0, 0x3d0a: 0x00c0, 0x3d0b: 0x00c0, - 0x3d0c: 0x00c0, 0x3d0d: 0x00c0, 0x3d0e: 0x00c0, 0x3d0f: 0x00c0, 0x3d10: 0x00c0, 0x3d11: 0x00c0, - 0x3d12: 0x00c0, 0x3d13: 0x00c0, 0x3d14: 0x00c0, 0x3d15: 0x00c0, 0x3d16: 0x00c0, 0x3d17: 0x00c0, - 0x3d18: 0x00c0, 0x3d19: 0x00c0, 0x3d1a: 0x00c0, 0x3d1b: 0x00c0, 0x3d1c: 0x00c0, 0x3d1d: 0x00c0, - 0x3d1e: 0x00c0, 0x3d1f: 0x00c0, 0x3d20: 0x00c0, 0x3d21: 0x00c0, 0x3d22: 0x00c0, 0x3d23: 0x00c0, - 0x3d24: 0x00c0, 0x3d25: 0x00c0, 0x3d26: 0x00c0, 0x3d27: 0x00c0, 0x3d28: 0x00c0, 0x3d29: 0x00c0, - 0x3d2a: 0x00c0, 0x3d2b: 0x00c0, 0x3d2c: 0x00c0, 0x3d2d: 0x00c0, 0x3d2e: 0x00c0, 0x3d2f: 0x00c0, - 0x3d30: 0x00c0, 0x3d31: 0x00c0, 0x3d32: 0x00c0, 0x3d33: 0x00c3, 0x3d34: 0x00c3, 0x3d35: 0x00c3, - 0x3d36: 0x00c3, 0x3d37: 0x00c3, 0x3d38: 0x00c3, 0x3d39: 0x00c3, 0x3d3a: 0x00c3, 0x3d3b: 0x00c0, - 0x3d3c: 0x00c0, 0x3d3d: 0x00c3, 0x3d3e: 0x00c0, 0x3d3f: 0x00c6, - // Block 0xf5, offset 0x3d40 - 0x3d40: 0x00c3, 0x3d41: 0x0080, 0x3d42: 0x0080, 0x3d43: 0x0080, 0x3d44: 0x00c0, - 0x3d50: 0x00c0, 0x3d51: 0x00c0, - 0x3d52: 0x00c0, 0x3d53: 0x00c0, 0x3d54: 0x00c0, 0x3d55: 0x00c0, 0x3d56: 0x00c0, 0x3d57: 0x00c0, - 0x3d58: 0x00c0, 0x3d59: 0x00c0, - 0x3d60: 0x0080, 0x3d61: 0x0080, 0x3d62: 0x0080, 0x3d63: 0x0080, - 0x3d64: 0x0080, 0x3d65: 0x0080, 0x3d66: 0x0080, 0x3d67: 0x0080, 0x3d68: 0x0080, 0x3d69: 0x0080, - 0x3d6a: 0x0080, 0x3d6b: 0x0080, 0x3d6c: 0x0080, - // Block 0xf6, offset 0x3d80 - 0x3d80: 0x00c0, 0x3d81: 0x00c0, 0x3d82: 0x00c0, 0x3d83: 0x00c0, 0x3d84: 0x00c0, 0x3d85: 0x00c0, - 0x3d86: 0x00c0, 0x3d87: 0x00c0, 0x3d88: 0x00c0, 0x3d89: 0x00c0, 0x3d8a: 0x00c0, 0x3d8b: 0x00c0, - 0x3d8c: 0x00c0, 0x3d8d: 0x00c0, 0x3d8e: 0x00c0, 0x3d8f: 0x00c0, 0x3d90: 0x00c0, 0x3d91: 0x00c0, - 0x3d92: 0x00c0, 0x3d93: 0x00c0, 0x3d94: 0x00c0, 0x3d95: 0x00c0, 0x3d96: 0x00c0, 0x3d97: 0x00c0, - 0x3d98: 0x00c0, 0x3d99: 0x00c0, 0x3d9a: 0x00c0, 0x3d9b: 0x00c0, 0x3d9c: 0x00c0, 0x3d9d: 0x00c0, - 0x3d9e: 0x00c0, 0x3d9f: 0x00c0, 0x3da0: 0x00c0, 0x3da1: 0x00c0, 0x3da2: 0x00c0, 0x3da3: 0x00c0, - 0x3da4: 0x00c0, 0x3da5: 0x00c0, 0x3da6: 0x00c0, 0x3da7: 0x00c0, 0x3da8: 0x00c0, 0x3da9: 0x00c0, - 0x3daa: 0x00c0, 0x3dab: 0x00c3, 0x3dac: 0x00c0, 0x3dad: 0x00c3, 0x3dae: 0x00c0, 0x3daf: 0x00c0, - 0x3db0: 0x00c3, 0x3db1: 0x00c3, 0x3db2: 0x00c3, 0x3db3: 0x00c3, 0x3db4: 0x00c3, 0x3db5: 0x00c3, - 0x3db6: 0x00c5, 0x3db7: 0x00c3, - // Block 0xf7, offset 0x3dc0 - 0x3dc0: 0x00c0, 0x3dc1: 0x00c0, 0x3dc2: 0x00c0, 0x3dc3: 0x00c0, 0x3dc4: 0x00c0, 0x3dc5: 0x00c0, - 0x3dc6: 0x00c0, 0x3dc7: 0x00c0, 0x3dc8: 0x00c0, 0x3dc9: 0x00c0, - // Block 0xf8, offset 0x3e00 - 0x3e00: 0x00c0, 0x3e01: 0x00c0, 0x3e02: 0x00c0, 0x3e03: 0x00c0, 0x3e04: 0x00c0, 0x3e05: 0x00c0, - 0x3e06: 0x00c0, 0x3e07: 0x00c0, 0x3e08: 0x00c0, 0x3e09: 0x00c0, 0x3e0a: 0x00c0, 0x3e0b: 0x00c0, - 0x3e0c: 0x00c0, 0x3e0d: 0x00c0, 0x3e0e: 0x00c0, 0x3e0f: 0x00c0, 0x3e10: 0x00c0, 0x3e11: 0x00c0, - 0x3e12: 0x00c0, 0x3e13: 0x00c0, 0x3e14: 0x00c0, 0x3e15: 0x00c0, 0x3e16: 0x00c0, 0x3e17: 0x00c0, - 0x3e18: 0x00c0, 0x3e19: 0x00c0, 0x3e1d: 0x00c3, - 0x3e1e: 0x00c3, 0x3e1f: 0x00c3, 0x3e20: 0x00c0, 0x3e21: 0x00c0, 0x3e22: 0x00c3, 0x3e23: 0x00c3, - 0x3e24: 0x00c3, 0x3e25: 0x00c3, 0x3e26: 0x00c0, 0x3e27: 0x00c3, 0x3e28: 0x00c3, 0x3e29: 0x00c3, - 0x3e2a: 0x00c3, 0x3e2b: 0x00c6, - 0x3e30: 0x00c0, 0x3e31: 0x00c0, 0x3e32: 0x00c0, 0x3e33: 0x00c0, 0x3e34: 0x00c0, 0x3e35: 0x00c0, - 0x3e36: 0x00c0, 0x3e37: 0x00c0, 0x3e38: 0x00c0, 0x3e39: 0x00c0, 0x3e3a: 0x0080, 0x3e3b: 0x0080, - 0x3e3c: 0x0080, 0x3e3d: 0x0080, 0x3e3e: 0x0080, 0x3e3f: 0x0080, - // Block 0xf9, offset 0x3e40 - 0x3e60: 0x00c0, 0x3e61: 0x00c0, 0x3e62: 0x00c0, 0x3e63: 0x00c0, - 0x3e64: 0x00c0, 0x3e65: 0x00c0, 0x3e66: 0x00c0, 0x3e67: 0x00c0, 0x3e68: 0x00c0, 0x3e69: 0x00c0, - 0x3e6a: 0x00c0, 0x3e6b: 0x00c0, 0x3e6c: 0x00c0, 0x3e6d: 0x00c0, 0x3e6e: 0x00c0, 0x3e6f: 0x00c0, - 0x3e70: 0x00c0, 0x3e71: 0x00c0, 0x3e72: 0x00c0, 0x3e73: 0x00c0, 0x3e74: 0x00c0, 0x3e75: 0x00c0, - 0x3e76: 0x00c0, 0x3e77: 0x00c0, 0x3e78: 0x00c0, 0x3e79: 0x00c0, 0x3e7a: 0x00c0, 0x3e7b: 0x00c0, - 0x3e7c: 0x00c0, 0x3e7d: 0x00c0, 0x3e7e: 0x00c0, 0x3e7f: 0x00c0, - // Block 0xfa, offset 0x3e80 - 0x3e80: 0x00c0, 0x3e81: 0x00c0, 0x3e82: 0x00c0, 0x3e83: 0x00c0, 0x3e84: 0x00c0, 0x3e85: 0x00c0, - 0x3e86: 0x00c0, 0x3e87: 0x00c0, 0x3e88: 0x00c0, 0x3e89: 0x00c0, 0x3e8a: 0x00c0, 0x3e8b: 0x00c0, - 0x3e8c: 0x00c0, 0x3e8d: 0x00c0, 0x3e8e: 0x00c0, 0x3e8f: 0x00c0, 0x3e90: 0x00c0, 0x3e91: 0x00c0, - 0x3e92: 0x00c0, 0x3e93: 0x00c0, 0x3e94: 0x00c0, 0x3e95: 0x00c0, 0x3e96: 0x00c0, 0x3e97: 0x00c0, - 0x3e98: 0x00c0, 0x3e99: 0x00c0, 0x3e9a: 0x00c0, 0x3e9b: 0x00c0, 0x3e9c: 0x00c0, 0x3e9d: 0x00c0, - 0x3e9e: 0x00c0, 0x3e9f: 0x00c0, 0x3ea0: 0x00c0, 0x3ea1: 0x00c0, 0x3ea2: 0x00c0, 0x3ea3: 0x00c0, - 0x3ea4: 0x00c0, 0x3ea5: 0x00c0, 0x3ea6: 0x00c0, 0x3ea7: 0x00c0, 0x3ea8: 0x00c0, 0x3ea9: 0x00c0, - 0x3eaa: 0x0080, 0x3eab: 0x0080, 0x3eac: 0x0080, 0x3ead: 0x0080, 0x3eae: 0x0080, 0x3eaf: 0x0080, - 0x3eb0: 0x0080, 0x3eb1: 0x0080, 0x3eb2: 0x0080, - 0x3ebf: 0x00c0, - // Block 0xfb, offset 0x3ec0 - 0x3ec0: 0x00c0, 0x3ec1: 0x00c3, 0x3ec2: 0x00c3, 0x3ec3: 0x00c3, 0x3ec4: 0x00c3, 0x3ec5: 0x00c3, - 0x3ec6: 0x00c3, 0x3ec7: 0x00c0, 0x3ec8: 0x00c0, 0x3ec9: 0x00c3, 0x3eca: 0x00c3, 0x3ecb: 0x00c0, - 0x3ecc: 0x00c0, 0x3ecd: 0x00c0, 0x3ece: 0x00c0, 0x3ecf: 0x00c0, 0x3ed0: 0x00c0, 0x3ed1: 0x00c0, - 0x3ed2: 0x00c0, 0x3ed3: 0x00c0, 0x3ed4: 0x00c0, 0x3ed5: 0x00c0, 0x3ed6: 0x00c0, 0x3ed7: 0x00c0, - 0x3ed8: 0x00c0, 0x3ed9: 0x00c0, 0x3eda: 0x00c0, 0x3edb: 0x00c0, 0x3edc: 0x00c0, 0x3edd: 0x00c0, - 0x3ede: 0x00c0, 0x3edf: 0x00c0, 0x3ee0: 0x00c0, 0x3ee1: 0x00c0, 0x3ee2: 0x00c0, 0x3ee3: 0x00c0, - 0x3ee4: 0x00c0, 0x3ee5: 0x00c0, 0x3ee6: 0x00c0, 0x3ee7: 0x00c0, 0x3ee8: 0x00c0, 0x3ee9: 0x00c0, - 0x3eea: 0x00c0, 0x3eeb: 0x00c0, 0x3eec: 0x00c0, 0x3eed: 0x00c0, 0x3eee: 0x00c0, 0x3eef: 0x00c0, - 0x3ef0: 0x00c0, 0x3ef1: 0x00c0, 0x3ef2: 0x00c0, 0x3ef3: 0x00c3, 0x3ef4: 0x00c6, 0x3ef5: 0x00c3, - 0x3ef6: 0x00c3, 0x3ef7: 0x00c3, 0x3ef8: 0x00c3, 0x3ef9: 0x00c0, 0x3efa: 0x00c0, 0x3efb: 0x00c3, - 0x3efc: 0x00c3, 0x3efd: 0x00c3, 0x3efe: 0x00c3, 0x3eff: 0x0080, - // Block 0xfc, offset 0x3f00 - 0x3f00: 0x0080, 0x3f01: 0x0080, 0x3f02: 0x0080, 0x3f03: 0x0080, 0x3f04: 0x0080, 0x3f05: 0x0080, - 0x3f06: 0x0080, 0x3f07: 0x00c6, - 0x3f10: 0x00c0, 0x3f11: 0x00c3, - 0x3f12: 0x00c3, 0x3f13: 0x00c3, 0x3f14: 0x00c3, 0x3f15: 0x00c3, 0x3f16: 0x00c3, 0x3f17: 0x00c0, - 0x3f18: 0x00c0, 0x3f19: 0x00c3, 0x3f1a: 0x00c3, 0x3f1b: 0x00c3, 0x3f1c: 0x00c0, 0x3f1d: 0x00c0, - 0x3f1e: 0x00c0, 0x3f1f: 0x00c0, 0x3f20: 0x00c0, 0x3f21: 0x00c0, 0x3f22: 0x00c0, 0x3f23: 0x00c0, - 0x3f24: 0x00c0, 0x3f25: 0x00c0, 0x3f26: 0x00c0, 0x3f27: 0x00c0, 0x3f28: 0x00c0, 0x3f29: 0x00c0, - 0x3f2a: 0x00c0, 0x3f2b: 0x00c0, 0x3f2c: 0x00c0, 0x3f2d: 0x00c0, 0x3f2e: 0x00c0, 0x3f2f: 0x00c0, - 0x3f30: 0x00c0, 0x3f31: 0x00c0, 0x3f32: 0x00c0, 0x3f33: 0x00c0, 0x3f34: 0x00c0, 0x3f35: 0x00c0, - 0x3f36: 0x00c0, 0x3f37: 0x00c0, 0x3f38: 0x00c0, 0x3f39: 0x00c0, 0x3f3a: 0x00c0, 0x3f3b: 0x00c0, - 0x3f3c: 0x00c0, 0x3f3d: 0x00c0, 0x3f3e: 0x00c0, 0x3f3f: 0x00c0, - // Block 0xfd, offset 0x3f40 - 0x3f40: 0x00c0, 0x3f41: 0x00c0, 0x3f42: 0x00c0, 0x3f43: 0x00c0, - 0x3f46: 0x00c0, 0x3f47: 0x00c0, 0x3f48: 0x00c0, 0x3f49: 0x00c0, 0x3f4a: 0x00c3, 0x3f4b: 0x00c3, - 0x3f4c: 0x00c3, 0x3f4d: 0x00c3, 0x3f4e: 0x00c3, 0x3f4f: 0x00c3, 0x3f50: 0x00c3, 0x3f51: 0x00c3, - 0x3f52: 0x00c3, 0x3f53: 0x00c3, 0x3f54: 0x00c3, 0x3f55: 0x00c3, 0x3f56: 0x00c3, 0x3f57: 0x00c0, - 0x3f58: 0x00c3, 0x3f59: 0x00c6, 0x3f5a: 0x0080, 0x3f5b: 0x0080, 0x3f5c: 0x0080, - 0x3f5e: 0x0080, 0x3f5f: 0x0080, 0x3f60: 0x0080, 0x3f61: 0x0080, 0x3f62: 0x0080, - // Block 0xfe, offset 0x3f80 - 0x3f80: 0x00c0, 0x3f81: 0x00c0, 0x3f82: 0x00c0, 0x3f83: 0x00c0, 0x3f84: 0x00c0, 0x3f85: 0x00c0, - 0x3f86: 0x00c0, 0x3f87: 0x00c0, 0x3f88: 0x00c0, 0x3f89: 0x00c0, 0x3f8a: 0x00c0, 0x3f8b: 0x00c0, - 0x3f8c: 0x00c0, 0x3f8d: 0x00c0, 0x3f8e: 0x00c0, 0x3f8f: 0x00c0, 0x3f90: 0x00c0, 0x3f91: 0x00c0, - 0x3f92: 0x00c0, 0x3f93: 0x00c0, 0x3f94: 0x00c0, 0x3f95: 0x00c0, 0x3f96: 0x00c0, 0x3f97: 0x00c0, - 0x3f98: 0x00c0, 0x3f99: 0x00c0, 0x3f9a: 0x00c0, 0x3f9b: 0x00c0, 0x3f9c: 0x00c0, 0x3f9d: 0x00c0, - 0x3f9e: 0x00c0, 0x3f9f: 0x00c0, 0x3fa0: 0x00c0, 0x3fa1: 0x00c0, 0x3fa2: 0x00c0, 0x3fa3: 0x00c0, - 0x3fa4: 0x00c0, 0x3fa5: 0x00c0, 0x3fa6: 0x00c0, 0x3fa7: 0x00c0, 0x3fa8: 0x00c0, 0x3fa9: 0x00c0, - 0x3faa: 0x00c0, 0x3fab: 0x00c0, 0x3fac: 0x00c0, 0x3fad: 0x00c0, 0x3fae: 0x00c0, 0x3faf: 0x00c0, - 0x3fb0: 0x00c0, 0x3fb1: 0x00c0, 0x3fb2: 0x00c0, 0x3fb3: 0x00c0, 0x3fb4: 0x00c0, 0x3fb5: 0x00c0, - 0x3fb6: 0x00c0, 0x3fb7: 0x00c0, 0x3fb8: 0x00c0, - // Block 0xff, offset 0x3fc0 - 0x3fc0: 0x00c0, 0x3fc1: 0x00c0, 0x3fc2: 0x00c0, 0x3fc3: 0x00c0, 0x3fc4: 0x00c0, 0x3fc5: 0x00c0, - 0x3fc6: 0x00c0, 0x3fc7: 0x00c0, 0x3fc8: 0x00c0, 0x3fca: 0x00c0, 0x3fcb: 0x00c0, - 0x3fcc: 0x00c0, 0x3fcd: 0x00c0, 0x3fce: 0x00c0, 0x3fcf: 0x00c0, 0x3fd0: 0x00c0, 0x3fd1: 0x00c0, - 0x3fd2: 0x00c0, 0x3fd3: 0x00c0, 0x3fd4: 0x00c0, 0x3fd5: 0x00c0, 0x3fd6: 0x00c0, 0x3fd7: 0x00c0, - 0x3fd8: 0x00c0, 0x3fd9: 0x00c0, 0x3fda: 0x00c0, 0x3fdb: 0x00c0, 0x3fdc: 0x00c0, 0x3fdd: 0x00c0, - 0x3fde: 0x00c0, 0x3fdf: 0x00c0, 0x3fe0: 0x00c0, 0x3fe1: 0x00c0, 0x3fe2: 0x00c0, 0x3fe3: 0x00c0, - 0x3fe4: 0x00c0, 0x3fe5: 0x00c0, 0x3fe6: 0x00c0, 0x3fe7: 0x00c0, 0x3fe8: 0x00c0, 0x3fe9: 0x00c0, - 0x3fea: 0x00c0, 0x3feb: 0x00c0, 0x3fec: 0x00c0, 0x3fed: 0x00c0, 0x3fee: 0x00c0, 0x3fef: 0x00c0, - 0x3ff0: 0x00c3, 0x3ff1: 0x00c3, 0x3ff2: 0x00c3, 0x3ff3: 0x00c3, 0x3ff4: 0x00c3, 0x3ff5: 0x00c3, - 0x3ff6: 0x00c3, 0x3ff8: 0x00c3, 0x3ff9: 0x00c3, 0x3ffa: 0x00c3, 0x3ffb: 0x00c3, - 0x3ffc: 0x00c3, 0x3ffd: 0x00c3, 0x3ffe: 0x00c0, 0x3fff: 0x00c6, - // Block 0x100, offset 0x4000 - 0x4000: 0x00c0, 0x4001: 0x0080, 0x4002: 0x0080, 0x4003: 0x0080, 0x4004: 0x0080, 0x4005: 0x0080, - 0x4010: 0x00c0, 0x4011: 0x00c0, - 0x4012: 0x00c0, 0x4013: 0x00c0, 0x4014: 0x00c0, 0x4015: 0x00c0, 0x4016: 0x00c0, 0x4017: 0x00c0, - 0x4018: 0x00c0, 0x4019: 0x00c0, 0x401a: 0x0080, 0x401b: 0x0080, 0x401c: 0x0080, 0x401d: 0x0080, - 0x401e: 0x0080, 0x401f: 0x0080, 0x4020: 0x0080, 0x4021: 0x0080, 0x4022: 0x0080, 0x4023: 0x0080, - 0x4024: 0x0080, 0x4025: 0x0080, 0x4026: 0x0080, 0x4027: 0x0080, 0x4028: 0x0080, 0x4029: 0x0080, - 0x402a: 0x0080, 0x402b: 0x0080, 0x402c: 0x0080, - 0x4030: 0x0080, 0x4031: 0x0080, 0x4032: 0x00c0, 0x4033: 0x00c0, 0x4034: 0x00c0, 0x4035: 0x00c0, - 0x4036: 0x00c0, 0x4037: 0x00c0, 0x4038: 0x00c0, 0x4039: 0x00c0, 0x403a: 0x00c0, 0x403b: 0x00c0, - 0x403c: 0x00c0, 0x403d: 0x00c0, 0x403e: 0x00c0, 0x403f: 0x00c0, - // Block 0x101, offset 0x4040 - 0x4040: 0x00c0, 0x4041: 0x00c0, 0x4042: 0x00c0, 0x4043: 0x00c0, 0x4044: 0x00c0, 0x4045: 0x00c0, - 0x4046: 0x00c0, 0x4047: 0x00c0, 0x4048: 0x00c0, 0x4049: 0x00c0, 0x404a: 0x00c0, 0x404b: 0x00c0, - 0x404c: 0x00c0, 0x404d: 0x00c0, 0x404e: 0x00c0, 0x404f: 0x00c0, - 0x4052: 0x00c3, 0x4053: 0x00c3, 0x4054: 0x00c3, 0x4055: 0x00c3, 0x4056: 0x00c3, 0x4057: 0x00c3, - 0x4058: 0x00c3, 0x4059: 0x00c3, 0x405a: 0x00c3, 0x405b: 0x00c3, 0x405c: 0x00c3, 0x405d: 0x00c3, - 0x405e: 0x00c3, 0x405f: 0x00c3, 0x4060: 0x00c3, 0x4061: 0x00c3, 0x4062: 0x00c3, 0x4063: 0x00c3, - 0x4064: 0x00c3, 0x4065: 0x00c3, 0x4066: 0x00c3, 0x4067: 0x00c3, 0x4069: 0x00c0, - 0x406a: 0x00c3, 0x406b: 0x00c3, 0x406c: 0x00c3, 0x406d: 0x00c3, 0x406e: 0x00c3, 0x406f: 0x00c3, - 0x4070: 0x00c3, 0x4071: 0x00c0, 0x4072: 0x00c3, 0x4073: 0x00c3, 0x4074: 0x00c0, 0x4075: 0x00c3, - 0x4076: 0x00c3, - // Block 0x102, offset 0x4080 - 0x4080: 0x00c0, 0x4081: 0x00c0, 0x4082: 0x00c0, 0x4083: 0x00c0, 0x4084: 0x00c0, 0x4085: 0x00c0, - 0x4086: 0x00c0, 0x4088: 0x00c0, 0x4089: 0x00c0, 0x408b: 0x00c0, - 0x408c: 0x00c0, 0x408d: 0x00c0, 0x408e: 0x00c0, 0x408f: 0x00c0, 0x4090: 0x00c0, 0x4091: 0x00c0, - 0x4092: 0x00c0, 0x4093: 0x00c0, 0x4094: 0x00c0, 0x4095: 0x00c0, 0x4096: 0x00c0, 0x4097: 0x00c0, - 0x4098: 0x00c0, 0x4099: 0x00c0, 0x409a: 0x00c0, 0x409b: 0x00c0, 0x409c: 0x00c0, 0x409d: 0x00c0, - 0x409e: 0x00c0, 0x409f: 0x00c0, 0x40a0: 0x00c0, 0x40a1: 0x00c0, 0x40a2: 0x00c0, 0x40a3: 0x00c0, - 0x40a4: 0x00c0, 0x40a5: 0x00c0, 0x40a6: 0x00c0, 0x40a7: 0x00c0, 0x40a8: 0x00c0, 0x40a9: 0x00c0, - 0x40aa: 0x00c0, 0x40ab: 0x00c0, 0x40ac: 0x00c0, 0x40ad: 0x00c0, 0x40ae: 0x00c0, 0x40af: 0x00c0, - 0x40b0: 0x00c0, 0x40b1: 0x00c3, 0x40b2: 0x00c3, 0x40b3: 0x00c3, 0x40b4: 0x00c3, 0x40b5: 0x00c3, - 0x40b6: 0x00c3, 0x40ba: 0x00c3, - 0x40bc: 0x00c3, 0x40bd: 0x00c3, 0x40bf: 0x00c3, - // Block 0x103, offset 0x40c0 - 0x40c0: 0x00c3, 0x40c1: 0x00c3, 0x40c2: 0x00c3, 0x40c3: 0x00c3, 0x40c4: 0x00c6, 0x40c5: 0x00c6, - 0x40c6: 0x00c0, 0x40c7: 0x00c3, - 0x40d0: 0x00c0, 0x40d1: 0x00c0, - 0x40d2: 0x00c0, 0x40d3: 0x00c0, 0x40d4: 0x00c0, 0x40d5: 0x00c0, 0x40d6: 0x00c0, 0x40d7: 0x00c0, - 0x40d8: 0x00c0, 0x40d9: 0x00c0, - // Block 0x104, offset 0x4100 - 0x4100: 0x00c0, 0x4101: 0x00c0, 0x4102: 0x00c0, 0x4103: 0x00c0, 0x4104: 0x00c0, 0x4105: 0x00c0, - 0x4106: 0x00c0, 0x4107: 0x00c0, 0x4108: 0x00c0, 0x4109: 0x00c0, 0x410a: 0x00c0, 0x410b: 0x00c0, - 0x410c: 0x00c0, 0x410d: 0x00c0, 0x410e: 0x00c0, 0x410f: 0x00c0, 0x4110: 0x00c0, 0x4111: 0x00c0, - 0x4112: 0x00c0, 0x4113: 0x00c0, 0x4114: 0x00c0, 0x4115: 0x00c0, 0x4116: 0x00c0, 0x4117: 0x00c0, - 0x4118: 0x00c0, 0x4119: 0x00c0, - // Block 0x105, offset 0x4140 - 0x4140: 0x0080, 0x4141: 0x0080, 0x4142: 0x0080, 0x4143: 0x0080, 0x4144: 0x0080, 0x4145: 0x0080, - 0x4146: 0x0080, 0x4147: 0x0080, 0x4148: 0x0080, 0x4149: 0x0080, 0x414a: 0x0080, 0x414b: 0x0080, - 0x414c: 0x0080, 0x414d: 0x0080, 0x414e: 0x0080, 0x414f: 0x0080, 0x4150: 0x0080, 0x4151: 0x0080, - 0x4152: 0x0080, 0x4153: 0x0080, 0x4154: 0x0080, 0x4155: 0x0080, 0x4156: 0x0080, 0x4157: 0x0080, - 0x4158: 0x0080, 0x4159: 0x0080, 0x415a: 0x0080, 0x415b: 0x0080, 0x415c: 0x0080, 0x415d: 0x0080, - 0x415e: 0x0080, 0x415f: 0x0080, 0x4160: 0x0080, 0x4161: 0x0080, 0x4162: 0x0080, 0x4163: 0x0080, - 0x4164: 0x0080, 0x4165: 0x0080, 0x4166: 0x0080, 0x4167: 0x0080, 0x4168: 0x0080, 0x4169: 0x0080, - 0x416a: 0x0080, 0x416b: 0x0080, 0x416c: 0x0080, 0x416d: 0x0080, 0x416e: 0x0080, - 0x4170: 0x0080, 0x4171: 0x0080, 0x4172: 0x0080, 0x4173: 0x0080, 0x4174: 0x0080, - // Block 0x106, offset 0x4180 - 0x4180: 0x00c0, 0x4181: 0x00c0, 0x4182: 0x00c0, 0x4183: 0x00c0, - // Block 0x107, offset 0x41c0 - 0x41c0: 0x00c0, 0x41c1: 0x00c0, 0x41c2: 0x00c0, 0x41c3: 0x00c0, 0x41c4: 0x00c0, 0x41c5: 0x00c0, - 0x41c6: 0x00c0, 0x41c7: 0x00c0, 0x41c8: 0x00c0, 0x41c9: 0x00c0, 0x41ca: 0x00c0, 0x41cb: 0x00c0, - 0x41cc: 0x00c0, 0x41cd: 0x00c0, 0x41ce: 0x00c0, 0x41cf: 0x00c0, 0x41d0: 0x00c0, 0x41d1: 0x00c0, - 0x41d2: 0x00c0, 0x41d3: 0x00c0, 0x41d4: 0x00c0, 0x41d5: 0x00c0, 0x41d6: 0x00c0, 0x41d7: 0x00c0, - 0x41d8: 0x00c0, 0x41d9: 0x00c0, 0x41da: 0x00c0, 0x41db: 0x00c0, 0x41dc: 0x00c0, 0x41dd: 0x00c0, - 0x41de: 0x00c0, 0x41df: 0x00c0, 0x41e0: 0x00c0, 0x41e1: 0x00c0, 0x41e2: 0x00c0, 0x41e3: 0x00c0, - 0x41e4: 0x00c0, 0x41e5: 0x00c0, 0x41e6: 0x00c0, 0x41e7: 0x00c0, 0x41e8: 0x00c0, 0x41e9: 0x00c0, - 0x41ea: 0x00c0, 0x41eb: 0x00c0, 0x41ec: 0x00c0, 0x41ed: 0x00c0, 0x41ee: 0x00c0, - // Block 0x108, offset 0x4200 - 0x4200: 0x00c0, 0x4201: 0x00c0, 0x4202: 0x00c0, 0x4203: 0x00c0, 0x4204: 0x00c0, 0x4205: 0x00c0, - 0x4206: 0x00c0, - // Block 0x109, offset 0x4240 - 0x4240: 0x00c0, 0x4241: 0x00c0, 0x4242: 0x00c0, 0x4243: 0x00c0, 0x4244: 0x00c0, 0x4245: 0x00c0, - 0x4246: 0x00c0, 0x4247: 0x00c0, 0x4248: 0x00c0, 0x4249: 0x00c0, 0x424a: 0x00c0, 0x424b: 0x00c0, - 0x424c: 0x00c0, 0x424d: 0x00c0, 0x424e: 0x00c0, 0x424f: 0x00c0, 0x4250: 0x00c0, 0x4251: 0x00c0, - 0x4252: 0x00c0, 0x4253: 0x00c0, 0x4254: 0x00c0, 0x4255: 0x00c0, 0x4256: 0x00c0, 0x4257: 0x00c0, - 0x4258: 0x00c0, 0x4259: 0x00c0, 0x425a: 0x00c0, 0x425b: 0x00c0, 0x425c: 0x00c0, 0x425d: 0x00c0, - 0x425e: 0x00c0, 0x4260: 0x00c0, 0x4261: 0x00c0, 0x4262: 0x00c0, 0x4263: 0x00c0, - 0x4264: 0x00c0, 0x4265: 0x00c0, 0x4266: 0x00c0, 0x4267: 0x00c0, 0x4268: 0x00c0, 0x4269: 0x00c0, - 0x426e: 0x0080, 0x426f: 0x0080, - // Block 0x10a, offset 0x4280 - 0x4290: 0x00c0, 0x4291: 0x00c0, - 0x4292: 0x00c0, 0x4293: 0x00c0, 0x4294: 0x00c0, 0x4295: 0x00c0, 0x4296: 0x00c0, 0x4297: 0x00c0, - 0x4298: 0x00c0, 0x4299: 0x00c0, 0x429a: 0x00c0, 0x429b: 0x00c0, 0x429c: 0x00c0, 0x429d: 0x00c0, - 0x429e: 0x00c0, 0x429f: 0x00c0, 0x42a0: 0x00c0, 0x42a1: 0x00c0, 0x42a2: 0x00c0, 0x42a3: 0x00c0, - 0x42a4: 0x00c0, 0x42a5: 0x00c0, 0x42a6: 0x00c0, 0x42a7: 0x00c0, 0x42a8: 0x00c0, 0x42a9: 0x00c0, - 0x42aa: 0x00c0, 0x42ab: 0x00c0, 0x42ac: 0x00c0, 0x42ad: 0x00c0, - 0x42b0: 0x00c3, 0x42b1: 0x00c3, 0x42b2: 0x00c3, 0x42b3: 0x00c3, 0x42b4: 0x00c3, 0x42b5: 0x0080, - // Block 0x10b, offset 0x42c0 - 0x42c0: 0x00c0, 0x42c1: 0x00c0, 0x42c2: 0x00c0, 0x42c3: 0x00c0, 0x42c4: 0x00c0, 0x42c5: 0x00c0, - 0x42c6: 0x00c0, 0x42c7: 0x00c0, 0x42c8: 0x00c0, 0x42c9: 0x00c0, 0x42ca: 0x00c0, 0x42cb: 0x00c0, - 0x42cc: 0x00c0, 0x42cd: 0x00c0, 0x42ce: 0x00c0, 0x42cf: 0x00c0, 0x42d0: 0x00c0, 0x42d1: 0x00c0, - 0x42d2: 0x00c0, 0x42d3: 0x00c0, 0x42d4: 0x00c0, 0x42d5: 0x00c0, 0x42d6: 0x00c0, 0x42d7: 0x00c0, - 0x42d8: 0x00c0, 0x42d9: 0x00c0, 0x42da: 0x00c0, 0x42db: 0x00c0, 0x42dc: 0x00c0, 0x42dd: 0x00c0, - 0x42de: 0x00c0, 0x42df: 0x00c0, 0x42e0: 0x00c0, 0x42e1: 0x00c0, 0x42e2: 0x00c0, 0x42e3: 0x00c0, - 0x42e4: 0x00c0, 0x42e5: 0x00c0, 0x42e6: 0x00c0, 0x42e7: 0x00c0, 0x42e8: 0x00c0, 0x42e9: 0x00c0, - 0x42ea: 0x00c0, 0x42eb: 0x00c0, 0x42ec: 0x00c0, 0x42ed: 0x00c0, 0x42ee: 0x00c0, 0x42ef: 0x00c0, - 0x42f0: 0x00c3, 0x42f1: 0x00c3, 0x42f2: 0x00c3, 0x42f3: 0x00c3, 0x42f4: 0x00c3, 0x42f5: 0x00c3, - 0x42f6: 0x00c3, 0x42f7: 0x0080, 0x42f8: 0x0080, 0x42f9: 0x0080, 0x42fa: 0x0080, 0x42fb: 0x0080, - 0x42fc: 0x0080, 0x42fd: 0x0080, 0x42fe: 0x0080, 0x42ff: 0x0080, - // Block 0x10c, offset 0x4300 - 0x4300: 0x00c0, 0x4301: 0x00c0, 0x4302: 0x00c0, 0x4303: 0x00c0, 0x4304: 0x0080, 0x4305: 0x0080, - 0x4310: 0x00c0, 0x4311: 0x00c0, - 0x4312: 0x00c0, 0x4313: 0x00c0, 0x4314: 0x00c0, 0x4315: 0x00c0, 0x4316: 0x00c0, 0x4317: 0x00c0, - 0x4318: 0x00c0, 0x4319: 0x00c0, 0x431b: 0x0080, 0x431c: 0x0080, 0x431d: 0x0080, - 0x431e: 0x0080, 0x431f: 0x0080, 0x4320: 0x0080, 0x4321: 0x0080, 0x4323: 0x00c0, - 0x4324: 0x00c0, 0x4325: 0x00c0, 0x4326: 0x00c0, 0x4327: 0x00c0, 0x4328: 0x00c0, 0x4329: 0x00c0, - 0x432a: 0x00c0, 0x432b: 0x00c0, 0x432c: 0x00c0, 0x432d: 0x00c0, 0x432e: 0x00c0, 0x432f: 0x00c0, - 0x4330: 0x00c0, 0x4331: 0x00c0, 0x4332: 0x00c0, 0x4333: 0x00c0, 0x4334: 0x00c0, 0x4335: 0x00c0, - 0x4336: 0x00c0, 0x4337: 0x00c0, - 0x433d: 0x00c0, 0x433e: 0x00c0, 0x433f: 0x00c0, - // Block 0x10d, offset 0x4340 - 0x4340: 0x00c0, 0x4341: 0x00c0, 0x4342: 0x00c0, 0x4343: 0x00c0, 0x4344: 0x00c0, 0x4345: 0x00c0, - 0x4346: 0x00c0, 0x4347: 0x00c0, 0x4348: 0x00c0, 0x4349: 0x00c0, 0x434a: 0x00c0, 0x434b: 0x00c0, - 0x434c: 0x00c0, 0x434d: 0x00c0, 0x434e: 0x00c0, 0x434f: 0x00c0, - // Block 0x10e, offset 0x4380 - 0x4380: 0x00c0, 0x4381: 0x00c0, 0x4382: 0x00c0, 0x4383: 0x00c0, 0x4384: 0x00c0, - 0x4390: 0x00c0, 0x4391: 0x00c0, - 0x4392: 0x00c0, 0x4393: 0x00c0, 0x4394: 0x00c0, 0x4395: 0x00c0, 0x4396: 0x00c0, 0x4397: 0x00c0, - 0x4398: 0x00c0, 0x4399: 0x00c0, 0x439a: 0x00c0, 0x439b: 0x00c0, 0x439c: 0x00c0, 0x439d: 0x00c0, - 0x439e: 0x00c0, 0x439f: 0x00c0, 0x43a0: 0x00c0, 0x43a1: 0x00c0, 0x43a2: 0x00c0, 0x43a3: 0x00c0, - 0x43a4: 0x00c0, 0x43a5: 0x00c0, 0x43a6: 0x00c0, 0x43a7: 0x00c0, 0x43a8: 0x00c0, 0x43a9: 0x00c0, - 0x43aa: 0x00c0, 0x43ab: 0x00c0, 0x43ac: 0x00c0, 0x43ad: 0x00c0, 0x43ae: 0x00c0, 0x43af: 0x00c0, - 0x43b0: 0x00c0, 0x43b1: 0x00c0, 0x43b2: 0x00c0, 0x43b3: 0x00c0, 0x43b4: 0x00c0, 0x43b5: 0x00c0, - 0x43b6: 0x00c0, 0x43b7: 0x00c0, 0x43b8: 0x00c0, 0x43b9: 0x00c0, 0x43ba: 0x00c0, 0x43bb: 0x00c0, - 0x43bc: 0x00c0, 0x43bd: 0x00c0, 0x43be: 0x00c0, - // Block 0x10f, offset 0x43c0 - 0x43cf: 0x00c3, 0x43d0: 0x00c3, 0x43d1: 0x00c3, - 0x43d2: 0x00c3, 0x43d3: 0x00c0, 0x43d4: 0x00c0, 0x43d5: 0x00c0, 0x43d6: 0x00c0, 0x43d7: 0x00c0, - 0x43d8: 0x00c0, 0x43d9: 0x00c0, 0x43da: 0x00c0, 0x43db: 0x00c0, 0x43dc: 0x00c0, 0x43dd: 0x00c0, - 0x43de: 0x00c0, 0x43df: 0x00c0, - // Block 0x110, offset 0x4400 - 0x4420: 0x00c0, 0x4421: 0x00c0, - // Block 0x111, offset 0x4440 - 0x4440: 0x00c0, 0x4441: 0x00c0, 0x4442: 0x00c0, 0x4443: 0x00c0, 0x4444: 0x00c0, 0x4445: 0x00c0, - 0x4446: 0x00c0, 0x4447: 0x00c0, 0x4448: 0x00c0, 0x4449: 0x00c0, 0x444a: 0x00c0, 0x444b: 0x00c0, - 0x444c: 0x00c0, 0x444d: 0x00c0, 0x444e: 0x00c0, 0x444f: 0x00c0, 0x4450: 0x00c0, 0x4451: 0x00c0, - 0x4452: 0x00c0, 0x4453: 0x00c0, 0x4454: 0x00c0, 0x4455: 0x00c0, 0x4456: 0x00c0, 0x4457: 0x00c0, - 0x4458: 0x00c0, 0x4459: 0x00c0, 0x445a: 0x00c0, 0x445b: 0x00c0, 0x445c: 0x00c0, 0x445d: 0x00c0, - 0x445e: 0x00c0, 0x445f: 0x00c0, 0x4460: 0x00c0, 0x4461: 0x00c0, 0x4462: 0x00c0, 0x4463: 0x00c0, - 0x4464: 0x00c0, 0x4465: 0x00c0, 0x4466: 0x00c0, 0x4467: 0x00c0, 0x4468: 0x00c0, 0x4469: 0x00c0, - 0x446a: 0x00c0, 0x446b: 0x00c0, 0x446c: 0x00c0, - // Block 0x112, offset 0x4480 - 0x4480: 0x00cc, 0x4481: 0x00cc, 0x4482: 0x00cc, 0x4483: 0x00cc, 0x4484: 0x00cc, 0x4485: 0x00cc, - 0x4486: 0x00cc, 0x4487: 0x00cc, 0x4488: 0x00cc, 0x4489: 0x00cc, 0x448a: 0x00cc, 0x448b: 0x00cc, - 0x448c: 0x00cc, 0x448d: 0x00cc, 0x448e: 0x00cc, 0x448f: 0x00cc, 0x4490: 0x00cc, 0x4491: 0x00cc, - 0x4492: 0x00cc, 0x4493: 0x00cc, 0x4494: 0x00cc, 0x4495: 0x00cc, 0x4496: 0x00cc, 0x4497: 0x00cc, - 0x4498: 0x00cc, 0x4499: 0x00cc, 0x449a: 0x00cc, 0x449b: 0x00cc, 0x449c: 0x00cc, 0x449d: 0x00cc, - 0x449e: 0x00cc, - // Block 0x113, offset 0x44c0 - 0x44f0: 0x00c0, 0x44f1: 0x00c0, 0x44f2: 0x00c0, 0x44f3: 0x00c0, 0x44f4: 0x00c0, 0x44f5: 0x00c0, - 0x44f6: 0x00c0, 0x44f7: 0x00c0, 0x44f8: 0x00c0, 0x44f9: 0x00c0, 0x44fa: 0x00c0, 0x44fb: 0x00c0, - 0x44fc: 0x00c0, 0x44fd: 0x00c0, 0x44fe: 0x00c0, 0x44ff: 0x00c0, - // Block 0x114, offset 0x4500 - 0x4500: 0x00c0, 0x4501: 0x00c0, 0x4502: 0x00c0, 0x4503: 0x00c0, 0x4504: 0x00c0, 0x4505: 0x00c0, - 0x4506: 0x00c0, 0x4507: 0x00c0, 0x4508: 0x00c0, 0x4509: 0x00c0, 0x450a: 0x00c0, 0x450b: 0x00c0, - 0x450c: 0x00c0, 0x450d: 0x00c0, 0x450e: 0x00c0, 0x450f: 0x00c0, 0x4510: 0x00c0, 0x4511: 0x00c0, - 0x4512: 0x00c0, 0x4513: 0x00c0, 0x4514: 0x00c0, 0x4515: 0x00c0, 0x4516: 0x00c0, 0x4517: 0x00c0, - 0x4518: 0x00c0, 0x4519: 0x00c0, 0x451a: 0x00c0, 0x451b: 0x00c0, 0x451c: 0x00c0, 0x451d: 0x00c0, - 0x451e: 0x00c0, 0x451f: 0x00c0, 0x4520: 0x00c0, 0x4521: 0x00c0, 0x4522: 0x00c0, 0x4523: 0x00c0, - 0x4524: 0x00c0, 0x4525: 0x00c0, 0x4526: 0x00c0, 0x4527: 0x00c0, 0x4528: 0x00c0, 0x4529: 0x00c0, - 0x452a: 0x00c0, 0x452b: 0x00c0, 0x452c: 0x00c0, 0x452d: 0x00c0, 0x452e: 0x00c0, 0x452f: 0x00c0, - 0x4530: 0x00c0, 0x4531: 0x00c0, 0x4532: 0x00c0, 0x4533: 0x00c0, 0x4534: 0x00c0, 0x4535: 0x00c0, - 0x4536: 0x00c0, 0x4537: 0x00c0, 0x4538: 0x00c0, 0x4539: 0x00c0, 0x453a: 0x00c0, 0x453b: 0x00c0, - // Block 0x115, offset 0x4540 - 0x4540: 0x00c0, 0x4541: 0x00c0, 0x4542: 0x00c0, 0x4543: 0x00c0, 0x4544: 0x00c0, 0x4545: 0x00c0, - 0x4546: 0x00c0, 0x4547: 0x00c0, 0x4548: 0x00c0, 0x4549: 0x00c0, 0x454a: 0x00c0, 0x454b: 0x00c0, - 0x454c: 0x00c0, 0x454d: 0x00c0, 0x454e: 0x00c0, 0x454f: 0x00c0, 0x4550: 0x00c0, 0x4551: 0x00c0, - 0x4552: 0x00c0, 0x4553: 0x00c0, 0x4554: 0x00c0, 0x4555: 0x00c0, 0x4556: 0x00c0, 0x4557: 0x00c0, - 0x4558: 0x00c0, 0x4559: 0x00c0, 0x455a: 0x00c0, 0x455b: 0x00c0, 0x455c: 0x00c0, 0x455d: 0x00c0, - 0x455e: 0x00c0, 0x455f: 0x00c0, 0x4560: 0x00c0, 0x4561: 0x00c0, 0x4562: 0x00c0, 0x4563: 0x00c0, - 0x4564: 0x00c0, 0x4565: 0x00c0, 0x4566: 0x00c0, 0x4567: 0x00c0, 0x4568: 0x00c0, 0x4569: 0x00c0, - 0x456a: 0x00c0, - 0x4570: 0x00c0, 0x4571: 0x00c0, 0x4572: 0x00c0, 0x4573: 0x00c0, 0x4574: 0x00c0, 0x4575: 0x00c0, - 0x4576: 0x00c0, 0x4577: 0x00c0, 0x4578: 0x00c0, 0x4579: 0x00c0, 0x457a: 0x00c0, 0x457b: 0x00c0, - 0x457c: 0x00c0, - // Block 0x116, offset 0x4580 - 0x4580: 0x00c0, 0x4581: 0x00c0, 0x4582: 0x00c0, 0x4583: 0x00c0, 0x4584: 0x00c0, 0x4585: 0x00c0, - 0x4586: 0x00c0, 0x4587: 0x00c0, 0x4588: 0x00c0, - 0x4590: 0x00c0, 0x4591: 0x00c0, - 0x4592: 0x00c0, 0x4593: 0x00c0, 0x4594: 0x00c0, 0x4595: 0x00c0, 0x4596: 0x00c0, 0x4597: 0x00c0, - 0x4598: 0x00c0, 0x4599: 0x00c0, 0x459c: 0x0080, 0x459d: 0x00c3, - 0x459e: 0x00c3, 0x459f: 0x0080, 0x45a0: 0x0040, 0x45a1: 0x0040, 0x45a2: 0x0040, 0x45a3: 0x0040, - // Block 0x117, offset 0x45c0 - 0x45c0: 0x0080, 0x45c1: 0x0080, 0x45c2: 0x0080, 0x45c3: 0x0080, 0x45c4: 0x0080, 0x45c5: 0x0080, - 0x45c6: 0x0080, 0x45c7: 0x0080, 0x45c8: 0x0080, 0x45c9: 0x0080, 0x45ca: 0x0080, 0x45cb: 0x0080, - 0x45cc: 0x0080, 0x45cd: 0x0080, 0x45ce: 0x0080, 0x45cf: 0x0080, 0x45d0: 0x0080, 0x45d1: 0x0080, - 0x45d2: 0x0080, 0x45d3: 0x0080, 0x45d4: 0x0080, 0x45d5: 0x0080, 0x45d6: 0x0080, 0x45d7: 0x0080, - 0x45d8: 0x0080, 0x45d9: 0x0080, 0x45da: 0x0080, 0x45db: 0x0080, 0x45dc: 0x0080, 0x45dd: 0x0080, - 0x45de: 0x0080, 0x45df: 0x0080, 0x45e0: 0x0080, 0x45e1: 0x0080, 0x45e2: 0x0080, 0x45e3: 0x0080, - 0x45e4: 0x0080, 0x45e5: 0x0080, 0x45e6: 0x0080, 0x45e7: 0x0080, 0x45e8: 0x0080, 0x45e9: 0x0080, - 0x45ea: 0x0080, 0x45eb: 0x0080, 0x45ec: 0x0080, 0x45ed: 0x0080, 0x45ee: 0x0080, 0x45ef: 0x0080, - 0x45f0: 0x0080, 0x45f1: 0x0080, 0x45f2: 0x0080, 0x45f3: 0x0080, 0x45f4: 0x0080, 0x45f5: 0x0080, - // Block 0x118, offset 0x4600 - 0x4600: 0x0080, 0x4601: 0x0080, 0x4602: 0x0080, 0x4603: 0x0080, 0x4604: 0x0080, 0x4605: 0x0080, - 0x4606: 0x0080, 0x4607: 0x0080, 0x4608: 0x0080, 0x4609: 0x0080, 0x460a: 0x0080, 0x460b: 0x0080, - 0x460c: 0x0080, 0x460d: 0x0080, 0x460e: 0x0080, 0x460f: 0x0080, 0x4610: 0x0080, 0x4611: 0x0080, - 0x4612: 0x0080, 0x4613: 0x0080, 0x4614: 0x0080, 0x4615: 0x0080, 0x4616: 0x0080, 0x4617: 0x0080, - 0x4618: 0x0080, 0x4619: 0x0080, 0x461a: 0x0080, 0x461b: 0x0080, 0x461c: 0x0080, 0x461d: 0x0080, - 0x461e: 0x0080, 0x461f: 0x0080, 0x4620: 0x0080, 0x4621: 0x0080, 0x4622: 0x0080, 0x4623: 0x0080, - 0x4624: 0x0080, 0x4625: 0x0080, 0x4626: 0x0080, 0x4629: 0x0080, - 0x462a: 0x0080, 0x462b: 0x0080, 0x462c: 0x0080, 0x462d: 0x0080, 0x462e: 0x0080, 0x462f: 0x0080, - 0x4630: 0x0080, 0x4631: 0x0080, 0x4632: 0x0080, 0x4633: 0x0080, 0x4634: 0x0080, 0x4635: 0x0080, - 0x4636: 0x0080, 0x4637: 0x0080, 0x4638: 0x0080, 0x4639: 0x0080, 0x463a: 0x0080, 0x463b: 0x0080, - 0x463c: 0x0080, 0x463d: 0x0080, 0x463e: 0x0080, 0x463f: 0x0080, - // Block 0x119, offset 0x4640 - 0x4640: 0x0080, 0x4641: 0x0080, 0x4642: 0x0080, 0x4643: 0x0080, 0x4644: 0x0080, 0x4645: 0x0080, - 0x4646: 0x0080, 0x4647: 0x0080, 0x4648: 0x0080, 0x4649: 0x0080, 0x464a: 0x0080, 0x464b: 0x0080, - 0x464c: 0x0080, 0x464d: 0x0080, 0x464e: 0x0080, 0x464f: 0x0080, 0x4650: 0x0080, 0x4651: 0x0080, - 0x4652: 0x0080, 0x4653: 0x0080, 0x4654: 0x0080, 0x4655: 0x0080, 0x4656: 0x0080, 0x4657: 0x0080, - 0x4658: 0x0080, 0x4659: 0x0080, 0x465a: 0x0080, 0x465b: 0x0080, 0x465c: 0x0080, 0x465d: 0x0080, - 0x465e: 0x0080, 0x465f: 0x0080, 0x4660: 0x0080, 0x4661: 0x0080, 0x4662: 0x0080, 0x4663: 0x0080, - 0x4664: 0x0080, 0x4665: 0x00c0, 0x4666: 0x00c0, 0x4667: 0x00c3, 0x4668: 0x00c3, 0x4669: 0x00c3, - 0x466a: 0x0080, 0x466b: 0x0080, 0x466c: 0x0080, 0x466d: 0x00c0, 0x466e: 0x00c0, 0x466f: 0x00c0, - 0x4670: 0x00c0, 0x4671: 0x00c0, 0x4672: 0x00c0, 0x4673: 0x0040, 0x4674: 0x0040, 0x4675: 0x0040, - 0x4676: 0x0040, 0x4677: 0x0040, 0x4678: 0x0040, 0x4679: 0x0040, 0x467a: 0x0040, 0x467b: 0x00c3, - 0x467c: 0x00c3, 0x467d: 0x00c3, 0x467e: 0x00c3, 0x467f: 0x00c3, - // Block 0x11a, offset 0x4680 - 0x4680: 0x00c3, 0x4681: 0x00c3, 0x4682: 0x00c3, 0x4683: 0x0080, 0x4684: 0x0080, 0x4685: 0x00c3, - 0x4686: 0x00c3, 0x4687: 0x00c3, 0x4688: 0x00c3, 0x4689: 0x00c3, 0x468a: 0x00c3, 0x468b: 0x00c3, - 0x468c: 0x0080, 0x468d: 0x0080, 0x468e: 0x0080, 0x468f: 0x0080, 0x4690: 0x0080, 0x4691: 0x0080, - 0x4692: 0x0080, 0x4693: 0x0080, 0x4694: 0x0080, 0x4695: 0x0080, 0x4696: 0x0080, 0x4697: 0x0080, - 0x4698: 0x0080, 0x4699: 0x0080, 0x469a: 0x0080, 0x469b: 0x0080, 0x469c: 0x0080, 0x469d: 0x0080, - 0x469e: 0x0080, 0x469f: 0x0080, 0x46a0: 0x0080, 0x46a1: 0x0080, 0x46a2: 0x0080, 0x46a3: 0x0080, - 0x46a4: 0x0080, 0x46a5: 0x0080, 0x46a6: 0x0080, 0x46a7: 0x0080, 0x46a8: 0x0080, 0x46a9: 0x0080, - 0x46aa: 0x00c3, 0x46ab: 0x00c3, 0x46ac: 0x00c3, 0x46ad: 0x00c3, 0x46ae: 0x0080, 0x46af: 0x0080, - 0x46b0: 0x0080, 0x46b1: 0x0080, 0x46b2: 0x0080, 0x46b3: 0x0080, 0x46b4: 0x0080, 0x46b5: 0x0080, - 0x46b6: 0x0080, 0x46b7: 0x0080, 0x46b8: 0x0080, 0x46b9: 0x0080, 0x46ba: 0x0080, 0x46bb: 0x0080, - 0x46bc: 0x0080, 0x46bd: 0x0080, 0x46be: 0x0080, 0x46bf: 0x0080, - // Block 0x11b, offset 0x46c0 - 0x46c0: 0x0080, 0x46c1: 0x0080, 0x46c2: 0x0080, 0x46c3: 0x0080, 0x46c4: 0x0080, 0x46c5: 0x0080, - 0x46c6: 0x0080, 0x46c7: 0x0080, 0x46c8: 0x0080, 0x46c9: 0x0080, 0x46ca: 0x0080, 0x46cb: 0x0080, - 0x46cc: 0x0080, 0x46cd: 0x0080, 0x46ce: 0x0080, 0x46cf: 0x0080, 0x46d0: 0x0080, 0x46d1: 0x0080, - 0x46d2: 0x0080, 0x46d3: 0x0080, 0x46d4: 0x0080, 0x46d5: 0x0080, 0x46d6: 0x0080, 0x46d7: 0x0080, - 0x46d8: 0x0080, 0x46d9: 0x0080, 0x46da: 0x0080, 0x46db: 0x0080, 0x46dc: 0x0080, 0x46dd: 0x0080, - 0x46de: 0x0080, 0x46df: 0x0080, 0x46e0: 0x0080, 0x46e1: 0x0080, 0x46e2: 0x0080, 0x46e3: 0x0080, - 0x46e4: 0x0080, 0x46e5: 0x0080, 0x46e6: 0x0080, 0x46e7: 0x0080, 0x46e8: 0x0080, - // Block 0x11c, offset 0x4700 - 0x4700: 0x0088, 0x4701: 0x0088, 0x4702: 0x00c9, 0x4703: 0x00c9, 0x4704: 0x00c9, 0x4705: 0x0088, - // Block 0x11d, offset 0x4740 - 0x4740: 0x0080, 0x4741: 0x0080, 0x4742: 0x0080, 0x4743: 0x0080, 0x4744: 0x0080, 0x4745: 0x0080, - 0x4746: 0x0080, 0x4747: 0x0080, 0x4748: 0x0080, 0x4749: 0x0080, 0x474a: 0x0080, 0x474b: 0x0080, - 0x474c: 0x0080, 0x474d: 0x0080, 0x474e: 0x0080, 0x474f: 0x0080, 0x4750: 0x0080, 0x4751: 0x0080, - 0x4752: 0x0080, 0x4753: 0x0080, 0x4754: 0x0080, 0x4755: 0x0080, 0x4756: 0x0080, - 0x4760: 0x0080, 0x4761: 0x0080, 0x4762: 0x0080, 0x4763: 0x0080, - 0x4764: 0x0080, 0x4765: 0x0080, 0x4766: 0x0080, 0x4767: 0x0080, 0x4768: 0x0080, 0x4769: 0x0080, - 0x476a: 0x0080, 0x476b: 0x0080, 0x476c: 0x0080, 0x476d: 0x0080, 0x476e: 0x0080, 0x476f: 0x0080, - 0x4770: 0x0080, 0x4771: 0x0080, - // Block 0x11e, offset 0x4780 - 0x4780: 0x0080, 0x4781: 0x0080, 0x4782: 0x0080, 0x4783: 0x0080, 0x4784: 0x0080, 0x4785: 0x0080, - 0x4786: 0x0080, 0x4787: 0x0080, 0x4788: 0x0080, 0x4789: 0x0080, 0x478a: 0x0080, 0x478b: 0x0080, - 0x478c: 0x0080, 0x478d: 0x0080, 0x478e: 0x0080, 0x478f: 0x0080, 0x4790: 0x0080, 0x4791: 0x0080, - 0x4792: 0x0080, 0x4793: 0x0080, 0x4794: 0x0080, 0x4796: 0x0080, 0x4797: 0x0080, - 0x4798: 0x0080, 0x4799: 0x0080, 0x479a: 0x0080, 0x479b: 0x0080, 0x479c: 0x0080, 0x479d: 0x0080, - 0x479e: 0x0080, 0x479f: 0x0080, 0x47a0: 0x0080, 0x47a1: 0x0080, 0x47a2: 0x0080, 0x47a3: 0x0080, - 0x47a4: 0x0080, 0x47a5: 0x0080, 0x47a6: 0x0080, 0x47a7: 0x0080, 0x47a8: 0x0080, 0x47a9: 0x0080, - 0x47aa: 0x0080, 0x47ab: 0x0080, 0x47ac: 0x0080, 0x47ad: 0x0080, 0x47ae: 0x0080, 0x47af: 0x0080, - 0x47b0: 0x0080, 0x47b1: 0x0080, 0x47b2: 0x0080, 0x47b3: 0x0080, 0x47b4: 0x0080, 0x47b5: 0x0080, - 0x47b6: 0x0080, 0x47b7: 0x0080, 0x47b8: 0x0080, 0x47b9: 0x0080, 0x47ba: 0x0080, 0x47bb: 0x0080, - 0x47bc: 0x0080, 0x47bd: 0x0080, 0x47be: 0x0080, 0x47bf: 0x0080, - // Block 0x11f, offset 0x47c0 - 0x47c0: 0x0080, 0x47c1: 0x0080, 0x47c2: 0x0080, 0x47c3: 0x0080, 0x47c4: 0x0080, 0x47c5: 0x0080, - 0x47c6: 0x0080, 0x47c7: 0x0080, 0x47c8: 0x0080, 0x47c9: 0x0080, 0x47ca: 0x0080, 0x47cb: 0x0080, - 0x47cc: 0x0080, 0x47cd: 0x0080, 0x47ce: 0x0080, 0x47cf: 0x0080, 0x47d0: 0x0080, 0x47d1: 0x0080, - 0x47d2: 0x0080, 0x47d3: 0x0080, 0x47d4: 0x0080, 0x47d5: 0x0080, 0x47d6: 0x0080, 0x47d7: 0x0080, - 0x47d8: 0x0080, 0x47d9: 0x0080, 0x47da: 0x0080, 0x47db: 0x0080, 0x47dc: 0x0080, - 0x47de: 0x0080, 0x47df: 0x0080, 0x47e2: 0x0080, - 0x47e5: 0x0080, 0x47e6: 0x0080, 0x47e9: 0x0080, - 0x47ea: 0x0080, 0x47eb: 0x0080, 0x47ec: 0x0080, 0x47ee: 0x0080, 0x47ef: 0x0080, - 0x47f0: 0x0080, 0x47f1: 0x0080, 0x47f2: 0x0080, 0x47f3: 0x0080, 0x47f4: 0x0080, 0x47f5: 0x0080, - 0x47f6: 0x0080, 0x47f7: 0x0080, 0x47f8: 0x0080, 0x47f9: 0x0080, 0x47fb: 0x0080, - 0x47fd: 0x0080, 0x47fe: 0x0080, 0x47ff: 0x0080, - // Block 0x120, offset 0x4800 - 0x4800: 0x0080, 0x4801: 0x0080, 0x4802: 0x0080, 0x4803: 0x0080, 0x4805: 0x0080, - 0x4806: 0x0080, 0x4807: 0x0080, 0x4808: 0x0080, 0x4809: 0x0080, 0x480a: 0x0080, 0x480b: 0x0080, - 0x480c: 0x0080, 0x480d: 0x0080, 0x480e: 0x0080, 0x480f: 0x0080, 0x4810: 0x0080, 0x4811: 0x0080, - 0x4812: 0x0080, 0x4813: 0x0080, 0x4814: 0x0080, 0x4815: 0x0080, 0x4816: 0x0080, 0x4817: 0x0080, - 0x4818: 0x0080, 0x4819: 0x0080, 0x481a: 0x0080, 0x481b: 0x0080, 0x481c: 0x0080, 0x481d: 0x0080, - 0x481e: 0x0080, 0x481f: 0x0080, 0x4820: 0x0080, 0x4821: 0x0080, 0x4822: 0x0080, 0x4823: 0x0080, - 0x4824: 0x0080, 0x4825: 0x0080, 0x4826: 0x0080, 0x4827: 0x0080, 0x4828: 0x0080, 0x4829: 0x0080, - 0x482a: 0x0080, 0x482b: 0x0080, 0x482c: 0x0080, 0x482d: 0x0080, 0x482e: 0x0080, 0x482f: 0x0080, - 0x4830: 0x0080, 0x4831: 0x0080, 0x4832: 0x0080, 0x4833: 0x0080, 0x4834: 0x0080, 0x4835: 0x0080, - 0x4836: 0x0080, 0x4837: 0x0080, 0x4838: 0x0080, 0x4839: 0x0080, 0x483a: 0x0080, 0x483b: 0x0080, - 0x483c: 0x0080, 0x483d: 0x0080, 0x483e: 0x0080, 0x483f: 0x0080, - // Block 0x121, offset 0x4840 - 0x4840: 0x0080, 0x4841: 0x0080, 0x4842: 0x0080, 0x4843: 0x0080, 0x4844: 0x0080, 0x4845: 0x0080, - 0x4847: 0x0080, 0x4848: 0x0080, 0x4849: 0x0080, 0x484a: 0x0080, - 0x484d: 0x0080, 0x484e: 0x0080, 0x484f: 0x0080, 0x4850: 0x0080, 0x4851: 0x0080, - 0x4852: 0x0080, 0x4853: 0x0080, 0x4854: 0x0080, 0x4856: 0x0080, 0x4857: 0x0080, - 0x4858: 0x0080, 0x4859: 0x0080, 0x485a: 0x0080, 0x485b: 0x0080, 0x485c: 0x0080, - 0x485e: 0x0080, 0x485f: 0x0080, 0x4860: 0x0080, 0x4861: 0x0080, 0x4862: 0x0080, 0x4863: 0x0080, - 0x4864: 0x0080, 0x4865: 0x0080, 0x4866: 0x0080, 0x4867: 0x0080, 0x4868: 0x0080, 0x4869: 0x0080, - 0x486a: 0x0080, 0x486b: 0x0080, 0x486c: 0x0080, 0x486d: 0x0080, 0x486e: 0x0080, 0x486f: 0x0080, - 0x4870: 0x0080, 0x4871: 0x0080, 0x4872: 0x0080, 0x4873: 0x0080, 0x4874: 0x0080, 0x4875: 0x0080, - 0x4876: 0x0080, 0x4877: 0x0080, 0x4878: 0x0080, 0x4879: 0x0080, 0x487b: 0x0080, - 0x487c: 0x0080, 0x487d: 0x0080, 0x487e: 0x0080, - // Block 0x122, offset 0x4880 - 0x4880: 0x0080, 0x4881: 0x0080, 0x4882: 0x0080, 0x4883: 0x0080, 0x4884: 0x0080, - 0x4886: 0x0080, 0x488a: 0x0080, 0x488b: 0x0080, - 0x488c: 0x0080, 0x488d: 0x0080, 0x488e: 0x0080, 0x488f: 0x0080, 0x4890: 0x0080, - 0x4892: 0x0080, 0x4893: 0x0080, 0x4894: 0x0080, 0x4895: 0x0080, 0x4896: 0x0080, 0x4897: 0x0080, - 0x4898: 0x0080, 0x4899: 0x0080, 0x489a: 0x0080, 0x489b: 0x0080, 0x489c: 0x0080, 0x489d: 0x0080, - 0x489e: 0x0080, 0x489f: 0x0080, 0x48a0: 0x0080, 0x48a1: 0x0080, 0x48a2: 0x0080, 0x48a3: 0x0080, - 0x48a4: 0x0080, 0x48a5: 0x0080, 0x48a6: 0x0080, 0x48a7: 0x0080, 0x48a8: 0x0080, 0x48a9: 0x0080, - 0x48aa: 0x0080, 0x48ab: 0x0080, 0x48ac: 0x0080, 0x48ad: 0x0080, 0x48ae: 0x0080, 0x48af: 0x0080, - 0x48b0: 0x0080, 0x48b1: 0x0080, 0x48b2: 0x0080, 0x48b3: 0x0080, 0x48b4: 0x0080, 0x48b5: 0x0080, - 0x48b6: 0x0080, 0x48b7: 0x0080, 0x48b8: 0x0080, 0x48b9: 0x0080, 0x48ba: 0x0080, 0x48bb: 0x0080, - 0x48bc: 0x0080, 0x48bd: 0x0080, 0x48be: 0x0080, 0x48bf: 0x0080, - // Block 0x123, offset 0x48c0 - 0x48c0: 0x0080, 0x48c1: 0x0080, 0x48c2: 0x0080, 0x48c3: 0x0080, 0x48c4: 0x0080, 0x48c5: 0x0080, - 0x48c6: 0x0080, 0x48c7: 0x0080, 0x48c8: 0x0080, 0x48c9: 0x0080, 0x48ca: 0x0080, 0x48cb: 0x0080, - 0x48cc: 0x0080, 0x48cd: 0x0080, 0x48ce: 0x0080, 0x48cf: 0x0080, 0x48d0: 0x0080, 0x48d1: 0x0080, - 0x48d2: 0x0080, 0x48d3: 0x0080, 0x48d4: 0x0080, 0x48d5: 0x0080, 0x48d6: 0x0080, 0x48d7: 0x0080, - 0x48d8: 0x0080, 0x48d9: 0x0080, 0x48da: 0x0080, 0x48db: 0x0080, 0x48dc: 0x0080, 0x48dd: 0x0080, - 0x48de: 0x0080, 0x48df: 0x0080, 0x48e0: 0x0080, 0x48e1: 0x0080, 0x48e2: 0x0080, 0x48e3: 0x0080, - 0x48e4: 0x0080, 0x48e5: 0x0080, 0x48e8: 0x0080, 0x48e9: 0x0080, - 0x48ea: 0x0080, 0x48eb: 0x0080, 0x48ec: 0x0080, 0x48ed: 0x0080, 0x48ee: 0x0080, 0x48ef: 0x0080, - 0x48f0: 0x0080, 0x48f1: 0x0080, 0x48f2: 0x0080, 0x48f3: 0x0080, 0x48f4: 0x0080, 0x48f5: 0x0080, - 0x48f6: 0x0080, 0x48f7: 0x0080, 0x48f8: 0x0080, 0x48f9: 0x0080, 0x48fa: 0x0080, 0x48fb: 0x0080, - 0x48fc: 0x0080, 0x48fd: 0x0080, 0x48fe: 0x0080, 0x48ff: 0x0080, - // Block 0x124, offset 0x4900 - 0x4900: 0x0080, 0x4901: 0x0080, 0x4902: 0x0080, 0x4903: 0x0080, 0x4904: 0x0080, 0x4905: 0x0080, - 0x4906: 0x0080, 0x4907: 0x0080, 0x4908: 0x0080, 0x4909: 0x0080, 0x490a: 0x0080, 0x490b: 0x0080, - 0x490e: 0x0080, 0x490f: 0x0080, 0x4910: 0x0080, 0x4911: 0x0080, - 0x4912: 0x0080, 0x4913: 0x0080, 0x4914: 0x0080, 0x4915: 0x0080, 0x4916: 0x0080, 0x4917: 0x0080, - 0x4918: 0x0080, 0x4919: 0x0080, 0x491a: 0x0080, 0x491b: 0x0080, 0x491c: 0x0080, 0x491d: 0x0080, - 0x491e: 0x0080, 0x491f: 0x0080, 0x4920: 0x0080, 0x4921: 0x0080, 0x4922: 0x0080, 0x4923: 0x0080, - 0x4924: 0x0080, 0x4925: 0x0080, 0x4926: 0x0080, 0x4927: 0x0080, 0x4928: 0x0080, 0x4929: 0x0080, - 0x492a: 0x0080, 0x492b: 0x0080, 0x492c: 0x0080, 0x492d: 0x0080, 0x492e: 0x0080, 0x492f: 0x0080, - 0x4930: 0x0080, 0x4931: 0x0080, 0x4932: 0x0080, 0x4933: 0x0080, 0x4934: 0x0080, 0x4935: 0x0080, - 0x4936: 0x0080, 0x4937: 0x0080, 0x4938: 0x0080, 0x4939: 0x0080, 0x493a: 0x0080, 0x493b: 0x0080, - 0x493c: 0x0080, 0x493d: 0x0080, 0x493e: 0x0080, 0x493f: 0x0080, - // Block 0x125, offset 0x4940 - 0x4940: 0x00c3, 0x4941: 0x00c3, 0x4942: 0x00c3, 0x4943: 0x00c3, 0x4944: 0x00c3, 0x4945: 0x00c3, - 0x4946: 0x00c3, 0x4947: 0x00c3, 0x4948: 0x00c3, 0x4949: 0x00c3, 0x494a: 0x00c3, 0x494b: 0x00c3, - 0x494c: 0x00c3, 0x494d: 0x00c3, 0x494e: 0x00c3, 0x494f: 0x00c3, 0x4950: 0x00c3, 0x4951: 0x00c3, - 0x4952: 0x00c3, 0x4953: 0x00c3, 0x4954: 0x00c3, 0x4955: 0x00c3, 0x4956: 0x00c3, 0x4957: 0x00c3, - 0x4958: 0x00c3, 0x4959: 0x00c3, 0x495a: 0x00c3, 0x495b: 0x00c3, 0x495c: 0x00c3, 0x495d: 0x00c3, - 0x495e: 0x00c3, 0x495f: 0x00c3, 0x4960: 0x00c3, 0x4961: 0x00c3, 0x4962: 0x00c3, 0x4963: 0x00c3, - 0x4964: 0x00c3, 0x4965: 0x00c3, 0x4966: 0x00c3, 0x4967: 0x00c3, 0x4968: 0x00c3, 0x4969: 0x00c3, - 0x496a: 0x00c3, 0x496b: 0x00c3, 0x496c: 0x00c3, 0x496d: 0x00c3, 0x496e: 0x00c3, 0x496f: 0x00c3, - 0x4970: 0x00c3, 0x4971: 0x00c3, 0x4972: 0x00c3, 0x4973: 0x00c3, 0x4974: 0x00c3, 0x4975: 0x00c3, - 0x4976: 0x00c3, 0x4977: 0x0080, 0x4978: 0x0080, 0x4979: 0x0080, 0x497a: 0x0080, 0x497b: 0x00c3, - 0x497c: 0x00c3, 0x497d: 0x00c3, 0x497e: 0x00c3, 0x497f: 0x00c3, - // Block 0x126, offset 0x4980 - 0x4980: 0x00c3, 0x4981: 0x00c3, 0x4982: 0x00c3, 0x4983: 0x00c3, 0x4984: 0x00c3, 0x4985: 0x00c3, - 0x4986: 0x00c3, 0x4987: 0x00c3, 0x4988: 0x00c3, 0x4989: 0x00c3, 0x498a: 0x00c3, 0x498b: 0x00c3, - 0x498c: 0x00c3, 0x498d: 0x00c3, 0x498e: 0x00c3, 0x498f: 0x00c3, 0x4990: 0x00c3, 0x4991: 0x00c3, - 0x4992: 0x00c3, 0x4993: 0x00c3, 0x4994: 0x00c3, 0x4995: 0x00c3, 0x4996: 0x00c3, 0x4997: 0x00c3, - 0x4998: 0x00c3, 0x4999: 0x00c3, 0x499a: 0x00c3, 0x499b: 0x00c3, 0x499c: 0x00c3, 0x499d: 0x00c3, - 0x499e: 0x00c3, 0x499f: 0x00c3, 0x49a0: 0x00c3, 0x49a1: 0x00c3, 0x49a2: 0x00c3, 0x49a3: 0x00c3, - 0x49a4: 0x00c3, 0x49a5: 0x00c3, 0x49a6: 0x00c3, 0x49a7: 0x00c3, 0x49a8: 0x00c3, 0x49a9: 0x00c3, - 0x49aa: 0x00c3, 0x49ab: 0x00c3, 0x49ac: 0x00c3, 0x49ad: 0x0080, 0x49ae: 0x0080, 0x49af: 0x0080, - 0x49b0: 0x0080, 0x49b1: 0x0080, 0x49b2: 0x0080, 0x49b3: 0x0080, 0x49b4: 0x0080, 0x49b5: 0x00c3, - 0x49b6: 0x0080, 0x49b7: 0x0080, 0x49b8: 0x0080, 0x49b9: 0x0080, 0x49ba: 0x0080, 0x49bb: 0x0080, - 0x49bc: 0x0080, 0x49bd: 0x0080, 0x49be: 0x0080, 0x49bf: 0x0080, - // Block 0x127, offset 0x49c0 - 0x49c0: 0x0080, 0x49c1: 0x0080, 0x49c2: 0x0080, 0x49c3: 0x0080, 0x49c4: 0x00c3, 0x49c5: 0x0080, - 0x49c6: 0x0080, 0x49c7: 0x0080, 0x49c8: 0x0080, 0x49c9: 0x0080, 0x49ca: 0x0080, 0x49cb: 0x0080, - 0x49db: 0x00c3, 0x49dc: 0x00c3, 0x49dd: 0x00c3, - 0x49de: 0x00c3, 0x49df: 0x00c3, 0x49e1: 0x00c3, 0x49e2: 0x00c3, 0x49e3: 0x00c3, - 0x49e4: 0x00c3, 0x49e5: 0x00c3, 0x49e6: 0x00c3, 0x49e7: 0x00c3, 0x49e8: 0x00c3, 0x49e9: 0x00c3, - 0x49ea: 0x00c3, 0x49eb: 0x00c3, 0x49ec: 0x00c3, 0x49ed: 0x00c3, 0x49ee: 0x00c3, 0x49ef: 0x00c3, - // Block 0x128, offset 0x4a00 - 0x4a00: 0x00c3, 0x4a01: 0x00c3, 0x4a02: 0x00c3, 0x4a03: 0x00c3, 0x4a04: 0x00c3, 0x4a05: 0x00c3, - 0x4a06: 0x00c3, 0x4a08: 0x00c3, 0x4a09: 0x00c3, 0x4a0a: 0x00c3, 0x4a0b: 0x00c3, - 0x4a0c: 0x00c3, 0x4a0d: 0x00c3, 0x4a0e: 0x00c3, 0x4a0f: 0x00c3, 0x4a10: 0x00c3, 0x4a11: 0x00c3, - 0x4a12: 0x00c3, 0x4a13: 0x00c3, 0x4a14: 0x00c3, 0x4a15: 0x00c3, 0x4a16: 0x00c3, 0x4a17: 0x00c3, - 0x4a18: 0x00c3, 0x4a1b: 0x00c3, 0x4a1c: 0x00c3, 0x4a1d: 0x00c3, - 0x4a1e: 0x00c3, 0x4a1f: 0x00c3, 0x4a20: 0x00c3, 0x4a21: 0x00c3, 0x4a23: 0x00c3, - 0x4a24: 0x00c3, 0x4a26: 0x00c3, 0x4a27: 0x00c3, 0x4a28: 0x00c3, 0x4a29: 0x00c3, - 0x4a2a: 0x00c3, - // Block 0x129, offset 0x4a40 - 0x4a40: 0x00c0, 0x4a41: 0x00c0, 0x4a42: 0x00c0, 0x4a43: 0x00c0, 0x4a44: 0x00c0, - 0x4a47: 0x0080, 0x4a48: 0x0080, 0x4a49: 0x0080, 0x4a4a: 0x0080, 0x4a4b: 0x0080, - 0x4a4c: 0x0080, 0x4a4d: 0x0080, 0x4a4e: 0x0080, 0x4a4f: 0x0080, 0x4a50: 0x00c3, 0x4a51: 0x00c3, - 0x4a52: 0x00c3, 0x4a53: 0x00c3, 0x4a54: 0x00c3, 0x4a55: 0x00c3, 0x4a56: 0x00c3, - // Block 0x12a, offset 0x4a80 - 0x4a80: 0x00c2, 0x4a81: 0x00c2, 0x4a82: 0x00c2, 0x4a83: 0x00c2, 0x4a84: 0x00c2, 0x4a85: 0x00c2, - 0x4a86: 0x00c2, 0x4a87: 0x00c2, 0x4a88: 0x00c2, 0x4a89: 0x00c2, 0x4a8a: 0x00c2, 0x4a8b: 0x00c2, - 0x4a8c: 0x00c2, 0x4a8d: 0x00c2, 0x4a8e: 0x00c2, 0x4a8f: 0x00c2, 0x4a90: 0x00c2, 0x4a91: 0x00c2, - 0x4a92: 0x00c2, 0x4a93: 0x00c2, 0x4a94: 0x00c2, 0x4a95: 0x00c2, 0x4a96: 0x00c2, 0x4a97: 0x00c2, - 0x4a98: 0x00c2, 0x4a99: 0x00c2, 0x4a9a: 0x00c2, 0x4a9b: 0x00c2, 0x4a9c: 0x00c2, 0x4a9d: 0x00c2, - 0x4a9e: 0x00c2, 0x4a9f: 0x00c2, 0x4aa0: 0x00c2, 0x4aa1: 0x00c2, 0x4aa2: 0x00c2, 0x4aa3: 0x00c2, - 0x4aa4: 0x00c2, 0x4aa5: 0x00c2, 0x4aa6: 0x00c2, 0x4aa7: 0x00c2, 0x4aa8: 0x00c2, 0x4aa9: 0x00c2, - 0x4aaa: 0x00c2, 0x4aab: 0x00c2, 0x4aac: 0x00c2, 0x4aad: 0x00c2, 0x4aae: 0x00c2, 0x4aaf: 0x00c2, - 0x4ab0: 0x00c2, 0x4ab1: 0x00c2, 0x4ab2: 0x00c2, 0x4ab3: 0x00c2, 0x4ab4: 0x00c2, 0x4ab5: 0x00c2, - 0x4ab6: 0x00c2, 0x4ab7: 0x00c2, 0x4ab8: 0x00c2, 0x4ab9: 0x00c2, 0x4aba: 0x00c2, 0x4abb: 0x00c2, - 0x4abc: 0x00c2, 0x4abd: 0x00c2, 0x4abe: 0x00c2, 0x4abf: 0x00c2, - // Block 0x12b, offset 0x4ac0 - 0x4ac0: 0x00c2, 0x4ac1: 0x00c2, 0x4ac2: 0x00c2, 0x4ac3: 0x00c2, 0x4ac4: 0x00c3, 0x4ac5: 0x00c3, - 0x4ac6: 0x00c3, 0x4ac7: 0x00c3, 0x4ac8: 0x00c3, 0x4ac9: 0x00c3, 0x4aca: 0x00c3, - 0x4ad0: 0x00c0, 0x4ad1: 0x00c0, - 0x4ad2: 0x00c0, 0x4ad3: 0x00c0, 0x4ad4: 0x00c0, 0x4ad5: 0x00c0, 0x4ad6: 0x00c0, 0x4ad7: 0x00c0, - 0x4ad8: 0x00c0, 0x4ad9: 0x00c0, - 0x4ade: 0x0080, 0x4adf: 0x0080, - // Block 0x12c, offset 0x4b00 - 0x4b00: 0x0080, 0x4b01: 0x0080, 0x4b02: 0x0080, 0x4b03: 0x0080, 0x4b05: 0x0080, - 0x4b06: 0x0080, 0x4b07: 0x0080, 0x4b08: 0x0080, 0x4b09: 0x0080, 0x4b0a: 0x0080, 0x4b0b: 0x0080, - 0x4b0c: 0x0080, 0x4b0d: 0x0080, 0x4b0e: 0x0080, 0x4b0f: 0x0080, 0x4b10: 0x0080, 0x4b11: 0x0080, - 0x4b12: 0x0080, 0x4b13: 0x0080, 0x4b14: 0x0080, 0x4b15: 0x0080, 0x4b16: 0x0080, 0x4b17: 0x0080, - 0x4b18: 0x0080, 0x4b19: 0x0080, 0x4b1a: 0x0080, 0x4b1b: 0x0080, 0x4b1c: 0x0080, 0x4b1d: 0x0080, - 0x4b1e: 0x0080, 0x4b1f: 0x0080, 0x4b21: 0x0080, 0x4b22: 0x0080, - 0x4b24: 0x0080, 0x4b27: 0x0080, 0x4b29: 0x0080, - 0x4b2a: 0x0080, 0x4b2b: 0x0080, 0x4b2c: 0x0080, 0x4b2d: 0x0080, 0x4b2e: 0x0080, 0x4b2f: 0x0080, - 0x4b30: 0x0080, 0x4b31: 0x0080, 0x4b32: 0x0080, 0x4b34: 0x0080, 0x4b35: 0x0080, - 0x4b36: 0x0080, 0x4b37: 0x0080, 0x4b39: 0x0080, 0x4b3b: 0x0080, - // Block 0x12d, offset 0x4b40 - 0x4b42: 0x0080, - 0x4b47: 0x0080, 0x4b49: 0x0080, 0x4b4b: 0x0080, - 0x4b4d: 0x0080, 0x4b4e: 0x0080, 0x4b4f: 0x0080, 0x4b51: 0x0080, - 0x4b52: 0x0080, 0x4b54: 0x0080, 0x4b57: 0x0080, - 0x4b59: 0x0080, 0x4b5b: 0x0080, 0x4b5d: 0x0080, - 0x4b5f: 0x0080, 0x4b61: 0x0080, 0x4b62: 0x0080, - 0x4b64: 0x0080, 0x4b67: 0x0080, 0x4b68: 0x0080, 0x4b69: 0x0080, - 0x4b6a: 0x0080, 0x4b6c: 0x0080, 0x4b6d: 0x0080, 0x4b6e: 0x0080, 0x4b6f: 0x0080, - 0x4b70: 0x0080, 0x4b71: 0x0080, 0x4b72: 0x0080, 0x4b74: 0x0080, 0x4b75: 0x0080, - 0x4b76: 0x0080, 0x4b77: 0x0080, 0x4b79: 0x0080, 0x4b7a: 0x0080, 0x4b7b: 0x0080, - 0x4b7c: 0x0080, 0x4b7e: 0x0080, - // Block 0x12e, offset 0x4b80 - 0x4b80: 0x0080, 0x4b81: 0x0080, 0x4b82: 0x0080, 0x4b83: 0x0080, 0x4b84: 0x0080, 0x4b85: 0x0080, - 0x4b86: 0x0080, 0x4b87: 0x0080, 0x4b88: 0x0080, 0x4b89: 0x0080, 0x4b8b: 0x0080, - 0x4b8c: 0x0080, 0x4b8d: 0x0080, 0x4b8e: 0x0080, 0x4b8f: 0x0080, 0x4b90: 0x0080, 0x4b91: 0x0080, - 0x4b92: 0x0080, 0x4b93: 0x0080, 0x4b94: 0x0080, 0x4b95: 0x0080, 0x4b96: 0x0080, 0x4b97: 0x0080, - 0x4b98: 0x0080, 0x4b99: 0x0080, 0x4b9a: 0x0080, 0x4b9b: 0x0080, - 0x4ba1: 0x0080, 0x4ba2: 0x0080, 0x4ba3: 0x0080, - 0x4ba5: 0x0080, 0x4ba6: 0x0080, 0x4ba7: 0x0080, 0x4ba8: 0x0080, 0x4ba9: 0x0080, - 0x4bab: 0x0080, 0x4bac: 0x0080, 0x4bad: 0x0080, 0x4bae: 0x0080, 0x4baf: 0x0080, - 0x4bb0: 0x0080, 0x4bb1: 0x0080, 0x4bb2: 0x0080, 0x4bb3: 0x0080, 0x4bb4: 0x0080, 0x4bb5: 0x0080, - 0x4bb6: 0x0080, 0x4bb7: 0x0080, 0x4bb8: 0x0080, 0x4bb9: 0x0080, 0x4bba: 0x0080, 0x4bbb: 0x0080, - // Block 0x12f, offset 0x4bc0 - 0x4bf0: 0x0080, 0x4bf1: 0x0080, - // Block 0x130, offset 0x4c00 - 0x4c00: 0x0080, 0x4c01: 0x0080, 0x4c02: 0x0080, 0x4c03: 0x0080, 0x4c04: 0x0080, 0x4c05: 0x0080, - 0x4c06: 0x0080, 0x4c07: 0x0080, 0x4c08: 0x0080, 0x4c09: 0x0080, 0x4c0a: 0x0080, 0x4c0b: 0x0080, - 0x4c0c: 0x0080, 0x4c0d: 0x0080, 0x4c0e: 0x0080, 0x4c0f: 0x0080, 0x4c10: 0x0080, 0x4c11: 0x0080, - 0x4c12: 0x0080, 0x4c13: 0x0080, 0x4c14: 0x0080, 0x4c15: 0x0080, 0x4c16: 0x0080, 0x4c17: 0x0080, - 0x4c18: 0x0080, 0x4c19: 0x0080, 0x4c1a: 0x0080, 0x4c1b: 0x0080, 0x4c1c: 0x0080, 0x4c1d: 0x0080, - 0x4c1e: 0x0080, 0x4c1f: 0x0080, 0x4c20: 0x0080, 0x4c21: 0x0080, 0x4c22: 0x0080, 0x4c23: 0x0080, - 0x4c24: 0x0080, 0x4c25: 0x0080, 0x4c26: 0x0080, 0x4c27: 0x0080, 0x4c28: 0x0080, 0x4c29: 0x0080, - 0x4c2a: 0x0080, 0x4c2b: 0x0080, - 0x4c30: 0x0080, 0x4c31: 0x0080, 0x4c32: 0x0080, 0x4c33: 0x0080, 0x4c34: 0x0080, 0x4c35: 0x0080, - 0x4c36: 0x0080, 0x4c37: 0x0080, 0x4c38: 0x0080, 0x4c39: 0x0080, 0x4c3a: 0x0080, 0x4c3b: 0x0080, - 0x4c3c: 0x0080, 0x4c3d: 0x0080, 0x4c3e: 0x0080, 0x4c3f: 0x0080, - // Block 0x131, offset 0x4c40 - 0x4c40: 0x0080, 0x4c41: 0x0080, 0x4c42: 0x0080, 0x4c43: 0x0080, 0x4c44: 0x0080, 0x4c45: 0x0080, - 0x4c46: 0x0080, 0x4c47: 0x0080, 0x4c48: 0x0080, 0x4c49: 0x0080, 0x4c4a: 0x0080, 0x4c4b: 0x0080, - 0x4c4c: 0x0080, 0x4c4d: 0x0080, 0x4c4e: 0x0080, 0x4c4f: 0x0080, 0x4c50: 0x0080, 0x4c51: 0x0080, - 0x4c52: 0x0080, 0x4c53: 0x0080, - 0x4c60: 0x0080, 0x4c61: 0x0080, 0x4c62: 0x0080, 0x4c63: 0x0080, - 0x4c64: 0x0080, 0x4c65: 0x0080, 0x4c66: 0x0080, 0x4c67: 0x0080, 0x4c68: 0x0080, 0x4c69: 0x0080, - 0x4c6a: 0x0080, 0x4c6b: 0x0080, 0x4c6c: 0x0080, 0x4c6d: 0x0080, 0x4c6e: 0x0080, - 0x4c71: 0x0080, 0x4c72: 0x0080, 0x4c73: 0x0080, 0x4c74: 0x0080, 0x4c75: 0x0080, - 0x4c76: 0x0080, 0x4c77: 0x0080, 0x4c78: 0x0080, 0x4c79: 0x0080, 0x4c7a: 0x0080, 0x4c7b: 0x0080, - 0x4c7c: 0x0080, 0x4c7d: 0x0080, 0x4c7e: 0x0080, 0x4c7f: 0x0080, - // Block 0x132, offset 0x4c80 - 0x4c81: 0x0080, 0x4c82: 0x0080, 0x4c83: 0x0080, 0x4c84: 0x0080, 0x4c85: 0x0080, - 0x4c86: 0x0080, 0x4c87: 0x0080, 0x4c88: 0x0080, 0x4c89: 0x0080, 0x4c8a: 0x0080, 0x4c8b: 0x0080, - 0x4c8c: 0x0080, 0x4c8d: 0x0080, 0x4c8e: 0x0080, 0x4c8f: 0x0080, 0x4c91: 0x0080, - 0x4c92: 0x0080, 0x4c93: 0x0080, 0x4c94: 0x0080, 0x4c95: 0x0080, 0x4c96: 0x0080, 0x4c97: 0x0080, - 0x4c98: 0x0080, 0x4c99: 0x0080, 0x4c9a: 0x0080, 0x4c9b: 0x0080, 0x4c9c: 0x0080, 0x4c9d: 0x0080, - 0x4c9e: 0x0080, 0x4c9f: 0x0080, 0x4ca0: 0x0080, 0x4ca1: 0x0080, 0x4ca2: 0x0080, 0x4ca3: 0x0080, - 0x4ca4: 0x0080, 0x4ca5: 0x0080, 0x4ca6: 0x0080, 0x4ca7: 0x0080, 0x4ca8: 0x0080, 0x4ca9: 0x0080, - 0x4caa: 0x0080, 0x4cab: 0x0080, 0x4cac: 0x0080, 0x4cad: 0x0080, 0x4cae: 0x0080, 0x4caf: 0x0080, - 0x4cb0: 0x0080, 0x4cb1: 0x0080, 0x4cb2: 0x0080, 0x4cb3: 0x0080, 0x4cb4: 0x0080, 0x4cb5: 0x0080, - // Block 0x133, offset 0x4cc0 - 0x4cc0: 0x0080, 0x4cc1: 0x0080, 0x4cc2: 0x0080, 0x4cc3: 0x0080, 0x4cc4: 0x0080, 0x4cc5: 0x0080, - 0x4cc6: 0x0080, 0x4cc7: 0x0080, 0x4cc8: 0x0080, 0x4cc9: 0x0080, 0x4cca: 0x0080, 0x4ccb: 0x0080, - 0x4ccc: 0x0080, 0x4cd0: 0x0080, 0x4cd1: 0x0080, - 0x4cd2: 0x0080, 0x4cd3: 0x0080, 0x4cd4: 0x0080, 0x4cd5: 0x0080, 0x4cd6: 0x0080, 0x4cd7: 0x0080, - 0x4cd8: 0x0080, 0x4cd9: 0x0080, 0x4cda: 0x0080, 0x4cdb: 0x0080, 0x4cdc: 0x0080, 0x4cdd: 0x0080, - 0x4cde: 0x0080, 0x4cdf: 0x0080, 0x4ce0: 0x0080, 0x4ce1: 0x0080, 0x4ce2: 0x0080, 0x4ce3: 0x0080, - 0x4ce4: 0x0080, 0x4ce5: 0x0080, 0x4ce6: 0x0080, 0x4ce7: 0x0080, 0x4ce8: 0x0080, 0x4ce9: 0x0080, - 0x4cea: 0x0080, 0x4ceb: 0x0080, 0x4cec: 0x0080, 0x4ced: 0x0080, 0x4cee: 0x0080, - 0x4cf0: 0x0080, 0x4cf1: 0x0080, 0x4cf2: 0x0080, 0x4cf3: 0x0080, 0x4cf4: 0x0080, 0x4cf5: 0x0080, - 0x4cf6: 0x0080, 0x4cf7: 0x0080, 0x4cf8: 0x0080, 0x4cf9: 0x0080, 0x4cfa: 0x0080, 0x4cfb: 0x0080, - 0x4cfc: 0x0080, 0x4cfd: 0x0080, 0x4cfe: 0x0080, 0x4cff: 0x0080, - // Block 0x134, offset 0x4d00 - 0x4d00: 0x0080, 0x4d01: 0x0080, 0x4d02: 0x0080, 0x4d03: 0x0080, 0x4d04: 0x0080, 0x4d05: 0x0080, - 0x4d06: 0x0080, 0x4d07: 0x0080, 0x4d08: 0x0080, 0x4d09: 0x0080, 0x4d0a: 0x0080, 0x4d0b: 0x0080, - 0x4d0c: 0x0080, 0x4d0d: 0x0080, 0x4d0e: 0x0080, 0x4d0f: 0x0080, 0x4d10: 0x0080, 0x4d11: 0x0080, - 0x4d12: 0x0080, 0x4d13: 0x0080, 0x4d14: 0x0080, 0x4d15: 0x0080, 0x4d16: 0x0080, 0x4d17: 0x0080, - 0x4d18: 0x0080, 0x4d19: 0x0080, 0x4d1a: 0x0080, 0x4d1b: 0x0080, 0x4d1c: 0x0080, 0x4d1d: 0x0080, - 0x4d1e: 0x0080, 0x4d1f: 0x0080, 0x4d20: 0x0080, 0x4d21: 0x0080, 0x4d22: 0x0080, 0x4d23: 0x0080, - 0x4d24: 0x0080, 0x4d25: 0x0080, 0x4d26: 0x0080, 0x4d27: 0x0080, 0x4d28: 0x0080, 0x4d29: 0x0080, - 0x4d2a: 0x0080, 0x4d2b: 0x0080, 0x4d2c: 0x0080, - // Block 0x135, offset 0x4d40 - 0x4d66: 0x0080, 0x4d67: 0x0080, 0x4d68: 0x0080, 0x4d69: 0x0080, - 0x4d6a: 0x0080, 0x4d6b: 0x0080, 0x4d6c: 0x0080, 0x4d6d: 0x0080, 0x4d6e: 0x0080, 0x4d6f: 0x0080, - 0x4d70: 0x0080, 0x4d71: 0x0080, 0x4d72: 0x0080, 0x4d73: 0x0080, 0x4d74: 0x0080, 0x4d75: 0x0080, - 0x4d76: 0x0080, 0x4d77: 0x0080, 0x4d78: 0x0080, 0x4d79: 0x0080, 0x4d7a: 0x0080, 0x4d7b: 0x0080, - 0x4d7c: 0x0080, 0x4d7d: 0x0080, 0x4d7e: 0x0080, 0x4d7f: 0x0080, - // Block 0x136, offset 0x4d80 - 0x4d80: 0x008c, 0x4d81: 0x0080, 0x4d82: 0x0080, - 0x4d90: 0x0080, 0x4d91: 0x0080, - 0x4d92: 0x0080, 0x4d93: 0x0080, 0x4d94: 0x0080, 0x4d95: 0x0080, 0x4d96: 0x0080, 0x4d97: 0x0080, - 0x4d98: 0x0080, 0x4d99: 0x0080, 0x4d9a: 0x0080, 0x4d9b: 0x0080, 0x4d9c: 0x0080, 0x4d9d: 0x0080, - 0x4d9e: 0x0080, 0x4d9f: 0x0080, 0x4da0: 0x0080, 0x4da1: 0x0080, 0x4da2: 0x0080, 0x4da3: 0x0080, - 0x4da4: 0x0080, 0x4da5: 0x0080, 0x4da6: 0x0080, 0x4da7: 0x0080, 0x4da8: 0x0080, 0x4da9: 0x0080, - 0x4daa: 0x0080, 0x4dab: 0x0080, 0x4dac: 0x0080, 0x4dad: 0x0080, 0x4dae: 0x0080, 0x4daf: 0x0080, - 0x4db0: 0x0080, 0x4db1: 0x0080, 0x4db2: 0x0080, 0x4db3: 0x0080, 0x4db4: 0x0080, 0x4db5: 0x0080, - 0x4db6: 0x0080, 0x4db7: 0x0080, 0x4db8: 0x0080, 0x4db9: 0x0080, 0x4dba: 0x0080, 0x4dbb: 0x0080, - // Block 0x137, offset 0x4dc0 - 0x4dc0: 0x0080, 0x4dc1: 0x0080, 0x4dc2: 0x0080, 0x4dc3: 0x0080, 0x4dc4: 0x0080, 0x4dc5: 0x0080, - 0x4dc6: 0x0080, 0x4dc7: 0x0080, 0x4dc8: 0x0080, - 0x4dd0: 0x0080, 0x4dd1: 0x0080, - 0x4de0: 0x0080, 0x4de1: 0x0080, 0x4de2: 0x0080, 0x4de3: 0x0080, - 0x4de4: 0x0080, 0x4de5: 0x0080, - // Block 0x138, offset 0x4e00 - 0x4e00: 0x0080, 0x4e01: 0x0080, 0x4e02: 0x0080, 0x4e03: 0x0080, 0x4e04: 0x0080, 0x4e05: 0x0080, - 0x4e06: 0x0080, 0x4e07: 0x0080, 0x4e08: 0x0080, 0x4e09: 0x0080, 0x4e0a: 0x0080, 0x4e0b: 0x0080, - 0x4e0c: 0x0080, 0x4e0d: 0x0080, 0x4e0e: 0x0080, 0x4e0f: 0x0080, 0x4e10: 0x0080, 0x4e11: 0x0080, - 0x4e12: 0x0080, 0x4e13: 0x0080, 0x4e14: 0x0080, - 0x4e20: 0x0080, 0x4e21: 0x0080, 0x4e22: 0x0080, 0x4e23: 0x0080, - 0x4e24: 0x0080, 0x4e25: 0x0080, 0x4e26: 0x0080, 0x4e27: 0x0080, 0x4e28: 0x0080, 0x4e29: 0x0080, - 0x4e2a: 0x0080, 0x4e2b: 0x0080, 0x4e2c: 0x0080, - 0x4e30: 0x0080, 0x4e31: 0x0080, 0x4e32: 0x0080, 0x4e33: 0x0080, 0x4e34: 0x0080, 0x4e35: 0x0080, - 0x4e36: 0x0080, 0x4e37: 0x0080, 0x4e38: 0x0080, - // Block 0x139, offset 0x4e40 - 0x4e40: 0x0080, 0x4e41: 0x0080, 0x4e42: 0x0080, 0x4e43: 0x0080, 0x4e44: 0x0080, 0x4e45: 0x0080, - 0x4e46: 0x0080, 0x4e47: 0x0080, 0x4e48: 0x0080, 0x4e49: 0x0080, 0x4e4a: 0x0080, 0x4e4b: 0x0080, - 0x4e4c: 0x0080, 0x4e4d: 0x0080, 0x4e4e: 0x0080, 0x4e4f: 0x0080, 0x4e50: 0x0080, 0x4e51: 0x0080, - 0x4e52: 0x0080, 0x4e53: 0x0080, 0x4e54: 0x0080, 0x4e55: 0x0080, 0x4e56: 0x0080, 0x4e57: 0x0080, - 0x4e58: 0x0080, 0x4e59: 0x0080, 0x4e5a: 0x0080, 0x4e5b: 0x0080, 0x4e5c: 0x0080, 0x4e5d: 0x0080, - 0x4e5e: 0x0080, 0x4e5f: 0x0080, 0x4e60: 0x0080, 0x4e61: 0x0080, 0x4e62: 0x0080, 0x4e63: 0x0080, - 0x4e64: 0x0080, 0x4e65: 0x0080, 0x4e66: 0x0080, 0x4e67: 0x0080, 0x4e68: 0x0080, 0x4e69: 0x0080, - 0x4e6a: 0x0080, 0x4e6b: 0x0080, 0x4e6c: 0x0080, 0x4e6d: 0x0080, 0x4e6e: 0x0080, 0x4e6f: 0x0080, - 0x4e70: 0x0080, 0x4e71: 0x0080, 0x4e72: 0x0080, 0x4e73: 0x0080, - // Block 0x13a, offset 0x4e80 - 0x4e80: 0x0080, 0x4e81: 0x0080, 0x4e82: 0x0080, 0x4e83: 0x0080, 0x4e84: 0x0080, 0x4e85: 0x0080, - 0x4e86: 0x0080, 0x4e87: 0x0080, 0x4e88: 0x0080, 0x4e89: 0x0080, 0x4e8a: 0x0080, 0x4e8b: 0x0080, - 0x4e8c: 0x0080, 0x4e8d: 0x0080, 0x4e8e: 0x0080, 0x4e8f: 0x0080, 0x4e90: 0x0080, 0x4e91: 0x0080, - 0x4e92: 0x0080, 0x4e93: 0x0080, 0x4e94: 0x0080, - // Block 0x13b, offset 0x4ec0 - 0x4ec0: 0x0080, 0x4ec1: 0x0080, 0x4ec2: 0x0080, 0x4ec3: 0x0080, 0x4ec4: 0x0080, 0x4ec5: 0x0080, - 0x4ec6: 0x0080, 0x4ec7: 0x0080, 0x4ec8: 0x0080, 0x4ec9: 0x0080, 0x4eca: 0x0080, 0x4ecb: 0x0080, - 0x4ed0: 0x0080, 0x4ed1: 0x0080, - 0x4ed2: 0x0080, 0x4ed3: 0x0080, 0x4ed4: 0x0080, 0x4ed5: 0x0080, 0x4ed6: 0x0080, 0x4ed7: 0x0080, - 0x4ed8: 0x0080, 0x4ed9: 0x0080, 0x4eda: 0x0080, 0x4edb: 0x0080, 0x4edc: 0x0080, 0x4edd: 0x0080, - 0x4ede: 0x0080, 0x4edf: 0x0080, 0x4ee0: 0x0080, 0x4ee1: 0x0080, 0x4ee2: 0x0080, 0x4ee3: 0x0080, - 0x4ee4: 0x0080, 0x4ee5: 0x0080, 0x4ee6: 0x0080, 0x4ee7: 0x0080, 0x4ee8: 0x0080, 0x4ee9: 0x0080, - 0x4eea: 0x0080, 0x4eeb: 0x0080, 0x4eec: 0x0080, 0x4eed: 0x0080, 0x4eee: 0x0080, 0x4eef: 0x0080, - 0x4ef0: 0x0080, 0x4ef1: 0x0080, 0x4ef2: 0x0080, 0x4ef3: 0x0080, 0x4ef4: 0x0080, 0x4ef5: 0x0080, - 0x4ef6: 0x0080, 0x4ef7: 0x0080, 0x4ef8: 0x0080, 0x4ef9: 0x0080, 0x4efa: 0x0080, 0x4efb: 0x0080, - 0x4efc: 0x0080, 0x4efd: 0x0080, 0x4efe: 0x0080, 0x4eff: 0x0080, - // Block 0x13c, offset 0x4f00 - 0x4f00: 0x0080, 0x4f01: 0x0080, 0x4f02: 0x0080, 0x4f03: 0x0080, 0x4f04: 0x0080, 0x4f05: 0x0080, - 0x4f06: 0x0080, 0x4f07: 0x0080, - 0x4f10: 0x0080, 0x4f11: 0x0080, - 0x4f12: 0x0080, 0x4f13: 0x0080, 0x4f14: 0x0080, 0x4f15: 0x0080, 0x4f16: 0x0080, 0x4f17: 0x0080, - 0x4f18: 0x0080, 0x4f19: 0x0080, - 0x4f20: 0x0080, 0x4f21: 0x0080, 0x4f22: 0x0080, 0x4f23: 0x0080, - 0x4f24: 0x0080, 0x4f25: 0x0080, 0x4f26: 0x0080, 0x4f27: 0x0080, 0x4f28: 0x0080, 0x4f29: 0x0080, - 0x4f2a: 0x0080, 0x4f2b: 0x0080, 0x4f2c: 0x0080, 0x4f2d: 0x0080, 0x4f2e: 0x0080, 0x4f2f: 0x0080, - 0x4f30: 0x0080, 0x4f31: 0x0080, 0x4f32: 0x0080, 0x4f33: 0x0080, 0x4f34: 0x0080, 0x4f35: 0x0080, - 0x4f36: 0x0080, 0x4f37: 0x0080, 0x4f38: 0x0080, 0x4f39: 0x0080, 0x4f3a: 0x0080, 0x4f3b: 0x0080, - 0x4f3c: 0x0080, 0x4f3d: 0x0080, 0x4f3e: 0x0080, 0x4f3f: 0x0080, - // Block 0x13d, offset 0x4f40 - 0x4f40: 0x0080, 0x4f41: 0x0080, 0x4f42: 0x0080, 0x4f43: 0x0080, 0x4f44: 0x0080, 0x4f45: 0x0080, - 0x4f46: 0x0080, 0x4f47: 0x0080, - 0x4f50: 0x0080, 0x4f51: 0x0080, - 0x4f52: 0x0080, 0x4f53: 0x0080, 0x4f54: 0x0080, 0x4f55: 0x0080, 0x4f56: 0x0080, 0x4f57: 0x0080, - 0x4f58: 0x0080, 0x4f59: 0x0080, 0x4f5a: 0x0080, 0x4f5b: 0x0080, 0x4f5c: 0x0080, 0x4f5d: 0x0080, - 0x4f5e: 0x0080, 0x4f5f: 0x0080, 0x4f60: 0x0080, 0x4f61: 0x0080, 0x4f62: 0x0080, 0x4f63: 0x0080, - 0x4f64: 0x0080, 0x4f65: 0x0080, 0x4f66: 0x0080, 0x4f67: 0x0080, 0x4f68: 0x0080, 0x4f69: 0x0080, - 0x4f6a: 0x0080, 0x4f6b: 0x0080, 0x4f6c: 0x0080, 0x4f6d: 0x0080, - // Block 0x13e, offset 0x4f80 - 0x4f80: 0x0080, 0x4f81: 0x0080, 0x4f82: 0x0080, 0x4f83: 0x0080, 0x4f84: 0x0080, 0x4f85: 0x0080, - 0x4f86: 0x0080, 0x4f87: 0x0080, 0x4f88: 0x0080, 0x4f89: 0x0080, 0x4f8a: 0x0080, 0x4f8b: 0x0080, - 0x4f90: 0x0080, 0x4f91: 0x0080, - 0x4f92: 0x0080, 0x4f93: 0x0080, 0x4f94: 0x0080, 0x4f95: 0x0080, 0x4f96: 0x0080, 0x4f97: 0x0080, - 0x4f98: 0x0080, 0x4f99: 0x0080, 0x4f9a: 0x0080, 0x4f9b: 0x0080, 0x4f9c: 0x0080, 0x4f9d: 0x0080, - 0x4f9e: 0x0080, 0x4f9f: 0x0080, 0x4fa0: 0x0080, 0x4fa1: 0x0080, 0x4fa2: 0x0080, 0x4fa3: 0x0080, - 0x4fa4: 0x0080, 0x4fa5: 0x0080, 0x4fa6: 0x0080, 0x4fa7: 0x0080, 0x4fa8: 0x0080, 0x4fa9: 0x0080, - 0x4faa: 0x0080, 0x4fab: 0x0080, 0x4fac: 0x0080, 0x4fad: 0x0080, 0x4fae: 0x0080, 0x4faf: 0x0080, - 0x4fb0: 0x0080, 0x4fb1: 0x0080, 0x4fb2: 0x0080, 0x4fb3: 0x0080, 0x4fb4: 0x0080, 0x4fb5: 0x0080, - 0x4fb6: 0x0080, 0x4fb7: 0x0080, 0x4fb8: 0x0080, 0x4fb9: 0x0080, 0x4fba: 0x0080, 0x4fbb: 0x0080, - 0x4fbc: 0x0080, 0x4fbd: 0x0080, 0x4fbe: 0x0080, - // Block 0x13f, offset 0x4fc0 - 0x4fc0: 0x0080, 0x4fc1: 0x0080, 0x4fc2: 0x0080, 0x4fc3: 0x0080, 0x4fc4: 0x0080, 0x4fc5: 0x0080, - 0x4fc6: 0x0080, 0x4fc7: 0x0080, 0x4fc8: 0x0080, 0x4fc9: 0x0080, 0x4fca: 0x0080, 0x4fcb: 0x0080, - 0x4fcc: 0x0080, 0x4fd0: 0x0080, 0x4fd1: 0x0080, - 0x4fd2: 0x0080, 0x4fd3: 0x0080, 0x4fd4: 0x0080, 0x4fd5: 0x0080, 0x4fd6: 0x0080, 0x4fd7: 0x0080, - 0x4fd8: 0x0080, 0x4fd9: 0x0080, 0x4fda: 0x0080, 0x4fdb: 0x0080, 0x4fdc: 0x0080, 0x4fdd: 0x0080, - 0x4fde: 0x0080, 0x4fdf: 0x0080, 0x4fe0: 0x0080, 0x4fe1: 0x0080, 0x4fe2: 0x0080, 0x4fe3: 0x0080, - 0x4fe4: 0x0080, 0x4fe5: 0x0080, 0x4fe6: 0x0080, 0x4fe7: 0x0080, 0x4fe8: 0x0080, 0x4fe9: 0x0080, - 0x4fea: 0x0080, 0x4feb: 0x0080, - // Block 0x140, offset 0x5000 - 0x5000: 0x0080, 0x5001: 0x0080, 0x5002: 0x0080, 0x5003: 0x0080, 0x5004: 0x0080, 0x5005: 0x0080, - 0x5006: 0x0080, 0x5007: 0x0080, 0x5008: 0x0080, 0x5009: 0x0080, 0x500a: 0x0080, 0x500b: 0x0080, - 0x500c: 0x0080, 0x500d: 0x0080, 0x500e: 0x0080, 0x500f: 0x0080, 0x5010: 0x0080, 0x5011: 0x0080, - 0x5012: 0x0080, 0x5013: 0x0080, 0x5014: 0x0080, 0x5015: 0x0080, 0x5016: 0x0080, 0x5017: 0x0080, - // Block 0x141, offset 0x5040 - 0x5040: 0x0080, - 0x5050: 0x0080, 0x5051: 0x0080, - 0x5052: 0x0080, 0x5053: 0x0080, 0x5054: 0x0080, 0x5055: 0x0080, 0x5056: 0x0080, 0x5057: 0x0080, - 0x5058: 0x0080, 0x5059: 0x0080, 0x505a: 0x0080, 0x505b: 0x0080, 0x505c: 0x0080, 0x505d: 0x0080, - 0x505e: 0x0080, 0x505f: 0x0080, 0x5060: 0x0080, 0x5061: 0x0080, 0x5062: 0x0080, 0x5063: 0x0080, - 0x5064: 0x0080, 0x5065: 0x0080, 0x5066: 0x0080, - // Block 0x142, offset 0x5080 - 0x5080: 0x00cc, 0x5081: 0x00cc, 0x5082: 0x00cc, 0x5083: 0x00cc, 0x5084: 0x00cc, 0x5085: 0x00cc, - 0x5086: 0x00cc, 0x5087: 0x00cc, 0x5088: 0x00cc, 0x5089: 0x00cc, 0x508a: 0x00cc, 0x508b: 0x00cc, - 0x508c: 0x00cc, 0x508d: 0x00cc, 0x508e: 0x00cc, 0x508f: 0x00cc, 0x5090: 0x00cc, 0x5091: 0x00cc, - 0x5092: 0x00cc, 0x5093: 0x00cc, 0x5094: 0x00cc, 0x5095: 0x00cc, 0x5096: 0x00cc, - // Block 0x143, offset 0x50c0 - 0x50c0: 0x00cc, 0x50c1: 0x00cc, 0x50c2: 0x00cc, 0x50c3: 0x00cc, 0x50c4: 0x00cc, 0x50c5: 0x00cc, - 0x50c6: 0x00cc, 0x50c7: 0x00cc, 0x50c8: 0x00cc, 0x50c9: 0x00cc, 0x50ca: 0x00cc, 0x50cb: 0x00cc, - 0x50cc: 0x00cc, 0x50cd: 0x00cc, 0x50ce: 0x00cc, 0x50cf: 0x00cc, 0x50d0: 0x00cc, 0x50d1: 0x00cc, - 0x50d2: 0x00cc, 0x50d3: 0x00cc, 0x50d4: 0x00cc, 0x50d5: 0x00cc, 0x50d6: 0x00cc, 0x50d7: 0x00cc, - 0x50d8: 0x00cc, 0x50d9: 0x00cc, 0x50da: 0x00cc, 0x50db: 0x00cc, 0x50dc: 0x00cc, 0x50dd: 0x00cc, - 0x50de: 0x00cc, 0x50df: 0x00cc, 0x50e0: 0x00cc, 0x50e1: 0x00cc, 0x50e2: 0x00cc, 0x50e3: 0x00cc, - 0x50e4: 0x00cc, 0x50e5: 0x00cc, 0x50e6: 0x00cc, 0x50e7: 0x00cc, 0x50e8: 0x00cc, 0x50e9: 0x00cc, - 0x50ea: 0x00cc, 0x50eb: 0x00cc, 0x50ec: 0x00cc, 0x50ed: 0x00cc, 0x50ee: 0x00cc, 0x50ef: 0x00cc, - 0x50f0: 0x00cc, 0x50f1: 0x00cc, 0x50f2: 0x00cc, 0x50f3: 0x00cc, 0x50f4: 0x00cc, - // Block 0x144, offset 0x5100 - 0x5100: 0x00cc, 0x5101: 0x00cc, 0x5102: 0x00cc, 0x5103: 0x00cc, 0x5104: 0x00cc, 0x5105: 0x00cc, - 0x5106: 0x00cc, 0x5107: 0x00cc, 0x5108: 0x00cc, 0x5109: 0x00cc, 0x510a: 0x00cc, 0x510b: 0x00cc, - 0x510c: 0x00cc, 0x510d: 0x00cc, 0x510e: 0x00cc, 0x510f: 0x00cc, 0x5110: 0x00cc, 0x5111: 0x00cc, - 0x5112: 0x00cc, 0x5113: 0x00cc, 0x5114: 0x00cc, 0x5115: 0x00cc, 0x5116: 0x00cc, 0x5117: 0x00cc, - 0x5118: 0x00cc, 0x5119: 0x00cc, 0x511a: 0x00cc, 0x511b: 0x00cc, 0x511c: 0x00cc, 0x511d: 0x00cc, - 0x5120: 0x00cc, 0x5121: 0x00cc, 0x5122: 0x00cc, 0x5123: 0x00cc, - 0x5124: 0x00cc, 0x5125: 0x00cc, 0x5126: 0x00cc, 0x5127: 0x00cc, 0x5128: 0x00cc, 0x5129: 0x00cc, - 0x512a: 0x00cc, 0x512b: 0x00cc, 0x512c: 0x00cc, 0x512d: 0x00cc, 0x512e: 0x00cc, 0x512f: 0x00cc, - 0x5130: 0x00cc, 0x5131: 0x00cc, 0x5132: 0x00cc, 0x5133: 0x00cc, 0x5134: 0x00cc, 0x5135: 0x00cc, - 0x5136: 0x00cc, 0x5137: 0x00cc, 0x5138: 0x00cc, 0x5139: 0x00cc, 0x513a: 0x00cc, 0x513b: 0x00cc, - 0x513c: 0x00cc, 0x513d: 0x00cc, 0x513e: 0x00cc, 0x513f: 0x00cc, - // Block 0x145, offset 0x5140 - 0x5140: 0x00cc, 0x5141: 0x00cc, 0x5142: 0x00cc, 0x5143: 0x00cc, 0x5144: 0x00cc, 0x5145: 0x00cc, - 0x5146: 0x00cc, 0x5147: 0x00cc, 0x5148: 0x00cc, 0x5149: 0x00cc, 0x514a: 0x00cc, 0x514b: 0x00cc, - 0x514c: 0x00cc, 0x514d: 0x00cc, 0x514e: 0x00cc, 0x514f: 0x00cc, 0x5150: 0x00cc, 0x5151: 0x00cc, - 0x5152: 0x00cc, 0x5153: 0x00cc, 0x5154: 0x00cc, 0x5155: 0x00cc, 0x5156: 0x00cc, 0x5157: 0x00cc, - 0x5158: 0x00cc, 0x5159: 0x00cc, 0x515a: 0x00cc, 0x515b: 0x00cc, 0x515c: 0x00cc, 0x515d: 0x00cc, - 0x515e: 0x00cc, 0x515f: 0x00cc, 0x5160: 0x00cc, 0x5161: 0x00cc, - 0x5170: 0x00cc, 0x5171: 0x00cc, 0x5172: 0x00cc, 0x5173: 0x00cc, 0x5174: 0x00cc, 0x5175: 0x00cc, - 0x5176: 0x00cc, 0x5177: 0x00cc, 0x5178: 0x00cc, 0x5179: 0x00cc, 0x517a: 0x00cc, 0x517b: 0x00cc, - 0x517c: 0x00cc, 0x517d: 0x00cc, 0x517e: 0x00cc, 0x517f: 0x00cc, - // Block 0x146, offset 0x5180 - 0x5180: 0x00cc, 0x5181: 0x00cc, 0x5182: 0x00cc, 0x5183: 0x00cc, 0x5184: 0x00cc, 0x5185: 0x00cc, - 0x5186: 0x00cc, 0x5187: 0x00cc, 0x5188: 0x00cc, 0x5189: 0x00cc, 0x518a: 0x00cc, 0x518b: 0x00cc, - 0x518c: 0x00cc, 0x518d: 0x00cc, 0x518e: 0x00cc, 0x518f: 0x00cc, 0x5190: 0x00cc, 0x5191: 0x00cc, - 0x5192: 0x00cc, 0x5193: 0x00cc, 0x5194: 0x00cc, 0x5195: 0x00cc, 0x5196: 0x00cc, 0x5197: 0x00cc, - 0x5198: 0x00cc, 0x5199: 0x00cc, 0x519a: 0x00cc, 0x519b: 0x00cc, 0x519c: 0x00cc, 0x519d: 0x00cc, - 0x519e: 0x00cc, 0x519f: 0x00cc, 0x51a0: 0x00cc, - // Block 0x147, offset 0x51c0 - 0x51c0: 0x008c, 0x51c1: 0x008c, 0x51c2: 0x008c, 0x51c3: 0x008c, 0x51c4: 0x008c, 0x51c5: 0x008c, - 0x51c6: 0x008c, 0x51c7: 0x008c, 0x51c8: 0x008c, 0x51c9: 0x008c, 0x51ca: 0x008c, 0x51cb: 0x008c, - 0x51cc: 0x008c, 0x51cd: 0x008c, 0x51ce: 0x008c, 0x51cf: 0x008c, 0x51d0: 0x008c, 0x51d1: 0x008c, - 0x51d2: 0x008c, 0x51d3: 0x008c, 0x51d4: 0x008c, 0x51d5: 0x008c, 0x51d6: 0x008c, 0x51d7: 0x008c, - 0x51d8: 0x008c, 0x51d9: 0x008c, 0x51da: 0x008c, 0x51db: 0x008c, 0x51dc: 0x008c, 0x51dd: 0x008c, - // Block 0x148, offset 0x5200 - 0x5201: 0x0040, - 0x5220: 0x0040, 0x5221: 0x0040, 0x5222: 0x0040, 0x5223: 0x0040, - 0x5224: 0x0040, 0x5225: 0x0040, 0x5226: 0x0040, 0x5227: 0x0040, 0x5228: 0x0040, 0x5229: 0x0040, - 0x522a: 0x0040, 0x522b: 0x0040, 0x522c: 0x0040, 0x522d: 0x0040, 0x522e: 0x0040, 0x522f: 0x0040, - 0x5230: 0x0040, 0x5231: 0x0040, 0x5232: 0x0040, 0x5233: 0x0040, 0x5234: 0x0040, 0x5235: 0x0040, - 0x5236: 0x0040, 0x5237: 0x0040, 0x5238: 0x0040, 0x5239: 0x0040, 0x523a: 0x0040, 0x523b: 0x0040, - 0x523c: 0x0040, 0x523d: 0x0040, 0x523e: 0x0040, 0x523f: 0x0040, - // Block 0x149, offset 0x5240 - 0x5240: 0x0040, 0x5241: 0x0040, 0x5242: 0x0040, 0x5243: 0x0040, 0x5244: 0x0040, 0x5245: 0x0040, - 0x5246: 0x0040, 0x5247: 0x0040, 0x5248: 0x0040, 0x5249: 0x0040, 0x524a: 0x0040, 0x524b: 0x0040, - 0x524c: 0x0040, 0x524d: 0x0040, 0x524e: 0x0040, 0x524f: 0x0040, 0x5250: 0x0040, 0x5251: 0x0040, - 0x5252: 0x0040, 0x5253: 0x0040, 0x5254: 0x0040, 0x5255: 0x0040, 0x5256: 0x0040, 0x5257: 0x0040, - 0x5258: 0x0040, 0x5259: 0x0040, 0x525a: 0x0040, 0x525b: 0x0040, 0x525c: 0x0040, 0x525d: 0x0040, - 0x525e: 0x0040, 0x525f: 0x0040, 0x5260: 0x0040, 0x5261: 0x0040, 0x5262: 0x0040, 0x5263: 0x0040, - 0x5264: 0x0040, 0x5265: 0x0040, 0x5266: 0x0040, 0x5267: 0x0040, 0x5268: 0x0040, 0x5269: 0x0040, - 0x526a: 0x0040, 0x526b: 0x0040, 0x526c: 0x0040, 0x526d: 0x0040, 0x526e: 0x0040, 0x526f: 0x0040, - // Block 0x14a, offset 0x5280 - 0x5280: 0x0040, 0x5281: 0x0040, 0x5282: 0x0040, 0x5283: 0x0040, 0x5284: 0x0040, 0x5285: 0x0040, - 0x5286: 0x0040, 0x5287: 0x0040, 0x5288: 0x0040, 0x5289: 0x0040, 0x528a: 0x0040, 0x528b: 0x0040, - 0x528c: 0x0040, 0x528d: 0x0040, 0x528e: 0x0040, 0x528f: 0x0040, 0x5290: 0x0040, 0x5291: 0x0040, - 0x5292: 0x0040, 0x5293: 0x0040, 0x5294: 0x0040, 0x5295: 0x0040, 0x5296: 0x0040, 0x5297: 0x0040, - 0x5298: 0x0040, 0x5299: 0x0040, 0x529a: 0x0040, 0x529b: 0x0040, 0x529c: 0x0040, 0x529d: 0x0040, - 0x529e: 0x0040, 0x529f: 0x0040, 0x52a0: 0x0040, 0x52a1: 0x0040, 0x52a2: 0x0040, 0x52a3: 0x0040, - 0x52a4: 0x0040, 0x52a5: 0x0040, 0x52a6: 0x0040, 0x52a7: 0x0040, 0x52a8: 0x0040, 0x52a9: 0x0040, - 0x52aa: 0x0040, 0x52ab: 0x0040, 0x52ac: 0x0040, 0x52ad: 0x0040, 0x52ae: 0x0040, 0x52af: 0x0040, - 0x52b0: 0x0040, 0x52b1: 0x0040, 0x52b2: 0x0040, 0x52b3: 0x0040, 0x52b4: 0x0040, 0x52b5: 0x0040, - 0x52b6: 0x0040, 0x52b7: 0x0040, 0x52b8: 0x0040, 0x52b9: 0x0040, 0x52ba: 0x0040, 0x52bb: 0x0040, - 0x52bc: 0x0040, 0x52bd: 0x0040, -} - -// derivedPropertiesIndex: 37 blocks, 2368 entries, 4736 bytes -// Block 0 is the zero block. -var derivedPropertiesIndex = [2368]uint16{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x02, 0xc4: 0x03, 0xc5: 0x04, 0xc6: 0x05, 0xc7: 0x06, - 0xc8: 0x05, 0xc9: 0x05, 0xca: 0x07, 0xcb: 0x08, 0xcc: 0x09, 0xcd: 0x0a, 0xce: 0x0b, 0xcf: 0x0c, - 0xd0: 0x05, 0xd1: 0x05, 0xd2: 0x0d, 0xd3: 0x05, 0xd4: 0x0e, 0xd5: 0x0f, 0xd6: 0x10, 0xd7: 0x11, - 0xd8: 0x12, 0xd9: 0x13, 0xda: 0x14, 0xdb: 0x15, 0xdc: 0x16, 0xdd: 0x17, 0xde: 0x18, 0xdf: 0x19, - 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, - 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x0a, 0xec: 0x0a, 0xed: 0x0b, 0xee: 0x0c, 0xef: 0x0d, - 0xf0: 0x1e, 0xf3: 0x21, 0xf4: 0x22, - // Block 0x4, offset 0x100 - 0x120: 0x1a, 0x121: 0x1b, 0x122: 0x1c, 0x123: 0x1d, 0x124: 0x1e, 0x125: 0x1f, 0x126: 0x20, 0x127: 0x21, - 0x128: 0x22, 0x129: 0x23, 0x12a: 0x24, 0x12b: 0x25, 0x12c: 0x26, 0x12d: 0x27, 0x12e: 0x28, 0x12f: 0x29, - 0x130: 0x2a, 0x131: 0x2b, 0x132: 0x2c, 0x133: 0x2d, 0x134: 0x2e, 0x135: 0x2f, 0x136: 0x30, 0x137: 0x31, - 0x138: 0x32, 0x139: 0x33, 0x13a: 0x34, 0x13b: 0x35, 0x13c: 0x36, 0x13d: 0x37, 0x13e: 0x38, 0x13f: 0x39, - // Block 0x5, offset 0x140 - 0x140: 0x3a, 0x141: 0x3b, 0x142: 0x3c, 0x143: 0x3d, 0x144: 0x3e, 0x145: 0x3e, 0x146: 0x3e, 0x147: 0x3e, - 0x148: 0x05, 0x149: 0x3f, 0x14a: 0x40, 0x14b: 0x41, 0x14c: 0x42, 0x14d: 0x43, 0x14e: 0x44, 0x14f: 0x45, - 0x150: 0x46, 0x151: 0x05, 0x152: 0x05, 0x153: 0x05, 0x154: 0x05, 0x155: 0x05, 0x156: 0x05, 0x157: 0x05, - 0x158: 0x05, 0x159: 0x47, 0x15a: 0x48, 0x15b: 0x49, 0x15c: 0x4a, 0x15d: 0x4b, 0x15e: 0x4c, 0x15f: 0x4d, - 0x160: 0x4e, 0x161: 0x4f, 0x162: 0x50, 0x163: 0x51, 0x164: 0x52, 0x165: 0x53, 0x166: 0x54, 0x167: 0x55, - 0x168: 0x56, 0x169: 0x57, 0x16a: 0x58, 0x16c: 0x59, 0x16d: 0x5a, 0x16e: 0x5b, 0x16f: 0x5c, - 0x170: 0x5d, 0x171: 0x5e, 0x172: 0x5f, 0x173: 0x60, 0x174: 0x61, 0x175: 0x62, 0x176: 0x63, 0x177: 0x64, - 0x178: 0x05, 0x179: 0x05, 0x17a: 0x65, 0x17b: 0x05, 0x17c: 0x66, 0x17d: 0x67, 0x17e: 0x68, 0x17f: 0x69, - // Block 0x6, offset 0x180 - 0x180: 0x6a, 0x181: 0x6b, 0x182: 0x6c, 0x183: 0x6d, 0x184: 0x6e, 0x185: 0x6f, 0x186: 0x70, 0x187: 0x71, - 0x188: 0x71, 0x189: 0x71, 0x18a: 0x71, 0x18b: 0x71, 0x18c: 0x71, 0x18d: 0x71, 0x18e: 0x71, 0x18f: 0x71, - 0x190: 0x72, 0x191: 0x73, 0x192: 0x71, 0x193: 0x71, 0x194: 0x71, 0x195: 0x71, 0x196: 0x71, 0x197: 0x71, - 0x198: 0x71, 0x199: 0x71, 0x19a: 0x71, 0x19b: 0x71, 0x19c: 0x71, 0x19d: 0x71, 0x19e: 0x71, 0x19f: 0x71, - 0x1a0: 0x71, 0x1a1: 0x71, 0x1a2: 0x71, 0x1a3: 0x71, 0x1a4: 0x71, 0x1a5: 0x71, 0x1a6: 0x71, 0x1a7: 0x71, - 0x1a8: 0x71, 0x1a9: 0x71, 0x1aa: 0x71, 0x1ab: 0x71, 0x1ac: 0x71, 0x1ad: 0x74, 0x1ae: 0x75, 0x1af: 0x76, - 0x1b0: 0x77, 0x1b1: 0x78, 0x1b2: 0x05, 0x1b3: 0x79, 0x1b4: 0x7a, 0x1b5: 0x7b, 0x1b6: 0x7c, 0x1b7: 0x7d, - 0x1b8: 0x7e, 0x1b9: 0x7f, 0x1ba: 0x80, 0x1bb: 0x81, 0x1bc: 0x82, 0x1bd: 0x82, 0x1be: 0x82, 0x1bf: 0x83, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x84, 0x1c1: 0x85, 0x1c2: 0x86, 0x1c3: 0x87, 0x1c4: 0x88, 0x1c5: 0x89, 0x1c6: 0x8a, 0x1c7: 0x8b, - 0x1c8: 0x8c, 0x1c9: 0x71, 0x1ca: 0x71, 0x1cb: 0x8d, 0x1cc: 0x82, 0x1cd: 0x8e, 0x1ce: 0x71, 0x1cf: 0x71, - 0x1d0: 0x8f, 0x1d1: 0x8f, 0x1d2: 0x8f, 0x1d3: 0x8f, 0x1d4: 0x8f, 0x1d5: 0x8f, 0x1d6: 0x8f, 0x1d7: 0x8f, - 0x1d8: 0x8f, 0x1d9: 0x8f, 0x1da: 0x8f, 0x1db: 0x8f, 0x1dc: 0x8f, 0x1dd: 0x8f, 0x1de: 0x8f, 0x1df: 0x8f, - 0x1e0: 0x8f, 0x1e1: 0x8f, 0x1e2: 0x8f, 0x1e3: 0x8f, 0x1e4: 0x8f, 0x1e5: 0x8f, 0x1e6: 0x8f, 0x1e7: 0x8f, - 0x1e8: 0x8f, 0x1e9: 0x8f, 0x1ea: 0x8f, 0x1eb: 0x8f, 0x1ec: 0x8f, 0x1ed: 0x8f, 0x1ee: 0x8f, 0x1ef: 0x8f, - 0x1f0: 0x8f, 0x1f1: 0x8f, 0x1f2: 0x8f, 0x1f3: 0x8f, 0x1f4: 0x8f, 0x1f5: 0x8f, 0x1f6: 0x8f, 0x1f7: 0x8f, - 0x1f8: 0x8f, 0x1f9: 0x8f, 0x1fa: 0x8f, 0x1fb: 0x8f, 0x1fc: 0x8f, 0x1fd: 0x8f, 0x1fe: 0x8f, 0x1ff: 0x8f, - // Block 0x8, offset 0x200 - 0x200: 0x8f, 0x201: 0x8f, 0x202: 0x8f, 0x203: 0x8f, 0x204: 0x8f, 0x205: 0x8f, 0x206: 0x8f, 0x207: 0x8f, - 0x208: 0x8f, 0x209: 0x8f, 0x20a: 0x8f, 0x20b: 0x8f, 0x20c: 0x8f, 0x20d: 0x8f, 0x20e: 0x8f, 0x20f: 0x8f, - 0x210: 0x8f, 0x211: 0x8f, 0x212: 0x8f, 0x213: 0x8f, 0x214: 0x8f, 0x215: 0x8f, 0x216: 0x8f, 0x217: 0x8f, - 0x218: 0x8f, 0x219: 0x8f, 0x21a: 0x8f, 0x21b: 0x8f, 0x21c: 0x8f, 0x21d: 0x8f, 0x21e: 0x8f, 0x21f: 0x8f, - 0x220: 0x8f, 0x221: 0x8f, 0x222: 0x8f, 0x223: 0x8f, 0x224: 0x8f, 0x225: 0x8f, 0x226: 0x8f, 0x227: 0x8f, - 0x228: 0x8f, 0x229: 0x8f, 0x22a: 0x8f, 0x22b: 0x8f, 0x22c: 0x8f, 0x22d: 0x8f, 0x22e: 0x8f, 0x22f: 0x8f, - 0x230: 0x8f, 0x231: 0x8f, 0x232: 0x8f, 0x233: 0x8f, 0x234: 0x8f, 0x235: 0x8f, 0x236: 0x90, 0x237: 0x71, - 0x238: 0x8f, 0x239: 0x8f, 0x23a: 0x8f, 0x23b: 0x8f, 0x23c: 0x8f, 0x23d: 0x8f, 0x23e: 0x8f, 0x23f: 0x8f, - // Block 0x9, offset 0x240 - 0x240: 0x8f, 0x241: 0x8f, 0x242: 0x8f, 0x243: 0x8f, 0x244: 0x8f, 0x245: 0x8f, 0x246: 0x8f, 0x247: 0x8f, - 0x248: 0x8f, 0x249: 0x8f, 0x24a: 0x8f, 0x24b: 0x8f, 0x24c: 0x8f, 0x24d: 0x8f, 0x24e: 0x8f, 0x24f: 0x8f, - 0x250: 0x8f, 0x251: 0x8f, 0x252: 0x8f, 0x253: 0x8f, 0x254: 0x8f, 0x255: 0x8f, 0x256: 0x8f, 0x257: 0x8f, - 0x258: 0x8f, 0x259: 0x8f, 0x25a: 0x8f, 0x25b: 0x8f, 0x25c: 0x8f, 0x25d: 0x8f, 0x25e: 0x8f, 0x25f: 0x8f, - 0x260: 0x8f, 0x261: 0x8f, 0x262: 0x8f, 0x263: 0x8f, 0x264: 0x8f, 0x265: 0x8f, 0x266: 0x8f, 0x267: 0x8f, - 0x268: 0x8f, 0x269: 0x8f, 0x26a: 0x8f, 0x26b: 0x8f, 0x26c: 0x8f, 0x26d: 0x8f, 0x26e: 0x8f, 0x26f: 0x8f, - 0x270: 0x8f, 0x271: 0x8f, 0x272: 0x8f, 0x273: 0x8f, 0x274: 0x8f, 0x275: 0x8f, 0x276: 0x8f, 0x277: 0x8f, - 0x278: 0x8f, 0x279: 0x8f, 0x27a: 0x8f, 0x27b: 0x8f, 0x27c: 0x8f, 0x27d: 0x8f, 0x27e: 0x8f, 0x27f: 0x8f, - // Block 0xa, offset 0x280 - 0x280: 0x8f, 0x281: 0x8f, 0x282: 0x8f, 0x283: 0x8f, 0x284: 0x8f, 0x285: 0x8f, 0x286: 0x8f, 0x287: 0x8f, - 0x288: 0x8f, 0x289: 0x8f, 0x28a: 0x8f, 0x28b: 0x8f, 0x28c: 0x8f, 0x28d: 0x8f, 0x28e: 0x8f, 0x28f: 0x8f, - 0x290: 0x8f, 0x291: 0x8f, 0x292: 0x8f, 0x293: 0x8f, 0x294: 0x8f, 0x295: 0x8f, 0x296: 0x8f, 0x297: 0x8f, - 0x298: 0x8f, 0x299: 0x8f, 0x29a: 0x8f, 0x29b: 0x8f, 0x29c: 0x8f, 0x29d: 0x8f, 0x29e: 0x8f, 0x29f: 0x8f, - 0x2a0: 0x8f, 0x2a1: 0x8f, 0x2a2: 0x8f, 0x2a3: 0x8f, 0x2a4: 0x8f, 0x2a5: 0x8f, 0x2a6: 0x8f, 0x2a7: 0x8f, - 0x2a8: 0x8f, 0x2a9: 0x8f, 0x2aa: 0x8f, 0x2ab: 0x8f, 0x2ac: 0x8f, 0x2ad: 0x8f, 0x2ae: 0x8f, 0x2af: 0x8f, - 0x2b0: 0x8f, 0x2b1: 0x8f, 0x2b2: 0x8f, 0x2b3: 0x8f, 0x2b4: 0x8f, 0x2b5: 0x8f, 0x2b6: 0x8f, 0x2b7: 0x8f, - 0x2b8: 0x8f, 0x2b9: 0x8f, 0x2ba: 0x8f, 0x2bb: 0x8f, 0x2bc: 0x8f, 0x2bd: 0x8f, 0x2be: 0x8f, 0x2bf: 0x91, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x05, 0x2c1: 0x05, 0x2c2: 0x05, 0x2c3: 0x05, 0x2c4: 0x05, 0x2c5: 0x05, 0x2c6: 0x05, 0x2c7: 0x05, - 0x2c8: 0x05, 0x2c9: 0x05, 0x2ca: 0x05, 0x2cb: 0x05, 0x2cc: 0x05, 0x2cd: 0x05, 0x2ce: 0x05, 0x2cf: 0x05, - 0x2d0: 0x05, 0x2d1: 0x05, 0x2d2: 0x92, 0x2d3: 0x93, 0x2d4: 0x05, 0x2d5: 0x05, 0x2d6: 0x05, 0x2d7: 0x05, - 0x2d8: 0x94, 0x2d9: 0x95, 0x2da: 0x96, 0x2db: 0x97, 0x2dc: 0x98, 0x2dd: 0x99, 0x2de: 0x9a, 0x2df: 0x9b, - 0x2e0: 0x9c, 0x2e1: 0x9d, 0x2e2: 0x05, 0x2e3: 0x9e, 0x2e4: 0x9f, 0x2e5: 0xa0, 0x2e6: 0xa1, 0x2e7: 0xa2, - 0x2e8: 0xa3, 0x2e9: 0xa4, 0x2ea: 0xa5, 0x2eb: 0xa6, 0x2ec: 0xa7, 0x2ed: 0xa8, 0x2ee: 0x05, 0x2ef: 0xa9, - 0x2f0: 0x05, 0x2f1: 0x05, 0x2f2: 0x05, 0x2f3: 0x05, 0x2f4: 0x05, 0x2f5: 0x05, 0x2f6: 0x05, 0x2f7: 0x05, - 0x2f8: 0x05, 0x2f9: 0x05, 0x2fa: 0x05, 0x2fb: 0x05, 0x2fc: 0x05, 0x2fd: 0x05, 0x2fe: 0x05, 0x2ff: 0x05, - // Block 0xc, offset 0x300 - 0x300: 0x05, 0x301: 0x05, 0x302: 0x05, 0x303: 0x05, 0x304: 0x05, 0x305: 0x05, 0x306: 0x05, 0x307: 0x05, - 0x308: 0x05, 0x309: 0x05, 0x30a: 0x05, 0x30b: 0x05, 0x30c: 0x05, 0x30d: 0x05, 0x30e: 0x05, 0x30f: 0x05, - 0x310: 0x05, 0x311: 0x05, 0x312: 0x05, 0x313: 0x05, 0x314: 0x05, 0x315: 0x05, 0x316: 0x05, 0x317: 0x05, - 0x318: 0x05, 0x319: 0x05, 0x31a: 0x05, 0x31b: 0x05, 0x31c: 0x05, 0x31d: 0x05, 0x31e: 0x05, 0x31f: 0x05, - 0x320: 0x05, 0x321: 0x05, 0x322: 0x05, 0x323: 0x05, 0x324: 0x05, 0x325: 0x05, 0x326: 0x05, 0x327: 0x05, - 0x328: 0x05, 0x329: 0x05, 0x32a: 0x05, 0x32b: 0x05, 0x32c: 0x05, 0x32d: 0x05, 0x32e: 0x05, 0x32f: 0x05, - 0x330: 0x05, 0x331: 0x05, 0x332: 0x05, 0x333: 0x05, 0x334: 0x05, 0x335: 0x05, 0x336: 0x05, 0x337: 0x05, - 0x338: 0x05, 0x339: 0x05, 0x33a: 0x05, 0x33b: 0x05, 0x33c: 0x05, 0x33d: 0x05, 0x33e: 0x05, 0x33f: 0x05, - // Block 0xd, offset 0x340 - 0x340: 0x05, 0x341: 0x05, 0x342: 0x05, 0x343: 0x05, 0x344: 0x05, 0x345: 0x05, 0x346: 0x05, 0x347: 0x05, - 0x348: 0x05, 0x349: 0x05, 0x34a: 0x05, 0x34b: 0x05, 0x34c: 0x05, 0x34d: 0x05, 0x34e: 0x05, 0x34f: 0x05, - 0x350: 0x05, 0x351: 0x05, 0x352: 0x05, 0x353: 0x05, 0x354: 0x05, 0x355: 0x05, 0x356: 0x05, 0x357: 0x05, - 0x358: 0x05, 0x359: 0x05, 0x35a: 0x05, 0x35b: 0x05, 0x35c: 0x05, 0x35d: 0x05, 0x35e: 0xaa, 0x35f: 0xab, - // Block 0xe, offset 0x380 - 0x380: 0x3e, 0x381: 0x3e, 0x382: 0x3e, 0x383: 0x3e, 0x384: 0x3e, 0x385: 0x3e, 0x386: 0x3e, 0x387: 0x3e, - 0x388: 0x3e, 0x389: 0x3e, 0x38a: 0x3e, 0x38b: 0x3e, 0x38c: 0x3e, 0x38d: 0x3e, 0x38e: 0x3e, 0x38f: 0x3e, - 0x390: 0x3e, 0x391: 0x3e, 0x392: 0x3e, 0x393: 0x3e, 0x394: 0x3e, 0x395: 0x3e, 0x396: 0x3e, 0x397: 0x3e, - 0x398: 0x3e, 0x399: 0x3e, 0x39a: 0x3e, 0x39b: 0x3e, 0x39c: 0x3e, 0x39d: 0x3e, 0x39e: 0x3e, 0x39f: 0x3e, - 0x3a0: 0x3e, 0x3a1: 0x3e, 0x3a2: 0x3e, 0x3a3: 0x3e, 0x3a4: 0x3e, 0x3a5: 0x3e, 0x3a6: 0x3e, 0x3a7: 0x3e, - 0x3a8: 0x3e, 0x3a9: 0x3e, 0x3aa: 0x3e, 0x3ab: 0x3e, 0x3ac: 0x3e, 0x3ad: 0x3e, 0x3ae: 0x3e, 0x3af: 0x3e, - 0x3b0: 0x3e, 0x3b1: 0x3e, 0x3b2: 0x3e, 0x3b3: 0x3e, 0x3b4: 0x3e, 0x3b5: 0x3e, 0x3b6: 0x3e, 0x3b7: 0x3e, - 0x3b8: 0x3e, 0x3b9: 0x3e, 0x3ba: 0x3e, 0x3bb: 0x3e, 0x3bc: 0x3e, 0x3bd: 0x3e, 0x3be: 0x3e, 0x3bf: 0x3e, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x3e, 0x3c1: 0x3e, 0x3c2: 0x3e, 0x3c3: 0x3e, 0x3c4: 0x3e, 0x3c5: 0x3e, 0x3c6: 0x3e, 0x3c7: 0x3e, - 0x3c8: 0x3e, 0x3c9: 0x3e, 0x3ca: 0x3e, 0x3cb: 0x3e, 0x3cc: 0x3e, 0x3cd: 0x3e, 0x3ce: 0x3e, 0x3cf: 0x3e, - 0x3d0: 0x3e, 0x3d1: 0x3e, 0x3d2: 0x3e, 0x3d3: 0x3e, 0x3d4: 0x3e, 0x3d5: 0x3e, 0x3d6: 0x3e, 0x3d7: 0x3e, - 0x3d8: 0x3e, 0x3d9: 0x3e, 0x3da: 0x3e, 0x3db: 0x3e, 0x3dc: 0x3e, 0x3dd: 0x3e, 0x3de: 0x3e, 0x3df: 0x3e, - 0x3e0: 0x3e, 0x3e1: 0x3e, 0x3e2: 0x3e, 0x3e3: 0x3e, 0x3e4: 0x82, 0x3e5: 0x82, 0x3e6: 0x82, 0x3e7: 0x82, - 0x3e8: 0xac, 0x3e9: 0xad, 0x3ea: 0x82, 0x3eb: 0xae, 0x3ec: 0xaf, 0x3ed: 0xb0, 0x3ee: 0x71, 0x3ef: 0xb1, - 0x3f0: 0x71, 0x3f1: 0x71, 0x3f2: 0x71, 0x3f3: 0x71, 0x3f4: 0x71, 0x3f5: 0xb2, 0x3f6: 0xb3, 0x3f7: 0xb4, - 0x3f8: 0xb5, 0x3f9: 0xb6, 0x3fa: 0x71, 0x3fb: 0xb7, 0x3fc: 0xb8, 0x3fd: 0xb9, 0x3fe: 0xba, 0x3ff: 0xbb, - // Block 0x10, offset 0x400 - 0x400: 0xbc, 0x401: 0xbd, 0x402: 0x05, 0x403: 0xbe, 0x404: 0xbf, 0x405: 0xc0, 0x406: 0xc1, 0x407: 0xc2, - 0x40a: 0xc3, 0x40b: 0xc4, 0x40c: 0xc5, 0x40d: 0xc6, 0x40e: 0xc7, 0x40f: 0xc8, - 0x410: 0x05, 0x411: 0x05, 0x412: 0xc9, 0x413: 0xca, 0x414: 0xcb, 0x415: 0xcc, - 0x418: 0x05, 0x419: 0x05, 0x41a: 0x05, 0x41b: 0x05, 0x41c: 0xcd, 0x41d: 0xce, - 0x420: 0xcf, 0x421: 0xd0, 0x422: 0xd1, 0x423: 0xd2, 0x424: 0xd3, 0x426: 0xd4, 0x427: 0xb3, - 0x428: 0xd5, 0x429: 0xd6, 0x42a: 0xd7, 0x42b: 0xd8, 0x42c: 0xd9, 0x42d: 0xda, 0x42e: 0xdb, - 0x430: 0x05, 0x431: 0x5f, 0x432: 0xdc, 0x433: 0xdd, - 0x439: 0xde, - // Block 0x11, offset 0x440 - 0x440: 0xdf, 0x441: 0xe0, 0x442: 0xe1, 0x443: 0xe2, 0x444: 0xe3, 0x445: 0xe4, 0x446: 0xe5, 0x447: 0xe6, - 0x448: 0xe7, 0x44a: 0xe8, 0x44b: 0xe9, 0x44c: 0xea, 0x44d: 0xeb, - 0x450: 0xec, 0x451: 0xed, 0x452: 0xee, 0x453: 0xef, 0x456: 0xf0, 0x457: 0xf1, - 0x458: 0xf2, 0x459: 0xf3, 0x45a: 0xf4, 0x45b: 0xf5, 0x45c: 0xf6, - 0x462: 0xf7, 0x463: 0xf8, - 0x468: 0xf9, 0x469: 0xfa, 0x46a: 0xfb, 0x46b: 0xfc, - 0x470: 0xfd, 0x471: 0xfe, 0x472: 0xff, 0x474: 0x100, 0x475: 0x101, - // Block 0x12, offset 0x480 - 0x480: 0x05, 0x481: 0x05, 0x482: 0x05, 0x483: 0x05, 0x484: 0x05, 0x485: 0x05, 0x486: 0x05, 0x487: 0x05, - 0x488: 0x05, 0x489: 0x05, 0x48a: 0x05, 0x48b: 0x05, 0x48c: 0x05, 0x48d: 0x05, 0x48e: 0x102, - 0x490: 0x71, 0x491: 0x103, 0x492: 0x05, 0x493: 0x05, 0x494: 0x05, 0x495: 0x104, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x05, 0x4c1: 0x05, 0x4c2: 0x05, 0x4c3: 0x05, 0x4c4: 0x05, 0x4c5: 0x05, 0x4c6: 0x05, 0x4c7: 0x05, - 0x4c8: 0x05, 0x4c9: 0x05, 0x4ca: 0x05, 0x4cb: 0x05, 0x4cc: 0x05, 0x4cd: 0x05, 0x4ce: 0x05, 0x4cf: 0x05, - 0x4d0: 0x105, - // Block 0x14, offset 0x500 - 0x510: 0x05, 0x511: 0x05, 0x512: 0x05, 0x513: 0x05, 0x514: 0x05, 0x515: 0x05, 0x516: 0x05, 0x517: 0x05, - 0x518: 0x05, 0x519: 0x106, - // Block 0x15, offset 0x540 - 0x560: 0x05, 0x561: 0x05, 0x562: 0x05, 0x563: 0x05, 0x564: 0x05, 0x565: 0x05, 0x566: 0x05, 0x567: 0x05, - 0x568: 0xfc, 0x569: 0x107, 0x56b: 0x108, 0x56c: 0x109, 0x56d: 0x10a, 0x56e: 0x10b, - 0x57c: 0x05, 0x57d: 0x10c, 0x57e: 0x10d, 0x57f: 0x10e, - // Block 0x16, offset 0x580 - 0x580: 0x05, 0x581: 0x05, 0x582: 0x05, 0x583: 0x05, 0x584: 0x05, 0x585: 0x05, 0x586: 0x05, 0x587: 0x05, - 0x588: 0x05, 0x589: 0x05, 0x58a: 0x05, 0x58b: 0x05, 0x58c: 0x05, 0x58d: 0x05, 0x58e: 0x05, 0x58f: 0x05, - 0x590: 0x05, 0x591: 0x05, 0x592: 0x05, 0x593: 0x05, 0x594: 0x05, 0x595: 0x05, 0x596: 0x05, 0x597: 0x05, - 0x598: 0x05, 0x599: 0x05, 0x59a: 0x05, 0x59b: 0x05, 0x59c: 0x05, 0x59d: 0x05, 0x59e: 0x05, 0x59f: 0x10f, - 0x5a0: 0x05, 0x5a1: 0x05, 0x5a2: 0x05, 0x5a3: 0x05, 0x5a4: 0x05, 0x5a5: 0x05, 0x5a6: 0x05, 0x5a7: 0x05, - 0x5a8: 0x05, 0x5a9: 0x05, 0x5aa: 0x05, 0x5ab: 0xdc, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x8f, 0x5c1: 0x8f, 0x5c2: 0x8f, 0x5c3: 0x8f, 0x5c4: 0x110, 0x5c5: 0x111, 0x5c6: 0x05, 0x5c7: 0x05, - 0x5c8: 0x05, 0x5c9: 0x05, 0x5ca: 0x05, 0x5cb: 0x112, - 0x5f0: 0x05, 0x5f1: 0x113, 0x5f2: 0x114, - // Block 0x18, offset 0x600 - 0x600: 0x71, 0x601: 0x71, 0x602: 0x71, 0x603: 0x115, 0x604: 0x116, 0x605: 0x117, 0x606: 0x118, 0x607: 0x119, - 0x608: 0xc0, 0x609: 0x11a, 0x60c: 0x71, 0x60d: 0x11b, - 0x610: 0x71, 0x611: 0x11c, 0x612: 0x11d, 0x613: 0x11e, 0x614: 0x11f, 0x615: 0x120, 0x616: 0x71, 0x617: 0x71, - 0x618: 0x71, 0x619: 0x71, 0x61a: 0x121, 0x61b: 0x71, 0x61c: 0x71, 0x61d: 0x71, 0x61e: 0x71, 0x61f: 0x122, - 0x620: 0x71, 0x621: 0x71, 0x622: 0x71, 0x623: 0x71, 0x624: 0x71, 0x625: 0x71, 0x626: 0x71, 0x627: 0x71, - 0x628: 0x123, 0x629: 0x124, 0x62a: 0x125, - // Block 0x19, offset 0x640 - 0x640: 0x126, - 0x660: 0x05, 0x661: 0x05, 0x662: 0x05, 0x663: 0x127, 0x664: 0x128, 0x665: 0x129, - 0x678: 0x12a, 0x679: 0x12b, 0x67a: 0x12c, 0x67b: 0x12d, - // Block 0x1a, offset 0x680 - 0x680: 0x12e, 0x681: 0x71, 0x682: 0x12f, 0x683: 0x130, 0x684: 0x131, 0x685: 0x12e, 0x686: 0x132, 0x687: 0x133, - 0x688: 0x134, 0x689: 0x135, 0x68c: 0x71, 0x68d: 0x71, 0x68e: 0x71, 0x68f: 0x71, - 0x690: 0x71, 0x691: 0x71, 0x692: 0x71, 0x693: 0x71, 0x694: 0x71, 0x695: 0x71, 0x696: 0x71, 0x697: 0x71, - 0x698: 0x71, 0x699: 0x71, 0x69a: 0x71, 0x69b: 0x136, 0x69c: 0x71, 0x69d: 0x137, 0x69e: 0x71, 0x69f: 0x138, - 0x6a0: 0x139, 0x6a1: 0x13a, 0x6a2: 0x13b, 0x6a4: 0x13c, 0x6a5: 0x13d, 0x6a6: 0x13e, 0x6a7: 0x13f, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x8f, 0x6c1: 0x8f, 0x6c2: 0x8f, 0x6c3: 0x8f, 0x6c4: 0x8f, 0x6c5: 0x8f, 0x6c6: 0x8f, 0x6c7: 0x8f, - 0x6c8: 0x8f, 0x6c9: 0x8f, 0x6ca: 0x8f, 0x6cb: 0x8f, 0x6cc: 0x8f, 0x6cd: 0x8f, 0x6ce: 0x8f, 0x6cf: 0x8f, - 0x6d0: 0x8f, 0x6d1: 0x8f, 0x6d2: 0x8f, 0x6d3: 0x8f, 0x6d4: 0x8f, 0x6d5: 0x8f, 0x6d6: 0x8f, 0x6d7: 0x8f, - 0x6d8: 0x8f, 0x6d9: 0x8f, 0x6da: 0x8f, 0x6db: 0x140, 0x6dc: 0x8f, 0x6dd: 0x8f, 0x6de: 0x8f, 0x6df: 0x8f, - 0x6e0: 0x8f, 0x6e1: 0x8f, 0x6e2: 0x8f, 0x6e3: 0x8f, 0x6e4: 0x8f, 0x6e5: 0x8f, 0x6e6: 0x8f, 0x6e7: 0x8f, - 0x6e8: 0x8f, 0x6e9: 0x8f, 0x6ea: 0x8f, 0x6eb: 0x8f, 0x6ec: 0x8f, 0x6ed: 0x8f, 0x6ee: 0x8f, 0x6ef: 0x8f, - 0x6f0: 0x8f, 0x6f1: 0x8f, 0x6f2: 0x8f, 0x6f3: 0x8f, 0x6f4: 0x8f, 0x6f5: 0x8f, 0x6f6: 0x8f, 0x6f7: 0x8f, - 0x6f8: 0x8f, 0x6f9: 0x8f, 0x6fa: 0x8f, 0x6fb: 0x8f, 0x6fc: 0x8f, 0x6fd: 0x8f, 0x6fe: 0x8f, 0x6ff: 0x8f, - // Block 0x1c, offset 0x700 - 0x700: 0x8f, 0x701: 0x8f, 0x702: 0x8f, 0x703: 0x8f, 0x704: 0x8f, 0x705: 0x8f, 0x706: 0x8f, 0x707: 0x8f, - 0x708: 0x8f, 0x709: 0x8f, 0x70a: 0x8f, 0x70b: 0x8f, 0x70c: 0x8f, 0x70d: 0x8f, 0x70e: 0x8f, 0x70f: 0x8f, - 0x710: 0x8f, 0x711: 0x8f, 0x712: 0x8f, 0x713: 0x8f, 0x714: 0x8f, 0x715: 0x8f, 0x716: 0x8f, 0x717: 0x8f, - 0x718: 0x8f, 0x719: 0x8f, 0x71a: 0x8f, 0x71b: 0x8f, 0x71c: 0x141, 0x71d: 0x8f, 0x71e: 0x8f, 0x71f: 0x8f, - 0x720: 0x142, 0x721: 0x8f, 0x722: 0x8f, 0x723: 0x8f, 0x724: 0x8f, 0x725: 0x8f, 0x726: 0x8f, 0x727: 0x8f, - 0x728: 0x8f, 0x729: 0x8f, 0x72a: 0x8f, 0x72b: 0x8f, 0x72c: 0x8f, 0x72d: 0x8f, 0x72e: 0x8f, 0x72f: 0x8f, - 0x730: 0x8f, 0x731: 0x8f, 0x732: 0x8f, 0x733: 0x8f, 0x734: 0x8f, 0x735: 0x8f, 0x736: 0x8f, 0x737: 0x8f, - 0x738: 0x8f, 0x739: 0x8f, 0x73a: 0x8f, 0x73b: 0x8f, 0x73c: 0x8f, 0x73d: 0x8f, 0x73e: 0x8f, 0x73f: 0x8f, - // Block 0x1d, offset 0x740 - 0x740: 0x8f, 0x741: 0x8f, 0x742: 0x8f, 0x743: 0x8f, 0x744: 0x8f, 0x745: 0x8f, 0x746: 0x8f, 0x747: 0x8f, - 0x748: 0x8f, 0x749: 0x8f, 0x74a: 0x8f, 0x74b: 0x8f, 0x74c: 0x8f, 0x74d: 0x8f, 0x74e: 0x8f, 0x74f: 0x8f, - 0x750: 0x8f, 0x751: 0x8f, 0x752: 0x8f, 0x753: 0x8f, 0x754: 0x8f, 0x755: 0x8f, 0x756: 0x8f, 0x757: 0x8f, - 0x758: 0x8f, 0x759: 0x8f, 0x75a: 0x8f, 0x75b: 0x8f, 0x75c: 0x8f, 0x75d: 0x8f, 0x75e: 0x8f, 0x75f: 0x8f, - 0x760: 0x8f, 0x761: 0x8f, 0x762: 0x8f, 0x763: 0x8f, 0x764: 0x8f, 0x765: 0x8f, 0x766: 0x8f, 0x767: 0x8f, - 0x768: 0x8f, 0x769: 0x8f, 0x76a: 0x8f, 0x76b: 0x8f, 0x76c: 0x8f, 0x76d: 0x8f, 0x76e: 0x8f, 0x76f: 0x8f, - 0x770: 0x8f, 0x771: 0x8f, 0x772: 0x8f, 0x773: 0x8f, 0x774: 0x8f, 0x775: 0x8f, 0x776: 0x8f, 0x777: 0x8f, - 0x778: 0x8f, 0x779: 0x8f, 0x77a: 0x143, 0x77b: 0x8f, 0x77c: 0x8f, 0x77d: 0x8f, 0x77e: 0x8f, 0x77f: 0x8f, - // Block 0x1e, offset 0x780 - 0x780: 0x8f, 0x781: 0x8f, 0x782: 0x8f, 0x783: 0x8f, 0x784: 0x8f, 0x785: 0x8f, 0x786: 0x8f, 0x787: 0x8f, - 0x788: 0x8f, 0x789: 0x8f, 0x78a: 0x8f, 0x78b: 0x8f, 0x78c: 0x8f, 0x78d: 0x8f, 0x78e: 0x8f, 0x78f: 0x8f, - 0x790: 0x8f, 0x791: 0x8f, 0x792: 0x8f, 0x793: 0x8f, 0x794: 0x8f, 0x795: 0x8f, 0x796: 0x8f, 0x797: 0x8f, - 0x798: 0x8f, 0x799: 0x8f, 0x79a: 0x8f, 0x79b: 0x8f, 0x79c: 0x8f, 0x79d: 0x8f, 0x79e: 0x8f, 0x79f: 0x8f, - 0x7a0: 0x8f, 0x7a1: 0x8f, 0x7a2: 0x8f, 0x7a3: 0x8f, 0x7a4: 0x8f, 0x7a5: 0x8f, 0x7a6: 0x8f, 0x7a7: 0x8f, - 0x7a8: 0x8f, 0x7a9: 0x8f, 0x7aa: 0x8f, 0x7ab: 0x8f, 0x7ac: 0x8f, 0x7ad: 0x8f, 0x7ae: 0x8f, 0x7af: 0x144, - // Block 0x1f, offset 0x7c0 - 0x7e0: 0x82, 0x7e1: 0x82, 0x7e2: 0x82, 0x7e3: 0x82, 0x7e4: 0x82, 0x7e5: 0x82, 0x7e6: 0x82, 0x7e7: 0x82, - 0x7e8: 0x145, - // Block 0x20, offset 0x800 - 0x810: 0x0e, 0x811: 0x0f, 0x812: 0x10, 0x813: 0x11, 0x814: 0x12, 0x816: 0x13, 0x817: 0x0a, - 0x818: 0x14, 0x81b: 0x15, 0x81d: 0x16, 0x81e: 0x17, 0x81f: 0x18, - 0x820: 0x07, 0x821: 0x07, 0x822: 0x07, 0x823: 0x07, 0x824: 0x07, 0x825: 0x07, 0x826: 0x07, 0x827: 0x07, - 0x828: 0x07, 0x829: 0x07, 0x82a: 0x19, 0x82b: 0x1a, 0x82c: 0x1b, 0x82d: 0x07, 0x82e: 0x1c, 0x82f: 0x1d, - // Block 0x21, offset 0x840 - 0x840: 0x146, 0x841: 0x3e, 0x844: 0x3e, 0x845: 0x3e, 0x846: 0x3e, 0x847: 0x147, - // Block 0x22, offset 0x880 - 0x880: 0x3e, 0x881: 0x3e, 0x882: 0x3e, 0x883: 0x3e, 0x884: 0x3e, 0x885: 0x3e, 0x886: 0x3e, 0x887: 0x3e, - 0x888: 0x3e, 0x889: 0x3e, 0x88a: 0x3e, 0x88b: 0x3e, 0x88c: 0x3e, 0x88d: 0x3e, 0x88e: 0x3e, 0x88f: 0x3e, - 0x890: 0x3e, 0x891: 0x3e, 0x892: 0x3e, 0x893: 0x3e, 0x894: 0x3e, 0x895: 0x3e, 0x896: 0x3e, 0x897: 0x3e, - 0x898: 0x3e, 0x899: 0x3e, 0x89a: 0x3e, 0x89b: 0x3e, 0x89c: 0x3e, 0x89d: 0x3e, 0x89e: 0x3e, 0x89f: 0x3e, - 0x8a0: 0x3e, 0x8a1: 0x3e, 0x8a2: 0x3e, 0x8a3: 0x3e, 0x8a4: 0x3e, 0x8a5: 0x3e, 0x8a6: 0x3e, 0x8a7: 0x3e, - 0x8a8: 0x3e, 0x8a9: 0x3e, 0x8aa: 0x3e, 0x8ab: 0x3e, 0x8ac: 0x3e, 0x8ad: 0x3e, 0x8ae: 0x3e, 0x8af: 0x3e, - 0x8b0: 0x3e, 0x8b1: 0x3e, 0x8b2: 0x3e, 0x8b3: 0x3e, 0x8b4: 0x3e, 0x8b5: 0x3e, 0x8b6: 0x3e, 0x8b7: 0x3e, - 0x8b8: 0x3e, 0x8b9: 0x3e, 0x8ba: 0x3e, 0x8bb: 0x3e, 0x8bc: 0x3e, 0x8bd: 0x3e, 0x8be: 0x3e, 0x8bf: 0x148, - // Block 0x23, offset 0x8c0 - 0x8e0: 0x1f, - 0x8f0: 0x0c, 0x8f1: 0x0c, 0x8f2: 0x0c, 0x8f3: 0x0c, 0x8f4: 0x0c, 0x8f5: 0x0c, 0x8f6: 0x0c, 0x8f7: 0x0c, - 0x8f8: 0x0c, 0x8f9: 0x0c, 0x8fa: 0x0c, 0x8fb: 0x0c, 0x8fc: 0x0c, 0x8fd: 0x0c, 0x8fe: 0x0c, 0x8ff: 0x20, - // Block 0x24, offset 0x900 - 0x900: 0x0c, 0x901: 0x0c, 0x902: 0x0c, 0x903: 0x0c, 0x904: 0x0c, 0x905: 0x0c, 0x906: 0x0c, 0x907: 0x0c, - 0x908: 0x0c, 0x909: 0x0c, 0x90a: 0x0c, 0x90b: 0x0c, 0x90c: 0x0c, 0x90d: 0x0c, 0x90e: 0x0c, 0x90f: 0x20, -} - -// Total table size 25920 bytes (25KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/secure/precis/tables9.0.0.go b/vendor/golang.org/x/text/secure/precis/tables9.0.0.go deleted file mode 100644 index dacaf6a4..00000000 --- a/vendor/golang.org/x/text/secure/precis/tables9.0.0.go +++ /dev/null @@ -1,3790 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build !go1.10 - -package precis - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" - -// 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 *derivedPropertiesTrie) lookup(s []byte) (v uint8, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return derivedPropertiesValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = derivedPropertiesIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = derivedPropertiesIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = derivedPropertiesIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *derivedPropertiesTrie) lookupUnsafe(s []byte) uint8 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return derivedPropertiesValues[c0] - } - i := derivedPropertiesIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *derivedPropertiesTrie) lookupString(s string) (v uint8, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return derivedPropertiesValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = derivedPropertiesIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := derivedPropertiesIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = derivedPropertiesIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = derivedPropertiesIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *derivedPropertiesTrie) lookupStringUnsafe(s string) uint8 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return derivedPropertiesValues[c0] - } - i := derivedPropertiesIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = derivedPropertiesIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// derivedPropertiesTrie. Total size: 25344 bytes (24.75 KiB). Checksum: c5b977d76d42d8a. -type derivedPropertiesTrie struct{} - -func newDerivedPropertiesTrie(i int) *derivedPropertiesTrie { - return &derivedPropertiesTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *derivedPropertiesTrie) lookupValue(n uint32, b byte) uint8 { - switch { - default: - return uint8(derivedPropertiesValues[n<<6+uint32(b)]) - } -} - -// derivedPropertiesValues: 324 blocks, 20736 entries, 20736 bytes -// The third block is the zero block. -var derivedPropertiesValues = [20736]uint8{ - // Block 0x0, offset 0x0 - 0x00: 0x0040, 0x01: 0x0040, 0x02: 0x0040, 0x03: 0x0040, 0x04: 0x0040, 0x05: 0x0040, - 0x06: 0x0040, 0x07: 0x0040, 0x08: 0x0040, 0x09: 0x0040, 0x0a: 0x0040, 0x0b: 0x0040, - 0x0c: 0x0040, 0x0d: 0x0040, 0x0e: 0x0040, 0x0f: 0x0040, 0x10: 0x0040, 0x11: 0x0040, - 0x12: 0x0040, 0x13: 0x0040, 0x14: 0x0040, 0x15: 0x0040, 0x16: 0x0040, 0x17: 0x0040, - 0x18: 0x0040, 0x19: 0x0040, 0x1a: 0x0040, 0x1b: 0x0040, 0x1c: 0x0040, 0x1d: 0x0040, - 0x1e: 0x0040, 0x1f: 0x0040, 0x20: 0x0080, 0x21: 0x00c0, 0x22: 0x00c0, 0x23: 0x00c0, - 0x24: 0x00c0, 0x25: 0x00c0, 0x26: 0x00c0, 0x27: 0x00c0, 0x28: 0x00c0, 0x29: 0x00c0, - 0x2a: 0x00c0, 0x2b: 0x00c0, 0x2c: 0x00c0, 0x2d: 0x00c0, 0x2e: 0x00c0, 0x2f: 0x00c0, - 0x30: 0x00c0, 0x31: 0x00c0, 0x32: 0x00c0, 0x33: 0x00c0, 0x34: 0x00c0, 0x35: 0x00c0, - 0x36: 0x00c0, 0x37: 0x00c0, 0x38: 0x00c0, 0x39: 0x00c0, 0x3a: 0x00c0, 0x3b: 0x00c0, - 0x3c: 0x00c0, 0x3d: 0x00c0, 0x3e: 0x00c0, 0x3f: 0x00c0, - // Block 0x1, offset 0x40 - 0x40: 0x00c0, 0x41: 0x00c0, 0x42: 0x00c0, 0x43: 0x00c0, 0x44: 0x00c0, 0x45: 0x00c0, - 0x46: 0x00c0, 0x47: 0x00c0, 0x48: 0x00c0, 0x49: 0x00c0, 0x4a: 0x00c0, 0x4b: 0x00c0, - 0x4c: 0x00c0, 0x4d: 0x00c0, 0x4e: 0x00c0, 0x4f: 0x00c0, 0x50: 0x00c0, 0x51: 0x00c0, - 0x52: 0x00c0, 0x53: 0x00c0, 0x54: 0x00c0, 0x55: 0x00c0, 0x56: 0x00c0, 0x57: 0x00c0, - 0x58: 0x00c0, 0x59: 0x00c0, 0x5a: 0x00c0, 0x5b: 0x00c0, 0x5c: 0x00c0, 0x5d: 0x00c0, - 0x5e: 0x00c0, 0x5f: 0x00c0, 0x60: 0x00c0, 0x61: 0x00c0, 0x62: 0x00c0, 0x63: 0x00c0, - 0x64: 0x00c0, 0x65: 0x00c0, 0x66: 0x00c0, 0x67: 0x00c0, 0x68: 0x00c0, 0x69: 0x00c0, - 0x6a: 0x00c0, 0x6b: 0x00c0, 0x6c: 0x00c7, 0x6d: 0x00c0, 0x6e: 0x00c0, 0x6f: 0x00c0, - 0x70: 0x00c0, 0x71: 0x00c0, 0x72: 0x00c0, 0x73: 0x00c0, 0x74: 0x00c0, 0x75: 0x00c0, - 0x76: 0x00c0, 0x77: 0x00c0, 0x78: 0x00c0, 0x79: 0x00c0, 0x7a: 0x00c0, 0x7b: 0x00c0, - 0x7c: 0x00c0, 0x7d: 0x00c0, 0x7e: 0x00c0, 0x7f: 0x0040, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, - 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, - 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, - 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, - 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, - 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x0080, 0xe1: 0x0080, 0xe2: 0x0080, 0xe3: 0x0080, - 0xe4: 0x0080, 0xe5: 0x0080, 0xe6: 0x0080, 0xe7: 0x0080, 0xe8: 0x0080, 0xe9: 0x0080, - 0xea: 0x0080, 0xeb: 0x0080, 0xec: 0x0080, 0xed: 0x0040, 0xee: 0x0080, 0xef: 0x0080, - 0xf0: 0x0080, 0xf1: 0x0080, 0xf2: 0x0080, 0xf3: 0x0080, 0xf4: 0x0080, 0xf5: 0x0080, - 0xf6: 0x0080, 0xf7: 0x004f, 0xf8: 0x0080, 0xf9: 0x0080, 0xfa: 0x0080, 0xfb: 0x0080, - 0xfc: 0x0080, 0xfd: 0x0080, 0xfe: 0x0080, 0xff: 0x0080, - // Block 0x4, offset 0x100 - 0x100: 0x00c0, 0x101: 0x00c0, 0x102: 0x00c0, 0x103: 0x00c0, 0x104: 0x00c0, 0x105: 0x00c0, - 0x106: 0x00c0, 0x107: 0x00c0, 0x108: 0x00c0, 0x109: 0x00c0, 0x10a: 0x00c0, 0x10b: 0x00c0, - 0x10c: 0x00c0, 0x10d: 0x00c0, 0x10e: 0x00c0, 0x10f: 0x00c0, 0x110: 0x00c0, 0x111: 0x00c0, - 0x112: 0x00c0, 0x113: 0x00c0, 0x114: 0x00c0, 0x115: 0x00c0, 0x116: 0x00c0, 0x117: 0x0080, - 0x118: 0x00c0, 0x119: 0x00c0, 0x11a: 0x00c0, 0x11b: 0x00c0, 0x11c: 0x00c0, 0x11d: 0x00c0, - 0x11e: 0x00c0, 0x11f: 0x00c0, 0x120: 0x00c0, 0x121: 0x00c0, 0x122: 0x00c0, 0x123: 0x00c0, - 0x124: 0x00c0, 0x125: 0x00c0, 0x126: 0x00c0, 0x127: 0x00c0, 0x128: 0x00c0, 0x129: 0x00c0, - 0x12a: 0x00c0, 0x12b: 0x00c0, 0x12c: 0x00c0, 0x12d: 0x00c0, 0x12e: 0x00c0, 0x12f: 0x00c0, - 0x130: 0x00c0, 0x131: 0x00c0, 0x132: 0x00c0, 0x133: 0x00c0, 0x134: 0x00c0, 0x135: 0x00c0, - 0x136: 0x00c0, 0x137: 0x0080, 0x138: 0x00c0, 0x139: 0x00c0, 0x13a: 0x00c0, 0x13b: 0x00c0, - 0x13c: 0x00c0, 0x13d: 0x00c0, 0x13e: 0x00c0, 0x13f: 0x00c0, - // Block 0x5, offset 0x140 - 0x140: 0x00c0, 0x141: 0x00c0, 0x142: 0x00c0, 0x143: 0x00c0, 0x144: 0x00c0, 0x145: 0x00c0, - 0x146: 0x00c0, 0x147: 0x00c0, 0x148: 0x00c0, 0x149: 0x00c0, 0x14a: 0x00c0, 0x14b: 0x00c0, - 0x14c: 0x00c0, 0x14d: 0x00c0, 0x14e: 0x00c0, 0x14f: 0x00c0, 0x150: 0x00c0, 0x151: 0x00c0, - 0x152: 0x00c0, 0x153: 0x00c0, 0x154: 0x00c0, 0x155: 0x00c0, 0x156: 0x00c0, 0x157: 0x00c0, - 0x158: 0x00c0, 0x159: 0x00c0, 0x15a: 0x00c0, 0x15b: 0x00c0, 0x15c: 0x00c0, 0x15d: 0x00c0, - 0x15e: 0x00c0, 0x15f: 0x00c0, 0x160: 0x00c0, 0x161: 0x00c0, 0x162: 0x00c0, 0x163: 0x00c0, - 0x164: 0x00c0, 0x165: 0x00c0, 0x166: 0x00c0, 0x167: 0x00c0, 0x168: 0x00c0, 0x169: 0x00c0, - 0x16a: 0x00c0, 0x16b: 0x00c0, 0x16c: 0x00c0, 0x16d: 0x00c0, 0x16e: 0x00c0, 0x16f: 0x00c0, - 0x170: 0x00c0, 0x171: 0x00c0, 0x172: 0x0080, 0x173: 0x0080, 0x174: 0x00c0, 0x175: 0x00c0, - 0x176: 0x00c0, 0x177: 0x00c0, 0x178: 0x00c0, 0x179: 0x00c0, 0x17a: 0x00c0, 0x17b: 0x00c0, - 0x17c: 0x00c0, 0x17d: 0x00c0, 0x17e: 0x00c0, 0x17f: 0x0080, - // Block 0x6, offset 0x180 - 0x180: 0x0080, 0x181: 0x00c0, 0x182: 0x00c0, 0x183: 0x00c0, 0x184: 0x00c0, 0x185: 0x00c0, - 0x186: 0x00c0, 0x187: 0x00c0, 0x188: 0x00c0, 0x189: 0x0080, 0x18a: 0x00c0, 0x18b: 0x00c0, - 0x18c: 0x00c0, 0x18d: 0x00c0, 0x18e: 0x00c0, 0x18f: 0x00c0, 0x190: 0x00c0, 0x191: 0x00c0, - 0x192: 0x00c0, 0x193: 0x00c0, 0x194: 0x00c0, 0x195: 0x00c0, 0x196: 0x00c0, 0x197: 0x00c0, - 0x198: 0x00c0, 0x199: 0x00c0, 0x19a: 0x00c0, 0x19b: 0x00c0, 0x19c: 0x00c0, 0x19d: 0x00c0, - 0x19e: 0x00c0, 0x19f: 0x00c0, 0x1a0: 0x00c0, 0x1a1: 0x00c0, 0x1a2: 0x00c0, 0x1a3: 0x00c0, - 0x1a4: 0x00c0, 0x1a5: 0x00c0, 0x1a6: 0x00c0, 0x1a7: 0x00c0, 0x1a8: 0x00c0, 0x1a9: 0x00c0, - 0x1aa: 0x00c0, 0x1ab: 0x00c0, 0x1ac: 0x00c0, 0x1ad: 0x00c0, 0x1ae: 0x00c0, 0x1af: 0x00c0, - 0x1b0: 0x00c0, 0x1b1: 0x00c0, 0x1b2: 0x00c0, 0x1b3: 0x00c0, 0x1b4: 0x00c0, 0x1b5: 0x00c0, - 0x1b6: 0x00c0, 0x1b7: 0x00c0, 0x1b8: 0x00c0, 0x1b9: 0x00c0, 0x1ba: 0x00c0, 0x1bb: 0x00c0, - 0x1bc: 0x00c0, 0x1bd: 0x00c0, 0x1be: 0x00c0, 0x1bf: 0x0080, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x00c0, 0x1c1: 0x00c0, 0x1c2: 0x00c0, 0x1c3: 0x00c0, 0x1c4: 0x00c0, 0x1c5: 0x00c0, - 0x1c6: 0x00c0, 0x1c7: 0x00c0, 0x1c8: 0x00c0, 0x1c9: 0x00c0, 0x1ca: 0x00c0, 0x1cb: 0x00c0, - 0x1cc: 0x00c0, 0x1cd: 0x00c0, 0x1ce: 0x00c0, 0x1cf: 0x00c0, 0x1d0: 0x00c0, 0x1d1: 0x00c0, - 0x1d2: 0x00c0, 0x1d3: 0x00c0, 0x1d4: 0x00c0, 0x1d5: 0x00c0, 0x1d6: 0x00c0, 0x1d7: 0x00c0, - 0x1d8: 0x00c0, 0x1d9: 0x00c0, 0x1da: 0x00c0, 0x1db: 0x00c0, 0x1dc: 0x00c0, 0x1dd: 0x00c0, - 0x1de: 0x00c0, 0x1df: 0x00c0, 0x1e0: 0x00c0, 0x1e1: 0x00c0, 0x1e2: 0x00c0, 0x1e3: 0x00c0, - 0x1e4: 0x00c0, 0x1e5: 0x00c0, 0x1e6: 0x00c0, 0x1e7: 0x00c0, 0x1e8: 0x00c0, 0x1e9: 0x00c0, - 0x1ea: 0x00c0, 0x1eb: 0x00c0, 0x1ec: 0x00c0, 0x1ed: 0x00c0, 0x1ee: 0x00c0, 0x1ef: 0x00c0, - 0x1f0: 0x00c0, 0x1f1: 0x00c0, 0x1f2: 0x00c0, 0x1f3: 0x00c0, 0x1f4: 0x00c0, 0x1f5: 0x00c0, - 0x1f6: 0x00c0, 0x1f7: 0x00c0, 0x1f8: 0x00c0, 0x1f9: 0x00c0, 0x1fa: 0x00c0, 0x1fb: 0x00c0, - 0x1fc: 0x00c0, 0x1fd: 0x00c0, 0x1fe: 0x00c0, 0x1ff: 0x00c0, - // Block 0x8, offset 0x200 - 0x200: 0x00c0, 0x201: 0x00c0, 0x202: 0x00c0, 0x203: 0x00c0, 0x204: 0x0080, 0x205: 0x0080, - 0x206: 0x0080, 0x207: 0x0080, 0x208: 0x0080, 0x209: 0x0080, 0x20a: 0x0080, 0x20b: 0x0080, - 0x20c: 0x0080, 0x20d: 0x00c0, 0x20e: 0x00c0, 0x20f: 0x00c0, 0x210: 0x00c0, 0x211: 0x00c0, - 0x212: 0x00c0, 0x213: 0x00c0, 0x214: 0x00c0, 0x215: 0x00c0, 0x216: 0x00c0, 0x217: 0x00c0, - 0x218: 0x00c0, 0x219: 0x00c0, 0x21a: 0x00c0, 0x21b: 0x00c0, 0x21c: 0x00c0, 0x21d: 0x00c0, - 0x21e: 0x00c0, 0x21f: 0x00c0, 0x220: 0x00c0, 0x221: 0x00c0, 0x222: 0x00c0, 0x223: 0x00c0, - 0x224: 0x00c0, 0x225: 0x00c0, 0x226: 0x00c0, 0x227: 0x00c0, 0x228: 0x00c0, 0x229: 0x00c0, - 0x22a: 0x00c0, 0x22b: 0x00c0, 0x22c: 0x00c0, 0x22d: 0x00c0, 0x22e: 0x00c0, 0x22f: 0x00c0, - 0x230: 0x00c0, 0x231: 0x0080, 0x232: 0x0080, 0x233: 0x0080, 0x234: 0x00c0, 0x235: 0x00c0, - 0x236: 0x00c0, 0x237: 0x00c0, 0x238: 0x00c0, 0x239: 0x00c0, 0x23a: 0x00c0, 0x23b: 0x00c0, - 0x23c: 0x00c0, 0x23d: 0x00c0, 0x23e: 0x00c0, 0x23f: 0x00c0, - // Block 0x9, offset 0x240 - 0x240: 0x00c0, 0x241: 0x00c0, 0x242: 0x00c0, 0x243: 0x00c0, 0x244: 0x00c0, 0x245: 0x00c0, - 0x246: 0x00c0, 0x247: 0x00c0, 0x248: 0x00c0, 0x249: 0x00c0, 0x24a: 0x00c0, 0x24b: 0x00c0, - 0x24c: 0x00c0, 0x24d: 0x00c0, 0x24e: 0x00c0, 0x24f: 0x00c0, 0x250: 0x00c0, 0x251: 0x00c0, - 0x252: 0x00c0, 0x253: 0x00c0, 0x254: 0x00c0, 0x255: 0x00c0, 0x256: 0x00c0, 0x257: 0x00c0, - 0x258: 0x00c0, 0x259: 0x00c0, 0x25a: 0x00c0, 0x25b: 0x00c0, 0x25c: 0x00c0, 0x25d: 0x00c0, - 0x25e: 0x00c0, 0x25f: 0x00c0, 0x260: 0x00c0, 0x261: 0x00c0, 0x262: 0x00c0, 0x263: 0x00c0, - 0x264: 0x00c0, 0x265: 0x00c0, 0x266: 0x00c0, 0x267: 0x00c0, 0x268: 0x00c0, 0x269: 0x00c0, - 0x26a: 0x00c0, 0x26b: 0x00c0, 0x26c: 0x00c0, 0x26d: 0x00c0, 0x26e: 0x00c0, 0x26f: 0x00c0, - 0x270: 0x0080, 0x271: 0x0080, 0x272: 0x0080, 0x273: 0x0080, 0x274: 0x0080, 0x275: 0x0080, - 0x276: 0x0080, 0x277: 0x0080, 0x278: 0x0080, 0x279: 0x00c0, 0x27a: 0x00c0, 0x27b: 0x00c0, - 0x27c: 0x00c0, 0x27d: 0x00c0, 0x27e: 0x00c0, 0x27f: 0x00c0, - // Block 0xa, offset 0x280 - 0x280: 0x00c0, 0x281: 0x00c0, 0x282: 0x0080, 0x283: 0x0080, 0x284: 0x0080, 0x285: 0x0080, - 0x286: 0x00c0, 0x287: 0x00c0, 0x288: 0x00c0, 0x289: 0x00c0, 0x28a: 0x00c0, 0x28b: 0x00c0, - 0x28c: 0x00c0, 0x28d: 0x00c0, 0x28e: 0x00c0, 0x28f: 0x00c0, 0x290: 0x00c0, 0x291: 0x00c0, - 0x292: 0x0080, 0x293: 0x0080, 0x294: 0x0080, 0x295: 0x0080, 0x296: 0x0080, 0x297: 0x0080, - 0x298: 0x0080, 0x299: 0x0080, 0x29a: 0x0080, 0x29b: 0x0080, 0x29c: 0x0080, 0x29d: 0x0080, - 0x29e: 0x0080, 0x29f: 0x0080, 0x2a0: 0x0080, 0x2a1: 0x0080, 0x2a2: 0x0080, 0x2a3: 0x0080, - 0x2a4: 0x0080, 0x2a5: 0x0080, 0x2a6: 0x0080, 0x2a7: 0x0080, 0x2a8: 0x0080, 0x2a9: 0x0080, - 0x2aa: 0x0080, 0x2ab: 0x0080, 0x2ac: 0x00c0, 0x2ad: 0x0080, 0x2ae: 0x00c0, 0x2af: 0x0080, - 0x2b0: 0x0080, 0x2b1: 0x0080, 0x2b2: 0x0080, 0x2b3: 0x0080, 0x2b4: 0x0080, 0x2b5: 0x0080, - 0x2b6: 0x0080, 0x2b7: 0x0080, 0x2b8: 0x0080, 0x2b9: 0x0080, 0x2ba: 0x0080, 0x2bb: 0x0080, - 0x2bc: 0x0080, 0x2bd: 0x0080, 0x2be: 0x0080, 0x2bf: 0x0080, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x00c3, 0x2c1: 0x00c3, 0x2c2: 0x00c3, 0x2c3: 0x00c3, 0x2c4: 0x00c3, 0x2c5: 0x00c3, - 0x2c6: 0x00c3, 0x2c7: 0x00c3, 0x2c8: 0x00c3, 0x2c9: 0x00c3, 0x2ca: 0x00c3, 0x2cb: 0x00c3, - 0x2cc: 0x00c3, 0x2cd: 0x00c3, 0x2ce: 0x00c3, 0x2cf: 0x00c3, 0x2d0: 0x00c3, 0x2d1: 0x00c3, - 0x2d2: 0x00c3, 0x2d3: 0x00c3, 0x2d4: 0x00c3, 0x2d5: 0x00c3, 0x2d6: 0x00c3, 0x2d7: 0x00c3, - 0x2d8: 0x00c3, 0x2d9: 0x00c3, 0x2da: 0x00c3, 0x2db: 0x00c3, 0x2dc: 0x00c3, 0x2dd: 0x00c3, - 0x2de: 0x00c3, 0x2df: 0x00c3, 0x2e0: 0x00c3, 0x2e1: 0x00c3, 0x2e2: 0x00c3, 0x2e3: 0x00c3, - 0x2e4: 0x00c3, 0x2e5: 0x00c3, 0x2e6: 0x00c3, 0x2e7: 0x00c3, 0x2e8: 0x00c3, 0x2e9: 0x00c3, - 0x2ea: 0x00c3, 0x2eb: 0x00c3, 0x2ec: 0x00c3, 0x2ed: 0x00c3, 0x2ee: 0x00c3, 0x2ef: 0x00c3, - 0x2f0: 0x00c3, 0x2f1: 0x00c3, 0x2f2: 0x00c3, 0x2f3: 0x00c3, 0x2f4: 0x00c3, 0x2f5: 0x00c3, - 0x2f6: 0x00c3, 0x2f7: 0x00c3, 0x2f8: 0x00c3, 0x2f9: 0x00c3, 0x2fa: 0x00c3, 0x2fb: 0x00c3, - 0x2fc: 0x00c3, 0x2fd: 0x00c3, 0x2fe: 0x00c3, 0x2ff: 0x00c3, - // Block 0xc, offset 0x300 - 0x300: 0x0083, 0x301: 0x0083, 0x302: 0x00c3, 0x303: 0x0083, 0x304: 0x0083, 0x305: 0x00c3, - 0x306: 0x00c3, 0x307: 0x00c3, 0x308: 0x00c3, 0x309: 0x00c3, 0x30a: 0x00c3, 0x30b: 0x00c3, - 0x30c: 0x00c3, 0x30d: 0x00c3, 0x30e: 0x00c3, 0x30f: 0x0040, 0x310: 0x00c3, 0x311: 0x00c3, - 0x312: 0x00c3, 0x313: 0x00c3, 0x314: 0x00c3, 0x315: 0x00c3, 0x316: 0x00c3, 0x317: 0x00c3, - 0x318: 0x00c3, 0x319: 0x00c3, 0x31a: 0x00c3, 0x31b: 0x00c3, 0x31c: 0x00c3, 0x31d: 0x00c3, - 0x31e: 0x00c3, 0x31f: 0x00c3, 0x320: 0x00c3, 0x321: 0x00c3, 0x322: 0x00c3, 0x323: 0x00c3, - 0x324: 0x00c3, 0x325: 0x00c3, 0x326: 0x00c3, 0x327: 0x00c3, 0x328: 0x00c3, 0x329: 0x00c3, - 0x32a: 0x00c3, 0x32b: 0x00c3, 0x32c: 0x00c3, 0x32d: 0x00c3, 0x32e: 0x00c3, 0x32f: 0x00c3, - 0x330: 0x00c8, 0x331: 0x00c8, 0x332: 0x00c8, 0x333: 0x00c8, 0x334: 0x0080, 0x335: 0x0050, - 0x336: 0x00c8, 0x337: 0x00c8, 0x33a: 0x0088, 0x33b: 0x00c8, - 0x33c: 0x00c8, 0x33d: 0x00c8, 0x33e: 0x0080, 0x33f: 0x00c8, - // Block 0xd, offset 0x340 - 0x344: 0x0088, 0x345: 0x0080, - 0x346: 0x00c8, 0x347: 0x0080, 0x348: 0x00c8, 0x349: 0x00c8, 0x34a: 0x00c8, - 0x34c: 0x00c8, 0x34e: 0x00c8, 0x34f: 0x00c8, 0x350: 0x00c8, 0x351: 0x00c8, - 0x352: 0x00c8, 0x353: 0x00c8, 0x354: 0x00c8, 0x355: 0x00c8, 0x356: 0x00c8, 0x357: 0x00c8, - 0x358: 0x00c8, 0x359: 0x00c8, 0x35a: 0x00c8, 0x35b: 0x00c8, 0x35c: 0x00c8, 0x35d: 0x00c8, - 0x35e: 0x00c8, 0x35f: 0x00c8, 0x360: 0x00c8, 0x361: 0x00c8, 0x363: 0x00c8, - 0x364: 0x00c8, 0x365: 0x00c8, 0x366: 0x00c8, 0x367: 0x00c8, 0x368: 0x00c8, 0x369: 0x00c8, - 0x36a: 0x00c8, 0x36b: 0x00c8, 0x36c: 0x00c8, 0x36d: 0x00c8, 0x36e: 0x00c8, 0x36f: 0x00c8, - 0x370: 0x00c8, 0x371: 0x00c8, 0x372: 0x00c8, 0x373: 0x00c8, 0x374: 0x00c8, 0x375: 0x00c8, - 0x376: 0x00c8, 0x377: 0x00c8, 0x378: 0x00c8, 0x379: 0x00c8, 0x37a: 0x00c8, 0x37b: 0x00c8, - 0x37c: 0x00c8, 0x37d: 0x00c8, 0x37e: 0x00c8, 0x37f: 0x00c8, - // Block 0xe, offset 0x380 - 0x380: 0x00c8, 0x381: 0x00c8, 0x382: 0x00c8, 0x383: 0x00c8, 0x384: 0x00c8, 0x385: 0x00c8, - 0x386: 0x00c8, 0x387: 0x00c8, 0x388: 0x00c8, 0x389: 0x00c8, 0x38a: 0x00c8, 0x38b: 0x00c8, - 0x38c: 0x00c8, 0x38d: 0x00c8, 0x38e: 0x00c8, 0x38f: 0x00c8, 0x390: 0x0088, 0x391: 0x0088, - 0x392: 0x0088, 0x393: 0x0088, 0x394: 0x0088, 0x395: 0x0088, 0x396: 0x0088, 0x397: 0x00c8, - 0x398: 0x00c8, 0x399: 0x00c8, 0x39a: 0x00c8, 0x39b: 0x00c8, 0x39c: 0x00c8, 0x39d: 0x00c8, - 0x39e: 0x00c8, 0x39f: 0x00c8, 0x3a0: 0x00c8, 0x3a1: 0x00c8, 0x3a2: 0x00c0, 0x3a3: 0x00c0, - 0x3a4: 0x00c0, 0x3a5: 0x00c0, 0x3a6: 0x00c0, 0x3a7: 0x00c0, 0x3a8: 0x00c0, 0x3a9: 0x00c0, - 0x3aa: 0x00c0, 0x3ab: 0x00c0, 0x3ac: 0x00c0, 0x3ad: 0x00c0, 0x3ae: 0x00c0, 0x3af: 0x00c0, - 0x3b0: 0x0088, 0x3b1: 0x0088, 0x3b2: 0x0088, 0x3b3: 0x00c8, 0x3b4: 0x0088, 0x3b5: 0x0088, - 0x3b6: 0x0088, 0x3b7: 0x00c8, 0x3b8: 0x00c8, 0x3b9: 0x0088, 0x3ba: 0x00c8, 0x3bb: 0x00c8, - 0x3bc: 0x00c8, 0x3bd: 0x00c8, 0x3be: 0x00c8, 0x3bf: 0x00c8, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x00c0, 0x3c1: 0x00c0, 0x3c2: 0x0080, 0x3c3: 0x00c3, 0x3c4: 0x00c3, 0x3c5: 0x00c3, - 0x3c6: 0x00c3, 0x3c7: 0x00c3, 0x3c8: 0x0083, 0x3c9: 0x0083, 0x3ca: 0x00c0, 0x3cb: 0x00c0, - 0x3cc: 0x00c0, 0x3cd: 0x00c0, 0x3ce: 0x00c0, 0x3cf: 0x00c0, 0x3d0: 0x00c0, 0x3d1: 0x00c0, - 0x3d2: 0x00c0, 0x3d3: 0x00c0, 0x3d4: 0x00c0, 0x3d5: 0x00c0, 0x3d6: 0x00c0, 0x3d7: 0x00c0, - 0x3d8: 0x00c0, 0x3d9: 0x00c0, 0x3da: 0x00c0, 0x3db: 0x00c0, 0x3dc: 0x00c0, 0x3dd: 0x00c0, - 0x3de: 0x00c0, 0x3df: 0x00c0, 0x3e0: 0x00c0, 0x3e1: 0x00c0, 0x3e2: 0x00c0, 0x3e3: 0x00c0, - 0x3e4: 0x00c0, 0x3e5: 0x00c0, 0x3e6: 0x00c0, 0x3e7: 0x00c0, 0x3e8: 0x00c0, 0x3e9: 0x00c0, - 0x3ea: 0x00c0, 0x3eb: 0x00c0, 0x3ec: 0x00c0, 0x3ed: 0x00c0, 0x3ee: 0x00c0, 0x3ef: 0x00c0, - 0x3f0: 0x00c0, 0x3f1: 0x00c0, 0x3f2: 0x00c0, 0x3f3: 0x00c0, 0x3f4: 0x00c0, 0x3f5: 0x00c0, - 0x3f6: 0x00c0, 0x3f7: 0x00c0, 0x3f8: 0x00c0, 0x3f9: 0x00c0, 0x3fa: 0x00c0, 0x3fb: 0x00c0, - 0x3fc: 0x00c0, 0x3fd: 0x00c0, 0x3fe: 0x00c0, 0x3ff: 0x00c0, - // Block 0x10, offset 0x400 - 0x400: 0x00c0, 0x401: 0x00c0, 0x402: 0x00c0, 0x403: 0x00c0, 0x404: 0x00c0, 0x405: 0x00c0, - 0x406: 0x00c0, 0x407: 0x00c0, 0x408: 0x00c0, 0x409: 0x00c0, 0x40a: 0x00c0, 0x40b: 0x00c0, - 0x40c: 0x00c0, 0x40d: 0x00c0, 0x40e: 0x00c0, 0x40f: 0x00c0, 0x410: 0x00c0, 0x411: 0x00c0, - 0x412: 0x00c0, 0x413: 0x00c0, 0x414: 0x00c0, 0x415: 0x00c0, 0x416: 0x00c0, 0x417: 0x00c0, - 0x418: 0x00c0, 0x419: 0x00c0, 0x41a: 0x00c0, 0x41b: 0x00c0, 0x41c: 0x00c0, 0x41d: 0x00c0, - 0x41e: 0x00c0, 0x41f: 0x00c0, 0x420: 0x00c0, 0x421: 0x00c0, 0x422: 0x00c0, 0x423: 0x00c0, - 0x424: 0x00c0, 0x425: 0x00c0, 0x426: 0x00c0, 0x427: 0x00c0, 0x428: 0x00c0, 0x429: 0x00c0, - 0x42a: 0x00c0, 0x42b: 0x00c0, 0x42c: 0x00c0, 0x42d: 0x00c0, 0x42e: 0x00c0, 0x42f: 0x00c0, - 0x431: 0x00c0, 0x432: 0x00c0, 0x433: 0x00c0, 0x434: 0x00c0, 0x435: 0x00c0, - 0x436: 0x00c0, 0x437: 0x00c0, 0x438: 0x00c0, 0x439: 0x00c0, 0x43a: 0x00c0, 0x43b: 0x00c0, - 0x43c: 0x00c0, 0x43d: 0x00c0, 0x43e: 0x00c0, 0x43f: 0x00c0, - // Block 0x11, offset 0x440 - 0x440: 0x00c0, 0x441: 0x00c0, 0x442: 0x00c0, 0x443: 0x00c0, 0x444: 0x00c0, 0x445: 0x00c0, - 0x446: 0x00c0, 0x447: 0x00c0, 0x448: 0x00c0, 0x449: 0x00c0, 0x44a: 0x00c0, 0x44b: 0x00c0, - 0x44c: 0x00c0, 0x44d: 0x00c0, 0x44e: 0x00c0, 0x44f: 0x00c0, 0x450: 0x00c0, 0x451: 0x00c0, - 0x452: 0x00c0, 0x453: 0x00c0, 0x454: 0x00c0, 0x455: 0x00c0, 0x456: 0x00c0, - 0x459: 0x00c0, 0x45a: 0x0080, 0x45b: 0x0080, 0x45c: 0x0080, 0x45d: 0x0080, - 0x45e: 0x0080, 0x45f: 0x0080, 0x461: 0x00c0, 0x462: 0x00c0, 0x463: 0x00c0, - 0x464: 0x00c0, 0x465: 0x00c0, 0x466: 0x00c0, 0x467: 0x00c0, 0x468: 0x00c0, 0x469: 0x00c0, - 0x46a: 0x00c0, 0x46b: 0x00c0, 0x46c: 0x00c0, 0x46d: 0x00c0, 0x46e: 0x00c0, 0x46f: 0x00c0, - 0x470: 0x00c0, 0x471: 0x00c0, 0x472: 0x00c0, 0x473: 0x00c0, 0x474: 0x00c0, 0x475: 0x00c0, - 0x476: 0x00c0, 0x477: 0x00c0, 0x478: 0x00c0, 0x479: 0x00c0, 0x47a: 0x00c0, 0x47b: 0x00c0, - 0x47c: 0x00c0, 0x47d: 0x00c0, 0x47e: 0x00c0, 0x47f: 0x00c0, - // Block 0x12, offset 0x480 - 0x480: 0x00c0, 0x481: 0x00c0, 0x482: 0x00c0, 0x483: 0x00c0, 0x484: 0x00c0, 0x485: 0x00c0, - 0x486: 0x00c0, 0x487: 0x0080, 0x489: 0x0080, 0x48a: 0x0080, - 0x48d: 0x0080, 0x48e: 0x0080, 0x48f: 0x0080, 0x491: 0x00cb, - 0x492: 0x00cb, 0x493: 0x00cb, 0x494: 0x00cb, 0x495: 0x00cb, 0x496: 0x00cb, 0x497: 0x00cb, - 0x498: 0x00cb, 0x499: 0x00cb, 0x49a: 0x00cb, 0x49b: 0x00cb, 0x49c: 0x00cb, 0x49d: 0x00cb, - 0x49e: 0x00cb, 0x49f: 0x00cb, 0x4a0: 0x00cb, 0x4a1: 0x00cb, 0x4a2: 0x00cb, 0x4a3: 0x00cb, - 0x4a4: 0x00cb, 0x4a5: 0x00cb, 0x4a6: 0x00cb, 0x4a7: 0x00cb, 0x4a8: 0x00cb, 0x4a9: 0x00cb, - 0x4aa: 0x00cb, 0x4ab: 0x00cb, 0x4ac: 0x00cb, 0x4ad: 0x00cb, 0x4ae: 0x00cb, 0x4af: 0x00cb, - 0x4b0: 0x00cb, 0x4b1: 0x00cb, 0x4b2: 0x00cb, 0x4b3: 0x00cb, 0x4b4: 0x00cb, 0x4b5: 0x00cb, - 0x4b6: 0x00cb, 0x4b7: 0x00cb, 0x4b8: 0x00cb, 0x4b9: 0x00cb, 0x4ba: 0x00cb, 0x4bb: 0x00cb, - 0x4bc: 0x00cb, 0x4bd: 0x00cb, 0x4be: 0x008a, 0x4bf: 0x00cb, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x008a, 0x4c1: 0x00cb, 0x4c2: 0x00cb, 0x4c3: 0x008a, 0x4c4: 0x00cb, 0x4c5: 0x00cb, - 0x4c6: 0x008a, 0x4c7: 0x00cb, - 0x4d0: 0x00ca, 0x4d1: 0x00ca, - 0x4d2: 0x00ca, 0x4d3: 0x00ca, 0x4d4: 0x00ca, 0x4d5: 0x00ca, 0x4d6: 0x00ca, 0x4d7: 0x00ca, - 0x4d8: 0x00ca, 0x4d9: 0x00ca, 0x4da: 0x00ca, 0x4db: 0x00ca, 0x4dc: 0x00ca, 0x4dd: 0x00ca, - 0x4de: 0x00ca, 0x4df: 0x00ca, 0x4e0: 0x00ca, 0x4e1: 0x00ca, 0x4e2: 0x00ca, 0x4e3: 0x00ca, - 0x4e4: 0x00ca, 0x4e5: 0x00ca, 0x4e6: 0x00ca, 0x4e7: 0x00ca, 0x4e8: 0x00ca, 0x4e9: 0x00ca, - 0x4ea: 0x00ca, - 0x4f0: 0x00ca, 0x4f1: 0x00ca, 0x4f2: 0x00ca, 0x4f3: 0x0051, 0x4f4: 0x0051, - // Block 0x14, offset 0x500 - 0x500: 0x0040, 0x501: 0x0040, 0x502: 0x0040, 0x503: 0x0040, 0x504: 0x0040, 0x505: 0x0040, - 0x506: 0x0080, 0x507: 0x0080, 0x508: 0x0080, 0x509: 0x0080, 0x50a: 0x0080, 0x50b: 0x0080, - 0x50c: 0x0080, 0x50d: 0x0080, 0x50e: 0x0080, 0x50f: 0x0080, 0x510: 0x00c3, 0x511: 0x00c3, - 0x512: 0x00c3, 0x513: 0x00c3, 0x514: 0x00c3, 0x515: 0x00c3, 0x516: 0x00c3, 0x517: 0x00c3, - 0x518: 0x00c3, 0x519: 0x00c3, 0x51a: 0x00c3, 0x51b: 0x0080, 0x51c: 0x0040, - 0x51e: 0x0080, 0x51f: 0x0080, 0x520: 0x00c2, 0x521: 0x00c0, 0x522: 0x00c4, 0x523: 0x00c4, - 0x524: 0x00c4, 0x525: 0x00c4, 0x526: 0x00c2, 0x527: 0x00c4, 0x528: 0x00c2, 0x529: 0x00c4, - 0x52a: 0x00c2, 0x52b: 0x00c2, 0x52c: 0x00c2, 0x52d: 0x00c2, 0x52e: 0x00c2, 0x52f: 0x00c4, - 0x530: 0x00c4, 0x531: 0x00c4, 0x532: 0x00c4, 0x533: 0x00c2, 0x534: 0x00c2, 0x535: 0x00c2, - 0x536: 0x00c2, 0x537: 0x00c2, 0x538: 0x00c2, 0x539: 0x00c2, 0x53a: 0x00c2, 0x53b: 0x00c2, - 0x53c: 0x00c2, 0x53d: 0x00c2, 0x53e: 0x00c2, 0x53f: 0x00c2, - // Block 0x15, offset 0x540 - 0x540: 0x0040, 0x541: 0x00c2, 0x542: 0x00c2, 0x543: 0x00c2, 0x544: 0x00c2, 0x545: 0x00c2, - 0x546: 0x00c2, 0x547: 0x00c2, 0x548: 0x00c4, 0x549: 0x00c2, 0x54a: 0x00c2, 0x54b: 0x00c3, - 0x54c: 0x00c3, 0x54d: 0x00c3, 0x54e: 0x00c3, 0x54f: 0x00c3, 0x550: 0x00c3, 0x551: 0x00c3, - 0x552: 0x00c3, 0x553: 0x00c3, 0x554: 0x00c3, 0x555: 0x00c3, 0x556: 0x00c3, 0x557: 0x00c3, - 0x558: 0x00c3, 0x559: 0x00c3, 0x55a: 0x00c3, 0x55b: 0x00c3, 0x55c: 0x00c3, 0x55d: 0x00c3, - 0x55e: 0x00c3, 0x55f: 0x00c3, 0x560: 0x0053, 0x561: 0x0053, 0x562: 0x0053, 0x563: 0x0053, - 0x564: 0x0053, 0x565: 0x0053, 0x566: 0x0053, 0x567: 0x0053, 0x568: 0x0053, 0x569: 0x0053, - 0x56a: 0x0080, 0x56b: 0x0080, 0x56c: 0x0080, 0x56d: 0x0080, 0x56e: 0x00c2, 0x56f: 0x00c2, - 0x570: 0x00c3, 0x571: 0x00c4, 0x572: 0x00c4, 0x573: 0x00c4, 0x574: 0x00c0, 0x575: 0x0084, - 0x576: 0x0084, 0x577: 0x0084, 0x578: 0x0082, 0x579: 0x00c2, 0x57a: 0x00c2, 0x57b: 0x00c2, - 0x57c: 0x00c2, 0x57d: 0x00c2, 0x57e: 0x00c2, 0x57f: 0x00c2, - // Block 0x16, offset 0x580 - 0x580: 0x00c2, 0x581: 0x00c2, 0x582: 0x00c2, 0x583: 0x00c2, 0x584: 0x00c2, 0x585: 0x00c2, - 0x586: 0x00c2, 0x587: 0x00c2, 0x588: 0x00c4, 0x589: 0x00c4, 0x58a: 0x00c4, 0x58b: 0x00c4, - 0x58c: 0x00c4, 0x58d: 0x00c4, 0x58e: 0x00c4, 0x58f: 0x00c4, 0x590: 0x00c4, 0x591: 0x00c4, - 0x592: 0x00c4, 0x593: 0x00c4, 0x594: 0x00c4, 0x595: 0x00c4, 0x596: 0x00c4, 0x597: 0x00c4, - 0x598: 0x00c4, 0x599: 0x00c4, 0x59a: 0x00c2, 0x59b: 0x00c2, 0x59c: 0x00c2, 0x59d: 0x00c2, - 0x59e: 0x00c2, 0x59f: 0x00c2, 0x5a0: 0x00c2, 0x5a1: 0x00c2, 0x5a2: 0x00c2, 0x5a3: 0x00c2, - 0x5a4: 0x00c2, 0x5a5: 0x00c2, 0x5a6: 0x00c2, 0x5a7: 0x00c2, 0x5a8: 0x00c2, 0x5a9: 0x00c2, - 0x5aa: 0x00c2, 0x5ab: 0x00c2, 0x5ac: 0x00c2, 0x5ad: 0x00c2, 0x5ae: 0x00c2, 0x5af: 0x00c2, - 0x5b0: 0x00c2, 0x5b1: 0x00c2, 0x5b2: 0x00c2, 0x5b3: 0x00c2, 0x5b4: 0x00c2, 0x5b5: 0x00c2, - 0x5b6: 0x00c2, 0x5b7: 0x00c2, 0x5b8: 0x00c2, 0x5b9: 0x00c2, 0x5ba: 0x00c2, 0x5bb: 0x00c2, - 0x5bc: 0x00c2, 0x5bd: 0x00c2, 0x5be: 0x00c2, 0x5bf: 0x00c2, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x00c4, 0x5c1: 0x00c2, 0x5c2: 0x00c2, 0x5c3: 0x00c4, 0x5c4: 0x00c4, 0x5c5: 0x00c4, - 0x5c6: 0x00c4, 0x5c7: 0x00c4, 0x5c8: 0x00c4, 0x5c9: 0x00c4, 0x5ca: 0x00c4, 0x5cb: 0x00c4, - 0x5cc: 0x00c2, 0x5cd: 0x00c4, 0x5ce: 0x00c2, 0x5cf: 0x00c4, 0x5d0: 0x00c2, 0x5d1: 0x00c2, - 0x5d2: 0x00c4, 0x5d3: 0x00c4, 0x5d4: 0x0080, 0x5d5: 0x00c4, 0x5d6: 0x00c3, 0x5d7: 0x00c3, - 0x5d8: 0x00c3, 0x5d9: 0x00c3, 0x5da: 0x00c3, 0x5db: 0x00c3, 0x5dc: 0x00c3, 0x5dd: 0x0040, - 0x5de: 0x0080, 0x5df: 0x00c3, 0x5e0: 0x00c3, 0x5e1: 0x00c3, 0x5e2: 0x00c3, 0x5e3: 0x00c3, - 0x5e4: 0x00c3, 0x5e5: 0x00c0, 0x5e6: 0x00c0, 0x5e7: 0x00c3, 0x5e8: 0x00c3, 0x5e9: 0x0080, - 0x5ea: 0x00c3, 0x5eb: 0x00c3, 0x5ec: 0x00c3, 0x5ed: 0x00c3, 0x5ee: 0x00c4, 0x5ef: 0x00c4, - 0x5f0: 0x0054, 0x5f1: 0x0054, 0x5f2: 0x0054, 0x5f3: 0x0054, 0x5f4: 0x0054, 0x5f5: 0x0054, - 0x5f6: 0x0054, 0x5f7: 0x0054, 0x5f8: 0x0054, 0x5f9: 0x0054, 0x5fa: 0x00c2, 0x5fb: 0x00c2, - 0x5fc: 0x00c2, 0x5fd: 0x00c0, 0x5fe: 0x00c0, 0x5ff: 0x00c2, - // Block 0x18, offset 0x600 - 0x600: 0x0080, 0x601: 0x0080, 0x602: 0x0080, 0x603: 0x0080, 0x604: 0x0080, 0x605: 0x0080, - 0x606: 0x0080, 0x607: 0x0080, 0x608: 0x0080, 0x609: 0x0080, 0x60a: 0x0080, 0x60b: 0x0080, - 0x60c: 0x0080, 0x60d: 0x0080, 0x60f: 0x0040, 0x610: 0x00c4, 0x611: 0x00c3, - 0x612: 0x00c2, 0x613: 0x00c2, 0x614: 0x00c2, 0x615: 0x00c4, 0x616: 0x00c4, 0x617: 0x00c4, - 0x618: 0x00c4, 0x619: 0x00c4, 0x61a: 0x00c2, 0x61b: 0x00c2, 0x61c: 0x00c2, 0x61d: 0x00c2, - 0x61e: 0x00c4, 0x61f: 0x00c2, 0x620: 0x00c2, 0x621: 0x00c2, 0x622: 0x00c2, 0x623: 0x00c2, - 0x624: 0x00c2, 0x625: 0x00c2, 0x626: 0x00c2, 0x627: 0x00c2, 0x628: 0x00c4, 0x629: 0x00c2, - 0x62a: 0x00c4, 0x62b: 0x00c2, 0x62c: 0x00c4, 0x62d: 0x00c2, 0x62e: 0x00c2, 0x62f: 0x00c4, - 0x630: 0x00c3, 0x631: 0x00c3, 0x632: 0x00c3, 0x633: 0x00c3, 0x634: 0x00c3, 0x635: 0x00c3, - 0x636: 0x00c3, 0x637: 0x00c3, 0x638: 0x00c3, 0x639: 0x00c3, 0x63a: 0x00c3, 0x63b: 0x00c3, - 0x63c: 0x00c3, 0x63d: 0x00c3, 0x63e: 0x00c3, 0x63f: 0x00c3, - // Block 0x19, offset 0x640 - 0x640: 0x00c3, 0x641: 0x00c3, 0x642: 0x00c3, 0x643: 0x00c3, 0x644: 0x00c3, 0x645: 0x00c3, - 0x646: 0x00c3, 0x647: 0x00c3, 0x648: 0x00c3, 0x649: 0x00c3, 0x64a: 0x00c3, - 0x64d: 0x00c4, 0x64e: 0x00c2, 0x64f: 0x00c2, 0x650: 0x00c2, 0x651: 0x00c2, - 0x652: 0x00c2, 0x653: 0x00c2, 0x654: 0x00c2, 0x655: 0x00c2, 0x656: 0x00c2, 0x657: 0x00c2, - 0x658: 0x00c2, 0x659: 0x00c4, 0x65a: 0x00c4, 0x65b: 0x00c4, 0x65c: 0x00c2, 0x65d: 0x00c2, - 0x65e: 0x00c2, 0x65f: 0x00c2, 0x660: 0x00c2, 0x661: 0x00c2, 0x662: 0x00c2, 0x663: 0x00c2, - 0x664: 0x00c2, 0x665: 0x00c2, 0x666: 0x00c2, 0x667: 0x00c2, 0x668: 0x00c2, 0x669: 0x00c2, - 0x66a: 0x00c2, 0x66b: 0x00c4, 0x66c: 0x00c4, 0x66d: 0x00c2, 0x66e: 0x00c2, 0x66f: 0x00c2, - 0x670: 0x00c2, 0x671: 0x00c4, 0x672: 0x00c2, 0x673: 0x00c4, 0x674: 0x00c4, 0x675: 0x00c2, - 0x676: 0x00c2, 0x677: 0x00c2, 0x678: 0x00c4, 0x679: 0x00c4, 0x67a: 0x00c2, 0x67b: 0x00c2, - 0x67c: 0x00c2, 0x67d: 0x00c2, 0x67e: 0x00c2, 0x67f: 0x00c2, - // Block 0x1a, offset 0x680 - 0x680: 0x00c0, 0x681: 0x00c0, 0x682: 0x00c0, 0x683: 0x00c0, 0x684: 0x00c0, 0x685: 0x00c0, - 0x686: 0x00c0, 0x687: 0x00c0, 0x688: 0x00c0, 0x689: 0x00c0, 0x68a: 0x00c0, 0x68b: 0x00c0, - 0x68c: 0x00c0, 0x68d: 0x00c0, 0x68e: 0x00c0, 0x68f: 0x00c0, 0x690: 0x00c0, 0x691: 0x00c0, - 0x692: 0x00c0, 0x693: 0x00c0, 0x694: 0x00c0, 0x695: 0x00c0, 0x696: 0x00c0, 0x697: 0x00c0, - 0x698: 0x00c0, 0x699: 0x00c0, 0x69a: 0x00c0, 0x69b: 0x00c0, 0x69c: 0x00c0, 0x69d: 0x00c0, - 0x69e: 0x00c0, 0x69f: 0x00c0, 0x6a0: 0x00c0, 0x6a1: 0x00c0, 0x6a2: 0x00c0, 0x6a3: 0x00c0, - 0x6a4: 0x00c0, 0x6a5: 0x00c0, 0x6a6: 0x00c3, 0x6a7: 0x00c3, 0x6a8: 0x00c3, 0x6a9: 0x00c3, - 0x6aa: 0x00c3, 0x6ab: 0x00c3, 0x6ac: 0x00c3, 0x6ad: 0x00c3, 0x6ae: 0x00c3, 0x6af: 0x00c3, - 0x6b0: 0x00c3, 0x6b1: 0x00c0, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x00c0, 0x6c1: 0x00c0, 0x6c2: 0x00c0, 0x6c3: 0x00c0, 0x6c4: 0x00c0, 0x6c5: 0x00c0, - 0x6c6: 0x00c0, 0x6c7: 0x00c0, 0x6c8: 0x00c0, 0x6c9: 0x00c0, 0x6ca: 0x00c2, 0x6cb: 0x00c2, - 0x6cc: 0x00c2, 0x6cd: 0x00c2, 0x6ce: 0x00c2, 0x6cf: 0x00c2, 0x6d0: 0x00c2, 0x6d1: 0x00c2, - 0x6d2: 0x00c2, 0x6d3: 0x00c2, 0x6d4: 0x00c2, 0x6d5: 0x00c2, 0x6d6: 0x00c2, 0x6d7: 0x00c2, - 0x6d8: 0x00c2, 0x6d9: 0x00c2, 0x6da: 0x00c2, 0x6db: 0x00c2, 0x6dc: 0x00c2, 0x6dd: 0x00c2, - 0x6de: 0x00c2, 0x6df: 0x00c2, 0x6e0: 0x00c2, 0x6e1: 0x00c2, 0x6e2: 0x00c2, 0x6e3: 0x00c2, - 0x6e4: 0x00c2, 0x6e5: 0x00c2, 0x6e6: 0x00c2, 0x6e7: 0x00c2, 0x6e8: 0x00c2, 0x6e9: 0x00c2, - 0x6ea: 0x00c2, 0x6eb: 0x00c3, 0x6ec: 0x00c3, 0x6ed: 0x00c3, 0x6ee: 0x00c3, 0x6ef: 0x00c3, - 0x6f0: 0x00c3, 0x6f1: 0x00c3, 0x6f2: 0x00c3, 0x6f3: 0x00c3, 0x6f4: 0x00c0, 0x6f5: 0x00c0, - 0x6f6: 0x0080, 0x6f7: 0x0080, 0x6f8: 0x0080, 0x6f9: 0x0080, 0x6fa: 0x0040, - // Block 0x1c, offset 0x700 - 0x700: 0x00c0, 0x701: 0x00c0, 0x702: 0x00c0, 0x703: 0x00c0, 0x704: 0x00c0, 0x705: 0x00c0, - 0x706: 0x00c0, 0x707: 0x00c0, 0x708: 0x00c0, 0x709: 0x00c0, 0x70a: 0x00c0, 0x70b: 0x00c0, - 0x70c: 0x00c0, 0x70d: 0x00c0, 0x70e: 0x00c0, 0x70f: 0x00c0, 0x710: 0x00c0, 0x711: 0x00c0, - 0x712: 0x00c0, 0x713: 0x00c0, 0x714: 0x00c0, 0x715: 0x00c0, 0x716: 0x00c3, 0x717: 0x00c3, - 0x718: 0x00c3, 0x719: 0x00c3, 0x71a: 0x00c0, 0x71b: 0x00c3, 0x71c: 0x00c3, 0x71d: 0x00c3, - 0x71e: 0x00c3, 0x71f: 0x00c3, 0x720: 0x00c3, 0x721: 0x00c3, 0x722: 0x00c3, 0x723: 0x00c3, - 0x724: 0x00c0, 0x725: 0x00c3, 0x726: 0x00c3, 0x727: 0x00c3, 0x728: 0x00c0, 0x729: 0x00c3, - 0x72a: 0x00c3, 0x72b: 0x00c3, 0x72c: 0x00c3, 0x72d: 0x00c3, - 0x730: 0x0080, 0x731: 0x0080, 0x732: 0x0080, 0x733: 0x0080, 0x734: 0x0080, 0x735: 0x0080, - 0x736: 0x0080, 0x737: 0x0080, 0x738: 0x0080, 0x739: 0x0080, 0x73a: 0x0080, 0x73b: 0x0080, - 0x73c: 0x0080, 0x73d: 0x0080, 0x73e: 0x0080, - // Block 0x1d, offset 0x740 - 0x740: 0x00c4, 0x741: 0x00c2, 0x742: 0x00c2, 0x743: 0x00c2, 0x744: 0x00c2, 0x745: 0x00c2, - 0x746: 0x00c4, 0x747: 0x00c4, 0x748: 0x00c2, 0x749: 0x00c4, 0x74a: 0x00c2, 0x74b: 0x00c2, - 0x74c: 0x00c2, 0x74d: 0x00c2, 0x74e: 0x00c2, 0x74f: 0x00c2, 0x750: 0x00c2, 0x751: 0x00c2, - 0x752: 0x00c2, 0x753: 0x00c2, 0x754: 0x00c4, 0x755: 0x00c2, 0x756: 0x00c0, 0x757: 0x00c0, - 0x758: 0x00c0, 0x759: 0x00c3, 0x75a: 0x00c3, 0x75b: 0x00c3, - 0x75e: 0x0080, - // Block 0x1e, offset 0x780 - 0x7a0: 0x00c2, 0x7a1: 0x00c2, 0x7a2: 0x00c2, 0x7a3: 0x00c2, - 0x7a4: 0x00c2, 0x7a5: 0x00c2, 0x7a6: 0x00c2, 0x7a7: 0x00c2, 0x7a8: 0x00c2, 0x7a9: 0x00c2, - 0x7aa: 0x00c4, 0x7ab: 0x00c4, 0x7ac: 0x00c4, 0x7ad: 0x00c0, 0x7ae: 0x00c4, 0x7af: 0x00c2, - 0x7b0: 0x00c2, 0x7b1: 0x00c4, 0x7b2: 0x00c4, 0x7b3: 0x00c2, 0x7b4: 0x00c2, - 0x7b6: 0x00c2, 0x7b7: 0x00c2, 0x7b8: 0x00c2, 0x7b9: 0x00c4, 0x7ba: 0x00c2, 0x7bb: 0x00c2, - 0x7bc: 0x00c2, 0x7bd: 0x00c2, - // Block 0x1f, offset 0x7c0 - 0x7d4: 0x00c3, 0x7d5: 0x00c3, 0x7d6: 0x00c3, 0x7d7: 0x00c3, - 0x7d8: 0x00c3, 0x7d9: 0x00c3, 0x7da: 0x00c3, 0x7db: 0x00c3, 0x7dc: 0x00c3, 0x7dd: 0x00c3, - 0x7de: 0x00c3, 0x7df: 0x00c3, 0x7e0: 0x00c3, 0x7e1: 0x00c3, 0x7e2: 0x0040, 0x7e3: 0x00c3, - 0x7e4: 0x00c3, 0x7e5: 0x00c3, 0x7e6: 0x00c3, 0x7e7: 0x00c3, 0x7e8: 0x00c3, 0x7e9: 0x00c3, - 0x7ea: 0x00c3, 0x7eb: 0x00c3, 0x7ec: 0x00c3, 0x7ed: 0x00c3, 0x7ee: 0x00c3, 0x7ef: 0x00c3, - 0x7f0: 0x00c3, 0x7f1: 0x00c3, 0x7f2: 0x00c3, 0x7f3: 0x00c3, 0x7f4: 0x00c3, 0x7f5: 0x00c3, - 0x7f6: 0x00c3, 0x7f7: 0x00c3, 0x7f8: 0x00c3, 0x7f9: 0x00c3, 0x7fa: 0x00c3, 0x7fb: 0x00c3, - 0x7fc: 0x00c3, 0x7fd: 0x00c3, 0x7fe: 0x00c3, 0x7ff: 0x00c3, - // Block 0x20, offset 0x800 - 0x800: 0x00c3, 0x801: 0x00c3, 0x802: 0x00c3, 0x803: 0x00c0, 0x804: 0x00c0, 0x805: 0x00c0, - 0x806: 0x00c0, 0x807: 0x00c0, 0x808: 0x00c0, 0x809: 0x00c0, 0x80a: 0x00c0, 0x80b: 0x00c0, - 0x80c: 0x00c0, 0x80d: 0x00c0, 0x80e: 0x00c0, 0x80f: 0x00c0, 0x810: 0x00c0, 0x811: 0x00c0, - 0x812: 0x00c0, 0x813: 0x00c0, 0x814: 0x00c0, 0x815: 0x00c0, 0x816: 0x00c0, 0x817: 0x00c0, - 0x818: 0x00c0, 0x819: 0x00c0, 0x81a: 0x00c0, 0x81b: 0x00c0, 0x81c: 0x00c0, 0x81d: 0x00c0, - 0x81e: 0x00c0, 0x81f: 0x00c0, 0x820: 0x00c0, 0x821: 0x00c0, 0x822: 0x00c0, 0x823: 0x00c0, - 0x824: 0x00c0, 0x825: 0x00c0, 0x826: 0x00c0, 0x827: 0x00c0, 0x828: 0x00c0, 0x829: 0x00c0, - 0x82a: 0x00c0, 0x82b: 0x00c0, 0x82c: 0x00c0, 0x82d: 0x00c0, 0x82e: 0x00c0, 0x82f: 0x00c0, - 0x830: 0x00c0, 0x831: 0x00c0, 0x832: 0x00c0, 0x833: 0x00c0, 0x834: 0x00c0, 0x835: 0x00c0, - 0x836: 0x00c0, 0x837: 0x00c0, 0x838: 0x00c0, 0x839: 0x00c0, 0x83a: 0x00c3, 0x83b: 0x00c0, - 0x83c: 0x00c3, 0x83d: 0x00c0, 0x83e: 0x00c0, 0x83f: 0x00c0, - // Block 0x21, offset 0x840 - 0x840: 0x00c0, 0x841: 0x00c3, 0x842: 0x00c3, 0x843: 0x00c3, 0x844: 0x00c3, 0x845: 0x00c3, - 0x846: 0x00c3, 0x847: 0x00c3, 0x848: 0x00c3, 0x849: 0x00c0, 0x84a: 0x00c0, 0x84b: 0x00c0, - 0x84c: 0x00c0, 0x84d: 0x00c6, 0x84e: 0x00c0, 0x84f: 0x00c0, 0x850: 0x00c0, 0x851: 0x00c3, - 0x852: 0x00c3, 0x853: 0x00c3, 0x854: 0x00c3, 0x855: 0x00c3, 0x856: 0x00c3, 0x857: 0x00c3, - 0x858: 0x0080, 0x859: 0x0080, 0x85a: 0x0080, 0x85b: 0x0080, 0x85c: 0x0080, 0x85d: 0x0080, - 0x85e: 0x0080, 0x85f: 0x0080, 0x860: 0x00c0, 0x861: 0x00c0, 0x862: 0x00c3, 0x863: 0x00c3, - 0x864: 0x0080, 0x865: 0x0080, 0x866: 0x00c0, 0x867: 0x00c0, 0x868: 0x00c0, 0x869: 0x00c0, - 0x86a: 0x00c0, 0x86b: 0x00c0, 0x86c: 0x00c0, 0x86d: 0x00c0, 0x86e: 0x00c0, 0x86f: 0x00c0, - 0x870: 0x0080, 0x871: 0x00c0, 0x872: 0x00c0, 0x873: 0x00c0, 0x874: 0x00c0, 0x875: 0x00c0, - 0x876: 0x00c0, 0x877: 0x00c0, 0x878: 0x00c0, 0x879: 0x00c0, 0x87a: 0x00c0, 0x87b: 0x00c0, - 0x87c: 0x00c0, 0x87d: 0x00c0, 0x87e: 0x00c0, 0x87f: 0x00c0, - // Block 0x22, offset 0x880 - 0x880: 0x00c0, 0x881: 0x00c3, 0x882: 0x00c0, 0x883: 0x00c0, 0x885: 0x00c0, - 0x886: 0x00c0, 0x887: 0x00c0, 0x888: 0x00c0, 0x889: 0x00c0, 0x88a: 0x00c0, 0x88b: 0x00c0, - 0x88c: 0x00c0, 0x88f: 0x00c0, 0x890: 0x00c0, - 0x893: 0x00c0, 0x894: 0x00c0, 0x895: 0x00c0, 0x896: 0x00c0, 0x897: 0x00c0, - 0x898: 0x00c0, 0x899: 0x00c0, 0x89a: 0x00c0, 0x89b: 0x00c0, 0x89c: 0x00c0, 0x89d: 0x00c0, - 0x89e: 0x00c0, 0x89f: 0x00c0, 0x8a0: 0x00c0, 0x8a1: 0x00c0, 0x8a2: 0x00c0, 0x8a3: 0x00c0, - 0x8a4: 0x00c0, 0x8a5: 0x00c0, 0x8a6: 0x00c0, 0x8a7: 0x00c0, 0x8a8: 0x00c0, - 0x8aa: 0x00c0, 0x8ab: 0x00c0, 0x8ac: 0x00c0, 0x8ad: 0x00c0, 0x8ae: 0x00c0, 0x8af: 0x00c0, - 0x8b0: 0x00c0, 0x8b2: 0x00c0, - 0x8b6: 0x00c0, 0x8b7: 0x00c0, 0x8b8: 0x00c0, 0x8b9: 0x00c0, - 0x8bc: 0x00c3, 0x8bd: 0x00c0, 0x8be: 0x00c0, 0x8bf: 0x00c0, - // Block 0x23, offset 0x8c0 - 0x8c0: 0x00c0, 0x8c1: 0x00c3, 0x8c2: 0x00c3, 0x8c3: 0x00c3, 0x8c4: 0x00c3, - 0x8c7: 0x00c0, 0x8c8: 0x00c0, 0x8cb: 0x00c0, - 0x8cc: 0x00c0, 0x8cd: 0x00c6, 0x8ce: 0x00c0, - 0x8d7: 0x00c0, - 0x8dc: 0x0080, 0x8dd: 0x0080, - 0x8df: 0x0080, 0x8e0: 0x00c0, 0x8e1: 0x00c0, 0x8e2: 0x00c3, 0x8e3: 0x00c3, - 0x8e6: 0x00c0, 0x8e7: 0x00c0, 0x8e8: 0x00c0, 0x8e9: 0x00c0, - 0x8ea: 0x00c0, 0x8eb: 0x00c0, 0x8ec: 0x00c0, 0x8ed: 0x00c0, 0x8ee: 0x00c0, 0x8ef: 0x00c0, - 0x8f0: 0x00c0, 0x8f1: 0x00c0, 0x8f2: 0x0080, 0x8f3: 0x0080, 0x8f4: 0x0080, 0x8f5: 0x0080, - 0x8f6: 0x0080, 0x8f7: 0x0080, 0x8f8: 0x0080, 0x8f9: 0x0080, 0x8fa: 0x0080, 0x8fb: 0x0080, - // Block 0x24, offset 0x900 - 0x901: 0x00c3, 0x902: 0x00c3, 0x903: 0x00c0, 0x905: 0x00c0, - 0x906: 0x00c0, 0x907: 0x00c0, 0x908: 0x00c0, 0x909: 0x00c0, 0x90a: 0x00c0, - 0x90f: 0x00c0, 0x910: 0x00c0, - 0x913: 0x00c0, 0x914: 0x00c0, 0x915: 0x00c0, 0x916: 0x00c0, 0x917: 0x00c0, - 0x918: 0x00c0, 0x919: 0x00c0, 0x91a: 0x00c0, 0x91b: 0x00c0, 0x91c: 0x00c0, 0x91d: 0x00c0, - 0x91e: 0x00c0, 0x91f: 0x00c0, 0x920: 0x00c0, 0x921: 0x00c0, 0x922: 0x00c0, 0x923: 0x00c0, - 0x924: 0x00c0, 0x925: 0x00c0, 0x926: 0x00c0, 0x927: 0x00c0, 0x928: 0x00c0, - 0x92a: 0x00c0, 0x92b: 0x00c0, 0x92c: 0x00c0, 0x92d: 0x00c0, 0x92e: 0x00c0, 0x92f: 0x00c0, - 0x930: 0x00c0, 0x932: 0x00c0, 0x933: 0x0080, 0x935: 0x00c0, - 0x936: 0x0080, 0x938: 0x00c0, 0x939: 0x00c0, - 0x93c: 0x00c3, 0x93e: 0x00c0, 0x93f: 0x00c0, - // Block 0x25, offset 0x940 - 0x940: 0x00c0, 0x941: 0x00c3, 0x942: 0x00c3, - 0x947: 0x00c3, 0x948: 0x00c3, 0x94b: 0x00c3, - 0x94c: 0x00c3, 0x94d: 0x00c6, 0x951: 0x00c3, - 0x959: 0x0080, 0x95a: 0x0080, 0x95b: 0x0080, 0x95c: 0x00c0, - 0x95e: 0x0080, - 0x966: 0x00c0, 0x967: 0x00c0, 0x968: 0x00c0, 0x969: 0x00c0, - 0x96a: 0x00c0, 0x96b: 0x00c0, 0x96c: 0x00c0, 0x96d: 0x00c0, 0x96e: 0x00c0, 0x96f: 0x00c0, - 0x970: 0x00c3, 0x971: 0x00c3, 0x972: 0x00c0, 0x973: 0x00c0, 0x974: 0x00c0, 0x975: 0x00c3, - // Block 0x26, offset 0x980 - 0x981: 0x00c3, 0x982: 0x00c3, 0x983: 0x00c0, 0x985: 0x00c0, - 0x986: 0x00c0, 0x987: 0x00c0, 0x988: 0x00c0, 0x989: 0x00c0, 0x98a: 0x00c0, 0x98b: 0x00c0, - 0x98c: 0x00c0, 0x98d: 0x00c0, 0x98f: 0x00c0, 0x990: 0x00c0, 0x991: 0x00c0, - 0x993: 0x00c0, 0x994: 0x00c0, 0x995: 0x00c0, 0x996: 0x00c0, 0x997: 0x00c0, - 0x998: 0x00c0, 0x999: 0x00c0, 0x99a: 0x00c0, 0x99b: 0x00c0, 0x99c: 0x00c0, 0x99d: 0x00c0, - 0x99e: 0x00c0, 0x99f: 0x00c0, 0x9a0: 0x00c0, 0x9a1: 0x00c0, 0x9a2: 0x00c0, 0x9a3: 0x00c0, - 0x9a4: 0x00c0, 0x9a5: 0x00c0, 0x9a6: 0x00c0, 0x9a7: 0x00c0, 0x9a8: 0x00c0, - 0x9aa: 0x00c0, 0x9ab: 0x00c0, 0x9ac: 0x00c0, 0x9ad: 0x00c0, 0x9ae: 0x00c0, 0x9af: 0x00c0, - 0x9b0: 0x00c0, 0x9b2: 0x00c0, 0x9b3: 0x00c0, 0x9b5: 0x00c0, - 0x9b6: 0x00c0, 0x9b7: 0x00c0, 0x9b8: 0x00c0, 0x9b9: 0x00c0, - 0x9bc: 0x00c3, 0x9bd: 0x00c0, 0x9be: 0x00c0, 0x9bf: 0x00c0, - // Block 0x27, offset 0x9c0 - 0x9c0: 0x00c0, 0x9c1: 0x00c3, 0x9c2: 0x00c3, 0x9c3: 0x00c3, 0x9c4: 0x00c3, 0x9c5: 0x00c3, - 0x9c7: 0x00c3, 0x9c8: 0x00c3, 0x9c9: 0x00c0, 0x9cb: 0x00c0, - 0x9cc: 0x00c0, 0x9cd: 0x00c6, 0x9d0: 0x00c0, - 0x9e0: 0x00c0, 0x9e1: 0x00c0, 0x9e2: 0x00c3, 0x9e3: 0x00c3, - 0x9e6: 0x00c0, 0x9e7: 0x00c0, 0x9e8: 0x00c0, 0x9e9: 0x00c0, - 0x9ea: 0x00c0, 0x9eb: 0x00c0, 0x9ec: 0x00c0, 0x9ed: 0x00c0, 0x9ee: 0x00c0, 0x9ef: 0x00c0, - 0x9f0: 0x0080, 0x9f1: 0x0080, - 0x9f9: 0x00c0, - // Block 0x28, offset 0xa00 - 0xa01: 0x00c3, 0xa02: 0x00c0, 0xa03: 0x00c0, 0xa05: 0x00c0, - 0xa06: 0x00c0, 0xa07: 0x00c0, 0xa08: 0x00c0, 0xa09: 0x00c0, 0xa0a: 0x00c0, 0xa0b: 0x00c0, - 0xa0c: 0x00c0, 0xa0f: 0x00c0, 0xa10: 0x00c0, - 0xa13: 0x00c0, 0xa14: 0x00c0, 0xa15: 0x00c0, 0xa16: 0x00c0, 0xa17: 0x00c0, - 0xa18: 0x00c0, 0xa19: 0x00c0, 0xa1a: 0x00c0, 0xa1b: 0x00c0, 0xa1c: 0x00c0, 0xa1d: 0x00c0, - 0xa1e: 0x00c0, 0xa1f: 0x00c0, 0xa20: 0x00c0, 0xa21: 0x00c0, 0xa22: 0x00c0, 0xa23: 0x00c0, - 0xa24: 0x00c0, 0xa25: 0x00c0, 0xa26: 0x00c0, 0xa27: 0x00c0, 0xa28: 0x00c0, - 0xa2a: 0x00c0, 0xa2b: 0x00c0, 0xa2c: 0x00c0, 0xa2d: 0x00c0, 0xa2e: 0x00c0, 0xa2f: 0x00c0, - 0xa30: 0x00c0, 0xa32: 0x00c0, 0xa33: 0x00c0, 0xa35: 0x00c0, - 0xa36: 0x00c0, 0xa37: 0x00c0, 0xa38: 0x00c0, 0xa39: 0x00c0, - 0xa3c: 0x00c3, 0xa3d: 0x00c0, 0xa3e: 0x00c0, 0xa3f: 0x00c3, - // Block 0x29, offset 0xa40 - 0xa40: 0x00c0, 0xa41: 0x00c3, 0xa42: 0x00c3, 0xa43: 0x00c3, 0xa44: 0x00c3, - 0xa47: 0x00c0, 0xa48: 0x00c0, 0xa4b: 0x00c0, - 0xa4c: 0x00c0, 0xa4d: 0x00c6, - 0xa56: 0x00c3, 0xa57: 0x00c0, - 0xa5c: 0x0080, 0xa5d: 0x0080, - 0xa5f: 0x00c0, 0xa60: 0x00c0, 0xa61: 0x00c0, 0xa62: 0x00c3, 0xa63: 0x00c3, - 0xa66: 0x00c0, 0xa67: 0x00c0, 0xa68: 0x00c0, 0xa69: 0x00c0, - 0xa6a: 0x00c0, 0xa6b: 0x00c0, 0xa6c: 0x00c0, 0xa6d: 0x00c0, 0xa6e: 0x00c0, 0xa6f: 0x00c0, - 0xa70: 0x0080, 0xa71: 0x00c0, 0xa72: 0x0080, 0xa73: 0x0080, 0xa74: 0x0080, 0xa75: 0x0080, - 0xa76: 0x0080, 0xa77: 0x0080, - // Block 0x2a, offset 0xa80 - 0xa82: 0x00c3, 0xa83: 0x00c0, 0xa85: 0x00c0, - 0xa86: 0x00c0, 0xa87: 0x00c0, 0xa88: 0x00c0, 0xa89: 0x00c0, 0xa8a: 0x00c0, - 0xa8e: 0x00c0, 0xa8f: 0x00c0, 0xa90: 0x00c0, - 0xa92: 0x00c0, 0xa93: 0x00c0, 0xa94: 0x00c0, 0xa95: 0x00c0, - 0xa99: 0x00c0, 0xa9a: 0x00c0, 0xa9c: 0x00c0, - 0xa9e: 0x00c0, 0xa9f: 0x00c0, 0xaa3: 0x00c0, - 0xaa4: 0x00c0, 0xaa8: 0x00c0, 0xaa9: 0x00c0, - 0xaaa: 0x00c0, 0xaae: 0x00c0, 0xaaf: 0x00c0, - 0xab0: 0x00c0, 0xab1: 0x00c0, 0xab2: 0x00c0, 0xab3: 0x00c0, 0xab4: 0x00c0, 0xab5: 0x00c0, - 0xab6: 0x00c0, 0xab7: 0x00c0, 0xab8: 0x00c0, 0xab9: 0x00c0, - 0xabe: 0x00c0, 0xabf: 0x00c0, - // Block 0x2b, offset 0xac0 - 0xac0: 0x00c3, 0xac1: 0x00c0, 0xac2: 0x00c0, - 0xac6: 0x00c0, 0xac7: 0x00c0, 0xac8: 0x00c0, 0xaca: 0x00c0, 0xacb: 0x00c0, - 0xacc: 0x00c0, 0xacd: 0x00c6, 0xad0: 0x00c0, - 0xad7: 0x00c0, - 0xae6: 0x00c0, 0xae7: 0x00c0, 0xae8: 0x00c0, 0xae9: 0x00c0, - 0xaea: 0x00c0, 0xaeb: 0x00c0, 0xaec: 0x00c0, 0xaed: 0x00c0, 0xaee: 0x00c0, 0xaef: 0x00c0, - 0xaf0: 0x0080, 0xaf1: 0x0080, 0xaf2: 0x0080, 0xaf3: 0x0080, 0xaf4: 0x0080, 0xaf5: 0x0080, - 0xaf6: 0x0080, 0xaf7: 0x0080, 0xaf8: 0x0080, 0xaf9: 0x0080, 0xafa: 0x0080, - // Block 0x2c, offset 0xb00 - 0xb00: 0x00c3, 0xb01: 0x00c0, 0xb02: 0x00c0, 0xb03: 0x00c0, 0xb05: 0x00c0, - 0xb06: 0x00c0, 0xb07: 0x00c0, 0xb08: 0x00c0, 0xb09: 0x00c0, 0xb0a: 0x00c0, 0xb0b: 0x00c0, - 0xb0c: 0x00c0, 0xb0e: 0x00c0, 0xb0f: 0x00c0, 0xb10: 0x00c0, - 0xb12: 0x00c0, 0xb13: 0x00c0, 0xb14: 0x00c0, 0xb15: 0x00c0, 0xb16: 0x00c0, 0xb17: 0x00c0, - 0xb18: 0x00c0, 0xb19: 0x00c0, 0xb1a: 0x00c0, 0xb1b: 0x00c0, 0xb1c: 0x00c0, 0xb1d: 0x00c0, - 0xb1e: 0x00c0, 0xb1f: 0x00c0, 0xb20: 0x00c0, 0xb21: 0x00c0, 0xb22: 0x00c0, 0xb23: 0x00c0, - 0xb24: 0x00c0, 0xb25: 0x00c0, 0xb26: 0x00c0, 0xb27: 0x00c0, 0xb28: 0x00c0, - 0xb2a: 0x00c0, 0xb2b: 0x00c0, 0xb2c: 0x00c0, 0xb2d: 0x00c0, 0xb2e: 0x00c0, 0xb2f: 0x00c0, - 0xb30: 0x00c0, 0xb31: 0x00c0, 0xb32: 0x00c0, 0xb33: 0x00c0, 0xb34: 0x00c0, 0xb35: 0x00c0, - 0xb36: 0x00c0, 0xb37: 0x00c0, 0xb38: 0x00c0, 0xb39: 0x00c0, - 0xb3d: 0x00c0, 0xb3e: 0x00c3, 0xb3f: 0x00c3, - // Block 0x2d, offset 0xb40 - 0xb40: 0x00c3, 0xb41: 0x00c0, 0xb42: 0x00c0, 0xb43: 0x00c0, 0xb44: 0x00c0, - 0xb46: 0x00c3, 0xb47: 0x00c3, 0xb48: 0x00c3, 0xb4a: 0x00c3, 0xb4b: 0x00c3, - 0xb4c: 0x00c3, 0xb4d: 0x00c6, - 0xb55: 0x00c3, 0xb56: 0x00c3, - 0xb58: 0x00c0, 0xb59: 0x00c0, 0xb5a: 0x00c0, - 0xb60: 0x00c0, 0xb61: 0x00c0, 0xb62: 0x00c3, 0xb63: 0x00c3, - 0xb66: 0x00c0, 0xb67: 0x00c0, 0xb68: 0x00c0, 0xb69: 0x00c0, - 0xb6a: 0x00c0, 0xb6b: 0x00c0, 0xb6c: 0x00c0, 0xb6d: 0x00c0, 0xb6e: 0x00c0, 0xb6f: 0x00c0, - 0xb78: 0x0080, 0xb79: 0x0080, 0xb7a: 0x0080, 0xb7b: 0x0080, - 0xb7c: 0x0080, 0xb7d: 0x0080, 0xb7e: 0x0080, 0xb7f: 0x0080, - // Block 0x2e, offset 0xb80 - 0xb80: 0x00c0, 0xb81: 0x00c3, 0xb82: 0x00c0, 0xb83: 0x00c0, 0xb85: 0x00c0, - 0xb86: 0x00c0, 0xb87: 0x00c0, 0xb88: 0x00c0, 0xb89: 0x00c0, 0xb8a: 0x00c0, 0xb8b: 0x00c0, - 0xb8c: 0x00c0, 0xb8e: 0x00c0, 0xb8f: 0x00c0, 0xb90: 0x00c0, - 0xb92: 0x00c0, 0xb93: 0x00c0, 0xb94: 0x00c0, 0xb95: 0x00c0, 0xb96: 0x00c0, 0xb97: 0x00c0, - 0xb98: 0x00c0, 0xb99: 0x00c0, 0xb9a: 0x00c0, 0xb9b: 0x00c0, 0xb9c: 0x00c0, 0xb9d: 0x00c0, - 0xb9e: 0x00c0, 0xb9f: 0x00c0, 0xba0: 0x00c0, 0xba1: 0x00c0, 0xba2: 0x00c0, 0xba3: 0x00c0, - 0xba4: 0x00c0, 0xba5: 0x00c0, 0xba6: 0x00c0, 0xba7: 0x00c0, 0xba8: 0x00c0, - 0xbaa: 0x00c0, 0xbab: 0x00c0, 0xbac: 0x00c0, 0xbad: 0x00c0, 0xbae: 0x00c0, 0xbaf: 0x00c0, - 0xbb0: 0x00c0, 0xbb1: 0x00c0, 0xbb2: 0x00c0, 0xbb3: 0x00c0, 0xbb5: 0x00c0, - 0xbb6: 0x00c0, 0xbb7: 0x00c0, 0xbb8: 0x00c0, 0xbb9: 0x00c0, - 0xbbc: 0x00c3, 0xbbd: 0x00c0, 0xbbe: 0x00c0, 0xbbf: 0x00c3, - // Block 0x2f, offset 0xbc0 - 0xbc0: 0x00c0, 0xbc1: 0x00c0, 0xbc2: 0x00c0, 0xbc3: 0x00c0, 0xbc4: 0x00c0, - 0xbc6: 0x00c3, 0xbc7: 0x00c0, 0xbc8: 0x00c0, 0xbca: 0x00c0, 0xbcb: 0x00c0, - 0xbcc: 0x00c3, 0xbcd: 0x00c6, - 0xbd5: 0x00c0, 0xbd6: 0x00c0, - 0xbde: 0x00c0, 0xbe0: 0x00c0, 0xbe1: 0x00c0, 0xbe2: 0x00c3, 0xbe3: 0x00c3, - 0xbe6: 0x00c0, 0xbe7: 0x00c0, 0xbe8: 0x00c0, 0xbe9: 0x00c0, - 0xbea: 0x00c0, 0xbeb: 0x00c0, 0xbec: 0x00c0, 0xbed: 0x00c0, 0xbee: 0x00c0, 0xbef: 0x00c0, - 0xbf1: 0x00c0, 0xbf2: 0x00c0, - // Block 0x30, offset 0xc00 - 0xc01: 0x00c3, 0xc02: 0x00c0, 0xc03: 0x00c0, 0xc05: 0x00c0, - 0xc06: 0x00c0, 0xc07: 0x00c0, 0xc08: 0x00c0, 0xc09: 0x00c0, 0xc0a: 0x00c0, 0xc0b: 0x00c0, - 0xc0c: 0x00c0, 0xc0e: 0x00c0, 0xc0f: 0x00c0, 0xc10: 0x00c0, - 0xc12: 0x00c0, 0xc13: 0x00c0, 0xc14: 0x00c0, 0xc15: 0x00c0, 0xc16: 0x00c0, 0xc17: 0x00c0, - 0xc18: 0x00c0, 0xc19: 0x00c0, 0xc1a: 0x00c0, 0xc1b: 0x00c0, 0xc1c: 0x00c0, 0xc1d: 0x00c0, - 0xc1e: 0x00c0, 0xc1f: 0x00c0, 0xc20: 0x00c0, 0xc21: 0x00c0, 0xc22: 0x00c0, 0xc23: 0x00c0, - 0xc24: 0x00c0, 0xc25: 0x00c0, 0xc26: 0x00c0, 0xc27: 0x00c0, 0xc28: 0x00c0, 0xc29: 0x00c0, - 0xc2a: 0x00c0, 0xc2b: 0x00c0, 0xc2c: 0x00c0, 0xc2d: 0x00c0, 0xc2e: 0x00c0, 0xc2f: 0x00c0, - 0xc30: 0x00c0, 0xc31: 0x00c0, 0xc32: 0x00c0, 0xc33: 0x00c0, 0xc34: 0x00c0, 0xc35: 0x00c0, - 0xc36: 0x00c0, 0xc37: 0x00c0, 0xc38: 0x00c0, 0xc39: 0x00c0, 0xc3a: 0x00c0, - 0xc3d: 0x00c0, 0xc3e: 0x00c0, 0xc3f: 0x00c0, - // Block 0x31, offset 0xc40 - 0xc40: 0x00c0, 0xc41: 0x00c3, 0xc42: 0x00c3, 0xc43: 0x00c3, 0xc44: 0x00c3, - 0xc46: 0x00c0, 0xc47: 0x00c0, 0xc48: 0x00c0, 0xc4a: 0x00c0, 0xc4b: 0x00c0, - 0xc4c: 0x00c0, 0xc4d: 0x00c6, 0xc4e: 0x00c0, 0xc4f: 0x0080, - 0xc54: 0x00c0, 0xc55: 0x00c0, 0xc56: 0x00c0, 0xc57: 0x00c0, - 0xc58: 0x0080, 0xc59: 0x0080, 0xc5a: 0x0080, 0xc5b: 0x0080, 0xc5c: 0x0080, 0xc5d: 0x0080, - 0xc5e: 0x0080, 0xc5f: 0x00c0, 0xc60: 0x00c0, 0xc61: 0x00c0, 0xc62: 0x00c3, 0xc63: 0x00c3, - 0xc66: 0x00c0, 0xc67: 0x00c0, 0xc68: 0x00c0, 0xc69: 0x00c0, - 0xc6a: 0x00c0, 0xc6b: 0x00c0, 0xc6c: 0x00c0, 0xc6d: 0x00c0, 0xc6e: 0x00c0, 0xc6f: 0x00c0, - 0xc70: 0x0080, 0xc71: 0x0080, 0xc72: 0x0080, 0xc73: 0x0080, 0xc74: 0x0080, 0xc75: 0x0080, - 0xc76: 0x0080, 0xc77: 0x0080, 0xc78: 0x0080, 0xc79: 0x0080, 0xc7a: 0x00c0, 0xc7b: 0x00c0, - 0xc7c: 0x00c0, 0xc7d: 0x00c0, 0xc7e: 0x00c0, 0xc7f: 0x00c0, - // Block 0x32, offset 0xc80 - 0xc82: 0x00c0, 0xc83: 0x00c0, 0xc85: 0x00c0, - 0xc86: 0x00c0, 0xc87: 0x00c0, 0xc88: 0x00c0, 0xc89: 0x00c0, 0xc8a: 0x00c0, 0xc8b: 0x00c0, - 0xc8c: 0x00c0, 0xc8d: 0x00c0, 0xc8e: 0x00c0, 0xc8f: 0x00c0, 0xc90: 0x00c0, 0xc91: 0x00c0, - 0xc92: 0x00c0, 0xc93: 0x00c0, 0xc94: 0x00c0, 0xc95: 0x00c0, 0xc96: 0x00c0, - 0xc9a: 0x00c0, 0xc9b: 0x00c0, 0xc9c: 0x00c0, 0xc9d: 0x00c0, - 0xc9e: 0x00c0, 0xc9f: 0x00c0, 0xca0: 0x00c0, 0xca1: 0x00c0, 0xca2: 0x00c0, 0xca3: 0x00c0, - 0xca4: 0x00c0, 0xca5: 0x00c0, 0xca6: 0x00c0, 0xca7: 0x00c0, 0xca8: 0x00c0, 0xca9: 0x00c0, - 0xcaa: 0x00c0, 0xcab: 0x00c0, 0xcac: 0x00c0, 0xcad: 0x00c0, 0xcae: 0x00c0, 0xcaf: 0x00c0, - 0xcb0: 0x00c0, 0xcb1: 0x00c0, 0xcb3: 0x00c0, 0xcb4: 0x00c0, 0xcb5: 0x00c0, - 0xcb6: 0x00c0, 0xcb7: 0x00c0, 0xcb8: 0x00c0, 0xcb9: 0x00c0, 0xcba: 0x00c0, 0xcbb: 0x00c0, - 0xcbd: 0x00c0, - // Block 0x33, offset 0xcc0 - 0xcc0: 0x00c0, 0xcc1: 0x00c0, 0xcc2: 0x00c0, 0xcc3: 0x00c0, 0xcc4: 0x00c0, 0xcc5: 0x00c0, - 0xcc6: 0x00c0, 0xcca: 0x00c6, - 0xccf: 0x00c0, 0xcd0: 0x00c0, 0xcd1: 0x00c0, - 0xcd2: 0x00c3, 0xcd3: 0x00c3, 0xcd4: 0x00c3, 0xcd6: 0x00c3, - 0xcd8: 0x00c0, 0xcd9: 0x00c0, 0xcda: 0x00c0, 0xcdb: 0x00c0, 0xcdc: 0x00c0, 0xcdd: 0x00c0, - 0xcde: 0x00c0, 0xcdf: 0x00c0, - 0xce6: 0x00c0, 0xce7: 0x00c0, 0xce8: 0x00c0, 0xce9: 0x00c0, - 0xcea: 0x00c0, 0xceb: 0x00c0, 0xcec: 0x00c0, 0xced: 0x00c0, 0xcee: 0x00c0, 0xcef: 0x00c0, - 0xcf2: 0x00c0, 0xcf3: 0x00c0, 0xcf4: 0x0080, - // Block 0x34, offset 0xd00 - 0xd01: 0x00c0, 0xd02: 0x00c0, 0xd03: 0x00c0, 0xd04: 0x00c0, 0xd05: 0x00c0, - 0xd06: 0x00c0, 0xd07: 0x00c0, 0xd08: 0x00c0, 0xd09: 0x00c0, 0xd0a: 0x00c0, 0xd0b: 0x00c0, - 0xd0c: 0x00c0, 0xd0d: 0x00c0, 0xd0e: 0x00c0, 0xd0f: 0x00c0, 0xd10: 0x00c0, 0xd11: 0x00c0, - 0xd12: 0x00c0, 0xd13: 0x00c0, 0xd14: 0x00c0, 0xd15: 0x00c0, 0xd16: 0x00c0, 0xd17: 0x00c0, - 0xd18: 0x00c0, 0xd19: 0x00c0, 0xd1a: 0x00c0, 0xd1b: 0x00c0, 0xd1c: 0x00c0, 0xd1d: 0x00c0, - 0xd1e: 0x00c0, 0xd1f: 0x00c0, 0xd20: 0x00c0, 0xd21: 0x00c0, 0xd22: 0x00c0, 0xd23: 0x00c0, - 0xd24: 0x00c0, 0xd25: 0x00c0, 0xd26: 0x00c0, 0xd27: 0x00c0, 0xd28: 0x00c0, 0xd29: 0x00c0, - 0xd2a: 0x00c0, 0xd2b: 0x00c0, 0xd2c: 0x00c0, 0xd2d: 0x00c0, 0xd2e: 0x00c0, 0xd2f: 0x00c0, - 0xd30: 0x00c0, 0xd31: 0x00c3, 0xd32: 0x00c0, 0xd33: 0x0080, 0xd34: 0x00c3, 0xd35: 0x00c3, - 0xd36: 0x00c3, 0xd37: 0x00c3, 0xd38: 0x00c3, 0xd39: 0x00c3, 0xd3a: 0x00c6, - 0xd3f: 0x0080, - // Block 0x35, offset 0xd40 - 0xd40: 0x00c0, 0xd41: 0x00c0, 0xd42: 0x00c0, 0xd43: 0x00c0, 0xd44: 0x00c0, 0xd45: 0x00c0, - 0xd46: 0x00c0, 0xd47: 0x00c3, 0xd48: 0x00c3, 0xd49: 0x00c3, 0xd4a: 0x00c3, 0xd4b: 0x00c3, - 0xd4c: 0x00c3, 0xd4d: 0x00c3, 0xd4e: 0x00c3, 0xd4f: 0x0080, 0xd50: 0x00c0, 0xd51: 0x00c0, - 0xd52: 0x00c0, 0xd53: 0x00c0, 0xd54: 0x00c0, 0xd55: 0x00c0, 0xd56: 0x00c0, 0xd57: 0x00c0, - 0xd58: 0x00c0, 0xd59: 0x00c0, 0xd5a: 0x0080, 0xd5b: 0x0080, - // Block 0x36, offset 0xd80 - 0xd81: 0x00c0, 0xd82: 0x00c0, 0xd84: 0x00c0, - 0xd87: 0x00c0, 0xd88: 0x00c0, 0xd8a: 0x00c0, - 0xd8d: 0x00c0, - 0xd94: 0x00c0, 0xd95: 0x00c0, 0xd96: 0x00c0, 0xd97: 0x00c0, - 0xd99: 0x00c0, 0xd9a: 0x00c0, 0xd9b: 0x00c0, 0xd9c: 0x00c0, 0xd9d: 0x00c0, - 0xd9e: 0x00c0, 0xd9f: 0x00c0, 0xda1: 0x00c0, 0xda2: 0x00c0, 0xda3: 0x00c0, - 0xda5: 0x00c0, 0xda7: 0x00c0, - 0xdaa: 0x00c0, 0xdab: 0x00c0, 0xdad: 0x00c0, 0xdae: 0x00c0, 0xdaf: 0x00c0, - 0xdb0: 0x00c0, 0xdb1: 0x00c3, 0xdb2: 0x00c0, 0xdb3: 0x0080, 0xdb4: 0x00c3, 0xdb5: 0x00c3, - 0xdb6: 0x00c3, 0xdb7: 0x00c3, 0xdb8: 0x00c3, 0xdb9: 0x00c3, 0xdbb: 0x00c3, - 0xdbc: 0x00c3, 0xdbd: 0x00c0, - // Block 0x37, offset 0xdc0 - 0xdc0: 0x00c0, 0xdc1: 0x00c0, 0xdc2: 0x00c0, 0xdc3: 0x00c0, 0xdc4: 0x00c0, - 0xdc6: 0x00c0, 0xdc8: 0x00c3, 0xdc9: 0x00c3, 0xdca: 0x00c3, 0xdcb: 0x00c3, - 0xdcc: 0x00c3, 0xdcd: 0x00c3, 0xdd0: 0x00c0, 0xdd1: 0x00c0, - 0xdd2: 0x00c0, 0xdd3: 0x00c0, 0xdd4: 0x00c0, 0xdd5: 0x00c0, 0xdd6: 0x00c0, 0xdd7: 0x00c0, - 0xdd8: 0x00c0, 0xdd9: 0x00c0, 0xddc: 0x0080, 0xddd: 0x0080, - 0xdde: 0x00c0, 0xddf: 0x00c0, - // Block 0x38, offset 0xe00 - 0xe00: 0x00c0, 0xe01: 0x0080, 0xe02: 0x0080, 0xe03: 0x0080, 0xe04: 0x0080, 0xe05: 0x0080, - 0xe06: 0x0080, 0xe07: 0x0080, 0xe08: 0x0080, 0xe09: 0x0080, 0xe0a: 0x0080, 0xe0b: 0x00c0, - 0xe0c: 0x0080, 0xe0d: 0x0080, 0xe0e: 0x0080, 0xe0f: 0x0080, 0xe10: 0x0080, 0xe11: 0x0080, - 0xe12: 0x0080, 0xe13: 0x0080, 0xe14: 0x0080, 0xe15: 0x0080, 0xe16: 0x0080, 0xe17: 0x0080, - 0xe18: 0x00c3, 0xe19: 0x00c3, 0xe1a: 0x0080, 0xe1b: 0x0080, 0xe1c: 0x0080, 0xe1d: 0x0080, - 0xe1e: 0x0080, 0xe1f: 0x0080, 0xe20: 0x00c0, 0xe21: 0x00c0, 0xe22: 0x00c0, 0xe23: 0x00c0, - 0xe24: 0x00c0, 0xe25: 0x00c0, 0xe26: 0x00c0, 0xe27: 0x00c0, 0xe28: 0x00c0, 0xe29: 0x00c0, - 0xe2a: 0x0080, 0xe2b: 0x0080, 0xe2c: 0x0080, 0xe2d: 0x0080, 0xe2e: 0x0080, 0xe2f: 0x0080, - 0xe30: 0x0080, 0xe31: 0x0080, 0xe32: 0x0080, 0xe33: 0x0080, 0xe34: 0x0080, 0xe35: 0x00c3, - 0xe36: 0x0080, 0xe37: 0x00c3, 0xe38: 0x0080, 0xe39: 0x00c3, 0xe3a: 0x0080, 0xe3b: 0x0080, - 0xe3c: 0x0080, 0xe3d: 0x0080, 0xe3e: 0x00c0, 0xe3f: 0x00c0, - // Block 0x39, offset 0xe40 - 0xe40: 0x00c0, 0xe41: 0x00c0, 0xe42: 0x00c0, 0xe43: 0x0080, 0xe44: 0x00c0, 0xe45: 0x00c0, - 0xe46: 0x00c0, 0xe47: 0x00c0, 0xe49: 0x00c0, 0xe4a: 0x00c0, 0xe4b: 0x00c0, - 0xe4c: 0x00c0, 0xe4d: 0x0080, 0xe4e: 0x00c0, 0xe4f: 0x00c0, 0xe50: 0x00c0, 0xe51: 0x00c0, - 0xe52: 0x0080, 0xe53: 0x00c0, 0xe54: 0x00c0, 0xe55: 0x00c0, 0xe56: 0x00c0, 0xe57: 0x0080, - 0xe58: 0x00c0, 0xe59: 0x00c0, 0xe5a: 0x00c0, 0xe5b: 0x00c0, 0xe5c: 0x0080, 0xe5d: 0x00c0, - 0xe5e: 0x00c0, 0xe5f: 0x00c0, 0xe60: 0x00c0, 0xe61: 0x00c0, 0xe62: 0x00c0, 0xe63: 0x00c0, - 0xe64: 0x00c0, 0xe65: 0x00c0, 0xe66: 0x00c0, 0xe67: 0x00c0, 0xe68: 0x00c0, 0xe69: 0x0080, - 0xe6a: 0x00c0, 0xe6b: 0x00c0, 0xe6c: 0x00c0, - 0xe71: 0x00c3, 0xe72: 0x00c3, 0xe73: 0x0083, 0xe74: 0x00c3, 0xe75: 0x0083, - 0xe76: 0x0083, 0xe77: 0x0083, 0xe78: 0x0083, 0xe79: 0x0083, 0xe7a: 0x00c3, 0xe7b: 0x00c3, - 0xe7c: 0x00c3, 0xe7d: 0x00c3, 0xe7e: 0x00c3, 0xe7f: 0x00c0, - // Block 0x3a, offset 0xe80 - 0xe80: 0x00c3, 0xe81: 0x0083, 0xe82: 0x00c3, 0xe83: 0x00c3, 0xe84: 0x00c6, 0xe85: 0x0080, - 0xe86: 0x00c3, 0xe87: 0x00c3, 0xe88: 0x00c0, 0xe89: 0x00c0, 0xe8a: 0x00c0, 0xe8b: 0x00c0, - 0xe8c: 0x00c0, 0xe8d: 0x00c3, 0xe8e: 0x00c3, 0xe8f: 0x00c3, 0xe90: 0x00c3, 0xe91: 0x00c3, - 0xe92: 0x00c3, 0xe93: 0x0083, 0xe94: 0x00c3, 0xe95: 0x00c3, 0xe96: 0x00c3, 0xe97: 0x00c3, - 0xe99: 0x00c3, 0xe9a: 0x00c3, 0xe9b: 0x00c3, 0xe9c: 0x00c3, 0xe9d: 0x0083, - 0xe9e: 0x00c3, 0xe9f: 0x00c3, 0xea0: 0x00c3, 0xea1: 0x00c3, 0xea2: 0x0083, 0xea3: 0x00c3, - 0xea4: 0x00c3, 0xea5: 0x00c3, 0xea6: 0x00c3, 0xea7: 0x0083, 0xea8: 0x00c3, 0xea9: 0x00c3, - 0xeaa: 0x00c3, 0xeab: 0x00c3, 0xeac: 0x0083, 0xead: 0x00c3, 0xeae: 0x00c3, 0xeaf: 0x00c3, - 0xeb0: 0x00c3, 0xeb1: 0x00c3, 0xeb2: 0x00c3, 0xeb3: 0x00c3, 0xeb4: 0x00c3, 0xeb5: 0x00c3, - 0xeb6: 0x00c3, 0xeb7: 0x00c3, 0xeb8: 0x00c3, 0xeb9: 0x0083, 0xeba: 0x00c3, 0xebb: 0x00c3, - 0xebc: 0x00c3, 0xebe: 0x0080, 0xebf: 0x0080, - // Block 0x3b, offset 0xec0 - 0xec0: 0x0080, 0xec1: 0x0080, 0xec2: 0x0080, 0xec3: 0x0080, 0xec4: 0x0080, 0xec5: 0x0080, - 0xec6: 0x00c3, 0xec7: 0x0080, 0xec8: 0x0080, 0xec9: 0x0080, 0xeca: 0x0080, 0xecb: 0x0080, - 0xecc: 0x0080, 0xece: 0x0080, 0xecf: 0x0080, 0xed0: 0x0080, 0xed1: 0x0080, - 0xed2: 0x0080, 0xed3: 0x0080, 0xed4: 0x0080, 0xed5: 0x0080, 0xed6: 0x0080, 0xed7: 0x0080, - 0xed8: 0x0080, 0xed9: 0x0080, 0xeda: 0x0080, - // Block 0x3c, offset 0xf00 - 0xf00: 0x00c0, 0xf01: 0x00c0, 0xf02: 0x00c0, 0xf03: 0x00c0, 0xf04: 0x00c0, 0xf05: 0x00c0, - 0xf06: 0x00c0, 0xf07: 0x00c0, 0xf08: 0x00c0, 0xf09: 0x00c0, 0xf0a: 0x00c0, 0xf0b: 0x00c0, - 0xf0c: 0x00c0, 0xf0d: 0x00c0, 0xf0e: 0x00c0, 0xf0f: 0x00c0, 0xf10: 0x00c0, 0xf11: 0x00c0, - 0xf12: 0x00c0, 0xf13: 0x00c0, 0xf14: 0x00c0, 0xf15: 0x00c0, 0xf16: 0x00c0, 0xf17: 0x00c0, - 0xf18: 0x00c0, 0xf19: 0x00c0, 0xf1a: 0x00c0, 0xf1b: 0x00c0, 0xf1c: 0x00c0, 0xf1d: 0x00c0, - 0xf1e: 0x00c0, 0xf1f: 0x00c0, 0xf20: 0x00c0, 0xf21: 0x00c0, 0xf22: 0x00c0, 0xf23: 0x00c0, - 0xf24: 0x00c0, 0xf25: 0x00c0, 0xf26: 0x00c0, 0xf27: 0x00c0, 0xf28: 0x00c0, 0xf29: 0x00c0, - 0xf2a: 0x00c0, 0xf2b: 0x00c0, 0xf2c: 0x00c0, 0xf2d: 0x00c3, 0xf2e: 0x00c3, 0xf2f: 0x00c3, - 0xf30: 0x00c3, 0xf31: 0x00c0, 0xf32: 0x00c3, 0xf33: 0x00c3, 0xf34: 0x00c3, 0xf35: 0x00c3, - 0xf36: 0x00c3, 0xf37: 0x00c3, 0xf38: 0x00c0, 0xf39: 0x00c6, 0xf3a: 0x00c6, 0xf3b: 0x00c0, - 0xf3c: 0x00c0, 0xf3d: 0x00c3, 0xf3e: 0x00c3, 0xf3f: 0x00c0, - // Block 0x3d, offset 0xf40 - 0xf40: 0x00c0, 0xf41: 0x00c0, 0xf42: 0x00c0, 0xf43: 0x00c0, 0xf44: 0x00c0, 0xf45: 0x00c0, - 0xf46: 0x00c0, 0xf47: 0x00c0, 0xf48: 0x00c0, 0xf49: 0x00c0, 0xf4a: 0x0080, 0xf4b: 0x0080, - 0xf4c: 0x0080, 0xf4d: 0x0080, 0xf4e: 0x0080, 0xf4f: 0x0080, 0xf50: 0x00c0, 0xf51: 0x00c0, - 0xf52: 0x00c0, 0xf53: 0x00c0, 0xf54: 0x00c0, 0xf55: 0x00c0, 0xf56: 0x00c0, 0xf57: 0x00c0, - 0xf58: 0x00c3, 0xf59: 0x00c3, 0xf5a: 0x00c0, 0xf5b: 0x00c0, 0xf5c: 0x00c0, 0xf5d: 0x00c0, - 0xf5e: 0x00c3, 0xf5f: 0x00c3, 0xf60: 0x00c3, 0xf61: 0x00c0, 0xf62: 0x00c0, 0xf63: 0x00c0, - 0xf64: 0x00c0, 0xf65: 0x00c0, 0xf66: 0x00c0, 0xf67: 0x00c0, 0xf68: 0x00c0, 0xf69: 0x00c0, - 0xf6a: 0x00c0, 0xf6b: 0x00c0, 0xf6c: 0x00c0, 0xf6d: 0x00c0, 0xf6e: 0x00c0, 0xf6f: 0x00c0, - 0xf70: 0x00c0, 0xf71: 0x00c3, 0xf72: 0x00c3, 0xf73: 0x00c3, 0xf74: 0x00c3, 0xf75: 0x00c0, - 0xf76: 0x00c0, 0xf77: 0x00c0, 0xf78: 0x00c0, 0xf79: 0x00c0, 0xf7a: 0x00c0, 0xf7b: 0x00c0, - 0xf7c: 0x00c0, 0xf7d: 0x00c0, 0xf7e: 0x00c0, 0xf7f: 0x00c0, - // Block 0x3e, offset 0xf80 - 0xf80: 0x00c0, 0xf81: 0x00c0, 0xf82: 0x00c3, 0xf83: 0x00c0, 0xf84: 0x00c0, 0xf85: 0x00c3, - 0xf86: 0x00c3, 0xf87: 0x00c0, 0xf88: 0x00c0, 0xf89: 0x00c0, 0xf8a: 0x00c0, 0xf8b: 0x00c0, - 0xf8c: 0x00c0, 0xf8d: 0x00c3, 0xf8e: 0x00c0, 0xf8f: 0x00c0, 0xf90: 0x00c0, 0xf91: 0x00c0, - 0xf92: 0x00c0, 0xf93: 0x00c0, 0xf94: 0x00c0, 0xf95: 0x00c0, 0xf96: 0x00c0, 0xf97: 0x00c0, - 0xf98: 0x00c0, 0xf99: 0x00c0, 0xf9a: 0x00c0, 0xf9b: 0x00c0, 0xf9c: 0x00c0, 0xf9d: 0x00c3, - 0xf9e: 0x0080, 0xf9f: 0x0080, 0xfa0: 0x00c0, 0xfa1: 0x00c0, 0xfa2: 0x00c0, 0xfa3: 0x00c0, - 0xfa4: 0x00c0, 0xfa5: 0x00c0, 0xfa6: 0x00c0, 0xfa7: 0x00c0, 0xfa8: 0x00c0, 0xfa9: 0x00c0, - 0xfaa: 0x00c0, 0xfab: 0x00c0, 0xfac: 0x00c0, 0xfad: 0x00c0, 0xfae: 0x00c0, 0xfaf: 0x00c0, - 0xfb0: 0x00c0, 0xfb1: 0x00c0, 0xfb2: 0x00c0, 0xfb3: 0x00c0, 0xfb4: 0x00c0, 0xfb5: 0x00c0, - 0xfb6: 0x00c0, 0xfb7: 0x00c0, 0xfb8: 0x00c0, 0xfb9: 0x00c0, 0xfba: 0x00c0, 0xfbb: 0x00c0, - 0xfbc: 0x00c0, 0xfbd: 0x00c0, 0xfbe: 0x00c0, 0xfbf: 0x00c0, - // Block 0x3f, offset 0xfc0 - 0xfc0: 0x00c0, 0xfc1: 0x00c0, 0xfc2: 0x00c0, 0xfc3: 0x00c0, 0xfc4: 0x00c0, 0xfc5: 0x00c0, - 0xfc7: 0x00c0, - 0xfcd: 0x00c0, 0xfd0: 0x00c0, 0xfd1: 0x00c0, - 0xfd2: 0x00c0, 0xfd3: 0x00c0, 0xfd4: 0x00c0, 0xfd5: 0x00c0, 0xfd6: 0x00c0, 0xfd7: 0x00c0, - 0xfd8: 0x00c0, 0xfd9: 0x00c0, 0xfda: 0x00c0, 0xfdb: 0x00c0, 0xfdc: 0x00c0, 0xfdd: 0x00c0, - 0xfde: 0x00c0, 0xfdf: 0x00c0, 0xfe0: 0x00c0, 0xfe1: 0x00c0, 0xfe2: 0x00c0, 0xfe3: 0x00c0, - 0xfe4: 0x00c0, 0xfe5: 0x00c0, 0xfe6: 0x00c0, 0xfe7: 0x00c0, 0xfe8: 0x00c0, 0xfe9: 0x00c0, - 0xfea: 0x00c0, 0xfeb: 0x00c0, 0xfec: 0x00c0, 0xfed: 0x00c0, 0xfee: 0x00c0, 0xfef: 0x00c0, - 0xff0: 0x00c0, 0xff1: 0x00c0, 0xff2: 0x00c0, 0xff3: 0x00c0, 0xff4: 0x00c0, 0xff5: 0x00c0, - 0xff6: 0x00c0, 0xff7: 0x00c0, 0xff8: 0x00c0, 0xff9: 0x00c0, 0xffa: 0x00c0, 0xffb: 0x0080, - 0xffc: 0x0080, 0xffd: 0x00c0, 0xffe: 0x00c0, 0xfff: 0x00c0, - // Block 0x40, offset 0x1000 - 0x1000: 0x0040, 0x1001: 0x0040, 0x1002: 0x0040, 0x1003: 0x0040, 0x1004: 0x0040, 0x1005: 0x0040, - 0x1006: 0x0040, 0x1007: 0x0040, 0x1008: 0x0040, 0x1009: 0x0040, 0x100a: 0x0040, 0x100b: 0x0040, - 0x100c: 0x0040, 0x100d: 0x0040, 0x100e: 0x0040, 0x100f: 0x0040, 0x1010: 0x0040, 0x1011: 0x0040, - 0x1012: 0x0040, 0x1013: 0x0040, 0x1014: 0x0040, 0x1015: 0x0040, 0x1016: 0x0040, 0x1017: 0x0040, - 0x1018: 0x0040, 0x1019: 0x0040, 0x101a: 0x0040, 0x101b: 0x0040, 0x101c: 0x0040, 0x101d: 0x0040, - 0x101e: 0x0040, 0x101f: 0x0040, 0x1020: 0x0040, 0x1021: 0x0040, 0x1022: 0x0040, 0x1023: 0x0040, - 0x1024: 0x0040, 0x1025: 0x0040, 0x1026: 0x0040, 0x1027: 0x0040, 0x1028: 0x0040, 0x1029: 0x0040, - 0x102a: 0x0040, 0x102b: 0x0040, 0x102c: 0x0040, 0x102d: 0x0040, 0x102e: 0x0040, 0x102f: 0x0040, - 0x1030: 0x0040, 0x1031: 0x0040, 0x1032: 0x0040, 0x1033: 0x0040, 0x1034: 0x0040, 0x1035: 0x0040, - 0x1036: 0x0040, 0x1037: 0x0040, 0x1038: 0x0040, 0x1039: 0x0040, 0x103a: 0x0040, 0x103b: 0x0040, - 0x103c: 0x0040, 0x103d: 0x0040, 0x103e: 0x0040, 0x103f: 0x0040, - // Block 0x41, offset 0x1040 - 0x1040: 0x00c0, 0x1041: 0x00c0, 0x1042: 0x00c0, 0x1043: 0x00c0, 0x1044: 0x00c0, 0x1045: 0x00c0, - 0x1046: 0x00c0, 0x1047: 0x00c0, 0x1048: 0x00c0, 0x104a: 0x00c0, 0x104b: 0x00c0, - 0x104c: 0x00c0, 0x104d: 0x00c0, 0x1050: 0x00c0, 0x1051: 0x00c0, - 0x1052: 0x00c0, 0x1053: 0x00c0, 0x1054: 0x00c0, 0x1055: 0x00c0, 0x1056: 0x00c0, - 0x1058: 0x00c0, 0x105a: 0x00c0, 0x105b: 0x00c0, 0x105c: 0x00c0, 0x105d: 0x00c0, - 0x1060: 0x00c0, 0x1061: 0x00c0, 0x1062: 0x00c0, 0x1063: 0x00c0, - 0x1064: 0x00c0, 0x1065: 0x00c0, 0x1066: 0x00c0, 0x1067: 0x00c0, 0x1068: 0x00c0, 0x1069: 0x00c0, - 0x106a: 0x00c0, 0x106b: 0x00c0, 0x106c: 0x00c0, 0x106d: 0x00c0, 0x106e: 0x00c0, 0x106f: 0x00c0, - 0x1070: 0x00c0, 0x1071: 0x00c0, 0x1072: 0x00c0, 0x1073: 0x00c0, 0x1074: 0x00c0, 0x1075: 0x00c0, - 0x1076: 0x00c0, 0x1077: 0x00c0, 0x1078: 0x00c0, 0x1079: 0x00c0, 0x107a: 0x00c0, 0x107b: 0x00c0, - 0x107c: 0x00c0, 0x107d: 0x00c0, 0x107e: 0x00c0, 0x107f: 0x00c0, - // Block 0x42, offset 0x1080 - 0x1080: 0x00c0, 0x1081: 0x00c0, 0x1082: 0x00c0, 0x1083: 0x00c0, 0x1084: 0x00c0, 0x1085: 0x00c0, - 0x1086: 0x00c0, 0x1087: 0x00c0, 0x1088: 0x00c0, 0x108a: 0x00c0, 0x108b: 0x00c0, - 0x108c: 0x00c0, 0x108d: 0x00c0, 0x1090: 0x00c0, 0x1091: 0x00c0, - 0x1092: 0x00c0, 0x1093: 0x00c0, 0x1094: 0x00c0, 0x1095: 0x00c0, 0x1096: 0x00c0, 0x1097: 0x00c0, - 0x1098: 0x00c0, 0x1099: 0x00c0, 0x109a: 0x00c0, 0x109b: 0x00c0, 0x109c: 0x00c0, 0x109d: 0x00c0, - 0x109e: 0x00c0, 0x109f: 0x00c0, 0x10a0: 0x00c0, 0x10a1: 0x00c0, 0x10a2: 0x00c0, 0x10a3: 0x00c0, - 0x10a4: 0x00c0, 0x10a5: 0x00c0, 0x10a6: 0x00c0, 0x10a7: 0x00c0, 0x10a8: 0x00c0, 0x10a9: 0x00c0, - 0x10aa: 0x00c0, 0x10ab: 0x00c0, 0x10ac: 0x00c0, 0x10ad: 0x00c0, 0x10ae: 0x00c0, 0x10af: 0x00c0, - 0x10b0: 0x00c0, 0x10b2: 0x00c0, 0x10b3: 0x00c0, 0x10b4: 0x00c0, 0x10b5: 0x00c0, - 0x10b8: 0x00c0, 0x10b9: 0x00c0, 0x10ba: 0x00c0, 0x10bb: 0x00c0, - 0x10bc: 0x00c0, 0x10bd: 0x00c0, 0x10be: 0x00c0, - // Block 0x43, offset 0x10c0 - 0x10c0: 0x00c0, 0x10c2: 0x00c0, 0x10c3: 0x00c0, 0x10c4: 0x00c0, 0x10c5: 0x00c0, - 0x10c8: 0x00c0, 0x10c9: 0x00c0, 0x10ca: 0x00c0, 0x10cb: 0x00c0, - 0x10cc: 0x00c0, 0x10cd: 0x00c0, 0x10ce: 0x00c0, 0x10cf: 0x00c0, 0x10d0: 0x00c0, 0x10d1: 0x00c0, - 0x10d2: 0x00c0, 0x10d3: 0x00c0, 0x10d4: 0x00c0, 0x10d5: 0x00c0, 0x10d6: 0x00c0, - 0x10d8: 0x00c0, 0x10d9: 0x00c0, 0x10da: 0x00c0, 0x10db: 0x00c0, 0x10dc: 0x00c0, 0x10dd: 0x00c0, - 0x10de: 0x00c0, 0x10df: 0x00c0, 0x10e0: 0x00c0, 0x10e1: 0x00c0, 0x10e2: 0x00c0, 0x10e3: 0x00c0, - 0x10e4: 0x00c0, 0x10e5: 0x00c0, 0x10e6: 0x00c0, 0x10e7: 0x00c0, 0x10e8: 0x00c0, 0x10e9: 0x00c0, - 0x10ea: 0x00c0, 0x10eb: 0x00c0, 0x10ec: 0x00c0, 0x10ed: 0x00c0, 0x10ee: 0x00c0, 0x10ef: 0x00c0, - 0x10f0: 0x00c0, 0x10f1: 0x00c0, 0x10f2: 0x00c0, 0x10f3: 0x00c0, 0x10f4: 0x00c0, 0x10f5: 0x00c0, - 0x10f6: 0x00c0, 0x10f7: 0x00c0, 0x10f8: 0x00c0, 0x10f9: 0x00c0, 0x10fa: 0x00c0, 0x10fb: 0x00c0, - 0x10fc: 0x00c0, 0x10fd: 0x00c0, 0x10fe: 0x00c0, 0x10ff: 0x00c0, - // Block 0x44, offset 0x1100 - 0x1100: 0x00c0, 0x1101: 0x00c0, 0x1102: 0x00c0, 0x1103: 0x00c0, 0x1104: 0x00c0, 0x1105: 0x00c0, - 0x1106: 0x00c0, 0x1107: 0x00c0, 0x1108: 0x00c0, 0x1109: 0x00c0, 0x110a: 0x00c0, 0x110b: 0x00c0, - 0x110c: 0x00c0, 0x110d: 0x00c0, 0x110e: 0x00c0, 0x110f: 0x00c0, 0x1110: 0x00c0, - 0x1112: 0x00c0, 0x1113: 0x00c0, 0x1114: 0x00c0, 0x1115: 0x00c0, - 0x1118: 0x00c0, 0x1119: 0x00c0, 0x111a: 0x00c0, 0x111b: 0x00c0, 0x111c: 0x00c0, 0x111d: 0x00c0, - 0x111e: 0x00c0, 0x111f: 0x00c0, 0x1120: 0x00c0, 0x1121: 0x00c0, 0x1122: 0x00c0, 0x1123: 0x00c0, - 0x1124: 0x00c0, 0x1125: 0x00c0, 0x1126: 0x00c0, 0x1127: 0x00c0, 0x1128: 0x00c0, 0x1129: 0x00c0, - 0x112a: 0x00c0, 0x112b: 0x00c0, 0x112c: 0x00c0, 0x112d: 0x00c0, 0x112e: 0x00c0, 0x112f: 0x00c0, - 0x1130: 0x00c0, 0x1131: 0x00c0, 0x1132: 0x00c0, 0x1133: 0x00c0, 0x1134: 0x00c0, 0x1135: 0x00c0, - 0x1136: 0x00c0, 0x1137: 0x00c0, 0x1138: 0x00c0, 0x1139: 0x00c0, 0x113a: 0x00c0, 0x113b: 0x00c0, - 0x113c: 0x00c0, 0x113d: 0x00c0, 0x113e: 0x00c0, 0x113f: 0x00c0, - // Block 0x45, offset 0x1140 - 0x1140: 0x00c0, 0x1141: 0x00c0, 0x1142: 0x00c0, 0x1143: 0x00c0, 0x1144: 0x00c0, 0x1145: 0x00c0, - 0x1146: 0x00c0, 0x1147: 0x00c0, 0x1148: 0x00c0, 0x1149: 0x00c0, 0x114a: 0x00c0, 0x114b: 0x00c0, - 0x114c: 0x00c0, 0x114d: 0x00c0, 0x114e: 0x00c0, 0x114f: 0x00c0, 0x1150: 0x00c0, 0x1151: 0x00c0, - 0x1152: 0x00c0, 0x1153: 0x00c0, 0x1154: 0x00c0, 0x1155: 0x00c0, 0x1156: 0x00c0, 0x1157: 0x00c0, - 0x1158: 0x00c0, 0x1159: 0x00c0, 0x115a: 0x00c0, 0x115d: 0x00c3, - 0x115e: 0x00c3, 0x115f: 0x00c3, 0x1160: 0x0080, 0x1161: 0x0080, 0x1162: 0x0080, 0x1163: 0x0080, - 0x1164: 0x0080, 0x1165: 0x0080, 0x1166: 0x0080, 0x1167: 0x0080, 0x1168: 0x0080, 0x1169: 0x0080, - 0x116a: 0x0080, 0x116b: 0x0080, 0x116c: 0x0080, 0x116d: 0x0080, 0x116e: 0x0080, 0x116f: 0x0080, - 0x1170: 0x0080, 0x1171: 0x0080, 0x1172: 0x0080, 0x1173: 0x0080, 0x1174: 0x0080, 0x1175: 0x0080, - 0x1176: 0x0080, 0x1177: 0x0080, 0x1178: 0x0080, 0x1179: 0x0080, 0x117a: 0x0080, 0x117b: 0x0080, - 0x117c: 0x0080, - // Block 0x46, offset 0x1180 - 0x1180: 0x00c0, 0x1181: 0x00c0, 0x1182: 0x00c0, 0x1183: 0x00c0, 0x1184: 0x00c0, 0x1185: 0x00c0, - 0x1186: 0x00c0, 0x1187: 0x00c0, 0x1188: 0x00c0, 0x1189: 0x00c0, 0x118a: 0x00c0, 0x118b: 0x00c0, - 0x118c: 0x00c0, 0x118d: 0x00c0, 0x118e: 0x00c0, 0x118f: 0x00c0, 0x1190: 0x0080, 0x1191: 0x0080, - 0x1192: 0x0080, 0x1193: 0x0080, 0x1194: 0x0080, 0x1195: 0x0080, 0x1196: 0x0080, 0x1197: 0x0080, - 0x1198: 0x0080, 0x1199: 0x0080, - 0x11a0: 0x00c0, 0x11a1: 0x00c0, 0x11a2: 0x00c0, 0x11a3: 0x00c0, - 0x11a4: 0x00c0, 0x11a5: 0x00c0, 0x11a6: 0x00c0, 0x11a7: 0x00c0, 0x11a8: 0x00c0, 0x11a9: 0x00c0, - 0x11aa: 0x00c0, 0x11ab: 0x00c0, 0x11ac: 0x00c0, 0x11ad: 0x00c0, 0x11ae: 0x00c0, 0x11af: 0x00c0, - 0x11b0: 0x00c0, 0x11b1: 0x00c0, 0x11b2: 0x00c0, 0x11b3: 0x00c0, 0x11b4: 0x00c0, 0x11b5: 0x00c0, - 0x11b6: 0x00c0, 0x11b7: 0x00c0, 0x11b8: 0x00c0, 0x11b9: 0x00c0, 0x11ba: 0x00c0, 0x11bb: 0x00c0, - 0x11bc: 0x00c0, 0x11bd: 0x00c0, 0x11be: 0x00c0, 0x11bf: 0x00c0, - // Block 0x47, offset 0x11c0 - 0x11c0: 0x00c0, 0x11c1: 0x00c0, 0x11c2: 0x00c0, 0x11c3: 0x00c0, 0x11c4: 0x00c0, 0x11c5: 0x00c0, - 0x11c6: 0x00c0, 0x11c7: 0x00c0, 0x11c8: 0x00c0, 0x11c9: 0x00c0, 0x11ca: 0x00c0, 0x11cb: 0x00c0, - 0x11cc: 0x00c0, 0x11cd: 0x00c0, 0x11ce: 0x00c0, 0x11cf: 0x00c0, 0x11d0: 0x00c0, 0x11d1: 0x00c0, - 0x11d2: 0x00c0, 0x11d3: 0x00c0, 0x11d4: 0x00c0, 0x11d5: 0x00c0, 0x11d6: 0x00c0, 0x11d7: 0x00c0, - 0x11d8: 0x00c0, 0x11d9: 0x00c0, 0x11da: 0x00c0, 0x11db: 0x00c0, 0x11dc: 0x00c0, 0x11dd: 0x00c0, - 0x11de: 0x00c0, 0x11df: 0x00c0, 0x11e0: 0x00c0, 0x11e1: 0x00c0, 0x11e2: 0x00c0, 0x11e3: 0x00c0, - 0x11e4: 0x00c0, 0x11e5: 0x00c0, 0x11e6: 0x00c0, 0x11e7: 0x00c0, 0x11e8: 0x00c0, 0x11e9: 0x00c0, - 0x11ea: 0x00c0, 0x11eb: 0x00c0, 0x11ec: 0x00c0, 0x11ed: 0x00c0, 0x11ee: 0x00c0, 0x11ef: 0x00c0, - 0x11f0: 0x00c0, 0x11f1: 0x00c0, 0x11f2: 0x00c0, 0x11f3: 0x00c0, 0x11f4: 0x00c0, 0x11f5: 0x00c0, - 0x11f8: 0x00c0, 0x11f9: 0x00c0, 0x11fa: 0x00c0, 0x11fb: 0x00c0, - 0x11fc: 0x00c0, 0x11fd: 0x00c0, - // Block 0x48, offset 0x1200 - 0x1200: 0x0080, 0x1201: 0x00c0, 0x1202: 0x00c0, 0x1203: 0x00c0, 0x1204: 0x00c0, 0x1205: 0x00c0, - 0x1206: 0x00c0, 0x1207: 0x00c0, 0x1208: 0x00c0, 0x1209: 0x00c0, 0x120a: 0x00c0, 0x120b: 0x00c0, - 0x120c: 0x00c0, 0x120d: 0x00c0, 0x120e: 0x00c0, 0x120f: 0x00c0, 0x1210: 0x00c0, 0x1211: 0x00c0, - 0x1212: 0x00c0, 0x1213: 0x00c0, 0x1214: 0x00c0, 0x1215: 0x00c0, 0x1216: 0x00c0, 0x1217: 0x00c0, - 0x1218: 0x00c0, 0x1219: 0x00c0, 0x121a: 0x00c0, 0x121b: 0x00c0, 0x121c: 0x00c0, 0x121d: 0x00c0, - 0x121e: 0x00c0, 0x121f: 0x00c0, 0x1220: 0x00c0, 0x1221: 0x00c0, 0x1222: 0x00c0, 0x1223: 0x00c0, - 0x1224: 0x00c0, 0x1225: 0x00c0, 0x1226: 0x00c0, 0x1227: 0x00c0, 0x1228: 0x00c0, 0x1229: 0x00c0, - 0x122a: 0x00c0, 0x122b: 0x00c0, 0x122c: 0x00c0, 0x122d: 0x00c0, 0x122e: 0x00c0, 0x122f: 0x00c0, - 0x1230: 0x00c0, 0x1231: 0x00c0, 0x1232: 0x00c0, 0x1233: 0x00c0, 0x1234: 0x00c0, 0x1235: 0x00c0, - 0x1236: 0x00c0, 0x1237: 0x00c0, 0x1238: 0x00c0, 0x1239: 0x00c0, 0x123a: 0x00c0, 0x123b: 0x00c0, - 0x123c: 0x00c0, 0x123d: 0x00c0, 0x123e: 0x00c0, 0x123f: 0x00c0, - // Block 0x49, offset 0x1240 - 0x1240: 0x00c0, 0x1241: 0x00c0, 0x1242: 0x00c0, 0x1243: 0x00c0, 0x1244: 0x00c0, 0x1245: 0x00c0, - 0x1246: 0x00c0, 0x1247: 0x00c0, 0x1248: 0x00c0, 0x1249: 0x00c0, 0x124a: 0x00c0, 0x124b: 0x00c0, - 0x124c: 0x00c0, 0x124d: 0x00c0, 0x124e: 0x00c0, 0x124f: 0x00c0, 0x1250: 0x00c0, 0x1251: 0x00c0, - 0x1252: 0x00c0, 0x1253: 0x00c0, 0x1254: 0x00c0, 0x1255: 0x00c0, 0x1256: 0x00c0, 0x1257: 0x00c0, - 0x1258: 0x00c0, 0x1259: 0x00c0, 0x125a: 0x00c0, 0x125b: 0x00c0, 0x125c: 0x00c0, 0x125d: 0x00c0, - 0x125e: 0x00c0, 0x125f: 0x00c0, 0x1260: 0x00c0, 0x1261: 0x00c0, 0x1262: 0x00c0, 0x1263: 0x00c0, - 0x1264: 0x00c0, 0x1265: 0x00c0, 0x1266: 0x00c0, 0x1267: 0x00c0, 0x1268: 0x00c0, 0x1269: 0x00c0, - 0x126a: 0x00c0, 0x126b: 0x00c0, 0x126c: 0x00c0, 0x126d: 0x0080, 0x126e: 0x0080, 0x126f: 0x00c0, - 0x1270: 0x00c0, 0x1271: 0x00c0, 0x1272: 0x00c0, 0x1273: 0x00c0, 0x1274: 0x00c0, 0x1275: 0x00c0, - 0x1276: 0x00c0, 0x1277: 0x00c0, 0x1278: 0x00c0, 0x1279: 0x00c0, 0x127a: 0x00c0, 0x127b: 0x00c0, - 0x127c: 0x00c0, 0x127d: 0x00c0, 0x127e: 0x00c0, 0x127f: 0x00c0, - // Block 0x4a, offset 0x1280 - 0x1280: 0x0080, 0x1281: 0x00c0, 0x1282: 0x00c0, 0x1283: 0x00c0, 0x1284: 0x00c0, 0x1285: 0x00c0, - 0x1286: 0x00c0, 0x1287: 0x00c0, 0x1288: 0x00c0, 0x1289: 0x00c0, 0x128a: 0x00c0, 0x128b: 0x00c0, - 0x128c: 0x00c0, 0x128d: 0x00c0, 0x128e: 0x00c0, 0x128f: 0x00c0, 0x1290: 0x00c0, 0x1291: 0x00c0, - 0x1292: 0x00c0, 0x1293: 0x00c0, 0x1294: 0x00c0, 0x1295: 0x00c0, 0x1296: 0x00c0, 0x1297: 0x00c0, - 0x1298: 0x00c0, 0x1299: 0x00c0, 0x129a: 0x00c0, 0x129b: 0x0080, 0x129c: 0x0080, - 0x12a0: 0x00c0, 0x12a1: 0x00c0, 0x12a2: 0x00c0, 0x12a3: 0x00c0, - 0x12a4: 0x00c0, 0x12a5: 0x00c0, 0x12a6: 0x00c0, 0x12a7: 0x00c0, 0x12a8: 0x00c0, 0x12a9: 0x00c0, - 0x12aa: 0x00c0, 0x12ab: 0x00c0, 0x12ac: 0x00c0, 0x12ad: 0x00c0, 0x12ae: 0x00c0, 0x12af: 0x00c0, - 0x12b0: 0x00c0, 0x12b1: 0x00c0, 0x12b2: 0x00c0, 0x12b3: 0x00c0, 0x12b4: 0x00c0, 0x12b5: 0x00c0, - 0x12b6: 0x00c0, 0x12b7: 0x00c0, 0x12b8: 0x00c0, 0x12b9: 0x00c0, 0x12ba: 0x00c0, 0x12bb: 0x00c0, - 0x12bc: 0x00c0, 0x12bd: 0x00c0, 0x12be: 0x00c0, 0x12bf: 0x00c0, - // Block 0x4b, offset 0x12c0 - 0x12c0: 0x00c0, 0x12c1: 0x00c0, 0x12c2: 0x00c0, 0x12c3: 0x00c0, 0x12c4: 0x00c0, 0x12c5: 0x00c0, - 0x12c6: 0x00c0, 0x12c7: 0x00c0, 0x12c8: 0x00c0, 0x12c9: 0x00c0, 0x12ca: 0x00c0, 0x12cb: 0x00c0, - 0x12cc: 0x00c0, 0x12cd: 0x00c0, 0x12ce: 0x00c0, 0x12cf: 0x00c0, 0x12d0: 0x00c0, 0x12d1: 0x00c0, - 0x12d2: 0x00c0, 0x12d3: 0x00c0, 0x12d4: 0x00c0, 0x12d5: 0x00c0, 0x12d6: 0x00c0, 0x12d7: 0x00c0, - 0x12d8: 0x00c0, 0x12d9: 0x00c0, 0x12da: 0x00c0, 0x12db: 0x00c0, 0x12dc: 0x00c0, 0x12dd: 0x00c0, - 0x12de: 0x00c0, 0x12df: 0x00c0, 0x12e0: 0x00c0, 0x12e1: 0x00c0, 0x12e2: 0x00c0, 0x12e3: 0x00c0, - 0x12e4: 0x00c0, 0x12e5: 0x00c0, 0x12e6: 0x00c0, 0x12e7: 0x00c0, 0x12e8: 0x00c0, 0x12e9: 0x00c0, - 0x12ea: 0x00c0, 0x12eb: 0x0080, 0x12ec: 0x0080, 0x12ed: 0x0080, 0x12ee: 0x0080, 0x12ef: 0x0080, - 0x12f0: 0x0080, 0x12f1: 0x00c0, 0x12f2: 0x00c0, 0x12f3: 0x00c0, 0x12f4: 0x00c0, 0x12f5: 0x00c0, - 0x12f6: 0x00c0, 0x12f7: 0x00c0, 0x12f8: 0x00c0, - // Block 0x4c, offset 0x1300 - 0x1300: 0x00c0, 0x1301: 0x00c0, 0x1302: 0x00c0, 0x1303: 0x00c0, 0x1304: 0x00c0, 0x1305: 0x00c0, - 0x1306: 0x00c0, 0x1307: 0x00c0, 0x1308: 0x00c0, 0x1309: 0x00c0, 0x130a: 0x00c0, 0x130b: 0x00c0, - 0x130c: 0x00c0, 0x130e: 0x00c0, 0x130f: 0x00c0, 0x1310: 0x00c0, 0x1311: 0x00c0, - 0x1312: 0x00c3, 0x1313: 0x00c3, 0x1314: 0x00c6, - 0x1320: 0x00c0, 0x1321: 0x00c0, 0x1322: 0x00c0, 0x1323: 0x00c0, - 0x1324: 0x00c0, 0x1325: 0x00c0, 0x1326: 0x00c0, 0x1327: 0x00c0, 0x1328: 0x00c0, 0x1329: 0x00c0, - 0x132a: 0x00c0, 0x132b: 0x00c0, 0x132c: 0x00c0, 0x132d: 0x00c0, 0x132e: 0x00c0, 0x132f: 0x00c0, - 0x1330: 0x00c0, 0x1331: 0x00c0, 0x1332: 0x00c3, 0x1333: 0x00c3, 0x1334: 0x00c6, 0x1335: 0x0080, - 0x1336: 0x0080, - // Block 0x4d, offset 0x1340 - 0x1340: 0x00c0, 0x1341: 0x00c0, 0x1342: 0x00c0, 0x1343: 0x00c0, 0x1344: 0x00c0, 0x1345: 0x00c0, - 0x1346: 0x00c0, 0x1347: 0x00c0, 0x1348: 0x00c0, 0x1349: 0x00c0, 0x134a: 0x00c0, 0x134b: 0x00c0, - 0x134c: 0x00c0, 0x134d: 0x00c0, 0x134e: 0x00c0, 0x134f: 0x00c0, 0x1350: 0x00c0, 0x1351: 0x00c0, - 0x1352: 0x00c3, 0x1353: 0x00c3, - 0x1360: 0x00c0, 0x1361: 0x00c0, 0x1362: 0x00c0, 0x1363: 0x00c0, - 0x1364: 0x00c0, 0x1365: 0x00c0, 0x1366: 0x00c0, 0x1367: 0x00c0, 0x1368: 0x00c0, 0x1369: 0x00c0, - 0x136a: 0x00c0, 0x136b: 0x00c0, 0x136c: 0x00c0, 0x136e: 0x00c0, 0x136f: 0x00c0, - 0x1370: 0x00c0, 0x1372: 0x00c3, 0x1373: 0x00c3, - // Block 0x4e, offset 0x1380 - 0x1380: 0x00c0, 0x1381: 0x00c0, 0x1382: 0x00c0, 0x1383: 0x00c0, 0x1384: 0x00c0, 0x1385: 0x00c0, - 0x1386: 0x00c0, 0x1387: 0x00c0, 0x1388: 0x00c0, 0x1389: 0x00c0, 0x138a: 0x00c0, 0x138b: 0x00c0, - 0x138c: 0x00c0, 0x138d: 0x00c0, 0x138e: 0x00c0, 0x138f: 0x00c0, 0x1390: 0x00c0, 0x1391: 0x00c0, - 0x1392: 0x00c0, 0x1393: 0x00c0, 0x1394: 0x00c0, 0x1395: 0x00c0, 0x1396: 0x00c0, 0x1397: 0x00c0, - 0x1398: 0x00c0, 0x1399: 0x00c0, 0x139a: 0x00c0, 0x139b: 0x00c0, 0x139c: 0x00c0, 0x139d: 0x00c0, - 0x139e: 0x00c0, 0x139f: 0x00c0, 0x13a0: 0x00c0, 0x13a1: 0x00c0, 0x13a2: 0x00c0, 0x13a3: 0x00c0, - 0x13a4: 0x00c0, 0x13a5: 0x00c0, 0x13a6: 0x00c0, 0x13a7: 0x00c0, 0x13a8: 0x00c0, 0x13a9: 0x00c0, - 0x13aa: 0x00c0, 0x13ab: 0x00c0, 0x13ac: 0x00c0, 0x13ad: 0x00c0, 0x13ae: 0x00c0, 0x13af: 0x00c0, - 0x13b0: 0x00c0, 0x13b1: 0x00c0, 0x13b2: 0x00c0, 0x13b3: 0x00c0, 0x13b4: 0x0040, 0x13b5: 0x0040, - 0x13b6: 0x00c0, 0x13b7: 0x00c3, 0x13b8: 0x00c3, 0x13b9: 0x00c3, 0x13ba: 0x00c3, 0x13bb: 0x00c3, - 0x13bc: 0x00c3, 0x13bd: 0x00c3, 0x13be: 0x00c0, 0x13bf: 0x00c0, - // Block 0x4f, offset 0x13c0 - 0x13c0: 0x00c0, 0x13c1: 0x00c0, 0x13c2: 0x00c0, 0x13c3: 0x00c0, 0x13c4: 0x00c0, 0x13c5: 0x00c0, - 0x13c6: 0x00c3, 0x13c7: 0x00c0, 0x13c8: 0x00c0, 0x13c9: 0x00c3, 0x13ca: 0x00c3, 0x13cb: 0x00c3, - 0x13cc: 0x00c3, 0x13cd: 0x00c3, 0x13ce: 0x00c3, 0x13cf: 0x00c3, 0x13d0: 0x00c3, 0x13d1: 0x00c3, - 0x13d2: 0x00c6, 0x13d3: 0x00c3, 0x13d4: 0x0080, 0x13d5: 0x0080, 0x13d6: 0x0080, 0x13d7: 0x00c0, - 0x13d8: 0x0080, 0x13d9: 0x0080, 0x13da: 0x0080, 0x13db: 0x0080, 0x13dc: 0x00c0, 0x13dd: 0x00c3, - 0x13e0: 0x00c0, 0x13e1: 0x00c0, 0x13e2: 0x00c0, 0x13e3: 0x00c0, - 0x13e4: 0x00c0, 0x13e5: 0x00c0, 0x13e6: 0x00c0, 0x13e7: 0x00c0, 0x13e8: 0x00c0, 0x13e9: 0x00c0, - 0x13f0: 0x0080, 0x13f1: 0x0080, 0x13f2: 0x0080, 0x13f3: 0x0080, 0x13f4: 0x0080, 0x13f5: 0x0080, - 0x13f6: 0x0080, 0x13f7: 0x0080, 0x13f8: 0x0080, 0x13f9: 0x0080, - // Block 0x50, offset 0x1400 - 0x1400: 0x0080, 0x1401: 0x0080, 0x1402: 0x0080, 0x1403: 0x0080, 0x1404: 0x0080, 0x1405: 0x0080, - 0x1406: 0x0080, 0x1407: 0x0082, 0x1408: 0x0080, 0x1409: 0x0080, 0x140a: 0x0080, 0x140b: 0x0040, - 0x140c: 0x0040, 0x140d: 0x0040, 0x140e: 0x0040, 0x1410: 0x00c0, 0x1411: 0x00c0, - 0x1412: 0x00c0, 0x1413: 0x00c0, 0x1414: 0x00c0, 0x1415: 0x00c0, 0x1416: 0x00c0, 0x1417: 0x00c0, - 0x1418: 0x00c0, 0x1419: 0x00c0, - 0x1420: 0x00c2, 0x1421: 0x00c2, 0x1422: 0x00c2, 0x1423: 0x00c2, - 0x1424: 0x00c2, 0x1425: 0x00c2, 0x1426: 0x00c2, 0x1427: 0x00c2, 0x1428: 0x00c2, 0x1429: 0x00c2, - 0x142a: 0x00c2, 0x142b: 0x00c2, 0x142c: 0x00c2, 0x142d: 0x00c2, 0x142e: 0x00c2, 0x142f: 0x00c2, - 0x1430: 0x00c2, 0x1431: 0x00c2, 0x1432: 0x00c2, 0x1433: 0x00c2, 0x1434: 0x00c2, 0x1435: 0x00c2, - 0x1436: 0x00c2, 0x1437: 0x00c2, 0x1438: 0x00c2, 0x1439: 0x00c2, 0x143a: 0x00c2, 0x143b: 0x00c2, - 0x143c: 0x00c2, 0x143d: 0x00c2, 0x143e: 0x00c2, 0x143f: 0x00c2, - // Block 0x51, offset 0x1440 - 0x1440: 0x00c2, 0x1441: 0x00c2, 0x1442: 0x00c2, 0x1443: 0x00c2, 0x1444: 0x00c2, 0x1445: 0x00c2, - 0x1446: 0x00c2, 0x1447: 0x00c2, 0x1448: 0x00c2, 0x1449: 0x00c2, 0x144a: 0x00c2, 0x144b: 0x00c2, - 0x144c: 0x00c2, 0x144d: 0x00c2, 0x144e: 0x00c2, 0x144f: 0x00c2, 0x1450: 0x00c2, 0x1451: 0x00c2, - 0x1452: 0x00c2, 0x1453: 0x00c2, 0x1454: 0x00c2, 0x1455: 0x00c2, 0x1456: 0x00c2, 0x1457: 0x00c2, - 0x1458: 0x00c2, 0x1459: 0x00c2, 0x145a: 0x00c2, 0x145b: 0x00c2, 0x145c: 0x00c2, 0x145d: 0x00c2, - 0x145e: 0x00c2, 0x145f: 0x00c2, 0x1460: 0x00c2, 0x1461: 0x00c2, 0x1462: 0x00c2, 0x1463: 0x00c2, - 0x1464: 0x00c2, 0x1465: 0x00c2, 0x1466: 0x00c2, 0x1467: 0x00c2, 0x1468: 0x00c2, 0x1469: 0x00c2, - 0x146a: 0x00c2, 0x146b: 0x00c2, 0x146c: 0x00c2, 0x146d: 0x00c2, 0x146e: 0x00c2, 0x146f: 0x00c2, - 0x1470: 0x00c2, 0x1471: 0x00c2, 0x1472: 0x00c2, 0x1473: 0x00c2, 0x1474: 0x00c2, 0x1475: 0x00c2, - 0x1476: 0x00c2, 0x1477: 0x00c2, - // Block 0x52, offset 0x1480 - 0x1480: 0x00c0, 0x1481: 0x00c0, 0x1482: 0x00c0, 0x1483: 0x00c0, 0x1484: 0x00c0, 0x1485: 0x00c3, - 0x1486: 0x00c3, 0x1487: 0x00c2, 0x1488: 0x00c2, 0x1489: 0x00c2, 0x148a: 0x00c2, 0x148b: 0x00c2, - 0x148c: 0x00c2, 0x148d: 0x00c2, 0x148e: 0x00c2, 0x148f: 0x00c2, 0x1490: 0x00c2, 0x1491: 0x00c2, - 0x1492: 0x00c2, 0x1493: 0x00c2, 0x1494: 0x00c2, 0x1495: 0x00c2, 0x1496: 0x00c2, 0x1497: 0x00c2, - 0x1498: 0x00c2, 0x1499: 0x00c2, 0x149a: 0x00c2, 0x149b: 0x00c2, 0x149c: 0x00c2, 0x149d: 0x00c2, - 0x149e: 0x00c2, 0x149f: 0x00c2, 0x14a0: 0x00c2, 0x14a1: 0x00c2, 0x14a2: 0x00c2, 0x14a3: 0x00c2, - 0x14a4: 0x00c2, 0x14a5: 0x00c2, 0x14a6: 0x00c2, 0x14a7: 0x00c2, 0x14a8: 0x00c2, 0x14a9: 0x00c3, - 0x14aa: 0x00c2, - 0x14b0: 0x00c0, 0x14b1: 0x00c0, 0x14b2: 0x00c0, 0x14b3: 0x00c0, 0x14b4: 0x00c0, 0x14b5: 0x00c0, - 0x14b6: 0x00c0, 0x14b7: 0x00c0, 0x14b8: 0x00c0, 0x14b9: 0x00c0, 0x14ba: 0x00c0, 0x14bb: 0x00c0, - 0x14bc: 0x00c0, 0x14bd: 0x00c0, 0x14be: 0x00c0, 0x14bf: 0x00c0, - // Block 0x53, offset 0x14c0 - 0x14c0: 0x00c0, 0x14c1: 0x00c0, 0x14c2: 0x00c0, 0x14c3: 0x00c0, 0x14c4: 0x00c0, 0x14c5: 0x00c0, - 0x14c6: 0x00c0, 0x14c7: 0x00c0, 0x14c8: 0x00c0, 0x14c9: 0x00c0, 0x14ca: 0x00c0, 0x14cb: 0x00c0, - 0x14cc: 0x00c0, 0x14cd: 0x00c0, 0x14ce: 0x00c0, 0x14cf: 0x00c0, 0x14d0: 0x00c0, 0x14d1: 0x00c0, - 0x14d2: 0x00c0, 0x14d3: 0x00c0, 0x14d4: 0x00c0, 0x14d5: 0x00c0, 0x14d6: 0x00c0, 0x14d7: 0x00c0, - 0x14d8: 0x00c0, 0x14d9: 0x00c0, 0x14da: 0x00c0, 0x14db: 0x00c0, 0x14dc: 0x00c0, 0x14dd: 0x00c0, - 0x14de: 0x00c0, 0x14df: 0x00c0, 0x14e0: 0x00c0, 0x14e1: 0x00c0, 0x14e2: 0x00c0, 0x14e3: 0x00c0, - 0x14e4: 0x00c0, 0x14e5: 0x00c0, 0x14e6: 0x00c0, 0x14e7: 0x00c0, 0x14e8: 0x00c0, 0x14e9: 0x00c0, - 0x14ea: 0x00c0, 0x14eb: 0x00c0, 0x14ec: 0x00c0, 0x14ed: 0x00c0, 0x14ee: 0x00c0, 0x14ef: 0x00c0, - 0x14f0: 0x00c0, 0x14f1: 0x00c0, 0x14f2: 0x00c0, 0x14f3: 0x00c0, 0x14f4: 0x00c0, 0x14f5: 0x00c0, - // Block 0x54, offset 0x1500 - 0x1500: 0x00c0, 0x1501: 0x00c0, 0x1502: 0x00c0, 0x1503: 0x00c0, 0x1504: 0x00c0, 0x1505: 0x00c0, - 0x1506: 0x00c0, 0x1507: 0x00c0, 0x1508: 0x00c0, 0x1509: 0x00c0, 0x150a: 0x00c0, 0x150b: 0x00c0, - 0x150c: 0x00c0, 0x150d: 0x00c0, 0x150e: 0x00c0, 0x150f: 0x00c0, 0x1510: 0x00c0, 0x1511: 0x00c0, - 0x1512: 0x00c0, 0x1513: 0x00c0, 0x1514: 0x00c0, 0x1515: 0x00c0, 0x1516: 0x00c0, 0x1517: 0x00c0, - 0x1518: 0x00c0, 0x1519: 0x00c0, 0x151a: 0x00c0, 0x151b: 0x00c0, 0x151c: 0x00c0, 0x151d: 0x00c0, - 0x151e: 0x00c0, 0x1520: 0x00c3, 0x1521: 0x00c3, 0x1522: 0x00c3, 0x1523: 0x00c0, - 0x1524: 0x00c0, 0x1525: 0x00c0, 0x1526: 0x00c0, 0x1527: 0x00c3, 0x1528: 0x00c3, 0x1529: 0x00c0, - 0x152a: 0x00c0, 0x152b: 0x00c0, - 0x1530: 0x00c0, 0x1531: 0x00c0, 0x1532: 0x00c3, 0x1533: 0x00c0, 0x1534: 0x00c0, 0x1535: 0x00c0, - 0x1536: 0x00c0, 0x1537: 0x00c0, 0x1538: 0x00c0, 0x1539: 0x00c3, 0x153a: 0x00c3, 0x153b: 0x00c3, - // Block 0x55, offset 0x1540 - 0x1540: 0x0080, 0x1544: 0x0080, 0x1545: 0x0080, - 0x1546: 0x00c0, 0x1547: 0x00c0, 0x1548: 0x00c0, 0x1549: 0x00c0, 0x154a: 0x00c0, 0x154b: 0x00c0, - 0x154c: 0x00c0, 0x154d: 0x00c0, 0x154e: 0x00c0, 0x154f: 0x00c0, 0x1550: 0x00c0, 0x1551: 0x00c0, - 0x1552: 0x00c0, 0x1553: 0x00c0, 0x1554: 0x00c0, 0x1555: 0x00c0, 0x1556: 0x00c0, 0x1557: 0x00c0, - 0x1558: 0x00c0, 0x1559: 0x00c0, 0x155a: 0x00c0, 0x155b: 0x00c0, 0x155c: 0x00c0, 0x155d: 0x00c0, - 0x155e: 0x00c0, 0x155f: 0x00c0, 0x1560: 0x00c0, 0x1561: 0x00c0, 0x1562: 0x00c0, 0x1563: 0x00c0, - 0x1564: 0x00c0, 0x1565: 0x00c0, 0x1566: 0x00c0, 0x1567: 0x00c0, 0x1568: 0x00c0, 0x1569: 0x00c0, - 0x156a: 0x00c0, 0x156b: 0x00c0, 0x156c: 0x00c0, 0x156d: 0x00c0, - 0x1570: 0x00c0, 0x1571: 0x00c0, 0x1572: 0x00c0, 0x1573: 0x00c0, 0x1574: 0x00c0, - // Block 0x56, offset 0x1580 - 0x1580: 0x00c0, 0x1581: 0x00c0, 0x1582: 0x00c0, 0x1583: 0x00c0, 0x1584: 0x00c0, 0x1585: 0x00c0, - 0x1586: 0x00c0, 0x1587: 0x00c0, 0x1588: 0x00c0, 0x1589: 0x00c0, 0x158a: 0x00c0, 0x158b: 0x00c0, - 0x158c: 0x00c0, 0x158d: 0x00c0, 0x158e: 0x00c0, 0x158f: 0x00c0, 0x1590: 0x00c0, 0x1591: 0x00c0, - 0x1592: 0x00c0, 0x1593: 0x00c0, 0x1594: 0x00c0, 0x1595: 0x00c0, 0x1596: 0x00c0, 0x1597: 0x00c0, - 0x1598: 0x00c0, 0x1599: 0x00c0, 0x159a: 0x00c0, 0x159b: 0x00c0, 0x159c: 0x00c0, 0x159d: 0x00c0, - 0x159e: 0x00c0, 0x159f: 0x00c0, 0x15a0: 0x00c0, 0x15a1: 0x00c0, 0x15a2: 0x00c0, 0x15a3: 0x00c0, - 0x15a4: 0x00c0, 0x15a5: 0x00c0, 0x15a6: 0x00c0, 0x15a7: 0x00c0, 0x15a8: 0x00c0, 0x15a9: 0x00c0, - 0x15aa: 0x00c0, 0x15ab: 0x00c0, - 0x15b0: 0x00c0, 0x15b1: 0x00c0, 0x15b2: 0x00c0, 0x15b3: 0x00c0, 0x15b4: 0x00c0, 0x15b5: 0x00c0, - 0x15b6: 0x00c0, 0x15b7: 0x00c0, 0x15b8: 0x00c0, 0x15b9: 0x00c0, 0x15ba: 0x00c0, 0x15bb: 0x00c0, - 0x15bc: 0x00c0, 0x15bd: 0x00c0, 0x15be: 0x00c0, 0x15bf: 0x00c0, - // Block 0x57, offset 0x15c0 - 0x15c0: 0x00c0, 0x15c1: 0x00c0, 0x15c2: 0x00c0, 0x15c3: 0x00c0, 0x15c4: 0x00c0, 0x15c5: 0x00c0, - 0x15c6: 0x00c0, 0x15c7: 0x00c0, 0x15c8: 0x00c0, 0x15c9: 0x00c0, - 0x15d0: 0x00c0, 0x15d1: 0x00c0, - 0x15d2: 0x00c0, 0x15d3: 0x00c0, 0x15d4: 0x00c0, 0x15d5: 0x00c0, 0x15d6: 0x00c0, 0x15d7: 0x00c0, - 0x15d8: 0x00c0, 0x15d9: 0x00c0, 0x15da: 0x0080, - 0x15de: 0x0080, 0x15df: 0x0080, 0x15e0: 0x0080, 0x15e1: 0x0080, 0x15e2: 0x0080, 0x15e3: 0x0080, - 0x15e4: 0x0080, 0x15e5: 0x0080, 0x15e6: 0x0080, 0x15e7: 0x0080, 0x15e8: 0x0080, 0x15e9: 0x0080, - 0x15ea: 0x0080, 0x15eb: 0x0080, 0x15ec: 0x0080, 0x15ed: 0x0080, 0x15ee: 0x0080, 0x15ef: 0x0080, - 0x15f0: 0x0080, 0x15f1: 0x0080, 0x15f2: 0x0080, 0x15f3: 0x0080, 0x15f4: 0x0080, 0x15f5: 0x0080, - 0x15f6: 0x0080, 0x15f7: 0x0080, 0x15f8: 0x0080, 0x15f9: 0x0080, 0x15fa: 0x0080, 0x15fb: 0x0080, - 0x15fc: 0x0080, 0x15fd: 0x0080, 0x15fe: 0x0080, 0x15ff: 0x0080, - // Block 0x58, offset 0x1600 - 0x1600: 0x00c0, 0x1601: 0x00c0, 0x1602: 0x00c0, 0x1603: 0x00c0, 0x1604: 0x00c0, 0x1605: 0x00c0, - 0x1606: 0x00c0, 0x1607: 0x00c0, 0x1608: 0x00c0, 0x1609: 0x00c0, 0x160a: 0x00c0, 0x160b: 0x00c0, - 0x160c: 0x00c0, 0x160d: 0x00c0, 0x160e: 0x00c0, 0x160f: 0x00c0, 0x1610: 0x00c0, 0x1611: 0x00c0, - 0x1612: 0x00c0, 0x1613: 0x00c0, 0x1614: 0x00c0, 0x1615: 0x00c0, 0x1616: 0x00c0, 0x1617: 0x00c3, - 0x1618: 0x00c3, 0x1619: 0x00c0, 0x161a: 0x00c0, 0x161b: 0x00c3, - 0x161e: 0x0080, 0x161f: 0x0080, 0x1620: 0x00c0, 0x1621: 0x00c0, 0x1622: 0x00c0, 0x1623: 0x00c0, - 0x1624: 0x00c0, 0x1625: 0x00c0, 0x1626: 0x00c0, 0x1627: 0x00c0, 0x1628: 0x00c0, 0x1629: 0x00c0, - 0x162a: 0x00c0, 0x162b: 0x00c0, 0x162c: 0x00c0, 0x162d: 0x00c0, 0x162e: 0x00c0, 0x162f: 0x00c0, - 0x1630: 0x00c0, 0x1631: 0x00c0, 0x1632: 0x00c0, 0x1633: 0x00c0, 0x1634: 0x00c0, 0x1635: 0x00c0, - 0x1636: 0x00c0, 0x1637: 0x00c0, 0x1638: 0x00c0, 0x1639: 0x00c0, 0x163a: 0x00c0, 0x163b: 0x00c0, - 0x163c: 0x00c0, 0x163d: 0x00c0, 0x163e: 0x00c0, 0x163f: 0x00c0, - // Block 0x59, offset 0x1640 - 0x1640: 0x00c0, 0x1641: 0x00c0, 0x1642: 0x00c0, 0x1643: 0x00c0, 0x1644: 0x00c0, 0x1645: 0x00c0, - 0x1646: 0x00c0, 0x1647: 0x00c0, 0x1648: 0x00c0, 0x1649: 0x00c0, 0x164a: 0x00c0, 0x164b: 0x00c0, - 0x164c: 0x00c0, 0x164d: 0x00c0, 0x164e: 0x00c0, 0x164f: 0x00c0, 0x1650: 0x00c0, 0x1651: 0x00c0, - 0x1652: 0x00c0, 0x1653: 0x00c0, 0x1654: 0x00c0, 0x1655: 0x00c0, 0x1656: 0x00c3, 0x1657: 0x00c0, - 0x1658: 0x00c3, 0x1659: 0x00c3, 0x165a: 0x00c3, 0x165b: 0x00c3, 0x165c: 0x00c3, 0x165d: 0x00c3, - 0x165e: 0x00c3, 0x1660: 0x00c6, 0x1661: 0x00c0, 0x1662: 0x00c3, 0x1663: 0x00c0, - 0x1664: 0x00c0, 0x1665: 0x00c3, 0x1666: 0x00c3, 0x1667: 0x00c3, 0x1668: 0x00c3, 0x1669: 0x00c3, - 0x166a: 0x00c3, 0x166b: 0x00c3, 0x166c: 0x00c3, 0x166d: 0x00c0, 0x166e: 0x00c0, 0x166f: 0x00c0, - 0x1670: 0x00c0, 0x1671: 0x00c0, 0x1672: 0x00c0, 0x1673: 0x00c3, 0x1674: 0x00c3, 0x1675: 0x00c3, - 0x1676: 0x00c3, 0x1677: 0x00c3, 0x1678: 0x00c3, 0x1679: 0x00c3, 0x167a: 0x00c3, 0x167b: 0x00c3, - 0x167c: 0x00c3, 0x167f: 0x00c3, - // Block 0x5a, offset 0x1680 - 0x1680: 0x00c0, 0x1681: 0x00c0, 0x1682: 0x00c0, 0x1683: 0x00c0, 0x1684: 0x00c0, 0x1685: 0x00c0, - 0x1686: 0x00c0, 0x1687: 0x00c0, 0x1688: 0x00c0, 0x1689: 0x00c0, - 0x1690: 0x00c0, 0x1691: 0x00c0, - 0x1692: 0x00c0, 0x1693: 0x00c0, 0x1694: 0x00c0, 0x1695: 0x00c0, 0x1696: 0x00c0, 0x1697: 0x00c0, - 0x1698: 0x00c0, 0x1699: 0x00c0, - 0x16a0: 0x0080, 0x16a1: 0x0080, 0x16a2: 0x0080, 0x16a3: 0x0080, - 0x16a4: 0x0080, 0x16a5: 0x0080, 0x16a6: 0x0080, 0x16a7: 0x00c0, 0x16a8: 0x0080, 0x16a9: 0x0080, - 0x16aa: 0x0080, 0x16ab: 0x0080, 0x16ac: 0x0080, 0x16ad: 0x0080, - 0x16b0: 0x00c3, 0x16b1: 0x00c3, 0x16b2: 0x00c3, 0x16b3: 0x00c3, 0x16b4: 0x00c3, 0x16b5: 0x00c3, - 0x16b6: 0x00c3, 0x16b7: 0x00c3, 0x16b8: 0x00c3, 0x16b9: 0x00c3, 0x16ba: 0x00c3, 0x16bb: 0x00c3, - 0x16bc: 0x00c3, 0x16bd: 0x00c3, 0x16be: 0x0083, - // Block 0x5b, offset 0x16c0 - 0x16c0: 0x00c3, 0x16c1: 0x00c3, 0x16c2: 0x00c3, 0x16c3: 0x00c3, 0x16c4: 0x00c0, 0x16c5: 0x00c0, - 0x16c6: 0x00c0, 0x16c7: 0x00c0, 0x16c8: 0x00c0, 0x16c9: 0x00c0, 0x16ca: 0x00c0, 0x16cb: 0x00c0, - 0x16cc: 0x00c0, 0x16cd: 0x00c0, 0x16ce: 0x00c0, 0x16cf: 0x00c0, 0x16d0: 0x00c0, 0x16d1: 0x00c0, - 0x16d2: 0x00c0, 0x16d3: 0x00c0, 0x16d4: 0x00c0, 0x16d5: 0x00c0, 0x16d6: 0x00c0, 0x16d7: 0x00c0, - 0x16d8: 0x00c0, 0x16d9: 0x00c0, 0x16da: 0x00c0, 0x16db: 0x00c0, 0x16dc: 0x00c0, 0x16dd: 0x00c0, - 0x16de: 0x00c0, 0x16df: 0x00c0, 0x16e0: 0x00c0, 0x16e1: 0x00c0, 0x16e2: 0x00c0, 0x16e3: 0x00c0, - 0x16e4: 0x00c0, 0x16e5: 0x00c0, 0x16e6: 0x00c0, 0x16e7: 0x00c0, 0x16e8: 0x00c0, 0x16e9: 0x00c0, - 0x16ea: 0x00c0, 0x16eb: 0x00c0, 0x16ec: 0x00c0, 0x16ed: 0x00c0, 0x16ee: 0x00c0, 0x16ef: 0x00c0, - 0x16f0: 0x00c0, 0x16f1: 0x00c0, 0x16f2: 0x00c0, 0x16f3: 0x00c0, 0x16f4: 0x00c3, 0x16f5: 0x00c0, - 0x16f6: 0x00c3, 0x16f7: 0x00c3, 0x16f8: 0x00c3, 0x16f9: 0x00c3, 0x16fa: 0x00c3, 0x16fb: 0x00c0, - 0x16fc: 0x00c3, 0x16fd: 0x00c0, 0x16fe: 0x00c0, 0x16ff: 0x00c0, - // Block 0x5c, offset 0x1700 - 0x1700: 0x00c0, 0x1701: 0x00c0, 0x1702: 0x00c3, 0x1703: 0x00c0, 0x1704: 0x00c5, 0x1705: 0x00c0, - 0x1706: 0x00c0, 0x1707: 0x00c0, 0x1708: 0x00c0, 0x1709: 0x00c0, 0x170a: 0x00c0, 0x170b: 0x00c0, - 0x1710: 0x00c0, 0x1711: 0x00c0, - 0x1712: 0x00c0, 0x1713: 0x00c0, 0x1714: 0x00c0, 0x1715: 0x00c0, 0x1716: 0x00c0, 0x1717: 0x00c0, - 0x1718: 0x00c0, 0x1719: 0x00c0, 0x171a: 0x0080, 0x171b: 0x0080, 0x171c: 0x0080, 0x171d: 0x0080, - 0x171e: 0x0080, 0x171f: 0x0080, 0x1720: 0x0080, 0x1721: 0x0080, 0x1722: 0x0080, 0x1723: 0x0080, - 0x1724: 0x0080, 0x1725: 0x0080, 0x1726: 0x0080, 0x1727: 0x0080, 0x1728: 0x0080, 0x1729: 0x0080, - 0x172a: 0x0080, 0x172b: 0x00c3, 0x172c: 0x00c3, 0x172d: 0x00c3, 0x172e: 0x00c3, 0x172f: 0x00c3, - 0x1730: 0x00c3, 0x1731: 0x00c3, 0x1732: 0x00c3, 0x1733: 0x00c3, 0x1734: 0x0080, 0x1735: 0x0080, - 0x1736: 0x0080, 0x1737: 0x0080, 0x1738: 0x0080, 0x1739: 0x0080, 0x173a: 0x0080, 0x173b: 0x0080, - 0x173c: 0x0080, - // Block 0x5d, offset 0x1740 - 0x1740: 0x00c3, 0x1741: 0x00c3, 0x1742: 0x00c0, 0x1743: 0x00c0, 0x1744: 0x00c0, 0x1745: 0x00c0, - 0x1746: 0x00c0, 0x1747: 0x00c0, 0x1748: 0x00c0, 0x1749: 0x00c0, 0x174a: 0x00c0, 0x174b: 0x00c0, - 0x174c: 0x00c0, 0x174d: 0x00c0, 0x174e: 0x00c0, 0x174f: 0x00c0, 0x1750: 0x00c0, 0x1751: 0x00c0, - 0x1752: 0x00c0, 0x1753: 0x00c0, 0x1754: 0x00c0, 0x1755: 0x00c0, 0x1756: 0x00c0, 0x1757: 0x00c0, - 0x1758: 0x00c0, 0x1759: 0x00c0, 0x175a: 0x00c0, 0x175b: 0x00c0, 0x175c: 0x00c0, 0x175d: 0x00c0, - 0x175e: 0x00c0, 0x175f: 0x00c0, 0x1760: 0x00c0, 0x1761: 0x00c0, 0x1762: 0x00c3, 0x1763: 0x00c3, - 0x1764: 0x00c3, 0x1765: 0x00c3, 0x1766: 0x00c0, 0x1767: 0x00c0, 0x1768: 0x00c3, 0x1769: 0x00c3, - 0x176a: 0x00c5, 0x176b: 0x00c6, 0x176c: 0x00c3, 0x176d: 0x00c3, 0x176e: 0x00c0, 0x176f: 0x00c0, - 0x1770: 0x00c0, 0x1771: 0x00c0, 0x1772: 0x00c0, 0x1773: 0x00c0, 0x1774: 0x00c0, 0x1775: 0x00c0, - 0x1776: 0x00c0, 0x1777: 0x00c0, 0x1778: 0x00c0, 0x1779: 0x00c0, 0x177a: 0x00c0, 0x177b: 0x00c0, - 0x177c: 0x00c0, 0x177d: 0x00c0, 0x177e: 0x00c0, 0x177f: 0x00c0, - // Block 0x5e, offset 0x1780 - 0x1780: 0x00c0, 0x1781: 0x00c0, 0x1782: 0x00c0, 0x1783: 0x00c0, 0x1784: 0x00c0, 0x1785: 0x00c0, - 0x1786: 0x00c0, 0x1787: 0x00c0, 0x1788: 0x00c0, 0x1789: 0x00c0, 0x178a: 0x00c0, 0x178b: 0x00c0, - 0x178c: 0x00c0, 0x178d: 0x00c0, 0x178e: 0x00c0, 0x178f: 0x00c0, 0x1790: 0x00c0, 0x1791: 0x00c0, - 0x1792: 0x00c0, 0x1793: 0x00c0, 0x1794: 0x00c0, 0x1795: 0x00c0, 0x1796: 0x00c0, 0x1797: 0x00c0, - 0x1798: 0x00c0, 0x1799: 0x00c0, 0x179a: 0x00c0, 0x179b: 0x00c0, 0x179c: 0x00c0, 0x179d: 0x00c0, - 0x179e: 0x00c0, 0x179f: 0x00c0, 0x17a0: 0x00c0, 0x17a1: 0x00c0, 0x17a2: 0x00c0, 0x17a3: 0x00c0, - 0x17a4: 0x00c0, 0x17a5: 0x00c0, 0x17a6: 0x00c3, 0x17a7: 0x00c0, 0x17a8: 0x00c3, 0x17a9: 0x00c3, - 0x17aa: 0x00c0, 0x17ab: 0x00c0, 0x17ac: 0x00c0, 0x17ad: 0x00c3, 0x17ae: 0x00c0, 0x17af: 0x00c3, - 0x17b0: 0x00c3, 0x17b1: 0x00c3, 0x17b2: 0x00c5, 0x17b3: 0x00c5, - 0x17bc: 0x0080, 0x17bd: 0x0080, 0x17be: 0x0080, 0x17bf: 0x0080, - // Block 0x5f, offset 0x17c0 - 0x17c0: 0x00c0, 0x17c1: 0x00c0, 0x17c2: 0x00c0, 0x17c3: 0x00c0, 0x17c4: 0x00c0, 0x17c5: 0x00c0, - 0x17c6: 0x00c0, 0x17c7: 0x00c0, 0x17c8: 0x00c0, 0x17c9: 0x00c0, 0x17ca: 0x00c0, 0x17cb: 0x00c0, - 0x17cc: 0x00c0, 0x17cd: 0x00c0, 0x17ce: 0x00c0, 0x17cf: 0x00c0, 0x17d0: 0x00c0, 0x17d1: 0x00c0, - 0x17d2: 0x00c0, 0x17d3: 0x00c0, 0x17d4: 0x00c0, 0x17d5: 0x00c0, 0x17d6: 0x00c0, 0x17d7: 0x00c0, - 0x17d8: 0x00c0, 0x17d9: 0x00c0, 0x17da: 0x00c0, 0x17db: 0x00c0, 0x17dc: 0x00c0, 0x17dd: 0x00c0, - 0x17de: 0x00c0, 0x17df: 0x00c0, 0x17e0: 0x00c0, 0x17e1: 0x00c0, 0x17e2: 0x00c0, 0x17e3: 0x00c0, - 0x17e4: 0x00c0, 0x17e5: 0x00c0, 0x17e6: 0x00c0, 0x17e7: 0x00c0, 0x17e8: 0x00c0, 0x17e9: 0x00c0, - 0x17ea: 0x00c0, 0x17eb: 0x00c0, 0x17ec: 0x00c3, 0x17ed: 0x00c3, 0x17ee: 0x00c3, 0x17ef: 0x00c3, - 0x17f0: 0x00c3, 0x17f1: 0x00c3, 0x17f2: 0x00c3, 0x17f3: 0x00c3, 0x17f4: 0x00c0, 0x17f5: 0x00c0, - 0x17f6: 0x00c3, 0x17f7: 0x00c3, 0x17fb: 0x0080, - 0x17fc: 0x0080, 0x17fd: 0x0080, 0x17fe: 0x0080, 0x17ff: 0x0080, - // Block 0x60, offset 0x1800 - 0x1800: 0x00c0, 0x1801: 0x00c0, 0x1802: 0x00c0, 0x1803: 0x00c0, 0x1804: 0x00c0, 0x1805: 0x00c0, - 0x1806: 0x00c0, 0x1807: 0x00c0, 0x1808: 0x00c0, 0x1809: 0x00c0, - 0x180d: 0x00c0, 0x180e: 0x00c0, 0x180f: 0x00c0, 0x1810: 0x00c0, 0x1811: 0x00c0, - 0x1812: 0x00c0, 0x1813: 0x00c0, 0x1814: 0x00c0, 0x1815: 0x00c0, 0x1816: 0x00c0, 0x1817: 0x00c0, - 0x1818: 0x00c0, 0x1819: 0x00c0, 0x181a: 0x00c0, 0x181b: 0x00c0, 0x181c: 0x00c0, 0x181d: 0x00c0, - 0x181e: 0x00c0, 0x181f: 0x00c0, 0x1820: 0x00c0, 0x1821: 0x00c0, 0x1822: 0x00c0, 0x1823: 0x00c0, - 0x1824: 0x00c0, 0x1825: 0x00c0, 0x1826: 0x00c0, 0x1827: 0x00c0, 0x1828: 0x00c0, 0x1829: 0x00c0, - 0x182a: 0x00c0, 0x182b: 0x00c0, 0x182c: 0x00c0, 0x182d: 0x00c0, 0x182e: 0x00c0, 0x182f: 0x00c0, - 0x1830: 0x00c0, 0x1831: 0x00c0, 0x1832: 0x00c0, 0x1833: 0x00c0, 0x1834: 0x00c0, 0x1835: 0x00c0, - 0x1836: 0x00c0, 0x1837: 0x00c0, 0x1838: 0x00c0, 0x1839: 0x00c0, 0x183a: 0x00c0, 0x183b: 0x00c0, - 0x183c: 0x00c0, 0x183d: 0x00c0, 0x183e: 0x0080, 0x183f: 0x0080, - // Block 0x61, offset 0x1840 - 0x1840: 0x00c0, 0x1841: 0x00c0, 0x1842: 0x00c0, 0x1843: 0x00c0, 0x1844: 0x00c0, 0x1845: 0x00c0, - 0x1846: 0x00c0, 0x1847: 0x00c0, 0x1848: 0x00c0, - // Block 0x62, offset 0x1880 - 0x1880: 0x0080, 0x1881: 0x0080, 0x1882: 0x0080, 0x1883: 0x0080, 0x1884: 0x0080, 0x1885: 0x0080, - 0x1886: 0x0080, 0x1887: 0x0080, - 0x1890: 0x00c3, 0x1891: 0x00c3, - 0x1892: 0x00c3, 0x1893: 0x0080, 0x1894: 0x00c3, 0x1895: 0x00c3, 0x1896: 0x00c3, 0x1897: 0x00c3, - 0x1898: 0x00c3, 0x1899: 0x00c3, 0x189a: 0x00c3, 0x189b: 0x00c3, 0x189c: 0x00c3, 0x189d: 0x00c3, - 0x189e: 0x00c3, 0x189f: 0x00c3, 0x18a0: 0x00c3, 0x18a1: 0x00c0, 0x18a2: 0x00c3, 0x18a3: 0x00c3, - 0x18a4: 0x00c3, 0x18a5: 0x00c3, 0x18a6: 0x00c3, 0x18a7: 0x00c3, 0x18a8: 0x00c3, 0x18a9: 0x00c0, - 0x18aa: 0x00c0, 0x18ab: 0x00c0, 0x18ac: 0x00c0, 0x18ad: 0x00c3, 0x18ae: 0x00c0, 0x18af: 0x00c0, - 0x18b0: 0x00c0, 0x18b1: 0x00c0, 0x18b2: 0x00c0, 0x18b3: 0x00c0, 0x18b4: 0x00c3, 0x18b5: 0x00c0, - 0x18b6: 0x00c0, 0x18b8: 0x00c3, 0x18b9: 0x00c3, - // Block 0x63, offset 0x18c0 - 0x18c0: 0x00c0, 0x18c1: 0x00c0, 0x18c2: 0x00c0, 0x18c3: 0x00c0, 0x18c4: 0x00c0, 0x18c5: 0x00c0, - 0x18c6: 0x00c0, 0x18c7: 0x00c0, 0x18c8: 0x00c0, 0x18c9: 0x00c0, 0x18ca: 0x00c0, 0x18cb: 0x00c0, - 0x18cc: 0x00c0, 0x18cd: 0x00c0, 0x18ce: 0x00c0, 0x18cf: 0x00c0, 0x18d0: 0x00c0, 0x18d1: 0x00c0, - 0x18d2: 0x00c0, 0x18d3: 0x00c0, 0x18d4: 0x00c0, 0x18d5: 0x00c0, 0x18d6: 0x00c0, 0x18d7: 0x00c0, - 0x18d8: 0x00c0, 0x18d9: 0x00c0, 0x18da: 0x00c0, 0x18db: 0x00c0, 0x18dc: 0x00c0, 0x18dd: 0x00c0, - 0x18de: 0x00c0, 0x18df: 0x00c0, 0x18e0: 0x00c0, 0x18e1: 0x00c0, 0x18e2: 0x00c0, 0x18e3: 0x00c0, - 0x18e4: 0x00c0, 0x18e5: 0x00c0, 0x18e6: 0x00c8, 0x18e7: 0x00c8, 0x18e8: 0x00c8, 0x18e9: 0x00c8, - 0x18ea: 0x00c8, 0x18eb: 0x00c0, 0x18ec: 0x0080, 0x18ed: 0x0080, 0x18ee: 0x0080, 0x18ef: 0x00c0, - 0x18f0: 0x0080, 0x18f1: 0x0080, 0x18f2: 0x0080, 0x18f3: 0x0080, 0x18f4: 0x0080, 0x18f5: 0x0080, - 0x18f6: 0x0080, 0x18f7: 0x0080, 0x18f8: 0x0080, 0x18f9: 0x0080, 0x18fa: 0x0080, 0x18fb: 0x00c0, - 0x18fc: 0x0080, 0x18fd: 0x0080, 0x18fe: 0x0080, 0x18ff: 0x0080, - // Block 0x64, offset 0x1900 - 0x1900: 0x0080, 0x1901: 0x0080, 0x1902: 0x0080, 0x1903: 0x0080, 0x1904: 0x0080, 0x1905: 0x0080, - 0x1906: 0x0080, 0x1907: 0x0080, 0x1908: 0x0080, 0x1909: 0x0080, 0x190a: 0x0080, 0x190b: 0x0080, - 0x190c: 0x0080, 0x190d: 0x0080, 0x190e: 0x00c0, 0x190f: 0x0080, 0x1910: 0x0080, 0x1911: 0x0080, - 0x1912: 0x0080, 0x1913: 0x0080, 0x1914: 0x0080, 0x1915: 0x0080, 0x1916: 0x0080, 0x1917: 0x0080, - 0x1918: 0x0080, 0x1919: 0x0080, 0x191a: 0x0080, 0x191b: 0x0080, 0x191c: 0x0080, 0x191d: 0x0088, - 0x191e: 0x0088, 0x191f: 0x0088, 0x1920: 0x0088, 0x1921: 0x0088, 0x1922: 0x0080, 0x1923: 0x0080, - 0x1924: 0x0080, 0x1925: 0x0080, 0x1926: 0x0088, 0x1927: 0x0088, 0x1928: 0x0088, 0x1929: 0x0088, - 0x192a: 0x0088, 0x192b: 0x00c0, 0x192c: 0x00c0, 0x192d: 0x00c0, 0x192e: 0x00c0, 0x192f: 0x00c0, - 0x1930: 0x00c0, 0x1931: 0x00c0, 0x1932: 0x00c0, 0x1933: 0x00c0, 0x1934: 0x00c0, 0x1935: 0x00c0, - 0x1936: 0x00c0, 0x1937: 0x00c0, 0x1938: 0x0080, 0x1939: 0x00c0, 0x193a: 0x00c0, 0x193b: 0x00c0, - 0x193c: 0x00c0, 0x193d: 0x00c0, 0x193e: 0x00c0, 0x193f: 0x00c0, - // Block 0x65, offset 0x1940 - 0x1940: 0x00c0, 0x1941: 0x00c0, 0x1942: 0x00c0, 0x1943: 0x00c0, 0x1944: 0x00c0, 0x1945: 0x00c0, - 0x1946: 0x00c0, 0x1947: 0x00c0, 0x1948: 0x00c0, 0x1949: 0x00c0, 0x194a: 0x00c0, 0x194b: 0x00c0, - 0x194c: 0x00c0, 0x194d: 0x00c0, 0x194e: 0x00c0, 0x194f: 0x00c0, 0x1950: 0x00c0, 0x1951: 0x00c0, - 0x1952: 0x00c0, 0x1953: 0x00c0, 0x1954: 0x00c0, 0x1955: 0x00c0, 0x1956: 0x00c0, 0x1957: 0x00c0, - 0x1958: 0x00c0, 0x1959: 0x00c0, 0x195a: 0x00c0, 0x195b: 0x0080, 0x195c: 0x0080, 0x195d: 0x0080, - 0x195e: 0x0080, 0x195f: 0x0080, 0x1960: 0x0080, 0x1961: 0x0080, 0x1962: 0x0080, 0x1963: 0x0080, - 0x1964: 0x0080, 0x1965: 0x0080, 0x1966: 0x0080, 0x1967: 0x0080, 0x1968: 0x0080, 0x1969: 0x0080, - 0x196a: 0x0080, 0x196b: 0x0080, 0x196c: 0x0080, 0x196d: 0x0080, 0x196e: 0x0080, 0x196f: 0x0080, - 0x1970: 0x0080, 0x1971: 0x0080, 0x1972: 0x0080, 0x1973: 0x0080, 0x1974: 0x0080, 0x1975: 0x0080, - 0x1976: 0x0080, 0x1977: 0x0080, 0x1978: 0x0080, 0x1979: 0x0080, 0x197a: 0x0080, 0x197b: 0x0080, - 0x197c: 0x0080, 0x197d: 0x0080, 0x197e: 0x0080, 0x197f: 0x0088, - // Block 0x66, offset 0x1980 - 0x1980: 0x00c3, 0x1981: 0x00c3, 0x1982: 0x00c3, 0x1983: 0x00c3, 0x1984: 0x00c3, 0x1985: 0x00c3, - 0x1986: 0x00c3, 0x1987: 0x00c3, 0x1988: 0x00c3, 0x1989: 0x00c3, 0x198a: 0x00c3, 0x198b: 0x00c3, - 0x198c: 0x00c3, 0x198d: 0x00c3, 0x198e: 0x00c3, 0x198f: 0x00c3, 0x1990: 0x00c3, 0x1991: 0x00c3, - 0x1992: 0x00c3, 0x1993: 0x00c3, 0x1994: 0x00c3, 0x1995: 0x00c3, 0x1996: 0x00c3, 0x1997: 0x00c3, - 0x1998: 0x00c3, 0x1999: 0x00c3, 0x199a: 0x00c3, 0x199b: 0x00c3, 0x199c: 0x00c3, 0x199d: 0x00c3, - 0x199e: 0x00c3, 0x199f: 0x00c3, 0x19a0: 0x00c3, 0x19a1: 0x00c3, 0x19a2: 0x00c3, 0x19a3: 0x00c3, - 0x19a4: 0x00c3, 0x19a5: 0x00c3, 0x19a6: 0x00c3, 0x19a7: 0x00c3, 0x19a8: 0x00c3, 0x19a9: 0x00c3, - 0x19aa: 0x00c3, 0x19ab: 0x00c3, 0x19ac: 0x00c3, 0x19ad: 0x00c3, 0x19ae: 0x00c3, 0x19af: 0x00c3, - 0x19b0: 0x00c3, 0x19b1: 0x00c3, 0x19b2: 0x00c3, 0x19b3: 0x00c3, 0x19b4: 0x00c3, 0x19b5: 0x00c3, - 0x19bb: 0x00c3, - 0x19bc: 0x00c3, 0x19bd: 0x00c3, 0x19be: 0x00c3, 0x19bf: 0x00c3, - // Block 0x67, offset 0x19c0 - 0x19c0: 0x00c0, 0x19c1: 0x00c0, 0x19c2: 0x00c0, 0x19c3: 0x00c0, 0x19c4: 0x00c0, 0x19c5: 0x00c0, - 0x19c6: 0x00c0, 0x19c7: 0x00c0, 0x19c8: 0x00c0, 0x19c9: 0x00c0, 0x19ca: 0x00c0, 0x19cb: 0x00c0, - 0x19cc: 0x00c0, 0x19cd: 0x00c0, 0x19ce: 0x00c0, 0x19cf: 0x00c0, 0x19d0: 0x00c0, 0x19d1: 0x00c0, - 0x19d2: 0x00c0, 0x19d3: 0x00c0, 0x19d4: 0x00c0, 0x19d5: 0x00c0, 0x19d6: 0x00c0, 0x19d7: 0x00c0, - 0x19d8: 0x00c0, 0x19d9: 0x00c0, 0x19da: 0x0080, 0x19db: 0x0080, 0x19dc: 0x00c0, 0x19dd: 0x00c0, - 0x19de: 0x00c0, 0x19df: 0x00c0, 0x19e0: 0x00c0, 0x19e1: 0x00c0, 0x19e2: 0x00c0, 0x19e3: 0x00c0, - 0x19e4: 0x00c0, 0x19e5: 0x00c0, 0x19e6: 0x00c0, 0x19e7: 0x00c0, 0x19e8: 0x00c0, 0x19e9: 0x00c0, - 0x19ea: 0x00c0, 0x19eb: 0x00c0, 0x19ec: 0x00c0, 0x19ed: 0x00c0, 0x19ee: 0x00c0, 0x19ef: 0x00c0, - 0x19f0: 0x00c0, 0x19f1: 0x00c0, 0x19f2: 0x00c0, 0x19f3: 0x00c0, 0x19f4: 0x00c0, 0x19f5: 0x00c0, - 0x19f6: 0x00c0, 0x19f7: 0x00c0, 0x19f8: 0x00c0, 0x19f9: 0x00c0, 0x19fa: 0x00c0, 0x19fb: 0x00c0, - 0x19fc: 0x00c0, 0x19fd: 0x00c0, 0x19fe: 0x00c0, 0x19ff: 0x00c0, - // Block 0x68, offset 0x1a00 - 0x1a00: 0x00c8, 0x1a01: 0x00c8, 0x1a02: 0x00c8, 0x1a03: 0x00c8, 0x1a04: 0x00c8, 0x1a05: 0x00c8, - 0x1a06: 0x00c8, 0x1a07: 0x00c8, 0x1a08: 0x00c8, 0x1a09: 0x00c8, 0x1a0a: 0x00c8, 0x1a0b: 0x00c8, - 0x1a0c: 0x00c8, 0x1a0d: 0x00c8, 0x1a0e: 0x00c8, 0x1a0f: 0x00c8, 0x1a10: 0x00c8, 0x1a11: 0x00c8, - 0x1a12: 0x00c8, 0x1a13: 0x00c8, 0x1a14: 0x00c8, 0x1a15: 0x00c8, - 0x1a18: 0x00c8, 0x1a19: 0x00c8, 0x1a1a: 0x00c8, 0x1a1b: 0x00c8, 0x1a1c: 0x00c8, 0x1a1d: 0x00c8, - 0x1a20: 0x00c8, 0x1a21: 0x00c8, 0x1a22: 0x00c8, 0x1a23: 0x00c8, - 0x1a24: 0x00c8, 0x1a25: 0x00c8, 0x1a26: 0x00c8, 0x1a27: 0x00c8, 0x1a28: 0x00c8, 0x1a29: 0x00c8, - 0x1a2a: 0x00c8, 0x1a2b: 0x00c8, 0x1a2c: 0x00c8, 0x1a2d: 0x00c8, 0x1a2e: 0x00c8, 0x1a2f: 0x00c8, - 0x1a30: 0x00c8, 0x1a31: 0x00c8, 0x1a32: 0x00c8, 0x1a33: 0x00c8, 0x1a34: 0x00c8, 0x1a35: 0x00c8, - 0x1a36: 0x00c8, 0x1a37: 0x00c8, 0x1a38: 0x00c8, 0x1a39: 0x00c8, 0x1a3a: 0x00c8, 0x1a3b: 0x00c8, - 0x1a3c: 0x00c8, 0x1a3d: 0x00c8, 0x1a3e: 0x00c8, 0x1a3f: 0x00c8, - // Block 0x69, offset 0x1a40 - 0x1a40: 0x00c8, 0x1a41: 0x00c8, 0x1a42: 0x00c8, 0x1a43: 0x00c8, 0x1a44: 0x00c8, 0x1a45: 0x00c8, - 0x1a48: 0x00c8, 0x1a49: 0x00c8, 0x1a4a: 0x00c8, 0x1a4b: 0x00c8, - 0x1a4c: 0x00c8, 0x1a4d: 0x00c8, 0x1a50: 0x00c8, 0x1a51: 0x00c8, - 0x1a52: 0x00c8, 0x1a53: 0x00c8, 0x1a54: 0x00c8, 0x1a55: 0x00c8, 0x1a56: 0x00c8, 0x1a57: 0x00c8, - 0x1a59: 0x00c8, 0x1a5b: 0x00c8, 0x1a5d: 0x00c8, - 0x1a5f: 0x00c8, 0x1a60: 0x00c8, 0x1a61: 0x00c8, 0x1a62: 0x00c8, 0x1a63: 0x00c8, - 0x1a64: 0x00c8, 0x1a65: 0x00c8, 0x1a66: 0x00c8, 0x1a67: 0x00c8, 0x1a68: 0x00c8, 0x1a69: 0x00c8, - 0x1a6a: 0x00c8, 0x1a6b: 0x00c8, 0x1a6c: 0x00c8, 0x1a6d: 0x00c8, 0x1a6e: 0x00c8, 0x1a6f: 0x00c8, - 0x1a70: 0x00c8, 0x1a71: 0x0088, 0x1a72: 0x00c8, 0x1a73: 0x0088, 0x1a74: 0x00c8, 0x1a75: 0x0088, - 0x1a76: 0x00c8, 0x1a77: 0x0088, 0x1a78: 0x00c8, 0x1a79: 0x0088, 0x1a7a: 0x00c8, 0x1a7b: 0x0088, - 0x1a7c: 0x00c8, 0x1a7d: 0x0088, - // Block 0x6a, offset 0x1a80 - 0x1a80: 0x00c8, 0x1a81: 0x00c8, 0x1a82: 0x00c8, 0x1a83: 0x00c8, 0x1a84: 0x00c8, 0x1a85: 0x00c8, - 0x1a86: 0x00c8, 0x1a87: 0x00c8, 0x1a88: 0x0088, 0x1a89: 0x0088, 0x1a8a: 0x0088, 0x1a8b: 0x0088, - 0x1a8c: 0x0088, 0x1a8d: 0x0088, 0x1a8e: 0x0088, 0x1a8f: 0x0088, 0x1a90: 0x00c8, 0x1a91: 0x00c8, - 0x1a92: 0x00c8, 0x1a93: 0x00c8, 0x1a94: 0x00c8, 0x1a95: 0x00c8, 0x1a96: 0x00c8, 0x1a97: 0x00c8, - 0x1a98: 0x0088, 0x1a99: 0x0088, 0x1a9a: 0x0088, 0x1a9b: 0x0088, 0x1a9c: 0x0088, 0x1a9d: 0x0088, - 0x1a9e: 0x0088, 0x1a9f: 0x0088, 0x1aa0: 0x00c8, 0x1aa1: 0x00c8, 0x1aa2: 0x00c8, 0x1aa3: 0x00c8, - 0x1aa4: 0x00c8, 0x1aa5: 0x00c8, 0x1aa6: 0x00c8, 0x1aa7: 0x00c8, 0x1aa8: 0x0088, 0x1aa9: 0x0088, - 0x1aaa: 0x0088, 0x1aab: 0x0088, 0x1aac: 0x0088, 0x1aad: 0x0088, 0x1aae: 0x0088, 0x1aaf: 0x0088, - 0x1ab0: 0x00c8, 0x1ab1: 0x00c8, 0x1ab2: 0x00c8, 0x1ab3: 0x00c8, 0x1ab4: 0x00c8, - 0x1ab6: 0x00c8, 0x1ab7: 0x00c8, 0x1ab8: 0x00c8, 0x1ab9: 0x00c8, 0x1aba: 0x00c8, 0x1abb: 0x0088, - 0x1abc: 0x0088, 0x1abd: 0x0088, 0x1abe: 0x0088, 0x1abf: 0x0088, - // Block 0x6b, offset 0x1ac0 - 0x1ac0: 0x0088, 0x1ac1: 0x0088, 0x1ac2: 0x00c8, 0x1ac3: 0x00c8, 0x1ac4: 0x00c8, - 0x1ac6: 0x00c8, 0x1ac7: 0x00c8, 0x1ac8: 0x00c8, 0x1ac9: 0x0088, 0x1aca: 0x00c8, 0x1acb: 0x0088, - 0x1acc: 0x0088, 0x1acd: 0x0088, 0x1ace: 0x0088, 0x1acf: 0x0088, 0x1ad0: 0x00c8, 0x1ad1: 0x00c8, - 0x1ad2: 0x00c8, 0x1ad3: 0x0088, 0x1ad6: 0x00c8, 0x1ad7: 0x00c8, - 0x1ad8: 0x00c8, 0x1ad9: 0x00c8, 0x1ada: 0x00c8, 0x1adb: 0x0088, 0x1add: 0x0088, - 0x1ade: 0x0088, 0x1adf: 0x0088, 0x1ae0: 0x00c8, 0x1ae1: 0x00c8, 0x1ae2: 0x00c8, 0x1ae3: 0x0088, - 0x1ae4: 0x00c8, 0x1ae5: 0x00c8, 0x1ae6: 0x00c8, 0x1ae7: 0x00c8, 0x1ae8: 0x00c8, 0x1ae9: 0x00c8, - 0x1aea: 0x00c8, 0x1aeb: 0x0088, 0x1aec: 0x00c8, 0x1aed: 0x0088, 0x1aee: 0x0088, 0x1aef: 0x0088, - 0x1af2: 0x00c8, 0x1af3: 0x00c8, 0x1af4: 0x00c8, - 0x1af6: 0x00c8, 0x1af7: 0x00c8, 0x1af8: 0x00c8, 0x1af9: 0x0088, 0x1afa: 0x00c8, 0x1afb: 0x0088, - 0x1afc: 0x0088, 0x1afd: 0x0088, 0x1afe: 0x0088, - // Block 0x6c, offset 0x1b00 - 0x1b00: 0x0080, 0x1b01: 0x0080, 0x1b02: 0x0080, 0x1b03: 0x0080, 0x1b04: 0x0080, 0x1b05: 0x0080, - 0x1b06: 0x0080, 0x1b07: 0x0080, 0x1b08: 0x0080, 0x1b09: 0x0080, 0x1b0a: 0x0080, 0x1b0b: 0x0040, - 0x1b0c: 0x004d, 0x1b0d: 0x004e, 0x1b0e: 0x0040, 0x1b0f: 0x0040, 0x1b10: 0x0080, 0x1b11: 0x0080, - 0x1b12: 0x0080, 0x1b13: 0x0080, 0x1b14: 0x0080, 0x1b15: 0x0080, 0x1b16: 0x0080, 0x1b17: 0x0080, - 0x1b18: 0x0080, 0x1b19: 0x0080, 0x1b1a: 0x0080, 0x1b1b: 0x0080, 0x1b1c: 0x0080, 0x1b1d: 0x0080, - 0x1b1e: 0x0080, 0x1b1f: 0x0080, 0x1b20: 0x0080, 0x1b21: 0x0080, 0x1b22: 0x0080, 0x1b23: 0x0080, - 0x1b24: 0x0080, 0x1b25: 0x0080, 0x1b26: 0x0080, 0x1b27: 0x0080, 0x1b28: 0x0040, 0x1b29: 0x0040, - 0x1b2a: 0x0040, 0x1b2b: 0x0040, 0x1b2c: 0x0040, 0x1b2d: 0x0040, 0x1b2e: 0x0040, 0x1b2f: 0x0080, - 0x1b30: 0x0080, 0x1b31: 0x0080, 0x1b32: 0x0080, 0x1b33: 0x0080, 0x1b34: 0x0080, 0x1b35: 0x0080, - 0x1b36: 0x0080, 0x1b37: 0x0080, 0x1b38: 0x0080, 0x1b39: 0x0080, 0x1b3a: 0x0080, 0x1b3b: 0x0080, - 0x1b3c: 0x0080, 0x1b3d: 0x0080, 0x1b3e: 0x0080, 0x1b3f: 0x0080, - // Block 0x6d, offset 0x1b40 - 0x1b40: 0x0080, 0x1b41: 0x0080, 0x1b42: 0x0080, 0x1b43: 0x0080, 0x1b44: 0x0080, 0x1b45: 0x0080, - 0x1b46: 0x0080, 0x1b47: 0x0080, 0x1b48: 0x0080, 0x1b49: 0x0080, 0x1b4a: 0x0080, 0x1b4b: 0x0080, - 0x1b4c: 0x0080, 0x1b4d: 0x0080, 0x1b4e: 0x0080, 0x1b4f: 0x0080, 0x1b50: 0x0080, 0x1b51: 0x0080, - 0x1b52: 0x0080, 0x1b53: 0x0080, 0x1b54: 0x0080, 0x1b55: 0x0080, 0x1b56: 0x0080, 0x1b57: 0x0080, - 0x1b58: 0x0080, 0x1b59: 0x0080, 0x1b5a: 0x0080, 0x1b5b: 0x0080, 0x1b5c: 0x0080, 0x1b5d: 0x0080, - 0x1b5e: 0x0080, 0x1b5f: 0x0080, 0x1b60: 0x0040, 0x1b61: 0x0040, 0x1b62: 0x0040, 0x1b63: 0x0040, - 0x1b64: 0x0040, 0x1b66: 0x0040, 0x1b67: 0x0040, 0x1b68: 0x0040, 0x1b69: 0x0040, - 0x1b6a: 0x0040, 0x1b6b: 0x0040, 0x1b6c: 0x0040, 0x1b6d: 0x0040, 0x1b6e: 0x0040, 0x1b6f: 0x0040, - 0x1b70: 0x0080, 0x1b71: 0x0080, 0x1b74: 0x0080, 0x1b75: 0x0080, - 0x1b76: 0x0080, 0x1b77: 0x0080, 0x1b78: 0x0080, 0x1b79: 0x0080, 0x1b7a: 0x0080, 0x1b7b: 0x0080, - 0x1b7c: 0x0080, 0x1b7d: 0x0080, 0x1b7e: 0x0080, 0x1b7f: 0x0080, - // Block 0x6e, offset 0x1b80 - 0x1b80: 0x0080, 0x1b81: 0x0080, 0x1b82: 0x0080, 0x1b83: 0x0080, 0x1b84: 0x0080, 0x1b85: 0x0080, - 0x1b86: 0x0080, 0x1b87: 0x0080, 0x1b88: 0x0080, 0x1b89: 0x0080, 0x1b8a: 0x0080, 0x1b8b: 0x0080, - 0x1b8c: 0x0080, 0x1b8d: 0x0080, 0x1b8e: 0x0080, 0x1b90: 0x0080, 0x1b91: 0x0080, - 0x1b92: 0x0080, 0x1b93: 0x0080, 0x1b94: 0x0080, 0x1b95: 0x0080, 0x1b96: 0x0080, 0x1b97: 0x0080, - 0x1b98: 0x0080, 0x1b99: 0x0080, 0x1b9a: 0x0080, 0x1b9b: 0x0080, 0x1b9c: 0x0080, - 0x1ba0: 0x0080, 0x1ba1: 0x0080, 0x1ba2: 0x0080, 0x1ba3: 0x0080, - 0x1ba4: 0x0080, 0x1ba5: 0x0080, 0x1ba6: 0x0080, 0x1ba7: 0x0080, 0x1ba8: 0x0080, 0x1ba9: 0x0080, - 0x1baa: 0x0080, 0x1bab: 0x0080, 0x1bac: 0x0080, 0x1bad: 0x0080, 0x1bae: 0x0080, 0x1baf: 0x0080, - 0x1bb0: 0x0080, 0x1bb1: 0x0080, 0x1bb2: 0x0080, 0x1bb3: 0x0080, 0x1bb4: 0x0080, 0x1bb5: 0x0080, - 0x1bb6: 0x0080, 0x1bb7: 0x0080, 0x1bb8: 0x0080, 0x1bb9: 0x0080, 0x1bba: 0x0080, 0x1bbb: 0x0080, - 0x1bbc: 0x0080, 0x1bbd: 0x0080, 0x1bbe: 0x0080, - // Block 0x6f, offset 0x1bc0 - 0x1bd0: 0x00c3, 0x1bd1: 0x00c3, - 0x1bd2: 0x00c3, 0x1bd3: 0x00c3, 0x1bd4: 0x00c3, 0x1bd5: 0x00c3, 0x1bd6: 0x00c3, 0x1bd7: 0x00c3, - 0x1bd8: 0x00c3, 0x1bd9: 0x00c3, 0x1bda: 0x00c3, 0x1bdb: 0x00c3, 0x1bdc: 0x00c3, 0x1bdd: 0x0083, - 0x1bde: 0x0083, 0x1bdf: 0x0083, 0x1be0: 0x0083, 0x1be1: 0x00c3, 0x1be2: 0x0083, 0x1be3: 0x0083, - 0x1be4: 0x0083, 0x1be5: 0x00c3, 0x1be6: 0x00c3, 0x1be7: 0x00c3, 0x1be8: 0x00c3, 0x1be9: 0x00c3, - 0x1bea: 0x00c3, 0x1beb: 0x00c3, 0x1bec: 0x00c3, 0x1bed: 0x00c3, 0x1bee: 0x00c3, 0x1bef: 0x00c3, - 0x1bf0: 0x00c3, - // Block 0x70, offset 0x1c00 - 0x1c00: 0x0080, 0x1c01: 0x0080, 0x1c02: 0x0080, 0x1c03: 0x0080, 0x1c04: 0x0080, 0x1c05: 0x0080, - 0x1c06: 0x0080, 0x1c07: 0x0080, 0x1c08: 0x0080, 0x1c09: 0x0080, 0x1c0a: 0x0080, 0x1c0b: 0x0080, - 0x1c0c: 0x0080, 0x1c0d: 0x0080, 0x1c0e: 0x0080, 0x1c0f: 0x0080, 0x1c10: 0x0080, 0x1c11: 0x0080, - 0x1c12: 0x0080, 0x1c13: 0x0080, 0x1c14: 0x0080, 0x1c15: 0x0080, 0x1c16: 0x0080, 0x1c17: 0x0080, - 0x1c18: 0x0080, 0x1c19: 0x0080, 0x1c1a: 0x0080, 0x1c1b: 0x0080, 0x1c1c: 0x0080, 0x1c1d: 0x0080, - 0x1c1e: 0x0080, 0x1c1f: 0x0080, 0x1c20: 0x0080, 0x1c21: 0x0080, 0x1c22: 0x0080, 0x1c23: 0x0080, - 0x1c24: 0x0080, 0x1c25: 0x0080, 0x1c26: 0x0088, 0x1c27: 0x0080, 0x1c28: 0x0080, 0x1c29: 0x0080, - 0x1c2a: 0x0080, 0x1c2b: 0x0080, 0x1c2c: 0x0080, 0x1c2d: 0x0080, 0x1c2e: 0x0080, 0x1c2f: 0x0080, - 0x1c30: 0x0080, 0x1c31: 0x0080, 0x1c32: 0x00c0, 0x1c33: 0x0080, 0x1c34: 0x0080, 0x1c35: 0x0080, - 0x1c36: 0x0080, 0x1c37: 0x0080, 0x1c38: 0x0080, 0x1c39: 0x0080, 0x1c3a: 0x0080, 0x1c3b: 0x0080, - 0x1c3c: 0x0080, 0x1c3d: 0x0080, 0x1c3e: 0x0080, 0x1c3f: 0x0080, - // Block 0x71, offset 0x1c40 - 0x1c40: 0x0080, 0x1c41: 0x0080, 0x1c42: 0x0080, 0x1c43: 0x0080, 0x1c44: 0x0080, 0x1c45: 0x0080, - 0x1c46: 0x0080, 0x1c47: 0x0080, 0x1c48: 0x0080, 0x1c49: 0x0080, 0x1c4a: 0x0080, 0x1c4b: 0x0080, - 0x1c4c: 0x0080, 0x1c4d: 0x0080, 0x1c4e: 0x00c0, 0x1c4f: 0x0080, 0x1c50: 0x0080, 0x1c51: 0x0080, - 0x1c52: 0x0080, 0x1c53: 0x0080, 0x1c54: 0x0080, 0x1c55: 0x0080, 0x1c56: 0x0080, 0x1c57: 0x0080, - 0x1c58: 0x0080, 0x1c59: 0x0080, 0x1c5a: 0x0080, 0x1c5b: 0x0080, 0x1c5c: 0x0080, 0x1c5d: 0x0080, - 0x1c5e: 0x0080, 0x1c5f: 0x0080, 0x1c60: 0x0080, 0x1c61: 0x0080, 0x1c62: 0x0080, 0x1c63: 0x0080, - 0x1c64: 0x0080, 0x1c65: 0x0080, 0x1c66: 0x0080, 0x1c67: 0x0080, 0x1c68: 0x0080, 0x1c69: 0x0080, - 0x1c6a: 0x0080, 0x1c6b: 0x0080, 0x1c6c: 0x0080, 0x1c6d: 0x0080, 0x1c6e: 0x0080, 0x1c6f: 0x0080, - 0x1c70: 0x0080, 0x1c71: 0x0080, 0x1c72: 0x0080, 0x1c73: 0x0080, 0x1c74: 0x0080, 0x1c75: 0x0080, - 0x1c76: 0x0080, 0x1c77: 0x0080, 0x1c78: 0x0080, 0x1c79: 0x0080, 0x1c7a: 0x0080, 0x1c7b: 0x0080, - 0x1c7c: 0x0080, 0x1c7d: 0x0080, 0x1c7e: 0x0080, 0x1c7f: 0x0080, - // Block 0x72, offset 0x1c80 - 0x1c80: 0x0080, 0x1c81: 0x0080, 0x1c82: 0x0080, 0x1c83: 0x00c0, 0x1c84: 0x00c0, 0x1c85: 0x0080, - 0x1c86: 0x0080, 0x1c87: 0x0080, 0x1c88: 0x0080, 0x1c89: 0x0080, 0x1c8a: 0x0080, 0x1c8b: 0x0080, - 0x1c90: 0x0080, 0x1c91: 0x0080, - 0x1c92: 0x0080, 0x1c93: 0x0080, 0x1c94: 0x0080, 0x1c95: 0x0080, 0x1c96: 0x0080, 0x1c97: 0x0080, - 0x1c98: 0x0080, 0x1c99: 0x0080, 0x1c9a: 0x0080, 0x1c9b: 0x0080, 0x1c9c: 0x0080, 0x1c9d: 0x0080, - 0x1c9e: 0x0080, 0x1c9f: 0x0080, 0x1ca0: 0x0080, 0x1ca1: 0x0080, 0x1ca2: 0x0080, 0x1ca3: 0x0080, - 0x1ca4: 0x0080, 0x1ca5: 0x0080, 0x1ca6: 0x0080, 0x1ca7: 0x0080, 0x1ca8: 0x0080, 0x1ca9: 0x0080, - 0x1caa: 0x0080, 0x1cab: 0x0080, 0x1cac: 0x0080, 0x1cad: 0x0080, 0x1cae: 0x0080, 0x1caf: 0x0080, - 0x1cb0: 0x0080, 0x1cb1: 0x0080, 0x1cb2: 0x0080, 0x1cb3: 0x0080, 0x1cb4: 0x0080, 0x1cb5: 0x0080, - 0x1cb6: 0x0080, 0x1cb7: 0x0080, 0x1cb8: 0x0080, 0x1cb9: 0x0080, 0x1cba: 0x0080, 0x1cbb: 0x0080, - 0x1cbc: 0x0080, 0x1cbd: 0x0080, 0x1cbe: 0x0080, 0x1cbf: 0x0080, - // Block 0x73, offset 0x1cc0 - 0x1cc0: 0x0080, 0x1cc1: 0x0080, 0x1cc2: 0x0080, 0x1cc3: 0x0080, 0x1cc4: 0x0080, 0x1cc5: 0x0080, - 0x1cc6: 0x0080, 0x1cc7: 0x0080, 0x1cc8: 0x0080, 0x1cc9: 0x0080, 0x1cca: 0x0080, 0x1ccb: 0x0080, - 0x1ccc: 0x0080, 0x1ccd: 0x0080, 0x1cce: 0x0080, 0x1ccf: 0x0080, 0x1cd0: 0x0080, 0x1cd1: 0x0080, - 0x1cd2: 0x0080, 0x1cd3: 0x0080, 0x1cd4: 0x0080, 0x1cd5: 0x0080, 0x1cd6: 0x0080, 0x1cd7: 0x0080, - 0x1cd8: 0x0080, 0x1cd9: 0x0080, 0x1cda: 0x0080, 0x1cdb: 0x0080, 0x1cdc: 0x0080, 0x1cdd: 0x0080, - 0x1cde: 0x0080, 0x1cdf: 0x0080, 0x1ce0: 0x0080, 0x1ce1: 0x0080, 0x1ce2: 0x0080, 0x1ce3: 0x0080, - 0x1ce4: 0x0080, 0x1ce5: 0x0080, 0x1ce6: 0x0080, 0x1ce7: 0x0080, 0x1ce8: 0x0080, 0x1ce9: 0x0080, - 0x1cea: 0x0080, 0x1ceb: 0x0080, 0x1cec: 0x0080, 0x1ced: 0x0080, 0x1cee: 0x0080, 0x1cef: 0x0080, - 0x1cf0: 0x0080, 0x1cf1: 0x0080, 0x1cf2: 0x0080, 0x1cf3: 0x0080, 0x1cf4: 0x0080, 0x1cf5: 0x0080, - 0x1cf6: 0x0080, 0x1cf7: 0x0080, 0x1cf8: 0x0080, 0x1cf9: 0x0080, 0x1cfa: 0x0080, 0x1cfb: 0x0080, - 0x1cfc: 0x0080, 0x1cfd: 0x0080, 0x1cfe: 0x0080, 0x1cff: 0x0080, - // Block 0x74, offset 0x1d00 - 0x1d00: 0x0080, 0x1d01: 0x0080, 0x1d02: 0x0080, 0x1d03: 0x0080, 0x1d04: 0x0080, 0x1d05: 0x0080, - 0x1d06: 0x0080, 0x1d07: 0x0080, 0x1d08: 0x0080, 0x1d09: 0x0080, 0x1d0a: 0x0080, 0x1d0b: 0x0080, - 0x1d0c: 0x0080, 0x1d0d: 0x0080, 0x1d0e: 0x0080, 0x1d0f: 0x0080, 0x1d10: 0x0080, 0x1d11: 0x0080, - 0x1d12: 0x0080, 0x1d13: 0x0080, 0x1d14: 0x0080, 0x1d15: 0x0080, 0x1d16: 0x0080, 0x1d17: 0x0080, - 0x1d18: 0x0080, 0x1d19: 0x0080, 0x1d1a: 0x0080, 0x1d1b: 0x0080, 0x1d1c: 0x0080, 0x1d1d: 0x0080, - 0x1d1e: 0x0080, 0x1d1f: 0x0080, 0x1d20: 0x0080, 0x1d21: 0x0080, 0x1d22: 0x0080, 0x1d23: 0x0080, - 0x1d24: 0x0080, 0x1d25: 0x0080, 0x1d26: 0x0080, 0x1d27: 0x0080, 0x1d28: 0x0080, 0x1d29: 0x0080, - 0x1d2a: 0x0080, 0x1d2b: 0x0080, 0x1d2c: 0x0080, 0x1d2d: 0x0080, 0x1d2e: 0x0080, 0x1d2f: 0x0080, - 0x1d30: 0x0080, 0x1d31: 0x0080, 0x1d32: 0x0080, 0x1d33: 0x0080, 0x1d34: 0x0080, 0x1d35: 0x0080, - 0x1d36: 0x0080, 0x1d37: 0x0080, 0x1d38: 0x0080, 0x1d39: 0x0080, 0x1d3a: 0x0080, 0x1d3b: 0x0080, - 0x1d3c: 0x0080, 0x1d3d: 0x0080, 0x1d3e: 0x0080, - // Block 0x75, offset 0x1d40 - 0x1d40: 0x0080, 0x1d41: 0x0080, 0x1d42: 0x0080, 0x1d43: 0x0080, 0x1d44: 0x0080, 0x1d45: 0x0080, - 0x1d46: 0x0080, 0x1d47: 0x0080, 0x1d48: 0x0080, 0x1d49: 0x0080, 0x1d4a: 0x0080, 0x1d4b: 0x0080, - 0x1d4c: 0x0080, 0x1d4d: 0x0080, 0x1d4e: 0x0080, 0x1d4f: 0x0080, 0x1d50: 0x0080, 0x1d51: 0x0080, - 0x1d52: 0x0080, 0x1d53: 0x0080, 0x1d54: 0x0080, 0x1d55: 0x0080, 0x1d56: 0x0080, 0x1d57: 0x0080, - 0x1d58: 0x0080, 0x1d59: 0x0080, 0x1d5a: 0x0080, 0x1d5b: 0x0080, 0x1d5c: 0x0080, 0x1d5d: 0x0080, - 0x1d5e: 0x0080, 0x1d5f: 0x0080, 0x1d60: 0x0080, 0x1d61: 0x0080, 0x1d62: 0x0080, 0x1d63: 0x0080, - 0x1d64: 0x0080, 0x1d65: 0x0080, 0x1d66: 0x0080, - // Block 0x76, offset 0x1d80 - 0x1d80: 0x0080, 0x1d81: 0x0080, 0x1d82: 0x0080, 0x1d83: 0x0080, 0x1d84: 0x0080, 0x1d85: 0x0080, - 0x1d86: 0x0080, 0x1d87: 0x0080, 0x1d88: 0x0080, 0x1d89: 0x0080, 0x1d8a: 0x0080, - 0x1da0: 0x0080, 0x1da1: 0x0080, 0x1da2: 0x0080, 0x1da3: 0x0080, - 0x1da4: 0x0080, 0x1da5: 0x0080, 0x1da6: 0x0080, 0x1da7: 0x0080, 0x1da8: 0x0080, 0x1da9: 0x0080, - 0x1daa: 0x0080, 0x1dab: 0x0080, 0x1dac: 0x0080, 0x1dad: 0x0080, 0x1dae: 0x0080, 0x1daf: 0x0080, - 0x1db0: 0x0080, 0x1db1: 0x0080, 0x1db2: 0x0080, 0x1db3: 0x0080, 0x1db4: 0x0080, 0x1db5: 0x0080, - 0x1db6: 0x0080, 0x1db7: 0x0080, 0x1db8: 0x0080, 0x1db9: 0x0080, 0x1dba: 0x0080, 0x1dbb: 0x0080, - 0x1dbc: 0x0080, 0x1dbd: 0x0080, 0x1dbe: 0x0080, 0x1dbf: 0x0080, - // Block 0x77, offset 0x1dc0 - 0x1dc0: 0x0080, 0x1dc1: 0x0080, 0x1dc2: 0x0080, 0x1dc3: 0x0080, 0x1dc4: 0x0080, 0x1dc5: 0x0080, - 0x1dc6: 0x0080, 0x1dc7: 0x0080, 0x1dc8: 0x0080, 0x1dc9: 0x0080, 0x1dca: 0x0080, 0x1dcb: 0x0080, - 0x1dcc: 0x0080, 0x1dcd: 0x0080, 0x1dce: 0x0080, 0x1dcf: 0x0080, 0x1dd0: 0x0080, 0x1dd1: 0x0080, - 0x1dd2: 0x0080, 0x1dd3: 0x0080, 0x1dd4: 0x0080, 0x1dd5: 0x0080, 0x1dd6: 0x0080, 0x1dd7: 0x0080, - 0x1dd8: 0x0080, 0x1dd9: 0x0080, 0x1dda: 0x0080, 0x1ddb: 0x0080, 0x1ddc: 0x0080, 0x1ddd: 0x0080, - 0x1dde: 0x0080, 0x1ddf: 0x0080, 0x1de0: 0x0080, 0x1de1: 0x0080, 0x1de2: 0x0080, 0x1de3: 0x0080, - 0x1de4: 0x0080, 0x1de5: 0x0080, 0x1de6: 0x0080, 0x1de7: 0x0080, 0x1de8: 0x0080, 0x1de9: 0x0080, - 0x1dea: 0x0080, 0x1deb: 0x0080, 0x1dec: 0x0080, 0x1ded: 0x0080, 0x1dee: 0x0080, 0x1def: 0x0080, - 0x1df0: 0x0080, 0x1df1: 0x0080, 0x1df2: 0x0080, 0x1df3: 0x0080, - 0x1df6: 0x0080, 0x1df7: 0x0080, 0x1df8: 0x0080, 0x1df9: 0x0080, 0x1dfa: 0x0080, 0x1dfb: 0x0080, - 0x1dfc: 0x0080, 0x1dfd: 0x0080, 0x1dfe: 0x0080, 0x1dff: 0x0080, - // Block 0x78, offset 0x1e00 - 0x1e00: 0x0080, 0x1e01: 0x0080, 0x1e02: 0x0080, 0x1e03: 0x0080, 0x1e04: 0x0080, 0x1e05: 0x0080, - 0x1e06: 0x0080, 0x1e07: 0x0080, 0x1e08: 0x0080, 0x1e09: 0x0080, 0x1e0a: 0x0080, 0x1e0b: 0x0080, - 0x1e0c: 0x0080, 0x1e0d: 0x0080, 0x1e0e: 0x0080, 0x1e0f: 0x0080, 0x1e10: 0x0080, 0x1e11: 0x0080, - 0x1e12: 0x0080, 0x1e13: 0x0080, 0x1e14: 0x0080, 0x1e15: 0x0080, - 0x1e18: 0x0080, 0x1e19: 0x0080, 0x1e1a: 0x0080, 0x1e1b: 0x0080, 0x1e1c: 0x0080, 0x1e1d: 0x0080, - 0x1e1e: 0x0080, 0x1e1f: 0x0080, 0x1e20: 0x0080, 0x1e21: 0x0080, 0x1e22: 0x0080, 0x1e23: 0x0080, - 0x1e24: 0x0080, 0x1e25: 0x0080, 0x1e26: 0x0080, 0x1e27: 0x0080, 0x1e28: 0x0080, 0x1e29: 0x0080, - 0x1e2a: 0x0080, 0x1e2b: 0x0080, 0x1e2c: 0x0080, 0x1e2d: 0x0080, 0x1e2e: 0x0080, 0x1e2f: 0x0080, - 0x1e30: 0x0080, 0x1e31: 0x0080, 0x1e32: 0x0080, 0x1e33: 0x0080, 0x1e34: 0x0080, 0x1e35: 0x0080, - 0x1e36: 0x0080, 0x1e37: 0x0080, 0x1e38: 0x0080, 0x1e39: 0x0080, - 0x1e3d: 0x0080, 0x1e3e: 0x0080, 0x1e3f: 0x0080, - // Block 0x79, offset 0x1e40 - 0x1e40: 0x0080, 0x1e41: 0x0080, 0x1e42: 0x0080, 0x1e43: 0x0080, 0x1e44: 0x0080, 0x1e45: 0x0080, - 0x1e46: 0x0080, 0x1e47: 0x0080, 0x1e48: 0x0080, 0x1e4a: 0x0080, 0x1e4b: 0x0080, - 0x1e4c: 0x0080, 0x1e4d: 0x0080, 0x1e4e: 0x0080, 0x1e4f: 0x0080, 0x1e50: 0x0080, 0x1e51: 0x0080, - 0x1e6c: 0x0080, 0x1e6d: 0x0080, 0x1e6e: 0x0080, 0x1e6f: 0x0080, - // Block 0x7a, offset 0x1e80 - 0x1e80: 0x00c0, 0x1e81: 0x00c0, 0x1e82: 0x00c0, 0x1e83: 0x00c0, 0x1e84: 0x00c0, 0x1e85: 0x00c0, - 0x1e86: 0x00c0, 0x1e87: 0x00c0, 0x1e88: 0x00c0, 0x1e89: 0x00c0, 0x1e8a: 0x00c0, 0x1e8b: 0x00c0, - 0x1e8c: 0x00c0, 0x1e8d: 0x00c0, 0x1e8e: 0x00c0, 0x1e8f: 0x00c0, 0x1e90: 0x00c0, 0x1e91: 0x00c0, - 0x1e92: 0x00c0, 0x1e93: 0x00c0, 0x1e94: 0x00c0, 0x1e95: 0x00c0, 0x1e96: 0x00c0, 0x1e97: 0x00c0, - 0x1e98: 0x00c0, 0x1e99: 0x00c0, 0x1e9a: 0x00c0, 0x1e9b: 0x00c0, 0x1e9c: 0x00c0, 0x1e9d: 0x00c0, - 0x1e9e: 0x00c0, 0x1e9f: 0x00c0, 0x1ea0: 0x00c0, 0x1ea1: 0x00c0, 0x1ea2: 0x00c0, 0x1ea3: 0x00c0, - 0x1ea4: 0x00c0, 0x1ea5: 0x00c0, 0x1ea6: 0x00c0, 0x1ea7: 0x00c0, 0x1ea8: 0x00c0, 0x1ea9: 0x00c0, - 0x1eaa: 0x00c0, 0x1eab: 0x00c0, 0x1eac: 0x00c0, 0x1ead: 0x00c0, 0x1eae: 0x00c0, - 0x1eb0: 0x00c0, 0x1eb1: 0x00c0, 0x1eb2: 0x00c0, 0x1eb3: 0x00c0, 0x1eb4: 0x00c0, 0x1eb5: 0x00c0, - 0x1eb6: 0x00c0, 0x1eb7: 0x00c0, 0x1eb8: 0x00c0, 0x1eb9: 0x00c0, 0x1eba: 0x00c0, 0x1ebb: 0x00c0, - 0x1ebc: 0x00c0, 0x1ebd: 0x00c0, 0x1ebe: 0x00c0, 0x1ebf: 0x00c0, - // Block 0x7b, offset 0x1ec0 - 0x1ec0: 0x00c0, 0x1ec1: 0x00c0, 0x1ec2: 0x00c0, 0x1ec3: 0x00c0, 0x1ec4: 0x00c0, 0x1ec5: 0x00c0, - 0x1ec6: 0x00c0, 0x1ec7: 0x00c0, 0x1ec8: 0x00c0, 0x1ec9: 0x00c0, 0x1eca: 0x00c0, 0x1ecb: 0x00c0, - 0x1ecc: 0x00c0, 0x1ecd: 0x00c0, 0x1ece: 0x00c0, 0x1ecf: 0x00c0, 0x1ed0: 0x00c0, 0x1ed1: 0x00c0, - 0x1ed2: 0x00c0, 0x1ed3: 0x00c0, 0x1ed4: 0x00c0, 0x1ed5: 0x00c0, 0x1ed6: 0x00c0, 0x1ed7: 0x00c0, - 0x1ed8: 0x00c0, 0x1ed9: 0x00c0, 0x1eda: 0x00c0, 0x1edb: 0x00c0, 0x1edc: 0x00c0, 0x1edd: 0x00c0, - 0x1ede: 0x00c0, 0x1ee0: 0x00c0, 0x1ee1: 0x00c0, 0x1ee2: 0x00c0, 0x1ee3: 0x00c0, - 0x1ee4: 0x00c0, 0x1ee5: 0x00c0, 0x1ee6: 0x00c0, 0x1ee7: 0x00c0, 0x1ee8: 0x00c0, 0x1ee9: 0x00c0, - 0x1eea: 0x00c0, 0x1eeb: 0x00c0, 0x1eec: 0x00c0, 0x1eed: 0x00c0, 0x1eee: 0x00c0, 0x1eef: 0x00c0, - 0x1ef0: 0x00c0, 0x1ef1: 0x00c0, 0x1ef2: 0x00c0, 0x1ef3: 0x00c0, 0x1ef4: 0x00c0, 0x1ef5: 0x00c0, - 0x1ef6: 0x00c0, 0x1ef7: 0x00c0, 0x1ef8: 0x00c0, 0x1ef9: 0x00c0, 0x1efa: 0x00c0, 0x1efb: 0x00c0, - 0x1efc: 0x0080, 0x1efd: 0x0080, 0x1efe: 0x00c0, 0x1eff: 0x00c0, - // Block 0x7c, offset 0x1f00 - 0x1f00: 0x00c0, 0x1f01: 0x00c0, 0x1f02: 0x00c0, 0x1f03: 0x00c0, 0x1f04: 0x00c0, 0x1f05: 0x00c0, - 0x1f06: 0x00c0, 0x1f07: 0x00c0, 0x1f08: 0x00c0, 0x1f09: 0x00c0, 0x1f0a: 0x00c0, 0x1f0b: 0x00c0, - 0x1f0c: 0x00c0, 0x1f0d: 0x00c0, 0x1f0e: 0x00c0, 0x1f0f: 0x00c0, 0x1f10: 0x00c0, 0x1f11: 0x00c0, - 0x1f12: 0x00c0, 0x1f13: 0x00c0, 0x1f14: 0x00c0, 0x1f15: 0x00c0, 0x1f16: 0x00c0, 0x1f17: 0x00c0, - 0x1f18: 0x00c0, 0x1f19: 0x00c0, 0x1f1a: 0x00c0, 0x1f1b: 0x00c0, 0x1f1c: 0x00c0, 0x1f1d: 0x00c0, - 0x1f1e: 0x00c0, 0x1f1f: 0x00c0, 0x1f20: 0x00c0, 0x1f21: 0x00c0, 0x1f22: 0x00c0, 0x1f23: 0x00c0, - 0x1f24: 0x00c0, 0x1f25: 0x0080, 0x1f26: 0x0080, 0x1f27: 0x0080, 0x1f28: 0x0080, 0x1f29: 0x0080, - 0x1f2a: 0x0080, 0x1f2b: 0x00c0, 0x1f2c: 0x00c0, 0x1f2d: 0x00c0, 0x1f2e: 0x00c0, 0x1f2f: 0x00c3, - 0x1f30: 0x00c3, 0x1f31: 0x00c3, 0x1f32: 0x00c0, 0x1f33: 0x00c0, - 0x1f39: 0x0080, 0x1f3a: 0x0080, 0x1f3b: 0x0080, - 0x1f3c: 0x0080, 0x1f3d: 0x0080, 0x1f3e: 0x0080, 0x1f3f: 0x0080, - // Block 0x7d, offset 0x1f40 - 0x1f40: 0x00c0, 0x1f41: 0x00c0, 0x1f42: 0x00c0, 0x1f43: 0x00c0, 0x1f44: 0x00c0, 0x1f45: 0x00c0, - 0x1f46: 0x00c0, 0x1f47: 0x00c0, 0x1f48: 0x00c0, 0x1f49: 0x00c0, 0x1f4a: 0x00c0, 0x1f4b: 0x00c0, - 0x1f4c: 0x00c0, 0x1f4d: 0x00c0, 0x1f4e: 0x00c0, 0x1f4f: 0x00c0, 0x1f50: 0x00c0, 0x1f51: 0x00c0, - 0x1f52: 0x00c0, 0x1f53: 0x00c0, 0x1f54: 0x00c0, 0x1f55: 0x00c0, 0x1f56: 0x00c0, 0x1f57: 0x00c0, - 0x1f58: 0x00c0, 0x1f59: 0x00c0, 0x1f5a: 0x00c0, 0x1f5b: 0x00c0, 0x1f5c: 0x00c0, 0x1f5d: 0x00c0, - 0x1f5e: 0x00c0, 0x1f5f: 0x00c0, 0x1f60: 0x00c0, 0x1f61: 0x00c0, 0x1f62: 0x00c0, 0x1f63: 0x00c0, - 0x1f64: 0x00c0, 0x1f65: 0x00c0, 0x1f67: 0x00c0, - 0x1f6d: 0x00c0, - 0x1f70: 0x00c0, 0x1f71: 0x00c0, 0x1f72: 0x00c0, 0x1f73: 0x00c0, 0x1f74: 0x00c0, 0x1f75: 0x00c0, - 0x1f76: 0x00c0, 0x1f77: 0x00c0, 0x1f78: 0x00c0, 0x1f79: 0x00c0, 0x1f7a: 0x00c0, 0x1f7b: 0x00c0, - 0x1f7c: 0x00c0, 0x1f7d: 0x00c0, 0x1f7e: 0x00c0, 0x1f7f: 0x00c0, - // Block 0x7e, offset 0x1f80 - 0x1f80: 0x00c0, 0x1f81: 0x00c0, 0x1f82: 0x00c0, 0x1f83: 0x00c0, 0x1f84: 0x00c0, 0x1f85: 0x00c0, - 0x1f86: 0x00c0, 0x1f87: 0x00c0, 0x1f88: 0x00c0, 0x1f89: 0x00c0, 0x1f8a: 0x00c0, 0x1f8b: 0x00c0, - 0x1f8c: 0x00c0, 0x1f8d: 0x00c0, 0x1f8e: 0x00c0, 0x1f8f: 0x00c0, 0x1f90: 0x00c0, 0x1f91: 0x00c0, - 0x1f92: 0x00c0, 0x1f93: 0x00c0, 0x1f94: 0x00c0, 0x1f95: 0x00c0, 0x1f96: 0x00c0, 0x1f97: 0x00c0, - 0x1f98: 0x00c0, 0x1f99: 0x00c0, 0x1f9a: 0x00c0, 0x1f9b: 0x00c0, 0x1f9c: 0x00c0, 0x1f9d: 0x00c0, - 0x1f9e: 0x00c0, 0x1f9f: 0x00c0, 0x1fa0: 0x00c0, 0x1fa1: 0x00c0, 0x1fa2: 0x00c0, 0x1fa3: 0x00c0, - 0x1fa4: 0x00c0, 0x1fa5: 0x00c0, 0x1fa6: 0x00c0, 0x1fa7: 0x00c0, - 0x1faf: 0x0080, - 0x1fb0: 0x0080, - 0x1fbf: 0x00c6, - // Block 0x7f, offset 0x1fc0 - 0x1fc0: 0x00c0, 0x1fc1: 0x00c0, 0x1fc2: 0x00c0, 0x1fc3: 0x00c0, 0x1fc4: 0x00c0, 0x1fc5: 0x00c0, - 0x1fc6: 0x00c0, 0x1fc7: 0x00c0, 0x1fc8: 0x00c0, 0x1fc9: 0x00c0, 0x1fca: 0x00c0, 0x1fcb: 0x00c0, - 0x1fcc: 0x00c0, 0x1fcd: 0x00c0, 0x1fce: 0x00c0, 0x1fcf: 0x00c0, 0x1fd0: 0x00c0, 0x1fd1: 0x00c0, - 0x1fd2: 0x00c0, 0x1fd3: 0x00c0, 0x1fd4: 0x00c0, 0x1fd5: 0x00c0, 0x1fd6: 0x00c0, - 0x1fe0: 0x00c0, 0x1fe1: 0x00c0, 0x1fe2: 0x00c0, 0x1fe3: 0x00c0, - 0x1fe4: 0x00c0, 0x1fe5: 0x00c0, 0x1fe6: 0x00c0, 0x1fe8: 0x00c0, 0x1fe9: 0x00c0, - 0x1fea: 0x00c0, 0x1feb: 0x00c0, 0x1fec: 0x00c0, 0x1fed: 0x00c0, 0x1fee: 0x00c0, - 0x1ff0: 0x00c0, 0x1ff1: 0x00c0, 0x1ff2: 0x00c0, 0x1ff3: 0x00c0, 0x1ff4: 0x00c0, 0x1ff5: 0x00c0, - 0x1ff6: 0x00c0, 0x1ff8: 0x00c0, 0x1ff9: 0x00c0, 0x1ffa: 0x00c0, 0x1ffb: 0x00c0, - 0x1ffc: 0x00c0, 0x1ffd: 0x00c0, 0x1ffe: 0x00c0, - // Block 0x80, offset 0x2000 - 0x2000: 0x00c0, 0x2001: 0x00c0, 0x2002: 0x00c0, 0x2003: 0x00c0, 0x2004: 0x00c0, 0x2005: 0x00c0, - 0x2006: 0x00c0, 0x2008: 0x00c0, 0x2009: 0x00c0, 0x200a: 0x00c0, 0x200b: 0x00c0, - 0x200c: 0x00c0, 0x200d: 0x00c0, 0x200e: 0x00c0, 0x2010: 0x00c0, 0x2011: 0x00c0, - 0x2012: 0x00c0, 0x2013: 0x00c0, 0x2014: 0x00c0, 0x2015: 0x00c0, 0x2016: 0x00c0, - 0x2018: 0x00c0, 0x2019: 0x00c0, 0x201a: 0x00c0, 0x201b: 0x00c0, 0x201c: 0x00c0, 0x201d: 0x00c0, - 0x201e: 0x00c0, 0x2020: 0x00c3, 0x2021: 0x00c3, 0x2022: 0x00c3, 0x2023: 0x00c3, - 0x2024: 0x00c3, 0x2025: 0x00c3, 0x2026: 0x00c3, 0x2027: 0x00c3, 0x2028: 0x00c3, 0x2029: 0x00c3, - 0x202a: 0x00c3, 0x202b: 0x00c3, 0x202c: 0x00c3, 0x202d: 0x00c3, 0x202e: 0x00c3, 0x202f: 0x00c3, - 0x2030: 0x00c3, 0x2031: 0x00c3, 0x2032: 0x00c3, 0x2033: 0x00c3, 0x2034: 0x00c3, 0x2035: 0x00c3, - 0x2036: 0x00c3, 0x2037: 0x00c3, 0x2038: 0x00c3, 0x2039: 0x00c3, 0x203a: 0x00c3, 0x203b: 0x00c3, - 0x203c: 0x00c3, 0x203d: 0x00c3, 0x203e: 0x00c3, 0x203f: 0x00c3, - // Block 0x81, offset 0x2040 - 0x2040: 0x0080, 0x2041: 0x0080, 0x2042: 0x0080, 0x2043: 0x0080, 0x2044: 0x0080, 0x2045: 0x0080, - 0x2046: 0x0080, 0x2047: 0x0080, 0x2048: 0x0080, 0x2049: 0x0080, 0x204a: 0x0080, 0x204b: 0x0080, - 0x204c: 0x0080, 0x204d: 0x0080, 0x204e: 0x0080, 0x204f: 0x0080, 0x2050: 0x0080, 0x2051: 0x0080, - 0x2052: 0x0080, 0x2053: 0x0080, 0x2054: 0x0080, 0x2055: 0x0080, 0x2056: 0x0080, 0x2057: 0x0080, - 0x2058: 0x0080, 0x2059: 0x0080, 0x205a: 0x0080, 0x205b: 0x0080, 0x205c: 0x0080, 0x205d: 0x0080, - 0x205e: 0x0080, 0x205f: 0x0080, 0x2060: 0x0080, 0x2061: 0x0080, 0x2062: 0x0080, 0x2063: 0x0080, - 0x2064: 0x0080, 0x2065: 0x0080, 0x2066: 0x0080, 0x2067: 0x0080, 0x2068: 0x0080, 0x2069: 0x0080, - 0x206a: 0x0080, 0x206b: 0x0080, 0x206c: 0x0080, 0x206d: 0x0080, 0x206e: 0x0080, 0x206f: 0x00c0, - 0x2070: 0x0080, 0x2071: 0x0080, 0x2072: 0x0080, 0x2073: 0x0080, 0x2074: 0x0080, 0x2075: 0x0080, - 0x2076: 0x0080, 0x2077: 0x0080, 0x2078: 0x0080, 0x2079: 0x0080, 0x207a: 0x0080, 0x207b: 0x0080, - 0x207c: 0x0080, 0x207d: 0x0080, 0x207e: 0x0080, 0x207f: 0x0080, - // Block 0x82, offset 0x2080 - 0x2080: 0x0080, 0x2081: 0x0080, 0x2082: 0x0080, 0x2083: 0x0080, 0x2084: 0x0080, - // Block 0x83, offset 0x20c0 - 0x20c0: 0x008c, 0x20c1: 0x008c, 0x20c2: 0x008c, 0x20c3: 0x008c, 0x20c4: 0x008c, 0x20c5: 0x008c, - 0x20c6: 0x008c, 0x20c7: 0x008c, 0x20c8: 0x008c, 0x20c9: 0x008c, 0x20ca: 0x008c, 0x20cb: 0x008c, - 0x20cc: 0x008c, 0x20cd: 0x008c, 0x20ce: 0x008c, 0x20cf: 0x008c, 0x20d0: 0x008c, 0x20d1: 0x008c, - 0x20d2: 0x008c, 0x20d3: 0x008c, 0x20d4: 0x008c, 0x20d5: 0x008c, 0x20d6: 0x008c, 0x20d7: 0x008c, - 0x20d8: 0x008c, 0x20d9: 0x008c, 0x20db: 0x008c, 0x20dc: 0x008c, 0x20dd: 0x008c, - 0x20de: 0x008c, 0x20df: 0x008c, 0x20e0: 0x008c, 0x20e1: 0x008c, 0x20e2: 0x008c, 0x20e3: 0x008c, - 0x20e4: 0x008c, 0x20e5: 0x008c, 0x20e6: 0x008c, 0x20e7: 0x008c, 0x20e8: 0x008c, 0x20e9: 0x008c, - 0x20ea: 0x008c, 0x20eb: 0x008c, 0x20ec: 0x008c, 0x20ed: 0x008c, 0x20ee: 0x008c, 0x20ef: 0x008c, - 0x20f0: 0x008c, 0x20f1: 0x008c, 0x20f2: 0x008c, 0x20f3: 0x008c, 0x20f4: 0x008c, 0x20f5: 0x008c, - 0x20f6: 0x008c, 0x20f7: 0x008c, 0x20f8: 0x008c, 0x20f9: 0x008c, 0x20fa: 0x008c, 0x20fb: 0x008c, - 0x20fc: 0x008c, 0x20fd: 0x008c, 0x20fe: 0x008c, 0x20ff: 0x008c, - // Block 0x84, offset 0x2100 - 0x2100: 0x008c, 0x2101: 0x008c, 0x2102: 0x008c, 0x2103: 0x008c, 0x2104: 0x008c, 0x2105: 0x008c, - 0x2106: 0x008c, 0x2107: 0x008c, 0x2108: 0x008c, 0x2109: 0x008c, 0x210a: 0x008c, 0x210b: 0x008c, - 0x210c: 0x008c, 0x210d: 0x008c, 0x210e: 0x008c, 0x210f: 0x008c, 0x2110: 0x008c, 0x2111: 0x008c, - 0x2112: 0x008c, 0x2113: 0x008c, 0x2114: 0x008c, 0x2115: 0x008c, 0x2116: 0x008c, 0x2117: 0x008c, - 0x2118: 0x008c, 0x2119: 0x008c, 0x211a: 0x008c, 0x211b: 0x008c, 0x211c: 0x008c, 0x211d: 0x008c, - 0x211e: 0x008c, 0x211f: 0x008c, 0x2120: 0x008c, 0x2121: 0x008c, 0x2122: 0x008c, 0x2123: 0x008c, - 0x2124: 0x008c, 0x2125: 0x008c, 0x2126: 0x008c, 0x2127: 0x008c, 0x2128: 0x008c, 0x2129: 0x008c, - 0x212a: 0x008c, 0x212b: 0x008c, 0x212c: 0x008c, 0x212d: 0x008c, 0x212e: 0x008c, 0x212f: 0x008c, - 0x2130: 0x008c, 0x2131: 0x008c, 0x2132: 0x008c, 0x2133: 0x008c, - // Block 0x85, offset 0x2140 - 0x2140: 0x008c, 0x2141: 0x008c, 0x2142: 0x008c, 0x2143: 0x008c, 0x2144: 0x008c, 0x2145: 0x008c, - 0x2146: 0x008c, 0x2147: 0x008c, 0x2148: 0x008c, 0x2149: 0x008c, 0x214a: 0x008c, 0x214b: 0x008c, - 0x214c: 0x008c, 0x214d: 0x008c, 0x214e: 0x008c, 0x214f: 0x008c, 0x2150: 0x008c, 0x2151: 0x008c, - 0x2152: 0x008c, 0x2153: 0x008c, 0x2154: 0x008c, 0x2155: 0x008c, 0x2156: 0x008c, 0x2157: 0x008c, - 0x2158: 0x008c, 0x2159: 0x008c, 0x215a: 0x008c, 0x215b: 0x008c, 0x215c: 0x008c, 0x215d: 0x008c, - 0x215e: 0x008c, 0x215f: 0x008c, 0x2160: 0x008c, 0x2161: 0x008c, 0x2162: 0x008c, 0x2163: 0x008c, - 0x2164: 0x008c, 0x2165: 0x008c, 0x2166: 0x008c, 0x2167: 0x008c, 0x2168: 0x008c, 0x2169: 0x008c, - 0x216a: 0x008c, 0x216b: 0x008c, 0x216c: 0x008c, 0x216d: 0x008c, 0x216e: 0x008c, 0x216f: 0x008c, - 0x2170: 0x008c, 0x2171: 0x008c, 0x2172: 0x008c, 0x2173: 0x008c, 0x2174: 0x008c, 0x2175: 0x008c, - 0x2176: 0x008c, 0x2177: 0x008c, 0x2178: 0x008c, 0x2179: 0x008c, 0x217a: 0x008c, 0x217b: 0x008c, - 0x217c: 0x008c, 0x217d: 0x008c, 0x217e: 0x008c, 0x217f: 0x008c, - // Block 0x86, offset 0x2180 - 0x2180: 0x008c, 0x2181: 0x008c, 0x2182: 0x008c, 0x2183: 0x008c, 0x2184: 0x008c, 0x2185: 0x008c, - 0x2186: 0x008c, 0x2187: 0x008c, 0x2188: 0x008c, 0x2189: 0x008c, 0x218a: 0x008c, 0x218b: 0x008c, - 0x218c: 0x008c, 0x218d: 0x008c, 0x218e: 0x008c, 0x218f: 0x008c, 0x2190: 0x008c, 0x2191: 0x008c, - 0x2192: 0x008c, 0x2193: 0x008c, 0x2194: 0x008c, 0x2195: 0x008c, - 0x21b0: 0x0080, 0x21b1: 0x0080, 0x21b2: 0x0080, 0x21b3: 0x0080, 0x21b4: 0x0080, 0x21b5: 0x0080, - 0x21b6: 0x0080, 0x21b7: 0x0080, 0x21b8: 0x0080, 0x21b9: 0x0080, 0x21ba: 0x0080, 0x21bb: 0x0080, - // Block 0x87, offset 0x21c0 - 0x21c0: 0x0080, 0x21c1: 0x0080, 0x21c2: 0x0080, 0x21c3: 0x0080, 0x21c4: 0x0080, 0x21c5: 0x00cc, - 0x21c6: 0x00c0, 0x21c7: 0x00cc, 0x21c8: 0x0080, 0x21c9: 0x0080, 0x21ca: 0x0080, 0x21cb: 0x0080, - 0x21cc: 0x0080, 0x21cd: 0x0080, 0x21ce: 0x0080, 0x21cf: 0x0080, 0x21d0: 0x0080, 0x21d1: 0x0080, - 0x21d2: 0x0080, 0x21d3: 0x0080, 0x21d4: 0x0080, 0x21d5: 0x0080, 0x21d6: 0x0080, 0x21d7: 0x0080, - 0x21d8: 0x0080, 0x21d9: 0x0080, 0x21da: 0x0080, 0x21db: 0x0080, 0x21dc: 0x0080, 0x21dd: 0x0080, - 0x21de: 0x0080, 0x21df: 0x0080, 0x21e0: 0x0080, 0x21e1: 0x008c, 0x21e2: 0x008c, 0x21e3: 0x008c, - 0x21e4: 0x008c, 0x21e5: 0x008c, 0x21e6: 0x008c, 0x21e7: 0x008c, 0x21e8: 0x008c, 0x21e9: 0x008c, - 0x21ea: 0x00c3, 0x21eb: 0x00c3, 0x21ec: 0x00c3, 0x21ed: 0x00c3, 0x21ee: 0x0040, 0x21ef: 0x0040, - 0x21f0: 0x0080, 0x21f1: 0x0040, 0x21f2: 0x0040, 0x21f3: 0x0040, 0x21f4: 0x0040, 0x21f5: 0x0040, - 0x21f6: 0x0080, 0x21f7: 0x0080, 0x21f8: 0x008c, 0x21f9: 0x008c, 0x21fa: 0x008c, 0x21fb: 0x0040, - 0x21fc: 0x00c0, 0x21fd: 0x0080, 0x21fe: 0x0080, 0x21ff: 0x0080, - // Block 0x88, offset 0x2200 - 0x2201: 0x00cc, 0x2202: 0x00cc, 0x2203: 0x00cc, 0x2204: 0x00cc, 0x2205: 0x00cc, - 0x2206: 0x00cc, 0x2207: 0x00cc, 0x2208: 0x00cc, 0x2209: 0x00cc, 0x220a: 0x00cc, 0x220b: 0x00cc, - 0x220c: 0x00cc, 0x220d: 0x00cc, 0x220e: 0x00cc, 0x220f: 0x00cc, 0x2210: 0x00cc, 0x2211: 0x00cc, - 0x2212: 0x00cc, 0x2213: 0x00cc, 0x2214: 0x00cc, 0x2215: 0x00cc, 0x2216: 0x00cc, 0x2217: 0x00cc, - 0x2218: 0x00cc, 0x2219: 0x00cc, 0x221a: 0x00cc, 0x221b: 0x00cc, 0x221c: 0x00cc, 0x221d: 0x00cc, - 0x221e: 0x00cc, 0x221f: 0x00cc, 0x2220: 0x00cc, 0x2221: 0x00cc, 0x2222: 0x00cc, 0x2223: 0x00cc, - 0x2224: 0x00cc, 0x2225: 0x00cc, 0x2226: 0x00cc, 0x2227: 0x00cc, 0x2228: 0x00cc, 0x2229: 0x00cc, - 0x222a: 0x00cc, 0x222b: 0x00cc, 0x222c: 0x00cc, 0x222d: 0x00cc, 0x222e: 0x00cc, 0x222f: 0x00cc, - 0x2230: 0x00cc, 0x2231: 0x00cc, 0x2232: 0x00cc, 0x2233: 0x00cc, 0x2234: 0x00cc, 0x2235: 0x00cc, - 0x2236: 0x00cc, 0x2237: 0x00cc, 0x2238: 0x00cc, 0x2239: 0x00cc, 0x223a: 0x00cc, 0x223b: 0x00cc, - 0x223c: 0x00cc, 0x223d: 0x00cc, 0x223e: 0x00cc, 0x223f: 0x00cc, - // Block 0x89, offset 0x2240 - 0x2240: 0x00cc, 0x2241: 0x00cc, 0x2242: 0x00cc, 0x2243: 0x00cc, 0x2244: 0x00cc, 0x2245: 0x00cc, - 0x2246: 0x00cc, 0x2247: 0x00cc, 0x2248: 0x00cc, 0x2249: 0x00cc, 0x224a: 0x00cc, 0x224b: 0x00cc, - 0x224c: 0x00cc, 0x224d: 0x00cc, 0x224e: 0x00cc, 0x224f: 0x00cc, 0x2250: 0x00cc, 0x2251: 0x00cc, - 0x2252: 0x00cc, 0x2253: 0x00cc, 0x2254: 0x00cc, 0x2255: 0x00cc, 0x2256: 0x00cc, - 0x2259: 0x00c3, 0x225a: 0x00c3, 0x225b: 0x0080, 0x225c: 0x0080, 0x225d: 0x00cc, - 0x225e: 0x00cc, 0x225f: 0x008c, 0x2260: 0x0080, 0x2261: 0x00cc, 0x2262: 0x00cc, 0x2263: 0x00cc, - 0x2264: 0x00cc, 0x2265: 0x00cc, 0x2266: 0x00cc, 0x2267: 0x00cc, 0x2268: 0x00cc, 0x2269: 0x00cc, - 0x226a: 0x00cc, 0x226b: 0x00cc, 0x226c: 0x00cc, 0x226d: 0x00cc, 0x226e: 0x00cc, 0x226f: 0x00cc, - 0x2270: 0x00cc, 0x2271: 0x00cc, 0x2272: 0x00cc, 0x2273: 0x00cc, 0x2274: 0x00cc, 0x2275: 0x00cc, - 0x2276: 0x00cc, 0x2277: 0x00cc, 0x2278: 0x00cc, 0x2279: 0x00cc, 0x227a: 0x00cc, 0x227b: 0x00cc, - 0x227c: 0x00cc, 0x227d: 0x00cc, 0x227e: 0x00cc, 0x227f: 0x00cc, - // Block 0x8a, offset 0x2280 - 0x2280: 0x00cc, 0x2281: 0x00cc, 0x2282: 0x00cc, 0x2283: 0x00cc, 0x2284: 0x00cc, 0x2285: 0x00cc, - 0x2286: 0x00cc, 0x2287: 0x00cc, 0x2288: 0x00cc, 0x2289: 0x00cc, 0x228a: 0x00cc, 0x228b: 0x00cc, - 0x228c: 0x00cc, 0x228d: 0x00cc, 0x228e: 0x00cc, 0x228f: 0x00cc, 0x2290: 0x00cc, 0x2291: 0x00cc, - 0x2292: 0x00cc, 0x2293: 0x00cc, 0x2294: 0x00cc, 0x2295: 0x00cc, 0x2296: 0x00cc, 0x2297: 0x00cc, - 0x2298: 0x00cc, 0x2299: 0x00cc, 0x229a: 0x00cc, 0x229b: 0x00cc, 0x229c: 0x00cc, 0x229d: 0x00cc, - 0x229e: 0x00cc, 0x229f: 0x00cc, 0x22a0: 0x00cc, 0x22a1: 0x00cc, 0x22a2: 0x00cc, 0x22a3: 0x00cc, - 0x22a4: 0x00cc, 0x22a5: 0x00cc, 0x22a6: 0x00cc, 0x22a7: 0x00cc, 0x22a8: 0x00cc, 0x22a9: 0x00cc, - 0x22aa: 0x00cc, 0x22ab: 0x00cc, 0x22ac: 0x00cc, 0x22ad: 0x00cc, 0x22ae: 0x00cc, 0x22af: 0x00cc, - 0x22b0: 0x00cc, 0x22b1: 0x00cc, 0x22b2: 0x00cc, 0x22b3: 0x00cc, 0x22b4: 0x00cc, 0x22b5: 0x00cc, - 0x22b6: 0x00cc, 0x22b7: 0x00cc, 0x22b8: 0x00cc, 0x22b9: 0x00cc, 0x22ba: 0x00cc, 0x22bb: 0x00d2, - 0x22bc: 0x00c0, 0x22bd: 0x00cc, 0x22be: 0x00cc, 0x22bf: 0x008c, - // Block 0x8b, offset 0x22c0 - 0x22c5: 0x00c0, - 0x22c6: 0x00c0, 0x22c7: 0x00c0, 0x22c8: 0x00c0, 0x22c9: 0x00c0, 0x22ca: 0x00c0, 0x22cb: 0x00c0, - 0x22cc: 0x00c0, 0x22cd: 0x00c0, 0x22ce: 0x00c0, 0x22cf: 0x00c0, 0x22d0: 0x00c0, 0x22d1: 0x00c0, - 0x22d2: 0x00c0, 0x22d3: 0x00c0, 0x22d4: 0x00c0, 0x22d5: 0x00c0, 0x22d6: 0x00c0, 0x22d7: 0x00c0, - 0x22d8: 0x00c0, 0x22d9: 0x00c0, 0x22da: 0x00c0, 0x22db: 0x00c0, 0x22dc: 0x00c0, 0x22dd: 0x00c0, - 0x22de: 0x00c0, 0x22df: 0x00c0, 0x22e0: 0x00c0, 0x22e1: 0x00c0, 0x22e2: 0x00c0, 0x22e3: 0x00c0, - 0x22e4: 0x00c0, 0x22e5: 0x00c0, 0x22e6: 0x00c0, 0x22e7: 0x00c0, 0x22e8: 0x00c0, 0x22e9: 0x00c0, - 0x22ea: 0x00c0, 0x22eb: 0x00c0, 0x22ec: 0x00c0, 0x22ed: 0x00c0, - 0x22f1: 0x0080, 0x22f2: 0x0080, 0x22f3: 0x0080, 0x22f4: 0x0080, 0x22f5: 0x0080, - 0x22f6: 0x0080, 0x22f7: 0x0080, 0x22f8: 0x0080, 0x22f9: 0x0080, 0x22fa: 0x0080, 0x22fb: 0x0080, - 0x22fc: 0x0080, 0x22fd: 0x0080, 0x22fe: 0x0080, 0x22ff: 0x0080, - // Block 0x8c, offset 0x2300 - 0x2300: 0x0080, 0x2301: 0x0080, 0x2302: 0x0080, 0x2303: 0x0080, 0x2304: 0x0080, 0x2305: 0x0080, - 0x2306: 0x0080, 0x2307: 0x0080, 0x2308: 0x0080, 0x2309: 0x0080, 0x230a: 0x0080, 0x230b: 0x0080, - 0x230c: 0x0080, 0x230d: 0x0080, 0x230e: 0x0080, 0x230f: 0x0080, 0x2310: 0x0080, 0x2311: 0x0080, - 0x2312: 0x0080, 0x2313: 0x0080, 0x2314: 0x0080, 0x2315: 0x0080, 0x2316: 0x0080, 0x2317: 0x0080, - 0x2318: 0x0080, 0x2319: 0x0080, 0x231a: 0x0080, 0x231b: 0x0080, 0x231c: 0x0080, 0x231d: 0x0080, - 0x231e: 0x0080, 0x231f: 0x0080, 0x2320: 0x0080, 0x2321: 0x0080, 0x2322: 0x0080, 0x2323: 0x0080, - 0x2324: 0x0040, 0x2325: 0x0080, 0x2326: 0x0080, 0x2327: 0x0080, 0x2328: 0x0080, 0x2329: 0x0080, - 0x232a: 0x0080, 0x232b: 0x0080, 0x232c: 0x0080, 0x232d: 0x0080, 0x232e: 0x0080, 0x232f: 0x0080, - 0x2330: 0x0080, 0x2331: 0x0080, 0x2332: 0x0080, 0x2333: 0x0080, 0x2334: 0x0080, 0x2335: 0x0080, - 0x2336: 0x0080, 0x2337: 0x0080, 0x2338: 0x0080, 0x2339: 0x0080, 0x233a: 0x0080, 0x233b: 0x0080, - 0x233c: 0x0080, 0x233d: 0x0080, 0x233e: 0x0080, 0x233f: 0x0080, - // Block 0x8d, offset 0x2340 - 0x2340: 0x0080, 0x2341: 0x0080, 0x2342: 0x0080, 0x2343: 0x0080, 0x2344: 0x0080, 0x2345: 0x0080, - 0x2346: 0x0080, 0x2347: 0x0080, 0x2348: 0x0080, 0x2349: 0x0080, 0x234a: 0x0080, 0x234b: 0x0080, - 0x234c: 0x0080, 0x234d: 0x0080, 0x234e: 0x0080, 0x2350: 0x0080, 0x2351: 0x0080, - 0x2352: 0x0080, 0x2353: 0x0080, 0x2354: 0x0080, 0x2355: 0x0080, 0x2356: 0x0080, 0x2357: 0x0080, - 0x2358: 0x0080, 0x2359: 0x0080, 0x235a: 0x0080, 0x235b: 0x0080, 0x235c: 0x0080, 0x235d: 0x0080, - 0x235e: 0x0080, 0x235f: 0x0080, 0x2360: 0x00c0, 0x2361: 0x00c0, 0x2362: 0x00c0, 0x2363: 0x00c0, - 0x2364: 0x00c0, 0x2365: 0x00c0, 0x2366: 0x00c0, 0x2367: 0x00c0, 0x2368: 0x00c0, 0x2369: 0x00c0, - 0x236a: 0x00c0, 0x236b: 0x00c0, 0x236c: 0x00c0, 0x236d: 0x00c0, 0x236e: 0x00c0, 0x236f: 0x00c0, - 0x2370: 0x00c0, 0x2371: 0x00c0, 0x2372: 0x00c0, 0x2373: 0x00c0, 0x2374: 0x00c0, 0x2375: 0x00c0, - 0x2376: 0x00c0, 0x2377: 0x00c0, 0x2378: 0x00c0, 0x2379: 0x00c0, 0x237a: 0x00c0, - // Block 0x8e, offset 0x2380 - 0x2380: 0x0080, 0x2381: 0x0080, 0x2382: 0x0080, 0x2383: 0x0080, 0x2384: 0x0080, 0x2385: 0x0080, - 0x2386: 0x0080, 0x2387: 0x0080, 0x2388: 0x0080, 0x2389: 0x0080, 0x238a: 0x0080, 0x238b: 0x0080, - 0x238c: 0x0080, 0x238d: 0x0080, 0x238e: 0x0080, 0x238f: 0x0080, 0x2390: 0x0080, 0x2391: 0x0080, - 0x2392: 0x0080, 0x2393: 0x0080, 0x2394: 0x0080, 0x2395: 0x0080, 0x2396: 0x0080, 0x2397: 0x0080, - 0x2398: 0x0080, 0x2399: 0x0080, 0x239a: 0x0080, 0x239b: 0x0080, 0x239c: 0x0080, 0x239d: 0x0080, - 0x239e: 0x0080, 0x239f: 0x0080, 0x23a0: 0x0080, 0x23a1: 0x0080, 0x23a2: 0x0080, 0x23a3: 0x0080, - 0x23b0: 0x00cc, 0x23b1: 0x00cc, 0x23b2: 0x00cc, 0x23b3: 0x00cc, 0x23b4: 0x00cc, 0x23b5: 0x00cc, - 0x23b6: 0x00cc, 0x23b7: 0x00cc, 0x23b8: 0x00cc, 0x23b9: 0x00cc, 0x23ba: 0x00cc, 0x23bb: 0x00cc, - 0x23bc: 0x00cc, 0x23bd: 0x00cc, 0x23be: 0x00cc, 0x23bf: 0x00cc, - // Block 0x8f, offset 0x23c0 - 0x23c0: 0x0080, 0x23c1: 0x0080, 0x23c2: 0x0080, 0x23c3: 0x0080, 0x23c4: 0x0080, 0x23c5: 0x0080, - 0x23c6: 0x0080, 0x23c7: 0x0080, 0x23c8: 0x0080, 0x23c9: 0x0080, 0x23ca: 0x0080, 0x23cb: 0x0080, - 0x23cc: 0x0080, 0x23cd: 0x0080, 0x23ce: 0x0080, 0x23cf: 0x0080, 0x23d0: 0x0080, 0x23d1: 0x0080, - 0x23d2: 0x0080, 0x23d3: 0x0080, 0x23d4: 0x0080, 0x23d5: 0x0080, 0x23d6: 0x0080, 0x23d7: 0x0080, - 0x23d8: 0x0080, 0x23d9: 0x0080, 0x23da: 0x0080, 0x23db: 0x0080, 0x23dc: 0x0080, 0x23dd: 0x0080, - 0x23de: 0x0080, 0x23e0: 0x0080, 0x23e1: 0x0080, 0x23e2: 0x0080, 0x23e3: 0x0080, - 0x23e4: 0x0080, 0x23e5: 0x0080, 0x23e6: 0x0080, 0x23e7: 0x0080, 0x23e8: 0x0080, 0x23e9: 0x0080, - 0x23ea: 0x0080, 0x23eb: 0x0080, 0x23ec: 0x0080, 0x23ed: 0x0080, 0x23ee: 0x0080, 0x23ef: 0x0080, - 0x23f0: 0x0080, 0x23f1: 0x0080, 0x23f2: 0x0080, 0x23f3: 0x0080, 0x23f4: 0x0080, 0x23f5: 0x0080, - 0x23f6: 0x0080, 0x23f7: 0x0080, 0x23f8: 0x0080, 0x23f9: 0x0080, 0x23fa: 0x0080, 0x23fb: 0x0080, - 0x23fc: 0x0080, 0x23fd: 0x0080, 0x23fe: 0x0080, 0x23ff: 0x0080, - // Block 0x90, offset 0x2400 - 0x2400: 0x0080, 0x2401: 0x0080, 0x2402: 0x0080, 0x2403: 0x0080, 0x2404: 0x0080, 0x2405: 0x0080, - 0x2406: 0x0080, 0x2407: 0x0080, 0x2408: 0x0080, 0x2409: 0x0080, 0x240a: 0x0080, 0x240b: 0x0080, - 0x240c: 0x0080, 0x240d: 0x0080, 0x240e: 0x0080, 0x240f: 0x0080, 0x2410: 0x008c, 0x2411: 0x008c, - 0x2412: 0x008c, 0x2413: 0x008c, 0x2414: 0x008c, 0x2415: 0x008c, 0x2416: 0x008c, 0x2417: 0x008c, - 0x2418: 0x008c, 0x2419: 0x008c, 0x241a: 0x008c, 0x241b: 0x008c, 0x241c: 0x008c, 0x241d: 0x008c, - 0x241e: 0x008c, 0x241f: 0x008c, 0x2420: 0x008c, 0x2421: 0x008c, 0x2422: 0x008c, 0x2423: 0x008c, - 0x2424: 0x008c, 0x2425: 0x008c, 0x2426: 0x008c, 0x2427: 0x008c, 0x2428: 0x008c, 0x2429: 0x008c, - 0x242a: 0x008c, 0x242b: 0x008c, 0x242c: 0x008c, 0x242d: 0x008c, 0x242e: 0x008c, 0x242f: 0x008c, - 0x2430: 0x008c, 0x2431: 0x008c, 0x2432: 0x008c, 0x2433: 0x008c, 0x2434: 0x008c, 0x2435: 0x008c, - 0x2436: 0x008c, 0x2437: 0x008c, 0x2438: 0x008c, 0x2439: 0x008c, 0x243a: 0x008c, 0x243b: 0x008c, - 0x243c: 0x008c, 0x243d: 0x008c, 0x243e: 0x008c, - // Block 0x91, offset 0x2440 - 0x2440: 0x008c, 0x2441: 0x008c, 0x2442: 0x008c, 0x2443: 0x008c, 0x2444: 0x008c, 0x2445: 0x008c, - 0x2446: 0x008c, 0x2447: 0x008c, 0x2448: 0x008c, 0x2449: 0x008c, 0x244a: 0x008c, 0x244b: 0x008c, - 0x244c: 0x008c, 0x244d: 0x008c, 0x244e: 0x008c, 0x244f: 0x008c, 0x2450: 0x008c, 0x2451: 0x008c, - 0x2452: 0x008c, 0x2453: 0x008c, 0x2454: 0x008c, 0x2455: 0x008c, 0x2456: 0x008c, 0x2457: 0x008c, - 0x2458: 0x0080, 0x2459: 0x0080, 0x245a: 0x0080, 0x245b: 0x0080, 0x245c: 0x0080, 0x245d: 0x0080, - 0x245e: 0x0080, 0x245f: 0x0080, 0x2460: 0x0080, 0x2461: 0x0080, 0x2462: 0x0080, 0x2463: 0x0080, - 0x2464: 0x0080, 0x2465: 0x0080, 0x2466: 0x0080, 0x2467: 0x0080, 0x2468: 0x0080, 0x2469: 0x0080, - 0x246a: 0x0080, 0x246b: 0x0080, 0x246c: 0x0080, 0x246d: 0x0080, 0x246e: 0x0080, 0x246f: 0x0080, - 0x2470: 0x0080, 0x2471: 0x0080, 0x2472: 0x0080, 0x2473: 0x0080, 0x2474: 0x0080, 0x2475: 0x0080, - 0x2476: 0x0080, 0x2477: 0x0080, 0x2478: 0x0080, 0x2479: 0x0080, 0x247a: 0x0080, 0x247b: 0x0080, - 0x247c: 0x0080, 0x247d: 0x0080, 0x247e: 0x0080, 0x247f: 0x0080, - // Block 0x92, offset 0x2480 - 0x2480: 0x00cc, 0x2481: 0x00cc, 0x2482: 0x00cc, 0x2483: 0x00cc, 0x2484: 0x00cc, 0x2485: 0x00cc, - 0x2486: 0x00cc, 0x2487: 0x00cc, 0x2488: 0x00cc, 0x2489: 0x00cc, 0x248a: 0x00cc, 0x248b: 0x00cc, - 0x248c: 0x00cc, 0x248d: 0x00cc, 0x248e: 0x00cc, 0x248f: 0x00cc, 0x2490: 0x00cc, 0x2491: 0x00cc, - 0x2492: 0x00cc, 0x2493: 0x00cc, 0x2494: 0x00cc, 0x2495: 0x00cc, 0x2496: 0x00cc, 0x2497: 0x00cc, - 0x2498: 0x00cc, 0x2499: 0x00cc, 0x249a: 0x00cc, 0x249b: 0x00cc, 0x249c: 0x00cc, 0x249d: 0x00cc, - 0x249e: 0x00cc, 0x249f: 0x00cc, 0x24a0: 0x00cc, 0x24a1: 0x00cc, 0x24a2: 0x00cc, 0x24a3: 0x00cc, - 0x24a4: 0x00cc, 0x24a5: 0x00cc, 0x24a6: 0x00cc, 0x24a7: 0x00cc, 0x24a8: 0x00cc, 0x24a9: 0x00cc, - 0x24aa: 0x00cc, 0x24ab: 0x00cc, 0x24ac: 0x00cc, 0x24ad: 0x00cc, 0x24ae: 0x00cc, 0x24af: 0x00cc, - 0x24b0: 0x00cc, 0x24b1: 0x00cc, 0x24b2: 0x00cc, 0x24b3: 0x00cc, 0x24b4: 0x00cc, 0x24b5: 0x00cc, - 0x24b6: 0x00cc, 0x24b7: 0x00cc, 0x24b8: 0x00cc, 0x24b9: 0x00cc, 0x24ba: 0x00cc, 0x24bb: 0x00cc, - 0x24bc: 0x00cc, 0x24bd: 0x00cc, 0x24be: 0x00cc, 0x24bf: 0x00cc, - // Block 0x93, offset 0x24c0 - 0x24c0: 0x00cc, 0x24c1: 0x00cc, 0x24c2: 0x00cc, 0x24c3: 0x00cc, 0x24c4: 0x00cc, 0x24c5: 0x00cc, - 0x24c6: 0x00cc, 0x24c7: 0x00cc, 0x24c8: 0x00cc, 0x24c9: 0x00cc, 0x24ca: 0x00cc, 0x24cb: 0x00cc, - 0x24cc: 0x00cc, 0x24cd: 0x00cc, 0x24ce: 0x00cc, 0x24cf: 0x00cc, 0x24d0: 0x00cc, 0x24d1: 0x00cc, - 0x24d2: 0x00cc, 0x24d3: 0x00cc, 0x24d4: 0x00cc, 0x24d5: 0x00cc, 0x24d6: 0x00cc, 0x24d7: 0x00cc, - 0x24d8: 0x00cc, 0x24d9: 0x00cc, 0x24da: 0x00cc, 0x24db: 0x00cc, 0x24dc: 0x00cc, 0x24dd: 0x00cc, - 0x24de: 0x00cc, 0x24df: 0x00cc, 0x24e0: 0x00cc, 0x24e1: 0x00cc, 0x24e2: 0x00cc, 0x24e3: 0x00cc, - 0x24e4: 0x00cc, 0x24e5: 0x00cc, 0x24e6: 0x00cc, 0x24e7: 0x00cc, 0x24e8: 0x00cc, 0x24e9: 0x00cc, - 0x24ea: 0x00cc, 0x24eb: 0x00cc, 0x24ec: 0x00cc, 0x24ed: 0x00cc, 0x24ee: 0x00cc, 0x24ef: 0x00cc, - 0x24f0: 0x00cc, 0x24f1: 0x00cc, 0x24f2: 0x00cc, 0x24f3: 0x00cc, 0x24f4: 0x00cc, 0x24f5: 0x00cc, - // Block 0x94, offset 0x2500 - 0x2500: 0x00cc, 0x2501: 0x00cc, 0x2502: 0x00cc, 0x2503: 0x00cc, 0x2504: 0x00cc, 0x2505: 0x00cc, - 0x2506: 0x00cc, 0x2507: 0x00cc, 0x2508: 0x00cc, 0x2509: 0x00cc, 0x250a: 0x00cc, 0x250b: 0x00cc, - 0x250c: 0x00cc, 0x250d: 0x00cc, 0x250e: 0x00cc, 0x250f: 0x00cc, 0x2510: 0x00cc, 0x2511: 0x00cc, - 0x2512: 0x00cc, 0x2513: 0x00cc, 0x2514: 0x00cc, 0x2515: 0x00cc, - // Block 0x95, offset 0x2540 - 0x2540: 0x00c0, 0x2541: 0x00c0, 0x2542: 0x00c0, 0x2543: 0x00c0, 0x2544: 0x00c0, 0x2545: 0x00c0, - 0x2546: 0x00c0, 0x2547: 0x00c0, 0x2548: 0x00c0, 0x2549: 0x00c0, 0x254a: 0x00c0, 0x254b: 0x00c0, - 0x254c: 0x00c0, 0x2550: 0x0080, 0x2551: 0x0080, - 0x2552: 0x0080, 0x2553: 0x0080, 0x2554: 0x0080, 0x2555: 0x0080, 0x2556: 0x0080, 0x2557: 0x0080, - 0x2558: 0x0080, 0x2559: 0x0080, 0x255a: 0x0080, 0x255b: 0x0080, 0x255c: 0x0080, 0x255d: 0x0080, - 0x255e: 0x0080, 0x255f: 0x0080, 0x2560: 0x0080, 0x2561: 0x0080, 0x2562: 0x0080, 0x2563: 0x0080, - 0x2564: 0x0080, 0x2565: 0x0080, 0x2566: 0x0080, 0x2567: 0x0080, 0x2568: 0x0080, 0x2569: 0x0080, - 0x256a: 0x0080, 0x256b: 0x0080, 0x256c: 0x0080, 0x256d: 0x0080, 0x256e: 0x0080, 0x256f: 0x0080, - 0x2570: 0x0080, 0x2571: 0x0080, 0x2572: 0x0080, 0x2573: 0x0080, 0x2574: 0x0080, 0x2575: 0x0080, - 0x2576: 0x0080, 0x2577: 0x0080, 0x2578: 0x0080, 0x2579: 0x0080, 0x257a: 0x0080, 0x257b: 0x0080, - 0x257c: 0x0080, 0x257d: 0x0080, 0x257e: 0x0080, 0x257f: 0x0080, - // Block 0x96, offset 0x2580 - 0x2580: 0x0080, 0x2581: 0x0080, 0x2582: 0x0080, 0x2583: 0x0080, 0x2584: 0x0080, 0x2585: 0x0080, - 0x2586: 0x0080, - 0x2590: 0x00c0, 0x2591: 0x00c0, - 0x2592: 0x00c0, 0x2593: 0x00c0, 0x2594: 0x00c0, 0x2595: 0x00c0, 0x2596: 0x00c0, 0x2597: 0x00c0, - 0x2598: 0x00c0, 0x2599: 0x00c0, 0x259a: 0x00c0, 0x259b: 0x00c0, 0x259c: 0x00c0, 0x259d: 0x00c0, - 0x259e: 0x00c0, 0x259f: 0x00c0, 0x25a0: 0x00c0, 0x25a1: 0x00c0, 0x25a2: 0x00c0, 0x25a3: 0x00c0, - 0x25a4: 0x00c0, 0x25a5: 0x00c0, 0x25a6: 0x00c0, 0x25a7: 0x00c0, 0x25a8: 0x00c0, 0x25a9: 0x00c0, - 0x25aa: 0x00c0, 0x25ab: 0x00c0, 0x25ac: 0x00c0, 0x25ad: 0x00c0, 0x25ae: 0x00c0, 0x25af: 0x00c0, - 0x25b0: 0x00c0, 0x25b1: 0x00c0, 0x25b2: 0x00c0, 0x25b3: 0x00c0, 0x25b4: 0x00c0, 0x25b5: 0x00c0, - 0x25b6: 0x00c0, 0x25b7: 0x00c0, 0x25b8: 0x00c0, 0x25b9: 0x00c0, 0x25ba: 0x00c0, 0x25bb: 0x00c0, - 0x25bc: 0x00c0, 0x25bd: 0x00c0, 0x25be: 0x0080, 0x25bf: 0x0080, - // Block 0x97, offset 0x25c0 - 0x25c0: 0x00c0, 0x25c1: 0x00c0, 0x25c2: 0x00c0, 0x25c3: 0x00c0, 0x25c4: 0x00c0, 0x25c5: 0x00c0, - 0x25c6: 0x00c0, 0x25c7: 0x00c0, 0x25c8: 0x00c0, 0x25c9: 0x00c0, 0x25ca: 0x00c0, 0x25cb: 0x00c0, - 0x25cc: 0x00c0, 0x25cd: 0x0080, 0x25ce: 0x0080, 0x25cf: 0x0080, 0x25d0: 0x00c0, 0x25d1: 0x00c0, - 0x25d2: 0x00c0, 0x25d3: 0x00c0, 0x25d4: 0x00c0, 0x25d5: 0x00c0, 0x25d6: 0x00c0, 0x25d7: 0x00c0, - 0x25d8: 0x00c0, 0x25d9: 0x00c0, 0x25da: 0x00c0, 0x25db: 0x00c0, 0x25dc: 0x00c0, 0x25dd: 0x00c0, - 0x25de: 0x00c0, 0x25df: 0x00c0, 0x25e0: 0x00c0, 0x25e1: 0x00c0, 0x25e2: 0x00c0, 0x25e3: 0x00c0, - 0x25e4: 0x00c0, 0x25e5: 0x00c0, 0x25e6: 0x00c0, 0x25e7: 0x00c0, 0x25e8: 0x00c0, 0x25e9: 0x00c0, - 0x25ea: 0x00c0, 0x25eb: 0x00c0, - // Block 0x98, offset 0x2600 - 0x2600: 0x00c0, 0x2601: 0x00c0, 0x2602: 0x00c0, 0x2603: 0x00c0, 0x2604: 0x00c0, 0x2605: 0x00c0, - 0x2606: 0x00c0, 0x2607: 0x00c0, 0x2608: 0x00c0, 0x2609: 0x00c0, 0x260a: 0x00c0, 0x260b: 0x00c0, - 0x260c: 0x00c0, 0x260d: 0x00c0, 0x260e: 0x00c0, 0x260f: 0x00c0, 0x2610: 0x00c0, 0x2611: 0x00c0, - 0x2612: 0x00c0, 0x2613: 0x00c0, 0x2614: 0x00c0, 0x2615: 0x00c0, 0x2616: 0x00c0, 0x2617: 0x00c0, - 0x2618: 0x00c0, 0x2619: 0x00c0, 0x261a: 0x00c0, 0x261b: 0x00c0, 0x261c: 0x00c0, 0x261d: 0x00c0, - 0x261e: 0x00c0, 0x261f: 0x00c0, 0x2620: 0x00c0, 0x2621: 0x00c0, 0x2622: 0x00c0, 0x2623: 0x00c0, - 0x2624: 0x00c0, 0x2625: 0x00c0, 0x2626: 0x00c0, 0x2627: 0x00c0, 0x2628: 0x00c0, 0x2629: 0x00c0, - 0x262a: 0x00c0, 0x262b: 0x00c0, 0x262c: 0x00c0, 0x262d: 0x00c0, 0x262e: 0x00c0, 0x262f: 0x00c3, - 0x2630: 0x0083, 0x2631: 0x0083, 0x2632: 0x0083, 0x2633: 0x0080, 0x2634: 0x00c3, 0x2635: 0x00c3, - 0x2636: 0x00c3, 0x2637: 0x00c3, 0x2638: 0x00c3, 0x2639: 0x00c3, 0x263a: 0x00c3, 0x263b: 0x00c3, - 0x263c: 0x00c3, 0x263d: 0x00c3, 0x263e: 0x0080, 0x263f: 0x00c0, - // Block 0x99, offset 0x2640 - 0x2640: 0x00c0, 0x2641: 0x00c0, 0x2642: 0x00c0, 0x2643: 0x00c0, 0x2644: 0x00c0, 0x2645: 0x00c0, - 0x2646: 0x00c0, 0x2647: 0x00c0, 0x2648: 0x00c0, 0x2649: 0x00c0, 0x264a: 0x00c0, 0x264b: 0x00c0, - 0x264c: 0x00c0, 0x264d: 0x00c0, 0x264e: 0x00c0, 0x264f: 0x00c0, 0x2650: 0x00c0, 0x2651: 0x00c0, - 0x2652: 0x00c0, 0x2653: 0x00c0, 0x2654: 0x00c0, 0x2655: 0x00c0, 0x2656: 0x00c0, 0x2657: 0x00c0, - 0x2658: 0x00c0, 0x2659: 0x00c0, 0x265a: 0x00c0, 0x265b: 0x00c0, 0x265c: 0x0080, 0x265d: 0x0080, - 0x265e: 0x00c3, 0x265f: 0x00c3, 0x2660: 0x00c0, 0x2661: 0x00c0, 0x2662: 0x00c0, 0x2663: 0x00c0, - 0x2664: 0x00c0, 0x2665: 0x00c0, 0x2666: 0x00c0, 0x2667: 0x00c0, 0x2668: 0x00c0, 0x2669: 0x00c0, - 0x266a: 0x00c0, 0x266b: 0x00c0, 0x266c: 0x00c0, 0x266d: 0x00c0, 0x266e: 0x00c0, 0x266f: 0x00c0, - 0x2670: 0x00c0, 0x2671: 0x00c0, 0x2672: 0x00c0, 0x2673: 0x00c0, 0x2674: 0x00c0, 0x2675: 0x00c0, - 0x2676: 0x00c0, 0x2677: 0x00c0, 0x2678: 0x00c0, 0x2679: 0x00c0, 0x267a: 0x00c0, 0x267b: 0x00c0, - 0x267c: 0x00c0, 0x267d: 0x00c0, 0x267e: 0x00c0, 0x267f: 0x00c0, - // Block 0x9a, offset 0x2680 - 0x2680: 0x00c0, 0x2681: 0x00c0, 0x2682: 0x00c0, 0x2683: 0x00c0, 0x2684: 0x00c0, 0x2685: 0x00c0, - 0x2686: 0x00c0, 0x2687: 0x00c0, 0x2688: 0x00c0, 0x2689: 0x00c0, 0x268a: 0x00c0, 0x268b: 0x00c0, - 0x268c: 0x00c0, 0x268d: 0x00c0, 0x268e: 0x00c0, 0x268f: 0x00c0, 0x2690: 0x00c0, 0x2691: 0x00c0, - 0x2692: 0x00c0, 0x2693: 0x00c0, 0x2694: 0x00c0, 0x2695: 0x00c0, 0x2696: 0x00c0, 0x2697: 0x00c0, - 0x2698: 0x00c0, 0x2699: 0x00c0, 0x269a: 0x00c0, 0x269b: 0x00c0, 0x269c: 0x00c0, 0x269d: 0x00c0, - 0x269e: 0x00c0, 0x269f: 0x00c0, 0x26a0: 0x00c0, 0x26a1: 0x00c0, 0x26a2: 0x00c0, 0x26a3: 0x00c0, - 0x26a4: 0x00c0, 0x26a5: 0x00c0, 0x26a6: 0x0080, 0x26a7: 0x0080, 0x26a8: 0x0080, 0x26a9: 0x0080, - 0x26aa: 0x0080, 0x26ab: 0x0080, 0x26ac: 0x0080, 0x26ad: 0x0080, 0x26ae: 0x0080, 0x26af: 0x0080, - 0x26b0: 0x00c3, 0x26b1: 0x00c3, 0x26b2: 0x0080, 0x26b3: 0x0080, 0x26b4: 0x0080, 0x26b5: 0x0080, - 0x26b6: 0x0080, 0x26b7: 0x0080, - // Block 0x9b, offset 0x26c0 - 0x26c0: 0x0080, 0x26c1: 0x0080, 0x26c2: 0x0080, 0x26c3: 0x0080, 0x26c4: 0x0080, 0x26c5: 0x0080, - 0x26c6: 0x0080, 0x26c7: 0x0080, 0x26c8: 0x0080, 0x26c9: 0x0080, 0x26ca: 0x0080, 0x26cb: 0x0080, - 0x26cc: 0x0080, 0x26cd: 0x0080, 0x26ce: 0x0080, 0x26cf: 0x0080, 0x26d0: 0x0080, 0x26d1: 0x0080, - 0x26d2: 0x0080, 0x26d3: 0x0080, 0x26d4: 0x0080, 0x26d5: 0x0080, 0x26d6: 0x0080, 0x26d7: 0x00c0, - 0x26d8: 0x00c0, 0x26d9: 0x00c0, 0x26da: 0x00c0, 0x26db: 0x00c0, 0x26dc: 0x00c0, 0x26dd: 0x00c0, - 0x26de: 0x00c0, 0x26df: 0x00c0, 0x26e0: 0x0080, 0x26e1: 0x0080, 0x26e2: 0x00c0, 0x26e3: 0x00c0, - 0x26e4: 0x00c0, 0x26e5: 0x00c0, 0x26e6: 0x00c0, 0x26e7: 0x00c0, 0x26e8: 0x00c0, 0x26e9: 0x00c0, - 0x26ea: 0x00c0, 0x26eb: 0x00c0, 0x26ec: 0x00c0, 0x26ed: 0x00c0, 0x26ee: 0x00c0, 0x26ef: 0x00c0, - 0x26f0: 0x00c0, 0x26f1: 0x00c0, 0x26f2: 0x00c0, 0x26f3: 0x00c0, 0x26f4: 0x00c0, 0x26f5: 0x00c0, - 0x26f6: 0x00c0, 0x26f7: 0x00c0, 0x26f8: 0x00c0, 0x26f9: 0x00c0, 0x26fa: 0x00c0, 0x26fb: 0x00c0, - 0x26fc: 0x00c0, 0x26fd: 0x00c0, 0x26fe: 0x00c0, 0x26ff: 0x00c0, - // Block 0x9c, offset 0x2700 - 0x2700: 0x00c0, 0x2701: 0x00c0, 0x2702: 0x00c0, 0x2703: 0x00c0, 0x2704: 0x00c0, 0x2705: 0x00c0, - 0x2706: 0x00c0, 0x2707: 0x00c0, 0x2708: 0x00c0, 0x2709: 0x00c0, 0x270a: 0x00c0, 0x270b: 0x00c0, - 0x270c: 0x00c0, 0x270d: 0x00c0, 0x270e: 0x00c0, 0x270f: 0x00c0, 0x2710: 0x00c0, 0x2711: 0x00c0, - 0x2712: 0x00c0, 0x2713: 0x00c0, 0x2714: 0x00c0, 0x2715: 0x00c0, 0x2716: 0x00c0, 0x2717: 0x00c0, - 0x2718: 0x00c0, 0x2719: 0x00c0, 0x271a: 0x00c0, 0x271b: 0x00c0, 0x271c: 0x00c0, 0x271d: 0x00c0, - 0x271e: 0x00c0, 0x271f: 0x00c0, 0x2720: 0x00c0, 0x2721: 0x00c0, 0x2722: 0x00c0, 0x2723: 0x00c0, - 0x2724: 0x00c0, 0x2725: 0x00c0, 0x2726: 0x00c0, 0x2727: 0x00c0, 0x2728: 0x00c0, 0x2729: 0x00c0, - 0x272a: 0x00c0, 0x272b: 0x00c0, 0x272c: 0x00c0, 0x272d: 0x00c0, 0x272e: 0x00c0, 0x272f: 0x00c0, - 0x2730: 0x0080, 0x2731: 0x00c0, 0x2732: 0x00c0, 0x2733: 0x00c0, 0x2734: 0x00c0, 0x2735: 0x00c0, - 0x2736: 0x00c0, 0x2737: 0x00c0, 0x2738: 0x00c0, 0x2739: 0x00c0, 0x273a: 0x00c0, 0x273b: 0x00c0, - 0x273c: 0x00c0, 0x273d: 0x00c0, 0x273e: 0x00c0, 0x273f: 0x00c0, - // Block 0x9d, offset 0x2740 - 0x2740: 0x00c0, 0x2741: 0x00c0, 0x2742: 0x00c0, 0x2743: 0x00c0, 0x2744: 0x00c0, 0x2745: 0x00c0, - 0x2746: 0x00c0, 0x2747: 0x00c0, 0x2748: 0x00c0, 0x2749: 0x0080, 0x274a: 0x0080, 0x274b: 0x00c0, - 0x274c: 0x00c0, 0x274d: 0x00c0, 0x274e: 0x00c0, 0x274f: 0x00c0, 0x2750: 0x00c0, 0x2751: 0x00c0, - 0x2752: 0x00c0, 0x2753: 0x00c0, 0x2754: 0x00c0, 0x2755: 0x00c0, 0x2756: 0x00c0, 0x2757: 0x00c0, - 0x2758: 0x00c0, 0x2759: 0x00c0, 0x275a: 0x00c0, 0x275b: 0x00c0, 0x275c: 0x00c0, 0x275d: 0x00c0, - 0x275e: 0x00c0, 0x275f: 0x00c0, 0x2760: 0x00c0, 0x2761: 0x00c0, 0x2762: 0x00c0, 0x2763: 0x00c0, - 0x2764: 0x00c0, 0x2765: 0x00c0, 0x2766: 0x00c0, 0x2767: 0x00c0, 0x2768: 0x00c0, 0x2769: 0x00c0, - 0x276a: 0x00c0, 0x276b: 0x00c0, 0x276c: 0x00c0, 0x276d: 0x00c0, 0x276e: 0x00c0, - 0x2770: 0x00c0, 0x2771: 0x00c0, 0x2772: 0x00c0, 0x2773: 0x00c0, 0x2774: 0x00c0, 0x2775: 0x00c0, - 0x2776: 0x00c0, 0x2777: 0x00c0, - // Block 0x9e, offset 0x2780 - 0x27b7: 0x00c0, 0x27b8: 0x0080, 0x27b9: 0x0080, 0x27ba: 0x00c0, 0x27bb: 0x00c0, - 0x27bc: 0x00c0, 0x27bd: 0x00c0, 0x27be: 0x00c0, 0x27bf: 0x00c0, - // Block 0x9f, offset 0x27c0 - 0x27c0: 0x00c0, 0x27c1: 0x00c0, 0x27c2: 0x00c3, 0x27c3: 0x00c0, 0x27c4: 0x00c0, 0x27c5: 0x00c0, - 0x27c6: 0x00c6, 0x27c7: 0x00c0, 0x27c8: 0x00c0, 0x27c9: 0x00c0, 0x27ca: 0x00c0, 0x27cb: 0x00c3, - 0x27cc: 0x00c0, 0x27cd: 0x00c0, 0x27ce: 0x00c0, 0x27cf: 0x00c0, 0x27d0: 0x00c0, 0x27d1: 0x00c0, - 0x27d2: 0x00c0, 0x27d3: 0x00c0, 0x27d4: 0x00c0, 0x27d5: 0x00c0, 0x27d6: 0x00c0, 0x27d7: 0x00c0, - 0x27d8: 0x00c0, 0x27d9: 0x00c0, 0x27da: 0x00c0, 0x27db: 0x00c0, 0x27dc: 0x00c0, 0x27dd: 0x00c0, - 0x27de: 0x00c0, 0x27df: 0x00c0, 0x27e0: 0x00c0, 0x27e1: 0x00c0, 0x27e2: 0x00c0, 0x27e3: 0x00c0, - 0x27e4: 0x00c0, 0x27e5: 0x00c3, 0x27e6: 0x00c3, 0x27e7: 0x00c0, 0x27e8: 0x0080, 0x27e9: 0x0080, - 0x27ea: 0x0080, 0x27eb: 0x0080, - 0x27f0: 0x0080, 0x27f1: 0x0080, 0x27f2: 0x0080, 0x27f3: 0x0080, 0x27f4: 0x0080, 0x27f5: 0x0080, - 0x27f6: 0x0080, 0x27f7: 0x0080, 0x27f8: 0x0080, 0x27f9: 0x0080, - // Block 0xa0, offset 0x2800 - 0x2800: 0x00c2, 0x2801: 0x00c2, 0x2802: 0x00c2, 0x2803: 0x00c2, 0x2804: 0x00c2, 0x2805: 0x00c2, - 0x2806: 0x00c2, 0x2807: 0x00c2, 0x2808: 0x00c2, 0x2809: 0x00c2, 0x280a: 0x00c2, 0x280b: 0x00c2, - 0x280c: 0x00c2, 0x280d: 0x00c2, 0x280e: 0x00c2, 0x280f: 0x00c2, 0x2810: 0x00c2, 0x2811: 0x00c2, - 0x2812: 0x00c2, 0x2813: 0x00c2, 0x2814: 0x00c2, 0x2815: 0x00c2, 0x2816: 0x00c2, 0x2817: 0x00c2, - 0x2818: 0x00c2, 0x2819: 0x00c2, 0x281a: 0x00c2, 0x281b: 0x00c2, 0x281c: 0x00c2, 0x281d: 0x00c2, - 0x281e: 0x00c2, 0x281f: 0x00c2, 0x2820: 0x00c2, 0x2821: 0x00c2, 0x2822: 0x00c2, 0x2823: 0x00c2, - 0x2824: 0x00c2, 0x2825: 0x00c2, 0x2826: 0x00c2, 0x2827: 0x00c2, 0x2828: 0x00c2, 0x2829: 0x00c2, - 0x282a: 0x00c2, 0x282b: 0x00c2, 0x282c: 0x00c2, 0x282d: 0x00c2, 0x282e: 0x00c2, 0x282f: 0x00c2, - 0x2830: 0x00c2, 0x2831: 0x00c2, 0x2832: 0x00c1, 0x2833: 0x00c0, 0x2834: 0x0080, 0x2835: 0x0080, - 0x2836: 0x0080, 0x2837: 0x0080, - // Block 0xa1, offset 0x2840 - 0x2840: 0x00c0, 0x2841: 0x00c0, 0x2842: 0x00c0, 0x2843: 0x00c0, 0x2844: 0x00c6, 0x2845: 0x00c3, - 0x284e: 0x0080, 0x284f: 0x0080, 0x2850: 0x00c0, 0x2851: 0x00c0, - 0x2852: 0x00c0, 0x2853: 0x00c0, 0x2854: 0x00c0, 0x2855: 0x00c0, 0x2856: 0x00c0, 0x2857: 0x00c0, - 0x2858: 0x00c0, 0x2859: 0x00c0, - 0x2860: 0x00c3, 0x2861: 0x00c3, 0x2862: 0x00c3, 0x2863: 0x00c3, - 0x2864: 0x00c3, 0x2865: 0x00c3, 0x2866: 0x00c3, 0x2867: 0x00c3, 0x2868: 0x00c3, 0x2869: 0x00c3, - 0x286a: 0x00c3, 0x286b: 0x00c3, 0x286c: 0x00c3, 0x286d: 0x00c3, 0x286e: 0x00c3, 0x286f: 0x00c3, - 0x2870: 0x00c3, 0x2871: 0x00c3, 0x2872: 0x00c0, 0x2873: 0x00c0, 0x2874: 0x00c0, 0x2875: 0x00c0, - 0x2876: 0x00c0, 0x2877: 0x00c0, 0x2878: 0x0080, 0x2879: 0x0080, 0x287a: 0x0080, 0x287b: 0x00c0, - 0x287c: 0x0080, 0x287d: 0x00c0, - // Block 0xa2, offset 0x2880 - 0x2880: 0x00c0, 0x2881: 0x00c0, 0x2882: 0x00c0, 0x2883: 0x00c0, 0x2884: 0x00c0, 0x2885: 0x00c0, - 0x2886: 0x00c0, 0x2887: 0x00c0, 0x2888: 0x00c0, 0x2889: 0x00c0, 0x288a: 0x00c0, 0x288b: 0x00c0, - 0x288c: 0x00c0, 0x288d: 0x00c0, 0x288e: 0x00c0, 0x288f: 0x00c0, 0x2890: 0x00c0, 0x2891: 0x00c0, - 0x2892: 0x00c0, 0x2893: 0x00c0, 0x2894: 0x00c0, 0x2895: 0x00c0, 0x2896: 0x00c0, 0x2897: 0x00c0, - 0x2898: 0x00c0, 0x2899: 0x00c0, 0x289a: 0x00c0, 0x289b: 0x00c0, 0x289c: 0x00c0, 0x289d: 0x00c0, - 0x289e: 0x00c0, 0x289f: 0x00c0, 0x28a0: 0x00c0, 0x28a1: 0x00c0, 0x28a2: 0x00c0, 0x28a3: 0x00c0, - 0x28a4: 0x00c0, 0x28a5: 0x00c0, 0x28a6: 0x00c3, 0x28a7: 0x00c3, 0x28a8: 0x00c3, 0x28a9: 0x00c3, - 0x28aa: 0x00c3, 0x28ab: 0x00c3, 0x28ac: 0x00c3, 0x28ad: 0x00c3, 0x28ae: 0x0080, 0x28af: 0x0080, - 0x28b0: 0x00c0, 0x28b1: 0x00c0, 0x28b2: 0x00c0, 0x28b3: 0x00c0, 0x28b4: 0x00c0, 0x28b5: 0x00c0, - 0x28b6: 0x00c0, 0x28b7: 0x00c0, 0x28b8: 0x00c0, 0x28b9: 0x00c0, 0x28ba: 0x00c0, 0x28bb: 0x00c0, - 0x28bc: 0x00c0, 0x28bd: 0x00c0, 0x28be: 0x00c0, 0x28bf: 0x00c0, - // Block 0xa3, offset 0x28c0 - 0x28c0: 0x00c0, 0x28c1: 0x00c0, 0x28c2: 0x00c0, 0x28c3: 0x00c0, 0x28c4: 0x00c0, 0x28c5: 0x00c0, - 0x28c6: 0x00c0, 0x28c7: 0x00c3, 0x28c8: 0x00c3, 0x28c9: 0x00c3, 0x28ca: 0x00c3, 0x28cb: 0x00c3, - 0x28cc: 0x00c3, 0x28cd: 0x00c3, 0x28ce: 0x00c3, 0x28cf: 0x00c3, 0x28d0: 0x00c3, 0x28d1: 0x00c3, - 0x28d2: 0x00c0, 0x28d3: 0x00c5, - 0x28df: 0x0080, 0x28e0: 0x0040, 0x28e1: 0x0040, 0x28e2: 0x0040, 0x28e3: 0x0040, - 0x28e4: 0x0040, 0x28e5: 0x0040, 0x28e6: 0x0040, 0x28e7: 0x0040, 0x28e8: 0x0040, 0x28e9: 0x0040, - 0x28ea: 0x0040, 0x28eb: 0x0040, 0x28ec: 0x0040, 0x28ed: 0x0040, 0x28ee: 0x0040, 0x28ef: 0x0040, - 0x28f0: 0x0040, 0x28f1: 0x0040, 0x28f2: 0x0040, 0x28f3: 0x0040, 0x28f4: 0x0040, 0x28f5: 0x0040, - 0x28f6: 0x0040, 0x28f7: 0x0040, 0x28f8: 0x0040, 0x28f9: 0x0040, 0x28fa: 0x0040, 0x28fb: 0x0040, - 0x28fc: 0x0040, - // Block 0xa4, offset 0x2900 - 0x2900: 0x00c3, 0x2901: 0x00c3, 0x2902: 0x00c3, 0x2903: 0x00c0, 0x2904: 0x00c0, 0x2905: 0x00c0, - 0x2906: 0x00c0, 0x2907: 0x00c0, 0x2908: 0x00c0, 0x2909: 0x00c0, 0x290a: 0x00c0, 0x290b: 0x00c0, - 0x290c: 0x00c0, 0x290d: 0x00c0, 0x290e: 0x00c0, 0x290f: 0x00c0, 0x2910: 0x00c0, 0x2911: 0x00c0, - 0x2912: 0x00c0, 0x2913: 0x00c0, 0x2914: 0x00c0, 0x2915: 0x00c0, 0x2916: 0x00c0, 0x2917: 0x00c0, - 0x2918: 0x00c0, 0x2919: 0x00c0, 0x291a: 0x00c0, 0x291b: 0x00c0, 0x291c: 0x00c0, 0x291d: 0x00c0, - 0x291e: 0x00c0, 0x291f: 0x00c0, 0x2920: 0x00c0, 0x2921: 0x00c0, 0x2922: 0x00c0, 0x2923: 0x00c0, - 0x2924: 0x00c0, 0x2925: 0x00c0, 0x2926: 0x00c0, 0x2927: 0x00c0, 0x2928: 0x00c0, 0x2929: 0x00c0, - 0x292a: 0x00c0, 0x292b: 0x00c0, 0x292c: 0x00c0, 0x292d: 0x00c0, 0x292e: 0x00c0, 0x292f: 0x00c0, - 0x2930: 0x00c0, 0x2931: 0x00c0, 0x2932: 0x00c0, 0x2933: 0x00c3, 0x2934: 0x00c0, 0x2935: 0x00c0, - 0x2936: 0x00c3, 0x2937: 0x00c3, 0x2938: 0x00c3, 0x2939: 0x00c3, 0x293a: 0x00c0, 0x293b: 0x00c0, - 0x293c: 0x00c3, 0x293d: 0x00c0, 0x293e: 0x00c0, 0x293f: 0x00c0, - // Block 0xa5, offset 0x2940 - 0x2940: 0x00c5, 0x2941: 0x0080, 0x2942: 0x0080, 0x2943: 0x0080, 0x2944: 0x0080, 0x2945: 0x0080, - 0x2946: 0x0080, 0x2947: 0x0080, 0x2948: 0x0080, 0x2949: 0x0080, 0x294a: 0x0080, 0x294b: 0x0080, - 0x294c: 0x0080, 0x294d: 0x0080, 0x294f: 0x00c0, 0x2950: 0x00c0, 0x2951: 0x00c0, - 0x2952: 0x00c0, 0x2953: 0x00c0, 0x2954: 0x00c0, 0x2955: 0x00c0, 0x2956: 0x00c0, 0x2957: 0x00c0, - 0x2958: 0x00c0, 0x2959: 0x00c0, - 0x295e: 0x0080, 0x295f: 0x0080, 0x2960: 0x00c0, 0x2961: 0x00c0, 0x2962: 0x00c0, 0x2963: 0x00c0, - 0x2964: 0x00c0, 0x2965: 0x00c3, 0x2966: 0x00c0, 0x2967: 0x00c0, 0x2968: 0x00c0, 0x2969: 0x00c0, - 0x296a: 0x00c0, 0x296b: 0x00c0, 0x296c: 0x00c0, 0x296d: 0x00c0, 0x296e: 0x00c0, 0x296f: 0x00c0, - 0x2970: 0x00c0, 0x2971: 0x00c0, 0x2972: 0x00c0, 0x2973: 0x00c0, 0x2974: 0x00c0, 0x2975: 0x00c0, - 0x2976: 0x00c0, 0x2977: 0x00c0, 0x2978: 0x00c0, 0x2979: 0x00c0, 0x297a: 0x00c0, 0x297b: 0x00c0, - 0x297c: 0x00c0, 0x297d: 0x00c0, 0x297e: 0x00c0, - // Block 0xa6, offset 0x2980 - 0x2980: 0x00c0, 0x2981: 0x00c0, 0x2982: 0x00c0, 0x2983: 0x00c0, 0x2984: 0x00c0, 0x2985: 0x00c0, - 0x2986: 0x00c0, 0x2987: 0x00c0, 0x2988: 0x00c0, 0x2989: 0x00c0, 0x298a: 0x00c0, 0x298b: 0x00c0, - 0x298c: 0x00c0, 0x298d: 0x00c0, 0x298e: 0x00c0, 0x298f: 0x00c0, 0x2990: 0x00c0, 0x2991: 0x00c0, - 0x2992: 0x00c0, 0x2993: 0x00c0, 0x2994: 0x00c0, 0x2995: 0x00c0, 0x2996: 0x00c0, 0x2997: 0x00c0, - 0x2998: 0x00c0, 0x2999: 0x00c0, 0x299a: 0x00c0, 0x299b: 0x00c0, 0x299c: 0x00c0, 0x299d: 0x00c0, - 0x299e: 0x00c0, 0x299f: 0x00c0, 0x29a0: 0x00c0, 0x29a1: 0x00c0, 0x29a2: 0x00c0, 0x29a3: 0x00c0, - 0x29a4: 0x00c0, 0x29a5: 0x00c0, 0x29a6: 0x00c0, 0x29a7: 0x00c0, 0x29a8: 0x00c0, 0x29a9: 0x00c3, - 0x29aa: 0x00c3, 0x29ab: 0x00c3, 0x29ac: 0x00c3, 0x29ad: 0x00c3, 0x29ae: 0x00c3, 0x29af: 0x00c0, - 0x29b0: 0x00c0, 0x29b1: 0x00c3, 0x29b2: 0x00c3, 0x29b3: 0x00c0, 0x29b4: 0x00c0, 0x29b5: 0x00c3, - 0x29b6: 0x00c3, - // Block 0xa7, offset 0x29c0 - 0x29c0: 0x00c0, 0x29c1: 0x00c0, 0x29c2: 0x00c0, 0x29c3: 0x00c3, 0x29c4: 0x00c0, 0x29c5: 0x00c0, - 0x29c6: 0x00c0, 0x29c7: 0x00c0, 0x29c8: 0x00c0, 0x29c9: 0x00c0, 0x29ca: 0x00c0, 0x29cb: 0x00c0, - 0x29cc: 0x00c3, 0x29cd: 0x00c0, 0x29d0: 0x00c0, 0x29d1: 0x00c0, - 0x29d2: 0x00c0, 0x29d3: 0x00c0, 0x29d4: 0x00c0, 0x29d5: 0x00c0, 0x29d6: 0x00c0, 0x29d7: 0x00c0, - 0x29d8: 0x00c0, 0x29d9: 0x00c0, 0x29dc: 0x0080, 0x29dd: 0x0080, - 0x29de: 0x0080, 0x29df: 0x0080, 0x29e0: 0x00c0, 0x29e1: 0x00c0, 0x29e2: 0x00c0, 0x29e3: 0x00c0, - 0x29e4: 0x00c0, 0x29e5: 0x00c0, 0x29e6: 0x00c0, 0x29e7: 0x00c0, 0x29e8: 0x00c0, 0x29e9: 0x00c0, - 0x29ea: 0x00c0, 0x29eb: 0x00c0, 0x29ec: 0x00c0, 0x29ed: 0x00c0, 0x29ee: 0x00c0, 0x29ef: 0x00c0, - 0x29f0: 0x00c0, 0x29f1: 0x00c0, 0x29f2: 0x00c0, 0x29f3: 0x00c0, 0x29f4: 0x00c0, 0x29f5: 0x00c0, - 0x29f6: 0x00c0, 0x29f7: 0x0080, 0x29f8: 0x0080, 0x29f9: 0x0080, 0x29fa: 0x00c0, 0x29fb: 0x00c0, - 0x29fc: 0x00c3, 0x29fd: 0x00c0, 0x29fe: 0x00c0, 0x29ff: 0x00c0, - // Block 0xa8, offset 0x2a00 - 0x2a00: 0x00c0, 0x2a01: 0x00c0, 0x2a02: 0x00c0, 0x2a03: 0x00c0, 0x2a04: 0x00c0, 0x2a05: 0x00c0, - 0x2a06: 0x00c0, 0x2a07: 0x00c0, 0x2a08: 0x00c0, 0x2a09: 0x00c0, 0x2a0a: 0x00c0, 0x2a0b: 0x00c0, - 0x2a0c: 0x00c0, 0x2a0d: 0x00c0, 0x2a0e: 0x00c0, 0x2a0f: 0x00c0, 0x2a10: 0x00c0, 0x2a11: 0x00c0, - 0x2a12: 0x00c0, 0x2a13: 0x00c0, 0x2a14: 0x00c0, 0x2a15: 0x00c0, 0x2a16: 0x00c0, 0x2a17: 0x00c0, - 0x2a18: 0x00c0, 0x2a19: 0x00c0, 0x2a1a: 0x00c0, 0x2a1b: 0x00c0, 0x2a1c: 0x00c0, 0x2a1d: 0x00c0, - 0x2a1e: 0x00c0, 0x2a1f: 0x00c0, 0x2a20: 0x00c0, 0x2a21: 0x00c0, 0x2a22: 0x00c0, 0x2a23: 0x00c0, - 0x2a24: 0x00c0, 0x2a25: 0x00c0, 0x2a26: 0x00c0, 0x2a27: 0x00c0, 0x2a28: 0x00c0, 0x2a29: 0x00c0, - 0x2a2a: 0x00c0, 0x2a2b: 0x00c0, 0x2a2c: 0x00c0, 0x2a2d: 0x00c0, 0x2a2e: 0x00c0, 0x2a2f: 0x00c0, - 0x2a30: 0x00c3, 0x2a31: 0x00c0, 0x2a32: 0x00c3, 0x2a33: 0x00c3, 0x2a34: 0x00c3, 0x2a35: 0x00c0, - 0x2a36: 0x00c0, 0x2a37: 0x00c3, 0x2a38: 0x00c3, 0x2a39: 0x00c0, 0x2a3a: 0x00c0, 0x2a3b: 0x00c0, - 0x2a3c: 0x00c0, 0x2a3d: 0x00c0, 0x2a3e: 0x00c3, 0x2a3f: 0x00c3, - // Block 0xa9, offset 0x2a40 - 0x2a40: 0x00c0, 0x2a41: 0x00c3, 0x2a42: 0x00c0, - 0x2a5b: 0x00c0, 0x2a5c: 0x00c0, 0x2a5d: 0x00c0, - 0x2a5e: 0x0080, 0x2a5f: 0x0080, 0x2a60: 0x00c0, 0x2a61: 0x00c0, 0x2a62: 0x00c0, 0x2a63: 0x00c0, - 0x2a64: 0x00c0, 0x2a65: 0x00c0, 0x2a66: 0x00c0, 0x2a67: 0x00c0, 0x2a68: 0x00c0, 0x2a69: 0x00c0, - 0x2a6a: 0x00c0, 0x2a6b: 0x00c0, 0x2a6c: 0x00c3, 0x2a6d: 0x00c3, 0x2a6e: 0x00c0, 0x2a6f: 0x00c0, - 0x2a70: 0x0080, 0x2a71: 0x0080, 0x2a72: 0x00c0, 0x2a73: 0x00c0, 0x2a74: 0x00c0, 0x2a75: 0x00c0, - 0x2a76: 0x00c6, - // Block 0xaa, offset 0x2a80 - 0x2a81: 0x00c0, 0x2a82: 0x00c0, 0x2a83: 0x00c0, 0x2a84: 0x00c0, 0x2a85: 0x00c0, - 0x2a86: 0x00c0, 0x2a89: 0x00c0, 0x2a8a: 0x00c0, 0x2a8b: 0x00c0, - 0x2a8c: 0x00c0, 0x2a8d: 0x00c0, 0x2a8e: 0x00c0, 0x2a91: 0x00c0, - 0x2a92: 0x00c0, 0x2a93: 0x00c0, 0x2a94: 0x00c0, 0x2a95: 0x00c0, 0x2a96: 0x00c0, - 0x2aa0: 0x00c0, 0x2aa1: 0x00c0, 0x2aa2: 0x00c0, 0x2aa3: 0x00c0, - 0x2aa4: 0x00c0, 0x2aa5: 0x00c0, 0x2aa6: 0x00c0, 0x2aa8: 0x00c0, 0x2aa9: 0x00c0, - 0x2aaa: 0x00c0, 0x2aab: 0x00c0, 0x2aac: 0x00c0, 0x2aad: 0x00c0, 0x2aae: 0x00c0, - 0x2ab0: 0x00c0, 0x2ab1: 0x00c0, 0x2ab2: 0x00c0, 0x2ab3: 0x00c0, 0x2ab4: 0x00c0, 0x2ab5: 0x00c0, - 0x2ab6: 0x00c0, 0x2ab7: 0x00c0, 0x2ab8: 0x00c0, 0x2ab9: 0x00c0, 0x2aba: 0x00c0, 0x2abb: 0x00c0, - 0x2abc: 0x00c0, 0x2abd: 0x00c0, 0x2abe: 0x00c0, 0x2abf: 0x00c0, - // Block 0xab, offset 0x2ac0 - 0x2ac0: 0x00c0, 0x2ac1: 0x00c0, 0x2ac2: 0x00c0, 0x2ac3: 0x00c0, 0x2ac4: 0x00c0, 0x2ac5: 0x00c0, - 0x2ac6: 0x00c0, 0x2ac7: 0x00c0, 0x2ac8: 0x00c0, 0x2ac9: 0x00c0, 0x2aca: 0x00c0, 0x2acb: 0x00c0, - 0x2acc: 0x00c0, 0x2acd: 0x00c0, 0x2ace: 0x00c0, 0x2acf: 0x00c0, 0x2ad0: 0x00c0, 0x2ad1: 0x00c0, - 0x2ad2: 0x00c0, 0x2ad3: 0x00c0, 0x2ad4: 0x00c0, 0x2ad5: 0x00c0, 0x2ad6: 0x00c0, 0x2ad7: 0x00c0, - 0x2ad8: 0x00c0, 0x2ad9: 0x00c0, 0x2ada: 0x00c0, 0x2adb: 0x0080, 0x2adc: 0x0080, 0x2add: 0x0080, - 0x2ade: 0x0080, 0x2adf: 0x0080, 0x2ae0: 0x00c0, 0x2ae1: 0x00c0, 0x2ae2: 0x00c0, 0x2ae3: 0x00c0, - 0x2ae4: 0x00c0, 0x2ae5: 0x00c8, - 0x2af0: 0x00c0, 0x2af1: 0x00c0, 0x2af2: 0x00c0, 0x2af3: 0x00c0, 0x2af4: 0x00c0, 0x2af5: 0x00c0, - 0x2af6: 0x00c0, 0x2af7: 0x00c0, 0x2af8: 0x00c0, 0x2af9: 0x00c0, 0x2afa: 0x00c0, 0x2afb: 0x00c0, - 0x2afc: 0x00c0, 0x2afd: 0x00c0, 0x2afe: 0x00c0, 0x2aff: 0x00c0, - // Block 0xac, offset 0x2b00 - 0x2b00: 0x00c0, 0x2b01: 0x00c0, 0x2b02: 0x00c0, 0x2b03: 0x00c0, 0x2b04: 0x00c0, 0x2b05: 0x00c0, - 0x2b06: 0x00c0, 0x2b07: 0x00c0, 0x2b08: 0x00c0, 0x2b09: 0x00c0, 0x2b0a: 0x00c0, 0x2b0b: 0x00c0, - 0x2b0c: 0x00c0, 0x2b0d: 0x00c0, 0x2b0e: 0x00c0, 0x2b0f: 0x00c0, 0x2b10: 0x00c0, 0x2b11: 0x00c0, - 0x2b12: 0x00c0, 0x2b13: 0x00c0, 0x2b14: 0x00c0, 0x2b15: 0x00c0, 0x2b16: 0x00c0, 0x2b17: 0x00c0, - 0x2b18: 0x00c0, 0x2b19: 0x00c0, 0x2b1a: 0x00c0, 0x2b1b: 0x00c0, 0x2b1c: 0x00c0, 0x2b1d: 0x00c0, - 0x2b1e: 0x00c0, 0x2b1f: 0x00c0, 0x2b20: 0x00c0, 0x2b21: 0x00c0, 0x2b22: 0x00c0, 0x2b23: 0x00c0, - 0x2b24: 0x00c0, 0x2b25: 0x00c3, 0x2b26: 0x00c0, 0x2b27: 0x00c0, 0x2b28: 0x00c3, 0x2b29: 0x00c0, - 0x2b2a: 0x00c0, 0x2b2b: 0x0080, 0x2b2c: 0x00c0, 0x2b2d: 0x00c6, - 0x2b30: 0x00c0, 0x2b31: 0x00c0, 0x2b32: 0x00c0, 0x2b33: 0x00c0, 0x2b34: 0x00c0, 0x2b35: 0x00c0, - 0x2b36: 0x00c0, 0x2b37: 0x00c0, 0x2b38: 0x00c0, 0x2b39: 0x00c0, - // Block 0xad, offset 0x2b40 - 0x2b40: 0x00c0, 0x2b41: 0x00c0, 0x2b42: 0x00c0, 0x2b43: 0x00c0, 0x2b44: 0x00c0, 0x2b45: 0x00c0, - 0x2b46: 0x00c0, 0x2b47: 0x00c0, 0x2b48: 0x00c0, 0x2b49: 0x00c0, 0x2b4a: 0x00c0, 0x2b4b: 0x00c0, - 0x2b4c: 0x00c0, 0x2b4d: 0x00c0, 0x2b4e: 0x00c0, 0x2b4f: 0x00c0, 0x2b50: 0x00c0, 0x2b51: 0x00c0, - 0x2b52: 0x00c0, 0x2b53: 0x00c0, 0x2b54: 0x00c0, 0x2b55: 0x00c0, 0x2b56: 0x00c0, 0x2b57: 0x00c0, - 0x2b58: 0x00c0, 0x2b59: 0x00c0, 0x2b5a: 0x00c0, 0x2b5b: 0x00c0, 0x2b5c: 0x00c0, 0x2b5d: 0x00c0, - 0x2b5e: 0x00c0, 0x2b5f: 0x00c0, 0x2b60: 0x00c0, 0x2b61: 0x00c0, 0x2b62: 0x00c0, 0x2b63: 0x00c0, - 0x2b70: 0x0040, 0x2b71: 0x0040, 0x2b72: 0x0040, 0x2b73: 0x0040, 0x2b74: 0x0040, 0x2b75: 0x0040, - 0x2b76: 0x0040, 0x2b77: 0x0040, 0x2b78: 0x0040, 0x2b79: 0x0040, 0x2b7a: 0x0040, 0x2b7b: 0x0040, - 0x2b7c: 0x0040, 0x2b7d: 0x0040, 0x2b7e: 0x0040, 0x2b7f: 0x0040, - // Block 0xae, offset 0x2b80 - 0x2b80: 0x0040, 0x2b81: 0x0040, 0x2b82: 0x0040, 0x2b83: 0x0040, 0x2b84: 0x0040, 0x2b85: 0x0040, - 0x2b86: 0x0040, 0x2b8b: 0x0040, - 0x2b8c: 0x0040, 0x2b8d: 0x0040, 0x2b8e: 0x0040, 0x2b8f: 0x0040, 0x2b90: 0x0040, 0x2b91: 0x0040, - 0x2b92: 0x0040, 0x2b93: 0x0040, 0x2b94: 0x0040, 0x2b95: 0x0040, 0x2b96: 0x0040, 0x2b97: 0x0040, - 0x2b98: 0x0040, 0x2b99: 0x0040, 0x2b9a: 0x0040, 0x2b9b: 0x0040, 0x2b9c: 0x0040, 0x2b9d: 0x0040, - 0x2b9e: 0x0040, 0x2b9f: 0x0040, 0x2ba0: 0x0040, 0x2ba1: 0x0040, 0x2ba2: 0x0040, 0x2ba3: 0x0040, - 0x2ba4: 0x0040, 0x2ba5: 0x0040, 0x2ba6: 0x0040, 0x2ba7: 0x0040, 0x2ba8: 0x0040, 0x2ba9: 0x0040, - 0x2baa: 0x0040, 0x2bab: 0x0040, 0x2bac: 0x0040, 0x2bad: 0x0040, 0x2bae: 0x0040, 0x2baf: 0x0040, - 0x2bb0: 0x0040, 0x2bb1: 0x0040, 0x2bb2: 0x0040, 0x2bb3: 0x0040, 0x2bb4: 0x0040, 0x2bb5: 0x0040, - 0x2bb6: 0x0040, 0x2bb7: 0x0040, 0x2bb8: 0x0040, 0x2bb9: 0x0040, 0x2bba: 0x0040, 0x2bbb: 0x0040, - // Block 0xaf, offset 0x2bc0 - 0x2bc0: 0x008c, 0x2bc1: 0x008c, 0x2bc2: 0x008c, 0x2bc3: 0x008c, 0x2bc4: 0x008c, 0x2bc5: 0x008c, - 0x2bc6: 0x008c, 0x2bc7: 0x008c, 0x2bc8: 0x008c, 0x2bc9: 0x008c, 0x2bca: 0x008c, 0x2bcb: 0x008c, - 0x2bcc: 0x008c, 0x2bcd: 0x008c, 0x2bce: 0x00cc, 0x2bcf: 0x00cc, 0x2bd0: 0x008c, 0x2bd1: 0x00cc, - 0x2bd2: 0x008c, 0x2bd3: 0x00cc, 0x2bd4: 0x00cc, 0x2bd5: 0x008c, 0x2bd6: 0x008c, 0x2bd7: 0x008c, - 0x2bd8: 0x008c, 0x2bd9: 0x008c, 0x2bda: 0x008c, 0x2bdb: 0x008c, 0x2bdc: 0x008c, 0x2bdd: 0x008c, - 0x2bde: 0x008c, 0x2bdf: 0x00cc, 0x2be0: 0x008c, 0x2be1: 0x00cc, 0x2be2: 0x008c, 0x2be3: 0x00cc, - 0x2be4: 0x00cc, 0x2be5: 0x008c, 0x2be6: 0x008c, 0x2be7: 0x00cc, 0x2be8: 0x00cc, 0x2be9: 0x00cc, - 0x2bea: 0x008c, 0x2beb: 0x008c, 0x2bec: 0x008c, 0x2bed: 0x008c, 0x2bee: 0x008c, 0x2bef: 0x008c, - 0x2bf0: 0x008c, 0x2bf1: 0x008c, 0x2bf2: 0x008c, 0x2bf3: 0x008c, 0x2bf4: 0x008c, 0x2bf5: 0x008c, - 0x2bf6: 0x008c, 0x2bf7: 0x008c, 0x2bf8: 0x008c, 0x2bf9: 0x008c, 0x2bfa: 0x008c, 0x2bfb: 0x008c, - 0x2bfc: 0x008c, 0x2bfd: 0x008c, 0x2bfe: 0x008c, 0x2bff: 0x008c, - // Block 0xb0, offset 0x2c00 - 0x2c00: 0x008c, 0x2c01: 0x008c, 0x2c02: 0x008c, 0x2c03: 0x008c, 0x2c04: 0x008c, 0x2c05: 0x008c, - 0x2c06: 0x008c, 0x2c07: 0x008c, 0x2c08: 0x008c, 0x2c09: 0x008c, 0x2c0a: 0x008c, 0x2c0b: 0x008c, - 0x2c0c: 0x008c, 0x2c0d: 0x008c, 0x2c0e: 0x008c, 0x2c0f: 0x008c, 0x2c10: 0x008c, 0x2c11: 0x008c, - 0x2c12: 0x008c, 0x2c13: 0x008c, 0x2c14: 0x008c, 0x2c15: 0x008c, 0x2c16: 0x008c, 0x2c17: 0x008c, - 0x2c18: 0x008c, 0x2c19: 0x008c, 0x2c1a: 0x008c, 0x2c1b: 0x008c, 0x2c1c: 0x008c, 0x2c1d: 0x008c, - 0x2c1e: 0x008c, 0x2c1f: 0x008c, 0x2c20: 0x008c, 0x2c21: 0x008c, 0x2c22: 0x008c, 0x2c23: 0x008c, - 0x2c24: 0x008c, 0x2c25: 0x008c, 0x2c26: 0x008c, 0x2c27: 0x008c, 0x2c28: 0x008c, 0x2c29: 0x008c, - 0x2c2a: 0x008c, 0x2c2b: 0x008c, 0x2c2c: 0x008c, 0x2c2d: 0x008c, - 0x2c30: 0x008c, 0x2c31: 0x008c, 0x2c32: 0x008c, 0x2c33: 0x008c, 0x2c34: 0x008c, 0x2c35: 0x008c, - 0x2c36: 0x008c, 0x2c37: 0x008c, 0x2c38: 0x008c, 0x2c39: 0x008c, 0x2c3a: 0x008c, 0x2c3b: 0x008c, - 0x2c3c: 0x008c, 0x2c3d: 0x008c, 0x2c3e: 0x008c, 0x2c3f: 0x008c, - // Block 0xb1, offset 0x2c40 - 0x2c40: 0x008c, 0x2c41: 0x008c, 0x2c42: 0x008c, 0x2c43: 0x008c, 0x2c44: 0x008c, 0x2c45: 0x008c, - 0x2c46: 0x008c, 0x2c47: 0x008c, 0x2c48: 0x008c, 0x2c49: 0x008c, 0x2c4a: 0x008c, 0x2c4b: 0x008c, - 0x2c4c: 0x008c, 0x2c4d: 0x008c, 0x2c4e: 0x008c, 0x2c4f: 0x008c, 0x2c50: 0x008c, 0x2c51: 0x008c, - 0x2c52: 0x008c, 0x2c53: 0x008c, 0x2c54: 0x008c, 0x2c55: 0x008c, 0x2c56: 0x008c, 0x2c57: 0x008c, - 0x2c58: 0x008c, 0x2c59: 0x008c, - // Block 0xb2, offset 0x2c80 - 0x2c80: 0x0080, 0x2c81: 0x0080, 0x2c82: 0x0080, 0x2c83: 0x0080, 0x2c84: 0x0080, 0x2c85: 0x0080, - 0x2c86: 0x0080, - 0x2c93: 0x0080, 0x2c94: 0x0080, 0x2c95: 0x0080, 0x2c96: 0x0080, 0x2c97: 0x0080, - 0x2c9d: 0x008a, - 0x2c9e: 0x00cb, 0x2c9f: 0x008a, 0x2ca0: 0x008a, 0x2ca1: 0x008a, 0x2ca2: 0x008a, 0x2ca3: 0x008a, - 0x2ca4: 0x008a, 0x2ca5: 0x008a, 0x2ca6: 0x008a, 0x2ca7: 0x008a, 0x2ca8: 0x008a, 0x2ca9: 0x008a, - 0x2caa: 0x008a, 0x2cab: 0x008a, 0x2cac: 0x008a, 0x2cad: 0x008a, 0x2cae: 0x008a, 0x2caf: 0x008a, - 0x2cb0: 0x008a, 0x2cb1: 0x008a, 0x2cb2: 0x008a, 0x2cb3: 0x008a, 0x2cb4: 0x008a, 0x2cb5: 0x008a, - 0x2cb6: 0x008a, 0x2cb8: 0x008a, 0x2cb9: 0x008a, 0x2cba: 0x008a, 0x2cbb: 0x008a, - 0x2cbc: 0x008a, 0x2cbe: 0x008a, - // Block 0xb3, offset 0x2cc0 - 0x2cc0: 0x008a, 0x2cc1: 0x008a, 0x2cc3: 0x008a, 0x2cc4: 0x008a, - 0x2cc6: 0x008a, 0x2cc7: 0x008a, 0x2cc8: 0x008a, 0x2cc9: 0x008a, 0x2cca: 0x008a, 0x2ccb: 0x008a, - 0x2ccc: 0x008a, 0x2ccd: 0x008a, 0x2cce: 0x008a, 0x2ccf: 0x008a, 0x2cd0: 0x0080, 0x2cd1: 0x0080, - 0x2cd2: 0x0080, 0x2cd3: 0x0080, 0x2cd4: 0x0080, 0x2cd5: 0x0080, 0x2cd6: 0x0080, 0x2cd7: 0x0080, - 0x2cd8: 0x0080, 0x2cd9: 0x0080, 0x2cda: 0x0080, 0x2cdb: 0x0080, 0x2cdc: 0x0080, 0x2cdd: 0x0080, - 0x2cde: 0x0080, 0x2cdf: 0x0080, 0x2ce0: 0x0080, 0x2ce1: 0x0080, 0x2ce2: 0x0080, 0x2ce3: 0x0080, - 0x2ce4: 0x0080, 0x2ce5: 0x0080, 0x2ce6: 0x0080, 0x2ce7: 0x0080, 0x2ce8: 0x0080, 0x2ce9: 0x0080, - 0x2cea: 0x0080, 0x2ceb: 0x0080, 0x2cec: 0x0080, 0x2ced: 0x0080, 0x2cee: 0x0080, 0x2cef: 0x0080, - 0x2cf0: 0x0080, 0x2cf1: 0x0080, 0x2cf2: 0x0080, 0x2cf3: 0x0080, 0x2cf4: 0x0080, 0x2cf5: 0x0080, - 0x2cf6: 0x0080, 0x2cf7: 0x0080, 0x2cf8: 0x0080, 0x2cf9: 0x0080, 0x2cfa: 0x0080, 0x2cfb: 0x0080, - 0x2cfc: 0x0080, 0x2cfd: 0x0080, 0x2cfe: 0x0080, 0x2cff: 0x0080, - // Block 0xb4, offset 0x2d00 - 0x2d00: 0x0080, 0x2d01: 0x0080, - 0x2d13: 0x0080, 0x2d14: 0x0080, 0x2d15: 0x0080, 0x2d16: 0x0080, 0x2d17: 0x0080, - 0x2d18: 0x0080, 0x2d19: 0x0080, 0x2d1a: 0x0080, 0x2d1b: 0x0080, 0x2d1c: 0x0080, 0x2d1d: 0x0080, - 0x2d1e: 0x0080, 0x2d1f: 0x0080, 0x2d20: 0x0080, 0x2d21: 0x0080, 0x2d22: 0x0080, 0x2d23: 0x0080, - 0x2d24: 0x0080, 0x2d25: 0x0080, 0x2d26: 0x0080, 0x2d27: 0x0080, 0x2d28: 0x0080, 0x2d29: 0x0080, - 0x2d2a: 0x0080, 0x2d2b: 0x0080, 0x2d2c: 0x0080, 0x2d2d: 0x0080, 0x2d2e: 0x0080, 0x2d2f: 0x0080, - 0x2d30: 0x0080, 0x2d31: 0x0080, 0x2d32: 0x0080, 0x2d33: 0x0080, 0x2d34: 0x0080, 0x2d35: 0x0080, - 0x2d36: 0x0080, 0x2d37: 0x0080, 0x2d38: 0x0080, 0x2d39: 0x0080, 0x2d3a: 0x0080, 0x2d3b: 0x0080, - 0x2d3c: 0x0080, 0x2d3d: 0x0080, 0x2d3e: 0x0080, 0x2d3f: 0x0080, - // Block 0xb5, offset 0x2d40 - 0x2d50: 0x0080, 0x2d51: 0x0080, - 0x2d52: 0x0080, 0x2d53: 0x0080, 0x2d54: 0x0080, 0x2d55: 0x0080, 0x2d56: 0x0080, 0x2d57: 0x0080, - 0x2d58: 0x0080, 0x2d59: 0x0080, 0x2d5a: 0x0080, 0x2d5b: 0x0080, 0x2d5c: 0x0080, 0x2d5d: 0x0080, - 0x2d5e: 0x0080, 0x2d5f: 0x0080, 0x2d60: 0x0080, 0x2d61: 0x0080, 0x2d62: 0x0080, 0x2d63: 0x0080, - 0x2d64: 0x0080, 0x2d65: 0x0080, 0x2d66: 0x0080, 0x2d67: 0x0080, 0x2d68: 0x0080, 0x2d69: 0x0080, - 0x2d6a: 0x0080, 0x2d6b: 0x0080, 0x2d6c: 0x0080, 0x2d6d: 0x0080, 0x2d6e: 0x0080, 0x2d6f: 0x0080, - 0x2d70: 0x0080, 0x2d71: 0x0080, 0x2d72: 0x0080, 0x2d73: 0x0080, 0x2d74: 0x0080, 0x2d75: 0x0080, - 0x2d76: 0x0080, 0x2d77: 0x0080, 0x2d78: 0x0080, 0x2d79: 0x0080, 0x2d7a: 0x0080, 0x2d7b: 0x0080, - 0x2d7c: 0x0080, 0x2d7d: 0x0080, 0x2d7e: 0x0080, 0x2d7f: 0x0080, - // Block 0xb6, offset 0x2d80 - 0x2d80: 0x0080, 0x2d81: 0x0080, 0x2d82: 0x0080, 0x2d83: 0x0080, 0x2d84: 0x0080, 0x2d85: 0x0080, - 0x2d86: 0x0080, 0x2d87: 0x0080, 0x2d88: 0x0080, 0x2d89: 0x0080, 0x2d8a: 0x0080, 0x2d8b: 0x0080, - 0x2d8c: 0x0080, 0x2d8d: 0x0080, 0x2d8e: 0x0080, 0x2d8f: 0x0080, - 0x2d92: 0x0080, 0x2d93: 0x0080, 0x2d94: 0x0080, 0x2d95: 0x0080, 0x2d96: 0x0080, 0x2d97: 0x0080, - 0x2d98: 0x0080, 0x2d99: 0x0080, 0x2d9a: 0x0080, 0x2d9b: 0x0080, 0x2d9c: 0x0080, 0x2d9d: 0x0080, - 0x2d9e: 0x0080, 0x2d9f: 0x0080, 0x2da0: 0x0080, 0x2da1: 0x0080, 0x2da2: 0x0080, 0x2da3: 0x0080, - 0x2da4: 0x0080, 0x2da5: 0x0080, 0x2da6: 0x0080, 0x2da7: 0x0080, 0x2da8: 0x0080, 0x2da9: 0x0080, - 0x2daa: 0x0080, 0x2dab: 0x0080, 0x2dac: 0x0080, 0x2dad: 0x0080, 0x2dae: 0x0080, 0x2daf: 0x0080, - 0x2db0: 0x0080, 0x2db1: 0x0080, 0x2db2: 0x0080, 0x2db3: 0x0080, 0x2db4: 0x0080, 0x2db5: 0x0080, - 0x2db6: 0x0080, 0x2db7: 0x0080, 0x2db8: 0x0080, 0x2db9: 0x0080, 0x2dba: 0x0080, 0x2dbb: 0x0080, - 0x2dbc: 0x0080, 0x2dbd: 0x0080, 0x2dbe: 0x0080, 0x2dbf: 0x0080, - // Block 0xb7, offset 0x2dc0 - 0x2dc0: 0x0080, 0x2dc1: 0x0080, 0x2dc2: 0x0080, 0x2dc3: 0x0080, 0x2dc4: 0x0080, 0x2dc5: 0x0080, - 0x2dc6: 0x0080, 0x2dc7: 0x0080, - 0x2df0: 0x0080, 0x2df1: 0x0080, 0x2df2: 0x0080, 0x2df3: 0x0080, 0x2df4: 0x0080, 0x2df5: 0x0080, - 0x2df6: 0x0080, 0x2df7: 0x0080, 0x2df8: 0x0080, 0x2df9: 0x0080, 0x2dfa: 0x0080, 0x2dfb: 0x0080, - 0x2dfc: 0x0080, 0x2dfd: 0x0080, - // Block 0xb8, offset 0x2e00 - 0x2e00: 0x0040, 0x2e01: 0x0040, 0x2e02: 0x0040, 0x2e03: 0x0040, 0x2e04: 0x0040, 0x2e05: 0x0040, - 0x2e06: 0x0040, 0x2e07: 0x0040, 0x2e08: 0x0040, 0x2e09: 0x0040, 0x2e0a: 0x0040, 0x2e0b: 0x0040, - 0x2e0c: 0x0040, 0x2e0d: 0x0040, 0x2e0e: 0x0040, 0x2e0f: 0x0040, 0x2e10: 0x0080, 0x2e11: 0x0080, - 0x2e12: 0x0080, 0x2e13: 0x0080, 0x2e14: 0x0080, 0x2e15: 0x0080, 0x2e16: 0x0080, 0x2e17: 0x0080, - 0x2e18: 0x0080, 0x2e19: 0x0080, - 0x2e20: 0x00c3, 0x2e21: 0x00c3, 0x2e22: 0x00c3, 0x2e23: 0x00c3, - 0x2e24: 0x00c3, 0x2e25: 0x00c3, 0x2e26: 0x00c3, 0x2e27: 0x00c3, 0x2e28: 0x00c3, 0x2e29: 0x00c3, - 0x2e2a: 0x00c3, 0x2e2b: 0x00c3, 0x2e2c: 0x00c3, 0x2e2d: 0x00c3, 0x2e2e: 0x00c3, 0x2e2f: 0x00c3, - 0x2e30: 0x0080, 0x2e31: 0x0080, 0x2e32: 0x0080, 0x2e33: 0x0080, 0x2e34: 0x0080, 0x2e35: 0x0080, - 0x2e36: 0x0080, 0x2e37: 0x0080, 0x2e38: 0x0080, 0x2e39: 0x0080, 0x2e3a: 0x0080, 0x2e3b: 0x0080, - 0x2e3c: 0x0080, 0x2e3d: 0x0080, 0x2e3e: 0x0080, 0x2e3f: 0x0080, - // Block 0xb9, offset 0x2e40 - 0x2e40: 0x0080, 0x2e41: 0x0080, 0x2e42: 0x0080, 0x2e43: 0x0080, 0x2e44: 0x0080, 0x2e45: 0x0080, - 0x2e46: 0x0080, 0x2e47: 0x0080, 0x2e48: 0x0080, 0x2e49: 0x0080, 0x2e4a: 0x0080, 0x2e4b: 0x0080, - 0x2e4c: 0x0080, 0x2e4d: 0x0080, 0x2e4e: 0x0080, 0x2e4f: 0x0080, 0x2e50: 0x0080, 0x2e51: 0x0080, - 0x2e52: 0x0080, 0x2e54: 0x0080, 0x2e55: 0x0080, 0x2e56: 0x0080, 0x2e57: 0x0080, - 0x2e58: 0x0080, 0x2e59: 0x0080, 0x2e5a: 0x0080, 0x2e5b: 0x0080, 0x2e5c: 0x0080, 0x2e5d: 0x0080, - 0x2e5e: 0x0080, 0x2e5f: 0x0080, 0x2e60: 0x0080, 0x2e61: 0x0080, 0x2e62: 0x0080, 0x2e63: 0x0080, - 0x2e64: 0x0080, 0x2e65: 0x0080, 0x2e66: 0x0080, 0x2e68: 0x0080, 0x2e69: 0x0080, - 0x2e6a: 0x0080, 0x2e6b: 0x0080, - 0x2e70: 0x0080, 0x2e71: 0x0080, 0x2e72: 0x0080, 0x2e73: 0x00c0, 0x2e74: 0x0080, - 0x2e76: 0x0080, 0x2e77: 0x0080, 0x2e78: 0x0080, 0x2e79: 0x0080, 0x2e7a: 0x0080, 0x2e7b: 0x0080, - 0x2e7c: 0x0080, 0x2e7d: 0x0080, 0x2e7e: 0x0080, 0x2e7f: 0x0080, - // Block 0xba, offset 0x2e80 - 0x2e80: 0x0080, 0x2e81: 0x0080, 0x2e82: 0x0080, 0x2e83: 0x0080, 0x2e84: 0x0080, 0x2e85: 0x0080, - 0x2e86: 0x0080, 0x2e87: 0x0080, 0x2e88: 0x0080, 0x2e89: 0x0080, 0x2e8a: 0x0080, 0x2e8b: 0x0080, - 0x2e8c: 0x0080, 0x2e8d: 0x0080, 0x2e8e: 0x0080, 0x2e8f: 0x0080, 0x2e90: 0x0080, 0x2e91: 0x0080, - 0x2e92: 0x0080, 0x2e93: 0x0080, 0x2e94: 0x0080, 0x2e95: 0x0080, 0x2e96: 0x0080, 0x2e97: 0x0080, - 0x2e98: 0x0080, 0x2e99: 0x0080, 0x2e9a: 0x0080, 0x2e9b: 0x0080, 0x2e9c: 0x0080, 0x2e9d: 0x0080, - 0x2e9e: 0x0080, 0x2e9f: 0x0080, 0x2ea0: 0x0080, 0x2ea1: 0x0080, 0x2ea2: 0x0080, 0x2ea3: 0x0080, - 0x2ea4: 0x0080, 0x2ea5: 0x0080, 0x2ea6: 0x0080, 0x2ea7: 0x0080, 0x2ea8: 0x0080, 0x2ea9: 0x0080, - 0x2eaa: 0x0080, 0x2eab: 0x0080, 0x2eac: 0x0080, 0x2ead: 0x0080, 0x2eae: 0x0080, 0x2eaf: 0x0080, - 0x2eb0: 0x0080, 0x2eb1: 0x0080, 0x2eb2: 0x0080, 0x2eb3: 0x0080, 0x2eb4: 0x0080, 0x2eb5: 0x0080, - 0x2eb6: 0x0080, 0x2eb7: 0x0080, 0x2eb8: 0x0080, 0x2eb9: 0x0080, 0x2eba: 0x0080, 0x2ebb: 0x0080, - 0x2ebc: 0x0080, 0x2ebf: 0x0040, - // Block 0xbb, offset 0x2ec0 - 0x2ec1: 0x0080, 0x2ec2: 0x0080, 0x2ec3: 0x0080, 0x2ec4: 0x0080, 0x2ec5: 0x0080, - 0x2ec6: 0x0080, 0x2ec7: 0x0080, 0x2ec8: 0x0080, 0x2ec9: 0x0080, 0x2eca: 0x0080, 0x2ecb: 0x0080, - 0x2ecc: 0x0080, 0x2ecd: 0x0080, 0x2ece: 0x0080, 0x2ecf: 0x0080, 0x2ed0: 0x0080, 0x2ed1: 0x0080, - 0x2ed2: 0x0080, 0x2ed3: 0x0080, 0x2ed4: 0x0080, 0x2ed5: 0x0080, 0x2ed6: 0x0080, 0x2ed7: 0x0080, - 0x2ed8: 0x0080, 0x2ed9: 0x0080, 0x2eda: 0x0080, 0x2edb: 0x0080, 0x2edc: 0x0080, 0x2edd: 0x0080, - 0x2ede: 0x0080, 0x2edf: 0x0080, 0x2ee0: 0x0080, 0x2ee1: 0x0080, 0x2ee2: 0x0080, 0x2ee3: 0x0080, - 0x2ee4: 0x0080, 0x2ee5: 0x0080, 0x2ee6: 0x0080, 0x2ee7: 0x0080, 0x2ee8: 0x0080, 0x2ee9: 0x0080, - 0x2eea: 0x0080, 0x2eeb: 0x0080, 0x2eec: 0x0080, 0x2eed: 0x0080, 0x2eee: 0x0080, 0x2eef: 0x0080, - 0x2ef0: 0x0080, 0x2ef1: 0x0080, 0x2ef2: 0x0080, 0x2ef3: 0x0080, 0x2ef4: 0x0080, 0x2ef5: 0x0080, - 0x2ef6: 0x0080, 0x2ef7: 0x0080, 0x2ef8: 0x0080, 0x2ef9: 0x0080, 0x2efa: 0x0080, 0x2efb: 0x0080, - 0x2efc: 0x0080, 0x2efd: 0x0080, 0x2efe: 0x0080, 0x2eff: 0x0080, - // Block 0xbc, offset 0x2f00 - 0x2f00: 0x0080, 0x2f01: 0x0080, 0x2f02: 0x0080, 0x2f03: 0x0080, 0x2f04: 0x0080, 0x2f05: 0x0080, - 0x2f06: 0x0080, 0x2f07: 0x0080, 0x2f08: 0x0080, 0x2f09: 0x0080, 0x2f0a: 0x0080, 0x2f0b: 0x0080, - 0x2f0c: 0x0080, 0x2f0d: 0x0080, 0x2f0e: 0x0080, 0x2f0f: 0x0080, 0x2f10: 0x0080, 0x2f11: 0x0080, - 0x2f12: 0x0080, 0x2f13: 0x0080, 0x2f14: 0x0080, 0x2f15: 0x0080, 0x2f16: 0x0080, 0x2f17: 0x0080, - 0x2f18: 0x0080, 0x2f19: 0x0080, 0x2f1a: 0x0080, 0x2f1b: 0x0080, 0x2f1c: 0x0080, 0x2f1d: 0x0080, - 0x2f1e: 0x0080, 0x2f1f: 0x0080, 0x2f20: 0x0080, 0x2f21: 0x0080, 0x2f22: 0x0080, 0x2f23: 0x0080, - 0x2f24: 0x0080, 0x2f25: 0x0080, 0x2f26: 0x008c, 0x2f27: 0x008c, 0x2f28: 0x008c, 0x2f29: 0x008c, - 0x2f2a: 0x008c, 0x2f2b: 0x008c, 0x2f2c: 0x008c, 0x2f2d: 0x008c, 0x2f2e: 0x008c, 0x2f2f: 0x008c, - 0x2f30: 0x0080, 0x2f31: 0x008c, 0x2f32: 0x008c, 0x2f33: 0x008c, 0x2f34: 0x008c, 0x2f35: 0x008c, - 0x2f36: 0x008c, 0x2f37: 0x008c, 0x2f38: 0x008c, 0x2f39: 0x008c, 0x2f3a: 0x008c, 0x2f3b: 0x008c, - 0x2f3c: 0x008c, 0x2f3d: 0x008c, 0x2f3e: 0x008c, 0x2f3f: 0x008c, - // Block 0xbd, offset 0x2f40 - 0x2f40: 0x008c, 0x2f41: 0x008c, 0x2f42: 0x008c, 0x2f43: 0x008c, 0x2f44: 0x008c, 0x2f45: 0x008c, - 0x2f46: 0x008c, 0x2f47: 0x008c, 0x2f48: 0x008c, 0x2f49: 0x008c, 0x2f4a: 0x008c, 0x2f4b: 0x008c, - 0x2f4c: 0x008c, 0x2f4d: 0x008c, 0x2f4e: 0x008c, 0x2f4f: 0x008c, 0x2f50: 0x008c, 0x2f51: 0x008c, - 0x2f52: 0x008c, 0x2f53: 0x008c, 0x2f54: 0x008c, 0x2f55: 0x008c, 0x2f56: 0x008c, 0x2f57: 0x008c, - 0x2f58: 0x008c, 0x2f59: 0x008c, 0x2f5a: 0x008c, 0x2f5b: 0x008c, 0x2f5c: 0x008c, 0x2f5d: 0x008c, - 0x2f5e: 0x0080, 0x2f5f: 0x0080, 0x2f60: 0x0040, 0x2f61: 0x0080, 0x2f62: 0x0080, 0x2f63: 0x0080, - 0x2f64: 0x0080, 0x2f65: 0x0080, 0x2f66: 0x0080, 0x2f67: 0x0080, 0x2f68: 0x0080, 0x2f69: 0x0080, - 0x2f6a: 0x0080, 0x2f6b: 0x0080, 0x2f6c: 0x0080, 0x2f6d: 0x0080, 0x2f6e: 0x0080, 0x2f6f: 0x0080, - 0x2f70: 0x0080, 0x2f71: 0x0080, 0x2f72: 0x0080, 0x2f73: 0x0080, 0x2f74: 0x0080, 0x2f75: 0x0080, - 0x2f76: 0x0080, 0x2f77: 0x0080, 0x2f78: 0x0080, 0x2f79: 0x0080, 0x2f7a: 0x0080, 0x2f7b: 0x0080, - 0x2f7c: 0x0080, 0x2f7d: 0x0080, 0x2f7e: 0x0080, - // Block 0xbe, offset 0x2f80 - 0x2f82: 0x0080, 0x2f83: 0x0080, 0x2f84: 0x0080, 0x2f85: 0x0080, - 0x2f86: 0x0080, 0x2f87: 0x0080, 0x2f8a: 0x0080, 0x2f8b: 0x0080, - 0x2f8c: 0x0080, 0x2f8d: 0x0080, 0x2f8e: 0x0080, 0x2f8f: 0x0080, - 0x2f92: 0x0080, 0x2f93: 0x0080, 0x2f94: 0x0080, 0x2f95: 0x0080, 0x2f96: 0x0080, 0x2f97: 0x0080, - 0x2f9a: 0x0080, 0x2f9b: 0x0080, 0x2f9c: 0x0080, - 0x2fa0: 0x0080, 0x2fa1: 0x0080, 0x2fa2: 0x0080, 0x2fa3: 0x0080, - 0x2fa4: 0x0080, 0x2fa5: 0x0080, 0x2fa6: 0x0080, 0x2fa8: 0x0080, 0x2fa9: 0x0080, - 0x2faa: 0x0080, 0x2fab: 0x0080, 0x2fac: 0x0080, 0x2fad: 0x0080, 0x2fae: 0x0080, - 0x2fb9: 0x0040, 0x2fba: 0x0040, 0x2fbb: 0x0040, - 0x2fbc: 0x0080, 0x2fbd: 0x0080, - // Block 0xbf, offset 0x2fc0 - 0x2fc0: 0x00c0, 0x2fc1: 0x00c0, 0x2fc2: 0x00c0, 0x2fc3: 0x00c0, 0x2fc4: 0x00c0, 0x2fc5: 0x00c0, - 0x2fc6: 0x00c0, 0x2fc7: 0x00c0, 0x2fc8: 0x00c0, 0x2fc9: 0x00c0, 0x2fca: 0x00c0, 0x2fcb: 0x00c0, - 0x2fcd: 0x00c0, 0x2fce: 0x00c0, 0x2fcf: 0x00c0, 0x2fd0: 0x00c0, 0x2fd1: 0x00c0, - 0x2fd2: 0x00c0, 0x2fd3: 0x00c0, 0x2fd4: 0x00c0, 0x2fd5: 0x00c0, 0x2fd6: 0x00c0, 0x2fd7: 0x00c0, - 0x2fd8: 0x00c0, 0x2fd9: 0x00c0, 0x2fda: 0x00c0, 0x2fdb: 0x00c0, 0x2fdc: 0x00c0, 0x2fdd: 0x00c0, - 0x2fde: 0x00c0, 0x2fdf: 0x00c0, 0x2fe0: 0x00c0, 0x2fe1: 0x00c0, 0x2fe2: 0x00c0, 0x2fe3: 0x00c0, - 0x2fe4: 0x00c0, 0x2fe5: 0x00c0, 0x2fe6: 0x00c0, 0x2fe8: 0x00c0, 0x2fe9: 0x00c0, - 0x2fea: 0x00c0, 0x2feb: 0x00c0, 0x2fec: 0x00c0, 0x2fed: 0x00c0, 0x2fee: 0x00c0, 0x2fef: 0x00c0, - 0x2ff0: 0x00c0, 0x2ff1: 0x00c0, 0x2ff2: 0x00c0, 0x2ff3: 0x00c0, 0x2ff4: 0x00c0, 0x2ff5: 0x00c0, - 0x2ff6: 0x00c0, 0x2ff7: 0x00c0, 0x2ff8: 0x00c0, 0x2ff9: 0x00c0, 0x2ffa: 0x00c0, - 0x2ffc: 0x00c0, 0x2ffd: 0x00c0, 0x2fff: 0x00c0, - // Block 0xc0, offset 0x3000 - 0x3000: 0x00c0, 0x3001: 0x00c0, 0x3002: 0x00c0, 0x3003: 0x00c0, 0x3004: 0x00c0, 0x3005: 0x00c0, - 0x3006: 0x00c0, 0x3007: 0x00c0, 0x3008: 0x00c0, 0x3009: 0x00c0, 0x300a: 0x00c0, 0x300b: 0x00c0, - 0x300c: 0x00c0, 0x300d: 0x00c0, 0x3010: 0x00c0, 0x3011: 0x00c0, - 0x3012: 0x00c0, 0x3013: 0x00c0, 0x3014: 0x00c0, 0x3015: 0x00c0, 0x3016: 0x00c0, 0x3017: 0x00c0, - 0x3018: 0x00c0, 0x3019: 0x00c0, 0x301a: 0x00c0, 0x301b: 0x00c0, 0x301c: 0x00c0, 0x301d: 0x00c0, - // Block 0xc1, offset 0x3040 - 0x3040: 0x00c0, 0x3041: 0x00c0, 0x3042: 0x00c0, 0x3043: 0x00c0, 0x3044: 0x00c0, 0x3045: 0x00c0, - 0x3046: 0x00c0, 0x3047: 0x00c0, 0x3048: 0x00c0, 0x3049: 0x00c0, 0x304a: 0x00c0, 0x304b: 0x00c0, - 0x304c: 0x00c0, 0x304d: 0x00c0, 0x304e: 0x00c0, 0x304f: 0x00c0, 0x3050: 0x00c0, 0x3051: 0x00c0, - 0x3052: 0x00c0, 0x3053: 0x00c0, 0x3054: 0x00c0, 0x3055: 0x00c0, 0x3056: 0x00c0, 0x3057: 0x00c0, - 0x3058: 0x00c0, 0x3059: 0x00c0, 0x305a: 0x00c0, 0x305b: 0x00c0, 0x305c: 0x00c0, 0x305d: 0x00c0, - 0x305e: 0x00c0, 0x305f: 0x00c0, 0x3060: 0x00c0, 0x3061: 0x00c0, 0x3062: 0x00c0, 0x3063: 0x00c0, - 0x3064: 0x00c0, 0x3065: 0x00c0, 0x3066: 0x00c0, 0x3067: 0x00c0, 0x3068: 0x00c0, 0x3069: 0x00c0, - 0x306a: 0x00c0, 0x306b: 0x00c0, 0x306c: 0x00c0, 0x306d: 0x00c0, 0x306e: 0x00c0, 0x306f: 0x00c0, - 0x3070: 0x00c0, 0x3071: 0x00c0, 0x3072: 0x00c0, 0x3073: 0x00c0, 0x3074: 0x00c0, 0x3075: 0x00c0, - 0x3076: 0x00c0, 0x3077: 0x00c0, 0x3078: 0x00c0, 0x3079: 0x00c0, 0x307a: 0x00c0, - // Block 0xc2, offset 0x3080 - 0x3080: 0x0080, 0x3081: 0x0080, 0x3082: 0x0080, - 0x3087: 0x0080, 0x3088: 0x0080, 0x3089: 0x0080, 0x308a: 0x0080, 0x308b: 0x0080, - 0x308c: 0x0080, 0x308d: 0x0080, 0x308e: 0x0080, 0x308f: 0x0080, 0x3090: 0x0080, 0x3091: 0x0080, - 0x3092: 0x0080, 0x3093: 0x0080, 0x3094: 0x0080, 0x3095: 0x0080, 0x3096: 0x0080, 0x3097: 0x0080, - 0x3098: 0x0080, 0x3099: 0x0080, 0x309a: 0x0080, 0x309b: 0x0080, 0x309c: 0x0080, 0x309d: 0x0080, - 0x309e: 0x0080, 0x309f: 0x0080, 0x30a0: 0x0080, 0x30a1: 0x0080, 0x30a2: 0x0080, 0x30a3: 0x0080, - 0x30a4: 0x0080, 0x30a5: 0x0080, 0x30a6: 0x0080, 0x30a7: 0x0080, 0x30a8: 0x0080, 0x30a9: 0x0080, - 0x30aa: 0x0080, 0x30ab: 0x0080, 0x30ac: 0x0080, 0x30ad: 0x0080, 0x30ae: 0x0080, 0x30af: 0x0080, - 0x30b0: 0x0080, 0x30b1: 0x0080, 0x30b2: 0x0080, 0x30b3: 0x0080, - 0x30b7: 0x0080, 0x30b8: 0x0080, 0x30b9: 0x0080, 0x30ba: 0x0080, 0x30bb: 0x0080, - 0x30bc: 0x0080, 0x30bd: 0x0080, 0x30be: 0x0080, 0x30bf: 0x0080, - // Block 0xc3, offset 0x30c0 - 0x30c0: 0x0088, 0x30c1: 0x0088, 0x30c2: 0x0088, 0x30c3: 0x0088, 0x30c4: 0x0088, 0x30c5: 0x0088, - 0x30c6: 0x0088, 0x30c7: 0x0088, 0x30c8: 0x0088, 0x30c9: 0x0088, 0x30ca: 0x0088, 0x30cb: 0x0088, - 0x30cc: 0x0088, 0x30cd: 0x0088, 0x30ce: 0x0088, 0x30cf: 0x0088, 0x30d0: 0x0088, 0x30d1: 0x0088, - 0x30d2: 0x0088, 0x30d3: 0x0088, 0x30d4: 0x0088, 0x30d5: 0x0088, 0x30d6: 0x0088, 0x30d7: 0x0088, - 0x30d8: 0x0088, 0x30d9: 0x0088, 0x30da: 0x0088, 0x30db: 0x0088, 0x30dc: 0x0088, 0x30dd: 0x0088, - 0x30de: 0x0088, 0x30df: 0x0088, 0x30e0: 0x0088, 0x30e1: 0x0088, 0x30e2: 0x0088, 0x30e3: 0x0088, - 0x30e4: 0x0088, 0x30e5: 0x0088, 0x30e6: 0x0088, 0x30e7: 0x0088, 0x30e8: 0x0088, 0x30e9: 0x0088, - 0x30ea: 0x0088, 0x30eb: 0x0088, 0x30ec: 0x0088, 0x30ed: 0x0088, 0x30ee: 0x0088, 0x30ef: 0x0088, - 0x30f0: 0x0088, 0x30f1: 0x0088, 0x30f2: 0x0088, 0x30f3: 0x0088, 0x30f4: 0x0088, 0x30f5: 0x0088, - 0x30f6: 0x0088, 0x30f7: 0x0088, 0x30f8: 0x0088, 0x30f9: 0x0088, 0x30fa: 0x0088, 0x30fb: 0x0088, - 0x30fc: 0x0088, 0x30fd: 0x0088, 0x30fe: 0x0088, 0x30ff: 0x0088, - // Block 0xc4, offset 0x3100 - 0x3100: 0x0088, 0x3101: 0x0088, 0x3102: 0x0088, 0x3103: 0x0088, 0x3104: 0x0088, 0x3105: 0x0088, - 0x3106: 0x0088, 0x3107: 0x0088, 0x3108: 0x0088, 0x3109: 0x0088, 0x310a: 0x0088, 0x310b: 0x0088, - 0x310c: 0x0088, 0x310d: 0x0088, 0x310e: 0x0088, 0x3110: 0x0080, 0x3111: 0x0080, - 0x3112: 0x0080, 0x3113: 0x0080, 0x3114: 0x0080, 0x3115: 0x0080, 0x3116: 0x0080, 0x3117: 0x0080, - 0x3118: 0x0080, 0x3119: 0x0080, 0x311a: 0x0080, 0x311b: 0x0080, - 0x3120: 0x0088, - // Block 0xc5, offset 0x3140 - 0x3150: 0x0080, 0x3151: 0x0080, - 0x3152: 0x0080, 0x3153: 0x0080, 0x3154: 0x0080, 0x3155: 0x0080, 0x3156: 0x0080, 0x3157: 0x0080, - 0x3158: 0x0080, 0x3159: 0x0080, 0x315a: 0x0080, 0x315b: 0x0080, 0x315c: 0x0080, 0x315d: 0x0080, - 0x315e: 0x0080, 0x315f: 0x0080, 0x3160: 0x0080, 0x3161: 0x0080, 0x3162: 0x0080, 0x3163: 0x0080, - 0x3164: 0x0080, 0x3165: 0x0080, 0x3166: 0x0080, 0x3167: 0x0080, 0x3168: 0x0080, 0x3169: 0x0080, - 0x316a: 0x0080, 0x316b: 0x0080, 0x316c: 0x0080, 0x316d: 0x0080, 0x316e: 0x0080, 0x316f: 0x0080, - 0x3170: 0x0080, 0x3171: 0x0080, 0x3172: 0x0080, 0x3173: 0x0080, 0x3174: 0x0080, 0x3175: 0x0080, - 0x3176: 0x0080, 0x3177: 0x0080, 0x3178: 0x0080, 0x3179: 0x0080, 0x317a: 0x0080, 0x317b: 0x0080, - 0x317c: 0x0080, 0x317d: 0x00c3, - // Block 0xc6, offset 0x3180 - 0x3180: 0x00c0, 0x3181: 0x00c0, 0x3182: 0x00c0, 0x3183: 0x00c0, 0x3184: 0x00c0, 0x3185: 0x00c0, - 0x3186: 0x00c0, 0x3187: 0x00c0, 0x3188: 0x00c0, 0x3189: 0x00c0, 0x318a: 0x00c0, 0x318b: 0x00c0, - 0x318c: 0x00c0, 0x318d: 0x00c0, 0x318e: 0x00c0, 0x318f: 0x00c0, 0x3190: 0x00c0, 0x3191: 0x00c0, - 0x3192: 0x00c0, 0x3193: 0x00c0, 0x3194: 0x00c0, 0x3195: 0x00c0, 0x3196: 0x00c0, 0x3197: 0x00c0, - 0x3198: 0x00c0, 0x3199: 0x00c0, 0x319a: 0x00c0, 0x319b: 0x00c0, 0x319c: 0x00c0, - 0x31a0: 0x00c0, 0x31a1: 0x00c0, 0x31a2: 0x00c0, 0x31a3: 0x00c0, - 0x31a4: 0x00c0, 0x31a5: 0x00c0, 0x31a6: 0x00c0, 0x31a7: 0x00c0, 0x31a8: 0x00c0, 0x31a9: 0x00c0, - 0x31aa: 0x00c0, 0x31ab: 0x00c0, 0x31ac: 0x00c0, 0x31ad: 0x00c0, 0x31ae: 0x00c0, 0x31af: 0x00c0, - 0x31b0: 0x00c0, 0x31b1: 0x00c0, 0x31b2: 0x00c0, 0x31b3: 0x00c0, 0x31b4: 0x00c0, 0x31b5: 0x00c0, - 0x31b6: 0x00c0, 0x31b7: 0x00c0, 0x31b8: 0x00c0, 0x31b9: 0x00c0, 0x31ba: 0x00c0, 0x31bb: 0x00c0, - 0x31bc: 0x00c0, 0x31bd: 0x00c0, 0x31be: 0x00c0, 0x31bf: 0x00c0, - // Block 0xc7, offset 0x31c0 - 0x31c0: 0x00c0, 0x31c1: 0x00c0, 0x31c2: 0x00c0, 0x31c3: 0x00c0, 0x31c4: 0x00c0, 0x31c5: 0x00c0, - 0x31c6: 0x00c0, 0x31c7: 0x00c0, 0x31c8: 0x00c0, 0x31c9: 0x00c0, 0x31ca: 0x00c0, 0x31cb: 0x00c0, - 0x31cc: 0x00c0, 0x31cd: 0x00c0, 0x31ce: 0x00c0, 0x31cf: 0x00c0, 0x31d0: 0x00c0, - 0x31e0: 0x00c3, 0x31e1: 0x0080, 0x31e2: 0x0080, 0x31e3: 0x0080, - 0x31e4: 0x0080, 0x31e5: 0x0080, 0x31e6: 0x0080, 0x31e7: 0x0080, 0x31e8: 0x0080, 0x31e9: 0x0080, - 0x31ea: 0x0080, 0x31eb: 0x0080, 0x31ec: 0x0080, 0x31ed: 0x0080, 0x31ee: 0x0080, 0x31ef: 0x0080, - 0x31f0: 0x0080, 0x31f1: 0x0080, 0x31f2: 0x0080, 0x31f3: 0x0080, 0x31f4: 0x0080, 0x31f5: 0x0080, - 0x31f6: 0x0080, 0x31f7: 0x0080, 0x31f8: 0x0080, 0x31f9: 0x0080, 0x31fa: 0x0080, 0x31fb: 0x0080, - // Block 0xc8, offset 0x3200 - 0x3200: 0x00c0, 0x3201: 0x00c0, 0x3202: 0x00c0, 0x3203: 0x00c0, 0x3204: 0x00c0, 0x3205: 0x00c0, - 0x3206: 0x00c0, 0x3207: 0x00c0, 0x3208: 0x00c0, 0x3209: 0x00c0, 0x320a: 0x00c0, 0x320b: 0x00c0, - 0x320c: 0x00c0, 0x320d: 0x00c0, 0x320e: 0x00c0, 0x320f: 0x00c0, 0x3210: 0x00c0, 0x3211: 0x00c0, - 0x3212: 0x00c0, 0x3213: 0x00c0, 0x3214: 0x00c0, 0x3215: 0x00c0, 0x3216: 0x00c0, 0x3217: 0x00c0, - 0x3218: 0x00c0, 0x3219: 0x00c0, 0x321a: 0x00c0, 0x321b: 0x00c0, 0x321c: 0x00c0, 0x321d: 0x00c0, - 0x321e: 0x00c0, 0x321f: 0x00c0, 0x3220: 0x0080, 0x3221: 0x0080, 0x3222: 0x0080, 0x3223: 0x0080, - 0x3230: 0x00c0, 0x3231: 0x00c0, 0x3232: 0x00c0, 0x3233: 0x00c0, 0x3234: 0x00c0, 0x3235: 0x00c0, - 0x3236: 0x00c0, 0x3237: 0x00c0, 0x3238: 0x00c0, 0x3239: 0x00c0, 0x323a: 0x00c0, 0x323b: 0x00c0, - 0x323c: 0x00c0, 0x323d: 0x00c0, 0x323e: 0x00c0, 0x323f: 0x00c0, - // Block 0xc9, offset 0x3240 - 0x3240: 0x00c0, 0x3241: 0x0080, 0x3242: 0x00c0, 0x3243: 0x00c0, 0x3244: 0x00c0, 0x3245: 0x00c0, - 0x3246: 0x00c0, 0x3247: 0x00c0, 0x3248: 0x00c0, 0x3249: 0x00c0, 0x324a: 0x0080, - 0x3250: 0x00c0, 0x3251: 0x00c0, - 0x3252: 0x00c0, 0x3253: 0x00c0, 0x3254: 0x00c0, 0x3255: 0x00c0, 0x3256: 0x00c0, 0x3257: 0x00c0, - 0x3258: 0x00c0, 0x3259: 0x00c0, 0x325a: 0x00c0, 0x325b: 0x00c0, 0x325c: 0x00c0, 0x325d: 0x00c0, - 0x325e: 0x00c0, 0x325f: 0x00c0, 0x3260: 0x00c0, 0x3261: 0x00c0, 0x3262: 0x00c0, 0x3263: 0x00c0, - 0x3264: 0x00c0, 0x3265: 0x00c0, 0x3266: 0x00c0, 0x3267: 0x00c0, 0x3268: 0x00c0, 0x3269: 0x00c0, - 0x326a: 0x00c0, 0x326b: 0x00c0, 0x326c: 0x00c0, 0x326d: 0x00c0, 0x326e: 0x00c0, 0x326f: 0x00c0, - 0x3270: 0x00c0, 0x3271: 0x00c0, 0x3272: 0x00c0, 0x3273: 0x00c0, 0x3274: 0x00c0, 0x3275: 0x00c0, - 0x3276: 0x00c3, 0x3277: 0x00c3, 0x3278: 0x00c3, 0x3279: 0x00c3, 0x327a: 0x00c3, - // Block 0xca, offset 0x3280 - 0x3280: 0x00c0, 0x3281: 0x00c0, 0x3282: 0x00c0, 0x3283: 0x00c0, 0x3284: 0x00c0, 0x3285: 0x00c0, - 0x3286: 0x00c0, 0x3287: 0x00c0, 0x3288: 0x00c0, 0x3289: 0x00c0, 0x328a: 0x00c0, 0x328b: 0x00c0, - 0x328c: 0x00c0, 0x328d: 0x00c0, 0x328e: 0x00c0, 0x328f: 0x00c0, 0x3290: 0x00c0, 0x3291: 0x00c0, - 0x3292: 0x00c0, 0x3293: 0x00c0, 0x3294: 0x00c0, 0x3295: 0x00c0, 0x3296: 0x00c0, 0x3297: 0x00c0, - 0x3298: 0x00c0, 0x3299: 0x00c0, 0x329a: 0x00c0, 0x329b: 0x00c0, 0x329c: 0x00c0, 0x329d: 0x00c0, - 0x329f: 0x0080, 0x32a0: 0x00c0, 0x32a1: 0x00c0, 0x32a2: 0x00c0, 0x32a3: 0x00c0, - 0x32a4: 0x00c0, 0x32a5: 0x00c0, 0x32a6: 0x00c0, 0x32a7: 0x00c0, 0x32a8: 0x00c0, 0x32a9: 0x00c0, - 0x32aa: 0x00c0, 0x32ab: 0x00c0, 0x32ac: 0x00c0, 0x32ad: 0x00c0, 0x32ae: 0x00c0, 0x32af: 0x00c0, - 0x32b0: 0x00c0, 0x32b1: 0x00c0, 0x32b2: 0x00c0, 0x32b3: 0x00c0, 0x32b4: 0x00c0, 0x32b5: 0x00c0, - 0x32b6: 0x00c0, 0x32b7: 0x00c0, 0x32b8: 0x00c0, 0x32b9: 0x00c0, 0x32ba: 0x00c0, 0x32bb: 0x00c0, - 0x32bc: 0x00c0, 0x32bd: 0x00c0, 0x32be: 0x00c0, 0x32bf: 0x00c0, - // Block 0xcb, offset 0x32c0 - 0x32c0: 0x00c0, 0x32c1: 0x00c0, 0x32c2: 0x00c0, 0x32c3: 0x00c0, - 0x32c8: 0x00c0, 0x32c9: 0x00c0, 0x32ca: 0x00c0, 0x32cb: 0x00c0, - 0x32cc: 0x00c0, 0x32cd: 0x00c0, 0x32ce: 0x00c0, 0x32cf: 0x00c0, 0x32d0: 0x0080, 0x32d1: 0x0080, - 0x32d2: 0x0080, 0x32d3: 0x0080, 0x32d4: 0x0080, 0x32d5: 0x0080, - // Block 0xcc, offset 0x3300 - 0x3300: 0x00c0, 0x3301: 0x00c0, 0x3302: 0x00c0, 0x3303: 0x00c0, 0x3304: 0x00c0, 0x3305: 0x00c0, - 0x3306: 0x00c0, 0x3307: 0x00c0, 0x3308: 0x00c0, 0x3309: 0x00c0, 0x330a: 0x00c0, 0x330b: 0x00c0, - 0x330c: 0x00c0, 0x330d: 0x00c0, 0x330e: 0x00c0, 0x330f: 0x00c0, 0x3310: 0x00c0, 0x3311: 0x00c0, - 0x3312: 0x00c0, 0x3313: 0x00c0, 0x3314: 0x00c0, 0x3315: 0x00c0, 0x3316: 0x00c0, 0x3317: 0x00c0, - 0x3318: 0x00c0, 0x3319: 0x00c0, 0x331a: 0x00c0, 0x331b: 0x00c0, 0x331c: 0x00c0, 0x331d: 0x00c0, - 0x3320: 0x00c0, 0x3321: 0x00c0, 0x3322: 0x00c0, 0x3323: 0x00c0, - 0x3324: 0x00c0, 0x3325: 0x00c0, 0x3326: 0x00c0, 0x3327: 0x00c0, 0x3328: 0x00c0, 0x3329: 0x00c0, - 0x3330: 0x00c0, 0x3331: 0x00c0, 0x3332: 0x00c0, 0x3333: 0x00c0, 0x3334: 0x00c0, 0x3335: 0x00c0, - 0x3336: 0x00c0, 0x3337: 0x00c0, 0x3338: 0x00c0, 0x3339: 0x00c0, 0x333a: 0x00c0, 0x333b: 0x00c0, - 0x333c: 0x00c0, 0x333d: 0x00c0, 0x333e: 0x00c0, 0x333f: 0x00c0, - // Block 0xcd, offset 0x3340 - 0x3340: 0x00c0, 0x3341: 0x00c0, 0x3342: 0x00c0, 0x3343: 0x00c0, 0x3344: 0x00c0, 0x3345: 0x00c0, - 0x3346: 0x00c0, 0x3347: 0x00c0, 0x3348: 0x00c0, 0x3349: 0x00c0, 0x334a: 0x00c0, 0x334b: 0x00c0, - 0x334c: 0x00c0, 0x334d: 0x00c0, 0x334e: 0x00c0, 0x334f: 0x00c0, 0x3350: 0x00c0, 0x3351: 0x00c0, - 0x3352: 0x00c0, 0x3353: 0x00c0, - 0x3358: 0x00c0, 0x3359: 0x00c0, 0x335a: 0x00c0, 0x335b: 0x00c0, 0x335c: 0x00c0, 0x335d: 0x00c0, - 0x335e: 0x00c0, 0x335f: 0x00c0, 0x3360: 0x00c0, 0x3361: 0x00c0, 0x3362: 0x00c0, 0x3363: 0x00c0, - 0x3364: 0x00c0, 0x3365: 0x00c0, 0x3366: 0x00c0, 0x3367: 0x00c0, 0x3368: 0x00c0, 0x3369: 0x00c0, - 0x336a: 0x00c0, 0x336b: 0x00c0, 0x336c: 0x00c0, 0x336d: 0x00c0, 0x336e: 0x00c0, 0x336f: 0x00c0, - 0x3370: 0x00c0, 0x3371: 0x00c0, 0x3372: 0x00c0, 0x3373: 0x00c0, 0x3374: 0x00c0, 0x3375: 0x00c0, - 0x3376: 0x00c0, 0x3377: 0x00c0, 0x3378: 0x00c0, 0x3379: 0x00c0, 0x337a: 0x00c0, 0x337b: 0x00c0, - // Block 0xce, offset 0x3380 - 0x3380: 0x00c0, 0x3381: 0x00c0, 0x3382: 0x00c0, 0x3383: 0x00c0, 0x3384: 0x00c0, 0x3385: 0x00c0, - 0x3386: 0x00c0, 0x3387: 0x00c0, 0x3388: 0x00c0, 0x3389: 0x00c0, 0x338a: 0x00c0, 0x338b: 0x00c0, - 0x338c: 0x00c0, 0x338d: 0x00c0, 0x338e: 0x00c0, 0x338f: 0x00c0, 0x3390: 0x00c0, 0x3391: 0x00c0, - 0x3392: 0x00c0, 0x3393: 0x00c0, 0x3394: 0x00c0, 0x3395: 0x00c0, 0x3396: 0x00c0, 0x3397: 0x00c0, - 0x3398: 0x00c0, 0x3399: 0x00c0, 0x339a: 0x00c0, 0x339b: 0x00c0, 0x339c: 0x00c0, 0x339d: 0x00c0, - 0x339e: 0x00c0, 0x339f: 0x00c0, 0x33a0: 0x00c0, 0x33a1: 0x00c0, 0x33a2: 0x00c0, 0x33a3: 0x00c0, - 0x33a4: 0x00c0, 0x33a5: 0x00c0, 0x33a6: 0x00c0, 0x33a7: 0x00c0, - 0x33b0: 0x00c0, 0x33b1: 0x00c0, 0x33b2: 0x00c0, 0x33b3: 0x00c0, 0x33b4: 0x00c0, 0x33b5: 0x00c0, - 0x33b6: 0x00c0, 0x33b7: 0x00c0, 0x33b8: 0x00c0, 0x33b9: 0x00c0, 0x33ba: 0x00c0, 0x33bb: 0x00c0, - 0x33bc: 0x00c0, 0x33bd: 0x00c0, 0x33be: 0x00c0, 0x33bf: 0x00c0, - // Block 0xcf, offset 0x33c0 - 0x33c0: 0x00c0, 0x33c1: 0x00c0, 0x33c2: 0x00c0, 0x33c3: 0x00c0, 0x33c4: 0x00c0, 0x33c5: 0x00c0, - 0x33c6: 0x00c0, 0x33c7: 0x00c0, 0x33c8: 0x00c0, 0x33c9: 0x00c0, 0x33ca: 0x00c0, 0x33cb: 0x00c0, - 0x33cc: 0x00c0, 0x33cd: 0x00c0, 0x33ce: 0x00c0, 0x33cf: 0x00c0, 0x33d0: 0x00c0, 0x33d1: 0x00c0, - 0x33d2: 0x00c0, 0x33d3: 0x00c0, 0x33d4: 0x00c0, 0x33d5: 0x00c0, 0x33d6: 0x00c0, 0x33d7: 0x00c0, - 0x33d8: 0x00c0, 0x33d9: 0x00c0, 0x33da: 0x00c0, 0x33db: 0x00c0, 0x33dc: 0x00c0, 0x33dd: 0x00c0, - 0x33de: 0x00c0, 0x33df: 0x00c0, 0x33e0: 0x00c0, 0x33e1: 0x00c0, 0x33e2: 0x00c0, 0x33e3: 0x00c0, - 0x33ef: 0x0080, - // Block 0xd0, offset 0x3400 - 0x3400: 0x00c0, 0x3401: 0x00c0, 0x3402: 0x00c0, 0x3403: 0x00c0, 0x3404: 0x00c0, 0x3405: 0x00c0, - 0x3406: 0x00c0, 0x3407: 0x00c0, 0x3408: 0x00c0, 0x3409: 0x00c0, 0x340a: 0x00c0, 0x340b: 0x00c0, - 0x340c: 0x00c0, 0x340d: 0x00c0, 0x340e: 0x00c0, 0x340f: 0x00c0, 0x3410: 0x00c0, 0x3411: 0x00c0, - 0x3412: 0x00c0, 0x3413: 0x00c0, 0x3414: 0x00c0, 0x3415: 0x00c0, 0x3416: 0x00c0, 0x3417: 0x00c0, - 0x3418: 0x00c0, 0x3419: 0x00c0, 0x341a: 0x00c0, 0x341b: 0x00c0, 0x341c: 0x00c0, 0x341d: 0x00c0, - 0x341e: 0x00c0, 0x341f: 0x00c0, 0x3420: 0x00c0, 0x3421: 0x00c0, 0x3422: 0x00c0, 0x3423: 0x00c0, - 0x3424: 0x00c0, 0x3425: 0x00c0, 0x3426: 0x00c0, 0x3427: 0x00c0, 0x3428: 0x00c0, 0x3429: 0x00c0, - 0x342a: 0x00c0, 0x342b: 0x00c0, 0x342c: 0x00c0, 0x342d: 0x00c0, 0x342e: 0x00c0, 0x342f: 0x00c0, - 0x3430: 0x00c0, 0x3431: 0x00c0, 0x3432: 0x00c0, 0x3433: 0x00c0, 0x3434: 0x00c0, 0x3435: 0x00c0, - 0x3436: 0x00c0, - // Block 0xd1, offset 0x3440 - 0x3440: 0x00c0, 0x3441: 0x00c0, 0x3442: 0x00c0, 0x3443: 0x00c0, 0x3444: 0x00c0, 0x3445: 0x00c0, - 0x3446: 0x00c0, 0x3447: 0x00c0, 0x3448: 0x00c0, 0x3449: 0x00c0, 0x344a: 0x00c0, 0x344b: 0x00c0, - 0x344c: 0x00c0, 0x344d: 0x00c0, 0x344e: 0x00c0, 0x344f: 0x00c0, 0x3450: 0x00c0, 0x3451: 0x00c0, - 0x3452: 0x00c0, 0x3453: 0x00c0, 0x3454: 0x00c0, 0x3455: 0x00c0, - 0x3460: 0x00c0, 0x3461: 0x00c0, 0x3462: 0x00c0, 0x3463: 0x00c0, - 0x3464: 0x00c0, 0x3465: 0x00c0, 0x3466: 0x00c0, 0x3467: 0x00c0, - // Block 0xd2, offset 0x3480 - 0x3480: 0x00c0, 0x3481: 0x00c0, 0x3482: 0x00c0, 0x3483: 0x00c0, 0x3484: 0x00c0, 0x3485: 0x00c0, - 0x3488: 0x00c0, 0x348a: 0x00c0, 0x348b: 0x00c0, - 0x348c: 0x00c0, 0x348d: 0x00c0, 0x348e: 0x00c0, 0x348f: 0x00c0, 0x3490: 0x00c0, 0x3491: 0x00c0, - 0x3492: 0x00c0, 0x3493: 0x00c0, 0x3494: 0x00c0, 0x3495: 0x00c0, 0x3496: 0x00c0, 0x3497: 0x00c0, - 0x3498: 0x00c0, 0x3499: 0x00c0, 0x349a: 0x00c0, 0x349b: 0x00c0, 0x349c: 0x00c0, 0x349d: 0x00c0, - 0x349e: 0x00c0, 0x349f: 0x00c0, 0x34a0: 0x00c0, 0x34a1: 0x00c0, 0x34a2: 0x00c0, 0x34a3: 0x00c0, - 0x34a4: 0x00c0, 0x34a5: 0x00c0, 0x34a6: 0x00c0, 0x34a7: 0x00c0, 0x34a8: 0x00c0, 0x34a9: 0x00c0, - 0x34aa: 0x00c0, 0x34ab: 0x00c0, 0x34ac: 0x00c0, 0x34ad: 0x00c0, 0x34ae: 0x00c0, 0x34af: 0x00c0, - 0x34b0: 0x00c0, 0x34b1: 0x00c0, 0x34b2: 0x00c0, 0x34b3: 0x00c0, 0x34b4: 0x00c0, 0x34b5: 0x00c0, - 0x34b7: 0x00c0, 0x34b8: 0x00c0, - 0x34bc: 0x00c0, 0x34bf: 0x00c0, - // Block 0xd3, offset 0x34c0 - 0x34c0: 0x00c0, 0x34c1: 0x00c0, 0x34c2: 0x00c0, 0x34c3: 0x00c0, 0x34c4: 0x00c0, 0x34c5: 0x00c0, - 0x34c6: 0x00c0, 0x34c7: 0x00c0, 0x34c8: 0x00c0, 0x34c9: 0x00c0, 0x34ca: 0x00c0, 0x34cb: 0x00c0, - 0x34cc: 0x00c0, 0x34cd: 0x00c0, 0x34ce: 0x00c0, 0x34cf: 0x00c0, 0x34d0: 0x00c0, 0x34d1: 0x00c0, - 0x34d2: 0x00c0, 0x34d3: 0x00c0, 0x34d4: 0x00c0, 0x34d5: 0x00c0, 0x34d7: 0x0080, - 0x34d8: 0x0080, 0x34d9: 0x0080, 0x34da: 0x0080, 0x34db: 0x0080, 0x34dc: 0x0080, 0x34dd: 0x0080, - 0x34de: 0x0080, 0x34df: 0x0080, 0x34e0: 0x00c0, 0x34e1: 0x00c0, 0x34e2: 0x00c0, 0x34e3: 0x00c0, - 0x34e4: 0x00c0, 0x34e5: 0x00c0, 0x34e6: 0x00c0, 0x34e7: 0x00c0, 0x34e8: 0x00c0, 0x34e9: 0x00c0, - 0x34ea: 0x00c0, 0x34eb: 0x00c0, 0x34ec: 0x00c0, 0x34ed: 0x00c0, 0x34ee: 0x00c0, 0x34ef: 0x00c0, - 0x34f0: 0x00c0, 0x34f1: 0x00c0, 0x34f2: 0x00c0, 0x34f3: 0x00c0, 0x34f4: 0x00c0, 0x34f5: 0x00c0, - 0x34f6: 0x00c0, 0x34f7: 0x0080, 0x34f8: 0x0080, 0x34f9: 0x0080, 0x34fa: 0x0080, 0x34fb: 0x0080, - 0x34fc: 0x0080, 0x34fd: 0x0080, 0x34fe: 0x0080, 0x34ff: 0x0080, - // Block 0xd4, offset 0x3500 - 0x3500: 0x00c0, 0x3501: 0x00c0, 0x3502: 0x00c0, 0x3503: 0x00c0, 0x3504: 0x00c0, 0x3505: 0x00c0, - 0x3506: 0x00c0, 0x3507: 0x00c0, 0x3508: 0x00c0, 0x3509: 0x00c0, 0x350a: 0x00c0, 0x350b: 0x00c0, - 0x350c: 0x00c0, 0x350d: 0x00c0, 0x350e: 0x00c0, 0x350f: 0x00c0, 0x3510: 0x00c0, 0x3511: 0x00c0, - 0x3512: 0x00c0, 0x3513: 0x00c0, 0x3514: 0x00c0, 0x3515: 0x00c0, 0x3516: 0x00c0, 0x3517: 0x00c0, - 0x3518: 0x00c0, 0x3519: 0x00c0, 0x351a: 0x00c0, 0x351b: 0x00c0, 0x351c: 0x00c0, 0x351d: 0x00c0, - 0x351e: 0x00c0, - 0x3527: 0x0080, 0x3528: 0x0080, 0x3529: 0x0080, - 0x352a: 0x0080, 0x352b: 0x0080, 0x352c: 0x0080, 0x352d: 0x0080, 0x352e: 0x0080, 0x352f: 0x0080, - // Block 0xd5, offset 0x3540 - 0x3560: 0x00c0, 0x3561: 0x00c0, 0x3562: 0x00c0, 0x3563: 0x00c0, - 0x3564: 0x00c0, 0x3565: 0x00c0, 0x3566: 0x00c0, 0x3567: 0x00c0, 0x3568: 0x00c0, 0x3569: 0x00c0, - 0x356a: 0x00c0, 0x356b: 0x00c0, 0x356c: 0x00c0, 0x356d: 0x00c0, 0x356e: 0x00c0, 0x356f: 0x00c0, - 0x3570: 0x00c0, 0x3571: 0x00c0, 0x3572: 0x00c0, 0x3574: 0x00c0, 0x3575: 0x00c0, - 0x357b: 0x0080, - 0x357c: 0x0080, 0x357d: 0x0080, 0x357e: 0x0080, 0x357f: 0x0080, - // Block 0xd6, offset 0x3580 - 0x3580: 0x00c0, 0x3581: 0x00c0, 0x3582: 0x00c0, 0x3583: 0x00c0, 0x3584: 0x00c0, 0x3585: 0x00c0, - 0x3586: 0x00c0, 0x3587: 0x00c0, 0x3588: 0x00c0, 0x3589: 0x00c0, 0x358a: 0x00c0, 0x358b: 0x00c0, - 0x358c: 0x00c0, 0x358d: 0x00c0, 0x358e: 0x00c0, 0x358f: 0x00c0, 0x3590: 0x00c0, 0x3591: 0x00c0, - 0x3592: 0x00c0, 0x3593: 0x00c0, 0x3594: 0x00c0, 0x3595: 0x00c0, 0x3596: 0x0080, 0x3597: 0x0080, - 0x3598: 0x0080, 0x3599: 0x0080, 0x359a: 0x0080, 0x359b: 0x0080, - 0x359f: 0x0080, 0x35a0: 0x00c0, 0x35a1: 0x00c0, 0x35a2: 0x00c0, 0x35a3: 0x00c0, - 0x35a4: 0x00c0, 0x35a5: 0x00c0, 0x35a6: 0x00c0, 0x35a7: 0x00c0, 0x35a8: 0x00c0, 0x35a9: 0x00c0, - 0x35aa: 0x00c0, 0x35ab: 0x00c0, 0x35ac: 0x00c0, 0x35ad: 0x00c0, 0x35ae: 0x00c0, 0x35af: 0x00c0, - 0x35b0: 0x00c0, 0x35b1: 0x00c0, 0x35b2: 0x00c0, 0x35b3: 0x00c0, 0x35b4: 0x00c0, 0x35b5: 0x00c0, - 0x35b6: 0x00c0, 0x35b7: 0x00c0, 0x35b8: 0x00c0, 0x35b9: 0x00c0, - 0x35bf: 0x0080, - // Block 0xd7, offset 0x35c0 - 0x35c0: 0x00c0, 0x35c1: 0x00c0, 0x35c2: 0x00c0, 0x35c3: 0x00c0, 0x35c4: 0x00c0, 0x35c5: 0x00c0, - 0x35c6: 0x00c0, 0x35c7: 0x00c0, 0x35c8: 0x00c0, 0x35c9: 0x00c0, 0x35ca: 0x00c0, 0x35cb: 0x00c0, - 0x35cc: 0x00c0, 0x35cd: 0x00c0, 0x35ce: 0x00c0, 0x35cf: 0x00c0, 0x35d0: 0x00c0, 0x35d1: 0x00c0, - 0x35d2: 0x00c0, 0x35d3: 0x00c0, 0x35d4: 0x00c0, 0x35d5: 0x00c0, 0x35d6: 0x00c0, 0x35d7: 0x00c0, - 0x35d8: 0x00c0, 0x35d9: 0x00c0, 0x35da: 0x00c0, 0x35db: 0x00c0, 0x35dc: 0x00c0, 0x35dd: 0x00c0, - 0x35de: 0x00c0, 0x35df: 0x00c0, 0x35e0: 0x00c0, 0x35e1: 0x00c0, 0x35e2: 0x00c0, 0x35e3: 0x00c0, - 0x35e4: 0x00c0, 0x35e5: 0x00c0, 0x35e6: 0x00c0, 0x35e7: 0x00c0, 0x35e8: 0x00c0, 0x35e9: 0x00c0, - 0x35ea: 0x00c0, 0x35eb: 0x00c0, 0x35ec: 0x00c0, 0x35ed: 0x00c0, 0x35ee: 0x00c0, 0x35ef: 0x00c0, - 0x35f0: 0x00c0, 0x35f1: 0x00c0, 0x35f2: 0x00c0, 0x35f3: 0x00c0, 0x35f4: 0x00c0, 0x35f5: 0x00c0, - 0x35f6: 0x00c0, 0x35f7: 0x00c0, - 0x35fc: 0x0080, 0x35fd: 0x0080, 0x35fe: 0x00c0, 0x35ff: 0x00c0, - // Block 0xd8, offset 0x3600 - 0x3600: 0x00c0, 0x3601: 0x00c3, 0x3602: 0x00c3, 0x3603: 0x00c3, 0x3605: 0x00c3, - 0x3606: 0x00c3, - 0x360c: 0x00c3, 0x360d: 0x00c3, 0x360e: 0x00c3, 0x360f: 0x00c3, 0x3610: 0x00c0, 0x3611: 0x00c0, - 0x3612: 0x00c0, 0x3613: 0x00c0, 0x3615: 0x00c0, 0x3616: 0x00c0, 0x3617: 0x00c0, - 0x3619: 0x00c0, 0x361a: 0x00c0, 0x361b: 0x00c0, 0x361c: 0x00c0, 0x361d: 0x00c0, - 0x361e: 0x00c0, 0x361f: 0x00c0, 0x3620: 0x00c0, 0x3621: 0x00c0, 0x3622: 0x00c0, 0x3623: 0x00c0, - 0x3624: 0x00c0, 0x3625: 0x00c0, 0x3626: 0x00c0, 0x3627: 0x00c0, 0x3628: 0x00c0, 0x3629: 0x00c0, - 0x362a: 0x00c0, 0x362b: 0x00c0, 0x362c: 0x00c0, 0x362d: 0x00c0, 0x362e: 0x00c0, 0x362f: 0x00c0, - 0x3630: 0x00c0, 0x3631: 0x00c0, 0x3632: 0x00c0, 0x3633: 0x00c0, - 0x3638: 0x00c3, 0x3639: 0x00c3, 0x363a: 0x00c3, - 0x363f: 0x00c6, - // Block 0xd9, offset 0x3640 - 0x3640: 0x0080, 0x3641: 0x0080, 0x3642: 0x0080, 0x3643: 0x0080, 0x3644: 0x0080, 0x3645: 0x0080, - 0x3646: 0x0080, 0x3647: 0x0080, - 0x3650: 0x0080, 0x3651: 0x0080, - 0x3652: 0x0080, 0x3653: 0x0080, 0x3654: 0x0080, 0x3655: 0x0080, 0x3656: 0x0080, 0x3657: 0x0080, - 0x3658: 0x0080, - 0x3660: 0x00c0, 0x3661: 0x00c0, 0x3662: 0x00c0, 0x3663: 0x00c0, - 0x3664: 0x00c0, 0x3665: 0x00c0, 0x3666: 0x00c0, 0x3667: 0x00c0, 0x3668: 0x00c0, 0x3669: 0x00c0, - 0x366a: 0x00c0, 0x366b: 0x00c0, 0x366c: 0x00c0, 0x366d: 0x00c0, 0x366e: 0x00c0, 0x366f: 0x00c0, - 0x3670: 0x00c0, 0x3671: 0x00c0, 0x3672: 0x00c0, 0x3673: 0x00c0, 0x3674: 0x00c0, 0x3675: 0x00c0, - 0x3676: 0x00c0, 0x3677: 0x00c0, 0x3678: 0x00c0, 0x3679: 0x00c0, 0x367a: 0x00c0, 0x367b: 0x00c0, - 0x367c: 0x00c0, 0x367d: 0x0080, 0x367e: 0x0080, 0x367f: 0x0080, - // Block 0xda, offset 0x3680 - 0x3680: 0x00c0, 0x3681: 0x00c0, 0x3682: 0x00c0, 0x3683: 0x00c0, 0x3684: 0x00c0, 0x3685: 0x00c0, - 0x3686: 0x00c0, 0x3687: 0x00c0, 0x3688: 0x00c0, 0x3689: 0x00c0, 0x368a: 0x00c0, 0x368b: 0x00c0, - 0x368c: 0x00c0, 0x368d: 0x00c0, 0x368e: 0x00c0, 0x368f: 0x00c0, 0x3690: 0x00c0, 0x3691: 0x00c0, - 0x3692: 0x00c0, 0x3693: 0x00c0, 0x3694: 0x00c0, 0x3695: 0x00c0, 0x3696: 0x00c0, 0x3697: 0x00c0, - 0x3698: 0x00c0, 0x3699: 0x00c0, 0x369a: 0x00c0, 0x369b: 0x00c0, 0x369c: 0x00c0, 0x369d: 0x0080, - 0x369e: 0x0080, 0x369f: 0x0080, - // Block 0xdb, offset 0x36c0 - 0x36c0: 0x00c2, 0x36c1: 0x00c2, 0x36c2: 0x00c2, 0x36c3: 0x00c2, 0x36c4: 0x00c2, 0x36c5: 0x00c4, - 0x36c6: 0x00c0, 0x36c7: 0x00c4, 0x36c8: 0x0080, 0x36c9: 0x00c4, 0x36ca: 0x00c4, 0x36cb: 0x00c0, - 0x36cc: 0x00c0, 0x36cd: 0x00c1, 0x36ce: 0x00c4, 0x36cf: 0x00c4, 0x36d0: 0x00c4, 0x36d1: 0x00c4, - 0x36d2: 0x00c4, 0x36d3: 0x00c2, 0x36d4: 0x00c2, 0x36d5: 0x00c2, 0x36d6: 0x00c2, 0x36d7: 0x00c1, - 0x36d8: 0x00c2, 0x36d9: 0x00c2, 0x36da: 0x00c2, 0x36db: 0x00c2, 0x36dc: 0x00c2, 0x36dd: 0x00c4, - 0x36de: 0x00c2, 0x36df: 0x00c2, 0x36e0: 0x00c2, 0x36e1: 0x00c4, 0x36e2: 0x00c0, 0x36e3: 0x00c0, - 0x36e4: 0x00c4, 0x36e5: 0x00c3, 0x36e6: 0x00c3, - 0x36eb: 0x0082, 0x36ec: 0x0082, 0x36ed: 0x0082, 0x36ee: 0x0082, 0x36ef: 0x0084, - 0x36f0: 0x0080, 0x36f1: 0x0080, 0x36f2: 0x0080, 0x36f3: 0x0080, 0x36f4: 0x0080, 0x36f5: 0x0080, - 0x36f6: 0x0080, - // Block 0xdc, offset 0x3700 - 0x3700: 0x00c0, 0x3701: 0x00c0, 0x3702: 0x00c0, 0x3703: 0x00c0, 0x3704: 0x00c0, 0x3705: 0x00c0, - 0x3706: 0x00c0, 0x3707: 0x00c0, 0x3708: 0x00c0, 0x3709: 0x00c0, 0x370a: 0x00c0, 0x370b: 0x00c0, - 0x370c: 0x00c0, 0x370d: 0x00c0, 0x370e: 0x00c0, 0x370f: 0x00c0, 0x3710: 0x00c0, 0x3711: 0x00c0, - 0x3712: 0x00c0, 0x3713: 0x00c0, 0x3714: 0x00c0, 0x3715: 0x00c0, 0x3716: 0x00c0, 0x3717: 0x00c0, - 0x3718: 0x00c0, 0x3719: 0x00c0, 0x371a: 0x00c0, 0x371b: 0x00c0, 0x371c: 0x00c0, 0x371d: 0x00c0, - 0x371e: 0x00c0, 0x371f: 0x00c0, 0x3720: 0x00c0, 0x3721: 0x00c0, 0x3722: 0x00c0, 0x3723: 0x00c0, - 0x3724: 0x00c0, 0x3725: 0x00c0, 0x3726: 0x00c0, 0x3727: 0x00c0, 0x3728: 0x00c0, 0x3729: 0x00c0, - 0x372a: 0x00c0, 0x372b: 0x00c0, 0x372c: 0x00c0, 0x372d: 0x00c0, 0x372e: 0x00c0, 0x372f: 0x00c0, - 0x3730: 0x00c0, 0x3731: 0x00c0, 0x3732: 0x00c0, 0x3733: 0x00c0, 0x3734: 0x00c0, 0x3735: 0x00c0, - 0x3739: 0x0080, 0x373a: 0x0080, 0x373b: 0x0080, - 0x373c: 0x0080, 0x373d: 0x0080, 0x373e: 0x0080, 0x373f: 0x0080, - // Block 0xdd, offset 0x3740 - 0x3740: 0x00c0, 0x3741: 0x00c0, 0x3742: 0x00c0, 0x3743: 0x00c0, 0x3744: 0x00c0, 0x3745: 0x00c0, - 0x3746: 0x00c0, 0x3747: 0x00c0, 0x3748: 0x00c0, 0x3749: 0x00c0, 0x374a: 0x00c0, 0x374b: 0x00c0, - 0x374c: 0x00c0, 0x374d: 0x00c0, 0x374e: 0x00c0, 0x374f: 0x00c0, 0x3750: 0x00c0, 0x3751: 0x00c0, - 0x3752: 0x00c0, 0x3753: 0x00c0, 0x3754: 0x00c0, 0x3755: 0x00c0, - 0x3758: 0x0080, 0x3759: 0x0080, 0x375a: 0x0080, 0x375b: 0x0080, 0x375c: 0x0080, 0x375d: 0x0080, - 0x375e: 0x0080, 0x375f: 0x0080, 0x3760: 0x00c0, 0x3761: 0x00c0, 0x3762: 0x00c0, 0x3763: 0x00c0, - 0x3764: 0x00c0, 0x3765: 0x00c0, 0x3766: 0x00c0, 0x3767: 0x00c0, 0x3768: 0x00c0, 0x3769: 0x00c0, - 0x376a: 0x00c0, 0x376b: 0x00c0, 0x376c: 0x00c0, 0x376d: 0x00c0, 0x376e: 0x00c0, 0x376f: 0x00c0, - 0x3770: 0x00c0, 0x3771: 0x00c0, 0x3772: 0x00c0, - 0x3778: 0x0080, 0x3779: 0x0080, 0x377a: 0x0080, 0x377b: 0x0080, - 0x377c: 0x0080, 0x377d: 0x0080, 0x377e: 0x0080, 0x377f: 0x0080, - // Block 0xde, offset 0x3780 - 0x3780: 0x00c2, 0x3781: 0x00c4, 0x3782: 0x00c2, 0x3783: 0x00c4, 0x3784: 0x00c4, 0x3785: 0x00c4, - 0x3786: 0x00c2, 0x3787: 0x00c2, 0x3788: 0x00c2, 0x3789: 0x00c4, 0x378a: 0x00c2, 0x378b: 0x00c2, - 0x378c: 0x00c4, 0x378d: 0x00c2, 0x378e: 0x00c4, 0x378f: 0x00c4, 0x3790: 0x00c2, 0x3791: 0x00c4, - 0x3799: 0x0080, 0x379a: 0x0080, 0x379b: 0x0080, 0x379c: 0x0080, - 0x37a9: 0x0084, - 0x37aa: 0x0084, 0x37ab: 0x0084, 0x37ac: 0x0084, 0x37ad: 0x0082, 0x37ae: 0x0082, 0x37af: 0x0080, - // Block 0xdf, offset 0x37c0 - 0x37c0: 0x00c0, 0x37c1: 0x00c0, 0x37c2: 0x00c0, 0x37c3: 0x00c0, 0x37c4: 0x00c0, 0x37c5: 0x00c0, - 0x37c6: 0x00c0, 0x37c7: 0x00c0, 0x37c8: 0x00c0, 0x37c9: 0x00c0, 0x37ca: 0x00c0, 0x37cb: 0x00c0, - 0x37cc: 0x00c0, 0x37cd: 0x00c0, 0x37ce: 0x00c0, 0x37cf: 0x00c0, 0x37d0: 0x00c0, 0x37d1: 0x00c0, - 0x37d2: 0x00c0, 0x37d3: 0x00c0, 0x37d4: 0x00c0, 0x37d5: 0x00c0, 0x37d6: 0x00c0, 0x37d7: 0x00c0, - 0x37d8: 0x00c0, 0x37d9: 0x00c0, 0x37da: 0x00c0, 0x37db: 0x00c0, 0x37dc: 0x00c0, 0x37dd: 0x00c0, - 0x37de: 0x00c0, 0x37df: 0x00c0, 0x37e0: 0x00c0, 0x37e1: 0x00c0, 0x37e2: 0x00c0, 0x37e3: 0x00c0, - 0x37e4: 0x00c0, 0x37e5: 0x00c0, 0x37e6: 0x00c0, 0x37e7: 0x00c0, 0x37e8: 0x00c0, 0x37e9: 0x00c0, - 0x37ea: 0x00c0, 0x37eb: 0x00c0, 0x37ec: 0x00c0, 0x37ed: 0x00c0, 0x37ee: 0x00c0, 0x37ef: 0x00c0, - 0x37f0: 0x00c0, 0x37f1: 0x00c0, 0x37f2: 0x00c0, - // Block 0xe0, offset 0x3800 - 0x3800: 0x00c0, 0x3801: 0x00c0, 0x3802: 0x00c0, 0x3803: 0x00c0, 0x3804: 0x00c0, 0x3805: 0x00c0, - 0x3806: 0x00c0, 0x3807: 0x00c0, 0x3808: 0x00c0, 0x3809: 0x00c0, 0x380a: 0x00c0, 0x380b: 0x00c0, - 0x380c: 0x00c0, 0x380d: 0x00c0, 0x380e: 0x00c0, 0x380f: 0x00c0, 0x3810: 0x00c0, 0x3811: 0x00c0, - 0x3812: 0x00c0, 0x3813: 0x00c0, 0x3814: 0x00c0, 0x3815: 0x00c0, 0x3816: 0x00c0, 0x3817: 0x00c0, - 0x3818: 0x00c0, 0x3819: 0x00c0, 0x381a: 0x00c0, 0x381b: 0x00c0, 0x381c: 0x00c0, 0x381d: 0x00c0, - 0x381e: 0x00c0, 0x381f: 0x00c0, 0x3820: 0x00c0, 0x3821: 0x00c0, 0x3822: 0x00c0, 0x3823: 0x00c0, - 0x3824: 0x00c0, 0x3825: 0x00c0, 0x3826: 0x00c0, 0x3827: 0x00c0, 0x3828: 0x00c0, 0x3829: 0x00c0, - 0x382a: 0x00c0, 0x382b: 0x00c0, 0x382c: 0x00c0, 0x382d: 0x00c0, 0x382e: 0x00c0, 0x382f: 0x00c0, - 0x3830: 0x00c0, 0x3831: 0x00c0, 0x3832: 0x00c0, - 0x383a: 0x0080, 0x383b: 0x0080, - 0x383c: 0x0080, 0x383d: 0x0080, 0x383e: 0x0080, 0x383f: 0x0080, - // Block 0xe1, offset 0x3840 - 0x3860: 0x0080, 0x3861: 0x0080, 0x3862: 0x0080, 0x3863: 0x0080, - 0x3864: 0x0080, 0x3865: 0x0080, 0x3866: 0x0080, 0x3867: 0x0080, 0x3868: 0x0080, 0x3869: 0x0080, - 0x386a: 0x0080, 0x386b: 0x0080, 0x386c: 0x0080, 0x386d: 0x0080, 0x386e: 0x0080, 0x386f: 0x0080, - 0x3870: 0x0080, 0x3871: 0x0080, 0x3872: 0x0080, 0x3873: 0x0080, 0x3874: 0x0080, 0x3875: 0x0080, - 0x3876: 0x0080, 0x3877: 0x0080, 0x3878: 0x0080, 0x3879: 0x0080, 0x387a: 0x0080, 0x387b: 0x0080, - 0x387c: 0x0080, 0x387d: 0x0080, 0x387e: 0x0080, - // Block 0xe2, offset 0x3880 - 0x3880: 0x00c0, 0x3881: 0x00c3, 0x3882: 0x00c0, 0x3883: 0x00c0, 0x3884: 0x00c0, 0x3885: 0x00c0, - 0x3886: 0x00c0, 0x3887: 0x00c0, 0x3888: 0x00c0, 0x3889: 0x00c0, 0x388a: 0x00c0, 0x388b: 0x00c0, - 0x388c: 0x00c0, 0x388d: 0x00c0, 0x388e: 0x00c0, 0x388f: 0x00c0, 0x3890: 0x00c0, 0x3891: 0x00c0, - 0x3892: 0x00c0, 0x3893: 0x00c0, 0x3894: 0x00c0, 0x3895: 0x00c0, 0x3896: 0x00c0, 0x3897: 0x00c0, - 0x3898: 0x00c0, 0x3899: 0x00c0, 0x389a: 0x00c0, 0x389b: 0x00c0, 0x389c: 0x00c0, 0x389d: 0x00c0, - 0x389e: 0x00c0, 0x389f: 0x00c0, 0x38a0: 0x00c0, 0x38a1: 0x00c0, 0x38a2: 0x00c0, 0x38a3: 0x00c0, - 0x38a4: 0x00c0, 0x38a5: 0x00c0, 0x38a6: 0x00c0, 0x38a7: 0x00c0, 0x38a8: 0x00c0, 0x38a9: 0x00c0, - 0x38aa: 0x00c0, 0x38ab: 0x00c0, 0x38ac: 0x00c0, 0x38ad: 0x00c0, 0x38ae: 0x00c0, 0x38af: 0x00c0, - 0x38b0: 0x00c0, 0x38b1: 0x00c0, 0x38b2: 0x00c0, 0x38b3: 0x00c0, 0x38b4: 0x00c0, 0x38b5: 0x00c0, - 0x38b6: 0x00c0, 0x38b7: 0x00c0, 0x38b8: 0x00c3, 0x38b9: 0x00c3, 0x38ba: 0x00c3, 0x38bb: 0x00c3, - 0x38bc: 0x00c3, 0x38bd: 0x00c3, 0x38be: 0x00c3, 0x38bf: 0x00c3, - // Block 0xe3, offset 0x38c0 - 0x38c0: 0x00c3, 0x38c1: 0x00c3, 0x38c2: 0x00c3, 0x38c3: 0x00c3, 0x38c4: 0x00c3, 0x38c5: 0x00c3, - 0x38c6: 0x00c6, 0x38c7: 0x0080, 0x38c8: 0x0080, 0x38c9: 0x0080, 0x38ca: 0x0080, 0x38cb: 0x0080, - 0x38cc: 0x0080, 0x38cd: 0x0080, - 0x38d2: 0x0080, 0x38d3: 0x0080, 0x38d4: 0x0080, 0x38d5: 0x0080, 0x38d6: 0x0080, 0x38d7: 0x0080, - 0x38d8: 0x0080, 0x38d9: 0x0080, 0x38da: 0x0080, 0x38db: 0x0080, 0x38dc: 0x0080, 0x38dd: 0x0080, - 0x38de: 0x0080, 0x38df: 0x0080, 0x38e0: 0x0080, 0x38e1: 0x0080, 0x38e2: 0x0080, 0x38e3: 0x0080, - 0x38e4: 0x0080, 0x38e5: 0x0080, 0x38e6: 0x00c0, 0x38e7: 0x00c0, 0x38e8: 0x00c0, 0x38e9: 0x00c0, - 0x38ea: 0x00c0, 0x38eb: 0x00c0, 0x38ec: 0x00c0, 0x38ed: 0x00c0, 0x38ee: 0x00c0, 0x38ef: 0x00c0, - 0x38ff: 0x00c6, - // Block 0xe4, offset 0x3900 - 0x3900: 0x00c3, 0x3901: 0x00c3, 0x3902: 0x00c0, 0x3903: 0x00c0, 0x3904: 0x00c0, 0x3905: 0x00c0, - 0x3906: 0x00c0, 0x3907: 0x00c0, 0x3908: 0x00c0, 0x3909: 0x00c0, 0x390a: 0x00c0, 0x390b: 0x00c0, - 0x390c: 0x00c0, 0x390d: 0x00c0, 0x390e: 0x00c0, 0x390f: 0x00c0, 0x3910: 0x00c0, 0x3911: 0x00c0, - 0x3912: 0x00c0, 0x3913: 0x00c0, 0x3914: 0x00c0, 0x3915: 0x00c0, 0x3916: 0x00c0, 0x3917: 0x00c0, - 0x3918: 0x00c0, 0x3919: 0x00c0, 0x391a: 0x00c0, 0x391b: 0x00c0, 0x391c: 0x00c0, 0x391d: 0x00c0, - 0x391e: 0x00c0, 0x391f: 0x00c0, 0x3920: 0x00c0, 0x3921: 0x00c0, 0x3922: 0x00c0, 0x3923: 0x00c0, - 0x3924: 0x00c0, 0x3925: 0x00c0, 0x3926: 0x00c0, 0x3927: 0x00c0, 0x3928: 0x00c0, 0x3929: 0x00c0, - 0x392a: 0x00c0, 0x392b: 0x00c0, 0x392c: 0x00c0, 0x392d: 0x00c0, 0x392e: 0x00c0, 0x392f: 0x00c0, - 0x3930: 0x00c0, 0x3931: 0x00c0, 0x3932: 0x00c0, 0x3933: 0x00c3, 0x3934: 0x00c3, 0x3935: 0x00c3, - 0x3936: 0x00c3, 0x3937: 0x00c0, 0x3938: 0x00c0, 0x3939: 0x00c6, 0x393a: 0x00c3, 0x393b: 0x0080, - 0x393c: 0x0080, 0x393d: 0x0040, 0x393e: 0x0080, 0x393f: 0x0080, - // Block 0xe5, offset 0x3940 - 0x3940: 0x0080, 0x3941: 0x0080, - 0x3950: 0x00c0, 0x3951: 0x00c0, - 0x3952: 0x00c0, 0x3953: 0x00c0, 0x3954: 0x00c0, 0x3955: 0x00c0, 0x3956: 0x00c0, 0x3957: 0x00c0, - 0x3958: 0x00c0, 0x3959: 0x00c0, 0x395a: 0x00c0, 0x395b: 0x00c0, 0x395c: 0x00c0, 0x395d: 0x00c0, - 0x395e: 0x00c0, 0x395f: 0x00c0, 0x3960: 0x00c0, 0x3961: 0x00c0, 0x3962: 0x00c0, 0x3963: 0x00c0, - 0x3964: 0x00c0, 0x3965: 0x00c0, 0x3966: 0x00c0, 0x3967: 0x00c0, 0x3968: 0x00c0, - 0x3970: 0x00c0, 0x3971: 0x00c0, 0x3972: 0x00c0, 0x3973: 0x00c0, 0x3974: 0x00c0, 0x3975: 0x00c0, - 0x3976: 0x00c0, 0x3977: 0x00c0, 0x3978: 0x00c0, 0x3979: 0x00c0, - // Block 0xe6, offset 0x3980 - 0x3980: 0x00c3, 0x3981: 0x00c3, 0x3982: 0x00c3, 0x3983: 0x00c0, 0x3984: 0x00c0, 0x3985: 0x00c0, - 0x3986: 0x00c0, 0x3987: 0x00c0, 0x3988: 0x00c0, 0x3989: 0x00c0, 0x398a: 0x00c0, 0x398b: 0x00c0, - 0x398c: 0x00c0, 0x398d: 0x00c0, 0x398e: 0x00c0, 0x398f: 0x00c0, 0x3990: 0x00c0, 0x3991: 0x00c0, - 0x3992: 0x00c0, 0x3993: 0x00c0, 0x3994: 0x00c0, 0x3995: 0x00c0, 0x3996: 0x00c0, 0x3997: 0x00c0, - 0x3998: 0x00c0, 0x3999: 0x00c0, 0x399a: 0x00c0, 0x399b: 0x00c0, 0x399c: 0x00c0, 0x399d: 0x00c0, - 0x399e: 0x00c0, 0x399f: 0x00c0, 0x39a0: 0x00c0, 0x39a1: 0x00c0, 0x39a2: 0x00c0, 0x39a3: 0x00c0, - 0x39a4: 0x00c0, 0x39a5: 0x00c0, 0x39a6: 0x00c0, 0x39a7: 0x00c3, 0x39a8: 0x00c3, 0x39a9: 0x00c3, - 0x39aa: 0x00c3, 0x39ab: 0x00c3, 0x39ac: 0x00c0, 0x39ad: 0x00c3, 0x39ae: 0x00c3, 0x39af: 0x00c3, - 0x39b0: 0x00c3, 0x39b1: 0x00c3, 0x39b2: 0x00c3, 0x39b3: 0x00c6, 0x39b4: 0x00c6, - 0x39b6: 0x00c0, 0x39b7: 0x00c0, 0x39b8: 0x00c0, 0x39b9: 0x00c0, 0x39ba: 0x00c0, 0x39bb: 0x00c0, - 0x39bc: 0x00c0, 0x39bd: 0x00c0, 0x39be: 0x00c0, 0x39bf: 0x00c0, - // Block 0xe7, offset 0x39c0 - 0x39c0: 0x0080, 0x39c1: 0x0080, 0x39c2: 0x0080, 0x39c3: 0x0080, - 0x39d0: 0x00c0, 0x39d1: 0x00c0, - 0x39d2: 0x00c0, 0x39d3: 0x00c0, 0x39d4: 0x00c0, 0x39d5: 0x00c0, 0x39d6: 0x00c0, 0x39d7: 0x00c0, - 0x39d8: 0x00c0, 0x39d9: 0x00c0, 0x39da: 0x00c0, 0x39db: 0x00c0, 0x39dc: 0x00c0, 0x39dd: 0x00c0, - 0x39de: 0x00c0, 0x39df: 0x00c0, 0x39e0: 0x00c0, 0x39e1: 0x00c0, 0x39e2: 0x00c0, 0x39e3: 0x00c0, - 0x39e4: 0x00c0, 0x39e5: 0x00c0, 0x39e6: 0x00c0, 0x39e7: 0x00c0, 0x39e8: 0x00c0, 0x39e9: 0x00c0, - 0x39ea: 0x00c0, 0x39eb: 0x00c0, 0x39ec: 0x00c0, 0x39ed: 0x00c0, 0x39ee: 0x00c0, 0x39ef: 0x00c0, - 0x39f0: 0x00c0, 0x39f1: 0x00c0, 0x39f2: 0x00c0, 0x39f3: 0x00c3, 0x39f4: 0x0080, 0x39f5: 0x0080, - 0x39f6: 0x00c0, - // Block 0xe8, offset 0x3a00 - 0x3a00: 0x00c3, 0x3a01: 0x00c3, 0x3a02: 0x00c0, 0x3a03: 0x00c0, 0x3a04: 0x00c0, 0x3a05: 0x00c0, - 0x3a06: 0x00c0, 0x3a07: 0x00c0, 0x3a08: 0x00c0, 0x3a09: 0x00c0, 0x3a0a: 0x00c0, 0x3a0b: 0x00c0, - 0x3a0c: 0x00c0, 0x3a0d: 0x00c0, 0x3a0e: 0x00c0, 0x3a0f: 0x00c0, 0x3a10: 0x00c0, 0x3a11: 0x00c0, - 0x3a12: 0x00c0, 0x3a13: 0x00c0, 0x3a14: 0x00c0, 0x3a15: 0x00c0, 0x3a16: 0x00c0, 0x3a17: 0x00c0, - 0x3a18: 0x00c0, 0x3a19: 0x00c0, 0x3a1a: 0x00c0, 0x3a1b: 0x00c0, 0x3a1c: 0x00c0, 0x3a1d: 0x00c0, - 0x3a1e: 0x00c0, 0x3a1f: 0x00c0, 0x3a20: 0x00c0, 0x3a21: 0x00c0, 0x3a22: 0x00c0, 0x3a23: 0x00c0, - 0x3a24: 0x00c0, 0x3a25: 0x00c0, 0x3a26: 0x00c0, 0x3a27: 0x00c0, 0x3a28: 0x00c0, 0x3a29: 0x00c0, - 0x3a2a: 0x00c0, 0x3a2b: 0x00c0, 0x3a2c: 0x00c0, 0x3a2d: 0x00c0, 0x3a2e: 0x00c0, 0x3a2f: 0x00c0, - 0x3a30: 0x00c0, 0x3a31: 0x00c0, 0x3a32: 0x00c0, 0x3a33: 0x00c0, 0x3a34: 0x00c0, 0x3a35: 0x00c0, - 0x3a36: 0x00c3, 0x3a37: 0x00c3, 0x3a38: 0x00c3, 0x3a39: 0x00c3, 0x3a3a: 0x00c3, 0x3a3b: 0x00c3, - 0x3a3c: 0x00c3, 0x3a3d: 0x00c3, 0x3a3e: 0x00c3, 0x3a3f: 0x00c0, - // Block 0xe9, offset 0x3a40 - 0x3a40: 0x00c5, 0x3a41: 0x00c0, 0x3a42: 0x00c0, 0x3a43: 0x00c0, 0x3a44: 0x00c0, 0x3a45: 0x0080, - 0x3a46: 0x0080, 0x3a47: 0x0080, 0x3a48: 0x0080, 0x3a49: 0x0080, 0x3a4a: 0x00c3, 0x3a4b: 0x00c3, - 0x3a4c: 0x00c3, 0x3a4d: 0x0080, 0x3a50: 0x00c0, 0x3a51: 0x00c0, - 0x3a52: 0x00c0, 0x3a53: 0x00c0, 0x3a54: 0x00c0, 0x3a55: 0x00c0, 0x3a56: 0x00c0, 0x3a57: 0x00c0, - 0x3a58: 0x00c0, 0x3a59: 0x00c0, 0x3a5a: 0x00c0, 0x3a5b: 0x0080, 0x3a5c: 0x00c0, 0x3a5d: 0x0080, - 0x3a5e: 0x0080, 0x3a5f: 0x0080, 0x3a61: 0x0080, 0x3a62: 0x0080, 0x3a63: 0x0080, - 0x3a64: 0x0080, 0x3a65: 0x0080, 0x3a66: 0x0080, 0x3a67: 0x0080, 0x3a68: 0x0080, 0x3a69: 0x0080, - 0x3a6a: 0x0080, 0x3a6b: 0x0080, 0x3a6c: 0x0080, 0x3a6d: 0x0080, 0x3a6e: 0x0080, 0x3a6f: 0x0080, - 0x3a70: 0x0080, 0x3a71: 0x0080, 0x3a72: 0x0080, 0x3a73: 0x0080, 0x3a74: 0x0080, - // Block 0xea, offset 0x3a80 - 0x3a80: 0x00c0, 0x3a81: 0x00c0, 0x3a82: 0x00c0, 0x3a83: 0x00c0, 0x3a84: 0x00c0, 0x3a85: 0x00c0, - 0x3a86: 0x00c0, 0x3a87: 0x00c0, 0x3a88: 0x00c0, 0x3a89: 0x00c0, 0x3a8a: 0x00c0, 0x3a8b: 0x00c0, - 0x3a8c: 0x00c0, 0x3a8d: 0x00c0, 0x3a8e: 0x00c0, 0x3a8f: 0x00c0, 0x3a90: 0x00c0, 0x3a91: 0x00c0, - 0x3a93: 0x00c0, 0x3a94: 0x00c0, 0x3a95: 0x00c0, 0x3a96: 0x00c0, 0x3a97: 0x00c0, - 0x3a98: 0x00c0, 0x3a99: 0x00c0, 0x3a9a: 0x00c0, 0x3a9b: 0x00c0, 0x3a9c: 0x00c0, 0x3a9d: 0x00c0, - 0x3a9e: 0x00c0, 0x3a9f: 0x00c0, 0x3aa0: 0x00c0, 0x3aa1: 0x00c0, 0x3aa2: 0x00c0, 0x3aa3: 0x00c0, - 0x3aa4: 0x00c0, 0x3aa5: 0x00c0, 0x3aa6: 0x00c0, 0x3aa7: 0x00c0, 0x3aa8: 0x00c0, 0x3aa9: 0x00c0, - 0x3aaa: 0x00c0, 0x3aab: 0x00c0, 0x3aac: 0x00c0, 0x3aad: 0x00c0, 0x3aae: 0x00c0, 0x3aaf: 0x00c3, - 0x3ab0: 0x00c3, 0x3ab1: 0x00c3, 0x3ab2: 0x00c0, 0x3ab3: 0x00c0, 0x3ab4: 0x00c3, 0x3ab5: 0x00c5, - 0x3ab6: 0x00c3, 0x3ab7: 0x00c3, 0x3ab8: 0x0080, 0x3ab9: 0x0080, 0x3aba: 0x0080, 0x3abb: 0x0080, - 0x3abc: 0x0080, 0x3abd: 0x0080, 0x3abe: 0x00c3, - // Block 0xeb, offset 0x3ac0 - 0x3ac0: 0x00c0, 0x3ac1: 0x00c0, 0x3ac2: 0x00c0, 0x3ac3: 0x00c0, 0x3ac4: 0x00c0, 0x3ac5: 0x00c0, - 0x3ac6: 0x00c0, 0x3ac8: 0x00c0, 0x3aca: 0x00c0, 0x3acb: 0x00c0, - 0x3acc: 0x00c0, 0x3acd: 0x00c0, 0x3acf: 0x00c0, 0x3ad0: 0x00c0, 0x3ad1: 0x00c0, - 0x3ad2: 0x00c0, 0x3ad3: 0x00c0, 0x3ad4: 0x00c0, 0x3ad5: 0x00c0, 0x3ad6: 0x00c0, 0x3ad7: 0x00c0, - 0x3ad8: 0x00c0, 0x3ad9: 0x00c0, 0x3ada: 0x00c0, 0x3adb: 0x00c0, 0x3adc: 0x00c0, 0x3add: 0x00c0, - 0x3adf: 0x00c0, 0x3ae0: 0x00c0, 0x3ae1: 0x00c0, 0x3ae2: 0x00c0, 0x3ae3: 0x00c0, - 0x3ae4: 0x00c0, 0x3ae5: 0x00c0, 0x3ae6: 0x00c0, 0x3ae7: 0x00c0, 0x3ae8: 0x00c0, 0x3ae9: 0x0080, - 0x3af0: 0x00c0, 0x3af1: 0x00c0, 0x3af2: 0x00c0, 0x3af3: 0x00c0, 0x3af4: 0x00c0, 0x3af5: 0x00c0, - 0x3af6: 0x00c0, 0x3af7: 0x00c0, 0x3af8: 0x00c0, 0x3af9: 0x00c0, 0x3afa: 0x00c0, 0x3afb: 0x00c0, - 0x3afc: 0x00c0, 0x3afd: 0x00c0, 0x3afe: 0x00c0, 0x3aff: 0x00c0, - // Block 0xec, offset 0x3b00 - 0x3b00: 0x00c0, 0x3b01: 0x00c0, 0x3b02: 0x00c0, 0x3b03: 0x00c0, 0x3b04: 0x00c0, 0x3b05: 0x00c0, - 0x3b06: 0x00c0, 0x3b07: 0x00c0, 0x3b08: 0x00c0, 0x3b09: 0x00c0, 0x3b0a: 0x00c0, 0x3b0b: 0x00c0, - 0x3b0c: 0x00c0, 0x3b0d: 0x00c0, 0x3b0e: 0x00c0, 0x3b0f: 0x00c0, 0x3b10: 0x00c0, 0x3b11: 0x00c0, - 0x3b12: 0x00c0, 0x3b13: 0x00c0, 0x3b14: 0x00c0, 0x3b15: 0x00c0, 0x3b16: 0x00c0, 0x3b17: 0x00c0, - 0x3b18: 0x00c0, 0x3b19: 0x00c0, 0x3b1a: 0x00c0, 0x3b1b: 0x00c0, 0x3b1c: 0x00c0, 0x3b1d: 0x00c0, - 0x3b1e: 0x00c0, 0x3b1f: 0x00c3, 0x3b20: 0x00c0, 0x3b21: 0x00c0, 0x3b22: 0x00c0, 0x3b23: 0x00c3, - 0x3b24: 0x00c3, 0x3b25: 0x00c3, 0x3b26: 0x00c3, 0x3b27: 0x00c3, 0x3b28: 0x00c3, 0x3b29: 0x00c3, - 0x3b2a: 0x00c6, - 0x3b30: 0x00c0, 0x3b31: 0x00c0, 0x3b32: 0x00c0, 0x3b33: 0x00c0, 0x3b34: 0x00c0, 0x3b35: 0x00c0, - 0x3b36: 0x00c0, 0x3b37: 0x00c0, 0x3b38: 0x00c0, 0x3b39: 0x00c0, - // Block 0xed, offset 0x3b40 - 0x3b40: 0x00c3, 0x3b41: 0x00c3, 0x3b42: 0x00c0, 0x3b43: 0x00c0, 0x3b45: 0x00c0, - 0x3b46: 0x00c0, 0x3b47: 0x00c0, 0x3b48: 0x00c0, 0x3b49: 0x00c0, 0x3b4a: 0x00c0, 0x3b4b: 0x00c0, - 0x3b4c: 0x00c0, 0x3b4f: 0x00c0, 0x3b50: 0x00c0, - 0x3b53: 0x00c0, 0x3b54: 0x00c0, 0x3b55: 0x00c0, 0x3b56: 0x00c0, 0x3b57: 0x00c0, - 0x3b58: 0x00c0, 0x3b59: 0x00c0, 0x3b5a: 0x00c0, 0x3b5b: 0x00c0, 0x3b5c: 0x00c0, 0x3b5d: 0x00c0, - 0x3b5e: 0x00c0, 0x3b5f: 0x00c0, 0x3b60: 0x00c0, 0x3b61: 0x00c0, 0x3b62: 0x00c0, 0x3b63: 0x00c0, - 0x3b64: 0x00c0, 0x3b65: 0x00c0, 0x3b66: 0x00c0, 0x3b67: 0x00c0, 0x3b68: 0x00c0, - 0x3b6a: 0x00c0, 0x3b6b: 0x00c0, 0x3b6c: 0x00c0, 0x3b6d: 0x00c0, 0x3b6e: 0x00c0, 0x3b6f: 0x00c0, - 0x3b70: 0x00c0, 0x3b72: 0x00c0, 0x3b73: 0x00c0, 0x3b75: 0x00c0, - 0x3b76: 0x00c0, 0x3b77: 0x00c0, 0x3b78: 0x00c0, 0x3b79: 0x00c0, - 0x3b7c: 0x00c3, 0x3b7d: 0x00c0, 0x3b7e: 0x00c0, 0x3b7f: 0x00c0, - // Block 0xee, offset 0x3b80 - 0x3b80: 0x00c3, 0x3b81: 0x00c0, 0x3b82: 0x00c0, 0x3b83: 0x00c0, 0x3b84: 0x00c0, - 0x3b87: 0x00c0, 0x3b88: 0x00c0, 0x3b8b: 0x00c0, - 0x3b8c: 0x00c0, 0x3b8d: 0x00c5, 0x3b90: 0x00c0, - 0x3b97: 0x00c0, - 0x3b9d: 0x00c0, - 0x3b9e: 0x00c0, 0x3b9f: 0x00c0, 0x3ba0: 0x00c0, 0x3ba1: 0x00c0, 0x3ba2: 0x00c0, 0x3ba3: 0x00c0, - 0x3ba6: 0x00c3, 0x3ba7: 0x00c3, 0x3ba8: 0x00c3, 0x3ba9: 0x00c3, - 0x3baa: 0x00c3, 0x3bab: 0x00c3, 0x3bac: 0x00c3, - 0x3bb0: 0x00c3, 0x3bb1: 0x00c3, 0x3bb2: 0x00c3, 0x3bb3: 0x00c3, 0x3bb4: 0x00c3, - // Block 0xef, offset 0x3bc0 - 0x3bc0: 0x00c0, 0x3bc1: 0x00c0, 0x3bc2: 0x00c0, 0x3bc3: 0x00c0, 0x3bc4: 0x00c0, 0x3bc5: 0x00c0, - 0x3bc6: 0x00c0, 0x3bc7: 0x00c0, 0x3bc8: 0x00c0, 0x3bc9: 0x00c0, 0x3bca: 0x00c0, 0x3bcb: 0x00c0, - 0x3bcc: 0x00c0, 0x3bcd: 0x00c0, 0x3bce: 0x00c0, 0x3bcf: 0x00c0, 0x3bd0: 0x00c0, 0x3bd1: 0x00c0, - 0x3bd2: 0x00c0, 0x3bd3: 0x00c0, 0x3bd4: 0x00c0, 0x3bd5: 0x00c0, 0x3bd6: 0x00c0, 0x3bd7: 0x00c0, - 0x3bd8: 0x00c0, 0x3bd9: 0x00c0, 0x3bda: 0x00c0, 0x3bdb: 0x00c0, 0x3bdc: 0x00c0, 0x3bdd: 0x00c0, - 0x3bde: 0x00c0, 0x3bdf: 0x00c0, 0x3be0: 0x00c0, 0x3be1: 0x00c0, 0x3be2: 0x00c0, 0x3be3: 0x00c0, - 0x3be4: 0x00c0, 0x3be5: 0x00c0, 0x3be6: 0x00c0, 0x3be7: 0x00c0, 0x3be8: 0x00c0, 0x3be9: 0x00c0, - 0x3bea: 0x00c0, 0x3beb: 0x00c0, 0x3bec: 0x00c0, 0x3bed: 0x00c0, 0x3bee: 0x00c0, 0x3bef: 0x00c0, - 0x3bf0: 0x00c0, 0x3bf1: 0x00c0, 0x3bf2: 0x00c0, 0x3bf3: 0x00c0, 0x3bf4: 0x00c0, 0x3bf5: 0x00c0, - 0x3bf6: 0x00c0, 0x3bf7: 0x00c0, 0x3bf8: 0x00c3, 0x3bf9: 0x00c3, 0x3bfa: 0x00c3, 0x3bfb: 0x00c3, - 0x3bfc: 0x00c3, 0x3bfd: 0x00c3, 0x3bfe: 0x00c3, 0x3bff: 0x00c3, - // Block 0xf0, offset 0x3c00 - 0x3c00: 0x00c0, 0x3c01: 0x00c0, 0x3c02: 0x00c6, 0x3c03: 0x00c3, 0x3c04: 0x00c3, 0x3c05: 0x00c0, - 0x3c06: 0x00c3, 0x3c07: 0x00c0, 0x3c08: 0x00c0, 0x3c09: 0x00c0, 0x3c0a: 0x00c0, 0x3c0b: 0x0080, - 0x3c0c: 0x0080, 0x3c0d: 0x0080, 0x3c0e: 0x0080, 0x3c0f: 0x0080, 0x3c10: 0x00c0, 0x3c11: 0x00c0, - 0x3c12: 0x00c0, 0x3c13: 0x00c0, 0x3c14: 0x00c0, 0x3c15: 0x00c0, 0x3c16: 0x00c0, 0x3c17: 0x00c0, - 0x3c18: 0x00c0, 0x3c19: 0x00c0, 0x3c1b: 0x0080, 0x3c1d: 0x0080, - // Block 0xf1, offset 0x3c40 - 0x3c40: 0x00c0, 0x3c41: 0x00c0, 0x3c42: 0x00c0, 0x3c43: 0x00c0, 0x3c44: 0x00c0, 0x3c45: 0x00c0, - 0x3c46: 0x00c0, 0x3c47: 0x00c0, 0x3c48: 0x00c0, 0x3c49: 0x00c0, 0x3c4a: 0x00c0, 0x3c4b: 0x00c0, - 0x3c4c: 0x00c0, 0x3c4d: 0x00c0, 0x3c4e: 0x00c0, 0x3c4f: 0x00c0, 0x3c50: 0x00c0, 0x3c51: 0x00c0, - 0x3c52: 0x00c0, 0x3c53: 0x00c0, 0x3c54: 0x00c0, 0x3c55: 0x00c0, 0x3c56: 0x00c0, 0x3c57: 0x00c0, - 0x3c58: 0x00c0, 0x3c59: 0x00c0, 0x3c5a: 0x00c0, 0x3c5b: 0x00c0, 0x3c5c: 0x00c0, 0x3c5d: 0x00c0, - 0x3c5e: 0x00c0, 0x3c5f: 0x00c0, 0x3c60: 0x00c0, 0x3c61: 0x00c0, 0x3c62: 0x00c0, 0x3c63: 0x00c0, - 0x3c64: 0x00c0, 0x3c65: 0x00c0, 0x3c66: 0x00c0, 0x3c67: 0x00c0, 0x3c68: 0x00c0, 0x3c69: 0x00c0, - 0x3c6a: 0x00c0, 0x3c6b: 0x00c0, 0x3c6c: 0x00c0, 0x3c6d: 0x00c0, 0x3c6e: 0x00c0, 0x3c6f: 0x00c0, - 0x3c70: 0x00c0, 0x3c71: 0x00c0, 0x3c72: 0x00c0, 0x3c73: 0x00c3, 0x3c74: 0x00c3, 0x3c75: 0x00c3, - 0x3c76: 0x00c3, 0x3c77: 0x00c3, 0x3c78: 0x00c3, 0x3c79: 0x00c0, 0x3c7a: 0x00c3, 0x3c7b: 0x00c0, - 0x3c7c: 0x00c0, 0x3c7d: 0x00c0, 0x3c7e: 0x00c0, 0x3c7f: 0x00c3, - // Block 0xf2, offset 0x3c80 - 0x3c80: 0x00c3, 0x3c81: 0x00c0, 0x3c82: 0x00c6, 0x3c83: 0x00c3, 0x3c84: 0x00c0, 0x3c85: 0x00c0, - 0x3c86: 0x0080, 0x3c87: 0x00c0, - 0x3c90: 0x00c0, 0x3c91: 0x00c0, - 0x3c92: 0x00c0, 0x3c93: 0x00c0, 0x3c94: 0x00c0, 0x3c95: 0x00c0, 0x3c96: 0x00c0, 0x3c97: 0x00c0, - 0x3c98: 0x00c0, 0x3c99: 0x00c0, - // Block 0xf3, offset 0x3cc0 - 0x3cc0: 0x00c0, 0x3cc1: 0x00c0, 0x3cc2: 0x00c0, 0x3cc3: 0x00c0, 0x3cc4: 0x00c0, 0x3cc5: 0x00c0, - 0x3cc6: 0x00c0, 0x3cc7: 0x00c0, 0x3cc8: 0x00c0, 0x3cc9: 0x00c0, 0x3cca: 0x00c0, 0x3ccb: 0x00c0, - 0x3ccc: 0x00c0, 0x3ccd: 0x00c0, 0x3cce: 0x00c0, 0x3ccf: 0x00c0, 0x3cd0: 0x00c0, 0x3cd1: 0x00c0, - 0x3cd2: 0x00c0, 0x3cd3: 0x00c0, 0x3cd4: 0x00c0, 0x3cd5: 0x00c0, 0x3cd6: 0x00c0, 0x3cd7: 0x00c0, - 0x3cd8: 0x00c0, 0x3cd9: 0x00c0, 0x3cda: 0x00c0, 0x3cdb: 0x00c0, 0x3cdc: 0x00c0, 0x3cdd: 0x00c0, - 0x3cde: 0x00c0, 0x3cdf: 0x00c0, 0x3ce0: 0x00c0, 0x3ce1: 0x00c0, 0x3ce2: 0x00c0, 0x3ce3: 0x00c0, - 0x3ce4: 0x00c0, 0x3ce5: 0x00c0, 0x3ce6: 0x00c0, 0x3ce7: 0x00c0, 0x3ce8: 0x00c0, 0x3ce9: 0x00c0, - 0x3cea: 0x00c0, 0x3ceb: 0x00c0, 0x3cec: 0x00c0, 0x3ced: 0x00c0, 0x3cee: 0x00c0, 0x3cef: 0x00c0, - 0x3cf0: 0x00c0, 0x3cf1: 0x00c0, 0x3cf2: 0x00c3, 0x3cf3: 0x00c3, 0x3cf4: 0x00c3, 0x3cf5: 0x00c3, - 0x3cf8: 0x00c0, 0x3cf9: 0x00c0, 0x3cfa: 0x00c0, 0x3cfb: 0x00c0, - 0x3cfc: 0x00c3, 0x3cfd: 0x00c3, 0x3cfe: 0x00c0, 0x3cff: 0x00c6, - // Block 0xf4, offset 0x3d00 - 0x3d00: 0x00c3, 0x3d01: 0x0080, 0x3d02: 0x0080, 0x3d03: 0x0080, 0x3d04: 0x0080, 0x3d05: 0x0080, - 0x3d06: 0x0080, 0x3d07: 0x0080, 0x3d08: 0x0080, 0x3d09: 0x0080, 0x3d0a: 0x0080, 0x3d0b: 0x0080, - 0x3d0c: 0x0080, 0x3d0d: 0x0080, 0x3d0e: 0x0080, 0x3d0f: 0x0080, 0x3d10: 0x0080, 0x3d11: 0x0080, - 0x3d12: 0x0080, 0x3d13: 0x0080, 0x3d14: 0x0080, 0x3d15: 0x0080, 0x3d16: 0x0080, 0x3d17: 0x0080, - 0x3d18: 0x00c0, 0x3d19: 0x00c0, 0x3d1a: 0x00c0, 0x3d1b: 0x00c0, 0x3d1c: 0x00c3, 0x3d1d: 0x00c3, - // Block 0xf5, offset 0x3d40 - 0x3d40: 0x00c0, 0x3d41: 0x00c0, 0x3d42: 0x00c0, 0x3d43: 0x00c0, 0x3d44: 0x00c0, 0x3d45: 0x00c0, - 0x3d46: 0x00c0, 0x3d47: 0x00c0, 0x3d48: 0x00c0, 0x3d49: 0x00c0, 0x3d4a: 0x00c0, 0x3d4b: 0x00c0, - 0x3d4c: 0x00c0, 0x3d4d: 0x00c0, 0x3d4e: 0x00c0, 0x3d4f: 0x00c0, 0x3d50: 0x00c0, 0x3d51: 0x00c0, - 0x3d52: 0x00c0, 0x3d53: 0x00c0, 0x3d54: 0x00c0, 0x3d55: 0x00c0, 0x3d56: 0x00c0, 0x3d57: 0x00c0, - 0x3d58: 0x00c0, 0x3d59: 0x00c0, 0x3d5a: 0x00c0, 0x3d5b: 0x00c0, 0x3d5c: 0x00c0, 0x3d5d: 0x00c0, - 0x3d5e: 0x00c0, 0x3d5f: 0x00c0, 0x3d60: 0x00c0, 0x3d61: 0x00c0, 0x3d62: 0x00c0, 0x3d63: 0x00c0, - 0x3d64: 0x00c0, 0x3d65: 0x00c0, 0x3d66: 0x00c0, 0x3d67: 0x00c0, 0x3d68: 0x00c0, 0x3d69: 0x00c0, - 0x3d6a: 0x00c0, 0x3d6b: 0x00c0, 0x3d6c: 0x00c0, 0x3d6d: 0x00c0, 0x3d6e: 0x00c0, 0x3d6f: 0x00c0, - 0x3d70: 0x00c0, 0x3d71: 0x00c0, 0x3d72: 0x00c0, 0x3d73: 0x00c3, 0x3d74: 0x00c3, 0x3d75: 0x00c3, - 0x3d76: 0x00c3, 0x3d77: 0x00c3, 0x3d78: 0x00c3, 0x3d79: 0x00c3, 0x3d7a: 0x00c3, 0x3d7b: 0x00c0, - 0x3d7c: 0x00c0, 0x3d7d: 0x00c3, 0x3d7e: 0x00c0, 0x3d7f: 0x00c6, - // Block 0xf6, offset 0x3d80 - 0x3d80: 0x00c3, 0x3d81: 0x0080, 0x3d82: 0x0080, 0x3d83: 0x0080, 0x3d84: 0x00c0, - 0x3d90: 0x00c0, 0x3d91: 0x00c0, - 0x3d92: 0x00c0, 0x3d93: 0x00c0, 0x3d94: 0x00c0, 0x3d95: 0x00c0, 0x3d96: 0x00c0, 0x3d97: 0x00c0, - 0x3d98: 0x00c0, 0x3d99: 0x00c0, - 0x3da0: 0x0080, 0x3da1: 0x0080, 0x3da2: 0x0080, 0x3da3: 0x0080, - 0x3da4: 0x0080, 0x3da5: 0x0080, 0x3da6: 0x0080, 0x3da7: 0x0080, 0x3da8: 0x0080, 0x3da9: 0x0080, - 0x3daa: 0x0080, 0x3dab: 0x0080, 0x3dac: 0x0080, - // Block 0xf7, offset 0x3dc0 - 0x3dc0: 0x00c0, 0x3dc1: 0x00c0, 0x3dc2: 0x00c0, 0x3dc3: 0x00c0, 0x3dc4: 0x00c0, 0x3dc5: 0x00c0, - 0x3dc6: 0x00c0, 0x3dc7: 0x00c0, 0x3dc8: 0x00c0, 0x3dc9: 0x00c0, 0x3dca: 0x00c0, 0x3dcb: 0x00c0, - 0x3dcc: 0x00c0, 0x3dcd: 0x00c0, 0x3dce: 0x00c0, 0x3dcf: 0x00c0, 0x3dd0: 0x00c0, 0x3dd1: 0x00c0, - 0x3dd2: 0x00c0, 0x3dd3: 0x00c0, 0x3dd4: 0x00c0, 0x3dd5: 0x00c0, 0x3dd6: 0x00c0, 0x3dd7: 0x00c0, - 0x3dd8: 0x00c0, 0x3dd9: 0x00c0, 0x3dda: 0x00c0, 0x3ddb: 0x00c0, 0x3ddc: 0x00c0, 0x3ddd: 0x00c0, - 0x3dde: 0x00c0, 0x3ddf: 0x00c0, 0x3de0: 0x00c0, 0x3de1: 0x00c0, 0x3de2: 0x00c0, 0x3de3: 0x00c0, - 0x3de4: 0x00c0, 0x3de5: 0x00c0, 0x3de6: 0x00c0, 0x3de7: 0x00c0, 0x3de8: 0x00c0, 0x3de9: 0x00c0, - 0x3dea: 0x00c0, 0x3deb: 0x00c3, 0x3dec: 0x00c0, 0x3ded: 0x00c3, 0x3dee: 0x00c0, 0x3def: 0x00c0, - 0x3df0: 0x00c3, 0x3df1: 0x00c3, 0x3df2: 0x00c3, 0x3df3: 0x00c3, 0x3df4: 0x00c3, 0x3df5: 0x00c3, - 0x3df6: 0x00c5, 0x3df7: 0x00c3, - // Block 0xf8, offset 0x3e00 - 0x3e00: 0x00c0, 0x3e01: 0x00c0, 0x3e02: 0x00c0, 0x3e03: 0x00c0, 0x3e04: 0x00c0, 0x3e05: 0x00c0, - 0x3e06: 0x00c0, 0x3e07: 0x00c0, 0x3e08: 0x00c0, 0x3e09: 0x00c0, - // Block 0xf9, offset 0x3e40 - 0x3e40: 0x00c0, 0x3e41: 0x00c0, 0x3e42: 0x00c0, 0x3e43: 0x00c0, 0x3e44: 0x00c0, 0x3e45: 0x00c0, - 0x3e46: 0x00c0, 0x3e47: 0x00c0, 0x3e48: 0x00c0, 0x3e49: 0x00c0, 0x3e4a: 0x00c0, 0x3e4b: 0x00c0, - 0x3e4c: 0x00c0, 0x3e4d: 0x00c0, 0x3e4e: 0x00c0, 0x3e4f: 0x00c0, 0x3e50: 0x00c0, 0x3e51: 0x00c0, - 0x3e52: 0x00c0, 0x3e53: 0x00c0, 0x3e54: 0x00c0, 0x3e55: 0x00c0, 0x3e56: 0x00c0, 0x3e57: 0x00c0, - 0x3e58: 0x00c0, 0x3e59: 0x00c0, 0x3e5d: 0x00c3, - 0x3e5e: 0x00c3, 0x3e5f: 0x00c3, 0x3e60: 0x00c0, 0x3e61: 0x00c0, 0x3e62: 0x00c3, 0x3e63: 0x00c3, - 0x3e64: 0x00c3, 0x3e65: 0x00c3, 0x3e66: 0x00c0, 0x3e67: 0x00c3, 0x3e68: 0x00c3, 0x3e69: 0x00c3, - 0x3e6a: 0x00c3, 0x3e6b: 0x00c6, - 0x3e70: 0x00c0, 0x3e71: 0x00c0, 0x3e72: 0x00c0, 0x3e73: 0x00c0, 0x3e74: 0x00c0, 0x3e75: 0x00c0, - 0x3e76: 0x00c0, 0x3e77: 0x00c0, 0x3e78: 0x00c0, 0x3e79: 0x00c0, 0x3e7a: 0x0080, 0x3e7b: 0x0080, - 0x3e7c: 0x0080, 0x3e7d: 0x0080, 0x3e7e: 0x0080, 0x3e7f: 0x0080, - // Block 0xfa, offset 0x3e80 - 0x3ea0: 0x00c0, 0x3ea1: 0x00c0, 0x3ea2: 0x00c0, 0x3ea3: 0x00c0, - 0x3ea4: 0x00c0, 0x3ea5: 0x00c0, 0x3ea6: 0x00c0, 0x3ea7: 0x00c0, 0x3ea8: 0x00c0, 0x3ea9: 0x00c0, - 0x3eaa: 0x00c0, 0x3eab: 0x00c0, 0x3eac: 0x00c0, 0x3ead: 0x00c0, 0x3eae: 0x00c0, 0x3eaf: 0x00c0, - 0x3eb0: 0x00c0, 0x3eb1: 0x00c0, 0x3eb2: 0x00c0, 0x3eb3: 0x00c0, 0x3eb4: 0x00c0, 0x3eb5: 0x00c0, - 0x3eb6: 0x00c0, 0x3eb7: 0x00c0, 0x3eb8: 0x00c0, 0x3eb9: 0x00c0, 0x3eba: 0x00c0, 0x3ebb: 0x00c0, - 0x3ebc: 0x00c0, 0x3ebd: 0x00c0, 0x3ebe: 0x00c0, 0x3ebf: 0x00c0, - // Block 0xfb, offset 0x3ec0 - 0x3ec0: 0x00c0, 0x3ec1: 0x00c0, 0x3ec2: 0x00c0, 0x3ec3: 0x00c0, 0x3ec4: 0x00c0, 0x3ec5: 0x00c0, - 0x3ec6: 0x00c0, 0x3ec7: 0x00c0, 0x3ec8: 0x00c0, 0x3ec9: 0x00c0, 0x3eca: 0x00c0, 0x3ecb: 0x00c0, - 0x3ecc: 0x00c0, 0x3ecd: 0x00c0, 0x3ece: 0x00c0, 0x3ecf: 0x00c0, 0x3ed0: 0x00c0, 0x3ed1: 0x00c0, - 0x3ed2: 0x00c0, 0x3ed3: 0x00c0, 0x3ed4: 0x00c0, 0x3ed5: 0x00c0, 0x3ed6: 0x00c0, 0x3ed7: 0x00c0, - 0x3ed8: 0x00c0, 0x3ed9: 0x00c0, 0x3eda: 0x00c0, 0x3edb: 0x00c0, 0x3edc: 0x00c0, 0x3edd: 0x00c0, - 0x3ede: 0x00c0, 0x3edf: 0x00c0, 0x3ee0: 0x00c0, 0x3ee1: 0x00c0, 0x3ee2: 0x00c0, 0x3ee3: 0x00c0, - 0x3ee4: 0x00c0, 0x3ee5: 0x00c0, 0x3ee6: 0x00c0, 0x3ee7: 0x00c0, 0x3ee8: 0x00c0, 0x3ee9: 0x00c0, - 0x3eea: 0x0080, 0x3eeb: 0x0080, 0x3eec: 0x0080, 0x3eed: 0x0080, 0x3eee: 0x0080, 0x3eef: 0x0080, - 0x3ef0: 0x0080, 0x3ef1: 0x0080, 0x3ef2: 0x0080, - 0x3eff: 0x00c0, - // Block 0xfc, offset 0x3f00 - 0x3f00: 0x00c0, 0x3f01: 0x00c0, 0x3f02: 0x00c0, 0x3f03: 0x00c0, 0x3f04: 0x00c0, 0x3f05: 0x00c0, - 0x3f06: 0x00c0, 0x3f07: 0x00c0, 0x3f08: 0x00c0, 0x3f09: 0x00c0, 0x3f0a: 0x00c0, 0x3f0b: 0x00c0, - 0x3f0c: 0x00c0, 0x3f0d: 0x00c0, 0x3f0e: 0x00c0, 0x3f0f: 0x00c0, 0x3f10: 0x00c0, 0x3f11: 0x00c0, - 0x3f12: 0x00c0, 0x3f13: 0x00c0, 0x3f14: 0x00c0, 0x3f15: 0x00c0, 0x3f16: 0x00c0, 0x3f17: 0x00c0, - 0x3f18: 0x00c0, 0x3f19: 0x00c0, 0x3f1a: 0x00c0, 0x3f1b: 0x00c0, 0x3f1c: 0x00c0, 0x3f1d: 0x00c0, - 0x3f1e: 0x00c0, 0x3f1f: 0x00c0, 0x3f20: 0x00c0, 0x3f21: 0x00c0, 0x3f22: 0x00c0, 0x3f23: 0x00c0, - 0x3f24: 0x00c0, 0x3f25: 0x00c0, 0x3f26: 0x00c0, 0x3f27: 0x00c0, 0x3f28: 0x00c0, 0x3f29: 0x00c0, - 0x3f2a: 0x00c0, 0x3f2b: 0x00c0, 0x3f2c: 0x00c0, 0x3f2d: 0x00c0, 0x3f2e: 0x00c0, 0x3f2f: 0x00c0, - 0x3f30: 0x00c0, 0x3f31: 0x00c0, 0x3f32: 0x00c0, 0x3f33: 0x00c0, 0x3f34: 0x00c0, 0x3f35: 0x00c0, - 0x3f36: 0x00c0, 0x3f37: 0x00c0, 0x3f38: 0x00c0, - // Block 0xfd, offset 0x3f40 - 0x3f40: 0x00c0, 0x3f41: 0x00c0, 0x3f42: 0x00c0, 0x3f43: 0x00c0, 0x3f44: 0x00c0, 0x3f45: 0x00c0, - 0x3f46: 0x00c0, 0x3f47: 0x00c0, 0x3f48: 0x00c0, 0x3f4a: 0x00c0, 0x3f4b: 0x00c0, - 0x3f4c: 0x00c0, 0x3f4d: 0x00c0, 0x3f4e: 0x00c0, 0x3f4f: 0x00c0, 0x3f50: 0x00c0, 0x3f51: 0x00c0, - 0x3f52: 0x00c0, 0x3f53: 0x00c0, 0x3f54: 0x00c0, 0x3f55: 0x00c0, 0x3f56: 0x00c0, 0x3f57: 0x00c0, - 0x3f58: 0x00c0, 0x3f59: 0x00c0, 0x3f5a: 0x00c0, 0x3f5b: 0x00c0, 0x3f5c: 0x00c0, 0x3f5d: 0x00c0, - 0x3f5e: 0x00c0, 0x3f5f: 0x00c0, 0x3f60: 0x00c0, 0x3f61: 0x00c0, 0x3f62: 0x00c0, 0x3f63: 0x00c0, - 0x3f64: 0x00c0, 0x3f65: 0x00c0, 0x3f66: 0x00c0, 0x3f67: 0x00c0, 0x3f68: 0x00c0, 0x3f69: 0x00c0, - 0x3f6a: 0x00c0, 0x3f6b: 0x00c0, 0x3f6c: 0x00c0, 0x3f6d: 0x00c0, 0x3f6e: 0x00c0, 0x3f6f: 0x00c0, - 0x3f70: 0x00c3, 0x3f71: 0x00c3, 0x3f72: 0x00c3, 0x3f73: 0x00c3, 0x3f74: 0x00c3, 0x3f75: 0x00c3, - 0x3f76: 0x00c3, 0x3f78: 0x00c3, 0x3f79: 0x00c3, 0x3f7a: 0x00c3, 0x3f7b: 0x00c3, - 0x3f7c: 0x00c3, 0x3f7d: 0x00c3, 0x3f7e: 0x00c0, 0x3f7f: 0x00c6, - // Block 0xfe, offset 0x3f80 - 0x3f80: 0x00c0, 0x3f81: 0x0080, 0x3f82: 0x0080, 0x3f83: 0x0080, 0x3f84: 0x0080, 0x3f85: 0x0080, - 0x3f90: 0x00c0, 0x3f91: 0x00c0, - 0x3f92: 0x00c0, 0x3f93: 0x00c0, 0x3f94: 0x00c0, 0x3f95: 0x00c0, 0x3f96: 0x00c0, 0x3f97: 0x00c0, - 0x3f98: 0x00c0, 0x3f99: 0x00c0, 0x3f9a: 0x0080, 0x3f9b: 0x0080, 0x3f9c: 0x0080, 0x3f9d: 0x0080, - 0x3f9e: 0x0080, 0x3f9f: 0x0080, 0x3fa0: 0x0080, 0x3fa1: 0x0080, 0x3fa2: 0x0080, 0x3fa3: 0x0080, - 0x3fa4: 0x0080, 0x3fa5: 0x0080, 0x3fa6: 0x0080, 0x3fa7: 0x0080, 0x3fa8: 0x0080, 0x3fa9: 0x0080, - 0x3faa: 0x0080, 0x3fab: 0x0080, 0x3fac: 0x0080, - 0x3fb0: 0x0080, 0x3fb1: 0x0080, 0x3fb2: 0x00c0, 0x3fb3: 0x00c0, 0x3fb4: 0x00c0, 0x3fb5: 0x00c0, - 0x3fb6: 0x00c0, 0x3fb7: 0x00c0, 0x3fb8: 0x00c0, 0x3fb9: 0x00c0, 0x3fba: 0x00c0, 0x3fbb: 0x00c0, - 0x3fbc: 0x00c0, 0x3fbd: 0x00c0, 0x3fbe: 0x00c0, 0x3fbf: 0x00c0, - // Block 0xff, offset 0x3fc0 - 0x3fc0: 0x00c0, 0x3fc1: 0x00c0, 0x3fc2: 0x00c0, 0x3fc3: 0x00c0, 0x3fc4: 0x00c0, 0x3fc5: 0x00c0, - 0x3fc6: 0x00c0, 0x3fc7: 0x00c0, 0x3fc8: 0x00c0, 0x3fc9: 0x00c0, 0x3fca: 0x00c0, 0x3fcb: 0x00c0, - 0x3fcc: 0x00c0, 0x3fcd: 0x00c0, 0x3fce: 0x00c0, 0x3fcf: 0x00c0, - 0x3fd2: 0x00c3, 0x3fd3: 0x00c3, 0x3fd4: 0x00c3, 0x3fd5: 0x00c3, 0x3fd6: 0x00c3, 0x3fd7: 0x00c3, - 0x3fd8: 0x00c3, 0x3fd9: 0x00c3, 0x3fda: 0x00c3, 0x3fdb: 0x00c3, 0x3fdc: 0x00c3, 0x3fdd: 0x00c3, - 0x3fde: 0x00c3, 0x3fdf: 0x00c3, 0x3fe0: 0x00c3, 0x3fe1: 0x00c3, 0x3fe2: 0x00c3, 0x3fe3: 0x00c3, - 0x3fe4: 0x00c3, 0x3fe5: 0x00c3, 0x3fe6: 0x00c3, 0x3fe7: 0x00c3, 0x3fe9: 0x00c0, - 0x3fea: 0x00c3, 0x3feb: 0x00c3, 0x3fec: 0x00c3, 0x3fed: 0x00c3, 0x3fee: 0x00c3, 0x3fef: 0x00c3, - 0x3ff0: 0x00c3, 0x3ff1: 0x00c0, 0x3ff2: 0x00c3, 0x3ff3: 0x00c3, 0x3ff4: 0x00c0, 0x3ff5: 0x00c3, - 0x3ff6: 0x00c3, - // Block 0x100, offset 0x4000 - 0x4000: 0x00c0, 0x4001: 0x00c0, 0x4002: 0x00c0, 0x4003: 0x00c0, 0x4004: 0x00c0, 0x4005: 0x00c0, - 0x4006: 0x00c0, 0x4007: 0x00c0, 0x4008: 0x00c0, 0x4009: 0x00c0, 0x400a: 0x00c0, 0x400b: 0x00c0, - 0x400c: 0x00c0, 0x400d: 0x00c0, 0x400e: 0x00c0, 0x400f: 0x00c0, 0x4010: 0x00c0, 0x4011: 0x00c0, - 0x4012: 0x00c0, 0x4013: 0x00c0, 0x4014: 0x00c0, 0x4015: 0x00c0, 0x4016: 0x00c0, 0x4017: 0x00c0, - 0x4018: 0x00c0, 0x4019: 0x00c0, - // Block 0x101, offset 0x4040 - 0x4040: 0x0080, 0x4041: 0x0080, 0x4042: 0x0080, 0x4043: 0x0080, 0x4044: 0x0080, 0x4045: 0x0080, - 0x4046: 0x0080, 0x4047: 0x0080, 0x4048: 0x0080, 0x4049: 0x0080, 0x404a: 0x0080, 0x404b: 0x0080, - 0x404c: 0x0080, 0x404d: 0x0080, 0x404e: 0x0080, 0x404f: 0x0080, 0x4050: 0x0080, 0x4051: 0x0080, - 0x4052: 0x0080, 0x4053: 0x0080, 0x4054: 0x0080, 0x4055: 0x0080, 0x4056: 0x0080, 0x4057: 0x0080, - 0x4058: 0x0080, 0x4059: 0x0080, 0x405a: 0x0080, 0x405b: 0x0080, 0x405c: 0x0080, 0x405d: 0x0080, - 0x405e: 0x0080, 0x405f: 0x0080, 0x4060: 0x0080, 0x4061: 0x0080, 0x4062: 0x0080, 0x4063: 0x0080, - 0x4064: 0x0080, 0x4065: 0x0080, 0x4066: 0x0080, 0x4067: 0x0080, 0x4068: 0x0080, 0x4069: 0x0080, - 0x406a: 0x0080, 0x406b: 0x0080, 0x406c: 0x0080, 0x406d: 0x0080, 0x406e: 0x0080, - 0x4070: 0x0080, 0x4071: 0x0080, 0x4072: 0x0080, 0x4073: 0x0080, 0x4074: 0x0080, - // Block 0x102, offset 0x4080 - 0x4080: 0x00c0, 0x4081: 0x00c0, 0x4082: 0x00c0, 0x4083: 0x00c0, - // Block 0x103, offset 0x40c0 - 0x40c0: 0x00c0, 0x40c1: 0x00c0, 0x40c2: 0x00c0, 0x40c3: 0x00c0, 0x40c4: 0x00c0, 0x40c5: 0x00c0, - 0x40c6: 0x00c0, 0x40c7: 0x00c0, 0x40c8: 0x00c0, 0x40c9: 0x00c0, 0x40ca: 0x00c0, 0x40cb: 0x00c0, - 0x40cc: 0x00c0, 0x40cd: 0x00c0, 0x40ce: 0x00c0, 0x40cf: 0x00c0, 0x40d0: 0x00c0, 0x40d1: 0x00c0, - 0x40d2: 0x00c0, 0x40d3: 0x00c0, 0x40d4: 0x00c0, 0x40d5: 0x00c0, 0x40d6: 0x00c0, 0x40d7: 0x00c0, - 0x40d8: 0x00c0, 0x40d9: 0x00c0, 0x40da: 0x00c0, 0x40db: 0x00c0, 0x40dc: 0x00c0, 0x40dd: 0x00c0, - 0x40de: 0x00c0, 0x40df: 0x00c0, 0x40e0: 0x00c0, 0x40e1: 0x00c0, 0x40e2: 0x00c0, 0x40e3: 0x00c0, - 0x40e4: 0x00c0, 0x40e5: 0x00c0, 0x40e6: 0x00c0, 0x40e7: 0x00c0, 0x40e8: 0x00c0, 0x40e9: 0x00c0, - 0x40ea: 0x00c0, 0x40eb: 0x00c0, 0x40ec: 0x00c0, 0x40ed: 0x00c0, 0x40ee: 0x00c0, - // Block 0x104, offset 0x4100 - 0x4100: 0x00c0, 0x4101: 0x00c0, 0x4102: 0x00c0, 0x4103: 0x00c0, 0x4104: 0x00c0, 0x4105: 0x00c0, - 0x4106: 0x00c0, - // Block 0x105, offset 0x4140 - 0x4140: 0x00c0, 0x4141: 0x00c0, 0x4142: 0x00c0, 0x4143: 0x00c0, 0x4144: 0x00c0, 0x4145: 0x00c0, - 0x4146: 0x00c0, 0x4147: 0x00c0, 0x4148: 0x00c0, 0x4149: 0x00c0, 0x414a: 0x00c0, 0x414b: 0x00c0, - 0x414c: 0x00c0, 0x414d: 0x00c0, 0x414e: 0x00c0, 0x414f: 0x00c0, 0x4150: 0x00c0, 0x4151: 0x00c0, - 0x4152: 0x00c0, 0x4153: 0x00c0, 0x4154: 0x00c0, 0x4155: 0x00c0, 0x4156: 0x00c0, 0x4157: 0x00c0, - 0x4158: 0x00c0, 0x4159: 0x00c0, 0x415a: 0x00c0, 0x415b: 0x00c0, 0x415c: 0x00c0, 0x415d: 0x00c0, - 0x415e: 0x00c0, 0x4160: 0x00c0, 0x4161: 0x00c0, 0x4162: 0x00c0, 0x4163: 0x00c0, - 0x4164: 0x00c0, 0x4165: 0x00c0, 0x4166: 0x00c0, 0x4167: 0x00c0, 0x4168: 0x00c0, 0x4169: 0x00c0, - 0x416e: 0x0080, 0x416f: 0x0080, - // Block 0x106, offset 0x4180 - 0x4190: 0x00c0, 0x4191: 0x00c0, - 0x4192: 0x00c0, 0x4193: 0x00c0, 0x4194: 0x00c0, 0x4195: 0x00c0, 0x4196: 0x00c0, 0x4197: 0x00c0, - 0x4198: 0x00c0, 0x4199: 0x00c0, 0x419a: 0x00c0, 0x419b: 0x00c0, 0x419c: 0x00c0, 0x419d: 0x00c0, - 0x419e: 0x00c0, 0x419f: 0x00c0, 0x41a0: 0x00c0, 0x41a1: 0x00c0, 0x41a2: 0x00c0, 0x41a3: 0x00c0, - 0x41a4: 0x00c0, 0x41a5: 0x00c0, 0x41a6: 0x00c0, 0x41a7: 0x00c0, 0x41a8: 0x00c0, 0x41a9: 0x00c0, - 0x41aa: 0x00c0, 0x41ab: 0x00c0, 0x41ac: 0x00c0, 0x41ad: 0x00c0, - 0x41b0: 0x00c3, 0x41b1: 0x00c3, 0x41b2: 0x00c3, 0x41b3: 0x00c3, 0x41b4: 0x00c3, 0x41b5: 0x0080, - // Block 0x107, offset 0x41c0 - 0x41c0: 0x00c0, 0x41c1: 0x00c0, 0x41c2: 0x00c0, 0x41c3: 0x00c0, 0x41c4: 0x00c0, 0x41c5: 0x00c0, - 0x41c6: 0x00c0, 0x41c7: 0x00c0, 0x41c8: 0x00c0, 0x41c9: 0x00c0, 0x41ca: 0x00c0, 0x41cb: 0x00c0, - 0x41cc: 0x00c0, 0x41cd: 0x00c0, 0x41ce: 0x00c0, 0x41cf: 0x00c0, 0x41d0: 0x00c0, 0x41d1: 0x00c0, - 0x41d2: 0x00c0, 0x41d3: 0x00c0, 0x41d4: 0x00c0, 0x41d5: 0x00c0, 0x41d6: 0x00c0, 0x41d7: 0x00c0, - 0x41d8: 0x00c0, 0x41d9: 0x00c0, 0x41da: 0x00c0, 0x41db: 0x00c0, 0x41dc: 0x00c0, 0x41dd: 0x00c0, - 0x41de: 0x00c0, 0x41df: 0x00c0, 0x41e0: 0x00c0, 0x41e1: 0x00c0, 0x41e2: 0x00c0, 0x41e3: 0x00c0, - 0x41e4: 0x00c0, 0x41e5: 0x00c0, 0x41e6: 0x00c0, 0x41e7: 0x00c0, 0x41e8: 0x00c0, 0x41e9: 0x00c0, - 0x41ea: 0x00c0, 0x41eb: 0x00c0, 0x41ec: 0x00c0, 0x41ed: 0x00c0, 0x41ee: 0x00c0, 0x41ef: 0x00c0, - 0x41f0: 0x00c3, 0x41f1: 0x00c3, 0x41f2: 0x00c3, 0x41f3: 0x00c3, 0x41f4: 0x00c3, 0x41f5: 0x00c3, - 0x41f6: 0x00c3, 0x41f7: 0x0080, 0x41f8: 0x0080, 0x41f9: 0x0080, 0x41fa: 0x0080, 0x41fb: 0x0080, - 0x41fc: 0x0080, 0x41fd: 0x0080, 0x41fe: 0x0080, 0x41ff: 0x0080, - // Block 0x108, offset 0x4200 - 0x4200: 0x00c0, 0x4201: 0x00c0, 0x4202: 0x00c0, 0x4203: 0x00c0, 0x4204: 0x0080, 0x4205: 0x0080, - 0x4210: 0x00c0, 0x4211: 0x00c0, - 0x4212: 0x00c0, 0x4213: 0x00c0, 0x4214: 0x00c0, 0x4215: 0x00c0, 0x4216: 0x00c0, 0x4217: 0x00c0, - 0x4218: 0x00c0, 0x4219: 0x00c0, 0x421b: 0x0080, 0x421c: 0x0080, 0x421d: 0x0080, - 0x421e: 0x0080, 0x421f: 0x0080, 0x4220: 0x0080, 0x4221: 0x0080, 0x4223: 0x00c0, - 0x4224: 0x00c0, 0x4225: 0x00c0, 0x4226: 0x00c0, 0x4227: 0x00c0, 0x4228: 0x00c0, 0x4229: 0x00c0, - 0x422a: 0x00c0, 0x422b: 0x00c0, 0x422c: 0x00c0, 0x422d: 0x00c0, 0x422e: 0x00c0, 0x422f: 0x00c0, - 0x4230: 0x00c0, 0x4231: 0x00c0, 0x4232: 0x00c0, 0x4233: 0x00c0, 0x4234: 0x00c0, 0x4235: 0x00c0, - 0x4236: 0x00c0, 0x4237: 0x00c0, - 0x423d: 0x00c0, 0x423e: 0x00c0, 0x423f: 0x00c0, - // Block 0x109, offset 0x4240 - 0x4240: 0x00c0, 0x4241: 0x00c0, 0x4242: 0x00c0, 0x4243: 0x00c0, 0x4244: 0x00c0, 0x4245: 0x00c0, - 0x4246: 0x00c0, 0x4247: 0x00c0, 0x4248: 0x00c0, 0x4249: 0x00c0, 0x424a: 0x00c0, 0x424b: 0x00c0, - 0x424c: 0x00c0, 0x424d: 0x00c0, 0x424e: 0x00c0, 0x424f: 0x00c0, - // Block 0x10a, offset 0x4280 - 0x4280: 0x00c0, 0x4281: 0x00c0, 0x4282: 0x00c0, 0x4283: 0x00c0, 0x4284: 0x00c0, - 0x4290: 0x00c0, 0x4291: 0x00c0, - 0x4292: 0x00c0, 0x4293: 0x00c0, 0x4294: 0x00c0, 0x4295: 0x00c0, 0x4296: 0x00c0, 0x4297: 0x00c0, - 0x4298: 0x00c0, 0x4299: 0x00c0, 0x429a: 0x00c0, 0x429b: 0x00c0, 0x429c: 0x00c0, 0x429d: 0x00c0, - 0x429e: 0x00c0, 0x429f: 0x00c0, 0x42a0: 0x00c0, 0x42a1: 0x00c0, 0x42a2: 0x00c0, 0x42a3: 0x00c0, - 0x42a4: 0x00c0, 0x42a5: 0x00c0, 0x42a6: 0x00c0, 0x42a7: 0x00c0, 0x42a8: 0x00c0, 0x42a9: 0x00c0, - 0x42aa: 0x00c0, 0x42ab: 0x00c0, 0x42ac: 0x00c0, 0x42ad: 0x00c0, 0x42ae: 0x00c0, 0x42af: 0x00c0, - 0x42b0: 0x00c0, 0x42b1: 0x00c0, 0x42b2: 0x00c0, 0x42b3: 0x00c0, 0x42b4: 0x00c0, 0x42b5: 0x00c0, - 0x42b6: 0x00c0, 0x42b7: 0x00c0, 0x42b8: 0x00c0, 0x42b9: 0x00c0, 0x42ba: 0x00c0, 0x42bb: 0x00c0, - 0x42bc: 0x00c0, 0x42bd: 0x00c0, 0x42be: 0x00c0, - // Block 0x10b, offset 0x42c0 - 0x42cf: 0x00c3, 0x42d0: 0x00c3, 0x42d1: 0x00c3, - 0x42d2: 0x00c3, 0x42d3: 0x00c0, 0x42d4: 0x00c0, 0x42d5: 0x00c0, 0x42d6: 0x00c0, 0x42d7: 0x00c0, - 0x42d8: 0x00c0, 0x42d9: 0x00c0, 0x42da: 0x00c0, 0x42db: 0x00c0, 0x42dc: 0x00c0, 0x42dd: 0x00c0, - 0x42de: 0x00c0, 0x42df: 0x00c0, - // Block 0x10c, offset 0x4300 - 0x4320: 0x00c0, - // Block 0x10d, offset 0x4340 - 0x4340: 0x00c0, 0x4341: 0x00c0, 0x4342: 0x00c0, 0x4343: 0x00c0, 0x4344: 0x00c0, 0x4345: 0x00c0, - 0x4346: 0x00c0, 0x4347: 0x00c0, 0x4348: 0x00c0, 0x4349: 0x00c0, 0x434a: 0x00c0, 0x434b: 0x00c0, - 0x434c: 0x00c0, 0x434d: 0x00c0, 0x434e: 0x00c0, 0x434f: 0x00c0, 0x4350: 0x00c0, 0x4351: 0x00c0, - 0x4352: 0x00c0, 0x4353: 0x00c0, 0x4354: 0x00c0, 0x4355: 0x00c0, 0x4356: 0x00c0, 0x4357: 0x00c0, - 0x4358: 0x00c0, 0x4359: 0x00c0, 0x435a: 0x00c0, 0x435b: 0x00c0, 0x435c: 0x00c0, 0x435d: 0x00c0, - 0x435e: 0x00c0, 0x435f: 0x00c0, 0x4360: 0x00c0, 0x4361: 0x00c0, 0x4362: 0x00c0, 0x4363: 0x00c0, - 0x4364: 0x00c0, 0x4365: 0x00c0, 0x4366: 0x00c0, 0x4367: 0x00c0, 0x4368: 0x00c0, 0x4369: 0x00c0, - 0x436a: 0x00c0, 0x436b: 0x00c0, 0x436c: 0x00c0, - // Block 0x10e, offset 0x4380 - 0x4380: 0x00cc, 0x4381: 0x00cc, - // Block 0x10f, offset 0x43c0 - 0x43c0: 0x00c0, 0x43c1: 0x00c0, 0x43c2: 0x00c0, 0x43c3: 0x00c0, 0x43c4: 0x00c0, 0x43c5: 0x00c0, - 0x43c6: 0x00c0, 0x43c7: 0x00c0, 0x43c8: 0x00c0, 0x43c9: 0x00c0, 0x43ca: 0x00c0, 0x43cb: 0x00c0, - 0x43cc: 0x00c0, 0x43cd: 0x00c0, 0x43ce: 0x00c0, 0x43cf: 0x00c0, 0x43d0: 0x00c0, 0x43d1: 0x00c0, - 0x43d2: 0x00c0, 0x43d3: 0x00c0, 0x43d4: 0x00c0, 0x43d5: 0x00c0, 0x43d6: 0x00c0, 0x43d7: 0x00c0, - 0x43d8: 0x00c0, 0x43d9: 0x00c0, 0x43da: 0x00c0, 0x43db: 0x00c0, 0x43dc: 0x00c0, 0x43dd: 0x00c0, - 0x43de: 0x00c0, 0x43df: 0x00c0, 0x43e0: 0x00c0, 0x43e1: 0x00c0, 0x43e2: 0x00c0, 0x43e3: 0x00c0, - 0x43e4: 0x00c0, 0x43e5: 0x00c0, 0x43e6: 0x00c0, 0x43e7: 0x00c0, 0x43e8: 0x00c0, 0x43e9: 0x00c0, - 0x43ea: 0x00c0, - 0x43f0: 0x00c0, 0x43f1: 0x00c0, 0x43f2: 0x00c0, 0x43f3: 0x00c0, 0x43f4: 0x00c0, 0x43f5: 0x00c0, - 0x43f6: 0x00c0, 0x43f7: 0x00c0, 0x43f8: 0x00c0, 0x43f9: 0x00c0, 0x43fa: 0x00c0, 0x43fb: 0x00c0, - 0x43fc: 0x00c0, - // Block 0x110, offset 0x4400 - 0x4400: 0x00c0, 0x4401: 0x00c0, 0x4402: 0x00c0, 0x4403: 0x00c0, 0x4404: 0x00c0, 0x4405: 0x00c0, - 0x4406: 0x00c0, 0x4407: 0x00c0, 0x4408: 0x00c0, - 0x4410: 0x00c0, 0x4411: 0x00c0, - 0x4412: 0x00c0, 0x4413: 0x00c0, 0x4414: 0x00c0, 0x4415: 0x00c0, 0x4416: 0x00c0, 0x4417: 0x00c0, - 0x4418: 0x00c0, 0x4419: 0x00c0, 0x441c: 0x0080, 0x441d: 0x00c3, - 0x441e: 0x00c3, 0x441f: 0x0080, 0x4420: 0x0040, 0x4421: 0x0040, 0x4422: 0x0040, 0x4423: 0x0040, - // Block 0x111, offset 0x4440 - 0x4440: 0x0080, 0x4441: 0x0080, 0x4442: 0x0080, 0x4443: 0x0080, 0x4444: 0x0080, 0x4445: 0x0080, - 0x4446: 0x0080, 0x4447: 0x0080, 0x4448: 0x0080, 0x4449: 0x0080, 0x444a: 0x0080, 0x444b: 0x0080, - 0x444c: 0x0080, 0x444d: 0x0080, 0x444e: 0x0080, 0x444f: 0x0080, 0x4450: 0x0080, 0x4451: 0x0080, - 0x4452: 0x0080, 0x4453: 0x0080, 0x4454: 0x0080, 0x4455: 0x0080, 0x4456: 0x0080, 0x4457: 0x0080, - 0x4458: 0x0080, 0x4459: 0x0080, 0x445a: 0x0080, 0x445b: 0x0080, 0x445c: 0x0080, 0x445d: 0x0080, - 0x445e: 0x0080, 0x445f: 0x0080, 0x4460: 0x0080, 0x4461: 0x0080, 0x4462: 0x0080, 0x4463: 0x0080, - 0x4464: 0x0080, 0x4465: 0x0080, 0x4466: 0x0080, 0x4467: 0x0080, 0x4468: 0x0080, 0x4469: 0x0080, - 0x446a: 0x0080, 0x446b: 0x0080, 0x446c: 0x0080, 0x446d: 0x0080, 0x446e: 0x0080, 0x446f: 0x0080, - 0x4470: 0x0080, 0x4471: 0x0080, 0x4472: 0x0080, 0x4473: 0x0080, 0x4474: 0x0080, 0x4475: 0x0080, - // Block 0x112, offset 0x4480 - 0x4480: 0x0080, 0x4481: 0x0080, 0x4482: 0x0080, 0x4483: 0x0080, 0x4484: 0x0080, 0x4485: 0x0080, - 0x4486: 0x0080, 0x4487: 0x0080, 0x4488: 0x0080, 0x4489: 0x0080, 0x448a: 0x0080, 0x448b: 0x0080, - 0x448c: 0x0080, 0x448d: 0x0080, 0x448e: 0x0080, 0x448f: 0x0080, 0x4490: 0x0080, 0x4491: 0x0080, - 0x4492: 0x0080, 0x4493: 0x0080, 0x4494: 0x0080, 0x4495: 0x0080, 0x4496: 0x0080, 0x4497: 0x0080, - 0x4498: 0x0080, 0x4499: 0x0080, 0x449a: 0x0080, 0x449b: 0x0080, 0x449c: 0x0080, 0x449d: 0x0080, - 0x449e: 0x0080, 0x449f: 0x0080, 0x44a0: 0x0080, 0x44a1: 0x0080, 0x44a2: 0x0080, 0x44a3: 0x0080, - 0x44a4: 0x0080, 0x44a5: 0x0080, 0x44a6: 0x0080, 0x44a9: 0x0080, - 0x44aa: 0x0080, 0x44ab: 0x0080, 0x44ac: 0x0080, 0x44ad: 0x0080, 0x44ae: 0x0080, 0x44af: 0x0080, - 0x44b0: 0x0080, 0x44b1: 0x0080, 0x44b2: 0x0080, 0x44b3: 0x0080, 0x44b4: 0x0080, 0x44b5: 0x0080, - 0x44b6: 0x0080, 0x44b7: 0x0080, 0x44b8: 0x0080, 0x44b9: 0x0080, 0x44ba: 0x0080, 0x44bb: 0x0080, - 0x44bc: 0x0080, 0x44bd: 0x0080, 0x44be: 0x0080, 0x44bf: 0x0080, - // Block 0x113, offset 0x44c0 - 0x44c0: 0x0080, 0x44c1: 0x0080, 0x44c2: 0x0080, 0x44c3: 0x0080, 0x44c4: 0x0080, 0x44c5: 0x0080, - 0x44c6: 0x0080, 0x44c7: 0x0080, 0x44c8: 0x0080, 0x44c9: 0x0080, 0x44ca: 0x0080, 0x44cb: 0x0080, - 0x44cc: 0x0080, 0x44cd: 0x0080, 0x44ce: 0x0080, 0x44cf: 0x0080, 0x44d0: 0x0080, 0x44d1: 0x0080, - 0x44d2: 0x0080, 0x44d3: 0x0080, 0x44d4: 0x0080, 0x44d5: 0x0080, 0x44d6: 0x0080, 0x44d7: 0x0080, - 0x44d8: 0x0080, 0x44d9: 0x0080, 0x44da: 0x0080, 0x44db: 0x0080, 0x44dc: 0x0080, 0x44dd: 0x0080, - 0x44de: 0x0080, 0x44df: 0x0080, 0x44e0: 0x0080, 0x44e1: 0x0080, 0x44e2: 0x0080, 0x44e3: 0x0080, - 0x44e4: 0x0080, 0x44e5: 0x00c0, 0x44e6: 0x00c0, 0x44e7: 0x00c3, 0x44e8: 0x00c3, 0x44e9: 0x00c3, - 0x44ea: 0x0080, 0x44eb: 0x0080, 0x44ec: 0x0080, 0x44ed: 0x00c0, 0x44ee: 0x00c0, 0x44ef: 0x00c0, - 0x44f0: 0x00c0, 0x44f1: 0x00c0, 0x44f2: 0x00c0, 0x44f3: 0x0040, 0x44f4: 0x0040, 0x44f5: 0x0040, - 0x44f6: 0x0040, 0x44f7: 0x0040, 0x44f8: 0x0040, 0x44f9: 0x0040, 0x44fa: 0x0040, 0x44fb: 0x00c3, - 0x44fc: 0x00c3, 0x44fd: 0x00c3, 0x44fe: 0x00c3, 0x44ff: 0x00c3, - // Block 0x114, offset 0x4500 - 0x4500: 0x00c3, 0x4501: 0x00c3, 0x4502: 0x00c3, 0x4503: 0x0080, 0x4504: 0x0080, 0x4505: 0x00c3, - 0x4506: 0x00c3, 0x4507: 0x00c3, 0x4508: 0x00c3, 0x4509: 0x00c3, 0x450a: 0x00c3, 0x450b: 0x00c3, - 0x450c: 0x0080, 0x450d: 0x0080, 0x450e: 0x0080, 0x450f: 0x0080, 0x4510: 0x0080, 0x4511: 0x0080, - 0x4512: 0x0080, 0x4513: 0x0080, 0x4514: 0x0080, 0x4515: 0x0080, 0x4516: 0x0080, 0x4517: 0x0080, - 0x4518: 0x0080, 0x4519: 0x0080, 0x451a: 0x0080, 0x451b: 0x0080, 0x451c: 0x0080, 0x451d: 0x0080, - 0x451e: 0x0080, 0x451f: 0x0080, 0x4520: 0x0080, 0x4521: 0x0080, 0x4522: 0x0080, 0x4523: 0x0080, - 0x4524: 0x0080, 0x4525: 0x0080, 0x4526: 0x0080, 0x4527: 0x0080, 0x4528: 0x0080, 0x4529: 0x0080, - 0x452a: 0x00c3, 0x452b: 0x00c3, 0x452c: 0x00c3, 0x452d: 0x00c3, 0x452e: 0x0080, 0x452f: 0x0080, - 0x4530: 0x0080, 0x4531: 0x0080, 0x4532: 0x0080, 0x4533: 0x0080, 0x4534: 0x0080, 0x4535: 0x0080, - 0x4536: 0x0080, 0x4537: 0x0080, 0x4538: 0x0080, 0x4539: 0x0080, 0x453a: 0x0080, 0x453b: 0x0080, - 0x453c: 0x0080, 0x453d: 0x0080, 0x453e: 0x0080, 0x453f: 0x0080, - // Block 0x115, offset 0x4540 - 0x4540: 0x0080, 0x4541: 0x0080, 0x4542: 0x0080, 0x4543: 0x0080, 0x4544: 0x0080, 0x4545: 0x0080, - 0x4546: 0x0080, 0x4547: 0x0080, 0x4548: 0x0080, 0x4549: 0x0080, 0x454a: 0x0080, 0x454b: 0x0080, - 0x454c: 0x0080, 0x454d: 0x0080, 0x454e: 0x0080, 0x454f: 0x0080, 0x4550: 0x0080, 0x4551: 0x0080, - 0x4552: 0x0080, 0x4553: 0x0080, 0x4554: 0x0080, 0x4555: 0x0080, 0x4556: 0x0080, 0x4557: 0x0080, - 0x4558: 0x0080, 0x4559: 0x0080, 0x455a: 0x0080, 0x455b: 0x0080, 0x455c: 0x0080, 0x455d: 0x0080, - 0x455e: 0x0080, 0x455f: 0x0080, 0x4560: 0x0080, 0x4561: 0x0080, 0x4562: 0x0080, 0x4563: 0x0080, - 0x4564: 0x0080, 0x4565: 0x0080, 0x4566: 0x0080, 0x4567: 0x0080, 0x4568: 0x0080, - // Block 0x116, offset 0x4580 - 0x4580: 0x0088, 0x4581: 0x0088, 0x4582: 0x00c9, 0x4583: 0x00c9, 0x4584: 0x00c9, 0x4585: 0x0088, - // Block 0x117, offset 0x45c0 - 0x45c0: 0x0080, 0x45c1: 0x0080, 0x45c2: 0x0080, 0x45c3: 0x0080, 0x45c4: 0x0080, 0x45c5: 0x0080, - 0x45c6: 0x0080, 0x45c7: 0x0080, 0x45c8: 0x0080, 0x45c9: 0x0080, 0x45ca: 0x0080, 0x45cb: 0x0080, - 0x45cc: 0x0080, 0x45cd: 0x0080, 0x45ce: 0x0080, 0x45cf: 0x0080, 0x45d0: 0x0080, 0x45d1: 0x0080, - 0x45d2: 0x0080, 0x45d3: 0x0080, 0x45d4: 0x0080, 0x45d5: 0x0080, 0x45d6: 0x0080, - 0x45e0: 0x0080, 0x45e1: 0x0080, 0x45e2: 0x0080, 0x45e3: 0x0080, - 0x45e4: 0x0080, 0x45e5: 0x0080, 0x45e6: 0x0080, 0x45e7: 0x0080, 0x45e8: 0x0080, 0x45e9: 0x0080, - 0x45ea: 0x0080, 0x45eb: 0x0080, 0x45ec: 0x0080, 0x45ed: 0x0080, 0x45ee: 0x0080, 0x45ef: 0x0080, - 0x45f0: 0x0080, 0x45f1: 0x0080, - // Block 0x118, offset 0x4600 - 0x4600: 0x0080, 0x4601: 0x0080, 0x4602: 0x0080, 0x4603: 0x0080, 0x4604: 0x0080, 0x4605: 0x0080, - 0x4606: 0x0080, 0x4607: 0x0080, 0x4608: 0x0080, 0x4609: 0x0080, 0x460a: 0x0080, 0x460b: 0x0080, - 0x460c: 0x0080, 0x460d: 0x0080, 0x460e: 0x0080, 0x460f: 0x0080, 0x4610: 0x0080, 0x4611: 0x0080, - 0x4612: 0x0080, 0x4613: 0x0080, 0x4614: 0x0080, 0x4616: 0x0080, 0x4617: 0x0080, - 0x4618: 0x0080, 0x4619: 0x0080, 0x461a: 0x0080, 0x461b: 0x0080, 0x461c: 0x0080, 0x461d: 0x0080, - 0x461e: 0x0080, 0x461f: 0x0080, 0x4620: 0x0080, 0x4621: 0x0080, 0x4622: 0x0080, 0x4623: 0x0080, - 0x4624: 0x0080, 0x4625: 0x0080, 0x4626: 0x0080, 0x4627: 0x0080, 0x4628: 0x0080, 0x4629: 0x0080, - 0x462a: 0x0080, 0x462b: 0x0080, 0x462c: 0x0080, 0x462d: 0x0080, 0x462e: 0x0080, 0x462f: 0x0080, - 0x4630: 0x0080, 0x4631: 0x0080, 0x4632: 0x0080, 0x4633: 0x0080, 0x4634: 0x0080, 0x4635: 0x0080, - 0x4636: 0x0080, 0x4637: 0x0080, 0x4638: 0x0080, 0x4639: 0x0080, 0x463a: 0x0080, 0x463b: 0x0080, - 0x463c: 0x0080, 0x463d: 0x0080, 0x463e: 0x0080, 0x463f: 0x0080, - // Block 0x119, offset 0x4640 - 0x4640: 0x0080, 0x4641: 0x0080, 0x4642: 0x0080, 0x4643: 0x0080, 0x4644: 0x0080, 0x4645: 0x0080, - 0x4646: 0x0080, 0x4647: 0x0080, 0x4648: 0x0080, 0x4649: 0x0080, 0x464a: 0x0080, 0x464b: 0x0080, - 0x464c: 0x0080, 0x464d: 0x0080, 0x464e: 0x0080, 0x464f: 0x0080, 0x4650: 0x0080, 0x4651: 0x0080, - 0x4652: 0x0080, 0x4653: 0x0080, 0x4654: 0x0080, 0x4655: 0x0080, 0x4656: 0x0080, 0x4657: 0x0080, - 0x4658: 0x0080, 0x4659: 0x0080, 0x465a: 0x0080, 0x465b: 0x0080, 0x465c: 0x0080, - 0x465e: 0x0080, 0x465f: 0x0080, 0x4662: 0x0080, - 0x4665: 0x0080, 0x4666: 0x0080, 0x4669: 0x0080, - 0x466a: 0x0080, 0x466b: 0x0080, 0x466c: 0x0080, 0x466e: 0x0080, 0x466f: 0x0080, - 0x4670: 0x0080, 0x4671: 0x0080, 0x4672: 0x0080, 0x4673: 0x0080, 0x4674: 0x0080, 0x4675: 0x0080, - 0x4676: 0x0080, 0x4677: 0x0080, 0x4678: 0x0080, 0x4679: 0x0080, 0x467b: 0x0080, - 0x467d: 0x0080, 0x467e: 0x0080, 0x467f: 0x0080, - // Block 0x11a, offset 0x4680 - 0x4680: 0x0080, 0x4681: 0x0080, 0x4682: 0x0080, 0x4683: 0x0080, 0x4685: 0x0080, - 0x4686: 0x0080, 0x4687: 0x0080, 0x4688: 0x0080, 0x4689: 0x0080, 0x468a: 0x0080, 0x468b: 0x0080, - 0x468c: 0x0080, 0x468d: 0x0080, 0x468e: 0x0080, 0x468f: 0x0080, 0x4690: 0x0080, 0x4691: 0x0080, - 0x4692: 0x0080, 0x4693: 0x0080, 0x4694: 0x0080, 0x4695: 0x0080, 0x4696: 0x0080, 0x4697: 0x0080, - 0x4698: 0x0080, 0x4699: 0x0080, 0x469a: 0x0080, 0x469b: 0x0080, 0x469c: 0x0080, 0x469d: 0x0080, - 0x469e: 0x0080, 0x469f: 0x0080, 0x46a0: 0x0080, 0x46a1: 0x0080, 0x46a2: 0x0080, 0x46a3: 0x0080, - 0x46a4: 0x0080, 0x46a5: 0x0080, 0x46a6: 0x0080, 0x46a7: 0x0080, 0x46a8: 0x0080, 0x46a9: 0x0080, - 0x46aa: 0x0080, 0x46ab: 0x0080, 0x46ac: 0x0080, 0x46ad: 0x0080, 0x46ae: 0x0080, 0x46af: 0x0080, - 0x46b0: 0x0080, 0x46b1: 0x0080, 0x46b2: 0x0080, 0x46b3: 0x0080, 0x46b4: 0x0080, 0x46b5: 0x0080, - 0x46b6: 0x0080, 0x46b7: 0x0080, 0x46b8: 0x0080, 0x46b9: 0x0080, 0x46ba: 0x0080, 0x46bb: 0x0080, - 0x46bc: 0x0080, 0x46bd: 0x0080, 0x46be: 0x0080, 0x46bf: 0x0080, - // Block 0x11b, offset 0x46c0 - 0x46c0: 0x0080, 0x46c1: 0x0080, 0x46c2: 0x0080, 0x46c3: 0x0080, 0x46c4: 0x0080, 0x46c5: 0x0080, - 0x46c7: 0x0080, 0x46c8: 0x0080, 0x46c9: 0x0080, 0x46ca: 0x0080, - 0x46cd: 0x0080, 0x46ce: 0x0080, 0x46cf: 0x0080, 0x46d0: 0x0080, 0x46d1: 0x0080, - 0x46d2: 0x0080, 0x46d3: 0x0080, 0x46d4: 0x0080, 0x46d6: 0x0080, 0x46d7: 0x0080, - 0x46d8: 0x0080, 0x46d9: 0x0080, 0x46da: 0x0080, 0x46db: 0x0080, 0x46dc: 0x0080, - 0x46de: 0x0080, 0x46df: 0x0080, 0x46e0: 0x0080, 0x46e1: 0x0080, 0x46e2: 0x0080, 0x46e3: 0x0080, - 0x46e4: 0x0080, 0x46e5: 0x0080, 0x46e6: 0x0080, 0x46e7: 0x0080, 0x46e8: 0x0080, 0x46e9: 0x0080, - 0x46ea: 0x0080, 0x46eb: 0x0080, 0x46ec: 0x0080, 0x46ed: 0x0080, 0x46ee: 0x0080, 0x46ef: 0x0080, - 0x46f0: 0x0080, 0x46f1: 0x0080, 0x46f2: 0x0080, 0x46f3: 0x0080, 0x46f4: 0x0080, 0x46f5: 0x0080, - 0x46f6: 0x0080, 0x46f7: 0x0080, 0x46f8: 0x0080, 0x46f9: 0x0080, 0x46fb: 0x0080, - 0x46fc: 0x0080, 0x46fd: 0x0080, 0x46fe: 0x0080, - // Block 0x11c, offset 0x4700 - 0x4700: 0x0080, 0x4701: 0x0080, 0x4702: 0x0080, 0x4703: 0x0080, 0x4704: 0x0080, - 0x4706: 0x0080, 0x470a: 0x0080, 0x470b: 0x0080, - 0x470c: 0x0080, 0x470d: 0x0080, 0x470e: 0x0080, 0x470f: 0x0080, 0x4710: 0x0080, - 0x4712: 0x0080, 0x4713: 0x0080, 0x4714: 0x0080, 0x4715: 0x0080, 0x4716: 0x0080, 0x4717: 0x0080, - 0x4718: 0x0080, 0x4719: 0x0080, 0x471a: 0x0080, 0x471b: 0x0080, 0x471c: 0x0080, 0x471d: 0x0080, - 0x471e: 0x0080, 0x471f: 0x0080, 0x4720: 0x0080, 0x4721: 0x0080, 0x4722: 0x0080, 0x4723: 0x0080, - 0x4724: 0x0080, 0x4725: 0x0080, 0x4726: 0x0080, 0x4727: 0x0080, 0x4728: 0x0080, 0x4729: 0x0080, - 0x472a: 0x0080, 0x472b: 0x0080, 0x472c: 0x0080, 0x472d: 0x0080, 0x472e: 0x0080, 0x472f: 0x0080, - 0x4730: 0x0080, 0x4731: 0x0080, 0x4732: 0x0080, 0x4733: 0x0080, 0x4734: 0x0080, 0x4735: 0x0080, - 0x4736: 0x0080, 0x4737: 0x0080, 0x4738: 0x0080, 0x4739: 0x0080, 0x473a: 0x0080, 0x473b: 0x0080, - 0x473c: 0x0080, 0x473d: 0x0080, 0x473e: 0x0080, 0x473f: 0x0080, - // Block 0x11d, offset 0x4740 - 0x4740: 0x0080, 0x4741: 0x0080, 0x4742: 0x0080, 0x4743: 0x0080, 0x4744: 0x0080, 0x4745: 0x0080, - 0x4746: 0x0080, 0x4747: 0x0080, 0x4748: 0x0080, 0x4749: 0x0080, 0x474a: 0x0080, 0x474b: 0x0080, - 0x474c: 0x0080, 0x474d: 0x0080, 0x474e: 0x0080, 0x474f: 0x0080, 0x4750: 0x0080, 0x4751: 0x0080, - 0x4752: 0x0080, 0x4753: 0x0080, 0x4754: 0x0080, 0x4755: 0x0080, 0x4756: 0x0080, 0x4757: 0x0080, - 0x4758: 0x0080, 0x4759: 0x0080, 0x475a: 0x0080, 0x475b: 0x0080, 0x475c: 0x0080, 0x475d: 0x0080, - 0x475e: 0x0080, 0x475f: 0x0080, 0x4760: 0x0080, 0x4761: 0x0080, 0x4762: 0x0080, 0x4763: 0x0080, - 0x4764: 0x0080, 0x4765: 0x0080, 0x4768: 0x0080, 0x4769: 0x0080, - 0x476a: 0x0080, 0x476b: 0x0080, 0x476c: 0x0080, 0x476d: 0x0080, 0x476e: 0x0080, 0x476f: 0x0080, - 0x4770: 0x0080, 0x4771: 0x0080, 0x4772: 0x0080, 0x4773: 0x0080, 0x4774: 0x0080, 0x4775: 0x0080, - 0x4776: 0x0080, 0x4777: 0x0080, 0x4778: 0x0080, 0x4779: 0x0080, 0x477a: 0x0080, 0x477b: 0x0080, - 0x477c: 0x0080, 0x477d: 0x0080, 0x477e: 0x0080, 0x477f: 0x0080, - // Block 0x11e, offset 0x4780 - 0x4780: 0x0080, 0x4781: 0x0080, 0x4782: 0x0080, 0x4783: 0x0080, 0x4784: 0x0080, 0x4785: 0x0080, - 0x4786: 0x0080, 0x4787: 0x0080, 0x4788: 0x0080, 0x4789: 0x0080, 0x478a: 0x0080, 0x478b: 0x0080, - 0x478e: 0x0080, 0x478f: 0x0080, 0x4790: 0x0080, 0x4791: 0x0080, - 0x4792: 0x0080, 0x4793: 0x0080, 0x4794: 0x0080, 0x4795: 0x0080, 0x4796: 0x0080, 0x4797: 0x0080, - 0x4798: 0x0080, 0x4799: 0x0080, 0x479a: 0x0080, 0x479b: 0x0080, 0x479c: 0x0080, 0x479d: 0x0080, - 0x479e: 0x0080, 0x479f: 0x0080, 0x47a0: 0x0080, 0x47a1: 0x0080, 0x47a2: 0x0080, 0x47a3: 0x0080, - 0x47a4: 0x0080, 0x47a5: 0x0080, 0x47a6: 0x0080, 0x47a7: 0x0080, 0x47a8: 0x0080, 0x47a9: 0x0080, - 0x47aa: 0x0080, 0x47ab: 0x0080, 0x47ac: 0x0080, 0x47ad: 0x0080, 0x47ae: 0x0080, 0x47af: 0x0080, - 0x47b0: 0x0080, 0x47b1: 0x0080, 0x47b2: 0x0080, 0x47b3: 0x0080, 0x47b4: 0x0080, 0x47b5: 0x0080, - 0x47b6: 0x0080, 0x47b7: 0x0080, 0x47b8: 0x0080, 0x47b9: 0x0080, 0x47ba: 0x0080, 0x47bb: 0x0080, - 0x47bc: 0x0080, 0x47bd: 0x0080, 0x47be: 0x0080, 0x47bf: 0x0080, - // Block 0x11f, offset 0x47c0 - 0x47c0: 0x00c3, 0x47c1: 0x00c3, 0x47c2: 0x00c3, 0x47c3: 0x00c3, 0x47c4: 0x00c3, 0x47c5: 0x00c3, - 0x47c6: 0x00c3, 0x47c7: 0x00c3, 0x47c8: 0x00c3, 0x47c9: 0x00c3, 0x47ca: 0x00c3, 0x47cb: 0x00c3, - 0x47cc: 0x00c3, 0x47cd: 0x00c3, 0x47ce: 0x00c3, 0x47cf: 0x00c3, 0x47d0: 0x00c3, 0x47d1: 0x00c3, - 0x47d2: 0x00c3, 0x47d3: 0x00c3, 0x47d4: 0x00c3, 0x47d5: 0x00c3, 0x47d6: 0x00c3, 0x47d7: 0x00c3, - 0x47d8: 0x00c3, 0x47d9: 0x00c3, 0x47da: 0x00c3, 0x47db: 0x00c3, 0x47dc: 0x00c3, 0x47dd: 0x00c3, - 0x47de: 0x00c3, 0x47df: 0x00c3, 0x47e0: 0x00c3, 0x47e1: 0x00c3, 0x47e2: 0x00c3, 0x47e3: 0x00c3, - 0x47e4: 0x00c3, 0x47e5: 0x00c3, 0x47e6: 0x00c3, 0x47e7: 0x00c3, 0x47e8: 0x00c3, 0x47e9: 0x00c3, - 0x47ea: 0x00c3, 0x47eb: 0x00c3, 0x47ec: 0x00c3, 0x47ed: 0x00c3, 0x47ee: 0x00c3, 0x47ef: 0x00c3, - 0x47f0: 0x00c3, 0x47f1: 0x00c3, 0x47f2: 0x00c3, 0x47f3: 0x00c3, 0x47f4: 0x00c3, 0x47f5: 0x00c3, - 0x47f6: 0x00c3, 0x47f7: 0x0080, 0x47f8: 0x0080, 0x47f9: 0x0080, 0x47fa: 0x0080, 0x47fb: 0x00c3, - 0x47fc: 0x00c3, 0x47fd: 0x00c3, 0x47fe: 0x00c3, 0x47ff: 0x00c3, - // Block 0x120, offset 0x4800 - 0x4800: 0x00c3, 0x4801: 0x00c3, 0x4802: 0x00c3, 0x4803: 0x00c3, 0x4804: 0x00c3, 0x4805: 0x00c3, - 0x4806: 0x00c3, 0x4807: 0x00c3, 0x4808: 0x00c3, 0x4809: 0x00c3, 0x480a: 0x00c3, 0x480b: 0x00c3, - 0x480c: 0x00c3, 0x480d: 0x00c3, 0x480e: 0x00c3, 0x480f: 0x00c3, 0x4810: 0x00c3, 0x4811: 0x00c3, - 0x4812: 0x00c3, 0x4813: 0x00c3, 0x4814: 0x00c3, 0x4815: 0x00c3, 0x4816: 0x00c3, 0x4817: 0x00c3, - 0x4818: 0x00c3, 0x4819: 0x00c3, 0x481a: 0x00c3, 0x481b: 0x00c3, 0x481c: 0x00c3, 0x481d: 0x00c3, - 0x481e: 0x00c3, 0x481f: 0x00c3, 0x4820: 0x00c3, 0x4821: 0x00c3, 0x4822: 0x00c3, 0x4823: 0x00c3, - 0x4824: 0x00c3, 0x4825: 0x00c3, 0x4826: 0x00c3, 0x4827: 0x00c3, 0x4828: 0x00c3, 0x4829: 0x00c3, - 0x482a: 0x00c3, 0x482b: 0x00c3, 0x482c: 0x00c3, 0x482d: 0x0080, 0x482e: 0x0080, 0x482f: 0x0080, - 0x4830: 0x0080, 0x4831: 0x0080, 0x4832: 0x0080, 0x4833: 0x0080, 0x4834: 0x0080, 0x4835: 0x00c3, - 0x4836: 0x0080, 0x4837: 0x0080, 0x4838: 0x0080, 0x4839: 0x0080, 0x483a: 0x0080, 0x483b: 0x0080, - 0x483c: 0x0080, 0x483d: 0x0080, 0x483e: 0x0080, 0x483f: 0x0080, - // Block 0x121, offset 0x4840 - 0x4840: 0x0080, 0x4841: 0x0080, 0x4842: 0x0080, 0x4843: 0x0080, 0x4844: 0x00c3, 0x4845: 0x0080, - 0x4846: 0x0080, 0x4847: 0x0080, 0x4848: 0x0080, 0x4849: 0x0080, 0x484a: 0x0080, 0x484b: 0x0080, - 0x485b: 0x00c3, 0x485c: 0x00c3, 0x485d: 0x00c3, - 0x485e: 0x00c3, 0x485f: 0x00c3, 0x4861: 0x00c3, 0x4862: 0x00c3, 0x4863: 0x00c3, - 0x4864: 0x00c3, 0x4865: 0x00c3, 0x4866: 0x00c3, 0x4867: 0x00c3, 0x4868: 0x00c3, 0x4869: 0x00c3, - 0x486a: 0x00c3, 0x486b: 0x00c3, 0x486c: 0x00c3, 0x486d: 0x00c3, 0x486e: 0x00c3, 0x486f: 0x00c3, - // Block 0x122, offset 0x4880 - 0x4880: 0x00c3, 0x4881: 0x00c3, 0x4882: 0x00c3, 0x4883: 0x00c3, 0x4884: 0x00c3, 0x4885: 0x00c3, - 0x4886: 0x00c3, 0x4888: 0x00c3, 0x4889: 0x00c3, 0x488a: 0x00c3, 0x488b: 0x00c3, - 0x488c: 0x00c3, 0x488d: 0x00c3, 0x488e: 0x00c3, 0x488f: 0x00c3, 0x4890: 0x00c3, 0x4891: 0x00c3, - 0x4892: 0x00c3, 0x4893: 0x00c3, 0x4894: 0x00c3, 0x4895: 0x00c3, 0x4896: 0x00c3, 0x4897: 0x00c3, - 0x4898: 0x00c3, 0x489b: 0x00c3, 0x489c: 0x00c3, 0x489d: 0x00c3, - 0x489e: 0x00c3, 0x489f: 0x00c3, 0x48a0: 0x00c3, 0x48a1: 0x00c3, 0x48a3: 0x00c3, - 0x48a4: 0x00c3, 0x48a6: 0x00c3, 0x48a7: 0x00c3, 0x48a8: 0x00c3, 0x48a9: 0x00c3, - 0x48aa: 0x00c3, - // Block 0x123, offset 0x48c0 - 0x48c0: 0x00c0, 0x48c1: 0x00c0, 0x48c2: 0x00c0, 0x48c3: 0x00c0, 0x48c4: 0x00c0, - 0x48c7: 0x0080, 0x48c8: 0x0080, 0x48c9: 0x0080, 0x48ca: 0x0080, 0x48cb: 0x0080, - 0x48cc: 0x0080, 0x48cd: 0x0080, 0x48ce: 0x0080, 0x48cf: 0x0080, 0x48d0: 0x00c3, 0x48d1: 0x00c3, - 0x48d2: 0x00c3, 0x48d3: 0x00c3, 0x48d4: 0x00c3, 0x48d5: 0x00c3, 0x48d6: 0x00c3, - // Block 0x124, offset 0x4900 - 0x4900: 0x00c2, 0x4901: 0x00c2, 0x4902: 0x00c2, 0x4903: 0x00c2, 0x4904: 0x00c2, 0x4905: 0x00c2, - 0x4906: 0x00c2, 0x4907: 0x00c2, 0x4908: 0x00c2, 0x4909: 0x00c2, 0x490a: 0x00c2, 0x490b: 0x00c2, - 0x490c: 0x00c2, 0x490d: 0x00c2, 0x490e: 0x00c2, 0x490f: 0x00c2, 0x4910: 0x00c2, 0x4911: 0x00c2, - 0x4912: 0x00c2, 0x4913: 0x00c2, 0x4914: 0x00c2, 0x4915: 0x00c2, 0x4916: 0x00c2, 0x4917: 0x00c2, - 0x4918: 0x00c2, 0x4919: 0x00c2, 0x491a: 0x00c2, 0x491b: 0x00c2, 0x491c: 0x00c2, 0x491d: 0x00c2, - 0x491e: 0x00c2, 0x491f: 0x00c2, 0x4920: 0x00c2, 0x4921: 0x00c2, 0x4922: 0x00c2, 0x4923: 0x00c2, - 0x4924: 0x00c2, 0x4925: 0x00c2, 0x4926: 0x00c2, 0x4927: 0x00c2, 0x4928: 0x00c2, 0x4929: 0x00c2, - 0x492a: 0x00c2, 0x492b: 0x00c2, 0x492c: 0x00c2, 0x492d: 0x00c2, 0x492e: 0x00c2, 0x492f: 0x00c2, - 0x4930: 0x00c2, 0x4931: 0x00c2, 0x4932: 0x00c2, 0x4933: 0x00c2, 0x4934: 0x00c2, 0x4935: 0x00c2, - 0x4936: 0x00c2, 0x4937: 0x00c2, 0x4938: 0x00c2, 0x4939: 0x00c2, 0x493a: 0x00c2, 0x493b: 0x00c2, - 0x493c: 0x00c2, 0x493d: 0x00c2, 0x493e: 0x00c2, 0x493f: 0x00c2, - // Block 0x125, offset 0x4940 - 0x4940: 0x00c2, 0x4941: 0x00c2, 0x4942: 0x00c2, 0x4943: 0x00c2, 0x4944: 0x00c3, 0x4945: 0x00c3, - 0x4946: 0x00c3, 0x4947: 0x00c3, 0x4948: 0x00c3, 0x4949: 0x00c3, 0x494a: 0x00c3, - 0x4950: 0x00c0, 0x4951: 0x00c0, - 0x4952: 0x00c0, 0x4953: 0x00c0, 0x4954: 0x00c0, 0x4955: 0x00c0, 0x4956: 0x00c0, 0x4957: 0x00c0, - 0x4958: 0x00c0, 0x4959: 0x00c0, - 0x495e: 0x0080, 0x495f: 0x0080, - // Block 0x126, offset 0x4980 - 0x4980: 0x0080, 0x4981: 0x0080, 0x4982: 0x0080, 0x4983: 0x0080, 0x4985: 0x0080, - 0x4986: 0x0080, 0x4987: 0x0080, 0x4988: 0x0080, 0x4989: 0x0080, 0x498a: 0x0080, 0x498b: 0x0080, - 0x498c: 0x0080, 0x498d: 0x0080, 0x498e: 0x0080, 0x498f: 0x0080, 0x4990: 0x0080, 0x4991: 0x0080, - 0x4992: 0x0080, 0x4993: 0x0080, 0x4994: 0x0080, 0x4995: 0x0080, 0x4996: 0x0080, 0x4997: 0x0080, - 0x4998: 0x0080, 0x4999: 0x0080, 0x499a: 0x0080, 0x499b: 0x0080, 0x499c: 0x0080, 0x499d: 0x0080, - 0x499e: 0x0080, 0x499f: 0x0080, 0x49a1: 0x0080, 0x49a2: 0x0080, - 0x49a4: 0x0080, 0x49a7: 0x0080, 0x49a9: 0x0080, - 0x49aa: 0x0080, 0x49ab: 0x0080, 0x49ac: 0x0080, 0x49ad: 0x0080, 0x49ae: 0x0080, 0x49af: 0x0080, - 0x49b0: 0x0080, 0x49b1: 0x0080, 0x49b2: 0x0080, 0x49b4: 0x0080, 0x49b5: 0x0080, - 0x49b6: 0x0080, 0x49b7: 0x0080, 0x49b9: 0x0080, 0x49bb: 0x0080, - // Block 0x127, offset 0x49c0 - 0x49c2: 0x0080, - 0x49c7: 0x0080, 0x49c9: 0x0080, 0x49cb: 0x0080, - 0x49cd: 0x0080, 0x49ce: 0x0080, 0x49cf: 0x0080, 0x49d1: 0x0080, - 0x49d2: 0x0080, 0x49d4: 0x0080, 0x49d7: 0x0080, - 0x49d9: 0x0080, 0x49db: 0x0080, 0x49dd: 0x0080, - 0x49df: 0x0080, 0x49e1: 0x0080, 0x49e2: 0x0080, - 0x49e4: 0x0080, 0x49e7: 0x0080, 0x49e8: 0x0080, 0x49e9: 0x0080, - 0x49ea: 0x0080, 0x49ec: 0x0080, 0x49ed: 0x0080, 0x49ee: 0x0080, 0x49ef: 0x0080, - 0x49f0: 0x0080, 0x49f1: 0x0080, 0x49f2: 0x0080, 0x49f4: 0x0080, 0x49f5: 0x0080, - 0x49f6: 0x0080, 0x49f7: 0x0080, 0x49f9: 0x0080, 0x49fa: 0x0080, 0x49fb: 0x0080, - 0x49fc: 0x0080, 0x49fe: 0x0080, - // Block 0x128, offset 0x4a00 - 0x4a00: 0x0080, 0x4a01: 0x0080, 0x4a02: 0x0080, 0x4a03: 0x0080, 0x4a04: 0x0080, 0x4a05: 0x0080, - 0x4a06: 0x0080, 0x4a07: 0x0080, 0x4a08: 0x0080, 0x4a09: 0x0080, 0x4a0b: 0x0080, - 0x4a0c: 0x0080, 0x4a0d: 0x0080, 0x4a0e: 0x0080, 0x4a0f: 0x0080, 0x4a10: 0x0080, 0x4a11: 0x0080, - 0x4a12: 0x0080, 0x4a13: 0x0080, 0x4a14: 0x0080, 0x4a15: 0x0080, 0x4a16: 0x0080, 0x4a17: 0x0080, - 0x4a18: 0x0080, 0x4a19: 0x0080, 0x4a1a: 0x0080, 0x4a1b: 0x0080, - 0x4a21: 0x0080, 0x4a22: 0x0080, 0x4a23: 0x0080, - 0x4a25: 0x0080, 0x4a26: 0x0080, 0x4a27: 0x0080, 0x4a28: 0x0080, 0x4a29: 0x0080, - 0x4a2b: 0x0080, 0x4a2c: 0x0080, 0x4a2d: 0x0080, 0x4a2e: 0x0080, 0x4a2f: 0x0080, - 0x4a30: 0x0080, 0x4a31: 0x0080, 0x4a32: 0x0080, 0x4a33: 0x0080, 0x4a34: 0x0080, 0x4a35: 0x0080, - 0x4a36: 0x0080, 0x4a37: 0x0080, 0x4a38: 0x0080, 0x4a39: 0x0080, 0x4a3a: 0x0080, 0x4a3b: 0x0080, - // Block 0x129, offset 0x4a40 - 0x4a70: 0x0080, 0x4a71: 0x0080, - // Block 0x12a, offset 0x4a80 - 0x4a80: 0x0080, 0x4a81: 0x0080, 0x4a82: 0x0080, 0x4a83: 0x0080, 0x4a84: 0x0080, 0x4a85: 0x0080, - 0x4a86: 0x0080, 0x4a87: 0x0080, 0x4a88: 0x0080, 0x4a89: 0x0080, 0x4a8a: 0x0080, 0x4a8b: 0x0080, - 0x4a8c: 0x0080, 0x4a8d: 0x0080, 0x4a8e: 0x0080, 0x4a8f: 0x0080, 0x4a90: 0x0080, 0x4a91: 0x0080, - 0x4a92: 0x0080, 0x4a93: 0x0080, 0x4a94: 0x0080, 0x4a95: 0x0080, 0x4a96: 0x0080, 0x4a97: 0x0080, - 0x4a98: 0x0080, 0x4a99: 0x0080, 0x4a9a: 0x0080, 0x4a9b: 0x0080, 0x4a9c: 0x0080, 0x4a9d: 0x0080, - 0x4a9e: 0x0080, 0x4a9f: 0x0080, 0x4aa0: 0x0080, 0x4aa1: 0x0080, 0x4aa2: 0x0080, 0x4aa3: 0x0080, - 0x4aa4: 0x0080, 0x4aa5: 0x0080, 0x4aa6: 0x0080, 0x4aa7: 0x0080, 0x4aa8: 0x0080, 0x4aa9: 0x0080, - 0x4aaa: 0x0080, 0x4aab: 0x0080, - 0x4ab0: 0x0080, 0x4ab1: 0x0080, 0x4ab2: 0x0080, 0x4ab3: 0x0080, 0x4ab4: 0x0080, 0x4ab5: 0x0080, - 0x4ab6: 0x0080, 0x4ab7: 0x0080, 0x4ab8: 0x0080, 0x4ab9: 0x0080, 0x4aba: 0x0080, 0x4abb: 0x0080, - 0x4abc: 0x0080, 0x4abd: 0x0080, 0x4abe: 0x0080, 0x4abf: 0x0080, - // Block 0x12b, offset 0x4ac0 - 0x4ac0: 0x0080, 0x4ac1: 0x0080, 0x4ac2: 0x0080, 0x4ac3: 0x0080, 0x4ac4: 0x0080, 0x4ac5: 0x0080, - 0x4ac6: 0x0080, 0x4ac7: 0x0080, 0x4ac8: 0x0080, 0x4ac9: 0x0080, 0x4aca: 0x0080, 0x4acb: 0x0080, - 0x4acc: 0x0080, 0x4acd: 0x0080, 0x4ace: 0x0080, 0x4acf: 0x0080, 0x4ad0: 0x0080, 0x4ad1: 0x0080, - 0x4ad2: 0x0080, 0x4ad3: 0x0080, - 0x4ae0: 0x0080, 0x4ae1: 0x0080, 0x4ae2: 0x0080, 0x4ae3: 0x0080, - 0x4ae4: 0x0080, 0x4ae5: 0x0080, 0x4ae6: 0x0080, 0x4ae7: 0x0080, 0x4ae8: 0x0080, 0x4ae9: 0x0080, - 0x4aea: 0x0080, 0x4aeb: 0x0080, 0x4aec: 0x0080, 0x4aed: 0x0080, 0x4aee: 0x0080, - 0x4af1: 0x0080, 0x4af2: 0x0080, 0x4af3: 0x0080, 0x4af4: 0x0080, 0x4af5: 0x0080, - 0x4af6: 0x0080, 0x4af7: 0x0080, 0x4af8: 0x0080, 0x4af9: 0x0080, 0x4afa: 0x0080, 0x4afb: 0x0080, - 0x4afc: 0x0080, 0x4afd: 0x0080, 0x4afe: 0x0080, 0x4aff: 0x0080, - // Block 0x12c, offset 0x4b00 - 0x4b01: 0x0080, 0x4b02: 0x0080, 0x4b03: 0x0080, 0x4b04: 0x0080, 0x4b05: 0x0080, - 0x4b06: 0x0080, 0x4b07: 0x0080, 0x4b08: 0x0080, 0x4b09: 0x0080, 0x4b0a: 0x0080, 0x4b0b: 0x0080, - 0x4b0c: 0x0080, 0x4b0d: 0x0080, 0x4b0e: 0x0080, 0x4b0f: 0x0080, 0x4b11: 0x0080, - 0x4b12: 0x0080, 0x4b13: 0x0080, 0x4b14: 0x0080, 0x4b15: 0x0080, 0x4b16: 0x0080, 0x4b17: 0x0080, - 0x4b18: 0x0080, 0x4b19: 0x0080, 0x4b1a: 0x0080, 0x4b1b: 0x0080, 0x4b1c: 0x0080, 0x4b1d: 0x0080, - 0x4b1e: 0x0080, 0x4b1f: 0x0080, 0x4b20: 0x0080, 0x4b21: 0x0080, 0x4b22: 0x0080, 0x4b23: 0x0080, - 0x4b24: 0x0080, 0x4b25: 0x0080, 0x4b26: 0x0080, 0x4b27: 0x0080, 0x4b28: 0x0080, 0x4b29: 0x0080, - 0x4b2a: 0x0080, 0x4b2b: 0x0080, 0x4b2c: 0x0080, 0x4b2d: 0x0080, 0x4b2e: 0x0080, 0x4b2f: 0x0080, - 0x4b30: 0x0080, 0x4b31: 0x0080, 0x4b32: 0x0080, 0x4b33: 0x0080, 0x4b34: 0x0080, 0x4b35: 0x0080, - // Block 0x12d, offset 0x4b40 - 0x4b40: 0x0080, 0x4b41: 0x0080, 0x4b42: 0x0080, 0x4b43: 0x0080, 0x4b44: 0x0080, 0x4b45: 0x0080, - 0x4b46: 0x0080, 0x4b47: 0x0080, 0x4b48: 0x0080, 0x4b49: 0x0080, 0x4b4a: 0x0080, 0x4b4b: 0x0080, - 0x4b4c: 0x0080, 0x4b50: 0x0080, 0x4b51: 0x0080, - 0x4b52: 0x0080, 0x4b53: 0x0080, 0x4b54: 0x0080, 0x4b55: 0x0080, 0x4b56: 0x0080, 0x4b57: 0x0080, - 0x4b58: 0x0080, 0x4b59: 0x0080, 0x4b5a: 0x0080, 0x4b5b: 0x0080, 0x4b5c: 0x0080, 0x4b5d: 0x0080, - 0x4b5e: 0x0080, 0x4b5f: 0x0080, 0x4b60: 0x0080, 0x4b61: 0x0080, 0x4b62: 0x0080, 0x4b63: 0x0080, - 0x4b64: 0x0080, 0x4b65: 0x0080, 0x4b66: 0x0080, 0x4b67: 0x0080, 0x4b68: 0x0080, 0x4b69: 0x0080, - 0x4b6a: 0x0080, 0x4b6b: 0x0080, 0x4b6c: 0x0080, 0x4b6d: 0x0080, 0x4b6e: 0x0080, - 0x4b70: 0x0080, 0x4b71: 0x0080, 0x4b72: 0x0080, 0x4b73: 0x0080, 0x4b74: 0x0080, 0x4b75: 0x0080, - 0x4b76: 0x0080, 0x4b77: 0x0080, 0x4b78: 0x0080, 0x4b79: 0x0080, 0x4b7a: 0x0080, 0x4b7b: 0x0080, - 0x4b7c: 0x0080, 0x4b7d: 0x0080, 0x4b7e: 0x0080, 0x4b7f: 0x0080, - // Block 0x12e, offset 0x4b80 - 0x4b80: 0x0080, 0x4b81: 0x0080, 0x4b82: 0x0080, 0x4b83: 0x0080, 0x4b84: 0x0080, 0x4b85: 0x0080, - 0x4b86: 0x0080, 0x4b87: 0x0080, 0x4b88: 0x0080, 0x4b89: 0x0080, 0x4b8a: 0x0080, 0x4b8b: 0x0080, - 0x4b8c: 0x0080, 0x4b8d: 0x0080, 0x4b8e: 0x0080, 0x4b8f: 0x0080, 0x4b90: 0x0080, 0x4b91: 0x0080, - 0x4b92: 0x0080, 0x4b93: 0x0080, 0x4b94: 0x0080, 0x4b95: 0x0080, 0x4b96: 0x0080, 0x4b97: 0x0080, - 0x4b98: 0x0080, 0x4b99: 0x0080, 0x4b9a: 0x0080, 0x4b9b: 0x0080, 0x4b9c: 0x0080, 0x4b9d: 0x0080, - 0x4b9e: 0x0080, 0x4b9f: 0x0080, 0x4ba0: 0x0080, 0x4ba1: 0x0080, 0x4ba2: 0x0080, 0x4ba3: 0x0080, - 0x4ba4: 0x0080, 0x4ba5: 0x0080, 0x4ba6: 0x0080, 0x4ba7: 0x0080, 0x4ba8: 0x0080, 0x4ba9: 0x0080, - 0x4baa: 0x0080, 0x4bab: 0x0080, 0x4bac: 0x0080, - // Block 0x12f, offset 0x4bc0 - 0x4be6: 0x0080, 0x4be7: 0x0080, 0x4be8: 0x0080, 0x4be9: 0x0080, - 0x4bea: 0x0080, 0x4beb: 0x0080, 0x4bec: 0x0080, 0x4bed: 0x0080, 0x4bee: 0x0080, 0x4bef: 0x0080, - 0x4bf0: 0x0080, 0x4bf1: 0x0080, 0x4bf2: 0x0080, 0x4bf3: 0x0080, 0x4bf4: 0x0080, 0x4bf5: 0x0080, - 0x4bf6: 0x0080, 0x4bf7: 0x0080, 0x4bf8: 0x0080, 0x4bf9: 0x0080, 0x4bfa: 0x0080, 0x4bfb: 0x0080, - 0x4bfc: 0x0080, 0x4bfd: 0x0080, 0x4bfe: 0x0080, 0x4bff: 0x0080, - // Block 0x130, offset 0x4c00 - 0x4c00: 0x008c, 0x4c01: 0x0080, 0x4c02: 0x0080, - 0x4c10: 0x0080, 0x4c11: 0x0080, - 0x4c12: 0x0080, 0x4c13: 0x0080, 0x4c14: 0x0080, 0x4c15: 0x0080, 0x4c16: 0x0080, 0x4c17: 0x0080, - 0x4c18: 0x0080, 0x4c19: 0x0080, 0x4c1a: 0x0080, 0x4c1b: 0x0080, 0x4c1c: 0x0080, 0x4c1d: 0x0080, - 0x4c1e: 0x0080, 0x4c1f: 0x0080, 0x4c20: 0x0080, 0x4c21: 0x0080, 0x4c22: 0x0080, 0x4c23: 0x0080, - 0x4c24: 0x0080, 0x4c25: 0x0080, 0x4c26: 0x0080, 0x4c27: 0x0080, 0x4c28: 0x0080, 0x4c29: 0x0080, - 0x4c2a: 0x0080, 0x4c2b: 0x0080, 0x4c2c: 0x0080, 0x4c2d: 0x0080, 0x4c2e: 0x0080, 0x4c2f: 0x0080, - 0x4c30: 0x0080, 0x4c31: 0x0080, 0x4c32: 0x0080, 0x4c33: 0x0080, 0x4c34: 0x0080, 0x4c35: 0x0080, - 0x4c36: 0x0080, 0x4c37: 0x0080, 0x4c38: 0x0080, 0x4c39: 0x0080, 0x4c3a: 0x0080, 0x4c3b: 0x0080, - // Block 0x131, offset 0x4c40 - 0x4c40: 0x0080, 0x4c41: 0x0080, 0x4c42: 0x0080, 0x4c43: 0x0080, 0x4c44: 0x0080, 0x4c45: 0x0080, - 0x4c46: 0x0080, 0x4c47: 0x0080, 0x4c48: 0x0080, - 0x4c50: 0x0080, 0x4c51: 0x0080, - // Block 0x132, offset 0x4c80 - 0x4c80: 0x0080, 0x4c81: 0x0080, 0x4c82: 0x0080, 0x4c83: 0x0080, 0x4c84: 0x0080, 0x4c85: 0x0080, - 0x4c86: 0x0080, 0x4c87: 0x0080, 0x4c88: 0x0080, 0x4c89: 0x0080, 0x4c8a: 0x0080, 0x4c8b: 0x0080, - 0x4c8c: 0x0080, 0x4c8d: 0x0080, 0x4c8e: 0x0080, 0x4c8f: 0x0080, 0x4c90: 0x0080, 0x4c91: 0x0080, - 0x4c92: 0x0080, - 0x4ca0: 0x0080, 0x4ca1: 0x0080, 0x4ca2: 0x0080, 0x4ca3: 0x0080, - 0x4ca4: 0x0080, 0x4ca5: 0x0080, 0x4ca6: 0x0080, 0x4ca7: 0x0080, 0x4ca8: 0x0080, 0x4ca9: 0x0080, - 0x4caa: 0x0080, 0x4cab: 0x0080, 0x4cac: 0x0080, - 0x4cb0: 0x0080, 0x4cb1: 0x0080, 0x4cb2: 0x0080, 0x4cb3: 0x0080, 0x4cb4: 0x0080, 0x4cb5: 0x0080, - 0x4cb6: 0x0080, - // Block 0x133, offset 0x4cc0 - 0x4cc0: 0x0080, 0x4cc1: 0x0080, 0x4cc2: 0x0080, 0x4cc3: 0x0080, 0x4cc4: 0x0080, 0x4cc5: 0x0080, - 0x4cc6: 0x0080, 0x4cc7: 0x0080, 0x4cc8: 0x0080, 0x4cc9: 0x0080, 0x4cca: 0x0080, 0x4ccb: 0x0080, - 0x4ccc: 0x0080, 0x4ccd: 0x0080, 0x4cce: 0x0080, 0x4ccf: 0x0080, 0x4cd0: 0x0080, 0x4cd1: 0x0080, - 0x4cd2: 0x0080, 0x4cd3: 0x0080, 0x4cd4: 0x0080, 0x4cd5: 0x0080, 0x4cd6: 0x0080, 0x4cd7: 0x0080, - 0x4cd8: 0x0080, 0x4cd9: 0x0080, 0x4cda: 0x0080, 0x4cdb: 0x0080, 0x4cdc: 0x0080, 0x4cdd: 0x0080, - 0x4cde: 0x0080, 0x4cdf: 0x0080, 0x4ce0: 0x0080, 0x4ce1: 0x0080, 0x4ce2: 0x0080, 0x4ce3: 0x0080, - 0x4ce4: 0x0080, 0x4ce5: 0x0080, 0x4ce6: 0x0080, 0x4ce7: 0x0080, 0x4ce8: 0x0080, 0x4ce9: 0x0080, - 0x4cea: 0x0080, 0x4ceb: 0x0080, 0x4cec: 0x0080, 0x4ced: 0x0080, 0x4cee: 0x0080, 0x4cef: 0x0080, - 0x4cf0: 0x0080, 0x4cf1: 0x0080, 0x4cf2: 0x0080, 0x4cf3: 0x0080, - // Block 0x134, offset 0x4d00 - 0x4d00: 0x0080, 0x4d01: 0x0080, 0x4d02: 0x0080, 0x4d03: 0x0080, 0x4d04: 0x0080, 0x4d05: 0x0080, - 0x4d06: 0x0080, 0x4d07: 0x0080, 0x4d08: 0x0080, 0x4d09: 0x0080, 0x4d0a: 0x0080, 0x4d0b: 0x0080, - 0x4d0c: 0x0080, 0x4d0d: 0x0080, 0x4d0e: 0x0080, 0x4d0f: 0x0080, 0x4d10: 0x0080, 0x4d11: 0x0080, - 0x4d12: 0x0080, 0x4d13: 0x0080, 0x4d14: 0x0080, - // Block 0x135, offset 0x4d40 - 0x4d40: 0x0080, 0x4d41: 0x0080, 0x4d42: 0x0080, 0x4d43: 0x0080, 0x4d44: 0x0080, 0x4d45: 0x0080, - 0x4d46: 0x0080, 0x4d47: 0x0080, 0x4d48: 0x0080, 0x4d49: 0x0080, 0x4d4a: 0x0080, 0x4d4b: 0x0080, - 0x4d50: 0x0080, 0x4d51: 0x0080, - 0x4d52: 0x0080, 0x4d53: 0x0080, 0x4d54: 0x0080, 0x4d55: 0x0080, 0x4d56: 0x0080, 0x4d57: 0x0080, - 0x4d58: 0x0080, 0x4d59: 0x0080, 0x4d5a: 0x0080, 0x4d5b: 0x0080, 0x4d5c: 0x0080, 0x4d5d: 0x0080, - 0x4d5e: 0x0080, 0x4d5f: 0x0080, 0x4d60: 0x0080, 0x4d61: 0x0080, 0x4d62: 0x0080, 0x4d63: 0x0080, - 0x4d64: 0x0080, 0x4d65: 0x0080, 0x4d66: 0x0080, 0x4d67: 0x0080, 0x4d68: 0x0080, 0x4d69: 0x0080, - 0x4d6a: 0x0080, 0x4d6b: 0x0080, 0x4d6c: 0x0080, 0x4d6d: 0x0080, 0x4d6e: 0x0080, 0x4d6f: 0x0080, - 0x4d70: 0x0080, 0x4d71: 0x0080, 0x4d72: 0x0080, 0x4d73: 0x0080, 0x4d74: 0x0080, 0x4d75: 0x0080, - 0x4d76: 0x0080, 0x4d77: 0x0080, 0x4d78: 0x0080, 0x4d79: 0x0080, 0x4d7a: 0x0080, 0x4d7b: 0x0080, - 0x4d7c: 0x0080, 0x4d7d: 0x0080, 0x4d7e: 0x0080, 0x4d7f: 0x0080, - // Block 0x136, offset 0x4d80 - 0x4d80: 0x0080, 0x4d81: 0x0080, 0x4d82: 0x0080, 0x4d83: 0x0080, 0x4d84: 0x0080, 0x4d85: 0x0080, - 0x4d86: 0x0080, 0x4d87: 0x0080, - 0x4d90: 0x0080, 0x4d91: 0x0080, - 0x4d92: 0x0080, 0x4d93: 0x0080, 0x4d94: 0x0080, 0x4d95: 0x0080, 0x4d96: 0x0080, 0x4d97: 0x0080, - 0x4d98: 0x0080, 0x4d99: 0x0080, - 0x4da0: 0x0080, 0x4da1: 0x0080, 0x4da2: 0x0080, 0x4da3: 0x0080, - 0x4da4: 0x0080, 0x4da5: 0x0080, 0x4da6: 0x0080, 0x4da7: 0x0080, 0x4da8: 0x0080, 0x4da9: 0x0080, - 0x4daa: 0x0080, 0x4dab: 0x0080, 0x4dac: 0x0080, 0x4dad: 0x0080, 0x4dae: 0x0080, 0x4daf: 0x0080, - 0x4db0: 0x0080, 0x4db1: 0x0080, 0x4db2: 0x0080, 0x4db3: 0x0080, 0x4db4: 0x0080, 0x4db5: 0x0080, - 0x4db6: 0x0080, 0x4db7: 0x0080, 0x4db8: 0x0080, 0x4db9: 0x0080, 0x4dba: 0x0080, 0x4dbb: 0x0080, - 0x4dbc: 0x0080, 0x4dbd: 0x0080, 0x4dbe: 0x0080, 0x4dbf: 0x0080, - // Block 0x137, offset 0x4dc0 - 0x4dc0: 0x0080, 0x4dc1: 0x0080, 0x4dc2: 0x0080, 0x4dc3: 0x0080, 0x4dc4: 0x0080, 0x4dc5: 0x0080, - 0x4dc6: 0x0080, 0x4dc7: 0x0080, - 0x4dd0: 0x0080, 0x4dd1: 0x0080, - 0x4dd2: 0x0080, 0x4dd3: 0x0080, 0x4dd4: 0x0080, 0x4dd5: 0x0080, 0x4dd6: 0x0080, 0x4dd7: 0x0080, - 0x4dd8: 0x0080, 0x4dd9: 0x0080, 0x4dda: 0x0080, 0x4ddb: 0x0080, 0x4ddc: 0x0080, 0x4ddd: 0x0080, - 0x4dde: 0x0080, 0x4ddf: 0x0080, 0x4de0: 0x0080, 0x4de1: 0x0080, 0x4de2: 0x0080, 0x4de3: 0x0080, - 0x4de4: 0x0080, 0x4de5: 0x0080, 0x4de6: 0x0080, 0x4de7: 0x0080, 0x4de8: 0x0080, 0x4de9: 0x0080, - 0x4dea: 0x0080, 0x4deb: 0x0080, 0x4dec: 0x0080, 0x4ded: 0x0080, - // Block 0x138, offset 0x4e00 - 0x4e10: 0x0080, 0x4e11: 0x0080, - 0x4e12: 0x0080, 0x4e13: 0x0080, 0x4e14: 0x0080, 0x4e15: 0x0080, 0x4e16: 0x0080, 0x4e17: 0x0080, - 0x4e18: 0x0080, 0x4e19: 0x0080, 0x4e1a: 0x0080, 0x4e1b: 0x0080, 0x4e1c: 0x0080, 0x4e1d: 0x0080, - 0x4e1e: 0x0080, 0x4e20: 0x0080, 0x4e21: 0x0080, 0x4e22: 0x0080, 0x4e23: 0x0080, - 0x4e24: 0x0080, 0x4e25: 0x0080, 0x4e26: 0x0080, 0x4e27: 0x0080, - 0x4e30: 0x0080, 0x4e33: 0x0080, 0x4e34: 0x0080, 0x4e35: 0x0080, - 0x4e36: 0x0080, 0x4e37: 0x0080, 0x4e38: 0x0080, 0x4e39: 0x0080, 0x4e3a: 0x0080, 0x4e3b: 0x0080, - 0x4e3c: 0x0080, 0x4e3d: 0x0080, 0x4e3e: 0x0080, - // Block 0x139, offset 0x4e40 - 0x4e40: 0x0080, 0x4e41: 0x0080, 0x4e42: 0x0080, 0x4e43: 0x0080, 0x4e44: 0x0080, 0x4e45: 0x0080, - 0x4e46: 0x0080, 0x4e47: 0x0080, 0x4e48: 0x0080, 0x4e49: 0x0080, 0x4e4a: 0x0080, 0x4e4b: 0x0080, - 0x4e50: 0x0080, 0x4e51: 0x0080, - 0x4e52: 0x0080, 0x4e53: 0x0080, 0x4e54: 0x0080, 0x4e55: 0x0080, 0x4e56: 0x0080, 0x4e57: 0x0080, - 0x4e58: 0x0080, 0x4e59: 0x0080, 0x4e5a: 0x0080, 0x4e5b: 0x0080, 0x4e5c: 0x0080, 0x4e5d: 0x0080, - 0x4e5e: 0x0080, - // Block 0x13a, offset 0x4e80 - 0x4e80: 0x0080, 0x4e81: 0x0080, 0x4e82: 0x0080, 0x4e83: 0x0080, 0x4e84: 0x0080, 0x4e85: 0x0080, - 0x4e86: 0x0080, 0x4e87: 0x0080, 0x4e88: 0x0080, 0x4e89: 0x0080, 0x4e8a: 0x0080, 0x4e8b: 0x0080, - 0x4e8c: 0x0080, 0x4e8d: 0x0080, 0x4e8e: 0x0080, 0x4e8f: 0x0080, 0x4e90: 0x0080, 0x4e91: 0x0080, - // Block 0x13b, offset 0x4ec0 - 0x4ec0: 0x0080, - // Block 0x13c, offset 0x4f00 - 0x4f00: 0x00cc, 0x4f01: 0x00cc, 0x4f02: 0x00cc, 0x4f03: 0x00cc, 0x4f04: 0x00cc, 0x4f05: 0x00cc, - 0x4f06: 0x00cc, 0x4f07: 0x00cc, 0x4f08: 0x00cc, 0x4f09: 0x00cc, 0x4f0a: 0x00cc, 0x4f0b: 0x00cc, - 0x4f0c: 0x00cc, 0x4f0d: 0x00cc, 0x4f0e: 0x00cc, 0x4f0f: 0x00cc, 0x4f10: 0x00cc, 0x4f11: 0x00cc, - 0x4f12: 0x00cc, 0x4f13: 0x00cc, 0x4f14: 0x00cc, 0x4f15: 0x00cc, 0x4f16: 0x00cc, - // Block 0x13d, offset 0x4f40 - 0x4f40: 0x00cc, 0x4f41: 0x00cc, 0x4f42: 0x00cc, 0x4f43: 0x00cc, 0x4f44: 0x00cc, 0x4f45: 0x00cc, - 0x4f46: 0x00cc, 0x4f47: 0x00cc, 0x4f48: 0x00cc, 0x4f49: 0x00cc, 0x4f4a: 0x00cc, 0x4f4b: 0x00cc, - 0x4f4c: 0x00cc, 0x4f4d: 0x00cc, 0x4f4e: 0x00cc, 0x4f4f: 0x00cc, 0x4f50: 0x00cc, 0x4f51: 0x00cc, - 0x4f52: 0x00cc, 0x4f53: 0x00cc, 0x4f54: 0x00cc, 0x4f55: 0x00cc, 0x4f56: 0x00cc, 0x4f57: 0x00cc, - 0x4f58: 0x00cc, 0x4f59: 0x00cc, 0x4f5a: 0x00cc, 0x4f5b: 0x00cc, 0x4f5c: 0x00cc, 0x4f5d: 0x00cc, - 0x4f5e: 0x00cc, 0x4f5f: 0x00cc, 0x4f60: 0x00cc, 0x4f61: 0x00cc, 0x4f62: 0x00cc, 0x4f63: 0x00cc, - 0x4f64: 0x00cc, 0x4f65: 0x00cc, 0x4f66: 0x00cc, 0x4f67: 0x00cc, 0x4f68: 0x00cc, 0x4f69: 0x00cc, - 0x4f6a: 0x00cc, 0x4f6b: 0x00cc, 0x4f6c: 0x00cc, 0x4f6d: 0x00cc, 0x4f6e: 0x00cc, 0x4f6f: 0x00cc, - 0x4f70: 0x00cc, 0x4f71: 0x00cc, 0x4f72: 0x00cc, 0x4f73: 0x00cc, 0x4f74: 0x00cc, - // Block 0x13e, offset 0x4f80 - 0x4f80: 0x00cc, 0x4f81: 0x00cc, 0x4f82: 0x00cc, 0x4f83: 0x00cc, 0x4f84: 0x00cc, 0x4f85: 0x00cc, - 0x4f86: 0x00cc, 0x4f87: 0x00cc, 0x4f88: 0x00cc, 0x4f89: 0x00cc, 0x4f8a: 0x00cc, 0x4f8b: 0x00cc, - 0x4f8c: 0x00cc, 0x4f8d: 0x00cc, 0x4f8e: 0x00cc, 0x4f8f: 0x00cc, 0x4f90: 0x00cc, 0x4f91: 0x00cc, - 0x4f92: 0x00cc, 0x4f93: 0x00cc, 0x4f94: 0x00cc, 0x4f95: 0x00cc, 0x4f96: 0x00cc, 0x4f97: 0x00cc, - 0x4f98: 0x00cc, 0x4f99: 0x00cc, 0x4f9a: 0x00cc, 0x4f9b: 0x00cc, 0x4f9c: 0x00cc, 0x4f9d: 0x00cc, - 0x4fa0: 0x00cc, 0x4fa1: 0x00cc, 0x4fa2: 0x00cc, 0x4fa3: 0x00cc, - 0x4fa4: 0x00cc, 0x4fa5: 0x00cc, 0x4fa6: 0x00cc, 0x4fa7: 0x00cc, 0x4fa8: 0x00cc, 0x4fa9: 0x00cc, - 0x4faa: 0x00cc, 0x4fab: 0x00cc, 0x4fac: 0x00cc, 0x4fad: 0x00cc, 0x4fae: 0x00cc, 0x4faf: 0x00cc, - 0x4fb0: 0x00cc, 0x4fb1: 0x00cc, 0x4fb2: 0x00cc, 0x4fb3: 0x00cc, 0x4fb4: 0x00cc, 0x4fb5: 0x00cc, - 0x4fb6: 0x00cc, 0x4fb7: 0x00cc, 0x4fb8: 0x00cc, 0x4fb9: 0x00cc, 0x4fba: 0x00cc, 0x4fbb: 0x00cc, - 0x4fbc: 0x00cc, 0x4fbd: 0x00cc, 0x4fbe: 0x00cc, 0x4fbf: 0x00cc, - // Block 0x13f, offset 0x4fc0 - 0x4fc0: 0x00cc, 0x4fc1: 0x00cc, 0x4fc2: 0x00cc, 0x4fc3: 0x00cc, 0x4fc4: 0x00cc, 0x4fc5: 0x00cc, - 0x4fc6: 0x00cc, 0x4fc7: 0x00cc, 0x4fc8: 0x00cc, 0x4fc9: 0x00cc, 0x4fca: 0x00cc, 0x4fcb: 0x00cc, - 0x4fcc: 0x00cc, 0x4fcd: 0x00cc, 0x4fce: 0x00cc, 0x4fcf: 0x00cc, 0x4fd0: 0x00cc, 0x4fd1: 0x00cc, - 0x4fd2: 0x00cc, 0x4fd3: 0x00cc, 0x4fd4: 0x00cc, 0x4fd5: 0x00cc, 0x4fd6: 0x00cc, 0x4fd7: 0x00cc, - 0x4fd8: 0x00cc, 0x4fd9: 0x00cc, 0x4fda: 0x00cc, 0x4fdb: 0x00cc, 0x4fdc: 0x00cc, 0x4fdd: 0x00cc, - 0x4fde: 0x00cc, 0x4fdf: 0x00cc, 0x4fe0: 0x00cc, 0x4fe1: 0x00cc, - // Block 0x140, offset 0x5000 - 0x5000: 0x008c, 0x5001: 0x008c, 0x5002: 0x008c, 0x5003: 0x008c, 0x5004: 0x008c, 0x5005: 0x008c, - 0x5006: 0x008c, 0x5007: 0x008c, 0x5008: 0x008c, 0x5009: 0x008c, 0x500a: 0x008c, 0x500b: 0x008c, - 0x500c: 0x008c, 0x500d: 0x008c, 0x500e: 0x008c, 0x500f: 0x008c, 0x5010: 0x008c, 0x5011: 0x008c, - 0x5012: 0x008c, 0x5013: 0x008c, 0x5014: 0x008c, 0x5015: 0x008c, 0x5016: 0x008c, 0x5017: 0x008c, - 0x5018: 0x008c, 0x5019: 0x008c, 0x501a: 0x008c, 0x501b: 0x008c, 0x501c: 0x008c, 0x501d: 0x008c, - // Block 0x141, offset 0x5040 - 0x5041: 0x0040, - 0x5060: 0x0040, 0x5061: 0x0040, 0x5062: 0x0040, 0x5063: 0x0040, - 0x5064: 0x0040, 0x5065: 0x0040, 0x5066: 0x0040, 0x5067: 0x0040, 0x5068: 0x0040, 0x5069: 0x0040, - 0x506a: 0x0040, 0x506b: 0x0040, 0x506c: 0x0040, 0x506d: 0x0040, 0x506e: 0x0040, 0x506f: 0x0040, - 0x5070: 0x0040, 0x5071: 0x0040, 0x5072: 0x0040, 0x5073: 0x0040, 0x5074: 0x0040, 0x5075: 0x0040, - 0x5076: 0x0040, 0x5077: 0x0040, 0x5078: 0x0040, 0x5079: 0x0040, 0x507a: 0x0040, 0x507b: 0x0040, - 0x507c: 0x0040, 0x507d: 0x0040, 0x507e: 0x0040, 0x507f: 0x0040, - // Block 0x142, offset 0x5080 - 0x5080: 0x0040, 0x5081: 0x0040, 0x5082: 0x0040, 0x5083: 0x0040, 0x5084: 0x0040, 0x5085: 0x0040, - 0x5086: 0x0040, 0x5087: 0x0040, 0x5088: 0x0040, 0x5089: 0x0040, 0x508a: 0x0040, 0x508b: 0x0040, - 0x508c: 0x0040, 0x508d: 0x0040, 0x508e: 0x0040, 0x508f: 0x0040, 0x5090: 0x0040, 0x5091: 0x0040, - 0x5092: 0x0040, 0x5093: 0x0040, 0x5094: 0x0040, 0x5095: 0x0040, 0x5096: 0x0040, 0x5097: 0x0040, - 0x5098: 0x0040, 0x5099: 0x0040, 0x509a: 0x0040, 0x509b: 0x0040, 0x509c: 0x0040, 0x509d: 0x0040, - 0x509e: 0x0040, 0x509f: 0x0040, 0x50a0: 0x0040, 0x50a1: 0x0040, 0x50a2: 0x0040, 0x50a3: 0x0040, - 0x50a4: 0x0040, 0x50a5: 0x0040, 0x50a6: 0x0040, 0x50a7: 0x0040, 0x50a8: 0x0040, 0x50a9: 0x0040, - 0x50aa: 0x0040, 0x50ab: 0x0040, 0x50ac: 0x0040, 0x50ad: 0x0040, 0x50ae: 0x0040, 0x50af: 0x0040, - // Block 0x143, offset 0x50c0 - 0x50c0: 0x0040, 0x50c1: 0x0040, 0x50c2: 0x0040, 0x50c3: 0x0040, 0x50c4: 0x0040, 0x50c5: 0x0040, - 0x50c6: 0x0040, 0x50c7: 0x0040, 0x50c8: 0x0040, 0x50c9: 0x0040, 0x50ca: 0x0040, 0x50cb: 0x0040, - 0x50cc: 0x0040, 0x50cd: 0x0040, 0x50ce: 0x0040, 0x50cf: 0x0040, 0x50d0: 0x0040, 0x50d1: 0x0040, - 0x50d2: 0x0040, 0x50d3: 0x0040, 0x50d4: 0x0040, 0x50d5: 0x0040, 0x50d6: 0x0040, 0x50d7: 0x0040, - 0x50d8: 0x0040, 0x50d9: 0x0040, 0x50da: 0x0040, 0x50db: 0x0040, 0x50dc: 0x0040, 0x50dd: 0x0040, - 0x50de: 0x0040, 0x50df: 0x0040, 0x50e0: 0x0040, 0x50e1: 0x0040, 0x50e2: 0x0040, 0x50e3: 0x0040, - 0x50e4: 0x0040, 0x50e5: 0x0040, 0x50e6: 0x0040, 0x50e7: 0x0040, 0x50e8: 0x0040, 0x50e9: 0x0040, - 0x50ea: 0x0040, 0x50eb: 0x0040, 0x50ec: 0x0040, 0x50ed: 0x0040, 0x50ee: 0x0040, 0x50ef: 0x0040, - 0x50f0: 0x0040, 0x50f1: 0x0040, 0x50f2: 0x0040, 0x50f3: 0x0040, 0x50f4: 0x0040, 0x50f5: 0x0040, - 0x50f6: 0x0040, 0x50f7: 0x0040, 0x50f8: 0x0040, 0x50f9: 0x0040, 0x50fa: 0x0040, 0x50fb: 0x0040, - 0x50fc: 0x0040, 0x50fd: 0x0040, -} - -// derivedPropertiesIndex: 36 blocks, 2304 entries, 4608 bytes -// Block 0 is the zero block. -var derivedPropertiesIndex = [2304]uint16{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x02, 0xc4: 0x03, 0xc5: 0x04, 0xc6: 0x05, 0xc7: 0x06, - 0xc8: 0x05, 0xc9: 0x05, 0xca: 0x07, 0xcb: 0x08, 0xcc: 0x09, 0xcd: 0x0a, 0xce: 0x0b, 0xcf: 0x0c, - 0xd0: 0x05, 0xd1: 0x05, 0xd2: 0x0d, 0xd3: 0x05, 0xd4: 0x0e, 0xd5: 0x0f, 0xd6: 0x10, 0xd7: 0x11, - 0xd8: 0x12, 0xd9: 0x13, 0xda: 0x14, 0xdb: 0x15, 0xdc: 0x16, 0xdd: 0x17, 0xde: 0x18, 0xdf: 0x19, - 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, - 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x0a, 0xec: 0x0a, 0xed: 0x0b, 0xee: 0x0c, 0xef: 0x0d, - 0xf0: 0x1d, 0xf3: 0x20, 0xf4: 0x21, - // Block 0x4, offset 0x100 - 0x120: 0x1a, 0x121: 0x1b, 0x122: 0x1c, 0x123: 0x1d, 0x124: 0x1e, 0x125: 0x1f, 0x126: 0x20, 0x127: 0x21, - 0x128: 0x22, 0x129: 0x23, 0x12a: 0x24, 0x12b: 0x25, 0x12c: 0x26, 0x12d: 0x27, 0x12e: 0x28, 0x12f: 0x29, - 0x130: 0x2a, 0x131: 0x2b, 0x132: 0x2c, 0x133: 0x2d, 0x134: 0x2e, 0x135: 0x2f, 0x136: 0x30, 0x137: 0x31, - 0x138: 0x32, 0x139: 0x33, 0x13a: 0x34, 0x13b: 0x35, 0x13c: 0x36, 0x13d: 0x37, 0x13e: 0x38, 0x13f: 0x39, - // Block 0x5, offset 0x140 - 0x140: 0x3a, 0x141: 0x3b, 0x142: 0x3c, 0x143: 0x3d, 0x144: 0x3e, 0x145: 0x3e, 0x146: 0x3e, 0x147: 0x3e, - 0x148: 0x05, 0x149: 0x3f, 0x14a: 0x40, 0x14b: 0x41, 0x14c: 0x42, 0x14d: 0x43, 0x14e: 0x44, 0x14f: 0x45, - 0x150: 0x46, 0x151: 0x05, 0x152: 0x05, 0x153: 0x05, 0x154: 0x05, 0x155: 0x05, 0x156: 0x05, 0x157: 0x05, - 0x158: 0x05, 0x159: 0x47, 0x15a: 0x48, 0x15b: 0x49, 0x15c: 0x4a, 0x15d: 0x4b, 0x15e: 0x4c, 0x15f: 0x4d, - 0x160: 0x4e, 0x161: 0x4f, 0x162: 0x50, 0x163: 0x51, 0x164: 0x52, 0x165: 0x53, 0x166: 0x54, 0x167: 0x55, - 0x168: 0x56, 0x169: 0x57, 0x16a: 0x58, 0x16c: 0x59, 0x16d: 0x5a, 0x16e: 0x5b, 0x16f: 0x5c, - 0x170: 0x5d, 0x171: 0x5e, 0x172: 0x5f, 0x173: 0x60, 0x174: 0x61, 0x175: 0x62, 0x176: 0x63, 0x177: 0x64, - 0x178: 0x05, 0x179: 0x05, 0x17a: 0x65, 0x17b: 0x05, 0x17c: 0x66, 0x17d: 0x67, 0x17e: 0x68, 0x17f: 0x69, - // Block 0x6, offset 0x180 - 0x180: 0x6a, 0x181: 0x6b, 0x182: 0x6c, 0x183: 0x6d, 0x184: 0x6e, 0x185: 0x6f, 0x186: 0x70, 0x187: 0x71, - 0x188: 0x71, 0x189: 0x71, 0x18a: 0x71, 0x18b: 0x71, 0x18c: 0x71, 0x18d: 0x71, 0x18e: 0x71, 0x18f: 0x72, - 0x190: 0x73, 0x191: 0x74, 0x192: 0x71, 0x193: 0x71, 0x194: 0x71, 0x195: 0x71, 0x196: 0x71, 0x197: 0x71, - 0x198: 0x71, 0x199: 0x71, 0x19a: 0x71, 0x19b: 0x71, 0x19c: 0x71, 0x19d: 0x71, 0x19e: 0x71, 0x19f: 0x71, - 0x1a0: 0x71, 0x1a1: 0x71, 0x1a2: 0x71, 0x1a3: 0x71, 0x1a4: 0x71, 0x1a5: 0x71, 0x1a6: 0x71, 0x1a7: 0x71, - 0x1a8: 0x71, 0x1a9: 0x71, 0x1aa: 0x71, 0x1ab: 0x71, 0x1ac: 0x71, 0x1ad: 0x75, 0x1ae: 0x76, 0x1af: 0x77, - 0x1b0: 0x78, 0x1b1: 0x79, 0x1b2: 0x05, 0x1b3: 0x7a, 0x1b4: 0x7b, 0x1b5: 0x7c, 0x1b6: 0x7d, 0x1b7: 0x7e, - 0x1b8: 0x7f, 0x1b9: 0x80, 0x1ba: 0x81, 0x1bb: 0x82, 0x1bc: 0x83, 0x1bd: 0x83, 0x1be: 0x83, 0x1bf: 0x84, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x85, 0x1c1: 0x86, 0x1c2: 0x87, 0x1c3: 0x88, 0x1c4: 0x89, 0x1c5: 0x8a, 0x1c6: 0x8b, 0x1c7: 0x8c, - 0x1c8: 0x8d, 0x1c9: 0x71, 0x1ca: 0x71, 0x1cb: 0x8e, 0x1cc: 0x83, 0x1cd: 0x8f, 0x1ce: 0x71, 0x1cf: 0x71, - 0x1d0: 0x90, 0x1d1: 0x90, 0x1d2: 0x90, 0x1d3: 0x90, 0x1d4: 0x90, 0x1d5: 0x90, 0x1d6: 0x90, 0x1d7: 0x90, - 0x1d8: 0x90, 0x1d9: 0x90, 0x1da: 0x90, 0x1db: 0x90, 0x1dc: 0x90, 0x1dd: 0x90, 0x1de: 0x90, 0x1df: 0x90, - 0x1e0: 0x90, 0x1e1: 0x90, 0x1e2: 0x90, 0x1e3: 0x90, 0x1e4: 0x90, 0x1e5: 0x90, 0x1e6: 0x90, 0x1e7: 0x90, - 0x1e8: 0x90, 0x1e9: 0x90, 0x1ea: 0x90, 0x1eb: 0x90, 0x1ec: 0x90, 0x1ed: 0x90, 0x1ee: 0x90, 0x1ef: 0x90, - 0x1f0: 0x90, 0x1f1: 0x90, 0x1f2: 0x90, 0x1f3: 0x90, 0x1f4: 0x90, 0x1f5: 0x90, 0x1f6: 0x90, 0x1f7: 0x90, - 0x1f8: 0x90, 0x1f9: 0x90, 0x1fa: 0x90, 0x1fb: 0x90, 0x1fc: 0x90, 0x1fd: 0x90, 0x1fe: 0x90, 0x1ff: 0x90, - // Block 0x8, offset 0x200 - 0x200: 0x90, 0x201: 0x90, 0x202: 0x90, 0x203: 0x90, 0x204: 0x90, 0x205: 0x90, 0x206: 0x90, 0x207: 0x90, - 0x208: 0x90, 0x209: 0x90, 0x20a: 0x90, 0x20b: 0x90, 0x20c: 0x90, 0x20d: 0x90, 0x20e: 0x90, 0x20f: 0x90, - 0x210: 0x90, 0x211: 0x90, 0x212: 0x90, 0x213: 0x90, 0x214: 0x90, 0x215: 0x90, 0x216: 0x90, 0x217: 0x90, - 0x218: 0x90, 0x219: 0x90, 0x21a: 0x90, 0x21b: 0x90, 0x21c: 0x90, 0x21d: 0x90, 0x21e: 0x90, 0x21f: 0x90, - 0x220: 0x90, 0x221: 0x90, 0x222: 0x90, 0x223: 0x90, 0x224: 0x90, 0x225: 0x90, 0x226: 0x90, 0x227: 0x90, - 0x228: 0x90, 0x229: 0x90, 0x22a: 0x90, 0x22b: 0x90, 0x22c: 0x90, 0x22d: 0x90, 0x22e: 0x90, 0x22f: 0x90, - 0x230: 0x90, 0x231: 0x90, 0x232: 0x90, 0x233: 0x90, 0x234: 0x90, 0x235: 0x90, 0x236: 0x91, 0x237: 0x71, - 0x238: 0x90, 0x239: 0x90, 0x23a: 0x90, 0x23b: 0x90, 0x23c: 0x90, 0x23d: 0x90, 0x23e: 0x90, 0x23f: 0x90, - // Block 0x9, offset 0x240 - 0x240: 0x90, 0x241: 0x90, 0x242: 0x90, 0x243: 0x90, 0x244: 0x90, 0x245: 0x90, 0x246: 0x90, 0x247: 0x90, - 0x248: 0x90, 0x249: 0x90, 0x24a: 0x90, 0x24b: 0x90, 0x24c: 0x90, 0x24d: 0x90, 0x24e: 0x90, 0x24f: 0x90, - 0x250: 0x90, 0x251: 0x90, 0x252: 0x90, 0x253: 0x90, 0x254: 0x90, 0x255: 0x90, 0x256: 0x90, 0x257: 0x90, - 0x258: 0x90, 0x259: 0x90, 0x25a: 0x90, 0x25b: 0x90, 0x25c: 0x90, 0x25d: 0x90, 0x25e: 0x90, 0x25f: 0x90, - 0x260: 0x90, 0x261: 0x90, 0x262: 0x90, 0x263: 0x90, 0x264: 0x90, 0x265: 0x90, 0x266: 0x90, 0x267: 0x90, - 0x268: 0x90, 0x269: 0x90, 0x26a: 0x90, 0x26b: 0x90, 0x26c: 0x90, 0x26d: 0x90, 0x26e: 0x90, 0x26f: 0x90, - 0x270: 0x90, 0x271: 0x90, 0x272: 0x90, 0x273: 0x90, 0x274: 0x90, 0x275: 0x90, 0x276: 0x90, 0x277: 0x90, - 0x278: 0x90, 0x279: 0x90, 0x27a: 0x90, 0x27b: 0x90, 0x27c: 0x90, 0x27d: 0x90, 0x27e: 0x90, 0x27f: 0x90, - // Block 0xa, offset 0x280 - 0x280: 0x90, 0x281: 0x90, 0x282: 0x90, 0x283: 0x90, 0x284: 0x90, 0x285: 0x90, 0x286: 0x90, 0x287: 0x90, - 0x288: 0x90, 0x289: 0x90, 0x28a: 0x90, 0x28b: 0x90, 0x28c: 0x90, 0x28d: 0x90, 0x28e: 0x90, 0x28f: 0x90, - 0x290: 0x90, 0x291: 0x90, 0x292: 0x90, 0x293: 0x90, 0x294: 0x90, 0x295: 0x90, 0x296: 0x90, 0x297: 0x90, - 0x298: 0x90, 0x299: 0x90, 0x29a: 0x90, 0x29b: 0x90, 0x29c: 0x90, 0x29d: 0x90, 0x29e: 0x90, 0x29f: 0x90, - 0x2a0: 0x90, 0x2a1: 0x90, 0x2a2: 0x90, 0x2a3: 0x90, 0x2a4: 0x90, 0x2a5: 0x90, 0x2a6: 0x90, 0x2a7: 0x90, - 0x2a8: 0x90, 0x2a9: 0x90, 0x2aa: 0x90, 0x2ab: 0x90, 0x2ac: 0x90, 0x2ad: 0x90, 0x2ae: 0x90, 0x2af: 0x90, - 0x2b0: 0x90, 0x2b1: 0x90, 0x2b2: 0x90, 0x2b3: 0x90, 0x2b4: 0x90, 0x2b5: 0x90, 0x2b6: 0x90, 0x2b7: 0x90, - 0x2b8: 0x90, 0x2b9: 0x90, 0x2ba: 0x90, 0x2bb: 0x90, 0x2bc: 0x90, 0x2bd: 0x90, 0x2be: 0x90, 0x2bf: 0x92, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x05, 0x2c1: 0x05, 0x2c2: 0x05, 0x2c3: 0x05, 0x2c4: 0x05, 0x2c5: 0x05, 0x2c6: 0x05, 0x2c7: 0x05, - 0x2c8: 0x05, 0x2c9: 0x05, 0x2ca: 0x05, 0x2cb: 0x05, 0x2cc: 0x05, 0x2cd: 0x05, 0x2ce: 0x05, 0x2cf: 0x05, - 0x2d0: 0x05, 0x2d1: 0x05, 0x2d2: 0x93, 0x2d3: 0x94, 0x2d4: 0x05, 0x2d5: 0x05, 0x2d6: 0x05, 0x2d7: 0x05, - 0x2d8: 0x95, 0x2d9: 0x96, 0x2da: 0x97, 0x2db: 0x98, 0x2dc: 0x99, 0x2dd: 0x9a, 0x2de: 0x9b, 0x2df: 0x9c, - 0x2e0: 0x9d, 0x2e1: 0x9e, 0x2e2: 0x05, 0x2e3: 0x9f, 0x2e4: 0xa0, 0x2e5: 0xa1, 0x2e6: 0xa2, 0x2e7: 0xa3, - 0x2e8: 0xa4, 0x2e9: 0xa5, 0x2ea: 0xa6, 0x2eb: 0xa7, 0x2ec: 0xa8, 0x2ed: 0xa9, 0x2ee: 0x05, 0x2ef: 0xaa, - 0x2f0: 0x05, 0x2f1: 0x05, 0x2f2: 0x05, 0x2f3: 0x05, 0x2f4: 0x05, 0x2f5: 0x05, 0x2f6: 0x05, 0x2f7: 0x05, - 0x2f8: 0x05, 0x2f9: 0x05, 0x2fa: 0x05, 0x2fb: 0x05, 0x2fc: 0x05, 0x2fd: 0x05, 0x2fe: 0x05, 0x2ff: 0x05, - // Block 0xc, offset 0x300 - 0x300: 0x05, 0x301: 0x05, 0x302: 0x05, 0x303: 0x05, 0x304: 0x05, 0x305: 0x05, 0x306: 0x05, 0x307: 0x05, - 0x308: 0x05, 0x309: 0x05, 0x30a: 0x05, 0x30b: 0x05, 0x30c: 0x05, 0x30d: 0x05, 0x30e: 0x05, 0x30f: 0x05, - 0x310: 0x05, 0x311: 0x05, 0x312: 0x05, 0x313: 0x05, 0x314: 0x05, 0x315: 0x05, 0x316: 0x05, 0x317: 0x05, - 0x318: 0x05, 0x319: 0x05, 0x31a: 0x05, 0x31b: 0x05, 0x31c: 0x05, 0x31d: 0x05, 0x31e: 0x05, 0x31f: 0x05, - 0x320: 0x05, 0x321: 0x05, 0x322: 0x05, 0x323: 0x05, 0x324: 0x05, 0x325: 0x05, 0x326: 0x05, 0x327: 0x05, - 0x328: 0x05, 0x329: 0x05, 0x32a: 0x05, 0x32b: 0x05, 0x32c: 0x05, 0x32d: 0x05, 0x32e: 0x05, 0x32f: 0x05, - 0x330: 0x05, 0x331: 0x05, 0x332: 0x05, 0x333: 0x05, 0x334: 0x05, 0x335: 0x05, 0x336: 0x05, 0x337: 0x05, - 0x338: 0x05, 0x339: 0x05, 0x33a: 0x05, 0x33b: 0x05, 0x33c: 0x05, 0x33d: 0x05, 0x33e: 0x05, 0x33f: 0x05, - // Block 0xd, offset 0x340 - 0x340: 0x05, 0x341: 0x05, 0x342: 0x05, 0x343: 0x05, 0x344: 0x05, 0x345: 0x05, 0x346: 0x05, 0x347: 0x05, - 0x348: 0x05, 0x349: 0x05, 0x34a: 0x05, 0x34b: 0x05, 0x34c: 0x05, 0x34d: 0x05, 0x34e: 0x05, 0x34f: 0x05, - 0x350: 0x05, 0x351: 0x05, 0x352: 0x05, 0x353: 0x05, 0x354: 0x05, 0x355: 0x05, 0x356: 0x05, 0x357: 0x05, - 0x358: 0x05, 0x359: 0x05, 0x35a: 0x05, 0x35b: 0x05, 0x35c: 0x05, 0x35d: 0x05, 0x35e: 0xab, 0x35f: 0xac, - // Block 0xe, offset 0x380 - 0x380: 0x3e, 0x381: 0x3e, 0x382: 0x3e, 0x383: 0x3e, 0x384: 0x3e, 0x385: 0x3e, 0x386: 0x3e, 0x387: 0x3e, - 0x388: 0x3e, 0x389: 0x3e, 0x38a: 0x3e, 0x38b: 0x3e, 0x38c: 0x3e, 0x38d: 0x3e, 0x38e: 0x3e, 0x38f: 0x3e, - 0x390: 0x3e, 0x391: 0x3e, 0x392: 0x3e, 0x393: 0x3e, 0x394: 0x3e, 0x395: 0x3e, 0x396: 0x3e, 0x397: 0x3e, - 0x398: 0x3e, 0x399: 0x3e, 0x39a: 0x3e, 0x39b: 0x3e, 0x39c: 0x3e, 0x39d: 0x3e, 0x39e: 0x3e, 0x39f: 0x3e, - 0x3a0: 0x3e, 0x3a1: 0x3e, 0x3a2: 0x3e, 0x3a3: 0x3e, 0x3a4: 0x3e, 0x3a5: 0x3e, 0x3a6: 0x3e, 0x3a7: 0x3e, - 0x3a8: 0x3e, 0x3a9: 0x3e, 0x3aa: 0x3e, 0x3ab: 0x3e, 0x3ac: 0x3e, 0x3ad: 0x3e, 0x3ae: 0x3e, 0x3af: 0x3e, - 0x3b0: 0x3e, 0x3b1: 0x3e, 0x3b2: 0x3e, 0x3b3: 0x3e, 0x3b4: 0x3e, 0x3b5: 0x3e, 0x3b6: 0x3e, 0x3b7: 0x3e, - 0x3b8: 0x3e, 0x3b9: 0x3e, 0x3ba: 0x3e, 0x3bb: 0x3e, 0x3bc: 0x3e, 0x3bd: 0x3e, 0x3be: 0x3e, 0x3bf: 0x3e, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x3e, 0x3c1: 0x3e, 0x3c2: 0x3e, 0x3c3: 0x3e, 0x3c4: 0x3e, 0x3c5: 0x3e, 0x3c6: 0x3e, 0x3c7: 0x3e, - 0x3c8: 0x3e, 0x3c9: 0x3e, 0x3ca: 0x3e, 0x3cb: 0x3e, 0x3cc: 0x3e, 0x3cd: 0x3e, 0x3ce: 0x3e, 0x3cf: 0x3e, - 0x3d0: 0x3e, 0x3d1: 0x3e, 0x3d2: 0x3e, 0x3d3: 0x3e, 0x3d4: 0x3e, 0x3d5: 0x3e, 0x3d6: 0x3e, 0x3d7: 0x3e, - 0x3d8: 0x3e, 0x3d9: 0x3e, 0x3da: 0x3e, 0x3db: 0x3e, 0x3dc: 0x3e, 0x3dd: 0x3e, 0x3de: 0x3e, 0x3df: 0x3e, - 0x3e0: 0x3e, 0x3e1: 0x3e, 0x3e2: 0x3e, 0x3e3: 0x3e, 0x3e4: 0x83, 0x3e5: 0x83, 0x3e6: 0x83, 0x3e7: 0x83, - 0x3e8: 0xad, 0x3e9: 0xae, 0x3ea: 0x83, 0x3eb: 0xaf, 0x3ec: 0xb0, 0x3ed: 0xb1, 0x3ee: 0x71, 0x3ef: 0xb2, - 0x3f0: 0x71, 0x3f1: 0x71, 0x3f2: 0x71, 0x3f3: 0x71, 0x3f4: 0x71, 0x3f5: 0xb3, 0x3f6: 0xb4, 0x3f7: 0xb5, - 0x3f8: 0xb6, 0x3f9: 0xb7, 0x3fa: 0x71, 0x3fb: 0xb8, 0x3fc: 0xb9, 0x3fd: 0xba, 0x3fe: 0xbb, 0x3ff: 0xbc, - // Block 0x10, offset 0x400 - 0x400: 0xbd, 0x401: 0xbe, 0x402: 0x05, 0x403: 0xbf, 0x404: 0xc0, 0x405: 0xc1, 0x406: 0xc2, 0x407: 0xc3, - 0x40a: 0xc4, 0x40b: 0xc5, 0x40c: 0xc6, 0x40d: 0xc7, 0x40e: 0xc8, 0x40f: 0xc9, - 0x410: 0x05, 0x411: 0x05, 0x412: 0xca, 0x413: 0xcb, 0x414: 0xcc, 0x415: 0xcd, - 0x418: 0x05, 0x419: 0x05, 0x41a: 0x05, 0x41b: 0x05, 0x41c: 0xce, 0x41d: 0xcf, - 0x420: 0xd0, 0x421: 0xd1, 0x422: 0xd2, 0x423: 0xd3, 0x424: 0xd4, 0x426: 0xd5, 0x427: 0xb4, - 0x428: 0xd6, 0x429: 0xd7, 0x42a: 0xd8, 0x42b: 0xd9, 0x42c: 0xda, 0x42d: 0xdb, 0x42e: 0xdc, - 0x430: 0x05, 0x431: 0x5f, 0x432: 0xdd, 0x433: 0xde, - 0x439: 0xdf, - // Block 0x11, offset 0x440 - 0x440: 0xe0, 0x441: 0xe1, 0x442: 0xe2, 0x443: 0xe3, 0x444: 0xe4, 0x445: 0xe5, 0x446: 0xe6, 0x447: 0xe7, - 0x448: 0xe8, 0x44a: 0xe9, 0x44b: 0xea, 0x44c: 0xeb, 0x44d: 0xec, - 0x450: 0xed, 0x451: 0xee, 0x452: 0xef, 0x453: 0xf0, 0x456: 0xf1, 0x457: 0xf2, - 0x458: 0xf3, 0x459: 0xf4, 0x45a: 0xf5, 0x45b: 0xf6, 0x45c: 0xf7, - 0x462: 0xf8, 0x463: 0xf9, - 0x46b: 0xfa, - 0x470: 0xfb, 0x471: 0xfc, 0x472: 0xfd, - // Block 0x12, offset 0x480 - 0x480: 0x05, 0x481: 0x05, 0x482: 0x05, 0x483: 0x05, 0x484: 0x05, 0x485: 0x05, 0x486: 0x05, 0x487: 0x05, - 0x488: 0x05, 0x489: 0x05, 0x48a: 0x05, 0x48b: 0x05, 0x48c: 0x05, 0x48d: 0x05, 0x48e: 0xfe, - 0x490: 0x71, 0x491: 0xff, 0x492: 0x05, 0x493: 0x05, 0x494: 0x05, 0x495: 0x100, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x05, 0x4c1: 0x05, 0x4c2: 0x05, 0x4c3: 0x05, 0x4c4: 0x05, 0x4c5: 0x05, 0x4c6: 0x05, 0x4c7: 0x05, - 0x4c8: 0x05, 0x4c9: 0x05, 0x4ca: 0x05, 0x4cb: 0x05, 0x4cc: 0x05, 0x4cd: 0x05, 0x4ce: 0x05, 0x4cf: 0x05, - 0x4d0: 0x101, - // Block 0x14, offset 0x500 - 0x510: 0x05, 0x511: 0x05, 0x512: 0x05, 0x513: 0x05, 0x514: 0x05, 0x515: 0x05, 0x516: 0x05, 0x517: 0x05, - 0x518: 0x05, 0x519: 0x102, - // Block 0x15, offset 0x540 - 0x560: 0x05, 0x561: 0x05, 0x562: 0x05, 0x563: 0x05, 0x564: 0x05, 0x565: 0x05, 0x566: 0x05, 0x567: 0x05, - 0x568: 0xfa, 0x569: 0x103, 0x56b: 0x104, 0x56c: 0x105, 0x56d: 0x106, 0x56e: 0x107, - 0x57c: 0x05, 0x57d: 0x108, 0x57e: 0x109, 0x57f: 0x10a, - // Block 0x16, offset 0x580 - 0x580: 0x05, 0x581: 0x05, 0x582: 0x05, 0x583: 0x05, 0x584: 0x05, 0x585: 0x05, 0x586: 0x05, 0x587: 0x05, - 0x588: 0x05, 0x589: 0x05, 0x58a: 0x05, 0x58b: 0x05, 0x58c: 0x05, 0x58d: 0x05, 0x58e: 0x05, 0x58f: 0x05, - 0x590: 0x05, 0x591: 0x05, 0x592: 0x05, 0x593: 0x05, 0x594: 0x05, 0x595: 0x05, 0x596: 0x05, 0x597: 0x05, - 0x598: 0x05, 0x599: 0x05, 0x59a: 0x05, 0x59b: 0x05, 0x59c: 0x05, 0x59d: 0x05, 0x59e: 0x05, 0x59f: 0x10b, - 0x5a0: 0x05, 0x5a1: 0x05, 0x5a2: 0x05, 0x5a3: 0x05, 0x5a4: 0x05, 0x5a5: 0x05, 0x5a6: 0x05, 0x5a7: 0x05, - 0x5a8: 0x05, 0x5a9: 0x05, 0x5aa: 0x05, 0x5ab: 0xdd, - // Block 0x17, offset 0x5c0 - 0x5c0: 0x10c, - 0x5f0: 0x05, 0x5f1: 0x10d, 0x5f2: 0x10e, - // Block 0x18, offset 0x600 - 0x600: 0x71, 0x601: 0x71, 0x602: 0x71, 0x603: 0x10f, 0x604: 0x110, 0x605: 0x111, 0x606: 0x112, 0x607: 0x113, - 0x608: 0xc1, 0x609: 0x114, 0x60c: 0x71, 0x60d: 0x115, - 0x610: 0x71, 0x611: 0x116, 0x612: 0x117, 0x613: 0x118, 0x614: 0x119, 0x615: 0x11a, 0x616: 0x71, 0x617: 0x71, - 0x618: 0x71, 0x619: 0x71, 0x61a: 0x11b, 0x61b: 0x71, 0x61c: 0x71, 0x61d: 0x71, 0x61e: 0x71, 0x61f: 0x11c, - 0x620: 0x71, 0x621: 0x71, 0x622: 0x71, 0x623: 0x71, 0x624: 0x71, 0x625: 0x71, 0x626: 0x71, 0x627: 0x71, - 0x628: 0x11d, 0x629: 0x11e, 0x62a: 0x11f, - // Block 0x19, offset 0x640 - 0x640: 0x120, - 0x660: 0x05, 0x661: 0x05, 0x662: 0x05, 0x663: 0x121, 0x664: 0x122, 0x665: 0x123, - 0x678: 0x124, 0x679: 0x125, 0x67a: 0x126, 0x67b: 0x127, - // Block 0x1a, offset 0x680 - 0x680: 0x128, 0x681: 0x71, 0x682: 0x129, 0x683: 0x12a, 0x684: 0x12b, 0x685: 0x128, 0x686: 0x12c, 0x687: 0x12d, - 0x688: 0x12e, 0x689: 0x12f, 0x68c: 0x71, 0x68d: 0x71, 0x68e: 0x71, 0x68f: 0x71, - 0x690: 0x71, 0x691: 0x71, 0x692: 0x71, 0x693: 0x71, 0x694: 0x71, 0x695: 0x71, 0x696: 0x71, 0x697: 0x71, - 0x698: 0x71, 0x699: 0x71, 0x69a: 0x71, 0x69b: 0x130, 0x69c: 0x71, 0x69d: 0x131, 0x69e: 0x71, 0x69f: 0x132, - 0x6a0: 0x133, 0x6a1: 0x134, 0x6a2: 0x135, 0x6a4: 0x136, 0x6a5: 0x137, 0x6a6: 0x138, 0x6a7: 0x139, - // Block 0x1b, offset 0x6c0 - 0x6c0: 0x90, 0x6c1: 0x90, 0x6c2: 0x90, 0x6c3: 0x90, 0x6c4: 0x90, 0x6c5: 0x90, 0x6c6: 0x90, 0x6c7: 0x90, - 0x6c8: 0x90, 0x6c9: 0x90, 0x6ca: 0x90, 0x6cb: 0x90, 0x6cc: 0x90, 0x6cd: 0x90, 0x6ce: 0x90, 0x6cf: 0x90, - 0x6d0: 0x90, 0x6d1: 0x90, 0x6d2: 0x90, 0x6d3: 0x90, 0x6d4: 0x90, 0x6d5: 0x90, 0x6d6: 0x90, 0x6d7: 0x90, - 0x6d8: 0x90, 0x6d9: 0x90, 0x6da: 0x90, 0x6db: 0x13a, 0x6dc: 0x90, 0x6dd: 0x90, 0x6de: 0x90, 0x6df: 0x90, - 0x6e0: 0x90, 0x6e1: 0x90, 0x6e2: 0x90, 0x6e3: 0x90, 0x6e4: 0x90, 0x6e5: 0x90, 0x6e6: 0x90, 0x6e7: 0x90, - 0x6e8: 0x90, 0x6e9: 0x90, 0x6ea: 0x90, 0x6eb: 0x90, 0x6ec: 0x90, 0x6ed: 0x90, 0x6ee: 0x90, 0x6ef: 0x90, - 0x6f0: 0x90, 0x6f1: 0x90, 0x6f2: 0x90, 0x6f3: 0x90, 0x6f4: 0x90, 0x6f5: 0x90, 0x6f6: 0x90, 0x6f7: 0x90, - 0x6f8: 0x90, 0x6f9: 0x90, 0x6fa: 0x90, 0x6fb: 0x90, 0x6fc: 0x90, 0x6fd: 0x90, 0x6fe: 0x90, 0x6ff: 0x90, - // Block 0x1c, offset 0x700 - 0x700: 0x90, 0x701: 0x90, 0x702: 0x90, 0x703: 0x90, 0x704: 0x90, 0x705: 0x90, 0x706: 0x90, 0x707: 0x90, - 0x708: 0x90, 0x709: 0x90, 0x70a: 0x90, 0x70b: 0x90, 0x70c: 0x90, 0x70d: 0x90, 0x70e: 0x90, 0x70f: 0x90, - 0x710: 0x90, 0x711: 0x90, 0x712: 0x90, 0x713: 0x90, 0x714: 0x90, 0x715: 0x90, 0x716: 0x90, 0x717: 0x90, - 0x718: 0x90, 0x719: 0x90, 0x71a: 0x90, 0x71b: 0x90, 0x71c: 0x13b, 0x71d: 0x90, 0x71e: 0x90, 0x71f: 0x90, - 0x720: 0x13c, 0x721: 0x90, 0x722: 0x90, 0x723: 0x90, 0x724: 0x90, 0x725: 0x90, 0x726: 0x90, 0x727: 0x90, - 0x728: 0x90, 0x729: 0x90, 0x72a: 0x90, 0x72b: 0x90, 0x72c: 0x90, 0x72d: 0x90, 0x72e: 0x90, 0x72f: 0x90, - 0x730: 0x90, 0x731: 0x90, 0x732: 0x90, 0x733: 0x90, 0x734: 0x90, 0x735: 0x90, 0x736: 0x90, 0x737: 0x90, - 0x738: 0x90, 0x739: 0x90, 0x73a: 0x90, 0x73b: 0x90, 0x73c: 0x90, 0x73d: 0x90, 0x73e: 0x90, 0x73f: 0x90, - // Block 0x1d, offset 0x740 - 0x740: 0x90, 0x741: 0x90, 0x742: 0x90, 0x743: 0x90, 0x744: 0x90, 0x745: 0x90, 0x746: 0x90, 0x747: 0x90, - 0x748: 0x90, 0x749: 0x90, 0x74a: 0x90, 0x74b: 0x90, 0x74c: 0x90, 0x74d: 0x90, 0x74e: 0x90, 0x74f: 0x90, - 0x750: 0x90, 0x751: 0x90, 0x752: 0x90, 0x753: 0x90, 0x754: 0x90, 0x755: 0x90, 0x756: 0x90, 0x757: 0x90, - 0x758: 0x90, 0x759: 0x90, 0x75a: 0x90, 0x75b: 0x90, 0x75c: 0x90, 0x75d: 0x90, 0x75e: 0x90, 0x75f: 0x90, - 0x760: 0x90, 0x761: 0x90, 0x762: 0x90, 0x763: 0x90, 0x764: 0x90, 0x765: 0x90, 0x766: 0x90, 0x767: 0x90, - 0x768: 0x90, 0x769: 0x90, 0x76a: 0x90, 0x76b: 0x90, 0x76c: 0x90, 0x76d: 0x90, 0x76e: 0x90, 0x76f: 0x90, - 0x770: 0x90, 0x771: 0x90, 0x772: 0x90, 0x773: 0x90, 0x774: 0x90, 0x775: 0x90, 0x776: 0x90, 0x777: 0x90, - 0x778: 0x90, 0x779: 0x90, 0x77a: 0x13d, - // Block 0x1e, offset 0x780 - 0x7a0: 0x83, 0x7a1: 0x83, 0x7a2: 0x83, 0x7a3: 0x83, 0x7a4: 0x83, 0x7a5: 0x83, 0x7a6: 0x83, 0x7a7: 0x83, - 0x7a8: 0x13e, - // Block 0x1f, offset 0x7c0 - 0x7d0: 0x0e, 0x7d1: 0x0f, 0x7d2: 0x10, 0x7d3: 0x11, 0x7d4: 0x12, 0x7d6: 0x13, 0x7d7: 0x0a, - 0x7d8: 0x14, 0x7db: 0x15, 0x7dd: 0x16, 0x7de: 0x17, 0x7df: 0x18, - 0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07, - 0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x19, 0x7eb: 0x1a, 0x7ec: 0x1b, 0x7ef: 0x1c, - // Block 0x20, offset 0x800 - 0x800: 0x13f, 0x801: 0x3e, 0x804: 0x3e, 0x805: 0x3e, 0x806: 0x3e, 0x807: 0x140, - // Block 0x21, offset 0x840 - 0x840: 0x3e, 0x841: 0x3e, 0x842: 0x3e, 0x843: 0x3e, 0x844: 0x3e, 0x845: 0x3e, 0x846: 0x3e, 0x847: 0x3e, - 0x848: 0x3e, 0x849: 0x3e, 0x84a: 0x3e, 0x84b: 0x3e, 0x84c: 0x3e, 0x84d: 0x3e, 0x84e: 0x3e, 0x84f: 0x3e, - 0x850: 0x3e, 0x851: 0x3e, 0x852: 0x3e, 0x853: 0x3e, 0x854: 0x3e, 0x855: 0x3e, 0x856: 0x3e, 0x857: 0x3e, - 0x858: 0x3e, 0x859: 0x3e, 0x85a: 0x3e, 0x85b: 0x3e, 0x85c: 0x3e, 0x85d: 0x3e, 0x85e: 0x3e, 0x85f: 0x3e, - 0x860: 0x3e, 0x861: 0x3e, 0x862: 0x3e, 0x863: 0x3e, 0x864: 0x3e, 0x865: 0x3e, 0x866: 0x3e, 0x867: 0x3e, - 0x868: 0x3e, 0x869: 0x3e, 0x86a: 0x3e, 0x86b: 0x3e, 0x86c: 0x3e, 0x86d: 0x3e, 0x86e: 0x3e, 0x86f: 0x3e, - 0x870: 0x3e, 0x871: 0x3e, 0x872: 0x3e, 0x873: 0x3e, 0x874: 0x3e, 0x875: 0x3e, 0x876: 0x3e, 0x877: 0x3e, - 0x878: 0x3e, 0x879: 0x3e, 0x87a: 0x3e, 0x87b: 0x3e, 0x87c: 0x3e, 0x87d: 0x3e, 0x87e: 0x3e, 0x87f: 0x141, - // Block 0x22, offset 0x880 - 0x8a0: 0x1e, - 0x8b0: 0x0c, 0x8b1: 0x0c, 0x8b2: 0x0c, 0x8b3: 0x0c, 0x8b4: 0x0c, 0x8b5: 0x0c, 0x8b6: 0x0c, 0x8b7: 0x0c, - 0x8b8: 0x0c, 0x8b9: 0x0c, 0x8ba: 0x0c, 0x8bb: 0x0c, 0x8bc: 0x0c, 0x8bd: 0x0c, 0x8be: 0x0c, 0x8bf: 0x1f, - // Block 0x23, offset 0x8c0 - 0x8c0: 0x0c, 0x8c1: 0x0c, 0x8c2: 0x0c, 0x8c3: 0x0c, 0x8c4: 0x0c, 0x8c5: 0x0c, 0x8c6: 0x0c, 0x8c7: 0x0c, - 0x8c8: 0x0c, 0x8c9: 0x0c, 0x8ca: 0x0c, 0x8cb: 0x0c, 0x8cc: 0x0c, 0x8cd: 0x0c, 0x8ce: 0x0c, 0x8cf: 0x1f, -} - -// Total table size 25344 bytes (24KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/secure/precis/tables_test.go b/vendor/golang.org/x/text/secure/precis/tables_test.go deleted file mode 100644 index 67f5b40c..00000000 --- a/vendor/golang.org/x/text/secure/precis/tables_test.go +++ /dev/null @@ -1,69 +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 precis - -import ( - "testing" - "unicode" - "unicode/utf8" - - "golang.org/x/text/runes" - "golang.org/x/text/unicode/rangetable" -) - -type tableTest struct { - rangeTable *unicode.RangeTable - prop property -} - -var exceptions = runes.Predicate(func(r rune) bool { - switch uint32(r) { - case 0x00DF, 0x03C2, 0x06FD, 0x06FE, 0x0F0B, 0x3007, 0x00B7, 0x0375, 0x05F3, - 0x05F4, 0x30FB, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, - 0x0667, 0x0668, 0x0669, 0x06F0, 0x06F1, 0x06F2, 0x06F3, 0x06F4, 0x06F5, - 0x06F6, 0x06F7, 0x06F8, 0x06F9, 0x0640, 0x07FA, 0x302E, 0x302F, 0x3031, - 0x3032, 0x3033, 0x3034, 0x3035, 0x303B: - return true - default: - return false - } -}) - -// Ensure that certain properties were generated correctly. -func TestTable(t *testing.T) { - tests := []tableTest{ - tableTest{ - rangetable.Merge( - unicode.Lt, unicode.Nl, unicode.No, // Other letter digits - unicode.Me, // Modifiers - unicode.Zs, // Spaces - unicode.So, // Symbols - unicode.Pi, unicode.Pf, // Punctuation - ), - idDisOrFreePVal, - }, - tableTest{ - rangetable.New(0x30000, 0x30101, 0xDFFFF), - unassigned, - }, - } - - assigned := rangetable.Assigned(UnicodeVersion) - - for _, test := range tests { - rangetable.Visit(test.rangeTable, func(r rune) { - if !unicode.In(r, assigned) { - return - } - b := make([]byte, 4) - n := utf8.EncodeRune(b, r) - trieval, _ := dpTrie.lookup(b[:n]) - p := entry(trieval).property() - if p != test.prop && !exceptions.Contains(r) { - t.Errorf("%U: got %+x; want %+x", r, test.prop, p) - } - }) - } -} diff --git a/vendor/golang.org/x/text/secure/precis/transformer.go b/vendor/golang.org/x/text/secure/precis/transformer.go deleted file mode 100644 index 97ce5e75..00000000 --- a/vendor/golang.org/x/text/secure/precis/transformer.go +++ /dev/null @@ -1,32 +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 precis - -import "golang.org/x/text/transform" - -// Transformer implements the transform.Transformer interface. -type Transformer struct { - t transform.Transformer -} - -// Reset implements the transform.Transformer interface. -func (t Transformer) Reset() { t.t.Reset() } - -// Transform implements the transform.Transformer interface. -func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - return t.t.Transform(dst, src, atEOF) -} - -// Bytes returns a new byte slice with the result of applying t to b. -func (t Transformer) Bytes(b []byte) []byte { - b, _, _ = transform.Bytes(t, b) - return b -} - -// String returns a string with the result of applying t to s. -func (t Transformer) String(s string) string { - s, _, _ = transform.String(t, s) - return s -} diff --git a/vendor/golang.org/x/text/secure/precis/trieval.go b/vendor/golang.org/x/text/secure/precis/trieval.go deleted file mode 100644 index 4833f962..00000000 --- a/vendor/golang.org/x/text/secure/precis/trieval.go +++ /dev/null @@ -1,64 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package precis - -// entry is the entry of a trie table -// 7..6 property (unassigned, disallowed, maybe, valid) -// 5..0 category -type entry uint8 - -const ( - propShift = 6 - propMask = 0xc0 - catMask = 0x3f -) - -func (e entry) property() property { return property(e & propMask) } -func (e entry) category() category { return category(e & catMask) } - -type property uint8 - -// The order of these constants matter. A Profile may consider runes to be -// allowed either from pValid or idDisOrFreePVal. -const ( - unassigned property = iota << propShift - disallowed - idDisOrFreePVal // disallowed for Identifier, pValid for FreeForm - pValid -) - -// compute permutations of all properties and specialCategories. -type category uint8 - -const ( - other category = iota - - // Special rune types - joiningL - joiningD - joiningT - joiningR - viramaModifier - viramaJoinT // Virama + JoiningT - latinSmallL // U+006c - greek - greekJoinT // Greek + JoiningT - hebrew - hebrewJoinT // Hebrew + JoiningT - japanese // hirigana, katakana, han - - // Special rune types associated with contextual rules defined in - // https://tools.ietf.org/html/rfc5892#appendix-A. - // ContextO - zeroWidthNonJoiner // rule 1 - zeroWidthJoiner // rule 2 - // ContextJ - middleDot // rule 3 - greekLowerNumeralSign // rule 4 - hebrewPreceding // rule 5 and 6 - katakanaMiddleDot // rule 7 - arabicIndicDigit // rule 8 - extendedArabicIndicDigit // rule 9 - - numCategories -) diff --git a/vendor/golang.org/x/text/transform/examples_test.go b/vendor/golang.org/x/text/transform/examples_test.go deleted file mode 100644 index f2e284db..00000000 --- a/vendor/golang.org/x/text/transform/examples_test.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package transform_test - -import ( - "fmt" - "unicode" - - "golang.org/x/text/transform" - "golang.org/x/text/unicode/norm" -) - -func ExampleRemoveFunc() { - input := []byte(`tschüß; до свидания`) - - b := make([]byte, len(input)) - - t := transform.RemoveFunc(unicode.IsSpace) - n, _, _ := t.Transform(b, input, true) - fmt.Println(string(b[:n])) - - t = transform.RemoveFunc(func(r rune) bool { - return !unicode.Is(unicode.Latin, r) - }) - n, _, _ = t.Transform(b, input, true) - fmt.Println(string(b[:n])) - - n, _, _ = t.Transform(b, norm.NFD.Bytes(input), true) - fmt.Println(string(b[:n])) - - // Output: - // tschüß;досвидания - // tschüß - // tschuß -} diff --git a/vendor/golang.org/x/text/transform/transform_test.go b/vendor/golang.org/x/text/transform/transform_test.go deleted file mode 100644 index 771633d1..00000000 --- a/vendor/golang.org/x/text/transform/transform_test.go +++ /dev/null @@ -1,1317 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package transform - -import ( - "bytes" - "errors" - "fmt" - "io/ioutil" - "strconv" - "strings" - "testing" - "time" - "unicode/utf8" - - "golang.org/x/text/internal/testtext" -) - -type lowerCaseASCII struct{ NopResetter } - -func (lowerCaseASCII) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := len(src) - if n > len(dst) { - n, err = len(dst), ErrShortDst - } - for i, c := range src[:n] { - if 'A' <= c && c <= 'Z' { - c += 'a' - 'A' - } - dst[i] = c - } - return n, n, err -} - -// lowerCaseASCIILookahead lowercases the string and reports ErrShortSrc as long -// as the input is not atEOF. -type lowerCaseASCIILookahead struct{ NopResetter } - -func (lowerCaseASCIILookahead) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := len(src) - if n > len(dst) { - n, err = len(dst), ErrShortDst - } - for i, c := range src[:n] { - if 'A' <= c && c <= 'Z' { - c += 'a' - 'A' - } - dst[i] = c - } - if !atEOF { - err = ErrShortSrc - } - return n, n, err -} - -var errYouMentionedX = errors.New("you mentioned X") - -type dontMentionX struct{ NopResetter } - -func (dontMentionX) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := len(src) - if n > len(dst) { - n, err = len(dst), ErrShortDst - } - for i, c := range src[:n] { - if c == 'X' { - return i, i, errYouMentionedX - } - dst[i] = c - } - return n, n, err -} - -var errAtEnd = errors.New("error after all text") - -type errorAtEnd struct{ NopResetter } - -func (errorAtEnd) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := copy(dst, src) - if n < len(src) { - return n, n, ErrShortDst - } - if atEOF { - return n, n, errAtEnd - } - return n, n, nil -} - -type replaceWithConstant struct { - replacement string - written int -} - -func (t *replaceWithConstant) Reset() { - t.written = 0 -} - -func (t *replaceWithConstant) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if atEOF { - nDst = copy(dst, t.replacement[t.written:]) - t.written += nDst - if t.written < len(t.replacement) { - err = ErrShortDst - } - } - return nDst, len(src), err -} - -type addAnXAtTheEnd struct{ NopResetter } - -func (addAnXAtTheEnd) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := copy(dst, src) - if n < len(src) { - return n, n, ErrShortDst - } - if !atEOF { - return n, n, nil - } - if len(dst) == n { - return n, n, ErrShortDst - } - dst[n] = 'X' - return n + 1, n, nil -} - -// doublerAtEOF is a strange Transformer that transforms "this" to "tthhiiss", -// but only if atEOF is true. -type doublerAtEOF struct{ NopResetter } - -func (doublerAtEOF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if !atEOF { - return 0, 0, ErrShortSrc - } - for i, c := range src { - if 2*i+2 >= len(dst) { - return 2 * i, i, ErrShortDst - } - dst[2*i+0] = c - dst[2*i+1] = c - } - return 2 * len(src), len(src), nil -} - -// rleDecode and rleEncode implement a toy run-length encoding: "aabbbbbbbbbb" -// is encoded as "2a10b". The decoding is assumed to not contain any numbers. - -type rleDecode struct{ NopResetter } - -func (rleDecode) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { -loop: - for len(src) > 0 { - n := 0 - for i, c := range src { - if '0' <= c && c <= '9' { - n = 10*n + int(c-'0') - continue - } - if i == 0 { - return nDst, nSrc, errors.New("rleDecode: bad input") - } - if n > len(dst) { - return nDst, nSrc, ErrShortDst - } - for j := 0; j < n; j++ { - dst[j] = c - } - dst, src = dst[n:], src[i+1:] - nDst, nSrc = nDst+n, nSrc+i+1 - continue loop - } - if atEOF { - return nDst, nSrc, errors.New("rleDecode: bad input") - } - return nDst, nSrc, ErrShortSrc - } - return nDst, nSrc, nil -} - -type rleEncode struct { - NopResetter - - // allowStutter means that "xxxxxxxx" can be encoded as "5x3x" - // instead of always as "8x". - allowStutter bool -} - -func (e rleEncode) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for len(src) > 0 { - n, c0 := len(src), src[0] - for i, c := range src[1:] { - if c != c0 { - n = i + 1 - break - } - } - if n == len(src) && !atEOF && !e.allowStutter { - return nDst, nSrc, ErrShortSrc - } - s := strconv.Itoa(n) - if len(s) >= len(dst) { - return nDst, nSrc, ErrShortDst - } - copy(dst, s) - dst[len(s)] = c0 - dst, src = dst[len(s)+1:], src[n:] - nDst, nSrc = nDst+len(s)+1, nSrc+n - } - return nDst, nSrc, nil -} - -// trickler consumes all input bytes, but writes a single byte at a time to dst. -type trickler []byte - -func (t *trickler) Reset() { - *t = nil -} - -func (t *trickler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - *t = append(*t, src...) - if len(*t) == 0 { - return 0, 0, nil - } - if len(dst) == 0 { - return 0, len(src), ErrShortDst - } - dst[0] = (*t)[0] - *t = (*t)[1:] - if len(*t) > 0 { - err = ErrShortDst - } - return 1, len(src), err -} - -// delayedTrickler is like trickler, but delays writing output to dst. This is -// highly unlikely to be relevant in practice, but it seems like a good idea -// to have some tolerance as long as progress can be detected. -type delayedTrickler []byte - -func (t *delayedTrickler) Reset() { - *t = nil -} - -func (t *delayedTrickler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - if len(*t) > 0 && len(dst) > 0 { - dst[0] = (*t)[0] - *t = (*t)[1:] - nDst = 1 - } - *t = append(*t, src...) - if len(*t) > 0 { - err = ErrShortDst - } - return nDst, len(src), err -} - -type testCase struct { - desc string - t Transformer - src string - dstSize int - srcSize int - ioSize int - wantStr string - wantErr error - wantIter int // number of iterations taken; 0 means we don't care. -} - -func (t testCase) String() string { - return tstr(t.t) + "; " + t.desc -} - -func tstr(t Transformer) string { - if stringer, ok := t.(fmt.Stringer); ok { - return stringer.String() - } - s := fmt.Sprintf("%T", t) - return s[1+strings.Index(s, "."):] -} - -func (c chain) String() string { - buf := &bytes.Buffer{} - buf.WriteString("Chain(") - for i, l := range c.link[:len(c.link)-1] { - if i != 0 { - fmt.Fprint(buf, ", ") - } - buf.WriteString(tstr(l.t)) - } - buf.WriteString(")") - return buf.String() -} - -var testCases = []testCase{ - { - desc: "empty", - t: lowerCaseASCII{}, - src: "", - dstSize: 100, - srcSize: 100, - wantStr: "", - }, - - { - desc: "basic", - t: lowerCaseASCII{}, - src: "Hello WORLD.", - dstSize: 100, - srcSize: 100, - wantStr: "hello world.", - }, - - { - desc: "small dst", - t: lowerCaseASCII{}, - src: "Hello WORLD.", - dstSize: 3, - srcSize: 100, - wantStr: "hello world.", - }, - - { - desc: "small src", - t: lowerCaseASCII{}, - src: "Hello WORLD.", - dstSize: 100, - srcSize: 4, - wantStr: "hello world.", - }, - - { - desc: "small buffers", - t: lowerCaseASCII{}, - src: "Hello WORLD.", - dstSize: 3, - srcSize: 4, - wantStr: "hello world.", - }, - - { - desc: "very small buffers", - t: lowerCaseASCII{}, - src: "Hello WORLD.", - dstSize: 1, - srcSize: 1, - wantStr: "hello world.", - }, - - { - desc: "small dst with lookahead", - t: lowerCaseASCIILookahead{}, - src: "Hello WORLD.", - dstSize: 3, - srcSize: 100, - wantStr: "hello world.", - }, - - { - desc: "small src with lookahead", - t: lowerCaseASCIILookahead{}, - src: "Hello WORLD.", - dstSize: 100, - srcSize: 4, - wantStr: "hello world.", - }, - - { - desc: "small buffers with lookahead", - t: lowerCaseASCIILookahead{}, - src: "Hello WORLD.", - dstSize: 3, - srcSize: 4, - wantStr: "hello world.", - }, - - { - desc: "very small buffers with lookahead", - t: lowerCaseASCIILookahead{}, - src: "Hello WORLD.", - dstSize: 1, - srcSize: 2, - wantStr: "hello world.", - }, - - { - desc: "user error", - t: dontMentionX{}, - src: "The First Rule of Transform Club: don't mention Mister X, ever.", - dstSize: 100, - srcSize: 100, - wantStr: "The First Rule of Transform Club: don't mention Mister ", - wantErr: errYouMentionedX, - }, - - { - desc: "user error at end", - t: errorAtEnd{}, - src: "All goes well until it doesn't.", - dstSize: 100, - srcSize: 100, - wantStr: "All goes well until it doesn't.", - wantErr: errAtEnd, - }, - - { - desc: "user error at end, incremental", - t: errorAtEnd{}, - src: "All goes well until it doesn't.", - dstSize: 10, - srcSize: 10, - wantStr: "All goes well until it doesn't.", - wantErr: errAtEnd, - }, - - { - desc: "replace entire non-empty string with one byte", - t: &replaceWithConstant{replacement: "X"}, - src: "none of this will be copied", - dstSize: 1, - srcSize: 10, - wantStr: "X", - }, - - { - desc: "replace entire empty string with one byte", - t: &replaceWithConstant{replacement: "X"}, - src: "", - dstSize: 1, - srcSize: 10, - wantStr: "X", - }, - - { - desc: "replace entire empty string with seven bytes", - t: &replaceWithConstant{replacement: "ABCDEFG"}, - src: "", - dstSize: 3, - srcSize: 10, - wantStr: "ABCDEFG", - }, - - { - desc: "add an X (initialBufSize-1)", - t: addAnXAtTheEnd{}, - src: aaa[:initialBufSize-1], - dstSize: 10, - srcSize: 10, - wantStr: aaa[:initialBufSize-1] + "X", - }, - - { - desc: "add an X (initialBufSize+0)", - t: addAnXAtTheEnd{}, - src: aaa[:initialBufSize+0], - dstSize: 10, - srcSize: 10, - wantStr: aaa[:initialBufSize+0] + "X", - }, - - { - desc: "add an X (initialBufSize+1)", - t: addAnXAtTheEnd{}, - src: aaa[:initialBufSize+1], - dstSize: 10, - srcSize: 10, - wantStr: aaa[:initialBufSize+1] + "X", - }, - - { - desc: "small buffers", - t: dontMentionX{}, - src: "The First Rule of Transform Club: don't mention Mister X, ever.", - dstSize: 10, - srcSize: 10, - wantStr: "The First Rule of Transform Club: don't mention Mister ", - wantErr: errYouMentionedX, - }, - - { - desc: "very small buffers", - t: dontMentionX{}, - src: "The First Rule of Transform Club: don't mention Mister X, ever.", - dstSize: 1, - srcSize: 1, - wantStr: "The First Rule of Transform Club: don't mention Mister ", - wantErr: errYouMentionedX, - }, - - { - desc: "only transform at EOF", - t: doublerAtEOF{}, - src: "this", - dstSize: 100, - srcSize: 100, - wantStr: "tthhiiss", - }, - - { - desc: "basic", - t: rleDecode{}, - src: "1a2b3c10d11e0f1g", - dstSize: 100, - srcSize: 100, - wantStr: "abbcccddddddddddeeeeeeeeeeeg", - }, - - { - desc: "long", - t: rleDecode{}, - src: "12a23b34c45d56e99z", - dstSize: 100, - srcSize: 100, - wantStr: strings.Repeat("a", 12) + - strings.Repeat("b", 23) + - strings.Repeat("c", 34) + - strings.Repeat("d", 45) + - strings.Repeat("e", 56) + - strings.Repeat("z", 99), - }, - - { - desc: "tight buffers", - t: rleDecode{}, - src: "1a2b3c10d11e0f1g", - dstSize: 11, - srcSize: 3, - wantStr: "abbcccddddddddddeeeeeeeeeeeg", - }, - - { - desc: "short dst", - t: rleDecode{}, - src: "1a2b3c10d11e0f1g", - dstSize: 10, - srcSize: 3, - wantStr: "abbcccdddddddddd", - wantErr: ErrShortDst, - }, - - { - desc: "short src", - t: rleDecode{}, - src: "1a2b3c10d11e0f1g", - dstSize: 11, - srcSize: 2, - ioSize: 2, - wantStr: "abbccc", - wantErr: ErrShortSrc, - }, - - { - desc: "basic", - t: rleEncode{}, - src: "abbcccddddddddddeeeeeeeeeeeg", - dstSize: 100, - srcSize: 100, - wantStr: "1a2b3c10d11e1g", - }, - - { - desc: "long", - t: rleEncode{}, - src: strings.Repeat("a", 12) + - strings.Repeat("b", 23) + - strings.Repeat("c", 34) + - strings.Repeat("d", 45) + - strings.Repeat("e", 56) + - strings.Repeat("z", 99), - dstSize: 100, - srcSize: 100, - wantStr: "12a23b34c45d56e99z", - }, - - { - desc: "tight buffers", - t: rleEncode{}, - src: "abbcccddddddddddeeeeeeeeeeeg", - dstSize: 3, - srcSize: 12, - wantStr: "1a2b3c10d11e1g", - }, - - { - desc: "short dst", - t: rleEncode{}, - src: "abbcccddddddddddeeeeeeeeeeeg", - dstSize: 2, - srcSize: 12, - wantStr: "1a2b3c", - wantErr: ErrShortDst, - }, - - { - desc: "short src", - t: rleEncode{}, - src: "abbcccddddddddddeeeeeeeeeeeg", - dstSize: 3, - srcSize: 11, - ioSize: 11, - wantStr: "1a2b3c10d", - wantErr: ErrShortSrc, - }, - - { - desc: "allowStutter = false", - t: rleEncode{allowStutter: false}, - src: "aaaabbbbbbbbccccddddd", - dstSize: 10, - srcSize: 10, - wantStr: "4a8b4c5d", - }, - - { - desc: "allowStutter = true", - t: rleEncode{allowStutter: true}, - src: "aaaabbbbbbbbccccddddd", - dstSize: 10, - srcSize: 10, - ioSize: 10, - wantStr: "4a6b2b4c4d1d", - }, - - { - desc: "trickler", - t: &trickler{}, - src: "abcdefghijklm", - dstSize: 3, - srcSize: 15, - wantStr: "abcdefghijklm", - }, - - { - desc: "delayedTrickler", - t: &delayedTrickler{}, - src: "abcdefghijklm", - dstSize: 3, - srcSize: 15, - wantStr: "abcdefghijklm", - }, -} - -func TestReader(t *testing.T) { - for _, tc := range testCases { - testtext.Run(t, tc.desc, func(t *testing.T) { - r := NewReader(strings.NewReader(tc.src), tc.t) - // Differently sized dst and src buffers are not part of the - // exported API. We override them manually. - r.dst = make([]byte, tc.dstSize) - r.src = make([]byte, tc.srcSize) - got, err := ioutil.ReadAll(r) - str := string(got) - if str != tc.wantStr || err != tc.wantErr { - t.Errorf("\ngot %q, %v\nwant %q, %v", str, err, tc.wantStr, tc.wantErr) - } - }) - } -} - -func TestWriter(t *testing.T) { - tests := append(testCases, chainTests()...) - for _, tc := range tests { - sizes := []int{1, 2, 3, 4, 5, 10, 100, 1000} - if tc.ioSize > 0 { - sizes = []int{tc.ioSize} - } - for _, sz := range sizes { - testtext.Run(t, fmt.Sprintf("%s/%d", tc.desc, sz), func(t *testing.T) { - bb := &bytes.Buffer{} - w := NewWriter(bb, tc.t) - // Differently sized dst and src buffers are not part of the - // exported API. We override them manually. - w.dst = make([]byte, tc.dstSize) - w.src = make([]byte, tc.srcSize) - src := make([]byte, sz) - var err error - for b := tc.src; len(b) > 0 && err == nil; { - n := copy(src, b) - b = b[n:] - m := 0 - m, err = w.Write(src[:n]) - if m != n && err == nil { - t.Errorf("did not consume all bytes %d < %d", m, n) - } - } - if err == nil { - err = w.Close() - } - str := bb.String() - if str != tc.wantStr || err != tc.wantErr { - t.Errorf("\ngot %q, %v\nwant %q, %v", str, err, tc.wantStr, tc.wantErr) - } - }) - } - } -} - -func TestNop(t *testing.T) { - testCases := []struct { - str string - dstSize int - err error - }{ - {"", 0, nil}, - {"", 10, nil}, - {"a", 0, ErrShortDst}, - {"a", 1, nil}, - {"a", 10, nil}, - } - for i, tc := range testCases { - dst := make([]byte, tc.dstSize) - nDst, nSrc, err := Nop.Transform(dst, []byte(tc.str), true) - want := tc.str - if tc.dstSize < len(want) { - want = want[:tc.dstSize] - } - if got := string(dst[:nDst]); got != want || err != tc.err || nSrc != nDst { - t.Errorf("%d:\ngot %q, %d, %v\nwant %q, %d, %v", i, got, nSrc, err, want, nDst, tc.err) - } - } -} - -func TestDiscard(t *testing.T) { - testCases := []struct { - str string - dstSize int - }{ - {"", 0}, - {"", 10}, - {"a", 0}, - {"ab", 10}, - } - for i, tc := range testCases { - nDst, nSrc, err := Discard.Transform(make([]byte, tc.dstSize), []byte(tc.str), true) - if nDst != 0 || nSrc != len(tc.str) || err != nil { - t.Errorf("%d:\ngot %q, %d, %v\nwant 0, %d, nil", i, nDst, nSrc, err, len(tc.str)) - } - } -} - -// mkChain creates a Chain transformer. x must be alternating between transformer -// and bufSize, like T, (sz, T)* -func mkChain(x ...interface{}) *chain { - t := []Transformer{} - for i := 0; i < len(x); i += 2 { - t = append(t, x[i].(Transformer)) - } - c := Chain(t...).(*chain) - for i, j := 1, 1; i < len(x); i, j = i+2, j+1 { - c.link[j].b = make([]byte, x[i].(int)) - } - return c -} - -func chainTests() []testCase { - return []testCase{ - { - desc: "nil error", - t: mkChain(rleEncode{}, 100, lowerCaseASCII{}), - src: "ABB", - dstSize: 100, - srcSize: 100, - wantStr: "1a2b", - wantErr: nil, - wantIter: 1, - }, - - { - desc: "short dst buffer", - t: mkChain(lowerCaseASCII{}, 3, rleDecode{}), - src: "1a2b3c10d11e0f1g", - dstSize: 10, - srcSize: 3, - wantStr: "abbcccdddddddddd", - wantErr: ErrShortDst, - }, - - { - desc: "short internal dst buffer", - t: mkChain(lowerCaseASCII{}, 3, rleDecode{}, 10, Nop), - src: "1a2b3c10d11e0f1g", - dstSize: 100, - srcSize: 3, - wantStr: "abbcccdddddddddd", - wantErr: errShortInternal, - }, - - { - desc: "short internal dst buffer from input", - t: mkChain(rleDecode{}, 10, Nop), - src: "1a2b3c10d11e0f1g", - dstSize: 100, - srcSize: 3, - wantStr: "abbcccdddddddddd", - wantErr: errShortInternal, - }, - - { - desc: "empty short internal dst buffer", - t: mkChain(lowerCaseASCII{}, 3, rleDecode{}, 10, Nop), - src: "4a7b11e0f1g", - dstSize: 100, - srcSize: 3, - wantStr: "aaaabbbbbbb", - wantErr: errShortInternal, - }, - - { - desc: "empty short internal dst buffer from input", - t: mkChain(rleDecode{}, 10, Nop), - src: "4a7b11e0f1g", - dstSize: 100, - srcSize: 3, - wantStr: "aaaabbbbbbb", - wantErr: errShortInternal, - }, - - { - desc: "short internal src buffer after full dst buffer", - t: mkChain(Nop, 5, rleEncode{}, 10, Nop), - src: "cccccddddd", - dstSize: 100, - srcSize: 100, - wantStr: "", - wantErr: errShortInternal, - wantIter: 1, - }, - - { - desc: "short internal src buffer after short dst buffer; test lastFull", - t: mkChain(rleDecode{}, 5, rleEncode{}, 4, Nop), - src: "2a1b4c6d", - dstSize: 100, - srcSize: 100, - wantStr: "2a1b", - wantErr: errShortInternal, - }, - - { - desc: "short internal src buffer after successful complete fill", - t: mkChain(Nop, 3, rleDecode{}), - src: "123a4b", - dstSize: 4, - srcSize: 3, - wantStr: "", - wantErr: errShortInternal, - wantIter: 1, - }, - - { - desc: "short internal src buffer after short dst buffer; test lastFull", - t: mkChain(rleDecode{}, 5, rleEncode{}), - src: "2a1b4c6d", - dstSize: 4, - srcSize: 100, - wantStr: "2a1b", - wantErr: errShortInternal, - }, - - { - desc: "short src buffer", - t: mkChain(rleEncode{}, 5, Nop), - src: "abbcccddddeeeee", - dstSize: 4, - srcSize: 4, - ioSize: 4, - wantStr: "1a2b3c", - wantErr: ErrShortSrc, - }, - - { - desc: "process all in one go", - t: mkChain(rleEncode{}, 5, Nop), - src: "abbcccddddeeeeeffffff", - dstSize: 100, - srcSize: 100, - wantStr: "1a2b3c4d5e6f", - wantErr: nil, - wantIter: 1, - }, - - { - desc: "complete processing downstream after error", - t: mkChain(dontMentionX{}, 2, rleDecode{}, 5, Nop), - src: "3a4b5eX", - dstSize: 100, - srcSize: 100, - ioSize: 100, - wantStr: "aaabbbbeeeee", - wantErr: errYouMentionedX, - }, - - { - desc: "return downstream fatal errors first (followed by short dst)", - t: mkChain(dontMentionX{}, 8, rleDecode{}, 4, Nop), - src: "3a4b5eX", - dstSize: 100, - srcSize: 100, - ioSize: 100, - wantStr: "aaabbbb", - wantErr: errShortInternal, - }, - - { - desc: "return downstream fatal errors first (followed by short src)", - t: mkChain(dontMentionX{}, 5, Nop, 1, rleDecode{}), - src: "1a5bX", - dstSize: 100, - srcSize: 100, - ioSize: 100, - wantStr: "", - wantErr: errShortInternal, - }, - - { - desc: "short internal", - t: mkChain(Nop, 11, rleEncode{}, 3, Nop), - src: "abbcccddddddddddeeeeeeeeeeeg", - dstSize: 3, - srcSize: 100, - wantStr: "1a2b3c10d", - wantErr: errShortInternal, - }, - } -} - -func doTransform(tc testCase) (res string, iter int, err error) { - tc.t.Reset() - dst := make([]byte, tc.dstSize) - out, in := make([]byte, 0, 2*len(tc.src)), []byte(tc.src) - for { - iter++ - src, atEOF := in, true - if len(src) > tc.srcSize { - src, atEOF = src[:tc.srcSize], false - } - nDst, nSrc, err := tc.t.Transform(dst, src, atEOF) - out = append(out, dst[:nDst]...) - in = in[nSrc:] - switch { - case err == nil && len(in) != 0: - case err == ErrShortSrc && nSrc > 0: - case err == ErrShortDst && (nDst > 0 || nSrc > 0): - default: - return string(out), iter, err - } - } -} - -func TestChain(t *testing.T) { - if c, ok := Chain().(nop); !ok { - t.Errorf("empty chain: %v; want Nop", c) - } - - // Test Chain for a single Transformer. - for _, tc := range testCases { - tc.t = Chain(tc.t) - str, _, err := doTransform(tc) - if str != tc.wantStr || err != tc.wantErr { - t.Errorf("%s:\ngot %q, %v\nwant %q, %v", tc, str, err, tc.wantStr, tc.wantErr) - } - } - - tests := chainTests() - sizes := []int{1, 2, 3, 4, 5, 7, 10, 100, 1000} - addTest := func(tc testCase, t *chain) { - if t.link[0].t != tc.t && tc.wantErr == ErrShortSrc { - tc.wantErr = errShortInternal - } - if t.link[len(t.link)-2].t != tc.t && tc.wantErr == ErrShortDst { - tc.wantErr = errShortInternal - } - tc.t = t - tests = append(tests, tc) - } - for _, tc := range testCases { - for _, sz := range sizes { - tt := tc - tt.dstSize = sz - addTest(tt, mkChain(tc.t, tc.dstSize, Nop)) - addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 2, Nop)) - addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop)) - if sz >= tc.dstSize && (tc.wantErr != ErrShortDst || sz == tc.dstSize) { - addTest(tt, mkChain(Nop, tc.srcSize, tc.t)) - addTest(tt, mkChain(Nop, 100, Nop, tc.srcSize, tc.t)) - } - } - } - for _, tc := range testCases { - tt := tc - tt.dstSize = 1 - tt.wantStr = "" - addTest(tt, mkChain(tc.t, tc.dstSize, Discard)) - addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Discard)) - addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, tc.dstSize, Discard)) - } - for _, tc := range testCases { - tt := tc - tt.dstSize = 100 - tt.wantStr = strings.Replace(tc.src, "0f", "", -1) - // Chain encoders and decoders. - if _, ok := tc.t.(rleEncode); ok && tc.wantErr == nil { - addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 1000, rleDecode{})) - addTest(tt, mkChain(tc.t, tc.dstSize, Nop, tc.dstSize, rleDecode{})) - addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleDecode{})) - // decoding needs larger destinations - addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, rleDecode{}, 100, Nop)) - addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleDecode{}, 100, Nop)) - } else if _, ok := tc.t.(rleDecode); ok && tc.wantErr == nil { - // The internal buffer size may need to be the sum of the maximum segment - // size of the two encoders! - addTest(tt, mkChain(tc.t, 2*tc.dstSize, rleEncode{})) - addTest(tt, mkChain(tc.t, tc.dstSize, Nop, 101, rleEncode{})) - addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 100, rleEncode{})) - addTest(tt, mkChain(Nop, tc.srcSize, tc.t, tc.dstSize, Nop, 200, rleEncode{}, 100, Nop)) - } - } - for _, tc := range tests { - str, iter, err := doTransform(tc) - mi := tc.wantIter != 0 && tc.wantIter != iter - if str != tc.wantStr || err != tc.wantErr || mi { - t.Errorf("%s:\ngot iter:%d, %q, %v\nwant iter:%d, %q, %v", tc, iter, str, err, tc.wantIter, tc.wantStr, tc.wantErr) - } - break - } -} - -func TestRemoveFunc(t *testing.T) { - filter := RemoveFunc(func(r rune) bool { - return strings.IndexRune("ab\u0300\u1234,", r) != -1 - }) - tests := []testCase{ - { - src: ",", - wantStr: "", - }, - - { - src: "c", - wantStr: "c", - }, - - { - src: "\u2345", - wantStr: "\u2345", - }, - - { - src: "tschüß", - wantStr: "tschüß", - }, - - { - src: ",до,свидания,", - wantStr: "досвидания", - }, - - { - src: "a\xbd\xb2=\xbc ⌘", - wantStr: "\uFFFD\uFFFD=\uFFFD ⌘", - }, - - { - // If we didn't replace illegal bytes with RuneError, the result - // would be \u0300 or the code would need to be more complex. - src: "\xcc\u0300\x80", - wantStr: "\uFFFD\uFFFD", - }, - - { - src: "\xcc\u0300\x80", - dstSize: 3, - wantStr: "\uFFFD\uFFFD", - wantIter: 2, - }, - - { - // Test a long buffer greater than the internal buffer size - src: "hello\xcc\xcc\xccworld", - srcSize: 13, - wantStr: "hello\uFFFD\uFFFD\uFFFDworld", - wantIter: 1, - }, - - { - src: "\u2345", - dstSize: 2, - wantStr: "", - wantErr: ErrShortDst, - }, - - { - src: "\xcc", - dstSize: 2, - wantStr: "", - wantErr: ErrShortDst, - }, - - { - src: "\u0300", - dstSize: 2, - srcSize: 1, - wantStr: "", - wantErr: ErrShortSrc, - }, - - { - t: RemoveFunc(func(r rune) bool { - return r == utf8.RuneError - }), - src: "\xcc\u0300\x80", - wantStr: "\u0300", - }, - } - - for _, tc := range tests { - tc.desc = tc.src - if tc.t == nil { - tc.t = filter - } - if tc.dstSize == 0 { - tc.dstSize = 100 - } - if tc.srcSize == 0 { - tc.srcSize = 100 - } - str, iter, err := doTransform(tc) - mi := tc.wantIter != 0 && tc.wantIter != iter - if str != tc.wantStr || err != tc.wantErr || mi { - t.Errorf("%+q:\ngot iter:%d, %+q, %v\nwant iter:%d, %+q, %v", tc.src, iter, str, err, tc.wantIter, tc.wantStr, tc.wantErr) - } - - tc.src = str - idem, _, _ := doTransform(tc) - if str != idem { - t.Errorf("%+q: found %+q; want %+q", tc.src, idem, str) - } - } -} - -func testString(t *testing.T, f func(Transformer, string) (string, int, error)) { - for _, tt := range append(testCases, chainTests()...) { - if tt.desc == "allowStutter = true" { - // We don't have control over the buffer size, so we eliminate tests - // that depend on a specific buffer size being set. - continue - } - if tt.wantErr == ErrShortDst || tt.wantErr == ErrShortSrc { - // The result string will be different. - continue - } - testtext.Run(t, tt.desc, func(t *testing.T) { - got, n, err := f(tt.t, tt.src) - if tt.wantErr != err { - t.Errorf("error: got %v; want %v", err, tt.wantErr) - } - // Check that err == nil implies that n == len(tt.src). Note that vice - // versa isn't necessarily true. - if err == nil && n != len(tt.src) { - t.Errorf("err == nil: got %d bytes, want %d", n, err) - } - if got != tt.wantStr { - t.Errorf("string: got %q; want %q", got, tt.wantStr) - } - }) - } -} - -func TestBytes(t *testing.T) { - testString(t, func(z Transformer, s string) (string, int, error) { - b, n, err := Bytes(z, []byte(s)) - return string(b), n, err - }) -} - -func TestAppend(t *testing.T) { - // Create a bunch of subtests for different buffer sizes. - testCases := [][]byte{ - nil, - make([]byte, 0, 0), - make([]byte, 0, 1), - make([]byte, 1, 1), - make([]byte, 1, 5), - make([]byte, 100, 100), - make([]byte, 100, 200), - } - for _, tc := range testCases { - testString(t, func(z Transformer, s string) (string, int, error) { - b, n, err := Append(z, tc, []byte(s)) - return string(b[len(tc):]), n, err - }) - } -} - -func TestString(t *testing.T) { - testtext.Run(t, "transform", func(t *testing.T) { testString(t, String) }) - - // Overrun the internal destination buffer. - for i, s := range []string{ - aaa[:1*initialBufSize-1], - aaa[:1*initialBufSize+0], - aaa[:1*initialBufSize+1], - AAA[:1*initialBufSize-1], - AAA[:1*initialBufSize+0], - AAA[:1*initialBufSize+1], - AAA[:2*initialBufSize-1], - AAA[:2*initialBufSize+0], - AAA[:2*initialBufSize+1], - aaa[:1*initialBufSize-2] + "A", - aaa[:1*initialBufSize-1] + "A", - aaa[:1*initialBufSize+0] + "A", - aaa[:1*initialBufSize+1] + "A", - } { - testtext.Run(t, fmt.Sprint("dst buffer test using lower/", i), func(t *testing.T) { - got, _, _ := String(lowerCaseASCII{}, s) - if want := strings.ToLower(s); got != want { - t.Errorf("got %s (%d); want %s (%d)", got, len(got), want, len(want)) - } - }) - } - - // Overrun the internal source buffer. - for i, s := range []string{ - aaa[:1*initialBufSize-1], - aaa[:1*initialBufSize+0], - aaa[:1*initialBufSize+1], - aaa[:2*initialBufSize+1], - aaa[:2*initialBufSize+0], - aaa[:2*initialBufSize+1], - } { - testtext.Run(t, fmt.Sprint("src buffer test using rleEncode/", i), func(t *testing.T) { - got, _, _ := String(rleEncode{}, s) - if want := fmt.Sprintf("%da", len(s)); got != want { - t.Errorf("got %s (%d); want %s (%d)", got, len(got), want, len(want)) - } - }) - } - - // Test allocations for non-changing strings. - // Note we still need to allocate a single buffer. - for i, s := range []string{ - "", - "123456789", - aaa[:initialBufSize-1], - aaa[:initialBufSize+0], - aaa[:initialBufSize+1], - aaa[:10*initialBufSize], - } { - testtext.Run(t, fmt.Sprint("alloc/", i), func(t *testing.T) { - if n := testtext.AllocsPerRun(5, func() { String(&lowerCaseASCIILookahead{}, s) }); n > 1 { - t.Errorf("#allocs was %f; want 1", n) - } - }) - } -} - -// TestBytesAllocation tests that buffer growth stays limited with the trickler -// transformer, which behaves oddly but within spec. In case buffer growth is -// not correctly handled, the test will either panic with a failed allocation or -// thrash. To ensure the tests terminate under the last condition, we time out -// after some sufficiently long period of time. -func TestBytesAllocation(t *testing.T) { - done := make(chan bool) - go func() { - in := bytes.Repeat([]byte{'a'}, 1000) - tr := trickler(make([]byte, 1)) - Bytes(&tr, in) - done <- true - }() - select { - case <-done: - case <-time.After(3 * time.Second): - t.Error("time out, likely due to excessive allocation") - } -} - -// TestStringAllocation tests that buffer growth stays limited with the trickler -// transformer, which behaves oddly but within spec. In case buffer growth is -// not correctly handled, the test will either panic with a failed allocation or -// thrash. To ensure the tests terminate under the last condition, we time out -// after some sufficiently long period of time. -func TestStringAllocation(t *testing.T) { - done := make(chan bool) - go func() { - tr := trickler(make([]byte, 1)) - String(&tr, aaa[:1000]) - done <- true - }() - select { - case <-done: - case <-time.After(3 * time.Second): - t.Error("time out, likely due to excessive allocation") - } -} - -func BenchmarkStringLowerEmpty(b *testing.B) { - for i := 0; i < b.N; i++ { - String(&lowerCaseASCIILookahead{}, "") - } -} - -func BenchmarkStringLowerIdentical(b *testing.B) { - for i := 0; i < b.N; i++ { - String(&lowerCaseASCIILookahead{}, aaa[:4096]) - } -} - -func BenchmarkStringLowerChanged(b *testing.B) { - for i := 0; i < b.N; i++ { - String(&lowerCaseASCIILookahead{}, AAA[:4096]) - } -} - -var ( - aaa = strings.Repeat("a", 4096) - AAA = strings.Repeat("A", 4096) -) diff --git a/vendor/golang.org/x/text/unicode/bidi/core_test.go b/vendor/golang.org/x/text/unicode/bidi/core_test.go deleted file mode 100644 index f28d386c..00000000 --- a/vendor/golang.org/x/text/unicode/bidi/core_test.go +++ /dev/null @@ -1,224 +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 bidi - -import ( - "flag" - "fmt" - "log" - "strconv" - "strings" - "testing" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/internal/ucd" - "golang.org/x/text/unicode/norm" -) - -var testLevels = flag.Bool("levels", false, "enable testing of levels") - -// TestBidiCore performs the tests in BidiTest.txt. -// See http://www.unicode.org/Public/UCD/latest/ucd/BidiTest.txt. -func TestBidiCore(t *testing.T) { - testtext.SkipIfNotLong(t) - - r := gen.OpenUCDFile("BidiTest.txt") - defer r.Close() - - var wantLevels, wantOrder []string - p := ucd.New(r, ucd.Part(func(p *ucd.Parser) { - s := strings.Split(p.String(0), ":") - switch s[0] { - case "Levels": - wantLevels = strings.Fields(s[1]) - case "Reorder": - wantOrder = strings.Fields(s[1]) - default: - log.Fatalf("Unknown part %q.", s[0]) - } - })) - - for p.Next() { - types := []Class{} - for _, s := range p.Strings(0) { - types = append(types, bidiClass[s]) - } - // We ignore the bracketing part of the algorithm. - pairTypes := make([]bracketType, len(types)) - pairValues := make([]rune, len(types)) - - for i := uint(0); i < 3; i++ { - if p.Uint(1)&(1<<i) == 0 { - continue - } - lev := level(int(i) - 1) - par := newParagraph(types, pairTypes, pairValues, lev) - - if *testLevels { - levels := par.getLevels([]int{len(types)}) - for i, s := range wantLevels { - if s == "x" { - continue - } - l, _ := strconv.ParseUint(s, 10, 8) - if level(l)&1 != levels[i]&1 { - t.Errorf("%s:%d:levels: got %v; want %v", p.String(0), lev, levels, wantLevels) - break - } - } - } - - order := par.getReordering([]int{len(types)}) - gotOrder := filterOrder(types, order) - if got, want := fmt.Sprint(gotOrder), fmt.Sprint(wantOrder); got != want { - t.Errorf("%s:%d:order: got %v; want %v\noriginal %v", p.String(0), lev, got, want, order) - } - } - } - if err := p.Err(); err != nil { - log.Fatal(err) - } -} - -var removeClasses = map[Class]bool{ - LRO: true, - RLO: true, - RLE: true, - LRE: true, - PDF: true, - BN: true, -} - -// TestBidiCharacters performs the tests in BidiCharacterTest.txt. -// See http://www.unicode.org/Public/UCD/latest/ucd/BidiCharacterTest.txt -func TestBidiCharacters(t *testing.T) { - testtext.SkipIfNotLong(t) - - ucd.Parse(gen.OpenUCDFile("BidiCharacterTest.txt"), func(p *ucd.Parser) { - var ( - types []Class - pairTypes []bracketType - pairValues []rune - parLevel level - - wantLevel = level(p.Int(2)) - wantLevels = p.Strings(3) - wantVisualOrder = p.Strings(4) - ) - - switch l := p.Int(1); l { - case 0, 1: - parLevel = level(l) - case 2: - parLevel = implicitLevel - default: - // Spec says to ignore unknown parts. - } - - runes := p.Runes(0) - - for _, r := range runes { - // Assign the bracket type. - if d := norm.NFKD.PropertiesString(string(r)).Decomposition(); d != nil { - r = []rune(string(d))[0] - } - p, _ := LookupRune(r) - - // Assign the class for this rune. - types = append(types, p.Class()) - - switch { - case !p.IsBracket(): - pairTypes = append(pairTypes, bpNone) - pairValues = append(pairValues, 0) - case p.IsOpeningBracket(): - pairTypes = append(pairTypes, bpOpen) - pairValues = append(pairValues, r) - default: - pairTypes = append(pairTypes, bpClose) - pairValues = append(pairValues, p.reverseBracket(r)) - } - } - par := newParagraph(types, pairTypes, pairValues, parLevel) - - // Test results: - if got := par.embeddingLevel; got != wantLevel { - t.Errorf("%v:level: got %d; want %d", string(runes), got, wantLevel) - } - - if *testLevels { - gotLevels := getLevelStrings(types, par.getLevels([]int{len(types)})) - if got, want := fmt.Sprint(gotLevels), fmt.Sprint(wantLevels); got != want { - t.Errorf("%04X %q:%d: got %v; want %v\nval: %x\npair: %v", runes, string(runes), parLevel, got, want, pairValues, pairTypes) - } - } - - order := par.getReordering([]int{len(types)}) - order = filterOrder(types, order) - if got, want := fmt.Sprint(order), fmt.Sprint(wantVisualOrder); got != want { - t.Errorf("%04X %q:%d: got %v; want %v\ngot order: %s", runes, string(runes), parLevel, got, want, reorder(runes, order)) - } - }) -} - -func getLevelStrings(cl []Class, levels []level) []string { - var results []string - for i, l := range levels { - if !removeClasses[cl[i]] { - results = append(results, fmt.Sprint(l)) - } else { - results = append(results, "x") - } - } - return results -} - -func filterOrder(cl []Class, order []int) []int { - no := []int{} - for _, o := range order { - if !removeClasses[cl[o]] { - no = append(no, o) - } - } - return no -} - -func reorder(r []rune, order []int) string { - nr := make([]rune, len(order)) - for i, o := range order { - nr[i] = r[o] - } - return string(nr) -} - -// bidiClass names and codes taken from class "bc" in -// http://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt -var bidiClass = map[string]Class{ - "AL": AL, // classArabicLetter, - "AN": AN, // classArabicNumber, - "B": B, // classParagraphSeparator, - "BN": BN, // classBoundaryNeutral, - "CS": CS, // classCommonSeparator, - "EN": EN, // classEuropeanNumber, - "ES": ES, // classEuropeanSeparator, - "ET": ET, // classEuropeanTerminator, - "L": L, // classLeftToRight, - "NSM": NSM, // classNonspacingMark, - "ON": ON, // classOtherNeutral, - "R": R, // classRightToLeft, - "S": S, // classSegmentSeparator, - "WS": WS, // classWhiteSpace, - - "LRO": LRO, // classLeftToRightOverride, - "RLO": RLO, // classRightToLeftOverride, - "LRE": LRE, // classLeftToRightEmbedding, - "RLE": RLE, // classRightToLeftEmbedding, - "PDF": PDF, // classPopDirectionalFormat, - "LRI": LRI, // classLeftToRightIsolate, - "RLI": RLI, // classRightToLeftIsolate, - "FSI": FSI, // classFirstStrongIsolate, - "PDI": PDI, // classPopDirectionalIsolate, -} diff --git a/vendor/golang.org/x/text/unicode/bidi/ranges_test.go b/vendor/golang.org/x/text/unicode/bidi/ranges_test.go deleted file mode 100644 index bfaecd50..00000000 --- a/vendor/golang.org/x/text/unicode/bidi/ranges_test.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package bidi - -import ( - "unicode" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/ucd" - "golang.org/x/text/unicode/rangetable" -) - -// These tables are hand-extracted from: -// http://www.unicode.org/Public/8.0.0/ucd/extracted/DerivedBidiClass.txt -func visitDefaults(fn func(r rune, c Class)) { - // first write default values for ranges listed above. - visitRunes(fn, AL, []rune{ - 0x0600, 0x07BF, // Arabic - 0x08A0, 0x08FF, // Arabic Extended-A - 0xFB50, 0xFDCF, // Arabic Presentation Forms - 0xFDF0, 0xFDFF, - 0xFE70, 0xFEFF, - 0x0001EE00, 0x0001EEFF, // Arabic Mathematical Alpha Symbols - }) - visitRunes(fn, R, []rune{ - 0x0590, 0x05FF, // Hebrew - 0x07C0, 0x089F, // Nko et al. - 0xFB1D, 0xFB4F, - 0x00010800, 0x00010FFF, // Cypriot Syllabary et. al. - 0x0001E800, 0x0001EDFF, - 0x0001EF00, 0x0001EFFF, - }) - visitRunes(fn, ET, []rune{ // European Terminator - 0x20A0, 0x20Cf, // Currency symbols - }) - rangetable.Visit(unicode.Noncharacter_Code_Point, func(r rune) { - fn(r, BN) // Boundary Neutral - }) - ucd.Parse(gen.OpenUCDFile("DerivedCoreProperties.txt"), func(p *ucd.Parser) { - if p.String(1) == "Default_Ignorable_Code_Point" { - fn(p.Rune(0), BN) // Boundary Neutral - } - }) -} - -func visitRunes(fn func(r rune, c Class), c Class, runes []rune) { - for i := 0; i < len(runes); i += 2 { - lo, hi := runes[i], runes[i+1] - for j := lo; j <= hi; j++ { - fn(j, c) - } - } -} diff --git a/vendor/golang.org/x/text/unicode/bidi/tables_test.go b/vendor/golang.org/x/text/unicode/bidi/tables_test.go deleted file mode 100644 index 356a4a58..00000000 --- a/vendor/golang.org/x/text/unicode/bidi/tables_test.go +++ /dev/null @@ -1,82 +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 bidi - -import ( - "testing" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/internal/ucd" -) - -var labels = []string{ - AL: "AL", - AN: "AN", - B: "B", - BN: "BN", - CS: "CS", - EN: "EN", - ES: "ES", - ET: "ET", - L: "L", - NSM: "NSM", - ON: "ON", - R: "R", - S: "S", - WS: "WS", - - LRO: "LRO", - RLO: "RLO", - LRE: "LRE", - RLE: "RLE", - PDF: "PDF", - LRI: "LRI", - RLI: "RLI", - FSI: "FSI", - PDI: "PDI", -} - -func TestTables(t *testing.T) { - testtext.SkipIfNotLong(t) - - ucd.Parse(gen.OpenUCDFile("BidiBrackets.txt"), func(p *ucd.Parser) { - r1 := p.Rune(0) - want := p.Rune(1) - - e, _ := LookupRune(r1) - if got := e.reverseBracket(r1); got != want { - t.Errorf("Reverse(%U) = %U; want %U", r1, got, want) - } - }) - - done := map[rune]bool{} - test := func(name string, r rune, want string) { - str := string(r) - e, _ := LookupString(str) - if got := labels[e.Class()]; got != want { - t.Errorf("%s:%U: got %s; want %s", name, r, got, want) - } - if e2, sz := LookupRune(r); e != e2 || sz != len(str) { - t.Errorf("LookupRune(%U) = %v, %d; want %v, %d", r, e2, e, sz, len(str)) - } - if e2, sz := Lookup([]byte(str)); e != e2 || sz != len(str) { - t.Errorf("Lookup(%U) = %v, %d; want %v, %d", r, e2, e, sz, len(str)) - } - done[r] = true - } - - // Insert the derived BiDi properties. - ucd.Parse(gen.OpenUCDFile("extracted/DerivedBidiClass.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - test("derived", r, p.String(1)) - }) - visitDefaults(func(r rune, c Class) { - if !done[r] { - test("default", r, labels[c]) - } - }) - -} diff --git a/vendor/golang.org/x/text/unicode/cldr/cldr_test.go b/vendor/golang.org/x/text/unicode/cldr/cldr_test.go deleted file mode 100644 index 951028d7..00000000 --- a/vendor/golang.org/x/text/unicode/cldr/cldr_test.go +++ /dev/null @@ -1,27 +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 cldr - -import "testing" - -func TestParseDraft(t *testing.T) { - tests := []struct { - in string - draft Draft - err bool - }{ - {"unconfirmed", Unconfirmed, false}, - {"provisional", Provisional, false}, - {"contributed", Contributed, false}, - {"approved", Approved, false}, - {"", Approved, false}, - {"foo", Approved, true}, - } - for _, tt := range tests { - if d, err := ParseDraft(tt.in); d != tt.draft || (err != nil) != tt.err { - t.Errorf("%q: was %v, %v; want %v, %v", tt.in, d, err != nil, tt.draft, tt.err) - } - } -} diff --git a/vendor/golang.org/x/text/unicode/cldr/collate_test.go b/vendor/golang.org/x/text/unicode/cldr/collate_test.go deleted file mode 100644 index f6721639..00000000 --- a/vendor/golang.org/x/text/unicode/cldr/collate_test.go +++ /dev/null @@ -1,275 +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 cldr - -import ( - "fmt" - "strings" - "testing" -) - -// A recorder implements the RuleProcessor interface, whereby its methods -// simply record the invocations. -type recorder struct { - calls []string -} - -func (r *recorder) Reset(anchor string, before int) error { - if before > 5 { - return fmt.Errorf("before %d > 5", before) - } - r.calls = append(r.calls, fmt.Sprintf("R:%s-%d", anchor, before)) - return nil -} - -func (r *recorder) Insert(level int, str, context, extend string) error { - s := fmt.Sprintf("O:%d:%s", level, str) - if context != "" { - s += "|" + context - } - if extend != "" { - s += "/" + extend - } - r.calls = append(r.calls, s) - return nil -} - -func (r *recorder) Index(id string) { - r.calls = append(r.calls, fmt.Sprintf("I:%s", id)) -} - -func (r *recorder) Error(err error) { - r.calls = append(r.calls, fmt.Sprintf("E:%v", err)) -} - -func TestRuleProcessor(t *testing.T) { - for _, tt := range []struct { - desc string - in string - out string - }{ - {desc: "empty"}, - {desc: "whitespace and comments only", - in: ` - - - # adsfads -# adfadf - `, - }, - { - desc: "reset anchor", - in: ` - & a - &b # - & [ before 3 ] c - & [before 4] d & ee - & [first tertiary ignorable] - &'g' - & 'h''h'h'h' - &'\u0069' # LATIN SMALL LETTER I - `, - out: ` - R:a-0 - R:b-0 - R:c-3 - R:d-4 - R:ee-0 - R:<first tertiary ignorable/>-0 - R:g-0 - R:hhhh-0 - R:i-0 - `, - }, - { - desc: "ordering", - in: ` - & 0 - < 1 <<''2# -<<< 3'3''33'3# - <<<<4 - = 5 << 6 | s - <<<< 7 / z - << 8'' | s / ch - `, - out: ` - R:0-0 - O:1:1 - O:2:'2 - O:3:33333 - O:4:4 - O:5:5 - O:2:6|s - O:4:7/z - O:2:8'|s/ch - `, - }, - { - desc: "index", - in: "< '\ufdd0'A", - out: "I:A", - }, - { - desc: "sequence", - in: ` - & 0 - <<* 1234 - <* a-cde-f - =* q-q - `, - out: ` - R:0-0 - O:2:1 - O:2:2 - O:2:3 - O:2:4 - O:1:a - O:1:b - O:1:c - O:1:d - O:1:e - O:1:f - O:5:q - `, - }, - { - desc: "compact", - in: "&B<t<<<T<s<<<S<e<<<E", - out: ` - R:B-0 - O:1:t - O:3:T - O:1:s - O:3:S - O:1:e - O:3:E - `, - }, - { - desc: "err operator", - in: "a", - out: "E:1: illegal operator 'a'", - }, - { - desc: "err line number", - in: `& a - << b - a`, - out: ` - R:a-0 - O:2:b - E:3: illegal operator 'a'`, - }, - { - desc: "err empty anchor", - in: " & ", - out: "E:1: missing string", - }, - { - desc: "err anchor invalid special 1", - in: " & [ foo ", - out: "E:1: unmatched bracket", - }, - { - desc: "err anchor invalid special 2", - in: "&[", - out: "E:1: unmatched bracket", - }, - { - desc: "err anchor invalid before 1", - in: "&[before a]", - out: `E:1: strconv.ParseUint: parsing "a": invalid syntax`, - }, - { - desc: "err anchor invalid before 2", - in: "&[before 12]", - out: `E:1: strconv.ParseUint: parsing "12": value out of range`, - }, - { - desc: "err anchor invalid before 3", - in: "&[before 2]", - out: "E:1: missing string", - }, - { - desc: "err anchor invalid before 4", - in: "&[before 6] a", - out: "E:1: before 6 > 5", - }, - { - desc: "err empty order", - in: " < ", - out: "E:1: missing string", - }, - { - desc: "err empty identity", - in: " = ", - out: "E:1: missing string", - }, - { - desc: "err empty context", - in: " < a | ", - out: "E:1: missing string after context", - }, - { - desc: "err empty extend", - in: " < a / ", - out: "E:1: missing string after extension", - }, - { - desc: "err empty sequence", - in: " <* ", - out: "E:1: empty sequence", - }, - { - desc: "err sequence 1", - in: " <* -a", - out: "E:1: range without starter value", - }, - { - desc: "err sequence 3", - in: " <* a-a-b", - out: `O:1:a - E:1: range without starter value - `, - }, - { - desc: "err sequence 3", - in: " <* b-a", - out: `O:1:b - E:1: invalid range 'b'-'a' - `, - }, - { - desc: "err unmatched quote", - in: " < 'b", - out: ` E:1: unmatched single quote - `, - }, - } { - rec := &recorder{} - err := Collation{ - Cr: []*Common{ - {hidden: hidden{CharData: tt.in}}, - }, - }.Process(rec) - if err != nil { - rec.Error(err) - } - got := rec.calls - want := strings.Split(strings.TrimSpace(tt.out), "\n") - if tt.out == "" { - want = nil - } - if len(got) != len(want) { - t.Errorf("%s: nResults: got %d; want %d", tt.desc, len(got), len(want)) - continue - } - for i, g := range got { - if want := strings.TrimSpace(want[i]); g != want { - t.Errorf("%s:%d: got %q; want %q", tt.desc, i, g, want) - } - } - } -} diff --git a/vendor/golang.org/x/text/unicode/cldr/data_test.go b/vendor/golang.org/x/text/unicode/cldr/data_test.go deleted file mode 100644 index 16621896..00000000 --- a/vendor/golang.org/x/text/unicode/cldr/data_test.go +++ /dev/null @@ -1,186 +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 cldr - -// This file contains test data. - -import ( - "io" - "strings" -) - -type testLoader struct { -} - -func (t testLoader) Len() int { - return len(testFiles) -} - -func (t testLoader) Path(i int) string { - return testPaths[i] -} - -func (t testLoader) Reader(i int) (io.ReadCloser, error) { - return &reader{*strings.NewReader(testFiles[i])}, nil -} - -// reader adds a dummy Close method to strings.Reader so that it -// satisfies the io.ReadCloser interface. -type reader struct { - strings.Reader -} - -func (r reader) Close() error { - return nil -} - -var ( - testFiles = []string{de_xml, gsw_xml, root_xml} - testPaths = []string{ - "common/main/de.xml", - "common/main/gsw.xml", - "common/main/root.xml", - } -) - -var root_xml = `<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE ldml SYSTEM "../../common/dtd/ldml.dtd"> -<ldml> - <identity> - <language type="root"/> - <generation date="now"/> - </identity> - <characters> - <exemplarCharacters>[]</exemplarCharacters> - <exemplarCharacters type="auxiliary">[]</exemplarCharacters> - <exemplarCharacters type="punctuation">[\- ‐ – — … ' ‘ ‚ &quot; “ „ \&amp; #]</exemplarCharacters> - <ellipsis type="final">{0}…</ellipsis> - <ellipsis type="initial">…{0}</ellipsis> - <moreInformation>?</moreInformation> - </characters> - <dates> - <calendars> - <default choice="gregorian"/> - <calendar type="buddhist"> - <months> - <alias source="locale" path="../../calendar[@type='gregorian']/months"/> - </months> - </calendar> - <calendar type="chinese"> - <months> - <alias source="locale" path="../../calendar[@type='gregorian']/months"/> - </months> - </calendar> - <calendar type="gregorian"> - <months> - <default choice="format"/> - <monthContext type="format"> - <default choice="wide"/> - <monthWidth type="narrow"> - <alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/> - </monthWidth> - <monthWidth type="wide"> - <month type="1">11</month> - <month type="2">22</month> - <month type="3">33</month> - <month type="4">44</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="narrow"> - <month type="1">1</month> - <month type="2">2</month> - <month type="3">3</month> - <month type="4">4</month> - </monthWidth> - <monthWidth type="wide"> - <alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/> - </monthWidth> - </monthContext> - </months> - </calendar> - </calendars> - </dates> -</ldml> -` - -var de_xml = `<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE ldml SYSTEM "../../common/dtd/ldml.dtd"> -<ldml> - <identity> - <language type="de"/> - </identity> - <characters> - <exemplarCharacters>[a ä b c d e ö p q r s ß t u ü v w x y z]</exemplarCharacters> - <exemplarCharacters type="auxiliary">[á à ă]</exemplarCharacters> - <exemplarCharacters type="index">[A B C D E F G H Z]</exemplarCharacters> - <ellipsis type="final">{0} …</ellipsis> - <ellipsis type="initial">… {0}</ellipsis> - <moreInformation>?</moreInformation> - <stopwords> - <stopwordList type="collation" draft="provisional">der die das</stopwordList> - </stopwords> - </characters> - <dates> - <calendars> - <calendar type="buddhist"> - <months> - <monthContext type="format"> - <monthWidth type="narrow"> - <month type="3">BBB</month> - </monthWidth> - <monthWidth type="wide"> - <month type="3">bbb</month> - </monthWidth> - </monthContext> - </months> - </calendar> - <calendar type="gregorian"> - <months> - <monthContext type="format"> - <monthWidth type="narrow"> - <month type="3">M</month> - <month type="4">A</month> - </monthWidth> - <monthWidth type="wide"> - <month type="3">Maerz</month> - <month type="4">April</month> - <month type="5">Mai</month> - </monthWidth> - </monthContext> - <monthContext type="stand-alone"> - <monthWidth type="narrow"> - <month type="3">m</month> - <month type="5">m</month> - </monthWidth> - <monthWidth type="wide"> - <month type="4">april</month> - <month type="5">mai</month> - </monthWidth> - </monthContext> - </months> - </calendar> - </calendars> - </dates> - <posix> - <messages> - <yesstr>yes:y</yesstr> - <nostr>no:n</nostr> - </messages> - </posix> -</ldml> -` - -var gsw_xml = `<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE ldml SYSTEM "../../common/dtd/ldml.dtd"> -<ldml> - <identity> - <language type="gsw"/> - </identity> - <posix> - <alias source="de" path="//ldml/posix"/> - </posix> -</ldml> -` diff --git a/vendor/golang.org/x/text/unicode/cldr/examples_test.go b/vendor/golang.org/x/text/unicode/cldr/examples_test.go deleted file mode 100644 index 1a69b007..00000000 --- a/vendor/golang.org/x/text/unicode/cldr/examples_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package cldr_test - -import ( - "fmt" - - "golang.org/x/text/unicode/cldr" -) - -func ExampleSlice() { - var dr *cldr.CLDR // assume this is initialized - - x, _ := dr.LDML("en") - cs := x.Collations.Collation - // remove all but the default - cldr.MakeSlice(&cs).Filter(func(e cldr.Elem) bool { - return e.GetCommon().Type != x.Collations.Default() - }) - for i, c := range cs { - fmt.Println(i, c.Type) - } -} diff --git a/vendor/golang.org/x/text/unicode/cldr/resolve_test.go b/vendor/golang.org/x/text/unicode/cldr/resolve_test.go deleted file mode 100644 index 3d8edaec..00000000 --- a/vendor/golang.org/x/text/unicode/cldr/resolve_test.go +++ /dev/null @@ -1,368 +0,0 @@ -package cldr - -import ( - "fmt" - "log" - "reflect" - "testing" -) - -func failOnError(err error) { - if err != nil { - log.Panic(err) - } -} - -func data() *CLDR { - d := Decoder{} - data, err := d.Decode(testLoader{}) - failOnError(err) - return data -} - -type h struct { - A string `xml:"ha,attr"` - E string `xml:"he"` - D string `xml:",chardata"` - X string -} - -type fieldTest struct { - Common - To string `xml:"to,attr"` - Key string `xml:"key,attr"` - E string `xml:"e"` - D string `xml:",chardata"` - X string - h -} - -var testStruct = fieldTest{ - Common: Common{ - name: "mapping", // exclude "type" as distinguishing attribute - Type: "foo", - Alt: "foo", - }, - To: "nyc", - Key: "k", - E: "E", - D: "D", - h: h{ - A: "A", - E: "E", - D: "D", - }, -} - -func TestIter(t *testing.T) { - tests := map[string]string{ - "Type": "foo", - "Alt": "foo", - "To": "nyc", - "A": "A", - "Alias": "<nil>", - } - k := 0 - for i := iter(reflect.ValueOf(testStruct)); !i.done(); i.next() { - v := i.value() - if v.Kind() == reflect.Ptr && v.Elem().Kind() == reflect.String { - v = v.Elem() - } - name := i.field().Name - if w, ok := tests[name]; ok { - s := fmt.Sprint(v.Interface()) - if w != s { - t.Errorf("value: found %q; want %q", w, s) - } - delete(tests, name) - } - k++ - } - if len(tests) != 0 { - t.Errorf("missing fields: %v", tests) - } -} - -func TestFindField(t *testing.T) { - tests := []struct { - name, val string - exist bool - }{ - {"type", "foo", true}, - {"alt", "foo", true}, - {"to", "nyc", true}, - {"he", "E", true}, - {"q", "", false}, - } - vf := reflect.ValueOf(testStruct) - for i, tt := range tests { - v, err := findField(vf, tt.name) - if (err == nil) != tt.exist { - t.Errorf("%d: field %q present is %v; want %v", i, tt.name, err == nil, tt.exist) - } else if tt.exist { - if v.Kind() == reflect.Ptr { - if v.IsNil() { - continue - } - v = v.Elem() - } - if v.String() != tt.val { - t.Errorf("%d: found value %q; want %q", i, v.String(), tt.val) - } - } - } -} - -var keyTests = []struct { - exclude []string - key string -}{ - {[]string{}, "alt=foo;key=k;to=nyc"}, - {[]string{"type"}, "alt=foo;key=k;to=nyc"}, - {[]string{"choice"}, "alt=foo;key=k;to=nyc"}, - {[]string{"alt"}, "key=k;to=nyc"}, - {[]string{"a"}, "alt=foo;key=k;to=nyc"}, - {[]string{"to"}, "alt=foo;key=k"}, - {[]string{"alt", "to"}, "key=k"}, - {[]string{"alt", "to", "key"}, ""}, -} - -func TestAttrKey(t *testing.T) { - v := reflect.ValueOf(&testStruct) - for i, tt := range keyTests { - key := attrKey(v, tt.exclude...) - if key != tt.key { - t.Errorf("%d: found %q, want %q", i, key, tt.key) - } - } -} - -func TestKey(t *testing.T) { - for i, tt := range keyTests { - key := Key(&testStruct, tt.exclude...) - if key != tt.key { - t.Errorf("%d: found %q, want %q", i, key, tt.key) - } - } -} - -func testEnclosing(t *testing.T, x *LDML, name string) { - eq := func(a, b Elem, i int) { - for ; i > 0; i-- { - b = b.enclosing() - } - if a != b { - t.Errorf("%s: found path %q, want %q", name, getPath(a), getPath(b)) - } - } - eq(x, x, 0) - eq(x, x.Identity, 1) - eq(x, x.Dates.Calendars, 2) - eq(x, x.Dates.Calendars.Calendar[0], 3) - eq(x, x.Dates.Calendars.Calendar[1], 3) - //eq(x, x.Dates.Calendars.Calendar[0].Months, 4) - eq(x, x.Dates.Calendars.Calendar[1].Months, 4) -} - -func TestEnclosing(t *testing.T) { - testEnclosing(t, data().RawLDML("de"), "enclosing-raw") - de, _ := data().LDML("de") - testEnclosing(t, de, "enclosing") -} - -func TestDeepCopy(t *testing.T) { - eq := func(have, want string) { - if have != want { - t.Errorf("found %q; want %q", have, want) - } - } - x, _ := data().LDML("de") - vc := deepCopy(reflect.ValueOf(x)) - c := vc.Interface().(*LDML) - linkEnclosing(nil, c) - if x == c { - t.Errorf("did not copy") - } - - eq(c.name, "ldml") - eq(c.Dates.name, "dates") - testEnclosing(t, c, "deepCopy") -} - -type getTest struct { - loc string - path string - field string // used in combination with length - data string - altData string // used for buddhist calendar if value != "" - typ string - length int - missing bool -} - -const ( - budMon = "dates/calendars/calendar[@type='buddhist']/months/" - chnMon = "dates/calendars/calendar[@type='chinese']/months/" - greMon = "dates/calendars/calendar[@type='gregorian']/months/" -) - -func monthVal(path, context, width string, month int) string { - const format = "%s/monthContext[@type='%s']/monthWidth[@type='%s']/month[@type='%d']" - return fmt.Sprintf(format, path, context, width, month) -} - -var rootGetTests = []getTest{ - {loc: "root", path: "identity/language", typ: "root"}, - {loc: "root", path: "characters/moreInformation", data: "?"}, - {loc: "root", path: "characters", field: "exemplarCharacters", length: 3}, - {loc: "root", path: greMon, field: "monthContext", length: 2}, - {loc: "root", path: greMon + "monthContext[@type='format']/monthWidth[@type='narrow']", field: "month", length: 4}, - {loc: "root", path: greMon + "monthContext[@type='stand-alone']/monthWidth[@type='wide']", field: "month", length: 4}, - // unescaping character data - {loc: "root", path: "characters/exemplarCharacters[@type='punctuation']", data: `[\- ‐ – — … ' ‘ ‚ " “ „ \& #]`}, - // default resolution - {loc: "root", path: "dates/calendars/calendar", typ: "gregorian"}, - // alias resolution - {loc: "root", path: budMon, field: "monthContext", length: 2}, - // crossing but non-circular alias resolution - {loc: "root", path: budMon + "monthContext[@type='format']/monthWidth[@type='narrow']", field: "month", length: 4}, - {loc: "root", path: budMon + "monthContext[@type='stand-alone']/monthWidth[@type='wide']", field: "month", length: 4}, - {loc: "root", path: monthVal(greMon, "format", "wide", 1), data: "11"}, - {loc: "root", path: monthVal(greMon, "format", "narrow", 2), data: "2"}, - {loc: "root", path: monthVal(greMon, "stand-alone", "wide", 3), data: "33"}, - {loc: "root", path: monthVal(greMon, "stand-alone", "narrow", 4), data: "4"}, - {loc: "root", path: monthVal(budMon, "format", "wide", 1), data: "11"}, - {loc: "root", path: monthVal(budMon, "format", "narrow", 2), data: "2"}, - {loc: "root", path: monthVal(budMon, "stand-alone", "wide", 3), data: "33"}, - {loc: "root", path: monthVal(budMon, "stand-alone", "narrow", 4), data: "4"}, -} - -// 19 -var deGetTests = []getTest{ - {loc: "de", path: "identity/language", typ: "de"}, - {loc: "de", path: "posix", length: 2}, - {loc: "de", path: "characters", field: "exemplarCharacters", length: 4}, - {loc: "de", path: "characters/exemplarCharacters[@type='auxiliary']", data: `[á à ă]`}, - // identity is a blocking element, so de should not inherit generation from root. - {loc: "de", path: "identity/generation", missing: true}, - // default resolution - {loc: "root", path: "dates/calendars/calendar", typ: "gregorian"}, - - // absolute path alias resolution - {loc: "gsw", path: "posix", field: "messages", length: 1}, - {loc: "gsw", path: "posix/messages/yesstr", data: "yes:y"}, -} - -// 27(greMon) - 52(budMon) - 77(chnMon) -func calGetTests(s string) []getTest { - tests := []getTest{ - {loc: "de", path: s, length: 2}, - {loc: "de", path: s + "monthContext[@type='format']/monthWidth[@type='wide']", field: "month", length: 5}, - {loc: "de", path: monthVal(s, "format", "wide", 1), data: "11"}, - {loc: "de", path: monthVal(s, "format", "wide", 2), data: "22"}, - {loc: "de", path: monthVal(s, "format", "wide", 3), data: "Maerz", altData: "bbb"}, - {loc: "de", path: monthVal(s, "format", "wide", 4), data: "April"}, - {loc: "de", path: monthVal(s, "format", "wide", 5), data: "Mai"}, - - {loc: "de", path: s + "monthContext[@type='format']/monthWidth[@type='narrow']", field: "month", length: 5}, - {loc: "de", path: monthVal(s, "format", "narrow", 1), data: "1"}, - {loc: "de", path: monthVal(s, "format", "narrow", 2), data: "2"}, - {loc: "de", path: monthVal(s, "format", "narrow", 3), data: "M", altData: "BBB"}, - {loc: "de", path: monthVal(s, "format", "narrow", 4), data: "A"}, - {loc: "de", path: monthVal(s, "format", "narrow", 5), data: "m"}, - - {loc: "de", path: s + "monthContext[@type='stand-alone']/monthWidth[@type='wide']", field: "month", length: 5}, - {loc: "de", path: monthVal(s, "stand-alone", "wide", 1), data: "11"}, - {loc: "de", path: monthVal(s, "stand-alone", "wide", 2), data: "22"}, - {loc: "de", path: monthVal(s, "stand-alone", "wide", 3), data: "Maerz", altData: "bbb"}, - {loc: "de", path: monthVal(s, "stand-alone", "wide", 4), data: "april"}, - {loc: "de", path: monthVal(s, "stand-alone", "wide", 5), data: "mai"}, - - {loc: "de", path: s + "monthContext[@type='stand-alone']/monthWidth[@type='narrow']", field: "month", length: 5}, - {loc: "de", path: monthVal(s, "stand-alone", "narrow", 1), data: "1"}, - {loc: "de", path: monthVal(s, "stand-alone", "narrow", 2), data: "2"}, - {loc: "de", path: monthVal(s, "stand-alone", "narrow", 3), data: "m"}, - {loc: "de", path: monthVal(s, "stand-alone", "narrow", 4), data: "4"}, - {loc: "de", path: monthVal(s, "stand-alone", "narrow", 5), data: "m"}, - } - if s == budMon { - for i, t := range tests { - if t.altData != "" { - tests[i].data = t.altData - } - } - } - return tests -} - -var getTests = append(rootGetTests, - append(deGetTests, - append(calGetTests(greMon), - append(calGetTests(budMon), - calGetTests(chnMon)...)...)...)...) - -func TestPath(t *testing.T) { - d := data() - for i, tt := range getTests { - x, _ := d.LDML(tt.loc) - e, err := walkXPath(x, tt.path) - if err != nil { - if !tt.missing { - t.Errorf("%d:error: %v %v", i, err, tt.missing) - } - continue - } - if tt.missing { - t.Errorf("%d: missing is %v; want %v", i, e == nil, tt.missing) - continue - } - if tt.data != "" && e.GetCommon().Data() != tt.data { - t.Errorf("%d: data is %v; want %v", i, e.GetCommon().Data(), tt.data) - continue - } - if tt.typ != "" && e.GetCommon().Type != tt.typ { - t.Errorf("%d: type is %v; want %v", i, e.GetCommon().Type, tt.typ) - continue - } - if tt.field != "" { - slice, _ := findField(reflect.ValueOf(e), tt.field) - if slice.Len() != tt.length { - t.Errorf("%d: length is %v; want %v", i, slice.Len(), tt.length) - continue - } - } - } -} - -func TestGet(t *testing.T) { - d := data() - for i, tt := range getTests { - x, _ := d.LDML(tt.loc) - e, err := Get(x, tt.path) - if err != nil { - if !tt.missing { - t.Errorf("%d:error: %v %v", i, err, tt.missing) - } - continue - } - if tt.missing { - t.Errorf("%d: missing is %v; want %v", i, e == nil, tt.missing) - continue - } - if tt.data != "" && e.GetCommon().Data() != tt.data { - t.Errorf("%d: data is %v; want %v", i, e.GetCommon().Data(), tt.data) - continue - } - if tt.typ != "" && e.GetCommon().Type != tt.typ { - t.Errorf("%d: type is %v; want %v", i, e.GetCommon().Type, tt.typ) - continue - } - if tt.field != "" { - slice, _ := findField(reflect.ValueOf(e), tt.field) - if slice.Len() != tt.length { - t.Errorf("%d: length is %v; want %v", i, slice.Len(), tt.length) - continue - } - } - } -} diff --git a/vendor/golang.org/x/text/unicode/cldr/slice_test.go b/vendor/golang.org/x/text/unicode/cldr/slice_test.go deleted file mode 100644 index 3d487d3b..00000000 --- a/vendor/golang.org/x/text/unicode/cldr/slice_test.go +++ /dev/null @@ -1,175 +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 cldr - -import ( - "reflect" - "testing" -) - -type testSlice []*Common - -func mkElem(alt, typ, ref string) *Common { - return &Common{ - Type: typ, - Reference: ref, - Alt: alt, - } -} - -var ( - testSlice1 = testSlice{ - mkElem("1", "a", "i.a"), - mkElem("1", "b", "i.b"), - mkElem("1", "c", "i.c"), - mkElem("2", "b", "ii"), - mkElem("3", "c", "iii"), - mkElem("4", "a", "iv.a"), - mkElem("4", "d", "iv.d"), - } - testSliceE = testSlice{} -) - -func panics(f func()) (panics bool) { - defer func() { - if err := recover(); err != nil { - panics = true - } - }() - f() - return panics -} - -func TestMakeSlice(t *testing.T) { - foo := 1 - bar := []int{} - tests := []struct { - i interface{} - panics bool - err string - }{ - {&foo, true, "should panic when passed a pointer to the wrong type"}, - {&bar, true, "should panic when slice element of the wrong type"}, - {testSlice1, true, "should panic when passed a slice"}, - {&testSlice1, false, "should not panic"}, - } - for i, tt := range tests { - if panics(func() { MakeSlice(tt.i) }) != tt.panics { - t.Errorf("%d: %s", i, tt.err) - } - } -} - -var anyOfTests = []struct { - sl testSlice - values []string - n int -}{ - {testSliceE, []string{}, 0}, - {testSliceE, []string{"1", "2", "3"}, 0}, - {testSlice1, []string{}, 0}, - {testSlice1, []string{"1"}, 3}, - {testSlice1, []string{"2"}, 1}, - {testSlice1, []string{"5"}, 0}, - {testSlice1, []string{"1", "2", "3"}, 5}, -} - -func TestSelectAnyOf(t *testing.T) { - for i, tt := range anyOfTests { - sl := tt.sl - s := MakeSlice(&sl) - s.SelectAnyOf("alt", tt.values...) - if len(sl) != tt.n { - t.Errorf("%d: found len == %d; want %d", i, len(sl), tt.n) - } - } - sl := testSlice1 - s := MakeSlice(&sl) - if !panics(func() { s.SelectAnyOf("foo") }) { - t.Errorf("should panic on non-existing attribute") - } -} - -func TestFilter(t *testing.T) { - for i, tt := range anyOfTests { - sl := tt.sl - s := MakeSlice(&sl) - s.Filter(func(e Elem) bool { - v, _ := findField(reflect.ValueOf(e), "alt") - return in(tt.values, v.String()) - }) - if len(sl) != tt.n { - t.Errorf("%d: found len == %d; want %d", i, len(sl), tt.n) - } - } -} - -func TestGroup(t *testing.T) { - f := func(excl ...string) func(Elem) string { - return func(e Elem) string { - return Key(e, excl...) - } - } - tests := []struct { - sl testSlice - f func(Elem) string - lens []int - }{ - {testSliceE, f(), []int{}}, - {testSlice1, f(), []int{1, 1, 1, 1, 1, 1, 1}}, - {testSlice1, f("type"), []int{3, 1, 1, 2}}, - {testSlice1, f("alt"), []int{2, 2, 2, 1}}, - {testSlice1, f("alt", "type"), []int{7}}, - {testSlice1, f("alt", "type"), []int{7}}, - } - for i, tt := range tests { - sl := tt.sl - s := MakeSlice(&sl) - g := s.Group(tt.f) - if len(tt.lens) != len(g) { - t.Errorf("%d: found %d; want %d", i, len(g), len(tt.lens)) - continue - } - for j, v := range tt.lens { - if n := g[j].Value().Len(); n != v { - t.Errorf("%d: found %d for length of group %d; want %d", i, n, j, v) - } - } - } -} - -func TestSelectOnePerGroup(t *testing.T) { - tests := []struct { - sl testSlice - attr string - values []string - refs []string - }{ - {testSliceE, "alt", []string{"1"}, []string{}}, - {testSliceE, "type", []string{"a"}, []string{}}, - {testSlice1, "alt", []string{"2", "3", "1"}, []string{"i.a", "ii", "iii"}}, - {testSlice1, "alt", []string{"1", "4"}, []string{"i.a", "i.b", "i.c", "iv.d"}}, - {testSlice1, "type", []string{"c", "d"}, []string{"i.c", "iii", "iv.d"}}, - } - for i, tt := range tests { - sl := tt.sl - s := MakeSlice(&sl) - s.SelectOnePerGroup(tt.attr, tt.values) - if len(sl) != len(tt.refs) { - t.Errorf("%d: found result length %d; want %d", i, len(sl), len(tt.refs)) - continue - } - for j, e := range sl { - if tt.refs[j] != e.Reference { - t.Errorf("%d:%d found %s; want %s", i, j, e.Reference, tt.refs[i]) - } - } - } - sl := testSlice1 - s := MakeSlice(&sl) - if !panics(func() { s.SelectOnePerGroup("foo", nil) }) { - t.Errorf("should panic on non-existing attribute") - } -} diff --git a/vendor/golang.org/x/text/unicode/doc.go b/vendor/golang.org/x/text/unicode/doc.go deleted file mode 100644 index e8f1032d..00000000 --- a/vendor/golang.org/x/text/unicode/doc.go +++ /dev/null @@ -1,8 +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. - -// unicode holds packages with implementations of Unicode standards that are -// mostly used as building blocks for other packages in golang.org/x/text, -// layout engines, or are otherwise more low-level in nature. -package unicode diff --git a/vendor/golang.org/x/text/unicode/norm/composition_test.go b/vendor/golang.org/x/text/unicode/norm/composition_test.go deleted file mode 100644 index 11684069..00000000 --- a/vendor/golang.org/x/text/unicode/norm/composition_test.go +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package norm - -import "testing" - -// TestCase is used for most tests. -type TestCase struct { - in []rune - out []rune -} - -func runTests(t *testing.T, name string, fm Form, tests []TestCase) { - rb := reorderBuffer{} - rb.init(fm, nil) - for i, test := range tests { - rb.setFlusher(nil, appendFlush) - for j, rune := range test.in { - b := []byte(string(rune)) - src := inputBytes(b) - info := rb.f.info(src, 0) - if j == 0 { - rb.ss.first(info) - } else { - rb.ss.next(info) - } - if rb.insertFlush(src, 0, info) < 0 { - t.Errorf("%s:%d: insert failed for rune %d", name, i, j) - } - } - rb.doFlush() - was := string(rb.out) - want := string(test.out) - if len(was) != len(want) { - t.Errorf("%s:%d: length = %d; want %d", name, i, len(was), len(want)) - } - if was != want { - k, pfx := pidx(was, want) - t.Errorf("%s:%d: \nwas %s%+q; \nwant %s%+q", name, i, pfx, was[k:], pfx, want[k:]) - } - } -} - -func TestFlush(t *testing.T) { - const ( - hello = "Hello " - world = "world!" - ) - buf := make([]byte, maxByteBufferSize) - p := copy(buf, hello) - out := buf[p:] - rb := reorderBuffer{} - rb.initString(NFC, world) - if i := rb.flushCopy(out); i != 0 { - t.Errorf("wrote bytes on flush of empty buffer. (len(out) = %d)", i) - } - - for i := range world { - // No need to set streamSafe values for this test. - rb.insertFlush(rb.src, i, rb.f.info(rb.src, i)) - n := rb.flushCopy(out) - out = out[n:] - p += n - } - - was := buf[:p] - want := hello + world - if string(was) != want { - t.Errorf(`output after flush was "%s"; want "%s"`, string(was), want) - } - if rb.nrune != 0 { - t.Errorf("non-null size of info buffer (rb.nrune == %d)", rb.nrune) - } - if rb.nbyte != 0 { - t.Errorf("non-null size of byte buffer (rb.nbyte == %d)", rb.nbyte) - } -} - -var insertTests = []TestCase{ - {[]rune{'a'}, []rune{'a'}}, - {[]rune{0x300}, []rune{0x300}}, - {[]rune{0x300, 0x316}, []rune{0x316, 0x300}}, // CCC(0x300)==230; CCC(0x316)==220 - {[]rune{0x316, 0x300}, []rune{0x316, 0x300}}, - {[]rune{0x41, 0x316, 0x300}, []rune{0x41, 0x316, 0x300}}, - {[]rune{0x41, 0x300, 0x316}, []rune{0x41, 0x316, 0x300}}, - {[]rune{0x300, 0x316, 0x41}, []rune{0x316, 0x300, 0x41}}, - {[]rune{0x41, 0x300, 0x40, 0x316}, []rune{0x41, 0x300, 0x40, 0x316}}, -} - -func TestInsert(t *testing.T) { - runTests(t, "TestInsert", NFD, insertTests) -} - -var decompositionNFDTest = []TestCase{ - {[]rune{0xC0}, []rune{0x41, 0x300}}, - {[]rune{0xAC00}, []rune{0x1100, 0x1161}}, - {[]rune{0x01C4}, []rune{0x01C4}}, - {[]rune{0x320E}, []rune{0x320E}}, - {[]rune("음ẻ과"), []rune{0x110B, 0x1173, 0x11B7, 0x65, 0x309, 0x1100, 0x116A}}, -} - -var decompositionNFKDTest = []TestCase{ - {[]rune{0xC0}, []rune{0x41, 0x300}}, - {[]rune{0xAC00}, []rune{0x1100, 0x1161}}, - {[]rune{0x01C4}, []rune{0x44, 0x5A, 0x030C}}, - {[]rune{0x320E}, []rune{0x28, 0x1100, 0x1161, 0x29}}, -} - -func TestDecomposition(t *testing.T) { - runTests(t, "TestDecompositionNFD", NFD, decompositionNFDTest) - runTests(t, "TestDecompositionNFKD", NFKD, decompositionNFKDTest) -} - -var compositionTest = []TestCase{ - {[]rune{0x41, 0x300}, []rune{0xC0}}, - {[]rune{0x41, 0x316}, []rune{0x41, 0x316}}, - {[]rune{0x41, 0x300, 0x35D}, []rune{0xC0, 0x35D}}, - {[]rune{0x41, 0x316, 0x300}, []rune{0xC0, 0x316}}, - // blocking starter - {[]rune{0x41, 0x316, 0x40, 0x300}, []rune{0x41, 0x316, 0x40, 0x300}}, - {[]rune{0x1100, 0x1161}, []rune{0xAC00}}, - // parenthesized Hangul, alternate between ASCII and Hangul. - {[]rune{0x28, 0x1100, 0x1161, 0x29}, []rune{0x28, 0xAC00, 0x29}}, -} - -func TestComposition(t *testing.T) { - runTests(t, "TestComposition", NFC, compositionTest) -} diff --git a/vendor/golang.org/x/text/unicode/norm/data10.0.0_test.go b/vendor/golang.org/x/text/unicode/norm/data10.0.0_test.go deleted file mode 100644 index 1d0f73dc..00000000 --- a/vendor/golang.org/x/text/unicode/norm/data10.0.0_test.go +++ /dev/null @@ -1,7424 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build go1.10 - -package norm - -const ( - Yes = iota - No - Maybe -) - -type formData struct { - qc uint8 - combinesForward bool - decomposition string -} - -type runeData struct { - r rune - ccc uint8 - nLead uint8 - nTrail uint8 - f [2]formData // 0: canonical; 1: compatibility -} - -func f(qc uint8, cf bool, dec string) [2]formData { - return [2]formData{{qc, cf, dec}, {qc, cf, dec}} -} - -func g(qc, qck uint8, cf, cfk bool, d, dk string) [2]formData { - return [2]formData{{qc, cf, d}, {qck, cfk, dk}} -} - -var testData = []runeData{ - {0x0, 0, 0, 0, f(Yes, false, "")}, - {0x3c, 0, 0, 0, f(Yes, true, "")}, - {0x3f, 0, 0, 0, f(Yes, false, "")}, - {0x41, 0, 0, 0, f(Yes, true, "")}, - {0x51, 0, 0, 0, f(Yes, false, "")}, - {0x52, 0, 0, 0, f(Yes, true, "")}, - {0x5b, 0, 0, 0, f(Yes, false, "")}, - {0x61, 0, 0, 0, f(Yes, true, "")}, - {0x71, 0, 0, 0, f(Yes, false, "")}, - {0x72, 0, 0, 0, f(Yes, true, "")}, - {0x7b, 0, 0, 0, f(Yes, false, "")}, - {0xa0, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0xa1, 0, 0, 0, f(Yes, false, "")}, - {0xa8, 0, 0, 1, g(Yes, No, true, false, "", " ̈")}, - {0xa9, 0, 0, 0, f(Yes, false, "")}, - {0xaa, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0xab, 0, 0, 0, f(Yes, false, "")}, - {0xaf, 0, 0, 1, g(Yes, No, false, false, "", " ̄")}, - {0xb0, 0, 0, 0, f(Yes, false, "")}, - {0xb2, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0xb3, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0xb4, 0, 0, 1, g(Yes, No, false, false, "", " ́")}, - {0xb5, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0xb6, 0, 0, 0, f(Yes, false, "")}, - {0xb8, 0, 0, 1, g(Yes, No, false, false, "", " ̧")}, - {0xb9, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0xba, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0xbb, 0, 0, 0, f(Yes, false, "")}, - {0xbc, 0, 0, 0, g(Yes, No, false, false, "", "1⁄4")}, - {0xbd, 0, 0, 0, g(Yes, No, false, false, "", "1⁄2")}, - {0xbe, 0, 0, 0, g(Yes, No, false, false, "", "3⁄4")}, - {0xbf, 0, 0, 0, f(Yes, false, "")}, - {0xc0, 0, 0, 1, f(Yes, false, "À")}, - {0xc1, 0, 0, 1, f(Yes, false, "Á")}, - {0xc2, 0, 0, 1, f(Yes, true, "Â")}, - {0xc3, 0, 0, 1, f(Yes, false, "Ã")}, - {0xc4, 0, 0, 1, f(Yes, true, "Ä")}, - {0xc5, 0, 0, 1, f(Yes, true, "Å")}, - {0xc6, 0, 0, 0, f(Yes, true, "")}, - {0xc7, 0, 0, 1, f(Yes, true, "Ç")}, - {0xc8, 0, 0, 1, f(Yes, false, "È")}, - {0xc9, 0, 0, 1, f(Yes, false, "É")}, - {0xca, 0, 0, 1, f(Yes, true, "Ê")}, - {0xcb, 0, 0, 1, f(Yes, false, "Ë")}, - {0xcc, 0, 0, 1, f(Yes, false, "Ì")}, - {0xcd, 0, 0, 1, f(Yes, false, "Í")}, - {0xce, 0, 0, 1, f(Yes, false, "Î")}, - {0xcf, 0, 0, 1, f(Yes, true, "Ï")}, - {0xd0, 0, 0, 0, f(Yes, false, "")}, - {0xd1, 0, 0, 1, f(Yes, false, "Ñ")}, - {0xd2, 0, 0, 1, f(Yes, false, "Ò")}, - {0xd3, 0, 0, 1, f(Yes, false, "Ó")}, - {0xd4, 0, 0, 1, f(Yes, true, "Ô")}, - {0xd5, 0, 0, 1, f(Yes, true, "Õ")}, - {0xd6, 0, 0, 1, f(Yes, true, "Ö")}, - {0xd7, 0, 0, 0, f(Yes, false, "")}, - {0xd8, 0, 0, 0, f(Yes, true, "")}, - {0xd9, 0, 0, 1, f(Yes, false, "Ù")}, - {0xda, 0, 0, 1, f(Yes, false, "Ú")}, - {0xdb, 0, 0, 1, f(Yes, false, "Û")}, - {0xdc, 0, 0, 1, f(Yes, true, "Ü")}, - {0xdd, 0, 0, 1, f(Yes, false, "Ý")}, - {0xde, 0, 0, 0, f(Yes, false, "")}, - {0xe0, 0, 0, 1, f(Yes, false, "à")}, - {0xe1, 0, 0, 1, f(Yes, false, "á")}, - {0xe2, 0, 0, 1, f(Yes, true, "â")}, - {0xe3, 0, 0, 1, f(Yes, false, "ã")}, - {0xe4, 0, 0, 1, f(Yes, true, "ä")}, - {0xe5, 0, 0, 1, f(Yes, true, "å")}, - {0xe6, 0, 0, 0, f(Yes, true, "")}, - {0xe7, 0, 0, 1, f(Yes, true, "ç")}, - {0xe8, 0, 0, 1, f(Yes, false, "è")}, - {0xe9, 0, 0, 1, f(Yes, false, "é")}, - {0xea, 0, 0, 1, f(Yes, true, "ê")}, - {0xeb, 0, 0, 1, f(Yes, false, "ë")}, - {0xec, 0, 0, 1, f(Yes, false, "ì")}, - {0xed, 0, 0, 1, f(Yes, false, "í")}, - {0xee, 0, 0, 1, f(Yes, false, "î")}, - {0xef, 0, 0, 1, f(Yes, true, "ï")}, - {0xf0, 0, 0, 0, f(Yes, false, "")}, - {0xf1, 0, 0, 1, f(Yes, false, "ñ")}, - {0xf2, 0, 0, 1, f(Yes, false, "ò")}, - {0xf3, 0, 0, 1, f(Yes, false, "ó")}, - {0xf4, 0, 0, 1, f(Yes, true, "ô")}, - {0xf5, 0, 0, 1, f(Yes, true, "õ")}, - {0xf6, 0, 0, 1, f(Yes, true, "ö")}, - {0xf7, 0, 0, 0, f(Yes, false, "")}, - {0xf8, 0, 0, 0, f(Yes, true, "")}, - {0xf9, 0, 0, 1, f(Yes, false, "ù")}, - {0xfa, 0, 0, 1, f(Yes, false, "ú")}, - {0xfb, 0, 0, 1, f(Yes, false, "û")}, - {0xfc, 0, 0, 1, f(Yes, true, "ü")}, - {0xfd, 0, 0, 1, f(Yes, false, "ý")}, - {0xfe, 0, 0, 0, f(Yes, false, "")}, - {0xff, 0, 0, 1, f(Yes, false, "ÿ")}, - {0x100, 0, 0, 1, f(Yes, false, "Ā")}, - {0x101, 0, 0, 1, f(Yes, false, "ā")}, - {0x102, 0, 0, 1, f(Yes, true, "Ă")}, - {0x103, 0, 0, 1, f(Yes, true, "ă")}, - {0x104, 0, 0, 1, f(Yes, false, "Ą")}, - {0x105, 0, 0, 1, f(Yes, false, "ą")}, - {0x106, 0, 0, 1, f(Yes, false, "Ć")}, - {0x107, 0, 0, 1, f(Yes, false, "ć")}, - {0x108, 0, 0, 1, f(Yes, false, "Ĉ")}, - {0x109, 0, 0, 1, f(Yes, false, "ĉ")}, - {0x10a, 0, 0, 1, f(Yes, false, "Ċ")}, - {0x10b, 0, 0, 1, f(Yes, false, "ċ")}, - {0x10c, 0, 0, 1, f(Yes, false, "Č")}, - {0x10d, 0, 0, 1, f(Yes, false, "č")}, - {0x10e, 0, 0, 1, f(Yes, false, "Ď")}, - {0x10f, 0, 0, 1, f(Yes, false, "ď")}, - {0x110, 0, 0, 0, f(Yes, false, "")}, - {0x112, 0, 0, 1, f(Yes, true, "Ē")}, - {0x113, 0, 0, 1, f(Yes, true, "ē")}, - {0x114, 0, 0, 1, f(Yes, false, "Ĕ")}, - {0x115, 0, 0, 1, f(Yes, false, "ĕ")}, - {0x116, 0, 0, 1, f(Yes, false, "Ė")}, - {0x117, 0, 0, 1, f(Yes, false, "ė")}, - {0x118, 0, 0, 1, f(Yes, false, "Ę")}, - {0x119, 0, 0, 1, f(Yes, false, "ę")}, - {0x11a, 0, 0, 1, f(Yes, false, "Ě")}, - {0x11b, 0, 0, 1, f(Yes, false, "ě")}, - {0x11c, 0, 0, 1, f(Yes, false, "Ĝ")}, - {0x11d, 0, 0, 1, f(Yes, false, "ĝ")}, - {0x11e, 0, 0, 1, f(Yes, false, "Ğ")}, - {0x11f, 0, 0, 1, f(Yes, false, "ğ")}, - {0x120, 0, 0, 1, f(Yes, false, "Ġ")}, - {0x121, 0, 0, 1, f(Yes, false, "ġ")}, - {0x122, 0, 0, 1, f(Yes, false, "Ģ")}, - {0x123, 0, 0, 1, f(Yes, false, "ģ")}, - {0x124, 0, 0, 1, f(Yes, false, "Ĥ")}, - {0x125, 0, 0, 1, f(Yes, false, "ĥ")}, - {0x126, 0, 0, 0, f(Yes, false, "")}, - {0x128, 0, 0, 1, f(Yes, false, "Ĩ")}, - {0x129, 0, 0, 1, f(Yes, false, "ĩ")}, - {0x12a, 0, 0, 1, f(Yes, false, "Ī")}, - {0x12b, 0, 0, 1, f(Yes, false, "ī")}, - {0x12c, 0, 0, 1, f(Yes, false, "Ĭ")}, - {0x12d, 0, 0, 1, f(Yes, false, "ĭ")}, - {0x12e, 0, 0, 1, f(Yes, false, "Į")}, - {0x12f, 0, 0, 1, f(Yes, false, "į")}, - {0x130, 0, 0, 1, f(Yes, false, "İ")}, - {0x131, 0, 0, 0, f(Yes, false, "")}, - {0x132, 0, 0, 0, g(Yes, No, false, false, "", "IJ")}, - {0x133, 0, 0, 0, g(Yes, No, false, false, "", "ij")}, - {0x134, 0, 0, 1, f(Yes, false, "Ĵ")}, - {0x135, 0, 0, 1, f(Yes, false, "ĵ")}, - {0x136, 0, 0, 1, f(Yes, false, "Ķ")}, - {0x137, 0, 0, 1, f(Yes, false, "ķ")}, - {0x138, 0, 0, 0, f(Yes, false, "")}, - {0x139, 0, 0, 1, f(Yes, false, "Ĺ")}, - {0x13a, 0, 0, 1, f(Yes, false, "ĺ")}, - {0x13b, 0, 0, 1, f(Yes, false, "Ļ")}, - {0x13c, 0, 0, 1, f(Yes, false, "ļ")}, - {0x13d, 0, 0, 1, f(Yes, false, "Ľ")}, - {0x13e, 0, 0, 1, f(Yes, false, "ľ")}, - {0x13f, 0, 0, 0, g(Yes, No, false, false, "", "L·")}, - {0x140, 0, 0, 0, g(Yes, No, false, false, "", "l·")}, - {0x141, 0, 0, 0, f(Yes, false, "")}, - {0x143, 0, 0, 1, f(Yes, false, "Ń")}, - {0x144, 0, 0, 1, f(Yes, false, "ń")}, - {0x145, 0, 0, 1, f(Yes, false, "Ņ")}, - {0x146, 0, 0, 1, f(Yes, false, "ņ")}, - {0x147, 0, 0, 1, f(Yes, false, "Ň")}, - {0x148, 0, 0, 1, f(Yes, false, "ň")}, - {0x149, 0, 0, 0, g(Yes, No, false, false, "", "ʼn")}, - {0x14a, 0, 0, 0, f(Yes, false, "")}, - {0x14c, 0, 0, 1, f(Yes, true, "Ō")}, - {0x14d, 0, 0, 1, f(Yes, true, "ō")}, - {0x14e, 0, 0, 1, f(Yes, false, "Ŏ")}, - {0x14f, 0, 0, 1, f(Yes, false, "ŏ")}, - {0x150, 0, 0, 1, f(Yes, false, "Ő")}, - {0x151, 0, 0, 1, f(Yes, false, "ő")}, - {0x152, 0, 0, 0, f(Yes, false, "")}, - {0x154, 0, 0, 1, f(Yes, false, "Ŕ")}, - {0x155, 0, 0, 1, f(Yes, false, "ŕ")}, - {0x156, 0, 0, 1, f(Yes, false, "Ŗ")}, - {0x157, 0, 0, 1, f(Yes, false, "ŗ")}, - {0x158, 0, 0, 1, f(Yes, false, "Ř")}, - {0x159, 0, 0, 1, f(Yes, false, "ř")}, - {0x15a, 0, 0, 1, f(Yes, true, "Ś")}, - {0x15b, 0, 0, 1, f(Yes, true, "ś")}, - {0x15c, 0, 0, 1, f(Yes, false, "Ŝ")}, - {0x15d, 0, 0, 1, f(Yes, false, "ŝ")}, - {0x15e, 0, 0, 1, f(Yes, false, "Ş")}, - {0x15f, 0, 0, 1, f(Yes, false, "ş")}, - {0x160, 0, 0, 1, f(Yes, true, "Š")}, - {0x161, 0, 0, 1, f(Yes, true, "š")}, - {0x162, 0, 0, 1, f(Yes, false, "Ţ")}, - {0x163, 0, 0, 1, f(Yes, false, "ţ")}, - {0x164, 0, 0, 1, f(Yes, false, "Ť")}, - {0x165, 0, 0, 1, f(Yes, false, "ť")}, - {0x166, 0, 0, 0, f(Yes, false, "")}, - {0x168, 0, 0, 1, f(Yes, true, "Ũ")}, - {0x169, 0, 0, 1, f(Yes, true, "ũ")}, - {0x16a, 0, 0, 1, f(Yes, true, "Ū")}, - {0x16b, 0, 0, 1, f(Yes, true, "ū")}, - {0x16c, 0, 0, 1, f(Yes, false, "Ŭ")}, - {0x16d, 0, 0, 1, f(Yes, false, "ŭ")}, - {0x16e, 0, 0, 1, f(Yes, false, "Ů")}, - {0x16f, 0, 0, 1, f(Yes, false, "ů")}, - {0x170, 0, 0, 1, f(Yes, false, "Ű")}, - {0x171, 0, 0, 1, f(Yes, false, "ű")}, - {0x172, 0, 0, 1, f(Yes, false, "Ų")}, - {0x173, 0, 0, 1, f(Yes, false, "ų")}, - {0x174, 0, 0, 1, f(Yes, false, "Ŵ")}, - {0x175, 0, 0, 1, f(Yes, false, "ŵ")}, - {0x176, 0, 0, 1, f(Yes, false, "Ŷ")}, - {0x177, 0, 0, 1, f(Yes, false, "ŷ")}, - {0x178, 0, 0, 1, f(Yes, false, "Ÿ")}, - {0x179, 0, 0, 1, f(Yes, false, "Ź")}, - {0x17a, 0, 0, 1, f(Yes, false, "ź")}, - {0x17b, 0, 0, 1, f(Yes, false, "Ż")}, - {0x17c, 0, 0, 1, f(Yes, false, "ż")}, - {0x17d, 0, 0, 1, f(Yes, false, "Ž")}, - {0x17e, 0, 0, 1, f(Yes, false, "ž")}, - {0x17f, 0, 0, 0, g(Yes, No, true, false, "", "s")}, - {0x180, 0, 0, 0, f(Yes, false, "")}, - {0x1a0, 0, 0, 1, f(Yes, true, "Ơ")}, - {0x1a1, 0, 0, 1, f(Yes, true, "ơ")}, - {0x1a2, 0, 0, 0, f(Yes, false, "")}, - {0x1af, 0, 0, 1, f(Yes, true, "Ư")}, - {0x1b0, 0, 0, 1, f(Yes, true, "ư")}, - {0x1b1, 0, 0, 0, f(Yes, false, "")}, - {0x1b7, 0, 0, 0, f(Yes, true, "")}, - {0x1b8, 0, 0, 0, f(Yes, false, "")}, - {0x1c4, 0, 0, 1, g(Yes, No, false, false, "", "DŽ")}, - {0x1c5, 0, 0, 1, g(Yes, No, false, false, "", "Dž")}, - {0x1c6, 0, 0, 1, g(Yes, No, false, false, "", "dž")}, - {0x1c7, 0, 0, 0, g(Yes, No, false, false, "", "LJ")}, - {0x1c8, 0, 0, 0, g(Yes, No, false, false, "", "Lj")}, - {0x1c9, 0, 0, 0, g(Yes, No, false, false, "", "lj")}, - {0x1ca, 0, 0, 0, g(Yes, No, false, false, "", "NJ")}, - {0x1cb, 0, 0, 0, g(Yes, No, false, false, "", "Nj")}, - {0x1cc, 0, 0, 0, g(Yes, No, false, false, "", "nj")}, - {0x1cd, 0, 0, 1, f(Yes, false, "Ǎ")}, - {0x1ce, 0, 0, 1, f(Yes, false, "ǎ")}, - {0x1cf, 0, 0, 1, f(Yes, false, "Ǐ")}, - {0x1d0, 0, 0, 1, f(Yes, false, "ǐ")}, - {0x1d1, 0, 0, 1, f(Yes, false, "Ǒ")}, - {0x1d2, 0, 0, 1, f(Yes, false, "ǒ")}, - {0x1d3, 0, 0, 1, f(Yes, false, "Ǔ")}, - {0x1d4, 0, 0, 1, f(Yes, false, "ǔ")}, - {0x1d5, 0, 0, 2, f(Yes, false, "Ǖ")}, - {0x1d6, 0, 0, 2, f(Yes, false, "ǖ")}, - {0x1d7, 0, 0, 2, f(Yes, false, "Ǘ")}, - {0x1d8, 0, 0, 2, f(Yes, false, "ǘ")}, - {0x1d9, 0, 0, 2, f(Yes, false, "Ǚ")}, - {0x1da, 0, 0, 2, f(Yes, false, "ǚ")}, - {0x1db, 0, 0, 2, f(Yes, false, "Ǜ")}, - {0x1dc, 0, 0, 2, f(Yes, false, "ǜ")}, - {0x1dd, 0, 0, 0, f(Yes, false, "")}, - {0x1de, 0, 0, 2, f(Yes, false, "Ǟ")}, - {0x1df, 0, 0, 2, f(Yes, false, "ǟ")}, - {0x1e0, 0, 0, 2, f(Yes, false, "Ǡ")}, - {0x1e1, 0, 0, 2, f(Yes, false, "ǡ")}, - {0x1e2, 0, 0, 1, f(Yes, false, "Ǣ")}, - {0x1e3, 0, 0, 1, f(Yes, false, "ǣ")}, - {0x1e4, 0, 0, 0, f(Yes, false, "")}, - {0x1e6, 0, 0, 1, f(Yes, false, "Ǧ")}, - {0x1e7, 0, 0, 1, f(Yes, false, "ǧ")}, - {0x1e8, 0, 0, 1, f(Yes, false, "Ǩ")}, - {0x1e9, 0, 0, 1, f(Yes, false, "ǩ")}, - {0x1ea, 0, 0, 1, f(Yes, true, "Ǫ")}, - {0x1eb, 0, 0, 1, f(Yes, true, "ǫ")}, - {0x1ec, 0, 0, 2, f(Yes, false, "Ǭ")}, - {0x1ed, 0, 0, 2, f(Yes, false, "ǭ")}, - {0x1ee, 0, 0, 1, f(Yes, false, "Ǯ")}, - {0x1ef, 0, 0, 1, f(Yes, false, "ǯ")}, - {0x1f0, 0, 0, 1, f(Yes, false, "ǰ")}, - {0x1f1, 0, 0, 0, g(Yes, No, false, false, "", "DZ")}, - {0x1f2, 0, 0, 0, g(Yes, No, false, false, "", "Dz")}, - {0x1f3, 0, 0, 0, g(Yes, No, false, false, "", "dz")}, - {0x1f4, 0, 0, 1, f(Yes, false, "Ǵ")}, - {0x1f5, 0, 0, 1, f(Yes, false, "ǵ")}, - {0x1f6, 0, 0, 0, f(Yes, false, "")}, - {0x1f8, 0, 0, 1, f(Yes, false, "Ǹ")}, - {0x1f9, 0, 0, 1, f(Yes, false, "ǹ")}, - {0x1fa, 0, 0, 2, f(Yes, false, "Ǻ")}, - {0x1fb, 0, 0, 2, f(Yes, false, "ǻ")}, - {0x1fc, 0, 0, 1, f(Yes, false, "Ǽ")}, - {0x1fd, 0, 0, 1, f(Yes, false, "ǽ")}, - {0x1fe, 0, 0, 1, f(Yes, false, "Ǿ")}, - {0x1ff, 0, 0, 1, f(Yes, false, "ǿ")}, - {0x200, 0, 0, 1, f(Yes, false, "Ȁ")}, - {0x201, 0, 0, 1, f(Yes, false, "ȁ")}, - {0x202, 0, 0, 1, f(Yes, false, "Ȃ")}, - {0x203, 0, 0, 1, f(Yes, false, "ȃ")}, - {0x204, 0, 0, 1, f(Yes, false, "Ȅ")}, - {0x205, 0, 0, 1, f(Yes, false, "ȅ")}, - {0x206, 0, 0, 1, f(Yes, false, "Ȇ")}, - {0x207, 0, 0, 1, f(Yes, false, "ȇ")}, - {0x208, 0, 0, 1, f(Yes, false, "Ȉ")}, - {0x209, 0, 0, 1, f(Yes, false, "ȉ")}, - {0x20a, 0, 0, 1, f(Yes, false, "Ȋ")}, - {0x20b, 0, 0, 1, f(Yes, false, "ȋ")}, - {0x20c, 0, 0, 1, f(Yes, false, "Ȍ")}, - {0x20d, 0, 0, 1, f(Yes, false, "ȍ")}, - {0x20e, 0, 0, 1, f(Yes, false, "Ȏ")}, - {0x20f, 0, 0, 1, f(Yes, false, "ȏ")}, - {0x210, 0, 0, 1, f(Yes, false, "Ȑ")}, - {0x211, 0, 0, 1, f(Yes, false, "ȑ")}, - {0x212, 0, 0, 1, f(Yes, false, "Ȓ")}, - {0x213, 0, 0, 1, f(Yes, false, "ȓ")}, - {0x214, 0, 0, 1, f(Yes, false, "Ȕ")}, - {0x215, 0, 0, 1, f(Yes, false, "ȕ")}, - {0x216, 0, 0, 1, f(Yes, false, "Ȗ")}, - {0x217, 0, 0, 1, f(Yes, false, "ȗ")}, - {0x218, 0, 0, 1, f(Yes, false, "Ș")}, - {0x219, 0, 0, 1, f(Yes, false, "ș")}, - {0x21a, 0, 0, 1, f(Yes, false, "Ț")}, - {0x21b, 0, 0, 1, f(Yes, false, "ț")}, - {0x21c, 0, 0, 0, f(Yes, false, "")}, - {0x21e, 0, 0, 1, f(Yes, false, "Ȟ")}, - {0x21f, 0, 0, 1, f(Yes, false, "ȟ")}, - {0x220, 0, 0, 0, f(Yes, false, "")}, - {0x226, 0, 0, 1, f(Yes, true, "Ȧ")}, - {0x227, 0, 0, 1, f(Yes, true, "ȧ")}, - {0x228, 0, 0, 1, f(Yes, true, "Ȩ")}, - {0x229, 0, 0, 1, f(Yes, true, "ȩ")}, - {0x22a, 0, 0, 2, f(Yes, false, "Ȫ")}, - {0x22b, 0, 0, 2, f(Yes, false, "ȫ")}, - {0x22c, 0, 0, 2, f(Yes, false, "Ȭ")}, - {0x22d, 0, 0, 2, f(Yes, false, "ȭ")}, - {0x22e, 0, 0, 1, f(Yes, true, "Ȯ")}, - {0x22f, 0, 0, 1, f(Yes, true, "ȯ")}, - {0x230, 0, 0, 2, f(Yes, false, "Ȱ")}, - {0x231, 0, 0, 2, f(Yes, false, "ȱ")}, - {0x232, 0, 0, 1, f(Yes, false, "Ȳ")}, - {0x233, 0, 0, 1, f(Yes, false, "ȳ")}, - {0x234, 0, 0, 0, f(Yes, false, "")}, - {0x292, 0, 0, 0, f(Yes, true, "")}, - {0x293, 0, 0, 0, f(Yes, false, "")}, - {0x2b0, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x2b1, 0, 0, 0, g(Yes, No, false, false, "", "ɦ")}, - {0x2b2, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x2b3, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x2b4, 0, 0, 0, g(Yes, No, false, false, "", "ɹ")}, - {0x2b5, 0, 0, 0, g(Yes, No, false, false, "", "ɻ")}, - {0x2b6, 0, 0, 0, g(Yes, No, false, false, "", "ʁ")}, - {0x2b7, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x2b8, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x2b9, 0, 0, 0, f(Yes, false, "")}, - {0x2d8, 0, 0, 1, g(Yes, No, false, false, "", " ̆")}, - {0x2d9, 0, 0, 1, g(Yes, No, false, false, "", " ̇")}, - {0x2da, 0, 0, 1, g(Yes, No, false, false, "", " ̊")}, - {0x2db, 0, 0, 1, g(Yes, No, false, false, "", " ̨")}, - {0x2dc, 0, 0, 1, g(Yes, No, false, false, "", " ̃")}, - {0x2dd, 0, 0, 1, g(Yes, No, false, false, "", " ̋")}, - {0x2de, 0, 0, 0, f(Yes, false, "")}, - {0x2e0, 0, 0, 0, g(Yes, No, false, false, "", "ɣ")}, - {0x2e1, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x2e2, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x2e3, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x2e4, 0, 0, 0, g(Yes, No, false, false, "", "ʕ")}, - {0x2e5, 0, 0, 0, f(Yes, false, "")}, - {0x300, 230, 1, 1, f(Maybe, false, "")}, - {0x305, 230, 1, 1, f(Yes, false, "")}, - {0x306, 230, 1, 1, f(Maybe, false, "")}, - {0x30d, 230, 1, 1, f(Yes, false, "")}, - {0x30f, 230, 1, 1, f(Maybe, false, "")}, - {0x310, 230, 1, 1, f(Yes, false, "")}, - {0x311, 230, 1, 1, f(Maybe, false, "")}, - {0x312, 230, 1, 1, f(Yes, false, "")}, - {0x313, 230, 1, 1, f(Maybe, false, "")}, - {0x315, 232, 1, 1, f(Yes, false, "")}, - {0x316, 220, 1, 1, f(Yes, false, "")}, - {0x31a, 232, 1, 1, f(Yes, false, "")}, - {0x31b, 216, 1, 1, f(Maybe, false, "")}, - {0x31c, 220, 1, 1, f(Yes, false, "")}, - {0x321, 202, 1, 1, f(Yes, false, "")}, - {0x323, 220, 1, 1, f(Maybe, false, "")}, - {0x327, 202, 1, 1, f(Maybe, false, "")}, - {0x329, 220, 1, 1, f(Yes, false, "")}, - {0x32d, 220, 1, 1, f(Maybe, false, "")}, - {0x32f, 220, 1, 1, f(Yes, false, "")}, - {0x330, 220, 1, 1, f(Maybe, false, "")}, - {0x332, 220, 1, 1, f(Yes, false, "")}, - {0x334, 1, 1, 1, f(Yes, false, "")}, - {0x338, 1, 1, 1, f(Maybe, false, "")}, - {0x339, 220, 1, 1, f(Yes, false, "")}, - {0x33d, 230, 1, 1, f(Yes, false, "")}, - {0x340, 230, 1, 1, f(No, false, "̀")}, - {0x341, 230, 1, 1, f(No, false, "́")}, - {0x342, 230, 1, 1, f(Maybe, false, "")}, - {0x343, 230, 1, 1, f(No, false, "̓")}, - {0x344, 230, 2, 2, f(No, false, "̈́")}, - {0x345, 240, 1, 1, f(Maybe, false, "")}, - {0x346, 230, 1, 1, f(Yes, false, "")}, - {0x347, 220, 1, 1, f(Yes, false, "")}, - {0x34a, 230, 1, 1, f(Yes, false, "")}, - {0x34d, 220, 1, 1, f(Yes, false, "")}, - {0x34f, 0, 0, 0, f(Yes, false, "")}, - {0x350, 230, 1, 1, f(Yes, false, "")}, - {0x353, 220, 1, 1, f(Yes, false, "")}, - {0x357, 230, 1, 1, f(Yes, false, "")}, - {0x358, 232, 1, 1, f(Yes, false, "")}, - {0x359, 220, 1, 1, f(Yes, false, "")}, - {0x35b, 230, 1, 1, f(Yes, false, "")}, - {0x35c, 233, 1, 1, f(Yes, false, "")}, - {0x35d, 234, 1, 1, f(Yes, false, "")}, - {0x35f, 233, 1, 1, f(Yes, false, "")}, - {0x360, 234, 1, 1, f(Yes, false, "")}, - {0x362, 233, 1, 1, f(Yes, false, "")}, - {0x363, 230, 1, 1, f(Yes, false, "")}, - {0x370, 0, 0, 0, f(Yes, false, "")}, - {0x374, 0, 0, 0, f(No, false, "ʹ")}, - {0x375, 0, 0, 0, f(Yes, false, "")}, - {0x37a, 0, 0, 1, g(Yes, No, false, false, "", " ͅ")}, - {0x37b, 0, 0, 0, f(Yes, false, "")}, - {0x37e, 0, 0, 0, f(No, false, ";")}, - {0x37f, 0, 0, 0, f(Yes, false, "")}, - {0x384, 0, 0, 1, g(Yes, No, false, false, "", " ́")}, - {0x385, 0, 0, 2, g(Yes, No, false, false, "΅", " ̈́")}, - {0x386, 0, 0, 1, f(Yes, false, "Ά")}, - {0x387, 0, 0, 0, f(No, false, "·")}, - {0x388, 0, 0, 1, f(Yes, false, "Έ")}, - {0x389, 0, 0, 1, f(Yes, false, "Ή")}, - {0x38a, 0, 0, 1, f(Yes, false, "Ί")}, - {0x38b, 0, 0, 0, f(Yes, false, "")}, - {0x38c, 0, 0, 1, f(Yes, false, "Ό")}, - {0x38d, 0, 0, 0, f(Yes, false, "")}, - {0x38e, 0, 0, 1, f(Yes, false, "Ύ")}, - {0x38f, 0, 0, 1, f(Yes, false, "Ώ")}, - {0x390, 0, 0, 2, f(Yes, false, "ΐ")}, - {0x391, 0, 0, 0, f(Yes, true, "")}, - {0x392, 0, 0, 0, f(Yes, false, "")}, - {0x395, 0, 0, 0, f(Yes, true, "")}, - {0x396, 0, 0, 0, f(Yes, false, "")}, - {0x397, 0, 0, 0, f(Yes, true, "")}, - {0x398, 0, 0, 0, f(Yes, false, "")}, - {0x399, 0, 0, 0, f(Yes, true, "")}, - {0x39a, 0, 0, 0, f(Yes, false, "")}, - {0x39f, 0, 0, 0, f(Yes, true, "")}, - {0x3a0, 0, 0, 0, f(Yes, false, "")}, - {0x3a1, 0, 0, 0, f(Yes, true, "")}, - {0x3a2, 0, 0, 0, f(Yes, false, "")}, - {0x3a5, 0, 0, 0, f(Yes, true, "")}, - {0x3a6, 0, 0, 0, f(Yes, false, "")}, - {0x3a9, 0, 0, 0, f(Yes, true, "")}, - {0x3aa, 0, 0, 1, f(Yes, false, "Ϊ")}, - {0x3ab, 0, 0, 1, f(Yes, false, "Ϋ")}, - {0x3ac, 0, 0, 1, f(Yes, true, "ά")}, - {0x3ad, 0, 0, 1, f(Yes, false, "έ")}, - {0x3ae, 0, 0, 1, f(Yes, true, "ή")}, - {0x3af, 0, 0, 1, f(Yes, false, "ί")}, - {0x3b0, 0, 0, 2, f(Yes, false, "ΰ")}, - {0x3b1, 0, 0, 0, f(Yes, true, "")}, - {0x3b2, 0, 0, 0, f(Yes, false, "")}, - {0x3b5, 0, 0, 0, f(Yes, true, "")}, - {0x3b6, 0, 0, 0, f(Yes, false, "")}, - {0x3b7, 0, 0, 0, f(Yes, true, "")}, - {0x3b8, 0, 0, 0, f(Yes, false, "")}, - {0x3b9, 0, 0, 0, f(Yes, true, "")}, - {0x3ba, 0, 0, 0, f(Yes, false, "")}, - {0x3bf, 0, 0, 0, f(Yes, true, "")}, - {0x3c0, 0, 0, 0, f(Yes, false, "")}, - {0x3c1, 0, 0, 0, f(Yes, true, "")}, - {0x3c2, 0, 0, 0, f(Yes, false, "")}, - {0x3c5, 0, 0, 0, f(Yes, true, "")}, - {0x3c6, 0, 0, 0, f(Yes, false, "")}, - {0x3c9, 0, 0, 0, f(Yes, true, "")}, - {0x3ca, 0, 0, 1, f(Yes, true, "ϊ")}, - {0x3cb, 0, 0, 1, f(Yes, true, "ϋ")}, - {0x3cc, 0, 0, 1, f(Yes, false, "ό")}, - {0x3cd, 0, 0, 1, f(Yes, false, "ύ")}, - {0x3ce, 0, 0, 1, f(Yes, true, "ώ")}, - {0x3cf, 0, 0, 0, f(Yes, false, "")}, - {0x3d0, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x3d1, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x3d2, 0, 0, 0, g(Yes, No, true, false, "", "Υ")}, - {0x3d3, 0, 0, 1, g(Yes, No, false, false, "ϓ", "Ύ")}, - {0x3d4, 0, 0, 1, g(Yes, No, false, false, "ϔ", "Ϋ")}, - {0x3d5, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x3d6, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x3d7, 0, 0, 0, f(Yes, false, "")}, - {0x3f0, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x3f1, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x3f2, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x3f3, 0, 0, 0, f(Yes, false, "")}, - {0x3f4, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x3f5, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x3f6, 0, 0, 0, f(Yes, false, "")}, - {0x3f9, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x3fa, 0, 0, 0, f(Yes, false, "")}, - {0x400, 0, 0, 1, f(Yes, false, "Ѐ")}, - {0x401, 0, 0, 1, f(Yes, false, "Ё")}, - {0x402, 0, 0, 0, f(Yes, false, "")}, - {0x403, 0, 0, 1, f(Yes, false, "Ѓ")}, - {0x404, 0, 0, 0, f(Yes, false, "")}, - {0x406, 0, 0, 0, f(Yes, true, "")}, - {0x407, 0, 0, 1, f(Yes, false, "Ї")}, - {0x408, 0, 0, 0, f(Yes, false, "")}, - {0x40c, 0, 0, 1, f(Yes, false, "Ќ")}, - {0x40d, 0, 0, 1, f(Yes, false, "Ѝ")}, - {0x40e, 0, 0, 1, f(Yes, false, "Ў")}, - {0x40f, 0, 0, 0, f(Yes, false, "")}, - {0x410, 0, 0, 0, f(Yes, true, "")}, - {0x411, 0, 0, 0, f(Yes, false, "")}, - {0x413, 0, 0, 0, f(Yes, true, "")}, - {0x414, 0, 0, 0, f(Yes, false, "")}, - {0x415, 0, 0, 0, f(Yes, true, "")}, - {0x419, 0, 0, 1, f(Yes, false, "Й")}, - {0x41a, 0, 0, 0, f(Yes, true, "")}, - {0x41b, 0, 0, 0, f(Yes, false, "")}, - {0x41e, 0, 0, 0, f(Yes, true, "")}, - {0x41f, 0, 0, 0, f(Yes, false, "")}, - {0x423, 0, 0, 0, f(Yes, true, "")}, - {0x424, 0, 0, 0, f(Yes, false, "")}, - {0x427, 0, 0, 0, f(Yes, true, "")}, - {0x428, 0, 0, 0, f(Yes, false, "")}, - {0x42b, 0, 0, 0, f(Yes, true, "")}, - {0x42c, 0, 0, 0, f(Yes, false, "")}, - {0x42d, 0, 0, 0, f(Yes, true, "")}, - {0x42e, 0, 0, 0, f(Yes, false, "")}, - {0x430, 0, 0, 0, f(Yes, true, "")}, - {0x431, 0, 0, 0, f(Yes, false, "")}, - {0x433, 0, 0, 0, f(Yes, true, "")}, - {0x434, 0, 0, 0, f(Yes, false, "")}, - {0x435, 0, 0, 0, f(Yes, true, "")}, - {0x439, 0, 0, 1, f(Yes, false, "й")}, - {0x43a, 0, 0, 0, f(Yes, true, "")}, - {0x43b, 0, 0, 0, f(Yes, false, "")}, - {0x43e, 0, 0, 0, f(Yes, true, "")}, - {0x43f, 0, 0, 0, f(Yes, false, "")}, - {0x443, 0, 0, 0, f(Yes, true, "")}, - {0x444, 0, 0, 0, f(Yes, false, "")}, - {0x447, 0, 0, 0, f(Yes, true, "")}, - {0x448, 0, 0, 0, f(Yes, false, "")}, - {0x44b, 0, 0, 0, f(Yes, true, "")}, - {0x44c, 0, 0, 0, f(Yes, false, "")}, - {0x44d, 0, 0, 0, f(Yes, true, "")}, - {0x44e, 0, 0, 0, f(Yes, false, "")}, - {0x450, 0, 0, 1, f(Yes, false, "ѐ")}, - {0x451, 0, 0, 1, f(Yes, false, "ё")}, - {0x452, 0, 0, 0, f(Yes, false, "")}, - {0x453, 0, 0, 1, f(Yes, false, "ѓ")}, - {0x454, 0, 0, 0, f(Yes, false, "")}, - {0x456, 0, 0, 0, f(Yes, true, "")}, - {0x457, 0, 0, 1, f(Yes, false, "ї")}, - {0x458, 0, 0, 0, f(Yes, false, "")}, - {0x45c, 0, 0, 1, f(Yes, false, "ќ")}, - {0x45d, 0, 0, 1, f(Yes, false, "ѝ")}, - {0x45e, 0, 0, 1, f(Yes, false, "ў")}, - {0x45f, 0, 0, 0, f(Yes, false, "")}, - {0x474, 0, 0, 0, f(Yes, true, "")}, - {0x476, 0, 0, 1, f(Yes, false, "Ѷ")}, - {0x477, 0, 0, 1, f(Yes, false, "ѷ")}, - {0x478, 0, 0, 0, f(Yes, false, "")}, - {0x483, 230, 1, 1, f(Yes, false, "")}, - {0x488, 0, 0, 0, f(Yes, false, "")}, - {0x4c1, 0, 0, 1, f(Yes, false, "Ӂ")}, - {0x4c2, 0, 0, 1, f(Yes, false, "ӂ")}, - {0x4c3, 0, 0, 0, f(Yes, false, "")}, - {0x4d0, 0, 0, 1, f(Yes, false, "Ӑ")}, - {0x4d1, 0, 0, 1, f(Yes, false, "ӑ")}, - {0x4d2, 0, 0, 1, f(Yes, false, "Ӓ")}, - {0x4d3, 0, 0, 1, f(Yes, false, "ӓ")}, - {0x4d4, 0, 0, 0, f(Yes, false, "")}, - {0x4d6, 0, 0, 1, f(Yes, false, "Ӗ")}, - {0x4d7, 0, 0, 1, f(Yes, false, "ӗ")}, - {0x4d8, 0, 0, 0, f(Yes, true, "")}, - {0x4da, 0, 0, 1, f(Yes, false, "Ӛ")}, - {0x4db, 0, 0, 1, f(Yes, false, "ӛ")}, - {0x4dc, 0, 0, 1, f(Yes, false, "Ӝ")}, - {0x4dd, 0, 0, 1, f(Yes, false, "ӝ")}, - {0x4de, 0, 0, 1, f(Yes, false, "Ӟ")}, - {0x4df, 0, 0, 1, f(Yes, false, "ӟ")}, - {0x4e0, 0, 0, 0, f(Yes, false, "")}, - {0x4e2, 0, 0, 1, f(Yes, false, "Ӣ")}, - {0x4e3, 0, 0, 1, f(Yes, false, "ӣ")}, - {0x4e4, 0, 0, 1, f(Yes, false, "Ӥ")}, - {0x4e5, 0, 0, 1, f(Yes, false, "ӥ")}, - {0x4e6, 0, 0, 1, f(Yes, false, "Ӧ")}, - {0x4e7, 0, 0, 1, f(Yes, false, "ӧ")}, - {0x4e8, 0, 0, 0, f(Yes, true, "")}, - {0x4ea, 0, 0, 1, f(Yes, false, "Ӫ")}, - {0x4eb, 0, 0, 1, f(Yes, false, "ӫ")}, - {0x4ec, 0, 0, 1, f(Yes, false, "Ӭ")}, - {0x4ed, 0, 0, 1, f(Yes, false, "ӭ")}, - {0x4ee, 0, 0, 1, f(Yes, false, "Ӯ")}, - {0x4ef, 0, 0, 1, f(Yes, false, "ӯ")}, - {0x4f0, 0, 0, 1, f(Yes, false, "Ӱ")}, - {0x4f1, 0, 0, 1, f(Yes, false, "ӱ")}, - {0x4f2, 0, 0, 1, f(Yes, false, "Ӳ")}, - {0x4f3, 0, 0, 1, f(Yes, false, "ӳ")}, - {0x4f4, 0, 0, 1, f(Yes, false, "Ӵ")}, - {0x4f5, 0, 0, 1, f(Yes, false, "ӵ")}, - {0x4f6, 0, 0, 0, f(Yes, false, "")}, - {0x4f8, 0, 0, 1, f(Yes, false, "Ӹ")}, - {0x4f9, 0, 0, 1, f(Yes, false, "ӹ")}, - {0x4fa, 0, 0, 0, f(Yes, false, "")}, - {0x587, 0, 0, 0, g(Yes, No, false, false, "", "եւ")}, - {0x588, 0, 0, 0, f(Yes, false, "")}, - {0x591, 220, 1, 1, f(Yes, false, "")}, - {0x592, 230, 1, 1, f(Yes, false, "")}, - {0x596, 220, 1, 1, f(Yes, false, "")}, - {0x597, 230, 1, 1, f(Yes, false, "")}, - {0x59a, 222, 1, 1, f(Yes, false, "")}, - {0x59b, 220, 1, 1, f(Yes, false, "")}, - {0x59c, 230, 1, 1, f(Yes, false, "")}, - {0x5a2, 220, 1, 1, f(Yes, false, "")}, - {0x5a8, 230, 1, 1, f(Yes, false, "")}, - {0x5aa, 220, 1, 1, f(Yes, false, "")}, - {0x5ab, 230, 1, 1, f(Yes, false, "")}, - {0x5ad, 222, 1, 1, f(Yes, false, "")}, - {0x5ae, 228, 1, 1, f(Yes, false, "")}, - {0x5af, 230, 1, 1, f(Yes, false, "")}, - {0x5b0, 10, 1, 1, f(Yes, false, "")}, - {0x5b1, 11, 1, 1, f(Yes, false, "")}, - {0x5b2, 12, 1, 1, f(Yes, false, "")}, - {0x5b3, 13, 1, 1, f(Yes, false, "")}, - {0x5b4, 14, 1, 1, f(Yes, false, "")}, - {0x5b5, 15, 1, 1, f(Yes, false, "")}, - {0x5b6, 16, 1, 1, f(Yes, false, "")}, - {0x5b7, 17, 1, 1, f(Yes, false, "")}, - {0x5b8, 18, 1, 1, f(Yes, false, "")}, - {0x5b9, 19, 1, 1, f(Yes, false, "")}, - {0x5bb, 20, 1, 1, f(Yes, false, "")}, - {0x5bc, 21, 1, 1, f(Yes, false, "")}, - {0x5bd, 22, 1, 1, f(Yes, false, "")}, - {0x5be, 0, 0, 0, f(Yes, false, "")}, - {0x5bf, 23, 1, 1, f(Yes, false, "")}, - {0x5c0, 0, 0, 0, f(Yes, false, "")}, - {0x5c1, 24, 1, 1, f(Yes, false, "")}, - {0x5c2, 25, 1, 1, f(Yes, false, "")}, - {0x5c3, 0, 0, 0, f(Yes, false, "")}, - {0x5c4, 230, 1, 1, f(Yes, false, "")}, - {0x5c5, 220, 1, 1, f(Yes, false, "")}, - {0x5c6, 0, 0, 0, f(Yes, false, "")}, - {0x5c7, 18, 1, 1, f(Yes, false, "")}, - {0x5c8, 0, 0, 0, f(Yes, false, "")}, - {0x610, 230, 1, 1, f(Yes, false, "")}, - {0x618, 30, 1, 1, f(Yes, false, "")}, - {0x619, 31, 1, 1, f(Yes, false, "")}, - {0x61a, 32, 1, 1, f(Yes, false, "")}, - {0x61b, 0, 0, 0, f(Yes, false, "")}, - {0x622, 0, 0, 1, f(Yes, false, "آ")}, - {0x623, 0, 0, 1, f(Yes, false, "أ")}, - {0x624, 0, 0, 1, f(Yes, false, "ؤ")}, - {0x625, 0, 0, 1, f(Yes, false, "إ")}, - {0x626, 0, 0, 1, f(Yes, false, "ئ")}, - {0x627, 0, 0, 0, f(Yes, true, "")}, - {0x628, 0, 0, 0, f(Yes, false, "")}, - {0x648, 0, 0, 0, f(Yes, true, "")}, - {0x649, 0, 0, 0, f(Yes, false, "")}, - {0x64a, 0, 0, 0, f(Yes, true, "")}, - {0x64b, 27, 1, 1, f(Yes, false, "")}, - {0x64c, 28, 1, 1, f(Yes, false, "")}, - {0x64d, 29, 1, 1, f(Yes, false, "")}, - {0x64e, 30, 1, 1, f(Yes, false, "")}, - {0x64f, 31, 1, 1, f(Yes, false, "")}, - {0x650, 32, 1, 1, f(Yes, false, "")}, - {0x651, 33, 1, 1, f(Yes, false, "")}, - {0x652, 34, 1, 1, f(Yes, false, "")}, - {0x653, 230, 1, 1, f(Maybe, false, "")}, - {0x655, 220, 1, 1, f(Maybe, false, "")}, - {0x656, 220, 1, 1, f(Yes, false, "")}, - {0x657, 230, 1, 1, f(Yes, false, "")}, - {0x65c, 220, 1, 1, f(Yes, false, "")}, - {0x65d, 230, 1, 1, f(Yes, false, "")}, - {0x65f, 220, 1, 1, f(Yes, false, "")}, - {0x660, 0, 0, 0, f(Yes, false, "")}, - {0x670, 35, 1, 1, f(Yes, false, "")}, - {0x671, 0, 0, 0, f(Yes, false, "")}, - {0x675, 0, 0, 0, g(Yes, No, false, false, "", "اٴ")}, - {0x676, 0, 0, 0, g(Yes, No, false, false, "", "وٴ")}, - {0x677, 0, 0, 0, g(Yes, No, false, false, "", "ۇٴ")}, - {0x678, 0, 0, 0, g(Yes, No, false, false, "", "يٴ")}, - {0x679, 0, 0, 0, f(Yes, false, "")}, - {0x6c0, 0, 0, 1, f(Yes, false, "ۀ")}, - {0x6c1, 0, 0, 0, f(Yes, true, "")}, - {0x6c2, 0, 0, 1, f(Yes, false, "ۂ")}, - {0x6c3, 0, 0, 0, f(Yes, false, "")}, - {0x6d2, 0, 0, 0, f(Yes, true, "")}, - {0x6d3, 0, 0, 1, f(Yes, false, "ۓ")}, - {0x6d4, 0, 0, 0, f(Yes, false, "")}, - {0x6d5, 0, 0, 0, f(Yes, true, "")}, - {0x6d6, 230, 1, 1, f(Yes, false, "")}, - {0x6dd, 0, 0, 0, f(Yes, false, "")}, - {0x6df, 230, 1, 1, f(Yes, false, "")}, - {0x6e3, 220, 1, 1, f(Yes, false, "")}, - {0x6e4, 230, 1, 1, f(Yes, false, "")}, - {0x6e5, 0, 0, 0, f(Yes, false, "")}, - {0x6e7, 230, 1, 1, f(Yes, false, "")}, - {0x6e9, 0, 0, 0, f(Yes, false, "")}, - {0x6ea, 220, 1, 1, f(Yes, false, "")}, - {0x6eb, 230, 1, 1, f(Yes, false, "")}, - {0x6ed, 220, 1, 1, f(Yes, false, "")}, - {0x6ee, 0, 0, 0, f(Yes, false, "")}, - {0x711, 36, 1, 1, f(Yes, false, "")}, - {0x712, 0, 0, 0, f(Yes, false, "")}, - {0x730, 230, 1, 1, f(Yes, false, "")}, - {0x731, 220, 1, 1, f(Yes, false, "")}, - {0x732, 230, 1, 1, f(Yes, false, "")}, - {0x734, 220, 1, 1, f(Yes, false, "")}, - {0x735, 230, 1, 1, f(Yes, false, "")}, - {0x737, 220, 1, 1, f(Yes, false, "")}, - {0x73a, 230, 1, 1, f(Yes, false, "")}, - {0x73b, 220, 1, 1, f(Yes, false, "")}, - {0x73d, 230, 1, 1, f(Yes, false, "")}, - {0x73e, 220, 1, 1, f(Yes, false, "")}, - {0x73f, 230, 1, 1, f(Yes, false, "")}, - {0x742, 220, 1, 1, f(Yes, false, "")}, - {0x743, 230, 1, 1, f(Yes, false, "")}, - {0x744, 220, 1, 1, f(Yes, false, "")}, - {0x745, 230, 1, 1, f(Yes, false, "")}, - {0x746, 220, 1, 1, f(Yes, false, "")}, - {0x747, 230, 1, 1, f(Yes, false, "")}, - {0x748, 220, 1, 1, f(Yes, false, "")}, - {0x749, 230, 1, 1, f(Yes, false, "")}, - {0x74b, 0, 0, 0, f(Yes, false, "")}, - {0x7eb, 230, 1, 1, f(Yes, false, "")}, - {0x7f2, 220, 1, 1, f(Yes, false, "")}, - {0x7f3, 230, 1, 1, f(Yes, false, "")}, - {0x7f4, 0, 0, 0, f(Yes, false, "")}, - {0x816, 230, 1, 1, f(Yes, false, "")}, - {0x81a, 0, 0, 0, f(Yes, false, "")}, - {0x81b, 230, 1, 1, f(Yes, false, "")}, - {0x824, 0, 0, 0, f(Yes, false, "")}, - {0x825, 230, 1, 1, f(Yes, false, "")}, - {0x828, 0, 0, 0, f(Yes, false, "")}, - {0x829, 230, 1, 1, f(Yes, false, "")}, - {0x82e, 0, 0, 0, f(Yes, false, "")}, - {0x859, 220, 1, 1, f(Yes, false, "")}, - {0x85c, 0, 0, 0, f(Yes, false, "")}, - {0x8d4, 230, 1, 1, f(Yes, false, "")}, - {0x8e2, 0, 0, 0, f(Yes, false, "")}, - {0x8e3, 220, 1, 1, f(Yes, false, "")}, - {0x8e4, 230, 1, 1, f(Yes, false, "")}, - {0x8e6, 220, 1, 1, f(Yes, false, "")}, - {0x8e7, 230, 1, 1, f(Yes, false, "")}, - {0x8e9, 220, 1, 1, f(Yes, false, "")}, - {0x8ea, 230, 1, 1, f(Yes, false, "")}, - {0x8ed, 220, 1, 1, f(Yes, false, "")}, - {0x8f0, 27, 1, 1, f(Yes, false, "")}, - {0x8f1, 28, 1, 1, f(Yes, false, "")}, - {0x8f2, 29, 1, 1, f(Yes, false, "")}, - {0x8f3, 230, 1, 1, f(Yes, false, "")}, - {0x8f6, 220, 1, 1, f(Yes, false, "")}, - {0x8f7, 230, 1, 1, f(Yes, false, "")}, - {0x8f9, 220, 1, 1, f(Yes, false, "")}, - {0x8fb, 230, 1, 1, f(Yes, false, "")}, - {0x900, 0, 0, 0, f(Yes, false, "")}, - {0x928, 0, 0, 0, f(Yes, true, "")}, - {0x929, 0, 0, 1, f(Yes, false, "ऩ")}, - {0x92a, 0, 0, 0, f(Yes, false, "")}, - {0x930, 0, 0, 0, f(Yes, true, "")}, - {0x931, 0, 0, 1, f(Yes, false, "ऱ")}, - {0x932, 0, 0, 0, f(Yes, false, "")}, - {0x933, 0, 0, 0, f(Yes, true, "")}, - {0x934, 0, 0, 1, f(Yes, false, "ऴ")}, - {0x935, 0, 0, 0, f(Yes, false, "")}, - {0x93c, 7, 1, 1, f(Maybe, false, "")}, - {0x93d, 0, 0, 0, f(Yes, false, "")}, - {0x94d, 9, 1, 1, f(Yes, false, "")}, - {0x94e, 0, 0, 0, f(Yes, false, "")}, - {0x951, 230, 1, 1, f(Yes, false, "")}, - {0x952, 220, 1, 1, f(Yes, false, "")}, - {0x953, 230, 1, 1, f(Yes, false, "")}, - {0x955, 0, 0, 0, f(Yes, false, "")}, - {0x958, 0, 0, 1, f(No, false, "क़")}, - {0x959, 0, 0, 1, f(No, false, "ख़")}, - {0x95a, 0, 0, 1, f(No, false, "ग़")}, - {0x95b, 0, 0, 1, f(No, false, "ज़")}, - {0x95c, 0, 0, 1, f(No, false, "ड़")}, - {0x95d, 0, 0, 1, f(No, false, "ढ़")}, - {0x95e, 0, 0, 1, f(No, false, "फ़")}, - {0x95f, 0, 0, 1, f(No, false, "य़")}, - {0x960, 0, 0, 0, f(Yes, false, "")}, - {0x9bc, 7, 1, 1, f(Yes, false, "")}, - {0x9bd, 0, 0, 0, f(Yes, false, "")}, - {0x9be, 0, 1, 1, f(Maybe, false, "")}, - {0x9bf, 0, 0, 0, f(Yes, false, "")}, - {0x9c7, 0, 0, 0, f(Yes, true, "")}, - {0x9c8, 0, 0, 0, f(Yes, false, "")}, - {0x9cb, 0, 0, 1, f(Yes, false, "ো")}, - {0x9cc, 0, 0, 1, f(Yes, false, "ৌ")}, - {0x9cd, 9, 1, 1, f(Yes, false, "")}, - {0x9ce, 0, 0, 0, f(Yes, false, "")}, - {0x9d7, 0, 1, 1, f(Maybe, false, "")}, - {0x9d8, 0, 0, 0, f(Yes, false, "")}, - {0x9dc, 0, 0, 1, f(No, false, "ড়")}, - {0x9dd, 0, 0, 1, f(No, false, "ঢ়")}, - {0x9de, 0, 0, 0, f(Yes, false, "")}, - {0x9df, 0, 0, 1, f(No, false, "য়")}, - {0x9e0, 0, 0, 0, f(Yes, false, "")}, - {0xa33, 0, 0, 1, f(No, false, "ਲ਼")}, - {0xa34, 0, 0, 0, f(Yes, false, "")}, - {0xa36, 0, 0, 1, f(No, false, "ਸ਼")}, - {0xa37, 0, 0, 0, f(Yes, false, "")}, - {0xa3c, 7, 1, 1, f(Yes, false, "")}, - {0xa3d, 0, 0, 0, f(Yes, false, "")}, - {0xa4d, 9, 1, 1, f(Yes, false, "")}, - {0xa4e, 0, 0, 0, f(Yes, false, "")}, - {0xa59, 0, 0, 1, f(No, false, "ਖ਼")}, - {0xa5a, 0, 0, 1, f(No, false, "ਗ਼")}, - {0xa5b, 0, 0, 1, f(No, false, "ਜ਼")}, - {0xa5c, 0, 0, 0, f(Yes, false, "")}, - {0xa5e, 0, 0, 1, f(No, false, "ਫ਼")}, - {0xa5f, 0, 0, 0, f(Yes, false, "")}, - {0xabc, 7, 1, 1, f(Yes, false, "")}, - {0xabd, 0, 0, 0, f(Yes, false, "")}, - {0xacd, 9, 1, 1, f(Yes, false, "")}, - {0xace, 0, 0, 0, f(Yes, false, "")}, - {0xb3c, 7, 1, 1, f(Yes, false, "")}, - {0xb3d, 0, 0, 0, f(Yes, false, "")}, - {0xb3e, 0, 1, 1, f(Maybe, false, "")}, - {0xb3f, 0, 0, 0, f(Yes, false, "")}, - {0xb47, 0, 0, 0, f(Yes, true, "")}, - {0xb48, 0, 0, 1, f(Yes, false, "ୈ")}, - {0xb49, 0, 0, 0, f(Yes, false, "")}, - {0xb4b, 0, 0, 1, f(Yes, false, "ୋ")}, - {0xb4c, 0, 0, 1, f(Yes, false, "ୌ")}, - {0xb4d, 9, 1, 1, f(Yes, false, "")}, - {0xb4e, 0, 0, 0, f(Yes, false, "")}, - {0xb56, 0, 1, 1, f(Maybe, false, "")}, - {0xb58, 0, 0, 0, f(Yes, false, "")}, - {0xb5c, 0, 0, 1, f(No, false, "ଡ଼")}, - {0xb5d, 0, 0, 1, f(No, false, "ଢ଼")}, - {0xb5e, 0, 0, 0, f(Yes, false, "")}, - {0xb92, 0, 0, 0, f(Yes, true, "")}, - {0xb93, 0, 0, 0, f(Yes, false, "")}, - {0xb94, 0, 0, 1, f(Yes, false, "ஔ")}, - {0xb95, 0, 0, 0, f(Yes, false, "")}, - {0xbbe, 0, 1, 1, f(Maybe, false, "")}, - {0xbbf, 0, 0, 0, f(Yes, false, "")}, - {0xbc6, 0, 0, 0, f(Yes, true, "")}, - {0xbc8, 0, 0, 0, f(Yes, false, "")}, - {0xbca, 0, 0, 1, f(Yes, false, "ொ")}, - {0xbcb, 0, 0, 1, f(Yes, false, "ோ")}, - {0xbcc, 0, 0, 1, f(Yes, false, "ௌ")}, - {0xbcd, 9, 1, 1, f(Yes, false, "")}, - {0xbce, 0, 0, 0, f(Yes, false, "")}, - {0xbd7, 0, 1, 1, f(Maybe, false, "")}, - {0xbd8, 0, 0, 0, f(Yes, false, "")}, - {0xc46, 0, 0, 0, f(Yes, true, "")}, - {0xc47, 0, 0, 0, f(Yes, false, "")}, - {0xc48, 0, 0, 1, f(Yes, false, "ై")}, - {0xc49, 0, 0, 0, f(Yes, false, "")}, - {0xc4d, 9, 1, 1, f(Yes, false, "")}, - {0xc4e, 0, 0, 0, f(Yes, false, "")}, - {0xc55, 84, 1, 1, f(Yes, false, "")}, - {0xc56, 91, 1, 1, f(Maybe, false, "")}, - {0xc57, 0, 0, 0, f(Yes, false, "")}, - {0xcbc, 7, 1, 1, f(Yes, false, "")}, - {0xcbd, 0, 0, 0, f(Yes, false, "")}, - {0xcbf, 0, 0, 0, f(Yes, true, "")}, - {0xcc0, 0, 0, 1, f(Yes, false, "ೀ")}, - {0xcc1, 0, 0, 0, f(Yes, false, "")}, - {0xcc2, 0, 1, 1, f(Maybe, false, "")}, - {0xcc3, 0, 0, 0, f(Yes, false, "")}, - {0xcc6, 0, 0, 0, f(Yes, true, "")}, - {0xcc7, 0, 0, 1, f(Yes, false, "ೇ")}, - {0xcc8, 0, 0, 1, f(Yes, false, "ೈ")}, - {0xcc9, 0, 0, 0, f(Yes, false, "")}, - {0xcca, 0, 0, 1, f(Yes, true, "ೊ")}, - {0xccb, 0, 0, 2, f(Yes, false, "ೋ")}, - {0xccc, 0, 0, 0, f(Yes, false, "")}, - {0xccd, 9, 1, 1, f(Yes, false, "")}, - {0xcce, 0, 0, 0, f(Yes, false, "")}, - {0xcd5, 0, 1, 1, f(Maybe, false, "")}, - {0xcd7, 0, 0, 0, f(Yes, false, "")}, - {0xd3b, 9, 1, 1, f(Yes, false, "")}, - {0xd3d, 0, 0, 0, f(Yes, false, "")}, - {0xd3e, 0, 1, 1, f(Maybe, false, "")}, - {0xd3f, 0, 0, 0, f(Yes, false, "")}, - {0xd46, 0, 0, 0, f(Yes, true, "")}, - {0xd48, 0, 0, 0, f(Yes, false, "")}, - {0xd4a, 0, 0, 1, f(Yes, false, "ൊ")}, - {0xd4b, 0, 0, 1, f(Yes, false, "ോ")}, - {0xd4c, 0, 0, 1, f(Yes, false, "ൌ")}, - {0xd4d, 9, 1, 1, f(Yes, false, "")}, - {0xd4e, 0, 0, 0, f(Yes, false, "")}, - {0xd57, 0, 1, 1, f(Maybe, false, "")}, - {0xd58, 0, 0, 0, f(Yes, false, "")}, - {0xdca, 9, 1, 1, f(Maybe, false, "")}, - {0xdcb, 0, 0, 0, f(Yes, false, "")}, - {0xdcf, 0, 1, 1, f(Maybe, false, "")}, - {0xdd0, 0, 0, 0, f(Yes, false, "")}, - {0xdd9, 0, 0, 0, f(Yes, true, "")}, - {0xdda, 0, 0, 1, f(Yes, false, "ේ")}, - {0xddb, 0, 0, 0, f(Yes, false, "")}, - {0xddc, 0, 0, 1, f(Yes, true, "ො")}, - {0xddd, 0, 0, 2, f(Yes, false, "ෝ")}, - {0xdde, 0, 0, 1, f(Yes, false, "ෞ")}, - {0xddf, 0, 1, 1, f(Maybe, false, "")}, - {0xde0, 0, 0, 0, f(Yes, false, "")}, - {0xe33, 0, 0, 0, g(Yes, No, false, false, "", "ํา")}, - {0xe34, 0, 0, 0, f(Yes, false, "")}, - {0xe38, 103, 1, 1, f(Yes, false, "")}, - {0xe3a, 9, 1, 1, f(Yes, false, "")}, - {0xe3b, 0, 0, 0, f(Yes, false, "")}, - {0xe48, 107, 1, 1, f(Yes, false, "")}, - {0xe4c, 0, 0, 0, f(Yes, false, "")}, - {0xeb3, 0, 0, 0, g(Yes, No, false, false, "", "ໍາ")}, - {0xeb4, 0, 0, 0, f(Yes, false, "")}, - {0xeb8, 118, 1, 1, f(Yes, false, "")}, - {0xeba, 0, 0, 0, f(Yes, false, "")}, - {0xec8, 122, 1, 1, f(Yes, false, "")}, - {0xecc, 0, 0, 0, f(Yes, false, "")}, - {0xedc, 0, 0, 0, g(Yes, No, false, false, "", "ຫນ")}, - {0xedd, 0, 0, 0, g(Yes, No, false, false, "", "ຫມ")}, - {0xede, 0, 0, 0, f(Yes, false, "")}, - {0xf0c, 0, 0, 0, g(Yes, No, false, false, "", "་")}, - {0xf0d, 0, 0, 0, f(Yes, false, "")}, - {0xf18, 220, 1, 1, f(Yes, false, "")}, - {0xf1a, 0, 0, 0, f(Yes, false, "")}, - {0xf35, 220, 1, 1, f(Yes, false, "")}, - {0xf36, 0, 0, 0, f(Yes, false, "")}, - {0xf37, 220, 1, 1, f(Yes, false, "")}, - {0xf38, 0, 0, 0, f(Yes, false, "")}, - {0xf39, 216, 1, 1, f(Yes, false, "")}, - {0xf3a, 0, 0, 0, f(Yes, false, "")}, - {0xf43, 0, 0, 0, f(No, false, "གྷ")}, - {0xf44, 0, 0, 0, f(Yes, false, "")}, - {0xf4d, 0, 0, 0, f(No, false, "ཌྷ")}, - {0xf4e, 0, 0, 0, f(Yes, false, "")}, - {0xf52, 0, 0, 0, f(No, false, "དྷ")}, - {0xf53, 0, 0, 0, f(Yes, false, "")}, - {0xf57, 0, 0, 0, f(No, false, "བྷ")}, - {0xf58, 0, 0, 0, f(Yes, false, "")}, - {0xf5c, 0, 0, 0, f(No, false, "ཛྷ")}, - {0xf5d, 0, 0, 0, f(Yes, false, "")}, - {0xf69, 0, 0, 0, f(No, false, "ཀྵ")}, - {0xf6a, 0, 0, 0, f(Yes, false, "")}, - {0xf71, 129, 1, 1, f(Yes, false, "")}, - {0xf72, 130, 1, 1, f(Yes, false, "")}, - {0xf73, 0, 2, 2, f(No, false, "ཱི")}, - {0xf74, 132, 1, 1, f(Yes, false, "")}, - {0xf75, 0, 2, 2, f(No, false, "ཱུ")}, - {0xf76, 0, 0, 1, f(No, false, "ྲྀ")}, - {0xf77, 0, 0, 2, g(Yes, No, false, false, "", "ྲཱྀ")}, - {0xf78, 0, 0, 1, f(No, false, "ླྀ")}, - {0xf79, 0, 0, 2, g(Yes, No, false, false, "", "ླཱྀ")}, - {0xf7a, 130, 1, 1, f(Yes, false, "")}, - {0xf7e, 0, 0, 0, f(Yes, false, "")}, - {0xf80, 130, 1, 1, f(Yes, false, "")}, - {0xf81, 0, 2, 2, f(No, false, "ཱྀ")}, - {0xf82, 230, 1, 1, f(Yes, false, "")}, - {0xf84, 9, 1, 1, f(Yes, false, "")}, - {0xf85, 0, 0, 0, f(Yes, false, "")}, - {0xf86, 230, 1, 1, f(Yes, false, "")}, - {0xf88, 0, 0, 0, f(Yes, false, "")}, - {0xf93, 0, 0, 0, f(No, false, "ྒྷ")}, - {0xf94, 0, 0, 0, f(Yes, false, "")}, - {0xf9d, 0, 0, 0, f(No, false, "ྜྷ")}, - {0xf9e, 0, 0, 0, f(Yes, false, "")}, - {0xfa2, 0, 0, 0, f(No, false, "ྡྷ")}, - {0xfa3, 0, 0, 0, f(Yes, false, "")}, - {0xfa7, 0, 0, 0, f(No, false, "ྦྷ")}, - {0xfa8, 0, 0, 0, f(Yes, false, "")}, - {0xfac, 0, 0, 0, f(No, false, "ྫྷ")}, - {0xfad, 0, 0, 0, f(Yes, false, "")}, - {0xfb9, 0, 0, 0, f(No, false, "ྐྵ")}, - {0xfba, 0, 0, 0, f(Yes, false, "")}, - {0xfc6, 220, 1, 1, f(Yes, false, "")}, - {0xfc7, 0, 0, 0, f(Yes, false, "")}, - {0x1025, 0, 0, 0, f(Yes, true, "")}, - {0x1026, 0, 0, 1, f(Yes, false, "ဦ")}, - {0x1027, 0, 0, 0, f(Yes, false, "")}, - {0x102e, 0, 1, 1, f(Maybe, false, "")}, - {0x102f, 0, 0, 0, f(Yes, false, "")}, - {0x1037, 7, 1, 1, f(Yes, false, "")}, - {0x1038, 0, 0, 0, f(Yes, false, "")}, - {0x1039, 9, 1, 1, f(Yes, false, "")}, - {0x103b, 0, 0, 0, f(Yes, false, "")}, - {0x108d, 220, 1, 1, f(Yes, false, "")}, - {0x108e, 0, 0, 0, f(Yes, false, "")}, - {0x10fc, 0, 0, 0, g(Yes, No, false, false, "", "ნ")}, - {0x10fd, 0, 0, 0, f(Yes, false, "")}, - {0x1100, 0, 0, 0, f(Yes, true, "")}, - {0x1113, 0, 0, 0, f(Yes, false, "")}, - {0x1161, 0, 1, 1, f(Maybe, true, "")}, - {0x1176, 0, 0, 0, f(Yes, false, "")}, - {0x11a8, 0, 1, 1, f(Maybe, false, "")}, - {0x11c3, 0, 0, 0, f(Yes, false, "")}, - {0x135d, 230, 1, 1, f(Yes, false, "")}, - {0x1360, 0, 0, 0, f(Yes, false, "")}, - {0x1714, 9, 1, 1, f(Yes, false, "")}, - {0x1715, 0, 0, 0, f(Yes, false, "")}, - {0x1734, 9, 1, 1, f(Yes, false, "")}, - {0x1735, 0, 0, 0, f(Yes, false, "")}, - {0x17d2, 9, 1, 1, f(Yes, false, "")}, - {0x17d3, 0, 0, 0, f(Yes, false, "")}, - {0x17dd, 230, 1, 1, f(Yes, false, "")}, - {0x17de, 0, 0, 0, f(Yes, false, "")}, - {0x18a9, 228, 1, 1, f(Yes, false, "")}, - {0x18aa, 0, 0, 0, f(Yes, false, "")}, - {0x1939, 222, 1, 1, f(Yes, false, "")}, - {0x193a, 230, 1, 1, f(Yes, false, "")}, - {0x193b, 220, 1, 1, f(Yes, false, "")}, - {0x193c, 0, 0, 0, f(Yes, false, "")}, - {0x1a17, 230, 1, 1, f(Yes, false, "")}, - {0x1a18, 220, 1, 1, f(Yes, false, "")}, - {0x1a19, 0, 0, 0, f(Yes, false, "")}, - {0x1a60, 9, 1, 1, f(Yes, false, "")}, - {0x1a61, 0, 0, 0, f(Yes, false, "")}, - {0x1a75, 230, 1, 1, f(Yes, false, "")}, - {0x1a7d, 0, 0, 0, f(Yes, false, "")}, - {0x1a7f, 220, 1, 1, f(Yes, false, "")}, - {0x1a80, 0, 0, 0, f(Yes, false, "")}, - {0x1ab0, 230, 1, 1, f(Yes, false, "")}, - {0x1ab5, 220, 1, 1, f(Yes, false, "")}, - {0x1abb, 230, 1, 1, f(Yes, false, "")}, - {0x1abd, 220, 1, 1, f(Yes, false, "")}, - {0x1abe, 0, 0, 0, f(Yes, false, "")}, - {0x1b05, 0, 0, 0, f(Yes, true, "")}, - {0x1b06, 0, 0, 1, f(Yes, false, "ᬆ")}, - {0x1b07, 0, 0, 0, f(Yes, true, "")}, - {0x1b08, 0, 0, 1, f(Yes, false, "ᬈ")}, - {0x1b09, 0, 0, 0, f(Yes, true, "")}, - {0x1b0a, 0, 0, 1, f(Yes, false, "ᬊ")}, - {0x1b0b, 0, 0, 0, f(Yes, true, "")}, - {0x1b0c, 0, 0, 1, f(Yes, false, "ᬌ")}, - {0x1b0d, 0, 0, 0, f(Yes, true, "")}, - {0x1b0e, 0, 0, 1, f(Yes, false, "ᬎ")}, - {0x1b0f, 0, 0, 0, f(Yes, false, "")}, - {0x1b11, 0, 0, 0, f(Yes, true, "")}, - {0x1b12, 0, 0, 1, f(Yes, false, "ᬒ")}, - {0x1b13, 0, 0, 0, f(Yes, false, "")}, - {0x1b34, 7, 1, 1, f(Yes, false, "")}, - {0x1b35, 0, 1, 1, f(Maybe, false, "")}, - {0x1b36, 0, 0, 0, f(Yes, false, "")}, - {0x1b3a, 0, 0, 0, f(Yes, true, "")}, - {0x1b3b, 0, 0, 1, f(Yes, false, "ᬻ")}, - {0x1b3c, 0, 0, 0, f(Yes, true, "")}, - {0x1b3d, 0, 0, 1, f(Yes, false, "ᬽ")}, - {0x1b3e, 0, 0, 0, f(Yes, true, "")}, - {0x1b40, 0, 0, 1, f(Yes, false, "ᭀ")}, - {0x1b41, 0, 0, 1, f(Yes, false, "ᭁ")}, - {0x1b42, 0, 0, 0, f(Yes, true, "")}, - {0x1b43, 0, 0, 1, f(Yes, false, "ᭃ")}, - {0x1b44, 9, 1, 1, f(Yes, false, "")}, - {0x1b45, 0, 0, 0, f(Yes, false, "")}, - {0x1b6b, 230, 1, 1, f(Yes, false, "")}, - {0x1b6c, 220, 1, 1, f(Yes, false, "")}, - {0x1b6d, 230, 1, 1, f(Yes, false, "")}, - {0x1b74, 0, 0, 0, f(Yes, false, "")}, - {0x1baa, 9, 1, 1, f(Yes, false, "")}, - {0x1bac, 0, 0, 0, f(Yes, false, "")}, - {0x1be6, 7, 1, 1, f(Yes, false, "")}, - {0x1be7, 0, 0, 0, f(Yes, false, "")}, - {0x1bf2, 9, 1, 1, f(Yes, false, "")}, - {0x1bf4, 0, 0, 0, f(Yes, false, "")}, - {0x1c37, 7, 1, 1, f(Yes, false, "")}, - {0x1c38, 0, 0, 0, f(Yes, false, "")}, - {0x1cd0, 230, 1, 1, f(Yes, false, "")}, - {0x1cd3, 0, 0, 0, f(Yes, false, "")}, - {0x1cd4, 1, 1, 1, f(Yes, false, "")}, - {0x1cd5, 220, 1, 1, f(Yes, false, "")}, - {0x1cda, 230, 1, 1, f(Yes, false, "")}, - {0x1cdc, 220, 1, 1, f(Yes, false, "")}, - {0x1ce0, 230, 1, 1, f(Yes, false, "")}, - {0x1ce1, 0, 0, 0, f(Yes, false, "")}, - {0x1ce2, 1, 1, 1, f(Yes, false, "")}, - {0x1ce9, 0, 0, 0, f(Yes, false, "")}, - {0x1ced, 220, 1, 1, f(Yes, false, "")}, - {0x1cee, 0, 0, 0, f(Yes, false, "")}, - {0x1cf4, 230, 1, 1, f(Yes, false, "")}, - {0x1cf5, 0, 0, 0, f(Yes, false, "")}, - {0x1cf8, 230, 1, 1, f(Yes, false, "")}, - {0x1cfa, 0, 0, 0, f(Yes, false, "")}, - {0x1d2c, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d2d, 0, 0, 0, g(Yes, No, false, false, "", "Æ")}, - {0x1d2e, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d2f, 0, 0, 0, f(Yes, false, "")}, - {0x1d30, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d31, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d32, 0, 0, 0, g(Yes, No, false, false, "", "Ǝ")}, - {0x1d33, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d34, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d35, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d36, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d37, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d38, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d39, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d3a, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d3b, 0, 0, 0, f(Yes, false, "")}, - {0x1d3c, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d3d, 0, 0, 0, g(Yes, No, false, false, "", "Ȣ")}, - {0x1d3e, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d3f, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d40, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d41, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d42, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d43, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d44, 0, 0, 0, g(Yes, No, false, false, "", "ɐ")}, - {0x1d45, 0, 0, 0, g(Yes, No, false, false, "", "ɑ")}, - {0x1d46, 0, 0, 0, g(Yes, No, false, false, "", "ᴂ")}, - {0x1d47, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d48, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d49, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d4a, 0, 0, 0, g(Yes, No, false, false, "", "ə")}, - {0x1d4b, 0, 0, 0, g(Yes, No, false, false, "", "ɛ")}, - {0x1d4c, 0, 0, 0, g(Yes, No, false, false, "", "ɜ")}, - {0x1d4d, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d4e, 0, 0, 0, f(Yes, false, "")}, - {0x1d4f, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d50, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d51, 0, 0, 0, g(Yes, No, false, false, "", "ŋ")}, - {0x1d52, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d53, 0, 0, 0, g(Yes, No, false, false, "", "ɔ")}, - {0x1d54, 0, 0, 0, g(Yes, No, false, false, "", "ᴖ")}, - {0x1d55, 0, 0, 0, g(Yes, No, false, false, "", "ᴗ")}, - {0x1d56, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d57, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d58, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d59, 0, 0, 0, g(Yes, No, false, false, "", "ᴝ")}, - {0x1d5a, 0, 0, 0, g(Yes, No, false, false, "", "ɯ")}, - {0x1d5b, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d5c, 0, 0, 0, g(Yes, No, false, false, "", "ᴥ")}, - {0x1d5d, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d5e, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d5f, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d60, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d61, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d62, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d63, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d64, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d65, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d66, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d67, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d68, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d69, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d6a, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d6b, 0, 0, 0, f(Yes, false, "")}, - {0x1d78, 0, 0, 0, g(Yes, No, false, false, "", "н")}, - {0x1d79, 0, 0, 0, f(Yes, false, "")}, - {0x1d9b, 0, 0, 0, g(Yes, No, false, false, "", "ɒ")}, - {0x1d9c, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d9d, 0, 0, 0, g(Yes, No, false, false, "", "ɕ")}, - {0x1d9e, 0, 0, 0, g(Yes, No, false, false, "", "ð")}, - {0x1d9f, 0, 0, 0, g(Yes, No, false, false, "", "ɜ")}, - {0x1da0, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1da1, 0, 0, 0, g(Yes, No, false, false, "", "ɟ")}, - {0x1da2, 0, 0, 0, g(Yes, No, false, false, "", "ɡ")}, - {0x1da3, 0, 0, 0, g(Yes, No, false, false, "", "ɥ")}, - {0x1da4, 0, 0, 0, g(Yes, No, false, false, "", "ɨ")}, - {0x1da5, 0, 0, 0, g(Yes, No, false, false, "", "ɩ")}, - {0x1da6, 0, 0, 0, g(Yes, No, false, false, "", "ɪ")}, - {0x1da7, 0, 0, 0, g(Yes, No, false, false, "", "ᵻ")}, - {0x1da8, 0, 0, 0, g(Yes, No, false, false, "", "ʝ")}, - {0x1da9, 0, 0, 0, g(Yes, No, false, false, "", "ɭ")}, - {0x1daa, 0, 0, 0, g(Yes, No, false, false, "", "ᶅ")}, - {0x1dab, 0, 0, 0, g(Yes, No, false, false, "", "ʟ")}, - {0x1dac, 0, 0, 0, g(Yes, No, false, false, "", "ɱ")}, - {0x1dad, 0, 0, 0, g(Yes, No, false, false, "", "ɰ")}, - {0x1dae, 0, 0, 0, g(Yes, No, false, false, "", "ɲ")}, - {0x1daf, 0, 0, 0, g(Yes, No, false, false, "", "ɳ")}, - {0x1db0, 0, 0, 0, g(Yes, No, false, false, "", "ɴ")}, - {0x1db1, 0, 0, 0, g(Yes, No, false, false, "", "ɵ")}, - {0x1db2, 0, 0, 0, g(Yes, No, false, false, "", "ɸ")}, - {0x1db3, 0, 0, 0, g(Yes, No, false, false, "", "ʂ")}, - {0x1db4, 0, 0, 0, g(Yes, No, false, false, "", "ʃ")}, - {0x1db5, 0, 0, 0, g(Yes, No, false, false, "", "ƫ")}, - {0x1db6, 0, 0, 0, g(Yes, No, false, false, "", "ʉ")}, - {0x1db7, 0, 0, 0, g(Yes, No, false, false, "", "ʊ")}, - {0x1db8, 0, 0, 0, g(Yes, No, false, false, "", "ᴜ")}, - {0x1db9, 0, 0, 0, g(Yes, No, false, false, "", "ʋ")}, - {0x1dba, 0, 0, 0, g(Yes, No, false, false, "", "ʌ")}, - {0x1dbb, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1dbc, 0, 0, 0, g(Yes, No, false, false, "", "ʐ")}, - {0x1dbd, 0, 0, 0, g(Yes, No, false, false, "", "ʑ")}, - {0x1dbe, 0, 0, 0, g(Yes, No, false, false, "", "ʒ")}, - {0x1dbf, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1dc0, 230, 1, 1, f(Yes, false, "")}, - {0x1dc2, 220, 1, 1, f(Yes, false, "")}, - {0x1dc3, 230, 1, 1, f(Yes, false, "")}, - {0x1dca, 220, 1, 1, f(Yes, false, "")}, - {0x1dcb, 230, 1, 1, f(Yes, false, "")}, - {0x1dcd, 234, 1, 1, f(Yes, false, "")}, - {0x1dce, 214, 1, 1, f(Yes, false, "")}, - {0x1dcf, 220, 1, 1, f(Yes, false, "")}, - {0x1dd0, 202, 1, 1, f(Yes, false, "")}, - {0x1dd1, 230, 1, 1, f(Yes, false, "")}, - {0x1df6, 232, 1, 1, f(Yes, false, "")}, - {0x1df7, 228, 1, 1, f(Yes, false, "")}, - {0x1df9, 220, 1, 1, f(Yes, false, "")}, - {0x1dfa, 0, 0, 0, f(Yes, false, "")}, - {0x1dfb, 230, 1, 1, f(Yes, false, "")}, - {0x1dfc, 233, 1, 1, f(Yes, false, "")}, - {0x1dfd, 220, 1, 1, f(Yes, false, "")}, - {0x1dfe, 230, 1, 1, f(Yes, false, "")}, - {0x1dff, 220, 1, 1, f(Yes, false, "")}, - {0x1e00, 0, 0, 1, f(Yes, false, "Ḁ")}, - {0x1e01, 0, 0, 1, f(Yes, false, "ḁ")}, - {0x1e02, 0, 0, 1, f(Yes, false, "Ḃ")}, - {0x1e03, 0, 0, 1, f(Yes, false, "ḃ")}, - {0x1e04, 0, 0, 1, f(Yes, false, "Ḅ")}, - {0x1e05, 0, 0, 1, f(Yes, false, "ḅ")}, - {0x1e06, 0, 0, 1, f(Yes, false, "Ḇ")}, - {0x1e07, 0, 0, 1, f(Yes, false, "ḇ")}, - {0x1e08, 0, 0, 2, f(Yes, false, "Ḉ")}, - {0x1e09, 0, 0, 2, f(Yes, false, "ḉ")}, - {0x1e0a, 0, 0, 1, f(Yes, false, "Ḋ")}, - {0x1e0b, 0, 0, 1, f(Yes, false, "ḋ")}, - {0x1e0c, 0, 0, 1, f(Yes, false, "Ḍ")}, - {0x1e0d, 0, 0, 1, f(Yes, false, "ḍ")}, - {0x1e0e, 0, 0, 1, f(Yes, false, "Ḏ")}, - {0x1e0f, 0, 0, 1, f(Yes, false, "ḏ")}, - {0x1e10, 0, 0, 1, f(Yes, false, "Ḑ")}, - {0x1e11, 0, 0, 1, f(Yes, false, "ḑ")}, - {0x1e12, 0, 0, 1, f(Yes, false, "Ḓ")}, - {0x1e13, 0, 0, 1, f(Yes, false, "ḓ")}, - {0x1e14, 0, 0, 2, f(Yes, false, "Ḕ")}, - {0x1e15, 0, 0, 2, f(Yes, false, "ḕ")}, - {0x1e16, 0, 0, 2, f(Yes, false, "Ḗ")}, - {0x1e17, 0, 0, 2, f(Yes, false, "ḗ")}, - {0x1e18, 0, 0, 1, f(Yes, false, "Ḙ")}, - {0x1e19, 0, 0, 1, f(Yes, false, "ḙ")}, - {0x1e1a, 0, 0, 1, f(Yes, false, "Ḛ")}, - {0x1e1b, 0, 0, 1, f(Yes, false, "ḛ")}, - {0x1e1c, 0, 0, 2, f(Yes, false, "Ḝ")}, - {0x1e1d, 0, 0, 2, f(Yes, false, "ḝ")}, - {0x1e1e, 0, 0, 1, f(Yes, false, "Ḟ")}, - {0x1e1f, 0, 0, 1, f(Yes, false, "ḟ")}, - {0x1e20, 0, 0, 1, f(Yes, false, "Ḡ")}, - {0x1e21, 0, 0, 1, f(Yes, false, "ḡ")}, - {0x1e22, 0, 0, 1, f(Yes, false, "Ḣ")}, - {0x1e23, 0, 0, 1, f(Yes, false, "ḣ")}, - {0x1e24, 0, 0, 1, f(Yes, false, "Ḥ")}, - {0x1e25, 0, 0, 1, f(Yes, false, "ḥ")}, - {0x1e26, 0, 0, 1, f(Yes, false, "Ḧ")}, - {0x1e27, 0, 0, 1, f(Yes, false, "ḧ")}, - {0x1e28, 0, 0, 1, f(Yes, false, "Ḩ")}, - {0x1e29, 0, 0, 1, f(Yes, false, "ḩ")}, - {0x1e2a, 0, 0, 1, f(Yes, false, "Ḫ")}, - {0x1e2b, 0, 0, 1, f(Yes, false, "ḫ")}, - {0x1e2c, 0, 0, 1, f(Yes, false, "Ḭ")}, - {0x1e2d, 0, 0, 1, f(Yes, false, "ḭ")}, - {0x1e2e, 0, 0, 2, f(Yes, false, "Ḯ")}, - {0x1e2f, 0, 0, 2, f(Yes, false, "ḯ")}, - {0x1e30, 0, 0, 1, f(Yes, false, "Ḱ")}, - {0x1e31, 0, 0, 1, f(Yes, false, "ḱ")}, - {0x1e32, 0, 0, 1, f(Yes, false, "Ḳ")}, - {0x1e33, 0, 0, 1, f(Yes, false, "ḳ")}, - {0x1e34, 0, 0, 1, f(Yes, false, "Ḵ")}, - {0x1e35, 0, 0, 1, f(Yes, false, "ḵ")}, - {0x1e36, 0, 0, 1, f(Yes, true, "Ḷ")}, - {0x1e37, 0, 0, 1, f(Yes, true, "ḷ")}, - {0x1e38, 0, 0, 2, f(Yes, false, "Ḹ")}, - {0x1e39, 0, 0, 2, f(Yes, false, "ḹ")}, - {0x1e3a, 0, 0, 1, f(Yes, false, "Ḻ")}, - {0x1e3b, 0, 0, 1, f(Yes, false, "ḻ")}, - {0x1e3c, 0, 0, 1, f(Yes, false, "Ḽ")}, - {0x1e3d, 0, 0, 1, f(Yes, false, "ḽ")}, - {0x1e3e, 0, 0, 1, f(Yes, false, "Ḿ")}, - {0x1e3f, 0, 0, 1, f(Yes, false, "ḿ")}, - {0x1e40, 0, 0, 1, f(Yes, false, "Ṁ")}, - {0x1e41, 0, 0, 1, f(Yes, false, "ṁ")}, - {0x1e42, 0, 0, 1, f(Yes, false, "Ṃ")}, - {0x1e43, 0, 0, 1, f(Yes, false, "ṃ")}, - {0x1e44, 0, 0, 1, f(Yes, false, "Ṅ")}, - {0x1e45, 0, 0, 1, f(Yes, false, "ṅ")}, - {0x1e46, 0, 0, 1, f(Yes, false, "Ṇ")}, - {0x1e47, 0, 0, 1, f(Yes, false, "ṇ")}, - {0x1e48, 0, 0, 1, f(Yes, false, "Ṉ")}, - {0x1e49, 0, 0, 1, f(Yes, false, "ṉ")}, - {0x1e4a, 0, 0, 1, f(Yes, false, "Ṋ")}, - {0x1e4b, 0, 0, 1, f(Yes, false, "ṋ")}, - {0x1e4c, 0, 0, 2, f(Yes, false, "Ṍ")}, - {0x1e4d, 0, 0, 2, f(Yes, false, "ṍ")}, - {0x1e4e, 0, 0, 2, f(Yes, false, "Ṏ")}, - {0x1e4f, 0, 0, 2, f(Yes, false, "ṏ")}, - {0x1e50, 0, 0, 2, f(Yes, false, "Ṑ")}, - {0x1e51, 0, 0, 2, f(Yes, false, "ṑ")}, - {0x1e52, 0, 0, 2, f(Yes, false, "Ṓ")}, - {0x1e53, 0, 0, 2, f(Yes, false, "ṓ")}, - {0x1e54, 0, 0, 1, f(Yes, false, "Ṕ")}, - {0x1e55, 0, 0, 1, f(Yes, false, "ṕ")}, - {0x1e56, 0, 0, 1, f(Yes, false, "Ṗ")}, - {0x1e57, 0, 0, 1, f(Yes, false, "ṗ")}, - {0x1e58, 0, 0, 1, f(Yes, false, "Ṙ")}, - {0x1e59, 0, 0, 1, f(Yes, false, "ṙ")}, - {0x1e5a, 0, 0, 1, f(Yes, true, "Ṛ")}, - {0x1e5b, 0, 0, 1, f(Yes, true, "ṛ")}, - {0x1e5c, 0, 0, 2, f(Yes, false, "Ṝ")}, - {0x1e5d, 0, 0, 2, f(Yes, false, "ṝ")}, - {0x1e5e, 0, 0, 1, f(Yes, false, "Ṟ")}, - {0x1e5f, 0, 0, 1, f(Yes, false, "ṟ")}, - {0x1e60, 0, 0, 1, f(Yes, false, "Ṡ")}, - {0x1e61, 0, 0, 1, f(Yes, false, "ṡ")}, - {0x1e62, 0, 0, 1, f(Yes, true, "Ṣ")}, - {0x1e63, 0, 0, 1, f(Yes, true, "ṣ")}, - {0x1e64, 0, 0, 2, f(Yes, false, "Ṥ")}, - {0x1e65, 0, 0, 2, f(Yes, false, "ṥ")}, - {0x1e66, 0, 0, 2, f(Yes, false, "Ṧ")}, - {0x1e67, 0, 0, 2, f(Yes, false, "ṧ")}, - {0x1e68, 0, 0, 2, f(Yes, false, "Ṩ")}, - {0x1e69, 0, 0, 2, f(Yes, false, "ṩ")}, - {0x1e6a, 0, 0, 1, f(Yes, false, "Ṫ")}, - {0x1e6b, 0, 0, 1, f(Yes, false, "ṫ")}, - {0x1e6c, 0, 0, 1, f(Yes, false, "Ṭ")}, - {0x1e6d, 0, 0, 1, f(Yes, false, "ṭ")}, - {0x1e6e, 0, 0, 1, f(Yes, false, "Ṯ")}, - {0x1e6f, 0, 0, 1, f(Yes, false, "ṯ")}, - {0x1e70, 0, 0, 1, f(Yes, false, "Ṱ")}, - {0x1e71, 0, 0, 1, f(Yes, false, "ṱ")}, - {0x1e72, 0, 0, 1, f(Yes, false, "Ṳ")}, - {0x1e73, 0, 0, 1, f(Yes, false, "ṳ")}, - {0x1e74, 0, 0, 1, f(Yes, false, "Ṵ")}, - {0x1e75, 0, 0, 1, f(Yes, false, "ṵ")}, - {0x1e76, 0, 0, 1, f(Yes, false, "Ṷ")}, - {0x1e77, 0, 0, 1, f(Yes, false, "ṷ")}, - {0x1e78, 0, 0, 2, f(Yes, false, "Ṹ")}, - {0x1e79, 0, 0, 2, f(Yes, false, "ṹ")}, - {0x1e7a, 0, 0, 2, f(Yes, false, "Ṻ")}, - {0x1e7b, 0, 0, 2, f(Yes, false, "ṻ")}, - {0x1e7c, 0, 0, 1, f(Yes, false, "Ṽ")}, - {0x1e7d, 0, 0, 1, f(Yes, false, "ṽ")}, - {0x1e7e, 0, 0, 1, f(Yes, false, "Ṿ")}, - {0x1e7f, 0, 0, 1, f(Yes, false, "ṿ")}, - {0x1e80, 0, 0, 1, f(Yes, false, "Ẁ")}, - {0x1e81, 0, 0, 1, f(Yes, false, "ẁ")}, - {0x1e82, 0, 0, 1, f(Yes, false, "Ẃ")}, - {0x1e83, 0, 0, 1, f(Yes, false, "ẃ")}, - {0x1e84, 0, 0, 1, f(Yes, false, "Ẅ")}, - {0x1e85, 0, 0, 1, f(Yes, false, "ẅ")}, - {0x1e86, 0, 0, 1, f(Yes, false, "Ẇ")}, - {0x1e87, 0, 0, 1, f(Yes, false, "ẇ")}, - {0x1e88, 0, 0, 1, f(Yes, false, "Ẉ")}, - {0x1e89, 0, 0, 1, f(Yes, false, "ẉ")}, - {0x1e8a, 0, 0, 1, f(Yes, false, "Ẋ")}, - {0x1e8b, 0, 0, 1, f(Yes, false, "ẋ")}, - {0x1e8c, 0, 0, 1, f(Yes, false, "Ẍ")}, - {0x1e8d, 0, 0, 1, f(Yes, false, "ẍ")}, - {0x1e8e, 0, 0, 1, f(Yes, false, "Ẏ")}, - {0x1e8f, 0, 0, 1, f(Yes, false, "ẏ")}, - {0x1e90, 0, 0, 1, f(Yes, false, "Ẑ")}, - {0x1e91, 0, 0, 1, f(Yes, false, "ẑ")}, - {0x1e92, 0, 0, 1, f(Yes, false, "Ẓ")}, - {0x1e93, 0, 0, 1, f(Yes, false, "ẓ")}, - {0x1e94, 0, 0, 1, f(Yes, false, "Ẕ")}, - {0x1e95, 0, 0, 1, f(Yes, false, "ẕ")}, - {0x1e96, 0, 0, 1, f(Yes, false, "ẖ")}, - {0x1e97, 0, 0, 1, f(Yes, false, "ẗ")}, - {0x1e98, 0, 0, 1, f(Yes, false, "ẘ")}, - {0x1e99, 0, 0, 1, f(Yes, false, "ẙ")}, - {0x1e9a, 0, 0, 0, g(Yes, No, false, false, "", "aʾ")}, - {0x1e9b, 0, 0, 1, g(Yes, No, false, false, "ẛ", "ṡ")}, - {0x1e9c, 0, 0, 0, f(Yes, false, "")}, - {0x1ea0, 0, 0, 1, f(Yes, true, "Ạ")}, - {0x1ea1, 0, 0, 1, f(Yes, true, "ạ")}, - {0x1ea2, 0, 0, 1, f(Yes, false, "Ả")}, - {0x1ea3, 0, 0, 1, f(Yes, false, "ả")}, - {0x1ea4, 0, 0, 2, f(Yes, false, "Ấ")}, - {0x1ea5, 0, 0, 2, f(Yes, false, "ấ")}, - {0x1ea6, 0, 0, 2, f(Yes, false, "Ầ")}, - {0x1ea7, 0, 0, 2, f(Yes, false, "ầ")}, - {0x1ea8, 0, 0, 2, f(Yes, false, "Ẩ")}, - {0x1ea9, 0, 0, 2, f(Yes, false, "ẩ")}, - {0x1eaa, 0, 0, 2, f(Yes, false, "Ẫ")}, - {0x1eab, 0, 0, 2, f(Yes, false, "ẫ")}, - {0x1eac, 0, 0, 2, f(Yes, false, "Ậ")}, - {0x1ead, 0, 0, 2, f(Yes, false, "ậ")}, - {0x1eae, 0, 0, 2, f(Yes, false, "Ắ")}, - {0x1eaf, 0, 0, 2, f(Yes, false, "ắ")}, - {0x1eb0, 0, 0, 2, f(Yes, false, "Ằ")}, - {0x1eb1, 0, 0, 2, f(Yes, false, "ằ")}, - {0x1eb2, 0, 0, 2, f(Yes, false, "Ẳ")}, - {0x1eb3, 0, 0, 2, f(Yes, false, "ẳ")}, - {0x1eb4, 0, 0, 2, f(Yes, false, "Ẵ")}, - {0x1eb5, 0, 0, 2, f(Yes, false, "ẵ")}, - {0x1eb6, 0, 0, 2, f(Yes, false, "Ặ")}, - {0x1eb7, 0, 0, 2, f(Yes, false, "ặ")}, - {0x1eb8, 0, 0, 1, f(Yes, true, "Ẹ")}, - {0x1eb9, 0, 0, 1, f(Yes, true, "ẹ")}, - {0x1eba, 0, 0, 1, f(Yes, false, "Ẻ")}, - {0x1ebb, 0, 0, 1, f(Yes, false, "ẻ")}, - {0x1ebc, 0, 0, 1, f(Yes, false, "Ẽ")}, - {0x1ebd, 0, 0, 1, f(Yes, false, "ẽ")}, - {0x1ebe, 0, 0, 2, f(Yes, false, "Ế")}, - {0x1ebf, 0, 0, 2, f(Yes, false, "ế")}, - {0x1ec0, 0, 0, 2, f(Yes, false, "Ề")}, - {0x1ec1, 0, 0, 2, f(Yes, false, "ề")}, - {0x1ec2, 0, 0, 2, f(Yes, false, "Ể")}, - {0x1ec3, 0, 0, 2, f(Yes, false, "ể")}, - {0x1ec4, 0, 0, 2, f(Yes, false, "Ễ")}, - {0x1ec5, 0, 0, 2, f(Yes, false, "ễ")}, - {0x1ec6, 0, 0, 2, f(Yes, false, "Ệ")}, - {0x1ec7, 0, 0, 2, f(Yes, false, "ệ")}, - {0x1ec8, 0, 0, 1, f(Yes, false, "Ỉ")}, - {0x1ec9, 0, 0, 1, f(Yes, false, "ỉ")}, - {0x1eca, 0, 0, 1, f(Yes, false, "Ị")}, - {0x1ecb, 0, 0, 1, f(Yes, false, "ị")}, - {0x1ecc, 0, 0, 1, f(Yes, true, "Ọ")}, - {0x1ecd, 0, 0, 1, f(Yes, true, "ọ")}, - {0x1ece, 0, 0, 1, f(Yes, false, "Ỏ")}, - {0x1ecf, 0, 0, 1, f(Yes, false, "ỏ")}, - {0x1ed0, 0, 0, 2, f(Yes, false, "Ố")}, - {0x1ed1, 0, 0, 2, f(Yes, false, "ố")}, - {0x1ed2, 0, 0, 2, f(Yes, false, "Ồ")}, - {0x1ed3, 0, 0, 2, f(Yes, false, "ồ")}, - {0x1ed4, 0, 0, 2, f(Yes, false, "Ổ")}, - {0x1ed5, 0, 0, 2, f(Yes, false, "ổ")}, - {0x1ed6, 0, 0, 2, f(Yes, false, "Ỗ")}, - {0x1ed7, 0, 0, 2, f(Yes, false, "ỗ")}, - {0x1ed8, 0, 0, 2, f(Yes, false, "Ộ")}, - {0x1ed9, 0, 0, 2, f(Yes, false, "ộ")}, - {0x1eda, 0, 0, 2, f(Yes, false, "Ớ")}, - {0x1edb, 0, 0, 2, f(Yes, false, "ớ")}, - {0x1edc, 0, 0, 2, f(Yes, false, "Ờ")}, - {0x1edd, 0, 0, 2, f(Yes, false, "ờ")}, - {0x1ede, 0, 0, 2, f(Yes, false, "Ở")}, - {0x1edf, 0, 0, 2, f(Yes, false, "ở")}, - {0x1ee0, 0, 0, 2, f(Yes, false, "Ỡ")}, - {0x1ee1, 0, 0, 2, f(Yes, false, "ỡ")}, - {0x1ee2, 0, 0, 2, f(Yes, false, "Ợ")}, - {0x1ee3, 0, 0, 2, f(Yes, false, "ợ")}, - {0x1ee4, 0, 0, 1, f(Yes, false, "Ụ")}, - {0x1ee5, 0, 0, 1, f(Yes, false, "ụ")}, - {0x1ee6, 0, 0, 1, f(Yes, false, "Ủ")}, - {0x1ee7, 0, 0, 1, f(Yes, false, "ủ")}, - {0x1ee8, 0, 0, 2, f(Yes, false, "Ứ")}, - {0x1ee9, 0, 0, 2, f(Yes, false, "ứ")}, - {0x1eea, 0, 0, 2, f(Yes, false, "Ừ")}, - {0x1eeb, 0, 0, 2, f(Yes, false, "ừ")}, - {0x1eec, 0, 0, 2, f(Yes, false, "Ử")}, - {0x1eed, 0, 0, 2, f(Yes, false, "ử")}, - {0x1eee, 0, 0, 2, f(Yes, false, "Ữ")}, - {0x1eef, 0, 0, 2, f(Yes, false, "ữ")}, - {0x1ef0, 0, 0, 2, f(Yes, false, "Ự")}, - {0x1ef1, 0, 0, 2, f(Yes, false, "ự")}, - {0x1ef2, 0, 0, 1, f(Yes, false, "Ỳ")}, - {0x1ef3, 0, 0, 1, f(Yes, false, "ỳ")}, - {0x1ef4, 0, 0, 1, f(Yes, false, "Ỵ")}, - {0x1ef5, 0, 0, 1, f(Yes, false, "ỵ")}, - {0x1ef6, 0, 0, 1, f(Yes, false, "Ỷ")}, - {0x1ef7, 0, 0, 1, f(Yes, false, "ỷ")}, - {0x1ef8, 0, 0, 1, f(Yes, false, "Ỹ")}, - {0x1ef9, 0, 0, 1, f(Yes, false, "ỹ")}, - {0x1efa, 0, 0, 0, f(Yes, false, "")}, - {0x1f00, 0, 0, 1, f(Yes, true, "ἀ")}, - {0x1f01, 0, 0, 1, f(Yes, true, "ἁ")}, - {0x1f02, 0, 0, 2, f(Yes, true, "ἂ")}, - {0x1f03, 0, 0, 2, f(Yes, true, "ἃ")}, - {0x1f04, 0, 0, 2, f(Yes, true, "ἄ")}, - {0x1f05, 0, 0, 2, f(Yes, true, "ἅ")}, - {0x1f06, 0, 0, 2, f(Yes, true, "ἆ")}, - {0x1f07, 0, 0, 2, f(Yes, true, "ἇ")}, - {0x1f08, 0, 0, 1, f(Yes, true, "Ἀ")}, - {0x1f09, 0, 0, 1, f(Yes, true, "Ἁ")}, - {0x1f0a, 0, 0, 2, f(Yes, true, "Ἂ")}, - {0x1f0b, 0, 0, 2, f(Yes, true, "Ἃ")}, - {0x1f0c, 0, 0, 2, f(Yes, true, "Ἄ")}, - {0x1f0d, 0, 0, 2, f(Yes, true, "Ἅ")}, - {0x1f0e, 0, 0, 2, f(Yes, true, "Ἆ")}, - {0x1f0f, 0, 0, 2, f(Yes, true, "Ἇ")}, - {0x1f10, 0, 0, 1, f(Yes, true, "ἐ")}, - {0x1f11, 0, 0, 1, f(Yes, true, "ἑ")}, - {0x1f12, 0, 0, 2, f(Yes, false, "ἒ")}, - {0x1f13, 0, 0, 2, f(Yes, false, "ἓ")}, - {0x1f14, 0, 0, 2, f(Yes, false, "ἔ")}, - {0x1f15, 0, 0, 2, f(Yes, false, "ἕ")}, - {0x1f16, 0, 0, 0, f(Yes, false, "")}, - {0x1f18, 0, 0, 1, f(Yes, true, "Ἐ")}, - {0x1f19, 0, 0, 1, f(Yes, true, "Ἑ")}, - {0x1f1a, 0, 0, 2, f(Yes, false, "Ἒ")}, - {0x1f1b, 0, 0, 2, f(Yes, false, "Ἓ")}, - {0x1f1c, 0, 0, 2, f(Yes, false, "Ἔ")}, - {0x1f1d, 0, 0, 2, f(Yes, false, "Ἕ")}, - {0x1f1e, 0, 0, 0, f(Yes, false, "")}, - {0x1f20, 0, 0, 1, f(Yes, true, "ἠ")}, - {0x1f21, 0, 0, 1, f(Yes, true, "ἡ")}, - {0x1f22, 0, 0, 2, f(Yes, true, "ἢ")}, - {0x1f23, 0, 0, 2, f(Yes, true, "ἣ")}, - {0x1f24, 0, 0, 2, f(Yes, true, "ἤ")}, - {0x1f25, 0, 0, 2, f(Yes, true, "ἥ")}, - {0x1f26, 0, 0, 2, f(Yes, true, "ἦ")}, - {0x1f27, 0, 0, 2, f(Yes, true, "ἧ")}, - {0x1f28, 0, 0, 1, f(Yes, true, "Ἠ")}, - {0x1f29, 0, 0, 1, f(Yes, true, "Ἡ")}, - {0x1f2a, 0, 0, 2, f(Yes, true, "Ἢ")}, - {0x1f2b, 0, 0, 2, f(Yes, true, "Ἣ")}, - {0x1f2c, 0, 0, 2, f(Yes, true, "Ἤ")}, - {0x1f2d, 0, 0, 2, f(Yes, true, "Ἥ")}, - {0x1f2e, 0, 0, 2, f(Yes, true, "Ἦ")}, - {0x1f2f, 0, 0, 2, f(Yes, true, "Ἧ")}, - {0x1f30, 0, 0, 1, f(Yes, true, "ἰ")}, - {0x1f31, 0, 0, 1, f(Yes, true, "ἱ")}, - {0x1f32, 0, 0, 2, f(Yes, false, "ἲ")}, - {0x1f33, 0, 0, 2, f(Yes, false, "ἳ")}, - {0x1f34, 0, 0, 2, f(Yes, false, "ἴ")}, - {0x1f35, 0, 0, 2, f(Yes, false, "ἵ")}, - {0x1f36, 0, 0, 2, f(Yes, false, "ἶ")}, - {0x1f37, 0, 0, 2, f(Yes, false, "ἷ")}, - {0x1f38, 0, 0, 1, f(Yes, true, "Ἰ")}, - {0x1f39, 0, 0, 1, f(Yes, true, "Ἱ")}, - {0x1f3a, 0, 0, 2, f(Yes, false, "Ἲ")}, - {0x1f3b, 0, 0, 2, f(Yes, false, "Ἳ")}, - {0x1f3c, 0, 0, 2, f(Yes, false, "Ἴ")}, - {0x1f3d, 0, 0, 2, f(Yes, false, "Ἵ")}, - {0x1f3e, 0, 0, 2, f(Yes, false, "Ἶ")}, - {0x1f3f, 0, 0, 2, f(Yes, false, "Ἷ")}, - {0x1f40, 0, 0, 1, f(Yes, true, "ὀ")}, - {0x1f41, 0, 0, 1, f(Yes, true, "ὁ")}, - {0x1f42, 0, 0, 2, f(Yes, false, "ὂ")}, - {0x1f43, 0, 0, 2, f(Yes, false, "ὃ")}, - {0x1f44, 0, 0, 2, f(Yes, false, "ὄ")}, - {0x1f45, 0, 0, 2, f(Yes, false, "ὅ")}, - {0x1f46, 0, 0, 0, f(Yes, false, "")}, - {0x1f48, 0, 0, 1, f(Yes, true, "Ὀ")}, - {0x1f49, 0, 0, 1, f(Yes, true, "Ὁ")}, - {0x1f4a, 0, 0, 2, f(Yes, false, "Ὂ")}, - {0x1f4b, 0, 0, 2, f(Yes, false, "Ὃ")}, - {0x1f4c, 0, 0, 2, f(Yes, false, "Ὄ")}, - {0x1f4d, 0, 0, 2, f(Yes, false, "Ὅ")}, - {0x1f4e, 0, 0, 0, f(Yes, false, "")}, - {0x1f50, 0, 0, 1, f(Yes, true, "ὐ")}, - {0x1f51, 0, 0, 1, f(Yes, true, "ὑ")}, - {0x1f52, 0, 0, 2, f(Yes, false, "ὒ")}, - {0x1f53, 0, 0, 2, f(Yes, false, "ὓ")}, - {0x1f54, 0, 0, 2, f(Yes, false, "ὔ")}, - {0x1f55, 0, 0, 2, f(Yes, false, "ὕ")}, - {0x1f56, 0, 0, 2, f(Yes, false, "ὖ")}, - {0x1f57, 0, 0, 2, f(Yes, false, "ὗ")}, - {0x1f58, 0, 0, 0, f(Yes, false, "")}, - {0x1f59, 0, 0, 1, f(Yes, true, "Ὑ")}, - {0x1f5a, 0, 0, 0, f(Yes, false, "")}, - {0x1f5b, 0, 0, 2, f(Yes, false, "Ὓ")}, - {0x1f5c, 0, 0, 0, f(Yes, false, "")}, - {0x1f5d, 0, 0, 2, f(Yes, false, "Ὕ")}, - {0x1f5e, 0, 0, 0, f(Yes, false, "")}, - {0x1f5f, 0, 0, 2, f(Yes, false, "Ὗ")}, - {0x1f60, 0, 0, 1, f(Yes, true, "ὠ")}, - {0x1f61, 0, 0, 1, f(Yes, true, "ὡ")}, - {0x1f62, 0, 0, 2, f(Yes, true, "ὢ")}, - {0x1f63, 0, 0, 2, f(Yes, true, "ὣ")}, - {0x1f64, 0, 0, 2, f(Yes, true, "ὤ")}, - {0x1f65, 0, 0, 2, f(Yes, true, "ὥ")}, - {0x1f66, 0, 0, 2, f(Yes, true, "ὦ")}, - {0x1f67, 0, 0, 2, f(Yes, true, "ὧ")}, - {0x1f68, 0, 0, 1, f(Yes, true, "Ὠ")}, - {0x1f69, 0, 0, 1, f(Yes, true, "Ὡ")}, - {0x1f6a, 0, 0, 2, f(Yes, true, "Ὢ")}, - {0x1f6b, 0, 0, 2, f(Yes, true, "Ὣ")}, - {0x1f6c, 0, 0, 2, f(Yes, true, "Ὤ")}, - {0x1f6d, 0, 0, 2, f(Yes, true, "Ὥ")}, - {0x1f6e, 0, 0, 2, f(Yes, true, "Ὦ")}, - {0x1f6f, 0, 0, 2, f(Yes, true, "Ὧ")}, - {0x1f70, 0, 0, 1, f(Yes, true, "ὰ")}, - {0x1f71, 0, 0, 1, f(No, false, "ά")}, - {0x1f72, 0, 0, 1, f(Yes, false, "ὲ")}, - {0x1f73, 0, 0, 1, f(No, false, "έ")}, - {0x1f74, 0, 0, 1, f(Yes, true, "ὴ")}, - {0x1f75, 0, 0, 1, f(No, false, "ή")}, - {0x1f76, 0, 0, 1, f(Yes, false, "ὶ")}, - {0x1f77, 0, 0, 1, f(No, false, "ί")}, - {0x1f78, 0, 0, 1, f(Yes, false, "ὸ")}, - {0x1f79, 0, 0, 1, f(No, false, "ό")}, - {0x1f7a, 0, 0, 1, f(Yes, false, "ὺ")}, - {0x1f7b, 0, 0, 1, f(No, false, "ύ")}, - {0x1f7c, 0, 0, 1, f(Yes, true, "ὼ")}, - {0x1f7d, 0, 0, 1, f(No, false, "ώ")}, - {0x1f7e, 0, 0, 0, f(Yes, false, "")}, - {0x1f80, 0, 0, 2, f(Yes, false, "ᾀ")}, - {0x1f81, 0, 0, 2, f(Yes, false, "ᾁ")}, - {0x1f82, 0, 0, 3, f(Yes, false, "ᾂ")}, - {0x1f83, 0, 0, 3, f(Yes, false, "ᾃ")}, - {0x1f84, 0, 0, 3, f(Yes, false, "ᾄ")}, - {0x1f85, 0, 0, 3, f(Yes, false, "ᾅ")}, - {0x1f86, 0, 0, 3, f(Yes, false, "ᾆ")}, - {0x1f87, 0, 0, 3, f(Yes, false, "ᾇ")}, - {0x1f88, 0, 0, 2, f(Yes, false, "ᾈ")}, - {0x1f89, 0, 0, 2, f(Yes, false, "ᾉ")}, - {0x1f8a, 0, 0, 3, f(Yes, false, "ᾊ")}, - {0x1f8b, 0, 0, 3, f(Yes, false, "ᾋ")}, - {0x1f8c, 0, 0, 3, f(Yes, false, "ᾌ")}, - {0x1f8d, 0, 0, 3, f(Yes, false, "ᾍ")}, - {0x1f8e, 0, 0, 3, f(Yes, false, "ᾎ")}, - {0x1f8f, 0, 0, 3, f(Yes, false, "ᾏ")}, - {0x1f90, 0, 0, 2, f(Yes, false, "ᾐ")}, - {0x1f91, 0, 0, 2, f(Yes, false, "ᾑ")}, - {0x1f92, 0, 0, 3, f(Yes, false, "ᾒ")}, - {0x1f93, 0, 0, 3, f(Yes, false, "ᾓ")}, - {0x1f94, 0, 0, 3, f(Yes, false, "ᾔ")}, - {0x1f95, 0, 0, 3, f(Yes, false, "ᾕ")}, - {0x1f96, 0, 0, 3, f(Yes, false, "ᾖ")}, - {0x1f97, 0, 0, 3, f(Yes, false, "ᾗ")}, - {0x1f98, 0, 0, 2, f(Yes, false, "ᾘ")}, - {0x1f99, 0, 0, 2, f(Yes, false, "ᾙ")}, - {0x1f9a, 0, 0, 3, f(Yes, false, "ᾚ")}, - {0x1f9b, 0, 0, 3, f(Yes, false, "ᾛ")}, - {0x1f9c, 0, 0, 3, f(Yes, false, "ᾜ")}, - {0x1f9d, 0, 0, 3, f(Yes, false, "ᾝ")}, - {0x1f9e, 0, 0, 3, f(Yes, false, "ᾞ")}, - {0x1f9f, 0, 0, 3, f(Yes, false, "ᾟ")}, - {0x1fa0, 0, 0, 2, f(Yes, false, "ᾠ")}, - {0x1fa1, 0, 0, 2, f(Yes, false, "ᾡ")}, - {0x1fa2, 0, 0, 3, f(Yes, false, "ᾢ")}, - {0x1fa3, 0, 0, 3, f(Yes, false, "ᾣ")}, - {0x1fa4, 0, 0, 3, f(Yes, false, "ᾤ")}, - {0x1fa5, 0, 0, 3, f(Yes, false, "ᾥ")}, - {0x1fa6, 0, 0, 3, f(Yes, false, "ᾦ")}, - {0x1fa7, 0, 0, 3, f(Yes, false, "ᾧ")}, - {0x1fa8, 0, 0, 2, f(Yes, false, "ᾨ")}, - {0x1fa9, 0, 0, 2, f(Yes, false, "ᾩ")}, - {0x1faa, 0, 0, 3, f(Yes, false, "ᾪ")}, - {0x1fab, 0, 0, 3, f(Yes, false, "ᾫ")}, - {0x1fac, 0, 0, 3, f(Yes, false, "ᾬ")}, - {0x1fad, 0, 0, 3, f(Yes, false, "ᾭ")}, - {0x1fae, 0, 0, 3, f(Yes, false, "ᾮ")}, - {0x1faf, 0, 0, 3, f(Yes, false, "ᾯ")}, - {0x1fb0, 0, 0, 1, f(Yes, false, "ᾰ")}, - {0x1fb1, 0, 0, 1, f(Yes, false, "ᾱ")}, - {0x1fb2, 0, 0, 2, f(Yes, false, "ᾲ")}, - {0x1fb3, 0, 0, 1, f(Yes, false, "ᾳ")}, - {0x1fb4, 0, 0, 2, f(Yes, false, "ᾴ")}, - {0x1fb5, 0, 0, 0, f(Yes, false, "")}, - {0x1fb6, 0, 0, 1, f(Yes, true, "ᾶ")}, - {0x1fb7, 0, 0, 2, f(Yes, false, "ᾷ")}, - {0x1fb8, 0, 0, 1, f(Yes, false, "Ᾰ")}, - {0x1fb9, 0, 0, 1, f(Yes, false, "Ᾱ")}, - {0x1fba, 0, 0, 1, f(Yes, false, "Ὰ")}, - {0x1fbb, 0, 0, 1, f(No, false, "Ά")}, - {0x1fbc, 0, 0, 1, f(Yes, false, "ᾼ")}, - {0x1fbd, 0, 0, 1, g(Yes, No, false, false, "", " ̓")}, - {0x1fbe, 0, 0, 0, f(No, false, "ι")}, - {0x1fbf, 0, 0, 1, g(Yes, No, true, false, "", " ̓")}, - {0x1fc0, 0, 0, 1, g(Yes, No, false, false, "", " ͂")}, - {0x1fc1, 0, 0, 2, g(Yes, No, false, false, "῁", " ̈͂")}, - {0x1fc2, 0, 0, 2, f(Yes, false, "ῂ")}, - {0x1fc3, 0, 0, 1, f(Yes, false, "ῃ")}, - {0x1fc4, 0, 0, 2, f(Yes, false, "ῄ")}, - {0x1fc5, 0, 0, 0, f(Yes, false, "")}, - {0x1fc6, 0, 0, 1, f(Yes, true, "ῆ")}, - {0x1fc7, 0, 0, 2, f(Yes, false, "ῇ")}, - {0x1fc8, 0, 0, 1, f(Yes, false, "Ὲ")}, - {0x1fc9, 0, 0, 1, f(No, false, "Έ")}, - {0x1fca, 0, 0, 1, f(Yes, false, "Ὴ")}, - {0x1fcb, 0, 0, 1, f(No, false, "Ή")}, - {0x1fcc, 0, 0, 1, f(Yes, false, "ῌ")}, - {0x1fcd, 0, 0, 2, g(Yes, No, false, false, "῍", " ̓̀")}, - {0x1fce, 0, 0, 2, g(Yes, No, false, false, "῎", " ̓́")}, - {0x1fcf, 0, 0, 2, g(Yes, No, false, false, "῏", " ̓͂")}, - {0x1fd0, 0, 0, 1, f(Yes, false, "ῐ")}, - {0x1fd1, 0, 0, 1, f(Yes, false, "ῑ")}, - {0x1fd2, 0, 0, 2, f(Yes, false, "ῒ")}, - {0x1fd3, 0, 0, 2, f(No, false, "ΐ")}, - {0x1fd4, 0, 0, 0, f(Yes, false, "")}, - {0x1fd6, 0, 0, 1, f(Yes, false, "ῖ")}, - {0x1fd7, 0, 0, 2, f(Yes, false, "ῗ")}, - {0x1fd8, 0, 0, 1, f(Yes, false, "Ῐ")}, - {0x1fd9, 0, 0, 1, f(Yes, false, "Ῑ")}, - {0x1fda, 0, 0, 1, f(Yes, false, "Ὶ")}, - {0x1fdb, 0, 0, 1, f(No, false, "Ί")}, - {0x1fdc, 0, 0, 0, f(Yes, false, "")}, - {0x1fdd, 0, 0, 2, g(Yes, No, false, false, "῝", " ̔̀")}, - {0x1fde, 0, 0, 2, g(Yes, No, false, false, "῞", " ̔́")}, - {0x1fdf, 0, 0, 2, g(Yes, No, false, false, "῟", " ̔͂")}, - {0x1fe0, 0, 0, 1, f(Yes, false, "ῠ")}, - {0x1fe1, 0, 0, 1, f(Yes, false, "ῡ")}, - {0x1fe2, 0, 0, 2, f(Yes, false, "ῢ")}, - {0x1fe3, 0, 0, 2, f(No, false, "ΰ")}, - {0x1fe4, 0, 0, 1, f(Yes, false, "ῤ")}, - {0x1fe5, 0, 0, 1, f(Yes, false, "ῥ")}, - {0x1fe6, 0, 0, 1, f(Yes, false, "ῦ")}, - {0x1fe7, 0, 0, 2, f(Yes, false, "ῧ")}, - {0x1fe8, 0, 0, 1, f(Yes, false, "Ῠ")}, - {0x1fe9, 0, 0, 1, f(Yes, false, "Ῡ")}, - {0x1fea, 0, 0, 1, f(Yes, false, "Ὺ")}, - {0x1feb, 0, 0, 1, f(No, false, "Ύ")}, - {0x1fec, 0, 0, 1, f(Yes, false, "Ῥ")}, - {0x1fed, 0, 0, 2, g(Yes, No, false, false, "῭", " ̈̀")}, - {0x1fee, 0, 0, 2, g(No, No, false, false, "΅", " ̈́")}, - {0x1fef, 0, 0, 0, f(No, false, "`")}, - {0x1ff0, 0, 0, 0, f(Yes, false, "")}, - {0x1ff2, 0, 0, 2, f(Yes, false, "ῲ")}, - {0x1ff3, 0, 0, 1, f(Yes, false, "ῳ")}, - {0x1ff4, 0, 0, 2, f(Yes, false, "ῴ")}, - {0x1ff5, 0, 0, 0, f(Yes, false, "")}, - {0x1ff6, 0, 0, 1, f(Yes, true, "ῶ")}, - {0x1ff7, 0, 0, 2, f(Yes, false, "ῷ")}, - {0x1ff8, 0, 0, 1, f(Yes, false, "Ὸ")}, - {0x1ff9, 0, 0, 1, f(No, false, "Ό")}, - {0x1ffa, 0, 0, 1, f(Yes, false, "Ὼ")}, - {0x1ffb, 0, 0, 1, f(No, false, "Ώ")}, - {0x1ffc, 0, 0, 1, f(Yes, false, "ῼ")}, - {0x1ffd, 0, 0, 1, g(No, No, false, false, "´", " ́")}, - {0x1ffe, 0, 0, 1, g(Yes, No, true, false, "", " ̔")}, - {0x1fff, 0, 0, 0, f(Yes, false, "")}, - {0x2000, 0, 0, 0, g(No, No, false, false, "\u2002", " ")}, - {0x2001, 0, 0, 0, g(No, No, false, false, "\u2003", " ")}, - {0x2002, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0x200b, 0, 0, 0, f(Yes, false, "")}, - {0x2011, 0, 0, 0, g(Yes, No, false, false, "", "‐")}, - {0x2012, 0, 0, 0, f(Yes, false, "")}, - {0x2017, 0, 0, 1, g(Yes, No, false, false, "", " ̳")}, - {0x2018, 0, 0, 0, f(Yes, false, "")}, - {0x2024, 0, 0, 0, g(Yes, No, false, false, "", ".")}, - {0x2025, 0, 0, 0, g(Yes, No, false, false, "", "..")}, - {0x2026, 0, 0, 0, g(Yes, No, false, false, "", "...")}, - {0x2027, 0, 0, 0, f(Yes, false, "")}, - {0x202f, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0x2030, 0, 0, 0, f(Yes, false, "")}, - {0x2033, 0, 0, 0, g(Yes, No, false, false, "", "′′")}, - {0x2034, 0, 0, 0, g(Yes, No, false, false, "", "′′′")}, - {0x2035, 0, 0, 0, f(Yes, false, "")}, - {0x2036, 0, 0, 0, g(Yes, No, false, false, "", "‵‵")}, - {0x2037, 0, 0, 0, g(Yes, No, false, false, "", "‵‵‵")}, - {0x2038, 0, 0, 0, f(Yes, false, "")}, - {0x203c, 0, 0, 0, g(Yes, No, false, false, "", "!!")}, - {0x203d, 0, 0, 0, f(Yes, false, "")}, - {0x203e, 0, 0, 1, g(Yes, No, false, false, "", " ̅")}, - {0x203f, 0, 0, 0, f(Yes, false, "")}, - {0x2047, 0, 0, 0, g(Yes, No, false, false, "", "??")}, - {0x2048, 0, 0, 0, g(Yes, No, false, false, "", "?!")}, - {0x2049, 0, 0, 0, g(Yes, No, false, false, "", "!?")}, - {0x204a, 0, 0, 0, f(Yes, false, "")}, - {0x2057, 0, 0, 0, g(Yes, No, false, false, "", "′′′′")}, - {0x2058, 0, 0, 0, f(Yes, false, "")}, - {0x205f, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0x2060, 0, 0, 0, f(Yes, false, "")}, - {0x2070, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x2071, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x2072, 0, 0, 0, f(Yes, false, "")}, - {0x2074, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x2075, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x2076, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x2077, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x2078, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x2079, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x207a, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0x207b, 0, 0, 0, g(Yes, No, false, false, "", "−")}, - {0x207c, 0, 0, 0, g(Yes, No, false, false, "", "=")}, - {0x207d, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0x207e, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0x207f, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x2080, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x2081, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x2082, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x2083, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x2084, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x2085, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x2086, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x2087, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x2088, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x2089, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x208a, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0x208b, 0, 0, 0, g(Yes, No, false, false, "", "−")}, - {0x208c, 0, 0, 0, g(Yes, No, false, false, "", "=")}, - {0x208d, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0x208e, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0x208f, 0, 0, 0, f(Yes, false, "")}, - {0x2090, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x2091, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x2092, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x2093, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x2094, 0, 0, 0, g(Yes, No, false, false, "", "ə")}, - {0x2095, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x2096, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x2097, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x2098, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x2099, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x209a, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x209b, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x209c, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x209d, 0, 0, 0, f(Yes, false, "")}, - {0x20a8, 0, 0, 0, g(Yes, No, false, false, "", "Rs")}, - {0x20a9, 0, 0, 0, f(Yes, false, "")}, - {0x20d0, 230, 1, 1, f(Yes, false, "")}, - {0x20d2, 1, 1, 1, f(Yes, false, "")}, - {0x20d4, 230, 1, 1, f(Yes, false, "")}, - {0x20d8, 1, 1, 1, f(Yes, false, "")}, - {0x20db, 230, 1, 1, f(Yes, false, "")}, - {0x20dd, 0, 0, 0, f(Yes, false, "")}, - {0x20e1, 230, 1, 1, f(Yes, false, "")}, - {0x20e2, 0, 0, 0, f(Yes, false, "")}, - {0x20e5, 1, 1, 1, f(Yes, false, "")}, - {0x20e7, 230, 1, 1, f(Yes, false, "")}, - {0x20e8, 220, 1, 1, f(Yes, false, "")}, - {0x20e9, 230, 1, 1, f(Yes, false, "")}, - {0x20ea, 1, 1, 1, f(Yes, false, "")}, - {0x20ec, 220, 1, 1, f(Yes, false, "")}, - {0x20f0, 230, 1, 1, f(Yes, false, "")}, - {0x20f1, 0, 0, 0, f(Yes, false, "")}, - {0x2100, 0, 0, 0, g(Yes, No, false, false, "", "a/c")}, - {0x2101, 0, 0, 0, g(Yes, No, false, false, "", "a/s")}, - {0x2102, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x2103, 0, 0, 0, g(Yes, No, false, false, "", "°C")}, - {0x2104, 0, 0, 0, f(Yes, false, "")}, - {0x2105, 0, 0, 0, g(Yes, No, false, false, "", "c/o")}, - {0x2106, 0, 0, 0, g(Yes, No, false, false, "", "c/u")}, - {0x2107, 0, 0, 0, g(Yes, No, false, false, "", "Ɛ")}, - {0x2108, 0, 0, 0, f(Yes, false, "")}, - {0x2109, 0, 0, 0, g(Yes, No, false, false, "", "°F")}, - {0x210a, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x210b, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x210e, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x210f, 0, 0, 0, g(Yes, No, false, false, "", "ħ")}, - {0x2110, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x2112, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x2113, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x2114, 0, 0, 0, f(Yes, false, "")}, - {0x2115, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x2116, 0, 0, 0, g(Yes, No, false, false, "", "No")}, - {0x2117, 0, 0, 0, f(Yes, false, "")}, - {0x2119, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x211a, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x211b, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x211e, 0, 0, 0, f(Yes, false, "")}, - {0x2120, 0, 0, 0, g(Yes, No, false, false, "", "SM")}, - {0x2121, 0, 0, 0, g(Yes, No, false, false, "", "TEL")}, - {0x2122, 0, 0, 0, g(Yes, No, false, false, "", "TM")}, - {0x2123, 0, 0, 0, f(Yes, false, "")}, - {0x2124, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x2125, 0, 0, 0, f(Yes, false, "")}, - {0x2126, 0, 0, 0, f(No, false, "Ω")}, - {0x2127, 0, 0, 0, f(Yes, false, "")}, - {0x2128, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x2129, 0, 0, 0, f(Yes, false, "")}, - {0x212a, 0, 0, 0, f(No, false, "K")}, - {0x212b, 0, 0, 1, f(No, false, "Å")}, - {0x212c, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x212d, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x212e, 0, 0, 0, f(Yes, false, "")}, - {0x212f, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x2130, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x2131, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x2132, 0, 0, 0, f(Yes, false, "")}, - {0x2133, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x2134, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x2135, 0, 0, 0, g(Yes, No, false, false, "", "א")}, - {0x2136, 0, 0, 0, g(Yes, No, false, false, "", "ב")}, - {0x2137, 0, 0, 0, g(Yes, No, false, false, "", "ג")}, - {0x2138, 0, 0, 0, g(Yes, No, false, false, "", "ד")}, - {0x2139, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x213a, 0, 0, 0, f(Yes, false, "")}, - {0x213b, 0, 0, 0, g(Yes, No, false, false, "", "FAX")}, - {0x213c, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x213d, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x213e, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x213f, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x2140, 0, 0, 0, g(Yes, No, false, false, "", "∑")}, - {0x2141, 0, 0, 0, f(Yes, false, "")}, - {0x2145, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x2146, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x2147, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x2148, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x2149, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x214a, 0, 0, 0, f(Yes, false, "")}, - {0x2150, 0, 0, 0, g(Yes, No, false, false, "", "1⁄7")}, - {0x2151, 0, 0, 0, g(Yes, No, false, false, "", "1⁄9")}, - {0x2152, 0, 0, 0, g(Yes, No, false, false, "", "1⁄10")}, - {0x2153, 0, 0, 0, g(Yes, No, false, false, "", "1⁄3")}, - {0x2154, 0, 0, 0, g(Yes, No, false, false, "", "2⁄3")}, - {0x2155, 0, 0, 0, g(Yes, No, false, false, "", "1⁄5")}, - {0x2156, 0, 0, 0, g(Yes, No, false, false, "", "2⁄5")}, - {0x2157, 0, 0, 0, g(Yes, No, false, false, "", "3⁄5")}, - {0x2158, 0, 0, 0, g(Yes, No, false, false, "", "4⁄5")}, - {0x2159, 0, 0, 0, g(Yes, No, false, false, "", "1⁄6")}, - {0x215a, 0, 0, 0, g(Yes, No, false, false, "", "5⁄6")}, - {0x215b, 0, 0, 0, g(Yes, No, false, false, "", "1⁄8")}, - {0x215c, 0, 0, 0, g(Yes, No, false, false, "", "3⁄8")}, - {0x215d, 0, 0, 0, g(Yes, No, false, false, "", "5⁄8")}, - {0x215e, 0, 0, 0, g(Yes, No, false, false, "", "7⁄8")}, - {0x215f, 0, 0, 0, g(Yes, No, false, false, "", "1⁄")}, - {0x2160, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x2161, 0, 0, 0, g(Yes, No, false, false, "", "II")}, - {0x2162, 0, 0, 0, g(Yes, No, false, false, "", "III")}, - {0x2163, 0, 0, 0, g(Yes, No, false, false, "", "IV")}, - {0x2164, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x2165, 0, 0, 0, g(Yes, No, false, false, "", "VI")}, - {0x2166, 0, 0, 0, g(Yes, No, false, false, "", "VII")}, - {0x2167, 0, 0, 0, g(Yes, No, false, false, "", "VIII")}, - {0x2168, 0, 0, 0, g(Yes, No, false, false, "", "IX")}, - {0x2169, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x216a, 0, 0, 0, g(Yes, No, false, false, "", "XI")}, - {0x216b, 0, 0, 0, g(Yes, No, false, false, "", "XII")}, - {0x216c, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x216d, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x216e, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x216f, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x2170, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x2171, 0, 0, 0, g(Yes, No, false, false, "", "ii")}, - {0x2172, 0, 0, 0, g(Yes, No, false, false, "", "iii")}, - {0x2173, 0, 0, 0, g(Yes, No, false, false, "", "iv")}, - {0x2174, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x2175, 0, 0, 0, g(Yes, No, false, false, "", "vi")}, - {0x2176, 0, 0, 0, g(Yes, No, false, false, "", "vii")}, - {0x2177, 0, 0, 0, g(Yes, No, false, false, "", "viii")}, - {0x2178, 0, 0, 0, g(Yes, No, false, false, "", "ix")}, - {0x2179, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x217a, 0, 0, 0, g(Yes, No, false, false, "", "xi")}, - {0x217b, 0, 0, 0, g(Yes, No, false, false, "", "xii")}, - {0x217c, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x217d, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x217e, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x217f, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x2180, 0, 0, 0, f(Yes, false, "")}, - {0x2189, 0, 0, 0, g(Yes, No, false, false, "", "0⁄3")}, - {0x218a, 0, 0, 0, f(Yes, false, "")}, - {0x2190, 0, 0, 0, f(Yes, true, "")}, - {0x2191, 0, 0, 0, f(Yes, false, "")}, - {0x2192, 0, 0, 0, f(Yes, true, "")}, - {0x2193, 0, 0, 0, f(Yes, false, "")}, - {0x2194, 0, 0, 0, f(Yes, true, "")}, - {0x2195, 0, 0, 0, f(Yes, false, "")}, - {0x219a, 0, 0, 1, f(Yes, false, "↚")}, - {0x219b, 0, 0, 1, f(Yes, false, "↛")}, - {0x219c, 0, 0, 0, f(Yes, false, "")}, - {0x21ae, 0, 0, 1, f(Yes, false, "↮")}, - {0x21af, 0, 0, 0, f(Yes, false, "")}, - {0x21cd, 0, 0, 1, f(Yes, false, "⇍")}, - {0x21ce, 0, 0, 1, f(Yes, false, "⇎")}, - {0x21cf, 0, 0, 1, f(Yes, false, "⇏")}, - {0x21d0, 0, 0, 0, f(Yes, true, "")}, - {0x21d1, 0, 0, 0, f(Yes, false, "")}, - {0x21d2, 0, 0, 0, f(Yes, true, "")}, - {0x21d3, 0, 0, 0, f(Yes, false, "")}, - {0x21d4, 0, 0, 0, f(Yes, true, "")}, - {0x21d5, 0, 0, 0, f(Yes, false, "")}, - {0x2203, 0, 0, 0, f(Yes, true, "")}, - {0x2204, 0, 0, 1, f(Yes, false, "∄")}, - {0x2205, 0, 0, 0, f(Yes, false, "")}, - {0x2208, 0, 0, 0, f(Yes, true, "")}, - {0x2209, 0, 0, 1, f(Yes, false, "∉")}, - {0x220a, 0, 0, 0, f(Yes, false, "")}, - {0x220b, 0, 0, 0, f(Yes, true, "")}, - {0x220c, 0, 0, 1, f(Yes, false, "∌")}, - {0x220d, 0, 0, 0, f(Yes, false, "")}, - {0x2223, 0, 0, 0, f(Yes, true, "")}, - {0x2224, 0, 0, 1, f(Yes, false, "∤")}, - {0x2225, 0, 0, 0, f(Yes, true, "")}, - {0x2226, 0, 0, 1, f(Yes, false, "∦")}, - {0x2227, 0, 0, 0, f(Yes, false, "")}, - {0x222c, 0, 0, 0, g(Yes, No, false, false, "", "∫∫")}, - {0x222d, 0, 0, 0, g(Yes, No, false, false, "", "∫∫∫")}, - {0x222e, 0, 0, 0, f(Yes, false, "")}, - {0x222f, 0, 0, 0, g(Yes, No, false, false, "", "∮∮")}, - {0x2230, 0, 0, 0, g(Yes, No, false, false, "", "∮∮∮")}, - {0x2231, 0, 0, 0, f(Yes, false, "")}, - {0x223c, 0, 0, 0, f(Yes, true, "")}, - {0x223d, 0, 0, 0, f(Yes, false, "")}, - {0x2241, 0, 0, 1, f(Yes, false, "≁")}, - {0x2242, 0, 0, 0, f(Yes, false, "")}, - {0x2243, 0, 0, 0, f(Yes, true, "")}, - {0x2244, 0, 0, 1, f(Yes, false, "≄")}, - {0x2245, 0, 0, 0, f(Yes, true, "")}, - {0x2246, 0, 0, 0, f(Yes, false, "")}, - {0x2247, 0, 0, 1, f(Yes, false, "≇")}, - {0x2248, 0, 0, 0, f(Yes, true, "")}, - {0x2249, 0, 0, 1, f(Yes, false, "≉")}, - {0x224a, 0, 0, 0, f(Yes, false, "")}, - {0x224d, 0, 0, 0, f(Yes, true, "")}, - {0x224e, 0, 0, 0, f(Yes, false, "")}, - {0x2260, 0, 0, 1, f(Yes, false, "≠")}, - {0x2261, 0, 0, 0, f(Yes, true, "")}, - {0x2262, 0, 0, 1, f(Yes, false, "≢")}, - {0x2263, 0, 0, 0, f(Yes, false, "")}, - {0x2264, 0, 0, 0, f(Yes, true, "")}, - {0x2266, 0, 0, 0, f(Yes, false, "")}, - {0x226d, 0, 0, 1, f(Yes, false, "≭")}, - {0x226e, 0, 0, 1, f(Yes, false, "≮")}, - {0x226f, 0, 0, 1, f(Yes, false, "≯")}, - {0x2270, 0, 0, 1, f(Yes, false, "≰")}, - {0x2271, 0, 0, 1, f(Yes, false, "≱")}, - {0x2272, 0, 0, 0, f(Yes, true, "")}, - {0x2274, 0, 0, 1, f(Yes, false, "≴")}, - {0x2275, 0, 0, 1, f(Yes, false, "≵")}, - {0x2276, 0, 0, 0, f(Yes, true, "")}, - {0x2278, 0, 0, 1, f(Yes, false, "≸")}, - {0x2279, 0, 0, 1, f(Yes, false, "≹")}, - {0x227a, 0, 0, 0, f(Yes, true, "")}, - {0x227e, 0, 0, 0, f(Yes, false, "")}, - {0x2280, 0, 0, 1, f(Yes, false, "⊀")}, - {0x2281, 0, 0, 1, f(Yes, false, "⊁")}, - {0x2282, 0, 0, 0, f(Yes, true, "")}, - {0x2284, 0, 0, 1, f(Yes, false, "⊄")}, - {0x2285, 0, 0, 1, f(Yes, false, "⊅")}, - {0x2286, 0, 0, 0, f(Yes, true, "")}, - {0x2288, 0, 0, 1, f(Yes, false, "⊈")}, - {0x2289, 0, 0, 1, f(Yes, false, "⊉")}, - {0x228a, 0, 0, 0, f(Yes, false, "")}, - {0x2291, 0, 0, 0, f(Yes, true, "")}, - {0x2293, 0, 0, 0, f(Yes, false, "")}, - {0x22a2, 0, 0, 0, f(Yes, true, "")}, - {0x22a3, 0, 0, 0, f(Yes, false, "")}, - {0x22a8, 0, 0, 0, f(Yes, true, "")}, - {0x22aa, 0, 0, 0, f(Yes, false, "")}, - {0x22ab, 0, 0, 0, f(Yes, true, "")}, - {0x22ac, 0, 0, 1, f(Yes, false, "⊬")}, - {0x22ad, 0, 0, 1, f(Yes, false, "⊭")}, - {0x22ae, 0, 0, 1, f(Yes, false, "⊮")}, - {0x22af, 0, 0, 1, f(Yes, false, "⊯")}, - {0x22b0, 0, 0, 0, f(Yes, false, "")}, - {0x22b2, 0, 0, 0, f(Yes, true, "")}, - {0x22b6, 0, 0, 0, f(Yes, false, "")}, - {0x22e0, 0, 0, 1, f(Yes, false, "⋠")}, - {0x22e1, 0, 0, 1, f(Yes, false, "⋡")}, - {0x22e2, 0, 0, 1, f(Yes, false, "⋢")}, - {0x22e3, 0, 0, 1, f(Yes, false, "⋣")}, - {0x22e4, 0, 0, 0, f(Yes, false, "")}, - {0x22ea, 0, 0, 1, f(Yes, false, "⋪")}, - {0x22eb, 0, 0, 1, f(Yes, false, "⋫")}, - {0x22ec, 0, 0, 1, f(Yes, false, "⋬")}, - {0x22ed, 0, 0, 1, f(Yes, false, "⋭")}, - {0x22ee, 0, 0, 0, f(Yes, false, "")}, - {0x2329, 0, 0, 0, f(No, false, "〈")}, - {0x232a, 0, 0, 0, f(No, false, "〉")}, - {0x232b, 0, 0, 0, f(Yes, false, "")}, - {0x2460, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x2461, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x2462, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x2463, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x2464, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x2465, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x2466, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x2467, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x2468, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x2469, 0, 0, 0, g(Yes, No, false, false, "", "10")}, - {0x246a, 0, 0, 0, g(Yes, No, false, false, "", "11")}, - {0x246b, 0, 0, 0, g(Yes, No, false, false, "", "12")}, - {0x246c, 0, 0, 0, g(Yes, No, false, false, "", "13")}, - {0x246d, 0, 0, 0, g(Yes, No, false, false, "", "14")}, - {0x246e, 0, 0, 0, g(Yes, No, false, false, "", "15")}, - {0x246f, 0, 0, 0, g(Yes, No, false, false, "", "16")}, - {0x2470, 0, 0, 0, g(Yes, No, false, false, "", "17")}, - {0x2471, 0, 0, 0, g(Yes, No, false, false, "", "18")}, - {0x2472, 0, 0, 0, g(Yes, No, false, false, "", "19")}, - {0x2473, 0, 0, 0, g(Yes, No, false, false, "", "20")}, - {0x2474, 0, 0, 0, g(Yes, No, false, false, "", "(1)")}, - {0x2475, 0, 0, 0, g(Yes, No, false, false, "", "(2)")}, - {0x2476, 0, 0, 0, g(Yes, No, false, false, "", "(3)")}, - {0x2477, 0, 0, 0, g(Yes, No, false, false, "", "(4)")}, - {0x2478, 0, 0, 0, g(Yes, No, false, false, "", "(5)")}, - {0x2479, 0, 0, 0, g(Yes, No, false, false, "", "(6)")}, - {0x247a, 0, 0, 0, g(Yes, No, false, false, "", "(7)")}, - {0x247b, 0, 0, 0, g(Yes, No, false, false, "", "(8)")}, - {0x247c, 0, 0, 0, g(Yes, No, false, false, "", "(9)")}, - {0x247d, 0, 0, 0, g(Yes, No, false, false, "", "(10)")}, - {0x247e, 0, 0, 0, g(Yes, No, false, false, "", "(11)")}, - {0x247f, 0, 0, 0, g(Yes, No, false, false, "", "(12)")}, - {0x2480, 0, 0, 0, g(Yes, No, false, false, "", "(13)")}, - {0x2481, 0, 0, 0, g(Yes, No, false, false, "", "(14)")}, - {0x2482, 0, 0, 0, g(Yes, No, false, false, "", "(15)")}, - {0x2483, 0, 0, 0, g(Yes, No, false, false, "", "(16)")}, - {0x2484, 0, 0, 0, g(Yes, No, false, false, "", "(17)")}, - {0x2485, 0, 0, 0, g(Yes, No, false, false, "", "(18)")}, - {0x2486, 0, 0, 0, g(Yes, No, false, false, "", "(19)")}, - {0x2487, 0, 0, 0, g(Yes, No, false, false, "", "(20)")}, - {0x2488, 0, 0, 0, g(Yes, No, false, false, "", "1.")}, - {0x2489, 0, 0, 0, g(Yes, No, false, false, "", "2.")}, - {0x248a, 0, 0, 0, g(Yes, No, false, false, "", "3.")}, - {0x248b, 0, 0, 0, g(Yes, No, false, false, "", "4.")}, - {0x248c, 0, 0, 0, g(Yes, No, false, false, "", "5.")}, - {0x248d, 0, 0, 0, g(Yes, No, false, false, "", "6.")}, - {0x248e, 0, 0, 0, g(Yes, No, false, false, "", "7.")}, - {0x248f, 0, 0, 0, g(Yes, No, false, false, "", "8.")}, - {0x2490, 0, 0, 0, g(Yes, No, false, false, "", "9.")}, - {0x2491, 0, 0, 0, g(Yes, No, false, false, "", "10.")}, - {0x2492, 0, 0, 0, g(Yes, No, false, false, "", "11.")}, - {0x2493, 0, 0, 0, g(Yes, No, false, false, "", "12.")}, - {0x2494, 0, 0, 0, g(Yes, No, false, false, "", "13.")}, - {0x2495, 0, 0, 0, g(Yes, No, false, false, "", "14.")}, - {0x2496, 0, 0, 0, g(Yes, No, false, false, "", "15.")}, - {0x2497, 0, 0, 0, g(Yes, No, false, false, "", "16.")}, - {0x2498, 0, 0, 0, g(Yes, No, false, false, "", "17.")}, - {0x2499, 0, 0, 0, g(Yes, No, false, false, "", "18.")}, - {0x249a, 0, 0, 0, g(Yes, No, false, false, "", "19.")}, - {0x249b, 0, 0, 0, g(Yes, No, false, false, "", "20.")}, - {0x249c, 0, 0, 0, g(Yes, No, false, false, "", "(a)")}, - {0x249d, 0, 0, 0, g(Yes, No, false, false, "", "(b)")}, - {0x249e, 0, 0, 0, g(Yes, No, false, false, "", "(c)")}, - {0x249f, 0, 0, 0, g(Yes, No, false, false, "", "(d)")}, - {0x24a0, 0, 0, 0, g(Yes, No, false, false, "", "(e)")}, - {0x24a1, 0, 0, 0, g(Yes, No, false, false, "", "(f)")}, - {0x24a2, 0, 0, 0, g(Yes, No, false, false, "", "(g)")}, - {0x24a3, 0, 0, 0, g(Yes, No, false, false, "", "(h)")}, - {0x24a4, 0, 0, 0, g(Yes, No, false, false, "", "(i)")}, - {0x24a5, 0, 0, 0, g(Yes, No, false, false, "", "(j)")}, - {0x24a6, 0, 0, 0, g(Yes, No, false, false, "", "(k)")}, - {0x24a7, 0, 0, 0, g(Yes, No, false, false, "", "(l)")}, - {0x24a8, 0, 0, 0, g(Yes, No, false, false, "", "(m)")}, - {0x24a9, 0, 0, 0, g(Yes, No, false, false, "", "(n)")}, - {0x24aa, 0, 0, 0, g(Yes, No, false, false, "", "(o)")}, - {0x24ab, 0, 0, 0, g(Yes, No, false, false, "", "(p)")}, - {0x24ac, 0, 0, 0, g(Yes, No, false, false, "", "(q)")}, - {0x24ad, 0, 0, 0, g(Yes, No, false, false, "", "(r)")}, - {0x24ae, 0, 0, 0, g(Yes, No, false, false, "", "(s)")}, - {0x24af, 0, 0, 0, g(Yes, No, false, false, "", "(t)")}, - {0x24b0, 0, 0, 0, g(Yes, No, false, false, "", "(u)")}, - {0x24b1, 0, 0, 0, g(Yes, No, false, false, "", "(v)")}, - {0x24b2, 0, 0, 0, g(Yes, No, false, false, "", "(w)")}, - {0x24b3, 0, 0, 0, g(Yes, No, false, false, "", "(x)")}, - {0x24b4, 0, 0, 0, g(Yes, No, false, false, "", "(y)")}, - {0x24b5, 0, 0, 0, g(Yes, No, false, false, "", "(z)")}, - {0x24b6, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x24b7, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x24b8, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x24b9, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x24ba, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x24bb, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x24bc, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x24bd, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x24be, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x24bf, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x24c0, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x24c1, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x24c2, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x24c3, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x24c4, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x24c5, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x24c6, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x24c7, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x24c8, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x24c9, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x24ca, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x24cb, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x24cc, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x24cd, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x24ce, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x24cf, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x24d0, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x24d1, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x24d2, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x24d3, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x24d4, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x24d5, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x24d6, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x24d7, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x24d8, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x24d9, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x24da, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x24db, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x24dc, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x24dd, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x24de, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x24df, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x24e0, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x24e1, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x24e2, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x24e3, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x24e4, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x24e5, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x24e6, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x24e7, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x24e8, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x24e9, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x24ea, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x24eb, 0, 0, 0, f(Yes, false, "")}, - {0x2a0c, 0, 0, 0, g(Yes, No, false, false, "", "∫∫∫∫")}, - {0x2a0d, 0, 0, 0, f(Yes, false, "")}, - {0x2a74, 0, 0, 0, g(Yes, No, false, false, "", "::=")}, - {0x2a75, 0, 0, 0, g(Yes, No, false, false, "", "==")}, - {0x2a76, 0, 0, 0, g(Yes, No, false, false, "", "===")}, - {0x2a77, 0, 0, 0, f(Yes, false, "")}, - {0x2adc, 0, 0, 1, f(No, false, "⫝̸")}, - {0x2add, 0, 0, 0, f(Yes, false, "")}, - {0x2c7c, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x2c7d, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x2c7e, 0, 0, 0, f(Yes, false, "")}, - {0x2cef, 230, 1, 1, f(Yes, false, "")}, - {0x2cf2, 0, 0, 0, f(Yes, false, "")}, - {0x2d6f, 0, 0, 0, g(Yes, No, false, false, "", "ⵡ")}, - {0x2d70, 0, 0, 0, f(Yes, false, "")}, - {0x2d7f, 9, 1, 1, f(Yes, false, "")}, - {0x2d80, 0, 0, 0, f(Yes, false, "")}, - {0x2de0, 230, 1, 1, f(Yes, false, "")}, - {0x2e00, 0, 0, 0, f(Yes, false, "")}, - {0x2e9f, 0, 0, 0, g(Yes, No, false, false, "", "母")}, - {0x2ea0, 0, 0, 0, f(Yes, false, "")}, - {0x2ef3, 0, 0, 0, g(Yes, No, false, false, "", "龟")}, - {0x2ef4, 0, 0, 0, f(Yes, false, "")}, - {0x2f00, 0, 0, 0, g(Yes, No, false, false, "", "一")}, - {0x2f01, 0, 0, 0, g(Yes, No, false, false, "", "丨")}, - {0x2f02, 0, 0, 0, g(Yes, No, false, false, "", "丶")}, - {0x2f03, 0, 0, 0, g(Yes, No, false, false, "", "丿")}, - {0x2f04, 0, 0, 0, g(Yes, No, false, false, "", "乙")}, - {0x2f05, 0, 0, 0, g(Yes, No, false, false, "", "亅")}, - {0x2f06, 0, 0, 0, g(Yes, No, false, false, "", "二")}, - {0x2f07, 0, 0, 0, g(Yes, No, false, false, "", "亠")}, - {0x2f08, 0, 0, 0, g(Yes, No, false, false, "", "人")}, - {0x2f09, 0, 0, 0, g(Yes, No, false, false, "", "儿")}, - {0x2f0a, 0, 0, 0, g(Yes, No, false, false, "", "入")}, - {0x2f0b, 0, 0, 0, g(Yes, No, false, false, "", "八")}, - {0x2f0c, 0, 0, 0, g(Yes, No, false, false, "", "冂")}, - {0x2f0d, 0, 0, 0, g(Yes, No, false, false, "", "冖")}, - {0x2f0e, 0, 0, 0, g(Yes, No, false, false, "", "冫")}, - {0x2f0f, 0, 0, 0, g(Yes, No, false, false, "", "几")}, - {0x2f10, 0, 0, 0, g(Yes, No, false, false, "", "凵")}, - {0x2f11, 0, 0, 0, g(Yes, No, false, false, "", "刀")}, - {0x2f12, 0, 0, 0, g(Yes, No, false, false, "", "力")}, - {0x2f13, 0, 0, 0, g(Yes, No, false, false, "", "勹")}, - {0x2f14, 0, 0, 0, g(Yes, No, false, false, "", "匕")}, - {0x2f15, 0, 0, 0, g(Yes, No, false, false, "", "匚")}, - {0x2f16, 0, 0, 0, g(Yes, No, false, false, "", "匸")}, - {0x2f17, 0, 0, 0, g(Yes, No, false, false, "", "十")}, - {0x2f18, 0, 0, 0, g(Yes, No, false, false, "", "卜")}, - {0x2f19, 0, 0, 0, g(Yes, No, false, false, "", "卩")}, - {0x2f1a, 0, 0, 0, g(Yes, No, false, false, "", "厂")}, - {0x2f1b, 0, 0, 0, g(Yes, No, false, false, "", "厶")}, - {0x2f1c, 0, 0, 0, g(Yes, No, false, false, "", "又")}, - {0x2f1d, 0, 0, 0, g(Yes, No, false, false, "", "口")}, - {0x2f1e, 0, 0, 0, g(Yes, No, false, false, "", "囗")}, - {0x2f1f, 0, 0, 0, g(Yes, No, false, false, "", "土")}, - {0x2f20, 0, 0, 0, g(Yes, No, false, false, "", "士")}, - {0x2f21, 0, 0, 0, g(Yes, No, false, false, "", "夂")}, - {0x2f22, 0, 0, 0, g(Yes, No, false, false, "", "夊")}, - {0x2f23, 0, 0, 0, g(Yes, No, false, false, "", "夕")}, - {0x2f24, 0, 0, 0, g(Yes, No, false, false, "", "大")}, - {0x2f25, 0, 0, 0, g(Yes, No, false, false, "", "女")}, - {0x2f26, 0, 0, 0, g(Yes, No, false, false, "", "子")}, - {0x2f27, 0, 0, 0, g(Yes, No, false, false, "", "宀")}, - {0x2f28, 0, 0, 0, g(Yes, No, false, false, "", "寸")}, - {0x2f29, 0, 0, 0, g(Yes, No, false, false, "", "小")}, - {0x2f2a, 0, 0, 0, g(Yes, No, false, false, "", "尢")}, - {0x2f2b, 0, 0, 0, g(Yes, No, false, false, "", "尸")}, - {0x2f2c, 0, 0, 0, g(Yes, No, false, false, "", "屮")}, - {0x2f2d, 0, 0, 0, g(Yes, No, false, false, "", "山")}, - {0x2f2e, 0, 0, 0, g(Yes, No, false, false, "", "巛")}, - {0x2f2f, 0, 0, 0, g(Yes, No, false, false, "", "工")}, - {0x2f30, 0, 0, 0, g(Yes, No, false, false, "", "己")}, - {0x2f31, 0, 0, 0, g(Yes, No, false, false, "", "巾")}, - {0x2f32, 0, 0, 0, g(Yes, No, false, false, "", "干")}, - {0x2f33, 0, 0, 0, g(Yes, No, false, false, "", "幺")}, - {0x2f34, 0, 0, 0, g(Yes, No, false, false, "", "广")}, - {0x2f35, 0, 0, 0, g(Yes, No, false, false, "", "廴")}, - {0x2f36, 0, 0, 0, g(Yes, No, false, false, "", "廾")}, - {0x2f37, 0, 0, 0, g(Yes, No, false, false, "", "弋")}, - {0x2f38, 0, 0, 0, g(Yes, No, false, false, "", "弓")}, - {0x2f39, 0, 0, 0, g(Yes, No, false, false, "", "彐")}, - {0x2f3a, 0, 0, 0, g(Yes, No, false, false, "", "彡")}, - {0x2f3b, 0, 0, 0, g(Yes, No, false, false, "", "彳")}, - {0x2f3c, 0, 0, 0, g(Yes, No, false, false, "", "心")}, - {0x2f3d, 0, 0, 0, g(Yes, No, false, false, "", "戈")}, - {0x2f3e, 0, 0, 0, g(Yes, No, false, false, "", "戶")}, - {0x2f3f, 0, 0, 0, g(Yes, No, false, false, "", "手")}, - {0x2f40, 0, 0, 0, g(Yes, No, false, false, "", "支")}, - {0x2f41, 0, 0, 0, g(Yes, No, false, false, "", "攴")}, - {0x2f42, 0, 0, 0, g(Yes, No, false, false, "", "文")}, - {0x2f43, 0, 0, 0, g(Yes, No, false, false, "", "斗")}, - {0x2f44, 0, 0, 0, g(Yes, No, false, false, "", "斤")}, - {0x2f45, 0, 0, 0, g(Yes, No, false, false, "", "方")}, - {0x2f46, 0, 0, 0, g(Yes, No, false, false, "", "无")}, - {0x2f47, 0, 0, 0, g(Yes, No, false, false, "", "日")}, - {0x2f48, 0, 0, 0, g(Yes, No, false, false, "", "曰")}, - {0x2f49, 0, 0, 0, g(Yes, No, false, false, "", "月")}, - {0x2f4a, 0, 0, 0, g(Yes, No, false, false, "", "木")}, - {0x2f4b, 0, 0, 0, g(Yes, No, false, false, "", "欠")}, - {0x2f4c, 0, 0, 0, g(Yes, No, false, false, "", "止")}, - {0x2f4d, 0, 0, 0, g(Yes, No, false, false, "", "歹")}, - {0x2f4e, 0, 0, 0, g(Yes, No, false, false, "", "殳")}, - {0x2f4f, 0, 0, 0, g(Yes, No, false, false, "", "毋")}, - {0x2f50, 0, 0, 0, g(Yes, No, false, false, "", "比")}, - {0x2f51, 0, 0, 0, g(Yes, No, false, false, "", "毛")}, - {0x2f52, 0, 0, 0, g(Yes, No, false, false, "", "氏")}, - {0x2f53, 0, 0, 0, g(Yes, No, false, false, "", "气")}, - {0x2f54, 0, 0, 0, g(Yes, No, false, false, "", "水")}, - {0x2f55, 0, 0, 0, g(Yes, No, false, false, "", "火")}, - {0x2f56, 0, 0, 0, g(Yes, No, false, false, "", "爪")}, - {0x2f57, 0, 0, 0, g(Yes, No, false, false, "", "父")}, - {0x2f58, 0, 0, 0, g(Yes, No, false, false, "", "爻")}, - {0x2f59, 0, 0, 0, g(Yes, No, false, false, "", "爿")}, - {0x2f5a, 0, 0, 0, g(Yes, No, false, false, "", "片")}, - {0x2f5b, 0, 0, 0, g(Yes, No, false, false, "", "牙")}, - {0x2f5c, 0, 0, 0, g(Yes, No, false, false, "", "牛")}, - {0x2f5d, 0, 0, 0, g(Yes, No, false, false, "", "犬")}, - {0x2f5e, 0, 0, 0, g(Yes, No, false, false, "", "玄")}, - {0x2f5f, 0, 0, 0, g(Yes, No, false, false, "", "玉")}, - {0x2f60, 0, 0, 0, g(Yes, No, false, false, "", "瓜")}, - {0x2f61, 0, 0, 0, g(Yes, No, false, false, "", "瓦")}, - {0x2f62, 0, 0, 0, g(Yes, No, false, false, "", "甘")}, - {0x2f63, 0, 0, 0, g(Yes, No, false, false, "", "生")}, - {0x2f64, 0, 0, 0, g(Yes, No, false, false, "", "用")}, - {0x2f65, 0, 0, 0, g(Yes, No, false, false, "", "田")}, - {0x2f66, 0, 0, 0, g(Yes, No, false, false, "", "疋")}, - {0x2f67, 0, 0, 0, g(Yes, No, false, false, "", "疒")}, - {0x2f68, 0, 0, 0, g(Yes, No, false, false, "", "癶")}, - {0x2f69, 0, 0, 0, g(Yes, No, false, false, "", "白")}, - {0x2f6a, 0, 0, 0, g(Yes, No, false, false, "", "皮")}, - {0x2f6b, 0, 0, 0, g(Yes, No, false, false, "", "皿")}, - {0x2f6c, 0, 0, 0, g(Yes, No, false, false, "", "目")}, - {0x2f6d, 0, 0, 0, g(Yes, No, false, false, "", "矛")}, - {0x2f6e, 0, 0, 0, g(Yes, No, false, false, "", "矢")}, - {0x2f6f, 0, 0, 0, g(Yes, No, false, false, "", "石")}, - {0x2f70, 0, 0, 0, g(Yes, No, false, false, "", "示")}, - {0x2f71, 0, 0, 0, g(Yes, No, false, false, "", "禸")}, - {0x2f72, 0, 0, 0, g(Yes, No, false, false, "", "禾")}, - {0x2f73, 0, 0, 0, g(Yes, No, false, false, "", "穴")}, - {0x2f74, 0, 0, 0, g(Yes, No, false, false, "", "立")}, - {0x2f75, 0, 0, 0, g(Yes, No, false, false, "", "竹")}, - {0x2f76, 0, 0, 0, g(Yes, No, false, false, "", "米")}, - {0x2f77, 0, 0, 0, g(Yes, No, false, false, "", "糸")}, - {0x2f78, 0, 0, 0, g(Yes, No, false, false, "", "缶")}, - {0x2f79, 0, 0, 0, g(Yes, No, false, false, "", "网")}, - {0x2f7a, 0, 0, 0, g(Yes, No, false, false, "", "羊")}, - {0x2f7b, 0, 0, 0, g(Yes, No, false, false, "", "羽")}, - {0x2f7c, 0, 0, 0, g(Yes, No, false, false, "", "老")}, - {0x2f7d, 0, 0, 0, g(Yes, No, false, false, "", "而")}, - {0x2f7e, 0, 0, 0, g(Yes, No, false, false, "", "耒")}, - {0x2f7f, 0, 0, 0, g(Yes, No, false, false, "", "耳")}, - {0x2f80, 0, 0, 0, g(Yes, No, false, false, "", "聿")}, - {0x2f81, 0, 0, 0, g(Yes, No, false, false, "", "肉")}, - {0x2f82, 0, 0, 0, g(Yes, No, false, false, "", "臣")}, - {0x2f83, 0, 0, 0, g(Yes, No, false, false, "", "自")}, - {0x2f84, 0, 0, 0, g(Yes, No, false, false, "", "至")}, - {0x2f85, 0, 0, 0, g(Yes, No, false, false, "", "臼")}, - {0x2f86, 0, 0, 0, g(Yes, No, false, false, "", "舌")}, - {0x2f87, 0, 0, 0, g(Yes, No, false, false, "", "舛")}, - {0x2f88, 0, 0, 0, g(Yes, No, false, false, "", "舟")}, - {0x2f89, 0, 0, 0, g(Yes, No, false, false, "", "艮")}, - {0x2f8a, 0, 0, 0, g(Yes, No, false, false, "", "色")}, - {0x2f8b, 0, 0, 0, g(Yes, No, false, false, "", "艸")}, - {0x2f8c, 0, 0, 0, g(Yes, No, false, false, "", "虍")}, - {0x2f8d, 0, 0, 0, g(Yes, No, false, false, "", "虫")}, - {0x2f8e, 0, 0, 0, g(Yes, No, false, false, "", "血")}, - {0x2f8f, 0, 0, 0, g(Yes, No, false, false, "", "行")}, - {0x2f90, 0, 0, 0, g(Yes, No, false, false, "", "衣")}, - {0x2f91, 0, 0, 0, g(Yes, No, false, false, "", "襾")}, - {0x2f92, 0, 0, 0, g(Yes, No, false, false, "", "見")}, - {0x2f93, 0, 0, 0, g(Yes, No, false, false, "", "角")}, - {0x2f94, 0, 0, 0, g(Yes, No, false, false, "", "言")}, - {0x2f95, 0, 0, 0, g(Yes, No, false, false, "", "谷")}, - {0x2f96, 0, 0, 0, g(Yes, No, false, false, "", "豆")}, - {0x2f97, 0, 0, 0, g(Yes, No, false, false, "", "豕")}, - {0x2f98, 0, 0, 0, g(Yes, No, false, false, "", "豸")}, - {0x2f99, 0, 0, 0, g(Yes, No, false, false, "", "貝")}, - {0x2f9a, 0, 0, 0, g(Yes, No, false, false, "", "赤")}, - {0x2f9b, 0, 0, 0, g(Yes, No, false, false, "", "走")}, - {0x2f9c, 0, 0, 0, g(Yes, No, false, false, "", "足")}, - {0x2f9d, 0, 0, 0, g(Yes, No, false, false, "", "身")}, - {0x2f9e, 0, 0, 0, g(Yes, No, false, false, "", "車")}, - {0x2f9f, 0, 0, 0, g(Yes, No, false, false, "", "辛")}, - {0x2fa0, 0, 0, 0, g(Yes, No, false, false, "", "辰")}, - {0x2fa1, 0, 0, 0, g(Yes, No, false, false, "", "辵")}, - {0x2fa2, 0, 0, 0, g(Yes, No, false, false, "", "邑")}, - {0x2fa3, 0, 0, 0, g(Yes, No, false, false, "", "酉")}, - {0x2fa4, 0, 0, 0, g(Yes, No, false, false, "", "釆")}, - {0x2fa5, 0, 0, 0, g(Yes, No, false, false, "", "里")}, - {0x2fa6, 0, 0, 0, g(Yes, No, false, false, "", "金")}, - {0x2fa7, 0, 0, 0, g(Yes, No, false, false, "", "長")}, - {0x2fa8, 0, 0, 0, g(Yes, No, false, false, "", "門")}, - {0x2fa9, 0, 0, 0, g(Yes, No, false, false, "", "阜")}, - {0x2faa, 0, 0, 0, g(Yes, No, false, false, "", "隶")}, - {0x2fab, 0, 0, 0, g(Yes, No, false, false, "", "隹")}, - {0x2fac, 0, 0, 0, g(Yes, No, false, false, "", "雨")}, - {0x2fad, 0, 0, 0, g(Yes, No, false, false, "", "靑")}, - {0x2fae, 0, 0, 0, g(Yes, No, false, false, "", "非")}, - {0x2faf, 0, 0, 0, g(Yes, No, false, false, "", "面")}, - {0x2fb0, 0, 0, 0, g(Yes, No, false, false, "", "革")}, - {0x2fb1, 0, 0, 0, g(Yes, No, false, false, "", "韋")}, - {0x2fb2, 0, 0, 0, g(Yes, No, false, false, "", "韭")}, - {0x2fb3, 0, 0, 0, g(Yes, No, false, false, "", "音")}, - {0x2fb4, 0, 0, 0, g(Yes, No, false, false, "", "頁")}, - {0x2fb5, 0, 0, 0, g(Yes, No, false, false, "", "風")}, - {0x2fb6, 0, 0, 0, g(Yes, No, false, false, "", "飛")}, - {0x2fb7, 0, 0, 0, g(Yes, No, false, false, "", "食")}, - {0x2fb8, 0, 0, 0, g(Yes, No, false, false, "", "首")}, - {0x2fb9, 0, 0, 0, g(Yes, No, false, false, "", "香")}, - {0x2fba, 0, 0, 0, g(Yes, No, false, false, "", "馬")}, - {0x2fbb, 0, 0, 0, g(Yes, No, false, false, "", "骨")}, - {0x2fbc, 0, 0, 0, g(Yes, No, false, false, "", "高")}, - {0x2fbd, 0, 0, 0, g(Yes, No, false, false, "", "髟")}, - {0x2fbe, 0, 0, 0, g(Yes, No, false, false, "", "鬥")}, - {0x2fbf, 0, 0, 0, g(Yes, No, false, false, "", "鬯")}, - {0x2fc0, 0, 0, 0, g(Yes, No, false, false, "", "鬲")}, - {0x2fc1, 0, 0, 0, g(Yes, No, false, false, "", "鬼")}, - {0x2fc2, 0, 0, 0, g(Yes, No, false, false, "", "魚")}, - {0x2fc3, 0, 0, 0, g(Yes, No, false, false, "", "鳥")}, - {0x2fc4, 0, 0, 0, g(Yes, No, false, false, "", "鹵")}, - {0x2fc5, 0, 0, 0, g(Yes, No, false, false, "", "鹿")}, - {0x2fc6, 0, 0, 0, g(Yes, No, false, false, "", "麥")}, - {0x2fc7, 0, 0, 0, g(Yes, No, false, false, "", "麻")}, - {0x2fc8, 0, 0, 0, g(Yes, No, false, false, "", "黃")}, - {0x2fc9, 0, 0, 0, g(Yes, No, false, false, "", "黍")}, - {0x2fca, 0, 0, 0, g(Yes, No, false, false, "", "黑")}, - {0x2fcb, 0, 0, 0, g(Yes, No, false, false, "", "黹")}, - {0x2fcc, 0, 0, 0, g(Yes, No, false, false, "", "黽")}, - {0x2fcd, 0, 0, 0, g(Yes, No, false, false, "", "鼎")}, - {0x2fce, 0, 0, 0, g(Yes, No, false, false, "", "鼓")}, - {0x2fcf, 0, 0, 0, g(Yes, No, false, false, "", "鼠")}, - {0x2fd0, 0, 0, 0, g(Yes, No, false, false, "", "鼻")}, - {0x2fd1, 0, 0, 0, g(Yes, No, false, false, "", "齊")}, - {0x2fd2, 0, 0, 0, g(Yes, No, false, false, "", "齒")}, - {0x2fd3, 0, 0, 0, g(Yes, No, false, false, "", "龍")}, - {0x2fd4, 0, 0, 0, g(Yes, No, false, false, "", "龜")}, - {0x2fd5, 0, 0, 0, g(Yes, No, false, false, "", "龠")}, - {0x2fd6, 0, 0, 0, f(Yes, false, "")}, - {0x3000, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0x3001, 0, 0, 0, f(Yes, false, "")}, - {0x302a, 218, 1, 1, f(Yes, false, "")}, - {0x302b, 228, 1, 1, f(Yes, false, "")}, - {0x302c, 232, 1, 1, f(Yes, false, "")}, - {0x302d, 222, 1, 1, f(Yes, false, "")}, - {0x302e, 224, 1, 1, f(Yes, false, "")}, - {0x3030, 0, 0, 0, f(Yes, false, "")}, - {0x3036, 0, 0, 0, g(Yes, No, false, false, "", "〒")}, - {0x3037, 0, 0, 0, f(Yes, false, "")}, - {0x3038, 0, 0, 0, g(Yes, No, false, false, "", "十")}, - {0x3039, 0, 0, 0, g(Yes, No, false, false, "", "卄")}, - {0x303a, 0, 0, 0, g(Yes, No, false, false, "", "卅")}, - {0x303b, 0, 0, 0, f(Yes, false, "")}, - {0x3046, 0, 0, 0, f(Yes, true, "")}, - {0x3047, 0, 0, 0, f(Yes, false, "")}, - {0x304b, 0, 0, 0, f(Yes, true, "")}, - {0x304c, 0, 0, 1, f(Yes, false, "が")}, - {0x304d, 0, 0, 0, f(Yes, true, "")}, - {0x304e, 0, 0, 1, f(Yes, false, "ぎ")}, - {0x304f, 0, 0, 0, f(Yes, true, "")}, - {0x3050, 0, 0, 1, f(Yes, false, "ぐ")}, - {0x3051, 0, 0, 0, f(Yes, true, "")}, - {0x3052, 0, 0, 1, f(Yes, false, "げ")}, - {0x3053, 0, 0, 0, f(Yes, true, "")}, - {0x3054, 0, 0, 1, f(Yes, false, "ご")}, - {0x3055, 0, 0, 0, f(Yes, true, "")}, - {0x3056, 0, 0, 1, f(Yes, false, "ざ")}, - {0x3057, 0, 0, 0, f(Yes, true, "")}, - {0x3058, 0, 0, 1, f(Yes, false, "じ")}, - {0x3059, 0, 0, 0, f(Yes, true, "")}, - {0x305a, 0, 0, 1, f(Yes, false, "ず")}, - {0x305b, 0, 0, 0, f(Yes, true, "")}, - {0x305c, 0, 0, 1, f(Yes, false, "ぜ")}, - {0x305d, 0, 0, 0, f(Yes, true, "")}, - {0x305e, 0, 0, 1, f(Yes, false, "ぞ")}, - {0x305f, 0, 0, 0, f(Yes, true, "")}, - {0x3060, 0, 0, 1, f(Yes, false, "だ")}, - {0x3061, 0, 0, 0, f(Yes, true, "")}, - {0x3062, 0, 0, 1, f(Yes, false, "ぢ")}, - {0x3063, 0, 0, 0, f(Yes, false, "")}, - {0x3064, 0, 0, 0, f(Yes, true, "")}, - {0x3065, 0, 0, 1, f(Yes, false, "づ")}, - {0x3066, 0, 0, 0, f(Yes, true, "")}, - {0x3067, 0, 0, 1, f(Yes, false, "で")}, - {0x3068, 0, 0, 0, f(Yes, true, "")}, - {0x3069, 0, 0, 1, f(Yes, false, "ど")}, - {0x306a, 0, 0, 0, f(Yes, false, "")}, - {0x306f, 0, 0, 0, f(Yes, true, "")}, - {0x3070, 0, 0, 1, f(Yes, false, "ば")}, - {0x3071, 0, 0, 1, f(Yes, false, "ぱ")}, - {0x3072, 0, 0, 0, f(Yes, true, "")}, - {0x3073, 0, 0, 1, f(Yes, false, "び")}, - {0x3074, 0, 0, 1, f(Yes, false, "ぴ")}, - {0x3075, 0, 0, 0, f(Yes, true, "")}, - {0x3076, 0, 0, 1, f(Yes, false, "ぶ")}, - {0x3077, 0, 0, 1, f(Yes, false, "ぷ")}, - {0x3078, 0, 0, 0, f(Yes, true, "")}, - {0x3079, 0, 0, 1, f(Yes, false, "べ")}, - {0x307a, 0, 0, 1, f(Yes, false, "ぺ")}, - {0x307b, 0, 0, 0, f(Yes, true, "")}, - {0x307c, 0, 0, 1, f(Yes, false, "ぼ")}, - {0x307d, 0, 0, 1, f(Yes, false, "ぽ")}, - {0x307e, 0, 0, 0, f(Yes, false, "")}, - {0x3094, 0, 0, 1, f(Yes, false, "ゔ")}, - {0x3095, 0, 0, 0, f(Yes, false, "")}, - {0x3099, 8, 1, 1, f(Maybe, false, "")}, - {0x309b, 0, 0, 1, g(Yes, No, false, false, "", " ゙")}, - {0x309c, 0, 0, 1, g(Yes, No, false, false, "", " ゚")}, - {0x309d, 0, 0, 0, f(Yes, true, "")}, - {0x309e, 0, 0, 1, f(Yes, false, "ゞ")}, - {0x309f, 0, 0, 0, g(Yes, No, false, false, "", "より")}, - {0x30a0, 0, 0, 0, f(Yes, false, "")}, - {0x30a6, 0, 0, 0, f(Yes, true, "")}, - {0x30a7, 0, 0, 0, f(Yes, false, "")}, - {0x30ab, 0, 0, 0, f(Yes, true, "")}, - {0x30ac, 0, 0, 1, f(Yes, false, "ガ")}, - {0x30ad, 0, 0, 0, f(Yes, true, "")}, - {0x30ae, 0, 0, 1, f(Yes, false, "ギ")}, - {0x30af, 0, 0, 0, f(Yes, true, "")}, - {0x30b0, 0, 0, 1, f(Yes, false, "グ")}, - {0x30b1, 0, 0, 0, f(Yes, true, "")}, - {0x30b2, 0, 0, 1, f(Yes, false, "ゲ")}, - {0x30b3, 0, 0, 0, f(Yes, true, "")}, - {0x30b4, 0, 0, 1, f(Yes, false, "ゴ")}, - {0x30b5, 0, 0, 0, f(Yes, true, "")}, - {0x30b6, 0, 0, 1, f(Yes, false, "ザ")}, - {0x30b7, 0, 0, 0, f(Yes, true, "")}, - {0x30b8, 0, 0, 1, f(Yes, false, "ジ")}, - {0x30b9, 0, 0, 0, f(Yes, true, "")}, - {0x30ba, 0, 0, 1, f(Yes, false, "ズ")}, - {0x30bb, 0, 0, 0, f(Yes, true, "")}, - {0x30bc, 0, 0, 1, f(Yes, false, "ゼ")}, - {0x30bd, 0, 0, 0, f(Yes, true, "")}, - {0x30be, 0, 0, 1, f(Yes, false, "ゾ")}, - {0x30bf, 0, 0, 0, f(Yes, true, "")}, - {0x30c0, 0, 0, 1, f(Yes, false, "ダ")}, - {0x30c1, 0, 0, 0, f(Yes, true, "")}, - {0x30c2, 0, 0, 1, f(Yes, false, "ヂ")}, - {0x30c3, 0, 0, 0, f(Yes, false, "")}, - {0x30c4, 0, 0, 0, f(Yes, true, "")}, - {0x30c5, 0, 0, 1, f(Yes, false, "ヅ")}, - {0x30c6, 0, 0, 0, f(Yes, true, "")}, - {0x30c7, 0, 0, 1, f(Yes, false, "デ")}, - {0x30c8, 0, 0, 0, f(Yes, true, "")}, - {0x30c9, 0, 0, 1, f(Yes, false, "ド")}, - {0x30ca, 0, 0, 0, f(Yes, false, "")}, - {0x30cf, 0, 0, 0, f(Yes, true, "")}, - {0x30d0, 0, 0, 1, f(Yes, false, "バ")}, - {0x30d1, 0, 0, 1, f(Yes, false, "パ")}, - {0x30d2, 0, 0, 0, f(Yes, true, "")}, - {0x30d3, 0, 0, 1, f(Yes, false, "ビ")}, - {0x30d4, 0, 0, 1, f(Yes, false, "ピ")}, - {0x30d5, 0, 0, 0, f(Yes, true, "")}, - {0x30d6, 0, 0, 1, f(Yes, false, "ブ")}, - {0x30d7, 0, 0, 1, f(Yes, false, "プ")}, - {0x30d8, 0, 0, 0, f(Yes, true, "")}, - {0x30d9, 0, 0, 1, f(Yes, false, "ベ")}, - {0x30da, 0, 0, 1, f(Yes, false, "ペ")}, - {0x30db, 0, 0, 0, f(Yes, true, "")}, - {0x30dc, 0, 0, 1, f(Yes, false, "ボ")}, - {0x30dd, 0, 0, 1, f(Yes, false, "ポ")}, - {0x30de, 0, 0, 0, f(Yes, false, "")}, - {0x30ef, 0, 0, 0, f(Yes, true, "")}, - {0x30f3, 0, 0, 0, f(Yes, false, "")}, - {0x30f4, 0, 0, 1, f(Yes, false, "ヴ")}, - {0x30f5, 0, 0, 0, f(Yes, false, "")}, - {0x30f7, 0, 0, 1, f(Yes, false, "ヷ")}, - {0x30f8, 0, 0, 1, f(Yes, false, "ヸ")}, - {0x30f9, 0, 0, 1, f(Yes, false, "ヹ")}, - {0x30fa, 0, 0, 1, f(Yes, false, "ヺ")}, - {0x30fb, 0, 0, 0, f(Yes, false, "")}, - {0x30fd, 0, 0, 0, f(Yes, true, "")}, - {0x30fe, 0, 0, 1, f(Yes, false, "ヾ")}, - {0x30ff, 0, 0, 0, g(Yes, No, false, false, "", "コト")}, - {0x3100, 0, 0, 0, f(Yes, false, "")}, - {0x3131, 0, 0, 0, g(Yes, No, false, false, "", "ᄀ")}, - {0x3132, 0, 0, 0, g(Yes, No, false, false, "", "ᄁ")}, - {0x3133, 0, 1, 1, g(Yes, No, false, false, "", "ᆪ")}, - {0x3134, 0, 0, 0, g(Yes, No, false, false, "", "ᄂ")}, - {0x3135, 0, 1, 1, g(Yes, No, false, false, "", "ᆬ")}, - {0x3136, 0, 1, 1, g(Yes, No, false, false, "", "ᆭ")}, - {0x3137, 0, 0, 0, g(Yes, No, false, false, "", "ᄃ")}, - {0x3138, 0, 0, 0, g(Yes, No, false, false, "", "ᄄ")}, - {0x3139, 0, 0, 0, g(Yes, No, false, false, "", "ᄅ")}, - {0x313a, 0, 1, 1, g(Yes, No, false, false, "", "ᆰ")}, - {0x313b, 0, 1, 1, g(Yes, No, false, false, "", "ᆱ")}, - {0x313c, 0, 1, 1, g(Yes, No, false, false, "", "ᆲ")}, - {0x313d, 0, 1, 1, g(Yes, No, false, false, "", "ᆳ")}, - {0x313e, 0, 1, 1, g(Yes, No, false, false, "", "ᆴ")}, - {0x313f, 0, 1, 1, g(Yes, No, false, false, "", "ᆵ")}, - {0x3140, 0, 0, 0, g(Yes, No, false, false, "", "ᄚ")}, - {0x3141, 0, 0, 0, g(Yes, No, false, false, "", "ᄆ")}, - {0x3142, 0, 0, 0, g(Yes, No, false, false, "", "ᄇ")}, - {0x3143, 0, 0, 0, g(Yes, No, false, false, "", "ᄈ")}, - {0x3144, 0, 0, 0, g(Yes, No, false, false, "", "ᄡ")}, - {0x3145, 0, 0, 0, g(Yes, No, false, false, "", "ᄉ")}, - {0x3146, 0, 0, 0, g(Yes, No, false, false, "", "ᄊ")}, - {0x3147, 0, 0, 0, g(Yes, No, false, false, "", "ᄋ")}, - {0x3148, 0, 0, 0, g(Yes, No, false, false, "", "ᄌ")}, - {0x3149, 0, 0, 0, g(Yes, No, false, false, "", "ᄍ")}, - {0x314a, 0, 0, 0, g(Yes, No, false, false, "", "ᄎ")}, - {0x314b, 0, 0, 0, g(Yes, No, false, false, "", "ᄏ")}, - {0x314c, 0, 0, 0, g(Yes, No, false, false, "", "ᄐ")}, - {0x314d, 0, 0, 0, g(Yes, No, false, false, "", "ᄑ")}, - {0x314e, 0, 0, 0, g(Yes, No, false, false, "", "ᄒ")}, - {0x314f, 0, 1, 1, g(Yes, No, false, false, "", "ᅡ")}, - {0x3150, 0, 1, 1, g(Yes, No, false, false, "", "ᅢ")}, - {0x3151, 0, 1, 1, g(Yes, No, false, false, "", "ᅣ")}, - {0x3152, 0, 1, 1, g(Yes, No, false, false, "", "ᅤ")}, - {0x3153, 0, 1, 1, g(Yes, No, false, false, "", "ᅥ")}, - {0x3154, 0, 1, 1, g(Yes, No, false, false, "", "ᅦ")}, - {0x3155, 0, 1, 1, g(Yes, No, false, false, "", "ᅧ")}, - {0x3156, 0, 1, 1, g(Yes, No, false, false, "", "ᅨ")}, - {0x3157, 0, 1, 1, g(Yes, No, false, false, "", "ᅩ")}, - {0x3158, 0, 1, 1, g(Yes, No, false, false, "", "ᅪ")}, - {0x3159, 0, 1, 1, g(Yes, No, false, false, "", "ᅫ")}, - {0x315a, 0, 1, 1, g(Yes, No, false, false, "", "ᅬ")}, - {0x315b, 0, 1, 1, g(Yes, No, false, false, "", "ᅭ")}, - {0x315c, 0, 1, 1, g(Yes, No, false, false, "", "ᅮ")}, - {0x315d, 0, 1, 1, g(Yes, No, false, false, "", "ᅯ")}, - {0x315e, 0, 1, 1, g(Yes, No, false, false, "", "ᅰ")}, - {0x315f, 0, 1, 1, g(Yes, No, false, false, "", "ᅱ")}, - {0x3160, 0, 1, 1, g(Yes, No, false, false, "", "ᅲ")}, - {0x3161, 0, 1, 1, g(Yes, No, false, false, "", "ᅳ")}, - {0x3162, 0, 1, 1, g(Yes, No, false, false, "", "ᅴ")}, - {0x3163, 0, 1, 1, g(Yes, No, false, false, "", "ᅵ")}, - {0x3164, 0, 0, 0, g(Yes, No, false, false, "", "ᅠ")}, - {0x3165, 0, 0, 0, g(Yes, No, false, false, "", "ᄔ")}, - {0x3166, 0, 0, 0, g(Yes, No, false, false, "", "ᄕ")}, - {0x3167, 0, 0, 0, g(Yes, No, false, false, "", "ᇇ")}, - {0x3168, 0, 0, 0, g(Yes, No, false, false, "", "ᇈ")}, - {0x3169, 0, 0, 0, g(Yes, No, false, false, "", "ᇌ")}, - {0x316a, 0, 0, 0, g(Yes, No, false, false, "", "ᇎ")}, - {0x316b, 0, 0, 0, g(Yes, No, false, false, "", "ᇓ")}, - {0x316c, 0, 0, 0, g(Yes, No, false, false, "", "ᇗ")}, - {0x316d, 0, 0, 0, g(Yes, No, false, false, "", "ᇙ")}, - {0x316e, 0, 0, 0, g(Yes, No, false, false, "", "ᄜ")}, - {0x316f, 0, 0, 0, g(Yes, No, false, false, "", "ᇝ")}, - {0x3170, 0, 0, 0, g(Yes, No, false, false, "", "ᇟ")}, - {0x3171, 0, 0, 0, g(Yes, No, false, false, "", "ᄝ")}, - {0x3172, 0, 0, 0, g(Yes, No, false, false, "", "ᄞ")}, - {0x3173, 0, 0, 0, g(Yes, No, false, false, "", "ᄠ")}, - {0x3174, 0, 0, 0, g(Yes, No, false, false, "", "ᄢ")}, - {0x3175, 0, 0, 0, g(Yes, No, false, false, "", "ᄣ")}, - {0x3176, 0, 0, 0, g(Yes, No, false, false, "", "ᄧ")}, - {0x3177, 0, 0, 0, g(Yes, No, false, false, "", "ᄩ")}, - {0x3178, 0, 0, 0, g(Yes, No, false, false, "", "ᄫ")}, - {0x3179, 0, 0, 0, g(Yes, No, false, false, "", "ᄬ")}, - {0x317a, 0, 0, 0, g(Yes, No, false, false, "", "ᄭ")}, - {0x317b, 0, 0, 0, g(Yes, No, false, false, "", "ᄮ")}, - {0x317c, 0, 0, 0, g(Yes, No, false, false, "", "ᄯ")}, - {0x317d, 0, 0, 0, g(Yes, No, false, false, "", "ᄲ")}, - {0x317e, 0, 0, 0, g(Yes, No, false, false, "", "ᄶ")}, - {0x317f, 0, 0, 0, g(Yes, No, false, false, "", "ᅀ")}, - {0x3180, 0, 0, 0, g(Yes, No, false, false, "", "ᅇ")}, - {0x3181, 0, 0, 0, g(Yes, No, false, false, "", "ᅌ")}, - {0x3182, 0, 0, 0, g(Yes, No, false, false, "", "ᇱ")}, - {0x3183, 0, 0, 0, g(Yes, No, false, false, "", "ᇲ")}, - {0x3184, 0, 0, 0, g(Yes, No, false, false, "", "ᅗ")}, - {0x3185, 0, 0, 0, g(Yes, No, false, false, "", "ᅘ")}, - {0x3186, 0, 0, 0, g(Yes, No, false, false, "", "ᅙ")}, - {0x3187, 0, 0, 0, g(Yes, No, false, false, "", "ᆄ")}, - {0x3188, 0, 0, 0, g(Yes, No, false, false, "", "ᆅ")}, - {0x3189, 0, 0, 0, g(Yes, No, false, false, "", "ᆈ")}, - {0x318a, 0, 0, 0, g(Yes, No, false, false, "", "ᆑ")}, - {0x318b, 0, 0, 0, g(Yes, No, false, false, "", "ᆒ")}, - {0x318c, 0, 0, 0, g(Yes, No, false, false, "", "ᆔ")}, - {0x318d, 0, 0, 0, g(Yes, No, false, false, "", "ᆞ")}, - {0x318e, 0, 0, 0, g(Yes, No, false, false, "", "ᆡ")}, - {0x318f, 0, 0, 0, f(Yes, false, "")}, - {0x3192, 0, 0, 0, g(Yes, No, false, false, "", "一")}, - {0x3193, 0, 0, 0, g(Yes, No, false, false, "", "二")}, - {0x3194, 0, 0, 0, g(Yes, No, false, false, "", "三")}, - {0x3195, 0, 0, 0, g(Yes, No, false, false, "", "四")}, - {0x3196, 0, 0, 0, g(Yes, No, false, false, "", "上")}, - {0x3197, 0, 0, 0, g(Yes, No, false, false, "", "中")}, - {0x3198, 0, 0, 0, g(Yes, No, false, false, "", "下")}, - {0x3199, 0, 0, 0, g(Yes, No, false, false, "", "甲")}, - {0x319a, 0, 0, 0, g(Yes, No, false, false, "", "乙")}, - {0x319b, 0, 0, 0, g(Yes, No, false, false, "", "丙")}, - {0x319c, 0, 0, 0, g(Yes, No, false, false, "", "丁")}, - {0x319d, 0, 0, 0, g(Yes, No, false, false, "", "天")}, - {0x319e, 0, 0, 0, g(Yes, No, false, false, "", "地")}, - {0x319f, 0, 0, 0, g(Yes, No, false, false, "", "人")}, - {0x31a0, 0, 0, 0, f(Yes, false, "")}, - {0x3200, 0, 0, 0, g(Yes, No, false, false, "", "(ᄀ)")}, - {0x3201, 0, 0, 0, g(Yes, No, false, false, "", "(ᄂ)")}, - {0x3202, 0, 0, 0, g(Yes, No, false, false, "", "(ᄃ)")}, - {0x3203, 0, 0, 0, g(Yes, No, false, false, "", "(ᄅ)")}, - {0x3204, 0, 0, 0, g(Yes, No, false, false, "", "(ᄆ)")}, - {0x3205, 0, 0, 0, g(Yes, No, false, false, "", "(ᄇ)")}, - {0x3206, 0, 0, 0, g(Yes, No, false, false, "", "(ᄉ)")}, - {0x3207, 0, 0, 0, g(Yes, No, false, false, "", "(ᄋ)")}, - {0x3208, 0, 0, 0, g(Yes, No, false, false, "", "(ᄌ)")}, - {0x3209, 0, 0, 0, g(Yes, No, false, false, "", "(ᄎ)")}, - {0x320a, 0, 0, 0, g(Yes, No, false, false, "", "(ᄏ)")}, - {0x320b, 0, 0, 0, g(Yes, No, false, false, "", "(ᄐ)")}, - {0x320c, 0, 0, 0, g(Yes, No, false, false, "", "(ᄑ)")}, - {0x320d, 0, 0, 0, g(Yes, No, false, false, "", "(ᄒ)")}, - {0x320e, 0, 0, 0, g(Yes, No, false, false, "", "(가)")}, - {0x320f, 0, 0, 0, g(Yes, No, false, false, "", "(나)")}, - {0x3210, 0, 0, 0, g(Yes, No, false, false, "", "(다)")}, - {0x3211, 0, 0, 0, g(Yes, No, false, false, "", "(라)")}, - {0x3212, 0, 0, 0, g(Yes, No, false, false, "", "(마)")}, - {0x3213, 0, 0, 0, g(Yes, No, false, false, "", "(바)")}, - {0x3214, 0, 0, 0, g(Yes, No, false, false, "", "(사)")}, - {0x3215, 0, 0, 0, g(Yes, No, false, false, "", "(아)")}, - {0x3216, 0, 0, 0, g(Yes, No, false, false, "", "(자)")}, - {0x3217, 0, 0, 0, g(Yes, No, false, false, "", "(차)")}, - {0x3218, 0, 0, 0, g(Yes, No, false, false, "", "(카)")}, - {0x3219, 0, 0, 0, g(Yes, No, false, false, "", "(타)")}, - {0x321a, 0, 0, 0, g(Yes, No, false, false, "", "(파)")}, - {0x321b, 0, 0, 0, g(Yes, No, false, false, "", "(하)")}, - {0x321c, 0, 0, 0, g(Yes, No, false, false, "", "(주)")}, - {0x321d, 0, 0, 0, g(Yes, No, false, false, "", "(오전)")}, - {0x321e, 0, 0, 0, g(Yes, No, false, false, "", "(오후)")}, - {0x321f, 0, 0, 0, f(Yes, false, "")}, - {0x3220, 0, 0, 0, g(Yes, No, false, false, "", "(一)")}, - {0x3221, 0, 0, 0, g(Yes, No, false, false, "", "(二)")}, - {0x3222, 0, 0, 0, g(Yes, No, false, false, "", "(三)")}, - {0x3223, 0, 0, 0, g(Yes, No, false, false, "", "(四)")}, - {0x3224, 0, 0, 0, g(Yes, No, false, false, "", "(五)")}, - {0x3225, 0, 0, 0, g(Yes, No, false, false, "", "(六)")}, - {0x3226, 0, 0, 0, g(Yes, No, false, false, "", "(七)")}, - {0x3227, 0, 0, 0, g(Yes, No, false, false, "", "(八)")}, - {0x3228, 0, 0, 0, g(Yes, No, false, false, "", "(九)")}, - {0x3229, 0, 0, 0, g(Yes, No, false, false, "", "(十)")}, - {0x322a, 0, 0, 0, g(Yes, No, false, false, "", "(月)")}, - {0x322b, 0, 0, 0, g(Yes, No, false, false, "", "(火)")}, - {0x322c, 0, 0, 0, g(Yes, No, false, false, "", "(水)")}, - {0x322d, 0, 0, 0, g(Yes, No, false, false, "", "(木)")}, - {0x322e, 0, 0, 0, g(Yes, No, false, false, "", "(金)")}, - {0x322f, 0, 0, 0, g(Yes, No, false, false, "", "(土)")}, - {0x3230, 0, 0, 0, g(Yes, No, false, false, "", "(日)")}, - {0x3231, 0, 0, 0, g(Yes, No, false, false, "", "(株)")}, - {0x3232, 0, 0, 0, g(Yes, No, false, false, "", "(有)")}, - {0x3233, 0, 0, 0, g(Yes, No, false, false, "", "(社)")}, - {0x3234, 0, 0, 0, g(Yes, No, false, false, "", "(名)")}, - {0x3235, 0, 0, 0, g(Yes, No, false, false, "", "(特)")}, - {0x3236, 0, 0, 0, g(Yes, No, false, false, "", "(財)")}, - {0x3237, 0, 0, 0, g(Yes, No, false, false, "", "(祝)")}, - {0x3238, 0, 0, 0, g(Yes, No, false, false, "", "(労)")}, - {0x3239, 0, 0, 0, g(Yes, No, false, false, "", "(代)")}, - {0x323a, 0, 0, 0, g(Yes, No, false, false, "", "(呼)")}, - {0x323b, 0, 0, 0, g(Yes, No, false, false, "", "(学)")}, - {0x323c, 0, 0, 0, g(Yes, No, false, false, "", "(監)")}, - {0x323d, 0, 0, 0, g(Yes, No, false, false, "", "(企)")}, - {0x323e, 0, 0, 0, g(Yes, No, false, false, "", "(資)")}, - {0x323f, 0, 0, 0, g(Yes, No, false, false, "", "(協)")}, - {0x3240, 0, 0, 0, g(Yes, No, false, false, "", "(祭)")}, - {0x3241, 0, 0, 0, g(Yes, No, false, false, "", "(休)")}, - {0x3242, 0, 0, 0, g(Yes, No, false, false, "", "(自)")}, - {0x3243, 0, 0, 0, g(Yes, No, false, false, "", "(至)")}, - {0x3244, 0, 0, 0, g(Yes, No, false, false, "", "問")}, - {0x3245, 0, 0, 0, g(Yes, No, false, false, "", "幼")}, - {0x3246, 0, 0, 0, g(Yes, No, false, false, "", "文")}, - {0x3247, 0, 0, 0, g(Yes, No, false, false, "", "箏")}, - {0x3248, 0, 0, 0, f(Yes, false, "")}, - {0x3250, 0, 0, 0, g(Yes, No, false, false, "", "PTE")}, - {0x3251, 0, 0, 0, g(Yes, No, false, false, "", "21")}, - {0x3252, 0, 0, 0, g(Yes, No, false, false, "", "22")}, - {0x3253, 0, 0, 0, g(Yes, No, false, false, "", "23")}, - {0x3254, 0, 0, 0, g(Yes, No, false, false, "", "24")}, - {0x3255, 0, 0, 0, g(Yes, No, false, false, "", "25")}, - {0x3256, 0, 0, 0, g(Yes, No, false, false, "", "26")}, - {0x3257, 0, 0, 0, g(Yes, No, false, false, "", "27")}, - {0x3258, 0, 0, 0, g(Yes, No, false, false, "", "28")}, - {0x3259, 0, 0, 0, g(Yes, No, false, false, "", "29")}, - {0x325a, 0, 0, 0, g(Yes, No, false, false, "", "30")}, - {0x325b, 0, 0, 0, g(Yes, No, false, false, "", "31")}, - {0x325c, 0, 0, 0, g(Yes, No, false, false, "", "32")}, - {0x325d, 0, 0, 0, g(Yes, No, false, false, "", "33")}, - {0x325e, 0, 0, 0, g(Yes, No, false, false, "", "34")}, - {0x325f, 0, 0, 0, g(Yes, No, false, false, "", "35")}, - {0x3260, 0, 0, 0, g(Yes, No, false, false, "", "ᄀ")}, - {0x3261, 0, 0, 0, g(Yes, No, false, false, "", "ᄂ")}, - {0x3262, 0, 0, 0, g(Yes, No, false, false, "", "ᄃ")}, - {0x3263, 0, 0, 0, g(Yes, No, false, false, "", "ᄅ")}, - {0x3264, 0, 0, 0, g(Yes, No, false, false, "", "ᄆ")}, - {0x3265, 0, 0, 0, g(Yes, No, false, false, "", "ᄇ")}, - {0x3266, 0, 0, 0, g(Yes, No, false, false, "", "ᄉ")}, - {0x3267, 0, 0, 0, g(Yes, No, false, false, "", "ᄋ")}, - {0x3268, 0, 0, 0, g(Yes, No, false, false, "", "ᄌ")}, - {0x3269, 0, 0, 0, g(Yes, No, false, false, "", "ᄎ")}, - {0x326a, 0, 0, 0, g(Yes, No, false, false, "", "ᄏ")}, - {0x326b, 0, 0, 0, g(Yes, No, false, false, "", "ᄐ")}, - {0x326c, 0, 0, 0, g(Yes, No, false, false, "", "ᄑ")}, - {0x326d, 0, 0, 0, g(Yes, No, false, false, "", "ᄒ")}, - {0x326e, 0, 0, 1, g(Yes, No, false, false, "", "가")}, - {0x326f, 0, 0, 1, g(Yes, No, false, false, "", "나")}, - {0x3270, 0, 0, 1, g(Yes, No, false, false, "", "다")}, - {0x3271, 0, 0, 1, g(Yes, No, false, false, "", "라")}, - {0x3272, 0, 0, 1, g(Yes, No, false, false, "", "마")}, - {0x3273, 0, 0, 1, g(Yes, No, false, false, "", "바")}, - {0x3274, 0, 0, 1, g(Yes, No, false, false, "", "사")}, - {0x3275, 0, 0, 1, g(Yes, No, false, false, "", "아")}, - {0x3276, 0, 0, 1, g(Yes, No, false, false, "", "자")}, - {0x3277, 0, 0, 1, g(Yes, No, false, false, "", "차")}, - {0x3278, 0, 0, 1, g(Yes, No, false, false, "", "카")}, - {0x3279, 0, 0, 1, g(Yes, No, false, false, "", "타")}, - {0x327a, 0, 0, 1, g(Yes, No, false, false, "", "파")}, - {0x327b, 0, 0, 1, g(Yes, No, false, false, "", "하")}, - {0x327c, 0, 0, 1, g(Yes, No, false, false, "", "참고")}, - {0x327d, 0, 0, 1, g(Yes, No, false, false, "", "주의")}, - {0x327e, 0, 0, 1, g(Yes, No, false, false, "", "우")}, - {0x327f, 0, 0, 0, f(Yes, false, "")}, - {0x3280, 0, 0, 0, g(Yes, No, false, false, "", "一")}, - {0x3281, 0, 0, 0, g(Yes, No, false, false, "", "二")}, - {0x3282, 0, 0, 0, g(Yes, No, false, false, "", "三")}, - {0x3283, 0, 0, 0, g(Yes, No, false, false, "", "四")}, - {0x3284, 0, 0, 0, g(Yes, No, false, false, "", "五")}, - {0x3285, 0, 0, 0, g(Yes, No, false, false, "", "六")}, - {0x3286, 0, 0, 0, g(Yes, No, false, false, "", "七")}, - {0x3287, 0, 0, 0, g(Yes, No, false, false, "", "八")}, - {0x3288, 0, 0, 0, g(Yes, No, false, false, "", "九")}, - {0x3289, 0, 0, 0, g(Yes, No, false, false, "", "十")}, - {0x328a, 0, 0, 0, g(Yes, No, false, false, "", "月")}, - {0x328b, 0, 0, 0, g(Yes, No, false, false, "", "火")}, - {0x328c, 0, 0, 0, g(Yes, No, false, false, "", "水")}, - {0x328d, 0, 0, 0, g(Yes, No, false, false, "", "木")}, - {0x328e, 0, 0, 0, g(Yes, No, false, false, "", "金")}, - {0x328f, 0, 0, 0, g(Yes, No, false, false, "", "土")}, - {0x3290, 0, 0, 0, g(Yes, No, false, false, "", "日")}, - {0x3291, 0, 0, 0, g(Yes, No, false, false, "", "株")}, - {0x3292, 0, 0, 0, g(Yes, No, false, false, "", "有")}, - {0x3293, 0, 0, 0, g(Yes, No, false, false, "", "社")}, - {0x3294, 0, 0, 0, g(Yes, No, false, false, "", "名")}, - {0x3295, 0, 0, 0, g(Yes, No, false, false, "", "特")}, - {0x3296, 0, 0, 0, g(Yes, No, false, false, "", "財")}, - {0x3297, 0, 0, 0, g(Yes, No, false, false, "", "祝")}, - {0x3298, 0, 0, 0, g(Yes, No, false, false, "", "労")}, - {0x3299, 0, 0, 0, g(Yes, No, false, false, "", "秘")}, - {0x329a, 0, 0, 0, g(Yes, No, false, false, "", "男")}, - {0x329b, 0, 0, 0, g(Yes, No, false, false, "", "女")}, - {0x329c, 0, 0, 0, g(Yes, No, false, false, "", "適")}, - {0x329d, 0, 0, 0, g(Yes, No, false, false, "", "優")}, - {0x329e, 0, 0, 0, g(Yes, No, false, false, "", "印")}, - {0x329f, 0, 0, 0, g(Yes, No, false, false, "", "注")}, - {0x32a0, 0, 0, 0, g(Yes, No, false, false, "", "項")}, - {0x32a1, 0, 0, 0, g(Yes, No, false, false, "", "休")}, - {0x32a2, 0, 0, 0, g(Yes, No, false, false, "", "写")}, - {0x32a3, 0, 0, 0, g(Yes, No, false, false, "", "正")}, - {0x32a4, 0, 0, 0, g(Yes, No, false, false, "", "上")}, - {0x32a5, 0, 0, 0, g(Yes, No, false, false, "", "中")}, - {0x32a6, 0, 0, 0, g(Yes, No, false, false, "", "下")}, - {0x32a7, 0, 0, 0, g(Yes, No, false, false, "", "左")}, - {0x32a8, 0, 0, 0, g(Yes, No, false, false, "", "右")}, - {0x32a9, 0, 0, 0, g(Yes, No, false, false, "", "医")}, - {0x32aa, 0, 0, 0, g(Yes, No, false, false, "", "宗")}, - {0x32ab, 0, 0, 0, g(Yes, No, false, false, "", "学")}, - {0x32ac, 0, 0, 0, g(Yes, No, false, false, "", "監")}, - {0x32ad, 0, 0, 0, g(Yes, No, false, false, "", "企")}, - {0x32ae, 0, 0, 0, g(Yes, No, false, false, "", "資")}, - {0x32af, 0, 0, 0, g(Yes, No, false, false, "", "協")}, - {0x32b0, 0, 0, 0, g(Yes, No, false, false, "", "夜")}, - {0x32b1, 0, 0, 0, g(Yes, No, false, false, "", "36")}, - {0x32b2, 0, 0, 0, g(Yes, No, false, false, "", "37")}, - {0x32b3, 0, 0, 0, g(Yes, No, false, false, "", "38")}, - {0x32b4, 0, 0, 0, g(Yes, No, false, false, "", "39")}, - {0x32b5, 0, 0, 0, g(Yes, No, false, false, "", "40")}, - {0x32b6, 0, 0, 0, g(Yes, No, false, false, "", "41")}, - {0x32b7, 0, 0, 0, g(Yes, No, false, false, "", "42")}, - {0x32b8, 0, 0, 0, g(Yes, No, false, false, "", "43")}, - {0x32b9, 0, 0, 0, g(Yes, No, false, false, "", "44")}, - {0x32ba, 0, 0, 0, g(Yes, No, false, false, "", "45")}, - {0x32bb, 0, 0, 0, g(Yes, No, false, false, "", "46")}, - {0x32bc, 0, 0, 0, g(Yes, No, false, false, "", "47")}, - {0x32bd, 0, 0, 0, g(Yes, No, false, false, "", "48")}, - {0x32be, 0, 0, 0, g(Yes, No, false, false, "", "49")}, - {0x32bf, 0, 0, 0, g(Yes, No, false, false, "", "50")}, - {0x32c0, 0, 0, 0, g(Yes, No, false, false, "", "1月")}, - {0x32c1, 0, 0, 0, g(Yes, No, false, false, "", "2月")}, - {0x32c2, 0, 0, 0, g(Yes, No, false, false, "", "3月")}, - {0x32c3, 0, 0, 0, g(Yes, No, false, false, "", "4月")}, - {0x32c4, 0, 0, 0, g(Yes, No, false, false, "", "5月")}, - {0x32c5, 0, 0, 0, g(Yes, No, false, false, "", "6月")}, - {0x32c6, 0, 0, 0, g(Yes, No, false, false, "", "7月")}, - {0x32c7, 0, 0, 0, g(Yes, No, false, false, "", "8月")}, - {0x32c8, 0, 0, 0, g(Yes, No, false, false, "", "9月")}, - {0x32c9, 0, 0, 0, g(Yes, No, false, false, "", "10月")}, - {0x32ca, 0, 0, 0, g(Yes, No, false, false, "", "11月")}, - {0x32cb, 0, 0, 0, g(Yes, No, false, false, "", "12月")}, - {0x32cc, 0, 0, 0, g(Yes, No, false, false, "", "Hg")}, - {0x32cd, 0, 0, 0, g(Yes, No, false, false, "", "erg")}, - {0x32ce, 0, 0, 0, g(Yes, No, false, false, "", "eV")}, - {0x32cf, 0, 0, 0, g(Yes, No, false, false, "", "LTD")}, - {0x32d0, 0, 0, 0, g(Yes, No, false, false, "", "ア")}, - {0x32d1, 0, 0, 0, g(Yes, No, false, false, "", "イ")}, - {0x32d2, 0, 0, 0, g(Yes, No, false, false, "", "ウ")}, - {0x32d3, 0, 0, 0, g(Yes, No, false, false, "", "エ")}, - {0x32d4, 0, 0, 0, g(Yes, No, false, false, "", "オ")}, - {0x32d5, 0, 0, 0, g(Yes, No, false, false, "", "カ")}, - {0x32d6, 0, 0, 0, g(Yes, No, false, false, "", "キ")}, - {0x32d7, 0, 0, 0, g(Yes, No, false, false, "", "ク")}, - {0x32d8, 0, 0, 0, g(Yes, No, false, false, "", "ケ")}, - {0x32d9, 0, 0, 0, g(Yes, No, false, false, "", "コ")}, - {0x32da, 0, 0, 0, g(Yes, No, false, false, "", "サ")}, - {0x32db, 0, 0, 0, g(Yes, No, false, false, "", "シ")}, - {0x32dc, 0, 0, 0, g(Yes, No, false, false, "", "ス")}, - {0x32dd, 0, 0, 0, g(Yes, No, false, false, "", "セ")}, - {0x32de, 0, 0, 0, g(Yes, No, false, false, "", "ソ")}, - {0x32df, 0, 0, 0, g(Yes, No, false, false, "", "タ")}, - {0x32e0, 0, 0, 0, g(Yes, No, false, false, "", "チ")}, - {0x32e1, 0, 0, 0, g(Yes, No, false, false, "", "ツ")}, - {0x32e2, 0, 0, 0, g(Yes, No, false, false, "", "テ")}, - {0x32e3, 0, 0, 0, g(Yes, No, false, false, "", "ト")}, - {0x32e4, 0, 0, 0, g(Yes, No, false, false, "", "ナ")}, - {0x32e5, 0, 0, 0, g(Yes, No, false, false, "", "ニ")}, - {0x32e6, 0, 0, 0, g(Yes, No, false, false, "", "ヌ")}, - {0x32e7, 0, 0, 0, g(Yes, No, false, false, "", "ネ")}, - {0x32e8, 0, 0, 0, g(Yes, No, false, false, "", "ノ")}, - {0x32e9, 0, 0, 0, g(Yes, No, false, false, "", "ハ")}, - {0x32ea, 0, 0, 0, g(Yes, No, false, false, "", "ヒ")}, - {0x32eb, 0, 0, 0, g(Yes, No, false, false, "", "フ")}, - {0x32ec, 0, 0, 0, g(Yes, No, false, false, "", "ヘ")}, - {0x32ed, 0, 0, 0, g(Yes, No, false, false, "", "ホ")}, - {0x32ee, 0, 0, 0, g(Yes, No, false, false, "", "マ")}, - {0x32ef, 0, 0, 0, g(Yes, No, false, false, "", "ミ")}, - {0x32f0, 0, 0, 0, g(Yes, No, false, false, "", "ム")}, - {0x32f1, 0, 0, 0, g(Yes, No, false, false, "", "メ")}, - {0x32f2, 0, 0, 0, g(Yes, No, false, false, "", "モ")}, - {0x32f3, 0, 0, 0, g(Yes, No, false, false, "", "ヤ")}, - {0x32f4, 0, 0, 0, g(Yes, No, false, false, "", "ユ")}, - {0x32f5, 0, 0, 0, g(Yes, No, false, false, "", "ヨ")}, - {0x32f6, 0, 0, 0, g(Yes, No, false, false, "", "ラ")}, - {0x32f7, 0, 0, 0, g(Yes, No, false, false, "", "リ")}, - {0x32f8, 0, 0, 0, g(Yes, No, false, false, "", "ル")}, - {0x32f9, 0, 0, 0, g(Yes, No, false, false, "", "レ")}, - {0x32fa, 0, 0, 0, g(Yes, No, false, false, "", "ロ")}, - {0x32fb, 0, 0, 0, g(Yes, No, false, false, "", "ワ")}, - {0x32fc, 0, 0, 0, g(Yes, No, false, false, "", "ヰ")}, - {0x32fd, 0, 0, 0, g(Yes, No, false, false, "", "ヱ")}, - {0x32fe, 0, 0, 0, g(Yes, No, false, false, "", "ヲ")}, - {0x32ff, 0, 0, 0, f(Yes, false, "")}, - {0x3300, 0, 0, 0, g(Yes, No, false, false, "", "アパート")}, - {0x3301, 0, 0, 0, g(Yes, No, false, false, "", "アルファ")}, - {0x3302, 0, 0, 0, g(Yes, No, false, false, "", "アンペア")}, - {0x3303, 0, 0, 0, g(Yes, No, false, false, "", "アール")}, - {0x3304, 0, 0, 1, g(Yes, No, false, false, "", "イニング")}, - {0x3305, 0, 0, 0, g(Yes, No, false, false, "", "インチ")}, - {0x3306, 0, 0, 0, g(Yes, No, false, false, "", "ウォン")}, - {0x3307, 0, 0, 1, g(Yes, No, false, false, "", "エスクード")}, - {0x3308, 0, 0, 0, g(Yes, No, false, false, "", "エーカー")}, - {0x3309, 0, 0, 0, g(Yes, No, false, false, "", "オンス")}, - {0x330a, 0, 0, 0, g(Yes, No, false, false, "", "オーム")}, - {0x330b, 0, 0, 0, g(Yes, No, false, false, "", "カイリ")}, - {0x330c, 0, 0, 0, g(Yes, No, false, false, "", "カラット")}, - {0x330d, 0, 0, 0, g(Yes, No, false, false, "", "カロリー")}, - {0x330e, 0, 0, 0, g(Yes, No, false, false, "", "ガロン")}, - {0x330f, 0, 0, 0, g(Yes, No, false, false, "", "ガンマ")}, - {0x3310, 0, 0, 1, g(Yes, No, false, false, "", "ギガ")}, - {0x3311, 0, 0, 0, g(Yes, No, false, false, "", "ギニー")}, - {0x3312, 0, 0, 0, g(Yes, No, false, false, "", "キュリー")}, - {0x3313, 0, 0, 0, g(Yes, No, false, false, "", "ギルダー")}, - {0x3314, 0, 0, 0, g(Yes, No, false, false, "", "キロ")}, - {0x3315, 0, 0, 0, g(Yes, No, false, false, "", "キログラム")}, - {0x3316, 0, 0, 0, g(Yes, No, false, false, "", "キロメートル")}, - {0x3317, 0, 0, 0, g(Yes, No, false, false, "", "キロワット")}, - {0x3318, 0, 0, 0, g(Yes, No, false, false, "", "グラム")}, - {0x3319, 0, 0, 0, g(Yes, No, false, false, "", "グラムトン")}, - {0x331a, 0, 0, 0, g(Yes, No, false, false, "", "クルゼイロ")}, - {0x331b, 0, 0, 0, g(Yes, No, false, false, "", "クローネ")}, - {0x331c, 0, 0, 0, g(Yes, No, false, false, "", "ケース")}, - {0x331d, 0, 0, 0, g(Yes, No, false, false, "", "コルナ")}, - {0x331e, 0, 0, 1, g(Yes, No, false, false, "", "コーポ")}, - {0x331f, 0, 0, 0, g(Yes, No, false, false, "", "サイクル")}, - {0x3320, 0, 0, 0, g(Yes, No, false, false, "", "サンチーム")}, - {0x3321, 0, 0, 1, g(Yes, No, false, false, "", "シリング")}, - {0x3322, 0, 0, 0, g(Yes, No, false, false, "", "センチ")}, - {0x3323, 0, 0, 0, g(Yes, No, false, false, "", "セント")}, - {0x3324, 0, 0, 0, g(Yes, No, false, false, "", "ダース")}, - {0x3325, 0, 0, 0, g(Yes, No, false, false, "", "デシ")}, - {0x3326, 0, 0, 0, g(Yes, No, false, false, "", "ドル")}, - {0x3327, 0, 0, 0, g(Yes, No, false, false, "", "トン")}, - {0x3328, 0, 0, 0, g(Yes, No, false, false, "", "ナノ")}, - {0x3329, 0, 0, 0, g(Yes, No, false, false, "", "ノット")}, - {0x332a, 0, 0, 0, g(Yes, No, false, false, "", "ハイツ")}, - {0x332b, 0, 0, 0, g(Yes, No, false, false, "", "パーセント")}, - {0x332c, 0, 0, 0, g(Yes, No, false, false, "", "パーツ")}, - {0x332d, 0, 0, 0, g(Yes, No, false, false, "", "バーレル")}, - {0x332e, 0, 0, 0, g(Yes, No, false, false, "", "ピアストル")}, - {0x332f, 0, 0, 0, g(Yes, No, false, false, "", "ピクル")}, - {0x3330, 0, 0, 0, g(Yes, No, false, false, "", "ピコ")}, - {0x3331, 0, 0, 0, g(Yes, No, false, false, "", "ビル")}, - {0x3332, 0, 0, 1, g(Yes, No, false, false, "", "ファラッド")}, - {0x3333, 0, 0, 0, g(Yes, No, false, false, "", "フィート")}, - {0x3334, 0, 0, 0, g(Yes, No, false, false, "", "ブッシェル")}, - {0x3335, 0, 0, 0, g(Yes, No, false, false, "", "フラン")}, - {0x3336, 0, 0, 0, g(Yes, No, false, false, "", "ヘクタール")}, - {0x3337, 0, 0, 0, g(Yes, No, false, false, "", "ペソ")}, - {0x3338, 0, 0, 0, g(Yes, No, false, false, "", "ペニヒ")}, - {0x3339, 0, 0, 0, g(Yes, No, false, false, "", "ヘルツ")}, - {0x333a, 0, 0, 0, g(Yes, No, false, false, "", "ペンス")}, - {0x333b, 0, 0, 1, g(Yes, No, false, false, "", "ページ")}, - {0x333c, 0, 0, 0, g(Yes, No, false, false, "", "ベータ")}, - {0x333d, 0, 0, 0, g(Yes, No, false, false, "", "ポイント")}, - {0x333e, 0, 0, 0, g(Yes, No, false, false, "", "ボルト")}, - {0x333f, 0, 0, 0, g(Yes, No, false, false, "", "ホン")}, - {0x3340, 0, 0, 1, g(Yes, No, false, false, "", "ポンド")}, - {0x3341, 0, 0, 0, g(Yes, No, false, false, "", "ホール")}, - {0x3342, 0, 0, 0, g(Yes, No, false, false, "", "ホーン")}, - {0x3343, 0, 0, 0, g(Yes, No, false, false, "", "マイクロ")}, - {0x3344, 0, 0, 0, g(Yes, No, false, false, "", "マイル")}, - {0x3345, 0, 0, 0, g(Yes, No, false, false, "", "マッハ")}, - {0x3346, 0, 0, 0, g(Yes, No, false, false, "", "マルク")}, - {0x3347, 0, 0, 0, g(Yes, No, false, false, "", "マンション")}, - {0x3348, 0, 0, 0, g(Yes, No, false, false, "", "ミクロン")}, - {0x3349, 0, 0, 0, g(Yes, No, false, false, "", "ミリ")}, - {0x334a, 0, 0, 0, g(Yes, No, false, false, "", "ミリバール")}, - {0x334b, 0, 0, 1, g(Yes, No, false, false, "", "メガ")}, - {0x334c, 0, 0, 0, g(Yes, No, false, false, "", "メガトン")}, - {0x334d, 0, 0, 0, g(Yes, No, false, false, "", "メートル")}, - {0x334e, 0, 0, 1, g(Yes, No, false, false, "", "ヤード")}, - {0x334f, 0, 0, 0, g(Yes, No, false, false, "", "ヤール")}, - {0x3350, 0, 0, 0, g(Yes, No, false, false, "", "ユアン")}, - {0x3351, 0, 0, 0, g(Yes, No, false, false, "", "リットル")}, - {0x3352, 0, 0, 0, g(Yes, No, false, false, "", "リラ")}, - {0x3353, 0, 0, 0, g(Yes, No, false, false, "", "ルピー")}, - {0x3354, 0, 0, 0, g(Yes, No, false, false, "", "ルーブル")}, - {0x3355, 0, 0, 0, g(Yes, No, false, false, "", "レム")}, - {0x3356, 0, 0, 0, g(Yes, No, false, false, "", "レントゲン")}, - {0x3357, 0, 0, 0, g(Yes, No, false, false, "", "ワット")}, - {0x3358, 0, 0, 0, g(Yes, No, false, false, "", "0点")}, - {0x3359, 0, 0, 0, g(Yes, No, false, false, "", "1点")}, - {0x335a, 0, 0, 0, g(Yes, No, false, false, "", "2点")}, - {0x335b, 0, 0, 0, g(Yes, No, false, false, "", "3点")}, - {0x335c, 0, 0, 0, g(Yes, No, false, false, "", "4点")}, - {0x335d, 0, 0, 0, g(Yes, No, false, false, "", "5点")}, - {0x335e, 0, 0, 0, g(Yes, No, false, false, "", "6点")}, - {0x335f, 0, 0, 0, g(Yes, No, false, false, "", "7点")}, - {0x3360, 0, 0, 0, g(Yes, No, false, false, "", "8点")}, - {0x3361, 0, 0, 0, g(Yes, No, false, false, "", "9点")}, - {0x3362, 0, 0, 0, g(Yes, No, false, false, "", "10点")}, - {0x3363, 0, 0, 0, g(Yes, No, false, false, "", "11点")}, - {0x3364, 0, 0, 0, g(Yes, No, false, false, "", "12点")}, - {0x3365, 0, 0, 0, g(Yes, No, false, false, "", "13点")}, - {0x3366, 0, 0, 0, g(Yes, No, false, false, "", "14点")}, - {0x3367, 0, 0, 0, g(Yes, No, false, false, "", "15点")}, - {0x3368, 0, 0, 0, g(Yes, No, false, false, "", "16点")}, - {0x3369, 0, 0, 0, g(Yes, No, false, false, "", "17点")}, - {0x336a, 0, 0, 0, g(Yes, No, false, false, "", "18点")}, - {0x336b, 0, 0, 0, g(Yes, No, false, false, "", "19点")}, - {0x336c, 0, 0, 0, g(Yes, No, false, false, "", "20点")}, - {0x336d, 0, 0, 0, g(Yes, No, false, false, "", "21点")}, - {0x336e, 0, 0, 0, g(Yes, No, false, false, "", "22点")}, - {0x336f, 0, 0, 0, g(Yes, No, false, false, "", "23点")}, - {0x3370, 0, 0, 0, g(Yes, No, false, false, "", "24点")}, - {0x3371, 0, 0, 0, g(Yes, No, false, false, "", "hPa")}, - {0x3372, 0, 0, 0, g(Yes, No, false, false, "", "da")}, - {0x3373, 0, 0, 0, g(Yes, No, false, false, "", "AU")}, - {0x3374, 0, 0, 0, g(Yes, No, false, false, "", "bar")}, - {0x3375, 0, 0, 0, g(Yes, No, false, false, "", "oV")}, - {0x3376, 0, 0, 0, g(Yes, No, false, false, "", "pc")}, - {0x3377, 0, 0, 0, g(Yes, No, false, false, "", "dm")}, - {0x3378, 0, 0, 0, g(Yes, No, false, false, "", "dm2")}, - {0x3379, 0, 0, 0, g(Yes, No, false, false, "", "dm3")}, - {0x337a, 0, 0, 0, g(Yes, No, false, false, "", "IU")}, - {0x337b, 0, 0, 0, g(Yes, No, false, false, "", "平成")}, - {0x337c, 0, 0, 0, g(Yes, No, false, false, "", "昭和")}, - {0x337d, 0, 0, 0, g(Yes, No, false, false, "", "大正")}, - {0x337e, 0, 0, 0, g(Yes, No, false, false, "", "明治")}, - {0x337f, 0, 0, 0, g(Yes, No, false, false, "", "株式会社")}, - {0x3380, 0, 0, 0, g(Yes, No, false, false, "", "pA")}, - {0x3381, 0, 0, 0, g(Yes, No, false, false, "", "nA")}, - {0x3382, 0, 0, 0, g(Yes, No, false, false, "", "μA")}, - {0x3383, 0, 0, 0, g(Yes, No, false, false, "", "mA")}, - {0x3384, 0, 0, 0, g(Yes, No, false, false, "", "kA")}, - {0x3385, 0, 0, 0, g(Yes, No, false, false, "", "KB")}, - {0x3386, 0, 0, 0, g(Yes, No, false, false, "", "MB")}, - {0x3387, 0, 0, 0, g(Yes, No, false, false, "", "GB")}, - {0x3388, 0, 0, 0, g(Yes, No, false, false, "", "cal")}, - {0x3389, 0, 0, 0, g(Yes, No, false, false, "", "kcal")}, - {0x338a, 0, 0, 0, g(Yes, No, false, false, "", "pF")}, - {0x338b, 0, 0, 0, g(Yes, No, false, false, "", "nF")}, - {0x338c, 0, 0, 0, g(Yes, No, false, false, "", "μF")}, - {0x338d, 0, 0, 0, g(Yes, No, false, false, "", "μg")}, - {0x338e, 0, 0, 0, g(Yes, No, false, false, "", "mg")}, - {0x338f, 0, 0, 0, g(Yes, No, false, false, "", "kg")}, - {0x3390, 0, 0, 0, g(Yes, No, false, false, "", "Hz")}, - {0x3391, 0, 0, 0, g(Yes, No, false, false, "", "kHz")}, - {0x3392, 0, 0, 0, g(Yes, No, false, false, "", "MHz")}, - {0x3393, 0, 0, 0, g(Yes, No, false, false, "", "GHz")}, - {0x3394, 0, 0, 0, g(Yes, No, false, false, "", "THz")}, - {0x3395, 0, 0, 0, g(Yes, No, false, false, "", "μl")}, - {0x3396, 0, 0, 0, g(Yes, No, false, false, "", "ml")}, - {0x3397, 0, 0, 0, g(Yes, No, false, false, "", "dl")}, - {0x3398, 0, 0, 0, g(Yes, No, false, false, "", "kl")}, - {0x3399, 0, 0, 0, g(Yes, No, false, false, "", "fm")}, - {0x339a, 0, 0, 0, g(Yes, No, false, false, "", "nm")}, - {0x339b, 0, 0, 0, g(Yes, No, false, false, "", "μm")}, - {0x339c, 0, 0, 0, g(Yes, No, false, false, "", "mm")}, - {0x339d, 0, 0, 0, g(Yes, No, false, false, "", "cm")}, - {0x339e, 0, 0, 0, g(Yes, No, false, false, "", "km")}, - {0x339f, 0, 0, 0, g(Yes, No, false, false, "", "mm2")}, - {0x33a0, 0, 0, 0, g(Yes, No, false, false, "", "cm2")}, - {0x33a1, 0, 0, 0, g(Yes, No, false, false, "", "m2")}, - {0x33a2, 0, 0, 0, g(Yes, No, false, false, "", "km2")}, - {0x33a3, 0, 0, 0, g(Yes, No, false, false, "", "mm3")}, - {0x33a4, 0, 0, 0, g(Yes, No, false, false, "", "cm3")}, - {0x33a5, 0, 0, 0, g(Yes, No, false, false, "", "m3")}, - {0x33a6, 0, 0, 0, g(Yes, No, false, false, "", "km3")}, - {0x33a7, 0, 0, 0, g(Yes, No, false, false, "", "m∕s")}, - {0x33a8, 0, 0, 0, g(Yes, No, false, false, "", "m∕s2")}, - {0x33a9, 0, 0, 0, g(Yes, No, false, false, "", "Pa")}, - {0x33aa, 0, 0, 0, g(Yes, No, false, false, "", "kPa")}, - {0x33ab, 0, 0, 0, g(Yes, No, false, false, "", "MPa")}, - {0x33ac, 0, 0, 0, g(Yes, No, false, false, "", "GPa")}, - {0x33ad, 0, 0, 0, g(Yes, No, false, false, "", "rad")}, - {0x33ae, 0, 0, 0, g(Yes, No, false, false, "", "rad∕s")}, - {0x33af, 0, 0, 0, g(Yes, No, false, false, "", "rad∕s2")}, - {0x33b0, 0, 0, 0, g(Yes, No, false, false, "", "ps")}, - {0x33b1, 0, 0, 0, g(Yes, No, false, false, "", "ns")}, - {0x33b2, 0, 0, 0, g(Yes, No, false, false, "", "μs")}, - {0x33b3, 0, 0, 0, g(Yes, No, false, false, "", "ms")}, - {0x33b4, 0, 0, 0, g(Yes, No, false, false, "", "pV")}, - {0x33b5, 0, 0, 0, g(Yes, No, false, false, "", "nV")}, - {0x33b6, 0, 0, 0, g(Yes, No, false, false, "", "μV")}, - {0x33b7, 0, 0, 0, g(Yes, No, false, false, "", "mV")}, - {0x33b8, 0, 0, 0, g(Yes, No, false, false, "", "kV")}, - {0x33b9, 0, 0, 0, g(Yes, No, false, false, "", "MV")}, - {0x33ba, 0, 0, 0, g(Yes, No, false, false, "", "pW")}, - {0x33bb, 0, 0, 0, g(Yes, No, false, false, "", "nW")}, - {0x33bc, 0, 0, 0, g(Yes, No, false, false, "", "μW")}, - {0x33bd, 0, 0, 0, g(Yes, No, false, false, "", "mW")}, - {0x33be, 0, 0, 0, g(Yes, No, false, false, "", "kW")}, - {0x33bf, 0, 0, 0, g(Yes, No, false, false, "", "MW")}, - {0x33c0, 0, 0, 0, g(Yes, No, false, false, "", "kΩ")}, - {0x33c1, 0, 0, 0, g(Yes, No, false, false, "", "MΩ")}, - {0x33c2, 0, 0, 0, g(Yes, No, false, false, "", "a.m.")}, - {0x33c3, 0, 0, 0, g(Yes, No, false, false, "", "Bq")}, - {0x33c4, 0, 0, 0, g(Yes, No, false, false, "", "cc")}, - {0x33c5, 0, 0, 0, g(Yes, No, false, false, "", "cd")}, - {0x33c6, 0, 0, 0, g(Yes, No, false, false, "", "C∕kg")}, - {0x33c7, 0, 0, 0, g(Yes, No, false, false, "", "Co.")}, - {0x33c8, 0, 0, 0, g(Yes, No, false, false, "", "dB")}, - {0x33c9, 0, 0, 0, g(Yes, No, false, false, "", "Gy")}, - {0x33ca, 0, 0, 0, g(Yes, No, false, false, "", "ha")}, - {0x33cb, 0, 0, 0, g(Yes, No, false, false, "", "HP")}, - {0x33cc, 0, 0, 0, g(Yes, No, false, false, "", "in")}, - {0x33cd, 0, 0, 0, g(Yes, No, false, false, "", "KK")}, - {0x33ce, 0, 0, 0, g(Yes, No, false, false, "", "KM")}, - {0x33cf, 0, 0, 0, g(Yes, No, false, false, "", "kt")}, - {0x33d0, 0, 0, 0, g(Yes, No, false, false, "", "lm")}, - {0x33d1, 0, 0, 0, g(Yes, No, false, false, "", "ln")}, - {0x33d2, 0, 0, 0, g(Yes, No, false, false, "", "log")}, - {0x33d3, 0, 0, 0, g(Yes, No, false, false, "", "lx")}, - {0x33d4, 0, 0, 0, g(Yes, No, false, false, "", "mb")}, - {0x33d5, 0, 0, 0, g(Yes, No, false, false, "", "mil")}, - {0x33d6, 0, 0, 0, g(Yes, No, false, false, "", "mol")}, - {0x33d7, 0, 0, 0, g(Yes, No, false, false, "", "PH")}, - {0x33d8, 0, 0, 0, g(Yes, No, false, false, "", "p.m.")}, - {0x33d9, 0, 0, 0, g(Yes, No, false, false, "", "PPM")}, - {0x33da, 0, 0, 0, g(Yes, No, false, false, "", "PR")}, - {0x33db, 0, 0, 0, g(Yes, No, false, false, "", "sr")}, - {0x33dc, 0, 0, 0, g(Yes, No, false, false, "", "Sv")}, - {0x33dd, 0, 0, 0, g(Yes, No, false, false, "", "Wb")}, - {0x33de, 0, 0, 0, g(Yes, No, false, false, "", "V∕m")}, - {0x33df, 0, 0, 0, g(Yes, No, false, false, "", "A∕m")}, - {0x33e0, 0, 0, 0, g(Yes, No, false, false, "", "1日")}, - {0x33e1, 0, 0, 0, g(Yes, No, false, false, "", "2日")}, - {0x33e2, 0, 0, 0, g(Yes, No, false, false, "", "3日")}, - {0x33e3, 0, 0, 0, g(Yes, No, false, false, "", "4日")}, - {0x33e4, 0, 0, 0, g(Yes, No, false, false, "", "5日")}, - {0x33e5, 0, 0, 0, g(Yes, No, false, false, "", "6日")}, - {0x33e6, 0, 0, 0, g(Yes, No, false, false, "", "7日")}, - {0x33e7, 0, 0, 0, g(Yes, No, false, false, "", "8日")}, - {0x33e8, 0, 0, 0, g(Yes, No, false, false, "", "9日")}, - {0x33e9, 0, 0, 0, g(Yes, No, false, false, "", "10日")}, - {0x33ea, 0, 0, 0, g(Yes, No, false, false, "", "11日")}, - {0x33eb, 0, 0, 0, g(Yes, No, false, false, "", "12日")}, - {0x33ec, 0, 0, 0, g(Yes, No, false, false, "", "13日")}, - {0x33ed, 0, 0, 0, g(Yes, No, false, false, "", "14日")}, - {0x33ee, 0, 0, 0, g(Yes, No, false, false, "", "15日")}, - {0x33ef, 0, 0, 0, g(Yes, No, false, false, "", "16日")}, - {0x33f0, 0, 0, 0, g(Yes, No, false, false, "", "17日")}, - {0x33f1, 0, 0, 0, g(Yes, No, false, false, "", "18日")}, - {0x33f2, 0, 0, 0, g(Yes, No, false, false, "", "19日")}, - {0x33f3, 0, 0, 0, g(Yes, No, false, false, "", "20日")}, - {0x33f4, 0, 0, 0, g(Yes, No, false, false, "", "21日")}, - {0x33f5, 0, 0, 0, g(Yes, No, false, false, "", "22日")}, - {0x33f6, 0, 0, 0, g(Yes, No, false, false, "", "23日")}, - {0x33f7, 0, 0, 0, g(Yes, No, false, false, "", "24日")}, - {0x33f8, 0, 0, 0, g(Yes, No, false, false, "", "25日")}, - {0x33f9, 0, 0, 0, g(Yes, No, false, false, "", "26日")}, - {0x33fa, 0, 0, 0, g(Yes, No, false, false, "", "27日")}, - {0x33fb, 0, 0, 0, g(Yes, No, false, false, "", "28日")}, - {0x33fc, 0, 0, 0, g(Yes, No, false, false, "", "29日")}, - {0x33fd, 0, 0, 0, g(Yes, No, false, false, "", "30日")}, - {0x33fe, 0, 0, 0, g(Yes, No, false, false, "", "31日")}, - {0x33ff, 0, 0, 0, g(Yes, No, false, false, "", "gal")}, - {0x3400, 0, 0, 0, f(Yes, false, "")}, - {0xa66f, 230, 1, 1, f(Yes, false, "")}, - {0xa670, 0, 0, 0, f(Yes, false, "")}, - {0xa674, 230, 1, 1, f(Yes, false, "")}, - {0xa67e, 0, 0, 0, f(Yes, false, "")}, - {0xa69c, 0, 0, 0, g(Yes, No, false, false, "", "ъ")}, - {0xa69d, 0, 0, 0, g(Yes, No, false, false, "", "ь")}, - {0xa69e, 230, 1, 1, f(Yes, false, "")}, - {0xa6a0, 0, 0, 0, f(Yes, false, "")}, - {0xa6f0, 230, 1, 1, f(Yes, false, "")}, - {0xa6f2, 0, 0, 0, f(Yes, false, "")}, - {0xa770, 0, 0, 0, g(Yes, No, false, false, "", "ꝯ")}, - {0xa771, 0, 0, 0, f(Yes, false, "")}, - {0xa7f8, 0, 0, 0, g(Yes, No, false, false, "", "Ħ")}, - {0xa7f9, 0, 0, 0, g(Yes, No, false, false, "", "œ")}, - {0xa7fa, 0, 0, 0, f(Yes, false, "")}, - {0xa806, 9, 1, 1, f(Yes, false, "")}, - {0xa807, 0, 0, 0, f(Yes, false, "")}, - {0xa8c4, 9, 1, 1, f(Yes, false, "")}, - {0xa8c5, 0, 0, 0, f(Yes, false, "")}, - {0xa8e0, 230, 1, 1, f(Yes, false, "")}, - {0xa8f2, 0, 0, 0, f(Yes, false, "")}, - {0xa92b, 220, 1, 1, f(Yes, false, "")}, - {0xa92e, 0, 0, 0, f(Yes, false, "")}, - {0xa953, 9, 1, 1, f(Yes, false, "")}, - {0xa954, 0, 0, 0, f(Yes, false, "")}, - {0xa9b3, 7, 1, 1, f(Yes, false, "")}, - {0xa9b4, 0, 0, 0, f(Yes, false, "")}, - {0xa9c0, 9, 1, 1, f(Yes, false, "")}, - {0xa9c1, 0, 0, 0, f(Yes, false, "")}, - {0xaab0, 230, 1, 1, f(Yes, false, "")}, - {0xaab1, 0, 0, 0, f(Yes, false, "")}, - {0xaab2, 230, 1, 1, f(Yes, false, "")}, - {0xaab4, 220, 1, 1, f(Yes, false, "")}, - {0xaab5, 0, 0, 0, f(Yes, false, "")}, - {0xaab7, 230, 1, 1, f(Yes, false, "")}, - {0xaab9, 0, 0, 0, f(Yes, false, "")}, - {0xaabe, 230, 1, 1, f(Yes, false, "")}, - {0xaac0, 0, 0, 0, f(Yes, false, "")}, - {0xaac1, 230, 1, 1, f(Yes, false, "")}, - {0xaac2, 0, 0, 0, f(Yes, false, "")}, - {0xaaf6, 9, 1, 1, f(Yes, false, "")}, - {0xaaf7, 0, 0, 0, f(Yes, false, "")}, - {0xab5c, 0, 0, 0, g(Yes, No, false, false, "", "ꜧ")}, - {0xab5d, 0, 0, 0, g(Yes, No, false, false, "", "ꬷ")}, - {0xab5e, 0, 0, 0, g(Yes, No, false, false, "", "ɫ")}, - {0xab5f, 0, 0, 0, g(Yes, No, false, false, "", "ꭒ")}, - {0xab60, 0, 0, 0, f(Yes, false, "")}, - {0xabed, 9, 1, 1, f(Yes, false, "")}, - {0xabee, 0, 0, 0, f(Yes, false, "")}, - {0xac00, 0, 0, 1, f(Yes, true, "")}, - {0xac01, 0, 0, 2, f(Yes, false, "")}, - {0xac1c, 0, 0, 1, f(Yes, true, "")}, - {0xac1d, 0, 0, 2, f(Yes, false, "")}, - {0xac38, 0, 0, 1, f(Yes, true, "")}, - {0xac39, 0, 0, 2, f(Yes, false, "")}, - {0xac54, 0, 0, 1, f(Yes, true, "")}, - {0xac55, 0, 0, 2, f(Yes, false, "")}, - {0xac70, 0, 0, 1, f(Yes, true, "")}, - {0xac71, 0, 0, 2, f(Yes, false, "")}, - {0xac8c, 0, 0, 1, f(Yes, true, "")}, - {0xac8d, 0, 0, 2, f(Yes, false, "")}, - {0xaca8, 0, 0, 1, f(Yes, true, "")}, - {0xaca9, 0, 0, 2, f(Yes, false, "")}, - {0xacc4, 0, 0, 1, f(Yes, true, "")}, - {0xacc5, 0, 0, 2, f(Yes, false, "")}, - {0xace0, 0, 0, 1, f(Yes, true, "")}, - {0xace1, 0, 0, 2, f(Yes, false, "")}, - {0xacfc, 0, 0, 1, f(Yes, true, "")}, - {0xacfd, 0, 0, 2, f(Yes, false, "")}, - {0xad18, 0, 0, 1, f(Yes, true, "")}, - {0xad19, 0, 0, 2, f(Yes, false, "")}, - {0xad34, 0, 0, 1, f(Yes, true, "")}, - {0xad35, 0, 0, 2, f(Yes, false, "")}, - {0xad50, 0, 0, 1, f(Yes, true, "")}, - {0xad51, 0, 0, 2, f(Yes, false, "")}, - {0xad6c, 0, 0, 1, f(Yes, true, "")}, - {0xad6d, 0, 0, 2, f(Yes, false, "")}, - {0xad88, 0, 0, 1, f(Yes, true, "")}, - {0xad89, 0, 0, 2, f(Yes, false, "")}, - {0xada4, 0, 0, 1, f(Yes, true, "")}, - {0xada5, 0, 0, 2, f(Yes, false, "")}, - {0xadc0, 0, 0, 1, f(Yes, true, "")}, - {0xadc1, 0, 0, 2, f(Yes, false, "")}, - {0xaddc, 0, 0, 1, f(Yes, true, "")}, - {0xaddd, 0, 0, 2, f(Yes, false, "")}, - {0xadf8, 0, 0, 1, f(Yes, true, "")}, - {0xadf9, 0, 0, 2, f(Yes, false, "")}, - {0xae14, 0, 0, 1, f(Yes, true, "")}, - {0xae15, 0, 0, 2, f(Yes, false, "")}, - {0xae30, 0, 0, 1, f(Yes, true, "")}, - {0xae31, 0, 0, 2, f(Yes, false, "")}, - {0xae4c, 0, 0, 1, f(Yes, true, "")}, - {0xae4d, 0, 0, 2, f(Yes, false, "")}, - {0xae68, 0, 0, 1, f(Yes, true, "")}, - {0xae69, 0, 0, 2, f(Yes, false, "")}, - {0xae84, 0, 0, 1, f(Yes, true, "")}, - {0xae85, 0, 0, 2, f(Yes, false, "")}, - {0xaea0, 0, 0, 1, f(Yes, true, "")}, - {0xaea1, 0, 0, 2, f(Yes, false, "")}, - {0xaebc, 0, 0, 1, f(Yes, true, "")}, - {0xaebd, 0, 0, 2, f(Yes, false, "")}, - {0xaed8, 0, 0, 1, f(Yes, true, "")}, - {0xaed9, 0, 0, 2, f(Yes, false, "")}, - {0xaef4, 0, 0, 1, f(Yes, true, "")}, - {0xaef5, 0, 0, 2, f(Yes, false, "")}, - {0xaf10, 0, 0, 1, f(Yes, true, "")}, - {0xaf11, 0, 0, 2, f(Yes, false, "")}, - {0xaf2c, 0, 0, 1, f(Yes, true, "")}, - {0xaf2d, 0, 0, 2, f(Yes, false, "")}, - {0xaf48, 0, 0, 1, f(Yes, true, "")}, - {0xaf49, 0, 0, 2, f(Yes, false, "")}, - {0xaf64, 0, 0, 1, f(Yes, true, "")}, - {0xaf65, 0, 0, 2, f(Yes, false, "")}, - {0xaf80, 0, 0, 1, f(Yes, true, "")}, - {0xaf81, 0, 0, 2, f(Yes, false, "")}, - {0xaf9c, 0, 0, 1, f(Yes, true, "")}, - {0xaf9d, 0, 0, 2, f(Yes, false, "")}, - {0xafb8, 0, 0, 1, f(Yes, true, "")}, - {0xafb9, 0, 0, 2, f(Yes, false, "")}, - {0xafd4, 0, 0, 1, f(Yes, true, "")}, - {0xafd5, 0, 0, 2, f(Yes, false, "")}, - {0xaff0, 0, 0, 1, f(Yes, true, "")}, - {0xaff1, 0, 0, 2, f(Yes, false, "")}, - {0xb00c, 0, 0, 1, f(Yes, true, "")}, - {0xb00d, 0, 0, 2, f(Yes, false, "")}, - {0xb028, 0, 0, 1, f(Yes, true, "")}, - {0xb029, 0, 0, 2, f(Yes, false, "")}, - {0xb044, 0, 0, 1, f(Yes, true, "")}, - {0xb045, 0, 0, 2, f(Yes, false, "")}, - {0xb060, 0, 0, 1, f(Yes, true, "")}, - {0xb061, 0, 0, 2, f(Yes, false, "")}, - {0xb07c, 0, 0, 1, f(Yes, true, "")}, - {0xb07d, 0, 0, 2, f(Yes, false, "")}, - {0xb098, 0, 0, 1, f(Yes, true, "")}, - {0xb099, 0, 0, 2, f(Yes, false, "")}, - {0xb0b4, 0, 0, 1, f(Yes, true, "")}, - {0xb0b5, 0, 0, 2, f(Yes, false, "")}, - {0xb0d0, 0, 0, 1, f(Yes, true, "")}, - {0xb0d1, 0, 0, 2, f(Yes, false, "")}, - {0xb0ec, 0, 0, 1, f(Yes, true, "")}, - {0xb0ed, 0, 0, 2, f(Yes, false, "")}, - {0xb108, 0, 0, 1, f(Yes, true, "")}, - {0xb109, 0, 0, 2, f(Yes, false, "")}, - {0xb124, 0, 0, 1, f(Yes, true, "")}, - {0xb125, 0, 0, 2, f(Yes, false, "")}, - {0xb140, 0, 0, 1, f(Yes, true, "")}, - {0xb141, 0, 0, 2, f(Yes, false, "")}, - {0xb15c, 0, 0, 1, f(Yes, true, "")}, - {0xb15d, 0, 0, 2, f(Yes, false, "")}, - {0xb178, 0, 0, 1, f(Yes, true, "")}, - {0xb179, 0, 0, 2, f(Yes, false, "")}, - {0xb194, 0, 0, 1, f(Yes, true, "")}, - {0xb195, 0, 0, 2, f(Yes, false, "")}, - {0xb1b0, 0, 0, 1, f(Yes, true, "")}, - {0xb1b1, 0, 0, 2, f(Yes, false, "")}, - {0xb1cc, 0, 0, 1, f(Yes, true, "")}, - {0xb1cd, 0, 0, 2, f(Yes, false, "")}, - {0xb1e8, 0, 0, 1, f(Yes, true, "")}, - {0xb1e9, 0, 0, 2, f(Yes, false, "")}, - {0xb204, 0, 0, 1, f(Yes, true, "")}, - {0xb205, 0, 0, 2, f(Yes, false, "")}, - {0xb220, 0, 0, 1, f(Yes, true, "")}, - {0xb221, 0, 0, 2, f(Yes, false, "")}, - {0xb23c, 0, 0, 1, f(Yes, true, "")}, - {0xb23d, 0, 0, 2, f(Yes, false, "")}, - {0xb258, 0, 0, 1, f(Yes, true, "")}, - {0xb259, 0, 0, 2, f(Yes, false, "")}, - {0xb274, 0, 0, 1, f(Yes, true, "")}, - {0xb275, 0, 0, 2, f(Yes, false, "")}, - {0xb290, 0, 0, 1, f(Yes, true, "")}, - {0xb291, 0, 0, 2, f(Yes, false, "")}, - {0xb2ac, 0, 0, 1, f(Yes, true, "")}, - {0xb2ad, 0, 0, 2, f(Yes, false, "")}, - {0xb2c8, 0, 0, 1, f(Yes, true, "")}, - {0xb2c9, 0, 0, 2, f(Yes, false, "")}, - {0xb2e4, 0, 0, 1, f(Yes, true, "")}, - {0xb2e5, 0, 0, 2, f(Yes, false, "")}, - {0xb300, 0, 0, 1, f(Yes, true, "")}, - {0xb301, 0, 0, 2, f(Yes, false, "")}, - {0xb31c, 0, 0, 1, f(Yes, true, "")}, - {0xb31d, 0, 0, 2, f(Yes, false, "")}, - {0xb338, 0, 0, 1, f(Yes, true, "")}, - {0xb339, 0, 0, 2, f(Yes, false, "")}, - {0xb354, 0, 0, 1, f(Yes, true, "")}, - {0xb355, 0, 0, 2, f(Yes, false, "")}, - {0xb370, 0, 0, 1, f(Yes, true, "")}, - {0xb371, 0, 0, 2, f(Yes, false, "")}, - {0xb38c, 0, 0, 1, f(Yes, true, "")}, - {0xb38d, 0, 0, 2, f(Yes, false, "")}, - {0xb3a8, 0, 0, 1, f(Yes, true, "")}, - {0xb3a9, 0, 0, 2, f(Yes, false, "")}, - {0xb3c4, 0, 0, 1, f(Yes, true, "")}, - {0xb3c5, 0, 0, 2, f(Yes, false, "")}, - {0xb3e0, 0, 0, 1, f(Yes, true, "")}, - {0xb3e1, 0, 0, 2, f(Yes, false, "")}, - {0xb3fc, 0, 0, 1, f(Yes, true, "")}, - {0xb3fd, 0, 0, 2, f(Yes, false, "")}, - {0xb418, 0, 0, 1, f(Yes, true, "")}, - {0xb419, 0, 0, 2, f(Yes, false, "")}, - {0xb434, 0, 0, 1, f(Yes, true, "")}, - {0xb435, 0, 0, 2, f(Yes, false, "")}, - {0xb450, 0, 0, 1, f(Yes, true, "")}, - {0xb451, 0, 0, 2, f(Yes, false, "")}, - {0xb46c, 0, 0, 1, f(Yes, true, "")}, - {0xb46d, 0, 0, 2, f(Yes, false, "")}, - {0xb488, 0, 0, 1, f(Yes, true, "")}, - {0xb489, 0, 0, 2, f(Yes, false, "")}, - {0xb4a4, 0, 0, 1, f(Yes, true, "")}, - {0xb4a5, 0, 0, 2, f(Yes, false, "")}, - {0xb4c0, 0, 0, 1, f(Yes, true, "")}, - {0xb4c1, 0, 0, 2, f(Yes, false, "")}, - {0xb4dc, 0, 0, 1, f(Yes, true, "")}, - {0xb4dd, 0, 0, 2, f(Yes, false, "")}, - {0xb4f8, 0, 0, 1, f(Yes, true, "")}, - {0xb4f9, 0, 0, 2, f(Yes, false, "")}, - {0xb514, 0, 0, 1, f(Yes, true, "")}, - {0xb515, 0, 0, 2, f(Yes, false, "")}, - {0xb530, 0, 0, 1, f(Yes, true, "")}, - {0xb531, 0, 0, 2, f(Yes, false, "")}, - {0xb54c, 0, 0, 1, f(Yes, true, "")}, - {0xb54d, 0, 0, 2, f(Yes, false, "")}, - {0xb568, 0, 0, 1, f(Yes, true, "")}, - {0xb569, 0, 0, 2, f(Yes, false, "")}, - {0xb584, 0, 0, 1, f(Yes, true, "")}, - {0xb585, 0, 0, 2, f(Yes, false, "")}, - {0xb5a0, 0, 0, 1, f(Yes, true, "")}, - {0xb5a1, 0, 0, 2, f(Yes, false, "")}, - {0xb5bc, 0, 0, 1, f(Yes, true, "")}, - {0xb5bd, 0, 0, 2, f(Yes, false, "")}, - {0xb5d8, 0, 0, 1, f(Yes, true, "")}, - {0xb5d9, 0, 0, 2, f(Yes, false, "")}, - {0xb5f4, 0, 0, 1, f(Yes, true, "")}, - {0xb5f5, 0, 0, 2, f(Yes, false, "")}, - {0xb610, 0, 0, 1, f(Yes, true, "")}, - {0xb611, 0, 0, 2, f(Yes, false, "")}, - {0xb62c, 0, 0, 1, f(Yes, true, "")}, - {0xb62d, 0, 0, 2, f(Yes, false, "")}, - {0xb648, 0, 0, 1, f(Yes, true, "")}, - {0xb649, 0, 0, 2, f(Yes, false, "")}, - {0xb664, 0, 0, 1, f(Yes, true, "")}, - {0xb665, 0, 0, 2, f(Yes, false, "")}, - {0xb680, 0, 0, 1, f(Yes, true, "")}, - {0xb681, 0, 0, 2, f(Yes, false, "")}, - {0xb69c, 0, 0, 1, f(Yes, true, "")}, - {0xb69d, 0, 0, 2, f(Yes, false, "")}, - {0xb6b8, 0, 0, 1, f(Yes, true, "")}, - {0xb6b9, 0, 0, 2, f(Yes, false, "")}, - {0xb6d4, 0, 0, 1, f(Yes, true, "")}, - {0xb6d5, 0, 0, 2, f(Yes, false, "")}, - {0xb6f0, 0, 0, 1, f(Yes, true, "")}, - {0xb6f1, 0, 0, 2, f(Yes, false, "")}, - {0xb70c, 0, 0, 1, f(Yes, true, "")}, - {0xb70d, 0, 0, 2, f(Yes, false, "")}, - {0xb728, 0, 0, 1, f(Yes, true, "")}, - {0xb729, 0, 0, 2, f(Yes, false, "")}, - {0xb744, 0, 0, 1, f(Yes, true, "")}, - {0xb745, 0, 0, 2, f(Yes, false, "")}, - {0xb760, 0, 0, 1, f(Yes, true, "")}, - {0xb761, 0, 0, 2, f(Yes, false, "")}, - {0xb77c, 0, 0, 1, f(Yes, true, "")}, - {0xb77d, 0, 0, 2, f(Yes, false, "")}, - {0xb798, 0, 0, 1, f(Yes, true, "")}, - {0xb799, 0, 0, 2, f(Yes, false, "")}, - {0xb7b4, 0, 0, 1, f(Yes, true, "")}, - {0xb7b5, 0, 0, 2, f(Yes, false, "")}, - {0xb7d0, 0, 0, 1, f(Yes, true, "")}, - {0xb7d1, 0, 0, 2, f(Yes, false, "")}, - {0xb7ec, 0, 0, 1, f(Yes, true, "")}, - {0xb7ed, 0, 0, 2, f(Yes, false, "")}, - {0xb808, 0, 0, 1, f(Yes, true, "")}, - {0xb809, 0, 0, 2, f(Yes, false, "")}, - {0xb824, 0, 0, 1, f(Yes, true, "")}, - {0xb825, 0, 0, 2, f(Yes, false, "")}, - {0xb840, 0, 0, 1, f(Yes, true, "")}, - {0xb841, 0, 0, 2, f(Yes, false, "")}, - {0xb85c, 0, 0, 1, f(Yes, true, "")}, - {0xb85d, 0, 0, 2, f(Yes, false, "")}, - {0xb878, 0, 0, 1, f(Yes, true, "")}, - {0xb879, 0, 0, 2, f(Yes, false, "")}, - {0xb894, 0, 0, 1, f(Yes, true, "")}, - {0xb895, 0, 0, 2, f(Yes, false, "")}, - {0xb8b0, 0, 0, 1, f(Yes, true, "")}, - {0xb8b1, 0, 0, 2, f(Yes, false, "")}, - {0xb8cc, 0, 0, 1, f(Yes, true, "")}, - {0xb8cd, 0, 0, 2, f(Yes, false, "")}, - {0xb8e8, 0, 0, 1, f(Yes, true, "")}, - {0xb8e9, 0, 0, 2, f(Yes, false, "")}, - {0xb904, 0, 0, 1, f(Yes, true, "")}, - {0xb905, 0, 0, 2, f(Yes, false, "")}, - {0xb920, 0, 0, 1, f(Yes, true, "")}, - {0xb921, 0, 0, 2, f(Yes, false, "")}, - {0xb93c, 0, 0, 1, f(Yes, true, "")}, - {0xb93d, 0, 0, 2, f(Yes, false, "")}, - {0xb958, 0, 0, 1, f(Yes, true, "")}, - {0xb959, 0, 0, 2, f(Yes, false, "")}, - {0xb974, 0, 0, 1, f(Yes, true, "")}, - {0xb975, 0, 0, 2, f(Yes, false, "")}, - {0xb990, 0, 0, 1, f(Yes, true, "")}, - {0xb991, 0, 0, 2, f(Yes, false, "")}, - {0xb9ac, 0, 0, 1, f(Yes, true, "")}, - {0xb9ad, 0, 0, 2, f(Yes, false, "")}, - {0xb9c8, 0, 0, 1, f(Yes, true, "")}, - {0xb9c9, 0, 0, 2, f(Yes, false, "")}, - {0xb9e4, 0, 0, 1, f(Yes, true, "")}, - {0xb9e5, 0, 0, 2, f(Yes, false, "")}, - {0xba00, 0, 0, 1, f(Yes, true, "")}, - {0xba01, 0, 0, 2, f(Yes, false, "")}, - {0xba1c, 0, 0, 1, f(Yes, true, "")}, - {0xba1d, 0, 0, 2, f(Yes, false, "")}, - {0xba38, 0, 0, 1, f(Yes, true, "")}, - {0xba39, 0, 0, 2, f(Yes, false, "")}, - {0xba54, 0, 0, 1, f(Yes, true, "")}, - {0xba55, 0, 0, 2, f(Yes, false, "")}, - {0xba70, 0, 0, 1, f(Yes, true, "")}, - {0xba71, 0, 0, 2, f(Yes, false, "")}, - {0xba8c, 0, 0, 1, f(Yes, true, "")}, - {0xba8d, 0, 0, 2, f(Yes, false, "")}, - {0xbaa8, 0, 0, 1, f(Yes, true, "")}, - {0xbaa9, 0, 0, 2, f(Yes, false, "")}, - {0xbac4, 0, 0, 1, f(Yes, true, "")}, - {0xbac5, 0, 0, 2, f(Yes, false, "")}, - {0xbae0, 0, 0, 1, f(Yes, true, "")}, - {0xbae1, 0, 0, 2, f(Yes, false, "")}, - {0xbafc, 0, 0, 1, f(Yes, true, "")}, - {0xbafd, 0, 0, 2, f(Yes, false, "")}, - {0xbb18, 0, 0, 1, f(Yes, true, "")}, - {0xbb19, 0, 0, 2, f(Yes, false, "")}, - {0xbb34, 0, 0, 1, f(Yes, true, "")}, - {0xbb35, 0, 0, 2, f(Yes, false, "")}, - {0xbb50, 0, 0, 1, f(Yes, true, "")}, - {0xbb51, 0, 0, 2, f(Yes, false, "")}, - {0xbb6c, 0, 0, 1, f(Yes, true, "")}, - {0xbb6d, 0, 0, 2, f(Yes, false, "")}, - {0xbb88, 0, 0, 1, f(Yes, true, "")}, - {0xbb89, 0, 0, 2, f(Yes, false, "")}, - {0xbba4, 0, 0, 1, f(Yes, true, "")}, - {0xbba5, 0, 0, 2, f(Yes, false, "")}, - {0xbbc0, 0, 0, 1, f(Yes, true, "")}, - {0xbbc1, 0, 0, 2, f(Yes, false, "")}, - {0xbbdc, 0, 0, 1, f(Yes, true, "")}, - {0xbbdd, 0, 0, 2, f(Yes, false, "")}, - {0xbbf8, 0, 0, 1, f(Yes, true, "")}, - {0xbbf9, 0, 0, 2, f(Yes, false, "")}, - {0xbc14, 0, 0, 1, f(Yes, true, "")}, - {0xbc15, 0, 0, 2, f(Yes, false, "")}, - {0xbc30, 0, 0, 1, f(Yes, true, "")}, - {0xbc31, 0, 0, 2, f(Yes, false, "")}, - {0xbc4c, 0, 0, 1, f(Yes, true, "")}, - {0xbc4d, 0, 0, 2, f(Yes, false, "")}, - {0xbc68, 0, 0, 1, f(Yes, true, "")}, - {0xbc69, 0, 0, 2, f(Yes, false, "")}, - {0xbc84, 0, 0, 1, f(Yes, true, "")}, - {0xbc85, 0, 0, 2, f(Yes, false, "")}, - {0xbca0, 0, 0, 1, f(Yes, true, "")}, - {0xbca1, 0, 0, 2, f(Yes, false, "")}, - {0xbcbc, 0, 0, 1, f(Yes, true, "")}, - {0xbcbd, 0, 0, 2, f(Yes, false, "")}, - {0xbcd8, 0, 0, 1, f(Yes, true, "")}, - {0xbcd9, 0, 0, 2, f(Yes, false, "")}, - {0xbcf4, 0, 0, 1, f(Yes, true, "")}, - {0xbcf5, 0, 0, 2, f(Yes, false, "")}, - {0xbd10, 0, 0, 1, f(Yes, true, "")}, - {0xbd11, 0, 0, 2, f(Yes, false, "")}, - {0xbd2c, 0, 0, 1, f(Yes, true, "")}, - {0xbd2d, 0, 0, 2, f(Yes, false, "")}, - {0xbd48, 0, 0, 1, f(Yes, true, "")}, - {0xbd49, 0, 0, 2, f(Yes, false, "")}, - {0xbd64, 0, 0, 1, f(Yes, true, "")}, - {0xbd65, 0, 0, 2, f(Yes, false, "")}, - {0xbd80, 0, 0, 1, f(Yes, true, "")}, - {0xbd81, 0, 0, 2, f(Yes, false, "")}, - {0xbd9c, 0, 0, 1, f(Yes, true, "")}, - {0xbd9d, 0, 0, 2, f(Yes, false, "")}, - {0xbdb8, 0, 0, 1, f(Yes, true, "")}, - {0xbdb9, 0, 0, 2, f(Yes, false, "")}, - {0xbdd4, 0, 0, 1, f(Yes, true, "")}, - {0xbdd5, 0, 0, 2, f(Yes, false, "")}, - {0xbdf0, 0, 0, 1, f(Yes, true, "")}, - {0xbdf1, 0, 0, 2, f(Yes, false, "")}, - {0xbe0c, 0, 0, 1, f(Yes, true, "")}, - {0xbe0d, 0, 0, 2, f(Yes, false, "")}, - {0xbe28, 0, 0, 1, f(Yes, true, "")}, - {0xbe29, 0, 0, 2, f(Yes, false, "")}, - {0xbe44, 0, 0, 1, f(Yes, true, "")}, - {0xbe45, 0, 0, 2, f(Yes, false, "")}, - {0xbe60, 0, 0, 1, f(Yes, true, "")}, - {0xbe61, 0, 0, 2, f(Yes, false, "")}, - {0xbe7c, 0, 0, 1, f(Yes, true, "")}, - {0xbe7d, 0, 0, 2, f(Yes, false, "")}, - {0xbe98, 0, 0, 1, f(Yes, true, "")}, - {0xbe99, 0, 0, 2, f(Yes, false, "")}, - {0xbeb4, 0, 0, 1, f(Yes, true, "")}, - {0xbeb5, 0, 0, 2, f(Yes, false, "")}, - {0xbed0, 0, 0, 1, f(Yes, true, "")}, - {0xbed1, 0, 0, 2, f(Yes, false, "")}, - {0xbeec, 0, 0, 1, f(Yes, true, "")}, - {0xbeed, 0, 0, 2, f(Yes, false, "")}, - {0xbf08, 0, 0, 1, f(Yes, true, "")}, - {0xbf09, 0, 0, 2, f(Yes, false, "")}, - {0xbf24, 0, 0, 1, f(Yes, true, "")}, - {0xbf25, 0, 0, 2, f(Yes, false, "")}, - {0xbf40, 0, 0, 1, f(Yes, true, "")}, - {0xbf41, 0, 0, 2, f(Yes, false, "")}, - {0xbf5c, 0, 0, 1, f(Yes, true, "")}, - {0xbf5d, 0, 0, 2, f(Yes, false, "")}, - {0xbf78, 0, 0, 1, f(Yes, true, "")}, - {0xbf79, 0, 0, 2, f(Yes, false, "")}, - {0xbf94, 0, 0, 1, f(Yes, true, "")}, - {0xbf95, 0, 0, 2, f(Yes, false, "")}, - {0xbfb0, 0, 0, 1, f(Yes, true, "")}, - {0xbfb1, 0, 0, 2, f(Yes, false, "")}, - {0xbfcc, 0, 0, 1, f(Yes, true, "")}, - {0xbfcd, 0, 0, 2, f(Yes, false, "")}, - {0xbfe8, 0, 0, 1, f(Yes, true, "")}, - {0xbfe9, 0, 0, 2, f(Yes, false, "")}, - {0xc004, 0, 0, 1, f(Yes, true, "")}, - {0xc005, 0, 0, 2, f(Yes, false, "")}, - {0xc020, 0, 0, 1, f(Yes, true, "")}, - {0xc021, 0, 0, 2, f(Yes, false, "")}, - {0xc03c, 0, 0, 1, f(Yes, true, "")}, - {0xc03d, 0, 0, 2, f(Yes, false, "")}, - {0xc058, 0, 0, 1, f(Yes, true, "")}, - {0xc059, 0, 0, 2, f(Yes, false, "")}, - {0xc074, 0, 0, 1, f(Yes, true, "")}, - {0xc075, 0, 0, 2, f(Yes, false, "")}, - {0xc090, 0, 0, 1, f(Yes, true, "")}, - {0xc091, 0, 0, 2, f(Yes, false, "")}, - {0xc0ac, 0, 0, 1, f(Yes, true, "")}, - {0xc0ad, 0, 0, 2, f(Yes, false, "")}, - {0xc0c8, 0, 0, 1, f(Yes, true, "")}, - {0xc0c9, 0, 0, 2, f(Yes, false, "")}, - {0xc0e4, 0, 0, 1, f(Yes, true, "")}, - {0xc0e5, 0, 0, 2, f(Yes, false, "")}, - {0xc100, 0, 0, 1, f(Yes, true, "")}, - {0xc101, 0, 0, 2, f(Yes, false, "")}, - {0xc11c, 0, 0, 1, f(Yes, true, "")}, - {0xc11d, 0, 0, 2, f(Yes, false, "")}, - {0xc138, 0, 0, 1, f(Yes, true, "")}, - {0xc139, 0, 0, 2, f(Yes, false, "")}, - {0xc154, 0, 0, 1, f(Yes, true, "")}, - {0xc155, 0, 0, 2, f(Yes, false, "")}, - {0xc170, 0, 0, 1, f(Yes, true, "")}, - {0xc171, 0, 0, 2, f(Yes, false, "")}, - {0xc18c, 0, 0, 1, f(Yes, true, "")}, - {0xc18d, 0, 0, 2, f(Yes, false, "")}, - {0xc1a8, 0, 0, 1, f(Yes, true, "")}, - {0xc1a9, 0, 0, 2, f(Yes, false, "")}, - {0xc1c4, 0, 0, 1, f(Yes, true, "")}, - {0xc1c5, 0, 0, 2, f(Yes, false, "")}, - {0xc1e0, 0, 0, 1, f(Yes, true, "")}, - {0xc1e1, 0, 0, 2, f(Yes, false, "")}, - {0xc1fc, 0, 0, 1, f(Yes, true, "")}, - {0xc1fd, 0, 0, 2, f(Yes, false, "")}, - {0xc218, 0, 0, 1, f(Yes, true, "")}, - {0xc219, 0, 0, 2, f(Yes, false, "")}, - {0xc234, 0, 0, 1, f(Yes, true, "")}, - {0xc235, 0, 0, 2, f(Yes, false, "")}, - {0xc250, 0, 0, 1, f(Yes, true, "")}, - {0xc251, 0, 0, 2, f(Yes, false, "")}, - {0xc26c, 0, 0, 1, f(Yes, true, "")}, - {0xc26d, 0, 0, 2, f(Yes, false, "")}, - {0xc288, 0, 0, 1, f(Yes, true, "")}, - {0xc289, 0, 0, 2, f(Yes, false, "")}, - {0xc2a4, 0, 0, 1, f(Yes, true, "")}, - {0xc2a5, 0, 0, 2, f(Yes, false, "")}, - {0xc2c0, 0, 0, 1, f(Yes, true, "")}, - {0xc2c1, 0, 0, 2, f(Yes, false, "")}, - {0xc2dc, 0, 0, 1, f(Yes, true, "")}, - {0xc2dd, 0, 0, 2, f(Yes, false, "")}, - {0xc2f8, 0, 0, 1, f(Yes, true, "")}, - {0xc2f9, 0, 0, 2, f(Yes, false, "")}, - {0xc314, 0, 0, 1, f(Yes, true, "")}, - {0xc315, 0, 0, 2, f(Yes, false, "")}, - {0xc330, 0, 0, 1, f(Yes, true, "")}, - {0xc331, 0, 0, 2, f(Yes, false, "")}, - {0xc34c, 0, 0, 1, f(Yes, true, "")}, - {0xc34d, 0, 0, 2, f(Yes, false, "")}, - {0xc368, 0, 0, 1, f(Yes, true, "")}, - {0xc369, 0, 0, 2, f(Yes, false, "")}, - {0xc384, 0, 0, 1, f(Yes, true, "")}, - {0xc385, 0, 0, 2, f(Yes, false, "")}, - {0xc3a0, 0, 0, 1, f(Yes, true, "")}, - {0xc3a1, 0, 0, 2, f(Yes, false, "")}, - {0xc3bc, 0, 0, 1, f(Yes, true, "")}, - {0xc3bd, 0, 0, 2, f(Yes, false, "")}, - {0xc3d8, 0, 0, 1, f(Yes, true, "")}, - {0xc3d9, 0, 0, 2, f(Yes, false, "")}, - {0xc3f4, 0, 0, 1, f(Yes, true, "")}, - {0xc3f5, 0, 0, 2, f(Yes, false, "")}, - {0xc410, 0, 0, 1, f(Yes, true, "")}, - {0xc411, 0, 0, 2, f(Yes, false, "")}, - {0xc42c, 0, 0, 1, f(Yes, true, "")}, - {0xc42d, 0, 0, 2, f(Yes, false, "")}, - {0xc448, 0, 0, 1, f(Yes, true, "")}, - {0xc449, 0, 0, 2, f(Yes, false, "")}, - {0xc464, 0, 0, 1, f(Yes, true, "")}, - {0xc465, 0, 0, 2, f(Yes, false, "")}, - {0xc480, 0, 0, 1, f(Yes, true, "")}, - {0xc481, 0, 0, 2, f(Yes, false, "")}, - {0xc49c, 0, 0, 1, f(Yes, true, "")}, - {0xc49d, 0, 0, 2, f(Yes, false, "")}, - {0xc4b8, 0, 0, 1, f(Yes, true, "")}, - {0xc4b9, 0, 0, 2, f(Yes, false, "")}, - {0xc4d4, 0, 0, 1, f(Yes, true, "")}, - {0xc4d5, 0, 0, 2, f(Yes, false, "")}, - {0xc4f0, 0, 0, 1, f(Yes, true, "")}, - {0xc4f1, 0, 0, 2, f(Yes, false, "")}, - {0xc50c, 0, 0, 1, f(Yes, true, "")}, - {0xc50d, 0, 0, 2, f(Yes, false, "")}, - {0xc528, 0, 0, 1, f(Yes, true, "")}, - {0xc529, 0, 0, 2, f(Yes, false, "")}, - {0xc544, 0, 0, 1, f(Yes, true, "")}, - {0xc545, 0, 0, 2, f(Yes, false, "")}, - {0xc560, 0, 0, 1, f(Yes, true, "")}, - {0xc561, 0, 0, 2, f(Yes, false, "")}, - {0xc57c, 0, 0, 1, f(Yes, true, "")}, - {0xc57d, 0, 0, 2, f(Yes, false, "")}, - {0xc598, 0, 0, 1, f(Yes, true, "")}, - {0xc599, 0, 0, 2, f(Yes, false, "")}, - {0xc5b4, 0, 0, 1, f(Yes, true, "")}, - {0xc5b5, 0, 0, 2, f(Yes, false, "")}, - {0xc5d0, 0, 0, 1, f(Yes, true, "")}, - {0xc5d1, 0, 0, 2, f(Yes, false, "")}, - {0xc5ec, 0, 0, 1, f(Yes, true, "")}, - {0xc5ed, 0, 0, 2, f(Yes, false, "")}, - {0xc608, 0, 0, 1, f(Yes, true, "")}, - {0xc609, 0, 0, 2, f(Yes, false, "")}, - {0xc624, 0, 0, 1, f(Yes, true, "")}, - {0xc625, 0, 0, 2, f(Yes, false, "")}, - {0xc640, 0, 0, 1, f(Yes, true, "")}, - {0xc641, 0, 0, 2, f(Yes, false, "")}, - {0xc65c, 0, 0, 1, f(Yes, true, "")}, - {0xc65d, 0, 0, 2, f(Yes, false, "")}, - {0xc678, 0, 0, 1, f(Yes, true, "")}, - {0xc679, 0, 0, 2, f(Yes, false, "")}, - {0xc694, 0, 0, 1, f(Yes, true, "")}, - {0xc695, 0, 0, 2, f(Yes, false, "")}, - {0xc6b0, 0, 0, 1, f(Yes, true, "")}, - {0xc6b1, 0, 0, 2, f(Yes, false, "")}, - {0xc6cc, 0, 0, 1, f(Yes, true, "")}, - {0xc6cd, 0, 0, 2, f(Yes, false, "")}, - {0xc6e8, 0, 0, 1, f(Yes, true, "")}, - {0xc6e9, 0, 0, 2, f(Yes, false, "")}, - {0xc704, 0, 0, 1, f(Yes, true, "")}, - {0xc705, 0, 0, 2, f(Yes, false, "")}, - {0xc720, 0, 0, 1, f(Yes, true, "")}, - {0xc721, 0, 0, 2, f(Yes, false, "")}, - {0xc73c, 0, 0, 1, f(Yes, true, "")}, - {0xc73d, 0, 0, 2, f(Yes, false, "")}, - {0xc758, 0, 0, 1, f(Yes, true, "")}, - {0xc759, 0, 0, 2, f(Yes, false, "")}, - {0xc774, 0, 0, 1, f(Yes, true, "")}, - {0xc775, 0, 0, 2, f(Yes, false, "")}, - {0xc790, 0, 0, 1, f(Yes, true, "")}, - {0xc791, 0, 0, 2, f(Yes, false, "")}, - {0xc7ac, 0, 0, 1, f(Yes, true, "")}, - {0xc7ad, 0, 0, 2, f(Yes, false, "")}, - {0xc7c8, 0, 0, 1, f(Yes, true, "")}, - {0xc7c9, 0, 0, 2, f(Yes, false, "")}, - {0xc7e4, 0, 0, 1, f(Yes, true, "")}, - {0xc7e5, 0, 0, 2, f(Yes, false, "")}, - {0xc800, 0, 0, 1, f(Yes, true, "")}, - {0xc801, 0, 0, 2, f(Yes, false, "")}, - {0xc81c, 0, 0, 1, f(Yes, true, "")}, - {0xc81d, 0, 0, 2, f(Yes, false, "")}, - {0xc838, 0, 0, 1, f(Yes, true, "")}, - {0xc839, 0, 0, 2, f(Yes, false, "")}, - {0xc854, 0, 0, 1, f(Yes, true, "")}, - {0xc855, 0, 0, 2, f(Yes, false, "")}, - {0xc870, 0, 0, 1, f(Yes, true, "")}, - {0xc871, 0, 0, 2, f(Yes, false, "")}, - {0xc88c, 0, 0, 1, f(Yes, true, "")}, - {0xc88d, 0, 0, 2, f(Yes, false, "")}, - {0xc8a8, 0, 0, 1, f(Yes, true, "")}, - {0xc8a9, 0, 0, 2, f(Yes, false, "")}, - {0xc8c4, 0, 0, 1, f(Yes, true, "")}, - {0xc8c5, 0, 0, 2, f(Yes, false, "")}, - {0xc8e0, 0, 0, 1, f(Yes, true, "")}, - {0xc8e1, 0, 0, 2, f(Yes, false, "")}, - {0xc8fc, 0, 0, 1, f(Yes, true, "")}, - {0xc8fd, 0, 0, 2, f(Yes, false, "")}, - {0xc918, 0, 0, 1, f(Yes, true, "")}, - {0xc919, 0, 0, 2, f(Yes, false, "")}, - {0xc934, 0, 0, 1, f(Yes, true, "")}, - {0xc935, 0, 0, 2, f(Yes, false, "")}, - {0xc950, 0, 0, 1, f(Yes, true, "")}, - {0xc951, 0, 0, 2, f(Yes, false, "")}, - {0xc96c, 0, 0, 1, f(Yes, true, "")}, - {0xc96d, 0, 0, 2, f(Yes, false, "")}, - {0xc988, 0, 0, 1, f(Yes, true, "")}, - {0xc989, 0, 0, 2, f(Yes, false, "")}, - {0xc9a4, 0, 0, 1, f(Yes, true, "")}, - {0xc9a5, 0, 0, 2, f(Yes, false, "")}, - {0xc9c0, 0, 0, 1, f(Yes, true, "")}, - {0xc9c1, 0, 0, 2, f(Yes, false, "")}, - {0xc9dc, 0, 0, 1, f(Yes, true, "")}, - {0xc9dd, 0, 0, 2, f(Yes, false, "")}, - {0xc9f8, 0, 0, 1, f(Yes, true, "")}, - {0xc9f9, 0, 0, 2, f(Yes, false, "")}, - {0xca14, 0, 0, 1, f(Yes, true, "")}, - {0xca15, 0, 0, 2, f(Yes, false, "")}, - {0xca30, 0, 0, 1, f(Yes, true, "")}, - {0xca31, 0, 0, 2, f(Yes, false, "")}, - {0xca4c, 0, 0, 1, f(Yes, true, "")}, - {0xca4d, 0, 0, 2, f(Yes, false, "")}, - {0xca68, 0, 0, 1, f(Yes, true, "")}, - {0xca69, 0, 0, 2, f(Yes, false, "")}, - {0xca84, 0, 0, 1, f(Yes, true, "")}, - {0xca85, 0, 0, 2, f(Yes, false, "")}, - {0xcaa0, 0, 0, 1, f(Yes, true, "")}, - {0xcaa1, 0, 0, 2, f(Yes, false, "")}, - {0xcabc, 0, 0, 1, f(Yes, true, "")}, - {0xcabd, 0, 0, 2, f(Yes, false, "")}, - {0xcad8, 0, 0, 1, f(Yes, true, "")}, - {0xcad9, 0, 0, 2, f(Yes, false, "")}, - {0xcaf4, 0, 0, 1, f(Yes, true, "")}, - {0xcaf5, 0, 0, 2, f(Yes, false, "")}, - {0xcb10, 0, 0, 1, f(Yes, true, "")}, - {0xcb11, 0, 0, 2, f(Yes, false, "")}, - {0xcb2c, 0, 0, 1, f(Yes, true, "")}, - {0xcb2d, 0, 0, 2, f(Yes, false, "")}, - {0xcb48, 0, 0, 1, f(Yes, true, "")}, - {0xcb49, 0, 0, 2, f(Yes, false, "")}, - {0xcb64, 0, 0, 1, f(Yes, true, "")}, - {0xcb65, 0, 0, 2, f(Yes, false, "")}, - {0xcb80, 0, 0, 1, f(Yes, true, "")}, - {0xcb81, 0, 0, 2, f(Yes, false, "")}, - {0xcb9c, 0, 0, 1, f(Yes, true, "")}, - {0xcb9d, 0, 0, 2, f(Yes, false, "")}, - {0xcbb8, 0, 0, 1, f(Yes, true, "")}, - {0xcbb9, 0, 0, 2, f(Yes, false, "")}, - {0xcbd4, 0, 0, 1, f(Yes, true, "")}, - {0xcbd5, 0, 0, 2, f(Yes, false, "")}, - {0xcbf0, 0, 0, 1, f(Yes, true, "")}, - {0xcbf1, 0, 0, 2, f(Yes, false, "")}, - {0xcc0c, 0, 0, 1, f(Yes, true, "")}, - {0xcc0d, 0, 0, 2, f(Yes, false, "")}, - {0xcc28, 0, 0, 1, f(Yes, true, "")}, - {0xcc29, 0, 0, 2, f(Yes, false, "")}, - {0xcc44, 0, 0, 1, f(Yes, true, "")}, - {0xcc45, 0, 0, 2, f(Yes, false, "")}, - {0xcc60, 0, 0, 1, f(Yes, true, "")}, - {0xcc61, 0, 0, 2, f(Yes, false, "")}, - {0xcc7c, 0, 0, 1, f(Yes, true, "")}, - {0xcc7d, 0, 0, 2, f(Yes, false, "")}, - {0xcc98, 0, 0, 1, f(Yes, true, "")}, - {0xcc99, 0, 0, 2, f(Yes, false, "")}, - {0xccb4, 0, 0, 1, f(Yes, true, "")}, - {0xccb5, 0, 0, 2, f(Yes, false, "")}, - {0xccd0, 0, 0, 1, f(Yes, true, "")}, - {0xccd1, 0, 0, 2, f(Yes, false, "")}, - {0xccec, 0, 0, 1, f(Yes, true, "")}, - {0xcced, 0, 0, 2, f(Yes, false, "")}, - {0xcd08, 0, 0, 1, f(Yes, true, "")}, - {0xcd09, 0, 0, 2, f(Yes, false, "")}, - {0xcd24, 0, 0, 1, f(Yes, true, "")}, - {0xcd25, 0, 0, 2, f(Yes, false, "")}, - {0xcd40, 0, 0, 1, f(Yes, true, "")}, - {0xcd41, 0, 0, 2, f(Yes, false, "")}, - {0xcd5c, 0, 0, 1, f(Yes, true, "")}, - {0xcd5d, 0, 0, 2, f(Yes, false, "")}, - {0xcd78, 0, 0, 1, f(Yes, true, "")}, - {0xcd79, 0, 0, 2, f(Yes, false, "")}, - {0xcd94, 0, 0, 1, f(Yes, true, "")}, - {0xcd95, 0, 0, 2, f(Yes, false, "")}, - {0xcdb0, 0, 0, 1, f(Yes, true, "")}, - {0xcdb1, 0, 0, 2, f(Yes, false, "")}, - {0xcdcc, 0, 0, 1, f(Yes, true, "")}, - {0xcdcd, 0, 0, 2, f(Yes, false, "")}, - {0xcde8, 0, 0, 1, f(Yes, true, "")}, - {0xcde9, 0, 0, 2, f(Yes, false, "")}, - {0xce04, 0, 0, 1, f(Yes, true, "")}, - {0xce05, 0, 0, 2, f(Yes, false, "")}, - {0xce20, 0, 0, 1, f(Yes, true, "")}, - {0xce21, 0, 0, 2, f(Yes, false, "")}, - {0xce3c, 0, 0, 1, f(Yes, true, "")}, - {0xce3d, 0, 0, 2, f(Yes, false, "")}, - {0xce58, 0, 0, 1, f(Yes, true, "")}, - {0xce59, 0, 0, 2, f(Yes, false, "")}, - {0xce74, 0, 0, 1, f(Yes, true, "")}, - {0xce75, 0, 0, 2, f(Yes, false, "")}, - {0xce90, 0, 0, 1, f(Yes, true, "")}, - {0xce91, 0, 0, 2, f(Yes, false, "")}, - {0xceac, 0, 0, 1, f(Yes, true, "")}, - {0xcead, 0, 0, 2, f(Yes, false, "")}, - {0xcec8, 0, 0, 1, f(Yes, true, "")}, - {0xcec9, 0, 0, 2, f(Yes, false, "")}, - {0xcee4, 0, 0, 1, f(Yes, true, "")}, - {0xcee5, 0, 0, 2, f(Yes, false, "")}, - {0xcf00, 0, 0, 1, f(Yes, true, "")}, - {0xcf01, 0, 0, 2, f(Yes, false, "")}, - {0xcf1c, 0, 0, 1, f(Yes, true, "")}, - {0xcf1d, 0, 0, 2, f(Yes, false, "")}, - {0xcf38, 0, 0, 1, f(Yes, true, "")}, - {0xcf39, 0, 0, 2, f(Yes, false, "")}, - {0xcf54, 0, 0, 1, f(Yes, true, "")}, - {0xcf55, 0, 0, 2, f(Yes, false, "")}, - {0xcf70, 0, 0, 1, f(Yes, true, "")}, - {0xcf71, 0, 0, 2, f(Yes, false, "")}, - {0xcf8c, 0, 0, 1, f(Yes, true, "")}, - {0xcf8d, 0, 0, 2, f(Yes, false, "")}, - {0xcfa8, 0, 0, 1, f(Yes, true, "")}, - {0xcfa9, 0, 0, 2, f(Yes, false, "")}, - {0xcfc4, 0, 0, 1, f(Yes, true, "")}, - {0xcfc5, 0, 0, 2, f(Yes, false, "")}, - {0xcfe0, 0, 0, 1, f(Yes, true, "")}, - {0xcfe1, 0, 0, 2, f(Yes, false, "")}, - {0xcffc, 0, 0, 1, f(Yes, true, "")}, - {0xcffd, 0, 0, 2, f(Yes, false, "")}, - {0xd018, 0, 0, 1, f(Yes, true, "")}, - {0xd019, 0, 0, 2, f(Yes, false, "")}, - {0xd034, 0, 0, 1, f(Yes, true, "")}, - {0xd035, 0, 0, 2, f(Yes, false, "")}, - {0xd050, 0, 0, 1, f(Yes, true, "")}, - {0xd051, 0, 0, 2, f(Yes, false, "")}, - {0xd06c, 0, 0, 1, f(Yes, true, "")}, - {0xd06d, 0, 0, 2, f(Yes, false, "")}, - {0xd088, 0, 0, 1, f(Yes, true, "")}, - {0xd089, 0, 0, 2, f(Yes, false, "")}, - {0xd0a4, 0, 0, 1, f(Yes, true, "")}, - {0xd0a5, 0, 0, 2, f(Yes, false, "")}, - {0xd0c0, 0, 0, 1, f(Yes, true, "")}, - {0xd0c1, 0, 0, 2, f(Yes, false, "")}, - {0xd0dc, 0, 0, 1, f(Yes, true, "")}, - {0xd0dd, 0, 0, 2, f(Yes, false, "")}, - {0xd0f8, 0, 0, 1, f(Yes, true, "")}, - {0xd0f9, 0, 0, 2, f(Yes, false, "")}, - {0xd114, 0, 0, 1, f(Yes, true, "")}, - {0xd115, 0, 0, 2, f(Yes, false, "")}, - {0xd130, 0, 0, 1, f(Yes, true, "")}, - {0xd131, 0, 0, 2, f(Yes, false, "")}, - {0xd14c, 0, 0, 1, f(Yes, true, "")}, - {0xd14d, 0, 0, 2, f(Yes, false, "")}, - {0xd168, 0, 0, 1, f(Yes, true, "")}, - {0xd169, 0, 0, 2, f(Yes, false, "")}, - {0xd184, 0, 0, 1, f(Yes, true, "")}, - {0xd185, 0, 0, 2, f(Yes, false, "")}, - {0xd1a0, 0, 0, 1, f(Yes, true, "")}, - {0xd1a1, 0, 0, 2, f(Yes, false, "")}, - {0xd1bc, 0, 0, 1, f(Yes, true, "")}, - {0xd1bd, 0, 0, 2, f(Yes, false, "")}, - {0xd1d8, 0, 0, 1, f(Yes, true, "")}, - {0xd1d9, 0, 0, 2, f(Yes, false, "")}, - {0xd1f4, 0, 0, 1, f(Yes, true, "")}, - {0xd1f5, 0, 0, 2, f(Yes, false, "")}, - {0xd210, 0, 0, 1, f(Yes, true, "")}, - {0xd211, 0, 0, 2, f(Yes, false, "")}, - {0xd22c, 0, 0, 1, f(Yes, true, "")}, - {0xd22d, 0, 0, 2, f(Yes, false, "")}, - {0xd248, 0, 0, 1, f(Yes, true, "")}, - {0xd249, 0, 0, 2, f(Yes, false, "")}, - {0xd264, 0, 0, 1, f(Yes, true, "")}, - {0xd265, 0, 0, 2, f(Yes, false, "")}, - {0xd280, 0, 0, 1, f(Yes, true, "")}, - {0xd281, 0, 0, 2, f(Yes, false, "")}, - {0xd29c, 0, 0, 1, f(Yes, true, "")}, - {0xd29d, 0, 0, 2, f(Yes, false, "")}, - {0xd2b8, 0, 0, 1, f(Yes, true, "")}, - {0xd2b9, 0, 0, 2, f(Yes, false, "")}, - {0xd2d4, 0, 0, 1, f(Yes, true, "")}, - {0xd2d5, 0, 0, 2, f(Yes, false, "")}, - {0xd2f0, 0, 0, 1, f(Yes, true, "")}, - {0xd2f1, 0, 0, 2, f(Yes, false, "")}, - {0xd30c, 0, 0, 1, f(Yes, true, "")}, - {0xd30d, 0, 0, 2, f(Yes, false, "")}, - {0xd328, 0, 0, 1, f(Yes, true, "")}, - {0xd329, 0, 0, 2, f(Yes, false, "")}, - {0xd344, 0, 0, 1, f(Yes, true, "")}, - {0xd345, 0, 0, 2, f(Yes, false, "")}, - {0xd360, 0, 0, 1, f(Yes, true, "")}, - {0xd361, 0, 0, 2, f(Yes, false, "")}, - {0xd37c, 0, 0, 1, f(Yes, true, "")}, - {0xd37d, 0, 0, 2, f(Yes, false, "")}, - {0xd398, 0, 0, 1, f(Yes, true, "")}, - {0xd399, 0, 0, 2, f(Yes, false, "")}, - {0xd3b4, 0, 0, 1, f(Yes, true, "")}, - {0xd3b5, 0, 0, 2, f(Yes, false, "")}, - {0xd3d0, 0, 0, 1, f(Yes, true, "")}, - {0xd3d1, 0, 0, 2, f(Yes, false, "")}, - {0xd3ec, 0, 0, 1, f(Yes, true, "")}, - {0xd3ed, 0, 0, 2, f(Yes, false, "")}, - {0xd408, 0, 0, 1, f(Yes, true, "")}, - {0xd409, 0, 0, 2, f(Yes, false, "")}, - {0xd424, 0, 0, 1, f(Yes, true, "")}, - {0xd425, 0, 0, 2, f(Yes, false, "")}, - {0xd440, 0, 0, 1, f(Yes, true, "")}, - {0xd441, 0, 0, 2, f(Yes, false, "")}, - {0xd45c, 0, 0, 1, f(Yes, true, "")}, - {0xd45d, 0, 0, 2, f(Yes, false, "")}, - {0xd478, 0, 0, 1, f(Yes, true, "")}, - {0xd479, 0, 0, 2, f(Yes, false, "")}, - {0xd494, 0, 0, 1, f(Yes, true, "")}, - {0xd495, 0, 0, 2, f(Yes, false, "")}, - {0xd4b0, 0, 0, 1, f(Yes, true, "")}, - {0xd4b1, 0, 0, 2, f(Yes, false, "")}, - {0xd4cc, 0, 0, 1, f(Yes, true, "")}, - {0xd4cd, 0, 0, 2, f(Yes, false, "")}, - {0xd4e8, 0, 0, 1, f(Yes, true, "")}, - {0xd4e9, 0, 0, 2, f(Yes, false, "")}, - {0xd504, 0, 0, 1, f(Yes, true, "")}, - {0xd505, 0, 0, 2, f(Yes, false, "")}, - {0xd520, 0, 0, 1, f(Yes, true, "")}, - {0xd521, 0, 0, 2, f(Yes, false, "")}, - {0xd53c, 0, 0, 1, f(Yes, true, "")}, - {0xd53d, 0, 0, 2, f(Yes, false, "")}, - {0xd558, 0, 0, 1, f(Yes, true, "")}, - {0xd559, 0, 0, 2, f(Yes, false, "")}, - {0xd574, 0, 0, 1, f(Yes, true, "")}, - {0xd575, 0, 0, 2, f(Yes, false, "")}, - {0xd590, 0, 0, 1, f(Yes, true, "")}, - {0xd591, 0, 0, 2, f(Yes, false, "")}, - {0xd5ac, 0, 0, 1, f(Yes, true, "")}, - {0xd5ad, 0, 0, 2, f(Yes, false, "")}, - {0xd5c8, 0, 0, 1, f(Yes, true, "")}, - {0xd5c9, 0, 0, 2, f(Yes, false, "")}, - {0xd5e4, 0, 0, 1, f(Yes, true, "")}, - {0xd5e5, 0, 0, 2, f(Yes, false, "")}, - {0xd600, 0, 0, 1, f(Yes, true, "")}, - {0xd601, 0, 0, 2, f(Yes, false, "")}, - {0xd61c, 0, 0, 1, f(Yes, true, "")}, - {0xd61d, 0, 0, 2, f(Yes, false, "")}, - {0xd638, 0, 0, 1, f(Yes, true, "")}, - {0xd639, 0, 0, 2, f(Yes, false, "")}, - {0xd654, 0, 0, 1, f(Yes, true, "")}, - {0xd655, 0, 0, 2, f(Yes, false, "")}, - {0xd670, 0, 0, 1, f(Yes, true, "")}, - {0xd671, 0, 0, 2, f(Yes, false, "")}, - {0xd68c, 0, 0, 1, f(Yes, true, "")}, - {0xd68d, 0, 0, 2, f(Yes, false, "")}, - {0xd6a8, 0, 0, 1, f(Yes, true, "")}, - {0xd6a9, 0, 0, 2, f(Yes, false, "")}, - {0xd6c4, 0, 0, 1, f(Yes, true, "")}, - {0xd6c5, 0, 0, 2, f(Yes, false, "")}, - {0xd6e0, 0, 0, 1, f(Yes, true, "")}, - {0xd6e1, 0, 0, 2, f(Yes, false, "")}, - {0xd6fc, 0, 0, 1, f(Yes, true, "")}, - {0xd6fd, 0, 0, 2, f(Yes, false, "")}, - {0xd718, 0, 0, 1, f(Yes, true, "")}, - {0xd719, 0, 0, 2, f(Yes, false, "")}, - {0xd734, 0, 0, 1, f(Yes, true, "")}, - {0xd735, 0, 0, 2, f(Yes, false, "")}, - {0xd750, 0, 0, 1, f(Yes, true, "")}, - {0xd751, 0, 0, 2, f(Yes, false, "")}, - {0xd76c, 0, 0, 1, f(Yes, true, "")}, - {0xd76d, 0, 0, 2, f(Yes, false, "")}, - {0xd788, 0, 0, 1, f(Yes, true, "")}, - {0xd789, 0, 0, 2, f(Yes, false, "")}, - {0xd7a4, 0, 0, 0, f(Yes, false, "")}, - {0xf900, 0, 0, 0, f(No, false, "豈")}, - {0xf901, 0, 0, 0, f(No, false, "更")}, - {0xf902, 0, 0, 0, f(No, false, "車")}, - {0xf903, 0, 0, 0, f(No, false, "賈")}, - {0xf904, 0, 0, 0, f(No, false, "滑")}, - {0xf905, 0, 0, 0, f(No, false, "串")}, - {0xf906, 0, 0, 0, f(No, false, "句")}, - {0xf907, 0, 0, 0, f(No, false, "龜")}, - {0xf909, 0, 0, 0, f(No, false, "契")}, - {0xf90a, 0, 0, 0, f(No, false, "金")}, - {0xf90b, 0, 0, 0, f(No, false, "喇")}, - {0xf90c, 0, 0, 0, f(No, false, "奈")}, - {0xf90d, 0, 0, 0, f(No, false, "懶")}, - {0xf90e, 0, 0, 0, f(No, false, "癩")}, - {0xf90f, 0, 0, 0, f(No, false, "羅")}, - {0xf910, 0, 0, 0, f(No, false, "蘿")}, - {0xf911, 0, 0, 0, f(No, false, "螺")}, - {0xf912, 0, 0, 0, f(No, false, "裸")}, - {0xf913, 0, 0, 0, f(No, false, "邏")}, - {0xf914, 0, 0, 0, f(No, false, "樂")}, - {0xf915, 0, 0, 0, f(No, false, "洛")}, - {0xf916, 0, 0, 0, f(No, false, "烙")}, - {0xf917, 0, 0, 0, f(No, false, "珞")}, - {0xf918, 0, 0, 0, f(No, false, "落")}, - {0xf919, 0, 0, 0, f(No, false, "酪")}, - {0xf91a, 0, 0, 0, f(No, false, "駱")}, - {0xf91b, 0, 0, 0, f(No, false, "亂")}, - {0xf91c, 0, 0, 0, f(No, false, "卵")}, - {0xf91d, 0, 0, 0, f(No, false, "欄")}, - {0xf91e, 0, 0, 0, f(No, false, "爛")}, - {0xf91f, 0, 0, 0, f(No, false, "蘭")}, - {0xf920, 0, 0, 0, f(No, false, "鸞")}, - {0xf921, 0, 0, 0, f(No, false, "嵐")}, - {0xf922, 0, 0, 0, f(No, false, "濫")}, - {0xf923, 0, 0, 0, f(No, false, "藍")}, - {0xf924, 0, 0, 0, f(No, false, "襤")}, - {0xf925, 0, 0, 0, f(No, false, "拉")}, - {0xf926, 0, 0, 0, f(No, false, "臘")}, - {0xf927, 0, 0, 0, f(No, false, "蠟")}, - {0xf928, 0, 0, 0, f(No, false, "廊")}, - {0xf929, 0, 0, 0, f(No, false, "朗")}, - {0xf92a, 0, 0, 0, f(No, false, "浪")}, - {0xf92b, 0, 0, 0, f(No, false, "狼")}, - {0xf92c, 0, 0, 0, f(No, false, "郎")}, - {0xf92d, 0, 0, 0, f(No, false, "來")}, - {0xf92e, 0, 0, 0, f(No, false, "冷")}, - {0xf92f, 0, 0, 0, f(No, false, "勞")}, - {0xf930, 0, 0, 0, f(No, false, "擄")}, - {0xf931, 0, 0, 0, f(No, false, "櫓")}, - {0xf932, 0, 0, 0, f(No, false, "爐")}, - {0xf933, 0, 0, 0, f(No, false, "盧")}, - {0xf934, 0, 0, 0, f(No, false, "老")}, - {0xf935, 0, 0, 0, f(No, false, "蘆")}, - {0xf936, 0, 0, 0, f(No, false, "虜")}, - {0xf937, 0, 0, 0, f(No, false, "路")}, - {0xf938, 0, 0, 0, f(No, false, "露")}, - {0xf939, 0, 0, 0, f(No, false, "魯")}, - {0xf93a, 0, 0, 0, f(No, false, "鷺")}, - {0xf93b, 0, 0, 0, f(No, false, "碌")}, - {0xf93c, 0, 0, 0, f(No, false, "祿")}, - {0xf93d, 0, 0, 0, f(No, false, "綠")}, - {0xf93e, 0, 0, 0, f(No, false, "菉")}, - {0xf93f, 0, 0, 0, f(No, false, "錄")}, - {0xf940, 0, 0, 0, f(No, false, "鹿")}, - {0xf941, 0, 0, 0, f(No, false, "論")}, - {0xf942, 0, 0, 0, f(No, false, "壟")}, - {0xf943, 0, 0, 0, f(No, false, "弄")}, - {0xf944, 0, 0, 0, f(No, false, "籠")}, - {0xf945, 0, 0, 0, f(No, false, "聾")}, - {0xf946, 0, 0, 0, f(No, false, "牢")}, - {0xf947, 0, 0, 0, f(No, false, "磊")}, - {0xf948, 0, 0, 0, f(No, false, "賂")}, - {0xf949, 0, 0, 0, f(No, false, "雷")}, - {0xf94a, 0, 0, 0, f(No, false, "壘")}, - {0xf94b, 0, 0, 0, f(No, false, "屢")}, - {0xf94c, 0, 0, 0, f(No, false, "樓")}, - {0xf94d, 0, 0, 0, f(No, false, "淚")}, - {0xf94e, 0, 0, 0, f(No, false, "漏")}, - {0xf94f, 0, 0, 0, f(No, false, "累")}, - {0xf950, 0, 0, 0, f(No, false, "縷")}, - {0xf951, 0, 0, 0, f(No, false, "陋")}, - {0xf952, 0, 0, 0, f(No, false, "勒")}, - {0xf953, 0, 0, 0, f(No, false, "肋")}, - {0xf954, 0, 0, 0, f(No, false, "凜")}, - {0xf955, 0, 0, 0, f(No, false, "凌")}, - {0xf956, 0, 0, 0, f(No, false, "稜")}, - {0xf957, 0, 0, 0, f(No, false, "綾")}, - {0xf958, 0, 0, 0, f(No, false, "菱")}, - {0xf959, 0, 0, 0, f(No, false, "陵")}, - {0xf95a, 0, 0, 0, f(No, false, "讀")}, - {0xf95b, 0, 0, 0, f(No, false, "拏")}, - {0xf95c, 0, 0, 0, f(No, false, "樂")}, - {0xf95d, 0, 0, 0, f(No, false, "諾")}, - {0xf95e, 0, 0, 0, f(No, false, "丹")}, - {0xf95f, 0, 0, 0, f(No, false, "寧")}, - {0xf960, 0, 0, 0, f(No, false, "怒")}, - {0xf961, 0, 0, 0, f(No, false, "率")}, - {0xf962, 0, 0, 0, f(No, false, "異")}, - {0xf963, 0, 0, 0, f(No, false, "北")}, - {0xf964, 0, 0, 0, f(No, false, "磻")}, - {0xf965, 0, 0, 0, f(No, false, "便")}, - {0xf966, 0, 0, 0, f(No, false, "復")}, - {0xf967, 0, 0, 0, f(No, false, "不")}, - {0xf968, 0, 0, 0, f(No, false, "泌")}, - {0xf969, 0, 0, 0, f(No, false, "數")}, - {0xf96a, 0, 0, 0, f(No, false, "索")}, - {0xf96b, 0, 0, 0, f(No, false, "參")}, - {0xf96c, 0, 0, 0, f(No, false, "塞")}, - {0xf96d, 0, 0, 0, f(No, false, "省")}, - {0xf96e, 0, 0, 0, f(No, false, "葉")}, - {0xf96f, 0, 0, 0, f(No, false, "說")}, - {0xf970, 0, 0, 0, f(No, false, "殺")}, - {0xf971, 0, 0, 0, f(No, false, "辰")}, - {0xf972, 0, 0, 0, f(No, false, "沈")}, - {0xf973, 0, 0, 0, f(No, false, "拾")}, - {0xf974, 0, 0, 0, f(No, false, "若")}, - {0xf975, 0, 0, 0, f(No, false, "掠")}, - {0xf976, 0, 0, 0, f(No, false, "略")}, - {0xf977, 0, 0, 0, f(No, false, "亮")}, - {0xf978, 0, 0, 0, f(No, false, "兩")}, - {0xf979, 0, 0, 0, f(No, false, "凉")}, - {0xf97a, 0, 0, 0, f(No, false, "梁")}, - {0xf97b, 0, 0, 0, f(No, false, "糧")}, - {0xf97c, 0, 0, 0, f(No, false, "良")}, - {0xf97d, 0, 0, 0, f(No, false, "諒")}, - {0xf97e, 0, 0, 0, f(No, false, "量")}, - {0xf97f, 0, 0, 0, f(No, false, "勵")}, - {0xf980, 0, 0, 0, f(No, false, "呂")}, - {0xf981, 0, 0, 0, f(No, false, "女")}, - {0xf982, 0, 0, 0, f(No, false, "廬")}, - {0xf983, 0, 0, 0, f(No, false, "旅")}, - {0xf984, 0, 0, 0, f(No, false, "濾")}, - {0xf985, 0, 0, 0, f(No, false, "礪")}, - {0xf986, 0, 0, 0, f(No, false, "閭")}, - {0xf987, 0, 0, 0, f(No, false, "驪")}, - {0xf988, 0, 0, 0, f(No, false, "麗")}, - {0xf989, 0, 0, 0, f(No, false, "黎")}, - {0xf98a, 0, 0, 0, f(No, false, "力")}, - {0xf98b, 0, 0, 0, f(No, false, "曆")}, - {0xf98c, 0, 0, 0, f(No, false, "歷")}, - {0xf98d, 0, 0, 0, f(No, false, "轢")}, - {0xf98e, 0, 0, 0, f(No, false, "年")}, - {0xf98f, 0, 0, 0, f(No, false, "憐")}, - {0xf990, 0, 0, 0, f(No, false, "戀")}, - {0xf991, 0, 0, 0, f(No, false, "撚")}, - {0xf992, 0, 0, 0, f(No, false, "漣")}, - {0xf993, 0, 0, 0, f(No, false, "煉")}, - {0xf994, 0, 0, 0, f(No, false, "璉")}, - {0xf995, 0, 0, 0, f(No, false, "秊")}, - {0xf996, 0, 0, 0, f(No, false, "練")}, - {0xf997, 0, 0, 0, f(No, false, "聯")}, - {0xf998, 0, 0, 0, f(No, false, "輦")}, - {0xf999, 0, 0, 0, f(No, false, "蓮")}, - {0xf99a, 0, 0, 0, f(No, false, "連")}, - {0xf99b, 0, 0, 0, f(No, false, "鍊")}, - {0xf99c, 0, 0, 0, f(No, false, "列")}, - {0xf99d, 0, 0, 0, f(No, false, "劣")}, - {0xf99e, 0, 0, 0, f(No, false, "咽")}, - {0xf99f, 0, 0, 0, f(No, false, "烈")}, - {0xf9a0, 0, 0, 0, f(No, false, "裂")}, - {0xf9a1, 0, 0, 0, f(No, false, "說")}, - {0xf9a2, 0, 0, 0, f(No, false, "廉")}, - {0xf9a3, 0, 0, 0, f(No, false, "念")}, - {0xf9a4, 0, 0, 0, f(No, false, "捻")}, - {0xf9a5, 0, 0, 0, f(No, false, "殮")}, - {0xf9a6, 0, 0, 0, f(No, false, "簾")}, - {0xf9a7, 0, 0, 0, f(No, false, "獵")}, - {0xf9a8, 0, 0, 0, f(No, false, "令")}, - {0xf9a9, 0, 0, 0, f(No, false, "囹")}, - {0xf9aa, 0, 0, 0, f(No, false, "寧")}, - {0xf9ab, 0, 0, 0, f(No, false, "嶺")}, - {0xf9ac, 0, 0, 0, f(No, false, "怜")}, - {0xf9ad, 0, 0, 0, f(No, false, "玲")}, - {0xf9ae, 0, 0, 0, f(No, false, "瑩")}, - {0xf9af, 0, 0, 0, f(No, false, "羚")}, - {0xf9b0, 0, 0, 0, f(No, false, "聆")}, - {0xf9b1, 0, 0, 0, f(No, false, "鈴")}, - {0xf9b2, 0, 0, 0, f(No, false, "零")}, - {0xf9b3, 0, 0, 0, f(No, false, "靈")}, - {0xf9b4, 0, 0, 0, f(No, false, "領")}, - {0xf9b5, 0, 0, 0, f(No, false, "例")}, - {0xf9b6, 0, 0, 0, f(No, false, "禮")}, - {0xf9b7, 0, 0, 0, f(No, false, "醴")}, - {0xf9b8, 0, 0, 0, f(No, false, "隸")}, - {0xf9b9, 0, 0, 0, f(No, false, "惡")}, - {0xf9ba, 0, 0, 0, f(No, false, "了")}, - {0xf9bb, 0, 0, 0, f(No, false, "僚")}, - {0xf9bc, 0, 0, 0, f(No, false, "寮")}, - {0xf9bd, 0, 0, 0, f(No, false, "尿")}, - {0xf9be, 0, 0, 0, f(No, false, "料")}, - {0xf9bf, 0, 0, 0, f(No, false, "樂")}, - {0xf9c0, 0, 0, 0, f(No, false, "燎")}, - {0xf9c1, 0, 0, 0, f(No, false, "療")}, - {0xf9c2, 0, 0, 0, f(No, false, "蓼")}, - {0xf9c3, 0, 0, 0, f(No, false, "遼")}, - {0xf9c4, 0, 0, 0, f(No, false, "龍")}, - {0xf9c5, 0, 0, 0, f(No, false, "暈")}, - {0xf9c6, 0, 0, 0, f(No, false, "阮")}, - {0xf9c7, 0, 0, 0, f(No, false, "劉")}, - {0xf9c8, 0, 0, 0, f(No, false, "杻")}, - {0xf9c9, 0, 0, 0, f(No, false, "柳")}, - {0xf9ca, 0, 0, 0, f(No, false, "流")}, - {0xf9cb, 0, 0, 0, f(No, false, "溜")}, - {0xf9cc, 0, 0, 0, f(No, false, "琉")}, - {0xf9cd, 0, 0, 0, f(No, false, "留")}, - {0xf9ce, 0, 0, 0, f(No, false, "硫")}, - {0xf9cf, 0, 0, 0, f(No, false, "紐")}, - {0xf9d0, 0, 0, 0, f(No, false, "類")}, - {0xf9d1, 0, 0, 0, f(No, false, "六")}, - {0xf9d2, 0, 0, 0, f(No, false, "戮")}, - {0xf9d3, 0, 0, 0, f(No, false, "陸")}, - {0xf9d4, 0, 0, 0, f(No, false, "倫")}, - {0xf9d5, 0, 0, 0, f(No, false, "崙")}, - {0xf9d6, 0, 0, 0, f(No, false, "淪")}, - {0xf9d7, 0, 0, 0, f(No, false, "輪")}, - {0xf9d8, 0, 0, 0, f(No, false, "律")}, - {0xf9d9, 0, 0, 0, f(No, false, "慄")}, - {0xf9da, 0, 0, 0, f(No, false, "栗")}, - {0xf9db, 0, 0, 0, f(No, false, "率")}, - {0xf9dc, 0, 0, 0, f(No, false, "隆")}, - {0xf9dd, 0, 0, 0, f(No, false, "利")}, - {0xf9de, 0, 0, 0, f(No, false, "吏")}, - {0xf9df, 0, 0, 0, f(No, false, "履")}, - {0xf9e0, 0, 0, 0, f(No, false, "易")}, - {0xf9e1, 0, 0, 0, f(No, false, "李")}, - {0xf9e2, 0, 0, 0, f(No, false, "梨")}, - {0xf9e3, 0, 0, 0, f(No, false, "泥")}, - {0xf9e4, 0, 0, 0, f(No, false, "理")}, - {0xf9e5, 0, 0, 0, f(No, false, "痢")}, - {0xf9e6, 0, 0, 0, f(No, false, "罹")}, - {0xf9e7, 0, 0, 0, f(No, false, "裏")}, - {0xf9e8, 0, 0, 0, f(No, false, "裡")}, - {0xf9e9, 0, 0, 0, f(No, false, "里")}, - {0xf9ea, 0, 0, 0, f(No, false, "離")}, - {0xf9eb, 0, 0, 0, f(No, false, "匿")}, - {0xf9ec, 0, 0, 0, f(No, false, "溺")}, - {0xf9ed, 0, 0, 0, f(No, false, "吝")}, - {0xf9ee, 0, 0, 0, f(No, false, "燐")}, - {0xf9ef, 0, 0, 0, f(No, false, "璘")}, - {0xf9f0, 0, 0, 0, f(No, false, "藺")}, - {0xf9f1, 0, 0, 0, f(No, false, "隣")}, - {0xf9f2, 0, 0, 0, f(No, false, "鱗")}, - {0xf9f3, 0, 0, 0, f(No, false, "麟")}, - {0xf9f4, 0, 0, 0, f(No, false, "林")}, - {0xf9f5, 0, 0, 0, f(No, false, "淋")}, - {0xf9f6, 0, 0, 0, f(No, false, "臨")}, - {0xf9f7, 0, 0, 0, f(No, false, "立")}, - {0xf9f8, 0, 0, 0, f(No, false, "笠")}, - {0xf9f9, 0, 0, 0, f(No, false, "粒")}, - {0xf9fa, 0, 0, 0, f(No, false, "狀")}, - {0xf9fb, 0, 0, 0, f(No, false, "炙")}, - {0xf9fc, 0, 0, 0, f(No, false, "識")}, - {0xf9fd, 0, 0, 0, f(No, false, "什")}, - {0xf9fe, 0, 0, 0, f(No, false, "茶")}, - {0xf9ff, 0, 0, 0, f(No, false, "刺")}, - {0xfa00, 0, 0, 0, f(No, false, "切")}, - {0xfa01, 0, 0, 0, f(No, false, "度")}, - {0xfa02, 0, 0, 0, f(No, false, "拓")}, - {0xfa03, 0, 0, 0, f(No, false, "糖")}, - {0xfa04, 0, 0, 0, f(No, false, "宅")}, - {0xfa05, 0, 0, 0, f(No, false, "洞")}, - {0xfa06, 0, 0, 0, f(No, false, "暴")}, - {0xfa07, 0, 0, 0, f(No, false, "輻")}, - {0xfa08, 0, 0, 0, f(No, false, "行")}, - {0xfa09, 0, 0, 0, f(No, false, "降")}, - {0xfa0a, 0, 0, 0, f(No, false, "見")}, - {0xfa0b, 0, 0, 0, f(No, false, "廓")}, - {0xfa0c, 0, 0, 0, f(No, false, "兀")}, - {0xfa0d, 0, 0, 0, f(No, false, "嗀")}, - {0xfa0e, 0, 0, 0, f(Yes, false, "")}, - {0xfa10, 0, 0, 0, f(No, false, "塚")}, - {0xfa11, 0, 0, 0, f(Yes, false, "")}, - {0xfa12, 0, 0, 0, f(No, false, "晴")}, - {0xfa13, 0, 0, 0, f(Yes, false, "")}, - {0xfa15, 0, 0, 0, f(No, false, "凞")}, - {0xfa16, 0, 0, 0, f(No, false, "猪")}, - {0xfa17, 0, 0, 0, f(No, false, "益")}, - {0xfa18, 0, 0, 0, f(No, false, "礼")}, - {0xfa19, 0, 0, 0, f(No, false, "神")}, - {0xfa1a, 0, 0, 0, f(No, false, "祥")}, - {0xfa1b, 0, 0, 0, f(No, false, "福")}, - {0xfa1c, 0, 0, 0, f(No, false, "靖")}, - {0xfa1d, 0, 0, 0, f(No, false, "精")}, - {0xfa1e, 0, 0, 0, f(No, false, "羽")}, - {0xfa1f, 0, 0, 0, f(Yes, false, "")}, - {0xfa20, 0, 0, 0, f(No, false, "蘒")}, - {0xfa21, 0, 0, 0, f(Yes, false, "")}, - {0xfa22, 0, 0, 0, f(No, false, "諸")}, - {0xfa23, 0, 0, 0, f(Yes, false, "")}, - {0xfa25, 0, 0, 0, f(No, false, "逸")}, - {0xfa26, 0, 0, 0, f(No, false, "都")}, - {0xfa27, 0, 0, 0, f(Yes, false, "")}, - {0xfa2a, 0, 0, 0, f(No, false, "飯")}, - {0xfa2b, 0, 0, 0, f(No, false, "飼")}, - {0xfa2c, 0, 0, 0, f(No, false, "館")}, - {0xfa2d, 0, 0, 0, f(No, false, "鶴")}, - {0xfa2e, 0, 0, 0, f(No, false, "郞")}, - {0xfa2f, 0, 0, 0, f(No, false, "隷")}, - {0xfa30, 0, 0, 0, f(No, false, "侮")}, - {0xfa31, 0, 0, 0, f(No, false, "僧")}, - {0xfa32, 0, 0, 0, f(No, false, "免")}, - {0xfa33, 0, 0, 0, f(No, false, "勉")}, - {0xfa34, 0, 0, 0, f(No, false, "勤")}, - {0xfa35, 0, 0, 0, f(No, false, "卑")}, - {0xfa36, 0, 0, 0, f(No, false, "喝")}, - {0xfa37, 0, 0, 0, f(No, false, "嘆")}, - {0xfa38, 0, 0, 0, f(No, false, "器")}, - {0xfa39, 0, 0, 0, f(No, false, "塀")}, - {0xfa3a, 0, 0, 0, f(No, false, "墨")}, - {0xfa3b, 0, 0, 0, f(No, false, "層")}, - {0xfa3c, 0, 0, 0, f(No, false, "屮")}, - {0xfa3d, 0, 0, 0, f(No, false, "悔")}, - {0xfa3e, 0, 0, 0, f(No, false, "慨")}, - {0xfa3f, 0, 0, 0, f(No, false, "憎")}, - {0xfa40, 0, 0, 0, f(No, false, "懲")}, - {0xfa41, 0, 0, 0, f(No, false, "敏")}, - {0xfa42, 0, 0, 0, f(No, false, "既")}, - {0xfa43, 0, 0, 0, f(No, false, "暑")}, - {0xfa44, 0, 0, 0, f(No, false, "梅")}, - {0xfa45, 0, 0, 0, f(No, false, "海")}, - {0xfa46, 0, 0, 0, f(No, false, "渚")}, - {0xfa47, 0, 0, 0, f(No, false, "漢")}, - {0xfa48, 0, 0, 0, f(No, false, "煮")}, - {0xfa49, 0, 0, 0, f(No, false, "爫")}, - {0xfa4a, 0, 0, 0, f(No, false, "琢")}, - {0xfa4b, 0, 0, 0, f(No, false, "碑")}, - {0xfa4c, 0, 0, 0, f(No, false, "社")}, - {0xfa4d, 0, 0, 0, f(No, false, "祉")}, - {0xfa4e, 0, 0, 0, f(No, false, "祈")}, - {0xfa4f, 0, 0, 0, f(No, false, "祐")}, - {0xfa50, 0, 0, 0, f(No, false, "祖")}, - {0xfa51, 0, 0, 0, f(No, false, "祝")}, - {0xfa52, 0, 0, 0, f(No, false, "禍")}, - {0xfa53, 0, 0, 0, f(No, false, "禎")}, - {0xfa54, 0, 0, 0, f(No, false, "穀")}, - {0xfa55, 0, 0, 0, f(No, false, "突")}, - {0xfa56, 0, 0, 0, f(No, false, "節")}, - {0xfa57, 0, 0, 0, f(No, false, "練")}, - {0xfa58, 0, 0, 0, f(No, false, "縉")}, - {0xfa59, 0, 0, 0, f(No, false, "繁")}, - {0xfa5a, 0, 0, 0, f(No, false, "署")}, - {0xfa5b, 0, 0, 0, f(No, false, "者")}, - {0xfa5c, 0, 0, 0, f(No, false, "臭")}, - {0xfa5d, 0, 0, 0, f(No, false, "艹")}, - {0xfa5f, 0, 0, 0, f(No, false, "著")}, - {0xfa60, 0, 0, 0, f(No, false, "褐")}, - {0xfa61, 0, 0, 0, f(No, false, "視")}, - {0xfa62, 0, 0, 0, f(No, false, "謁")}, - {0xfa63, 0, 0, 0, f(No, false, "謹")}, - {0xfa64, 0, 0, 0, f(No, false, "賓")}, - {0xfa65, 0, 0, 0, f(No, false, "贈")}, - {0xfa66, 0, 0, 0, f(No, false, "辶")}, - {0xfa67, 0, 0, 0, f(No, false, "逸")}, - {0xfa68, 0, 0, 0, f(No, false, "難")}, - {0xfa69, 0, 0, 0, f(No, false, "響")}, - {0xfa6a, 0, 0, 0, f(No, false, "頻")}, - {0xfa6b, 0, 0, 0, f(No, false, "恵")}, - {0xfa6c, 0, 0, 0, f(No, false, "𤋮")}, - {0xfa6d, 0, 0, 0, f(No, false, "舘")}, - {0xfa6e, 0, 0, 0, f(Yes, false, "")}, - {0xfa70, 0, 0, 0, f(No, false, "並")}, - {0xfa71, 0, 0, 0, f(No, false, "况")}, - {0xfa72, 0, 0, 0, f(No, false, "全")}, - {0xfa73, 0, 0, 0, f(No, false, "侀")}, - {0xfa74, 0, 0, 0, f(No, false, "充")}, - {0xfa75, 0, 0, 0, f(No, false, "冀")}, - {0xfa76, 0, 0, 0, f(No, false, "勇")}, - {0xfa77, 0, 0, 0, f(No, false, "勺")}, - {0xfa78, 0, 0, 0, f(No, false, "喝")}, - {0xfa79, 0, 0, 0, f(No, false, "啕")}, - {0xfa7a, 0, 0, 0, f(No, false, "喙")}, - {0xfa7b, 0, 0, 0, f(No, false, "嗢")}, - {0xfa7c, 0, 0, 0, f(No, false, "塚")}, - {0xfa7d, 0, 0, 0, f(No, false, "墳")}, - {0xfa7e, 0, 0, 0, f(No, false, "奄")}, - {0xfa7f, 0, 0, 0, f(No, false, "奔")}, - {0xfa80, 0, 0, 0, f(No, false, "婢")}, - {0xfa81, 0, 0, 0, f(No, false, "嬨")}, - {0xfa82, 0, 0, 0, f(No, false, "廒")}, - {0xfa83, 0, 0, 0, f(No, false, "廙")}, - {0xfa84, 0, 0, 0, f(No, false, "彩")}, - {0xfa85, 0, 0, 0, f(No, false, "徭")}, - {0xfa86, 0, 0, 0, f(No, false, "惘")}, - {0xfa87, 0, 0, 0, f(No, false, "慎")}, - {0xfa88, 0, 0, 0, f(No, false, "愈")}, - {0xfa89, 0, 0, 0, f(No, false, "憎")}, - {0xfa8a, 0, 0, 0, f(No, false, "慠")}, - {0xfa8b, 0, 0, 0, f(No, false, "懲")}, - {0xfa8c, 0, 0, 0, f(No, false, "戴")}, - {0xfa8d, 0, 0, 0, f(No, false, "揄")}, - {0xfa8e, 0, 0, 0, f(No, false, "搜")}, - {0xfa8f, 0, 0, 0, f(No, false, "摒")}, - {0xfa90, 0, 0, 0, f(No, false, "敖")}, - {0xfa91, 0, 0, 0, f(No, false, "晴")}, - {0xfa92, 0, 0, 0, f(No, false, "朗")}, - {0xfa93, 0, 0, 0, f(No, false, "望")}, - {0xfa94, 0, 0, 0, f(No, false, "杖")}, - {0xfa95, 0, 0, 0, f(No, false, "歹")}, - {0xfa96, 0, 0, 0, f(No, false, "殺")}, - {0xfa97, 0, 0, 0, f(No, false, "流")}, - {0xfa98, 0, 0, 0, f(No, false, "滛")}, - {0xfa99, 0, 0, 0, f(No, false, "滋")}, - {0xfa9a, 0, 0, 0, f(No, false, "漢")}, - {0xfa9b, 0, 0, 0, f(No, false, "瀞")}, - {0xfa9c, 0, 0, 0, f(No, false, "煮")}, - {0xfa9d, 0, 0, 0, f(No, false, "瞧")}, - {0xfa9e, 0, 0, 0, f(No, false, "爵")}, - {0xfa9f, 0, 0, 0, f(No, false, "犯")}, - {0xfaa0, 0, 0, 0, f(No, false, "猪")}, - {0xfaa1, 0, 0, 0, f(No, false, "瑱")}, - {0xfaa2, 0, 0, 0, f(No, false, "甆")}, - {0xfaa3, 0, 0, 0, f(No, false, "画")}, - {0xfaa4, 0, 0, 0, f(No, false, "瘝")}, - {0xfaa5, 0, 0, 0, f(No, false, "瘟")}, - {0xfaa6, 0, 0, 0, f(No, false, "益")}, - {0xfaa7, 0, 0, 0, f(No, false, "盛")}, - {0xfaa8, 0, 0, 0, f(No, false, "直")}, - {0xfaa9, 0, 0, 0, f(No, false, "睊")}, - {0xfaaa, 0, 0, 0, f(No, false, "着")}, - {0xfaab, 0, 0, 0, f(No, false, "磌")}, - {0xfaac, 0, 0, 0, f(No, false, "窱")}, - {0xfaad, 0, 0, 0, f(No, false, "節")}, - {0xfaae, 0, 0, 0, f(No, false, "类")}, - {0xfaaf, 0, 0, 0, f(No, false, "絛")}, - {0xfab0, 0, 0, 0, f(No, false, "練")}, - {0xfab1, 0, 0, 0, f(No, false, "缾")}, - {0xfab2, 0, 0, 0, f(No, false, "者")}, - {0xfab3, 0, 0, 0, f(No, false, "荒")}, - {0xfab4, 0, 0, 0, f(No, false, "華")}, - {0xfab5, 0, 0, 0, f(No, false, "蝹")}, - {0xfab6, 0, 0, 0, f(No, false, "襁")}, - {0xfab7, 0, 0, 0, f(No, false, "覆")}, - {0xfab8, 0, 0, 0, f(No, false, "視")}, - {0xfab9, 0, 0, 0, f(No, false, "調")}, - {0xfaba, 0, 0, 0, f(No, false, "諸")}, - {0xfabb, 0, 0, 0, f(No, false, "請")}, - {0xfabc, 0, 0, 0, f(No, false, "謁")}, - {0xfabd, 0, 0, 0, f(No, false, "諾")}, - {0xfabe, 0, 0, 0, f(No, false, "諭")}, - {0xfabf, 0, 0, 0, f(No, false, "謹")}, - {0xfac0, 0, 0, 0, f(No, false, "變")}, - {0xfac1, 0, 0, 0, f(No, false, "贈")}, - {0xfac2, 0, 0, 0, f(No, false, "輸")}, - {0xfac3, 0, 0, 0, f(No, false, "遲")}, - {0xfac4, 0, 0, 0, f(No, false, "醙")}, - {0xfac5, 0, 0, 0, f(No, false, "鉶")}, - {0xfac6, 0, 0, 0, f(No, false, "陼")}, - {0xfac7, 0, 0, 0, f(No, false, "難")}, - {0xfac8, 0, 0, 0, f(No, false, "靖")}, - {0xfac9, 0, 0, 0, f(No, false, "韛")}, - {0xfaca, 0, 0, 0, f(No, false, "響")}, - {0xfacb, 0, 0, 0, f(No, false, "頋")}, - {0xfacc, 0, 0, 0, f(No, false, "頻")}, - {0xfacd, 0, 0, 0, f(No, false, "鬒")}, - {0xface, 0, 0, 0, f(No, false, "龜")}, - {0xfacf, 0, 0, 0, f(No, false, "𢡊")}, - {0xfad0, 0, 0, 0, f(No, false, "𢡄")}, - {0xfad1, 0, 0, 0, f(No, false, "𣏕")}, - {0xfad2, 0, 0, 0, f(No, false, "㮝")}, - {0xfad3, 0, 0, 0, f(No, false, "䀘")}, - {0xfad4, 0, 0, 0, f(No, false, "䀹")}, - {0xfad5, 0, 0, 0, f(No, false, "𥉉")}, - {0xfad6, 0, 0, 0, f(No, false, "𥳐")}, - {0xfad7, 0, 0, 0, f(No, false, "𧻓")}, - {0xfad8, 0, 0, 0, f(No, false, "齃")}, - {0xfad9, 0, 0, 0, f(No, false, "龎")}, - {0xfada, 0, 0, 0, f(Yes, false, "")}, - {0xfb00, 0, 0, 0, g(Yes, No, false, false, "", "ff")}, - {0xfb01, 0, 0, 0, g(Yes, No, false, false, "", "fi")}, - {0xfb02, 0, 0, 0, g(Yes, No, false, false, "", "fl")}, - {0xfb03, 0, 0, 0, g(Yes, No, false, false, "", "ffi")}, - {0xfb04, 0, 0, 0, g(Yes, No, false, false, "", "ffl")}, - {0xfb05, 0, 0, 0, g(Yes, No, false, false, "", "st")}, - {0xfb07, 0, 0, 0, f(Yes, false, "")}, - {0xfb13, 0, 0, 0, g(Yes, No, false, false, "", "մն")}, - {0xfb14, 0, 0, 0, g(Yes, No, false, false, "", "մե")}, - {0xfb15, 0, 0, 0, g(Yes, No, false, false, "", "մի")}, - {0xfb16, 0, 0, 0, g(Yes, No, false, false, "", "վն")}, - {0xfb17, 0, 0, 0, g(Yes, No, false, false, "", "մխ")}, - {0xfb18, 0, 0, 0, f(Yes, false, "")}, - {0xfb1d, 0, 0, 1, f(No, false, "יִ")}, - {0xfb1e, 26, 1, 1, f(Yes, false, "")}, - {0xfb1f, 0, 0, 1, f(No, false, "ײַ")}, - {0xfb20, 0, 0, 0, g(Yes, No, false, false, "", "ע")}, - {0xfb21, 0, 0, 0, g(Yes, No, false, false, "", "א")}, - {0xfb22, 0, 0, 0, g(Yes, No, false, false, "", "ד")}, - {0xfb23, 0, 0, 0, g(Yes, No, false, false, "", "ה")}, - {0xfb24, 0, 0, 0, g(Yes, No, false, false, "", "כ")}, - {0xfb25, 0, 0, 0, g(Yes, No, false, false, "", "ל")}, - {0xfb26, 0, 0, 0, g(Yes, No, false, false, "", "ם")}, - {0xfb27, 0, 0, 0, g(Yes, No, false, false, "", "ר")}, - {0xfb28, 0, 0, 0, g(Yes, No, false, false, "", "ת")}, - {0xfb29, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0xfb2a, 0, 0, 1, f(No, false, "שׁ")}, - {0xfb2b, 0, 0, 1, f(No, false, "שׂ")}, - {0xfb2c, 0, 0, 2, f(No, false, "שּׁ")}, - {0xfb2d, 0, 0, 2, f(No, false, "שּׂ")}, - {0xfb2e, 0, 0, 1, f(No, false, "אַ")}, - {0xfb2f, 0, 0, 1, f(No, false, "אָ")}, - {0xfb30, 0, 0, 1, f(No, false, "אּ")}, - {0xfb31, 0, 0, 1, f(No, false, "בּ")}, - {0xfb32, 0, 0, 1, f(No, false, "גּ")}, - {0xfb33, 0, 0, 1, f(No, false, "דּ")}, - {0xfb34, 0, 0, 1, f(No, false, "הּ")}, - {0xfb35, 0, 0, 1, f(No, false, "וּ")}, - {0xfb36, 0, 0, 1, f(No, false, "זּ")}, - {0xfb37, 0, 0, 0, f(Yes, false, "")}, - {0xfb38, 0, 0, 1, f(No, false, "טּ")}, - {0xfb39, 0, 0, 1, f(No, false, "יּ")}, - {0xfb3a, 0, 0, 1, f(No, false, "ךּ")}, - {0xfb3b, 0, 0, 1, f(No, false, "כּ")}, - {0xfb3c, 0, 0, 1, f(No, false, "לּ")}, - {0xfb3d, 0, 0, 0, f(Yes, false, "")}, - {0xfb3e, 0, 0, 1, f(No, false, "מּ")}, - {0xfb3f, 0, 0, 0, f(Yes, false, "")}, - {0xfb40, 0, 0, 1, f(No, false, "נּ")}, - {0xfb41, 0, 0, 1, f(No, false, "סּ")}, - {0xfb42, 0, 0, 0, f(Yes, false, "")}, - {0xfb43, 0, 0, 1, f(No, false, "ףּ")}, - {0xfb44, 0, 0, 1, f(No, false, "פּ")}, - {0xfb45, 0, 0, 0, f(Yes, false, "")}, - {0xfb46, 0, 0, 1, f(No, false, "צּ")}, - {0xfb47, 0, 0, 1, f(No, false, "קּ")}, - {0xfb48, 0, 0, 1, f(No, false, "רּ")}, - {0xfb49, 0, 0, 1, f(No, false, "שּ")}, - {0xfb4a, 0, 0, 1, f(No, false, "תּ")}, - {0xfb4b, 0, 0, 1, f(No, false, "וֹ")}, - {0xfb4c, 0, 0, 1, f(No, false, "בֿ")}, - {0xfb4d, 0, 0, 1, f(No, false, "כֿ")}, - {0xfb4e, 0, 0, 1, f(No, false, "פֿ")}, - {0xfb4f, 0, 0, 0, g(Yes, No, false, false, "", "אל")}, - {0xfb50, 0, 0, 0, g(Yes, No, false, false, "", "ٱ")}, - {0xfb52, 0, 0, 0, g(Yes, No, false, false, "", "ٻ")}, - {0xfb56, 0, 0, 0, g(Yes, No, false, false, "", "پ")}, - {0xfb5a, 0, 0, 0, g(Yes, No, false, false, "", "ڀ")}, - {0xfb5e, 0, 0, 0, g(Yes, No, false, false, "", "ٺ")}, - {0xfb62, 0, 0, 0, g(Yes, No, false, false, "", "ٿ")}, - {0xfb66, 0, 0, 0, g(Yes, No, false, false, "", "ٹ")}, - {0xfb6a, 0, 0, 0, g(Yes, No, false, false, "", "ڤ")}, - {0xfb6e, 0, 0, 0, g(Yes, No, false, false, "", "ڦ")}, - {0xfb72, 0, 0, 0, g(Yes, No, false, false, "", "ڄ")}, - {0xfb76, 0, 0, 0, g(Yes, No, false, false, "", "ڃ")}, - {0xfb7a, 0, 0, 0, g(Yes, No, false, false, "", "چ")}, - {0xfb7e, 0, 0, 0, g(Yes, No, false, false, "", "ڇ")}, - {0xfb82, 0, 0, 0, g(Yes, No, false, false, "", "ڍ")}, - {0xfb84, 0, 0, 0, g(Yes, No, false, false, "", "ڌ")}, - {0xfb86, 0, 0, 0, g(Yes, No, false, false, "", "ڎ")}, - {0xfb88, 0, 0, 0, g(Yes, No, false, false, "", "ڈ")}, - {0xfb8a, 0, 0, 0, g(Yes, No, false, false, "", "ژ")}, - {0xfb8c, 0, 0, 0, g(Yes, No, false, false, "", "ڑ")}, - {0xfb8e, 0, 0, 0, g(Yes, No, false, false, "", "ک")}, - {0xfb92, 0, 0, 0, g(Yes, No, false, false, "", "گ")}, - {0xfb96, 0, 0, 0, g(Yes, No, false, false, "", "ڳ")}, - {0xfb9a, 0, 0, 0, g(Yes, No, false, false, "", "ڱ")}, - {0xfb9e, 0, 0, 0, g(Yes, No, false, false, "", "ں")}, - {0xfba0, 0, 0, 0, g(Yes, No, false, false, "", "ڻ")}, - {0xfba4, 0, 0, 1, g(Yes, No, false, false, "", "ۀ")}, - {0xfba6, 0, 0, 0, g(Yes, No, false, false, "", "ہ")}, - {0xfbaa, 0, 0, 0, g(Yes, No, false, false, "", "ھ")}, - {0xfbae, 0, 0, 0, g(Yes, No, false, false, "", "ے")}, - {0xfbb0, 0, 0, 1, g(Yes, No, false, false, "", "ۓ")}, - {0xfbb2, 0, 0, 0, f(Yes, false, "")}, - {0xfbd3, 0, 0, 0, g(Yes, No, false, false, "", "ڭ")}, - {0xfbd7, 0, 0, 0, g(Yes, No, false, false, "", "ۇ")}, - {0xfbd9, 0, 0, 0, g(Yes, No, false, false, "", "ۆ")}, - {0xfbdb, 0, 0, 0, g(Yes, No, false, false, "", "ۈ")}, - {0xfbdd, 0, 0, 0, g(Yes, No, false, false, "", "ۇٴ")}, - {0xfbde, 0, 0, 0, g(Yes, No, false, false, "", "ۋ")}, - {0xfbe0, 0, 0, 0, g(Yes, No, false, false, "", "ۅ")}, - {0xfbe2, 0, 0, 0, g(Yes, No, false, false, "", "ۉ")}, - {0xfbe4, 0, 0, 0, g(Yes, No, false, false, "", "ې")}, - {0xfbe8, 0, 0, 0, g(Yes, No, false, false, "", "ى")}, - {0xfbea, 0, 0, 0, g(Yes, No, false, false, "", "ئا")}, - {0xfbec, 0, 0, 0, g(Yes, No, false, false, "", "ئە")}, - {0xfbee, 0, 0, 0, g(Yes, No, false, false, "", "ئو")}, - {0xfbf0, 0, 0, 0, g(Yes, No, false, false, "", "ئۇ")}, - {0xfbf2, 0, 0, 0, g(Yes, No, false, false, "", "ئۆ")}, - {0xfbf4, 0, 0, 0, g(Yes, No, false, false, "", "ئۈ")}, - {0xfbf6, 0, 0, 0, g(Yes, No, false, false, "", "ئې")}, - {0xfbf9, 0, 0, 0, g(Yes, No, false, false, "", "ئى")}, - {0xfbfc, 0, 0, 0, g(Yes, No, false, false, "", "ی")}, - {0xfc00, 0, 0, 0, g(Yes, No, false, false, "", "ئج")}, - {0xfc01, 0, 0, 0, g(Yes, No, false, false, "", "ئح")}, - {0xfc02, 0, 0, 0, g(Yes, No, false, false, "", "ئم")}, - {0xfc03, 0, 0, 0, g(Yes, No, false, false, "", "ئى")}, - {0xfc04, 0, 0, 0, g(Yes, No, false, false, "", "ئي")}, - {0xfc05, 0, 0, 0, g(Yes, No, false, false, "", "بج")}, - {0xfc06, 0, 0, 0, g(Yes, No, false, false, "", "بح")}, - {0xfc07, 0, 0, 0, g(Yes, No, false, false, "", "بخ")}, - {0xfc08, 0, 0, 0, g(Yes, No, false, false, "", "بم")}, - {0xfc09, 0, 0, 0, g(Yes, No, false, false, "", "بى")}, - {0xfc0a, 0, 0, 0, g(Yes, No, false, false, "", "بي")}, - {0xfc0b, 0, 0, 0, g(Yes, No, false, false, "", "تج")}, - {0xfc0c, 0, 0, 0, g(Yes, No, false, false, "", "تح")}, - {0xfc0d, 0, 0, 0, g(Yes, No, false, false, "", "تخ")}, - {0xfc0e, 0, 0, 0, g(Yes, No, false, false, "", "تم")}, - {0xfc0f, 0, 0, 0, g(Yes, No, false, false, "", "تى")}, - {0xfc10, 0, 0, 0, g(Yes, No, false, false, "", "تي")}, - {0xfc11, 0, 0, 0, g(Yes, No, false, false, "", "ثج")}, - {0xfc12, 0, 0, 0, g(Yes, No, false, false, "", "ثم")}, - {0xfc13, 0, 0, 0, g(Yes, No, false, false, "", "ثى")}, - {0xfc14, 0, 0, 0, g(Yes, No, false, false, "", "ثي")}, - {0xfc15, 0, 0, 0, g(Yes, No, false, false, "", "جح")}, - {0xfc16, 0, 0, 0, g(Yes, No, false, false, "", "جم")}, - {0xfc17, 0, 0, 0, g(Yes, No, false, false, "", "حج")}, - {0xfc18, 0, 0, 0, g(Yes, No, false, false, "", "حم")}, - {0xfc19, 0, 0, 0, g(Yes, No, false, false, "", "خج")}, - {0xfc1a, 0, 0, 0, g(Yes, No, false, false, "", "خح")}, - {0xfc1b, 0, 0, 0, g(Yes, No, false, false, "", "خم")}, - {0xfc1c, 0, 0, 0, g(Yes, No, false, false, "", "سج")}, - {0xfc1d, 0, 0, 0, g(Yes, No, false, false, "", "سح")}, - {0xfc1e, 0, 0, 0, g(Yes, No, false, false, "", "سخ")}, - {0xfc1f, 0, 0, 0, g(Yes, No, false, false, "", "سم")}, - {0xfc20, 0, 0, 0, g(Yes, No, false, false, "", "صح")}, - {0xfc21, 0, 0, 0, g(Yes, No, false, false, "", "صم")}, - {0xfc22, 0, 0, 0, g(Yes, No, false, false, "", "ضج")}, - {0xfc23, 0, 0, 0, g(Yes, No, false, false, "", "ضح")}, - {0xfc24, 0, 0, 0, g(Yes, No, false, false, "", "ضخ")}, - {0xfc25, 0, 0, 0, g(Yes, No, false, false, "", "ضم")}, - {0xfc26, 0, 0, 0, g(Yes, No, false, false, "", "طح")}, - {0xfc27, 0, 0, 0, g(Yes, No, false, false, "", "طم")}, - {0xfc28, 0, 0, 0, g(Yes, No, false, false, "", "ظم")}, - {0xfc29, 0, 0, 0, g(Yes, No, false, false, "", "عج")}, - {0xfc2a, 0, 0, 0, g(Yes, No, false, false, "", "عم")}, - {0xfc2b, 0, 0, 0, g(Yes, No, false, false, "", "غج")}, - {0xfc2c, 0, 0, 0, g(Yes, No, false, false, "", "غم")}, - {0xfc2d, 0, 0, 0, g(Yes, No, false, false, "", "فج")}, - {0xfc2e, 0, 0, 0, g(Yes, No, false, false, "", "فح")}, - {0xfc2f, 0, 0, 0, g(Yes, No, false, false, "", "فخ")}, - {0xfc30, 0, 0, 0, g(Yes, No, false, false, "", "فم")}, - {0xfc31, 0, 0, 0, g(Yes, No, false, false, "", "فى")}, - {0xfc32, 0, 0, 0, g(Yes, No, false, false, "", "في")}, - {0xfc33, 0, 0, 0, g(Yes, No, false, false, "", "قح")}, - {0xfc34, 0, 0, 0, g(Yes, No, false, false, "", "قم")}, - {0xfc35, 0, 0, 0, g(Yes, No, false, false, "", "قى")}, - {0xfc36, 0, 0, 0, g(Yes, No, false, false, "", "قي")}, - {0xfc37, 0, 0, 0, g(Yes, No, false, false, "", "كا")}, - {0xfc38, 0, 0, 0, g(Yes, No, false, false, "", "كج")}, - {0xfc39, 0, 0, 0, g(Yes, No, false, false, "", "كح")}, - {0xfc3a, 0, 0, 0, g(Yes, No, false, false, "", "كخ")}, - {0xfc3b, 0, 0, 0, g(Yes, No, false, false, "", "كل")}, - {0xfc3c, 0, 0, 0, g(Yes, No, false, false, "", "كم")}, - {0xfc3d, 0, 0, 0, g(Yes, No, false, false, "", "كى")}, - {0xfc3e, 0, 0, 0, g(Yes, No, false, false, "", "كي")}, - {0xfc3f, 0, 0, 0, g(Yes, No, false, false, "", "لج")}, - {0xfc40, 0, 0, 0, g(Yes, No, false, false, "", "لح")}, - {0xfc41, 0, 0, 0, g(Yes, No, false, false, "", "لخ")}, - {0xfc42, 0, 0, 0, g(Yes, No, false, false, "", "لم")}, - {0xfc43, 0, 0, 0, g(Yes, No, false, false, "", "لى")}, - {0xfc44, 0, 0, 0, g(Yes, No, false, false, "", "لي")}, - {0xfc45, 0, 0, 0, g(Yes, No, false, false, "", "مج")}, - {0xfc46, 0, 0, 0, g(Yes, No, false, false, "", "مح")}, - {0xfc47, 0, 0, 0, g(Yes, No, false, false, "", "مخ")}, - {0xfc48, 0, 0, 0, g(Yes, No, false, false, "", "مم")}, - {0xfc49, 0, 0, 0, g(Yes, No, false, false, "", "مى")}, - {0xfc4a, 0, 0, 0, g(Yes, No, false, false, "", "مي")}, - {0xfc4b, 0, 0, 0, g(Yes, No, false, false, "", "نج")}, - {0xfc4c, 0, 0, 0, g(Yes, No, false, false, "", "نح")}, - {0xfc4d, 0, 0, 0, g(Yes, No, false, false, "", "نخ")}, - {0xfc4e, 0, 0, 0, g(Yes, No, false, false, "", "نم")}, - {0xfc4f, 0, 0, 0, g(Yes, No, false, false, "", "نى")}, - {0xfc50, 0, 0, 0, g(Yes, No, false, false, "", "ني")}, - {0xfc51, 0, 0, 0, g(Yes, No, false, false, "", "هج")}, - {0xfc52, 0, 0, 0, g(Yes, No, false, false, "", "هم")}, - {0xfc53, 0, 0, 0, g(Yes, No, false, false, "", "هى")}, - {0xfc54, 0, 0, 0, g(Yes, No, false, false, "", "هي")}, - {0xfc55, 0, 0, 0, g(Yes, No, false, false, "", "يج")}, - {0xfc56, 0, 0, 0, g(Yes, No, false, false, "", "يح")}, - {0xfc57, 0, 0, 0, g(Yes, No, false, false, "", "يخ")}, - {0xfc58, 0, 0, 0, g(Yes, No, false, false, "", "يم")}, - {0xfc59, 0, 0, 0, g(Yes, No, false, false, "", "يى")}, - {0xfc5a, 0, 0, 0, g(Yes, No, false, false, "", "يي")}, - {0xfc5b, 0, 0, 1, g(Yes, No, false, false, "", "ذٰ")}, - {0xfc5c, 0, 0, 1, g(Yes, No, false, false, "", "رٰ")}, - {0xfc5d, 0, 0, 1, g(Yes, No, false, false, "", "ىٰ")}, - {0xfc5e, 0, 0, 2, g(Yes, No, false, false, "", " ٌّ")}, - {0xfc5f, 0, 0, 2, g(Yes, No, false, false, "", " ٍّ")}, - {0xfc60, 0, 0, 2, g(Yes, No, false, false, "", " َّ")}, - {0xfc61, 0, 0, 2, g(Yes, No, false, false, "", " ُّ")}, - {0xfc62, 0, 0, 2, g(Yes, No, false, false, "", " ِّ")}, - {0xfc63, 0, 0, 2, g(Yes, No, false, false, "", " ّٰ")}, - {0xfc64, 0, 0, 0, g(Yes, No, false, false, "", "ئر")}, - {0xfc65, 0, 0, 0, g(Yes, No, false, false, "", "ئز")}, - {0xfc66, 0, 0, 0, g(Yes, No, false, false, "", "ئم")}, - {0xfc67, 0, 0, 0, g(Yes, No, false, false, "", "ئن")}, - {0xfc68, 0, 0, 0, g(Yes, No, false, false, "", "ئى")}, - {0xfc69, 0, 0, 0, g(Yes, No, false, false, "", "ئي")}, - {0xfc6a, 0, 0, 0, g(Yes, No, false, false, "", "بر")}, - {0xfc6b, 0, 0, 0, g(Yes, No, false, false, "", "بز")}, - {0xfc6c, 0, 0, 0, g(Yes, No, false, false, "", "بم")}, - {0xfc6d, 0, 0, 0, g(Yes, No, false, false, "", "بن")}, - {0xfc6e, 0, 0, 0, g(Yes, No, false, false, "", "بى")}, - {0xfc6f, 0, 0, 0, g(Yes, No, false, false, "", "بي")}, - {0xfc70, 0, 0, 0, g(Yes, No, false, false, "", "تر")}, - {0xfc71, 0, 0, 0, g(Yes, No, false, false, "", "تز")}, - {0xfc72, 0, 0, 0, g(Yes, No, false, false, "", "تم")}, - {0xfc73, 0, 0, 0, g(Yes, No, false, false, "", "تن")}, - {0xfc74, 0, 0, 0, g(Yes, No, false, false, "", "تى")}, - {0xfc75, 0, 0, 0, g(Yes, No, false, false, "", "تي")}, - {0xfc76, 0, 0, 0, g(Yes, No, false, false, "", "ثر")}, - {0xfc77, 0, 0, 0, g(Yes, No, false, false, "", "ثز")}, - {0xfc78, 0, 0, 0, g(Yes, No, false, false, "", "ثم")}, - {0xfc79, 0, 0, 0, g(Yes, No, false, false, "", "ثن")}, - {0xfc7a, 0, 0, 0, g(Yes, No, false, false, "", "ثى")}, - {0xfc7b, 0, 0, 0, g(Yes, No, false, false, "", "ثي")}, - {0xfc7c, 0, 0, 0, g(Yes, No, false, false, "", "فى")}, - {0xfc7d, 0, 0, 0, g(Yes, No, false, false, "", "في")}, - {0xfc7e, 0, 0, 0, g(Yes, No, false, false, "", "قى")}, - {0xfc7f, 0, 0, 0, g(Yes, No, false, false, "", "قي")}, - {0xfc80, 0, 0, 0, g(Yes, No, false, false, "", "كا")}, - {0xfc81, 0, 0, 0, g(Yes, No, false, false, "", "كل")}, - {0xfc82, 0, 0, 0, g(Yes, No, false, false, "", "كم")}, - {0xfc83, 0, 0, 0, g(Yes, No, false, false, "", "كى")}, - {0xfc84, 0, 0, 0, g(Yes, No, false, false, "", "كي")}, - {0xfc85, 0, 0, 0, g(Yes, No, false, false, "", "لم")}, - {0xfc86, 0, 0, 0, g(Yes, No, false, false, "", "لى")}, - {0xfc87, 0, 0, 0, g(Yes, No, false, false, "", "لي")}, - {0xfc88, 0, 0, 0, g(Yes, No, false, false, "", "ما")}, - {0xfc89, 0, 0, 0, g(Yes, No, false, false, "", "مم")}, - {0xfc8a, 0, 0, 0, g(Yes, No, false, false, "", "نر")}, - {0xfc8b, 0, 0, 0, g(Yes, No, false, false, "", "نز")}, - {0xfc8c, 0, 0, 0, g(Yes, No, false, false, "", "نم")}, - {0xfc8d, 0, 0, 0, g(Yes, No, false, false, "", "نن")}, - {0xfc8e, 0, 0, 0, g(Yes, No, false, false, "", "نى")}, - {0xfc8f, 0, 0, 0, g(Yes, No, false, false, "", "ني")}, - {0xfc90, 0, 0, 1, g(Yes, No, false, false, "", "ىٰ")}, - {0xfc91, 0, 0, 0, g(Yes, No, false, false, "", "ير")}, - {0xfc92, 0, 0, 0, g(Yes, No, false, false, "", "يز")}, - {0xfc93, 0, 0, 0, g(Yes, No, false, false, "", "يم")}, - {0xfc94, 0, 0, 0, g(Yes, No, false, false, "", "ين")}, - {0xfc95, 0, 0, 0, g(Yes, No, false, false, "", "يى")}, - {0xfc96, 0, 0, 0, g(Yes, No, false, false, "", "يي")}, - {0xfc97, 0, 0, 0, g(Yes, No, false, false, "", "ئج")}, - {0xfc98, 0, 0, 0, g(Yes, No, false, false, "", "ئح")}, - {0xfc99, 0, 0, 0, g(Yes, No, false, false, "", "ئخ")}, - {0xfc9a, 0, 0, 0, g(Yes, No, false, false, "", "ئم")}, - {0xfc9b, 0, 0, 0, g(Yes, No, false, false, "", "ئه")}, - {0xfc9c, 0, 0, 0, g(Yes, No, false, false, "", "بج")}, - {0xfc9d, 0, 0, 0, g(Yes, No, false, false, "", "بح")}, - {0xfc9e, 0, 0, 0, g(Yes, No, false, false, "", "بخ")}, - {0xfc9f, 0, 0, 0, g(Yes, No, false, false, "", "بم")}, - {0xfca0, 0, 0, 0, g(Yes, No, false, false, "", "به")}, - {0xfca1, 0, 0, 0, g(Yes, No, false, false, "", "تج")}, - {0xfca2, 0, 0, 0, g(Yes, No, false, false, "", "تح")}, - {0xfca3, 0, 0, 0, g(Yes, No, false, false, "", "تخ")}, - {0xfca4, 0, 0, 0, g(Yes, No, false, false, "", "تم")}, - {0xfca5, 0, 0, 0, g(Yes, No, false, false, "", "ته")}, - {0xfca6, 0, 0, 0, g(Yes, No, false, false, "", "ثم")}, - {0xfca7, 0, 0, 0, g(Yes, No, false, false, "", "جح")}, - {0xfca8, 0, 0, 0, g(Yes, No, false, false, "", "جم")}, - {0xfca9, 0, 0, 0, g(Yes, No, false, false, "", "حج")}, - {0xfcaa, 0, 0, 0, g(Yes, No, false, false, "", "حم")}, - {0xfcab, 0, 0, 0, g(Yes, No, false, false, "", "خج")}, - {0xfcac, 0, 0, 0, g(Yes, No, false, false, "", "خم")}, - {0xfcad, 0, 0, 0, g(Yes, No, false, false, "", "سج")}, - {0xfcae, 0, 0, 0, g(Yes, No, false, false, "", "سح")}, - {0xfcaf, 0, 0, 0, g(Yes, No, false, false, "", "سخ")}, - {0xfcb0, 0, 0, 0, g(Yes, No, false, false, "", "سم")}, - {0xfcb1, 0, 0, 0, g(Yes, No, false, false, "", "صح")}, - {0xfcb2, 0, 0, 0, g(Yes, No, false, false, "", "صخ")}, - {0xfcb3, 0, 0, 0, g(Yes, No, false, false, "", "صم")}, - {0xfcb4, 0, 0, 0, g(Yes, No, false, false, "", "ضج")}, - {0xfcb5, 0, 0, 0, g(Yes, No, false, false, "", "ضح")}, - {0xfcb6, 0, 0, 0, g(Yes, No, false, false, "", "ضخ")}, - {0xfcb7, 0, 0, 0, g(Yes, No, false, false, "", "ضم")}, - {0xfcb8, 0, 0, 0, g(Yes, No, false, false, "", "طح")}, - {0xfcb9, 0, 0, 0, g(Yes, No, false, false, "", "ظم")}, - {0xfcba, 0, 0, 0, g(Yes, No, false, false, "", "عج")}, - {0xfcbb, 0, 0, 0, g(Yes, No, false, false, "", "عم")}, - {0xfcbc, 0, 0, 0, g(Yes, No, false, false, "", "غج")}, - {0xfcbd, 0, 0, 0, g(Yes, No, false, false, "", "غم")}, - {0xfcbe, 0, 0, 0, g(Yes, No, false, false, "", "فج")}, - {0xfcbf, 0, 0, 0, g(Yes, No, false, false, "", "فح")}, - {0xfcc0, 0, 0, 0, g(Yes, No, false, false, "", "فخ")}, - {0xfcc1, 0, 0, 0, g(Yes, No, false, false, "", "فم")}, - {0xfcc2, 0, 0, 0, g(Yes, No, false, false, "", "قح")}, - {0xfcc3, 0, 0, 0, g(Yes, No, false, false, "", "قم")}, - {0xfcc4, 0, 0, 0, g(Yes, No, false, false, "", "كج")}, - {0xfcc5, 0, 0, 0, g(Yes, No, false, false, "", "كح")}, - {0xfcc6, 0, 0, 0, g(Yes, No, false, false, "", "كخ")}, - {0xfcc7, 0, 0, 0, g(Yes, No, false, false, "", "كل")}, - {0xfcc8, 0, 0, 0, g(Yes, No, false, false, "", "كم")}, - {0xfcc9, 0, 0, 0, g(Yes, No, false, false, "", "لج")}, - {0xfcca, 0, 0, 0, g(Yes, No, false, false, "", "لح")}, - {0xfccb, 0, 0, 0, g(Yes, No, false, false, "", "لخ")}, - {0xfccc, 0, 0, 0, g(Yes, No, false, false, "", "لم")}, - {0xfccd, 0, 0, 0, g(Yes, No, false, false, "", "له")}, - {0xfcce, 0, 0, 0, g(Yes, No, false, false, "", "مج")}, - {0xfccf, 0, 0, 0, g(Yes, No, false, false, "", "مح")}, - {0xfcd0, 0, 0, 0, g(Yes, No, false, false, "", "مخ")}, - {0xfcd1, 0, 0, 0, g(Yes, No, false, false, "", "مم")}, - {0xfcd2, 0, 0, 0, g(Yes, No, false, false, "", "نج")}, - {0xfcd3, 0, 0, 0, g(Yes, No, false, false, "", "نح")}, - {0xfcd4, 0, 0, 0, g(Yes, No, false, false, "", "نخ")}, - {0xfcd5, 0, 0, 0, g(Yes, No, false, false, "", "نم")}, - {0xfcd6, 0, 0, 0, g(Yes, No, false, false, "", "نه")}, - {0xfcd7, 0, 0, 0, g(Yes, No, false, false, "", "هج")}, - {0xfcd8, 0, 0, 0, g(Yes, No, false, false, "", "هم")}, - {0xfcd9, 0, 0, 1, g(Yes, No, false, false, "", "هٰ")}, - {0xfcda, 0, 0, 0, g(Yes, No, false, false, "", "يج")}, - {0xfcdb, 0, 0, 0, g(Yes, No, false, false, "", "يح")}, - {0xfcdc, 0, 0, 0, g(Yes, No, false, false, "", "يخ")}, - {0xfcdd, 0, 0, 0, g(Yes, No, false, false, "", "يم")}, - {0xfcde, 0, 0, 0, g(Yes, No, false, false, "", "يه")}, - {0xfcdf, 0, 0, 0, g(Yes, No, false, false, "", "ئم")}, - {0xfce0, 0, 0, 0, g(Yes, No, false, false, "", "ئه")}, - {0xfce1, 0, 0, 0, g(Yes, No, false, false, "", "بم")}, - {0xfce2, 0, 0, 0, g(Yes, No, false, false, "", "به")}, - {0xfce3, 0, 0, 0, g(Yes, No, false, false, "", "تم")}, - {0xfce4, 0, 0, 0, g(Yes, No, false, false, "", "ته")}, - {0xfce5, 0, 0, 0, g(Yes, No, false, false, "", "ثم")}, - {0xfce6, 0, 0, 0, g(Yes, No, false, false, "", "ثه")}, - {0xfce7, 0, 0, 0, g(Yes, No, false, false, "", "سم")}, - {0xfce8, 0, 0, 0, g(Yes, No, false, false, "", "سه")}, - {0xfce9, 0, 0, 0, g(Yes, No, false, false, "", "شم")}, - {0xfcea, 0, 0, 0, g(Yes, No, false, false, "", "شه")}, - {0xfceb, 0, 0, 0, g(Yes, No, false, false, "", "كل")}, - {0xfcec, 0, 0, 0, g(Yes, No, false, false, "", "كم")}, - {0xfced, 0, 0, 0, g(Yes, No, false, false, "", "لم")}, - {0xfcee, 0, 0, 0, g(Yes, No, false, false, "", "نم")}, - {0xfcef, 0, 0, 0, g(Yes, No, false, false, "", "نه")}, - {0xfcf0, 0, 0, 0, g(Yes, No, false, false, "", "يم")}, - {0xfcf1, 0, 0, 0, g(Yes, No, false, false, "", "يه")}, - {0xfcf2, 0, 0, 2, g(Yes, No, false, false, "", "ـَّ")}, - {0xfcf3, 0, 0, 2, g(Yes, No, false, false, "", "ـُّ")}, - {0xfcf4, 0, 0, 2, g(Yes, No, false, false, "", "ـِّ")}, - {0xfcf5, 0, 0, 0, g(Yes, No, false, false, "", "طى")}, - {0xfcf6, 0, 0, 0, g(Yes, No, false, false, "", "طي")}, - {0xfcf7, 0, 0, 0, g(Yes, No, false, false, "", "عى")}, - {0xfcf8, 0, 0, 0, g(Yes, No, false, false, "", "عي")}, - {0xfcf9, 0, 0, 0, g(Yes, No, false, false, "", "غى")}, - {0xfcfa, 0, 0, 0, g(Yes, No, false, false, "", "غي")}, - {0xfcfb, 0, 0, 0, g(Yes, No, false, false, "", "سى")}, - {0xfcfc, 0, 0, 0, g(Yes, No, false, false, "", "سي")}, - {0xfcfd, 0, 0, 0, g(Yes, No, false, false, "", "شى")}, - {0xfcfe, 0, 0, 0, g(Yes, No, false, false, "", "شي")}, - {0xfcff, 0, 0, 0, g(Yes, No, false, false, "", "حى")}, - {0xfd00, 0, 0, 0, g(Yes, No, false, false, "", "حي")}, - {0xfd01, 0, 0, 0, g(Yes, No, false, false, "", "جى")}, - {0xfd02, 0, 0, 0, g(Yes, No, false, false, "", "جي")}, - {0xfd03, 0, 0, 0, g(Yes, No, false, false, "", "خى")}, - {0xfd04, 0, 0, 0, g(Yes, No, false, false, "", "خي")}, - {0xfd05, 0, 0, 0, g(Yes, No, false, false, "", "صى")}, - {0xfd06, 0, 0, 0, g(Yes, No, false, false, "", "صي")}, - {0xfd07, 0, 0, 0, g(Yes, No, false, false, "", "ضى")}, - {0xfd08, 0, 0, 0, g(Yes, No, false, false, "", "ضي")}, - {0xfd09, 0, 0, 0, g(Yes, No, false, false, "", "شج")}, - {0xfd0a, 0, 0, 0, g(Yes, No, false, false, "", "شح")}, - {0xfd0b, 0, 0, 0, g(Yes, No, false, false, "", "شخ")}, - {0xfd0c, 0, 0, 0, g(Yes, No, false, false, "", "شم")}, - {0xfd0d, 0, 0, 0, g(Yes, No, false, false, "", "شر")}, - {0xfd0e, 0, 0, 0, g(Yes, No, false, false, "", "سر")}, - {0xfd0f, 0, 0, 0, g(Yes, No, false, false, "", "صر")}, - {0xfd10, 0, 0, 0, g(Yes, No, false, false, "", "ضر")}, - {0xfd11, 0, 0, 0, g(Yes, No, false, false, "", "طى")}, - {0xfd12, 0, 0, 0, g(Yes, No, false, false, "", "طي")}, - {0xfd13, 0, 0, 0, g(Yes, No, false, false, "", "عى")}, - {0xfd14, 0, 0, 0, g(Yes, No, false, false, "", "عي")}, - {0xfd15, 0, 0, 0, g(Yes, No, false, false, "", "غى")}, - {0xfd16, 0, 0, 0, g(Yes, No, false, false, "", "غي")}, - {0xfd17, 0, 0, 0, g(Yes, No, false, false, "", "سى")}, - {0xfd18, 0, 0, 0, g(Yes, No, false, false, "", "سي")}, - {0xfd19, 0, 0, 0, g(Yes, No, false, false, "", "شى")}, - {0xfd1a, 0, 0, 0, g(Yes, No, false, false, "", "شي")}, - {0xfd1b, 0, 0, 0, g(Yes, No, false, false, "", "حى")}, - {0xfd1c, 0, 0, 0, g(Yes, No, false, false, "", "حي")}, - {0xfd1d, 0, 0, 0, g(Yes, No, false, false, "", "جى")}, - {0xfd1e, 0, 0, 0, g(Yes, No, false, false, "", "جي")}, - {0xfd1f, 0, 0, 0, g(Yes, No, false, false, "", "خى")}, - {0xfd20, 0, 0, 0, g(Yes, No, false, false, "", "خي")}, - {0xfd21, 0, 0, 0, g(Yes, No, false, false, "", "صى")}, - {0xfd22, 0, 0, 0, g(Yes, No, false, false, "", "صي")}, - {0xfd23, 0, 0, 0, g(Yes, No, false, false, "", "ضى")}, - {0xfd24, 0, 0, 0, g(Yes, No, false, false, "", "ضي")}, - {0xfd25, 0, 0, 0, g(Yes, No, false, false, "", "شج")}, - {0xfd26, 0, 0, 0, g(Yes, No, false, false, "", "شح")}, - {0xfd27, 0, 0, 0, g(Yes, No, false, false, "", "شخ")}, - {0xfd28, 0, 0, 0, g(Yes, No, false, false, "", "شم")}, - {0xfd29, 0, 0, 0, g(Yes, No, false, false, "", "شر")}, - {0xfd2a, 0, 0, 0, g(Yes, No, false, false, "", "سر")}, - {0xfd2b, 0, 0, 0, g(Yes, No, false, false, "", "صر")}, - {0xfd2c, 0, 0, 0, g(Yes, No, false, false, "", "ضر")}, - {0xfd2d, 0, 0, 0, g(Yes, No, false, false, "", "شج")}, - {0xfd2e, 0, 0, 0, g(Yes, No, false, false, "", "شح")}, - {0xfd2f, 0, 0, 0, g(Yes, No, false, false, "", "شخ")}, - {0xfd30, 0, 0, 0, g(Yes, No, false, false, "", "شم")}, - {0xfd31, 0, 0, 0, g(Yes, No, false, false, "", "سه")}, - {0xfd32, 0, 0, 0, g(Yes, No, false, false, "", "شه")}, - {0xfd33, 0, 0, 0, g(Yes, No, false, false, "", "طم")}, - {0xfd34, 0, 0, 0, g(Yes, No, false, false, "", "سج")}, - {0xfd35, 0, 0, 0, g(Yes, No, false, false, "", "سح")}, - {0xfd36, 0, 0, 0, g(Yes, No, false, false, "", "سخ")}, - {0xfd37, 0, 0, 0, g(Yes, No, false, false, "", "شج")}, - {0xfd38, 0, 0, 0, g(Yes, No, false, false, "", "شح")}, - {0xfd39, 0, 0, 0, g(Yes, No, false, false, "", "شخ")}, - {0xfd3a, 0, 0, 0, g(Yes, No, false, false, "", "طم")}, - {0xfd3b, 0, 0, 0, g(Yes, No, false, false, "", "ظم")}, - {0xfd3c, 0, 0, 1, g(Yes, No, false, false, "", "اً")}, - {0xfd3e, 0, 0, 0, f(Yes, false, "")}, - {0xfd50, 0, 0, 0, g(Yes, No, false, false, "", "تجم")}, - {0xfd51, 0, 0, 0, g(Yes, No, false, false, "", "تحج")}, - {0xfd53, 0, 0, 0, g(Yes, No, false, false, "", "تحم")}, - {0xfd54, 0, 0, 0, g(Yes, No, false, false, "", "تخم")}, - {0xfd55, 0, 0, 0, g(Yes, No, false, false, "", "تمج")}, - {0xfd56, 0, 0, 0, g(Yes, No, false, false, "", "تمح")}, - {0xfd57, 0, 0, 0, g(Yes, No, false, false, "", "تمخ")}, - {0xfd58, 0, 0, 0, g(Yes, No, false, false, "", "جمح")}, - {0xfd5a, 0, 0, 0, g(Yes, No, false, false, "", "حمي")}, - {0xfd5b, 0, 0, 0, g(Yes, No, false, false, "", "حمى")}, - {0xfd5c, 0, 0, 0, g(Yes, No, false, false, "", "سحج")}, - {0xfd5d, 0, 0, 0, g(Yes, No, false, false, "", "سجح")}, - {0xfd5e, 0, 0, 0, g(Yes, No, false, false, "", "سجى")}, - {0xfd5f, 0, 0, 0, g(Yes, No, false, false, "", "سمح")}, - {0xfd61, 0, 0, 0, g(Yes, No, false, false, "", "سمج")}, - {0xfd62, 0, 0, 0, g(Yes, No, false, false, "", "سمم")}, - {0xfd64, 0, 0, 0, g(Yes, No, false, false, "", "صحح")}, - {0xfd66, 0, 0, 0, g(Yes, No, false, false, "", "صمم")}, - {0xfd67, 0, 0, 0, g(Yes, No, false, false, "", "شحم")}, - {0xfd69, 0, 0, 0, g(Yes, No, false, false, "", "شجي")}, - {0xfd6a, 0, 0, 0, g(Yes, No, false, false, "", "شمخ")}, - {0xfd6c, 0, 0, 0, g(Yes, No, false, false, "", "شمم")}, - {0xfd6e, 0, 0, 0, g(Yes, No, false, false, "", "ضحى")}, - {0xfd6f, 0, 0, 0, g(Yes, No, false, false, "", "ضخم")}, - {0xfd71, 0, 0, 0, g(Yes, No, false, false, "", "طمح")}, - {0xfd73, 0, 0, 0, g(Yes, No, false, false, "", "طمم")}, - {0xfd74, 0, 0, 0, g(Yes, No, false, false, "", "طمي")}, - {0xfd75, 0, 0, 0, g(Yes, No, false, false, "", "عجم")}, - {0xfd76, 0, 0, 0, g(Yes, No, false, false, "", "عمم")}, - {0xfd78, 0, 0, 0, g(Yes, No, false, false, "", "عمى")}, - {0xfd79, 0, 0, 0, g(Yes, No, false, false, "", "غمم")}, - {0xfd7a, 0, 0, 0, g(Yes, No, false, false, "", "غمي")}, - {0xfd7b, 0, 0, 0, g(Yes, No, false, false, "", "غمى")}, - {0xfd7c, 0, 0, 0, g(Yes, No, false, false, "", "فخم")}, - {0xfd7e, 0, 0, 0, g(Yes, No, false, false, "", "قمح")}, - {0xfd7f, 0, 0, 0, g(Yes, No, false, false, "", "قمم")}, - {0xfd80, 0, 0, 0, g(Yes, No, false, false, "", "لحم")}, - {0xfd81, 0, 0, 0, g(Yes, No, false, false, "", "لحي")}, - {0xfd82, 0, 0, 0, g(Yes, No, false, false, "", "لحى")}, - {0xfd83, 0, 0, 0, g(Yes, No, false, false, "", "لجج")}, - {0xfd85, 0, 0, 0, g(Yes, No, false, false, "", "لخم")}, - {0xfd87, 0, 0, 0, g(Yes, No, false, false, "", "لمح")}, - {0xfd89, 0, 0, 0, g(Yes, No, false, false, "", "محج")}, - {0xfd8a, 0, 0, 0, g(Yes, No, false, false, "", "محم")}, - {0xfd8b, 0, 0, 0, g(Yes, No, false, false, "", "محي")}, - {0xfd8c, 0, 0, 0, g(Yes, No, false, false, "", "مجح")}, - {0xfd8d, 0, 0, 0, g(Yes, No, false, false, "", "مجم")}, - {0xfd8e, 0, 0, 0, g(Yes, No, false, false, "", "مخج")}, - {0xfd8f, 0, 0, 0, g(Yes, No, false, false, "", "مخم")}, - {0xfd90, 0, 0, 0, f(Yes, false, "")}, - {0xfd92, 0, 0, 0, g(Yes, No, false, false, "", "مجخ")}, - {0xfd93, 0, 0, 0, g(Yes, No, false, false, "", "همج")}, - {0xfd94, 0, 0, 0, g(Yes, No, false, false, "", "همم")}, - {0xfd95, 0, 0, 0, g(Yes, No, false, false, "", "نحم")}, - {0xfd96, 0, 0, 0, g(Yes, No, false, false, "", "نحى")}, - {0xfd97, 0, 0, 0, g(Yes, No, false, false, "", "نجم")}, - {0xfd99, 0, 0, 0, g(Yes, No, false, false, "", "نجى")}, - {0xfd9a, 0, 0, 0, g(Yes, No, false, false, "", "نمي")}, - {0xfd9b, 0, 0, 0, g(Yes, No, false, false, "", "نمى")}, - {0xfd9c, 0, 0, 0, g(Yes, No, false, false, "", "يمم")}, - {0xfd9e, 0, 0, 0, g(Yes, No, false, false, "", "بخي")}, - {0xfd9f, 0, 0, 0, g(Yes, No, false, false, "", "تجي")}, - {0xfda0, 0, 0, 0, g(Yes, No, false, false, "", "تجى")}, - {0xfda1, 0, 0, 0, g(Yes, No, false, false, "", "تخي")}, - {0xfda2, 0, 0, 0, g(Yes, No, false, false, "", "تخى")}, - {0xfda3, 0, 0, 0, g(Yes, No, false, false, "", "تمي")}, - {0xfda4, 0, 0, 0, g(Yes, No, false, false, "", "تمى")}, - {0xfda5, 0, 0, 0, g(Yes, No, false, false, "", "جمي")}, - {0xfda6, 0, 0, 0, g(Yes, No, false, false, "", "جحى")}, - {0xfda7, 0, 0, 0, g(Yes, No, false, false, "", "جمى")}, - {0xfda8, 0, 0, 0, g(Yes, No, false, false, "", "سخى")}, - {0xfda9, 0, 0, 0, g(Yes, No, false, false, "", "صحي")}, - {0xfdaa, 0, 0, 0, g(Yes, No, false, false, "", "شحي")}, - {0xfdab, 0, 0, 0, g(Yes, No, false, false, "", "ضحي")}, - {0xfdac, 0, 0, 0, g(Yes, No, false, false, "", "لجي")}, - {0xfdad, 0, 0, 0, g(Yes, No, false, false, "", "لمي")}, - {0xfdae, 0, 0, 0, g(Yes, No, false, false, "", "يحي")}, - {0xfdaf, 0, 0, 0, g(Yes, No, false, false, "", "يجي")}, - {0xfdb0, 0, 0, 0, g(Yes, No, false, false, "", "يمي")}, - {0xfdb1, 0, 0, 0, g(Yes, No, false, false, "", "ممي")}, - {0xfdb2, 0, 0, 0, g(Yes, No, false, false, "", "قمي")}, - {0xfdb3, 0, 0, 0, g(Yes, No, false, false, "", "نحي")}, - {0xfdb4, 0, 0, 0, g(Yes, No, false, false, "", "قمح")}, - {0xfdb5, 0, 0, 0, g(Yes, No, false, false, "", "لحم")}, - {0xfdb6, 0, 0, 0, g(Yes, No, false, false, "", "عمي")}, - {0xfdb7, 0, 0, 0, g(Yes, No, false, false, "", "كمي")}, - {0xfdb8, 0, 0, 0, g(Yes, No, false, false, "", "نجح")}, - {0xfdb9, 0, 0, 0, g(Yes, No, false, false, "", "مخي")}, - {0xfdba, 0, 0, 0, g(Yes, No, false, false, "", "لجم")}, - {0xfdbb, 0, 0, 0, g(Yes, No, false, false, "", "كمم")}, - {0xfdbc, 0, 0, 0, g(Yes, No, false, false, "", "لجم")}, - {0xfdbd, 0, 0, 0, g(Yes, No, false, false, "", "نجح")}, - {0xfdbe, 0, 0, 0, g(Yes, No, false, false, "", "جحي")}, - {0xfdbf, 0, 0, 0, g(Yes, No, false, false, "", "حجي")}, - {0xfdc0, 0, 0, 0, g(Yes, No, false, false, "", "مجي")}, - {0xfdc1, 0, 0, 0, g(Yes, No, false, false, "", "فمي")}, - {0xfdc2, 0, 0, 0, g(Yes, No, false, false, "", "بحي")}, - {0xfdc3, 0, 0, 0, g(Yes, No, false, false, "", "كمم")}, - {0xfdc4, 0, 0, 0, g(Yes, No, false, false, "", "عجم")}, - {0xfdc5, 0, 0, 0, g(Yes, No, false, false, "", "صمم")}, - {0xfdc6, 0, 0, 0, g(Yes, No, false, false, "", "سخي")}, - {0xfdc7, 0, 0, 0, g(Yes, No, false, false, "", "نجي")}, - {0xfdc8, 0, 0, 0, f(Yes, false, "")}, - {0xfdf0, 0, 0, 0, g(Yes, No, false, false, "", "صلے")}, - {0xfdf1, 0, 0, 0, g(Yes, No, false, false, "", "قلے")}, - {0xfdf2, 0, 0, 0, g(Yes, No, false, false, "", "الله")}, - {0xfdf3, 0, 0, 0, g(Yes, No, false, false, "", "اكبر")}, - {0xfdf4, 0, 0, 0, g(Yes, No, false, false, "", "محمد")}, - {0xfdf5, 0, 0, 0, g(Yes, No, false, false, "", "صلعم")}, - {0xfdf6, 0, 0, 0, g(Yes, No, false, false, "", "رسول")}, - {0xfdf7, 0, 0, 0, g(Yes, No, false, false, "", "عليه")}, - {0xfdf8, 0, 0, 0, g(Yes, No, false, false, "", "وسلم")}, - {0xfdf9, 0, 0, 0, g(Yes, No, false, false, "", "صلى")}, - {0xfdfa, 0, 0, 0, g(Yes, No, false, false, "", "صلى الله عليه وسلم")}, - {0xfdfb, 0, 0, 0, g(Yes, No, false, false, "", "جل جلاله")}, - {0xfdfc, 0, 0, 0, g(Yes, No, false, false, "", "ریال")}, - {0xfdfd, 0, 0, 0, f(Yes, false, "")}, - {0xfe10, 0, 0, 0, g(Yes, No, false, false, "", ",")}, - {0xfe11, 0, 0, 0, g(Yes, No, false, false, "", "、")}, - {0xfe12, 0, 0, 0, g(Yes, No, false, false, "", "。")}, - {0xfe13, 0, 0, 0, g(Yes, No, false, false, "", ":")}, - {0xfe14, 0, 0, 0, g(Yes, No, false, false, "", ";")}, - {0xfe15, 0, 0, 0, g(Yes, No, false, false, "", "!")}, - {0xfe16, 0, 0, 0, g(Yes, No, false, false, "", "?")}, - {0xfe17, 0, 0, 0, g(Yes, No, false, false, "", "〖")}, - {0xfe18, 0, 0, 0, g(Yes, No, false, false, "", "〗")}, - {0xfe19, 0, 0, 0, g(Yes, No, false, false, "", "...")}, - {0xfe1a, 0, 0, 0, f(Yes, false, "")}, - {0xfe20, 230, 1, 1, f(Yes, false, "")}, - {0xfe27, 220, 1, 1, f(Yes, false, "")}, - {0xfe2e, 230, 1, 1, f(Yes, false, "")}, - {0xfe30, 0, 0, 0, g(Yes, No, false, false, "", "..")}, - {0xfe31, 0, 0, 0, g(Yes, No, false, false, "", "—")}, - {0xfe32, 0, 0, 0, g(Yes, No, false, false, "", "–")}, - {0xfe33, 0, 0, 0, g(Yes, No, false, false, "", "_")}, - {0xfe35, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0xfe36, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0xfe37, 0, 0, 0, g(Yes, No, false, false, "", "{")}, - {0xfe38, 0, 0, 0, g(Yes, No, false, false, "", "}")}, - {0xfe39, 0, 0, 0, g(Yes, No, false, false, "", "〔")}, - {0xfe3a, 0, 0, 0, g(Yes, No, false, false, "", "〕")}, - {0xfe3b, 0, 0, 0, g(Yes, No, false, false, "", "【")}, - {0xfe3c, 0, 0, 0, g(Yes, No, false, false, "", "】")}, - {0xfe3d, 0, 0, 0, g(Yes, No, false, false, "", "《")}, - {0xfe3e, 0, 0, 0, g(Yes, No, false, false, "", "》")}, - {0xfe3f, 0, 0, 0, g(Yes, No, false, false, "", "〈")}, - {0xfe40, 0, 0, 0, g(Yes, No, false, false, "", "〉")}, - {0xfe41, 0, 0, 0, g(Yes, No, false, false, "", "「")}, - {0xfe42, 0, 0, 0, g(Yes, No, false, false, "", "」")}, - {0xfe43, 0, 0, 0, g(Yes, No, false, false, "", "『")}, - {0xfe44, 0, 0, 0, g(Yes, No, false, false, "", "』")}, - {0xfe45, 0, 0, 0, f(Yes, false, "")}, - {0xfe47, 0, 0, 0, g(Yes, No, false, false, "", "[")}, - {0xfe48, 0, 0, 0, g(Yes, No, false, false, "", "]")}, - {0xfe49, 0, 0, 1, g(Yes, No, false, false, "", " ̅")}, - {0xfe4d, 0, 0, 0, g(Yes, No, false, false, "", "_")}, - {0xfe50, 0, 0, 0, g(Yes, No, false, false, "", ",")}, - {0xfe51, 0, 0, 0, g(Yes, No, false, false, "", "、")}, - {0xfe52, 0, 0, 0, g(Yes, No, false, false, "", ".")}, - {0xfe53, 0, 0, 0, f(Yes, false, "")}, - {0xfe54, 0, 0, 0, g(Yes, No, false, false, "", ";")}, - {0xfe55, 0, 0, 0, g(Yes, No, false, false, "", ":")}, - {0xfe56, 0, 0, 0, g(Yes, No, false, false, "", "?")}, - {0xfe57, 0, 0, 0, g(Yes, No, false, false, "", "!")}, - {0xfe58, 0, 0, 0, g(Yes, No, false, false, "", "—")}, - {0xfe59, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0xfe5a, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0xfe5b, 0, 0, 0, g(Yes, No, false, false, "", "{")}, - {0xfe5c, 0, 0, 0, g(Yes, No, false, false, "", "}")}, - {0xfe5d, 0, 0, 0, g(Yes, No, false, false, "", "〔")}, - {0xfe5e, 0, 0, 0, g(Yes, No, false, false, "", "〕")}, - {0xfe5f, 0, 0, 0, g(Yes, No, false, false, "", "#")}, - {0xfe60, 0, 0, 0, g(Yes, No, false, false, "", "&")}, - {0xfe61, 0, 0, 0, g(Yes, No, false, false, "", "*")}, - {0xfe62, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0xfe63, 0, 0, 0, g(Yes, No, false, false, "", "-")}, - {0xfe64, 0, 0, 0, g(Yes, No, false, false, "", "<")}, - {0xfe65, 0, 0, 0, g(Yes, No, false, false, "", ">")}, - {0xfe66, 0, 0, 0, g(Yes, No, false, false, "", "=")}, - {0xfe67, 0, 0, 0, f(Yes, false, "")}, - {0xfe68, 0, 0, 0, g(Yes, No, false, false, "", "\\")}, - {0xfe69, 0, 0, 0, g(Yes, No, false, false, "", "$")}, - {0xfe6a, 0, 0, 0, g(Yes, No, false, false, "", "%")}, - {0xfe6b, 0, 0, 0, g(Yes, No, false, false, "", "@")}, - {0xfe6c, 0, 0, 0, f(Yes, false, "")}, - {0xfe70, 0, 0, 1, g(Yes, No, false, false, "", " ً")}, - {0xfe71, 0, 0, 1, g(Yes, No, false, false, "", "ـً")}, - {0xfe72, 0, 0, 1, g(Yes, No, false, false, "", " ٌ")}, - {0xfe73, 0, 0, 0, f(Yes, false, "")}, - {0xfe74, 0, 0, 1, g(Yes, No, false, false, "", " ٍ")}, - {0xfe75, 0, 0, 0, f(Yes, false, "")}, - {0xfe76, 0, 0, 1, g(Yes, No, false, false, "", " َ")}, - {0xfe77, 0, 0, 1, g(Yes, No, false, false, "", "ـَ")}, - {0xfe78, 0, 0, 1, g(Yes, No, false, false, "", " ُ")}, - {0xfe79, 0, 0, 1, g(Yes, No, false, false, "", "ـُ")}, - {0xfe7a, 0, 0, 1, g(Yes, No, false, false, "", " ِ")}, - {0xfe7b, 0, 0, 1, g(Yes, No, false, false, "", "ـِ")}, - {0xfe7c, 0, 0, 1, g(Yes, No, false, false, "", " ّ")}, - {0xfe7d, 0, 0, 1, g(Yes, No, false, false, "", "ـّ")}, - {0xfe7e, 0, 0, 1, g(Yes, No, false, false, "", " ْ")}, - {0xfe7f, 0, 0, 1, g(Yes, No, false, false, "", "ـْ")}, - {0xfe80, 0, 0, 0, g(Yes, No, false, false, "", "ء")}, - {0xfe81, 0, 0, 1, g(Yes, No, false, false, "", "آ")}, - {0xfe83, 0, 0, 1, g(Yes, No, false, false, "", "أ")}, - {0xfe85, 0, 0, 1, g(Yes, No, false, false, "", "ؤ")}, - {0xfe87, 0, 0, 1, g(Yes, No, false, false, "", "إ")}, - {0xfe89, 0, 0, 1, g(Yes, No, false, false, "", "ئ")}, - {0xfe8d, 0, 0, 0, g(Yes, No, false, false, "", "ا")}, - {0xfe8f, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0xfe93, 0, 0, 0, g(Yes, No, false, false, "", "ة")}, - {0xfe95, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0xfe99, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0xfe9d, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0xfea1, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0xfea5, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0xfea9, 0, 0, 0, g(Yes, No, false, false, "", "د")}, - {0xfeab, 0, 0, 0, g(Yes, No, false, false, "", "ذ")}, - {0xfead, 0, 0, 0, g(Yes, No, false, false, "", "ر")}, - {0xfeaf, 0, 0, 0, g(Yes, No, false, false, "", "ز")}, - {0xfeb1, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0xfeb5, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0xfeb9, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0xfebd, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0xfec1, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0xfec5, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0xfec9, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0xfecd, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0xfed1, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0xfed5, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0xfed9, 0, 0, 0, g(Yes, No, false, false, "", "ك")}, - {0xfedd, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0xfee1, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0xfee5, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0xfee9, 0, 0, 0, g(Yes, No, false, false, "", "ه")}, - {0xfeed, 0, 0, 0, g(Yes, No, false, false, "", "و")}, - {0xfeef, 0, 0, 0, g(Yes, No, false, false, "", "ى")}, - {0xfef1, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0xfef5, 0, 0, 1, g(Yes, No, false, false, "", "لآ")}, - {0xfef7, 0, 0, 1, g(Yes, No, false, false, "", "لأ")}, - {0xfef9, 0, 0, 1, g(Yes, No, false, false, "", "لإ")}, - {0xfefb, 0, 0, 0, g(Yes, No, false, false, "", "لا")}, - {0xfefd, 0, 0, 0, f(Yes, false, "")}, - {0xff01, 0, 0, 0, g(Yes, No, false, false, "", "!")}, - {0xff02, 0, 0, 0, g(Yes, No, false, false, "", "\"")}, - {0xff03, 0, 0, 0, g(Yes, No, false, false, "", "#")}, - {0xff04, 0, 0, 0, g(Yes, No, false, false, "", "$")}, - {0xff05, 0, 0, 0, g(Yes, No, false, false, "", "%")}, - {0xff06, 0, 0, 0, g(Yes, No, false, false, "", "&")}, - {0xff07, 0, 0, 0, g(Yes, No, false, false, "", "'")}, - {0xff08, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0xff09, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0xff0a, 0, 0, 0, g(Yes, No, false, false, "", "*")}, - {0xff0b, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0xff0c, 0, 0, 0, g(Yes, No, false, false, "", ",")}, - {0xff0d, 0, 0, 0, g(Yes, No, false, false, "", "-")}, - {0xff0e, 0, 0, 0, g(Yes, No, false, false, "", ".")}, - {0xff0f, 0, 0, 0, g(Yes, No, false, false, "", "/")}, - {0xff10, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0xff11, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0xff12, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0xff13, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0xff14, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0xff15, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0xff16, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0xff17, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0xff18, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0xff19, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0xff1a, 0, 0, 0, g(Yes, No, false, false, "", ":")}, - {0xff1b, 0, 0, 0, g(Yes, No, false, false, "", ";")}, - {0xff1c, 0, 0, 0, g(Yes, No, false, false, "", "<")}, - {0xff1d, 0, 0, 0, g(Yes, No, false, false, "", "=")}, - {0xff1e, 0, 0, 0, g(Yes, No, false, false, "", ">")}, - {0xff1f, 0, 0, 0, g(Yes, No, false, false, "", "?")}, - {0xff20, 0, 0, 0, g(Yes, No, false, false, "", "@")}, - {0xff21, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0xff22, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0xff23, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0xff24, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0xff25, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0xff26, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0xff27, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0xff28, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0xff29, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0xff2a, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0xff2b, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0xff2c, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0xff2d, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0xff2e, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0xff2f, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0xff30, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0xff31, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0xff32, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0xff33, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0xff34, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0xff35, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0xff36, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0xff37, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0xff38, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0xff39, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0xff3a, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0xff3b, 0, 0, 0, g(Yes, No, false, false, "", "[")}, - {0xff3c, 0, 0, 0, g(Yes, No, false, false, "", "\\")}, - {0xff3d, 0, 0, 0, g(Yes, No, false, false, "", "]")}, - {0xff3e, 0, 0, 0, g(Yes, No, false, false, "", "^")}, - {0xff3f, 0, 0, 0, g(Yes, No, false, false, "", "_")}, - {0xff40, 0, 0, 0, g(Yes, No, false, false, "", "`")}, - {0xff41, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0xff42, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0xff43, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0xff44, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0xff45, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0xff46, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0xff47, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0xff48, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0xff49, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0xff4a, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0xff4b, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0xff4c, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0xff4d, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0xff4e, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0xff4f, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0xff50, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0xff51, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0xff52, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0xff53, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0xff54, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0xff55, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0xff56, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0xff57, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0xff58, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0xff59, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0xff5a, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0xff5b, 0, 0, 0, g(Yes, No, false, false, "", "{")}, - {0xff5c, 0, 0, 0, g(Yes, No, false, false, "", "|")}, - {0xff5d, 0, 0, 0, g(Yes, No, false, false, "", "}")}, - {0xff5e, 0, 0, 0, g(Yes, No, false, false, "", "~")}, - {0xff5f, 0, 0, 0, g(Yes, No, false, false, "", "⦅")}, - {0xff60, 0, 0, 0, g(Yes, No, false, false, "", "⦆")}, - {0xff61, 0, 0, 0, g(Yes, No, false, false, "", "。")}, - {0xff62, 0, 0, 0, g(Yes, No, false, false, "", "「")}, - {0xff63, 0, 0, 0, g(Yes, No, false, false, "", "」")}, - {0xff64, 0, 0, 0, g(Yes, No, false, false, "", "、")}, - {0xff65, 0, 0, 0, g(Yes, No, false, false, "", "・")}, - {0xff66, 0, 0, 0, g(Yes, No, false, false, "", "ヲ")}, - {0xff67, 0, 0, 0, g(Yes, No, false, false, "", "ァ")}, - {0xff68, 0, 0, 0, g(Yes, No, false, false, "", "ィ")}, - {0xff69, 0, 0, 0, g(Yes, No, false, false, "", "ゥ")}, - {0xff6a, 0, 0, 0, g(Yes, No, false, false, "", "ェ")}, - {0xff6b, 0, 0, 0, g(Yes, No, false, false, "", "ォ")}, - {0xff6c, 0, 0, 0, g(Yes, No, false, false, "", "ャ")}, - {0xff6d, 0, 0, 0, g(Yes, No, false, false, "", "ュ")}, - {0xff6e, 0, 0, 0, g(Yes, No, false, false, "", "ョ")}, - {0xff6f, 0, 0, 0, g(Yes, No, false, false, "", "ッ")}, - {0xff70, 0, 0, 0, g(Yes, No, false, false, "", "ー")}, - {0xff71, 0, 0, 0, g(Yes, No, false, false, "", "ア")}, - {0xff72, 0, 0, 0, g(Yes, No, false, false, "", "イ")}, - {0xff73, 0, 0, 0, g(Yes, No, false, false, "", "ウ")}, - {0xff74, 0, 0, 0, g(Yes, No, false, false, "", "エ")}, - {0xff75, 0, 0, 0, g(Yes, No, false, false, "", "オ")}, - {0xff76, 0, 0, 0, g(Yes, No, false, false, "", "カ")}, - {0xff77, 0, 0, 0, g(Yes, No, false, false, "", "キ")}, - {0xff78, 0, 0, 0, g(Yes, No, false, false, "", "ク")}, - {0xff79, 0, 0, 0, g(Yes, No, false, false, "", "ケ")}, - {0xff7a, 0, 0, 0, g(Yes, No, false, false, "", "コ")}, - {0xff7b, 0, 0, 0, g(Yes, No, false, false, "", "サ")}, - {0xff7c, 0, 0, 0, g(Yes, No, false, false, "", "シ")}, - {0xff7d, 0, 0, 0, g(Yes, No, false, false, "", "ス")}, - {0xff7e, 0, 0, 0, g(Yes, No, false, false, "", "セ")}, - {0xff7f, 0, 0, 0, g(Yes, No, false, false, "", "ソ")}, - {0xff80, 0, 0, 0, g(Yes, No, false, false, "", "タ")}, - {0xff81, 0, 0, 0, g(Yes, No, false, false, "", "チ")}, - {0xff82, 0, 0, 0, g(Yes, No, false, false, "", "ツ")}, - {0xff83, 0, 0, 0, g(Yes, No, false, false, "", "テ")}, - {0xff84, 0, 0, 0, g(Yes, No, false, false, "", "ト")}, - {0xff85, 0, 0, 0, g(Yes, No, false, false, "", "ナ")}, - {0xff86, 0, 0, 0, g(Yes, No, false, false, "", "ニ")}, - {0xff87, 0, 0, 0, g(Yes, No, false, false, "", "ヌ")}, - {0xff88, 0, 0, 0, g(Yes, No, false, false, "", "ネ")}, - {0xff89, 0, 0, 0, g(Yes, No, false, false, "", "ノ")}, - {0xff8a, 0, 0, 0, g(Yes, No, false, false, "", "ハ")}, - {0xff8b, 0, 0, 0, g(Yes, No, false, false, "", "ヒ")}, - {0xff8c, 0, 0, 0, g(Yes, No, false, false, "", "フ")}, - {0xff8d, 0, 0, 0, g(Yes, No, false, false, "", "ヘ")}, - {0xff8e, 0, 0, 0, g(Yes, No, false, false, "", "ホ")}, - {0xff8f, 0, 0, 0, g(Yes, No, false, false, "", "マ")}, - {0xff90, 0, 0, 0, g(Yes, No, false, false, "", "ミ")}, - {0xff91, 0, 0, 0, g(Yes, No, false, false, "", "ム")}, - {0xff92, 0, 0, 0, g(Yes, No, false, false, "", "メ")}, - {0xff93, 0, 0, 0, g(Yes, No, false, false, "", "モ")}, - {0xff94, 0, 0, 0, g(Yes, No, false, false, "", "ヤ")}, - {0xff95, 0, 0, 0, g(Yes, No, false, false, "", "ユ")}, - {0xff96, 0, 0, 0, g(Yes, No, false, false, "", "ヨ")}, - {0xff97, 0, 0, 0, g(Yes, No, false, false, "", "ラ")}, - {0xff98, 0, 0, 0, g(Yes, No, false, false, "", "リ")}, - {0xff99, 0, 0, 0, g(Yes, No, false, false, "", "ル")}, - {0xff9a, 0, 0, 0, g(Yes, No, false, false, "", "レ")}, - {0xff9b, 0, 0, 0, g(Yes, No, false, false, "", "ロ")}, - {0xff9c, 0, 0, 0, g(Yes, No, false, false, "", "ワ")}, - {0xff9d, 0, 0, 0, g(Yes, No, false, false, "", "ン")}, - {0xff9e, 0, 1, 1, g(Yes, No, false, false, "", "゙")}, - {0xff9f, 0, 1, 1, g(Yes, No, false, false, "", "゚")}, - {0xffa0, 0, 0, 0, g(Yes, No, false, false, "", "ᅠ")}, - {0xffa1, 0, 0, 0, g(Yes, No, false, false, "", "ᄀ")}, - {0xffa2, 0, 0, 0, g(Yes, No, false, false, "", "ᄁ")}, - {0xffa3, 0, 1, 1, g(Yes, No, false, false, "", "ᆪ")}, - {0xffa4, 0, 0, 0, g(Yes, No, false, false, "", "ᄂ")}, - {0xffa5, 0, 1, 1, g(Yes, No, false, false, "", "ᆬ")}, - {0xffa6, 0, 1, 1, g(Yes, No, false, false, "", "ᆭ")}, - {0xffa7, 0, 0, 0, g(Yes, No, false, false, "", "ᄃ")}, - {0xffa8, 0, 0, 0, g(Yes, No, false, false, "", "ᄄ")}, - {0xffa9, 0, 0, 0, g(Yes, No, false, false, "", "ᄅ")}, - {0xffaa, 0, 1, 1, g(Yes, No, false, false, "", "ᆰ")}, - {0xffab, 0, 1, 1, g(Yes, No, false, false, "", "ᆱ")}, - {0xffac, 0, 1, 1, g(Yes, No, false, false, "", "ᆲ")}, - {0xffad, 0, 1, 1, g(Yes, No, false, false, "", "ᆳ")}, - {0xffae, 0, 1, 1, g(Yes, No, false, false, "", "ᆴ")}, - {0xffaf, 0, 1, 1, g(Yes, No, false, false, "", "ᆵ")}, - {0xffb0, 0, 0, 0, g(Yes, No, false, false, "", "ᄚ")}, - {0xffb1, 0, 0, 0, g(Yes, No, false, false, "", "ᄆ")}, - {0xffb2, 0, 0, 0, g(Yes, No, false, false, "", "ᄇ")}, - {0xffb3, 0, 0, 0, g(Yes, No, false, false, "", "ᄈ")}, - {0xffb4, 0, 0, 0, g(Yes, No, false, false, "", "ᄡ")}, - {0xffb5, 0, 0, 0, g(Yes, No, false, false, "", "ᄉ")}, - {0xffb6, 0, 0, 0, g(Yes, No, false, false, "", "ᄊ")}, - {0xffb7, 0, 0, 0, g(Yes, No, false, false, "", "ᄋ")}, - {0xffb8, 0, 0, 0, g(Yes, No, false, false, "", "ᄌ")}, - {0xffb9, 0, 0, 0, g(Yes, No, false, false, "", "ᄍ")}, - {0xffba, 0, 0, 0, g(Yes, No, false, false, "", "ᄎ")}, - {0xffbb, 0, 0, 0, g(Yes, No, false, false, "", "ᄏ")}, - {0xffbc, 0, 0, 0, g(Yes, No, false, false, "", "ᄐ")}, - {0xffbd, 0, 0, 0, g(Yes, No, false, false, "", "ᄑ")}, - {0xffbe, 0, 0, 0, g(Yes, No, false, false, "", "ᄒ")}, - {0xffbf, 0, 0, 0, f(Yes, false, "")}, - {0xffc2, 0, 1, 1, g(Yes, No, false, false, "", "ᅡ")}, - {0xffc3, 0, 1, 1, g(Yes, No, false, false, "", "ᅢ")}, - {0xffc4, 0, 1, 1, g(Yes, No, false, false, "", "ᅣ")}, - {0xffc5, 0, 1, 1, g(Yes, No, false, false, "", "ᅤ")}, - {0xffc6, 0, 1, 1, g(Yes, No, false, false, "", "ᅥ")}, - {0xffc7, 0, 1, 1, g(Yes, No, false, false, "", "ᅦ")}, - {0xffc8, 0, 0, 0, f(Yes, false, "")}, - {0xffca, 0, 1, 1, g(Yes, No, false, false, "", "ᅧ")}, - {0xffcb, 0, 1, 1, g(Yes, No, false, false, "", "ᅨ")}, - {0xffcc, 0, 1, 1, g(Yes, No, false, false, "", "ᅩ")}, - {0xffcd, 0, 1, 1, g(Yes, No, false, false, "", "ᅪ")}, - {0xffce, 0, 1, 1, g(Yes, No, false, false, "", "ᅫ")}, - {0xffcf, 0, 1, 1, g(Yes, No, false, false, "", "ᅬ")}, - {0xffd0, 0, 0, 0, f(Yes, false, "")}, - {0xffd2, 0, 1, 1, g(Yes, No, false, false, "", "ᅭ")}, - {0xffd3, 0, 1, 1, g(Yes, No, false, false, "", "ᅮ")}, - {0xffd4, 0, 1, 1, g(Yes, No, false, false, "", "ᅯ")}, - {0xffd5, 0, 1, 1, g(Yes, No, false, false, "", "ᅰ")}, - {0xffd6, 0, 1, 1, g(Yes, No, false, false, "", "ᅱ")}, - {0xffd7, 0, 1, 1, g(Yes, No, false, false, "", "ᅲ")}, - {0xffd8, 0, 0, 0, f(Yes, false, "")}, - {0xffda, 0, 1, 1, g(Yes, No, false, false, "", "ᅳ")}, - {0xffdb, 0, 1, 1, g(Yes, No, false, false, "", "ᅴ")}, - {0xffdc, 0, 1, 1, g(Yes, No, false, false, "", "ᅵ")}, - {0xffdd, 0, 0, 0, f(Yes, false, "")}, - {0xffe0, 0, 0, 0, g(Yes, No, false, false, "", "¢")}, - {0xffe1, 0, 0, 0, g(Yes, No, false, false, "", "£")}, - {0xffe2, 0, 0, 0, g(Yes, No, false, false, "", "¬")}, - {0xffe3, 0, 0, 1, g(Yes, No, false, false, "", " ̄")}, - {0xffe4, 0, 0, 0, g(Yes, No, false, false, "", "¦")}, - {0xffe5, 0, 0, 0, g(Yes, No, false, false, "", "¥")}, - {0xffe6, 0, 0, 0, g(Yes, No, false, false, "", "₩")}, - {0xffe7, 0, 0, 0, f(Yes, false, "")}, - {0xffe8, 0, 0, 0, g(Yes, No, false, false, "", "│")}, - {0xffe9, 0, 0, 0, g(Yes, No, false, false, "", "←")}, - {0xffea, 0, 0, 0, g(Yes, No, false, false, "", "↑")}, - {0xffeb, 0, 0, 0, g(Yes, No, false, false, "", "→")}, - {0xffec, 0, 0, 0, g(Yes, No, false, false, "", "↓")}, - {0xffed, 0, 0, 0, g(Yes, No, false, false, "", "■")}, - {0xffee, 0, 0, 0, g(Yes, No, false, false, "", "○")}, - {0xffef, 0, 0, 0, f(Yes, false, "")}, - {0x101fd, 220, 1, 1, f(Yes, false, "")}, - {0x101fe, 0, 0, 0, f(Yes, false, "")}, - {0x102e0, 220, 1, 1, f(Yes, false, "")}, - {0x102e1, 0, 0, 0, f(Yes, false, "")}, - {0x10376, 230, 1, 1, f(Yes, false, "")}, - {0x1037b, 0, 0, 0, f(Yes, false, "")}, - {0x10a0d, 220, 1, 1, f(Yes, false, "")}, - {0x10a0e, 0, 0, 0, f(Yes, false, "")}, - {0x10a0f, 230, 1, 1, f(Yes, false, "")}, - {0x10a10, 0, 0, 0, f(Yes, false, "")}, - {0x10a38, 230, 1, 1, f(Yes, false, "")}, - {0x10a39, 1, 1, 1, f(Yes, false, "")}, - {0x10a3a, 220, 1, 1, f(Yes, false, "")}, - {0x10a3b, 0, 0, 0, f(Yes, false, "")}, - {0x10a3f, 9, 1, 1, f(Yes, false, "")}, - {0x10a40, 0, 0, 0, f(Yes, false, "")}, - {0x10ae5, 230, 1, 1, f(Yes, false, "")}, - {0x10ae6, 220, 1, 1, f(Yes, false, "")}, - {0x10ae7, 0, 0, 0, f(Yes, false, "")}, - {0x11046, 9, 1, 1, f(Yes, false, "")}, - {0x11047, 0, 0, 0, f(Yes, false, "")}, - {0x1107f, 9, 1, 1, f(Yes, false, "")}, - {0x11080, 0, 0, 0, f(Yes, false, "")}, - {0x11099, 0, 0, 0, f(Yes, true, "")}, - {0x1109a, 0, 0, 1, f(Yes, false, "𑂚")}, - {0x1109b, 0, 0, 0, f(Yes, true, "")}, - {0x1109c, 0, 0, 1, f(Yes, false, "𑂜")}, - {0x1109d, 0, 0, 0, f(Yes, false, "")}, - {0x110a5, 0, 0, 0, f(Yes, true, "")}, - {0x110a6, 0, 0, 0, f(Yes, false, "")}, - {0x110ab, 0, 0, 1, f(Yes, false, "𑂫")}, - {0x110ac, 0, 0, 0, f(Yes, false, "")}, - {0x110b9, 9, 1, 1, f(Yes, false, "")}, - {0x110ba, 7, 1, 1, f(Maybe, false, "")}, - {0x110bb, 0, 0, 0, f(Yes, false, "")}, - {0x11100, 230, 1, 1, f(Yes, false, "")}, - {0x11103, 0, 0, 0, f(Yes, false, "")}, - {0x11127, 0, 1, 1, f(Maybe, false, "")}, - {0x11128, 0, 0, 0, f(Yes, false, "")}, - {0x1112e, 0, 0, 1, f(Yes, false, "𑄮")}, - {0x1112f, 0, 0, 1, f(Yes, false, "𑄯")}, - {0x11130, 0, 0, 0, f(Yes, false, "")}, - {0x11131, 0, 0, 0, f(Yes, true, "")}, - {0x11133, 9, 1, 1, f(Yes, false, "")}, - {0x11135, 0, 0, 0, f(Yes, false, "")}, - {0x11173, 7, 1, 1, f(Yes, false, "")}, - {0x11174, 0, 0, 0, f(Yes, false, "")}, - {0x111c0, 9, 1, 1, f(Yes, false, "")}, - {0x111c1, 0, 0, 0, f(Yes, false, "")}, - {0x111ca, 7, 1, 1, f(Yes, false, "")}, - {0x111cb, 0, 0, 0, f(Yes, false, "")}, - {0x11235, 9, 1, 1, f(Yes, false, "")}, - {0x11236, 7, 1, 1, f(Yes, false, "")}, - {0x11237, 0, 0, 0, f(Yes, false, "")}, - {0x112e9, 7, 1, 1, f(Yes, false, "")}, - {0x112ea, 9, 1, 1, f(Yes, false, "")}, - {0x112eb, 0, 0, 0, f(Yes, false, "")}, - {0x1133c, 7, 1, 1, f(Yes, false, "")}, - {0x1133d, 0, 0, 0, f(Yes, false, "")}, - {0x1133e, 0, 1, 1, f(Maybe, false, "")}, - {0x1133f, 0, 0, 0, f(Yes, false, "")}, - {0x11347, 0, 0, 0, f(Yes, true, "")}, - {0x11348, 0, 0, 0, f(Yes, false, "")}, - {0x1134b, 0, 0, 1, f(Yes, false, "𑍋")}, - {0x1134c, 0, 0, 1, f(Yes, false, "𑍌")}, - {0x1134d, 9, 1, 1, f(Yes, false, "")}, - {0x1134e, 0, 0, 0, f(Yes, false, "")}, - {0x11357, 0, 1, 1, f(Maybe, false, "")}, - {0x11358, 0, 0, 0, f(Yes, false, "")}, - {0x11366, 230, 1, 1, f(Yes, false, "")}, - {0x1136d, 0, 0, 0, f(Yes, false, "")}, - {0x11370, 230, 1, 1, f(Yes, false, "")}, - {0x11375, 0, 0, 0, f(Yes, false, "")}, - {0x11442, 9, 1, 1, f(Yes, false, "")}, - {0x11443, 0, 0, 0, f(Yes, false, "")}, - {0x11446, 7, 1, 1, f(Yes, false, "")}, - {0x11447, 0, 0, 0, f(Yes, false, "")}, - {0x114b0, 0, 1, 1, f(Maybe, false, "")}, - {0x114b1, 0, 0, 0, f(Yes, false, "")}, - {0x114b9, 0, 0, 0, f(Yes, true, "")}, - {0x114ba, 0, 1, 1, f(Maybe, false, "")}, - {0x114bb, 0, 0, 1, f(Yes, false, "𑒻")}, - {0x114bc, 0, 0, 1, f(Yes, false, "𑒼")}, - {0x114bd, 0, 1, 1, f(Maybe, false, "")}, - {0x114be, 0, 0, 1, f(Yes, false, "𑒾")}, - {0x114bf, 0, 0, 0, f(Yes, false, "")}, - {0x114c2, 9, 1, 1, f(Yes, false, "")}, - {0x114c3, 7, 1, 1, f(Yes, false, "")}, - {0x114c4, 0, 0, 0, f(Yes, false, "")}, - {0x115af, 0, 1, 1, f(Maybe, false, "")}, - {0x115b0, 0, 0, 0, f(Yes, false, "")}, - {0x115b8, 0, 0, 0, f(Yes, true, "")}, - {0x115ba, 0, 0, 1, f(Yes, false, "𑖺")}, - {0x115bb, 0, 0, 1, f(Yes, false, "𑖻")}, - {0x115bc, 0, 0, 0, f(Yes, false, "")}, - {0x115bf, 9, 1, 1, f(Yes, false, "")}, - {0x115c0, 7, 1, 1, f(Yes, false, "")}, - {0x115c1, 0, 0, 0, f(Yes, false, "")}, - {0x1163f, 9, 1, 1, f(Yes, false, "")}, - {0x11640, 0, 0, 0, f(Yes, false, "")}, - {0x116b6, 9, 1, 1, f(Yes, false, "")}, - {0x116b7, 7, 1, 1, f(Yes, false, "")}, - {0x116b8, 0, 0, 0, f(Yes, false, "")}, - {0x1172b, 9, 1, 1, f(Yes, false, "")}, - {0x1172c, 0, 0, 0, f(Yes, false, "")}, - {0x11a34, 9, 1, 1, f(Yes, false, "")}, - {0x11a35, 0, 0, 0, f(Yes, false, "")}, - {0x11a47, 9, 1, 1, f(Yes, false, "")}, - {0x11a48, 0, 0, 0, f(Yes, false, "")}, - {0x11a99, 9, 1, 1, f(Yes, false, "")}, - {0x11a9a, 0, 0, 0, f(Yes, false, "")}, - {0x11c3f, 9, 1, 1, f(Yes, false, "")}, - {0x11c40, 0, 0, 0, f(Yes, false, "")}, - {0x11d42, 7, 1, 1, f(Yes, false, "")}, - {0x11d43, 0, 0, 0, f(Yes, false, "")}, - {0x11d44, 9, 1, 1, f(Yes, false, "")}, - {0x11d46, 0, 0, 0, f(Yes, false, "")}, - {0x16af0, 1, 1, 1, f(Yes, false, "")}, - {0x16af5, 0, 0, 0, f(Yes, false, "")}, - {0x16b30, 230, 1, 1, f(Yes, false, "")}, - {0x16b37, 0, 0, 0, f(Yes, false, "")}, - {0x1bc9e, 1, 1, 1, f(Yes, false, "")}, - {0x1bc9f, 0, 0, 0, f(Yes, false, "")}, - {0x1d15e, 0, 0, 1, f(No, false, "𝅗𝅥")}, - {0x1d15f, 0, 0, 1, f(No, false, "𝅘𝅥")}, - {0x1d160, 0, 0, 2, f(No, false, "𝅘𝅥𝅮")}, - {0x1d161, 0, 0, 2, f(No, false, "𝅘𝅥𝅯")}, - {0x1d162, 0, 0, 2, f(No, false, "𝅘𝅥𝅰")}, - {0x1d163, 0, 0, 2, f(No, false, "𝅘𝅥𝅱")}, - {0x1d164, 0, 0, 2, f(No, false, "𝅘𝅥𝅲")}, - {0x1d165, 216, 1, 1, f(Yes, false, "")}, - {0x1d167, 1, 1, 1, f(Yes, false, "")}, - {0x1d16a, 0, 0, 0, f(Yes, false, "")}, - {0x1d16d, 226, 1, 1, f(Yes, false, "")}, - {0x1d16e, 216, 1, 1, f(Yes, false, "")}, - {0x1d173, 0, 0, 0, f(Yes, false, "")}, - {0x1d17b, 220, 1, 1, f(Yes, false, "")}, - {0x1d183, 0, 0, 0, f(Yes, false, "")}, - {0x1d185, 230, 1, 1, f(Yes, false, "")}, - {0x1d18a, 220, 1, 1, f(Yes, false, "")}, - {0x1d18c, 0, 0, 0, f(Yes, false, "")}, - {0x1d1aa, 230, 1, 1, f(Yes, false, "")}, - {0x1d1ae, 0, 0, 0, f(Yes, false, "")}, - {0x1d1bb, 0, 0, 1, f(No, false, "𝆹𝅥")}, - {0x1d1bc, 0, 0, 1, f(No, false, "𝆺𝅥")}, - {0x1d1bd, 0, 0, 2, f(No, false, "𝆹𝅥𝅮")}, - {0x1d1be, 0, 0, 2, f(No, false, "𝆺𝅥𝅮")}, - {0x1d1bf, 0, 0, 2, f(No, false, "𝆹𝅥𝅯")}, - {0x1d1c0, 0, 0, 2, f(No, false, "𝆺𝅥𝅯")}, - {0x1d1c1, 0, 0, 0, f(Yes, false, "")}, - {0x1d242, 230, 1, 1, f(Yes, false, "")}, - {0x1d245, 0, 0, 0, f(Yes, false, "")}, - {0x1d400, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d401, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d402, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d403, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d404, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d405, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d406, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d407, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d408, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d409, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d40a, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d40b, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d40c, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d40d, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d40e, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d40f, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d410, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d411, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d412, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d413, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d414, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d415, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d416, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d417, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d418, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d419, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d41a, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d41b, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d41c, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d41d, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d41e, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d41f, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d420, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d421, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d422, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d423, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d424, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d425, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d426, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d427, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d428, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d429, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d42a, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d42b, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d42c, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d42d, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d42e, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d42f, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d430, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d431, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d432, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d433, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d434, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d435, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d436, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d437, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d438, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d439, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d43a, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d43b, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d43c, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d43d, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d43e, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d43f, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d440, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d441, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d442, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d443, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d444, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d445, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d446, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d447, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d448, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d449, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d44a, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d44b, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d44c, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d44d, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d44e, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d44f, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d450, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d451, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d452, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d453, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d454, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d455, 0, 0, 0, f(Yes, false, "")}, - {0x1d456, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d457, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d458, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d459, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d45a, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d45b, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d45c, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d45d, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d45e, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d45f, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d460, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d461, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d462, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d463, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d464, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d465, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d466, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d467, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d468, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d469, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d46a, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d46b, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d46c, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d46d, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d46e, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d46f, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d470, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d471, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d472, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d473, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d474, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d475, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d476, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d477, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d478, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d479, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d47a, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d47b, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d47c, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d47d, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d47e, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d47f, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d480, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d481, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d482, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d483, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d484, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d485, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d486, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d487, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d488, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d489, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d48a, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d48b, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d48c, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d48d, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d48e, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d48f, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d490, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d491, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d492, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d493, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d494, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d495, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d496, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d497, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d498, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d499, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d49a, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d49b, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d49c, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d49d, 0, 0, 0, f(Yes, false, "")}, - {0x1d49e, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d49f, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d4a0, 0, 0, 0, f(Yes, false, "")}, - {0x1d4a2, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d4a3, 0, 0, 0, f(Yes, false, "")}, - {0x1d4a5, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d4a6, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d4a7, 0, 0, 0, f(Yes, false, "")}, - {0x1d4a9, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d4aa, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d4ab, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d4ac, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d4ad, 0, 0, 0, f(Yes, false, "")}, - {0x1d4ae, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d4af, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d4b0, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d4b1, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d4b2, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d4b3, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d4b4, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d4b5, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d4b6, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d4b7, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d4b8, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d4b9, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d4ba, 0, 0, 0, f(Yes, false, "")}, - {0x1d4bb, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d4bc, 0, 0, 0, f(Yes, false, "")}, - {0x1d4bd, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d4be, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d4bf, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d4c0, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d4c1, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d4c2, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d4c3, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d4c4, 0, 0, 0, f(Yes, false, "")}, - {0x1d4c5, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d4c6, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d4c7, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d4c8, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d4c9, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d4ca, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d4cb, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d4cc, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d4cd, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d4ce, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d4cf, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d4d0, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d4d1, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d4d2, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d4d3, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d4d4, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d4d5, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d4d6, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d4d7, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d4d8, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d4d9, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d4da, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d4db, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d4dc, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d4dd, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d4de, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d4df, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d4e0, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d4e1, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d4e2, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d4e3, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d4e4, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d4e5, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d4e6, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d4e7, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d4e8, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d4e9, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d4ea, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d4eb, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d4ec, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d4ed, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d4ee, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d4ef, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d4f0, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d4f1, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d4f2, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d4f3, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d4f4, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d4f5, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d4f6, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d4f7, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d4f8, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d4f9, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d4fa, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d4fb, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d4fc, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d4fd, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d4fe, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d4ff, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d500, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d501, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d502, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d503, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d504, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d505, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d506, 0, 0, 0, f(Yes, false, "")}, - {0x1d507, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d508, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d509, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d50a, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d50b, 0, 0, 0, f(Yes, false, "")}, - {0x1d50d, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d50e, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d50f, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d510, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d511, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d512, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d513, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d514, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d515, 0, 0, 0, f(Yes, false, "")}, - {0x1d516, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d517, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d518, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d519, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d51a, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d51b, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d51c, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d51d, 0, 0, 0, f(Yes, false, "")}, - {0x1d51e, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d51f, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d520, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d521, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d522, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d523, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d524, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d525, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d526, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d527, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d528, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d529, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d52a, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d52b, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d52c, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d52d, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d52e, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d52f, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d530, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d531, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d532, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d533, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d534, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d535, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d536, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d537, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d538, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d539, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d53a, 0, 0, 0, f(Yes, false, "")}, - {0x1d53b, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d53c, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d53d, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d53e, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d53f, 0, 0, 0, f(Yes, false, "")}, - {0x1d540, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d541, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d542, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d543, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d544, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d545, 0, 0, 0, f(Yes, false, "")}, - {0x1d546, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d547, 0, 0, 0, f(Yes, false, "")}, - {0x1d54a, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d54b, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d54c, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d54d, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d54e, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d54f, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d550, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d551, 0, 0, 0, f(Yes, false, "")}, - {0x1d552, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d553, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d554, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d555, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d556, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d557, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d558, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d559, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d55a, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d55b, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d55c, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d55d, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d55e, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d55f, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d560, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d561, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d562, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d563, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d564, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d565, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d566, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d567, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d568, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d569, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d56a, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d56b, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d56c, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d56d, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d56e, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d56f, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d570, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d571, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d572, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d573, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d574, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d575, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d576, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d577, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d578, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d579, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d57a, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d57b, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d57c, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d57d, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d57e, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d57f, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d580, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d581, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d582, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d583, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d584, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d585, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d586, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d587, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d588, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d589, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d58a, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d58b, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d58c, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d58d, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d58e, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d58f, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d590, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d591, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d592, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d593, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d594, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d595, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d596, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d597, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d598, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d599, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d59a, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d59b, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d59c, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d59d, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d59e, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d59f, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d5a0, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d5a1, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d5a2, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d5a3, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d5a4, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d5a5, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d5a6, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d5a7, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d5a8, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d5a9, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d5aa, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d5ab, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d5ac, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d5ad, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d5ae, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d5af, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d5b0, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d5b1, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d5b2, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d5b3, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d5b4, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d5b5, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d5b6, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d5b7, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d5b8, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d5b9, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d5ba, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d5bb, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d5bc, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d5bd, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d5be, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d5bf, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d5c0, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d5c1, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d5c2, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d5c3, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d5c4, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d5c5, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d5c6, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d5c7, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d5c8, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d5c9, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d5ca, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d5cb, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d5cc, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d5cd, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d5ce, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d5cf, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d5d0, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d5d1, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d5d2, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d5d3, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d5d4, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d5d5, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d5d6, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d5d7, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d5d8, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d5d9, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d5da, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d5db, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d5dc, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d5dd, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d5de, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d5df, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d5e0, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d5e1, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d5e2, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d5e3, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d5e4, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d5e5, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d5e6, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d5e7, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d5e8, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d5e9, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d5ea, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d5eb, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d5ec, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d5ed, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d5ee, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d5ef, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d5f0, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d5f1, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d5f2, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d5f3, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d5f4, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d5f5, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d5f6, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d5f7, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d5f8, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d5f9, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d5fa, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d5fb, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d5fc, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d5fd, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d5fe, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d5ff, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d600, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d601, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d602, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d603, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d604, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d605, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d606, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d607, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d608, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d609, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d60a, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d60b, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d60c, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d60d, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d60e, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d60f, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d610, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d611, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d612, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d613, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d614, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d615, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d616, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d617, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d618, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d619, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d61a, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d61b, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d61c, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d61d, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d61e, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d61f, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d620, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d621, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d622, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d623, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d624, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d625, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d626, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d627, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d628, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d629, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d62a, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d62b, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d62c, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d62d, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d62e, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d62f, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d630, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d631, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d632, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d633, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d634, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d635, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d636, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d637, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d638, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d639, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d63a, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d63b, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d63c, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d63d, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d63e, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d63f, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d640, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d641, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d642, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d643, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d644, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d645, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d646, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d647, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d648, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d649, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d64a, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d64b, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d64c, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d64d, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d64e, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d64f, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d650, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d651, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d652, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d653, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d654, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d655, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d656, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d657, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d658, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d659, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d65a, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d65b, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d65c, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d65d, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d65e, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d65f, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d660, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d661, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d662, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d663, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d664, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d665, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d666, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d667, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d668, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d669, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d66a, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d66b, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d66c, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d66d, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d66e, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d66f, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d670, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d671, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d672, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d673, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d674, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d675, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d676, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d677, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d678, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d679, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d67a, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d67b, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d67c, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d67d, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d67e, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d67f, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d680, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d681, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d682, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d683, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d684, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d685, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d686, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d687, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d688, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d689, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d68a, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d68b, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d68c, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d68d, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d68e, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d68f, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d690, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d691, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d692, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d693, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d694, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d695, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d696, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d697, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d698, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d699, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d69a, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d69b, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d69c, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d69d, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d69e, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d69f, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d6a0, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d6a1, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d6a2, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d6a3, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d6a4, 0, 0, 0, g(Yes, No, false, false, "", "ı")}, - {0x1d6a5, 0, 0, 0, g(Yes, No, false, false, "", "ȷ")}, - {0x1d6a6, 0, 0, 0, f(Yes, false, "")}, - {0x1d6a8, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d6a9, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d6aa, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d6ab, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d6ac, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d6ad, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d6ae, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d6af, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d6b0, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d6b1, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d6b2, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d6b3, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d6b4, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d6b5, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d6b6, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d6b7, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d6b8, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d6b9, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d6ba, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d6bb, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d6bc, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d6bd, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d6be, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d6bf, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d6c0, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d6c1, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d6c2, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d6c3, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d6c4, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d6c5, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d6c6, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d6c7, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d6c8, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d6c9, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d6ca, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d6cb, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d6cc, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d6cd, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d6ce, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d6cf, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d6d0, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d6d1, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d6d2, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d6d3, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d6d4, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d6d5, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d6d6, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d6d7, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d6d8, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d6d9, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d6da, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d6db, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d6dc, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d6dd, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d6de, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d6df, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d6e0, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d6e1, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d6e2, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d6e3, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d6e4, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d6e5, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d6e6, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d6e7, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d6e8, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d6e9, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d6ea, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d6eb, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d6ec, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d6ed, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d6ee, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d6ef, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d6f0, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d6f1, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d6f2, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d6f3, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d6f4, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d6f5, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d6f6, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d6f7, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d6f8, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d6f9, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d6fa, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d6fb, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d6fc, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d6fd, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d6fe, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d6ff, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d700, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d701, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d702, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d703, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d704, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d705, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d706, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d707, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d708, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d709, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d70a, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d70b, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d70c, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d70d, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d70e, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d70f, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d710, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d711, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d712, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d713, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d714, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d715, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d716, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d717, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d718, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d719, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d71a, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d71b, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d71c, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d71d, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d71e, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d71f, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d720, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d721, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d722, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d723, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d724, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d725, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d726, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d727, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d728, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d729, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d72a, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d72b, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d72c, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d72d, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d72e, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d72f, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d730, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d731, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d732, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d733, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d734, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d735, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d736, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d737, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d738, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d739, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d73a, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d73b, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d73c, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d73d, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d73e, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d73f, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d740, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d741, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d742, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d743, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d744, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d745, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d746, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d747, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d748, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d749, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d74a, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d74b, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d74c, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d74d, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d74e, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d74f, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d750, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d751, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d752, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d753, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d754, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d755, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d756, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d757, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d758, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d759, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d75a, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d75b, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d75c, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d75d, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d75e, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d75f, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d760, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d761, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d762, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d763, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d764, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d765, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d766, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d767, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d768, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d769, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d76a, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d76b, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d76c, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d76d, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d76e, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d76f, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d770, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d771, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d772, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d773, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d774, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d775, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d776, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d777, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d778, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d779, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d77a, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d77b, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d77c, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d77d, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d77e, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d77f, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d780, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d781, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d782, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d783, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d784, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d785, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d786, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d787, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d788, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d789, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d78a, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d78b, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d78c, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d78d, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d78e, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d78f, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d790, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d791, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d792, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d793, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d794, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d795, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d796, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d797, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d798, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d799, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d79a, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d79b, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d79c, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d79d, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d79e, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d79f, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d7a0, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d7a1, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d7a2, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d7a3, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d7a4, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d7a5, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d7a6, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d7a7, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d7a8, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d7a9, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d7aa, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d7ab, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d7ac, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d7ad, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d7ae, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d7af, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d7b0, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d7b1, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d7b2, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d7b3, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d7b4, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d7b5, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d7b6, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d7b7, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d7b8, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d7b9, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d7ba, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d7bb, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d7bc, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d7bd, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d7be, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d7bf, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d7c0, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d7c1, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d7c2, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d7c3, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d7c4, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d7c5, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d7c6, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d7c7, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d7c8, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d7c9, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d7ca, 0, 0, 0, g(Yes, No, false, false, "", "Ϝ")}, - {0x1d7cb, 0, 0, 0, g(Yes, No, false, false, "", "ϝ")}, - {0x1d7cc, 0, 0, 0, f(Yes, false, "")}, - {0x1d7ce, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7cf, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7d0, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7d1, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7d2, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7d3, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7d4, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7d5, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7d6, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7d7, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d7d8, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7d9, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7da, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7db, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7dc, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7dd, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7de, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7df, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7e0, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7e1, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d7e2, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7e3, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7e4, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7e5, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7e6, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7e7, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7e8, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7e9, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7ea, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7eb, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d7ec, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7ed, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7ee, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7ef, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7f0, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7f1, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7f2, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7f3, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7f4, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7f5, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d7f6, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7f7, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7f8, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7f9, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7fa, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7fb, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7fc, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7fd, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7fe, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7ff, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d800, 0, 0, 0, f(Yes, false, "")}, - {0x1e000, 230, 1, 1, f(Yes, false, "")}, - {0x1e007, 0, 0, 0, f(Yes, false, "")}, - {0x1e008, 230, 1, 1, f(Yes, false, "")}, - {0x1e019, 0, 0, 0, f(Yes, false, "")}, - {0x1e01b, 230, 1, 1, f(Yes, false, "")}, - {0x1e022, 0, 0, 0, f(Yes, false, "")}, - {0x1e023, 230, 1, 1, f(Yes, false, "")}, - {0x1e025, 0, 0, 0, f(Yes, false, "")}, - {0x1e026, 230, 1, 1, f(Yes, false, "")}, - {0x1e02b, 0, 0, 0, f(Yes, false, "")}, - {0x1e8d0, 220, 1, 1, f(Yes, false, "")}, - {0x1e8d7, 0, 0, 0, f(Yes, false, "")}, - {0x1e944, 230, 1, 1, f(Yes, false, "")}, - {0x1e94a, 7, 1, 1, f(Yes, false, "")}, - {0x1e94b, 0, 0, 0, f(Yes, false, "")}, - {0x1ee00, 0, 0, 0, g(Yes, No, false, false, "", "ا")}, - {0x1ee01, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1ee02, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee03, 0, 0, 0, g(Yes, No, false, false, "", "د")}, - {0x1ee04, 0, 0, 0, f(Yes, false, "")}, - {0x1ee05, 0, 0, 0, g(Yes, No, false, false, "", "و")}, - {0x1ee06, 0, 0, 0, g(Yes, No, false, false, "", "ز")}, - {0x1ee07, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee08, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0x1ee09, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee0a, 0, 0, 0, g(Yes, No, false, false, "", "ك")}, - {0x1ee0b, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1ee0c, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1ee0d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee0e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee0f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee10, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1ee11, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee12, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee13, 0, 0, 0, g(Yes, No, false, false, "", "ر")}, - {0x1ee14, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee15, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1ee16, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1ee17, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee18, 0, 0, 0, g(Yes, No, false, false, "", "ذ")}, - {0x1ee19, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee1a, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0x1ee1b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee1c, 0, 0, 0, g(Yes, No, false, false, "", "ٮ")}, - {0x1ee1d, 0, 0, 0, g(Yes, No, false, false, "", "ں")}, - {0x1ee1e, 0, 0, 0, g(Yes, No, false, false, "", "ڡ")}, - {0x1ee1f, 0, 0, 0, g(Yes, No, false, false, "", "ٯ")}, - {0x1ee20, 0, 0, 0, f(Yes, false, "")}, - {0x1ee21, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1ee22, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee23, 0, 0, 0, f(Yes, false, "")}, - {0x1ee24, 0, 0, 0, g(Yes, No, false, false, "", "ه")}, - {0x1ee25, 0, 0, 0, f(Yes, false, "")}, - {0x1ee27, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee28, 0, 0, 0, f(Yes, false, "")}, - {0x1ee29, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee2a, 0, 0, 0, g(Yes, No, false, false, "", "ك")}, - {0x1ee2b, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1ee2c, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1ee2d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee2e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee2f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee30, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1ee31, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee32, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee33, 0, 0, 0, f(Yes, false, "")}, - {0x1ee34, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee35, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1ee36, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1ee37, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee38, 0, 0, 0, f(Yes, false, "")}, - {0x1ee39, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee3a, 0, 0, 0, f(Yes, false, "")}, - {0x1ee3b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee3c, 0, 0, 0, f(Yes, false, "")}, - {0x1ee42, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee43, 0, 0, 0, f(Yes, false, "")}, - {0x1ee47, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee48, 0, 0, 0, f(Yes, false, "")}, - {0x1ee49, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee4a, 0, 0, 0, f(Yes, false, "")}, - {0x1ee4b, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1ee4c, 0, 0, 0, f(Yes, false, "")}, - {0x1ee4d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee4e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee4f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee50, 0, 0, 0, f(Yes, false, "")}, - {0x1ee51, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee52, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee53, 0, 0, 0, f(Yes, false, "")}, - {0x1ee54, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee55, 0, 0, 0, f(Yes, false, "")}, - {0x1ee57, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee58, 0, 0, 0, f(Yes, false, "")}, - {0x1ee59, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee5a, 0, 0, 0, f(Yes, false, "")}, - {0x1ee5b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee5c, 0, 0, 0, f(Yes, false, "")}, - {0x1ee5d, 0, 0, 0, g(Yes, No, false, false, "", "ں")}, - {0x1ee5e, 0, 0, 0, f(Yes, false, "")}, - {0x1ee5f, 0, 0, 0, g(Yes, No, false, false, "", "ٯ")}, - {0x1ee60, 0, 0, 0, f(Yes, false, "")}, - {0x1ee61, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1ee62, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee63, 0, 0, 0, f(Yes, false, "")}, - {0x1ee64, 0, 0, 0, g(Yes, No, false, false, "", "ه")}, - {0x1ee65, 0, 0, 0, f(Yes, false, "")}, - {0x1ee67, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee68, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0x1ee69, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee6a, 0, 0, 0, g(Yes, No, false, false, "", "ك")}, - {0x1ee6b, 0, 0, 0, f(Yes, false, "")}, - {0x1ee6c, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1ee6d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee6e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee6f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee70, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1ee71, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee72, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee73, 0, 0, 0, f(Yes, false, "")}, - {0x1ee74, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee75, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1ee76, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1ee77, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee78, 0, 0, 0, f(Yes, false, "")}, - {0x1ee79, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee7a, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0x1ee7b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee7c, 0, 0, 0, g(Yes, No, false, false, "", "ٮ")}, - {0x1ee7d, 0, 0, 0, f(Yes, false, "")}, - {0x1ee7e, 0, 0, 0, g(Yes, No, false, false, "", "ڡ")}, - {0x1ee7f, 0, 0, 0, f(Yes, false, "")}, - {0x1ee80, 0, 0, 0, g(Yes, No, false, false, "", "ا")}, - {0x1ee81, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1ee82, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee83, 0, 0, 0, g(Yes, No, false, false, "", "د")}, - {0x1ee84, 0, 0, 0, g(Yes, No, false, false, "", "ه")}, - {0x1ee85, 0, 0, 0, g(Yes, No, false, false, "", "و")}, - {0x1ee86, 0, 0, 0, g(Yes, No, false, false, "", "ز")}, - {0x1ee87, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee88, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0x1ee89, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee8a, 0, 0, 0, f(Yes, false, "")}, - {0x1ee8b, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1ee8c, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1ee8d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee8e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee8f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee90, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1ee91, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee92, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee93, 0, 0, 0, g(Yes, No, false, false, "", "ر")}, - {0x1ee94, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee95, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1ee96, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1ee97, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee98, 0, 0, 0, g(Yes, No, false, false, "", "ذ")}, - {0x1ee99, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee9a, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0x1ee9b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee9c, 0, 0, 0, f(Yes, false, "")}, - {0x1eea1, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1eea2, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1eea3, 0, 0, 0, g(Yes, No, false, false, "", "د")}, - {0x1eea4, 0, 0, 0, f(Yes, false, "")}, - {0x1eea5, 0, 0, 0, g(Yes, No, false, false, "", "و")}, - {0x1eea6, 0, 0, 0, g(Yes, No, false, false, "", "ز")}, - {0x1eea7, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1eea8, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0x1eea9, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1eeaa, 0, 0, 0, f(Yes, false, "")}, - {0x1eeab, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1eeac, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1eead, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1eeae, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1eeaf, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1eeb0, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1eeb1, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1eeb2, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1eeb3, 0, 0, 0, g(Yes, No, false, false, "", "ر")}, - {0x1eeb4, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1eeb5, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1eeb6, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1eeb7, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1eeb8, 0, 0, 0, g(Yes, No, false, false, "", "ذ")}, - {0x1eeb9, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1eeba, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0x1eebb, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1eebc, 0, 0, 0, f(Yes, false, "")}, - {0x1f100, 0, 0, 0, g(Yes, No, false, false, "", "0.")}, - {0x1f101, 0, 0, 0, g(Yes, No, false, false, "", "0,")}, - {0x1f102, 0, 0, 0, g(Yes, No, false, false, "", "1,")}, - {0x1f103, 0, 0, 0, g(Yes, No, false, false, "", "2,")}, - {0x1f104, 0, 0, 0, g(Yes, No, false, false, "", "3,")}, - {0x1f105, 0, 0, 0, g(Yes, No, false, false, "", "4,")}, - {0x1f106, 0, 0, 0, g(Yes, No, false, false, "", "5,")}, - {0x1f107, 0, 0, 0, g(Yes, No, false, false, "", "6,")}, - {0x1f108, 0, 0, 0, g(Yes, No, false, false, "", "7,")}, - {0x1f109, 0, 0, 0, g(Yes, No, false, false, "", "8,")}, - {0x1f10a, 0, 0, 0, g(Yes, No, false, false, "", "9,")}, - {0x1f10b, 0, 0, 0, f(Yes, false, "")}, - {0x1f110, 0, 0, 0, g(Yes, No, false, false, "", "(A)")}, - {0x1f111, 0, 0, 0, g(Yes, No, false, false, "", "(B)")}, - {0x1f112, 0, 0, 0, g(Yes, No, false, false, "", "(C)")}, - {0x1f113, 0, 0, 0, g(Yes, No, false, false, "", "(D)")}, - {0x1f114, 0, 0, 0, g(Yes, No, false, false, "", "(E)")}, - {0x1f115, 0, 0, 0, g(Yes, No, false, false, "", "(F)")}, - {0x1f116, 0, 0, 0, g(Yes, No, false, false, "", "(G)")}, - {0x1f117, 0, 0, 0, g(Yes, No, false, false, "", "(H)")}, - {0x1f118, 0, 0, 0, g(Yes, No, false, false, "", "(I)")}, - {0x1f119, 0, 0, 0, g(Yes, No, false, false, "", "(J)")}, - {0x1f11a, 0, 0, 0, g(Yes, No, false, false, "", "(K)")}, - {0x1f11b, 0, 0, 0, g(Yes, No, false, false, "", "(L)")}, - {0x1f11c, 0, 0, 0, g(Yes, No, false, false, "", "(M)")}, - {0x1f11d, 0, 0, 0, g(Yes, No, false, false, "", "(N)")}, - {0x1f11e, 0, 0, 0, g(Yes, No, false, false, "", "(O)")}, - {0x1f11f, 0, 0, 0, g(Yes, No, false, false, "", "(P)")}, - {0x1f120, 0, 0, 0, g(Yes, No, false, false, "", "(Q)")}, - {0x1f121, 0, 0, 0, g(Yes, No, false, false, "", "(R)")}, - {0x1f122, 0, 0, 0, g(Yes, No, false, false, "", "(S)")}, - {0x1f123, 0, 0, 0, g(Yes, No, false, false, "", "(T)")}, - {0x1f124, 0, 0, 0, g(Yes, No, false, false, "", "(U)")}, - {0x1f125, 0, 0, 0, g(Yes, No, false, false, "", "(V)")}, - {0x1f126, 0, 0, 0, g(Yes, No, false, false, "", "(W)")}, - {0x1f127, 0, 0, 0, g(Yes, No, false, false, "", "(X)")}, - {0x1f128, 0, 0, 0, g(Yes, No, false, false, "", "(Y)")}, - {0x1f129, 0, 0, 0, g(Yes, No, false, false, "", "(Z)")}, - {0x1f12a, 0, 0, 0, g(Yes, No, false, false, "", "〔S〕")}, - {0x1f12b, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1f12c, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1f12d, 0, 0, 0, g(Yes, No, false, false, "", "CD")}, - {0x1f12e, 0, 0, 0, g(Yes, No, false, false, "", "WZ")}, - {0x1f12f, 0, 0, 0, f(Yes, false, "")}, - {0x1f130, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1f131, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1f132, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1f133, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1f134, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1f135, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1f136, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1f137, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1f138, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1f139, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1f13a, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1f13b, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1f13c, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1f13d, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1f13e, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1f13f, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1f140, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1f141, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1f142, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1f143, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1f144, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1f145, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1f146, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1f147, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1f148, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1f149, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1f14a, 0, 0, 0, g(Yes, No, false, false, "", "HV")}, - {0x1f14b, 0, 0, 0, g(Yes, No, false, false, "", "MV")}, - {0x1f14c, 0, 0, 0, g(Yes, No, false, false, "", "SD")}, - {0x1f14d, 0, 0, 0, g(Yes, No, false, false, "", "SS")}, - {0x1f14e, 0, 0, 0, g(Yes, No, false, false, "", "PPV")}, - {0x1f14f, 0, 0, 0, g(Yes, No, false, false, "", "WC")}, - {0x1f150, 0, 0, 0, f(Yes, false, "")}, - {0x1f16a, 0, 0, 0, g(Yes, No, false, false, "", "MC")}, - {0x1f16b, 0, 0, 0, g(Yes, No, false, false, "", "MD")}, - {0x1f16c, 0, 0, 0, f(Yes, false, "")}, - {0x1f190, 0, 0, 0, g(Yes, No, false, false, "", "DJ")}, - {0x1f191, 0, 0, 0, f(Yes, false, "")}, - {0x1f200, 0, 0, 0, g(Yes, No, false, false, "", "ほか")}, - {0x1f201, 0, 0, 0, g(Yes, No, false, false, "", "ココ")}, - {0x1f202, 0, 0, 0, g(Yes, No, false, false, "", "サ")}, - {0x1f203, 0, 0, 0, f(Yes, false, "")}, - {0x1f210, 0, 0, 0, g(Yes, No, false, false, "", "手")}, - {0x1f211, 0, 0, 0, g(Yes, No, false, false, "", "字")}, - {0x1f212, 0, 0, 0, g(Yes, No, false, false, "", "双")}, - {0x1f213, 0, 0, 1, g(Yes, No, false, false, "", "デ")}, - {0x1f214, 0, 0, 0, g(Yes, No, false, false, "", "二")}, - {0x1f215, 0, 0, 0, g(Yes, No, false, false, "", "多")}, - {0x1f216, 0, 0, 0, g(Yes, No, false, false, "", "解")}, - {0x1f217, 0, 0, 0, g(Yes, No, false, false, "", "天")}, - {0x1f218, 0, 0, 0, g(Yes, No, false, false, "", "交")}, - {0x1f219, 0, 0, 0, g(Yes, No, false, false, "", "映")}, - {0x1f21a, 0, 0, 0, g(Yes, No, false, false, "", "無")}, - {0x1f21b, 0, 0, 0, g(Yes, No, false, false, "", "料")}, - {0x1f21c, 0, 0, 0, g(Yes, No, false, false, "", "前")}, - {0x1f21d, 0, 0, 0, g(Yes, No, false, false, "", "後")}, - {0x1f21e, 0, 0, 0, g(Yes, No, false, false, "", "再")}, - {0x1f21f, 0, 0, 0, g(Yes, No, false, false, "", "新")}, - {0x1f220, 0, 0, 0, g(Yes, No, false, false, "", "初")}, - {0x1f221, 0, 0, 0, g(Yes, No, false, false, "", "終")}, - {0x1f222, 0, 0, 0, g(Yes, No, false, false, "", "生")}, - {0x1f223, 0, 0, 0, g(Yes, No, false, false, "", "販")}, - {0x1f224, 0, 0, 0, g(Yes, No, false, false, "", "声")}, - {0x1f225, 0, 0, 0, g(Yes, No, false, false, "", "吹")}, - {0x1f226, 0, 0, 0, g(Yes, No, false, false, "", "演")}, - {0x1f227, 0, 0, 0, g(Yes, No, false, false, "", "投")}, - {0x1f228, 0, 0, 0, g(Yes, No, false, false, "", "捕")}, - {0x1f229, 0, 0, 0, g(Yes, No, false, false, "", "一")}, - {0x1f22a, 0, 0, 0, g(Yes, No, false, false, "", "三")}, - {0x1f22b, 0, 0, 0, g(Yes, No, false, false, "", "遊")}, - {0x1f22c, 0, 0, 0, g(Yes, No, false, false, "", "左")}, - {0x1f22d, 0, 0, 0, g(Yes, No, false, false, "", "中")}, - {0x1f22e, 0, 0, 0, g(Yes, No, false, false, "", "右")}, - {0x1f22f, 0, 0, 0, g(Yes, No, false, false, "", "指")}, - {0x1f230, 0, 0, 0, g(Yes, No, false, false, "", "走")}, - {0x1f231, 0, 0, 0, g(Yes, No, false, false, "", "打")}, - {0x1f232, 0, 0, 0, g(Yes, No, false, false, "", "禁")}, - {0x1f233, 0, 0, 0, g(Yes, No, false, false, "", "空")}, - {0x1f234, 0, 0, 0, g(Yes, No, false, false, "", "合")}, - {0x1f235, 0, 0, 0, g(Yes, No, false, false, "", "満")}, - {0x1f236, 0, 0, 0, g(Yes, No, false, false, "", "有")}, - {0x1f237, 0, 0, 0, g(Yes, No, false, false, "", "月")}, - {0x1f238, 0, 0, 0, g(Yes, No, false, false, "", "申")}, - {0x1f239, 0, 0, 0, g(Yes, No, false, false, "", "割")}, - {0x1f23a, 0, 0, 0, g(Yes, No, false, false, "", "営")}, - {0x1f23b, 0, 0, 0, g(Yes, No, false, false, "", "配")}, - {0x1f23c, 0, 0, 0, f(Yes, false, "")}, - {0x1f240, 0, 0, 0, g(Yes, No, false, false, "", "〔本〕")}, - {0x1f241, 0, 0, 0, g(Yes, No, false, false, "", "〔三〕")}, - {0x1f242, 0, 0, 0, g(Yes, No, false, false, "", "〔二〕")}, - {0x1f243, 0, 0, 0, g(Yes, No, false, false, "", "〔安〕")}, - {0x1f244, 0, 0, 0, g(Yes, No, false, false, "", "〔点〕")}, - {0x1f245, 0, 0, 0, g(Yes, No, false, false, "", "〔打〕")}, - {0x1f246, 0, 0, 0, g(Yes, No, false, false, "", "〔盗〕")}, - {0x1f247, 0, 0, 0, g(Yes, No, false, false, "", "〔勝〕")}, - {0x1f248, 0, 0, 0, g(Yes, No, false, false, "", "〔敗〕")}, - {0x1f249, 0, 0, 0, f(Yes, false, "")}, - {0x1f250, 0, 0, 0, g(Yes, No, false, false, "", "得")}, - {0x1f251, 0, 0, 0, g(Yes, No, false, false, "", "可")}, - {0x1f252, 0, 0, 0, f(Yes, false, "")}, - {0x2f800, 0, 0, 0, f(No, false, "丽")}, - {0x2f801, 0, 0, 0, f(No, false, "丸")}, - {0x2f802, 0, 0, 0, f(No, false, "乁")}, - {0x2f803, 0, 0, 0, f(No, false, "𠄢")}, - {0x2f804, 0, 0, 0, f(No, false, "你")}, - {0x2f805, 0, 0, 0, f(No, false, "侮")}, - {0x2f806, 0, 0, 0, f(No, false, "侻")}, - {0x2f807, 0, 0, 0, f(No, false, "倂")}, - {0x2f808, 0, 0, 0, f(No, false, "偺")}, - {0x2f809, 0, 0, 0, f(No, false, "備")}, - {0x2f80a, 0, 0, 0, f(No, false, "僧")}, - {0x2f80b, 0, 0, 0, f(No, false, "像")}, - {0x2f80c, 0, 0, 0, f(No, false, "㒞")}, - {0x2f80d, 0, 0, 0, f(No, false, "𠘺")}, - {0x2f80e, 0, 0, 0, f(No, false, "免")}, - {0x2f80f, 0, 0, 0, f(No, false, "兔")}, - {0x2f810, 0, 0, 0, f(No, false, "兤")}, - {0x2f811, 0, 0, 0, f(No, false, "具")}, - {0x2f812, 0, 0, 0, f(No, false, "𠔜")}, - {0x2f813, 0, 0, 0, f(No, false, "㒹")}, - {0x2f814, 0, 0, 0, f(No, false, "內")}, - {0x2f815, 0, 0, 0, f(No, false, "再")}, - {0x2f816, 0, 0, 0, f(No, false, "𠕋")}, - {0x2f817, 0, 0, 0, f(No, false, "冗")}, - {0x2f818, 0, 0, 0, f(No, false, "冤")}, - {0x2f819, 0, 0, 0, f(No, false, "仌")}, - {0x2f81a, 0, 0, 0, f(No, false, "冬")}, - {0x2f81b, 0, 0, 0, f(No, false, "况")}, - {0x2f81c, 0, 0, 0, f(No, false, "𩇟")}, - {0x2f81d, 0, 0, 0, f(No, false, "凵")}, - {0x2f81e, 0, 0, 0, f(No, false, "刃")}, - {0x2f81f, 0, 0, 0, f(No, false, "㓟")}, - {0x2f820, 0, 0, 0, f(No, false, "刻")}, - {0x2f821, 0, 0, 0, f(No, false, "剆")}, - {0x2f822, 0, 0, 0, f(No, false, "割")}, - {0x2f823, 0, 0, 0, f(No, false, "剷")}, - {0x2f824, 0, 0, 0, f(No, false, "㔕")}, - {0x2f825, 0, 0, 0, f(No, false, "勇")}, - {0x2f826, 0, 0, 0, f(No, false, "勉")}, - {0x2f827, 0, 0, 0, f(No, false, "勤")}, - {0x2f828, 0, 0, 0, f(No, false, "勺")}, - {0x2f829, 0, 0, 0, f(No, false, "包")}, - {0x2f82a, 0, 0, 0, f(No, false, "匆")}, - {0x2f82b, 0, 0, 0, f(No, false, "北")}, - {0x2f82c, 0, 0, 0, f(No, false, "卉")}, - {0x2f82d, 0, 0, 0, f(No, false, "卑")}, - {0x2f82e, 0, 0, 0, f(No, false, "博")}, - {0x2f82f, 0, 0, 0, f(No, false, "即")}, - {0x2f830, 0, 0, 0, f(No, false, "卽")}, - {0x2f831, 0, 0, 0, f(No, false, "卿")}, - {0x2f834, 0, 0, 0, f(No, false, "𠨬")}, - {0x2f835, 0, 0, 0, f(No, false, "灰")}, - {0x2f836, 0, 0, 0, f(No, false, "及")}, - {0x2f837, 0, 0, 0, f(No, false, "叟")}, - {0x2f838, 0, 0, 0, f(No, false, "𠭣")}, - {0x2f839, 0, 0, 0, f(No, false, "叫")}, - {0x2f83a, 0, 0, 0, f(No, false, "叱")}, - {0x2f83b, 0, 0, 0, f(No, false, "吆")}, - {0x2f83c, 0, 0, 0, f(No, false, "咞")}, - {0x2f83d, 0, 0, 0, f(No, false, "吸")}, - {0x2f83e, 0, 0, 0, f(No, false, "呈")}, - {0x2f83f, 0, 0, 0, f(No, false, "周")}, - {0x2f840, 0, 0, 0, f(No, false, "咢")}, - {0x2f841, 0, 0, 0, f(No, false, "哶")}, - {0x2f842, 0, 0, 0, f(No, false, "唐")}, - {0x2f843, 0, 0, 0, f(No, false, "啓")}, - {0x2f844, 0, 0, 0, f(No, false, "啣")}, - {0x2f845, 0, 0, 0, f(No, false, "善")}, - {0x2f847, 0, 0, 0, f(No, false, "喙")}, - {0x2f848, 0, 0, 0, f(No, false, "喫")}, - {0x2f849, 0, 0, 0, f(No, false, "喳")}, - {0x2f84a, 0, 0, 0, f(No, false, "嗂")}, - {0x2f84b, 0, 0, 0, f(No, false, "圖")}, - {0x2f84c, 0, 0, 0, f(No, false, "嘆")}, - {0x2f84d, 0, 0, 0, f(No, false, "圗")}, - {0x2f84e, 0, 0, 0, f(No, false, "噑")}, - {0x2f84f, 0, 0, 0, f(No, false, "噴")}, - {0x2f850, 0, 0, 0, f(No, false, "切")}, - {0x2f851, 0, 0, 0, f(No, false, "壮")}, - {0x2f852, 0, 0, 0, f(No, false, "城")}, - {0x2f853, 0, 0, 0, f(No, false, "埴")}, - {0x2f854, 0, 0, 0, f(No, false, "堍")}, - {0x2f855, 0, 0, 0, f(No, false, "型")}, - {0x2f856, 0, 0, 0, f(No, false, "堲")}, - {0x2f857, 0, 0, 0, f(No, false, "報")}, - {0x2f858, 0, 0, 0, f(No, false, "墬")}, - {0x2f859, 0, 0, 0, f(No, false, "𡓤")}, - {0x2f85a, 0, 0, 0, f(No, false, "売")}, - {0x2f85b, 0, 0, 0, f(No, false, "壷")}, - {0x2f85c, 0, 0, 0, f(No, false, "夆")}, - {0x2f85d, 0, 0, 0, f(No, false, "多")}, - {0x2f85e, 0, 0, 0, f(No, false, "夢")}, - {0x2f85f, 0, 0, 0, f(No, false, "奢")}, - {0x2f860, 0, 0, 0, f(No, false, "𡚨")}, - {0x2f861, 0, 0, 0, f(No, false, "𡛪")}, - {0x2f862, 0, 0, 0, f(No, false, "姬")}, - {0x2f863, 0, 0, 0, f(No, false, "娛")}, - {0x2f864, 0, 0, 0, f(No, false, "娧")}, - {0x2f865, 0, 0, 0, f(No, false, "姘")}, - {0x2f866, 0, 0, 0, f(No, false, "婦")}, - {0x2f867, 0, 0, 0, f(No, false, "㛮")}, - {0x2f868, 0, 0, 0, f(No, false, "㛼")}, - {0x2f869, 0, 0, 0, f(No, false, "嬈")}, - {0x2f86a, 0, 0, 0, f(No, false, "嬾")}, - {0x2f86c, 0, 0, 0, f(No, false, "𡧈")}, - {0x2f86d, 0, 0, 0, f(No, false, "寃")}, - {0x2f86e, 0, 0, 0, f(No, false, "寘")}, - {0x2f86f, 0, 0, 0, f(No, false, "寧")}, - {0x2f870, 0, 0, 0, f(No, false, "寳")}, - {0x2f871, 0, 0, 0, f(No, false, "𡬘")}, - {0x2f872, 0, 0, 0, f(No, false, "寿")}, - {0x2f873, 0, 0, 0, f(No, false, "将")}, - {0x2f874, 0, 0, 0, f(No, false, "当")}, - {0x2f875, 0, 0, 0, f(No, false, "尢")}, - {0x2f876, 0, 0, 0, f(No, false, "㞁")}, - {0x2f877, 0, 0, 0, f(No, false, "屠")}, - {0x2f878, 0, 0, 0, f(No, false, "屮")}, - {0x2f879, 0, 0, 0, f(No, false, "峀")}, - {0x2f87a, 0, 0, 0, f(No, false, "岍")}, - {0x2f87b, 0, 0, 0, f(No, false, "𡷤")}, - {0x2f87c, 0, 0, 0, f(No, false, "嵃")}, - {0x2f87d, 0, 0, 0, f(No, false, "𡷦")}, - {0x2f87e, 0, 0, 0, f(No, false, "嵮")}, - {0x2f87f, 0, 0, 0, f(No, false, "嵫")}, - {0x2f880, 0, 0, 0, f(No, false, "嵼")}, - {0x2f881, 0, 0, 0, f(No, false, "巡")}, - {0x2f882, 0, 0, 0, f(No, false, "巢")}, - {0x2f883, 0, 0, 0, f(No, false, "㠯")}, - {0x2f884, 0, 0, 0, f(No, false, "巽")}, - {0x2f885, 0, 0, 0, f(No, false, "帨")}, - {0x2f886, 0, 0, 0, f(No, false, "帽")}, - {0x2f887, 0, 0, 0, f(No, false, "幩")}, - {0x2f888, 0, 0, 0, f(No, false, "㡢")}, - {0x2f889, 0, 0, 0, f(No, false, "𢆃")}, - {0x2f88a, 0, 0, 0, f(No, false, "㡼")}, - {0x2f88b, 0, 0, 0, f(No, false, "庰")}, - {0x2f88c, 0, 0, 0, f(No, false, "庳")}, - {0x2f88d, 0, 0, 0, f(No, false, "庶")}, - {0x2f88e, 0, 0, 0, f(No, false, "廊")}, - {0x2f88f, 0, 0, 0, f(No, false, "𪎒")}, - {0x2f890, 0, 0, 0, f(No, false, "廾")}, - {0x2f891, 0, 0, 0, f(No, false, "𢌱")}, - {0x2f893, 0, 0, 0, f(No, false, "舁")}, - {0x2f894, 0, 0, 0, f(No, false, "弢")}, - {0x2f896, 0, 0, 0, f(No, false, "㣇")}, - {0x2f897, 0, 0, 0, f(No, false, "𣊸")}, - {0x2f898, 0, 0, 0, f(No, false, "𦇚")}, - {0x2f899, 0, 0, 0, f(No, false, "形")}, - {0x2f89a, 0, 0, 0, f(No, false, "彫")}, - {0x2f89b, 0, 0, 0, f(No, false, "㣣")}, - {0x2f89c, 0, 0, 0, f(No, false, "徚")}, - {0x2f89d, 0, 0, 0, f(No, false, "忍")}, - {0x2f89e, 0, 0, 0, f(No, false, "志")}, - {0x2f89f, 0, 0, 0, f(No, false, "忹")}, - {0x2f8a0, 0, 0, 0, f(No, false, "悁")}, - {0x2f8a1, 0, 0, 0, f(No, false, "㤺")}, - {0x2f8a2, 0, 0, 0, f(No, false, "㤜")}, - {0x2f8a3, 0, 0, 0, f(No, false, "悔")}, - {0x2f8a4, 0, 0, 0, f(No, false, "𢛔")}, - {0x2f8a5, 0, 0, 0, f(No, false, "惇")}, - {0x2f8a6, 0, 0, 0, f(No, false, "慈")}, - {0x2f8a7, 0, 0, 0, f(No, false, "慌")}, - {0x2f8a8, 0, 0, 0, f(No, false, "慎")}, - {0x2f8a9, 0, 0, 0, f(No, false, "慌")}, - {0x2f8aa, 0, 0, 0, f(No, false, "慺")}, - {0x2f8ab, 0, 0, 0, f(No, false, "憎")}, - {0x2f8ac, 0, 0, 0, f(No, false, "憲")}, - {0x2f8ad, 0, 0, 0, f(No, false, "憤")}, - {0x2f8ae, 0, 0, 0, f(No, false, "憯")}, - {0x2f8af, 0, 0, 0, f(No, false, "懞")}, - {0x2f8b0, 0, 0, 0, f(No, false, "懲")}, - {0x2f8b1, 0, 0, 0, f(No, false, "懶")}, - {0x2f8b2, 0, 0, 0, f(No, false, "成")}, - {0x2f8b3, 0, 0, 0, f(No, false, "戛")}, - {0x2f8b4, 0, 0, 0, f(No, false, "扝")}, - {0x2f8b5, 0, 0, 0, f(No, false, "抱")}, - {0x2f8b6, 0, 0, 0, f(No, false, "拔")}, - {0x2f8b7, 0, 0, 0, f(No, false, "捐")}, - {0x2f8b8, 0, 0, 0, f(No, false, "𢬌")}, - {0x2f8b9, 0, 0, 0, f(No, false, "挽")}, - {0x2f8ba, 0, 0, 0, f(No, false, "拼")}, - {0x2f8bb, 0, 0, 0, f(No, false, "捨")}, - {0x2f8bc, 0, 0, 0, f(No, false, "掃")}, - {0x2f8bd, 0, 0, 0, f(No, false, "揤")}, - {0x2f8be, 0, 0, 0, f(No, false, "𢯱")}, - {0x2f8bf, 0, 0, 0, f(No, false, "搢")}, - {0x2f8c0, 0, 0, 0, f(No, false, "揅")}, - {0x2f8c1, 0, 0, 0, f(No, false, "掩")}, - {0x2f8c2, 0, 0, 0, f(No, false, "㨮")}, - {0x2f8c3, 0, 0, 0, f(No, false, "摩")}, - {0x2f8c4, 0, 0, 0, f(No, false, "摾")}, - {0x2f8c5, 0, 0, 0, f(No, false, "撝")}, - {0x2f8c6, 0, 0, 0, f(No, false, "摷")}, - {0x2f8c7, 0, 0, 0, f(No, false, "㩬")}, - {0x2f8c8, 0, 0, 0, f(No, false, "敏")}, - {0x2f8c9, 0, 0, 0, f(No, false, "敬")}, - {0x2f8ca, 0, 0, 0, f(No, false, "𣀊")}, - {0x2f8cb, 0, 0, 0, f(No, false, "旣")}, - {0x2f8cc, 0, 0, 0, f(No, false, "書")}, - {0x2f8cd, 0, 0, 0, f(No, false, "晉")}, - {0x2f8ce, 0, 0, 0, f(No, false, "㬙")}, - {0x2f8cf, 0, 0, 0, f(No, false, "暑")}, - {0x2f8d0, 0, 0, 0, f(No, false, "㬈")}, - {0x2f8d1, 0, 0, 0, f(No, false, "㫤")}, - {0x2f8d2, 0, 0, 0, f(No, false, "冒")}, - {0x2f8d3, 0, 0, 0, f(No, false, "冕")}, - {0x2f8d4, 0, 0, 0, f(No, false, "最")}, - {0x2f8d5, 0, 0, 0, f(No, false, "暜")}, - {0x2f8d6, 0, 0, 0, f(No, false, "肭")}, - {0x2f8d7, 0, 0, 0, f(No, false, "䏙")}, - {0x2f8d8, 0, 0, 0, f(No, false, "朗")}, - {0x2f8d9, 0, 0, 0, f(No, false, "望")}, - {0x2f8da, 0, 0, 0, f(No, false, "朡")}, - {0x2f8db, 0, 0, 0, f(No, false, "杞")}, - {0x2f8dc, 0, 0, 0, f(No, false, "杓")}, - {0x2f8dd, 0, 0, 0, f(No, false, "𣏃")}, - {0x2f8de, 0, 0, 0, f(No, false, "㭉")}, - {0x2f8df, 0, 0, 0, f(No, false, "柺")}, - {0x2f8e0, 0, 0, 0, f(No, false, "枅")}, - {0x2f8e1, 0, 0, 0, f(No, false, "桒")}, - {0x2f8e2, 0, 0, 0, f(No, false, "梅")}, - {0x2f8e3, 0, 0, 0, f(No, false, "𣑭")}, - {0x2f8e4, 0, 0, 0, f(No, false, "梎")}, - {0x2f8e5, 0, 0, 0, f(No, false, "栟")}, - {0x2f8e6, 0, 0, 0, f(No, false, "椔")}, - {0x2f8e7, 0, 0, 0, f(No, false, "㮝")}, - {0x2f8e8, 0, 0, 0, f(No, false, "楂")}, - {0x2f8e9, 0, 0, 0, f(No, false, "榣")}, - {0x2f8ea, 0, 0, 0, f(No, false, "槪")}, - {0x2f8eb, 0, 0, 0, f(No, false, "檨")}, - {0x2f8ec, 0, 0, 0, f(No, false, "𣚣")}, - {0x2f8ed, 0, 0, 0, f(No, false, "櫛")}, - {0x2f8ee, 0, 0, 0, f(No, false, "㰘")}, - {0x2f8ef, 0, 0, 0, f(No, false, "次")}, - {0x2f8f0, 0, 0, 0, f(No, false, "𣢧")}, - {0x2f8f1, 0, 0, 0, f(No, false, "歔")}, - {0x2f8f2, 0, 0, 0, f(No, false, "㱎")}, - {0x2f8f3, 0, 0, 0, f(No, false, "歲")}, - {0x2f8f4, 0, 0, 0, f(No, false, "殟")}, - {0x2f8f5, 0, 0, 0, f(No, false, "殺")}, - {0x2f8f6, 0, 0, 0, f(No, false, "殻")}, - {0x2f8f7, 0, 0, 0, f(No, false, "𣪍")}, - {0x2f8f8, 0, 0, 0, f(No, false, "𡴋")}, - {0x2f8f9, 0, 0, 0, f(No, false, "𣫺")}, - {0x2f8fa, 0, 0, 0, f(No, false, "汎")}, - {0x2f8fb, 0, 0, 0, f(No, false, "𣲼")}, - {0x2f8fc, 0, 0, 0, f(No, false, "沿")}, - {0x2f8fd, 0, 0, 0, f(No, false, "泍")}, - {0x2f8fe, 0, 0, 0, f(No, false, "汧")}, - {0x2f8ff, 0, 0, 0, f(No, false, "洖")}, - {0x2f900, 0, 0, 0, f(No, false, "派")}, - {0x2f901, 0, 0, 0, f(No, false, "海")}, - {0x2f902, 0, 0, 0, f(No, false, "流")}, - {0x2f903, 0, 0, 0, f(No, false, "浩")}, - {0x2f904, 0, 0, 0, f(No, false, "浸")}, - {0x2f905, 0, 0, 0, f(No, false, "涅")}, - {0x2f906, 0, 0, 0, f(No, false, "𣴞")}, - {0x2f907, 0, 0, 0, f(No, false, "洴")}, - {0x2f908, 0, 0, 0, f(No, false, "港")}, - {0x2f909, 0, 0, 0, f(No, false, "湮")}, - {0x2f90a, 0, 0, 0, f(No, false, "㴳")}, - {0x2f90b, 0, 0, 0, f(No, false, "滋")}, - {0x2f90c, 0, 0, 0, f(No, false, "滇")}, - {0x2f90d, 0, 0, 0, f(No, false, "𣻑")}, - {0x2f90e, 0, 0, 0, f(No, false, "淹")}, - {0x2f90f, 0, 0, 0, f(No, false, "潮")}, - {0x2f910, 0, 0, 0, f(No, false, "𣽞")}, - {0x2f911, 0, 0, 0, f(No, false, "𣾎")}, - {0x2f912, 0, 0, 0, f(No, false, "濆")}, - {0x2f913, 0, 0, 0, f(No, false, "瀹")}, - {0x2f914, 0, 0, 0, f(No, false, "瀞")}, - {0x2f915, 0, 0, 0, f(No, false, "瀛")}, - {0x2f916, 0, 0, 0, f(No, false, "㶖")}, - {0x2f917, 0, 0, 0, f(No, false, "灊")}, - {0x2f918, 0, 0, 0, f(No, false, "災")}, - {0x2f919, 0, 0, 0, f(No, false, "灷")}, - {0x2f91a, 0, 0, 0, f(No, false, "炭")}, - {0x2f91b, 0, 0, 0, f(No, false, "𠔥")}, - {0x2f91c, 0, 0, 0, f(No, false, "煅")}, - {0x2f91d, 0, 0, 0, f(No, false, "𤉣")}, - {0x2f91e, 0, 0, 0, f(No, false, "熜")}, - {0x2f91f, 0, 0, 0, f(No, false, "𤎫")}, - {0x2f920, 0, 0, 0, f(No, false, "爨")}, - {0x2f921, 0, 0, 0, f(No, false, "爵")}, - {0x2f922, 0, 0, 0, f(No, false, "牐")}, - {0x2f923, 0, 0, 0, f(No, false, "𤘈")}, - {0x2f924, 0, 0, 0, f(No, false, "犀")}, - {0x2f925, 0, 0, 0, f(No, false, "犕")}, - {0x2f926, 0, 0, 0, f(No, false, "𤜵")}, - {0x2f927, 0, 0, 0, f(No, false, "𤠔")}, - {0x2f928, 0, 0, 0, f(No, false, "獺")}, - {0x2f929, 0, 0, 0, f(No, false, "王")}, - {0x2f92a, 0, 0, 0, f(No, false, "㺬")}, - {0x2f92b, 0, 0, 0, f(No, false, "玥")}, - {0x2f92c, 0, 0, 0, f(No, false, "㺸")}, - {0x2f92e, 0, 0, 0, f(No, false, "瑇")}, - {0x2f92f, 0, 0, 0, f(No, false, "瑜")}, - {0x2f930, 0, 0, 0, f(No, false, "瑱")}, - {0x2f931, 0, 0, 0, f(No, false, "璅")}, - {0x2f932, 0, 0, 0, f(No, false, "瓊")}, - {0x2f933, 0, 0, 0, f(No, false, "㼛")}, - {0x2f934, 0, 0, 0, f(No, false, "甤")}, - {0x2f935, 0, 0, 0, f(No, false, "𤰶")}, - {0x2f936, 0, 0, 0, f(No, false, "甾")}, - {0x2f937, 0, 0, 0, f(No, false, "𤲒")}, - {0x2f938, 0, 0, 0, f(No, false, "異")}, - {0x2f939, 0, 0, 0, f(No, false, "𢆟")}, - {0x2f93a, 0, 0, 0, f(No, false, "瘐")}, - {0x2f93b, 0, 0, 0, f(No, false, "𤾡")}, - {0x2f93c, 0, 0, 0, f(No, false, "𤾸")}, - {0x2f93d, 0, 0, 0, f(No, false, "𥁄")}, - {0x2f93e, 0, 0, 0, f(No, false, "㿼")}, - {0x2f93f, 0, 0, 0, f(No, false, "䀈")}, - {0x2f940, 0, 0, 0, f(No, false, "直")}, - {0x2f941, 0, 0, 0, f(No, false, "𥃳")}, - {0x2f942, 0, 0, 0, f(No, false, "𥃲")}, - {0x2f943, 0, 0, 0, f(No, false, "𥄙")}, - {0x2f944, 0, 0, 0, f(No, false, "𥄳")}, - {0x2f945, 0, 0, 0, f(No, false, "眞")}, - {0x2f946, 0, 0, 0, f(No, false, "真")}, - {0x2f948, 0, 0, 0, f(No, false, "睊")}, - {0x2f949, 0, 0, 0, f(No, false, "䀹")}, - {0x2f94a, 0, 0, 0, f(No, false, "瞋")}, - {0x2f94b, 0, 0, 0, f(No, false, "䁆")}, - {0x2f94c, 0, 0, 0, f(No, false, "䂖")}, - {0x2f94d, 0, 0, 0, f(No, false, "𥐝")}, - {0x2f94e, 0, 0, 0, f(No, false, "硎")}, - {0x2f94f, 0, 0, 0, f(No, false, "碌")}, - {0x2f950, 0, 0, 0, f(No, false, "磌")}, - {0x2f951, 0, 0, 0, f(No, false, "䃣")}, - {0x2f952, 0, 0, 0, f(No, false, "𥘦")}, - {0x2f953, 0, 0, 0, f(No, false, "祖")}, - {0x2f954, 0, 0, 0, f(No, false, "𥚚")}, - {0x2f955, 0, 0, 0, f(No, false, "𥛅")}, - {0x2f956, 0, 0, 0, f(No, false, "福")}, - {0x2f957, 0, 0, 0, f(No, false, "秫")}, - {0x2f958, 0, 0, 0, f(No, false, "䄯")}, - {0x2f959, 0, 0, 0, f(No, false, "穀")}, - {0x2f95a, 0, 0, 0, f(No, false, "穊")}, - {0x2f95b, 0, 0, 0, f(No, false, "穏")}, - {0x2f95c, 0, 0, 0, f(No, false, "𥥼")}, - {0x2f95d, 0, 0, 0, f(No, false, "𥪧")}, - {0x2f95f, 0, 0, 0, f(No, false, "竮")}, - {0x2f960, 0, 0, 0, f(No, false, "䈂")}, - {0x2f961, 0, 0, 0, f(No, false, "𥮫")}, - {0x2f962, 0, 0, 0, f(No, false, "篆")}, - {0x2f963, 0, 0, 0, f(No, false, "築")}, - {0x2f964, 0, 0, 0, f(No, false, "䈧")}, - {0x2f965, 0, 0, 0, f(No, false, "𥲀")}, - {0x2f966, 0, 0, 0, f(No, false, "糒")}, - {0x2f967, 0, 0, 0, f(No, false, "䊠")}, - {0x2f968, 0, 0, 0, f(No, false, "糨")}, - {0x2f969, 0, 0, 0, f(No, false, "糣")}, - {0x2f96a, 0, 0, 0, f(No, false, "紀")}, - {0x2f96b, 0, 0, 0, f(No, false, "𥾆")}, - {0x2f96c, 0, 0, 0, f(No, false, "絣")}, - {0x2f96d, 0, 0, 0, f(No, false, "䌁")}, - {0x2f96e, 0, 0, 0, f(No, false, "緇")}, - {0x2f96f, 0, 0, 0, f(No, false, "縂")}, - {0x2f970, 0, 0, 0, f(No, false, "繅")}, - {0x2f971, 0, 0, 0, f(No, false, "䌴")}, - {0x2f972, 0, 0, 0, f(No, false, "𦈨")}, - {0x2f973, 0, 0, 0, f(No, false, "𦉇")}, - {0x2f974, 0, 0, 0, f(No, false, "䍙")}, - {0x2f975, 0, 0, 0, f(No, false, "𦋙")}, - {0x2f976, 0, 0, 0, f(No, false, "罺")}, - {0x2f977, 0, 0, 0, f(No, false, "𦌾")}, - {0x2f978, 0, 0, 0, f(No, false, "羕")}, - {0x2f979, 0, 0, 0, f(No, false, "翺")}, - {0x2f97a, 0, 0, 0, f(No, false, "者")}, - {0x2f97b, 0, 0, 0, f(No, false, "𦓚")}, - {0x2f97c, 0, 0, 0, f(No, false, "𦔣")}, - {0x2f97d, 0, 0, 0, f(No, false, "聠")}, - {0x2f97e, 0, 0, 0, f(No, false, "𦖨")}, - {0x2f97f, 0, 0, 0, f(No, false, "聰")}, - {0x2f980, 0, 0, 0, f(No, false, "𣍟")}, - {0x2f981, 0, 0, 0, f(No, false, "䏕")}, - {0x2f982, 0, 0, 0, f(No, false, "育")}, - {0x2f983, 0, 0, 0, f(No, false, "脃")}, - {0x2f984, 0, 0, 0, f(No, false, "䐋")}, - {0x2f985, 0, 0, 0, f(No, false, "脾")}, - {0x2f986, 0, 0, 0, f(No, false, "媵")}, - {0x2f987, 0, 0, 0, f(No, false, "𦞧")}, - {0x2f988, 0, 0, 0, f(No, false, "𦞵")}, - {0x2f989, 0, 0, 0, f(No, false, "𣎓")}, - {0x2f98a, 0, 0, 0, f(No, false, "𣎜")}, - {0x2f98b, 0, 0, 0, f(No, false, "舁")}, - {0x2f98c, 0, 0, 0, f(No, false, "舄")}, - {0x2f98d, 0, 0, 0, f(No, false, "辞")}, - {0x2f98e, 0, 0, 0, f(No, false, "䑫")}, - {0x2f98f, 0, 0, 0, f(No, false, "芑")}, - {0x2f990, 0, 0, 0, f(No, false, "芋")}, - {0x2f991, 0, 0, 0, f(No, false, "芝")}, - {0x2f992, 0, 0, 0, f(No, false, "劳")}, - {0x2f993, 0, 0, 0, f(No, false, "花")}, - {0x2f994, 0, 0, 0, f(No, false, "芳")}, - {0x2f995, 0, 0, 0, f(No, false, "芽")}, - {0x2f996, 0, 0, 0, f(No, false, "苦")}, - {0x2f997, 0, 0, 0, f(No, false, "𦬼")}, - {0x2f998, 0, 0, 0, f(No, false, "若")}, - {0x2f999, 0, 0, 0, f(No, false, "茝")}, - {0x2f99a, 0, 0, 0, f(No, false, "荣")}, - {0x2f99b, 0, 0, 0, f(No, false, "莭")}, - {0x2f99c, 0, 0, 0, f(No, false, "茣")}, - {0x2f99d, 0, 0, 0, f(No, false, "莽")}, - {0x2f99e, 0, 0, 0, f(No, false, "菧")}, - {0x2f99f, 0, 0, 0, f(No, false, "著")}, - {0x2f9a0, 0, 0, 0, f(No, false, "荓")}, - {0x2f9a1, 0, 0, 0, f(No, false, "菊")}, - {0x2f9a2, 0, 0, 0, f(No, false, "菌")}, - {0x2f9a3, 0, 0, 0, f(No, false, "菜")}, - {0x2f9a4, 0, 0, 0, f(No, false, "𦰶")}, - {0x2f9a5, 0, 0, 0, f(No, false, "𦵫")}, - {0x2f9a6, 0, 0, 0, f(No, false, "𦳕")}, - {0x2f9a7, 0, 0, 0, f(No, false, "䔫")}, - {0x2f9a8, 0, 0, 0, f(No, false, "蓱")}, - {0x2f9a9, 0, 0, 0, f(No, false, "蓳")}, - {0x2f9aa, 0, 0, 0, f(No, false, "蔖")}, - {0x2f9ab, 0, 0, 0, f(No, false, "𧏊")}, - {0x2f9ac, 0, 0, 0, f(No, false, "蕤")}, - {0x2f9ad, 0, 0, 0, f(No, false, "𦼬")}, - {0x2f9ae, 0, 0, 0, f(No, false, "䕝")}, - {0x2f9af, 0, 0, 0, f(No, false, "䕡")}, - {0x2f9b0, 0, 0, 0, f(No, false, "𦾱")}, - {0x2f9b1, 0, 0, 0, f(No, false, "𧃒")}, - {0x2f9b2, 0, 0, 0, f(No, false, "䕫")}, - {0x2f9b3, 0, 0, 0, f(No, false, "虐")}, - {0x2f9b4, 0, 0, 0, f(No, false, "虜")}, - {0x2f9b5, 0, 0, 0, f(No, false, "虧")}, - {0x2f9b6, 0, 0, 0, f(No, false, "虩")}, - {0x2f9b7, 0, 0, 0, f(No, false, "蚩")}, - {0x2f9b8, 0, 0, 0, f(No, false, "蚈")}, - {0x2f9b9, 0, 0, 0, f(No, false, "蜎")}, - {0x2f9ba, 0, 0, 0, f(No, false, "蛢")}, - {0x2f9bb, 0, 0, 0, f(No, false, "蝹")}, - {0x2f9bc, 0, 0, 0, f(No, false, "蜨")}, - {0x2f9bd, 0, 0, 0, f(No, false, "蝫")}, - {0x2f9be, 0, 0, 0, f(No, false, "螆")}, - {0x2f9bf, 0, 0, 0, f(No, false, "䗗")}, - {0x2f9c0, 0, 0, 0, f(No, false, "蟡")}, - {0x2f9c1, 0, 0, 0, f(No, false, "蠁")}, - {0x2f9c2, 0, 0, 0, f(No, false, "䗹")}, - {0x2f9c3, 0, 0, 0, f(No, false, "衠")}, - {0x2f9c4, 0, 0, 0, f(No, false, "衣")}, - {0x2f9c5, 0, 0, 0, f(No, false, "𧙧")}, - {0x2f9c6, 0, 0, 0, f(No, false, "裗")}, - {0x2f9c7, 0, 0, 0, f(No, false, "裞")}, - {0x2f9c8, 0, 0, 0, f(No, false, "䘵")}, - {0x2f9c9, 0, 0, 0, f(No, false, "裺")}, - {0x2f9ca, 0, 0, 0, f(No, false, "㒻")}, - {0x2f9cb, 0, 0, 0, f(No, false, "𧢮")}, - {0x2f9cc, 0, 0, 0, f(No, false, "𧥦")}, - {0x2f9cd, 0, 0, 0, f(No, false, "䚾")}, - {0x2f9ce, 0, 0, 0, f(No, false, "䛇")}, - {0x2f9cf, 0, 0, 0, f(No, false, "誠")}, - {0x2f9d0, 0, 0, 0, f(No, false, "諭")}, - {0x2f9d1, 0, 0, 0, f(No, false, "變")}, - {0x2f9d2, 0, 0, 0, f(No, false, "豕")}, - {0x2f9d3, 0, 0, 0, f(No, false, "𧲨")}, - {0x2f9d4, 0, 0, 0, f(No, false, "貫")}, - {0x2f9d5, 0, 0, 0, f(No, false, "賁")}, - {0x2f9d6, 0, 0, 0, f(No, false, "贛")}, - {0x2f9d7, 0, 0, 0, f(No, false, "起")}, - {0x2f9d8, 0, 0, 0, f(No, false, "𧼯")}, - {0x2f9d9, 0, 0, 0, f(No, false, "𠠄")}, - {0x2f9da, 0, 0, 0, f(No, false, "跋")}, - {0x2f9db, 0, 0, 0, f(No, false, "趼")}, - {0x2f9dc, 0, 0, 0, f(No, false, "跰")}, - {0x2f9dd, 0, 0, 0, f(No, false, "𠣞")}, - {0x2f9de, 0, 0, 0, f(No, false, "軔")}, - {0x2f9df, 0, 0, 0, f(No, false, "輸")}, - {0x2f9e0, 0, 0, 0, f(No, false, "𨗒")}, - {0x2f9e1, 0, 0, 0, f(No, false, "𨗭")}, - {0x2f9e2, 0, 0, 0, f(No, false, "邔")}, - {0x2f9e3, 0, 0, 0, f(No, false, "郱")}, - {0x2f9e4, 0, 0, 0, f(No, false, "鄑")}, - {0x2f9e5, 0, 0, 0, f(No, false, "𨜮")}, - {0x2f9e6, 0, 0, 0, f(No, false, "鄛")}, - {0x2f9e7, 0, 0, 0, f(No, false, "鈸")}, - {0x2f9e8, 0, 0, 0, f(No, false, "鋗")}, - {0x2f9e9, 0, 0, 0, f(No, false, "鋘")}, - {0x2f9ea, 0, 0, 0, f(No, false, "鉼")}, - {0x2f9eb, 0, 0, 0, f(No, false, "鏹")}, - {0x2f9ec, 0, 0, 0, f(No, false, "鐕")}, - {0x2f9ed, 0, 0, 0, f(No, false, "𨯺")}, - {0x2f9ee, 0, 0, 0, f(No, false, "開")}, - {0x2f9ef, 0, 0, 0, f(No, false, "䦕")}, - {0x2f9f0, 0, 0, 0, f(No, false, "閷")}, - {0x2f9f1, 0, 0, 0, f(No, false, "𨵷")}, - {0x2f9f2, 0, 0, 0, f(No, false, "䧦")}, - {0x2f9f3, 0, 0, 0, f(No, false, "雃")}, - {0x2f9f4, 0, 0, 0, f(No, false, "嶲")}, - {0x2f9f5, 0, 0, 0, f(No, false, "霣")}, - {0x2f9f6, 0, 0, 0, f(No, false, "𩅅")}, - {0x2f9f7, 0, 0, 0, f(No, false, "𩈚")}, - {0x2f9f8, 0, 0, 0, f(No, false, "䩮")}, - {0x2f9f9, 0, 0, 0, f(No, false, "䩶")}, - {0x2f9fa, 0, 0, 0, f(No, false, "韠")}, - {0x2f9fb, 0, 0, 0, f(No, false, "𩐊")}, - {0x2f9fc, 0, 0, 0, f(No, false, "䪲")}, - {0x2f9fd, 0, 0, 0, f(No, false, "𩒖")}, - {0x2f9fe, 0, 0, 0, f(No, false, "頋")}, - {0x2fa00, 0, 0, 0, f(No, false, "頩")}, - {0x2fa01, 0, 0, 0, f(No, false, "𩖶")}, - {0x2fa02, 0, 0, 0, f(No, false, "飢")}, - {0x2fa03, 0, 0, 0, f(No, false, "䬳")}, - {0x2fa04, 0, 0, 0, f(No, false, "餩")}, - {0x2fa05, 0, 0, 0, f(No, false, "馧")}, - {0x2fa06, 0, 0, 0, f(No, false, "駂")}, - {0x2fa07, 0, 0, 0, f(No, false, "駾")}, - {0x2fa08, 0, 0, 0, f(No, false, "䯎")}, - {0x2fa09, 0, 0, 0, f(No, false, "𩬰")}, - {0x2fa0a, 0, 0, 0, f(No, false, "鬒")}, - {0x2fa0b, 0, 0, 0, f(No, false, "鱀")}, - {0x2fa0c, 0, 0, 0, f(No, false, "鳽")}, - {0x2fa0d, 0, 0, 0, f(No, false, "䳎")}, - {0x2fa0e, 0, 0, 0, f(No, false, "䳭")}, - {0x2fa0f, 0, 0, 0, f(No, false, "鵧")}, - {0x2fa10, 0, 0, 0, f(No, false, "𪃎")}, - {0x2fa11, 0, 0, 0, f(No, false, "䳸")}, - {0x2fa12, 0, 0, 0, f(No, false, "𪄅")}, - {0x2fa13, 0, 0, 0, f(No, false, "𪈎")}, - {0x2fa14, 0, 0, 0, f(No, false, "𪊑")}, - {0x2fa15, 0, 0, 0, f(No, false, "麻")}, - {0x2fa16, 0, 0, 0, f(No, false, "䵖")}, - {0x2fa17, 0, 0, 0, f(No, false, "黹")}, - {0x2fa18, 0, 0, 0, f(No, false, "黾")}, - {0x2fa19, 0, 0, 0, f(No, false, "鼅")}, - {0x2fa1a, 0, 0, 0, f(No, false, "鼏")}, - {0x2fa1b, 0, 0, 0, f(No, false, "鼖")}, - {0x2fa1c, 0, 0, 0, f(No, false, "鼻")}, - {0x2fa1d, 0, 0, 0, f(No, false, "𪘀")}, - {0x2fa1e, 0, 0, 0, f(Yes, false, "")}, -} diff --git a/vendor/golang.org/x/text/unicode/norm/data9.0.0_test.go b/vendor/golang.org/x/text/unicode/norm/data9.0.0_test.go deleted file mode 100644 index b1be64d5..00000000 --- a/vendor/golang.org/x/text/unicode/norm/data9.0.0_test.go +++ /dev/null @@ -1,7409 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build !go1.10 - -package norm - -const ( - Yes = iota - No - Maybe -) - -type formData struct { - qc uint8 - combinesForward bool - decomposition string -} - -type runeData struct { - r rune - ccc uint8 - nLead uint8 - nTrail uint8 - f [2]formData // 0: canonical; 1: compatibility -} - -func f(qc uint8, cf bool, dec string) [2]formData { - return [2]formData{{qc, cf, dec}, {qc, cf, dec}} -} - -func g(qc, qck uint8, cf, cfk bool, d, dk string) [2]formData { - return [2]formData{{qc, cf, d}, {qck, cfk, dk}} -} - -var testData = []runeData{ - {0x0, 0, 0, 0, f(Yes, false, "")}, - {0x3c, 0, 0, 0, f(Yes, true, "")}, - {0x3f, 0, 0, 0, f(Yes, false, "")}, - {0x41, 0, 0, 0, f(Yes, true, "")}, - {0x51, 0, 0, 0, f(Yes, false, "")}, - {0x52, 0, 0, 0, f(Yes, true, "")}, - {0x5b, 0, 0, 0, f(Yes, false, "")}, - {0x61, 0, 0, 0, f(Yes, true, "")}, - {0x71, 0, 0, 0, f(Yes, false, "")}, - {0x72, 0, 0, 0, f(Yes, true, "")}, - {0x7b, 0, 0, 0, f(Yes, false, "")}, - {0xa0, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0xa1, 0, 0, 0, f(Yes, false, "")}, - {0xa8, 0, 0, 1, g(Yes, No, true, false, "", " ̈")}, - {0xa9, 0, 0, 0, f(Yes, false, "")}, - {0xaa, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0xab, 0, 0, 0, f(Yes, false, "")}, - {0xaf, 0, 0, 1, g(Yes, No, false, false, "", " ̄")}, - {0xb0, 0, 0, 0, f(Yes, false, "")}, - {0xb2, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0xb3, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0xb4, 0, 0, 1, g(Yes, No, false, false, "", " ́")}, - {0xb5, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0xb6, 0, 0, 0, f(Yes, false, "")}, - {0xb8, 0, 0, 1, g(Yes, No, false, false, "", " ̧")}, - {0xb9, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0xba, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0xbb, 0, 0, 0, f(Yes, false, "")}, - {0xbc, 0, 0, 0, g(Yes, No, false, false, "", "1⁄4")}, - {0xbd, 0, 0, 0, g(Yes, No, false, false, "", "1⁄2")}, - {0xbe, 0, 0, 0, g(Yes, No, false, false, "", "3⁄4")}, - {0xbf, 0, 0, 0, f(Yes, false, "")}, - {0xc0, 0, 0, 1, f(Yes, false, "À")}, - {0xc1, 0, 0, 1, f(Yes, false, "Á")}, - {0xc2, 0, 0, 1, f(Yes, true, "Â")}, - {0xc3, 0, 0, 1, f(Yes, false, "Ã")}, - {0xc4, 0, 0, 1, f(Yes, true, "Ä")}, - {0xc5, 0, 0, 1, f(Yes, true, "Å")}, - {0xc6, 0, 0, 0, f(Yes, true, "")}, - {0xc7, 0, 0, 1, f(Yes, true, "Ç")}, - {0xc8, 0, 0, 1, f(Yes, false, "È")}, - {0xc9, 0, 0, 1, f(Yes, false, "É")}, - {0xca, 0, 0, 1, f(Yes, true, "Ê")}, - {0xcb, 0, 0, 1, f(Yes, false, "Ë")}, - {0xcc, 0, 0, 1, f(Yes, false, "Ì")}, - {0xcd, 0, 0, 1, f(Yes, false, "Í")}, - {0xce, 0, 0, 1, f(Yes, false, "Î")}, - {0xcf, 0, 0, 1, f(Yes, true, "Ï")}, - {0xd0, 0, 0, 0, f(Yes, false, "")}, - {0xd1, 0, 0, 1, f(Yes, false, "Ñ")}, - {0xd2, 0, 0, 1, f(Yes, false, "Ò")}, - {0xd3, 0, 0, 1, f(Yes, false, "Ó")}, - {0xd4, 0, 0, 1, f(Yes, true, "Ô")}, - {0xd5, 0, 0, 1, f(Yes, true, "Õ")}, - {0xd6, 0, 0, 1, f(Yes, true, "Ö")}, - {0xd7, 0, 0, 0, f(Yes, false, "")}, - {0xd8, 0, 0, 0, f(Yes, true, "")}, - {0xd9, 0, 0, 1, f(Yes, false, "Ù")}, - {0xda, 0, 0, 1, f(Yes, false, "Ú")}, - {0xdb, 0, 0, 1, f(Yes, false, "Û")}, - {0xdc, 0, 0, 1, f(Yes, true, "Ü")}, - {0xdd, 0, 0, 1, f(Yes, false, "Ý")}, - {0xde, 0, 0, 0, f(Yes, false, "")}, - {0xe0, 0, 0, 1, f(Yes, false, "à")}, - {0xe1, 0, 0, 1, f(Yes, false, "á")}, - {0xe2, 0, 0, 1, f(Yes, true, "â")}, - {0xe3, 0, 0, 1, f(Yes, false, "ã")}, - {0xe4, 0, 0, 1, f(Yes, true, "ä")}, - {0xe5, 0, 0, 1, f(Yes, true, "å")}, - {0xe6, 0, 0, 0, f(Yes, true, "")}, - {0xe7, 0, 0, 1, f(Yes, true, "ç")}, - {0xe8, 0, 0, 1, f(Yes, false, "è")}, - {0xe9, 0, 0, 1, f(Yes, false, "é")}, - {0xea, 0, 0, 1, f(Yes, true, "ê")}, - {0xeb, 0, 0, 1, f(Yes, false, "ë")}, - {0xec, 0, 0, 1, f(Yes, false, "ì")}, - {0xed, 0, 0, 1, f(Yes, false, "í")}, - {0xee, 0, 0, 1, f(Yes, false, "î")}, - {0xef, 0, 0, 1, f(Yes, true, "ï")}, - {0xf0, 0, 0, 0, f(Yes, false, "")}, - {0xf1, 0, 0, 1, f(Yes, false, "ñ")}, - {0xf2, 0, 0, 1, f(Yes, false, "ò")}, - {0xf3, 0, 0, 1, f(Yes, false, "ó")}, - {0xf4, 0, 0, 1, f(Yes, true, "ô")}, - {0xf5, 0, 0, 1, f(Yes, true, "õ")}, - {0xf6, 0, 0, 1, f(Yes, true, "ö")}, - {0xf7, 0, 0, 0, f(Yes, false, "")}, - {0xf8, 0, 0, 0, f(Yes, true, "")}, - {0xf9, 0, 0, 1, f(Yes, false, "ù")}, - {0xfa, 0, 0, 1, f(Yes, false, "ú")}, - {0xfb, 0, 0, 1, f(Yes, false, "û")}, - {0xfc, 0, 0, 1, f(Yes, true, "ü")}, - {0xfd, 0, 0, 1, f(Yes, false, "ý")}, - {0xfe, 0, 0, 0, f(Yes, false, "")}, - {0xff, 0, 0, 1, f(Yes, false, "ÿ")}, - {0x100, 0, 0, 1, f(Yes, false, "Ā")}, - {0x101, 0, 0, 1, f(Yes, false, "ā")}, - {0x102, 0, 0, 1, f(Yes, true, "Ă")}, - {0x103, 0, 0, 1, f(Yes, true, "ă")}, - {0x104, 0, 0, 1, f(Yes, false, "Ą")}, - {0x105, 0, 0, 1, f(Yes, false, "ą")}, - {0x106, 0, 0, 1, f(Yes, false, "Ć")}, - {0x107, 0, 0, 1, f(Yes, false, "ć")}, - {0x108, 0, 0, 1, f(Yes, false, "Ĉ")}, - {0x109, 0, 0, 1, f(Yes, false, "ĉ")}, - {0x10a, 0, 0, 1, f(Yes, false, "Ċ")}, - {0x10b, 0, 0, 1, f(Yes, false, "ċ")}, - {0x10c, 0, 0, 1, f(Yes, false, "Č")}, - {0x10d, 0, 0, 1, f(Yes, false, "č")}, - {0x10e, 0, 0, 1, f(Yes, false, "Ď")}, - {0x10f, 0, 0, 1, f(Yes, false, "ď")}, - {0x110, 0, 0, 0, f(Yes, false, "")}, - {0x112, 0, 0, 1, f(Yes, true, "Ē")}, - {0x113, 0, 0, 1, f(Yes, true, "ē")}, - {0x114, 0, 0, 1, f(Yes, false, "Ĕ")}, - {0x115, 0, 0, 1, f(Yes, false, "ĕ")}, - {0x116, 0, 0, 1, f(Yes, false, "Ė")}, - {0x117, 0, 0, 1, f(Yes, false, "ė")}, - {0x118, 0, 0, 1, f(Yes, false, "Ę")}, - {0x119, 0, 0, 1, f(Yes, false, "ę")}, - {0x11a, 0, 0, 1, f(Yes, false, "Ě")}, - {0x11b, 0, 0, 1, f(Yes, false, "ě")}, - {0x11c, 0, 0, 1, f(Yes, false, "Ĝ")}, - {0x11d, 0, 0, 1, f(Yes, false, "ĝ")}, - {0x11e, 0, 0, 1, f(Yes, false, "Ğ")}, - {0x11f, 0, 0, 1, f(Yes, false, "ğ")}, - {0x120, 0, 0, 1, f(Yes, false, "Ġ")}, - {0x121, 0, 0, 1, f(Yes, false, "ġ")}, - {0x122, 0, 0, 1, f(Yes, false, "Ģ")}, - {0x123, 0, 0, 1, f(Yes, false, "ģ")}, - {0x124, 0, 0, 1, f(Yes, false, "Ĥ")}, - {0x125, 0, 0, 1, f(Yes, false, "ĥ")}, - {0x126, 0, 0, 0, f(Yes, false, "")}, - {0x128, 0, 0, 1, f(Yes, false, "Ĩ")}, - {0x129, 0, 0, 1, f(Yes, false, "ĩ")}, - {0x12a, 0, 0, 1, f(Yes, false, "Ī")}, - {0x12b, 0, 0, 1, f(Yes, false, "ī")}, - {0x12c, 0, 0, 1, f(Yes, false, "Ĭ")}, - {0x12d, 0, 0, 1, f(Yes, false, "ĭ")}, - {0x12e, 0, 0, 1, f(Yes, false, "Į")}, - {0x12f, 0, 0, 1, f(Yes, false, "į")}, - {0x130, 0, 0, 1, f(Yes, false, "İ")}, - {0x131, 0, 0, 0, f(Yes, false, "")}, - {0x132, 0, 0, 0, g(Yes, No, false, false, "", "IJ")}, - {0x133, 0, 0, 0, g(Yes, No, false, false, "", "ij")}, - {0x134, 0, 0, 1, f(Yes, false, "Ĵ")}, - {0x135, 0, 0, 1, f(Yes, false, "ĵ")}, - {0x136, 0, 0, 1, f(Yes, false, "Ķ")}, - {0x137, 0, 0, 1, f(Yes, false, "ķ")}, - {0x138, 0, 0, 0, f(Yes, false, "")}, - {0x139, 0, 0, 1, f(Yes, false, "Ĺ")}, - {0x13a, 0, 0, 1, f(Yes, false, "ĺ")}, - {0x13b, 0, 0, 1, f(Yes, false, "Ļ")}, - {0x13c, 0, 0, 1, f(Yes, false, "ļ")}, - {0x13d, 0, 0, 1, f(Yes, false, "Ľ")}, - {0x13e, 0, 0, 1, f(Yes, false, "ľ")}, - {0x13f, 0, 0, 0, g(Yes, No, false, false, "", "L·")}, - {0x140, 0, 0, 0, g(Yes, No, false, false, "", "l·")}, - {0x141, 0, 0, 0, f(Yes, false, "")}, - {0x143, 0, 0, 1, f(Yes, false, "Ń")}, - {0x144, 0, 0, 1, f(Yes, false, "ń")}, - {0x145, 0, 0, 1, f(Yes, false, "Ņ")}, - {0x146, 0, 0, 1, f(Yes, false, "ņ")}, - {0x147, 0, 0, 1, f(Yes, false, "Ň")}, - {0x148, 0, 0, 1, f(Yes, false, "ň")}, - {0x149, 0, 0, 0, g(Yes, No, false, false, "", "ʼn")}, - {0x14a, 0, 0, 0, f(Yes, false, "")}, - {0x14c, 0, 0, 1, f(Yes, true, "Ō")}, - {0x14d, 0, 0, 1, f(Yes, true, "ō")}, - {0x14e, 0, 0, 1, f(Yes, false, "Ŏ")}, - {0x14f, 0, 0, 1, f(Yes, false, "ŏ")}, - {0x150, 0, 0, 1, f(Yes, false, "Ő")}, - {0x151, 0, 0, 1, f(Yes, false, "ő")}, - {0x152, 0, 0, 0, f(Yes, false, "")}, - {0x154, 0, 0, 1, f(Yes, false, "Ŕ")}, - {0x155, 0, 0, 1, f(Yes, false, "ŕ")}, - {0x156, 0, 0, 1, f(Yes, false, "Ŗ")}, - {0x157, 0, 0, 1, f(Yes, false, "ŗ")}, - {0x158, 0, 0, 1, f(Yes, false, "Ř")}, - {0x159, 0, 0, 1, f(Yes, false, "ř")}, - {0x15a, 0, 0, 1, f(Yes, true, "Ś")}, - {0x15b, 0, 0, 1, f(Yes, true, "ś")}, - {0x15c, 0, 0, 1, f(Yes, false, "Ŝ")}, - {0x15d, 0, 0, 1, f(Yes, false, "ŝ")}, - {0x15e, 0, 0, 1, f(Yes, false, "Ş")}, - {0x15f, 0, 0, 1, f(Yes, false, "ş")}, - {0x160, 0, 0, 1, f(Yes, true, "Š")}, - {0x161, 0, 0, 1, f(Yes, true, "š")}, - {0x162, 0, 0, 1, f(Yes, false, "Ţ")}, - {0x163, 0, 0, 1, f(Yes, false, "ţ")}, - {0x164, 0, 0, 1, f(Yes, false, "Ť")}, - {0x165, 0, 0, 1, f(Yes, false, "ť")}, - {0x166, 0, 0, 0, f(Yes, false, "")}, - {0x168, 0, 0, 1, f(Yes, true, "Ũ")}, - {0x169, 0, 0, 1, f(Yes, true, "ũ")}, - {0x16a, 0, 0, 1, f(Yes, true, "Ū")}, - {0x16b, 0, 0, 1, f(Yes, true, "ū")}, - {0x16c, 0, 0, 1, f(Yes, false, "Ŭ")}, - {0x16d, 0, 0, 1, f(Yes, false, "ŭ")}, - {0x16e, 0, 0, 1, f(Yes, false, "Ů")}, - {0x16f, 0, 0, 1, f(Yes, false, "ů")}, - {0x170, 0, 0, 1, f(Yes, false, "Ű")}, - {0x171, 0, 0, 1, f(Yes, false, "ű")}, - {0x172, 0, 0, 1, f(Yes, false, "Ų")}, - {0x173, 0, 0, 1, f(Yes, false, "ų")}, - {0x174, 0, 0, 1, f(Yes, false, "Ŵ")}, - {0x175, 0, 0, 1, f(Yes, false, "ŵ")}, - {0x176, 0, 0, 1, f(Yes, false, "Ŷ")}, - {0x177, 0, 0, 1, f(Yes, false, "ŷ")}, - {0x178, 0, 0, 1, f(Yes, false, "Ÿ")}, - {0x179, 0, 0, 1, f(Yes, false, "Ź")}, - {0x17a, 0, 0, 1, f(Yes, false, "ź")}, - {0x17b, 0, 0, 1, f(Yes, false, "Ż")}, - {0x17c, 0, 0, 1, f(Yes, false, "ż")}, - {0x17d, 0, 0, 1, f(Yes, false, "Ž")}, - {0x17e, 0, 0, 1, f(Yes, false, "ž")}, - {0x17f, 0, 0, 0, g(Yes, No, true, false, "", "s")}, - {0x180, 0, 0, 0, f(Yes, false, "")}, - {0x1a0, 0, 0, 1, f(Yes, true, "Ơ")}, - {0x1a1, 0, 0, 1, f(Yes, true, "ơ")}, - {0x1a2, 0, 0, 0, f(Yes, false, "")}, - {0x1af, 0, 0, 1, f(Yes, true, "Ư")}, - {0x1b0, 0, 0, 1, f(Yes, true, "ư")}, - {0x1b1, 0, 0, 0, f(Yes, false, "")}, - {0x1b7, 0, 0, 0, f(Yes, true, "")}, - {0x1b8, 0, 0, 0, f(Yes, false, "")}, - {0x1c4, 0, 0, 1, g(Yes, No, false, false, "", "DŽ")}, - {0x1c5, 0, 0, 1, g(Yes, No, false, false, "", "Dž")}, - {0x1c6, 0, 0, 1, g(Yes, No, false, false, "", "dž")}, - {0x1c7, 0, 0, 0, g(Yes, No, false, false, "", "LJ")}, - {0x1c8, 0, 0, 0, g(Yes, No, false, false, "", "Lj")}, - {0x1c9, 0, 0, 0, g(Yes, No, false, false, "", "lj")}, - {0x1ca, 0, 0, 0, g(Yes, No, false, false, "", "NJ")}, - {0x1cb, 0, 0, 0, g(Yes, No, false, false, "", "Nj")}, - {0x1cc, 0, 0, 0, g(Yes, No, false, false, "", "nj")}, - {0x1cd, 0, 0, 1, f(Yes, false, "Ǎ")}, - {0x1ce, 0, 0, 1, f(Yes, false, "ǎ")}, - {0x1cf, 0, 0, 1, f(Yes, false, "Ǐ")}, - {0x1d0, 0, 0, 1, f(Yes, false, "ǐ")}, - {0x1d1, 0, 0, 1, f(Yes, false, "Ǒ")}, - {0x1d2, 0, 0, 1, f(Yes, false, "ǒ")}, - {0x1d3, 0, 0, 1, f(Yes, false, "Ǔ")}, - {0x1d4, 0, 0, 1, f(Yes, false, "ǔ")}, - {0x1d5, 0, 0, 2, f(Yes, false, "Ǖ")}, - {0x1d6, 0, 0, 2, f(Yes, false, "ǖ")}, - {0x1d7, 0, 0, 2, f(Yes, false, "Ǘ")}, - {0x1d8, 0, 0, 2, f(Yes, false, "ǘ")}, - {0x1d9, 0, 0, 2, f(Yes, false, "Ǚ")}, - {0x1da, 0, 0, 2, f(Yes, false, "ǚ")}, - {0x1db, 0, 0, 2, f(Yes, false, "Ǜ")}, - {0x1dc, 0, 0, 2, f(Yes, false, "ǜ")}, - {0x1dd, 0, 0, 0, f(Yes, false, "")}, - {0x1de, 0, 0, 2, f(Yes, false, "Ǟ")}, - {0x1df, 0, 0, 2, f(Yes, false, "ǟ")}, - {0x1e0, 0, 0, 2, f(Yes, false, "Ǡ")}, - {0x1e1, 0, 0, 2, f(Yes, false, "ǡ")}, - {0x1e2, 0, 0, 1, f(Yes, false, "Ǣ")}, - {0x1e3, 0, 0, 1, f(Yes, false, "ǣ")}, - {0x1e4, 0, 0, 0, f(Yes, false, "")}, - {0x1e6, 0, 0, 1, f(Yes, false, "Ǧ")}, - {0x1e7, 0, 0, 1, f(Yes, false, "ǧ")}, - {0x1e8, 0, 0, 1, f(Yes, false, "Ǩ")}, - {0x1e9, 0, 0, 1, f(Yes, false, "ǩ")}, - {0x1ea, 0, 0, 1, f(Yes, true, "Ǫ")}, - {0x1eb, 0, 0, 1, f(Yes, true, "ǫ")}, - {0x1ec, 0, 0, 2, f(Yes, false, "Ǭ")}, - {0x1ed, 0, 0, 2, f(Yes, false, "ǭ")}, - {0x1ee, 0, 0, 1, f(Yes, false, "Ǯ")}, - {0x1ef, 0, 0, 1, f(Yes, false, "ǯ")}, - {0x1f0, 0, 0, 1, f(Yes, false, "ǰ")}, - {0x1f1, 0, 0, 0, g(Yes, No, false, false, "", "DZ")}, - {0x1f2, 0, 0, 0, g(Yes, No, false, false, "", "Dz")}, - {0x1f3, 0, 0, 0, g(Yes, No, false, false, "", "dz")}, - {0x1f4, 0, 0, 1, f(Yes, false, "Ǵ")}, - {0x1f5, 0, 0, 1, f(Yes, false, "ǵ")}, - {0x1f6, 0, 0, 0, f(Yes, false, "")}, - {0x1f8, 0, 0, 1, f(Yes, false, "Ǹ")}, - {0x1f9, 0, 0, 1, f(Yes, false, "ǹ")}, - {0x1fa, 0, 0, 2, f(Yes, false, "Ǻ")}, - {0x1fb, 0, 0, 2, f(Yes, false, "ǻ")}, - {0x1fc, 0, 0, 1, f(Yes, false, "Ǽ")}, - {0x1fd, 0, 0, 1, f(Yes, false, "ǽ")}, - {0x1fe, 0, 0, 1, f(Yes, false, "Ǿ")}, - {0x1ff, 0, 0, 1, f(Yes, false, "ǿ")}, - {0x200, 0, 0, 1, f(Yes, false, "Ȁ")}, - {0x201, 0, 0, 1, f(Yes, false, "ȁ")}, - {0x202, 0, 0, 1, f(Yes, false, "Ȃ")}, - {0x203, 0, 0, 1, f(Yes, false, "ȃ")}, - {0x204, 0, 0, 1, f(Yes, false, "Ȅ")}, - {0x205, 0, 0, 1, f(Yes, false, "ȅ")}, - {0x206, 0, 0, 1, f(Yes, false, "Ȇ")}, - {0x207, 0, 0, 1, f(Yes, false, "ȇ")}, - {0x208, 0, 0, 1, f(Yes, false, "Ȉ")}, - {0x209, 0, 0, 1, f(Yes, false, "ȉ")}, - {0x20a, 0, 0, 1, f(Yes, false, "Ȋ")}, - {0x20b, 0, 0, 1, f(Yes, false, "ȋ")}, - {0x20c, 0, 0, 1, f(Yes, false, "Ȍ")}, - {0x20d, 0, 0, 1, f(Yes, false, "ȍ")}, - {0x20e, 0, 0, 1, f(Yes, false, "Ȏ")}, - {0x20f, 0, 0, 1, f(Yes, false, "ȏ")}, - {0x210, 0, 0, 1, f(Yes, false, "Ȑ")}, - {0x211, 0, 0, 1, f(Yes, false, "ȑ")}, - {0x212, 0, 0, 1, f(Yes, false, "Ȓ")}, - {0x213, 0, 0, 1, f(Yes, false, "ȓ")}, - {0x214, 0, 0, 1, f(Yes, false, "Ȕ")}, - {0x215, 0, 0, 1, f(Yes, false, "ȕ")}, - {0x216, 0, 0, 1, f(Yes, false, "Ȗ")}, - {0x217, 0, 0, 1, f(Yes, false, "ȗ")}, - {0x218, 0, 0, 1, f(Yes, false, "Ș")}, - {0x219, 0, 0, 1, f(Yes, false, "ș")}, - {0x21a, 0, 0, 1, f(Yes, false, "Ț")}, - {0x21b, 0, 0, 1, f(Yes, false, "ț")}, - {0x21c, 0, 0, 0, f(Yes, false, "")}, - {0x21e, 0, 0, 1, f(Yes, false, "Ȟ")}, - {0x21f, 0, 0, 1, f(Yes, false, "ȟ")}, - {0x220, 0, 0, 0, f(Yes, false, "")}, - {0x226, 0, 0, 1, f(Yes, true, "Ȧ")}, - {0x227, 0, 0, 1, f(Yes, true, "ȧ")}, - {0x228, 0, 0, 1, f(Yes, true, "Ȩ")}, - {0x229, 0, 0, 1, f(Yes, true, "ȩ")}, - {0x22a, 0, 0, 2, f(Yes, false, "Ȫ")}, - {0x22b, 0, 0, 2, f(Yes, false, "ȫ")}, - {0x22c, 0, 0, 2, f(Yes, false, "Ȭ")}, - {0x22d, 0, 0, 2, f(Yes, false, "ȭ")}, - {0x22e, 0, 0, 1, f(Yes, true, "Ȯ")}, - {0x22f, 0, 0, 1, f(Yes, true, "ȯ")}, - {0x230, 0, 0, 2, f(Yes, false, "Ȱ")}, - {0x231, 0, 0, 2, f(Yes, false, "ȱ")}, - {0x232, 0, 0, 1, f(Yes, false, "Ȳ")}, - {0x233, 0, 0, 1, f(Yes, false, "ȳ")}, - {0x234, 0, 0, 0, f(Yes, false, "")}, - {0x292, 0, 0, 0, f(Yes, true, "")}, - {0x293, 0, 0, 0, f(Yes, false, "")}, - {0x2b0, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x2b1, 0, 0, 0, g(Yes, No, false, false, "", "ɦ")}, - {0x2b2, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x2b3, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x2b4, 0, 0, 0, g(Yes, No, false, false, "", "ɹ")}, - {0x2b5, 0, 0, 0, g(Yes, No, false, false, "", "ɻ")}, - {0x2b6, 0, 0, 0, g(Yes, No, false, false, "", "ʁ")}, - {0x2b7, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x2b8, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x2b9, 0, 0, 0, f(Yes, false, "")}, - {0x2d8, 0, 0, 1, g(Yes, No, false, false, "", " ̆")}, - {0x2d9, 0, 0, 1, g(Yes, No, false, false, "", " ̇")}, - {0x2da, 0, 0, 1, g(Yes, No, false, false, "", " ̊")}, - {0x2db, 0, 0, 1, g(Yes, No, false, false, "", " ̨")}, - {0x2dc, 0, 0, 1, g(Yes, No, false, false, "", " ̃")}, - {0x2dd, 0, 0, 1, g(Yes, No, false, false, "", " ̋")}, - {0x2de, 0, 0, 0, f(Yes, false, "")}, - {0x2e0, 0, 0, 0, g(Yes, No, false, false, "", "ɣ")}, - {0x2e1, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x2e2, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x2e3, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x2e4, 0, 0, 0, g(Yes, No, false, false, "", "ʕ")}, - {0x2e5, 0, 0, 0, f(Yes, false, "")}, - {0x300, 230, 1, 1, f(Maybe, false, "")}, - {0x305, 230, 1, 1, f(Yes, false, "")}, - {0x306, 230, 1, 1, f(Maybe, false, "")}, - {0x30d, 230, 1, 1, f(Yes, false, "")}, - {0x30f, 230, 1, 1, f(Maybe, false, "")}, - {0x310, 230, 1, 1, f(Yes, false, "")}, - {0x311, 230, 1, 1, f(Maybe, false, "")}, - {0x312, 230, 1, 1, f(Yes, false, "")}, - {0x313, 230, 1, 1, f(Maybe, false, "")}, - {0x315, 232, 1, 1, f(Yes, false, "")}, - {0x316, 220, 1, 1, f(Yes, false, "")}, - {0x31a, 232, 1, 1, f(Yes, false, "")}, - {0x31b, 216, 1, 1, f(Maybe, false, "")}, - {0x31c, 220, 1, 1, f(Yes, false, "")}, - {0x321, 202, 1, 1, f(Yes, false, "")}, - {0x323, 220, 1, 1, f(Maybe, false, "")}, - {0x327, 202, 1, 1, f(Maybe, false, "")}, - {0x329, 220, 1, 1, f(Yes, false, "")}, - {0x32d, 220, 1, 1, f(Maybe, false, "")}, - {0x32f, 220, 1, 1, f(Yes, false, "")}, - {0x330, 220, 1, 1, f(Maybe, false, "")}, - {0x332, 220, 1, 1, f(Yes, false, "")}, - {0x334, 1, 1, 1, f(Yes, false, "")}, - {0x338, 1, 1, 1, f(Maybe, false, "")}, - {0x339, 220, 1, 1, f(Yes, false, "")}, - {0x33d, 230, 1, 1, f(Yes, false, "")}, - {0x340, 230, 1, 1, f(No, false, "̀")}, - {0x341, 230, 1, 1, f(No, false, "́")}, - {0x342, 230, 1, 1, f(Maybe, false, "")}, - {0x343, 230, 1, 1, f(No, false, "̓")}, - {0x344, 230, 2, 2, f(No, false, "̈́")}, - {0x345, 240, 1, 1, f(Maybe, false, "")}, - {0x346, 230, 1, 1, f(Yes, false, "")}, - {0x347, 220, 1, 1, f(Yes, false, "")}, - {0x34a, 230, 1, 1, f(Yes, false, "")}, - {0x34d, 220, 1, 1, f(Yes, false, "")}, - {0x34f, 0, 0, 0, f(Yes, false, "")}, - {0x350, 230, 1, 1, f(Yes, false, "")}, - {0x353, 220, 1, 1, f(Yes, false, "")}, - {0x357, 230, 1, 1, f(Yes, false, "")}, - {0x358, 232, 1, 1, f(Yes, false, "")}, - {0x359, 220, 1, 1, f(Yes, false, "")}, - {0x35b, 230, 1, 1, f(Yes, false, "")}, - {0x35c, 233, 1, 1, f(Yes, false, "")}, - {0x35d, 234, 1, 1, f(Yes, false, "")}, - {0x35f, 233, 1, 1, f(Yes, false, "")}, - {0x360, 234, 1, 1, f(Yes, false, "")}, - {0x362, 233, 1, 1, f(Yes, false, "")}, - {0x363, 230, 1, 1, f(Yes, false, "")}, - {0x370, 0, 0, 0, f(Yes, false, "")}, - {0x374, 0, 0, 0, f(No, false, "ʹ")}, - {0x375, 0, 0, 0, f(Yes, false, "")}, - {0x37a, 0, 0, 1, g(Yes, No, false, false, "", " ͅ")}, - {0x37b, 0, 0, 0, f(Yes, false, "")}, - {0x37e, 0, 0, 0, f(No, false, ";")}, - {0x37f, 0, 0, 0, f(Yes, false, "")}, - {0x384, 0, 0, 1, g(Yes, No, false, false, "", " ́")}, - {0x385, 0, 0, 2, g(Yes, No, false, false, "΅", " ̈́")}, - {0x386, 0, 0, 1, f(Yes, false, "Ά")}, - {0x387, 0, 0, 0, f(No, false, "·")}, - {0x388, 0, 0, 1, f(Yes, false, "Έ")}, - {0x389, 0, 0, 1, f(Yes, false, "Ή")}, - {0x38a, 0, 0, 1, f(Yes, false, "Ί")}, - {0x38b, 0, 0, 0, f(Yes, false, "")}, - {0x38c, 0, 0, 1, f(Yes, false, "Ό")}, - {0x38d, 0, 0, 0, f(Yes, false, "")}, - {0x38e, 0, 0, 1, f(Yes, false, "Ύ")}, - {0x38f, 0, 0, 1, f(Yes, false, "Ώ")}, - {0x390, 0, 0, 2, f(Yes, false, "ΐ")}, - {0x391, 0, 0, 0, f(Yes, true, "")}, - {0x392, 0, 0, 0, f(Yes, false, "")}, - {0x395, 0, 0, 0, f(Yes, true, "")}, - {0x396, 0, 0, 0, f(Yes, false, "")}, - {0x397, 0, 0, 0, f(Yes, true, "")}, - {0x398, 0, 0, 0, f(Yes, false, "")}, - {0x399, 0, 0, 0, f(Yes, true, "")}, - {0x39a, 0, 0, 0, f(Yes, false, "")}, - {0x39f, 0, 0, 0, f(Yes, true, "")}, - {0x3a0, 0, 0, 0, f(Yes, false, "")}, - {0x3a1, 0, 0, 0, f(Yes, true, "")}, - {0x3a2, 0, 0, 0, f(Yes, false, "")}, - {0x3a5, 0, 0, 0, f(Yes, true, "")}, - {0x3a6, 0, 0, 0, f(Yes, false, "")}, - {0x3a9, 0, 0, 0, f(Yes, true, "")}, - {0x3aa, 0, 0, 1, f(Yes, false, "Ϊ")}, - {0x3ab, 0, 0, 1, f(Yes, false, "Ϋ")}, - {0x3ac, 0, 0, 1, f(Yes, true, "ά")}, - {0x3ad, 0, 0, 1, f(Yes, false, "έ")}, - {0x3ae, 0, 0, 1, f(Yes, true, "ή")}, - {0x3af, 0, 0, 1, f(Yes, false, "ί")}, - {0x3b0, 0, 0, 2, f(Yes, false, "ΰ")}, - {0x3b1, 0, 0, 0, f(Yes, true, "")}, - {0x3b2, 0, 0, 0, f(Yes, false, "")}, - {0x3b5, 0, 0, 0, f(Yes, true, "")}, - {0x3b6, 0, 0, 0, f(Yes, false, "")}, - {0x3b7, 0, 0, 0, f(Yes, true, "")}, - {0x3b8, 0, 0, 0, f(Yes, false, "")}, - {0x3b9, 0, 0, 0, f(Yes, true, "")}, - {0x3ba, 0, 0, 0, f(Yes, false, "")}, - {0x3bf, 0, 0, 0, f(Yes, true, "")}, - {0x3c0, 0, 0, 0, f(Yes, false, "")}, - {0x3c1, 0, 0, 0, f(Yes, true, "")}, - {0x3c2, 0, 0, 0, f(Yes, false, "")}, - {0x3c5, 0, 0, 0, f(Yes, true, "")}, - {0x3c6, 0, 0, 0, f(Yes, false, "")}, - {0x3c9, 0, 0, 0, f(Yes, true, "")}, - {0x3ca, 0, 0, 1, f(Yes, true, "ϊ")}, - {0x3cb, 0, 0, 1, f(Yes, true, "ϋ")}, - {0x3cc, 0, 0, 1, f(Yes, false, "ό")}, - {0x3cd, 0, 0, 1, f(Yes, false, "ύ")}, - {0x3ce, 0, 0, 1, f(Yes, true, "ώ")}, - {0x3cf, 0, 0, 0, f(Yes, false, "")}, - {0x3d0, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x3d1, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x3d2, 0, 0, 0, g(Yes, No, true, false, "", "Υ")}, - {0x3d3, 0, 0, 1, g(Yes, No, false, false, "ϓ", "Ύ")}, - {0x3d4, 0, 0, 1, g(Yes, No, false, false, "ϔ", "Ϋ")}, - {0x3d5, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x3d6, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x3d7, 0, 0, 0, f(Yes, false, "")}, - {0x3f0, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x3f1, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x3f2, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x3f3, 0, 0, 0, f(Yes, false, "")}, - {0x3f4, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x3f5, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x3f6, 0, 0, 0, f(Yes, false, "")}, - {0x3f9, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x3fa, 0, 0, 0, f(Yes, false, "")}, - {0x400, 0, 0, 1, f(Yes, false, "Ѐ")}, - {0x401, 0, 0, 1, f(Yes, false, "Ё")}, - {0x402, 0, 0, 0, f(Yes, false, "")}, - {0x403, 0, 0, 1, f(Yes, false, "Ѓ")}, - {0x404, 0, 0, 0, f(Yes, false, "")}, - {0x406, 0, 0, 0, f(Yes, true, "")}, - {0x407, 0, 0, 1, f(Yes, false, "Ї")}, - {0x408, 0, 0, 0, f(Yes, false, "")}, - {0x40c, 0, 0, 1, f(Yes, false, "Ќ")}, - {0x40d, 0, 0, 1, f(Yes, false, "Ѝ")}, - {0x40e, 0, 0, 1, f(Yes, false, "Ў")}, - {0x40f, 0, 0, 0, f(Yes, false, "")}, - {0x410, 0, 0, 0, f(Yes, true, "")}, - {0x411, 0, 0, 0, f(Yes, false, "")}, - {0x413, 0, 0, 0, f(Yes, true, "")}, - {0x414, 0, 0, 0, f(Yes, false, "")}, - {0x415, 0, 0, 0, f(Yes, true, "")}, - {0x419, 0, 0, 1, f(Yes, false, "Й")}, - {0x41a, 0, 0, 0, f(Yes, true, "")}, - {0x41b, 0, 0, 0, f(Yes, false, "")}, - {0x41e, 0, 0, 0, f(Yes, true, "")}, - {0x41f, 0, 0, 0, f(Yes, false, "")}, - {0x423, 0, 0, 0, f(Yes, true, "")}, - {0x424, 0, 0, 0, f(Yes, false, "")}, - {0x427, 0, 0, 0, f(Yes, true, "")}, - {0x428, 0, 0, 0, f(Yes, false, "")}, - {0x42b, 0, 0, 0, f(Yes, true, "")}, - {0x42c, 0, 0, 0, f(Yes, false, "")}, - {0x42d, 0, 0, 0, f(Yes, true, "")}, - {0x42e, 0, 0, 0, f(Yes, false, "")}, - {0x430, 0, 0, 0, f(Yes, true, "")}, - {0x431, 0, 0, 0, f(Yes, false, "")}, - {0x433, 0, 0, 0, f(Yes, true, "")}, - {0x434, 0, 0, 0, f(Yes, false, "")}, - {0x435, 0, 0, 0, f(Yes, true, "")}, - {0x439, 0, 0, 1, f(Yes, false, "й")}, - {0x43a, 0, 0, 0, f(Yes, true, "")}, - {0x43b, 0, 0, 0, f(Yes, false, "")}, - {0x43e, 0, 0, 0, f(Yes, true, "")}, - {0x43f, 0, 0, 0, f(Yes, false, "")}, - {0x443, 0, 0, 0, f(Yes, true, "")}, - {0x444, 0, 0, 0, f(Yes, false, "")}, - {0x447, 0, 0, 0, f(Yes, true, "")}, - {0x448, 0, 0, 0, f(Yes, false, "")}, - {0x44b, 0, 0, 0, f(Yes, true, "")}, - {0x44c, 0, 0, 0, f(Yes, false, "")}, - {0x44d, 0, 0, 0, f(Yes, true, "")}, - {0x44e, 0, 0, 0, f(Yes, false, "")}, - {0x450, 0, 0, 1, f(Yes, false, "ѐ")}, - {0x451, 0, 0, 1, f(Yes, false, "ё")}, - {0x452, 0, 0, 0, f(Yes, false, "")}, - {0x453, 0, 0, 1, f(Yes, false, "ѓ")}, - {0x454, 0, 0, 0, f(Yes, false, "")}, - {0x456, 0, 0, 0, f(Yes, true, "")}, - {0x457, 0, 0, 1, f(Yes, false, "ї")}, - {0x458, 0, 0, 0, f(Yes, false, "")}, - {0x45c, 0, 0, 1, f(Yes, false, "ќ")}, - {0x45d, 0, 0, 1, f(Yes, false, "ѝ")}, - {0x45e, 0, 0, 1, f(Yes, false, "ў")}, - {0x45f, 0, 0, 0, f(Yes, false, "")}, - {0x474, 0, 0, 0, f(Yes, true, "")}, - {0x476, 0, 0, 1, f(Yes, false, "Ѷ")}, - {0x477, 0, 0, 1, f(Yes, false, "ѷ")}, - {0x478, 0, 0, 0, f(Yes, false, "")}, - {0x483, 230, 1, 1, f(Yes, false, "")}, - {0x488, 0, 0, 0, f(Yes, false, "")}, - {0x4c1, 0, 0, 1, f(Yes, false, "Ӂ")}, - {0x4c2, 0, 0, 1, f(Yes, false, "ӂ")}, - {0x4c3, 0, 0, 0, f(Yes, false, "")}, - {0x4d0, 0, 0, 1, f(Yes, false, "Ӑ")}, - {0x4d1, 0, 0, 1, f(Yes, false, "ӑ")}, - {0x4d2, 0, 0, 1, f(Yes, false, "Ӓ")}, - {0x4d3, 0, 0, 1, f(Yes, false, "ӓ")}, - {0x4d4, 0, 0, 0, f(Yes, false, "")}, - {0x4d6, 0, 0, 1, f(Yes, false, "Ӗ")}, - {0x4d7, 0, 0, 1, f(Yes, false, "ӗ")}, - {0x4d8, 0, 0, 0, f(Yes, true, "")}, - {0x4da, 0, 0, 1, f(Yes, false, "Ӛ")}, - {0x4db, 0, 0, 1, f(Yes, false, "ӛ")}, - {0x4dc, 0, 0, 1, f(Yes, false, "Ӝ")}, - {0x4dd, 0, 0, 1, f(Yes, false, "ӝ")}, - {0x4de, 0, 0, 1, f(Yes, false, "Ӟ")}, - {0x4df, 0, 0, 1, f(Yes, false, "ӟ")}, - {0x4e0, 0, 0, 0, f(Yes, false, "")}, - {0x4e2, 0, 0, 1, f(Yes, false, "Ӣ")}, - {0x4e3, 0, 0, 1, f(Yes, false, "ӣ")}, - {0x4e4, 0, 0, 1, f(Yes, false, "Ӥ")}, - {0x4e5, 0, 0, 1, f(Yes, false, "ӥ")}, - {0x4e6, 0, 0, 1, f(Yes, false, "Ӧ")}, - {0x4e7, 0, 0, 1, f(Yes, false, "ӧ")}, - {0x4e8, 0, 0, 0, f(Yes, true, "")}, - {0x4ea, 0, 0, 1, f(Yes, false, "Ӫ")}, - {0x4eb, 0, 0, 1, f(Yes, false, "ӫ")}, - {0x4ec, 0, 0, 1, f(Yes, false, "Ӭ")}, - {0x4ed, 0, 0, 1, f(Yes, false, "ӭ")}, - {0x4ee, 0, 0, 1, f(Yes, false, "Ӯ")}, - {0x4ef, 0, 0, 1, f(Yes, false, "ӯ")}, - {0x4f0, 0, 0, 1, f(Yes, false, "Ӱ")}, - {0x4f1, 0, 0, 1, f(Yes, false, "ӱ")}, - {0x4f2, 0, 0, 1, f(Yes, false, "Ӳ")}, - {0x4f3, 0, 0, 1, f(Yes, false, "ӳ")}, - {0x4f4, 0, 0, 1, f(Yes, false, "Ӵ")}, - {0x4f5, 0, 0, 1, f(Yes, false, "ӵ")}, - {0x4f6, 0, 0, 0, f(Yes, false, "")}, - {0x4f8, 0, 0, 1, f(Yes, false, "Ӹ")}, - {0x4f9, 0, 0, 1, f(Yes, false, "ӹ")}, - {0x4fa, 0, 0, 0, f(Yes, false, "")}, - {0x587, 0, 0, 0, g(Yes, No, false, false, "", "եւ")}, - {0x588, 0, 0, 0, f(Yes, false, "")}, - {0x591, 220, 1, 1, f(Yes, false, "")}, - {0x592, 230, 1, 1, f(Yes, false, "")}, - {0x596, 220, 1, 1, f(Yes, false, "")}, - {0x597, 230, 1, 1, f(Yes, false, "")}, - {0x59a, 222, 1, 1, f(Yes, false, "")}, - {0x59b, 220, 1, 1, f(Yes, false, "")}, - {0x59c, 230, 1, 1, f(Yes, false, "")}, - {0x5a2, 220, 1, 1, f(Yes, false, "")}, - {0x5a8, 230, 1, 1, f(Yes, false, "")}, - {0x5aa, 220, 1, 1, f(Yes, false, "")}, - {0x5ab, 230, 1, 1, f(Yes, false, "")}, - {0x5ad, 222, 1, 1, f(Yes, false, "")}, - {0x5ae, 228, 1, 1, f(Yes, false, "")}, - {0x5af, 230, 1, 1, f(Yes, false, "")}, - {0x5b0, 10, 1, 1, f(Yes, false, "")}, - {0x5b1, 11, 1, 1, f(Yes, false, "")}, - {0x5b2, 12, 1, 1, f(Yes, false, "")}, - {0x5b3, 13, 1, 1, f(Yes, false, "")}, - {0x5b4, 14, 1, 1, f(Yes, false, "")}, - {0x5b5, 15, 1, 1, f(Yes, false, "")}, - {0x5b6, 16, 1, 1, f(Yes, false, "")}, - {0x5b7, 17, 1, 1, f(Yes, false, "")}, - {0x5b8, 18, 1, 1, f(Yes, false, "")}, - {0x5b9, 19, 1, 1, f(Yes, false, "")}, - {0x5bb, 20, 1, 1, f(Yes, false, "")}, - {0x5bc, 21, 1, 1, f(Yes, false, "")}, - {0x5bd, 22, 1, 1, f(Yes, false, "")}, - {0x5be, 0, 0, 0, f(Yes, false, "")}, - {0x5bf, 23, 1, 1, f(Yes, false, "")}, - {0x5c0, 0, 0, 0, f(Yes, false, "")}, - {0x5c1, 24, 1, 1, f(Yes, false, "")}, - {0x5c2, 25, 1, 1, f(Yes, false, "")}, - {0x5c3, 0, 0, 0, f(Yes, false, "")}, - {0x5c4, 230, 1, 1, f(Yes, false, "")}, - {0x5c5, 220, 1, 1, f(Yes, false, "")}, - {0x5c6, 0, 0, 0, f(Yes, false, "")}, - {0x5c7, 18, 1, 1, f(Yes, false, "")}, - {0x5c8, 0, 0, 0, f(Yes, false, "")}, - {0x610, 230, 1, 1, f(Yes, false, "")}, - {0x618, 30, 1, 1, f(Yes, false, "")}, - {0x619, 31, 1, 1, f(Yes, false, "")}, - {0x61a, 32, 1, 1, f(Yes, false, "")}, - {0x61b, 0, 0, 0, f(Yes, false, "")}, - {0x622, 0, 0, 1, f(Yes, false, "آ")}, - {0x623, 0, 0, 1, f(Yes, false, "أ")}, - {0x624, 0, 0, 1, f(Yes, false, "ؤ")}, - {0x625, 0, 0, 1, f(Yes, false, "إ")}, - {0x626, 0, 0, 1, f(Yes, false, "ئ")}, - {0x627, 0, 0, 0, f(Yes, true, "")}, - {0x628, 0, 0, 0, f(Yes, false, "")}, - {0x648, 0, 0, 0, f(Yes, true, "")}, - {0x649, 0, 0, 0, f(Yes, false, "")}, - {0x64a, 0, 0, 0, f(Yes, true, "")}, - {0x64b, 27, 1, 1, f(Yes, false, "")}, - {0x64c, 28, 1, 1, f(Yes, false, "")}, - {0x64d, 29, 1, 1, f(Yes, false, "")}, - {0x64e, 30, 1, 1, f(Yes, false, "")}, - {0x64f, 31, 1, 1, f(Yes, false, "")}, - {0x650, 32, 1, 1, f(Yes, false, "")}, - {0x651, 33, 1, 1, f(Yes, false, "")}, - {0x652, 34, 1, 1, f(Yes, false, "")}, - {0x653, 230, 1, 1, f(Maybe, false, "")}, - {0x655, 220, 1, 1, f(Maybe, false, "")}, - {0x656, 220, 1, 1, f(Yes, false, "")}, - {0x657, 230, 1, 1, f(Yes, false, "")}, - {0x65c, 220, 1, 1, f(Yes, false, "")}, - {0x65d, 230, 1, 1, f(Yes, false, "")}, - {0x65f, 220, 1, 1, f(Yes, false, "")}, - {0x660, 0, 0, 0, f(Yes, false, "")}, - {0x670, 35, 1, 1, f(Yes, false, "")}, - {0x671, 0, 0, 0, f(Yes, false, "")}, - {0x675, 0, 0, 0, g(Yes, No, false, false, "", "اٴ")}, - {0x676, 0, 0, 0, g(Yes, No, false, false, "", "وٴ")}, - {0x677, 0, 0, 0, g(Yes, No, false, false, "", "ۇٴ")}, - {0x678, 0, 0, 0, g(Yes, No, false, false, "", "يٴ")}, - {0x679, 0, 0, 0, f(Yes, false, "")}, - {0x6c0, 0, 0, 1, f(Yes, false, "ۀ")}, - {0x6c1, 0, 0, 0, f(Yes, true, "")}, - {0x6c2, 0, 0, 1, f(Yes, false, "ۂ")}, - {0x6c3, 0, 0, 0, f(Yes, false, "")}, - {0x6d2, 0, 0, 0, f(Yes, true, "")}, - {0x6d3, 0, 0, 1, f(Yes, false, "ۓ")}, - {0x6d4, 0, 0, 0, f(Yes, false, "")}, - {0x6d5, 0, 0, 0, f(Yes, true, "")}, - {0x6d6, 230, 1, 1, f(Yes, false, "")}, - {0x6dd, 0, 0, 0, f(Yes, false, "")}, - {0x6df, 230, 1, 1, f(Yes, false, "")}, - {0x6e3, 220, 1, 1, f(Yes, false, "")}, - {0x6e4, 230, 1, 1, f(Yes, false, "")}, - {0x6e5, 0, 0, 0, f(Yes, false, "")}, - {0x6e7, 230, 1, 1, f(Yes, false, "")}, - {0x6e9, 0, 0, 0, f(Yes, false, "")}, - {0x6ea, 220, 1, 1, f(Yes, false, "")}, - {0x6eb, 230, 1, 1, f(Yes, false, "")}, - {0x6ed, 220, 1, 1, f(Yes, false, "")}, - {0x6ee, 0, 0, 0, f(Yes, false, "")}, - {0x711, 36, 1, 1, f(Yes, false, "")}, - {0x712, 0, 0, 0, f(Yes, false, "")}, - {0x730, 230, 1, 1, f(Yes, false, "")}, - {0x731, 220, 1, 1, f(Yes, false, "")}, - {0x732, 230, 1, 1, f(Yes, false, "")}, - {0x734, 220, 1, 1, f(Yes, false, "")}, - {0x735, 230, 1, 1, f(Yes, false, "")}, - {0x737, 220, 1, 1, f(Yes, false, "")}, - {0x73a, 230, 1, 1, f(Yes, false, "")}, - {0x73b, 220, 1, 1, f(Yes, false, "")}, - {0x73d, 230, 1, 1, f(Yes, false, "")}, - {0x73e, 220, 1, 1, f(Yes, false, "")}, - {0x73f, 230, 1, 1, f(Yes, false, "")}, - {0x742, 220, 1, 1, f(Yes, false, "")}, - {0x743, 230, 1, 1, f(Yes, false, "")}, - {0x744, 220, 1, 1, f(Yes, false, "")}, - {0x745, 230, 1, 1, f(Yes, false, "")}, - {0x746, 220, 1, 1, f(Yes, false, "")}, - {0x747, 230, 1, 1, f(Yes, false, "")}, - {0x748, 220, 1, 1, f(Yes, false, "")}, - {0x749, 230, 1, 1, f(Yes, false, "")}, - {0x74b, 0, 0, 0, f(Yes, false, "")}, - {0x7eb, 230, 1, 1, f(Yes, false, "")}, - {0x7f2, 220, 1, 1, f(Yes, false, "")}, - {0x7f3, 230, 1, 1, f(Yes, false, "")}, - {0x7f4, 0, 0, 0, f(Yes, false, "")}, - {0x816, 230, 1, 1, f(Yes, false, "")}, - {0x81a, 0, 0, 0, f(Yes, false, "")}, - {0x81b, 230, 1, 1, f(Yes, false, "")}, - {0x824, 0, 0, 0, f(Yes, false, "")}, - {0x825, 230, 1, 1, f(Yes, false, "")}, - {0x828, 0, 0, 0, f(Yes, false, "")}, - {0x829, 230, 1, 1, f(Yes, false, "")}, - {0x82e, 0, 0, 0, f(Yes, false, "")}, - {0x859, 220, 1, 1, f(Yes, false, "")}, - {0x85c, 0, 0, 0, f(Yes, false, "")}, - {0x8d4, 230, 1, 1, f(Yes, false, "")}, - {0x8e2, 0, 0, 0, f(Yes, false, "")}, - {0x8e3, 220, 1, 1, f(Yes, false, "")}, - {0x8e4, 230, 1, 1, f(Yes, false, "")}, - {0x8e6, 220, 1, 1, f(Yes, false, "")}, - {0x8e7, 230, 1, 1, f(Yes, false, "")}, - {0x8e9, 220, 1, 1, f(Yes, false, "")}, - {0x8ea, 230, 1, 1, f(Yes, false, "")}, - {0x8ed, 220, 1, 1, f(Yes, false, "")}, - {0x8f0, 27, 1, 1, f(Yes, false, "")}, - {0x8f1, 28, 1, 1, f(Yes, false, "")}, - {0x8f2, 29, 1, 1, f(Yes, false, "")}, - {0x8f3, 230, 1, 1, f(Yes, false, "")}, - {0x8f6, 220, 1, 1, f(Yes, false, "")}, - {0x8f7, 230, 1, 1, f(Yes, false, "")}, - {0x8f9, 220, 1, 1, f(Yes, false, "")}, - {0x8fb, 230, 1, 1, f(Yes, false, "")}, - {0x900, 0, 0, 0, f(Yes, false, "")}, - {0x928, 0, 0, 0, f(Yes, true, "")}, - {0x929, 0, 0, 1, f(Yes, false, "ऩ")}, - {0x92a, 0, 0, 0, f(Yes, false, "")}, - {0x930, 0, 0, 0, f(Yes, true, "")}, - {0x931, 0, 0, 1, f(Yes, false, "ऱ")}, - {0x932, 0, 0, 0, f(Yes, false, "")}, - {0x933, 0, 0, 0, f(Yes, true, "")}, - {0x934, 0, 0, 1, f(Yes, false, "ऴ")}, - {0x935, 0, 0, 0, f(Yes, false, "")}, - {0x93c, 7, 1, 1, f(Maybe, false, "")}, - {0x93d, 0, 0, 0, f(Yes, false, "")}, - {0x94d, 9, 1, 1, f(Yes, false, "")}, - {0x94e, 0, 0, 0, f(Yes, false, "")}, - {0x951, 230, 1, 1, f(Yes, false, "")}, - {0x952, 220, 1, 1, f(Yes, false, "")}, - {0x953, 230, 1, 1, f(Yes, false, "")}, - {0x955, 0, 0, 0, f(Yes, false, "")}, - {0x958, 0, 0, 1, f(No, false, "क़")}, - {0x959, 0, 0, 1, f(No, false, "ख़")}, - {0x95a, 0, 0, 1, f(No, false, "ग़")}, - {0x95b, 0, 0, 1, f(No, false, "ज़")}, - {0x95c, 0, 0, 1, f(No, false, "ड़")}, - {0x95d, 0, 0, 1, f(No, false, "ढ़")}, - {0x95e, 0, 0, 1, f(No, false, "फ़")}, - {0x95f, 0, 0, 1, f(No, false, "य़")}, - {0x960, 0, 0, 0, f(Yes, false, "")}, - {0x9bc, 7, 1, 1, f(Yes, false, "")}, - {0x9bd, 0, 0, 0, f(Yes, false, "")}, - {0x9be, 0, 1, 1, f(Maybe, false, "")}, - {0x9bf, 0, 0, 0, f(Yes, false, "")}, - {0x9c7, 0, 0, 0, f(Yes, true, "")}, - {0x9c8, 0, 0, 0, f(Yes, false, "")}, - {0x9cb, 0, 0, 1, f(Yes, false, "ো")}, - {0x9cc, 0, 0, 1, f(Yes, false, "ৌ")}, - {0x9cd, 9, 1, 1, f(Yes, false, "")}, - {0x9ce, 0, 0, 0, f(Yes, false, "")}, - {0x9d7, 0, 1, 1, f(Maybe, false, "")}, - {0x9d8, 0, 0, 0, f(Yes, false, "")}, - {0x9dc, 0, 0, 1, f(No, false, "ড়")}, - {0x9dd, 0, 0, 1, f(No, false, "ঢ়")}, - {0x9de, 0, 0, 0, f(Yes, false, "")}, - {0x9df, 0, 0, 1, f(No, false, "য়")}, - {0x9e0, 0, 0, 0, f(Yes, false, "")}, - {0xa33, 0, 0, 1, f(No, false, "ਲ਼")}, - {0xa34, 0, 0, 0, f(Yes, false, "")}, - {0xa36, 0, 0, 1, f(No, false, "ਸ਼")}, - {0xa37, 0, 0, 0, f(Yes, false, "")}, - {0xa3c, 7, 1, 1, f(Yes, false, "")}, - {0xa3d, 0, 0, 0, f(Yes, false, "")}, - {0xa4d, 9, 1, 1, f(Yes, false, "")}, - {0xa4e, 0, 0, 0, f(Yes, false, "")}, - {0xa59, 0, 0, 1, f(No, false, "ਖ਼")}, - {0xa5a, 0, 0, 1, f(No, false, "ਗ਼")}, - {0xa5b, 0, 0, 1, f(No, false, "ਜ਼")}, - {0xa5c, 0, 0, 0, f(Yes, false, "")}, - {0xa5e, 0, 0, 1, f(No, false, "ਫ਼")}, - {0xa5f, 0, 0, 0, f(Yes, false, "")}, - {0xabc, 7, 1, 1, f(Yes, false, "")}, - {0xabd, 0, 0, 0, f(Yes, false, "")}, - {0xacd, 9, 1, 1, f(Yes, false, "")}, - {0xace, 0, 0, 0, f(Yes, false, "")}, - {0xb3c, 7, 1, 1, f(Yes, false, "")}, - {0xb3d, 0, 0, 0, f(Yes, false, "")}, - {0xb3e, 0, 1, 1, f(Maybe, false, "")}, - {0xb3f, 0, 0, 0, f(Yes, false, "")}, - {0xb47, 0, 0, 0, f(Yes, true, "")}, - {0xb48, 0, 0, 1, f(Yes, false, "ୈ")}, - {0xb49, 0, 0, 0, f(Yes, false, "")}, - {0xb4b, 0, 0, 1, f(Yes, false, "ୋ")}, - {0xb4c, 0, 0, 1, f(Yes, false, "ୌ")}, - {0xb4d, 9, 1, 1, f(Yes, false, "")}, - {0xb4e, 0, 0, 0, f(Yes, false, "")}, - {0xb56, 0, 1, 1, f(Maybe, false, "")}, - {0xb58, 0, 0, 0, f(Yes, false, "")}, - {0xb5c, 0, 0, 1, f(No, false, "ଡ଼")}, - {0xb5d, 0, 0, 1, f(No, false, "ଢ଼")}, - {0xb5e, 0, 0, 0, f(Yes, false, "")}, - {0xb92, 0, 0, 0, f(Yes, true, "")}, - {0xb93, 0, 0, 0, f(Yes, false, "")}, - {0xb94, 0, 0, 1, f(Yes, false, "ஔ")}, - {0xb95, 0, 0, 0, f(Yes, false, "")}, - {0xbbe, 0, 1, 1, f(Maybe, false, "")}, - {0xbbf, 0, 0, 0, f(Yes, false, "")}, - {0xbc6, 0, 0, 0, f(Yes, true, "")}, - {0xbc8, 0, 0, 0, f(Yes, false, "")}, - {0xbca, 0, 0, 1, f(Yes, false, "ொ")}, - {0xbcb, 0, 0, 1, f(Yes, false, "ோ")}, - {0xbcc, 0, 0, 1, f(Yes, false, "ௌ")}, - {0xbcd, 9, 1, 1, f(Yes, false, "")}, - {0xbce, 0, 0, 0, f(Yes, false, "")}, - {0xbd7, 0, 1, 1, f(Maybe, false, "")}, - {0xbd8, 0, 0, 0, f(Yes, false, "")}, - {0xc46, 0, 0, 0, f(Yes, true, "")}, - {0xc47, 0, 0, 0, f(Yes, false, "")}, - {0xc48, 0, 0, 1, f(Yes, false, "ై")}, - {0xc49, 0, 0, 0, f(Yes, false, "")}, - {0xc4d, 9, 1, 1, f(Yes, false, "")}, - {0xc4e, 0, 0, 0, f(Yes, false, "")}, - {0xc55, 84, 1, 1, f(Yes, false, "")}, - {0xc56, 91, 1, 1, f(Maybe, false, "")}, - {0xc57, 0, 0, 0, f(Yes, false, "")}, - {0xcbc, 7, 1, 1, f(Yes, false, "")}, - {0xcbd, 0, 0, 0, f(Yes, false, "")}, - {0xcbf, 0, 0, 0, f(Yes, true, "")}, - {0xcc0, 0, 0, 1, f(Yes, false, "ೀ")}, - {0xcc1, 0, 0, 0, f(Yes, false, "")}, - {0xcc2, 0, 1, 1, f(Maybe, false, "")}, - {0xcc3, 0, 0, 0, f(Yes, false, "")}, - {0xcc6, 0, 0, 0, f(Yes, true, "")}, - {0xcc7, 0, 0, 1, f(Yes, false, "ೇ")}, - {0xcc8, 0, 0, 1, f(Yes, false, "ೈ")}, - {0xcc9, 0, 0, 0, f(Yes, false, "")}, - {0xcca, 0, 0, 1, f(Yes, true, "ೊ")}, - {0xccb, 0, 0, 2, f(Yes, false, "ೋ")}, - {0xccc, 0, 0, 0, f(Yes, false, "")}, - {0xccd, 9, 1, 1, f(Yes, false, "")}, - {0xcce, 0, 0, 0, f(Yes, false, "")}, - {0xcd5, 0, 1, 1, f(Maybe, false, "")}, - {0xcd7, 0, 0, 0, f(Yes, false, "")}, - {0xd3e, 0, 1, 1, f(Maybe, false, "")}, - {0xd3f, 0, 0, 0, f(Yes, false, "")}, - {0xd46, 0, 0, 0, f(Yes, true, "")}, - {0xd48, 0, 0, 0, f(Yes, false, "")}, - {0xd4a, 0, 0, 1, f(Yes, false, "ൊ")}, - {0xd4b, 0, 0, 1, f(Yes, false, "ോ")}, - {0xd4c, 0, 0, 1, f(Yes, false, "ൌ")}, - {0xd4d, 9, 1, 1, f(Yes, false, "")}, - {0xd4e, 0, 0, 0, f(Yes, false, "")}, - {0xd57, 0, 1, 1, f(Maybe, false, "")}, - {0xd58, 0, 0, 0, f(Yes, false, "")}, - {0xdca, 9, 1, 1, f(Maybe, false, "")}, - {0xdcb, 0, 0, 0, f(Yes, false, "")}, - {0xdcf, 0, 1, 1, f(Maybe, false, "")}, - {0xdd0, 0, 0, 0, f(Yes, false, "")}, - {0xdd9, 0, 0, 0, f(Yes, true, "")}, - {0xdda, 0, 0, 1, f(Yes, false, "ේ")}, - {0xddb, 0, 0, 0, f(Yes, false, "")}, - {0xddc, 0, 0, 1, f(Yes, true, "ො")}, - {0xddd, 0, 0, 2, f(Yes, false, "ෝ")}, - {0xdde, 0, 0, 1, f(Yes, false, "ෞ")}, - {0xddf, 0, 1, 1, f(Maybe, false, "")}, - {0xde0, 0, 0, 0, f(Yes, false, "")}, - {0xe33, 0, 0, 0, g(Yes, No, false, false, "", "ํา")}, - {0xe34, 0, 0, 0, f(Yes, false, "")}, - {0xe38, 103, 1, 1, f(Yes, false, "")}, - {0xe3a, 9, 1, 1, f(Yes, false, "")}, - {0xe3b, 0, 0, 0, f(Yes, false, "")}, - {0xe48, 107, 1, 1, f(Yes, false, "")}, - {0xe4c, 0, 0, 0, f(Yes, false, "")}, - {0xeb3, 0, 0, 0, g(Yes, No, false, false, "", "ໍາ")}, - {0xeb4, 0, 0, 0, f(Yes, false, "")}, - {0xeb8, 118, 1, 1, f(Yes, false, "")}, - {0xeba, 0, 0, 0, f(Yes, false, "")}, - {0xec8, 122, 1, 1, f(Yes, false, "")}, - {0xecc, 0, 0, 0, f(Yes, false, "")}, - {0xedc, 0, 0, 0, g(Yes, No, false, false, "", "ຫນ")}, - {0xedd, 0, 0, 0, g(Yes, No, false, false, "", "ຫມ")}, - {0xede, 0, 0, 0, f(Yes, false, "")}, - {0xf0c, 0, 0, 0, g(Yes, No, false, false, "", "་")}, - {0xf0d, 0, 0, 0, f(Yes, false, "")}, - {0xf18, 220, 1, 1, f(Yes, false, "")}, - {0xf1a, 0, 0, 0, f(Yes, false, "")}, - {0xf35, 220, 1, 1, f(Yes, false, "")}, - {0xf36, 0, 0, 0, f(Yes, false, "")}, - {0xf37, 220, 1, 1, f(Yes, false, "")}, - {0xf38, 0, 0, 0, f(Yes, false, "")}, - {0xf39, 216, 1, 1, f(Yes, false, "")}, - {0xf3a, 0, 0, 0, f(Yes, false, "")}, - {0xf43, 0, 0, 0, f(No, false, "གྷ")}, - {0xf44, 0, 0, 0, f(Yes, false, "")}, - {0xf4d, 0, 0, 0, f(No, false, "ཌྷ")}, - {0xf4e, 0, 0, 0, f(Yes, false, "")}, - {0xf52, 0, 0, 0, f(No, false, "དྷ")}, - {0xf53, 0, 0, 0, f(Yes, false, "")}, - {0xf57, 0, 0, 0, f(No, false, "བྷ")}, - {0xf58, 0, 0, 0, f(Yes, false, "")}, - {0xf5c, 0, 0, 0, f(No, false, "ཛྷ")}, - {0xf5d, 0, 0, 0, f(Yes, false, "")}, - {0xf69, 0, 0, 0, f(No, false, "ཀྵ")}, - {0xf6a, 0, 0, 0, f(Yes, false, "")}, - {0xf71, 129, 1, 1, f(Yes, false, "")}, - {0xf72, 130, 1, 1, f(Yes, false, "")}, - {0xf73, 0, 2, 2, f(No, false, "ཱི")}, - {0xf74, 132, 1, 1, f(Yes, false, "")}, - {0xf75, 0, 2, 2, f(No, false, "ཱུ")}, - {0xf76, 0, 0, 1, f(No, false, "ྲྀ")}, - {0xf77, 0, 0, 2, g(Yes, No, false, false, "", "ྲཱྀ")}, - {0xf78, 0, 0, 1, f(No, false, "ླྀ")}, - {0xf79, 0, 0, 2, g(Yes, No, false, false, "", "ླཱྀ")}, - {0xf7a, 130, 1, 1, f(Yes, false, "")}, - {0xf7e, 0, 0, 0, f(Yes, false, "")}, - {0xf80, 130, 1, 1, f(Yes, false, "")}, - {0xf81, 0, 2, 2, f(No, false, "ཱྀ")}, - {0xf82, 230, 1, 1, f(Yes, false, "")}, - {0xf84, 9, 1, 1, f(Yes, false, "")}, - {0xf85, 0, 0, 0, f(Yes, false, "")}, - {0xf86, 230, 1, 1, f(Yes, false, "")}, - {0xf88, 0, 0, 0, f(Yes, false, "")}, - {0xf93, 0, 0, 0, f(No, false, "ྒྷ")}, - {0xf94, 0, 0, 0, f(Yes, false, "")}, - {0xf9d, 0, 0, 0, f(No, false, "ྜྷ")}, - {0xf9e, 0, 0, 0, f(Yes, false, "")}, - {0xfa2, 0, 0, 0, f(No, false, "ྡྷ")}, - {0xfa3, 0, 0, 0, f(Yes, false, "")}, - {0xfa7, 0, 0, 0, f(No, false, "ྦྷ")}, - {0xfa8, 0, 0, 0, f(Yes, false, "")}, - {0xfac, 0, 0, 0, f(No, false, "ྫྷ")}, - {0xfad, 0, 0, 0, f(Yes, false, "")}, - {0xfb9, 0, 0, 0, f(No, false, "ྐྵ")}, - {0xfba, 0, 0, 0, f(Yes, false, "")}, - {0xfc6, 220, 1, 1, f(Yes, false, "")}, - {0xfc7, 0, 0, 0, f(Yes, false, "")}, - {0x1025, 0, 0, 0, f(Yes, true, "")}, - {0x1026, 0, 0, 1, f(Yes, false, "ဦ")}, - {0x1027, 0, 0, 0, f(Yes, false, "")}, - {0x102e, 0, 1, 1, f(Maybe, false, "")}, - {0x102f, 0, 0, 0, f(Yes, false, "")}, - {0x1037, 7, 1, 1, f(Yes, false, "")}, - {0x1038, 0, 0, 0, f(Yes, false, "")}, - {0x1039, 9, 1, 1, f(Yes, false, "")}, - {0x103b, 0, 0, 0, f(Yes, false, "")}, - {0x108d, 220, 1, 1, f(Yes, false, "")}, - {0x108e, 0, 0, 0, f(Yes, false, "")}, - {0x10fc, 0, 0, 0, g(Yes, No, false, false, "", "ნ")}, - {0x10fd, 0, 0, 0, f(Yes, false, "")}, - {0x1100, 0, 0, 0, f(Yes, true, "")}, - {0x1113, 0, 0, 0, f(Yes, false, "")}, - {0x1161, 0, 1, 1, f(Maybe, true, "")}, - {0x1176, 0, 0, 0, f(Yes, false, "")}, - {0x11a8, 0, 1, 1, f(Maybe, false, "")}, - {0x11c3, 0, 0, 0, f(Yes, false, "")}, - {0x135d, 230, 1, 1, f(Yes, false, "")}, - {0x1360, 0, 0, 0, f(Yes, false, "")}, - {0x1714, 9, 1, 1, f(Yes, false, "")}, - {0x1715, 0, 0, 0, f(Yes, false, "")}, - {0x1734, 9, 1, 1, f(Yes, false, "")}, - {0x1735, 0, 0, 0, f(Yes, false, "")}, - {0x17d2, 9, 1, 1, f(Yes, false, "")}, - {0x17d3, 0, 0, 0, f(Yes, false, "")}, - {0x17dd, 230, 1, 1, f(Yes, false, "")}, - {0x17de, 0, 0, 0, f(Yes, false, "")}, - {0x18a9, 228, 1, 1, f(Yes, false, "")}, - {0x18aa, 0, 0, 0, f(Yes, false, "")}, - {0x1939, 222, 1, 1, f(Yes, false, "")}, - {0x193a, 230, 1, 1, f(Yes, false, "")}, - {0x193b, 220, 1, 1, f(Yes, false, "")}, - {0x193c, 0, 0, 0, f(Yes, false, "")}, - {0x1a17, 230, 1, 1, f(Yes, false, "")}, - {0x1a18, 220, 1, 1, f(Yes, false, "")}, - {0x1a19, 0, 0, 0, f(Yes, false, "")}, - {0x1a60, 9, 1, 1, f(Yes, false, "")}, - {0x1a61, 0, 0, 0, f(Yes, false, "")}, - {0x1a75, 230, 1, 1, f(Yes, false, "")}, - {0x1a7d, 0, 0, 0, f(Yes, false, "")}, - {0x1a7f, 220, 1, 1, f(Yes, false, "")}, - {0x1a80, 0, 0, 0, f(Yes, false, "")}, - {0x1ab0, 230, 1, 1, f(Yes, false, "")}, - {0x1ab5, 220, 1, 1, f(Yes, false, "")}, - {0x1abb, 230, 1, 1, f(Yes, false, "")}, - {0x1abd, 220, 1, 1, f(Yes, false, "")}, - {0x1abe, 0, 0, 0, f(Yes, false, "")}, - {0x1b05, 0, 0, 0, f(Yes, true, "")}, - {0x1b06, 0, 0, 1, f(Yes, false, "ᬆ")}, - {0x1b07, 0, 0, 0, f(Yes, true, "")}, - {0x1b08, 0, 0, 1, f(Yes, false, "ᬈ")}, - {0x1b09, 0, 0, 0, f(Yes, true, "")}, - {0x1b0a, 0, 0, 1, f(Yes, false, "ᬊ")}, - {0x1b0b, 0, 0, 0, f(Yes, true, "")}, - {0x1b0c, 0, 0, 1, f(Yes, false, "ᬌ")}, - {0x1b0d, 0, 0, 0, f(Yes, true, "")}, - {0x1b0e, 0, 0, 1, f(Yes, false, "ᬎ")}, - {0x1b0f, 0, 0, 0, f(Yes, false, "")}, - {0x1b11, 0, 0, 0, f(Yes, true, "")}, - {0x1b12, 0, 0, 1, f(Yes, false, "ᬒ")}, - {0x1b13, 0, 0, 0, f(Yes, false, "")}, - {0x1b34, 7, 1, 1, f(Yes, false, "")}, - {0x1b35, 0, 1, 1, f(Maybe, false, "")}, - {0x1b36, 0, 0, 0, f(Yes, false, "")}, - {0x1b3a, 0, 0, 0, f(Yes, true, "")}, - {0x1b3b, 0, 0, 1, f(Yes, false, "ᬻ")}, - {0x1b3c, 0, 0, 0, f(Yes, true, "")}, - {0x1b3d, 0, 0, 1, f(Yes, false, "ᬽ")}, - {0x1b3e, 0, 0, 0, f(Yes, true, "")}, - {0x1b40, 0, 0, 1, f(Yes, false, "ᭀ")}, - {0x1b41, 0, 0, 1, f(Yes, false, "ᭁ")}, - {0x1b42, 0, 0, 0, f(Yes, true, "")}, - {0x1b43, 0, 0, 1, f(Yes, false, "ᭃ")}, - {0x1b44, 9, 1, 1, f(Yes, false, "")}, - {0x1b45, 0, 0, 0, f(Yes, false, "")}, - {0x1b6b, 230, 1, 1, f(Yes, false, "")}, - {0x1b6c, 220, 1, 1, f(Yes, false, "")}, - {0x1b6d, 230, 1, 1, f(Yes, false, "")}, - {0x1b74, 0, 0, 0, f(Yes, false, "")}, - {0x1baa, 9, 1, 1, f(Yes, false, "")}, - {0x1bac, 0, 0, 0, f(Yes, false, "")}, - {0x1be6, 7, 1, 1, f(Yes, false, "")}, - {0x1be7, 0, 0, 0, f(Yes, false, "")}, - {0x1bf2, 9, 1, 1, f(Yes, false, "")}, - {0x1bf4, 0, 0, 0, f(Yes, false, "")}, - {0x1c37, 7, 1, 1, f(Yes, false, "")}, - {0x1c38, 0, 0, 0, f(Yes, false, "")}, - {0x1cd0, 230, 1, 1, f(Yes, false, "")}, - {0x1cd3, 0, 0, 0, f(Yes, false, "")}, - {0x1cd4, 1, 1, 1, f(Yes, false, "")}, - {0x1cd5, 220, 1, 1, f(Yes, false, "")}, - {0x1cda, 230, 1, 1, f(Yes, false, "")}, - {0x1cdc, 220, 1, 1, f(Yes, false, "")}, - {0x1ce0, 230, 1, 1, f(Yes, false, "")}, - {0x1ce1, 0, 0, 0, f(Yes, false, "")}, - {0x1ce2, 1, 1, 1, f(Yes, false, "")}, - {0x1ce9, 0, 0, 0, f(Yes, false, "")}, - {0x1ced, 220, 1, 1, f(Yes, false, "")}, - {0x1cee, 0, 0, 0, f(Yes, false, "")}, - {0x1cf4, 230, 1, 1, f(Yes, false, "")}, - {0x1cf5, 0, 0, 0, f(Yes, false, "")}, - {0x1cf8, 230, 1, 1, f(Yes, false, "")}, - {0x1cfa, 0, 0, 0, f(Yes, false, "")}, - {0x1d2c, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d2d, 0, 0, 0, g(Yes, No, false, false, "", "Æ")}, - {0x1d2e, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d2f, 0, 0, 0, f(Yes, false, "")}, - {0x1d30, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d31, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d32, 0, 0, 0, g(Yes, No, false, false, "", "Ǝ")}, - {0x1d33, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d34, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d35, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d36, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d37, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d38, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d39, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d3a, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d3b, 0, 0, 0, f(Yes, false, "")}, - {0x1d3c, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d3d, 0, 0, 0, g(Yes, No, false, false, "", "Ȣ")}, - {0x1d3e, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d3f, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d40, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d41, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d42, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d43, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d44, 0, 0, 0, g(Yes, No, false, false, "", "ɐ")}, - {0x1d45, 0, 0, 0, g(Yes, No, false, false, "", "ɑ")}, - {0x1d46, 0, 0, 0, g(Yes, No, false, false, "", "ᴂ")}, - {0x1d47, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d48, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d49, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d4a, 0, 0, 0, g(Yes, No, false, false, "", "ə")}, - {0x1d4b, 0, 0, 0, g(Yes, No, false, false, "", "ɛ")}, - {0x1d4c, 0, 0, 0, g(Yes, No, false, false, "", "ɜ")}, - {0x1d4d, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d4e, 0, 0, 0, f(Yes, false, "")}, - {0x1d4f, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d50, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d51, 0, 0, 0, g(Yes, No, false, false, "", "ŋ")}, - {0x1d52, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d53, 0, 0, 0, g(Yes, No, false, false, "", "ɔ")}, - {0x1d54, 0, 0, 0, g(Yes, No, false, false, "", "ᴖ")}, - {0x1d55, 0, 0, 0, g(Yes, No, false, false, "", "ᴗ")}, - {0x1d56, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d57, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d58, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d59, 0, 0, 0, g(Yes, No, false, false, "", "ᴝ")}, - {0x1d5a, 0, 0, 0, g(Yes, No, false, false, "", "ɯ")}, - {0x1d5b, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d5c, 0, 0, 0, g(Yes, No, false, false, "", "ᴥ")}, - {0x1d5d, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d5e, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d5f, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d60, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d61, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d62, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d63, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d64, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d65, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d66, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d67, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d68, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d69, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d6a, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d6b, 0, 0, 0, f(Yes, false, "")}, - {0x1d78, 0, 0, 0, g(Yes, No, false, false, "", "н")}, - {0x1d79, 0, 0, 0, f(Yes, false, "")}, - {0x1d9b, 0, 0, 0, g(Yes, No, false, false, "", "ɒ")}, - {0x1d9c, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d9d, 0, 0, 0, g(Yes, No, false, false, "", "ɕ")}, - {0x1d9e, 0, 0, 0, g(Yes, No, false, false, "", "ð")}, - {0x1d9f, 0, 0, 0, g(Yes, No, false, false, "", "ɜ")}, - {0x1da0, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1da1, 0, 0, 0, g(Yes, No, false, false, "", "ɟ")}, - {0x1da2, 0, 0, 0, g(Yes, No, false, false, "", "ɡ")}, - {0x1da3, 0, 0, 0, g(Yes, No, false, false, "", "ɥ")}, - {0x1da4, 0, 0, 0, g(Yes, No, false, false, "", "ɨ")}, - {0x1da5, 0, 0, 0, g(Yes, No, false, false, "", "ɩ")}, - {0x1da6, 0, 0, 0, g(Yes, No, false, false, "", "ɪ")}, - {0x1da7, 0, 0, 0, g(Yes, No, false, false, "", "ᵻ")}, - {0x1da8, 0, 0, 0, g(Yes, No, false, false, "", "ʝ")}, - {0x1da9, 0, 0, 0, g(Yes, No, false, false, "", "ɭ")}, - {0x1daa, 0, 0, 0, g(Yes, No, false, false, "", "ᶅ")}, - {0x1dab, 0, 0, 0, g(Yes, No, false, false, "", "ʟ")}, - {0x1dac, 0, 0, 0, g(Yes, No, false, false, "", "ɱ")}, - {0x1dad, 0, 0, 0, g(Yes, No, false, false, "", "ɰ")}, - {0x1dae, 0, 0, 0, g(Yes, No, false, false, "", "ɲ")}, - {0x1daf, 0, 0, 0, g(Yes, No, false, false, "", "ɳ")}, - {0x1db0, 0, 0, 0, g(Yes, No, false, false, "", "ɴ")}, - {0x1db1, 0, 0, 0, g(Yes, No, false, false, "", "ɵ")}, - {0x1db2, 0, 0, 0, g(Yes, No, false, false, "", "ɸ")}, - {0x1db3, 0, 0, 0, g(Yes, No, false, false, "", "ʂ")}, - {0x1db4, 0, 0, 0, g(Yes, No, false, false, "", "ʃ")}, - {0x1db5, 0, 0, 0, g(Yes, No, false, false, "", "ƫ")}, - {0x1db6, 0, 0, 0, g(Yes, No, false, false, "", "ʉ")}, - {0x1db7, 0, 0, 0, g(Yes, No, false, false, "", "ʊ")}, - {0x1db8, 0, 0, 0, g(Yes, No, false, false, "", "ᴜ")}, - {0x1db9, 0, 0, 0, g(Yes, No, false, false, "", "ʋ")}, - {0x1dba, 0, 0, 0, g(Yes, No, false, false, "", "ʌ")}, - {0x1dbb, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1dbc, 0, 0, 0, g(Yes, No, false, false, "", "ʐ")}, - {0x1dbd, 0, 0, 0, g(Yes, No, false, false, "", "ʑ")}, - {0x1dbe, 0, 0, 0, g(Yes, No, false, false, "", "ʒ")}, - {0x1dbf, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1dc0, 230, 1, 1, f(Yes, false, "")}, - {0x1dc2, 220, 1, 1, f(Yes, false, "")}, - {0x1dc3, 230, 1, 1, f(Yes, false, "")}, - {0x1dca, 220, 1, 1, f(Yes, false, "")}, - {0x1dcb, 230, 1, 1, f(Yes, false, "")}, - {0x1dcd, 234, 1, 1, f(Yes, false, "")}, - {0x1dce, 214, 1, 1, f(Yes, false, "")}, - {0x1dcf, 220, 1, 1, f(Yes, false, "")}, - {0x1dd0, 202, 1, 1, f(Yes, false, "")}, - {0x1dd1, 230, 1, 1, f(Yes, false, "")}, - {0x1df6, 0, 0, 0, f(Yes, false, "")}, - {0x1dfb, 230, 1, 1, f(Yes, false, "")}, - {0x1dfc, 233, 1, 1, f(Yes, false, "")}, - {0x1dfd, 220, 1, 1, f(Yes, false, "")}, - {0x1dfe, 230, 1, 1, f(Yes, false, "")}, - {0x1dff, 220, 1, 1, f(Yes, false, "")}, - {0x1e00, 0, 0, 1, f(Yes, false, "Ḁ")}, - {0x1e01, 0, 0, 1, f(Yes, false, "ḁ")}, - {0x1e02, 0, 0, 1, f(Yes, false, "Ḃ")}, - {0x1e03, 0, 0, 1, f(Yes, false, "ḃ")}, - {0x1e04, 0, 0, 1, f(Yes, false, "Ḅ")}, - {0x1e05, 0, 0, 1, f(Yes, false, "ḅ")}, - {0x1e06, 0, 0, 1, f(Yes, false, "Ḇ")}, - {0x1e07, 0, 0, 1, f(Yes, false, "ḇ")}, - {0x1e08, 0, 0, 2, f(Yes, false, "Ḉ")}, - {0x1e09, 0, 0, 2, f(Yes, false, "ḉ")}, - {0x1e0a, 0, 0, 1, f(Yes, false, "Ḋ")}, - {0x1e0b, 0, 0, 1, f(Yes, false, "ḋ")}, - {0x1e0c, 0, 0, 1, f(Yes, false, "Ḍ")}, - {0x1e0d, 0, 0, 1, f(Yes, false, "ḍ")}, - {0x1e0e, 0, 0, 1, f(Yes, false, "Ḏ")}, - {0x1e0f, 0, 0, 1, f(Yes, false, "ḏ")}, - {0x1e10, 0, 0, 1, f(Yes, false, "Ḑ")}, - {0x1e11, 0, 0, 1, f(Yes, false, "ḑ")}, - {0x1e12, 0, 0, 1, f(Yes, false, "Ḓ")}, - {0x1e13, 0, 0, 1, f(Yes, false, "ḓ")}, - {0x1e14, 0, 0, 2, f(Yes, false, "Ḕ")}, - {0x1e15, 0, 0, 2, f(Yes, false, "ḕ")}, - {0x1e16, 0, 0, 2, f(Yes, false, "Ḗ")}, - {0x1e17, 0, 0, 2, f(Yes, false, "ḗ")}, - {0x1e18, 0, 0, 1, f(Yes, false, "Ḙ")}, - {0x1e19, 0, 0, 1, f(Yes, false, "ḙ")}, - {0x1e1a, 0, 0, 1, f(Yes, false, "Ḛ")}, - {0x1e1b, 0, 0, 1, f(Yes, false, "ḛ")}, - {0x1e1c, 0, 0, 2, f(Yes, false, "Ḝ")}, - {0x1e1d, 0, 0, 2, f(Yes, false, "ḝ")}, - {0x1e1e, 0, 0, 1, f(Yes, false, "Ḟ")}, - {0x1e1f, 0, 0, 1, f(Yes, false, "ḟ")}, - {0x1e20, 0, 0, 1, f(Yes, false, "Ḡ")}, - {0x1e21, 0, 0, 1, f(Yes, false, "ḡ")}, - {0x1e22, 0, 0, 1, f(Yes, false, "Ḣ")}, - {0x1e23, 0, 0, 1, f(Yes, false, "ḣ")}, - {0x1e24, 0, 0, 1, f(Yes, false, "Ḥ")}, - {0x1e25, 0, 0, 1, f(Yes, false, "ḥ")}, - {0x1e26, 0, 0, 1, f(Yes, false, "Ḧ")}, - {0x1e27, 0, 0, 1, f(Yes, false, "ḧ")}, - {0x1e28, 0, 0, 1, f(Yes, false, "Ḩ")}, - {0x1e29, 0, 0, 1, f(Yes, false, "ḩ")}, - {0x1e2a, 0, 0, 1, f(Yes, false, "Ḫ")}, - {0x1e2b, 0, 0, 1, f(Yes, false, "ḫ")}, - {0x1e2c, 0, 0, 1, f(Yes, false, "Ḭ")}, - {0x1e2d, 0, 0, 1, f(Yes, false, "ḭ")}, - {0x1e2e, 0, 0, 2, f(Yes, false, "Ḯ")}, - {0x1e2f, 0, 0, 2, f(Yes, false, "ḯ")}, - {0x1e30, 0, 0, 1, f(Yes, false, "Ḱ")}, - {0x1e31, 0, 0, 1, f(Yes, false, "ḱ")}, - {0x1e32, 0, 0, 1, f(Yes, false, "Ḳ")}, - {0x1e33, 0, 0, 1, f(Yes, false, "ḳ")}, - {0x1e34, 0, 0, 1, f(Yes, false, "Ḵ")}, - {0x1e35, 0, 0, 1, f(Yes, false, "ḵ")}, - {0x1e36, 0, 0, 1, f(Yes, true, "Ḷ")}, - {0x1e37, 0, 0, 1, f(Yes, true, "ḷ")}, - {0x1e38, 0, 0, 2, f(Yes, false, "Ḹ")}, - {0x1e39, 0, 0, 2, f(Yes, false, "ḹ")}, - {0x1e3a, 0, 0, 1, f(Yes, false, "Ḻ")}, - {0x1e3b, 0, 0, 1, f(Yes, false, "ḻ")}, - {0x1e3c, 0, 0, 1, f(Yes, false, "Ḽ")}, - {0x1e3d, 0, 0, 1, f(Yes, false, "ḽ")}, - {0x1e3e, 0, 0, 1, f(Yes, false, "Ḿ")}, - {0x1e3f, 0, 0, 1, f(Yes, false, "ḿ")}, - {0x1e40, 0, 0, 1, f(Yes, false, "Ṁ")}, - {0x1e41, 0, 0, 1, f(Yes, false, "ṁ")}, - {0x1e42, 0, 0, 1, f(Yes, false, "Ṃ")}, - {0x1e43, 0, 0, 1, f(Yes, false, "ṃ")}, - {0x1e44, 0, 0, 1, f(Yes, false, "Ṅ")}, - {0x1e45, 0, 0, 1, f(Yes, false, "ṅ")}, - {0x1e46, 0, 0, 1, f(Yes, false, "Ṇ")}, - {0x1e47, 0, 0, 1, f(Yes, false, "ṇ")}, - {0x1e48, 0, 0, 1, f(Yes, false, "Ṉ")}, - {0x1e49, 0, 0, 1, f(Yes, false, "ṉ")}, - {0x1e4a, 0, 0, 1, f(Yes, false, "Ṋ")}, - {0x1e4b, 0, 0, 1, f(Yes, false, "ṋ")}, - {0x1e4c, 0, 0, 2, f(Yes, false, "Ṍ")}, - {0x1e4d, 0, 0, 2, f(Yes, false, "ṍ")}, - {0x1e4e, 0, 0, 2, f(Yes, false, "Ṏ")}, - {0x1e4f, 0, 0, 2, f(Yes, false, "ṏ")}, - {0x1e50, 0, 0, 2, f(Yes, false, "Ṑ")}, - {0x1e51, 0, 0, 2, f(Yes, false, "ṑ")}, - {0x1e52, 0, 0, 2, f(Yes, false, "Ṓ")}, - {0x1e53, 0, 0, 2, f(Yes, false, "ṓ")}, - {0x1e54, 0, 0, 1, f(Yes, false, "Ṕ")}, - {0x1e55, 0, 0, 1, f(Yes, false, "ṕ")}, - {0x1e56, 0, 0, 1, f(Yes, false, "Ṗ")}, - {0x1e57, 0, 0, 1, f(Yes, false, "ṗ")}, - {0x1e58, 0, 0, 1, f(Yes, false, "Ṙ")}, - {0x1e59, 0, 0, 1, f(Yes, false, "ṙ")}, - {0x1e5a, 0, 0, 1, f(Yes, true, "Ṛ")}, - {0x1e5b, 0, 0, 1, f(Yes, true, "ṛ")}, - {0x1e5c, 0, 0, 2, f(Yes, false, "Ṝ")}, - {0x1e5d, 0, 0, 2, f(Yes, false, "ṝ")}, - {0x1e5e, 0, 0, 1, f(Yes, false, "Ṟ")}, - {0x1e5f, 0, 0, 1, f(Yes, false, "ṟ")}, - {0x1e60, 0, 0, 1, f(Yes, false, "Ṡ")}, - {0x1e61, 0, 0, 1, f(Yes, false, "ṡ")}, - {0x1e62, 0, 0, 1, f(Yes, true, "Ṣ")}, - {0x1e63, 0, 0, 1, f(Yes, true, "ṣ")}, - {0x1e64, 0, 0, 2, f(Yes, false, "Ṥ")}, - {0x1e65, 0, 0, 2, f(Yes, false, "ṥ")}, - {0x1e66, 0, 0, 2, f(Yes, false, "Ṧ")}, - {0x1e67, 0, 0, 2, f(Yes, false, "ṧ")}, - {0x1e68, 0, 0, 2, f(Yes, false, "Ṩ")}, - {0x1e69, 0, 0, 2, f(Yes, false, "ṩ")}, - {0x1e6a, 0, 0, 1, f(Yes, false, "Ṫ")}, - {0x1e6b, 0, 0, 1, f(Yes, false, "ṫ")}, - {0x1e6c, 0, 0, 1, f(Yes, false, "Ṭ")}, - {0x1e6d, 0, 0, 1, f(Yes, false, "ṭ")}, - {0x1e6e, 0, 0, 1, f(Yes, false, "Ṯ")}, - {0x1e6f, 0, 0, 1, f(Yes, false, "ṯ")}, - {0x1e70, 0, 0, 1, f(Yes, false, "Ṱ")}, - {0x1e71, 0, 0, 1, f(Yes, false, "ṱ")}, - {0x1e72, 0, 0, 1, f(Yes, false, "Ṳ")}, - {0x1e73, 0, 0, 1, f(Yes, false, "ṳ")}, - {0x1e74, 0, 0, 1, f(Yes, false, "Ṵ")}, - {0x1e75, 0, 0, 1, f(Yes, false, "ṵ")}, - {0x1e76, 0, 0, 1, f(Yes, false, "Ṷ")}, - {0x1e77, 0, 0, 1, f(Yes, false, "ṷ")}, - {0x1e78, 0, 0, 2, f(Yes, false, "Ṹ")}, - {0x1e79, 0, 0, 2, f(Yes, false, "ṹ")}, - {0x1e7a, 0, 0, 2, f(Yes, false, "Ṻ")}, - {0x1e7b, 0, 0, 2, f(Yes, false, "ṻ")}, - {0x1e7c, 0, 0, 1, f(Yes, false, "Ṽ")}, - {0x1e7d, 0, 0, 1, f(Yes, false, "ṽ")}, - {0x1e7e, 0, 0, 1, f(Yes, false, "Ṿ")}, - {0x1e7f, 0, 0, 1, f(Yes, false, "ṿ")}, - {0x1e80, 0, 0, 1, f(Yes, false, "Ẁ")}, - {0x1e81, 0, 0, 1, f(Yes, false, "ẁ")}, - {0x1e82, 0, 0, 1, f(Yes, false, "Ẃ")}, - {0x1e83, 0, 0, 1, f(Yes, false, "ẃ")}, - {0x1e84, 0, 0, 1, f(Yes, false, "Ẅ")}, - {0x1e85, 0, 0, 1, f(Yes, false, "ẅ")}, - {0x1e86, 0, 0, 1, f(Yes, false, "Ẇ")}, - {0x1e87, 0, 0, 1, f(Yes, false, "ẇ")}, - {0x1e88, 0, 0, 1, f(Yes, false, "Ẉ")}, - {0x1e89, 0, 0, 1, f(Yes, false, "ẉ")}, - {0x1e8a, 0, 0, 1, f(Yes, false, "Ẋ")}, - {0x1e8b, 0, 0, 1, f(Yes, false, "ẋ")}, - {0x1e8c, 0, 0, 1, f(Yes, false, "Ẍ")}, - {0x1e8d, 0, 0, 1, f(Yes, false, "ẍ")}, - {0x1e8e, 0, 0, 1, f(Yes, false, "Ẏ")}, - {0x1e8f, 0, 0, 1, f(Yes, false, "ẏ")}, - {0x1e90, 0, 0, 1, f(Yes, false, "Ẑ")}, - {0x1e91, 0, 0, 1, f(Yes, false, "ẑ")}, - {0x1e92, 0, 0, 1, f(Yes, false, "Ẓ")}, - {0x1e93, 0, 0, 1, f(Yes, false, "ẓ")}, - {0x1e94, 0, 0, 1, f(Yes, false, "Ẕ")}, - {0x1e95, 0, 0, 1, f(Yes, false, "ẕ")}, - {0x1e96, 0, 0, 1, f(Yes, false, "ẖ")}, - {0x1e97, 0, 0, 1, f(Yes, false, "ẗ")}, - {0x1e98, 0, 0, 1, f(Yes, false, "ẘ")}, - {0x1e99, 0, 0, 1, f(Yes, false, "ẙ")}, - {0x1e9a, 0, 0, 0, g(Yes, No, false, false, "", "aʾ")}, - {0x1e9b, 0, 0, 1, g(Yes, No, false, false, "ẛ", "ṡ")}, - {0x1e9c, 0, 0, 0, f(Yes, false, "")}, - {0x1ea0, 0, 0, 1, f(Yes, true, "Ạ")}, - {0x1ea1, 0, 0, 1, f(Yes, true, "ạ")}, - {0x1ea2, 0, 0, 1, f(Yes, false, "Ả")}, - {0x1ea3, 0, 0, 1, f(Yes, false, "ả")}, - {0x1ea4, 0, 0, 2, f(Yes, false, "Ấ")}, - {0x1ea5, 0, 0, 2, f(Yes, false, "ấ")}, - {0x1ea6, 0, 0, 2, f(Yes, false, "Ầ")}, - {0x1ea7, 0, 0, 2, f(Yes, false, "ầ")}, - {0x1ea8, 0, 0, 2, f(Yes, false, "Ẩ")}, - {0x1ea9, 0, 0, 2, f(Yes, false, "ẩ")}, - {0x1eaa, 0, 0, 2, f(Yes, false, "Ẫ")}, - {0x1eab, 0, 0, 2, f(Yes, false, "ẫ")}, - {0x1eac, 0, 0, 2, f(Yes, false, "Ậ")}, - {0x1ead, 0, 0, 2, f(Yes, false, "ậ")}, - {0x1eae, 0, 0, 2, f(Yes, false, "Ắ")}, - {0x1eaf, 0, 0, 2, f(Yes, false, "ắ")}, - {0x1eb0, 0, 0, 2, f(Yes, false, "Ằ")}, - {0x1eb1, 0, 0, 2, f(Yes, false, "ằ")}, - {0x1eb2, 0, 0, 2, f(Yes, false, "Ẳ")}, - {0x1eb3, 0, 0, 2, f(Yes, false, "ẳ")}, - {0x1eb4, 0, 0, 2, f(Yes, false, "Ẵ")}, - {0x1eb5, 0, 0, 2, f(Yes, false, "ẵ")}, - {0x1eb6, 0, 0, 2, f(Yes, false, "Ặ")}, - {0x1eb7, 0, 0, 2, f(Yes, false, "ặ")}, - {0x1eb8, 0, 0, 1, f(Yes, true, "Ẹ")}, - {0x1eb9, 0, 0, 1, f(Yes, true, "ẹ")}, - {0x1eba, 0, 0, 1, f(Yes, false, "Ẻ")}, - {0x1ebb, 0, 0, 1, f(Yes, false, "ẻ")}, - {0x1ebc, 0, 0, 1, f(Yes, false, "Ẽ")}, - {0x1ebd, 0, 0, 1, f(Yes, false, "ẽ")}, - {0x1ebe, 0, 0, 2, f(Yes, false, "Ế")}, - {0x1ebf, 0, 0, 2, f(Yes, false, "ế")}, - {0x1ec0, 0, 0, 2, f(Yes, false, "Ề")}, - {0x1ec1, 0, 0, 2, f(Yes, false, "ề")}, - {0x1ec2, 0, 0, 2, f(Yes, false, "Ể")}, - {0x1ec3, 0, 0, 2, f(Yes, false, "ể")}, - {0x1ec4, 0, 0, 2, f(Yes, false, "Ễ")}, - {0x1ec5, 0, 0, 2, f(Yes, false, "ễ")}, - {0x1ec6, 0, 0, 2, f(Yes, false, "Ệ")}, - {0x1ec7, 0, 0, 2, f(Yes, false, "ệ")}, - {0x1ec8, 0, 0, 1, f(Yes, false, "Ỉ")}, - {0x1ec9, 0, 0, 1, f(Yes, false, "ỉ")}, - {0x1eca, 0, 0, 1, f(Yes, false, "Ị")}, - {0x1ecb, 0, 0, 1, f(Yes, false, "ị")}, - {0x1ecc, 0, 0, 1, f(Yes, true, "Ọ")}, - {0x1ecd, 0, 0, 1, f(Yes, true, "ọ")}, - {0x1ece, 0, 0, 1, f(Yes, false, "Ỏ")}, - {0x1ecf, 0, 0, 1, f(Yes, false, "ỏ")}, - {0x1ed0, 0, 0, 2, f(Yes, false, "Ố")}, - {0x1ed1, 0, 0, 2, f(Yes, false, "ố")}, - {0x1ed2, 0, 0, 2, f(Yes, false, "Ồ")}, - {0x1ed3, 0, 0, 2, f(Yes, false, "ồ")}, - {0x1ed4, 0, 0, 2, f(Yes, false, "Ổ")}, - {0x1ed5, 0, 0, 2, f(Yes, false, "ổ")}, - {0x1ed6, 0, 0, 2, f(Yes, false, "Ỗ")}, - {0x1ed7, 0, 0, 2, f(Yes, false, "ỗ")}, - {0x1ed8, 0, 0, 2, f(Yes, false, "Ộ")}, - {0x1ed9, 0, 0, 2, f(Yes, false, "ộ")}, - {0x1eda, 0, 0, 2, f(Yes, false, "Ớ")}, - {0x1edb, 0, 0, 2, f(Yes, false, "ớ")}, - {0x1edc, 0, 0, 2, f(Yes, false, "Ờ")}, - {0x1edd, 0, 0, 2, f(Yes, false, "ờ")}, - {0x1ede, 0, 0, 2, f(Yes, false, "Ở")}, - {0x1edf, 0, 0, 2, f(Yes, false, "ở")}, - {0x1ee0, 0, 0, 2, f(Yes, false, "Ỡ")}, - {0x1ee1, 0, 0, 2, f(Yes, false, "ỡ")}, - {0x1ee2, 0, 0, 2, f(Yes, false, "Ợ")}, - {0x1ee3, 0, 0, 2, f(Yes, false, "ợ")}, - {0x1ee4, 0, 0, 1, f(Yes, false, "Ụ")}, - {0x1ee5, 0, 0, 1, f(Yes, false, "ụ")}, - {0x1ee6, 0, 0, 1, f(Yes, false, "Ủ")}, - {0x1ee7, 0, 0, 1, f(Yes, false, "ủ")}, - {0x1ee8, 0, 0, 2, f(Yes, false, "Ứ")}, - {0x1ee9, 0, 0, 2, f(Yes, false, "ứ")}, - {0x1eea, 0, 0, 2, f(Yes, false, "Ừ")}, - {0x1eeb, 0, 0, 2, f(Yes, false, "ừ")}, - {0x1eec, 0, 0, 2, f(Yes, false, "Ử")}, - {0x1eed, 0, 0, 2, f(Yes, false, "ử")}, - {0x1eee, 0, 0, 2, f(Yes, false, "Ữ")}, - {0x1eef, 0, 0, 2, f(Yes, false, "ữ")}, - {0x1ef0, 0, 0, 2, f(Yes, false, "Ự")}, - {0x1ef1, 0, 0, 2, f(Yes, false, "ự")}, - {0x1ef2, 0, 0, 1, f(Yes, false, "Ỳ")}, - {0x1ef3, 0, 0, 1, f(Yes, false, "ỳ")}, - {0x1ef4, 0, 0, 1, f(Yes, false, "Ỵ")}, - {0x1ef5, 0, 0, 1, f(Yes, false, "ỵ")}, - {0x1ef6, 0, 0, 1, f(Yes, false, "Ỷ")}, - {0x1ef7, 0, 0, 1, f(Yes, false, "ỷ")}, - {0x1ef8, 0, 0, 1, f(Yes, false, "Ỹ")}, - {0x1ef9, 0, 0, 1, f(Yes, false, "ỹ")}, - {0x1efa, 0, 0, 0, f(Yes, false, "")}, - {0x1f00, 0, 0, 1, f(Yes, true, "ἀ")}, - {0x1f01, 0, 0, 1, f(Yes, true, "ἁ")}, - {0x1f02, 0, 0, 2, f(Yes, true, "ἂ")}, - {0x1f03, 0, 0, 2, f(Yes, true, "ἃ")}, - {0x1f04, 0, 0, 2, f(Yes, true, "ἄ")}, - {0x1f05, 0, 0, 2, f(Yes, true, "ἅ")}, - {0x1f06, 0, 0, 2, f(Yes, true, "ἆ")}, - {0x1f07, 0, 0, 2, f(Yes, true, "ἇ")}, - {0x1f08, 0, 0, 1, f(Yes, true, "Ἀ")}, - {0x1f09, 0, 0, 1, f(Yes, true, "Ἁ")}, - {0x1f0a, 0, 0, 2, f(Yes, true, "Ἂ")}, - {0x1f0b, 0, 0, 2, f(Yes, true, "Ἃ")}, - {0x1f0c, 0, 0, 2, f(Yes, true, "Ἄ")}, - {0x1f0d, 0, 0, 2, f(Yes, true, "Ἅ")}, - {0x1f0e, 0, 0, 2, f(Yes, true, "Ἆ")}, - {0x1f0f, 0, 0, 2, f(Yes, true, "Ἇ")}, - {0x1f10, 0, 0, 1, f(Yes, true, "ἐ")}, - {0x1f11, 0, 0, 1, f(Yes, true, "ἑ")}, - {0x1f12, 0, 0, 2, f(Yes, false, "ἒ")}, - {0x1f13, 0, 0, 2, f(Yes, false, "ἓ")}, - {0x1f14, 0, 0, 2, f(Yes, false, "ἔ")}, - {0x1f15, 0, 0, 2, f(Yes, false, "ἕ")}, - {0x1f16, 0, 0, 0, f(Yes, false, "")}, - {0x1f18, 0, 0, 1, f(Yes, true, "Ἐ")}, - {0x1f19, 0, 0, 1, f(Yes, true, "Ἑ")}, - {0x1f1a, 0, 0, 2, f(Yes, false, "Ἒ")}, - {0x1f1b, 0, 0, 2, f(Yes, false, "Ἓ")}, - {0x1f1c, 0, 0, 2, f(Yes, false, "Ἔ")}, - {0x1f1d, 0, 0, 2, f(Yes, false, "Ἕ")}, - {0x1f1e, 0, 0, 0, f(Yes, false, "")}, - {0x1f20, 0, 0, 1, f(Yes, true, "ἠ")}, - {0x1f21, 0, 0, 1, f(Yes, true, "ἡ")}, - {0x1f22, 0, 0, 2, f(Yes, true, "ἢ")}, - {0x1f23, 0, 0, 2, f(Yes, true, "ἣ")}, - {0x1f24, 0, 0, 2, f(Yes, true, "ἤ")}, - {0x1f25, 0, 0, 2, f(Yes, true, "ἥ")}, - {0x1f26, 0, 0, 2, f(Yes, true, "ἦ")}, - {0x1f27, 0, 0, 2, f(Yes, true, "ἧ")}, - {0x1f28, 0, 0, 1, f(Yes, true, "Ἠ")}, - {0x1f29, 0, 0, 1, f(Yes, true, "Ἡ")}, - {0x1f2a, 0, 0, 2, f(Yes, true, "Ἢ")}, - {0x1f2b, 0, 0, 2, f(Yes, true, "Ἣ")}, - {0x1f2c, 0, 0, 2, f(Yes, true, "Ἤ")}, - {0x1f2d, 0, 0, 2, f(Yes, true, "Ἥ")}, - {0x1f2e, 0, 0, 2, f(Yes, true, "Ἦ")}, - {0x1f2f, 0, 0, 2, f(Yes, true, "Ἧ")}, - {0x1f30, 0, 0, 1, f(Yes, true, "ἰ")}, - {0x1f31, 0, 0, 1, f(Yes, true, "ἱ")}, - {0x1f32, 0, 0, 2, f(Yes, false, "ἲ")}, - {0x1f33, 0, 0, 2, f(Yes, false, "ἳ")}, - {0x1f34, 0, 0, 2, f(Yes, false, "ἴ")}, - {0x1f35, 0, 0, 2, f(Yes, false, "ἵ")}, - {0x1f36, 0, 0, 2, f(Yes, false, "ἶ")}, - {0x1f37, 0, 0, 2, f(Yes, false, "ἷ")}, - {0x1f38, 0, 0, 1, f(Yes, true, "Ἰ")}, - {0x1f39, 0, 0, 1, f(Yes, true, "Ἱ")}, - {0x1f3a, 0, 0, 2, f(Yes, false, "Ἲ")}, - {0x1f3b, 0, 0, 2, f(Yes, false, "Ἳ")}, - {0x1f3c, 0, 0, 2, f(Yes, false, "Ἴ")}, - {0x1f3d, 0, 0, 2, f(Yes, false, "Ἵ")}, - {0x1f3e, 0, 0, 2, f(Yes, false, "Ἶ")}, - {0x1f3f, 0, 0, 2, f(Yes, false, "Ἷ")}, - {0x1f40, 0, 0, 1, f(Yes, true, "ὀ")}, - {0x1f41, 0, 0, 1, f(Yes, true, "ὁ")}, - {0x1f42, 0, 0, 2, f(Yes, false, "ὂ")}, - {0x1f43, 0, 0, 2, f(Yes, false, "ὃ")}, - {0x1f44, 0, 0, 2, f(Yes, false, "ὄ")}, - {0x1f45, 0, 0, 2, f(Yes, false, "ὅ")}, - {0x1f46, 0, 0, 0, f(Yes, false, "")}, - {0x1f48, 0, 0, 1, f(Yes, true, "Ὀ")}, - {0x1f49, 0, 0, 1, f(Yes, true, "Ὁ")}, - {0x1f4a, 0, 0, 2, f(Yes, false, "Ὂ")}, - {0x1f4b, 0, 0, 2, f(Yes, false, "Ὃ")}, - {0x1f4c, 0, 0, 2, f(Yes, false, "Ὄ")}, - {0x1f4d, 0, 0, 2, f(Yes, false, "Ὅ")}, - {0x1f4e, 0, 0, 0, f(Yes, false, "")}, - {0x1f50, 0, 0, 1, f(Yes, true, "ὐ")}, - {0x1f51, 0, 0, 1, f(Yes, true, "ὑ")}, - {0x1f52, 0, 0, 2, f(Yes, false, "ὒ")}, - {0x1f53, 0, 0, 2, f(Yes, false, "ὓ")}, - {0x1f54, 0, 0, 2, f(Yes, false, "ὔ")}, - {0x1f55, 0, 0, 2, f(Yes, false, "ὕ")}, - {0x1f56, 0, 0, 2, f(Yes, false, "ὖ")}, - {0x1f57, 0, 0, 2, f(Yes, false, "ὗ")}, - {0x1f58, 0, 0, 0, f(Yes, false, "")}, - {0x1f59, 0, 0, 1, f(Yes, true, "Ὑ")}, - {0x1f5a, 0, 0, 0, f(Yes, false, "")}, - {0x1f5b, 0, 0, 2, f(Yes, false, "Ὓ")}, - {0x1f5c, 0, 0, 0, f(Yes, false, "")}, - {0x1f5d, 0, 0, 2, f(Yes, false, "Ὕ")}, - {0x1f5e, 0, 0, 0, f(Yes, false, "")}, - {0x1f5f, 0, 0, 2, f(Yes, false, "Ὗ")}, - {0x1f60, 0, 0, 1, f(Yes, true, "ὠ")}, - {0x1f61, 0, 0, 1, f(Yes, true, "ὡ")}, - {0x1f62, 0, 0, 2, f(Yes, true, "ὢ")}, - {0x1f63, 0, 0, 2, f(Yes, true, "ὣ")}, - {0x1f64, 0, 0, 2, f(Yes, true, "ὤ")}, - {0x1f65, 0, 0, 2, f(Yes, true, "ὥ")}, - {0x1f66, 0, 0, 2, f(Yes, true, "ὦ")}, - {0x1f67, 0, 0, 2, f(Yes, true, "ὧ")}, - {0x1f68, 0, 0, 1, f(Yes, true, "Ὠ")}, - {0x1f69, 0, 0, 1, f(Yes, true, "Ὡ")}, - {0x1f6a, 0, 0, 2, f(Yes, true, "Ὢ")}, - {0x1f6b, 0, 0, 2, f(Yes, true, "Ὣ")}, - {0x1f6c, 0, 0, 2, f(Yes, true, "Ὤ")}, - {0x1f6d, 0, 0, 2, f(Yes, true, "Ὥ")}, - {0x1f6e, 0, 0, 2, f(Yes, true, "Ὦ")}, - {0x1f6f, 0, 0, 2, f(Yes, true, "Ὧ")}, - {0x1f70, 0, 0, 1, f(Yes, true, "ὰ")}, - {0x1f71, 0, 0, 1, f(No, false, "ά")}, - {0x1f72, 0, 0, 1, f(Yes, false, "ὲ")}, - {0x1f73, 0, 0, 1, f(No, false, "έ")}, - {0x1f74, 0, 0, 1, f(Yes, true, "ὴ")}, - {0x1f75, 0, 0, 1, f(No, false, "ή")}, - {0x1f76, 0, 0, 1, f(Yes, false, "ὶ")}, - {0x1f77, 0, 0, 1, f(No, false, "ί")}, - {0x1f78, 0, 0, 1, f(Yes, false, "ὸ")}, - {0x1f79, 0, 0, 1, f(No, false, "ό")}, - {0x1f7a, 0, 0, 1, f(Yes, false, "ὺ")}, - {0x1f7b, 0, 0, 1, f(No, false, "ύ")}, - {0x1f7c, 0, 0, 1, f(Yes, true, "ὼ")}, - {0x1f7d, 0, 0, 1, f(No, false, "ώ")}, - {0x1f7e, 0, 0, 0, f(Yes, false, "")}, - {0x1f80, 0, 0, 2, f(Yes, false, "ᾀ")}, - {0x1f81, 0, 0, 2, f(Yes, false, "ᾁ")}, - {0x1f82, 0, 0, 3, f(Yes, false, "ᾂ")}, - {0x1f83, 0, 0, 3, f(Yes, false, "ᾃ")}, - {0x1f84, 0, 0, 3, f(Yes, false, "ᾄ")}, - {0x1f85, 0, 0, 3, f(Yes, false, "ᾅ")}, - {0x1f86, 0, 0, 3, f(Yes, false, "ᾆ")}, - {0x1f87, 0, 0, 3, f(Yes, false, "ᾇ")}, - {0x1f88, 0, 0, 2, f(Yes, false, "ᾈ")}, - {0x1f89, 0, 0, 2, f(Yes, false, "ᾉ")}, - {0x1f8a, 0, 0, 3, f(Yes, false, "ᾊ")}, - {0x1f8b, 0, 0, 3, f(Yes, false, "ᾋ")}, - {0x1f8c, 0, 0, 3, f(Yes, false, "ᾌ")}, - {0x1f8d, 0, 0, 3, f(Yes, false, "ᾍ")}, - {0x1f8e, 0, 0, 3, f(Yes, false, "ᾎ")}, - {0x1f8f, 0, 0, 3, f(Yes, false, "ᾏ")}, - {0x1f90, 0, 0, 2, f(Yes, false, "ᾐ")}, - {0x1f91, 0, 0, 2, f(Yes, false, "ᾑ")}, - {0x1f92, 0, 0, 3, f(Yes, false, "ᾒ")}, - {0x1f93, 0, 0, 3, f(Yes, false, "ᾓ")}, - {0x1f94, 0, 0, 3, f(Yes, false, "ᾔ")}, - {0x1f95, 0, 0, 3, f(Yes, false, "ᾕ")}, - {0x1f96, 0, 0, 3, f(Yes, false, "ᾖ")}, - {0x1f97, 0, 0, 3, f(Yes, false, "ᾗ")}, - {0x1f98, 0, 0, 2, f(Yes, false, "ᾘ")}, - {0x1f99, 0, 0, 2, f(Yes, false, "ᾙ")}, - {0x1f9a, 0, 0, 3, f(Yes, false, "ᾚ")}, - {0x1f9b, 0, 0, 3, f(Yes, false, "ᾛ")}, - {0x1f9c, 0, 0, 3, f(Yes, false, "ᾜ")}, - {0x1f9d, 0, 0, 3, f(Yes, false, "ᾝ")}, - {0x1f9e, 0, 0, 3, f(Yes, false, "ᾞ")}, - {0x1f9f, 0, 0, 3, f(Yes, false, "ᾟ")}, - {0x1fa0, 0, 0, 2, f(Yes, false, "ᾠ")}, - {0x1fa1, 0, 0, 2, f(Yes, false, "ᾡ")}, - {0x1fa2, 0, 0, 3, f(Yes, false, "ᾢ")}, - {0x1fa3, 0, 0, 3, f(Yes, false, "ᾣ")}, - {0x1fa4, 0, 0, 3, f(Yes, false, "ᾤ")}, - {0x1fa5, 0, 0, 3, f(Yes, false, "ᾥ")}, - {0x1fa6, 0, 0, 3, f(Yes, false, "ᾦ")}, - {0x1fa7, 0, 0, 3, f(Yes, false, "ᾧ")}, - {0x1fa8, 0, 0, 2, f(Yes, false, "ᾨ")}, - {0x1fa9, 0, 0, 2, f(Yes, false, "ᾩ")}, - {0x1faa, 0, 0, 3, f(Yes, false, "ᾪ")}, - {0x1fab, 0, 0, 3, f(Yes, false, "ᾫ")}, - {0x1fac, 0, 0, 3, f(Yes, false, "ᾬ")}, - {0x1fad, 0, 0, 3, f(Yes, false, "ᾭ")}, - {0x1fae, 0, 0, 3, f(Yes, false, "ᾮ")}, - {0x1faf, 0, 0, 3, f(Yes, false, "ᾯ")}, - {0x1fb0, 0, 0, 1, f(Yes, false, "ᾰ")}, - {0x1fb1, 0, 0, 1, f(Yes, false, "ᾱ")}, - {0x1fb2, 0, 0, 2, f(Yes, false, "ᾲ")}, - {0x1fb3, 0, 0, 1, f(Yes, false, "ᾳ")}, - {0x1fb4, 0, 0, 2, f(Yes, false, "ᾴ")}, - {0x1fb5, 0, 0, 0, f(Yes, false, "")}, - {0x1fb6, 0, 0, 1, f(Yes, true, "ᾶ")}, - {0x1fb7, 0, 0, 2, f(Yes, false, "ᾷ")}, - {0x1fb8, 0, 0, 1, f(Yes, false, "Ᾰ")}, - {0x1fb9, 0, 0, 1, f(Yes, false, "Ᾱ")}, - {0x1fba, 0, 0, 1, f(Yes, false, "Ὰ")}, - {0x1fbb, 0, 0, 1, f(No, false, "Ά")}, - {0x1fbc, 0, 0, 1, f(Yes, false, "ᾼ")}, - {0x1fbd, 0, 0, 1, g(Yes, No, false, false, "", " ̓")}, - {0x1fbe, 0, 0, 0, f(No, false, "ι")}, - {0x1fbf, 0, 0, 1, g(Yes, No, true, false, "", " ̓")}, - {0x1fc0, 0, 0, 1, g(Yes, No, false, false, "", " ͂")}, - {0x1fc1, 0, 0, 2, g(Yes, No, false, false, "῁", " ̈͂")}, - {0x1fc2, 0, 0, 2, f(Yes, false, "ῂ")}, - {0x1fc3, 0, 0, 1, f(Yes, false, "ῃ")}, - {0x1fc4, 0, 0, 2, f(Yes, false, "ῄ")}, - {0x1fc5, 0, 0, 0, f(Yes, false, "")}, - {0x1fc6, 0, 0, 1, f(Yes, true, "ῆ")}, - {0x1fc7, 0, 0, 2, f(Yes, false, "ῇ")}, - {0x1fc8, 0, 0, 1, f(Yes, false, "Ὲ")}, - {0x1fc9, 0, 0, 1, f(No, false, "Έ")}, - {0x1fca, 0, 0, 1, f(Yes, false, "Ὴ")}, - {0x1fcb, 0, 0, 1, f(No, false, "Ή")}, - {0x1fcc, 0, 0, 1, f(Yes, false, "ῌ")}, - {0x1fcd, 0, 0, 2, g(Yes, No, false, false, "῍", " ̓̀")}, - {0x1fce, 0, 0, 2, g(Yes, No, false, false, "῎", " ̓́")}, - {0x1fcf, 0, 0, 2, g(Yes, No, false, false, "῏", " ̓͂")}, - {0x1fd0, 0, 0, 1, f(Yes, false, "ῐ")}, - {0x1fd1, 0, 0, 1, f(Yes, false, "ῑ")}, - {0x1fd2, 0, 0, 2, f(Yes, false, "ῒ")}, - {0x1fd3, 0, 0, 2, f(No, false, "ΐ")}, - {0x1fd4, 0, 0, 0, f(Yes, false, "")}, - {0x1fd6, 0, 0, 1, f(Yes, false, "ῖ")}, - {0x1fd7, 0, 0, 2, f(Yes, false, "ῗ")}, - {0x1fd8, 0, 0, 1, f(Yes, false, "Ῐ")}, - {0x1fd9, 0, 0, 1, f(Yes, false, "Ῑ")}, - {0x1fda, 0, 0, 1, f(Yes, false, "Ὶ")}, - {0x1fdb, 0, 0, 1, f(No, false, "Ί")}, - {0x1fdc, 0, 0, 0, f(Yes, false, "")}, - {0x1fdd, 0, 0, 2, g(Yes, No, false, false, "῝", " ̔̀")}, - {0x1fde, 0, 0, 2, g(Yes, No, false, false, "῞", " ̔́")}, - {0x1fdf, 0, 0, 2, g(Yes, No, false, false, "῟", " ̔͂")}, - {0x1fe0, 0, 0, 1, f(Yes, false, "ῠ")}, - {0x1fe1, 0, 0, 1, f(Yes, false, "ῡ")}, - {0x1fe2, 0, 0, 2, f(Yes, false, "ῢ")}, - {0x1fe3, 0, 0, 2, f(No, false, "ΰ")}, - {0x1fe4, 0, 0, 1, f(Yes, false, "ῤ")}, - {0x1fe5, 0, 0, 1, f(Yes, false, "ῥ")}, - {0x1fe6, 0, 0, 1, f(Yes, false, "ῦ")}, - {0x1fe7, 0, 0, 2, f(Yes, false, "ῧ")}, - {0x1fe8, 0, 0, 1, f(Yes, false, "Ῠ")}, - {0x1fe9, 0, 0, 1, f(Yes, false, "Ῡ")}, - {0x1fea, 0, 0, 1, f(Yes, false, "Ὺ")}, - {0x1feb, 0, 0, 1, f(No, false, "Ύ")}, - {0x1fec, 0, 0, 1, f(Yes, false, "Ῥ")}, - {0x1fed, 0, 0, 2, g(Yes, No, false, false, "῭", " ̈̀")}, - {0x1fee, 0, 0, 2, g(No, No, false, false, "΅", " ̈́")}, - {0x1fef, 0, 0, 0, f(No, false, "`")}, - {0x1ff0, 0, 0, 0, f(Yes, false, "")}, - {0x1ff2, 0, 0, 2, f(Yes, false, "ῲ")}, - {0x1ff3, 0, 0, 1, f(Yes, false, "ῳ")}, - {0x1ff4, 0, 0, 2, f(Yes, false, "ῴ")}, - {0x1ff5, 0, 0, 0, f(Yes, false, "")}, - {0x1ff6, 0, 0, 1, f(Yes, true, "ῶ")}, - {0x1ff7, 0, 0, 2, f(Yes, false, "ῷ")}, - {0x1ff8, 0, 0, 1, f(Yes, false, "Ὸ")}, - {0x1ff9, 0, 0, 1, f(No, false, "Ό")}, - {0x1ffa, 0, 0, 1, f(Yes, false, "Ὼ")}, - {0x1ffb, 0, 0, 1, f(No, false, "Ώ")}, - {0x1ffc, 0, 0, 1, f(Yes, false, "ῼ")}, - {0x1ffd, 0, 0, 1, g(No, No, false, false, "´", " ́")}, - {0x1ffe, 0, 0, 1, g(Yes, No, true, false, "", " ̔")}, - {0x1fff, 0, 0, 0, f(Yes, false, "")}, - {0x2000, 0, 0, 0, g(No, No, false, false, "\u2002", " ")}, - {0x2001, 0, 0, 0, g(No, No, false, false, "\u2003", " ")}, - {0x2002, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0x200b, 0, 0, 0, f(Yes, false, "")}, - {0x2011, 0, 0, 0, g(Yes, No, false, false, "", "‐")}, - {0x2012, 0, 0, 0, f(Yes, false, "")}, - {0x2017, 0, 0, 1, g(Yes, No, false, false, "", " ̳")}, - {0x2018, 0, 0, 0, f(Yes, false, "")}, - {0x2024, 0, 0, 0, g(Yes, No, false, false, "", ".")}, - {0x2025, 0, 0, 0, g(Yes, No, false, false, "", "..")}, - {0x2026, 0, 0, 0, g(Yes, No, false, false, "", "...")}, - {0x2027, 0, 0, 0, f(Yes, false, "")}, - {0x202f, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0x2030, 0, 0, 0, f(Yes, false, "")}, - {0x2033, 0, 0, 0, g(Yes, No, false, false, "", "′′")}, - {0x2034, 0, 0, 0, g(Yes, No, false, false, "", "′′′")}, - {0x2035, 0, 0, 0, f(Yes, false, "")}, - {0x2036, 0, 0, 0, g(Yes, No, false, false, "", "‵‵")}, - {0x2037, 0, 0, 0, g(Yes, No, false, false, "", "‵‵‵")}, - {0x2038, 0, 0, 0, f(Yes, false, "")}, - {0x203c, 0, 0, 0, g(Yes, No, false, false, "", "!!")}, - {0x203d, 0, 0, 0, f(Yes, false, "")}, - {0x203e, 0, 0, 1, g(Yes, No, false, false, "", " ̅")}, - {0x203f, 0, 0, 0, f(Yes, false, "")}, - {0x2047, 0, 0, 0, g(Yes, No, false, false, "", "??")}, - {0x2048, 0, 0, 0, g(Yes, No, false, false, "", "?!")}, - {0x2049, 0, 0, 0, g(Yes, No, false, false, "", "!?")}, - {0x204a, 0, 0, 0, f(Yes, false, "")}, - {0x2057, 0, 0, 0, g(Yes, No, false, false, "", "′′′′")}, - {0x2058, 0, 0, 0, f(Yes, false, "")}, - {0x205f, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0x2060, 0, 0, 0, f(Yes, false, "")}, - {0x2070, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x2071, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x2072, 0, 0, 0, f(Yes, false, "")}, - {0x2074, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x2075, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x2076, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x2077, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x2078, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x2079, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x207a, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0x207b, 0, 0, 0, g(Yes, No, false, false, "", "−")}, - {0x207c, 0, 0, 0, g(Yes, No, false, false, "", "=")}, - {0x207d, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0x207e, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0x207f, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x2080, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x2081, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x2082, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x2083, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x2084, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x2085, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x2086, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x2087, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x2088, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x2089, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x208a, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0x208b, 0, 0, 0, g(Yes, No, false, false, "", "−")}, - {0x208c, 0, 0, 0, g(Yes, No, false, false, "", "=")}, - {0x208d, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0x208e, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0x208f, 0, 0, 0, f(Yes, false, "")}, - {0x2090, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x2091, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x2092, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x2093, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x2094, 0, 0, 0, g(Yes, No, false, false, "", "ə")}, - {0x2095, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x2096, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x2097, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x2098, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x2099, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x209a, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x209b, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x209c, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x209d, 0, 0, 0, f(Yes, false, "")}, - {0x20a8, 0, 0, 0, g(Yes, No, false, false, "", "Rs")}, - {0x20a9, 0, 0, 0, f(Yes, false, "")}, - {0x20d0, 230, 1, 1, f(Yes, false, "")}, - {0x20d2, 1, 1, 1, f(Yes, false, "")}, - {0x20d4, 230, 1, 1, f(Yes, false, "")}, - {0x20d8, 1, 1, 1, f(Yes, false, "")}, - {0x20db, 230, 1, 1, f(Yes, false, "")}, - {0x20dd, 0, 0, 0, f(Yes, false, "")}, - {0x20e1, 230, 1, 1, f(Yes, false, "")}, - {0x20e2, 0, 0, 0, f(Yes, false, "")}, - {0x20e5, 1, 1, 1, f(Yes, false, "")}, - {0x20e7, 230, 1, 1, f(Yes, false, "")}, - {0x20e8, 220, 1, 1, f(Yes, false, "")}, - {0x20e9, 230, 1, 1, f(Yes, false, "")}, - {0x20ea, 1, 1, 1, f(Yes, false, "")}, - {0x20ec, 220, 1, 1, f(Yes, false, "")}, - {0x20f0, 230, 1, 1, f(Yes, false, "")}, - {0x20f1, 0, 0, 0, f(Yes, false, "")}, - {0x2100, 0, 0, 0, g(Yes, No, false, false, "", "a/c")}, - {0x2101, 0, 0, 0, g(Yes, No, false, false, "", "a/s")}, - {0x2102, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x2103, 0, 0, 0, g(Yes, No, false, false, "", "°C")}, - {0x2104, 0, 0, 0, f(Yes, false, "")}, - {0x2105, 0, 0, 0, g(Yes, No, false, false, "", "c/o")}, - {0x2106, 0, 0, 0, g(Yes, No, false, false, "", "c/u")}, - {0x2107, 0, 0, 0, g(Yes, No, false, false, "", "Ɛ")}, - {0x2108, 0, 0, 0, f(Yes, false, "")}, - {0x2109, 0, 0, 0, g(Yes, No, false, false, "", "°F")}, - {0x210a, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x210b, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x210e, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x210f, 0, 0, 0, g(Yes, No, false, false, "", "ħ")}, - {0x2110, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x2112, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x2113, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x2114, 0, 0, 0, f(Yes, false, "")}, - {0x2115, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x2116, 0, 0, 0, g(Yes, No, false, false, "", "No")}, - {0x2117, 0, 0, 0, f(Yes, false, "")}, - {0x2119, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x211a, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x211b, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x211e, 0, 0, 0, f(Yes, false, "")}, - {0x2120, 0, 0, 0, g(Yes, No, false, false, "", "SM")}, - {0x2121, 0, 0, 0, g(Yes, No, false, false, "", "TEL")}, - {0x2122, 0, 0, 0, g(Yes, No, false, false, "", "TM")}, - {0x2123, 0, 0, 0, f(Yes, false, "")}, - {0x2124, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x2125, 0, 0, 0, f(Yes, false, "")}, - {0x2126, 0, 0, 0, f(No, false, "Ω")}, - {0x2127, 0, 0, 0, f(Yes, false, "")}, - {0x2128, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x2129, 0, 0, 0, f(Yes, false, "")}, - {0x212a, 0, 0, 0, f(No, false, "K")}, - {0x212b, 0, 0, 1, f(No, false, "Å")}, - {0x212c, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x212d, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x212e, 0, 0, 0, f(Yes, false, "")}, - {0x212f, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x2130, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x2131, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x2132, 0, 0, 0, f(Yes, false, "")}, - {0x2133, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x2134, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x2135, 0, 0, 0, g(Yes, No, false, false, "", "א")}, - {0x2136, 0, 0, 0, g(Yes, No, false, false, "", "ב")}, - {0x2137, 0, 0, 0, g(Yes, No, false, false, "", "ג")}, - {0x2138, 0, 0, 0, g(Yes, No, false, false, "", "ד")}, - {0x2139, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x213a, 0, 0, 0, f(Yes, false, "")}, - {0x213b, 0, 0, 0, g(Yes, No, false, false, "", "FAX")}, - {0x213c, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x213d, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x213e, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x213f, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x2140, 0, 0, 0, g(Yes, No, false, false, "", "∑")}, - {0x2141, 0, 0, 0, f(Yes, false, "")}, - {0x2145, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x2146, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x2147, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x2148, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x2149, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x214a, 0, 0, 0, f(Yes, false, "")}, - {0x2150, 0, 0, 0, g(Yes, No, false, false, "", "1⁄7")}, - {0x2151, 0, 0, 0, g(Yes, No, false, false, "", "1⁄9")}, - {0x2152, 0, 0, 0, g(Yes, No, false, false, "", "1⁄10")}, - {0x2153, 0, 0, 0, g(Yes, No, false, false, "", "1⁄3")}, - {0x2154, 0, 0, 0, g(Yes, No, false, false, "", "2⁄3")}, - {0x2155, 0, 0, 0, g(Yes, No, false, false, "", "1⁄5")}, - {0x2156, 0, 0, 0, g(Yes, No, false, false, "", "2⁄5")}, - {0x2157, 0, 0, 0, g(Yes, No, false, false, "", "3⁄5")}, - {0x2158, 0, 0, 0, g(Yes, No, false, false, "", "4⁄5")}, - {0x2159, 0, 0, 0, g(Yes, No, false, false, "", "1⁄6")}, - {0x215a, 0, 0, 0, g(Yes, No, false, false, "", "5⁄6")}, - {0x215b, 0, 0, 0, g(Yes, No, false, false, "", "1⁄8")}, - {0x215c, 0, 0, 0, g(Yes, No, false, false, "", "3⁄8")}, - {0x215d, 0, 0, 0, g(Yes, No, false, false, "", "5⁄8")}, - {0x215e, 0, 0, 0, g(Yes, No, false, false, "", "7⁄8")}, - {0x215f, 0, 0, 0, g(Yes, No, false, false, "", "1⁄")}, - {0x2160, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x2161, 0, 0, 0, g(Yes, No, false, false, "", "II")}, - {0x2162, 0, 0, 0, g(Yes, No, false, false, "", "III")}, - {0x2163, 0, 0, 0, g(Yes, No, false, false, "", "IV")}, - {0x2164, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x2165, 0, 0, 0, g(Yes, No, false, false, "", "VI")}, - {0x2166, 0, 0, 0, g(Yes, No, false, false, "", "VII")}, - {0x2167, 0, 0, 0, g(Yes, No, false, false, "", "VIII")}, - {0x2168, 0, 0, 0, g(Yes, No, false, false, "", "IX")}, - {0x2169, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x216a, 0, 0, 0, g(Yes, No, false, false, "", "XI")}, - {0x216b, 0, 0, 0, g(Yes, No, false, false, "", "XII")}, - {0x216c, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x216d, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x216e, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x216f, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x2170, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x2171, 0, 0, 0, g(Yes, No, false, false, "", "ii")}, - {0x2172, 0, 0, 0, g(Yes, No, false, false, "", "iii")}, - {0x2173, 0, 0, 0, g(Yes, No, false, false, "", "iv")}, - {0x2174, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x2175, 0, 0, 0, g(Yes, No, false, false, "", "vi")}, - {0x2176, 0, 0, 0, g(Yes, No, false, false, "", "vii")}, - {0x2177, 0, 0, 0, g(Yes, No, false, false, "", "viii")}, - {0x2178, 0, 0, 0, g(Yes, No, false, false, "", "ix")}, - {0x2179, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x217a, 0, 0, 0, g(Yes, No, false, false, "", "xi")}, - {0x217b, 0, 0, 0, g(Yes, No, false, false, "", "xii")}, - {0x217c, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x217d, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x217e, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x217f, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x2180, 0, 0, 0, f(Yes, false, "")}, - {0x2189, 0, 0, 0, g(Yes, No, false, false, "", "0⁄3")}, - {0x218a, 0, 0, 0, f(Yes, false, "")}, - {0x2190, 0, 0, 0, f(Yes, true, "")}, - {0x2191, 0, 0, 0, f(Yes, false, "")}, - {0x2192, 0, 0, 0, f(Yes, true, "")}, - {0x2193, 0, 0, 0, f(Yes, false, "")}, - {0x2194, 0, 0, 0, f(Yes, true, "")}, - {0x2195, 0, 0, 0, f(Yes, false, "")}, - {0x219a, 0, 0, 1, f(Yes, false, "↚")}, - {0x219b, 0, 0, 1, f(Yes, false, "↛")}, - {0x219c, 0, 0, 0, f(Yes, false, "")}, - {0x21ae, 0, 0, 1, f(Yes, false, "↮")}, - {0x21af, 0, 0, 0, f(Yes, false, "")}, - {0x21cd, 0, 0, 1, f(Yes, false, "⇍")}, - {0x21ce, 0, 0, 1, f(Yes, false, "⇎")}, - {0x21cf, 0, 0, 1, f(Yes, false, "⇏")}, - {0x21d0, 0, 0, 0, f(Yes, true, "")}, - {0x21d1, 0, 0, 0, f(Yes, false, "")}, - {0x21d2, 0, 0, 0, f(Yes, true, "")}, - {0x21d3, 0, 0, 0, f(Yes, false, "")}, - {0x21d4, 0, 0, 0, f(Yes, true, "")}, - {0x21d5, 0, 0, 0, f(Yes, false, "")}, - {0x2203, 0, 0, 0, f(Yes, true, "")}, - {0x2204, 0, 0, 1, f(Yes, false, "∄")}, - {0x2205, 0, 0, 0, f(Yes, false, "")}, - {0x2208, 0, 0, 0, f(Yes, true, "")}, - {0x2209, 0, 0, 1, f(Yes, false, "∉")}, - {0x220a, 0, 0, 0, f(Yes, false, "")}, - {0x220b, 0, 0, 0, f(Yes, true, "")}, - {0x220c, 0, 0, 1, f(Yes, false, "∌")}, - {0x220d, 0, 0, 0, f(Yes, false, "")}, - {0x2223, 0, 0, 0, f(Yes, true, "")}, - {0x2224, 0, 0, 1, f(Yes, false, "∤")}, - {0x2225, 0, 0, 0, f(Yes, true, "")}, - {0x2226, 0, 0, 1, f(Yes, false, "∦")}, - {0x2227, 0, 0, 0, f(Yes, false, "")}, - {0x222c, 0, 0, 0, g(Yes, No, false, false, "", "∫∫")}, - {0x222d, 0, 0, 0, g(Yes, No, false, false, "", "∫∫∫")}, - {0x222e, 0, 0, 0, f(Yes, false, "")}, - {0x222f, 0, 0, 0, g(Yes, No, false, false, "", "∮∮")}, - {0x2230, 0, 0, 0, g(Yes, No, false, false, "", "∮∮∮")}, - {0x2231, 0, 0, 0, f(Yes, false, "")}, - {0x223c, 0, 0, 0, f(Yes, true, "")}, - {0x223d, 0, 0, 0, f(Yes, false, "")}, - {0x2241, 0, 0, 1, f(Yes, false, "≁")}, - {0x2242, 0, 0, 0, f(Yes, false, "")}, - {0x2243, 0, 0, 0, f(Yes, true, "")}, - {0x2244, 0, 0, 1, f(Yes, false, "≄")}, - {0x2245, 0, 0, 0, f(Yes, true, "")}, - {0x2246, 0, 0, 0, f(Yes, false, "")}, - {0x2247, 0, 0, 1, f(Yes, false, "≇")}, - {0x2248, 0, 0, 0, f(Yes, true, "")}, - {0x2249, 0, 0, 1, f(Yes, false, "≉")}, - {0x224a, 0, 0, 0, f(Yes, false, "")}, - {0x224d, 0, 0, 0, f(Yes, true, "")}, - {0x224e, 0, 0, 0, f(Yes, false, "")}, - {0x2260, 0, 0, 1, f(Yes, false, "≠")}, - {0x2261, 0, 0, 0, f(Yes, true, "")}, - {0x2262, 0, 0, 1, f(Yes, false, "≢")}, - {0x2263, 0, 0, 0, f(Yes, false, "")}, - {0x2264, 0, 0, 0, f(Yes, true, "")}, - {0x2266, 0, 0, 0, f(Yes, false, "")}, - {0x226d, 0, 0, 1, f(Yes, false, "≭")}, - {0x226e, 0, 0, 1, f(Yes, false, "≮")}, - {0x226f, 0, 0, 1, f(Yes, false, "≯")}, - {0x2270, 0, 0, 1, f(Yes, false, "≰")}, - {0x2271, 0, 0, 1, f(Yes, false, "≱")}, - {0x2272, 0, 0, 0, f(Yes, true, "")}, - {0x2274, 0, 0, 1, f(Yes, false, "≴")}, - {0x2275, 0, 0, 1, f(Yes, false, "≵")}, - {0x2276, 0, 0, 0, f(Yes, true, "")}, - {0x2278, 0, 0, 1, f(Yes, false, "≸")}, - {0x2279, 0, 0, 1, f(Yes, false, "≹")}, - {0x227a, 0, 0, 0, f(Yes, true, "")}, - {0x227e, 0, 0, 0, f(Yes, false, "")}, - {0x2280, 0, 0, 1, f(Yes, false, "⊀")}, - {0x2281, 0, 0, 1, f(Yes, false, "⊁")}, - {0x2282, 0, 0, 0, f(Yes, true, "")}, - {0x2284, 0, 0, 1, f(Yes, false, "⊄")}, - {0x2285, 0, 0, 1, f(Yes, false, "⊅")}, - {0x2286, 0, 0, 0, f(Yes, true, "")}, - {0x2288, 0, 0, 1, f(Yes, false, "⊈")}, - {0x2289, 0, 0, 1, f(Yes, false, "⊉")}, - {0x228a, 0, 0, 0, f(Yes, false, "")}, - {0x2291, 0, 0, 0, f(Yes, true, "")}, - {0x2293, 0, 0, 0, f(Yes, false, "")}, - {0x22a2, 0, 0, 0, f(Yes, true, "")}, - {0x22a3, 0, 0, 0, f(Yes, false, "")}, - {0x22a8, 0, 0, 0, f(Yes, true, "")}, - {0x22aa, 0, 0, 0, f(Yes, false, "")}, - {0x22ab, 0, 0, 0, f(Yes, true, "")}, - {0x22ac, 0, 0, 1, f(Yes, false, "⊬")}, - {0x22ad, 0, 0, 1, f(Yes, false, "⊭")}, - {0x22ae, 0, 0, 1, f(Yes, false, "⊮")}, - {0x22af, 0, 0, 1, f(Yes, false, "⊯")}, - {0x22b0, 0, 0, 0, f(Yes, false, "")}, - {0x22b2, 0, 0, 0, f(Yes, true, "")}, - {0x22b6, 0, 0, 0, f(Yes, false, "")}, - {0x22e0, 0, 0, 1, f(Yes, false, "⋠")}, - {0x22e1, 0, 0, 1, f(Yes, false, "⋡")}, - {0x22e2, 0, 0, 1, f(Yes, false, "⋢")}, - {0x22e3, 0, 0, 1, f(Yes, false, "⋣")}, - {0x22e4, 0, 0, 0, f(Yes, false, "")}, - {0x22ea, 0, 0, 1, f(Yes, false, "⋪")}, - {0x22eb, 0, 0, 1, f(Yes, false, "⋫")}, - {0x22ec, 0, 0, 1, f(Yes, false, "⋬")}, - {0x22ed, 0, 0, 1, f(Yes, false, "⋭")}, - {0x22ee, 0, 0, 0, f(Yes, false, "")}, - {0x2329, 0, 0, 0, f(No, false, "〈")}, - {0x232a, 0, 0, 0, f(No, false, "〉")}, - {0x232b, 0, 0, 0, f(Yes, false, "")}, - {0x2460, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x2461, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x2462, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x2463, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x2464, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x2465, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x2466, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x2467, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x2468, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x2469, 0, 0, 0, g(Yes, No, false, false, "", "10")}, - {0x246a, 0, 0, 0, g(Yes, No, false, false, "", "11")}, - {0x246b, 0, 0, 0, g(Yes, No, false, false, "", "12")}, - {0x246c, 0, 0, 0, g(Yes, No, false, false, "", "13")}, - {0x246d, 0, 0, 0, g(Yes, No, false, false, "", "14")}, - {0x246e, 0, 0, 0, g(Yes, No, false, false, "", "15")}, - {0x246f, 0, 0, 0, g(Yes, No, false, false, "", "16")}, - {0x2470, 0, 0, 0, g(Yes, No, false, false, "", "17")}, - {0x2471, 0, 0, 0, g(Yes, No, false, false, "", "18")}, - {0x2472, 0, 0, 0, g(Yes, No, false, false, "", "19")}, - {0x2473, 0, 0, 0, g(Yes, No, false, false, "", "20")}, - {0x2474, 0, 0, 0, g(Yes, No, false, false, "", "(1)")}, - {0x2475, 0, 0, 0, g(Yes, No, false, false, "", "(2)")}, - {0x2476, 0, 0, 0, g(Yes, No, false, false, "", "(3)")}, - {0x2477, 0, 0, 0, g(Yes, No, false, false, "", "(4)")}, - {0x2478, 0, 0, 0, g(Yes, No, false, false, "", "(5)")}, - {0x2479, 0, 0, 0, g(Yes, No, false, false, "", "(6)")}, - {0x247a, 0, 0, 0, g(Yes, No, false, false, "", "(7)")}, - {0x247b, 0, 0, 0, g(Yes, No, false, false, "", "(8)")}, - {0x247c, 0, 0, 0, g(Yes, No, false, false, "", "(9)")}, - {0x247d, 0, 0, 0, g(Yes, No, false, false, "", "(10)")}, - {0x247e, 0, 0, 0, g(Yes, No, false, false, "", "(11)")}, - {0x247f, 0, 0, 0, g(Yes, No, false, false, "", "(12)")}, - {0x2480, 0, 0, 0, g(Yes, No, false, false, "", "(13)")}, - {0x2481, 0, 0, 0, g(Yes, No, false, false, "", "(14)")}, - {0x2482, 0, 0, 0, g(Yes, No, false, false, "", "(15)")}, - {0x2483, 0, 0, 0, g(Yes, No, false, false, "", "(16)")}, - {0x2484, 0, 0, 0, g(Yes, No, false, false, "", "(17)")}, - {0x2485, 0, 0, 0, g(Yes, No, false, false, "", "(18)")}, - {0x2486, 0, 0, 0, g(Yes, No, false, false, "", "(19)")}, - {0x2487, 0, 0, 0, g(Yes, No, false, false, "", "(20)")}, - {0x2488, 0, 0, 0, g(Yes, No, false, false, "", "1.")}, - {0x2489, 0, 0, 0, g(Yes, No, false, false, "", "2.")}, - {0x248a, 0, 0, 0, g(Yes, No, false, false, "", "3.")}, - {0x248b, 0, 0, 0, g(Yes, No, false, false, "", "4.")}, - {0x248c, 0, 0, 0, g(Yes, No, false, false, "", "5.")}, - {0x248d, 0, 0, 0, g(Yes, No, false, false, "", "6.")}, - {0x248e, 0, 0, 0, g(Yes, No, false, false, "", "7.")}, - {0x248f, 0, 0, 0, g(Yes, No, false, false, "", "8.")}, - {0x2490, 0, 0, 0, g(Yes, No, false, false, "", "9.")}, - {0x2491, 0, 0, 0, g(Yes, No, false, false, "", "10.")}, - {0x2492, 0, 0, 0, g(Yes, No, false, false, "", "11.")}, - {0x2493, 0, 0, 0, g(Yes, No, false, false, "", "12.")}, - {0x2494, 0, 0, 0, g(Yes, No, false, false, "", "13.")}, - {0x2495, 0, 0, 0, g(Yes, No, false, false, "", "14.")}, - {0x2496, 0, 0, 0, g(Yes, No, false, false, "", "15.")}, - {0x2497, 0, 0, 0, g(Yes, No, false, false, "", "16.")}, - {0x2498, 0, 0, 0, g(Yes, No, false, false, "", "17.")}, - {0x2499, 0, 0, 0, g(Yes, No, false, false, "", "18.")}, - {0x249a, 0, 0, 0, g(Yes, No, false, false, "", "19.")}, - {0x249b, 0, 0, 0, g(Yes, No, false, false, "", "20.")}, - {0x249c, 0, 0, 0, g(Yes, No, false, false, "", "(a)")}, - {0x249d, 0, 0, 0, g(Yes, No, false, false, "", "(b)")}, - {0x249e, 0, 0, 0, g(Yes, No, false, false, "", "(c)")}, - {0x249f, 0, 0, 0, g(Yes, No, false, false, "", "(d)")}, - {0x24a0, 0, 0, 0, g(Yes, No, false, false, "", "(e)")}, - {0x24a1, 0, 0, 0, g(Yes, No, false, false, "", "(f)")}, - {0x24a2, 0, 0, 0, g(Yes, No, false, false, "", "(g)")}, - {0x24a3, 0, 0, 0, g(Yes, No, false, false, "", "(h)")}, - {0x24a4, 0, 0, 0, g(Yes, No, false, false, "", "(i)")}, - {0x24a5, 0, 0, 0, g(Yes, No, false, false, "", "(j)")}, - {0x24a6, 0, 0, 0, g(Yes, No, false, false, "", "(k)")}, - {0x24a7, 0, 0, 0, g(Yes, No, false, false, "", "(l)")}, - {0x24a8, 0, 0, 0, g(Yes, No, false, false, "", "(m)")}, - {0x24a9, 0, 0, 0, g(Yes, No, false, false, "", "(n)")}, - {0x24aa, 0, 0, 0, g(Yes, No, false, false, "", "(o)")}, - {0x24ab, 0, 0, 0, g(Yes, No, false, false, "", "(p)")}, - {0x24ac, 0, 0, 0, g(Yes, No, false, false, "", "(q)")}, - {0x24ad, 0, 0, 0, g(Yes, No, false, false, "", "(r)")}, - {0x24ae, 0, 0, 0, g(Yes, No, false, false, "", "(s)")}, - {0x24af, 0, 0, 0, g(Yes, No, false, false, "", "(t)")}, - {0x24b0, 0, 0, 0, g(Yes, No, false, false, "", "(u)")}, - {0x24b1, 0, 0, 0, g(Yes, No, false, false, "", "(v)")}, - {0x24b2, 0, 0, 0, g(Yes, No, false, false, "", "(w)")}, - {0x24b3, 0, 0, 0, g(Yes, No, false, false, "", "(x)")}, - {0x24b4, 0, 0, 0, g(Yes, No, false, false, "", "(y)")}, - {0x24b5, 0, 0, 0, g(Yes, No, false, false, "", "(z)")}, - {0x24b6, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x24b7, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x24b8, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x24b9, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x24ba, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x24bb, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x24bc, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x24bd, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x24be, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x24bf, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x24c0, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x24c1, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x24c2, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x24c3, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x24c4, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x24c5, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x24c6, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x24c7, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x24c8, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x24c9, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x24ca, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x24cb, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x24cc, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x24cd, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x24ce, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x24cf, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x24d0, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x24d1, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x24d2, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x24d3, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x24d4, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x24d5, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x24d6, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x24d7, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x24d8, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x24d9, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x24da, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x24db, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x24dc, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x24dd, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x24de, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x24df, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x24e0, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x24e1, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x24e2, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x24e3, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x24e4, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x24e5, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x24e6, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x24e7, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x24e8, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x24e9, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x24ea, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x24eb, 0, 0, 0, f(Yes, false, "")}, - {0x2a0c, 0, 0, 0, g(Yes, No, false, false, "", "∫∫∫∫")}, - {0x2a0d, 0, 0, 0, f(Yes, false, "")}, - {0x2a74, 0, 0, 0, g(Yes, No, false, false, "", "::=")}, - {0x2a75, 0, 0, 0, g(Yes, No, false, false, "", "==")}, - {0x2a76, 0, 0, 0, g(Yes, No, false, false, "", "===")}, - {0x2a77, 0, 0, 0, f(Yes, false, "")}, - {0x2adc, 0, 0, 1, f(No, false, "⫝̸")}, - {0x2add, 0, 0, 0, f(Yes, false, "")}, - {0x2c7c, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x2c7d, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x2c7e, 0, 0, 0, f(Yes, false, "")}, - {0x2cef, 230, 1, 1, f(Yes, false, "")}, - {0x2cf2, 0, 0, 0, f(Yes, false, "")}, - {0x2d6f, 0, 0, 0, g(Yes, No, false, false, "", "ⵡ")}, - {0x2d70, 0, 0, 0, f(Yes, false, "")}, - {0x2d7f, 9, 1, 1, f(Yes, false, "")}, - {0x2d80, 0, 0, 0, f(Yes, false, "")}, - {0x2de0, 230, 1, 1, f(Yes, false, "")}, - {0x2e00, 0, 0, 0, f(Yes, false, "")}, - {0x2e9f, 0, 0, 0, g(Yes, No, false, false, "", "母")}, - {0x2ea0, 0, 0, 0, f(Yes, false, "")}, - {0x2ef3, 0, 0, 0, g(Yes, No, false, false, "", "龟")}, - {0x2ef4, 0, 0, 0, f(Yes, false, "")}, - {0x2f00, 0, 0, 0, g(Yes, No, false, false, "", "一")}, - {0x2f01, 0, 0, 0, g(Yes, No, false, false, "", "丨")}, - {0x2f02, 0, 0, 0, g(Yes, No, false, false, "", "丶")}, - {0x2f03, 0, 0, 0, g(Yes, No, false, false, "", "丿")}, - {0x2f04, 0, 0, 0, g(Yes, No, false, false, "", "乙")}, - {0x2f05, 0, 0, 0, g(Yes, No, false, false, "", "亅")}, - {0x2f06, 0, 0, 0, g(Yes, No, false, false, "", "二")}, - {0x2f07, 0, 0, 0, g(Yes, No, false, false, "", "亠")}, - {0x2f08, 0, 0, 0, g(Yes, No, false, false, "", "人")}, - {0x2f09, 0, 0, 0, g(Yes, No, false, false, "", "儿")}, - {0x2f0a, 0, 0, 0, g(Yes, No, false, false, "", "入")}, - {0x2f0b, 0, 0, 0, g(Yes, No, false, false, "", "八")}, - {0x2f0c, 0, 0, 0, g(Yes, No, false, false, "", "冂")}, - {0x2f0d, 0, 0, 0, g(Yes, No, false, false, "", "冖")}, - {0x2f0e, 0, 0, 0, g(Yes, No, false, false, "", "冫")}, - {0x2f0f, 0, 0, 0, g(Yes, No, false, false, "", "几")}, - {0x2f10, 0, 0, 0, g(Yes, No, false, false, "", "凵")}, - {0x2f11, 0, 0, 0, g(Yes, No, false, false, "", "刀")}, - {0x2f12, 0, 0, 0, g(Yes, No, false, false, "", "力")}, - {0x2f13, 0, 0, 0, g(Yes, No, false, false, "", "勹")}, - {0x2f14, 0, 0, 0, g(Yes, No, false, false, "", "匕")}, - {0x2f15, 0, 0, 0, g(Yes, No, false, false, "", "匚")}, - {0x2f16, 0, 0, 0, g(Yes, No, false, false, "", "匸")}, - {0x2f17, 0, 0, 0, g(Yes, No, false, false, "", "十")}, - {0x2f18, 0, 0, 0, g(Yes, No, false, false, "", "卜")}, - {0x2f19, 0, 0, 0, g(Yes, No, false, false, "", "卩")}, - {0x2f1a, 0, 0, 0, g(Yes, No, false, false, "", "厂")}, - {0x2f1b, 0, 0, 0, g(Yes, No, false, false, "", "厶")}, - {0x2f1c, 0, 0, 0, g(Yes, No, false, false, "", "又")}, - {0x2f1d, 0, 0, 0, g(Yes, No, false, false, "", "口")}, - {0x2f1e, 0, 0, 0, g(Yes, No, false, false, "", "囗")}, - {0x2f1f, 0, 0, 0, g(Yes, No, false, false, "", "土")}, - {0x2f20, 0, 0, 0, g(Yes, No, false, false, "", "士")}, - {0x2f21, 0, 0, 0, g(Yes, No, false, false, "", "夂")}, - {0x2f22, 0, 0, 0, g(Yes, No, false, false, "", "夊")}, - {0x2f23, 0, 0, 0, g(Yes, No, false, false, "", "夕")}, - {0x2f24, 0, 0, 0, g(Yes, No, false, false, "", "大")}, - {0x2f25, 0, 0, 0, g(Yes, No, false, false, "", "女")}, - {0x2f26, 0, 0, 0, g(Yes, No, false, false, "", "子")}, - {0x2f27, 0, 0, 0, g(Yes, No, false, false, "", "宀")}, - {0x2f28, 0, 0, 0, g(Yes, No, false, false, "", "寸")}, - {0x2f29, 0, 0, 0, g(Yes, No, false, false, "", "小")}, - {0x2f2a, 0, 0, 0, g(Yes, No, false, false, "", "尢")}, - {0x2f2b, 0, 0, 0, g(Yes, No, false, false, "", "尸")}, - {0x2f2c, 0, 0, 0, g(Yes, No, false, false, "", "屮")}, - {0x2f2d, 0, 0, 0, g(Yes, No, false, false, "", "山")}, - {0x2f2e, 0, 0, 0, g(Yes, No, false, false, "", "巛")}, - {0x2f2f, 0, 0, 0, g(Yes, No, false, false, "", "工")}, - {0x2f30, 0, 0, 0, g(Yes, No, false, false, "", "己")}, - {0x2f31, 0, 0, 0, g(Yes, No, false, false, "", "巾")}, - {0x2f32, 0, 0, 0, g(Yes, No, false, false, "", "干")}, - {0x2f33, 0, 0, 0, g(Yes, No, false, false, "", "幺")}, - {0x2f34, 0, 0, 0, g(Yes, No, false, false, "", "广")}, - {0x2f35, 0, 0, 0, g(Yes, No, false, false, "", "廴")}, - {0x2f36, 0, 0, 0, g(Yes, No, false, false, "", "廾")}, - {0x2f37, 0, 0, 0, g(Yes, No, false, false, "", "弋")}, - {0x2f38, 0, 0, 0, g(Yes, No, false, false, "", "弓")}, - {0x2f39, 0, 0, 0, g(Yes, No, false, false, "", "彐")}, - {0x2f3a, 0, 0, 0, g(Yes, No, false, false, "", "彡")}, - {0x2f3b, 0, 0, 0, g(Yes, No, false, false, "", "彳")}, - {0x2f3c, 0, 0, 0, g(Yes, No, false, false, "", "心")}, - {0x2f3d, 0, 0, 0, g(Yes, No, false, false, "", "戈")}, - {0x2f3e, 0, 0, 0, g(Yes, No, false, false, "", "戶")}, - {0x2f3f, 0, 0, 0, g(Yes, No, false, false, "", "手")}, - {0x2f40, 0, 0, 0, g(Yes, No, false, false, "", "支")}, - {0x2f41, 0, 0, 0, g(Yes, No, false, false, "", "攴")}, - {0x2f42, 0, 0, 0, g(Yes, No, false, false, "", "文")}, - {0x2f43, 0, 0, 0, g(Yes, No, false, false, "", "斗")}, - {0x2f44, 0, 0, 0, g(Yes, No, false, false, "", "斤")}, - {0x2f45, 0, 0, 0, g(Yes, No, false, false, "", "方")}, - {0x2f46, 0, 0, 0, g(Yes, No, false, false, "", "无")}, - {0x2f47, 0, 0, 0, g(Yes, No, false, false, "", "日")}, - {0x2f48, 0, 0, 0, g(Yes, No, false, false, "", "曰")}, - {0x2f49, 0, 0, 0, g(Yes, No, false, false, "", "月")}, - {0x2f4a, 0, 0, 0, g(Yes, No, false, false, "", "木")}, - {0x2f4b, 0, 0, 0, g(Yes, No, false, false, "", "欠")}, - {0x2f4c, 0, 0, 0, g(Yes, No, false, false, "", "止")}, - {0x2f4d, 0, 0, 0, g(Yes, No, false, false, "", "歹")}, - {0x2f4e, 0, 0, 0, g(Yes, No, false, false, "", "殳")}, - {0x2f4f, 0, 0, 0, g(Yes, No, false, false, "", "毋")}, - {0x2f50, 0, 0, 0, g(Yes, No, false, false, "", "比")}, - {0x2f51, 0, 0, 0, g(Yes, No, false, false, "", "毛")}, - {0x2f52, 0, 0, 0, g(Yes, No, false, false, "", "氏")}, - {0x2f53, 0, 0, 0, g(Yes, No, false, false, "", "气")}, - {0x2f54, 0, 0, 0, g(Yes, No, false, false, "", "水")}, - {0x2f55, 0, 0, 0, g(Yes, No, false, false, "", "火")}, - {0x2f56, 0, 0, 0, g(Yes, No, false, false, "", "爪")}, - {0x2f57, 0, 0, 0, g(Yes, No, false, false, "", "父")}, - {0x2f58, 0, 0, 0, g(Yes, No, false, false, "", "爻")}, - {0x2f59, 0, 0, 0, g(Yes, No, false, false, "", "爿")}, - {0x2f5a, 0, 0, 0, g(Yes, No, false, false, "", "片")}, - {0x2f5b, 0, 0, 0, g(Yes, No, false, false, "", "牙")}, - {0x2f5c, 0, 0, 0, g(Yes, No, false, false, "", "牛")}, - {0x2f5d, 0, 0, 0, g(Yes, No, false, false, "", "犬")}, - {0x2f5e, 0, 0, 0, g(Yes, No, false, false, "", "玄")}, - {0x2f5f, 0, 0, 0, g(Yes, No, false, false, "", "玉")}, - {0x2f60, 0, 0, 0, g(Yes, No, false, false, "", "瓜")}, - {0x2f61, 0, 0, 0, g(Yes, No, false, false, "", "瓦")}, - {0x2f62, 0, 0, 0, g(Yes, No, false, false, "", "甘")}, - {0x2f63, 0, 0, 0, g(Yes, No, false, false, "", "生")}, - {0x2f64, 0, 0, 0, g(Yes, No, false, false, "", "用")}, - {0x2f65, 0, 0, 0, g(Yes, No, false, false, "", "田")}, - {0x2f66, 0, 0, 0, g(Yes, No, false, false, "", "疋")}, - {0x2f67, 0, 0, 0, g(Yes, No, false, false, "", "疒")}, - {0x2f68, 0, 0, 0, g(Yes, No, false, false, "", "癶")}, - {0x2f69, 0, 0, 0, g(Yes, No, false, false, "", "白")}, - {0x2f6a, 0, 0, 0, g(Yes, No, false, false, "", "皮")}, - {0x2f6b, 0, 0, 0, g(Yes, No, false, false, "", "皿")}, - {0x2f6c, 0, 0, 0, g(Yes, No, false, false, "", "目")}, - {0x2f6d, 0, 0, 0, g(Yes, No, false, false, "", "矛")}, - {0x2f6e, 0, 0, 0, g(Yes, No, false, false, "", "矢")}, - {0x2f6f, 0, 0, 0, g(Yes, No, false, false, "", "石")}, - {0x2f70, 0, 0, 0, g(Yes, No, false, false, "", "示")}, - {0x2f71, 0, 0, 0, g(Yes, No, false, false, "", "禸")}, - {0x2f72, 0, 0, 0, g(Yes, No, false, false, "", "禾")}, - {0x2f73, 0, 0, 0, g(Yes, No, false, false, "", "穴")}, - {0x2f74, 0, 0, 0, g(Yes, No, false, false, "", "立")}, - {0x2f75, 0, 0, 0, g(Yes, No, false, false, "", "竹")}, - {0x2f76, 0, 0, 0, g(Yes, No, false, false, "", "米")}, - {0x2f77, 0, 0, 0, g(Yes, No, false, false, "", "糸")}, - {0x2f78, 0, 0, 0, g(Yes, No, false, false, "", "缶")}, - {0x2f79, 0, 0, 0, g(Yes, No, false, false, "", "网")}, - {0x2f7a, 0, 0, 0, g(Yes, No, false, false, "", "羊")}, - {0x2f7b, 0, 0, 0, g(Yes, No, false, false, "", "羽")}, - {0x2f7c, 0, 0, 0, g(Yes, No, false, false, "", "老")}, - {0x2f7d, 0, 0, 0, g(Yes, No, false, false, "", "而")}, - {0x2f7e, 0, 0, 0, g(Yes, No, false, false, "", "耒")}, - {0x2f7f, 0, 0, 0, g(Yes, No, false, false, "", "耳")}, - {0x2f80, 0, 0, 0, g(Yes, No, false, false, "", "聿")}, - {0x2f81, 0, 0, 0, g(Yes, No, false, false, "", "肉")}, - {0x2f82, 0, 0, 0, g(Yes, No, false, false, "", "臣")}, - {0x2f83, 0, 0, 0, g(Yes, No, false, false, "", "自")}, - {0x2f84, 0, 0, 0, g(Yes, No, false, false, "", "至")}, - {0x2f85, 0, 0, 0, g(Yes, No, false, false, "", "臼")}, - {0x2f86, 0, 0, 0, g(Yes, No, false, false, "", "舌")}, - {0x2f87, 0, 0, 0, g(Yes, No, false, false, "", "舛")}, - {0x2f88, 0, 0, 0, g(Yes, No, false, false, "", "舟")}, - {0x2f89, 0, 0, 0, g(Yes, No, false, false, "", "艮")}, - {0x2f8a, 0, 0, 0, g(Yes, No, false, false, "", "色")}, - {0x2f8b, 0, 0, 0, g(Yes, No, false, false, "", "艸")}, - {0x2f8c, 0, 0, 0, g(Yes, No, false, false, "", "虍")}, - {0x2f8d, 0, 0, 0, g(Yes, No, false, false, "", "虫")}, - {0x2f8e, 0, 0, 0, g(Yes, No, false, false, "", "血")}, - {0x2f8f, 0, 0, 0, g(Yes, No, false, false, "", "行")}, - {0x2f90, 0, 0, 0, g(Yes, No, false, false, "", "衣")}, - {0x2f91, 0, 0, 0, g(Yes, No, false, false, "", "襾")}, - {0x2f92, 0, 0, 0, g(Yes, No, false, false, "", "見")}, - {0x2f93, 0, 0, 0, g(Yes, No, false, false, "", "角")}, - {0x2f94, 0, 0, 0, g(Yes, No, false, false, "", "言")}, - {0x2f95, 0, 0, 0, g(Yes, No, false, false, "", "谷")}, - {0x2f96, 0, 0, 0, g(Yes, No, false, false, "", "豆")}, - {0x2f97, 0, 0, 0, g(Yes, No, false, false, "", "豕")}, - {0x2f98, 0, 0, 0, g(Yes, No, false, false, "", "豸")}, - {0x2f99, 0, 0, 0, g(Yes, No, false, false, "", "貝")}, - {0x2f9a, 0, 0, 0, g(Yes, No, false, false, "", "赤")}, - {0x2f9b, 0, 0, 0, g(Yes, No, false, false, "", "走")}, - {0x2f9c, 0, 0, 0, g(Yes, No, false, false, "", "足")}, - {0x2f9d, 0, 0, 0, g(Yes, No, false, false, "", "身")}, - {0x2f9e, 0, 0, 0, g(Yes, No, false, false, "", "車")}, - {0x2f9f, 0, 0, 0, g(Yes, No, false, false, "", "辛")}, - {0x2fa0, 0, 0, 0, g(Yes, No, false, false, "", "辰")}, - {0x2fa1, 0, 0, 0, g(Yes, No, false, false, "", "辵")}, - {0x2fa2, 0, 0, 0, g(Yes, No, false, false, "", "邑")}, - {0x2fa3, 0, 0, 0, g(Yes, No, false, false, "", "酉")}, - {0x2fa4, 0, 0, 0, g(Yes, No, false, false, "", "釆")}, - {0x2fa5, 0, 0, 0, g(Yes, No, false, false, "", "里")}, - {0x2fa6, 0, 0, 0, g(Yes, No, false, false, "", "金")}, - {0x2fa7, 0, 0, 0, g(Yes, No, false, false, "", "長")}, - {0x2fa8, 0, 0, 0, g(Yes, No, false, false, "", "門")}, - {0x2fa9, 0, 0, 0, g(Yes, No, false, false, "", "阜")}, - {0x2faa, 0, 0, 0, g(Yes, No, false, false, "", "隶")}, - {0x2fab, 0, 0, 0, g(Yes, No, false, false, "", "隹")}, - {0x2fac, 0, 0, 0, g(Yes, No, false, false, "", "雨")}, - {0x2fad, 0, 0, 0, g(Yes, No, false, false, "", "靑")}, - {0x2fae, 0, 0, 0, g(Yes, No, false, false, "", "非")}, - {0x2faf, 0, 0, 0, g(Yes, No, false, false, "", "面")}, - {0x2fb0, 0, 0, 0, g(Yes, No, false, false, "", "革")}, - {0x2fb1, 0, 0, 0, g(Yes, No, false, false, "", "韋")}, - {0x2fb2, 0, 0, 0, g(Yes, No, false, false, "", "韭")}, - {0x2fb3, 0, 0, 0, g(Yes, No, false, false, "", "音")}, - {0x2fb4, 0, 0, 0, g(Yes, No, false, false, "", "頁")}, - {0x2fb5, 0, 0, 0, g(Yes, No, false, false, "", "風")}, - {0x2fb6, 0, 0, 0, g(Yes, No, false, false, "", "飛")}, - {0x2fb7, 0, 0, 0, g(Yes, No, false, false, "", "食")}, - {0x2fb8, 0, 0, 0, g(Yes, No, false, false, "", "首")}, - {0x2fb9, 0, 0, 0, g(Yes, No, false, false, "", "香")}, - {0x2fba, 0, 0, 0, g(Yes, No, false, false, "", "馬")}, - {0x2fbb, 0, 0, 0, g(Yes, No, false, false, "", "骨")}, - {0x2fbc, 0, 0, 0, g(Yes, No, false, false, "", "高")}, - {0x2fbd, 0, 0, 0, g(Yes, No, false, false, "", "髟")}, - {0x2fbe, 0, 0, 0, g(Yes, No, false, false, "", "鬥")}, - {0x2fbf, 0, 0, 0, g(Yes, No, false, false, "", "鬯")}, - {0x2fc0, 0, 0, 0, g(Yes, No, false, false, "", "鬲")}, - {0x2fc1, 0, 0, 0, g(Yes, No, false, false, "", "鬼")}, - {0x2fc2, 0, 0, 0, g(Yes, No, false, false, "", "魚")}, - {0x2fc3, 0, 0, 0, g(Yes, No, false, false, "", "鳥")}, - {0x2fc4, 0, 0, 0, g(Yes, No, false, false, "", "鹵")}, - {0x2fc5, 0, 0, 0, g(Yes, No, false, false, "", "鹿")}, - {0x2fc6, 0, 0, 0, g(Yes, No, false, false, "", "麥")}, - {0x2fc7, 0, 0, 0, g(Yes, No, false, false, "", "麻")}, - {0x2fc8, 0, 0, 0, g(Yes, No, false, false, "", "黃")}, - {0x2fc9, 0, 0, 0, g(Yes, No, false, false, "", "黍")}, - {0x2fca, 0, 0, 0, g(Yes, No, false, false, "", "黑")}, - {0x2fcb, 0, 0, 0, g(Yes, No, false, false, "", "黹")}, - {0x2fcc, 0, 0, 0, g(Yes, No, false, false, "", "黽")}, - {0x2fcd, 0, 0, 0, g(Yes, No, false, false, "", "鼎")}, - {0x2fce, 0, 0, 0, g(Yes, No, false, false, "", "鼓")}, - {0x2fcf, 0, 0, 0, g(Yes, No, false, false, "", "鼠")}, - {0x2fd0, 0, 0, 0, g(Yes, No, false, false, "", "鼻")}, - {0x2fd1, 0, 0, 0, g(Yes, No, false, false, "", "齊")}, - {0x2fd2, 0, 0, 0, g(Yes, No, false, false, "", "齒")}, - {0x2fd3, 0, 0, 0, g(Yes, No, false, false, "", "龍")}, - {0x2fd4, 0, 0, 0, g(Yes, No, false, false, "", "龜")}, - {0x2fd5, 0, 0, 0, g(Yes, No, false, false, "", "龠")}, - {0x2fd6, 0, 0, 0, f(Yes, false, "")}, - {0x3000, 0, 0, 0, g(Yes, No, false, false, "", " ")}, - {0x3001, 0, 0, 0, f(Yes, false, "")}, - {0x302a, 218, 1, 1, f(Yes, false, "")}, - {0x302b, 228, 1, 1, f(Yes, false, "")}, - {0x302c, 232, 1, 1, f(Yes, false, "")}, - {0x302d, 222, 1, 1, f(Yes, false, "")}, - {0x302e, 224, 1, 1, f(Yes, false, "")}, - {0x3030, 0, 0, 0, f(Yes, false, "")}, - {0x3036, 0, 0, 0, g(Yes, No, false, false, "", "〒")}, - {0x3037, 0, 0, 0, f(Yes, false, "")}, - {0x3038, 0, 0, 0, g(Yes, No, false, false, "", "十")}, - {0x3039, 0, 0, 0, g(Yes, No, false, false, "", "卄")}, - {0x303a, 0, 0, 0, g(Yes, No, false, false, "", "卅")}, - {0x303b, 0, 0, 0, f(Yes, false, "")}, - {0x3046, 0, 0, 0, f(Yes, true, "")}, - {0x3047, 0, 0, 0, f(Yes, false, "")}, - {0x304b, 0, 0, 0, f(Yes, true, "")}, - {0x304c, 0, 0, 1, f(Yes, false, "が")}, - {0x304d, 0, 0, 0, f(Yes, true, "")}, - {0x304e, 0, 0, 1, f(Yes, false, "ぎ")}, - {0x304f, 0, 0, 0, f(Yes, true, "")}, - {0x3050, 0, 0, 1, f(Yes, false, "ぐ")}, - {0x3051, 0, 0, 0, f(Yes, true, "")}, - {0x3052, 0, 0, 1, f(Yes, false, "げ")}, - {0x3053, 0, 0, 0, f(Yes, true, "")}, - {0x3054, 0, 0, 1, f(Yes, false, "ご")}, - {0x3055, 0, 0, 0, f(Yes, true, "")}, - {0x3056, 0, 0, 1, f(Yes, false, "ざ")}, - {0x3057, 0, 0, 0, f(Yes, true, "")}, - {0x3058, 0, 0, 1, f(Yes, false, "じ")}, - {0x3059, 0, 0, 0, f(Yes, true, "")}, - {0x305a, 0, 0, 1, f(Yes, false, "ず")}, - {0x305b, 0, 0, 0, f(Yes, true, "")}, - {0x305c, 0, 0, 1, f(Yes, false, "ぜ")}, - {0x305d, 0, 0, 0, f(Yes, true, "")}, - {0x305e, 0, 0, 1, f(Yes, false, "ぞ")}, - {0x305f, 0, 0, 0, f(Yes, true, "")}, - {0x3060, 0, 0, 1, f(Yes, false, "だ")}, - {0x3061, 0, 0, 0, f(Yes, true, "")}, - {0x3062, 0, 0, 1, f(Yes, false, "ぢ")}, - {0x3063, 0, 0, 0, f(Yes, false, "")}, - {0x3064, 0, 0, 0, f(Yes, true, "")}, - {0x3065, 0, 0, 1, f(Yes, false, "づ")}, - {0x3066, 0, 0, 0, f(Yes, true, "")}, - {0x3067, 0, 0, 1, f(Yes, false, "で")}, - {0x3068, 0, 0, 0, f(Yes, true, "")}, - {0x3069, 0, 0, 1, f(Yes, false, "ど")}, - {0x306a, 0, 0, 0, f(Yes, false, "")}, - {0x306f, 0, 0, 0, f(Yes, true, "")}, - {0x3070, 0, 0, 1, f(Yes, false, "ば")}, - {0x3071, 0, 0, 1, f(Yes, false, "ぱ")}, - {0x3072, 0, 0, 0, f(Yes, true, "")}, - {0x3073, 0, 0, 1, f(Yes, false, "び")}, - {0x3074, 0, 0, 1, f(Yes, false, "ぴ")}, - {0x3075, 0, 0, 0, f(Yes, true, "")}, - {0x3076, 0, 0, 1, f(Yes, false, "ぶ")}, - {0x3077, 0, 0, 1, f(Yes, false, "ぷ")}, - {0x3078, 0, 0, 0, f(Yes, true, "")}, - {0x3079, 0, 0, 1, f(Yes, false, "べ")}, - {0x307a, 0, 0, 1, f(Yes, false, "ぺ")}, - {0x307b, 0, 0, 0, f(Yes, true, "")}, - {0x307c, 0, 0, 1, f(Yes, false, "ぼ")}, - {0x307d, 0, 0, 1, f(Yes, false, "ぽ")}, - {0x307e, 0, 0, 0, f(Yes, false, "")}, - {0x3094, 0, 0, 1, f(Yes, false, "ゔ")}, - {0x3095, 0, 0, 0, f(Yes, false, "")}, - {0x3099, 8, 1, 1, f(Maybe, false, "")}, - {0x309b, 0, 0, 1, g(Yes, No, false, false, "", " ゙")}, - {0x309c, 0, 0, 1, g(Yes, No, false, false, "", " ゚")}, - {0x309d, 0, 0, 0, f(Yes, true, "")}, - {0x309e, 0, 0, 1, f(Yes, false, "ゞ")}, - {0x309f, 0, 0, 0, g(Yes, No, false, false, "", "より")}, - {0x30a0, 0, 0, 0, f(Yes, false, "")}, - {0x30a6, 0, 0, 0, f(Yes, true, "")}, - {0x30a7, 0, 0, 0, f(Yes, false, "")}, - {0x30ab, 0, 0, 0, f(Yes, true, "")}, - {0x30ac, 0, 0, 1, f(Yes, false, "ガ")}, - {0x30ad, 0, 0, 0, f(Yes, true, "")}, - {0x30ae, 0, 0, 1, f(Yes, false, "ギ")}, - {0x30af, 0, 0, 0, f(Yes, true, "")}, - {0x30b0, 0, 0, 1, f(Yes, false, "グ")}, - {0x30b1, 0, 0, 0, f(Yes, true, "")}, - {0x30b2, 0, 0, 1, f(Yes, false, "ゲ")}, - {0x30b3, 0, 0, 0, f(Yes, true, "")}, - {0x30b4, 0, 0, 1, f(Yes, false, "ゴ")}, - {0x30b5, 0, 0, 0, f(Yes, true, "")}, - {0x30b6, 0, 0, 1, f(Yes, false, "ザ")}, - {0x30b7, 0, 0, 0, f(Yes, true, "")}, - {0x30b8, 0, 0, 1, f(Yes, false, "ジ")}, - {0x30b9, 0, 0, 0, f(Yes, true, "")}, - {0x30ba, 0, 0, 1, f(Yes, false, "ズ")}, - {0x30bb, 0, 0, 0, f(Yes, true, "")}, - {0x30bc, 0, 0, 1, f(Yes, false, "ゼ")}, - {0x30bd, 0, 0, 0, f(Yes, true, "")}, - {0x30be, 0, 0, 1, f(Yes, false, "ゾ")}, - {0x30bf, 0, 0, 0, f(Yes, true, "")}, - {0x30c0, 0, 0, 1, f(Yes, false, "ダ")}, - {0x30c1, 0, 0, 0, f(Yes, true, "")}, - {0x30c2, 0, 0, 1, f(Yes, false, "ヂ")}, - {0x30c3, 0, 0, 0, f(Yes, false, "")}, - {0x30c4, 0, 0, 0, f(Yes, true, "")}, - {0x30c5, 0, 0, 1, f(Yes, false, "ヅ")}, - {0x30c6, 0, 0, 0, f(Yes, true, "")}, - {0x30c7, 0, 0, 1, f(Yes, false, "デ")}, - {0x30c8, 0, 0, 0, f(Yes, true, "")}, - {0x30c9, 0, 0, 1, f(Yes, false, "ド")}, - {0x30ca, 0, 0, 0, f(Yes, false, "")}, - {0x30cf, 0, 0, 0, f(Yes, true, "")}, - {0x30d0, 0, 0, 1, f(Yes, false, "バ")}, - {0x30d1, 0, 0, 1, f(Yes, false, "パ")}, - {0x30d2, 0, 0, 0, f(Yes, true, "")}, - {0x30d3, 0, 0, 1, f(Yes, false, "ビ")}, - {0x30d4, 0, 0, 1, f(Yes, false, "ピ")}, - {0x30d5, 0, 0, 0, f(Yes, true, "")}, - {0x30d6, 0, 0, 1, f(Yes, false, "ブ")}, - {0x30d7, 0, 0, 1, f(Yes, false, "プ")}, - {0x30d8, 0, 0, 0, f(Yes, true, "")}, - {0x30d9, 0, 0, 1, f(Yes, false, "ベ")}, - {0x30da, 0, 0, 1, f(Yes, false, "ペ")}, - {0x30db, 0, 0, 0, f(Yes, true, "")}, - {0x30dc, 0, 0, 1, f(Yes, false, "ボ")}, - {0x30dd, 0, 0, 1, f(Yes, false, "ポ")}, - {0x30de, 0, 0, 0, f(Yes, false, "")}, - {0x30ef, 0, 0, 0, f(Yes, true, "")}, - {0x30f3, 0, 0, 0, f(Yes, false, "")}, - {0x30f4, 0, 0, 1, f(Yes, false, "ヴ")}, - {0x30f5, 0, 0, 0, f(Yes, false, "")}, - {0x30f7, 0, 0, 1, f(Yes, false, "ヷ")}, - {0x30f8, 0, 0, 1, f(Yes, false, "ヸ")}, - {0x30f9, 0, 0, 1, f(Yes, false, "ヹ")}, - {0x30fa, 0, 0, 1, f(Yes, false, "ヺ")}, - {0x30fb, 0, 0, 0, f(Yes, false, "")}, - {0x30fd, 0, 0, 0, f(Yes, true, "")}, - {0x30fe, 0, 0, 1, f(Yes, false, "ヾ")}, - {0x30ff, 0, 0, 0, g(Yes, No, false, false, "", "コト")}, - {0x3100, 0, 0, 0, f(Yes, false, "")}, - {0x3131, 0, 0, 0, g(Yes, No, false, false, "", "ᄀ")}, - {0x3132, 0, 0, 0, g(Yes, No, false, false, "", "ᄁ")}, - {0x3133, 0, 1, 1, g(Yes, No, false, false, "", "ᆪ")}, - {0x3134, 0, 0, 0, g(Yes, No, false, false, "", "ᄂ")}, - {0x3135, 0, 1, 1, g(Yes, No, false, false, "", "ᆬ")}, - {0x3136, 0, 1, 1, g(Yes, No, false, false, "", "ᆭ")}, - {0x3137, 0, 0, 0, g(Yes, No, false, false, "", "ᄃ")}, - {0x3138, 0, 0, 0, g(Yes, No, false, false, "", "ᄄ")}, - {0x3139, 0, 0, 0, g(Yes, No, false, false, "", "ᄅ")}, - {0x313a, 0, 1, 1, g(Yes, No, false, false, "", "ᆰ")}, - {0x313b, 0, 1, 1, g(Yes, No, false, false, "", "ᆱ")}, - {0x313c, 0, 1, 1, g(Yes, No, false, false, "", "ᆲ")}, - {0x313d, 0, 1, 1, g(Yes, No, false, false, "", "ᆳ")}, - {0x313e, 0, 1, 1, g(Yes, No, false, false, "", "ᆴ")}, - {0x313f, 0, 1, 1, g(Yes, No, false, false, "", "ᆵ")}, - {0x3140, 0, 0, 0, g(Yes, No, false, false, "", "ᄚ")}, - {0x3141, 0, 0, 0, g(Yes, No, false, false, "", "ᄆ")}, - {0x3142, 0, 0, 0, g(Yes, No, false, false, "", "ᄇ")}, - {0x3143, 0, 0, 0, g(Yes, No, false, false, "", "ᄈ")}, - {0x3144, 0, 0, 0, g(Yes, No, false, false, "", "ᄡ")}, - {0x3145, 0, 0, 0, g(Yes, No, false, false, "", "ᄉ")}, - {0x3146, 0, 0, 0, g(Yes, No, false, false, "", "ᄊ")}, - {0x3147, 0, 0, 0, g(Yes, No, false, false, "", "ᄋ")}, - {0x3148, 0, 0, 0, g(Yes, No, false, false, "", "ᄌ")}, - {0x3149, 0, 0, 0, g(Yes, No, false, false, "", "ᄍ")}, - {0x314a, 0, 0, 0, g(Yes, No, false, false, "", "ᄎ")}, - {0x314b, 0, 0, 0, g(Yes, No, false, false, "", "ᄏ")}, - {0x314c, 0, 0, 0, g(Yes, No, false, false, "", "ᄐ")}, - {0x314d, 0, 0, 0, g(Yes, No, false, false, "", "ᄑ")}, - {0x314e, 0, 0, 0, g(Yes, No, false, false, "", "ᄒ")}, - {0x314f, 0, 1, 1, g(Yes, No, false, false, "", "ᅡ")}, - {0x3150, 0, 1, 1, g(Yes, No, false, false, "", "ᅢ")}, - {0x3151, 0, 1, 1, g(Yes, No, false, false, "", "ᅣ")}, - {0x3152, 0, 1, 1, g(Yes, No, false, false, "", "ᅤ")}, - {0x3153, 0, 1, 1, g(Yes, No, false, false, "", "ᅥ")}, - {0x3154, 0, 1, 1, g(Yes, No, false, false, "", "ᅦ")}, - {0x3155, 0, 1, 1, g(Yes, No, false, false, "", "ᅧ")}, - {0x3156, 0, 1, 1, g(Yes, No, false, false, "", "ᅨ")}, - {0x3157, 0, 1, 1, g(Yes, No, false, false, "", "ᅩ")}, - {0x3158, 0, 1, 1, g(Yes, No, false, false, "", "ᅪ")}, - {0x3159, 0, 1, 1, g(Yes, No, false, false, "", "ᅫ")}, - {0x315a, 0, 1, 1, g(Yes, No, false, false, "", "ᅬ")}, - {0x315b, 0, 1, 1, g(Yes, No, false, false, "", "ᅭ")}, - {0x315c, 0, 1, 1, g(Yes, No, false, false, "", "ᅮ")}, - {0x315d, 0, 1, 1, g(Yes, No, false, false, "", "ᅯ")}, - {0x315e, 0, 1, 1, g(Yes, No, false, false, "", "ᅰ")}, - {0x315f, 0, 1, 1, g(Yes, No, false, false, "", "ᅱ")}, - {0x3160, 0, 1, 1, g(Yes, No, false, false, "", "ᅲ")}, - {0x3161, 0, 1, 1, g(Yes, No, false, false, "", "ᅳ")}, - {0x3162, 0, 1, 1, g(Yes, No, false, false, "", "ᅴ")}, - {0x3163, 0, 1, 1, g(Yes, No, false, false, "", "ᅵ")}, - {0x3164, 0, 0, 0, g(Yes, No, false, false, "", "ᅠ")}, - {0x3165, 0, 0, 0, g(Yes, No, false, false, "", "ᄔ")}, - {0x3166, 0, 0, 0, g(Yes, No, false, false, "", "ᄕ")}, - {0x3167, 0, 0, 0, g(Yes, No, false, false, "", "ᇇ")}, - {0x3168, 0, 0, 0, g(Yes, No, false, false, "", "ᇈ")}, - {0x3169, 0, 0, 0, g(Yes, No, false, false, "", "ᇌ")}, - {0x316a, 0, 0, 0, g(Yes, No, false, false, "", "ᇎ")}, - {0x316b, 0, 0, 0, g(Yes, No, false, false, "", "ᇓ")}, - {0x316c, 0, 0, 0, g(Yes, No, false, false, "", "ᇗ")}, - {0x316d, 0, 0, 0, g(Yes, No, false, false, "", "ᇙ")}, - {0x316e, 0, 0, 0, g(Yes, No, false, false, "", "ᄜ")}, - {0x316f, 0, 0, 0, g(Yes, No, false, false, "", "ᇝ")}, - {0x3170, 0, 0, 0, g(Yes, No, false, false, "", "ᇟ")}, - {0x3171, 0, 0, 0, g(Yes, No, false, false, "", "ᄝ")}, - {0x3172, 0, 0, 0, g(Yes, No, false, false, "", "ᄞ")}, - {0x3173, 0, 0, 0, g(Yes, No, false, false, "", "ᄠ")}, - {0x3174, 0, 0, 0, g(Yes, No, false, false, "", "ᄢ")}, - {0x3175, 0, 0, 0, g(Yes, No, false, false, "", "ᄣ")}, - {0x3176, 0, 0, 0, g(Yes, No, false, false, "", "ᄧ")}, - {0x3177, 0, 0, 0, g(Yes, No, false, false, "", "ᄩ")}, - {0x3178, 0, 0, 0, g(Yes, No, false, false, "", "ᄫ")}, - {0x3179, 0, 0, 0, g(Yes, No, false, false, "", "ᄬ")}, - {0x317a, 0, 0, 0, g(Yes, No, false, false, "", "ᄭ")}, - {0x317b, 0, 0, 0, g(Yes, No, false, false, "", "ᄮ")}, - {0x317c, 0, 0, 0, g(Yes, No, false, false, "", "ᄯ")}, - {0x317d, 0, 0, 0, g(Yes, No, false, false, "", "ᄲ")}, - {0x317e, 0, 0, 0, g(Yes, No, false, false, "", "ᄶ")}, - {0x317f, 0, 0, 0, g(Yes, No, false, false, "", "ᅀ")}, - {0x3180, 0, 0, 0, g(Yes, No, false, false, "", "ᅇ")}, - {0x3181, 0, 0, 0, g(Yes, No, false, false, "", "ᅌ")}, - {0x3182, 0, 0, 0, g(Yes, No, false, false, "", "ᇱ")}, - {0x3183, 0, 0, 0, g(Yes, No, false, false, "", "ᇲ")}, - {0x3184, 0, 0, 0, g(Yes, No, false, false, "", "ᅗ")}, - {0x3185, 0, 0, 0, g(Yes, No, false, false, "", "ᅘ")}, - {0x3186, 0, 0, 0, g(Yes, No, false, false, "", "ᅙ")}, - {0x3187, 0, 0, 0, g(Yes, No, false, false, "", "ᆄ")}, - {0x3188, 0, 0, 0, g(Yes, No, false, false, "", "ᆅ")}, - {0x3189, 0, 0, 0, g(Yes, No, false, false, "", "ᆈ")}, - {0x318a, 0, 0, 0, g(Yes, No, false, false, "", "ᆑ")}, - {0x318b, 0, 0, 0, g(Yes, No, false, false, "", "ᆒ")}, - {0x318c, 0, 0, 0, g(Yes, No, false, false, "", "ᆔ")}, - {0x318d, 0, 0, 0, g(Yes, No, false, false, "", "ᆞ")}, - {0x318e, 0, 0, 0, g(Yes, No, false, false, "", "ᆡ")}, - {0x318f, 0, 0, 0, f(Yes, false, "")}, - {0x3192, 0, 0, 0, g(Yes, No, false, false, "", "一")}, - {0x3193, 0, 0, 0, g(Yes, No, false, false, "", "二")}, - {0x3194, 0, 0, 0, g(Yes, No, false, false, "", "三")}, - {0x3195, 0, 0, 0, g(Yes, No, false, false, "", "四")}, - {0x3196, 0, 0, 0, g(Yes, No, false, false, "", "上")}, - {0x3197, 0, 0, 0, g(Yes, No, false, false, "", "中")}, - {0x3198, 0, 0, 0, g(Yes, No, false, false, "", "下")}, - {0x3199, 0, 0, 0, g(Yes, No, false, false, "", "甲")}, - {0x319a, 0, 0, 0, g(Yes, No, false, false, "", "乙")}, - {0x319b, 0, 0, 0, g(Yes, No, false, false, "", "丙")}, - {0x319c, 0, 0, 0, g(Yes, No, false, false, "", "丁")}, - {0x319d, 0, 0, 0, g(Yes, No, false, false, "", "天")}, - {0x319e, 0, 0, 0, g(Yes, No, false, false, "", "地")}, - {0x319f, 0, 0, 0, g(Yes, No, false, false, "", "人")}, - {0x31a0, 0, 0, 0, f(Yes, false, "")}, - {0x3200, 0, 0, 0, g(Yes, No, false, false, "", "(ᄀ)")}, - {0x3201, 0, 0, 0, g(Yes, No, false, false, "", "(ᄂ)")}, - {0x3202, 0, 0, 0, g(Yes, No, false, false, "", "(ᄃ)")}, - {0x3203, 0, 0, 0, g(Yes, No, false, false, "", "(ᄅ)")}, - {0x3204, 0, 0, 0, g(Yes, No, false, false, "", "(ᄆ)")}, - {0x3205, 0, 0, 0, g(Yes, No, false, false, "", "(ᄇ)")}, - {0x3206, 0, 0, 0, g(Yes, No, false, false, "", "(ᄉ)")}, - {0x3207, 0, 0, 0, g(Yes, No, false, false, "", "(ᄋ)")}, - {0x3208, 0, 0, 0, g(Yes, No, false, false, "", "(ᄌ)")}, - {0x3209, 0, 0, 0, g(Yes, No, false, false, "", "(ᄎ)")}, - {0x320a, 0, 0, 0, g(Yes, No, false, false, "", "(ᄏ)")}, - {0x320b, 0, 0, 0, g(Yes, No, false, false, "", "(ᄐ)")}, - {0x320c, 0, 0, 0, g(Yes, No, false, false, "", "(ᄑ)")}, - {0x320d, 0, 0, 0, g(Yes, No, false, false, "", "(ᄒ)")}, - {0x320e, 0, 0, 0, g(Yes, No, false, false, "", "(가)")}, - {0x320f, 0, 0, 0, g(Yes, No, false, false, "", "(나)")}, - {0x3210, 0, 0, 0, g(Yes, No, false, false, "", "(다)")}, - {0x3211, 0, 0, 0, g(Yes, No, false, false, "", "(라)")}, - {0x3212, 0, 0, 0, g(Yes, No, false, false, "", "(마)")}, - {0x3213, 0, 0, 0, g(Yes, No, false, false, "", "(바)")}, - {0x3214, 0, 0, 0, g(Yes, No, false, false, "", "(사)")}, - {0x3215, 0, 0, 0, g(Yes, No, false, false, "", "(아)")}, - {0x3216, 0, 0, 0, g(Yes, No, false, false, "", "(자)")}, - {0x3217, 0, 0, 0, g(Yes, No, false, false, "", "(차)")}, - {0x3218, 0, 0, 0, g(Yes, No, false, false, "", "(카)")}, - {0x3219, 0, 0, 0, g(Yes, No, false, false, "", "(타)")}, - {0x321a, 0, 0, 0, g(Yes, No, false, false, "", "(파)")}, - {0x321b, 0, 0, 0, g(Yes, No, false, false, "", "(하)")}, - {0x321c, 0, 0, 0, g(Yes, No, false, false, "", "(주)")}, - {0x321d, 0, 0, 0, g(Yes, No, false, false, "", "(오전)")}, - {0x321e, 0, 0, 0, g(Yes, No, false, false, "", "(오후)")}, - {0x321f, 0, 0, 0, f(Yes, false, "")}, - {0x3220, 0, 0, 0, g(Yes, No, false, false, "", "(一)")}, - {0x3221, 0, 0, 0, g(Yes, No, false, false, "", "(二)")}, - {0x3222, 0, 0, 0, g(Yes, No, false, false, "", "(三)")}, - {0x3223, 0, 0, 0, g(Yes, No, false, false, "", "(四)")}, - {0x3224, 0, 0, 0, g(Yes, No, false, false, "", "(五)")}, - {0x3225, 0, 0, 0, g(Yes, No, false, false, "", "(六)")}, - {0x3226, 0, 0, 0, g(Yes, No, false, false, "", "(七)")}, - {0x3227, 0, 0, 0, g(Yes, No, false, false, "", "(八)")}, - {0x3228, 0, 0, 0, g(Yes, No, false, false, "", "(九)")}, - {0x3229, 0, 0, 0, g(Yes, No, false, false, "", "(十)")}, - {0x322a, 0, 0, 0, g(Yes, No, false, false, "", "(月)")}, - {0x322b, 0, 0, 0, g(Yes, No, false, false, "", "(火)")}, - {0x322c, 0, 0, 0, g(Yes, No, false, false, "", "(水)")}, - {0x322d, 0, 0, 0, g(Yes, No, false, false, "", "(木)")}, - {0x322e, 0, 0, 0, g(Yes, No, false, false, "", "(金)")}, - {0x322f, 0, 0, 0, g(Yes, No, false, false, "", "(土)")}, - {0x3230, 0, 0, 0, g(Yes, No, false, false, "", "(日)")}, - {0x3231, 0, 0, 0, g(Yes, No, false, false, "", "(株)")}, - {0x3232, 0, 0, 0, g(Yes, No, false, false, "", "(有)")}, - {0x3233, 0, 0, 0, g(Yes, No, false, false, "", "(社)")}, - {0x3234, 0, 0, 0, g(Yes, No, false, false, "", "(名)")}, - {0x3235, 0, 0, 0, g(Yes, No, false, false, "", "(特)")}, - {0x3236, 0, 0, 0, g(Yes, No, false, false, "", "(財)")}, - {0x3237, 0, 0, 0, g(Yes, No, false, false, "", "(祝)")}, - {0x3238, 0, 0, 0, g(Yes, No, false, false, "", "(労)")}, - {0x3239, 0, 0, 0, g(Yes, No, false, false, "", "(代)")}, - {0x323a, 0, 0, 0, g(Yes, No, false, false, "", "(呼)")}, - {0x323b, 0, 0, 0, g(Yes, No, false, false, "", "(学)")}, - {0x323c, 0, 0, 0, g(Yes, No, false, false, "", "(監)")}, - {0x323d, 0, 0, 0, g(Yes, No, false, false, "", "(企)")}, - {0x323e, 0, 0, 0, g(Yes, No, false, false, "", "(資)")}, - {0x323f, 0, 0, 0, g(Yes, No, false, false, "", "(協)")}, - {0x3240, 0, 0, 0, g(Yes, No, false, false, "", "(祭)")}, - {0x3241, 0, 0, 0, g(Yes, No, false, false, "", "(休)")}, - {0x3242, 0, 0, 0, g(Yes, No, false, false, "", "(自)")}, - {0x3243, 0, 0, 0, g(Yes, No, false, false, "", "(至)")}, - {0x3244, 0, 0, 0, g(Yes, No, false, false, "", "問")}, - {0x3245, 0, 0, 0, g(Yes, No, false, false, "", "幼")}, - {0x3246, 0, 0, 0, g(Yes, No, false, false, "", "文")}, - {0x3247, 0, 0, 0, g(Yes, No, false, false, "", "箏")}, - {0x3248, 0, 0, 0, f(Yes, false, "")}, - {0x3250, 0, 0, 0, g(Yes, No, false, false, "", "PTE")}, - {0x3251, 0, 0, 0, g(Yes, No, false, false, "", "21")}, - {0x3252, 0, 0, 0, g(Yes, No, false, false, "", "22")}, - {0x3253, 0, 0, 0, g(Yes, No, false, false, "", "23")}, - {0x3254, 0, 0, 0, g(Yes, No, false, false, "", "24")}, - {0x3255, 0, 0, 0, g(Yes, No, false, false, "", "25")}, - {0x3256, 0, 0, 0, g(Yes, No, false, false, "", "26")}, - {0x3257, 0, 0, 0, g(Yes, No, false, false, "", "27")}, - {0x3258, 0, 0, 0, g(Yes, No, false, false, "", "28")}, - {0x3259, 0, 0, 0, g(Yes, No, false, false, "", "29")}, - {0x325a, 0, 0, 0, g(Yes, No, false, false, "", "30")}, - {0x325b, 0, 0, 0, g(Yes, No, false, false, "", "31")}, - {0x325c, 0, 0, 0, g(Yes, No, false, false, "", "32")}, - {0x325d, 0, 0, 0, g(Yes, No, false, false, "", "33")}, - {0x325e, 0, 0, 0, g(Yes, No, false, false, "", "34")}, - {0x325f, 0, 0, 0, g(Yes, No, false, false, "", "35")}, - {0x3260, 0, 0, 0, g(Yes, No, false, false, "", "ᄀ")}, - {0x3261, 0, 0, 0, g(Yes, No, false, false, "", "ᄂ")}, - {0x3262, 0, 0, 0, g(Yes, No, false, false, "", "ᄃ")}, - {0x3263, 0, 0, 0, g(Yes, No, false, false, "", "ᄅ")}, - {0x3264, 0, 0, 0, g(Yes, No, false, false, "", "ᄆ")}, - {0x3265, 0, 0, 0, g(Yes, No, false, false, "", "ᄇ")}, - {0x3266, 0, 0, 0, g(Yes, No, false, false, "", "ᄉ")}, - {0x3267, 0, 0, 0, g(Yes, No, false, false, "", "ᄋ")}, - {0x3268, 0, 0, 0, g(Yes, No, false, false, "", "ᄌ")}, - {0x3269, 0, 0, 0, g(Yes, No, false, false, "", "ᄎ")}, - {0x326a, 0, 0, 0, g(Yes, No, false, false, "", "ᄏ")}, - {0x326b, 0, 0, 0, g(Yes, No, false, false, "", "ᄐ")}, - {0x326c, 0, 0, 0, g(Yes, No, false, false, "", "ᄑ")}, - {0x326d, 0, 0, 0, g(Yes, No, false, false, "", "ᄒ")}, - {0x326e, 0, 0, 1, g(Yes, No, false, false, "", "가")}, - {0x326f, 0, 0, 1, g(Yes, No, false, false, "", "나")}, - {0x3270, 0, 0, 1, g(Yes, No, false, false, "", "다")}, - {0x3271, 0, 0, 1, g(Yes, No, false, false, "", "라")}, - {0x3272, 0, 0, 1, g(Yes, No, false, false, "", "마")}, - {0x3273, 0, 0, 1, g(Yes, No, false, false, "", "바")}, - {0x3274, 0, 0, 1, g(Yes, No, false, false, "", "사")}, - {0x3275, 0, 0, 1, g(Yes, No, false, false, "", "아")}, - {0x3276, 0, 0, 1, g(Yes, No, false, false, "", "자")}, - {0x3277, 0, 0, 1, g(Yes, No, false, false, "", "차")}, - {0x3278, 0, 0, 1, g(Yes, No, false, false, "", "카")}, - {0x3279, 0, 0, 1, g(Yes, No, false, false, "", "타")}, - {0x327a, 0, 0, 1, g(Yes, No, false, false, "", "파")}, - {0x327b, 0, 0, 1, g(Yes, No, false, false, "", "하")}, - {0x327c, 0, 0, 1, g(Yes, No, false, false, "", "참고")}, - {0x327d, 0, 0, 1, g(Yes, No, false, false, "", "주의")}, - {0x327e, 0, 0, 1, g(Yes, No, false, false, "", "우")}, - {0x327f, 0, 0, 0, f(Yes, false, "")}, - {0x3280, 0, 0, 0, g(Yes, No, false, false, "", "一")}, - {0x3281, 0, 0, 0, g(Yes, No, false, false, "", "二")}, - {0x3282, 0, 0, 0, g(Yes, No, false, false, "", "三")}, - {0x3283, 0, 0, 0, g(Yes, No, false, false, "", "四")}, - {0x3284, 0, 0, 0, g(Yes, No, false, false, "", "五")}, - {0x3285, 0, 0, 0, g(Yes, No, false, false, "", "六")}, - {0x3286, 0, 0, 0, g(Yes, No, false, false, "", "七")}, - {0x3287, 0, 0, 0, g(Yes, No, false, false, "", "八")}, - {0x3288, 0, 0, 0, g(Yes, No, false, false, "", "九")}, - {0x3289, 0, 0, 0, g(Yes, No, false, false, "", "十")}, - {0x328a, 0, 0, 0, g(Yes, No, false, false, "", "月")}, - {0x328b, 0, 0, 0, g(Yes, No, false, false, "", "火")}, - {0x328c, 0, 0, 0, g(Yes, No, false, false, "", "水")}, - {0x328d, 0, 0, 0, g(Yes, No, false, false, "", "木")}, - {0x328e, 0, 0, 0, g(Yes, No, false, false, "", "金")}, - {0x328f, 0, 0, 0, g(Yes, No, false, false, "", "土")}, - {0x3290, 0, 0, 0, g(Yes, No, false, false, "", "日")}, - {0x3291, 0, 0, 0, g(Yes, No, false, false, "", "株")}, - {0x3292, 0, 0, 0, g(Yes, No, false, false, "", "有")}, - {0x3293, 0, 0, 0, g(Yes, No, false, false, "", "社")}, - {0x3294, 0, 0, 0, g(Yes, No, false, false, "", "名")}, - {0x3295, 0, 0, 0, g(Yes, No, false, false, "", "特")}, - {0x3296, 0, 0, 0, g(Yes, No, false, false, "", "財")}, - {0x3297, 0, 0, 0, g(Yes, No, false, false, "", "祝")}, - {0x3298, 0, 0, 0, g(Yes, No, false, false, "", "労")}, - {0x3299, 0, 0, 0, g(Yes, No, false, false, "", "秘")}, - {0x329a, 0, 0, 0, g(Yes, No, false, false, "", "男")}, - {0x329b, 0, 0, 0, g(Yes, No, false, false, "", "女")}, - {0x329c, 0, 0, 0, g(Yes, No, false, false, "", "適")}, - {0x329d, 0, 0, 0, g(Yes, No, false, false, "", "優")}, - {0x329e, 0, 0, 0, g(Yes, No, false, false, "", "印")}, - {0x329f, 0, 0, 0, g(Yes, No, false, false, "", "注")}, - {0x32a0, 0, 0, 0, g(Yes, No, false, false, "", "項")}, - {0x32a1, 0, 0, 0, g(Yes, No, false, false, "", "休")}, - {0x32a2, 0, 0, 0, g(Yes, No, false, false, "", "写")}, - {0x32a3, 0, 0, 0, g(Yes, No, false, false, "", "正")}, - {0x32a4, 0, 0, 0, g(Yes, No, false, false, "", "上")}, - {0x32a5, 0, 0, 0, g(Yes, No, false, false, "", "中")}, - {0x32a6, 0, 0, 0, g(Yes, No, false, false, "", "下")}, - {0x32a7, 0, 0, 0, g(Yes, No, false, false, "", "左")}, - {0x32a8, 0, 0, 0, g(Yes, No, false, false, "", "右")}, - {0x32a9, 0, 0, 0, g(Yes, No, false, false, "", "医")}, - {0x32aa, 0, 0, 0, g(Yes, No, false, false, "", "宗")}, - {0x32ab, 0, 0, 0, g(Yes, No, false, false, "", "学")}, - {0x32ac, 0, 0, 0, g(Yes, No, false, false, "", "監")}, - {0x32ad, 0, 0, 0, g(Yes, No, false, false, "", "企")}, - {0x32ae, 0, 0, 0, g(Yes, No, false, false, "", "資")}, - {0x32af, 0, 0, 0, g(Yes, No, false, false, "", "協")}, - {0x32b0, 0, 0, 0, g(Yes, No, false, false, "", "夜")}, - {0x32b1, 0, 0, 0, g(Yes, No, false, false, "", "36")}, - {0x32b2, 0, 0, 0, g(Yes, No, false, false, "", "37")}, - {0x32b3, 0, 0, 0, g(Yes, No, false, false, "", "38")}, - {0x32b4, 0, 0, 0, g(Yes, No, false, false, "", "39")}, - {0x32b5, 0, 0, 0, g(Yes, No, false, false, "", "40")}, - {0x32b6, 0, 0, 0, g(Yes, No, false, false, "", "41")}, - {0x32b7, 0, 0, 0, g(Yes, No, false, false, "", "42")}, - {0x32b8, 0, 0, 0, g(Yes, No, false, false, "", "43")}, - {0x32b9, 0, 0, 0, g(Yes, No, false, false, "", "44")}, - {0x32ba, 0, 0, 0, g(Yes, No, false, false, "", "45")}, - {0x32bb, 0, 0, 0, g(Yes, No, false, false, "", "46")}, - {0x32bc, 0, 0, 0, g(Yes, No, false, false, "", "47")}, - {0x32bd, 0, 0, 0, g(Yes, No, false, false, "", "48")}, - {0x32be, 0, 0, 0, g(Yes, No, false, false, "", "49")}, - {0x32bf, 0, 0, 0, g(Yes, No, false, false, "", "50")}, - {0x32c0, 0, 0, 0, g(Yes, No, false, false, "", "1月")}, - {0x32c1, 0, 0, 0, g(Yes, No, false, false, "", "2月")}, - {0x32c2, 0, 0, 0, g(Yes, No, false, false, "", "3月")}, - {0x32c3, 0, 0, 0, g(Yes, No, false, false, "", "4月")}, - {0x32c4, 0, 0, 0, g(Yes, No, false, false, "", "5月")}, - {0x32c5, 0, 0, 0, g(Yes, No, false, false, "", "6月")}, - {0x32c6, 0, 0, 0, g(Yes, No, false, false, "", "7月")}, - {0x32c7, 0, 0, 0, g(Yes, No, false, false, "", "8月")}, - {0x32c8, 0, 0, 0, g(Yes, No, false, false, "", "9月")}, - {0x32c9, 0, 0, 0, g(Yes, No, false, false, "", "10月")}, - {0x32ca, 0, 0, 0, g(Yes, No, false, false, "", "11月")}, - {0x32cb, 0, 0, 0, g(Yes, No, false, false, "", "12月")}, - {0x32cc, 0, 0, 0, g(Yes, No, false, false, "", "Hg")}, - {0x32cd, 0, 0, 0, g(Yes, No, false, false, "", "erg")}, - {0x32ce, 0, 0, 0, g(Yes, No, false, false, "", "eV")}, - {0x32cf, 0, 0, 0, g(Yes, No, false, false, "", "LTD")}, - {0x32d0, 0, 0, 0, g(Yes, No, false, false, "", "ア")}, - {0x32d1, 0, 0, 0, g(Yes, No, false, false, "", "イ")}, - {0x32d2, 0, 0, 0, g(Yes, No, false, false, "", "ウ")}, - {0x32d3, 0, 0, 0, g(Yes, No, false, false, "", "エ")}, - {0x32d4, 0, 0, 0, g(Yes, No, false, false, "", "オ")}, - {0x32d5, 0, 0, 0, g(Yes, No, false, false, "", "カ")}, - {0x32d6, 0, 0, 0, g(Yes, No, false, false, "", "キ")}, - {0x32d7, 0, 0, 0, g(Yes, No, false, false, "", "ク")}, - {0x32d8, 0, 0, 0, g(Yes, No, false, false, "", "ケ")}, - {0x32d9, 0, 0, 0, g(Yes, No, false, false, "", "コ")}, - {0x32da, 0, 0, 0, g(Yes, No, false, false, "", "サ")}, - {0x32db, 0, 0, 0, g(Yes, No, false, false, "", "シ")}, - {0x32dc, 0, 0, 0, g(Yes, No, false, false, "", "ス")}, - {0x32dd, 0, 0, 0, g(Yes, No, false, false, "", "セ")}, - {0x32de, 0, 0, 0, g(Yes, No, false, false, "", "ソ")}, - {0x32df, 0, 0, 0, g(Yes, No, false, false, "", "タ")}, - {0x32e0, 0, 0, 0, g(Yes, No, false, false, "", "チ")}, - {0x32e1, 0, 0, 0, g(Yes, No, false, false, "", "ツ")}, - {0x32e2, 0, 0, 0, g(Yes, No, false, false, "", "テ")}, - {0x32e3, 0, 0, 0, g(Yes, No, false, false, "", "ト")}, - {0x32e4, 0, 0, 0, g(Yes, No, false, false, "", "ナ")}, - {0x32e5, 0, 0, 0, g(Yes, No, false, false, "", "ニ")}, - {0x32e6, 0, 0, 0, g(Yes, No, false, false, "", "ヌ")}, - {0x32e7, 0, 0, 0, g(Yes, No, false, false, "", "ネ")}, - {0x32e8, 0, 0, 0, g(Yes, No, false, false, "", "ノ")}, - {0x32e9, 0, 0, 0, g(Yes, No, false, false, "", "ハ")}, - {0x32ea, 0, 0, 0, g(Yes, No, false, false, "", "ヒ")}, - {0x32eb, 0, 0, 0, g(Yes, No, false, false, "", "フ")}, - {0x32ec, 0, 0, 0, g(Yes, No, false, false, "", "ヘ")}, - {0x32ed, 0, 0, 0, g(Yes, No, false, false, "", "ホ")}, - {0x32ee, 0, 0, 0, g(Yes, No, false, false, "", "マ")}, - {0x32ef, 0, 0, 0, g(Yes, No, false, false, "", "ミ")}, - {0x32f0, 0, 0, 0, g(Yes, No, false, false, "", "ム")}, - {0x32f1, 0, 0, 0, g(Yes, No, false, false, "", "メ")}, - {0x32f2, 0, 0, 0, g(Yes, No, false, false, "", "モ")}, - {0x32f3, 0, 0, 0, g(Yes, No, false, false, "", "ヤ")}, - {0x32f4, 0, 0, 0, g(Yes, No, false, false, "", "ユ")}, - {0x32f5, 0, 0, 0, g(Yes, No, false, false, "", "ヨ")}, - {0x32f6, 0, 0, 0, g(Yes, No, false, false, "", "ラ")}, - {0x32f7, 0, 0, 0, g(Yes, No, false, false, "", "リ")}, - {0x32f8, 0, 0, 0, g(Yes, No, false, false, "", "ル")}, - {0x32f9, 0, 0, 0, g(Yes, No, false, false, "", "レ")}, - {0x32fa, 0, 0, 0, g(Yes, No, false, false, "", "ロ")}, - {0x32fb, 0, 0, 0, g(Yes, No, false, false, "", "ワ")}, - {0x32fc, 0, 0, 0, g(Yes, No, false, false, "", "ヰ")}, - {0x32fd, 0, 0, 0, g(Yes, No, false, false, "", "ヱ")}, - {0x32fe, 0, 0, 0, g(Yes, No, false, false, "", "ヲ")}, - {0x32ff, 0, 0, 0, f(Yes, false, "")}, - {0x3300, 0, 0, 0, g(Yes, No, false, false, "", "アパート")}, - {0x3301, 0, 0, 0, g(Yes, No, false, false, "", "アルファ")}, - {0x3302, 0, 0, 0, g(Yes, No, false, false, "", "アンペア")}, - {0x3303, 0, 0, 0, g(Yes, No, false, false, "", "アール")}, - {0x3304, 0, 0, 1, g(Yes, No, false, false, "", "イニング")}, - {0x3305, 0, 0, 0, g(Yes, No, false, false, "", "インチ")}, - {0x3306, 0, 0, 0, g(Yes, No, false, false, "", "ウォン")}, - {0x3307, 0, 0, 1, g(Yes, No, false, false, "", "エスクード")}, - {0x3308, 0, 0, 0, g(Yes, No, false, false, "", "エーカー")}, - {0x3309, 0, 0, 0, g(Yes, No, false, false, "", "オンス")}, - {0x330a, 0, 0, 0, g(Yes, No, false, false, "", "オーム")}, - {0x330b, 0, 0, 0, g(Yes, No, false, false, "", "カイリ")}, - {0x330c, 0, 0, 0, g(Yes, No, false, false, "", "カラット")}, - {0x330d, 0, 0, 0, g(Yes, No, false, false, "", "カロリー")}, - {0x330e, 0, 0, 0, g(Yes, No, false, false, "", "ガロン")}, - {0x330f, 0, 0, 0, g(Yes, No, false, false, "", "ガンマ")}, - {0x3310, 0, 0, 1, g(Yes, No, false, false, "", "ギガ")}, - {0x3311, 0, 0, 0, g(Yes, No, false, false, "", "ギニー")}, - {0x3312, 0, 0, 0, g(Yes, No, false, false, "", "キュリー")}, - {0x3313, 0, 0, 0, g(Yes, No, false, false, "", "ギルダー")}, - {0x3314, 0, 0, 0, g(Yes, No, false, false, "", "キロ")}, - {0x3315, 0, 0, 0, g(Yes, No, false, false, "", "キログラム")}, - {0x3316, 0, 0, 0, g(Yes, No, false, false, "", "キロメートル")}, - {0x3317, 0, 0, 0, g(Yes, No, false, false, "", "キロワット")}, - {0x3318, 0, 0, 0, g(Yes, No, false, false, "", "グラム")}, - {0x3319, 0, 0, 0, g(Yes, No, false, false, "", "グラムトン")}, - {0x331a, 0, 0, 0, g(Yes, No, false, false, "", "クルゼイロ")}, - {0x331b, 0, 0, 0, g(Yes, No, false, false, "", "クローネ")}, - {0x331c, 0, 0, 0, g(Yes, No, false, false, "", "ケース")}, - {0x331d, 0, 0, 0, g(Yes, No, false, false, "", "コルナ")}, - {0x331e, 0, 0, 1, g(Yes, No, false, false, "", "コーポ")}, - {0x331f, 0, 0, 0, g(Yes, No, false, false, "", "サイクル")}, - {0x3320, 0, 0, 0, g(Yes, No, false, false, "", "サンチーム")}, - {0x3321, 0, 0, 1, g(Yes, No, false, false, "", "シリング")}, - {0x3322, 0, 0, 0, g(Yes, No, false, false, "", "センチ")}, - {0x3323, 0, 0, 0, g(Yes, No, false, false, "", "セント")}, - {0x3324, 0, 0, 0, g(Yes, No, false, false, "", "ダース")}, - {0x3325, 0, 0, 0, g(Yes, No, false, false, "", "デシ")}, - {0x3326, 0, 0, 0, g(Yes, No, false, false, "", "ドル")}, - {0x3327, 0, 0, 0, g(Yes, No, false, false, "", "トン")}, - {0x3328, 0, 0, 0, g(Yes, No, false, false, "", "ナノ")}, - {0x3329, 0, 0, 0, g(Yes, No, false, false, "", "ノット")}, - {0x332a, 0, 0, 0, g(Yes, No, false, false, "", "ハイツ")}, - {0x332b, 0, 0, 0, g(Yes, No, false, false, "", "パーセント")}, - {0x332c, 0, 0, 0, g(Yes, No, false, false, "", "パーツ")}, - {0x332d, 0, 0, 0, g(Yes, No, false, false, "", "バーレル")}, - {0x332e, 0, 0, 0, g(Yes, No, false, false, "", "ピアストル")}, - {0x332f, 0, 0, 0, g(Yes, No, false, false, "", "ピクル")}, - {0x3330, 0, 0, 0, g(Yes, No, false, false, "", "ピコ")}, - {0x3331, 0, 0, 0, g(Yes, No, false, false, "", "ビル")}, - {0x3332, 0, 0, 1, g(Yes, No, false, false, "", "ファラッド")}, - {0x3333, 0, 0, 0, g(Yes, No, false, false, "", "フィート")}, - {0x3334, 0, 0, 0, g(Yes, No, false, false, "", "ブッシェル")}, - {0x3335, 0, 0, 0, g(Yes, No, false, false, "", "フラン")}, - {0x3336, 0, 0, 0, g(Yes, No, false, false, "", "ヘクタール")}, - {0x3337, 0, 0, 0, g(Yes, No, false, false, "", "ペソ")}, - {0x3338, 0, 0, 0, g(Yes, No, false, false, "", "ペニヒ")}, - {0x3339, 0, 0, 0, g(Yes, No, false, false, "", "ヘルツ")}, - {0x333a, 0, 0, 0, g(Yes, No, false, false, "", "ペンス")}, - {0x333b, 0, 0, 1, g(Yes, No, false, false, "", "ページ")}, - {0x333c, 0, 0, 0, g(Yes, No, false, false, "", "ベータ")}, - {0x333d, 0, 0, 0, g(Yes, No, false, false, "", "ポイント")}, - {0x333e, 0, 0, 0, g(Yes, No, false, false, "", "ボルト")}, - {0x333f, 0, 0, 0, g(Yes, No, false, false, "", "ホン")}, - {0x3340, 0, 0, 1, g(Yes, No, false, false, "", "ポンド")}, - {0x3341, 0, 0, 0, g(Yes, No, false, false, "", "ホール")}, - {0x3342, 0, 0, 0, g(Yes, No, false, false, "", "ホーン")}, - {0x3343, 0, 0, 0, g(Yes, No, false, false, "", "マイクロ")}, - {0x3344, 0, 0, 0, g(Yes, No, false, false, "", "マイル")}, - {0x3345, 0, 0, 0, g(Yes, No, false, false, "", "マッハ")}, - {0x3346, 0, 0, 0, g(Yes, No, false, false, "", "マルク")}, - {0x3347, 0, 0, 0, g(Yes, No, false, false, "", "マンション")}, - {0x3348, 0, 0, 0, g(Yes, No, false, false, "", "ミクロン")}, - {0x3349, 0, 0, 0, g(Yes, No, false, false, "", "ミリ")}, - {0x334a, 0, 0, 0, g(Yes, No, false, false, "", "ミリバール")}, - {0x334b, 0, 0, 1, g(Yes, No, false, false, "", "メガ")}, - {0x334c, 0, 0, 0, g(Yes, No, false, false, "", "メガトン")}, - {0x334d, 0, 0, 0, g(Yes, No, false, false, "", "メートル")}, - {0x334e, 0, 0, 1, g(Yes, No, false, false, "", "ヤード")}, - {0x334f, 0, 0, 0, g(Yes, No, false, false, "", "ヤール")}, - {0x3350, 0, 0, 0, g(Yes, No, false, false, "", "ユアン")}, - {0x3351, 0, 0, 0, g(Yes, No, false, false, "", "リットル")}, - {0x3352, 0, 0, 0, g(Yes, No, false, false, "", "リラ")}, - {0x3353, 0, 0, 0, g(Yes, No, false, false, "", "ルピー")}, - {0x3354, 0, 0, 0, g(Yes, No, false, false, "", "ルーブル")}, - {0x3355, 0, 0, 0, g(Yes, No, false, false, "", "レム")}, - {0x3356, 0, 0, 0, g(Yes, No, false, false, "", "レントゲン")}, - {0x3357, 0, 0, 0, g(Yes, No, false, false, "", "ワット")}, - {0x3358, 0, 0, 0, g(Yes, No, false, false, "", "0点")}, - {0x3359, 0, 0, 0, g(Yes, No, false, false, "", "1点")}, - {0x335a, 0, 0, 0, g(Yes, No, false, false, "", "2点")}, - {0x335b, 0, 0, 0, g(Yes, No, false, false, "", "3点")}, - {0x335c, 0, 0, 0, g(Yes, No, false, false, "", "4点")}, - {0x335d, 0, 0, 0, g(Yes, No, false, false, "", "5点")}, - {0x335e, 0, 0, 0, g(Yes, No, false, false, "", "6点")}, - {0x335f, 0, 0, 0, g(Yes, No, false, false, "", "7点")}, - {0x3360, 0, 0, 0, g(Yes, No, false, false, "", "8点")}, - {0x3361, 0, 0, 0, g(Yes, No, false, false, "", "9点")}, - {0x3362, 0, 0, 0, g(Yes, No, false, false, "", "10点")}, - {0x3363, 0, 0, 0, g(Yes, No, false, false, "", "11点")}, - {0x3364, 0, 0, 0, g(Yes, No, false, false, "", "12点")}, - {0x3365, 0, 0, 0, g(Yes, No, false, false, "", "13点")}, - {0x3366, 0, 0, 0, g(Yes, No, false, false, "", "14点")}, - {0x3367, 0, 0, 0, g(Yes, No, false, false, "", "15点")}, - {0x3368, 0, 0, 0, g(Yes, No, false, false, "", "16点")}, - {0x3369, 0, 0, 0, g(Yes, No, false, false, "", "17点")}, - {0x336a, 0, 0, 0, g(Yes, No, false, false, "", "18点")}, - {0x336b, 0, 0, 0, g(Yes, No, false, false, "", "19点")}, - {0x336c, 0, 0, 0, g(Yes, No, false, false, "", "20点")}, - {0x336d, 0, 0, 0, g(Yes, No, false, false, "", "21点")}, - {0x336e, 0, 0, 0, g(Yes, No, false, false, "", "22点")}, - {0x336f, 0, 0, 0, g(Yes, No, false, false, "", "23点")}, - {0x3370, 0, 0, 0, g(Yes, No, false, false, "", "24点")}, - {0x3371, 0, 0, 0, g(Yes, No, false, false, "", "hPa")}, - {0x3372, 0, 0, 0, g(Yes, No, false, false, "", "da")}, - {0x3373, 0, 0, 0, g(Yes, No, false, false, "", "AU")}, - {0x3374, 0, 0, 0, g(Yes, No, false, false, "", "bar")}, - {0x3375, 0, 0, 0, g(Yes, No, false, false, "", "oV")}, - {0x3376, 0, 0, 0, g(Yes, No, false, false, "", "pc")}, - {0x3377, 0, 0, 0, g(Yes, No, false, false, "", "dm")}, - {0x3378, 0, 0, 0, g(Yes, No, false, false, "", "dm2")}, - {0x3379, 0, 0, 0, g(Yes, No, false, false, "", "dm3")}, - {0x337a, 0, 0, 0, g(Yes, No, false, false, "", "IU")}, - {0x337b, 0, 0, 0, g(Yes, No, false, false, "", "平成")}, - {0x337c, 0, 0, 0, g(Yes, No, false, false, "", "昭和")}, - {0x337d, 0, 0, 0, g(Yes, No, false, false, "", "大正")}, - {0x337e, 0, 0, 0, g(Yes, No, false, false, "", "明治")}, - {0x337f, 0, 0, 0, g(Yes, No, false, false, "", "株式会社")}, - {0x3380, 0, 0, 0, g(Yes, No, false, false, "", "pA")}, - {0x3381, 0, 0, 0, g(Yes, No, false, false, "", "nA")}, - {0x3382, 0, 0, 0, g(Yes, No, false, false, "", "μA")}, - {0x3383, 0, 0, 0, g(Yes, No, false, false, "", "mA")}, - {0x3384, 0, 0, 0, g(Yes, No, false, false, "", "kA")}, - {0x3385, 0, 0, 0, g(Yes, No, false, false, "", "KB")}, - {0x3386, 0, 0, 0, g(Yes, No, false, false, "", "MB")}, - {0x3387, 0, 0, 0, g(Yes, No, false, false, "", "GB")}, - {0x3388, 0, 0, 0, g(Yes, No, false, false, "", "cal")}, - {0x3389, 0, 0, 0, g(Yes, No, false, false, "", "kcal")}, - {0x338a, 0, 0, 0, g(Yes, No, false, false, "", "pF")}, - {0x338b, 0, 0, 0, g(Yes, No, false, false, "", "nF")}, - {0x338c, 0, 0, 0, g(Yes, No, false, false, "", "μF")}, - {0x338d, 0, 0, 0, g(Yes, No, false, false, "", "μg")}, - {0x338e, 0, 0, 0, g(Yes, No, false, false, "", "mg")}, - {0x338f, 0, 0, 0, g(Yes, No, false, false, "", "kg")}, - {0x3390, 0, 0, 0, g(Yes, No, false, false, "", "Hz")}, - {0x3391, 0, 0, 0, g(Yes, No, false, false, "", "kHz")}, - {0x3392, 0, 0, 0, g(Yes, No, false, false, "", "MHz")}, - {0x3393, 0, 0, 0, g(Yes, No, false, false, "", "GHz")}, - {0x3394, 0, 0, 0, g(Yes, No, false, false, "", "THz")}, - {0x3395, 0, 0, 0, g(Yes, No, false, false, "", "μl")}, - {0x3396, 0, 0, 0, g(Yes, No, false, false, "", "ml")}, - {0x3397, 0, 0, 0, g(Yes, No, false, false, "", "dl")}, - {0x3398, 0, 0, 0, g(Yes, No, false, false, "", "kl")}, - {0x3399, 0, 0, 0, g(Yes, No, false, false, "", "fm")}, - {0x339a, 0, 0, 0, g(Yes, No, false, false, "", "nm")}, - {0x339b, 0, 0, 0, g(Yes, No, false, false, "", "μm")}, - {0x339c, 0, 0, 0, g(Yes, No, false, false, "", "mm")}, - {0x339d, 0, 0, 0, g(Yes, No, false, false, "", "cm")}, - {0x339e, 0, 0, 0, g(Yes, No, false, false, "", "km")}, - {0x339f, 0, 0, 0, g(Yes, No, false, false, "", "mm2")}, - {0x33a0, 0, 0, 0, g(Yes, No, false, false, "", "cm2")}, - {0x33a1, 0, 0, 0, g(Yes, No, false, false, "", "m2")}, - {0x33a2, 0, 0, 0, g(Yes, No, false, false, "", "km2")}, - {0x33a3, 0, 0, 0, g(Yes, No, false, false, "", "mm3")}, - {0x33a4, 0, 0, 0, g(Yes, No, false, false, "", "cm3")}, - {0x33a5, 0, 0, 0, g(Yes, No, false, false, "", "m3")}, - {0x33a6, 0, 0, 0, g(Yes, No, false, false, "", "km3")}, - {0x33a7, 0, 0, 0, g(Yes, No, false, false, "", "m∕s")}, - {0x33a8, 0, 0, 0, g(Yes, No, false, false, "", "m∕s2")}, - {0x33a9, 0, 0, 0, g(Yes, No, false, false, "", "Pa")}, - {0x33aa, 0, 0, 0, g(Yes, No, false, false, "", "kPa")}, - {0x33ab, 0, 0, 0, g(Yes, No, false, false, "", "MPa")}, - {0x33ac, 0, 0, 0, g(Yes, No, false, false, "", "GPa")}, - {0x33ad, 0, 0, 0, g(Yes, No, false, false, "", "rad")}, - {0x33ae, 0, 0, 0, g(Yes, No, false, false, "", "rad∕s")}, - {0x33af, 0, 0, 0, g(Yes, No, false, false, "", "rad∕s2")}, - {0x33b0, 0, 0, 0, g(Yes, No, false, false, "", "ps")}, - {0x33b1, 0, 0, 0, g(Yes, No, false, false, "", "ns")}, - {0x33b2, 0, 0, 0, g(Yes, No, false, false, "", "μs")}, - {0x33b3, 0, 0, 0, g(Yes, No, false, false, "", "ms")}, - {0x33b4, 0, 0, 0, g(Yes, No, false, false, "", "pV")}, - {0x33b5, 0, 0, 0, g(Yes, No, false, false, "", "nV")}, - {0x33b6, 0, 0, 0, g(Yes, No, false, false, "", "μV")}, - {0x33b7, 0, 0, 0, g(Yes, No, false, false, "", "mV")}, - {0x33b8, 0, 0, 0, g(Yes, No, false, false, "", "kV")}, - {0x33b9, 0, 0, 0, g(Yes, No, false, false, "", "MV")}, - {0x33ba, 0, 0, 0, g(Yes, No, false, false, "", "pW")}, - {0x33bb, 0, 0, 0, g(Yes, No, false, false, "", "nW")}, - {0x33bc, 0, 0, 0, g(Yes, No, false, false, "", "μW")}, - {0x33bd, 0, 0, 0, g(Yes, No, false, false, "", "mW")}, - {0x33be, 0, 0, 0, g(Yes, No, false, false, "", "kW")}, - {0x33bf, 0, 0, 0, g(Yes, No, false, false, "", "MW")}, - {0x33c0, 0, 0, 0, g(Yes, No, false, false, "", "kΩ")}, - {0x33c1, 0, 0, 0, g(Yes, No, false, false, "", "MΩ")}, - {0x33c2, 0, 0, 0, g(Yes, No, false, false, "", "a.m.")}, - {0x33c3, 0, 0, 0, g(Yes, No, false, false, "", "Bq")}, - {0x33c4, 0, 0, 0, g(Yes, No, false, false, "", "cc")}, - {0x33c5, 0, 0, 0, g(Yes, No, false, false, "", "cd")}, - {0x33c6, 0, 0, 0, g(Yes, No, false, false, "", "C∕kg")}, - {0x33c7, 0, 0, 0, g(Yes, No, false, false, "", "Co.")}, - {0x33c8, 0, 0, 0, g(Yes, No, false, false, "", "dB")}, - {0x33c9, 0, 0, 0, g(Yes, No, false, false, "", "Gy")}, - {0x33ca, 0, 0, 0, g(Yes, No, false, false, "", "ha")}, - {0x33cb, 0, 0, 0, g(Yes, No, false, false, "", "HP")}, - {0x33cc, 0, 0, 0, g(Yes, No, false, false, "", "in")}, - {0x33cd, 0, 0, 0, g(Yes, No, false, false, "", "KK")}, - {0x33ce, 0, 0, 0, g(Yes, No, false, false, "", "KM")}, - {0x33cf, 0, 0, 0, g(Yes, No, false, false, "", "kt")}, - {0x33d0, 0, 0, 0, g(Yes, No, false, false, "", "lm")}, - {0x33d1, 0, 0, 0, g(Yes, No, false, false, "", "ln")}, - {0x33d2, 0, 0, 0, g(Yes, No, false, false, "", "log")}, - {0x33d3, 0, 0, 0, g(Yes, No, false, false, "", "lx")}, - {0x33d4, 0, 0, 0, g(Yes, No, false, false, "", "mb")}, - {0x33d5, 0, 0, 0, g(Yes, No, false, false, "", "mil")}, - {0x33d6, 0, 0, 0, g(Yes, No, false, false, "", "mol")}, - {0x33d7, 0, 0, 0, g(Yes, No, false, false, "", "PH")}, - {0x33d8, 0, 0, 0, g(Yes, No, false, false, "", "p.m.")}, - {0x33d9, 0, 0, 0, g(Yes, No, false, false, "", "PPM")}, - {0x33da, 0, 0, 0, g(Yes, No, false, false, "", "PR")}, - {0x33db, 0, 0, 0, g(Yes, No, false, false, "", "sr")}, - {0x33dc, 0, 0, 0, g(Yes, No, false, false, "", "Sv")}, - {0x33dd, 0, 0, 0, g(Yes, No, false, false, "", "Wb")}, - {0x33de, 0, 0, 0, g(Yes, No, false, false, "", "V∕m")}, - {0x33df, 0, 0, 0, g(Yes, No, false, false, "", "A∕m")}, - {0x33e0, 0, 0, 0, g(Yes, No, false, false, "", "1日")}, - {0x33e1, 0, 0, 0, g(Yes, No, false, false, "", "2日")}, - {0x33e2, 0, 0, 0, g(Yes, No, false, false, "", "3日")}, - {0x33e3, 0, 0, 0, g(Yes, No, false, false, "", "4日")}, - {0x33e4, 0, 0, 0, g(Yes, No, false, false, "", "5日")}, - {0x33e5, 0, 0, 0, g(Yes, No, false, false, "", "6日")}, - {0x33e6, 0, 0, 0, g(Yes, No, false, false, "", "7日")}, - {0x33e7, 0, 0, 0, g(Yes, No, false, false, "", "8日")}, - {0x33e8, 0, 0, 0, g(Yes, No, false, false, "", "9日")}, - {0x33e9, 0, 0, 0, g(Yes, No, false, false, "", "10日")}, - {0x33ea, 0, 0, 0, g(Yes, No, false, false, "", "11日")}, - {0x33eb, 0, 0, 0, g(Yes, No, false, false, "", "12日")}, - {0x33ec, 0, 0, 0, g(Yes, No, false, false, "", "13日")}, - {0x33ed, 0, 0, 0, g(Yes, No, false, false, "", "14日")}, - {0x33ee, 0, 0, 0, g(Yes, No, false, false, "", "15日")}, - {0x33ef, 0, 0, 0, g(Yes, No, false, false, "", "16日")}, - {0x33f0, 0, 0, 0, g(Yes, No, false, false, "", "17日")}, - {0x33f1, 0, 0, 0, g(Yes, No, false, false, "", "18日")}, - {0x33f2, 0, 0, 0, g(Yes, No, false, false, "", "19日")}, - {0x33f3, 0, 0, 0, g(Yes, No, false, false, "", "20日")}, - {0x33f4, 0, 0, 0, g(Yes, No, false, false, "", "21日")}, - {0x33f5, 0, 0, 0, g(Yes, No, false, false, "", "22日")}, - {0x33f6, 0, 0, 0, g(Yes, No, false, false, "", "23日")}, - {0x33f7, 0, 0, 0, g(Yes, No, false, false, "", "24日")}, - {0x33f8, 0, 0, 0, g(Yes, No, false, false, "", "25日")}, - {0x33f9, 0, 0, 0, g(Yes, No, false, false, "", "26日")}, - {0x33fa, 0, 0, 0, g(Yes, No, false, false, "", "27日")}, - {0x33fb, 0, 0, 0, g(Yes, No, false, false, "", "28日")}, - {0x33fc, 0, 0, 0, g(Yes, No, false, false, "", "29日")}, - {0x33fd, 0, 0, 0, g(Yes, No, false, false, "", "30日")}, - {0x33fe, 0, 0, 0, g(Yes, No, false, false, "", "31日")}, - {0x33ff, 0, 0, 0, g(Yes, No, false, false, "", "gal")}, - {0x3400, 0, 0, 0, f(Yes, false, "")}, - {0xa66f, 230, 1, 1, f(Yes, false, "")}, - {0xa670, 0, 0, 0, f(Yes, false, "")}, - {0xa674, 230, 1, 1, f(Yes, false, "")}, - {0xa67e, 0, 0, 0, f(Yes, false, "")}, - {0xa69c, 0, 0, 0, g(Yes, No, false, false, "", "ъ")}, - {0xa69d, 0, 0, 0, g(Yes, No, false, false, "", "ь")}, - {0xa69e, 230, 1, 1, f(Yes, false, "")}, - {0xa6a0, 0, 0, 0, f(Yes, false, "")}, - {0xa6f0, 230, 1, 1, f(Yes, false, "")}, - {0xa6f2, 0, 0, 0, f(Yes, false, "")}, - {0xa770, 0, 0, 0, g(Yes, No, false, false, "", "ꝯ")}, - {0xa771, 0, 0, 0, f(Yes, false, "")}, - {0xa7f8, 0, 0, 0, g(Yes, No, false, false, "", "Ħ")}, - {0xa7f9, 0, 0, 0, g(Yes, No, false, false, "", "œ")}, - {0xa7fa, 0, 0, 0, f(Yes, false, "")}, - {0xa806, 9, 1, 1, f(Yes, false, "")}, - {0xa807, 0, 0, 0, f(Yes, false, "")}, - {0xa8c4, 9, 1, 1, f(Yes, false, "")}, - {0xa8c5, 0, 0, 0, f(Yes, false, "")}, - {0xa8e0, 230, 1, 1, f(Yes, false, "")}, - {0xa8f2, 0, 0, 0, f(Yes, false, "")}, - {0xa92b, 220, 1, 1, f(Yes, false, "")}, - {0xa92e, 0, 0, 0, f(Yes, false, "")}, - {0xa953, 9, 1, 1, f(Yes, false, "")}, - {0xa954, 0, 0, 0, f(Yes, false, "")}, - {0xa9b3, 7, 1, 1, f(Yes, false, "")}, - {0xa9b4, 0, 0, 0, f(Yes, false, "")}, - {0xa9c0, 9, 1, 1, f(Yes, false, "")}, - {0xa9c1, 0, 0, 0, f(Yes, false, "")}, - {0xaab0, 230, 1, 1, f(Yes, false, "")}, - {0xaab1, 0, 0, 0, f(Yes, false, "")}, - {0xaab2, 230, 1, 1, f(Yes, false, "")}, - {0xaab4, 220, 1, 1, f(Yes, false, "")}, - {0xaab5, 0, 0, 0, f(Yes, false, "")}, - {0xaab7, 230, 1, 1, f(Yes, false, "")}, - {0xaab9, 0, 0, 0, f(Yes, false, "")}, - {0xaabe, 230, 1, 1, f(Yes, false, "")}, - {0xaac0, 0, 0, 0, f(Yes, false, "")}, - {0xaac1, 230, 1, 1, f(Yes, false, "")}, - {0xaac2, 0, 0, 0, f(Yes, false, "")}, - {0xaaf6, 9, 1, 1, f(Yes, false, "")}, - {0xaaf7, 0, 0, 0, f(Yes, false, "")}, - {0xab5c, 0, 0, 0, g(Yes, No, false, false, "", "ꜧ")}, - {0xab5d, 0, 0, 0, g(Yes, No, false, false, "", "ꬷ")}, - {0xab5e, 0, 0, 0, g(Yes, No, false, false, "", "ɫ")}, - {0xab5f, 0, 0, 0, g(Yes, No, false, false, "", "ꭒ")}, - {0xab60, 0, 0, 0, f(Yes, false, "")}, - {0xabed, 9, 1, 1, f(Yes, false, "")}, - {0xabee, 0, 0, 0, f(Yes, false, "")}, - {0xac00, 0, 0, 1, f(Yes, true, "")}, - {0xac01, 0, 0, 2, f(Yes, false, "")}, - {0xac1c, 0, 0, 1, f(Yes, true, "")}, - {0xac1d, 0, 0, 2, f(Yes, false, "")}, - {0xac38, 0, 0, 1, f(Yes, true, "")}, - {0xac39, 0, 0, 2, f(Yes, false, "")}, - {0xac54, 0, 0, 1, f(Yes, true, "")}, - {0xac55, 0, 0, 2, f(Yes, false, "")}, - {0xac70, 0, 0, 1, f(Yes, true, "")}, - {0xac71, 0, 0, 2, f(Yes, false, "")}, - {0xac8c, 0, 0, 1, f(Yes, true, "")}, - {0xac8d, 0, 0, 2, f(Yes, false, "")}, - {0xaca8, 0, 0, 1, f(Yes, true, "")}, - {0xaca9, 0, 0, 2, f(Yes, false, "")}, - {0xacc4, 0, 0, 1, f(Yes, true, "")}, - {0xacc5, 0, 0, 2, f(Yes, false, "")}, - {0xace0, 0, 0, 1, f(Yes, true, "")}, - {0xace1, 0, 0, 2, f(Yes, false, "")}, - {0xacfc, 0, 0, 1, f(Yes, true, "")}, - {0xacfd, 0, 0, 2, f(Yes, false, "")}, - {0xad18, 0, 0, 1, f(Yes, true, "")}, - {0xad19, 0, 0, 2, f(Yes, false, "")}, - {0xad34, 0, 0, 1, f(Yes, true, "")}, - {0xad35, 0, 0, 2, f(Yes, false, "")}, - {0xad50, 0, 0, 1, f(Yes, true, "")}, - {0xad51, 0, 0, 2, f(Yes, false, "")}, - {0xad6c, 0, 0, 1, f(Yes, true, "")}, - {0xad6d, 0, 0, 2, f(Yes, false, "")}, - {0xad88, 0, 0, 1, f(Yes, true, "")}, - {0xad89, 0, 0, 2, f(Yes, false, "")}, - {0xada4, 0, 0, 1, f(Yes, true, "")}, - {0xada5, 0, 0, 2, f(Yes, false, "")}, - {0xadc0, 0, 0, 1, f(Yes, true, "")}, - {0xadc1, 0, 0, 2, f(Yes, false, "")}, - {0xaddc, 0, 0, 1, f(Yes, true, "")}, - {0xaddd, 0, 0, 2, f(Yes, false, "")}, - {0xadf8, 0, 0, 1, f(Yes, true, "")}, - {0xadf9, 0, 0, 2, f(Yes, false, "")}, - {0xae14, 0, 0, 1, f(Yes, true, "")}, - {0xae15, 0, 0, 2, f(Yes, false, "")}, - {0xae30, 0, 0, 1, f(Yes, true, "")}, - {0xae31, 0, 0, 2, f(Yes, false, "")}, - {0xae4c, 0, 0, 1, f(Yes, true, "")}, - {0xae4d, 0, 0, 2, f(Yes, false, "")}, - {0xae68, 0, 0, 1, f(Yes, true, "")}, - {0xae69, 0, 0, 2, f(Yes, false, "")}, - {0xae84, 0, 0, 1, f(Yes, true, "")}, - {0xae85, 0, 0, 2, f(Yes, false, "")}, - {0xaea0, 0, 0, 1, f(Yes, true, "")}, - {0xaea1, 0, 0, 2, f(Yes, false, "")}, - {0xaebc, 0, 0, 1, f(Yes, true, "")}, - {0xaebd, 0, 0, 2, f(Yes, false, "")}, - {0xaed8, 0, 0, 1, f(Yes, true, "")}, - {0xaed9, 0, 0, 2, f(Yes, false, "")}, - {0xaef4, 0, 0, 1, f(Yes, true, "")}, - {0xaef5, 0, 0, 2, f(Yes, false, "")}, - {0xaf10, 0, 0, 1, f(Yes, true, "")}, - {0xaf11, 0, 0, 2, f(Yes, false, "")}, - {0xaf2c, 0, 0, 1, f(Yes, true, "")}, - {0xaf2d, 0, 0, 2, f(Yes, false, "")}, - {0xaf48, 0, 0, 1, f(Yes, true, "")}, - {0xaf49, 0, 0, 2, f(Yes, false, "")}, - {0xaf64, 0, 0, 1, f(Yes, true, "")}, - {0xaf65, 0, 0, 2, f(Yes, false, "")}, - {0xaf80, 0, 0, 1, f(Yes, true, "")}, - {0xaf81, 0, 0, 2, f(Yes, false, "")}, - {0xaf9c, 0, 0, 1, f(Yes, true, "")}, - {0xaf9d, 0, 0, 2, f(Yes, false, "")}, - {0xafb8, 0, 0, 1, f(Yes, true, "")}, - {0xafb9, 0, 0, 2, f(Yes, false, "")}, - {0xafd4, 0, 0, 1, f(Yes, true, "")}, - {0xafd5, 0, 0, 2, f(Yes, false, "")}, - {0xaff0, 0, 0, 1, f(Yes, true, "")}, - {0xaff1, 0, 0, 2, f(Yes, false, "")}, - {0xb00c, 0, 0, 1, f(Yes, true, "")}, - {0xb00d, 0, 0, 2, f(Yes, false, "")}, - {0xb028, 0, 0, 1, f(Yes, true, "")}, - {0xb029, 0, 0, 2, f(Yes, false, "")}, - {0xb044, 0, 0, 1, f(Yes, true, "")}, - {0xb045, 0, 0, 2, f(Yes, false, "")}, - {0xb060, 0, 0, 1, f(Yes, true, "")}, - {0xb061, 0, 0, 2, f(Yes, false, "")}, - {0xb07c, 0, 0, 1, f(Yes, true, "")}, - {0xb07d, 0, 0, 2, f(Yes, false, "")}, - {0xb098, 0, 0, 1, f(Yes, true, "")}, - {0xb099, 0, 0, 2, f(Yes, false, "")}, - {0xb0b4, 0, 0, 1, f(Yes, true, "")}, - {0xb0b5, 0, 0, 2, f(Yes, false, "")}, - {0xb0d0, 0, 0, 1, f(Yes, true, "")}, - {0xb0d1, 0, 0, 2, f(Yes, false, "")}, - {0xb0ec, 0, 0, 1, f(Yes, true, "")}, - {0xb0ed, 0, 0, 2, f(Yes, false, "")}, - {0xb108, 0, 0, 1, f(Yes, true, "")}, - {0xb109, 0, 0, 2, f(Yes, false, "")}, - {0xb124, 0, 0, 1, f(Yes, true, "")}, - {0xb125, 0, 0, 2, f(Yes, false, "")}, - {0xb140, 0, 0, 1, f(Yes, true, "")}, - {0xb141, 0, 0, 2, f(Yes, false, "")}, - {0xb15c, 0, 0, 1, f(Yes, true, "")}, - {0xb15d, 0, 0, 2, f(Yes, false, "")}, - {0xb178, 0, 0, 1, f(Yes, true, "")}, - {0xb179, 0, 0, 2, f(Yes, false, "")}, - {0xb194, 0, 0, 1, f(Yes, true, "")}, - {0xb195, 0, 0, 2, f(Yes, false, "")}, - {0xb1b0, 0, 0, 1, f(Yes, true, "")}, - {0xb1b1, 0, 0, 2, f(Yes, false, "")}, - {0xb1cc, 0, 0, 1, f(Yes, true, "")}, - {0xb1cd, 0, 0, 2, f(Yes, false, "")}, - {0xb1e8, 0, 0, 1, f(Yes, true, "")}, - {0xb1e9, 0, 0, 2, f(Yes, false, "")}, - {0xb204, 0, 0, 1, f(Yes, true, "")}, - {0xb205, 0, 0, 2, f(Yes, false, "")}, - {0xb220, 0, 0, 1, f(Yes, true, "")}, - {0xb221, 0, 0, 2, f(Yes, false, "")}, - {0xb23c, 0, 0, 1, f(Yes, true, "")}, - {0xb23d, 0, 0, 2, f(Yes, false, "")}, - {0xb258, 0, 0, 1, f(Yes, true, "")}, - {0xb259, 0, 0, 2, f(Yes, false, "")}, - {0xb274, 0, 0, 1, f(Yes, true, "")}, - {0xb275, 0, 0, 2, f(Yes, false, "")}, - {0xb290, 0, 0, 1, f(Yes, true, "")}, - {0xb291, 0, 0, 2, f(Yes, false, "")}, - {0xb2ac, 0, 0, 1, f(Yes, true, "")}, - {0xb2ad, 0, 0, 2, f(Yes, false, "")}, - {0xb2c8, 0, 0, 1, f(Yes, true, "")}, - {0xb2c9, 0, 0, 2, f(Yes, false, "")}, - {0xb2e4, 0, 0, 1, f(Yes, true, "")}, - {0xb2e5, 0, 0, 2, f(Yes, false, "")}, - {0xb300, 0, 0, 1, f(Yes, true, "")}, - {0xb301, 0, 0, 2, f(Yes, false, "")}, - {0xb31c, 0, 0, 1, f(Yes, true, "")}, - {0xb31d, 0, 0, 2, f(Yes, false, "")}, - {0xb338, 0, 0, 1, f(Yes, true, "")}, - {0xb339, 0, 0, 2, f(Yes, false, "")}, - {0xb354, 0, 0, 1, f(Yes, true, "")}, - {0xb355, 0, 0, 2, f(Yes, false, "")}, - {0xb370, 0, 0, 1, f(Yes, true, "")}, - {0xb371, 0, 0, 2, f(Yes, false, "")}, - {0xb38c, 0, 0, 1, f(Yes, true, "")}, - {0xb38d, 0, 0, 2, f(Yes, false, "")}, - {0xb3a8, 0, 0, 1, f(Yes, true, "")}, - {0xb3a9, 0, 0, 2, f(Yes, false, "")}, - {0xb3c4, 0, 0, 1, f(Yes, true, "")}, - {0xb3c5, 0, 0, 2, f(Yes, false, "")}, - {0xb3e0, 0, 0, 1, f(Yes, true, "")}, - {0xb3e1, 0, 0, 2, f(Yes, false, "")}, - {0xb3fc, 0, 0, 1, f(Yes, true, "")}, - {0xb3fd, 0, 0, 2, f(Yes, false, "")}, - {0xb418, 0, 0, 1, f(Yes, true, "")}, - {0xb419, 0, 0, 2, f(Yes, false, "")}, - {0xb434, 0, 0, 1, f(Yes, true, "")}, - {0xb435, 0, 0, 2, f(Yes, false, "")}, - {0xb450, 0, 0, 1, f(Yes, true, "")}, - {0xb451, 0, 0, 2, f(Yes, false, "")}, - {0xb46c, 0, 0, 1, f(Yes, true, "")}, - {0xb46d, 0, 0, 2, f(Yes, false, "")}, - {0xb488, 0, 0, 1, f(Yes, true, "")}, - {0xb489, 0, 0, 2, f(Yes, false, "")}, - {0xb4a4, 0, 0, 1, f(Yes, true, "")}, - {0xb4a5, 0, 0, 2, f(Yes, false, "")}, - {0xb4c0, 0, 0, 1, f(Yes, true, "")}, - {0xb4c1, 0, 0, 2, f(Yes, false, "")}, - {0xb4dc, 0, 0, 1, f(Yes, true, "")}, - {0xb4dd, 0, 0, 2, f(Yes, false, "")}, - {0xb4f8, 0, 0, 1, f(Yes, true, "")}, - {0xb4f9, 0, 0, 2, f(Yes, false, "")}, - {0xb514, 0, 0, 1, f(Yes, true, "")}, - {0xb515, 0, 0, 2, f(Yes, false, "")}, - {0xb530, 0, 0, 1, f(Yes, true, "")}, - {0xb531, 0, 0, 2, f(Yes, false, "")}, - {0xb54c, 0, 0, 1, f(Yes, true, "")}, - {0xb54d, 0, 0, 2, f(Yes, false, "")}, - {0xb568, 0, 0, 1, f(Yes, true, "")}, - {0xb569, 0, 0, 2, f(Yes, false, "")}, - {0xb584, 0, 0, 1, f(Yes, true, "")}, - {0xb585, 0, 0, 2, f(Yes, false, "")}, - {0xb5a0, 0, 0, 1, f(Yes, true, "")}, - {0xb5a1, 0, 0, 2, f(Yes, false, "")}, - {0xb5bc, 0, 0, 1, f(Yes, true, "")}, - {0xb5bd, 0, 0, 2, f(Yes, false, "")}, - {0xb5d8, 0, 0, 1, f(Yes, true, "")}, - {0xb5d9, 0, 0, 2, f(Yes, false, "")}, - {0xb5f4, 0, 0, 1, f(Yes, true, "")}, - {0xb5f5, 0, 0, 2, f(Yes, false, "")}, - {0xb610, 0, 0, 1, f(Yes, true, "")}, - {0xb611, 0, 0, 2, f(Yes, false, "")}, - {0xb62c, 0, 0, 1, f(Yes, true, "")}, - {0xb62d, 0, 0, 2, f(Yes, false, "")}, - {0xb648, 0, 0, 1, f(Yes, true, "")}, - {0xb649, 0, 0, 2, f(Yes, false, "")}, - {0xb664, 0, 0, 1, f(Yes, true, "")}, - {0xb665, 0, 0, 2, f(Yes, false, "")}, - {0xb680, 0, 0, 1, f(Yes, true, "")}, - {0xb681, 0, 0, 2, f(Yes, false, "")}, - {0xb69c, 0, 0, 1, f(Yes, true, "")}, - {0xb69d, 0, 0, 2, f(Yes, false, "")}, - {0xb6b8, 0, 0, 1, f(Yes, true, "")}, - {0xb6b9, 0, 0, 2, f(Yes, false, "")}, - {0xb6d4, 0, 0, 1, f(Yes, true, "")}, - {0xb6d5, 0, 0, 2, f(Yes, false, "")}, - {0xb6f0, 0, 0, 1, f(Yes, true, "")}, - {0xb6f1, 0, 0, 2, f(Yes, false, "")}, - {0xb70c, 0, 0, 1, f(Yes, true, "")}, - {0xb70d, 0, 0, 2, f(Yes, false, "")}, - {0xb728, 0, 0, 1, f(Yes, true, "")}, - {0xb729, 0, 0, 2, f(Yes, false, "")}, - {0xb744, 0, 0, 1, f(Yes, true, "")}, - {0xb745, 0, 0, 2, f(Yes, false, "")}, - {0xb760, 0, 0, 1, f(Yes, true, "")}, - {0xb761, 0, 0, 2, f(Yes, false, "")}, - {0xb77c, 0, 0, 1, f(Yes, true, "")}, - {0xb77d, 0, 0, 2, f(Yes, false, "")}, - {0xb798, 0, 0, 1, f(Yes, true, "")}, - {0xb799, 0, 0, 2, f(Yes, false, "")}, - {0xb7b4, 0, 0, 1, f(Yes, true, "")}, - {0xb7b5, 0, 0, 2, f(Yes, false, "")}, - {0xb7d0, 0, 0, 1, f(Yes, true, "")}, - {0xb7d1, 0, 0, 2, f(Yes, false, "")}, - {0xb7ec, 0, 0, 1, f(Yes, true, "")}, - {0xb7ed, 0, 0, 2, f(Yes, false, "")}, - {0xb808, 0, 0, 1, f(Yes, true, "")}, - {0xb809, 0, 0, 2, f(Yes, false, "")}, - {0xb824, 0, 0, 1, f(Yes, true, "")}, - {0xb825, 0, 0, 2, f(Yes, false, "")}, - {0xb840, 0, 0, 1, f(Yes, true, "")}, - {0xb841, 0, 0, 2, f(Yes, false, "")}, - {0xb85c, 0, 0, 1, f(Yes, true, "")}, - {0xb85d, 0, 0, 2, f(Yes, false, "")}, - {0xb878, 0, 0, 1, f(Yes, true, "")}, - {0xb879, 0, 0, 2, f(Yes, false, "")}, - {0xb894, 0, 0, 1, f(Yes, true, "")}, - {0xb895, 0, 0, 2, f(Yes, false, "")}, - {0xb8b0, 0, 0, 1, f(Yes, true, "")}, - {0xb8b1, 0, 0, 2, f(Yes, false, "")}, - {0xb8cc, 0, 0, 1, f(Yes, true, "")}, - {0xb8cd, 0, 0, 2, f(Yes, false, "")}, - {0xb8e8, 0, 0, 1, f(Yes, true, "")}, - {0xb8e9, 0, 0, 2, f(Yes, false, "")}, - {0xb904, 0, 0, 1, f(Yes, true, "")}, - {0xb905, 0, 0, 2, f(Yes, false, "")}, - {0xb920, 0, 0, 1, f(Yes, true, "")}, - {0xb921, 0, 0, 2, f(Yes, false, "")}, - {0xb93c, 0, 0, 1, f(Yes, true, "")}, - {0xb93d, 0, 0, 2, f(Yes, false, "")}, - {0xb958, 0, 0, 1, f(Yes, true, "")}, - {0xb959, 0, 0, 2, f(Yes, false, "")}, - {0xb974, 0, 0, 1, f(Yes, true, "")}, - {0xb975, 0, 0, 2, f(Yes, false, "")}, - {0xb990, 0, 0, 1, f(Yes, true, "")}, - {0xb991, 0, 0, 2, f(Yes, false, "")}, - {0xb9ac, 0, 0, 1, f(Yes, true, "")}, - {0xb9ad, 0, 0, 2, f(Yes, false, "")}, - {0xb9c8, 0, 0, 1, f(Yes, true, "")}, - {0xb9c9, 0, 0, 2, f(Yes, false, "")}, - {0xb9e4, 0, 0, 1, f(Yes, true, "")}, - {0xb9e5, 0, 0, 2, f(Yes, false, "")}, - {0xba00, 0, 0, 1, f(Yes, true, "")}, - {0xba01, 0, 0, 2, f(Yes, false, "")}, - {0xba1c, 0, 0, 1, f(Yes, true, "")}, - {0xba1d, 0, 0, 2, f(Yes, false, "")}, - {0xba38, 0, 0, 1, f(Yes, true, "")}, - {0xba39, 0, 0, 2, f(Yes, false, "")}, - {0xba54, 0, 0, 1, f(Yes, true, "")}, - {0xba55, 0, 0, 2, f(Yes, false, "")}, - {0xba70, 0, 0, 1, f(Yes, true, "")}, - {0xba71, 0, 0, 2, f(Yes, false, "")}, - {0xba8c, 0, 0, 1, f(Yes, true, "")}, - {0xba8d, 0, 0, 2, f(Yes, false, "")}, - {0xbaa8, 0, 0, 1, f(Yes, true, "")}, - {0xbaa9, 0, 0, 2, f(Yes, false, "")}, - {0xbac4, 0, 0, 1, f(Yes, true, "")}, - {0xbac5, 0, 0, 2, f(Yes, false, "")}, - {0xbae0, 0, 0, 1, f(Yes, true, "")}, - {0xbae1, 0, 0, 2, f(Yes, false, "")}, - {0xbafc, 0, 0, 1, f(Yes, true, "")}, - {0xbafd, 0, 0, 2, f(Yes, false, "")}, - {0xbb18, 0, 0, 1, f(Yes, true, "")}, - {0xbb19, 0, 0, 2, f(Yes, false, "")}, - {0xbb34, 0, 0, 1, f(Yes, true, "")}, - {0xbb35, 0, 0, 2, f(Yes, false, "")}, - {0xbb50, 0, 0, 1, f(Yes, true, "")}, - {0xbb51, 0, 0, 2, f(Yes, false, "")}, - {0xbb6c, 0, 0, 1, f(Yes, true, "")}, - {0xbb6d, 0, 0, 2, f(Yes, false, "")}, - {0xbb88, 0, 0, 1, f(Yes, true, "")}, - {0xbb89, 0, 0, 2, f(Yes, false, "")}, - {0xbba4, 0, 0, 1, f(Yes, true, "")}, - {0xbba5, 0, 0, 2, f(Yes, false, "")}, - {0xbbc0, 0, 0, 1, f(Yes, true, "")}, - {0xbbc1, 0, 0, 2, f(Yes, false, "")}, - {0xbbdc, 0, 0, 1, f(Yes, true, "")}, - {0xbbdd, 0, 0, 2, f(Yes, false, "")}, - {0xbbf8, 0, 0, 1, f(Yes, true, "")}, - {0xbbf9, 0, 0, 2, f(Yes, false, "")}, - {0xbc14, 0, 0, 1, f(Yes, true, "")}, - {0xbc15, 0, 0, 2, f(Yes, false, "")}, - {0xbc30, 0, 0, 1, f(Yes, true, "")}, - {0xbc31, 0, 0, 2, f(Yes, false, "")}, - {0xbc4c, 0, 0, 1, f(Yes, true, "")}, - {0xbc4d, 0, 0, 2, f(Yes, false, "")}, - {0xbc68, 0, 0, 1, f(Yes, true, "")}, - {0xbc69, 0, 0, 2, f(Yes, false, "")}, - {0xbc84, 0, 0, 1, f(Yes, true, "")}, - {0xbc85, 0, 0, 2, f(Yes, false, "")}, - {0xbca0, 0, 0, 1, f(Yes, true, "")}, - {0xbca1, 0, 0, 2, f(Yes, false, "")}, - {0xbcbc, 0, 0, 1, f(Yes, true, "")}, - {0xbcbd, 0, 0, 2, f(Yes, false, "")}, - {0xbcd8, 0, 0, 1, f(Yes, true, "")}, - {0xbcd9, 0, 0, 2, f(Yes, false, "")}, - {0xbcf4, 0, 0, 1, f(Yes, true, "")}, - {0xbcf5, 0, 0, 2, f(Yes, false, "")}, - {0xbd10, 0, 0, 1, f(Yes, true, "")}, - {0xbd11, 0, 0, 2, f(Yes, false, "")}, - {0xbd2c, 0, 0, 1, f(Yes, true, "")}, - {0xbd2d, 0, 0, 2, f(Yes, false, "")}, - {0xbd48, 0, 0, 1, f(Yes, true, "")}, - {0xbd49, 0, 0, 2, f(Yes, false, "")}, - {0xbd64, 0, 0, 1, f(Yes, true, "")}, - {0xbd65, 0, 0, 2, f(Yes, false, "")}, - {0xbd80, 0, 0, 1, f(Yes, true, "")}, - {0xbd81, 0, 0, 2, f(Yes, false, "")}, - {0xbd9c, 0, 0, 1, f(Yes, true, "")}, - {0xbd9d, 0, 0, 2, f(Yes, false, "")}, - {0xbdb8, 0, 0, 1, f(Yes, true, "")}, - {0xbdb9, 0, 0, 2, f(Yes, false, "")}, - {0xbdd4, 0, 0, 1, f(Yes, true, "")}, - {0xbdd5, 0, 0, 2, f(Yes, false, "")}, - {0xbdf0, 0, 0, 1, f(Yes, true, "")}, - {0xbdf1, 0, 0, 2, f(Yes, false, "")}, - {0xbe0c, 0, 0, 1, f(Yes, true, "")}, - {0xbe0d, 0, 0, 2, f(Yes, false, "")}, - {0xbe28, 0, 0, 1, f(Yes, true, "")}, - {0xbe29, 0, 0, 2, f(Yes, false, "")}, - {0xbe44, 0, 0, 1, f(Yes, true, "")}, - {0xbe45, 0, 0, 2, f(Yes, false, "")}, - {0xbe60, 0, 0, 1, f(Yes, true, "")}, - {0xbe61, 0, 0, 2, f(Yes, false, "")}, - {0xbe7c, 0, 0, 1, f(Yes, true, "")}, - {0xbe7d, 0, 0, 2, f(Yes, false, "")}, - {0xbe98, 0, 0, 1, f(Yes, true, "")}, - {0xbe99, 0, 0, 2, f(Yes, false, "")}, - {0xbeb4, 0, 0, 1, f(Yes, true, "")}, - {0xbeb5, 0, 0, 2, f(Yes, false, "")}, - {0xbed0, 0, 0, 1, f(Yes, true, "")}, - {0xbed1, 0, 0, 2, f(Yes, false, "")}, - {0xbeec, 0, 0, 1, f(Yes, true, "")}, - {0xbeed, 0, 0, 2, f(Yes, false, "")}, - {0xbf08, 0, 0, 1, f(Yes, true, "")}, - {0xbf09, 0, 0, 2, f(Yes, false, "")}, - {0xbf24, 0, 0, 1, f(Yes, true, "")}, - {0xbf25, 0, 0, 2, f(Yes, false, "")}, - {0xbf40, 0, 0, 1, f(Yes, true, "")}, - {0xbf41, 0, 0, 2, f(Yes, false, "")}, - {0xbf5c, 0, 0, 1, f(Yes, true, "")}, - {0xbf5d, 0, 0, 2, f(Yes, false, "")}, - {0xbf78, 0, 0, 1, f(Yes, true, "")}, - {0xbf79, 0, 0, 2, f(Yes, false, "")}, - {0xbf94, 0, 0, 1, f(Yes, true, "")}, - {0xbf95, 0, 0, 2, f(Yes, false, "")}, - {0xbfb0, 0, 0, 1, f(Yes, true, "")}, - {0xbfb1, 0, 0, 2, f(Yes, false, "")}, - {0xbfcc, 0, 0, 1, f(Yes, true, "")}, - {0xbfcd, 0, 0, 2, f(Yes, false, "")}, - {0xbfe8, 0, 0, 1, f(Yes, true, "")}, - {0xbfe9, 0, 0, 2, f(Yes, false, "")}, - {0xc004, 0, 0, 1, f(Yes, true, "")}, - {0xc005, 0, 0, 2, f(Yes, false, "")}, - {0xc020, 0, 0, 1, f(Yes, true, "")}, - {0xc021, 0, 0, 2, f(Yes, false, "")}, - {0xc03c, 0, 0, 1, f(Yes, true, "")}, - {0xc03d, 0, 0, 2, f(Yes, false, "")}, - {0xc058, 0, 0, 1, f(Yes, true, "")}, - {0xc059, 0, 0, 2, f(Yes, false, "")}, - {0xc074, 0, 0, 1, f(Yes, true, "")}, - {0xc075, 0, 0, 2, f(Yes, false, "")}, - {0xc090, 0, 0, 1, f(Yes, true, "")}, - {0xc091, 0, 0, 2, f(Yes, false, "")}, - {0xc0ac, 0, 0, 1, f(Yes, true, "")}, - {0xc0ad, 0, 0, 2, f(Yes, false, "")}, - {0xc0c8, 0, 0, 1, f(Yes, true, "")}, - {0xc0c9, 0, 0, 2, f(Yes, false, "")}, - {0xc0e4, 0, 0, 1, f(Yes, true, "")}, - {0xc0e5, 0, 0, 2, f(Yes, false, "")}, - {0xc100, 0, 0, 1, f(Yes, true, "")}, - {0xc101, 0, 0, 2, f(Yes, false, "")}, - {0xc11c, 0, 0, 1, f(Yes, true, "")}, - {0xc11d, 0, 0, 2, f(Yes, false, "")}, - {0xc138, 0, 0, 1, f(Yes, true, "")}, - {0xc139, 0, 0, 2, f(Yes, false, "")}, - {0xc154, 0, 0, 1, f(Yes, true, "")}, - {0xc155, 0, 0, 2, f(Yes, false, "")}, - {0xc170, 0, 0, 1, f(Yes, true, "")}, - {0xc171, 0, 0, 2, f(Yes, false, "")}, - {0xc18c, 0, 0, 1, f(Yes, true, "")}, - {0xc18d, 0, 0, 2, f(Yes, false, "")}, - {0xc1a8, 0, 0, 1, f(Yes, true, "")}, - {0xc1a9, 0, 0, 2, f(Yes, false, "")}, - {0xc1c4, 0, 0, 1, f(Yes, true, "")}, - {0xc1c5, 0, 0, 2, f(Yes, false, "")}, - {0xc1e0, 0, 0, 1, f(Yes, true, "")}, - {0xc1e1, 0, 0, 2, f(Yes, false, "")}, - {0xc1fc, 0, 0, 1, f(Yes, true, "")}, - {0xc1fd, 0, 0, 2, f(Yes, false, "")}, - {0xc218, 0, 0, 1, f(Yes, true, "")}, - {0xc219, 0, 0, 2, f(Yes, false, "")}, - {0xc234, 0, 0, 1, f(Yes, true, "")}, - {0xc235, 0, 0, 2, f(Yes, false, "")}, - {0xc250, 0, 0, 1, f(Yes, true, "")}, - {0xc251, 0, 0, 2, f(Yes, false, "")}, - {0xc26c, 0, 0, 1, f(Yes, true, "")}, - {0xc26d, 0, 0, 2, f(Yes, false, "")}, - {0xc288, 0, 0, 1, f(Yes, true, "")}, - {0xc289, 0, 0, 2, f(Yes, false, "")}, - {0xc2a4, 0, 0, 1, f(Yes, true, "")}, - {0xc2a5, 0, 0, 2, f(Yes, false, "")}, - {0xc2c0, 0, 0, 1, f(Yes, true, "")}, - {0xc2c1, 0, 0, 2, f(Yes, false, "")}, - {0xc2dc, 0, 0, 1, f(Yes, true, "")}, - {0xc2dd, 0, 0, 2, f(Yes, false, "")}, - {0xc2f8, 0, 0, 1, f(Yes, true, "")}, - {0xc2f9, 0, 0, 2, f(Yes, false, "")}, - {0xc314, 0, 0, 1, f(Yes, true, "")}, - {0xc315, 0, 0, 2, f(Yes, false, "")}, - {0xc330, 0, 0, 1, f(Yes, true, "")}, - {0xc331, 0, 0, 2, f(Yes, false, "")}, - {0xc34c, 0, 0, 1, f(Yes, true, "")}, - {0xc34d, 0, 0, 2, f(Yes, false, "")}, - {0xc368, 0, 0, 1, f(Yes, true, "")}, - {0xc369, 0, 0, 2, f(Yes, false, "")}, - {0xc384, 0, 0, 1, f(Yes, true, "")}, - {0xc385, 0, 0, 2, f(Yes, false, "")}, - {0xc3a0, 0, 0, 1, f(Yes, true, "")}, - {0xc3a1, 0, 0, 2, f(Yes, false, "")}, - {0xc3bc, 0, 0, 1, f(Yes, true, "")}, - {0xc3bd, 0, 0, 2, f(Yes, false, "")}, - {0xc3d8, 0, 0, 1, f(Yes, true, "")}, - {0xc3d9, 0, 0, 2, f(Yes, false, "")}, - {0xc3f4, 0, 0, 1, f(Yes, true, "")}, - {0xc3f5, 0, 0, 2, f(Yes, false, "")}, - {0xc410, 0, 0, 1, f(Yes, true, "")}, - {0xc411, 0, 0, 2, f(Yes, false, "")}, - {0xc42c, 0, 0, 1, f(Yes, true, "")}, - {0xc42d, 0, 0, 2, f(Yes, false, "")}, - {0xc448, 0, 0, 1, f(Yes, true, "")}, - {0xc449, 0, 0, 2, f(Yes, false, "")}, - {0xc464, 0, 0, 1, f(Yes, true, "")}, - {0xc465, 0, 0, 2, f(Yes, false, "")}, - {0xc480, 0, 0, 1, f(Yes, true, "")}, - {0xc481, 0, 0, 2, f(Yes, false, "")}, - {0xc49c, 0, 0, 1, f(Yes, true, "")}, - {0xc49d, 0, 0, 2, f(Yes, false, "")}, - {0xc4b8, 0, 0, 1, f(Yes, true, "")}, - {0xc4b9, 0, 0, 2, f(Yes, false, "")}, - {0xc4d4, 0, 0, 1, f(Yes, true, "")}, - {0xc4d5, 0, 0, 2, f(Yes, false, "")}, - {0xc4f0, 0, 0, 1, f(Yes, true, "")}, - {0xc4f1, 0, 0, 2, f(Yes, false, "")}, - {0xc50c, 0, 0, 1, f(Yes, true, "")}, - {0xc50d, 0, 0, 2, f(Yes, false, "")}, - {0xc528, 0, 0, 1, f(Yes, true, "")}, - {0xc529, 0, 0, 2, f(Yes, false, "")}, - {0xc544, 0, 0, 1, f(Yes, true, "")}, - {0xc545, 0, 0, 2, f(Yes, false, "")}, - {0xc560, 0, 0, 1, f(Yes, true, "")}, - {0xc561, 0, 0, 2, f(Yes, false, "")}, - {0xc57c, 0, 0, 1, f(Yes, true, "")}, - {0xc57d, 0, 0, 2, f(Yes, false, "")}, - {0xc598, 0, 0, 1, f(Yes, true, "")}, - {0xc599, 0, 0, 2, f(Yes, false, "")}, - {0xc5b4, 0, 0, 1, f(Yes, true, "")}, - {0xc5b5, 0, 0, 2, f(Yes, false, "")}, - {0xc5d0, 0, 0, 1, f(Yes, true, "")}, - {0xc5d1, 0, 0, 2, f(Yes, false, "")}, - {0xc5ec, 0, 0, 1, f(Yes, true, "")}, - {0xc5ed, 0, 0, 2, f(Yes, false, "")}, - {0xc608, 0, 0, 1, f(Yes, true, "")}, - {0xc609, 0, 0, 2, f(Yes, false, "")}, - {0xc624, 0, 0, 1, f(Yes, true, "")}, - {0xc625, 0, 0, 2, f(Yes, false, "")}, - {0xc640, 0, 0, 1, f(Yes, true, "")}, - {0xc641, 0, 0, 2, f(Yes, false, "")}, - {0xc65c, 0, 0, 1, f(Yes, true, "")}, - {0xc65d, 0, 0, 2, f(Yes, false, "")}, - {0xc678, 0, 0, 1, f(Yes, true, "")}, - {0xc679, 0, 0, 2, f(Yes, false, "")}, - {0xc694, 0, 0, 1, f(Yes, true, "")}, - {0xc695, 0, 0, 2, f(Yes, false, "")}, - {0xc6b0, 0, 0, 1, f(Yes, true, "")}, - {0xc6b1, 0, 0, 2, f(Yes, false, "")}, - {0xc6cc, 0, 0, 1, f(Yes, true, "")}, - {0xc6cd, 0, 0, 2, f(Yes, false, "")}, - {0xc6e8, 0, 0, 1, f(Yes, true, "")}, - {0xc6e9, 0, 0, 2, f(Yes, false, "")}, - {0xc704, 0, 0, 1, f(Yes, true, "")}, - {0xc705, 0, 0, 2, f(Yes, false, "")}, - {0xc720, 0, 0, 1, f(Yes, true, "")}, - {0xc721, 0, 0, 2, f(Yes, false, "")}, - {0xc73c, 0, 0, 1, f(Yes, true, "")}, - {0xc73d, 0, 0, 2, f(Yes, false, "")}, - {0xc758, 0, 0, 1, f(Yes, true, "")}, - {0xc759, 0, 0, 2, f(Yes, false, "")}, - {0xc774, 0, 0, 1, f(Yes, true, "")}, - {0xc775, 0, 0, 2, f(Yes, false, "")}, - {0xc790, 0, 0, 1, f(Yes, true, "")}, - {0xc791, 0, 0, 2, f(Yes, false, "")}, - {0xc7ac, 0, 0, 1, f(Yes, true, "")}, - {0xc7ad, 0, 0, 2, f(Yes, false, "")}, - {0xc7c8, 0, 0, 1, f(Yes, true, "")}, - {0xc7c9, 0, 0, 2, f(Yes, false, "")}, - {0xc7e4, 0, 0, 1, f(Yes, true, "")}, - {0xc7e5, 0, 0, 2, f(Yes, false, "")}, - {0xc800, 0, 0, 1, f(Yes, true, "")}, - {0xc801, 0, 0, 2, f(Yes, false, "")}, - {0xc81c, 0, 0, 1, f(Yes, true, "")}, - {0xc81d, 0, 0, 2, f(Yes, false, "")}, - {0xc838, 0, 0, 1, f(Yes, true, "")}, - {0xc839, 0, 0, 2, f(Yes, false, "")}, - {0xc854, 0, 0, 1, f(Yes, true, "")}, - {0xc855, 0, 0, 2, f(Yes, false, "")}, - {0xc870, 0, 0, 1, f(Yes, true, "")}, - {0xc871, 0, 0, 2, f(Yes, false, "")}, - {0xc88c, 0, 0, 1, f(Yes, true, "")}, - {0xc88d, 0, 0, 2, f(Yes, false, "")}, - {0xc8a8, 0, 0, 1, f(Yes, true, "")}, - {0xc8a9, 0, 0, 2, f(Yes, false, "")}, - {0xc8c4, 0, 0, 1, f(Yes, true, "")}, - {0xc8c5, 0, 0, 2, f(Yes, false, "")}, - {0xc8e0, 0, 0, 1, f(Yes, true, "")}, - {0xc8e1, 0, 0, 2, f(Yes, false, "")}, - {0xc8fc, 0, 0, 1, f(Yes, true, "")}, - {0xc8fd, 0, 0, 2, f(Yes, false, "")}, - {0xc918, 0, 0, 1, f(Yes, true, "")}, - {0xc919, 0, 0, 2, f(Yes, false, "")}, - {0xc934, 0, 0, 1, f(Yes, true, "")}, - {0xc935, 0, 0, 2, f(Yes, false, "")}, - {0xc950, 0, 0, 1, f(Yes, true, "")}, - {0xc951, 0, 0, 2, f(Yes, false, "")}, - {0xc96c, 0, 0, 1, f(Yes, true, "")}, - {0xc96d, 0, 0, 2, f(Yes, false, "")}, - {0xc988, 0, 0, 1, f(Yes, true, "")}, - {0xc989, 0, 0, 2, f(Yes, false, "")}, - {0xc9a4, 0, 0, 1, f(Yes, true, "")}, - {0xc9a5, 0, 0, 2, f(Yes, false, "")}, - {0xc9c0, 0, 0, 1, f(Yes, true, "")}, - {0xc9c1, 0, 0, 2, f(Yes, false, "")}, - {0xc9dc, 0, 0, 1, f(Yes, true, "")}, - {0xc9dd, 0, 0, 2, f(Yes, false, "")}, - {0xc9f8, 0, 0, 1, f(Yes, true, "")}, - {0xc9f9, 0, 0, 2, f(Yes, false, "")}, - {0xca14, 0, 0, 1, f(Yes, true, "")}, - {0xca15, 0, 0, 2, f(Yes, false, "")}, - {0xca30, 0, 0, 1, f(Yes, true, "")}, - {0xca31, 0, 0, 2, f(Yes, false, "")}, - {0xca4c, 0, 0, 1, f(Yes, true, "")}, - {0xca4d, 0, 0, 2, f(Yes, false, "")}, - {0xca68, 0, 0, 1, f(Yes, true, "")}, - {0xca69, 0, 0, 2, f(Yes, false, "")}, - {0xca84, 0, 0, 1, f(Yes, true, "")}, - {0xca85, 0, 0, 2, f(Yes, false, "")}, - {0xcaa0, 0, 0, 1, f(Yes, true, "")}, - {0xcaa1, 0, 0, 2, f(Yes, false, "")}, - {0xcabc, 0, 0, 1, f(Yes, true, "")}, - {0xcabd, 0, 0, 2, f(Yes, false, "")}, - {0xcad8, 0, 0, 1, f(Yes, true, "")}, - {0xcad9, 0, 0, 2, f(Yes, false, "")}, - {0xcaf4, 0, 0, 1, f(Yes, true, "")}, - {0xcaf5, 0, 0, 2, f(Yes, false, "")}, - {0xcb10, 0, 0, 1, f(Yes, true, "")}, - {0xcb11, 0, 0, 2, f(Yes, false, "")}, - {0xcb2c, 0, 0, 1, f(Yes, true, "")}, - {0xcb2d, 0, 0, 2, f(Yes, false, "")}, - {0xcb48, 0, 0, 1, f(Yes, true, "")}, - {0xcb49, 0, 0, 2, f(Yes, false, "")}, - {0xcb64, 0, 0, 1, f(Yes, true, "")}, - {0xcb65, 0, 0, 2, f(Yes, false, "")}, - {0xcb80, 0, 0, 1, f(Yes, true, "")}, - {0xcb81, 0, 0, 2, f(Yes, false, "")}, - {0xcb9c, 0, 0, 1, f(Yes, true, "")}, - {0xcb9d, 0, 0, 2, f(Yes, false, "")}, - {0xcbb8, 0, 0, 1, f(Yes, true, "")}, - {0xcbb9, 0, 0, 2, f(Yes, false, "")}, - {0xcbd4, 0, 0, 1, f(Yes, true, "")}, - {0xcbd5, 0, 0, 2, f(Yes, false, "")}, - {0xcbf0, 0, 0, 1, f(Yes, true, "")}, - {0xcbf1, 0, 0, 2, f(Yes, false, "")}, - {0xcc0c, 0, 0, 1, f(Yes, true, "")}, - {0xcc0d, 0, 0, 2, f(Yes, false, "")}, - {0xcc28, 0, 0, 1, f(Yes, true, "")}, - {0xcc29, 0, 0, 2, f(Yes, false, "")}, - {0xcc44, 0, 0, 1, f(Yes, true, "")}, - {0xcc45, 0, 0, 2, f(Yes, false, "")}, - {0xcc60, 0, 0, 1, f(Yes, true, "")}, - {0xcc61, 0, 0, 2, f(Yes, false, "")}, - {0xcc7c, 0, 0, 1, f(Yes, true, "")}, - {0xcc7d, 0, 0, 2, f(Yes, false, "")}, - {0xcc98, 0, 0, 1, f(Yes, true, "")}, - {0xcc99, 0, 0, 2, f(Yes, false, "")}, - {0xccb4, 0, 0, 1, f(Yes, true, "")}, - {0xccb5, 0, 0, 2, f(Yes, false, "")}, - {0xccd0, 0, 0, 1, f(Yes, true, "")}, - {0xccd1, 0, 0, 2, f(Yes, false, "")}, - {0xccec, 0, 0, 1, f(Yes, true, "")}, - {0xcced, 0, 0, 2, f(Yes, false, "")}, - {0xcd08, 0, 0, 1, f(Yes, true, "")}, - {0xcd09, 0, 0, 2, f(Yes, false, "")}, - {0xcd24, 0, 0, 1, f(Yes, true, "")}, - {0xcd25, 0, 0, 2, f(Yes, false, "")}, - {0xcd40, 0, 0, 1, f(Yes, true, "")}, - {0xcd41, 0, 0, 2, f(Yes, false, "")}, - {0xcd5c, 0, 0, 1, f(Yes, true, "")}, - {0xcd5d, 0, 0, 2, f(Yes, false, "")}, - {0xcd78, 0, 0, 1, f(Yes, true, "")}, - {0xcd79, 0, 0, 2, f(Yes, false, "")}, - {0xcd94, 0, 0, 1, f(Yes, true, "")}, - {0xcd95, 0, 0, 2, f(Yes, false, "")}, - {0xcdb0, 0, 0, 1, f(Yes, true, "")}, - {0xcdb1, 0, 0, 2, f(Yes, false, "")}, - {0xcdcc, 0, 0, 1, f(Yes, true, "")}, - {0xcdcd, 0, 0, 2, f(Yes, false, "")}, - {0xcde8, 0, 0, 1, f(Yes, true, "")}, - {0xcde9, 0, 0, 2, f(Yes, false, "")}, - {0xce04, 0, 0, 1, f(Yes, true, "")}, - {0xce05, 0, 0, 2, f(Yes, false, "")}, - {0xce20, 0, 0, 1, f(Yes, true, "")}, - {0xce21, 0, 0, 2, f(Yes, false, "")}, - {0xce3c, 0, 0, 1, f(Yes, true, "")}, - {0xce3d, 0, 0, 2, f(Yes, false, "")}, - {0xce58, 0, 0, 1, f(Yes, true, "")}, - {0xce59, 0, 0, 2, f(Yes, false, "")}, - {0xce74, 0, 0, 1, f(Yes, true, "")}, - {0xce75, 0, 0, 2, f(Yes, false, "")}, - {0xce90, 0, 0, 1, f(Yes, true, "")}, - {0xce91, 0, 0, 2, f(Yes, false, "")}, - {0xceac, 0, 0, 1, f(Yes, true, "")}, - {0xcead, 0, 0, 2, f(Yes, false, "")}, - {0xcec8, 0, 0, 1, f(Yes, true, "")}, - {0xcec9, 0, 0, 2, f(Yes, false, "")}, - {0xcee4, 0, 0, 1, f(Yes, true, "")}, - {0xcee5, 0, 0, 2, f(Yes, false, "")}, - {0xcf00, 0, 0, 1, f(Yes, true, "")}, - {0xcf01, 0, 0, 2, f(Yes, false, "")}, - {0xcf1c, 0, 0, 1, f(Yes, true, "")}, - {0xcf1d, 0, 0, 2, f(Yes, false, "")}, - {0xcf38, 0, 0, 1, f(Yes, true, "")}, - {0xcf39, 0, 0, 2, f(Yes, false, "")}, - {0xcf54, 0, 0, 1, f(Yes, true, "")}, - {0xcf55, 0, 0, 2, f(Yes, false, "")}, - {0xcf70, 0, 0, 1, f(Yes, true, "")}, - {0xcf71, 0, 0, 2, f(Yes, false, "")}, - {0xcf8c, 0, 0, 1, f(Yes, true, "")}, - {0xcf8d, 0, 0, 2, f(Yes, false, "")}, - {0xcfa8, 0, 0, 1, f(Yes, true, "")}, - {0xcfa9, 0, 0, 2, f(Yes, false, "")}, - {0xcfc4, 0, 0, 1, f(Yes, true, "")}, - {0xcfc5, 0, 0, 2, f(Yes, false, "")}, - {0xcfe0, 0, 0, 1, f(Yes, true, "")}, - {0xcfe1, 0, 0, 2, f(Yes, false, "")}, - {0xcffc, 0, 0, 1, f(Yes, true, "")}, - {0xcffd, 0, 0, 2, f(Yes, false, "")}, - {0xd018, 0, 0, 1, f(Yes, true, "")}, - {0xd019, 0, 0, 2, f(Yes, false, "")}, - {0xd034, 0, 0, 1, f(Yes, true, "")}, - {0xd035, 0, 0, 2, f(Yes, false, "")}, - {0xd050, 0, 0, 1, f(Yes, true, "")}, - {0xd051, 0, 0, 2, f(Yes, false, "")}, - {0xd06c, 0, 0, 1, f(Yes, true, "")}, - {0xd06d, 0, 0, 2, f(Yes, false, "")}, - {0xd088, 0, 0, 1, f(Yes, true, "")}, - {0xd089, 0, 0, 2, f(Yes, false, "")}, - {0xd0a4, 0, 0, 1, f(Yes, true, "")}, - {0xd0a5, 0, 0, 2, f(Yes, false, "")}, - {0xd0c0, 0, 0, 1, f(Yes, true, "")}, - {0xd0c1, 0, 0, 2, f(Yes, false, "")}, - {0xd0dc, 0, 0, 1, f(Yes, true, "")}, - {0xd0dd, 0, 0, 2, f(Yes, false, "")}, - {0xd0f8, 0, 0, 1, f(Yes, true, "")}, - {0xd0f9, 0, 0, 2, f(Yes, false, "")}, - {0xd114, 0, 0, 1, f(Yes, true, "")}, - {0xd115, 0, 0, 2, f(Yes, false, "")}, - {0xd130, 0, 0, 1, f(Yes, true, "")}, - {0xd131, 0, 0, 2, f(Yes, false, "")}, - {0xd14c, 0, 0, 1, f(Yes, true, "")}, - {0xd14d, 0, 0, 2, f(Yes, false, "")}, - {0xd168, 0, 0, 1, f(Yes, true, "")}, - {0xd169, 0, 0, 2, f(Yes, false, "")}, - {0xd184, 0, 0, 1, f(Yes, true, "")}, - {0xd185, 0, 0, 2, f(Yes, false, "")}, - {0xd1a0, 0, 0, 1, f(Yes, true, "")}, - {0xd1a1, 0, 0, 2, f(Yes, false, "")}, - {0xd1bc, 0, 0, 1, f(Yes, true, "")}, - {0xd1bd, 0, 0, 2, f(Yes, false, "")}, - {0xd1d8, 0, 0, 1, f(Yes, true, "")}, - {0xd1d9, 0, 0, 2, f(Yes, false, "")}, - {0xd1f4, 0, 0, 1, f(Yes, true, "")}, - {0xd1f5, 0, 0, 2, f(Yes, false, "")}, - {0xd210, 0, 0, 1, f(Yes, true, "")}, - {0xd211, 0, 0, 2, f(Yes, false, "")}, - {0xd22c, 0, 0, 1, f(Yes, true, "")}, - {0xd22d, 0, 0, 2, f(Yes, false, "")}, - {0xd248, 0, 0, 1, f(Yes, true, "")}, - {0xd249, 0, 0, 2, f(Yes, false, "")}, - {0xd264, 0, 0, 1, f(Yes, true, "")}, - {0xd265, 0, 0, 2, f(Yes, false, "")}, - {0xd280, 0, 0, 1, f(Yes, true, "")}, - {0xd281, 0, 0, 2, f(Yes, false, "")}, - {0xd29c, 0, 0, 1, f(Yes, true, "")}, - {0xd29d, 0, 0, 2, f(Yes, false, "")}, - {0xd2b8, 0, 0, 1, f(Yes, true, "")}, - {0xd2b9, 0, 0, 2, f(Yes, false, "")}, - {0xd2d4, 0, 0, 1, f(Yes, true, "")}, - {0xd2d5, 0, 0, 2, f(Yes, false, "")}, - {0xd2f0, 0, 0, 1, f(Yes, true, "")}, - {0xd2f1, 0, 0, 2, f(Yes, false, "")}, - {0xd30c, 0, 0, 1, f(Yes, true, "")}, - {0xd30d, 0, 0, 2, f(Yes, false, "")}, - {0xd328, 0, 0, 1, f(Yes, true, "")}, - {0xd329, 0, 0, 2, f(Yes, false, "")}, - {0xd344, 0, 0, 1, f(Yes, true, "")}, - {0xd345, 0, 0, 2, f(Yes, false, "")}, - {0xd360, 0, 0, 1, f(Yes, true, "")}, - {0xd361, 0, 0, 2, f(Yes, false, "")}, - {0xd37c, 0, 0, 1, f(Yes, true, "")}, - {0xd37d, 0, 0, 2, f(Yes, false, "")}, - {0xd398, 0, 0, 1, f(Yes, true, "")}, - {0xd399, 0, 0, 2, f(Yes, false, "")}, - {0xd3b4, 0, 0, 1, f(Yes, true, "")}, - {0xd3b5, 0, 0, 2, f(Yes, false, "")}, - {0xd3d0, 0, 0, 1, f(Yes, true, "")}, - {0xd3d1, 0, 0, 2, f(Yes, false, "")}, - {0xd3ec, 0, 0, 1, f(Yes, true, "")}, - {0xd3ed, 0, 0, 2, f(Yes, false, "")}, - {0xd408, 0, 0, 1, f(Yes, true, "")}, - {0xd409, 0, 0, 2, f(Yes, false, "")}, - {0xd424, 0, 0, 1, f(Yes, true, "")}, - {0xd425, 0, 0, 2, f(Yes, false, "")}, - {0xd440, 0, 0, 1, f(Yes, true, "")}, - {0xd441, 0, 0, 2, f(Yes, false, "")}, - {0xd45c, 0, 0, 1, f(Yes, true, "")}, - {0xd45d, 0, 0, 2, f(Yes, false, "")}, - {0xd478, 0, 0, 1, f(Yes, true, "")}, - {0xd479, 0, 0, 2, f(Yes, false, "")}, - {0xd494, 0, 0, 1, f(Yes, true, "")}, - {0xd495, 0, 0, 2, f(Yes, false, "")}, - {0xd4b0, 0, 0, 1, f(Yes, true, "")}, - {0xd4b1, 0, 0, 2, f(Yes, false, "")}, - {0xd4cc, 0, 0, 1, f(Yes, true, "")}, - {0xd4cd, 0, 0, 2, f(Yes, false, "")}, - {0xd4e8, 0, 0, 1, f(Yes, true, "")}, - {0xd4e9, 0, 0, 2, f(Yes, false, "")}, - {0xd504, 0, 0, 1, f(Yes, true, "")}, - {0xd505, 0, 0, 2, f(Yes, false, "")}, - {0xd520, 0, 0, 1, f(Yes, true, "")}, - {0xd521, 0, 0, 2, f(Yes, false, "")}, - {0xd53c, 0, 0, 1, f(Yes, true, "")}, - {0xd53d, 0, 0, 2, f(Yes, false, "")}, - {0xd558, 0, 0, 1, f(Yes, true, "")}, - {0xd559, 0, 0, 2, f(Yes, false, "")}, - {0xd574, 0, 0, 1, f(Yes, true, "")}, - {0xd575, 0, 0, 2, f(Yes, false, "")}, - {0xd590, 0, 0, 1, f(Yes, true, "")}, - {0xd591, 0, 0, 2, f(Yes, false, "")}, - {0xd5ac, 0, 0, 1, f(Yes, true, "")}, - {0xd5ad, 0, 0, 2, f(Yes, false, "")}, - {0xd5c8, 0, 0, 1, f(Yes, true, "")}, - {0xd5c9, 0, 0, 2, f(Yes, false, "")}, - {0xd5e4, 0, 0, 1, f(Yes, true, "")}, - {0xd5e5, 0, 0, 2, f(Yes, false, "")}, - {0xd600, 0, 0, 1, f(Yes, true, "")}, - {0xd601, 0, 0, 2, f(Yes, false, "")}, - {0xd61c, 0, 0, 1, f(Yes, true, "")}, - {0xd61d, 0, 0, 2, f(Yes, false, "")}, - {0xd638, 0, 0, 1, f(Yes, true, "")}, - {0xd639, 0, 0, 2, f(Yes, false, "")}, - {0xd654, 0, 0, 1, f(Yes, true, "")}, - {0xd655, 0, 0, 2, f(Yes, false, "")}, - {0xd670, 0, 0, 1, f(Yes, true, "")}, - {0xd671, 0, 0, 2, f(Yes, false, "")}, - {0xd68c, 0, 0, 1, f(Yes, true, "")}, - {0xd68d, 0, 0, 2, f(Yes, false, "")}, - {0xd6a8, 0, 0, 1, f(Yes, true, "")}, - {0xd6a9, 0, 0, 2, f(Yes, false, "")}, - {0xd6c4, 0, 0, 1, f(Yes, true, "")}, - {0xd6c5, 0, 0, 2, f(Yes, false, "")}, - {0xd6e0, 0, 0, 1, f(Yes, true, "")}, - {0xd6e1, 0, 0, 2, f(Yes, false, "")}, - {0xd6fc, 0, 0, 1, f(Yes, true, "")}, - {0xd6fd, 0, 0, 2, f(Yes, false, "")}, - {0xd718, 0, 0, 1, f(Yes, true, "")}, - {0xd719, 0, 0, 2, f(Yes, false, "")}, - {0xd734, 0, 0, 1, f(Yes, true, "")}, - {0xd735, 0, 0, 2, f(Yes, false, "")}, - {0xd750, 0, 0, 1, f(Yes, true, "")}, - {0xd751, 0, 0, 2, f(Yes, false, "")}, - {0xd76c, 0, 0, 1, f(Yes, true, "")}, - {0xd76d, 0, 0, 2, f(Yes, false, "")}, - {0xd788, 0, 0, 1, f(Yes, true, "")}, - {0xd789, 0, 0, 2, f(Yes, false, "")}, - {0xd7a4, 0, 0, 0, f(Yes, false, "")}, - {0xf900, 0, 0, 0, f(No, false, "豈")}, - {0xf901, 0, 0, 0, f(No, false, "更")}, - {0xf902, 0, 0, 0, f(No, false, "車")}, - {0xf903, 0, 0, 0, f(No, false, "賈")}, - {0xf904, 0, 0, 0, f(No, false, "滑")}, - {0xf905, 0, 0, 0, f(No, false, "串")}, - {0xf906, 0, 0, 0, f(No, false, "句")}, - {0xf907, 0, 0, 0, f(No, false, "龜")}, - {0xf909, 0, 0, 0, f(No, false, "契")}, - {0xf90a, 0, 0, 0, f(No, false, "金")}, - {0xf90b, 0, 0, 0, f(No, false, "喇")}, - {0xf90c, 0, 0, 0, f(No, false, "奈")}, - {0xf90d, 0, 0, 0, f(No, false, "懶")}, - {0xf90e, 0, 0, 0, f(No, false, "癩")}, - {0xf90f, 0, 0, 0, f(No, false, "羅")}, - {0xf910, 0, 0, 0, f(No, false, "蘿")}, - {0xf911, 0, 0, 0, f(No, false, "螺")}, - {0xf912, 0, 0, 0, f(No, false, "裸")}, - {0xf913, 0, 0, 0, f(No, false, "邏")}, - {0xf914, 0, 0, 0, f(No, false, "樂")}, - {0xf915, 0, 0, 0, f(No, false, "洛")}, - {0xf916, 0, 0, 0, f(No, false, "烙")}, - {0xf917, 0, 0, 0, f(No, false, "珞")}, - {0xf918, 0, 0, 0, f(No, false, "落")}, - {0xf919, 0, 0, 0, f(No, false, "酪")}, - {0xf91a, 0, 0, 0, f(No, false, "駱")}, - {0xf91b, 0, 0, 0, f(No, false, "亂")}, - {0xf91c, 0, 0, 0, f(No, false, "卵")}, - {0xf91d, 0, 0, 0, f(No, false, "欄")}, - {0xf91e, 0, 0, 0, f(No, false, "爛")}, - {0xf91f, 0, 0, 0, f(No, false, "蘭")}, - {0xf920, 0, 0, 0, f(No, false, "鸞")}, - {0xf921, 0, 0, 0, f(No, false, "嵐")}, - {0xf922, 0, 0, 0, f(No, false, "濫")}, - {0xf923, 0, 0, 0, f(No, false, "藍")}, - {0xf924, 0, 0, 0, f(No, false, "襤")}, - {0xf925, 0, 0, 0, f(No, false, "拉")}, - {0xf926, 0, 0, 0, f(No, false, "臘")}, - {0xf927, 0, 0, 0, f(No, false, "蠟")}, - {0xf928, 0, 0, 0, f(No, false, "廊")}, - {0xf929, 0, 0, 0, f(No, false, "朗")}, - {0xf92a, 0, 0, 0, f(No, false, "浪")}, - {0xf92b, 0, 0, 0, f(No, false, "狼")}, - {0xf92c, 0, 0, 0, f(No, false, "郎")}, - {0xf92d, 0, 0, 0, f(No, false, "來")}, - {0xf92e, 0, 0, 0, f(No, false, "冷")}, - {0xf92f, 0, 0, 0, f(No, false, "勞")}, - {0xf930, 0, 0, 0, f(No, false, "擄")}, - {0xf931, 0, 0, 0, f(No, false, "櫓")}, - {0xf932, 0, 0, 0, f(No, false, "爐")}, - {0xf933, 0, 0, 0, f(No, false, "盧")}, - {0xf934, 0, 0, 0, f(No, false, "老")}, - {0xf935, 0, 0, 0, f(No, false, "蘆")}, - {0xf936, 0, 0, 0, f(No, false, "虜")}, - {0xf937, 0, 0, 0, f(No, false, "路")}, - {0xf938, 0, 0, 0, f(No, false, "露")}, - {0xf939, 0, 0, 0, f(No, false, "魯")}, - {0xf93a, 0, 0, 0, f(No, false, "鷺")}, - {0xf93b, 0, 0, 0, f(No, false, "碌")}, - {0xf93c, 0, 0, 0, f(No, false, "祿")}, - {0xf93d, 0, 0, 0, f(No, false, "綠")}, - {0xf93e, 0, 0, 0, f(No, false, "菉")}, - {0xf93f, 0, 0, 0, f(No, false, "錄")}, - {0xf940, 0, 0, 0, f(No, false, "鹿")}, - {0xf941, 0, 0, 0, f(No, false, "論")}, - {0xf942, 0, 0, 0, f(No, false, "壟")}, - {0xf943, 0, 0, 0, f(No, false, "弄")}, - {0xf944, 0, 0, 0, f(No, false, "籠")}, - {0xf945, 0, 0, 0, f(No, false, "聾")}, - {0xf946, 0, 0, 0, f(No, false, "牢")}, - {0xf947, 0, 0, 0, f(No, false, "磊")}, - {0xf948, 0, 0, 0, f(No, false, "賂")}, - {0xf949, 0, 0, 0, f(No, false, "雷")}, - {0xf94a, 0, 0, 0, f(No, false, "壘")}, - {0xf94b, 0, 0, 0, f(No, false, "屢")}, - {0xf94c, 0, 0, 0, f(No, false, "樓")}, - {0xf94d, 0, 0, 0, f(No, false, "淚")}, - {0xf94e, 0, 0, 0, f(No, false, "漏")}, - {0xf94f, 0, 0, 0, f(No, false, "累")}, - {0xf950, 0, 0, 0, f(No, false, "縷")}, - {0xf951, 0, 0, 0, f(No, false, "陋")}, - {0xf952, 0, 0, 0, f(No, false, "勒")}, - {0xf953, 0, 0, 0, f(No, false, "肋")}, - {0xf954, 0, 0, 0, f(No, false, "凜")}, - {0xf955, 0, 0, 0, f(No, false, "凌")}, - {0xf956, 0, 0, 0, f(No, false, "稜")}, - {0xf957, 0, 0, 0, f(No, false, "綾")}, - {0xf958, 0, 0, 0, f(No, false, "菱")}, - {0xf959, 0, 0, 0, f(No, false, "陵")}, - {0xf95a, 0, 0, 0, f(No, false, "讀")}, - {0xf95b, 0, 0, 0, f(No, false, "拏")}, - {0xf95c, 0, 0, 0, f(No, false, "樂")}, - {0xf95d, 0, 0, 0, f(No, false, "諾")}, - {0xf95e, 0, 0, 0, f(No, false, "丹")}, - {0xf95f, 0, 0, 0, f(No, false, "寧")}, - {0xf960, 0, 0, 0, f(No, false, "怒")}, - {0xf961, 0, 0, 0, f(No, false, "率")}, - {0xf962, 0, 0, 0, f(No, false, "異")}, - {0xf963, 0, 0, 0, f(No, false, "北")}, - {0xf964, 0, 0, 0, f(No, false, "磻")}, - {0xf965, 0, 0, 0, f(No, false, "便")}, - {0xf966, 0, 0, 0, f(No, false, "復")}, - {0xf967, 0, 0, 0, f(No, false, "不")}, - {0xf968, 0, 0, 0, f(No, false, "泌")}, - {0xf969, 0, 0, 0, f(No, false, "數")}, - {0xf96a, 0, 0, 0, f(No, false, "索")}, - {0xf96b, 0, 0, 0, f(No, false, "參")}, - {0xf96c, 0, 0, 0, f(No, false, "塞")}, - {0xf96d, 0, 0, 0, f(No, false, "省")}, - {0xf96e, 0, 0, 0, f(No, false, "葉")}, - {0xf96f, 0, 0, 0, f(No, false, "說")}, - {0xf970, 0, 0, 0, f(No, false, "殺")}, - {0xf971, 0, 0, 0, f(No, false, "辰")}, - {0xf972, 0, 0, 0, f(No, false, "沈")}, - {0xf973, 0, 0, 0, f(No, false, "拾")}, - {0xf974, 0, 0, 0, f(No, false, "若")}, - {0xf975, 0, 0, 0, f(No, false, "掠")}, - {0xf976, 0, 0, 0, f(No, false, "略")}, - {0xf977, 0, 0, 0, f(No, false, "亮")}, - {0xf978, 0, 0, 0, f(No, false, "兩")}, - {0xf979, 0, 0, 0, f(No, false, "凉")}, - {0xf97a, 0, 0, 0, f(No, false, "梁")}, - {0xf97b, 0, 0, 0, f(No, false, "糧")}, - {0xf97c, 0, 0, 0, f(No, false, "良")}, - {0xf97d, 0, 0, 0, f(No, false, "諒")}, - {0xf97e, 0, 0, 0, f(No, false, "量")}, - {0xf97f, 0, 0, 0, f(No, false, "勵")}, - {0xf980, 0, 0, 0, f(No, false, "呂")}, - {0xf981, 0, 0, 0, f(No, false, "女")}, - {0xf982, 0, 0, 0, f(No, false, "廬")}, - {0xf983, 0, 0, 0, f(No, false, "旅")}, - {0xf984, 0, 0, 0, f(No, false, "濾")}, - {0xf985, 0, 0, 0, f(No, false, "礪")}, - {0xf986, 0, 0, 0, f(No, false, "閭")}, - {0xf987, 0, 0, 0, f(No, false, "驪")}, - {0xf988, 0, 0, 0, f(No, false, "麗")}, - {0xf989, 0, 0, 0, f(No, false, "黎")}, - {0xf98a, 0, 0, 0, f(No, false, "力")}, - {0xf98b, 0, 0, 0, f(No, false, "曆")}, - {0xf98c, 0, 0, 0, f(No, false, "歷")}, - {0xf98d, 0, 0, 0, f(No, false, "轢")}, - {0xf98e, 0, 0, 0, f(No, false, "年")}, - {0xf98f, 0, 0, 0, f(No, false, "憐")}, - {0xf990, 0, 0, 0, f(No, false, "戀")}, - {0xf991, 0, 0, 0, f(No, false, "撚")}, - {0xf992, 0, 0, 0, f(No, false, "漣")}, - {0xf993, 0, 0, 0, f(No, false, "煉")}, - {0xf994, 0, 0, 0, f(No, false, "璉")}, - {0xf995, 0, 0, 0, f(No, false, "秊")}, - {0xf996, 0, 0, 0, f(No, false, "練")}, - {0xf997, 0, 0, 0, f(No, false, "聯")}, - {0xf998, 0, 0, 0, f(No, false, "輦")}, - {0xf999, 0, 0, 0, f(No, false, "蓮")}, - {0xf99a, 0, 0, 0, f(No, false, "連")}, - {0xf99b, 0, 0, 0, f(No, false, "鍊")}, - {0xf99c, 0, 0, 0, f(No, false, "列")}, - {0xf99d, 0, 0, 0, f(No, false, "劣")}, - {0xf99e, 0, 0, 0, f(No, false, "咽")}, - {0xf99f, 0, 0, 0, f(No, false, "烈")}, - {0xf9a0, 0, 0, 0, f(No, false, "裂")}, - {0xf9a1, 0, 0, 0, f(No, false, "說")}, - {0xf9a2, 0, 0, 0, f(No, false, "廉")}, - {0xf9a3, 0, 0, 0, f(No, false, "念")}, - {0xf9a4, 0, 0, 0, f(No, false, "捻")}, - {0xf9a5, 0, 0, 0, f(No, false, "殮")}, - {0xf9a6, 0, 0, 0, f(No, false, "簾")}, - {0xf9a7, 0, 0, 0, f(No, false, "獵")}, - {0xf9a8, 0, 0, 0, f(No, false, "令")}, - {0xf9a9, 0, 0, 0, f(No, false, "囹")}, - {0xf9aa, 0, 0, 0, f(No, false, "寧")}, - {0xf9ab, 0, 0, 0, f(No, false, "嶺")}, - {0xf9ac, 0, 0, 0, f(No, false, "怜")}, - {0xf9ad, 0, 0, 0, f(No, false, "玲")}, - {0xf9ae, 0, 0, 0, f(No, false, "瑩")}, - {0xf9af, 0, 0, 0, f(No, false, "羚")}, - {0xf9b0, 0, 0, 0, f(No, false, "聆")}, - {0xf9b1, 0, 0, 0, f(No, false, "鈴")}, - {0xf9b2, 0, 0, 0, f(No, false, "零")}, - {0xf9b3, 0, 0, 0, f(No, false, "靈")}, - {0xf9b4, 0, 0, 0, f(No, false, "領")}, - {0xf9b5, 0, 0, 0, f(No, false, "例")}, - {0xf9b6, 0, 0, 0, f(No, false, "禮")}, - {0xf9b7, 0, 0, 0, f(No, false, "醴")}, - {0xf9b8, 0, 0, 0, f(No, false, "隸")}, - {0xf9b9, 0, 0, 0, f(No, false, "惡")}, - {0xf9ba, 0, 0, 0, f(No, false, "了")}, - {0xf9bb, 0, 0, 0, f(No, false, "僚")}, - {0xf9bc, 0, 0, 0, f(No, false, "寮")}, - {0xf9bd, 0, 0, 0, f(No, false, "尿")}, - {0xf9be, 0, 0, 0, f(No, false, "料")}, - {0xf9bf, 0, 0, 0, f(No, false, "樂")}, - {0xf9c0, 0, 0, 0, f(No, false, "燎")}, - {0xf9c1, 0, 0, 0, f(No, false, "療")}, - {0xf9c2, 0, 0, 0, f(No, false, "蓼")}, - {0xf9c3, 0, 0, 0, f(No, false, "遼")}, - {0xf9c4, 0, 0, 0, f(No, false, "龍")}, - {0xf9c5, 0, 0, 0, f(No, false, "暈")}, - {0xf9c6, 0, 0, 0, f(No, false, "阮")}, - {0xf9c7, 0, 0, 0, f(No, false, "劉")}, - {0xf9c8, 0, 0, 0, f(No, false, "杻")}, - {0xf9c9, 0, 0, 0, f(No, false, "柳")}, - {0xf9ca, 0, 0, 0, f(No, false, "流")}, - {0xf9cb, 0, 0, 0, f(No, false, "溜")}, - {0xf9cc, 0, 0, 0, f(No, false, "琉")}, - {0xf9cd, 0, 0, 0, f(No, false, "留")}, - {0xf9ce, 0, 0, 0, f(No, false, "硫")}, - {0xf9cf, 0, 0, 0, f(No, false, "紐")}, - {0xf9d0, 0, 0, 0, f(No, false, "類")}, - {0xf9d1, 0, 0, 0, f(No, false, "六")}, - {0xf9d2, 0, 0, 0, f(No, false, "戮")}, - {0xf9d3, 0, 0, 0, f(No, false, "陸")}, - {0xf9d4, 0, 0, 0, f(No, false, "倫")}, - {0xf9d5, 0, 0, 0, f(No, false, "崙")}, - {0xf9d6, 0, 0, 0, f(No, false, "淪")}, - {0xf9d7, 0, 0, 0, f(No, false, "輪")}, - {0xf9d8, 0, 0, 0, f(No, false, "律")}, - {0xf9d9, 0, 0, 0, f(No, false, "慄")}, - {0xf9da, 0, 0, 0, f(No, false, "栗")}, - {0xf9db, 0, 0, 0, f(No, false, "率")}, - {0xf9dc, 0, 0, 0, f(No, false, "隆")}, - {0xf9dd, 0, 0, 0, f(No, false, "利")}, - {0xf9de, 0, 0, 0, f(No, false, "吏")}, - {0xf9df, 0, 0, 0, f(No, false, "履")}, - {0xf9e0, 0, 0, 0, f(No, false, "易")}, - {0xf9e1, 0, 0, 0, f(No, false, "李")}, - {0xf9e2, 0, 0, 0, f(No, false, "梨")}, - {0xf9e3, 0, 0, 0, f(No, false, "泥")}, - {0xf9e4, 0, 0, 0, f(No, false, "理")}, - {0xf9e5, 0, 0, 0, f(No, false, "痢")}, - {0xf9e6, 0, 0, 0, f(No, false, "罹")}, - {0xf9e7, 0, 0, 0, f(No, false, "裏")}, - {0xf9e8, 0, 0, 0, f(No, false, "裡")}, - {0xf9e9, 0, 0, 0, f(No, false, "里")}, - {0xf9ea, 0, 0, 0, f(No, false, "離")}, - {0xf9eb, 0, 0, 0, f(No, false, "匿")}, - {0xf9ec, 0, 0, 0, f(No, false, "溺")}, - {0xf9ed, 0, 0, 0, f(No, false, "吝")}, - {0xf9ee, 0, 0, 0, f(No, false, "燐")}, - {0xf9ef, 0, 0, 0, f(No, false, "璘")}, - {0xf9f0, 0, 0, 0, f(No, false, "藺")}, - {0xf9f1, 0, 0, 0, f(No, false, "隣")}, - {0xf9f2, 0, 0, 0, f(No, false, "鱗")}, - {0xf9f3, 0, 0, 0, f(No, false, "麟")}, - {0xf9f4, 0, 0, 0, f(No, false, "林")}, - {0xf9f5, 0, 0, 0, f(No, false, "淋")}, - {0xf9f6, 0, 0, 0, f(No, false, "臨")}, - {0xf9f7, 0, 0, 0, f(No, false, "立")}, - {0xf9f8, 0, 0, 0, f(No, false, "笠")}, - {0xf9f9, 0, 0, 0, f(No, false, "粒")}, - {0xf9fa, 0, 0, 0, f(No, false, "狀")}, - {0xf9fb, 0, 0, 0, f(No, false, "炙")}, - {0xf9fc, 0, 0, 0, f(No, false, "識")}, - {0xf9fd, 0, 0, 0, f(No, false, "什")}, - {0xf9fe, 0, 0, 0, f(No, false, "茶")}, - {0xf9ff, 0, 0, 0, f(No, false, "刺")}, - {0xfa00, 0, 0, 0, f(No, false, "切")}, - {0xfa01, 0, 0, 0, f(No, false, "度")}, - {0xfa02, 0, 0, 0, f(No, false, "拓")}, - {0xfa03, 0, 0, 0, f(No, false, "糖")}, - {0xfa04, 0, 0, 0, f(No, false, "宅")}, - {0xfa05, 0, 0, 0, f(No, false, "洞")}, - {0xfa06, 0, 0, 0, f(No, false, "暴")}, - {0xfa07, 0, 0, 0, f(No, false, "輻")}, - {0xfa08, 0, 0, 0, f(No, false, "行")}, - {0xfa09, 0, 0, 0, f(No, false, "降")}, - {0xfa0a, 0, 0, 0, f(No, false, "見")}, - {0xfa0b, 0, 0, 0, f(No, false, "廓")}, - {0xfa0c, 0, 0, 0, f(No, false, "兀")}, - {0xfa0d, 0, 0, 0, f(No, false, "嗀")}, - {0xfa0e, 0, 0, 0, f(Yes, false, "")}, - {0xfa10, 0, 0, 0, f(No, false, "塚")}, - {0xfa11, 0, 0, 0, f(Yes, false, "")}, - {0xfa12, 0, 0, 0, f(No, false, "晴")}, - {0xfa13, 0, 0, 0, f(Yes, false, "")}, - {0xfa15, 0, 0, 0, f(No, false, "凞")}, - {0xfa16, 0, 0, 0, f(No, false, "猪")}, - {0xfa17, 0, 0, 0, f(No, false, "益")}, - {0xfa18, 0, 0, 0, f(No, false, "礼")}, - {0xfa19, 0, 0, 0, f(No, false, "神")}, - {0xfa1a, 0, 0, 0, f(No, false, "祥")}, - {0xfa1b, 0, 0, 0, f(No, false, "福")}, - {0xfa1c, 0, 0, 0, f(No, false, "靖")}, - {0xfa1d, 0, 0, 0, f(No, false, "精")}, - {0xfa1e, 0, 0, 0, f(No, false, "羽")}, - {0xfa1f, 0, 0, 0, f(Yes, false, "")}, - {0xfa20, 0, 0, 0, f(No, false, "蘒")}, - {0xfa21, 0, 0, 0, f(Yes, false, "")}, - {0xfa22, 0, 0, 0, f(No, false, "諸")}, - {0xfa23, 0, 0, 0, f(Yes, false, "")}, - {0xfa25, 0, 0, 0, f(No, false, "逸")}, - {0xfa26, 0, 0, 0, f(No, false, "都")}, - {0xfa27, 0, 0, 0, f(Yes, false, "")}, - {0xfa2a, 0, 0, 0, f(No, false, "飯")}, - {0xfa2b, 0, 0, 0, f(No, false, "飼")}, - {0xfa2c, 0, 0, 0, f(No, false, "館")}, - {0xfa2d, 0, 0, 0, f(No, false, "鶴")}, - {0xfa2e, 0, 0, 0, f(No, false, "郞")}, - {0xfa2f, 0, 0, 0, f(No, false, "隷")}, - {0xfa30, 0, 0, 0, f(No, false, "侮")}, - {0xfa31, 0, 0, 0, f(No, false, "僧")}, - {0xfa32, 0, 0, 0, f(No, false, "免")}, - {0xfa33, 0, 0, 0, f(No, false, "勉")}, - {0xfa34, 0, 0, 0, f(No, false, "勤")}, - {0xfa35, 0, 0, 0, f(No, false, "卑")}, - {0xfa36, 0, 0, 0, f(No, false, "喝")}, - {0xfa37, 0, 0, 0, f(No, false, "嘆")}, - {0xfa38, 0, 0, 0, f(No, false, "器")}, - {0xfa39, 0, 0, 0, f(No, false, "塀")}, - {0xfa3a, 0, 0, 0, f(No, false, "墨")}, - {0xfa3b, 0, 0, 0, f(No, false, "層")}, - {0xfa3c, 0, 0, 0, f(No, false, "屮")}, - {0xfa3d, 0, 0, 0, f(No, false, "悔")}, - {0xfa3e, 0, 0, 0, f(No, false, "慨")}, - {0xfa3f, 0, 0, 0, f(No, false, "憎")}, - {0xfa40, 0, 0, 0, f(No, false, "懲")}, - {0xfa41, 0, 0, 0, f(No, false, "敏")}, - {0xfa42, 0, 0, 0, f(No, false, "既")}, - {0xfa43, 0, 0, 0, f(No, false, "暑")}, - {0xfa44, 0, 0, 0, f(No, false, "梅")}, - {0xfa45, 0, 0, 0, f(No, false, "海")}, - {0xfa46, 0, 0, 0, f(No, false, "渚")}, - {0xfa47, 0, 0, 0, f(No, false, "漢")}, - {0xfa48, 0, 0, 0, f(No, false, "煮")}, - {0xfa49, 0, 0, 0, f(No, false, "爫")}, - {0xfa4a, 0, 0, 0, f(No, false, "琢")}, - {0xfa4b, 0, 0, 0, f(No, false, "碑")}, - {0xfa4c, 0, 0, 0, f(No, false, "社")}, - {0xfa4d, 0, 0, 0, f(No, false, "祉")}, - {0xfa4e, 0, 0, 0, f(No, false, "祈")}, - {0xfa4f, 0, 0, 0, f(No, false, "祐")}, - {0xfa50, 0, 0, 0, f(No, false, "祖")}, - {0xfa51, 0, 0, 0, f(No, false, "祝")}, - {0xfa52, 0, 0, 0, f(No, false, "禍")}, - {0xfa53, 0, 0, 0, f(No, false, "禎")}, - {0xfa54, 0, 0, 0, f(No, false, "穀")}, - {0xfa55, 0, 0, 0, f(No, false, "突")}, - {0xfa56, 0, 0, 0, f(No, false, "節")}, - {0xfa57, 0, 0, 0, f(No, false, "練")}, - {0xfa58, 0, 0, 0, f(No, false, "縉")}, - {0xfa59, 0, 0, 0, f(No, false, "繁")}, - {0xfa5a, 0, 0, 0, f(No, false, "署")}, - {0xfa5b, 0, 0, 0, f(No, false, "者")}, - {0xfa5c, 0, 0, 0, f(No, false, "臭")}, - {0xfa5d, 0, 0, 0, f(No, false, "艹")}, - {0xfa5f, 0, 0, 0, f(No, false, "著")}, - {0xfa60, 0, 0, 0, f(No, false, "褐")}, - {0xfa61, 0, 0, 0, f(No, false, "視")}, - {0xfa62, 0, 0, 0, f(No, false, "謁")}, - {0xfa63, 0, 0, 0, f(No, false, "謹")}, - {0xfa64, 0, 0, 0, f(No, false, "賓")}, - {0xfa65, 0, 0, 0, f(No, false, "贈")}, - {0xfa66, 0, 0, 0, f(No, false, "辶")}, - {0xfa67, 0, 0, 0, f(No, false, "逸")}, - {0xfa68, 0, 0, 0, f(No, false, "難")}, - {0xfa69, 0, 0, 0, f(No, false, "響")}, - {0xfa6a, 0, 0, 0, f(No, false, "頻")}, - {0xfa6b, 0, 0, 0, f(No, false, "恵")}, - {0xfa6c, 0, 0, 0, f(No, false, "𤋮")}, - {0xfa6d, 0, 0, 0, f(No, false, "舘")}, - {0xfa6e, 0, 0, 0, f(Yes, false, "")}, - {0xfa70, 0, 0, 0, f(No, false, "並")}, - {0xfa71, 0, 0, 0, f(No, false, "况")}, - {0xfa72, 0, 0, 0, f(No, false, "全")}, - {0xfa73, 0, 0, 0, f(No, false, "侀")}, - {0xfa74, 0, 0, 0, f(No, false, "充")}, - {0xfa75, 0, 0, 0, f(No, false, "冀")}, - {0xfa76, 0, 0, 0, f(No, false, "勇")}, - {0xfa77, 0, 0, 0, f(No, false, "勺")}, - {0xfa78, 0, 0, 0, f(No, false, "喝")}, - {0xfa79, 0, 0, 0, f(No, false, "啕")}, - {0xfa7a, 0, 0, 0, f(No, false, "喙")}, - {0xfa7b, 0, 0, 0, f(No, false, "嗢")}, - {0xfa7c, 0, 0, 0, f(No, false, "塚")}, - {0xfa7d, 0, 0, 0, f(No, false, "墳")}, - {0xfa7e, 0, 0, 0, f(No, false, "奄")}, - {0xfa7f, 0, 0, 0, f(No, false, "奔")}, - {0xfa80, 0, 0, 0, f(No, false, "婢")}, - {0xfa81, 0, 0, 0, f(No, false, "嬨")}, - {0xfa82, 0, 0, 0, f(No, false, "廒")}, - {0xfa83, 0, 0, 0, f(No, false, "廙")}, - {0xfa84, 0, 0, 0, f(No, false, "彩")}, - {0xfa85, 0, 0, 0, f(No, false, "徭")}, - {0xfa86, 0, 0, 0, f(No, false, "惘")}, - {0xfa87, 0, 0, 0, f(No, false, "慎")}, - {0xfa88, 0, 0, 0, f(No, false, "愈")}, - {0xfa89, 0, 0, 0, f(No, false, "憎")}, - {0xfa8a, 0, 0, 0, f(No, false, "慠")}, - {0xfa8b, 0, 0, 0, f(No, false, "懲")}, - {0xfa8c, 0, 0, 0, f(No, false, "戴")}, - {0xfa8d, 0, 0, 0, f(No, false, "揄")}, - {0xfa8e, 0, 0, 0, f(No, false, "搜")}, - {0xfa8f, 0, 0, 0, f(No, false, "摒")}, - {0xfa90, 0, 0, 0, f(No, false, "敖")}, - {0xfa91, 0, 0, 0, f(No, false, "晴")}, - {0xfa92, 0, 0, 0, f(No, false, "朗")}, - {0xfa93, 0, 0, 0, f(No, false, "望")}, - {0xfa94, 0, 0, 0, f(No, false, "杖")}, - {0xfa95, 0, 0, 0, f(No, false, "歹")}, - {0xfa96, 0, 0, 0, f(No, false, "殺")}, - {0xfa97, 0, 0, 0, f(No, false, "流")}, - {0xfa98, 0, 0, 0, f(No, false, "滛")}, - {0xfa99, 0, 0, 0, f(No, false, "滋")}, - {0xfa9a, 0, 0, 0, f(No, false, "漢")}, - {0xfa9b, 0, 0, 0, f(No, false, "瀞")}, - {0xfa9c, 0, 0, 0, f(No, false, "煮")}, - {0xfa9d, 0, 0, 0, f(No, false, "瞧")}, - {0xfa9e, 0, 0, 0, f(No, false, "爵")}, - {0xfa9f, 0, 0, 0, f(No, false, "犯")}, - {0xfaa0, 0, 0, 0, f(No, false, "猪")}, - {0xfaa1, 0, 0, 0, f(No, false, "瑱")}, - {0xfaa2, 0, 0, 0, f(No, false, "甆")}, - {0xfaa3, 0, 0, 0, f(No, false, "画")}, - {0xfaa4, 0, 0, 0, f(No, false, "瘝")}, - {0xfaa5, 0, 0, 0, f(No, false, "瘟")}, - {0xfaa6, 0, 0, 0, f(No, false, "益")}, - {0xfaa7, 0, 0, 0, f(No, false, "盛")}, - {0xfaa8, 0, 0, 0, f(No, false, "直")}, - {0xfaa9, 0, 0, 0, f(No, false, "睊")}, - {0xfaaa, 0, 0, 0, f(No, false, "着")}, - {0xfaab, 0, 0, 0, f(No, false, "磌")}, - {0xfaac, 0, 0, 0, f(No, false, "窱")}, - {0xfaad, 0, 0, 0, f(No, false, "節")}, - {0xfaae, 0, 0, 0, f(No, false, "类")}, - {0xfaaf, 0, 0, 0, f(No, false, "絛")}, - {0xfab0, 0, 0, 0, f(No, false, "練")}, - {0xfab1, 0, 0, 0, f(No, false, "缾")}, - {0xfab2, 0, 0, 0, f(No, false, "者")}, - {0xfab3, 0, 0, 0, f(No, false, "荒")}, - {0xfab4, 0, 0, 0, f(No, false, "華")}, - {0xfab5, 0, 0, 0, f(No, false, "蝹")}, - {0xfab6, 0, 0, 0, f(No, false, "襁")}, - {0xfab7, 0, 0, 0, f(No, false, "覆")}, - {0xfab8, 0, 0, 0, f(No, false, "視")}, - {0xfab9, 0, 0, 0, f(No, false, "調")}, - {0xfaba, 0, 0, 0, f(No, false, "諸")}, - {0xfabb, 0, 0, 0, f(No, false, "請")}, - {0xfabc, 0, 0, 0, f(No, false, "謁")}, - {0xfabd, 0, 0, 0, f(No, false, "諾")}, - {0xfabe, 0, 0, 0, f(No, false, "諭")}, - {0xfabf, 0, 0, 0, f(No, false, "謹")}, - {0xfac0, 0, 0, 0, f(No, false, "變")}, - {0xfac1, 0, 0, 0, f(No, false, "贈")}, - {0xfac2, 0, 0, 0, f(No, false, "輸")}, - {0xfac3, 0, 0, 0, f(No, false, "遲")}, - {0xfac4, 0, 0, 0, f(No, false, "醙")}, - {0xfac5, 0, 0, 0, f(No, false, "鉶")}, - {0xfac6, 0, 0, 0, f(No, false, "陼")}, - {0xfac7, 0, 0, 0, f(No, false, "難")}, - {0xfac8, 0, 0, 0, f(No, false, "靖")}, - {0xfac9, 0, 0, 0, f(No, false, "韛")}, - {0xfaca, 0, 0, 0, f(No, false, "響")}, - {0xfacb, 0, 0, 0, f(No, false, "頋")}, - {0xfacc, 0, 0, 0, f(No, false, "頻")}, - {0xfacd, 0, 0, 0, f(No, false, "鬒")}, - {0xface, 0, 0, 0, f(No, false, "龜")}, - {0xfacf, 0, 0, 0, f(No, false, "𢡊")}, - {0xfad0, 0, 0, 0, f(No, false, "𢡄")}, - {0xfad1, 0, 0, 0, f(No, false, "𣏕")}, - {0xfad2, 0, 0, 0, f(No, false, "㮝")}, - {0xfad3, 0, 0, 0, f(No, false, "䀘")}, - {0xfad4, 0, 0, 0, f(No, false, "䀹")}, - {0xfad5, 0, 0, 0, f(No, false, "𥉉")}, - {0xfad6, 0, 0, 0, f(No, false, "𥳐")}, - {0xfad7, 0, 0, 0, f(No, false, "𧻓")}, - {0xfad8, 0, 0, 0, f(No, false, "齃")}, - {0xfad9, 0, 0, 0, f(No, false, "龎")}, - {0xfada, 0, 0, 0, f(Yes, false, "")}, - {0xfb00, 0, 0, 0, g(Yes, No, false, false, "", "ff")}, - {0xfb01, 0, 0, 0, g(Yes, No, false, false, "", "fi")}, - {0xfb02, 0, 0, 0, g(Yes, No, false, false, "", "fl")}, - {0xfb03, 0, 0, 0, g(Yes, No, false, false, "", "ffi")}, - {0xfb04, 0, 0, 0, g(Yes, No, false, false, "", "ffl")}, - {0xfb05, 0, 0, 0, g(Yes, No, false, false, "", "st")}, - {0xfb07, 0, 0, 0, f(Yes, false, "")}, - {0xfb13, 0, 0, 0, g(Yes, No, false, false, "", "մն")}, - {0xfb14, 0, 0, 0, g(Yes, No, false, false, "", "մե")}, - {0xfb15, 0, 0, 0, g(Yes, No, false, false, "", "մի")}, - {0xfb16, 0, 0, 0, g(Yes, No, false, false, "", "վն")}, - {0xfb17, 0, 0, 0, g(Yes, No, false, false, "", "մխ")}, - {0xfb18, 0, 0, 0, f(Yes, false, "")}, - {0xfb1d, 0, 0, 1, f(No, false, "יִ")}, - {0xfb1e, 26, 1, 1, f(Yes, false, "")}, - {0xfb1f, 0, 0, 1, f(No, false, "ײַ")}, - {0xfb20, 0, 0, 0, g(Yes, No, false, false, "", "ע")}, - {0xfb21, 0, 0, 0, g(Yes, No, false, false, "", "א")}, - {0xfb22, 0, 0, 0, g(Yes, No, false, false, "", "ד")}, - {0xfb23, 0, 0, 0, g(Yes, No, false, false, "", "ה")}, - {0xfb24, 0, 0, 0, g(Yes, No, false, false, "", "כ")}, - {0xfb25, 0, 0, 0, g(Yes, No, false, false, "", "ל")}, - {0xfb26, 0, 0, 0, g(Yes, No, false, false, "", "ם")}, - {0xfb27, 0, 0, 0, g(Yes, No, false, false, "", "ר")}, - {0xfb28, 0, 0, 0, g(Yes, No, false, false, "", "ת")}, - {0xfb29, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0xfb2a, 0, 0, 1, f(No, false, "שׁ")}, - {0xfb2b, 0, 0, 1, f(No, false, "שׂ")}, - {0xfb2c, 0, 0, 2, f(No, false, "שּׁ")}, - {0xfb2d, 0, 0, 2, f(No, false, "שּׂ")}, - {0xfb2e, 0, 0, 1, f(No, false, "אַ")}, - {0xfb2f, 0, 0, 1, f(No, false, "אָ")}, - {0xfb30, 0, 0, 1, f(No, false, "אּ")}, - {0xfb31, 0, 0, 1, f(No, false, "בּ")}, - {0xfb32, 0, 0, 1, f(No, false, "גּ")}, - {0xfb33, 0, 0, 1, f(No, false, "דּ")}, - {0xfb34, 0, 0, 1, f(No, false, "הּ")}, - {0xfb35, 0, 0, 1, f(No, false, "וּ")}, - {0xfb36, 0, 0, 1, f(No, false, "זּ")}, - {0xfb37, 0, 0, 0, f(Yes, false, "")}, - {0xfb38, 0, 0, 1, f(No, false, "טּ")}, - {0xfb39, 0, 0, 1, f(No, false, "יּ")}, - {0xfb3a, 0, 0, 1, f(No, false, "ךּ")}, - {0xfb3b, 0, 0, 1, f(No, false, "כּ")}, - {0xfb3c, 0, 0, 1, f(No, false, "לּ")}, - {0xfb3d, 0, 0, 0, f(Yes, false, "")}, - {0xfb3e, 0, 0, 1, f(No, false, "מּ")}, - {0xfb3f, 0, 0, 0, f(Yes, false, "")}, - {0xfb40, 0, 0, 1, f(No, false, "נּ")}, - {0xfb41, 0, 0, 1, f(No, false, "סּ")}, - {0xfb42, 0, 0, 0, f(Yes, false, "")}, - {0xfb43, 0, 0, 1, f(No, false, "ףּ")}, - {0xfb44, 0, 0, 1, f(No, false, "פּ")}, - {0xfb45, 0, 0, 0, f(Yes, false, "")}, - {0xfb46, 0, 0, 1, f(No, false, "צּ")}, - {0xfb47, 0, 0, 1, f(No, false, "קּ")}, - {0xfb48, 0, 0, 1, f(No, false, "רּ")}, - {0xfb49, 0, 0, 1, f(No, false, "שּ")}, - {0xfb4a, 0, 0, 1, f(No, false, "תּ")}, - {0xfb4b, 0, 0, 1, f(No, false, "וֹ")}, - {0xfb4c, 0, 0, 1, f(No, false, "בֿ")}, - {0xfb4d, 0, 0, 1, f(No, false, "כֿ")}, - {0xfb4e, 0, 0, 1, f(No, false, "פֿ")}, - {0xfb4f, 0, 0, 0, g(Yes, No, false, false, "", "אל")}, - {0xfb50, 0, 0, 0, g(Yes, No, false, false, "", "ٱ")}, - {0xfb52, 0, 0, 0, g(Yes, No, false, false, "", "ٻ")}, - {0xfb56, 0, 0, 0, g(Yes, No, false, false, "", "پ")}, - {0xfb5a, 0, 0, 0, g(Yes, No, false, false, "", "ڀ")}, - {0xfb5e, 0, 0, 0, g(Yes, No, false, false, "", "ٺ")}, - {0xfb62, 0, 0, 0, g(Yes, No, false, false, "", "ٿ")}, - {0xfb66, 0, 0, 0, g(Yes, No, false, false, "", "ٹ")}, - {0xfb6a, 0, 0, 0, g(Yes, No, false, false, "", "ڤ")}, - {0xfb6e, 0, 0, 0, g(Yes, No, false, false, "", "ڦ")}, - {0xfb72, 0, 0, 0, g(Yes, No, false, false, "", "ڄ")}, - {0xfb76, 0, 0, 0, g(Yes, No, false, false, "", "ڃ")}, - {0xfb7a, 0, 0, 0, g(Yes, No, false, false, "", "چ")}, - {0xfb7e, 0, 0, 0, g(Yes, No, false, false, "", "ڇ")}, - {0xfb82, 0, 0, 0, g(Yes, No, false, false, "", "ڍ")}, - {0xfb84, 0, 0, 0, g(Yes, No, false, false, "", "ڌ")}, - {0xfb86, 0, 0, 0, g(Yes, No, false, false, "", "ڎ")}, - {0xfb88, 0, 0, 0, g(Yes, No, false, false, "", "ڈ")}, - {0xfb8a, 0, 0, 0, g(Yes, No, false, false, "", "ژ")}, - {0xfb8c, 0, 0, 0, g(Yes, No, false, false, "", "ڑ")}, - {0xfb8e, 0, 0, 0, g(Yes, No, false, false, "", "ک")}, - {0xfb92, 0, 0, 0, g(Yes, No, false, false, "", "گ")}, - {0xfb96, 0, 0, 0, g(Yes, No, false, false, "", "ڳ")}, - {0xfb9a, 0, 0, 0, g(Yes, No, false, false, "", "ڱ")}, - {0xfb9e, 0, 0, 0, g(Yes, No, false, false, "", "ں")}, - {0xfba0, 0, 0, 0, g(Yes, No, false, false, "", "ڻ")}, - {0xfba4, 0, 0, 1, g(Yes, No, false, false, "", "ۀ")}, - {0xfba6, 0, 0, 0, g(Yes, No, false, false, "", "ہ")}, - {0xfbaa, 0, 0, 0, g(Yes, No, false, false, "", "ھ")}, - {0xfbae, 0, 0, 0, g(Yes, No, false, false, "", "ے")}, - {0xfbb0, 0, 0, 1, g(Yes, No, false, false, "", "ۓ")}, - {0xfbb2, 0, 0, 0, f(Yes, false, "")}, - {0xfbd3, 0, 0, 0, g(Yes, No, false, false, "", "ڭ")}, - {0xfbd7, 0, 0, 0, g(Yes, No, false, false, "", "ۇ")}, - {0xfbd9, 0, 0, 0, g(Yes, No, false, false, "", "ۆ")}, - {0xfbdb, 0, 0, 0, g(Yes, No, false, false, "", "ۈ")}, - {0xfbdd, 0, 0, 0, g(Yes, No, false, false, "", "ۇٴ")}, - {0xfbde, 0, 0, 0, g(Yes, No, false, false, "", "ۋ")}, - {0xfbe0, 0, 0, 0, g(Yes, No, false, false, "", "ۅ")}, - {0xfbe2, 0, 0, 0, g(Yes, No, false, false, "", "ۉ")}, - {0xfbe4, 0, 0, 0, g(Yes, No, false, false, "", "ې")}, - {0xfbe8, 0, 0, 0, g(Yes, No, false, false, "", "ى")}, - {0xfbea, 0, 0, 0, g(Yes, No, false, false, "", "ئا")}, - {0xfbec, 0, 0, 0, g(Yes, No, false, false, "", "ئە")}, - {0xfbee, 0, 0, 0, g(Yes, No, false, false, "", "ئو")}, - {0xfbf0, 0, 0, 0, g(Yes, No, false, false, "", "ئۇ")}, - {0xfbf2, 0, 0, 0, g(Yes, No, false, false, "", "ئۆ")}, - {0xfbf4, 0, 0, 0, g(Yes, No, false, false, "", "ئۈ")}, - {0xfbf6, 0, 0, 0, g(Yes, No, false, false, "", "ئې")}, - {0xfbf9, 0, 0, 0, g(Yes, No, false, false, "", "ئى")}, - {0xfbfc, 0, 0, 0, g(Yes, No, false, false, "", "ی")}, - {0xfc00, 0, 0, 0, g(Yes, No, false, false, "", "ئج")}, - {0xfc01, 0, 0, 0, g(Yes, No, false, false, "", "ئح")}, - {0xfc02, 0, 0, 0, g(Yes, No, false, false, "", "ئم")}, - {0xfc03, 0, 0, 0, g(Yes, No, false, false, "", "ئى")}, - {0xfc04, 0, 0, 0, g(Yes, No, false, false, "", "ئي")}, - {0xfc05, 0, 0, 0, g(Yes, No, false, false, "", "بج")}, - {0xfc06, 0, 0, 0, g(Yes, No, false, false, "", "بح")}, - {0xfc07, 0, 0, 0, g(Yes, No, false, false, "", "بخ")}, - {0xfc08, 0, 0, 0, g(Yes, No, false, false, "", "بم")}, - {0xfc09, 0, 0, 0, g(Yes, No, false, false, "", "بى")}, - {0xfc0a, 0, 0, 0, g(Yes, No, false, false, "", "بي")}, - {0xfc0b, 0, 0, 0, g(Yes, No, false, false, "", "تج")}, - {0xfc0c, 0, 0, 0, g(Yes, No, false, false, "", "تح")}, - {0xfc0d, 0, 0, 0, g(Yes, No, false, false, "", "تخ")}, - {0xfc0e, 0, 0, 0, g(Yes, No, false, false, "", "تم")}, - {0xfc0f, 0, 0, 0, g(Yes, No, false, false, "", "تى")}, - {0xfc10, 0, 0, 0, g(Yes, No, false, false, "", "تي")}, - {0xfc11, 0, 0, 0, g(Yes, No, false, false, "", "ثج")}, - {0xfc12, 0, 0, 0, g(Yes, No, false, false, "", "ثم")}, - {0xfc13, 0, 0, 0, g(Yes, No, false, false, "", "ثى")}, - {0xfc14, 0, 0, 0, g(Yes, No, false, false, "", "ثي")}, - {0xfc15, 0, 0, 0, g(Yes, No, false, false, "", "جح")}, - {0xfc16, 0, 0, 0, g(Yes, No, false, false, "", "جم")}, - {0xfc17, 0, 0, 0, g(Yes, No, false, false, "", "حج")}, - {0xfc18, 0, 0, 0, g(Yes, No, false, false, "", "حم")}, - {0xfc19, 0, 0, 0, g(Yes, No, false, false, "", "خج")}, - {0xfc1a, 0, 0, 0, g(Yes, No, false, false, "", "خح")}, - {0xfc1b, 0, 0, 0, g(Yes, No, false, false, "", "خم")}, - {0xfc1c, 0, 0, 0, g(Yes, No, false, false, "", "سج")}, - {0xfc1d, 0, 0, 0, g(Yes, No, false, false, "", "سح")}, - {0xfc1e, 0, 0, 0, g(Yes, No, false, false, "", "سخ")}, - {0xfc1f, 0, 0, 0, g(Yes, No, false, false, "", "سم")}, - {0xfc20, 0, 0, 0, g(Yes, No, false, false, "", "صح")}, - {0xfc21, 0, 0, 0, g(Yes, No, false, false, "", "صم")}, - {0xfc22, 0, 0, 0, g(Yes, No, false, false, "", "ضج")}, - {0xfc23, 0, 0, 0, g(Yes, No, false, false, "", "ضح")}, - {0xfc24, 0, 0, 0, g(Yes, No, false, false, "", "ضخ")}, - {0xfc25, 0, 0, 0, g(Yes, No, false, false, "", "ضم")}, - {0xfc26, 0, 0, 0, g(Yes, No, false, false, "", "طح")}, - {0xfc27, 0, 0, 0, g(Yes, No, false, false, "", "طم")}, - {0xfc28, 0, 0, 0, g(Yes, No, false, false, "", "ظم")}, - {0xfc29, 0, 0, 0, g(Yes, No, false, false, "", "عج")}, - {0xfc2a, 0, 0, 0, g(Yes, No, false, false, "", "عم")}, - {0xfc2b, 0, 0, 0, g(Yes, No, false, false, "", "غج")}, - {0xfc2c, 0, 0, 0, g(Yes, No, false, false, "", "غم")}, - {0xfc2d, 0, 0, 0, g(Yes, No, false, false, "", "فج")}, - {0xfc2e, 0, 0, 0, g(Yes, No, false, false, "", "فح")}, - {0xfc2f, 0, 0, 0, g(Yes, No, false, false, "", "فخ")}, - {0xfc30, 0, 0, 0, g(Yes, No, false, false, "", "فم")}, - {0xfc31, 0, 0, 0, g(Yes, No, false, false, "", "فى")}, - {0xfc32, 0, 0, 0, g(Yes, No, false, false, "", "في")}, - {0xfc33, 0, 0, 0, g(Yes, No, false, false, "", "قح")}, - {0xfc34, 0, 0, 0, g(Yes, No, false, false, "", "قم")}, - {0xfc35, 0, 0, 0, g(Yes, No, false, false, "", "قى")}, - {0xfc36, 0, 0, 0, g(Yes, No, false, false, "", "قي")}, - {0xfc37, 0, 0, 0, g(Yes, No, false, false, "", "كا")}, - {0xfc38, 0, 0, 0, g(Yes, No, false, false, "", "كج")}, - {0xfc39, 0, 0, 0, g(Yes, No, false, false, "", "كح")}, - {0xfc3a, 0, 0, 0, g(Yes, No, false, false, "", "كخ")}, - {0xfc3b, 0, 0, 0, g(Yes, No, false, false, "", "كل")}, - {0xfc3c, 0, 0, 0, g(Yes, No, false, false, "", "كم")}, - {0xfc3d, 0, 0, 0, g(Yes, No, false, false, "", "كى")}, - {0xfc3e, 0, 0, 0, g(Yes, No, false, false, "", "كي")}, - {0xfc3f, 0, 0, 0, g(Yes, No, false, false, "", "لج")}, - {0xfc40, 0, 0, 0, g(Yes, No, false, false, "", "لح")}, - {0xfc41, 0, 0, 0, g(Yes, No, false, false, "", "لخ")}, - {0xfc42, 0, 0, 0, g(Yes, No, false, false, "", "لم")}, - {0xfc43, 0, 0, 0, g(Yes, No, false, false, "", "لى")}, - {0xfc44, 0, 0, 0, g(Yes, No, false, false, "", "لي")}, - {0xfc45, 0, 0, 0, g(Yes, No, false, false, "", "مج")}, - {0xfc46, 0, 0, 0, g(Yes, No, false, false, "", "مح")}, - {0xfc47, 0, 0, 0, g(Yes, No, false, false, "", "مخ")}, - {0xfc48, 0, 0, 0, g(Yes, No, false, false, "", "مم")}, - {0xfc49, 0, 0, 0, g(Yes, No, false, false, "", "مى")}, - {0xfc4a, 0, 0, 0, g(Yes, No, false, false, "", "مي")}, - {0xfc4b, 0, 0, 0, g(Yes, No, false, false, "", "نج")}, - {0xfc4c, 0, 0, 0, g(Yes, No, false, false, "", "نح")}, - {0xfc4d, 0, 0, 0, g(Yes, No, false, false, "", "نخ")}, - {0xfc4e, 0, 0, 0, g(Yes, No, false, false, "", "نم")}, - {0xfc4f, 0, 0, 0, g(Yes, No, false, false, "", "نى")}, - {0xfc50, 0, 0, 0, g(Yes, No, false, false, "", "ني")}, - {0xfc51, 0, 0, 0, g(Yes, No, false, false, "", "هج")}, - {0xfc52, 0, 0, 0, g(Yes, No, false, false, "", "هم")}, - {0xfc53, 0, 0, 0, g(Yes, No, false, false, "", "هى")}, - {0xfc54, 0, 0, 0, g(Yes, No, false, false, "", "هي")}, - {0xfc55, 0, 0, 0, g(Yes, No, false, false, "", "يج")}, - {0xfc56, 0, 0, 0, g(Yes, No, false, false, "", "يح")}, - {0xfc57, 0, 0, 0, g(Yes, No, false, false, "", "يخ")}, - {0xfc58, 0, 0, 0, g(Yes, No, false, false, "", "يم")}, - {0xfc59, 0, 0, 0, g(Yes, No, false, false, "", "يى")}, - {0xfc5a, 0, 0, 0, g(Yes, No, false, false, "", "يي")}, - {0xfc5b, 0, 0, 1, g(Yes, No, false, false, "", "ذٰ")}, - {0xfc5c, 0, 0, 1, g(Yes, No, false, false, "", "رٰ")}, - {0xfc5d, 0, 0, 1, g(Yes, No, false, false, "", "ىٰ")}, - {0xfc5e, 0, 0, 2, g(Yes, No, false, false, "", " ٌّ")}, - {0xfc5f, 0, 0, 2, g(Yes, No, false, false, "", " ٍّ")}, - {0xfc60, 0, 0, 2, g(Yes, No, false, false, "", " َّ")}, - {0xfc61, 0, 0, 2, g(Yes, No, false, false, "", " ُّ")}, - {0xfc62, 0, 0, 2, g(Yes, No, false, false, "", " ِّ")}, - {0xfc63, 0, 0, 2, g(Yes, No, false, false, "", " ّٰ")}, - {0xfc64, 0, 0, 0, g(Yes, No, false, false, "", "ئر")}, - {0xfc65, 0, 0, 0, g(Yes, No, false, false, "", "ئز")}, - {0xfc66, 0, 0, 0, g(Yes, No, false, false, "", "ئم")}, - {0xfc67, 0, 0, 0, g(Yes, No, false, false, "", "ئن")}, - {0xfc68, 0, 0, 0, g(Yes, No, false, false, "", "ئى")}, - {0xfc69, 0, 0, 0, g(Yes, No, false, false, "", "ئي")}, - {0xfc6a, 0, 0, 0, g(Yes, No, false, false, "", "بر")}, - {0xfc6b, 0, 0, 0, g(Yes, No, false, false, "", "بز")}, - {0xfc6c, 0, 0, 0, g(Yes, No, false, false, "", "بم")}, - {0xfc6d, 0, 0, 0, g(Yes, No, false, false, "", "بن")}, - {0xfc6e, 0, 0, 0, g(Yes, No, false, false, "", "بى")}, - {0xfc6f, 0, 0, 0, g(Yes, No, false, false, "", "بي")}, - {0xfc70, 0, 0, 0, g(Yes, No, false, false, "", "تر")}, - {0xfc71, 0, 0, 0, g(Yes, No, false, false, "", "تز")}, - {0xfc72, 0, 0, 0, g(Yes, No, false, false, "", "تم")}, - {0xfc73, 0, 0, 0, g(Yes, No, false, false, "", "تن")}, - {0xfc74, 0, 0, 0, g(Yes, No, false, false, "", "تى")}, - {0xfc75, 0, 0, 0, g(Yes, No, false, false, "", "تي")}, - {0xfc76, 0, 0, 0, g(Yes, No, false, false, "", "ثر")}, - {0xfc77, 0, 0, 0, g(Yes, No, false, false, "", "ثز")}, - {0xfc78, 0, 0, 0, g(Yes, No, false, false, "", "ثم")}, - {0xfc79, 0, 0, 0, g(Yes, No, false, false, "", "ثن")}, - {0xfc7a, 0, 0, 0, g(Yes, No, false, false, "", "ثى")}, - {0xfc7b, 0, 0, 0, g(Yes, No, false, false, "", "ثي")}, - {0xfc7c, 0, 0, 0, g(Yes, No, false, false, "", "فى")}, - {0xfc7d, 0, 0, 0, g(Yes, No, false, false, "", "في")}, - {0xfc7e, 0, 0, 0, g(Yes, No, false, false, "", "قى")}, - {0xfc7f, 0, 0, 0, g(Yes, No, false, false, "", "قي")}, - {0xfc80, 0, 0, 0, g(Yes, No, false, false, "", "كا")}, - {0xfc81, 0, 0, 0, g(Yes, No, false, false, "", "كل")}, - {0xfc82, 0, 0, 0, g(Yes, No, false, false, "", "كم")}, - {0xfc83, 0, 0, 0, g(Yes, No, false, false, "", "كى")}, - {0xfc84, 0, 0, 0, g(Yes, No, false, false, "", "كي")}, - {0xfc85, 0, 0, 0, g(Yes, No, false, false, "", "لم")}, - {0xfc86, 0, 0, 0, g(Yes, No, false, false, "", "لى")}, - {0xfc87, 0, 0, 0, g(Yes, No, false, false, "", "لي")}, - {0xfc88, 0, 0, 0, g(Yes, No, false, false, "", "ما")}, - {0xfc89, 0, 0, 0, g(Yes, No, false, false, "", "مم")}, - {0xfc8a, 0, 0, 0, g(Yes, No, false, false, "", "نر")}, - {0xfc8b, 0, 0, 0, g(Yes, No, false, false, "", "نز")}, - {0xfc8c, 0, 0, 0, g(Yes, No, false, false, "", "نم")}, - {0xfc8d, 0, 0, 0, g(Yes, No, false, false, "", "نن")}, - {0xfc8e, 0, 0, 0, g(Yes, No, false, false, "", "نى")}, - {0xfc8f, 0, 0, 0, g(Yes, No, false, false, "", "ني")}, - {0xfc90, 0, 0, 1, g(Yes, No, false, false, "", "ىٰ")}, - {0xfc91, 0, 0, 0, g(Yes, No, false, false, "", "ير")}, - {0xfc92, 0, 0, 0, g(Yes, No, false, false, "", "يز")}, - {0xfc93, 0, 0, 0, g(Yes, No, false, false, "", "يم")}, - {0xfc94, 0, 0, 0, g(Yes, No, false, false, "", "ين")}, - {0xfc95, 0, 0, 0, g(Yes, No, false, false, "", "يى")}, - {0xfc96, 0, 0, 0, g(Yes, No, false, false, "", "يي")}, - {0xfc97, 0, 0, 0, g(Yes, No, false, false, "", "ئج")}, - {0xfc98, 0, 0, 0, g(Yes, No, false, false, "", "ئح")}, - {0xfc99, 0, 0, 0, g(Yes, No, false, false, "", "ئخ")}, - {0xfc9a, 0, 0, 0, g(Yes, No, false, false, "", "ئم")}, - {0xfc9b, 0, 0, 0, g(Yes, No, false, false, "", "ئه")}, - {0xfc9c, 0, 0, 0, g(Yes, No, false, false, "", "بج")}, - {0xfc9d, 0, 0, 0, g(Yes, No, false, false, "", "بح")}, - {0xfc9e, 0, 0, 0, g(Yes, No, false, false, "", "بخ")}, - {0xfc9f, 0, 0, 0, g(Yes, No, false, false, "", "بم")}, - {0xfca0, 0, 0, 0, g(Yes, No, false, false, "", "به")}, - {0xfca1, 0, 0, 0, g(Yes, No, false, false, "", "تج")}, - {0xfca2, 0, 0, 0, g(Yes, No, false, false, "", "تح")}, - {0xfca3, 0, 0, 0, g(Yes, No, false, false, "", "تخ")}, - {0xfca4, 0, 0, 0, g(Yes, No, false, false, "", "تم")}, - {0xfca5, 0, 0, 0, g(Yes, No, false, false, "", "ته")}, - {0xfca6, 0, 0, 0, g(Yes, No, false, false, "", "ثم")}, - {0xfca7, 0, 0, 0, g(Yes, No, false, false, "", "جح")}, - {0xfca8, 0, 0, 0, g(Yes, No, false, false, "", "جم")}, - {0xfca9, 0, 0, 0, g(Yes, No, false, false, "", "حج")}, - {0xfcaa, 0, 0, 0, g(Yes, No, false, false, "", "حم")}, - {0xfcab, 0, 0, 0, g(Yes, No, false, false, "", "خج")}, - {0xfcac, 0, 0, 0, g(Yes, No, false, false, "", "خم")}, - {0xfcad, 0, 0, 0, g(Yes, No, false, false, "", "سج")}, - {0xfcae, 0, 0, 0, g(Yes, No, false, false, "", "سح")}, - {0xfcaf, 0, 0, 0, g(Yes, No, false, false, "", "سخ")}, - {0xfcb0, 0, 0, 0, g(Yes, No, false, false, "", "سم")}, - {0xfcb1, 0, 0, 0, g(Yes, No, false, false, "", "صح")}, - {0xfcb2, 0, 0, 0, g(Yes, No, false, false, "", "صخ")}, - {0xfcb3, 0, 0, 0, g(Yes, No, false, false, "", "صم")}, - {0xfcb4, 0, 0, 0, g(Yes, No, false, false, "", "ضج")}, - {0xfcb5, 0, 0, 0, g(Yes, No, false, false, "", "ضح")}, - {0xfcb6, 0, 0, 0, g(Yes, No, false, false, "", "ضخ")}, - {0xfcb7, 0, 0, 0, g(Yes, No, false, false, "", "ضم")}, - {0xfcb8, 0, 0, 0, g(Yes, No, false, false, "", "طح")}, - {0xfcb9, 0, 0, 0, g(Yes, No, false, false, "", "ظم")}, - {0xfcba, 0, 0, 0, g(Yes, No, false, false, "", "عج")}, - {0xfcbb, 0, 0, 0, g(Yes, No, false, false, "", "عم")}, - {0xfcbc, 0, 0, 0, g(Yes, No, false, false, "", "غج")}, - {0xfcbd, 0, 0, 0, g(Yes, No, false, false, "", "غم")}, - {0xfcbe, 0, 0, 0, g(Yes, No, false, false, "", "فج")}, - {0xfcbf, 0, 0, 0, g(Yes, No, false, false, "", "فح")}, - {0xfcc0, 0, 0, 0, g(Yes, No, false, false, "", "فخ")}, - {0xfcc1, 0, 0, 0, g(Yes, No, false, false, "", "فم")}, - {0xfcc2, 0, 0, 0, g(Yes, No, false, false, "", "قح")}, - {0xfcc3, 0, 0, 0, g(Yes, No, false, false, "", "قم")}, - {0xfcc4, 0, 0, 0, g(Yes, No, false, false, "", "كج")}, - {0xfcc5, 0, 0, 0, g(Yes, No, false, false, "", "كح")}, - {0xfcc6, 0, 0, 0, g(Yes, No, false, false, "", "كخ")}, - {0xfcc7, 0, 0, 0, g(Yes, No, false, false, "", "كل")}, - {0xfcc8, 0, 0, 0, g(Yes, No, false, false, "", "كم")}, - {0xfcc9, 0, 0, 0, g(Yes, No, false, false, "", "لج")}, - {0xfcca, 0, 0, 0, g(Yes, No, false, false, "", "لح")}, - {0xfccb, 0, 0, 0, g(Yes, No, false, false, "", "لخ")}, - {0xfccc, 0, 0, 0, g(Yes, No, false, false, "", "لم")}, - {0xfccd, 0, 0, 0, g(Yes, No, false, false, "", "له")}, - {0xfcce, 0, 0, 0, g(Yes, No, false, false, "", "مج")}, - {0xfccf, 0, 0, 0, g(Yes, No, false, false, "", "مح")}, - {0xfcd0, 0, 0, 0, g(Yes, No, false, false, "", "مخ")}, - {0xfcd1, 0, 0, 0, g(Yes, No, false, false, "", "مم")}, - {0xfcd2, 0, 0, 0, g(Yes, No, false, false, "", "نج")}, - {0xfcd3, 0, 0, 0, g(Yes, No, false, false, "", "نح")}, - {0xfcd4, 0, 0, 0, g(Yes, No, false, false, "", "نخ")}, - {0xfcd5, 0, 0, 0, g(Yes, No, false, false, "", "نم")}, - {0xfcd6, 0, 0, 0, g(Yes, No, false, false, "", "نه")}, - {0xfcd7, 0, 0, 0, g(Yes, No, false, false, "", "هج")}, - {0xfcd8, 0, 0, 0, g(Yes, No, false, false, "", "هم")}, - {0xfcd9, 0, 0, 1, g(Yes, No, false, false, "", "هٰ")}, - {0xfcda, 0, 0, 0, g(Yes, No, false, false, "", "يج")}, - {0xfcdb, 0, 0, 0, g(Yes, No, false, false, "", "يح")}, - {0xfcdc, 0, 0, 0, g(Yes, No, false, false, "", "يخ")}, - {0xfcdd, 0, 0, 0, g(Yes, No, false, false, "", "يم")}, - {0xfcde, 0, 0, 0, g(Yes, No, false, false, "", "يه")}, - {0xfcdf, 0, 0, 0, g(Yes, No, false, false, "", "ئم")}, - {0xfce0, 0, 0, 0, g(Yes, No, false, false, "", "ئه")}, - {0xfce1, 0, 0, 0, g(Yes, No, false, false, "", "بم")}, - {0xfce2, 0, 0, 0, g(Yes, No, false, false, "", "به")}, - {0xfce3, 0, 0, 0, g(Yes, No, false, false, "", "تم")}, - {0xfce4, 0, 0, 0, g(Yes, No, false, false, "", "ته")}, - {0xfce5, 0, 0, 0, g(Yes, No, false, false, "", "ثم")}, - {0xfce6, 0, 0, 0, g(Yes, No, false, false, "", "ثه")}, - {0xfce7, 0, 0, 0, g(Yes, No, false, false, "", "سم")}, - {0xfce8, 0, 0, 0, g(Yes, No, false, false, "", "سه")}, - {0xfce9, 0, 0, 0, g(Yes, No, false, false, "", "شم")}, - {0xfcea, 0, 0, 0, g(Yes, No, false, false, "", "شه")}, - {0xfceb, 0, 0, 0, g(Yes, No, false, false, "", "كل")}, - {0xfcec, 0, 0, 0, g(Yes, No, false, false, "", "كم")}, - {0xfced, 0, 0, 0, g(Yes, No, false, false, "", "لم")}, - {0xfcee, 0, 0, 0, g(Yes, No, false, false, "", "نم")}, - {0xfcef, 0, 0, 0, g(Yes, No, false, false, "", "نه")}, - {0xfcf0, 0, 0, 0, g(Yes, No, false, false, "", "يم")}, - {0xfcf1, 0, 0, 0, g(Yes, No, false, false, "", "يه")}, - {0xfcf2, 0, 0, 2, g(Yes, No, false, false, "", "ـَّ")}, - {0xfcf3, 0, 0, 2, g(Yes, No, false, false, "", "ـُّ")}, - {0xfcf4, 0, 0, 2, g(Yes, No, false, false, "", "ـِّ")}, - {0xfcf5, 0, 0, 0, g(Yes, No, false, false, "", "طى")}, - {0xfcf6, 0, 0, 0, g(Yes, No, false, false, "", "طي")}, - {0xfcf7, 0, 0, 0, g(Yes, No, false, false, "", "عى")}, - {0xfcf8, 0, 0, 0, g(Yes, No, false, false, "", "عي")}, - {0xfcf9, 0, 0, 0, g(Yes, No, false, false, "", "غى")}, - {0xfcfa, 0, 0, 0, g(Yes, No, false, false, "", "غي")}, - {0xfcfb, 0, 0, 0, g(Yes, No, false, false, "", "سى")}, - {0xfcfc, 0, 0, 0, g(Yes, No, false, false, "", "سي")}, - {0xfcfd, 0, 0, 0, g(Yes, No, false, false, "", "شى")}, - {0xfcfe, 0, 0, 0, g(Yes, No, false, false, "", "شي")}, - {0xfcff, 0, 0, 0, g(Yes, No, false, false, "", "حى")}, - {0xfd00, 0, 0, 0, g(Yes, No, false, false, "", "حي")}, - {0xfd01, 0, 0, 0, g(Yes, No, false, false, "", "جى")}, - {0xfd02, 0, 0, 0, g(Yes, No, false, false, "", "جي")}, - {0xfd03, 0, 0, 0, g(Yes, No, false, false, "", "خى")}, - {0xfd04, 0, 0, 0, g(Yes, No, false, false, "", "خي")}, - {0xfd05, 0, 0, 0, g(Yes, No, false, false, "", "صى")}, - {0xfd06, 0, 0, 0, g(Yes, No, false, false, "", "صي")}, - {0xfd07, 0, 0, 0, g(Yes, No, false, false, "", "ضى")}, - {0xfd08, 0, 0, 0, g(Yes, No, false, false, "", "ضي")}, - {0xfd09, 0, 0, 0, g(Yes, No, false, false, "", "شج")}, - {0xfd0a, 0, 0, 0, g(Yes, No, false, false, "", "شح")}, - {0xfd0b, 0, 0, 0, g(Yes, No, false, false, "", "شخ")}, - {0xfd0c, 0, 0, 0, g(Yes, No, false, false, "", "شم")}, - {0xfd0d, 0, 0, 0, g(Yes, No, false, false, "", "شر")}, - {0xfd0e, 0, 0, 0, g(Yes, No, false, false, "", "سر")}, - {0xfd0f, 0, 0, 0, g(Yes, No, false, false, "", "صر")}, - {0xfd10, 0, 0, 0, g(Yes, No, false, false, "", "ضر")}, - {0xfd11, 0, 0, 0, g(Yes, No, false, false, "", "طى")}, - {0xfd12, 0, 0, 0, g(Yes, No, false, false, "", "طي")}, - {0xfd13, 0, 0, 0, g(Yes, No, false, false, "", "عى")}, - {0xfd14, 0, 0, 0, g(Yes, No, false, false, "", "عي")}, - {0xfd15, 0, 0, 0, g(Yes, No, false, false, "", "غى")}, - {0xfd16, 0, 0, 0, g(Yes, No, false, false, "", "غي")}, - {0xfd17, 0, 0, 0, g(Yes, No, false, false, "", "سى")}, - {0xfd18, 0, 0, 0, g(Yes, No, false, false, "", "سي")}, - {0xfd19, 0, 0, 0, g(Yes, No, false, false, "", "شى")}, - {0xfd1a, 0, 0, 0, g(Yes, No, false, false, "", "شي")}, - {0xfd1b, 0, 0, 0, g(Yes, No, false, false, "", "حى")}, - {0xfd1c, 0, 0, 0, g(Yes, No, false, false, "", "حي")}, - {0xfd1d, 0, 0, 0, g(Yes, No, false, false, "", "جى")}, - {0xfd1e, 0, 0, 0, g(Yes, No, false, false, "", "جي")}, - {0xfd1f, 0, 0, 0, g(Yes, No, false, false, "", "خى")}, - {0xfd20, 0, 0, 0, g(Yes, No, false, false, "", "خي")}, - {0xfd21, 0, 0, 0, g(Yes, No, false, false, "", "صى")}, - {0xfd22, 0, 0, 0, g(Yes, No, false, false, "", "صي")}, - {0xfd23, 0, 0, 0, g(Yes, No, false, false, "", "ضى")}, - {0xfd24, 0, 0, 0, g(Yes, No, false, false, "", "ضي")}, - {0xfd25, 0, 0, 0, g(Yes, No, false, false, "", "شج")}, - {0xfd26, 0, 0, 0, g(Yes, No, false, false, "", "شح")}, - {0xfd27, 0, 0, 0, g(Yes, No, false, false, "", "شخ")}, - {0xfd28, 0, 0, 0, g(Yes, No, false, false, "", "شم")}, - {0xfd29, 0, 0, 0, g(Yes, No, false, false, "", "شر")}, - {0xfd2a, 0, 0, 0, g(Yes, No, false, false, "", "سر")}, - {0xfd2b, 0, 0, 0, g(Yes, No, false, false, "", "صر")}, - {0xfd2c, 0, 0, 0, g(Yes, No, false, false, "", "ضر")}, - {0xfd2d, 0, 0, 0, g(Yes, No, false, false, "", "شج")}, - {0xfd2e, 0, 0, 0, g(Yes, No, false, false, "", "شح")}, - {0xfd2f, 0, 0, 0, g(Yes, No, false, false, "", "شخ")}, - {0xfd30, 0, 0, 0, g(Yes, No, false, false, "", "شم")}, - {0xfd31, 0, 0, 0, g(Yes, No, false, false, "", "سه")}, - {0xfd32, 0, 0, 0, g(Yes, No, false, false, "", "شه")}, - {0xfd33, 0, 0, 0, g(Yes, No, false, false, "", "طم")}, - {0xfd34, 0, 0, 0, g(Yes, No, false, false, "", "سج")}, - {0xfd35, 0, 0, 0, g(Yes, No, false, false, "", "سح")}, - {0xfd36, 0, 0, 0, g(Yes, No, false, false, "", "سخ")}, - {0xfd37, 0, 0, 0, g(Yes, No, false, false, "", "شج")}, - {0xfd38, 0, 0, 0, g(Yes, No, false, false, "", "شح")}, - {0xfd39, 0, 0, 0, g(Yes, No, false, false, "", "شخ")}, - {0xfd3a, 0, 0, 0, g(Yes, No, false, false, "", "طم")}, - {0xfd3b, 0, 0, 0, g(Yes, No, false, false, "", "ظم")}, - {0xfd3c, 0, 0, 1, g(Yes, No, false, false, "", "اً")}, - {0xfd3e, 0, 0, 0, f(Yes, false, "")}, - {0xfd50, 0, 0, 0, g(Yes, No, false, false, "", "تجم")}, - {0xfd51, 0, 0, 0, g(Yes, No, false, false, "", "تحج")}, - {0xfd53, 0, 0, 0, g(Yes, No, false, false, "", "تحم")}, - {0xfd54, 0, 0, 0, g(Yes, No, false, false, "", "تخم")}, - {0xfd55, 0, 0, 0, g(Yes, No, false, false, "", "تمج")}, - {0xfd56, 0, 0, 0, g(Yes, No, false, false, "", "تمح")}, - {0xfd57, 0, 0, 0, g(Yes, No, false, false, "", "تمخ")}, - {0xfd58, 0, 0, 0, g(Yes, No, false, false, "", "جمح")}, - {0xfd5a, 0, 0, 0, g(Yes, No, false, false, "", "حمي")}, - {0xfd5b, 0, 0, 0, g(Yes, No, false, false, "", "حمى")}, - {0xfd5c, 0, 0, 0, g(Yes, No, false, false, "", "سحج")}, - {0xfd5d, 0, 0, 0, g(Yes, No, false, false, "", "سجح")}, - {0xfd5e, 0, 0, 0, g(Yes, No, false, false, "", "سجى")}, - {0xfd5f, 0, 0, 0, g(Yes, No, false, false, "", "سمح")}, - {0xfd61, 0, 0, 0, g(Yes, No, false, false, "", "سمج")}, - {0xfd62, 0, 0, 0, g(Yes, No, false, false, "", "سمم")}, - {0xfd64, 0, 0, 0, g(Yes, No, false, false, "", "صحح")}, - {0xfd66, 0, 0, 0, g(Yes, No, false, false, "", "صمم")}, - {0xfd67, 0, 0, 0, g(Yes, No, false, false, "", "شحم")}, - {0xfd69, 0, 0, 0, g(Yes, No, false, false, "", "شجي")}, - {0xfd6a, 0, 0, 0, g(Yes, No, false, false, "", "شمخ")}, - {0xfd6c, 0, 0, 0, g(Yes, No, false, false, "", "شمم")}, - {0xfd6e, 0, 0, 0, g(Yes, No, false, false, "", "ضحى")}, - {0xfd6f, 0, 0, 0, g(Yes, No, false, false, "", "ضخم")}, - {0xfd71, 0, 0, 0, g(Yes, No, false, false, "", "طمح")}, - {0xfd73, 0, 0, 0, g(Yes, No, false, false, "", "طمم")}, - {0xfd74, 0, 0, 0, g(Yes, No, false, false, "", "طمي")}, - {0xfd75, 0, 0, 0, g(Yes, No, false, false, "", "عجم")}, - {0xfd76, 0, 0, 0, g(Yes, No, false, false, "", "عمم")}, - {0xfd78, 0, 0, 0, g(Yes, No, false, false, "", "عمى")}, - {0xfd79, 0, 0, 0, g(Yes, No, false, false, "", "غمم")}, - {0xfd7a, 0, 0, 0, g(Yes, No, false, false, "", "غمي")}, - {0xfd7b, 0, 0, 0, g(Yes, No, false, false, "", "غمى")}, - {0xfd7c, 0, 0, 0, g(Yes, No, false, false, "", "فخم")}, - {0xfd7e, 0, 0, 0, g(Yes, No, false, false, "", "قمح")}, - {0xfd7f, 0, 0, 0, g(Yes, No, false, false, "", "قمم")}, - {0xfd80, 0, 0, 0, g(Yes, No, false, false, "", "لحم")}, - {0xfd81, 0, 0, 0, g(Yes, No, false, false, "", "لحي")}, - {0xfd82, 0, 0, 0, g(Yes, No, false, false, "", "لحى")}, - {0xfd83, 0, 0, 0, g(Yes, No, false, false, "", "لجج")}, - {0xfd85, 0, 0, 0, g(Yes, No, false, false, "", "لخم")}, - {0xfd87, 0, 0, 0, g(Yes, No, false, false, "", "لمح")}, - {0xfd89, 0, 0, 0, g(Yes, No, false, false, "", "محج")}, - {0xfd8a, 0, 0, 0, g(Yes, No, false, false, "", "محم")}, - {0xfd8b, 0, 0, 0, g(Yes, No, false, false, "", "محي")}, - {0xfd8c, 0, 0, 0, g(Yes, No, false, false, "", "مجح")}, - {0xfd8d, 0, 0, 0, g(Yes, No, false, false, "", "مجم")}, - {0xfd8e, 0, 0, 0, g(Yes, No, false, false, "", "مخج")}, - {0xfd8f, 0, 0, 0, g(Yes, No, false, false, "", "مخم")}, - {0xfd90, 0, 0, 0, f(Yes, false, "")}, - {0xfd92, 0, 0, 0, g(Yes, No, false, false, "", "مجخ")}, - {0xfd93, 0, 0, 0, g(Yes, No, false, false, "", "همج")}, - {0xfd94, 0, 0, 0, g(Yes, No, false, false, "", "همم")}, - {0xfd95, 0, 0, 0, g(Yes, No, false, false, "", "نحم")}, - {0xfd96, 0, 0, 0, g(Yes, No, false, false, "", "نحى")}, - {0xfd97, 0, 0, 0, g(Yes, No, false, false, "", "نجم")}, - {0xfd99, 0, 0, 0, g(Yes, No, false, false, "", "نجى")}, - {0xfd9a, 0, 0, 0, g(Yes, No, false, false, "", "نمي")}, - {0xfd9b, 0, 0, 0, g(Yes, No, false, false, "", "نمى")}, - {0xfd9c, 0, 0, 0, g(Yes, No, false, false, "", "يمم")}, - {0xfd9e, 0, 0, 0, g(Yes, No, false, false, "", "بخي")}, - {0xfd9f, 0, 0, 0, g(Yes, No, false, false, "", "تجي")}, - {0xfda0, 0, 0, 0, g(Yes, No, false, false, "", "تجى")}, - {0xfda1, 0, 0, 0, g(Yes, No, false, false, "", "تخي")}, - {0xfda2, 0, 0, 0, g(Yes, No, false, false, "", "تخى")}, - {0xfda3, 0, 0, 0, g(Yes, No, false, false, "", "تمي")}, - {0xfda4, 0, 0, 0, g(Yes, No, false, false, "", "تمى")}, - {0xfda5, 0, 0, 0, g(Yes, No, false, false, "", "جمي")}, - {0xfda6, 0, 0, 0, g(Yes, No, false, false, "", "جحى")}, - {0xfda7, 0, 0, 0, g(Yes, No, false, false, "", "جمى")}, - {0xfda8, 0, 0, 0, g(Yes, No, false, false, "", "سخى")}, - {0xfda9, 0, 0, 0, g(Yes, No, false, false, "", "صحي")}, - {0xfdaa, 0, 0, 0, g(Yes, No, false, false, "", "شحي")}, - {0xfdab, 0, 0, 0, g(Yes, No, false, false, "", "ضحي")}, - {0xfdac, 0, 0, 0, g(Yes, No, false, false, "", "لجي")}, - {0xfdad, 0, 0, 0, g(Yes, No, false, false, "", "لمي")}, - {0xfdae, 0, 0, 0, g(Yes, No, false, false, "", "يحي")}, - {0xfdaf, 0, 0, 0, g(Yes, No, false, false, "", "يجي")}, - {0xfdb0, 0, 0, 0, g(Yes, No, false, false, "", "يمي")}, - {0xfdb1, 0, 0, 0, g(Yes, No, false, false, "", "ممي")}, - {0xfdb2, 0, 0, 0, g(Yes, No, false, false, "", "قمي")}, - {0xfdb3, 0, 0, 0, g(Yes, No, false, false, "", "نحي")}, - {0xfdb4, 0, 0, 0, g(Yes, No, false, false, "", "قمح")}, - {0xfdb5, 0, 0, 0, g(Yes, No, false, false, "", "لحم")}, - {0xfdb6, 0, 0, 0, g(Yes, No, false, false, "", "عمي")}, - {0xfdb7, 0, 0, 0, g(Yes, No, false, false, "", "كمي")}, - {0xfdb8, 0, 0, 0, g(Yes, No, false, false, "", "نجح")}, - {0xfdb9, 0, 0, 0, g(Yes, No, false, false, "", "مخي")}, - {0xfdba, 0, 0, 0, g(Yes, No, false, false, "", "لجم")}, - {0xfdbb, 0, 0, 0, g(Yes, No, false, false, "", "كمم")}, - {0xfdbc, 0, 0, 0, g(Yes, No, false, false, "", "لجم")}, - {0xfdbd, 0, 0, 0, g(Yes, No, false, false, "", "نجح")}, - {0xfdbe, 0, 0, 0, g(Yes, No, false, false, "", "جحي")}, - {0xfdbf, 0, 0, 0, g(Yes, No, false, false, "", "حجي")}, - {0xfdc0, 0, 0, 0, g(Yes, No, false, false, "", "مجي")}, - {0xfdc1, 0, 0, 0, g(Yes, No, false, false, "", "فمي")}, - {0xfdc2, 0, 0, 0, g(Yes, No, false, false, "", "بحي")}, - {0xfdc3, 0, 0, 0, g(Yes, No, false, false, "", "كمم")}, - {0xfdc4, 0, 0, 0, g(Yes, No, false, false, "", "عجم")}, - {0xfdc5, 0, 0, 0, g(Yes, No, false, false, "", "صمم")}, - {0xfdc6, 0, 0, 0, g(Yes, No, false, false, "", "سخي")}, - {0xfdc7, 0, 0, 0, g(Yes, No, false, false, "", "نجي")}, - {0xfdc8, 0, 0, 0, f(Yes, false, "")}, - {0xfdf0, 0, 0, 0, g(Yes, No, false, false, "", "صلے")}, - {0xfdf1, 0, 0, 0, g(Yes, No, false, false, "", "قلے")}, - {0xfdf2, 0, 0, 0, g(Yes, No, false, false, "", "الله")}, - {0xfdf3, 0, 0, 0, g(Yes, No, false, false, "", "اكبر")}, - {0xfdf4, 0, 0, 0, g(Yes, No, false, false, "", "محمد")}, - {0xfdf5, 0, 0, 0, g(Yes, No, false, false, "", "صلعم")}, - {0xfdf6, 0, 0, 0, g(Yes, No, false, false, "", "رسول")}, - {0xfdf7, 0, 0, 0, g(Yes, No, false, false, "", "عليه")}, - {0xfdf8, 0, 0, 0, g(Yes, No, false, false, "", "وسلم")}, - {0xfdf9, 0, 0, 0, g(Yes, No, false, false, "", "صلى")}, - {0xfdfa, 0, 0, 0, g(Yes, No, false, false, "", "صلى الله عليه وسلم")}, - {0xfdfb, 0, 0, 0, g(Yes, No, false, false, "", "جل جلاله")}, - {0xfdfc, 0, 0, 0, g(Yes, No, false, false, "", "ریال")}, - {0xfdfd, 0, 0, 0, f(Yes, false, "")}, - {0xfe10, 0, 0, 0, g(Yes, No, false, false, "", ",")}, - {0xfe11, 0, 0, 0, g(Yes, No, false, false, "", "、")}, - {0xfe12, 0, 0, 0, g(Yes, No, false, false, "", "。")}, - {0xfe13, 0, 0, 0, g(Yes, No, false, false, "", ":")}, - {0xfe14, 0, 0, 0, g(Yes, No, false, false, "", ";")}, - {0xfe15, 0, 0, 0, g(Yes, No, false, false, "", "!")}, - {0xfe16, 0, 0, 0, g(Yes, No, false, false, "", "?")}, - {0xfe17, 0, 0, 0, g(Yes, No, false, false, "", "〖")}, - {0xfe18, 0, 0, 0, g(Yes, No, false, false, "", "〗")}, - {0xfe19, 0, 0, 0, g(Yes, No, false, false, "", "...")}, - {0xfe1a, 0, 0, 0, f(Yes, false, "")}, - {0xfe20, 230, 1, 1, f(Yes, false, "")}, - {0xfe27, 220, 1, 1, f(Yes, false, "")}, - {0xfe2e, 230, 1, 1, f(Yes, false, "")}, - {0xfe30, 0, 0, 0, g(Yes, No, false, false, "", "..")}, - {0xfe31, 0, 0, 0, g(Yes, No, false, false, "", "—")}, - {0xfe32, 0, 0, 0, g(Yes, No, false, false, "", "–")}, - {0xfe33, 0, 0, 0, g(Yes, No, false, false, "", "_")}, - {0xfe35, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0xfe36, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0xfe37, 0, 0, 0, g(Yes, No, false, false, "", "{")}, - {0xfe38, 0, 0, 0, g(Yes, No, false, false, "", "}")}, - {0xfe39, 0, 0, 0, g(Yes, No, false, false, "", "〔")}, - {0xfe3a, 0, 0, 0, g(Yes, No, false, false, "", "〕")}, - {0xfe3b, 0, 0, 0, g(Yes, No, false, false, "", "【")}, - {0xfe3c, 0, 0, 0, g(Yes, No, false, false, "", "】")}, - {0xfe3d, 0, 0, 0, g(Yes, No, false, false, "", "《")}, - {0xfe3e, 0, 0, 0, g(Yes, No, false, false, "", "》")}, - {0xfe3f, 0, 0, 0, g(Yes, No, false, false, "", "〈")}, - {0xfe40, 0, 0, 0, g(Yes, No, false, false, "", "〉")}, - {0xfe41, 0, 0, 0, g(Yes, No, false, false, "", "「")}, - {0xfe42, 0, 0, 0, g(Yes, No, false, false, "", "」")}, - {0xfe43, 0, 0, 0, g(Yes, No, false, false, "", "『")}, - {0xfe44, 0, 0, 0, g(Yes, No, false, false, "", "』")}, - {0xfe45, 0, 0, 0, f(Yes, false, "")}, - {0xfe47, 0, 0, 0, g(Yes, No, false, false, "", "[")}, - {0xfe48, 0, 0, 0, g(Yes, No, false, false, "", "]")}, - {0xfe49, 0, 0, 1, g(Yes, No, false, false, "", " ̅")}, - {0xfe4d, 0, 0, 0, g(Yes, No, false, false, "", "_")}, - {0xfe50, 0, 0, 0, g(Yes, No, false, false, "", ",")}, - {0xfe51, 0, 0, 0, g(Yes, No, false, false, "", "、")}, - {0xfe52, 0, 0, 0, g(Yes, No, false, false, "", ".")}, - {0xfe53, 0, 0, 0, f(Yes, false, "")}, - {0xfe54, 0, 0, 0, g(Yes, No, false, false, "", ";")}, - {0xfe55, 0, 0, 0, g(Yes, No, false, false, "", ":")}, - {0xfe56, 0, 0, 0, g(Yes, No, false, false, "", "?")}, - {0xfe57, 0, 0, 0, g(Yes, No, false, false, "", "!")}, - {0xfe58, 0, 0, 0, g(Yes, No, false, false, "", "—")}, - {0xfe59, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0xfe5a, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0xfe5b, 0, 0, 0, g(Yes, No, false, false, "", "{")}, - {0xfe5c, 0, 0, 0, g(Yes, No, false, false, "", "}")}, - {0xfe5d, 0, 0, 0, g(Yes, No, false, false, "", "〔")}, - {0xfe5e, 0, 0, 0, g(Yes, No, false, false, "", "〕")}, - {0xfe5f, 0, 0, 0, g(Yes, No, false, false, "", "#")}, - {0xfe60, 0, 0, 0, g(Yes, No, false, false, "", "&")}, - {0xfe61, 0, 0, 0, g(Yes, No, false, false, "", "*")}, - {0xfe62, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0xfe63, 0, 0, 0, g(Yes, No, false, false, "", "-")}, - {0xfe64, 0, 0, 0, g(Yes, No, false, false, "", "<")}, - {0xfe65, 0, 0, 0, g(Yes, No, false, false, "", ">")}, - {0xfe66, 0, 0, 0, g(Yes, No, false, false, "", "=")}, - {0xfe67, 0, 0, 0, f(Yes, false, "")}, - {0xfe68, 0, 0, 0, g(Yes, No, false, false, "", "\\")}, - {0xfe69, 0, 0, 0, g(Yes, No, false, false, "", "$")}, - {0xfe6a, 0, 0, 0, g(Yes, No, false, false, "", "%")}, - {0xfe6b, 0, 0, 0, g(Yes, No, false, false, "", "@")}, - {0xfe6c, 0, 0, 0, f(Yes, false, "")}, - {0xfe70, 0, 0, 1, g(Yes, No, false, false, "", " ً")}, - {0xfe71, 0, 0, 1, g(Yes, No, false, false, "", "ـً")}, - {0xfe72, 0, 0, 1, g(Yes, No, false, false, "", " ٌ")}, - {0xfe73, 0, 0, 0, f(Yes, false, "")}, - {0xfe74, 0, 0, 1, g(Yes, No, false, false, "", " ٍ")}, - {0xfe75, 0, 0, 0, f(Yes, false, "")}, - {0xfe76, 0, 0, 1, g(Yes, No, false, false, "", " َ")}, - {0xfe77, 0, 0, 1, g(Yes, No, false, false, "", "ـَ")}, - {0xfe78, 0, 0, 1, g(Yes, No, false, false, "", " ُ")}, - {0xfe79, 0, 0, 1, g(Yes, No, false, false, "", "ـُ")}, - {0xfe7a, 0, 0, 1, g(Yes, No, false, false, "", " ِ")}, - {0xfe7b, 0, 0, 1, g(Yes, No, false, false, "", "ـِ")}, - {0xfe7c, 0, 0, 1, g(Yes, No, false, false, "", " ّ")}, - {0xfe7d, 0, 0, 1, g(Yes, No, false, false, "", "ـّ")}, - {0xfe7e, 0, 0, 1, g(Yes, No, false, false, "", " ْ")}, - {0xfe7f, 0, 0, 1, g(Yes, No, false, false, "", "ـْ")}, - {0xfe80, 0, 0, 0, g(Yes, No, false, false, "", "ء")}, - {0xfe81, 0, 0, 1, g(Yes, No, false, false, "", "آ")}, - {0xfe83, 0, 0, 1, g(Yes, No, false, false, "", "أ")}, - {0xfe85, 0, 0, 1, g(Yes, No, false, false, "", "ؤ")}, - {0xfe87, 0, 0, 1, g(Yes, No, false, false, "", "إ")}, - {0xfe89, 0, 0, 1, g(Yes, No, false, false, "", "ئ")}, - {0xfe8d, 0, 0, 0, g(Yes, No, false, false, "", "ا")}, - {0xfe8f, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0xfe93, 0, 0, 0, g(Yes, No, false, false, "", "ة")}, - {0xfe95, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0xfe99, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0xfe9d, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0xfea1, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0xfea5, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0xfea9, 0, 0, 0, g(Yes, No, false, false, "", "د")}, - {0xfeab, 0, 0, 0, g(Yes, No, false, false, "", "ذ")}, - {0xfead, 0, 0, 0, g(Yes, No, false, false, "", "ر")}, - {0xfeaf, 0, 0, 0, g(Yes, No, false, false, "", "ز")}, - {0xfeb1, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0xfeb5, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0xfeb9, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0xfebd, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0xfec1, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0xfec5, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0xfec9, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0xfecd, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0xfed1, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0xfed5, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0xfed9, 0, 0, 0, g(Yes, No, false, false, "", "ك")}, - {0xfedd, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0xfee1, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0xfee5, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0xfee9, 0, 0, 0, g(Yes, No, false, false, "", "ه")}, - {0xfeed, 0, 0, 0, g(Yes, No, false, false, "", "و")}, - {0xfeef, 0, 0, 0, g(Yes, No, false, false, "", "ى")}, - {0xfef1, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0xfef5, 0, 0, 1, g(Yes, No, false, false, "", "لآ")}, - {0xfef7, 0, 0, 1, g(Yes, No, false, false, "", "لأ")}, - {0xfef9, 0, 0, 1, g(Yes, No, false, false, "", "لإ")}, - {0xfefb, 0, 0, 0, g(Yes, No, false, false, "", "لا")}, - {0xfefd, 0, 0, 0, f(Yes, false, "")}, - {0xff01, 0, 0, 0, g(Yes, No, false, false, "", "!")}, - {0xff02, 0, 0, 0, g(Yes, No, false, false, "", "\"")}, - {0xff03, 0, 0, 0, g(Yes, No, false, false, "", "#")}, - {0xff04, 0, 0, 0, g(Yes, No, false, false, "", "$")}, - {0xff05, 0, 0, 0, g(Yes, No, false, false, "", "%")}, - {0xff06, 0, 0, 0, g(Yes, No, false, false, "", "&")}, - {0xff07, 0, 0, 0, g(Yes, No, false, false, "", "'")}, - {0xff08, 0, 0, 0, g(Yes, No, false, false, "", "(")}, - {0xff09, 0, 0, 0, g(Yes, No, false, false, "", ")")}, - {0xff0a, 0, 0, 0, g(Yes, No, false, false, "", "*")}, - {0xff0b, 0, 0, 0, g(Yes, No, false, false, "", "+")}, - {0xff0c, 0, 0, 0, g(Yes, No, false, false, "", ",")}, - {0xff0d, 0, 0, 0, g(Yes, No, false, false, "", "-")}, - {0xff0e, 0, 0, 0, g(Yes, No, false, false, "", ".")}, - {0xff0f, 0, 0, 0, g(Yes, No, false, false, "", "/")}, - {0xff10, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0xff11, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0xff12, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0xff13, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0xff14, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0xff15, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0xff16, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0xff17, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0xff18, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0xff19, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0xff1a, 0, 0, 0, g(Yes, No, false, false, "", ":")}, - {0xff1b, 0, 0, 0, g(Yes, No, false, false, "", ";")}, - {0xff1c, 0, 0, 0, g(Yes, No, false, false, "", "<")}, - {0xff1d, 0, 0, 0, g(Yes, No, false, false, "", "=")}, - {0xff1e, 0, 0, 0, g(Yes, No, false, false, "", ">")}, - {0xff1f, 0, 0, 0, g(Yes, No, false, false, "", "?")}, - {0xff20, 0, 0, 0, g(Yes, No, false, false, "", "@")}, - {0xff21, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0xff22, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0xff23, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0xff24, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0xff25, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0xff26, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0xff27, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0xff28, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0xff29, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0xff2a, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0xff2b, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0xff2c, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0xff2d, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0xff2e, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0xff2f, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0xff30, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0xff31, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0xff32, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0xff33, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0xff34, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0xff35, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0xff36, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0xff37, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0xff38, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0xff39, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0xff3a, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0xff3b, 0, 0, 0, g(Yes, No, false, false, "", "[")}, - {0xff3c, 0, 0, 0, g(Yes, No, false, false, "", "\\")}, - {0xff3d, 0, 0, 0, g(Yes, No, false, false, "", "]")}, - {0xff3e, 0, 0, 0, g(Yes, No, false, false, "", "^")}, - {0xff3f, 0, 0, 0, g(Yes, No, false, false, "", "_")}, - {0xff40, 0, 0, 0, g(Yes, No, false, false, "", "`")}, - {0xff41, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0xff42, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0xff43, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0xff44, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0xff45, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0xff46, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0xff47, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0xff48, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0xff49, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0xff4a, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0xff4b, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0xff4c, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0xff4d, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0xff4e, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0xff4f, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0xff50, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0xff51, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0xff52, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0xff53, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0xff54, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0xff55, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0xff56, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0xff57, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0xff58, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0xff59, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0xff5a, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0xff5b, 0, 0, 0, g(Yes, No, false, false, "", "{")}, - {0xff5c, 0, 0, 0, g(Yes, No, false, false, "", "|")}, - {0xff5d, 0, 0, 0, g(Yes, No, false, false, "", "}")}, - {0xff5e, 0, 0, 0, g(Yes, No, false, false, "", "~")}, - {0xff5f, 0, 0, 0, g(Yes, No, false, false, "", "⦅")}, - {0xff60, 0, 0, 0, g(Yes, No, false, false, "", "⦆")}, - {0xff61, 0, 0, 0, g(Yes, No, false, false, "", "。")}, - {0xff62, 0, 0, 0, g(Yes, No, false, false, "", "「")}, - {0xff63, 0, 0, 0, g(Yes, No, false, false, "", "」")}, - {0xff64, 0, 0, 0, g(Yes, No, false, false, "", "、")}, - {0xff65, 0, 0, 0, g(Yes, No, false, false, "", "・")}, - {0xff66, 0, 0, 0, g(Yes, No, false, false, "", "ヲ")}, - {0xff67, 0, 0, 0, g(Yes, No, false, false, "", "ァ")}, - {0xff68, 0, 0, 0, g(Yes, No, false, false, "", "ィ")}, - {0xff69, 0, 0, 0, g(Yes, No, false, false, "", "ゥ")}, - {0xff6a, 0, 0, 0, g(Yes, No, false, false, "", "ェ")}, - {0xff6b, 0, 0, 0, g(Yes, No, false, false, "", "ォ")}, - {0xff6c, 0, 0, 0, g(Yes, No, false, false, "", "ャ")}, - {0xff6d, 0, 0, 0, g(Yes, No, false, false, "", "ュ")}, - {0xff6e, 0, 0, 0, g(Yes, No, false, false, "", "ョ")}, - {0xff6f, 0, 0, 0, g(Yes, No, false, false, "", "ッ")}, - {0xff70, 0, 0, 0, g(Yes, No, false, false, "", "ー")}, - {0xff71, 0, 0, 0, g(Yes, No, false, false, "", "ア")}, - {0xff72, 0, 0, 0, g(Yes, No, false, false, "", "イ")}, - {0xff73, 0, 0, 0, g(Yes, No, false, false, "", "ウ")}, - {0xff74, 0, 0, 0, g(Yes, No, false, false, "", "エ")}, - {0xff75, 0, 0, 0, g(Yes, No, false, false, "", "オ")}, - {0xff76, 0, 0, 0, g(Yes, No, false, false, "", "カ")}, - {0xff77, 0, 0, 0, g(Yes, No, false, false, "", "キ")}, - {0xff78, 0, 0, 0, g(Yes, No, false, false, "", "ク")}, - {0xff79, 0, 0, 0, g(Yes, No, false, false, "", "ケ")}, - {0xff7a, 0, 0, 0, g(Yes, No, false, false, "", "コ")}, - {0xff7b, 0, 0, 0, g(Yes, No, false, false, "", "サ")}, - {0xff7c, 0, 0, 0, g(Yes, No, false, false, "", "シ")}, - {0xff7d, 0, 0, 0, g(Yes, No, false, false, "", "ス")}, - {0xff7e, 0, 0, 0, g(Yes, No, false, false, "", "セ")}, - {0xff7f, 0, 0, 0, g(Yes, No, false, false, "", "ソ")}, - {0xff80, 0, 0, 0, g(Yes, No, false, false, "", "タ")}, - {0xff81, 0, 0, 0, g(Yes, No, false, false, "", "チ")}, - {0xff82, 0, 0, 0, g(Yes, No, false, false, "", "ツ")}, - {0xff83, 0, 0, 0, g(Yes, No, false, false, "", "テ")}, - {0xff84, 0, 0, 0, g(Yes, No, false, false, "", "ト")}, - {0xff85, 0, 0, 0, g(Yes, No, false, false, "", "ナ")}, - {0xff86, 0, 0, 0, g(Yes, No, false, false, "", "ニ")}, - {0xff87, 0, 0, 0, g(Yes, No, false, false, "", "ヌ")}, - {0xff88, 0, 0, 0, g(Yes, No, false, false, "", "ネ")}, - {0xff89, 0, 0, 0, g(Yes, No, false, false, "", "ノ")}, - {0xff8a, 0, 0, 0, g(Yes, No, false, false, "", "ハ")}, - {0xff8b, 0, 0, 0, g(Yes, No, false, false, "", "ヒ")}, - {0xff8c, 0, 0, 0, g(Yes, No, false, false, "", "フ")}, - {0xff8d, 0, 0, 0, g(Yes, No, false, false, "", "ヘ")}, - {0xff8e, 0, 0, 0, g(Yes, No, false, false, "", "ホ")}, - {0xff8f, 0, 0, 0, g(Yes, No, false, false, "", "マ")}, - {0xff90, 0, 0, 0, g(Yes, No, false, false, "", "ミ")}, - {0xff91, 0, 0, 0, g(Yes, No, false, false, "", "ム")}, - {0xff92, 0, 0, 0, g(Yes, No, false, false, "", "メ")}, - {0xff93, 0, 0, 0, g(Yes, No, false, false, "", "モ")}, - {0xff94, 0, 0, 0, g(Yes, No, false, false, "", "ヤ")}, - {0xff95, 0, 0, 0, g(Yes, No, false, false, "", "ユ")}, - {0xff96, 0, 0, 0, g(Yes, No, false, false, "", "ヨ")}, - {0xff97, 0, 0, 0, g(Yes, No, false, false, "", "ラ")}, - {0xff98, 0, 0, 0, g(Yes, No, false, false, "", "リ")}, - {0xff99, 0, 0, 0, g(Yes, No, false, false, "", "ル")}, - {0xff9a, 0, 0, 0, g(Yes, No, false, false, "", "レ")}, - {0xff9b, 0, 0, 0, g(Yes, No, false, false, "", "ロ")}, - {0xff9c, 0, 0, 0, g(Yes, No, false, false, "", "ワ")}, - {0xff9d, 0, 0, 0, g(Yes, No, false, false, "", "ン")}, - {0xff9e, 0, 1, 1, g(Yes, No, false, false, "", "゙")}, - {0xff9f, 0, 1, 1, g(Yes, No, false, false, "", "゚")}, - {0xffa0, 0, 0, 0, g(Yes, No, false, false, "", "ᅠ")}, - {0xffa1, 0, 0, 0, g(Yes, No, false, false, "", "ᄀ")}, - {0xffa2, 0, 0, 0, g(Yes, No, false, false, "", "ᄁ")}, - {0xffa3, 0, 1, 1, g(Yes, No, false, false, "", "ᆪ")}, - {0xffa4, 0, 0, 0, g(Yes, No, false, false, "", "ᄂ")}, - {0xffa5, 0, 1, 1, g(Yes, No, false, false, "", "ᆬ")}, - {0xffa6, 0, 1, 1, g(Yes, No, false, false, "", "ᆭ")}, - {0xffa7, 0, 0, 0, g(Yes, No, false, false, "", "ᄃ")}, - {0xffa8, 0, 0, 0, g(Yes, No, false, false, "", "ᄄ")}, - {0xffa9, 0, 0, 0, g(Yes, No, false, false, "", "ᄅ")}, - {0xffaa, 0, 1, 1, g(Yes, No, false, false, "", "ᆰ")}, - {0xffab, 0, 1, 1, g(Yes, No, false, false, "", "ᆱ")}, - {0xffac, 0, 1, 1, g(Yes, No, false, false, "", "ᆲ")}, - {0xffad, 0, 1, 1, g(Yes, No, false, false, "", "ᆳ")}, - {0xffae, 0, 1, 1, g(Yes, No, false, false, "", "ᆴ")}, - {0xffaf, 0, 1, 1, g(Yes, No, false, false, "", "ᆵ")}, - {0xffb0, 0, 0, 0, g(Yes, No, false, false, "", "ᄚ")}, - {0xffb1, 0, 0, 0, g(Yes, No, false, false, "", "ᄆ")}, - {0xffb2, 0, 0, 0, g(Yes, No, false, false, "", "ᄇ")}, - {0xffb3, 0, 0, 0, g(Yes, No, false, false, "", "ᄈ")}, - {0xffb4, 0, 0, 0, g(Yes, No, false, false, "", "ᄡ")}, - {0xffb5, 0, 0, 0, g(Yes, No, false, false, "", "ᄉ")}, - {0xffb6, 0, 0, 0, g(Yes, No, false, false, "", "ᄊ")}, - {0xffb7, 0, 0, 0, g(Yes, No, false, false, "", "ᄋ")}, - {0xffb8, 0, 0, 0, g(Yes, No, false, false, "", "ᄌ")}, - {0xffb9, 0, 0, 0, g(Yes, No, false, false, "", "ᄍ")}, - {0xffba, 0, 0, 0, g(Yes, No, false, false, "", "ᄎ")}, - {0xffbb, 0, 0, 0, g(Yes, No, false, false, "", "ᄏ")}, - {0xffbc, 0, 0, 0, g(Yes, No, false, false, "", "ᄐ")}, - {0xffbd, 0, 0, 0, g(Yes, No, false, false, "", "ᄑ")}, - {0xffbe, 0, 0, 0, g(Yes, No, false, false, "", "ᄒ")}, - {0xffbf, 0, 0, 0, f(Yes, false, "")}, - {0xffc2, 0, 1, 1, g(Yes, No, false, false, "", "ᅡ")}, - {0xffc3, 0, 1, 1, g(Yes, No, false, false, "", "ᅢ")}, - {0xffc4, 0, 1, 1, g(Yes, No, false, false, "", "ᅣ")}, - {0xffc5, 0, 1, 1, g(Yes, No, false, false, "", "ᅤ")}, - {0xffc6, 0, 1, 1, g(Yes, No, false, false, "", "ᅥ")}, - {0xffc7, 0, 1, 1, g(Yes, No, false, false, "", "ᅦ")}, - {0xffc8, 0, 0, 0, f(Yes, false, "")}, - {0xffca, 0, 1, 1, g(Yes, No, false, false, "", "ᅧ")}, - {0xffcb, 0, 1, 1, g(Yes, No, false, false, "", "ᅨ")}, - {0xffcc, 0, 1, 1, g(Yes, No, false, false, "", "ᅩ")}, - {0xffcd, 0, 1, 1, g(Yes, No, false, false, "", "ᅪ")}, - {0xffce, 0, 1, 1, g(Yes, No, false, false, "", "ᅫ")}, - {0xffcf, 0, 1, 1, g(Yes, No, false, false, "", "ᅬ")}, - {0xffd0, 0, 0, 0, f(Yes, false, "")}, - {0xffd2, 0, 1, 1, g(Yes, No, false, false, "", "ᅭ")}, - {0xffd3, 0, 1, 1, g(Yes, No, false, false, "", "ᅮ")}, - {0xffd4, 0, 1, 1, g(Yes, No, false, false, "", "ᅯ")}, - {0xffd5, 0, 1, 1, g(Yes, No, false, false, "", "ᅰ")}, - {0xffd6, 0, 1, 1, g(Yes, No, false, false, "", "ᅱ")}, - {0xffd7, 0, 1, 1, g(Yes, No, false, false, "", "ᅲ")}, - {0xffd8, 0, 0, 0, f(Yes, false, "")}, - {0xffda, 0, 1, 1, g(Yes, No, false, false, "", "ᅳ")}, - {0xffdb, 0, 1, 1, g(Yes, No, false, false, "", "ᅴ")}, - {0xffdc, 0, 1, 1, g(Yes, No, false, false, "", "ᅵ")}, - {0xffdd, 0, 0, 0, f(Yes, false, "")}, - {0xffe0, 0, 0, 0, g(Yes, No, false, false, "", "¢")}, - {0xffe1, 0, 0, 0, g(Yes, No, false, false, "", "£")}, - {0xffe2, 0, 0, 0, g(Yes, No, false, false, "", "¬")}, - {0xffe3, 0, 0, 1, g(Yes, No, false, false, "", " ̄")}, - {0xffe4, 0, 0, 0, g(Yes, No, false, false, "", "¦")}, - {0xffe5, 0, 0, 0, g(Yes, No, false, false, "", "¥")}, - {0xffe6, 0, 0, 0, g(Yes, No, false, false, "", "₩")}, - {0xffe7, 0, 0, 0, f(Yes, false, "")}, - {0xffe8, 0, 0, 0, g(Yes, No, false, false, "", "│")}, - {0xffe9, 0, 0, 0, g(Yes, No, false, false, "", "←")}, - {0xffea, 0, 0, 0, g(Yes, No, false, false, "", "↑")}, - {0xffeb, 0, 0, 0, g(Yes, No, false, false, "", "→")}, - {0xffec, 0, 0, 0, g(Yes, No, false, false, "", "↓")}, - {0xffed, 0, 0, 0, g(Yes, No, false, false, "", "■")}, - {0xffee, 0, 0, 0, g(Yes, No, false, false, "", "○")}, - {0xffef, 0, 0, 0, f(Yes, false, "")}, - {0x101fd, 220, 1, 1, f(Yes, false, "")}, - {0x101fe, 0, 0, 0, f(Yes, false, "")}, - {0x102e0, 220, 1, 1, f(Yes, false, "")}, - {0x102e1, 0, 0, 0, f(Yes, false, "")}, - {0x10376, 230, 1, 1, f(Yes, false, "")}, - {0x1037b, 0, 0, 0, f(Yes, false, "")}, - {0x10a0d, 220, 1, 1, f(Yes, false, "")}, - {0x10a0e, 0, 0, 0, f(Yes, false, "")}, - {0x10a0f, 230, 1, 1, f(Yes, false, "")}, - {0x10a10, 0, 0, 0, f(Yes, false, "")}, - {0x10a38, 230, 1, 1, f(Yes, false, "")}, - {0x10a39, 1, 1, 1, f(Yes, false, "")}, - {0x10a3a, 220, 1, 1, f(Yes, false, "")}, - {0x10a3b, 0, 0, 0, f(Yes, false, "")}, - {0x10a3f, 9, 1, 1, f(Yes, false, "")}, - {0x10a40, 0, 0, 0, f(Yes, false, "")}, - {0x10ae5, 230, 1, 1, f(Yes, false, "")}, - {0x10ae6, 220, 1, 1, f(Yes, false, "")}, - {0x10ae7, 0, 0, 0, f(Yes, false, "")}, - {0x11046, 9, 1, 1, f(Yes, false, "")}, - {0x11047, 0, 0, 0, f(Yes, false, "")}, - {0x1107f, 9, 1, 1, f(Yes, false, "")}, - {0x11080, 0, 0, 0, f(Yes, false, "")}, - {0x11099, 0, 0, 0, f(Yes, true, "")}, - {0x1109a, 0, 0, 1, f(Yes, false, "𑂚")}, - {0x1109b, 0, 0, 0, f(Yes, true, "")}, - {0x1109c, 0, 0, 1, f(Yes, false, "𑂜")}, - {0x1109d, 0, 0, 0, f(Yes, false, "")}, - {0x110a5, 0, 0, 0, f(Yes, true, "")}, - {0x110a6, 0, 0, 0, f(Yes, false, "")}, - {0x110ab, 0, 0, 1, f(Yes, false, "𑂫")}, - {0x110ac, 0, 0, 0, f(Yes, false, "")}, - {0x110b9, 9, 1, 1, f(Yes, false, "")}, - {0x110ba, 7, 1, 1, f(Maybe, false, "")}, - {0x110bb, 0, 0, 0, f(Yes, false, "")}, - {0x11100, 230, 1, 1, f(Yes, false, "")}, - {0x11103, 0, 0, 0, f(Yes, false, "")}, - {0x11127, 0, 1, 1, f(Maybe, false, "")}, - {0x11128, 0, 0, 0, f(Yes, false, "")}, - {0x1112e, 0, 0, 1, f(Yes, false, "𑄮")}, - {0x1112f, 0, 0, 1, f(Yes, false, "𑄯")}, - {0x11130, 0, 0, 0, f(Yes, false, "")}, - {0x11131, 0, 0, 0, f(Yes, true, "")}, - {0x11133, 9, 1, 1, f(Yes, false, "")}, - {0x11135, 0, 0, 0, f(Yes, false, "")}, - {0x11173, 7, 1, 1, f(Yes, false, "")}, - {0x11174, 0, 0, 0, f(Yes, false, "")}, - {0x111c0, 9, 1, 1, f(Yes, false, "")}, - {0x111c1, 0, 0, 0, f(Yes, false, "")}, - {0x111ca, 7, 1, 1, f(Yes, false, "")}, - {0x111cb, 0, 0, 0, f(Yes, false, "")}, - {0x11235, 9, 1, 1, f(Yes, false, "")}, - {0x11236, 7, 1, 1, f(Yes, false, "")}, - {0x11237, 0, 0, 0, f(Yes, false, "")}, - {0x112e9, 7, 1, 1, f(Yes, false, "")}, - {0x112ea, 9, 1, 1, f(Yes, false, "")}, - {0x112eb, 0, 0, 0, f(Yes, false, "")}, - {0x1133c, 7, 1, 1, f(Yes, false, "")}, - {0x1133d, 0, 0, 0, f(Yes, false, "")}, - {0x1133e, 0, 1, 1, f(Maybe, false, "")}, - {0x1133f, 0, 0, 0, f(Yes, false, "")}, - {0x11347, 0, 0, 0, f(Yes, true, "")}, - {0x11348, 0, 0, 0, f(Yes, false, "")}, - {0x1134b, 0, 0, 1, f(Yes, false, "𑍋")}, - {0x1134c, 0, 0, 1, f(Yes, false, "𑍌")}, - {0x1134d, 9, 1, 1, f(Yes, false, "")}, - {0x1134e, 0, 0, 0, f(Yes, false, "")}, - {0x11357, 0, 1, 1, f(Maybe, false, "")}, - {0x11358, 0, 0, 0, f(Yes, false, "")}, - {0x11366, 230, 1, 1, f(Yes, false, "")}, - {0x1136d, 0, 0, 0, f(Yes, false, "")}, - {0x11370, 230, 1, 1, f(Yes, false, "")}, - {0x11375, 0, 0, 0, f(Yes, false, "")}, - {0x11442, 9, 1, 1, f(Yes, false, "")}, - {0x11443, 0, 0, 0, f(Yes, false, "")}, - {0x11446, 7, 1, 1, f(Yes, false, "")}, - {0x11447, 0, 0, 0, f(Yes, false, "")}, - {0x114b0, 0, 1, 1, f(Maybe, false, "")}, - {0x114b1, 0, 0, 0, f(Yes, false, "")}, - {0x114b9, 0, 0, 0, f(Yes, true, "")}, - {0x114ba, 0, 1, 1, f(Maybe, false, "")}, - {0x114bb, 0, 0, 1, f(Yes, false, "𑒻")}, - {0x114bc, 0, 0, 1, f(Yes, false, "𑒼")}, - {0x114bd, 0, 1, 1, f(Maybe, false, "")}, - {0x114be, 0, 0, 1, f(Yes, false, "𑒾")}, - {0x114bf, 0, 0, 0, f(Yes, false, "")}, - {0x114c2, 9, 1, 1, f(Yes, false, "")}, - {0x114c3, 7, 1, 1, f(Yes, false, "")}, - {0x114c4, 0, 0, 0, f(Yes, false, "")}, - {0x115af, 0, 1, 1, f(Maybe, false, "")}, - {0x115b0, 0, 0, 0, f(Yes, false, "")}, - {0x115b8, 0, 0, 0, f(Yes, true, "")}, - {0x115ba, 0, 0, 1, f(Yes, false, "𑖺")}, - {0x115bb, 0, 0, 1, f(Yes, false, "𑖻")}, - {0x115bc, 0, 0, 0, f(Yes, false, "")}, - {0x115bf, 9, 1, 1, f(Yes, false, "")}, - {0x115c0, 7, 1, 1, f(Yes, false, "")}, - {0x115c1, 0, 0, 0, f(Yes, false, "")}, - {0x1163f, 9, 1, 1, f(Yes, false, "")}, - {0x11640, 0, 0, 0, f(Yes, false, "")}, - {0x116b6, 9, 1, 1, f(Yes, false, "")}, - {0x116b7, 7, 1, 1, f(Yes, false, "")}, - {0x116b8, 0, 0, 0, f(Yes, false, "")}, - {0x1172b, 9, 1, 1, f(Yes, false, "")}, - {0x1172c, 0, 0, 0, f(Yes, false, "")}, - {0x11c3f, 9, 1, 1, f(Yes, false, "")}, - {0x11c40, 0, 0, 0, f(Yes, false, "")}, - {0x16af0, 1, 1, 1, f(Yes, false, "")}, - {0x16af5, 0, 0, 0, f(Yes, false, "")}, - {0x16b30, 230, 1, 1, f(Yes, false, "")}, - {0x16b37, 0, 0, 0, f(Yes, false, "")}, - {0x1bc9e, 1, 1, 1, f(Yes, false, "")}, - {0x1bc9f, 0, 0, 0, f(Yes, false, "")}, - {0x1d15e, 0, 0, 1, f(No, false, "𝅗𝅥")}, - {0x1d15f, 0, 0, 1, f(No, false, "𝅘𝅥")}, - {0x1d160, 0, 0, 2, f(No, false, "𝅘𝅥𝅮")}, - {0x1d161, 0, 0, 2, f(No, false, "𝅘𝅥𝅯")}, - {0x1d162, 0, 0, 2, f(No, false, "𝅘𝅥𝅰")}, - {0x1d163, 0, 0, 2, f(No, false, "𝅘𝅥𝅱")}, - {0x1d164, 0, 0, 2, f(No, false, "𝅘𝅥𝅲")}, - {0x1d165, 216, 1, 1, f(Yes, false, "")}, - {0x1d167, 1, 1, 1, f(Yes, false, "")}, - {0x1d16a, 0, 0, 0, f(Yes, false, "")}, - {0x1d16d, 226, 1, 1, f(Yes, false, "")}, - {0x1d16e, 216, 1, 1, f(Yes, false, "")}, - {0x1d173, 0, 0, 0, f(Yes, false, "")}, - {0x1d17b, 220, 1, 1, f(Yes, false, "")}, - {0x1d183, 0, 0, 0, f(Yes, false, "")}, - {0x1d185, 230, 1, 1, f(Yes, false, "")}, - {0x1d18a, 220, 1, 1, f(Yes, false, "")}, - {0x1d18c, 0, 0, 0, f(Yes, false, "")}, - {0x1d1aa, 230, 1, 1, f(Yes, false, "")}, - {0x1d1ae, 0, 0, 0, f(Yes, false, "")}, - {0x1d1bb, 0, 0, 1, f(No, false, "𝆹𝅥")}, - {0x1d1bc, 0, 0, 1, f(No, false, "𝆺𝅥")}, - {0x1d1bd, 0, 0, 2, f(No, false, "𝆹𝅥𝅮")}, - {0x1d1be, 0, 0, 2, f(No, false, "𝆺𝅥𝅮")}, - {0x1d1bf, 0, 0, 2, f(No, false, "𝆹𝅥𝅯")}, - {0x1d1c0, 0, 0, 2, f(No, false, "𝆺𝅥𝅯")}, - {0x1d1c1, 0, 0, 0, f(Yes, false, "")}, - {0x1d242, 230, 1, 1, f(Yes, false, "")}, - {0x1d245, 0, 0, 0, f(Yes, false, "")}, - {0x1d400, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d401, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d402, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d403, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d404, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d405, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d406, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d407, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d408, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d409, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d40a, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d40b, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d40c, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d40d, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d40e, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d40f, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d410, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d411, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d412, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d413, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d414, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d415, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d416, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d417, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d418, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d419, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d41a, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d41b, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d41c, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d41d, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d41e, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d41f, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d420, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d421, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d422, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d423, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d424, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d425, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d426, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d427, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d428, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d429, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d42a, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d42b, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d42c, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d42d, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d42e, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d42f, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d430, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d431, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d432, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d433, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d434, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d435, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d436, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d437, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d438, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d439, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d43a, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d43b, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d43c, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d43d, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d43e, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d43f, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d440, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d441, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d442, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d443, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d444, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d445, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d446, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d447, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d448, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d449, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d44a, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d44b, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d44c, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d44d, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d44e, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d44f, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d450, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d451, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d452, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d453, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d454, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d455, 0, 0, 0, f(Yes, false, "")}, - {0x1d456, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d457, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d458, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d459, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d45a, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d45b, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d45c, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d45d, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d45e, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d45f, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d460, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d461, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d462, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d463, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d464, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d465, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d466, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d467, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d468, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d469, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d46a, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d46b, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d46c, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d46d, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d46e, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d46f, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d470, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d471, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d472, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d473, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d474, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d475, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d476, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d477, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d478, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d479, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d47a, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d47b, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d47c, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d47d, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d47e, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d47f, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d480, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d481, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d482, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d483, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d484, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d485, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d486, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d487, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d488, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d489, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d48a, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d48b, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d48c, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d48d, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d48e, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d48f, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d490, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d491, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d492, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d493, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d494, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d495, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d496, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d497, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d498, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d499, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d49a, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d49b, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d49c, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d49d, 0, 0, 0, f(Yes, false, "")}, - {0x1d49e, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d49f, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d4a0, 0, 0, 0, f(Yes, false, "")}, - {0x1d4a2, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d4a3, 0, 0, 0, f(Yes, false, "")}, - {0x1d4a5, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d4a6, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d4a7, 0, 0, 0, f(Yes, false, "")}, - {0x1d4a9, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d4aa, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d4ab, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d4ac, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d4ad, 0, 0, 0, f(Yes, false, "")}, - {0x1d4ae, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d4af, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d4b0, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d4b1, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d4b2, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d4b3, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d4b4, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d4b5, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d4b6, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d4b7, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d4b8, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d4b9, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d4ba, 0, 0, 0, f(Yes, false, "")}, - {0x1d4bb, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d4bc, 0, 0, 0, f(Yes, false, "")}, - {0x1d4bd, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d4be, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d4bf, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d4c0, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d4c1, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d4c2, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d4c3, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d4c4, 0, 0, 0, f(Yes, false, "")}, - {0x1d4c5, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d4c6, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d4c7, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d4c8, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d4c9, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d4ca, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d4cb, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d4cc, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d4cd, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d4ce, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d4cf, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d4d0, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d4d1, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d4d2, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d4d3, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d4d4, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d4d5, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d4d6, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d4d7, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d4d8, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d4d9, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d4da, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d4db, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d4dc, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d4dd, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d4de, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d4df, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d4e0, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d4e1, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d4e2, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d4e3, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d4e4, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d4e5, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d4e6, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d4e7, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d4e8, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d4e9, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d4ea, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d4eb, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d4ec, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d4ed, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d4ee, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d4ef, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d4f0, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d4f1, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d4f2, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d4f3, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d4f4, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d4f5, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d4f6, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d4f7, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d4f8, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d4f9, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d4fa, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d4fb, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d4fc, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d4fd, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d4fe, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d4ff, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d500, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d501, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d502, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d503, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d504, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d505, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d506, 0, 0, 0, f(Yes, false, "")}, - {0x1d507, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d508, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d509, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d50a, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d50b, 0, 0, 0, f(Yes, false, "")}, - {0x1d50d, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d50e, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d50f, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d510, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d511, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d512, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d513, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d514, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d515, 0, 0, 0, f(Yes, false, "")}, - {0x1d516, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d517, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d518, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d519, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d51a, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d51b, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d51c, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d51d, 0, 0, 0, f(Yes, false, "")}, - {0x1d51e, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d51f, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d520, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d521, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d522, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d523, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d524, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d525, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d526, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d527, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d528, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d529, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d52a, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d52b, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d52c, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d52d, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d52e, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d52f, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d530, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d531, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d532, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d533, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d534, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d535, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d536, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d537, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d538, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d539, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d53a, 0, 0, 0, f(Yes, false, "")}, - {0x1d53b, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d53c, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d53d, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d53e, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d53f, 0, 0, 0, f(Yes, false, "")}, - {0x1d540, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d541, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d542, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d543, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d544, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d545, 0, 0, 0, f(Yes, false, "")}, - {0x1d546, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d547, 0, 0, 0, f(Yes, false, "")}, - {0x1d54a, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d54b, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d54c, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d54d, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d54e, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d54f, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d550, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d551, 0, 0, 0, f(Yes, false, "")}, - {0x1d552, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d553, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d554, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d555, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d556, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d557, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d558, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d559, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d55a, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d55b, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d55c, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d55d, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d55e, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d55f, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d560, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d561, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d562, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d563, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d564, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d565, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d566, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d567, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d568, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d569, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d56a, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d56b, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d56c, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d56d, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d56e, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d56f, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d570, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d571, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d572, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d573, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d574, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d575, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d576, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d577, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d578, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d579, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d57a, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d57b, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d57c, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d57d, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d57e, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d57f, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d580, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d581, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d582, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d583, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d584, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d585, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d586, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d587, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d588, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d589, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d58a, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d58b, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d58c, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d58d, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d58e, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d58f, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d590, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d591, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d592, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d593, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d594, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d595, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d596, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d597, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d598, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d599, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d59a, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d59b, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d59c, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d59d, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d59e, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d59f, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d5a0, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d5a1, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d5a2, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d5a3, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d5a4, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d5a5, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d5a6, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d5a7, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d5a8, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d5a9, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d5aa, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d5ab, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d5ac, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d5ad, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d5ae, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d5af, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d5b0, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d5b1, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d5b2, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d5b3, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d5b4, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d5b5, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d5b6, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d5b7, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d5b8, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d5b9, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d5ba, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d5bb, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d5bc, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d5bd, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d5be, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d5bf, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d5c0, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d5c1, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d5c2, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d5c3, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d5c4, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d5c5, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d5c6, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d5c7, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d5c8, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d5c9, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d5ca, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d5cb, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d5cc, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d5cd, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d5ce, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d5cf, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d5d0, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d5d1, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d5d2, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d5d3, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d5d4, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d5d5, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d5d6, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d5d7, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d5d8, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d5d9, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d5da, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d5db, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d5dc, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d5dd, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d5de, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d5df, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d5e0, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d5e1, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d5e2, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d5e3, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d5e4, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d5e5, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d5e6, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d5e7, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d5e8, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d5e9, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d5ea, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d5eb, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d5ec, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d5ed, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d5ee, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d5ef, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d5f0, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d5f1, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d5f2, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d5f3, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d5f4, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d5f5, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d5f6, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d5f7, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d5f8, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d5f9, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d5fa, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d5fb, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d5fc, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d5fd, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d5fe, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d5ff, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d600, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d601, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d602, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d603, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d604, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d605, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d606, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d607, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d608, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d609, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d60a, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d60b, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d60c, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d60d, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d60e, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d60f, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d610, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d611, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d612, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d613, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d614, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d615, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d616, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d617, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d618, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d619, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d61a, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d61b, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d61c, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d61d, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d61e, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d61f, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d620, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d621, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d622, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d623, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d624, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d625, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d626, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d627, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d628, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d629, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d62a, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d62b, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d62c, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d62d, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d62e, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d62f, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d630, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d631, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d632, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d633, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d634, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d635, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d636, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d637, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d638, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d639, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d63a, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d63b, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d63c, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d63d, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d63e, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d63f, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d640, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d641, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d642, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d643, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d644, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d645, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d646, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d647, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d648, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d649, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d64a, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d64b, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d64c, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d64d, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d64e, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d64f, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d650, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d651, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d652, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d653, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d654, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d655, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d656, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d657, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d658, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d659, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d65a, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d65b, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d65c, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d65d, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d65e, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d65f, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d660, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d661, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d662, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d663, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d664, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d665, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d666, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d667, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d668, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d669, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d66a, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d66b, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d66c, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d66d, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d66e, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d66f, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d670, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1d671, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1d672, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1d673, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1d674, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1d675, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1d676, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1d677, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1d678, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1d679, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1d67a, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1d67b, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1d67c, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1d67d, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1d67e, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1d67f, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1d680, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1d681, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1d682, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1d683, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1d684, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1d685, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1d686, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1d687, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1d688, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1d689, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1d68a, 0, 0, 0, g(Yes, No, false, false, "", "a")}, - {0x1d68b, 0, 0, 0, g(Yes, No, false, false, "", "b")}, - {0x1d68c, 0, 0, 0, g(Yes, No, false, false, "", "c")}, - {0x1d68d, 0, 0, 0, g(Yes, No, false, false, "", "d")}, - {0x1d68e, 0, 0, 0, g(Yes, No, false, false, "", "e")}, - {0x1d68f, 0, 0, 0, g(Yes, No, false, false, "", "f")}, - {0x1d690, 0, 0, 0, g(Yes, No, false, false, "", "g")}, - {0x1d691, 0, 0, 0, g(Yes, No, false, false, "", "h")}, - {0x1d692, 0, 0, 0, g(Yes, No, false, false, "", "i")}, - {0x1d693, 0, 0, 0, g(Yes, No, false, false, "", "j")}, - {0x1d694, 0, 0, 0, g(Yes, No, false, false, "", "k")}, - {0x1d695, 0, 0, 0, g(Yes, No, false, false, "", "l")}, - {0x1d696, 0, 0, 0, g(Yes, No, false, false, "", "m")}, - {0x1d697, 0, 0, 0, g(Yes, No, false, false, "", "n")}, - {0x1d698, 0, 0, 0, g(Yes, No, false, false, "", "o")}, - {0x1d699, 0, 0, 0, g(Yes, No, false, false, "", "p")}, - {0x1d69a, 0, 0, 0, g(Yes, No, false, false, "", "q")}, - {0x1d69b, 0, 0, 0, g(Yes, No, false, false, "", "r")}, - {0x1d69c, 0, 0, 0, g(Yes, No, false, false, "", "s")}, - {0x1d69d, 0, 0, 0, g(Yes, No, false, false, "", "t")}, - {0x1d69e, 0, 0, 0, g(Yes, No, false, false, "", "u")}, - {0x1d69f, 0, 0, 0, g(Yes, No, false, false, "", "v")}, - {0x1d6a0, 0, 0, 0, g(Yes, No, false, false, "", "w")}, - {0x1d6a1, 0, 0, 0, g(Yes, No, false, false, "", "x")}, - {0x1d6a2, 0, 0, 0, g(Yes, No, false, false, "", "y")}, - {0x1d6a3, 0, 0, 0, g(Yes, No, false, false, "", "z")}, - {0x1d6a4, 0, 0, 0, g(Yes, No, false, false, "", "ı")}, - {0x1d6a5, 0, 0, 0, g(Yes, No, false, false, "", "ȷ")}, - {0x1d6a6, 0, 0, 0, f(Yes, false, "")}, - {0x1d6a8, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d6a9, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d6aa, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d6ab, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d6ac, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d6ad, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d6ae, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d6af, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d6b0, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d6b1, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d6b2, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d6b3, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d6b4, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d6b5, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d6b6, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d6b7, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d6b8, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d6b9, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d6ba, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d6bb, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d6bc, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d6bd, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d6be, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d6bf, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d6c0, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d6c1, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d6c2, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d6c3, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d6c4, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d6c5, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d6c6, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d6c7, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d6c8, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d6c9, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d6ca, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d6cb, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d6cc, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d6cd, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d6ce, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d6cf, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d6d0, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d6d1, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d6d2, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d6d3, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d6d4, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d6d5, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d6d6, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d6d7, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d6d8, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d6d9, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d6da, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d6db, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d6dc, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d6dd, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d6de, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d6df, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d6e0, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d6e1, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d6e2, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d6e3, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d6e4, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d6e5, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d6e6, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d6e7, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d6e8, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d6e9, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d6ea, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d6eb, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d6ec, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d6ed, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d6ee, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d6ef, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d6f0, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d6f1, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d6f2, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d6f3, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d6f4, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d6f5, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d6f6, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d6f7, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d6f8, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d6f9, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d6fa, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d6fb, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d6fc, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d6fd, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d6fe, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d6ff, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d700, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d701, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d702, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d703, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d704, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d705, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d706, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d707, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d708, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d709, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d70a, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d70b, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d70c, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d70d, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d70e, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d70f, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d710, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d711, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d712, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d713, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d714, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d715, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d716, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d717, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d718, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d719, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d71a, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d71b, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d71c, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d71d, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d71e, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d71f, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d720, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d721, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d722, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d723, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d724, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d725, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d726, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d727, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d728, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d729, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d72a, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d72b, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d72c, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d72d, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d72e, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d72f, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d730, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d731, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d732, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d733, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d734, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d735, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d736, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d737, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d738, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d739, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d73a, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d73b, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d73c, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d73d, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d73e, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d73f, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d740, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d741, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d742, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d743, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d744, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d745, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d746, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d747, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d748, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d749, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d74a, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d74b, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d74c, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d74d, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d74e, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d74f, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d750, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d751, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d752, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d753, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d754, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d755, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d756, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d757, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d758, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d759, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d75a, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d75b, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d75c, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d75d, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d75e, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d75f, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d760, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d761, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d762, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d763, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d764, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d765, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d766, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d767, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d768, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d769, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d76a, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d76b, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d76c, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d76d, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d76e, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d76f, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d770, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d771, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d772, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d773, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d774, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d775, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d776, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d777, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d778, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d779, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d77a, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d77b, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d77c, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d77d, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d77e, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d77f, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d780, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d781, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d782, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d783, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d784, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d785, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d786, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d787, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d788, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d789, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d78a, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d78b, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d78c, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d78d, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d78e, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d78f, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d790, 0, 0, 0, g(Yes, No, false, false, "", "Α")}, - {0x1d791, 0, 0, 0, g(Yes, No, false, false, "", "Β")}, - {0x1d792, 0, 0, 0, g(Yes, No, false, false, "", "Γ")}, - {0x1d793, 0, 0, 0, g(Yes, No, false, false, "", "Δ")}, - {0x1d794, 0, 0, 0, g(Yes, No, false, false, "", "Ε")}, - {0x1d795, 0, 0, 0, g(Yes, No, false, false, "", "Ζ")}, - {0x1d796, 0, 0, 0, g(Yes, No, false, false, "", "Η")}, - {0x1d797, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d798, 0, 0, 0, g(Yes, No, false, false, "", "Ι")}, - {0x1d799, 0, 0, 0, g(Yes, No, false, false, "", "Κ")}, - {0x1d79a, 0, 0, 0, g(Yes, No, false, false, "", "Λ")}, - {0x1d79b, 0, 0, 0, g(Yes, No, false, false, "", "Μ")}, - {0x1d79c, 0, 0, 0, g(Yes, No, false, false, "", "Ν")}, - {0x1d79d, 0, 0, 0, g(Yes, No, false, false, "", "Ξ")}, - {0x1d79e, 0, 0, 0, g(Yes, No, false, false, "", "Ο")}, - {0x1d79f, 0, 0, 0, g(Yes, No, false, false, "", "Π")}, - {0x1d7a0, 0, 0, 0, g(Yes, No, false, false, "", "Ρ")}, - {0x1d7a1, 0, 0, 0, g(Yes, No, false, false, "", "Θ")}, - {0x1d7a2, 0, 0, 0, g(Yes, No, false, false, "", "Σ")}, - {0x1d7a3, 0, 0, 0, g(Yes, No, false, false, "", "Τ")}, - {0x1d7a4, 0, 0, 0, g(Yes, No, false, false, "", "Υ")}, - {0x1d7a5, 0, 0, 0, g(Yes, No, false, false, "", "Φ")}, - {0x1d7a6, 0, 0, 0, g(Yes, No, false, false, "", "Χ")}, - {0x1d7a7, 0, 0, 0, g(Yes, No, false, false, "", "Ψ")}, - {0x1d7a8, 0, 0, 0, g(Yes, No, false, false, "", "Ω")}, - {0x1d7a9, 0, 0, 0, g(Yes, No, false, false, "", "∇")}, - {0x1d7aa, 0, 0, 0, g(Yes, No, false, false, "", "α")}, - {0x1d7ab, 0, 0, 0, g(Yes, No, false, false, "", "β")}, - {0x1d7ac, 0, 0, 0, g(Yes, No, false, false, "", "γ")}, - {0x1d7ad, 0, 0, 0, g(Yes, No, false, false, "", "δ")}, - {0x1d7ae, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d7af, 0, 0, 0, g(Yes, No, false, false, "", "ζ")}, - {0x1d7b0, 0, 0, 0, g(Yes, No, false, false, "", "η")}, - {0x1d7b1, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d7b2, 0, 0, 0, g(Yes, No, false, false, "", "ι")}, - {0x1d7b3, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d7b4, 0, 0, 0, g(Yes, No, false, false, "", "λ")}, - {0x1d7b5, 0, 0, 0, g(Yes, No, false, false, "", "μ")}, - {0x1d7b6, 0, 0, 0, g(Yes, No, false, false, "", "ν")}, - {0x1d7b7, 0, 0, 0, g(Yes, No, false, false, "", "ξ")}, - {0x1d7b8, 0, 0, 0, g(Yes, No, false, false, "", "ο")}, - {0x1d7b9, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d7ba, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d7bb, 0, 0, 0, g(Yes, No, false, false, "", "ς")}, - {0x1d7bc, 0, 0, 0, g(Yes, No, false, false, "", "σ")}, - {0x1d7bd, 0, 0, 0, g(Yes, No, false, false, "", "τ")}, - {0x1d7be, 0, 0, 0, g(Yes, No, false, false, "", "υ")}, - {0x1d7bf, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d7c0, 0, 0, 0, g(Yes, No, false, false, "", "χ")}, - {0x1d7c1, 0, 0, 0, g(Yes, No, false, false, "", "ψ")}, - {0x1d7c2, 0, 0, 0, g(Yes, No, false, false, "", "ω")}, - {0x1d7c3, 0, 0, 0, g(Yes, No, false, false, "", "∂")}, - {0x1d7c4, 0, 0, 0, g(Yes, No, false, false, "", "ε")}, - {0x1d7c5, 0, 0, 0, g(Yes, No, false, false, "", "θ")}, - {0x1d7c6, 0, 0, 0, g(Yes, No, false, false, "", "κ")}, - {0x1d7c7, 0, 0, 0, g(Yes, No, false, false, "", "φ")}, - {0x1d7c8, 0, 0, 0, g(Yes, No, false, false, "", "ρ")}, - {0x1d7c9, 0, 0, 0, g(Yes, No, false, false, "", "π")}, - {0x1d7ca, 0, 0, 0, g(Yes, No, false, false, "", "Ϝ")}, - {0x1d7cb, 0, 0, 0, g(Yes, No, false, false, "", "ϝ")}, - {0x1d7cc, 0, 0, 0, f(Yes, false, "")}, - {0x1d7ce, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7cf, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7d0, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7d1, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7d2, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7d3, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7d4, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7d5, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7d6, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7d7, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d7d8, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7d9, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7da, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7db, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7dc, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7dd, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7de, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7df, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7e0, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7e1, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d7e2, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7e3, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7e4, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7e5, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7e6, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7e7, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7e8, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7e9, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7ea, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7eb, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d7ec, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7ed, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7ee, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7ef, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7f0, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7f1, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7f2, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7f3, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7f4, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7f5, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d7f6, 0, 0, 0, g(Yes, No, false, false, "", "0")}, - {0x1d7f7, 0, 0, 0, g(Yes, No, false, false, "", "1")}, - {0x1d7f8, 0, 0, 0, g(Yes, No, false, false, "", "2")}, - {0x1d7f9, 0, 0, 0, g(Yes, No, false, false, "", "3")}, - {0x1d7fa, 0, 0, 0, g(Yes, No, false, false, "", "4")}, - {0x1d7fb, 0, 0, 0, g(Yes, No, false, false, "", "5")}, - {0x1d7fc, 0, 0, 0, g(Yes, No, false, false, "", "6")}, - {0x1d7fd, 0, 0, 0, g(Yes, No, false, false, "", "7")}, - {0x1d7fe, 0, 0, 0, g(Yes, No, false, false, "", "8")}, - {0x1d7ff, 0, 0, 0, g(Yes, No, false, false, "", "9")}, - {0x1d800, 0, 0, 0, f(Yes, false, "")}, - {0x1e000, 230, 1, 1, f(Yes, false, "")}, - {0x1e007, 0, 0, 0, f(Yes, false, "")}, - {0x1e008, 230, 1, 1, f(Yes, false, "")}, - {0x1e019, 0, 0, 0, f(Yes, false, "")}, - {0x1e01b, 230, 1, 1, f(Yes, false, "")}, - {0x1e022, 0, 0, 0, f(Yes, false, "")}, - {0x1e023, 230, 1, 1, f(Yes, false, "")}, - {0x1e025, 0, 0, 0, f(Yes, false, "")}, - {0x1e026, 230, 1, 1, f(Yes, false, "")}, - {0x1e02b, 0, 0, 0, f(Yes, false, "")}, - {0x1e8d0, 220, 1, 1, f(Yes, false, "")}, - {0x1e8d7, 0, 0, 0, f(Yes, false, "")}, - {0x1e944, 230, 1, 1, f(Yes, false, "")}, - {0x1e94a, 7, 1, 1, f(Yes, false, "")}, - {0x1e94b, 0, 0, 0, f(Yes, false, "")}, - {0x1ee00, 0, 0, 0, g(Yes, No, false, false, "", "ا")}, - {0x1ee01, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1ee02, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee03, 0, 0, 0, g(Yes, No, false, false, "", "د")}, - {0x1ee04, 0, 0, 0, f(Yes, false, "")}, - {0x1ee05, 0, 0, 0, g(Yes, No, false, false, "", "و")}, - {0x1ee06, 0, 0, 0, g(Yes, No, false, false, "", "ز")}, - {0x1ee07, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee08, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0x1ee09, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee0a, 0, 0, 0, g(Yes, No, false, false, "", "ك")}, - {0x1ee0b, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1ee0c, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1ee0d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee0e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee0f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee10, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1ee11, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee12, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee13, 0, 0, 0, g(Yes, No, false, false, "", "ر")}, - {0x1ee14, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee15, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1ee16, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1ee17, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee18, 0, 0, 0, g(Yes, No, false, false, "", "ذ")}, - {0x1ee19, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee1a, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0x1ee1b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee1c, 0, 0, 0, g(Yes, No, false, false, "", "ٮ")}, - {0x1ee1d, 0, 0, 0, g(Yes, No, false, false, "", "ں")}, - {0x1ee1e, 0, 0, 0, g(Yes, No, false, false, "", "ڡ")}, - {0x1ee1f, 0, 0, 0, g(Yes, No, false, false, "", "ٯ")}, - {0x1ee20, 0, 0, 0, f(Yes, false, "")}, - {0x1ee21, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1ee22, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee23, 0, 0, 0, f(Yes, false, "")}, - {0x1ee24, 0, 0, 0, g(Yes, No, false, false, "", "ه")}, - {0x1ee25, 0, 0, 0, f(Yes, false, "")}, - {0x1ee27, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee28, 0, 0, 0, f(Yes, false, "")}, - {0x1ee29, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee2a, 0, 0, 0, g(Yes, No, false, false, "", "ك")}, - {0x1ee2b, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1ee2c, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1ee2d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee2e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee2f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee30, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1ee31, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee32, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee33, 0, 0, 0, f(Yes, false, "")}, - {0x1ee34, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee35, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1ee36, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1ee37, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee38, 0, 0, 0, f(Yes, false, "")}, - {0x1ee39, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee3a, 0, 0, 0, f(Yes, false, "")}, - {0x1ee3b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee3c, 0, 0, 0, f(Yes, false, "")}, - {0x1ee42, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee43, 0, 0, 0, f(Yes, false, "")}, - {0x1ee47, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee48, 0, 0, 0, f(Yes, false, "")}, - {0x1ee49, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee4a, 0, 0, 0, f(Yes, false, "")}, - {0x1ee4b, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1ee4c, 0, 0, 0, f(Yes, false, "")}, - {0x1ee4d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee4e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee4f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee50, 0, 0, 0, f(Yes, false, "")}, - {0x1ee51, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee52, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee53, 0, 0, 0, f(Yes, false, "")}, - {0x1ee54, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee55, 0, 0, 0, f(Yes, false, "")}, - {0x1ee57, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee58, 0, 0, 0, f(Yes, false, "")}, - {0x1ee59, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee5a, 0, 0, 0, f(Yes, false, "")}, - {0x1ee5b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee5c, 0, 0, 0, f(Yes, false, "")}, - {0x1ee5d, 0, 0, 0, g(Yes, No, false, false, "", "ں")}, - {0x1ee5e, 0, 0, 0, f(Yes, false, "")}, - {0x1ee5f, 0, 0, 0, g(Yes, No, false, false, "", "ٯ")}, - {0x1ee60, 0, 0, 0, f(Yes, false, "")}, - {0x1ee61, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1ee62, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee63, 0, 0, 0, f(Yes, false, "")}, - {0x1ee64, 0, 0, 0, g(Yes, No, false, false, "", "ه")}, - {0x1ee65, 0, 0, 0, f(Yes, false, "")}, - {0x1ee67, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee68, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0x1ee69, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee6a, 0, 0, 0, g(Yes, No, false, false, "", "ك")}, - {0x1ee6b, 0, 0, 0, f(Yes, false, "")}, - {0x1ee6c, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1ee6d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee6e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee6f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee70, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1ee71, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee72, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee73, 0, 0, 0, f(Yes, false, "")}, - {0x1ee74, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee75, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1ee76, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1ee77, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee78, 0, 0, 0, f(Yes, false, "")}, - {0x1ee79, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee7a, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0x1ee7b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee7c, 0, 0, 0, g(Yes, No, false, false, "", "ٮ")}, - {0x1ee7d, 0, 0, 0, f(Yes, false, "")}, - {0x1ee7e, 0, 0, 0, g(Yes, No, false, false, "", "ڡ")}, - {0x1ee7f, 0, 0, 0, f(Yes, false, "")}, - {0x1ee80, 0, 0, 0, g(Yes, No, false, false, "", "ا")}, - {0x1ee81, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1ee82, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1ee83, 0, 0, 0, g(Yes, No, false, false, "", "د")}, - {0x1ee84, 0, 0, 0, g(Yes, No, false, false, "", "ه")}, - {0x1ee85, 0, 0, 0, g(Yes, No, false, false, "", "و")}, - {0x1ee86, 0, 0, 0, g(Yes, No, false, false, "", "ز")}, - {0x1ee87, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1ee88, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0x1ee89, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1ee8a, 0, 0, 0, f(Yes, false, "")}, - {0x1ee8b, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1ee8c, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1ee8d, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1ee8e, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1ee8f, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1ee90, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1ee91, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1ee92, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1ee93, 0, 0, 0, g(Yes, No, false, false, "", "ر")}, - {0x1ee94, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1ee95, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1ee96, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1ee97, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1ee98, 0, 0, 0, g(Yes, No, false, false, "", "ذ")}, - {0x1ee99, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1ee9a, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0x1ee9b, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1ee9c, 0, 0, 0, f(Yes, false, "")}, - {0x1eea1, 0, 0, 0, g(Yes, No, false, false, "", "ب")}, - {0x1eea2, 0, 0, 0, g(Yes, No, false, false, "", "ج")}, - {0x1eea3, 0, 0, 0, g(Yes, No, false, false, "", "د")}, - {0x1eea4, 0, 0, 0, f(Yes, false, "")}, - {0x1eea5, 0, 0, 0, g(Yes, No, false, false, "", "و")}, - {0x1eea6, 0, 0, 0, g(Yes, No, false, false, "", "ز")}, - {0x1eea7, 0, 0, 0, g(Yes, No, false, false, "", "ح")}, - {0x1eea8, 0, 0, 0, g(Yes, No, false, false, "", "ط")}, - {0x1eea9, 0, 0, 0, g(Yes, No, false, false, "", "ي")}, - {0x1eeaa, 0, 0, 0, f(Yes, false, "")}, - {0x1eeab, 0, 0, 0, g(Yes, No, false, false, "", "ل")}, - {0x1eeac, 0, 0, 0, g(Yes, No, false, false, "", "م")}, - {0x1eead, 0, 0, 0, g(Yes, No, false, false, "", "ن")}, - {0x1eeae, 0, 0, 0, g(Yes, No, false, false, "", "س")}, - {0x1eeaf, 0, 0, 0, g(Yes, No, false, false, "", "ع")}, - {0x1eeb0, 0, 0, 0, g(Yes, No, false, false, "", "ف")}, - {0x1eeb1, 0, 0, 0, g(Yes, No, false, false, "", "ص")}, - {0x1eeb2, 0, 0, 0, g(Yes, No, false, false, "", "ق")}, - {0x1eeb3, 0, 0, 0, g(Yes, No, false, false, "", "ر")}, - {0x1eeb4, 0, 0, 0, g(Yes, No, false, false, "", "ش")}, - {0x1eeb5, 0, 0, 0, g(Yes, No, false, false, "", "ت")}, - {0x1eeb6, 0, 0, 0, g(Yes, No, false, false, "", "ث")}, - {0x1eeb7, 0, 0, 0, g(Yes, No, false, false, "", "خ")}, - {0x1eeb8, 0, 0, 0, g(Yes, No, false, false, "", "ذ")}, - {0x1eeb9, 0, 0, 0, g(Yes, No, false, false, "", "ض")}, - {0x1eeba, 0, 0, 0, g(Yes, No, false, false, "", "ظ")}, - {0x1eebb, 0, 0, 0, g(Yes, No, false, false, "", "غ")}, - {0x1eebc, 0, 0, 0, f(Yes, false, "")}, - {0x1f100, 0, 0, 0, g(Yes, No, false, false, "", "0.")}, - {0x1f101, 0, 0, 0, g(Yes, No, false, false, "", "0,")}, - {0x1f102, 0, 0, 0, g(Yes, No, false, false, "", "1,")}, - {0x1f103, 0, 0, 0, g(Yes, No, false, false, "", "2,")}, - {0x1f104, 0, 0, 0, g(Yes, No, false, false, "", "3,")}, - {0x1f105, 0, 0, 0, g(Yes, No, false, false, "", "4,")}, - {0x1f106, 0, 0, 0, g(Yes, No, false, false, "", "5,")}, - {0x1f107, 0, 0, 0, g(Yes, No, false, false, "", "6,")}, - {0x1f108, 0, 0, 0, g(Yes, No, false, false, "", "7,")}, - {0x1f109, 0, 0, 0, g(Yes, No, false, false, "", "8,")}, - {0x1f10a, 0, 0, 0, g(Yes, No, false, false, "", "9,")}, - {0x1f10b, 0, 0, 0, f(Yes, false, "")}, - {0x1f110, 0, 0, 0, g(Yes, No, false, false, "", "(A)")}, - {0x1f111, 0, 0, 0, g(Yes, No, false, false, "", "(B)")}, - {0x1f112, 0, 0, 0, g(Yes, No, false, false, "", "(C)")}, - {0x1f113, 0, 0, 0, g(Yes, No, false, false, "", "(D)")}, - {0x1f114, 0, 0, 0, g(Yes, No, false, false, "", "(E)")}, - {0x1f115, 0, 0, 0, g(Yes, No, false, false, "", "(F)")}, - {0x1f116, 0, 0, 0, g(Yes, No, false, false, "", "(G)")}, - {0x1f117, 0, 0, 0, g(Yes, No, false, false, "", "(H)")}, - {0x1f118, 0, 0, 0, g(Yes, No, false, false, "", "(I)")}, - {0x1f119, 0, 0, 0, g(Yes, No, false, false, "", "(J)")}, - {0x1f11a, 0, 0, 0, g(Yes, No, false, false, "", "(K)")}, - {0x1f11b, 0, 0, 0, g(Yes, No, false, false, "", "(L)")}, - {0x1f11c, 0, 0, 0, g(Yes, No, false, false, "", "(M)")}, - {0x1f11d, 0, 0, 0, g(Yes, No, false, false, "", "(N)")}, - {0x1f11e, 0, 0, 0, g(Yes, No, false, false, "", "(O)")}, - {0x1f11f, 0, 0, 0, g(Yes, No, false, false, "", "(P)")}, - {0x1f120, 0, 0, 0, g(Yes, No, false, false, "", "(Q)")}, - {0x1f121, 0, 0, 0, g(Yes, No, false, false, "", "(R)")}, - {0x1f122, 0, 0, 0, g(Yes, No, false, false, "", "(S)")}, - {0x1f123, 0, 0, 0, g(Yes, No, false, false, "", "(T)")}, - {0x1f124, 0, 0, 0, g(Yes, No, false, false, "", "(U)")}, - {0x1f125, 0, 0, 0, g(Yes, No, false, false, "", "(V)")}, - {0x1f126, 0, 0, 0, g(Yes, No, false, false, "", "(W)")}, - {0x1f127, 0, 0, 0, g(Yes, No, false, false, "", "(X)")}, - {0x1f128, 0, 0, 0, g(Yes, No, false, false, "", "(Y)")}, - {0x1f129, 0, 0, 0, g(Yes, No, false, false, "", "(Z)")}, - {0x1f12a, 0, 0, 0, g(Yes, No, false, false, "", "〔S〕")}, - {0x1f12b, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1f12c, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1f12d, 0, 0, 0, g(Yes, No, false, false, "", "CD")}, - {0x1f12e, 0, 0, 0, g(Yes, No, false, false, "", "WZ")}, - {0x1f12f, 0, 0, 0, f(Yes, false, "")}, - {0x1f130, 0, 0, 0, g(Yes, No, false, false, "", "A")}, - {0x1f131, 0, 0, 0, g(Yes, No, false, false, "", "B")}, - {0x1f132, 0, 0, 0, g(Yes, No, false, false, "", "C")}, - {0x1f133, 0, 0, 0, g(Yes, No, false, false, "", "D")}, - {0x1f134, 0, 0, 0, g(Yes, No, false, false, "", "E")}, - {0x1f135, 0, 0, 0, g(Yes, No, false, false, "", "F")}, - {0x1f136, 0, 0, 0, g(Yes, No, false, false, "", "G")}, - {0x1f137, 0, 0, 0, g(Yes, No, false, false, "", "H")}, - {0x1f138, 0, 0, 0, g(Yes, No, false, false, "", "I")}, - {0x1f139, 0, 0, 0, g(Yes, No, false, false, "", "J")}, - {0x1f13a, 0, 0, 0, g(Yes, No, false, false, "", "K")}, - {0x1f13b, 0, 0, 0, g(Yes, No, false, false, "", "L")}, - {0x1f13c, 0, 0, 0, g(Yes, No, false, false, "", "M")}, - {0x1f13d, 0, 0, 0, g(Yes, No, false, false, "", "N")}, - {0x1f13e, 0, 0, 0, g(Yes, No, false, false, "", "O")}, - {0x1f13f, 0, 0, 0, g(Yes, No, false, false, "", "P")}, - {0x1f140, 0, 0, 0, g(Yes, No, false, false, "", "Q")}, - {0x1f141, 0, 0, 0, g(Yes, No, false, false, "", "R")}, - {0x1f142, 0, 0, 0, g(Yes, No, false, false, "", "S")}, - {0x1f143, 0, 0, 0, g(Yes, No, false, false, "", "T")}, - {0x1f144, 0, 0, 0, g(Yes, No, false, false, "", "U")}, - {0x1f145, 0, 0, 0, g(Yes, No, false, false, "", "V")}, - {0x1f146, 0, 0, 0, g(Yes, No, false, false, "", "W")}, - {0x1f147, 0, 0, 0, g(Yes, No, false, false, "", "X")}, - {0x1f148, 0, 0, 0, g(Yes, No, false, false, "", "Y")}, - {0x1f149, 0, 0, 0, g(Yes, No, false, false, "", "Z")}, - {0x1f14a, 0, 0, 0, g(Yes, No, false, false, "", "HV")}, - {0x1f14b, 0, 0, 0, g(Yes, No, false, false, "", "MV")}, - {0x1f14c, 0, 0, 0, g(Yes, No, false, false, "", "SD")}, - {0x1f14d, 0, 0, 0, g(Yes, No, false, false, "", "SS")}, - {0x1f14e, 0, 0, 0, g(Yes, No, false, false, "", "PPV")}, - {0x1f14f, 0, 0, 0, g(Yes, No, false, false, "", "WC")}, - {0x1f150, 0, 0, 0, f(Yes, false, "")}, - {0x1f16a, 0, 0, 0, g(Yes, No, false, false, "", "MC")}, - {0x1f16b, 0, 0, 0, g(Yes, No, false, false, "", "MD")}, - {0x1f16c, 0, 0, 0, f(Yes, false, "")}, - {0x1f190, 0, 0, 0, g(Yes, No, false, false, "", "DJ")}, - {0x1f191, 0, 0, 0, f(Yes, false, "")}, - {0x1f200, 0, 0, 0, g(Yes, No, false, false, "", "ほか")}, - {0x1f201, 0, 0, 0, g(Yes, No, false, false, "", "ココ")}, - {0x1f202, 0, 0, 0, g(Yes, No, false, false, "", "サ")}, - {0x1f203, 0, 0, 0, f(Yes, false, "")}, - {0x1f210, 0, 0, 0, g(Yes, No, false, false, "", "手")}, - {0x1f211, 0, 0, 0, g(Yes, No, false, false, "", "字")}, - {0x1f212, 0, 0, 0, g(Yes, No, false, false, "", "双")}, - {0x1f213, 0, 0, 1, g(Yes, No, false, false, "", "デ")}, - {0x1f214, 0, 0, 0, g(Yes, No, false, false, "", "二")}, - {0x1f215, 0, 0, 0, g(Yes, No, false, false, "", "多")}, - {0x1f216, 0, 0, 0, g(Yes, No, false, false, "", "解")}, - {0x1f217, 0, 0, 0, g(Yes, No, false, false, "", "天")}, - {0x1f218, 0, 0, 0, g(Yes, No, false, false, "", "交")}, - {0x1f219, 0, 0, 0, g(Yes, No, false, false, "", "映")}, - {0x1f21a, 0, 0, 0, g(Yes, No, false, false, "", "無")}, - {0x1f21b, 0, 0, 0, g(Yes, No, false, false, "", "料")}, - {0x1f21c, 0, 0, 0, g(Yes, No, false, false, "", "前")}, - {0x1f21d, 0, 0, 0, g(Yes, No, false, false, "", "後")}, - {0x1f21e, 0, 0, 0, g(Yes, No, false, false, "", "再")}, - {0x1f21f, 0, 0, 0, g(Yes, No, false, false, "", "新")}, - {0x1f220, 0, 0, 0, g(Yes, No, false, false, "", "初")}, - {0x1f221, 0, 0, 0, g(Yes, No, false, false, "", "終")}, - {0x1f222, 0, 0, 0, g(Yes, No, false, false, "", "生")}, - {0x1f223, 0, 0, 0, g(Yes, No, false, false, "", "販")}, - {0x1f224, 0, 0, 0, g(Yes, No, false, false, "", "声")}, - {0x1f225, 0, 0, 0, g(Yes, No, false, false, "", "吹")}, - {0x1f226, 0, 0, 0, g(Yes, No, false, false, "", "演")}, - {0x1f227, 0, 0, 0, g(Yes, No, false, false, "", "投")}, - {0x1f228, 0, 0, 0, g(Yes, No, false, false, "", "捕")}, - {0x1f229, 0, 0, 0, g(Yes, No, false, false, "", "一")}, - {0x1f22a, 0, 0, 0, g(Yes, No, false, false, "", "三")}, - {0x1f22b, 0, 0, 0, g(Yes, No, false, false, "", "遊")}, - {0x1f22c, 0, 0, 0, g(Yes, No, false, false, "", "左")}, - {0x1f22d, 0, 0, 0, g(Yes, No, false, false, "", "中")}, - {0x1f22e, 0, 0, 0, g(Yes, No, false, false, "", "右")}, - {0x1f22f, 0, 0, 0, g(Yes, No, false, false, "", "指")}, - {0x1f230, 0, 0, 0, g(Yes, No, false, false, "", "走")}, - {0x1f231, 0, 0, 0, g(Yes, No, false, false, "", "打")}, - {0x1f232, 0, 0, 0, g(Yes, No, false, false, "", "禁")}, - {0x1f233, 0, 0, 0, g(Yes, No, false, false, "", "空")}, - {0x1f234, 0, 0, 0, g(Yes, No, false, false, "", "合")}, - {0x1f235, 0, 0, 0, g(Yes, No, false, false, "", "満")}, - {0x1f236, 0, 0, 0, g(Yes, No, false, false, "", "有")}, - {0x1f237, 0, 0, 0, g(Yes, No, false, false, "", "月")}, - {0x1f238, 0, 0, 0, g(Yes, No, false, false, "", "申")}, - {0x1f239, 0, 0, 0, g(Yes, No, false, false, "", "割")}, - {0x1f23a, 0, 0, 0, g(Yes, No, false, false, "", "営")}, - {0x1f23b, 0, 0, 0, g(Yes, No, false, false, "", "配")}, - {0x1f23c, 0, 0, 0, f(Yes, false, "")}, - {0x1f240, 0, 0, 0, g(Yes, No, false, false, "", "〔本〕")}, - {0x1f241, 0, 0, 0, g(Yes, No, false, false, "", "〔三〕")}, - {0x1f242, 0, 0, 0, g(Yes, No, false, false, "", "〔二〕")}, - {0x1f243, 0, 0, 0, g(Yes, No, false, false, "", "〔安〕")}, - {0x1f244, 0, 0, 0, g(Yes, No, false, false, "", "〔点〕")}, - {0x1f245, 0, 0, 0, g(Yes, No, false, false, "", "〔打〕")}, - {0x1f246, 0, 0, 0, g(Yes, No, false, false, "", "〔盗〕")}, - {0x1f247, 0, 0, 0, g(Yes, No, false, false, "", "〔勝〕")}, - {0x1f248, 0, 0, 0, g(Yes, No, false, false, "", "〔敗〕")}, - {0x1f249, 0, 0, 0, f(Yes, false, "")}, - {0x1f250, 0, 0, 0, g(Yes, No, false, false, "", "得")}, - {0x1f251, 0, 0, 0, g(Yes, No, false, false, "", "可")}, - {0x1f252, 0, 0, 0, f(Yes, false, "")}, - {0x2f800, 0, 0, 0, f(No, false, "丽")}, - {0x2f801, 0, 0, 0, f(No, false, "丸")}, - {0x2f802, 0, 0, 0, f(No, false, "乁")}, - {0x2f803, 0, 0, 0, f(No, false, "𠄢")}, - {0x2f804, 0, 0, 0, f(No, false, "你")}, - {0x2f805, 0, 0, 0, f(No, false, "侮")}, - {0x2f806, 0, 0, 0, f(No, false, "侻")}, - {0x2f807, 0, 0, 0, f(No, false, "倂")}, - {0x2f808, 0, 0, 0, f(No, false, "偺")}, - {0x2f809, 0, 0, 0, f(No, false, "備")}, - {0x2f80a, 0, 0, 0, f(No, false, "僧")}, - {0x2f80b, 0, 0, 0, f(No, false, "像")}, - {0x2f80c, 0, 0, 0, f(No, false, "㒞")}, - {0x2f80d, 0, 0, 0, f(No, false, "𠘺")}, - {0x2f80e, 0, 0, 0, f(No, false, "免")}, - {0x2f80f, 0, 0, 0, f(No, false, "兔")}, - {0x2f810, 0, 0, 0, f(No, false, "兤")}, - {0x2f811, 0, 0, 0, f(No, false, "具")}, - {0x2f812, 0, 0, 0, f(No, false, "𠔜")}, - {0x2f813, 0, 0, 0, f(No, false, "㒹")}, - {0x2f814, 0, 0, 0, f(No, false, "內")}, - {0x2f815, 0, 0, 0, f(No, false, "再")}, - {0x2f816, 0, 0, 0, f(No, false, "𠕋")}, - {0x2f817, 0, 0, 0, f(No, false, "冗")}, - {0x2f818, 0, 0, 0, f(No, false, "冤")}, - {0x2f819, 0, 0, 0, f(No, false, "仌")}, - {0x2f81a, 0, 0, 0, f(No, false, "冬")}, - {0x2f81b, 0, 0, 0, f(No, false, "况")}, - {0x2f81c, 0, 0, 0, f(No, false, "𩇟")}, - {0x2f81d, 0, 0, 0, f(No, false, "凵")}, - {0x2f81e, 0, 0, 0, f(No, false, "刃")}, - {0x2f81f, 0, 0, 0, f(No, false, "㓟")}, - {0x2f820, 0, 0, 0, f(No, false, "刻")}, - {0x2f821, 0, 0, 0, f(No, false, "剆")}, - {0x2f822, 0, 0, 0, f(No, false, "割")}, - {0x2f823, 0, 0, 0, f(No, false, "剷")}, - {0x2f824, 0, 0, 0, f(No, false, "㔕")}, - {0x2f825, 0, 0, 0, f(No, false, "勇")}, - {0x2f826, 0, 0, 0, f(No, false, "勉")}, - {0x2f827, 0, 0, 0, f(No, false, "勤")}, - {0x2f828, 0, 0, 0, f(No, false, "勺")}, - {0x2f829, 0, 0, 0, f(No, false, "包")}, - {0x2f82a, 0, 0, 0, f(No, false, "匆")}, - {0x2f82b, 0, 0, 0, f(No, false, "北")}, - {0x2f82c, 0, 0, 0, f(No, false, "卉")}, - {0x2f82d, 0, 0, 0, f(No, false, "卑")}, - {0x2f82e, 0, 0, 0, f(No, false, "博")}, - {0x2f82f, 0, 0, 0, f(No, false, "即")}, - {0x2f830, 0, 0, 0, f(No, false, "卽")}, - {0x2f831, 0, 0, 0, f(No, false, "卿")}, - {0x2f834, 0, 0, 0, f(No, false, "𠨬")}, - {0x2f835, 0, 0, 0, f(No, false, "灰")}, - {0x2f836, 0, 0, 0, f(No, false, "及")}, - {0x2f837, 0, 0, 0, f(No, false, "叟")}, - {0x2f838, 0, 0, 0, f(No, false, "𠭣")}, - {0x2f839, 0, 0, 0, f(No, false, "叫")}, - {0x2f83a, 0, 0, 0, f(No, false, "叱")}, - {0x2f83b, 0, 0, 0, f(No, false, "吆")}, - {0x2f83c, 0, 0, 0, f(No, false, "咞")}, - {0x2f83d, 0, 0, 0, f(No, false, "吸")}, - {0x2f83e, 0, 0, 0, f(No, false, "呈")}, - {0x2f83f, 0, 0, 0, f(No, false, "周")}, - {0x2f840, 0, 0, 0, f(No, false, "咢")}, - {0x2f841, 0, 0, 0, f(No, false, "哶")}, - {0x2f842, 0, 0, 0, f(No, false, "唐")}, - {0x2f843, 0, 0, 0, f(No, false, "啓")}, - {0x2f844, 0, 0, 0, f(No, false, "啣")}, - {0x2f845, 0, 0, 0, f(No, false, "善")}, - {0x2f847, 0, 0, 0, f(No, false, "喙")}, - {0x2f848, 0, 0, 0, f(No, false, "喫")}, - {0x2f849, 0, 0, 0, f(No, false, "喳")}, - {0x2f84a, 0, 0, 0, f(No, false, "嗂")}, - {0x2f84b, 0, 0, 0, f(No, false, "圖")}, - {0x2f84c, 0, 0, 0, f(No, false, "嘆")}, - {0x2f84d, 0, 0, 0, f(No, false, "圗")}, - {0x2f84e, 0, 0, 0, f(No, false, "噑")}, - {0x2f84f, 0, 0, 0, f(No, false, "噴")}, - {0x2f850, 0, 0, 0, f(No, false, "切")}, - {0x2f851, 0, 0, 0, f(No, false, "壮")}, - {0x2f852, 0, 0, 0, f(No, false, "城")}, - {0x2f853, 0, 0, 0, f(No, false, "埴")}, - {0x2f854, 0, 0, 0, f(No, false, "堍")}, - {0x2f855, 0, 0, 0, f(No, false, "型")}, - {0x2f856, 0, 0, 0, f(No, false, "堲")}, - {0x2f857, 0, 0, 0, f(No, false, "報")}, - {0x2f858, 0, 0, 0, f(No, false, "墬")}, - {0x2f859, 0, 0, 0, f(No, false, "𡓤")}, - {0x2f85a, 0, 0, 0, f(No, false, "売")}, - {0x2f85b, 0, 0, 0, f(No, false, "壷")}, - {0x2f85c, 0, 0, 0, f(No, false, "夆")}, - {0x2f85d, 0, 0, 0, f(No, false, "多")}, - {0x2f85e, 0, 0, 0, f(No, false, "夢")}, - {0x2f85f, 0, 0, 0, f(No, false, "奢")}, - {0x2f860, 0, 0, 0, f(No, false, "𡚨")}, - {0x2f861, 0, 0, 0, f(No, false, "𡛪")}, - {0x2f862, 0, 0, 0, f(No, false, "姬")}, - {0x2f863, 0, 0, 0, f(No, false, "娛")}, - {0x2f864, 0, 0, 0, f(No, false, "娧")}, - {0x2f865, 0, 0, 0, f(No, false, "姘")}, - {0x2f866, 0, 0, 0, f(No, false, "婦")}, - {0x2f867, 0, 0, 0, f(No, false, "㛮")}, - {0x2f868, 0, 0, 0, f(No, false, "㛼")}, - {0x2f869, 0, 0, 0, f(No, false, "嬈")}, - {0x2f86a, 0, 0, 0, f(No, false, "嬾")}, - {0x2f86c, 0, 0, 0, f(No, false, "𡧈")}, - {0x2f86d, 0, 0, 0, f(No, false, "寃")}, - {0x2f86e, 0, 0, 0, f(No, false, "寘")}, - {0x2f86f, 0, 0, 0, f(No, false, "寧")}, - {0x2f870, 0, 0, 0, f(No, false, "寳")}, - {0x2f871, 0, 0, 0, f(No, false, "𡬘")}, - {0x2f872, 0, 0, 0, f(No, false, "寿")}, - {0x2f873, 0, 0, 0, f(No, false, "将")}, - {0x2f874, 0, 0, 0, f(No, false, "当")}, - {0x2f875, 0, 0, 0, f(No, false, "尢")}, - {0x2f876, 0, 0, 0, f(No, false, "㞁")}, - {0x2f877, 0, 0, 0, f(No, false, "屠")}, - {0x2f878, 0, 0, 0, f(No, false, "屮")}, - {0x2f879, 0, 0, 0, f(No, false, "峀")}, - {0x2f87a, 0, 0, 0, f(No, false, "岍")}, - {0x2f87b, 0, 0, 0, f(No, false, "𡷤")}, - {0x2f87c, 0, 0, 0, f(No, false, "嵃")}, - {0x2f87d, 0, 0, 0, f(No, false, "𡷦")}, - {0x2f87e, 0, 0, 0, f(No, false, "嵮")}, - {0x2f87f, 0, 0, 0, f(No, false, "嵫")}, - {0x2f880, 0, 0, 0, f(No, false, "嵼")}, - {0x2f881, 0, 0, 0, f(No, false, "巡")}, - {0x2f882, 0, 0, 0, f(No, false, "巢")}, - {0x2f883, 0, 0, 0, f(No, false, "㠯")}, - {0x2f884, 0, 0, 0, f(No, false, "巽")}, - {0x2f885, 0, 0, 0, f(No, false, "帨")}, - {0x2f886, 0, 0, 0, f(No, false, "帽")}, - {0x2f887, 0, 0, 0, f(No, false, "幩")}, - {0x2f888, 0, 0, 0, f(No, false, "㡢")}, - {0x2f889, 0, 0, 0, f(No, false, "𢆃")}, - {0x2f88a, 0, 0, 0, f(No, false, "㡼")}, - {0x2f88b, 0, 0, 0, f(No, false, "庰")}, - {0x2f88c, 0, 0, 0, f(No, false, "庳")}, - {0x2f88d, 0, 0, 0, f(No, false, "庶")}, - {0x2f88e, 0, 0, 0, f(No, false, "廊")}, - {0x2f88f, 0, 0, 0, f(No, false, "𪎒")}, - {0x2f890, 0, 0, 0, f(No, false, "廾")}, - {0x2f891, 0, 0, 0, f(No, false, "𢌱")}, - {0x2f893, 0, 0, 0, f(No, false, "舁")}, - {0x2f894, 0, 0, 0, f(No, false, "弢")}, - {0x2f896, 0, 0, 0, f(No, false, "㣇")}, - {0x2f897, 0, 0, 0, f(No, false, "𣊸")}, - {0x2f898, 0, 0, 0, f(No, false, "𦇚")}, - {0x2f899, 0, 0, 0, f(No, false, "形")}, - {0x2f89a, 0, 0, 0, f(No, false, "彫")}, - {0x2f89b, 0, 0, 0, f(No, false, "㣣")}, - {0x2f89c, 0, 0, 0, f(No, false, "徚")}, - {0x2f89d, 0, 0, 0, f(No, false, "忍")}, - {0x2f89e, 0, 0, 0, f(No, false, "志")}, - {0x2f89f, 0, 0, 0, f(No, false, "忹")}, - {0x2f8a0, 0, 0, 0, f(No, false, "悁")}, - {0x2f8a1, 0, 0, 0, f(No, false, "㤺")}, - {0x2f8a2, 0, 0, 0, f(No, false, "㤜")}, - {0x2f8a3, 0, 0, 0, f(No, false, "悔")}, - {0x2f8a4, 0, 0, 0, f(No, false, "𢛔")}, - {0x2f8a5, 0, 0, 0, f(No, false, "惇")}, - {0x2f8a6, 0, 0, 0, f(No, false, "慈")}, - {0x2f8a7, 0, 0, 0, f(No, false, "慌")}, - {0x2f8a8, 0, 0, 0, f(No, false, "慎")}, - {0x2f8a9, 0, 0, 0, f(No, false, "慌")}, - {0x2f8aa, 0, 0, 0, f(No, false, "慺")}, - {0x2f8ab, 0, 0, 0, f(No, false, "憎")}, - {0x2f8ac, 0, 0, 0, f(No, false, "憲")}, - {0x2f8ad, 0, 0, 0, f(No, false, "憤")}, - {0x2f8ae, 0, 0, 0, f(No, false, "憯")}, - {0x2f8af, 0, 0, 0, f(No, false, "懞")}, - {0x2f8b0, 0, 0, 0, f(No, false, "懲")}, - {0x2f8b1, 0, 0, 0, f(No, false, "懶")}, - {0x2f8b2, 0, 0, 0, f(No, false, "成")}, - {0x2f8b3, 0, 0, 0, f(No, false, "戛")}, - {0x2f8b4, 0, 0, 0, f(No, false, "扝")}, - {0x2f8b5, 0, 0, 0, f(No, false, "抱")}, - {0x2f8b6, 0, 0, 0, f(No, false, "拔")}, - {0x2f8b7, 0, 0, 0, f(No, false, "捐")}, - {0x2f8b8, 0, 0, 0, f(No, false, "𢬌")}, - {0x2f8b9, 0, 0, 0, f(No, false, "挽")}, - {0x2f8ba, 0, 0, 0, f(No, false, "拼")}, - {0x2f8bb, 0, 0, 0, f(No, false, "捨")}, - {0x2f8bc, 0, 0, 0, f(No, false, "掃")}, - {0x2f8bd, 0, 0, 0, f(No, false, "揤")}, - {0x2f8be, 0, 0, 0, f(No, false, "𢯱")}, - {0x2f8bf, 0, 0, 0, f(No, false, "搢")}, - {0x2f8c0, 0, 0, 0, f(No, false, "揅")}, - {0x2f8c1, 0, 0, 0, f(No, false, "掩")}, - {0x2f8c2, 0, 0, 0, f(No, false, "㨮")}, - {0x2f8c3, 0, 0, 0, f(No, false, "摩")}, - {0x2f8c4, 0, 0, 0, f(No, false, "摾")}, - {0x2f8c5, 0, 0, 0, f(No, false, "撝")}, - {0x2f8c6, 0, 0, 0, f(No, false, "摷")}, - {0x2f8c7, 0, 0, 0, f(No, false, "㩬")}, - {0x2f8c8, 0, 0, 0, f(No, false, "敏")}, - {0x2f8c9, 0, 0, 0, f(No, false, "敬")}, - {0x2f8ca, 0, 0, 0, f(No, false, "𣀊")}, - {0x2f8cb, 0, 0, 0, f(No, false, "旣")}, - {0x2f8cc, 0, 0, 0, f(No, false, "書")}, - {0x2f8cd, 0, 0, 0, f(No, false, "晉")}, - {0x2f8ce, 0, 0, 0, f(No, false, "㬙")}, - {0x2f8cf, 0, 0, 0, f(No, false, "暑")}, - {0x2f8d0, 0, 0, 0, f(No, false, "㬈")}, - {0x2f8d1, 0, 0, 0, f(No, false, "㫤")}, - {0x2f8d2, 0, 0, 0, f(No, false, "冒")}, - {0x2f8d3, 0, 0, 0, f(No, false, "冕")}, - {0x2f8d4, 0, 0, 0, f(No, false, "最")}, - {0x2f8d5, 0, 0, 0, f(No, false, "暜")}, - {0x2f8d6, 0, 0, 0, f(No, false, "肭")}, - {0x2f8d7, 0, 0, 0, f(No, false, "䏙")}, - {0x2f8d8, 0, 0, 0, f(No, false, "朗")}, - {0x2f8d9, 0, 0, 0, f(No, false, "望")}, - {0x2f8da, 0, 0, 0, f(No, false, "朡")}, - {0x2f8db, 0, 0, 0, f(No, false, "杞")}, - {0x2f8dc, 0, 0, 0, f(No, false, "杓")}, - {0x2f8dd, 0, 0, 0, f(No, false, "𣏃")}, - {0x2f8de, 0, 0, 0, f(No, false, "㭉")}, - {0x2f8df, 0, 0, 0, f(No, false, "柺")}, - {0x2f8e0, 0, 0, 0, f(No, false, "枅")}, - {0x2f8e1, 0, 0, 0, f(No, false, "桒")}, - {0x2f8e2, 0, 0, 0, f(No, false, "梅")}, - {0x2f8e3, 0, 0, 0, f(No, false, "𣑭")}, - {0x2f8e4, 0, 0, 0, f(No, false, "梎")}, - {0x2f8e5, 0, 0, 0, f(No, false, "栟")}, - {0x2f8e6, 0, 0, 0, f(No, false, "椔")}, - {0x2f8e7, 0, 0, 0, f(No, false, "㮝")}, - {0x2f8e8, 0, 0, 0, f(No, false, "楂")}, - {0x2f8e9, 0, 0, 0, f(No, false, "榣")}, - {0x2f8ea, 0, 0, 0, f(No, false, "槪")}, - {0x2f8eb, 0, 0, 0, f(No, false, "檨")}, - {0x2f8ec, 0, 0, 0, f(No, false, "𣚣")}, - {0x2f8ed, 0, 0, 0, f(No, false, "櫛")}, - {0x2f8ee, 0, 0, 0, f(No, false, "㰘")}, - {0x2f8ef, 0, 0, 0, f(No, false, "次")}, - {0x2f8f0, 0, 0, 0, f(No, false, "𣢧")}, - {0x2f8f1, 0, 0, 0, f(No, false, "歔")}, - {0x2f8f2, 0, 0, 0, f(No, false, "㱎")}, - {0x2f8f3, 0, 0, 0, f(No, false, "歲")}, - {0x2f8f4, 0, 0, 0, f(No, false, "殟")}, - {0x2f8f5, 0, 0, 0, f(No, false, "殺")}, - {0x2f8f6, 0, 0, 0, f(No, false, "殻")}, - {0x2f8f7, 0, 0, 0, f(No, false, "𣪍")}, - {0x2f8f8, 0, 0, 0, f(No, false, "𡴋")}, - {0x2f8f9, 0, 0, 0, f(No, false, "𣫺")}, - {0x2f8fa, 0, 0, 0, f(No, false, "汎")}, - {0x2f8fb, 0, 0, 0, f(No, false, "𣲼")}, - {0x2f8fc, 0, 0, 0, f(No, false, "沿")}, - {0x2f8fd, 0, 0, 0, f(No, false, "泍")}, - {0x2f8fe, 0, 0, 0, f(No, false, "汧")}, - {0x2f8ff, 0, 0, 0, f(No, false, "洖")}, - {0x2f900, 0, 0, 0, f(No, false, "派")}, - {0x2f901, 0, 0, 0, f(No, false, "海")}, - {0x2f902, 0, 0, 0, f(No, false, "流")}, - {0x2f903, 0, 0, 0, f(No, false, "浩")}, - {0x2f904, 0, 0, 0, f(No, false, "浸")}, - {0x2f905, 0, 0, 0, f(No, false, "涅")}, - {0x2f906, 0, 0, 0, f(No, false, "𣴞")}, - {0x2f907, 0, 0, 0, f(No, false, "洴")}, - {0x2f908, 0, 0, 0, f(No, false, "港")}, - {0x2f909, 0, 0, 0, f(No, false, "湮")}, - {0x2f90a, 0, 0, 0, f(No, false, "㴳")}, - {0x2f90b, 0, 0, 0, f(No, false, "滋")}, - {0x2f90c, 0, 0, 0, f(No, false, "滇")}, - {0x2f90d, 0, 0, 0, f(No, false, "𣻑")}, - {0x2f90e, 0, 0, 0, f(No, false, "淹")}, - {0x2f90f, 0, 0, 0, f(No, false, "潮")}, - {0x2f910, 0, 0, 0, f(No, false, "𣽞")}, - {0x2f911, 0, 0, 0, f(No, false, "𣾎")}, - {0x2f912, 0, 0, 0, f(No, false, "濆")}, - {0x2f913, 0, 0, 0, f(No, false, "瀹")}, - {0x2f914, 0, 0, 0, f(No, false, "瀞")}, - {0x2f915, 0, 0, 0, f(No, false, "瀛")}, - {0x2f916, 0, 0, 0, f(No, false, "㶖")}, - {0x2f917, 0, 0, 0, f(No, false, "灊")}, - {0x2f918, 0, 0, 0, f(No, false, "災")}, - {0x2f919, 0, 0, 0, f(No, false, "灷")}, - {0x2f91a, 0, 0, 0, f(No, false, "炭")}, - {0x2f91b, 0, 0, 0, f(No, false, "𠔥")}, - {0x2f91c, 0, 0, 0, f(No, false, "煅")}, - {0x2f91d, 0, 0, 0, f(No, false, "𤉣")}, - {0x2f91e, 0, 0, 0, f(No, false, "熜")}, - {0x2f91f, 0, 0, 0, f(No, false, "𤎫")}, - {0x2f920, 0, 0, 0, f(No, false, "爨")}, - {0x2f921, 0, 0, 0, f(No, false, "爵")}, - {0x2f922, 0, 0, 0, f(No, false, "牐")}, - {0x2f923, 0, 0, 0, f(No, false, "𤘈")}, - {0x2f924, 0, 0, 0, f(No, false, "犀")}, - {0x2f925, 0, 0, 0, f(No, false, "犕")}, - {0x2f926, 0, 0, 0, f(No, false, "𤜵")}, - {0x2f927, 0, 0, 0, f(No, false, "𤠔")}, - {0x2f928, 0, 0, 0, f(No, false, "獺")}, - {0x2f929, 0, 0, 0, f(No, false, "王")}, - {0x2f92a, 0, 0, 0, f(No, false, "㺬")}, - {0x2f92b, 0, 0, 0, f(No, false, "玥")}, - {0x2f92c, 0, 0, 0, f(No, false, "㺸")}, - {0x2f92e, 0, 0, 0, f(No, false, "瑇")}, - {0x2f92f, 0, 0, 0, f(No, false, "瑜")}, - {0x2f930, 0, 0, 0, f(No, false, "瑱")}, - {0x2f931, 0, 0, 0, f(No, false, "璅")}, - {0x2f932, 0, 0, 0, f(No, false, "瓊")}, - {0x2f933, 0, 0, 0, f(No, false, "㼛")}, - {0x2f934, 0, 0, 0, f(No, false, "甤")}, - {0x2f935, 0, 0, 0, f(No, false, "𤰶")}, - {0x2f936, 0, 0, 0, f(No, false, "甾")}, - {0x2f937, 0, 0, 0, f(No, false, "𤲒")}, - {0x2f938, 0, 0, 0, f(No, false, "異")}, - {0x2f939, 0, 0, 0, f(No, false, "𢆟")}, - {0x2f93a, 0, 0, 0, f(No, false, "瘐")}, - {0x2f93b, 0, 0, 0, f(No, false, "𤾡")}, - {0x2f93c, 0, 0, 0, f(No, false, "𤾸")}, - {0x2f93d, 0, 0, 0, f(No, false, "𥁄")}, - {0x2f93e, 0, 0, 0, f(No, false, "㿼")}, - {0x2f93f, 0, 0, 0, f(No, false, "䀈")}, - {0x2f940, 0, 0, 0, f(No, false, "直")}, - {0x2f941, 0, 0, 0, f(No, false, "𥃳")}, - {0x2f942, 0, 0, 0, f(No, false, "𥃲")}, - {0x2f943, 0, 0, 0, f(No, false, "𥄙")}, - {0x2f944, 0, 0, 0, f(No, false, "𥄳")}, - {0x2f945, 0, 0, 0, f(No, false, "眞")}, - {0x2f946, 0, 0, 0, f(No, false, "真")}, - {0x2f948, 0, 0, 0, f(No, false, "睊")}, - {0x2f949, 0, 0, 0, f(No, false, "䀹")}, - {0x2f94a, 0, 0, 0, f(No, false, "瞋")}, - {0x2f94b, 0, 0, 0, f(No, false, "䁆")}, - {0x2f94c, 0, 0, 0, f(No, false, "䂖")}, - {0x2f94d, 0, 0, 0, f(No, false, "𥐝")}, - {0x2f94e, 0, 0, 0, f(No, false, "硎")}, - {0x2f94f, 0, 0, 0, f(No, false, "碌")}, - {0x2f950, 0, 0, 0, f(No, false, "磌")}, - {0x2f951, 0, 0, 0, f(No, false, "䃣")}, - {0x2f952, 0, 0, 0, f(No, false, "𥘦")}, - {0x2f953, 0, 0, 0, f(No, false, "祖")}, - {0x2f954, 0, 0, 0, f(No, false, "𥚚")}, - {0x2f955, 0, 0, 0, f(No, false, "𥛅")}, - {0x2f956, 0, 0, 0, f(No, false, "福")}, - {0x2f957, 0, 0, 0, f(No, false, "秫")}, - {0x2f958, 0, 0, 0, f(No, false, "䄯")}, - {0x2f959, 0, 0, 0, f(No, false, "穀")}, - {0x2f95a, 0, 0, 0, f(No, false, "穊")}, - {0x2f95b, 0, 0, 0, f(No, false, "穏")}, - {0x2f95c, 0, 0, 0, f(No, false, "𥥼")}, - {0x2f95d, 0, 0, 0, f(No, false, "𥪧")}, - {0x2f95f, 0, 0, 0, f(No, false, "竮")}, - {0x2f960, 0, 0, 0, f(No, false, "䈂")}, - {0x2f961, 0, 0, 0, f(No, false, "𥮫")}, - {0x2f962, 0, 0, 0, f(No, false, "篆")}, - {0x2f963, 0, 0, 0, f(No, false, "築")}, - {0x2f964, 0, 0, 0, f(No, false, "䈧")}, - {0x2f965, 0, 0, 0, f(No, false, "𥲀")}, - {0x2f966, 0, 0, 0, f(No, false, "糒")}, - {0x2f967, 0, 0, 0, f(No, false, "䊠")}, - {0x2f968, 0, 0, 0, f(No, false, "糨")}, - {0x2f969, 0, 0, 0, f(No, false, "糣")}, - {0x2f96a, 0, 0, 0, f(No, false, "紀")}, - {0x2f96b, 0, 0, 0, f(No, false, "𥾆")}, - {0x2f96c, 0, 0, 0, f(No, false, "絣")}, - {0x2f96d, 0, 0, 0, f(No, false, "䌁")}, - {0x2f96e, 0, 0, 0, f(No, false, "緇")}, - {0x2f96f, 0, 0, 0, f(No, false, "縂")}, - {0x2f970, 0, 0, 0, f(No, false, "繅")}, - {0x2f971, 0, 0, 0, f(No, false, "䌴")}, - {0x2f972, 0, 0, 0, f(No, false, "𦈨")}, - {0x2f973, 0, 0, 0, f(No, false, "𦉇")}, - {0x2f974, 0, 0, 0, f(No, false, "䍙")}, - {0x2f975, 0, 0, 0, f(No, false, "𦋙")}, - {0x2f976, 0, 0, 0, f(No, false, "罺")}, - {0x2f977, 0, 0, 0, f(No, false, "𦌾")}, - {0x2f978, 0, 0, 0, f(No, false, "羕")}, - {0x2f979, 0, 0, 0, f(No, false, "翺")}, - {0x2f97a, 0, 0, 0, f(No, false, "者")}, - {0x2f97b, 0, 0, 0, f(No, false, "𦓚")}, - {0x2f97c, 0, 0, 0, f(No, false, "𦔣")}, - {0x2f97d, 0, 0, 0, f(No, false, "聠")}, - {0x2f97e, 0, 0, 0, f(No, false, "𦖨")}, - {0x2f97f, 0, 0, 0, f(No, false, "聰")}, - {0x2f980, 0, 0, 0, f(No, false, "𣍟")}, - {0x2f981, 0, 0, 0, f(No, false, "䏕")}, - {0x2f982, 0, 0, 0, f(No, false, "育")}, - {0x2f983, 0, 0, 0, f(No, false, "脃")}, - {0x2f984, 0, 0, 0, f(No, false, "䐋")}, - {0x2f985, 0, 0, 0, f(No, false, "脾")}, - {0x2f986, 0, 0, 0, f(No, false, "媵")}, - {0x2f987, 0, 0, 0, f(No, false, "𦞧")}, - {0x2f988, 0, 0, 0, f(No, false, "𦞵")}, - {0x2f989, 0, 0, 0, f(No, false, "𣎓")}, - {0x2f98a, 0, 0, 0, f(No, false, "𣎜")}, - {0x2f98b, 0, 0, 0, f(No, false, "舁")}, - {0x2f98c, 0, 0, 0, f(No, false, "舄")}, - {0x2f98d, 0, 0, 0, f(No, false, "辞")}, - {0x2f98e, 0, 0, 0, f(No, false, "䑫")}, - {0x2f98f, 0, 0, 0, f(No, false, "芑")}, - {0x2f990, 0, 0, 0, f(No, false, "芋")}, - {0x2f991, 0, 0, 0, f(No, false, "芝")}, - {0x2f992, 0, 0, 0, f(No, false, "劳")}, - {0x2f993, 0, 0, 0, f(No, false, "花")}, - {0x2f994, 0, 0, 0, f(No, false, "芳")}, - {0x2f995, 0, 0, 0, f(No, false, "芽")}, - {0x2f996, 0, 0, 0, f(No, false, "苦")}, - {0x2f997, 0, 0, 0, f(No, false, "𦬼")}, - {0x2f998, 0, 0, 0, f(No, false, "若")}, - {0x2f999, 0, 0, 0, f(No, false, "茝")}, - {0x2f99a, 0, 0, 0, f(No, false, "荣")}, - {0x2f99b, 0, 0, 0, f(No, false, "莭")}, - {0x2f99c, 0, 0, 0, f(No, false, "茣")}, - {0x2f99d, 0, 0, 0, f(No, false, "莽")}, - {0x2f99e, 0, 0, 0, f(No, false, "菧")}, - {0x2f99f, 0, 0, 0, f(No, false, "著")}, - {0x2f9a0, 0, 0, 0, f(No, false, "荓")}, - {0x2f9a1, 0, 0, 0, f(No, false, "菊")}, - {0x2f9a2, 0, 0, 0, f(No, false, "菌")}, - {0x2f9a3, 0, 0, 0, f(No, false, "菜")}, - {0x2f9a4, 0, 0, 0, f(No, false, "𦰶")}, - {0x2f9a5, 0, 0, 0, f(No, false, "𦵫")}, - {0x2f9a6, 0, 0, 0, f(No, false, "𦳕")}, - {0x2f9a7, 0, 0, 0, f(No, false, "䔫")}, - {0x2f9a8, 0, 0, 0, f(No, false, "蓱")}, - {0x2f9a9, 0, 0, 0, f(No, false, "蓳")}, - {0x2f9aa, 0, 0, 0, f(No, false, "蔖")}, - {0x2f9ab, 0, 0, 0, f(No, false, "𧏊")}, - {0x2f9ac, 0, 0, 0, f(No, false, "蕤")}, - {0x2f9ad, 0, 0, 0, f(No, false, "𦼬")}, - {0x2f9ae, 0, 0, 0, f(No, false, "䕝")}, - {0x2f9af, 0, 0, 0, f(No, false, "䕡")}, - {0x2f9b0, 0, 0, 0, f(No, false, "𦾱")}, - {0x2f9b1, 0, 0, 0, f(No, false, "𧃒")}, - {0x2f9b2, 0, 0, 0, f(No, false, "䕫")}, - {0x2f9b3, 0, 0, 0, f(No, false, "虐")}, - {0x2f9b4, 0, 0, 0, f(No, false, "虜")}, - {0x2f9b5, 0, 0, 0, f(No, false, "虧")}, - {0x2f9b6, 0, 0, 0, f(No, false, "虩")}, - {0x2f9b7, 0, 0, 0, f(No, false, "蚩")}, - {0x2f9b8, 0, 0, 0, f(No, false, "蚈")}, - {0x2f9b9, 0, 0, 0, f(No, false, "蜎")}, - {0x2f9ba, 0, 0, 0, f(No, false, "蛢")}, - {0x2f9bb, 0, 0, 0, f(No, false, "蝹")}, - {0x2f9bc, 0, 0, 0, f(No, false, "蜨")}, - {0x2f9bd, 0, 0, 0, f(No, false, "蝫")}, - {0x2f9be, 0, 0, 0, f(No, false, "螆")}, - {0x2f9bf, 0, 0, 0, f(No, false, "䗗")}, - {0x2f9c0, 0, 0, 0, f(No, false, "蟡")}, - {0x2f9c1, 0, 0, 0, f(No, false, "蠁")}, - {0x2f9c2, 0, 0, 0, f(No, false, "䗹")}, - {0x2f9c3, 0, 0, 0, f(No, false, "衠")}, - {0x2f9c4, 0, 0, 0, f(No, false, "衣")}, - {0x2f9c5, 0, 0, 0, f(No, false, "𧙧")}, - {0x2f9c6, 0, 0, 0, f(No, false, "裗")}, - {0x2f9c7, 0, 0, 0, f(No, false, "裞")}, - {0x2f9c8, 0, 0, 0, f(No, false, "䘵")}, - {0x2f9c9, 0, 0, 0, f(No, false, "裺")}, - {0x2f9ca, 0, 0, 0, f(No, false, "㒻")}, - {0x2f9cb, 0, 0, 0, f(No, false, "𧢮")}, - {0x2f9cc, 0, 0, 0, f(No, false, "𧥦")}, - {0x2f9cd, 0, 0, 0, f(No, false, "䚾")}, - {0x2f9ce, 0, 0, 0, f(No, false, "䛇")}, - {0x2f9cf, 0, 0, 0, f(No, false, "誠")}, - {0x2f9d0, 0, 0, 0, f(No, false, "諭")}, - {0x2f9d1, 0, 0, 0, f(No, false, "變")}, - {0x2f9d2, 0, 0, 0, f(No, false, "豕")}, - {0x2f9d3, 0, 0, 0, f(No, false, "𧲨")}, - {0x2f9d4, 0, 0, 0, f(No, false, "貫")}, - {0x2f9d5, 0, 0, 0, f(No, false, "賁")}, - {0x2f9d6, 0, 0, 0, f(No, false, "贛")}, - {0x2f9d7, 0, 0, 0, f(No, false, "起")}, - {0x2f9d8, 0, 0, 0, f(No, false, "𧼯")}, - {0x2f9d9, 0, 0, 0, f(No, false, "𠠄")}, - {0x2f9da, 0, 0, 0, f(No, false, "跋")}, - {0x2f9db, 0, 0, 0, f(No, false, "趼")}, - {0x2f9dc, 0, 0, 0, f(No, false, "跰")}, - {0x2f9dd, 0, 0, 0, f(No, false, "𠣞")}, - {0x2f9de, 0, 0, 0, f(No, false, "軔")}, - {0x2f9df, 0, 0, 0, f(No, false, "輸")}, - {0x2f9e0, 0, 0, 0, f(No, false, "𨗒")}, - {0x2f9e1, 0, 0, 0, f(No, false, "𨗭")}, - {0x2f9e2, 0, 0, 0, f(No, false, "邔")}, - {0x2f9e3, 0, 0, 0, f(No, false, "郱")}, - {0x2f9e4, 0, 0, 0, f(No, false, "鄑")}, - {0x2f9e5, 0, 0, 0, f(No, false, "𨜮")}, - {0x2f9e6, 0, 0, 0, f(No, false, "鄛")}, - {0x2f9e7, 0, 0, 0, f(No, false, "鈸")}, - {0x2f9e8, 0, 0, 0, f(No, false, "鋗")}, - {0x2f9e9, 0, 0, 0, f(No, false, "鋘")}, - {0x2f9ea, 0, 0, 0, f(No, false, "鉼")}, - {0x2f9eb, 0, 0, 0, f(No, false, "鏹")}, - {0x2f9ec, 0, 0, 0, f(No, false, "鐕")}, - {0x2f9ed, 0, 0, 0, f(No, false, "𨯺")}, - {0x2f9ee, 0, 0, 0, f(No, false, "開")}, - {0x2f9ef, 0, 0, 0, f(No, false, "䦕")}, - {0x2f9f0, 0, 0, 0, f(No, false, "閷")}, - {0x2f9f1, 0, 0, 0, f(No, false, "𨵷")}, - {0x2f9f2, 0, 0, 0, f(No, false, "䧦")}, - {0x2f9f3, 0, 0, 0, f(No, false, "雃")}, - {0x2f9f4, 0, 0, 0, f(No, false, "嶲")}, - {0x2f9f5, 0, 0, 0, f(No, false, "霣")}, - {0x2f9f6, 0, 0, 0, f(No, false, "𩅅")}, - {0x2f9f7, 0, 0, 0, f(No, false, "𩈚")}, - {0x2f9f8, 0, 0, 0, f(No, false, "䩮")}, - {0x2f9f9, 0, 0, 0, f(No, false, "䩶")}, - {0x2f9fa, 0, 0, 0, f(No, false, "韠")}, - {0x2f9fb, 0, 0, 0, f(No, false, "𩐊")}, - {0x2f9fc, 0, 0, 0, f(No, false, "䪲")}, - {0x2f9fd, 0, 0, 0, f(No, false, "𩒖")}, - {0x2f9fe, 0, 0, 0, f(No, false, "頋")}, - {0x2fa00, 0, 0, 0, f(No, false, "頩")}, - {0x2fa01, 0, 0, 0, f(No, false, "𩖶")}, - {0x2fa02, 0, 0, 0, f(No, false, "飢")}, - {0x2fa03, 0, 0, 0, f(No, false, "䬳")}, - {0x2fa04, 0, 0, 0, f(No, false, "餩")}, - {0x2fa05, 0, 0, 0, f(No, false, "馧")}, - {0x2fa06, 0, 0, 0, f(No, false, "駂")}, - {0x2fa07, 0, 0, 0, f(No, false, "駾")}, - {0x2fa08, 0, 0, 0, f(No, false, "䯎")}, - {0x2fa09, 0, 0, 0, f(No, false, "𩬰")}, - {0x2fa0a, 0, 0, 0, f(No, false, "鬒")}, - {0x2fa0b, 0, 0, 0, f(No, false, "鱀")}, - {0x2fa0c, 0, 0, 0, f(No, false, "鳽")}, - {0x2fa0d, 0, 0, 0, f(No, false, "䳎")}, - {0x2fa0e, 0, 0, 0, f(No, false, "䳭")}, - {0x2fa0f, 0, 0, 0, f(No, false, "鵧")}, - {0x2fa10, 0, 0, 0, f(No, false, "𪃎")}, - {0x2fa11, 0, 0, 0, f(No, false, "䳸")}, - {0x2fa12, 0, 0, 0, f(No, false, "𪄅")}, - {0x2fa13, 0, 0, 0, f(No, false, "𪈎")}, - {0x2fa14, 0, 0, 0, f(No, false, "𪊑")}, - {0x2fa15, 0, 0, 0, f(No, false, "麻")}, - {0x2fa16, 0, 0, 0, f(No, false, "䵖")}, - {0x2fa17, 0, 0, 0, f(No, false, "黹")}, - {0x2fa18, 0, 0, 0, f(No, false, "黾")}, - {0x2fa19, 0, 0, 0, f(No, false, "鼅")}, - {0x2fa1a, 0, 0, 0, f(No, false, "鼏")}, - {0x2fa1b, 0, 0, 0, f(No, false, "鼖")}, - {0x2fa1c, 0, 0, 0, f(No, false, "鼻")}, - {0x2fa1d, 0, 0, 0, f(No, false, "𪘀")}, - {0x2fa1e, 0, 0, 0, f(Yes, false, "")}, -} diff --git a/vendor/golang.org/x/text/unicode/norm/example_iter_test.go b/vendor/golang.org/x/text/unicode/norm/example_iter_test.go deleted file mode 100644 index 82df89c7..00000000 --- a/vendor/golang.org/x/text/unicode/norm/example_iter_test.go +++ /dev/null @@ -1,82 +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 norm_test - -import ( - "bytes" - "fmt" - "unicode/utf8" - - "golang.org/x/text/unicode/norm" -) - -// EqualSimple uses a norm.Iter to compare two non-normalized -// strings for equivalence. -func EqualSimple(a, b string) bool { - var ia, ib norm.Iter - ia.InitString(norm.NFKD, a) - ib.InitString(norm.NFKD, b) - for !ia.Done() && !ib.Done() { - if !bytes.Equal(ia.Next(), ib.Next()) { - return false - } - } - return ia.Done() && ib.Done() -} - -// FindPrefix finds the longest common prefix of ASCII characters -// of a and b. -func FindPrefix(a, b string) int { - i := 0 - for ; i < len(a) && i < len(b) && a[i] < utf8.RuneSelf && a[i] == b[i]; i++ { - } - return i -} - -// EqualOpt is like EqualSimple, but optimizes the special -// case for ASCII characters. -func EqualOpt(a, b string) bool { - n := FindPrefix(a, b) - a, b = a[n:], b[n:] - var ia, ib norm.Iter - ia.InitString(norm.NFKD, a) - ib.InitString(norm.NFKD, b) - for !ia.Done() && !ib.Done() { - if !bytes.Equal(ia.Next(), ib.Next()) { - return false - } - if n := int64(FindPrefix(a[ia.Pos():], b[ib.Pos():])); n != 0 { - ia.Seek(n, 1) - ib.Seek(n, 1) - } - } - return ia.Done() && ib.Done() -} - -var compareTests = []struct{ a, b string }{ - {"aaa", "aaa"}, - {"aaa", "aab"}, - {"a\u0300a", "\u00E0a"}, - {"a\u0300\u0320b", "a\u0320\u0300b"}, - {"\u1E0A\u0323", "\x44\u0323\u0307"}, - // A character that decomposes into multiple segments - // spans several iterations. - {"\u3304", "\u30A4\u30CB\u30F3\u30AF\u3099"}, -} - -func ExampleIter() { - for i, t := range compareTests { - r0 := EqualSimple(t.a, t.b) - r1 := EqualOpt(t.a, t.b) - fmt.Printf("%d: %v %v\n", i, r0, r1) - } - // Output: - // 0: true true - // 1: false false - // 2: true true - // 3: true true - // 4: true true - // 5: true true -} diff --git a/vendor/golang.org/x/text/unicode/norm/example_test.go b/vendor/golang.org/x/text/unicode/norm/example_test.go deleted file mode 100644 index 8f3b1565..00000000 --- a/vendor/golang.org/x/text/unicode/norm/example_test.go +++ /dev/null @@ -1,27 +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 norm_test - -import ( - "fmt" - - "golang.org/x/text/unicode/norm" -) - -func ExampleForm_NextBoundary() { - s := norm.NFD.String("Mêlée") - - for i := 0; i < len(s); { - d := norm.NFC.NextBoundaryInString(s[i:], true) - fmt.Printf("%[1]s: %+[1]q\n", s[i:i+d]) - i += d - } - // Output: - // M: "M" - // ê: "e\u0302" - // l: "l" - // é: "e\u0301" - // e: "e" -} diff --git a/vendor/golang.org/x/text/unicode/norm/forminfo_test.go b/vendor/golang.org/x/text/unicode/norm/forminfo_test.go deleted file mode 100644 index e15ba9be..00000000 --- a/vendor/golang.org/x/text/unicode/norm/forminfo_test.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build test - -package norm - -import "testing" - -func TestProperties(t *testing.T) { - var d runeData - CK := [2]string{"C", "K"} - for k, r := 1, rune(0); r < 0x2ffff; r++ { - if k < len(testData) && r == testData[k].r { - d = testData[k] - k++ - } - s := string(r) - for j, p := range []Properties{NFC.PropertiesString(s), NFKC.PropertiesString(s)} { - f := d.f[j] - if p.CCC() != d.ccc { - t.Errorf("%U: ccc(%s): was %d; want %d %X", r, CK[j], p.CCC(), d.ccc, p.index) - } - if p.isYesC() != (f.qc == Yes) { - t.Errorf("%U: YesC(%s): was %v; want %v", r, CK[j], p.isYesC(), f.qc == Yes) - } - if p.combinesBackward() != (f.qc == Maybe) { - t.Errorf("%U: combines backwards(%s): was %v; want %v", r, CK[j], p.combinesBackward(), f.qc == Maybe) - } - if p.nLeadingNonStarters() != d.nLead { - t.Errorf("%U: nLead(%s): was %d; want %d %#v %#v", r, CK[j], p.nLeadingNonStarters(), d.nLead, p, d) - } - if p.nTrailingNonStarters() != d.nTrail { - t.Errorf("%U: nTrail(%s): was %d; want %d %#v %#v", r, CK[j], p.nTrailingNonStarters(), d.nTrail, p, d) - } - if p.combinesForward() != f.combinesForward { - t.Errorf("%U: combines forward(%s): was %v; want %v %#v", r, CK[j], p.combinesForward(), f.combinesForward, p) - } - // Skip Hangul as it is algorithmically computed. - if r >= hangulBase && r < hangulEnd { - continue - } - if p.hasDecomposition() { - if has := f.decomposition != ""; !has { - t.Errorf("%U: hasDecomposition(%s): was %v; want %v", r, CK[j], p.hasDecomposition(), has) - } - if string(p.Decomposition()) != f.decomposition { - t.Errorf("%U: decomp(%s): was %+q; want %+q", r, CK[j], p.Decomposition(), f.decomposition) - } - } - } - } -} diff --git a/vendor/golang.org/x/text/unicode/norm/iter_test.go b/vendor/golang.org/x/text/unicode/norm/iter_test.go deleted file mode 100644 index d95aa304..00000000 --- a/vendor/golang.org/x/text/unicode/norm/iter_test.go +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package norm - -import ( - "strings" - "testing" -) - -func doIterNorm(f Form, s string) []byte { - acc := []byte{} - i := Iter{} - i.InitString(f, s) - for !i.Done() { - acc = append(acc, i.Next()...) - } - return acc -} - -func TestIterNext(t *testing.T) { - runNormTests(t, "IterNext", func(f Form, out []byte, s string) []byte { - return doIterNorm(f, string(append(out, s...))) - }) -} - -type SegmentTest struct { - in string - out []string -} - -var segmentTests = []SegmentTest{ - {"\u1E0A\u0323a", []string{"\x44\u0323\u0307", "a", ""}}, - {rep('a', segSize), append(strings.Split(rep('a', segSize), ""), "")}, - {rep('a', segSize+2), append(strings.Split(rep('a', segSize+2), ""), "")}, - {rep('a', segSize) + "\u0300aa", - append(strings.Split(rep('a', segSize-1), ""), "a\u0300", "a", "a", "")}, - - // U+0f73 is NOT treated as a starter as it is a modifier - {"a" + grave(29) + "\u0f73", []string{"a" + grave(29), cgj + "\u0f73"}}, - {"a\u0f73", []string{"a\u0f73"}}, - - // U+ff9e is treated as a non-starter. - // TODO: should we? Note that this will only affect iteration, as whether - // or not we do so does not affect the normalization output and will either - // way result in consistent iteration output. - {"a" + grave(30) + "\uff9e", []string{"a" + grave(30), cgj + "\uff9e"}}, - {"a\uff9e", []string{"a\uff9e"}}, -} - -var segmentTestsK = []SegmentTest{ - {"\u3332", []string{"\u30D5", "\u30A1", "\u30E9", "\u30C3", "\u30C8\u3099", ""}}, - // last segment of multi-segment decomposition needs normalization - {"\u3332\u093C", []string{"\u30D5", "\u30A1", "\u30E9", "\u30C3", "\u30C8\u093C\u3099", ""}}, - {"\u320E", []string{"\x28", "\uAC00", "\x29"}}, - - // last segment should be copied to start of buffer. - {"\ufdfa", []string{"\u0635", "\u0644", "\u0649", " ", "\u0627", "\u0644", "\u0644", "\u0647", " ", "\u0639", "\u0644", "\u064a", "\u0647", " ", "\u0648", "\u0633", "\u0644", "\u0645", ""}}, - {"\ufdfa" + grave(30), []string{"\u0635", "\u0644", "\u0649", " ", "\u0627", "\u0644", "\u0644", "\u0647", " ", "\u0639", "\u0644", "\u064a", "\u0647", " ", "\u0648", "\u0633", "\u0644", "\u0645" + grave(30), ""}}, - {"\uFDFA" + grave(64), []string{"\u0635", "\u0644", "\u0649", " ", "\u0627", "\u0644", "\u0644", "\u0647", " ", "\u0639", "\u0644", "\u064a", "\u0647", " ", "\u0648", "\u0633", "\u0644", "\u0645" + grave(30), cgj + grave(30), cgj + grave(4), ""}}, - - // Hangul and Jamo are grouped together. - {"\uAC00", []string{"\u1100\u1161", ""}}, - {"\uAC01", []string{"\u1100\u1161\u11A8", ""}}, - {"\u1100\u1161", []string{"\u1100\u1161", ""}}, -} - -// Note that, by design, segmentation is equal for composing and decomposing forms. -func TestIterSegmentation(t *testing.T) { - segmentTest(t, "SegmentTestD", NFD, segmentTests) - segmentTest(t, "SegmentTestC", NFC, segmentTests) - segmentTest(t, "SegmentTestKD", NFKD, segmentTestsK) - segmentTest(t, "SegmentTestKC", NFKC, segmentTestsK) -} - -func segmentTest(t *testing.T, name string, f Form, tests []SegmentTest) { - iter := Iter{} - for i, tt := range tests { - iter.InitString(f, tt.in) - for j, seg := range tt.out { - if seg == "" { - if !iter.Done() { - res := string(iter.Next()) - t.Errorf(`%s:%d:%d: expected Done()==true, found segment %+q`, name, i, j, res) - } - continue - } - if iter.Done() { - t.Errorf("%s:%d:%d: Done()==true, want false", name, i, j) - } - seg = f.String(seg) - if res := string(iter.Next()); res != seg { - t.Errorf(`%s:%d:%d" segment was %+q (%d); want %+q (%d)`, name, i, j, pc(res), len(res), pc(seg), len(seg)) - } - } - } -} diff --git a/vendor/golang.org/x/text/unicode/norm/normalize_test.go b/vendor/golang.org/x/text/unicode/norm/normalize_test.go deleted file mode 100644 index e3c0ac73..00000000 --- a/vendor/golang.org/x/text/unicode/norm/normalize_test.go +++ /dev/null @@ -1,1287 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package norm - -import ( - "bytes" - "flag" - "fmt" - "io" - "log" - "strings" - "testing" - "unicode/utf8" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/transform" -) - -var ( - testn = flag.Int("testn", -1, "specific test number to run or -1 for all") -) - -// pc replaces any rune r that is repeated n times, for n > 1, with r{n}. -func pc(s string) []byte { - b := bytes.NewBuffer(make([]byte, 0, len(s))) - for i := 0; i < len(s); { - r, sz := utf8.DecodeRuneInString(s[i:]) - n := 0 - if sz == 1 { - // Special-case one-byte case to handle repetition for invalid UTF-8. - for c := s[i]; i+n < len(s) && s[i+n] == c; n++ { - } - } else { - for _, r2 := range s[i:] { - if r2 != r { - break - } - n++ - } - } - b.WriteString(s[i : i+sz]) - if n > 1 { - fmt.Fprintf(b, "{%d}", n) - } - i += sz * n - } - return b.Bytes() -} - -// pidx finds the index from which two strings start to differ, plus context. -// It returns the index and ellipsis if the index is greater than 0. -func pidx(a, b string) (i int, prefix string) { - for ; i < len(a) && i < len(b) && a[i] == b[i]; i++ { - } - if i < 8 { - return 0, "" - } - i -= 3 // ensure taking at least one full rune before the difference. - for k := i - 7; i > k && !utf8.RuneStart(a[i]); i-- { - } - return i, "..." -} - -type PositionTest struct { - input string - pos int - buffer string // expected contents of reorderBuffer, if applicable -} - -type positionFunc func(rb *reorderBuffer, s string) (int, []byte) - -func runPosTests(t *testing.T, name string, f Form, fn positionFunc, tests []PositionTest) { - rb := reorderBuffer{} - rb.init(f, nil) - for i, test := range tests { - rb.reset() - rb.src = inputString(test.input) - rb.nsrc = len(test.input) - pos, out := fn(&rb, test.input) - if pos != test.pos { - t.Errorf("%s:%d: position is %d; want %d", name, i, pos, test.pos) - } - if outs := string(out); outs != test.buffer { - k, pfx := pidx(outs, test.buffer) - t.Errorf("%s:%d: buffer \nwas %s%+q; \nwant %s%+q", name, i, pfx, pc(outs[k:]), pfx, pc(test.buffer[k:])) - } - } -} - -func grave(n int) string { - return rep(0x0300, n) -} - -func rep(r rune, n int) string { - return strings.Repeat(string(r), n) -} - -const segSize = maxByteBufferSize - -var cgj = GraphemeJoiner - -var decomposeSegmentTests = []PositionTest{ - // illegal runes - {"\xC2", 0, ""}, - {"\xC0", 1, "\xC0"}, - {"\u00E0\x80", 2, "\u0061\u0300"}, - // starter - {"a", 1, "a"}, - {"ab", 1, "a"}, - // starter + composing - {"a\u0300", 3, "a\u0300"}, - {"a\u0300b", 3, "a\u0300"}, - // with decomposition - {"\u00C0", 2, "A\u0300"}, - {"\u00C0b", 2, "A\u0300"}, - // long - {grave(31), 60, grave(30) + cgj}, - {"a" + grave(31), 61, "a" + grave(30) + cgj}, - - // Stability tests: see http://www.unicode.org/review/pr-29.html. - // U+0300 COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;; - // U+0B47 ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; - // U+0B3E ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; - // U+1100 HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;; - // U+1161 HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; - {"\u0B47\u0300\u0B3E", 8, "\u0B47\u0300\u0B3E"}, - {"\u1100\u0300\u1161", 8, "\u1100\u0300\u1161"}, - {"\u0B47\u0B3E", 6, "\u0B47\u0B3E"}, - {"\u1100\u1161", 6, "\u1100\u1161"}, - - // U+04DA MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; - // Sequence of decomposing characters that are starters and modifiers. - {"\u0d4a" + strings.Repeat("\u0d3e", 31), 90, "\u0d46" + strings.Repeat("\u0d3e", 30) + cgj}, - - {grave(30), 60, grave(30)}, - // U+FF9E is a starter, but decomposes to U+3099, which is not. - {grave(30) + "\uff9e", 60, grave(30) + cgj}, - // ends with incomplete UTF-8 encoding - {"\xCC", 0, ""}, - {"\u0300\xCC", 2, "\u0300"}, -} - -func decomposeSegmentF(rb *reorderBuffer, s string) (int, []byte) { - rb.initString(NFD, s) - rb.setFlusher(nil, appendFlush) - p := decomposeSegment(rb, 0, true) - return p, rb.out -} - -func TestDecomposeSegment(t *testing.T) { - runPosTests(t, "TestDecomposeSegment", NFC, decomposeSegmentF, decomposeSegmentTests) -} - -var firstBoundaryTests = []PositionTest{ - // no boundary - {"", -1, ""}, - {"\u0300", -1, ""}, - {"\x80\x80", -1, ""}, - // illegal runes - {"\xff", 0, ""}, - {"\u0300\xff", 2, ""}, - {"\u0300\xc0\x80\x80", 2, ""}, - // boundaries - {"a", 0, ""}, - {"\u0300a", 2, ""}, - // Hangul - {"\u1103\u1161", 0, ""}, - {"\u110B\u1173\u11B7", 0, ""}, - {"\u1161\u110B\u1173\u11B7", 3, ""}, - {"\u1173\u11B7\u1103\u1161", 6, ""}, - // too many combining characters. - {grave(maxNonStarters - 1), -1, ""}, - {grave(maxNonStarters), 60, ""}, - {grave(maxNonStarters + 1), 60, ""}, -} - -func firstBoundaryF(rb *reorderBuffer, s string) (int, []byte) { - return rb.f.form.FirstBoundary([]byte(s)), nil -} - -func firstBoundaryStringF(rb *reorderBuffer, s string) (int, []byte) { - return rb.f.form.FirstBoundaryInString(s), nil -} - -func TestFirstBoundary(t *testing.T) { - runPosTests(t, "TestFirstBoundary", NFC, firstBoundaryF, firstBoundaryTests) - runPosTests(t, "TestFirstBoundaryInString", NFC, firstBoundaryStringF, firstBoundaryTests) -} - -func TestNextBoundary(t *testing.T) { - testCases := []struct { - input string - atEOF bool - want int - }{ - // no boundary - {"", true, 0}, - {"", false, -1}, - {"\u0300", true, 2}, - {"\u0300", false, -1}, - {"\x80\x80", true, 1}, - {"\x80\x80", false, 1}, - // illegal runes - {"\xff", false, 1}, - {"\u0300\xff", false, 2}, - {"\u0300\xc0\x80\x80", false, 2}, - {"\xc2\x80\x80", false, 2}, - {"\xc2", false, -1}, - {"\xc2", true, 1}, - {"a\u0300\xc2", false, -1}, - {"a\u0300\xc2", true, 3}, - // boundaries - {"a", true, 1}, - {"a", false, -1}, - {"aa", false, 1}, - {"\u0300", true, 2}, - {"\u0300", false, -1}, - {"\u0300a", false, 2}, - // Hangul - {"\u1103\u1161", true, 6}, - {"\u1103\u1161", false, -1}, - {"\u110B\u1173\u11B7", false, -1}, - {"\u110B\u1173\u11B7\u110B\u1173\u11B7", false, 9}, - {"\u1161\u110B\u1173\u11B7", false, 3}, - {"\u1173\u11B7\u1103\u1161", false, 6}, - // too many combining characters. - {grave(maxNonStarters - 1), false, -1}, - {grave(maxNonStarters), false, 60}, - {grave(maxNonStarters + 1), false, 60}, - } - - for _, tc := range testCases { - if got := NFC.NextBoundary([]byte(tc.input), tc.atEOF); got != tc.want { - t.Errorf("NextBoundary(%+q, %v) = %d; want %d", tc.input, tc.atEOF, got, tc.want) - } - if got := NFC.NextBoundaryInString(tc.input, tc.atEOF); got != tc.want { - t.Errorf("NextBoundaryInString(%+q, %v) = %d; want %d", tc.input, tc.atEOF, got, tc.want) - } - } -} - -var decomposeToLastTests = []PositionTest{ - // ends with inert character - {"Hello!", 6, ""}, - {"\u0632", 2, ""}, - {"a\u0301\u0635", 5, ""}, - // ends with non-inert starter - {"a", 0, "a"}, - {"a\u0301a", 3, "a"}, - {"a\u0301\u03B9", 3, "\u03B9"}, - {"a\u0327", 0, "a\u0327"}, - // illegal runes - {"\xFF", 1, ""}, - {"aa\xFF", 3, ""}, - {"\xC0\x80\x80", 3, ""}, - {"\xCC\x80\x80", 3, ""}, - // ends with incomplete UTF-8 encoding - {"a\xCC", 2, ""}, - // ends with combining characters - {"\u0300\u0301", 0, "\u0300\u0301"}, - {"a\u0300\u0301", 0, "a\u0300\u0301"}, - {"a\u0301\u0308", 0, "a\u0301\u0308"}, - {"a\u0308\u0301", 0, "a\u0308\u0301"}, - {"aaaa\u0300\u0301", 3, "a\u0300\u0301"}, - {"\u0300a\u0300\u0301", 2, "a\u0300\u0301"}, - {"\u00C0", 0, "A\u0300"}, - {"a\u00C0", 1, "A\u0300"}, - // decomposing - {"a\u0300\u00E0", 3, "a\u0300"}, - // multisegment decompositions (flushes leading segments) - {"a\u0300\uFDC0", 7, "\u064A"}, - {"\uFDC0" + grave(29), 4, "\u064A" + grave(29)}, - {"\uFDC0" + grave(30), 4, "\u064A" + grave(30)}, - {"\uFDC0" + grave(31), 5, grave(30)}, - {"\uFDFA" + grave(14), 31, "\u0645" + grave(14)}, - // Overflow - {"\u00E0" + grave(29), 0, "a" + grave(30)}, - {"\u00E0" + grave(30), 2, grave(30)}, - // Hangul - {"a\u1103", 1, "\u1103"}, - {"a\u110B", 1, "\u110B"}, - {"a\u110B\u1173", 1, "\u110B\u1173"}, - // See comment in composition.go:compBoundaryAfter. - {"a\u110B\u1173\u11B7", 1, "\u110B\u1173\u11B7"}, - {"a\uC73C", 1, "\u110B\u1173"}, - {"다음", 3, "\u110B\u1173\u11B7"}, - {"다", 0, "\u1103\u1161"}, - {"\u1103\u1161\u110B\u1173\u11B7", 6, "\u110B\u1173\u11B7"}, - {"\u110B\u1173\u11B7\u1103\u1161", 9, "\u1103\u1161"}, - {"다음음", 6, "\u110B\u1173\u11B7"}, - {"음다다", 6, "\u1103\u1161"}, - // maximized buffer - {"a" + grave(30), 0, "a" + grave(30)}, - // Buffer overflow - {"a" + grave(31), 3, grave(30)}, - // weird UTF-8 - {"a\u0300\u11B7", 0, "a\u0300\u11B7"}, -} - -func decomposeToLast(rb *reorderBuffer, s string) (int, []byte) { - rb.setFlusher([]byte(s), appendFlush) - decomposeToLastBoundary(rb) - buf := rb.flush(nil) - return len(rb.out), buf -} - -func TestDecomposeToLastBoundary(t *testing.T) { - runPosTests(t, "TestDecomposeToLastBoundary", NFKC, decomposeToLast, decomposeToLastTests) -} - -var lastBoundaryTests = []PositionTest{ - // ends with inert character - {"Hello!", 6, ""}, - {"\u0632", 2, ""}, - // ends with non-inert starter - {"a", 0, ""}, - // illegal runes - {"\xff", 1, ""}, - {"aa\xff", 3, ""}, - {"a\xff\u0300", 1, ""}, // TODO: should probably be 2. - {"\xc0\x80\x80", 3, ""}, - {"\xc0\x80\x80\u0300", 3, ""}, - // ends with incomplete UTF-8 encoding - {"\xCC", -1, ""}, - {"\xE0\x80", -1, ""}, - {"\xF0\x80\x80", -1, ""}, - {"a\xCC", 0, ""}, - {"\x80\xCC", 1, ""}, - {"\xCC\xCC", 1, ""}, - // ends with combining characters - {"a\u0300\u0301", 0, ""}, - {"aaaa\u0300\u0301", 3, ""}, - {"\u0300a\u0300\u0301", 2, ""}, - {"\u00C2", 0, ""}, - {"a\u00C2", 1, ""}, - // decomposition may recombine - {"\u0226", 0, ""}, - // no boundary - {"", -1, ""}, - {"\u0300\u0301", -1, ""}, - {"\u0300", -1, ""}, - {"\x80\x80", -1, ""}, - {"\x80\x80\u0301", -1, ""}, - // Hangul - {"다음", 3, ""}, - {"다", 0, ""}, - {"\u1103\u1161\u110B\u1173\u11B7", 6, ""}, - {"\u110B\u1173\u11B7\u1103\u1161", 9, ""}, - // too many combining characters. - {grave(maxNonStarters - 1), -1, ""}, - // May still be preceded with a non-starter. - {grave(maxNonStarters), -1, ""}, - // May still need to insert a cgj after the last combiner. - {grave(maxNonStarters + 1), 2, ""}, - {grave(maxNonStarters + 2), 4, ""}, - - {"a" + grave(maxNonStarters-1), 0, ""}, - {"a" + grave(maxNonStarters), 0, ""}, - // May still need to insert a cgj after the last combiner. - {"a" + grave(maxNonStarters+1), 3, ""}, - {"a" + grave(maxNonStarters+2), 5, ""}, -} - -func lastBoundaryF(rb *reorderBuffer, s string) (int, []byte) { - return rb.f.form.LastBoundary([]byte(s)), nil -} - -func TestLastBoundary(t *testing.T) { - runPosTests(t, "TestLastBoundary", NFC, lastBoundaryF, lastBoundaryTests) -} - -type spanTest struct { - input string - atEOF bool - n int - err error -} - -var quickSpanTests = []spanTest{ - {"", true, 0, nil}, - // starters - {"a", true, 1, nil}, - {"abc", true, 3, nil}, - {"\u043Eb", true, 3, nil}, - // incomplete last rune. - {"\xCC", true, 1, nil}, - {"\xCC", false, 0, transform.ErrShortSrc}, - {"a\xCC", true, 2, nil}, - {"a\xCC", false, 0, transform.ErrShortSrc}, // TODO: could be 1 for NFD - // incorrectly ordered combining characters - {"\u0300\u0316", true, 0, transform.ErrEndOfSpan}, - {"\u0300\u0316", false, 0, transform.ErrEndOfSpan}, - {"\u0300\u0316cd", true, 0, transform.ErrEndOfSpan}, - {"\u0300\u0316cd", false, 0, transform.ErrEndOfSpan}, - // have a maximum number of combining characters. - {rep(0x035D, 30) + "\u035B", true, 0, transform.ErrEndOfSpan}, - {"a" + rep(0x035D, 30) + "\u035B", true, 0, transform.ErrEndOfSpan}, - {"Ɵ" + rep(0x035D, 30) + "\u035B", true, 0, transform.ErrEndOfSpan}, - {"aa" + rep(0x035D, 30) + "\u035B", true, 1, transform.ErrEndOfSpan}, - {rep(0x035D, 30) + cgj + "\u035B", true, 64, nil}, - {"a" + rep(0x035D, 30) + cgj + "\u035B", true, 65, nil}, - {"Ɵ" + rep(0x035D, 30) + cgj + "\u035B", true, 66, nil}, - {"aa" + rep(0x035D, 30) + cgj + "\u035B", true, 66, nil}, - - {"a" + rep(0x035D, 30) + cgj + "\u035B", false, 61, transform.ErrShortSrc}, - {"Ɵ" + rep(0x035D, 30) + cgj + "\u035B", false, 62, transform.ErrShortSrc}, - {"aa" + rep(0x035D, 30) + cgj + "\u035B", false, 62, transform.ErrShortSrc}, -} - -var quickSpanNFDTests = []spanTest{ - // needs decomposing - {"\u00C0", true, 0, transform.ErrEndOfSpan}, - {"abc\u00C0", true, 3, transform.ErrEndOfSpan}, - // correctly ordered combining characters - {"\u0300", true, 2, nil}, - {"ab\u0300", true, 4, nil}, - {"ab\u0300cd", true, 6, nil}, - {"\u0300cd", true, 4, nil}, - {"\u0316\u0300", true, 4, nil}, - {"ab\u0316\u0300", true, 6, nil}, - {"ab\u0316\u0300cd", true, 8, nil}, - {"ab\u0316\u0300\u00C0", true, 6, transform.ErrEndOfSpan}, - {"\u0316\u0300cd", true, 6, nil}, - {"\u043E\u0308b", true, 5, nil}, - // incorrectly ordered combining characters - {"ab\u0300\u0316", true, 1, transform.ErrEndOfSpan}, // TODO: we could skip 'b' as well. - {"ab\u0300\u0316cd", true, 1, transform.ErrEndOfSpan}, - // Hangul - {"같은", true, 0, transform.ErrEndOfSpan}, -} - -var quickSpanNFCTests = []spanTest{ - // okay composed - {"\u00C0", true, 2, nil}, - {"abc\u00C0", true, 5, nil}, - // correctly ordered combining characters - // TODO: b may combine with modifiers, which is why this fails. We could - // make a more precise test that that actually checks whether last - // characters combines. Probably not worth it. - {"ab\u0300", true, 1, transform.ErrEndOfSpan}, - {"ab\u0300cd", true, 1, transform.ErrEndOfSpan}, - {"ab\u0316\u0300", true, 1, transform.ErrEndOfSpan}, - {"ab\u0316\u0300cd", true, 1, transform.ErrEndOfSpan}, - {"\u00C0\u035D", true, 4, nil}, - // we do not special case leading combining characters - {"\u0300cd", true, 0, transform.ErrEndOfSpan}, - {"\u0300", true, 0, transform.ErrEndOfSpan}, - {"\u0316\u0300", true, 0, transform.ErrEndOfSpan}, - {"\u0316\u0300cd", true, 0, transform.ErrEndOfSpan}, - // incorrectly ordered combining characters - {"ab\u0300\u0316", true, 1, transform.ErrEndOfSpan}, - {"ab\u0300\u0316cd", true, 1, transform.ErrEndOfSpan}, - // Hangul - {"같은", true, 6, nil}, - {"같은", false, 3, transform.ErrShortSrc}, - // We return the start of the violating segment in case of overflow. - {grave(30) + "\uff9e", true, 0, transform.ErrEndOfSpan}, - {grave(30), true, 0, transform.ErrEndOfSpan}, -} - -func runSpanTests(t *testing.T, name string, f Form, testCases []spanTest) { - for i, tc := range testCases { - s := fmt.Sprintf("Bytes/%s/%d=%+q/atEOF=%v", name, i, pc(tc.input), tc.atEOF) - ok := testtext.Run(t, s, func(t *testing.T) { - n, err := f.Span([]byte(tc.input), tc.atEOF) - if n != tc.n || err != tc.err { - t.Errorf("\n got %d, %v;\nwant %d, %v", n, err, tc.n, tc.err) - } - }) - if !ok { - continue // Don't do the String variant if the Bytes variant failed. - } - s = fmt.Sprintf("String/%s/%d=%+q/atEOF=%v", name, i, pc(tc.input), tc.atEOF) - testtext.Run(t, s, func(t *testing.T) { - n, err := f.SpanString(tc.input, tc.atEOF) - if n != tc.n || err != tc.err { - t.Errorf("\n got %d, %v;\nwant %d, %v", n, err, tc.n, tc.err) - } - }) - } -} - -func TestSpan(t *testing.T) { - runSpanTests(t, "NFD", NFD, quickSpanTests) - runSpanTests(t, "NFD", NFD, quickSpanNFDTests) - runSpanTests(t, "NFC", NFC, quickSpanTests) - runSpanTests(t, "NFC", NFC, quickSpanNFCTests) -} - -var isNormalTests = []PositionTest{ - {"", 1, ""}, - // illegal runes - {"\xff", 1, ""}, - // starters - {"a", 1, ""}, - {"abc", 1, ""}, - {"\u043Eb", 1, ""}, - // incorrectly ordered combining characters - {"\u0300\u0316", 0, ""}, - {"ab\u0300\u0316", 0, ""}, - {"ab\u0300\u0316cd", 0, ""}, - {"\u0300\u0316cd", 0, ""}, -} -var isNormalNFDTests = []PositionTest{ - // needs decomposing - {"\u00C0", 0, ""}, - {"abc\u00C0", 0, ""}, - // correctly ordered combining characters - {"\u0300", 1, ""}, - {"ab\u0300", 1, ""}, - {"ab\u0300cd", 1, ""}, - {"\u0300cd", 1, ""}, - {"\u0316\u0300", 1, ""}, - {"ab\u0316\u0300", 1, ""}, - {"ab\u0316\u0300cd", 1, ""}, - {"\u0316\u0300cd", 1, ""}, - {"\u043E\u0308b", 1, ""}, - // Hangul - {"같은", 0, ""}, -} -var isNormalNFCTests = []PositionTest{ - // okay composed - {"\u00C0", 1, ""}, - {"abc\u00C0", 1, ""}, - // need reordering - {"a\u0300", 0, ""}, - {"a\u0300cd", 0, ""}, - {"a\u0316\u0300", 0, ""}, - {"a\u0316\u0300cd", 0, ""}, - // correctly ordered combining characters - {"ab\u0300", 1, ""}, - {"ab\u0300cd", 1, ""}, - {"ab\u0316\u0300", 1, ""}, - {"ab\u0316\u0300cd", 1, ""}, - {"\u00C0\u035D", 1, ""}, - {"\u0300", 1, ""}, - {"\u0316\u0300cd", 1, ""}, - // Hangul - {"같은", 1, ""}, -} - -var isNormalNFKXTests = []PositionTest{ - // Special case. - {"\u00BC", 0, ""}, -} - -func isNormalF(rb *reorderBuffer, s string) (int, []byte) { - if rb.f.form.IsNormal([]byte(s)) { - return 1, nil - } - return 0, nil -} - -func isNormalStringF(rb *reorderBuffer, s string) (int, []byte) { - if rb.f.form.IsNormalString(s) { - return 1, nil - } - return 0, nil -} - -func TestIsNormal(t *testing.T) { - runPosTests(t, "TestIsNormalNFD1", NFD, isNormalF, isNormalTests) - runPosTests(t, "TestIsNormalNFD2", NFD, isNormalF, isNormalNFDTests) - runPosTests(t, "TestIsNormalNFC1", NFC, isNormalF, isNormalTests) - runPosTests(t, "TestIsNormalNFC2", NFC, isNormalF, isNormalNFCTests) - runPosTests(t, "TestIsNormalNFKD1", NFKD, isNormalF, isNormalTests) - runPosTests(t, "TestIsNormalNFKD2", NFKD, isNormalF, isNormalNFDTests) - runPosTests(t, "TestIsNormalNFKD3", NFKD, isNormalF, isNormalNFKXTests) - runPosTests(t, "TestIsNormalNFKC1", NFKC, isNormalF, isNormalTests) - runPosTests(t, "TestIsNormalNFKC2", NFKC, isNormalF, isNormalNFCTests) - runPosTests(t, "TestIsNormalNFKC3", NFKC, isNormalF, isNormalNFKXTests) -} - -func TestIsNormalString(t *testing.T) { - runPosTests(t, "TestIsNormalNFD1", NFD, isNormalStringF, isNormalTests) - runPosTests(t, "TestIsNormalNFD2", NFD, isNormalStringF, isNormalNFDTests) - runPosTests(t, "TestIsNormalNFC1", NFC, isNormalStringF, isNormalTests) - runPosTests(t, "TestIsNormalNFC2", NFC, isNormalStringF, isNormalNFCTests) -} - -type AppendTest struct { - left string - right string - out string -} - -type appendFunc func(f Form, out []byte, s string) []byte - -var fstr = []string{"NFC", "NFD", "NFKC", "NFKD"} - -func runNormTests(t *testing.T, name string, fn appendFunc) { - for f := NFC; f <= NFKD; f++ { - runAppendTests(t, name, f, fn, normTests[f]) - } -} - -func runAppendTests(t *testing.T, name string, f Form, fn appendFunc, tests []AppendTest) { - for i, test := range tests { - t.Run(fmt.Sprintf("%s/%d", fstr[f], i), func(t *testing.T) { - id := pc(test.left + test.right) - if *testn >= 0 && i != *testn { - return - } - t.Run("fn", func(t *testing.T) { - out := []byte(test.left) - have := string(fn(f, out, test.right)) - if len(have) != len(test.out) { - t.Errorf("%+q: length is %d; want %d (%+q vs %+q)", id, len(have), len(test.out), pc(have), pc(test.out)) - } - if have != test.out { - k, pf := pidx(have, test.out) - t.Errorf("%+q:\nwas %s%+q; \nwant %s%+q", id, pf, pc(have[k:]), pf, pc(test.out[k:])) - } - }) - - // Bootstrap by normalizing input. Ensures that the various variants - // behave the same. - for g := NFC; g <= NFKD; g++ { - if f == g { - continue - } - t.Run(fstr[g], func(t *testing.T) { - want := g.String(test.left + test.right) - have := string(fn(g, g.AppendString(nil, test.left), test.right)) - if len(have) != len(want) { - t.Errorf("%+q: length is %d; want %d (%+q vs %+q)", id, len(have), len(want), pc(have), pc(want)) - } - if have != want { - k, pf := pidx(have, want) - t.Errorf("%+q:\nwas %s%+q; \nwant %s%+q", id, pf, pc(have[k:]), pf, pc(want[k:])) - } - }) - } - }) - } -} - -var normTests = [][]AppendTest{ - appendTestsNFC, - appendTestsNFD, - appendTestsNFKC, - appendTestsNFKD, -} - -var appendTestsNFC = []AppendTest{ - {"", ascii, ascii}, - {"", txt_all, txt_all}, - {"\uff9e", grave(30), "\uff9e" + grave(29) + cgj + grave(1)}, - {grave(30), "\uff9e", grave(30) + cgj + "\uff9e"}, - - // Tests designed for Iter. - { // ordering of non-composing combining characters - "", - "\u0305\u0316", - "\u0316\u0305", - }, - { // segment overflow - "", - "a" + rep(0x0305, maxNonStarters+4) + "\u0316", - "a" + rep(0x0305, maxNonStarters) + cgj + "\u0316" + rep(0x305, 4), - }, - - { // Combine across non-blocking non-starters. - // U+0327 COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; - // U+0325 COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; - "", "a\u0327\u0325", "\u1e01\u0327", - }, - - { // Jamo V+T does not combine. - "", - "\u1161\u11a8", - "\u1161\u11a8", - }, - - // Stability tests: see http://www.unicode.org/review/pr-29.html. - {"", "\u0b47\u0300\u0b3e", "\u0b47\u0300\u0b3e"}, - {"", "\u1100\u0300\u1161", "\u1100\u0300\u1161"}, - {"", "\u0b47\u0b3e", "\u0b4b"}, - {"", "\u1100\u1161", "\uac00"}, - - // U+04DA MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; - { // 0d4a starts a new segment. - "", - "\u0d4a" + strings.Repeat("\u0d3e", 15) + "\u0d4a" + strings.Repeat("\u0d3e", 15), - "\u0d4a" + strings.Repeat("\u0d3e", 15) + "\u0d4a" + strings.Repeat("\u0d3e", 15), - }, - - { // Split combining characters. - // TODO: don't insert CGJ before starters. - "", - "\u0d46" + strings.Repeat("\u0d3e", 31), - "\u0d4a" + strings.Repeat("\u0d3e", 29) + cgj + "\u0d3e", - }, - - { // Split combining characters. - "", - "\u0d4a" + strings.Repeat("\u0d3e", 30), - "\u0d4a" + strings.Repeat("\u0d3e", 29) + cgj + "\u0d3e", - }, - - { // https://golang.org/issues/20079 - "", - "\xeb\u0344", - "\xeb\u0308\u0301", - }, - - { // https://golang.org/issues/20079 - "", - "\uac00" + strings.Repeat("\u0300", 30), - "\uac00" + strings.Repeat("\u0300", 29) + "\u034f\u0300", - }, - - { // https://golang.org/issues/20079 - "", - "\xeb" + strings.Repeat("\u0300", 31), - "\xeb" + strings.Repeat("\u0300", 30) + "\u034f\u0300", - }, -} - -var appendTestsNFD = []AppendTest{ - // TODO: Move some of the tests here. -} - -var appendTestsNFKC = []AppendTest{ - // empty buffers - {"", "", ""}, - {"a", "", "a"}, - {"", "a", "a"}, - {"", "\u0041\u0307\u0304", "\u01E0"}, - // segment split across buffers - {"", "a\u0300b", "\u00E0b"}, - {"a", "\u0300b", "\u00E0b"}, - {"a", "\u0300\u0316", "\u00E0\u0316"}, - {"a", "\u0316\u0300", "\u00E0\u0316"}, - {"a", "\u0300a\u0300", "\u00E0\u00E0"}, - {"a", "\u0300a\u0300a\u0300", "\u00E0\u00E0\u00E0"}, - {"a", "\u0300aaa\u0300aaa\u0300", "\u00E0aa\u00E0aa\u00E0"}, - {"a\u0300", "\u0327", "\u00E0\u0327"}, - {"a\u0327", "\u0300", "\u00E0\u0327"}, - {"a\u0316", "\u0300", "\u00E0\u0316"}, - {"\u0041\u0307", "\u0304", "\u01E0"}, - // Hangul - {"", "\u110B\u1173", "\uC73C"}, - {"", "\u1103\u1161", "\uB2E4"}, - {"", "\u110B\u1173\u11B7", "\uC74C"}, - {"", "\u320E", "\x28\uAC00\x29"}, - {"", "\x28\u1100\u1161\x29", "\x28\uAC00\x29"}, - {"\u1103", "\u1161", "\uB2E4"}, - {"\u110B", "\u1173\u11B7", "\uC74C"}, - {"\u110B\u1173", "\u11B7", "\uC74C"}, - {"\uC73C", "\u11B7", "\uC74C"}, - // UTF-8 encoding split across buffers - {"a\xCC", "\x80", "\u00E0"}, - {"a\xCC", "\x80b", "\u00E0b"}, - {"a\xCC", "\x80a\u0300", "\u00E0\u00E0"}, - {"a\xCC", "\x80\x80", "\u00E0\x80"}, - {"a\xCC", "\x80\xCC", "\u00E0\xCC"}, - {"a\u0316\xCC", "\x80a\u0316\u0300", "\u00E0\u0316\u00E0\u0316"}, - // ending in incomplete UTF-8 encoding - {"", "\xCC", "\xCC"}, - {"a", "\xCC", "a\xCC"}, - {"a", "b\xCC", "ab\xCC"}, - {"\u0226", "\xCC", "\u0226\xCC"}, - // illegal runes - {"", "\x80", "\x80"}, - {"", "\x80\x80\x80", "\x80\x80\x80"}, - {"", "\xCC\x80\x80\x80", "\xCC\x80\x80\x80"}, - {"", "a\x80", "a\x80"}, - {"", "a\x80\x80\x80", "a\x80\x80\x80"}, - {"", "a\x80\x80\x80\x80\x80\x80", "a\x80\x80\x80\x80\x80\x80"}, - {"a", "\x80\x80\x80", "a\x80\x80\x80"}, - // overflow - {"", strings.Repeat("\x80", 33), strings.Repeat("\x80", 33)}, - {strings.Repeat("\x80", 33), "", strings.Repeat("\x80", 33)}, - {strings.Repeat("\x80", 33), strings.Repeat("\x80", 33), strings.Repeat("\x80", 66)}, - // overflow of combining characters - {"", grave(34), grave(30) + cgj + grave(4)}, - {"", grave(36), grave(30) + cgj + grave(6)}, - {grave(29), grave(5), grave(30) + cgj + grave(4)}, - {grave(30), grave(4), grave(30) + cgj + grave(4)}, - {grave(30), grave(3), grave(30) + cgj + grave(3)}, - {grave(30) + "\xCC", "\x80", grave(30) + cgj + grave(1)}, - {"", "\uFDFA" + grave(14), "\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644\u064a\u0647 \u0648\u0633\u0644\u0645" + grave(14)}, - {"", "\uFDFA" + grave(28) + "\u0316", "\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644\u064a\u0647 \u0648\u0633\u0644\u0645\u0316" + grave(28)}, - // - First rune has a trailing non-starter. - {"\u00d5", grave(30), "\u00d5" + grave(29) + cgj + grave(1)}, - // - U+FF9E decomposes into a non-starter in compatibility mode. A CGJ must be - // inserted even when FF9E starts a new segment. - {"\uff9e", grave(30), "\u3099" + grave(29) + cgj + grave(1)}, - {grave(30), "\uff9e", grave(30) + cgj + "\u3099"}, - // - Many non-starter decompositions in a row causing overflow. - {"", rep(0x340, 31), rep(0x300, 30) + cgj + "\u0300"}, - {"", rep(0xFF9E, 31), rep(0x3099, 30) + cgj + "\u3099"}, - - {"", "\u0644\u0625" + rep(0x300, 31), "\u0644\u0625" + rep(0x300, 29) + cgj + "\u0300\u0300"}, - {"", "\ufef9" + rep(0x300, 31), "\u0644\u0625" + rep(0x300, 29) + cgj + rep(0x0300, 2)}, - {"", "\ufef9" + rep(0x300, 31), "\u0644\u0625" + rep(0x300, 29) + cgj + rep(0x0300, 2)}, - - // U+0F81 TIBETAN VOWEL SIGN REVERSED II splits into two modifiers. - {"", "\u0f7f" + rep(0xf71, 29) + "\u0f81", "\u0f7f" + rep(0xf71, 29) + cgj + "\u0f71\u0f80"}, - {"", "\u0f7f" + rep(0xf71, 28) + "\u0f81", "\u0f7f" + rep(0xf71, 29) + "\u0f80"}, - {"", "\u0f7f" + rep(0xf81, 16), "\u0f7f" + rep(0xf71, 15) + rep(0xf80, 15) + cgj + "\u0f71\u0f80"}, - - // weird UTF-8 - {"\u00E0\xE1", "\x86", "\u00E0\xE1\x86"}, - {"a\u0300\u11B7", "\u0300", "\u00E0\u11B7\u0300"}, - {"a\u0300\u11B7\u0300", "\u0300", "\u00E0\u11B7\u0300\u0300"}, - {"\u0300", "\xF8\x80\x80\x80\x80\u0300", "\u0300\xF8\x80\x80\x80\x80\u0300"}, - {"\u0300", "\xFC\x80\x80\x80\x80\x80\u0300", "\u0300\xFC\x80\x80\x80\x80\x80\u0300"}, - {"\xF8\x80\x80\x80\x80\u0300", "\u0300", "\xF8\x80\x80\x80\x80\u0300\u0300"}, - {"\xFC\x80\x80\x80\x80\x80\u0300", "\u0300", "\xFC\x80\x80\x80\x80\x80\u0300\u0300"}, - {"\xF8\x80\x80\x80", "\x80\u0300\u0300", "\xF8\x80\x80\x80\x80\u0300\u0300"}, - - {"", strings.Repeat("a\u0316\u0300", 6), strings.Repeat("\u00E0\u0316", 6)}, - // large input. - {"", strings.Repeat("a\u0300\u0316", 31), strings.Repeat("\u00E0\u0316", 31)}, - {"", strings.Repeat("a\u0300\u0316", 4000), strings.Repeat("\u00E0\u0316", 4000)}, - {"", strings.Repeat("\x80\x80", 4000), strings.Repeat("\x80\x80", 4000)}, - {"", "\u0041\u0307\u0304", "\u01E0"}, -} - -var appendTestsNFKD = []AppendTest{ - {"", "a" + grave(64), "a" + grave(30) + cgj + grave(30) + cgj + grave(4)}, - - { // segment overflow on unchanged character - "", - "a" + grave(64) + "\u0316", - "a" + grave(30) + cgj + grave(30) + cgj + "\u0316" + grave(4), - }, - { // segment overflow on unchanged character + start value - "", - "a" + grave(98) + "\u0316", - "a" + grave(30) + cgj + grave(30) + cgj + grave(30) + cgj + "\u0316" + grave(8), - }, - { // segment overflow on decomposition. (U+0340 decomposes to U+0300.) - "", - "a" + grave(59) + "\u0340", - "a" + grave(30) + cgj + grave(30), - }, - { // segment overflow on non-starter decomposition - "", - "a" + grave(33) + "\u0340" + grave(30) + "\u0320", - "a" + grave(30) + cgj + grave(30) + cgj + "\u0320" + grave(4), - }, - { // start value after ASCII overflow - "", - rep('a', segSize) + grave(32) + "\u0320", - rep('a', segSize) + grave(30) + cgj + "\u0320" + grave(2), - }, - { // Jamo overflow - "", - "\u1100\u1161" + grave(30) + "\u0320" + grave(2), - "\u1100\u1161" + grave(29) + cgj + "\u0320" + grave(3), - }, - { // Hangul - "", - "\uac00", - "\u1100\u1161", - }, - { // Hangul overflow - "", - "\uac00" + grave(32) + "\u0320", - "\u1100\u1161" + grave(29) + cgj + "\u0320" + grave(3), - }, - { // Hangul overflow in Hangul mode. - "", - "\uac00\uac00" + grave(32) + "\u0320", - "\u1100\u1161\u1100\u1161" + grave(29) + cgj + "\u0320" + grave(3), - }, - { // Hangul overflow in Hangul mode. - "", - strings.Repeat("\uac00", 3) + grave(32) + "\u0320", - strings.Repeat("\u1100\u1161", 3) + grave(29) + cgj + "\u0320" + grave(3), - }, - { // start value after cc=0 - "", - "您您" + grave(34) + "\u0320", - "您您" + grave(30) + cgj + "\u0320" + grave(4), - }, - { // start value after normalization - "", - "\u0300\u0320a" + grave(34) + "\u0320", - "\u0320\u0300a" + grave(30) + cgj + "\u0320" + grave(4), - }, - { - // U+0F81 TIBETAN VOWEL SIGN REVERSED II splits into two modifiers. - "", - "a\u0f7f" + rep(0xf71, 29) + "\u0f81", - "a\u0f7f" + rep(0xf71, 29) + cgj + "\u0f71\u0f80", - }, -} - -func TestAppend(t *testing.T) { - runNormTests(t, "Append", func(f Form, out []byte, s string) []byte { - return f.Append(out, []byte(s)...) - }) -} - -func TestAppendString(t *testing.T) { - runNormTests(t, "AppendString", func(f Form, out []byte, s string) []byte { - return f.AppendString(out, s) - }) -} - -func TestBytes(t *testing.T) { - runNormTests(t, "Bytes", func(f Form, out []byte, s string) []byte { - buf := []byte{} - buf = append(buf, out...) - buf = append(buf, s...) - return f.Bytes(buf) - }) -} - -func TestString(t *testing.T) { - runNormTests(t, "String", func(f Form, out []byte, s string) []byte { - outs := string(out) + s - return []byte(f.String(outs)) - }) -} - -func TestLinking(t *testing.T) { - const prog = ` - package main - import "fmt" - import "golang.org/x/text/unicode/norm" - func main() { fmt.Println(norm.%s) } - ` - baseline, errB := testtext.CodeSize(fmt.Sprintf(prog, "MaxSegmentSize")) - withTables, errT := testtext.CodeSize(fmt.Sprintf(prog, `NFC.String("")`)) - if errB != nil || errT != nil { - t.Skipf("code size failed: %v and %v", errB, errT) - } - // Tables are at least 50K - if d := withTables - baseline; d < 50*1024 { - t.Errorf("tables appear not to be dropped: %d - %d = %d", - withTables, baseline, d) - } -} - -func appendBench(f Form, in []byte) func() { - buf := make([]byte, 0, 4*len(in)) - return func() { - f.Append(buf, in...) - } -} - -func bytesBench(f Form, in []byte) func() { - return func() { - f.Bytes(in) - } -} - -func iterBench(f Form, in []byte) func() { - iter := Iter{} - return func() { - iter.Init(f, in) - for !iter.Done() { - iter.Next() - } - } -} - -func transformBench(f Form, in []byte) func() { - buf := make([]byte, 4*len(in)) - return func() { - if _, n, err := f.Transform(buf, in, true); err != nil || len(in) != n { - log.Panic(n, len(in), err) - } - } -} - -func readerBench(f Form, in []byte) func() { - buf := make([]byte, 4*len(in)) - return func() { - r := f.Reader(bytes.NewReader(in)) - var err error - for err == nil { - _, err = r.Read(buf) - } - if err != io.EOF { - panic("") - } - } -} - -func writerBench(f Form, in []byte) func() { - buf := make([]byte, 0, 4*len(in)) - return func() { - r := f.Writer(bytes.NewBuffer(buf)) - if _, err := r.Write(in); err != nil { - panic("") - } - } -} - -func appendBenchmarks(bm []func(), f Form, in []byte) []func() { - bm = append(bm, appendBench(f, in)) - bm = append(bm, iterBench(f, in)) - bm = append(bm, transformBench(f, in)) - bm = append(bm, readerBench(f, in)) - bm = append(bm, writerBench(f, in)) - return bm -} - -func doFormBenchmark(b *testing.B, inf, f Form, s string) { - b.StopTimer() - in := inf.Bytes([]byte(s)) - bm := appendBenchmarks(nil, f, in) - b.SetBytes(int64(len(in) * len(bm))) - b.StartTimer() - for i := 0; i < b.N; i++ { - for _, fn := range bm { - fn() - } - } -} - -func doSingle(b *testing.B, f func(Form, []byte) func(), s []byte) { - b.StopTimer() - fn := f(NFC, s) - b.SetBytes(int64(len(s))) - b.StartTimer() - for i := 0; i < b.N; i++ { - fn() - } -} - -var ( - smallNoChange = []byte("nörmalization") - smallChange = []byte("No\u0308rmalization") - ascii = strings.Repeat("There is nothing to change here! ", 500) -) - -func lowerBench(f Form, in []byte) func() { - // Use package strings instead of bytes as it doesn't allocate memory - // if there aren't any changes. - s := string(in) - return func() { - strings.ToLower(s) - } -} - -func BenchmarkLowerCaseNoChange(b *testing.B) { - doSingle(b, lowerBench, smallNoChange) -} -func BenchmarkLowerCaseChange(b *testing.B) { - doSingle(b, lowerBench, smallChange) -} - -func quickSpanBench(f Form, in []byte) func() { - return func() { - f.QuickSpan(in) - } -} - -func BenchmarkQuickSpanChangeNFC(b *testing.B) { - doSingle(b, quickSpanBench, smallNoChange) -} - -func BenchmarkBytesNoChangeNFC(b *testing.B) { - doSingle(b, bytesBench, smallNoChange) -} -func BenchmarkBytesChangeNFC(b *testing.B) { - doSingle(b, bytesBench, smallChange) -} - -func BenchmarkAppendNoChangeNFC(b *testing.B) { - doSingle(b, appendBench, smallNoChange) -} -func BenchmarkAppendChangeNFC(b *testing.B) { - doSingle(b, appendBench, smallChange) -} -func BenchmarkAppendLargeNFC(b *testing.B) { - doSingle(b, appendBench, txt_all_bytes) -} - -func BenchmarkIterNoChangeNFC(b *testing.B) { - doSingle(b, iterBench, smallNoChange) -} -func BenchmarkIterChangeNFC(b *testing.B) { - doSingle(b, iterBench, smallChange) -} -func BenchmarkIterLargeNFC(b *testing.B) { - doSingle(b, iterBench, txt_all_bytes) -} - -func BenchmarkTransformNoChangeNFC(b *testing.B) { - doSingle(b, transformBench, smallNoChange) -} -func BenchmarkTransformChangeNFC(b *testing.B) { - doSingle(b, transformBench, smallChange) -} -func BenchmarkTransformLargeNFC(b *testing.B) { - doSingle(b, transformBench, txt_all_bytes) -} - -func BenchmarkNormalizeAsciiNFC(b *testing.B) { - doFormBenchmark(b, NFC, NFC, ascii) -} -func BenchmarkNormalizeAsciiNFD(b *testing.B) { - doFormBenchmark(b, NFC, NFD, ascii) -} -func BenchmarkNormalizeAsciiNFKC(b *testing.B) { - doFormBenchmark(b, NFC, NFKC, ascii) -} -func BenchmarkNormalizeAsciiNFKD(b *testing.B) { - doFormBenchmark(b, NFC, NFKD, ascii) -} - -func BenchmarkNormalizeNFC2NFC(b *testing.B) { - doFormBenchmark(b, NFC, NFC, txt_all) -} -func BenchmarkNormalizeNFC2NFD(b *testing.B) { - doFormBenchmark(b, NFC, NFD, txt_all) -} -func BenchmarkNormalizeNFD2NFC(b *testing.B) { - doFormBenchmark(b, NFD, NFC, txt_all) -} -func BenchmarkNormalizeNFD2NFD(b *testing.B) { - doFormBenchmark(b, NFD, NFD, txt_all) -} - -// Hangul is often special-cased, so we test it separately. -func BenchmarkNormalizeHangulNFC2NFC(b *testing.B) { - doFormBenchmark(b, NFC, NFC, txt_kr) -} -func BenchmarkNormalizeHangulNFC2NFD(b *testing.B) { - doFormBenchmark(b, NFC, NFD, txt_kr) -} -func BenchmarkNormalizeHangulNFD2NFC(b *testing.B) { - doFormBenchmark(b, NFD, NFC, txt_kr) -} -func BenchmarkNormalizeHangulNFD2NFD(b *testing.B) { - doFormBenchmark(b, NFD, NFD, txt_kr) -} - -var forms = []Form{NFC, NFD, NFKC, NFKD} - -func doTextBenchmark(b *testing.B, s string) { - b.StopTimer() - in := []byte(s) - bm := []func(){} - for _, f := range forms { - bm = appendBenchmarks(bm, f, in) - } - b.SetBytes(int64(len(s) * len(bm))) - b.StartTimer() - for i := 0; i < b.N; i++ { - for _, f := range bm { - f() - } - } -} - -func BenchmarkCanonicalOrdering(b *testing.B) { - doTextBenchmark(b, txt_canon) -} -func BenchmarkExtendedLatin(b *testing.B) { - doTextBenchmark(b, txt_vn) -} -func BenchmarkMiscTwoByteUtf8(b *testing.B) { - doTextBenchmark(b, twoByteUtf8) -} -func BenchmarkMiscThreeByteUtf8(b *testing.B) { - doTextBenchmark(b, threeByteUtf8) -} -func BenchmarkHangul(b *testing.B) { - doTextBenchmark(b, txt_kr) -} -func BenchmarkJapanese(b *testing.B) { - doTextBenchmark(b, txt_jp) -} -func BenchmarkChinese(b *testing.B) { - doTextBenchmark(b, txt_cn) -} -func BenchmarkOverflow(b *testing.B) { - doTextBenchmark(b, overflow) -} - -var overflow = string(bytes.Repeat([]byte("\u035D"), 4096)) + "\u035B" - -// Tests sampled from the Canonical ordering tests (Part 2) of -// http://unicode.org/Public/UNIDATA/NormalizationTest.txt -const txt_canon = `\u0061\u0315\u0300\u05AE\u0300\u0062 \u0061\u0300\u0315\u0300\u05AE\u0062 -\u0061\u0302\u0315\u0300\u05AE\u0062 \u0061\u0307\u0315\u0300\u05AE\u0062 -\u0061\u0315\u0300\u05AE\u030A\u0062 \u0061\u059A\u0316\u302A\u031C\u0062 -\u0061\u032E\u059A\u0316\u302A\u0062 \u0061\u0338\u093C\u0334\u0062 -\u0061\u059A\u0316\u302A\u0339 \u0061\u0341\u0315\u0300\u05AE\u0062 -\u0061\u0348\u059A\u0316\u302A\u0062 \u0061\u0361\u0345\u035D\u035C\u0062 -\u0061\u0366\u0315\u0300\u05AE\u0062 \u0061\u0315\u0300\u05AE\u0486\u0062 -\u0061\u05A4\u059A\u0316\u302A\u0062 \u0061\u0315\u0300\u05AE\u0613\u0062 -\u0061\u0315\u0300\u05AE\u0615\u0062 \u0061\u0617\u0315\u0300\u05AE\u0062 -\u0061\u0619\u0618\u064D\u064E\u0062 \u0061\u0315\u0300\u05AE\u0654\u0062 -\u0061\u0315\u0300\u05AE\u06DC\u0062 \u0061\u0733\u0315\u0300\u05AE\u0062 -\u0061\u0744\u059A\u0316\u302A\u0062 \u0061\u0315\u0300\u05AE\u0745\u0062 -\u0061\u09CD\u05B0\u094D\u3099\u0062 \u0061\u0E38\u0E48\u0E38\u0C56\u0062 -\u0061\u0EB8\u0E48\u0E38\u0E49\u0062 \u0061\u0F72\u0F71\u0EC8\u0F71\u0062 -\u0061\u1039\u05B0\u094D\u3099\u0062 \u0061\u05B0\u094D\u3099\u1A60\u0062 -\u0061\u3099\u093C\u0334\u1BE6\u0062 \u0061\u3099\u093C\u0334\u1C37\u0062 -\u0061\u1CD9\u059A\u0316\u302A\u0062 \u0061\u2DED\u0315\u0300\u05AE\u0062 -\u0061\u2DEF\u0315\u0300\u05AE\u0062 \u0061\u302D\u302E\u059A\u0316\u0062` - -// Taken from http://creativecommons.org/licenses/by-sa/3.0/vn/ -const txt_vn = `Với các điều kiện sau: Ghi nhận công của tác giả. -Nếu bạn sử dụng, chuyển đổi, hoặc xây dựng dự án từ -nội dung được chia sẻ này, bạn phải áp dụng giấy phép này hoặc -một giấy phép khác có các điều khoản tương tự như giấy phép này -cho dự án của bạn. Hiểu rằng: Miễn — Bất kỳ các điều kiện nào -trên đây cũng có thể được miễn bỏ nếu bạn được sự cho phép của -người sở hữu bản quyền. Phạm vi công chúng — Khi tác phẩm hoặc -bất kỳ chương nào của tác phẩm đã trong vùng dành cho công -chúng theo quy định của pháp luật thì tình trạng của nó không -bị ảnh hưởng bởi giấy phép trong bất kỳ trường hợp nào.` - -// Taken from http://creativecommons.org/licenses/by-sa/1.0/deed.ru -const txt_ru = `При обязательном соблюдении следующих условий: -Attribution — Вы должны атрибутировать произведение (указывать -автора и источник) в порядке, предусмотренном автором или -лицензиаром (но только так, чтобы никоим образом не подразумевалось, -что они поддерживают вас или использование вами данного произведения). -Υπό τις ακόλουθες προϋποθέσεις:` - -// Taken from http://creativecommons.org/licenses/by-sa/3.0/gr/ -const txt_gr = `Αναφορά Δημιουργού — Θα πρέπει να κάνετε την αναφορά στο έργο με τον -τρόπο που έχει οριστεί από το δημιουργό ή το χορηγούντο την άδεια -(χωρίς όμως να εννοείται με οποιονδήποτε τρόπο ότι εγκρίνουν εσάς ή -τη χρήση του έργου από εσάς). Παρόμοια Διανομή — Εάν αλλοιώσετε, -τροποποιήσετε ή δημιουργήσετε περαιτέρω βασισμένοι στο έργο θα -μπορείτε να διανέμετε το έργο που θα προκύψει μόνο με την ίδια ή -παρόμοια άδεια.` - -// Taken from http://creativecommons.org/licenses/by-sa/3.0/deed.ar -const txt_ar = `بموجب الشروط التالية نسب المصنف — يجب عليك أن -تنسب العمل بالطريقة التي تحددها المؤلف أو المرخص (ولكن ليس بأي حال من -الأحوال أن توحي وتقترح بتحول أو استخدامك للعمل). -المشاركة على قدم المساواة — إذا كنت يعدل ، والتغيير ، أو الاستفادة -من هذا العمل ، قد ينتج عن توزيع العمل إلا في ظل تشابه او تطابق فى واحد -لهذا الترخيص.` - -// Taken from http://creativecommons.org/licenses/by-sa/1.0/il/ -const txt_il = `בכפוף לתנאים הבאים: ייחוס — עליך לייחס את היצירה (לתת קרדיט) באופן -המצויין על-ידי היוצר או מעניק הרישיון (אך לא בשום אופן המרמז על כך -שהם תומכים בך או בשימוש שלך ביצירה). שיתוף זהה — אם תחליט/י לשנות, -לעבד או ליצור יצירה נגזרת בהסתמך על יצירה זו, תוכל/י להפיץ את יצירתך -החדשה רק תחת אותו הרישיון או רישיון דומה לרישיון זה.` - -const twoByteUtf8 = txt_ru + txt_gr + txt_ar + txt_il - -// Taken from http://creativecommons.org/licenses/by-sa/2.0/kr/ -const txt_kr = `다음과 같은 조건을 따라야 합니다: 저작자표시 -(Attribution) — 저작자나 이용허락자가 정한 방법으로 저작물의 -원저작자를 표시하여야 합니다(그러나 원저작자가 이용자나 이용자의 -이용을 보증하거나 추천한다는 의미로 표시해서는 안됩니다). -동일조건변경허락 — 이 저작물을 이용하여 만든 이차적 저작물에는 본 -라이선스와 동일한 라이선스를 적용해야 합니다.` - -// Taken from http://creativecommons.org/licenses/by-sa/3.0/th/ -const txt_th = `ภายใต้เงื่อนไข ดังต่อไปนี้ : แสดงที่มา — คุณต้องแสดงที่ -มาของงานดังกล่าว ตามรูปแบบที่ผู้สร้างสรรค์หรือผู้อนุญาตกำหนด (แต่ -ไม่ใช่ในลักษณะที่ว่า พวกเขาสนับสนุนคุณหรือสนับสนุนการที่ -คุณนำงานไปใช้) อนุญาตแบบเดียวกัน — หากคุณดัดแปลง เปลี่ยนรูป หรื -อต่อเติมงานนี้ คุณต้องใช้สัญญาอนุญาตแบบเดียวกันหรือแบบที่เหมื -อนกับสัญญาอนุญาตที่ใช้กับงานนี้เท่านั้น` - -const threeByteUtf8 = txt_th - -// Taken from http://creativecommons.org/licenses/by-sa/2.0/jp/ -const txt_jp = `あなたの従うべき条件は以下の通りです。 -表示 — あなたは原著作者のクレジットを表示しなければなりません。 -継承 — もしあなたがこの作品を改変、変形または加工した場合、 -あなたはその結果生じた作品をこの作品と同一の許諾条件の下でのみ -頒布することができます。` - -// http://creativecommons.org/licenses/by-sa/2.5/cn/ -const txt_cn = `您可以自由: 复制、发行、展览、表演、放映、 -广播或通过信息网络传播本作品 创作演绎作品 -对本作品进行商业性使用 惟须遵守下列条件: -署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。 -相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作, -您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。` - -const txt_cjk = txt_cn + txt_jp + txt_kr -const txt_all = txt_vn + twoByteUtf8 + threeByteUtf8 + txt_cjk - -var txt_all_bytes = []byte(txt_all) diff --git a/vendor/golang.org/x/text/unicode/norm/readwriter_test.go b/vendor/golang.org/x/text/unicode/norm/readwriter_test.go deleted file mode 100644 index b7756ba2..00000000 --- a/vendor/golang.org/x/text/unicode/norm/readwriter_test.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package norm - -import ( - "bytes" - "fmt" - "testing" -) - -var bufSizes = []int{1, 2, 3, 4, 5, 6, 7, 8, 100, 101, 102, 103, 4000, 4001, 4002, 4003} - -func readFunc(size int) appendFunc { - return func(f Form, out []byte, s string) []byte { - out = append(out, s...) - r := f.Reader(bytes.NewBuffer(out)) - buf := make([]byte, size) - result := []byte{} - for n, err := 0, error(nil); err == nil; { - n, err = r.Read(buf) - result = append(result, buf[:n]...) - } - return result - } -} - -func TestReader(t *testing.T) { - for _, s := range bufSizes { - name := fmt.Sprintf("TestReader%d", s) - runNormTests(t, name, readFunc(s)) - } -} - -func writeFunc(size int) appendFunc { - return func(f Form, out []byte, s string) []byte { - in := append(out, s...) - result := new(bytes.Buffer) - w := f.Writer(result) - buf := make([]byte, size) - for n := 0; len(in) > 0; in = in[n:] { - n = copy(buf, in) - _, _ = w.Write(buf[:n]) - } - w.Close() - return result.Bytes() - } -} - -func TestWriter(t *testing.T) { - for _, s := range bufSizes { - name := fmt.Sprintf("TestWriter%d", s) - runNormTests(t, name, writeFunc(s)) - } -} diff --git a/vendor/golang.org/x/text/unicode/norm/transform_test.go b/vendor/golang.org/x/text/unicode/norm/transform_test.go deleted file mode 100644 index d596ff3d..00000000 --- a/vendor/golang.org/x/text/unicode/norm/transform_test.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package norm - -import ( - "fmt" - "testing" - - "golang.org/x/text/transform" -) - -func TestTransform(t *testing.T) { - tests := []struct { - f Form - in, out string - eof bool - dstSize int - err error - }{ - {NFC, "ab", "ab", true, 2, nil}, - {NFC, "qx", "qx", true, 2, nil}, - {NFD, "qx", "qx", true, 2, nil}, - {NFC, "", "", true, 1, nil}, - {NFD, "", "", true, 1, nil}, - {NFC, "", "", false, 1, nil}, - {NFD, "", "", false, 1, nil}, - - // Normalized segment does not fit in destination. - {NFD, "ö", "", true, 1, transform.ErrShortDst}, - {NFD, "ö", "", true, 2, transform.ErrShortDst}, - - // As an artifact of the algorithm, only full segments are written. - // This is not strictly required, and some bytes could be written. - // In practice, for Transform to not block, the destination buffer - // should be at least MaxSegmentSize to work anyway and these edge - // conditions will be relatively rare. - {NFC, "ab", "", true, 1, transform.ErrShortDst}, - // This is even true for inert runes. - {NFC, "qx", "", true, 1, transform.ErrShortDst}, - {NFC, "a\u0300abc", "\u00e0a", true, 4, transform.ErrShortDst}, - - // We cannot write a segment if successive runes could still change the result. - {NFD, "ö", "", false, 3, transform.ErrShortSrc}, - {NFC, "a\u0300", "", false, 4, transform.ErrShortSrc}, - {NFD, "a\u0300", "", false, 4, transform.ErrShortSrc}, - {NFC, "ö", "", false, 3, transform.ErrShortSrc}, - - {NFC, "a\u0300", "", true, 1, transform.ErrShortDst}, - // Theoretically could fit, but won't due to simplified checks. - {NFC, "a\u0300", "", true, 2, transform.ErrShortDst}, - {NFC, "a\u0300", "", true, 3, transform.ErrShortDst}, - {NFC, "a\u0300", "\u00e0", true, 4, nil}, - - {NFD, "öa\u0300", "o\u0308", false, 8, transform.ErrShortSrc}, - {NFD, "öa\u0300ö", "o\u0308a\u0300", true, 8, transform.ErrShortDst}, - {NFD, "öa\u0300ö", "o\u0308a\u0300", false, 12, transform.ErrShortSrc}, - - // Illegal input is copied verbatim. - {NFD, "\xbd\xb2=\xbc ", "\xbd\xb2=\xbc ", true, 8, nil}, - } - b := make([]byte, 100) - for i, tt := range tests { - nDst, _, err := tt.f.Transform(b[:tt.dstSize], []byte(tt.in), tt.eof) - out := string(b[:nDst]) - if out != tt.out || err != tt.err { - t.Errorf("%d: was %+q (%v); want %+q (%v)", i, out, err, tt.out, tt.err) - } - if want := tt.f.String(tt.in)[:nDst]; want != out { - t.Errorf("%d: incorrect normalization: was %+q; want %+q", i, out, want) - } - } -} - -var transBufSizes = []int{ - MaxTransformChunkSize, - 3 * MaxTransformChunkSize / 2, - 2 * MaxTransformChunkSize, - 3 * MaxTransformChunkSize, - 100 * MaxTransformChunkSize, -} - -func doTransNorm(f Form, buf []byte, b []byte) []byte { - acc := []byte{} - for p := 0; p < len(b); { - nd, ns, _ := f.Transform(buf[:], b[p:], true) - p += ns - acc = append(acc, buf[:nd]...) - } - return acc -} - -func TestTransformNorm(t *testing.T) { - for _, sz := range transBufSizes { - buf := make([]byte, sz) - runNormTests(t, fmt.Sprintf("Transform:%d", sz), func(f Form, out []byte, s string) []byte { - return doTransNorm(f, buf, append(out, s...)) - }) - } -} diff --git a/vendor/golang.org/x/text/unicode/norm/ucd_test.go b/vendor/golang.org/x/text/unicode/norm/ucd_test.go deleted file mode 100644 index 29205a6a..00000000 --- a/vendor/golang.org/x/text/unicode/norm/ucd_test.go +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package norm - -import ( - "bufio" - "bytes" - "fmt" - "regexp" - "runtime" - "strconv" - "strings" - "sync" - "testing" - "time" - "unicode/utf8" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" -) - -var once sync.Once - -func skipShort(t *testing.T) { - testtext.SkipIfNotLong(t) - - once.Do(func() { loadTestData(t) }) -} - -// This regression test runs the test set in NormalizationTest.txt -// (taken from http://www.unicode.org/Public/<unicode.Version>/ucd/). -// -// NormalizationTest.txt has form: -// @Part0 # Specific cases -// # -// 1E0A;1E0A;0044 0307;1E0A;0044 0307; # (Ḋ; Ḋ; D◌̇; Ḋ; D◌̇; ) LATIN CAPITAL LETTER D WITH DOT ABOVE -// 1E0C;1E0C;0044 0323;1E0C;0044 0323; # (Ḍ; Ḍ; D◌̣; Ḍ; D◌̣; ) LATIN CAPITAL LETTER D WITH DOT BELOW -// -// Each test has 5 columns (c1, c2, c3, c4, c5), where -// (c1, c2, c3, c4, c5) == (c1, NFC(c1), NFD(c1), NFKC(c1), NFKD(c1)) -// -// CONFORMANCE: -// 1. The following invariants must be true for all conformant implementations -// -// NFC -// c2 == NFC(c1) == NFC(c2) == NFC(c3) -// c4 == NFC(c4) == NFC(c5) -// -// NFD -// c3 == NFD(c1) == NFD(c2) == NFD(c3) -// c5 == NFD(c4) == NFD(c5) -// -// NFKC -// c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5) -// -// NFKD -// c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5) -// -// 2. For every code point X assigned in this version of Unicode that is not -// specifically listed in Part 1, the following invariants must be true -// for all conformant implementations: -// -// X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X) -// - -// Column types. -const ( - cRaw = iota - cNFC - cNFD - cNFKC - cNFKD - cMaxColumns -) - -// Holds data from NormalizationTest.txt -var part []Part - -type Part struct { - name string - number int - tests []Test -} - -type Test struct { - name string - partnr int - number int - r rune // used for character by character test - cols [cMaxColumns]string // Each has 5 entries, see below. -} - -func (t Test) Name() string { - if t.number < 0 { - return part[t.partnr].name - } - return fmt.Sprintf("%s:%d", part[t.partnr].name, t.number) -} - -var partRe = regexp.MustCompile(`@Part(\d) # (.*)$`) -var testRe = regexp.MustCompile(`^` + strings.Repeat(`([\dA-F ]+);`, 5) + ` # (.*)$`) - -var counter int - -// Load the data form NormalizationTest.txt -func loadTestData(t *testing.T) { - f := gen.OpenUCDFile("NormalizationTest.txt") - defer f.Close() - scanner := bufio.NewScanner(f) - for scanner.Scan() { - line := scanner.Text() - if len(line) == 0 || line[0] == '#' { - continue - } - m := partRe.FindStringSubmatch(line) - if m != nil { - if len(m) < 3 { - t.Fatal("Failed to parse Part: ", line) - } - i, err := strconv.Atoi(m[1]) - if err != nil { - t.Fatal(err) - } - name := m[2] - part = append(part, Part{name: name[:len(name)-1], number: i}) - continue - } - m = testRe.FindStringSubmatch(line) - if m == nil || len(m) < 7 { - t.Fatalf(`Failed to parse: "%s" result: %#v`, line, m) - } - test := Test{name: m[6], partnr: len(part) - 1, number: counter} - counter++ - for j := 1; j < len(m)-1; j++ { - for _, split := range strings.Split(m[j], " ") { - r, err := strconv.ParseUint(split, 16, 64) - if err != nil { - t.Fatal(err) - } - if test.r == 0 { - // save for CharacterByCharacterTests - test.r = rune(r) - } - var buf [utf8.UTFMax]byte - sz := utf8.EncodeRune(buf[:], rune(r)) - test.cols[j-1] += string(buf[:sz]) - } - } - part := &part[len(part)-1] - part.tests = append(part.tests, test) - } - if scanner.Err() != nil { - t.Fatal(scanner.Err()) - } -} - -func cmpResult(t *testing.T, tc *Test, name string, f Form, gold, test, result string) { - if gold != result { - t.Errorf("%s:%s: %s(%+q)=%+q; want %+q: %s", - tc.Name(), name, fstr[f], test, result, gold, tc.name) - } -} - -func cmpIsNormal(t *testing.T, tc *Test, name string, f Form, test string, result, want bool) { - if result != want { - t.Errorf("%s:%s: %s(%+q)=%v; want %v", tc.Name(), name, fstr[f], test, result, want) - } -} - -func doTest(t *testing.T, tc *Test, f Form, gold, test string) { - testb := []byte(test) - result := f.Bytes(testb) - cmpResult(t, tc, "Bytes", f, gold, test, string(result)) - - sresult := f.String(test) - cmpResult(t, tc, "String", f, gold, test, sresult) - - acc := []byte{} - i := Iter{} - i.InitString(f, test) - for !i.Done() { - acc = append(acc, i.Next()...) - } - cmpResult(t, tc, "Iter.Next", f, gold, test, string(acc)) - - buf := make([]byte, 128) - acc = nil - for p := 0; p < len(testb); { - nDst, nSrc, _ := f.Transform(buf, testb[p:], true) - acc = append(acc, buf[:nDst]...) - p += nSrc - } - cmpResult(t, tc, "Transform", f, gold, test, string(acc)) - - for i := range test { - out := f.Append(f.Bytes([]byte(test[:i])), []byte(test[i:])...) - cmpResult(t, tc, fmt.Sprintf(":Append:%d", i), f, gold, test, string(out)) - } - cmpIsNormal(t, tc, "IsNormal", f, test, f.IsNormal([]byte(test)), test == gold) - cmpIsNormal(t, tc, "IsNormalString", f, test, f.IsNormalString(test), test == gold) -} - -func doConformanceTests(t *testing.T, tc *Test, partn int) { - for i := 0; i <= 2; i++ { - doTest(t, tc, NFC, tc.cols[1], tc.cols[i]) - doTest(t, tc, NFD, tc.cols[2], tc.cols[i]) - doTest(t, tc, NFKC, tc.cols[3], tc.cols[i]) - doTest(t, tc, NFKD, tc.cols[4], tc.cols[i]) - } - for i := 3; i <= 4; i++ { - doTest(t, tc, NFC, tc.cols[3], tc.cols[i]) - doTest(t, tc, NFD, tc.cols[4], tc.cols[i]) - doTest(t, tc, NFKC, tc.cols[3], tc.cols[i]) - doTest(t, tc, NFKD, tc.cols[4], tc.cols[i]) - } -} - -func TestCharacterByCharacter(t *testing.T) { - skipShort(t) - tests := part[1].tests - var last rune = 0 - for i := 0; i <= len(tests); i++ { // last one is special case - var r rune - if i == len(tests) { - r = 0x2FA1E // Don't have to go to 0x10FFFF - } else { - r = tests[i].r - } - for last++; last < r; last++ { - // Check all characters that were not explicitly listed in the test. - tc := &Test{partnr: 1, number: -1} - char := string(last) - doTest(t, tc, NFC, char, char) - doTest(t, tc, NFD, char, char) - doTest(t, tc, NFKC, char, char) - doTest(t, tc, NFKD, char, char) - } - if i < len(tests) { - doConformanceTests(t, &tests[i], 1) - } - } -} - -func TestStandardTests(t *testing.T) { - skipShort(t) - for _, j := range []int{0, 2, 3} { - for _, test := range part[j].tests { - doConformanceTests(t, &test, j) - } - } -} - -// TestPerformance verifies that normalization is O(n). If any of the -// code does not properly check for maxCombiningChars, normalization -// may exhibit O(n**2) behavior. -func TestPerformance(t *testing.T) { - skipShort(t) - runtime.GOMAXPROCS(2) - success := make(chan bool, 1) - go func() { - buf := bytes.Repeat([]byte("\u035D"), 1024*1024) - buf = append(buf, "\u035B"...) - NFC.Append(nil, buf...) - success <- true - }() - timeout := time.After(1 * time.Second) - select { - case <-success: - // test completed before the timeout - case <-timeout: - t.Errorf(`unexpectedly long time to complete PerformanceTest`) - } -} diff --git a/vendor/golang.org/x/text/unicode/rangetable/merge_test.go b/vendor/golang.org/x/text/unicode/rangetable/merge_test.go deleted file mode 100644 index 93ed0fca..00000000 --- a/vendor/golang.org/x/text/unicode/rangetable/merge_test.go +++ /dev/null @@ -1,184 +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 rangetable - -import ( - "testing" - "unicode" -) - -var ( - maxRuneTable = &unicode.RangeTable{ - R32: []unicode.Range32{ - {unicode.MaxRune, unicode.MaxRune, 1}, - }, - } - - overlap1 = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x100, 0xfffc, 4}, - }, - R32: []unicode.Range32{ - {0x100000, 0x10fffc, 4}, - }, - } - - overlap2 = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x101, 0xfffd, 4}, - }, - R32: []unicode.Range32{ - {0x100001, 0x10fffd, 3}, - }, - } - - // The following table should be compacted into two entries for R16 and R32. - optimize = &unicode.RangeTable{ - R16: []unicode.Range16{ - {0x1, 0x1, 1}, - {0x2, 0x2, 1}, - {0x3, 0x3, 1}, - {0x5, 0x5, 1}, - {0x7, 0x7, 1}, - {0x9, 0x9, 1}, - {0xb, 0xf, 2}, - }, - R32: []unicode.Range32{ - {0x10001, 0x10001, 1}, - {0x10002, 0x10002, 1}, - {0x10003, 0x10003, 1}, - {0x10005, 0x10005, 1}, - {0x10007, 0x10007, 1}, - {0x10009, 0x10009, 1}, - {0x1000b, 0x1000f, 2}, - }, - } -) - -func TestMerge(t *testing.T) { - for i, tt := range [][]*unicode.RangeTable{ - {unicode.Cc, unicode.Cf}, - {unicode.L, unicode.Ll}, - {unicode.L, unicode.Ll, unicode.Lu}, - {unicode.Ll, unicode.Lu}, - {unicode.M}, - unicode.GraphicRanges, - cased, - - // Merge R16 only and R32 only and vice versa. - {unicode.Khmer, unicode.Khudawadi}, - {unicode.Imperial_Aramaic, unicode.Radical}, - - // Merge with empty. - {&unicode.RangeTable{}}, - {&unicode.RangeTable{}, &unicode.RangeTable{}}, - {&unicode.RangeTable{}, &unicode.RangeTable{}, &unicode.RangeTable{}}, - {&unicode.RangeTable{}, unicode.Hiragana}, - {unicode.Inherited, &unicode.RangeTable{}}, - {&unicode.RangeTable{}, unicode.Hanunoo, &unicode.RangeTable{}}, - - // Hypothetical tables. - {maxRuneTable}, - {overlap1, overlap2}, - - // Optimization - {optimize}, - } { - rt := Merge(tt...) - for r := rune(0); r <= unicode.MaxRune; r++ { - if got, want := unicode.Is(rt, r), unicode.In(r, tt...); got != want { - t.Fatalf("%d:%U: got %v; want %v", i, r, got, want) - } - } - // Test optimization and correctness for R16. - for k := 0; k < len(rt.R16)-1; k++ { - if lo, hi := rt.R16[k].Lo, rt.R16[k].Hi; lo > hi { - t.Errorf("%d: Lo (%x) > Hi (%x)", i, lo, hi) - } - if hi, lo := rt.R16[k].Hi, rt.R16[k+1].Lo; hi >= lo { - t.Errorf("%d: Hi (%x) >= next Lo (%x)", i, hi, lo) - } - if rt.R16[k].Hi+rt.R16[k].Stride == rt.R16[k+1].Lo { - t.Errorf("%d: missed optimization for R16 at %d between %X and %x", - i, k, rt.R16[k], rt.R16[k+1]) - } - } - // Test optimization and correctness for R32. - for k := 0; k < len(rt.R32)-1; k++ { - if lo, hi := rt.R32[k].Lo, rt.R32[k].Hi; lo > hi { - t.Errorf("%d: Lo (%x) > Hi (%x)", i, lo, hi) - } - if hi, lo := rt.R32[k].Hi, rt.R32[k+1].Lo; hi >= lo { - t.Errorf("%d: Hi (%x) >= next Lo (%x)", i, hi, lo) - } - if rt.R32[k].Hi+rt.R32[k].Stride == rt.R32[k+1].Lo { - t.Errorf("%d: missed optimization for R32 at %d between %X and %X", - i, k, rt.R32[k], rt.R32[k+1]) - } - } - } -} - -const runes = "Hello World in 2015!,\U0010fffd" - -func BenchmarkNotMerged(t *testing.B) { - for i := 0; i < t.N; i++ { - for _, r := range runes { - unicode.In(r, unicode.GraphicRanges...) - } - } -} - -func BenchmarkMerged(t *testing.B) { - rt := Merge(unicode.GraphicRanges...) - - for i := 0; i < t.N; i++ { - for _, r := range runes { - unicode.Is(rt, r) - } - } -} - -var cased = []*unicode.RangeTable{ - unicode.Lower, - unicode.Upper, - unicode.Title, - unicode.Other_Lowercase, - unicode.Other_Uppercase, -} - -func BenchmarkNotMergedCased(t *testing.B) { - for i := 0; i < t.N; i++ { - for _, r := range runes { - unicode.In(r, cased...) - } - } -} - -func BenchmarkMergedCased(t *testing.B) { - // This reduces len(R16) from 243 to 82 and len(R32) from 65 to 35 for - // Unicode 7.0.0. - rt := Merge(cased...) - - for i := 0; i < t.N; i++ { - for _, r := range runes { - unicode.Is(rt, r) - } - } -} - -func BenchmarkInit(t *testing.B) { - for i := 0; i < t.N; i++ { - Merge(cased...) - Merge(unicode.GraphicRanges...) - } -} - -func BenchmarkInit2(t *testing.B) { - // Hypothetical near-worst-case performance. - for i := 0; i < t.N; i++ { - Merge(overlap1, overlap2) - } -} diff --git a/vendor/golang.org/x/text/unicode/rangetable/rangetable_test.go b/vendor/golang.org/x/text/unicode/rangetable/rangetable_test.go deleted file mode 100644 index 5a355aa3..00000000 --- a/vendor/golang.org/x/text/unicode/rangetable/rangetable_test.go +++ /dev/null @@ -1,55 +0,0 @@ -package rangetable - -import ( - "reflect" - "testing" - "unicode" -) - -var ( - empty = &unicode.RangeTable{} - many = &unicode.RangeTable{ - R16: []unicode.Range16{{0, 0xffff, 5}}, - R32: []unicode.Range32{{0x10004, 0x10009, 5}}, - LatinOffset: 0, - } -) - -func TestVisit(t *testing.T) { - Visit(empty, func(got rune) { - t.Error("call from empty RangeTable") - }) - - var want rune - Visit(many, func(got rune) { - if got != want { - t.Errorf("got %U; want %U", got, want) - } - want += 5 - }) - if want -= 5; want != 0x10009 { - t.Errorf("last run was %U; want U+10009", want) - } -} - -func TestNew(t *testing.T) { - for i, rt := range []*unicode.RangeTable{ - empty, - unicode.Co, - unicode.Letter, - unicode.ASCII_Hex_Digit, - many, - maxRuneTable, - } { - var got, want []rune - Visit(rt, func(r rune) { - want = append(want, r) - }) - Visit(New(want...), func(r rune) { - got = append(got, r) - }) - if !reflect.DeepEqual(got, want) { - t.Errorf("%d:\ngot %v;\nwant %v", i, got, want) - } - } -} diff --git a/vendor/golang.org/x/text/unicode/runenames/bits.go b/vendor/golang.org/x/text/unicode/runenames/bits.go deleted file mode 100644 index 48cc2c05..00000000 --- a/vendor/golang.org/x/text/unicode/runenames/bits.go +++ /dev/null @@ -1,59 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package runenames - -// This file contains code common to gen.go and the package code. - -// The mapping from rune to string (i.e. offset and length in the data string) -// is encoded as a two level table. The first level maps from contiguous rune -// ranges [runeOffset, runeOffset+runeLength) to entries. Entries are either -// direct (for repeated names such as "<CJK Ideograph>") or indirect (for runs -// of unique names such as "SPACE", "EXCLAMATION MARK", "QUOTATION MARK", ...). -// -// Each first level table element is 64 bits. The runeOffset (21 bits) and -// runeLength (16 bits) take the 37 high bits. The entry takes the 27 low bits, -// with directness encoded in the least significant bit. -// -// A direct entry encodes a dataOffset (18 bits) and dataLength (8 bits) in the -// data string. 18 bits is too short to encode the entire data string's length, -// but the data string's contents are arranged so that all of the few direct -// entries' offsets come before all of the many indirect entries' offsets. -// -// An indirect entry encodes a dataBase (10 bits) and a table1Offset (16 bits). -// The table1Offset is the start of a range in the second level table. The -// length of that range is the same as the runeLength. -// -// Each second level table element is 16 bits, an index into data, relative to -// a bias equal to (dataBase << dataBaseUnit). That (bias + index) is the -// (dataOffset + dataLength) in the data string. The dataOffset is implied by -// the previous table element (with the same implicit bias). - -const ( - bitsRuneOffset = 21 - bitsRuneLength = 16 - bitsDataOffset = 18 - bitsDataLength = 8 - bitsDirect = 1 - - bitsDataBase = 10 - bitsTable1Offset = 16 - - shiftRuneOffset = 0 + bitsDirect + bitsDataLength + bitsDataOffset + bitsRuneLength - shiftRuneLength = 0 + bitsDirect + bitsDataLength + bitsDataOffset - shiftDataOffset = 0 + bitsDirect + bitsDataLength - shiftDataLength = 0 + bitsDirect - shiftDirect = 0 - - shiftDataBase = 0 + bitsDirect + bitsTable1Offset - shiftTable1Offset = 0 + bitsDirect - - maskRuneLength = 1<<bitsRuneLength - 1 - maskDataOffset = 1<<bitsDataOffset - 1 - maskDataLength = 1<<bitsDataLength - 1 - maskDirect = 1<<bitsDirect - 1 - - maskDataBase = 1<<bitsDataBase - 1 - maskTable1Offset = 1<<bitsTable1Offset - 1 - - dataBaseUnit = 10 -) diff --git a/vendor/golang.org/x/text/unicode/runenames/example_test.go b/vendor/golang.org/x/text/unicode/runenames/example_test.go deleted file mode 100644 index 3bb44fd3..00000000 --- a/vendor/golang.org/x/text/unicode/runenames/example_test.go +++ /dev/null @@ -1,118 +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 runenames_test - -import ( - "fmt" - - "golang.org/x/text/unicode/runenames" -) - -func Example() { - runes := []rune{ - -1, - '\U00000000', - '\U0000001f', - '\U00000020', - '\U00000021', - '\U00000041', - '\U0000007e', - '\U0000007f', - '\U00000080', - '\U000000e0', - - '\U0000037f', - '\U00000380', - '\U00000381', - '\U00000382', - '\U00000383', - '\U00000384', - '\U00000385', - '\U00000386', - '\U000007c0', - - '\U00002603', - '\U000033ff', - '\U00003400', - '\U00003401', - '\U00003402', - '\U00004dc0', - - '\U00009fd5', - '\U00009fd6', - '\U00009fff', - '\U0000a000', - 0xdc00, // '\U0000dc00' (Low Surrogate) is an invalid Go literal. - '\U0000f800', - '\U0000fffc', - '\U0000fffd', - '\U0000fffe', - '\U0000ffff', - - '\U00010000', - '\U0001f574', - '\U0002fa1d', - '\U0002fa1e', - '\U000e0100', - '\U000e01ef', - '\U000e01f0', - '\U00100000', - '\U0010fffd', - '\U0010fffe', - '\U0010ffff', - } - - for _, r := range runes { - fmt.Printf("%08x %q\n", r, runenames.Name(r)) - } - - // Output: - // -0000001 "" - // 00000000 "<control>" - // 0000001f "<control>" - // 00000020 "SPACE" - // 00000021 "EXCLAMATION MARK" - // 00000041 "LATIN CAPITAL LETTER A" - // 0000007e "TILDE" - // 0000007f "<control>" - // 00000080 "<control>" - // 000000e0 "LATIN SMALL LETTER A WITH GRAVE" - // 0000037f "GREEK CAPITAL LETTER YOT" - // 00000380 "" - // 00000381 "" - // 00000382 "" - // 00000383 "" - // 00000384 "GREEK TONOS" - // 00000385 "GREEK DIALYTIKA TONOS" - // 00000386 "GREEK CAPITAL LETTER ALPHA WITH TONOS" - // 000007c0 "NKO DIGIT ZERO" - // 00002603 "SNOWMAN" - // 000033ff "SQUARE GAL" - // 00003400 "<CJK Ideograph Extension A>" - // 00003401 "<CJK Ideograph Extension A>" - // 00003402 "<CJK Ideograph Extension A>" - // 00004dc0 "HEXAGRAM FOR THE CREATIVE HEAVEN" - // 00009fd5 "<CJK Ideograph>" - // 00009fd6 "" - // 00009fff "" - // 0000a000 "YI SYLLABLE IT" - // 0000dc00 "<Low Surrogate>" - // 0000f800 "<Private Use>" - // 0000fffc "OBJECT REPLACEMENT CHARACTER" - // 0000fffd "REPLACEMENT CHARACTER" - // 0000fffe "" - // 0000ffff "" - // 00010000 "LINEAR B SYLLABLE B008 A" - // 0001f574 "MAN IN BUSINESS SUIT LEVITATING" - // 0002fa1d "CJK COMPATIBILITY IDEOGRAPH-2FA1D" - // 0002fa1e "" - // 000e0100 "VARIATION SELECTOR-17" - // 000e01ef "VARIATION SELECTOR-256" - // 000e01f0 "" - // 00100000 "<Plane 16 Private Use>" - // 0010fffd "<Plane 16 Private Use>" - // 0010fffe "" - // 0010ffff "" -} diff --git a/vendor/golang.org/x/text/unicode/runenames/gen.go b/vendor/golang.org/x/text/unicode/runenames/gen.go deleted file mode 100644 index 7e373a54..00000000 --- a/vendor/golang.org/x/text/unicode/runenames/gen.go +++ /dev/null @@ -1,195 +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. - -// +build ignore - -package main - -import ( - "log" - "strings" - "unicode" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/ucd" -) - -// snippet is a slice of data; data is the concatenation of all of the names. -type snippet struct { - offset int - length int - s string -} - -func makeTable0EntryDirect(rOffset, rLength, dOffset, dLength int) uint64 { - if rOffset >= 1<<bitsRuneOffset { - log.Fatalf("makeTable0EntryDirect: rOffset %d is too large", rOffset) - } - if rLength >= 1<<bitsRuneLength { - log.Fatalf("makeTable0EntryDirect: rLength %d is too large", rLength) - } - if dOffset >= 1<<bitsDataOffset { - log.Fatalf("makeTable0EntryDirect: dOffset %d is too large", dOffset) - } - if dLength >= 1<<bitsRuneLength { - log.Fatalf("makeTable0EntryDirect: dLength %d is too large", dLength) - } - return uint64(rOffset)<<shiftRuneOffset | - uint64(rLength)<<shiftRuneLength | - uint64(dOffset)<<shiftDataOffset | - uint64(dLength)<<shiftDataLength | - 1 // Direct bit. -} - -func makeTable0EntryIndirect(rOffset, rLength, dBase, t1Offset int) uint64 { - if rOffset >= 1<<bitsRuneOffset { - log.Fatalf("makeTable0EntryIndirect: rOffset %d is too large", rOffset) - } - if rLength >= 1<<bitsRuneLength { - log.Fatalf("makeTable0EntryIndirect: rLength %d is too large", rLength) - } - if dBase >= 1<<bitsDataBase { - log.Fatalf("makeTable0EntryIndirect: dBase %d is too large", dBase) - } - if t1Offset >= 1<<bitsTable1Offset { - log.Fatalf("makeTable0EntryIndirect: t1Offset %d is too large", t1Offset) - } - return uint64(rOffset)<<shiftRuneOffset | - uint64(rLength)<<shiftRuneLength | - uint64(dBase)<<shiftDataBase | - uint64(t1Offset)<<shiftTable1Offset | - 0 // Direct bit. -} - -func makeTable1Entry(x int) uint16 { - if x < 0 || 0xffff < x { - log.Fatalf("makeTable1Entry: entry %d is out of range", x) - } - return uint16(x) -} - -var ( - data []byte - snippets = make([]snippet, 1+unicode.MaxRune) -) - -func main() { - gen.Init() - - names, counts := parse() - appendRepeatNames(names, counts) - appendUniqueNames(names, counts) - - table0, table1 := makeTables() - - gen.Repackage("gen_bits.go", "bits.go", "runenames") - - w := gen.NewCodeWriter() - w.WriteVar("table0", table0) - w.WriteVar("table1", table1) - w.WriteConst("data", string(data)) - w.WriteGoFile("tables.go", "runenames") -} - -func parse() (names []string, counts map[string]int) { - names = make([]string, 1+unicode.MaxRune) - counts = map[string]int{} - ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { - r, s := p.Rune(0), p.String(ucd.Name) - if s == "" { - return - } - if s[0] == '<' { - const first = ", First>" - if i := strings.Index(s, first); i >= 0 { - s = s[:i] + ">" - } - } - names[r] = s - counts[s]++ - }) - return names, counts -} - -func appendRepeatNames(names []string, counts map[string]int) { - alreadySeen := map[string]snippet{} - for r, s := range names { - if s == "" || counts[s] == 1 { - continue - } - if s[0] != '<' { - log.Fatalf("Repeated name %q does not start with a '<'", s) - } - - if z, ok := alreadySeen[s]; ok { - snippets[r] = z - continue - } - - z := snippet{ - offset: len(data), - length: len(s), - s: s, - } - data = append(data, s...) - snippets[r] = z - alreadySeen[s] = z - } -} - -func appendUniqueNames(names []string, counts map[string]int) { - for r, s := range names { - if s == "" || counts[s] != 1 { - continue - } - if s[0] == '<' { - log.Fatalf("Unique name %q starts with a '<'", s) - } - - z := snippet{ - offset: len(data), - length: len(s), - s: s, - } - data = append(data, s...) - snippets[r] = z - } -} - -func makeTables() (table0 []uint64, table1 []uint16) { - for i := 0; i < len(snippets); { - zi := snippets[i] - if zi == (snippet{}) { - i++ - continue - } - - // Look for repeat names. If we have one, we only need a table0 entry. - j := i + 1 - for ; j < len(snippets) && zi == snippets[j]; j++ { - } - if j > i+1 { - table0 = append(table0, makeTable0EntryDirect(i, j-i, zi.offset, zi.length)) - i = j - continue - } - - // Otherwise, we have a run of unique names. We need one table0 entry - // and two or more table1 entries. - base := zi.offset &^ (1<<dataBaseUnit - 1) - t1Offset := len(table1) + 1 - table1 = append(table1, makeTable1Entry(zi.offset-base)) - table1 = append(table1, makeTable1Entry(zi.offset+zi.length-base)) - for ; j < len(snippets) && snippets[j] != (snippet{}); j++ { - zj := snippets[j] - if data[zj.offset] == '<' { - break - } - table1 = append(table1, makeTable1Entry(zj.offset+zj.length-base)) - } - table0 = append(table0, makeTable0EntryIndirect(i, j-i, base>>dataBaseUnit, t1Offset)) - i = j - } - return table0, table1 -} diff --git a/vendor/golang.org/x/text/unicode/runenames/gen_bits.go b/vendor/golang.org/x/text/unicode/runenames/gen_bits.go deleted file mode 100644 index e80fada5..00000000 --- a/vendor/golang.org/x/text/unicode/runenames/gen_bits.go +++ /dev/null @@ -1,63 +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. - -// +build ignore - -package main - -// This file contains code common to gen.go and the package code. - -// The mapping from rune to string (i.e. offset and length in the data string) -// is encoded as a two level table. The first level maps from contiguous rune -// ranges [runeOffset, runeOffset+runeLength) to entries. Entries are either -// direct (for repeated names such as "<CJK Ideograph>") or indirect (for runs -// of unique names such as "SPACE", "EXCLAMATION MARK", "QUOTATION MARK", ...). -// -// Each first level table element is 64 bits. The runeOffset (21 bits) and -// runeLength (16 bits) take the 37 high bits. The entry takes the 27 low bits, -// with directness encoded in the least significant bit. -// -// A direct entry encodes a dataOffset (18 bits) and dataLength (8 bits) in the -// data string. 18 bits is too short to encode the entire data string's length, -// but the data string's contents are arranged so that all of the few direct -// entries' offsets come before all of the many indirect entries' offsets. -// -// An indirect entry encodes a dataBase (10 bits) and a table1Offset (16 bits). -// The table1Offset is the start of a range in the second level table. The -// length of that range is the same as the runeLength. -// -// Each second level table element is 16 bits, an index into data, relative to -// a bias equal to (dataBase << dataBaseUnit). That (bias + index) is the -// (dataOffset + dataLength) in the data string. The dataOffset is implied by -// the previous table element (with the same implicit bias). - -const ( - bitsRuneOffset = 21 - bitsRuneLength = 16 - bitsDataOffset = 18 - bitsDataLength = 8 - bitsDirect = 1 - - bitsDataBase = 10 - bitsTable1Offset = 16 - - shiftRuneOffset = 0 + bitsDirect + bitsDataLength + bitsDataOffset + bitsRuneLength - shiftRuneLength = 0 + bitsDirect + bitsDataLength + bitsDataOffset - shiftDataOffset = 0 + bitsDirect + bitsDataLength - shiftDataLength = 0 + bitsDirect - shiftDirect = 0 - - shiftDataBase = 0 + bitsDirect + bitsTable1Offset - shiftTable1Offset = 0 + bitsDirect - - maskRuneLength = 1<<bitsRuneLength - 1 - maskDataOffset = 1<<bitsDataOffset - 1 - maskDataLength = 1<<bitsDataLength - 1 - maskDirect = 1<<bitsDirect - 1 - - maskDataBase = 1<<bitsDataBase - 1 - maskTable1Offset = 1<<bitsTable1Offset - 1 - - dataBaseUnit = 10 -) diff --git a/vendor/golang.org/x/text/unicode/runenames/runenames.go b/vendor/golang.org/x/text/unicode/runenames/runenames.go deleted file mode 100644 index 3154a225..00000000 --- a/vendor/golang.org/x/text/unicode/runenames/runenames.go +++ /dev/null @@ -1,48 +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_bits.go - -// Package runenames provides rune names from the Unicode Character Database. -// For example, the name for '\u0100' is "LATIN CAPITAL LETTER A WITH MACRON". -// -// See http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt -package runenames - -import ( - "sort" -) - -// Name returns the name for r. -func Name(r rune) string { - i := sort.Search(len(table0), func(j int) bool { - e := table0[j] - rOffset := rune(e >> shiftRuneOffset) - return r < rOffset - }) - if i == 0 { - return "" - } - - e := table0[i-1] - rOffset := rune(e >> shiftRuneOffset) - rLength := rune(e>>shiftRuneLength) & maskRuneLength - if r >= rOffset+rLength { - return "" - } - - if (e>>shiftDirect)&maskDirect != 0 { - o := int(e>>shiftDataOffset) & maskDataOffset - n := int(e>>shiftDataLength) & maskDataLength - return data[o : o+n] - } - - base := uint32(e>>shiftDataBase) & maskDataBase - base <<= dataBaseUnit - j := rune(e>>shiftTable1Offset) & maskTable1Offset - j += r - rOffset - d0 := base + uint32(table1[j-1]) // dataOffset - d1 := base + uint32(table1[j-0]) // dataOffset + dataLength - return data[d0:d1] -} diff --git a/vendor/golang.org/x/text/unicode/runenames/runenames_test.go b/vendor/golang.org/x/text/unicode/runenames/runenames_test.go deleted file mode 100644 index 6a2d2b60..00000000 --- a/vendor/golang.org/x/text/unicode/runenames/runenames_test.go +++ /dev/null @@ -1,46 +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 runenames - -import ( - "strings" - "testing" - "unicode" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/testtext" - "golang.org/x/text/internal/ucd" -) - -func TestName(t *testing.T) { - testtext.SkipIfNotLong(t) - - wants := make([]string, 1+unicode.MaxRune) - ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { - r, s := p.Rune(0), p.String(ucd.Name) - if s == "" { - return - } - if s[0] == '<' { - const first = ", First>" - if i := strings.Index(s, first); i >= 0 { - s = s[:i] + ">" - } - } - wants[r] = s - }) - - nErrors := 0 - for r, want := range wants { - got := Name(rune(r)) - if got != want { - t.Errorf("r=%#08x: got %q, want %q", r, got, want) - nErrors++ - if nErrors == 100 { - t.Fatal("too many errors") - } - } - } -} diff --git a/vendor/golang.org/x/text/unicode/runenames/tables.go b/vendor/golang.org/x/text/unicode/runenames/tables.go deleted file mode 100644 index 99c4926d..00000000 --- a/vendor/golang.org/x/text/unicode/runenames/tables.go +++ /dev/null @@ -1,15514 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package runenames - -var table0 = []uint64{ // 647 elements - // Entry 0 - 1F - 0x0000000100000013, 0x00010002f8000002, 0x0003f80108000013, 0x00050016c00200c2, - 0x001bd000302e0674, 0x001c2000382e0682, 0x001c600008300692, 0x001c7000a0300696, - 0x001d180c683006c0, 0x00298801304809dc, 0x002ac800384a0a2a, 0x002b0801384a0a3a, - 0x002c4800104c0a8a, 0x002c6800184c0a90, 0x002c8801b84e0a98, 0x002e8000d8500b08, - 0x002f800028500b40, 0x00300000e8500b4c, 0x0030f00780520b88, 0x00387801e05e0d6a, - 0x003a680328600de4, 0x003e0001d8680eb0, 0x00400001706a0f28, 0x00418000786c0f86, - 0x00420000e06c0fa6, 0x0042f000086e0fe0, 0x00450000a86e0fe4, 0x0045b000406e1010, - 0x0046a00580701022, 0x004c280040781184, 0x004c780010781196, 0x004c9800b078119c, - // Entry 20 - 3F - 0x004d5000387811ca, 0x004d9000087811da, 0x004db000207a11de, 0x004de000487a11e8, - 0x004e3800107a11fc, 0x004e5800207a1202, 0x004eb800087a120c, 0x004ee000107a1210, - 0x004ef800287a1216, 0x004f3000b07a1222, 0x00500800187c1250, 0x00502800307c1258, - 0x00507800107c1266, 0x00509800b07c126c, 0x00515000387c129a, 0x00519000107c12aa, - 0x0051a800107c12b0, 0x0051c000107c12b6, 0x0051e000087c12bc, 0x0051f000287c12c0, - 0x00523800107e12cc, 0x00525800187e12d2, 0x00528800087e12da, 0x0052c800207e12de, - 0x0052f000087e12e8, 0x00533000807e12ec, 0x00540800187e130e, 0x00542800487e1316, - 0x00547800187e132a, 0x00549800b07e1332, 0x0055500038801360, 0x0055900010801370, - // Entry 40 - 5F - 0x0055a80028801376, 0x0055e00050801382, 0x0056380018801398, 0x00565800188013a0, - 0x00568000088013a8, 0x00570000208013ac, 0x00573000608013b6, 0x0057c800088213d0, - 0x00580800188213d4, 0x00582800408213dc, 0x00587800108213ee, 0x00589800b08213f4, - 0x0059500038821422, 0x0059900010821432, 0x0059a80028821438, 0x0059e00048821444, - 0x005a380010841458, 0x005a58001884145e, 0x005ab00010841466, 0x005ae0001084146c, - 0x005af80028841472, 0x005b30009084147e, 0x005c1000108414a4, 0x005c2800308414aa, - 0x005c7000188414b8, 0x005c9000208414c0, 0x005cc800108414ca, 0x005ce000088614d0, - 0x005cf000108614d4, 0x005d1800108614da, 0x005d4000188614e0, 0x005d7000608614e8, - // Entry 60 - 7F - 0x005df00028861502, 0x005e30001886150e, 0x005e500020861516, 0x005e800008861520, - 0x005eb80008861524, 0x005f3000a8861528, 0x0060000020861554, 0x006028004088155e, - 0x0060700018881570, 0x00609000b8881578, 0x00615000808815a8, 0x0061e800408815ca, - 0x00623000188815dc, 0x00625000208a15e4, 0x0062a800108a15ee, 0x0062c000188a15f4, - 0x00630000208a15fc, 0x00633000508a1606, 0x0063c000608a161c, 0x00642800408a1636, - 0x00647000188c1648, 0x00649000b88c1650, 0x00655000508c1680, 0x0065a800288c1696, - 0x0065e000488c16a2, 0x00663000188c16b6, 0x00665000208e16be, 0x0066a800108e16c8, - 0x0066f000088e16ce, 0x00670000208e16d2, 0x00673000508e16dc, 0x00678800108e16f2, - // Entry 80 - 9F - 0x00680800188e16f8, 0x00682800408e1700, 0x00687000188e1712, 0x00689001488e171a, - 0x0069e8004090176e, 0x006a300018901780, 0x006a500030901788, 0x006aa00080901796, - 0x006b3000d09217b8, 0x006c1000109417ee, 0x006c2800909417f4, 0x006cd000c094181a, - 0x006d98004896184c, 0x006de80008961860, 0x006e000038961864, 0x006e500008961874, - 0x006e780030961878, 0x006eb00008961886, 0x006ec0004096188a, 0x006f30005098189c, - 0x006f9000189818b2, 0x00700801d09818ba, 0x0071f800e89a1930, 0x00740800109c196c, - 0x00742000089c1972, 0x00743800109c1976, 0x00745000089c197c, 0x00746800089c1980, - 0x0074a000209c1984, 0x0074c800389c198e, 0x00750800189c199e, 0x00752800089c19a6, - // Entry A0 - BF - 0x00753800089c19aa, 0x00755000109c19ae, 0x00756800689c19b4, 0x0075d800189e19d0, - 0x00760000289e19d8, 0x00763000089e19e4, 0x00764000309e19e8, 0x00768000509e19f6, - 0x0076e000209e1a0c, 0x00780002409e1a16, 0x007a480120a21aa8, 0x007b880138a21af2, - 0x007cc80120a41b42, 0x007df00078a61b8c, 0x007e700068a81bac, 0x0080000630a81bc8, - 0x0086380008b21d56, 0x0086680008b21d5a, 0x0086800bc8b21d5e, 0x0092500020c42052, - 0x0092800038c4205c, 0x0092c00008c4206c, 0x0092d00020c42070, 0x0093000148c4207a, - 0x0094500020c620ce, 0x0094800108c620d8, 0x0095900020c8211c, 0x0095c00038c82126, - 0x0096000008c82136, 0x0096100020c8213a, 0x0096400078c82144, 0x0096c001c8ca2164, - // Entry C0 - DF - 0x0098900020cc21d8, 0x0098c00218cc21e2, 0x009ae80100ce226a, 0x009c0000d0d022ac, - 0x009d0002b0d022e2, 0x009fc00030d42390, 0x00a00014e8d4239e, 0x00b50002c8f828da, - 0x00b8000068fc298e, 0x00b8700038fc29aa, 0x00b90000b8fc29ba, 0x00ba0000a0fc29ea, - 0x00bb000068fe2a14, 0x00bb700018fe2a30, 0x00bb900010fe2a38, 0x00bc0002f0fe2a3e, - 0x00bf000051022afc, 0x00bf800051022b12, 0x00c0000079022b28, 0x00c0800051042b48, - 0x00c10002c1042b5e, 0x00c4000159082c10, 0x00c58002310a2c68, 0x00c80000f90e2cf6, - 0x00c90000610e2d36, 0x00c9800061102d50, 0x00ca000009102d6a, 0x00ca200151102d6e, - 0x00cb800029102dc4, 0x00cc000161122dd0, 0x00cd8000d1142e2a, 0x00ce800059142e60, - // Entry E0 - FF - 0x00cef001f1162e78, 0x00d0f00209182ef6, 0x00d30000e91a2f7a, 0x00d3f800591c2fb6, - 0x00d48000511c2fce, 0x00d50000711c2fe4, 0x00d58000791e3002, 0x00d80002611e3022, - 0x00da8001692230bc, 0x00dc0003a1243118, 0x00dfe001e12a3202, 0x00e1d800792c327c, - 0x00e26801e12c329c, 0x00e60000412e3316, 0x00e6800139303328, 0x00e7c00011323378, - 0x00e80007b132337e, 0x00efd808d940356c, 0x00f8c000315637a4, 0x00f90001315837b2, - 0x00fa4000315a3800, 0x00fa8000415c380e, 0x00fac800095c3820, 0x00fad800095c3824, - 0x00fae800095c3828, 0x00faf800f95c382c, 0x00fc0001a95e386c, 0x00fdb000796638d8, - 0x00fe3000716638f8, 0x00feb00031683916, 0x00fee80099683924, 0x00ff90001968394c, - // Entry 100 - 11F - 0x00ffb000496a3954, 0x01000003296a3968, 0x01033000616e3a34, 0x0103a000d96e3a4e, - 0x01048000696e3a86, 0x01050000f9703aa2, 0x0106800109703ae2, 0x0108000461723b26, - 0x010c801379783c40, 0x0120000139944120, 0x0122000059964170, 0x01230038a1964188, - 0x015bb00101fa4fb2, 0x015cc00111fc4ff4, 0x015de80061fe503a, 0x015e500042005054, - 0x015f600022005066, 0x016000017a005070, 0x016180017a0250d0, 0x01630004a2065130, - 0x0167c8016a0e525a, 0x016938000a1052b6, 0x016968000a1052ba, 0x01698001c21052be, - 0x016b780012145330, 0x016bf800c2145336, 0x016d00003a145368, 0x016d40003a145378, - 0x016d80003a145388, 0x016dc0003a165398, 0x016e00003a1653a8, 0x016e40003a1653b8, - // Entry 120 - 13F - 0x016e80003a1653c8, 0x016ec0003a1653d8, 0x016f00032a1653e8, 0x01740000d21c54b4, - 0x0174d802ca1c54ea, 0x01780006b220559e, 0x017f80006228574c, 0x01800002022a5766, - 0x01820802b22e57e8, 0x0184c8033a305896, 0x018828014a345966, 0x01898802f23659ba, - 0x018c80015a3a5a78, 0x018e0001223c5ad0, 0x018f80017a3c5b1a, 0x01910006fa405b7a, - 0x01980008024a5d3a, 0x01a000cdb0001237, 0x026e000202545f3c, 0x0270028eb000481f, - 0x050000246a565fbe, 0x05248001ba7a68da, 0x0526800ae27c694a, 0x05320005c2866c04, - 0x053800057a8e6d76, 0x053d8000429a6ed6, 0x053fb801aa9a6ee8, 0x05418000529e6f54, - 0x05420001c29e6f6a, 0x0544000232a06fdc, 0x0546700062a4706a, 0x05470000f2a47084, - // Entry 140 - 15F - 0x05480002a2a670c2, 0x054af800f2a8716c, 0x054c000272aa71aa, 0x054e78005aae7248, - 0x054ef0010aae7260, 0x05500001bab072a4, 0x0552000072b27314, 0x0552800052b27332, - 0x0552e0033ab27348, 0x0556d800e2b67418, 0x0558080032b87452, 0x0558480032b87460, - 0x0558880032b8746e, 0x055900003ab8747c, 0x055940003aba748c, 0x05598001b2ba749c, - 0x055b8003f2be750a, 0x055f800052c47608, 0x0560015d20006623, 0x06bd8000bac4761e, - 0x06be58018ac4764e, 0x06c0001c00008841, 0x06dc00040000c839, 0x06e000200001001f, - 0x070000c800011e1b, 0x07c8000b72c876b2, 0x07d3800352de7990, 0x07d800003ae67a66, - 0x07d898002ae67a76, 0x07d8e800d2e67a82, 0x07d9c0002ae87ab8, 0x07d9f0000ae87ac4, - // Entry 160 - 17F - 0x07da000012e87ac8, 0x07da180012e87ace, 0x07da3003e2e87ad4, 0x07de980b6af07bce, - 0x07ea800203107eaa, 0x07ec9001b3167f2c, 0x07ef8000731c7f9a, 0x07f00000d31c7fb8, - 0x07f100019b1e7fee, 0x07f2a0009b228056, 0x07f340002322807e, 0x07f380002b228088, - 0x07f3b0043b228094, 0x07f7f8000b2c81a4, 0x07f80805f32c81a8, 0x07fe100033368326, - 0x07fe500033368334, 0x07fe900033368342, 0x07fed0001b368350, 0x07ff00003b388358, - 0x07ff40003b388368, 0x07ffc8002b388378, 0x0800000063388384, 0x08006800d338839e, - 0x080140009b3a83d4, 0x0801e000133a83fc, 0x0801f8007b3a8402, 0x08028000733c8422, - 0x08040003db3c8440, 0x080800001b428538, 0x080838016b428540, 0x0809b802c344859c, - // Entry 180 - 19F - 0x080c8000634a864e, 0x080d00000b4a8668, 0x080e8001734a866c, 0x08140000eb4c86ca, - 0x081500018b4e8706, 0x08170000e350876a, 0x08180001235087a4, 0x08198000db5287ee, - 0x081a80015b528826, 0x081c0000f354887e, 0x081cf8012b5688bc, 0x081e400073588908, - 0x08200004f3588926, 0x08250000535e8a64, 0x0825800123608a7a, 0x0826c00123608ac4, - 0x0828000143628b0e, 0x08298001a3648b60, 0x082b78000b668bca, 0x08300009bb668bce, - 0x083a0000b3728e3e, 0x083b000043728e6c, 0x0840000033748e7e, 0x084040000b748e8c, - 0x0840500163748e90, 0x0841b80013768eea, 0x0841e0000b768ef0, 0x0841f800bb768ef4, - 0x0842b80243768f24, 0x084538004b7a8fb6, 0x084700009b7a8fca, 0x0847a000137a8ff2, - // Entry 1A0 - 1BF - 0x0847d8010b7a8ff8, 0x0848f800db7c903c, 0x0849f8000b7e9074, 0x084c0001c37e9078, - 0x084de000a38090ea, 0x084e900193829114, 0x085028001386917a, 0x0850600043869180, - 0x0850a8001b869192, 0x0850c800db86919a, 0x0851c0001b8691d2, 0x0851f8004b8891da, - 0x085280004b8891ee, 0x0853000203889202, 0x085600013b8c9284, 0x08575800638e92d4, - 0x08580001b38e92ee, 0x0859c800eb90935c, 0x085ac000db929398, 0x085bc000d39493d0, - 0x085cc80023969406, 0x085d48003b969410, 0x086000024b969420, 0x086400019b9a94b4, - 0x086600019b9e951c, 0x0867d00033a09584, 0x08730000fba09592, 0x0880000273a295d2, - 0x08829000f3a49670, 0x0883f8021ba696ae, 0x08868000cba89736, 0x0887800053a8976a, - // Entry 1C0 - 1DF - 0x08880001abaa9780, 0x0889b00073ac97ec, 0x088a80013bac980a, 0x088c000273ae985a, - 0x088e800083b098f8, 0x088f0800a3b0991a, 0x0890000093b29944, 0x0890980163b2996a, - 0x089400003bb499c4, 0x089440000bb499d4, 0x0894500023b499d8, 0x089478007bb499e2, - 0x0894f8005bb49a02, 0x08958001dbb69a1a, 0x0897800053b89a92, 0x0898000023b89aa8, - 0x0898280043b89ab2, 0x0898780013b89ac4, 0x08989800b3b89aca, 0x089950003bba9af8, - 0x0899900013ba9b08, 0x0899a8002bba9b0e, 0x0899e0004bba9b1a, 0x089a380013ba9b2e, - 0x089a58001bba9b34, 0x089a80000bba9b3c, 0x089ab8000bba9b40, 0x089ae8003bba9b44, - 0x089b30003bba9b54, 0x089b80002bbc9b64, 0x08a00002d3bc9b70, 0x08a2d8000bbe9c26, - // Entry 1E0 - 1FF - 0x08a2e8000bbe9c2a, 0x08a4000243be9c2e, 0x08a6800053c09cc0, 0x08ac0001b3c29cd6, - 0x08adc00133c49d44, 0x08b000022bc69d92, 0x08b2800053c89e1e, 0x08b300006bc89e34, - 0x08b40001c3c89e50, 0x08b6000053ca9ec2, 0x08b80000d3cc9ed8, 0x08b8e8007bcc9f0e, - 0x08b9800083cc9f2e, 0x08c500029bcc9f50, 0x08c7f8000bd29ff8, 0x08d60001cbd29ffc, - 0x08e000004bd4a070, 0x08e050016bd4a084, 0x08e1c00073d6a0e0, 0x08e28000ebd6a0fe, - 0x08e3800103d8a13a, 0x08e49000b3daa17c, 0x08e5480073daa1aa, 0x0900001cd3dca1c8, - 0x092000037c0ca8fe, 0x092380002c14a9de, 0x092400062414a9ea, 0x098000217c20ab74, - 0x0a2000123c52b3d4, 0x0b400011cc70b864, 0x0b520000fc8cbcd8, 0x0b530000548ebd18, - // Entry 200 - 21F - 0x0b537000148ebd2e, 0x0b568000f48ebd34, 0x0b578000348ebd72, 0x0b580002348ebd80, - 0x0b5a80005492be0e, 0x0b5ad8003c92be24, 0x0b5b1800ac94be34, 0x0b5be8009c94be60, - 0x0b7800022c96be88, 0x0b7a80017c98bf14, 0x0b7c78008c9abf74, 0x0b7f00000c9abf98, - 0x0b8000bf68013825, 0x0c4000179c9abf9c, 0x0d80000014b8c584, 0x0de000035cb8c58a, - 0x0de380006cbcc662, 0x0de400004cbcc67e, 0x0de4800054bec692, 0x0de4e00044bec6a8, - 0x0e800007b4bec6ba, 0x0e8800013cd2c8a8, 0x0e89480604d4c8f8, 0x0e90000234e0ca7a, - 0x0e980002bce4cb08, 0x0e9b000094e8cbb8, 0x0ea00002ace8cbde, 0x0ea2b0023ceecc8a, - 0x0ea4f00014f2cd1a, 0x0ea510000cf2cd20, 0x0ea5280014f2cd24, 0x0ea5480024f2cd2a, - // Entry 220 - 23F - 0x0ea5700064f2cd34, 0x0ea5d8000cf2cd4e, 0x0ea5e8003cf2cd52, 0x0ea628020cf4cd62, - 0x0ea8380024f8cde6, 0x0ea8680044f8cdf0, 0x0ea8b0003cf8ce02, 0x0ea8f000e4f8ce12, - 0x0ea9d80024face4c, 0x0eaa00002cface56, 0x0eaa30000cface62, 0x0eaa50003cface66, - 0x0eaa900aa4face76, 0x0eb540092512d120, 0x0ebe7015f528d36a, 0x0ed4d8002d60d8e8, - 0x0ed508007d60d8f4, 0x0f0000003d62d914, 0x0f0040008d62d924, 0x0f00d8003d64d948, - 0x0f0118001564d958, 0x0f0130002d64d95e, 0x0f4000062d64d96a, 0x0f4638008570daf6, - 0x0f4800025d70db18, 0x0f4a80005574dbb0, 0x0f4af0001574dbc6, 0x0f7000002574dbcc, - 0x0f702800dd74dbd6, 0x0f7108001576dc0e, 0x0f7120000d76dc14, 0x0f7138000d76dc18, - // Entry 240 - 25F - 0x0f7148005576dc1c, 0x0f71a0002576dc32, 0x0f71c8000d78dc3c, 0x0f71d8000d78dc40, - 0x0f7210000d78dc44, 0x0f7238000d78dc48, 0x0f7248000d78dc4c, 0x0f7258000d78dc50, - 0x0f7268001d78dc54, 0x0f7288001578dc5c, 0x0f72a0000d78dc62, 0x0f72b8000d78dc66, - 0x0f72c8000d78dc6a, 0x0f72d8000d78dc6e, 0x0f72e8000d78dc72, 0x0f72f8000d78dc76, - 0x0f7308001578dc7a, 0x0f7320000d78dc80, 0x0f7338002578dc84, 0x0f7360003d78dc8e, - 0x0f73a000257adc9e, 0x0f73c800257adca8, 0x0f73f0000d7adcb2, 0x0f740000557adcb6, - 0x0f7458008d7adccc, 0x0f7508001d7cdcf0, 0x0f7528002d7cdcf8, 0x0f7558008d7cdd04, - 0x0f778000157edd28, 0x0f800001657edd2e, 0x0f8180032580dd88, 0x0f8500007d84de52, - // Entry 260 - 27F - 0x0f8588007d86de72, 0x0f8608007d86de92, 0x0f8688012d88deb2, 0x0f8800006d88defe, - 0x0f888000fd8adf1a, 0x0f898001e58cdf5a, 0x0f8b8001ed90dfd4, 0x0f8f3000ed92e050, - 0x0f9080016594e08c, 0x0f9200004d98e0e6, 0x0f9280001598e0fa, 0x0f98001e9d98e100, - 0x0fb700006db8e8a8, 0x0fb780003db8e8c4, 0x0fb80003a5b8e8d4, 0x0fbc0002adbee9be, - 0x0fc0000065c4ea6a, 0x0fc08001c5c4ea84, 0x0fc2800055c8eaf6, 0x0fc3000145caeb0c, - 0x0fc48000f5cceb5e, 0x0fc880007dceeb9c, 0x0fc9000045ceebbc, 0x0fc980000dd0ebce, - 0x0fc9980065d0ebd2, 0x0fca000065d0ebec, 0x0fca80007dd0ec06, 0x0fcc000095d0ec26, - 0x0fce00000dd0ec4c, 0x10000536b8015c37, 0x15380081a8019237, 0x15ba0006f001c837, - // Entry 280 - 29F - 0x15c100b41001fe37, 0x17c00010f5d0ec50, 0x700008000df4f08e, 0x7001000305f4f092, - 0x7008000785f8f154, 0x780007fff002342d, 0x800007fff002602d, -} // Size: 5200 bytes - -var table1 = []uint16{ // 31130 elements - // Entry 0 - 3F - 0x0146, 0x014b, 0x015b, 0x0169, 0x0174, 0x017f, 0x018b, 0x0194, - 0x019e, 0x01ae, 0x01bf, 0x01c7, 0x01d0, 0x01d5, 0x01e1, 0x01ea, - 0x01f1, 0x01fb, 0x0204, 0x020d, 0x0218, 0x0222, 0x022c, 0x0235, - 0x0240, 0x024b, 0x0255, 0x025a, 0x0263, 0x0271, 0x027c, 0x028d, - 0x029a, 0x02a7, 0x02bd, 0x02d3, 0x02e9, 0x02ff, 0x0315, 0x032b, - 0x0341, 0x0357, 0x036d, 0x0383, 0x0399, 0x03af, 0x03c5, 0x03db, - 0x03f1, 0x0407, 0x041d, 0x0433, 0x0449, 0x045f, 0x0475, 0x048b, - 0x04a1, 0x04b7, 0x04cd, 0x04e3, 0x04f6, 0x0505, 0x0519, 0x052a, - // Entry 40 - 7F - 0x0532, 0x053e, 0x0552, 0x0566, 0x057a, 0x058e, 0x05a2, 0x05b6, - 0x05ca, 0x05de, 0x05f2, 0x0606, 0x061a, 0x062e, 0x0642, 0x0656, - 0x066a, 0x067e, 0x0692, 0x06a6, 0x06ba, 0x06ce, 0x06e2, 0x06f6, - 0x070a, 0x071e, 0x0732, 0x0746, 0x0758, 0x0765, 0x0778, 0x077d, - 0x037d, 0x038b, 0x03a4, 0x03ad, 0x03b7, 0x03c4, 0x03cc, 0x03d6, - 0x03e2, 0x03eb, 0x03f9, 0x0413, 0x043c, 0x0444, 0x044f, 0x045e, - 0x0464, 0x046f, 0x047e, 0x048d, 0x049e, 0x04aa, 0x04b4, 0x04c0, - 0x04ca, 0x04d1, 0x04e0, 0x04fb, 0x0525, 0x0540, 0x0558, 0x0576, - // Entry 80 - BF - 0x058c, 0x05ad, 0x05ce, 0x05f4, 0x0615, 0x063a, 0x0660, 0x0677, - 0x069a, 0x06bb, 0x06dc, 0x0702, 0x0727, 0x0748, 0x0769, 0x078f, - 0x07b4, 0x07cc, 0x07ed, 0x080e, 0x082f, 0x0855, 0x0876, 0x089b, - 0x08ae, 0x08d0, 0x08f1, 0x0912, 0x0938, 0x095d, 0x097e, 0x0998, - 0x09b2, 0x09d1, 0x09f0, 0x0a14, 0x0a33, 0x0a56, 0x0a7a, 0x0a8f, - 0x0ab0, 0x0acf, 0x0aee, 0x0b12, 0x0b35, 0x0b54, 0x0b73, 0x0b97, - 0x0bba, 0x0bd0, 0x0bef, 0x0c0e, 0x0c2d, 0x0c51, 0x0c70, 0x0c93, - 0x0ca0, 0x0cc0, 0x0cdf, 0x0cfe, 0x0d22, 0x0d45, 0x0d64, 0x0d7c, - // Entry C0 - FF - 0x0d9f, 0x0dc1, 0x0de1, 0x0e02, 0x0e21, 0x0e43, 0x0e63, 0x0e84, - 0x0ea3, 0x0ec9, 0x0eed, 0x0f12, 0x0f35, 0x0f56, 0x0f75, 0x0f96, - 0x0fb5, 0x0fd7, 0x0ff7, 0x1019, 0x1039, 0x105a, 0x1079, 0x109e, - 0x10c1, 0x10e3, 0x1103, 0x1124, 0x1143, 0x1169, 0x118d, 0x11ae, - 0x11cd, 0x11f2, 0x1215, 0x1238, 0x1259, 0x127f, 0x12a3, 0x12c5, - 0x12e5, 0x1306, 0x1325, 0x1347, 0x1367, 0x1388, 0x13a7, 0x13c9, - 0x13e9, 0x140e, 0x142a, 0x1443, 0x145a, 0x1480, 0x14a4, 0x14c7, - 0x14e8, 0x14fe, 0x151f, 0x153e, 0x1561, 0x1582, 0x15a3, 0x15c2, - // Entry 100 - 13F - 0x15e8, 0x160c, 0x162e, 0x164e, 0x166f, 0x168e, 0x16b1, 0x16d2, - 0x16f3, 0x1712, 0x173d, 0x1755, 0x176b, 0x178d, 0x17ad, 0x17ce, - 0x17ed, 0x1815, 0x183b, 0x1854, 0x186b, 0x188c, 0x18ab, 0x18ce, - 0x18ef, 0x1910, 0x192f, 0x1950, 0x196f, 0x1995, 0x19b9, 0x19dc, - 0x19fd, 0x1a1e, 0x1a3d, 0x1a60, 0x1a81, 0x1aa2, 0x1ac1, 0x1ae3, - 0x1b03, 0x1b24, 0x1b43, 0x1b65, 0x1b85, 0x1ba6, 0x1bc5, 0x1beb, - 0x1c0f, 0x1c37, 0x1c5d, 0x1c7f, 0x1c9f, 0x1cc5, 0x1ce9, 0x1d0f, - 0x1d33, 0x1d58, 0x1d79, 0x1d98, 0x1dbd, 0x1de0, 0x1e01, 0x1e20, - // Entry 140 - 17F - 0x1e39, 0x1e59, 0x1e79, 0x1e9b, 0x1ebb, 0x1ed8, 0x1ef3, 0x1f0e, - 0x1f2e, 0x1f4c, 0x1f6a, 0x1f8a, 0x1fac, 0x1fcc, 0x1feb, 0x200a, - 0x2024, 0x203f, 0x205f, 0x207d, 0x209d, 0x20b7, 0x20cc, 0x20e5, - 0x2107, 0x2127, 0x2145, 0x2162, 0x2187, 0x21a4, 0x21c9, 0x21f1, - 0x2219, 0x2239, 0x2257, 0x226e, 0x2283, 0x22a3, 0x22c1, 0x22d0, - 0x22ed, 0x2308, 0x2320, 0x233e, 0x2364, 0x2384, 0x23a2, 0x23cc, - 0x23ec, 0x240a, 0x2426, 0x2446, 0x2466, 0x2484, 0x24a6, 0x24c6, - 0x24de, 0x24ff, 0x251e, 0x253e, 0x255a, 0x2578, 0x2594, 0x25c2, - // Entry 180 - 1BF - 0x25d3, 0x25ec, 0x2606, 0x2621, 0x263d, 0x265f, 0x2694, 0x26b4, - 0x26cb, 0x26f5, 0x270a, 0x2721, 0x274b, 0x2760, 0x2781, 0x27a0, - 0x27c1, 0x27e0, 0x2801, 0x2820, 0x2841, 0x2860, 0x2890, 0x28be, - 0x28ed, 0x291a, 0x2949, 0x2976, 0x29a5, 0x29d2, 0x29ed, 0x2a1d, - 0x2a4b, 0x2a7b, 0x2aa9, 0x2acc, 0x2aed, 0x2b0f, 0x2b2f, 0x2b50, - 0x2b6f, 0x2b90, 0x2baf, 0x2bd1, 0x2bf1, 0x2c1e, 0x2c49, 0x2c6c, - 0x2c8d, 0x2cac, 0x2cc3, 0x2ced, 0x2d02, 0x2d23, 0x2d42, 0x2d5c, - 0x2d75, 0x2d96, 0x2db5, 0x2de5, 0x2e13, 0x2e35, 0x2e55, 0x2e81, - // Entry 1C0 - 1FF - 0x2eab, 0x2ed3, 0x2ef9, 0x2f23, 0x2f4b, 0x2f73, 0x2f99, 0x2fc3, - 0x2feb, 0x3013, 0x3039, 0x3063, 0x308b, 0x30b3, 0x30d9, 0x3103, - 0x312b, 0x3153, 0x3179, 0x31a3, 0x31cb, 0x31f3, 0x3219, 0x3243, - 0x326b, 0x3292, 0x32b7, 0x32de, 0x3303, 0x331c, 0x3333, 0x3354, - 0x3373, 0x339d, 0x33bb, 0x33d2, 0x33e7, 0x3407, 0x3425, 0x344a, - 0x346d, 0x3490, 0x34b1, 0x34e1, 0x350f, 0x353b, 0x3565, 0x358a, - 0x35ad, 0x35dd, 0x360b, 0x362d, 0x364d, 0x366b, 0x3689, 0x36a7, - 0x36c3, 0x36e0, 0x36fd, 0x371f, 0x3741, 0x3761, 0x3780, 0x37ab, - // Entry 200 - 23F - 0x37cf, 0x37f3, 0x3814, 0x3833, 0x3855, 0x386f, 0x388c, 0x38ae, - 0x38ce, 0x38f0, 0x3910, 0x393b, 0x395e, 0x3980, 0x39a0, 0x39c2, - 0x39e2, 0x39fd, 0x3a15, 0x3a34, 0x3a52, 0x3a6b, 0x3a89, 0x3aa7, - 0x3ac5, 0x3ae2, 0x3afa, 0x3b1c, 0x3b35, 0x3b57, 0x3b83, 0x3bac, - 0x3bd4, 0x3bf2, 0x3c0d, 0x3c29, 0x3c41, 0x3c5d, 0x3c78, 0x3c96, - 0x3cb7, 0x3cd7, 0x3cee, 0x3d0a, 0x3d30, 0x3d4e, 0x3d76, 0x3d8d, - 0x3da8, 0x3dd1, 0x3def, 0x3e12, 0x3e3a, 0x3e56, 0x3e71, 0x3e8e, - 0x3ead, 0x3ec3, 0x3ede, 0x3f07, 0x3f2c, 0x3f4e, 0x3f6c, 0x3f8e, - // Entry 240 - 27F - 0x3fb9, 0x3fd5, 0x3ffa, 0x4018, 0x402e, 0x405f, 0x4084, 0x40a4, - 0x40bf, 0x40e7, 0x40ff, 0x4119, 0x4137, 0x4152, 0x416d, 0x4188, - 0x41a4, 0x41cc, 0x41ea, 0x4200, 0x4220, 0x4239, 0x4261, 0x4283, - 0x429b, 0x42b6, 0x42d2, 0x42f2, 0x4318, 0x4334, 0x435a, 0x4375, - 0x4391, 0x43af, 0x43d4, 0x4402, 0x441f, 0x443e, 0x4465, 0x4482, - 0x44a1, 0x44c8, 0x44e7, 0x4504, 0x4521, 0x4541, 0x4561, 0x458a, - 0x45bc, 0x45d3, 0x45f4, 0x460b, 0x4622, 0x4640, 0x4668, 0x4690, - 0x46a7, 0x46be, 0x46d3, 0x46ef, 0x470b, 0x4725, 0x4743, 0x4762, - // Entry 280 - 2BF - 0x4780, 0x479c, 0x47c1, 0x47df, 0x47fe, 0x481a, 0x4838, 0x4859, - 0x485e, 0x487b, 0x4891, 0x48ad, 0x48c9, 0x48ea, 0x4904, 0x4924, - 0x4944, 0x4964, 0x4989, 0x49b0, 0x49d6, 0x49ed, 0x4a06, 0x4a1f, - 0x4a39, 0x4a3e, 0x4a47, 0x4a51, 0x4a57, 0x4a62, 0x4a75, 0x4a90, - 0x4aac, 0x4ac7, 0x4ade, 0x4af5, 0x4b0c, 0x4b37, 0x4b5a, 0x4b77, - 0x4b93, 0x4baf, 0x4bd1, 0x4bf8, 0x4c20, 0x4c37, 0x4c52, 0x4c73, - 0x4c95, 0x4cb5, 0x4cd7, 0x4cfa, 0x4d12, 0x4d35, 0x4d5f, 0x4d89, - 0x4da2, 0x4dbe, 0x4ddd, 0x4dfa, 0x4e18, 0x4e34, 0x4e49, 0x4e63, - // Entry 2C0 - 2FF - 0x4e81, 0x4e97, 0x4ead, 0x4ec8, 0x4ed7, 0x4ee7, 0x4ef9, 0x4f08, - 0x4f1b, 0x4f2e, 0x4f42, 0x4f56, 0x4f73, 0x4f82, 0x4f9f, 0x4fc3, - 0x4fe0, 0x4ff5, 0x500d, 0x5029, 0x503e, 0x505c, 0x5077, 0x5093, - 0x50af, 0x50c8, 0x50e2, 0x50fc, 0x510a, 0x5128, 0x513f, 0x5158, - 0x5171, 0x518b, 0x51ab, 0x51c9, 0x51dc, 0x51f5, 0x5209, 0x521e, - 0x522f, 0x523f, 0x525c, 0x5272, 0x5296, 0x52ab, 0x52cc, 0x52e1, - 0x52ff, 0x5314, 0x532a, 0x533c, 0x5355, 0x536c, 0x538a, 0x53a7, - 0x53c6, 0x53e4, 0x5403, 0x5422, 0x5438, 0x544f, 0x5460, 0x5478, - // Entry 300 - 33F - 0x5491, 0x54aa, 0x54c3, 0x54de, 0x54f5, 0x5514, 0x5531, 0x5547, - 0x5562, 0x5586, 0x55a0, 0x55b9, 0x55d3, 0x55f2, 0x5612, 0x562f, - 0x5648, 0x5667, 0x5685, 0x5696, 0x56a7, 0x56c5, 0x56e4, 0x5714, - 0x5733, 0x574c, 0x5764, 0x577f, 0x5795, 0x57b1, 0x57c7, 0x57de, - 0x57fb, 0x5811, 0x5830, 0x5857, 0x5875, 0x5893, 0x58b1, 0x58cf, - 0x58ed, 0x590b, 0x5929, 0x5947, 0x5965, 0x5983, 0x59a1, 0x59bf, - 0x59dd, 0x59f6, 0x5a0d, 0x5a2f, 0x5a4f, 0x5a61, 0x5a79, 0x5aa0, - 0x5ac5, 0x02c5, 0x02d8, 0x0300, 0x0326, 0x0355, 0x0368, 0x0380, - // Entry 340 - 37F - 0x0380, 0x038b, 0x03a0, 0x03c5, 0x03d5, 0x03fc, 0x041f, 0x0443, - 0x0043, 0x006a, 0x006a, 0x0091, 0x00b6, 0x00e6, 0x0100, 0x0119, - 0x0133, 0x014d, 0x0169, 0x0182, 0x019a, 0x01b4, 0x01cd, 0x01e7, - 0x0201, 0x0218, 0x022f, 0x0246, 0x0262, 0x0279, 0x0291, 0x0291, - 0x02ab, 0x02c3, 0x02df, 0x02f7, 0x030f, 0x0327, 0x0341, 0x0369, - 0x0394, 0x03b7, 0x03dc, 0x03fd, 0x041f, 0x0452, 0x046a, 0x0481, - 0x0499, 0x04b1, 0x04cb, 0x04e2, 0x04f8, 0x0510, 0x0527, 0x053f, - 0x0557, 0x056c, 0x0581, 0x0596, 0x05b0, 0x05c5, 0x05db, 0x05f9, - // Entry 380 - 3BF - 0x0611, 0x0627, 0x0641, 0x0657, 0x066d, 0x0683, 0x069b, 0x06c1, - 0x06ea, 0x070f, 0x0734, 0x0757, 0x076f, 0x0780, 0x0792, 0x07b0, - 0x07d8, 0x0804, 0x0814, 0x0823, 0x0833, 0x084d, 0x086d, 0x0880, - 0x0899, 0x08ad, 0x08c7, 0x08d9, 0x08f1, 0x0903, 0x091b, 0x0935, - 0x094d, 0x0966, 0x097d, 0x0997, 0x09af, 0x09c9, 0x09e1, 0x09fd, - 0x0a17, 0x0a32, 0x0a4b, 0x0a64, 0x0a7b, 0x0a8d, 0x0a9d, 0x0ab6, - 0x0ac6, 0x0ae0, 0x0afb, 0x0b1f, 0x0b37, 0x0b4d, 0x0b6e, 0x0b86, - 0x0b9c, 0x0bb8, 0x0be2, 0x0c0a, 0x0c3b, 0x0c60, 0x0c7a, 0x0c95, - // Entry 3C0 - 3FF - 0x0cb0, 0x0cd4, 0x0cef, 0x0d1f, 0x0d39, 0x0d53, 0x0d6e, 0x0d89, - 0x0da5, 0x0dc0, 0x0de4, 0x0e03, 0x0e1f, 0x0e38, 0x0e52, 0x0e6c, - 0x0e87, 0x0ea1, 0x0ebb, 0x0ed6, 0x0ef0, 0x0f09, 0x0f28, 0x0f42, - 0x0f5c, 0x0f76, 0x0f90, 0x0fa9, 0x0fc3, 0x0fdd, 0x0ff7, 0x1011, - 0x102a, 0x1044, 0x105e, 0x1079, 0x1094, 0x10af, 0x10cc, 0x10ed, - 0x1109, 0x112a, 0x1143, 0x115d, 0x1177, 0x118e, 0x11a6, 0x11be, - 0x11d7, 0x11ef, 0x1207, 0x1220, 0x1238, 0x124f, 0x126c, 0x1284, - 0x129c, 0x12b4, 0x12cc, 0x12e3, 0x12fb, 0x1313, 0x132b, 0x1343, - // Entry 400 - 43F - 0x135a, 0x1372, 0x138a, 0x13a3, 0x13bc, 0x13d5, 0x13f0, 0x140f, - 0x1429, 0x1448, 0x145f, 0x1477, 0x148f, 0x14b2, 0x14ca, 0x14e3, - 0x14fc, 0x151e, 0x1537, 0x1565, 0x157d, 0x1595, 0x15ae, 0x15c7, - 0x15e1, 0x15fa, 0x161c, 0x1639, 0x1653, 0x1670, 0x168b, 0x16a6, - 0x16bf, 0x16e1, 0x1701, 0x1723, 0x1743, 0x176e, 0x1797, 0x17b6, - 0x17d3, 0x17fb, 0x1821, 0x183c, 0x1855, 0x1870, 0x1889, 0x18a5, - 0x18bf, 0x18de, 0x18fb, 0x1933, 0x1969, 0x1983, 0x199b, 0x19be, - 0x19df, 0x1a07, 0x1a2d, 0x1a47, 0x1a5f, 0x1a7c, 0x1a97, 0x1aae, - // Entry 440 - 47F - 0x1ac6, 0x1ae7, 0x1b08, 0x1b29, 0x1b44, 0x1b6d, 0x1b8d, 0x1bb6, - 0x1bdd, 0x1c02, 0x1c25, 0x1c49, 0x1c6b, 0x1c92, 0x1cb7, 0x1cde, - 0x1d03, 0x1d2f, 0x1d59, 0x1d83, 0x1dab, 0x1dd4, 0x1dfb, 0x1e24, - 0x1e4b, 0x1e7a, 0x1ea7, 0x1ecd, 0x1ef1, 0x1f13, 0x1f33, 0x1f5c, - 0x1f83, 0x1fa3, 0x1fc1, 0x1fec, 0x2015, 0x2039, 0x205b, 0x2084, - 0x20ab, 0x20d4, 0x20fb, 0x211d, 0x213d, 0x216b, 0x2197, 0x21c0, - 0x21e7, 0x2207, 0x2225, 0x224f, 0x2277, 0x22a7, 0x22d5, 0x22f1, - 0x230b, 0x2330, 0x2353, 0x2387, 0x23b9, 0x23d1, 0x23f7, 0x241b, - // Entry 480 - 4BF - 0x243f, 0x2461, 0x2485, 0x24a7, 0x24cb, 0x24ed, 0x2511, 0x2533, - 0x2559, 0x257d, 0x25a1, 0x25c3, 0x25e1, 0x2605, 0x2627, 0x264f, - 0x2675, 0x2693, 0x26af, 0x26d4, 0x26f7, 0x2714, 0x272f, 0x275b, - 0x2785, 0x27af, 0x27d7, 0x2800, 0x2827, 0x284c, 0x286f, 0x2894, - 0x28b7, 0x28df, 0x2905, 0x292d, 0x2953, 0x2973, 0x2991, 0x29c0, - 0x29ed, 0x2a15, 0x2a3b, 0x2a60, 0x2a83, 0x2aab, 0x2ad1, 0x2afc, - 0x2b25, 0x2b4f, 0x2b77, 0x2ba1, 0x2bc9, 0x2bf4, 0x2c1d, 0x2c4d, - 0x2c7b, 0x2c9f, 0x2cc1, 0x2ce7, 0x2d0b, 0x2d2a, 0x2d47, 0x2d67, - // Entry 4C0 - 4FF - 0x2d85, 0x2da5, 0x2dc3, 0x2de4, 0x2e03, 0x2e23, 0x2e41, 0x2e61, - 0x2e7f, 0x2e9f, 0x2ebd, 0x2edd, 0x2efb, 0x2f1e, 0x2f3f, 0x2f63, - 0x2f85, 0x2fa0, 0x2fb9, 0x2fd4, 0x2fed, 0x3008, 0x3021, 0x303b, - 0x3053, 0x306d, 0x3085, 0x30a5, 0x30c3, 0x30ee, 0x3117, 0x3142, - 0x316b, 0x3194, 0x31bb, 0x31e6, 0x320f, 0x3238, 0x325f, 0x327c, - 0x3297, 0x32b3, 0x32cd, 0x32f6, 0x331d, 0x031d, 0x0338, 0x0353, - 0x036e, 0x0388, 0x03a3, 0x03bd, 0x03d7, 0x03f1, 0x040b, 0x0426, - 0x0441, 0x045d, 0x0478, 0x0492, 0x04ad, 0x04c7, 0x04e1, 0x04fd, - // Entry 500 - 53F - 0x0519, 0x0534, 0x054e, 0x0569, 0x0584, 0x059e, 0x05b9, 0x05d4, - 0x05f0, 0x060a, 0x0625, 0x0640, 0x065c, 0x0677, 0x0691, 0x06ad, - 0x06c9, 0x06e4, 0x06fe, 0x0719, 0x0319, 0x0340, 0x0353, 0x0369, - 0x0382, 0x0390, 0x03a6, 0x03c0, 0x03c0, 0x03d9, 0x03f2, 0x040b, - 0x0423, 0x043c, 0x0454, 0x046c, 0x0484, 0x049c, 0x04b5, 0x04ce, - 0x04e8, 0x0501, 0x0519, 0x0532, 0x054a, 0x0562, 0x057c, 0x0596, - 0x05af, 0x05c7, 0x05e0, 0x05f9, 0x0611, 0x062a, 0x0643, 0x065d, - 0x0675, 0x068e, 0x06a7, 0x06c1, 0x06da, 0x06f2, 0x070c, 0x0726, - // Entry 540 - 57F - 0x073f, 0x0757, 0x0770, 0x0790, 0x0390, 0x03a2, 0x03b1, 0x03b1, - 0x03d4, 0x03f6, 0x0408, 0x0008, 0x001d, 0x0030, 0x0048, 0x0061, - 0x007a, 0x008e, 0x00a1, 0x00b4, 0x00c8, 0x00db, 0x00ee, 0x0102, - 0x011d, 0x0134, 0x014d, 0x0169, 0x017c, 0x0196, 0x01a9, 0x01bf, - 0x01d3, 0x01ee, 0x0201, 0x0214, 0x0230, 0x024c, 0x025d, 0x026f, - 0x0281, 0x0294, 0x02ad, 0x02bf, 0x02d7, 0x02ef, 0x0308, 0x031a, - 0x032c, 0x033e, 0x0350, 0x0363, 0x0375, 0x0395, 0x03a8, 0x03c4, - 0x03d6, 0x03ee, 0x03ff, 0x0417, 0x042c, 0x0440, 0x045c, 0x0471, - // Entry 580 - 5BF - 0x0486, 0x04a4, 0x04bd, 0x00bd, 0x00cf, 0x00e0, 0x00f3, 0x0106, - 0x0116, 0x0127, 0x013a, 0x014b, 0x015c, 0x016d, 0x0184, 0x0195, - 0x01a8, 0x01bf, 0x01d0, 0x01e7, 0x01f8, 0x020c, 0x021e, 0x0234, - 0x0244, 0x025d, 0x0270, 0x0281, 0x0293, 0x02a5, 0x02b6, 0x02b6, - 0x02d8, 0x02f7, 0x0319, 0x0332, 0x034e, 0x034e, 0x0360, 0x0371, - 0x0387, 0x0398, 0x03aa, 0x03c2, 0x03d8, 0x03f0, 0x03fa, 0x0415, - 0x0437, 0x0443, 0x044f, 0x0464, 0x047c, 0x048d, 0x04b5, 0x04d0, - 0x04ee, 0x050b, 0x0520, 0x0535, 0x0566, 0x057c, 0x058e, 0x05a0, - // Entry 5C0 - 5FF - 0x05b2, 0x05c2, 0x05d4, 0x01d4, 0x01f6, 0x020a, 0x0224, 0x0237, - 0x025a, 0x027d, 0x029f, 0x02c2, 0x02e4, 0x02f6, 0x0307, 0x0320, - 0x0331, 0x0343, 0x0355, 0x0366, 0x0378, 0x0389, 0x039b, 0x03ac, - 0x03be, 0x03d0, 0x03e3, 0x03f4, 0x0405, 0x0416, 0x0427, 0x0438, - 0x044b, 0x0472, 0x049b, 0x04c2, 0x04ed, 0x051a, 0x0528, 0x0539, - 0x054a, 0x055b, 0x056c, 0x057e, 0x0590, 0x05a1, 0x05b2, 0x05cc, - 0x05dd, 0x05ec, 0x05fb, 0x060a, 0x0616, 0x0622, 0x062e, 0x063b, - 0x0647, 0x065a, 0x066c, 0x067e, 0x0693, 0x06a8, 0x06bf, 0x06ce, - // Entry 600 - 63F - 0x06ed, 0x0715, 0x0730, 0x0745, 0x075f, 0x0776, 0x078d, 0x07a3, - 0x07b9, 0x07d1, 0x07e8, 0x07ff, 0x0815, 0x082d, 0x0845, 0x085c, - 0x086f, 0x0887, 0x08a1, 0x08b9, 0x08d2, 0x08eb, 0x0909, 0x0921, - 0x0949, 0x0971, 0x0989, 0x09a6, 0x09c2, 0x09e2, 0x09fe, 0x0a10, - 0x0a24, 0x0a36, 0x0a51, 0x0a82, 0x0a93, 0x0aa6, 0x0ab9, 0x0adb, - 0x0b09, 0x0b1b, 0x0b2d, 0x0b54, 0x0b67, 0x0b7c, 0x0b8e, 0x0ba9, - 0x0bc9, 0x0bf7, 0x0c0a, 0x0c1e, 0x0c2f, 0x0c60, 0x0c86, 0x0c98, - 0x0cb6, 0x0cd1, 0x0cf1, 0x0d15, 0x0d43, 0x0d68, 0x0d79, 0x0d9f, - // Entry 640 - 67F - 0x0dce, 0x0df6, 0x0e33, 0x0e58, 0x0e7f, 0x0ea6, 0x0ecd, 0x0ee6, - 0x0f0c, 0x0f2c, 0x0f3d, 0x0f64, 0x0f77, 0x0f97, 0x0fbe, 0x0fd1, - 0x0fe8, 0x1003, 0x1023, 0x1033, 0x105a, 0x106b, 0x1086, 0x1099, - 0x10be, 0x10d0, 0x10f7, 0x1115, 0x1135, 0x115c, 0x1183, 0x11a4, - 0x11bd, 0x11d0, 0x11ec, 0x1214, 0x1231, 0x1253, 0x1273, 0x1289, - 0x12b0, 0x12ce, 0x12e9, 0x1301, 0x1311, 0x1320, 0x1330, 0x1348, - 0x136d, 0x137d, 0x1394, 0x13af, 0x13cd, 0x13ed, 0x13fc, 0x1423, - 0x143b, 0x1464, 0x1474, 0x1484, 0x14bd, 0x14f6, 0x1519, 0x1533, - // Entry 680 - 6BF - 0x1549, 0x1565, 0x157b, 0x158d, 0x15a8, 0x15c6, 0x15f0, 0x1616, - 0x163a, 0x164f, 0x1666, 0x1676, 0x1686, 0x169b, 0x16b1, 0x16c7, - 0x16e3, 0x1700, 0x172b, 0x1740, 0x1761, 0x1782, 0x17a2, 0x17c1, - 0x17e0, 0x1801, 0x1821, 0x1841, 0x1860, 0x1881, 0x18a2, 0x18c2, - 0x18e4, 0x1904, 0x1926, 0x1942, 0x1965, 0x1986, 0x199d, 0x19b9, - 0x19d3, 0x19eb, 0x1a01, 0x1a18, 0x1a30, 0x1a49, 0x1a6d, 0x1a90, - 0x1aa2, 0x1ab8, 0x1ad1, 0x1aeb, 0x02eb, 0x0303, 0x0316, 0x0335, - 0x0347, 0x035a, 0x0376, 0x038a, 0x03ab, 0x03bb, 0x03cc, 0x03de, - // Entry 6C0 - 6FF - 0x03f0, 0x0402, 0x041d, 0x042f, 0x0444, 0x0456, 0x046a, 0x047b, - 0x048c, 0x04a1, 0x04bc, 0x04cb, 0x04db, 0x04f4, 0x0507, 0x0519, - 0x052b, 0x053d, 0x054e, 0x0569, 0x0585, 0x05a2, 0x05b5, 0x05c8, - 0x05dc, 0x05ef, 0x0602, 0x0616, 0x0628, 0x063a, 0x0658, 0x0673, - 0x0685, 0x0697, 0x06b0, 0x06c2, 0x06d4, 0x06e0, 0x06f3, 0x0703, - 0x0712, 0x0730, 0x074e, 0x0765, 0x077c, 0x0795, 0x07ae, 0x07ba, - 0x07c8, 0x03c8, 0x03e3, 0x03fe, 0x0416, 0x044a, 0x047f, 0x04b7, - 0x0502, 0x0535, 0x0562, 0x0580, 0x05a5, 0x05dd, 0x061b, 0x0648, - // Entry 700 - 73F - 0x0665, 0x068c, 0x06b1, 0x06eb, 0x071b, 0x0740, 0x0778, 0x079a, - 0x07c3, 0x07fd, 0x081e, 0x083f, 0x0865, 0x0886, 0x08a5, 0x08bf, - 0x08ef, 0x0911, 0x0942, 0x0976, 0x09b1, 0x09ed, 0x0a28, 0x0a5c, - 0x0a99, 0x0ad8, 0x0b1a, 0x0b5e, 0x0ba1, 0x0bdd, 0x0c1b, 0x0c5e, - 0x0ca3, 0x0ce0, 0x0d1e, 0x0d40, 0x0d65, 0x0d76, 0x0d8d, 0x0da0, - 0x0db1, 0x0dc2, 0x0dd9, 0x0dec, 0x0dff, 0x0e12, 0x0e25, 0x0e38, - 0x0e4c, 0x0e5e, 0x0e71, 0x0e84, 0x0e9b, 0x0eae, 0x0ec4, 0x0eda, - 0x0ef0, 0x0f01, 0x0f17, 0x0f2d, 0x0f44, 0x0f56, 0x0f68, 0x0f7a, - // Entry 740 - 77F - 0x0f8e, 0x0f9f, 0x0fb3, 0x0fc7, 0x0fdb, 0x0feb, 0x0ffb, 0x100d, - 0x1021, 0x1034, 0x1047, 0x1055, 0x1065, 0x1073, 0x1083, 0x1091, - 0x10a1, 0x10af, 0x10bf, 0x10cd, 0x10dd, 0x10e9, 0x10fa, 0x00fa, - 0x0108, 0x0115, 0x0122, 0x0131, 0x013f, 0x014d, 0x015a, 0x0169, - 0x0178, 0x0186, 0x0192, 0x019f, 0x01ab, 0x01b7, 0x01c3, 0x01d0, - 0x01dc, 0x01f1, 0x01fd, 0x020a, 0x0217, 0x0224, 0x0231, 0x023f, - 0x024c, 0x0259, 0x0267, 0x0274, 0x0282, 0x028f, 0x029c, 0x02a9, - 0x02bd, 0x02ca, 0x02d8, 0x02e5, 0x02f2, 0x02ff, 0x030c, 0x0321, - // Entry 780 - 7BF - 0x0333, 0x0346, 0x0358, 0x0375, 0x0391, 0x03b0, 0x03d2, 0x03ee, - 0x0409, 0x0427, 0x0446, 0x0464, 0x047c, 0x0493, 0x04a7, 0x04bc, - 0x04c5, 0x04d9, 0x04e7, 0x00e7, 0x00fc, 0x0110, 0x0126, 0x013c, - 0x014f, 0x0163, 0x0177, 0x018a, 0x019e, 0x01b2, 0x01c7, 0x01dd, - 0x01f1, 0x0205, 0x021d, 0x0230, 0x0243, 0x025b, 0x026f, 0x0284, - 0x0299, 0x02ae, 0x02bf, 0x02d5, 0x02ed, 0x0302, 0x032a, 0x0347, - 0x0362, 0x0378, 0x0398, 0x03b4, 0x03cb, 0x03ea, 0x0405, 0x041b, - 0x043c, 0x0458, 0x0473, 0x0489, 0x04a4, 0x04bf, 0x04d5, 0x04eb, - // Entry 7C0 - 7FF - 0x0505, 0x051b, 0x011b, 0x0138, 0x0154, 0x016f, 0x0188, 0x01a4, - 0x01c4, 0x01df, 0x0202, 0x021d, 0x0238, 0x0252, 0x026c, 0x0289, - 0x02ab, 0x02c7, 0x02c7, 0x02db, 0x02ec, 0x02fd, 0x030e, 0x031f, - 0x0335, 0x0346, 0x0357, 0x0369, 0x037c, 0x038d, 0x039e, 0x03af, - 0x03c0, 0x03d1, 0x03e2, 0x03f3, 0x0405, 0x0416, 0x0427, 0x0439, - 0x044a, 0x0461, 0x0473, 0x0485, 0x049d, 0x04b6, 0x04cd, 0x00cd, - 0x00e0, 0x00e0, 0x0104, 0x0126, 0x014c, 0x0171, 0x01a6, 0x01c6, - 0x01e7, 0x020f, 0x0244, 0x0277, 0x0292, 0x02b3, 0x02cd, 0x02e3, - // Entry 800 - 83F - 0x030a, 0x0331, 0x0357, 0x0371, 0x0399, 0x03c0, 0x03e0, 0x03e0, - 0x0407, 0x042e, 0x0454, 0x047b, 0x04b5, 0x04ce, 0x04e7, 0x0501, - 0x0101, 0x011e, 0x0133, 0x0148, 0x015d, 0x017e, 0x019e, 0x01c1, - 0x01e0, 0x01fe, 0x021a, 0x0234, 0x0250, 0x0271, 0x028d, 0x02a8, - 0x02c1, 0x02d3, 0x02e5, 0x02f7, 0x030c, 0x0321, 0x0336, 0x034f, - 0x0369, 0x037f, 0x0398, 0x03b2, 0x03c8, 0x03dc, 0x03f0, 0x0404, - 0x0419, 0x042f, 0x044a, 0x0465, 0x0480, 0x049c, 0x04b7, 0x04d3, - 0x04f6, 0x0522, 0x0547, 0x055c, 0x057c, 0x05a0, 0x05bb, 0x05d3, - // Entry 840 - 87F - 0x05ea, 0x0603, 0x0616, 0x062a, 0x063d, 0x0651, 0x0664, 0x0678, - 0x0693, 0x06ae, 0x06c8, 0x06e1, 0x06f4, 0x0708, 0x0722, 0x073b, - 0x074e, 0x0762, 0x0776, 0x078b, 0x079f, 0x07b4, 0x07c9, 0x07dd, - 0x07f2, 0x0806, 0x081b, 0x0830, 0x0845, 0x085b, 0x0870, 0x0886, - 0x089b, 0x08af, 0x08c4, 0x08d8, 0x08ed, 0x0901, 0x0917, 0x092b, - 0x0940, 0x0954, 0x0969, 0x097d, 0x0991, 0x09a5, 0x09ba, 0x09ce, - 0x09e3, 0x09f9, 0x0a0d, 0x0a22, 0x0a37, 0x0a4b, 0x0a5f, 0x0a77, - 0x0a90, 0x0aa5, 0x0abd, 0x0ad5, 0x0aec, 0x0b04, 0x0b1b, 0x0b33, - // Entry 880 - 8BF - 0x0b52, 0x0b72, 0x0b90, 0x0bad, 0x0bc4, 0x0bdc, 0x0bfa, 0x0c17, - 0x0c2e, 0x0c46, 0x0c5c, 0x0c81, 0x0c99, 0x0ca6, 0x0cc3, 0x0ce2, - 0x0cf9, 0x0d10, 0x0d33, 0x0d4b, 0x0d64, 0x0d78, 0x0d8e, 0x0da4, - 0x0db8, 0x0dcf, 0x0de4, 0x0df8, 0x0e0d, 0x0e29, 0x0e45, 0x0e64, - 0x0e84, 0x0e94, 0x0eab, 0x0ec0, 0x0ed4, 0x0ee8, 0x0efe, 0x0f13, - 0x0f28, 0x0f3c, 0x0f52, 0x0f68, 0x0f7d, 0x0f99, 0x0fb9, 0x0fd3, - 0x0fe7, 0x0ffc, 0x1010, 0x1024, 0x1039, 0x1056, 0x106b, 0x1085, - 0x109a, 0x10af, 0x10cd, 0x10e3, 0x10f8, 0x1104, 0x111c, 0x1131, - // Entry 8C0 - 8FF - 0x1145, 0x0145, 0x0155, 0x0166, 0x0176, 0x0187, 0x0197, 0x01a8, - 0x01c0, 0x01d8, 0x01d8, 0x01e8, 0x01f9, 0x01f9, 0x0209, 0x021a, - 0x022b, 0x023d, 0x024e, 0x0260, 0x0272, 0x0283, 0x0295, 0x02a6, - 0x02b8, 0x02ca, 0x02dc, 0x02ef, 0x0301, 0x0314, 0x0326, 0x0337, - 0x0349, 0x035a, 0x036c, 0x037d, 0x037d, 0x038e, 0x03a0, 0x03b1, - 0x03c3, 0x03d4, 0x03e5, 0x03f6, 0x03f6, 0x0407, 0x0007, 0x0019, - 0x002b, 0x003c, 0x004d, 0x004d, 0x005f, 0x0074, 0x0089, 0x009d, - 0x00b2, 0x00c6, 0x00db, 0x00f7, 0x0114, 0x0114, 0x0128, 0x013d, - // Entry 900 - 93F - 0x013d, 0x0151, 0x0166, 0x0179, 0x0191, 0x0191, 0x01a7, 0x01a7, - 0x01b9, 0x01cb, 0x01cb, 0x01dd, 0x01f6, 0x020f, 0x022b, 0x0248, - 0x0248, 0x025a, 0x026b, 0x027c, 0x028f, 0x02a1, 0x02b3, 0x02c4, - 0x02d7, 0x02ea, 0x02fc, 0x0322, 0x0347, 0x0359, 0x036b, 0x0389, - 0x03a7, 0x03c7, 0x03e6, 0x041e, 0x0442, 0x0450, 0x0462, 0x0062, - 0x007a, 0x008d, 0x00a2, 0x00a2, 0x00b3, 0x00c5, 0x00d6, 0x00e8, - 0x00f9, 0x010b, 0x010b, 0x011d, 0x012f, 0x012f, 0x0141, 0x0153, - 0x0165, 0x0178, 0x018a, 0x019d, 0x01b0, 0x01c2, 0x01d5, 0x01e7, - // Entry 940 - 97F - 0x01fa, 0x020d, 0x0220, 0x0234, 0x0247, 0x025b, 0x026e, 0x0280, - 0x0293, 0x02a5, 0x02b8, 0x02ca, 0x02ca, 0x02dc, 0x02ef, 0x0301, - 0x0314, 0x0326, 0x0338, 0x034a, 0x034a, 0x035c, 0x036f, 0x036f, - 0x0381, 0x0394, 0x0394, 0x03a6, 0x03b8, 0x03b8, 0x03cb, 0x03cb, - 0x03e1, 0x03f6, 0x040c, 0x0421, 0x0437, 0x0037, 0x004d, 0x0063, - 0x0063, 0x0079, 0x008f, 0x00a3, 0x00a3, 0x00b6, 0x00b6, 0x00ca, - 0x00de, 0x00f0, 0x0103, 0x0103, 0x0115, 0x0115, 0x0128, 0x013a, - 0x014c, 0x0160, 0x0173, 0x0186, 0x0198, 0x01ac, 0x01c0, 0x01d3, - // Entry 980 - 9BF - 0x01e1, 0x01ef, 0x01fb, 0x0207, 0x0218, 0x022c, 0x022c, 0x0245, - 0x025b, 0x0270, 0x0270, 0x0281, 0x0293, 0x02a4, 0x02b6, 0x02c7, - 0x02d9, 0x02f2, 0x030b, 0x0322, 0x0322, 0x0333, 0x0345, 0x035c, - 0x035c, 0x036d, 0x037f, 0x0391, 0x03a4, 0x03b6, 0x03c9, 0x03dc, - 0x03ee, 0x0401, 0x0413, 0x0426, 0x0439, 0x044c, 0x0460, 0x0473, - 0x0487, 0x049a, 0x04ac, 0x04bf, 0x04d1, 0x04e4, 0x04f6, 0x00f6, - 0x0108, 0x011b, 0x012d, 0x0140, 0x0152, 0x0164, 0x0176, 0x0176, - 0x0188, 0x019b, 0x019b, 0x01ad, 0x01c0, 0x01d3, 0x01e5, 0x01f7, - // Entry 9C0 - 9FF - 0x01f7, 0x020a, 0x0220, 0x0236, 0x024b, 0x0261, 0x0276, 0x028c, - 0x02a9, 0x02c7, 0x02e3, 0x02e3, 0x02f8, 0x030e, 0x032a, 0x032a, - 0x033f, 0x0355, 0x0369, 0x0369, 0x0374, 0x0374, 0x038e, 0x03a8, - 0x03c5, 0x03e3, 0x03e3, 0x03f6, 0x0408, 0x041a, 0x042e, 0x0441, - 0x0454, 0x0466, 0x047a, 0x048e, 0x04a1, 0x04bb, 0x04ce, 0x00ce, - 0x00e1, 0x00e1, 0x00f7, 0x010a, 0x011c, 0x011c, 0x012a, 0x0139, - 0x0147, 0x0156, 0x0164, 0x0173, 0x0189, 0x019f, 0x019f, 0x01ad, - 0x01bc, 0x01bc, 0x01ca, 0x01d9, 0x01e8, 0x01f8, 0x0207, 0x0217, - // Entry A00 - A3F - 0x0227, 0x0236, 0x0246, 0x0255, 0x0265, 0x0275, 0x0285, 0x0296, - 0x02a6, 0x02b7, 0x02c7, 0x02d6, 0x02e6, 0x02f5, 0x0305, 0x0314, - 0x0314, 0x0323, 0x0333, 0x0342, 0x0352, 0x0361, 0x0370, 0x037f, - 0x037f, 0x038e, 0x039e, 0x039e, 0x03ad, 0x03bd, 0x03cd, 0x03dc, - 0x03eb, 0x03eb, 0x03fb, 0x040e, 0x0421, 0x0433, 0x0446, 0x0458, - 0x046b, 0x0485, 0x04a0, 0x00a0, 0x00b2, 0x00c5, 0x00c5, 0x00d7, - 0x00ea, 0x00fb, 0x00fb, 0x010f, 0x0123, 0x0123, 0x0133, 0x0143, - 0x0143, 0x0153, 0x016a, 0x0181, 0x019b, 0x01b6, 0x01b6, 0x01c6, - // Entry A40 - A7F - 0x01d5, 0x01e4, 0x01f5, 0x0205, 0x0215, 0x0224, 0x0235, 0x0246, - 0x0256, 0x0262, 0x0271, 0x028b, 0x02a2, 0x02bf, 0x02db, 0x02f4, - 0x0313, 0x0313, 0x0326, 0x0338, 0x0338, 0x0346, 0x0355, 0x0363, - 0x0372, 0x0380, 0x038f, 0x038f, 0x039d, 0x03ac, 0x03bb, 0x03bb, - 0x03c9, 0x03d8, 0x03e7, 0x03f6, 0x03f6, 0x0406, 0x0415, 0x0015, - 0x0024, 0x0024, 0x0034, 0x0044, 0x0044, 0x0054, 0x0063, 0x0063, - 0x0072, 0x0083, 0x0092, 0x0092, 0x00a1, 0x00b0, 0x00bf, 0x00cf, - 0x00de, 0x00ee, 0x00ff, 0x010e, 0x011e, 0x012e, 0x013d, 0x014c, - // Entry A80 - ABF - 0x014c, 0x015f, 0x0171, 0x0184, 0x0196, 0x01a9, 0x01a9, 0x01bb, - 0x01ce, 0x01e1, 0x01e1, 0x01f3, 0x0206, 0x0219, 0x022a, 0x022a, - 0x0232, 0x0232, 0x0246, 0x0246, 0x0256, 0x0265, 0x0274, 0x0285, - 0x0295, 0x02a5, 0x02b4, 0x02c5, 0x02d6, 0x02e6, 0x02f6, 0x030e, - 0x0327, 0x0335, 0x0345, 0x0354, 0x0364, 0x0375, 0x0388, 0x0398, - 0x03a9, 0x03a9, 0x03d0, 0x03e7, 0x03fb, 0x040e, 0x000e, 0x001d, - 0x002d, 0x003c, 0x004c, 0x005b, 0x006b, 0x0082, 0x0099, 0x0099, - 0x00a8, 0x00b8, 0x00c8, 0x00c8, 0x00d7, 0x00e7, 0x00f7, 0x0107, - // Entry AC0 - AFF - 0x0118, 0x0128, 0x0139, 0x014a, 0x015a, 0x016b, 0x017b, 0x018c, - 0x019d, 0x01ae, 0x01c0, 0x01d1, 0x01e3, 0x01f4, 0x0204, 0x0215, - 0x0225, 0x0236, 0x0246, 0x0246, 0x0256, 0x0267, 0x0277, 0x0288, - 0x0298, 0x02a8, 0x02b8, 0x02c9, 0x02d9, 0x02ea, 0x02fc, 0x030c, - 0x031d, 0x032e, 0x033e, 0x034e, 0x034e, 0x0362, 0x0376, 0x0389, - 0x039d, 0x03b0, 0x03c4, 0x03df, 0x03fb, 0x03fb, 0x040e, 0x0422, - 0x0436, 0x0036, 0x0049, 0x005d, 0x0071, 0x0083, 0x0083, 0x0095, - 0x00aa, 0x00aa, 0x00bb, 0x00cc, 0x00de, 0x00de, 0x00f6, 0x010e, - // Entry B00 - B3F - 0x0129, 0x0145, 0x0145, 0x0156, 0x0166, 0x0176, 0x0188, 0x0199, - 0x01aa, 0x01ba, 0x01cc, 0x01de, 0x01ef, 0x01ef, 0x0220, 0x0250, - 0x0280, 0x02b2, 0x02e3, 0x0314, 0x0347, 0x0358, 0x0378, 0x0390, - 0x03a5, 0x03b9, 0x03b9, 0x03c9, 0x03da, 0x03ea, 0x03fb, 0x040b, - 0x041c, 0x0434, 0x044c, 0x004c, 0x005c, 0x006d, 0x007e, 0x007e, - 0x008e, 0x009f, 0x00b0, 0x00c1, 0x00d3, 0x00e4, 0x00f6, 0x0108, - 0x0119, 0x012b, 0x013c, 0x014e, 0x0160, 0x0172, 0x0185, 0x0197, - 0x01aa, 0x01bc, 0x01cd, 0x01df, 0x01f0, 0x0202, 0x0213, 0x0213, - // Entry B40 - B7F - 0x0224, 0x0236, 0x0247, 0x0259, 0x026a, 0x027b, 0x028c, 0x029e, - 0x02af, 0x02c1, 0x02c1, 0x02d2, 0x02e4, 0x02f6, 0x0307, 0x0318, - 0x0318, 0x032a, 0x033f, 0x0354, 0x0368, 0x037d, 0x0391, 0x03a6, - 0x03c2, 0x03df, 0x03df, 0x03f3, 0x0408, 0x041d, 0x001d, 0x0031, - 0x0046, 0x005b, 0x006e, 0x006e, 0x0081, 0x0097, 0x0097, 0x00a8, - 0x00a8, 0x00c1, 0x00da, 0x00f6, 0x0113, 0x0113, 0x0125, 0x0136, - 0x0147, 0x015a, 0x016c, 0x017e, 0x018f, 0x01a2, 0x01b5, 0x01c7, - 0x01c7, 0x01df, 0x01f7, 0x01f7, 0x0211, 0x0228, 0x023e, 0x023e, - // Entry B80 - BBF - 0x0250, 0x0263, 0x0275, 0x0288, 0x029a, 0x02ad, 0x02c7, 0x02e1, - 0x02e1, 0x02f3, 0x0306, 0x0319, 0x0319, 0x032b, 0x033e, 0x0351, - 0x0364, 0x0378, 0x038b, 0x039f, 0x03b3, 0x03c6, 0x03da, 0x03ed, - 0x0401, 0x0415, 0x0429, 0x043e, 0x0452, 0x0467, 0x047b, 0x048e, - 0x04a2, 0x04b5, 0x04c9, 0x04dc, 0x04f1, 0x0504, 0x0518, 0x052b, - 0x053f, 0x0552, 0x0565, 0x0578, 0x058c, 0x059f, 0x05b3, 0x05c8, - 0x05db, 0x05ef, 0x0603, 0x0616, 0x0629, 0x063e, 0x023e, 0x0255, - 0x026c, 0x0282, 0x0299, 0x02af, 0x02c6, 0x02e4, 0x0303, 0x0303, - // Entry BC0 - BFF - 0x0319, 0x0330, 0x0347, 0x0347, 0x035d, 0x0374, 0x038b, 0x03a0, - 0x03b9, 0x03cc, 0x03cc, 0x03e5, 0x03fe, 0x0419, 0x0431, 0x0460, - 0x047f, 0x04a2, 0x04c2, 0x04de, 0x0501, 0x051d, 0x0538, 0x0553, - 0x056e, 0x058c, 0x05ab, 0x01ab, 0x01bf, 0x01d2, 0x01e5, 0x01fa, - 0x020e, 0x0222, 0x0235, 0x024a, 0x025f, 0x0273, 0x0287, 0x02a3, - 0x02c0, 0x02de, 0x02f9, 0x031a, 0x033a, 0x0357, 0x037a, 0x038d, - 0x03a7, 0x03c0, 0x03da, 0x03f3, 0x040d, 0x0426, 0x0026, 0x003d, - 0x0053, 0x0053, 0x0068, 0x007e, 0x0094, 0x00ab, 0x00c0, 0x00d6, - // Entry C00 - C3F - 0x00eb, 0x0101, 0x0118, 0x0130, 0x0147, 0x015f, 0x0174, 0x018a, - 0x01a0, 0x01b5, 0x01cb, 0x01e1, 0x01e1, 0x0202, 0x0224, 0x0245, - 0x0267, 0x0288, 0x02a6, 0x02c7, 0x02e9, 0x030a, 0x032c, 0x034d, - 0x0378, 0x0396, 0x03b8, 0x03db, 0x03fd, 0x0420, 0x0440, 0x045f, - 0x0480, 0x04a2, 0x04c3, 0x04e5, 0x0503, 0x0103, 0x0121, 0x0142, - 0x0164, 0x0185, 0x01a7, 0x01bd, 0x01d8, 0x01ee, 0x0204, 0x0204, - 0x0222, 0x0222, 0x0238, 0x0256, 0x0276, 0x0294, 0x02aa, 0x02ca, - 0x02e0, 0x02e0, 0x02f6, 0x02f6, 0x0313, 0x0336, 0x0358, 0x0379, - // Entry C40 - C7F - 0x0399, 0x03bb, 0x03bb, 0x03dc, 0x03dc, 0x03fb, 0x0415, 0x0434, - 0x0451, 0x047a, 0x04a8, 0x04d2, 0x04f0, 0x00f0, 0x0107, 0x011d, - 0x0133, 0x014b, 0x0162, 0x0179, 0x018f, 0x01a7, 0x01bf, 0x01d6, - 0x01d6, 0x01fa, 0x021d, 0x023b, 0x023b, 0x0250, 0x0267, 0x027f, - 0x0297, 0x02ae, 0x02c8, 0x02de, 0x02f5, 0x030d, 0x0325, 0x0339, - 0x0350, 0x0366, 0x037d, 0x0394, 0x03ab, 0x03c8, 0x03e2, 0x03f7, - 0x040c, 0x0421, 0x0439, 0x0452, 0x046a, 0x047e, 0x0496, 0x04ab, - 0x04c3, 0x04d7, 0x04ee, 0x0503, 0x051d, 0x0531, 0x0546, 0x055b, - // Entry C80 - CBF - 0x056c, 0x0582, 0x0593, 0x05a9, 0x05bf, 0x05d5, 0x05ea, 0x05ff, - 0x0616, 0x062a, 0x0642, 0x065a, 0x066f, 0x068a, 0x06a0, 0x06b6, - 0x06cb, 0x06e1, 0x06f7, 0x070e, 0x0723, 0x0739, 0x074f, 0x034f, - 0x0368, 0x037d, 0x0393, 0x03a8, 0x03c6, 0x03e5, 0x03ff, 0x0416, - 0x042e, 0x0443, 0x0459, 0x046f, 0x048a, 0x04a4, 0x04bb, 0x04d2, - 0x04e8, 0x04f7, 0x0505, 0x0513, 0x0523, 0x0532, 0x0541, 0x054f, - 0x055f, 0x056f, 0x057e, 0x0597, 0x05ac, 0x01ac, 0x01b9, 0x01cc, - 0x01cc, 0x01de, 0x01de, 0x01ec, 0x01f9, 0x01f9, 0x020a, 0x020a, - // Entry CC0 - CFF - 0x0218, 0x0218, 0x0225, 0x0232, 0x0245, 0x0257, 0x0257, 0x0264, - 0x0271, 0x027e, 0x0291, 0x02a2, 0x02b4, 0x02c6, 0x02c6, 0x02d3, - 0x02e0, 0x02f2, 0x02f2, 0x0304, 0x0304, 0x0311, 0x0311, 0x0323, - 0x0335, 0x0335, 0x0341, 0x0352, 0x035e, 0x036e, 0x0384, 0x0395, - 0x03a6, 0x03b6, 0x03c7, 0x03d7, 0x03e8, 0x03f8, 0x0409, 0x0009, - 0x001f, 0x0034, 0x004a, 0x004a, 0x005a, 0x006b, 0x007b, 0x008c, - 0x009d, 0x009d, 0x00a6, 0x00a6, 0x00b5, 0x00c5, 0x00d4, 0x00e7, - 0x00fc, 0x0109, 0x0109, 0x0117, 0x0124, 0x0131, 0x0140, 0x014e, - // Entry D00 - D3F - 0x015c, 0x0169, 0x0178, 0x0187, 0x0195, 0x0195, 0x019e, 0x01a7, - 0x01b9, 0x01cc, 0x01cc, 0x01df, 0x0204, 0x022e, 0x0259, 0x027d, - 0x02a1, 0x02c8, 0x02ea, 0x0301, 0x031b, 0x0339, 0x0359, 0x037b, - 0x038c, 0x03a2, 0x03b9, 0x03d5, 0x03f6, 0x0411, 0x043b, 0x0452, - 0x0472, 0x0492, 0x04c1, 0x04e4, 0x050a, 0x0525, 0x0541, 0x055c, - 0x0576, 0x0591, 0x05b0, 0x05c2, 0x05d3, 0x05e4, 0x05f7, 0x0609, - 0x061b, 0x062c, 0x063f, 0x0652, 0x0664, 0x067a, 0x0690, 0x06a8, - 0x06bf, 0x06d6, 0x06ec, 0x0704, 0x071c, 0x0733, 0x074a, 0x0762, - // Entry D40 - D7F - 0x0781, 0x07ac, 0x07ce, 0x07e2, 0x07f8, 0x0813, 0x082e, 0x0849, - 0x0864, 0x087a, 0x0890, 0x08a1, 0x08b3, 0x08c4, 0x08d6, 0x08e8, - 0x08f9, 0x090b, 0x091c, 0x011c, 0x012e, 0x0140, 0x0153, 0x0165, - 0x0178, 0x018a, 0x019b, 0x01ad, 0x01be, 0x01d0, 0x01e1, 0x01f2, - 0x0204, 0x0215, 0x0227, 0x0238, 0x024a, 0x025d, 0x026f, 0x0282, - 0x0293, 0x02a5, 0x02b6, 0x02c7, 0x02d8, 0x02e9, 0x02fa, 0x030c, - 0x031e, 0x032f, 0x0340, 0x0350, 0x0363, 0x037f, 0x0391, 0x03a3, - 0x03a3, 0x03b8, 0x03cc, 0x03e1, 0x03f5, 0x040a, 0x0426, 0x0443, - // Entry D80 - DBF - 0x045f, 0x047c, 0x0490, 0x04a5, 0x04b9, 0x04ce, 0x04e9, 0x04ff, - 0x051c, 0x053a, 0x0555, 0x056a, 0x057e, 0x0591, 0x05a7, 0x05be, - 0x05d6, 0x05eb, 0x0607, 0x0623, 0x0641, 0x0663, 0x0682, 0x06aa, - 0x06c5, 0x06e1, 0x06fc, 0x0718, 0x0734, 0x074f, 0x076b, 0x0786, - 0x0386, 0x03a2, 0x03be, 0x03db, 0x03f7, 0x0414, 0x0430, 0x044b, - 0x0467, 0x0482, 0x049e, 0x04b9, 0x04d4, 0x04f0, 0x050b, 0x0527, - 0x0542, 0x055e, 0x057b, 0x0597, 0x05b4, 0x05cf, 0x05eb, 0x0606, - 0x0621, 0x063c, 0x0657, 0x0672, 0x068e, 0x06aa, 0x06c5, 0x06e0, - // Entry DC0 - DFF - 0x06fa, 0x0717, 0x073d, 0x0763, 0x0789, 0x0389, 0x039a, 0x03b8, - 0x03dc, 0x0400, 0x0423, 0x0447, 0x045d, 0x0473, 0x048c, 0x04ac, - 0x04c2, 0x04d7, 0x04f8, 0x0519, 0x053a, 0x013a, 0x0159, 0x0173, - 0x0197, 0x01ba, 0x01d1, 0x0201, 0x0231, 0x0249, 0x0260, 0x0282, - 0x02a3, 0x02c3, 0x02e4, 0x02e4, 0x02f5, 0x0307, 0x0318, 0x032a, - 0x033c, 0x034d, 0x035f, 0x0370, 0x0382, 0x0394, 0x03a7, 0x03b9, - 0x03cc, 0x03de, 0x03f1, 0x0403, 0x0414, 0x0426, 0x0437, 0x0449, - 0x045a, 0x046b, 0x047d, 0x048e, 0x04a0, 0x04b1, 0x04c2, 0x04d3, - // Entry E00 - E3F - 0x04e4, 0x04f5, 0x0506, 0x0517, 0x0529, 0x0539, 0x054e, 0x055e, - 0x056f, 0x057f, 0x0590, 0x05a0, 0x05b4, 0x05c4, 0x05d5, 0x05ef, - 0x0604, 0x0618, 0x062d, 0x0641, 0x0656, 0x066a, 0x067f, 0x0698, - 0x06b0, 0x06ca, 0x06df, 0x06f5, 0x0709, 0x071c, 0x072d, 0x074d, - 0x076d, 0x078d, 0x07ad, 0x07c4, 0x07d6, 0x07e7, 0x07f8, 0x080b, - 0x081d, 0x082f, 0x0840, 0x0853, 0x0866, 0x0878, 0x0893, 0x08a7, - 0x08be, 0x08d6, 0x08f3, 0x090a, 0x091c, 0x092e, 0x0946, 0x095f, - 0x0977, 0x0990, 0x09ac, 0x09c9, 0x09e5, 0x0a02, 0x0a18, 0x0a2e, - // Entry E40 - E7F - 0x0a44, 0x0a5a, 0x0a7e, 0x0aa2, 0x0ac6, 0x0ae3, 0x0b03, 0x0b25, - 0x0b48, 0x0b6c, 0x0b90, 0x0bb7, 0x0bde, 0x0c03, 0x0c28, 0x0c4d, - 0x0c72, 0x0c97, 0x0cbb, 0x0cdf, 0x0d04, 0x0d23, 0x0d3e, 0x0d58, - 0x0d73, 0x0d89, 0x0da0, 0x0db6, 0x0dcc, 0x0de2, 0x0df9, 0x0e0f, - 0x0e25, 0x0e3c, 0x0e52, 0x0e68, 0x0e7f, 0x0e95, 0x0eba, 0x0ed4, - 0x0eed, 0x0f0c, 0x0f2b, 0x0f43, 0x0f5b, 0x0f73, 0x0f8b, 0x0fab, - 0x0fcb, 0x0ff2, 0x1011, 0x1032, 0x1049, 0x105f, 0x1075, 0x108d, - 0x10a4, 0x10bb, 0x10d1, 0x10e9, 0x1101, 0x1118, 0x1132, 0x114c, - // Entry E80 - EBF - 0x1166, 0x1181, 0x1198, 0x11b7, 0x11d1, 0x11ec, 0x1207, 0x1222, - 0x123c, 0x1257, 0x1272, 0x128d, 0x12a7, 0x12c2, 0x12dd, 0x12f8, - 0x1313, 0x132d, 0x1348, 0x1364, 0x137f, 0x139a, 0x13b5, 0x13cf, - 0x13eb, 0x1407, 0x1423, 0x143e, 0x145a, 0x1476, 0x1491, 0x14ac, - 0x14c7, 0x14e3, 0x14fe, 0x151a, 0x1535, 0x154f, 0x156a, 0x1584, - 0x159f, 0x15ba, 0x01ba, 0x01d4, 0x01d4, 0x01ef, 0x01ef, 0x0201, - 0x0214, 0x0227, 0x023a, 0x024c, 0x025f, 0x0272, 0x0285, 0x0297, - 0x02aa, 0x02bd, 0x02d0, 0x02e3, 0x02f5, 0x0308, 0x031c, 0x032f, - // Entry EC0 - EFF - 0x0342, 0x0355, 0x0367, 0x037b, 0x038f, 0x03a3, 0x03b6, 0x03ca, - 0x03de, 0x03f1, 0x0404, 0x0417, 0x042b, 0x043e, 0x0452, 0x0465, - 0x0477, 0x048a, 0x049c, 0x04af, 0x04c2, 0x04d4, 0x04e6, 0x04fb, - 0x0515, 0x0528, 0x0544, 0x0560, 0x0573, 0x058c, 0x05a7, 0x05bd, - 0x05d8, 0x05ed, 0x0603, 0x061e, 0x0633, 0x0648, 0x065d, 0x0677, - 0x068b, 0x06a4, 0x06b9, 0x06ce, 0x06e8, 0x06ff, 0x0716, 0x072d, - 0x0744, 0x0759, 0x0775, 0x078f, 0x07ab, 0x07c6, 0x07e3, 0x07fe, - 0x0818, 0x0833, 0x0850, 0x086b, 0x0888, 0x08a4, 0x08bf, 0x08db, - // Entry F00 - F3F - 0x08f5, 0x0916, 0x0937, 0x0957, 0x0976, 0x0996, 0x09b1, 0x09ce, - 0x09eb, 0x0a08, 0x0a25, 0x0a47, 0x0a62, 0x0a7c, 0x0a97, 0x0ab1, - 0x0acb, 0x0ae5, 0x0b06, 0x0b24, 0x0b3e, 0x0b58, 0x0b74, 0x0b90, - 0x0bac, 0x0bc8, 0x0be2, 0x0bfe, 0x0c1f, 0x0c3e, 0x0c62, 0x0c79, - 0x0c95, 0x0cb1, 0x0ccc, 0x0ce7, 0x0d01, 0x0d1e, 0x0d38, 0x0d53, - 0x0d70, 0x0d8d, 0x0daa, 0x0dc2, 0x0ddd, 0x0dfa, 0x0e1c, 0x0e3c, - 0x0e61, 0x0e80, 0x0e9d, 0x0ebc, 0x0ede, 0x0efb, 0x0f1a, 0x0f34, - 0x0f4f, 0x0f6c, 0x0f86, 0x0fa1, 0x0fbc, 0x0fd8, 0x0fee, 0x1005, - // Entry F40 - F7F - 0x1017, 0x102a, 0x103d, 0x1051, 0x1064, 0x1076, 0x108a, 0x109d, - 0x10af, 0x10c2, 0x10d6, 0x10e9, 0x10fc, 0x110e, 0x1122, 0x1135, - 0x1148, 0x115b, 0x116e, 0x1181, 0x1193, 0x11a7, 0x11bb, 0x11d0, - 0x11e6, 0x11fb, 0x1210, 0x1226, 0x123c, 0x1252, 0x1267, 0x127b, - 0x1290, 0x12a4, 0x12b8, 0x12ce, 0x12e5, 0x12fc, 0x1311, 0x1326, - 0x133a, 0x134f, 0x1367, 0x137c, 0x1390, 0x13a5, 0x13bb, 0x13d0, - 0x13e7, 0x13fd, 0x1412, 0x1427, 0x143c, 0x1452, 0x1467, 0x147b, - 0x1490, 0x14a4, 0x14b8, 0x14cd, 0x14e5, 0x14fb, 0x1514, 0x152c, - // Entry F80 - FBF - 0x1544, 0x155f, 0x1574, 0x1589, 0x15a0, 0x15b5, 0x15cb, 0x15e2, - 0x15fe, 0x161a, 0x1630, 0x164c, 0x1668, 0x167f, 0x1695, 0x16b2, - 0x16ce, 0x16ea, 0x1705, 0x1723, 0x1741, 0x175d, 0x1773, 0x1789, - 0x17a4, 0x17b9, 0x17d3, 0x17e9, 0x17ff, 0x1817, 0x182f, 0x1847, - 0x185f, 0x1875, 0x1892, 0x18b5, 0x18d2, 0x18ef, 0x190a, 0x1928, - 0x1946, 0x1964, 0x1981, 0x19a3, 0x19bf, 0x19dc, 0x19ff, 0x1a1a, - 0x1a3d, 0x1a5e, 0x1a7f, 0x1aa1, 0x1ac5, 0x1ae5, 0x1b03, 0x1b21, - 0x1b43, 0x1b60, 0x1b7c, 0x1b98, 0x1bb3, 0x1bd3, 0x1bf1, 0x1c0f, - // Entry FC0 - FFF - 0x1c2b, 0x1c49, 0x1c65, 0x1c83, 0x1c9f, 0x1cbd, 0x1cd9, 0x1cf5, - 0x1d10, 0x1d2b, 0x1d43, 0x1d60, 0x1d82, 0x1d9d, 0x1dbb, 0x1dd4, - 0x1df2, 0x1e13, 0x1e31, 0x1e51, 0x1e6d, 0x1e89, 0x1ea5, 0x1ec1, - 0x1edd, 0x1efa, 0x1f17, 0x1f36, 0x1f55, 0x1f72, 0x1f8d, 0x1fa1, - 0x1fb5, 0x1fc9, 0x1fde, 0x1ff3, 0x2007, 0x201b, 0x2030, 0x2044, - 0x2058, 0x206c, 0x2081, 0x2096, 0x20aa, 0x20be, 0x20d3, 0x20e8, - 0x20fd, 0x2112, 0x2128, 0x213e, 0x2153, 0x2168, 0x217e, 0x2192, - 0x21a6, 0x21ba, 0x21cf, 0x21e4, 0x21f8, 0x220c, 0x2221, 0x2236, - // Entry 1000 - 103F - 0x224b, 0x2260, 0x2276, 0x228c, 0x22a1, 0x22b6, 0x22cc, 0x22e0, - 0x22f4, 0x2308, 0x231d, 0x2332, 0x2346, 0x235a, 0x236f, 0x2383, - 0x2397, 0x23ab, 0x23c0, 0x23d5, 0x23e9, 0x23fd, 0x2412, 0x2427, - 0x243c, 0x2451, 0x2467, 0x247d, 0x2492, 0x24a7, 0x24bd, 0x24d1, - 0x24e5, 0x24f9, 0x250e, 0x2523, 0x2537, 0x254b, 0x2560, 0x2575, - 0x0175, 0x018a, 0x01a0, 0x01b6, 0x01cb, 0x01cb, 0x01e0, 0x01f5, - 0x020a, 0x0220, 0x0236, 0x024b, 0x0260, 0x0260, 0x0276, 0x0276, - 0x028c, 0x02a3, 0x02ba, 0x02d0, 0x02d0, 0x02e4, 0x02f8, 0x030c, - // Entry 1040 - 107F - 0x0321, 0x0336, 0x034a, 0x035e, 0x0373, 0x0387, 0x039b, 0x03af, - 0x03c4, 0x03d9, 0x03ed, 0x0401, 0x0416, 0x042a, 0x043e, 0x0452, - 0x0467, 0x047c, 0x0490, 0x04a4, 0x04b9, 0x04cd, 0x04e1, 0x04f5, - 0x050a, 0x051f, 0x0533, 0x0547, 0x055c, 0x0570, 0x0584, 0x0598, - 0x05ad, 0x05c2, 0x05d6, 0x05ea, 0x05ff, 0x0614, 0x0214, 0x0229, - 0x023f, 0x0255, 0x026a, 0x026a, 0x027e, 0x0292, 0x02a6, 0x02bb, - 0x02d0, 0x02e4, 0x02f8, 0x030d, 0x0322, 0x0337, 0x034c, 0x0362, - 0x0378, 0x038d, 0x03a2, 0x03b8, 0x03d3, 0x03ee, 0x0409, 0x0425, - // Entry 1080 - 10BF - 0x0441, 0x045c, 0x0477, 0x0493, 0x04a7, 0x04bb, 0x04cf, 0x04e4, - 0x04f9, 0x050d, 0x0521, 0x0536, 0x054b, 0x014b, 0x0160, 0x0176, - 0x018c, 0x01a1, 0x01a1, 0x01b6, 0x01cb, 0x01e0, 0x01f6, 0x020c, - 0x0221, 0x0236, 0x0236, 0x024c, 0x024c, 0x0262, 0x0279, 0x0290, - 0x02a6, 0x02a6, 0x02ba, 0x02ce, 0x02e2, 0x02f7, 0x030c, 0x0320, - 0x0334, 0x0349, 0x0367, 0x0385, 0x03a3, 0x03c2, 0x03e1, 0x03ff, - 0x041d, 0x001d, 0x0031, 0x0045, 0x0059, 0x006e, 0x0083, 0x0097, - 0x00ab, 0x00c0, 0x00d5, 0x00ea, 0x00ff, 0x0115, 0x012b, 0x0140, - // Entry 10C0 - 10FF - 0x0155, 0x016b, 0x017f, 0x0193, 0x01a7, 0x01bc, 0x01d1, 0x01e5, - 0x01f9, 0x020e, 0x0222, 0x0236, 0x024a, 0x025f, 0x0274, 0x0288, - 0x029c, 0x02b1, 0x02c6, 0x02db, 0x02f0, 0x0306, 0x031c, 0x0331, - 0x0346, 0x035c, 0x0370, 0x0384, 0x0398, 0x03ad, 0x03c2, 0x03d6, - 0x03ea, 0x03ff, 0x0413, 0x0427, 0x043b, 0x0450, 0x0465, 0x0479, - 0x048d, 0x04a2, 0x04b7, 0x00b7, 0x00cc, 0x00e2, 0x00f8, 0x010d, - 0x010d, 0x0122, 0x0137, 0x014c, 0x0162, 0x0178, 0x018d, 0x01a2, - 0x01b9, 0x01ce, 0x01e3, 0x01f8, 0x020e, 0x0224, 0x0239, 0x024e, - // Entry 1100 - 113F - 0x0264, 0x0279, 0x028e, 0x02a3, 0x02b9, 0x02cf, 0x02e4, 0x02f9, - 0x030f, 0x0324, 0x0339, 0x034e, 0x0364, 0x037a, 0x038f, 0x03a4, - 0x03ba, 0x03cf, 0x03e4, 0x03f9, 0x040f, 0x0425, 0x043a, 0x044f, - 0x0465, 0x047a, 0x048f, 0x04a4, 0x04ba, 0x04d0, 0x04e5, 0x04fa, - 0x0510, 0x0524, 0x0538, 0x054c, 0x0561, 0x0576, 0x058a, 0x059e, - 0x05b3, 0x05c7, 0x05db, 0x05ef, 0x0604, 0x0619, 0x062d, 0x0641, - 0x0656, 0x066b, 0x0680, 0x0695, 0x0295, 0x02c8, 0x02ec, 0x030e, - 0x0323, 0x0335, 0x0347, 0x0355, 0x0367, 0x0375, 0x038b, 0x03a1, - // Entry 1140 - 117F - 0x03bd, 0x03cf, 0x03e1, 0x03f5, 0x0408, 0x041b, 0x042d, 0x0441, - 0x0455, 0x0468, 0x047b, 0x0491, 0x04a7, 0x04bc, 0x04d1, 0x04e6, - 0x04fd, 0x0513, 0x0529, 0x0540, 0x055c, 0x015c, 0x017b, 0x0190, - 0x01a6, 0x01bb, 0x01da, 0x01ef, 0x0205, 0x021a, 0x0239, 0x024e, - 0x0264, 0x0279, 0x0298, 0x02ad, 0x02c3, 0x02d8, 0x02f1, 0x030a, - 0x0324, 0x0344, 0x035d, 0x0376, 0x0390, 0x03a9, 0x03c8, 0x03e0, - 0x03e0, 0x03f1, 0x0402, 0x0413, 0x0424, 0x0435, 0x0446, 0x0458, - 0x046a, 0x047c, 0x048e, 0x04a0, 0x04b2, 0x04c4, 0x04d6, 0x04e8, - // Entry 1180 - 11BF - 0x04fa, 0x050c, 0x051e, 0x0530, 0x0542, 0x0554, 0x0566, 0x0578, - 0x058a, 0x059c, 0x05ae, 0x05c0, 0x05d2, 0x05e4, 0x05f6, 0x0608, - 0x061b, 0x062e, 0x0640, 0x0652, 0x0664, 0x0676, 0x0688, 0x069b, - 0x06ae, 0x06c1, 0x06d4, 0x06e7, 0x06fa, 0x070c, 0x071d, 0x072f, - 0x0741, 0x0753, 0x0765, 0x0777, 0x0789, 0x079b, 0x07ad, 0x07bf, - 0x07d1, 0x07e3, 0x07f5, 0x0807, 0x0819, 0x082c, 0x083f, 0x0852, - 0x0865, 0x0878, 0x088b, 0x089e, 0x08b1, 0x08c4, 0x08d7, 0x08ea, - 0x08fd, 0x0910, 0x0922, 0x0934, 0x0946, 0x0958, 0x096a, 0x097c, - // Entry 11C0 - 11FF - 0x098e, 0x09a0, 0x09b2, 0x09c4, 0x09d6, 0x09e8, 0x09fa, 0x01fa, - 0x0212, 0x022a, 0x0242, 0x025a, 0x0272, 0x028a, 0x028a, 0x02a3, - 0x02b7, 0x02cd, 0x02e1, 0x02f6, 0x030a, 0x031f, 0x033b, 0x0358, - 0x0374, 0x0388, 0x039d, 0x03b2, 0x03d1, 0x03e6, 0x0405, 0x041b, - 0x043b, 0x0450, 0x046f, 0x0485, 0x04a5, 0x04c3, 0x04d8, 0x04f7, - 0x050d, 0x052d, 0x054b, 0x0560, 0x057b, 0x059a, 0x05b8, 0x05d6, - 0x05ff, 0x0625, 0x064d, 0x066a, 0x068f, 0x06c5, 0x06e8, 0x0718, - 0x0735, 0x0757, 0x076c, 0x0781, 0x0796, 0x07ab, 0x07c0, 0x07d7, - // Entry 1200 - 123F - 0x07ec, 0x0802, 0x0817, 0x082d, 0x084a, 0x0868, 0x0885, 0x089a, - 0x08b0, 0x08c6, 0x08e6, 0x08fc, 0x091c, 0x0933, 0x0954, 0x096a, - 0x098a, 0x09a1, 0x09c2, 0x09d8, 0x09f8, 0x0a0f, 0x0a30, 0x0a4e, - 0x0a62, 0x0a80, 0x0a9c, 0x0ab1, 0x0ac8, 0x0add, 0x0af3, 0x0b08, - 0x0b1e, 0x0b3b, 0x0b59, 0x0b76, 0x0b8b, 0x0ba1, 0x0bb7, 0x0bd7, - 0x0bed, 0x0c0d, 0x0c24, 0x0c45, 0x0c5b, 0x0c7b, 0x0c92, 0x0cb3, - 0x0cc9, 0x0ce9, 0x0d00, 0x0d21, 0x0d40, 0x0d54, 0x0d6a, 0x0d80, - 0x0d96, 0x0dac, 0x0dc1, 0x0dd8, 0x0ded, 0x0e03, 0x0e18, 0x0e2e, - // Entry 1240 - 127F - 0x0e4b, 0x0e60, 0x0e76, 0x0e8c, 0x0eac, 0x0ec2, 0x0ee2, 0x0ef9, - 0x0f1a, 0x0f30, 0x0f50, 0x0f67, 0x0f88, 0x0f9e, 0x0fbe, 0x0fd5, - 0x0ff6, 0x1015, 0x1029, 0x103e, 0x1061, 0x1084, 0x10a7, 0x10ca, - 0x10df, 0x10f6, 0x110b, 0x1121, 0x1136, 0x114c, 0x1169, 0x117e, - 0x1194, 0x11aa, 0x11ca, 0x11e0, 0x1200, 0x1217, 0x1238, 0x124e, - 0x126e, 0x1285, 0x12a6, 0x12bc, 0x12dc, 0x12f3, 0x1314, 0x1333, - 0x1347, 0x1363, 0x1378, 0x138f, 0x13a4, 0x13ba, 0x13cf, 0x13e5, - 0x1402, 0x1417, 0x142d, 0x1443, 0x1463, 0x1479, 0x1499, 0x14b0, - // Entry 1280 - 12BF - 0x14d1, 0x14e7, 0x1507, 0x151e, 0x153f, 0x1555, 0x1575, 0x158c, - 0x15ad, 0x15cc, 0x15e0, 0x15fe, 0x1613, 0x1632, 0x164d, 0x1662, - 0x1679, 0x168e, 0x16a4, 0x16b9, 0x16cf, 0x16ec, 0x1701, 0x1717, - 0x172d, 0x174d, 0x1763, 0x1783, 0x179a, 0x17bb, 0x17da, 0x17ee, - 0x180b, 0x1820, 0x1835, 0x184c, 0x1861, 0x1877, 0x188c, 0x18a2, - 0x18bf, 0x18d4, 0x18ea, 0x1900, 0x1920, 0x1936, 0x1956, 0x196d, - 0x198e, 0x19a4, 0x19c4, 0x19db, 0x19fc, 0x1a12, 0x1a32, 0x1a49, - 0x1a6a, 0x1a7e, 0x1a9c, 0x1ab7, 0x1acc, 0x1ae3, 0x1af8, 0x1b0e, - // Entry 12C0 - 12FF - 0x1b23, 0x1b39, 0x1b56, 0x1b6b, 0x1b81, 0x1b97, 0x1bb7, 0x1bcd, - 0x1bed, 0x1c04, 0x1c25, 0x1c3b, 0x1c5b, 0x1c72, 0x1c93, 0x1ca9, - 0x1cc9, 0x1ce0, 0x1d01, 0x1d20, 0x1d34, 0x1d53, 0x1d68, 0x1d86, - 0x1da6, 0x1dc4, 0x1de2, 0x1e01, 0x1e20, 0x1e3f, 0x1e5e, 0x1e74, - 0x1e8a, 0x1ea1, 0x1eb7, 0x1ece, 0x1ee4, 0x1efb, 0x1f12, 0x1f33, - 0x1f4a, 0x1f6b, 0x1f83, 0x1fa5, 0x1fbc, 0x1fdd, 0x1ff5, 0x2017, - 0x202e, 0x204f, 0x2067, 0x2089, 0x209e, 0x20b3, 0x20ca, 0x20df, - 0x20f5, 0x210a, 0x2120, 0x213d, 0x2152, 0x2168, 0x217e, 0x219e, - // Entry 1300 - 133F - 0x21b4, 0x21d4, 0x21eb, 0x220c, 0x2222, 0x2242, 0x2259, 0x227a, - 0x2290, 0x22b0, 0x22c7, 0x22e8, 0x2307, 0x231b, 0x233a, 0x2358, - 0x2374, 0x2389, 0x23a5, 0x23c4, 0x23db, 0x23f0, 0x2406, 0x241b, - 0x2431, 0x2450, 0x2465, 0x247b, 0x249a, 0x24b1, 0x24d2, 0x24e6, - 0x2504, 0x251f, 0x2534, 0x254b, 0x2560, 0x2576, 0x258b, 0x25a1, - 0x25b6, 0x25cc, 0x25e3, 0x2604, 0x2618, 0x262e, 0x264b, 0x2661, - 0x267e, 0x2695, 0x26b3, 0x26c9, 0x26e0, 0x26f6, 0x270d, 0x2725, - 0x2747, 0x275c, 0x2773, 0x278a, 0x27a1, 0x27b8, 0x27ce, 0x27e4, - // Entry 1340 - 137F - 0x27fa, 0x2810, 0x2826, 0x2843, 0x2860, 0x287e, 0x289b, 0x28b9, - 0x28d6, 0x28f4, 0x2910, 0x292c, 0x2941, 0x2958, 0x296d, 0x2983, - 0x2998, 0x29ae, 0x29c3, 0x29d9, 0x29ed, 0x2a04, 0x2a1b, 0x2a32, - 0x2a49, 0x2a68, 0x2a87, 0x2aa6, 0x2ac5, 0x2add, 0x2af3, 0x2b0a, - 0x2b20, 0x2b37, 0x2b4d, 0x2b64, 0x2b79, 0x2b8f, 0x2bac, 0x2bc9, - 0x2be6, 0x2c03, 0x2c24, 0x2c45, 0x2c66, 0x2c87, 0x2ca7, 0x2cbd, - 0x2cd4, 0x2cea, 0x2d01, 0x2d17, 0x2d2e, 0x2d43, 0x2d61, 0x2d7f, - 0x2d9e, 0x2dbc, 0x2ddb, 0x2df9, 0x2e18, 0x2e35, 0x2e51, 0x2e6f, - // Entry 1380 - 13BF - 0x2e8d, 0x2eab, 0x2ec9, 0x2ee8, 0x2f07, 0x2f26, 0x2f45, 0x2f64, - 0x2f83, 0x2fa2, 0x2fc1, 0x2fe0, 0x2fff, 0x301e, 0x303d, 0x3059, - 0x3075, 0x3091, 0x30ad, 0x30cb, 0x30e9, 0x3107, 0x3126, 0x3144, - 0x3162, 0x317f, 0x319c, 0x31b9, 0x31d7, 0x31f4, 0x3211, 0x322e, - 0x324b, 0x3268, 0x3286, 0x32a3, 0x32c0, 0x32de, 0x32fc, 0x331a, - 0x3339, 0x3357, 0x3375, 0x3393, 0x33b1, 0x33cf, 0x33ee, 0x340c, - 0x342a, 0x3448, 0x3466, 0x3484, 0x34a3, 0x34c1, 0x34df, 0x34fc, - 0x3519, 0x3536, 0x3554, 0x3571, 0x358e, 0x35aa, 0x35c7, 0x35e4, - // Entry 13C0 - 13FF - 0x3601, 0x361f, 0x363c, 0x3659, 0x3677, 0x3695, 0x36b3, 0x36d2, - 0x36f0, 0x370e, 0x372c, 0x374a, 0x3768, 0x3787, 0x37a5, 0x37c3, - 0x37e0, 0x37fd, 0x381a, 0x3837, 0x3855, 0x3872, 0x388f, 0x38ac, - 0x38c9, 0x38e6, 0x3904, 0x3921, 0x393e, 0x395b, 0x3978, 0x3995, - 0x39b3, 0x39d0, 0x39ed, 0x3a0a, 0x3a26, 0x3a43, 0x3a60, 0x3a7e, - 0x3a9b, 0x3ab7, 0x3ad4, 0x3af2, 0x3b10, 0x3b2e, 0x3b4d, 0x3b6b, - 0x3b89, 0x3ba6, 0x3bc3, 0x3be0, 0x3bfe, 0x3c1b, 0x3c38, 0x3c56, - 0x3c74, 0x3c92, 0x3cb1, 0x3ccf, 0x3ced, 0x3d0b, 0x3d29, 0x3d47, - // Entry 1400 - 143F - 0x3d66, 0x3d84, 0x3da2, 0x3dc1, 0x3de0, 0x3dff, 0x3e1f, 0x3e3e, - 0x3e5d, 0x3e7b, 0x3e99, 0x3eb7, 0x3ed6, 0x3ef4, 0x3f12, 0x3f2f, - 0x3f4c, 0x3f69, 0x3f87, 0x3fa4, 0x3fc1, 0x3fdd, 0x4001, 0x401f, - 0x403d, 0x405b, 0x407a, 0x4098, 0x40b6, 0x40d3, 0x40f0, 0x410d, - 0x412b, 0x4148, 0x4165, 0x4183, 0x41a1, 0x41bf, 0x41de, 0x41fc, - 0x421a, 0x4237, 0x4255, 0x4273, 0x4291, 0x42b0, 0x42ce, 0x42ec, - 0x430a, 0x4328, 0x4346, 0x4365, 0x4383, 0x43a1, 0x43c0, 0x43df, - 0x43fe, 0x441e, 0x443d, 0x445c, 0x4477, 0x4493, 0x44a9, 0x44c0, - // Entry 1440 - 147F - 0x44d7, 0x44ef, 0x4506, 0x451e, 0x4535, 0x454d, 0x4570, 0x4592, - 0x45b5, 0x45d7, 0x45fa, 0x461c, 0x463f, 0x4665, 0x4683, 0x4693, - 0x46a5, 0x46b6, 0x46c8, 0x46d9, 0x46ea, 0x46fb, 0x470c, 0x471e, - 0x472f, 0x4741, 0x4752, 0x4763, 0x4777, 0x478a, 0x479b, 0x47ac, - 0x47bc, 0x47cb, 0x47df, 0x47f3, 0x4807, 0x4816, 0x482b, 0x483c, - 0x4854, 0x4866, 0x4878, 0x4893, 0x0093, 0x00ae, 0x00bc, 0x00d2, - 0x00e1, 0x00ef, 0x00fd, 0x011e, 0x012e, 0x0142, 0x0153, 0x0164, - 0x0175, 0x0193, 0x01b0, 0x01be, 0x01cd, 0x01dc, 0x01f9, 0x020b, - // Entry 1480 - 14BF - 0x021b, 0x022e, 0x023c, 0x024c, 0x0264, 0x0274, 0x028d, 0x02a2, - 0x02b6, 0x02d7, 0x02f7, 0x0315, 0x0333, 0x0348, 0x0362, 0x0370, - 0x0384, 0x0394, 0x03b2, 0x03ce, 0x03e3, 0x03ff, 0x0417, 0x042c, - 0x0450, 0x046d, 0x047b, 0x0489, 0x04a5, 0x04c2, 0x04d0, 0x04f5, - 0x0516, 0x052b, 0x053e, 0x0555, 0x056e, 0x058d, 0x05ab, 0x05ca, - 0x05df, 0x05f2, 0x0602, 0x061b, 0x0637, 0x0647, 0x0657, 0x066b, - 0x067c, 0x068e, 0x069f, 0x06ba, 0x06d4, 0x06ed, 0x06fb, 0x0709, - 0x0721, 0x073b, 0x0752, 0x0765, 0x077a, 0x078f, 0x079d, 0x07ac, - // Entry 14C0 - 14FF - 0x07bb, 0x07d8, 0x07f5, 0x0812, 0x082f, 0x084e, 0x004e, 0x005e, - 0x006e, 0x007e, 0x008f, 0x00a0, 0x00b2, 0x00c3, 0x00d4, 0x00e5, - 0x00f6, 0x0107, 0x0118, 0x0129, 0x0129, 0x013a, 0x014b, 0x015c, - 0x016d, 0x0181, 0x0195, 0x01a8, 0x01a8, 0x01b8, 0x01c8, 0x01d8, - 0x01e9, 0x01fa, 0x020c, 0x021d, 0x022e, 0x023f, 0x0250, 0x0261, - 0x0272, 0x0283, 0x0294, 0x02a5, 0x02b6, 0x02c7, 0x02d8, 0x02ec, - 0x0300, 0x0315, 0x0332, 0x034f, 0x034f, 0x035d, 0x036b, 0x0379, - 0x0388, 0x0397, 0x03a7, 0x03b6, 0x03c5, 0x03d4, 0x03e3, 0x03f2, - // Entry 1500 - 153F - 0x0401, 0x0410, 0x041f, 0x042e, 0x043d, 0x044c, 0x045b, 0x046d, - 0x047f, 0x007f, 0x0090, 0x00a1, 0x00b2, 0x00c4, 0x00d6, 0x00e9, - 0x00fb, 0x010d, 0x011f, 0x0131, 0x0143, 0x0155, 0x0167, 0x0167, - 0x0179, 0x018b, 0x019d, 0x019d, 0x01b2, 0x01c7, 0x01c7, 0x01d6, - 0x01e6, 0x01f5, 0x0205, 0x0215, 0x0224, 0x0234, 0x0243, 0x0253, - 0x0263, 0x0272, 0x0283, 0x0292, 0x02a3, 0x02b3, 0x02c2, 0x02d2, - 0x02e1, 0x02f1, 0x0300, 0x030f, 0x031f, 0x032e, 0x033e, 0x034d, - 0x035c, 0x036b, 0x037a, 0x0389, 0x0399, 0x03a9, 0x03b8, 0x03c7, - // Entry 1540 - 157F - 0x03d6, 0x03e5, 0x0400, 0x041b, 0x0435, 0x0450, 0x046a, 0x0485, - 0x04a0, 0x04bc, 0x04d6, 0x04f1, 0x050b, 0x0526, 0x0540, 0x055b, - 0x057f, 0x05a3, 0x05be, 0x05d5, 0x05ec, 0x05ff, 0x0611, 0x0624, - 0x0636, 0x0649, 0x065b, 0x066e, 0x0681, 0x0694, 0x06a7, 0x06ba, - 0x06cc, 0x06df, 0x06f2, 0x0705, 0x0718, 0x072a, 0x073c, 0x0754, - 0x076a, 0x077c, 0x078d, 0x079d, 0x07b3, 0x07c5, 0x07d5, 0x07ed, - 0x07fe, 0x080e, 0x0823, 0x0832, 0x0847, 0x0861, 0x0873, 0x0884, - 0x089a, 0x08ac, 0x08c6, 0x08de, 0x08f1, 0x00f1, 0x0101, 0x0110, - // Entry 1580 - 15BF - 0x011f, 0x0130, 0x0140, 0x0150, 0x015f, 0x0170, 0x0181, 0x0191, - 0x0191, 0x01ab, 0x01c6, 0x01e0, 0x01fa, 0x0215, 0x0230, 0x0250, - 0x026f, 0x028e, 0x02ae, 0x02ae, 0x02bd, 0x02cf, 0x02de, 0x02f1, - 0x0300, 0x0313, 0x032d, 0x0354, 0x036a, 0x0384, 0x0394, 0x03b9, - 0x03de, 0x0405, 0x041e, 0x001e, 0x0032, 0x0045, 0x0058, 0x006d, - 0x0081, 0x0095, 0x00a8, 0x00bd, 0x00d2, 0x00e6, 0x00e6, 0x00f8, - 0x010a, 0x011c, 0x012e, 0x0140, 0x0153, 0x0166, 0x0179, 0x018c, - 0x01a0, 0x01b3, 0x01c6, 0x01d9, 0x01ec, 0x01ff, 0x0212, 0x0225, - // Entry 15C0 - 15FF - 0x0239, 0x024c, 0x025f, 0x0273, 0x0286, 0x0299, 0x02ac, 0x02bf, - 0x02d2, 0x02e5, 0x02f9, 0x030d, 0x0320, 0x0334, 0x0348, 0x035c, - 0x0370, 0x0384, 0x03a9, 0x03c0, 0x03d7, 0x03ee, 0x0405, 0x041d, - 0x0435, 0x044e, 0x0466, 0x047e, 0x0496, 0x04ae, 0x04c6, 0x04de, - 0x04f6, 0x050f, 0x0527, 0x0540, 0x0558, 0x0570, 0x0588, 0x05a1, - 0x05ba, 0x05d3, 0x05ec, 0x0605, 0x061c, 0x0633, 0x064b, 0x0663, - 0x067a, 0x0693, 0x06ab, 0x06c3, 0x06db, 0x06f3, 0x070c, 0x0724, - 0x073c, 0x0754, 0x076c, 0x0785, 0x079e, 0x07b7, 0x07cf, 0x07e8, - // Entry 1600 - 163F - 0x0801, 0x081a, 0x0833, 0x084d, 0x0867, 0x0881, 0x089c, 0x009c, - 0x00c2, 0x00e7, 0x0107, 0x0128, 0x0152, 0x0172, 0x0198, 0x01b3, - 0x01ce, 0x01ea, 0x0207, 0x0223, 0x0240, 0x025e, 0x027b, 0x0298, - 0x02b4, 0x02d0, 0x02ec, 0x0309, 0x0326, 0x0343, 0x035f, 0x037b, - 0x039c, 0x03be, 0x03e2, 0x0406, 0x0429, 0x044d, 0x0471, 0x0496, - 0x04b9, 0x04dd, 0x0501, 0x0525, 0x0549, 0x056c, 0x058c, 0x05ad, - 0x05d1, 0x05f2, 0x0616, 0x0216, 0x022b, 0x0240, 0x0256, 0x026c, - 0x0282, 0x0298, 0x02af, 0x02c5, 0x02db, 0x02f2, 0x0308, 0x031e, - // Entry 1640 - 167F - 0x0334, 0x034a, 0x0360, 0x0376, 0x038d, 0x03a4, 0x03bc, 0x03d2, - 0x03e8, 0x03fe, 0x0414, 0x0432, 0x0449, 0x0468, 0x047e, 0x049c, - 0x04b3, 0x04d2, 0x04e9, 0x04ff, 0x0516, 0x052c, 0x0543, 0x0559, - 0x0575, 0x0591, 0x05ad, 0x05c9, 0x05e5, 0x0601, 0x061d, 0x063a, - 0x0656, 0x0672, 0x0695, 0x06b8, 0x06d5, 0x06f5, 0x0715, 0x072c, - 0x0743, 0x075b, 0x0773, 0x078b, 0x07a3, 0x07bb, 0x07d9, 0x07f7, - 0x0814, 0x0832, 0x0855, 0x0873, 0x0891, 0x08ae, 0x08cc, 0x08ec, - 0x090c, 0x092f, 0x012f, 0x0149, 0x0158, 0x0168, 0x0177, 0x0187, - // Entry 1680 - 16BF - 0x0197, 0x01a6, 0x01b6, 0x01c5, 0x01d5, 0x01e5, 0x01f4, 0x0204, - 0x0213, 0x0223, 0x0232, 0x0241, 0x0251, 0x0260, 0x0270, 0x027f, - 0x028e, 0x029d, 0x02ac, 0x02bb, 0x02cb, 0x02db, 0x02ea, 0x02f9, - 0x030a, 0x031a, 0x031a, 0x032c, 0x033e, 0x0350, 0x0363, 0x0376, - 0x0389, 0x039c, 0x03ae, 0x03c0, 0x03d9, 0x03f2, 0x040b, 0x000b, - 0x0020, 0x0036, 0x0051, 0x0066, 0x007b, 0x0090, 0x00a5, 0x00ba, - 0x00cf, 0x00e3, 0x00f7, 0x0106, 0x0106, 0x0114, 0x0114, 0x012a, - 0x013d, 0x014d, 0x015c, 0x016b, 0x017c, 0x018c, 0x019c, 0x01ab, - // Entry 16C0 - 16FF - 0x01bc, 0x01cd, 0x01dd, 0x01ed, 0x01fd, 0x020e, 0x021f, 0x022f, - 0x023f, 0x024f, 0x0260, 0x0270, 0x0280, 0x0291, 0x02a1, 0x02b1, - 0x02c1, 0x02d1, 0x02e1, 0x02f2, 0x0304, 0x0314, 0x0323, 0x0332, - 0x0342, 0x0352, 0x0361, 0x0371, 0x0380, 0x0390, 0x039f, 0x03b0, - 0x03c0, 0x03c0, 0x03d4, 0x03e8, 0x03fc, 0x0410, 0x0424, 0x0024, - 0x003e, 0x0057, 0x0071, 0x008b, 0x00a6, 0x00bf, 0x00d8, 0x00f2, - 0x010d, 0x0127, 0x0141, 0x015b, 0x0174, 0x018d, 0x01a7, 0x01c2, - 0x01dc, 0x01f5, 0x020f, 0x0228, 0x0242, 0x025d, 0x0277, 0x0290, - // Entry 1700 - 173F - 0x02aa, 0x02c3, 0x02dd, 0x02f7, 0x0311, 0x032a, 0x0343, 0x035c, - 0x0376, 0x0390, 0x03aa, 0x03c3, 0x03dc, 0x03f5, 0x0410, 0x042b, - 0x0445, 0x045f, 0x047a, 0x0494, 0x0094, 0x00ba, 0x00d3, 0x00ec, - 0x0104, 0x011d, 0x0135, 0x014e, 0x0166, 0x017f, 0x0198, 0x01b1, - 0x01cb, 0x01e4, 0x01fd, 0x0217, 0x0231, 0x024a, 0x0264, 0x027f, - 0x0299, 0x02b3, 0x02cd, 0x02e7, 0x0301, 0x0318, 0x032f, 0x032f, - 0x0345, 0x035a, 0x036f, 0x0386, 0x039c, 0x03b2, 0x03c7, 0x03de, - 0x03f5, 0x040b, 0x0425, 0x0025, 0x0039, 0x004e, 0x0065, 0x007b, - // Entry 1740 - 177F - 0x0090, 0x00a5, 0x00bb, 0x00d1, 0x00ec, 0x0106, 0x0120, 0x013b, - 0x0150, 0x016a, 0x0183, 0x019c, 0x01b6, 0x01d0, 0x01e6, 0x01fb, - 0x020f, 0x0223, 0x0238, 0x024d, 0x0267, 0x0280, 0x0299, 0x02b3, - 0x02c7, 0x02e0, 0x02f8, 0x0310, 0x0329, 0x0342, 0x0354, 0x0366, - 0x0379, 0x038d, 0x039f, 0x03b1, 0x03c3, 0x03d6, 0x03e8, 0x03fa, - 0x040c, 0x041f, 0x0431, 0x0443, 0x0456, 0x046a, 0x047c, 0x048e, - 0x04a0, 0x04b2, 0x04c4, 0x04d5, 0x04e7, 0x04fc, 0x0511, 0x0526, - 0x053b, 0x0551, 0x0151, 0x0161, 0x0178, 0x018f, 0x01a7, 0x01bf, - // Entry 1780 - 17BF - 0x01d5, 0x01ec, 0x0203, 0x0216, 0x022d, 0x0245, 0x025b, 0x0271, - 0x0288, 0x029b, 0x02af, 0x02c9, 0x02db, 0x02f4, 0x0308, 0x031f, - 0x0337, 0x034d, 0x0364, 0x0376, 0x0388, 0x039f, 0x03b7, 0x03ce, - 0x03e4, 0x03fa, 0x0411, 0x0423, 0x0439, 0x0450, 0x0462, 0x0475, - 0x0487, 0x049a, 0x04ac, 0x04c4, 0x04dc, 0x04f3, 0x050a, 0x051d, - 0x052e, 0x0544, 0x0555, 0x0567, 0x0578, 0x058a, 0x059c, 0x05ae, - 0x05c1, 0x05d9, 0x05fa, 0x061b, 0x063e, 0x0658, 0x0679, 0x0697, - 0x06c3, 0x06dd, 0x06f7, 0x0711, 0x0311, 0x0324, 0x0339, 0x0354, - // Entry 17C0 - 17FF - 0x036a, 0x0385, 0x039a, 0x03b0, 0x03c6, 0x03dd, 0x03f2, 0x0408, - 0x041d, 0x0439, 0x044f, 0x0464, 0x047a, 0x0490, 0x04a6, 0x04c1, - 0x04dd, 0x04f3, 0x0507, 0x051b, 0x0535, 0x054f, 0x0569, 0x057e, - 0x0593, 0x05b0, 0x01b0, 0x01d4, 0x01ec, 0x0203, 0x021a, 0x0233, - 0x024b, 0x0263, 0x027a, 0x0293, 0x02ac, 0x02c4, 0x02c4, 0x02dc, - 0x02f3, 0x030a, 0x0323, 0x033b, 0x0353, 0x036a, 0x0383, 0x039c, - 0x03b4, 0x03b4, 0x03c7, 0x03de, 0x03f1, 0x0403, 0x0414, 0x0428, - 0x044b, 0x0462, 0x0474, 0x0489, 0x049e, 0x04b6, 0x04c8, 0x04db, - // Entry 1800 - 183F - 0x00db, 0x00fe, 0x0116, 0x0128, 0x0141, 0x0155, 0x0168, 0x0183, - 0x019c, 0x01bc, 0x01e7, 0x0213, 0x022e, 0x0250, 0x026b, 0x0288, - 0x0288, 0x029f, 0x02b7, 0x02ca, 0x02de, 0x02f1, 0x0306, 0x0322, - 0x0337, 0x0353, 0x0368, 0x0384, 0x039b, 0x03b9, 0x03d1, 0x03f0, - 0x0405, 0x041b, 0x0430, 0x044c, 0x045e, 0x047a, 0x048c, 0x04a3, - 0x04b6, 0x04c8, 0x04df, 0x04f1, 0x0508, 0x051b, 0x0533, 0x0555, - 0x0577, 0x0599, 0x05b2, 0x05c4, 0x05db, 0x05ed, 0x0604, 0x0616, - 0x0628, 0x0640, 0x0652, 0x066c, 0x067e, 0x0690, 0x06a2, 0x06b4, - // Entry 1840 - 187F - 0x06c6, 0x06dd, 0x06f4, 0x0706, 0x0718, 0x072d, 0x0747, 0x075e, - 0x077a, 0x0792, 0x07af, 0x07ca, 0x07ec, 0x0808, 0x082b, 0x0845, - 0x0864, 0x0885, 0x08ab, 0x08c4, 0x08e4, 0x08f6, 0x090f, 0x0929, - 0x0943, 0x095b, 0x0973, 0x098c, 0x09a8, 0x01a8, 0x01bb, 0x01cd, - 0x01df, 0x01f3, 0x0206, 0x0219, 0x022b, 0x023f, 0x0253, 0x0266, - 0x0274, 0x0283, 0x0291, 0x02a9, 0x02bc, 0x02d2, 0x02e3, 0x02ff, - 0x031b, 0x0337, 0x0353, 0x0376, 0x0392, 0x03af, 0x03cc, 0x03e9, - 0x040a, 0x0431, 0x0458, 0x0480, 0x04a8, 0x04d1, 0x0506, 0x053b, - // Entry 1880 - 18BF - 0x0562, 0x0588, 0x05b3, 0x05de, 0x060b, 0x0638, 0x0663, 0x068e, - 0x06bb, 0x06e8, 0x0713, 0x0313, 0x032a, 0x0342, 0x035a, 0x036c, - 0x037e, 0x0390, 0x03a3, 0x03b5, 0x03c7, 0x03da, 0x03ed, 0x0400, - 0x0413, 0x0427, 0x043a, 0x044d, 0x0460, 0x0474, 0x0487, 0x049a, - 0x04ad, 0x04c0, 0x04d3, 0x04e6, 0x04f9, 0x050c, 0x051f, 0x0532, - 0x0545, 0x0558, 0x056b, 0x057e, 0x0591, 0x05b3, 0x05d4, 0x05f4, - 0x0611, 0x062d, 0x064c, 0x0669, 0x0685, 0x06a4, 0x06ba, 0x06cf, - 0x06f3, 0x0717, 0x072b, 0x073f, 0x0753, 0x0766, 0x0779, 0x078e, - // Entry 18C0 - 18FF - 0x07a2, 0x07b6, 0x07c9, 0x07de, 0x07f3, 0x0807, 0x0819, 0x082d, - 0x0841, 0x0855, 0x086d, 0x0885, 0x0893, 0x08ac, 0x08bb, 0x08d5, - 0x08ef, 0x08fe, 0x0912, 0x0921, 0x093b, 0x094a, 0x0964, 0x0973, - 0x098d, 0x09a3, 0x09b2, 0x09cc, 0x09db, 0x09ea, 0x09f9, 0x0a13, - 0x0a22, 0x0a3c, 0x0a54, 0x0a6c, 0x0a7b, 0x0a95, 0x0aaf, 0x0abe, - 0x0ad8, 0x0ae8, 0x0af7, 0x0b11, 0x0b21, 0x0b30, 0x0b40, 0x0b50, - 0x0b5e, 0x0b6c, 0x0b7c, 0x0b8e, 0x0ba7, 0x0bba, 0x0bcc, 0x0be3, - 0x0bf5, 0x0c0c, 0x0c1e, 0x0c42, 0x0c59, 0x0c6f, 0x0c7d, 0x0c8d, - // Entry 1900 - 193F - 0x008d, 0x00a8, 0x00c5, 0x00dd, 0x00f8, 0x0108, 0x0119, 0x012a, - 0x013a, 0x014b, 0x015c, 0x016c, 0x017d, 0x018d, 0x019e, 0x01ae, - 0x01bf, 0x01cf, 0x01df, 0x01ef, 0x0200, 0x0211, 0x0221, 0x0232, - 0x0242, 0x0253, 0x0263, 0x0274, 0x0285, 0x0297, 0x02a8, 0x02b8, - 0x02c8, 0x02d8, 0x02e8, 0x02f9, 0x0309, 0x0319, 0x032a, 0x033a, - 0x0349, 0x0363, 0x037d, 0x0391, 0x03a4, 0x03b7, 0x03cb, 0x03de, - 0x03f2, 0x0405, 0x041c, 0x0433, 0x044a, 0x0461, 0x0478, 0x048f, - 0x04a6, 0x04c3, 0x04dd, 0x04ec, 0x04fd, 0x00fd, 0x0116, 0x013b, - // Entry 1940 - 197F - 0x0154, 0x0174, 0x018d, 0x019e, 0x01ae, 0x01be, 0x01d0, 0x01e1, - 0x01f2, 0x0202, 0x0214, 0x0226, 0x0237, 0x0237, 0x0248, 0x025a, - 0x026b, 0x027e, 0x0290, 0x02a2, 0x02b6, 0x02c9, 0x02dc, 0x02ee, - 0x0302, 0x0316, 0x0329, 0x033b, 0x034d, 0x035f, 0x0372, 0x0384, - 0x0397, 0x03aa, 0x03bd, 0x03d0, 0x03e3, 0x03f5, 0x0407, 0x0419, - 0x042c, 0x043e, 0x0450, 0x0462, 0x0474, 0x0487, 0x0499, 0x04ab, - 0x04bd, 0x04d0, 0x04e2, 0x04f5, 0x0507, 0x051a, 0x052c, 0x053e, - 0x0550, 0x0563, 0x057c, 0x0598, 0x05a6, 0x05b7, 0x05c4, 0x05df, - // Entry 1980 - 19BF - 0x0601, 0x0621, 0x0645, 0x0663, 0x0680, 0x069d, 0x06c2, 0x06e6, - 0x0704, 0x0726, 0x0326, 0x0347, 0x036b, 0x038e, 0x03af, 0x03d6, - 0x03fc, 0x0422, 0x0448, 0x0048, 0x005b, 0x006b, 0x007d, 0x0091, - 0x00b6, 0x00ea, 0x0113, 0x0144, 0x015b, 0x0196, 0x01af, 0x01c8, - 0x01e3, 0x01f7, 0x0210, 0x022b, 0x025b, 0x0286, 0x02a0, 0x02b9, - 0x02db, 0x02f6, 0x031a, 0x033d, 0x0362, 0x0382, 0x03a2, 0x03c1, - 0x03ea, 0x03fb, 0x041c, 0x0434, 0x0453, 0x0475, 0x048c, 0x04ab, - 0x04c2, 0x04d8, 0x04ee, 0x00ee, 0x0103, 0x011f, 0x011f, 0x013b, - // Entry 19C0 - 19FF - 0x0158, 0x0174, 0x0197, 0x01b3, 0x01cf, 0x01ed, 0x0209, 0x0229, - 0x0244, 0x0260, 0x027c, 0x02a4, 0x02c0, 0x02e5, 0x0301, 0x0322, - 0x033f, 0x0361, 0x038a, 0x03a6, 0x03c3, 0x03e0, 0x0400, 0x041c, - 0x0441, 0x0464, 0x0480, 0x049c, 0x04b9, 0x04e2, 0x0506, 0x0522, - 0x053e, 0x055a, 0x0578, 0x059d, 0x05ad, 0x05cd, 0x05ed, 0x060a, - 0x0628, 0x0646, 0x0666, 0x067f, 0x0699, 0x06b2, 0x06d2, 0x06eb, - 0x0704, 0x0726, 0x073f, 0x0758, 0x0771, 0x078a, 0x07a3, 0x07bc, - 0x07d5, 0x07ee, 0x0810, 0x0829, 0x0843, 0x085c, 0x0875, 0x088e, - // Entry 1A00 - 1A3F - 0x08a7, 0x08c0, 0x08d7, 0x08f5, 0x0910, 0x092f, 0x0946, 0x095d, - 0x0974, 0x098f, 0x09ab, 0x09ce, 0x09e5, 0x0a03, 0x0a1a, 0x0a31, - 0x0a4a, 0x0a61, 0x0a7d, 0x0a9d, 0x0ac0, 0x0ad7, 0x0aee, 0x0b05, - 0x0b25, 0x0b43, 0x0b5a, 0x0b73, 0x0b8d, 0x0bae, 0x0bc9, 0x0be8, - 0x0c01, 0x0c1f, 0x0c3d, 0x0c5b, 0x0c79, 0x0c9a, 0x0cbc, 0x0cdc, - 0x0cfc, 0x0d1c, 0x0d31, 0x0d57, 0x0d7d, 0x0da3, 0x0dc9, 0x0def, - 0x0e15, 0x0e3b, 0x0e6e, 0x0e94, 0x0eba, 0x0ee0, 0x0efb, 0x0f16, - 0x0f32, 0x0f5a, 0x0f82, 0x0fa5, 0x0fc5, 0x0fed, 0x1013, 0x1039, - // Entry 1A40 - 1A7F - 0x105f, 0x1085, 0x10ab, 0x10d1, 0x10f7, 0x111d, 0x1143, 0x1169, - 0x118f, 0x11b5, 0x11dd, 0x1203, 0x1229, 0x124f, 0x1277, 0x12a3, - 0x12ca, 0x12f2, 0x131f, 0x1355, 0x1381, 0x13a9, 0x13d6, 0x1400, - 0x1428, 0x1452, 0x1474, 0x148b, 0x14ac, 0x14c5, 0x14ea, 0x1501, - 0x152c, 0x154a, 0x1568, 0x158b, 0x15a5, 0x15c4, 0x15ef, 0x1618, - 0x1643, 0x166c, 0x168b, 0x16ac, 0x16d8, 0x16fe, 0x1729, 0x1748, - 0x1766, 0x177f, 0x17a0, 0x17b9, 0x17e2, 0x17fd, 0x181a, 0x1839, - 0x185a, 0x1878, 0x188f, 0x18ba, 0x18db, 0x18f4, 0x190f, 0x192c, - // Entry 1A80 - 1ABF - 0x1949, 0x195e, 0x1977, 0x198d, 0x19a3, 0x19b9, 0x19cf, 0x19ea, - 0x1a05, 0x1a29, 0x1a3f, 0x1a55, 0x1a76, 0x1a8c, 0x1aa2, 0x1ab4, - 0x1ac6, 0x1ad8, 0x1b0b, 0x1b2a, 0x1b49, 0x1b68, 0x1b8e, 0x1bb4, - 0x1bd4, 0x1bf2, 0x1c18, 0x1c36, 0x1c54, 0x1c7a, 0x1ca0, 0x1cbe, - 0x1ce4, 0x1d0a, 0x1d30, 0x1d4e, 0x1d71, 0x1d8f, 0x1db1, 0x1dcf, - 0x1df0, 0x1e12, 0x1e30, 0x1e67, 0x1ea6, 0x1ec4, 0x1ee4, 0x1f23, - 0x1f41, 0x1f6e, 0x1f9b, 0x1fc8, 0x1fdf, 0x03df, 0x03f6, 0x041b, - 0x043a, 0x0458, 0x048a, 0x04b0, 0x04d4, 0x04f9, 0x051c, 0x0541, - // Entry 1AC0 - 1AFF - 0x0564, 0x058a, 0x05ae, 0x05db, 0x0606, 0x062b, 0x064e, 0x0673, - 0x0696, 0x06bc, 0x06e0, 0x0703, 0x0724, 0x0750, 0x077a, 0x07a6, - 0x07d0, 0x07fc, 0x0826, 0x0852, 0x087c, 0x08a3, 0x08c8, 0x08f5, - 0x0920, 0x0945, 0x0968, 0x098a, 0x09aa, 0x09cf, 0x09f2, 0x0a17, - 0x0a3a, 0x0a5f, 0x0a82, 0x0aa5, 0x0ac6, 0x0aed, 0x0b12, 0x0b39, - 0x0b5e, 0x0b8d, 0x0bba, 0x0bdb, 0x0bfa, 0x0c1f, 0x0c42, 0x0c68, - 0x0c8c, 0x0cb1, 0x0cd4, 0x0d04, 0x0d32, 0x0d58, 0x0d7c, 0x0da8, - 0x0dd2, 0x0df3, 0x0e12, 0x0e37, 0x0e5a, 0x0e7f, 0x0ea2, 0x0ec7, - // Entry 1B00 - 1B3F - 0x0eea, 0x0f0f, 0x0f32, 0x0f58, 0x0f7c, 0x0fa8, 0x0fd2, 0x0ffd, - 0x1026, 0x1055, 0x1082, 0x10ae, 0x10d8, 0x1104, 0x112e, 0x114f, - 0x116e, 0x1193, 0x11b6, 0x11db, 0x11fe, 0x1223, 0x1246, 0x1276, - 0x12a4, 0x12ca, 0x12ee, 0x1313, 0x1336, 0x135b, 0x137e, 0x13ad, - 0x13da, 0x1409, 0x1436, 0x1469, 0x149a, 0x14bf, 0x14e2, 0x1507, - 0x152a, 0x1550, 0x1574, 0x15a0, 0x15ca, 0x15f5, 0x161e, 0x1645, - 0x166a, 0x1696, 0x16c0, 0x16eb, 0x1714, 0x1744, 0x1772, 0x1793, - 0x17b2, 0x17d7, 0x17fa, 0x181b, 0x183a, 0x185b, 0x187a, 0x189f, - // Entry 1B40 - 1B7F - 0x18c2, 0x18e7, 0x190a, 0x192f, 0x1952, 0x1977, 0x199a, 0x19bf, - 0x19e2, 0x1a07, 0x1a2a, 0x1a50, 0x1a74, 0x1a99, 0x1abc, 0x1ae2, - 0x1b06, 0x1b2a, 0x1b4d, 0x1b71, 0x1b95, 0x1bbe, 0x1be6, 0x1c14, - 0x1c3e, 0x1c5a, 0x1c72, 0x1c97, 0x1cba, 0x1ce0, 0x1d04, 0x1d34, - 0x1d62, 0x1d92, 0x1dc0, 0x1df5, 0x1e28, 0x1e58, 0x1e86, 0x1eba, - 0x1eec, 0x1f17, 0x1f40, 0x1f6b, 0x1f94, 0x1fc4, 0x1ff2, 0x201d, - 0x2046, 0x2075, 0x20a2, 0x20c7, 0x20ea, 0x2110, 0x2134, 0x2155, - 0x2174, 0x21a4, 0x21d2, 0x2202, 0x2230, 0x2265, 0x2298, 0x22c8, - // Entry 1B80 - 1BBF - 0x22f6, 0x232a, 0x235c, 0x2382, 0x23a6, 0x23cb, 0x23ee, 0x2413, - 0x2436, 0x245c, 0x2480, 0x24b0, 0x24de, 0x250e, 0x253c, 0x2571, - 0x25a4, 0x25d4, 0x2602, 0x2636, 0x2668, 0x2692, 0x26ba, 0x26e4, - 0x270c, 0x273b, 0x2768, 0x2792, 0x27ba, 0x27e8, 0x2814, 0x2839, - 0x285c, 0x2882, 0x28a6, 0x28d0, 0x28f8, 0x2922, 0x294a, 0x2979, - 0x29a6, 0x29d0, 0x29f8, 0x2a26, 0x2a52, 0x2a73, 0x2a92, 0x2ab7, - 0x2ada, 0x2b00, 0x2b24, 0x2b45, 0x2b64, 0x2b88, 0x2baa, 0x2bcd, - 0x2bee, 0x2c0e, 0x2c2c, 0x2c4f, 0x2c72, 0x2c9f, 0x2ccc, 0x2cf8, - // Entry 1BC0 - 1BFF - 0x2d24, 0x2d57, 0x2d8a, 0x2daf, 0x2dd4, 0x2e03, 0x2e32, 0x2e60, - 0x2e8e, 0x2ec3, 0x2ef8, 0x2f1d, 0x2f42, 0x2f71, 0x2fa0, 0x2fce, - 0x2ffc, 0x03fc, 0x0423, 0x044a, 0x047b, 0x04ac, 0x04dc, 0x050c, - 0x010c, 0x012d, 0x014e, 0x0179, 0x01a4, 0x01ce, 0x01f8, 0x0229, - 0x025a, 0x027d, 0x02a0, 0x02cd, 0x02fa, 0x0326, 0x0352, 0x0385, - 0x03b8, 0x03da, 0x03fc, 0x0428, 0x0454, 0x047f, 0x04aa, 0x04dc, - 0x050e, 0x0532, 0x0556, 0x0584, 0x05b2, 0x05df, 0x060c, 0x0640, - 0x0674, 0x0699, 0x06be, 0x06ed, 0x071c, 0x074a, 0x0778, 0x0378, - // Entry 1C00 - 1C3F - 0x039f, 0x03c6, 0x03f7, 0x0428, 0x0458, 0x0488, 0x0088, 0x00ad, - 0x00d2, 0x0101, 0x0130, 0x015e, 0x018c, 0x01c1, 0x01f6, 0x01f6, - 0x021d, 0x021d, 0x024e, 0x024e, 0x027e, 0x027e, 0x02b5, 0x02d8, - 0x02fb, 0x0328, 0x0355, 0x0381, 0x03ad, 0x03e0, 0x0413, 0x0438, - 0x045d, 0x048c, 0x04bb, 0x04e9, 0x0517, 0x054c, 0x0581, 0x05a4, - 0x05c6, 0x05eb, 0x060f, 0x0630, 0x0650, 0x0672, 0x0693, 0x06b8, - 0x06dc, 0x0701, 0x0725, 0x0748, 0x076a, 0x036a, 0x039f, 0x03d4, - 0x0413, 0x0452, 0x0490, 0x04ce, 0x0513, 0x0558, 0x0590, 0x05c8, - // Entry 1C40 - 1C7F - 0x060a, 0x064c, 0x068d, 0x06ce, 0x0716, 0x075e, 0x0791, 0x07c4, - 0x0801, 0x083e, 0x087a, 0x08b6, 0x08f9, 0x093c, 0x0972, 0x09a8, - 0x09e8, 0x0a28, 0x0a67, 0x0aa6, 0x0aec, 0x0b32, 0x0b67, 0x0b9c, - 0x0bdb, 0x0c1a, 0x0c58, 0x0c96, 0x0cdb, 0x0d20, 0x0d58, 0x0d90, - 0x0dd2, 0x0e14, 0x0e55, 0x0e96, 0x0ede, 0x0f26, 0x0f4a, 0x0f6e, - 0x0fa3, 0x0fce, 0x1002, 0x0002, 0x002b, 0x0066, 0x008c, 0x00b2, - 0x00d7, 0x00fb, 0x0129, 0x0136, 0x014a, 0x0155, 0x0166, 0x0185, - 0x01b8, 0x01e1, 0x0213, 0x0213, 0x023a, 0x0273, 0x029a, 0x02c0, - // Entry 1C80 - 1CBF - 0x02e3, 0x0305, 0x0331, 0x0346, 0x035a, 0x0375, 0x0398, 0x03bb, - 0x03eb, 0x041a, 0x001a, 0x0042, 0x0078, 0x009d, 0x00c2, 0x00e6, - 0x0109, 0x0109, 0x011e, 0x0132, 0x014d, 0x0173, 0x0199, 0x01cc, - 0x01fe, 0x021f, 0x0240, 0x026b, 0x02a4, 0x02cc, 0x02f4, 0x031b, - 0x0341, 0x0364, 0x037d, 0x0395, 0x03a0, 0x03a0, 0x03d5, 0x0400, - 0x0434, 0x0034, 0x005d, 0x0098, 0x00bf, 0x00e5, 0x010a, 0x012e, - 0x015c, 0x0166, 0x0171, 0x0171, 0x0178, 0x017f, 0x0187, 0x018f, - 0x01a1, 0x01b2, 0x01c2, 0x01ce, 0x01df, 0x01e9, 0x01f3, 0x0203, - // Entry 1CC0 - 1CFF - 0x0218, 0x0229, 0x023b, 0x024d, 0x0253, 0x0266, 0x0271, 0x0278, - 0x027f, 0x028d, 0x02a1, 0x02b0, 0x02ca, 0x02e5, 0x0300, 0x0325, - 0x033f, 0x035a, 0x0375, 0x039a, 0x03a0, 0x03ad, 0x03b3, 0x03c4, - 0x03d2, 0x03e0, 0x03f3, 0x0404, 0x0412, 0x0425, 0x043c, 0x0453, - 0x046d, 0x0483, 0x0499, 0x04ae, 0x04bc, 0x04d1, 0x04d6, 0x04e2, - 0x04ee, 0x04fc, 0x0511, 0x0526, 0x052b, 0x0554, 0x057e, 0x058c, - 0x05a3, 0x05ae, 0x05b6, 0x05be, 0x05cb, 0x05e0, 0x05e8, 0x05f5, - 0x0603, 0x0621, 0x0640, 0x0654, 0x066d, 0x0686, 0x0696, 0x06ab, - // Entry 1D00 - 1D3F - 0x06c1, 0x06d8, 0x06e4, 0x06f6, 0x06fe, 0x071e, 0x0733, 0x073d, - 0x074e, 0x0765, 0x077a, 0x0789, 0x079d, 0x07b1, 0x07c4, 0x07d1, - 0x07dd, 0x07e5, 0x07f7, 0x0810, 0x081b, 0x082f, 0x083e, 0x0851, - 0x085f, 0x005f, 0x0074, 0x0089, 0x009d, 0x00b4, 0x00ce, 0x00e9, - 0x0104, 0x0120, 0x0135, 0x0149, 0x0159, 0x0179, 0x0179, 0x0189, - 0x0199, 0x01a8, 0x01b9, 0x01ca, 0x01da, 0x01ef, 0x0200, 0x0217, - 0x0233, 0x0250, 0x0270, 0x027e, 0x028b, 0x0298, 0x02a7, 0x02b5, - 0x02c3, 0x02d0, 0x02df, 0x02ee, 0x02fc, 0x030f, 0x031e, 0x0333, - // Entry 1D40 - 1D7F - 0x034d, 0x0368, 0x0368, 0x0386, 0x03a4, 0x03c2, 0x03e0, 0x0402, - 0x0420, 0x043e, 0x045c, 0x047a, 0x0498, 0x04b6, 0x04d4, 0x04f2, - 0x00f2, 0x0104, 0x010e, 0x011b, 0x012c, 0x0135, 0x013e, 0x0148, - 0x0153, 0x015d, 0x0165, 0x0174, 0x017d, 0x0186, 0x018e, 0x0199, - 0x01a5, 0x01b6, 0x01bf, 0x01cb, 0x01d7, 0x01e3, 0x01ec, 0x01ff, - 0x020c, 0x0216, 0x0227, 0x0238, 0x0248, 0x0252, 0x025c, 0x0265, - 0x0265, 0x0281, 0x029e, 0x02c2, 0x02e7, 0x030a, 0x0329, 0x0343, - 0x035e, 0x0374, 0x0394, 0x03b8, 0x03d2, 0x03eb, 0x0405, 0x041f, - // Entry 1D80 - 1DBF - 0x043a, 0x045e, 0x047e, 0x0498, 0x04b2, 0x04de, 0x04ff, 0x0527, - 0x053f, 0x0558, 0x0573, 0x0594, 0x05b9, 0x05e9, 0x0618, 0x0632, - 0x064d, 0x0665, 0x0265, 0x026f, 0x0287, 0x029e, 0x02ac, 0x02be, - 0x02c5, 0x02cd, 0x02db, 0x02e2, 0x02f3, 0x0301, 0x0311, 0x0327, - 0x033e, 0x034d, 0x0368, 0x0378, 0x038e, 0x039e, 0x03ac, 0x03ba, - 0x03d1, 0x03dc, 0x03f5, 0x0405, 0x041c, 0x0433, 0x0443, 0x0459, - 0x0470, 0x0481, 0x0489, 0x0495, 0x04a3, 0x04b2, 0x04ba, 0x04d1, - 0x04db, 0x04e3, 0x04f4, 0x050a, 0x0528, 0x0533, 0x0540, 0x0550, - // Entry 1DC0 - 1DFF - 0x0566, 0x0576, 0x0584, 0x0594, 0x05a4, 0x05b4, 0x05c4, 0x05d2, - 0x05dd, 0x05e7, 0x05f3, 0x05ff, 0x0611, 0x0622, 0x0630, 0x0646, - 0x065f, 0x067a, 0x0692, 0x06af, 0x06ca, 0x06e5, 0x0702, 0x071d, - 0x073b, 0x0757, 0x0773, 0x078f, 0x07ab, 0x07b8, 0x07c8, 0x07d0, - 0x07dc, 0x07ea, 0x0805, 0x0820, 0x0839, 0x0852, 0x086b, 0x0885, - 0x089e, 0x08b8, 0x08d4, 0x08ef, 0x0908, 0x0923, 0x093d, 0x095a, - 0x0976, 0x0993, 0x09a9, 0x09ba, 0x09cb, 0x09de, 0x09f0, 0x0a02, - 0x0a13, 0x0a26, 0x0a39, 0x0a4b, 0x0a5c, 0x0a70, 0x0a84, 0x0a97, - // Entry 1E00 - 1E3F - 0x0ab0, 0x0aca, 0x0ae4, 0x0afb, 0x0b12, 0x0b2b, 0x0b43, 0x0b5b, - 0x0b72, 0x0b8b, 0x0ba4, 0x0bbc, 0x0bd3, 0x0bed, 0x0c07, 0x0c20, - 0x0c3f, 0x0c5f, 0x0c7f, 0x0c9d, 0x0cb8, 0x0cd2, 0x0cf4, 0x0d11, - 0x0d2c, 0x0d4a, 0x0d66, 0x0d88, 0x0da3, 0x0db3, 0x0dc5, 0x01c5, - 0x01d4, 0x01e1, 0x01f1, 0x0200, 0x0210, 0x021d, 0x022d, 0x023d, - 0x024d, 0x025d, 0x0278, 0x0294, 0x02a8, 0x02bd, 0x02d7, 0x02ef, - 0x030a, 0x0324, 0x033d, 0x0357, 0x036f, 0x0385, 0x039e, 0x03b6, - 0x03cd, 0x03e6, 0x0400, 0x0419, 0x0433, 0x0448, 0x0464, 0x047a, - // Entry 1E40 - 1E7F - 0x049a, 0x04bb, 0x04dd, 0x0500, 0x0526, 0x054b, 0x056d, 0x058b, - 0x05a7, 0x05da, 0x05f9, 0x0614, 0x0637, 0x065c, 0x0680, 0x06a3, - 0x06c7, 0x06ed, 0x0713, 0x0738, 0x075d, 0x0787, 0x07ac, 0x07c3, - 0x07d8, 0x07f0, 0x0807, 0x0830, 0x0859, 0x087b, 0x089e, 0x08c1, - 0x08d7, 0x08eb, 0x0902, 0x0918, 0x092f, 0x0943, 0x095a, 0x0971, - 0x0988, 0x099f, 0x09b5, 0x09cc, 0x09e4, 0x09fd, 0x0a1d, 0x0a3f, - 0x0a55, 0x0a69, 0x0a80, 0x0a96, 0x0aac, 0x0ac3, 0x0ad8, 0x0aeb, - 0x0b01, 0x0b16, 0x0b32, 0x0b51, 0x0b84, 0x0bb5, 0x0bcf, 0x0bf5, - // Entry 1E80 - 1EBF - 0x0c15, 0x0c2f, 0x0c49, 0x0c5c, 0x0c79, 0x0ca3, 0x0cba, 0x0cde, - 0x0d03, 0x0d28, 0x0d53, 0x0d7f, 0x0dab, 0x0dc6, 0x0de2, 0x0dfe, - 0x0e05, 0x0e0f, 0x0e23, 0x0e2f, 0x0e43, 0x0e4c, 0x0e55, 0x0e5a, - 0x0e64, 0x0e75, 0x0e85, 0x0e97, 0x0eb1, 0x0ec9, 0x0ed5, 0x0ee2, - 0x0ef1, 0x0f00, 0x0f0a, 0x0f1c, 0x0f24, 0x0f32, 0x0f3b, 0x0f4c, - 0x0f59, 0x0f68, 0x0f73, 0x0f7c, 0x0f87, 0x0f96, 0x0f9e, 0x0fa9, - 0x0fae, 0x0fbc, 0x0fcb, 0x0fd2, 0x0fe1, 0x0fec, 0x0ffb, 0x1006, - 0x1010, 0x101c, 0x1021, 0x1029, 0x1038, 0x1047, 0x1057, 0x1067, - // Entry 1EC0 - 1EFF - 0x1076, 0x1088, 0x10a2, 0x10c0, 0x10c9, 0x10d0, 0x10d5, 0x10df, - 0x10e8, 0x10ee, 0x1102, 0x110c, 0x111a, 0x1128, 0x1137, 0x1140, - 0x114e, 0x1157, 0x1162, 0x1179, 0x1194, 0x11aa, 0x11d1, 0x11fc, - 0x120b, 0x121e, 0x1236, 0x1242, 0x124e, 0x125b, 0x1276, 0x1288, - 0x129c, 0x12b2, 0x12d8, 0x12fa, 0x1306, 0x1312, 0x1322, 0x132f, - 0x133d, 0x1346, 0x1354, 0x135f, 0x136d, 0x1383, 0x138e, 0x13a1, - 0x13ad, 0x13b9, 0x13c9, 0x13df, 0x13f4, 0x140c, 0x1423, 0x143d, - 0x1457, 0x1474, 0x1482, 0x1493, 0x149a, 0x14ab, 0x14b8, 0x14c8, - // Entry 1F00 - 1F3F - 0x14e6, 0x1507, 0x1521, 0x153e, 0x1561, 0x1587, 0x15a0, 0x15b9, - 0x15db, 0x15fd, 0x1605, 0x160d, 0x1621, 0x1635, 0x164e, 0x1667, - 0x1677, 0x1687, 0x1690, 0x169b, 0x16aa, 0x16bb, 0x16d0, 0x16e7, - 0x1707, 0x1729, 0x1744, 0x1761, 0x1769, 0x1780, 0x178e, 0x179d, - 0x17af, 0x17ca, 0x17e8, 0x17f2, 0x17fc, 0x1808, 0x1815, 0x1822, - 0x1838, 0x184c, 0x1861, 0x187a, 0x1888, 0x1894, 0x18a0, 0x18ad, - 0x18ba, 0x18ce, 0x18d8, 0x18e1, 0x18ea, 0x18f1, 0x18fa, 0x1900, - 0x1904, 0x190a, 0x192d, 0x1957, 0x1965, 0x196d, 0x197b, 0x19ad, - // Entry 1F40 - 1F7F - 0x19c4, 0x19db, 0x19ed, 0x1a08, 0x1a26, 0x1a4d, 0x1a58, 0x1a60, - 0x1a68, 0x1a82, 0x1a8d, 0x1a90, 0x1a94, 0x1a97, 0x1aab, 0x1ab9, - 0x1aca, 0x1ada, 0x1aec, 0x1af7, 0x1b07, 0x1b13, 0x1b20, 0x1b2e, - 0x1b34, 0x1b59, 0x1b7f, 0x1b96, 0x1bae, 0x1bc3, 0x1bd3, 0x1be4, - 0x1bf1, 0x1c00, 0x1c13, 0x1c1f, 0x1c28, 0x1c3d, 0x1c4f, 0x1c64, - 0x1c77, 0x1c8d, 0x1caf, 0x1cd1, 0x1ce6, 0x1cfe, 0x1d12, 0x1d26, - 0x1d3f, 0x1d58, 0x1d77, 0x1d99, 0x1db8, 0x1dda, 0x1df9, 0x1e1b, - 0x1e39, 0x1e57, 0x1e6d, 0x1e90, 0x1eb2, 0x1ede, 0x1eef, 0x1f0a, - // Entry 1F80 - 1FBF - 0x1f24, 0x1f40, 0x1f66, 0x1f9e, 0x1fdc, 0x1ff5, 0x200c, 0x2029, - 0x2041, 0x2067, 0x208b, 0x20c1, 0x20fd, 0x2112, 0x212d, 0x2146, - 0x2153, 0x2161, 0x2166, 0x2172, 0x2180, 0x218a, 0x2195, 0x219e, - 0x21aa, 0x21b7, 0x21c1, 0x21cc, 0x21dd, 0x21ed, 0x21fb, 0x2208, - 0x2219, 0x2227, 0x222a, 0x2231, 0x2237, 0x2249, 0x225b, 0x226a, - 0x2280, 0x228f, 0x2294, 0x229d, 0x22ac, 0x22bc, 0x22ce, 0x22e1, - 0x22f2, 0x2306, 0x230b, 0x2310, 0x2338, 0x2342, 0x2354, 0x2368, - 0x2370, 0x238b, 0x23a7, 0x23b8, 0x23c4, 0x23d0, 0x23e2, 0x23ea, - // Entry 1FC0 - 1FFF - 0x23f6, 0x2406, 0x2413, 0x2418, 0x2423, 0x242e, 0x244a, 0x246b, - 0x248b, 0x24ac, 0x24ce, 0x24ec, 0x250d, 0x252f, 0x254f, 0x256e, - 0x2591, 0x25b1, 0x25d5, 0x25f9, 0x2620, 0x2644, 0x2669, 0x2693, - 0x26be, 0x26e4, 0x270c, 0x272d, 0x2752, 0x2772, 0x2795, 0x27b7, - 0x27df, 0x2804, 0x2823, 0x2846, 0x2864, 0x2885, 0x28a9, 0x28d3, - 0x28f7, 0x291b, 0x2941, 0x2963, 0x2988, 0x29a9, 0x29c9, 0x29ea, - 0x2a0a, 0x2a31, 0x2a54, 0x2a78, 0x2a9b, 0x2ac1, 0x2ae6, 0x2b0b, - 0x2b30, 0x2b5c, 0x2b7b, 0x2b9a, 0x2bb5, 0x2bd6, 0x2bfe, 0x2c22, - // Entry 2000 - 203F - 0x2c45, 0x2c6b, 0x2c8f, 0x2ca9, 0x2cc2, 0x2cdd, 0x2d01, 0x2d27, - 0x2d4a, 0x2d6e, 0x2d89, 0x2d97, 0x2dbe, 0x2dd1, 0x2ddc, 0x2df9, - 0x2e09, 0x2e24, 0x2e42, 0x2e51, 0x2e63, 0x2e89, 0x2e95, 0x2eab, - 0x2eb6, 0x2ed7, 0x2eec, 0x2f0e, 0x2f19, 0x2f2a, 0x2f3b, 0x2f5c, - 0x2f7d, 0x2f9c, 0x2fb9, 0x2fd7, 0x2fef, 0x3009, 0x3025, 0x3032, - 0x303b, 0x304e, 0x3061, 0x307c, 0x3096, 0x30b1, 0x30cd, 0x30e8, - 0x3104, 0x3124, 0x3141, 0x3161, 0x3182, 0x31a0, 0x31c1, 0x31de, - 0x31fd, 0x321a, 0x3231, 0x324f, 0x326f, 0x328d, 0x329f, 0x32b8, - // Entry 2040 - 207F - 0x32e7, 0x3316, 0x3323, 0x3333, 0x3345, 0x335a, 0x3387, 0x339c, - 0x33b2, 0x33c9, 0x33df, 0x33f5, 0x340b, 0x3421, 0x344e, 0x347e, - 0x34a9, 0x34df, 0x3513, 0x3540, 0x3578, 0x35ae, 0x35d6, 0x360a, - 0x363c, 0x3666, 0x368e, 0x36ba, 0x36e9, 0x36f4, 0x3701, 0x370d, - 0x3724, 0x3732, 0x374a, 0x3762, 0x377f, 0x379c, 0x37b6, 0x37c6, - 0x37d8, 0x37ea, 0x37f6, 0x37fa, 0x3809, 0x381b, 0x382c, 0x3840, - 0x385a, 0x3877, 0x3886, 0x389e, 0x38aa, 0x38b2, 0x38bc, 0x38d3, - 0x38ea, 0x390e, 0x3931, 0x3952, 0x3975, 0x39ab, 0x39e0, 0x3a16, - // Entry 2080 - 20BF - 0x3a21, 0x3a2a, 0x3a35, 0x3a50, 0x3a73, 0x3a97, 0x3ab8, 0x3adb, - 0x3aee, 0x3b03, 0x3b1a, 0x3b26, 0x3b39, 0x3b48, 0x3b5a, 0x035a, - 0x0369, 0x0384, 0x039c, 0x03b2, 0x03d0, 0x03e2, 0x03f8, 0x0407, - 0x041b, 0x043b, 0x044f, 0x046d, 0x0481, 0x049b, 0x04af, 0x04c2, - 0x04dd, 0x04fa, 0x0517, 0x0536, 0x0554, 0x0573, 0x058e, 0x05b2, - 0x05c3, 0x05db, 0x05f0, 0x0601, 0x061a, 0x0634, 0x064f, 0x0668, - 0x0678, 0x0689, 0x0695, 0x069d, 0x06af, 0x06c9, 0x06e7, 0x02e7, - 0x02ef, 0x02f8, 0x0300, 0x0311, 0x0320, 0x032b, 0x0349, 0x035c, - // Entry 20C0 - 20FF - 0x0364, 0x037f, 0x0393, 0x0393, 0x03a4, 0x03b5, 0x03c8, 0x03da, - 0x03ec, 0x03fd, 0x0410, 0x0423, 0x0435, 0x0447, 0x045c, 0x0471, - 0x0488, 0x049f, 0x04b5, 0x04cb, 0x04e3, 0x04fa, 0x0511, 0x0526, - 0x053d, 0x0554, 0x056d, 0x0585, 0x059d, 0x05b4, 0x05cd, 0x05e6, - 0x05fe, 0x0616, 0x0631, 0x064c, 0x0669, 0x0686, 0x06a2, 0x06be, - 0x06dc, 0x06f9, 0x0716, 0x0731, 0x0744, 0x0757, 0x076c, 0x0780, - 0x0794, 0x07a7, 0x07bc, 0x07d1, 0x07e5, 0x07f9, 0x0810, 0x0827, - 0x0840, 0x0859, 0x0871, 0x0889, 0x08a3, 0x08bc, 0x08d5, 0x08ec, - // Entry 2100 - 213F - 0x090e, 0x0930, 0x0952, 0x0974, 0x0996, 0x09b8, 0x09da, 0x09fc, - 0x0a1e, 0x0a40, 0x0a62, 0x0a84, 0x0aa6, 0x0ac8, 0x0aea, 0x0b0c, - 0x0b2e, 0x0b50, 0x0b72, 0x0b94, 0x0bb6, 0x0bd8, 0x0bfa, 0x0c1c, - 0x0c3e, 0x0c60, 0x0c7e, 0x0c9c, 0x0cba, 0x0cd8, 0x0cf6, 0x0d14, - 0x0d32, 0x0d50, 0x0d6e, 0x0d8c, 0x0daa, 0x0dc8, 0x0de6, 0x0e04, - 0x0e22, 0x0e40, 0x0e5e, 0x0e7c, 0x0e9a, 0x0eb8, 0x0ed6, 0x0ef4, - 0x0f12, 0x0f30, 0x0f4e, 0x0f6c, 0x0f88, 0x0fa4, 0x0fc0, 0x0fdc, - 0x0ff8, 0x1014, 0x1030, 0x104c, 0x1068, 0x1084, 0x10a0, 0x10bc, - // Entry 2140 - 217F - 0x10d8, 0x10f4, 0x1110, 0x112c, 0x1148, 0x1164, 0x1180, 0x119c, - 0x11b8, 0x11d4, 0x11f0, 0x120c, 0x1228, 0x1244, 0x1256, 0x1274, - 0x1292, 0x12b2, 0x12d2, 0x12f1, 0x1310, 0x1331, 0x1351, 0x1371, - 0x138f, 0x13a7, 0x13bf, 0x13d9, 0x13f2, 0x140b, 0x1423, 0x143d, - 0x1457, 0x1470, 0x1489, 0x14a4, 0x14c1, 0x14de, 0x14f9, 0x1514, - 0x153d, 0x1566, 0x158d, 0x15b4, 0x15e0, 0x160c, 0x1636, 0x1660, - 0x1681, 0x16a8, 0x16cf, 0x16f0, 0x1710, 0x1736, 0x175c, 0x177c, - 0x179b, 0x17c0, 0x17e5, 0x1804, 0x1822, 0x1846, 0x186a, 0x1888, - // Entry 2180 - 21BF - 0x18ad, 0x18d8, 0x1902, 0x192c, 0x1957, 0x1981, 0x19ab, 0x19d0, - 0x19f4, 0x1a1e, 0x1a47, 0x1a70, 0x1a9a, 0x1ac3, 0x1aec, 0x1b10, - 0x1b36, 0x1b62, 0x1b8e, 0x1bba, 0x1be6, 0x1c12, 0x1c3e, 0x1c64, - 0x1c88, 0x1cb2, 0x1cdc, 0x1d06, 0x1d30, 0x1d5a, 0x1d84, 0x1da8, - 0x1dd2, 0x1e02, 0x1e32, 0x1e62, 0x1e91, 0x1ec0, 0x1ef0, 0x1f1f, - 0x1f4e, 0x1f7d, 0x1fac, 0x1fdb, 0x200a, 0x203a, 0x206a, 0x2094, - 0x20bd, 0x20e6, 0x210d, 0x2134, 0x2152, 0x216e, 0x2197, 0x21c0, - 0x21e2, 0x220a, 0x2232, 0x2253, 0x227a, 0x22a1, 0x22c1, 0x22e7, - // Entry 21C0 - 21FF - 0x230d, 0x232c, 0x2359, 0x2386, 0x23ac, 0x23d8, 0x2404, 0x2429, - 0x2457, 0x2485, 0x24ac, 0x24d8, 0x2504, 0x2529, 0x255b, 0x258d, - 0x25b8, 0x25dd, 0x2601, 0x2623, 0x2646, 0x267b, 0x26b0, 0x26d1, - 0x26e8, 0x26fd, 0x2715, 0x272c, 0x2743, 0x2758, 0x2770, 0x2787, - 0x27ae, 0x27d2, 0x27f9, 0x281d, 0x282d, 0x2843, 0x285a, 0x2873, - 0x2883, 0x289b, 0x28b5, 0x28ce, 0x28d8, 0x28f0, 0x2909, 0x2920, - 0x292f, 0x2947, 0x295d, 0x2972, 0x2982, 0x298d, 0x2999, 0x29a3, - 0x29b9, 0x29cf, 0x29e2, 0x29f6, 0x2a09, 0x2a3b, 0x2a5e, 0x2a90, - // Entry 2200 - 223F - 0x2ac3, 0x2ad7, 0x2afa, 0x2b2d, 0x2b39, 0x2b45, 0x2b66, 0x2b90, - 0x2bab, 0x2bc4, 0x2bea, 0x2c14, 0x2c3e, 0x2c62, 0x2c74, 0x2c86, - 0x2c95, 0x2ca4, 0x2cbc, 0x2cd4, 0x2ce7, 0x2cfa, 0x2d14, 0x2d2e, - 0x2d4e, 0x2d6e, 0x2d8b, 0x2da8, 0x2dcb, 0x2dee, 0x2e0a, 0x2e26, - 0x2e42, 0x2e5e, 0x2e80, 0x2ea2, 0x2ebe, 0x2eda, 0x2efc, 0x2f1e, - 0x2f39, 0x2f54, 0x2f61, 0x2f6e, 0x2f9a, 0x2fa1, 0x2fa8, 0x2fb4, - 0x2fc1, 0x2fda, 0x2fe2, 0x2fee, 0x3009, 0x3025, 0x3041, 0x305d, - 0x3083, 0x30b0, 0x30c6, 0x30dd, 0x30eb, 0x30ff, 0x311e, 0x313d, - // Entry 2240 - 227F - 0x315d, 0x317e, 0x319f, 0x31bf, 0x31d0, 0x31e1, 0x31fb, 0x3214, - 0x322d, 0x3247, 0x3253, 0x326e, 0x328a, 0x32b4, 0x32df, 0x3308, - 0x332b, 0x3354, 0x337e, 0x338a, 0x33af, 0x33d4, 0x33fa, 0x3420, - 0x3445, 0x346a, 0x3490, 0x34b6, 0x34c9, 0x34dd, 0x34f0, 0x3503, - 0x3516, 0x352f, 0x3548, 0x355c, 0x356f, 0x3574, 0x357c, 0x3583, - 0x3588, 0x3592, 0x359c, 0x35a5, 0x35b1, 0x35b4, 0x35c2, 0x35d1, - 0x35dc, 0x35e6, 0x35f5, 0x3604, 0x360e, 0x3623, 0x3634, 0x363b, - 0x3653, 0x365f, 0x3670, 0x3681, 0x3689, 0x36ad, 0x36c6, 0x36e0, - // Entry 2280 - 22BF - 0x36f9, 0x3710, 0x372a, 0x3743, 0x3757, 0x3763, 0x3773, 0x3781, - 0x3789, 0x378d, 0x379b, 0x37a2, 0x37b3, 0x37c5, 0x37d6, 0x37e2, - 0x37ec, 0x37fd, 0x3809, 0x3811, 0x3823, 0x3833, 0x3843, 0x3856, - 0x3866, 0x3877, 0x388b, 0x389c, 0x38ab, 0x38be, 0x38d0, 0x38e2, - 0x38f5, 0x3907, 0x3918, 0x391f, 0x392a, 0x392f, 0x3938, 0x393f, - 0x3945, 0x394b, 0x3952, 0x3957, 0x395c, 0x3962, 0x3968, 0x396e, - 0x3971, 0x3976, 0x397b, 0x3983, 0x398e, 0x3997, 0x399f, 0x39a5, - 0x39b5, 0x39c6, 0x39d6, 0x39e8, 0x39fa, 0x3a0a, 0x3a1a, 0x3a2b, - // Entry 22C0 - 22FF - 0x3a3b, 0x3a4d, 0x3a5f, 0x3a6f, 0x3a7f, 0x3a8f, 0x3aa1, 0x3ab0, - 0x3ac0, 0x3ad0, 0x3ae2, 0x3af1, 0x3afc, 0x3b08, 0x3b13, 0x3b26, - 0x3b3c, 0x3b4b, 0x3b5d, 0x3b6d, 0x3b7e, 0x3b8f, 0x3ba9, 0x3bcd, - 0x3bf1, 0x3c15, 0x3c39, 0x3c5d, 0x3c81, 0x3ca5, 0x3ccb, 0x3ceb, - 0x3d00, 0x3d1f, 0x3d33, 0x3d44, 0x3d4e, 0x3d58, 0x3d62, 0x3d6c, - 0x3d76, 0x3d80, 0x3d9b, 0x3db5, 0x3dd6, 0x3df6, 0x3e07, 0x3e17, - 0x3e2e, 0x3e43, 0x3e59, 0x3e6f, 0x3e79, 0x3e83, 0x3e92, 0x3e98, - 0x3ea6, 0x3eba, 0x3ec0, 0x3ec7, 0x3ecd, 0x3ed1, 0x3ee0, 0x3eeb, - // Entry 2300 - 233F - 0x3ef7, 0x3f0a, 0x3f26, 0x3f41, 0x3f4d, 0x3f5e, 0x3f71, 0x3f82, - 0x3fa2, 0x3fb6, 0x3fcb, 0x3ff4, 0x4012, 0x4032, 0x4045, 0x4058, - 0x4071, 0x4080, 0x408e, 0x40aa, 0x40b0, 0x40bb, 0x40c1, 0x40c6, - 0x40cc, 0x40d0, 0x40d5, 0x40db, 0x40ec, 0x40f3, 0x40fe, 0x4106, - 0x4114, 0x411f, 0x4127, 0x4132, 0x4144, 0x4157, 0x4169, 0x417c, - 0x4190, 0x41a0, 0x41a4, 0x41b1, 0x41c7, 0x41df, 0x41f7, 0x420e, - 0x421c, 0x4228, 0x4231, 0x4235, 0x4240, 0x4257, 0x426d, 0x4273, - 0x427b, 0x429d, 0x42bb, 0x42d9, 0x42ee, 0x4303, 0x4312, 0x4334, - // Entry 2340 - 237F - 0x4345, 0x4354, 0x4384, 0x438f, 0x43a6, 0x43bd, 0x43db, 0x4406, - 0x440f, 0x4430, 0x4450, 0x4462, 0x4477, 0x4484, 0x448a, 0x4490, - 0x449d, 0x44ad, 0x44be, 0x44d7, 0x44df, 0x44f1, 0x44f9, 0x4505, - 0x450a, 0x4512, 0x4525, 0x452a, 0x4533, 0x4543, 0x4547, 0x455b, - 0x4575, 0x457e, 0x4591, 0x45bf, 0x45d4, 0x45e8, 0x45f6, 0x460a, - 0x4618, 0x462e, 0x4645, 0x464f, 0x4657, 0x465f, 0x466a, 0x4675, - 0x4681, 0x468d, 0x469f, 0x46a5, 0x46b7, 0x46c0, 0x46c9, 0x46d3, - 0x46e3, 0x46f3, 0x4709, 0x4711, 0x471f, 0x4733, 0x4744, 0x4755, - // Entry 2380 - 23BF - 0x476c, 0x4777, 0x4791, 0x47a5, 0x47b2, 0x47bf, 0x47dc, 0x47f8, - 0x481a, 0x4833, 0x484a, 0x4861, 0x4869, 0x4883, 0x4895, 0x48ab, - 0x48c2, 0x48d5, 0x48ee, 0x48fb, 0x490e, 0x491c, 0x4930, 0x4945, - 0x495d, 0x4978, 0x498e, 0x49b2, 0x49dc, 0x49f5, 0x4a0d, 0x4a25, - 0x4a49, 0x4a67, 0x4a8c, 0x4a9a, 0x4aa8, 0x4ace, 0x4af4, 0x4b1b, - 0x4b24, 0x4b3e, 0x4b55, 0x4b5c, 0x4b69, 0x4b80, 0x4ba8, 0x4bd6, - 0x4be0, 0x4bf5, 0x4c10, 0x4c36, 0x4c5c, 0x4c7d, 0x4c9e, 0x4cba, - 0x4cd6, 0x4cf5, 0x4d10, 0x4d2d, 0x4d3f, 0x4d52, 0x4d64, 0x4d95, - // Entry 23C0 - 23FF - 0x4dbf, 0x4df0, 0x4e1a, 0x4e48, 0x4e76, 0x4e99, 0x4eb8, 0x4edd, - 0x4eee, 0x4f0e, 0x4f1a, 0x4f35, 0x4f55, 0x4f76, 0x4fa0, 0x4fcb, - 0x4ff6, 0x5022, 0x5053, 0x5085, 0x50af, 0x50da, 0x5104, 0x512f, - 0x5151, 0x5174, 0x5196, 0x51b8, 0x51dc, 0x51ff, 0x5222, 0x5244, - 0x5268, 0x528c, 0x52af, 0x52d2, 0x52f6, 0x531a, 0x5340, 0x5365, - 0x538a, 0x53ae, 0x53d4, 0x53fa, 0x541f, 0x5444, 0x5471, 0x549e, - 0x54cd, 0x54fb, 0x5529, 0x5556, 0x5585, 0x55b4, 0x55e2, 0x5610, - 0x5632, 0x5641, 0x5651, 0x5664, 0x567a, 0x5690, 0x56a6, 0x56c5, - // Entry 2400 - 243F - 0x56e8, 0x5708, 0x572e, 0x5755, 0x5782, 0x5798, 0x57c0, 0x57eb, - 0x5805, 0x5836, 0x5865, 0x5881, 0x58ad, 0x58d0, 0x58f2, 0x591d, - 0x5949, 0x597a, 0x59ab, 0x59de, 0x59e8, 0x5a1b, 0x5a3f, 0x5a5f, - 0x5a7f, 0x5a9f, 0x5abf, 0x5ae5, 0x5b0b, 0x5b31, 0x5b51, 0x5b78, - 0x5b95, 0x5bb8, 0x5bd6, 0x5be7, 0x5bfe, 0x5c2c, 0x5c39, 0x5c44, - 0x5c51, 0x5c6c, 0x5c88, 0x5c9a, 0x5cba, 0x5cd4, 0x5cf7, 0x5d13, - 0x5d20, 0x5d3d, 0x5d50, 0x5d62, 0x5d80, 0x5d8c, 0x5da6, 0x5dc1, - 0x5ddb, 0x5dea, 0x5dfa, 0x5e09, 0x5e16, 0x5e25, 0x5e44, 0x5e57, - // Entry 2440 - 247F - 0x5e64, 0x5e73, 0x5e81, 0x5e9a, 0x5ebc, 0x5ed7, 0x5f06, 0x5f36, - 0x5f56, 0x5f77, 0x5f9d, 0x5fc4, 0x5fe3, 0x6003, 0x6029, 0x6050, - 0x607e, 0x60ad, 0x60d4, 0x60fc, 0x6113, 0x612c, 0x614d, 0x616a, - 0x6187, 0x619b, 0x61b0, 0x61c5, 0x61e0, 0x61fc, 0x6218, 0x6235, - 0x6253, 0x6277, 0x629c, 0x62ba, 0x62cf, 0x62e5, 0x62fb, 0x6312, - 0x6328, 0x633f, 0x6356, 0x636e, 0x6384, 0x639b, 0x63b2, 0x63ca, - 0x63e1, 0x63f9, 0x6411, 0x642a, 0x6440, 0x6457, 0x646e, 0x6486, - 0x649d, 0x64b5, 0x64cd, 0x64e6, 0x64fd, 0x6515, 0x652d, 0x6546, - // Entry 2480 - 24BF - 0x655e, 0x6577, 0x6590, 0x65aa, 0x65c0, 0x65d7, 0x65ee, 0x6606, - 0x661d, 0x6635, 0x664d, 0x6666, 0x667d, 0x6695, 0x66ad, 0x66c6, - 0x66de, 0x66f7, 0x6710, 0x672a, 0x6741, 0x6759, 0x6771, 0x678a, - 0x67a2, 0x67bb, 0x67d4, 0x67ee, 0x6806, 0x681f, 0x6838, 0x6852, - 0x686b, 0x6885, 0x689f, 0x68ba, 0x68d0, 0x68e7, 0x68fe, 0x6916, - 0x692d, 0x6945, 0x695d, 0x6976, 0x698d, 0x69a5, 0x69bd, 0x69d6, - 0x69ee, 0x6a07, 0x6a20, 0x6a3a, 0x6a51, 0x6a69, 0x6a81, 0x6a9a, - 0x6ab2, 0x6acb, 0x6ae4, 0x6afe, 0x6b16, 0x6b2f, 0x6b48, 0x6b62, - // Entry 24C0 - 24FF - 0x6b7b, 0x6b95, 0x6baf, 0x6bca, 0x6be1, 0x6bf9, 0x6c11, 0x6c2a, - 0x6c42, 0x6c5b, 0x6c74, 0x6c8e, 0x6ca6, 0x6cbf, 0x6cd8, 0x6cf2, - 0x6d0b, 0x6d25, 0x6d3f, 0x6d5a, 0x6d72, 0x6d8b, 0x6da4, 0x6dbe, - 0x6dd7, 0x6df1, 0x6e0b, 0x6e26, 0x6e3f, 0x6e59, 0x6e73, 0x6e8e, - 0x6ea8, 0x6ec3, 0x6ede, 0x6efa, 0x6f10, 0x6f27, 0x6f3e, 0x6f56, - 0x6f6d, 0x6f85, 0x6f9d, 0x6fb6, 0x6fcd, 0x6fe5, 0x6ffd, 0x7016, - 0x702e, 0x7047, 0x7060, 0x707a, 0x7091, 0x70a9, 0x70c1, 0x70da, - 0x70f2, 0x710b, 0x7124, 0x713e, 0x7156, 0x716f, 0x7188, 0x71a2, - // Entry 2500 - 253F - 0x71bb, 0x71d5, 0x71ef, 0x720a, 0x7221, 0x7239, 0x7251, 0x726a, - 0x7282, 0x729b, 0x72b4, 0x72ce, 0x72e6, 0x72ff, 0x7318, 0x7332, - 0x734b, 0x7365, 0x737f, 0x739a, 0x73b2, 0x73cb, 0x73e4, 0x73fe, - 0x7417, 0x7431, 0x744b, 0x7466, 0x747f, 0x7499, 0x74b3, 0x74ce, - 0x74e8, 0x7503, 0x751e, 0x753a, 0x7551, 0x7569, 0x7581, 0x759a, - 0x75b2, 0x75cb, 0x75e4, 0x75fe, 0x7616, 0x762f, 0x7648, 0x7662, - 0x767b, 0x7695, 0x76af, 0x76ca, 0x76e2, 0x76fb, 0x7714, 0x772e, - 0x7747, 0x7761, 0x777b, 0x7796, 0x77af, 0x77c9, 0x77e3, 0x77fe, - // Entry 2540 - 257F - 0x7818, 0x7833, 0x784e, 0x786a, 0x7882, 0x789b, 0x78b4, 0x78ce, - 0x78e7, 0x7901, 0x791b, 0x7936, 0x794f, 0x7969, 0x7983, 0x799e, - 0x79b8, 0x79d3, 0x79ee, 0x7a0a, 0x7a23, 0x7a3d, 0x7a57, 0x7a72, - 0x7a8c, 0x7aa7, 0x7ac2, 0x7ade, 0x7af8, 0x7b13, 0x7b2e, 0x7b4a, - 0x7b65, 0x7b81, 0x7b9d, 0x7bba, 0x7bea, 0x7c21, 0x7c4c, 0x7c78, - 0x7ca4, 0x7cc8, 0x7ce7, 0x7d07, 0x7d2d, 0x7d51, 0x7d65, 0x7d7b, - 0x7d96, 0x7db2, 0x7dcd, 0x7de9, 0x7e10, 0x7e31, 0x7e45, 0x7e5b, - 0x7e8a, 0x7ec0, 0x7ee5, 0x7f1f, 0x7f60, 0x7f74, 0x7f89, 0x7fa4, - // Entry 2580 - 25BF - 0x7fc0, 0x7fe0, 0x8001, 0x802a, 0x8054, 0x8073, 0x8092, 0x80ac, - 0x80c6, 0x80e0, 0x80fa, 0x811f, 0x8144, 0x8169, 0x818e, 0x81b7, - 0x81e0, 0x820a, 0x8234, 0x825e, 0x8287, 0x82b1, 0x82db, 0x82fd, - 0x832b, 0x835b, 0x838a, 0x83ba, 0x83d8, 0x83f9, 0x8414, 0x8432, - 0x8454, 0x8479, 0x84a1, 0x84cc, 0x84ed, 0x850a, 0x8536, 0x8562, - 0x858e, 0x85ae, 0x85cd, 0x85e7, 0x860c, 0x8636, 0x865a, 0x867e, - 0x86a2, 0x86c6, 0x86e8, 0x870d, 0x8733, 0x8756, 0x877b, 0x87a1, - 0x87c7, 0x87ef, 0x8816, 0x883e, 0x8863, 0x888a, 0x88b1, 0x88d9, - // Entry 25C0 - 25FF - 0x8901, 0x892b, 0x8954, 0x897e, 0x89a5, 0x89ce, 0x8a13, 0x8a58, - 0x8a9f, 0x8ae8, 0x8b2c, 0x8b74, 0x8bb8, 0x8c00, 0x8c2e, 0x8c5e, - 0x8c8d, 0x8cbe, 0x8d05, 0x8d4c, 0x8d70, 0x8d92, 0x8db7, 0x8ddb, - 0x8e00, 0x8e26, 0x8e45, 0x8e66, 0x8e89, 0x8ea6, 0x8ec4, 0x8ee2, - 0x8ef0, 0x8eff, 0x8f0b, 0x8f19, 0x8f36, 0x8f45, 0x8f5a, 0x8f72, - 0x8f8b, 0x8fa1, 0x8fb8, 0x8fd5, 0x8ff3, 0x9012, 0x9032, 0x9053, - 0x9075, 0x90a0, 0x90cf, 0x90fd, 0x9129, 0x9144, 0x9160, 0x917a, - 0x9198, 0x91bc, 0x91de, 0x91ff, 0x9221, 0x922d, 0x9241, 0x925c, - // Entry 2600 - 263F - 0x927b, 0x9298, 0x92ab, 0x92b6, 0x92d2, 0x92ec, 0x92f8, 0x9306, - 0x9319, 0x9335, 0x934d, 0x9367, 0x93a9, 0x93ea, 0x942e, 0x9471, - 0x94b3, 0x94f4, 0x9538, 0x957b, 0x958d, 0x95a3, 0x95c4, 0x95e4, - 0x9603, 0x961d, 0x9631, 0x9641, 0x9658, 0x966d, 0x96b2, 0x96cc, - 0x96f7, 0x970e, 0x9722, 0x9730, 0x9741, 0x9755, 0x977a, 0x97a9, - 0x97c6, 0x97e4, 0x97f4, 0x9808, 0x9816, 0x9828, 0x983f, 0x9855, - 0x9862, 0x9880, 0x98a2, 0x98c3, 0x98e5, 0x9900, 0x991c, 0x9928, - 0x9942, 0x995d, 0x996c, 0x997b, 0x998c, 0x999e, 0x99b6, 0x99cf, - // Entry 2640 - 267F - 0x99e2, 0x99f3, 0x9a15, 0x9a2a, 0x9a47, 0x9a53, 0x9a62, 0x9a82, - 0x9ab3, 0x9ad4, 0x9ae0, 0x9aed, 0x9b18, 0x9b44, 0x9b61, 0x9b6e, - 0x9b8a, 0x9ba6, 0x9bbf, 0x9bd8, 0x9bf2, 0x9c0c, 0x9c25, 0x9c3e, - 0x9c4a, 0x9c62, 0x9c76, 0x9c9c, 0x9ca7, 0x9cba, 0x9cc5, 0x9cd0, - 0x9cf2, 0x9d15, 0x9d19, 0x9d1d, 0x9d37, 0x9d52, 0x9d6e, 0x9d8b, - 0x9da9, 0x9dcb, 0x9de6, 0x9dfe, 0x9e15, 0x9e29, 0x9e37, 0x9e4e, - 0x9e69, 0x9e7d, 0x9e98, 0x9eb3, 0x9ec7, 0x9ee0, 0x9f12, 0x9f45, - 0x9f6c, 0x9f8c, 0x9fa8, 0x9fcf, 0x9fe7, 0xa001, 0xa014, 0xa029, - // Entry 2680 - 26BF - 0xa03f, 0xa043, 0xa05f, 0xa07c, 0xa094, 0xa0b0, 0xa0d1, 0xa0f7, - 0xa111, 0xa129, 0xa143, 0xa15f, 0xa17c, 0xa197, 0xa1b0, 0xa1cc, - 0xa1e7, 0xa204, 0xa222, 0xa239, 0xa25b, 0xa27c, 0xa2a1, 0xa2ae, - 0xa2d5, 0xa2fd, 0xa32f, 0xa353, 0xa368, 0xa37d, 0xa393, 0xa3b2, - 0xa3c2, 0xa3dc, 0xa3fd, 0xa416, 0xa42b, 0xa440, 0xa452, 0xa46b, - 0xa488, 0xa49d, 0xa4b5, 0xa4cd, 0xa4ef, 0xa511, 0xa533, 0xa563, - 0xa57b, 0xa59a, 0xa5b4, 0xa5c7, 0xa5f1, 0xa60b, 0xa624, 0xa636, - 0xa647, 0xa663, 0xa67e, 0xa68e, 0xa69f, 0xa6c1, 0xa6dd, 0xa6f8, - // Entry 26C0 - 26FF - 0xa718, 0xa737, 0xa756, 0xa76f, 0xa78f, 0xa7a6, 0xa7c4, 0xa7e3, - 0xa804, 0xa824, 0xa83e, 0xa856, 0xa887, 0xa8b8, 0xa8d5, 0xa8f4, - 0xa909, 0xa921, 0xa935, 0xa95b, 0xa97a, 0xa995, 0xa9b0, 0xa9d0, - 0xa9e2, 0xa9fe, 0xaa1c, 0xaa4e, 0xaa6d, 0xaa89, 0xaaa8, 0xaaca, - 0xaaef, 0xab0c, 0xab2c, 0xab59, 0xab89, 0xabb5, 0xabe4, 0xac16, - 0xac4a, 0xac62, 0xac7d, 0xaca3, 0xaccc, 0xace9, 0xad09, 0xad3d, - 0xad71, 0xad91, 0xadb4, 0xadde, 0xae08, 0xae3c, 0xae70, 0xaeb4, - 0xaef8, 0xaf15, 0xaf35, 0xaf62, 0xaf92, 0xafb3, 0xafd7, 0xb000, - // Entry 2700 - 273F - 0xb02c, 0xb040, 0xb057, 0xb080, 0xb0ac, 0xb0c3, 0xb0dd, 0xb102, - 0xb124, 0xb141, 0xb15a, 0xb176, 0xb1a3, 0xb1d3, 0xb1df, 0xb1ea, - 0xb202, 0xb219, 0xb235, 0xb25b, 0xb281, 0xb2a8, 0xb2cf, 0xb2e9, - 0xb303, 0xb31e, 0xb339, 0xb357, 0xb375, 0xb397, 0xb3b9, 0xb3c8, - 0xb3d7, 0xb3e6, 0xb3f7, 0xb412, 0xb42f, 0xb454, 0xb47b, 0xb49f, - 0xb4c5, 0xb4e0, 0xb4fd, 0xb51b, 0xb53b, 0xb55a, 0xb57b, 0xb597, - 0xb5b5, 0xb5d2, 0xb5f0, 0xb5fd, 0xb60c, 0xb625, 0xb640, 0xb655, - 0xb66a, 0xb67d, 0xb694, 0xb6aa, 0xb6d8, 0xb6f4, 0xb70a, 0xb722, - // Entry 2740 - 277F - 0xb729, 0xb733, 0xb742, 0xb751, 0xb75e, 0xb772, 0xb795, 0xb7b7, - 0xb7d9, 0xb802, 0xb82f, 0xb84b, 0xb866, 0xb889, 0xb899, 0xb8a7, - 0xb8bd, 0xb8dc, 0xb908, 0xb927, 0xb946, 0xb961, 0xb980, 0xb99c, - 0xb9bf, 0xb9e9, 0xb9fe, 0xba15, 0xba2f, 0xba58, 0xba84, 0xbaa2, - 0xbac4, 0xbadb, 0xbaed, 0xbb05, 0xbb1b, 0xbb31, 0xbb47, 0xbb5d, - 0xbb73, 0xbb88, 0xbb9b, 0xbbb0, 0xbbc6, 0xbbdc, 0xbbf2, 0xbc08, - 0xbc1e, 0xbc31, 0xbc54, 0xbc75, 0xbc97, 0xbcb7, 0xbcd1, 0xbcee, - 0xbd19, 0xbd43, 0xbd5f, 0xbd7c, 0xbd97, 0xbdb5, 0xbdc2, 0xbdd4, - // Entry 2780 - 27BF - 0xbde6, 0xbdfd, 0xbe14, 0xbe22, 0xbe30, 0xbe3d, 0xbe4a, 0xbe62, - 0xbe74, 0xbe88, 0xbe9c, 0xbeb0, 0xbec4, 0xbed7, 0xbeea, 0xbefd, - 0xbf15, 0xbf2d, 0xbf43, 0xbf59, 0xbf75, 0xbf8b, 0xbfa7, 0xbfc4, - 0xbff3, 0xc029, 0xc04c, 0xc072, 0xc092, 0xc0c0, 0xc0f5, 0xc119, - 0xc152, 0xc192, 0xc1ab, 0xc1cc, 0xc1ed, 0xc219, 0xc246, 0xc26b, - 0xc28c, 0xc2a5, 0xc2bf, 0xc2ec, 0xc31a, 0xc33e, 0xc363, 0xc38f, - 0xc3bc, 0xc3e2, 0xc3fb, 0xc418, 0xc429, 0xc439, 0xc449, 0xc466, - 0xc483, 0xc495, 0xc4b0, 0xc4cf, 0xc4db, 0xc4f0, 0xc514, 0xc53c, - // Entry 27C0 - 27FF - 0xc564, 0xc590, 0xc5bd, 0xc5f0, 0xc60f, 0xc62c, 0xc64c, 0xc66b, - 0xc68b, 0xc6a8, 0xc6c8, 0xc6e8, 0xc708, 0xc728, 0xc74e, 0xc772, - 0xc799, 0xc7bf, 0xc7ea, 0xc819, 0xc83f, 0xc863, 0xc88a, 0xc8b0, - 0x00b0, 0x00d7, 0x00fe, 0x0125, 0x014c, 0x0189, 0x01c4, 0x0202, - 0x023f, 0x0251, 0x0261, 0x02a6, 0x02f0, 0x0335, 0x037f, 0x03a6, - 0x03cb, 0x03f3, 0x041a, 0x043d, 0x045e, 0x0482, 0x04a5, 0x04d7, - 0x050a, 0x053b, 0x056b, 0x0576, 0x0582, 0x058e, 0x059b, 0x05c4, - 0x05da, 0x01da, 0x020d, 0x0240, 0x0274, 0x02a8, 0x02cd, 0x02f0, - // Entry 2800 - 283F - 0x0316, 0x033b, 0x0372, 0x03aa, 0x03df, 0x0415, 0x044a, 0x0480, - 0x04b7, 0x04ef, 0x0519, 0x0544, 0x056c, 0x0595, 0x05bd, 0x05e6, - 0x0610, 0x063b, 0x0651, 0x0668, 0x067c, 0x0691, 0x06a5, 0x06ba, - 0x06d0, 0x06e7, 0x0717, 0x0736, 0x0336, 0x034d, 0x0356, 0x0364, - 0x0378, 0x038d, 0x03a2, 0x03ba, 0x03c7, 0x03f0, 0x041b, 0x0446, - 0x0472, 0x0072, 0x0087, 0x009f, 0x00bc, 0x00e1, 0x00f8, 0x0117, - 0x0130, 0x0140, 0x0140, 0x0173, 0x01a4, 0x01d8, 0x020b, 0x020b, - 0x0228, 0x0246, 0x0264, 0x0285, 0x02a4, 0x02c3, 0x02e4, 0x0303, - // Entry 2840 - 287F - 0x0323, 0x0341, 0x0367, 0x0382, 0x03a2, 0x03c0, 0x03e1, 0x0402, - 0x0421, 0x043e, 0x045e, 0x047d, 0x049c, 0x04bc, 0x04d9, 0x04f8, - 0x0516, 0x0533, 0x054f, 0x056d, 0x058a, 0x05aa, 0x05c7, 0x05e5, - 0x0603, 0x0621, 0x0645, 0x0661, 0x0684, 0x06b1, 0x06cd, 0x06f8, - 0x0719, 0x0742, 0x0760, 0x0781, 0x07a2, 0x07c8, 0x07f2, 0x03f2, - 0x040d, 0x0429, 0x0445, 0x0464, 0x0481, 0x049e, 0x04bd, 0x04da, - 0x04f8, 0x0514, 0x0538, 0x0551, 0x056f, 0x058b, 0x05aa, 0x05c9, - 0x05e6, 0x0601, 0x061f, 0x063c, 0x0659, 0x0677, 0x0692, 0x06af, - // Entry 2880 - 28BF - 0x06cb, 0x06e6, 0x0700, 0x071c, 0x0737, 0x0755, 0x0770, 0x078c, - 0x07a8, 0x07c4, 0x07e6, 0x0800, 0x0821, 0x084c, 0x0866, 0x088f, - 0x08ae, 0x08d5, 0x08f1, 0x0910, 0x092f, 0x0953, 0x097b, 0x017b, - 0x01a1, 0x01c5, 0x01ed, 0x020f, 0x022f, 0x024f, 0x0278, 0x029d, - 0x02c0, 0x02e5, 0x0308, 0x032d, 0x0350, 0x036a, 0x038a, 0x03a7, - 0x03c8, 0x03ec, 0x040c, 0x042a, 0x0448, 0x0463, 0x047c, 0x049b, - 0x04ba, 0x04df, 0x0508, 0x052b, 0x0549, 0x0562, 0x0588, 0x05ae, - 0x05c8, 0x05e0, 0x05fa, 0x0612, 0x062d, 0x0646, 0x0661, 0x067a, - // Entry 28C0 - 28FF - 0x0693, 0x06aa, 0x06c3, 0x06da, 0x06f4, 0x070c, 0x0726, 0x073e, - 0x075a, 0x0774, 0x078f, 0x07a8, 0x07c2, 0x07da, 0x07f5, 0x080e, - 0x0826, 0x083c, 0x0854, 0x086a, 0x0883, 0x089a, 0x08b1, 0x08c6, - 0x08de, 0x08f4, 0x090c, 0x0922, 0x093c, 0x0954, 0x096d, 0x0984, - 0x099c, 0x09b2, 0x09ca, 0x09e0, 0x09f9, 0x0a10, 0x0a29, 0x0a40, - 0x0a59, 0x0a70, 0x0a94, 0x0ab6, 0x0ada, 0x0afc, 0x0b23, 0x0b48, - 0x0b6c, 0x0b8e, 0x0bb0, 0x0bd0, 0x0bf6, 0x0c1a, 0x0c3e, 0x0c60, - 0x0c7b, 0x0c94, 0x0cb6, 0x0cd6, 0x0cfb, 0x0d1e, 0x0d42, 0x0d64, - // Entry 2900 - 293F - 0x0d87, 0x0da8, 0x0dcc, 0x0dee, 0x0e13, 0x0e36, 0x0e59, 0x0e7a, - 0x0e9b, 0x0eba, 0x0ede, 0x0f00, 0x0f24, 0x0f46, 0x0f6d, 0x0f92, - 0x0fb6, 0x0fd8, 0x0ffe, 0x1022, 0x1048, 0x106c, 0x1090, 0x10b2, - 0x10d6, 0x10f8, 0x111c, 0x113e, 0x114f, 0x1162, 0x1175, 0x118a, - 0x119e, 0x11b2, 0x11ca, 0x11f2, 0x1218, 0x1242, 0x126a, 0x1283, - 0x12a2, 0x12c1, 0x12e4, 0x1305, 0x0305, 0x0320, 0x0346, 0x036e, - 0x038d, 0x03a5, 0x03b5, 0x03d1, 0x03e9, 0x0402, 0x041b, 0x0434, - 0x044c, 0x0465, 0x047e, 0x0497, 0x04af, 0x04c8, 0x04e1, 0x04fa, - // Entry 2940 - 297F - 0x0513, 0x052b, 0x0544, 0x055e, 0x0577, 0x0590, 0x05a9, 0x05c1, - 0x05db, 0x05f5, 0x060f, 0x0628, 0x0642, 0x065c, 0x0675, 0x068e, - 0x06a7, 0x06c1, 0x06da, 0x06f4, 0x070d, 0x0725, 0x073e, 0x0756, - 0x076f, 0x0788, 0x0388, 0x03a0, 0x03a0, 0x03b9, 0x03b9, 0x03cb, - 0x03de, 0x03f2, 0x0405, 0x041a, 0x043c, 0x044f, 0x0462, 0x0476, - 0x048a, 0x049f, 0x04b2, 0x04c5, 0x04d8, 0x04f2, 0x0507, 0x051a, - 0x053c, 0x0556, 0x056a, 0x057d, 0x0591, 0x05ac, 0x05bf, 0x05d9, - 0x05eb, 0x05ff, 0x061b, 0x0636, 0x0649, 0x065c, 0x066f, 0x068a, - // Entry 2980 - 29BF - 0x06a5, 0x06b8, 0x06ca, 0x06dd, 0x06f1, 0x0705, 0x0720, 0x0739, - 0x074c, 0x0760, 0x0774, 0x0787, 0x079b, 0x07af, 0x07c3, 0x07d6, - 0x07e9, 0x07fc, 0x080f, 0x082d, 0x0841, 0x0853, 0x0865, 0x0065, - 0x0090, 0x00a7, 0x00a7, 0x00c0, 0x00d5, 0x00ea, 0x00ff, 0x0114, - 0x012a, 0x013f, 0x0154, 0x0169, 0x017e, 0x0194, 0x01b0, 0x01c5, - 0x01da, 0x01f0, 0x0205, 0x021b, 0x0231, 0x0247, 0x025c, 0x0272, - 0x0288, 0x029f, 0x02b5, 0x02b5, 0x02ca, 0x02df, 0x02f4, 0x030a, - 0x0320, 0x0335, 0x034a, 0x034a, 0x035f, 0x0374, 0x0389, 0x039f, - // Entry 29C0 - 29FF - 0x03b5, 0x03ca, 0x03df, 0x03df, 0x03f4, 0x0409, 0x041e, 0x0434, - 0x044a, 0x045f, 0x0474, 0x0074, 0x008a, 0x00a0, 0x00b6, 0x00cd, - 0x00e4, 0x00fa, 0x0110, 0x0110, 0x0125, 0x013a, 0x014f, 0x0165, - 0x017b, 0x0190, 0x01a5, 0x01a5, 0x01ba, 0x01cf, 0x01e4, 0x01fa, - 0x0210, 0x0225, 0x023a, 0x023a, 0x024f, 0x0264, 0x0279, 0x028f, - 0x02a5, 0x02ba, 0x02cf, 0x02cf, 0x02e4, 0x02f9, 0x030e, 0x0324, - 0x033a, 0x034f, 0x0364, 0x0364, 0x0380, 0x039c, 0x03b9, 0x03d5, - 0x03f2, 0x040e, 0x042a, 0x0446, 0x0462, 0x047e, 0x0499, 0x04b5, - // Entry 2A00 - 2A3F - 0x04d1, 0x04ed, 0x0509, 0x0525, 0x0542, 0x055f, 0x057c, 0x059b, - 0x05b9, 0x05d8, 0x05f3, 0x060f, 0x062e, 0x0654, 0x0671, 0x068d, - 0x06b1, 0x06d5, 0x06f6, 0x0720, 0x073f, 0x0765, 0x077e, 0x0798, - 0x07b8, 0x07d9, 0x07f4, 0x0816, 0x0831, 0x084b, 0x0866, 0x0873, - 0x088f, 0x08ac, 0x08bd, 0x08c8, 0x08da, 0x08f5, 0x0901, 0x090e, - 0x091e, 0x092c, 0x0947, 0x095c, 0x0970, 0x097b, 0x0990, 0x09a5, - 0x09c0, 0x09dc, 0x09f0, 0x0a04, 0x0a20, 0x0a3d, 0x0a52, 0x0a68, - 0x0a80, 0x0a99, 0x0ab0, 0x0ac8, 0x0adf, 0x0af7, 0x0b18, 0x0b39, - // Entry 2A40 - 2A7F - 0x0b55, 0x0b62, 0x0b78, 0x0b86, 0x0b90, 0x0ba9, 0x0bb5, 0x0bbf, - 0x0bcb, 0x0bdb, 0x0bf1, 0x0c08, 0x0c15, 0x0c2a, 0x0c35, 0x0c42, - 0x0c58, 0x0c69, 0x0c7d, 0x0c86, 0x0c93, 0x0ca1, 0x0cc5, 0x0cda, - 0x0cf0, 0x00f0, 0x0102, 0x0113, 0x0129, 0x013f, 0x0157, 0x0169, - 0x0178, 0x0189, 0x019e, 0x01b3, 0x01c9, 0x01d9, 0x01ee, 0x0203, - 0x0217, 0x022b, 0x0241, 0x0256, 0x0267, 0x0279, 0x028e, 0x02a3, - 0x02b8, 0x02cd, 0x02dd, 0x02ec, 0x02ec, 0x02fd, 0x030c, 0x031c, - 0x032d, 0x033f, 0x0353, 0x0368, 0x037d, 0x038d, 0x03a0, 0x03b3, - // Entry 2A80 - 2ABF - 0x03d9, 0x03e8, 0x03f7, 0x0407, 0x0420, 0x042f, 0x0445, 0x045b, - 0x046d, 0x047d, 0x049a, 0x04ad, 0x04c0, 0x04d5, 0x04e9, 0x04f9, - 0x050a, 0x0519, 0x0528, 0x0537, 0x054c, 0x0561, 0x0571, 0x0583, - 0x0598, 0x05ad, 0x05c4, 0x05d5, 0x05e8, 0x05fc, 0x0610, 0x062c, - 0x0647, 0x0657, 0x0676, 0x0694, 0x06a4, 0x06c1, 0x06dc, 0x06f0, - 0x0704, 0x0714, 0x0731, 0x0745, 0x0759, 0x0776, 0x0793, 0x07a8, - 0x07bd, 0x07cd, 0x07dd, 0x0804, 0x0821, 0x083e, 0x085a, 0x086d, - 0x0880, 0x0895, 0x08b1, 0x08c1, 0x08df, 0x08ef, 0x0900, 0x091d, - // Entry 2AC0 - 2AFF - 0x093a, 0x0957, 0x0973, 0x0990, 0x09ad, 0x09ca, 0x09e7, 0x0a05, - 0x0a23, 0x0a42, 0x0a61, 0x0a73, 0x0a92, 0x0ab1, 0x02b1, 0x02c3, - 0x02d6, 0x02e8, 0x02fc, 0x0311, 0x0324, 0x0336, 0x0348, 0x035a, - 0x036d, 0x0381, 0x0395, 0x03ac, 0x03c0, 0x03d2, 0x03e6, 0x03fd, - 0x0411, 0x0425, 0x0438, 0x044c, 0x0469, 0x0488, 0x049a, 0x04b3, - 0x04c6, 0x04da, 0x04f0, 0x0504, 0x0518, 0x0530, 0x0544, 0x055a, - 0x056b, 0x0583, 0x0599, 0x05ab, 0x05bf, 0x05d3, 0x05e6, 0x05f9, - 0x060d, 0x0620, 0x0635, 0x064a, 0x0661, 0x0675, 0x0688, 0x069e, - // Entry 2B00 - 2B3F - 0x06b3, 0x06c5, 0x06e0, 0x06fb, 0x0715, 0x072d, 0x0741, 0x0753, - 0x0767, 0x077d, 0x0790, 0x07a4, 0x07ba, 0x07cd, 0x07e0, 0x07f5, - 0x0807, 0x081c, 0x0831, 0x0843, 0x0858, 0x086a, 0x087c, 0x088e, - 0x08a1, 0x08b4, 0x08c7, 0x08da, 0x08ee, 0x0903, 0x0918, 0x092e, - 0x0940, 0x0953, 0x0967, 0x097b, 0x098e, 0x09a1, 0x09b6, 0x09cd, - 0x09eb, 0x09ff, 0x0a12, 0x0a24, 0x0a36, 0x0a4d, 0x0a60, 0x0a74, - 0x0a87, 0x0a9b, 0x0aae, 0x0ac0, 0x0ad4, 0x0af0, 0x0b07, 0x0b21, - 0x0b35, 0x0b48, 0x0b5b, 0x0b6d, 0x0b81, 0x0b95, 0x0ba9, 0x0bbe, - // Entry 2B40 - 2B7F - 0x0bd2, 0x0be6, 0x0bf9, 0x0c0d, 0x0c22, 0x0c35, 0x0c48, 0x0c5a, - 0x0c6c, 0x0c80, 0x0c96, 0x0ca8, 0x0cba, 0x0ccd, 0x0cdf, 0x0cf3, - 0x0d06, 0x0d1d, 0x0d30, 0x0d45, 0x0d5a, 0x0d6f, 0x0d84, 0x0d97, - 0x0dae, 0x0dc2, 0x0dd6, 0x0dea, 0x0dff, 0x0e13, 0x0e30, 0x0e46, - 0x0e59, 0x0e6b, 0x0e7e, 0x0e93, 0x0ea8, 0x0ebb, 0x0ecd, 0x0ee2, - 0x0ef6, 0x0f08, 0x0f1a, 0x0f2d, 0x0f40, 0x0f53, 0x0f68, 0x0f7e, - 0x0f91, 0x0fa4, 0x0fb7, 0x0fd1, 0x0fe7, 0x0ffa, 0x100d, 0x1020, - 0x1034, 0x1048, 0x1068, 0x107b, 0x108e, 0x10a2, 0x10b5, 0x10cb, - // Entry 2B80 - 2BBF - 0x10e8, 0x10fb, 0x110f, 0x1122, 0x1135, 0x1147, 0x1159, 0x116c, - 0x1183, 0x1197, 0x11aa, 0x11bd, 0x11d0, 0x11e4, 0x1203, 0x121a, - 0x122e, 0x1241, 0x1254, 0x1267, 0x127a, 0x128e, 0x12a1, 0x12b6, - 0x12cb, 0x12df, 0x12f8, 0x130b, 0x1320, 0x1333, 0x1345, 0x1358, - 0x136b, 0x137f, 0x1394, 0x13a9, 0x13bd, 0x03bd, 0x03ec, 0x041c, - 0x0456, 0x0491, 0x04c0, 0x04f5, 0x052a, 0x055e, 0x0598, 0x05d3, - 0x060d, 0x0637, 0x0237, 0x0248, 0x0259, 0x026e, 0x0278, 0x029b, - 0x02b5, 0x02cd, 0x02e4, 0x02f6, 0x0309, 0x0322, 0x033c, 0x034f, - // Entry 2BC0 - 2BFF - 0x0363, 0x037c, 0x0396, 0x03b3, 0x03d1, 0x03dc, 0x03e5, 0x0400, - 0x041c, 0x0439, 0x0457, 0x0478, 0x049a, 0x04b3, 0x04cd, 0x04d6, - 0x04fa, 0x0515, 0x0534, 0x0544, 0x0558, 0x056c, 0x0582, 0x0597, - 0x05ac, 0x05c0, 0x05d6, 0x05ec, 0x0601, 0x061c, 0x0638, 0x0657, - 0x0675, 0x0690, 0x06ab, 0x06b4, 0x06cd, 0x06f8, 0x071c, 0x0752, - 0x0776, 0x0789, 0x07b9, 0x07cd, 0x07e4, 0x07fb, 0x081e, 0x0827, - 0x083c, 0x085b, 0x0876, 0x0076, 0x008d, 0x009e, 0x00b5, 0x00c6, - 0x00dd, 0x00ee, 0x0105, 0x0116, 0x012d, 0x013e, 0x0150, 0x0162, - // Entry 2C00 - 2C3F - 0x0174, 0x0186, 0x0198, 0x01aa, 0x01bc, 0x01ce, 0x01e0, 0x01f2, - 0x0204, 0x0216, 0x0228, 0x023a, 0x024c, 0x025e, 0x0270, 0x0282, - 0x0294, 0x02a6, 0x02b8, 0x02ca, 0x02dc, 0x02ee, 0x0306, 0x0318, - 0x032a, 0x033c, 0x034e, 0x0360, 0x0372, 0x0384, 0x0396, 0x03a8, - 0x03ba, 0x03cc, 0x03de, 0x03f0, 0x0402, 0x0414, 0x0426, 0x0438, - 0x044a, 0x045c, 0x046e, 0x0480, 0x0492, 0x04a4, 0x04b6, 0x04c8, - 0x04da, 0x04ec, 0x04fe, 0x0510, 0x0522, 0x0534, 0x054c, 0x055e, - 0x0576, 0x0588, 0x05a0, 0x05b2, 0x05c4, 0x05d6, 0x05e8, 0x05fa, - // Entry 2C40 - 2C7F - 0x060c, 0x0624, 0x0636, 0x0648, 0x065a, 0x066c, 0x067d, 0x068f, - 0x06a7, 0x06bf, 0x02bf, 0x02ec, 0x031e, 0x0341, 0x0369, 0x0380, - 0x039e, 0x03b3, 0x03d2, 0x03e9, 0x03fa, 0x0411, 0x0422, 0x0439, - 0x044a, 0x0461, 0x0472, 0x0489, 0x049a, 0x04ac, 0x04be, 0x04d0, - 0x04e2, 0x04f4, 0x0506, 0x0518, 0x052a, 0x053c, 0x054e, 0x0560, - 0x0572, 0x0584, 0x0596, 0x05a8, 0x05ba, 0x05cc, 0x05de, 0x05f0, - 0x0602, 0x0614, 0x0626, 0x0638, 0x064a, 0x0662, 0x0674, 0x0686, - 0x0698, 0x06aa, 0x06bc, 0x06ce, 0x06e0, 0x06f2, 0x0704, 0x0716, - // Entry 2C80 - 2CBF - 0x0728, 0x073a, 0x074c, 0x075e, 0x0770, 0x0782, 0x0794, 0x07a6, - 0x07b8, 0x07ca, 0x07dc, 0x07ee, 0x0800, 0x0812, 0x0824, 0x0836, - 0x0848, 0x085a, 0x086c, 0x087e, 0x0890, 0x08a8, 0x08ba, 0x08d2, - 0x08e4, 0x08fc, 0x090e, 0x0920, 0x0932, 0x0944, 0x0956, 0x0968, - 0x0980, 0x0992, 0x09a4, 0x09b6, 0x09c8, 0x09d9, 0x09eb, 0x0a03, - 0x0a1b, 0x0a2d, 0x0a3f, 0x0a51, 0x0a63, 0x0a76, 0x0a9c, 0x0ab3, - 0x0ad1, 0x0ae6, 0x02e6, 0x02f7, 0x0308, 0x0319, 0x032a, 0x033b, - 0x034c, 0x035d, 0x036e, 0x037f, 0x0390, 0x03a1, 0x03b2, 0x03c3, - // Entry 2CC0 - 2CFF - 0x03d4, 0x03e6, 0x03f8, 0x040a, 0x041b, 0x042c, 0x043d, 0x044e, - 0x045f, 0x0470, 0x0481, 0x0493, 0x04a5, 0x04b7, 0x04c9, 0x04db, - 0x04ed, 0x04ff, 0x0512, 0x0525, 0x0537, 0x0548, 0x0559, 0x056b, - 0x057c, 0x058e, 0x05a0, 0x05b2, 0x01b2, 0x01c6, 0x01df, 0x01f8, - 0x020b, 0x0224, 0x023d, 0x0251, 0x026a, 0x027d, 0x0297, 0x02b0, - 0x02c9, 0x02e1, 0x02fc, 0x0317, 0x0330, 0x0343, 0x0356, 0x036e, - 0x0386, 0x0398, 0x03af, 0x03c2, 0x03d5, 0x03ed, 0x0402, 0x0417, - 0x042c, 0x0441, 0x0454, 0x0463, 0x0473, 0x0483, 0x0494, 0x04a4, - // Entry 2D00 - 2D3F - 0x04b3, 0x04c4, 0x04d4, 0x04e3, 0x04f3, 0x0504, 0x0514, 0x0524, - 0x0533, 0x0544, 0x0554, 0x0564, 0x0574, 0x0584, 0x0594, 0x05a3, - 0x05b0, 0x05c8, 0x05e2, 0x05fa, 0x0615, 0x0634, 0x064e, 0x066c, - 0x0687, 0x06a6, 0x06bf, 0x06d7, 0x06f2, 0x070d, 0x0727, 0x0741, - 0x0760, 0x077f, 0x0798, 0x07b3, 0x07ce, 0x07ee, 0x0807, 0x081f, - 0x0838, 0x0850, 0x0868, 0x087d, 0x0895, 0x08ab, 0x08c6, 0x08e4, - 0x0901, 0x0919, 0x0932, 0x0945, 0x0959, 0x096b, 0x097f, 0x0992, - 0x09a4, 0x09b7, 0x09cb, 0x01cb, 0x01ee, 0x0211, 0x0230, 0x024f, - // Entry 2D40 - 2D7F - 0x0270, 0x0290, 0x02af, 0x02d1, 0x02f3, 0x0314, 0x0336, 0x0357, - 0x0379, 0x039b, 0x03bc, 0x03db, 0x03ed, 0x03ff, 0x0411, 0x0423, - 0x0435, 0x0448, 0x045a, 0x046d, 0x047f, 0x0492, 0x04a5, 0x04b8, - 0x04ca, 0x04dd, 0x04f1, 0x0505, 0x0517, 0x0529, 0x053c, 0x0550, - 0x0567, 0x057e, 0x0595, 0x05ac, 0x05be, 0x05d0, 0x05e2, 0x01e2, - 0x01ee, 0x01fb, 0x0208, 0x0216, 0x0223, 0x0231, 0x023f, 0x024c, - 0x025b, 0x026a, 0x0278, 0x0287, 0x0296, 0x02a4, 0x02b3, 0x02bf, - 0x02cb, 0x02d7, 0x02e3, 0x02f0, 0x02fc, 0x0309, 0x0316, 0x0323, - // Entry 2D80 - 2DBF - 0x0331, 0x033e, 0x034b, 0x0358, 0x0365, 0x0372, 0x0380, 0x038e, - 0x039d, 0x03ad, 0x03ba, 0x03c6, 0x03c6, 0x03de, 0x03f6, 0x040e, - 0x0426, 0x043e, 0x0456, 0x046e, 0x0486, 0x049e, 0x04b6, 0x04ce, - 0x04e6, 0x04fe, 0x0516, 0x052e, 0x0546, 0x0561, 0x057b, 0x0596, - 0x05b0, 0x05ca, 0x05e4, 0x05fd, 0x0617, 0x0631, 0x064d, 0x0669, - 0x0685, 0x06a1, 0x06bb, 0x06d8, 0x06f4, 0x0711, 0x072d, 0x0749, - 0x0765, 0x0780, 0x079c, 0x07b8, 0x07d6, 0x07f4, 0x0812, 0x0830, - 0x084c, 0x0868, 0x088c, 0x08af, 0x00af, 0x00ca, 0x00e5, 0x0102, - // Entry 2DC0 - 2DFF - 0x011e, 0x013a, 0x0155, 0x0172, 0x018f, 0x01ab, 0x01c6, 0x01e2, - 0x01fe, 0x021b, 0x0237, 0x0254, 0x0271, 0x028c, 0x02a9, 0x02c5, - 0x02e4, 0x0300, 0x031f, 0x0340, 0x0366, 0x0383, 0x03a4, 0x03c0, - 0x03dd, 0x03fe, 0x0420, 0x0440, 0x0460, 0x0480, 0x049c, 0x04b8, - 0x04d5, 0x04ef, 0x050d, 0x0525, 0x053b, 0x055d, 0x0582, 0x05a7, - 0x05cb, 0x05ef, 0x0613, 0x0639, 0x065e, 0x066e, 0x0687, 0x06a0, - 0x06bb, 0x06d5, 0x06ef, 0x0708, 0x0723, 0x073e, 0x0758, 0x076d, - 0x0786, 0x079f, 0x07ba, 0x07d4, 0x07ee, 0x0803, 0x0817, 0x082c, - // Entry 2E00 - 2E3F - 0x0840, 0x0854, 0x0868, 0x087b, 0x088f, 0x08a3, 0x08b9, 0x08cf, - 0x08e5, 0x08fb, 0x090f, 0x0926, 0x093c, 0x0953, 0x0969, 0x097f, - 0x0995, 0x09aa, 0x09c0, 0x09d6, 0x09ee, 0x0a06, 0x0a1e, 0x0a36, - 0x0a4c, 0x0a6b, 0x0a89, 0x0a9f, 0x0ab5, 0x0aca, 0x0adf, 0x0af6, - 0x0b0c, 0x0b22, 0x0b37, 0x0b4e, 0x0b65, 0x0b7b, 0x0b90, 0x0ba6, - 0x0bbc, 0x0bd3, 0x0be9, 0x0c00, 0x0c17, 0x0c2c, 0x0c43, 0x0c59, - 0x0c72, 0x0c88, 0x0ca1, 0x0cbc, 0x0cdc, 0x0cf3, 0x0d0b, 0x0d21, - 0x0d39, 0x0d53, 0x0d6e, 0x0d85, 0x0da0, 0x0db6, 0x0dcc, 0x0de2, - // Entry 2E40 - 2E7F - 0x0dfb, 0x0e11, 0x0e29, 0x0e3e, 0x0e54, 0x0e6b, 0x0e85, 0x0e9f, - 0x0eb6, 0x0ed1, 0x0eed, 0x0f07, 0x0f21, 0x0f38, 0x0f51, 0x0f6c, - 0x0f87, 0x0fa1, 0x0fb5, 0x0fcd, 0x0fe5, 0x0fff, 0x1018, 0x1031, - 0x1049, 0x1063, 0x107d, 0x1096, 0x10aa, 0x10d2, 0x10fb, 0x1121, - 0x1147, 0x116b, 0x1190, 0x11b5, 0x11dc, 0x1206, 0x122e, 0x1257, - 0x1280, 0x1289, 0x1293, 0x129c, 0x12b2, 0x12c4, 0x12d6, 0x12e8, - 0x12fa, 0x130c, 0x131f, 0x1332, 0x1345, 0x1358, 0x136b, 0x137e, - 0x1391, 0x13a4, 0x13b7, 0x13ca, 0x13dd, 0x13f0, 0x1403, 0x1416, - // Entry 2E80 - 2EBF - 0x1429, 0x143c, 0x144f, 0x1462, 0x1475, 0x1488, 0x149b, 0x14ae, - 0x14c1, 0x14d4, 0x14e7, 0x14fa, 0x150d, 0x1520, 0x1533, 0x1546, - 0x1559, 0x156c, 0x157f, 0x1592, 0x15a5, 0x15b8, 0x15cb, 0x15de, - 0x15f1, 0x1604, 0x1617, 0x162a, 0x022a, 0x0237, 0x0244, 0x0250, - 0x025b, 0x0268, 0x0273, 0x027d, 0x028c, 0x0298, 0x02a3, 0x02ae, - 0x02ba, 0x02c8, 0x02d6, 0x02e2, 0x02ee, 0x02f9, 0x0305, 0x0312, - 0x0320, 0x032b, 0x033c, 0x034e, 0x035e, 0x036b, 0x037b, 0x038b, - 0x0399, 0x03a5, 0x03b2, 0x03be, 0x03cc, 0x03db, 0x03e9, 0x03f5, - // Entry 2EC0 - 2EFF - 0x0401, 0x040d, 0x0418, 0x0423, 0x042d, 0x0438, 0x0444, 0x0450, - 0x045f, 0x046b, 0x0479, 0x0489, 0x0496, 0x04a1, 0x04ac, 0x04bb, - 0x04c8, 0x04d7, 0x04e3, 0x04f3, 0x04fe, 0x050b, 0x0518, 0x0524, - 0x0530, 0x053c, 0x0549, 0x0556, 0x0560, 0x056c, 0x0578, 0x0583, - 0x0591, 0x059d, 0x05a9, 0x05b6, 0x05c4, 0x05d2, 0x05dd, 0x05ed, - 0x05f8, 0x0606, 0x0614, 0x0620, 0x062c, 0x0637, 0x0645, 0x0650, - 0x065c, 0x066a, 0x0675, 0x0684, 0x0690, 0x06ba, 0x06e3, 0x070c, - 0x0737, 0x0761, 0x078b, 0x07b4, 0x07df, 0x080a, 0x0834, 0x085d, - // Entry 2F00 - 2F3F - 0x0889, 0x08b5, 0x08e3, 0x0911, 0x093e, 0x096b, 0x099a, 0x09c8, - 0x09f6, 0x0a22, 0x0a52, 0x0a82, 0x0ab4, 0x0ae5, 0x0aef, 0x0af8, - 0x0b01, 0x0b0b, 0x0b14, 0x0b1d, 0x0b26, 0x0b37, 0x0b46, 0x0b4f, - 0x0b65, 0x0b7b, 0x0b92, 0x0ba7, 0x0bb9, 0x0bc7, 0x0bd0, 0x0bdb, - 0x0be4, 0x0bed, 0x0bf6, 0x0bff, 0x0c08, 0x0c12, 0x0c1d, 0x0c26, - 0x0c2f, 0x0c3a, 0x0c45, 0x0c4e, 0x0c57, 0x0c60, 0x0c6a, 0x0c74, - 0x0c7e, 0x0c88, 0x0c93, 0x0c9c, 0x0ca5, 0x0cae, 0x0cb7, 0x0cc0, - 0x0ccb, 0x0cd4, 0x0cdd, 0x0ce6, 0x0cf7, 0x0d08, 0x0d18, 0x0d29, - // Entry 2F40 - 2F7F - 0x0d38, 0x0d47, 0x0d55, 0x0d64, 0x0d73, 0x0d8a, 0x0d93, 0x0d9d, - 0x0da7, 0x0db1, 0x0dbb, 0x0dcc, 0x0de5, 0x0dee, 0x0df7, 0x0e02, - 0x0e0b, 0x0e14, 0x0e1d, 0x0e28, 0x0e31, 0x0e3a, 0x0e48, 0x0e51, - 0x0e5a, 0x0e65, 0x0e6e, 0x0e77, 0x0e85, 0x0e91, 0x0e9d, 0x0ea6, - 0x0eaf, 0x0eb8, 0x0ec1, 0x0ed1, 0x0eda, 0x0ee3, 0x0eec, 0x0ef5, - 0x0efe, 0x0f07, 0x0f10, 0x0f21, 0x0f2a, 0x0f33, 0x0f3c, 0x0f46, - 0x0f4f, 0x0f5e, 0x0f68, 0x0f72, 0x0f7b, 0x0f84, 0x0f8e, 0x0f97, - 0x0fa0, 0x0fa9, 0x0fb2, 0x0fc1, 0x0fd0, 0x0ff8, 0x1020, 0x104a, - // Entry 2F80 - 2FBF - 0x1073, 0x109c, 0x10c4, 0x10ee, 0x1118, 0x1141, 0x1169, 0x1194, - 0x11bf, 0x11ec, 0x1219, 0x1245, 0x1271, 0x129f, 0x12cc, 0x12f9, - 0x1324, 0x1353, 0x1382, 0x13b3, 0x13e3, 0x1413, 0x1442, 0x1473, - 0x14a4, 0x14d4, 0x14ff, 0x152e, 0x1538, 0x0138, 0x0158, 0x0178, - 0x01a0, 0x01bb, 0x01cf, 0x01e4, 0x01f9, 0x0216, 0x022f, 0x0244, - 0x0256, 0x026d, 0x0284, 0x02a1, 0x02b5, 0x02cc, 0x02e2, 0x0302, - 0x0317, 0x0331, 0x034c, 0x035e, 0x037a, 0x038d, 0x03a3, 0x03bc, - 0x03d6, 0x03f6, 0x0414, 0x0432, 0x0448, 0x045d, 0x0471, 0x0489, - // Entry 2FC0 - 2FFF - 0x049e, 0x04c1, 0x04d8, 0x04ef, 0x0507, 0x051f, 0x0534, 0x0549, - 0x0562, 0x057d, 0x059c, 0x05b7, 0x05ce, 0x05e3, 0x05fa, 0x0613, - 0x0634, 0x065b, 0x0673, 0x0693, 0x06a9, 0x06c2, 0x06de, 0x06fa, - 0x0711, 0x0728, 0x0740, 0x0760, 0x077d, 0x079b, 0x039b, 0x03a9, - 0x03b7, 0x03c4, 0x03d2, 0x03e1, 0x03f0, 0x03fe, 0x040d, 0x041b, - 0x0429, 0x0436, 0x0444, 0x0453, 0x0461, 0x0470, 0x047e, 0x048c, - 0x0499, 0x04a7, 0x04b5, 0x04c2, 0x04d0, 0x04df, 0x04ee, 0x04fc, - 0x050b, 0x051b, 0x052b, 0x053a, 0x054a, 0x0559, 0x0568, 0x0576, - // Entry 3000 - 303F - 0x0585, 0x0595, 0x05a4, 0x05b4, 0x05c3, 0x05d2, 0x05e0, 0x05ef, - 0x05fe, 0x060c, 0x061b, 0x062a, 0x0639, 0x0647, 0x0656, 0x0666, - 0x0675, 0x0684, 0x0693, 0x06a1, 0x06b0, 0x06c0, 0x06cf, 0x06de, - 0x06ed, 0x06fb, 0x070a, 0x071a, 0x0729, 0x0739, 0x0748, 0x0757, - 0x0765, 0x0774, 0x0784, 0x0793, 0x07a3, 0x07b2, 0x07c1, 0x07cf, - 0x07de, 0x07ed, 0x07fc, 0x080a, 0x0819, 0x0829, 0x0838, 0x0847, - 0x0856, 0x0864, 0x0873, 0x0883, 0x0892, 0x08a2, 0x08b2, 0x08c1, - 0x08d1, 0x08e2, 0x08f3, 0x0903, 0x0914, 0x0924, 0x0934, 0x0943, - // Entry 3040 - 307F - 0x0953, 0x0964, 0x0974, 0x0985, 0x0995, 0x09a5, 0x09b4, 0x09c4, - 0x09d4, 0x09e3, 0x09f3, 0x0a03, 0x0a13, 0x0a22, 0x0a32, 0x0a43, - 0x0a53, 0x0a63, 0x0a73, 0x0a82, 0x0a92, 0x0aa2, 0x0ab2, 0x0ac1, - 0x0ad1, 0x0ae2, 0x0af2, 0x0b03, 0x0b13, 0x0b23, 0x0b32, 0x0b42, - 0x0b52, 0x0b62, 0x0b71, 0x0b81, 0x0b91, 0x0ba1, 0x0bb0, 0x0bc0, - 0x0bd1, 0x0be1, 0x0bf1, 0x0c01, 0x0c10, 0x0c20, 0x0c31, 0x0c41, - 0x0c51, 0x0c61, 0x0c70, 0x0c80, 0x0c91, 0x0ca1, 0x0cb2, 0x0cc2, - 0x0cd2, 0x0ce1, 0x0cf1, 0x0d02, 0x0d12, 0x0d23, 0x0d33, 0x0d43, - // Entry 3080 - 30BF - 0x0d52, 0x0d62, 0x0d72, 0x0d82, 0x0d91, 0x0da1, 0x0db2, 0x0dc2, - 0x0dd2, 0x0de1, 0x0df1, 0x0e02, 0x0e12, 0x0e21, 0x0e30, 0x0e3e, - 0x0e4d, 0x0e5d, 0x0e6c, 0x0e7c, 0x0e8b, 0x0e9a, 0x0ea8, 0x0eb7, - 0x0ec7, 0x0ed7, 0x0ee6, 0x0ef6, 0x0f05, 0x0f14, 0x0f22, 0x0f31, - 0x0f40, 0x0f4e, 0x0f5d, 0x0f6c, 0x0f7a, 0x0f89, 0x0f99, 0x0fa8, - 0x0fb7, 0x0fc6, 0x0fd4, 0x0fe3, 0x0ff2, 0x1001, 0x100f, 0x101e, - 0x102d, 0x103c, 0x104a, 0x1059, 0x1068, 0x1076, 0x1085, 0x1094, - 0x10a3, 0x10b1, 0x10c0, 0x10d0, 0x10df, 0x10ee, 0x10fd, 0x110b, - // Entry 30C0 - 30FF - 0x111a, 0x1129, 0x1138, 0x1146, 0x1155, 0x1165, 0x1175, 0x1184, - 0x1194, 0x11a3, 0x11b2, 0x11c0, 0x11cf, 0x11de, 0x11ed, 0x11fb, - 0x120a, 0x1219, 0x1228, 0x1237, 0x1246, 0x1254, 0x1263, 0x1273, - 0x1282, 0x1291, 0x12a0, 0x12ae, 0x12bd, 0x12cd, 0x12dc, 0x12eb, - 0x12fa, 0x1308, 0x1317, 0x1327, 0x1336, 0x1346, 0x1355, 0x1364, - 0x1372, 0x1381, 0x1391, 0x13a0, 0x13af, 0x13be, 0x13cc, 0x13db, - 0x13ea, 0x13f8, 0x1407, 0x1416, 0x1425, 0x1433, 0x1442, 0x1452, - 0x1461, 0x1470, 0x147f, 0x148d, 0x149c, 0x14ac, 0x14bb, 0x14cb, - // Entry 3100 - 313F - 0x14da, 0x14e9, 0x14f7, 0x1506, 0x1516, 0x1526, 0x1535, 0x1545, - 0x1554, 0x1563, 0x1571, 0x1580, 0x158f, 0x159d, 0x15ac, 0x15bb, - 0x15ca, 0x15d8, 0x15e7, 0x15f7, 0x1606, 0x1616, 0x1626, 0x1635, - 0x1645, 0x1656, 0x1666, 0x1677, 0x1687, 0x1697, 0x16a6, 0x16b6, - 0x16c7, 0x16d7, 0x16e8, 0x16f8, 0x1708, 0x1717, 0x1727, 0x1737, - 0x1746, 0x1756, 0x1766, 0x1776, 0x1785, 0x1795, 0x17a6, 0x17b6, - 0x17c6, 0x17d6, 0x17e5, 0x17f5, 0x1806, 0x1816, 0x1826, 0x1836, - 0x1845, 0x1855, 0x1865, 0x1875, 0x1884, 0x1894, 0x18a4, 0x18b3, - // Entry 3140 - 317F - 0x18c3, 0x18d3, 0x18e3, 0x18f2, 0x1902, 0x1913, 0x1923, 0x1933, - 0x1943, 0x1952, 0x1962, 0x1973, 0x1984, 0x1994, 0x19a5, 0x19b5, - 0x19c5, 0x19d4, 0x19e4, 0x19f5, 0x1a05, 0x1a15, 0x1a25, 0x1a35, - 0x1a45, 0x1a54, 0x1a64, 0x1a74, 0x1a83, 0x1a92, 0x1aa0, 0x1aaf, - 0x1abf, 0x1ace, 0x1ade, 0x1aed, 0x1afb, 0x1b0a, 0x1b1a, 0x1b29, - 0x1b39, 0x1b48, 0x1b57, 0x1b65, 0x1b74, 0x1b83, 0x1b91, 0x1ba0, - 0x1baf, 0x1bbe, 0x1bcc, 0x1bdb, 0x1beb, 0x1bfa, 0x1c0a, 0x1c1a, - 0x1c29, 0x1c39, 0x1c4a, 0x1c5a, 0x1c6b, 0x1c7b, 0x1c8b, 0x1c9a, - // Entry 3180 - 31BF - 0x1caa, 0x1cbb, 0x1ccb, 0x1cdc, 0x1cec, 0x1cfb, 0x1d0b, 0x1d1b, - 0x1d2a, 0x1d3a, 0x1d4a, 0x1d5a, 0x1d69, 0x1d79, 0x1d8a, 0x1d9a, - 0x1daa, 0x1dba, 0x1dc9, 0x1dd9, 0x1dea, 0x1dfa, 0x1e09, 0x1e18, - 0x1e26, 0x1e35, 0x1e45, 0x1e55, 0x1e64, 0x1e74, 0x1e83, 0x1e92, - 0x1ea0, 0x1eaf, 0x1ebf, 0x1ecf, 0x1ede, 0x1eee, 0x1efd, 0x1f0c, - 0x1f1a, 0x1f29, 0x1f38, 0x1f46, 0x1f55, 0x1f64, 0x1f73, 0x1f81, - 0x1f90, 0x1fa0, 0x1faf, 0x1fbe, 0x1fcd, 0x1fdb, 0x1fea, 0x1ffa, - 0x2009, 0x2018, 0x2027, 0x2035, 0x2044, 0x2054, 0x2064, 0x2073, - // Entry 31C0 - 31FF - 0x2083, 0x2092, 0x20a1, 0x20af, 0x20be, 0x20ce, 0x20de, 0x20ed, - 0x20fd, 0x210c, 0x211b, 0x2129, 0x2138, 0x2147, 0x2156, 0x2164, - 0x2173, 0x2182, 0x2191, 0x219f, 0x21ae, 0x21be, 0x21cd, 0x21dc, - 0x21eb, 0x21f9, 0x2208, 0x2218, 0x2227, 0x2237, 0x2246, 0x2255, - 0x2263, 0x2272, 0x2282, 0x2291, 0x22a1, 0x22b0, 0x22bf, 0x22cd, - 0x22dc, 0x22eb, 0x22fa, 0x2308, 0x2317, 0x2326, 0x2335, 0x2343, - 0x2352, 0x2362, 0x2371, 0x2381, 0x2391, 0x23a0, 0x23b1, 0x23c1, - 0x23d2, 0x23e2, 0x23f2, 0x2401, 0x2411, 0x2422, 0x2433, 0x2443, - // Entry 3200 - 323F - 0x2454, 0x2464, 0x2474, 0x2483, 0x2493, 0x24a3, 0x24b3, 0x24c2, - 0x24d2, 0x24e2, 0x24f2, 0x2501, 0x2511, 0x2522, 0x2532, 0x2543, - 0x2553, 0x2563, 0x2573, 0x2582, 0x2592, 0x25a3, 0x25b3, 0x25c4, - 0x25d4, 0x25e4, 0x25f3, 0x2603, 0x2613, 0x2622, 0x2632, 0x2642, - 0x2652, 0x2661, 0x2671, 0x2682, 0x2692, 0x26a2, 0x26b2, 0x26c1, - 0x26d1, 0x26e2, 0x26f3, 0x2703, 0x2714, 0x2724, 0x2734, 0x2743, - 0x2753, 0x2764, 0x2775, 0x2785, 0x2796, 0x27a6, 0x27b6, 0x27c5, - 0x27d5, 0x27e5, 0x27f4, 0x2804, 0x2815, 0x2825, 0x2836, 0x2846, - // Entry 3240 - 327F - 0x2856, 0x2865, 0x2875, 0x2886, 0x2897, 0x28a7, 0x28b7, 0x28c7, - 0x28d6, 0x28e6, 0x28f6, 0x2905, 0x2915, 0x2924, 0x2934, 0x2943, - 0x2952, 0x2961, 0x296f, 0x297e, 0x298e, 0x299e, 0x29ad, 0x29bd, - 0x29cc, 0x29db, 0x29e9, 0x29f8, 0x2a07, 0x2a15, 0x2a24, 0x2a33, - 0x2a42, 0x2a50, 0x2a5f, 0x2a6f, 0x2a7e, 0x2a8e, 0x2a9d, 0x2aab, - 0x2aba, 0x2ac9, 0x2ad7, 0x2ae6, 0x2af5, 0x2b04, 0x2b12, 0x2b21, - 0x2b31, 0x2b40, 0x2b50, 0x2b5f, 0x2b6e, 0x2b7c, 0x2b8b, 0x2b9b, - 0x2baa, 0x2bba, 0x2bc9, 0x2bd8, 0x2be6, 0x2bf5, 0x2c04, 0x2c12, - // Entry 3280 - 32BF - 0x2c21, 0x2c30, 0x2c3f, 0x2c4d, 0x2c5c, 0x2c6c, 0x2c7b, 0x2c8a, - 0x2c99, 0x2ca7, 0x2cb6, 0x2cc6, 0x2cd5, 0x2ce4, 0x2cf3, 0x2d01, - 0x2d10, 0x2d20, 0x2d30, 0x2d3f, 0x2d4f, 0x2d5e, 0x2d6d, 0x2d7b, - 0x2d8a, 0x2d9a, 0x2da9, 0x2db9, 0x2dc8, 0x2dd7, 0x2de5, 0x2df4, - 0x2e03, 0x2e11, 0x2e20, 0x2e2f, 0x2e3e, 0x2e4c, 0x2e5b, 0x2e6b, - 0x2e7a, 0x2e89, 0x2e98, 0x2ea6, 0x2eb5, 0x2ec5, 0x2ed4, 0x2ee4, - 0x2ef4, 0x2f03, 0x2f13, 0x2f24, 0x2f35, 0x2f45, 0x2f56, 0x2f66, - 0x2f76, 0x2f85, 0x2f95, 0x2fa5, 0x2fb4, 0x2fc4, 0x2fd4, 0x2fe3, - // Entry 32C0 - 32FF - 0x2ff3, 0x3003, 0x3012, 0x3022, 0x3033, 0x3043, 0x3053, 0x3063, - 0x3072, 0x3082, 0x3093, 0x30a3, 0x30b3, 0x30c3, 0x30d2, 0x30e2, - 0x30f3, 0x3103, 0x3114, 0x3124, 0x3134, 0x3143, 0x3153, 0x3164, - 0x3174, 0x3184, 0x3194, 0x31a4, 0x31b3, 0x31c3, 0x31d2, 0x31e2, - 0x31f3, 0x3203, 0x3213, 0x3223, 0x3232, 0x3242, 0x3253, 0x3263, - 0x3272, 0x3281, 0x328f, 0x329e, 0x32ae, 0x32bd, 0x32cd, 0x32dc, - 0x32eb, 0x32f9, 0x3308, 0x3318, 0x3327, 0x3337, 0x3346, 0x3355, - 0x3363, 0x3372, 0x3381, 0x338f, 0x339e, 0x33ad, 0x33bc, 0x33ca, - // Entry 3300 - 333F - 0x33d9, 0x33e9, 0x33f8, 0x3407, 0x3416, 0x3424, 0x3433, 0x3443, - 0x3452, 0x3462, 0x3472, 0x3481, 0x3491, 0x34a2, 0x34b2, 0x34c3, - 0x34d3, 0x34e3, 0x34f2, 0x3502, 0x3512, 0x3522, 0x3531, 0x3541, - 0x3551, 0x3560, 0x3570, 0x3580, 0x3590, 0x359f, 0x35af, 0x35bf, - 0x35cf, 0x35de, 0x35ee, 0x35ff, 0x360f, 0x361f, 0x362f, 0x363e, - 0x364e, 0x365f, 0x366f, 0x3680, 0x3690, 0x36a0, 0x36af, 0x36bf, - 0x36cf, 0x36df, 0x36ee, 0x36fe, 0x370e, 0x371e, 0x372d, 0x373d, - 0x374e, 0x375e, 0x376e, 0x377e, 0x378d, 0x379d, 0x37ae, 0x37be, - // Entry 3340 - 337F - 0x37ce, 0x37de, 0x37ed, 0x37fd, 0x380e, 0x381f, 0x382f, 0x3840, - 0x3850, 0x3860, 0x386f, 0x387f, 0x388f, 0x389f, 0x38ae, 0x38be, - 0x38ce, 0x38dd, 0x38ed, 0x38fe, 0x390e, 0x391e, 0x392e, 0x393d, - 0x394d, 0x395e, 0x396e, 0x397e, 0x398d, 0x399e, 0x39ae, 0x39be, - 0x39ce, 0x39dd, 0x39ed, 0x39fd, 0x3a0d, 0x3a1c, 0x3a2c, 0x3a3c, - 0x3a4c, 0x3a5b, 0x3a6b, 0x3a7c, 0x3a8c, 0x3a9c, 0x3aac, 0x3abb, - 0x3acb, 0x3adc, 0x3aec, 0x3afc, 0x3b0c, 0x3b1b, 0x3b2b, 0x3b3b, - 0x3b4a, 0x3b5a, 0x3b6a, 0x3b7a, 0x3b89, 0x3b99, 0x3ba9, 0x3bb9, - // Entry 3380 - 33BF - 0x3bc8, 0x3bd8, 0x3be9, 0x3bf9, 0x3c09, 0x3c19, 0x3c28, 0x3c38, - 0x3c49, 0x3c59, 0x3c69, 0x3c79, 0x3c88, 0x3c98, 0x3ca9, 0x3cb9, - 0x3cca, 0x3cda, 0x3cea, 0x3cf9, 0x3d09, 0x3d19, 0x3d29, 0x3d38, - 0x3d48, 0x3d58, 0x3d68, 0x3d77, 0x3d87, 0x3d98, 0x3da8, 0x3db8, - 0x3dc8, 0x3dd7, 0x3de7, 0x3df8, 0x3e08, 0x3e17, 0x3e26, 0x3e34, - 0x3e43, 0x3e53, 0x3e62, 0x3e72, 0x3e81, 0x3e90, 0x3e9e, 0x3ead, - 0x3ebc, 0x3eca, 0x3ed9, 0x3ee8, 0x3ef7, 0x3f05, 0x3f14, 0x3f24, - 0x3f33, 0x3f42, 0x3f51, 0x3f5f, 0x3f6e, 0x3f7e, 0x3f8d, 0x3f9c, - // Entry 33C0 - 33FF - 0x3fab, 0x3fb9, 0x3fc8, 0x3fd8, 0x3fe8, 0x3ff7, 0x4007, 0x4017, - 0x4027, 0x4036, 0x4046, 0x4055, 0x4064, 0x4072, 0x4081, 0x4090, - 0x409f, 0x40ad, 0x40bc, 0x40cc, 0x40db, 0x40ea, 0x40f9, 0x4107, - 0x4116, 0x4126, 0x4135, 0x4144, 0x4153, 0x4161, 0x4170, 0x4180, - 0x4190, 0x419f, 0x41af, 0x41bf, 0x41cf, 0x41de, 0x41ee, 0x41fd, - 0x420c, 0x421a, 0x4229, 0x4238, 0x4247, 0x4255, 0x4264, 0x4274, - 0x4283, 0x4292, 0x42a1, 0x42af, 0x42be, 0x42ce, 0x42dd, 0x42ed, - 0x42fd, 0x430c, 0x431c, 0x432d, 0x433e, 0x434e, 0x435f, 0x4370, - // Entry 3400 - 343F - 0x4380, 0x4391, 0x43a1, 0x43b1, 0x43c0, 0x43d0, 0x43e0, 0x43f0, - 0x43ff, 0x440f, 0x4420, 0x4430, 0x4440, 0x4450, 0x445f, 0x446f, - 0x447f, 0x448f, 0x449e, 0x44ae, 0x44bf, 0x44d0, 0x44e0, 0x44f1, - 0x4502, 0x4512, 0x4522, 0x4532, 0x4541, 0x4551, 0x4561, 0x4570, - 0x4580, 0x4591, 0x45a1, 0x45b1, 0x45c1, 0x45d0, 0x45e0, 0x45f1, - 0x4601, 0x4611, 0x4621, 0x4630, 0x4640, 0x4651, 0x4662, 0x4672, - 0x4683, 0x4694, 0x46a4, 0x46b5, 0x46c5, 0x46d5, 0x46e4, 0x46f4, - 0x4704, 0x4714, 0x4723, 0x4733, 0x4742, 0x4751, 0x475f, 0x476e, - // Entry 3440 - 347F - 0x477e, 0x478e, 0x479d, 0x47ad, 0x47bd, 0x47cc, 0x47db, 0x47ea, - 0x47f8, 0x4807, 0x4816, 0x4825, 0x4833, 0x4842, 0x4852, 0x4861, - 0x4870, 0x487f, 0x488d, 0x489c, 0x48ac, 0x48bc, 0x48cb, 0x48db, - 0x48eb, 0x48fb, 0x490a, 0x491a, 0x4929, 0x4938, 0x4946, 0x4955, - 0x4964, 0x4973, 0x4981, 0x4990, 0x49a0, 0x49af, 0x49be, 0x49cd, - 0x49db, 0x49ea, 0x49fa, 0x4a09, 0x0209, 0x0217, 0x0224, 0x0232, - 0x0241, 0x024f, 0x025d, 0x026c, 0x027a, 0x0287, 0x0296, 0x02a4, - 0x02b3, 0x02c1, 0x02ce, 0x02dc, 0x02eb, 0x02f9, 0x0306, 0x0314, - // Entry 3480 - 34BF - 0x0322, 0x0331, 0x033f, 0x034e, 0x035d, 0x036a, 0x0377, 0x0386, - 0x0394, 0x03a2, 0x03b0, 0x03be, 0x03cc, 0x03da, 0x03e8, 0x03f5, - 0x0402, 0x0411, 0x041f, 0x042d, 0x043c, 0x0449, 0x0456, 0x0465, - 0x0473, 0x0480, 0x048f, 0x049d, 0x04ac, 0x04bb, 0x04c9, 0x04d8, - 0x04e6, 0x04f6, 0x0505, 0x0512, 0x0112, 0x0120, 0x012e, 0x013d, - 0x014b, 0x0159, 0x0168, 0x0176, 0x0184, 0x0193, 0x01a1, 0x01af, - 0x01be, 0x01cd, 0x01dc, 0x01ec, 0x01fa, 0x0208, 0x0216, 0x0224, - 0x0233, 0x0241, 0x0250, 0x025e, 0x026c, 0x027b, 0x0289, 0x0297, - // Entry 34C0 - 34FF - 0x02a6, 0x02b4, 0x02c3, 0x02d0, 0x02de, 0x02eb, 0x02f9, 0x0306, - 0x0313, 0x0320, 0x032e, 0x033c, 0x034a, 0x0361, 0x0377, 0x038f, - 0x03a6, 0x03bd, 0x03d5, 0x03eb, 0x0405, 0x0414, 0x0424, 0x0434, - 0x0444, 0x0455, 0x0465, 0x0476, 0x0486, 0x0497, 0x04a8, 0x04ba, - 0x04cb, 0x04db, 0x04eb, 0x04fb, 0x050c, 0x051d, 0x052f, 0x053f, - 0x054f, 0x055f, 0x0570, 0x0580, 0x0591, 0x05a1, 0x05b2, 0x05c2, - 0x05d2, 0x05e3, 0x05f3, 0x0603, 0x0615, 0x0625, 0x0635, 0x0645, - 0x0656, 0x0664, 0x0673, 0x0682, 0x0692, 0x06a1, 0x06b1, 0x06c0, - // Entry 3500 - 353F - 0x06d0, 0x06df, 0x06ef, 0x06ff, 0x0710, 0x0720, 0x072f, 0x073e, - 0x074d, 0x075d, 0x076d, 0x077e, 0x078d, 0x079c, 0x07ab, 0x07bb, - 0x07ca, 0x07da, 0x07e9, 0x07f9, 0x0808, 0x0817, 0x0827, 0x0836, - 0x0845, 0x0856, 0x0865, 0x0874, 0x0883, 0x0893, 0x08a1, 0x08b0, - 0x08c1, 0x08d0, 0x08e0, 0x08ef, 0x08ff, 0x090e, 0x091e, 0x092d, - 0x093d, 0x094d, 0x095e, 0x096f, 0x097f, 0x098e, 0x099d, 0x09ac, - 0x09bc, 0x09cc, 0x09dd, 0x09ec, 0x09fb, 0x0a0a, 0x0a1a, 0x0a29, - 0x0a39, 0x0a48, 0x0a58, 0x0a67, 0x0a76, 0x0a86, 0x0a95, 0x0aa4, - // Entry 3540 - 357F - 0x0ab4, 0x0ac5, 0x0ad4, 0x0ae3, 0x0af2, 0x0b02, 0x0b11, 0x0b21, - 0x0b31, 0x0b41, 0x0b52, 0x0b62, 0x0b73, 0x0b83, 0x0b94, 0x0ba5, - 0x0bb7, 0x0bc8, 0x0bd8, 0x0be8, 0x0bf8, 0x0c09, 0x0c1a, 0x0c2c, - 0x0c3c, 0x0c4c, 0x0c5c, 0x0c6d, 0x0c7d, 0x0c8e, 0x0c9e, 0x0caf, - 0x0cbf, 0x0ccf, 0x0ce0, 0x0cf0, 0x0d00, 0x0d12, 0x0d22, 0x0d32, - 0x0d42, 0x0d53, 0x0d61, 0x0d70, 0x0d7f, 0x0d8f, 0x0d9e, 0x0dae, - 0x0dbd, 0x0dcd, 0x0ddc, 0x0dec, 0x0dfc, 0x0e0d, 0x0e1d, 0x0e2c, - 0x0e3b, 0x0e4a, 0x0e5a, 0x0e6a, 0x0e7b, 0x0e8a, 0x0e99, 0x0ea8, - // Entry 3580 - 35BF - 0x0eb8, 0x0ec7, 0x0ed7, 0x0ee6, 0x0ef6, 0x0f05, 0x0f14, 0x0f24, - 0x0f33, 0x0f42, 0x0f53, 0x0f62, 0x0f71, 0x0f80, 0x0f90, 0x0f9e, - 0x0fad, 0x0fbe, 0x0fcd, 0x0fdd, 0x0fec, 0x0ffc, 0x100b, 0x101b, - 0x102a, 0x103a, 0x104a, 0x105b, 0x106b, 0x107c, 0x108b, 0x109a, - 0x10a9, 0x10b9, 0x10c9, 0x10da, 0x10e9, 0x10f8, 0x1107, 0x1117, - 0x1126, 0x1136, 0x1145, 0x1155, 0x1164, 0x1173, 0x1183, 0x1192, - 0x11a1, 0x11b2, 0x11c1, 0x11d0, 0x11df, 0x11ef, 0x11fd, 0x120c, - 0x121d, 0x122c, 0x123c, 0x124b, 0x125b, 0x126a, 0x127a, 0x1289, - // Entry 35C0 - 35FF - 0x1299, 0x12a9, 0x12ba, 0x12cb, 0x12db, 0x12ec, 0x12fb, 0x130a, - 0x1319, 0x1329, 0x1339, 0x134a, 0x1359, 0x1368, 0x1377, 0x1387, - 0x1396, 0x13a6, 0x13b5, 0x13c5, 0x13d4, 0x13e3, 0x13f3, 0x1402, - 0x1411, 0x1422, 0x1434, 0x1443, 0x1453, 0x1462, 0x1471, 0x1481, - 0x1490, 0x14a7, 0x14b0, 0x14bd, 0x14ce, 0x14e3, 0x14f8, 0x150e, - 0x151e, 0x152e, 0x153d, 0x154b, 0x155a, 0x1568, 0x1576, 0x1585, - 0x1595, 0x15a4, 0x15b3, 0x15c2, 0x15d1, 0x15df, 0x15ec, 0x15f9, - 0x1608, 0x1616, 0x1624, 0x1631, 0x1640, 0x164f, 0x165d, 0x1672, - // Entry 3600 - 363F - 0x1687, 0x0287, 0x02a5, 0x02c1, 0x02de, 0x02f9, 0x031d, 0x033f, - 0x035b, 0x0375, 0x0392, 0x03ad, 0x03d1, 0x03f3, 0x0416, 0x0437, - 0x045a, 0x047b, 0x04a5, 0x04cd, 0x04f1, 0x0513, 0x0536, 0x0557, - 0x0579, 0x0599, 0x05c2, 0x05e9, 0x060c, 0x062d, 0x065f, 0x068f, - 0x06a9, 0x06c1, 0x06e5, 0x0707, 0x0726, 0x0743, 0x0762, 0x077f, - 0x079e, 0x07bb, 0x07de, 0x07ff, 0x0822, 0x0843, 0x086d, 0x0895, - 0x08b2, 0x08ca, 0x08ee, 0x0916, 0x093f, 0x0950, 0x0976, 0x0991, - 0x09ad, 0x09c8, 0x09eb, 0x0a09, 0x0a2c, 0x0a4b, 0x0a64, 0x0a7e, - // Entry 3640 - 367F - 0x0a8d, 0x0a9d, 0x0ab8, 0x0ad1, 0x0aed, 0x0b07, 0x0b23, 0x0b3d, - 0x0b59, 0x0b73, 0x0b8f, 0x0ba9, 0x0bd4, 0x0bfd, 0x0c18, 0x0c31, - 0x0c4d, 0x0c67, 0x0c83, 0x0c9d, 0x0cb9, 0x0cd3, 0x0cee, 0x0d07, - 0x0d23, 0x0d3d, 0x0d5d, 0x0d7b, 0x0d9c, 0x0dbb, 0x0ddd, 0x0dff, - 0x0e1b, 0x0e3f, 0x0e4d, 0x0e5c, 0x0e6a, 0x0e79, 0x0e88, 0x0e98, - 0x0ea8, 0x0eb6, 0x0ec6, 0x0ed4, 0x0ee3, 0x0ef2, 0x0f02, 0x0f13, - 0x0f25, 0x0f37, 0x0f47, 0x0f58, 0x0f6a, 0x0f78, 0x0f88, 0x0f97, - 0x0fa8, 0x0fb7, 0x0fc9, 0x0fda, 0x0feb, 0x0ffb, 0x100c, 0x101b, - // Entry 3680 - 36BF - 0x102d, 0x103d, 0x104d, 0x105d, 0x106c, 0x107d, 0x108e, 0x109f, - 0x10b0, 0x10c1, 0x10d1, 0x10e1, 0x10f1, 0x1101, 0x1110, 0x111f, - 0x112e, 0x113d, 0x114e, 0x115e, 0x116e, 0x1182, 0x1193, 0x11a3, - 0x11b3, 0x11c4, 0x11d3, 0x11e3, 0x11f2, 0x1201, 0x1210, 0x121f, - 0x122f, 0x123e, 0x124f, 0x125f, 0x126f, 0x127e, 0x128d, 0x129c, - 0x12ab, 0x12bc, 0x12cc, 0x12dc, 0x12ec, 0x12fd, 0x130f, 0x1322, - 0x1334, 0x1347, 0x1363, 0x1381, 0x138e, 0x139d, 0x13a8, 0x13b3, - 0x13c2, 0x13d5, 0x03d5, 0x03fa, 0x0420, 0x0446, 0x046d, 0x0490, - // Entry 36C0 - 36FF - 0x04b4, 0x04d7, 0x04fb, 0x0525, 0x0549, 0x056c, 0x058f, 0x05b8, - 0x05ec, 0x061a, 0x0647, 0x0674, 0x06a7, 0x06d4, 0x06fb, 0x0721, - 0x0747, 0x0773, 0x0793, 0x07ac, 0x07ce, 0x07f6, 0x0815, 0x0836, - 0x085d, 0x088d, 0x08ba, 0x08de, 0x0901, 0x0928, 0x094d, 0x0973, - 0x0997, 0x09b0, 0x09c7, 0x09de, 0x09f3, 0x0a10, 0x0a2b, 0x0a49, - 0x0a65, 0x0a8e, 0x0ab5, 0x0ad1, 0x0aed, 0x0b04, 0x0b19, 0x0b30, - 0x0b45, 0x0b5c, 0x0b71, 0x0b88, 0x0b9d, 0x0bc8, 0x0bf1, 0x0c08, - 0x0c1d, 0x0c45, 0x0c6b, 0x0c8d, 0x0cad, 0x0cd8, 0x0d01, 0x0d37, - // Entry 3700 - 373F - 0x0d6b, 0x0d88, 0x0da3, 0x0dca, 0x0def, 0x0e1e, 0x0e4b, 0x0e6b, - 0x0e89, 0x0ea0, 0x0eb5, 0x0ee9, 0x0f1b, 0x0f3f, 0x0f61, 0x0f8a, - 0x0fb1, 0x0fe5, 0x1017, 0x1042, 0x106b, 0x1089, 0x10a5, 0x10c5, - 0x10e3, 0x110e, 0x1137, 0x114e, 0x1163, 0x1184, 0x11a3, 0x11c9, - 0x11ed, 0x1225, 0x125b, 0x1274, 0x128b, 0x12a2, 0x12b7, 0x12ce, - 0x12e3, 0x12fb, 0x1311, 0x1323, 0x1339, 0x134f, 0x1365, 0x137b, - 0x1391, 0x13af, 0x13c5, 0x13da, 0x13f8, 0x1414, 0x1432, 0x144e, - 0x146c, 0x1491, 0x14b4, 0x14d1, 0x14ec, 0x150a, 0x1526, 0x1544, - // Entry 3740 - 377F - 0x1560, 0x157e, 0x159a, 0x15bf, 0x15d4, 0x15f5, 0x1612, 0x162d, - 0x164a, 0x167b, 0x1697, 0x16bc, 0x16df, 0x16fe, 0x171b, 0x1741, - 0x1767, 0x178b, 0x17ad, 0x17cf, 0x17ef, 0x180e, 0x182b, 0x184a, - 0x1867, 0x1886, 0x18a3, 0x18cd, 0x18f5, 0x191f, 0x1947, 0x1971, - 0x1999, 0x19c3, 0x19eb, 0x1a15, 0x1a3d, 0x1a5d, 0x1a81, 0x1a9e, - 0x1abe, 0x1ae2, 0x02e2, 0x02ff, 0x031c, 0x0344, 0x035c, 0x0375, - 0x038c, 0x03a6, 0x03be, 0x03be, 0x03e0, 0x0405, 0x0426, 0x0449, - 0x046b, 0x048d, 0x04af, 0x04ce, 0x04ef, 0x0504, 0x0519, 0x0533, - // Entry 3780 - 37BF - 0x0548, 0x055d, 0x0572, 0x058b, 0x05a1, 0x05b8, 0x05ce, 0x05e5, - 0x05ff, 0x0615, 0x062c, 0x0642, 0x0659, 0x0670, 0x0688, 0x069f, - 0x06b7, 0x06cd, 0x06e4, 0x06fa, 0x0711, 0x0727, 0x073d, 0x0754, - 0x076a, 0x0781, 0x0797, 0x07ad, 0x07c3, 0x07da, 0x07f0, 0x0806, - 0x081f, 0x0838, 0x0851, 0x086a, 0x0884, 0x089e, 0x08b8, 0x08d2, - 0x08ec, 0x00ec, 0x010c, 0x0129, 0x014c, 0x016e, 0x018d, 0x01b2, - 0x01ca, 0x01e6, 0x01fc, 0x0215, 0x0215, 0x0227, 0x023a, 0x024c, - 0x025f, 0x0271, 0x0284, 0x0296, 0x02a9, 0x02bb, 0x02ce, 0x02e0, - // Entry 37C0 - 37FF - 0x02f2, 0x0304, 0x0317, 0x0329, 0x033b, 0x034e, 0x0362, 0x0375, - 0x0387, 0x039a, 0x03ac, 0x03c3, 0x03d5, 0x03e7, 0x03f9, 0x040c, - 0x041e, 0x0430, 0x0441, 0x0452, 0x0463, 0x0474, 0x0485, 0x0497, - 0x04a9, 0x04bb, 0x04ce, 0x04e0, 0x04fc, 0x0518, 0x052b, 0x053f, - 0x0552, 0x0565, 0x0581, 0x059e, 0x05b7, 0x05d3, 0x05ef, 0x060c, - 0x0627, 0x0640, 0x0659, 0x066b, 0x0684, 0x0284, 0x029c, 0x02b3, - 0x02c6, 0x02da, 0x02ed, 0x0301, 0x0314, 0x0328, 0x0343, 0x035f, - 0x037a, 0x0396, 0x03a9, 0x03bd, 0x03d1, 0x03e4, 0x03f8, 0x040c, - // Entry 3800 - 383F - 0x0420, 0x0435, 0x0449, 0x045e, 0x0473, 0x0487, 0x049c, 0x04b0, - 0x04c5, 0x04da, 0x04ef, 0x0505, 0x051a, 0x0530, 0x0545, 0x0559, - 0x056e, 0x0582, 0x0597, 0x05ab, 0x05bf, 0x05d4, 0x05e8, 0x05fd, - 0x0611, 0x0625, 0x0639, 0x064d, 0x0661, 0x0676, 0x068b, 0x069f, - 0x06b3, 0x06c8, 0x06e7, 0x06ff, 0x0716, 0x072e, 0x0745, 0x075d, - 0x077c, 0x079c, 0x07bb, 0x07db, 0x07f2, 0x080a, 0x0822, 0x0839, - 0x0851, 0x0869, 0x087f, 0x089a, 0x009a, 0x00aa, 0x00c1, 0x00d6, - 0x00ea, 0x00fe, 0x0114, 0x0129, 0x013e, 0x0152, 0x0168, 0x017e, - // Entry 3840 - 387F - 0x0193, 0x0193, 0x01b2, 0x01d0, 0x01ee, 0x020e, 0x022d, 0x024c, - 0x026a, 0x028a, 0x02aa, 0x02c9, 0x02e6, 0x0303, 0x0321, 0x033f, - 0x035d, 0x037b, 0x0399, 0x03bb, 0x03de, 0x0400, 0x0429, 0x0448, - 0x0469, 0x048d, 0x04a5, 0x04ba, 0x04ca, 0x04df, 0x04f6, 0x0508, - 0x0108, 0x011b, 0x012d, 0x013f, 0x0153, 0x0166, 0x0179, 0x018b, - 0x019f, 0x01b3, 0x01c6, 0x01d8, 0x01eb, 0x01fd, 0x0210, 0x0222, - 0x0235, 0x0247, 0x025a, 0x026c, 0x027f, 0x0291, 0x02a3, 0x02b6, - 0x02c8, 0x02da, 0x02ec, 0x02fe, 0x0310, 0x0322, 0x0334, 0x0347, - // Entry 3880 - 38BF - 0x0359, 0x036b, 0x037d, 0x038e, 0x03a0, 0x03b1, 0x03c3, 0x03d4, - 0x03e4, 0x03f4, 0x0405, 0x0415, 0x0429, 0x043c, 0x0456, 0x0467, - 0x0479, 0x0489, 0x0499, 0x04aa, 0x04ba, 0x04ca, 0x04da, 0x04ea, - 0x04fa, 0x050a, 0x051a, 0x052a, 0x053b, 0x054b, 0x055b, 0x056b, - 0x057b, 0x058b, 0x059b, 0x05ac, 0x05be, 0x05cf, 0x05e1, 0x05f0, - 0x0603, 0x0616, 0x0629, 0x063d, 0x0650, 0x0664, 0x0678, 0x068c, - 0x06a4, 0x06bb, 0x06d2, 0x06e9, 0x06f6, 0x02f6, 0x0309, 0x0325, - 0x0341, 0x035c, 0x0378, 0x0394, 0x03b5, 0x03d1, 0x03f2, 0x040d, - // Entry 38C0 - 38FF - 0x0428, 0x0448, 0x046b, 0x0485, 0x04a0, 0x04bd, 0x04d9, 0x04f5, - 0x050f, 0x0531, 0x054e, 0x0569, 0x0588, 0x05a3, 0x05be, 0x05de, - 0x05fa, 0x0617, 0x0631, 0x0651, 0x0251, 0x0268, 0x027b, 0x028e, - 0x02a3, 0x02b4, 0x02ca, 0x02db, 0x02ed, 0x02fe, 0x0316, 0x032f, - 0x0350, 0x0361, 0x0373, 0x0384, 0x0396, 0x03ae, 0x03c6, 0x03d8, - 0x03f0, 0x0403, 0x0415, 0x042d, 0x043f, 0x0458, 0x0474, 0x0487, - 0x049a, 0x04b7, 0x04ca, 0x04e7, 0x04ff, 0x0511, 0x0529, 0x053b, - 0x0557, 0x0569, 0x057b, 0x0593, 0x05a5, 0x05bd, 0x05cf, 0x05e1, - // Entry 3900 - 393F - 0x05f3, 0x060b, 0x061d, 0x062f, 0x0647, 0x0663, 0x0675, 0x0687, - 0x069f, 0x06b9, 0x06d3, 0x06eb, 0x0709, 0x0721, 0x0740, 0x075a, - 0x0778, 0x0791, 0x07ae, 0x07cd, 0x07ea, 0x07fa, 0x0811, 0x0829, - 0x083c, 0x084f, 0x0862, 0x0875, 0x088a, 0x089e, 0x08b2, 0x08c4, - 0x08db, 0x08f0, 0x090c, 0x010c, 0x0120, 0x0133, 0x0145, 0x0157, - 0x016b, 0x017e, 0x0191, 0x01a3, 0x01b7, 0x01cb, 0x01de, 0x01de, - 0x01f9, 0x0210, 0x0227, 0x023e, 0x0255, 0x026c, 0x0283, 0x0298, - 0x02c2, 0x02de, 0x02f9, 0x0314, 0x0330, 0x034b, 0x0367, 0x0383, - // Entry 3940 - 397F - 0x03a0, 0x03bc, 0x03d8, 0x03f3, 0x040e, 0x042b, 0x0447, 0x0463, - 0x047e, 0x049b, 0x04b8, 0x04d4, 0x04f0, 0x050b, 0x0527, 0x0542, - 0x055e, 0x015e, 0x016b, 0x0178, 0x0185, 0x0192, 0x01a0, 0x01ad, - 0x01bb, 0x01ca, 0x01d8, 0x01e7, 0x01f7, 0x0206, 0x0215, 0x0225, - 0x0233, 0x0242, 0x0252, 0x0261, 0x0271, 0x027f, 0x028e, 0x029c, - 0x02ab, 0x02ba, 0x02c8, 0x02d7, 0x02e5, 0x02f4, 0x0303, 0x0311, - 0x0320, 0x032f, 0x033d, 0x034c, 0x035a, 0x0368, 0x0376, 0x0384, - 0x0393, 0x03a1, 0x03af, 0x03c1, 0x03d2, 0x03e4, 0x03f6, 0x0407, - // Entry 3980 - 39BF - 0x0419, 0x042a, 0x043c, 0x044e, 0x0460, 0x0476, 0x048c, 0x04a2, - 0x04b8, 0x00b8, 0x00cb, 0x00de, 0x00f2, 0x010e, 0x0122, 0x0135, - 0x0148, 0x015b, 0x016e, 0x0181, 0x0194, 0x01a8, 0x01c3, 0x01de, - 0x01de, 0x01ed, 0x01fb, 0x0209, 0x0219, 0x0228, 0x0237, 0x0245, - 0x0255, 0x0265, 0x0274, 0x0274, 0x028b, 0x02a1, 0x02be, 0x02db, - 0x02f3, 0x030b, 0x0324, 0x033c, 0x0355, 0x036e, 0x0387, 0x03a1, - 0x03ba, 0x03d4, 0x03ed, 0x0405, 0x041d, 0x0435, 0x044e, 0x0466, - 0x0492, 0x04aa, 0x04c2, 0x04da, 0x04f5, 0x050f, 0x0529, 0x0549, - // Entry 39C0 - 39FF - 0x0561, 0x0579, 0x0590, 0x05ab, 0x05c8, 0x05e5, 0x0604, 0x0623, - 0x0639, 0x0650, 0x0667, 0x067f, 0x0697, 0x06b0, 0x06c6, 0x06dd, - 0x06f4, 0x070c, 0x0722, 0x0739, 0x0750, 0x0768, 0x077e, 0x0795, - 0x07ac, 0x07c4, 0x07da, 0x07f1, 0x0807, 0x081e, 0x0835, 0x084d, - 0x0863, 0x087a, 0x0890, 0x08a7, 0x08bd, 0x08d4, 0x08eb, 0x0903, - 0x0919, 0x0930, 0x0946, 0x095d, 0x0973, 0x098a, 0x09a0, 0x09b7, - 0x09cd, 0x09e4, 0x09fa, 0x0a11, 0x0a27, 0x0a3e, 0x0a53, 0x0a69, - 0x0a7a, 0x0a8b, 0x0a9b, 0x0aac, 0x0abc, 0x0acc, 0x0adc, 0x0aed, - // Entry 3A00 - 3A3F - 0x0afe, 0x0b10, 0x0b21, 0x0b33, 0x0b44, 0x0b55, 0x0b66, 0x0b7a, - 0x0b91, 0x0ba6, 0x0bbc, 0x03bc, 0x03cf, 0x03e4, 0x03f7, 0x040d, - 0x0424, 0x0439, 0x044e, 0x0465, 0x047c, 0x0493, 0x04ab, 0x04c2, - 0x04da, 0x04f1, 0x0508, 0x051f, 0x0539, 0x0553, 0x056e, 0x0588, - 0x05a3, 0x05b8, 0x05d1, 0x05e2, 0x0607, 0x0628, 0x0647, 0x065a, - 0x025a, 0x0270, 0x0286, 0x029d, 0x02b4, 0x02ca, 0x02e0, 0x02e0, - 0x02f6, 0x030c, 0x0323, 0x033a, 0x0350, 0x0366, 0x0366, 0x037b, - 0x0390, 0x03a6, 0x03bc, 0x03d1, 0x03e6, 0x03e6, 0x03fd, 0x0414, - // Entry 3A40 - 3A7F - 0x042b, 0x0443, 0x045b, 0x0472, 0x0489, 0x0089, 0x009e, 0x00b3, - 0x00c8, 0x00de, 0x00f4, 0x0109, 0x011e, 0x011e, 0x013d, 0x0160, - 0x0180, 0x019b, 0x01bd, 0x01d7, 0x0204, 0x022d, 0x025a, 0x027f, - 0x02a5, 0x02cb, 0x02f3, 0x0313, 0x033f, 0x0364, 0x0382, 0x03aa, - 0x03dd, 0x03ff, 0x042d, 0x0449, 0x0474, 0x0497, 0x04b2, 0x04d8, - 0x0505, 0x0520, 0x0545, 0x0564, 0x058d, 0x05ba, 0x05cf, 0x05eb, - 0x060e, 0x0624, 0x064e, 0x0678, 0x06a0, 0x06c7, 0x0701, 0x0733, - 0x075c, 0x077e, 0x0798, 0x07c4, 0x07ed, 0x0813, 0x082f, 0x084c, - // Entry 3A80 - 3ABF - 0x0866, 0x087b, 0x089c, 0x08bc, 0x00bc, 0x00d3, 0x00ea, 0x0101, - 0x0118, 0x012f, 0x0146, 0x015e, 0x0176, 0x018e, 0x01a6, 0x01be, - 0x01d6, 0x01ee, 0x0206, 0x021e, 0x0236, 0x024e, 0x0266, 0x027e, - 0x0296, 0x02ae, 0x02c6, 0x02de, 0x02f6, 0x030e, 0x0326, 0x033e, - 0x0356, 0x036e, 0x0386, 0x039e, 0x03b7, 0x03d0, 0x03e8, 0x0400, - 0x0418, 0x0430, 0x0448, 0x0461, 0x047a, 0x0493, 0x04ac, 0x04c5, - 0x04de, 0x04f6, 0x050d, 0x0525, 0x053d, 0x0555, 0x056d, 0x0585, - 0x059d, 0x05b5, 0x05cd, 0x05e5, 0x05fd, 0x0615, 0x062d, 0x0645, - // Entry 3AC0 - 3AFF - 0x065d, 0x0676, 0x068f, 0x06a8, 0x06c1, 0x06da, 0x06f3, 0x070c, - 0x0725, 0x073e, 0x0757, 0x0770, 0x0789, 0x07a2, 0x07ba, 0x07d2, - 0x07ea, 0x0802, 0x081a, 0x0832, 0x084a, 0x0861, 0x0878, 0x088f, - 0x08a6, 0x08bc, 0x08d2, 0x08ea, 0x0901, 0x0919, 0x0931, 0x0949, - 0x0960, 0x0978, 0x098f, 0x09a5, 0x09ba, 0x09d2, 0x09eb, 0x0a02, - 0x0a1a, 0x0a31, 0x0a47, 0x0a5e, 0x0a75, 0x0a8d, 0x0aa5, 0x0abd, - 0x0adb, 0x0af9, 0x0b17, 0x0b34, 0x0b51, 0x0b6f, 0x0b8e, 0x0baa, - 0x0bc6, 0x0be2, 0x0bfe, 0x0c1b, 0x0c39, 0x0c55, 0x0c74, 0x0c90, - // Entry 3B00 - 3B3F - 0x0ca5, 0x0cba, 0x0cd0, 0x00d0, 0x00e7, 0x00fd, 0x0113, 0x012b, - 0x0142, 0x0159, 0x016f, 0x0187, 0x019f, 0x01b6, 0x01b6, 0x01cc, - 0x01e2, 0x01f7, 0x020d, 0x0223, 0x0239, 0x024f, 0x0265, 0x027a, - 0x028f, 0x02a5, 0x02ba, 0x02cf, 0x02e6, 0x02fc, 0x0312, 0x0327, - 0x033d, 0x0352, 0x0367, 0x037b, 0x0393, 0x03ab, 0x03ab, 0x03c7, - 0x03e5, 0x0401, 0x0423, 0x0440, 0x045c, 0x047f, 0x049c, 0x04bb, - 0x04da, 0x04fc, 0x051f, 0x0542, 0x0564, 0x0587, 0x05ab, 0x05ca, - 0x05f2, 0x0610, 0x062c, 0x064d, 0x0668, 0x0689, 0x06a5, 0x06c2, - // Entry 3B40 - 3B7F - 0x06e6, 0x0702, 0x071d, 0x073f, 0x075b, 0x0779, 0x0794, 0x07b7, - 0x07d8, 0x07f9, 0x0816, 0x0831, 0x084e, 0x086b, 0x0886, 0x08a4, - 0x08ca, 0x08e9, 0x0908, 0x0924, 0x0945, 0x0960, 0x097d, 0x099d, - 0x019d, 0x01bd, 0x01dd, 0x01fd, 0x021d, 0x023d, 0x025d, 0x027d, - 0x029d, 0x02bd, 0x02dd, 0x02fd, 0x031d, 0x033d, 0x035d, 0x037d, - 0x039d, 0x03bd, 0x03dd, 0x03fd, 0x041d, 0x043d, 0x045d, 0x047d, - 0x049d, 0x04bd, 0x04dd, 0x04fd, 0x051d, 0x053d, 0x055d, 0x057d, - 0x059d, 0x05bd, 0x05dd, 0x05fd, 0x061d, 0x063d, 0x065d, 0x067d, - // Entry 3B80 - 3BBF - 0x069d, 0x06bd, 0x06dd, 0x06fd, 0x071d, 0x073d, 0x075d, 0x077d, - 0x079d, 0x07bd, 0x07dd, 0x07fd, 0x081d, 0x083d, 0x085d, 0x087d, - 0x089d, 0x08bd, 0x08dd, 0x08fd, 0x091d, 0x093d, 0x095d, 0x097d, - 0x099d, 0x09bd, 0x09dd, 0x09fd, 0x0a1d, 0x0a3d, 0x0a5d, 0x0a7d, - 0x0a9d, 0x0abd, 0x0add, 0x0afd, 0x0b1d, 0x0b3d, 0x0b5d, 0x0b7d, - 0x0b9d, 0x0bbd, 0x0bdd, 0x0bfd, 0x0c1d, 0x0c3d, 0x0c5d, 0x0c7d, - 0x0c9d, 0x0cbd, 0x0cdd, 0x0cfd, 0x0d1d, 0x0d3d, 0x0d5d, 0x0d7d, - 0x0d9d, 0x0dbd, 0x0ddd, 0x0dfd, 0x0e1d, 0x0e3d, 0x0e5d, 0x0e7d, - // Entry 3BC0 - 3BFF - 0x0e9d, 0x0ebd, 0x0edd, 0x0efd, 0x0f1d, 0x0f3d, 0x0f5d, 0x0f7d, - 0x0f9d, 0x0fbd, 0x0fdd, 0x0ffd, 0x101d, 0x103d, 0x105d, 0x107d, - 0x109d, 0x10bd, 0x10dd, 0x10fd, 0x111d, 0x113d, 0x115d, 0x117d, - 0x119d, 0x11bd, 0x11dd, 0x11fd, 0x121d, 0x123d, 0x125d, 0x127d, - 0x129d, 0x12bd, 0x12dd, 0x12fd, 0x131d, 0x133d, 0x135d, 0x137d, - 0x139d, 0x13bd, 0x13dd, 0x13fd, 0x141d, 0x143d, 0x145d, 0x147d, - 0x149d, 0x14bd, 0x14dd, 0x14fd, 0x151d, 0x153d, 0x155d, 0x157d, - 0x159d, 0x15bd, 0x15dd, 0x15fd, 0x161d, 0x163d, 0x165d, 0x167d, - // Entry 3C00 - 3C3F - 0x169d, 0x16bd, 0x16dd, 0x16fd, 0x171d, 0x173d, 0x175d, 0x177d, - 0x179d, 0x17bd, 0x17dd, 0x17fd, 0x181d, 0x183d, 0x185d, 0x187d, - 0x189d, 0x18bd, 0x18dd, 0x18fd, 0x191d, 0x193d, 0x195d, 0x197d, - 0x199d, 0x19bd, 0x19dd, 0x19fd, 0x1a1d, 0x1a3d, 0x1a5d, 0x1a7d, - 0x1a9d, 0x1abd, 0x1add, 0x1afd, 0x1b1d, 0x1b3d, 0x1b5d, 0x1b7d, - 0x1b9d, 0x1bbd, 0x1bdd, 0x1bfd, 0x1c1d, 0x1c3d, 0x1c5d, 0x1c7d, - 0x1c9d, 0x1cbd, 0x1cdd, 0x1cfd, 0x1d1d, 0x1d3d, 0x1d5d, 0x1d7d, - 0x1d9d, 0x1dbd, 0x1ddd, 0x1dfd, 0x1e1d, 0x1e3d, 0x1e5d, 0x1e7d, - // Entry 3C40 - 3C7F - 0x1e9d, 0x1ebd, 0x1edd, 0x1efd, 0x1f1d, 0x1f3d, 0x1f5d, 0x1f7d, - 0x1f9d, 0x1fbd, 0x1fdd, 0x1ffd, 0x201d, 0x203d, 0x205d, 0x207d, - 0x209d, 0x20bd, 0x20dd, 0x20fd, 0x211d, 0x213d, 0x215d, 0x217d, - 0x219d, 0x21bd, 0x21dd, 0x21fd, 0x221d, 0x223d, 0x225d, 0x227d, - 0x229d, 0x22bd, 0x22dd, 0x22fd, 0x231d, 0x233d, 0x235d, 0x237d, - 0x239d, 0x23bd, 0x23dd, 0x23fd, 0x241d, 0x243d, 0x245d, 0x247d, - 0x249d, 0x24bd, 0x24dd, 0x24fd, 0x251d, 0x253d, 0x255d, 0x257d, - 0x259d, 0x25bd, 0x25dd, 0x25fd, 0x261d, 0x263d, 0x265d, 0x267d, - // Entry 3C80 - 3CBF - 0x269d, 0x26bd, 0x26dd, 0x26fd, 0x271d, 0x273d, 0x275d, 0x277d, - 0x279d, 0x27bd, 0x27dd, 0x27fd, 0x281d, 0x283d, 0x285d, 0x287d, - 0x289d, 0x28bd, 0x28dd, 0x28fd, 0x291d, 0x293d, 0x295d, 0x297d, - 0x299d, 0x29bd, 0x29dd, 0x29fd, 0x2a1d, 0x2a3d, 0x2a5d, 0x2a7d, - 0x2a9d, 0x2abd, 0x2add, 0x2afd, 0x2b1d, 0x2b3d, 0x2b5d, 0x2b7d, - 0x2b9d, 0x2bbd, 0x2bdd, 0x2bfd, 0x2c1d, 0x2c3d, 0x2c5d, 0x2c7d, - 0x2c9d, 0x2cbd, 0x2cdd, 0x2cfd, 0x2d1d, 0x2d3d, 0x2d5d, 0x2d7d, - 0x2d9d, 0x2dbd, 0x2ddd, 0x2dfd, 0x2e1d, 0x2e3d, 0x2e5d, 0x2e7d, - // Entry 3CC0 - 3CFF - 0x2e9d, 0x2ebd, 0x2edd, 0x2efd, 0x2f1d, 0x2f3d, 0x2f5d, 0x035d, - 0x037d, 0x039d, 0x03bd, 0x03dd, 0x03fd, 0x041d, 0x043d, 0x045d, - 0x047d, 0x049d, 0x04bd, 0x04dd, 0x04fd, 0x051d, 0x053d, 0x055d, - 0x057d, 0x059d, 0x05bd, 0x05dd, 0x05fd, 0x061d, 0x063d, 0x065d, - 0x067d, 0x069d, 0x06bd, 0x06dd, 0x06fd, 0x071d, 0x073d, 0x075d, - 0x077d, 0x079d, 0x07bd, 0x07dd, 0x07fd, 0x081d, 0x083d, 0x085d, - 0x087d, 0x089d, 0x08bd, 0x08dd, 0x08fd, 0x091d, 0x093d, 0x095d, - 0x097d, 0x099d, 0x09bd, 0x09dd, 0x09fd, 0x0a1d, 0x0a3d, 0x0a5d, - // Entry 3D00 - 3D3F - 0x0a7d, 0x0a9d, 0x0abd, 0x0add, 0x0afd, 0x0b1d, 0x0b3d, 0x0b5d, - 0x0b7d, 0x0b9d, 0x0bbd, 0x0bdd, 0x0bfd, 0x0c1d, 0x0c3d, 0x0c5d, - 0x0c7d, 0x0c9d, 0x0cbd, 0x0cdd, 0x0cfd, 0x0d1d, 0x0d3d, 0x0d5d, - 0x0d7d, 0x0d9d, 0x0dbd, 0x0ddd, 0x0dfd, 0x0e1d, 0x0e3d, 0x0e5d, - 0x0e7d, 0x0e9d, 0x0ebd, 0x0edd, 0x0efd, 0x0f1d, 0x0f3d, 0x0f5d, - 0x0f7d, 0x0f9d, 0x0fbd, 0x0fdd, 0x0ffd, 0x101d, 0x103d, 0x105d, - 0x107d, 0x109d, 0x009d, 0x00b4, 0x00cb, 0x00e2, 0x00fa, 0x0112, - 0x012f, 0x0146, 0x0146, 0x0165, 0x0184, 0x01a3, 0x01c2, 0x01e1, - // Entry 3D40 - 3D7F - 0x01e1, 0x01fd, 0x021e, 0x0243, 0x0261, 0x0278, 0x0290, 0x02a5, - 0x02bb, 0x02d3, 0x02ef, 0x0306, 0x031c, 0x033f, 0x035f, 0x037e, - 0x03a9, 0x03d3, 0x03f0, 0x040e, 0x042b, 0x0448, 0x0467, 0x0486, - 0x04a1, 0x04be, 0x04dd, 0x00dd, 0x00fa, 0x0117, 0x013a, 0x0157, - 0x0176, 0x0176, 0x0193, 0x0193, 0x01b0, 0x01d0, 0x01d0, 0x01f2, - 0x020e, 0x020e, 0x022d, 0x024a, 0x0268, 0x0286, 0x02a3, 0x02bf, - 0x02da, 0x02f5, 0x030f, 0x0329, 0x034f, 0x0372, 0x0392, 0x03af, - 0x03ce, 0x03ec, 0x040b, 0x0427, 0x0445, 0x0462, 0x0483, 0x04a1, - // Entry 3D80 - 3DBF - 0x04c1, 0x04e0, 0x0502, 0x0521, 0x0542, 0x0562, 0x0583, 0x05a1, - 0x05c1, 0x05e0, 0x0600, 0x061d, 0x063c, 0x065a, 0x0679, 0x0695, - 0x06b3, 0x06d0, 0x06f1, 0x070f, 0x072f, 0x074e, 0x076e, 0x078b, - 0x07aa, 0x07c8, 0x07e8, 0x0805, 0x0824, 0x0842, 0x0863, 0x0881, - 0x08a1, 0x08c0, 0x08e3, 0x0903, 0x0925, 0x0946, 0x0968, 0x0987, - 0x09a8, 0x09c6, 0x09e5, 0x0a01, 0x0a21, 0x0a3e, 0x0a5d, 0x0a79, - 0x0a99, 0x0ab6, 0x0ad7, 0x0af5, 0x0b15, 0x0b34, 0x0b53, 0x0b6f, - 0x0b8d, 0x0baa, 0x0bca, 0x0be7, 0x0c06, 0x0c24, 0x0c45, 0x0c63, - // Entry 3DC0 - 3DFF - 0x0c83, 0x0ca2, 0x0cc9, 0x0ced, 0x0d0e, 0x0d2c, 0x0d4c, 0x0d6b, - 0x0d99, 0x0dc4, 0x0de8, 0x0e09, 0x0e2c, 0x0e4e, 0x0e79, 0x0ea1, - 0x0ecb, 0x0ef4, 0x0f1a, 0x0f3d, 0x0f74, 0x0fa8, 0x0fbf, 0x0fd6, - 0x0ff2, 0x100e, 0x102c, 0x104a, 0x107b, 0x10ac, 0x10c9, 0x10e6, - 0x110d, 0x1134, 0x115b, 0x116d, 0x118a, 0x11a7, 0x01a7, 0x01c5, - 0x01e0, 0x01fd, 0x0219, 0x0236, 0x0250, 0x026e, 0x0289, 0x02a7, - 0x02c2, 0x02f0, 0x030e, 0x0329, 0x034f, 0x0372, 0x0398, 0x03bb, - 0x03d8, 0x03f2, 0x040e, 0x0429, 0x0466, 0x04a2, 0x04de, 0x0517, - // Entry 3E00 - 3E3F - 0x0551, 0x0588, 0x05c3, 0x05fb, 0x0634, 0x066a, 0x06a4, 0x06db, - 0x0715, 0x074c, 0x0785, 0x07bb, 0x07f3, 0x0846, 0x0896, 0x08e8, - 0x090d, 0x092f, 0x0953, 0x0976, 0x09b2, 0x09ed, 0x0a29, 0x0a6d, - 0x0aa8, 0x0ad3, 0x0afd, 0x0b28, 0x0b53, 0x0b86, 0x0bb0, 0x0bdb, - 0x0c05, 0x0c30, 0x0c5b, 0x0c8e, 0x0cb8, 0x0ce4, 0x0d10, 0x0d44, - 0x0d6f, 0x0d9a, 0x0dc6, 0x0df1, 0x0e1c, 0x0e48, 0x0e73, 0x0e9f, - 0x0ecb, 0x0ef6, 0x0f22, 0x0f4e, 0x0f78, 0x0fa3, 0x0fce, 0x0ff8, - 0x1023, 0x104e, 0x1078, 0x10a3, 0x10ce, 0x10f9, 0x1124, 0x1151, - // Entry 3E40 - 3E7F - 0x117e, 0x11a9, 0x11d3, 0x11fe, 0x1229, 0x125c, 0x1286, 0x12b0, - 0x12db, 0x130e, 0x1338, 0x1363, 0x138e, 0x13b8, 0x13e3, 0x140d, - 0x1438, 0x146b, 0x1495, 0x14c0, 0x14ea, 0x1515, 0x1540, 0x1573, - 0x159d, 0x15c9, 0x15f4, 0x1620, 0x164c, 0x1680, 0x16ab, 0x16d7, - 0x1702, 0x172e, 0x175a, 0x178e, 0x17b9, 0x17e4, 0x180f, 0x1842, - 0x186c, 0x1897, 0x18c1, 0x18ec, 0x1917, 0x194a, 0x1974, 0x19ac, - 0x19e3, 0x1a23, 0x1a55, 0x1a87, 0x1ab6, 0x1ae5, 0x1b14, 0x1b4e, - 0x1b86, 0x1bbf, 0x1bf8, 0x1c31, 0x1c72, 0x1caa, 0x1cd1, 0x1cf9, - // Entry 3E80 - 3EBF - 0x1d21, 0x1d49, 0x1d79, 0x1da0, 0x1dc7, 0x1def, 0x1e17, 0x1e3f, - 0x1e6f, 0x1e96, 0x1ebe, 0x1ee7, 0x1f10, 0x1f39, 0x1f6a, 0x1f92, - 0x1fc2, 0x1fe9, 0x2019, 0x2040, 0x2068, 0x208f, 0x20b7, 0x20e7, - 0x210e, 0x2136, 0x2166, 0x218d, 0x21b6, 0x21df, 0x2207, 0x2230, - 0x2259, 0x2282, 0x22b3, 0x22db, 0x2318, 0x233f, 0x2367, 0x238f, - 0x23b7, 0x23e7, 0x240e, 0x2449, 0x2483, 0x24be, 0x24f9, 0x2533, - 0x255d, 0x2586, 0x25b0, 0x25da, 0x2603, 0x262d, 0x2656, 0x2680, - 0x26aa, 0x26d3, 0x26fe, 0x2728, 0x2753, 0x277d, 0x27a7, 0x27d2, - // Entry 3EC0 - 3EFF - 0x27fd, 0x2828, 0x2852, 0x287d, 0x28a8, 0x28d1, 0x28fb, 0x2925, - 0x294f, 0x2978, 0x29a2, 0x29cc, 0x29f5, 0x2a1f, 0x2a49, 0x2a73, - 0x2a9f, 0x2acb, 0x2af5, 0x2b1e, 0x2b48, 0x2b72, 0x2b9b, 0x2bc5, - 0x2bef, 0x2c18, 0x2c42, 0x2c6b, 0x2c95, 0x2cbf, 0x2ce8, 0x2d12, - 0x2d3c, 0x2d65, 0x2d90, 0x2dba, 0x2de5, 0x2e10, 0x2e3b, 0x2e65, - 0x2e90, 0x2ebb, 0x2ee5, 0x2f0f, 0x2f39, 0x2f6f, 0x2f99, 0x2fc2, - 0x2fec, 0x3016, 0x303f, 0x3079, 0x30b2, 0x30db, 0x3103, 0x312c, - 0x3154, 0x317e, 0x31a7, 0x31d1, 0x31fa, 0x3225, 0x324f, 0x3277, - // Entry 3F00 - 3F3F - 0x32a0, 0x32c9, 0x32f3, 0x331c, 0x3345, 0x336d, 0x339a, 0x33c7, - 0x33f4, 0x3427, 0x3451, 0x3484, 0x34ae, 0x34e3, 0x350f, 0x3543, - 0x356e, 0x35a3, 0x35cf, 0x3602, 0x362c, 0x3660, 0x368b, 0x36bf, - 0x36ea, 0x371d, 0x3747, 0x377a, 0x37a4, 0x37d1, 0x37fd, 0x382a, - 0x3857, 0x3883, 0x38ae, 0x38d8, 0x3902, 0x3932, 0x3959, 0x3989, - 0x39b0, 0x39e2, 0x3a0b, 0x3a3c, 0x3a64, 0x3a96, 0x3abf, 0x3aef, - 0x3b16, 0x3b47, 0x3b6f, 0x3ba0, 0x3bc8, 0x3bf8, 0x3c1f, 0x3c4f, - 0x3c76, 0x3ca0, 0x3cc9, 0x3cf3, 0x3d1d, 0x3d46, 0x3d6e, 0x3d95, - // Entry 3F40 - 3F7F - 0x3dbc, 0x3de8, 0x3e13, 0x3e3f, 0x3e6b, 0x3e95, 0x3ec0, 0x3eea, - 0x3f14, 0x3f3d, 0x3f67, 0x3f92, 0x3fbc, 0x3fe7, 0x4010, 0x4039, - 0x4066, 0x4096, 0x40ad, 0x40c5, 0x00c5, 0x00f9, 0x012a, 0x015d, - 0x0190, 0x01c4, 0x01f8, 0x022b, 0x025f, 0x0291, 0x02c5, 0x02f6, - 0x0330, 0x0364, 0x0398, 0x03d3, 0x0405, 0x0439, 0x046e, 0x04a1, - 0x04d6, 0x0506, 0x0538, 0x056a, 0x059d, 0x05d2, 0x0605, 0x0639, - 0x066f, 0x06a3, 0x06d9, 0x0712, 0x0744, 0x0778, 0x07a9, 0x07dc, - 0x0810, 0x0841, 0x0873, 0x08a5, 0x08d9, 0x0913, 0x0947, 0x097a, - // Entry 3F80 - 3FBF - 0x09b6, 0x09e8, 0x0a1c, 0x0a4d, 0x0a7f, 0x0ab0, 0x0ae0, 0x0b19, - 0x0b4d, 0x0b7f, 0x0bb1, 0x0be5, 0x0c16, 0x0c49, 0x0c7d, 0x0cb1, - 0x0ce2, 0x0d16, 0x0d4b, 0x0d80, 0x0db5, 0x01b5, 0x01ea, 0x021e, - 0x0252, 0x0286, 0x02c0, 0x02f3, 0x0328, 0x0363, 0x0395, 0x03d0, - 0x0402, 0x0436, 0x0467, 0x0498, 0x04d2, 0x0503, 0x053d, 0x056e, - 0x05a8, 0x05da, 0x0614, 0x064f, 0x068a, 0x06ba, 0x06ec, 0x071c, - 0x074d, 0x077e, 0x07ae, 0x07df, 0x0810, 0x0842, 0x0873, 0x08a4, - 0x08d7, 0x090a, 0x093b, 0x096c, 0x09a0, 0x09d2, 0x0a06, 0x0a38, - // Entry 3FC0 - 3FFF - 0x0a6a, 0x0a9c, 0x0acd, 0x0afe, 0x0b30, 0x0b61, 0x0b91, 0x0bc5, - 0x0bf9, 0x0c2d, 0x0c5f, 0x0c91, 0x0091, 0x00ce, 0x010a, 0x012d, - 0x0150, 0x0176, 0x0199, 0x01bd, 0x01e1, 0x0207, 0x022a, 0x0255, - 0x0274, 0x027d, 0x02aa, 0x02aa, 0x02be, 0x02d2, 0x02e6, 0x02fa, - 0x030e, 0x0322, 0x0336, 0x034a, 0x035e, 0x0373, 0x0388, 0x039d, - 0x03b2, 0x03c7, 0x03dc, 0x03f1, 0x0415, 0x0445, 0x0479, 0x049d, - 0x04c5, 0x04f4, 0x0520, 0x055c, 0x0599, 0x05cb, 0x01cb, 0x01e7, - 0x0204, 0x0224, 0x0245, 0x025f, 0x027a, 0x0295, 0x02b7, 0x02da, - // Entry 4000 - 403F - 0x02f9, 0x0319, 0x0339, 0x035a, 0x037b, 0x039d, 0x03c0, 0x03ed, - 0x0413, 0x0439, 0x0460, 0x048c, 0x04bb, 0x04eb, 0x051c, 0x054e, - 0x0588, 0x05c3, 0x05ff, 0x063c, 0x0674, 0x06ad, 0x06de, 0x0710, - 0x0742, 0x0775, 0x07ad, 0x07e6, 0x07f0, 0x0800, 0x0832, 0x0865, - 0x0874, 0x0887, 0x0894, 0x08a8, 0x08b7, 0x08ca, 0x08d7, 0x08e2, - 0x08f9, 0x0908, 0x0108, 0x0117, 0x0122, 0x0135, 0x014b, 0x0158, - 0x016e, 0x0185, 0x019d, 0x01b6, 0x01d7, 0x01f9, 0x020a, 0x0219, - 0x0227, 0x0236, 0x0248, 0x025c, 0x0273, 0x0284, 0x0284, 0x0299, - // Entry 4040 - 407F - 0x02aa, 0x02bc, 0x02cf, 0x02cf, 0x02ec, 0x030e, 0x032b, 0x033f, - 0x035c, 0x035c, 0x0376, 0x038e, 0x03a8, 0x03c0, 0x03da, 0x03f2, - 0x040d, 0x0426, 0x0440, 0x0458, 0x0479, 0x04aa, 0x04d8, 0x0509, - 0x0537, 0x0567, 0x0594, 0x05c5, 0x05f3, 0x0623, 0x0650, 0x067f, - 0x06ad, 0x06cd, 0x06ea, 0x0709, 0x0725, 0x0743, 0x0760, 0x0787, - 0x07ab, 0x07ca, 0x07e6, 0x0804, 0x0821, 0x0841, 0x085e, 0x087d, - 0x089b, 0x08bb, 0x08d8, 0x08f7, 0x0915, 0x0934, 0x0950, 0x096e, - 0x098b, 0x09ab, 0x09c8, 0x09e7, 0x0a05, 0x0a24, 0x0a40, 0x0a60, - // Entry 4080 - 40BF - 0x0a7d, 0x0a9c, 0x0ab8, 0x0ad8, 0x0af5, 0x0b15, 0x0b32, 0x0b51, - 0x0b6f, 0x0b90, 0x0bae, 0x0bce, 0x0bed, 0x0c0c, 0x0c28, 0x0c46, - 0x0c63, 0x0c82, 0x0c9e, 0x0cbc, 0x0cd9, 0x0cf8, 0x0d14, 0x0d32, - 0x0d4f, 0x0d6e, 0x0d8a, 0x0da8, 0x0dc5, 0x0de4, 0x0e00, 0x0e1e, - 0x0e3b, 0x0e5c, 0x0e7a, 0x0e9a, 0x0eb9, 0x0ed8, 0x0ef4, 0x0f12, - 0x0f2f, 0x0f4e, 0x0f6a, 0x0f88, 0x0fa5, 0x0fc4, 0x0fe0, 0x0ffe, - 0x101b, 0x103a, 0x1056, 0x1074, 0x1091, 0x10b1, 0x10ce, 0x10ed, - 0x110b, 0x112b, 0x1148, 0x1167, 0x1185, 0x11a4, 0x11c0, 0x11de, - // Entry 40C0 - 40FF - 0x11fb, 0x121a, 0x1236, 0x125e, 0x1283, 0x12a2, 0x12be, 0x12dc, - 0x12f9, 0x1335, 0x136e, 0x13aa, 0x13e3, 0x141f, 0x1458, 0x1483, - 0x14ab, 0x00ab, 0x00c4, 0x00c4, 0x00de, 0x00f6, 0x010b, 0x0120, - 0x0136, 0x0149, 0x015d, 0x0177, 0x0192, 0x01a4, 0x01b7, 0x01c6, - 0x01dc, 0x01ef, 0x0200, 0x0214, 0x0227, 0x023a, 0x024f, 0x0263, - 0x0277, 0x028a, 0x029f, 0x02b4, 0x02c8, 0x02d7, 0x02ea, 0x0302, - 0x0317, 0x0332, 0x0349, 0x0360, 0x0380, 0x03a0, 0x03c0, 0x03e0, - 0x0400, 0x0420, 0x0440, 0x0460, 0x0480, 0x04a0, 0x04c0, 0x04e0, - // Entry 4100 - 413F - 0x0500, 0x0520, 0x0540, 0x0560, 0x0580, 0x05a0, 0x05c0, 0x05e0, - 0x0600, 0x0620, 0x0640, 0x0660, 0x0680, 0x06a0, 0x06bd, 0x06d6, - 0x06f4, 0x070f, 0x0721, 0x0737, 0x0755, 0x0773, 0x0791, 0x07af, - 0x07cd, 0x07eb, 0x0809, 0x0827, 0x0845, 0x0863, 0x0881, 0x089f, - 0x08bd, 0x08db, 0x08f9, 0x0917, 0x0935, 0x0953, 0x0971, 0x098f, - 0x09ad, 0x09cb, 0x09e9, 0x0a07, 0x0a25, 0x0a43, 0x0a5f, 0x0a76, - 0x0a93, 0x0aa2, 0x0ac2, 0x0ae3, 0x0b02, 0x0b1f, 0x0b3d, 0x0b58, - 0x0b75, 0x0b91, 0x0bb2, 0x0bd3, 0x0bf4, 0x0c15, 0x0c36, 0x0c58, - // Entry 4140 - 417F - 0x0c7a, 0x0c9c, 0x0cbe, 0x0cee, 0x0d09, 0x0d24, 0x0d3f, 0x0d5a, - 0x0d75, 0x0d91, 0x0dad, 0x0dc9, 0x0de5, 0x0e01, 0x0e1d, 0x0e39, - 0x0e55, 0x0e71, 0x0e8d, 0x0ea9, 0x0ec5, 0x0ee1, 0x0efd, 0x0f19, - 0x0f35, 0x0f51, 0x0f6d, 0x0f89, 0x0fa5, 0x0fc1, 0x0fdd, 0x0ff9, - 0x1015, 0x1031, 0x104d, 0x1069, 0x1085, 0x10a1, 0x10bd, 0x10d9, - 0x10f5, 0x1111, 0x112d, 0x1149, 0x1165, 0x1181, 0x119d, 0x11b9, - 0x11d4, 0x11f8, 0x1221, 0x1238, 0x1256, 0x1279, 0x129c, 0x12b9, - 0x12dc, 0x12ff, 0x131d, 0x1340, 0x135d, 0x1381, 0x13a4, 0x13c7, - // Entry 4180 - 41BF - 0x13e9, 0x140e, 0x1433, 0x1456, 0x1473, 0x1490, 0x14b2, 0x14d4, - 0x14f0, 0x1511, 0x152e, 0x154b, 0x156d, 0x158c, 0x15ab, 0x15ca, - 0x15e9, 0x1606, 0x0206, 0x021f, 0x0239, 0x0253, 0x026e, 0x0288, - 0x02a1, 0x02a1, 0x02bc, 0x02d6, 0x02ef, 0x0309, 0x0324, 0x033e, - 0x033e, 0x0358, 0x0371, 0x038c, 0x03a6, 0x03c0, 0x03da, 0x03da, - 0x03f4, 0x040e, 0x0427, 0x0027, 0x003a, 0x004e, 0x0060, 0x0070, - 0x0084, 0x0096, 0x00a8, 0x00a8, 0x00c6, 0x00df, 0x00f6, 0x0110, - 0x0129, 0x013f, 0x0155, 0x0155, 0x0172, 0x0192, 0x01b3, 0x01cf, - // Entry 41C0 - 41FF - 0x01e4, 0x01e4, 0x01fc, 0x0214, 0x022c, 0x0244, 0x025c, 0x0275, - 0x028e, 0x02a7, 0x02c0, 0x02d9, 0x02f2, 0x030b, 0x030b, 0x0324, - 0x033d, 0x0356, 0x036f, 0x0388, 0x03a1, 0x03ba, 0x03d3, 0x03ec, - 0x0405, 0x041e, 0x0437, 0x0450, 0x0469, 0x0482, 0x049b, 0x04b4, - 0x04cd, 0x04e6, 0x04ff, 0x0518, 0x0531, 0x054a, 0x0563, 0x057c, - 0x0595, 0x0195, 0x01ae, 0x01c7, 0x01e0, 0x01f9, 0x0212, 0x022b, - 0x0244, 0x025d, 0x0276, 0x028f, 0x02a8, 0x02c1, 0x02da, 0x02f3, - 0x030c, 0x0325, 0x033e, 0x0357, 0x0370, 0x0370, 0x0389, 0x03a2, - // Entry 4200 - 423F - 0x03a2, 0x03bb, 0x03d4, 0x03ed, 0x0406, 0x0420, 0x043a, 0x0454, - 0x046e, 0x0488, 0x04a2, 0x04bc, 0x04d6, 0x04f0, 0x050a, 0x0524, - 0x0124, 0x0138, 0x014c, 0x0160, 0x0174, 0x0188, 0x019c, 0x01b0, - 0x01c4, 0x01d8, 0x01ec, 0x0200, 0x0214, 0x0228, 0x023c, 0x023c, - 0x0256, 0x0272, 0x028d, 0x02a9, 0x02c5, 0x02e5, 0x0300, 0x031b, - 0x033b, 0x035a, 0x0375, 0x0391, 0x03ac, 0x03c8, 0x03e4, 0x0401, - 0x041d, 0x0439, 0x0457, 0x0472, 0x048f, 0x04a9, 0x04c4, 0x04da, - 0x04f6, 0x0511, 0x052e, 0x0549, 0x055f, 0x057a, 0x0590, 0x05a6, - // Entry 4240 - 427F - 0x05c1, 0x05d7, 0x05ed, 0x0603, 0x061f, 0x0635, 0x064b, 0x0667, - 0x067d, 0x0693, 0x06b1, 0x06ce, 0x06e4, 0x06fa, 0x0710, 0x0726, - 0x073c, 0x0752, 0x0768, 0x077e, 0x0794, 0x07b0, 0x07c6, 0x07e1, - 0x07f7, 0x080d, 0x0823, 0x0839, 0x084f, 0x0865, 0x087b, 0x0891, - 0x08a7, 0x08bd, 0x08d3, 0x08f0, 0x0910, 0x092e, 0x094a, 0x0966, - 0x097c, 0x0998, 0x09ae, 0x09c4, 0x09ea, 0x0a08, 0x0a2c, 0x0a48, - 0x0a5e, 0x0a74, 0x0a90, 0x0aa6, 0x0abc, 0x0ad2, 0x0ae8, 0x0afe, - 0x0b19, 0x0b2f, 0x0b45, 0x0b5b, 0x0b71, 0x0b87, 0x0ba4, 0x0bc1, - // Entry 4280 - 42BF - 0x0bde, 0x0bfb, 0x0c18, 0x0c35, 0x0c52, 0x0c6f, 0x0c8c, 0x0ca9, - 0x0cc6, 0x0ce3, 0x0d00, 0x0d1d, 0x0d3a, 0x0d57, 0x0d74, 0x0d91, - 0x0dae, 0x0dcb, 0x0de8, 0x0e05, 0x0e22, 0x0e3f, 0x0e5c, 0x0e79, - 0x0e96, 0x0eb3, 0x0ed0, 0x02d0, 0x02ea, 0x0303, 0x0314, 0x0314, - 0x0325, 0x0336, 0x0349, 0x035b, 0x036d, 0x037e, 0x0391, 0x03a4, - 0x03b6, 0x03c7, 0x03db, 0x03ef, 0x0402, 0x0415, 0x0428, 0x043d, - 0x0451, 0x0465, 0x047e, 0x0497, 0x04b2, 0x04cc, 0x04e6, 0x04ff, - 0x051a, 0x0535, 0x054f, 0x0569, 0x0583, 0x059f, 0x05ba, 0x05d5, - // Entry 42C0 - 42FF - 0x05ef, 0x060b, 0x0627, 0x0642, 0x065c, 0x0679, 0x0696, 0x06b2, - 0x06ce, 0x06ea, 0x0708, 0x0725, 0x0742, 0x0342, 0x0359, 0x0374, - 0x0390, 0x03ab, 0x03c7, 0x03e7, 0x040a, 0x0427, 0x0443, 0x0465, - 0x0484, 0x04a6, 0x04c1, 0x04dd, 0x0500, 0x0524, 0x0549, 0x056c, - 0x058e, 0x05b2, 0x05dc, 0x0607, 0x0632, 0x065e, 0x0681, 0x06a3, - 0x06c7, 0x06f1, 0x071c, 0x0747, 0x0772, 0x079f, 0x07be, 0x07e3, - 0x0800, 0x081f, 0x083e, 0x085b, 0x0881, 0x08a9, 0x08c9, 0x08e8, - 0x0916, 0x0935, 0x0953, 0x0970, 0x0990, 0x09b1, 0x09e1, 0x0a02, - // Entry 4300 - 433F - 0x0a21, 0x0a46, 0x0a6d, 0x0a95, 0x0abd, 0x0ae3, 0x0b0a, 0x0b2e, - 0x0b54, 0x0b7b, 0x0b9d, 0x0bc1, 0x0bd4, 0x0bf6, 0x0c0b, 0x0c24, - 0x0c33, 0x0c44, 0x0c56, 0x0c65, 0x0c79, 0x0c8f, 0x0ca4, 0x0cb9, - 0x0ccc, 0x0ce3, 0x0cf3, 0x0d04, 0x0d15, 0x0d26, 0x0d37, 0x0d48, - 0x0d60, 0x0d6f, 0x0d85, 0x0d98, 0x0dac, 0x0db8, 0x01b8, 0x01ca, - 0x01da, 0x01ed, 0x01ff, 0x0219, 0x022b, 0x023e, 0x0252, 0x0267, - 0x027b, 0x0288, 0x029c, 0x029c, 0x02b0, 0x02b0, 0x02cd, 0x02eb, - 0x030b, 0x0325, 0x033d, 0x0355, 0x036e, 0x0389, 0x03a1, 0x03b9, - // Entry 4340 - 437F - 0x03cf, 0x03e8, 0x03ff, 0x041a, 0x0434, 0x044a, 0x0460, 0x047c, - 0x049e, 0x04b7, 0x04ce, 0x04e6, 0x04ff, 0x0519, 0x0530, 0x0547, - 0x055e, 0x057a, 0x0590, 0x05a6, 0x05be, 0x05d5, 0x05ed, 0x0603, - 0x0620, 0x0637, 0x0651, 0x066b, 0x0682, 0x069c, 0x06b4, 0x06cd, - 0x06e8, 0x0704, 0x0720, 0x074b, 0x034b, 0x035a, 0x0369, 0x0378, - 0x0388, 0x0397, 0x03a6, 0x03b5, 0x03c4, 0x03d3, 0x03e3, 0x03f2, - 0x0401, 0x0410, 0x041f, 0x042e, 0x043d, 0x044d, 0x045d, 0x046c, - 0x047b, 0x048b, 0x049a, 0x04a9, 0x04b8, 0x04c8, 0x04d8, 0x04e8, - // Entry 4380 - 43BF - 0x04f7, 0x0506, 0x0106, 0x0115, 0x0125, 0x0134, 0x0143, 0x0154, - 0x0163, 0x0173, 0x0183, 0x0192, 0x01a1, 0x01b0, 0x01bf, 0x01cf, - 0x01de, 0x01ee, 0x01ff, 0x020e, 0x0220, 0x022f, 0x023f, 0x024e, - 0x025d, 0x026e, 0x027d, 0x028d, 0x029c, 0x02ab, 0x02bd, 0x02cc, - 0x02dc, 0x02ec, 0x02fc, 0x030b, 0x031b, 0x032b, 0x033c, 0x034c, - 0x035c, 0x036e, 0x037e, 0x0390, 0x03a0, 0x03b0, 0x03c1, 0x03d2, - 0x03e3, 0x03f4, 0x0404, 0x0416, 0x0016, 0x0031, 0x0047, 0x005d, - 0x0075, 0x008c, 0x00a3, 0x00b9, 0x00d1, 0x00e9, 0x0100, 0x0117, - // Entry 43C0 - 43FF - 0x0131, 0x014b, 0x0164, 0x017d, 0x0196, 0x01b1, 0x01cb, 0x01e5, - 0x0204, 0x0223, 0x0244, 0x0264, 0x0284, 0x02a3, 0x02c4, 0x02e5, - 0x0305, 0x0305, 0x0318, 0x032c, 0x0340, 0x0354, 0x0367, 0x037b, - 0x038f, 0x03a3, 0x03b8, 0x03cb, 0x03df, 0x03f3, 0x0407, 0x041b, - 0x0430, 0x0443, 0x0457, 0x046c, 0x0480, 0x0494, 0x04a8, 0x04bc, - 0x04cf, 0x04e4, 0x04f9, 0x050e, 0x0522, 0x0537, 0x054c, 0x0560, - 0x0574, 0x0589, 0x059f, 0x05b6, 0x05cc, 0x05e4, 0x01e4, 0x01f6, - 0x020b, 0x021d, 0x022f, 0x0243, 0x0259, 0x026b, 0x027d, 0x0291, - // Entry 4400 - 443F - 0x02a2, 0x02b5, 0x02c8, 0x02db, 0x02ef, 0x0300, 0x0312, 0x0328, - 0x033c, 0x034f, 0x0362, 0x0375, 0x0388, 0x039b, 0x03ae, 0x03c1, - 0x03d4, 0x03ee, 0x03ee, 0x0402, 0x0417, 0x042c, 0x0441, 0x0454, - 0x046a, 0x0481, 0x0497, 0x04ae, 0x04c1, 0x04d7, 0x04ec, 0x0503, - 0x051a, 0x0530, 0x0546, 0x055b, 0x0570, 0x0585, 0x0598, 0x05af, - 0x05c6, 0x05df, 0x05f4, 0x060a, 0x061d, 0x0631, 0x0645, 0x0659, - 0x066f, 0x0684, 0x0699, 0x06af, 0x06c4, 0x06d8, 0x06ec, 0x0700, - 0x0714, 0x0732, 0x0751, 0x0771, 0x0792, 0x07b1, 0x03b1, 0x03c5, - // Entry 4440 - 447F - 0x03d9, 0x03ee, 0x0401, 0x0416, 0x0428, 0x043a, 0x044e, 0x0462, - 0x0475, 0x0488, 0x049b, 0x04af, 0x04c4, 0x04d7, 0x04eb, 0x04fe, - 0x0510, 0x0525, 0x0538, 0x054a, 0x055e, 0x0572, 0x0587, 0x059d, - 0x05b2, 0x05c4, 0x05d5, 0x05e6, 0x05f9, 0x01f9, 0x020e, 0x0220, - 0x0232, 0x0244, 0x0257, 0x026a, 0x027d, 0x0290, 0x02a3, 0x02b6, - 0x02c9, 0x02dc, 0x02ef, 0x0302, 0x0315, 0x0328, 0x033b, 0x034f, - 0x0362, 0x0375, 0x0388, 0x039b, 0x03ae, 0x03c1, 0x03d4, 0x03e7, - 0x03fa, 0x040d, 0x0420, 0x0433, 0x0446, 0x0459, 0x046c, 0x047f, - // Entry 4480 - 44BF - 0x0493, 0x04a7, 0x04ba, 0x00ba, 0x00d5, 0x00f2, 0x010f, 0x012c, - 0x0146, 0x0162, 0x0177, 0x018f, 0x01a7, 0x01bd, 0x01d3, 0x01e9, - 0x0202, 0x021c, 0x021c, 0x0239, 0x0256, 0x0273, 0x0291, 0x02ae, - 0x02cc, 0x02ea, 0x0308, 0x0326, 0x0345, 0x0363, 0x0382, 0x039b, - 0x03b4, 0x03cd, 0x03e7, 0x03ff, 0x0419, 0x0433, 0x044d, 0x0467, - 0x0482, 0x049c, 0x04b6, 0x04d0, 0x04e9, 0x0503, 0x051d, 0x0538, - 0x0551, 0x056b, 0x0585, 0x05a0, 0x05b9, 0x05d2, 0x05eb, 0x0604, - 0x061e, 0x0637, 0x0650, 0x066b, 0x0686, 0x06a1, 0x06bd, 0x06d8, - // Entry 44C0 - 44FF - 0x06f4, 0x0710, 0x072c, 0x0748, 0x0765, 0x0781, 0x079e, 0x07b5, - 0x07cc, 0x07e3, 0x07fb, 0x0811, 0x0829, 0x0841, 0x0859, 0x0871, - 0x088a, 0x08a2, 0x08ba, 0x08d2, 0x08e9, 0x0901, 0x0919, 0x0932, - 0x0949, 0x0961, 0x0979, 0x0992, 0x09a9, 0x09c0, 0x09d7, 0x09ee, - 0x0a06, 0x0a1d, 0x0a34, 0x0a47, 0x0a59, 0x0a6c, 0x0a7e, 0x0a92, - 0x0aa3, 0x0ab6, 0x0acb, 0x0add, 0x0af0, 0x0b02, 0x0b15, 0x0b27, - 0x0b39, 0x0b4c, 0x0b5e, 0x0b74, 0x0b88, 0x0b9a, 0x0bae, 0x0bc1, - 0x0bd4, 0x0be5, 0x0bf7, 0x0c09, 0x0c1b, 0x0c2c, 0x0c3f, 0x0c51, - // Entry 4500 - 453F - 0x0c62, 0x0c75, 0x0c87, 0x0c99, 0x0cab, 0x0cbd, 0x0cce, 0x0ce0, - 0x0cf3, 0x0d05, 0x0d17, 0x0d29, 0x0d3a, 0x0d4c, 0x0d5e, 0x0d72, - 0x0d84, 0x0d96, 0x0da8, 0x0dbb, 0x0dcc, 0x0ddd, 0x0dee, 0x0dff, - 0x0e11, 0x0e24, 0x0e35, 0x0e46, 0x0e5a, 0x0e6c, 0x0e7f, 0x0e90, - 0x0ea1, 0x0eb4, 0x0ec7, 0x0eda, 0x0eed, 0x0f00, 0x0f12, 0x0f23, - 0x0f34, 0x0f44, 0x0f54, 0x0f64, 0x0f74, 0x0f84, 0x0f95, 0x0fa6, - 0x0fb7, 0x03b7, 0x03c9, 0x03da, 0x03eb, 0x03fe, 0x0410, 0x0422, - 0x0433, 0x0446, 0x0459, 0x046b, 0x006b, 0x0081, 0x0098, 0x00b0, - // Entry 4540 - 457F - 0x00c7, 0x00df, 0x00f7, 0x0111, 0x0127, 0x013f, 0x0156, 0x016e, - 0x0184, 0x019b, 0x01b4, 0x01cc, 0x01e3, 0x01fa, 0x0211, 0x0227, - 0x023f, 0x0256, 0x026f, 0x0286, 0x029e, 0x02b5, 0x02ce, 0x02e6, - 0x0300, 0x0319, 0x0331, 0x0347, 0x035e, 0x0376, 0x038e, 0x03a5, - 0x03bd, 0x03bd, 0x03d1, 0x03e6, 0x03fc, 0x0411, 0x0427, 0x043d, - 0x0455, 0x0469, 0x047f, 0x0494, 0x04aa, 0x04be, 0x04d3, 0x04ea, - 0x0500, 0x0515, 0x052a, 0x053f, 0x0553, 0x0569, 0x057e, 0x0595, - 0x05aa, 0x05c0, 0x05d5, 0x05ec, 0x0602, 0x061a, 0x0631, 0x0647, - // Entry 4580 - 45BF - 0x065b, 0x0670, 0x0686, 0x069c, 0x06b1, 0x06c7, 0x02c7, 0x02d7, - 0x02e8, 0x02f9, 0x030b, 0x031c, 0x032e, 0x0340, 0x0351, 0x0361, - 0x0372, 0x0383, 0x0395, 0x03a6, 0x03b6, 0x03c7, 0x03d8, 0x03e9, - 0x03fb, 0x040c, 0x041d, 0x042e, 0x0440, 0x0450, 0x0461, 0x0472, - 0x0483, 0x0495, 0x04a6, 0x04b8, 0x04c9, 0x04db, 0x04eb, 0x04fc, - 0x050d, 0x051d, 0x052e, 0x0540, 0x0552, 0x0567, 0x0579, 0x0179, - 0x0196, 0x01b3, 0x01d0, 0x01ed, 0x0209, 0x0227, 0x0244, 0x0262, - 0x027f, 0x029c, 0x02ba, 0x02d7, 0x02f4, 0x0311, 0x032e, 0x034c, - // Entry 45C0 - 45FF - 0x036a, 0x0388, 0x03a5, 0x03c3, 0x03e0, 0x03fe, 0x041c, 0x0439, - 0x0456, 0x0474, 0x0491, 0x04af, 0x04cc, 0x04e9, 0x0507, 0x0526, - 0x0544, 0x0562, 0x057e, 0x059c, 0x05b9, 0x05d7, 0x05f5, 0x0612, - 0x0631, 0x064e, 0x066c, 0x068a, 0x06a8, 0x06c6, 0x06e3, 0x0701, - 0x071f, 0x073d, 0x075b, 0x0778, 0x0378, 0x0398, 0x0398, 0x03ab, - 0x03be, 0x03d1, 0x03e4, 0x03f7, 0x040a, 0x041d, 0x0430, 0x0443, - 0x0456, 0x0469, 0x047c, 0x048f, 0x04a2, 0x04b5, 0x04c8, 0x04dc, - 0x04f0, 0x0503, 0x0517, 0x052b, 0x053e, 0x0552, 0x0565, 0x0578, - // Entry 4600 - 463F - 0x058b, 0x059e, 0x05b1, 0x05c4, 0x05d7, 0x05ea, 0x05fd, 0x0610, - 0x0623, 0x0636, 0x0649, 0x065c, 0x066f, 0x0682, 0x0695, 0x06a8, - 0x06bb, 0x06ce, 0x06e1, 0x06f4, 0x0707, 0x071a, 0x072d, 0x0740, - 0x0753, 0x0766, 0x0779, 0x078c, 0x079f, 0x07b2, 0x07c5, 0x07d8, - 0x07eb, 0x07fe, 0x0811, 0x0824, 0x0837, 0x084a, 0x085d, 0x0870, - 0x0883, 0x0896, 0x08a9, 0x08bc, 0x08cf, 0x08e2, 0x08f8, 0x090b, - 0x091e, 0x0931, 0x0944, 0x0957, 0x096b, 0x097f, 0x0992, 0x09a5, - 0x09b8, 0x09cb, 0x09de, 0x09f1, 0x0a03, 0x0a15, 0x0a27, 0x0a39, - // Entry 4640 - 467F - 0x0a4b, 0x0a5d, 0x0a6f, 0x0a81, 0x0a94, 0x0aa7, 0x0aba, 0x0acc, - 0x0ade, 0x0af0, 0x0b03, 0x0b16, 0x0b29, 0x0b3b, 0x0b4d, 0x0b5f, - 0x0b71, 0x0b83, 0x0b95, 0x0ba7, 0x0bb9, 0x0bcb, 0x0bdd, 0x0bef, - 0x0c01, 0x0c13, 0x0c25, 0x0c37, 0x0c49, 0x0c5b, 0x0c6d, 0x0c7f, - 0x0c91, 0x0ca3, 0x0cb5, 0x0cc7, 0x0cd9, 0x0ceb, 0x0cfd, 0x0d0f, - 0x0d21, 0x0d33, 0x0d45, 0x0d57, 0x0d69, 0x0d7b, 0x0d8d, 0x0d9f, - 0x0db1, 0x0dc3, 0x0dd5, 0x0de7, 0x0df9, 0x0e0b, 0x0e1d, 0x0e2f, - 0x0e41, 0x0e53, 0x0e65, 0x0e77, 0x0e89, 0x0e9b, 0x0ead, 0x0ebf, - // Entry 4680 - 46BF - 0x0ed1, 0x0ee3, 0x0ef5, 0x0f07, 0x0f19, 0x0f2b, 0x0f3d, 0x0f53, - 0x0f69, 0x0f7f, 0x0f95, 0x0fab, 0x0fc1, 0x0fd7, 0x0fed, 0x1003, - 0x1019, 0x102f, 0x1045, 0x105b, 0x1071, 0x1087, 0x109d, 0x10b3, - 0x10c9, 0x10df, 0x10f1, 0x1103, 0x1115, 0x1127, 0x1139, 0x114b, - 0x115d, 0x116f, 0x1181, 0x1193, 0x11a5, 0x11b7, 0x11c9, 0x11db, - 0x11ed, 0x11ff, 0x1211, 0x1223, 0x1235, 0x1247, 0x1259, 0x126b, - 0x127d, 0x128f, 0x12a1, 0x12b3, 0x12c5, 0x12d7, 0x12e9, 0x12fb, - 0x130d, 0x131f, 0x1331, 0x1343, 0x1355, 0x1367, 0x1379, 0x138b, - // Entry 46C0 - 46FF - 0x139d, 0x13af, 0x13c1, 0x13d3, 0x13e5, 0x13f7, 0x1409, 0x141b, - 0x142d, 0x143f, 0x1451, 0x1463, 0x1475, 0x1487, 0x1499, 0x14ab, - 0x14bd, 0x14cf, 0x14e1, 0x14f3, 0x1505, 0x1517, 0x1529, 0x153b, - 0x154d, 0x155f, 0x1571, 0x1583, 0x1595, 0x15a7, 0x15b9, 0x15cb, - 0x15dd, 0x15ef, 0x1601, 0x1613, 0x1625, 0x1637, 0x1649, 0x165b, - 0x166d, 0x167f, 0x1691, 0x16a3, 0x16b5, 0x16c7, 0x16d9, 0x16eb, - 0x16fd, 0x170f, 0x1721, 0x1733, 0x1745, 0x1757, 0x1769, 0x177b, - 0x178d, 0x179f, 0x17b1, 0x17c3, 0x17d5, 0x17e7, 0x17f9, 0x180b, - // Entry 4700 - 473F - 0x181d, 0x182f, 0x1841, 0x1853, 0x1865, 0x1877, 0x1889, 0x189b, - 0x18ad, 0x18bf, 0x18d1, 0x18e3, 0x18f5, 0x1907, 0x1919, 0x192b, - 0x193d, 0x194f, 0x1961, 0x1973, 0x1985, 0x1997, 0x19a9, 0x19bb, - 0x19cd, 0x19df, 0x19f1, 0x1a03, 0x1a15, 0x1a27, 0x0227, 0x023b, - 0x024f, 0x0263, 0x0277, 0x028b, 0x029f, 0x02b3, 0x02c7, 0x02db, - 0x02f2, 0x0309, 0x0320, 0x0337, 0x034b, 0x035f, 0x0373, 0x038b, - 0x03a1, 0x03b6, 0x03cb, 0x03e2, 0x03f7, 0x03f7, 0x0409, 0x041b, - 0x042d, 0x043f, 0x0451, 0x0463, 0x0475, 0x0487, 0x0087, 0x0099, - // Entry 4740 - 477F - 0x00ab, 0x00bd, 0x00cf, 0x00e1, 0x00f4, 0x00f4, 0x0107, 0x0107, - 0x011a, 0x012d, 0x0140, 0x0153, 0x0166, 0x0179, 0x018c, 0x019f, - 0x01b2, 0x01c5, 0x01d8, 0x01eb, 0x01fe, 0x0211, 0x0224, 0x0237, - 0x024a, 0x025d, 0x0270, 0x0283, 0x0296, 0x02a9, 0x02bc, 0x02cf, - 0x02e2, 0x02f5, 0x0308, 0x031b, 0x032e, 0x0341, 0x0354, 0x0367, - 0x037a, 0x038d, 0x03a0, 0x03b3, 0x03c6, 0x03d9, 0x03ec, 0x03ff, - 0x0412, 0x0425, 0x0438, 0x044b, 0x004b, 0x005e, 0x0071, 0x0071, - 0x0084, 0x0084, 0x0097, 0x00b4, 0x00d0, 0x00ed, 0x010b, 0x0125, - // Entry 4780 - 47BF - 0x0140, 0x015d, 0x0179, 0x0195, 0x01b1, 0x01cd, 0x01eb, 0x0206, - 0x0221, 0x023f, 0x025b, 0x0275, 0x0292, 0x02ae, 0x02ca, 0x02e6, - 0x0301, 0x0301, 0x031e, 0x0339, 0x0354, 0x0371, 0x038c, 0x03aa, - 0x03cd, 0x03f1, 0x0415, 0x042b, 0x0440, 0x0456, 0x046d, 0x0480, - 0x0494, 0x04aa, 0x04bf, 0x04d4, 0x04e9, 0x04fe, 0x0515, 0x0529, - 0x0543, 0x0557, 0x056e, 0x0583, 0x0596, 0x05ac, 0x05c1, 0x05d6, - 0x05eb, 0x05ff, 0x061e, 0x063e, 0x0652, 0x0666, 0x067c, 0x0691, - 0x06a6, 0x06ba, 0x06d1, 0x06ed, 0x0703, 0x071e, 0x0733, 0x0749, - // Entry 47C0 - 47FF - 0x0760, 0x0779, 0x078c, 0x07a0, 0x07b6, 0x07cb, 0x07e0, 0x07fb, - 0x0810, 0x082b, 0x0840, 0x085d, 0x0874, 0x088e, 0x08a2, 0x08bc, - 0x08d0, 0x08e7, 0x08fc, 0x090f, 0x0925, 0x093a, 0x094f, 0x096a, - 0x097f, 0x0993, 0x0193, 0x01a7, 0x01bb, 0x01d1, 0x01e6, 0x0205, - 0x021a, 0x022e, 0x0245, 0x0261, 0x0261, 0x0274, 0x0286, 0x0299, - 0x02b2, 0x02c2, 0x02d3, 0x02e5, 0x02f7, 0x0309, 0x031b, 0x032d, - 0x0341, 0x0352, 0x0363, 0x0377, 0x0388, 0x0398, 0x03ab, 0x03bd, - 0x03bd, 0x03cf, 0x03e0, 0x03e0, 0x03f1, 0x0403, 0x0414, 0x0428, - // Entry 4800 - 483F - 0x0441, 0x0456, 0x046b, 0x0481, 0x0497, 0x04ab, 0x04c0, 0x04d5, - 0x04ea, 0x04ff, 0x0514, 0x0529, 0x053f, 0x0554, 0x0569, 0x057f, - 0x0594, 0x05a8, 0x05be, 0x05d3, 0x05e9, 0x05ff, 0x0614, 0x0629, - 0x063e, 0x0656, 0x0673, 0x0688, 0x069f, 0x029f, 0x02b8, 0x02c7, - 0x02d6, 0x02e5, 0x02f4, 0x0303, 0x0312, 0x0321, 0x0330, 0x033f, - 0x034e, 0x035d, 0x036c, 0x037b, 0x038a, 0x039a, 0x03a9, 0x03b8, - 0x03c7, 0x03d6, 0x03e5, 0x03f5, 0x0405, 0x0415, 0x0425, 0x0435, - 0x0444, 0x0044, 0x005a, 0x005a, 0x0078, 0x0096, 0x00b4, 0x00d2, - // Entry 4840 - 487F - 0x00f1, 0x0110, 0x012f, 0x0150, 0x016f, 0x018e, 0x01ad, 0x01ce, - 0x01ed, 0x020e, 0x022d, 0x024e, 0x026d, 0x028d, 0x02ad, 0x02cc, - 0x02ed, 0x030c, 0x032b, 0x034a, 0x0369, 0x038a, 0x03a9, 0x03ca, - 0x03e9, 0x0408, 0x0429, 0x044c, 0x0465, 0x047e, 0x0497, 0x04b0, - 0x04ca, 0x04e4, 0x04fe, 0x0518, 0x0532, 0x054c, 0x0566, 0x0580, - 0x059a, 0x05b5, 0x05d0, 0x05ea, 0x060c, 0x0626, 0x0640, 0x065a, - 0x0674, 0x068e, 0x06a8, 0x06c2, 0x02c2, 0x02eb, 0x030d, 0x032a, - 0x0347, 0x0362, 0x037d, 0x039a, 0x03b6, 0x03d2, 0x03ed, 0x040a, - // Entry 4880 - 48BF - 0x0427, 0x0443, 0x045e, 0x047c, 0x049a, 0x04b7, 0x04d4, 0x04f1, - 0x0510, 0x0110, 0x0133, 0x0156, 0x017b, 0x019f, 0x01c3, 0x01e6, - 0x020b, 0x0230, 0x0254, 0x0278, 0x029c, 0x02c2, 0x02e7, 0x030c, - 0x0330, 0x0356, 0x037c, 0x03a1, 0x03c5, 0x03ec, 0x0413, 0x0439, - 0x045f, 0x0485, 0x04ad, 0x04d4, 0x04fb, 0x0527, 0x0553, 0x0581, - 0x05ae, 0x05db, 0x0607, 0x0635, 0x0663, 0x0690, 0x06b5, 0x06db, - 0x0703, 0x072a, 0x0751, 0x0777, 0x079f, 0x07c7, 0x07ee, 0x0814, - 0x0827, 0x083e, 0x0855, 0x0874, 0x0074, 0x008b, 0x00a2, 0x00a2, - // Entry 48C0 - 48FF - 0x00be, 0x00df, 0x00f7, 0x010e, 0x0122, 0x0137, 0x014b, 0x0160, - 0x0160, 0x0174, 0x0189, 0x019d, 0x019d, 0x01b2, 0x01c7, 0x01dd, - 0x01f2, 0x0208, 0x021d, 0x0231, 0x0246, 0x025a, 0x026f, 0x0283, - 0x0297, 0x02ac, 0x02c0, 0x02d5, 0x02e9, 0x02fd, 0x0311, 0x0325, - 0x0339, 0x034e, 0x0363, 0x0377, 0x038b, 0x039f, 0x03b4, 0x03cb, - 0x03cb, 0x03e4, 0x03f9, 0x0412, 0x0012, 0x0023, 0x0037, 0x004b, - 0x0061, 0x0076, 0x008b, 0x00a3, 0x00c0, 0x00de, 0x00de, 0x00f8, - 0x011b, 0x0138, 0x015b, 0x017a, 0x0196, 0x01b2, 0x01d5, 0x01f1, - // Entry 4900 - 493F - 0x01f1, 0x020c, 0x022b, 0x0248, 0x0264, 0x0281, 0x029d, 0x02ba, - 0x02d7, 0x02f4, 0x0310, 0x032c, 0x0349, 0x0365, 0x0383, 0x03a1, - 0x03c0, 0x03db, 0x03f8, 0x0414, 0x0433, 0x0451, 0x0470, 0x048e, - 0x04ab, 0x04c8, 0x04e8, 0x0505, 0x0522, 0x0540, 0x055c, 0x057a, - 0x059d, 0x05b9, 0x05d5, 0x05f1, 0x060e, 0x062a, 0x0646, 0x0663, - 0x067f, 0x069b, 0x06b7, 0x06d4, 0x06f0, 0x070d, 0x072a, 0x0746, - 0x0763, 0x077f, 0x079c, 0x07b8, 0x07d4, 0x07f1, 0x080d, 0x082b, - 0x0847, 0x0864, 0x0881, 0x089d, 0x08ba, 0x08d6, 0x08f2, 0x090e, - // Entry 4940 - 497F - 0x092d, 0x012d, 0x0144, 0x015a, 0x0171, 0x0188, 0x01a0, 0x01b8, - 0x01cc, 0x01e1, 0x01f3, 0x020a, 0x0222, 0x0239, 0x0251, 0x0267, - 0x027d, 0x0293, 0x02a9, 0x02bf, 0x02d6, 0x02ee, 0x0307, 0x0320, - 0x0335, 0x034a, 0x0362, 0x0378, 0x038f, 0x03a3, 0x03b7, 0x03ce, - 0x03e4, 0x03fa, 0x0411, 0x0427, 0x043d, 0x0454, 0x0469, 0x048b, - 0x04ad, 0x00ad, 0x00c2, 0x00d8, 0x00ed, 0x0105, 0x0122, 0x013d, - 0x015b, 0x0187, 0x01ac, 0x01c6, 0x01e5, 0x0207, 0x0207, 0x0217, - 0x0228, 0x0239, 0x024b, 0x025c, 0x026e, 0x027f, 0x0291, 0x02a1, - // Entry 4980 - 49BF - 0x02b2, 0x02c2, 0x02d3, 0x02e3, 0x02f4, 0x0304, 0x0315, 0x0326, - 0x0337, 0x0349, 0x035b, 0x036c, 0x037e, 0x0390, 0x03a1, 0x03b2, - 0x03c3, 0x03d5, 0x03e6, 0x03f8, 0x040a, 0x041b, 0x042c, 0x043d, - 0x044f, 0x0461, 0x0474, 0x0487, 0x0498, 0x04aa, 0x04bc, 0x04cd, - 0x04df, 0x04f1, 0x0502, 0x0513, 0x0524, 0x0535, 0x0546, 0x0557, - 0x0569, 0x057b, 0x058e, 0x05a1, 0x05b2, 0x01b2, 0x01cb, 0x01f1, - 0x0218, 0x023f, 0x0266, 0x028f, 0x02b8, 0x02db, 0x02fd, 0x0320, - 0x0344, 0x0364, 0x0385, 0x03a8, 0x03ca, 0x03ec, 0x040e, 0x0430, - // Entry 49C0 - 49FF - 0x0454, 0x0475, 0x0496, 0x04ba, 0x04dc, 0x04fc, 0x051f, 0x0541, - 0x0563, 0x0585, 0x05a6, 0x01a6, 0x01c7, 0x01e8, 0x020b, 0x022d, - 0x024e, 0x0272, 0x029b, 0x02c5, 0x02e7, 0x0308, 0x032a, 0x034d, - 0x036c, 0x0396, 0x03b8, 0x03d9, 0x03fa, 0x041b, 0x043c, 0x045f, - 0x0484, 0x04a4, 0x04c7, 0x04e6, 0x0508, 0x0529, 0x0549, 0x0149, - 0x0169, 0x0189, 0x01ab, 0x01cc, 0x01ec, 0x020f, 0x0237, 0x0260, - 0x027c, 0x0297, 0x02b3, 0x02d0, 0x02e9, 0x030d, 0x0329, 0x0344, - 0x035f, 0x037a, 0x0397, 0x03b6, 0x03d0, 0x03ed, 0x0406, 0x0422, - // Entry 4A00 - 4A3F - 0x043d, 0x0457, 0x0057, 0x0073, 0x0096, 0x00ba, 0x00dc, 0x00dc, - 0x00f6, 0x0110, 0x012c, 0x0147, 0x0161, 0x017e, 0x01a0, 0x01a0, - 0x01ba, 0x01d5, 0x01f1, 0x020b, 0x0226, 0x0241, 0x025b, 0x0276, - 0x0292, 0x02ad, 0x02c9, 0x02e5, 0x0302, 0x031d, 0x0339, 0x0355, - 0x0372, 0x038d, 0x03a9, 0x03c5, 0x03e0, 0x03fc, 0x0417, 0x0433, - 0x044f, 0x046c, 0x0488, 0x04a5, 0x04c1, 0x04de, 0x04f9, 0x0515, - 0x0531, 0x054d, 0x0568, 0x0583, 0x059f, 0x05bc, 0x05d8, 0x05f5, - 0x0611, 0x062e, 0x064a, 0x0667, 0x0684, 0x06a0, 0x06be, 0x06d9, - // Entry 4A40 - 4A7F - 0x06f4, 0x070f, 0x072a, 0x0746, 0x0761, 0x077d, 0x0798, 0x07b4, - 0x07cf, 0x07eb, 0x0806, 0x0822, 0x083e, 0x0859, 0x0875, 0x0891, - 0x08ae, 0x08ca, 0x08e7, 0x0902, 0x091e, 0x093a, 0x0957, 0x0972, - 0x098f, 0x018f, 0x01ad, 0x01cc, 0x01eb, 0x020b, 0x022a, 0x024a, - 0x026a, 0x0289, 0x02a9, 0x02c7, 0x02eb, 0x030a, 0x0329, 0x0348, - 0x0368, 0x0387, 0x03a5, 0x03c4, 0x03e3, 0x0402, 0x0421, 0x0441, - 0x0460, 0x0480, 0x049f, 0x04be, 0x04de, 0x04fc, 0x051b, 0x0545, - 0x056e, 0x058e, 0x05ad, 0x05cd, 0x05ec, 0x0611, 0x0630, 0x0650, - // Entry 4A80 - 4ABF - 0x066f, 0x068f, 0x06af, 0x06cf, 0x06ed, 0x070c, 0x0736, 0x075f, - 0x077e, 0x079d, 0x07bd, 0x07e9, 0x0808, 0x0008, 0x0024, 0x0041, - 0x005e, 0x007c, 0x0099, 0x00b7, 0x00d5, 0x00f2, 0x0110, 0x012c, - 0x014e, 0x016b, 0x0188, 0x01a5, 0x01c3, 0x01e0, 0x01fc, 0x0219, - 0x0236, 0x0253, 0x0270, 0x028e, 0x02ab, 0x02c9, 0x02e6, 0x0303, - 0x0321, 0x033d, 0x035a, 0x0382, 0x03a9, 0x03c7, 0x03e4, 0x0402, - 0x041f, 0x0442, 0x045f, 0x047d, 0x049a, 0x04b8, 0x04d6, 0x04f4, - 0x0510, 0x052d, 0x0555, 0x057c, 0x0599, 0x05b6, 0x05d4, 0x05fe, - // Entry 4AC0 - 4AFF - 0x061b, 0x021b, 0x0233, 0x024c, 0x0264, 0x027e, 0x029e, 0x02bf, - 0x02bf, 0x02cd, 0x02db, 0x02eb, 0x02fa, 0x0309, 0x0317, 0x0327, - 0x0337, 0x0346, 0x0355, 0x0367, 0x0379, 0x038a, 0x039b, 0x03ac, - 0x03bf, 0x03d1, 0x03e3, 0x03fa, 0x0411, 0x042a, 0x0442, 0x045a, - 0x0471, 0x048a, 0x04a3, 0x04bb, 0x04d1, 0x04ea, 0x0501, 0x0519, - 0x0119, 0x0130, 0x0144, 0x0157, 0x016e, 0x0185, 0x0194, 0x01a4, - 0x01b3, 0x01c3, 0x01d2, 0x01e2, 0x01f9, 0x0211, 0x0228, 0x0240, - 0x024f, 0x025f, 0x026e, 0x027e, 0x028e, 0x029f, 0x02af, 0x02c0, - // Entry 4B00 - 4B3F - 0x02d1, 0x02e1, 0x02f2, 0x0302, 0x0313, 0x0324, 0x0335, 0x0347, - 0x0358, 0x036a, 0x037b, 0x038b, 0x039c, 0x03ac, 0x03bd, 0x03cd, - 0x03dd, 0x03ee, 0x03fe, 0x040f, 0x041f, 0x042f, 0x043f, 0x044f, - 0x045f, 0x0470, 0x0481, 0x0491, 0x04a1, 0x04b2, 0x04ce, 0x04e9, - 0x0505, 0x0519, 0x0539, 0x054c, 0x0560, 0x0573, 0x0587, 0x05a2, - 0x05be, 0x05d9, 0x05f5, 0x0608, 0x061c, 0x062f, 0x0643, 0x0650, - 0x065c, 0x066f, 0x0685, 0x06a2, 0x06b9, 0x06d8, 0x06f0, 0x02f0, - 0x0301, 0x0312, 0x0325, 0x0337, 0x0349, 0x035a, 0x036d, 0x0380, - // Entry 4B40 - 4B7F - 0x0392, 0x03a3, 0x03b7, 0x03cb, 0x03de, 0x03f1, 0x0404, 0x0419, - 0x042d, 0x0441, 0x045a, 0x0474, 0x0485, 0x0495, 0x04a5, 0x04b7, - 0x04c8, 0x04d9, 0x04e9, 0x04fb, 0x050d, 0x051e, 0x011e, 0x0132, - 0x0149, 0x015d, 0x0170, 0x017f, 0x018f, 0x019e, 0x01ae, 0x01bd, - 0x01cd, 0x01dc, 0x01ec, 0x01fb, 0x020b, 0x021b, 0x022c, 0x023c, - 0x024d, 0x025e, 0x026e, 0x027f, 0x028f, 0x02a0, 0x02b1, 0x02c2, - 0x02d4, 0x02e5, 0x02f8, 0x030a, 0x031b, 0x032c, 0x033c, 0x034d, - 0x035d, 0x036e, 0x037e, 0x038e, 0x039f, 0x03af, 0x03c0, 0x03d0, - // Entry 4B80 - 4BBF - 0x03e0, 0x03f0, 0x0400, 0x0410, 0x0421, 0x0432, 0x0442, 0x0452, - 0x0466, 0x0479, 0x048d, 0x04a0, 0x04b4, 0x04c7, 0x04db, 0x04ee, - 0x0502, 0x0514, 0x0525, 0x053d, 0x0554, 0x0566, 0x0579, 0x0593, - 0x059f, 0x05b2, 0x01b2, 0x01c9, 0x01e0, 0x01f7, 0x020e, 0x0225, - 0x023c, 0x0253, 0x026b, 0x0282, 0x0299, 0x02b0, 0x02c7, 0x02de, - 0x02f5, 0x030c, 0x0323, 0x033a, 0x0352, 0x0368, 0x037f, 0x0395, - 0x03ab, 0x03c1, 0x03d7, 0x03ee, 0x03ee, 0x0405, 0x041b, 0x0431, - 0x0449, 0x0460, 0x0477, 0x048d, 0x04a5, 0x04bd, 0x04d4, 0x00d4, - // Entry 4BC0 - 4BFF - 0x00eb, 0x00ff, 0x0112, 0x0122, 0x0131, 0x0140, 0x014f, 0x0160, - 0x0172, 0x0183, 0x0195, 0x01a7, 0x01b8, 0x01ca, 0x01db, 0x01ed, - 0x01ff, 0x0211, 0x0224, 0x0236, 0x0249, 0x025b, 0x026c, 0x027e, - 0x028f, 0x02a1, 0x02b2, 0x02c3, 0x02d5, 0x02e6, 0x02f8, 0x0309, - 0x031b, 0x032c, 0x033d, 0x034e, 0x035f, 0x0370, 0x0381, 0x0394, - 0x03a7, 0x03bb, 0x03ce, 0x03e2, 0x03f5, 0x0409, 0x041c, 0x0430, - 0x0444, 0x0451, 0x045f, 0x046c, 0x047a, 0x007a, 0x008b, 0x009b, - 0x00ab, 0x00bd, 0x00ce, 0x00df, 0x00ef, 0x0101, 0x0113, 0x0124, - // Entry 4C00 - 4C3F - 0x0137, 0x0143, 0x0156, 0x016a, 0x016a, 0x017b, 0x018c, 0x019d, - 0x01ae, 0x01bf, 0x01d1, 0x01e4, 0x01f6, 0x0209, 0x021b, 0x022e, - 0x0240, 0x0253, 0x0266, 0x0279, 0x028d, 0x02a0, 0x02b4, 0x02c7, - 0x02d9, 0x02ec, 0x02fe, 0x0311, 0x0323, 0x0335, 0x0348, 0x035a, - 0x036d, 0x037f, 0x0391, 0x03a3, 0x03b5, 0x03c7, 0x03d9, 0x03ec, - 0x03ff, 0x0419, 0x042e, 0x0444, 0x0044, 0x005c, 0x0071, 0x0085, - 0x0095, 0x00a6, 0x00b6, 0x00c7, 0x00d7, 0x00e8, 0x0100, 0x0119, - 0x0131, 0x014a, 0x015a, 0x016b, 0x017b, 0x018c, 0x019d, 0x01af, - // Entry 4C40 - 4C7F - 0x01c0, 0x01d2, 0x01e4, 0x01f5, 0x0207, 0x0218, 0x022a, 0x023c, - 0x024e, 0x0261, 0x0273, 0x0286, 0x0298, 0x02a9, 0x02bb, 0x02cc, - 0x02de, 0x02ef, 0x0300, 0x0312, 0x0323, 0x0335, 0x0346, 0x0357, - 0x0368, 0x0379, 0x038b, 0x039c, 0x03ae, 0x03c0, 0x03d1, 0x03e2, - 0x03f7, 0x040b, 0x0420, 0x0434, 0x0449, 0x0465, 0x0482, 0x049e, - 0x04bb, 0x04cf, 0x04e4, 0x04f8, 0x050d, 0x0520, 0x0535, 0x054d, - 0x0565, 0x056f, 0x057c, 0x0590, 0x05a9, 0x05ba, 0x05cd, 0x05df, - 0x05fa, 0x0618, 0x062a, 0x022a, 0x023c, 0x024d, 0x025e, 0x0271, - // Entry 4C80 - 4CBF - 0x0283, 0x0295, 0x02a6, 0x02b9, 0x02cc, 0x02de, 0x02ea, 0x02fe, - 0x0310, 0x0329, 0x033f, 0x0355, 0x0355, 0x036e, 0x0387, 0x03a2, - 0x03bc, 0x03d6, 0x03ef, 0x040a, 0x0425, 0x043f, 0x0459, 0x0476, - 0x0493, 0x04af, 0x04cb, 0x04e7, 0x0505, 0x0522, 0x053f, 0x0561, - 0x0584, 0x0184, 0x0193, 0x01a3, 0x01b2, 0x01c1, 0x01d0, 0x01e0, - 0x01ef, 0x01ff, 0x020f, 0x0220, 0x0230, 0x0241, 0x0252, 0x0263, - 0x0273, 0x0284, 0x0294, 0x02a5, 0x02a5, 0x02b6, 0x02c7, 0x02d9, - 0x02ea, 0x02fc, 0x030d, 0x031d, 0x032e, 0x033e, 0x0350, 0x0361, - // Entry 4CC0 - 4CFF - 0x0371, 0x0381, 0x0392, 0x03a2, 0x03b3, 0x03c4, 0x03d4, 0x03e4, - 0x03f4, 0x0404, 0x0414, 0x0424, 0x0434, 0x0445, 0x0459, 0x046c, - 0x0480, 0x0493, 0x04a6, 0x04ba, 0x04cd, 0x04e1, 0x04f5, 0x0507, - 0x0518, 0x052a, 0x0536, 0x0549, 0x055e, 0x0571, 0x058b, 0x05a3, - 0x05b4, 0x01b4, 0x01c4, 0x01d4, 0x01e4, 0x01f4, 0x0205, 0x0217, - 0x0228, 0x0228, 0x023a, 0x023a, 0x024b, 0x025d, 0x026e, 0x0280, - 0x0280, 0x0292, 0x02a4, 0x02b7, 0x02c9, 0x02dc, 0x02ef, 0x0301, - 0x0312, 0x0324, 0x0335, 0x0347, 0x0358, 0x0369, 0x037b, 0x038c, - // Entry 4D00 - 4D3F - 0x038c, 0x039e, 0x03af, 0x03c0, 0x03d1, 0x03e2, 0x03f3, 0x0404, - 0x0415, 0x0427, 0x0439, 0x044d, 0x004d, 0x005f, 0x0072, 0x0084, - 0x0097, 0x00a9, 0x00bc, 0x00ce, 0x00e1, 0x00f3, 0x0106, 0x0119, - 0x012d, 0x0140, 0x0154, 0x0168, 0x017c, 0x018f, 0x01a3, 0x01b6, - 0x01ca, 0x01de, 0x01f2, 0x0206, 0x021b, 0x022f, 0x0244, 0x0258, - 0x026d, 0x0281, 0x0294, 0x02a8, 0x02bb, 0x02cf, 0x02e2, 0x02f5, - 0x0309, 0x031c, 0x0330, 0x0344, 0x0357, 0x036a, 0x037d, 0x0390, - 0x03a3, 0x03b7, 0x03ca, 0x03dd, 0x03f4, 0x040b, 0x0421, 0x0438, - // Entry 4D40 - 4D7F - 0x044e, 0x0465, 0x047b, 0x0492, 0x04a8, 0x04bf, 0x04d3, 0x04e8, - 0x00e8, 0x00fc, 0x010f, 0x0122, 0x0137, 0x014b, 0x015f, 0x0172, - 0x0187, 0x019c, 0x01b0, 0x01b0, 0x01d5, 0x01ed, 0x0202, 0x0216, - 0x0216, 0x0226, 0x0237, 0x0247, 0x0258, 0x0268, 0x0279, 0x0291, - 0x02a9, 0x02a9, 0x02ba, 0x02cb, 0x02cb, 0x02dc, 0x02ed, 0x02fe, - 0x0310, 0x0321, 0x0333, 0x0345, 0x0356, 0x0368, 0x0379, 0x038b, - 0x039d, 0x03af, 0x03c2, 0x03d4, 0x03e7, 0x03f9, 0x040a, 0x041c, - 0x042d, 0x043f, 0x0450, 0x0050, 0x0061, 0x0073, 0x0084, 0x0096, - // Entry 4D80 - 4DBF - 0x00a7, 0x00b8, 0x00c9, 0x00c9, 0x00da, 0x00ec, 0x00ec, 0x00fd, - 0x010f, 0x0121, 0x0132, 0x0143, 0x0143, 0x0155, 0x016a, 0x017f, - 0x0193, 0x01a8, 0x01bc, 0x01d1, 0x01ed, 0x020a, 0x020a, 0x021f, - 0x0234, 0x0234, 0x0249, 0x025e, 0x0271, 0x0271, 0x027b, 0x027b, - 0x0291, 0x0291, 0x02a3, 0x02c0, 0x02e4, 0x02fd, 0x0316, 0x0332, - 0x034f, 0x034f, 0x036b, 0x0386, 0x03a1, 0x03be, 0x03da, 0x03f6, - 0x0411, 0x0011, 0x002b, 0x0046, 0x0061, 0x007c, 0x0097, 0x0097, - 0x00a4, 0x00b2, 0x00bf, 0x00cd, 0x00da, 0x00e8, 0x00fd, 0x0113, - // Entry 4DC0 - 4DFF - 0x0128, 0x013e, 0x014b, 0x0159, 0x0166, 0x0174, 0x0182, 0x0191, - 0x019f, 0x01ae, 0x01bd, 0x01cd, 0x01db, 0x01ea, 0x01f8, 0x0207, - 0x0216, 0x0226, 0x0235, 0x0245, 0x0254, 0x0264, 0x0273, 0x0281, - 0x0290, 0x029e, 0x02ad, 0x02bb, 0x02ca, 0x02d8, 0x02e7, 0x02f5, - 0x0304, 0x0312, 0x0321, 0x032f, 0x033d, 0x034c, 0x035a, 0x0369, - 0x0377, 0x0386, 0x0395, 0x03a3, 0x03b1, 0x03c3, 0x03d4, 0x03e6, - 0x03f7, 0x0409, 0x0422, 0x043c, 0x0455, 0x046f, 0x0480, 0x0492, - 0x04a3, 0x04b5, 0x04c5, 0x04da, 0x04ec, 0x04fd, 0x050c, 0x051e, - // Entry 4E00 - 4E3F - 0x0536, 0x053d, 0x0548, 0x0552, 0x0563, 0x056d, 0x057c, 0x0592, - 0x05a1, 0x05af, 0x05bd, 0x05cd, 0x05dc, 0x05eb, 0x05f9, 0x0609, - 0x0619, 0x0628, 0x0228, 0x023d, 0x023d, 0x0250, 0x0250, 0x025c, - 0x026c, 0x027d, 0x028d, 0x029e, 0x02ae, 0x02bf, 0x02d7, 0x02f0, - 0x0308, 0x0321, 0x0331, 0x0342, 0x0352, 0x0363, 0x0374, 0x0386, - 0x0397, 0x03a9, 0x03bb, 0x03cc, 0x03de, 0x03ef, 0x0401, 0x0413, - 0x0425, 0x0438, 0x044a, 0x045d, 0x046f, 0x0480, 0x0492, 0x04a3, - 0x04b5, 0x04c6, 0x04d7, 0x04e9, 0x04fa, 0x050c, 0x051d, 0x052e, - // Entry 4E40 - 4E7F - 0x053f, 0x0550, 0x0561, 0x0573, 0x0585, 0x0596, 0x05a7, 0x05bc, - 0x05d0, 0x05e5, 0x05f9, 0x060e, 0x062a, 0x0647, 0x0663, 0x0680, - 0x0694, 0x06ae, 0x06c3, 0x06d7, 0x06f1, 0x0706, 0x071e, 0x0733, - 0x0747, 0x075a, 0x076c, 0x0781, 0x078e, 0x07a7, 0x07b1, 0x03b1, - 0x03c3, 0x03d4, 0x03e5, 0x03f8, 0x040a, 0x041c, 0x042d, 0x0440, - 0x0453, 0x0465, 0x0065, 0x0075, 0x0086, 0x0096, 0x00a7, 0x00b7, - 0x00c8, 0x00e0, 0x00f9, 0x0111, 0x012a, 0x013a, 0x014b, 0x015b, - 0x016c, 0x017d, 0x018f, 0x01a0, 0x01b2, 0x01c4, 0x01d5, 0x01e7, - // Entry 4E80 - 4EBF - 0x01f8, 0x020a, 0x021c, 0x022e, 0x0241, 0x0253, 0x0266, 0x0278, - 0x0289, 0x029b, 0x02ac, 0x02be, 0x02cf, 0x02e0, 0x02f2, 0x0303, - 0x0315, 0x0326, 0x0337, 0x0348, 0x0359, 0x036a, 0x037c, 0x038e, - 0x039f, 0x03b0, 0x03c5, 0x03d9, 0x03ee, 0x0402, 0x0417, 0x0433, - 0x0450, 0x0050, 0x0064, 0x0079, 0x008d, 0x00a2, 0x00ba, 0x00cf, - 0x00e3, 0x00f6, 0x0108, 0x011c, 0x0129, 0x013d, 0x0152, 0x0167, - 0x0180, 0x0199, 0x01b2, 0x01ca, 0x0202, 0x0238, 0x026b, 0x02a5, - 0x02df, 0x02ff, 0x0329, 0x0353, 0x037d, 0x03aa, 0x03d6, 0x0400, - // Entry 4EC0 - 4EFF - 0x0434, 0x0469, 0x0490, 0x04b5, 0x04db, 0x04f5, 0x0513, 0x0532, - 0x0132, 0x013f, 0x014d, 0x015a, 0x0168, 0x0175, 0x0183, 0x0198, - 0x01ae, 0x01c3, 0x01d9, 0x01e6, 0x01f4, 0x0201, 0x020f, 0x021d, - 0x022c, 0x023a, 0x0249, 0x0258, 0x0266, 0x0275, 0x0283, 0x0292, - 0x02a1, 0x02b0, 0x02c0, 0x02cf, 0x02df, 0x02ee, 0x02fc, 0x030b, - 0x0319, 0x0328, 0x0336, 0x0344, 0x0353, 0x0361, 0x0370, 0x037e, - 0x038c, 0x039a, 0x03a8, 0x03b6, 0x03c5, 0x03d4, 0x03e2, 0x03f0, - 0x03ff, 0x0411, 0x0422, 0x0434, 0x0445, 0x0457, 0x0470, 0x048a, - // Entry 4F00 - 4F3F - 0x04a3, 0x04bd, 0x04ce, 0x04e0, 0x04f1, 0x0503, 0x0515, 0x0526, - 0x0536, 0x054b, 0x0555, 0x0566, 0x057c, 0x058a, 0x018a, 0x0199, - 0x01a7, 0x01b5, 0x01c5, 0x01d4, 0x01e3, 0x01f1, 0x0201, 0x0211, - 0x0220, 0x0220, 0x023d, 0x0254, 0x0278, 0x029c, 0x02c0, 0x02e5, - 0x0311, 0x0329, 0x0356, 0x036b, 0x038e, 0x03b8, 0x03e9, 0x03e9, - 0x03f7, 0x0406, 0x0414, 0x0423, 0x0431, 0x0440, 0x044e, 0x045d, - 0x046b, 0x047a, 0x0489, 0x0499, 0x04a8, 0x04b8, 0x04c8, 0x04d7, - 0x04e7, 0x04f6, 0x0506, 0x0516, 0x0526, 0x0537, 0x0547, 0x0558, - // Entry 4F40 - 4F7F - 0x0568, 0x0577, 0x0587, 0x0596, 0x05a6, 0x05b5, 0x05c4, 0x05d4, - 0x05e3, 0x05f3, 0x0602, 0x0611, 0x0620, 0x062f, 0x063e, 0x064e, - 0x065d, 0x066c, 0x067c, 0x068f, 0x06a1, 0x06b4, 0x06c6, 0x06d9, - 0x06eb, 0x06fe, 0x0710, 0x0723, 0x0735, 0x0748, 0x0759, 0x0769, - 0x0369, 0x0379, 0x0388, 0x0397, 0x03a8, 0x03b8, 0x03c8, 0x03d7, - 0x03e8, 0x03f9, 0x0409, 0x0009, 0x0017, 0x0026, 0x0035, 0x0043, - 0x0051, 0x0069, 0x0077, 0x0086, 0x0094, 0x00a2, 0x00b0, 0x00bf, - 0x00ce, 0x00dc, 0x00ea, 0x00f8, 0x0107, 0x0115, 0x0122, 0x0130, - // Entry 4F80 - 4FBF - 0x013f, 0x014d, 0x0165, 0x0174, 0x0183, 0x0192, 0x0192, 0x01af, - 0x01cc, 0x01f2, 0x0203, 0x0215, 0x0226, 0x0238, 0x0249, 0x025b, - 0x026c, 0x027e, 0x028f, 0x02a1, 0x02b3, 0x02c3, 0x02c3, 0x02d2, - 0x02e0, 0x02ee, 0x02fe, 0x030d, 0x031c, 0x032a, 0x033a, 0x034a, - 0x0359, 0x0368, 0x037a, 0x0391, 0x03a2, 0x03b1, 0x03bf, 0x03bf, - 0x03de, 0x03fa, 0x0417, 0x0434, 0x0451, 0x046e, 0x048b, 0x04a8, - 0x04c4, 0x04e0, 0x04fe, 0x051b, 0x0538, 0x0556, 0x0574, 0x0591, - 0x05af, 0x05cd, 0x05eb, 0x060a, 0x0627, 0x0644, 0x0661, 0x067e, - // Entry 4FC0 - 4FFF - 0x069b, 0x06ba, 0x06d9, 0x06f8, 0x0716, 0x0735, 0x0753, 0x0772, - 0x078f, 0x07a9, 0x07c4, 0x07df, 0x07fa, 0x0815, 0x0830, 0x084b, - 0x0865, 0x087f, 0x089b, 0x08b6, 0x08d1, 0x08ed, 0x0909, 0x0924, - 0x0940, 0x095c, 0x0978, 0x0995, 0x09b0, 0x09cb, 0x09e6, 0x0a01, - 0x0a1c, 0x0a39, 0x0a56, 0x0a73, 0x0a8f, 0x0aac, 0x0ac8, 0x0ae5, - 0x0afb, 0x0b10, 0x0b25, 0x0b3c, 0x0b52, 0x0b68, 0x0b7d, 0x0b94, - 0x0bab, 0x0bc1, 0x0bd7, 0x0bf0, 0x0c09, 0x0c21, 0x0c39, 0x0c51, - 0x0c6b, 0x0c84, 0x0c9d, 0x009d, 0x00ab, 0x00ab, 0x00c0, 0x00d5, - // Entry 5000 - 503F - 0x00ea, 0x00ff, 0x0114, 0x0129, 0x013e, 0x0154, 0x0169, 0x017e, - 0x0194, 0x01a9, 0x01be, 0x01d3, 0x01e8, 0x01fe, 0x0213, 0x0229, - 0x023e, 0x0253, 0x0269, 0x027d, 0x0291, 0x02a5, 0x02b9, 0x02cd, - 0x02e2, 0x02f7, 0x0311, 0x032b, 0x0345, 0x035f, 0x0379, 0x0393, - 0x03ad, 0x03c8, 0x03e2, 0x03fe, 0x0415, 0x0434, 0x0456, 0x0473, - 0x0498, 0x04b4, 0x04cb, 0x04ed, 0x050a, 0x0524, 0x0544, 0x0569, - 0x0589, 0x05aa, 0x05c6, 0x05de, 0x0605, 0x0627, 0x0645, 0x0245, - 0x0257, 0x026a, 0x027c, 0x028f, 0x02a1, 0x02b4, 0x02ce, 0x02e9, - // Entry 5040 - 507F - 0x0303, 0x0303, 0x0315, 0x0328, 0x033a, 0x034d, 0x0360, 0x0374, - 0x0387, 0x039b, 0x03af, 0x03c2, 0x03d6, 0x03e9, 0x03fd, 0x0411, - 0x0425, 0x043a, 0x044e, 0x0463, 0x0477, 0x048a, 0x049e, 0x04b1, - 0x04c5, 0x04d8, 0x04eb, 0x04ff, 0x0512, 0x0526, 0x0539, 0x054c, - 0x055f, 0x0572, 0x0585, 0x0599, 0x05ad, 0x05c0, 0x05d3, 0x05ea, - 0x0600, 0x0617, 0x062d, 0x0644, 0x0662, 0x0681, 0x069f, 0x029f, - 0x02b5, 0x02cc, 0x02e2, 0x02f9, 0x0313, 0x032a, 0x0340, 0x0355, - 0x036c, 0x037b, 0x0391, 0x03a9, 0x03bf, 0x03d5, 0x03d5, 0x03e9, - // Entry 5080 - 50BF - 0x03fc, 0x040f, 0x0424, 0x0438, 0x044c, 0x045f, 0x0474, 0x0489, - 0x049d, 0x04b1, 0x04c5, 0x04db, 0x04f0, 0x0505, 0x0519, 0x052f, - 0x0545, 0x055a, 0x056e, 0x0585, 0x059c, 0x05b2, 0x05c8, 0x05de, - 0x05f6, 0x060d, 0x0624, 0x0640, 0x0240, 0x0251, 0x0262, 0x0273, - 0x0285, 0x0296, 0x02a8, 0x02b9, 0x02cb, 0x02dc, 0x02ee, 0x02ff, - 0x0311, 0x0322, 0x0333, 0x0344, 0x0356, 0x0367, 0x0378, 0x038a, - 0x039d, 0x03af, 0x03c0, 0x03d2, 0x03e3, 0x03f4, 0x0405, 0x0416, - 0x0427, 0x0439, 0x044a, 0x045b, 0x046b, 0x006b, 0x0086, 0x00a2, - // Entry 50C0 - 50FF - 0x00bd, 0x00d9, 0x00f4, 0x0110, 0x012b, 0x0147, 0x0162, 0x017e, - 0x0199, 0x01b4, 0x01cf, 0x01eb, 0x0206, 0x0221, 0x023d, 0x025a, - 0x0276, 0x0291, 0x02ad, 0x02c8, 0x02c8, 0x02e3, 0x02fe, 0x0319, - 0x0335, 0x0350, 0x036b, 0x0385, 0x039a, 0x03ae, 0x03c2, 0x03d6, - 0x03ea, 0x03ff, 0x0417, 0x0017, 0x0027, 0x003f, 0x0059, 0x0079, - 0x0092, 0x00ac, 0x00cd, 0x00e8, 0x0102, 0x0113, 0x0124, 0x0140, - 0x0161, 0x017c, 0x019d, 0x01b7, 0x01d7, 0x01f3, 0x0210, 0x022d, - 0x0254, 0x026a, 0x027c, 0x029a, 0x02bc, 0x02df, 0x02fc, 0x0319, - // Entry 5100 - 513F - 0x032a, 0x033b, 0x0358, 0x037f, 0x0390, 0x03aa, 0x03c6, 0x03e2, - 0x03fc, 0x0418, 0x0432, 0x044d, 0x0468, 0x047b, 0x048f, 0x04a2, - 0x04bf, 0x04d0, 0x04e9, 0x0506, 0x0537, 0x055a, 0x056e, 0x0581, - 0x0594, 0x05b1, 0x05c5, 0x05d9, 0x05eb, 0x0607, 0x0623, 0x0660, - 0x0684, 0x06c7, 0x06da, 0x06ef, 0x0700, 0x0712, 0x0725, 0x073a, - 0x074c, 0x0767, 0x077b, 0x078d, 0x07a1, 0x07b2, 0x07cb, 0x07e6, - 0x0806, 0x0817, 0x0833, 0x084f, 0x086c, 0x0880, 0x089f, 0x08b1, - 0x08c4, 0x08d5, 0x08e7, 0x0912, 0x0936, 0x095b, 0x097d, 0x099f, - // Entry 5140 - 517F - 0x09cb, 0x09ed, 0x0a11, 0x0a34, 0x0a56, 0x0a78, 0x0aa2, 0x0ac5, - 0x0ae7, 0x0b09, 0x0b36, 0x0b59, 0x0b7b, 0x0ba7, 0x0bc9, 0x0bed, - 0x0c19, 0x0c3c, 0x0c4e, 0x0c60, 0x0c74, 0x0c88, 0x0c99, 0x0cab, - 0x0cbd, 0x0cd9, 0x0cec, 0x0cfe, 0x0d23, 0x0d36, 0x0d47, 0x0d60, - 0x0d76, 0x0d8f, 0x0da1, 0x0dbe, 0x0dd1, 0x0de3, 0x0df7, 0x0e09, - 0x0e1b, 0x0e2e, 0x0e46, 0x0e63, 0x0e76, 0x0e89, 0x0e99, 0x0eb3, - 0x0ed7, 0x0ee8, 0x0f11, 0x0f2c, 0x0f46, 0x0f61, 0x0f7c, 0x0f95, - 0x0fa8, 0x0fbb, 0x0fcc, 0x0fdd, 0x0ff9, 0x101a, 0x1034, 0x1051, - // Entry 5180 - 51BF - 0x106e, 0x1087, 0x109a, 0x10ae, 0x10c1, 0x10d4, 0x10ef, 0x1113, - 0x1141, 0x115d, 0x117a, 0x119d, 0x11c5, 0x11e1, 0x1202, 0x1224, - 0x1244, 0x126c, 0x1289, 0x12a5, 0x12cc, 0x12e8, 0x1304, 0x1320, - 0x133c, 0x134d, 0x1363, 0x1375, 0x139f, 0x13c1, 0x13e4, 0x140e, - 0x1429, 0x1445, 0x146b, 0x1487, 0x14ab, 0x14c7, 0x14eb, 0x1506, - 0x1521, 0x1547, 0x1563, 0x157e, 0x15a1, 0x15bc, 0x15e7, 0x1609, - 0x1625, 0x1640, 0x165c, 0x167f, 0x16a4, 0x16d1, 0x16ed, 0x1711, - 0x1734, 0x1751, 0x1772, 0x179f, 0x17bb, 0x17da, 0x17f6, 0x181b, - // Entry 51C0 - 51FF - 0x183f, 0x185a, 0x187d, 0x1898, 0x18b4, 0x18d9, 0x18f4, 0x1910, - 0x192c, 0x1948, 0x196d, 0x198a, 0x19a6, 0x19c3, 0x19dd, 0x19f8, - 0x1a1b, 0x1a36, 0x1a49, 0x1a6a, 0x1a7c, 0x1aa4, 0x1ab6, 0x1ae2, - 0x1af6, 0x1b08, 0x1b1a, 0x1b2d, 0x1b45, 0x1b62, 0x1b83, 0x1b95, - 0x1ba8, 0x1bbd, 0x1bd3, 0x1bf3, 0x1c04, 0x1c1d, 0x1c36, 0x1c53, - 0x1c65, 0x1c80, 0x1c9f, 0x1cb3, 0x1cc6, 0x1cde, 0x1cf1, 0x1d15, - 0x1d38, 0x1d55, 0x1d7a, 0x1d96, 0x1daa, 0x1dbd, 0x1dde, 0x1dfb, - 0x1e19, 0x1e31, 0x1e42, 0x1e5f, 0x1e71, 0x1e8d, 0x1eb8, 0x1ed4, - // Entry 5200 - 523F - 0x1efa, 0x1f11, 0x1f23, 0x1f46, 0x1f62, 0x1f83, 0x1f95, 0x1fa7, - 0x1fc3, 0x1fd5, 0x1fe8, 0x1ffc, 0x2011, 0x2022, 0x2038, 0x204e, - 0x2060, 0x2071, 0x208c, 0x20a8, 0x20c3, 0x20df, 0x20fa, 0x2115, - 0x2130, 0x214b, 0x2164, 0x2175, 0x2188, 0x21a4, 0x21c1, 0x21e1, - 0x21ff, 0x221b, 0x222e, 0x223e, 0x2250, 0x2261, 0x2274, 0x2295, - 0x22ba, 0x22cb, 0x22dd, 0x22f3, 0x2308, 0x233d, 0x2354, 0x2365, - 0x2386, 0x2398, 0x23a9, 0x23c5, 0x23e2, 0x23ff, 0x2418, 0x242b, - 0x243c, 0x244d, 0x245f, 0x2470, 0x2489, 0x24a3, 0x24c6, 0x24e2, - // Entry 5240 - 527F - 0x24fd, 0x251a, 0x2535, 0x254f, 0x256c, 0x2588, 0x25a2, 0x25bd, - 0x25de, 0x25f9, 0x2625, 0x263f, 0x265b, 0x2680, 0x26aa, 0x26c4, - 0x26e0, 0x26fb, 0x2715, 0x2730, 0x274a, 0x2765, 0x277f, 0x2799, - 0x27b3, 0x27d5, 0x27f7, 0x2819, 0x2833, 0x2858, 0x2872, 0x288d, - 0x28a7, 0x28c1, 0x28db, 0x28f6, 0x2911, 0x292c, 0x2948, 0x2963, - 0x297e, 0x299b, 0x29b6, 0x29cf, 0x29e9, 0x2a03, 0x2a28, 0x2a43, - 0x2a5d, 0x2a6f, 0x2a8e, 0x2aa0, 0x2ab3, 0x2ac6, 0x2ad9, 0x2aec, - 0x2b09, 0x2b1b, 0x2b3c, 0x2b4e, 0x2b6a, 0x2b89, 0x2b9c, 0x2baf, - // Entry 5280 - 52BF - 0x2bc4, 0x2bfa, 0x2c3c, 0x2c50, 0x2c61, 0x2c7c, 0x2c95, 0x2caf, - 0x2cc1, 0x2cd3, 0x2ce7, 0x2cfa, 0x2d0f, 0x2d30, 0x2d41, 0x2d7b, - 0x2d8d, 0x2d9f, 0x2dbe, 0x2dd0, 0x2de2, 0x2df9, 0x2e0b, 0x2e1d, - 0x2e3c, 0x2e51, 0x2e66, 0x2e77, 0x2e8b, 0x2ea7, 0x2ed3, 0x2ef8, - 0x2f1d, 0x2f3a, 0x2f57, 0x2f7f, 0x2f9d, 0x2fba, 0x2fd8, 0x2ff5, - 0x3012, 0x3030, 0x304e, 0x3075, 0x3092, 0x30b0, 0x30d7, 0x30fa, - 0x3117, 0x313c, 0x3161, 0x317e, 0x319c, 0x31ba, 0x31d8, 0x3205, - 0x3225, 0x3244, 0x3261, 0x327f, 0x329c, 0x32c1, 0x32e0, 0x32fd, - // Entry 52C0 - 52FF - 0x3324, 0x3359, 0x3388, 0x33a7, 0x33d0, 0x33ee, 0x340c, 0x342b, - 0x345f, 0x347b, 0x349e, 0x34c8, 0x34ee, 0x350b, 0x3529, 0x3545, - 0x3559, 0x3577, 0x359e, 0x35b7, 0x35e4, 0x35f9, 0x360b, 0x3627, - 0x3639, 0x3655, 0x3679, 0x368a, 0x369c, 0x36b1, 0x36c4, 0x36d5, - 0x36f0, 0x3702, 0x371d, 0x3739, 0x3756, 0x3778, 0x379a, 0x37bf, - 0x37da, 0x37f7, 0x3814, 0x383a, 0x3855, 0x3879, 0x3897, 0x38ba, - 0x38d5, 0x38f0, 0x3914, 0x3939, 0x3956, 0x396d, 0x398c, 0x39ab, - 0x39c5, 0x39df, 0x39f1, 0x3a05, 0x3a24, 0x3a47, 0x3a63, 0x3a75, - // Entry 5300 - 533F - 0x3a87, 0x3a99, 0x3ab4, 0x3adc, 0x3aed, 0x3b09, 0x3b1f, 0x3b31, - 0x3b43, 0x3b55, 0x3b68, 0x3b7c, 0x3b8d, 0x3b9f, 0x3bb0, 0x3bc2, - 0x3bd3, 0x3bec, 0x3bfe, 0x3c15, 0x3c2a, 0x3c3f, 0x3c52, 0x3c6d, - 0x3c8a, 0x3ca6, 0x3cc3, 0x3cf0, 0x3d11, 0x3d25, 0x3d41, 0x3d65, - 0x3d82, 0x3d9b, 0x3dac, 0x3dbe, 0x3dd1, 0x3ded, 0x3e0f, 0x3e30, - 0x3e44, 0x3e5e, 0x3e70, 0x3e83, 0x3e94, 0x3ead, 0x3ec7, 0x3ee0, - 0x3ef1, 0x3f0a, 0x3f1c, 0x3f2e, 0x3f50, 0x3f7b, 0x3f90, 0x3fae, - 0x3fcd, 0x3ff5, 0x4014, 0x4041, 0x405f, 0x407e, 0x409d, 0x40c6, - // Entry 5340 - 537F - 0x40ee, 0x411f, 0x4146, 0x4165, 0x4179, 0x418a, 0x419d, 0x41af, - 0x41d1, 0x41f4, 0x4216, 0x4251, 0x4273, 0x428a, 0x42a5, 0x42c4, - 0x42f4, 0x4308, 0x432d, 0x434e, 0x4370, 0x4392, 0x43b9, 0x43dc, - 0x43fd, 0x441e, 0x4442, 0x4463, 0x4487, 0x44ad, 0x44be, 0x44d0, - 0x44e2, 0x44f4, 0x4508, 0x4519, 0x4532, 0x454c, 0x4566, 0x4580, - 0x4599, 0x45b2, 0x45cc, 0x45e5, 0x45ff, 0x461c, 0x4630, 0x464e, - 0x466b, 0x4688, 0x46ab, 0x46bc, 0x46ce, 0x46df, 0x46f0, 0x4701, - 0x471b, 0x472d, 0x4747, 0x4762, 0x477e, 0x4799, 0x47b5, 0x47d1, - // Entry 5380 - 53BF - 0x47ed, 0x4808, 0x4824, 0x4840, 0x485d, 0x4879, 0x4894, 0x48af, - 0x48ca, 0x48e5, 0x4901, 0x491c, 0x4933, 0x4945, 0x4968, 0x497d, - 0x498f, 0x49a1, 0x49b4, 0x49cf, 0x49ec, 0x4a0a, 0x4a26, 0x4a44, - 0x4a61, 0x4a7c, 0x4a9e, 0x4ab1, 0x4ac5, 0x4ad9, 0x4aeb, 0x4b00, - 0x4b35, 0x4b6a, 0x4b7e, 0x4b91, 0x4ba5, 0x4bba, 0x4bd1, 0x4be4, - 0x4bff, 0x4c1b, 0x4c2e, 0x4c49, 0x4c66, 0x4c85, 0x4ca2, 0x4cbf, - 0x4cdc, 0x4cfe, 0x4d1e, 0x4d3b, 0x4d58, 0x4d75, 0x4d8a, 0x4d9d, - 0x4db5, 0x4ddf, 0x4df3, 0x4e05, 0x4e29, 0x4e3c, 0x4e51, 0x4e62, - // Entry 53C0 - 53FF - 0x4e78, 0x4e8a, 0x4e9d, 0x4ebf, 0x4ed2, 0x4ee6, 0x4ef7, 0x4f10, - 0x4f22, 0x4f35, 0x4f49, 0x4f5b, 0x4f70, 0x4f82, 0x4f95, 0x4fa6, - 0x4fc0, 0x4fda, 0x4ff4, 0x500a, 0x501c, 0x5051, 0x506b, 0x507d, - 0x5098, 0x50b4, 0x50d0, 0x50ec, 0x5109, 0x5124, 0x5137, 0x5149, - 0x515a, 0x5170, 0x5181, 0x5197, 0x51a9, 0x51bb, 0x51d8, 0x51f3, - 0x5228, 0x5239, 0x524c, 0x525e, 0x5270, 0x5282, 0x52a8, 0x52b8, - 0x52cc, 0x52e0, 0x530f, 0x5333, 0x5365, 0x5376, 0x5387, 0x5398, - 0x53b0, 0x53cb, 0x53e5, 0x540c, 0x5438, 0x544e, 0x5467, 0x548a, - // Entry 5400 - 543F - 0x549d, 0x54ae, 0x54cb, 0x54ed, 0x5509, 0x5522, 0x5536, 0x5549, - 0x5569, 0x5585, 0x5596, 0x55ac, 0x55bd, 0x55da, 0x55f3, 0x5605, - 0x5627, 0x5649, 0x5664, 0x567f, 0x569b, 0x56b6, 0x56da, 0x56fd, - 0x570f, 0x5721, 0x5734, 0x5746, 0x5760, 0x577f, 0x579b, 0x57b7, - 0x57d2, 0x57ee, 0x5810, 0x582c, 0x5847, 0x5862, 0x587e, 0x5899, - 0x58b5, 0x58d0, 0x58ec, 0x5908, 0x5923, 0x593f, 0x595c, 0x5977, - 0x599a, 0x59b5, 0x59d3, 0x59e7, 0x5a03, 0x5a15, 0x5a2f, 0x5a4a, - 0x5a66, 0x5a83, 0x5a96, 0x5aa9, 0x5abe, 0x5ad2, 0x5ae4, 0x5b03, - // Entry 5440 - 547F - 0x5b15, 0x5b26, 0x5b3c, 0x5b5f, 0x5b71, 0x5b84, 0x5b96, 0x5ba7, - 0x5bc0, 0x5bd2, 0x5be4, 0x5c00, 0x5c12, 0x5c25, 0x5c36, 0x5c48, - 0x5c62, 0x5c76, 0x5c88, 0x5ca2, 0x5cbd, 0x5cd7, 0x5cf4, 0x5d20, - 0x5d33, 0x5d4f, 0x5d6b, 0x5d88, 0x5da5, 0x5dd0, 0x5ded, 0x5e00, - 0x5e12, 0x5e25, 0x5e42, 0x5e5e, 0x5e7a, 0x5e95, 0x5eba, 0x5ed5, - 0x5eef, 0x5f0b, 0x5f25, 0x5f40, 0x5f5d, 0x5f81, 0x5fa7, 0x5fc3, - 0x5fd6, 0x5ff3, 0x6005, 0x6017, 0x602a, 0x6049, 0x6067, 0x6091, - 0x60ae, 0x60c1, 0x60e2, 0x60f4, 0x610e, 0x6120, 0x0120, 0x013e, - // Entry 5480 - 54BF - 0x015e, 0x017d, 0x019c, 0x01ba, 0x01da, 0x01fa, 0x0219, 0x023a, - 0x025a, 0x027a, 0x0299, 0x02ba, 0x02db, 0x02fb, 0x0318, 0x0335, - 0x0351, 0x036f, 0x038d, 0x03aa, 0x03ca, 0x03ea, 0x040c, 0x042d, - 0x044e, 0x046e, 0x0490, 0x04b2, 0x04d3, 0x04f3, 0x0513, 0x0535, - 0x0556, 0x0577, 0x0597, 0x05b9, 0x05e8, 0x0609, 0x062a, 0x064a, - 0x066c, 0x068e, 0x06af, 0x06cf, 0x06ef, 0x0711, 0x0740, 0x0761, - 0x0782, 0x07b2, 0x07e1, 0x0800, 0x081f, 0x0840, 0x086e, 0x088e, - 0x08ae, 0x08dd, 0x090c, 0x093a, 0x0969, 0x0999, 0x09c9, 0x09f5, - // Entry 54C0 - 54FF - 0x0a24, 0x0a54, 0x0a84, 0x0ab2, 0x0ae1, 0x0b10, 0x0b40, 0x0b70, - 0x0ba1, 0x0bc4, 0x0be9, 0x0c0d, 0x0c31, 0x0c54, 0x0c73, 0x0c92, - 0x0cb3, 0x0cd3, 0x0d00, 0x0d20, 0x0d4d, 0x0d6d, 0x0d8d, 0x0dad, - 0x0dcd, 0x0df2, 0x0e18, 0x0e3f, 0x0e6e, 0x0e9e, 0x0ec3, 0x0ee9, - 0x0f16, 0x0f45, 0x0f6b, 0x0f8e, 0x0fb6, 0x0fdf, 0x1003, 0x1027, - 0x1051, 0x107b, 0x10a4, 0x10cf, 0x10fa, 0x1124, 0x0124, 0x0158, - 0x0181, 0x01aa, 0x01d6, 0x0203, 0x0203, 0x0223, 0x023f, 0x025b, - 0x027d, 0x029c, 0x02ba, 0x02d8, 0x02fb, 0x0317, 0x0333, 0x034f, - // Entry 5500 - 553F - 0x036d, 0x0389, 0x03a7, 0x03c3, 0x03e7, 0x0403, 0x041f, 0x043d, - 0x0458, 0x0473, 0x0495, 0x04b2, 0x04cd, 0x04e8, 0x0509, 0x0528, - 0x0544, 0x0563, 0x058e, 0x05ae, 0x05ca, 0x05f0, 0x0616, 0x0633, - 0x064f, 0x066a, 0x0685, 0x06a0, 0x06bc, 0x06dc, 0x06f7, 0x0712, - 0x0728, 0x0749, 0x076e, 0x0792, 0x07bc, 0x07e0, 0x0805, 0x0829, - 0x084e, 0x0872, 0x088e, 0x08ad, 0x08ce, 0x08f9, 0x0922, 0x093f, - 0x095a, 0x097e, 0x09a2, 0x09c4, 0x09ef, 0x0a0b, 0x0a31, 0x0a4d, - 0x0a6a, 0x0a85, 0x0aa8, 0x0acb, 0x0ae8, 0x0b05, 0x0b2f, 0x0b4d, - // Entry 5540 - 557F - 0x0b79, 0x0b9a, 0x0bc1, 0x0bdc, 0x0c09, 0x0c23, 0x0c3d, 0x0c5a, - 0x0c74, 0x0c99, 0x0caf, 0x0cc5, 0x0cdb, 0x0cf1, 0x0d07, 0x0d1d, - 0x0d33, 0x0d5b, 0x0d71, 0x0d94, 0x0daa, 0x0dc0, 0x0dd6, 0x0dec, - 0x0e02, 0x0e18, 0x0e2e, 0x0e44, 0x0e5a, 0x0e70, 0x0e86, 0x0e9c, - 0x0eb2, 0x0ec8, 0x0ede, 0x0ef4, 0x0f0a, 0x0f20, 0x0f36, 0x0f55, - 0x0f75, 0x0f9e, 0x0fd0, 0x0ff7, 0x100d, 0x1023, 0x1039, 0x104f, - 0x1065, 0x107b, 0x1091, 0x10a7, 0x10bd, 0x10d3, 0x10e9, 0x1109, - 0x1129, 0x1154, 0x1174, 0x1193, 0x11b3, 0x11d2, 0x11f1, 0x1210, - // Entry 5580 - 55BF - 0x1232, 0x1248, 0x125e, 0x127e, 0x129d, 0x12bd, 0x12e2, 0x1301, - 0x1333, 0x135d, 0x137c, 0x139e, 0x13b4, 0x13ca, 0x13eb, 0x1408, - 0x1424, 0x1440, 0x146e, 0x148b, 0x14a5, 0x14cb, 0x14f2, 0x1516, - 0x1536, 0x1555, 0x1573, 0x1594, 0x15b7, 0x15d7, 0x15ff, 0x161c, - 0x1640, 0x1661, 0x1681, 0x169c, 0x16c0, 0x16dd, 0x16f5, 0x1710, - 0x172c, 0x1748, 0x1763, 0x1788, 0x17ac, 0x17c8, 0x17e4, 0x1806, - 0x1829, 0x1844, 0x185f, 0x187d, 0x189d, 0x18b9, 0x18cb, 0x18ed, - 0x1915, 0x0115, 0x012d, 0x0145, 0x015d, 0x0175, 0x018d, 0x01a6, - // Entry 55C0 - 55FF - 0x01be, 0x01d7, 0x01f0, 0x0208, 0x0220, 0x0238, 0x0250, 0x0268, - 0x0280, 0x0298, 0x02b0, 0x02c9, 0x02e1, 0x02f9, 0x0311, 0x032a, - 0x0342, 0x035a, 0x0372, 0x038a, 0x03a2, 0x03ba, 0x03d2, 0x03ea, - 0x0402, 0x041a, 0x0432, 0x044a, 0x0462, 0x047a, 0x0492, 0x04ab, - 0x04c3, 0x04db, 0x04f3, 0x050b, 0x0523, 0x053b, 0x0553, 0x056b, - 0x0584, 0x059c, 0x05b4, 0x05cd, 0x05e5, 0x05fe, 0x0616, 0x062e, - 0x0647, 0x065f, 0x0677, 0x068f, 0x06a7, 0x06bf, 0x06d7, 0x06ef, - 0x0707, 0x071f, 0x0737, 0x074f, 0x0767, 0x077f, 0x0797, 0x07af, - // Entry 5600 - 563F - 0x07c7, 0x07df, 0x07f7, 0x080f, 0x0827, 0x083f, 0x0857, 0x086f, - 0x0887, 0x089f, 0x08b7, 0x08cf, 0x08e7, 0x08ff, 0x0917, 0x0930, - 0x0948, 0x0960, 0x0978, 0x0990, 0x09a8, 0x09c0, 0x09d9, 0x09f2, - 0x0a0b, 0x0a23, 0x0a3b, 0x0a53, 0x0a6b, 0x0a83, 0x0a9b, 0x0ab3, - 0x0acb, 0x0ae4, 0x0afc, 0x0b14, 0x0b2c, 0x0b44, 0x0b5c, 0x0b74, - 0x0b8c, 0x0ba4, 0x0bbc, 0x0bd4, 0x0bec, 0x0c04, 0x0c1c, 0x0c34, - 0x0c4c, 0x0c64, 0x0c7c, 0x0c94, 0x0cac, 0x0cc4, 0x0cdc, 0x0cf4, - 0x0d0d, 0x0d25, 0x0d3d, 0x0d55, 0x0d6d, 0x0d85, 0x0d9d, 0x0db5, - // Entry 5640 - 567F - 0x0dcd, 0x0de5, 0x0dfd, 0x0e15, 0x0e2d, 0x0e45, 0x0e5d, 0x0e75, - 0x0e8d, 0x0ea5, 0x0ebd, 0x0ed5, 0x0eee, 0x0f06, 0x0f1e, 0x0f36, - 0x0f4e, 0x0f67, 0x0f7f, 0x0f97, 0x0faf, 0x0fc8, 0x0fe0, 0x0ff8, - 0x1010, 0x1028, 0x1040, 0x1058, 0x1070, 0x1088, 0x10a0, 0x10b8, - 0x10d0, 0x10e8, 0x1101, 0x1119, 0x1131, 0x114a, 0x1162, 0x117a, - 0x1193, 0x11ac, 0x11c5, 0x11de, 0x11f7, 0x1210, 0x1229, 0x1242, - 0x125b, 0x1273, 0x128b, 0x12a4, 0x12bc, 0x12d4, 0x12ed, 0x1305, - 0x131d, 0x1335, 0x134d, 0x1365, 0x137d, 0x1395, 0x13ad, 0x13c5, - // Entry 5680 - 56BF - 0x13dd, 0x13f5, 0x140d, 0x1425, 0x143e, 0x1457, 0x1470, 0x1489, - 0x14a2, 0x14bb, 0x14d4, 0x14ed, 0x1505, 0x151d, 0x1535, 0x154d, - 0x1565, 0x157d, 0x1595, 0x15ad, 0x15c6, 0x15de, 0x15f7, 0x160f, - 0x1627, 0x163f, 0x1657, 0x166f, 0x1687, 0x169f, 0x16b8, 0x16d0, - 0x16e9, 0x1701, 0x1719, 0x1731, 0x174a, 0x1762, 0x177a, 0x1792, - 0x17aa, 0x17c2, 0x17da, 0x17f2, 0x180a, 0x1823, 0x183b, 0x1853, - 0x186b, 0x1883, 0x189b, 0x18b3, 0x18cc, 0x18e4, 0x18fc, 0x1914, - 0x192c, 0x1945, 0x195d, 0x1975, 0x198d, 0x19a5, 0x19bd, 0x19d5, - // Entry 56C0 - 56FF - 0x19ed, 0x1a05, 0x1a1d, 0x1a35, 0x1a4d, 0x1a65, 0x1a7e, 0x1a96, - 0x1aae, 0x1ac6, 0x1ade, 0x1af6, 0x1b0e, 0x1b26, 0x1b3e, 0x1b57, - 0x1b6f, 0x1b87, 0x1b9f, 0x1bb7, 0x1bcf, 0x1be7, 0x1bff, 0x1c17, - 0x1c2f, 0x1c47, 0x1c60, 0x1c78, 0x1c90, 0x1ca8, 0x1cc0, 0x1cd8, - 0x1cf0, 0x1d09, 0x1d21, 0x1d3a, 0x1d52, 0x1d6a, 0x1d82, 0x1d9a, - 0x1db2, 0x1dca, 0x1de2, 0x1dfb, 0x1e13, 0x1e2c, 0x1e44, 0x1e5d, - 0x1e75, 0x1e8d, 0x1ea5, 0x1ebd, 0x1ed6, 0x1eef, 0x1f08, 0x1f20, - 0x1f38, 0x1f50, 0x1f68, 0x1f80, 0x1f98, 0x1fb0, 0x1fc8, 0x1fe1, - // Entry 5700 - 573F - 0x1ff9, 0x2012, 0x202b, 0x2043, 0x205b, 0x2073, 0x208b, 0x20a4, - 0x20bc, 0x20d4, 0x20ec, 0x2104, 0x211c, 0x2134, 0x214c, 0x2164, - 0x217c, 0x2195, 0x21ad, 0x21c5, 0x21dd, 0x21f5, 0x220d, 0x2225, - 0x223e, 0x2256, 0x226e, 0x2286, 0x229e, 0x22b6, 0x22ce, 0x22e6, - 0x22fe, 0x2316, 0x232e, 0x2347, 0x235f, 0x2378, 0x2390, 0x23a8, - 0x23c0, 0x23d8, 0x23f0, 0x2408, 0x2421, 0x2439, 0x2451, 0x246a, - 0x2482, 0x249a, 0x24b2, 0x24ca, 0x24e2, 0x24fa, 0x2512, 0x252a, - 0x2542, 0x255a, 0x2572, 0x258a, 0x25a2, 0x25ba, 0x25d2, 0x25eb, - // Entry 5740 - 577F - 0x2603, 0x261b, 0x2633, 0x264b, 0x2663, 0x267b, 0x2693, 0x26ac, - 0x26c4, 0x26dc, 0x26f4, 0x270c, 0x2725, 0x273d, 0x2756, 0x276e, - 0x2787, 0x279f, 0x27b7, 0x27cf, 0x27e7, 0x27ff, 0x2817, 0x282f, - 0x2847, 0x285f, 0x2877, 0x288f, 0x28a7, 0x28bf, 0x28d7, 0x28f0, - 0x2908, 0x2920, 0x2938, 0x2950, 0x2969, 0x2981, 0x2999, 0x29b1, - 0x29ca, 0x29e3, 0x29fb, 0x2a13, 0x2a2c, 0x2a44, 0x2a5c, 0x2a74, - 0x2a8c, 0x2aa4, 0x2abc, 0x2ad4, 0x2aed, 0x2b05, 0x2b1d, 0x2b36, - 0x2b4f, 0x2b68, 0x2b81, 0x2b9a, 0x2bb3, 0x2bcc, 0x2be5, 0x2bfd, - // Entry 5780 - 57BF - 0x2c15, 0x2c2d, 0x2c46, 0x2c5e, 0x2c77, 0x2c8f, 0x2ca8, 0x2cc0, - 0x2cd8, 0x2cf0, 0x2d08, 0x2d20, 0x2d39, 0x2d51, 0x2d69, 0x2d82, - 0x2d9a, 0x2db2, 0x2dca, 0x2de2, 0x2dfb, 0x2e13, 0x2e2b, 0x2e43, - 0x2e5c, 0x2e74, 0x2e8c, 0x2ea5, 0x2ebe, 0x2ed6, 0x2eee, 0x2f06, - 0x2f1e, 0x2f36, 0x2f4e, 0x2f66, 0x2f7f, 0x2f97, 0x2faf, 0x2fc7, - 0x2fdf, 0x2ff7, 0x300f, 0x3027, 0x303f, 0x3057, 0x306f, 0x3087, - 0x309f, 0x30b7, 0x30cf, 0x30e7, 0x30ff, 0x3117, 0x312f, 0x3147, - 0x315f, 0x3177, 0x318f, 0x31a8, 0x31c1, 0x31d9, 0x31f1, 0x3209, - // Entry 57C0 - 57FF - 0x3221, 0x3239, 0x3251, 0x3269, 0x3282, 0x329a, 0x32b2, 0x32ca, - 0x32e2, 0x32fa, 0x3312, 0x332a, 0x3342, 0x335b, 0x3373, 0x338c, - 0x33a4, 0x33bd, 0x33d5, 0x33ed, 0x3406, 0x341e, 0x3436, 0x344e, - 0x3466, 0x347e, 0x3497, 0x34b0, 0x34c9, 0x34e2, 0x34fb, 0x3515, - 0x352e, 0x3547, 0x3560, 0x3579, 0x3592, 0x35ab, 0x35c4, 0x35dd, - 0x35f6, 0x360f, 0x3628, 0x3641, 0x365b, 0x3674, 0x368d, 0x36a6, - 0x36bf, 0x36d8, 0x36f1, 0x370a, 0x3723, 0x373c, 0x3755, 0x376e, - 0x3787, 0x37a0, 0x37ba, 0x37d3, 0x37ed, 0x3806, 0x381f, 0x3838, - // Entry 5800 - 583F - 0x3851, 0x386a, 0x3883, 0x389c, 0x38b6, 0x38cf, 0x38e8, 0x3901, - 0x391a, 0x3934, 0x394c, 0x3965, 0x397d, 0x3995, 0x39ad, 0x39c5, - 0x39de, 0x39f6, 0x3a0f, 0x3a28, 0x3a41, 0x3a5a, 0x3a73, 0x3a8c, - 0x3aa4, 0x3abc, 0x3ad4, 0x3aec, 0x3b05, 0x3b1e, 0x3b37, 0x3b4f, - 0x3b67, 0x3b7f, 0x3b97, 0x3baf, 0x3bc7, 0x3bdf, 0x3bf7, 0x3c0f, - 0x3c28, 0x3c40, 0x3c59, 0x3c71, 0x3c89, 0x3ca1, 0x3cb9, 0x3cd2, - 0x3cea, 0x3d03, 0x3d1b, 0x3d33, 0x3d4b, 0x3d63, 0x3d7c, 0x3d94, - 0x3dad, 0x3dc5, 0x3ddd, 0x3df5, 0x3e0e, 0x3e26, 0x3e3e, 0x3e56, - // Entry 5840 - 587F - 0x3e6f, 0x3e88, 0x3ea1, 0x3eba, 0x3ed2, 0x3eea, 0x3f02, 0x3f1a, - 0x3f32, 0x3f4a, 0x3f62, 0x3f7a, 0x3f92, 0x3faa, 0x3fc2, 0x3fda, - 0x3ff2, 0x400a, 0x4023, 0x403c, 0x4054, 0x406c, 0x4085, 0x409d, - 0x40b5, 0x40ce, 0x40e6, 0x40fe, 0x4116, 0x412e, 0x4146, 0x415e, - 0x4176, 0x418e, 0x41a6, 0x41be, 0x41d6, 0x41ee, 0x4206, 0x421e, - 0x4236, 0x424e, 0x4266, 0x427f, 0x4297, 0x42b0, 0x42c9, 0x42e1, - 0x42f9, 0x4311, 0x4329, 0x4341, 0x4359, 0x4371, 0x438a, 0x43a2, - 0x43ba, 0x43d2, 0x43ea, 0x4402, 0x441a, 0x4433, 0x444b, 0x4463, - // Entry 5880 - 58BF - 0x447b, 0x4493, 0x44ab, 0x44c3, 0x44db, 0x44f3, 0x450b, 0x4523, - 0x453b, 0x4553, 0x456b, 0x4583, 0x459b, 0x45b4, 0x45cc, 0x45e4, - 0x45fc, 0x4614, 0x462d, 0x4645, 0x465d, 0x4675, 0x468d, 0x46a5, - 0x46bd, 0x46d5, 0x46ed, 0x4706, 0x471f, 0x4737, 0x474f, 0x4767, - 0x4780, 0x4798, 0x47b0, 0x47c8, 0x47e0, 0x47f8, 0x4810, 0x4828, - 0x4840, 0x4858, 0x4871, 0x488a, 0x48a2, 0x48ba, 0x48d2, 0x48ea, - 0x4902, 0x491a, 0x4932, 0x494a, 0x4962, 0x497b, 0x4993, 0x49ab, - 0x49c3, 0x49db, 0x49f3, 0x4a0b, 0x4a23, 0x4a3b, 0x4a53, 0x4a6b, - // Entry 58C0 - 58FF - 0x4a83, 0x4a9b, 0x4ab3, 0x4acb, 0x4ae4, 0x4afc, 0x4b14, 0x4b2c, - 0x4b44, 0x4b5d, 0x4b75, 0x4b8e, 0x4ba6, 0x4bbf, 0x4bd7, 0x4bef, - 0x4c08, 0x4c20, 0x4c38, 0x4c50, 0x4c68, 0x4c80, 0x4c99, 0x4cb1, - 0x4cc9, 0x4ce1, 0x4cf9, 0x4d11, 0x4d29, 0x4d41, 0x4d59, 0x4d71, - 0x4d89, 0x4da1, 0x4db9, 0x4dd1, 0x4de9, 0x4e01, 0x4e19, 0x4e32, - 0x4e4a, 0x4e63, 0x4e7b, 0x4e93, 0x4eab, 0x4ec3, 0x4edb, 0x4ef3, - 0x4f0b, 0x4f23, 0x4f3b, 0x4f54, 0x4f6d, 0x4f85, 0x4f9d, 0x4fb5, - 0x4fcd, 0x4fe5, 0x4ffd, 0x5015, 0x502d, 0x5045, 0x505d, 0x5075, - // Entry 5900 - 593F - 0x508d, 0x50a5, 0x50bd, 0x50d5, 0x50ed, 0x5105, 0x511e, 0x5136, - 0x514e, 0x5166, 0x517e, 0x5196, 0x51ae, 0x51c7, 0x51df, 0x51f7, - 0x520f, 0x5228, 0x5240, 0x5258, 0x5270, 0x5288, 0x52a0, 0x52b8, - 0x52d0, 0x52e8, 0x5300, 0x5318, 0x5330, 0x5349, 0x5362, 0x537b, - 0x5394, 0x53ad, 0x53c6, 0x53df, 0x53f8, 0x5411, 0x5429, 0x5442, - 0x545a, 0x5472, 0x548a, 0x54a2, 0x54ba, 0x54d3, 0x54ec, 0x5504, - 0x551c, 0x5534, 0x554c, 0x5565, 0x557e, 0x5597, 0x55af, 0x55c8, - 0x55e1, 0x55f9, 0x5611, 0x5629, 0x5641, 0x5659, 0x5671, 0x5689, - // Entry 5940 - 597F - 0x56a1, 0x56ba, 0x56d3, 0x56ec, 0x5705, 0x571e, 0x5737, 0x5750, - 0x5769, 0x5782, 0x579b, 0x57b4, 0x57cd, 0x57e5, 0x57fd, 0x5815, - 0x582e, 0x5846, 0x585e, 0x5876, 0x588e, 0x58a6, 0x58bf, 0x58d7, - 0x58f0, 0x5908, 0x5921, 0x5939, 0x5952, 0x596a, 0x5982, 0x599b, - 0x59b3, 0x59cb, 0x59e3, 0x59fb, 0x5a14, 0x5a2c, 0x5a44, 0x5a5c, - 0x5a75, 0x5a8d, 0x5aa5, 0x5abd, 0x5ad6, 0x5aee, 0x5b06, 0x5b1e, - 0x5b36, 0x5b4e, 0x5b66, 0x5b7f, 0x5b97, 0x5bb0, 0x5bc8, 0x5be0, - 0x5bf8, 0x5c10, 0x5c29, 0x5c41, 0x5c59, 0x5c71, 0x5c8a, 0x5ca2, - // Entry 5980 - 59BF - 0x5cbb, 0x5cd3, 0x5ceb, 0x5d03, 0x5d1b, 0x5d33, 0x5d4b, 0x5d64, - 0x5d7c, 0x5d94, 0x5dac, 0x5dc4, 0x5ddc, 0x5df5, 0x5e0e, 0x5e26, - 0x5e3e, 0x5e57, 0x5e6f, 0x5e87, 0x5ea0, 0x5eb8, 0x5ed1, 0x5ee9, - 0x5f01, 0x5f19, 0x5f31, 0x5f49, 0x5f61, 0x5f79, 0x5f91, 0x5fa9, - 0x5fc2, 0x5fdb, 0x5ff4, 0x600d, 0x6025, 0x603e, 0x6057, 0x606f, - 0x6088, 0x60a0, 0x60b9, 0x60d1, 0x60e9, 0x6101, 0x6119, 0x6131, - 0x6149, 0x6161, 0x6179, 0x6191, 0x61a9, 0x61c2, 0x61db, 0x61f4, - 0x620d, 0x6226, 0x623f, 0x6258, 0x6271, 0x628a, 0x62a2, 0x62bb, - // Entry 59C0 - 59FF - 0x62d4, 0x62ed, 0x6306, 0x631f, 0x6338, 0x6351, 0x636a, 0x6383, - 0x639c, 0x63b5, 0x63ce, 0x63e7, 0x6400, 0x6419, 0x6433, 0x644d, - 0x6466, 0x647f, 0x6498, 0x64b1, 0x64ca, 0x64e3, 0x64fc, 0x6515, - 0x652e, 0x6547, 0x6560, 0x6579, 0x6592, 0x65ab, 0x65c4, 0x65dd, - 0x65f6, 0x660f, 0x6628, 0x6641, 0x665a, 0x6673, 0x668c, 0x66a5, - 0x66be, 0x02be, 0x02d7, 0x02f0, 0x0309, 0x0322, 0x033b, 0x0354, - 0x036d, 0x0386, 0x039f, 0x03b8, 0x03d2, 0x03eb, 0x0404, 0x041d, - 0x0436, 0x044f, 0x0468, 0x0481, 0x049a, 0x04b3, 0x04cc, 0x04e5, - // Entry 5A00 - 5A3F - 0x04fe, 0x0517, 0x0530, 0x0549, 0x0562, 0x057c, 0x0595, 0x05ae, - 0x05c7, 0x05e0, 0x05f9, 0x0612, 0x062b, 0x0644, 0x065d, 0x0676, - 0x068f, 0x06a8, 0x06c1, 0x06db, 0x06f4, 0x070d, 0x0727, 0x0740, - 0x0759, 0x0772, 0x078b, 0x07a5, 0x07be, 0x07d8, 0x07f2, 0x080b, - 0x0824, 0x083d, 0x0856, 0x086f, 0x0888, 0x08a1, 0x08ba, 0x08d3, - 0x08ec, 0x0905, 0x091e, 0x0937, 0x0950, 0x0969, 0x0982, 0x099b, - 0x09b4, 0x09cd, 0x09e6, 0x0a00, 0x0a1a, 0x0a34, 0x0a4d, 0x0a66, - 0x0a7f, 0x0a98, 0x0ab1, 0x0aca, 0x0ae3, 0x0afc, 0x0b15, 0x0b2e, - // Entry 5A40 - 5A7F - 0x0b47, 0x0b60, 0x0b79, 0x0b92, 0x0bab, 0x0bc4, 0x0bdd, 0x0bf6, - 0x0c0f, 0x0c28, 0x0c41, 0x0c5a, 0x0c73, 0x0c8c, 0x0ca5, 0x0cbe, - 0x0cd7, 0x0cf0, 0x0d09, 0x0d22, 0x0d3b, 0x0d55, 0x0d6e, 0x0d88, - 0x0da1, 0x0dba, 0x0dd4, 0x0ded, 0x0e07, 0x0e20, 0x0e3a, 0x0e53, - 0x0e6c, 0x0e86, 0x0ea0, 0x0eba, 0x0ed3, 0x0eed, 0x0f07, 0x0f20, - 0x0f39, 0x0f53, 0x0f6d, 0x0f87, 0x0fa0, 0x0fb9, 0x0fd2, 0x0fec, - 0x1006, 0x101f, 0x1038, 0x1051, 0x106a, 0x1083, 0x109d, 0x10b6, - 0x10cf, 0x10e8, 0x1101, 0x111a, 0x1133, 0x114c, 0x1165, 0x117e, - // Entry 5A80 - 5ABF - 0x1197, 0x11b1, 0x11ca, 0x11e3, 0x11fc, 0x1215, 0x122e, 0x1247, - 0x1260, 0x1279, 0x1292, 0x12ab, 0x12c5, 0x12de, 0x12f7, 0x1310, - 0x1329, 0x1342, 0x135b, 0x1374, 0x138d, 0x13a6, 0x13bf, 0x13d8, - 0x13f1, 0x140a, 0x1423, 0x143c, 0x1455, 0x146e, 0x1487, 0x14a0, - 0x14b9, 0x14d2, 0x14eb, 0x1504, 0x151d, 0x1536, 0x154f, 0x1568, - 0x1581, 0x159a, 0x15b3, 0x15cc, 0x15e5, 0x15fe, 0x1617, 0x1630, - 0x1649, 0x1662, 0x167b, 0x1694, 0x16ad, 0x16c6, 0x16df, 0x16f8, - 0x1711, 0x172a, 0x1743, 0x175c, 0x1775, 0x178e, 0x17a7, 0x17c0, - // Entry 5AC0 - 5AFF - 0x17d9, 0x17f2, 0x180b, 0x1824, 0x183d, 0x1856, 0x186f, 0x1888, - 0x18a1, 0x18ba, 0x18d3, 0x18ec, 0x1905, 0x191e, 0x1937, 0x1950, - 0x196a, 0x1984, 0x199d, 0x19b6, 0x19cf, 0x19e8, 0x1a01, 0x1a1b, - 0x1a34, 0x1a4d, 0x1a67, 0x1a80, 0x1a99, 0x1ab2, 0x1acb, 0x1ae4, - 0x1afd, 0x1b17, 0x1b30, 0x1b4a, 0x1b63, 0x1b7c, 0x1b95, 0x1bae, - 0x1bc7, 0x1be0, 0x1bf9, 0x1c12, 0x1c2b, 0x1c44, 0x1c5d, 0x1c77, - 0x1c90, 0x1ca9, 0x1cc2, 0x1cdb, 0x1cf4, 0x1d0d, 0x1d26, 0x1d3f, - 0x1d58, 0x1d71, 0x1d8a, 0x1da3, 0x1dbc, 0x1dd5, 0x1dee, 0x1e07, - // Entry 5B00 - 5B3F - 0x1e20, 0x1e39, 0x1e52, 0x1e6b, 0x1e84, 0x1e9d, 0x1eb6, 0x1ecf, - 0x1ee8, 0x1f01, 0x1f1a, 0x1f33, 0x1f4c, 0x1f65, 0x1f7e, 0x1f97, - 0x1fb0, 0x1fc9, 0x1fe2, 0x1ffb, 0x2014, 0x202d, 0x2046, 0x205f, - 0x2079, 0x2092, 0x20ab, 0x20c4, 0x20dd, 0x20f6, 0x210f, 0x2128, - 0x2141, 0x215a, 0x2173, 0x218c, 0x21a5, 0x21be, 0x21d7, 0x21f0, - 0x2209, 0x2222, 0x223b, 0x2254, 0x226d, 0x2286, 0x229f, 0x22b9, - 0x22d2, 0x22eb, 0x2304, 0x231d, 0x2336, 0x2350, 0x2369, 0x2382, - 0x239b, 0x23b4, 0x23cd, 0x23e7, 0x2400, 0x2419, 0x2432, 0x244b, - // Entry 5B40 - 5B7F - 0x2464, 0x247d, 0x2496, 0x24af, 0x24c8, 0x24e1, 0x24fb, 0x2514, - 0x252d, 0x2546, 0x255f, 0x2578, 0x2591, 0x25aa, 0x25c3, 0x25dc, - 0x25f5, 0x260e, 0x2627, 0x2640, 0x2659, 0x2672, 0x268b, 0x26a4, - 0x26bd, 0x26d6, 0x26ef, 0x2709, 0x2722, 0x273b, 0x2755, 0x276f, - 0x2789, 0x27a2, 0x27bb, 0x27d4, 0x27ed, 0x2807, 0x2821, 0x283b, - 0x2854, 0x286d, 0x2886, 0x289f, 0x28b8, 0x28d1, 0x28ea, 0x2903, - 0x291c, 0x2935, 0x294e, 0x2967, 0x2980, 0x2999, 0x29b2, 0x29cb, - 0x29e4, 0x29fd, 0x2a16, 0x2a2f, 0x2a48, 0x2a61, 0x2a7a, 0x2a94, - // Entry 5B80 - 5BBF - 0x2aad, 0x2ac6, 0x2adf, 0x2af8, 0x2b11, 0x2b2b, 0x2b44, 0x2b5d, - 0x2b76, 0x2b8f, 0x2ba9, 0x2bc2, 0x2bdb, 0x2bf4, 0x2c0e, 0x2c27, - 0x2c40, 0x2c59, 0x2c72, 0x2c8b, 0x2ca4, 0x2cbd, 0x2cd6, 0x2cef, - 0x2d08, 0x2d22, 0x2d3b, 0x2d5d, 0x2d77, 0x2d90, 0x2da9, 0x2dc2, - 0x2ddc, 0x2df5, 0x2e0e, 0x2e27, 0x2e40, 0x2e59, 0x2e72, 0x2e91, - 0x2eaa, 0x2ec3, 0x2edc, 0x2ef5, 0x2f0e, 0x2f27, 0x2f40, 0x2f59, - 0x2f72, 0x2f8b, 0x2fa4, 0x2fbd, 0x2fd6, 0x2fef, 0x3008, 0x3021, - 0x304e, 0x307a, 0x3093, 0x30ac, 0x30c5, 0x30de, 0x30f7, 0x3110, - // Entry 5BC0 - 5BFF - 0x3129, 0x3142, 0x315b, 0x3174, 0x318d, 0x31a6, 0x31bf, 0x31d8, - 0x31f1, 0x320a, 0x3223, 0x323c, 0x3255, 0x326e, 0x3287, 0x32a0, - 0x32b9, 0x32d2, 0x32eb, 0x3304, 0x331d, 0x3336, 0x334f, 0x3368, - 0x3381, 0x339a, 0x33b3, 0x33cc, 0x33e5, 0x33fe, 0x3417, 0x3430, - 0x3449, 0x3462, 0x347c, 0x3495, 0x34ae, 0x34c7, 0x34e0, 0x34f9, - 0x3512, 0x352b, 0x3545, 0x355e, 0x3577, 0x3590, 0x35a9, 0x35c2, - 0x35db, 0x35f4, 0x360d, 0x3626, 0x363f, 0x3658, 0x3671, 0x368a, - 0x36a3, 0x36bc, 0x36d5, 0x36ee, 0x3707, 0x3720, 0x3739, 0x3752, - // Entry 5C00 - 5C3F - 0x376b, 0x3784, 0x379d, 0x37b6, 0x37cf, 0x37e8, 0x3801, 0x381a, - 0x3833, 0x384c, 0x3865, 0x387e, 0x3897, 0x38b0, 0x38c9, 0x38e2, - 0x38fb, 0x3914, 0x392d, 0x3946, 0x395f, 0x3978, 0x3991, 0x39aa, - 0x39c3, 0x39dc, 0x39f5, 0x3a0e, 0x3a27, 0x3a40, 0x3a59, 0x3a72, - 0x3a8b, 0x3aa4, 0x3abd, 0x3ad6, 0x3aef, 0x3b08, 0x3b21, 0x3b3a, - 0x3b53, 0x3b6c, 0x3b85, 0x3b9e, 0x3bb7, 0x3bd0, 0x3be9, 0x3c02, - 0x3c1b, 0x001b, 0x003a, 0x0058, 0x0081, 0x00a7, 0x00c4, 0x00e3, - 0x0101, 0x011e, 0x0140, 0x016b, 0x0193, 0x01b2, 0x01d0, 0x01eb, - // Entry 5C40 - 5C7F - 0x0208, 0x0224, 0x0243, 0x025f, 0x027b, 0x029a, 0x02b5, 0x02cd, - 0x02ec, 0x0306, 0x0322, 0x0340, 0x035c, 0x0377, 0x0395, 0x03b1, - 0x03d2, 0x03f0, 0x040e, 0x042f, 0x044d, 0x0466, 0x0481, 0x04a2, - 0x04be, 0x04d7, 0x04f7, 0x0518, 0x0530, 0x054d, 0x0566, 0x057e, - 0x0598, 0x05b2, 0x05cd, 0x05eb, 0x0606, 0x061e, 0x063f, 0x0658, - 0x0674, 0x068d, 0x06a8, 0x06c1, 0x06d9, 0x06f2, 0x070a, 0x0728, - 0x0743, 0x075c, 0x077f, 0x07a3, 0x07be, 0x07da, 0x07f6, 0x0810, - 0x082a, 0x0843, 0x085e, 0x0877, 0x0892, 0x08aa, 0x08c3, 0x08de, - // Entry 5C80 - 5CBF - 0x08f7, 0x090f, 0x0927, 0x0940, 0x0958, 0x096f, 0x0987, 0x099f, - 0x09b8, 0x09d3, 0x09f4, 0x0a0d, 0x0a28, 0x0a46, 0x0a65, 0x0a7f, - 0x0a9a, 0x0ab6, 0x0ace, 0x0ae9, 0x0b0b, 0x0b2e, 0x0b4f, 0x0b6c, - 0x0b8c, 0x0ba4, 0x0bc1, 0x0bdf, 0x0bfd, 0x0c1d, 0x0c3e, 0x0c5c, - 0x0c77, 0x0c94, 0x0cb0, 0x0ccb, 0x0ce5, 0x0cfe, 0x0d1f, 0x0d3d, - 0x0d57, 0x0d73, 0x0d8c, 0x0da5, 0x0dc0, 0x0de1, 0x0dfc, 0x0e14, - 0x0e2f, 0x0e4c, 0x0e68, 0x0e84, 0x0ea4, 0x0ebd, 0x0ed7, 0x0eef, - 0x0f0a, 0x0f2a, 0x0f47, 0x0f5f, 0x0f7a, 0x0f93, 0x0faa, 0x0fc2, - // Entry 5CC0 - 5CFF - 0x0fdb, 0x0ffc, 0x1014, 0x102c, 0x1049, 0x1063, 0x1081, 0x109b, - 0x10b6, 0x10d3, 0x10ed, 0x1113, 0x1130, 0x114a, 0x1166, 0x1181, - 0x11a7, 0x11c6, 0x11df, 0x11fa, 0x1218, 0x1232, 0x124b, 0x1267, - 0x1280, 0x1299, 0x12b4, 0x12cc, 0x12e5, 0x12ff, 0x131b, 0x1335, - 0x1352, 0x136c, 0x138d, 0x13a6, 0x13c3, 0x13e2, 0x13fb, 0x1416, - 0x142e, 0x144b, 0x1467, 0x1484, 0x14a0, 0x14ba, 0x14d2, 0x14ec, - 0x1504, 0x151e, 0x1537, 0x1554, 0x156f, 0x1586, 0x15a0, 0x15b8, - 0x15d4, 0x15f3, 0x160e, 0x1626, 0x163f, 0x1659, 0x1674, 0x168b, - // Entry 5D00 - 5D3F - 0x16a3, 0x16bc, 0x16d5, 0x16ed, 0x1709, 0x1722, 0x173b, 0x175c, - 0x1775, 0x178e, 0x17ab, 0x17c3, 0x17dc, 0x17f6, 0x1811, 0x1829, - 0x1844, 0x185f, 0x187b, 0x1895, 0x18ae, 0x18ce, 0x18e8, 0x1902, - 0x191b, 0x1934, 0x194d, 0x1969, 0x1989, 0x19a2, 0x19ba, 0x19d2, - 0x19ea, 0x1a02, 0x1a1a, 0x1a33, 0x1a4b, 0x1a63, 0x1a7c, 0x1a96, - 0x1aaf, 0x1ac9, 0x1ae3, 0x1b00, 0x1b19, 0x1b33, 0x1b4d, 0x1b66, - 0x1b80, 0x1b9f, 0x1bb8, 0x1bd3, 0x1bec, 0x1c04, 0x1c1c, 0x1c38, - 0x1c51, 0x1c69, 0x1c83, 0x1c9d, 0x1cb9, 0x1cd2, 0x1ced, 0x1d05, - // Entry 5D40 - 5D7F - 0x1d21, 0x1d41, 0x1d5d, 0x1d74, 0x1d8d, 0x1da8, 0x1dc6, 0x1ddf, - 0x1dfb, 0x1e16, 0x1e2f, 0x1e48, 0x1e63, 0x1e7c, 0x1e97, 0x1eaf, - 0x1ec7, 0x1ee2, 0x1efb, 0x1f15, 0x1f2e, 0x1f49, 0x1f61, 0x1f7b, - 0x1f94, 0x1fad, 0x1fc7, 0x1fe4, 0x1fff, 0x201a, 0x2033, 0x204b, - 0x2066, 0x207f, 0x2097, 0x20b2, 0x20cc, 0x20e8, 0x2101, 0x2119, - 0x2132, 0x214b, 0x2165, 0x217e, 0x2196, 0x21b1, 0x21cc, 0x21e5, - 0x21fe, 0x2216, 0x222f, 0x2248, 0x2264, 0x227e, 0x2297, 0x22b2, - 0x22cc, 0x22e6, 0x2301, 0x2318, 0x2334, 0x234c, 0x2364, 0x237c, - // Entry 5D80 - 5DBF - 0x2394, 0x23ae, 0x23c8, 0x23de, 0x23f6, 0x240d, 0x2426, 0x2440, - 0x2459, 0x2470, 0x2488, 0x24a1, 0x24b9, 0x24d0, 0x24e9, 0x2501, - 0x251a, 0x2532, 0x254f, 0x2566, 0x257f, 0x259e, 0x25b6, 0x25ce, - 0x25e7, 0x2600, 0x261a, 0x2632, 0x264a, 0x2663, 0x267b, 0x2693, - 0x26ab, 0x26c6, 0x26df, 0x26f8, 0x2710, 0x2729, 0x2743, 0x275b, - 0x2773, 0x2790, 0x27a9, 0x27c1, 0x27da, 0x27f2, 0x280d, 0x2826, - 0x283f, 0x285a, 0x2873, 0x288d, 0x28a8, 0x28c2, 0x28db, 0x28f3, - 0x290f, 0x2928, 0x2942, 0x295f, 0x297b, 0x2993, 0x29ac, 0x29c8, - // Entry 5DC0 - 5DFF - 0x29e1, 0x2a00, 0x2a18, 0x2a30, 0x2a52, 0x2a76, 0x2a8f, 0x2aa9, - 0x2ac2, 0x2adc, 0x2af3, 0x2b0d, 0x2b27, 0x2b41, 0x2b5c, 0x2b76, - 0x2b8f, 0x2ba8, 0x2bbf, 0x2bd8, 0x2bf4, 0x2c11, 0x2c2d, 0x2c47, - 0x2c60, 0x2c79, 0x2c92, 0x2cab, 0x2cc3, 0x2cdc, 0x2cf4, 0x2d14, - 0x2d2c, 0x2d46, 0x2d60, 0x2d7a, 0x2d93, 0x2dae, 0x2dc6, 0x2de0, - 0x2dfa, 0x2e12, 0x2e2a, 0x2e46, 0x2e5f, 0x2e76, 0x2e8f, 0x2ea8, - 0x2ec1, 0x2edd, 0x2efd, 0x2f16, 0x2f2f, 0x2f48, 0x2f61, 0x2f79, - 0x2f92, 0x2fad, 0x2fc6, 0x2fde, 0x2ff7, 0x3011, 0x3029, 0x3042, - // Entry 5E00 - 5E3F - 0x305b, 0x3076, 0x3090, 0x30ae, 0x30ca, 0x30e2, 0x30fb, 0x3111, - 0x3129, 0x313f, 0x3155, 0x316d, 0x318b, 0x31a3, 0x31bb, 0x31dd, - 0x31f6, 0x320f, 0x3229, 0x3243, 0x3264, 0x3282, 0x329a, 0x32b2, - 0x32cb, 0x32e4, 0x3303, 0x331b, 0x3333, 0x334b, 0x3363, 0x337a, - 0x3391, 0x33aa, 0x33c2, 0x33dd, 0x33f5, 0x340d, 0x3426, 0x3444, - 0x345b, 0x3472, 0x348a, 0x34a1, 0x34b9, 0x34d0, 0x34e8, 0x3500, - 0x3517, 0x352f, 0x3547, 0x355f, 0x3578, 0x358f, 0x35a5, 0x35bc, - 0x35d3, 0x35eb, 0x3603, 0x361b, 0x3632, 0x364a, 0x3663, 0x367d, - // Entry 5E40 - 5E7F - 0x3695, 0x36ae, 0x36c8, 0x36de, 0x36f6, 0x370f, 0x3726, 0x373f, - 0x3758, 0x3770, 0x3789, 0x37a0, 0x37ba, 0x37d2, 0x37ea, 0x3801, - 0x381a, 0x3833, 0x384c, 0x3864, 0x387c, 0x3893, 0x38aa, 0x38c3, - 0x38db, 0x38f7, 0x3910, 0x3928, 0x3941, 0x3959, 0x3970, 0x3987, - 0x399f, 0x39b6, 0x39cf, 0x39e7, 0x39fe, 0x3a15, 0x3a2e, 0x3a46, - 0x3a5e, 0x3a78, 0x3a91, 0x0291, 0x029e, 0x02ac, 0x02b9, 0x02c7, - 0x02d4, 0x02e1, 0x02ed, 0x02fb, 0x030a, 0x0318, 0x0326, 0x0334, - 0x0344, 0x0351, 0x0360, 0x036e, 0x037b, 0x0388, 0x0394, 0x03a1, - // Entry 5E80 - 5EBF - 0x03af, 0x03be, 0x03cb, 0x03d8, 0x03e4, 0x03f1, 0x03ff, 0x040c, - 0x041a, 0x0427, 0x0435, 0x0035, 0x0043, 0x0050, 0x005d, 0x006c, - 0x007a, 0x0088, 0x0095, 0x00a4, 0x00b3, 0x00c1, 0x00c1, 0x00ca, - 0x00da, 0x00da, 0x00ef, 0x0102, 0x0115, 0x0128, 0x013c, 0x0150, - 0x0164, 0x0179, 0x018e, 0x01a1, 0x01b6, 0x01c9, 0x01dc, 0x01f0, - 0x0203, 0x0216, 0x022a, 0x023d, 0x0250, 0x0263, 0x0278, 0x028b, - 0x02a1, 0x02b3, 0x02c5, 0x02d8, 0x02ea, 0x02fd, 0x030f, 0x0321, - 0x0321, 0x033e, 0x035a, 0x0376, 0x0396, 0x03b7, 0x03ca, 0x03ca, - // Entry 5EC0 - 5EFF - 0x03e1, 0x03f8, 0x040e, 0x0424, 0x043b, 0x0452, 0x0468, 0x047e, - 0x0494, 0x04aa, 0x04c1, 0x04d8, 0x04ef, 0x0506, 0x051d, 0x0534, - 0x054b, 0x0562, 0x0578, 0x058e, 0x05a5, 0x05bc, 0x05d2, 0x05e8, - 0x05fe, 0x0614, 0x062b, 0x0642, 0x065c, 0x0678, 0x0692, 0x06ac, - 0x06c7, 0x06e1, 0x06fc, 0x0717, 0x0731, 0x074c, 0x0766, 0x0781, - 0x079d, 0x07b8, 0x07d4, 0x07f0, 0x080a, 0x0823, 0x083d, 0x0857, - 0x0870, 0x0888, 0x08a1, 0x08bb, 0x08d5, 0x08ee, 0x0908, 0x0922, - 0x0942, 0x095d, 0x0978, 0x0992, 0x09af, 0x09ca, 0x09e5, 0x0a01, - // Entry 5F00 - 5F3F - 0x0a1b, 0x0a36, 0x0a50, 0x0a68, 0x0a7e, 0x0a9c, 0x029c, 0x02b3, - 0x02c9, 0x02df, 0x02f7, 0x030e, 0x0325, 0x033b, 0x0353, 0x036b, - 0x0382, 0x0382, 0x039a, 0x03b6, 0x03d7, 0x03f3, 0x0417, 0x0437, - 0x0454, 0x0054, 0x006d, 0x0083, 0x0098, 0x00b9, 0x00d3, 0x00e9, - 0x00ff, 0x0115, 0x012b, 0x013f, 0x015c, 0x0178, 0x018d, 0x01a2, - 0x01b7, 0x01df, 0x0200, 0x021a, 0x0239, 0x0257, 0x0275, 0x0275, - 0x0292, 0x02ad, 0x02c7, 0x02e2, 0x02fe, 0x0318, 0x0333, 0x034e, - 0x0369, 0x0384, 0x039f, 0x03ba, 0x03d4, 0x03ee, 0x0408, 0x0422, - // Entry 5F40 - 5F7F - 0x043d, 0x0457, 0x0471, 0x0071, 0x007f, 0x008d, 0x009e, 0x00ad, - 0x00bb, 0x00ca, 0x00e0, 0x00ee, 0x00fc, 0x010b, 0x0119, 0x0127, - 0x0139, 0x014a, 0x0159, 0x0168, 0x0176, 0x0185, 0x0197, 0x01ad, - 0x01bc, 0x01cc, 0x01da, 0x01e9, 0x01f8, 0x0208, 0x0218, 0x0228, - 0x0239, 0x024a, 0x0258, 0x0266, 0x0277, 0x0285, 0x0294, 0x02a3, - 0x02b3, 0x02ca, 0x02d8, 0x02e6, 0x02f5, 0x0305, 0x0315, 0x0325, - 0x0334, 0x0344, 0x0354, 0x0364, 0x0377, 0x038a, 0x03a3, 0x03b2, - 0x03c1, 0x03d0, 0x03e0, 0x03ef, 0x03fe, 0x0410, 0x041e, 0x042c, - // Entry 5F80 - 5FBF - 0x043b, 0x044a, 0x045a, 0x0471, 0x0481, 0x0492, 0x04a0, 0x04ae, - 0x04bd, 0x00bd, 0x00d5, 0x00e9, 0x0103, 0x0120, 0x0131, 0x0143, - 0x0156, 0x0168, 0x017b, 0x018c, 0x019e, 0x01b0, 0x01c1, 0x01d2, - 0x01e4, 0x01f7, 0x020a, 0x021b, 0x022d, 0x0240, 0x0254, 0x0266, - 0x0278, 0x028a, 0x029c, 0x02af, 0x02c0, 0x02d2, 0x02e5, 0x02f9, - 0x030b, 0x031e, 0x0331, 0x0342, 0x0354, 0x0366, 0x0379, 0x038c, - 0x03a7, 0x03b9, 0x03d3, 0x03e5, 0x03f7, 0x0409, 0x041b, 0x042c, - 0x043e, 0x003e, 0x004d, 0x0060, 0x006f, 0x007e, 0x0090, 0x00a2, - // Entry 5FC0 - 5FFF - 0x00b4, 0x00c6, 0x00d8, 0x00ea, 0x00fc, 0x0117, 0x0132, 0x014d, - 0x0168, 0x0183, 0x019e, 0x019e, 0x01b3, 0x01b3, 0x01c7, 0x01db, - 0x01ef, 0x0203, 0x0217, 0x022b, 0x023f, 0x0253, 0x0267, 0x027b, - 0x028f, 0x02a3, 0x02b7, 0x02cb, 0x02df, 0x02f3, 0x0307, 0x031b, - 0x032f, 0x0343, 0x0357, 0x036b, 0x037f, 0x0393, 0x03a7, 0x03bb, - 0x03cf, 0x03e3, 0x03f7, 0x040b, 0x041f, 0x0433, 0x0447, 0x045b, - 0x046f, 0x0483, 0x0497, 0x04ab, 0x04bf, 0x04d3, 0x04e7, 0x04fb, - 0x050f, 0x0523, 0x0537, 0x054b, 0x055f, 0x0573, 0x0587, 0x059b, - // Entry 6000 - 603F - 0x05af, 0x05c3, 0x05d7, 0x05eb, 0x05ff, 0x0613, 0x0627, 0x063b, - 0x064f, 0x0663, 0x0677, 0x068b, 0x069f, 0x06b3, 0x06c7, 0x06db, - 0x06ef, 0x0703, 0x0717, 0x072b, 0x073f, 0x0753, 0x0767, 0x077b, - 0x078f, 0x07a3, 0x07b7, 0x07cb, 0x07df, 0x07f3, 0x0807, 0x081b, - 0x082f, 0x0843, 0x0857, 0x086b, 0x087f, 0x0893, 0x08a7, 0x08bb, - 0x08cf, 0x08e3, 0x08f7, 0x090b, 0x091f, 0x0933, 0x0947, 0x095b, - 0x096f, 0x0983, 0x0997, 0x09ab, 0x09bf, 0x09d3, 0x09e7, 0x09fb, - 0x0a0f, 0x0a23, 0x0a37, 0x0a4b, 0x0a5f, 0x0a73, 0x0a87, 0x0a9b, - // Entry 6040 - 607F - 0x0aaf, 0x0ac3, 0x0ad7, 0x0aeb, 0x0aff, 0x0b13, 0x0b27, 0x0b3b, - 0x0b4f, 0x0b63, 0x0b77, 0x0b8b, 0x0b9f, 0x0bb3, 0x0bc7, 0x0bdb, - 0x0bef, 0x0c03, 0x0c17, 0x0c2b, 0x0c3f, 0x0c53, 0x0c67, 0x0c7b, - 0x0c8f, 0x0ca3, 0x0cb7, 0x0ccb, 0x0cdf, 0x0cf3, 0x0d07, 0x0d1b, - 0x0d2f, 0x0d43, 0x0d57, 0x0d6b, 0x0d7f, 0x0d93, 0x0da7, 0x0dbb, - 0x0dcf, 0x0de3, 0x0df7, 0x0e0b, 0x0e1f, 0x0e33, 0x0e47, 0x0e5b, - 0x0e6f, 0x0e83, 0x0e97, 0x0eab, 0x0ebf, 0x0ed3, 0x0ee7, 0x0efb, - 0x0f0f, 0x0f23, 0x0f37, 0x0f4b, 0x0f5f, 0x0f73, 0x0f87, 0x0f9b, - // Entry 6080 - 60BF - 0x0faf, 0x0fc3, 0x0fd7, 0x0feb, 0x0fff, 0x1013, 0x1027, 0x103b, - 0x104f, 0x1063, 0x1077, 0x108b, 0x109f, 0x10b3, 0x10c7, 0x10db, - 0x10ef, 0x1103, 0x1117, 0x112b, 0x113f, 0x1153, 0x1167, 0x117b, - 0x118f, 0x11a3, 0x11b7, 0x11cb, 0x11df, 0x11f3, 0x1207, 0x121b, - 0x122f, 0x1243, 0x1257, 0x126b, 0x127f, 0x1293, 0x12a7, 0x12bb, - 0x12cf, 0x12e3, 0x12f7, 0x130b, 0x131f, 0x1333, 0x1347, 0x135b, - 0x136f, 0x1383, 0x1397, 0x13ab, 0x13bf, 0x13d3, 0x13e7, 0x13fb, - 0x140f, 0x1423, 0x1437, 0x144b, 0x145f, 0x1473, 0x1487, 0x149b, - // Entry 60C0 - 60FF - 0x14af, 0x14c3, 0x14d7, 0x14eb, 0x14ff, 0x1513, 0x1527, 0x153b, - 0x154f, 0x1563, 0x1577, 0x158b, 0x159f, 0x15b3, 0x15c7, 0x15db, - 0x15ef, 0x1603, 0x1617, 0x162b, 0x163f, 0x1653, 0x1667, 0x167b, - 0x168f, 0x16a3, 0x16b7, 0x16cb, 0x16df, 0x16f3, 0x1707, 0x171b, - 0x172f, 0x1743, 0x1757, 0x176b, 0x177f, 0x1793, 0x17a7, 0x17bb, - 0x17cf, 0x17e3, 0x17f7, 0x180b, 0x181f, 0x1833, 0x1847, 0x185b, - 0x186f, 0x1883, 0x1897, 0x18ab, 0x18bf, 0x18d3, 0x18e7, 0x18fb, - 0x190f, 0x1923, 0x1937, 0x194b, 0x195f, 0x1973, 0x1987, 0x199b, - // Entry 6100 - 613F - 0x19af, 0x19c3, 0x19d7, 0x19eb, 0x19ff, 0x1a13, 0x1a27, 0x1a3b, - 0x1a4f, 0x1a63, 0x1a77, 0x1a8b, 0x1a9f, 0x1ab3, 0x1ac7, 0x1adb, - 0x1aef, 0x1b03, 0x1b17, 0x1b2b, 0x1b3f, 0x1b53, 0x1b67, 0x1b7b, - 0x1b8f, 0x1ba3, 0x1bb7, 0x1bcb, 0x1bdf, 0x1bf3, 0x1c07, 0x1c1b, - 0x1c2f, 0x1c43, 0x1c57, 0x1c6b, 0x1c7f, 0x1c93, 0x1ca7, 0x1cbb, - 0x1ccf, 0x1ce3, 0x1cf7, 0x1d0b, 0x1d1f, 0x1d33, 0x1d47, 0x1d5b, - 0x1d6f, 0x1d83, 0x1d97, 0x1dab, 0x1dbf, 0x1dd3, 0x1de7, 0x1dfb, - 0x1e0f, 0x1e23, 0x1e37, 0x1e4b, 0x1e5f, 0x1e73, 0x1e87, 0x1e9b, - // Entry 6140 - 617F - 0x1eaf, 0x1ec3, 0x1ed7, 0x1eeb, 0x1eff, 0x1f13, 0x1f27, 0x1f3b, - 0x1f4f, 0x1f63, 0x1f77, 0x1f8b, 0x1f9f, 0x1fb3, 0x1fc7, 0x1fdb, - 0x1fef, 0x2003, 0x2017, 0x202b, 0x203f, 0x2053, 0x2067, 0x207b, - 0x208f, 0x20a3, 0x20b7, 0x20cb, 0x20df, 0x20f3, 0x2107, 0x211b, - 0x212f, 0x2143, 0x2157, 0x216b, 0x217f, 0x2193, 0x21a7, 0x21bb, - 0x21cf, 0x21e3, 0x21f7, 0x220b, 0x221f, 0x2233, 0x2247, 0x225b, - 0x226f, 0x2283, 0x2297, 0x22ab, 0x22bf, 0x22d3, 0x22e7, 0x22fb, - 0x230f, 0x2323, 0x2337, 0x234b, 0x235f, 0x2373, 0x2387, 0x239b, - // Entry 6180 - 61BF - 0x23af, 0x23c3, 0x23d7, 0x23eb, 0x23ff, 0x2413, 0x2427, 0x243b, - 0x244f, 0x2463, 0x2477, 0x248b, 0x249f, 0x24b3, 0x24c7, 0x24db, - 0x24ef, 0x2503, 0x2517, 0x252b, 0x253f, 0x2553, 0x2567, 0x257b, - 0x258f, 0x25a3, 0x25b7, 0x25cb, 0x25df, 0x25f3, 0x2607, 0x261b, - 0x262f, 0x2643, 0x2657, 0x266b, 0x267f, 0x2693, 0x26a7, 0x26bb, - 0x26cf, 0x26e3, 0x26f7, 0x270b, 0x271f, 0x2733, 0x2747, 0x275b, - 0x276f, 0x2783, 0x2797, 0x27ab, 0x27bf, 0x27d3, 0x27e7, 0x27fb, - 0x280f, 0x2823, 0x2837, 0x284b, 0x285f, 0x2873, 0x2887, 0x289b, - // Entry 61C0 - 61FF - 0x28af, 0x28c3, 0x28d7, 0x28eb, 0x28ff, 0x2913, 0x2927, 0x293b, - 0x294f, 0x2963, 0x2977, 0x298b, 0x299f, 0x29b3, 0x29c7, 0x29db, - 0x29ef, 0x2a03, 0x2a17, 0x2a2b, 0x2a3f, 0x2a53, 0x2a67, 0x2a7b, - 0x2a8f, 0x2aa3, 0x2ab7, 0x2acb, 0x2adf, 0x2af3, 0x2b07, 0x2b1b, - 0x2b2f, 0x2b43, 0x2b57, 0x2b6b, 0x2b7f, 0x2b93, 0x2ba7, 0x2bbb, - 0x2bcf, 0x2be3, 0x2bf7, 0x2c0b, 0x2c1f, 0x2c33, 0x2c47, 0x2c5b, - 0x2c6f, 0x2c83, 0x2c97, 0x2cab, 0x2cbf, 0x2cd3, 0x2ce7, 0x2cfb, - 0x2d0f, 0x2d23, 0x2d37, 0x2d4b, 0x2d5f, 0x2d73, 0x2d87, 0x2d9b, - // Entry 6200 - 623F - 0x2daf, 0x2dc3, 0x2dd7, 0x2deb, 0x2dff, 0x2e13, 0x2e27, 0x2e3b, - 0x2e4f, 0x2e63, 0x2e77, 0x2e8b, 0x2e9f, 0x2eb3, 0x2ec7, 0x2edb, - 0x2eef, 0x2f03, 0x2f17, 0x2f2b, 0x2f3f, 0x2f53, 0x2f67, 0x2f7b, - 0x2f8f, 0x2fa3, 0x2fb7, 0x2fcb, 0x2fdf, 0x2ff3, 0x3007, 0x301b, - 0x302f, 0x3043, 0x3057, 0x306b, 0x307f, 0x3093, 0x30a7, 0x30bb, - 0x30cf, 0x30e3, 0x30f7, 0x310b, 0x311f, 0x3133, 0x3147, 0x315b, - 0x316f, 0x3183, 0x3197, 0x31ab, 0x31bf, 0x31d3, 0x31e7, 0x31fb, - 0x320f, 0x3223, 0x3237, 0x324b, 0x325f, 0x3273, 0x3287, 0x329b, - // Entry 6240 - 627F - 0x32af, 0x32c3, 0x32d7, 0x32eb, 0x32ff, 0x3313, 0x3327, 0x333b, - 0x334f, 0x3363, 0x3377, 0x338b, 0x339f, 0x33b3, 0x33c7, 0x33db, - 0x33ef, 0x3403, 0x3417, 0x342b, 0x343f, 0x3453, 0x3467, 0x347b, - 0x348f, 0x34a3, 0x34b7, 0x34cb, 0x34df, 0x34f3, 0x3507, 0x351b, - 0x352f, 0x3543, 0x3557, 0x356b, 0x357f, 0x3593, 0x35a7, 0x35bb, - 0x35cf, 0x35e3, 0x35f7, 0x360b, 0x361f, 0x3633, 0x3647, 0x365b, - 0x366f, 0x3683, 0x3697, 0x36ab, 0x36bf, 0x36d3, 0x36e7, 0x36fb, - 0x370f, 0x3723, 0x3737, 0x374b, 0x375f, 0x3773, 0x3787, 0x379b, - // Entry 6280 - 62BF - 0x37af, 0x37c3, 0x37d7, 0x37eb, 0x37ff, 0x3813, 0x3827, 0x383b, - 0x384f, 0x3863, 0x3877, 0x388b, 0x389f, 0x38b3, 0x38c7, 0x38db, - 0x38ef, 0x3903, 0x3917, 0x392b, 0x393f, 0x3953, 0x3967, 0x397b, - 0x398f, 0x39a3, 0x39b7, 0x39cb, 0x39df, 0x39f3, 0x3a07, 0x3a1b, - 0x3a2f, 0x3a43, 0x3a57, 0x3a6b, 0x3a7f, 0x3a93, 0x3aa7, 0x3abb, - 0x3acf, 0x3ae3, 0x3af7, 0x3b0b, 0x3b1f, 0x3b33, 0x3b47, 0x3b5b, - 0x3b6f, 0x3b83, 0x3b97, 0x3bab, 0x3bbf, 0x3bd3, 0x3be7, 0x3bfb, - 0x3c0f, 0x3c23, 0x3c37, 0x3c4b, 0x3c5f, 0x3c73, 0x3c87, 0x3c9b, - // Entry 62C0 - 62FF - 0x3caf, 0x00af, 0x00c8, 0x00e2, 0x00e2, 0x00f3, 0x0104, 0x0115, - 0x0126, 0x0137, 0x0148, 0x0159, 0x016a, 0x017b, 0x018c, 0x019d, - 0x01ae, 0x01c1, 0x01d4, 0x01e7, 0x01fa, 0x020d, 0x021f, 0x0237, - 0x0249, 0x025b, 0x0272, 0x0284, 0x0296, 0x02a8, 0x02b9, 0x02ca, - 0x02db, 0x02ec, 0x02ff, 0x0312, 0x0325, 0x0338, 0x0352, 0x036c, - 0x0386, 0x03b2, 0x03cc, 0x03ec, 0x03ff, 0x0412, 0x0425, 0x0438, - 0x044d, 0x0462, 0x0477, 0x048c, 0x04a8, 0x04bb, 0x04d0, 0x04e3, - 0x04f8, 0x050b, 0x0520, 0x0533, 0x0548, 0x0559, 0x056b, 0x057e, - // Entry 6300 - 633F - 0x0591, 0x05a4, 0x05b9, 0x05ce, 0x05e1, 0x05f6, 0x0607, 0x061f, - 0x0631, 0x0642, 0x0655, 0x0666, 0x0677, 0x0689, 0x06a0, 0x06b2, - 0x06c4, 0x06dc, 0x06f6, 0x070e, 0x0724, 0x0736, 0x0747, 0x0759, - 0x076b, 0x077e, 0x0794, 0x07ae, 0x07c0, 0x07d7, 0x07ea, 0x07fc, - 0x080e, 0x0820, 0x0832, 0x0844, 0x0857, 0x086a, 0x0881, 0x0898, - 0x08af, 0x08c6, 0x08df, 0x08f8, 0x0910, 0x0928, 0x0940, 0x0959, - 0x0159, 0x017e, 0x01a2, 0x01c8, 0x01ea, 0x020c, 0x022f, 0x024d, - 0x0279, 0x0298, 0x02b4, 0x02d2, 0x02f0, 0x0314, 0x0314, 0x032d, - // Entry 6340 - 637F - 0x034c, 0x0365, 0x0383, 0x039a, 0x03b4, 0x03cc, 0x03e4, 0x0400, - 0x0000, 0x0018, 0x0036, 0x004e, 0x006b, 0x0081, 0x009a, 0x00b1, - 0x00c8, 0x00e3, 0x00fb, 0x00fb, 0x0115, 0x0133, 0x0147, 0x016d, - 0x018c, 0x01af, 0x01c9, 0x01e1, 0x01e1, 0x01ff, 0x021e, 0x0242, - 0x026c, 0x0290, 0x02bb, 0x02e0, 0x0301, 0x0323, 0x0347, 0x0369, - 0x0391, 0x03b2, 0x03dc, 0x0404, 0x0423, 0x0445, 0x0468, 0x0491, - 0x04b1, 0x04cf, 0x04f7, 0x051f, 0x053e, 0x055f, 0x057d, 0x05a3, - 0x05cc, 0x05f7, 0x0618, 0x0639, 0x0662, 0x068a, 0x06b3, 0x06dd, - // Entry 6380 - 63BF - 0x06fe, 0x071d, 0x073b, 0x0763, 0x0783, 0x07a8, 0x07c7, 0x07f0, - 0x081d, 0x0848, 0x0866, 0x0884, 0x08a0, 0x08bd, 0x08dd, 0x08ff, - 0x0925, 0x094d, 0x096f, 0x0999, 0x09c1, 0x09e2, 0x0a04, 0x0a25, - 0x0a4f, 0x0a6f, 0x0a9c, 0x0ac9, 0x0ae9, 0x0b06, 0x0b26, 0x0b4c, - 0x0b72, 0x0b97, 0x0bbc, 0x0bdd, 0x0c00, 0x0c22, 0x0c42, 0x0c63, - 0x0c8b, 0x0cb3, 0x0cd8, 0x0d02, 0x0d2a, 0x0d49, 0x0d70, 0x0da1, - 0x0dc1, 0x0de9, 0x0e09, 0x0e29, 0x0e4d, 0x0e70, 0x0e93, 0x0eb9, - 0x0ed8, 0x0efb, 0x0f1b, 0x0f43, 0x0f6b, 0x0f96, 0x0fb6, 0x0fde, - // Entry 63C0 - 63FF - 0x1003, 0x1026, 0x104a, 0x1068, 0x108d, 0x10ae, 0x10d1, 0x10f6, - 0x111f, 0x1147, 0x116e, 0x1199, 0x11c5, 0x11ec, 0x1214, 0x123b, - 0x1261, 0x128e, 0x12b4, 0x12dc, 0x1304, 0x1329, 0x1352, 0x1374, - 0x1396, 0x13b8, 0x13d9, 0x13f9, 0x141c, 0x1443, 0x146c, 0x1491, - 0x14b5, 0x14da, 0x14f7, 0x1515, 0x1534, 0x1555, 0x1575, 0x15a1, - 0x15cc, 0x15f9, 0x1629, 0x1658, 0x167f, 0x16b5, 0x16e8, 0x1709, - 0x1746, 0x1782, 0x17b7, 0x17d9, 0x17f7, 0x181a, 0x183a, 0x1862, - 0x1889, 0x18ac, 0x18d1, 0x18f4, 0x1918, 0x1940, 0x1969, 0x1997, - // Entry 6400 - 643F - 0x19ca, 0x19fa, 0x1a2f, 0x1a5d, 0x1a88, 0x1ab8, 0x1af0, 0x1b1f, - 0x1b4e, 0x1b7e, 0x1bb2, 0x1be0, 0x1c0d, 0x1c38, 0x1c65, 0x1c97, - 0x1ccf, 0x1cfb, 0x1d28, 0x1d57, 0x1d78, 0x1d9b, 0x1dd2, 0x1dfe, - 0x1e2c, 0x1e56, 0x1e82, 0x1eb5, 0x1ee1, 0x1f0d, 0x1f3e, 0x1f6e, - 0x1fa5, 0x1fde, 0x2012, 0x2047, 0x206d, 0x2091, 0x20b6, 0x20db, - 0x2111, 0x2145, 0x2170, 0x219b, 0x21c8, 0x21f9, 0x2235, 0x226a, - 0x22a2, 0x22d3, 0x230f, 0x2344, 0x237c, 0x23a2, 0x23c8, 0x23f4, - 0x2421, 0x2448, 0x2471, 0x249a, 0x24cb, 0x24fd, 0x2531, 0x2559, - // Entry 6440 - 647F - 0x2589, 0x25ba, 0x25ed, 0x2611, 0x2636, 0x2655, 0x2678, 0x269c, - 0x26bf, 0x26e2, 0x2705, 0x2728, 0x274b, 0x2776, 0x279f, 0x27ca, - 0x27f3, 0x2817, 0x283f, 0x003f, 0x005c, 0x0079, 0x0095, 0x00b9, - 0x00d6, 0x00f2, 0x0111, 0x0131, 0x014b, 0x0163, 0x0179, 0x018d, - 0x01a0, 0x01c0, 0x01e0, 0x0200, 0x0216, 0x0232, 0x024c, 0x0262, - 0x0276, 0x028c, 0x02a9, 0x02c6, 0x02e5, 0x0303, 0x0321, 0x033e, - 0x0361, 0x0385, 0x039a, 0x03bb, 0x03dd, 0x03f2, 0x0407, 0x0428, - 0x044a, 0x0464, 0x047e, 0x007e, 0x00a2, 0x00bd, 0x00d7, 0x00ed, - // Entry 6480 - 64BF - 0x0105, 0x011e, 0x0139, 0x0150, 0x0169, 0x018a, 0x01aa, 0x01c4, - 0x01db, 0x01f5, 0x0210, 0x0230, 0x0251, 0x026a, 0x0283, 0x029b, - 0x02b6, 0x02d0, 0x02ed, 0x030e, 0x032e, 0x035b, 0x0374, 0x0390, - 0x03b0, 0x03d4, 0x03f8, 0x0421, 0x044a, 0x0475, 0x04a0, 0x04cc, - 0x04f8, 0x0523, 0x054e, 0x057d, 0x05ac, 0x05ce, 0x05f0, 0x0621, - 0x0652, 0x0675, 0x0691, 0x06ae, 0x06ca, 0x06ef, 0x0714, 0x0728, - 0x0741, 0x0759, 0x0774, 0x078e, 0x07ab, 0x07cc, 0x07ec, 0x0819, - 0x0836, 0x0860, 0x0882, 0x08a4, 0x08c6, 0x08e7, 0x0908, 0x0929, - // Entry 64C0 - 64FF - 0x0952, 0x0971, 0x0990, 0x09af, 0x09ce, 0x09ed, 0x0a06, 0x0a1d, - 0x0a35, 0x0a4b, 0x0a64, 0x0a7b, 0x0a96, 0x0aaf, 0x0ace, 0x0aef, - 0x0b0e, 0x0b34, 0x0b54, 0x0b7d, 0x0ba5, 0x0bc3, 0x0bdf, 0x0bfd, - 0x0c1a, 0x0c36, 0x0c53, 0x0c71, 0x0c8e, 0x0cb4, 0x0cda, 0x0cf4, - 0x0d09, 0x0d19, 0x0d2d, 0x0d41, 0x0d55, 0x0d6d, 0x0d87, 0x0da6, - 0x0dc8, 0x0dd9, 0x0dec, 0x0e08, 0x0e21, 0x0e37, 0x0e57, 0x0e77, - 0x0e97, 0x0eb7, 0x0ed7, 0x0ef7, 0x0f17, 0x0f37, 0x0f57, 0x0f78, - 0x0f99, 0x0fb3, 0x0fcd, 0x0fe9, 0x1004, 0x1025, 0x1044, 0x1065, - // Entry 6500 - 653F - 0x108c, 0x10a5, 0x10c1, 0x10df, 0x10fa, 0x1117, 0x1136, 0x1149, - 0x1160, 0x1175, 0x1189, 0x119e, 0x11bd, 0x11dc, 0x11f1, 0x120c, - 0x122b, 0x124a, 0x1263, 0x127c, 0x129e, 0x12c2, 0x12dc, 0x12fa, - 0x1314, 0x1332, 0x1369, 0x13a2, 0x13e6, 0x141f, 0x145a, 0x14a2, - 0x14ea, 0x1532, 0x1546, 0x1565, 0x1584, 0x159b, 0x15af, 0x15c5, - 0x15da, 0x15f2, 0x1609, 0x1620, 0x1638, 0x1657, 0x1676, 0x1697, - 0x16b4, 0x16d0, 0x16f2, 0x1712, 0x1737, 0x1757, 0x1776, 0x17a2, - 0x17cc, 0x17f7, 0x1820, 0x183f, 0x003f, 0x005c, 0x0079, 0x0096, - // Entry 6540 - 657F - 0x00b3, 0x00d0, 0x00ed, 0x010a, 0x0127, 0x0144, 0x0162, 0x0180, - 0x019e, 0x01bc, 0x01da, 0x01f8, 0x0216, 0x0234, 0x0252, 0x0270, - 0x028e, 0x02ac, 0x02ca, 0x02e8, 0x0306, 0x0324, 0x0342, 0x0360, - 0x037e, 0x039c, 0x03c0, 0x03e4, 0x0408, 0x042c, 0x0450, 0x0474, - 0x0499, 0x04be, 0x04e3, 0x0508, 0x052d, 0x0552, 0x0577, 0x059c, - 0x05c1, 0x05e6, 0x060b, 0x0630, 0x0655, 0x067a, 0x069f, 0x06c4, - 0x06e9, 0x070e, 0x0733, 0x0758, 0x077d, 0x07a2, 0x07c7, 0x07ec, - 0x0811, 0x0836, 0x085b, 0x0880, 0x08a5, 0x08ca, 0x08ef, 0x090e, - // Entry 6580 - 65BF - 0x092f, 0x0950, 0x0964, 0x0164, 0x0176, 0x018f, 0x01a5, 0x01be, - 0x01d6, 0x01e6, 0x01fa, 0x0213, 0x0226, 0x023b, 0x0256, 0x026f, - 0x0283, 0x029b, 0x02b6, 0x02df, 0x02f7, 0x0311, 0x0327, 0x0340, - 0x0353, 0x0368, 0x0382, 0x0397, 0x03ae, 0x03c3, 0x03d8, 0x03f0, - 0x0402, 0x0413, 0x042b, 0x0442, 0x0456, 0x046a, 0x0484, 0x04a1, - 0x04b6, 0x04ca, 0x04e1, 0x04f6, 0x050d, 0x0523, 0x0537, 0x054d, - 0x0564, 0x057e, 0x0594, 0x05af, 0x05c7, 0x05da, 0x05f1, 0x060a, - 0x061f, 0x0633, 0x0647, 0x0668, 0x067f, 0x0694, 0x06aa, 0x06bd, - // Entry 65C0 - 65FF - 0x06d7, 0x06f1, 0x070a, 0x0724, 0x0739, 0x0753, 0x076e, 0x0781, - 0x0794, 0x07a9, 0x07bc, 0x07d3, 0x07ea, 0x07ff, 0x0817, 0x082e, - 0x0844, 0x085a, 0x0872, 0x0887, 0x089c, 0x08b5, 0x08cd, 0x08e7, - 0x0901, 0x0918, 0x092f, 0x012f, 0x014a, 0x0165, 0x0182, 0x019e, - 0x01ba, 0x01d5, 0x01f2, 0x020f, 0x022b, 0x0246, 0x0261, 0x027e, - 0x029a, 0x02b6, 0x02d1, 0x02ee, 0x030b, 0x0327, 0x0327, 0x0342, - 0x035d, 0x0378, 0x0393, 0x03ae, 0x03c9, 0x03e4, 0x03ff, 0x041a, - 0x0435, 0x0450, 0x046b, 0x0486, 0x04a1, 0x04bc, 0x04d7, 0x04f2, - // Entry 6600 - 663F - 0x050d, 0x0528, 0x0543, 0x055e, 0x0579, 0x0594, 0x05af, 0x05ca, - 0x05e5, 0x05fe, 0x0617, 0x0630, 0x0649, 0x0662, 0x067b, 0x0694, - 0x06ad, 0x06c6, 0x06df, 0x06f8, 0x0711, 0x072a, 0x0743, 0x075c, - 0x0775, 0x078e, 0x07a7, 0x07c0, 0x07d9, 0x07f2, 0x080b, 0x0824, - 0x083d, 0x0856, 0x086f, 0x088c, 0x08a9, 0x08c6, 0x08e3, 0x0900, - 0x091d, 0x093a, 0x0957, 0x0974, 0x0991, 0x09ae, 0x09cb, 0x09e8, - 0x0a05, 0x0a22, 0x0a3f, 0x0a5c, 0x0a79, 0x0a96, 0x0ab3, 0x0ad0, - 0x0aed, 0x0b0a, 0x0b27, 0x0b44, 0x0b61, 0x0b7c, 0x0b97, 0x0bb2, - // Entry 6640 - 667F - 0x0bcd, 0x0be8, 0x0c03, 0x0c1e, 0x001e, 0x0039, 0x0054, 0x006f, - 0x008a, 0x00a5, 0x00c0, 0x00db, 0x00f6, 0x0111, 0x012c, 0x0147, - 0x0162, 0x017d, 0x0198, 0x01b3, 0x01ce, 0x01e9, 0x0204, 0x0226, - 0x0248, 0x026a, 0x028c, 0x02ae, 0x02d0, 0x02f2, 0x0314, 0x0336, - 0x0358, 0x037a, 0x039c, 0x03be, 0x03e0, 0x0402, 0x0424, 0x0446, - 0x0468, 0x048a, 0x04ac, 0x04ce, 0x04f0, 0x0512, 0x0534, 0x0556, - 0x0578, 0x0598, 0x05b8, 0x05d8, 0x05f8, 0x0618, 0x0638, 0x0658, - 0x0678, 0x0698, 0x06b8, 0x06d8, 0x06f8, 0x0718, 0x0738, 0x0758, - // Entry 6680 - 66BF - 0x0778, 0x0798, 0x07b8, 0x07d8, 0x07f8, 0x0818, 0x0838, 0x0858, - 0x0878, 0x0898, 0x08b8, 0x08d5, 0x00d5, 0x00f2, 0x010f, 0x010f, - 0x012c, 0x012c, 0x0149, 0x0166, 0x0166, 0x0183, 0x01a0, 0x01bd, - 0x01da, 0x01da, 0x01f7, 0x0214, 0x0231, 0x024e, 0x026b, 0x0288, - 0x02a5, 0x02c2, 0x02dd, 0x02f8, 0x0313, 0x032e, 0x032e, 0x0349, - 0x0349, 0x0364, 0x037f, 0x039a, 0x03b5, 0x03d0, 0x03eb, 0x0406, - 0x0006, 0x0021, 0x003c, 0x0057, 0x0072, 0x008d, 0x00a8, 0x00c3, - 0x00de, 0x00f9, 0x0114, 0x012f, 0x0151, 0x0173, 0x0195, 0x01b7, - // Entry 66C0 - 66FF - 0x01d9, 0x01fb, 0x021d, 0x023f, 0x0261, 0x0283, 0x02a5, 0x02c7, - 0x02e9, 0x030b, 0x032d, 0x034f, 0x0371, 0x0393, 0x03b5, 0x03d7, - 0x03f9, 0x041b, 0x043d, 0x045f, 0x0481, 0x04a3, 0x04c3, 0x04e3, - 0x0503, 0x0523, 0x0543, 0x0563, 0x0583, 0x05a3, 0x05c3, 0x05e3, - 0x0603, 0x0623, 0x0643, 0x0663, 0x0683, 0x06a3, 0x06c3, 0x06e3, - 0x0703, 0x0723, 0x0743, 0x0763, 0x0783, 0x07a3, 0x07c3, 0x07e3, - 0x0801, 0x081f, 0x001f, 0x003d, 0x005b, 0x0079, 0x0097, 0x0097, - 0x00b5, 0x00d3, 0x00f1, 0x010f, 0x012d, 0x014b, 0x0169, 0x0187, - // Entry 6700 - 673F - 0x0187, 0x01a5, 0x01c3, 0x01e1, 0x01ff, 0x021d, 0x023b, 0x0259, - 0x0259, 0x0275, 0x0291, 0x02ad, 0x02c9, 0x02e5, 0x0301, 0x031d, - 0x0339, 0x0355, 0x0371, 0x038d, 0x03a9, 0x03c5, 0x03e1, 0x03fd, - 0x0419, 0x0435, 0x0451, 0x046d, 0x0489, 0x04a5, 0x04c1, 0x04dd, - 0x04f9, 0x0515, 0x0531, 0x0555, 0x0579, 0x0179, 0x019d, 0x01c1, - 0x01e5, 0x0209, 0x0209, 0x022d, 0x0251, 0x0275, 0x0299, 0x02bd, - 0x02bd, 0x02e1, 0x02e1, 0x0305, 0x0329, 0x034d, 0x0371, 0x0395, - 0x03b9, 0x03dd, 0x03dd, 0x03ff, 0x0421, 0x0443, 0x0465, 0x0487, - // Entry 6740 - 677F - 0x04a9, 0x04cb, 0x04ed, 0x050f, 0x0531, 0x0553, 0x0575, 0x0597, - 0x05b9, 0x05db, 0x05fd, 0x061f, 0x0641, 0x0663, 0x0685, 0x06a7, - 0x06c9, 0x06eb, 0x070d, 0x072f, 0x0751, 0x0774, 0x0797, 0x07ba, - 0x07dd, 0x0800, 0x0823, 0x0846, 0x0869, 0x088c, 0x08af, 0x08d2, - 0x08f5, 0x0918, 0x093b, 0x095e, 0x0981, 0x09a4, 0x09c7, 0x09ea, - 0x0a0d, 0x0a30, 0x0a53, 0x0a76, 0x0a99, 0x0abc, 0x0adf, 0x0b00, - 0x0b21, 0x0b42, 0x0b63, 0x0b84, 0x0ba5, 0x0bc6, 0x0be7, 0x0c08, - 0x0c29, 0x0c4a, 0x0c6b, 0x0c8c, 0x0cad, 0x0cce, 0x0cef, 0x0d10, - // Entry 6780 - 67BF - 0x0d31, 0x0d52, 0x0d73, 0x0d94, 0x0db5, 0x0dd6, 0x0df7, 0x0e18, - 0x0e39, 0x0e5a, 0x0e7b, 0x0e9c, 0x0ebd, 0x0ede, 0x0eff, 0x0f20, - 0x0f41, 0x0f62, 0x0f83, 0x0fa4, 0x0fc5, 0x0fe6, 0x1007, 0x1028, - 0x1049, 0x106a, 0x108b, 0x10ac, 0x10cd, 0x10ee, 0x110f, 0x1130, - 0x1151, 0x1172, 0x1193, 0x11b2, 0x11d1, 0x11f0, 0x120f, 0x122e, - 0x124d, 0x126c, 0x128b, 0x12aa, 0x12c9, 0x12e8, 0x1307, 0x1326, - 0x1345, 0x1364, 0x1383, 0x13a2, 0x13c1, 0x13e0, 0x13ff, 0x141e, - 0x143d, 0x145c, 0x147b, 0x149a, 0x14b9, 0x14df, 0x1505, 0x152b, - // Entry 67C0 - 67FF - 0x1551, 0x1577, 0x159d, 0x15c3, 0x15e9, 0x160f, 0x1635, 0x165b, - 0x1681, 0x16a7, 0x16cd, 0x16f3, 0x1719, 0x173f, 0x1765, 0x178b, - 0x17b1, 0x17d7, 0x17fd, 0x1823, 0x1849, 0x186f, 0x1895, 0x18b9, - 0x18dd, 0x1901, 0x1925, 0x1949, 0x196d, 0x1991, 0x19b5, 0x19d9, - 0x19fd, 0x1a21, 0x1a45, 0x1a69, 0x1a8d, 0x1ab1, 0x1ad5, 0x1af9, - 0x1b1d, 0x1b41, 0x1b65, 0x1b89, 0x1bad, 0x1bd1, 0x1bf5, 0x1c19, - 0x1c3d, 0x1c65, 0x1c8d, 0x1cb5, 0x1cdd, 0x1d05, 0x1d2d, 0x1d55, - 0x1d7d, 0x1da5, 0x1dcd, 0x1df5, 0x1e1d, 0x1e45, 0x1e6d, 0x1e95, - // Entry 6800 - 683F - 0x1ebd, 0x1ee5, 0x1f0d, 0x1f35, 0x1f5d, 0x1f85, 0x1fad, 0x1fd5, - 0x1ffd, 0x2025, 0x204d, 0x2073, 0x2099, 0x20bf, 0x20e5, 0x210b, - 0x2131, 0x2157, 0x217d, 0x21a3, 0x21c9, 0x21ef, 0x2215, 0x223b, - 0x2261, 0x2287, 0x22ad, 0x22d3, 0x22f9, 0x231f, 0x2345, 0x236b, - 0x2391, 0x23b7, 0x23dd, 0x2403, 0x2429, 0x2456, 0x2483, 0x24b0, - 0x24dd, 0x250a, 0x2537, 0x2564, 0x2591, 0x25be, 0x25eb, 0x2618, - 0x2645, 0x2672, 0x269f, 0x26cc, 0x26f9, 0x2726, 0x2753, 0x2780, - 0x27ad, 0x27da, 0x2807, 0x2834, 0x2861, 0x288e, 0x28bb, 0x28e6, - // Entry 6840 - 687F - 0x2911, 0x293c, 0x2967, 0x2992, 0x29bd, 0x29e8, 0x2a13, 0x2a3e, - 0x2a69, 0x2a94, 0x2abf, 0x2aea, 0x2b15, 0x2b40, 0x2b6b, 0x2b96, - 0x2bc1, 0x2bec, 0x2c17, 0x2c42, 0x2c6d, 0x2c98, 0x2cc3, 0x2cee, - 0x2d19, 0x2d39, 0x2d59, 0x2d79, 0x2d99, 0x2db9, 0x2dd9, 0x2df9, - 0x2e19, 0x2e39, 0x2e59, 0x2e79, 0x2e99, 0x2eb9, 0x2ed9, 0x2ef9, - 0x2f19, 0x2f39, 0x2f59, 0x2f79, 0x2f99, 0x2fb9, 0x2fd9, 0x2ff9, - 0x3019, 0x3039, 0x3059, 0x3077, 0x3095, 0x30b3, 0x30d1, 0x30ef, - 0x310d, 0x312b, 0x3149, 0x3167, 0x3185, 0x31a3, 0x31c1, 0x31df, - // Entry 6880 - 68BF - 0x31fd, 0x321b, 0x3239, 0x3257, 0x3275, 0x3293, 0x32b1, 0x32cf, - 0x32ed, 0x330b, 0x3329, 0x3347, 0x3365, 0x3388, 0x33ab, 0x03ab, - 0x03ca, 0x03e8, 0x0407, 0x0426, 0x0447, 0x0465, 0x0482, 0x04a1, - 0x04bf, 0x04de, 0x04fd, 0x0519, 0x0535, 0x0551, 0x0572, 0x058e, - 0x05ab, 0x05d1, 0x05f0, 0x060d, 0x062e, 0x064b, 0x0668, 0x0685, - 0x06a4, 0x06bb, 0x06d8, 0x06f4, 0x0711, 0x072e, 0x074d, 0x0769, - 0x0784, 0x07a1, 0x07bd, 0x07da, 0x07f7, 0x0811, 0x082b, 0x0845, - 0x0864, 0x087e, 0x0899, 0x08bc, 0x08d9, 0x08f4, 0x0913, 0x092e, - // Entry 68C0 - 68FF - 0x0949, 0x0964, 0x0981, 0x09a7, 0x09c7, 0x09e5, 0x0a03, 0x0a1f, - 0x0a3b, 0x0a56, 0x0a77, 0x0a97, 0x0ab8, 0x0ad9, 0x0afc, 0x0b1c, - 0x0b3b, 0x0b5c, 0x0b7c, 0x0b9d, 0x0bbe, 0x0bdc, 0x0bfa, 0x0c18, - 0x0c3b, 0x0c59, 0x0c78, 0x0ca0, 0x0cc1, 0x0ce0, 0x0d03, 0x0d22, - 0x0d41, 0x0d60, 0x0d81, 0x0d9a, 0x0db9, 0x0dd7, 0x0df6, 0x0e15, - 0x0e36, 0x0e54, 0x0e71, 0x0e90, 0x0eae, 0x0ecd, 0x0eec, 0x0f08, - 0x0f24, 0x0f40, 0x0f61, 0x0f7d, 0x0f9a, 0x0fbf, 0x0fde, 0x0ffb, - 0x101c, 0x1039, 0x1056, 0x1073, 0x1092, 0x10ba, 0x10dc, 0x10fc, - // Entry 6900 - 693F - 0x111c, 0x113a, 0x1158, 0x1175, 0x119b, 0x11c0, 0x11e6, 0x120c, - 0x1234, 0x1259, 0x127d, 0x12a3, 0x12c8, 0x12ee, 0x1314, 0x1337, - 0x135a, 0x137d, 0x13a5, 0x13c8, 0x13ec, 0x1419, 0x143f, 0x1463, - 0x148b, 0x14af, 0x14d3, 0x14f7, 0x151d, 0x153b, 0x155f, 0x1582, - 0x15a6, 0x15ca, 0x15f0, 0x1613, 0x1635, 0x1659, 0x167c, 0x16a0, - 0x16c4, 0x16e5, 0x1706, 0x1727, 0x174d, 0x176e, 0x1790, 0x17ba, - 0x17de, 0x1800, 0x1826, 0x1848, 0x186a, 0x188c, 0x18b0, 0x18dd, - 0x1904, 0x1929, 0x194e, 0x1971, 0x1994, 0x19b6, 0x19e0, 0x1a09, - // Entry 6940 - 697F - 0x1a33, 0x1a5d, 0x1a89, 0x1ab2, 0x1ada, 0x1b04, 0x1b2d, 0x1b57, - 0x1b81, 0x1ba8, 0x1bcf, 0x1bf6, 0x1c22, 0x1c49, 0x1c71, 0x1ca2, - 0x1ccc, 0x1cf4, 0x1d20, 0x1d48, 0x1d70, 0x1d98, 0x1dc2, 0x1de4, - 0x1e0c, 0x1e33, 0x1e5b, 0x1e83, 0x1ead, 0x1ed4, 0x1efa, 0x1f22, - 0x1f49, 0x1f71, 0x1f99, 0x1fbe, 0x1fe3, 0x2008, 0x2032, 0x2057, - 0x207d, 0x20ab, 0x20d3, 0x20f9, 0x2123, 0x2149, 0x216f, 0x2195, - 0x21bd, 0x21ee, 0x2219, 0x2242, 0x226b, 0x2292, 0x22b9, 0x22df, - 0x2310, 0x2340, 0x2371, 0x23a2, 0x23d5, 0x2405, 0x2434, 0x2465, - // Entry 6980 - 69BF - 0x2495, 0x24c6, 0x24f7, 0x2525, 0x2553, 0x2581, 0x25b4, 0x25e2, - 0x2611, 0x2649, 0x267a, 0x26a9, 0x26dc, 0x270b, 0x273a, 0x2769, - 0x279a, 0x27c3, 0x27f2, 0x2820, 0x284f, 0x287e, 0x28af, 0x28dd, - 0x290a, 0x2939, 0x2967, 0x2996, 0x29c5, 0x29f1, 0x2a1d, 0x2a49, - 0x2a7a, 0x2aa6, 0x2ad3, 0x2b08, 0x2b37, 0x2b64, 0x2b95, 0x2bc2, - 0x2bef, 0x2c1c, 0x2c4b, 0x2c83, 0x2cb5, 0x2ce5, 0x2d15, 0x2d43, - 0x2d71, 0x2d9e, 0x2dbf, 0x2dde, 0x01de, 0x01fa, 0x0215, 0x0230, - 0x024d, 0x0269, 0x0285, 0x02a0, 0x02bd, 0x02da, 0x02f6, 0x031b, - // Entry 69C0 - 69FF - 0x033f, 0x0363, 0x0389, 0x03ae, 0x03d3, 0x03f7, 0x041d, 0x0443, - 0x0468, 0x048a, 0x04ab, 0x04cc, 0x04ef, 0x0511, 0x0533, 0x0554, - 0x0577, 0x059a, 0x05bc, 0x05e3, 0x0609, 0x062f, 0x0657, 0x067e, - 0x06a5, 0x06cb, 0x06f3, 0x071b, 0x0742, 0x0763, 0x0783, 0x07a3, - 0x07c5, 0x07e6, 0x0807, 0x0827, 0x0849, 0x086b, 0x088c, 0x08a7, - 0x08c4, 0x08de, 0x08f9, 0x0915, 0x0931, 0x0951, 0x0973, 0x099f, - 0x09c9, 0x09eb, 0x0a0d, 0x0a33, 0x0a56, 0x0a78, 0x0a9c, 0x0ac3, - 0x0af5, 0x0b1e, 0x0b4a, 0x0b76, 0x0ba2, 0x0bd9, 0x0c11, 0x0c44, - // Entry 6A00 - 6A3F - 0x0c77, 0x0ca1, 0x0ccd, 0x0cf9, 0x0d25, 0x0d4d, 0x0d77, 0x0dad, - 0x0de3, 0x0e10, 0x0e4b, 0x0e82, 0x0ebe, 0x0ef5, 0x0f2f, 0x0f5e, - 0x0f8e, 0x0fbd, 0x0fec, 0x1025, 0x105c, 0x109d, 0x10d9, 0x110b, - 0x113d, 0x117b, 0x11b0, 0x11ea, 0x122b, 0x125d, 0x128f, 0x12c2, - 0x12f9, 0x132f, 0x1364, 0x1397, 0x13d0, 0x1403, 0x1432, 0x1468, - 0x14a3, 0x14d5, 0x150b, 0x152d, 0x1554, 0x157d, 0x15a9, 0x15db, - 0x1607, 0x1638, 0x1665, 0x168e, 0x16bc, 0x16ef, 0x1727, 0x1755, - 0x1788, 0x17bf, 0x17e7, 0x1814, 0x1843, 0x186c, 0x189c, 0x18d7, - // Entry 6A40 - 6A7F - 0x1910, 0x1925, 0x194f, 0x1969, 0x1989, 0x19ae, 0x19ce, 0x19f1, - 0x1a1d, 0x1a3f, 0x1a6c, 0x1a9e, 0x1ac0, 0x1ad5, 0x1af5, 0x1b13, - 0x1b36, 0x1b54, 0x1b69, 0x1b82, 0x1b96, 0x1bba, 0x1bd9, 0x1bfb, - 0x1c18, 0x1c3f, 0x1c61, 0x1c7f, 0x1c98, 0x1caf, 0x1cc4, 0x1ce4, - 0x1d02, 0x1d25, 0x1d40, 0x1d69, 0x1d7f, 0x1d9b, 0x1dc1, 0x1de2, - 0x1e06, 0x1e25, 0x1e55, 0x1e85, 0x1e9b, 0x1ec2, 0x1eeb, 0x1f13, - 0x1f3b, 0x1f58, 0x1f84, 0x1fb5, 0x1fe7, 0x2008, 0x2039, 0x2068, - 0x2098, 0x20b7, 0x20e2, 0x2103, 0x2122, 0x2142, 0x216d, 0x218e, - // Entry 6A80 - 6ABF - 0x21b8, 0x21da, 0x21fd, 0x2225, 0x224e, 0x2287, 0x22bc, 0x22de, - 0x2302, 0x2325, 0x2348, 0x2371, 0x239c, 0x23c6, 0x23e1, 0x240b, - 0x243a, 0x246b, 0x248a, 0x24c2, 0x24fb, 0x2518, 0x2541, 0x2562, - 0x2585, 0x25a6, 0x25c8, 0x25e9, 0x2614, 0x2645, 0x2665, 0x2685, - 0x26a5, 0x26cc, 0x26f5, 0x2723, 0x274e, 0x2778, 0x27a5, 0x27cb, - 0x27f3, 0x281f, 0x2847, 0x2868, 0x2885, 0x28a4, 0x28c5, 0x28f0, - 0x291a, 0x293c, 0x2965, 0x2988, 0x29b0, 0x29da, 0x2a09, 0x2a30, - 0x2a59, 0x2a86, 0x2ab2, 0x2adb, 0x2b0a, 0x2b3c, 0x2b73, 0x2ba9, - // Entry 6AC0 - 6AFF - 0x2bde, 0x2c10, 0x2c33, 0x2c59, 0x2c80, 0x2cb5, 0x2ceb, 0x2d1c, - 0x2d4d, 0x2d7d, 0x2daf, 0x2de7, 0x2e1b, 0x2e41, 0x2e6b, 0x2e9f, - 0x2ed3, 0x2f06, 0x2f2e, 0x2f4e, 0x2f73, 0x2f9a, 0x2fc2, 0x2fe4, - 0x300c, 0x3032, 0x3057, 0x3079, 0x3094, 0x30b4, 0x30dd, 0x3107, - 0x312c, 0x314f, 0x317f, 0x31ae, 0x31dd, 0x320a, 0x3236, 0x3265, - 0x3293, 0x32c8, 0x32dd, 0x32f7, 0x330f, 0x3329, 0x3342, 0x335a, - 0x3374, 0x338d, 0x33a6, 0x33c1, 0x33db, 0x33f3, 0x340d, 0x3426, - 0x343c, 0x3454, 0x346b, 0x3486, 0x34a1, 0x34c1, 0x34e1, 0x3503, - // Entry 6B00 - 6B3F - 0x3525, 0x3543, 0x3561, 0x357f, 0x359f, 0x35bf, 0x35db, 0x3600, - 0x3628, 0x3650, 0x3678, 0x36a2, 0x36d6, 0x370a, 0x373a, 0x3767, - 0x3795, 0x37c9, 0x37fe, 0x3832, 0x3868, 0x3898, 0x38c6, 0x38f6, - 0x3927, 0x3963, 0x3987, 0x39be, 0x39ee, 0x3a1f, 0x3a5b, 0x3a84, - 0x3aae, 0x3ad7, 0x3b02, 0x3b2e, 0x3b59, 0x3b87, 0x3bb1, 0x3bdc, - 0x3c06, 0x3c2e, 0x3c57, 0x3c7f, 0x3caa, 0x3cd6, 0x3d01, 0x3d2b, - 0x3d56, 0x3d80, 0x3db6, 0x3dec, 0x3e27, 0x3e5e, 0x3e95, 0x3ed1, - 0x3ef5, 0x3f23, 0x3f51, 0x3f7f, 0x3fa7, 0x3fd0, 0x3ff8, 0x4022, - // Entry 6B40 - 6B7F - 0x404d, 0x4079, 0x40a4, 0x40d1, 0x4101, 0x4132, 0x4162, 0x4194, - 0x41c7, 0x41fb, 0x422e, 0x4263, 0x4298, 0x42ce, 0x4303, 0x433a, - 0x436b, 0x439a, 0x43cb, 0x43fd, 0x443a, 0x445f, 0x4497, 0x44c8, - 0x4503, 0x4540, 0x4564, 0x4590, 0x45bd, 0x45e9, 0x460e, 0x4637, - 0x4661, 0x468a, 0x46b6, 0x46e3, 0x470f, 0x473a, 0x4766, 0x4791, - 0x47c9, 0x4801, 0x483e, 0x4875, 0x48ac, 0x48e8, 0x490d, 0x493f, - 0x4972, 0x49a4, 0x49d8, 0x4a0e, 0x4a45, 0x4a7b, 0x4ab3, 0x4af2, - 0x4b32, 0x4b5b, 0x4b85, 0x4bae, 0x4bd7, 0x4c01, 0x4c2a, 0x4c5a, - // Entry 6B80 - 6BBF - 0x4c90, 0x4cc7, 0x4cfd, 0x4d33, 0x4d6a, 0x4da0, 0x4dd2, 0x4e03, - 0x4e35, 0x4e5a, 0x4e7f, 0x4ea7, 0x4ecd, 0x4f04, 0x4f3a, 0x4f70, - 0x4fa6, 0x4fde, 0x5016, 0x5053, 0x5085, 0x50b6, 0x50e7, 0x5118, - 0x514b, 0x517e, 0x51b6, 0x51ed, 0x5225, 0x525c, 0x5297, 0x52d2, - 0x5313, 0x5354, 0x5395, 0x53d6, 0x5417, 0x5458, 0x5499, 0x54da, - 0x5514, 0x554e, 0x5584, 0x55ba, 0x55f5, 0x562e, 0x5667, 0x56a6, - 0x56e5, 0x572b, 0x5771, 0x57b0, 0x57ef, 0x582e, 0x586d, 0x58a5, - 0x58dd, 0x5911, 0x5945, 0x597e, 0x59a9, 0x59d5, 0x5a00, 0x5a2d, - // Entry 6BC0 - 6BFF - 0x5a5b, 0x5a85, 0x5aaf, 0x5ad9, 0x5b03, 0x5b2d, 0x5b53, 0x5b79, - 0x5ba4, 0x5bd4, 0x5c0a, 0x5c41, 0x5c77, 0x5cae, 0x5cf2, 0x5d37, - 0x5d7b, 0x5dbf, 0x5e04, 0x5e48, 0x5e80, 0x5eb8, 0x5ef8, 0x5f38, - 0x5f6c, 0x5fa0, 0x5fe2, 0x6024, 0x6047, 0x606a, 0x6082, 0x609a, - 0x60b3, 0x60ce, 0x60ee, 0x611a, 0x613e, 0x6159, 0x6169, 0x617d, - 0x61a9, 0x61d1, 0x61fe, 0x6227, 0x6251, 0x6271, 0x62a9, 0x62dc, - 0x6317, 0x6337, 0x635c, 0x637e, 0x63a6, 0x63ce, 0x63f4, 0x641a, - 0x6436, 0x6452, 0x646f, 0x6484, 0x649d, 0x64b4, 0x64d0, 0x64ee, - // Entry 6C00 - 6C3F - 0x6508, 0x6522, 0x653e, 0x6560, 0x6574, 0x658c, 0x65a6, 0x65c6, - 0x65ec, 0x6619, 0x664b, 0x6672, 0x66a0, 0x66d3, 0x66f7, 0x671c, - 0x6742, 0x675b, 0x6775, 0x678e, 0x67ab, 0x67ca, 0x67e6, 0x67f6, - 0x680e, 0x6826, 0x683f, 0x6857, 0x6872, 0x688c, 0x68b0, 0x68d4, - 0x68ed, 0x6906, 0x6926, 0x6946, 0x6966, 0x697d, 0x699d, 0x69b9, - 0x69d0, 0x69f0, 0x6a0c, 0x6a29, 0x6a47, 0x6a66, 0x6a81, 0x6aa5, - 0x6ac5, 0x6ae5, 0x6b0e, 0x6b33, 0x6b49, 0x6b67, 0x6b86, 0x6b9d, - 0x6bbc, 0x6bda, 0x6bfb, 0x6c1b, 0x6c3b, 0x6c54, 0x6c75, 0x6c96, - // Entry 6C40 - 6C7F - 0x6cb9, 0x6cd8, 0x6cfb, 0x6d27, 0x6d4e, 0x6d74, 0x6d9a, 0x6dc0, - 0x6dd1, 0x6deb, 0x6e06, 0x6e2a, 0x6e43, 0x6e65, 0x6e80, 0x6ea2, - 0x6ec5, 0x6ed5, 0x6ee5, 0x6efb, 0x6f19, 0x6f3b, 0x6f62, 0x6f8a, - 0x6fb1, 0x6fdd, 0x7004, 0x7029, 0x7057, 0x7073, 0x708c, 0x70a5, - 0x70be, 0x70d7, 0x70f0, 0x7109, 0x7122, 0x7134, 0x7158, 0x717d, - 0x7198, 0x71b2, 0x71cc, 0x71ea, 0x7204, 0x7225, 0x7236, 0x724b, - 0x7260, 0x7271, 0x7288, 0x0288, 0x02a3, 0x02be, 0x02d9, 0x02f4, - 0x030f, 0x030f, 0x032e, 0x034d, 0x036c, 0x038b, 0x03aa, 0x03c9, - // Entry 6C80 - 6CBF - 0x03e8, 0x0407, 0x0427, 0x0447, 0x0467, 0x0487, 0x04a7, 0x04c7, - 0x04e7, 0x00e7, 0x0106, 0x0126, 0x0146, 0x0169, 0x018a, 0x01ab, - 0x01ce, 0x01ce, 0x01f0, 0x0210, 0x0238, 0x0255, 0x0277, 0x0297, - 0x02ba, 0x02dd, 0x02fe, 0x031d, 0x033f, 0x0360, 0x0381, 0x03a3, - 0x03c2, 0x03e3, 0x0403, 0x0003, 0x0023, 0x0042, 0x0064, 0x0083, - 0x00a3, 0x00c3, 0x00e3, 0x00e3, 0x0101, 0x0126, 0x0126, 0x0144, - 0x0171, 0x0194, 0x01bf, 0x01df, 0x01df, 0x01fd, 0x021b, 0x0239, - 0x0258, 0x0276, 0x0295, 0x02b3, 0x02d2, 0x02f0, 0x030e, 0x032c, - // Entry 6CC0 - 6CFF - 0x034b, 0x0369, 0x0388, 0x03a6, 0x03c5, 0x03e4, 0x0403, 0x0422, - 0x0441, 0x0460, 0x047f, 0x049e, 0x04bd, 0x04dc, 0x04fc, 0x051c, - 0x053a, 0x0558, 0x0576, 0x0595, 0x05b3, 0x05d2, 0x05f0, 0x060d, - 0x062a, 0x0647, 0x0665, 0x0682, 0x06a0, 0x06bd, 0x06db, 0x06f9, - 0x0717, 0x0735, 0x0753, 0x0771, 0x078f, 0x07ad, 0x07cc, 0x07ea, - 0x0809, 0x0827, 0x0846, 0x0864, 0x0882, 0x08a0, 0x08bf, 0x08dd, - 0x08fc, 0x091a, 0x093d, 0x095b, 0x0979, 0x0997, 0x09b6, 0x09d5, - 0x09f3, 0x0a11, 0x0a2f, 0x0a4d, 0x0a6c, 0x0a8a, 0x0aa9, 0x0ac7, - // Entry 6D00 - 6D3F - 0x0ae5, 0x0b03, 0x0b21, 0x0b40, 0x0b5e, 0x0b7d, 0x0b9b, 0x0bbe, - 0x0bdc, 0x0bfa, 0x0c18, 0x0c37, 0x0c55, 0x0c74, 0x0c92, 0x0cb0, - 0x0cce, 0x0cec, 0x0d0b, 0x0d29, 0x0d48, 0x0d66, 0x0d85, 0x0da4, - 0x0dc3, 0x0de2, 0x0e01, 0x0e20, 0x0e3f, 0x0e5d, 0x0e7b, 0x0e99, - 0x0eb8, 0x0ed6, 0x0ef5, 0x0f13, 0x0f33, 0x0f53, 0x0f72, 0x0f91, - 0x0fb0, 0x0fcf, 0x0fee, 0x100e, 0x102e, 0x104e, 0x106e, 0x108f, - 0x10af, 0x10d0, 0x10f0, 0x1111, 0x1132, 0x1157, 0x117d, 0x11a2, - 0x11c0, 0x11de, 0x11fc, 0x121b, 0x123b, 0x125b, 0x127b, 0x129b, - // Entry 6D40 - 6D7F - 0x12bc, 0x12da, 0x12f8, 0x1316, 0x1335, 0x1353, 0x1372, 0x1390, - 0x13af, 0x13ce, 0x13ed, 0x140d, 0x142d, 0x144c, 0x146c, 0x148b, - 0x14ab, 0x14cf, 0x14f4, 0x1518, 0x1537, 0x1556, 0x1575, 0x1595, - 0x15b4, 0x15d4, 0x15f3, 0x1612, 0x1631, 0x1650, 0x1670, 0x168f, - 0x16af, 0x16ce, 0x16ec, 0x170b, 0x172a, 0x1749, 0x1769, 0x1788, - 0x17a8, 0x17c7, 0x17e6, 0x1805, 0x1825, 0x1845, 0x1863, 0x1881, - 0x189f, 0x18be, 0x18dc, 0x18fb, 0x1919, 0x1939, 0x1959, 0x1979, - 0x1999, 0x19b9, 0x01b9, 0x01d0, 0x01e7, 0x0200, 0x0218, 0x0230, - // Entry 6D80 - 6DBF - 0x0247, 0x0260, 0x0279, 0x0291, 0x02b5, 0x02d8, 0x02ff, 0x0327, - 0x0353, 0x0383, 0x03aa, 0x03aa, 0x03c3, 0x03dd, 0x03f6, 0x040f, - 0x0426, 0x0445, 0x045c, 0x0474, 0x048b, 0x04a1, 0x04b8, 0x04ce, - 0x04e4, 0x04fc, 0x0514, 0x052c, 0x0544, 0x055c, 0x0573, 0x0589, - 0x05a2, 0x05ba, 0x05d1, 0x05ea, 0x0601, 0x0619, 0x0630, 0x0648, - 0x065f, 0x0677, 0x068f, 0x06a7, 0x06bf, 0x06d7, 0x06ee, 0x0706, - 0x071d, 0x0734, 0x0749, 0x0766, 0x077b, 0x0791, 0x07a6, 0x07ba, - 0x07cf, 0x07e3, 0x07f7, 0x080d, 0x0823, 0x0839, 0x084f, 0x0865, - // Entry 6DC0 - 6DFF - 0x087a, 0x088e, 0x08a5, 0x08bb, 0x08d0, 0x08e7, 0x08fc, 0x0912, - 0x0927, 0x093d, 0x0952, 0x0968, 0x097e, 0x0994, 0x09aa, 0x09c0, - 0x09d5, 0x09eb, 0x0a00, 0x0a0b, 0x0a23, 0x0a44, 0x0a4f, 0x024f, - 0x025f, 0x026e, 0x027d, 0x028e, 0x029e, 0x02ae, 0x02bd, 0x02ce, - 0x02df, 0x02ef, 0x02ef, 0x030d, 0x0328, 0x0328, 0x0340, 0x0357, - 0x036f, 0x0386, 0x0386, 0x039d, 0x03b5, 0x03cc, 0x03e3, 0x03fa, - 0x0411, 0x0428, 0x0440, 0x0458, 0x0470, 0x0487, 0x049e, 0x04b5, - 0x04cc, 0x04e3, 0x04fc, 0x0513, 0x052b, 0x0543, 0x055b, 0x0572, - // Entry 6E00 - 6E3F - 0x0589, 0x05a2, 0x05c1, 0x05e1, 0x0600, 0x061f, 0x021f, 0x023e, - 0x025e, 0x025e, 0x027d, 0x027d, 0x029c, 0x029c, 0x02bb, 0x02da, - 0x02f9, 0x0319, 0x0339, 0x0359, 0x0378, 0x0397, 0x03b6, 0x03d5, - 0x03d5, 0x03f6, 0x0415, 0x0435, 0x0455, 0x0055, 0x0074, 0x0074, - 0x0095, 0x0095, 0x00b4, 0x00b4, 0x00d2, 0x00d2, 0x00f0, 0x00f0, - 0x010e, 0x010e, 0x012d, 0x014c, 0x016a, 0x016a, 0x0188, 0x01a6, - 0x01a6, 0x01c6, 0x01c6, 0x01e5, 0x01e5, 0x0203, 0x0203, 0x0223, - 0x0223, 0x024a, 0x024a, 0x0270, 0x0270, 0x0291, 0x02b3, 0x02b3, - // Entry 6E40 - 6E7F - 0x02d4, 0x02d4, 0x02f5, 0x0316, 0x0337, 0x0358, 0x0358, 0x037a, - 0x039c, 0x03be, 0x03df, 0x0400, 0x0421, 0x0442, 0x0042, 0x0065, - 0x0086, 0x00a8, 0x00ca, 0x00ca, 0x00eb, 0x010c, 0x012f, 0x0158, - 0x0158, 0x0181, 0x0181, 0x01a0, 0x01be, 0x01dd, 0x01fb, 0x0219, - 0x0237, 0x0256, 0x0274, 0x0292, 0x02b0, 0x02b0, 0x02ce, 0x02ed, - 0x030c, 0x032b, 0x0349, 0x0367, 0x0385, 0x03a3, 0x03c1, 0x03e1, - 0x03ff, 0x041e, 0x043d, 0x045c, 0x047a, 0x0498, 0x04b8, 0x00b8, - 0x00dd, 0x0103, 0x0128, 0x0128, 0x014d, 0x0173, 0x0198, 0x01bd, - // Entry 6E80 - 6EBF - 0x01e2, 0x01e2, 0x0207, 0x022d, 0x0253, 0x0279, 0x029e, 0x02c3, - 0x02e8, 0x030d, 0x0332, 0x0359, 0x037e, 0x03a4, 0x03ca, 0x03f0, - 0x0415, 0x043a, 0x0461, 0x0061, 0x0098, 0x00c1, 0x00c1, 0x00d7, - 0x00ee, 0x0104, 0x011b, 0x0132, 0x014b, 0x0164, 0x0182, 0x01a0, - 0x01c0, 0x01df, 0x01fe, 0x021c, 0x023c, 0x025c, 0x027b, 0x0296, - 0x02b1, 0x02ce, 0x02ea, 0x0306, 0x0321, 0x033e, 0x035b, 0x0377, - 0x0392, 0x03ad, 0x03ca, 0x03e6, 0x0402, 0x041d, 0x043a, 0x0457, - 0x0473, 0x0484, 0x0497, 0x04aa, 0x04c4, 0x04d7, 0x04ea, 0x04fd, - // Entry 6EC0 - 6EFF - 0x0510, 0x0522, 0x0533, 0x0133, 0x014e, 0x016a, 0x0186, 0x01a2, - 0x01be, 0x01da, 0x01f6, 0x0212, 0x022e, 0x024a, 0x0266, 0x0282, - 0x029e, 0x02ba, 0x02d6, 0x02f2, 0x030e, 0x032a, 0x0346, 0x0362, - 0x037e, 0x039a, 0x03b6, 0x03d2, 0x03ee, 0x040a, 0x0426, 0x0442, - 0x045e, 0x047a, 0x0496, 0x04b2, 0x04ce, 0x04ea, 0x0506, 0x0522, - 0x053e, 0x055a, 0x0576, 0x0592, 0x05ae, 0x05ca, 0x05e6, 0x0602, - 0x061e, 0x063a, 0x0656, 0x0672, 0x068e, 0x06aa, 0x06c3, 0x06dd, - 0x06f7, 0x0711, 0x072b, 0x0745, 0x075f, 0x0779, 0x0793, 0x07ad, - // Entry 6F00 - 6F3F - 0x07c7, 0x07e1, 0x07fb, 0x0815, 0x082f, 0x0849, 0x0863, 0x087d, - 0x0897, 0x08b1, 0x08cb, 0x08e5, 0x08ff, 0x0919, 0x0933, 0x094d, - 0x0967, 0x0981, 0x099b, 0x09b5, 0x09cf, 0x09e9, 0x0a03, 0x0a1d, - 0x0a37, 0x0a51, 0x0a6b, 0x0a85, 0x0a9f, 0x0ab9, 0x0ad3, 0x0aed, - 0x0b07, 0x0b21, 0x0b3b, 0x0b55, 0x0b6f, 0x0b89, 0x0ba3, 0x0bbd, - 0x03bd, 0x03ce, 0x03e8, 0x0402, 0x041e, 0x0439, 0x0454, 0x046e, - 0x048a, 0x04a6, 0x04c1, 0x04db, 0x04f6, 0x0513, 0x052f, 0x054a, - 0x014a, 0x0164, 0x017e, 0x019a, 0x01b5, 0x01d0, 0x01ea, 0x0206, - // Entry 6F40 - 6F7F - 0x0222, 0x023d, 0x0257, 0x0272, 0x028f, 0x02ab, 0x02c6, 0x02dc, - 0x02dc, 0x02f8, 0x0314, 0x0332, 0x034f, 0x036c, 0x0388, 0x03a6, - 0x03c4, 0x03e1, 0x03fd, 0x041a, 0x0439, 0x0457, 0x0474, 0x048c, - 0x008c, 0x00a5, 0x00be, 0x00d9, 0x00f3, 0x010d, 0x0126, 0x0141, - 0x015c, 0x0176, 0x018f, 0x01a9, 0x01c5, 0x01e0, 0x01fa, 0x0212, - 0x0223, 0x0237, 0x024b, 0x025f, 0x0273, 0x0287, 0x029b, 0x02af, - 0x02c3, 0x02d7, 0x02ec, 0x0301, 0x0316, 0x032b, 0x0340, 0x0355, - 0x036a, 0x037f, 0x0394, 0x03a9, 0x03be, 0x03d3, 0x03d3, 0x03e7, - // Entry 6F80 - 6FBF - 0x03f7, 0x0406, 0x0415, 0x0426, 0x0436, 0x0446, 0x0455, 0x0466, - 0x0477, 0x0487, 0x04ac, 0x04da, 0x00da, 0x00fe, 0x0122, 0x0146, - 0x016a, 0x018e, 0x01b2, 0x01d6, 0x01fa, 0x021e, 0x0242, 0x0266, - 0x028a, 0x02ae, 0x02d2, 0x02f6, 0x031a, 0x033e, 0x0362, 0x0386, - 0x03aa, 0x03ce, 0x03f2, 0x0416, 0x043a, 0x045e, 0x0482, 0x04b1, - 0x04d6, 0x04fb, 0x0505, 0x050f, 0x010f, 0x012d, 0x014b, 0x0169, - 0x0187, 0x01a5, 0x01c3, 0x01e1, 0x01ff, 0x021d, 0x023b, 0x0259, - 0x0277, 0x0295, 0x02b3, 0x02d1, 0x02ef, 0x030d, 0x032b, 0x0349, - // Entry 6FC0 - 6FFF - 0x0367, 0x0385, 0x03a3, 0x03c1, 0x03df, 0x03fd, 0x041b, 0x0425, - 0x042f, 0x0439, 0x0443, 0x044e, 0x0458, 0x047f, 0x04a6, 0x04cd, - 0x04f4, 0x051b, 0x0542, 0x0569, 0x0590, 0x05b7, 0x05de, 0x0605, - 0x062c, 0x0653, 0x067a, 0x06a1, 0x06c8, 0x06ef, 0x0716, 0x073d, - 0x0764, 0x078b, 0x07b2, 0x07d9, 0x0800, 0x0827, 0x084e, 0x085c, - 0x086a, 0x006a, 0x0091, 0x00b8, 0x00df, 0x0106, 0x012d, 0x0154, - 0x017b, 0x01a2, 0x01c9, 0x01f0, 0x0217, 0x023e, 0x0265, 0x028c, - 0x02b3, 0x02da, 0x0301, 0x0328, 0x034f, 0x0376, 0x039d, 0x03c4, - // Entry 7000 - 703F - 0x03eb, 0x0412, 0x0439, 0x0460, 0x048f, 0x04a2, 0x04b5, 0x04c8, - 0x04db, 0x04ee, 0x04f7, 0x0501, 0x050d, 0x0519, 0x0523, 0x052e, - 0x0538, 0x0542, 0x054d, 0x056d, 0x0577, 0x0586, 0x059b, 0x05a8, - 0x05b6, 0x05c5, 0x05db, 0x05f2, 0x060e, 0x061d, 0x0639, 0x0655, - 0x065f, 0x066a, 0x0678, 0x0688, 0x0693, 0x069e, 0x06a9, 0x02a9, - 0x02cb, 0x02ed, 0x030f, 0x0331, 0x0353, 0x0375, 0x0397, 0x03b9, - 0x03db, 0x03fd, 0x041f, 0x0441, 0x0463, 0x0485, 0x04a7, 0x04c9, - 0x04eb, 0x050d, 0x052f, 0x0551, 0x0573, 0x0595, 0x05b7, 0x05d9, - // Entry 7040 - 707F - 0x05fb, 0x061d, 0x0631, 0x0646, 0x0659, 0x0259, 0x027b, 0x029d, - 0x02bf, 0x02d2, 0x02f4, 0x0316, 0x0338, 0x035a, 0x037c, 0x039e, - 0x03c0, 0x03e2, 0x0404, 0x0426, 0x0448, 0x046a, 0x048c, 0x04ae, - 0x04d0, 0x04f2, 0x0514, 0x0536, 0x0558, 0x057a, 0x059c, 0x05be, - 0x05e0, 0x0602, 0x0624, 0x0646, 0x0668, 0x068a, 0x06ac, 0x06ce, - 0x06f0, 0x0712, 0x0734, 0x0756, 0x0778, 0x079a, 0x07bc, 0x07de, - 0x0800, 0x0822, 0x0022, 0x0055, 0x0088, 0x00bb, 0x00ee, 0x0121, - 0x0154, 0x0187, 0x01ba, 0x01ed, 0x01ed, 0x0208, 0x0220, 0x0220, - // Entry 7080 - 70BF - 0x0227, 0x022c, 0x023b, 0x024b, 0x0261, 0x0268, 0x0279, 0x028e, - 0x0295, 0x02a4, 0x02ae, 0x02b5, 0x02be, 0x02d7, 0x02eb, 0x0305, - 0x0319, 0x0328, 0x0343, 0x035c, 0x0376, 0x0386, 0x03a0, 0x03b8, - 0x03d3, 0x03e0, 0x03f2, 0x040e, 0x0429, 0x043c, 0x0449, 0x0455, - 0x0462, 0x046d, 0x047a, 0x0483, 0x049d, 0x04b3, 0x04d3, 0x04e2, - 0x04f1, 0x0505, 0x0517, 0x051a, 0x052b, 0x0532, 0x0536, 0x053d, - 0x0545, 0x054d, 0x055b, 0x0569, 0x0572, 0x0578, 0x0582, 0x0587, - 0x0595, 0x0599, 0x05a1, 0x05aa, 0x05b1, 0x05bd, 0x05c8, 0x05cc, - // Entry 70C0 - 70FF - 0x05dc, 0x05e6, 0x05f1, 0x0608, 0x0610, 0x0616, 0x061f, 0x0625, - 0x062a, 0x0634, 0x063d, 0x0642, 0x0648, 0x0651, 0x065a, 0x0665, - 0x0669, 0x066e, 0x0676, 0x0680, 0x0689, 0x0697, 0x06a3, 0x06ae, - 0x06ba, 0x06c3, 0x06ce, 0x06dc, 0x06e9, 0x06f2, 0x06f7, 0x0703, - 0x0717, 0x071c, 0x0720, 0x0725, 0x0731, 0x074c, 0x075a, 0x0764, - 0x076d, 0x0775, 0x077b, 0x0788, 0x078d, 0x0795, 0x079c, 0x07a5, - 0x07ae, 0x07b7, 0x07c2, 0x07c9, 0x07d7, 0x07ec, 0x07ff, 0x0809, - 0x0817, 0x0825, 0x082d, 0x083f, 0x084a, 0x0863, 0x087b, 0x0882, - // Entry 7100 - 713F - 0x0888, 0x0897, 0x08a4, 0x08b2, 0x08c0, 0x08d0, 0x08d9, 0x08ea, - 0x08f1, 0x08fd, 0x090a, 0x0917, 0x0924, 0x0933, 0x0941, 0x094e, - 0x0958, 0x096d, 0x097b, 0x0989, 0x09a3, 0x09b5, 0x09c3, 0x09d2, - 0x09ed, 0x09fe, 0x0a0a, 0x0a17, 0x0a35, 0x0a54, 0x0a5f, 0x0a70, - 0x0a7e, 0x0a8a, 0x0a98, 0x0aad, 0x0ab7, 0x0ac3, 0x0ac9, 0x0ad2, - 0x0ae0, 0x0ae7, 0x0af2, 0x0af8, 0x0b05, 0x0b14, 0x0b1e, 0x0b28, - 0x0b34, 0x0b3d, 0x0b45, 0x0b4c, 0x0b60, 0x0b6c, 0x0b82, 0x0b8b, - 0x0b91, 0x0ba1, 0x0ba8, 0x0bae, 0x0bbb, 0x0bd2, 0x0be9, 0x0bf9, - // Entry 7140 - 717F - 0x0c0c, 0x0c1a, 0x0c25, 0x0c2b, 0x0c31, 0x0c3d, 0x0c43, 0x0c4f, - 0x0c60, 0x0c6e, 0x0c75, 0x0c82, 0x0c88, 0x0c99, 0x0ca3, 0x0cb7, - 0x0cc1, 0x0cdc, 0x0cf5, 0x0d11, 0x0d25, 0x0d2c, 0x0d3f, 0x0d54, - 0x0d63, 0x0d6c, 0x0d83, 0x0d95, 0x0d9b, 0x0da8, 0x0db5, 0x0dbc, - 0x0dca, 0x0ddb, 0x0dea, 0x0dfe, 0x0e12, 0x0e1a, 0x0e1e, 0x0e36, - 0x0e3b, 0x0e45, 0x0e56, 0x0e5c, 0x0e6c, 0x0e73, 0x0e82, 0x0e91, - 0x0ea0, 0x0ead, 0x0eba, 0x0ecb, 0x0edc, 0x0ee3, 0x0ef0, 0x0ef5, - 0x0f16, 0x0f23, 0x0f2a, 0x0f4d, 0x0f6e, 0x0f8f, 0x0fb0, 0x0fd1, - // Entry 7180 - 71BF - 0x0fd4, 0x0fd9, 0x0fdb, 0x0fe8, 0x0feb, 0x0ff0, 0x0ff7, 0x0ffd, - 0x1000, 0x1006, 0x100f, 0x1014, 0x1019, 0x101e, 0x1023, 0x1026, - 0x102a, 0x102f, 0x1035, 0x103c, 0x1043, 0x1046, 0x1049, 0x104d, - 0x1055, 0x105c, 0x1068, 0x106b, 0x106e, 0x1076, 0x1081, 0x1085, - 0x1092, 0x109a, 0x10a0, 0x10ae, 0x10b8, 0x10cf, 0x10d3, 0x10da, - 0x10df, 0x10e5, 0x10f4, 0x1102, 0x1109, 0x1113, 0x111b, 0x1125, - 0x1130, 0x1138, 0x1143, 0x1151, 0x115b, 0x1166, 0x116e, 0x1176, - 0x117f, 0x118b, 0x1194, 0x119d, 0x11a7, 0x11af, 0x11b9, 0x11c1, - // Entry 71C0 - 71FF - 0x11c5, 0x11c8, 0x11cb, 0x11cf, 0x11d4, 0x11da, 0x11fa, 0x121c, - 0x123e, 0x1261, 0x1271, 0x1281, 0x128d, 0x129b, 0x12ab, 0x12be, - 0x12cd, 0x12d2, 0x12dc, 0x12e6, 0x12ed, 0x12f4, 0x12f9, 0x12fe, - 0x1304, 0x130a, 0x1318, 0x131d, 0x1324, 0x1329, 0x1332, 0x133f, - 0x134f, 0x135c, 0x1368, 0x1372, 0x1384, 0x1397, 0x139a, 0x139e, - 0x13a1, 0x13a6, 0x13ac, 0x13c7, 0x13dc, 0x13f3, 0x1401, 0x1416, - 0x1425, 0x143b, 0x144e, 0x145d, 0x1466, 0x1471, 0x1475, 0x1488, - 0x1490, 0x149d, 0x14ac, 0x14b1, 0x14bb, 0x14d1, 0x14de, 0x14e1, - // Entry 7200 - 723F - 0x14e6, 0x14fd, 0x1506, 0x150c, 0x1514, 0x151f, 0x152b, 0x1532, - 0x153d, 0x1544, 0x1548, 0x1551, 0x155c, 0x1560, 0x1569, 0x156d, - 0x1574, 0x1585, 0x158c, 0x1599, 0x15a5, 0x15af, 0x15be, 0x15cb, - 0x15db, 0x15e5, 0x15f0, 0x15fc, 0x1608, 0x1619, 0x1629, 0x1639, - 0x1658, 0x166b, 0x1677, 0x167b, 0x168a, 0x169a, 0x16b0, 0x16b7, - 0x16c2, 0x16cd, 0x16da, 0x16e6, 0x16f4, 0x1703, 0x170f, 0x1724, - 0x172d, 0x173e, 0x174f, 0x175a, 0x1770, 0x1789, 0x17a0, 0x17b8, - 0x17c8, 0x17ed, 0x17f1, 0x1802, 0x180b, 0x1813, 0x181e, 0x182a, - // Entry 7240 - 727F - 0x182d, 0x1838, 0x1848, 0x1856, 0x1864, 0x186c, 0x187d, 0x1887, - 0x189f, 0x18b9, 0x18c2, 0x18cb, 0x18d2, 0x18df, 0x18e8, 0x18f6, - 0x1906, 0x1913, 0x1919, 0x1921, 0x193f, 0x194a, 0x1953, 0x195d, - 0x1966, 0x1971, 0x1976, 0x1980, 0x1986, 0x198a, 0x199c, 0x19a1, - 0x19ac, 0x19bd, 0x19d7, 0x19e9, 0x19f4, 0x19fe, 0x1a05, 0x1a12, - 0x1a23, 0x1a46, 0x1a66, 0x1a85, 0x1aa2, 0x1ac0, 0x1ac7, 0x1ad2, - 0x1adb, 0x1ae7, 0x1b11, 0x1b1f, 0x1b2f, 0x1b3f, 0x1b50, 0x1b56, - 0x1b67, 0x1b73, 0x1b7d, 0x1b82, 0x1b8f, 0x1b9d, 0x1bac, 0x1bb8, - // Entry 7280 - 72BF - 0x1bd1, 0x1c06, 0x1c54, 0x1c86, 0x1cbc, 0x1cd1, 0x1ce7, 0x1d07, - 0x1d0e, 0x1d29, 0x1d47, 0x1d4e, 0x1d5b, 0x1d79, 0x1d98, 0x1da9, - 0x1dbd, 0x1dc0, 0x1dc4, 0x1dcd, 0x1dd1, 0x1dee, 0x1df6, 0x1e01, - 0x1e0d, 0x1e2c, 0x1e4a, 0x1e7e, 0x1e9e, 0x1eba, 0x1ed6, 0x1ee0, - 0x1f06, 0x1f2a, 0x1f42, 0x1f5a, 0x1f78, 0x1f7c, 0x1f8a, 0x1f90, - 0x1f96, 0x1fa2, 0x1fa7, 0x1fad, 0x1fb7, 0x1fc0, 0x1fcc, 0x1fec, - 0x2008, 0x2016, 0x2029, 0x203c, 0x204c, 0x205d, 0x2071, 0x2083, - 0x2097, 0x20a9, 0x20c1, 0x20db, 0x20f9, 0x2119, 0x213a, 0x215b, - // Entry 72C0 - 72FF - 0x216f, 0x2192, 0x219e, 0x21c5, 0x21ed, 0x2205, 0x2216, 0x2227, - 0x2233, 0x223c, 0x2249, 0x224e, 0x2254, 0x225d, 0x2277, 0x2286, - 0x229b, 0x22b0, 0x22c7, 0x22dd, 0x22f3, 0x2308, 0x231f, 0x2336, - 0x234c, 0x2361, 0x2379, 0x2391, 0x23a6, 0x23bb, 0x23d2, 0x23e8, - 0x23fe, 0x2413, 0x242a, 0x2441, 0x2457, 0x246c, 0x2484, 0x249c, - 0x24a9, 0x24ca, 0x24ee, 0x24f6, 0x250f, 0x251b, 0x251f, 0x2525, - 0x2536, 0x2550, 0x2559, 0x255d, 0x257c, 0x2589, 0x2598, 0x259e, - 0x25a8, 0x25b0, 0x25bb, 0x25d7, 0x25f3, 0x2610, 0x2629, 0x2642, - // Entry 7300 - 733F - 0x265b, 0x2671, 0x2681, 0x2691, 0x26a8, 0x26b7, 0x26d0, 0x26e1, - 0x26ee, 0x26ff, 0x2717, 0x272e, 0x2743, 0x2754, 0x2765, 0x2778, - 0x2798, 0x27c1, 0x27d8, 0x27f1, 0x2806, 0x282f, 0x2864, 0x2887, - 0x28a9, 0x28cc, 0x28ee, 0x2911, 0x2933, 0x2956, 0x2976, 0x2998, - 0x29b8, 0x29da, 0x29fa, 0x2a1c, 0x2a27, 0x2a37, 0x2a49, 0x2a62, - 0x2a69, 0x2a7a, 0x2a96, 0x2ab2, 0x2ac8, 0x2ad6, 0x2ae4, 0x2af4, - 0x2b04, 0x2b16, 0x2b1f, 0x2b34, 0x2b3d, 0x2b43, 0x2b4f, 0x2b57, - 0x2b68, 0x2b7a, 0x2b98, 0x2bad, 0x2bbf, 0x2bcf, 0x2bde, 0x2bea, - // Entry 7340 - 737F - 0x2bf0, 0x2bfb, 0x2c0e, 0x2c1b, 0x2c27, 0x2c31, 0x2c40, 0x2c4e, - 0x2c52, 0x2c5b, 0x2c63, 0x2c71, 0x2c7b, 0x2c86, 0x2c8e, 0x2c92, - 0x2c97, 0x2ca2, 0x2cb1, 0x2cc4, 0x2cd2, 0x2cda, 0x2ce2, 0x2ce9, - 0x2d13, 0x2d21, 0x2d3a, 0x2d53, 0x2d5e, 0x2d65, 0x2d78, 0x2d8e, - 0x2d99, 0x2da5, 0x2da9, 0x2dc4, 0x2dd4, 0x2de4, 0x2df3, 0x2e03, - 0x2e15, 0x2e28, 0x2e3a, 0x2e4e, 0x2e61, 0x2e75, 0x2e86, 0x2e98, - 0x2ea3, 0x2eb8, 0x2ec6, 0x2edc, 0x2eeb, 0x2f03, 0x2f17, 0x2f34, - 0x2f44, 0x2f5e, 0x2f67, 0x2f71, 0x2f7c, 0x2f8d, 0x2fa0, 0x2fa5, - // Entry 7380 - 73BF - 0x2fb2, 0x2fd1, 0x2fe7, 0x3003, 0x3030, 0x305b, 0x308f, 0x30a5, - 0x30bc, 0x30c8, 0x30e6, 0x3103, 0x3110, 0x3133, 0x314f, 0x315c, - 0x3168, 0x317b, 0x3188, 0x319c, 0x31a8, 0x31b5, 0x31c4, 0x31d0, - 0x31e4, 0x3202, 0x321f, 0x3239, 0x3263, 0x3295, 0x32a6, 0x32b2, - 0x32bc, 0x32c8, 0x32d3, 0x32e3, 0x32fc, 0x331a, 0x3337, 0x3345, - 0x3351, 0x335b, 0x3366, 0x3370, 0x337e, 0x3390, 0x33a4, 0x33af, - 0x33d2, 0x33e8, 0x33f7, 0x3403, 0x3410, 0x341a, 0x342c, 0x3442, - 0x3465, 0x347f, 0x349f, 0x34c6, 0x34dd, 0x34fe, 0x350e, 0x351d, - // Entry 73C0 - 73FF - 0x352b, 0x3541, 0x3556, 0x3566, 0x357c, 0x3595, 0x35a9, 0x35bd, - 0x35cf, 0x35e2, 0x35f6, 0x3613, 0x363b, 0x364a, 0x3662, 0x367a, - 0x3692, 0x36aa, 0x36c2, 0x36da, 0x36f9, 0x3718, 0x3737, 0x3756, - 0x3773, 0x3790, 0x37ad, 0x37ca, 0x37ed, 0x3810, 0x3833, 0x3856, - 0x386d, 0x3884, 0x389b, 0x38b2, 0x38cf, 0x38ec, 0x3909, 0x3926, - 0x3942, 0x396e, 0x3989, 0x39b4, 0x39c4, 0x39d2, 0x39e3, 0x39f3, - 0x3a0e, 0x3a2f, 0x3a48, 0x3a67, 0x3a7f, 0x3a97, 0x3ad3, 0x3b08, - 0x3b41, 0x3b5b, 0x3b7a, 0x3b9f, 0x3bb1, 0x3bcb, 0x3bd8, 0x3bed, - // Entry 7400 - 743F - 0x3bf3, 0x3bfd, 0x3c0d, 0x3c18, 0x3c28, 0x3c49, 0x3c4e, 0x3c53, - 0x3c5d, 0x3c64, 0x3c68, 0x3c70, 0x3c73, 0x3c7f, 0x3c89, 0x3c91, - 0x3c98, 0x3ca1, 0x3cac, 0x3cb6, 0x3cc9, 0x3ccd, 0x3cda, 0x3ce4, - 0x3cf7, 0x3d0b, 0x3d19, 0x3d2a, 0x3d31, 0x3d39, 0x3d49, 0x3d5b, - 0x3d6c, 0x3d7a, 0x3d7e, 0x3d85, 0x3d8e, 0x3da6, 0x3dbc, 0x3dcd, - 0x3de8, 0x3dff, 0x3e03, 0x3e10, 0x3e1e, 0x3e2f, 0x3e4d, 0x3e61, - 0x3e75, 0x3e8d, 0x3e94, 0x3e9f, 0x3ea8, 0x3eba, 0x3ec4, 0x3ed2, - 0x3ee3, 0x3eee, 0x3efb, 0x3f03, 0x3f0e, 0x3f14, 0x3f20, 0x3f26, - // Entry 7440 - 747F - 0x3f2a, 0x3f31, 0x3f41, 0x3f48, 0x3f55, 0x3f61, 0x3f7e, 0x3f8d, - 0x3fa7, 0x3fb2, 0x3fbe, 0x3fcc, 0x3fe2, 0x3fef, 0x3ffb, 0x3ffe, - 0x400e, 0x401c, 0x402c, 0x002c, 0x003d, 0x0043, 0x004b, 0x0053, - 0x0060, 0x006a, 0x0087, 0x009b, 0x00b5, 0x00c3, 0x00de, 0x00f0, - 0x0101, 0x0101, 0x010a, 0x011e, 0x012f, 0x013d, 0x0144, 0x0151, - 0x0156, 0x0156, 0x0178, 0x0191, 0x01ab, 0x01c6, 0x01e1, 0x0201, - 0x0221, 0x0243, 0x0263, 0x0285, 0x02a2, 0x02c1, 0x02e0, 0x02fc, - 0x0325, 0x0347, 0x036e, 0x0397, 0x03c0, 0x03de, 0x03f8, 0x0413, - // Entry 7480 - 74BF - 0x0430, 0x044f, 0x046e, 0x048f, 0x04a9, 0x04c5, 0x04e3, 0x0503, - 0x0527, 0x054c, 0x056c, 0x0591, 0x05ba, 0x05e0, 0x0608, 0x0630, - 0x0660, 0x0691, 0x06b0, 0x06cd, 0x06eb, 0x070d, 0x0738, 0x075e, - 0x0791, 0x07ba, 0x07e3, 0x080e, 0x082b, 0x084a, 0x0869, 0x0888, - 0x08a4, 0x08c2, 0x08e1, 0x0903, 0x0920, 0x093d, 0x095c, 0x097d, - 0x099e, 0x09ba, 0x09d8, 0x09f8, 0x0a13, 0x0a30, 0x0a4d, 0x0a67, - 0x0a80, 0x0a9c, 0x0aba, 0x0ad3, 0x0aec, 0x0b08, 0x0b22, 0x0b3d, - 0x0b60, 0x0b85, 0x0ba3, 0x0bc0, 0x0be5, 0x0c04, 0x0c1e, 0x0c39, - // Entry 74C0 - 74FF - 0x0c59, 0x0c74, 0x0c93, 0x0cae, 0x0cd2, 0x0cef, 0x0d1a, 0x0d47, - 0x0d68, 0x0d89, 0x0da6, 0x0dc4, 0x0de4, 0x0e00, 0x0e22, 0x0e40, - 0x0e60, 0x0e80, 0x0ea0, 0x0ec0, 0x0edd, 0x0eff, 0x0f24, 0x0f40, - 0x0f5a, 0x0f75, 0x0f94, 0x0faf, 0x0fce, 0x0fee, 0x03ee, 0x041a, - 0x0444, 0x0471, 0x049d, 0x04b8, 0x04d0, 0x04e1, 0x04f3, 0x050a, - 0x0526, 0x0550, 0x055c, 0x056d, 0x0588, 0x059a, 0x05ad, 0x05be, - 0x05d0, 0x05e7, 0x0603, 0x0632, 0x065d, 0x066a, 0x067c, 0x0694, - 0x06ae, 0x06df, 0x070c, 0x071a, 0x072c, 0x0744, 0x075e, 0x078a, - // Entry 7500 - 753F - 0x079a, 0x07ab, 0x07bd, 0x07cd, 0x07e2, 0x07f8, 0x0813, 0x081f, - 0x082c, 0x083a, 0x0846, 0x0853, 0x0865, 0x087c, 0x0896, 0x08b1, - 0x08ca, 0x08e4, 0x0903, 0x0927, 0x0940, 0x095a, 0x0972, 0x098b, - 0x09a9, 0x09cc, 0x09e7, 0x0a03, 0x0a1d, 0x0a38, 0x0a58, 0x0a76, - 0x0a95, 0x0aad, 0x0acf, 0x0aec, 0x0b0a, 0x0b21, 0x0b42, 0x0b6a, - 0x0b87, 0x0ba4, 0x0bc1, 0x0bdd, 0x0bf6, 0x0c15, 0x0c33, 0x0c56, - 0x0c77, 0x0c96, 0x0cb5, 0x0cd7, 0x00d7, 0x0104, 0x012f, 0x015d, - 0x018a, 0x01b8, 0x01e4, 0x0213, 0x0241, 0x026e, 0x0299, 0x02c7, - // Entry 7540 - 757F - 0x02f4, 0x02f4, 0x0324, 0x0352, 0x0383, 0x03b3, 0x03dd, 0x0405, - 0x0430, 0x045a, 0x048a, 0x04b8, 0x04e9, 0x0519, 0x054f, 0x0583, - 0x05ba, 0x05f0, 0x0621, 0x0650, 0x0682, 0x06b3, 0x06e4, 0x0713, - 0x0745, 0x0776, 0x07a5, 0x07d2, 0x0802, 0x0831, 0x0861, 0x088f, - 0x08c0, 0x08f0, 0x0925, 0x0958, 0x098e, 0x09c3, 0x09de, 0x09f7, - 0x0a13, 0x0a2e, 0x0a45, 0x0a5a, 0x0a72, 0x0a89, 0x0aa3, 0x0abb, - 0x0ad6, 0x0af0, 0x0b10, 0x0b2e, 0x0b4f, 0x0b6f, 0x0b84, 0x0b97, - 0x0bad, 0x0bc2, 0x03c2, 0x03dc, 0x03f4, 0x040f, 0x0429, 0x0444, - // Entry 7580 - 75BF - 0x045f, 0x047a, 0x0495, 0x04b0, 0x04c8, 0x00c8, 0x00ee, 0x0112, - 0x0139, 0x015f, 0x0186, 0x01ad, 0x01d4, 0x01fb, 0x021b, 0x0239, - 0x025a, 0x027a, 0x029b, 0x02bc, 0x02dd, 0x02fe, 0x0325, 0x034a, - 0x0372, 0x0399, 0x03c1, 0x03e9, 0x0411, 0x0439, 0x045f, 0x0483, - 0x04aa, 0x04d0, 0x04f7, 0x051e, 0x0545, 0x056c, 0x0597, 0x05c0, - 0x05ec, 0x0617, 0x0643, 0x066f, 0x069b, 0x06c7, 0x02c7, 0x02e3, - 0x02fd, 0x031a, 0x0336, 0x0365, 0x0392, 0x03c2, 0x03f1, 0x0412, - 0x0431, 0x0453, 0x0474, 0x048f, 0x04b1, 0x04d1, 0x04f2, 0x0515, - // Entry 75C0 - 75FF - 0x0539, 0x0559, 0x057a, 0x059b, 0x05be, 0x05e0, 0x0602, 0x062c, - 0x0657, 0x0682, 0x06ae, 0x06c9, 0x06eb, 0x02eb, 0x02fc, 0x030c, - 0x0321, 0x032a, 0x0337, 0x034d, 0x0357, 0x0363, 0x0374, 0x0380, - 0x0393, 0x03a3, 0x03b4, 0x03bd, 0x03e7, 0x03e7, 0x03fb, 0x0405, - 0x0413, 0x0430, 0x043d, 0x0447, 0x0450, 0x045d, 0x005d, 0x006b, - 0x006b, 0x0071, 0x0077, 0x0084, 0x0094, 0x0099, 0x00af, 0x00b7, - 0x00bd, 0x00ce, 0x00d7, 0x00e1, 0x00e9, 0x00e9, 0x00f6, 0x010a, - 0x011a, 0x0127, 0x012c, 0x0134, 0x0139, 0x014a, 0x015c, 0x016d, - // Entry 7600 - 763F - 0x0179, 0x018d, 0x018d, 0x0196, 0x019d, 0x01a5, 0x01aa, 0x01b0, - 0x01b6, 0x01c4, 0x01cf, 0x01e2, 0x01f3, 0x01f6, 0x0203, 0x020a, - 0x0213, 0x021b, 0x021b, 0x021f, 0x0228, 0x0230, 0x0236, 0x0242, - 0x0247, 0x024b, 0x024e, 0x0253, 0x0256, 0x025e, 0x0267, 0x026b, - 0x0272, 0x0278, 0x0282, 0x0288, 0x028d, 0x028d, 0x0299, 0x0299, - 0x02ba, 0x02db, 0x02fc, 0x031d, 0x033e, 0x035f, 0x0380, 0x03a1, - 0x03c2, 0x03e3, 0x0404, 0x0425, 0x0446, 0x0467, 0x0488, 0x04a9, - 0x04ca, 0x04eb, 0x050c, 0x052d, 0x054e, 0x056f, 0x0590, 0x05b1, - // Entry 7640 - 767F - 0x05d2, 0x05f3, 0x0614, 0x0635, 0x0656, 0x0677, 0x0698, 0x06b9, - 0x06da, 0x06fb, 0x071c, 0x073d, 0x075e, 0x077f, 0x07a0, 0x07c1, - 0x07e2, 0x0803, 0x0824, 0x0845, 0x0866, 0x0887, 0x08a8, 0x08c9, - 0x08ea, 0x090b, 0x092c, 0x094d, 0x096e, 0x098f, 0x09b0, 0x09d1, - 0x09f2, 0x0a13, 0x0a34, 0x0a55, 0x0a76, 0x0a97, 0x0ab8, 0x0ad9, - 0x0afa, 0x0b1b, 0x0b3c, 0x0b5d, 0x0b7e, 0x0b9f, 0x0bc0, 0x0be1, - 0x0c02, 0x0c23, 0x0c44, 0x0c65, 0x0c86, 0x0ca7, 0x0cc8, 0x0ce9, - 0x0d0a, 0x0d2b, 0x0d4c, 0x0d6d, 0x0d8e, 0x0daf, 0x0dd0, 0x0df1, - // Entry 7680 - 76BF - 0x0e12, 0x0e33, 0x0e54, 0x0e75, 0x0e96, 0x0eb7, 0x0ed8, 0x0ef9, - 0x0f1a, 0x0f3b, 0x0f5c, 0x0f7d, 0x0f9e, 0x0fbf, 0x0fe0, 0x1001, - 0x1022, 0x1043, 0x1064, 0x1085, 0x10a6, 0x10c7, 0x10e8, 0x1109, - 0x112a, 0x114b, 0x116c, 0x118d, 0x11ae, 0x11cf, 0x11f0, 0x1211, - 0x1232, 0x1253, 0x1274, 0x1295, 0x12b6, 0x12d7, 0x12f8, 0x1319, - 0x133a, 0x135b, 0x137c, 0x139d, 0x13be, 0x13df, 0x1400, 0x1421, - 0x1442, 0x1463, 0x1484, 0x14a5, 0x14c6, 0x14e7, 0x1508, 0x1529, - 0x154a, 0x156b, 0x158c, 0x15ad, 0x15ce, 0x15ef, 0x1610, 0x1631, - // Entry 76C0 - 76FF - 0x1652, 0x1673, 0x1694, 0x16b5, 0x16d6, 0x16f7, 0x1718, 0x1739, - 0x175a, 0x177b, 0x179c, 0x17bd, 0x17de, 0x17ff, 0x1820, 0x1841, - 0x1862, 0x1883, 0x18a4, 0x18c5, 0x18e6, 0x1907, 0x1928, 0x1949, - 0x196a, 0x198b, 0x19ac, 0x19cd, 0x19ee, 0x1a0f, 0x1a30, 0x1a51, - 0x1a72, 0x1a93, 0x1ab4, 0x1ad5, 0x1af6, 0x1b17, 0x1b38, 0x1b59, - 0x1b7a, 0x1b9b, 0x1bbc, 0x1bdd, 0x1bfe, 0x1c1f, 0x1c40, 0x1c61, - 0x1c82, 0x1ca3, 0x1cc4, 0x1ce5, 0x1d06, 0x1d27, 0x1d48, 0x1d69, - 0x1d8a, 0x1dab, 0x1dcc, 0x1ded, 0x1e0e, 0x1e2f, 0x1e50, 0x1e71, - // Entry 7700 - 773F - 0x1e92, 0x1eb3, 0x1ed4, 0x1ef5, 0x1f16, 0x1f37, 0x1f58, 0x1f79, - 0x1f9a, 0x1fbb, 0x1fdc, 0x1ffd, 0x201e, 0x203f, 0x2060, 0x2081, - 0x20a2, 0x20c3, 0x20e4, 0x2105, 0x2126, 0x2147, 0x2168, 0x2189, - 0x21aa, 0x21cb, 0x21ec, 0x220d, 0x222e, 0x224f, 0x2270, 0x2291, - 0x22b2, 0x22d3, 0x22f4, 0x2315, 0x2336, 0x2357, 0x2378, 0x2399, - 0x23ba, 0x23db, 0x23fc, 0x241d, 0x243e, 0x245f, 0x2480, 0x24a1, - 0x24c2, 0x24e3, 0x2504, 0x2525, 0x2546, 0x2567, 0x2588, 0x25a9, - 0x25ca, 0x25eb, 0x260c, 0x262d, 0x264e, 0x266f, 0x2690, 0x26b1, - // Entry 7740 - 777F - 0x26d2, 0x26f3, 0x2714, 0x2735, 0x2756, 0x2777, 0x2798, 0x27b9, - 0x27da, 0x27fb, 0x281c, 0x283d, 0x285e, 0x287f, 0x28a0, 0x28c1, - 0x28e2, 0x2903, 0x2924, 0x2945, 0x2966, 0x2987, 0x29a8, 0x29c9, - 0x29ea, 0x2a0b, 0x2a2c, 0x2a4d, 0x2a6e, 0x2a8f, 0x2ab0, 0x2ad1, - 0x2af2, 0x2b13, 0x2b34, 0x2b55, 0x2b76, 0x2b97, 0x2bb8, 0x2bd9, - 0x2bfa, 0x2c1b, 0x2c3c, 0x2c5d, 0x2c7e, 0x2c9f, 0x2cc0, 0x2ce1, - 0x2d02, 0x2d23, 0x2d44, 0x2d65, 0x2d86, 0x2da7, 0x2dc8, 0x2de9, - 0x2e0a, 0x2e2b, 0x2e4c, 0x2e6d, 0x2e8e, 0x2eaf, 0x2ed0, 0x2ef1, - // Entry 7780 - 77BF - 0x2f12, 0x2f33, 0x2f54, 0x2f75, 0x2f96, 0x2fb7, 0x2fd8, 0x2ff9, - 0x301a, 0x303b, 0x305c, 0x307d, 0x309e, 0x30bf, 0x30e0, 0x3101, - 0x3122, 0x3143, 0x3164, 0x3185, 0x31a6, 0x31c7, 0x31e8, 0x3209, - 0x322a, 0x324b, 0x326c, 0x328d, 0x32ae, 0x32cf, 0x32f0, 0x3311, - 0x3332, 0x3353, 0x3374, 0x3395, 0x33b6, 0x33d7, 0x33f8, 0x3419, - 0x343a, 0x345b, 0x347c, 0x349d, 0x34be, 0x34df, 0x3500, 0x3521, - 0x3542, 0x3563, 0x3584, 0x35a5, 0x35c6, 0x35e7, 0x3608, 0x3629, - 0x364a, 0x366b, 0x368c, 0x36ad, 0x36ce, 0x36ef, 0x3710, 0x3731, - // Entry 77C0 - 77FF - 0x3752, 0x3773, 0x3794, 0x37b5, 0x37d6, 0x37f7, 0x3818, 0x3839, - 0x385a, 0x387b, 0x389c, 0x38bd, 0x38de, 0x38ff, 0x3920, 0x3941, - 0x3962, 0x3983, 0x39a4, 0x39c5, 0x39e6, 0x3a07, 0x3a28, 0x3a49, - 0x3a6a, 0x3a8b, 0x3aac, 0x3acd, 0x3aee, 0x3b0f, 0x3b30, 0x3b51, - 0x3b72, 0x3b93, 0x3bb4, 0x3bd5, 0x3bf6, 0x3c17, 0x3c38, 0x3c59, - 0x3c7a, 0x3c9b, 0x3cbc, 0x3cdd, 0x3cfe, 0x3d1f, 0x3d40, 0x3d61, - 0x3d82, 0x3da3, 0x3dc4, 0x3de5, 0x3e06, 0x3e27, 0x3e48, 0x3e69, - 0x3e8a, 0x3eab, 0x3ecc, 0x3eed, 0x3f0e, 0x3f2f, 0x3f50, 0x3f71, - // Entry 7800 - 783F - 0x3f92, 0x3fb3, 0x3fd4, 0x3ff5, 0x4016, 0x4037, 0x4058, 0x4079, - 0x409a, 0x40bb, 0x40dc, 0x40fd, 0x411e, 0x413f, 0x4160, 0x4181, - 0x41a2, 0x41c3, 0x41e4, 0x4205, 0x4226, 0x4247, 0x4268, 0x4289, - 0x42aa, 0x42cb, 0x42ec, 0x430d, 0x432e, 0x434f, 0x4370, 0x4391, - 0x43b2, 0x43d3, 0x43f4, 0x4415, 0x4436, 0x4457, 0x4478, 0x4499, - 0x44ba, 0x44db, 0x44fc, 0x451d, 0x453e, 0x455f, 0x4580, 0x45a1, - 0x45c2, 0x45e3, 0x4604, 0x4625, 0x4646, 0x4667, 0x4688, 0x46a9, - 0x46ca, 0x46eb, 0x470c, 0x472d, 0x474e, 0x476f, 0x4790, 0x47b1, - // Entry 7840 - 787F - 0x47d2, 0x47f3, 0x4814, 0x4835, 0x4856, 0x4877, 0x0077, 0x0083, - 0x0083, 0x008c, 0x00a0, 0x00b2, 0x00c1, 0x00d0, 0x00e0, 0x00ed, - 0x00fb, 0x010f, 0x0124, 0x0130, 0x013d, 0x0146, 0x0156, 0x0163, - 0x016e, 0x017c, 0x0189, 0x0196, 0x01a5, 0x01b3, 0x01c1, 0x01ce, - 0x01dd, 0x01ec, 0x01fa, 0x0203, 0x0210, 0x0222, 0x0231, 0x0246, - 0x0257, 0x0268, 0x0282, 0x029c, 0x02b6, 0x02d0, 0x02ea, 0x0304, - 0x031e, 0x0338, 0x0352, 0x036c, 0x0386, 0x03a0, 0x03ba, 0x03d4, - 0x03ee, 0x0408, 0x0422, 0x043c, 0x0456, 0x0470, 0x048a, 0x04a4, - // Entry 7880 - 78BF - 0x04be, 0x04d8, 0x04f2, 0x050c, 0x0523, 0x0536, 0x054e, 0x0563, - 0x056f, 0x057f, 0x0597, 0x05af, 0x05c7, 0x05df, 0x05f7, 0x060f, - 0x0627, 0x063f, 0x0657, 0x066f, 0x0687, 0x069f, 0x06b7, 0x06cf, - 0x06e7, 0x06ff, 0x0717, 0x072f, 0x0747, 0x075f, 0x0777, 0x078f, - 0x07a7, 0x07bf, 0x07d7, 0x07ef, 0x0805, 0x0816, 0x082d, 0x0836, - 0x0840, 0x0040, 0x0055, 0x006a, 0x007f, 0x0094, 0x00a9, 0x00be, - 0x00d3, 0x00e8, 0x00fd, 0x0112, 0x0127, 0x013c, 0x0151, 0x0166, - 0x017b, 0x0190, 0x01a5, 0x01ba, 0x01cf, 0x01e4, 0x01f9, 0x020e, - // Entry 78C0 - 78FF - 0x0223, 0x0238, 0x024d, 0x0262, 0x0277, 0x028c, 0x02a1, 0x02b6, - 0x02cb, 0x02e0, 0x02f5, 0x030a, 0x031f, 0x0334, 0x0349, 0x035e, - 0x0373, 0x0388, 0x039d, 0x03b2, 0x03c7, 0x03dc, 0x03f1, 0x0406, - 0x041b, 0x0430, 0x0445, 0x045a, 0x046f, 0x0484, 0x0499, 0x04ae, - 0x04c3, 0x04d8, 0x04ed, 0x0502, 0x0517, 0x052c, 0x0541, 0x0556, - 0x056b, 0x0580, 0x0595, 0x05aa, 0x05bf, 0x05d4, 0x05e9, 0x05fe, - 0x0613, 0x0628, 0x063d, 0x0652, 0x0667, 0x067c, 0x0691, 0x06a6, - 0x06bb, 0x06d0, 0x06e5, 0x06fa, 0x070f, 0x0725, 0x073b, 0x0751, - // Entry 7900 - 793F - 0x0767, 0x077d, 0x0793, 0x07a9, 0x07bf, 0x07d5, 0x07eb, 0x0801, - 0x0817, 0x082d, 0x0843, 0x0859, 0x086f, 0x0885, 0x089b, 0x08b1, - 0x08c7, 0x08dd, 0x08f3, 0x0909, 0x091f, 0x0935, 0x094b, 0x0961, - 0x0977, 0x098d, 0x09a3, 0x09b9, 0x09cf, 0x09e5, 0x09fb, 0x0a11, - 0x0a27, 0x0a3d, 0x0a53, 0x0a69, 0x0a7f, 0x0a95, 0x0aab, 0x0ac1, - 0x0ad7, 0x0aed, 0x0b03, 0x0b19, 0x0b2f, 0x0b45, 0x0b5b, 0x0b71, - 0x0b87, 0x0b9d, 0x0bb3, 0x0bc9, 0x0bdf, 0x0bf5, 0x0c0b, 0x0c21, - 0x0c37, 0x0c4d, 0x0c63, 0x0c79, 0x0c8f, 0x0ca5, 0x0cbb, 0x0cd1, - // Entry 7940 - 797F - 0x0ce7, 0x0cfd, 0x0d13, 0x0d29, 0x0d3f, 0x0d55, 0x0d6b, 0x0d81, - 0x0d97, 0x0dad, 0x0dc3, 0x0dd9, 0x0def, 0x0e05, 0x0e1b, 0x0e31, - 0x0e47, 0x0e5d, 0x0e73, 0x0e89, 0x0e9f, 0x0eb5, 0x0ecb, 0x0ee1, - 0x0ef7, 0x0f0d, 0x0f23, 0x0f39, 0x0f4f, 0x0f65, 0x0f7b, 0x0f91, - 0x0fa7, 0x0fbd, 0x0fd3, 0x0fe9, 0x0fff, 0x1015, 0x102b, 0x1041, - 0x1057, 0x106d, 0x1083, 0x1099, 0x10af, 0x10c5, 0x10db, 0x10f1, - 0x1107, 0x111d, 0x1133, 0x1149, 0x115f, 0x1175, 0x118b, 0x11a1, - 0x11b7, 0x11cd, 0x11e3, 0x11f9, 0x120f, 0x1225, 0x123b, 0x1251, - // Entry 7980 - 79BF - 0x1267, 0x127d, 0x1293, 0x12a9, 0x12bf, 0x12d5, 0x12eb, 0x1301, - 0x1317, 0x132d, 0x1343, 0x1359, 0x136f, 0x1385, 0x139b, 0x13b1, - 0x13c7, 0x13dd, 0x13f3, 0x1409, 0x141f, 0x1435, 0x144b, 0x1461, - 0x1477, 0x148d, -} // Size: 62284 bytes - -const data string = ("" + // Size: 787597 bytes; the redundant, explicit parens are for https://golang.org/issue/18078 - "<control><CJK Ideograph Extension A><CJK Ideograph><Hangul Syllable><Non" + - " Private Use High Surrogate><Private Use High Surrogate><Low Surrogate><" + - "Private Use><Tangut Ideograph><CJK Ideograph Extension B><CJK Ideograph " + - "Extension C><CJK Ideograph Extension D><CJK Ideograph Extension E><Plane" + - " 15 Private Use><Plane 16 Private Use>SPACEEXCLAMATION MARKQUOTATION MAR" + - "KNUMBER SIGNDOLLAR SIGNPERCENT SIGNAMPERSANDAPOSTROPHELEFT PARENTHESISRI" + - "GHT PARENTHESISASTERISKPLUS SIGNCOMMAHYPHEN-MINUSFULL STOPSOLIDUSDIGIT Z" + - "ERODIGIT ONEDIGIT TWODIGIT THREEDIGIT FOURDIGIT FIVEDIGIT SIXDIGIT SEVEN" + - "DIGIT EIGHTDIGIT NINECOLONSEMICOLONLESS-THAN SIGNEQUALS SIGNGREATER-THAN" + - " SIGNQUESTION MARKCOMMERCIAL ATLATIN CAPITAL LETTER ALATIN CAPITAL LETTE" + - "R BLATIN CAPITAL LETTER CLATIN CAPITAL LETTER DLATIN CAPITAL LETTER ELAT" + - "IN CAPITAL LETTER FLATIN CAPITAL LETTER GLATIN CAPITAL LETTER HLATIN CAP" + - "ITAL LETTER ILATIN CAPITAL LETTER JLATIN CAPITAL LETTER KLATIN CAPITAL L" + - "ETTER LLATIN CAPITAL LETTER MLATIN CAPITAL LETTER NLATIN CAPITAL LETTER " + - "OLATIN CAPITAL LETTER PLATIN CAPITAL LETTER QLATIN CAPITAL LETTER RLATIN" + - " CAPITAL LETTER SLATIN CAPITAL LETTER TLATIN CAPITAL LETTER ULATIN CAPIT" + - "AL LETTER VLATIN CAPITAL LETTER WLATIN CAPITAL LETTER XLATIN CAPITAL LET" + - "TER YLATIN CAPITAL LETTER ZLEFT SQUARE BRACKETREVERSE SOLIDUSRIGHT SQUAR" + - "E BRACKETCIRCUMFLEX ACCENTLOW LINEGRAVE ACCENTLATIN SMALL LETTER ALATIN " + - "SMALL LETTER BLATIN SMALL LETTER CLATIN SMALL LETTER DLATIN SMALL LETTER" + - " ELATIN SMALL LETTER FLATIN SMALL LETTER GLATIN SMALL LETTER HLATIN SMAL" + - "L LETTER ILATIN SMALL LETTER JLATIN SMALL LETTER KLATIN SMALL LETTER LLA" + - "TIN SMALL LETTER MLATIN SMALL LETTER NLATIN SMALL LETTER OLATIN SMALL LE" + - "TTER PLATIN SMALL LETTER QLATIN SMALL LETTER RLATIN SMALL LETTER SLATIN " + - "SMALL LETTER TLATIN SMALL LETTER ULATIN SMALL LETTER VLATIN SMALL LETTER" + - " WLATIN SMALL LETTER XLATIN SMALL LETTER YLATIN SMALL LETTER ZLEFT CURLY" + - " BRACKETVERTICAL LINERIGHT CURLY BRACKETTILDENO-BREAK SPACEINVERTED EXCL" + - "AMATION MARKCENT SIGNPOUND SIGNCURRENCY SIGNYEN SIGNBROKEN BARSECTION SI" + - "GNDIAERESISCOPYRIGHT SIGNFEMININE ORDINAL INDICATORLEFT-POINTING DOUBLE " + - "ANGLE QUOTATION MARKNOT SIGNSOFT HYPHENREGISTERED SIGNMACRONDEGREE SIGNP" + - "LUS-MINUS SIGNSUPERSCRIPT TWOSUPERSCRIPT THREEACUTE ACCENTMICRO SIGNPILC" + - "ROW SIGNMIDDLE DOTCEDILLASUPERSCRIPT ONEMASCULINE ORDINAL INDICATORRIGHT" + - "-POINTING DOUBLE ANGLE QUOTATION MARKVULGAR FRACTION ONE QUARTERVULGAR F" + - "RACTION ONE HALFVULGAR FRACTION THREE QUARTERSINVERTED QUESTION MARKLATI" + - "N CAPITAL LETTER A WITH GRAVELATIN CAPITAL LETTER A WITH ACUTELATIN CAPI" + - "TAL LETTER A WITH CIRCUMFLEXLATIN CAPITAL LETTER A WITH TILDELATIN CAPIT" + - "AL LETTER A WITH DIAERESISLATIN CAPITAL LETTER A WITH RING ABOVELATIN CA" + - "PITAL LETTER AELATIN CAPITAL LETTER C WITH CEDILLALATIN CAPITAL LETTER E" + - " WITH GRAVELATIN CAPITAL LETTER E WITH ACUTELATIN CAPITAL LETTER E WITH " + - "CIRCUMFLEXLATIN CAPITAL LETTER E WITH DIAERESISLATIN CAPITAL LETTER I WI" + - "TH GRAVELATIN CAPITAL LETTER I WITH ACUTELATIN CAPITAL LETTER I WITH CIR" + - "CUMFLEXLATIN CAPITAL LETTER I WITH DIAERESISLATIN CAPITAL LETTER ETHLATI" + - "N CAPITAL LETTER N WITH TILDELATIN CAPITAL LETTER O WITH GRAVELATIN CAPI" + - "TAL LETTER O WITH ACUTELATIN CAPITAL LETTER O WITH CIRCUMFLEXLATIN CAPIT" + - "AL LETTER O WITH TILDELATIN CAPITAL LETTER O WITH DIAERESISMULTIPLICATIO" + - "N SIGNLATIN CAPITAL LETTER O WITH STROKELATIN CAPITAL LETTER U WITH GRAV" + - "ELATIN CAPITAL LETTER U WITH ACUTELATIN CAPITAL LETTER U WITH CIRCUMFLEX" + - "LATIN CAPITAL LETTER U WITH DIAERESISLATIN CAPITAL LETTER Y WITH ACUTELA" + - "TIN CAPITAL LETTER THORNLATIN SMALL LETTER SHARP SLATIN SMALL LETTER A W" + - "ITH GRAVELATIN SMALL LETTER A WITH ACUTELATIN SMALL LETTER A WITH CIRCUM" + - "FLEXLATIN SMALL LETTER A WITH TILDELATIN SMALL LETTER A WITH DIAERESISLA" + - "TIN SMALL LETTER A WITH RING ABOVELATIN SMALL LETTER AELATIN SMALL LETTE" + - "R C WITH CEDILLALATIN SMALL LETTER E WITH GRAVELATIN SMALL LETTER E WITH" + - " ACUTELATIN SMALL LETTER E WITH CIRCUMFLEXLATIN SMALL LETTER E WITH DIAE" + - "RESISLATIN SMALL LETTER I WITH GRAVELATIN SMALL LETTER I WITH ACUTELATIN" + - " SMALL LETTER I WITH CIRCUMFLEXLATIN SMALL LETTER I WITH DIAERESISLATIN " + - "SMALL LETTER ETHLATIN SMALL LETTER N WITH TILDELATIN SMALL LETTER O WITH" + - " GRAVELATIN SMALL LETTER O WITH ACUTELATIN SMALL LETTER O WITH CIRCUMFLE" + - "XLATIN SMALL LETTER O WITH TILDELATIN SMALL LETTER O WITH DIAERESISDIVIS" + - "ION SIGNLATIN SMALL LETTER O WITH STROKELATIN SMALL LETTER U WITH GRAVEL" + - "ATIN SMALL LETTER U WITH ACUTELATIN SMALL LETTER U WITH CIRCUMFLEXLATIN " + - "SMALL LETTER U WITH DIAERESISLATIN SMALL LETTER Y WITH ACUTELATIN SMALL " + - "LETTER THORNLATIN SMALL LETTER Y WITH DIAERESISLATIN CAPITAL LETTER A WI") + ("" + - "TH MACRONLATIN SMALL LETTER A WITH MACRONLATIN CAPITAL LETTER A WITH BRE" + - "VELATIN SMALL LETTER A WITH BREVELATIN CAPITAL LETTER A WITH OGONEKLATIN" + - " SMALL LETTER A WITH OGONEKLATIN CAPITAL LETTER C WITH ACUTELATIN SMALL " + - "LETTER C WITH ACUTELATIN CAPITAL LETTER C WITH CIRCUMFLEXLATIN SMALL LET" + - "TER C WITH CIRCUMFLEXLATIN CAPITAL LETTER C WITH DOT ABOVELATIN SMALL LE" + - "TTER C WITH DOT ABOVELATIN CAPITAL LETTER C WITH CARONLATIN SMALL LETTER" + - " C WITH CARONLATIN CAPITAL LETTER D WITH CARONLATIN SMALL LETTER D WITH " + - "CARONLATIN CAPITAL LETTER D WITH STROKELATIN SMALL LETTER D WITH STROKEL" + - "ATIN CAPITAL LETTER E WITH MACRONLATIN SMALL LETTER E WITH MACRONLATIN C" + - "APITAL LETTER E WITH BREVELATIN SMALL LETTER E WITH BREVELATIN CAPITAL L" + - "ETTER E WITH DOT ABOVELATIN SMALL LETTER E WITH DOT ABOVELATIN CAPITAL L" + - "ETTER E WITH OGONEKLATIN SMALL LETTER E WITH OGONEKLATIN CAPITAL LETTER " + - "E WITH CARONLATIN SMALL LETTER E WITH CARONLATIN CAPITAL LETTER G WITH C" + - "IRCUMFLEXLATIN SMALL LETTER G WITH CIRCUMFLEXLATIN CAPITAL LETTER G WITH" + - " BREVELATIN SMALL LETTER G WITH BREVELATIN CAPITAL LETTER G WITH DOT ABO" + - "VELATIN SMALL LETTER G WITH DOT ABOVELATIN CAPITAL LETTER G WITH CEDILLA" + - "LATIN SMALL LETTER G WITH CEDILLALATIN CAPITAL LETTER H WITH CIRCUMFLEXL" + - "ATIN SMALL LETTER H WITH CIRCUMFLEXLATIN CAPITAL LETTER H WITH STROKELAT" + - "IN SMALL LETTER H WITH STROKELATIN CAPITAL LETTER I WITH TILDELATIN SMAL" + - "L LETTER I WITH TILDELATIN CAPITAL LETTER I WITH MACRONLATIN SMALL LETTE" + - "R I WITH MACRONLATIN CAPITAL LETTER I WITH BREVELATIN SMALL LETTER I WIT" + - "H BREVELATIN CAPITAL LETTER I WITH OGONEKLATIN SMALL LETTER I WITH OGONE" + - "KLATIN CAPITAL LETTER I WITH DOT ABOVELATIN SMALL LETTER DOTLESS ILATIN " + - "CAPITAL LIGATURE IJLATIN SMALL LIGATURE IJLATIN CAPITAL LETTER J WITH CI" + - "RCUMFLEXLATIN SMALL LETTER J WITH CIRCUMFLEXLATIN CAPITAL LETTER K WITH " + - "CEDILLALATIN SMALL LETTER K WITH CEDILLALATIN SMALL LETTER KRALATIN CAPI" + - "TAL LETTER L WITH ACUTELATIN SMALL LETTER L WITH ACUTELATIN CAPITAL LETT" + - "ER L WITH CEDILLALATIN SMALL LETTER L WITH CEDILLALATIN CAPITAL LETTER L" + - " WITH CARONLATIN SMALL LETTER L WITH CARONLATIN CAPITAL LETTER L WITH MI" + - "DDLE DOTLATIN SMALL LETTER L WITH MIDDLE DOTLATIN CAPITAL LETTER L WITH " + - "STROKELATIN SMALL LETTER L WITH STROKELATIN CAPITAL LETTER N WITH ACUTEL" + - "ATIN SMALL LETTER N WITH ACUTELATIN CAPITAL LETTER N WITH CEDILLALATIN S" + - "MALL LETTER N WITH CEDILLALATIN CAPITAL LETTER N WITH CARONLATIN SMALL L" + - "ETTER N WITH CARONLATIN SMALL LETTER N PRECEDED BY APOSTROPHELATIN CAPIT" + - "AL LETTER ENGLATIN SMALL LETTER ENGLATIN CAPITAL LETTER O WITH MACRONLAT" + - "IN SMALL LETTER O WITH MACRONLATIN CAPITAL LETTER O WITH BREVELATIN SMAL" + - "L LETTER O WITH BREVELATIN CAPITAL LETTER O WITH DOUBLE ACUTELATIN SMALL" + - " LETTER O WITH DOUBLE ACUTELATIN CAPITAL LIGATURE OELATIN SMALL LIGATURE" + - " OELATIN CAPITAL LETTER R WITH ACUTELATIN SMALL LETTER R WITH ACUTELATIN" + - " CAPITAL LETTER R WITH CEDILLALATIN SMALL LETTER R WITH CEDILLALATIN CAP" + - "ITAL LETTER R WITH CARONLATIN SMALL LETTER R WITH CARONLATIN CAPITAL LET" + - "TER S WITH ACUTELATIN SMALL LETTER S WITH ACUTELATIN CAPITAL LETTER S WI" + - "TH CIRCUMFLEXLATIN SMALL LETTER S WITH CIRCUMFLEXLATIN CAPITAL LETTER S " + - "WITH CEDILLALATIN SMALL LETTER S WITH CEDILLALATIN CAPITAL LETTER S WITH" + - " CARONLATIN SMALL LETTER S WITH CARONLATIN CAPITAL LETTER T WITH CEDILLA" + - "LATIN SMALL LETTER T WITH CEDILLALATIN CAPITAL LETTER T WITH CARONLATIN " + - "SMALL LETTER T WITH CARONLATIN CAPITAL LETTER T WITH STROKELATIN SMALL L" + - "ETTER T WITH STROKELATIN CAPITAL LETTER U WITH TILDELATIN SMALL LETTER U" + - " WITH TILDELATIN CAPITAL LETTER U WITH MACRONLATIN SMALL LETTER U WITH M" + - "ACRONLATIN CAPITAL LETTER U WITH BREVELATIN SMALL LETTER U WITH BREVELAT" + - "IN CAPITAL LETTER U WITH RING ABOVELATIN SMALL LETTER U WITH RING ABOVEL" + - "ATIN CAPITAL LETTER U WITH DOUBLE ACUTELATIN SMALL LETTER U WITH DOUBLE " + - "ACUTELATIN CAPITAL LETTER U WITH OGONEKLATIN SMALL LETTER U WITH OGONEKL" + - "ATIN CAPITAL LETTER W WITH CIRCUMFLEXLATIN SMALL LETTER W WITH CIRCUMFLE" + - "XLATIN CAPITAL LETTER Y WITH CIRCUMFLEXLATIN SMALL LETTER Y WITH CIRCUMF" + - "LEXLATIN CAPITAL LETTER Y WITH DIAERESISLATIN CAPITAL LETTER Z WITH ACUT" + - "ELATIN SMALL LETTER Z WITH ACUTELATIN CAPITAL LETTER Z WITH DOT ABOVELAT" + - "IN SMALL LETTER Z WITH DOT ABOVELATIN CAPITAL LETTER Z WITH CARONLATIN S" + - "MALL LETTER Z WITH CARONLATIN SMALL LETTER LONG SLATIN SMALL LETTER B WI" + - "TH STROKELATIN CAPITAL LETTER B WITH HOOKLATIN CAPITAL LETTER B WITH TOP" + - "BARLATIN SMALL LETTER B WITH TOPBARLATIN CAPITAL LETTER TONE SIXLATIN SM" + - "ALL LETTER TONE SIXLATIN CAPITAL LETTER OPEN OLATIN CAPITAL LETTER C WIT" + - "H HOOKLATIN SMALL LETTER C WITH HOOKLATIN CAPITAL LETTER AFRICAN DLATIN " + - "CAPITAL LETTER D WITH HOOKLATIN CAPITAL LETTER D WITH TOPBARLATIN SMALL ") + ("" + - "LETTER D WITH TOPBARLATIN SMALL LETTER TURNED DELTALATIN CAPITAL LETTER " + - "REVERSED ELATIN CAPITAL LETTER SCHWALATIN CAPITAL LETTER OPEN ELATIN CAP" + - "ITAL LETTER F WITH HOOKLATIN SMALL LETTER F WITH HOOKLATIN CAPITAL LETTE" + - "R G WITH HOOKLATIN CAPITAL LETTER GAMMALATIN SMALL LETTER HVLATIN CAPITA" + - "L LETTER IOTALATIN CAPITAL LETTER I WITH STROKELATIN CAPITAL LETTER K WI" + - "TH HOOKLATIN SMALL LETTER K WITH HOOKLATIN SMALL LETTER L WITH BARLATIN " + - "SMALL LETTER LAMBDA WITH STROKELATIN CAPITAL LETTER TURNED MLATIN CAPITA" + - "L LETTER N WITH LEFT HOOKLATIN SMALL LETTER N WITH LONG RIGHT LEGLATIN C" + - "APITAL LETTER O WITH MIDDLE TILDELATIN CAPITAL LETTER O WITH HORNLATIN S" + - "MALL LETTER O WITH HORNLATIN CAPITAL LETTER OILATIN SMALL LETTER OILATIN" + - " CAPITAL LETTER P WITH HOOKLATIN SMALL LETTER P WITH HOOKLATIN LETTER YR" + - "LATIN CAPITAL LETTER TONE TWOLATIN SMALL LETTER TONE TWOLATIN CAPITAL LE" + - "TTER ESHLATIN LETTER REVERSED ESH LOOPLATIN SMALL LETTER T WITH PALATAL " + - "HOOKLATIN CAPITAL LETTER T WITH HOOKLATIN SMALL LETTER T WITH HOOKLATIN " + - "CAPITAL LETTER T WITH RETROFLEX HOOKLATIN CAPITAL LETTER U WITH HORNLATI" + - "N SMALL LETTER U WITH HORNLATIN CAPITAL LETTER UPSILONLATIN CAPITAL LETT" + - "ER V WITH HOOKLATIN CAPITAL LETTER Y WITH HOOKLATIN SMALL LETTER Y WITH " + - "HOOKLATIN CAPITAL LETTER Z WITH STROKELATIN SMALL LETTER Z WITH STROKELA" + - "TIN CAPITAL LETTER EZHLATIN CAPITAL LETTER EZH REVERSEDLATIN SMALL LETTE" + - "R EZH REVERSEDLATIN SMALL LETTER EZH WITH TAILLATIN LETTER TWO WITH STRO" + - "KELATIN CAPITAL LETTER TONE FIVELATIN SMALL LETTER TONE FIVELATIN LETTER" + - " INVERTED GLOTTAL STOP WITH STROKELATIN LETTER WYNNLATIN LETTER DENTAL C" + - "LICKLATIN LETTER LATERAL CLICKLATIN LETTER ALVEOLAR CLICKLATIN LETTER RE" + - "TROFLEX CLICKLATIN CAPITAL LETTER DZ WITH CARONLATIN CAPITAL LETTER D WI" + - "TH SMALL LETTER Z WITH CARONLATIN SMALL LETTER DZ WITH CARONLATIN CAPITA" + - "L LETTER LJLATIN CAPITAL LETTER L WITH SMALL LETTER JLATIN SMALL LETTER " + - "LJLATIN CAPITAL LETTER NJLATIN CAPITAL LETTER N WITH SMALL LETTER JLATIN" + - " SMALL LETTER NJLATIN CAPITAL LETTER A WITH CARONLATIN SMALL LETTER A WI" + - "TH CARONLATIN CAPITAL LETTER I WITH CARONLATIN SMALL LETTER I WITH CARON" + - "LATIN CAPITAL LETTER O WITH CARONLATIN SMALL LETTER O WITH CARONLATIN CA" + - "PITAL LETTER U WITH CARONLATIN SMALL LETTER U WITH CARONLATIN CAPITAL LE" + - "TTER U WITH DIAERESIS AND MACRONLATIN SMALL LETTER U WITH DIAERESIS AND " + - "MACRONLATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTELATIN SMALL LETTER " + - "U WITH DIAERESIS AND ACUTELATIN CAPITAL LETTER U WITH DIAERESIS AND CARO" + - "NLATIN SMALL LETTER U WITH DIAERESIS AND CARONLATIN CAPITAL LETTER U WIT" + - "H DIAERESIS AND GRAVELATIN SMALL LETTER U WITH DIAERESIS AND GRAVELATIN " + - "SMALL LETTER TURNED ELATIN CAPITAL LETTER A WITH DIAERESIS AND MACRONLAT" + - "IN SMALL LETTER A WITH DIAERESIS AND MACRONLATIN CAPITAL LETTER A WITH D" + - "OT ABOVE AND MACRONLATIN SMALL LETTER A WITH DOT ABOVE AND MACRONLATIN C" + - "APITAL LETTER AE WITH MACRONLATIN SMALL LETTER AE WITH MACRONLATIN CAPIT" + - "AL LETTER G WITH STROKELATIN SMALL LETTER G WITH STROKELATIN CAPITAL LET" + - "TER G WITH CARONLATIN SMALL LETTER G WITH CARONLATIN CAPITAL LETTER K WI" + - "TH CARONLATIN SMALL LETTER K WITH CARONLATIN CAPITAL LETTER O WITH OGONE" + - "KLATIN SMALL LETTER O WITH OGONEKLATIN CAPITAL LETTER O WITH OGONEK AND " + - "MACRONLATIN SMALL LETTER O WITH OGONEK AND MACRONLATIN CAPITAL LETTER EZ" + - "H WITH CARONLATIN SMALL LETTER EZH WITH CARONLATIN SMALL LETTER J WITH C" + - "ARONLATIN CAPITAL LETTER DZLATIN CAPITAL LETTER D WITH SMALL LETTER ZLAT" + - "IN SMALL LETTER DZLATIN CAPITAL LETTER G WITH ACUTELATIN SMALL LETTER G " + - "WITH ACUTELATIN CAPITAL LETTER HWAIRLATIN CAPITAL LETTER WYNNLATIN CAPIT" + - "AL LETTER N WITH GRAVELATIN SMALL LETTER N WITH GRAVELATIN CAPITAL LETTE" + - "R A WITH RING ABOVE AND ACUTELATIN SMALL LETTER A WITH RING ABOVE AND AC" + - "UTELATIN CAPITAL LETTER AE WITH ACUTELATIN SMALL LETTER AE WITH ACUTELAT" + - "IN CAPITAL LETTER O WITH STROKE AND ACUTELATIN SMALL LETTER O WITH STROK" + - "E AND ACUTELATIN CAPITAL LETTER A WITH DOUBLE GRAVELATIN SMALL LETTER A " + - "WITH DOUBLE GRAVELATIN CAPITAL LETTER A WITH INVERTED BREVELATIN SMALL L" + - "ETTER A WITH INVERTED BREVELATIN CAPITAL LETTER E WITH DOUBLE GRAVELATIN" + - " SMALL LETTER E WITH DOUBLE GRAVELATIN CAPITAL LETTER E WITH INVERTED BR" + - "EVELATIN SMALL LETTER E WITH INVERTED BREVELATIN CAPITAL LETTER I WITH D" + - "OUBLE GRAVELATIN SMALL LETTER I WITH DOUBLE GRAVELATIN CAPITAL LETTER I " + - "WITH INVERTED BREVELATIN SMALL LETTER I WITH INVERTED BREVELATIN CAPITAL" + - " LETTER O WITH DOUBLE GRAVELATIN SMALL LETTER O WITH DOUBLE GRAVELATIN C" + - "APITAL LETTER O WITH INVERTED BREVELATIN SMALL LETTER O WITH INVERTED BR" + - "EVELATIN CAPITAL LETTER R WITH DOUBLE GRAVELATIN SMALL LETTER R WITH DOU" + - "BLE GRAVELATIN CAPITAL LETTER R WITH INVERTED BREVELATIN SMALL LETTER R ") + ("" + - "WITH INVERTED BREVELATIN CAPITAL LETTER U WITH DOUBLE GRAVELATIN SMALL L" + - "ETTER U WITH DOUBLE GRAVELATIN CAPITAL LETTER U WITH INVERTED BREVELATIN" + - " SMALL LETTER U WITH INVERTED BREVELATIN CAPITAL LETTER S WITH COMMA BEL" + - "OWLATIN SMALL LETTER S WITH COMMA BELOWLATIN CAPITAL LETTER T WITH COMMA" + - " BELOWLATIN SMALL LETTER T WITH COMMA BELOWLATIN CAPITAL LETTER YOGHLATI" + - "N SMALL LETTER YOGHLATIN CAPITAL LETTER H WITH CARONLATIN SMALL LETTER H" + - " WITH CARONLATIN CAPITAL LETTER N WITH LONG RIGHT LEGLATIN SMALL LETTER " + - "D WITH CURLLATIN CAPITAL LETTER OULATIN SMALL LETTER OULATIN CAPITAL LET" + - "TER Z WITH HOOKLATIN SMALL LETTER Z WITH HOOKLATIN CAPITAL LETTER A WITH" + - " DOT ABOVELATIN SMALL LETTER A WITH DOT ABOVELATIN CAPITAL LETTER E WITH" + - " CEDILLALATIN SMALL LETTER E WITH CEDILLALATIN CAPITAL LETTER O WITH DIA" + - "ERESIS AND MACRONLATIN SMALL LETTER O WITH DIAERESIS AND MACRONLATIN CAP" + - "ITAL LETTER O WITH TILDE AND MACRONLATIN SMALL LETTER O WITH TILDE AND M" + - "ACRONLATIN CAPITAL LETTER O WITH DOT ABOVELATIN SMALL LETTER O WITH DOT " + - "ABOVELATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRONLATIN SMALL LETTER " + - "O WITH DOT ABOVE AND MACRONLATIN CAPITAL LETTER Y WITH MACRONLATIN SMALL" + - " LETTER Y WITH MACRONLATIN SMALL LETTER L WITH CURLLATIN SMALL LETTER N " + - "WITH CURLLATIN SMALL LETTER T WITH CURLLATIN SMALL LETTER DOTLESS JLATIN" + - " SMALL LETTER DB DIGRAPHLATIN SMALL LETTER QP DIGRAPHLATIN CAPITAL LETTE" + - "R A WITH STROKELATIN CAPITAL LETTER C WITH STROKELATIN SMALL LETTER C WI" + - "TH STROKELATIN CAPITAL LETTER L WITH BARLATIN CAPITAL LETTER T WITH DIAG" + - "ONAL STROKELATIN SMALL LETTER S WITH SWASH TAILLATIN SMALL LETTER Z WITH" + - " SWASH TAILLATIN CAPITAL LETTER GLOTTAL STOPLATIN SMALL LETTER GLOTTAL S" + - "TOPLATIN CAPITAL LETTER B WITH STROKELATIN CAPITAL LETTER U BARLATIN CAP" + - "ITAL LETTER TURNED VLATIN CAPITAL LETTER E WITH STROKELATIN SMALL LETTER" + - " E WITH STROKELATIN CAPITAL LETTER J WITH STROKELATIN SMALL LETTER J WIT" + - "H STROKELATIN CAPITAL LETTER SMALL Q WITH HOOK TAILLATIN SMALL LETTER Q " + - "WITH HOOK TAILLATIN CAPITAL LETTER R WITH STROKELATIN SMALL LETTER R WIT" + - "H STROKELATIN CAPITAL LETTER Y WITH STROKELATIN SMALL LETTER Y WITH STRO" + - "KELATIN SMALL LETTER TURNED ALATIN SMALL LETTER ALPHALATIN SMALL LETTER " + - "TURNED ALPHALATIN SMALL LETTER B WITH HOOKLATIN SMALL LETTER OPEN OLATIN" + - " SMALL LETTER C WITH CURLLATIN SMALL LETTER D WITH TAILLATIN SMALL LETTE" + - "R D WITH HOOKLATIN SMALL LETTER REVERSED ELATIN SMALL LETTER SCHWALATIN " + - "SMALL LETTER SCHWA WITH HOOKLATIN SMALL LETTER OPEN ELATIN SMALL LETTER " + - "REVERSED OPEN ELATIN SMALL LETTER REVERSED OPEN E WITH HOOKLATIN SMALL L" + - "ETTER CLOSED REVERSED OPEN ELATIN SMALL LETTER DOTLESS J WITH STROKELATI" + - "N SMALL LETTER G WITH HOOKLATIN SMALL LETTER SCRIPT GLATIN LETTER SMALL " + - "CAPITAL GLATIN SMALL LETTER GAMMALATIN SMALL LETTER RAMS HORNLATIN SMALL" + - " LETTER TURNED HLATIN SMALL LETTER H WITH HOOKLATIN SMALL LETTER HENG WI" + - "TH HOOKLATIN SMALL LETTER I WITH STROKELATIN SMALL LETTER IOTALATIN LETT" + - "ER SMALL CAPITAL ILATIN SMALL LETTER L WITH MIDDLE TILDELATIN SMALL LETT" + - "ER L WITH BELTLATIN SMALL LETTER L WITH RETROFLEX HOOKLATIN SMALL LETTER" + - " LEZHLATIN SMALL LETTER TURNED MLATIN SMALL LETTER TURNED M WITH LONG LE" + - "GLATIN SMALL LETTER M WITH HOOKLATIN SMALL LETTER N WITH LEFT HOOKLATIN " + - "SMALL LETTER N WITH RETROFLEX HOOKLATIN LETTER SMALL CAPITAL NLATIN SMAL" + - "L LETTER BARRED OLATIN LETTER SMALL CAPITAL OELATIN SMALL LETTER CLOSED " + - "OMEGALATIN SMALL LETTER PHILATIN SMALL LETTER TURNED RLATIN SMALL LETTER" + - " TURNED R WITH LONG LEGLATIN SMALL LETTER TURNED R WITH HOOKLATIN SMALL " + - "LETTER R WITH LONG LEGLATIN SMALL LETTER R WITH TAILLATIN SMALL LETTER R" + - " WITH FISHHOOKLATIN SMALL LETTER REVERSED R WITH FISHHOOKLATIN LETTER SM" + - "ALL CAPITAL RLATIN LETTER SMALL CAPITAL INVERTED RLATIN SMALL LETTER S W" + - "ITH HOOKLATIN SMALL LETTER ESHLATIN SMALL LETTER DOTLESS J WITH STROKE A" + - "ND HOOKLATIN SMALL LETTER SQUAT REVERSED ESHLATIN SMALL LETTER ESH WITH " + - "CURLLATIN SMALL LETTER TURNED TLATIN SMALL LETTER T WITH RETROFLEX HOOKL" + - "ATIN SMALL LETTER U BARLATIN SMALL LETTER UPSILONLATIN SMALL LETTER V WI" + - "TH HOOKLATIN SMALL LETTER TURNED VLATIN SMALL LETTER TURNED WLATIN SMALL" + - " LETTER TURNED YLATIN LETTER SMALL CAPITAL YLATIN SMALL LETTER Z WITH RE" + - "TROFLEX HOOKLATIN SMALL LETTER Z WITH CURLLATIN SMALL LETTER EZHLATIN SM" + - "ALL LETTER EZH WITH CURLLATIN LETTER GLOTTAL STOPLATIN LETTER PHARYNGEAL" + - " VOICED FRICATIVELATIN LETTER INVERTED GLOTTAL STOPLATIN LETTER STRETCHE" + - "D CLATIN LETTER BILABIAL CLICKLATIN LETTER SMALL CAPITAL BLATIN SMALL LE" + - "TTER CLOSED OPEN ELATIN LETTER SMALL CAPITAL G WITH HOOKLATIN LETTER SMA" + - "LL CAPITAL HLATIN SMALL LETTER J WITH CROSSED-TAILLATIN SMALL LETTER TUR" + - "NED KLATIN LETTER SMALL CAPITAL LLATIN SMALL LETTER Q WITH HOOKLATIN LET") + ("" + - "TER GLOTTAL STOP WITH STROKELATIN LETTER REVERSED GLOTTAL STOP WITH STRO" + - "KELATIN SMALL LETTER DZ DIGRAPHLATIN SMALL LETTER DEZH DIGRAPHLATIN SMAL" + - "L LETTER DZ DIGRAPH WITH CURLLATIN SMALL LETTER TS DIGRAPHLATIN SMALL LE" + - "TTER TESH DIGRAPHLATIN SMALL LETTER TC DIGRAPH WITH CURLLATIN SMALL LETT" + - "ER FENG DIGRAPHLATIN SMALL LETTER LS DIGRAPHLATIN SMALL LETTER LZ DIGRAP" + - "HLATIN LETTER BILABIAL PERCUSSIVELATIN LETTER BIDENTAL PERCUSSIVELATIN S" + - "MALL LETTER TURNED H WITH FISHHOOKLATIN SMALL LETTER TURNED H WITH FISHH" + - "OOK AND TAILMODIFIER LETTER SMALL HMODIFIER LETTER SMALL H WITH HOOKMODI" + - "FIER LETTER SMALL JMODIFIER LETTER SMALL RMODIFIER LETTER SMALL TURNED R" + - "MODIFIER LETTER SMALL TURNED R WITH HOOKMODIFIER LETTER SMALL CAPITAL IN" + - "VERTED RMODIFIER LETTER SMALL WMODIFIER LETTER SMALL YMODIFIER LETTER PR" + - "IMEMODIFIER LETTER DOUBLE PRIMEMODIFIER LETTER TURNED COMMAMODIFIER LETT" + - "ER APOSTROPHEMODIFIER LETTER REVERSED COMMAMODIFIER LETTER RIGHT HALF RI" + - "NGMODIFIER LETTER LEFT HALF RINGMODIFIER LETTER GLOTTAL STOPMODIFIER LET" + - "TER REVERSED GLOTTAL STOPMODIFIER LETTER LEFT ARROWHEADMODIFIER LETTER R" + - "IGHT ARROWHEADMODIFIER LETTER UP ARROWHEADMODIFIER LETTER DOWN ARROWHEAD" + - "MODIFIER LETTER CIRCUMFLEX ACCENTCARONMODIFIER LETTER VERTICAL LINEMODIF" + - "IER LETTER MACRONMODIFIER LETTER ACUTE ACCENTMODIFIER LETTER GRAVE ACCEN" + - "TMODIFIER LETTER LOW VERTICAL LINEMODIFIER LETTER LOW MACRONMODIFIER LET" + - "TER LOW GRAVE ACCENTMODIFIER LETTER LOW ACUTE ACCENTMODIFIER LETTER TRIA" + - "NGULAR COLONMODIFIER LETTER HALF TRIANGULAR COLONMODIFIER LETTER CENTRED" + - " RIGHT HALF RINGMODIFIER LETTER CENTRED LEFT HALF RINGMODIFIER LETTER UP" + - " TACKMODIFIER LETTER DOWN TACKMODIFIER LETTER PLUS SIGNMODIFIER LETTER M" + - "INUS SIGNBREVEDOT ABOVERING ABOVEOGONEKSMALL TILDEDOUBLE ACUTE ACCENTMOD" + - "IFIER LETTER RHOTIC HOOKMODIFIER LETTER CROSS ACCENTMODIFIER LETTER SMAL" + - "L GAMMAMODIFIER LETTER SMALL LMODIFIER LETTER SMALL SMODIFIER LETTER SMA" + - "LL XMODIFIER LETTER SMALL REVERSED GLOTTAL STOPMODIFIER LETTER EXTRA-HIG" + - "H TONE BARMODIFIER LETTER HIGH TONE BARMODIFIER LETTER MID TONE BARMODIF" + - "IER LETTER LOW TONE BARMODIFIER LETTER EXTRA-LOW TONE BARMODIFIER LETTER" + - " YIN DEPARTING TONE MARKMODIFIER LETTER YANG DEPARTING TONE MARKMODIFIER" + - " LETTER VOICINGMODIFIER LETTER UNASPIRATEDMODIFIER LETTER DOUBLE APOSTRO" + - "PHEMODIFIER LETTER LOW DOWN ARROWHEADMODIFIER LETTER LOW UP ARROWHEADMOD" + - "IFIER LETTER LOW LEFT ARROWHEADMODIFIER LETTER LOW RIGHT ARROWHEADMODIFI" + - "ER LETTER LOW RINGMODIFIER LETTER MIDDLE GRAVE ACCENTMODIFIER LETTER MID" + - "DLE DOUBLE GRAVE ACCENTMODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENTMODIFIE" + - "R LETTER LOW TILDEMODIFIER LETTER RAISED COLONMODIFIER LETTER BEGIN HIGH" + - " TONEMODIFIER LETTER END HIGH TONEMODIFIER LETTER BEGIN LOW TONEMODIFIER" + - " LETTER END LOW TONEMODIFIER LETTER SHELFMODIFIER LETTER OPEN SHELFMODIF" + - "IER LETTER LOW LEFT ARROWCOMBINING GRAVE ACCENTCOMBINING ACUTE ACCENTCOM" + - "BINING CIRCUMFLEX ACCENTCOMBINING TILDECOMBINING MACRONCOMBINING OVERLIN" + - "ECOMBINING BREVECOMBINING DOT ABOVECOMBINING DIAERESISCOMBINING HOOK ABO" + - "VECOMBINING RING ABOVECOMBINING DOUBLE ACUTE ACCENTCOMBINING CARONCOMBIN" + - "ING VERTICAL LINE ABOVECOMBINING DOUBLE VERTICAL LINE ABOVECOMBINING DOU" + - "BLE GRAVE ACCENTCOMBINING CANDRABINDUCOMBINING INVERTED BREVECOMBINING T" + - "URNED COMMA ABOVECOMBINING COMMA ABOVECOMBINING REVERSED COMMA ABOVECOMB" + - "INING COMMA ABOVE RIGHTCOMBINING GRAVE ACCENT BELOWCOMBINING ACUTE ACCEN" + - "T BELOWCOMBINING LEFT TACK BELOWCOMBINING RIGHT TACK BELOWCOMBINING LEFT" + - " ANGLE ABOVECOMBINING HORNCOMBINING LEFT HALF RING BELOWCOMBINING UP TAC" + - "K BELOWCOMBINING DOWN TACK BELOWCOMBINING PLUS SIGN BELOWCOMBINING MINUS" + - " SIGN BELOWCOMBINING PALATALIZED HOOK BELOWCOMBINING RETROFLEX HOOK BELO" + - "WCOMBINING DOT BELOWCOMBINING DIAERESIS BELOWCOMBINING RING BELOWCOMBINI" + - "NG COMMA BELOWCOMBINING CEDILLACOMBINING OGONEKCOMBINING VERTICAL LINE B" + - "ELOWCOMBINING BRIDGE BELOWCOMBINING INVERTED DOUBLE ARCH BELOWCOMBINING " + - "CARON BELOWCOMBINING CIRCUMFLEX ACCENT BELOWCOMBINING BREVE BELOWCOMBINI" + - "NG INVERTED BREVE BELOWCOMBINING TILDE BELOWCOMBINING MACRON BELOWCOMBIN" + - "ING LOW LINECOMBINING DOUBLE LOW LINECOMBINING TILDE OVERLAYCOMBINING SH" + - "ORT STROKE OVERLAYCOMBINING LONG STROKE OVERLAYCOMBINING SHORT SOLIDUS O" + - "VERLAYCOMBINING LONG SOLIDUS OVERLAYCOMBINING RIGHT HALF RING BELOWCOMBI" + - "NING INVERTED BRIDGE BELOWCOMBINING SQUARE BELOWCOMBINING SEAGULL BELOWC" + - "OMBINING X ABOVECOMBINING VERTICAL TILDECOMBINING DOUBLE OVERLINECOMBINI" + - "NG GRAVE TONE MARKCOMBINING ACUTE TONE MARKCOMBINING GREEK PERISPOMENICO" + - "MBINING GREEK KORONISCOMBINING GREEK DIALYTIKA TONOSCOMBINING GREEK YPOG" + - "EGRAMMENICOMBINING BRIDGE ABOVECOMBINING EQUALS SIGN BELOWCOMBINING DOUB" + - "LE VERTICAL LINE BELOWCOMBINING LEFT ANGLE BELOWCOMBINING NOT TILDE ABOV") + ("" + - "ECOMBINING HOMOTHETIC ABOVECOMBINING ALMOST EQUAL TO ABOVECOMBINING LEFT" + - " RIGHT ARROW BELOWCOMBINING UPWARDS ARROW BELOWCOMBINING GRAPHEME JOINER" + - "COMBINING RIGHT ARROWHEAD ABOVECOMBINING LEFT HALF RING ABOVECOMBINING F" + - "ERMATACOMBINING X BELOWCOMBINING LEFT ARROWHEAD BELOWCOMBINING RIGHT ARR" + - "OWHEAD BELOWCOMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOWCOMBINING RI" + - "GHT HALF RING ABOVECOMBINING DOT ABOVE RIGHTCOMBINING ASTERISK BELOWCOMB" + - "INING DOUBLE RING BELOWCOMBINING ZIGZAG ABOVECOMBINING DOUBLE BREVE BELO" + - "WCOMBINING DOUBLE BREVECOMBINING DOUBLE MACRONCOMBINING DOUBLE MACRON BE" + - "LOWCOMBINING DOUBLE TILDECOMBINING DOUBLE INVERTED BREVECOMBINING DOUBLE" + - " RIGHTWARDS ARROW BELOWCOMBINING LATIN SMALL LETTER ACOMBINING LATIN SMA" + - "LL LETTER ECOMBINING LATIN SMALL LETTER ICOMBINING LATIN SMALL LETTER OC" + - "OMBINING LATIN SMALL LETTER UCOMBINING LATIN SMALL LETTER CCOMBINING LAT" + - "IN SMALL LETTER DCOMBINING LATIN SMALL LETTER HCOMBINING LATIN SMALL LET" + - "TER MCOMBINING LATIN SMALL LETTER RCOMBINING LATIN SMALL LETTER TCOMBINI" + - "NG LATIN SMALL LETTER VCOMBINING LATIN SMALL LETTER XGREEK CAPITAL LETTE" + - "R HETAGREEK SMALL LETTER HETAGREEK CAPITAL LETTER ARCHAIC SAMPIGREEK SMA" + - "LL LETTER ARCHAIC SAMPIGREEK NUMERAL SIGNGREEK LOWER NUMERAL SIGNGREEK C" + - "APITAL LETTER PAMPHYLIAN DIGAMMAGREEK SMALL LETTER PAMPHYLIAN DIGAMMAGRE" + - "EK YPOGEGRAMMENIGREEK SMALL REVERSED LUNATE SIGMA SYMBOLGREEK SMALL DOTT" + - "ED LUNATE SIGMA SYMBOLGREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOLGRE" + - "EK QUESTION MARKGREEK CAPITAL LETTER YOTGREEK TONOSGREEK DIALYTIKA TONOS" + - "GREEK CAPITAL LETTER ALPHA WITH TONOSGREEK ANO TELEIAGREEK CAPITAL LETTE" + - "R EPSILON WITH TONOSGREEK CAPITAL LETTER ETA WITH TONOSGREEK CAPITAL LET" + - "TER IOTA WITH TONOSGREEK CAPITAL LETTER OMICRON WITH TONOSGREEK CAPITAL " + - "LETTER UPSILON WITH TONOSGREEK CAPITAL LETTER OMEGA WITH TONOSGREEK SMAL" + - "L LETTER IOTA WITH DIALYTIKA AND TONOSGREEK CAPITAL LETTER ALPHAGREEK CA" + - "PITAL LETTER BETAGREEK CAPITAL LETTER GAMMAGREEK CAPITAL LETTER DELTAGRE" + - "EK CAPITAL LETTER EPSILONGREEK CAPITAL LETTER ZETAGREEK CAPITAL LETTER E" + - "TAGREEK CAPITAL LETTER THETAGREEK CAPITAL LETTER IOTAGREEK CAPITAL LETTE" + - "R KAPPAGREEK CAPITAL LETTER LAMDAGREEK CAPITAL LETTER MUGREEK CAPITAL LE" + - "TTER NUGREEK CAPITAL LETTER XIGREEK CAPITAL LETTER OMICRONGREEK CAPITAL " + - "LETTER PIGREEK CAPITAL LETTER RHOGREEK CAPITAL LETTER SIGMAGREEK CAPITAL" + - " LETTER TAUGREEK CAPITAL LETTER UPSILONGREEK CAPITAL LETTER PHIGREEK CAP" + - "ITAL LETTER CHIGREEK CAPITAL LETTER PSIGREEK CAPITAL LETTER OMEGAGREEK C" + - "APITAL LETTER IOTA WITH DIALYTIKAGREEK CAPITAL LETTER UPSILON WITH DIALY" + - "TIKAGREEK SMALL LETTER ALPHA WITH TONOSGREEK SMALL LETTER EPSILON WITH T" + - "ONOSGREEK SMALL LETTER ETA WITH TONOSGREEK SMALL LETTER IOTA WITH TONOSG" + - "REEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOSGREEK SMALL LETTER ALP" + - "HAGREEK SMALL LETTER BETAGREEK SMALL LETTER GAMMAGREEK SMALL LETTER DELT" + - "AGREEK SMALL LETTER EPSILONGREEK SMALL LETTER ZETAGREEK SMALL LETTER ETA" + - "GREEK SMALL LETTER THETAGREEK SMALL LETTER IOTAGREEK SMALL LETTER KAPPAG" + - "REEK SMALL LETTER LAMDAGREEK SMALL LETTER MUGREEK SMALL LETTER NUGREEK S" + - "MALL LETTER XIGREEK SMALL LETTER OMICRONGREEK SMALL LETTER PIGREEK SMALL" + - " LETTER RHOGREEK SMALL LETTER FINAL SIGMAGREEK SMALL LETTER SIGMAGREEK S" + - "MALL LETTER TAUGREEK SMALL LETTER UPSILONGREEK SMALL LETTER PHIGREEK SMA" + - "LL LETTER CHIGREEK SMALL LETTER PSIGREEK SMALL LETTER OMEGAGREEK SMALL L" + - "ETTER IOTA WITH DIALYTIKAGREEK SMALL LETTER UPSILON WITH DIALYTIKAGREEK " + - "SMALL LETTER OMICRON WITH TONOSGREEK SMALL LETTER UPSILON WITH TONOSGREE" + - "K SMALL LETTER OMEGA WITH TONOSGREEK CAPITAL KAI SYMBOLGREEK BETA SYMBOL" + - "GREEK THETA SYMBOLGREEK UPSILON WITH HOOK SYMBOLGREEK UPSILON WITH ACUTE" + - " AND HOOK SYMBOLGREEK UPSILON WITH DIAERESIS AND HOOK SYMBOLGREEK PHI SY" + - "MBOLGREEK PI SYMBOLGREEK KAI SYMBOLGREEK LETTER ARCHAIC KOPPAGREEK SMALL" + - " LETTER ARCHAIC KOPPAGREEK LETTER STIGMAGREEK SMALL LETTER STIGMAGREEK L" + - "ETTER DIGAMMAGREEK SMALL LETTER DIGAMMAGREEK LETTER KOPPAGREEK SMALL LET" + - "TER KOPPAGREEK LETTER SAMPIGREEK SMALL LETTER SAMPICOPTIC CAPITAL LETTER" + - " SHEICOPTIC SMALL LETTER SHEICOPTIC CAPITAL LETTER FEICOPTIC SMALL LETTE" + - "R FEICOPTIC CAPITAL LETTER KHEICOPTIC SMALL LETTER KHEICOPTIC CAPITAL LE" + - "TTER HORICOPTIC SMALL LETTER HORICOPTIC CAPITAL LETTER GANGIACOPTIC SMAL" + - "L LETTER GANGIACOPTIC CAPITAL LETTER SHIMACOPTIC SMALL LETTER SHIMACOPTI" + - "C CAPITAL LETTER DEICOPTIC SMALL LETTER DEIGREEK KAPPA SYMBOLGREEK RHO S" + - "YMBOLGREEK LUNATE SIGMA SYMBOLGREEK LETTER YOTGREEK CAPITAL THETA SYMBOL" + - "GREEK LUNATE EPSILON SYMBOLGREEK REVERSED LUNATE EPSILON SYMBOLGREEK CAP" + - "ITAL LETTER SHOGREEK SMALL LETTER SHOGREEK CAPITAL LUNATE SIGMA SYMBOLGR" + - "EEK CAPITAL LETTER SANGREEK SMALL LETTER SANGREEK RHO WITH STROKE SYMBOL") + ("" + - "GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOLGREEK CAPITAL DOTTED LUNATE SI" + - "GMA SYMBOLGREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOLCYRILLIC CAPI" + - "TAL LETTER IE WITH GRAVECYRILLIC CAPITAL LETTER IOCYRILLIC CAPITAL LETTE" + - "R DJECYRILLIC CAPITAL LETTER GJECYRILLIC CAPITAL LETTER UKRAINIAN IECYRI" + - "LLIC CAPITAL LETTER DZECYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN IC" + - "YRILLIC CAPITAL LETTER YICYRILLIC CAPITAL LETTER JECYRILLIC CAPITAL LETT" + - "ER LJECYRILLIC CAPITAL LETTER NJECYRILLIC CAPITAL LETTER TSHECYRILLIC CA" + - "PITAL LETTER KJECYRILLIC CAPITAL LETTER I WITH GRAVECYRILLIC CAPITAL LET" + - "TER SHORT UCYRILLIC CAPITAL LETTER DZHECYRILLIC CAPITAL LETTER ACYRILLIC" + - " CAPITAL LETTER BECYRILLIC CAPITAL LETTER VECYRILLIC CAPITAL LETTER GHEC" + - "YRILLIC CAPITAL LETTER DECYRILLIC CAPITAL LETTER IECYRILLIC CAPITAL LETT" + - "ER ZHECYRILLIC CAPITAL LETTER ZECYRILLIC CAPITAL LETTER ICYRILLIC CAPITA" + - "L LETTER SHORT ICYRILLIC CAPITAL LETTER KACYRILLIC CAPITAL LETTER ELCYRI" + - "LLIC CAPITAL LETTER EMCYRILLIC CAPITAL LETTER ENCYRILLIC CAPITAL LETTER " + - "OCYRILLIC CAPITAL LETTER PECYRILLIC CAPITAL LETTER ERCYRILLIC CAPITAL LE" + - "TTER ESCYRILLIC CAPITAL LETTER TECYRILLIC CAPITAL LETTER UCYRILLIC CAPIT" + - "AL LETTER EFCYRILLIC CAPITAL LETTER HACYRILLIC CAPITAL LETTER TSECYRILLI" + - "C CAPITAL LETTER CHECYRILLIC CAPITAL LETTER SHACYRILLIC CAPITAL LETTER S" + - "HCHACYRILLIC CAPITAL LETTER HARD SIGNCYRILLIC CAPITAL LETTER YERUCYRILLI" + - "C CAPITAL LETTER SOFT SIGNCYRILLIC CAPITAL LETTER ECYRILLIC CAPITAL LETT" + - "ER YUCYRILLIC CAPITAL LETTER YACYRILLIC SMALL LETTER ACYRILLIC SMALL LET" + - "TER BECYRILLIC SMALL LETTER VECYRILLIC SMALL LETTER GHECYRILLIC SMALL LE" + - "TTER DECYRILLIC SMALL LETTER IECYRILLIC SMALL LETTER ZHECYRILLIC SMALL L" + - "ETTER ZECYRILLIC SMALL LETTER ICYRILLIC SMALL LETTER SHORT ICYRILLIC SMA" + - "LL LETTER KACYRILLIC SMALL LETTER ELCYRILLIC SMALL LETTER EMCYRILLIC SMA" + - "LL LETTER ENCYRILLIC SMALL LETTER OCYRILLIC SMALL LETTER PECYRILLIC SMAL" + - "L LETTER ERCYRILLIC SMALL LETTER ESCYRILLIC SMALL LETTER TECYRILLIC SMAL" + - "L LETTER UCYRILLIC SMALL LETTER EFCYRILLIC SMALL LETTER HACYRILLIC SMALL" + - " LETTER TSECYRILLIC SMALL LETTER CHECYRILLIC SMALL LETTER SHACYRILLIC SM" + - "ALL LETTER SHCHACYRILLIC SMALL LETTER HARD SIGNCYRILLIC SMALL LETTER YER" + - "UCYRILLIC SMALL LETTER SOFT SIGNCYRILLIC SMALL LETTER ECYRILLIC SMALL LE" + - "TTER YUCYRILLIC SMALL LETTER YACYRILLIC SMALL LETTER IE WITH GRAVECYRILL" + - "IC SMALL LETTER IOCYRILLIC SMALL LETTER DJECYRILLIC SMALL LETTER GJECYRI" + - "LLIC SMALL LETTER UKRAINIAN IECYRILLIC SMALL LETTER DZECYRILLIC SMALL LE" + - "TTER BYELORUSSIAN-UKRAINIAN ICYRILLIC SMALL LETTER YICYRILLIC SMALL LETT" + - "ER JECYRILLIC SMALL LETTER LJECYRILLIC SMALL LETTER NJECYRILLIC SMALL LE" + - "TTER TSHECYRILLIC SMALL LETTER KJECYRILLIC SMALL LETTER I WITH GRAVECYRI" + - "LLIC SMALL LETTER SHORT UCYRILLIC SMALL LETTER DZHECYRILLIC CAPITAL LETT" + - "ER OMEGACYRILLIC SMALL LETTER OMEGACYRILLIC CAPITAL LETTER YATCYRILLIC S" + - "MALL LETTER YATCYRILLIC CAPITAL LETTER IOTIFIED ECYRILLIC SMALL LETTER I" + - "OTIFIED ECYRILLIC CAPITAL LETTER LITTLE YUSCYRILLIC SMALL LETTER LITTLE " + - "YUSCYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUSCYRILLIC SMALL LETTER IOTI" + - "FIED LITTLE YUSCYRILLIC CAPITAL LETTER BIG YUSCYRILLIC SMALL LETTER BIG " + - "YUSCYRILLIC CAPITAL LETTER IOTIFIED BIG YUSCYRILLIC SMALL LETTER IOTIFIE" + - "D BIG YUSCYRILLIC CAPITAL LETTER KSICYRILLIC SMALL LETTER KSICYRILLIC CA" + - "PITAL LETTER PSICYRILLIC SMALL LETTER PSICYRILLIC CAPITAL LETTER FITACYR" + - "ILLIC SMALL LETTER FITACYRILLIC CAPITAL LETTER IZHITSACYRILLIC SMALL LET" + - "TER IZHITSACYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENTCYRIL" + - "LIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENTCYRILLIC CAPITAL LETTER" + - " UKCYRILLIC SMALL LETTER UKCYRILLIC CAPITAL LETTER ROUND OMEGACYRILLIC S" + - "MALL LETTER ROUND OMEGACYRILLIC CAPITAL LETTER OMEGA WITH TITLOCYRILLIC " + - "SMALL LETTER OMEGA WITH TITLOCYRILLIC CAPITAL LETTER OTCYRILLIC SMALL LE" + - "TTER OTCYRILLIC CAPITAL LETTER KOPPACYRILLIC SMALL LETTER KOPPACYRILLIC " + - "THOUSANDS SIGNCOMBINING CYRILLIC TITLOCOMBINING CYRILLIC PALATALIZATIONC" + - "OMBINING CYRILLIC DASIA PNEUMATACOMBINING CYRILLIC PSILI PNEUMATACOMBINI" + - "NG CYRILLIC POKRYTIECOMBINING CYRILLIC HUNDRED THOUSANDS SIGNCOMBINING C" + - "YRILLIC MILLIONS SIGNCYRILLIC CAPITAL LETTER SHORT I WITH TAILCYRILLIC S" + - "MALL LETTER SHORT I WITH TAILCYRILLIC CAPITAL LETTER SEMISOFT SIGNCYRILL" + - "IC SMALL LETTER SEMISOFT SIGNCYRILLIC CAPITAL LETTER ER WITH TICKCYRILLI" + - "C SMALL LETTER ER WITH TICKCYRILLIC CAPITAL LETTER GHE WITH UPTURNCYRILL" + - "IC SMALL LETTER GHE WITH UPTURNCYRILLIC CAPITAL LETTER GHE WITH STROKECY" + - "RILLIC SMALL LETTER GHE WITH STROKECYRILLIC CAPITAL LETTER GHE WITH MIDD" + - "LE HOOKCYRILLIC SMALL LETTER GHE WITH MIDDLE HOOKCYRILLIC CAPITAL LETTER" + - " ZHE WITH DESCENDERCYRILLIC SMALL LETTER ZHE WITH DESCENDERCYRILLIC CAPI") + ("" + - "TAL LETTER ZE WITH DESCENDERCYRILLIC SMALL LETTER ZE WITH DESCENDERCYRIL" + - "LIC CAPITAL LETTER KA WITH DESCENDERCYRILLIC SMALL LETTER KA WITH DESCEN" + - "DERCYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKECYRILLIC SMALL LETTER " + - "KA WITH VERTICAL STROKECYRILLIC CAPITAL LETTER KA WITH STROKECYRILLIC SM" + - "ALL LETTER KA WITH STROKECYRILLIC CAPITAL LETTER BASHKIR KACYRILLIC SMAL" + - "L LETTER BASHKIR KACYRILLIC CAPITAL LETTER EN WITH DESCENDERCYRILLIC SMA" + - "LL LETTER EN WITH DESCENDERCYRILLIC CAPITAL LIGATURE EN GHECYRILLIC SMAL" + - "L LIGATURE EN GHECYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOKCYRILLIC SMA" + - "LL LETTER PE WITH MIDDLE HOOKCYRILLIC CAPITAL LETTER ABKHASIAN HACYRILLI" + - "C SMALL LETTER ABKHASIAN HACYRILLIC CAPITAL LETTER ES WITH DESCENDERCYRI" + - "LLIC SMALL LETTER ES WITH DESCENDERCYRILLIC CAPITAL LETTER TE WITH DESCE" + - "NDERCYRILLIC SMALL LETTER TE WITH DESCENDERCYRILLIC CAPITAL LETTER STRAI" + - "GHT UCYRILLIC SMALL LETTER STRAIGHT UCYRILLIC CAPITAL LETTER STRAIGHT U " + - "WITH STROKECYRILLIC SMALL LETTER STRAIGHT U WITH STROKECYRILLIC CAPITAL " + - "LETTER HA WITH DESCENDERCYRILLIC SMALL LETTER HA WITH DESCENDERCYRILLIC " + - "CAPITAL LIGATURE TE TSECYRILLIC SMALL LIGATURE TE TSECYRILLIC CAPITAL LE" + - "TTER CHE WITH DESCENDERCYRILLIC SMALL LETTER CHE WITH DESCENDERCYRILLIC " + - "CAPITAL LETTER CHE WITH VERTICAL STROKECYRILLIC SMALL LETTER CHE WITH VE" + - "RTICAL STROKECYRILLIC CAPITAL LETTER SHHACYRILLIC SMALL LETTER SHHACYRIL" + - "LIC CAPITAL LETTER ABKHASIAN CHECYRILLIC SMALL LETTER ABKHASIAN CHECYRIL" + - "LIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDERCYRILLIC SMALL LETTER ABK" + - "HASIAN CHE WITH DESCENDERCYRILLIC LETTER PALOCHKACYRILLIC CAPITAL LETTER" + - " ZHE WITH BREVECYRILLIC SMALL LETTER ZHE WITH BREVECYRILLIC CAPITAL LETT" + - "ER KA WITH HOOKCYRILLIC SMALL LETTER KA WITH HOOKCYRILLIC CAPITAL LETTER" + - " EL WITH TAILCYRILLIC SMALL LETTER EL WITH TAILCYRILLIC CAPITAL LETTER E" + - "N WITH HOOKCYRILLIC SMALL LETTER EN WITH HOOKCYRILLIC CAPITAL LETTER EN " + - "WITH TAILCYRILLIC SMALL LETTER EN WITH TAILCYRILLIC CAPITAL LETTER KHAKA" + - "SSIAN CHECYRILLIC SMALL LETTER KHAKASSIAN CHECYRILLIC CAPITAL LETTER EM " + - "WITH TAILCYRILLIC SMALL LETTER EM WITH TAILCYRILLIC SMALL LETTER PALOCHK" + - "ACYRILLIC CAPITAL LETTER A WITH BREVECYRILLIC SMALL LETTER A WITH BREVEC" + - "YRILLIC CAPITAL LETTER A WITH DIAERESISCYRILLIC SMALL LETTER A WITH DIAE" + - "RESISCYRILLIC CAPITAL LIGATURE A IECYRILLIC SMALL LIGATURE A IECYRILLIC " + - "CAPITAL LETTER IE WITH BREVECYRILLIC SMALL LETTER IE WITH BREVECYRILLIC " + - "CAPITAL LETTER SCHWACYRILLIC SMALL LETTER SCHWACYRILLIC CAPITAL LETTER S" + - "CHWA WITH DIAERESISCYRILLIC SMALL LETTER SCHWA WITH DIAERESISCYRILLIC CA" + - "PITAL LETTER ZHE WITH DIAERESISCYRILLIC SMALL LETTER ZHE WITH DIAERESISC" + - "YRILLIC CAPITAL LETTER ZE WITH DIAERESISCYRILLIC SMALL LETTER ZE WITH DI" + - "AERESISCYRILLIC CAPITAL LETTER ABKHASIAN DZECYRILLIC SMALL LETTER ABKHAS" + - "IAN DZECYRILLIC CAPITAL LETTER I WITH MACRONCYRILLIC SMALL LETTER I WITH" + - " MACRONCYRILLIC CAPITAL LETTER I WITH DIAERESISCYRILLIC SMALL LETTER I W" + - "ITH DIAERESISCYRILLIC CAPITAL LETTER O WITH DIAERESISCYRILLIC SMALL LETT" + - "ER O WITH DIAERESISCYRILLIC CAPITAL LETTER BARRED OCYRILLIC SMALL LETTER" + - " BARRED OCYRILLIC CAPITAL LETTER BARRED O WITH DIAERESISCYRILLIC SMALL L" + - "ETTER BARRED O WITH DIAERESISCYRILLIC CAPITAL LETTER E WITH DIAERESISCYR" + - "ILLIC SMALL LETTER E WITH DIAERESISCYRILLIC CAPITAL LETTER U WITH MACRON" + - "CYRILLIC SMALL LETTER U WITH MACRONCYRILLIC CAPITAL LETTER U WITH DIAERE" + - "SISCYRILLIC SMALL LETTER U WITH DIAERESISCYRILLIC CAPITAL LETTER U WITH " + - "DOUBLE ACUTECYRILLIC SMALL LETTER U WITH DOUBLE ACUTECYRILLIC CAPITAL LE" + - "TTER CHE WITH DIAERESISCYRILLIC SMALL LETTER CHE WITH DIAERESISCYRILLIC " + - "CAPITAL LETTER GHE WITH DESCENDERCYRILLIC SMALL LETTER GHE WITH DESCENDE" + - "RCYRILLIC CAPITAL LETTER YERU WITH DIAERESISCYRILLIC SMALL LETTER YERU W" + - "ITH DIAERESISCYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOKCYRILLIC SM" + - "ALL LETTER GHE WITH STROKE AND HOOKCYRILLIC CAPITAL LETTER HA WITH HOOKC" + - "YRILLIC SMALL LETTER HA WITH HOOKCYRILLIC CAPITAL LETTER HA WITH STROKEC" + - "YRILLIC SMALL LETTER HA WITH STROKECYRILLIC CAPITAL LETTER KOMI DECYRILL" + - "IC SMALL LETTER KOMI DECYRILLIC CAPITAL LETTER KOMI DJECYRILLIC SMALL LE" + - "TTER KOMI DJECYRILLIC CAPITAL LETTER KOMI ZJECYRILLIC SMALL LETTER KOMI " + - "ZJECYRILLIC CAPITAL LETTER KOMI DZJECYRILLIC SMALL LETTER KOMI DZJECYRIL" + - "LIC CAPITAL LETTER KOMI LJECYRILLIC SMALL LETTER KOMI LJECYRILLIC CAPITA" + - "L LETTER KOMI NJECYRILLIC SMALL LETTER KOMI NJECYRILLIC CAPITAL LETTER K" + - "OMI SJECYRILLIC SMALL LETTER KOMI SJECYRILLIC CAPITAL LETTER KOMI TJECYR" + - "ILLIC SMALL LETTER KOMI TJECYRILLIC CAPITAL LETTER REVERSED ZECYRILLIC S" + - "MALL LETTER REVERSED ZECYRILLIC CAPITAL LETTER EL WITH HOOKCYRILLIC SMAL" + - "L LETTER EL WITH HOOKCYRILLIC CAPITAL LETTER LHACYRILLIC SMALL LETTER LH") + ("" + - "ACYRILLIC CAPITAL LETTER RHACYRILLIC SMALL LETTER RHACYRILLIC CAPITAL LE" + - "TTER YAECYRILLIC SMALL LETTER YAECYRILLIC CAPITAL LETTER QACYRILLIC SMAL" + - "L LETTER QACYRILLIC CAPITAL LETTER WECYRILLIC SMALL LETTER WECYRILLIC CA" + - "PITAL LETTER ALEUT KACYRILLIC SMALL LETTER ALEUT KACYRILLIC CAPITAL LETT" + - "ER EL WITH MIDDLE HOOKCYRILLIC SMALL LETTER EL WITH MIDDLE HOOKCYRILLIC " + - "CAPITAL LETTER EN WITH MIDDLE HOOKCYRILLIC SMALL LETTER EN WITH MIDDLE H" + - "OOKCYRILLIC CAPITAL LETTER PE WITH DESCENDERCYRILLIC SMALL LETTER PE WIT" + - "H DESCENDERCYRILLIC CAPITAL LETTER SHHA WITH DESCENDERCYRILLIC SMALL LET" + - "TER SHHA WITH DESCENDERCYRILLIC CAPITAL LETTER EN WITH LEFT HOOKCYRILLIC" + - " SMALL LETTER EN WITH LEFT HOOKCYRILLIC CAPITAL LETTER DZZHECYRILLIC SMA" + - "LL LETTER DZZHECYRILLIC CAPITAL LETTER DCHECYRILLIC SMALL LETTER DCHECYR" + - "ILLIC CAPITAL LETTER EL WITH DESCENDERCYRILLIC SMALL LETTER EL WITH DESC" + - "ENDERARMENIAN CAPITAL LETTER AYBARMENIAN CAPITAL LETTER BENARMENIAN CAPI" + - "TAL LETTER GIMARMENIAN CAPITAL LETTER DAARMENIAN CAPITAL LETTER ECHARMEN" + - "IAN CAPITAL LETTER ZAARMENIAN CAPITAL LETTER EHARMENIAN CAPITAL LETTER E" + - "TARMENIAN CAPITAL LETTER TOARMENIAN CAPITAL LETTER ZHEARMENIAN CAPITAL L" + - "ETTER INIARMENIAN CAPITAL LETTER LIWNARMENIAN CAPITAL LETTER XEHARMENIAN" + - " CAPITAL LETTER CAARMENIAN CAPITAL LETTER KENARMENIAN CAPITAL LETTER HOA" + - "RMENIAN CAPITAL LETTER JAARMENIAN CAPITAL LETTER GHADARMENIAN CAPITAL LE" + - "TTER CHEHARMENIAN CAPITAL LETTER MENARMENIAN CAPITAL LETTER YIARMENIAN C" + - "APITAL LETTER NOWARMENIAN CAPITAL LETTER SHAARMENIAN CAPITAL LETTER VOAR" + - "MENIAN CAPITAL LETTER CHAARMENIAN CAPITAL LETTER PEHARMENIAN CAPITAL LET" + - "TER JHEHARMENIAN CAPITAL LETTER RAARMENIAN CAPITAL LETTER SEHARMENIAN CA" + - "PITAL LETTER VEWARMENIAN CAPITAL LETTER TIWNARMENIAN CAPITAL LETTER REHA" + - "RMENIAN CAPITAL LETTER COARMENIAN CAPITAL LETTER YIWNARMENIAN CAPITAL LE" + - "TTER PIWRARMENIAN CAPITAL LETTER KEHARMENIAN CAPITAL LETTER OHARMENIAN C" + - "APITAL LETTER FEHARMENIAN MODIFIER LETTER LEFT HALF RINGARMENIAN APOSTRO" + - "PHEARMENIAN EMPHASIS MARKARMENIAN EXCLAMATION MARKARMENIAN COMMAARMENIAN" + - " QUESTION MARKARMENIAN ABBREVIATION MARKARMENIAN SMALL LETTER AYBARMENIA" + - "N SMALL LETTER BENARMENIAN SMALL LETTER GIMARMENIAN SMALL LETTER DAARMEN" + - "IAN SMALL LETTER ECHARMENIAN SMALL LETTER ZAARMENIAN SMALL LETTER EHARME" + - "NIAN SMALL LETTER ETARMENIAN SMALL LETTER TOARMENIAN SMALL LETTER ZHEARM" + - "ENIAN SMALL LETTER INIARMENIAN SMALL LETTER LIWNARMENIAN SMALL LETTER XE" + - "HARMENIAN SMALL LETTER CAARMENIAN SMALL LETTER KENARMENIAN SMALL LETTER " + - "HOARMENIAN SMALL LETTER JAARMENIAN SMALL LETTER GHADARMENIAN SMALL LETTE" + - "R CHEHARMENIAN SMALL LETTER MENARMENIAN SMALL LETTER YIARMENIAN SMALL LE" + - "TTER NOWARMENIAN SMALL LETTER SHAARMENIAN SMALL LETTER VOARMENIAN SMALL " + - "LETTER CHAARMENIAN SMALL LETTER PEHARMENIAN SMALL LETTER JHEHARMENIAN SM" + - "ALL LETTER RAARMENIAN SMALL LETTER SEHARMENIAN SMALL LETTER VEWARMENIAN " + - "SMALL LETTER TIWNARMENIAN SMALL LETTER REHARMENIAN SMALL LETTER COARMENI" + - "AN SMALL LETTER YIWNARMENIAN SMALL LETTER PIWRARMENIAN SMALL LETTER KEHA" + - "RMENIAN SMALL LETTER OHARMENIAN SMALL LETTER FEHARMENIAN SMALL LIGATURE " + - "ECH YIWNARMENIAN FULL STOPARMENIAN HYPHENRIGHT-FACING ARMENIAN ETERNITY " + - "SIGNLEFT-FACING ARMENIAN ETERNITY SIGNARMENIAN DRAM SIGNHEBREW ACCENT ET" + - "NAHTAHEBREW ACCENT SEGOLHEBREW ACCENT SHALSHELETHEBREW ACCENT ZAQEF QATA" + - "NHEBREW ACCENT ZAQEF GADOLHEBREW ACCENT TIPEHAHEBREW ACCENT REVIAHEBREW " + - "ACCENT ZARQAHEBREW ACCENT PASHTAHEBREW ACCENT YETIVHEBREW ACCENT TEVIRHE" + - "BREW ACCENT GERESHHEBREW ACCENT GERESH MUQDAMHEBREW ACCENT GERSHAYIMHEBR" + - "EW ACCENT QARNEY PARAHEBREW ACCENT TELISHA GEDOLAHEBREW ACCENT PAZERHEBR" + - "EW ACCENT ATNAH HAFUKHHEBREW ACCENT MUNAHHEBREW ACCENT MAHAPAKHHEBREW AC" + - "CENT MERKHAHEBREW ACCENT MERKHA KEFULAHEBREW ACCENT DARGAHEBREW ACCENT Q" + - "ADMAHEBREW ACCENT TELISHA QETANAHEBREW ACCENT YERAH BEN YOMOHEBREW ACCEN" + - "T OLEHEBREW ACCENT ILUYHEBREW ACCENT DEHIHEBREW ACCENT ZINORHEBREW MARK " + - "MASORA CIRCLEHEBREW POINT SHEVAHEBREW POINT HATAF SEGOLHEBREW POINT HATA" + - "F PATAHHEBREW POINT HATAF QAMATSHEBREW POINT HIRIQHEBREW POINT TSEREHEBR" + - "EW POINT SEGOLHEBREW POINT PATAHHEBREW POINT QAMATSHEBREW POINT HOLAMHEB" + - "REW POINT HOLAM HASER FOR VAVHEBREW POINT QUBUTSHEBREW POINT DAGESH OR M" + - "APIQHEBREW POINT METEGHEBREW PUNCTUATION MAQAFHEBREW POINT RAFEHEBREW PU" + - "NCTUATION PASEQHEBREW POINT SHIN DOTHEBREW POINT SIN DOTHEBREW PUNCTUATI" + - "ON SOF PASUQHEBREW MARK UPPER DOTHEBREW MARK LOWER DOTHEBREW PUNCTUATION" + - " NUN HAFUKHAHEBREW POINT QAMATS QATANHEBREW LETTER ALEFHEBREW LETTER BET" + - "HEBREW LETTER GIMELHEBREW LETTER DALETHEBREW LETTER HEHEBREW LETTER VAVH" + - "EBREW LETTER ZAYINHEBREW LETTER HETHEBREW LETTER TETHEBREW LETTER YODHEB" + - "REW LETTER FINAL KAFHEBREW LETTER KAFHEBREW LETTER LAMEDHEBREW LETTER FI") + ("" + - "NAL MEMHEBREW LETTER MEMHEBREW LETTER FINAL NUNHEBREW LETTER NUNHEBREW L" + - "ETTER SAMEKHHEBREW LETTER AYINHEBREW LETTER FINAL PEHEBREW LETTER PEHEBR" + - "EW LETTER FINAL TSADIHEBREW LETTER TSADIHEBREW LETTER QOFHEBREW LETTER R" + - "ESHHEBREW LETTER SHINHEBREW LETTER TAVHEBREW LIGATURE YIDDISH DOUBLE VAV" + - "HEBREW LIGATURE YIDDISH VAV YODHEBREW LIGATURE YIDDISH DOUBLE YODHEBREW " + - "PUNCTUATION GERESHHEBREW PUNCTUATION GERSHAYIMARABIC NUMBER SIGNARABIC S" + - "IGN SANAHARABIC FOOTNOTE MARKERARABIC SIGN SAFHAARABIC SIGN SAMVATARABIC" + - " NUMBER MARK ABOVEARABIC-INDIC CUBE ROOTARABIC-INDIC FOURTH ROOTARABIC R" + - "AYARABIC-INDIC PER MILLE SIGNARABIC-INDIC PER TEN THOUSAND SIGNAFGHANI S" + - "IGNARABIC COMMAARABIC DATE SEPARATORARABIC POETIC VERSE SIGNARABIC SIGN " + - "MISRAARABIC SIGN SALLALLAHOU ALAYHE WASSALLAMARABIC SIGN ALAYHE ASSALLAM" + - "ARABIC SIGN RAHMATULLAH ALAYHEARABIC SIGN RADI ALLAHOU ANHUARABIC SIGN T" + - "AKHALLUSARABIC SMALL HIGH TAHARABIC SMALL HIGH LIGATURE ALEF WITH LAM WI" + - "TH YEHARABIC SMALL HIGH ZAINARABIC SMALL FATHAARABIC SMALL DAMMAARABIC S" + - "MALL KASRAARABIC SEMICOLONARABIC LETTER MARKARABIC TRIPLE DOT PUNCTUATIO" + - "N MARKARABIC QUESTION MARKARABIC LETTER KASHMIRI YEHARABIC LETTER HAMZAA" + - "RABIC LETTER ALEF WITH MADDA ABOVEARABIC LETTER ALEF WITH HAMZA ABOVEARA" + - "BIC LETTER WAW WITH HAMZA ABOVEARABIC LETTER ALEF WITH HAMZA BELOWARABIC" + - " LETTER YEH WITH HAMZA ABOVEARABIC LETTER ALEFARABIC LETTER BEHARABIC LE" + - "TTER TEH MARBUTAARABIC LETTER TEHARABIC LETTER THEHARABIC LETTER JEEMARA" + - "BIC LETTER HAHARABIC LETTER KHAHARABIC LETTER DALARABIC LETTER THALARABI" + - "C LETTER REHARABIC LETTER ZAINARABIC LETTER SEENARABIC LETTER SHEENARABI" + - "C LETTER SADARABIC LETTER DADARABIC LETTER TAHARABIC LETTER ZAHARABIC LE" + - "TTER AINARABIC LETTER GHAINARABIC LETTER KEHEH WITH TWO DOTS ABOVEARABIC" + - " LETTER KEHEH WITH THREE DOTS BELOWARABIC LETTER FARSI YEH WITH INVERTED" + - " VARABIC LETTER FARSI YEH WITH TWO DOTS ABOVEARABIC LETTER FARSI YEH WIT" + - "H THREE DOTS ABOVEARABIC TATWEELARABIC LETTER FEHARABIC LETTER QAFARABIC" + - " LETTER KAFARABIC LETTER LAMARABIC LETTER MEEMARABIC LETTER NOONARABIC L" + - "ETTER HEHARABIC LETTER WAWARABIC LETTER ALEF MAKSURAARABIC LETTER YEHARA" + - "BIC FATHATANARABIC DAMMATANARABIC KASRATANARABIC FATHAARABIC DAMMAARABIC" + - " KASRAARABIC SHADDAARABIC SUKUNARABIC MADDAH ABOVEARABIC HAMZA ABOVEARAB" + - "IC HAMZA BELOWARABIC SUBSCRIPT ALEFARABIC INVERTED DAMMAARABIC MARK NOON" + - " GHUNNAARABIC ZWARAKAYARABIC VOWEL SIGN SMALL V ABOVEARABIC VOWEL SIGN I" + - "NVERTED SMALL V ABOVEARABIC VOWEL SIGN DOT BELOWARABIC REVERSED DAMMAARA" + - "BIC FATHA WITH TWO DOTSARABIC WAVY HAMZA BELOWARABIC-INDIC DIGIT ZEROARA" + - "BIC-INDIC DIGIT ONEARABIC-INDIC DIGIT TWOARABIC-INDIC DIGIT THREEARABIC-" + - "INDIC DIGIT FOURARABIC-INDIC DIGIT FIVEARABIC-INDIC DIGIT SIXARABIC-INDI" + - "C DIGIT SEVENARABIC-INDIC DIGIT EIGHTARABIC-INDIC DIGIT NINEARABIC PERCE" + - "NT SIGNARABIC DECIMAL SEPARATORARABIC THOUSANDS SEPARATORARABIC FIVE POI" + - "NTED STARARABIC LETTER DOTLESS BEHARABIC LETTER DOTLESS QAFARABIC LETTER" + - " SUPERSCRIPT ALEFARABIC LETTER ALEF WASLAARABIC LETTER ALEF WITH WAVY HA" + - "MZA ABOVEARABIC LETTER ALEF WITH WAVY HAMZA BELOWARABIC LETTER HIGH HAMZ" + - "AARABIC LETTER HIGH HAMZA ALEFARABIC LETTER HIGH HAMZA WAWARABIC LETTER " + - "U WITH HAMZA ABOVEARABIC LETTER HIGH HAMZA YEHARABIC LETTER TTEHARABIC L" + - "ETTER TTEHEHARABIC LETTER BEEHARABIC LETTER TEH WITH RINGARABIC LETTER T" + - "EH WITH THREE DOTS ABOVE DOWNWARDSARABIC LETTER PEHARABIC LETTER TEHEHAR" + - "ABIC LETTER BEHEHARABIC LETTER HAH WITH HAMZA ABOVEARABIC LETTER HAH WIT" + - "H TWO DOTS VERTICAL ABOVEARABIC LETTER NYEHARABIC LETTER DYEHARABIC LETT" + - "ER HAH WITH THREE DOTS ABOVEARABIC LETTER TCHEHARABIC LETTER TCHEHEHARAB" + - "IC LETTER DDALARABIC LETTER DAL WITH RINGARABIC LETTER DAL WITH DOT BELO" + - "WARABIC LETTER DAL WITH DOT BELOW AND SMALL TAHARABIC LETTER DAHALARABIC" + - " LETTER DDAHALARABIC LETTER DULARABIC LETTER DAL WITH THREE DOTS ABOVE D" + - "OWNWARDSARABIC LETTER DAL WITH FOUR DOTS ABOVEARABIC LETTER RREHARABIC L" + - "ETTER REH WITH SMALL VARABIC LETTER REH WITH RINGARABIC LETTER REH WITH " + - "DOT BELOWARABIC LETTER REH WITH SMALL V BELOWARABIC LETTER REH WITH DOT " + - "BELOW AND DOT ABOVEARABIC LETTER REH WITH TWO DOTS ABOVEARABIC LETTER JE" + - "HARABIC LETTER REH WITH FOUR DOTS ABOVEARABIC LETTER SEEN WITH DOT BELOW" + - " AND DOT ABOVEARABIC LETTER SEEN WITH THREE DOTS BELOWARABIC LETTER SEEN" + - " WITH THREE DOTS BELOW AND THREE DOTS ABOVEARABIC LETTER SAD WITH TWO DO" + - "TS BELOWARABIC LETTER SAD WITH THREE DOTS ABOVEARABIC LETTER TAH WITH TH" + - "REE DOTS ABOVEARABIC LETTER AIN WITH THREE DOTS ABOVEARABIC LETTER DOTLE" + - "SS FEHARABIC LETTER FEH WITH DOT MOVED BELOWARABIC LETTER FEH WITH DOT B" + - "ELOWARABIC LETTER VEHARABIC LETTER FEH WITH THREE DOTS BELOWARABIC LETTE" + - "R PEHEHARABIC LETTER QAF WITH DOT ABOVEARABIC LETTER QAF WITH THREE DOTS") + ("" + - " ABOVEARABIC LETTER KEHEHARABIC LETTER SWASH KAFARABIC LETTER KAF WITH R" + - "INGARABIC LETTER KAF WITH DOT ABOVEARABIC LETTER NGARABIC LETTER KAF WIT" + - "H THREE DOTS BELOWARABIC LETTER GAFARABIC LETTER GAF WITH RINGARABIC LET" + - "TER NGOEHARABIC LETTER GAF WITH TWO DOTS BELOWARABIC LETTER GUEHARABIC L" + - "ETTER GAF WITH THREE DOTS ABOVEARABIC LETTER LAM WITH SMALL VARABIC LETT" + - "ER LAM WITH DOT ABOVEARABIC LETTER LAM WITH THREE DOTS ABOVEARABIC LETTE" + - "R LAM WITH THREE DOTS BELOWARABIC LETTER NOON WITH DOT BELOWARABIC LETTE" + - "R NOON GHUNNAARABIC LETTER RNOONARABIC LETTER NOON WITH RINGARABIC LETTE" + - "R NOON WITH THREE DOTS ABOVEARABIC LETTER HEH DOACHASHMEEARABIC LETTER T" + - "CHEH WITH DOT ABOVEARABIC LETTER HEH WITH YEH ABOVEARABIC LETTER HEH GOA" + - "LARABIC LETTER HEH GOAL WITH HAMZA ABOVEARABIC LETTER TEH MARBUTA GOALAR" + - "ABIC LETTER WAW WITH RINGARABIC LETTER KIRGHIZ OEARABIC LETTER OEARABIC " + - "LETTER UARABIC LETTER YUARABIC LETTER KIRGHIZ YUARABIC LETTER WAW WITH T" + - "WO DOTS ABOVEARABIC LETTER VEARABIC LETTER FARSI YEHARABIC LETTER YEH WI" + - "TH TAILARABIC LETTER YEH WITH SMALL VARABIC LETTER WAW WITH DOT ABOVEARA" + - "BIC LETTER EARABIC LETTER YEH WITH THREE DOTS BELOWARABIC LETTER YEH BAR" + - "REEARABIC LETTER YEH BARREE WITH HAMZA ABOVEARABIC FULL STOPARABIC LETTE" + - "R AEARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURAARABIC SMAL" + - "L HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURAARABIC SMALL HIGH MEEM INI" + - "TIAL FORMARABIC SMALL HIGH LAM ALEFARABIC SMALL HIGH JEEMARABIC SMALL HI" + - "GH THREE DOTSARABIC SMALL HIGH SEENARABIC END OF AYAHARABIC START OF RUB" + - " EL HIZBARABIC SMALL HIGH ROUNDED ZEROARABIC SMALL HIGH UPRIGHT RECTANGU" + - "LAR ZEROARABIC SMALL HIGH DOTLESS HEAD OF KHAHARABIC SMALL HIGH MEEM ISO" + - "LATED FORMARABIC SMALL LOW SEENARABIC SMALL HIGH MADDAARABIC SMALL WAWAR" + - "ABIC SMALL YEHARABIC SMALL HIGH YEHARABIC SMALL HIGH NOONARABIC PLACE OF" + - " SAJDAHARABIC EMPTY CENTRE LOW STOPARABIC EMPTY CENTRE HIGH STOPARABIC R" + - "OUNDED HIGH STOP WITH FILLED CENTREARABIC SMALL LOW MEEMARABIC LETTER DA" + - "L WITH INVERTED VARABIC LETTER REH WITH INVERTED VEXTENDED ARABIC-INDIC " + - "DIGIT ZEROEXTENDED ARABIC-INDIC DIGIT ONEEXTENDED ARABIC-INDIC DIGIT TWO" + - "EXTENDED ARABIC-INDIC DIGIT THREEEXTENDED ARABIC-INDIC DIGIT FOUREXTENDE" + - "D ARABIC-INDIC DIGIT FIVEEXTENDED ARABIC-INDIC DIGIT SIXEXTENDED ARABIC-" + - "INDIC DIGIT SEVENEXTENDED ARABIC-INDIC DIGIT EIGHTEXTENDED ARABIC-INDIC " + - "DIGIT NINEARABIC LETTER SHEEN WITH DOT BELOWARABIC LETTER DAD WITH DOT B" + - "ELOWARABIC LETTER GHAIN WITH DOT BELOWARABIC SIGN SINDHI AMPERSANDARABIC" + - " SIGN SINDHI POSTPOSITION MENARABIC LETTER HEH WITH INVERTED VSYRIAC END" + - " OF PARAGRAPHSYRIAC SUPRALINEAR FULL STOPSYRIAC SUBLINEAR FULL STOPSYRIA" + - "C SUPRALINEAR COLONSYRIAC SUBLINEAR COLONSYRIAC HORIZONTAL COLONSYRIAC C" + - "OLON SKEWED LEFTSYRIAC COLON SKEWED RIGHTSYRIAC SUPRALINEAR COLON SKEWED" + - " LEFTSYRIAC SUBLINEAR COLON SKEWED RIGHTSYRIAC CONTRACTIONSYRIAC HARKLEA" + - "N OBELUSSYRIAC HARKLEAN METOBELUSSYRIAC HARKLEAN ASTERISCUSSYRIAC ABBREV" + - "IATION MARKSYRIAC LETTER ALAPHSYRIAC LETTER SUPERSCRIPT ALAPHSYRIAC LETT" + - "ER BETHSYRIAC LETTER GAMALSYRIAC LETTER GAMAL GARSHUNISYRIAC LETTER DALA" + - "THSYRIAC LETTER DOTLESS DALATH RISHSYRIAC LETTER HESYRIAC LETTER WAWSYRI" + - "AC LETTER ZAINSYRIAC LETTER HETHSYRIAC LETTER TETHSYRIAC LETTER TETH GAR" + - "SHUNISYRIAC LETTER YUDHSYRIAC LETTER YUDH HESYRIAC LETTER KAPHSYRIAC LET" + - "TER LAMADHSYRIAC LETTER MIMSYRIAC LETTER NUNSYRIAC LETTER SEMKATHSYRIAC " + - "LETTER FINAL SEMKATHSYRIAC LETTER ESYRIAC LETTER PESYRIAC LETTER REVERSE" + - "D PESYRIAC LETTER SADHESYRIAC LETTER QAPHSYRIAC LETTER RISHSYRIAC LETTER" + - " SHINSYRIAC LETTER TAWSYRIAC LETTER PERSIAN BHETHSYRIAC LETTER PERSIAN G" + - "HAMALSYRIAC LETTER PERSIAN DHALATHSYRIAC PTHAHA ABOVESYRIAC PTHAHA BELOW" + - "SYRIAC PTHAHA DOTTEDSYRIAC ZQAPHA ABOVESYRIAC ZQAPHA BELOWSYRIAC ZQAPHA " + - "DOTTEDSYRIAC RBASA ABOVESYRIAC RBASA BELOWSYRIAC DOTTED ZLAMA HORIZONTAL" + - "SYRIAC DOTTED ZLAMA ANGULARSYRIAC HBASA ABOVESYRIAC HBASA BELOWSYRIAC HB" + - "ASA-ESASA DOTTEDSYRIAC ESASA ABOVESYRIAC ESASA BELOWSYRIAC RWAHASYRIAC F" + - "EMININE DOTSYRIAC QUSHSHAYASYRIAC RUKKAKHASYRIAC TWO VERTICAL DOTS ABOVE" + - "SYRIAC TWO VERTICAL DOTS BELOWSYRIAC THREE DOTS ABOVESYRIAC THREE DOTS B" + - "ELOWSYRIAC OBLIQUE LINE ABOVESYRIAC OBLIQUE LINE BELOWSYRIAC MUSICSYRIAC" + - " BARREKHSYRIAC LETTER SOGDIAN ZHAINSYRIAC LETTER SOGDIAN KHAPHSYRIAC LET" + - "TER SOGDIAN FEARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOWARABIC" + - " LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVEARABIC LETTER BEH WITH TH" + - "REE DOTS POINTING UPWARDS BELOWARABIC LETTER BEH WITH THREE DOTS POINTIN" + - "G UPWARDS BELOW AND TWO DOTS ABOVEARABIC LETTER BEH WITH TWO DOTS BELOW " + - "AND DOT ABOVEARABIC LETTER BEH WITH INVERTED SMALL V BELOWARABIC LETTER " + - "BEH WITH SMALL VARABIC LETTER HAH WITH TWO DOTS ABOVEARABIC LETTER HAH W") + ("" + - "ITH THREE DOTS POINTING UPWARDS BELOWARABIC LETTER DAL WITH TWO DOTS VER" + - "TICALLY BELOW AND SMALL TAHARABIC LETTER DAL WITH INVERTED SMALL V BELOW" + - "ARABIC LETTER REH WITH STROKEARABIC LETTER SEEN WITH FOUR DOTS ABOVEARAB" + - "IC LETTER AIN WITH TWO DOTS ABOVEARABIC LETTER AIN WITH THREE DOTS POINT" + - "ING DOWNWARDS ABOVEARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVEARABI" + - "C LETTER FEH WITH TWO DOTS BELOWARABIC LETTER FEH WITH THREE DOTS POINTI" + - "NG UPWARDS BELOWARABIC LETTER KEHEH WITH DOT ABOVEARABIC LETTER KEHEH WI" + - "TH THREE DOTS ABOVEARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS " + - "BELOWARABIC LETTER MEEM WITH DOT ABOVEARABIC LETTER MEEM WITH DOT BELOWA" + - "RABIC LETTER NOON WITH TWO DOTS BELOWARABIC LETTER NOON WITH SMALL TAHAR" + - "ABIC LETTER NOON WITH SMALL VARABIC LETTER LAM WITH BARARABIC LETTER REH" + - " WITH TWO DOTS VERTICALLY ABOVEARABIC LETTER REH WITH HAMZA ABOVEARABIC " + - "LETTER SEEN WITH TWO DOTS VERTICALLY ABOVEARABIC LETTER HAH WITH SMALL A" + - "RABIC LETTER TAH BELOWARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND" + - " TWO DOTSARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTSARA" + - "BIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTSARABIC LETTER HA" + - "H WITH SMALL ARABIC LETTER TAH ABOVEARABIC LETTER ALEF WITH EXTENDED ARA" + - "BIC-INDIC DIGIT TWO ABOVEARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC D" + - "IGIT THREE ABOVEARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT" + - " TWO ABOVEARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE" + - " ABOVEARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELO" + - "WARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVEARABIC LETT" + - "ER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVEARABIC LETTER YEH BAR" + - "REE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVEARABIC LETTER YEH BARREE W" + - "ITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVEARABIC LETTER HAH WITH EXTEND" + - "ED ARABIC-INDIC DIGIT FOUR BELOWARABIC LETTER SEEN WITH EXTENDED ARABIC-" + - "INDIC DIGIT FOUR ABOVEARABIC LETTER SEEN WITH INVERTED VARABIC LETTER KA" + - "F WITH TWO DOTS ABOVETHAANA LETTER HAATHAANA LETTER SHAVIYANITHAANA LETT" + - "ER NOONUTHAANA LETTER RAATHAANA LETTER BAATHAANA LETTER LHAVIYANITHAANA " + - "LETTER KAAFUTHAANA LETTER ALIFUTHAANA LETTER VAAVUTHAANA LETTER MEEMUTHA" + - "ANA LETTER FAAFUTHAANA LETTER DHAALUTHAANA LETTER THAATHAANA LETTER LAAM" + - "UTHAANA LETTER GAAFUTHAANA LETTER GNAVIYANITHAANA LETTER SEENUTHAANA LET" + - "TER DAVIYANITHAANA LETTER ZAVIYANITHAANA LETTER TAVIYANITHAANA LETTER YA" + - "ATHAANA LETTER PAVIYANITHAANA LETTER JAVIYANITHAANA LETTER CHAVIYANITHAA" + - "NA LETTER TTAATHAANA LETTER HHAATHAANA LETTER KHAATHAANA LETTER THAALUTH" + - "AANA LETTER ZAATHAANA LETTER SHEENUTHAANA LETTER SAADHUTHAANA LETTER DAA" + - "DHUTHAANA LETTER TOTHAANA LETTER ZOTHAANA LETTER AINUTHAANA LETTER GHAIN" + - "UTHAANA LETTER QAAFUTHAANA LETTER WAAVUTHAANA ABAFILITHAANA AABAAFILITHA" + - "ANA IBIFILITHAANA EEBEEFILITHAANA UBUFILITHAANA OOBOOFILITHAANA EBEFILIT" + - "HAANA EYBEYFILITHAANA OBOFILITHAANA OABOAFILITHAANA SUKUNTHAANA LETTER N" + - "AANKO DIGIT ZERONKO DIGIT ONENKO DIGIT TWONKO DIGIT THREENKO DIGIT FOURN" + - "KO DIGIT FIVENKO DIGIT SIXNKO DIGIT SEVENNKO DIGIT EIGHTNKO DIGIT NINENK" + - "O LETTER ANKO LETTER EENKO LETTER INKO LETTER ENKO LETTER UNKO LETTER OO" + - "NKO LETTER ONKO LETTER DAGBASINNANKO LETTER NNKO LETTER BANKO LETTER PAN" + - "KO LETTER TANKO LETTER JANKO LETTER CHANKO LETTER DANKO LETTER RANKO LET" + - "TER RRANKO LETTER SANKO LETTER GBANKO LETTER FANKO LETTER KANKO LETTER L" + - "ANKO LETTER NA WOLOSONKO LETTER MANKO LETTER NYANKO LETTER NANKO LETTER " + - "HANKO LETTER WANKO LETTER YANKO LETTER NYA WOLOSONKO LETTER JONA JANKO L" + - "ETTER JONA CHANKO LETTER JONA RANKO COMBINING SHORT HIGH TONENKO COMBINI" + - "NG SHORT LOW TONENKO COMBINING SHORT RISING TONENKO COMBINING LONG DESCE" + - "NDING TONENKO COMBINING LONG HIGH TONENKO COMBINING LONG LOW TONENKO COM" + - "BINING LONG RISING TONENKO COMBINING NASALIZATION MARKNKO COMBINING DOUB" + - "LE DOT ABOVENKO HIGH TONE APOSTROPHENKO LOW TONE APOSTROPHENKO SYMBOL OO" + - " DENNENNKO SYMBOL GBAKURUNENNKO COMMANKO EXCLAMATION MARKNKO LAJANYALANS" + - "AMARITAN LETTER ALAFSAMARITAN LETTER BITSAMARITAN LETTER GAMANSAMARITAN " + - "LETTER DALATSAMARITAN LETTER IYSAMARITAN LETTER BAASAMARITAN LETTER ZENS" + - "AMARITAN LETTER ITSAMARITAN LETTER TITSAMARITAN LETTER YUTSAMARITAN LETT" + - "ER KAAFSAMARITAN LETTER LABATSAMARITAN LETTER MIMSAMARITAN LETTER NUNSAM" + - "ARITAN LETTER SINGAATSAMARITAN LETTER INSAMARITAN LETTER FISAMARITAN LET" + - "TER TSAADIYSAMARITAN LETTER QUFSAMARITAN LETTER RISHSAMARITAN LETTER SHA" + - "NSAMARITAN LETTER TAAFSAMARITAN MARK INSAMARITAN MARK IN-ALAFSAMARITAN M" + - "ARK OCCLUSIONSAMARITAN MARK DAGESHSAMARITAN MODIFIER LETTER EPENTHETIC Y" + - "UTSAMARITAN MARK EPENTHETIC YUTSAMARITAN VOWEL SIGN LONG ESAMARITAN VOWE" + - "L SIGN ESAMARITAN VOWEL SIGN OVERLONG AASAMARITAN VOWEL SIGN LONG AASAMA") + ("" + - "RITAN VOWEL SIGN AASAMARITAN VOWEL SIGN OVERLONG ASAMARITAN VOWEL SIGN L" + - "ONG ASAMARITAN VOWEL SIGN ASAMARITAN MODIFIER LETTER SHORT ASAMARITAN VO" + - "WEL SIGN SHORT ASAMARITAN VOWEL SIGN LONG USAMARITAN VOWEL SIGN USAMARIT" + - "AN MODIFIER LETTER ISAMARITAN VOWEL SIGN LONG ISAMARITAN VOWEL SIGN ISAM" + - "ARITAN VOWEL SIGN OSAMARITAN VOWEL SIGN SUKUNSAMARITAN MARK NEQUDAASAMAR" + - "ITAN PUNCTUATION NEQUDAASAMARITAN PUNCTUATION AFSAAQSAMARITAN PUNCTUATIO" + - "N ANGEDSAMARITAN PUNCTUATION BAUSAMARITAN PUNCTUATION ATMAAUSAMARITAN PU" + - "NCTUATION SHIYYAALAASAMARITAN ABBREVIATION MARKSAMARITAN PUNCTUATION MEL" + - "ODIC QITSASAMARITAN PUNCTUATION ZIQAASAMARITAN PUNCTUATION QITSASAMARITA" + - "N PUNCTUATION ZAEFSAMARITAN PUNCTUATION TURUSAMARITAN PUNCTUATION ARKAAN" + - "USAMARITAN PUNCTUATION SOF MASHFAATSAMARITAN PUNCTUATION ANNAAUMANDAIC L" + - "ETTER HALQAMANDAIC LETTER ABMANDAIC LETTER AGMANDAIC LETTER ADMANDAIC LE" + - "TTER AHMANDAIC LETTER USHENNAMANDAIC LETTER AZMANDAIC LETTER ITMANDAIC L" + - "ETTER ATTMANDAIC LETTER AKSAMANDAIC LETTER AKMANDAIC LETTER ALMANDAIC LE" + - "TTER AMMANDAIC LETTER ANMANDAIC LETTER ASMANDAIC LETTER INMANDAIC LETTER" + - " APMANDAIC LETTER ASZMANDAIC LETTER AQMANDAIC LETTER ARMANDAIC LETTER AS" + - "HMANDAIC LETTER ATMANDAIC LETTER DUSHENNAMANDAIC LETTER KADMANDAIC LETTE" + - "R AINMANDAIC AFFRICATION MARKMANDAIC VOCALIZATION MARKMANDAIC GEMINATION" + - " MARKMANDAIC PUNCTUATIONARABIC LETTER BEH WITH SMALL V BELOWARABIC LETTE" + - "R BEH WITH HAMZA ABOVEARABIC LETTER JEEM WITH TWO DOTS ABOVEARABIC LETTE" + - "R TAH WITH TWO DOTS ABOVEARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS" + - " ABOVEARABIC LETTER QAF WITH DOT BELOWARABIC LETTER LAM WITH DOUBLE BARA" + - "RABIC LETTER MEEM WITH THREE DOTS ABOVEARABIC LETTER YEH WITH TWO DOTS B" + - "ELOW AND HAMZA ABOVEARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVEA" + - "RABIC LETTER REH WITH LOOPARABIC LETTER WAW WITH DOT WITHINARABIC LETTER" + - " ROHINGYA YEHARABIC LETTER LOW ALEFARABIC LETTER DAL WITH THREE DOTS BEL" + - "OWARABIC LETTER SAD WITH THREE DOTS BELOWARABIC LETTER GAF WITH INVERTED" + - " STROKEARABIC LETTER STRAIGHT WAWARABIC LETTER ZAIN WITH INVERTED V ABOV" + - "EARABIC LETTER AIN WITH THREE DOTS BELOWARABIC LETTER KAF WITH DOT BELOW" + - "ARABIC LETTER BEH WITH SMALL MEEM ABOVEARABIC LETTER PEH WITH SMALL MEEM" + - " ABOVEARABIC LETTER TEH WITH SMALL TEH ABOVEARABIC LETTER REH WITH SMALL" + - " NOON ABOVEARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVEARA" + - "BIC LETTER AFRICAN FEHARABIC LETTER AFRICAN QAFARABIC LETTER AFRICAN NOO" + - "NARABIC SMALL HIGH WORD AR-RUBARABIC SMALL HIGH SADARABIC SMALL HIGH AIN" + - "ARABIC SMALL HIGH QAFARABIC SMALL HIGH NOON WITH KASRAARABIC SMALL LOW N" + - "OON WITH KASRAARABIC SMALL HIGH WORD ATH-THALATHAARABIC SMALL HIGH WORD " + - "AS-SAJDAARABIC SMALL HIGH WORD AN-NISFARABIC SMALL HIGH WORD SAKTAARABIC" + - " SMALL HIGH WORD QIFARABIC SMALL HIGH WORD WAQFAARABIC SMALL HIGH FOOTNO" + - "TE MARKERARABIC SMALL HIGH SIGN SAFHAARABIC DISPUTED END OF AYAHARABIC T" + - "URNED DAMMA BELOWARABIC CURLY FATHAARABIC CURLY DAMMAARABIC CURLY KASRAA" + - "RABIC CURLY FATHATANARABIC CURLY DAMMATANARABIC CURLY KASRATANARABIC TON" + - "E ONE DOT ABOVEARABIC TONE TWO DOTS ABOVEARABIC TONE LOOP ABOVEARABIC TO" + - "NE ONE DOT BELOWARABIC TONE TWO DOTS BELOWARABIC TONE LOOP BELOWARABIC O" + - "PEN FATHATANARABIC OPEN DAMMATANARABIC OPEN KASRATANARABIC SMALL HIGH WA" + - "WARABIC FATHA WITH RINGARABIC FATHA WITH DOT ABOVEARABIC KASRA WITH DOT " + - "BELOWARABIC LEFT ARROWHEAD ABOVEARABIC RIGHT ARROWHEAD ABOVEARABIC LEFT " + - "ARROWHEAD BELOWARABIC RIGHT ARROWHEAD BELOWARABIC DOUBLE RIGHT ARROWHEAD" + - " ABOVEARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOTARABIC RIGHT ARROWHEAD" + - " ABOVE WITH DOTARABIC DAMMA WITH DOTARABIC MARK SIDEWAYS NOON GHUNNADEVA" + - "NAGARI SIGN INVERTED CANDRABINDUDEVANAGARI SIGN CANDRABINDUDEVANAGARI SI" + - "GN ANUSVARADEVANAGARI SIGN VISARGADEVANAGARI LETTER SHORT ADEVANAGARI LE" + - "TTER ADEVANAGARI LETTER AADEVANAGARI LETTER IDEVANAGARI LETTER IIDEVANAG" + - "ARI LETTER UDEVANAGARI LETTER UUDEVANAGARI LETTER VOCALIC RDEVANAGARI LE" + - "TTER VOCALIC LDEVANAGARI LETTER CANDRA EDEVANAGARI LETTER SHORT EDEVANAG" + - "ARI LETTER EDEVANAGARI LETTER AIDEVANAGARI LETTER CANDRA ODEVANAGARI LET" + - "TER SHORT ODEVANAGARI LETTER ODEVANAGARI LETTER AUDEVANAGARI LETTER KADE" + - "VANAGARI LETTER KHADEVANAGARI LETTER GADEVANAGARI LETTER GHADEVANAGARI L" + - "ETTER NGADEVANAGARI LETTER CADEVANAGARI LETTER CHADEVANAGARI LETTER JADE" + - "VANAGARI LETTER JHADEVANAGARI LETTER NYADEVANAGARI LETTER TTADEVANAGARI " + - "LETTER TTHADEVANAGARI LETTER DDADEVANAGARI LETTER DDHADEVANAGARI LETTER " + - "NNADEVANAGARI LETTER TADEVANAGARI LETTER THADEVANAGARI LETTER DADEVANAGA" + - "RI LETTER DHADEVANAGARI LETTER NADEVANAGARI LETTER NNNADEVANAGARI LETTER" + - " PADEVANAGARI LETTER PHADEVANAGARI LETTER BADEVANAGARI LETTER BHADEVANAG" + - "ARI LETTER MADEVANAGARI LETTER YADEVANAGARI LETTER RADEVANAGARI LETTER R") + ("" + - "RADEVANAGARI LETTER LADEVANAGARI LETTER LLADEVANAGARI LETTER LLLADEVANAG" + - "ARI LETTER VADEVANAGARI LETTER SHADEVANAGARI LETTER SSADEVANAGARI LETTER" + - " SADEVANAGARI LETTER HADEVANAGARI VOWEL SIGN OEDEVANAGARI VOWEL SIGN OOE" + - "DEVANAGARI SIGN NUKTADEVANAGARI SIGN AVAGRAHADEVANAGARI VOWEL SIGN AADEV" + - "ANAGARI VOWEL SIGN IDEVANAGARI VOWEL SIGN IIDEVANAGARI VOWEL SIGN UDEVAN" + - "AGARI VOWEL SIGN UUDEVANAGARI VOWEL SIGN VOCALIC RDEVANAGARI VOWEL SIGN " + - "VOCALIC RRDEVANAGARI VOWEL SIGN CANDRA EDEVANAGARI VOWEL SIGN SHORT EDEV" + - "ANAGARI VOWEL SIGN EDEVANAGARI VOWEL SIGN AIDEVANAGARI VOWEL SIGN CANDRA" + - " ODEVANAGARI VOWEL SIGN SHORT ODEVANAGARI VOWEL SIGN ODEVANAGARI VOWEL S" + - "IGN AUDEVANAGARI SIGN VIRAMADEVANAGARI VOWEL SIGN PRISHTHAMATRA EDEVANAG" + - "ARI VOWEL SIGN AWDEVANAGARI OMDEVANAGARI STRESS SIGN UDATTADEVANAGARI ST" + - "RESS SIGN ANUDATTADEVANAGARI GRAVE ACCENTDEVANAGARI ACUTE ACCENTDEVANAGA" + - "RI VOWEL SIGN CANDRA LONG EDEVANAGARI VOWEL SIGN UEDEVANAGARI VOWEL SIGN" + - " UUEDEVANAGARI LETTER QADEVANAGARI LETTER KHHADEVANAGARI LETTER GHHADEVA" + - "NAGARI LETTER ZADEVANAGARI LETTER DDDHADEVANAGARI LETTER RHADEVANAGARI L" + - "ETTER FADEVANAGARI LETTER YYADEVANAGARI LETTER VOCALIC RRDEVANAGARI LETT" + - "ER VOCALIC LLDEVANAGARI VOWEL SIGN VOCALIC LDEVANAGARI VOWEL SIGN VOCALI" + - "C LLDEVANAGARI DANDADEVANAGARI DOUBLE DANDADEVANAGARI DIGIT ZERODEVANAGA" + - "RI DIGIT ONEDEVANAGARI DIGIT TWODEVANAGARI DIGIT THREEDEVANAGARI DIGIT F" + - "OURDEVANAGARI DIGIT FIVEDEVANAGARI DIGIT SIXDEVANAGARI DIGIT SEVENDEVANA" + - "GARI DIGIT EIGHTDEVANAGARI DIGIT NINEDEVANAGARI ABBREVIATION SIGNDEVANAG" + - "ARI SIGN HIGH SPACING DOTDEVANAGARI LETTER CANDRA ADEVANAGARI LETTER OED" + - "EVANAGARI LETTER OOEDEVANAGARI LETTER AWDEVANAGARI LETTER UEDEVANAGARI L" + - "ETTER UUEDEVANAGARI LETTER MARWARI DDADEVANAGARI LETTER ZHADEVANAGARI LE" + - "TTER HEAVY YADEVANAGARI LETTER GGADEVANAGARI LETTER JJADEVANAGARI LETTER" + - " GLOTTAL STOPDEVANAGARI LETTER DDDADEVANAGARI LETTER BBABENGALI ANJIBENG" + - "ALI SIGN CANDRABINDUBENGALI SIGN ANUSVARABENGALI SIGN VISARGABENGALI LET" + - "TER ABENGALI LETTER AABENGALI LETTER IBENGALI LETTER IIBENGALI LETTER UB" + - "ENGALI LETTER UUBENGALI LETTER VOCALIC RBENGALI LETTER VOCALIC LBENGALI " + - "LETTER EBENGALI LETTER AIBENGALI LETTER OBENGALI LETTER AUBENGALI LETTER" + - " KABENGALI LETTER KHABENGALI LETTER GABENGALI LETTER GHABENGALI LETTER N" + - "GABENGALI LETTER CABENGALI LETTER CHABENGALI LETTER JABENGALI LETTER JHA" + - "BENGALI LETTER NYABENGALI LETTER TTABENGALI LETTER TTHABENGALI LETTER DD" + - "ABENGALI LETTER DDHABENGALI LETTER NNABENGALI LETTER TABENGALI LETTER TH" + - "ABENGALI LETTER DABENGALI LETTER DHABENGALI LETTER NABENGALI LETTER PABE" + - "NGALI LETTER PHABENGALI LETTER BABENGALI LETTER BHABENGALI LETTER MABENG" + - "ALI LETTER YABENGALI LETTER RABENGALI LETTER LABENGALI LETTER SHABENGALI" + - " LETTER SSABENGALI LETTER SABENGALI LETTER HABENGALI SIGN NUKTABENGALI S" + - "IGN AVAGRAHABENGALI VOWEL SIGN AABENGALI VOWEL SIGN IBENGALI VOWEL SIGN " + - "IIBENGALI VOWEL SIGN UBENGALI VOWEL SIGN UUBENGALI VOWEL SIGN VOCALIC RB" + - "ENGALI VOWEL SIGN VOCALIC RRBENGALI VOWEL SIGN EBENGALI VOWEL SIGN AIBEN" + - "GALI VOWEL SIGN OBENGALI VOWEL SIGN AUBENGALI SIGN VIRAMABENGALI LETTER " + - "KHANDA TABENGALI AU LENGTH MARKBENGALI LETTER RRABENGALI LETTER RHABENGA" + - "LI LETTER YYABENGALI LETTER VOCALIC RRBENGALI LETTER VOCALIC LLBENGALI V" + - "OWEL SIGN VOCALIC LBENGALI VOWEL SIGN VOCALIC LLBENGALI DIGIT ZEROBENGAL" + - "I DIGIT ONEBENGALI DIGIT TWOBENGALI DIGIT THREEBENGALI DIGIT FOURBENGALI" + - " DIGIT FIVEBENGALI DIGIT SIXBENGALI DIGIT SEVENBENGALI DIGIT EIGHTBENGAL" + - "I DIGIT NINEBENGALI LETTER RA WITH MIDDLE DIAGONALBENGALI LETTER RA WITH" + - " LOWER DIAGONALBENGALI RUPEE MARKBENGALI RUPEE SIGNBENGALI CURRENCY NUME" + - "RATOR ONEBENGALI CURRENCY NUMERATOR TWOBENGALI CURRENCY NUMERATOR THREEB" + - "ENGALI CURRENCY NUMERATOR FOURBENGALI CURRENCY NUMERATOR ONE LESS THAN T" + - "HE DENOMINATORBENGALI CURRENCY DENOMINATOR SIXTEENBENGALI ISSHARBENGALI " + - "GANDA MARKGURMUKHI SIGN ADAK BINDIGURMUKHI SIGN BINDIGURMUKHI SIGN VISAR" + - "GAGURMUKHI LETTER AGURMUKHI LETTER AAGURMUKHI LETTER IGURMUKHI LETTER II" + - "GURMUKHI LETTER UGURMUKHI LETTER UUGURMUKHI LETTER EEGURMUKHI LETTER AIG" + - "URMUKHI LETTER OOGURMUKHI LETTER AUGURMUKHI LETTER KAGURMUKHI LETTER KHA" + - "GURMUKHI LETTER GAGURMUKHI LETTER GHAGURMUKHI LETTER NGAGURMUKHI LETTER " + - "CAGURMUKHI LETTER CHAGURMUKHI LETTER JAGURMUKHI LETTER JHAGURMUKHI LETTE" + - "R NYAGURMUKHI LETTER TTAGURMUKHI LETTER TTHAGURMUKHI LETTER DDAGURMUKHI " + - "LETTER DDHAGURMUKHI LETTER NNAGURMUKHI LETTER TAGURMUKHI LETTER THAGURMU" + - "KHI LETTER DAGURMUKHI LETTER DHAGURMUKHI LETTER NAGURMUKHI LETTER PAGURM" + - "UKHI LETTER PHAGURMUKHI LETTER BAGURMUKHI LETTER BHAGURMUKHI LETTER MAGU" + - "RMUKHI LETTER YAGURMUKHI LETTER RAGURMUKHI LETTER LAGURMUKHI LETTER LLAG" + - "URMUKHI LETTER VAGURMUKHI LETTER SHAGURMUKHI LETTER SAGURMUKHI LETTER HA") + ("" + - "GURMUKHI SIGN NUKTAGURMUKHI VOWEL SIGN AAGURMUKHI VOWEL SIGN IGURMUKHI V" + - "OWEL SIGN IIGURMUKHI VOWEL SIGN UGURMUKHI VOWEL SIGN UUGURMUKHI VOWEL SI" + - "GN EEGURMUKHI VOWEL SIGN AIGURMUKHI VOWEL SIGN OOGURMUKHI VOWEL SIGN AUG" + - "URMUKHI SIGN VIRAMAGURMUKHI SIGN UDAATGURMUKHI LETTER KHHAGURMUKHI LETTE" + - "R GHHAGURMUKHI LETTER ZAGURMUKHI LETTER RRAGURMUKHI LETTER FAGURMUKHI DI" + - "GIT ZEROGURMUKHI DIGIT ONEGURMUKHI DIGIT TWOGURMUKHI DIGIT THREEGURMUKHI" + - " DIGIT FOURGURMUKHI DIGIT FIVEGURMUKHI DIGIT SIXGURMUKHI DIGIT SEVENGURM" + - "UKHI DIGIT EIGHTGURMUKHI DIGIT NINEGURMUKHI TIPPIGURMUKHI ADDAKGURMUKHI " + - "IRIGURMUKHI URAGURMUKHI EK ONKARGURMUKHI SIGN YAKASHGUJARATI SIGN CANDRA" + - "BINDUGUJARATI SIGN ANUSVARAGUJARATI SIGN VISARGAGUJARATI LETTER AGUJARAT" + - "I LETTER AAGUJARATI LETTER IGUJARATI LETTER IIGUJARATI LETTER UGUJARATI " + - "LETTER UUGUJARATI LETTER VOCALIC RGUJARATI LETTER VOCALIC LGUJARATI VOWE" + - "L CANDRA EGUJARATI LETTER EGUJARATI LETTER AIGUJARATI VOWEL CANDRA OGUJA" + - "RATI LETTER OGUJARATI LETTER AUGUJARATI LETTER KAGUJARATI LETTER KHAGUJA" + - "RATI LETTER GAGUJARATI LETTER GHAGUJARATI LETTER NGAGUJARATI LETTER CAGU" + - "JARATI LETTER CHAGUJARATI LETTER JAGUJARATI LETTER JHAGUJARATI LETTER NY" + - "AGUJARATI LETTER TTAGUJARATI LETTER TTHAGUJARATI LETTER DDAGUJARATI LETT" + - "ER DDHAGUJARATI LETTER NNAGUJARATI LETTER TAGUJARATI LETTER THAGUJARATI " + - "LETTER DAGUJARATI LETTER DHAGUJARATI LETTER NAGUJARATI LETTER PAGUJARATI" + - " LETTER PHAGUJARATI LETTER BAGUJARATI LETTER BHAGUJARATI LETTER MAGUJARA" + - "TI LETTER YAGUJARATI LETTER RAGUJARATI LETTER LAGUJARATI LETTER LLAGUJAR" + - "ATI LETTER VAGUJARATI LETTER SHAGUJARATI LETTER SSAGUJARATI LETTER SAGUJ" + - "ARATI LETTER HAGUJARATI SIGN NUKTAGUJARATI SIGN AVAGRAHAGUJARATI VOWEL S" + - "IGN AAGUJARATI VOWEL SIGN IGUJARATI VOWEL SIGN IIGUJARATI VOWEL SIGN UGU" + - "JARATI VOWEL SIGN UUGUJARATI VOWEL SIGN VOCALIC RGUJARATI VOWEL SIGN VOC" + - "ALIC RRGUJARATI VOWEL SIGN CANDRA EGUJARATI VOWEL SIGN EGUJARATI VOWEL S" + - "IGN AIGUJARATI VOWEL SIGN CANDRA OGUJARATI VOWEL SIGN OGUJARATI VOWEL SI" + - "GN AUGUJARATI SIGN VIRAMAGUJARATI OMGUJARATI LETTER VOCALIC RRGUJARATI L" + - "ETTER VOCALIC LLGUJARATI VOWEL SIGN VOCALIC LGUJARATI VOWEL SIGN VOCALIC" + - " LLGUJARATI DIGIT ZEROGUJARATI DIGIT ONEGUJARATI DIGIT TWOGUJARATI DIGIT" + - " THREEGUJARATI DIGIT FOURGUJARATI DIGIT FIVEGUJARATI DIGIT SIXGUJARATI D" + - "IGIT SEVENGUJARATI DIGIT EIGHTGUJARATI DIGIT NINEGUJARATI ABBREVIATION S" + - "IGNGUJARATI RUPEE SIGNGUJARATI LETTER ZHAORIYA SIGN CANDRABINDUORIYA SIG" + - "N ANUSVARAORIYA SIGN VISARGAORIYA LETTER AORIYA LETTER AAORIYA LETTER IO" + - "RIYA LETTER IIORIYA LETTER UORIYA LETTER UUORIYA LETTER VOCALIC RORIYA L" + - "ETTER VOCALIC LORIYA LETTER EORIYA LETTER AIORIYA LETTER OORIYA LETTER A" + - "UORIYA LETTER KAORIYA LETTER KHAORIYA LETTER GAORIYA LETTER GHAORIYA LET" + - "TER NGAORIYA LETTER CAORIYA LETTER CHAORIYA LETTER JAORIYA LETTER JHAORI" + - "YA LETTER NYAORIYA LETTER TTAORIYA LETTER TTHAORIYA LETTER DDAORIYA LETT" + - "ER DDHAORIYA LETTER NNAORIYA LETTER TAORIYA LETTER THAORIYA LETTER DAORI" + - "YA LETTER DHAORIYA LETTER NAORIYA LETTER PAORIYA LETTER PHAORIYA LETTER " + - "BAORIYA LETTER BHAORIYA LETTER MAORIYA LETTER YAORIYA LETTER RAORIYA LET" + - "TER LAORIYA LETTER LLAORIYA LETTER VAORIYA LETTER SHAORIYA LETTER SSAORI" + - "YA LETTER SAORIYA LETTER HAORIYA SIGN NUKTAORIYA SIGN AVAGRAHAORIYA VOWE" + - "L SIGN AAORIYA VOWEL SIGN IORIYA VOWEL SIGN IIORIYA VOWEL SIGN UORIYA VO" + - "WEL SIGN UUORIYA VOWEL SIGN VOCALIC RORIYA VOWEL SIGN VOCALIC RRORIYA VO" + - "WEL SIGN EORIYA VOWEL SIGN AIORIYA VOWEL SIGN OORIYA VOWEL SIGN AUORIYA " + - "SIGN VIRAMAORIYA AI LENGTH MARKORIYA AU LENGTH MARKORIYA LETTER RRAORIYA" + - " LETTER RHAORIYA LETTER YYAORIYA LETTER VOCALIC RRORIYA LETTER VOCALIC L" + - "LORIYA VOWEL SIGN VOCALIC LORIYA VOWEL SIGN VOCALIC LLORIYA DIGIT ZEROOR" + - "IYA DIGIT ONEORIYA DIGIT TWOORIYA DIGIT THREEORIYA DIGIT FOURORIYA DIGIT" + - " FIVEORIYA DIGIT SIXORIYA DIGIT SEVENORIYA DIGIT EIGHTORIYA DIGIT NINEOR" + - "IYA ISSHARORIYA LETTER WAORIYA FRACTION ONE QUARTERORIYA FRACTION ONE HA" + - "LFORIYA FRACTION THREE QUARTERSORIYA FRACTION ONE SIXTEENTHORIYA FRACTIO" + - "N ONE EIGHTHORIYA FRACTION THREE SIXTEENTHSTAMIL SIGN ANUSVARATAMIL SIGN" + - " VISARGATAMIL LETTER ATAMIL LETTER AATAMIL LETTER ITAMIL LETTER IITAMIL " + - "LETTER UTAMIL LETTER UUTAMIL LETTER ETAMIL LETTER EETAMIL LETTER AITAMIL" + - " LETTER OTAMIL LETTER OOTAMIL LETTER AUTAMIL LETTER KATAMIL LETTER NGATA" + - "MIL LETTER CATAMIL LETTER JATAMIL LETTER NYATAMIL LETTER TTATAMIL LETTER" + - " NNATAMIL LETTER TATAMIL LETTER NATAMIL LETTER NNNATAMIL LETTER PATAMIL " + - "LETTER MATAMIL LETTER YATAMIL LETTER RATAMIL LETTER RRATAMIL LETTER LATA" + - "MIL LETTER LLATAMIL LETTER LLLATAMIL LETTER VATAMIL LETTER SHATAMIL LETT" + - "ER SSATAMIL LETTER SATAMIL LETTER HATAMIL VOWEL SIGN AATAMIL VOWEL SIGN " + - "ITAMIL VOWEL SIGN IITAMIL VOWEL SIGN UTAMIL VOWEL SIGN UUTAMIL VOWEL SIG") + ("" + - "N ETAMIL VOWEL SIGN EETAMIL VOWEL SIGN AITAMIL VOWEL SIGN OTAMIL VOWEL S" + - "IGN OOTAMIL VOWEL SIGN AUTAMIL SIGN VIRAMATAMIL OMTAMIL AU LENGTH MARKTA" + - "MIL DIGIT ZEROTAMIL DIGIT ONETAMIL DIGIT TWOTAMIL DIGIT THREETAMIL DIGIT" + - " FOURTAMIL DIGIT FIVETAMIL DIGIT SIXTAMIL DIGIT SEVENTAMIL DIGIT EIGHTTA" + - "MIL DIGIT NINETAMIL NUMBER TENTAMIL NUMBER ONE HUNDREDTAMIL NUMBER ONE T" + - "HOUSANDTAMIL DAY SIGNTAMIL MONTH SIGNTAMIL YEAR SIGNTAMIL DEBIT SIGNTAMI" + - "L CREDIT SIGNTAMIL AS ABOVE SIGNTAMIL RUPEE SIGNTAMIL NUMBER SIGNTELUGU " + - "SIGN COMBINING CANDRABINDU ABOVETELUGU SIGN CANDRABINDUTELUGU SIGN ANUSV" + - "ARATELUGU SIGN VISARGATELUGU LETTER ATELUGU LETTER AATELUGU LETTER ITELU" + - "GU LETTER IITELUGU LETTER UTELUGU LETTER UUTELUGU LETTER VOCALIC RTELUGU" + - " LETTER VOCALIC LTELUGU LETTER ETELUGU LETTER EETELUGU LETTER AITELUGU L" + - "ETTER OTELUGU LETTER OOTELUGU LETTER AUTELUGU LETTER KATELUGU LETTER KHA" + - "TELUGU LETTER GATELUGU LETTER GHATELUGU LETTER NGATELUGU LETTER CATELUGU" + - " LETTER CHATELUGU LETTER JATELUGU LETTER JHATELUGU LETTER NYATELUGU LETT" + - "ER TTATELUGU LETTER TTHATELUGU LETTER DDATELUGU LETTER DDHATELUGU LETTER" + - " NNATELUGU LETTER TATELUGU LETTER THATELUGU LETTER DATELUGU LETTER DHATE" + - "LUGU LETTER NATELUGU LETTER PATELUGU LETTER PHATELUGU LETTER BATELUGU LE" + - "TTER BHATELUGU LETTER MATELUGU LETTER YATELUGU LETTER RATELUGU LETTER RR" + - "ATELUGU LETTER LATELUGU LETTER LLATELUGU LETTER LLLATELUGU LETTER VATELU" + - "GU LETTER SHATELUGU LETTER SSATELUGU LETTER SATELUGU LETTER HATELUGU SIG" + - "N AVAGRAHATELUGU VOWEL SIGN AATELUGU VOWEL SIGN ITELUGU VOWEL SIGN IITEL" + - "UGU VOWEL SIGN UTELUGU VOWEL SIGN UUTELUGU VOWEL SIGN VOCALIC RTELUGU VO" + - "WEL SIGN VOCALIC RRTELUGU VOWEL SIGN ETELUGU VOWEL SIGN EETELUGU VOWEL S" + - "IGN AITELUGU VOWEL SIGN OTELUGU VOWEL SIGN OOTELUGU VOWEL SIGN AUTELUGU " + - "SIGN VIRAMATELUGU LENGTH MARKTELUGU AI LENGTH MARKTELUGU LETTER TSATELUG" + - "U LETTER DZATELUGU LETTER RRRATELUGU LETTER VOCALIC RRTELUGU LETTER VOCA" + - "LIC LLTELUGU VOWEL SIGN VOCALIC LTELUGU VOWEL SIGN VOCALIC LLTELUGU DIGI" + - "T ZEROTELUGU DIGIT ONETELUGU DIGIT TWOTELUGU DIGIT THREETELUGU DIGIT FOU" + - "RTELUGU DIGIT FIVETELUGU DIGIT SIXTELUGU DIGIT SEVENTELUGU DIGIT EIGHTTE" + - "LUGU DIGIT NINETELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOURTELUGU F" + - "RACTION DIGIT ONE FOR ODD POWERS OF FOURTELUGU FRACTION DIGIT TWO FOR OD" + - "D POWERS OF FOURTELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOURTELUGU" + - " FRACTION DIGIT ONE FOR EVEN POWERS OF FOURTELUGU FRACTION DIGIT TWO FOR" + - " EVEN POWERS OF FOURTELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOURT" + - "ELUGU SIGN TUUMUKANNADA SIGN SPACING CANDRABINDUKANNADA SIGN CANDRABINDU" + - "KANNADA SIGN ANUSVARAKANNADA SIGN VISARGAKANNADA LETTER AKANNADA LETTER " + - "AAKANNADA LETTER IKANNADA LETTER IIKANNADA LETTER UKANNADA LETTER UUKANN" + - "ADA LETTER VOCALIC RKANNADA LETTER VOCALIC LKANNADA LETTER EKANNADA LETT" + - "ER EEKANNADA LETTER AIKANNADA LETTER OKANNADA LETTER OOKANNADA LETTER AU" + - "KANNADA LETTER KAKANNADA LETTER KHAKANNADA LETTER GAKANNADA LETTER GHAKA" + - "NNADA LETTER NGAKANNADA LETTER CAKANNADA LETTER CHAKANNADA LETTER JAKANN" + - "ADA LETTER JHAKANNADA LETTER NYAKANNADA LETTER TTAKANNADA LETTER TTHAKAN" + - "NADA LETTER DDAKANNADA LETTER DDHAKANNADA LETTER NNAKANNADA LETTER TAKAN" + - "NADA LETTER THAKANNADA LETTER DAKANNADA LETTER DHAKANNADA LETTER NAKANNA" + - "DA LETTER PAKANNADA LETTER PHAKANNADA LETTER BAKANNADA LETTER BHAKANNADA" + - " LETTER MAKANNADA LETTER YAKANNADA LETTER RAKANNADA LETTER RRAKANNADA LE" + - "TTER LAKANNADA LETTER LLAKANNADA LETTER VAKANNADA LETTER SHAKANNADA LETT" + - "ER SSAKANNADA LETTER SAKANNADA LETTER HAKANNADA SIGN NUKTAKANNADA SIGN A" + - "VAGRAHAKANNADA VOWEL SIGN AAKANNADA VOWEL SIGN IKANNADA VOWEL SIGN IIKAN" + - "NADA VOWEL SIGN UKANNADA VOWEL SIGN UUKANNADA VOWEL SIGN VOCALIC RKANNAD" + - "A VOWEL SIGN VOCALIC RRKANNADA VOWEL SIGN EKANNADA VOWEL SIGN EEKANNADA " + - "VOWEL SIGN AIKANNADA VOWEL SIGN OKANNADA VOWEL SIGN OOKANNADA VOWEL SIGN" + - " AUKANNADA SIGN VIRAMAKANNADA LENGTH MARKKANNADA AI LENGTH MARKKANNADA L" + - "ETTER FAKANNADA LETTER VOCALIC RRKANNADA LETTER VOCALIC LLKANNADA VOWEL " + - "SIGN VOCALIC LKANNADA VOWEL SIGN VOCALIC LLKANNADA DIGIT ZEROKANNADA DIG" + - "IT ONEKANNADA DIGIT TWOKANNADA DIGIT THREEKANNADA DIGIT FOURKANNADA DIGI" + - "T FIVEKANNADA DIGIT SIXKANNADA DIGIT SEVENKANNADA DIGIT EIGHTKANNADA DIG" + - "IT NINEKANNADA SIGN JIHVAMULIYAKANNADA SIGN UPADHMANIYAMALAYALAM SIGN CA" + - "NDRABINDUMALAYALAM SIGN ANUSVARAMALAYALAM SIGN VISARGAMALAYALAM LETTER A" + - "MALAYALAM LETTER AAMALAYALAM LETTER IMALAYALAM LETTER IIMALAYALAM LETTER" + - " UMALAYALAM LETTER UUMALAYALAM LETTER VOCALIC RMALAYALAM LETTER VOCALIC " + - "LMALAYALAM LETTER EMALAYALAM LETTER EEMALAYALAM LETTER AIMALAYALAM LETTE" + - "R OMALAYALAM LETTER OOMALAYALAM LETTER AUMALAYALAM LETTER KAMALAYALAM LE" + - "TTER KHAMALAYALAM LETTER GAMALAYALAM LETTER GHAMALAYALAM LETTER NGAMALAY") + ("" + - "ALAM LETTER CAMALAYALAM LETTER CHAMALAYALAM LETTER JAMALAYALAM LETTER JH" + - "AMALAYALAM LETTER NYAMALAYALAM LETTER TTAMALAYALAM LETTER TTHAMALAYALAM " + - "LETTER DDAMALAYALAM LETTER DDHAMALAYALAM LETTER NNAMALAYALAM LETTER TAMA" + - "LAYALAM LETTER THAMALAYALAM LETTER DAMALAYALAM LETTER DHAMALAYALAM LETTE" + - "R NAMALAYALAM LETTER NNNAMALAYALAM LETTER PAMALAYALAM LETTER PHAMALAYALA" + - "M LETTER BAMALAYALAM LETTER BHAMALAYALAM LETTER MAMALAYALAM LETTER YAMAL" + - "AYALAM LETTER RAMALAYALAM LETTER RRAMALAYALAM LETTER LAMALAYALAM LETTER " + - "LLAMALAYALAM LETTER LLLAMALAYALAM LETTER VAMALAYALAM LETTER SHAMALAYALAM" + - " LETTER SSAMALAYALAM LETTER SAMALAYALAM LETTER HAMALAYALAM LETTER TTTAMA" + - "LAYALAM SIGN AVAGRAHAMALAYALAM VOWEL SIGN AAMALAYALAM VOWEL SIGN IMALAYA" + - "LAM VOWEL SIGN IIMALAYALAM VOWEL SIGN UMALAYALAM VOWEL SIGN UUMALAYALAM " + - "VOWEL SIGN VOCALIC RMALAYALAM VOWEL SIGN VOCALIC RRMALAYALAM VOWEL SIGN " + - "EMALAYALAM VOWEL SIGN EEMALAYALAM VOWEL SIGN AIMALAYALAM VOWEL SIGN OMAL" + - "AYALAM VOWEL SIGN OOMALAYALAM VOWEL SIGN AUMALAYALAM SIGN VIRAMAMALAYALA" + - "M LETTER DOT REPHMALAYALAM SIGN PARAMALAYALAM LETTER CHILLU MMALAYALAM L" + - "ETTER CHILLU YMALAYALAM LETTER CHILLU LLLMALAYALAM AU LENGTH MARKMALAYAL" + - "AM FRACTION ONE ONE-HUNDRED-AND-SIXTIETHMALAYALAM FRACTION ONE FORTIETHM" + - "ALAYALAM FRACTION THREE EIGHTIETHSMALAYALAM FRACTION ONE TWENTIETHMALAYA" + - "LAM FRACTION ONE TENTHMALAYALAM FRACTION THREE TWENTIETHSMALAYALAM FRACT" + - "ION ONE FIFTHMALAYALAM LETTER ARCHAIC IIMALAYALAM LETTER VOCALIC RRMALAY" + - "ALAM LETTER VOCALIC LLMALAYALAM VOWEL SIGN VOCALIC LMALAYALAM VOWEL SIGN" + - " VOCALIC LLMALAYALAM DIGIT ZEROMALAYALAM DIGIT ONEMALAYALAM DIGIT TWOMAL" + - "AYALAM DIGIT THREEMALAYALAM DIGIT FOURMALAYALAM DIGIT FIVEMALAYALAM DIGI" + - "T SIXMALAYALAM DIGIT SEVENMALAYALAM DIGIT EIGHTMALAYALAM DIGIT NINEMALAY" + - "ALAM NUMBER TENMALAYALAM NUMBER ONE HUNDREDMALAYALAM NUMBER ONE THOUSAND" + - "MALAYALAM FRACTION ONE QUARTERMALAYALAM FRACTION ONE HALFMALAYALAM FRACT" + - "ION THREE QUARTERSMALAYALAM FRACTION ONE SIXTEENTHMALAYALAM FRACTION ONE" + - " EIGHTHMALAYALAM FRACTION THREE SIXTEENTHSMALAYALAM DATE MARKMALAYALAM L" + - "ETTER CHILLU NNMALAYALAM LETTER CHILLU NMALAYALAM LETTER CHILLU RRMALAYA" + - "LAM LETTER CHILLU LMALAYALAM LETTER CHILLU LLMALAYALAM LETTER CHILLU KSI" + - "NHALA SIGN ANUSVARAYASINHALA SIGN VISARGAYASINHALA LETTER AYANNASINHALA " + - "LETTER AAYANNASINHALA LETTER AEYANNASINHALA LETTER AEEYANNASINHALA LETTE" + - "R IYANNASINHALA LETTER IIYANNASINHALA LETTER UYANNASINHALA LETTER UUYANN" + - "ASINHALA LETTER IRUYANNASINHALA LETTER IRUUYANNASINHALA LETTER ILUYANNAS" + - "INHALA LETTER ILUUYANNASINHALA LETTER EYANNASINHALA LETTER EEYANNASINHAL" + - "A LETTER AIYANNASINHALA LETTER OYANNASINHALA LETTER OOYANNASINHALA LETTE" + - "R AUYANNASINHALA LETTER ALPAPRAANA KAYANNASINHALA LETTER MAHAAPRAANA KAY" + - "ANNASINHALA LETTER ALPAPRAANA GAYANNASINHALA LETTER MAHAAPRAANA GAYANNAS" + - "INHALA LETTER KANTAJA NAASIKYAYASINHALA LETTER SANYAKA GAYANNASINHALA LE" + - "TTER ALPAPRAANA CAYANNASINHALA LETTER MAHAAPRAANA CAYANNASINHALA LETTER " + - "ALPAPRAANA JAYANNASINHALA LETTER MAHAAPRAANA JAYANNASINHALA LETTER TAALU" + - "JA NAASIKYAYASINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYASINHALA LETTER S" + - "ANYAKA JAYANNASINHALA LETTER ALPAPRAANA TTAYANNASINHALA LETTER MAHAAPRAA" + - "NA TTAYANNASINHALA LETTER ALPAPRAANA DDAYANNASINHALA LETTER MAHAAPRAANA " + - "DDAYANNASINHALA LETTER MUURDHAJA NAYANNASINHALA LETTER SANYAKA DDAYANNAS" + - "INHALA LETTER ALPAPRAANA TAYANNASINHALA LETTER MAHAAPRAANA TAYANNASINHAL" + - "A LETTER ALPAPRAANA DAYANNASINHALA LETTER MAHAAPRAANA DAYANNASINHALA LET" + - "TER DANTAJA NAYANNASINHALA LETTER SANYAKA DAYANNASINHALA LETTER ALPAPRAA" + - "NA PAYANNASINHALA LETTER MAHAAPRAANA PAYANNASINHALA LETTER ALPAPRAANA BA" + - "YANNASINHALA LETTER MAHAAPRAANA BAYANNASINHALA LETTER MAYANNASINHALA LET" + - "TER AMBA BAYANNASINHALA LETTER YAYANNASINHALA LETTER RAYANNASINHALA LETT" + - "ER DANTAJA LAYANNASINHALA LETTER VAYANNASINHALA LETTER TAALUJA SAYANNASI" + - "NHALA LETTER MUURDHAJA SAYANNASINHALA LETTER DANTAJA SAYANNASINHALA LETT" + - "ER HAYANNASINHALA LETTER MUURDHAJA LAYANNASINHALA LETTER FAYANNASINHALA " + - "SIGN AL-LAKUNASINHALA VOWEL SIGN AELA-PILLASINHALA VOWEL SIGN KETTI AEDA" + - "-PILLASINHALA VOWEL SIGN DIGA AEDA-PILLASINHALA VOWEL SIGN KETTI IS-PILL" + - "ASINHALA VOWEL SIGN DIGA IS-PILLASINHALA VOWEL SIGN KETTI PAA-PILLASINHA" + - "LA VOWEL SIGN DIGA PAA-PILLASINHALA VOWEL SIGN GAETTA-PILLASINHALA VOWEL" + - " SIGN KOMBUVASINHALA VOWEL SIGN DIGA KOMBUVASINHALA VOWEL SIGN KOMBU DEK" + - "ASINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLASINHALA VOWEL SIGN KOMBUVA HAA" + - " DIGA AELA-PILLASINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTASINHALA VOWEL " + - "SIGN GAYANUKITTASINHALA LITH DIGIT ZEROSINHALA LITH DIGIT ONESINHALA LIT" + - "H DIGIT TWOSINHALA LITH DIGIT THREESINHALA LITH DIGIT FOURSINHALA LITH D" + - "IGIT FIVESINHALA LITH DIGIT SIXSINHALA LITH DIGIT SEVENSINHALA LITH DIGI") + ("" + - "T EIGHTSINHALA LITH DIGIT NINESINHALA VOWEL SIGN DIGA GAETTA-PILLASINHAL" + - "A VOWEL SIGN DIGA GAYANUKITTASINHALA PUNCTUATION KUNDDALIYATHAI CHARACTE" + - "R KO KAITHAI CHARACTER KHO KHAITHAI CHARACTER KHO KHUATTHAI CHARACTER KH" + - "O KHWAITHAI CHARACTER KHO KHONTHAI CHARACTER KHO RAKHANGTHAI CHARACTER N" + - "GO NGUTHAI CHARACTER CHO CHANTHAI CHARACTER CHO CHINGTHAI CHARACTER CHO " + - "CHANGTHAI CHARACTER SO SOTHAI CHARACTER CHO CHOETHAI CHARACTER YO YINGTH" + - "AI CHARACTER DO CHADATHAI CHARACTER TO PATAKTHAI CHARACTER THO THANTHAI " + - "CHARACTER THO NANGMONTHOTHAI CHARACTER THO PHUTHAOTHAI CHARACTER NO NENT" + - "HAI CHARACTER DO DEKTHAI CHARACTER TO TAOTHAI CHARACTER THO THUNGTHAI CH" + - "ARACTER THO THAHANTHAI CHARACTER THO THONGTHAI CHARACTER NO NUTHAI CHARA" + - "CTER BO BAIMAITHAI CHARACTER PO PLATHAI CHARACTER PHO PHUNGTHAI CHARACTE" + - "R FO FATHAI CHARACTER PHO PHANTHAI CHARACTER FO FANTHAI CHARACTER PHO SA" + - "MPHAOTHAI CHARACTER MO MATHAI CHARACTER YO YAKTHAI CHARACTER RO RUATHAI " + - "CHARACTER RUTHAI CHARACTER LO LINGTHAI CHARACTER LUTHAI CHARACTER WO WAE" + - "NTHAI CHARACTER SO SALATHAI CHARACTER SO RUSITHAI CHARACTER SO SUATHAI C" + - "HARACTER HO HIPTHAI CHARACTER LO CHULATHAI CHARACTER O ANGTHAI CHARACTER" + - " HO NOKHUKTHAI CHARACTER PAIYANNOITHAI CHARACTER SARA ATHAI CHARACTER MA" + - "I HAN-AKATTHAI CHARACTER SARA AATHAI CHARACTER SARA AMTHAI CHARACTER SAR" + - "A ITHAI CHARACTER SARA IITHAI CHARACTER SARA UETHAI CHARACTER SARA UEETH" + - "AI CHARACTER SARA UTHAI CHARACTER SARA UUTHAI CHARACTER PHINTHUTHAI CURR" + - "ENCY SYMBOL BAHTTHAI CHARACTER SARA ETHAI CHARACTER SARA AETHAI CHARACTE" + - "R SARA OTHAI CHARACTER SARA AI MAIMUANTHAI CHARACTER SARA AI MAIMALAITHA" + - "I CHARACTER LAKKHANGYAOTHAI CHARACTER MAIYAMOKTHAI CHARACTER MAITAIKHUTH" + - "AI CHARACTER MAI EKTHAI CHARACTER MAI THOTHAI CHARACTER MAI TRITHAI CHAR" + - "ACTER MAI CHATTAWATHAI CHARACTER THANTHAKHATTHAI CHARACTER NIKHAHITTHAI " + - "CHARACTER YAMAKKANTHAI CHARACTER FONGMANTHAI DIGIT ZEROTHAI DIGIT ONETHA" + - "I DIGIT TWOTHAI DIGIT THREETHAI DIGIT FOURTHAI DIGIT FIVETHAI DIGIT SIXT" + - "HAI DIGIT SEVENTHAI DIGIT EIGHTTHAI DIGIT NINETHAI CHARACTER ANGKHANKHUT" + - "HAI CHARACTER KHOMUTLAO LETTER KOLAO LETTER KHO SUNGLAO LETTER KHO TAMLA" + - "O LETTER NGOLAO LETTER COLAO LETTER SO TAMLAO LETTER NYOLAO LETTER DOLAO" + - " LETTER TOLAO LETTER THO SUNGLAO LETTER THO TAMLAO LETTER NOLAO LETTER B" + - "OLAO LETTER POLAO LETTER PHO SUNGLAO LETTER FO TAMLAO LETTER PHO TAMLAO " + - "LETTER FO SUNGLAO LETTER MOLAO LETTER YOLAO LETTER LO LINGLAO LETTER LO " + - "LOOTLAO LETTER WOLAO LETTER SO SUNGLAO LETTER HO SUNGLAO LETTER OLAO LET" + - "TER HO TAMLAO ELLIPSISLAO VOWEL SIGN ALAO VOWEL SIGN MAI KANLAO VOWEL SI" + - "GN AALAO VOWEL SIGN AMLAO VOWEL SIGN ILAO VOWEL SIGN IILAO VOWEL SIGN YL" + - "AO VOWEL SIGN YYLAO VOWEL SIGN ULAO VOWEL SIGN UULAO VOWEL SIGN MAI KONL" + - "AO SEMIVOWEL SIGN LOLAO SEMIVOWEL SIGN NYOLAO VOWEL SIGN ELAO VOWEL SIGN" + - " EILAO VOWEL SIGN OLAO VOWEL SIGN AYLAO VOWEL SIGN AILAO KO LALAO TONE M" + - "AI EKLAO TONE MAI THOLAO TONE MAI TILAO TONE MAI CATAWALAO CANCELLATION " + - "MARKLAO NIGGAHITALAO DIGIT ZEROLAO DIGIT ONELAO DIGIT TWOLAO DIGIT THREE" + - "LAO DIGIT FOURLAO DIGIT FIVELAO DIGIT SIXLAO DIGIT SEVENLAO DIGIT EIGHTL" + - "AO DIGIT NINELAO HO NOLAO HO MOLAO LETTER KHMU GOLAO LETTER KHMU NYOTIBE" + - "TAN SYLLABLE OMTIBETAN MARK GTER YIG MGO TRUNCATED ATIBETAN MARK GTER YI" + - "G MGO -UM RNAM BCAD MATIBETAN MARK GTER YIG MGO -UM GTER TSHEG MATIBETAN" + - " MARK INITIAL YIG MGO MDUN MATIBETAN MARK CLOSING YIG MGO SGAB MATIBETAN" + - " MARK CARET YIG MGO PHUR SHAD MATIBETAN MARK YIG MGO TSHEG SHAD MATIBETA" + - "N MARK SBRUL SHADTIBETAN MARK BSKUR YIG MGOTIBETAN MARK BKA- SHOG YIG MG" + - "OTIBETAN MARK INTERSYLLABIC TSHEGTIBETAN MARK DELIMITER TSHEG BSTARTIBET" + - "AN MARK SHADTIBETAN MARK NYIS SHADTIBETAN MARK TSHEG SHADTIBETAN MARK NY" + - "IS TSHEG SHADTIBETAN MARK RIN CHEN SPUNGS SHADTIBETAN MARK RGYA GRAM SHA" + - "DTIBETAN MARK CARET -DZUD RTAGS ME LONG CANTIBETAN MARK GTER TSHEGTIBETA" + - "N LOGOTYPE SIGN CHAD RTAGSTIBETAN LOGOTYPE SIGN LHAG RTAGSTIBETAN ASTROL" + - "OGICAL SIGN SGRA GCAN -CHAR RTAGSTIBETAN ASTROLOGICAL SIGN -KHYUD PATIBE" + - "TAN ASTROLOGICAL SIGN SDONG TSHUGSTIBETAN SIGN RDEL DKAR GCIGTIBETAN SIG" + - "N RDEL DKAR GNYISTIBETAN SIGN RDEL DKAR GSUMTIBETAN SIGN RDEL NAG GCIGTI" + - "BETAN SIGN RDEL NAG GNYISTIBETAN SIGN RDEL DKAR RDEL NAGTIBETAN DIGIT ZE" + - "ROTIBETAN DIGIT ONETIBETAN DIGIT TWOTIBETAN DIGIT THREETIBETAN DIGIT FOU" + - "RTIBETAN DIGIT FIVETIBETAN DIGIT SIXTIBETAN DIGIT SEVENTIBETAN DIGIT EIG" + - "HTTIBETAN DIGIT NINETIBETAN DIGIT HALF ONETIBETAN DIGIT HALF TWOTIBETAN " + - "DIGIT HALF THREETIBETAN DIGIT HALF FOURTIBETAN DIGIT HALF FIVETIBETAN DI" + - "GIT HALF SIXTIBETAN DIGIT HALF SEVENTIBETAN DIGIT HALF EIGHTTIBETAN DIGI" + - "T HALF NINETIBETAN DIGIT HALF ZEROTIBETAN MARK BSDUS RTAGSTIBETAN MARK N" + - "GAS BZUNG NYI ZLATIBETAN MARK CARET -DZUD RTAGS BZHI MIG CANTIBETAN MARK") + ("" + - " NGAS BZUNG SGOR RTAGSTIBETAN MARK CHE MGOTIBETAN MARK TSA -PHRUTIBETAN " + - "MARK GUG RTAGS GYONTIBETAN MARK GUG RTAGS GYASTIBETAN MARK ANG KHANG GYO" + - "NTIBETAN MARK ANG KHANG GYASTIBETAN SIGN YAR TSHESTIBETAN SIGN MAR TSHES" + - "TIBETAN LETTER KATIBETAN LETTER KHATIBETAN LETTER GATIBETAN LETTER GHATI" + - "BETAN LETTER NGATIBETAN LETTER CATIBETAN LETTER CHATIBETAN LETTER JATIBE" + - "TAN LETTER NYATIBETAN LETTER TTATIBETAN LETTER TTHATIBETAN LETTER DDATIB" + - "ETAN LETTER DDHATIBETAN LETTER NNATIBETAN LETTER TATIBETAN LETTER THATIB" + - "ETAN LETTER DATIBETAN LETTER DHATIBETAN LETTER NATIBETAN LETTER PATIBETA" + - "N LETTER PHATIBETAN LETTER BATIBETAN LETTER BHATIBETAN LETTER MATIBETAN " + - "LETTER TSATIBETAN LETTER TSHATIBETAN LETTER DZATIBETAN LETTER DZHATIBETA" + - "N LETTER WATIBETAN LETTER ZHATIBETAN LETTER ZATIBETAN LETTER -ATIBETAN L" + - "ETTER YATIBETAN LETTER RATIBETAN LETTER LATIBETAN LETTER SHATIBETAN LETT" + - "ER SSATIBETAN LETTER SATIBETAN LETTER HATIBETAN LETTER ATIBETAN LETTER K" + - "SSATIBETAN LETTER FIXED-FORM RATIBETAN LETTER KKATIBETAN LETTER RRATIBET" + - "AN VOWEL SIGN AATIBETAN VOWEL SIGN ITIBETAN VOWEL SIGN IITIBETAN VOWEL S" + - "IGN UTIBETAN VOWEL SIGN UUTIBETAN VOWEL SIGN VOCALIC RTIBETAN VOWEL SIGN" + - " VOCALIC RRTIBETAN VOWEL SIGN VOCALIC LTIBETAN VOWEL SIGN VOCALIC LLTIBE" + - "TAN VOWEL SIGN ETIBETAN VOWEL SIGN EETIBETAN VOWEL SIGN OTIBETAN VOWEL S" + - "IGN OOTIBETAN SIGN RJES SU NGA ROTIBETAN SIGN RNAM BCADTIBETAN VOWEL SIG" + - "N REVERSED ITIBETAN VOWEL SIGN REVERSED IITIBETAN SIGN NYI ZLA NAA DATIB" + - "ETAN SIGN SNA LDANTIBETAN MARK HALANTATIBETAN MARK PALUTATIBETAN SIGN LC" + - "I RTAGSTIBETAN SIGN YANG RTAGSTIBETAN SIGN LCE TSA CANTIBETAN SIGN MCHU " + - "CANTIBETAN SIGN GRU CAN RGYINGSTIBETAN SIGN GRU MED RGYINGSTIBETAN SIGN " + - "INVERTED MCHU CANTIBETAN SUBJOINED SIGN LCE TSA CANTIBETAN SUBJOINED SIG" + - "N MCHU CANTIBETAN SUBJOINED SIGN INVERTED MCHU CANTIBETAN SUBJOINED LETT" + - "ER KATIBETAN SUBJOINED LETTER KHATIBETAN SUBJOINED LETTER GATIBETAN SUBJ" + - "OINED LETTER GHATIBETAN SUBJOINED LETTER NGATIBETAN SUBJOINED LETTER CAT" + - "IBETAN SUBJOINED LETTER CHATIBETAN SUBJOINED LETTER JATIBETAN SUBJOINED " + - "LETTER NYATIBETAN SUBJOINED LETTER TTATIBETAN SUBJOINED LETTER TTHATIBET" + - "AN SUBJOINED LETTER DDATIBETAN SUBJOINED LETTER DDHATIBETAN SUBJOINED LE" + - "TTER NNATIBETAN SUBJOINED LETTER TATIBETAN SUBJOINED LETTER THATIBETAN S" + - "UBJOINED LETTER DATIBETAN SUBJOINED LETTER DHATIBETAN SUBJOINED LETTER N" + - "ATIBETAN SUBJOINED LETTER PATIBETAN SUBJOINED LETTER PHATIBETAN SUBJOINE" + - "D LETTER BATIBETAN SUBJOINED LETTER BHATIBETAN SUBJOINED LETTER MATIBETA" + - "N SUBJOINED LETTER TSATIBETAN SUBJOINED LETTER TSHATIBETAN SUBJOINED LET" + - "TER DZATIBETAN SUBJOINED LETTER DZHATIBETAN SUBJOINED LETTER WATIBETAN S" + - "UBJOINED LETTER ZHATIBETAN SUBJOINED LETTER ZATIBETAN SUBJOINED LETTER -" + - "ATIBETAN SUBJOINED LETTER YATIBETAN SUBJOINED LETTER RATIBETAN SUBJOINED" + - " LETTER LATIBETAN SUBJOINED LETTER SHATIBETAN SUBJOINED LETTER SSATIBETA" + - "N SUBJOINED LETTER SATIBETAN SUBJOINED LETTER HATIBETAN SUBJOINED LETTER" + - " ATIBETAN SUBJOINED LETTER KSSATIBETAN SUBJOINED LETTER FIXED-FORM WATIB" + - "ETAN SUBJOINED LETTER FIXED-FORM YATIBETAN SUBJOINED LETTER FIXED-FORM R" + - "ATIBETAN KU RU KHATIBETAN KU RU KHA BZHI MIG CANTIBETAN CANTILLATION SIG" + - "N HEAVY BEATTIBETAN CANTILLATION SIGN LIGHT BEATTIBETAN CANTILLATION SIG" + - "N CANG TE-UTIBETAN CANTILLATION SIGN SBUB -CHALTIBETAN SYMBOL DRIL BUTIB" + - "ETAN SYMBOL RDO RJETIBETAN SYMBOL PADMA GDANTIBETAN SYMBOL RDO RJE RGYA " + - "GRAMTIBETAN SYMBOL PHUR PATIBETAN SYMBOL NOR BUTIBETAN SYMBOL NOR BU NYI" + - "S -KHYILTIBETAN SYMBOL NOR BU GSUM -KHYILTIBETAN SYMBOL NOR BU BZHI -KHY" + - "ILTIBETAN SIGN RDEL NAG RDEL DKARTIBETAN SIGN RDEL NAG GSUMTIBETAN MARK " + - "BSKA- SHOG GI MGO RGYANTIBETAN MARK MNYAM YIG GI MGO RGYANTIBETAN MARK N" + - "YIS TSHEGTIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MATIBETAN MARK CL" + - "OSING BRDA RNYING YIG MGO SGAB MARIGHT-FACING SVASTI SIGNLEFT-FACING SVA" + - "STI SIGNRIGHT-FACING SVASTI SIGN WITH DOTSLEFT-FACING SVASTI SIGN WITH D" + - "OTSTIBETAN MARK LEADING MCHAN RTAGSTIBETAN MARK TRAILING MCHAN RTAGSMYAN" + - "MAR LETTER KAMYANMAR LETTER KHAMYANMAR LETTER GAMYANMAR LETTER GHAMYANMA" + - "R LETTER NGAMYANMAR LETTER CAMYANMAR LETTER CHAMYANMAR LETTER JAMYANMAR " + - "LETTER JHAMYANMAR LETTER NYAMYANMAR LETTER NNYAMYANMAR LETTER TTAMYANMAR" + - " LETTER TTHAMYANMAR LETTER DDAMYANMAR LETTER DDHAMYANMAR LETTER NNAMYANM" + - "AR LETTER TAMYANMAR LETTER THAMYANMAR LETTER DAMYANMAR LETTER DHAMYANMAR" + - " LETTER NAMYANMAR LETTER PAMYANMAR LETTER PHAMYANMAR LETTER BAMYANMAR LE" + - "TTER BHAMYANMAR LETTER MAMYANMAR LETTER YAMYANMAR LETTER RAMYANMAR LETTE" + - "R LAMYANMAR LETTER WAMYANMAR LETTER SAMYANMAR LETTER HAMYANMAR LETTER LL" + - "AMYANMAR LETTER AMYANMAR LETTER SHAN AMYANMAR LETTER IMYANMAR LETTER IIM" + - "YANMAR LETTER UMYANMAR LETTER UUMYANMAR LETTER EMYANMAR LETTER MON EMYAN") + ("" + - "MAR LETTER OMYANMAR LETTER AUMYANMAR VOWEL SIGN TALL AAMYANMAR VOWEL SIG" + - "N AAMYANMAR VOWEL SIGN IMYANMAR VOWEL SIGN IIMYANMAR VOWEL SIGN UMYANMAR" + - " VOWEL SIGN UUMYANMAR VOWEL SIGN EMYANMAR VOWEL SIGN AIMYANMAR VOWEL SIG" + - "N MON IIMYANMAR VOWEL SIGN MON OMYANMAR VOWEL SIGN E ABOVEMYANMAR SIGN A" + - "NUSVARAMYANMAR SIGN DOT BELOWMYANMAR SIGN VISARGAMYANMAR SIGN VIRAMAMYAN" + - "MAR SIGN ASATMYANMAR CONSONANT SIGN MEDIAL YAMYANMAR CONSONANT SIGN MEDI" + - "AL RAMYANMAR CONSONANT SIGN MEDIAL WAMYANMAR CONSONANT SIGN MEDIAL HAMYA" + - "NMAR LETTER GREAT SAMYANMAR DIGIT ZEROMYANMAR DIGIT ONEMYANMAR DIGIT TWO" + - "MYANMAR DIGIT THREEMYANMAR DIGIT FOURMYANMAR DIGIT FIVEMYANMAR DIGIT SIX" + - "MYANMAR DIGIT SEVENMYANMAR DIGIT EIGHTMYANMAR DIGIT NINEMYANMAR SIGN LIT" + - "TLE SECTIONMYANMAR SIGN SECTIONMYANMAR SYMBOL LOCATIVEMYANMAR SYMBOL COM" + - "PLETEDMYANMAR SYMBOL AFOREMENTIONEDMYANMAR SYMBOL GENITIVEMYANMAR LETTER" + - " SHAMYANMAR LETTER SSAMYANMAR LETTER VOCALIC RMYANMAR LETTER VOCALIC RRM" + - "YANMAR LETTER VOCALIC LMYANMAR LETTER VOCALIC LLMYANMAR VOWEL SIGN VOCAL" + - "IC RMYANMAR VOWEL SIGN VOCALIC RRMYANMAR VOWEL SIGN VOCALIC LMYANMAR VOW" + - "EL SIGN VOCALIC LLMYANMAR LETTER MON NGAMYANMAR LETTER MON JHAMYANMAR LE" + - "TTER MON BBAMYANMAR LETTER MON BBEMYANMAR CONSONANT SIGN MON MEDIAL NAMY" + - "ANMAR CONSONANT SIGN MON MEDIAL MAMYANMAR CONSONANT SIGN MON MEDIAL LAMY" + - "ANMAR LETTER SGAW KAREN SHAMYANMAR VOWEL SIGN SGAW KAREN EUMYANMAR TONE " + - "MARK SGAW KAREN HATHIMYANMAR TONE MARK SGAW KAREN KE PHOMYANMAR LETTER W" + - "ESTERN PWO KAREN THAMYANMAR LETTER WESTERN PWO KAREN PWAMYANMAR VOWEL SI" + - "GN WESTERN PWO KAREN EUMYANMAR VOWEL SIGN WESTERN PWO KAREN UEMYANMAR SI" + - "GN WESTERN PWO KAREN TONE-1MYANMAR SIGN WESTERN PWO KAREN TONE-2MYANMAR " + - "SIGN WESTERN PWO KAREN TONE-3MYANMAR SIGN WESTERN PWO KAREN TONE-4MYANMA" + - "R SIGN WESTERN PWO KAREN TONE-5MYANMAR LETTER EASTERN PWO KAREN NNAMYANM" + - "AR LETTER EASTERN PWO KAREN YWAMYANMAR LETTER EASTERN PWO KAREN GHWAMYAN" + - "MAR VOWEL SIGN GEBA KAREN IMYANMAR VOWEL SIGN KAYAH OEMYANMAR VOWEL SIGN" + - " KAYAH UMYANMAR VOWEL SIGN KAYAH EEMYANMAR LETTER SHAN KAMYANMAR LETTER " + - "SHAN KHAMYANMAR LETTER SHAN GAMYANMAR LETTER SHAN CAMYANMAR LETTER SHAN " + - "ZAMYANMAR LETTER SHAN NYAMYANMAR LETTER SHAN DAMYANMAR LETTER SHAN NAMYA" + - "NMAR LETTER SHAN PHAMYANMAR LETTER SHAN FAMYANMAR LETTER SHAN BAMYANMAR " + - "LETTER SHAN THAMYANMAR LETTER SHAN HAMYANMAR CONSONANT SIGN SHAN MEDIAL " + - "WAMYANMAR VOWEL SIGN SHAN AAMYANMAR VOWEL SIGN SHAN EMYANMAR VOWEL SIGN " + - "SHAN E ABOVEMYANMAR VOWEL SIGN SHAN FINAL YMYANMAR SIGN SHAN TONE-2MYANM" + - "AR SIGN SHAN TONE-3MYANMAR SIGN SHAN TONE-5MYANMAR SIGN SHAN TONE-6MYANM" + - "AR SIGN SHAN COUNCIL TONE-2MYANMAR SIGN SHAN COUNCIL TONE-3MYANMAR SIGN " + - "SHAN COUNCIL EMPHATIC TONEMYANMAR LETTER RUMAI PALAUNG FAMYANMAR SIGN RU" + - "MAI PALAUNG TONE-5MYANMAR SHAN DIGIT ZEROMYANMAR SHAN DIGIT ONEMYANMAR S" + - "HAN DIGIT TWOMYANMAR SHAN DIGIT THREEMYANMAR SHAN DIGIT FOURMYANMAR SHAN" + - " DIGIT FIVEMYANMAR SHAN DIGIT SIXMYANMAR SHAN DIGIT SEVENMYANMAR SHAN DI" + - "GIT EIGHTMYANMAR SHAN DIGIT NINEMYANMAR SIGN KHAMTI TONE-1MYANMAR SIGN K" + - "HAMTI TONE-3MYANMAR VOWEL SIGN AITON AMYANMAR VOWEL SIGN AITON AIMYANMAR" + - " SYMBOL SHAN ONEMYANMAR SYMBOL SHAN EXCLAMATIONGEORGIAN CAPITAL LETTER A" + - "NGEORGIAN CAPITAL LETTER BANGEORGIAN CAPITAL LETTER GANGEORGIAN CAPITAL " + - "LETTER DONGEORGIAN CAPITAL LETTER ENGEORGIAN CAPITAL LETTER VINGEORGIAN " + - "CAPITAL LETTER ZENGEORGIAN CAPITAL LETTER TANGEORGIAN CAPITAL LETTER ING" + - "EORGIAN CAPITAL LETTER KANGEORGIAN CAPITAL LETTER LASGEORGIAN CAPITAL LE" + - "TTER MANGEORGIAN CAPITAL LETTER NARGEORGIAN CAPITAL LETTER ONGEORGIAN CA" + - "PITAL LETTER PARGEORGIAN CAPITAL LETTER ZHARGEORGIAN CAPITAL LETTER RAEG" + - "EORGIAN CAPITAL LETTER SANGEORGIAN CAPITAL LETTER TARGEORGIAN CAPITAL LE" + - "TTER UNGEORGIAN CAPITAL LETTER PHARGEORGIAN CAPITAL LETTER KHARGEORGIAN " + - "CAPITAL LETTER GHANGEORGIAN CAPITAL LETTER QARGEORGIAN CAPITAL LETTER SH" + - "INGEORGIAN CAPITAL LETTER CHINGEORGIAN CAPITAL LETTER CANGEORGIAN CAPITA" + - "L LETTER JILGEORGIAN CAPITAL LETTER CILGEORGIAN CAPITAL LETTER CHARGEORG" + - "IAN CAPITAL LETTER XANGEORGIAN CAPITAL LETTER JHANGEORGIAN CAPITAL LETTE" + - "R HAEGEORGIAN CAPITAL LETTER HEGEORGIAN CAPITAL LETTER HIEGEORGIAN CAPIT" + - "AL LETTER WEGEORGIAN CAPITAL LETTER HARGEORGIAN CAPITAL LETTER HOEGEORGI" + - "AN CAPITAL LETTER YNGEORGIAN CAPITAL LETTER AENGEORGIAN LETTER ANGEORGIA" + - "N LETTER BANGEORGIAN LETTER GANGEORGIAN LETTER DONGEORGIAN LETTER ENGEOR" + - "GIAN LETTER VINGEORGIAN LETTER ZENGEORGIAN LETTER TANGEORGIAN LETTER ING" + - "EORGIAN LETTER KANGEORGIAN LETTER LASGEORGIAN LETTER MANGEORGIAN LETTER " + - "NARGEORGIAN LETTER ONGEORGIAN LETTER PARGEORGIAN LETTER ZHARGEORGIAN LET" + - "TER RAEGEORGIAN LETTER SANGEORGIAN LETTER TARGEORGIAN LETTER UNGEORGIAN " + - "LETTER PHARGEORGIAN LETTER KHARGEORGIAN LETTER GHANGEORGIAN LETTER QARGE") + ("" + - "ORGIAN LETTER SHINGEORGIAN LETTER CHINGEORGIAN LETTER CANGEORGIAN LETTER" + - " JILGEORGIAN LETTER CILGEORGIAN LETTER CHARGEORGIAN LETTER XANGEORGIAN L" + - "ETTER JHANGEORGIAN LETTER HAEGEORGIAN LETTER HEGEORGIAN LETTER HIEGEORGI" + - "AN LETTER WEGEORGIAN LETTER HARGEORGIAN LETTER HOEGEORGIAN LETTER FIGEOR" + - "GIAN LETTER YNGEORGIAN LETTER ELIFIGEORGIAN LETTER TURNED GANGEORGIAN LE" + - "TTER AINGEORGIAN PARAGRAPH SEPARATORMODIFIER LETTER GEORGIAN NARGEORGIAN" + - " LETTER AENGEORGIAN LETTER HARD SIGNGEORGIAN LETTER LABIAL SIGNHANGUL CH" + - "OSEONG KIYEOKHANGUL CHOSEONG SSANGKIYEOKHANGUL CHOSEONG NIEUNHANGUL CHOS" + - "EONG TIKEUTHANGUL CHOSEONG SSANGTIKEUTHANGUL CHOSEONG RIEULHANGUL CHOSEO" + - "NG MIEUMHANGUL CHOSEONG PIEUPHANGUL CHOSEONG SSANGPIEUPHANGUL CHOSEONG S" + - "IOSHANGUL CHOSEONG SSANGSIOSHANGUL CHOSEONG IEUNGHANGUL CHOSEONG CIEUCHA" + - "NGUL CHOSEONG SSANGCIEUCHANGUL CHOSEONG CHIEUCHHANGUL CHOSEONG KHIEUKHHA" + - "NGUL CHOSEONG THIEUTHHANGUL CHOSEONG PHIEUPHHANGUL CHOSEONG HIEUHHANGUL " + - "CHOSEONG NIEUN-KIYEOKHANGUL CHOSEONG SSANGNIEUNHANGUL CHOSEONG NIEUN-TIK" + - "EUTHANGUL CHOSEONG NIEUN-PIEUPHANGUL CHOSEONG TIKEUT-KIYEOKHANGUL CHOSEO" + - "NG RIEUL-NIEUNHANGUL CHOSEONG SSANGRIEULHANGUL CHOSEONG RIEUL-HIEUHHANGU" + - "L CHOSEONG KAPYEOUNRIEULHANGUL CHOSEONG MIEUM-PIEUPHANGUL CHOSEONG KAPYE" + - "OUNMIEUMHANGUL CHOSEONG PIEUP-KIYEOKHANGUL CHOSEONG PIEUP-NIEUNHANGUL CH" + - "OSEONG PIEUP-TIKEUTHANGUL CHOSEONG PIEUP-SIOSHANGUL CHOSEONG PIEUP-SIOS-" + - "KIYEOKHANGUL CHOSEONG PIEUP-SIOS-TIKEUTHANGUL CHOSEONG PIEUP-SIOS-PIEUPH" + - "ANGUL CHOSEONG PIEUP-SSANGSIOSHANGUL CHOSEONG PIEUP-SIOS-CIEUCHANGUL CHO" + - "SEONG PIEUP-CIEUCHANGUL CHOSEONG PIEUP-CHIEUCHHANGUL CHOSEONG PIEUP-THIE" + - "UTHHANGUL CHOSEONG PIEUP-PHIEUPHHANGUL CHOSEONG KAPYEOUNPIEUPHANGUL CHOS" + - "EONG KAPYEOUNSSANGPIEUPHANGUL CHOSEONG SIOS-KIYEOKHANGUL CHOSEONG SIOS-N" + - "IEUNHANGUL CHOSEONG SIOS-TIKEUTHANGUL CHOSEONG SIOS-RIEULHANGUL CHOSEONG" + - " SIOS-MIEUMHANGUL CHOSEONG SIOS-PIEUPHANGUL CHOSEONG SIOS-PIEUP-KIYEOKHA" + - "NGUL CHOSEONG SIOS-SSANGSIOSHANGUL CHOSEONG SIOS-IEUNGHANGUL CHOSEONG SI" + - "OS-CIEUCHANGUL CHOSEONG SIOS-CHIEUCHHANGUL CHOSEONG SIOS-KHIEUKHHANGUL C" + - "HOSEONG SIOS-THIEUTHHANGUL CHOSEONG SIOS-PHIEUPHHANGUL CHOSEONG SIOS-HIE" + - "UHHANGUL CHOSEONG CHITUEUMSIOSHANGUL CHOSEONG CHITUEUMSSANGSIOSHANGUL CH" + - "OSEONG CEONGCHIEUMSIOSHANGUL CHOSEONG CEONGCHIEUMSSANGSIOSHANGUL CHOSEON" + - "G PANSIOSHANGUL CHOSEONG IEUNG-KIYEOKHANGUL CHOSEONG IEUNG-TIKEUTHANGUL " + - "CHOSEONG IEUNG-MIEUMHANGUL CHOSEONG IEUNG-PIEUPHANGUL CHOSEONG IEUNG-SIO" + - "SHANGUL CHOSEONG IEUNG-PANSIOSHANGUL CHOSEONG SSANGIEUNGHANGUL CHOSEONG " + - "IEUNG-CIEUCHANGUL CHOSEONG IEUNG-CHIEUCHHANGUL CHOSEONG IEUNG-THIEUTHHAN" + - "GUL CHOSEONG IEUNG-PHIEUPHHANGUL CHOSEONG YESIEUNGHANGUL CHOSEONG CIEUC-" + - "IEUNGHANGUL CHOSEONG CHITUEUMCIEUCHANGUL CHOSEONG CHITUEUMSSANGCIEUCHANG" + - "UL CHOSEONG CEONGCHIEUMCIEUCHANGUL CHOSEONG CEONGCHIEUMSSANGCIEUCHANGUL " + - "CHOSEONG CHIEUCH-KHIEUKHHANGUL CHOSEONG CHIEUCH-HIEUHHANGUL CHOSEONG CHI" + - "TUEUMCHIEUCHHANGUL CHOSEONG CEONGCHIEUMCHIEUCHHANGUL CHOSEONG PHIEUPH-PI" + - "EUPHANGUL CHOSEONG KAPYEOUNPHIEUPHHANGUL CHOSEONG SSANGHIEUHHANGUL CHOSE" + - "ONG YEORINHIEUHHANGUL CHOSEONG KIYEOK-TIKEUTHANGUL CHOSEONG NIEUN-SIOSHA" + - "NGUL CHOSEONG NIEUN-CIEUCHANGUL CHOSEONG NIEUN-HIEUHHANGUL CHOSEONG TIKE" + - "UT-RIEULHANGUL CHOSEONG FILLERHANGUL JUNGSEONG FILLERHANGUL JUNGSEONG AH" + - "ANGUL JUNGSEONG AEHANGUL JUNGSEONG YAHANGUL JUNGSEONG YAEHANGUL JUNGSEON" + - "G EOHANGUL JUNGSEONG EHANGUL JUNGSEONG YEOHANGUL JUNGSEONG YEHANGUL JUNG" + - "SEONG OHANGUL JUNGSEONG WAHANGUL JUNGSEONG WAEHANGUL JUNGSEONG OEHANGUL " + - "JUNGSEONG YOHANGUL JUNGSEONG UHANGUL JUNGSEONG WEOHANGUL JUNGSEONG WEHAN" + - "GUL JUNGSEONG WIHANGUL JUNGSEONG YUHANGUL JUNGSEONG EUHANGUL JUNGSEONG Y" + - "IHANGUL JUNGSEONG IHANGUL JUNGSEONG A-OHANGUL JUNGSEONG A-UHANGUL JUNGSE" + - "ONG YA-OHANGUL JUNGSEONG YA-YOHANGUL JUNGSEONG EO-OHANGUL JUNGSEONG EO-U" + - "HANGUL JUNGSEONG EO-EUHANGUL JUNGSEONG YEO-OHANGUL JUNGSEONG YEO-UHANGUL" + - " JUNGSEONG O-EOHANGUL JUNGSEONG O-EHANGUL JUNGSEONG O-YEHANGUL JUNGSEONG" + - " O-OHANGUL JUNGSEONG O-UHANGUL JUNGSEONG YO-YAHANGUL JUNGSEONG YO-YAEHAN" + - "GUL JUNGSEONG YO-YEOHANGUL JUNGSEONG YO-OHANGUL JUNGSEONG YO-IHANGUL JUN" + - "GSEONG U-AHANGUL JUNGSEONG U-AEHANGUL JUNGSEONG U-EO-EUHANGUL JUNGSEONG " + - "U-YEHANGUL JUNGSEONG U-UHANGUL JUNGSEONG YU-AHANGUL JUNGSEONG YU-EOHANGU" + - "L JUNGSEONG YU-EHANGUL JUNGSEONG YU-YEOHANGUL JUNGSEONG YU-YEHANGUL JUNG" + - "SEONG YU-UHANGUL JUNGSEONG YU-IHANGUL JUNGSEONG EU-UHANGUL JUNGSEONG EU-" + - "EUHANGUL JUNGSEONG YI-UHANGUL JUNGSEONG I-AHANGUL JUNGSEONG I-YAHANGUL J" + - "UNGSEONG I-OHANGUL JUNGSEONG I-UHANGUL JUNGSEONG I-EUHANGUL JUNGSEONG I-" + - "ARAEAHANGUL JUNGSEONG ARAEAHANGUL JUNGSEONG ARAEA-EOHANGUL JUNGSEONG ARA" + - "EA-UHANGUL JUNGSEONG ARAEA-IHANGUL JUNGSEONG SSANGARAEAHANGUL JUNGSEONG " + - "A-EUHANGUL JUNGSEONG YA-UHANGUL JUNGSEONG YEO-YAHANGUL JUNGSEONG O-YAHAN") + ("" + - "GUL JUNGSEONG O-YAEHANGUL JONGSEONG KIYEOKHANGUL JONGSEONG SSANGKIYEOKHA" + - "NGUL JONGSEONG KIYEOK-SIOSHANGUL JONGSEONG NIEUNHANGUL JONGSEONG NIEUN-C" + - "IEUCHANGUL JONGSEONG NIEUN-HIEUHHANGUL JONGSEONG TIKEUTHANGUL JONGSEONG " + - "RIEULHANGUL JONGSEONG RIEUL-KIYEOKHANGUL JONGSEONG RIEUL-MIEUMHANGUL JON" + - "GSEONG RIEUL-PIEUPHANGUL JONGSEONG RIEUL-SIOSHANGUL JONGSEONG RIEUL-THIE" + - "UTHHANGUL JONGSEONG RIEUL-PHIEUPHHANGUL JONGSEONG RIEUL-HIEUHHANGUL JONG" + - "SEONG MIEUMHANGUL JONGSEONG PIEUPHANGUL JONGSEONG PIEUP-SIOSHANGUL JONGS" + - "EONG SIOSHANGUL JONGSEONG SSANGSIOSHANGUL JONGSEONG IEUNGHANGUL JONGSEON" + - "G CIEUCHANGUL JONGSEONG CHIEUCHHANGUL JONGSEONG KHIEUKHHANGUL JONGSEONG " + - "THIEUTHHANGUL JONGSEONG PHIEUPHHANGUL JONGSEONG HIEUHHANGUL JONGSEONG KI" + - "YEOK-RIEULHANGUL JONGSEONG KIYEOK-SIOS-KIYEOKHANGUL JONGSEONG NIEUN-KIYE" + - "OKHANGUL JONGSEONG NIEUN-TIKEUTHANGUL JONGSEONG NIEUN-SIOSHANGUL JONGSEO" + - "NG NIEUN-PANSIOSHANGUL JONGSEONG NIEUN-THIEUTHHANGUL JONGSEONG TIKEUT-KI" + - "YEOKHANGUL JONGSEONG TIKEUT-RIEULHANGUL JONGSEONG RIEUL-KIYEOK-SIOSHANGU" + - "L JONGSEONG RIEUL-NIEUNHANGUL JONGSEONG RIEUL-TIKEUTHANGUL JONGSEONG RIE" + - "UL-TIKEUT-HIEUHHANGUL JONGSEONG SSANGRIEULHANGUL JONGSEONG RIEUL-MIEUM-K" + - "IYEOKHANGUL JONGSEONG RIEUL-MIEUM-SIOSHANGUL JONGSEONG RIEUL-PIEUP-SIOSH" + - "ANGUL JONGSEONG RIEUL-PIEUP-HIEUHHANGUL JONGSEONG RIEUL-KAPYEOUNPIEUPHAN" + - "GUL JONGSEONG RIEUL-SSANGSIOSHANGUL JONGSEONG RIEUL-PANSIOSHANGUL JONGSE" + - "ONG RIEUL-KHIEUKHHANGUL JONGSEONG RIEUL-YEORINHIEUHHANGUL JONGSEONG MIEU" + - "M-KIYEOKHANGUL JONGSEONG MIEUM-RIEULHANGUL JONGSEONG MIEUM-PIEUPHANGUL J" + - "ONGSEONG MIEUM-SIOSHANGUL JONGSEONG MIEUM-SSANGSIOSHANGUL JONGSEONG MIEU" + - "M-PANSIOSHANGUL JONGSEONG MIEUM-CHIEUCHHANGUL JONGSEONG MIEUM-HIEUHHANGU" + - "L JONGSEONG KAPYEOUNMIEUMHANGUL JONGSEONG PIEUP-RIEULHANGUL JONGSEONG PI" + - "EUP-PHIEUPHHANGUL JONGSEONG PIEUP-HIEUHHANGUL JONGSEONG KAPYEOUNPIEUPHAN" + - "GUL JONGSEONG SIOS-KIYEOKHANGUL JONGSEONG SIOS-TIKEUTHANGUL JONGSEONG SI" + - "OS-RIEULHANGUL JONGSEONG SIOS-PIEUPHANGUL JONGSEONG PANSIOSHANGUL JONGSE" + - "ONG IEUNG-KIYEOKHANGUL JONGSEONG IEUNG-SSANGKIYEOKHANGUL JONGSEONG SSANG" + - "IEUNGHANGUL JONGSEONG IEUNG-KHIEUKHHANGUL JONGSEONG YESIEUNGHANGUL JONGS" + - "EONG YESIEUNG-SIOSHANGUL JONGSEONG YESIEUNG-PANSIOSHANGUL JONGSEONG PHIE" + - "UPH-PIEUPHANGUL JONGSEONG KAPYEOUNPHIEUPHHANGUL JONGSEONG HIEUH-NIEUNHAN" + - "GUL JONGSEONG HIEUH-RIEULHANGUL JONGSEONG HIEUH-MIEUMHANGUL JONGSEONG HI" + - "EUH-PIEUPHANGUL JONGSEONG YEORINHIEUHHANGUL JONGSEONG KIYEOK-NIEUNHANGUL" + - " JONGSEONG KIYEOK-PIEUPHANGUL JONGSEONG KIYEOK-CHIEUCHHANGUL JONGSEONG K" + - "IYEOK-KHIEUKHHANGUL JONGSEONG KIYEOK-HIEUHHANGUL JONGSEONG SSANGNIEUNETH" + - "IOPIC SYLLABLE HAETHIOPIC SYLLABLE HUETHIOPIC SYLLABLE HIETHIOPIC SYLLAB" + - "LE HAAETHIOPIC SYLLABLE HEEETHIOPIC SYLLABLE HEETHIOPIC SYLLABLE HOETHIO" + - "PIC SYLLABLE HOAETHIOPIC SYLLABLE LAETHIOPIC SYLLABLE LUETHIOPIC SYLLABL" + - "E LIETHIOPIC SYLLABLE LAAETHIOPIC SYLLABLE LEEETHIOPIC SYLLABLE LEETHIOP" + - "IC SYLLABLE LOETHIOPIC SYLLABLE LWAETHIOPIC SYLLABLE HHAETHIOPIC SYLLABL" + - "E HHUETHIOPIC SYLLABLE HHIETHIOPIC SYLLABLE HHAAETHIOPIC SYLLABLE HHEEET" + - "HIOPIC SYLLABLE HHEETHIOPIC SYLLABLE HHOETHIOPIC SYLLABLE HHWAETHIOPIC S" + - "YLLABLE MAETHIOPIC SYLLABLE MUETHIOPIC SYLLABLE MIETHIOPIC SYLLABLE MAAE" + - "THIOPIC SYLLABLE MEEETHIOPIC SYLLABLE MEETHIOPIC SYLLABLE MOETHIOPIC SYL" + - "LABLE MWAETHIOPIC SYLLABLE SZAETHIOPIC SYLLABLE SZUETHIOPIC SYLLABLE SZI" + - "ETHIOPIC SYLLABLE SZAAETHIOPIC SYLLABLE SZEEETHIOPIC SYLLABLE SZEETHIOPI" + - "C SYLLABLE SZOETHIOPIC SYLLABLE SZWAETHIOPIC SYLLABLE RAETHIOPIC SYLLABL" + - "E RUETHIOPIC SYLLABLE RIETHIOPIC SYLLABLE RAAETHIOPIC SYLLABLE REEETHIOP" + - "IC SYLLABLE REETHIOPIC SYLLABLE ROETHIOPIC SYLLABLE RWAETHIOPIC SYLLABLE" + - " SAETHIOPIC SYLLABLE SUETHIOPIC SYLLABLE SIETHIOPIC SYLLABLE SAAETHIOPIC" + - " SYLLABLE SEEETHIOPIC SYLLABLE SEETHIOPIC SYLLABLE SOETHIOPIC SYLLABLE S" + - "WAETHIOPIC SYLLABLE SHAETHIOPIC SYLLABLE SHUETHIOPIC SYLLABLE SHIETHIOPI" + - "C SYLLABLE SHAAETHIOPIC SYLLABLE SHEEETHIOPIC SYLLABLE SHEETHIOPIC SYLLA" + - "BLE SHOETHIOPIC SYLLABLE SHWAETHIOPIC SYLLABLE QAETHIOPIC SYLLABLE QUETH" + - "IOPIC SYLLABLE QIETHIOPIC SYLLABLE QAAETHIOPIC SYLLABLE QEEETHIOPIC SYLL" + - "ABLE QEETHIOPIC SYLLABLE QOETHIOPIC SYLLABLE QOAETHIOPIC SYLLABLE QWAETH" + - "IOPIC SYLLABLE QWIETHIOPIC SYLLABLE QWAAETHIOPIC SYLLABLE QWEEETHIOPIC S" + - "YLLABLE QWEETHIOPIC SYLLABLE QHAETHIOPIC SYLLABLE QHUETHIOPIC SYLLABLE Q" + - "HIETHIOPIC SYLLABLE QHAAETHIOPIC SYLLABLE QHEEETHIOPIC SYLLABLE QHEETHIO" + - "PIC SYLLABLE QHOETHIOPIC SYLLABLE QHWAETHIOPIC SYLLABLE QHWIETHIOPIC SYL" + - "LABLE QHWAAETHIOPIC SYLLABLE QHWEEETHIOPIC SYLLABLE QHWEETHIOPIC SYLLABL" + - "E BAETHIOPIC SYLLABLE BUETHIOPIC SYLLABLE BIETHIOPIC SYLLABLE BAAETHIOPI" + - "C SYLLABLE BEEETHIOPIC SYLLABLE BEETHIOPIC SYLLABLE BOETHIOPIC SYLLABLE " + - "BWAETHIOPIC SYLLABLE VAETHIOPIC SYLLABLE VUETHIOPIC SYLLABLE VIETHIOPIC ") + ("" + - "SYLLABLE VAAETHIOPIC SYLLABLE VEEETHIOPIC SYLLABLE VEETHIOPIC SYLLABLE V" + - "OETHIOPIC SYLLABLE VWAETHIOPIC SYLLABLE TAETHIOPIC SYLLABLE TUETHIOPIC S" + - "YLLABLE TIETHIOPIC SYLLABLE TAAETHIOPIC SYLLABLE TEEETHIOPIC SYLLABLE TE" + - "ETHIOPIC SYLLABLE TOETHIOPIC SYLLABLE TWAETHIOPIC SYLLABLE CAETHIOPIC SY" + - "LLABLE CUETHIOPIC SYLLABLE CIETHIOPIC SYLLABLE CAAETHIOPIC SYLLABLE CEEE" + - "THIOPIC SYLLABLE CEETHIOPIC SYLLABLE COETHIOPIC SYLLABLE CWAETHIOPIC SYL" + - "LABLE XAETHIOPIC SYLLABLE XUETHIOPIC SYLLABLE XIETHIOPIC SYLLABLE XAAETH" + - "IOPIC SYLLABLE XEEETHIOPIC SYLLABLE XEETHIOPIC SYLLABLE XOETHIOPIC SYLLA" + - "BLE XOAETHIOPIC SYLLABLE XWAETHIOPIC SYLLABLE XWIETHIOPIC SYLLABLE XWAAE" + - "THIOPIC SYLLABLE XWEEETHIOPIC SYLLABLE XWEETHIOPIC SYLLABLE NAETHIOPIC S" + - "YLLABLE NUETHIOPIC SYLLABLE NIETHIOPIC SYLLABLE NAAETHIOPIC SYLLABLE NEE" + - "ETHIOPIC SYLLABLE NEETHIOPIC SYLLABLE NOETHIOPIC SYLLABLE NWAETHIOPIC SY" + - "LLABLE NYAETHIOPIC SYLLABLE NYUETHIOPIC SYLLABLE NYIETHIOPIC SYLLABLE NY" + - "AAETHIOPIC SYLLABLE NYEEETHIOPIC SYLLABLE NYEETHIOPIC SYLLABLE NYOETHIOP" + - "IC SYLLABLE NYWAETHIOPIC SYLLABLE GLOTTAL AETHIOPIC SYLLABLE GLOTTAL UET" + - "HIOPIC SYLLABLE GLOTTAL IETHIOPIC SYLLABLE GLOTTAL AAETHIOPIC SYLLABLE G" + - "LOTTAL EEETHIOPIC SYLLABLE GLOTTAL EETHIOPIC SYLLABLE GLOTTAL OETHIOPIC " + - "SYLLABLE GLOTTAL WAETHIOPIC SYLLABLE KAETHIOPIC SYLLABLE KUETHIOPIC SYLL" + - "ABLE KIETHIOPIC SYLLABLE KAAETHIOPIC SYLLABLE KEEETHIOPIC SYLLABLE KEETH" + - "IOPIC SYLLABLE KOETHIOPIC SYLLABLE KOAETHIOPIC SYLLABLE KWAETHIOPIC SYLL" + - "ABLE KWIETHIOPIC SYLLABLE KWAAETHIOPIC SYLLABLE KWEEETHIOPIC SYLLABLE KW" + - "EETHIOPIC SYLLABLE KXAETHIOPIC SYLLABLE KXUETHIOPIC SYLLABLE KXIETHIOPIC" + - " SYLLABLE KXAAETHIOPIC SYLLABLE KXEEETHIOPIC SYLLABLE KXEETHIOPIC SYLLAB" + - "LE KXOETHIOPIC SYLLABLE KXWAETHIOPIC SYLLABLE KXWIETHIOPIC SYLLABLE KXWA" + - "AETHIOPIC SYLLABLE KXWEEETHIOPIC SYLLABLE KXWEETHIOPIC SYLLABLE WAETHIOP" + - "IC SYLLABLE WUETHIOPIC SYLLABLE WIETHIOPIC SYLLABLE WAAETHIOPIC SYLLABLE" + - " WEEETHIOPIC SYLLABLE WEETHIOPIC SYLLABLE WOETHIOPIC SYLLABLE WOAETHIOPI" + - "C SYLLABLE PHARYNGEAL AETHIOPIC SYLLABLE PHARYNGEAL UETHIOPIC SYLLABLE P" + - "HARYNGEAL IETHIOPIC SYLLABLE PHARYNGEAL AAETHIOPIC SYLLABLE PHARYNGEAL E" + - "EETHIOPIC SYLLABLE PHARYNGEAL EETHIOPIC SYLLABLE PHARYNGEAL OETHIOPIC SY" + - "LLABLE ZAETHIOPIC SYLLABLE ZUETHIOPIC SYLLABLE ZIETHIOPIC SYLLABLE ZAAET" + - "HIOPIC SYLLABLE ZEEETHIOPIC SYLLABLE ZEETHIOPIC SYLLABLE ZOETHIOPIC SYLL" + - "ABLE ZWAETHIOPIC SYLLABLE ZHAETHIOPIC SYLLABLE ZHUETHIOPIC SYLLABLE ZHIE" + - "THIOPIC SYLLABLE ZHAAETHIOPIC SYLLABLE ZHEEETHIOPIC SYLLABLE ZHEETHIOPIC" + - " SYLLABLE ZHOETHIOPIC SYLLABLE ZHWAETHIOPIC SYLLABLE YAETHIOPIC SYLLABLE" + - " YUETHIOPIC SYLLABLE YIETHIOPIC SYLLABLE YAAETHIOPIC SYLLABLE YEEETHIOPI" + - "C SYLLABLE YEETHIOPIC SYLLABLE YOETHIOPIC SYLLABLE YOAETHIOPIC SYLLABLE " + - "DAETHIOPIC SYLLABLE DUETHIOPIC SYLLABLE DIETHIOPIC SYLLABLE DAAETHIOPIC " + - "SYLLABLE DEEETHIOPIC SYLLABLE DEETHIOPIC SYLLABLE DOETHIOPIC SYLLABLE DW" + - "AETHIOPIC SYLLABLE DDAETHIOPIC SYLLABLE DDUETHIOPIC SYLLABLE DDIETHIOPIC" + - " SYLLABLE DDAAETHIOPIC SYLLABLE DDEEETHIOPIC SYLLABLE DDEETHIOPIC SYLLAB" + - "LE DDOETHIOPIC SYLLABLE DDWAETHIOPIC SYLLABLE JAETHIOPIC SYLLABLE JUETHI" + - "OPIC SYLLABLE JIETHIOPIC SYLLABLE JAAETHIOPIC SYLLABLE JEEETHIOPIC SYLLA" + - "BLE JEETHIOPIC SYLLABLE JOETHIOPIC SYLLABLE JWAETHIOPIC SYLLABLE GAETHIO" + - "PIC SYLLABLE GUETHIOPIC SYLLABLE GIETHIOPIC SYLLABLE GAAETHIOPIC SYLLABL" + - "E GEEETHIOPIC SYLLABLE GEETHIOPIC SYLLABLE GOETHIOPIC SYLLABLE GOAETHIOP" + - "IC SYLLABLE GWAETHIOPIC SYLLABLE GWIETHIOPIC SYLLABLE GWAAETHIOPIC SYLLA" + - "BLE GWEEETHIOPIC SYLLABLE GWEETHIOPIC SYLLABLE GGAETHIOPIC SYLLABLE GGUE" + - "THIOPIC SYLLABLE GGIETHIOPIC SYLLABLE GGAAETHIOPIC SYLLABLE GGEEETHIOPIC" + - " SYLLABLE GGEETHIOPIC SYLLABLE GGOETHIOPIC SYLLABLE GGWAAETHIOPIC SYLLAB" + - "LE THAETHIOPIC SYLLABLE THUETHIOPIC SYLLABLE THIETHIOPIC SYLLABLE THAAET" + - "HIOPIC SYLLABLE THEEETHIOPIC SYLLABLE THEETHIOPIC SYLLABLE THOETHIOPIC S" + - "YLLABLE THWAETHIOPIC SYLLABLE CHAETHIOPIC SYLLABLE CHUETHIOPIC SYLLABLE " + - "CHIETHIOPIC SYLLABLE CHAAETHIOPIC SYLLABLE CHEEETHIOPIC SYLLABLE CHEETHI" + - "OPIC SYLLABLE CHOETHIOPIC SYLLABLE CHWAETHIOPIC SYLLABLE PHAETHIOPIC SYL" + - "LABLE PHUETHIOPIC SYLLABLE PHIETHIOPIC SYLLABLE PHAAETHIOPIC SYLLABLE PH" + - "EEETHIOPIC SYLLABLE PHEETHIOPIC SYLLABLE PHOETHIOPIC SYLLABLE PHWAETHIOP" + - "IC SYLLABLE TSAETHIOPIC SYLLABLE TSUETHIOPIC SYLLABLE TSIETHIOPIC SYLLAB" + - "LE TSAAETHIOPIC SYLLABLE TSEEETHIOPIC SYLLABLE TSEETHIOPIC SYLLABLE TSOE" + - "THIOPIC SYLLABLE TSWAETHIOPIC SYLLABLE TZAETHIOPIC SYLLABLE TZUETHIOPIC " + - "SYLLABLE TZIETHIOPIC SYLLABLE TZAAETHIOPIC SYLLABLE TZEEETHIOPIC SYLLABL" + - "E TZEETHIOPIC SYLLABLE TZOETHIOPIC SYLLABLE TZOAETHIOPIC SYLLABLE FAETHI" + - "OPIC SYLLABLE FUETHIOPIC SYLLABLE FIETHIOPIC SYLLABLE FAAETHIOPIC SYLLAB" + - "LE FEEETHIOPIC SYLLABLE FEETHIOPIC SYLLABLE FOETHIOPIC SYLLABLE FWAETHIO") + ("" + - "PIC SYLLABLE PAETHIOPIC SYLLABLE PUETHIOPIC SYLLABLE PIETHIOPIC SYLLABLE" + - " PAAETHIOPIC SYLLABLE PEEETHIOPIC SYLLABLE PEETHIOPIC SYLLABLE POETHIOPI" + - "C SYLLABLE PWAETHIOPIC SYLLABLE RYAETHIOPIC SYLLABLE MYAETHIOPIC SYLLABL" + - "E FYAETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARKETHIOPIC COMBINI" + - "NG VOWEL LENGTH MARKETHIOPIC COMBINING GEMINATION MARKETHIOPIC SECTION M" + - "ARKETHIOPIC WORDSPACEETHIOPIC FULL STOPETHIOPIC COMMAETHIOPIC SEMICOLONE" + - "THIOPIC COLONETHIOPIC PREFACE COLONETHIOPIC QUESTION MARKETHIOPIC PARAGR" + - "APH SEPARATORETHIOPIC DIGIT ONEETHIOPIC DIGIT TWOETHIOPIC DIGIT THREEETH" + - "IOPIC DIGIT FOURETHIOPIC DIGIT FIVEETHIOPIC DIGIT SIXETHIOPIC DIGIT SEVE" + - "NETHIOPIC DIGIT EIGHTETHIOPIC DIGIT NINEETHIOPIC NUMBER TENETHIOPIC NUMB" + - "ER TWENTYETHIOPIC NUMBER THIRTYETHIOPIC NUMBER FORTYETHIOPIC NUMBER FIFT" + - "YETHIOPIC NUMBER SIXTYETHIOPIC NUMBER SEVENTYETHIOPIC NUMBER EIGHTYETHIO" + - "PIC NUMBER NINETYETHIOPIC NUMBER HUNDREDETHIOPIC NUMBER TEN THOUSANDETHI" + - "OPIC SYLLABLE SEBATBEIT MWAETHIOPIC SYLLABLE MWIETHIOPIC SYLLABLE MWEEET" + - "HIOPIC SYLLABLE MWEETHIOPIC SYLLABLE SEBATBEIT BWAETHIOPIC SYLLABLE BWIE" + - "THIOPIC SYLLABLE BWEEETHIOPIC SYLLABLE BWEETHIOPIC SYLLABLE SEBATBEIT FW" + - "AETHIOPIC SYLLABLE FWIETHIOPIC SYLLABLE FWEEETHIOPIC SYLLABLE FWEETHIOPI" + - "C SYLLABLE SEBATBEIT PWAETHIOPIC SYLLABLE PWIETHIOPIC SYLLABLE PWEEETHIO" + - "PIC SYLLABLE PWEETHIOPIC TONAL MARK YIZETETHIOPIC TONAL MARK DERETETHIOP" + - "IC TONAL MARK RIKRIKETHIOPIC TONAL MARK SHORT RIKRIKETHIOPIC TONAL MARK " + - "DIFATETHIOPIC TONAL MARK KENATETHIOPIC TONAL MARK CHIRETETHIOPIC TONAL M" + - "ARK HIDETETHIOPIC TONAL MARK DERET-HIDETETHIOPIC TONAL MARK KURTCHEROKEE" + - " LETTER ACHEROKEE LETTER ECHEROKEE LETTER ICHEROKEE LETTER OCHEROKEE LET" + - "TER UCHEROKEE LETTER VCHEROKEE LETTER GACHEROKEE LETTER KACHEROKEE LETTE" + - "R GECHEROKEE LETTER GICHEROKEE LETTER GOCHEROKEE LETTER GUCHEROKEE LETTE" + - "R GVCHEROKEE LETTER HACHEROKEE LETTER HECHEROKEE LETTER HICHEROKEE LETTE" + - "R HOCHEROKEE LETTER HUCHEROKEE LETTER HVCHEROKEE LETTER LACHEROKEE LETTE" + - "R LECHEROKEE LETTER LICHEROKEE LETTER LOCHEROKEE LETTER LUCHEROKEE LETTE" + - "R LVCHEROKEE LETTER MACHEROKEE LETTER MECHEROKEE LETTER MICHEROKEE LETTE" + - "R MOCHEROKEE LETTER MUCHEROKEE LETTER NACHEROKEE LETTER HNACHEROKEE LETT" + - "ER NAHCHEROKEE LETTER NECHEROKEE LETTER NICHEROKEE LETTER NOCHEROKEE LET" + - "TER NUCHEROKEE LETTER NVCHEROKEE LETTER QUACHEROKEE LETTER QUECHEROKEE L" + - "ETTER QUICHEROKEE LETTER QUOCHEROKEE LETTER QUUCHEROKEE LETTER QUVCHEROK" + - "EE LETTER SACHEROKEE LETTER SCHEROKEE LETTER SECHEROKEE LETTER SICHEROKE" + - "E LETTER SOCHEROKEE LETTER SUCHEROKEE LETTER SVCHEROKEE LETTER DACHEROKE" + - "E LETTER TACHEROKEE LETTER DECHEROKEE LETTER TECHEROKEE LETTER DICHEROKE" + - "E LETTER TICHEROKEE LETTER DOCHEROKEE LETTER DUCHEROKEE LETTER DVCHEROKE" + - "E LETTER DLACHEROKEE LETTER TLACHEROKEE LETTER TLECHEROKEE LETTER TLICHE" + - "ROKEE LETTER TLOCHEROKEE LETTER TLUCHEROKEE LETTER TLVCHEROKEE LETTER TS" + - "ACHEROKEE LETTER TSECHEROKEE LETTER TSICHEROKEE LETTER TSOCHEROKEE LETTE" + - "R TSUCHEROKEE LETTER TSVCHEROKEE LETTER WACHEROKEE LETTER WECHEROKEE LET" + - "TER WICHEROKEE LETTER WOCHEROKEE LETTER WUCHEROKEE LETTER WVCHEROKEE LET" + - "TER YACHEROKEE LETTER YECHEROKEE LETTER YICHEROKEE LETTER YOCHEROKEE LET" + - "TER YUCHEROKEE LETTER YVCHEROKEE LETTER MVCHEROKEE SMALL LETTER YECHEROK" + - "EE SMALL LETTER YICHEROKEE SMALL LETTER YOCHEROKEE SMALL LETTER YUCHEROK" + - "EE SMALL LETTER YVCHEROKEE SMALL LETTER MVCANADIAN SYLLABICS HYPHENCANAD" + - "IAN SYLLABICS ECANADIAN SYLLABICS AAICANADIAN SYLLABICS ICANADIAN SYLLAB" + - "ICS IICANADIAN SYLLABICS OCANADIAN SYLLABICS OOCANADIAN SYLLABICS Y-CREE" + - " OOCANADIAN SYLLABICS CARRIER EECANADIAN SYLLABICS CARRIER ICANADIAN SYL" + - "LABICS ACANADIAN SYLLABICS AACANADIAN SYLLABICS WECANADIAN SYLLABICS WES" + - "T-CREE WECANADIAN SYLLABICS WICANADIAN SYLLABICS WEST-CREE WICANADIAN SY" + - "LLABICS WIICANADIAN SYLLABICS WEST-CREE WIICANADIAN SYLLABICS WOCANADIAN" + - " SYLLABICS WEST-CREE WOCANADIAN SYLLABICS WOOCANADIAN SYLLABICS WEST-CRE" + - "E WOOCANADIAN SYLLABICS NASKAPI WOOCANADIAN SYLLABICS WACANADIAN SYLLABI" + - "CS WEST-CREE WACANADIAN SYLLABICS WAACANADIAN SYLLABICS WEST-CREE WAACAN" + - "ADIAN SYLLABICS NASKAPI WAACANADIAN SYLLABICS AICANADIAN SYLLABICS Y-CRE" + - "E WCANADIAN SYLLABICS GLOTTAL STOPCANADIAN SYLLABICS FINAL ACUTECANADIAN" + - " SYLLABICS FINAL GRAVECANADIAN SYLLABICS FINAL BOTTOM HALF RINGCANADIAN " + - "SYLLABICS FINAL TOP HALF RINGCANADIAN SYLLABICS FINAL RIGHT HALF RINGCAN" + - "ADIAN SYLLABICS FINAL RINGCANADIAN SYLLABICS FINAL DOUBLE ACUTECANADIAN " + - "SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKESCANADIAN SYLLABICS FINAL MI" + - "DDLE DOTCANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKECANADIAN SYLLABI" + - "CS FINAL PLUSCANADIAN SYLLABICS FINAL DOWN TACKCANADIAN SYLLABICS ENCANA" + - "DIAN SYLLABICS INCANADIAN SYLLABICS ONCANADIAN SYLLABICS ANCANADIAN SYLL") + ("" + - "ABICS PECANADIAN SYLLABICS PAAICANADIAN SYLLABICS PICANADIAN SYLLABICS P" + - "IICANADIAN SYLLABICS POCANADIAN SYLLABICS POOCANADIAN SYLLABICS Y-CREE P" + - "OOCANADIAN SYLLABICS CARRIER HEECANADIAN SYLLABICS CARRIER HICANADIAN SY" + - "LLABICS PACANADIAN SYLLABICS PAACANADIAN SYLLABICS PWECANADIAN SYLLABICS" + - " WEST-CREE PWECANADIAN SYLLABICS PWICANADIAN SYLLABICS WEST-CREE PWICANA" + - "DIAN SYLLABICS PWIICANADIAN SYLLABICS WEST-CREE PWIICANADIAN SYLLABICS P" + - "WOCANADIAN SYLLABICS WEST-CREE PWOCANADIAN SYLLABICS PWOOCANADIAN SYLLAB" + - "ICS WEST-CREE PWOOCANADIAN SYLLABICS PWACANADIAN SYLLABICS WEST-CREE PWA" + - "CANADIAN SYLLABICS PWAACANADIAN SYLLABICS WEST-CREE PWAACANADIAN SYLLABI" + - "CS Y-CREE PWAACANADIAN SYLLABICS PCANADIAN SYLLABICS WEST-CREE PCANADIAN" + - " SYLLABICS CARRIER HCANADIAN SYLLABICS TECANADIAN SYLLABICS TAAICANADIAN" + - " SYLLABICS TICANADIAN SYLLABICS TIICANADIAN SYLLABICS TOCANADIAN SYLLABI" + - "CS TOOCANADIAN SYLLABICS Y-CREE TOOCANADIAN SYLLABICS CARRIER DEECANADIA" + - "N SYLLABICS CARRIER DICANADIAN SYLLABICS TACANADIAN SYLLABICS TAACANADIA" + - "N SYLLABICS TWECANADIAN SYLLABICS WEST-CREE TWECANADIAN SYLLABICS TWICAN" + - "ADIAN SYLLABICS WEST-CREE TWICANADIAN SYLLABICS TWIICANADIAN SYLLABICS W" + - "EST-CREE TWIICANADIAN SYLLABICS TWOCANADIAN SYLLABICS WEST-CREE TWOCANAD" + - "IAN SYLLABICS TWOOCANADIAN SYLLABICS WEST-CREE TWOOCANADIAN SYLLABICS TW" + - "ACANADIAN SYLLABICS WEST-CREE TWACANADIAN SYLLABICS TWAACANADIAN SYLLABI" + - "CS WEST-CREE TWAACANADIAN SYLLABICS NASKAPI TWAACANADIAN SYLLABICS TCANA" + - "DIAN SYLLABICS TTECANADIAN SYLLABICS TTICANADIAN SYLLABICS TTOCANADIAN S" + - "YLLABICS TTACANADIAN SYLLABICS KECANADIAN SYLLABICS KAAICANADIAN SYLLABI" + - "CS KICANADIAN SYLLABICS KIICANADIAN SYLLABICS KOCANADIAN SYLLABICS KOOCA" + - "NADIAN SYLLABICS Y-CREE KOOCANADIAN SYLLABICS KACANADIAN SYLLABICS KAACA" + - "NADIAN SYLLABICS KWECANADIAN SYLLABICS WEST-CREE KWECANADIAN SYLLABICS K" + - "WICANADIAN SYLLABICS WEST-CREE KWICANADIAN SYLLABICS KWIICANADIAN SYLLAB" + - "ICS WEST-CREE KWIICANADIAN SYLLABICS KWOCANADIAN SYLLABICS WEST-CREE KWO" + - "CANADIAN SYLLABICS KWOOCANADIAN SYLLABICS WEST-CREE KWOOCANADIAN SYLLABI" + - "CS KWACANADIAN SYLLABICS WEST-CREE KWACANADIAN SYLLABICS KWAACANADIAN SY" + - "LLABICS WEST-CREE KWAACANADIAN SYLLABICS NASKAPI KWAACANADIAN SYLLABICS " + - "KCANADIAN SYLLABICS KWCANADIAN SYLLABICS SOUTH-SLAVEY KEHCANADIAN SYLLAB" + - "ICS SOUTH-SLAVEY KIHCANADIAN SYLLABICS SOUTH-SLAVEY KOHCANADIAN SYLLABIC" + - "S SOUTH-SLAVEY KAHCANADIAN SYLLABICS CECANADIAN SYLLABICS CAAICANADIAN S" + - "YLLABICS CICANADIAN SYLLABICS CIICANADIAN SYLLABICS COCANADIAN SYLLABICS" + - " COOCANADIAN SYLLABICS Y-CREE COOCANADIAN SYLLABICS CACANADIAN SYLLABICS" + - " CAACANADIAN SYLLABICS CWECANADIAN SYLLABICS WEST-CREE CWECANADIAN SYLLA" + - "BICS CWICANADIAN SYLLABICS WEST-CREE CWICANADIAN SYLLABICS CWIICANADIAN " + - "SYLLABICS WEST-CREE CWIICANADIAN SYLLABICS CWOCANADIAN SYLLABICS WEST-CR" + - "EE CWOCANADIAN SYLLABICS CWOOCANADIAN SYLLABICS WEST-CREE CWOOCANADIAN S" + - "YLLABICS CWACANADIAN SYLLABICS WEST-CREE CWACANADIAN SYLLABICS CWAACANAD" + - "IAN SYLLABICS WEST-CREE CWAACANADIAN SYLLABICS NASKAPI CWAACANADIAN SYLL" + - "ABICS CCANADIAN SYLLABICS SAYISI THCANADIAN SYLLABICS MECANADIAN SYLLABI" + - "CS MAAICANADIAN SYLLABICS MICANADIAN SYLLABICS MIICANADIAN SYLLABICS MOC" + - "ANADIAN SYLLABICS MOOCANADIAN SYLLABICS Y-CREE MOOCANADIAN SYLLABICS MAC" + - "ANADIAN SYLLABICS MAACANADIAN SYLLABICS MWECANADIAN SYLLABICS WEST-CREE " + - "MWECANADIAN SYLLABICS MWICANADIAN SYLLABICS WEST-CREE MWICANADIAN SYLLAB" + - "ICS MWIICANADIAN SYLLABICS WEST-CREE MWIICANADIAN SYLLABICS MWOCANADIAN " + - "SYLLABICS WEST-CREE MWOCANADIAN SYLLABICS MWOOCANADIAN SYLLABICS WEST-CR" + - "EE MWOOCANADIAN SYLLABICS MWACANADIAN SYLLABICS WEST-CREE MWACANADIAN SY" + - "LLABICS MWAACANADIAN SYLLABICS WEST-CREE MWAACANADIAN SYLLABICS NASKAPI " + - "MWAACANADIAN SYLLABICS MCANADIAN SYLLABICS WEST-CREE MCANADIAN SYLLABICS" + - " MHCANADIAN SYLLABICS ATHAPASCAN MCANADIAN SYLLABICS SAYISI MCANADIAN SY" + - "LLABICS NECANADIAN SYLLABICS NAAICANADIAN SYLLABICS NICANADIAN SYLLABICS" + - " NIICANADIAN SYLLABICS NOCANADIAN SYLLABICS NOOCANADIAN SYLLABICS Y-CREE" + - " NOOCANADIAN SYLLABICS NACANADIAN SYLLABICS NAACANADIAN SYLLABICS NWECAN" + - "ADIAN SYLLABICS WEST-CREE NWECANADIAN SYLLABICS NWACANADIAN SYLLABICS WE" + - "ST-CREE NWACANADIAN SYLLABICS NWAACANADIAN SYLLABICS WEST-CREE NWAACANAD" + - "IAN SYLLABICS NASKAPI NWAACANADIAN SYLLABICS NCANADIAN SYLLABICS CARRIER" + - " NGCANADIAN SYLLABICS NHCANADIAN SYLLABICS LECANADIAN SYLLABICS LAAICANA" + - "DIAN SYLLABICS LICANADIAN SYLLABICS LIICANADIAN SYLLABICS LOCANADIAN SYL" + - "LABICS LOOCANADIAN SYLLABICS Y-CREE LOOCANADIAN SYLLABICS LACANADIAN SYL" + - "LABICS LAACANADIAN SYLLABICS LWECANADIAN SYLLABICS WEST-CREE LWECANADIAN" + - " SYLLABICS LWICANADIAN SYLLABICS WEST-CREE LWICANADIAN SYLLABICS LWIICAN" + - "ADIAN SYLLABICS WEST-CREE LWIICANADIAN SYLLABICS LWOCANADIAN SYLLABICS W") + ("" + - "EST-CREE LWOCANADIAN SYLLABICS LWOOCANADIAN SYLLABICS WEST-CREE LWOOCANA" + - "DIAN SYLLABICS LWACANADIAN SYLLABICS WEST-CREE LWACANADIAN SYLLABICS LWA" + - "ACANADIAN SYLLABICS WEST-CREE LWAACANADIAN SYLLABICS LCANADIAN SYLLABICS" + - " WEST-CREE LCANADIAN SYLLABICS MEDIAL LCANADIAN SYLLABICS SECANADIAN SYL" + - "LABICS SAAICANADIAN SYLLABICS SICANADIAN SYLLABICS SIICANADIAN SYLLABICS" + - " SOCANADIAN SYLLABICS SOOCANADIAN SYLLABICS Y-CREE SOOCANADIAN SYLLABICS" + - " SACANADIAN SYLLABICS SAACANADIAN SYLLABICS SWECANADIAN SYLLABICS WEST-C" + - "REE SWECANADIAN SYLLABICS SWICANADIAN SYLLABICS WEST-CREE SWICANADIAN SY" + - "LLABICS SWIICANADIAN SYLLABICS WEST-CREE SWIICANADIAN SYLLABICS SWOCANAD" + - "IAN SYLLABICS WEST-CREE SWOCANADIAN SYLLABICS SWOOCANADIAN SYLLABICS WES" + - "T-CREE SWOOCANADIAN SYLLABICS SWACANADIAN SYLLABICS WEST-CREE SWACANADIA" + - "N SYLLABICS SWAACANADIAN SYLLABICS WEST-CREE SWAACANADIAN SYLLABICS NASK" + - "API SWAACANADIAN SYLLABICS SCANADIAN SYLLABICS ATHAPASCAN SCANADIAN SYLL" + - "ABICS SWCANADIAN SYLLABICS BLACKFOOT SCANADIAN SYLLABICS MOOSE-CREE SKCA" + - "NADIAN SYLLABICS NASKAPI SKWCANADIAN SYLLABICS NASKAPI S-WCANADIAN SYLLA" + - "BICS NASKAPI SPWACANADIAN SYLLABICS NASKAPI STWACANADIAN SYLLABICS NASKA" + - "PI SKWACANADIAN SYLLABICS NASKAPI SCWACANADIAN SYLLABICS SHECANADIAN SYL" + - "LABICS SHICANADIAN SYLLABICS SHIICANADIAN SYLLABICS SHOCANADIAN SYLLABIC" + - "S SHOOCANADIAN SYLLABICS SHACANADIAN SYLLABICS SHAACANADIAN SYLLABICS SH" + - "WECANADIAN SYLLABICS WEST-CREE SHWECANADIAN SYLLABICS SHWICANADIAN SYLLA" + - "BICS WEST-CREE SHWICANADIAN SYLLABICS SHWIICANADIAN SYLLABICS WEST-CREE " + - "SHWIICANADIAN SYLLABICS SHWOCANADIAN SYLLABICS WEST-CREE SHWOCANADIAN SY" + - "LLABICS SHWOOCANADIAN SYLLABICS WEST-CREE SHWOOCANADIAN SYLLABICS SHWACA" + - "NADIAN SYLLABICS WEST-CREE SHWACANADIAN SYLLABICS SHWAACANADIAN SYLLABIC" + - "S WEST-CREE SHWAACANADIAN SYLLABICS SHCANADIAN SYLLABICS YECANADIAN SYLL" + - "ABICS YAAICANADIAN SYLLABICS YICANADIAN SYLLABICS YIICANADIAN SYLLABICS " + - "YOCANADIAN SYLLABICS YOOCANADIAN SYLLABICS Y-CREE YOOCANADIAN SYLLABICS " + - "YACANADIAN SYLLABICS YAACANADIAN SYLLABICS YWECANADIAN SYLLABICS WEST-CR" + - "EE YWECANADIAN SYLLABICS YWICANADIAN SYLLABICS WEST-CREE YWICANADIAN SYL" + - "LABICS YWIICANADIAN SYLLABICS WEST-CREE YWIICANADIAN SYLLABICS YWOCANADI" + - "AN SYLLABICS WEST-CREE YWOCANADIAN SYLLABICS YWOOCANADIAN SYLLABICS WEST" + - "-CREE YWOOCANADIAN SYLLABICS YWACANADIAN SYLLABICS WEST-CREE YWACANADIAN" + - " SYLLABICS YWAACANADIAN SYLLABICS WEST-CREE YWAACANADIAN SYLLABICS NASKA" + - "PI YWAACANADIAN SYLLABICS YCANADIAN SYLLABICS BIBLE-CREE YCANADIAN SYLLA" + - "BICS WEST-CREE YCANADIAN SYLLABICS SAYISI YICANADIAN SYLLABICS RECANADIA" + - "N SYLLABICS R-CREE RECANADIAN SYLLABICS WEST-CREE LECANADIAN SYLLABICS R" + - "AAICANADIAN SYLLABICS RICANADIAN SYLLABICS RIICANADIAN SYLLABICS ROCANAD" + - "IAN SYLLABICS ROOCANADIAN SYLLABICS WEST-CREE LOCANADIAN SYLLABICS RACAN" + - "ADIAN SYLLABICS RAACANADIAN SYLLABICS WEST-CREE LACANADIAN SYLLABICS RWA" + - "ACANADIAN SYLLABICS WEST-CREE RWAACANADIAN SYLLABICS RCANADIAN SYLLABICS" + - " WEST-CREE RCANADIAN SYLLABICS MEDIAL RCANADIAN SYLLABICS FECANADIAN SYL" + - "LABICS FAAICANADIAN SYLLABICS FICANADIAN SYLLABICS FIICANADIAN SYLLABICS" + - " FOCANADIAN SYLLABICS FOOCANADIAN SYLLABICS FACANADIAN SYLLABICS FAACANA" + - "DIAN SYLLABICS FWAACANADIAN SYLLABICS WEST-CREE FWAACANADIAN SYLLABICS F" + - "CANADIAN SYLLABICS THECANADIAN SYLLABICS N-CREE THECANADIAN SYLLABICS TH" + - "ICANADIAN SYLLABICS N-CREE THICANADIAN SYLLABICS THIICANADIAN SYLLABICS " + - "N-CREE THIICANADIAN SYLLABICS THOCANADIAN SYLLABICS THOOCANADIAN SYLLABI" + - "CS THACANADIAN SYLLABICS THAACANADIAN SYLLABICS THWAACANADIAN SYLLABICS " + - "WEST-CREE THWAACANADIAN SYLLABICS THCANADIAN SYLLABICS TTHECANADIAN SYLL" + - "ABICS TTHICANADIAN SYLLABICS TTHOCANADIAN SYLLABICS TTHACANADIAN SYLLABI" + - "CS TTHCANADIAN SYLLABICS TYECANADIAN SYLLABICS TYICANADIAN SYLLABICS TYO" + - "CANADIAN SYLLABICS TYACANADIAN SYLLABICS NUNAVIK HECANADIAN SYLLABICS NU" + - "NAVIK HICANADIAN SYLLABICS NUNAVIK HIICANADIAN SYLLABICS NUNAVIK HOCANAD" + - "IAN SYLLABICS NUNAVIK HOOCANADIAN SYLLABICS NUNAVIK HACANADIAN SYLLABICS" + - " NUNAVIK HAACANADIAN SYLLABICS NUNAVIK HCANADIAN SYLLABICS NUNAVUT HCANA" + - "DIAN SYLLABICS HKCANADIAN SYLLABICS QAAICANADIAN SYLLABICS QICANADIAN SY" + - "LLABICS QIICANADIAN SYLLABICS QOCANADIAN SYLLABICS QOOCANADIAN SYLLABICS" + - " QACANADIAN SYLLABICS QAACANADIAN SYLLABICS QCANADIAN SYLLABICS TLHECANA" + - "DIAN SYLLABICS TLHICANADIAN SYLLABICS TLHOCANADIAN SYLLABICS TLHACANADIA" + - "N SYLLABICS WEST-CREE RECANADIAN SYLLABICS WEST-CREE RICANADIAN SYLLABIC" + - "S WEST-CREE ROCANADIAN SYLLABICS WEST-CREE RACANADIAN SYLLABICS NGAAICAN" + - "ADIAN SYLLABICS NGICANADIAN SYLLABICS NGIICANADIAN SYLLABICS NGOCANADIAN" + - " SYLLABICS NGOOCANADIAN SYLLABICS NGACANADIAN SYLLABICS NGAACANADIAN SYL" + - "LABICS NGCANADIAN SYLLABICS NNGCANADIAN SYLLABICS SAYISI SHECANADIAN SYL") + ("" + - "LABICS SAYISI SHICANADIAN SYLLABICS SAYISI SHOCANADIAN SYLLABICS SAYISI " + - "SHACANADIAN SYLLABICS WOODS-CREE THECANADIAN SYLLABICS WOODS-CREE THICAN" + - "ADIAN SYLLABICS WOODS-CREE THOCANADIAN SYLLABICS WOODS-CREE THACANADIAN " + - "SYLLABICS WOODS-CREE THCANADIAN SYLLABICS LHICANADIAN SYLLABICS LHIICANA" + - "DIAN SYLLABICS LHOCANADIAN SYLLABICS LHOOCANADIAN SYLLABICS LHACANADIAN " + - "SYLLABICS LHAACANADIAN SYLLABICS LHCANADIAN SYLLABICS TH-CREE THECANADIA" + - "N SYLLABICS TH-CREE THICANADIAN SYLLABICS TH-CREE THIICANADIAN SYLLABICS" + - " TH-CREE THOCANADIAN SYLLABICS TH-CREE THOOCANADIAN SYLLABICS TH-CREE TH" + - "ACANADIAN SYLLABICS TH-CREE THAACANADIAN SYLLABICS TH-CREE THCANADIAN SY" + - "LLABICS AIVILIK BCANADIAN SYLLABICS BLACKFOOT ECANADIAN SYLLABICS BLACKF" + - "OOT ICANADIAN SYLLABICS BLACKFOOT OCANADIAN SYLLABICS BLACKFOOT ACANADIA" + - "N SYLLABICS BLACKFOOT WECANADIAN SYLLABICS BLACKFOOT WICANADIAN SYLLABIC" + - "S BLACKFOOT WOCANADIAN SYLLABICS BLACKFOOT WACANADIAN SYLLABICS BLACKFOO" + - "T NECANADIAN SYLLABICS BLACKFOOT NICANADIAN SYLLABICS BLACKFOOT NOCANADI" + - "AN SYLLABICS BLACKFOOT NACANADIAN SYLLABICS BLACKFOOT KECANADIAN SYLLABI" + - "CS BLACKFOOT KICANADIAN SYLLABICS BLACKFOOT KOCANADIAN SYLLABICS BLACKFO" + - "OT KACANADIAN SYLLABICS SAYISI HECANADIAN SYLLABICS SAYISI HICANADIAN SY" + - "LLABICS SAYISI HOCANADIAN SYLLABICS SAYISI HACANADIAN SYLLABICS CARRIER " + - "GHUCANADIAN SYLLABICS CARRIER GHOCANADIAN SYLLABICS CARRIER GHECANADIAN " + - "SYLLABICS CARRIER GHEECANADIAN SYLLABICS CARRIER GHICANADIAN SYLLABICS C" + - "ARRIER GHACANADIAN SYLLABICS CARRIER RUCANADIAN SYLLABICS CARRIER ROCANA" + - "DIAN SYLLABICS CARRIER RECANADIAN SYLLABICS CARRIER REECANADIAN SYLLABIC" + - "S CARRIER RICANADIAN SYLLABICS CARRIER RACANADIAN SYLLABICS CARRIER WUCA" + - "NADIAN SYLLABICS CARRIER WOCANADIAN SYLLABICS CARRIER WECANADIAN SYLLABI" + - "CS CARRIER WEECANADIAN SYLLABICS CARRIER WICANADIAN SYLLABICS CARRIER WA" + - "CANADIAN SYLLABICS CARRIER HWUCANADIAN SYLLABICS CARRIER HWOCANADIAN SYL" + - "LABICS CARRIER HWECANADIAN SYLLABICS CARRIER HWEECANADIAN SYLLABICS CARR" + - "IER HWICANADIAN SYLLABICS CARRIER HWACANADIAN SYLLABICS CARRIER THUCANAD" + - "IAN SYLLABICS CARRIER THOCANADIAN SYLLABICS CARRIER THECANADIAN SYLLABIC" + - "S CARRIER THEECANADIAN SYLLABICS CARRIER THICANADIAN SYLLABICS CARRIER T" + - "HACANADIAN SYLLABICS CARRIER TTUCANADIAN SYLLABICS CARRIER TTOCANADIAN S" + - "YLLABICS CARRIER TTECANADIAN SYLLABICS CARRIER TTEECANADIAN SYLLABICS CA" + - "RRIER TTICANADIAN SYLLABICS CARRIER TTACANADIAN SYLLABICS CARRIER PUCANA" + - "DIAN SYLLABICS CARRIER POCANADIAN SYLLABICS CARRIER PECANADIAN SYLLABICS" + - " CARRIER PEECANADIAN SYLLABICS CARRIER PICANADIAN SYLLABICS CARRIER PACA" + - "NADIAN SYLLABICS CARRIER PCANADIAN SYLLABICS CARRIER GUCANADIAN SYLLABIC" + - "S CARRIER GOCANADIAN SYLLABICS CARRIER GECANADIAN SYLLABICS CARRIER GEEC" + - "ANADIAN SYLLABICS CARRIER GICANADIAN SYLLABICS CARRIER GACANADIAN SYLLAB" + - "ICS CARRIER KHUCANADIAN SYLLABICS CARRIER KHOCANADIAN SYLLABICS CARRIER " + - "KHECANADIAN SYLLABICS CARRIER KHEECANADIAN SYLLABICS CARRIER KHICANADIAN" + - " SYLLABICS CARRIER KHACANADIAN SYLLABICS CARRIER KKUCANADIAN SYLLABICS C" + - "ARRIER KKOCANADIAN SYLLABICS CARRIER KKECANADIAN SYLLABICS CARRIER KKEEC" + - "ANADIAN SYLLABICS CARRIER KKICANADIAN SYLLABICS CARRIER KKACANADIAN SYLL" + - "ABICS CARRIER KKCANADIAN SYLLABICS CARRIER NUCANADIAN SYLLABICS CARRIER " + - "NOCANADIAN SYLLABICS CARRIER NECANADIAN SYLLABICS CARRIER NEECANADIAN SY" + - "LLABICS CARRIER NICANADIAN SYLLABICS CARRIER NACANADIAN SYLLABICS CARRIE" + - "R MUCANADIAN SYLLABICS CARRIER MOCANADIAN SYLLABICS CARRIER MECANADIAN S" + - "YLLABICS CARRIER MEECANADIAN SYLLABICS CARRIER MICANADIAN SYLLABICS CARR" + - "IER MACANADIAN SYLLABICS CARRIER YUCANADIAN SYLLABICS CARRIER YOCANADIAN" + - " SYLLABICS CARRIER YECANADIAN SYLLABICS CARRIER YEECANADIAN SYLLABICS CA" + - "RRIER YICANADIAN SYLLABICS CARRIER YACANADIAN SYLLABICS CARRIER JUCANADI" + - "AN SYLLABICS SAYISI JUCANADIAN SYLLABICS CARRIER JOCANADIAN SYLLABICS CA" + - "RRIER JECANADIAN SYLLABICS CARRIER JEECANADIAN SYLLABICS CARRIER JICANAD" + - "IAN SYLLABICS SAYISI JICANADIAN SYLLABICS CARRIER JACANADIAN SYLLABICS C" + - "ARRIER JJUCANADIAN SYLLABICS CARRIER JJOCANADIAN SYLLABICS CARRIER JJECA" + - "NADIAN SYLLABICS CARRIER JJEECANADIAN SYLLABICS CARRIER JJICANADIAN SYLL" + - "ABICS CARRIER JJACANADIAN SYLLABICS CARRIER LUCANADIAN SYLLABICS CARRIER" + - " LOCANADIAN SYLLABICS CARRIER LECANADIAN SYLLABICS CARRIER LEECANADIAN S" + - "YLLABICS CARRIER LICANADIAN SYLLABICS CARRIER LACANADIAN SYLLABICS CARRI" + - "ER DLUCANADIAN SYLLABICS CARRIER DLOCANADIAN SYLLABICS CARRIER DLECANADI" + - "AN SYLLABICS CARRIER DLEECANADIAN SYLLABICS CARRIER DLICANADIAN SYLLABIC" + - "S CARRIER DLACANADIAN SYLLABICS CARRIER LHUCANADIAN SYLLABICS CARRIER LH" + - "OCANADIAN SYLLABICS CARRIER LHECANADIAN SYLLABICS CARRIER LHEECANADIAN S" + - "YLLABICS CARRIER LHICANADIAN SYLLABICS CARRIER LHACANADIAN SYLLABICS CAR") + ("" + - "RIER TLHUCANADIAN SYLLABICS CARRIER TLHOCANADIAN SYLLABICS CARRIER TLHEC" + - "ANADIAN SYLLABICS CARRIER TLHEECANADIAN SYLLABICS CARRIER TLHICANADIAN S" + - "YLLABICS CARRIER TLHACANADIAN SYLLABICS CARRIER TLUCANADIAN SYLLABICS CA" + - "RRIER TLOCANADIAN SYLLABICS CARRIER TLECANADIAN SYLLABICS CARRIER TLEECA" + - "NADIAN SYLLABICS CARRIER TLICANADIAN SYLLABICS CARRIER TLACANADIAN SYLLA" + - "BICS CARRIER ZUCANADIAN SYLLABICS CARRIER ZOCANADIAN SYLLABICS CARRIER Z" + - "ECANADIAN SYLLABICS CARRIER ZEECANADIAN SYLLABICS CARRIER ZICANADIAN SYL" + - "LABICS CARRIER ZACANADIAN SYLLABICS CARRIER ZCANADIAN SYLLABICS CARRIER " + - "INITIAL ZCANADIAN SYLLABICS CARRIER DZUCANADIAN SYLLABICS CARRIER DZOCAN" + - "ADIAN SYLLABICS CARRIER DZECANADIAN SYLLABICS CARRIER DZEECANADIAN SYLLA" + - "BICS CARRIER DZICANADIAN SYLLABICS CARRIER DZACANADIAN SYLLABICS CARRIER" + - " SUCANADIAN SYLLABICS CARRIER SOCANADIAN SYLLABICS CARRIER SECANADIAN SY" + - "LLABICS CARRIER SEECANADIAN SYLLABICS CARRIER SICANADIAN SYLLABICS CARRI" + - "ER SACANADIAN SYLLABICS CARRIER SHUCANADIAN SYLLABICS CARRIER SHOCANADIA" + - "N SYLLABICS CARRIER SHECANADIAN SYLLABICS CARRIER SHEECANADIAN SYLLABICS" + - " CARRIER SHICANADIAN SYLLABICS CARRIER SHACANADIAN SYLLABICS CARRIER SHC" + - "ANADIAN SYLLABICS CARRIER TSUCANADIAN SYLLABICS CARRIER TSOCANADIAN SYLL" + - "ABICS CARRIER TSECANADIAN SYLLABICS CARRIER TSEECANADIAN SYLLABICS CARRI" + - "ER TSICANADIAN SYLLABICS CARRIER TSACANADIAN SYLLABICS CARRIER CHUCANADI" + - "AN SYLLABICS CARRIER CHOCANADIAN SYLLABICS CARRIER CHECANADIAN SYLLABICS" + - " CARRIER CHEECANADIAN SYLLABICS CARRIER CHICANADIAN SYLLABICS CARRIER CH" + - "ACANADIAN SYLLABICS CARRIER TTSUCANADIAN SYLLABICS CARRIER TTSOCANADIAN " + - "SYLLABICS CARRIER TTSECANADIAN SYLLABICS CARRIER TTSEECANADIAN SYLLABICS" + - " CARRIER TTSICANADIAN SYLLABICS CARRIER TTSACANADIAN SYLLABICS CHI SIGNC" + - "ANADIAN SYLLABICS FULL STOPCANADIAN SYLLABICS QAICANADIAN SYLLABICS NGAI" + - "CANADIAN SYLLABICS NNGICANADIAN SYLLABICS NNGIICANADIAN SYLLABICS NNGOCA" + - "NADIAN SYLLABICS NNGOOCANADIAN SYLLABICS NNGACANADIAN SYLLABICS NNGAACAN" + - "ADIAN SYLLABICS WOODS-CREE THWEECANADIAN SYLLABICS WOODS-CREE THWICANADI" + - "AN SYLLABICS WOODS-CREE THWIICANADIAN SYLLABICS WOODS-CREE THWOCANADIAN " + - "SYLLABICS WOODS-CREE THWOOCANADIAN SYLLABICS WOODS-CREE THWACANADIAN SYL" + - "LABICS WOODS-CREE THWAACANADIAN SYLLABICS WOODS-CREE FINAL THCANADIAN SY" + - "LLABICS BLACKFOOT WOGHAM SPACE MARKOGHAM LETTER BEITHOGHAM LETTER LUISOG" + - "HAM LETTER FEARNOGHAM LETTER SAILOGHAM LETTER NIONOGHAM LETTER UATHOGHAM" + - " LETTER DAIROGHAM LETTER TINNEOGHAM LETTER COLLOGHAM LETTER CEIRTOGHAM L" + - "ETTER MUINOGHAM LETTER GORTOGHAM LETTER NGEADALOGHAM LETTER STRAIFOGHAM " + - "LETTER RUISOGHAM LETTER AILMOGHAM LETTER ONNOGHAM LETTER UROGHAM LETTER " + - "EADHADHOGHAM LETTER IODHADHOGHAM LETTER EABHADHOGHAM LETTER OROGHAM LETT" + - "ER UILLEANNOGHAM LETTER IFINOGHAM LETTER EAMHANCHOLLOGHAM LETTER PEITHOG" + - "HAM FEATHER MARKOGHAM REVERSED FEATHER MARKRUNIC LETTER FEHU FEOH FE FRU" + - "NIC LETTER VRUNIC LETTER URUZ UR URUNIC LETTER YRRUNIC LETTER YRUNIC LET" + - "TER WRUNIC LETTER THURISAZ THURS THORNRUNIC LETTER ETHRUNIC LETTER ANSUZ" + - " ARUNIC LETTER OS ORUNIC LETTER AC ARUNIC LETTER AESCRUNIC LETTER LONG-B" + - "RANCH-OSS ORUNIC LETTER SHORT-TWIG-OSS ORUNIC LETTER ORUNIC LETTER OERUN" + - "IC LETTER ONRUNIC LETTER RAIDO RAD REID RRUNIC LETTER KAUNARUNIC LETTER " + - "CENRUNIC LETTER KAUN KRUNIC LETTER GRUNIC LETTER ENGRUNIC LETTER GEBO GY" + - "FU GRUNIC LETTER GARRUNIC LETTER WUNJO WYNN WRUNIC LETTER HAGLAZ HRUNIC " + - "LETTER HAEGL HRUNIC LETTER LONG-BRANCH-HAGALL HRUNIC LETTER SHORT-TWIG-H" + - "AGALL HRUNIC LETTER NAUDIZ NYD NAUD NRUNIC LETTER SHORT-TWIG-NAUD NRUNIC" + - " LETTER DOTTED-NRUNIC LETTER ISAZ IS ISS IRUNIC LETTER ERUNIC LETTER JER" + - "AN JRUNIC LETTER GERRUNIC LETTER LONG-BRANCH-AR AERUNIC LETTER SHORT-TWI" + - "G-AR ARUNIC LETTER IWAZ EOHRUNIC LETTER PERTHO PEORTH PRUNIC LETTER ALGI" + - "Z EOLHXRUNIC LETTER SOWILO SRUNIC LETTER SIGEL LONG-BRANCH-SOL SRUNIC LE" + - "TTER SHORT-TWIG-SOL SRUNIC LETTER CRUNIC LETTER ZRUNIC LETTER TIWAZ TIR " + - "TYR TRUNIC LETTER SHORT-TWIG-TYR TRUNIC LETTER DRUNIC LETTER BERKANAN BE" + - "ORC BJARKAN BRUNIC LETTER SHORT-TWIG-BJARKAN BRUNIC LETTER DOTTED-PRUNIC" + - " LETTER OPEN-PRUNIC LETTER EHWAZ EH ERUNIC LETTER MANNAZ MAN MRUNIC LETT" + - "ER LONG-BRANCH-MADR MRUNIC LETTER SHORT-TWIG-MADR MRUNIC LETTER LAUKAZ L" + - "AGU LOGR LRUNIC LETTER DOTTED-LRUNIC LETTER INGWAZRUNIC LETTER INGRUNIC " + - "LETTER DAGAZ DAEG DRUNIC LETTER OTHALAN ETHEL ORUNIC LETTER EARRUNIC LET" + - "TER IORRUNIC LETTER CWEORTHRUNIC LETTER CALCRUNIC LETTER CEALCRUNIC LETT" + - "ER STANRUNIC LETTER LONG-BRANCH-YRRUNIC LETTER SHORT-TWIG-YRRUNIC LETTER" + - " ICELANDIC-YRRUNIC LETTER QRUNIC LETTER XRUNIC SINGLE PUNCTUATIONRUNIC M" + - "ULTIPLE PUNCTUATIONRUNIC CROSS PUNCTUATIONRUNIC ARLAUG SYMBOLRUNIC TVIMA" + - "DUR SYMBOLRUNIC BELGTHOR SYMBOLRUNIC LETTER KRUNIC LETTER SHRUNIC LETTER") + ("" + - " OORUNIC LETTER FRANKS CASKET OSRUNIC LETTER FRANKS CASKET ISRUNIC LETTE" + - "R FRANKS CASKET EHRUNIC LETTER FRANKS CASKET ACRUNIC LETTER FRANKS CASKE" + - "T AESCTAGALOG LETTER ATAGALOG LETTER ITAGALOG LETTER UTAGALOG LETTER KAT" + - "AGALOG LETTER GATAGALOG LETTER NGATAGALOG LETTER TATAGALOG LETTER DATAGA" + - "LOG LETTER NATAGALOG LETTER PATAGALOG LETTER BATAGALOG LETTER MATAGALOG " + - "LETTER YATAGALOG LETTER LATAGALOG LETTER WATAGALOG LETTER SATAGALOG LETT" + - "ER HATAGALOG VOWEL SIGN ITAGALOG VOWEL SIGN UTAGALOG SIGN VIRAMAHANUNOO " + - "LETTER AHANUNOO LETTER IHANUNOO LETTER UHANUNOO LETTER KAHANUNOO LETTER " + - "GAHANUNOO LETTER NGAHANUNOO LETTER TAHANUNOO LETTER DAHANUNOO LETTER NAH" + - "ANUNOO LETTER PAHANUNOO LETTER BAHANUNOO LETTER MAHANUNOO LETTER YAHANUN" + - "OO LETTER RAHANUNOO LETTER LAHANUNOO LETTER WAHANUNOO LETTER SAHANUNOO L" + - "ETTER HAHANUNOO VOWEL SIGN IHANUNOO VOWEL SIGN UHANUNOO SIGN PAMUDPODPHI" + - "LIPPINE SINGLE PUNCTUATIONPHILIPPINE DOUBLE PUNCTUATIONBUHID LETTER ABUH" + - "ID LETTER IBUHID LETTER UBUHID LETTER KABUHID LETTER GABUHID LETTER NGAB" + - "UHID LETTER TABUHID LETTER DABUHID LETTER NABUHID LETTER PABUHID LETTER " + - "BABUHID LETTER MABUHID LETTER YABUHID LETTER RABUHID LETTER LABUHID LETT" + - "ER WABUHID LETTER SABUHID LETTER HABUHID VOWEL SIGN IBUHID VOWEL SIGN UT" + - "AGBANWA LETTER ATAGBANWA LETTER ITAGBANWA LETTER UTAGBANWA LETTER KATAGB" + - "ANWA LETTER GATAGBANWA LETTER NGATAGBANWA LETTER TATAGBANWA LETTER DATAG" + - "BANWA LETTER NATAGBANWA LETTER PATAGBANWA LETTER BATAGBANWA LETTER MATAG" + - "BANWA LETTER YATAGBANWA LETTER LATAGBANWA LETTER WATAGBANWA LETTER SATAG" + - "BANWA VOWEL SIGN ITAGBANWA VOWEL SIGN UKHMER LETTER KAKHMER LETTER KHAKH" + - "MER LETTER KOKHMER LETTER KHOKHMER LETTER NGOKHMER LETTER CAKHMER LETTER" + - " CHAKHMER LETTER COKHMER LETTER CHOKHMER LETTER NYOKHMER LETTER DAKHMER " + - "LETTER TTHAKHMER LETTER DOKHMER LETTER TTHOKHMER LETTER NNOKHMER LETTER " + - "TAKHMER LETTER THAKHMER LETTER TOKHMER LETTER THOKHMER LETTER NOKHMER LE" + - "TTER BAKHMER LETTER PHAKHMER LETTER POKHMER LETTER PHOKHMER LETTER MOKHM" + - "ER LETTER YOKHMER LETTER ROKHMER LETTER LOKHMER LETTER VOKHMER LETTER SH" + - "AKHMER LETTER SSOKHMER LETTER SAKHMER LETTER HAKHMER LETTER LAKHMER LETT" + - "ER QAKHMER INDEPENDENT VOWEL QAQKHMER INDEPENDENT VOWEL QAAKHMER INDEPEN" + - "DENT VOWEL QIKHMER INDEPENDENT VOWEL QIIKHMER INDEPENDENT VOWEL QUKHMER " + - "INDEPENDENT VOWEL QUKKHMER INDEPENDENT VOWEL QUUKHMER INDEPENDENT VOWEL " + - "QUUVKHMER INDEPENDENT VOWEL RYKHMER INDEPENDENT VOWEL RYYKHMER INDEPENDE" + - "NT VOWEL LYKHMER INDEPENDENT VOWEL LYYKHMER INDEPENDENT VOWEL QEKHMER IN" + - "DEPENDENT VOWEL QAIKHMER INDEPENDENT VOWEL QOO TYPE ONEKHMER INDEPENDENT" + - " VOWEL QOO TYPE TWOKHMER INDEPENDENT VOWEL QAUKHMER VOWEL INHERENT AQKHM" + - "ER VOWEL INHERENT AAKHMER VOWEL SIGN AAKHMER VOWEL SIGN IKHMER VOWEL SIG" + - "N IIKHMER VOWEL SIGN YKHMER VOWEL SIGN YYKHMER VOWEL SIGN UKHMER VOWEL S" + - "IGN UUKHMER VOWEL SIGN UAKHMER VOWEL SIGN OEKHMER VOWEL SIGN YAKHMER VOW" + - "EL SIGN IEKHMER VOWEL SIGN EKHMER VOWEL SIGN AEKHMER VOWEL SIGN AIKHMER " + - "VOWEL SIGN OOKHMER VOWEL SIGN AUKHMER SIGN NIKAHITKHMER SIGN REAHMUKKHME" + - "R SIGN YUUKALEAPINTUKHMER SIGN MUUSIKATOANKHMER SIGN TRIISAPKHMER SIGN B" + - "ANTOCKHMER SIGN ROBATKHMER SIGN TOANDAKHIATKHMER SIGN KAKABATKHMER SIGN " + - "AHSDAKHMER SIGN SAMYOK SANNYAKHMER SIGN VIRIAMKHMER SIGN COENGKHMER SIGN" + - " BATHAMASATKHMER SIGN KHANKHMER SIGN BARIYOOSANKHMER SIGN CAMNUC PII KUU" + - "HKHMER SIGN LEK TOOKHMER SIGN BEYYALKHMER SIGN PHNAEK MUANKHMER SIGN KOO" + - "MUUTKHMER CURRENCY SYMBOL RIELKHMER SIGN AVAKRAHASANYAKHMER SIGN ATTHACA" + - "NKHMER DIGIT ZEROKHMER DIGIT ONEKHMER DIGIT TWOKHMER DIGIT THREEKHMER DI" + - "GIT FOURKHMER DIGIT FIVEKHMER DIGIT SIXKHMER DIGIT SEVENKHMER DIGIT EIGH" + - "TKHMER DIGIT NINEKHMER SYMBOL LEK ATTAK SONKHMER SYMBOL LEK ATTAK MUOYKH" + - "MER SYMBOL LEK ATTAK PIIKHMER SYMBOL LEK ATTAK BEIKHMER SYMBOL LEK ATTAK" + - " BUONKHMER SYMBOL LEK ATTAK PRAMKHMER SYMBOL LEK ATTAK PRAM-MUOYKHMER SY" + - "MBOL LEK ATTAK PRAM-PIIKHMER SYMBOL LEK ATTAK PRAM-BEIKHMER SYMBOL LEK A" + - "TTAK PRAM-BUONMONGOLIAN BIRGAMONGOLIAN ELLIPSISMONGOLIAN COMMAMONGOLIAN " + - "FULL STOPMONGOLIAN COLONMONGOLIAN FOUR DOTSMONGOLIAN TODO SOFT HYPHENMON" + - "GOLIAN SIBE SYLLABLE BOUNDARY MARKERMONGOLIAN MANCHU COMMAMONGOLIAN MANC" + - "HU FULL STOPMONGOLIAN NIRUGUMONGOLIAN FREE VARIATION SELECTOR ONEMONGOLI" + - "AN FREE VARIATION SELECTOR TWOMONGOLIAN FREE VARIATION SELECTOR THREEMON" + - "GOLIAN VOWEL SEPARATORMONGOLIAN DIGIT ZEROMONGOLIAN DIGIT ONEMONGOLIAN D" + - "IGIT TWOMONGOLIAN DIGIT THREEMONGOLIAN DIGIT FOURMONGOLIAN DIGIT FIVEMON" + - "GOLIAN DIGIT SIXMONGOLIAN DIGIT SEVENMONGOLIAN DIGIT EIGHTMONGOLIAN DIGI" + - "T NINEMONGOLIAN LETTER AMONGOLIAN LETTER EMONGOLIAN LETTER IMONGOLIAN LE" + - "TTER OMONGOLIAN LETTER UMONGOLIAN LETTER OEMONGOLIAN LETTER UEMONGOLIAN " + - "LETTER EEMONGOLIAN LETTER NAMONGOLIAN LETTER ANGMONGOLIAN LETTER BAMONGO") + ("" + - "LIAN LETTER PAMONGOLIAN LETTER QAMONGOLIAN LETTER GAMONGOLIAN LETTER MAM" + - "ONGOLIAN LETTER LAMONGOLIAN LETTER SAMONGOLIAN LETTER SHAMONGOLIAN LETTE" + - "R TAMONGOLIAN LETTER DAMONGOLIAN LETTER CHAMONGOLIAN LETTER JAMONGOLIAN " + - "LETTER YAMONGOLIAN LETTER RAMONGOLIAN LETTER WAMONGOLIAN LETTER FAMONGOL" + - "IAN LETTER KAMONGOLIAN LETTER KHAMONGOLIAN LETTER TSAMONGOLIAN LETTER ZA" + - "MONGOLIAN LETTER HAAMONGOLIAN LETTER ZRAMONGOLIAN LETTER LHAMONGOLIAN LE" + - "TTER ZHIMONGOLIAN LETTER CHIMONGOLIAN LETTER TODO LONG VOWEL SIGNMONGOLI" + - "AN LETTER TODO EMONGOLIAN LETTER TODO IMONGOLIAN LETTER TODO OMONGOLIAN " + - "LETTER TODO UMONGOLIAN LETTER TODO OEMONGOLIAN LETTER TODO UEMONGOLIAN L" + - "ETTER TODO ANGMONGOLIAN LETTER TODO BAMONGOLIAN LETTER TODO PAMONGOLIAN " + - "LETTER TODO QAMONGOLIAN LETTER TODO GAMONGOLIAN LETTER TODO MAMONGOLIAN " + - "LETTER TODO TAMONGOLIAN LETTER TODO DAMONGOLIAN LETTER TODO CHAMONGOLIAN" + - " LETTER TODO JAMONGOLIAN LETTER TODO TSAMONGOLIAN LETTER TODO YAMONGOLIA" + - "N LETTER TODO WAMONGOLIAN LETTER TODO KAMONGOLIAN LETTER TODO GAAMONGOLI" + - "AN LETTER TODO HAAMONGOLIAN LETTER TODO JIAMONGOLIAN LETTER TODO NIAMONG" + - "OLIAN LETTER TODO DZAMONGOLIAN LETTER SIBE EMONGOLIAN LETTER SIBE IMONGO" + - "LIAN LETTER SIBE IYMONGOLIAN LETTER SIBE UEMONGOLIAN LETTER SIBE UMONGOL" + - "IAN LETTER SIBE ANGMONGOLIAN LETTER SIBE KAMONGOLIAN LETTER SIBE GAMONGO" + - "LIAN LETTER SIBE HAMONGOLIAN LETTER SIBE PAMONGOLIAN LETTER SIBE SHAMONG" + - "OLIAN LETTER SIBE TAMONGOLIAN LETTER SIBE DAMONGOLIAN LETTER SIBE JAMONG" + - "OLIAN LETTER SIBE FAMONGOLIAN LETTER SIBE GAAMONGOLIAN LETTER SIBE HAAMO" + - "NGOLIAN LETTER SIBE TSAMONGOLIAN LETTER SIBE ZAMONGOLIAN LETTER SIBE RAA" + - "MONGOLIAN LETTER SIBE CHAMONGOLIAN LETTER SIBE ZHAMONGOLIAN LETTER MANCH" + - "U IMONGOLIAN LETTER MANCHU KAMONGOLIAN LETTER MANCHU RAMONGOLIAN LETTER " + - "MANCHU FAMONGOLIAN LETTER MANCHU ZHAMONGOLIAN LETTER ALI GALI ANUSVARA O" + - "NEMONGOLIAN LETTER ALI GALI VISARGA ONEMONGOLIAN LETTER ALI GALI DAMARUM" + - "ONGOLIAN LETTER ALI GALI UBADAMAMONGOLIAN LETTER ALI GALI INVERTED UBADA" + - "MAMONGOLIAN LETTER ALI GALI BALUDAMONGOLIAN LETTER ALI GALI THREE BALUDA" + - "MONGOLIAN LETTER ALI GALI AMONGOLIAN LETTER ALI GALI IMONGOLIAN LETTER A" + - "LI GALI KAMONGOLIAN LETTER ALI GALI NGAMONGOLIAN LETTER ALI GALI CAMONGO" + - "LIAN LETTER ALI GALI TTAMONGOLIAN LETTER ALI GALI TTHAMONGOLIAN LETTER A" + - "LI GALI DDAMONGOLIAN LETTER ALI GALI NNAMONGOLIAN LETTER ALI GALI TAMONG" + - "OLIAN LETTER ALI GALI DAMONGOLIAN LETTER ALI GALI PAMONGOLIAN LETTER ALI" + - " GALI PHAMONGOLIAN LETTER ALI GALI SSAMONGOLIAN LETTER ALI GALI ZHAMONGO" + - "LIAN LETTER ALI GALI ZAMONGOLIAN LETTER ALI GALI AHMONGOLIAN LETTER TODO" + - " ALI GALI TAMONGOLIAN LETTER TODO ALI GALI ZHAMONGOLIAN LETTER MANCHU AL" + - "I GALI GHAMONGOLIAN LETTER MANCHU ALI GALI NGAMONGOLIAN LETTER MANCHU AL" + - "I GALI CAMONGOLIAN LETTER MANCHU ALI GALI JHAMONGOLIAN LETTER MANCHU ALI" + - " GALI TTAMONGOLIAN LETTER MANCHU ALI GALI DDHAMONGOLIAN LETTER MANCHU AL" + - "I GALI TAMONGOLIAN LETTER MANCHU ALI GALI DHAMONGOLIAN LETTER MANCHU ALI" + - " GALI SSAMONGOLIAN LETTER MANCHU ALI GALI CYAMONGOLIAN LETTER MANCHU ALI" + - " GALI ZHAMONGOLIAN LETTER MANCHU ALI GALI ZAMONGOLIAN LETTER ALI GALI HA" + - "LF UMONGOLIAN LETTER ALI GALI HALF YAMONGOLIAN LETTER MANCHU ALI GALI BH" + - "AMONGOLIAN LETTER ALI GALI DAGALGAMONGOLIAN LETTER MANCHU ALI GALI LHACA" + - "NADIAN SYLLABICS OYCANADIAN SYLLABICS AYCANADIAN SYLLABICS AAYCANADIAN S" + - "YLLABICS WAYCANADIAN SYLLABICS POYCANADIAN SYLLABICS PAYCANADIAN SYLLABI" + - "CS PWOYCANADIAN SYLLABICS TAYCANADIAN SYLLABICS KAYCANADIAN SYLLABICS KW" + - "AYCANADIAN SYLLABICS MAYCANADIAN SYLLABICS NOYCANADIAN SYLLABICS NAYCANA" + - "DIAN SYLLABICS LAYCANADIAN SYLLABICS SOYCANADIAN SYLLABICS SAYCANADIAN S" + - "YLLABICS SHOYCANADIAN SYLLABICS SHAYCANADIAN SYLLABICS SHWOYCANADIAN SYL" + - "LABICS YOYCANADIAN SYLLABICS YAYCANADIAN SYLLABICS RAYCANADIAN SYLLABICS" + - " NWICANADIAN SYLLABICS OJIBWAY NWICANADIAN SYLLABICS NWIICANADIAN SYLLAB" + - "ICS OJIBWAY NWIICANADIAN SYLLABICS NWOCANADIAN SYLLABICS OJIBWAY NWOCANA" + - "DIAN SYLLABICS NWOOCANADIAN SYLLABICS OJIBWAY NWOOCANADIAN SYLLABICS RWE" + - "ECANADIAN SYLLABICS RWICANADIAN SYLLABICS RWIICANADIAN SYLLABICS RWOCANA" + - "DIAN SYLLABICS RWOOCANADIAN SYLLABICS RWACANADIAN SYLLABICS OJIBWAY PCAN" + - "ADIAN SYLLABICS OJIBWAY TCANADIAN SYLLABICS OJIBWAY KCANADIAN SYLLABICS " + - "OJIBWAY CCANADIAN SYLLABICS OJIBWAY MCANADIAN SYLLABICS OJIBWAY NCANADIA" + - "N SYLLABICS OJIBWAY SCANADIAN SYLLABICS OJIBWAY SHCANADIAN SYLLABICS EAS" + - "TERN WCANADIAN SYLLABICS WESTERN WCANADIAN SYLLABICS FINAL SMALL RINGCAN" + - "ADIAN SYLLABICS FINAL RAISED DOTCANADIAN SYLLABICS R-CREE RWECANADIAN SY" + - "LLABICS WEST-CREE LOOCANADIAN SYLLABICS WEST-CREE LAACANADIAN SYLLABICS " + - "THWECANADIAN SYLLABICS THWACANADIAN SYLLABICS TTHWECANADIAN SYLLABICS TT" + - "HOOCANADIAN SYLLABICS TTHAACANADIAN SYLLABICS TLHWECANADIAN SYLLABICS TL") + ("" + - "HOOCANADIAN SYLLABICS SAYISI SHWECANADIAN SYLLABICS SAYISI SHOOCANADIAN " + - "SYLLABICS SAYISI HOOCANADIAN SYLLABICS CARRIER GWUCANADIAN SYLLABICS CAR" + - "RIER DENE GEECANADIAN SYLLABICS CARRIER GAACANADIAN SYLLABICS CARRIER GW" + - "ACANADIAN SYLLABICS SAYISI JUUCANADIAN SYLLABICS CARRIER JWACANADIAN SYL" + - "LABICS BEAVER DENE LCANADIAN SYLLABICS BEAVER DENE RCANADIAN SYLLABICS C" + - "ARRIER DENTAL SLIMBU VOWEL-CARRIER LETTERLIMBU LETTER KALIMBU LETTER KHA" + - "LIMBU LETTER GALIMBU LETTER GHALIMBU LETTER NGALIMBU LETTER CALIMBU LETT" + - "ER CHALIMBU LETTER JALIMBU LETTER JHALIMBU LETTER YANLIMBU LETTER TALIMB" + - "U LETTER THALIMBU LETTER DALIMBU LETTER DHALIMBU LETTER NALIMBU LETTER P" + - "ALIMBU LETTER PHALIMBU LETTER BALIMBU LETTER BHALIMBU LETTER MALIMBU LET" + - "TER YALIMBU LETTER RALIMBU LETTER LALIMBU LETTER WALIMBU LETTER SHALIMBU" + - " LETTER SSALIMBU LETTER SALIMBU LETTER HALIMBU LETTER GYANLIMBU LETTER T" + - "RALIMBU VOWEL SIGN ALIMBU VOWEL SIGN ILIMBU VOWEL SIGN ULIMBU VOWEL SIGN" + - " EELIMBU VOWEL SIGN AILIMBU VOWEL SIGN OOLIMBU VOWEL SIGN AULIMBU VOWEL " + - "SIGN ELIMBU VOWEL SIGN OLIMBU SUBJOINED LETTER YALIMBU SUBJOINED LETTER " + - "RALIMBU SUBJOINED LETTER WALIMBU SMALL LETTER KALIMBU SMALL LETTER NGALI" + - "MBU SMALL LETTER ANUSVARALIMBU SMALL LETTER TALIMBU SMALL LETTER NALIMBU" + - " SMALL LETTER PALIMBU SMALL LETTER MALIMBU SMALL LETTER RALIMBU SMALL LE" + - "TTER LALIMBU SIGN MUKPHRENGLIMBU SIGN KEMPHRENGLIMBU SIGN SA-ILIMBU SIGN" + - " LOOLIMBU EXCLAMATION MARKLIMBU QUESTION MARKLIMBU DIGIT ZEROLIMBU DIGIT" + - " ONELIMBU DIGIT TWOLIMBU DIGIT THREELIMBU DIGIT FOURLIMBU DIGIT FIVELIMB" + - "U DIGIT SIXLIMBU DIGIT SEVENLIMBU DIGIT EIGHTLIMBU DIGIT NINETAI LE LETT" + - "ER KATAI LE LETTER XATAI LE LETTER NGATAI LE LETTER TSATAI LE LETTER SAT" + - "AI LE LETTER YATAI LE LETTER TATAI LE LETTER THATAI LE LETTER LATAI LE L" + - "ETTER PATAI LE LETTER PHATAI LE LETTER MATAI LE LETTER FATAI LE LETTER V" + - "ATAI LE LETTER HATAI LE LETTER QATAI LE LETTER KHATAI LE LETTER TSHATAI " + - "LE LETTER NATAI LE LETTER ATAI LE LETTER ITAI LE LETTER EETAI LE LETTER " + - "EHTAI LE LETTER UTAI LE LETTER OOTAI LE LETTER OTAI LE LETTER UETAI LE L" + - "ETTER ETAI LE LETTER AUETAI LE LETTER AITAI LE LETTER TONE-2TAI LE LETTE" + - "R TONE-3TAI LE LETTER TONE-4TAI LE LETTER TONE-5TAI LE LETTER TONE-6NEW " + - "TAI LUE LETTER HIGH QANEW TAI LUE LETTER LOW QANEW TAI LUE LETTER HIGH K" + - "ANEW TAI LUE LETTER HIGH XANEW TAI LUE LETTER HIGH NGANEW TAI LUE LETTER" + - " LOW KANEW TAI LUE LETTER LOW XANEW TAI LUE LETTER LOW NGANEW TAI LUE LE" + - "TTER HIGH TSANEW TAI LUE LETTER HIGH SANEW TAI LUE LETTER HIGH YANEW TAI" + - " LUE LETTER LOW TSANEW TAI LUE LETTER LOW SANEW TAI LUE LETTER LOW YANEW" + - " TAI LUE LETTER HIGH TANEW TAI LUE LETTER HIGH THANEW TAI LUE LETTER HIG" + - "H NANEW TAI LUE LETTER LOW TANEW TAI LUE LETTER LOW THANEW TAI LUE LETTE" + - "R LOW NANEW TAI LUE LETTER HIGH PANEW TAI LUE LETTER HIGH PHANEW TAI LUE" + - " LETTER HIGH MANEW TAI LUE LETTER LOW PANEW TAI LUE LETTER LOW PHANEW TA" + - "I LUE LETTER LOW MANEW TAI LUE LETTER HIGH FANEW TAI LUE LETTER HIGH VAN" + - "EW TAI LUE LETTER HIGH LANEW TAI LUE LETTER LOW FANEW TAI LUE LETTER LOW" + - " VANEW TAI LUE LETTER LOW LANEW TAI LUE LETTER HIGH HANEW TAI LUE LETTER" + - " HIGH DANEW TAI LUE LETTER HIGH BANEW TAI LUE LETTER LOW HANEW TAI LUE L" + - "ETTER LOW DANEW TAI LUE LETTER LOW BANEW TAI LUE LETTER HIGH KVANEW TAI " + - "LUE LETTER HIGH XVANEW TAI LUE LETTER LOW KVANEW TAI LUE LETTER LOW XVAN" + - "EW TAI LUE LETTER HIGH SUANEW TAI LUE LETTER LOW SUANEW TAI LUE VOWEL SI" + - "GN VOWEL SHORTENERNEW TAI LUE VOWEL SIGN AANEW TAI LUE VOWEL SIGN IINEW " + - "TAI LUE VOWEL SIGN UNEW TAI LUE VOWEL SIGN UUNEW TAI LUE VOWEL SIGN ENEW" + - " TAI LUE VOWEL SIGN AENEW TAI LUE VOWEL SIGN ONEW TAI LUE VOWEL SIGN OAN" + - "EW TAI LUE VOWEL SIGN UENEW TAI LUE VOWEL SIGN AYNEW TAI LUE VOWEL SIGN " + - "AAYNEW TAI LUE VOWEL SIGN UYNEW TAI LUE VOWEL SIGN OYNEW TAI LUE VOWEL S" + - "IGN OAYNEW TAI LUE VOWEL SIGN UEYNEW TAI LUE VOWEL SIGN IYNEW TAI LUE LE" + - "TTER FINAL VNEW TAI LUE LETTER FINAL NGNEW TAI LUE LETTER FINAL NNEW TAI" + - " LUE LETTER FINAL MNEW TAI LUE LETTER FINAL KNEW TAI LUE LETTER FINAL DN" + - "EW TAI LUE LETTER FINAL BNEW TAI LUE TONE MARK-1NEW TAI LUE TONE MARK-2N" + - "EW TAI LUE DIGIT ZERONEW TAI LUE DIGIT ONENEW TAI LUE DIGIT TWONEW TAI L" + - "UE DIGIT THREENEW TAI LUE DIGIT FOURNEW TAI LUE DIGIT FIVENEW TAI LUE DI" + - "GIT SIXNEW TAI LUE DIGIT SEVENNEW TAI LUE DIGIT EIGHTNEW TAI LUE DIGIT N" + - "INENEW TAI LUE THAM DIGIT ONENEW TAI LUE SIGN LAENEW TAI LUE SIGN LAEVKH" + - "MER SYMBOL PATHAMASATKHMER SYMBOL MUOY KOETKHMER SYMBOL PII KOETKHMER SY" + - "MBOL BEI KOETKHMER SYMBOL BUON KOETKHMER SYMBOL PRAM KOETKHMER SYMBOL PR" + - "AM-MUOY KOETKHMER SYMBOL PRAM-PII KOETKHMER SYMBOL PRAM-BEI KOETKHMER SY" + - "MBOL PRAM-BUON KOETKHMER SYMBOL DAP KOETKHMER SYMBOL DAP-MUOY KOETKHMER " + - "SYMBOL DAP-PII KOETKHMER SYMBOL DAP-BEI KOETKHMER SYMBOL DAP-BUON KOETKH") + ("" + - "MER SYMBOL DAP-PRAM KOETKHMER SYMBOL TUTEYASATKHMER SYMBOL MUOY ROCKHMER" + - " SYMBOL PII ROCKHMER SYMBOL BEI ROCKHMER SYMBOL BUON ROCKHMER SYMBOL PRA" + - "M ROCKHMER SYMBOL PRAM-MUOY ROCKHMER SYMBOL PRAM-PII ROCKHMER SYMBOL PRA" + - "M-BEI ROCKHMER SYMBOL PRAM-BUON ROCKHMER SYMBOL DAP ROCKHMER SYMBOL DAP-" + - "MUOY ROCKHMER SYMBOL DAP-PII ROCKHMER SYMBOL DAP-BEI ROCKHMER SYMBOL DAP" + - "-BUON ROCKHMER SYMBOL DAP-PRAM ROCBUGINESE LETTER KABUGINESE LETTER GABU" + - "GINESE LETTER NGABUGINESE LETTER NGKABUGINESE LETTER PABUGINESE LETTER B" + - "ABUGINESE LETTER MABUGINESE LETTER MPABUGINESE LETTER TABUGINESE LETTER " + - "DABUGINESE LETTER NABUGINESE LETTER NRABUGINESE LETTER CABUGINESE LETTER" + - " JABUGINESE LETTER NYABUGINESE LETTER NYCABUGINESE LETTER YABUGINESE LET" + - "TER RABUGINESE LETTER LABUGINESE LETTER VABUGINESE LETTER SABUGINESE LET" + - "TER ABUGINESE LETTER HABUGINESE VOWEL SIGN IBUGINESE VOWEL SIGN UBUGINES" + - "E VOWEL SIGN EBUGINESE VOWEL SIGN OBUGINESE VOWEL SIGN AEBUGINESE PALLAW" + - "ABUGINESE END OF SECTIONTAI THAM LETTER HIGH KATAI THAM LETTER HIGH KHAT" + - "AI THAM LETTER HIGH KXATAI THAM LETTER LOW KATAI THAM LETTER LOW KXATAI " + - "THAM LETTER LOW KHATAI THAM LETTER NGATAI THAM LETTER HIGH CATAI THAM LE" + - "TTER HIGH CHATAI THAM LETTER LOW CATAI THAM LETTER LOW SATAI THAM LETTER" + - " LOW CHATAI THAM LETTER NYATAI THAM LETTER RATATAI THAM LETTER HIGH RATH" + - "ATAI THAM LETTER DATAI THAM LETTER LOW RATHATAI THAM LETTER RANATAI THAM" + - " LETTER HIGH TATAI THAM LETTER HIGH THATAI THAM LETTER LOW TATAI THAM LE" + - "TTER LOW THATAI THAM LETTER NATAI THAM LETTER BATAI THAM LETTER HIGH PAT" + - "AI THAM LETTER HIGH PHATAI THAM LETTER HIGH FATAI THAM LETTER LOW PATAI " + - "THAM LETTER LOW FATAI THAM LETTER LOW PHATAI THAM LETTER MATAI THAM LETT" + - "ER LOW YATAI THAM LETTER HIGH YATAI THAM LETTER RATAI THAM LETTER RUETAI" + - " THAM LETTER LATAI THAM LETTER LUETAI THAM LETTER WATAI THAM LETTER HIGH" + - " SHATAI THAM LETTER HIGH SSATAI THAM LETTER HIGH SATAI THAM LETTER HIGH " + - "HATAI THAM LETTER LLATAI THAM LETTER ATAI THAM LETTER LOW HATAI THAM LET" + - "TER ITAI THAM LETTER IITAI THAM LETTER UTAI THAM LETTER UUTAI THAM LETTE" + - "R EETAI THAM LETTER OOTAI THAM LETTER LAETAI THAM LETTER GREAT SATAI THA" + - "M CONSONANT SIGN MEDIAL RATAI THAM CONSONANT SIGN MEDIAL LATAI THAM CONS" + - "ONANT SIGN LA TANG LAITAI THAM SIGN MAI KANG LAITAI THAM CONSONANT SIGN " + - "FINAL NGATAI THAM CONSONANT SIGN LOW PATAI THAM CONSONANT SIGN HIGH RATH" + - "A OR LOW PATAI THAM CONSONANT SIGN MATAI THAM CONSONANT SIGN BATAI THAM " + - "CONSONANT SIGN SATAI THAM SIGN SAKOTTAI THAM VOWEL SIGN ATAI THAM VOWEL " + - "SIGN MAI SATTAI THAM VOWEL SIGN AATAI THAM VOWEL SIGN TALL AATAI THAM VO" + - "WEL SIGN ITAI THAM VOWEL SIGN IITAI THAM VOWEL SIGN UETAI THAM VOWEL SIG" + - "N UUETAI THAM VOWEL SIGN UTAI THAM VOWEL SIGN UUTAI THAM VOWEL SIGN OTAI" + - " THAM VOWEL SIGN OA BELOWTAI THAM VOWEL SIGN OYTAI THAM VOWEL SIGN ETAI " + - "THAM VOWEL SIGN AETAI THAM VOWEL SIGN OOTAI THAM VOWEL SIGN AITAI THAM V" + - "OWEL SIGN THAM AITAI THAM VOWEL SIGN OA ABOVETAI THAM SIGN MAI KANGTAI T" + - "HAM SIGN TONE-1TAI THAM SIGN TONE-2TAI THAM SIGN KHUEN TONE-3TAI THAM SI" + - "GN KHUEN TONE-4TAI THAM SIGN KHUEN TONE-5TAI THAM SIGN RA HAAMTAI THAM S" + - "IGN MAI SAMTAI THAM SIGN KHUEN-LUE KARANTAI THAM COMBINING CRYPTOGRAMMIC" + - " DOTTAI THAM HORA DIGIT ZEROTAI THAM HORA DIGIT ONETAI THAM HORA DIGIT T" + - "WOTAI THAM HORA DIGIT THREETAI THAM HORA DIGIT FOURTAI THAM HORA DIGIT F" + - "IVETAI THAM HORA DIGIT SIXTAI THAM HORA DIGIT SEVENTAI THAM HORA DIGIT E" + - "IGHTTAI THAM HORA DIGIT NINETAI THAM THAM DIGIT ZEROTAI THAM THAM DIGIT " + - "ONETAI THAM THAM DIGIT TWOTAI THAM THAM DIGIT THREETAI THAM THAM DIGIT F" + - "OURTAI THAM THAM DIGIT FIVETAI THAM THAM DIGIT SIXTAI THAM THAM DIGIT SE" + - "VENTAI THAM THAM DIGIT EIGHTTAI THAM THAM DIGIT NINETAI THAM SIGN WIANGT" + - "AI THAM SIGN WIANGWAAKTAI THAM SIGN SAWANTAI THAM SIGN KEOWTAI THAM SIGN" + - " HOYTAI THAM SIGN DOKMAITAI THAM SIGN REVERSED ROTATED RANATAI THAM SIGN" + - " MAI YAMOKTAI THAM SIGN KAANTAI THAM SIGN KAANKUUTAI THAM SIGN SATKAANTA" + - "I THAM SIGN SATKAANKUUTAI THAM SIGN HANGTAI THAM SIGN CAANGCOMBINING DOU" + - "BLED CIRCUMFLEX ACCENTCOMBINING DIAERESIS-RINGCOMBINING INFINITYCOMBININ" + - "G DOWNWARDS ARROWCOMBINING TRIPLE DOTCOMBINING X-X BELOWCOMBINING WIGGLY" + - " LINE BELOWCOMBINING OPEN MARK BELOWCOMBINING DOUBLE OPEN MARK BELOWCOMB" + - "INING LIGHT CENTRALIZATION STROKE BELOWCOMBINING STRONG CENTRALIZATION S" + - "TROKE BELOWCOMBINING PARENTHESES ABOVECOMBINING DOUBLE PARENTHESES ABOVE" + - "COMBINING PARENTHESES BELOWCOMBINING PARENTHESES OVERLAYBALINESE SIGN UL" + - "U RICEMBALINESE SIGN ULU CANDRABALINESE SIGN CECEKBALINESE SIGN SURANGBA" + - "LINESE SIGN BISAHBALINESE LETTER AKARABALINESE LETTER AKARA TEDUNGBALINE" + - "SE LETTER IKARABALINESE LETTER IKARA TEDUNGBALINESE LETTER UKARABALINESE" + - " LETTER UKARA TEDUNGBALINESE LETTER RA REPABALINESE LETTER RA REPA TEDUN") + ("" + - "GBALINESE LETTER LA LENGABALINESE LETTER LA LENGA TEDUNGBALINESE LETTER " + - "EKARABALINESE LETTER AIKARABALINESE LETTER OKARABALINESE LETTER OKARA TE" + - "DUNGBALINESE LETTER KABALINESE LETTER KA MAHAPRANABALINESE LETTER GABALI" + - "NESE LETTER GA GORABALINESE LETTER NGABALINESE LETTER CABALINESE LETTER " + - "CA LACABALINESE LETTER JABALINESE LETTER JA JERABALINESE LETTER NYABALIN" + - "ESE LETTER TA LATIKBALINESE LETTER TA MURDA MAHAPRANABALINESE LETTER DA " + - "MURDA ALPAPRANABALINESE LETTER DA MURDA MAHAPRANABALINESE LETTER NA RAMB" + - "ATBALINESE LETTER TABALINESE LETTER TA TAWABALINESE LETTER DABALINESE LE" + - "TTER DA MADUBALINESE LETTER NABALINESE LETTER PABALINESE LETTER PA KAPAL" + - "BALINESE LETTER BABALINESE LETTER BA KEMBANGBALINESE LETTER MABALINESE L" + - "ETTER YABALINESE LETTER RABALINESE LETTER LABALINESE LETTER WABALINESE L" + - "ETTER SA SAGABALINESE LETTER SA SAPABALINESE LETTER SABALINESE LETTER HA" + - "BALINESE SIGN REREKANBALINESE VOWEL SIGN TEDUNGBALINESE VOWEL SIGN ULUBA" + - "LINESE VOWEL SIGN ULU SARIBALINESE VOWEL SIGN SUKUBALINESE VOWEL SIGN SU" + - "KU ILUTBALINESE VOWEL SIGN RA REPABALINESE VOWEL SIGN RA REPA TEDUNGBALI" + - "NESE VOWEL SIGN LA LENGABALINESE VOWEL SIGN LA LENGA TEDUNGBALINESE VOWE" + - "L SIGN TALINGBALINESE VOWEL SIGN TALING REPABALINESE VOWEL SIGN TALING T" + - "EDUNGBALINESE VOWEL SIGN TALING REPA TEDUNGBALINESE VOWEL SIGN PEPETBALI" + - "NESE VOWEL SIGN PEPET TEDUNGBALINESE ADEG ADEGBALINESE LETTER KAF SASAKB" + - "ALINESE LETTER KHOT SASAKBALINESE LETTER TZIR SASAKBALINESE LETTER EF SA" + - "SAKBALINESE LETTER VE SASAKBALINESE LETTER ZAL SASAKBALINESE LETTER ASYU" + - "RA SASAKBALINESE DIGIT ZEROBALINESE DIGIT ONEBALINESE DIGIT TWOBALINESE " + - "DIGIT THREEBALINESE DIGIT FOURBALINESE DIGIT FIVEBALINESE DIGIT SIXBALIN" + - "ESE DIGIT SEVENBALINESE DIGIT EIGHTBALINESE DIGIT NINEBALINESE PANTIBALI" + - "NESE PAMADABALINESE WINDUBALINESE CARIK PAMUNGKAHBALINESE CARIK SIKIBALI" + - "NESE CARIK PARERENBALINESE PAMENENGBALINESE MUSICAL SYMBOL DONGBALINESE " + - "MUSICAL SYMBOL DENGBALINESE MUSICAL SYMBOL DUNGBALINESE MUSICAL SYMBOL D" + - "ANGBALINESE MUSICAL SYMBOL DANG SURANGBALINESE MUSICAL SYMBOL DINGBALINE" + - "SE MUSICAL SYMBOL DAENGBALINESE MUSICAL SYMBOL DEUNGBALINESE MUSICAL SYM" + - "BOL DAINGBALINESE MUSICAL SYMBOL DANG GEDEBALINESE MUSICAL SYMBOL COMBIN" + - "ING TEGEHBALINESE MUSICAL SYMBOL COMBINING ENDEPBALINESE MUSICAL SYMBOL " + - "COMBINING KEMPULBALINESE MUSICAL SYMBOL COMBINING KEMPLIBALINESE MUSICAL" + - " SYMBOL COMBINING JEGOGANBALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH J" + - "EGOGANBALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGANBALINESE MUSI" + - "CAL SYMBOL COMBINING BENDEBALINESE MUSICAL SYMBOL COMBINING GONGBALINESE" + - " MUSICAL SYMBOL RIGHT-HAND OPEN DUGBALINESE MUSICAL SYMBOL RIGHT-HAND OP" + - "EN DAGBALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUKBALINESE MUSICAL SYMB" + - "OL RIGHT-HAND CLOSED TAKBALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANGBALIN" + - "ESE MUSICAL SYMBOL LEFT-HAND OPEN PUNGBALINESE MUSICAL SYMBOL LEFT-HAND " + - "CLOSED PLAKBALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUKBALINESE MUSICAL" + - " SYMBOL LEFT-HAND OPEN PINGSUNDANESE SIGN PANYECEKSUNDANESE SIGN PANGLAY" + - "ARSUNDANESE SIGN PANGWISADSUNDANESE LETTER ASUNDANESE LETTER ISUNDANESE " + - "LETTER USUNDANESE LETTER AESUNDANESE LETTER OSUNDANESE LETTER ESUNDANESE" + - " LETTER EUSUNDANESE LETTER KASUNDANESE LETTER QASUNDANESE LETTER GASUNDA" + - "NESE LETTER NGASUNDANESE LETTER CASUNDANESE LETTER JASUNDANESE LETTER ZA" + - "SUNDANESE LETTER NYASUNDANESE LETTER TASUNDANESE LETTER DASUNDANESE LETT" + - "ER NASUNDANESE LETTER PASUNDANESE LETTER FASUNDANESE LETTER VASUNDANESE " + - "LETTER BASUNDANESE LETTER MASUNDANESE LETTER YASUNDANESE LETTER RASUNDAN" + - "ESE LETTER LASUNDANESE LETTER WASUNDANESE LETTER SASUNDANESE LETTER XASU" + - "NDANESE LETTER HASUNDANESE CONSONANT SIGN PAMINGKALSUNDANESE CONSONANT S" + - "IGN PANYAKRASUNDANESE CONSONANT SIGN PANYIKUSUNDANESE VOWEL SIGN PANGHUL" + - "USUNDANESE VOWEL SIGN PANYUKUSUNDANESE VOWEL SIGN PANAELAENGSUNDANESE VO" + - "WEL SIGN PANOLONGSUNDANESE VOWEL SIGN PAMEPETSUNDANESE VOWEL SIGN PANEUL" + - "EUNGSUNDANESE SIGN PAMAAEHSUNDANESE SIGN VIRAMASUNDANESE CONSONANT SIGN " + - "PASANGAN MASUNDANESE CONSONANT SIGN PASANGAN WASUNDANESE LETTER KHASUNDA" + - "NESE LETTER SYASUNDANESE DIGIT ZEROSUNDANESE DIGIT ONESUNDANESE DIGIT TW" + - "OSUNDANESE DIGIT THREESUNDANESE DIGIT FOURSUNDANESE DIGIT FIVESUNDANESE " + - "DIGIT SIXSUNDANESE DIGIT SEVENSUNDANESE DIGIT EIGHTSUNDANESE DIGIT NINES" + - "UNDANESE AVAGRAHASUNDANESE LETTER REUSUNDANESE LETTER LEUSUNDANESE LETTE" + - "R BHASUNDANESE LETTER FINAL KSUNDANESE LETTER FINAL MBATAK LETTER ABATAK" + - " LETTER SIMALUNGUN ABATAK LETTER HABATAK LETTER SIMALUNGUN HABATAK LETTE" + - "R MANDAILING HABATAK LETTER BABATAK LETTER KARO BABATAK LETTER PABATAK L" + - "ETTER SIMALUNGUN PABATAK LETTER NABATAK LETTER MANDAILING NABATAK LETTER" + - " WABATAK LETTER SIMALUNGUN WABATAK LETTER PAKPAK WABATAK LETTER GABATAK ") + ("" + - "LETTER SIMALUNGUN GABATAK LETTER JABATAK LETTER DABATAK LETTER RABATAK L" + - "ETTER SIMALUNGUN RABATAK LETTER MABATAK LETTER SIMALUNGUN MABATAK LETTER" + - " SOUTHERN TABATAK LETTER NORTHERN TABATAK LETTER SABATAK LETTER SIMALUNG" + - "UN SABATAK LETTER MANDAILING SABATAK LETTER YABATAK LETTER SIMALUNGUN YA" + - "BATAK LETTER NGABATAK LETTER LABATAK LETTER SIMALUNGUN LABATAK LETTER NY" + - "ABATAK LETTER CABATAK LETTER NDABATAK LETTER MBABATAK LETTER IBATAK LETT" + - "ER UBATAK SIGN TOMPIBATAK VOWEL SIGN EBATAK VOWEL SIGN PAKPAK EBATAK VOW" + - "EL SIGN EEBATAK VOWEL SIGN IBATAK VOWEL SIGN KARO IBATAK VOWEL SIGN OBAT" + - "AK VOWEL SIGN KARO OBATAK VOWEL SIGN UBATAK VOWEL SIGN U FOR SIMALUNGUN " + - "SABATAK CONSONANT SIGN NGBATAK CONSONANT SIGN HBATAK PANGOLATBATAK PANON" + - "GONANBATAK SYMBOL BINDU NA METEKBATAK SYMBOL BINDU PINARBORASBATAK SYMBO" + - "L BINDU JUDULBATAK SYMBOL BINDU PANGOLATLEPCHA LETTER KALEPCHA LETTER KL" + - "ALEPCHA LETTER KHALEPCHA LETTER GALEPCHA LETTER GLALEPCHA LETTER NGALEPC" + - "HA LETTER CALEPCHA LETTER CHALEPCHA LETTER JALEPCHA LETTER NYALEPCHA LET" + - "TER TALEPCHA LETTER THALEPCHA LETTER DALEPCHA LETTER NALEPCHA LETTER PAL" + - "EPCHA LETTER PLALEPCHA LETTER PHALEPCHA LETTER FALEPCHA LETTER FLALEPCHA" + - " LETTER BALEPCHA LETTER BLALEPCHA LETTER MALEPCHA LETTER MLALEPCHA LETTE" + - "R TSALEPCHA LETTER TSHALEPCHA LETTER DZALEPCHA LETTER YALEPCHA LETTER RA" + - "LEPCHA LETTER LALEPCHA LETTER HALEPCHA LETTER HLALEPCHA LETTER VALEPCHA " + - "LETTER SALEPCHA LETTER SHALEPCHA LETTER WALEPCHA LETTER ALEPCHA SUBJOINE" + - "D LETTER YALEPCHA SUBJOINED LETTER RALEPCHA VOWEL SIGN AALEPCHA VOWEL SI" + - "GN ILEPCHA VOWEL SIGN OLEPCHA VOWEL SIGN OOLEPCHA VOWEL SIGN ULEPCHA VOW" + - "EL SIGN UULEPCHA VOWEL SIGN ELEPCHA CONSONANT SIGN KLEPCHA CONSONANT SIG" + - "N MLEPCHA CONSONANT SIGN LLEPCHA CONSONANT SIGN NLEPCHA CONSONANT SIGN P" + - "LEPCHA CONSONANT SIGN RLEPCHA CONSONANT SIGN TLEPCHA CONSONANT SIGN NYIN" + - "-DOLEPCHA CONSONANT SIGN KANGLEPCHA SIGN RANLEPCHA SIGN NUKTALEPCHA PUNC" + - "TUATION TA-ROLLEPCHA PUNCTUATION NYET THYOOM TA-ROLLEPCHA PUNCTUATION CE" + - "R-WALEPCHA PUNCTUATION TSHOOK CER-WALEPCHA PUNCTUATION TSHOOKLEPCHA DIGI" + - "T ZEROLEPCHA DIGIT ONELEPCHA DIGIT TWOLEPCHA DIGIT THREELEPCHA DIGIT FOU" + - "RLEPCHA DIGIT FIVELEPCHA DIGIT SIXLEPCHA DIGIT SEVENLEPCHA DIGIT EIGHTLE" + - "PCHA DIGIT NINELEPCHA LETTER TTALEPCHA LETTER TTHALEPCHA LETTER DDAOL CH" + - "IKI DIGIT ZEROOL CHIKI DIGIT ONEOL CHIKI DIGIT TWOOL CHIKI DIGIT THREEOL" + - " CHIKI DIGIT FOUROL CHIKI DIGIT FIVEOL CHIKI DIGIT SIXOL CHIKI DIGIT SEV" + - "ENOL CHIKI DIGIT EIGHTOL CHIKI DIGIT NINEOL CHIKI LETTER LAOL CHIKI LETT" + - "ER ATOL CHIKI LETTER AGOL CHIKI LETTER ANGOL CHIKI LETTER ALOL CHIKI LET" + - "TER LAAOL CHIKI LETTER AAKOL CHIKI LETTER AAJOL CHIKI LETTER AAMOL CHIKI" + - " LETTER AAWOL CHIKI LETTER LIOL CHIKI LETTER ISOL CHIKI LETTER IHOL CHIK" + - "I LETTER INYOL CHIKI LETTER IROL CHIKI LETTER LUOL CHIKI LETTER UCOL CHI" + - "KI LETTER UDOL CHIKI LETTER UNNOL CHIKI LETTER UYOL CHIKI LETTER LEOL CH" + - "IKI LETTER EPOL CHIKI LETTER EDDOL CHIKI LETTER ENOL CHIKI LETTER ERROL " + - "CHIKI LETTER LOOL CHIKI LETTER OTTOL CHIKI LETTER OBOL CHIKI LETTER OVOL" + - " CHIKI LETTER OHOL CHIKI MU TTUDDAGOL CHIKI GAAHLAA TTUDDAAGOL CHIKI MU-" + - "GAAHLAA TTUDDAAGOL CHIKI RELAAOL CHIKI PHAARKAAOL CHIKI AHADOL CHIKI PUN" + - "CTUATION MUCAADOL CHIKI PUNCTUATION DOUBLE MUCAADCYRILLIC SMALL LETTER R" + - "OUNDED VECYRILLIC SMALL LETTER LONG-LEGGED DECYRILLIC SMALL LETTER NARRO" + - "W OCYRILLIC SMALL LETTER WIDE ESCYRILLIC SMALL LETTER TALL TECYRILLIC SM" + - "ALL LETTER THREE-LEGGED TECYRILLIC SMALL LETTER TALL HARD SIGNCYRILLIC S" + - "MALL LETTER TALL YATCYRILLIC SMALL LETTER UNBLENDED UKSUNDANESE PUNCTUAT" + - "ION BINDU SURYASUNDANESE PUNCTUATION BINDU PANGLONGSUNDANESE PUNCTUATION" + - " BINDU PURNAMASUNDANESE PUNCTUATION BINDU CAKRASUNDANESE PUNCTUATION BIN" + - "DU LEU SATANGASUNDANESE PUNCTUATION BINDU KA SATANGASUNDANESE PUNCTUATIO" + - "N BINDU DA SATANGASUNDANESE PUNCTUATION BINDU BA SATANGAVEDIC TONE KARSH" + - "ANAVEDIC TONE SHARAVEDIC TONE PRENKHAVEDIC SIGN NIHSHVASAVEDIC SIGN YAJU" + - "RVEDIC MIDLINE SVARITAVEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARI" + - "TAVEDIC TONE YAJURVEDIC INDEPENDENT SVARITAVEDIC TONE YAJURVEDIC KATHAKA" + - " INDEPENDENT SVARITAVEDIC TONE CANDRA BELOWVEDIC TONE YAJURVEDIC KATHAKA" + - " INDEPENDENT SVARITA SCHROEDERVEDIC TONE DOUBLE SVARITAVEDIC TONE TRIPLE" + - " SVARITAVEDIC TONE KATHAKA ANUDATTAVEDIC TONE DOT BELOWVEDIC TONE TWO DO" + - "TS BELOWVEDIC TONE THREE DOTS BELOWVEDIC TONE RIGVEDIC KASHMIRI INDEPEND" + - "ENT SVARITAVEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITAVEDIC SIGN VISARGA" + - " SVARITAVEDIC SIGN VISARGA UDATTAVEDIC SIGN REVERSED VISARGA UDATTAVEDIC" + - " SIGN VISARGA ANUDATTAVEDIC SIGN REVERSED VISARGA ANUDATTAVEDIC SIGN VIS" + - "ARGA UDATTA WITH TAILVEDIC SIGN VISARGA ANUDATTA WITH TAILVEDIC SIGN ANU" + - "SVARA ANTARGOMUKHAVEDIC SIGN ANUSVARA BAHIRGOMUKHAVEDIC SIGN ANUSVARA VA") + ("" + - "MAGOMUKHAVEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAILVEDIC SIGN TIRYAKVEDIC" + - " SIGN HEXIFORM LONG ANUSVARAVEDIC SIGN LONG ANUSVARAVEDIC SIGN RTHANG LO" + - "NG ANUSVARAVEDIC SIGN ANUSVARA UBHAYATO MUKHAVEDIC SIGN ARDHAVISARGAVEDI" + - "C SIGN ROTATED ARDHAVISARGAVEDIC TONE CANDRA ABOVEVEDIC SIGN JIHVAMULIYA" + - "VEDIC SIGN UPADHMANIYAVEDIC TONE RING ABOVEVEDIC TONE DOUBLE RING ABOVEL" + - "ATIN LETTER SMALL CAPITAL ALATIN LETTER SMALL CAPITAL AELATIN SMALL LETT" + - "ER TURNED AELATIN LETTER SMALL CAPITAL BARRED BLATIN LETTER SMALL CAPITA" + - "L CLATIN LETTER SMALL CAPITAL DLATIN LETTER SMALL CAPITAL ETHLATIN LETTE" + - "R SMALL CAPITAL ELATIN SMALL LETTER TURNED OPEN ELATIN SMALL LETTER TURN" + - "ED ILATIN LETTER SMALL CAPITAL JLATIN LETTER SMALL CAPITAL KLATIN LETTER" + - " SMALL CAPITAL L WITH STROKELATIN LETTER SMALL CAPITAL MLATIN LETTER SMA" + - "LL CAPITAL REVERSED NLATIN LETTER SMALL CAPITAL OLATIN LETTER SMALL CAPI" + - "TAL OPEN OLATIN SMALL LETTER SIDEWAYS OLATIN SMALL LETTER SIDEWAYS OPEN " + - "OLATIN SMALL LETTER SIDEWAYS O WITH STROKELATIN SMALL LETTER TURNED OELA" + - "TIN LETTER SMALL CAPITAL OULATIN SMALL LETTER TOP HALF OLATIN SMALL LETT" + - "ER BOTTOM HALF OLATIN LETTER SMALL CAPITAL PLATIN LETTER SMALL CAPITAL R" + - "EVERSED RLATIN LETTER SMALL CAPITAL TURNED RLATIN LETTER SMALL CAPITAL T" + - "LATIN LETTER SMALL CAPITAL ULATIN SMALL LETTER SIDEWAYS ULATIN SMALL LET" + - "TER SIDEWAYS DIAERESIZED ULATIN SMALL LETTER SIDEWAYS TURNED MLATIN LETT" + - "ER SMALL CAPITAL VLATIN LETTER SMALL CAPITAL WLATIN LETTER SMALL CAPITAL" + - " ZLATIN LETTER SMALL CAPITAL EZHLATIN LETTER VOICED LARYNGEAL SPIRANTLAT" + - "IN LETTER AINGREEK LETTER SMALL CAPITAL GAMMAGREEK LETTER SMALL CAPITAL " + - "LAMDAGREEK LETTER SMALL CAPITAL PIGREEK LETTER SMALL CAPITAL RHOGREEK LE" + - "TTER SMALL CAPITAL PSICYRILLIC LETTER SMALL CAPITAL ELMODIFIER LETTER CA" + - "PITAL AMODIFIER LETTER CAPITAL AEMODIFIER LETTER CAPITAL BMODIFIER LETTE" + - "R CAPITAL BARRED BMODIFIER LETTER CAPITAL DMODIFIER LETTER CAPITAL EMODI" + - "FIER LETTER CAPITAL REVERSED EMODIFIER LETTER CAPITAL GMODIFIER LETTER C" + - "APITAL HMODIFIER LETTER CAPITAL IMODIFIER LETTER CAPITAL JMODIFIER LETTE" + - "R CAPITAL KMODIFIER LETTER CAPITAL LMODIFIER LETTER CAPITAL MMODIFIER LE" + - "TTER CAPITAL NMODIFIER LETTER CAPITAL REVERSED NMODIFIER LETTER CAPITAL " + - "OMODIFIER LETTER CAPITAL OUMODIFIER LETTER CAPITAL PMODIFIER LETTER CAPI" + - "TAL RMODIFIER LETTER CAPITAL TMODIFIER LETTER CAPITAL UMODIFIER LETTER C" + - "APITAL WMODIFIER LETTER SMALL AMODIFIER LETTER SMALL TURNED AMODIFIER LE" + - "TTER SMALL ALPHAMODIFIER LETTER SMALL TURNED AEMODIFIER LETTER SMALL BMO" + - "DIFIER LETTER SMALL DMODIFIER LETTER SMALL EMODIFIER LETTER SMALL SCHWAM" + - "ODIFIER LETTER SMALL OPEN EMODIFIER LETTER SMALL TURNED OPEN EMODIFIER L" + - "ETTER SMALL GMODIFIER LETTER SMALL TURNED IMODIFIER LETTER SMALL KMODIFI" + - "ER LETTER SMALL MMODIFIER LETTER SMALL ENGMODIFIER LETTER SMALL OMODIFIE" + - "R LETTER SMALL OPEN OMODIFIER LETTER SMALL TOP HALF OMODIFIER LETTER SMA" + - "LL BOTTOM HALF OMODIFIER LETTER SMALL PMODIFIER LETTER SMALL TMODIFIER L" + - "ETTER SMALL UMODIFIER LETTER SMALL SIDEWAYS UMODIFIER LETTER SMALL TURNE" + - "D MMODIFIER LETTER SMALL VMODIFIER LETTER SMALL AINMODIFIER LETTER SMALL" + - " BETAMODIFIER LETTER SMALL GREEK GAMMAMODIFIER LETTER SMALL DELTAMODIFIE" + - "R LETTER SMALL GREEK PHIMODIFIER LETTER SMALL CHILATIN SUBSCRIPT SMALL L" + - "ETTER ILATIN SUBSCRIPT SMALL LETTER RLATIN SUBSCRIPT SMALL LETTER ULATIN" + - " SUBSCRIPT SMALL LETTER VGREEK SUBSCRIPT SMALL LETTER BETAGREEK SUBSCRIP" + - "T SMALL LETTER GAMMAGREEK SUBSCRIPT SMALL LETTER RHOGREEK SUBSCRIPT SMAL" + - "L LETTER PHIGREEK SUBSCRIPT SMALL LETTER CHILATIN SMALL LETTER UELATIN S" + - "MALL LETTER B WITH MIDDLE TILDELATIN SMALL LETTER D WITH MIDDLE TILDELAT" + - "IN SMALL LETTER F WITH MIDDLE TILDELATIN SMALL LETTER M WITH MIDDLE TILD" + - "ELATIN SMALL LETTER N WITH MIDDLE TILDELATIN SMALL LETTER P WITH MIDDLE " + - "TILDELATIN SMALL LETTER R WITH MIDDLE TILDELATIN SMALL LETTER R WITH FIS" + - "HHOOK AND MIDDLE TILDELATIN SMALL LETTER S WITH MIDDLE TILDELATIN SMALL " + - "LETTER T WITH MIDDLE TILDELATIN SMALL LETTER Z WITH MIDDLE TILDELATIN SM" + - "ALL LETTER TURNED GMODIFIER LETTER CYRILLIC ENLATIN SMALL LETTER INSULAR" + - " GLATIN SMALL LETTER TH WITH STRIKETHROUGHLATIN SMALL CAPITAL LETTER I W" + - "ITH STROKELATIN SMALL LETTER IOTA WITH STROKELATIN SMALL LETTER P WITH S" + - "TROKELATIN SMALL CAPITAL LETTER U WITH STROKELATIN SMALL LETTER UPSILON " + - "WITH STROKELATIN SMALL LETTER B WITH PALATAL HOOKLATIN SMALL LETTER D WI" + - "TH PALATAL HOOKLATIN SMALL LETTER F WITH PALATAL HOOKLATIN SMALL LETTER " + - "G WITH PALATAL HOOKLATIN SMALL LETTER K WITH PALATAL HOOKLATIN SMALL LET" + - "TER L WITH PALATAL HOOKLATIN SMALL LETTER M WITH PALATAL HOOKLATIN SMALL" + - " LETTER N WITH PALATAL HOOKLATIN SMALL LETTER P WITH PALATAL HOOKLATIN S" + - "MALL LETTER R WITH PALATAL HOOKLATIN SMALL LETTER S WITH PALATAL HOOKLAT") + ("" + - "IN SMALL LETTER ESH WITH PALATAL HOOKLATIN SMALL LETTER V WITH PALATAL H" + - "OOKLATIN SMALL LETTER X WITH PALATAL HOOKLATIN SMALL LETTER Z WITH PALAT" + - "AL HOOKLATIN SMALL LETTER A WITH RETROFLEX HOOKLATIN SMALL LETTER ALPHA " + - "WITH RETROFLEX HOOKLATIN SMALL LETTER D WITH HOOK AND TAILLATIN SMALL LE" + - "TTER E WITH RETROFLEX HOOKLATIN SMALL LETTER OPEN E WITH RETROFLEX HOOKL" + - "ATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOKLATIN SMALL LETTER " + - "SCHWA WITH RETROFLEX HOOKLATIN SMALL LETTER I WITH RETROFLEX HOOKLATIN S" + - "MALL LETTER OPEN O WITH RETROFLEX HOOKLATIN SMALL LETTER ESH WITH RETROF" + - "LEX HOOKLATIN SMALL LETTER U WITH RETROFLEX HOOKLATIN SMALL LETTER EZH W" + - "ITH RETROFLEX HOOKMODIFIER LETTER SMALL TURNED ALPHAMODIFIER LETTER SMAL" + - "L CMODIFIER LETTER SMALL C WITH CURLMODIFIER LETTER SMALL ETHMODIFIER LE" + - "TTER SMALL REVERSED OPEN EMODIFIER LETTER SMALL FMODIFIER LETTER SMALL D" + - "OTLESS J WITH STROKEMODIFIER LETTER SMALL SCRIPT GMODIFIER LETTER SMALL " + - "TURNED HMODIFIER LETTER SMALL I WITH STROKEMODIFIER LETTER SMALL IOTAMOD" + - "IFIER LETTER SMALL CAPITAL IMODIFIER LETTER SMALL CAPITAL I WITH STROKEM" + - "ODIFIER LETTER SMALL J WITH CROSSED-TAILMODIFIER LETTER SMALL L WITH RET" + - "ROFLEX HOOKMODIFIER LETTER SMALL L WITH PALATAL HOOKMODIFIER LETTER SMAL" + - "L CAPITAL LMODIFIER LETTER SMALL M WITH HOOKMODIFIER LETTER SMALL TURNED" + - " M WITH LONG LEGMODIFIER LETTER SMALL N WITH LEFT HOOKMODIFIER LETTER SM" + - "ALL N WITH RETROFLEX HOOKMODIFIER LETTER SMALL CAPITAL NMODIFIER LETTER " + - "SMALL BARRED OMODIFIER LETTER SMALL PHIMODIFIER LETTER SMALL S WITH HOOK" + - "MODIFIER LETTER SMALL ESHMODIFIER LETTER SMALL T WITH PALATAL HOOKMODIFI" + - "ER LETTER SMALL U BARMODIFIER LETTER SMALL UPSILONMODIFIER LETTER SMALL " + - "CAPITAL UMODIFIER LETTER SMALL V WITH HOOKMODIFIER LETTER SMALL TURNED V" + - "MODIFIER LETTER SMALL ZMODIFIER LETTER SMALL Z WITH RETROFLEX HOOKMODIFI" + - "ER LETTER SMALL Z WITH CURLMODIFIER LETTER SMALL EZHMODIFIER LETTER SMAL" + - "L THETACOMBINING DOTTED GRAVE ACCENTCOMBINING DOTTED ACUTE ACCENTCOMBINI" + - "NG SNAKE BELOWCOMBINING SUSPENSION MARKCOMBINING MACRON-ACUTECOMBINING G" + - "RAVE-MACRONCOMBINING MACRON-GRAVECOMBINING ACUTE-MACRONCOMBINING GRAVE-A" + - "CUTE-GRAVECOMBINING ACUTE-GRAVE-ACUTECOMBINING LATIN SMALL LETTER R BELO" + - "WCOMBINING BREVE-MACRONCOMBINING MACRON-BREVECOMBINING DOUBLE CIRCUMFLEX" + - " ABOVECOMBINING OGONEK ABOVECOMBINING ZIGZAG BELOWCOMBINING IS BELOWCOMB" + - "INING UR ABOVECOMBINING US ABOVECOMBINING LATIN SMALL LETTER FLATTENED O" + - "PEN A ABOVECOMBINING LATIN SMALL LETTER AECOMBINING LATIN SMALL LETTER A" + - "OCOMBINING LATIN SMALL LETTER AVCOMBINING LATIN SMALL LETTER C CEDILLACO" + - "MBINING LATIN SMALL LETTER INSULAR DCOMBINING LATIN SMALL LETTER ETHCOMB" + - "INING LATIN SMALL LETTER GCOMBINING LATIN LETTER SMALL CAPITAL GCOMBININ" + - "G LATIN SMALL LETTER KCOMBINING LATIN SMALL LETTER LCOMBINING LATIN LETT" + - "ER SMALL CAPITAL LCOMBINING LATIN LETTER SMALL CAPITAL MCOMBINING LATIN " + - "SMALL LETTER NCOMBINING LATIN LETTER SMALL CAPITAL NCOMBINING LATIN LETT" + - "ER SMALL CAPITAL RCOMBINING LATIN SMALL LETTER R ROTUNDACOMBINING LATIN " + - "SMALL LETTER SCOMBINING LATIN SMALL LETTER LONG SCOMBINING LATIN SMALL L" + - "ETTER ZCOMBINING LATIN SMALL LETTER ALPHACOMBINING LATIN SMALL LETTER BC" + - "OMBINING LATIN SMALL LETTER BETACOMBINING LATIN SMALL LETTER SCHWACOMBIN" + - "ING LATIN SMALL LETTER FCOMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDL" + - "E TILDECOMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKECO" + - "MBINING LATIN SMALL LETTER PCOMBINING LATIN SMALL LETTER ESHCOMBINING LA" + - "TIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKECOMBINING LATIN SMALL" + - " LETTER WCOMBINING LATIN SMALL LETTER A WITH DIAERESISCOMBINING LATIN SM" + - "ALL LETTER O WITH DIAERESISCOMBINING LATIN SMALL LETTER U WITH DIAERESIS" + - "COMBINING UP TACK ABOVECOMBINING DELETION MARKCOMBINING DOUBLE INVERTED " + - "BREVE BELOWCOMBINING ALMOST EQUAL TO BELOWCOMBINING LEFT ARROWHEAD ABOVE" + - "COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOWLATIN CAPITAL LETTER A" + - " WITH RING BELOWLATIN SMALL LETTER A WITH RING BELOWLATIN CAPITAL LETTER" + - " B WITH DOT ABOVELATIN SMALL LETTER B WITH DOT ABOVELATIN CAPITAL LETTER" + - " B WITH DOT BELOWLATIN SMALL LETTER B WITH DOT BELOWLATIN CAPITAL LETTER" + - " B WITH LINE BELOWLATIN SMALL LETTER B WITH LINE BELOWLATIN CAPITAL LETT" + - "ER C WITH CEDILLA AND ACUTELATIN SMALL LETTER C WITH CEDILLA AND ACUTELA" + - "TIN CAPITAL LETTER D WITH DOT ABOVELATIN SMALL LETTER D WITH DOT ABOVELA" + - "TIN CAPITAL LETTER D WITH DOT BELOWLATIN SMALL LETTER D WITH DOT BELOWLA" + - "TIN CAPITAL LETTER D WITH LINE BELOWLATIN SMALL LETTER D WITH LINE BELOW" + - "LATIN CAPITAL LETTER D WITH CEDILLALATIN SMALL LETTER D WITH CEDILLALATI" + - "N CAPITAL LETTER D WITH CIRCUMFLEX BELOWLATIN SMALL LETTER D WITH CIRCUM" + - "FLEX BELOWLATIN CAPITAL LETTER E WITH MACRON AND GRAVELATIN SMALL LETTER") + ("" + - " E WITH MACRON AND GRAVELATIN CAPITAL LETTER E WITH MACRON AND ACUTELATI" + - "N SMALL LETTER E WITH MACRON AND ACUTELATIN CAPITAL LETTER E WITH CIRCUM" + - "FLEX BELOWLATIN SMALL LETTER E WITH CIRCUMFLEX BELOWLATIN CAPITAL LETTER" + - " E WITH TILDE BELOWLATIN SMALL LETTER E WITH TILDE BELOWLATIN CAPITAL LE" + - "TTER E WITH CEDILLA AND BREVELATIN SMALL LETTER E WITH CEDILLA AND BREVE" + - "LATIN CAPITAL LETTER F WITH DOT ABOVELATIN SMALL LETTER F WITH DOT ABOVE" + - "LATIN CAPITAL LETTER G WITH MACRONLATIN SMALL LETTER G WITH MACRONLATIN " + - "CAPITAL LETTER H WITH DOT ABOVELATIN SMALL LETTER H WITH DOT ABOVELATIN " + - "CAPITAL LETTER H WITH DOT BELOWLATIN SMALL LETTER H WITH DOT BELOWLATIN " + - "CAPITAL LETTER H WITH DIAERESISLATIN SMALL LETTER H WITH DIAERESISLATIN " + - "CAPITAL LETTER H WITH CEDILLALATIN SMALL LETTER H WITH CEDILLALATIN CAPI" + - "TAL LETTER H WITH BREVE BELOWLATIN SMALL LETTER H WITH BREVE BELOWLATIN " + - "CAPITAL LETTER I WITH TILDE BELOWLATIN SMALL LETTER I WITH TILDE BELOWLA" + - "TIN CAPITAL LETTER I WITH DIAERESIS AND ACUTELATIN SMALL LETTER I WITH D" + - "IAERESIS AND ACUTELATIN CAPITAL LETTER K WITH ACUTELATIN SMALL LETTER K " + - "WITH ACUTELATIN CAPITAL LETTER K WITH DOT BELOWLATIN SMALL LETTER K WITH" + - " DOT BELOWLATIN CAPITAL LETTER K WITH LINE BELOWLATIN SMALL LETTER K WIT" + - "H LINE BELOWLATIN CAPITAL LETTER L WITH DOT BELOWLATIN SMALL LETTER L WI" + - "TH DOT BELOWLATIN CAPITAL LETTER L WITH DOT BELOW AND MACRONLATIN SMALL " + - "LETTER L WITH DOT BELOW AND MACRONLATIN CAPITAL LETTER L WITH LINE BELOW" + - "LATIN SMALL LETTER L WITH LINE BELOWLATIN CAPITAL LETTER L WITH CIRCUMFL" + - "EX BELOWLATIN SMALL LETTER L WITH CIRCUMFLEX BELOWLATIN CAPITAL LETTER M" + - " WITH ACUTELATIN SMALL LETTER M WITH ACUTELATIN CAPITAL LETTER M WITH DO" + - "T ABOVELATIN SMALL LETTER M WITH DOT ABOVELATIN CAPITAL LETTER M WITH DO" + - "T BELOWLATIN SMALL LETTER M WITH DOT BELOWLATIN CAPITAL LETTER N WITH DO" + - "T ABOVELATIN SMALL LETTER N WITH DOT ABOVELATIN CAPITAL LETTER N WITH DO" + - "T BELOWLATIN SMALL LETTER N WITH DOT BELOWLATIN CAPITAL LETTER N WITH LI" + - "NE BELOWLATIN SMALL LETTER N WITH LINE BELOWLATIN CAPITAL LETTER N WITH " + - "CIRCUMFLEX BELOWLATIN SMALL LETTER N WITH CIRCUMFLEX BELOWLATIN CAPITAL " + - "LETTER O WITH TILDE AND ACUTELATIN SMALL LETTER O WITH TILDE AND ACUTELA" + - "TIN CAPITAL LETTER O WITH TILDE AND DIAERESISLATIN SMALL LETTER O WITH T" + - "ILDE AND DIAERESISLATIN CAPITAL LETTER O WITH MACRON AND GRAVELATIN SMAL" + - "L LETTER O WITH MACRON AND GRAVELATIN CAPITAL LETTER O WITH MACRON AND A" + - "CUTELATIN SMALL LETTER O WITH MACRON AND ACUTELATIN CAPITAL LETTER P WIT" + - "H ACUTELATIN SMALL LETTER P WITH ACUTELATIN CAPITAL LETTER P WITH DOT AB" + - "OVELATIN SMALL LETTER P WITH DOT ABOVELATIN CAPITAL LETTER R WITH DOT AB" + - "OVELATIN SMALL LETTER R WITH DOT ABOVELATIN CAPITAL LETTER R WITH DOT BE" + - "LOWLATIN SMALL LETTER R WITH DOT BELOWLATIN CAPITAL LETTER R WITH DOT BE" + - "LOW AND MACRONLATIN SMALL LETTER R WITH DOT BELOW AND MACRONLATIN CAPITA" + - "L LETTER R WITH LINE BELOWLATIN SMALL LETTER R WITH LINE BELOWLATIN CAPI" + - "TAL LETTER S WITH DOT ABOVELATIN SMALL LETTER S WITH DOT ABOVELATIN CAPI" + - "TAL LETTER S WITH DOT BELOWLATIN SMALL LETTER S WITH DOT BELOWLATIN CAPI" + - "TAL LETTER S WITH ACUTE AND DOT ABOVELATIN SMALL LETTER S WITH ACUTE AND" + - " DOT ABOVELATIN CAPITAL LETTER S WITH CARON AND DOT ABOVELATIN SMALL LET" + - "TER S WITH CARON AND DOT ABOVELATIN CAPITAL LETTER S WITH DOT BELOW AND " + - "DOT ABOVELATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVELATIN CAPITAL " + - "LETTER T WITH DOT ABOVELATIN SMALL LETTER T WITH DOT ABOVELATIN CAPITAL " + - "LETTER T WITH DOT BELOWLATIN SMALL LETTER T WITH DOT BELOWLATIN CAPITAL " + - "LETTER T WITH LINE BELOWLATIN SMALL LETTER T WITH LINE BELOWLATIN CAPITA" + - "L LETTER T WITH CIRCUMFLEX BELOWLATIN SMALL LETTER T WITH CIRCUMFLEX BEL" + - "OWLATIN CAPITAL LETTER U WITH DIAERESIS BELOWLATIN SMALL LETTER U WITH D" + - "IAERESIS BELOWLATIN CAPITAL LETTER U WITH TILDE BELOWLATIN SMALL LETTER " + - "U WITH TILDE BELOWLATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOWLATIN SMAL" + - "L LETTER U WITH CIRCUMFLEX BELOWLATIN CAPITAL LETTER U WITH TILDE AND AC" + - "UTELATIN SMALL LETTER U WITH TILDE AND ACUTELATIN CAPITAL LETTER U WITH " + - "MACRON AND DIAERESISLATIN SMALL LETTER U WITH MACRON AND DIAERESISLATIN " + - "CAPITAL LETTER V WITH TILDELATIN SMALL LETTER V WITH TILDELATIN CAPITAL " + - "LETTER V WITH DOT BELOWLATIN SMALL LETTER V WITH DOT BELOWLATIN CAPITAL " + - "LETTER W WITH GRAVELATIN SMALL LETTER W WITH GRAVELATIN CAPITAL LETTER W" + - " WITH ACUTELATIN SMALL LETTER W WITH ACUTELATIN CAPITAL LETTER W WITH DI" + - "AERESISLATIN SMALL LETTER W WITH DIAERESISLATIN CAPITAL LETTER W WITH DO" + - "T ABOVELATIN SMALL LETTER W WITH DOT ABOVELATIN CAPITAL LETTER W WITH DO" + - "T BELOWLATIN SMALL LETTER W WITH DOT BELOWLATIN CAPITAL LETTER X WITH DO" + - "T ABOVELATIN SMALL LETTER X WITH DOT ABOVELATIN CAPITAL LETTER X WITH DI") + ("" + - "AERESISLATIN SMALL LETTER X WITH DIAERESISLATIN CAPITAL LETTER Y WITH DO" + - "T ABOVELATIN SMALL LETTER Y WITH DOT ABOVELATIN CAPITAL LETTER Z WITH CI" + - "RCUMFLEXLATIN SMALL LETTER Z WITH CIRCUMFLEXLATIN CAPITAL LETTER Z WITH " + - "DOT BELOWLATIN SMALL LETTER Z WITH DOT BELOWLATIN CAPITAL LETTER Z WITH " + - "LINE BELOWLATIN SMALL LETTER Z WITH LINE BELOWLATIN SMALL LETTER H WITH " + - "LINE BELOWLATIN SMALL LETTER T WITH DIAERESISLATIN SMALL LETTER W WITH R" + - "ING ABOVELATIN SMALL LETTER Y WITH RING ABOVELATIN SMALL LETTER A WITH R" + - "IGHT HALF RINGLATIN SMALL LETTER LONG S WITH DOT ABOVELATIN SMALL LETTER" + - " LONG S WITH DIAGONAL STROKELATIN SMALL LETTER LONG S WITH HIGH STROKELA" + - "TIN CAPITAL LETTER SHARP SLATIN SMALL LETTER DELTALATIN CAPITAL LETTER A" + - " WITH DOT BELOWLATIN SMALL LETTER A WITH DOT BELOWLATIN CAPITAL LETTER A" + - " WITH HOOK ABOVELATIN SMALL LETTER A WITH HOOK ABOVELATIN CAPITAL LETTER" + - " A WITH CIRCUMFLEX AND ACUTELATIN SMALL LETTER A WITH CIRCUMFLEX AND ACU" + - "TELATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVELATIN SMALL LETTER A W" + - "ITH CIRCUMFLEX AND GRAVELATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK " + - "ABOVELATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVELATIN CAPITAL LE" + - "TTER A WITH CIRCUMFLEX AND TILDELATIN SMALL LETTER A WITH CIRCUMFLEX AND" + - " TILDELATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOWLATIN SMALL LE" + - "TTER A WITH CIRCUMFLEX AND DOT BELOWLATIN CAPITAL LETTER A WITH BREVE AN" + - "D ACUTELATIN SMALL LETTER A WITH BREVE AND ACUTELATIN CAPITAL LETTER A W" + - "ITH BREVE AND GRAVELATIN SMALL LETTER A WITH BREVE AND GRAVELATIN CAPITA" + - "L LETTER A WITH BREVE AND HOOK ABOVELATIN SMALL LETTER A WITH BREVE AND " + - "HOOK ABOVELATIN CAPITAL LETTER A WITH BREVE AND TILDELATIN SMALL LETTER " + - "A WITH BREVE AND TILDELATIN CAPITAL LETTER A WITH BREVE AND DOT BELOWLAT" + - "IN SMALL LETTER A WITH BREVE AND DOT BELOWLATIN CAPITAL LETTER E WITH DO" + - "T BELOWLATIN SMALL LETTER E WITH DOT BELOWLATIN CAPITAL LETTER E WITH HO" + - "OK ABOVELATIN SMALL LETTER E WITH HOOK ABOVELATIN CAPITAL LETTER E WITH " + - "TILDELATIN SMALL LETTER E WITH TILDELATIN CAPITAL LETTER E WITH CIRCUMFL" + - "EX AND ACUTELATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTELATIN CAPITAL " + - "LETTER E WITH CIRCUMFLEX AND GRAVELATIN SMALL LETTER E WITH CIRCUMFLEX A" + - "ND GRAVELATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVELATIN SMALL" + - " LETTER E WITH CIRCUMFLEX AND HOOK ABOVELATIN CAPITAL LETTER E WITH CIRC" + - "UMFLEX AND TILDELATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDELATIN CAPI" + - "TAL LETTER E WITH CIRCUMFLEX AND DOT BELOWLATIN SMALL LETTER E WITH CIRC" + - "UMFLEX AND DOT BELOWLATIN CAPITAL LETTER I WITH HOOK ABOVELATIN SMALL LE" + - "TTER I WITH HOOK ABOVELATIN CAPITAL LETTER I WITH DOT BELOWLATIN SMALL L" + - "ETTER I WITH DOT BELOWLATIN CAPITAL LETTER O WITH DOT BELOWLATIN SMALL L" + - "ETTER O WITH DOT BELOWLATIN CAPITAL LETTER O WITH HOOK ABOVELATIN SMALL " + - "LETTER O WITH HOOK ABOVELATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE" + - "LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTELATIN CAPITAL LETTER O WIT" + - "H CIRCUMFLEX AND GRAVELATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVELATI" + - "N CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVELATIN SMALL LETTER O WI" + - "TH CIRCUMFLEX AND HOOK ABOVELATIN CAPITAL LETTER O WITH CIRCUMFLEX AND T" + - "ILDELATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDELATIN CAPITAL LETTER O" + - " WITH CIRCUMFLEX AND DOT BELOWLATIN SMALL LETTER O WITH CIRCUMFLEX AND D" + - "OT BELOWLATIN CAPITAL LETTER O WITH HORN AND ACUTELATIN SMALL LETTER O W" + - "ITH HORN AND ACUTELATIN CAPITAL LETTER O WITH HORN AND GRAVELATIN SMALL " + - "LETTER O WITH HORN AND GRAVELATIN CAPITAL LETTER O WITH HORN AND HOOK AB" + - "OVELATIN SMALL LETTER O WITH HORN AND HOOK ABOVELATIN CAPITAL LETTER O W" + - "ITH HORN AND TILDELATIN SMALL LETTER O WITH HORN AND TILDELATIN CAPITAL " + - "LETTER O WITH HORN AND DOT BELOWLATIN SMALL LETTER O WITH HORN AND DOT B" + - "ELOWLATIN CAPITAL LETTER U WITH DOT BELOWLATIN SMALL LETTER U WITH DOT B" + - "ELOWLATIN CAPITAL LETTER U WITH HOOK ABOVELATIN SMALL LETTER U WITH HOOK" + - " ABOVELATIN CAPITAL LETTER U WITH HORN AND ACUTELATIN SMALL LETTER U WIT" + - "H HORN AND ACUTELATIN CAPITAL LETTER U WITH HORN AND GRAVELATIN SMALL LE" + - "TTER U WITH HORN AND GRAVELATIN CAPITAL LETTER U WITH HORN AND HOOK ABOV" + - "ELATIN SMALL LETTER U WITH HORN AND HOOK ABOVELATIN CAPITAL LETTER U WIT" + - "H HORN AND TILDELATIN SMALL LETTER U WITH HORN AND TILDELATIN CAPITAL LE" + - "TTER U WITH HORN AND DOT BELOWLATIN SMALL LETTER U WITH HORN AND DOT BEL" + - "OWLATIN CAPITAL LETTER Y WITH GRAVELATIN SMALL LETTER Y WITH GRAVELATIN " + - "CAPITAL LETTER Y WITH DOT BELOWLATIN SMALL LETTER Y WITH DOT BELOWLATIN " + - "CAPITAL LETTER Y WITH HOOK ABOVELATIN SMALL LETTER Y WITH HOOK ABOVELATI" + - "N CAPITAL LETTER Y WITH TILDELATIN SMALL LETTER Y WITH TILDELATIN CAPITA" + - "L LETTER MIDDLE-WELSH LLLATIN SMALL LETTER MIDDLE-WELSH LLLATIN CAPITAL ") + ("" + - "LETTER MIDDLE-WELSH VLATIN SMALL LETTER MIDDLE-WELSH VLATIN CAPITAL LETT" + - "ER Y WITH LOOPLATIN SMALL LETTER Y WITH LOOPGREEK SMALL LETTER ALPHA WIT" + - "H PSILIGREEK SMALL LETTER ALPHA WITH DASIAGREEK SMALL LETTER ALPHA WITH " + - "PSILI AND VARIAGREEK SMALL LETTER ALPHA WITH DASIA AND VARIAGREEK SMALL " + - "LETTER ALPHA WITH PSILI AND OXIAGREEK SMALL LETTER ALPHA WITH DASIA AND " + - "OXIAGREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENIGREEK SMALL LETTE" + - "R ALPHA WITH DASIA AND PERISPOMENIGREEK CAPITAL LETTER ALPHA WITH PSILIG" + - "REEK CAPITAL LETTER ALPHA WITH DASIAGREEK CAPITAL LETTER ALPHA WITH PSIL" + - "I AND VARIAGREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIAGREEK CAPITAL " + - "LETTER ALPHA WITH PSILI AND OXIAGREEK CAPITAL LETTER ALPHA WITH DASIA AN" + - "D OXIAGREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENIGREEK CAPITAL" + - " LETTER ALPHA WITH DASIA AND PERISPOMENIGREEK SMALL LETTER EPSILON WITH " + - "PSILIGREEK SMALL LETTER EPSILON WITH DASIAGREEK SMALL LETTER EPSILON WIT" + - "H PSILI AND VARIAGREEK SMALL LETTER EPSILON WITH DASIA AND VARIAGREEK SM" + - "ALL LETTER EPSILON WITH PSILI AND OXIAGREEK SMALL LETTER EPSILON WITH DA" + - "SIA AND OXIAGREEK CAPITAL LETTER EPSILON WITH PSILIGREEK CAPITAL LETTER " + - "EPSILON WITH DASIAGREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIAGREEK" + - " CAPITAL LETTER EPSILON WITH DASIA AND VARIAGREEK CAPITAL LETTER EPSILON" + - " WITH PSILI AND OXIAGREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIAGREE" + - "K SMALL LETTER ETA WITH PSILIGREEK SMALL LETTER ETA WITH DASIAGREEK SMAL" + - "L LETTER ETA WITH PSILI AND VARIAGREEK SMALL LETTER ETA WITH DASIA AND V" + - "ARIAGREEK SMALL LETTER ETA WITH PSILI AND OXIAGREEK SMALL LETTER ETA WIT" + - "H DASIA AND OXIAGREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENIGREEK S" + - "MALL LETTER ETA WITH DASIA AND PERISPOMENIGREEK CAPITAL LETTER ETA WITH " + - "PSILIGREEK CAPITAL LETTER ETA WITH DASIAGREEK CAPITAL LETTER ETA WITH PS" + - "ILI AND VARIAGREEK CAPITAL LETTER ETA WITH DASIA AND VARIAGREEK CAPITAL " + - "LETTER ETA WITH PSILI AND OXIAGREEK CAPITAL LETTER ETA WITH DASIA AND OX" + - "IAGREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENIGREEK CAPITAL LETTE" + - "R ETA WITH DASIA AND PERISPOMENIGREEK SMALL LETTER IOTA WITH PSILIGREEK " + - "SMALL LETTER IOTA WITH DASIAGREEK SMALL LETTER IOTA WITH PSILI AND VARIA" + - "GREEK SMALL LETTER IOTA WITH DASIA AND VARIAGREEK SMALL LETTER IOTA WITH" + - " PSILI AND OXIAGREEK SMALL LETTER IOTA WITH DASIA AND OXIAGREEK SMALL LE" + - "TTER IOTA WITH PSILI AND PERISPOMENIGREEK SMALL LETTER IOTA WITH DASIA A" + - "ND PERISPOMENIGREEK CAPITAL LETTER IOTA WITH PSILIGREEK CAPITAL LETTER I" + - "OTA WITH DASIAGREEK CAPITAL LETTER IOTA WITH PSILI AND VARIAGREEK CAPITA" + - "L LETTER IOTA WITH DASIA AND VARIAGREEK CAPITAL LETTER IOTA WITH PSILI A" + - "ND OXIAGREEK CAPITAL LETTER IOTA WITH DASIA AND OXIAGREEK CAPITAL LETTER" + - " IOTA WITH PSILI AND PERISPOMENIGREEK CAPITAL LETTER IOTA WITH DASIA AND" + - " PERISPOMENIGREEK SMALL LETTER OMICRON WITH PSILIGREEK SMALL LETTER OMIC" + - "RON WITH DASIAGREEK SMALL LETTER OMICRON WITH PSILI AND VARIAGREEK SMALL" + - " LETTER OMICRON WITH DASIA AND VARIAGREEK SMALL LETTER OMICRON WITH PSIL" + - "I AND OXIAGREEK SMALL LETTER OMICRON WITH DASIA AND OXIAGREEK CAPITAL LE" + - "TTER OMICRON WITH PSILIGREEK CAPITAL LETTER OMICRON WITH DASIAGREEK CAPI" + - "TAL LETTER OMICRON WITH PSILI AND VARIAGREEK CAPITAL LETTER OMICRON WITH" + - " DASIA AND VARIAGREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIAGREEK CA" + - "PITAL LETTER OMICRON WITH DASIA AND OXIAGREEK SMALL LETTER UPSILON WITH " + - "PSILIGREEK SMALL LETTER UPSILON WITH DASIAGREEK SMALL LETTER UPSILON WIT" + - "H PSILI AND VARIAGREEK SMALL LETTER UPSILON WITH DASIA AND VARIAGREEK SM" + - "ALL LETTER UPSILON WITH PSILI AND OXIAGREEK SMALL LETTER UPSILON WITH DA" + - "SIA AND OXIAGREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENIGREEK S" + - "MALL LETTER UPSILON WITH DASIA AND PERISPOMENIGREEK CAPITAL LETTER UPSIL" + - "ON WITH DASIAGREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIAGREEK CAPI" + - "TAL LETTER UPSILON WITH DASIA AND OXIAGREEK CAPITAL LETTER UPSILON WITH " + - "DASIA AND PERISPOMENIGREEK SMALL LETTER OMEGA WITH PSILIGREEK SMALL LETT" + - "ER OMEGA WITH DASIAGREEK SMALL LETTER OMEGA WITH PSILI AND VARIAGREEK SM" + - "ALL LETTER OMEGA WITH DASIA AND VARIAGREEK SMALL LETTER OMEGA WITH PSILI" + - " AND OXIAGREEK SMALL LETTER OMEGA WITH DASIA AND OXIAGREEK SMALL LETTER " + - "OMEGA WITH PSILI AND PERISPOMENIGREEK SMALL LETTER OMEGA WITH DASIA AND " + - "PERISPOMENIGREEK CAPITAL LETTER OMEGA WITH PSILIGREEK CAPITAL LETTER OME" + - "GA WITH DASIAGREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIAGREEK CAPITA" + - "L LETTER OMEGA WITH DASIA AND VARIAGREEK CAPITAL LETTER OMEGA WITH PSILI" + - " AND OXIAGREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIAGREEK CAPITAL LET" + - "TER OMEGA WITH PSILI AND PERISPOMENIGREEK CAPITAL LETTER OMEGA WITH DASI" + - "A AND PERISPOMENIGREEK SMALL LETTER ALPHA WITH VARIAGREEK SMALL LETTER A") + ("" + - "LPHA WITH OXIAGREEK SMALL LETTER EPSILON WITH VARIAGREEK SMALL LETTER EP" + - "SILON WITH OXIAGREEK SMALL LETTER ETA WITH VARIAGREEK SMALL LETTER ETA W" + - "ITH OXIAGREEK SMALL LETTER IOTA WITH VARIAGREEK SMALL LETTER IOTA WITH O" + - "XIAGREEK SMALL LETTER OMICRON WITH VARIAGREEK SMALL LETTER OMICRON WITH " + - "OXIAGREEK SMALL LETTER UPSILON WITH VARIAGREEK SMALL LETTER UPSILON WITH" + - " OXIAGREEK SMALL LETTER OMEGA WITH VARIAGREEK SMALL LETTER OMEGA WITH OX" + - "IAGREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENIGREEK SMALL LETTE" + - "R ALPHA WITH DASIA AND YPOGEGRAMMENIGREEK SMALL LETTER ALPHA WITH PSILI " + - "AND VARIA AND YPOGEGRAMMENIGREEK SMALL LETTER ALPHA WITH DASIA AND VARIA" + - " AND YPOGEGRAMMENIGREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGE" + - "GRAMMENIGREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENIGR" + - "EEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENIGREEK" + - " SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENIGREEK CA" + - "PITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENIGREEK CAPITAL LETTER ALP" + - "HA WITH DASIA AND PROSGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH PSILI AN" + - "D VARIA AND PROSGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH DASIA AND VARI" + - "A AND PROSGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND P" + - "ROSGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGR" + - "AMMENIGREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGR" + - "AMMENIGREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGR" + - "AMMENIGREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENIGREEK SMALL LET" + - "TER ETA WITH DASIA AND YPOGEGRAMMENIGREEK SMALL LETTER ETA WITH PSILI AN" + - "D VARIA AND YPOGEGRAMMENIGREEK SMALL LETTER ETA WITH DASIA AND VARIA AND" + - " YPOGEGRAMMENIGREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMME" + - "NIGREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENIGREEK SMAL" + - "L LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENIGREEK SMALL LET" + - "TER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENIGREEK CAPITAL LETTER" + - " ETA WITH PSILI AND PROSGEGRAMMENIGREEK CAPITAL LETTER ETA WITH DASIA AN" + - "D PROSGEGRAMMENIGREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGE" + - "GRAMMENIGREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI" + - "GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENIGREEK CAP" + - "ITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENIGREEK CAPITAL LETT" + - "ER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENIGREEK CAPITAL LETTER" + - " ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENIGREEK SMALL LETTER OME" + - "GA WITH PSILI AND YPOGEGRAMMENIGREEK SMALL LETTER OMEGA WITH DASIA AND Y" + - "POGEGRAMMENIGREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMM" + - "ENIGREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENIGREEK " + - "SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENIGREEK SMALL LETT" + - "ER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENIGREEK SMALL LETTER OMEGA W" + - "ITH PSILI AND PERISPOMENI AND YPOGEGRAMMENIGREEK SMALL LETTER OMEGA WITH" + - " DASIA AND PERISPOMENI AND YPOGEGRAMMENIGREEK CAPITAL LETTER OMEGA WITH " + - "PSILI AND PROSGEGRAMMENIGREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGE" + - "GRAMMENIGREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMME" + - "NIGREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENIGREE" + - "K CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENIGREEK CAPIT" + - "AL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENIGREEK CAPITAL LETT" + - "ER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENIGREEK CAPITAL LETT" + - "ER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENIGREEK SMALL LETTER" + - " ALPHA WITH VRACHYGREEK SMALL LETTER ALPHA WITH MACRONGREEK SMALL LETTER" + - " ALPHA WITH VARIA AND YPOGEGRAMMENIGREEK SMALL LETTER ALPHA WITH YPOGEGR" + - "AMMENIGREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENIGREEK SMALL LE" + - "TTER ALPHA WITH PERISPOMENIGREEK SMALL LETTER ALPHA WITH PERISPOMENI AND" + - " YPOGEGRAMMENIGREEK CAPITAL LETTER ALPHA WITH VRACHYGREEK CAPITAL LETTER" + - " ALPHA WITH MACRONGREEK CAPITAL LETTER ALPHA WITH VARIAGREEK CAPITAL LET" + - "TER ALPHA WITH OXIAGREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENIGREEK K" + - "ORONISGREEK PROSGEGRAMMENIGREEK PSILIGREEK PERISPOMENIGREEK DIALYTIKA AN" + - "D PERISPOMENIGREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENIGREEK SM" + - "ALL LETTER ETA WITH YPOGEGRAMMENIGREEK SMALL LETTER ETA WITH OXIA AND YP" + - "OGEGRAMMENIGREEK SMALL LETTER ETA WITH PERISPOMENIGREEK SMALL LETTER ETA" + - " WITH PERISPOMENI AND YPOGEGRAMMENIGREEK CAPITAL LETTER EPSILON WITH VAR" + - "IAGREEK CAPITAL LETTER EPSILON WITH OXIAGREEK CAPITAL LETTER ETA WITH VA" + - "RIAGREEK CAPITAL LETTER ETA WITH OXIAGREEK CAPITAL LETTER ETA WITH PROSG" + - "EGRAMMENIGREEK PSILI AND VARIAGREEK PSILI AND OXIAGREEK PSILI AND PERISP" + - "OMENIGREEK SMALL LETTER IOTA WITH VRACHYGREEK SMALL LETTER IOTA WITH MAC") + ("" + - "RONGREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIAGREEK SMALL LETTER IO" + - "TA WITH DIALYTIKA AND OXIAGREEK SMALL LETTER IOTA WITH PERISPOMENIGREEK " + - "SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENIGREEK CAPITAL LETTER IOT" + - "A WITH VRACHYGREEK CAPITAL LETTER IOTA WITH MACRONGREEK CAPITAL LETTER I" + - "OTA WITH VARIAGREEK CAPITAL LETTER IOTA WITH OXIAGREEK DASIA AND VARIAGR" + - "EEK DASIA AND OXIAGREEK DASIA AND PERISPOMENIGREEK SMALL LETTER UPSILON " + - "WITH VRACHYGREEK SMALL LETTER UPSILON WITH MACRONGREEK SMALL LETTER UPSI" + - "LON WITH DIALYTIKA AND VARIAGREEK SMALL LETTER UPSILON WITH DIALYTIKA AN" + - "D OXIAGREEK SMALL LETTER RHO WITH PSILIGREEK SMALL LETTER RHO WITH DASIA" + - "GREEK SMALL LETTER UPSILON WITH PERISPOMENIGREEK SMALL LETTER UPSILON WI" + - "TH DIALYTIKA AND PERISPOMENIGREEK CAPITAL LETTER UPSILON WITH VRACHYGREE" + - "K CAPITAL LETTER UPSILON WITH MACRONGREEK CAPITAL LETTER UPSILON WITH VA" + - "RIAGREEK CAPITAL LETTER UPSILON WITH OXIAGREEK CAPITAL LETTER RHO WITH D" + - "ASIAGREEK DIALYTIKA AND VARIAGREEK DIALYTIKA AND OXIAGREEK VARIAGREEK SM" + - "ALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENIGREEK SMALL LETTER OMEGA WI" + - "TH YPOGEGRAMMENIGREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENIGREE" + - "K SMALL LETTER OMEGA WITH PERISPOMENIGREEK SMALL LETTER OMEGA WITH PERIS" + - "POMENI AND YPOGEGRAMMENIGREEK CAPITAL LETTER OMICRON WITH VARIAGREEK CAP" + - "ITAL LETTER OMICRON WITH OXIAGREEK CAPITAL LETTER OMEGA WITH VARIAGREEK " + - "CAPITAL LETTER OMEGA WITH OXIAGREEK CAPITAL LETTER OMEGA WITH PROSGEGRAM" + - "MENIGREEK OXIAGREEK DASIAEN QUADEM QUADEN SPACEEM SPACETHREE-PER-EM SPAC" + - "EFOUR-PER-EM SPACESIX-PER-EM SPACEFIGURE SPACEPUNCTUATION SPACETHIN SPAC" + - "EHAIR SPACEZERO WIDTH SPACEZERO WIDTH NON-JOINERZERO WIDTH JOINERLEFT-TO" + - "-RIGHT MARKRIGHT-TO-LEFT MARKHYPHENNON-BREAKING HYPHENFIGURE DASHEN DASH" + - "EM DASHHORIZONTAL BARDOUBLE VERTICAL LINEDOUBLE LOW LINELEFT SINGLE QUOT" + - "ATION MARKRIGHT SINGLE QUOTATION MARKSINGLE LOW-9 QUOTATION MARKSINGLE H" + - "IGH-REVERSED-9 QUOTATION MARKLEFT DOUBLE QUOTATION MARKRIGHT DOUBLE QUOT" + - "ATION MARKDOUBLE LOW-9 QUOTATION MARKDOUBLE HIGH-REVERSED-9 QUOTATION MA" + - "RKDAGGERDOUBLE DAGGERBULLETTRIANGULAR BULLETONE DOT LEADERTWO DOT LEADER" + - "HORIZONTAL ELLIPSISHYPHENATION POINTLINE SEPARATORPARAGRAPH SEPARATORLEF" + - "T-TO-RIGHT EMBEDDINGRIGHT-TO-LEFT EMBEDDINGPOP DIRECTIONAL FORMATTINGLEF" + - "T-TO-RIGHT OVERRIDERIGHT-TO-LEFT OVERRIDENARROW NO-BREAK SPACEPER MILLE " + - "SIGNPER TEN THOUSAND SIGNPRIMEDOUBLE PRIMETRIPLE PRIMEREVERSED PRIMEREVE" + - "RSED DOUBLE PRIMEREVERSED TRIPLE PRIMECARETSINGLE LEFT-POINTING ANGLE QU" + - "OTATION MARKSINGLE RIGHT-POINTING ANGLE QUOTATION MARKREFERENCE MARKDOUB" + - "LE EXCLAMATION MARKINTERROBANGOVERLINEUNDERTIECHARACTER TIECARET INSERTI" + - "ON POINTASTERISMHYPHEN BULLETFRACTION SLASHLEFT SQUARE BRACKET WITH QUIL" + - "LRIGHT SQUARE BRACKET WITH QUILLDOUBLE QUESTION MARKQUESTION EXCLAMATION" + - " MARKEXCLAMATION QUESTION MARKTIRONIAN SIGN ETREVERSED PILCROW SIGNBLACK" + - " LEFTWARDS BULLETBLACK RIGHTWARDS BULLETLOW ASTERISKREVERSED SEMICOLONCL" + - "OSE UPTWO ASTERISKS ALIGNED VERTICALLYCOMMERCIAL MINUS SIGNSWUNG DASHINV" + - "ERTED UNDERTIEFLOWER PUNCTUATION MARKTHREE DOT PUNCTUATIONQUADRUPLE PRIM" + - "EFOUR DOT PUNCTUATIONFIVE DOT PUNCTUATIONTWO DOT PUNCTUATIONFOUR DOT MAR" + - "KDOTTED CROSSTRICOLONVERTICAL FOUR DOTSMEDIUM MATHEMATICAL SPACEWORD JOI" + - "NERFUNCTION APPLICATIONINVISIBLE TIMESINVISIBLE SEPARATORINVISIBLE PLUSL" + - "EFT-TO-RIGHT ISOLATERIGHT-TO-LEFT ISOLATEFIRST STRONG ISOLATEPOP DIRECTI" + - "ONAL ISOLATEINHIBIT SYMMETRIC SWAPPINGACTIVATE SYMMETRIC SWAPPINGINHIBIT" + - " ARABIC FORM SHAPINGACTIVATE ARABIC FORM SHAPINGNATIONAL DIGIT SHAPESNOM" + - "INAL DIGIT SHAPESSUPERSCRIPT ZEROSUPERSCRIPT LATIN SMALL LETTER ISUPERSC" + - "RIPT FOURSUPERSCRIPT FIVESUPERSCRIPT SIXSUPERSCRIPT SEVENSUPERSCRIPT EIG" + - "HTSUPERSCRIPT NINESUPERSCRIPT PLUS SIGNSUPERSCRIPT MINUSSUPERSCRIPT EQUA" + - "LS SIGNSUPERSCRIPT LEFT PARENTHESISSUPERSCRIPT RIGHT PARENTHESISSUPERSCR" + - "IPT LATIN SMALL LETTER NSUBSCRIPT ZEROSUBSCRIPT ONESUBSCRIPT TWOSUBSCRIP" + - "T THREESUBSCRIPT FOURSUBSCRIPT FIVESUBSCRIPT SIXSUBSCRIPT SEVENSUBSCRIPT" + - " EIGHTSUBSCRIPT NINESUBSCRIPT PLUS SIGNSUBSCRIPT MINUSSUBSCRIPT EQUALS S" + - "IGNSUBSCRIPT LEFT PARENTHESISSUBSCRIPT RIGHT PARENTHESISLATIN SUBSCRIPT " + - "SMALL LETTER ALATIN SUBSCRIPT SMALL LETTER ELATIN SUBSCRIPT SMALL LETTER" + - " OLATIN SUBSCRIPT SMALL LETTER XLATIN SUBSCRIPT SMALL LETTER SCHWALATIN " + - "SUBSCRIPT SMALL LETTER HLATIN SUBSCRIPT SMALL LETTER KLATIN SUBSCRIPT SM" + - "ALL LETTER LLATIN SUBSCRIPT SMALL LETTER MLATIN SUBSCRIPT SMALL LETTER N" + - "LATIN SUBSCRIPT SMALL LETTER PLATIN SUBSCRIPT SMALL LETTER SLATIN SUBSCR" + - "IPT SMALL LETTER TEURO-CURRENCY SIGNCOLON SIGNCRUZEIRO SIGNFRENCH FRANC " + - "SIGNLIRA SIGNMILL SIGNNAIRA SIGNPESETA SIGNRUPEE SIGNWON SIGNNEW SHEQEL " + - "SIGNDONG SIGNEURO SIGNKIP SIGNTUGRIK SIGNDRACHMA SIGNGERMAN PENNY SIGNPE") + ("" + - "SO SIGNGUARANI SIGNAUSTRAL SIGNHRYVNIA SIGNCEDI SIGNLIVRE TOURNOIS SIGNS" + - "PESMILO SIGNTENGE SIGNINDIAN RUPEE SIGNTURKISH LIRA SIGNNORDIC MARK SIGN" + - "MANAT SIGNRUBLE SIGNLARI SIGNCOMBINING LEFT HARPOON ABOVECOMBINING RIGHT" + - " HARPOON ABOVECOMBINING LONG VERTICAL LINE OVERLAYCOMBINING SHORT VERTIC" + - "AL LINE OVERLAYCOMBINING ANTICLOCKWISE ARROW ABOVECOMBINING CLOCKWISE AR" + - "ROW ABOVECOMBINING LEFT ARROW ABOVECOMBINING RIGHT ARROW ABOVECOMBINING " + - "RING OVERLAYCOMBINING CLOCKWISE RING OVERLAYCOMBINING ANTICLOCKWISE RING" + - " OVERLAYCOMBINING THREE DOTS ABOVECOMBINING FOUR DOTS ABOVECOMBINING ENC" + - "LOSING CIRCLECOMBINING ENCLOSING SQUARECOMBINING ENCLOSING DIAMONDCOMBIN" + - "ING ENCLOSING CIRCLE BACKSLASHCOMBINING LEFT RIGHT ARROW ABOVECOMBINING " + - "ENCLOSING SCREENCOMBINING ENCLOSING KEYCAPCOMBINING ENCLOSING UPWARD POI" + - "NTING TRIANGLECOMBINING REVERSE SOLIDUS OVERLAYCOMBINING DOUBLE VERTICAL" + - " STROKE OVERLAYCOMBINING ANNUITY SYMBOLCOMBINING TRIPLE UNDERDOTCOMBININ" + - "G WIDE BRIDGE ABOVECOMBINING LEFTWARDS ARROW OVERLAYCOMBINING LONG DOUBL" + - "E SOLIDUS OVERLAYCOMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDSCOMBINI" + - "NG LEFTWARDS HARPOON WITH BARB DOWNWARDSCOMBINING LEFT ARROW BELOWCOMBIN" + - "ING RIGHT ARROW BELOWCOMBINING ASTERISK ABOVEACCOUNT OFADDRESSED TO THE " + - "SUBJECTDOUBLE-STRUCK CAPITAL CDEGREE CELSIUSCENTRE LINE SYMBOLCARE OFCAD" + - "A UNAEULER CONSTANTSCRUPLEDEGREE FAHRENHEITSCRIPT SMALL GSCRIPT CAPITAL " + - "HBLACK-LETTER CAPITAL HDOUBLE-STRUCK CAPITAL HPLANCK CONSTANTPLANCK CONS" + - "TANT OVER TWO PISCRIPT CAPITAL IBLACK-LETTER CAPITAL ISCRIPT CAPITAL LSC" + - "RIPT SMALL LL B BAR SYMBOLDOUBLE-STRUCK CAPITAL NNUMERO SIGNSOUND RECORD" + - "ING COPYRIGHTSCRIPT CAPITAL PDOUBLE-STRUCK CAPITAL PDOUBLE-STRUCK CAPITA" + - "L QSCRIPT CAPITAL RBLACK-LETTER CAPITAL RDOUBLE-STRUCK CAPITAL RPRESCRIP" + - "TION TAKERESPONSESERVICE MARKTELEPHONE SIGNTRADE MARK SIGNVERSICLEDOUBLE" + - "-STRUCK CAPITAL ZOUNCE SIGNOHM SIGNINVERTED OHM SIGNBLACK-LETTER CAPITAL" + - " ZTURNED GREEK SMALL LETTER IOTAKELVIN SIGNANGSTROM SIGNSCRIPT CAPITAL B" + - "BLACK-LETTER CAPITAL CESTIMATED SYMBOLSCRIPT SMALL ESCRIPT CAPITAL ESCRI" + - "PT CAPITAL FTURNED CAPITAL FSCRIPT CAPITAL MSCRIPT SMALL OALEF SYMBOLBET" + - " SYMBOLGIMEL SYMBOLDALET SYMBOLINFORMATION SOURCEROTATED CAPITAL QFACSIM" + - "ILE SIGNDOUBLE-STRUCK SMALL PIDOUBLE-STRUCK SMALL GAMMADOUBLE-STRUCK CAP" + - "ITAL GAMMADOUBLE-STRUCK CAPITAL PIDOUBLE-STRUCK N-ARY SUMMATIONTURNED SA" + - "NS-SERIF CAPITAL GTURNED SANS-SERIF CAPITAL LREVERSED SANS-SERIF CAPITAL" + - " LTURNED SANS-SERIF CAPITAL YDOUBLE-STRUCK ITALIC CAPITAL DDOUBLE-STRUCK" + - " ITALIC SMALL DDOUBLE-STRUCK ITALIC SMALL EDOUBLE-STRUCK ITALIC SMALL ID" + - "OUBLE-STRUCK ITALIC SMALL JPROPERTY LINETURNED AMPERSANDPER SIGNAKTIESEL" + - "SKABTURNED SMALL FSYMBOL FOR SAMARITAN SOURCEVULGAR FRACTION ONE SEVENTH" + - "VULGAR FRACTION ONE NINTHVULGAR FRACTION ONE TENTHVULGAR FRACTION ONE TH" + - "IRDVULGAR FRACTION TWO THIRDSVULGAR FRACTION ONE FIFTHVULGAR FRACTION TW" + - "O FIFTHSVULGAR FRACTION THREE FIFTHSVULGAR FRACTION FOUR FIFTHSVULGAR FR" + - "ACTION ONE SIXTHVULGAR FRACTION FIVE SIXTHSVULGAR FRACTION ONE EIGHTHVUL" + - "GAR FRACTION THREE EIGHTHSVULGAR FRACTION FIVE EIGHTHSVULGAR FRACTION SE" + - "VEN EIGHTHSFRACTION NUMERATOR ONEROMAN NUMERAL ONEROMAN NUMERAL TWOROMAN" + - " NUMERAL THREEROMAN NUMERAL FOURROMAN NUMERAL FIVEROMAN NUMERAL SIXROMAN" + - " NUMERAL SEVENROMAN NUMERAL EIGHTROMAN NUMERAL NINEROMAN NUMERAL TENROMA" + - "N NUMERAL ELEVENROMAN NUMERAL TWELVEROMAN NUMERAL FIFTYROMAN NUMERAL ONE" + - " HUNDREDROMAN NUMERAL FIVE HUNDREDROMAN NUMERAL ONE THOUSANDSMALL ROMAN " + - "NUMERAL ONESMALL ROMAN NUMERAL TWOSMALL ROMAN NUMERAL THREESMALL ROMAN N" + - "UMERAL FOURSMALL ROMAN NUMERAL FIVESMALL ROMAN NUMERAL SIXSMALL ROMAN NU" + - "MERAL SEVENSMALL ROMAN NUMERAL EIGHTSMALL ROMAN NUMERAL NINESMALL ROMAN " + - "NUMERAL TENSMALL ROMAN NUMERAL ELEVENSMALL ROMAN NUMERAL TWELVESMALL ROM" + - "AN NUMERAL FIFTYSMALL ROMAN NUMERAL ONE HUNDREDSMALL ROMAN NUMERAL FIVE " + - "HUNDREDSMALL ROMAN NUMERAL ONE THOUSANDROMAN NUMERAL ONE THOUSAND C DROM" + - "AN NUMERAL FIVE THOUSANDROMAN NUMERAL TEN THOUSANDROMAN NUMERAL REVERSED" + - " ONE HUNDREDLATIN SMALL LETTER REVERSED CROMAN NUMERAL SIX LATE FORMROMA" + - "N NUMERAL FIFTY EARLY FORMROMAN NUMERAL FIFTY THOUSANDROMAN NUMERAL ONE " + - "HUNDRED THOUSANDVULGAR FRACTION ZERO THIRDSTURNED DIGIT TWOTURNED DIGIT " + - "THREELEFTWARDS ARROWUPWARDS ARROWRIGHTWARDS ARROWDOWNWARDS ARROWLEFT RIG" + - "HT ARROWUP DOWN ARROWNORTH WEST ARROWNORTH EAST ARROWSOUTH EAST ARROWSOU" + - "TH WEST ARROWLEFTWARDS ARROW WITH STROKERIGHTWARDS ARROW WITH STROKELEFT" + - "WARDS WAVE ARROWRIGHTWARDS WAVE ARROWLEFTWARDS TWO HEADED ARROWUPWARDS T" + - "WO HEADED ARROWRIGHTWARDS TWO HEADED ARROWDOWNWARDS TWO HEADED ARROWLEFT" + - "WARDS ARROW WITH TAILRIGHTWARDS ARROW WITH TAILLEFTWARDS ARROW FROM BARU" + - "PWARDS ARROW FROM BARRIGHTWARDS ARROW FROM BARDOWNWARDS ARROW FROM BARUP") + ("" + - " DOWN ARROW WITH BASELEFTWARDS ARROW WITH HOOKRIGHTWARDS ARROW WITH HOOK" + - "LEFTWARDS ARROW WITH LOOPRIGHTWARDS ARROW WITH LOOPLEFT RIGHT WAVE ARROW" + - "LEFT RIGHT ARROW WITH STROKEDOWNWARDS ZIGZAG ARROWUPWARDS ARROW WITH TIP" + - " LEFTWARDSUPWARDS ARROW WITH TIP RIGHTWARDSDOWNWARDS ARROW WITH TIP LEFT" + - "WARDSDOWNWARDS ARROW WITH TIP RIGHTWARDSRIGHTWARDS ARROW WITH CORNER DOW" + - "NWARDSDOWNWARDS ARROW WITH CORNER LEFTWARDSANTICLOCKWISE TOP SEMICIRCLE " + - "ARROWCLOCKWISE TOP SEMICIRCLE ARROWNORTH WEST ARROW TO LONG BARLEFTWARDS" + - " ARROW TO BAR OVER RIGHTWARDS ARROW TO BARANTICLOCKWISE OPEN CIRCLE ARRO" + - "WCLOCKWISE OPEN CIRCLE ARROWLEFTWARDS HARPOON WITH BARB UPWARDSLEFTWARDS" + - " HARPOON WITH BARB DOWNWARDSUPWARDS HARPOON WITH BARB RIGHTWARDSUPWARDS " + - "HARPOON WITH BARB LEFTWARDSRIGHTWARDS HARPOON WITH BARB UPWARDSRIGHTWARD" + - "S HARPOON WITH BARB DOWNWARDSDOWNWARDS HARPOON WITH BARB RIGHTWARDSDOWNW" + - "ARDS HARPOON WITH BARB LEFTWARDSRIGHTWARDS ARROW OVER LEFTWARDS ARROWUPW" + - "ARDS ARROW LEFTWARDS OF DOWNWARDS ARROWLEFTWARDS ARROW OVER RIGHTWARDS A" + - "RROWLEFTWARDS PAIRED ARROWSUPWARDS PAIRED ARROWSRIGHTWARDS PAIRED ARROWS" + - "DOWNWARDS PAIRED ARROWSLEFTWARDS HARPOON OVER RIGHTWARDS HARPOONRIGHTWAR" + - "DS HARPOON OVER LEFTWARDS HARPOONLEFTWARDS DOUBLE ARROW WITH STROKELEFT " + - "RIGHT DOUBLE ARROW WITH STROKERIGHTWARDS DOUBLE ARROW WITH STROKELEFTWAR" + - "DS DOUBLE ARROWUPWARDS DOUBLE ARROWRIGHTWARDS DOUBLE ARROWDOWNWARDS DOUB" + - "LE ARROWLEFT RIGHT DOUBLE ARROWUP DOWN DOUBLE ARROWNORTH WEST DOUBLE ARR" + - "OWNORTH EAST DOUBLE ARROWSOUTH EAST DOUBLE ARROWSOUTH WEST DOUBLE ARROWL" + - "EFTWARDS TRIPLE ARROWRIGHTWARDS TRIPLE ARROWLEFTWARDS SQUIGGLE ARROWRIGH" + - "TWARDS SQUIGGLE ARROWUPWARDS ARROW WITH DOUBLE STROKEDOWNWARDS ARROW WIT" + - "H DOUBLE STROKELEFTWARDS DASHED ARROWUPWARDS DASHED ARROWRIGHTWARDS DASH" + - "ED ARROWDOWNWARDS DASHED ARROWLEFTWARDS ARROW TO BARRIGHTWARDS ARROW TO " + - "BARLEFTWARDS WHITE ARROWUPWARDS WHITE ARROWRIGHTWARDS WHITE ARROWDOWNWAR" + - "DS WHITE ARROWUPWARDS WHITE ARROW FROM BARUPWARDS WHITE ARROW ON PEDESTA" + - "LUPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BARUPWARDS WHITE ARROW " + - "ON PEDESTAL WITH VERTICAL BARUPWARDS WHITE DOUBLE ARROWUPWARDS WHITE DOU" + - "BLE ARROW ON PEDESTALRIGHTWARDS WHITE ARROW FROM WALLNORTH WEST ARROW TO" + - " CORNERSOUTH EAST ARROW TO CORNERUP DOWN WHITE ARROWRIGHT ARROW WITH SMA" + - "LL CIRCLEDOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROWTHREE RIGHTWARDS ARRO" + - "WSLEFTWARDS ARROW WITH VERTICAL STROKERIGHTWARDS ARROW WITH VERTICAL STR" + - "OKELEFT RIGHT ARROW WITH VERTICAL STROKELEFTWARDS ARROW WITH DOUBLE VERT" + - "ICAL STROKERIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKELEFT RIGHT ARROW " + - "WITH DOUBLE VERTICAL STROKELEFTWARDS OPEN-HEADED ARROWRIGHTWARDS OPEN-HE" + - "ADED ARROWLEFT RIGHT OPEN-HEADED ARROWFOR ALLCOMPLEMENTPARTIAL DIFFERENT" + - "IALTHERE EXISTSTHERE DOES NOT EXISTEMPTY SETINCREMENTNABLAELEMENT OFNOT " + - "AN ELEMENT OFSMALL ELEMENT OFCONTAINS AS MEMBERDOES NOT CONTAIN AS MEMBE" + - "RSMALL CONTAINS AS MEMBEREND OF PROOFN-ARY PRODUCTN-ARY COPRODUCTN-ARY S" + - "UMMATIONMINUS SIGNMINUS-OR-PLUS SIGNDOT PLUSDIVISION SLASHSET MINUSASTER" + - "ISK OPERATORRING OPERATORBULLET OPERATORSQUARE ROOTCUBE ROOTFOURTH ROOTP" + - "ROPORTIONAL TOINFINITYRIGHT ANGLEANGLEMEASURED ANGLESPHERICAL ANGLEDIVID" + - "ESDOES NOT DIVIDEPARALLEL TONOT PARALLEL TOLOGICAL ANDLOGICAL ORINTERSEC" + - "TIONUNIONINTEGRALDOUBLE INTEGRALTRIPLE INTEGRALCONTOUR INTEGRALSURFACE I" + - "NTEGRALVOLUME INTEGRALCLOCKWISE INTEGRALCLOCKWISE CONTOUR INTEGRALANTICL" + - "OCKWISE CONTOUR INTEGRALTHEREFOREBECAUSERATIOPROPORTIONDOT MINUSEXCESSGE" + - "OMETRIC PROPORTIONHOMOTHETICTILDE OPERATORREVERSED TILDEINVERTED LAZY SS" + - "INE WAVEWREATH PRODUCTNOT TILDEMINUS TILDEASYMPTOTICALLY EQUAL TONOT ASY" + - "MPTOTICALLY EQUAL TOAPPROXIMATELY EQUAL TOAPPROXIMATELY BUT NOT ACTUALLY" + - " EQUAL TONEITHER APPROXIMATELY NOR ACTUALLY EQUAL TOALMOST EQUAL TONOT A" + - "LMOST EQUAL TOALMOST EQUAL OR EQUAL TOTRIPLE TILDEALL EQUAL TOEQUIVALENT" + - " TOGEOMETRICALLY EQUIVALENT TODIFFERENCE BETWEENAPPROACHES THE LIMITGEOM" + - "ETRICALLY EQUAL TOAPPROXIMATELY EQUAL TO OR THE IMAGE OFIMAGE OF OR APPR" + - "OXIMATELY EQUAL TOCOLON EQUALSEQUALS COLONRING IN EQUAL TORING EQUAL TOC" + - "ORRESPONDS TOESTIMATESEQUIANGULAR TOSTAR EQUALSDELTA EQUAL TOEQUAL TO BY" + - " DEFINITIONMEASURED BYQUESTIONED EQUAL TONOT EQUAL TOIDENTICAL TONOT IDE" + - "NTICAL TOSTRICTLY EQUIVALENT TOLESS-THAN OR EQUAL TOGREATER-THAN OR EQUA" + - "L TOLESS-THAN OVER EQUAL TOGREATER-THAN OVER EQUAL TOLESS-THAN BUT NOT E" + - "QUAL TOGREATER-THAN BUT NOT EQUAL TOMUCH LESS-THANMUCH GREATER-THANBETWE" + - "ENNOT EQUIVALENT TONOT LESS-THANNOT GREATER-THANNEITHER LESS-THAN NOR EQ" + - "UAL TONEITHER GREATER-THAN NOR EQUAL TOLESS-THAN OR EQUIVALENT TOGREATER" + - "-THAN OR EQUIVALENT TONEITHER LESS-THAN NOR EQUIVALENT TONEITHER GREATER" + - "-THAN NOR EQUIVALENT TOLESS-THAN OR GREATER-THANGREATER-THAN OR LESS-THA") + ("" + - "NNEITHER LESS-THAN NOR GREATER-THANNEITHER GREATER-THAN NOR LESS-THANPRE" + - "CEDESSUCCEEDSPRECEDES OR EQUAL TOSUCCEEDS OR EQUAL TOPRECEDES OR EQUIVAL" + - "ENT TOSUCCEEDS OR EQUIVALENT TODOES NOT PRECEDEDOES NOT SUCCEEDSUBSET OF" + - "SUPERSET OFNOT A SUBSET OFNOT A SUPERSET OFSUBSET OF OR EQUAL TOSUPERSET" + - " OF OR EQUAL TONEITHER A SUBSET OF NOR EQUAL TONEITHER A SUPERSET OF NOR" + - " EQUAL TOSUBSET OF WITH NOT EQUAL TOSUPERSET OF WITH NOT EQUAL TOMULTISE" + - "TMULTISET MULTIPLICATIONMULTISET UNIONSQUARE IMAGE OFSQUARE ORIGINAL OFS" + - "QUARE IMAGE OF OR EQUAL TOSQUARE ORIGINAL OF OR EQUAL TOSQUARE CAPSQUARE" + - " CUPCIRCLED PLUSCIRCLED MINUSCIRCLED TIMESCIRCLED DIVISION SLASHCIRCLED " + - "DOT OPERATORCIRCLED RING OPERATORCIRCLED ASTERISK OPERATORCIRCLED EQUALS" + - "CIRCLED DASHSQUARED PLUSSQUARED MINUSSQUARED TIMESSQUARED DOT OPERATORRI" + - "GHT TACKLEFT TACKDOWN TACKUP TACKASSERTIONMODELSTRUEFORCESTRIPLE VERTICA" + - "L BAR RIGHT TURNSTILEDOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILEDOES NOT " + - "PROVENOT TRUEDOES NOT FORCENEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURN" + - "STILEPRECEDES UNDER RELATIONSUCCEEDS UNDER RELATIONNORMAL SUBGROUP OFCON" + - "TAINS AS NORMAL SUBGROUPNORMAL SUBGROUP OF OR EQUAL TOCONTAINS AS NORMAL" + - " SUBGROUP OR EQUAL TOORIGINAL OFIMAGE OFMULTIMAPHERMITIAN CONJUGATE MATR" + - "IXINTERCALATEXORNANDNORRIGHT ANGLE WITH ARCRIGHT TRIANGLEN-ARY LOGICAL A" + - "NDN-ARY LOGICAL ORN-ARY INTERSECTIONN-ARY UNIONDIAMOND OPERATORDOT OPERA" + - "TORSTAR OPERATORDIVISION TIMESBOWTIELEFT NORMAL FACTOR SEMIDIRECT PRODUC" + - "TRIGHT NORMAL FACTOR SEMIDIRECT PRODUCTLEFT SEMIDIRECT PRODUCTRIGHT SEMI" + - "DIRECT PRODUCTREVERSED TILDE EQUALSCURLY LOGICAL ORCURLY LOGICAL ANDDOUB" + - "LE SUBSETDOUBLE SUPERSETDOUBLE INTERSECTIONDOUBLE UNIONPITCHFORKEQUAL AN" + - "D PARALLEL TOLESS-THAN WITH DOTGREATER-THAN WITH DOTVERY MUCH LESS-THANV" + - "ERY MUCH GREATER-THANLESS-THAN EQUAL TO OR GREATER-THANGREATER-THAN EQUA" + - "L TO OR LESS-THANEQUAL TO OR LESS-THANEQUAL TO OR GREATER-THANEQUAL TO O" + - "R PRECEDESEQUAL TO OR SUCCEEDSDOES NOT PRECEDE OR EQUALDOES NOT SUCCEED " + - "OR EQUALNOT SQUARE IMAGE OF OR EQUAL TONOT SQUARE ORIGINAL OF OR EQUAL T" + - "OSQUARE IMAGE OF OR NOT EQUAL TOSQUARE ORIGINAL OF OR NOT EQUAL TOLESS-T" + - "HAN BUT NOT EQUIVALENT TOGREATER-THAN BUT NOT EQUIVALENT TOPRECEDES BUT " + - "NOT EQUIVALENT TOSUCCEEDS BUT NOT EQUIVALENT TONOT NORMAL SUBGROUP OFDOE" + - "S NOT CONTAIN AS NORMAL SUBGROUPNOT NORMAL SUBGROUP OF OR EQUAL TODOES N" + - "OT CONTAIN AS NORMAL SUBGROUP OR EQUALVERTICAL ELLIPSISMIDLINE HORIZONTA" + - "L ELLIPSISUP RIGHT DIAGONAL ELLIPSISDOWN RIGHT DIAGONAL ELLIPSISELEMENT " + - "OF WITH LONG HORIZONTAL STROKEELEMENT OF WITH VERTICAL BAR AT END OF HOR" + - "IZONTAL STROKESMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL ST" + - "ROKEELEMENT OF WITH DOT ABOVEELEMENT OF WITH OVERBARSMALL ELEMENT OF WIT" + - "H OVERBARELEMENT OF WITH UNDERBARELEMENT OF WITH TWO HORIZONTAL STROKESC" + - "ONTAINS WITH LONG HORIZONTAL STROKECONTAINS WITH VERTICAL BAR AT END OF " + - "HORIZONTAL STROKESMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL S" + - "TROKECONTAINS WITH OVERBARSMALL CONTAINS WITH OVERBARZ NOTATION BAG MEMB" + - "ERSHIPDIAMETER SIGNELECTRIC ARROWHOUSEUP ARROWHEADDOWN ARROWHEADPROJECTI" + - "VEPERSPECTIVEWAVY LINELEFT CEILINGRIGHT CEILINGLEFT FLOORRIGHT FLOORBOTT" + - "OM RIGHT CROPBOTTOM LEFT CROPTOP RIGHT CROPTOP LEFT CROPREVERSED NOT SIG" + - "NSQUARE LOZENGEARCSEGMENTSECTORTELEPHONE RECORDERPOSITION INDICATORVIEWD" + - "ATA SQUAREPLACE OF INTEREST SIGNTURNED NOT SIGNWATCHHOURGLASSTOP LEFT CO" + - "RNERTOP RIGHT CORNERBOTTOM LEFT CORNERBOTTOM RIGHT CORNERTOP HALF INTEGR" + - "ALBOTTOM HALF INTEGRALFROWNSMILEUP ARROWHEAD BETWEEN TWO HORIZONTAL BARS" + - "OPTION KEYERASE TO THE RIGHTX IN A RECTANGLE BOXKEYBOARDLEFT-POINTING AN" + - "GLE BRACKETRIGHT-POINTING ANGLE BRACKETERASE TO THE LEFTBENZENE RINGCYLI" + - "NDRICITYALL AROUND-PROFILESYMMETRYTOTAL RUNOUTDIMENSION ORIGINCONICAL TA" + - "PERSLOPECOUNTERBORECOUNTERSINKAPL FUNCTIONAL SYMBOL I-BEAMAPL FUNCTIONAL" + - " SYMBOL SQUISH QUADAPL FUNCTIONAL SYMBOL QUAD EQUALAPL FUNCTIONAL SYMBOL" + - " QUAD DIVIDEAPL FUNCTIONAL SYMBOL QUAD DIAMONDAPL FUNCTIONAL SYMBOL QUAD" + - " JOTAPL FUNCTIONAL SYMBOL QUAD CIRCLEAPL FUNCTIONAL SYMBOL CIRCLE STILEA" + - "PL FUNCTIONAL SYMBOL CIRCLE JOTAPL FUNCTIONAL SYMBOL SLASH BARAPL FUNCTI" + - "ONAL SYMBOL BACKSLASH BARAPL FUNCTIONAL SYMBOL QUAD SLASHAPL FUNCTIONAL " + - "SYMBOL QUAD BACKSLASHAPL FUNCTIONAL SYMBOL QUAD LESS-THANAPL FUNCTIONAL " + - "SYMBOL QUAD GREATER-THANAPL FUNCTIONAL SYMBOL LEFTWARDS VANEAPL FUNCTION" + - "AL SYMBOL RIGHTWARDS VANEAPL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROWAPL F" + - "UNCTIONAL SYMBOL QUAD RIGHTWARDS ARROWAPL FUNCTIONAL SYMBOL CIRCLE BACKS" + - "LASHAPL FUNCTIONAL SYMBOL DOWN TACK UNDERBARAPL FUNCTIONAL SYMBOL DELTA " + - "STILEAPL FUNCTIONAL SYMBOL QUAD DOWN CARETAPL FUNCTIONAL SYMBOL QUAD DEL" + - "TAAPL FUNCTIONAL SYMBOL DOWN TACK JOTAPL FUNCTIONAL SYMBOL UPWARDS VANEA") + ("" + - "PL FUNCTIONAL SYMBOL QUAD UPWARDS ARROWAPL FUNCTIONAL SYMBOL UP TACK OVE" + - "RBARAPL FUNCTIONAL SYMBOL DEL STILEAPL FUNCTIONAL SYMBOL QUAD UP CARETAP" + - "L FUNCTIONAL SYMBOL QUAD DELAPL FUNCTIONAL SYMBOL UP TACK JOTAPL FUNCTIO" + - "NAL SYMBOL DOWNWARDS VANEAPL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROWAPL F" + - "UNCTIONAL SYMBOL QUOTE UNDERBARAPL FUNCTIONAL SYMBOL DELTA UNDERBARAPL F" + - "UNCTIONAL SYMBOL DIAMOND UNDERBARAPL FUNCTIONAL SYMBOL JOT UNDERBARAPL F" + - "UNCTIONAL SYMBOL CIRCLE UNDERBARAPL FUNCTIONAL SYMBOL UP SHOE JOTAPL FUN" + - "CTIONAL SYMBOL QUOTE QUADAPL FUNCTIONAL SYMBOL CIRCLE STARAPL FUNCTIONAL" + - " SYMBOL QUAD COLONAPL FUNCTIONAL SYMBOL UP TACK DIAERESISAPL FUNCTIONAL " + - "SYMBOL DEL DIAERESISAPL FUNCTIONAL SYMBOL STAR DIAERESISAPL FUNCTIONAL S" + - "YMBOL JOT DIAERESISAPL FUNCTIONAL SYMBOL CIRCLE DIAERESISAPL FUNCTIONAL " + - "SYMBOL DOWN SHOE STILEAPL FUNCTIONAL SYMBOL LEFT SHOE STILEAPL FUNCTIONA" + - "L SYMBOL TILDE DIAERESISAPL FUNCTIONAL SYMBOL GREATER-THAN DIAERESISAPL " + - "FUNCTIONAL SYMBOL COMMA BARAPL FUNCTIONAL SYMBOL DEL TILDEAPL FUNCTIONAL" + - " SYMBOL ZILDEAPL FUNCTIONAL SYMBOL STILE TILDEAPL FUNCTIONAL SYMBOL SEMI" + - "COLON UNDERBARAPL FUNCTIONAL SYMBOL QUAD NOT EQUALAPL FUNCTIONAL SYMBOL " + - "QUAD QUESTIONAPL FUNCTIONAL SYMBOL DOWN CARET TILDEAPL FUNCTIONAL SYMBOL" + - " UP CARET TILDEAPL FUNCTIONAL SYMBOL IOTAAPL FUNCTIONAL SYMBOL RHOAPL FU" + - "NCTIONAL SYMBOL OMEGAAPL FUNCTIONAL SYMBOL ALPHA UNDERBARAPL FUNCTIONAL " + - "SYMBOL EPSILON UNDERBARAPL FUNCTIONAL SYMBOL IOTA UNDERBARAPL FUNCTIONAL" + - " SYMBOL OMEGA UNDERBARAPL FUNCTIONAL SYMBOL ALPHANOT CHECK MARKRIGHT ANG" + - "LE WITH DOWNWARDS ZIGZAG ARROWSHOULDERED OPEN BOXBELL SYMBOLVERTICAL LIN" + - "E WITH MIDDLE DOTINSERTION SYMBOLCONTINUOUS UNDERLINE SYMBOLDISCONTINUOU" + - "S UNDERLINE SYMBOLEMPHASIS SYMBOLCOMPOSITION SYMBOLWHITE SQUARE WITH CEN" + - "TRE VERTICAL LINEENTER SYMBOLALTERNATIVE KEY SYMBOLHELM SYMBOLCIRCLED HO" + - "RIZONTAL BAR WITH NOTCHCIRCLED TRIANGLE DOWNBROKEN CIRCLE WITH NORTHWEST" + - " ARROWUNDO SYMBOLMONOSTABLE SYMBOLHYSTERESIS SYMBOLOPEN-CIRCUIT-OUTPUT H" + - "-TYPE SYMBOLOPEN-CIRCUIT-OUTPUT L-TYPE SYMBOLPASSIVE-PULL-DOWN-OUTPUT SY" + - "MBOLPASSIVE-PULL-UP-OUTPUT SYMBOLDIRECT CURRENT SYMBOL FORM TWOSOFTWARE-" + - "FUNCTION SYMBOLAPL FUNCTIONAL SYMBOL QUADDECIMAL SEPARATOR KEY SYMBOLPRE" + - "VIOUS PAGENEXT PAGEPRINT SCREEN SYMBOLCLEAR SCREEN SYMBOLLEFT PARENTHESI" + - "S UPPER HOOKLEFT PARENTHESIS EXTENSIONLEFT PARENTHESIS LOWER HOOKRIGHT P" + - "ARENTHESIS UPPER HOOKRIGHT PARENTHESIS EXTENSIONRIGHT PARENTHESIS LOWER " + - "HOOKLEFT SQUARE BRACKET UPPER CORNERLEFT SQUARE BRACKET EXTENSIONLEFT SQ" + - "UARE BRACKET LOWER CORNERRIGHT SQUARE BRACKET UPPER CORNERRIGHT SQUARE B" + - "RACKET EXTENSIONRIGHT SQUARE BRACKET LOWER CORNERLEFT CURLY BRACKET UPPE" + - "R HOOKLEFT CURLY BRACKET MIDDLE PIECELEFT CURLY BRACKET LOWER HOOKCURLY " + - "BRACKET EXTENSIONRIGHT CURLY BRACKET UPPER HOOKRIGHT CURLY BRACKET MIDDL" + - "E PIECERIGHT CURLY BRACKET LOWER HOOKINTEGRAL EXTENSIONHORIZONTAL LINE E" + - "XTENSIONUPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTIONUPPER RIGHT OR LO" + - "WER LEFT CURLY BRACKET SECTIONSUMMATION TOPSUMMATION BOTTOMTOP SQUARE BR" + - "ACKETBOTTOM SQUARE BRACKETBOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKETR" + - "ADICAL SYMBOL BOTTOMLEFT VERTICAL BOX LINERIGHT VERTICAL BOX LINEHORIZON" + - "TAL SCAN LINE-1HORIZONTAL SCAN LINE-3HORIZONTAL SCAN LINE-7HORIZONTAL SC" + - "AN LINE-9DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHTDENTISTRY SYMBOL L" + - "IGHT VERTICAL AND BOTTOM RIGHTDENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCL" + - "EDENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLEDENTISTRY SYMBOL " + - "LIGHT UP AND HORIZONTAL WITH CIRCLEDENTISTRY SYMBOL LIGHT VERTICAL WITH " + - "TRIANGLEDENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLEDENTISTR" + - "Y SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLEDENTISTRY SYMBOL LIGHT VER" + - "TICAL AND WAVEDENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVEDENTIS" + - "TRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVEDENTISTRY SYMBOL LIGHT DOWN " + - "AND HORIZONTALDENTISTRY SYMBOL LIGHT UP AND HORIZONTALDENTISTRY SYMBOL L" + - "IGHT VERTICAL AND TOP LEFTDENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEF" + - "TSQUARE FOOTRETURN SYMBOLEJECT SYMBOLVERTICAL LINE EXTENSIONMETRICAL BRE" + - "VEMETRICAL LONG OVER SHORTMETRICAL SHORT OVER LONGMETRICAL LONG OVER TWO" + - " SHORTSMETRICAL TWO SHORTS OVER LONGMETRICAL TWO SHORTS JOINEDMETRICAL T" + - "RISEMEMETRICAL TETRASEMEMETRICAL PENTASEMEEARTH GROUNDFUSETOP PARENTHESI" + - "SBOTTOM PARENTHESISTOP CURLY BRACKETBOTTOM CURLY BRACKETTOP TORTOISE SHE" + - "LL BRACKETBOTTOM TORTOISE SHELL BRACKETWHITE TRAPEZIUMBENZENE RING WITH " + - "CIRCLESTRAIGHTNESSFLATNESSAC CURRENTELECTRICAL INTERSECTIONDECIMAL EXPON" + - "ENT SYMBOLBLACK RIGHT-POINTING DOUBLE TRIANGLEBLACK LEFT-POINTING DOUBLE" + - " TRIANGLEBLACK UP-POINTING DOUBLE TRIANGLEBLACK DOWN-POINTING DOUBLE TRI" + - "ANGLEBLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BARBLACK LEFT-PO") + ("" + - "INTING DOUBLE TRIANGLE WITH VERTICAL BARBLACK RIGHT-POINTING TRIANGLE WI" + - "TH DOUBLE VERTICAL BARALARM CLOCKSTOPWATCHTIMER CLOCKHOURGLASS WITH FLOW" + - "ING SANDBLACK MEDIUM LEFT-POINTING TRIANGLEBLACK MEDIUM RIGHT-POINTING T" + - "RIANGLEBLACK MEDIUM UP-POINTING TRIANGLEBLACK MEDIUM DOWN-POINTING TRIAN" + - "GLEDOUBLE VERTICAL BARBLACK SQUARE FOR STOPBLACK CIRCLE FOR RECORDPOWER " + - "SYMBOLPOWER ON-OFF SYMBOLPOWER ON SYMBOLPOWER SLEEP SYMBOLSYMBOL FOR NUL" + - "LSYMBOL FOR START OF HEADINGSYMBOL FOR START OF TEXTSYMBOL FOR END OF TE" + - "XTSYMBOL FOR END OF TRANSMISSIONSYMBOL FOR ENQUIRYSYMBOL FOR ACKNOWLEDGE" + - "SYMBOL FOR BELLSYMBOL FOR BACKSPACESYMBOL FOR HORIZONTAL TABULATIONSYMBO" + - "L FOR LINE FEEDSYMBOL FOR VERTICAL TABULATIONSYMBOL FOR FORM FEEDSYMBOL " + - "FOR CARRIAGE RETURNSYMBOL FOR SHIFT OUTSYMBOL FOR SHIFT INSYMBOL FOR DAT" + - "A LINK ESCAPESYMBOL FOR DEVICE CONTROL ONESYMBOL FOR DEVICE CONTROL TWOS" + - "YMBOL FOR DEVICE CONTROL THREESYMBOL FOR DEVICE CONTROL FOURSYMBOL FOR N" + - "EGATIVE ACKNOWLEDGESYMBOL FOR SYNCHRONOUS IDLESYMBOL FOR END OF TRANSMIS" + - "SION BLOCKSYMBOL FOR CANCELSYMBOL FOR END OF MEDIUMSYMBOL FOR SUBSTITUTE" + - "SYMBOL FOR ESCAPESYMBOL FOR FILE SEPARATORSYMBOL FOR GROUP SEPARATORSYMB" + - "OL FOR RECORD SEPARATORSYMBOL FOR UNIT SEPARATORSYMBOL FOR SPACESYMBOL F" + - "OR DELETEBLANK SYMBOLOPEN BOXSYMBOL FOR NEWLINESYMBOL FOR DELETE FORM TW" + - "OSYMBOL FOR SUBSTITUTE FORM TWOOCR HOOKOCR CHAIROCR FORKOCR INVERTED FOR" + - "KOCR BELT BUCKLEOCR BOW TIEOCR BRANCH BANK IDENTIFICATIONOCR AMOUNT OF C" + - "HECKOCR DASHOCR CUSTOMER ACCOUNT NUMBEROCR DOUBLE BACKSLASHCIRCLED DIGIT" + - " ONECIRCLED DIGIT TWOCIRCLED DIGIT THREECIRCLED DIGIT FOURCIRCLED DIGIT " + - "FIVECIRCLED DIGIT SIXCIRCLED DIGIT SEVENCIRCLED DIGIT EIGHTCIRCLED DIGIT" + - " NINECIRCLED NUMBER TENCIRCLED NUMBER ELEVENCIRCLED NUMBER TWELVECIRCLED" + - " NUMBER THIRTEENCIRCLED NUMBER FOURTEENCIRCLED NUMBER FIFTEENCIRCLED NUM" + - "BER SIXTEENCIRCLED NUMBER SEVENTEENCIRCLED NUMBER EIGHTEENCIRCLED NUMBER" + - " NINETEENCIRCLED NUMBER TWENTYPARENTHESIZED DIGIT ONEPARENTHESIZED DIGIT" + - " TWOPARENTHESIZED DIGIT THREEPARENTHESIZED DIGIT FOURPARENTHESIZED DIGIT" + - " FIVEPARENTHESIZED DIGIT SIXPARENTHESIZED DIGIT SEVENPARENTHESIZED DIGIT" + - " EIGHTPARENTHESIZED DIGIT NINEPARENTHESIZED NUMBER TENPARENTHESIZED NUMB" + - "ER ELEVENPARENTHESIZED NUMBER TWELVEPARENTHESIZED NUMBER THIRTEENPARENTH" + - "ESIZED NUMBER FOURTEENPARENTHESIZED NUMBER FIFTEENPARENTHESIZED NUMBER S" + - "IXTEENPARENTHESIZED NUMBER SEVENTEENPARENTHESIZED NUMBER EIGHTEENPARENTH" + - "ESIZED NUMBER NINETEENPARENTHESIZED NUMBER TWENTYDIGIT ONE FULL STOPDIGI" + - "T TWO FULL STOPDIGIT THREE FULL STOPDIGIT FOUR FULL STOPDIGIT FIVE FULL " + - "STOPDIGIT SIX FULL STOPDIGIT SEVEN FULL STOPDIGIT EIGHT FULL STOPDIGIT N" + - "INE FULL STOPNUMBER TEN FULL STOPNUMBER ELEVEN FULL STOPNUMBER TWELVE FU" + - "LL STOPNUMBER THIRTEEN FULL STOPNUMBER FOURTEEN FULL STOPNUMBER FIFTEEN " + - "FULL STOPNUMBER SIXTEEN FULL STOPNUMBER SEVENTEEN FULL STOPNUMBER EIGHTE" + - "EN FULL STOPNUMBER NINETEEN FULL STOPNUMBER TWENTY FULL STOPPARENTHESIZE" + - "D LATIN SMALL LETTER APARENTHESIZED LATIN SMALL LETTER BPARENTHESIZED LA" + - "TIN SMALL LETTER CPARENTHESIZED LATIN SMALL LETTER DPARENTHESIZED LATIN " + - "SMALL LETTER EPARENTHESIZED LATIN SMALL LETTER FPARENTHESIZED LATIN SMAL" + - "L LETTER GPARENTHESIZED LATIN SMALL LETTER HPARENTHESIZED LATIN SMALL LE" + - "TTER IPARENTHESIZED LATIN SMALL LETTER JPARENTHESIZED LATIN SMALL LETTER" + - " KPARENTHESIZED LATIN SMALL LETTER LPARENTHESIZED LATIN SMALL LETTER MPA" + - "RENTHESIZED LATIN SMALL LETTER NPARENTHESIZED LATIN SMALL LETTER OPARENT" + - "HESIZED LATIN SMALL LETTER PPARENTHESIZED LATIN SMALL LETTER QPARENTHESI" + - "ZED LATIN SMALL LETTER RPARENTHESIZED LATIN SMALL LETTER SPARENTHESIZED " + - "LATIN SMALL LETTER TPARENTHESIZED LATIN SMALL LETTER UPARENTHESIZED LATI" + - "N SMALL LETTER VPARENTHESIZED LATIN SMALL LETTER WPARENTHESIZED LATIN SM" + - "ALL LETTER XPARENTHESIZED LATIN SMALL LETTER YPARENTHESIZED LATIN SMALL " + - "LETTER ZCIRCLED LATIN CAPITAL LETTER ACIRCLED LATIN CAPITAL LETTER BCIRC" + - "LED LATIN CAPITAL LETTER CCIRCLED LATIN CAPITAL LETTER DCIRCLED LATIN CA" + - "PITAL LETTER ECIRCLED LATIN CAPITAL LETTER FCIRCLED LATIN CAPITAL LETTER" + - " GCIRCLED LATIN CAPITAL LETTER HCIRCLED LATIN CAPITAL LETTER ICIRCLED LA" + - "TIN CAPITAL LETTER JCIRCLED LATIN CAPITAL LETTER KCIRCLED LATIN CAPITAL " + - "LETTER LCIRCLED LATIN CAPITAL LETTER MCIRCLED LATIN CAPITAL LETTER NCIRC" + - "LED LATIN CAPITAL LETTER OCIRCLED LATIN CAPITAL LETTER PCIRCLED LATIN CA" + - "PITAL LETTER QCIRCLED LATIN CAPITAL LETTER RCIRCLED LATIN CAPITAL LETTER" + - " SCIRCLED LATIN CAPITAL LETTER TCIRCLED LATIN CAPITAL LETTER UCIRCLED LA" + - "TIN CAPITAL LETTER VCIRCLED LATIN CAPITAL LETTER WCIRCLED LATIN CAPITAL " + - "LETTER XCIRCLED LATIN CAPITAL LETTER YCIRCLED LATIN CAPITAL LETTER ZCIRC" + - "LED LATIN SMALL LETTER ACIRCLED LATIN SMALL LETTER BCIRCLED LATIN SMALL ") + ("" + - "LETTER CCIRCLED LATIN SMALL LETTER DCIRCLED LATIN SMALL LETTER ECIRCLED " + - "LATIN SMALL LETTER FCIRCLED LATIN SMALL LETTER GCIRCLED LATIN SMALL LETT" + - "ER HCIRCLED LATIN SMALL LETTER ICIRCLED LATIN SMALL LETTER JCIRCLED LATI" + - "N SMALL LETTER KCIRCLED LATIN SMALL LETTER LCIRCLED LATIN SMALL LETTER M" + - "CIRCLED LATIN SMALL LETTER NCIRCLED LATIN SMALL LETTER OCIRCLED LATIN SM" + - "ALL LETTER PCIRCLED LATIN SMALL LETTER QCIRCLED LATIN SMALL LETTER RCIRC" + - "LED LATIN SMALL LETTER SCIRCLED LATIN SMALL LETTER TCIRCLED LATIN SMALL " + - "LETTER UCIRCLED LATIN SMALL LETTER VCIRCLED LATIN SMALL LETTER WCIRCLED " + - "LATIN SMALL LETTER XCIRCLED LATIN SMALL LETTER YCIRCLED LATIN SMALL LETT" + - "ER ZCIRCLED DIGIT ZERONEGATIVE CIRCLED NUMBER ELEVENNEGATIVE CIRCLED NUM" + - "BER TWELVENEGATIVE CIRCLED NUMBER THIRTEENNEGATIVE CIRCLED NUMBER FOURTE" + - "ENNEGATIVE CIRCLED NUMBER FIFTEENNEGATIVE CIRCLED NUMBER SIXTEENNEGATIVE" + - " CIRCLED NUMBER SEVENTEENNEGATIVE CIRCLED NUMBER EIGHTEENNEGATIVE CIRCLE" + - "D NUMBER NINETEENNEGATIVE CIRCLED NUMBER TWENTYDOUBLE CIRCLED DIGIT ONED" + - "OUBLE CIRCLED DIGIT TWODOUBLE CIRCLED DIGIT THREEDOUBLE CIRCLED DIGIT FO" + - "URDOUBLE CIRCLED DIGIT FIVEDOUBLE CIRCLED DIGIT SIXDOUBLE CIRCLED DIGIT " + - "SEVENDOUBLE CIRCLED DIGIT EIGHTDOUBLE CIRCLED DIGIT NINEDOUBLE CIRCLED N" + - "UMBER TENNEGATIVE CIRCLED DIGIT ZEROBOX DRAWINGS LIGHT HORIZONTALBOX DRA" + - "WINGS HEAVY HORIZONTALBOX DRAWINGS LIGHT VERTICALBOX DRAWINGS HEAVY VERT" + - "ICALBOX DRAWINGS LIGHT TRIPLE DASH HORIZONTALBOX DRAWINGS HEAVY TRIPLE D" + - "ASH HORIZONTALBOX DRAWINGS LIGHT TRIPLE DASH VERTICALBOX DRAWINGS HEAVY " + - "TRIPLE DASH VERTICALBOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTALBOX DRAW" + - "INGS HEAVY QUADRUPLE DASH HORIZONTALBOX DRAWINGS LIGHT QUADRUPLE DASH VE" + - "RTICALBOX DRAWINGS HEAVY QUADRUPLE DASH VERTICALBOX DRAWINGS LIGHT DOWN " + - "AND RIGHTBOX DRAWINGS DOWN LIGHT AND RIGHT HEAVYBOX DRAWINGS DOWN HEAVY " + - "AND RIGHT LIGHTBOX DRAWINGS HEAVY DOWN AND RIGHTBOX DRAWINGS LIGHT DOWN " + - "AND LEFTBOX DRAWINGS DOWN LIGHT AND LEFT HEAVYBOX DRAWINGS DOWN HEAVY AN" + - "D LEFT LIGHTBOX DRAWINGS HEAVY DOWN AND LEFTBOX DRAWINGS LIGHT UP AND RI" + - "GHTBOX DRAWINGS UP LIGHT AND RIGHT HEAVYBOX DRAWINGS UP HEAVY AND RIGHT " + - "LIGHTBOX DRAWINGS HEAVY UP AND RIGHTBOX DRAWINGS LIGHT UP AND LEFTBOX DR" + - "AWINGS UP LIGHT AND LEFT HEAVYBOX DRAWINGS UP HEAVY AND LEFT LIGHTBOX DR" + - "AWINGS HEAVY UP AND LEFTBOX DRAWINGS LIGHT VERTICAL AND RIGHTBOX DRAWING" + - "S VERTICAL LIGHT AND RIGHT HEAVYBOX DRAWINGS UP HEAVY AND RIGHT DOWN LIG" + - "HTBOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHTBOX DRAWINGS VERTICAL HEAVY " + - "AND RIGHT LIGHTBOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVYBOX DRAWINGS UP" + - " LIGHT AND RIGHT DOWN HEAVYBOX DRAWINGS HEAVY VERTICAL AND RIGHTBOX DRAW" + - "INGS LIGHT VERTICAL AND LEFTBOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVYBO" + - "X DRAWINGS UP HEAVY AND LEFT DOWN LIGHTBOX DRAWINGS DOWN HEAVY AND LEFT " + - "UP LIGHTBOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHTBOX DRAWINGS DOWN LIGH" + - "T AND LEFT UP HEAVYBOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVYBOX DRAWINGS" + - " HEAVY VERTICAL AND LEFTBOX DRAWINGS LIGHT DOWN AND HORIZONTALBOX DRAWIN" + - "GS LEFT HEAVY AND RIGHT DOWN LIGHTBOX DRAWINGS RIGHT HEAVY AND LEFT DOWN" + - " LIGHTBOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVYBOX DRAWINGS DOWN HEAV" + - "Y AND HORIZONTAL LIGHTBOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVYBOX DR" + - "AWINGS LEFT LIGHT AND RIGHT DOWN HEAVYBOX DRAWINGS HEAVY DOWN AND HORIZO" + - "NTALBOX DRAWINGS LIGHT UP AND HORIZONTALBOX DRAWINGS LEFT HEAVY AND RIGH" + - "T UP LIGHTBOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHTBOX DRAWINGS UP LIGH" + - "T AND HORIZONTAL HEAVYBOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHTBOX DRAW" + - "INGS RIGHT LIGHT AND LEFT UP HEAVYBOX DRAWINGS LEFT LIGHT AND RIGHT UP H" + - "EAVYBOX DRAWINGS HEAVY UP AND HORIZONTALBOX DRAWINGS LIGHT VERTICAL AND " + - "HORIZONTALBOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHTBOX DRAWINGS R" + - "IGHT HEAVY AND LEFT VERTICAL LIGHTBOX DRAWINGS VERTICAL LIGHT AND HORIZO" + - "NTAL HEAVYBOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHTBOX DRAWINGS DO" + - "WN HEAVY AND UP HORIZONTAL LIGHTBOX DRAWINGS VERTICAL HEAVY AND HORIZONT" + - "AL LIGHTBOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHTBOX DRAWINGS RIGH" + - "T UP HEAVY AND LEFT DOWN LIGHTBOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP " + - "LIGHTBOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHTBOX DRAWINGS DOWN LI" + - "GHT AND UP HORIZONTAL HEAVYBOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEA" + - "VYBOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVYBOX DRAWINGS LEFT LIGH" + - "T AND RIGHT VERTICAL HEAVYBOX DRAWINGS HEAVY VERTICAL AND HORIZONTALBOX " + - "DRAWINGS LIGHT DOUBLE DASH HORIZONTALBOX DRAWINGS HEAVY DOUBLE DASH HORI" + - "ZONTALBOX DRAWINGS LIGHT DOUBLE DASH VERTICALBOX DRAWINGS HEAVY DOUBLE D" + - "ASH VERTICALBOX DRAWINGS DOUBLE HORIZONTALBOX DRAWINGS DOUBLE VERTICALBO" + - "X DRAWINGS DOWN SINGLE AND RIGHT DOUBLEBOX DRAWINGS DOWN DOUBLE AND RIGH") + ("" + - "T SINGLEBOX DRAWINGS DOUBLE DOWN AND RIGHTBOX DRAWINGS DOWN SINGLE AND L" + - "EFT DOUBLEBOX DRAWINGS DOWN DOUBLE AND LEFT SINGLEBOX DRAWINGS DOUBLE DO" + - "WN AND LEFTBOX DRAWINGS UP SINGLE AND RIGHT DOUBLEBOX DRAWINGS UP DOUBLE" + - " AND RIGHT SINGLEBOX DRAWINGS DOUBLE UP AND RIGHTBOX DRAWINGS UP SINGLE " + - "AND LEFT DOUBLEBOX DRAWINGS UP DOUBLE AND LEFT SINGLEBOX DRAWINGS DOUBLE" + - " UP AND LEFTBOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLEBOX DRAWINGS VE" + - "RTICAL DOUBLE AND RIGHT SINGLEBOX DRAWINGS DOUBLE VERTICAL AND RIGHTBOX " + - "DRAWINGS VERTICAL SINGLE AND LEFT DOUBLEBOX DRAWINGS VERTICAL DOUBLE AND" + - " LEFT SINGLEBOX DRAWINGS DOUBLE VERTICAL AND LEFTBOX DRAWINGS DOWN SINGL" + - "E AND HORIZONTAL DOUBLEBOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLEBOX" + - " DRAWINGS DOUBLE DOWN AND HORIZONTALBOX DRAWINGS UP SINGLE AND HORIZONTA" + - "L DOUBLEBOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLEBOX DRAWINGS DOUBLE " + - "UP AND HORIZONTALBOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLEBOX D" + - "RAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLEBOX DRAWINGS DOUBLE VERTICA" + - "L AND HORIZONTALBOX DRAWINGS LIGHT ARC DOWN AND RIGHTBOX DRAWINGS LIGHT " + - "ARC DOWN AND LEFTBOX DRAWINGS LIGHT ARC UP AND LEFTBOX DRAWINGS LIGHT AR" + - "C UP AND RIGHTBOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFTBOX D" + - "RAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHTBOX DRAWINGS LIGHT DIAGO" + - "NAL CROSSBOX DRAWINGS LIGHT LEFTBOX DRAWINGS LIGHT UPBOX DRAWINGS LIGHT " + - "RIGHTBOX DRAWINGS LIGHT DOWNBOX DRAWINGS HEAVY LEFTBOX DRAWINGS HEAVY UP" + - "BOX DRAWINGS HEAVY RIGHTBOX DRAWINGS HEAVY DOWNBOX DRAWINGS LIGHT LEFT A" + - "ND HEAVY RIGHTBOX DRAWINGS LIGHT UP AND HEAVY DOWNBOX DRAWINGS HEAVY LEF" + - "T AND LIGHT RIGHTBOX DRAWINGS HEAVY UP AND LIGHT DOWNUPPER HALF BLOCKLOW" + - "ER ONE EIGHTH BLOCKLOWER ONE QUARTER BLOCKLOWER THREE EIGHTHS BLOCKLOWER" + - " HALF BLOCKLOWER FIVE EIGHTHS BLOCKLOWER THREE QUARTERS BLOCKLOWER SEVEN" + - " EIGHTHS BLOCKFULL BLOCKLEFT SEVEN EIGHTHS BLOCKLEFT THREE QUARTERS BLOC" + - "KLEFT FIVE EIGHTHS BLOCKLEFT HALF BLOCKLEFT THREE EIGHTHS BLOCKLEFT ONE " + - "QUARTER BLOCKLEFT ONE EIGHTH BLOCKRIGHT HALF BLOCKLIGHT SHADEMEDIUM SHAD" + - "EDARK SHADEUPPER ONE EIGHTH BLOCKRIGHT ONE EIGHTH BLOCKQUADRANT LOWER LE" + - "FTQUADRANT LOWER RIGHTQUADRANT UPPER LEFTQUADRANT UPPER LEFT AND LOWER L" + - "EFT AND LOWER RIGHTQUADRANT UPPER LEFT AND LOWER RIGHTQUADRANT UPPER LEF" + - "T AND UPPER RIGHT AND LOWER LEFTQUADRANT UPPER LEFT AND UPPER RIGHT AND " + - "LOWER RIGHTQUADRANT UPPER RIGHTQUADRANT UPPER RIGHT AND LOWER LEFTQUADRA" + - "NT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHTBLACK SQUAREWHITE SQUAREWHI" + - "TE SQUARE WITH ROUNDED CORNERSWHITE SQUARE CONTAINING BLACK SMALL SQUARE" + - "SQUARE WITH HORIZONTAL FILLSQUARE WITH VERTICAL FILLSQUARE WITH ORTHOGON" + - "AL CROSSHATCH FILLSQUARE WITH UPPER LEFT TO LOWER RIGHT FILLSQUARE WITH " + - "UPPER RIGHT TO LOWER LEFT FILLSQUARE WITH DIAGONAL CROSSHATCH FILLBLACK " + - "SMALL SQUAREWHITE SMALL SQUAREBLACK RECTANGLEWHITE RECTANGLEBLACK VERTIC" + - "AL RECTANGLEWHITE VERTICAL RECTANGLEBLACK PARALLELOGRAMWHITE PARALLELOGR" + - "AMBLACK UP-POINTING TRIANGLEWHITE UP-POINTING TRIANGLEBLACK UP-POINTING " + - "SMALL TRIANGLEWHITE UP-POINTING SMALL TRIANGLEBLACK RIGHT-POINTING TRIAN" + - "GLEWHITE RIGHT-POINTING TRIANGLEBLACK RIGHT-POINTING SMALL TRIANGLEWHITE" + - " RIGHT-POINTING SMALL TRIANGLEBLACK RIGHT-POINTING POINTERWHITE RIGHT-PO" + - "INTING POINTERBLACK DOWN-POINTING TRIANGLEWHITE DOWN-POINTING TRIANGLEBL" + - "ACK DOWN-POINTING SMALL TRIANGLEWHITE DOWN-POINTING SMALL TRIANGLEBLACK " + - "LEFT-POINTING TRIANGLEWHITE LEFT-POINTING TRIANGLEBLACK LEFT-POINTING SM" + - "ALL TRIANGLEWHITE LEFT-POINTING SMALL TRIANGLEBLACK LEFT-POINTING POINTE" + - "RWHITE LEFT-POINTING POINTERBLACK DIAMONDWHITE DIAMONDWHITE DIAMOND CONT" + - "AINING BLACK SMALL DIAMONDFISHEYELOZENGEWHITE CIRCLEDOTTED CIRCLECIRCLE " + - "WITH VERTICAL FILLBULLSEYEBLACK CIRCLECIRCLE WITH LEFT HALF BLACKCIRCLE " + - "WITH RIGHT HALF BLACKCIRCLE WITH LOWER HALF BLACKCIRCLE WITH UPPER HALF " + - "BLACKCIRCLE WITH UPPER RIGHT QUADRANT BLACKCIRCLE WITH ALL BUT UPPER LEF" + - "T QUADRANT BLACKLEFT HALF BLACK CIRCLERIGHT HALF BLACK CIRCLEINVERSE BUL" + - "LETINVERSE WHITE CIRCLEUPPER HALF INVERSE WHITE CIRCLELOWER HALF INVERSE" + - " WHITE CIRCLEUPPER LEFT QUADRANT CIRCULAR ARCUPPER RIGHT QUADRANT CIRCUL" + - "AR ARCLOWER RIGHT QUADRANT CIRCULAR ARCLOWER LEFT QUADRANT CIRCULAR ARCU" + - "PPER HALF CIRCLELOWER HALF CIRCLEBLACK LOWER RIGHT TRIANGLEBLACK LOWER L" + - "EFT TRIANGLEBLACK UPPER LEFT TRIANGLEBLACK UPPER RIGHT TRIANGLEWHITE BUL" + - "LETSQUARE WITH LEFT HALF BLACKSQUARE WITH RIGHT HALF BLACKSQUARE WITH UP" + - "PER LEFT DIAGONAL HALF BLACKSQUARE WITH LOWER RIGHT DIAGONAL HALF BLACKW" + - "HITE SQUARE WITH VERTICAL BISECTING LINEWHITE UP-POINTING TRIANGLE WITH " + - "DOTUP-POINTING TRIANGLE WITH LEFT HALF BLACKUP-POINTING TRIANGLE WITH RI" + - "GHT HALF BLACKLARGE CIRCLEWHITE SQUARE WITH UPPER LEFT QUADRANTWHITE SQU") + ("" + - "ARE WITH LOWER LEFT QUADRANTWHITE SQUARE WITH LOWER RIGHT QUADRANTWHITE " + - "SQUARE WITH UPPER RIGHT QUADRANTWHITE CIRCLE WITH UPPER LEFT QUADRANTWHI" + - "TE CIRCLE WITH LOWER LEFT QUADRANTWHITE CIRCLE WITH LOWER RIGHT QUADRANT" + - "WHITE CIRCLE WITH UPPER RIGHT QUADRANTUPPER LEFT TRIANGLEUPPER RIGHT TRI" + - "ANGLELOWER LEFT TRIANGLEWHITE MEDIUM SQUAREBLACK MEDIUM SQUAREWHITE MEDI" + - "UM SMALL SQUAREBLACK MEDIUM SMALL SQUARELOWER RIGHT TRIANGLEBLACK SUN WI" + - "TH RAYSCLOUDUMBRELLASNOWMANCOMETBLACK STARWHITE STARLIGHTNINGTHUNDERSTOR" + - "MSUNASCENDING NODEDESCENDING NODECONJUNCTIONOPPOSITIONBLACK TELEPHONEWHI" + - "TE TELEPHONEBALLOT BOXBALLOT BOX WITH CHECKBALLOT BOX WITH XSALTIREUMBRE" + - "LLA WITH RAIN DROPSHOT BEVERAGEWHITE SHOGI PIECEBLACK SHOGI PIECESHAMROC" + - "KREVERSED ROTATED FLORAL HEART BULLETBLACK LEFT POINTING INDEXBLACK RIGH" + - "T POINTING INDEXWHITE LEFT POINTING INDEXWHITE UP POINTING INDEXWHITE RI" + - "GHT POINTING INDEXWHITE DOWN POINTING INDEXSKULL AND CROSSBONESCAUTION S" + - "IGNRADIOACTIVE SIGNBIOHAZARD SIGNCADUCEUSANKHORTHODOX CROSSCHI RHOCROSS " + - "OF LORRAINECROSS OF JERUSALEMSTAR AND CRESCENTFARSI SYMBOLADI SHAKTIHAMM" + - "ER AND SICKLEPEACE SYMBOLYIN YANGTRIGRAM FOR HEAVENTRIGRAM FOR LAKETRIGR" + - "AM FOR FIRETRIGRAM FOR THUNDERTRIGRAM FOR WINDTRIGRAM FOR WATERTRIGRAM F" + - "OR MOUNTAINTRIGRAM FOR EARTHWHEEL OF DHARMAWHITE FROWNING FACEWHITE SMIL" + - "ING FACEBLACK SMILING FACEWHITE SUN WITH RAYSFIRST QUARTER MOONLAST QUAR" + - "TER MOONMERCURYFEMALE SIGNEARTHMALE SIGNJUPITERSATURNURANUSNEPTUNEPLUTOA" + - "RIESTAURUSGEMINICANCERLEOVIRGOLIBRASCORPIUSSAGITTARIUSCAPRICORNAQUARIUSP" + - "ISCESWHITE CHESS KINGWHITE CHESS QUEENWHITE CHESS ROOKWHITE CHESS BISHOP" + - "WHITE CHESS KNIGHTWHITE CHESS PAWNBLACK CHESS KINGBLACK CHESS QUEENBLACK" + - " CHESS ROOKBLACK CHESS BISHOPBLACK CHESS KNIGHTBLACK CHESS PAWNBLACK SPA" + - "DE SUITWHITE HEART SUITWHITE DIAMOND SUITBLACK CLUB SUITWHITE SPADE SUIT" + - "BLACK HEART SUITBLACK DIAMOND SUITWHITE CLUB SUITHOT SPRINGSQUARTER NOTE" + - "EIGHTH NOTEBEAMED EIGHTH NOTESBEAMED SIXTEENTH NOTESMUSIC FLAT SIGNMUSIC" + - " NATURAL SIGNMUSIC SHARP SIGNWEST SYRIAC CROSSEAST SYRIAC CROSSUNIVERSAL" + - " RECYCLING SYMBOLRECYCLING SYMBOL FOR TYPE-1 PLASTICSRECYCLING SYMBOL FO" + - "R TYPE-2 PLASTICSRECYCLING SYMBOL FOR TYPE-3 PLASTICSRECYCLING SYMBOL FO" + - "R TYPE-4 PLASTICSRECYCLING SYMBOL FOR TYPE-5 PLASTICSRECYCLING SYMBOL FO" + - "R TYPE-6 PLASTICSRECYCLING SYMBOL FOR TYPE-7 PLASTICSRECYCLING SYMBOL FO" + - "R GENERIC MATERIALSBLACK UNIVERSAL RECYCLING SYMBOLRECYCLED PAPER SYMBOL" + - "PARTIALLY-RECYCLED PAPER SYMBOLPERMANENT PAPER SIGNWHEELCHAIR SYMBOLDIE " + - "FACE-1DIE FACE-2DIE FACE-3DIE FACE-4DIE FACE-5DIE FACE-6WHITE CIRCLE WIT" + - "H DOT RIGHTWHITE CIRCLE WITH TWO DOTSBLACK CIRCLE WITH WHITE DOT RIGHTBL" + - "ACK CIRCLE WITH TWO WHITE DOTSMONOGRAM FOR YANGMONOGRAM FOR YINDIGRAM FO" + - "R GREATER YANGDIGRAM FOR LESSER YINDIGRAM FOR LESSER YANGDIGRAM FOR GREA" + - "TER YINWHITE FLAGBLACK FLAGHAMMER AND PICKANCHORCROSSED SWORDSSTAFF OF A" + - "ESCULAPIUSSCALESALEMBICFLOWERGEARSTAFF OF HERMESATOM SYMBOLFLEUR-DE-LISO" + - "UTLINED WHITE STARTHREE LINES CONVERGING RIGHTTHREE LINES CONVERGING LEF" + - "TWARNING SIGNHIGH VOLTAGE SIGNDOUBLED FEMALE SIGNDOUBLED MALE SIGNINTERL" + - "OCKED FEMALE AND MALE SIGNMALE AND FEMALE SIGNMALE WITH STROKE SIGNMALE " + - "WITH STROKE AND MALE AND FEMALE SIGNVERTICAL MALE WITH STROKE SIGNHORIZO" + - "NTAL MALE WITH STROKE SIGNMEDIUM WHITE CIRCLEMEDIUM BLACK CIRCLEMEDIUM S" + - "MALL WHITE CIRCLEMARRIAGE SYMBOLDIVORCE SYMBOLUNMARRIED PARTNERSHIP SYMB" + - "OLCOFFINFUNERAL URNNEUTERCERESPALLASJUNOVESTACHIRONBLACK MOON LILITHSEXT" + - "ILESEMISEXTILEQUINCUNXSESQUIQUADRATESOCCER BALLBASEBALLSQUARED KEYWHITE " + - "DRAUGHTS MANWHITE DRAUGHTS KINGBLACK DRAUGHTS MANBLACK DRAUGHTS KINGSNOW" + - "MAN WITHOUT SNOWSUN BEHIND CLOUDRAINBLACK SNOWMANTHUNDER CLOUD AND RAINT" + - "URNED WHITE SHOGI PIECETURNED BLACK SHOGI PIECEWHITE DIAMOND IN SQUARECR" + - "OSSING LANESDISABLED CAROPHIUCHUSPICKCAR SLIDINGHELMET WITH WHITE CROSSC" + - "IRCLED CROSSING LANESCHAINSNO ENTRYALTERNATE ONE-WAY LEFT WAY TRAFFICBLA" + - "CK TWO-WAY LEFT WAY TRAFFICWHITE TWO-WAY LEFT WAY TRAFFICBLACK LEFT LANE" + - " MERGEWHITE LEFT LANE MERGEDRIVE SLOW SIGNHEAVY WHITE DOWN-POINTING TRIA" + - "NGLELEFT CLOSED ENTRYSQUARED SALTIREFALLING DIAGONAL IN WHITE CIRCLE IN " + - "BLACK SQUAREBLACK TRUCKRESTRICTED LEFT ENTRY-1RESTRICTED LEFT ENTRY-2AST" + - "RONOMICAL SYMBOL FOR URANUSHEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVEPE" + - "NTAGRAMRIGHT-HANDED INTERLACED PENTAGRAMLEFT-HANDED INTERLACED PENTAGRAM" + - "INVERTED PENTAGRAMBLACK CROSS ON SHIELDSHINTO SHRINECHURCHCASTLEHISTORIC" + - " SITEGEAR WITHOUT HUBGEAR WITH HANDLESMAP SYMBOL FOR LIGHTHOUSEMOUNTAINU" + - "MBRELLA ON GROUNDFOUNTAINFLAG IN HOLEFERRYSAILBOATSQUARE FOUR CORNERSSKI" + - "ERICE SKATEPERSON WITH BALLTENTJAPANESE BANK SYMBOLHEADSTONE GRAVEYARD S" + - "YMBOLFUEL PUMPCUP ON BLACK SQUAREWHITE FLAG WITH HORIZONTAL MIDDLE BLACK") + ("" + - " STRIPEBLACK SAFETY SCISSORSUPPER BLADE SCISSORSBLACK SCISSORSLOWER BLAD" + - "E SCISSORSWHITE SCISSORSWHITE HEAVY CHECK MARKTELEPHONE LOCATION SIGNTAP" + - "E DRIVEAIRPLANEENVELOPERAISED FISTRAISED HANDVICTORY HANDWRITING HANDLOW" + - "ER RIGHT PENCILPENCILUPPER RIGHT PENCILWHITE NIBBLACK NIBCHECK MARKHEAVY" + - " CHECK MARKMULTIPLICATION XHEAVY MULTIPLICATION XBALLOT XHEAVY BALLOT XO" + - "UTLINED GREEK CROSSHEAVY GREEK CROSSOPEN CENTRE CROSSHEAVY OPEN CENTRE C" + - "ROSSLATIN CROSSSHADOWED WHITE LATIN CROSSOUTLINED LATIN CROSSMALTESE CRO" + - "SSSTAR OF DAVIDFOUR TEARDROP-SPOKED ASTERISKFOUR BALLOON-SPOKED ASTERISK" + - "HEAVY FOUR BALLOON-SPOKED ASTERISKFOUR CLUB-SPOKED ASTERISKBLACK FOUR PO" + - "INTED STARWHITE FOUR POINTED STARSPARKLESSTRESS OUTLINED WHITE STARCIRCL" + - "ED WHITE STAROPEN CENTRE BLACK STARBLACK CENTRE WHITE STAROUTLINED BLACK" + - " STARHEAVY OUTLINED BLACK STARPINWHEEL STARSHADOWED WHITE STARHEAVY ASTE" + - "RISKOPEN CENTRE ASTERISKEIGHT SPOKED ASTERISKEIGHT POINTED BLACK STAREIG" + - "HT POINTED PINWHEEL STARSIX POINTED BLACK STAREIGHT POINTED RECTILINEAR " + - "BLACK STARHEAVY EIGHT POINTED RECTILINEAR BLACK STARTWELVE POINTED BLACK" + - " STARSIXTEEN POINTED ASTERISKTEARDROP-SPOKED ASTERISKOPEN CENTRE TEARDRO" + - "P-SPOKED ASTERISKHEAVY TEARDROP-SPOKED ASTERISKSIX PETALLED BLACK AND WH" + - "ITE FLORETTEBLACK FLORETTEWHITE FLORETTEEIGHT PETALLED OUTLINED BLACK FL" + - "ORETTECIRCLED OPEN CENTRE EIGHT POINTED STARHEAVY TEARDROP-SPOKED PINWHE" + - "EL ASTERISKSNOWFLAKETIGHT TRIFOLIATE SNOWFLAKEHEAVY CHEVRON SNOWFLAKESPA" + - "RKLEHEAVY SPARKLEBALLOON-SPOKED ASTERISKEIGHT TEARDROP-SPOKED PROPELLER " + - "ASTERISKHEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISKCROSS MARKSHADOWED" + - " WHITE CIRCLENEGATIVE SQUARED CROSS MARKLOWER RIGHT DROP-SHADOWED WHITE " + - "SQUAREUPPER RIGHT DROP-SHADOWED WHITE SQUARELOWER RIGHT SHADOWED WHITE S" + - "QUAREUPPER RIGHT SHADOWED WHITE SQUAREBLACK QUESTION MARK ORNAMENTWHITE " + - "QUESTION MARK ORNAMENTWHITE EXCLAMATION MARK ORNAMENTBLACK DIAMOND MINUS" + - " WHITE XHEAVY EXCLAMATION MARK SYMBOLLIGHT VERTICAL BARMEDIUM VERTICAL B" + - "ARHEAVY VERTICAL BARHEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENTHEA" + - "VY SINGLE COMMA QUOTATION MARK ORNAMENTHEAVY DOUBLE TURNED COMMA QUOTATI" + - "ON MARK ORNAMENTHEAVY DOUBLE COMMA QUOTATION MARK ORNAMENTHEAVY LOW SING" + - "LE COMMA QUOTATION MARK ORNAMENTHEAVY LOW DOUBLE COMMA QUOTATION MARK OR" + - "NAMENTCURVED STEM PARAGRAPH SIGN ORNAMENTHEAVY EXCLAMATION MARK ORNAMENT" + - "HEAVY HEART EXCLAMATION MARK ORNAMENTHEAVY BLACK HEARTROTATED HEAVY BLAC" + - "K HEART BULLETFLORAL HEARTROTATED FLORAL HEART BULLETMEDIUM LEFT PARENTH" + - "ESIS ORNAMENTMEDIUM RIGHT PARENTHESIS ORNAMENTMEDIUM FLATTENED LEFT PARE" + - "NTHESIS ORNAMENTMEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENTMEDIUM LEFT-P" + - "OINTING ANGLE BRACKET ORNAMENTMEDIUM RIGHT-POINTING ANGLE BRACKET ORNAME" + - "NTHEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENTHEAVY RIGHT-POINTING " + - "ANGLE QUOTATION MARK ORNAMENTHEAVY LEFT-POINTING ANGLE BRACKET ORNAMENTH" + - "EAVY RIGHT-POINTING ANGLE BRACKET ORNAMENTLIGHT LEFT TORTOISE SHELL BRAC" + - "KET ORNAMENTLIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENTMEDIUM LEFT CURLY" + - " BRACKET ORNAMENTMEDIUM RIGHT CURLY BRACKET ORNAMENTDINGBAT NEGATIVE CIR" + - "CLED DIGIT ONEDINGBAT NEGATIVE CIRCLED DIGIT TWODINGBAT NEGATIVE CIRCLED" + - " DIGIT THREEDINGBAT NEGATIVE CIRCLED DIGIT FOURDINGBAT NEGATIVE CIRCLED " + - "DIGIT FIVEDINGBAT NEGATIVE CIRCLED DIGIT SIXDINGBAT NEGATIVE CIRCLED DIG" + - "IT SEVENDINGBAT NEGATIVE CIRCLED DIGIT EIGHTDINGBAT NEGATIVE CIRCLED DIG" + - "IT NINEDINGBAT NEGATIVE CIRCLED NUMBER TENDINGBAT CIRCLED SANS-SERIF DIG" + - "IT ONEDINGBAT CIRCLED SANS-SERIF DIGIT TWODINGBAT CIRCLED SANS-SERIF DIG" + - "IT THREEDINGBAT CIRCLED SANS-SERIF DIGIT FOURDINGBAT CIRCLED SANS-SERIF " + - "DIGIT FIVEDINGBAT CIRCLED SANS-SERIF DIGIT SIXDINGBAT CIRCLED SANS-SERIF" + - " DIGIT SEVENDINGBAT CIRCLED SANS-SERIF DIGIT EIGHTDINGBAT CIRCLED SANS-S" + - "ERIF DIGIT NINEDINGBAT CIRCLED SANS-SERIF NUMBER TENDINGBAT NEGATIVE CIR" + - "CLED SANS-SERIF DIGIT ONEDINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWODI" + - "NGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREEDINGBAT NEGATIVE CIRCLED SA" + - "NS-SERIF DIGIT FOURDINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVEDINGBAT" + - " NEGATIVE CIRCLED SANS-SERIF DIGIT SIXDINGBAT NEGATIVE CIRCLED SANS-SERI" + - "F DIGIT SEVENDINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHTDINGBAT NEGA" + - "TIVE CIRCLED SANS-SERIF DIGIT NINEDINGBAT NEGATIVE CIRCLED SANS-SERIF NU" + - "MBER TENHEAVY WIDE-HEADED RIGHTWARDS ARROWHEAVY PLUS SIGNHEAVY MINUS SIG" + - "NHEAVY DIVISION SIGNHEAVY SOUTH EAST ARROWHEAVY RIGHTWARDS ARROWHEAVY NO" + - "RTH EAST ARROWDRAFTING POINT RIGHTWARDS ARROWHEAVY ROUND-TIPPED RIGHTWAR" + - "DS ARROWTRIANGLE-HEADED RIGHTWARDS ARROWHEAVY TRIANGLE-HEADED RIGHTWARDS" + - " ARROWDASHED TRIANGLE-HEADED RIGHTWARDS ARROWHEAVY DASHED TRIANGLE-HEADE" + - "D RIGHTWARDS ARROWBLACK RIGHTWARDS ARROWTHREE-D TOP-LIGHTED RIGHTWARDS A") + ("" + - "RROWHEADTHREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEADBLACK RIGHTWARDS ARRO" + - "WHEADHEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROWHEAVY BLACK CURVED" + - " UPWARDS AND RIGHTWARDS ARROWSQUAT BLACK RIGHTWARDS ARROWHEAVY CONCAVE-P" + - "OINTED BLACK RIGHTWARDS ARROWRIGHT-SHADED WHITE RIGHTWARDS ARROWLEFT-SHA" + - "DED WHITE RIGHTWARDS ARROWBACK-TILTED SHADOWED WHITE RIGHTWARDS ARROWFRO" + - "NT-TILTED SHADOWED WHITE RIGHTWARDS ARROWHEAVY LOWER RIGHT-SHADOWED WHIT" + - "E RIGHTWARDS ARROWHEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROWNOTCH" + - "ED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROWCURLY LOOPNOTCHED UPPER RI" + - "GHT-SHADOWED WHITE RIGHTWARDS ARROWCIRCLED HEAVY WHITE RIGHTWARDS ARROWW" + - "HITE-FEATHERED RIGHTWARDS ARROWBLACK-FEATHERED SOUTH EAST ARROWBLACK-FEA" + - "THERED RIGHTWARDS ARROWBLACK-FEATHERED NORTH EAST ARROWHEAVY BLACK-FEATH" + - "ERED SOUTH EAST ARROWHEAVY BLACK-FEATHERED RIGHTWARDS ARROWHEAVY BLACK-F" + - "EATHERED NORTH EAST ARROWTEARDROP-BARBED RIGHTWARDS ARROWHEAVY TEARDROP-" + - "SHANKED RIGHTWARDS ARROWWEDGE-TAILED RIGHTWARDS ARROWHEAVY WEDGE-TAILED " + - "RIGHTWARDS ARROWOPEN-OUTLINED RIGHTWARDS ARROWDOUBLE CURLY LOOPTHREE DIM" + - "ENSIONAL ANGLEWHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLEPERPENDICULA" + - "ROPEN SUBSETOPEN SUPERSETLEFT S-SHAPED BAG DELIMITERRIGHT S-SHAPED BAG D" + - "ELIMITEROR WITH DOT INSIDEREVERSE SOLIDUS PRECEDING SUBSETSUPERSET PRECE" + - "DING SOLIDUSVERTICAL BAR WITH HORIZONTAL STROKEMATHEMATICAL RISING DIAGO" + - "NALLONG DIVISIONMATHEMATICAL FALLING DIAGONALSQUARED LOGICAL ANDSQUARED " + - "LOGICAL ORWHITE DIAMOND WITH CENTRED DOTAND WITH DOTELEMENT OF OPENING U" + - "PWARDSLOWER RIGHT CORNER WITH DOTUPPER LEFT CORNER WITH DOTLEFT OUTER JO" + - "INRIGHT OUTER JOINFULL OUTER JOINLARGE UP TACKLARGE DOWN TACKLEFT AND RI" + - "GHT DOUBLE TURNSTILELEFT AND RIGHT TACKLEFT MULTIMAPLONG RIGHT TACKLONG " + - "LEFT TACKUP TACK WITH CIRCLE ABOVELOZENGE DIVIDED BY HORIZONTAL RULEWHIT" + - "E CONCAVE-SIDED DIAMONDWHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICKWH" + - "ITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICKWHITE SQUARE WITH LEFTWARD" + - "S TICKWHITE SQUARE WITH RIGHTWARDS TICKMATHEMATICAL LEFT WHITE SQUARE BR" + - "ACKETMATHEMATICAL RIGHT WHITE SQUARE BRACKETMATHEMATICAL LEFT ANGLE BRAC" + - "KETMATHEMATICAL RIGHT ANGLE BRACKETMATHEMATICAL LEFT DOUBLE ANGLE BRACKE" + - "TMATHEMATICAL RIGHT DOUBLE ANGLE BRACKETMATHEMATICAL LEFT WHITE TORTOISE" + - " SHELL BRACKETMATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKETMATHEMATICA" + - "L LEFT FLATTENED PARENTHESISMATHEMATICAL RIGHT FLATTENED PARENTHESISUPWA" + - "RDS QUADRUPLE ARROWDOWNWARDS QUADRUPLE ARROWANTICLOCKWISE GAPPED CIRCLE " + - "ARROWCLOCKWISE GAPPED CIRCLE ARROWRIGHT ARROW WITH CIRCLED PLUSLONG LEFT" + - "WARDS ARROWLONG RIGHTWARDS ARROWLONG LEFT RIGHT ARROWLONG LEFTWARDS DOUB" + - "LE ARROWLONG RIGHTWARDS DOUBLE ARROWLONG LEFT RIGHT DOUBLE ARROWLONG LEF" + - "TWARDS ARROW FROM BARLONG RIGHTWARDS ARROW FROM BARLONG LEFTWARDS DOUBLE" + - " ARROW FROM BARLONG RIGHTWARDS DOUBLE ARROW FROM BARLONG RIGHTWARDS SQUI" + - "GGLE ARROWBRAILLE PATTERN BLANKBRAILLE PATTERN DOTS-1BRAILLE PATTERN DOT" + - "S-2BRAILLE PATTERN DOTS-12BRAILLE PATTERN DOTS-3BRAILLE PATTERN DOTS-13B" + - "RAILLE PATTERN DOTS-23BRAILLE PATTERN DOTS-123BRAILLE PATTERN DOTS-4BRAI" + - "LLE PATTERN DOTS-14BRAILLE PATTERN DOTS-24BRAILLE PATTERN DOTS-124BRAILL" + - "E PATTERN DOTS-34BRAILLE PATTERN DOTS-134BRAILLE PATTERN DOTS-234BRAILLE" + - " PATTERN DOTS-1234BRAILLE PATTERN DOTS-5BRAILLE PATTERN DOTS-15BRAILLE P" + - "ATTERN DOTS-25BRAILLE PATTERN DOTS-125BRAILLE PATTERN DOTS-35BRAILLE PAT" + - "TERN DOTS-135BRAILLE PATTERN DOTS-235BRAILLE PATTERN DOTS-1235BRAILLE PA" + - "TTERN DOTS-45BRAILLE PATTERN DOTS-145BRAILLE PATTERN DOTS-245BRAILLE PAT" + - "TERN DOTS-1245BRAILLE PATTERN DOTS-345BRAILLE PATTERN DOTS-1345BRAILLE P" + - "ATTERN DOTS-2345BRAILLE PATTERN DOTS-12345BRAILLE PATTERN DOTS-6BRAILLE " + - "PATTERN DOTS-16BRAILLE PATTERN DOTS-26BRAILLE PATTERN DOTS-126BRAILLE PA" + - "TTERN DOTS-36BRAILLE PATTERN DOTS-136BRAILLE PATTERN DOTS-236BRAILLE PAT" + - "TERN DOTS-1236BRAILLE PATTERN DOTS-46BRAILLE PATTERN DOTS-146BRAILLE PAT" + - "TERN DOTS-246BRAILLE PATTERN DOTS-1246BRAILLE PATTERN DOTS-346BRAILLE PA" + - "TTERN DOTS-1346BRAILLE PATTERN DOTS-2346BRAILLE PATTERN DOTS-12346BRAILL" + - "E PATTERN DOTS-56BRAILLE PATTERN DOTS-156BRAILLE PATTERN DOTS-256BRAILLE" + - " PATTERN DOTS-1256BRAILLE PATTERN DOTS-356BRAILLE PATTERN DOTS-1356BRAIL" + - "LE PATTERN DOTS-2356BRAILLE PATTERN DOTS-12356BRAILLE PATTERN DOTS-456BR" + - "AILLE PATTERN DOTS-1456BRAILLE PATTERN DOTS-2456BRAILLE PATTERN DOTS-124" + - "56BRAILLE PATTERN DOTS-3456BRAILLE PATTERN DOTS-13456BRAILLE PATTERN DOT" + - "S-23456BRAILLE PATTERN DOTS-123456BRAILLE PATTERN DOTS-7BRAILLE PATTERN " + - "DOTS-17BRAILLE PATTERN DOTS-27BRAILLE PATTERN DOTS-127BRAILLE PATTERN DO" + - "TS-37BRAILLE PATTERN DOTS-137BRAILLE PATTERN DOTS-237BRAILLE PATTERN DOT" + - "S-1237BRAILLE PATTERN DOTS-47BRAILLE PATTERN DOTS-147BRAILLE PATTERN DOT") + ("" + - "S-247BRAILLE PATTERN DOTS-1247BRAILLE PATTERN DOTS-347BRAILLE PATTERN DO" + - "TS-1347BRAILLE PATTERN DOTS-2347BRAILLE PATTERN DOTS-12347BRAILLE PATTER" + - "N DOTS-57BRAILLE PATTERN DOTS-157BRAILLE PATTERN DOTS-257BRAILLE PATTERN" + - " DOTS-1257BRAILLE PATTERN DOTS-357BRAILLE PATTERN DOTS-1357BRAILLE PATTE" + - "RN DOTS-2357BRAILLE PATTERN DOTS-12357BRAILLE PATTERN DOTS-457BRAILLE PA" + - "TTERN DOTS-1457BRAILLE PATTERN DOTS-2457BRAILLE PATTERN DOTS-12457BRAILL" + - "E PATTERN DOTS-3457BRAILLE PATTERN DOTS-13457BRAILLE PATTERN DOTS-23457B" + - "RAILLE PATTERN DOTS-123457BRAILLE PATTERN DOTS-67BRAILLE PATTERN DOTS-16" + - "7BRAILLE PATTERN DOTS-267BRAILLE PATTERN DOTS-1267BRAILLE PATTERN DOTS-3" + - "67BRAILLE PATTERN DOTS-1367BRAILLE PATTERN DOTS-2367BRAILLE PATTERN DOTS" + - "-12367BRAILLE PATTERN DOTS-467BRAILLE PATTERN DOTS-1467BRAILLE PATTERN D" + - "OTS-2467BRAILLE PATTERN DOTS-12467BRAILLE PATTERN DOTS-3467BRAILLE PATTE" + - "RN DOTS-13467BRAILLE PATTERN DOTS-23467BRAILLE PATTERN DOTS-123467BRAILL" + - "E PATTERN DOTS-567BRAILLE PATTERN DOTS-1567BRAILLE PATTERN DOTS-2567BRAI" + - "LLE PATTERN DOTS-12567BRAILLE PATTERN DOTS-3567BRAILLE PATTERN DOTS-1356" + - "7BRAILLE PATTERN DOTS-23567BRAILLE PATTERN DOTS-123567BRAILLE PATTERN DO" + - "TS-4567BRAILLE PATTERN DOTS-14567BRAILLE PATTERN DOTS-24567BRAILLE PATTE" + - "RN DOTS-124567BRAILLE PATTERN DOTS-34567BRAILLE PATTERN DOTS-134567BRAIL" + - "LE PATTERN DOTS-234567BRAILLE PATTERN DOTS-1234567BRAILLE PATTERN DOTS-8" + - "BRAILLE PATTERN DOTS-18BRAILLE PATTERN DOTS-28BRAILLE PATTERN DOTS-128BR" + - "AILLE PATTERN DOTS-38BRAILLE PATTERN DOTS-138BRAILLE PATTERN DOTS-238BRA" + - "ILLE PATTERN DOTS-1238BRAILLE PATTERN DOTS-48BRAILLE PATTERN DOTS-148BRA" + - "ILLE PATTERN DOTS-248BRAILLE PATTERN DOTS-1248BRAILLE PATTERN DOTS-348BR" + - "AILLE PATTERN DOTS-1348BRAILLE PATTERN DOTS-2348BRAILLE PATTERN DOTS-123" + - "48BRAILLE PATTERN DOTS-58BRAILLE PATTERN DOTS-158BRAILLE PATTERN DOTS-25" + - "8BRAILLE PATTERN DOTS-1258BRAILLE PATTERN DOTS-358BRAILLE PATTERN DOTS-1" + - "358BRAILLE PATTERN DOTS-2358BRAILLE PATTERN DOTS-12358BRAILLE PATTERN DO" + - "TS-458BRAILLE PATTERN DOTS-1458BRAILLE PATTERN DOTS-2458BRAILLE PATTERN " + - "DOTS-12458BRAILLE PATTERN DOTS-3458BRAILLE PATTERN DOTS-13458BRAILLE PAT" + - "TERN DOTS-23458BRAILLE PATTERN DOTS-123458BRAILLE PATTERN DOTS-68BRAILLE" + - " PATTERN DOTS-168BRAILLE PATTERN DOTS-268BRAILLE PATTERN DOTS-1268BRAILL" + - "E PATTERN DOTS-368BRAILLE PATTERN DOTS-1368BRAILLE PATTERN DOTS-2368BRAI" + - "LLE PATTERN DOTS-12368BRAILLE PATTERN DOTS-468BRAILLE PATTERN DOTS-1468B" + - "RAILLE PATTERN DOTS-2468BRAILLE PATTERN DOTS-12468BRAILLE PATTERN DOTS-3" + - "468BRAILLE PATTERN DOTS-13468BRAILLE PATTERN DOTS-23468BRAILLE PATTERN D" + - "OTS-123468BRAILLE PATTERN DOTS-568BRAILLE PATTERN DOTS-1568BRAILLE PATTE" + - "RN DOTS-2568BRAILLE PATTERN DOTS-12568BRAILLE PATTERN DOTS-3568BRAILLE P" + - "ATTERN DOTS-13568BRAILLE PATTERN DOTS-23568BRAILLE PATTERN DOTS-123568BR" + - "AILLE PATTERN DOTS-4568BRAILLE PATTERN DOTS-14568BRAILLE PATTERN DOTS-24" + - "568BRAILLE PATTERN DOTS-124568BRAILLE PATTERN DOTS-34568BRAILLE PATTERN " + - "DOTS-134568BRAILLE PATTERN DOTS-234568BRAILLE PATTERN DOTS-1234568BRAILL" + - "E PATTERN DOTS-78BRAILLE PATTERN DOTS-178BRAILLE PATTERN DOTS-278BRAILLE" + - " PATTERN DOTS-1278BRAILLE PATTERN DOTS-378BRAILLE PATTERN DOTS-1378BRAIL" + - "LE PATTERN DOTS-2378BRAILLE PATTERN DOTS-12378BRAILLE PATTERN DOTS-478BR" + - "AILLE PATTERN DOTS-1478BRAILLE PATTERN DOTS-2478BRAILLE PATTERN DOTS-124" + - "78BRAILLE PATTERN DOTS-3478BRAILLE PATTERN DOTS-13478BRAILLE PATTERN DOT" + - "S-23478BRAILLE PATTERN DOTS-123478BRAILLE PATTERN DOTS-578BRAILLE PATTER" + - "N DOTS-1578BRAILLE PATTERN DOTS-2578BRAILLE PATTERN DOTS-12578BRAILLE PA" + - "TTERN DOTS-3578BRAILLE PATTERN DOTS-13578BRAILLE PATTERN DOTS-23578BRAIL" + - "LE PATTERN DOTS-123578BRAILLE PATTERN DOTS-4578BRAILLE PATTERN DOTS-1457" + - "8BRAILLE PATTERN DOTS-24578BRAILLE PATTERN DOTS-124578BRAILLE PATTERN DO" + - "TS-34578BRAILLE PATTERN DOTS-134578BRAILLE PATTERN DOTS-234578BRAILLE PA" + - "TTERN DOTS-1234578BRAILLE PATTERN DOTS-678BRAILLE PATTERN DOTS-1678BRAIL" + - "LE PATTERN DOTS-2678BRAILLE PATTERN DOTS-12678BRAILLE PATTERN DOTS-3678B" + - "RAILLE PATTERN DOTS-13678BRAILLE PATTERN DOTS-23678BRAILLE PATTERN DOTS-" + - "123678BRAILLE PATTERN DOTS-4678BRAILLE PATTERN DOTS-14678BRAILLE PATTERN" + - " DOTS-24678BRAILLE PATTERN DOTS-124678BRAILLE PATTERN DOTS-34678BRAILLE " + - "PATTERN DOTS-134678BRAILLE PATTERN DOTS-234678BRAILLE PATTERN DOTS-12346" + - "78BRAILLE PATTERN DOTS-5678BRAILLE PATTERN DOTS-15678BRAILLE PATTERN DOT" + - "S-25678BRAILLE PATTERN DOTS-125678BRAILLE PATTERN DOTS-35678BRAILLE PATT" + - "ERN DOTS-135678BRAILLE PATTERN DOTS-235678BRAILLE PATTERN DOTS-1235678BR" + - "AILLE PATTERN DOTS-45678BRAILLE PATTERN DOTS-145678BRAILLE PATTERN DOTS-" + - "245678BRAILLE PATTERN DOTS-1245678BRAILLE PATTERN DOTS-345678BRAILLE PAT" + - "TERN DOTS-1345678BRAILLE PATTERN DOTS-2345678BRAILLE PATTERN DOTS-123456") + ("" + - "78RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKERIGHTWARDS TWO-HEADED " + - "ARROW WITH DOUBLE VERTICAL STROKELEFTWARDS DOUBLE ARROW WITH VERTICAL ST" + - "ROKERIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKELEFT RIGHT DOUBLE ARROW " + - "WITH VERTICAL STROKERIGHTWARDS TWO-HEADED ARROW FROM BARLEFTWARDS DOUBLE" + - " ARROW FROM BARRIGHTWARDS DOUBLE ARROW FROM BARDOWNWARDS ARROW WITH HORI" + - "ZONTAL STROKEUPWARDS ARROW WITH HORIZONTAL STROKEUPWARDS TRIPLE ARROWDOW" + - "NWARDS TRIPLE ARROWLEFTWARDS DOUBLE DASH ARROWRIGHTWARDS DOUBLE DASH ARR" + - "OWLEFTWARDS TRIPLE DASH ARROWRIGHTWARDS TRIPLE DASH ARROWRIGHTWARDS TWO-" + - "HEADED TRIPLE DASH ARROWRIGHTWARDS ARROW WITH DOTTED STEMUPWARDS ARROW T" + - "O BARDOWNWARDS ARROW TO BARRIGHTWARDS ARROW WITH TAIL WITH VERTICAL STRO" + - "KERIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKERIGHTWARDS TWO-H" + - "EADED ARROW WITH TAILRIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL" + - " STROKERIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE" + - "LEFTWARDS ARROW-TAILRIGHTWARDS ARROW-TAILLEFTWARDS DOUBLE ARROW-TAILRIGH" + - "TWARDS DOUBLE ARROW-TAILLEFTWARDS ARROW TO BLACK DIAMONDRIGHTWARDS ARROW" + - " TO BLACK DIAMONDLEFTWARDS ARROW FROM BAR TO BLACK DIAMONDRIGHTWARDS ARR" + - "OW FROM BAR TO BLACK DIAMONDNORTH WEST AND SOUTH EAST ARROWNORTH EAST AN" + - "D SOUTH WEST ARROWNORTH WEST ARROW WITH HOOKNORTH EAST ARROW WITH HOOKSO" + - "UTH EAST ARROW WITH HOOKSOUTH WEST ARROW WITH HOOKNORTH WEST ARROW AND N" + - "ORTH EAST ARROWNORTH EAST ARROW AND SOUTH EAST ARROWSOUTH EAST ARROW AND" + - " SOUTH WEST ARROWSOUTH WEST ARROW AND NORTH WEST ARROWRISING DIAGONAL CR" + - "OSSING FALLING DIAGONALFALLING DIAGONAL CROSSING RISING DIAGONALSOUTH EA" + - "ST ARROW CROSSING NORTH EAST ARROWNORTH EAST ARROW CROSSING SOUTH EAST A" + - "RROWFALLING DIAGONAL CROSSING NORTH EAST ARROWRISING DIAGONAL CROSSING S" + - "OUTH EAST ARROWNORTH EAST ARROW CROSSING NORTH WEST ARROWNORTH WEST ARRO" + - "W CROSSING NORTH EAST ARROWWAVE ARROW POINTING DIRECTLY RIGHTARROW POINT" + - "ING RIGHTWARDS THEN CURVING UPWARDSARROW POINTING RIGHTWARDS THEN CURVIN" + - "G DOWNWARDSARROW POINTING DOWNWARDS THEN CURVING LEFTWARDSARROW POINTING" + - " DOWNWARDS THEN CURVING RIGHTWARDSRIGHT-SIDE ARC CLOCKWISE ARROWLEFT-SID" + - "E ARC ANTICLOCKWISE ARROWTOP ARC ANTICLOCKWISE ARROWBOTTOM ARC ANTICLOCK" + - "WISE ARROWTOP ARC CLOCKWISE ARROW WITH MINUSTOP ARC ANTICLOCKWISE ARROW " + - "WITH PLUSLOWER RIGHT SEMICIRCULAR CLOCKWISE ARROWLOWER LEFT SEMICIRCULAR" + - " ANTICLOCKWISE ARROWANTICLOCKWISE CLOSED CIRCLE ARROWCLOCKWISE CLOSED CI" + - "RCLE ARROWRIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROWLEFTWARDS ARROW AB" + - "OVE SHORT RIGHTWARDS ARROWSHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROWRI" + - "GHTWARDS ARROW WITH PLUS BELOWLEFTWARDS ARROW WITH PLUS BELOWRIGHTWARDS " + - "ARROW THROUGH XLEFT RIGHT ARROW THROUGH SMALL CIRCLEUPWARDS TWO-HEADED A" + - "RROW FROM SMALL CIRCLELEFT BARB UP RIGHT BARB DOWN HARPOONLEFT BARB DOWN" + - " RIGHT BARB UP HARPOONUP BARB RIGHT DOWN BARB LEFT HARPOONUP BARB LEFT D" + - "OWN BARB RIGHT HARPOONLEFT BARB UP RIGHT BARB UP HARPOONUP BARB RIGHT DO" + - "WN BARB RIGHT HARPOONLEFT BARB DOWN RIGHT BARB DOWN HARPOONUP BARB LEFT " + - "DOWN BARB LEFT HARPOONLEFTWARDS HARPOON WITH BARB UP TO BARRIGHTWARDS HA" + - "RPOON WITH BARB UP TO BARUPWARDS HARPOON WITH BARB RIGHT TO BARDOWNWARDS" + - " HARPOON WITH BARB RIGHT TO BARLEFTWARDS HARPOON WITH BARB DOWN TO BARRI" + - "GHTWARDS HARPOON WITH BARB DOWN TO BARUPWARDS HARPOON WITH BARB LEFT TO " + - "BARDOWNWARDS HARPOON WITH BARB LEFT TO BARLEFTWARDS HARPOON WITH BARB UP" + - " FROM BARRIGHTWARDS HARPOON WITH BARB UP FROM BARUPWARDS HARPOON WITH BA" + - "RB RIGHT FROM BARDOWNWARDS HARPOON WITH BARB RIGHT FROM BARLEFTWARDS HAR" + - "POON WITH BARB DOWN FROM BARRIGHTWARDS HARPOON WITH BARB DOWN FROM BARUP" + - "WARDS HARPOON WITH BARB LEFT FROM BARDOWNWARDS HARPOON WITH BARB LEFT FR" + - "OM BARLEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB D" + - "OWNUPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT" + - "RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWND" + - "OWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT" + - "LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UPLEFT" + - "WARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWNRIGH" + - "TWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UPRIGHTWAR" + - "DS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWNLEFTWARD" + - "S HARPOON WITH BARB UP ABOVE LONG DASHLEFTWARDS HARPOON WITH BARB DOWN B" + - "ELOW LONG DASHRIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASHRIGHTWARDS " + - "HARPOON WITH BARB DOWN BELOW LONG DASHUPWARDS HARPOON WITH BARB LEFT BES" + - "IDE DOWNWARDS HARPOON WITH BARB RIGHTDOWNWARDS HARPOON WITH BARB LEFT BE" + - "SIDE UPWARDS HARPOON WITH BARB RIGHTRIGHT DOUBLE ARROW WITH ROUNDED HEAD" + - "EQUALS SIGN ABOVE RIGHTWARDS ARROWTILDE OPERATOR ABOVE RIGHTWARDS ARROWL") + ("" + - "EFTWARDS ARROW ABOVE TILDE OPERATORRIGHTWARDS ARROW ABOVE TILDE OPERATOR" + - "RIGHTWARDS ARROW ABOVE ALMOST EQUAL TOLESS-THAN ABOVE LEFTWARDS ARROWLEF" + - "TWARDS ARROW THROUGH LESS-THANGREATER-THAN ABOVE RIGHTWARDS ARROWSUBSET " + - "ABOVE RIGHTWARDS ARROWLEFTWARDS ARROW THROUGH SUBSETSUPERSET ABOVE LEFTW" + - "ARDS ARROWLEFT FISH TAILRIGHT FISH TAILUP FISH TAILDOWN FISH TAILTRIPLE " + - "VERTICAL BAR DELIMITERZ NOTATION SPOTZ NOTATION TYPE COLONLEFT WHITE CUR" + - "LY BRACKETRIGHT WHITE CURLY BRACKETLEFT WHITE PARENTHESISRIGHT WHITE PAR" + - "ENTHESISZ NOTATION LEFT IMAGE BRACKETZ NOTATION RIGHT IMAGE BRACKETZ NOT" + - "ATION LEFT BINDING BRACKETZ NOTATION RIGHT BINDING BRACKETLEFT SQUARE BR" + - "ACKET WITH UNDERBARRIGHT SQUARE BRACKET WITH UNDERBARLEFT SQUARE BRACKET" + - " WITH TICK IN TOP CORNERRIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNERL" + - "EFT SQUARE BRACKET WITH TICK IN BOTTOM CORNERRIGHT SQUARE BRACKET WITH T" + - "ICK IN TOP CORNERLEFT ANGLE BRACKET WITH DOTRIGHT ANGLE BRACKET WITH DOT" + - "LEFT ARC LESS-THAN BRACKETRIGHT ARC GREATER-THAN BRACKETDOUBLE LEFT ARC " + - "GREATER-THAN BRACKETDOUBLE RIGHT ARC LESS-THAN BRACKETLEFT BLACK TORTOIS" + - "E SHELL BRACKETRIGHT BLACK TORTOISE SHELL BRACKETDOTTED FENCEVERTICAL ZI" + - "GZAG LINEMEASURED ANGLE OPENING LEFTRIGHT ANGLE VARIANT WITH SQUAREMEASU" + - "RED RIGHT ANGLE WITH DOTANGLE WITH S INSIDEACUTE ANGLESPHERICAL ANGLE OP" + - "ENING LEFTSPHERICAL ANGLE OPENING UPTURNED ANGLEREVERSED ANGLEANGLE WITH" + - " UNDERBARREVERSED ANGLE WITH UNDERBAROBLIQUE ANGLE OPENING UPOBLIQUE ANG" + - "LE OPENING DOWNMEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP " + - "AND RIGHTMEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LE" + - "FTMEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHTME" + - "ASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFTMEASURE" + - "D ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UPMEASURED ANGL" + - "E WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UPMEASURED ANGLE WITH " + - "OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWNMEASURED ANGLE WITH OPEN" + - " ARM ENDING IN ARROW POINTING LEFT AND DOWNREVERSED EMPTY SETEMPTY SET W" + - "ITH OVERBAREMPTY SET WITH SMALL CIRCLE ABOVEEMPTY SET WITH RIGHT ARROW A" + - "BOVEEMPTY SET WITH LEFT ARROW ABOVECIRCLE WITH HORIZONTAL BARCIRCLED VER" + - "TICAL BARCIRCLED PARALLELCIRCLED REVERSE SOLIDUSCIRCLED PERPENDICULARCIR" + - "CLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BARCIRCLE" + - " WITH SUPERIMPOSED XCIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGNUP ARROW " + - "THROUGH CIRCLECIRCLED WHITE BULLETCIRCLED BULLETCIRCLED LESS-THANCIRCLED" + - " GREATER-THANCIRCLE WITH SMALL CIRCLE TO THE RIGHTCIRCLE WITH TWO HORIZO" + - "NTAL STROKES TO THE RIGHTSQUARED RISING DIAGONAL SLASHSQUARED FALLING DI" + - "AGONAL SLASHSQUARED ASTERISKSQUARED SMALL CIRCLESQUARED SQUARETWO JOINED" + - " SQUARESTRIANGLE WITH DOT ABOVETRIANGLE WITH UNDERBARS IN TRIANGLETRIANG" + - "LE WITH SERIFS AT BOTTOMRIGHT TRIANGLE ABOVE LEFT TRIANGLELEFT TRIANGLE " + - "BESIDE VERTICAL BARVERTICAL BAR BESIDE RIGHT TRIANGLEBOWTIE WITH LEFT HA" + - "LF BLACKBOWTIE WITH RIGHT HALF BLACKBLACK BOWTIETIMES WITH LEFT HALF BLA" + - "CKTIMES WITH RIGHT HALF BLACKWHITE HOURGLASSBLACK HOURGLASSLEFT WIGGLY F" + - "ENCERIGHT WIGGLY FENCELEFT DOUBLE WIGGLY FENCERIGHT DOUBLE WIGGLY FENCEI" + - "NCOMPLETE INFINITYTIE OVER INFINITYINFINITY NEGATED WITH VERTICAL BARDOU" + - "BLE-ENDED MULTIMAPSQUARE WITH CONTOURED OUTLINEINCREASES ASSHUFFLE PRODU" + - "CTEQUALS SIGN AND SLANTED PARALLELEQUALS SIGN AND SLANTED PARALLEL WITH " + - "TILDE ABOVEIDENTICAL TO AND SLANTED PARALLELGLEICH STARKTHERMODYNAMICDOW" + - "N-POINTING TRIANGLE WITH LEFT HALF BLACKDOWN-POINTING TRIANGLE WITH RIGH" + - "T HALF BLACKBLACK DIAMOND WITH DOWN ARROWBLACK LOZENGEWHITE CIRCLE WITH " + - "DOWN ARROWBLACK CIRCLE WITH DOWN ARROWERROR-BARRED WHITE SQUAREERROR-BAR" + - "RED BLACK SQUAREERROR-BARRED WHITE DIAMONDERROR-BARRED BLACK DIAMONDERRO" + - "R-BARRED WHITE CIRCLEERROR-BARRED BLACK CIRCLERULE-DELAYEDREVERSE SOLIDU" + - "S OPERATORSOLIDUS WITH OVERBARREVERSE SOLIDUS WITH HORIZONTAL STROKEBIG " + - "SOLIDUSBIG REVERSE SOLIDUSDOUBLE PLUSTRIPLE PLUSLEFT-POINTING CURVED ANG" + - "LE BRACKETRIGHT-POINTING CURVED ANGLE BRACKETTINYMINYN-ARY CIRCLED DOT O" + - "PERATORN-ARY CIRCLED PLUS OPERATORN-ARY CIRCLED TIMES OPERATORN-ARY UNIO" + - "N OPERATOR WITH DOTN-ARY UNION OPERATOR WITH PLUSN-ARY SQUARE INTERSECTI" + - "ON OPERATORN-ARY SQUARE UNION OPERATORTWO LOGICAL AND OPERATORTWO LOGICA" + - "L OR OPERATORN-ARY TIMES OPERATORMODULO TWO SUMSUMMATION WITH INTEGRALQU" + - "ADRUPLE INTEGRAL OPERATORFINITE PART INTEGRALINTEGRAL WITH DOUBLE STROKE" + - "INTEGRAL AVERAGE WITH SLASHCIRCULATION FUNCTIONANTICLOCKWISE INTEGRATION" + - "LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLELINE INTEGRATION WITH " + - "SEMICIRCULAR PATH AROUND POLELINE INTEGRATION NOT INCLUDING THE POLEINTE" + - "GRAL AROUND A POINT OPERATORQUATERNION INTEGRAL OPERATORINTEGRAL WITH LE") + ("" + - "FTWARDS ARROW WITH HOOKINTEGRAL WITH TIMES SIGNINTEGRAL WITH INTERSECTIO" + - "NINTEGRAL WITH UNIONINTEGRAL WITH OVERBARINTEGRAL WITH UNDERBARJOINLARGE" + - " LEFT TRIANGLE OPERATORZ NOTATION SCHEMA COMPOSITIONZ NOTATION SCHEMA PI" + - "PINGZ NOTATION SCHEMA PROJECTIONPLUS SIGN WITH SMALL CIRCLE ABOVEPLUS SI" + - "GN WITH CIRCUMFLEX ACCENT ABOVEPLUS SIGN WITH TILDE ABOVEPLUS SIGN WITH " + - "DOT BELOWPLUS SIGN WITH TILDE BELOWPLUS SIGN WITH SUBSCRIPT TWOPLUS SIGN" + - " WITH BLACK TRIANGLEMINUS SIGN WITH COMMA ABOVEMINUS SIGN WITH DOT BELOW" + - "MINUS SIGN WITH FALLING DOTSMINUS SIGN WITH RISING DOTSPLUS SIGN IN LEFT" + - " HALF CIRCLEPLUS SIGN IN RIGHT HALF CIRCLEVECTOR OR CROSS PRODUCTMULTIPL" + - "ICATION SIGN WITH DOT ABOVEMULTIPLICATION SIGN WITH UNDERBARSEMIDIRECT P" + - "RODUCT WITH BOTTOM CLOSEDSMASH PRODUCTMULTIPLICATION SIGN IN LEFT HALF C" + - "IRCLEMULTIPLICATION SIGN IN RIGHT HALF CIRCLECIRCLED MULTIPLICATION SIGN" + - " WITH CIRCUMFLEX ACCENTMULTIPLICATION SIGN IN DOUBLE CIRCLECIRCLED DIVIS" + - "ION SIGNPLUS SIGN IN TRIANGLEMINUS SIGN IN TRIANGLEMULTIPLICATION SIGN I" + - "N TRIANGLEINTERIOR PRODUCTRIGHTHAND INTERIOR PRODUCTZ NOTATION RELATIONA" + - "L COMPOSITIONAMALGAMATION OR COPRODUCTINTERSECTION WITH DOTUNION WITH MI" + - "NUS SIGNUNION WITH OVERBARINTERSECTION WITH OVERBARINTERSECTION WITH LOG" + - "ICAL ANDUNION WITH LOGICAL ORUNION ABOVE INTERSECTIONINTERSECTION ABOVE " + - "UNIONUNION ABOVE BAR ABOVE INTERSECTIONINTERSECTION ABOVE BAR ABOVE UNIO" + - "NUNION BESIDE AND JOINED WITH UNIONINTERSECTION BESIDE AND JOINED WITH I" + - "NTERSECTIONCLOSED UNION WITH SERIFSCLOSED INTERSECTION WITH SERIFSDOUBLE" + - " SQUARE INTERSECTIONDOUBLE SQUARE UNIONCLOSED UNION WITH SERIFS AND SMAS" + - "H PRODUCTLOGICAL AND WITH DOT ABOVELOGICAL OR WITH DOT ABOVEDOUBLE LOGIC" + - "AL ANDDOUBLE LOGICAL ORTWO INTERSECTING LOGICAL ANDTWO INTERSECTING LOGI" + - "CAL ORSLOPING LARGE ORSLOPING LARGE ANDLOGICAL OR OVERLAPPING LOGICAL AN" + - "DLOGICAL AND WITH MIDDLE STEMLOGICAL OR WITH MIDDLE STEMLOGICAL AND WITH" + - " HORIZONTAL DASHLOGICAL OR WITH HORIZONTAL DASHLOGICAL AND WITH DOUBLE O" + - "VERBARLOGICAL AND WITH UNDERBARLOGICAL AND WITH DOUBLE UNDERBARSMALL VEE" + - " WITH UNDERBARLOGICAL OR WITH DOUBLE OVERBARLOGICAL OR WITH DOUBLE UNDER" + - "BARZ NOTATION DOMAIN ANTIRESTRICTIONZ NOTATION RANGE ANTIRESTRICTIONEQUA" + - "LS SIGN WITH DOT BELOWIDENTICAL WITH DOT ABOVETRIPLE HORIZONTAL BAR WITH" + - " DOUBLE VERTICAL STROKETRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE" + - "TILDE OPERATOR WITH DOT ABOVETILDE OPERATOR WITH RISING DOTSSIMILAR MINU" + - "S SIMILARCONGRUENT WITH DOT ABOVEEQUALS WITH ASTERISKALMOST EQUAL TO WIT" + - "H CIRCUMFLEX ACCENTAPPROXIMATELY EQUAL OR EQUAL TOEQUALS SIGN ABOVE PLUS" + - " SIGNPLUS SIGN ABOVE EQUALS SIGNEQUALS SIGN ABOVE TILDE OPERATORDOUBLE C" + - "OLON EQUALTWO CONSECUTIVE EQUALS SIGNSTHREE CONSECUTIVE EQUALS SIGNSEQUA" + - "LS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOWEQUIVALENT WITH FOUR DOTS " + - "ABOVELESS-THAN WITH CIRCLE INSIDEGREATER-THAN WITH CIRCLE INSIDELESS-THA" + - "N WITH QUESTION MARK ABOVEGREATER-THAN WITH QUESTION MARK ABOVELESS-THAN" + - " OR SLANTED EQUAL TOGREATER-THAN OR SLANTED EQUAL TOLESS-THAN OR SLANTED" + - " EQUAL TO WITH DOT INSIDEGREATER-THAN OR SLANTED EQUAL TO WITH DOT INSID" + - "ELESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVEGREATER-THAN OR SLANTED EQU" + - "AL TO WITH DOT ABOVELESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHTGR" + - "EATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFTLESS-THAN OR APPROXIMA" + - "TEGREATER-THAN OR APPROXIMATELESS-THAN AND SINGLE-LINE NOT EQUAL TOGREAT" + - "ER-THAN AND SINGLE-LINE NOT EQUAL TOLESS-THAN AND NOT APPROXIMATEGREATER" + - "-THAN AND NOT APPROXIMATELESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER" + - "-THANGREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THANLESS-THAN ABOVE" + - " SIMILAR OR EQUALGREATER-THAN ABOVE SIMILAR OR EQUALLESS-THAN ABOVE SIMI" + - "LAR ABOVE GREATER-THANGREATER-THAN ABOVE SIMILAR ABOVE LESS-THANLESS-THA" + - "N ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUALGREATER-THAN ABOVE LESS-THAN" + - " ABOVE DOUBLE-LINE EQUALLESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN" + - " ABOVE SLANTED EQUALGREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABO" + - "VE SLANTED EQUALSLANTED EQUAL TO OR LESS-THANSLANTED EQUAL TO OR GREATER" + - "-THANSLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDESLANTED EQUAL TO OR GR" + - "EATER-THAN WITH DOT INSIDEDOUBLE-LINE EQUAL TO OR LESS-THANDOUBLE-LINE E" + - "QUAL TO OR GREATER-THANDOUBLE-LINE SLANTED EQUAL TO OR LESS-THANDOUBLE-L" + - "INE SLANTED EQUAL TO OR GREATER-THANSIMILAR OR LESS-THANSIMILAR OR GREAT" + - "ER-THANSIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGNSIMILAR ABOVE GREATER-TH" + - "AN ABOVE EQUALS SIGNDOUBLE NESTED LESS-THANDOUBLE NESTED GREATER-THANDOU" + - "BLE NESTED LESS-THAN WITH UNDERBARGREATER-THAN OVERLAPPING LESS-THANGREA" + - "TER-THAN BESIDE LESS-THANLESS-THAN CLOSED BY CURVEGREATER-THAN CLOSED BY" + - " CURVELESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUALGREATER-THAN CLOSED B") + ("" + - "Y CURVE ABOVE SLANTED EQUALSMALLER THANLARGER THANSMALLER THAN OR EQUAL " + - "TOLARGER THAN OR EQUAL TOEQUALS SIGN WITH BUMPY ABOVEPRECEDES ABOVE SING" + - "LE-LINE EQUALS SIGNSUCCEEDS ABOVE SINGLE-LINE EQUALS SIGNPRECEDES ABOVE " + - "SINGLE-LINE NOT EQUAL TOSUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TOPRECEDES " + - "ABOVE EQUALS SIGNSUCCEEDS ABOVE EQUALS SIGNPRECEDES ABOVE NOT EQUAL TOSU" + - "CCEEDS ABOVE NOT EQUAL TOPRECEDES ABOVE ALMOST EQUAL TOSUCCEEDS ABOVE AL" + - "MOST EQUAL TOPRECEDES ABOVE NOT ALMOST EQUAL TOSUCCEEDS ABOVE NOT ALMOST" + - " EQUAL TODOUBLE PRECEDESDOUBLE SUCCEEDSSUBSET WITH DOTSUPERSET WITH DOTS" + - "UBSET WITH PLUS SIGN BELOWSUPERSET WITH PLUS SIGN BELOWSUBSET WITH MULTI" + - "PLICATION SIGN BELOWSUPERSET WITH MULTIPLICATION SIGN BELOWSUBSET OF OR " + - "EQUAL TO WITH DOT ABOVESUPERSET OF OR EQUAL TO WITH DOT ABOVESUBSET OF A" + - "BOVE EQUALS SIGNSUPERSET OF ABOVE EQUALS SIGNSUBSET OF ABOVE TILDE OPERA" + - "TORSUPERSET OF ABOVE TILDE OPERATORSUBSET OF ABOVE ALMOST EQUAL TOSUPERS" + - "ET OF ABOVE ALMOST EQUAL TOSUBSET OF ABOVE NOT EQUAL TOSUPERSET OF ABOVE" + - " NOT EQUAL TOSQUARE LEFT OPEN BOX OPERATORSQUARE RIGHT OPEN BOX OPERATOR" + - "CLOSED SUBSETCLOSED SUPERSETCLOSED SUBSET OR EQUAL TOCLOSED SUPERSET OR " + - "EQUAL TOSUBSET ABOVE SUPERSETSUPERSET ABOVE SUBSETSUBSET ABOVE SUBSETSUP" + - "ERSET ABOVE SUPERSETSUPERSET BESIDE SUBSETSUPERSET BESIDE AND JOINED BY " + - "DASH WITH SUBSETELEMENT OF OPENING DOWNWARDSPITCHFORK WITH TEE TOPTRANSV" + - "ERSAL INTERSECTIONFORKINGNONFORKINGSHORT LEFT TACKSHORT DOWN TACKSHORT U" + - "P TACKPERPENDICULAR WITH SVERTICAL BAR TRIPLE RIGHT TURNSTILEDOUBLE VERT" + - "ICAL BAR LEFT TURNSTILEVERTICAL BAR DOUBLE LEFT TURNSTILEDOUBLE VERTICAL" + - " BAR DOUBLE LEFT TURNSTILELONG DASH FROM LEFT MEMBER OF DOUBLE VERTICALS" + - "HORT DOWN TACK WITH OVERBARSHORT UP TACK WITH UNDERBARSHORT UP TACK ABOV" + - "E SHORT DOWN TACKDOUBLE DOWN TACKDOUBLE UP TACKDOUBLE STROKE NOT SIGNREV" + - "ERSED DOUBLE STROKE NOT SIGNDOES NOT DIVIDE WITH REVERSED NEGATION SLASH" + - "VERTICAL LINE WITH CIRCLE ABOVEVERTICAL LINE WITH CIRCLE BELOWDOWN TACK " + - "WITH CIRCLE BELOWPARALLEL WITH HORIZONTAL STROKEPARALLEL WITH TILDE OPER" + - "ATORTRIPLE VERTICAL BAR BINARY RELATIONTRIPLE VERTICAL BAR WITH HORIZONT" + - "AL STROKETRIPLE COLON OPERATORTRIPLE NESTED LESS-THANTRIPLE NESTED GREAT" + - "ER-THANDOUBLE-LINE SLANTED LESS-THAN OR EQUAL TODOUBLE-LINE SLANTED GREA" + - "TER-THAN OR EQUAL TOTRIPLE SOLIDUS BINARY RELATIONLARGE TRIPLE VERTICAL " + - "BAR OPERATORDOUBLE SOLIDUS OPERATORWHITE VERTICAL BARN-ARY WHITE VERTICA" + - "L BARNORTH EAST WHITE ARROWNORTH WEST WHITE ARROWSOUTH EAST WHITE ARROWS" + - "OUTH WEST WHITE ARROWLEFT RIGHT WHITE ARROWLEFTWARDS BLACK ARROWUPWARDS " + - "BLACK ARROWDOWNWARDS BLACK ARROWNORTH EAST BLACK ARROWNORTH WEST BLACK A" + - "RROWSOUTH EAST BLACK ARROWSOUTH WEST BLACK ARROWLEFT RIGHT BLACK ARROWUP" + - " DOWN BLACK ARROWRIGHTWARDS ARROW WITH TIP DOWNWARDSRIGHTWARDS ARROW WIT" + - "H TIP UPWARDSLEFTWARDS ARROW WITH TIP DOWNWARDSLEFTWARDS ARROW WITH TIP " + - "UPWARDSSQUARE WITH TOP HALF BLACKSQUARE WITH BOTTOM HALF BLACKSQUARE WIT" + - "H UPPER RIGHT DIAGONAL HALF BLACKSQUARE WITH LOWER LEFT DIAGONAL HALF BL" + - "ACKDIAMOND WITH LEFT HALF BLACKDIAMOND WITH RIGHT HALF BLACKDIAMOND WITH" + - " TOP HALF BLACKDIAMOND WITH BOTTOM HALF BLACKDOTTED SQUAREBLACK LARGE SQ" + - "UAREWHITE LARGE SQUAREBLACK VERY SMALL SQUAREWHITE VERY SMALL SQUAREBLAC" + - "K PENTAGONWHITE PENTAGONWHITE HEXAGONBLACK HEXAGONHORIZONTAL BLACK HEXAG" + - "ONBLACK LARGE CIRCLEBLACK MEDIUM DIAMONDWHITE MEDIUM DIAMONDBLACK MEDIUM" + - " LOZENGEWHITE MEDIUM LOZENGEBLACK SMALL DIAMONDBLACK SMALL LOZENGEWHITE " + - "SMALL LOZENGEBLACK HORIZONTAL ELLIPSEWHITE HORIZONTAL ELLIPSEBLACK VERTI" + - "CAL ELLIPSEWHITE VERTICAL ELLIPSELEFT ARROW WITH SMALL CIRCLETHREE LEFTW" + - "ARDS ARROWSLEFT ARROW WITH CIRCLED PLUSLONG LEFTWARDS SQUIGGLE ARROWLEFT" + - "WARDS TWO-HEADED ARROW WITH VERTICAL STROKELEFTWARDS TWO-HEADED ARROW WI" + - "TH DOUBLE VERTICAL STROKELEFTWARDS TWO-HEADED ARROW FROM BARLEFTWARDS TW" + - "O-HEADED TRIPLE DASH ARROWLEFTWARDS ARROW WITH DOTTED STEMLEFTWARDS ARRO" + - "W WITH TAIL WITH VERTICAL STROKELEFTWARDS ARROW WITH TAIL WITH DOUBLE VE" + - "RTICAL STROKELEFTWARDS TWO-HEADED ARROW WITH TAILLEFTWARDS TWO-HEADED AR" + - "ROW WITH TAIL WITH VERTICAL STROKELEFTWARDS TWO-HEADED ARROW WITH TAIL W" + - "ITH DOUBLE VERTICAL STROKELEFTWARDS ARROW THROUGH XWAVE ARROW POINTING D" + - "IRECTLY LEFTEQUALS SIGN ABOVE LEFTWARDS ARROWREVERSE TILDE OPERATOR ABOV" + - "E LEFTWARDS ARROWLEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TORIGHTWARDS" + - " ARROW THROUGH GREATER-THANRIGHTWARDS ARROW THROUGH SUPERSETLEFTWARDS QU" + - "ADRUPLE ARROWRIGHTWARDS QUADRUPLE ARROWREVERSE TILDE OPERATOR ABOVE RIGH" + - "TWARDS ARROWRIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TOTILDE OPERATOR" + - " ABOVE LEFTWARDS ARROWLEFTWARDS ARROW ABOVE ALMOST EQUAL TOLEFTWARDS ARR" + - "OW ABOVE REVERSE TILDE OPERATORRIGHTWARDS ARROW ABOVE REVERSE TILDE OPER") + ("" + - "ATORDOWNWARDS TRIANGLE-HEADED ZIGZAG ARROWSHORT SLANTED NORTH ARROWSHORT" + - " BACKSLANTED SOUTH ARROWWHITE MEDIUM STARBLACK SMALL STARWHITE SMALL STA" + - "RBLACK RIGHT-POINTING PENTAGONWHITE RIGHT-POINTING PENTAGONHEAVY LARGE C" + - "IRCLEHEAVY OVAL WITH OVAL INSIDEHEAVY CIRCLE WITH CIRCLE INSIDEHEAVY CIR" + - "CLEHEAVY CIRCLED SALTIRESLANTED NORTH ARROW WITH HOOKED HEADBACKSLANTED " + - "SOUTH ARROW WITH HOOKED TAILSLANTED NORTH ARROW WITH HORIZONTAL TAILBACK" + - "SLANTED SOUTH ARROW WITH HORIZONTAL TAILBENT ARROW POINTING DOWNWARDS TH" + - "EN NORTH EASTSHORT BENT ARROW POINTING DOWNWARDS THEN NORTH EASTLEFTWARD" + - "S TRIANGLE-HEADED ARROWUPWARDS TRIANGLE-HEADED ARROWRIGHTWARDS TRIANGLE-" + - "HEADED ARROWDOWNWARDS TRIANGLE-HEADED ARROWLEFT RIGHT TRIANGLE-HEADED AR" + - "ROWUP DOWN TRIANGLE-HEADED ARROWNORTH WEST TRIANGLE-HEADED ARROWNORTH EA" + - "ST TRIANGLE-HEADED ARROWSOUTH EAST TRIANGLE-HEADED ARROWSOUTH WEST TRIAN" + - "GLE-HEADED ARROWLEFTWARDS TRIANGLE-HEADED DASHED ARROWUPWARDS TRIANGLE-H" + - "EADED DASHED ARROWRIGHTWARDS TRIANGLE-HEADED DASHED ARROWDOWNWARDS TRIAN" + - "GLE-HEADED DASHED ARROWCLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROWANTICL" + - "OCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROWLEFTWARDS TRIANGLE-HEADED ARROW" + - " TO BARUPWARDS TRIANGLE-HEADED ARROW TO BARRIGHTWARDS TRIANGLE-HEADED AR" + - "ROW TO BARDOWNWARDS TRIANGLE-HEADED ARROW TO BARNORTH WEST TRIANGLE-HEAD" + - "ED ARROW TO BARNORTH EAST TRIANGLE-HEADED ARROW TO BARSOUTH EAST TRIANGL" + - "E-HEADED ARROW TO BARSOUTH WEST TRIANGLE-HEADED ARROW TO BARLEFTWARDS TR" + - "IANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKEUPWARDS TRIANGLE-HEADED" + - " ARROW WITH DOUBLE HORIZONTAL STROKERIGHTWARDS TRIANGLE-HEADED ARROW WIT" + - "H DOUBLE HORIZONTAL STROKEDOWNWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HO" + - "RIZONTAL STROKEHORIZONTAL TAB KEYVERTICAL TAB KEYLEFTWARDS TRIANGLE-HEAD" + - "ED ARROW OVER RIGHTWARDS TRIANGLE-HEADED ARROWUPWARDS TRIANGLE-HEADED AR" + - "ROW LEFTWARDS OF DOWNWARDS TRIANGLE-HEADED ARROWRIGHTWARDS TRIANGLE-HEAD" + - "ED ARROW OVER LEFTWARDS TRIANGLE-HEADED ARROWDOWNWARDS TRIANGLE-HEADED A" + - "RROW LEFTWARDS OF UPWARDS TRIANGLE-HEADED ARROWLEFTWARDS TRIANGLE-HEADED" + - " PAIRED ARROWSUPWARDS TRIANGLE-HEADED PAIRED ARROWSRIGHTWARDS TRIANGLE-H" + - "EADED PAIRED ARROWSDOWNWARDS TRIANGLE-HEADED PAIRED ARROWSLEFTWARDS BLAC" + - "K CIRCLED WHITE ARROWUPWARDS BLACK CIRCLED WHITE ARROWRIGHTWARDS BLACK C" + - "IRCLED WHITE ARROWDOWNWARDS BLACK CIRCLED WHITE ARROWANTICLOCKWISE TRIAN" + - "GLE-HEADED RIGHT U-SHAPED ARROWANTICLOCKWISE TRIANGLE-HEADED BOTTOM U-SH" + - "APED ARROWANTICLOCKWISE TRIANGLE-HEADED LEFT U-SHAPED ARROWANTICLOCKWISE" + - " TRIANGLE-HEADED TOP U-SHAPED ARROWRETURN LEFTRETURN RIGHTNEWLINE LEFTNE" + - "WLINE RIGHTFOUR CORNER ARROWS CIRCLING ANTICLOCKWISERIGHTWARDS BLACK ARR" + - "OWTHREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEADTHREE-D RIGHT-LIGHT" + - "ED UPWARDS EQUILATERAL ARROWHEADTHREE-D TOP-LIGHTED RIGHTWARDS EQUILATER" + - "AL ARROWHEADTHREE-D LEFT-LIGHTED DOWNWARDS EQUILATERAL ARROWHEADBLACK LE" + - "FTWARDS EQUILATERAL ARROWHEADBLACK UPWARDS EQUILATERAL ARROWHEADBLACK RI" + - "GHTWARDS EQUILATERAL ARROWHEADBLACK DOWNWARDS EQUILATERAL ARROWHEADDOWNW" + - "ARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDSDOWNWARDS TRIANGLE-HEA" + - "DED ARROW WITH LONG TIP RIGHTWARDSUPWARDS TRIANGLE-HEADED ARROW WITH LON" + - "G TIP LEFTWARDSUPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDSLEF" + - "TWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDSRIGHTWARDS TRIANGLE-HE" + - "ADED ARROW WITH LONG TIP UPWARDSLEFTWARDS TRIANGLE-HEADED ARROW WITH LON" + - "G TIP DOWNWARDSRIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDSB" + - "LACK CURVED DOWNWARDS AND LEFTWARDS ARROWBLACK CURVED DOWNWARDS AND RIGH" + - "TWARDS ARROWBLACK CURVED UPWARDS AND LEFTWARDS ARROWBLACK CURVED UPWARDS" + - " AND RIGHTWARDS ARROWBLACK CURVED LEFTWARDS AND UPWARDS ARROWBLACK CURVE" + - "D RIGHTWARDS AND UPWARDS ARROWBLACK CURVED LEFTWARDS AND DOWNWARDS ARROW" + - "BLACK CURVED RIGHTWARDS AND DOWNWARDS ARROWRIBBON ARROW DOWN LEFTRIBBON " + - "ARROW DOWN RIGHTRIBBON ARROW UP LEFTRIBBON ARROW UP RIGHTRIBBON ARROW LE" + - "FT UPRIBBON ARROW RIGHT UPRIBBON ARROW LEFT DOWNRIBBON ARROW RIGHT DOWNU" + - "PWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BARUP ARROWHEAD IN A RECTANG" + - "LE BOXBALLOT BOX WITH LIGHT XCIRCLED XCIRCLED BOLD XBLACK SQUARE CENTRED" + - "BLACK DIAMOND CENTREDTURNED BLACK PENTAGONHORIZONTAL BLACK OCTAGONBLACK " + - "OCTAGONBLACK MEDIUM UP-POINTING TRIANGLE CENTREDBLACK MEDIUM DOWN-POINTI" + - "NG TRIANGLE CENTREDBLACK MEDIUM LEFT-POINTING TRIANGLE CENTREDBLACK MEDI" + - "UM RIGHT-POINTING TRIANGLE CENTREDTOP HALF BLACK CIRCLEBOTTOM HALF BLACK" + - " CIRCLELIGHT FOUR POINTED BLACK CUSPROTATED LIGHT FOUR POINTED BLACK CUS" + - "PWHITE FOUR POINTED CUSPROTATED WHITE FOUR POINTED CUSPSQUARE POSITION I" + - "NDICATORUNCERTAINTY SIGNLEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHE" + - "ADSUPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADSRIGHTWARDS TWO-HEADE") + ("" + - "D ARROW WITH TRIANGLE ARROWHEADSDOWNWARDS TWO-HEADED ARROW WITH TRIANGLE" + - " ARROWHEADSGLAGOLITIC CAPITAL LETTER AZUGLAGOLITIC CAPITAL LETTER BUKYGL" + - "AGOLITIC CAPITAL LETTER VEDEGLAGOLITIC CAPITAL LETTER GLAGOLIGLAGOLITIC " + - "CAPITAL LETTER DOBROGLAGOLITIC CAPITAL LETTER YESTUGLAGOLITIC CAPITAL LE" + - "TTER ZHIVETEGLAGOLITIC CAPITAL LETTER DZELOGLAGOLITIC CAPITAL LETTER ZEM" + - "LJAGLAGOLITIC CAPITAL LETTER IZHEGLAGOLITIC CAPITAL LETTER INITIAL IZHEG" + - "LAGOLITIC CAPITAL LETTER IGLAGOLITIC CAPITAL LETTER DJERVIGLAGOLITIC CAP" + - "ITAL LETTER KAKOGLAGOLITIC CAPITAL LETTER LJUDIJEGLAGOLITIC CAPITAL LETT" + - "ER MYSLITEGLAGOLITIC CAPITAL LETTER NASHIGLAGOLITIC CAPITAL LETTER ONUGL" + - "AGOLITIC CAPITAL LETTER POKOJIGLAGOLITIC CAPITAL LETTER RITSIGLAGOLITIC " + - "CAPITAL LETTER SLOVOGLAGOLITIC CAPITAL LETTER TVRIDOGLAGOLITIC CAPITAL L" + - "ETTER UKUGLAGOLITIC CAPITAL LETTER FRITUGLAGOLITIC CAPITAL LETTER HERUGL" + - "AGOLITIC CAPITAL LETTER OTUGLAGOLITIC CAPITAL LETTER PEGLAGOLITIC CAPITA" + - "L LETTER SHTAGLAGOLITIC CAPITAL LETTER TSIGLAGOLITIC CAPITAL LETTER CHRI" + - "VIGLAGOLITIC CAPITAL LETTER SHAGLAGOLITIC CAPITAL LETTER YERUGLAGOLITIC " + - "CAPITAL LETTER YERIGLAGOLITIC CAPITAL LETTER YATIGLAGOLITIC CAPITAL LETT" + - "ER SPIDERY HAGLAGOLITIC CAPITAL LETTER YUGLAGOLITIC CAPITAL LETTER SMALL" + - " YUSGLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAILGLAGOLITIC CAPITAL LETT" + - "ER YOGLAGOLITIC CAPITAL LETTER IOTATED SMALL YUSGLAGOLITIC CAPITAL LETTE" + - "R BIG YUSGLAGOLITIC CAPITAL LETTER IOTATED BIG YUSGLAGOLITIC CAPITAL LET" + - "TER FITAGLAGOLITIC CAPITAL LETTER IZHITSAGLAGOLITIC CAPITAL LETTER SHTAP" + - "ICGLAGOLITIC CAPITAL LETTER TROKUTASTI AGLAGOLITIC CAPITAL LETTER LATINA" + - "TE MYSLITEGLAGOLITIC SMALL LETTER AZUGLAGOLITIC SMALL LETTER BUKYGLAGOLI" + - "TIC SMALL LETTER VEDEGLAGOLITIC SMALL LETTER GLAGOLIGLAGOLITIC SMALL LET" + - "TER DOBROGLAGOLITIC SMALL LETTER YESTUGLAGOLITIC SMALL LETTER ZHIVETEGLA" + - "GOLITIC SMALL LETTER DZELOGLAGOLITIC SMALL LETTER ZEMLJAGLAGOLITIC SMALL" + - " LETTER IZHEGLAGOLITIC SMALL LETTER INITIAL IZHEGLAGOLITIC SMALL LETTER " + - "IGLAGOLITIC SMALL LETTER DJERVIGLAGOLITIC SMALL LETTER KAKOGLAGOLITIC SM" + - "ALL LETTER LJUDIJEGLAGOLITIC SMALL LETTER MYSLITEGLAGOLITIC SMALL LETTER" + - " NASHIGLAGOLITIC SMALL LETTER ONUGLAGOLITIC SMALL LETTER POKOJIGLAGOLITI" + - "C SMALL LETTER RITSIGLAGOLITIC SMALL LETTER SLOVOGLAGOLITIC SMALL LETTER" + - " TVRIDOGLAGOLITIC SMALL LETTER UKUGLAGOLITIC SMALL LETTER FRITUGLAGOLITI" + - "C SMALL LETTER HERUGLAGOLITIC SMALL LETTER OTUGLAGOLITIC SMALL LETTER PE" + - "GLAGOLITIC SMALL LETTER SHTAGLAGOLITIC SMALL LETTER TSIGLAGOLITIC SMALL " + - "LETTER CHRIVIGLAGOLITIC SMALL LETTER SHAGLAGOLITIC SMALL LETTER YERUGLAG" + - "OLITIC SMALL LETTER YERIGLAGOLITIC SMALL LETTER YATIGLAGOLITIC SMALL LET" + - "TER SPIDERY HAGLAGOLITIC SMALL LETTER YUGLAGOLITIC SMALL LETTER SMALL YU" + - "SGLAGOLITIC SMALL LETTER SMALL YUS WITH TAILGLAGOLITIC SMALL LETTER YOGL" + - "AGOLITIC SMALL LETTER IOTATED SMALL YUSGLAGOLITIC SMALL LETTER BIG YUSGL" + - "AGOLITIC SMALL LETTER IOTATED BIG YUSGLAGOLITIC SMALL LETTER FITAGLAGOLI" + - "TIC SMALL LETTER IZHITSAGLAGOLITIC SMALL LETTER SHTAPICGLAGOLITIC SMALL " + - "LETTER TROKUTASTI AGLAGOLITIC SMALL LETTER LATINATE MYSLITELATIN CAPITAL" + - " LETTER L WITH DOUBLE BARLATIN SMALL LETTER L WITH DOUBLE BARLATIN CAPIT" + - "AL LETTER L WITH MIDDLE TILDELATIN CAPITAL LETTER P WITH STROKELATIN CAP" + - "ITAL LETTER R WITH TAILLATIN SMALL LETTER A WITH STROKELATIN SMALL LETTE" + - "R T WITH DIAGONAL STROKELATIN CAPITAL LETTER H WITH DESCENDERLATIN SMALL" + - " LETTER H WITH DESCENDERLATIN CAPITAL LETTER K WITH DESCENDERLATIN SMALL" + - " LETTER K WITH DESCENDERLATIN CAPITAL LETTER Z WITH DESCENDERLATIN SMALL" + - " LETTER Z WITH DESCENDERLATIN CAPITAL LETTER ALPHALATIN CAPITAL LETTER M" + - " WITH HOOKLATIN CAPITAL LETTER TURNED ALATIN CAPITAL LETTER TURNED ALPHA" + - "LATIN SMALL LETTER V WITH RIGHT HOOKLATIN CAPITAL LETTER W WITH HOOKLATI" + - "N SMALL LETTER W WITH HOOKLATIN SMALL LETTER V WITH CURLLATIN CAPITAL LE" + - "TTER HALF HLATIN SMALL LETTER HALF HLATIN SMALL LETTER TAILLESS PHILATIN" + - " SMALL LETTER E WITH NOTCHLATIN SMALL LETTER TURNED R WITH TAILLATIN SMA" + - "LL LETTER O WITH LOW RING INSIDELATIN LETTER SMALL CAPITAL TURNED ELATIN" + - " SUBSCRIPT SMALL LETTER JMODIFIER LETTER CAPITAL VLATIN CAPITAL LETTER S" + - " WITH SWASH TAILLATIN CAPITAL LETTER Z WITH SWASH TAILCOPTIC CAPITAL LET" + - "TER ALFACOPTIC SMALL LETTER ALFACOPTIC CAPITAL LETTER VIDACOPTIC SMALL L" + - "ETTER VIDACOPTIC CAPITAL LETTER GAMMACOPTIC SMALL LETTER GAMMACOPTIC CAP" + - "ITAL LETTER DALDACOPTIC SMALL LETTER DALDACOPTIC CAPITAL LETTER EIECOPTI" + - "C SMALL LETTER EIECOPTIC CAPITAL LETTER SOUCOPTIC SMALL LETTER SOUCOPTIC" + - " CAPITAL LETTER ZATACOPTIC SMALL LETTER ZATACOPTIC CAPITAL LETTER HATECO" + - "PTIC SMALL LETTER HATECOPTIC CAPITAL LETTER THETHECOPTIC SMALL LETTER TH" + - "ETHECOPTIC CAPITAL LETTER IAUDACOPTIC SMALL LETTER IAUDACOPTIC CAPITAL L") + ("" + - "ETTER KAPACOPTIC SMALL LETTER KAPACOPTIC CAPITAL LETTER LAULACOPTIC SMAL" + - "L LETTER LAULACOPTIC CAPITAL LETTER MICOPTIC SMALL LETTER MICOPTIC CAPIT" + - "AL LETTER NICOPTIC SMALL LETTER NICOPTIC CAPITAL LETTER KSICOPTIC SMALL " + - "LETTER KSICOPTIC CAPITAL LETTER OCOPTIC SMALL LETTER OCOPTIC CAPITAL LET" + - "TER PICOPTIC SMALL LETTER PICOPTIC CAPITAL LETTER ROCOPTIC SMALL LETTER " + - "ROCOPTIC CAPITAL LETTER SIMACOPTIC SMALL LETTER SIMACOPTIC CAPITAL LETTE" + - "R TAUCOPTIC SMALL LETTER TAUCOPTIC CAPITAL LETTER UACOPTIC SMALL LETTER " + - "UACOPTIC CAPITAL LETTER FICOPTIC SMALL LETTER FICOPTIC CAPITAL LETTER KH" + - "ICOPTIC SMALL LETTER KHICOPTIC CAPITAL LETTER PSICOPTIC SMALL LETTER PSI" + - "COPTIC CAPITAL LETTER OOUCOPTIC SMALL LETTER OOUCOPTIC CAPITAL LETTER DI" + - "ALECT-P ALEFCOPTIC SMALL LETTER DIALECT-P ALEFCOPTIC CAPITAL LETTER OLD " + - "COPTIC AINCOPTIC SMALL LETTER OLD COPTIC AINCOPTIC CAPITAL LETTER CRYPTO" + - "GRAMMIC EIECOPTIC SMALL LETTER CRYPTOGRAMMIC EIECOPTIC CAPITAL LETTER DI" + - "ALECT-P KAPACOPTIC SMALL LETTER DIALECT-P KAPACOPTIC CAPITAL LETTER DIAL" + - "ECT-P NICOPTIC SMALL LETTER DIALECT-P NICOPTIC CAPITAL LETTER CRYPTOGRAM" + - "MIC NICOPTIC SMALL LETTER CRYPTOGRAMMIC NICOPTIC CAPITAL LETTER OLD COPT" + - "IC OOUCOPTIC SMALL LETTER OLD COPTIC OOUCOPTIC CAPITAL LETTER SAMPICOPTI" + - "C SMALL LETTER SAMPICOPTIC CAPITAL LETTER CROSSED SHEICOPTIC SMALL LETTE" + - "R CROSSED SHEICOPTIC CAPITAL LETTER OLD COPTIC SHEICOPTIC SMALL LETTER O" + - "LD COPTIC SHEICOPTIC CAPITAL LETTER OLD COPTIC ESHCOPTIC SMALL LETTER OL" + - "D COPTIC ESHCOPTIC CAPITAL LETTER AKHMIMIC KHEICOPTIC SMALL LETTER AKHMI" + - "MIC KHEICOPTIC CAPITAL LETTER DIALECT-P HORICOPTIC SMALL LETTER DIALECT-" + - "P HORICOPTIC CAPITAL LETTER OLD COPTIC HORICOPTIC SMALL LETTER OLD COPTI" + - "C HORICOPTIC CAPITAL LETTER OLD COPTIC HACOPTIC SMALL LETTER OLD COPTIC " + - "HACOPTIC CAPITAL LETTER L-SHAPED HACOPTIC SMALL LETTER L-SHAPED HACOPTIC" + - " CAPITAL LETTER OLD COPTIC HEICOPTIC SMALL LETTER OLD COPTIC HEICOPTIC C" + - "APITAL LETTER OLD COPTIC HATCOPTIC SMALL LETTER OLD COPTIC HATCOPTIC CAP" + - "ITAL LETTER OLD COPTIC GANGIACOPTIC SMALL LETTER OLD COPTIC GANGIACOPTIC" + - " CAPITAL LETTER OLD COPTIC DJACOPTIC SMALL LETTER OLD COPTIC DJACOPTIC C" + - "APITAL LETTER OLD COPTIC SHIMACOPTIC SMALL LETTER OLD COPTIC SHIMACOPTIC" + - " CAPITAL LETTER OLD NUBIAN SHIMACOPTIC SMALL LETTER OLD NUBIAN SHIMACOPT" + - "IC CAPITAL LETTER OLD NUBIAN NGICOPTIC SMALL LETTER OLD NUBIAN NGICOPTIC" + - " CAPITAL LETTER OLD NUBIAN NYICOPTIC SMALL LETTER OLD NUBIAN NYICOPTIC C" + - "APITAL LETTER OLD NUBIAN WAUCOPTIC SMALL LETTER OLD NUBIAN WAUCOPTIC SYM" + - "BOL KAICOPTIC SYMBOL MI ROCOPTIC SYMBOL PI ROCOPTIC SYMBOL STAUROSCOPTIC" + - " SYMBOL TAU ROCOPTIC SYMBOL KHI ROCOPTIC SYMBOL SHIMA SIMACOPTIC CAPITAL" + - " LETTER CRYPTOGRAMMIC SHEICOPTIC SMALL LETTER CRYPTOGRAMMIC SHEICOPTIC C" + - "APITAL LETTER CRYPTOGRAMMIC GANGIACOPTIC SMALL LETTER CRYPTOGRAMMIC GANG" + - "IACOPTIC COMBINING NI ABOVECOPTIC COMBINING SPIRITUS ASPERCOPTIC COMBINI" + - "NG SPIRITUS LENISCOPTIC CAPITAL LETTER BOHAIRIC KHEICOPTIC SMALL LETTER " + - "BOHAIRIC KHEICOPTIC OLD NUBIAN FULL STOPCOPTIC OLD NUBIAN DIRECT QUESTIO" + - "N MARKCOPTIC OLD NUBIAN INDIRECT QUESTION MARKCOPTIC OLD NUBIAN VERSE DI" + - "VIDERCOPTIC FRACTION ONE HALFCOPTIC FULL STOPCOPTIC MORPHOLOGICAL DIVIDE" + - "RGEORGIAN SMALL LETTER ANGEORGIAN SMALL LETTER BANGEORGIAN SMALL LETTER " + - "GANGEORGIAN SMALL LETTER DONGEORGIAN SMALL LETTER ENGEORGIAN SMALL LETTE" + - "R VINGEORGIAN SMALL LETTER ZENGEORGIAN SMALL LETTER TANGEORGIAN SMALL LE" + - "TTER INGEORGIAN SMALL LETTER KANGEORGIAN SMALL LETTER LASGEORGIAN SMALL " + - "LETTER MANGEORGIAN SMALL LETTER NARGEORGIAN SMALL LETTER ONGEORGIAN SMAL" + - "L LETTER PARGEORGIAN SMALL LETTER ZHARGEORGIAN SMALL LETTER RAEGEORGIAN " + - "SMALL LETTER SANGEORGIAN SMALL LETTER TARGEORGIAN SMALL LETTER UNGEORGIA" + - "N SMALL LETTER PHARGEORGIAN SMALL LETTER KHARGEORGIAN SMALL LETTER GHANG" + - "EORGIAN SMALL LETTER QARGEORGIAN SMALL LETTER SHINGEORGIAN SMALL LETTER " + - "CHINGEORGIAN SMALL LETTER CANGEORGIAN SMALL LETTER JILGEORGIAN SMALL LET" + - "TER CILGEORGIAN SMALL LETTER CHARGEORGIAN SMALL LETTER XANGEORGIAN SMALL" + - " LETTER JHANGEORGIAN SMALL LETTER HAEGEORGIAN SMALL LETTER HEGEORGIAN SM" + - "ALL LETTER HIEGEORGIAN SMALL LETTER WEGEORGIAN SMALL LETTER HARGEORGIAN " + - "SMALL LETTER HOEGEORGIAN SMALL LETTER YNGEORGIAN SMALL LETTER AENTIFINAG" + - "H LETTER YATIFINAGH LETTER YABTIFINAGH LETTER YABHTIFINAGH LETTER YAGTIF" + - "INAGH LETTER YAGHHTIFINAGH LETTER BERBER ACADEMY YAJTIFINAGH LETTER YAJT" + - "IFINAGH LETTER YADTIFINAGH LETTER YADHTIFINAGH LETTER YADDTIFINAGH LETTE" + - "R YADDHTIFINAGH LETTER YEYTIFINAGH LETTER YAFTIFINAGH LETTER YAKTIFINAGH" + - " LETTER TUAREG YAKTIFINAGH LETTER YAKHHTIFINAGH LETTER YAHTIFINAGH LETTE" + - "R BERBER ACADEMY YAHTIFINAGH LETTER TUAREG YAHTIFINAGH LETTER YAHHTIFINA" + - "GH LETTER YAATIFINAGH LETTER YAKHTIFINAGH LETTER TUAREG YAKHTIFINAGH LET") + ("" + - "TER YAQTIFINAGH LETTER TUAREG YAQTIFINAGH LETTER YITIFINAGH LETTER YAZHT" + - "IFINAGH LETTER AHAGGAR YAZHTIFINAGH LETTER TUAREG YAZHTIFINAGH LETTER YA" + - "LTIFINAGH LETTER YAMTIFINAGH LETTER YANTIFINAGH LETTER TUAREG YAGNTIFINA" + - "GH LETTER TUAREG YANGTIFINAGH LETTER YAPTIFINAGH LETTER YUTIFINAGH LETTE" + - "R YARTIFINAGH LETTER YARRTIFINAGH LETTER YAGHTIFINAGH LETTER TUAREG YAGH" + - "TIFINAGH LETTER AYER YAGHTIFINAGH LETTER YASTIFINAGH LETTER YASSTIFINAGH" + - " LETTER YASHTIFINAGH LETTER YATTIFINAGH LETTER YATHTIFINAGH LETTER YACHT" + - "IFINAGH LETTER YATTTIFINAGH LETTER YAVTIFINAGH LETTER YAWTIFINAGH LETTER" + - " YAYTIFINAGH LETTER YAZTIFINAGH LETTER TAWELLEMET YAZTIFINAGH LETTER YAZ" + - "ZTIFINAGH LETTER YETIFINAGH LETTER YOTIFINAGH MODIFIER LETTER LABIALIZAT" + - "ION MARKTIFINAGH SEPARATOR MARKTIFINAGH CONSONANT JOINERETHIOPIC SYLLABL" + - "E LOAETHIOPIC SYLLABLE MOAETHIOPIC SYLLABLE ROAETHIOPIC SYLLABLE SOAETHI" + - "OPIC SYLLABLE SHOAETHIOPIC SYLLABLE BOAETHIOPIC SYLLABLE TOAETHIOPIC SYL" + - "LABLE COAETHIOPIC SYLLABLE NOAETHIOPIC SYLLABLE NYOAETHIOPIC SYLLABLE GL" + - "OTTAL OAETHIOPIC SYLLABLE ZOAETHIOPIC SYLLABLE DOAETHIOPIC SYLLABLE DDOA" + - "ETHIOPIC SYLLABLE JOAETHIOPIC SYLLABLE THOAETHIOPIC SYLLABLE CHOAETHIOPI" + - "C SYLLABLE PHOAETHIOPIC SYLLABLE POAETHIOPIC SYLLABLE GGWAETHIOPIC SYLLA" + - "BLE GGWIETHIOPIC SYLLABLE GGWEEETHIOPIC SYLLABLE GGWEETHIOPIC SYLLABLE S" + - "SAETHIOPIC SYLLABLE SSUETHIOPIC SYLLABLE SSIETHIOPIC SYLLABLE SSAAETHIOP" + - "IC SYLLABLE SSEEETHIOPIC SYLLABLE SSEETHIOPIC SYLLABLE SSOETHIOPIC SYLLA" + - "BLE CCAETHIOPIC SYLLABLE CCUETHIOPIC SYLLABLE CCIETHIOPIC SYLLABLE CCAAE" + - "THIOPIC SYLLABLE CCEEETHIOPIC SYLLABLE CCEETHIOPIC SYLLABLE CCOETHIOPIC " + - "SYLLABLE ZZAETHIOPIC SYLLABLE ZZUETHIOPIC SYLLABLE ZZIETHIOPIC SYLLABLE " + - "ZZAAETHIOPIC SYLLABLE ZZEEETHIOPIC SYLLABLE ZZEETHIOPIC SYLLABLE ZZOETHI" + - "OPIC SYLLABLE CCHAETHIOPIC SYLLABLE CCHUETHIOPIC SYLLABLE CCHIETHIOPIC S" + - "YLLABLE CCHAAETHIOPIC SYLLABLE CCHEEETHIOPIC SYLLABLE CCHEETHIOPIC SYLLA" + - "BLE CCHOETHIOPIC SYLLABLE QYAETHIOPIC SYLLABLE QYUETHIOPIC SYLLABLE QYIE" + - "THIOPIC SYLLABLE QYAAETHIOPIC SYLLABLE QYEEETHIOPIC SYLLABLE QYEETHIOPIC" + - " SYLLABLE QYOETHIOPIC SYLLABLE KYAETHIOPIC SYLLABLE KYUETHIOPIC SYLLABLE" + - " KYIETHIOPIC SYLLABLE KYAAETHIOPIC SYLLABLE KYEEETHIOPIC SYLLABLE KYEETH" + - "IOPIC SYLLABLE KYOETHIOPIC SYLLABLE XYAETHIOPIC SYLLABLE XYUETHIOPIC SYL" + - "LABLE XYIETHIOPIC SYLLABLE XYAAETHIOPIC SYLLABLE XYEEETHIOPIC SYLLABLE X" + - "YEETHIOPIC SYLLABLE XYOETHIOPIC SYLLABLE GYAETHIOPIC SYLLABLE GYUETHIOPI" + - "C SYLLABLE GYIETHIOPIC SYLLABLE GYAAETHIOPIC SYLLABLE GYEEETHIOPIC SYLLA" + - "BLE GYEETHIOPIC SYLLABLE GYOCOMBINING CYRILLIC LETTER BECOMBINING CYRILL" + - "IC LETTER VECOMBINING CYRILLIC LETTER GHECOMBINING CYRILLIC LETTER DECOM" + - "BINING CYRILLIC LETTER ZHECOMBINING CYRILLIC LETTER ZECOMBINING CYRILLIC" + - " LETTER KACOMBINING CYRILLIC LETTER ELCOMBINING CYRILLIC LETTER EMCOMBIN" + - "ING CYRILLIC LETTER ENCOMBINING CYRILLIC LETTER OCOMBINING CYRILLIC LETT" + - "ER PECOMBINING CYRILLIC LETTER ERCOMBINING CYRILLIC LETTER ESCOMBINING C" + - "YRILLIC LETTER TECOMBINING CYRILLIC LETTER HACOMBINING CYRILLIC LETTER T" + - "SECOMBINING CYRILLIC LETTER CHECOMBINING CYRILLIC LETTER SHACOMBINING CY" + - "RILLIC LETTER SHCHACOMBINING CYRILLIC LETTER FITACOMBINING CYRILLIC LETT" + - "ER ES-TECOMBINING CYRILLIC LETTER ACOMBINING CYRILLIC LETTER IECOMBINING" + - " CYRILLIC LETTER DJERVCOMBINING CYRILLIC LETTER MONOGRAPH UKCOMBINING CY" + - "RILLIC LETTER YATCOMBINING CYRILLIC LETTER YUCOMBINING CYRILLIC LETTER I" + - "OTIFIED ACOMBINING CYRILLIC LETTER LITTLE YUSCOMBINING CYRILLIC LETTER B" + - "IG YUSCOMBINING CYRILLIC LETTER IOTIFIED BIG YUSRIGHT ANGLE SUBSTITUTION" + - " MARKERRIGHT ANGLE DOTTED SUBSTITUTION MARKERLEFT SUBSTITUTION BRACKETRI" + - "GHT SUBSTITUTION BRACKETLEFT DOTTED SUBSTITUTION BRACKETRIGHT DOTTED SUB" + - "STITUTION BRACKETRAISED INTERPOLATION MARKERRAISED DOTTED INTERPOLATION " + - "MARKERDOTTED TRANSPOSITION MARKERLEFT TRANSPOSITION BRACKETRIGHT TRANSPO" + - "SITION BRACKETRAISED SQUARELEFT RAISED OMISSION BRACKETRIGHT RAISED OMIS" + - "SION BRACKETEDITORIAL CORONISPARAGRAPHOSFORKED PARAGRAPHOSREVERSED FORKE" + - "D PARAGRAPHOSHYPODIASTOLEDOTTED OBELOSDOWNWARDS ANCORAUPWARDS ANCORADOTT" + - "ED RIGHT-POINTING ANGLEDOUBLE OBLIQUE HYPHENINVERTED INTERROBANGPALM BRA" + - "NCHHYPHEN WITH DIAERESISTILDE WITH RING ABOVELEFT LOW PARAPHRASE BRACKET" + - "RIGHT LOW PARAPHRASE BRACKETTILDE WITH DOT ABOVETILDE WITH DOT BELOWLEFT" + - " VERTICAL BAR WITH QUILLRIGHT VERTICAL BAR WITH QUILLTOP LEFT HALF BRACK" + - "ETTOP RIGHT HALF BRACKETBOTTOM LEFT HALF BRACKETBOTTOM RIGHT HALF BRACKE" + - "TLEFT SIDEWAYS U BRACKETRIGHT SIDEWAYS U BRACKETLEFT DOUBLE PARENTHESISR" + - "IGHT DOUBLE PARENTHESISTWO DOTS OVER ONE DOT PUNCTUATIONONE DOT OVER TWO" + - " DOTS PUNCTUATIONSQUARED FOUR DOT PUNCTUATIONFIVE DOT MARKREVERSED QUEST" + - "ION MARKVERTICAL TILDERING POINTWORD SEPARATOR MIDDLE DOTTURNED COMMARAI") + ("" + - "SED DOTRAISED COMMATURNED SEMICOLONDAGGER WITH LEFT GUARDDAGGER WITH RIG" + - "HT GUARDTURNED DAGGERTOP HALF SECTION SIGNTWO-EM DASHTHREE-EM DASHSTENOG" + - "RAPHIC FULL STOPVERTICAL SIX DOTSWIGGLY VERTICAL LINECAPITULUMDOUBLE HYP" + - "HENREVERSED COMMADOUBLE LOW-REVERSED-9 QUOTATION MARKDASH WITH LEFT UPTU" + - "RNDOUBLE SUSPENSION MARKCJK RADICAL REPEATCJK RADICAL CLIFFCJK RADICAL S" + - "ECOND ONECJK RADICAL SECOND TWOCJK RADICAL SECOND THREECJK RADICAL PERSO" + - "NCJK RADICAL BOXCJK RADICAL TABLECJK RADICAL KNIFE ONECJK RADICAL KNIFE " + - "TWOCJK RADICAL DIVINATIONCJK RADICAL SEALCJK RADICAL SMALL ONECJK RADICA" + - "L SMALL TWOCJK RADICAL LAME ONECJK RADICAL LAME TWOCJK RADICAL LAME THRE" + - "ECJK RADICAL LAME FOURCJK RADICAL SNAKECJK RADICAL THREADCJK RADICAL SNO" + - "UT ONECJK RADICAL SNOUT TWOCJK RADICAL HEART ONECJK RADICAL HEART TWOCJK" + - " RADICAL HANDCJK RADICAL RAPCJK RADICAL CHOKECJK RADICAL SUNCJK RADICAL " + - "MOONCJK RADICAL DEATHCJK RADICAL MOTHERCJK RADICAL CIVILIANCJK RADICAL W" + - "ATER ONECJK RADICAL WATER TWOCJK RADICAL FIRECJK RADICAL PAW ONECJK RADI" + - "CAL PAW TWOCJK RADICAL SIMPLIFIED HALF TREE TRUNKCJK RADICAL COWCJK RADI" + - "CAL DOGCJK RADICAL JADECJK RADICAL BOLT OF CLOTHCJK RADICAL EYECJK RADIC" + - "AL SPIRIT ONECJK RADICAL SPIRIT TWOCJK RADICAL BAMBOOCJK RADICAL SILKCJK" + - " RADICAL C-SIMPLIFIED SILKCJK RADICAL NET ONECJK RADICAL NET TWOCJK RADI" + - "CAL NET THREECJK RADICAL NET FOURCJK RADICAL MESHCJK RADICAL SHEEPCJK RA" + - "DICAL RAMCJK RADICAL EWECJK RADICAL OLDCJK RADICAL BRUSH ONECJK RADICAL " + - "BRUSH TWOCJK RADICAL MEATCJK RADICAL MORTARCJK RADICAL GRASS ONECJK RADI" + - "CAL GRASS TWOCJK RADICAL GRASS THREECJK RADICAL TIGERCJK RADICAL CLOTHES" + - "CJK RADICAL WEST ONECJK RADICAL WEST TWOCJK RADICAL C-SIMPLIFIED SEECJK " + - "RADICAL SIMPLIFIED HORNCJK RADICAL HORNCJK RADICAL C-SIMPLIFIED SPEECHCJ" + - "K RADICAL C-SIMPLIFIED SHELLCJK RADICAL FOOTCJK RADICAL C-SIMPLIFIED CAR" + - "TCJK RADICAL SIMPLIFIED WALKCJK RADICAL WALK ONECJK RADICAL WALK TWOCJK " + - "RADICAL CITYCJK RADICAL C-SIMPLIFIED GOLDCJK RADICAL LONG ONECJK RADICAL" + - " LONG TWOCJK RADICAL C-SIMPLIFIED LONGCJK RADICAL C-SIMPLIFIED GATECJK R" + - "ADICAL MOUND ONECJK RADICAL MOUND TWOCJK RADICAL RAINCJK RADICAL BLUECJK" + - " RADICAL C-SIMPLIFIED TANNED LEATHERCJK RADICAL C-SIMPLIFIED LEAFCJK RAD" + - "ICAL C-SIMPLIFIED WINDCJK RADICAL C-SIMPLIFIED FLYCJK RADICAL EAT ONECJK" + - " RADICAL EAT TWOCJK RADICAL EAT THREECJK RADICAL C-SIMPLIFIED EATCJK RAD" + - "ICAL HEADCJK RADICAL C-SIMPLIFIED HORSECJK RADICAL BONECJK RADICAL GHOST" + - "CJK RADICAL C-SIMPLIFIED FISHCJK RADICAL C-SIMPLIFIED BIRDCJK RADICAL C-" + - "SIMPLIFIED SALTCJK RADICAL SIMPLIFIED WHEATCJK RADICAL SIMPLIFIED YELLOW" + - "CJK RADICAL C-SIMPLIFIED FROGCJK RADICAL J-SIMPLIFIED EVENCJK RADICAL C-" + - "SIMPLIFIED EVENCJK RADICAL J-SIMPLIFIED TOOTHCJK RADICAL C-SIMPLIFIED TO" + - "OTHCJK RADICAL J-SIMPLIFIED DRAGONCJK RADICAL C-SIMPLIFIED DRAGONCJK RAD" + - "ICAL TURTLECJK RADICAL J-SIMPLIFIED TURTLECJK RADICAL C-SIMPLIFIED TURTL" + - "EKANGXI RADICAL ONEKANGXI RADICAL LINEKANGXI RADICAL DOTKANGXI RADICAL S" + - "LASHKANGXI RADICAL SECONDKANGXI RADICAL HOOKKANGXI RADICAL TWOKANGXI RAD" + - "ICAL LIDKANGXI RADICAL MANKANGXI RADICAL LEGSKANGXI RADICAL ENTERKANGXI " + - "RADICAL EIGHTKANGXI RADICAL DOWN BOXKANGXI RADICAL COVERKANGXI RADICAL I" + - "CEKANGXI RADICAL TABLEKANGXI RADICAL OPEN BOXKANGXI RADICAL KNIFEKANGXI " + - "RADICAL POWERKANGXI RADICAL WRAPKANGXI RADICAL SPOONKANGXI RADICAL RIGHT" + - " OPEN BOXKANGXI RADICAL HIDING ENCLOSUREKANGXI RADICAL TENKANGXI RADICAL" + - " DIVINATIONKANGXI RADICAL SEALKANGXI RADICAL CLIFFKANGXI RADICAL PRIVATE" + - "KANGXI RADICAL AGAINKANGXI RADICAL MOUTHKANGXI RADICAL ENCLOSUREKANGXI R" + - "ADICAL EARTHKANGXI RADICAL SCHOLARKANGXI RADICAL GOKANGXI RADICAL GO SLO" + - "WLYKANGXI RADICAL EVENINGKANGXI RADICAL BIGKANGXI RADICAL WOMANKANGXI RA" + - "DICAL CHILDKANGXI RADICAL ROOFKANGXI RADICAL INCHKANGXI RADICAL SMALLKAN" + - "GXI RADICAL LAMEKANGXI RADICAL CORPSEKANGXI RADICAL SPROUTKANGXI RADICAL" + - " MOUNTAINKANGXI RADICAL RIVERKANGXI RADICAL WORKKANGXI RADICAL ONESELFKA" + - "NGXI RADICAL TURBANKANGXI RADICAL DRYKANGXI RADICAL SHORT THREADKANGXI R" + - "ADICAL DOTTED CLIFFKANGXI RADICAL LONG STRIDEKANGXI RADICAL TWO HANDSKAN" + - "GXI RADICAL SHOOTKANGXI RADICAL BOWKANGXI RADICAL SNOUTKANGXI RADICAL BR" + - "ISTLEKANGXI RADICAL STEPKANGXI RADICAL HEARTKANGXI RADICAL HALBERDKANGXI" + - " RADICAL DOORKANGXI RADICAL HANDKANGXI RADICAL BRANCHKANGXI RADICAL RAPK" + - "ANGXI RADICAL SCRIPTKANGXI RADICAL DIPPERKANGXI RADICAL AXEKANGXI RADICA" + - "L SQUAREKANGXI RADICAL NOTKANGXI RADICAL SUNKANGXI RADICAL SAYKANGXI RAD" + - "ICAL MOONKANGXI RADICAL TREEKANGXI RADICAL LACKKANGXI RADICAL STOPKANGXI" + - " RADICAL DEATHKANGXI RADICAL WEAPONKANGXI RADICAL DO NOTKANGXI RADICAL C" + - "OMPAREKANGXI RADICAL FURKANGXI RADICAL CLANKANGXI RADICAL STEAMKANGXI RA" + - "DICAL WATERKANGXI RADICAL FIREKANGXI RADICAL CLAWKANGXI RADICAL FATHERKA") + ("" + - "NGXI RADICAL DOUBLE XKANGXI RADICAL HALF TREE TRUNKKANGXI RADICAL SLICEK" + - "ANGXI RADICAL FANGKANGXI RADICAL COWKANGXI RADICAL DOGKANGXI RADICAL PRO" + - "FOUNDKANGXI RADICAL JADEKANGXI RADICAL MELONKANGXI RADICAL TILEKANGXI RA" + - "DICAL SWEETKANGXI RADICAL LIFEKANGXI RADICAL USEKANGXI RADICAL FIELDKANG" + - "XI RADICAL BOLT OF CLOTHKANGXI RADICAL SICKNESSKANGXI RADICAL DOTTED TEN" + - "TKANGXI RADICAL WHITEKANGXI RADICAL SKINKANGXI RADICAL DISHKANGXI RADICA" + - "L EYEKANGXI RADICAL SPEARKANGXI RADICAL ARROWKANGXI RADICAL STONEKANGXI " + - "RADICAL SPIRITKANGXI RADICAL TRACKKANGXI RADICAL GRAINKANGXI RADICAL CAV" + - "EKANGXI RADICAL STANDKANGXI RADICAL BAMBOOKANGXI RADICAL RICEKANGXI RADI" + - "CAL SILKKANGXI RADICAL JARKANGXI RADICAL NETKANGXI RADICAL SHEEPKANGXI R" + - "ADICAL FEATHERKANGXI RADICAL OLDKANGXI RADICAL ANDKANGXI RADICAL PLOWKAN" + - "GXI RADICAL EARKANGXI RADICAL BRUSHKANGXI RADICAL MEATKANGXI RADICAL MIN" + - "ISTERKANGXI RADICAL SELFKANGXI RADICAL ARRIVEKANGXI RADICAL MORTARKANGXI" + - " RADICAL TONGUEKANGXI RADICAL OPPOSEKANGXI RADICAL BOATKANGXI RADICAL ST" + - "OPPINGKANGXI RADICAL COLORKANGXI RADICAL GRASSKANGXI RADICAL TIGERKANGXI" + - " RADICAL INSECTKANGXI RADICAL BLOODKANGXI RADICAL WALK ENCLOSUREKANGXI R" + - "ADICAL CLOTHESKANGXI RADICAL WESTKANGXI RADICAL SEEKANGXI RADICAL HORNKA" + - "NGXI RADICAL SPEECHKANGXI RADICAL VALLEYKANGXI RADICAL BEANKANGXI RADICA" + - "L PIGKANGXI RADICAL BADGERKANGXI RADICAL SHELLKANGXI RADICAL REDKANGXI R" + - "ADICAL RUNKANGXI RADICAL FOOTKANGXI RADICAL BODYKANGXI RADICAL CARTKANGX" + - "I RADICAL BITTERKANGXI RADICAL MORNINGKANGXI RADICAL WALKKANGXI RADICAL " + - "CITYKANGXI RADICAL WINEKANGXI RADICAL DISTINGUISHKANGXI RADICAL VILLAGEK" + - "ANGXI RADICAL GOLDKANGXI RADICAL LONGKANGXI RADICAL GATEKANGXI RADICAL M" + - "OUNDKANGXI RADICAL SLAVEKANGXI RADICAL SHORT TAILED BIRDKANGXI RADICAL R" + - "AINKANGXI RADICAL BLUEKANGXI RADICAL WRONGKANGXI RADICAL FACEKANGXI RADI" + - "CAL LEATHERKANGXI RADICAL TANNED LEATHERKANGXI RADICAL LEEKKANGXI RADICA" + - "L SOUNDKANGXI RADICAL LEAFKANGXI RADICAL WINDKANGXI RADICAL FLYKANGXI RA" + - "DICAL EATKANGXI RADICAL HEADKANGXI RADICAL FRAGRANTKANGXI RADICAL HORSEK" + - "ANGXI RADICAL BONEKANGXI RADICAL TALLKANGXI RADICAL HAIRKANGXI RADICAL F" + - "IGHTKANGXI RADICAL SACRIFICIAL WINEKANGXI RADICAL CAULDRONKANGXI RADICAL" + - " GHOSTKANGXI RADICAL FISHKANGXI RADICAL BIRDKANGXI RADICAL SALTKANGXI RA" + - "DICAL DEERKANGXI RADICAL WHEATKANGXI RADICAL HEMPKANGXI RADICAL YELLOWKA" + - "NGXI RADICAL MILLETKANGXI RADICAL BLACKKANGXI RADICAL EMBROIDERYKANGXI R" + - "ADICAL FROGKANGXI RADICAL TRIPODKANGXI RADICAL DRUMKANGXI RADICAL RATKAN" + - "GXI RADICAL NOSEKANGXI RADICAL EVENKANGXI RADICAL TOOTHKANGXI RADICAL DR" + - "AGONKANGXI RADICAL TURTLEKANGXI RADICAL FLUTEIDEOGRAPHIC DESCRIPTION CHA" + - "RACTER LEFT TO RIGHTIDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOWIDEO" + - "GRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHTIDEOGRAPHIC DESCRI" + - "PTION CHARACTER ABOVE TO MIDDLE AND BELOWIDEOGRAPHIC DESCRIPTION CHARACT" + - "ER FULL SURROUNDIDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVEIDE" + - "OGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOWIDEOGRAPHIC DESCRIPTIO" + - "N CHARACTER SURROUND FROM LEFTIDEOGRAPHIC DESCRIPTION CHARACTER SURROUND" + - " FROM UPPER LEFTIDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RI" + - "GHTIDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFTIDEOGRAPHIC" + - " DESCRIPTION CHARACTER OVERLAIDIDEOGRAPHIC SPACEIDEOGRAPHIC COMMAIDEOGRA" + - "PHIC FULL STOPDITTO MARKJAPANESE INDUSTRIAL STANDARD SYMBOLIDEOGRAPHIC I" + - "TERATION MARKIDEOGRAPHIC CLOSING MARKIDEOGRAPHIC NUMBER ZEROLEFT ANGLE B" + - "RACKETRIGHT ANGLE BRACKETLEFT DOUBLE ANGLE BRACKETRIGHT DOUBLE ANGLE BRA" + - "CKETLEFT CORNER BRACKETRIGHT CORNER BRACKETLEFT WHITE CORNER BRACKETRIGH" + - "T WHITE CORNER BRACKETLEFT BLACK LENTICULAR BRACKETRIGHT BLACK LENTICULA" + - "R BRACKETPOSTAL MARKGETA MARKLEFT TORTOISE SHELL BRACKETRIGHT TORTOISE S" + - "HELL BRACKETLEFT WHITE LENTICULAR BRACKETRIGHT WHITE LENTICULAR BRACKETL" + - "EFT WHITE TORTOISE SHELL BRACKETRIGHT WHITE TORTOISE SHELL BRACKETLEFT W" + - "HITE SQUARE BRACKETRIGHT WHITE SQUARE BRACKETWAVE DASHREVERSED DOUBLE PR" + - "IME QUOTATION MARKDOUBLE PRIME QUOTATION MARKLOW DOUBLE PRIME QUOTATION " + - "MARKPOSTAL MARK FACEHANGZHOU NUMERAL ONEHANGZHOU NUMERAL TWOHANGZHOU NUM" + - "ERAL THREEHANGZHOU NUMERAL FOURHANGZHOU NUMERAL FIVEHANGZHOU NUMERAL SIX" + - "HANGZHOU NUMERAL SEVENHANGZHOU NUMERAL EIGHTHANGZHOU NUMERAL NINEIDEOGRA" + - "PHIC LEVEL TONE MARKIDEOGRAPHIC RISING TONE MARKIDEOGRAPHIC DEPARTING TO" + - "NE MARKIDEOGRAPHIC ENTERING TONE MARKHANGUL SINGLE DOT TONE MARKHANGUL D" + - "OUBLE DOT TONE MARKWAVY DASHVERTICAL KANA REPEAT MARKVERTICAL KANA REPEA" + - "T WITH VOICED SOUND MARKVERTICAL KANA REPEAT MARK UPPER HALFVERTICAL KAN" + - "A REPEAT WITH VOICED SOUND MARK UPPER HALFVERTICAL KANA REPEAT MARK LOWE" + - "R HALFCIRCLED POSTAL MARKIDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBO") + ("" + - "LHANGZHOU NUMERAL TENHANGZHOU NUMERAL TWENTYHANGZHOU NUMERAL THIRTYVERTI" + - "CAL IDEOGRAPHIC ITERATION MARKMASU MARKPART ALTERNATION MARKIDEOGRAPHIC " + - "VARIATION INDICATORIDEOGRAPHIC HALF FILL SPACEHIRAGANA LETTER SMALL AHIR" + - "AGANA LETTER AHIRAGANA LETTER SMALL IHIRAGANA LETTER IHIRAGANA LETTER SM" + - "ALL UHIRAGANA LETTER UHIRAGANA LETTER SMALL EHIRAGANA LETTER EHIRAGANA L" + - "ETTER SMALL OHIRAGANA LETTER OHIRAGANA LETTER KAHIRAGANA LETTER GAHIRAGA" + - "NA LETTER KIHIRAGANA LETTER GIHIRAGANA LETTER KUHIRAGANA LETTER GUHIRAGA" + - "NA LETTER KEHIRAGANA LETTER GEHIRAGANA LETTER KOHIRAGANA LETTER GOHIRAGA" + - "NA LETTER SAHIRAGANA LETTER ZAHIRAGANA LETTER SIHIRAGANA LETTER ZIHIRAGA" + - "NA LETTER SUHIRAGANA LETTER ZUHIRAGANA LETTER SEHIRAGANA LETTER ZEHIRAGA" + - "NA LETTER SOHIRAGANA LETTER ZOHIRAGANA LETTER TAHIRAGANA LETTER DAHIRAGA" + - "NA LETTER TIHIRAGANA LETTER DIHIRAGANA LETTER SMALL TUHIRAGANA LETTER TU" + - "HIRAGANA LETTER DUHIRAGANA LETTER TEHIRAGANA LETTER DEHIRAGANA LETTER TO" + - "HIRAGANA LETTER DOHIRAGANA LETTER NAHIRAGANA LETTER NIHIRAGANA LETTER NU" + - "HIRAGANA LETTER NEHIRAGANA LETTER NOHIRAGANA LETTER HAHIRAGANA LETTER BA" + - "HIRAGANA LETTER PAHIRAGANA LETTER HIHIRAGANA LETTER BIHIRAGANA LETTER PI" + - "HIRAGANA LETTER HUHIRAGANA LETTER BUHIRAGANA LETTER PUHIRAGANA LETTER HE" + - "HIRAGANA LETTER BEHIRAGANA LETTER PEHIRAGANA LETTER HOHIRAGANA LETTER BO" + - "HIRAGANA LETTER POHIRAGANA LETTER MAHIRAGANA LETTER MIHIRAGANA LETTER MU" + - "HIRAGANA LETTER MEHIRAGANA LETTER MOHIRAGANA LETTER SMALL YAHIRAGANA LET" + - "TER YAHIRAGANA LETTER SMALL YUHIRAGANA LETTER YUHIRAGANA LETTER SMALL YO" + - "HIRAGANA LETTER YOHIRAGANA LETTER RAHIRAGANA LETTER RIHIRAGANA LETTER RU" + - "HIRAGANA LETTER REHIRAGANA LETTER ROHIRAGANA LETTER SMALL WAHIRAGANA LET" + - "TER WAHIRAGANA LETTER WIHIRAGANA LETTER WEHIRAGANA LETTER WOHIRAGANA LET" + - "TER NHIRAGANA LETTER VUHIRAGANA LETTER SMALL KAHIRAGANA LETTER SMALL KEC" + - "OMBINING KATAKANA-HIRAGANA VOICED SOUND MARKCOMBINING KATAKANA-HIRAGANA " + - "SEMI-VOICED SOUND MARKKATAKANA-HIRAGANA VOICED SOUND MARKKATAKANA-HIRAGA" + - "NA SEMI-VOICED SOUND MARKHIRAGANA ITERATION MARKHIRAGANA VOICED ITERATIO" + - "N MARKHIRAGANA DIGRAPH YORIKATAKANA-HIRAGANA DOUBLE HYPHENKATAKANA LETTE" + - "R SMALL AKATAKANA LETTER AKATAKANA LETTER SMALL IKATAKANA LETTER IKATAKA" + - "NA LETTER SMALL UKATAKANA LETTER UKATAKANA LETTER SMALL EKATAKANA LETTER" + - " EKATAKANA LETTER SMALL OKATAKANA LETTER OKATAKANA LETTER KAKATAKANA LET" + - "TER GAKATAKANA LETTER KIKATAKANA LETTER GIKATAKANA LETTER KUKATAKANA LET" + - "TER GUKATAKANA LETTER KEKATAKANA LETTER GEKATAKANA LETTER KOKATAKANA LET" + - "TER GOKATAKANA LETTER SAKATAKANA LETTER ZAKATAKANA LETTER SIKATAKANA LET" + - "TER ZIKATAKANA LETTER SUKATAKANA LETTER ZUKATAKANA LETTER SEKATAKANA LET" + - "TER ZEKATAKANA LETTER SOKATAKANA LETTER ZOKATAKANA LETTER TAKATAKANA LET" + - "TER DAKATAKANA LETTER TIKATAKANA LETTER DIKATAKANA LETTER SMALL TUKATAKA" + - "NA LETTER TUKATAKANA LETTER DUKATAKANA LETTER TEKATAKANA LETTER DEKATAKA" + - "NA LETTER TOKATAKANA LETTER DOKATAKANA LETTER NAKATAKANA LETTER NIKATAKA" + - "NA LETTER NUKATAKANA LETTER NEKATAKANA LETTER NOKATAKANA LETTER HAKATAKA" + - "NA LETTER BAKATAKANA LETTER PAKATAKANA LETTER HIKATAKANA LETTER BIKATAKA" + - "NA LETTER PIKATAKANA LETTER HUKATAKANA LETTER BUKATAKANA LETTER PUKATAKA" + - "NA LETTER HEKATAKANA LETTER BEKATAKANA LETTER PEKATAKANA LETTER HOKATAKA" + - "NA LETTER BOKATAKANA LETTER POKATAKANA LETTER MAKATAKANA LETTER MIKATAKA" + - "NA LETTER MUKATAKANA LETTER MEKATAKANA LETTER MOKATAKANA LETTER SMALL YA" + - "KATAKANA LETTER YAKATAKANA LETTER SMALL YUKATAKANA LETTER YUKATAKANA LET" + - "TER SMALL YOKATAKANA LETTER YOKATAKANA LETTER RAKATAKANA LETTER RIKATAKA" + - "NA LETTER RUKATAKANA LETTER REKATAKANA LETTER ROKATAKANA LETTER SMALL WA" + - "KATAKANA LETTER WAKATAKANA LETTER WIKATAKANA LETTER WEKATAKANA LETTER WO" + - "KATAKANA LETTER NKATAKANA LETTER VUKATAKANA LETTER SMALL KAKATAKANA LETT" + - "ER SMALL KEKATAKANA LETTER VAKATAKANA LETTER VIKATAKANA LETTER VEKATAKAN" + - "A LETTER VOKATAKANA MIDDLE DOTKATAKANA-HIRAGANA PROLONGED SOUND MARKKATA" + - "KANA ITERATION MARKKATAKANA VOICED ITERATION MARKKATAKANA DIGRAPH KOTOBO" + - "POMOFO LETTER BBOPOMOFO LETTER PBOPOMOFO LETTER MBOPOMOFO LETTER FBOPOMO" + - "FO LETTER DBOPOMOFO LETTER TBOPOMOFO LETTER NBOPOMOFO LETTER LBOPOMOFO L" + - "ETTER GBOPOMOFO LETTER KBOPOMOFO LETTER HBOPOMOFO LETTER JBOPOMOFO LETTE" + - "R QBOPOMOFO LETTER XBOPOMOFO LETTER ZHBOPOMOFO LETTER CHBOPOMOFO LETTER " + - "SHBOPOMOFO LETTER RBOPOMOFO LETTER ZBOPOMOFO LETTER CBOPOMOFO LETTER SBO" + - "POMOFO LETTER ABOPOMOFO LETTER OBOPOMOFO LETTER EBOPOMOFO LETTER EHBOPOM" + - "OFO LETTER AIBOPOMOFO LETTER EIBOPOMOFO LETTER AUBOPOMOFO LETTER OUBOPOM" + - "OFO LETTER ANBOPOMOFO LETTER ENBOPOMOFO LETTER ANGBOPOMOFO LETTER ENGBOP" + - "OMOFO LETTER ERBOPOMOFO LETTER IBOPOMOFO LETTER UBOPOMOFO LETTER IUBOPOM" + - "OFO LETTER VBOPOMOFO LETTER NGBOPOMOFO LETTER GNBOPOMOFO LETTER IHHANGUL") + ("" + - " LETTER KIYEOKHANGUL LETTER SSANGKIYEOKHANGUL LETTER KIYEOK-SIOSHANGUL L" + - "ETTER NIEUNHANGUL LETTER NIEUN-CIEUCHANGUL LETTER NIEUN-HIEUHHANGUL LETT" + - "ER TIKEUTHANGUL LETTER SSANGTIKEUTHANGUL LETTER RIEULHANGUL LETTER RIEUL" + - "-KIYEOKHANGUL LETTER RIEUL-MIEUMHANGUL LETTER RIEUL-PIEUPHANGUL LETTER R" + - "IEUL-SIOSHANGUL LETTER RIEUL-THIEUTHHANGUL LETTER RIEUL-PHIEUPHHANGUL LE" + - "TTER RIEUL-HIEUHHANGUL LETTER MIEUMHANGUL LETTER PIEUPHANGUL LETTER SSAN" + - "GPIEUPHANGUL LETTER PIEUP-SIOSHANGUL LETTER SIOSHANGUL LETTER SSANGSIOSH" + - "ANGUL LETTER IEUNGHANGUL LETTER CIEUCHANGUL LETTER SSANGCIEUCHANGUL LETT" + - "ER CHIEUCHHANGUL LETTER KHIEUKHHANGUL LETTER THIEUTHHANGUL LETTER PHIEUP" + - "HHANGUL LETTER HIEUHHANGUL LETTER AHANGUL LETTER AEHANGUL LETTER YAHANGU" + - "L LETTER YAEHANGUL LETTER EOHANGUL LETTER EHANGUL LETTER YEOHANGUL LETTE" + - "R YEHANGUL LETTER OHANGUL LETTER WAHANGUL LETTER WAEHANGUL LETTER OEHANG" + - "UL LETTER YOHANGUL LETTER UHANGUL LETTER WEOHANGUL LETTER WEHANGUL LETTE" + - "R WIHANGUL LETTER YUHANGUL LETTER EUHANGUL LETTER YIHANGUL LETTER IHANGU" + - "L FILLERHANGUL LETTER SSANGNIEUNHANGUL LETTER NIEUN-TIKEUTHANGUL LETTER " + - "NIEUN-SIOSHANGUL LETTER NIEUN-PANSIOSHANGUL LETTER RIEUL-KIYEOK-SIOSHANG" + - "UL LETTER RIEUL-TIKEUTHANGUL LETTER RIEUL-PIEUP-SIOSHANGUL LETTER RIEUL-" + - "PANSIOSHANGUL LETTER RIEUL-YEORINHIEUHHANGUL LETTER MIEUM-PIEUPHANGUL LE" + - "TTER MIEUM-SIOSHANGUL LETTER MIEUM-PANSIOSHANGUL LETTER KAPYEOUNMIEUMHAN" + - "GUL LETTER PIEUP-KIYEOKHANGUL LETTER PIEUP-TIKEUTHANGUL LETTER PIEUP-SIO" + - "S-KIYEOKHANGUL LETTER PIEUP-SIOS-TIKEUTHANGUL LETTER PIEUP-CIEUCHANGUL L" + - "ETTER PIEUP-THIEUTHHANGUL LETTER KAPYEOUNPIEUPHANGUL LETTER KAPYEOUNSSAN" + - "GPIEUPHANGUL LETTER SIOS-KIYEOKHANGUL LETTER SIOS-NIEUNHANGUL LETTER SIO" + - "S-TIKEUTHANGUL LETTER SIOS-PIEUPHANGUL LETTER SIOS-CIEUCHANGUL LETTER PA" + - "NSIOSHANGUL LETTER SSANGIEUNGHANGUL LETTER YESIEUNGHANGUL LETTER YESIEUN" + - "G-SIOSHANGUL LETTER YESIEUNG-PANSIOSHANGUL LETTER KAPYEOUNPHIEUPHHANGUL " + - "LETTER SSANGHIEUHHANGUL LETTER YEORINHIEUHHANGUL LETTER YO-YAHANGUL LETT" + - "ER YO-YAEHANGUL LETTER YO-IHANGUL LETTER YU-YEOHANGUL LETTER YU-YEHANGUL" + - " LETTER YU-IHANGUL LETTER ARAEAHANGUL LETTER ARAEAEIDEOGRAPHIC ANNOTATIO" + - "N LINKING MARKIDEOGRAPHIC ANNOTATION REVERSE MARKIDEOGRAPHIC ANNOTATION " + - "ONE MARKIDEOGRAPHIC ANNOTATION TWO MARKIDEOGRAPHIC ANNOTATION THREE MARK" + - "IDEOGRAPHIC ANNOTATION FOUR MARKIDEOGRAPHIC ANNOTATION TOP MARKIDEOGRAPH" + - "IC ANNOTATION MIDDLE MARKIDEOGRAPHIC ANNOTATION BOTTOM MARKIDEOGRAPHIC A" + - "NNOTATION FIRST MARKIDEOGRAPHIC ANNOTATION SECOND MARKIDEOGRAPHIC ANNOTA" + - "TION THIRD MARKIDEOGRAPHIC ANNOTATION FOURTH MARKIDEOGRAPHIC ANNOTATION " + - "HEAVEN MARKIDEOGRAPHIC ANNOTATION EARTH MARKIDEOGRAPHIC ANNOTATION MAN M" + - "ARKBOPOMOFO LETTER BUBOPOMOFO LETTER ZIBOPOMOFO LETTER JIBOPOMOFO LETTER" + - " GUBOPOMOFO LETTER EEBOPOMOFO LETTER ENNBOPOMOFO LETTER OOBOPOMOFO LETTE" + - "R ONNBOPOMOFO LETTER IRBOPOMOFO LETTER ANNBOPOMOFO LETTER INNBOPOMOFO LE" + - "TTER UNNBOPOMOFO LETTER IMBOPOMOFO LETTER NGGBOPOMOFO LETTER AINNBOPOMOF" + - "O LETTER AUNNBOPOMOFO LETTER AMBOPOMOFO LETTER OMBOPOMOFO LETTER ONGBOPO" + - "MOFO LETTER INNNBOPOMOFO FINAL LETTER PBOPOMOFO FINAL LETTER TBOPOMOFO F" + - "INAL LETTER KBOPOMOFO FINAL LETTER HBOPOMOFO LETTER GHBOPOMOFO LETTER LH" + - "BOPOMOFO LETTER ZYCJK STROKE TCJK STROKE WGCJK STROKE XGCJK STROKE BXGCJ" + - "K STROKE SWCJK STROKE HZZCJK STROKE HZGCJK STROKE HPCJK STROKE HZWGCJK S" + - "TROKE SZWGCJK STROKE HZTCJK STROKE HZZPCJK STROKE HPWGCJK STROKE HZWCJK " + - "STROKE HZZZCJK STROKE NCJK STROKE HCJK STROKE SCJK STROKE PCJK STROKE SP" + - "CJK STROKE DCJK STROKE HZCJK STROKE HGCJK STROKE SZCJK STROKE SWZCJK STR" + - "OKE STCJK STROKE SGCJK STROKE PDCJK STROKE PZCJK STROKE TNCJK STROKE SZZ" + - "CJK STROKE SWGCJK STROKE HXWGCJK STROKE HZZZGCJK STROKE PGCJK STROKE QKA" + - "TAKANA LETTER SMALL KUKATAKANA LETTER SMALL SIKATAKANA LETTER SMALL SUKA" + - "TAKANA LETTER SMALL TOKATAKANA LETTER SMALL NUKATAKANA LETTER SMALL HAKA" + - "TAKANA LETTER SMALL HIKATAKANA LETTER SMALL HUKATAKANA LETTER SMALL HEKA" + - "TAKANA LETTER SMALL HOKATAKANA LETTER SMALL MUKATAKANA LETTER SMALL RAKA" + - "TAKANA LETTER SMALL RIKATAKANA LETTER SMALL RUKATAKANA LETTER SMALL REKA" + - "TAKANA LETTER SMALL ROPARENTHESIZED HANGUL KIYEOKPARENTHESIZED HANGUL NI" + - "EUNPARENTHESIZED HANGUL TIKEUTPARENTHESIZED HANGUL RIEULPARENTHESIZED HA" + - "NGUL MIEUMPARENTHESIZED HANGUL PIEUPPARENTHESIZED HANGUL SIOSPARENTHESIZ" + - "ED HANGUL IEUNGPARENTHESIZED HANGUL CIEUCPARENTHESIZED HANGUL CHIEUCHPAR" + - "ENTHESIZED HANGUL KHIEUKHPARENTHESIZED HANGUL THIEUTHPARENTHESIZED HANGU" + - "L PHIEUPHPARENTHESIZED HANGUL HIEUHPARENTHESIZED HANGUL KIYEOK APARENTHE" + - "SIZED HANGUL NIEUN APARENTHESIZED HANGUL TIKEUT APARENTHESIZED HANGUL RI" + - "EUL APARENTHESIZED HANGUL MIEUM APARENTHESIZED HANGUL PIEUP APARENTHESIZ" + - "ED HANGUL SIOS APARENTHESIZED HANGUL IEUNG APARENTHESIZED HANGUL CIEUC A") + ("" + - "PARENTHESIZED HANGUL CHIEUCH APARENTHESIZED HANGUL KHIEUKH APARENTHESIZE" + - "D HANGUL THIEUTH APARENTHESIZED HANGUL PHIEUPH APARENTHESIZED HANGUL HIE" + - "UH APARENTHESIZED HANGUL CIEUC UPARENTHESIZED KOREAN CHARACTER OJEONPARE" + - "NTHESIZED KOREAN CHARACTER O HUPARENTHESIZED IDEOGRAPH ONEPARENTHESIZED " + - "IDEOGRAPH TWOPARENTHESIZED IDEOGRAPH THREEPARENTHESIZED IDEOGRAPH FOURPA" + - "RENTHESIZED IDEOGRAPH FIVEPARENTHESIZED IDEOGRAPH SIXPARENTHESIZED IDEOG" + - "RAPH SEVENPARENTHESIZED IDEOGRAPH EIGHTPARENTHESIZED IDEOGRAPH NINEPAREN" + - "THESIZED IDEOGRAPH TENPARENTHESIZED IDEOGRAPH MOONPARENTHESIZED IDEOGRAP" + - "H FIREPARENTHESIZED IDEOGRAPH WATERPARENTHESIZED IDEOGRAPH WOODPARENTHES" + - "IZED IDEOGRAPH METALPARENTHESIZED IDEOGRAPH EARTHPARENTHESIZED IDEOGRAPH" + - " SUNPARENTHESIZED IDEOGRAPH STOCKPARENTHESIZED IDEOGRAPH HAVEPARENTHESIZ" + - "ED IDEOGRAPH SOCIETYPARENTHESIZED IDEOGRAPH NAMEPARENTHESIZED IDEOGRAPH " + - "SPECIALPARENTHESIZED IDEOGRAPH FINANCIALPARENTHESIZED IDEOGRAPH CONGRATU" + - "LATIONPARENTHESIZED IDEOGRAPH LABORPARENTHESIZED IDEOGRAPH REPRESENTPARE" + - "NTHESIZED IDEOGRAPH CALLPARENTHESIZED IDEOGRAPH STUDYPARENTHESIZED IDEOG" + - "RAPH SUPERVISEPARENTHESIZED IDEOGRAPH ENTERPRISEPARENTHESIZED IDEOGRAPH " + - "RESOURCEPARENTHESIZED IDEOGRAPH ALLIANCEPARENTHESIZED IDEOGRAPH FESTIVAL" + - "PARENTHESIZED IDEOGRAPH RESTPARENTHESIZED IDEOGRAPH SELFPARENTHESIZED ID" + - "EOGRAPH REACHCIRCLED IDEOGRAPH QUESTIONCIRCLED IDEOGRAPH KINDERGARTENCIR" + - "CLED IDEOGRAPH SCHOOLCIRCLED IDEOGRAPH KOTOCIRCLED NUMBER TEN ON BLACK S" + - "QUARECIRCLED NUMBER TWENTY ON BLACK SQUARECIRCLED NUMBER THIRTY ON BLACK" + - " SQUARECIRCLED NUMBER FORTY ON BLACK SQUARECIRCLED NUMBER FIFTY ON BLACK" + - " SQUARECIRCLED NUMBER SIXTY ON BLACK SQUARECIRCLED NUMBER SEVENTY ON BLA" + - "CK SQUARECIRCLED NUMBER EIGHTY ON BLACK SQUAREPARTNERSHIP SIGNCIRCLED NU" + - "MBER TWENTY ONECIRCLED NUMBER TWENTY TWOCIRCLED NUMBER TWENTY THREECIRCL" + - "ED NUMBER TWENTY FOURCIRCLED NUMBER TWENTY FIVECIRCLED NUMBER TWENTY SIX" + - "CIRCLED NUMBER TWENTY SEVENCIRCLED NUMBER TWENTY EIGHTCIRCLED NUMBER TWE" + - "NTY NINECIRCLED NUMBER THIRTYCIRCLED NUMBER THIRTY ONECIRCLED NUMBER THI" + - "RTY TWOCIRCLED NUMBER THIRTY THREECIRCLED NUMBER THIRTY FOURCIRCLED NUMB" + - "ER THIRTY FIVECIRCLED HANGUL KIYEOKCIRCLED HANGUL NIEUNCIRCLED HANGUL TI" + - "KEUTCIRCLED HANGUL RIEULCIRCLED HANGUL MIEUMCIRCLED HANGUL PIEUPCIRCLED " + - "HANGUL SIOSCIRCLED HANGUL IEUNGCIRCLED HANGUL CIEUCCIRCLED HANGUL CHIEUC" + - "HCIRCLED HANGUL KHIEUKHCIRCLED HANGUL THIEUTHCIRCLED HANGUL PHIEUPHCIRCL" + - "ED HANGUL HIEUHCIRCLED HANGUL KIYEOK ACIRCLED HANGUL NIEUN ACIRCLED HANG" + - "UL TIKEUT ACIRCLED HANGUL RIEUL ACIRCLED HANGUL MIEUM ACIRCLED HANGUL PI" + - "EUP ACIRCLED HANGUL SIOS ACIRCLED HANGUL IEUNG ACIRCLED HANGUL CIEUC ACI" + - "RCLED HANGUL CHIEUCH ACIRCLED HANGUL KHIEUKH ACIRCLED HANGUL THIEUTH ACI" + - "RCLED HANGUL PHIEUPH ACIRCLED HANGUL HIEUH ACIRCLED KOREAN CHARACTER CHA" + - "MKOCIRCLED KOREAN CHARACTER JUEUICIRCLED HANGUL IEUNG UKOREAN STANDARD S" + - "YMBOLCIRCLED IDEOGRAPH ONECIRCLED IDEOGRAPH TWOCIRCLED IDEOGRAPH THREECI" + - "RCLED IDEOGRAPH FOURCIRCLED IDEOGRAPH FIVECIRCLED IDEOGRAPH SIXCIRCLED I" + - "DEOGRAPH SEVENCIRCLED IDEOGRAPH EIGHTCIRCLED IDEOGRAPH NINECIRCLED IDEOG" + - "RAPH TENCIRCLED IDEOGRAPH MOONCIRCLED IDEOGRAPH FIRECIRCLED IDEOGRAPH WA" + - "TERCIRCLED IDEOGRAPH WOODCIRCLED IDEOGRAPH METALCIRCLED IDEOGRAPH EARTHC" + - "IRCLED IDEOGRAPH SUNCIRCLED IDEOGRAPH STOCKCIRCLED IDEOGRAPH HAVECIRCLED" + - " IDEOGRAPH SOCIETYCIRCLED IDEOGRAPH NAMECIRCLED IDEOGRAPH SPECIALCIRCLED" + - " IDEOGRAPH FINANCIALCIRCLED IDEOGRAPH CONGRATULATIONCIRCLED IDEOGRAPH LA" + - "BORCIRCLED IDEOGRAPH SECRETCIRCLED IDEOGRAPH MALECIRCLED IDEOGRAPH FEMAL" + - "ECIRCLED IDEOGRAPH SUITABLECIRCLED IDEOGRAPH EXCELLENTCIRCLED IDEOGRAPH " + - "PRINTCIRCLED IDEOGRAPH ATTENTIONCIRCLED IDEOGRAPH ITEMCIRCLED IDEOGRAPH " + - "RESTCIRCLED IDEOGRAPH COPYCIRCLED IDEOGRAPH CORRECTCIRCLED IDEOGRAPH HIG" + - "HCIRCLED IDEOGRAPH CENTRECIRCLED IDEOGRAPH LOWCIRCLED IDEOGRAPH LEFTCIRC" + - "LED IDEOGRAPH RIGHTCIRCLED IDEOGRAPH MEDICINECIRCLED IDEOGRAPH RELIGIONC" + - "IRCLED IDEOGRAPH STUDYCIRCLED IDEOGRAPH SUPERVISECIRCLED IDEOGRAPH ENTER" + - "PRISECIRCLED IDEOGRAPH RESOURCECIRCLED IDEOGRAPH ALLIANCECIRCLED IDEOGRA" + - "PH NIGHTCIRCLED NUMBER THIRTY SIXCIRCLED NUMBER THIRTY SEVENCIRCLED NUMB" + - "ER THIRTY EIGHTCIRCLED NUMBER THIRTY NINECIRCLED NUMBER FORTYCIRCLED NUM" + - "BER FORTY ONECIRCLED NUMBER FORTY TWOCIRCLED NUMBER FORTY THREECIRCLED N" + - "UMBER FORTY FOURCIRCLED NUMBER FORTY FIVECIRCLED NUMBER FORTY SIXCIRCLED" + - " NUMBER FORTY SEVENCIRCLED NUMBER FORTY EIGHTCIRCLED NUMBER FORTY NINECI" + - "RCLED NUMBER FIFTYIDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARYIDEOGRAPHIC TE" + - "LEGRAPH SYMBOL FOR FEBRUARYIDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCHIDEOGRA" + - "PHIC TELEGRAPH SYMBOL FOR APRILIDEOGRAPHIC TELEGRAPH SYMBOL FOR MAYIDEOG" + - "RAPHIC TELEGRAPH SYMBOL FOR JUNEIDEOGRAPHIC TELEGRAPH SYMBOL FOR JULYIDE") + ("" + - "OGRAPHIC TELEGRAPH SYMBOL FOR AUGUSTIDEOGRAPHIC TELEGRAPH SYMBOL FOR SEP" + - "TEMBERIDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBERIDEOGRAPHIC TELEGRAPH SYMB" + - "OL FOR NOVEMBERIDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBERSQUARE HGSQUARE " + - "ERGSQUARE EVLIMITED LIABILITY SIGNCIRCLED KATAKANA ACIRCLED KATAKANA ICI" + - "RCLED KATAKANA UCIRCLED KATAKANA ECIRCLED KATAKANA OCIRCLED KATAKANA KAC" + - "IRCLED KATAKANA KICIRCLED KATAKANA KUCIRCLED KATAKANA KECIRCLED KATAKANA" + - " KOCIRCLED KATAKANA SACIRCLED KATAKANA SICIRCLED KATAKANA SUCIRCLED KATA" + - "KANA SECIRCLED KATAKANA SOCIRCLED KATAKANA TACIRCLED KATAKANA TICIRCLED " + - "KATAKANA TUCIRCLED KATAKANA TECIRCLED KATAKANA TOCIRCLED KATAKANA NACIRC" + - "LED KATAKANA NICIRCLED KATAKANA NUCIRCLED KATAKANA NECIRCLED KATAKANA NO" + - "CIRCLED KATAKANA HACIRCLED KATAKANA HICIRCLED KATAKANA HUCIRCLED KATAKAN" + - "A HECIRCLED KATAKANA HOCIRCLED KATAKANA MACIRCLED KATAKANA MICIRCLED KAT" + - "AKANA MUCIRCLED KATAKANA MECIRCLED KATAKANA MOCIRCLED KATAKANA YACIRCLED" + - " KATAKANA YUCIRCLED KATAKANA YOCIRCLED KATAKANA RACIRCLED KATAKANA RICIR" + - "CLED KATAKANA RUCIRCLED KATAKANA RECIRCLED KATAKANA ROCIRCLED KATAKANA W" + - "ACIRCLED KATAKANA WICIRCLED KATAKANA WECIRCLED KATAKANA WOSQUARE APAATOS" + - "QUARE ARUHUASQUARE ANPEASQUARE AARUSQUARE ININGUSQUARE INTISQUARE UONSQU" + - "ARE ESUKUUDOSQUARE EEKAASQUARE ONSUSQUARE OOMUSQUARE KAIRISQUARE KARATTO" + - "SQUARE KARORIISQUARE GARONSQUARE GANMASQUARE GIGASQUARE GINIISQUARE KYUR" + - "IISQUARE GIRUDAASQUARE KIROSQUARE KIROGURAMUSQUARE KIROMEETORUSQUARE KIR" + - "OWATTOSQUARE GURAMUSQUARE GURAMUTONSQUARE KURUZEIROSQUARE KUROONESQUARE " + - "KEESUSQUARE KORUNASQUARE KOOPOSQUARE SAIKURUSQUARE SANTIIMUSQUARE SIRING" + - "USQUARE SENTISQUARE SENTOSQUARE DAASUSQUARE DESISQUARE DORUSQUARE TONSQU" + - "ARE NANOSQUARE NOTTOSQUARE HAITUSQUARE PAASENTOSQUARE PAATUSQUARE BAARER" + - "USQUARE PIASUTORUSQUARE PIKURUSQUARE PIKOSQUARE BIRUSQUARE HUARADDOSQUAR" + - "E HUIITOSQUARE BUSSYERUSQUARE HURANSQUARE HEKUTAARUSQUARE PESOSQUARE PEN" + - "IHISQUARE HERUTUSQUARE PENSUSQUARE PEEZISQUARE BEETASQUARE POINTOSQUARE " + - "BORUTOSQUARE HONSQUARE PONDOSQUARE HOORUSQUARE HOONSQUARE MAIKUROSQUARE " + - "MAIRUSQUARE MAHHASQUARE MARUKUSQUARE MANSYONSQUARE MIKURONSQUARE MIRISQU" + - "ARE MIRIBAARUSQUARE MEGASQUARE MEGATONSQUARE MEETORUSQUARE YAADOSQUARE Y" + - "AARUSQUARE YUANSQUARE RITTORUSQUARE RIRASQUARE RUPIISQUARE RUUBURUSQUARE" + - " REMUSQUARE RENTOGENSQUARE WATTOIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZE" + - "ROIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONEIDEOGRAPHIC TELEGRAPH SYMBOL " + - "FOR HOUR TWOIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREEIDEOGRAPHIC TELEG" + - "RAPH SYMBOL FOR HOUR FOURIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVEIDEOG" + - "RAPHIC TELEGRAPH SYMBOL FOR HOUR SIXIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOU" + - "R SEVENIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTIDEOGRAPHIC TELEGRAPH " + - "SYMBOL FOR HOUR NINEIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TENIDEOGRAPHIC" + - " TELEGRAPH SYMBOL FOR HOUR ELEVENIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR T" + - "WELVEIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEENIDEOGRAPHIC TELEGRAPH" + - " SYMBOL FOR HOUR FOURTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEENID" + - "EOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEENIDEOGRAPHIC TELEGRAPH SYMBOL " + - "FOR HOUR SEVENTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEENIDEOGRAP" + - "HIC TELEGRAPH SYMBOL FOR HOUR NINETEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR H" + - "OUR TWENTYIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONEIDEOGRAPHIC TE" + - "LEGRAPH SYMBOL FOR HOUR TWENTY-TWOIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR " + - "TWENTY-THREEIDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOURSQUARE HPAS" + - "QUARE DASQUARE AUSQUARE BARSQUARE OVSQUARE PCSQUARE DMSQUARE DM SQUAREDS" + - "QUARE DM CUBEDSQUARE IUSQUARE ERA NAME HEISEISQUARE ERA NAME SYOUWASQUAR" + - "E ERA NAME TAISYOUSQUARE ERA NAME MEIZISQUARE CORPORATIONSQUARE PA AMPSS" + - "QUARE NASQUARE MU ASQUARE MASQUARE KASQUARE KBSQUARE MBSQUARE GBSQUARE C" + - "ALSQUARE KCALSQUARE PFSQUARE NFSQUARE MU FSQUARE MU GSQUARE MGSQUARE KGS" + - "QUARE HZSQUARE KHZSQUARE MHZSQUARE GHZSQUARE THZSQUARE MU LSQUARE MLSQUA" + - "RE DLSQUARE KLSQUARE FMSQUARE NMSQUARE MU MSQUARE MMSQUARE CMSQUARE KMSQ" + - "UARE MM SQUAREDSQUARE CM SQUAREDSQUARE M SQUAREDSQUARE KM SQUAREDSQUARE " + - "MM CUBEDSQUARE CM CUBEDSQUARE M CUBEDSQUARE KM CUBEDSQUARE M OVER SSQUAR" + - "E M OVER S SQUAREDSQUARE PASQUARE KPASQUARE MPASQUARE GPASQUARE RADSQUAR" + - "E RAD OVER SSQUARE RAD OVER S SQUAREDSQUARE PSSQUARE NSSQUARE MU SSQUARE" + - " MSSQUARE PVSQUARE NVSQUARE MU VSQUARE MVSQUARE KVSQUARE MV MEGASQUARE P" + - "WSQUARE NWSQUARE MU WSQUARE MWSQUARE KWSQUARE MW MEGASQUARE K OHMSQUARE " + - "M OHMSQUARE AMSQUARE BQSQUARE CCSQUARE CDSQUARE C OVER KGSQUARE COSQUARE" + - " DBSQUARE GYSQUARE HASQUARE HPSQUARE INSQUARE KKSQUARE KM CAPITALSQUARE " + - "KTSQUARE LMSQUARE LNSQUARE LOGSQUARE LXSQUARE MB SMALLSQUARE MILSQUARE M" + - "OLSQUARE PHSQUARE PMSQUARE PPMSQUARE PRSQUARE SRSQUARE SVSQUARE WBSQUARE") + ("" + - " V OVER MSQUARE A OVER MIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONEIDEOGRAP" + - "HIC TELEGRAPH SYMBOL FOR DAY TWOIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THR" + - "EEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURIDEOGRAPHIC TELEGRAPH SYMBOL " + - "FOR DAY FIVEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXIDEOGRAPHIC TELEGRAP" + - "H SYMBOL FOR DAY SEVENIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTIDEOGRAP" + - "HIC TELEGRAPH SYMBOL FOR DAY NINEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TE" + - "NIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVENIDEOGRAPHIC TELEGRAPH SYMBOL" + - " FOR DAY TWELVEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEENIDEOGRAPHIC " + - "TELEGRAPH SYMBOL FOR DAY FOURTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FI" + - "FTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEENIDEOGRAPHIC TELEGRAPH S" + - "YMBOL FOR DAY SEVENTEENIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEENIDEO" + - "GRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEENIDEOGRAPHIC TELEGRAPH SYMBOL FO" + - "R DAY TWENTYIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONEIDEOGRAPHIC T" + - "ELEGRAPH SYMBOL FOR DAY TWENTY-TWOIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY T" + - "WENTY-THREEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOURIDEOGRAPHIC T" + - "ELEGRAPH SYMBOL FOR DAY TWENTY-FIVEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY " + - "TWENTY-SIXIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVENIDEOGRAPHIC T" + - "ELEGRAPH SYMBOL FOR DAY TWENTY-EIGHTIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY" + - " TWENTY-NINEIDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTYIDEOGRAPHIC TELEG" + - "RAPH SYMBOL FOR DAY THIRTY-ONESQUARE GALHEXAGRAM FOR THE CREATIVE HEAVEN" + - "HEXAGRAM FOR THE RECEPTIVE EARTHHEXAGRAM FOR DIFFICULTY AT THE BEGINNING" + - "HEXAGRAM FOR YOUTHFUL FOLLYHEXAGRAM FOR WAITINGHEXAGRAM FOR CONFLICTHEXA" + - "GRAM FOR THE ARMYHEXAGRAM FOR HOLDING TOGETHERHEXAGRAM FOR SMALL TAMINGH" + - "EXAGRAM FOR TREADINGHEXAGRAM FOR PEACEHEXAGRAM FOR STANDSTILLHEXAGRAM FO" + - "R FELLOWSHIPHEXAGRAM FOR GREAT POSSESSIONHEXAGRAM FOR MODESTYHEXAGRAM FO" + - "R ENTHUSIASMHEXAGRAM FOR FOLLOWINGHEXAGRAM FOR WORK ON THE DECAYEDHEXAGR" + - "AM FOR APPROACHHEXAGRAM FOR CONTEMPLATIONHEXAGRAM FOR BITING THROUGHHEXA" + - "GRAM FOR GRACEHEXAGRAM FOR SPLITTING APARTHEXAGRAM FOR RETURNHEXAGRAM FO" + - "R INNOCENCEHEXAGRAM FOR GREAT TAMINGHEXAGRAM FOR MOUTH CORNERSHEXAGRAM F" + - "OR GREAT PREPONDERANCEHEXAGRAM FOR THE ABYSMAL WATERHEXAGRAM FOR THE CLI" + - "NGING FIREHEXAGRAM FOR INFLUENCEHEXAGRAM FOR DURATIONHEXAGRAM FOR RETREA" + - "THEXAGRAM FOR GREAT POWERHEXAGRAM FOR PROGRESSHEXAGRAM FOR DARKENING OF " + - "THE LIGHTHEXAGRAM FOR THE FAMILYHEXAGRAM FOR OPPOSITIONHEXAGRAM FOR OBST" + - "RUCTIONHEXAGRAM FOR DELIVERANCEHEXAGRAM FOR DECREASEHEXAGRAM FOR INCREAS" + - "EHEXAGRAM FOR BREAKTHROUGHHEXAGRAM FOR COMING TO MEETHEXAGRAM FOR GATHER" + - "ING TOGETHERHEXAGRAM FOR PUSHING UPWARDHEXAGRAM FOR OPPRESSIONHEXAGRAM F" + - "OR THE WELLHEXAGRAM FOR REVOLUTIONHEXAGRAM FOR THE CAULDRONHEXAGRAM FOR " + - "THE AROUSING THUNDERHEXAGRAM FOR THE KEEPING STILL MOUNTAINHEXAGRAM FOR " + - "DEVELOPMENTHEXAGRAM FOR THE MARRYING MAIDENHEXAGRAM FOR ABUNDANCEHEXAGRA" + - "M FOR THE WANDERERHEXAGRAM FOR THE GENTLE WINDHEXAGRAM FOR THE JOYOUS LA" + - "KEHEXAGRAM FOR DISPERSIONHEXAGRAM FOR LIMITATIONHEXAGRAM FOR INNER TRUTH" + - "HEXAGRAM FOR SMALL PREPONDERANCEHEXAGRAM FOR AFTER COMPLETIONHEXAGRAM FO" + - "R BEFORE COMPLETIONYI SYLLABLE ITYI SYLLABLE IXYI SYLLABLE IYI SYLLABLE " + - "IPYI SYLLABLE IETYI SYLLABLE IEXYI SYLLABLE IEYI SYLLABLE IEPYI SYLLABLE" + - " ATYI SYLLABLE AXYI SYLLABLE AYI SYLLABLE APYI SYLLABLE UOXYI SYLLABLE U" + - "OYI SYLLABLE UOPYI SYLLABLE OTYI SYLLABLE OXYI SYLLABLE OYI SYLLABLE OPY" + - "I SYLLABLE EXYI SYLLABLE EYI SYLLABLE WUYI SYLLABLE BITYI SYLLABLE BIXYI" + - " SYLLABLE BIYI SYLLABLE BIPYI SYLLABLE BIETYI SYLLABLE BIEXYI SYLLABLE B" + - "IEYI SYLLABLE BIEPYI SYLLABLE BATYI SYLLABLE BAXYI SYLLABLE BAYI SYLLABL" + - "E BAPYI SYLLABLE BUOXYI SYLLABLE BUOYI SYLLABLE BUOPYI SYLLABLE BOTYI SY" + - "LLABLE BOXYI SYLLABLE BOYI SYLLABLE BOPYI SYLLABLE BEXYI SYLLABLE BEYI S" + - "YLLABLE BEPYI SYLLABLE BUTYI SYLLABLE BUXYI SYLLABLE BUYI SYLLABLE BUPYI" + - " SYLLABLE BURXYI SYLLABLE BURYI SYLLABLE BYTYI SYLLABLE BYXYI SYLLABLE B" + - "YYI SYLLABLE BYPYI SYLLABLE BYRXYI SYLLABLE BYRYI SYLLABLE PITYI SYLLABL" + - "E PIXYI SYLLABLE PIYI SYLLABLE PIPYI SYLLABLE PIEXYI SYLLABLE PIEYI SYLL" + - "ABLE PIEPYI SYLLABLE PATYI SYLLABLE PAXYI SYLLABLE PAYI SYLLABLE PAPYI S" + - "YLLABLE PUOXYI SYLLABLE PUOYI SYLLABLE PUOPYI SYLLABLE POTYI SYLLABLE PO" + - "XYI SYLLABLE POYI SYLLABLE POPYI SYLLABLE PUTYI SYLLABLE PUXYI SYLLABLE " + - "PUYI SYLLABLE PUPYI SYLLABLE PURXYI SYLLABLE PURYI SYLLABLE PYTYI SYLLAB" + - "LE PYXYI SYLLABLE PYYI SYLLABLE PYPYI SYLLABLE PYRXYI SYLLABLE PYRYI SYL" + - "LABLE BBITYI SYLLABLE BBIXYI SYLLABLE BBIYI SYLLABLE BBIPYI SYLLABLE BBI" + - "ETYI SYLLABLE BBIEXYI SYLLABLE BBIEYI SYLLABLE BBIEPYI SYLLABLE BBATYI S" + - "YLLABLE BBAXYI SYLLABLE BBAYI SYLLABLE BBAPYI SYLLABLE BBUOXYI SYLLABLE " + - "BBUOYI SYLLABLE BBUOPYI SYLLABLE BBOTYI SYLLABLE BBOXYI SYLLABLE BBOYI S") + ("" + - "YLLABLE BBOPYI SYLLABLE BBEXYI SYLLABLE BBEYI SYLLABLE BBEPYI SYLLABLE B" + - "BUTYI SYLLABLE BBUXYI SYLLABLE BBUYI SYLLABLE BBUPYI SYLLABLE BBURXYI SY" + - "LLABLE BBURYI SYLLABLE BBYTYI SYLLABLE BBYXYI SYLLABLE BBYYI SYLLABLE BB" + - "YPYI SYLLABLE NBITYI SYLLABLE NBIXYI SYLLABLE NBIYI SYLLABLE NBIPYI SYLL" + - "ABLE NBIEXYI SYLLABLE NBIEYI SYLLABLE NBIEPYI SYLLABLE NBATYI SYLLABLE N" + - "BAXYI SYLLABLE NBAYI SYLLABLE NBAPYI SYLLABLE NBOTYI SYLLABLE NBOXYI SYL" + - "LABLE NBOYI SYLLABLE NBOPYI SYLLABLE NBUTYI SYLLABLE NBUXYI SYLLABLE NBU" + - "YI SYLLABLE NBUPYI SYLLABLE NBURXYI SYLLABLE NBURYI SYLLABLE NBYTYI SYLL" + - "ABLE NBYXYI SYLLABLE NBYYI SYLLABLE NBYPYI SYLLABLE NBYRXYI SYLLABLE NBY" + - "RYI SYLLABLE HMITYI SYLLABLE HMIXYI SYLLABLE HMIYI SYLLABLE HMIPYI SYLLA" + - "BLE HMIEXYI SYLLABLE HMIEYI SYLLABLE HMIEPYI SYLLABLE HMATYI SYLLABLE HM" + - "AXYI SYLLABLE HMAYI SYLLABLE HMAPYI SYLLABLE HMUOXYI SYLLABLE HMUOYI SYL" + - "LABLE HMUOPYI SYLLABLE HMOTYI SYLLABLE HMOXYI SYLLABLE HMOYI SYLLABLE HM" + - "OPYI SYLLABLE HMUTYI SYLLABLE HMUXYI SYLLABLE HMUYI SYLLABLE HMUPYI SYLL" + - "ABLE HMURXYI SYLLABLE HMURYI SYLLABLE HMYXYI SYLLABLE HMYYI SYLLABLE HMY" + - "PYI SYLLABLE HMYRXYI SYLLABLE HMYRYI SYLLABLE MITYI SYLLABLE MIXYI SYLLA" + - "BLE MIYI SYLLABLE MIPYI SYLLABLE MIEXYI SYLLABLE MIEYI SYLLABLE MIEPYI S" + - "YLLABLE MATYI SYLLABLE MAXYI SYLLABLE MAYI SYLLABLE MAPYI SYLLABLE MUOTY" + - "I SYLLABLE MUOXYI SYLLABLE MUOYI SYLLABLE MUOPYI SYLLABLE MOTYI SYLLABLE" + - " MOXYI SYLLABLE MOYI SYLLABLE MOPYI SYLLABLE MEXYI SYLLABLE MEYI SYLLABL" + - "E MUTYI SYLLABLE MUXYI SYLLABLE MUYI SYLLABLE MUPYI SYLLABLE MURXYI SYLL" + - "ABLE MURYI SYLLABLE MYTYI SYLLABLE MYXYI SYLLABLE MYYI SYLLABLE MYPYI SY" + - "LLABLE FITYI SYLLABLE FIXYI SYLLABLE FIYI SYLLABLE FIPYI SYLLABLE FATYI " + - "SYLLABLE FAXYI SYLLABLE FAYI SYLLABLE FAPYI SYLLABLE FOXYI SYLLABLE FOYI" + - " SYLLABLE FOPYI SYLLABLE FUTYI SYLLABLE FUXYI SYLLABLE FUYI SYLLABLE FUP" + - "YI SYLLABLE FURXYI SYLLABLE FURYI SYLLABLE FYTYI SYLLABLE FYXYI SYLLABLE" + - " FYYI SYLLABLE FYPYI SYLLABLE VITYI SYLLABLE VIXYI SYLLABLE VIYI SYLLABL" + - "E VIPYI SYLLABLE VIETYI SYLLABLE VIEXYI SYLLABLE VIEYI SYLLABLE VIEPYI S" + - "YLLABLE VATYI SYLLABLE VAXYI SYLLABLE VAYI SYLLABLE VAPYI SYLLABLE VOTYI" + - " SYLLABLE VOXYI SYLLABLE VOYI SYLLABLE VOPYI SYLLABLE VEXYI SYLLABLE VEP" + - "YI SYLLABLE VUTYI SYLLABLE VUXYI SYLLABLE VUYI SYLLABLE VUPYI SYLLABLE V" + - "URXYI SYLLABLE VURYI SYLLABLE VYTYI SYLLABLE VYXYI SYLLABLE VYYI SYLLABL" + - "E VYPYI SYLLABLE VYRXYI SYLLABLE VYRYI SYLLABLE DITYI SYLLABLE DIXYI SYL" + - "LABLE DIYI SYLLABLE DIPYI SYLLABLE DIEXYI SYLLABLE DIEYI SYLLABLE DIEPYI" + - " SYLLABLE DATYI SYLLABLE DAXYI SYLLABLE DAYI SYLLABLE DAPYI SYLLABLE DUO" + - "XYI SYLLABLE DUOYI SYLLABLE DOTYI SYLLABLE DOXYI SYLLABLE DOYI SYLLABLE " + - "DOPYI SYLLABLE DEXYI SYLLABLE DEYI SYLLABLE DEPYI SYLLABLE DUTYI SYLLABL" + - "E DUXYI SYLLABLE DUYI SYLLABLE DUPYI SYLLABLE DURXYI SYLLABLE DURYI SYLL" + - "ABLE TITYI SYLLABLE TIXYI SYLLABLE TIYI SYLLABLE TIPYI SYLLABLE TIEXYI S" + - "YLLABLE TIEYI SYLLABLE TIEPYI SYLLABLE TATYI SYLLABLE TAXYI SYLLABLE TAY" + - "I SYLLABLE TAPYI SYLLABLE TUOTYI SYLLABLE TUOXYI SYLLABLE TUOYI SYLLABLE" + - " TUOPYI SYLLABLE TOTYI SYLLABLE TOXYI SYLLABLE TOYI SYLLABLE TOPYI SYLLA" + - "BLE TEXYI SYLLABLE TEYI SYLLABLE TEPYI SYLLABLE TUTYI SYLLABLE TUXYI SYL" + - "LABLE TUYI SYLLABLE TUPYI SYLLABLE TURXYI SYLLABLE TURYI SYLLABLE DDITYI" + - " SYLLABLE DDIXYI SYLLABLE DDIYI SYLLABLE DDIPYI SYLLABLE DDIEXYI SYLLABL" + - "E DDIEYI SYLLABLE DDIEPYI SYLLABLE DDATYI SYLLABLE DDAXYI SYLLABLE DDAYI" + - " SYLLABLE DDAPYI SYLLABLE DDUOXYI SYLLABLE DDUOYI SYLLABLE DDUOPYI SYLLA" + - "BLE DDOTYI SYLLABLE DDOXYI SYLLABLE DDOYI SYLLABLE DDOPYI SYLLABLE DDEXY" + - "I SYLLABLE DDEYI SYLLABLE DDEPYI SYLLABLE DDUTYI SYLLABLE DDUXYI SYLLABL" + - "E DDUYI SYLLABLE DDUPYI SYLLABLE DDURXYI SYLLABLE DDURYI SYLLABLE NDITYI" + - " SYLLABLE NDIXYI SYLLABLE NDIYI SYLLABLE NDIPYI SYLLABLE NDIEXYI SYLLABL" + - "E NDIEYI SYLLABLE NDATYI SYLLABLE NDAXYI SYLLABLE NDAYI SYLLABLE NDAPYI " + - "SYLLABLE NDOTYI SYLLABLE NDOXYI SYLLABLE NDOYI SYLLABLE NDOPYI SYLLABLE " + - "NDEXYI SYLLABLE NDEYI SYLLABLE NDEPYI SYLLABLE NDUTYI SYLLABLE NDUXYI SY" + - "LLABLE NDUYI SYLLABLE NDUPYI SYLLABLE NDURXYI SYLLABLE NDURYI SYLLABLE H" + - "NITYI SYLLABLE HNIXYI SYLLABLE HNIYI SYLLABLE HNIPYI SYLLABLE HNIETYI SY" + - "LLABLE HNIEXYI SYLLABLE HNIEYI SYLLABLE HNIEPYI SYLLABLE HNATYI SYLLABLE" + - " HNAXYI SYLLABLE HNAYI SYLLABLE HNAPYI SYLLABLE HNUOXYI SYLLABLE HNUOYI " + - "SYLLABLE HNOTYI SYLLABLE HNOXYI SYLLABLE HNOPYI SYLLABLE HNEXYI SYLLABLE" + - " HNEYI SYLLABLE HNEPYI SYLLABLE HNUTYI SYLLABLE NITYI SYLLABLE NIXYI SYL" + - "LABLE NIYI SYLLABLE NIPYI SYLLABLE NIEXYI SYLLABLE NIEYI SYLLABLE NIEPYI" + - " SYLLABLE NAXYI SYLLABLE NAYI SYLLABLE NAPYI SYLLABLE NUOXYI SYLLABLE NU" + - "OYI SYLLABLE NUOPYI SYLLABLE NOTYI SYLLABLE NOXYI SYLLABLE NOYI SYLLABLE" + - " NOPYI SYLLABLE NEXYI SYLLABLE NEYI SYLLABLE NEPYI SYLLABLE NUTYI SYLLAB") + ("" + - "LE NUXYI SYLLABLE NUYI SYLLABLE NUPYI SYLLABLE NURXYI SYLLABLE NURYI SYL" + - "LABLE HLITYI SYLLABLE HLIXYI SYLLABLE HLIYI SYLLABLE HLIPYI SYLLABLE HLI" + - "EXYI SYLLABLE HLIEYI SYLLABLE HLIEPYI SYLLABLE HLATYI SYLLABLE HLAXYI SY" + - "LLABLE HLAYI SYLLABLE HLAPYI SYLLABLE HLUOXYI SYLLABLE HLUOYI SYLLABLE H" + - "LUOPYI SYLLABLE HLOXYI SYLLABLE HLOYI SYLLABLE HLOPYI SYLLABLE HLEXYI SY" + - "LLABLE HLEYI SYLLABLE HLEPYI SYLLABLE HLUTYI SYLLABLE HLUXYI SYLLABLE HL" + - "UYI SYLLABLE HLUPYI SYLLABLE HLURXYI SYLLABLE HLURYI SYLLABLE HLYTYI SYL" + - "LABLE HLYXYI SYLLABLE HLYYI SYLLABLE HLYPYI SYLLABLE HLYRXYI SYLLABLE HL" + - "YRYI SYLLABLE LITYI SYLLABLE LIXYI SYLLABLE LIYI SYLLABLE LIPYI SYLLABLE" + - " LIETYI SYLLABLE LIEXYI SYLLABLE LIEYI SYLLABLE LIEPYI SYLLABLE LATYI SY" + - "LLABLE LAXYI SYLLABLE LAYI SYLLABLE LAPYI SYLLABLE LUOTYI SYLLABLE LUOXY" + - "I SYLLABLE LUOYI SYLLABLE LUOPYI SYLLABLE LOTYI SYLLABLE LOXYI SYLLABLE " + - "LOYI SYLLABLE LOPYI SYLLABLE LEXYI SYLLABLE LEYI SYLLABLE LEPYI SYLLABLE" + - " LUTYI SYLLABLE LUXYI SYLLABLE LUYI SYLLABLE LUPYI SYLLABLE LURXYI SYLLA" + - "BLE LURYI SYLLABLE LYTYI SYLLABLE LYXYI SYLLABLE LYYI SYLLABLE LYPYI SYL" + - "LABLE LYRXYI SYLLABLE LYRYI SYLLABLE GITYI SYLLABLE GIXYI SYLLABLE GIYI " + - "SYLLABLE GIPYI SYLLABLE GIETYI SYLLABLE GIEXYI SYLLABLE GIEYI SYLLABLE G" + - "IEPYI SYLLABLE GATYI SYLLABLE GAXYI SYLLABLE GAYI SYLLABLE GAPYI SYLLABL" + - "E GUOTYI SYLLABLE GUOXYI SYLLABLE GUOYI SYLLABLE GUOPYI SYLLABLE GOTYI S" + - "YLLABLE GOXYI SYLLABLE GOYI SYLLABLE GOPYI SYLLABLE GETYI SYLLABLE GEXYI" + - " SYLLABLE GEYI SYLLABLE GEPYI SYLLABLE GUTYI SYLLABLE GUXYI SYLLABLE GUY" + - "I SYLLABLE GUPYI SYLLABLE GURXYI SYLLABLE GURYI SYLLABLE KITYI SYLLABLE " + - "KIXYI SYLLABLE KIYI SYLLABLE KIPYI SYLLABLE KIEXYI SYLLABLE KIEYI SYLLAB" + - "LE KIEPYI SYLLABLE KATYI SYLLABLE KAXYI SYLLABLE KAYI SYLLABLE KAPYI SYL" + - "LABLE KUOXYI SYLLABLE KUOYI SYLLABLE KUOPYI SYLLABLE KOTYI SYLLABLE KOXY" + - "I SYLLABLE KOYI SYLLABLE KOPYI SYLLABLE KETYI SYLLABLE KEXYI SYLLABLE KE" + - "YI SYLLABLE KEPYI SYLLABLE KUTYI SYLLABLE KUXYI SYLLABLE KUYI SYLLABLE K" + - "UPYI SYLLABLE KURXYI SYLLABLE KURYI SYLLABLE GGITYI SYLLABLE GGIXYI SYLL" + - "ABLE GGIYI SYLLABLE GGIEXYI SYLLABLE GGIEYI SYLLABLE GGIEPYI SYLLABLE GG" + - "ATYI SYLLABLE GGAXYI SYLLABLE GGAYI SYLLABLE GGAPYI SYLLABLE GGUOTYI SYL" + - "LABLE GGUOXYI SYLLABLE GGUOYI SYLLABLE GGUOPYI SYLLABLE GGOTYI SYLLABLE " + - "GGOXYI SYLLABLE GGOYI SYLLABLE GGOPYI SYLLABLE GGETYI SYLLABLE GGEXYI SY" + - "LLABLE GGEYI SYLLABLE GGEPYI SYLLABLE GGUTYI SYLLABLE GGUXYI SYLLABLE GG" + - "UYI SYLLABLE GGUPYI SYLLABLE GGURXYI SYLLABLE GGURYI SYLLABLE MGIEXYI SY" + - "LLABLE MGIEYI SYLLABLE MGATYI SYLLABLE MGAXYI SYLLABLE MGAYI SYLLABLE MG" + - "APYI SYLLABLE MGUOXYI SYLLABLE MGUOYI SYLLABLE MGUOPYI SYLLABLE MGOTYI S" + - "YLLABLE MGOXYI SYLLABLE MGOYI SYLLABLE MGOPYI SYLLABLE MGEXYI SYLLABLE M" + - "GEYI SYLLABLE MGEPYI SYLLABLE MGUTYI SYLLABLE MGUXYI SYLLABLE MGUYI SYLL" + - "ABLE MGUPYI SYLLABLE MGURXYI SYLLABLE MGURYI SYLLABLE HXITYI SYLLABLE HX" + - "IXYI SYLLABLE HXIYI SYLLABLE HXIPYI SYLLABLE HXIETYI SYLLABLE HXIEXYI SY" + - "LLABLE HXIEYI SYLLABLE HXIEPYI SYLLABLE HXATYI SYLLABLE HXAXYI SYLLABLE " + - "HXAYI SYLLABLE HXAPYI SYLLABLE HXUOTYI SYLLABLE HXUOXYI SYLLABLE HXUOYI " + - "SYLLABLE HXUOPYI SYLLABLE HXOTYI SYLLABLE HXOXYI SYLLABLE HXOYI SYLLABLE" + - " HXOPYI SYLLABLE HXEXYI SYLLABLE HXEYI SYLLABLE HXEPYI SYLLABLE NGIEXYI " + - "SYLLABLE NGIEYI SYLLABLE NGIEPYI SYLLABLE NGATYI SYLLABLE NGAXYI SYLLABL" + - "E NGAYI SYLLABLE NGAPYI SYLLABLE NGUOTYI SYLLABLE NGUOXYI SYLLABLE NGUOY" + - "I SYLLABLE NGOTYI SYLLABLE NGOXYI SYLLABLE NGOYI SYLLABLE NGOPYI SYLLABL" + - "E NGEXYI SYLLABLE NGEYI SYLLABLE NGEPYI SYLLABLE HITYI SYLLABLE HIEXYI S" + - "YLLABLE HIEYI SYLLABLE HATYI SYLLABLE HAXYI SYLLABLE HAYI SYLLABLE HAPYI" + - " SYLLABLE HUOTYI SYLLABLE HUOXYI SYLLABLE HUOYI SYLLABLE HUOPYI SYLLABLE" + - " HOTYI SYLLABLE HOXYI SYLLABLE HOYI SYLLABLE HOPYI SYLLABLE HEXYI SYLLAB" + - "LE HEYI SYLLABLE HEPYI SYLLABLE WATYI SYLLABLE WAXYI SYLLABLE WAYI SYLLA" + - "BLE WAPYI SYLLABLE WUOXYI SYLLABLE WUOYI SYLLABLE WUOPYI SYLLABLE WOXYI " + - "SYLLABLE WOYI SYLLABLE WOPYI SYLLABLE WEXYI SYLLABLE WEYI SYLLABLE WEPYI" + - " SYLLABLE ZITYI SYLLABLE ZIXYI SYLLABLE ZIYI SYLLABLE ZIPYI SYLLABLE ZIE" + - "XYI SYLLABLE ZIEYI SYLLABLE ZIEPYI SYLLABLE ZATYI SYLLABLE ZAXYI SYLLABL" + - "E ZAYI SYLLABLE ZAPYI SYLLABLE ZUOXYI SYLLABLE ZUOYI SYLLABLE ZUOPYI SYL" + - "LABLE ZOTYI SYLLABLE ZOXYI SYLLABLE ZOYI SYLLABLE ZOPYI SYLLABLE ZEXYI S" + - "YLLABLE ZEYI SYLLABLE ZEPYI SYLLABLE ZUTYI SYLLABLE ZUXYI SYLLABLE ZUYI " + - "SYLLABLE ZUPYI SYLLABLE ZURXYI SYLLABLE ZURYI SYLLABLE ZYTYI SYLLABLE ZY" + - "XYI SYLLABLE ZYYI SYLLABLE ZYPYI SYLLABLE ZYRXYI SYLLABLE ZYRYI SYLLABLE" + - " CITYI SYLLABLE CIXYI SYLLABLE CIYI SYLLABLE CIPYI SYLLABLE CIETYI SYLLA" + - "BLE CIEXYI SYLLABLE CIEYI SYLLABLE CIEPYI SYLLABLE CATYI SYLLABLE CAXYI " + - "SYLLABLE CAYI SYLLABLE CAPYI SYLLABLE CUOXYI SYLLABLE CUOYI SYLLABLE CUO") + ("" + - "PYI SYLLABLE COTYI SYLLABLE COXYI SYLLABLE COYI SYLLABLE COPYI SYLLABLE " + - "CEXYI SYLLABLE CEYI SYLLABLE CEPYI SYLLABLE CUTYI SYLLABLE CUXYI SYLLABL" + - "E CUYI SYLLABLE CUPYI SYLLABLE CURXYI SYLLABLE CURYI SYLLABLE CYTYI SYLL" + - "ABLE CYXYI SYLLABLE CYYI SYLLABLE CYPYI SYLLABLE CYRXYI SYLLABLE CYRYI S" + - "YLLABLE ZZITYI SYLLABLE ZZIXYI SYLLABLE ZZIYI SYLLABLE ZZIPYI SYLLABLE Z" + - "ZIETYI SYLLABLE ZZIEXYI SYLLABLE ZZIEYI SYLLABLE ZZIEPYI SYLLABLE ZZATYI" + - " SYLLABLE ZZAXYI SYLLABLE ZZAYI SYLLABLE ZZAPYI SYLLABLE ZZOXYI SYLLABLE" + - " ZZOYI SYLLABLE ZZOPYI SYLLABLE ZZEXYI SYLLABLE ZZEYI SYLLABLE ZZEPYI SY" + - "LLABLE ZZUXYI SYLLABLE ZZUYI SYLLABLE ZZUPYI SYLLABLE ZZURXYI SYLLABLE Z" + - "ZURYI SYLLABLE ZZYTYI SYLLABLE ZZYXYI SYLLABLE ZZYYI SYLLABLE ZZYPYI SYL" + - "LABLE ZZYRXYI SYLLABLE ZZYRYI SYLLABLE NZITYI SYLLABLE NZIXYI SYLLABLE N" + - "ZIYI SYLLABLE NZIPYI SYLLABLE NZIEXYI SYLLABLE NZIEYI SYLLABLE NZIEPYI S" + - "YLLABLE NZATYI SYLLABLE NZAXYI SYLLABLE NZAYI SYLLABLE NZAPYI SYLLABLE N" + - "ZUOXYI SYLLABLE NZUOYI SYLLABLE NZOXYI SYLLABLE NZOPYI SYLLABLE NZEXYI S" + - "YLLABLE NZEYI SYLLABLE NZUXYI SYLLABLE NZUYI SYLLABLE NZUPYI SYLLABLE NZ" + - "URXYI SYLLABLE NZURYI SYLLABLE NZYTYI SYLLABLE NZYXYI SYLLABLE NZYYI SYL" + - "LABLE NZYPYI SYLLABLE NZYRXYI SYLLABLE NZYRYI SYLLABLE SITYI SYLLABLE SI" + - "XYI SYLLABLE SIYI SYLLABLE SIPYI SYLLABLE SIEXYI SYLLABLE SIEYI SYLLABLE" + - " SIEPYI SYLLABLE SATYI SYLLABLE SAXYI SYLLABLE SAYI SYLLABLE SAPYI SYLLA" + - "BLE SUOXYI SYLLABLE SUOYI SYLLABLE SUOPYI SYLLABLE SOTYI SYLLABLE SOXYI " + - "SYLLABLE SOYI SYLLABLE SOPYI SYLLABLE SEXYI SYLLABLE SEYI SYLLABLE SEPYI" + - " SYLLABLE SUTYI SYLLABLE SUXYI SYLLABLE SUYI SYLLABLE SUPYI SYLLABLE SUR" + - "XYI SYLLABLE SURYI SYLLABLE SYTYI SYLLABLE SYXYI SYLLABLE SYYI SYLLABLE " + - "SYPYI SYLLABLE SYRXYI SYLLABLE SYRYI SYLLABLE SSITYI SYLLABLE SSIXYI SYL" + - "LABLE SSIYI SYLLABLE SSIPYI SYLLABLE SSIEXYI SYLLABLE SSIEYI SYLLABLE SS" + - "IEPYI SYLLABLE SSATYI SYLLABLE SSAXYI SYLLABLE SSAYI SYLLABLE SSAPYI SYL" + - "LABLE SSOTYI SYLLABLE SSOXYI SYLLABLE SSOYI SYLLABLE SSOPYI SYLLABLE SSE" + - "XYI SYLLABLE SSEYI SYLLABLE SSEPYI SYLLABLE SSUTYI SYLLABLE SSUXYI SYLLA" + - "BLE SSUYI SYLLABLE SSUPYI SYLLABLE SSYTYI SYLLABLE SSYXYI SYLLABLE SSYYI" + - " SYLLABLE SSYPYI SYLLABLE SSYRXYI SYLLABLE SSYRYI SYLLABLE ZHATYI SYLLAB" + - "LE ZHAXYI SYLLABLE ZHAYI SYLLABLE ZHAPYI SYLLABLE ZHUOXYI SYLLABLE ZHUOY" + - "I SYLLABLE ZHUOPYI SYLLABLE ZHOTYI SYLLABLE ZHOXYI SYLLABLE ZHOYI SYLLAB" + - "LE ZHOPYI SYLLABLE ZHETYI SYLLABLE ZHEXYI SYLLABLE ZHEYI SYLLABLE ZHEPYI" + - " SYLLABLE ZHUTYI SYLLABLE ZHUXYI SYLLABLE ZHUYI SYLLABLE ZHUPYI SYLLABLE" + - " ZHURXYI SYLLABLE ZHURYI SYLLABLE ZHYTYI SYLLABLE ZHYXYI SYLLABLE ZHYYI " + - "SYLLABLE ZHYPYI SYLLABLE ZHYRXYI SYLLABLE ZHYRYI SYLLABLE CHATYI SYLLABL" + - "E CHAXYI SYLLABLE CHAYI SYLLABLE CHAPYI SYLLABLE CHUOTYI SYLLABLE CHUOXY" + - "I SYLLABLE CHUOYI SYLLABLE CHUOPYI SYLLABLE CHOTYI SYLLABLE CHOXYI SYLLA" + - "BLE CHOYI SYLLABLE CHOPYI SYLLABLE CHETYI SYLLABLE CHEXYI SYLLABLE CHEYI" + - " SYLLABLE CHEPYI SYLLABLE CHUXYI SYLLABLE CHUYI SYLLABLE CHUPYI SYLLABLE" + - " CHURXYI SYLLABLE CHURYI SYLLABLE CHYTYI SYLLABLE CHYXYI SYLLABLE CHYYI " + - "SYLLABLE CHYPYI SYLLABLE CHYRXYI SYLLABLE CHYRYI SYLLABLE RRAXYI SYLLABL" + - "E RRAYI SYLLABLE RRUOXYI SYLLABLE RRUOYI SYLLABLE RROTYI SYLLABLE RROXYI" + - " SYLLABLE RROYI SYLLABLE RROPYI SYLLABLE RRETYI SYLLABLE RREXYI SYLLABLE" + - " RREYI SYLLABLE RREPYI SYLLABLE RRUTYI SYLLABLE RRUXYI SYLLABLE RRUYI SY" + - "LLABLE RRUPYI SYLLABLE RRURXYI SYLLABLE RRURYI SYLLABLE RRYTYI SYLLABLE " + - "RRYXYI SYLLABLE RRYYI SYLLABLE RRYPYI SYLLABLE RRYRXYI SYLLABLE RRYRYI S" + - "YLLABLE NRATYI SYLLABLE NRAXYI SYLLABLE NRAYI SYLLABLE NRAPYI SYLLABLE N" + - "ROXYI SYLLABLE NROYI SYLLABLE NROPYI SYLLABLE NRETYI SYLLABLE NREXYI SYL" + - "LABLE NREYI SYLLABLE NREPYI SYLLABLE NRUTYI SYLLABLE NRUXYI SYLLABLE NRU" + - "YI SYLLABLE NRUPYI SYLLABLE NRURXYI SYLLABLE NRURYI SYLLABLE NRYTYI SYLL" + - "ABLE NRYXYI SYLLABLE NRYYI SYLLABLE NRYPYI SYLLABLE NRYRXYI SYLLABLE NRY" + - "RYI SYLLABLE SHATYI SYLLABLE SHAXYI SYLLABLE SHAYI SYLLABLE SHAPYI SYLLA" + - "BLE SHUOXYI SYLLABLE SHUOYI SYLLABLE SHUOPYI SYLLABLE SHOTYI SYLLABLE SH" + - "OXYI SYLLABLE SHOYI SYLLABLE SHOPYI SYLLABLE SHETYI SYLLABLE SHEXYI SYLL" + - "ABLE SHEYI SYLLABLE SHEPYI SYLLABLE SHUTYI SYLLABLE SHUXYI SYLLABLE SHUY" + - "I SYLLABLE SHUPYI SYLLABLE SHURXYI SYLLABLE SHURYI SYLLABLE SHYTYI SYLLA" + - "BLE SHYXYI SYLLABLE SHYYI SYLLABLE SHYPYI SYLLABLE SHYRXYI SYLLABLE SHYR" + - "YI SYLLABLE RATYI SYLLABLE RAXYI SYLLABLE RAYI SYLLABLE RAPYI SYLLABLE R" + - "UOXYI SYLLABLE RUOYI SYLLABLE RUOPYI SYLLABLE ROTYI SYLLABLE ROXYI SYLLA" + - "BLE ROYI SYLLABLE ROPYI SYLLABLE REXYI SYLLABLE REYI SYLLABLE REPYI SYLL" + - "ABLE RUTYI SYLLABLE RUXYI SYLLABLE RUYI SYLLABLE RUPYI SYLLABLE RURXYI S" + - "YLLABLE RURYI SYLLABLE RYTYI SYLLABLE RYXYI SYLLABLE RYYI SYLLABLE RYPYI" + - " SYLLABLE RYRXYI SYLLABLE RYRYI SYLLABLE JITYI SYLLABLE JIXYI SYLLABLE J") + ("" + - "IYI SYLLABLE JIPYI SYLLABLE JIETYI SYLLABLE JIEXYI SYLLABLE JIEYI SYLLAB" + - "LE JIEPYI SYLLABLE JUOTYI SYLLABLE JUOXYI SYLLABLE JUOYI SYLLABLE JUOPYI" + - " SYLLABLE JOTYI SYLLABLE JOXYI SYLLABLE JOYI SYLLABLE JOPYI SYLLABLE JUT" + - "YI SYLLABLE JUXYI SYLLABLE JUYI SYLLABLE JUPYI SYLLABLE JURXYI SYLLABLE " + - "JURYI SYLLABLE JYTYI SYLLABLE JYXYI SYLLABLE JYYI SYLLABLE JYPYI SYLLABL" + - "E JYRXYI SYLLABLE JYRYI SYLLABLE QITYI SYLLABLE QIXYI SYLLABLE QIYI SYLL" + - "ABLE QIPYI SYLLABLE QIETYI SYLLABLE QIEXYI SYLLABLE QIEYI SYLLABLE QIEPY" + - "I SYLLABLE QUOTYI SYLLABLE QUOXYI SYLLABLE QUOYI SYLLABLE QUOPYI SYLLABL" + - "E QOTYI SYLLABLE QOXYI SYLLABLE QOYI SYLLABLE QOPYI SYLLABLE QUTYI SYLLA" + - "BLE QUXYI SYLLABLE QUYI SYLLABLE QUPYI SYLLABLE QURXYI SYLLABLE QURYI SY" + - "LLABLE QYTYI SYLLABLE QYXYI SYLLABLE QYYI SYLLABLE QYPYI SYLLABLE QYRXYI" + - " SYLLABLE QYRYI SYLLABLE JJITYI SYLLABLE JJIXYI SYLLABLE JJIYI SYLLABLE " + - "JJIPYI SYLLABLE JJIETYI SYLLABLE JJIEXYI SYLLABLE JJIEYI SYLLABLE JJIEPY" + - "I SYLLABLE JJUOXYI SYLLABLE JJUOYI SYLLABLE JJUOPYI SYLLABLE JJOTYI SYLL" + - "ABLE JJOXYI SYLLABLE JJOYI SYLLABLE JJOPYI SYLLABLE JJUTYI SYLLABLE JJUX" + - "YI SYLLABLE JJUYI SYLLABLE JJUPYI SYLLABLE JJURXYI SYLLABLE JJURYI SYLLA" + - "BLE JJYTYI SYLLABLE JJYXYI SYLLABLE JJYYI SYLLABLE JJYPYI SYLLABLE NJITY" + - "I SYLLABLE NJIXYI SYLLABLE NJIYI SYLLABLE NJIPYI SYLLABLE NJIETYI SYLLAB" + - "LE NJIEXYI SYLLABLE NJIEYI SYLLABLE NJIEPYI SYLLABLE NJUOXYI SYLLABLE NJ" + - "UOYI SYLLABLE NJOTYI SYLLABLE NJOXYI SYLLABLE NJOYI SYLLABLE NJOPYI SYLL" + - "ABLE NJUXYI SYLLABLE NJUYI SYLLABLE NJUPYI SYLLABLE NJURXYI SYLLABLE NJU" + - "RYI SYLLABLE NJYTYI SYLLABLE NJYXYI SYLLABLE NJYYI SYLLABLE NJYPYI SYLLA" + - "BLE NJYRXYI SYLLABLE NJYRYI SYLLABLE NYITYI SYLLABLE NYIXYI SYLLABLE NYI" + - "YI SYLLABLE NYIPYI SYLLABLE NYIETYI SYLLABLE NYIEXYI SYLLABLE NYIEYI SYL" + - "LABLE NYIEPYI SYLLABLE NYUOXYI SYLLABLE NYUOYI SYLLABLE NYUOPYI SYLLABLE" + - " NYOTYI SYLLABLE NYOXYI SYLLABLE NYOYI SYLLABLE NYOPYI SYLLABLE NYUTYI S" + - "YLLABLE NYUXYI SYLLABLE NYUYI SYLLABLE NYUPYI SYLLABLE XITYI SYLLABLE XI" + - "XYI SYLLABLE XIYI SYLLABLE XIPYI SYLLABLE XIETYI SYLLABLE XIEXYI SYLLABL" + - "E XIEYI SYLLABLE XIEPYI SYLLABLE XUOXYI SYLLABLE XUOYI SYLLABLE XOTYI SY" + - "LLABLE XOXYI SYLLABLE XOYI SYLLABLE XOPYI SYLLABLE XYTYI SYLLABLE XYXYI " + - "SYLLABLE XYYI SYLLABLE XYPYI SYLLABLE XYRXYI SYLLABLE XYRYI SYLLABLE YIT" + - "YI SYLLABLE YIXYI SYLLABLE YIYI SYLLABLE YIPYI SYLLABLE YIETYI SYLLABLE " + - "YIEXYI SYLLABLE YIEYI SYLLABLE YIEPYI SYLLABLE YUOTYI SYLLABLE YUOXYI SY" + - "LLABLE YUOYI SYLLABLE YUOPYI SYLLABLE YOTYI SYLLABLE YOXYI SYLLABLE YOYI" + - " SYLLABLE YOPYI SYLLABLE YUTYI SYLLABLE YUXYI SYLLABLE YUYI SYLLABLE YUP" + - "YI SYLLABLE YURXYI SYLLABLE YURYI SYLLABLE YYTYI SYLLABLE YYXYI SYLLABLE" + - " YYYI SYLLABLE YYPYI SYLLABLE YYRXYI SYLLABLE YYRYI RADICAL QOTYI RADICA" + - "L LIYI RADICAL KITYI RADICAL NYIPYI RADICAL CYPYI RADICAL SSIYI RADICAL " + - "GGOPYI RADICAL GEPYI RADICAL MIYI RADICAL HXITYI RADICAL LYRYI RADICAL B" + - "BUTYI RADICAL MOPYI RADICAL YOYI RADICAL PUTYI RADICAL HXUOYI RADICAL TA" + - "TYI RADICAL GAYI RADICAL ZUPYI RADICAL CYTYI RADICAL DDURYI RADICAL BURY" + - "I RADICAL GGUOYI RADICAL NYOPYI RADICAL TUYI RADICAL OPYI RADICAL JJUTYI" + - " RADICAL ZOTYI RADICAL PYTYI RADICAL HMOYI RADICAL YITYI RADICAL VURYI R" + - "ADICAL SHYYI RADICAL VEPYI RADICAL ZAYI RADICAL JOYI RADICAL NZUPYI RADI" + - "CAL JJYYI RADICAL GOTYI RADICAL JJIEYI RADICAL WOYI RADICAL DUYI RADICAL" + - " SHURYI RADICAL LIEYI RADICAL CYYI RADICAL CUOPYI RADICAL CIPYI RADICAL " + - "HXOPYI RADICAL SHATYI RADICAL ZURYI RADICAL SHOPYI RADICAL CHEYI RADICAL" + - " ZZIETYI RADICAL NBIEYI RADICAL KELISU LETTER BALISU LETTER PALISU LETTE" + - "R PHALISU LETTER DALISU LETTER TALISU LETTER THALISU LETTER GALISU LETTE" + - "R KALISU LETTER KHALISU LETTER JALISU LETTER CALISU LETTER CHALISU LETTE" + - "R DZALISU LETTER TSALISU LETTER TSHALISU LETTER MALISU LETTER NALISU LET" + - "TER LALISU LETTER SALISU LETTER ZHALISU LETTER ZALISU LETTER NGALISU LET" + - "TER HALISU LETTER XALISU LETTER HHALISU LETTER FALISU LETTER WALISU LETT" + - "ER SHALISU LETTER YALISU LETTER GHALISU LETTER ALISU LETTER AELISU LETTE" + - "R ELISU LETTER EULISU LETTER ILISU LETTER OLISU LETTER ULISU LETTER UELI" + - "SU LETTER UHLISU LETTER OELISU LETTER TONE MYA TILISU LETTER TONE NA POL" + - "ISU LETTER TONE MYA CYALISU LETTER TONE MYA BOLISU LETTER TONE MYA NALIS" + - "U LETTER TONE MYA JEULISU PUNCTUATION COMMALISU PUNCTUATION FULL STOPVAI" + - " SYLLABLE EEVAI SYLLABLE EENVAI SYLLABLE HEEVAI SYLLABLE WEEVAI SYLLABLE" + - " WEENVAI SYLLABLE PEEVAI SYLLABLE BHEEVAI SYLLABLE BEEVAI SYLLABLE MBEEV" + - "AI SYLLABLE KPEEVAI SYLLABLE MGBEEVAI SYLLABLE GBEEVAI SYLLABLE FEEVAI S" + - "YLLABLE VEEVAI SYLLABLE TEEVAI SYLLABLE THEEVAI SYLLABLE DHEEVAI SYLLABL" + - "E DHHEEVAI SYLLABLE LEEVAI SYLLABLE REEVAI SYLLABLE DEEVAI SYLLABLE NDEE" + - "VAI SYLLABLE SEEVAI SYLLABLE SHEEVAI SYLLABLE ZEEVAI SYLLABLE ZHEEVAI SY") + ("" + - "LLABLE CEEVAI SYLLABLE JEEVAI SYLLABLE NJEEVAI SYLLABLE YEEVAI SYLLABLE " + - "KEEVAI SYLLABLE NGGEEVAI SYLLABLE GEEVAI SYLLABLE MEEVAI SYLLABLE NEEVAI" + - " SYLLABLE NYEEVAI SYLLABLE IVAI SYLLABLE INVAI SYLLABLE HIVAI SYLLABLE H" + - "INVAI SYLLABLE WIVAI SYLLABLE WINVAI SYLLABLE PIVAI SYLLABLE BHIVAI SYLL" + - "ABLE BIVAI SYLLABLE MBIVAI SYLLABLE KPIVAI SYLLABLE MGBIVAI SYLLABLE GBI" + - "VAI SYLLABLE FIVAI SYLLABLE VIVAI SYLLABLE TIVAI SYLLABLE THIVAI SYLLABL" + - "E DHIVAI SYLLABLE DHHIVAI SYLLABLE LIVAI SYLLABLE RIVAI SYLLABLE DIVAI S" + - "YLLABLE NDIVAI SYLLABLE SIVAI SYLLABLE SHIVAI SYLLABLE ZIVAI SYLLABLE ZH" + - "IVAI SYLLABLE CIVAI SYLLABLE JIVAI SYLLABLE NJIVAI SYLLABLE YIVAI SYLLAB" + - "LE KIVAI SYLLABLE NGGIVAI SYLLABLE GIVAI SYLLABLE MIVAI SYLLABLE NIVAI S" + - "YLLABLE NYIVAI SYLLABLE AVAI SYLLABLE ANVAI SYLLABLE NGANVAI SYLLABLE HA" + - "VAI SYLLABLE HANVAI SYLLABLE WAVAI SYLLABLE WANVAI SYLLABLE PAVAI SYLLAB" + - "LE BHAVAI SYLLABLE BAVAI SYLLABLE MBAVAI SYLLABLE KPAVAI SYLLABLE KPANVA" + - "I SYLLABLE MGBAVAI SYLLABLE GBAVAI SYLLABLE FAVAI SYLLABLE VAVAI SYLLABL" + - "E TAVAI SYLLABLE THAVAI SYLLABLE DHAVAI SYLLABLE DHHAVAI SYLLABLE LAVAI " + - "SYLLABLE RAVAI SYLLABLE DAVAI SYLLABLE NDAVAI SYLLABLE SAVAI SYLLABLE SH" + - "AVAI SYLLABLE ZAVAI SYLLABLE ZHAVAI SYLLABLE CAVAI SYLLABLE JAVAI SYLLAB" + - "LE NJAVAI SYLLABLE YAVAI SYLLABLE KAVAI SYLLABLE KANVAI SYLLABLE NGGAVAI" + - " SYLLABLE GAVAI SYLLABLE MAVAI SYLLABLE NAVAI SYLLABLE NYAVAI SYLLABLE O" + - "OVAI SYLLABLE OONVAI SYLLABLE HOOVAI SYLLABLE WOOVAI SYLLABLE WOONVAI SY" + - "LLABLE POOVAI SYLLABLE BHOOVAI SYLLABLE BOOVAI SYLLABLE MBOOVAI SYLLABLE" + - " KPOOVAI SYLLABLE MGBOOVAI SYLLABLE GBOOVAI SYLLABLE FOOVAI SYLLABLE VOO" + - "VAI SYLLABLE TOOVAI SYLLABLE THOOVAI SYLLABLE DHOOVAI SYLLABLE DHHOOVAI " + - "SYLLABLE LOOVAI SYLLABLE ROOVAI SYLLABLE DOOVAI SYLLABLE NDOOVAI SYLLABL" + - "E SOOVAI SYLLABLE SHOOVAI SYLLABLE ZOOVAI SYLLABLE ZHOOVAI SYLLABLE COOV" + - "AI SYLLABLE JOOVAI SYLLABLE NJOOVAI SYLLABLE YOOVAI SYLLABLE KOOVAI SYLL" + - "ABLE NGGOOVAI SYLLABLE GOOVAI SYLLABLE MOOVAI SYLLABLE NOOVAI SYLLABLE N" + - "YOOVAI SYLLABLE UVAI SYLLABLE UNVAI SYLLABLE HUVAI SYLLABLE HUNVAI SYLLA" + - "BLE WUVAI SYLLABLE WUNVAI SYLLABLE PUVAI SYLLABLE BHUVAI SYLLABLE BUVAI " + - "SYLLABLE MBUVAI SYLLABLE KPUVAI SYLLABLE MGBUVAI SYLLABLE GBUVAI SYLLABL" + - "E FUVAI SYLLABLE VUVAI SYLLABLE TUVAI SYLLABLE THUVAI SYLLABLE DHUVAI SY" + - "LLABLE DHHUVAI SYLLABLE LUVAI SYLLABLE RUVAI SYLLABLE DUVAI SYLLABLE NDU" + - "VAI SYLLABLE SUVAI SYLLABLE SHUVAI SYLLABLE ZUVAI SYLLABLE ZHUVAI SYLLAB" + - "LE CUVAI SYLLABLE JUVAI SYLLABLE NJUVAI SYLLABLE YUVAI SYLLABLE KUVAI SY" + - "LLABLE NGGUVAI SYLLABLE GUVAI SYLLABLE MUVAI SYLLABLE NUVAI SYLLABLE NYU" + - "VAI SYLLABLE OVAI SYLLABLE ONVAI SYLLABLE NGONVAI SYLLABLE HOVAI SYLLABL" + - "E HONVAI SYLLABLE WOVAI SYLLABLE WONVAI SYLLABLE POVAI SYLLABLE BHOVAI S" + - "YLLABLE BOVAI SYLLABLE MBOVAI SYLLABLE KPOVAI SYLLABLE MGBOVAI SYLLABLE " + - "GBOVAI SYLLABLE GBONVAI SYLLABLE FOVAI SYLLABLE VOVAI SYLLABLE TOVAI SYL" + - "LABLE THOVAI SYLLABLE DHOVAI SYLLABLE DHHOVAI SYLLABLE LOVAI SYLLABLE RO" + - "VAI SYLLABLE DOVAI SYLLABLE NDOVAI SYLLABLE SOVAI SYLLABLE SHOVAI SYLLAB" + - "LE ZOVAI SYLLABLE ZHOVAI SYLLABLE COVAI SYLLABLE JOVAI SYLLABLE NJOVAI S" + - "YLLABLE YOVAI SYLLABLE KOVAI SYLLABLE NGGOVAI SYLLABLE GOVAI SYLLABLE MO" + - "VAI SYLLABLE NOVAI SYLLABLE NYOVAI SYLLABLE EVAI SYLLABLE ENVAI SYLLABLE" + - " NGENVAI SYLLABLE HEVAI SYLLABLE HENVAI SYLLABLE WEVAI SYLLABLE WENVAI S" + - "YLLABLE PEVAI SYLLABLE BHEVAI SYLLABLE BEVAI SYLLABLE MBEVAI SYLLABLE KP" + - "EVAI SYLLABLE KPENVAI SYLLABLE MGBEVAI SYLLABLE GBEVAI SYLLABLE GBENVAI " + - "SYLLABLE FEVAI SYLLABLE VEVAI SYLLABLE TEVAI SYLLABLE THEVAI SYLLABLE DH" + - "EVAI SYLLABLE DHHEVAI SYLLABLE LEVAI SYLLABLE REVAI SYLLABLE DEVAI SYLLA" + - "BLE NDEVAI SYLLABLE SEVAI SYLLABLE SHEVAI SYLLABLE ZEVAI SYLLABLE ZHEVAI" + - " SYLLABLE CEVAI SYLLABLE JEVAI SYLLABLE NJEVAI SYLLABLE YEVAI SYLLABLE K" + - "EVAI SYLLABLE NGGEVAI SYLLABLE NGGENVAI SYLLABLE GEVAI SYLLABLE GENVAI S" + - "YLLABLE MEVAI SYLLABLE NEVAI SYLLABLE NYEVAI SYLLABLE NGVAI SYLLABLE LEN" + - "GTHENERVAI COMMAVAI FULL STOPVAI QUESTION MARKVAI SYLLABLE NDOLE FAVAI S" + - "YLLABLE NDOLE KAVAI SYLLABLE NDOLE SOOVAI SYMBOL FEENGVAI SYMBOL KEENGVA" + - "I SYMBOL TINGVAI SYMBOL NIIVAI SYMBOL BANGVAI SYMBOL FAAVAI SYMBOL TAAVA" + - "I SYMBOL DANGVAI SYMBOL DOONGVAI SYMBOL KUNGVAI SYMBOL TONGVAI SYMBOL DO" + - "-OVAI SYMBOL JONGVAI DIGIT ZEROVAI DIGIT ONEVAI DIGIT TWOVAI DIGIT THREE" + - "VAI DIGIT FOURVAI DIGIT FIVEVAI DIGIT SIXVAI DIGIT SEVENVAI DIGIT EIGHTV" + - "AI DIGIT NINEVAI SYLLABLE NDOLE MAVAI SYLLABLE NDOLE DOCYRILLIC CAPITAL " + - "LETTER ZEMLYACYRILLIC SMALL LETTER ZEMLYACYRILLIC CAPITAL LETTER DZELOCY" + - "RILLIC SMALL LETTER DZELOCYRILLIC CAPITAL LETTER REVERSED DZECYRILLIC SM" + - "ALL LETTER REVERSED DZECYRILLIC CAPITAL LETTER IOTACYRILLIC SMALL LETTER" + - " IOTACYRILLIC CAPITAL LETTER DJERVCYRILLIC SMALL LETTER DJERVCYRILLIC CA") + ("" + - "PITAL LETTER MONOGRAPH UKCYRILLIC SMALL LETTER MONOGRAPH UKCYRILLIC CAPI" + - "TAL LETTER BROAD OMEGACYRILLIC SMALL LETTER BROAD OMEGACYRILLIC CAPITAL " + - "LETTER NEUTRAL YERCYRILLIC SMALL LETTER NEUTRAL YERCYRILLIC CAPITAL LETT" + - "ER YERU WITH BACK YERCYRILLIC SMALL LETTER YERU WITH BACK YERCYRILLIC CA" + - "PITAL LETTER IOTIFIED YATCYRILLIC SMALL LETTER IOTIFIED YATCYRILLIC CAPI" + - "TAL LETTER REVERSED YUCYRILLIC SMALL LETTER REVERSED YUCYRILLIC CAPITAL " + - "LETTER IOTIFIED ACYRILLIC SMALL LETTER IOTIFIED ACYRILLIC CAPITAL LETTER" + - " CLOSED LITTLE YUSCYRILLIC SMALL LETTER CLOSED LITTLE YUSCYRILLIC CAPITA" + - "L LETTER BLENDED YUSCYRILLIC SMALL LETTER BLENDED YUSCYRILLIC CAPITAL LE" + - "TTER IOTIFIED CLOSED LITTLE YUSCYRILLIC SMALL LETTER IOTIFIED CLOSED LIT" + - "TLE YUSCYRILLIC CAPITAL LETTER YNCYRILLIC SMALL LETTER YNCYRILLIC CAPITA" + - "L LETTER REVERSED TSECYRILLIC SMALL LETTER REVERSED TSECYRILLIC CAPITAL " + - "LETTER SOFT DECYRILLIC SMALL LETTER SOFT DECYRILLIC CAPITAL LETTER SOFT " + - "ELCYRILLIC SMALL LETTER SOFT ELCYRILLIC CAPITAL LETTER SOFT EMCYRILLIC S" + - "MALL LETTER SOFT EMCYRILLIC CAPITAL LETTER MONOCULAR OCYRILLIC SMALL LET" + - "TER MONOCULAR OCYRILLIC CAPITAL LETTER BINOCULAR OCYRILLIC SMALL LETTER " + - "BINOCULAR OCYRILLIC CAPITAL LETTER DOUBLE MONOCULAR OCYRILLIC SMALL LETT" + - "ER DOUBLE MONOCULAR OCYRILLIC LETTER MULTIOCULAR OCOMBINING CYRILLIC VZM" + - "ETCOMBINING CYRILLIC TEN MILLIONS SIGNCOMBINING CYRILLIC HUNDRED MILLION" + - "S SIGNCOMBINING CYRILLIC THOUSAND MILLIONS SIGNSLAVONIC ASTERISKCOMBININ" + - "G CYRILLIC LETTER UKRAINIAN IECOMBINING CYRILLIC LETTER ICOMBINING CYRIL" + - "LIC LETTER YICOMBINING CYRILLIC LETTER UCOMBINING CYRILLIC LETTER HARD S" + - "IGNCOMBINING CYRILLIC LETTER YERUCOMBINING CYRILLIC LETTER SOFT SIGNCOMB" + - "INING CYRILLIC LETTER OMEGACOMBINING CYRILLIC KAVYKACOMBINING CYRILLIC P" + - "AYEROKCYRILLIC KAVYKACYRILLIC PAYEROKCYRILLIC CAPITAL LETTER DWECYRILLIC" + - " SMALL LETTER DWECYRILLIC CAPITAL LETTER DZWECYRILLIC SMALL LETTER DZWEC" + - "YRILLIC CAPITAL LETTER ZHWECYRILLIC SMALL LETTER ZHWECYRILLIC CAPITAL LE" + - "TTER CCHECYRILLIC SMALL LETTER CCHECYRILLIC CAPITAL LETTER DZZECYRILLIC " + - "SMALL LETTER DZZECYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOKCYRILLIC SMA" + - "LL LETTER TE WITH MIDDLE HOOKCYRILLIC CAPITAL LETTER TWECYRILLIC SMALL L" + - "ETTER TWECYRILLIC CAPITAL LETTER TSWECYRILLIC SMALL LETTER TSWECYRILLIC " + - "CAPITAL LETTER TSSECYRILLIC SMALL LETTER TSSECYRILLIC CAPITAL LETTER TCH" + - "ECYRILLIC SMALL LETTER TCHECYRILLIC CAPITAL LETTER HWECYRILLIC SMALL LET" + - "TER HWECYRILLIC CAPITAL LETTER SHWECYRILLIC SMALL LETTER SHWECYRILLIC CA" + - "PITAL LETTER DOUBLE OCYRILLIC SMALL LETTER DOUBLE OCYRILLIC CAPITAL LETT" + - "ER CROSSED OCYRILLIC SMALL LETTER CROSSED OMODIFIER LETTER CYRILLIC HARD" + - " SIGNMODIFIER LETTER CYRILLIC SOFT SIGNCOMBINING CYRILLIC LETTER EFCOMBI" + - "NING CYRILLIC LETTER IOTIFIED EBAMUM LETTER ABAMUM LETTER KABAMUM LETTER" + - " UBAMUM LETTER KUBAMUM LETTER EEBAMUM LETTER REEBAMUM LETTER TAEBAMUM LE" + - "TTER OBAMUM LETTER NYIBAMUM LETTER IBAMUM LETTER LABAMUM LETTER PABAMUM " + - "LETTER RIIBAMUM LETTER RIEEBAMUM LETTER LEEEEBAMUM LETTER MEEEEBAMUM LET" + - "TER TAABAMUM LETTER NDAABAMUM LETTER NJAEMBAMUM LETTER MBAMUM LETTER SUU" + - "BAMUM LETTER MUBAMUM LETTER SHIIBAMUM LETTER SIBAMUM LETTER SHEUXBAMUM L" + - "ETTER SEUXBAMUM LETTER KYEEBAMUM LETTER KETBAMUM LETTER NUAEBAMUM LETTER" + - " NUBAMUM LETTER NJUAEBAMUM LETTER YOQBAMUM LETTER SHUBAMUM LETTER YUQBAM" + - "UM LETTER YABAMUM LETTER NSHABAMUM LETTER KEUXBAMUM LETTER PEUXBAMUM LET" + - "TER NJEEBAMUM LETTER NTEEBAMUM LETTER PUEBAMUM LETTER WUEBAMUM LETTER PE" + - "EBAMUM LETTER FEEBAMUM LETTER RUBAMUM LETTER LUBAMUM LETTER MIBAMUM LETT" + - "ER NIBAMUM LETTER REUXBAMUM LETTER RAEBAMUM LETTER KENBAMUM LETTER NGKWA" + - "ENBAMUM LETTER NGGABAMUM LETTER NGABAMUM LETTER SHOBAMUM LETTER PUAEBAMU" + - "M LETTER FUBAMUM LETTER FOMBAMUM LETTER WABAMUM LETTER NABAMUM LETTER LI" + - "BAMUM LETTER PIBAMUM LETTER LOQBAMUM LETTER KOBAMUM LETTER MBENBAMUM LET" + - "TER RENBAMUM LETTER MENBAMUM LETTER MABAMUM LETTER TIBAMUM LETTER KIBAMU" + - "M LETTER MOBAMUM LETTER MBAABAMUM LETTER TETBAMUM LETTER KPABAMUM LETTER" + - " TENBAMUM LETTER NTUUBAMUM LETTER SAMBABAMUM LETTER FAAMAEBAMUM LETTER K" + - "OVUUBAMUM LETTER KOGHOMBAMUM COMBINING MARK KOQNDONBAMUM COMBINING MARK " + - "TUKWENTISBAMUM NJAEMLIBAMUM FULL STOPBAMUM COLONBAMUM COMMABAMUM SEMICOL" + - "ONBAMUM QUESTION MARKMODIFIER LETTER CHINESE TONE YIN PINGMODIFIER LETTE" + - "R CHINESE TONE YANG PINGMODIFIER LETTER CHINESE TONE YIN SHANGMODIFIER L" + - "ETTER CHINESE TONE YANG SHANGMODIFIER LETTER CHINESE TONE YIN QUMODIFIER" + - " LETTER CHINESE TONE YANG QUMODIFIER LETTER CHINESE TONE YIN RUMODIFIER " + - "LETTER CHINESE TONE YANG RUMODIFIER LETTER EXTRA-HIGH DOTTED TONE BARMOD" + - "IFIER LETTER HIGH DOTTED TONE BARMODIFIER LETTER MID DOTTED TONE BARMODI" + - "FIER LETTER LOW DOTTED TONE BARMODIFIER LETTER EXTRA-LOW DOTTED TONE BAR") + ("" + - "MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BARMODIFIER LETTER HIGH" + - " DOTTED LEFT-STEM TONE BARMODIFIER LETTER MID DOTTED LEFT-STEM TONE BARM" + - "ODIFIER LETTER LOW DOTTED LEFT-STEM TONE BARMODIFIER LETTER EXTRA-LOW DO" + - "TTED LEFT-STEM TONE BARMODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BARMODI" + - "FIER LETTER HIGH LEFT-STEM TONE BARMODIFIER LETTER MID LEFT-STEM TONE BA" + - "RMODIFIER LETTER LOW LEFT-STEM TONE BARMODIFIER LETTER EXTRA-LOW LEFT-ST" + - "EM TONE BARMODIFIER LETTER DOT VERTICAL BARMODIFIER LETTER DOT SLASHMODI" + - "FIER LETTER DOT HORIZONTAL BARMODIFIER LETTER LOWER RIGHT CORNER ANGLEMO" + - "DIFIER LETTER RAISED UP ARROWMODIFIER LETTER RAISED DOWN ARROWMODIFIER L" + - "ETTER RAISED EXCLAMATION MARKMODIFIER LETTER RAISED INVERTED EXCLAMATION" + - " MARKMODIFIER LETTER LOW INVERTED EXCLAMATION MARKMODIFIER LETTER STRESS" + - " AND HIGH TONEMODIFIER LETTER STRESS AND LOW TONELATIN CAPITAL LETTER EG" + - "YPTOLOGICAL ALEFLATIN SMALL LETTER EGYPTOLOGICAL ALEFLATIN CAPITAL LETTE" + - "R EGYPTOLOGICAL AINLATIN SMALL LETTER EGYPTOLOGICAL AINLATIN CAPITAL LET" + - "TER HENGLATIN SMALL LETTER HENGLATIN CAPITAL LETTER TZLATIN SMALL LETTER" + - " TZLATIN CAPITAL LETTER TRESILLOLATIN SMALL LETTER TRESILLOLATIN CAPITAL" + - " LETTER CUATRILLOLATIN SMALL LETTER CUATRILLOLATIN CAPITAL LETTER CUATRI" + - "LLO WITH COMMALATIN SMALL LETTER CUATRILLO WITH COMMALATIN LETTER SMALL " + - "CAPITAL FLATIN LETTER SMALL CAPITAL SLATIN CAPITAL LETTER AALATIN SMALL " + - "LETTER AALATIN CAPITAL LETTER AOLATIN SMALL LETTER AOLATIN CAPITAL LETTE" + - "R AULATIN SMALL LETTER AULATIN CAPITAL LETTER AVLATIN SMALL LETTER AVLAT" + - "IN CAPITAL LETTER AV WITH HORIZONTAL BARLATIN SMALL LETTER AV WITH HORIZ" + - "ONTAL BARLATIN CAPITAL LETTER AYLATIN SMALL LETTER AYLATIN CAPITAL LETTE" + - "R REVERSED C WITH DOTLATIN SMALL LETTER REVERSED C WITH DOTLATIN CAPITAL" + - " LETTER K WITH STROKELATIN SMALL LETTER K WITH STROKELATIN CAPITAL LETTE" + - "R K WITH DIAGONAL STROKELATIN SMALL LETTER K WITH DIAGONAL STROKELATIN C" + - "APITAL LETTER K WITH STROKE AND DIAGONAL STROKELATIN SMALL LETTER K WITH" + - " STROKE AND DIAGONAL STROKELATIN CAPITAL LETTER BROKEN LLATIN SMALL LETT" + - "ER BROKEN LLATIN CAPITAL LETTER L WITH HIGH STROKELATIN SMALL LETTER L W" + - "ITH HIGH STROKELATIN CAPITAL LETTER O WITH LONG STROKE OVERLAYLATIN SMAL" + - "L LETTER O WITH LONG STROKE OVERLAYLATIN CAPITAL LETTER O WITH LOOPLATIN" + - " SMALL LETTER O WITH LOOPLATIN CAPITAL LETTER OOLATIN SMALL LETTER OOLAT" + - "IN CAPITAL LETTER P WITH STROKE THROUGH DESCENDERLATIN SMALL LETTER P WI" + - "TH STROKE THROUGH DESCENDERLATIN CAPITAL LETTER P WITH FLOURISHLATIN SMA" + - "LL LETTER P WITH FLOURISHLATIN CAPITAL LETTER P WITH SQUIRREL TAILLATIN " + - "SMALL LETTER P WITH SQUIRREL TAILLATIN CAPITAL LETTER Q WITH STROKE THRO" + - "UGH DESCENDERLATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDERLATIN CAP" + - "ITAL LETTER Q WITH DIAGONAL STROKELATIN SMALL LETTER Q WITH DIAGONAL STR" + - "OKELATIN CAPITAL LETTER R ROTUNDALATIN SMALL LETTER R ROTUNDALATIN CAPIT" + - "AL LETTER RUM ROTUNDALATIN SMALL LETTER RUM ROTUNDALATIN CAPITAL LETTER " + - "V WITH DIAGONAL STROKELATIN SMALL LETTER V WITH DIAGONAL STROKELATIN CAP" + - "ITAL LETTER VYLATIN SMALL LETTER VYLATIN CAPITAL LETTER VISIGOTHIC ZLATI" + - "N SMALL LETTER VISIGOTHIC ZLATIN CAPITAL LETTER THORN WITH STROKELATIN S" + - "MALL LETTER THORN WITH STROKELATIN CAPITAL LETTER THORN WITH STROKE THRO" + - "UGH DESCENDERLATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDERLATIN" + - " CAPITAL LETTER VENDLATIN SMALL LETTER VENDLATIN CAPITAL LETTER ETLATIN " + - "SMALL LETTER ETLATIN CAPITAL LETTER ISLATIN SMALL LETTER ISLATIN CAPITAL" + - " LETTER CONLATIN SMALL LETTER CONMODIFIER LETTER USLATIN SMALL LETTER DU" + - "MLATIN SMALL LETTER LUMLATIN SMALL LETTER MUMLATIN SMALL LETTER NUMLATIN" + - " SMALL LETTER RUMLATIN LETTER SMALL CAPITAL RUMLATIN SMALL LETTER TUMLAT" + - "IN SMALL LETTER UMLATIN CAPITAL LETTER INSULAR DLATIN SMALL LETTER INSUL" + - "AR DLATIN CAPITAL LETTER INSULAR FLATIN SMALL LETTER INSULAR FLATIN CAPI" + - "TAL LETTER INSULAR GLATIN CAPITAL LETTER TURNED INSULAR GLATIN SMALL LET" + - "TER TURNED INSULAR GLATIN CAPITAL LETTER TURNED LLATIN SMALL LETTER TURN" + - "ED LLATIN CAPITAL LETTER INSULAR RLATIN SMALL LETTER INSULAR RLATIN CAPI" + - "TAL LETTER INSULAR SLATIN SMALL LETTER INSULAR SLATIN CAPITAL LETTER INS" + - "ULAR TLATIN SMALL LETTER INSULAR TMODIFIER LETTER LOW CIRCUMFLEX ACCENTM" + - "ODIFIER LETTER COLONMODIFIER LETTER SHORT EQUALS SIGNLATIN CAPITAL LETTE" + - "R SALTILLOLATIN SMALL LETTER SALTILLOLATIN CAPITAL LETTER TURNED HLATIN " + - "SMALL LETTER L WITH RETROFLEX HOOK AND BELTLATIN LETTER SINOLOGICAL DOTL" + - "ATIN CAPITAL LETTER N WITH DESCENDERLATIN SMALL LETTER N WITH DESCENDERL" + - "ATIN CAPITAL LETTER C WITH BARLATIN SMALL LETTER C WITH BARLATIN SMALL L" + - "ETTER C WITH PALATAL HOOKLATIN SMALL LETTER H WITH PALATAL HOOKLATIN CAP" + - "ITAL LETTER B WITH FLOURISHLATIN SMALL LETTER B WITH FLOURISHLATIN CAPIT") + ("" + - "AL LETTER F WITH STROKELATIN SMALL LETTER F WITH STROKELATIN CAPITAL LET" + - "TER VOLAPUK AELATIN SMALL LETTER VOLAPUK AELATIN CAPITAL LETTER VOLAPUK " + - "OELATIN SMALL LETTER VOLAPUK OELATIN CAPITAL LETTER VOLAPUK UELATIN SMAL" + - "L LETTER VOLAPUK UELATIN CAPITAL LETTER G WITH OBLIQUE STROKELATIN SMALL" + - " LETTER G WITH OBLIQUE STROKELATIN CAPITAL LETTER K WITH OBLIQUE STROKEL" + - "ATIN SMALL LETTER K WITH OBLIQUE STROKELATIN CAPITAL LETTER N WITH OBLIQ" + - "UE STROKELATIN SMALL LETTER N WITH OBLIQUE STROKELATIN CAPITAL LETTER R " + - "WITH OBLIQUE STROKELATIN SMALL LETTER R WITH OBLIQUE STROKELATIN CAPITAL" + - " LETTER S WITH OBLIQUE STROKELATIN SMALL LETTER S WITH OBLIQUE STROKELAT" + - "IN CAPITAL LETTER H WITH HOOKLATIN CAPITAL LETTER REVERSED OPEN ELATIN C" + - "APITAL LETTER SCRIPT GLATIN CAPITAL LETTER L WITH BELTLATIN CAPITAL LETT" + - "ER SMALL CAPITAL ILATIN CAPITAL LETTER TURNED KLATIN CAPITAL LETTER TURN" + - "ED TLATIN CAPITAL LETTER J WITH CROSSED-TAILLATIN CAPITAL LETTER CHILATI" + - "N CAPITAL LETTER BETALATIN SMALL LETTER BETALATIN CAPITAL LETTER OMEGALA" + - "TIN SMALL LETTER OMEGALATIN EPIGRAPHIC LETTER SIDEWAYS IMODIFIER LETTER " + - "CAPITAL H WITH STROKEMODIFIER LETTER SMALL LIGATURE OELATIN LETTER SMALL" + - " CAPITAL TURNED MLATIN EPIGRAPHIC LETTER REVERSED FLATIN EPIGRAPHIC LETT" + - "ER REVERSED PLATIN EPIGRAPHIC LETTER INVERTED MLATIN EPIGRAPHIC LETTER I" + - " LONGALATIN EPIGRAPHIC LETTER ARCHAIC MSYLOTI NAGRI LETTER ASYLOTI NAGRI" + - " LETTER ISYLOTI NAGRI SIGN DVISVARASYLOTI NAGRI LETTER USYLOTI NAGRI LET" + - "TER ESYLOTI NAGRI LETTER OSYLOTI NAGRI SIGN HASANTASYLOTI NAGRI LETTER K" + - "OSYLOTI NAGRI LETTER KHOSYLOTI NAGRI LETTER GOSYLOTI NAGRI LETTER GHOSYL" + - "OTI NAGRI SIGN ANUSVARASYLOTI NAGRI LETTER COSYLOTI NAGRI LETTER CHOSYLO" + - "TI NAGRI LETTER JOSYLOTI NAGRI LETTER JHOSYLOTI NAGRI LETTER TTOSYLOTI N" + - "AGRI LETTER TTHOSYLOTI NAGRI LETTER DDOSYLOTI NAGRI LETTER DDHOSYLOTI NA" + - "GRI LETTER TOSYLOTI NAGRI LETTER THOSYLOTI NAGRI LETTER DOSYLOTI NAGRI L" + - "ETTER DHOSYLOTI NAGRI LETTER NOSYLOTI NAGRI LETTER POSYLOTI NAGRI LETTER" + - " PHOSYLOTI NAGRI LETTER BOSYLOTI NAGRI LETTER BHOSYLOTI NAGRI LETTER MOS" + - "YLOTI NAGRI LETTER ROSYLOTI NAGRI LETTER LOSYLOTI NAGRI LETTER RROSYLOTI" + - " NAGRI LETTER SOSYLOTI NAGRI LETTER HOSYLOTI NAGRI VOWEL SIGN ASYLOTI NA" + - "GRI VOWEL SIGN ISYLOTI NAGRI VOWEL SIGN USYLOTI NAGRI VOWEL SIGN ESYLOTI" + - " NAGRI VOWEL SIGN OOSYLOTI NAGRI POETRY MARK-1SYLOTI NAGRI POETRY MARK-2" + - "SYLOTI NAGRI POETRY MARK-3SYLOTI NAGRI POETRY MARK-4NORTH INDIC FRACTION" + - " ONE QUARTERNORTH INDIC FRACTION ONE HALFNORTH INDIC FRACTION THREE QUAR" + - "TERSNORTH INDIC FRACTION ONE SIXTEENTHNORTH INDIC FRACTION ONE EIGHTHNOR" + - "TH INDIC FRACTION THREE SIXTEENTHSNORTH INDIC QUARTER MARKNORTH INDIC PL" + - "ACEHOLDER MARKNORTH INDIC RUPEE MARKNORTH INDIC QUANTITY MARKPHAGS-PA LE" + - "TTER KAPHAGS-PA LETTER KHAPHAGS-PA LETTER GAPHAGS-PA LETTER NGAPHAGS-PA " + - "LETTER CAPHAGS-PA LETTER CHAPHAGS-PA LETTER JAPHAGS-PA LETTER NYAPHAGS-P" + - "A LETTER TAPHAGS-PA LETTER THAPHAGS-PA LETTER DAPHAGS-PA LETTER NAPHAGS-" + - "PA LETTER PAPHAGS-PA LETTER PHAPHAGS-PA LETTER BAPHAGS-PA LETTER MAPHAGS" + - "-PA LETTER TSAPHAGS-PA LETTER TSHAPHAGS-PA LETTER DZAPHAGS-PA LETTER WAP" + - "HAGS-PA LETTER ZHAPHAGS-PA LETTER ZAPHAGS-PA LETTER SMALL APHAGS-PA LETT" + - "ER YAPHAGS-PA LETTER RAPHAGS-PA LETTER LAPHAGS-PA LETTER SHAPHAGS-PA LET" + - "TER SAPHAGS-PA LETTER HAPHAGS-PA LETTER APHAGS-PA LETTER IPHAGS-PA LETTE" + - "R UPHAGS-PA LETTER EPHAGS-PA LETTER OPHAGS-PA LETTER QAPHAGS-PA LETTER X" + - "APHAGS-PA LETTER FAPHAGS-PA LETTER GGAPHAGS-PA LETTER EEPHAGS-PA SUBJOIN" + - "ED LETTER WAPHAGS-PA SUBJOINED LETTER YAPHAGS-PA LETTER TTAPHAGS-PA LETT" + - "ER TTHAPHAGS-PA LETTER DDAPHAGS-PA LETTER NNAPHAGS-PA LETTER ALTERNATE Y" + - "APHAGS-PA LETTER VOICELESS SHAPHAGS-PA LETTER VOICED HAPHAGS-PA LETTER A" + - "SPIRATED FAPHAGS-PA SUBJOINED LETTER RAPHAGS-PA SUPERFIXED LETTER RAPHAG" + - "S-PA LETTER CANDRABINDUPHAGS-PA SINGLE HEAD MARKPHAGS-PA DOUBLE HEAD MAR" + - "KPHAGS-PA MARK SHADPHAGS-PA MARK DOUBLE SHADSAURASHTRA SIGN ANUSVARASAUR" + - "ASHTRA SIGN VISARGASAURASHTRA LETTER ASAURASHTRA LETTER AASAURASHTRA LET" + - "TER ISAURASHTRA LETTER IISAURASHTRA LETTER USAURASHTRA LETTER UUSAURASHT" + - "RA LETTER VOCALIC RSAURASHTRA LETTER VOCALIC RRSAURASHTRA LETTER VOCALIC" + - " LSAURASHTRA LETTER VOCALIC LLSAURASHTRA LETTER ESAURASHTRA LETTER EESAU" + - "RASHTRA LETTER AISAURASHTRA LETTER OSAURASHTRA LETTER OOSAURASHTRA LETTE" + - "R AUSAURASHTRA LETTER KASAURASHTRA LETTER KHASAURASHTRA LETTER GASAURASH" + - "TRA LETTER GHASAURASHTRA LETTER NGASAURASHTRA LETTER CASAURASHTRA LETTER" + - " CHASAURASHTRA LETTER JASAURASHTRA LETTER JHASAURASHTRA LETTER NYASAURAS" + - "HTRA LETTER TTASAURASHTRA LETTER TTHASAURASHTRA LETTER DDASAURASHTRA LET" + - "TER DDHASAURASHTRA LETTER NNASAURASHTRA LETTER TASAURASHTRA LETTER THASA" + - "URASHTRA LETTER DASAURASHTRA LETTER DHASAURASHTRA LETTER NASAURASHTRA LE") + ("" + - "TTER PASAURASHTRA LETTER PHASAURASHTRA LETTER BASAURASHTRA LETTER BHASAU" + - "RASHTRA LETTER MASAURASHTRA LETTER YASAURASHTRA LETTER RASAURASHTRA LETT" + - "ER LASAURASHTRA LETTER VASAURASHTRA LETTER SHASAURASHTRA LETTER SSASAURA" + - "SHTRA LETTER SASAURASHTRA LETTER HASAURASHTRA LETTER LLASAURASHTRA CONSO" + - "NANT SIGN HAARUSAURASHTRA VOWEL SIGN AASAURASHTRA VOWEL SIGN ISAURASHTRA" + - " VOWEL SIGN IISAURASHTRA VOWEL SIGN USAURASHTRA VOWEL SIGN UUSAURASHTRA " + - "VOWEL SIGN VOCALIC RSAURASHTRA VOWEL SIGN VOCALIC RRSAURASHTRA VOWEL SIG" + - "N VOCALIC LSAURASHTRA VOWEL SIGN VOCALIC LLSAURASHTRA VOWEL SIGN ESAURAS" + - "HTRA VOWEL SIGN EESAURASHTRA VOWEL SIGN AISAURASHTRA VOWEL SIGN OSAURASH" + - "TRA VOWEL SIGN OOSAURASHTRA VOWEL SIGN AUSAURASHTRA SIGN VIRAMASAURASHTR" + - "A SIGN CANDRABINDUSAURASHTRA DANDASAURASHTRA DOUBLE DANDASAURASHTRA DIGI" + - "T ZEROSAURASHTRA DIGIT ONESAURASHTRA DIGIT TWOSAURASHTRA DIGIT THREESAUR" + - "ASHTRA DIGIT FOURSAURASHTRA DIGIT FIVESAURASHTRA DIGIT SIXSAURASHTRA DIG" + - "IT SEVENSAURASHTRA DIGIT EIGHTSAURASHTRA DIGIT NINECOMBINING DEVANAGARI " + - "DIGIT ZEROCOMBINING DEVANAGARI DIGIT ONECOMBINING DEVANAGARI DIGIT TWOCO" + - "MBINING DEVANAGARI DIGIT THREECOMBINING DEVANAGARI DIGIT FOURCOMBINING D" + - "EVANAGARI DIGIT FIVECOMBINING DEVANAGARI DIGIT SIXCOMBINING DEVANAGARI D" + - "IGIT SEVENCOMBINING DEVANAGARI DIGIT EIGHTCOMBINING DEVANAGARI DIGIT NIN" + - "ECOMBINING DEVANAGARI LETTER ACOMBINING DEVANAGARI LETTER UCOMBINING DEV" + - "ANAGARI LETTER KACOMBINING DEVANAGARI LETTER NACOMBINING DEVANAGARI LETT" + - "ER PACOMBINING DEVANAGARI LETTER RACOMBINING DEVANAGARI LETTER VICOMBINI" + - "NG DEVANAGARI SIGN AVAGRAHADEVANAGARI SIGN SPACING CANDRABINDUDEVANAGARI" + - " SIGN CANDRABINDU VIRAMADEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMADEVANAG" + - "ARI SIGN CANDRABINDU TWODEVANAGARI SIGN CANDRABINDU THREEDEVANAGARI SIGN" + - " CANDRABINDU AVAGRAHADEVANAGARI SIGN PUSHPIKADEVANAGARI GAP FILLERDEVANA" + - "GARI CARETDEVANAGARI HEADSTROKEDEVANAGARI SIGN SIDDHAMDEVANAGARI JAIN OM" + - "KAYAH LI DIGIT ZEROKAYAH LI DIGIT ONEKAYAH LI DIGIT TWOKAYAH LI DIGIT TH" + - "REEKAYAH LI DIGIT FOURKAYAH LI DIGIT FIVEKAYAH LI DIGIT SIXKAYAH LI DIGI" + - "T SEVENKAYAH LI DIGIT EIGHTKAYAH LI DIGIT NINEKAYAH LI LETTER KAKAYAH LI" + - " LETTER KHAKAYAH LI LETTER GAKAYAH LI LETTER NGAKAYAH LI LETTER SAKAYAH " + - "LI LETTER SHAKAYAH LI LETTER ZAKAYAH LI LETTER NYAKAYAH LI LETTER TAKAYA" + - "H LI LETTER HTAKAYAH LI LETTER NAKAYAH LI LETTER PAKAYAH LI LETTER PHAKA" + - "YAH LI LETTER MAKAYAH LI LETTER DAKAYAH LI LETTER BAKAYAH LI LETTER RAKA" + - "YAH LI LETTER YAKAYAH LI LETTER LAKAYAH LI LETTER WAKAYAH LI LETTER THAK" + - "AYAH LI LETTER HAKAYAH LI LETTER VAKAYAH LI LETTER CAKAYAH LI LETTER AKA" + - "YAH LI LETTER OEKAYAH LI LETTER IKAYAH LI LETTER OOKAYAH LI VOWEL UEKAYA" + - "H LI VOWEL EKAYAH LI VOWEL UKAYAH LI VOWEL EEKAYAH LI VOWEL OKAYAH LI TO" + - "NE PLOPHUKAYAH LI TONE CALYAKAYAH LI TONE CALYA PLOPHUKAYAH LI SIGN CWIK" + - "AYAH LI SIGN SHYAREJANG LETTER KAREJANG LETTER GAREJANG LETTER NGAREJANG" + - " LETTER TAREJANG LETTER DAREJANG LETTER NAREJANG LETTER PAREJANG LETTER " + - "BAREJANG LETTER MAREJANG LETTER CAREJANG LETTER JAREJANG LETTER NYAREJAN" + - "G LETTER SAREJANG LETTER RAREJANG LETTER LAREJANG LETTER YAREJANG LETTER" + - " WAREJANG LETTER HAREJANG LETTER MBAREJANG LETTER NGGAREJANG LETTER NDAR" + - "EJANG LETTER NYJAREJANG LETTER AREJANG VOWEL SIGN IREJANG VOWEL SIGN URE" + - "JANG VOWEL SIGN EREJANG VOWEL SIGN AIREJANG VOWEL SIGN OREJANG VOWEL SIG" + - "N AUREJANG VOWEL SIGN EUREJANG VOWEL SIGN EAREJANG CONSONANT SIGN NGREJA" + - "NG CONSONANT SIGN NREJANG CONSONANT SIGN RREJANG CONSONANT SIGN HREJANG " + - "VIRAMAREJANG SECTION MARKHANGUL CHOSEONG TIKEUT-MIEUMHANGUL CHOSEONG TIK" + - "EUT-PIEUPHANGUL CHOSEONG TIKEUT-SIOSHANGUL CHOSEONG TIKEUT-CIEUCHANGUL C" + - "HOSEONG RIEUL-KIYEOKHANGUL CHOSEONG RIEUL-SSANGKIYEOKHANGUL CHOSEONG RIE" + - "UL-TIKEUTHANGUL CHOSEONG RIEUL-SSANGTIKEUTHANGUL CHOSEONG RIEUL-MIEUMHAN" + - "GUL CHOSEONG RIEUL-PIEUPHANGUL CHOSEONG RIEUL-SSANGPIEUPHANGUL CHOSEONG " + - "RIEUL-KAPYEOUNPIEUPHANGUL CHOSEONG RIEUL-SIOSHANGUL CHOSEONG RIEUL-CIEUC" + - "HANGUL CHOSEONG RIEUL-KHIEUKHHANGUL CHOSEONG MIEUM-KIYEOKHANGUL CHOSEONG" + - " MIEUM-TIKEUTHANGUL CHOSEONG MIEUM-SIOSHANGUL CHOSEONG PIEUP-SIOS-THIEUT" + - "HHANGUL CHOSEONG PIEUP-KHIEUKHHANGUL CHOSEONG PIEUP-HIEUHHANGUL CHOSEONG" + - " SSANGSIOS-PIEUPHANGUL CHOSEONG IEUNG-RIEULHANGUL CHOSEONG IEUNG-HIEUHHA" + - "NGUL CHOSEONG SSANGCIEUC-HIEUHHANGUL CHOSEONG SSANGTHIEUTHHANGUL CHOSEON" + - "G PHIEUPH-HIEUHHANGUL CHOSEONG HIEUH-SIOSHANGUL CHOSEONG SSANGYEORINHIEU" + - "HJAVANESE SIGN PANYANGGAJAVANESE SIGN CECAKJAVANESE SIGN LAYARJAVANESE S" + - "IGN WIGNYANJAVANESE LETTER AJAVANESE LETTER I KAWIJAVANESE LETTER IJAVAN" + - "ESE LETTER IIJAVANESE LETTER UJAVANESE LETTER PA CEREKJAVANESE LETTER NG" + - "A LELETJAVANESE LETTER NGA LELET RASWADIJAVANESE LETTER EJAVANESE LETTER" + - " AIJAVANESE LETTER OJAVANESE LETTER KAJAVANESE LETTER KA SASAKJAVANESE L") + ("" + - "ETTER KA MURDAJAVANESE LETTER GAJAVANESE LETTER GA MURDAJAVANESE LETTER " + - "NGAJAVANESE LETTER CAJAVANESE LETTER CA MURDAJAVANESE LETTER JAJAVANESE " + - "LETTER NYA MURDAJAVANESE LETTER JA MAHAPRANAJAVANESE LETTER NYAJAVANESE " + - "LETTER TTAJAVANESE LETTER TTA MAHAPRANAJAVANESE LETTER DDAJAVANESE LETTE" + - "R DDA MAHAPRANAJAVANESE LETTER NA MURDAJAVANESE LETTER TAJAVANESE LETTER" + - " TA MURDAJAVANESE LETTER DAJAVANESE LETTER DA MAHAPRANAJAVANESE LETTER N" + - "AJAVANESE LETTER PAJAVANESE LETTER PA MURDAJAVANESE LETTER BAJAVANESE LE" + - "TTER BA MURDAJAVANESE LETTER MAJAVANESE LETTER YAJAVANESE LETTER RAJAVAN" + - "ESE LETTER RA AGUNGJAVANESE LETTER LAJAVANESE LETTER WAJAVANESE LETTER S" + - "A MURDAJAVANESE LETTER SA MAHAPRANAJAVANESE LETTER SAJAVANESE LETTER HAJ" + - "AVANESE SIGN CECAK TELUJAVANESE VOWEL SIGN TARUNGJAVANESE VOWEL SIGN TOL" + - "ONGJAVANESE VOWEL SIGN WULUJAVANESE VOWEL SIGN WULU MELIKJAVANESE VOWEL " + - "SIGN SUKUJAVANESE VOWEL SIGN SUKU MENDUTJAVANESE VOWEL SIGN TALINGJAVANE" + - "SE VOWEL SIGN DIRGA MUREJAVANESE VOWEL SIGN PEPETJAVANESE CONSONANT SIGN" + - " KERETJAVANESE CONSONANT SIGN PENGKALJAVANESE CONSONANT SIGN CAKRAJAVANE" + - "SE PANGKONJAVANESE LEFT RERENGGANJAVANESE RIGHT RERENGGANJAVANESE PADA A" + - "NDAPJAVANESE PADA MADYAJAVANESE PADA LUHURJAVANESE PADA WINDUJAVANESE PA" + - "DA PANGKATJAVANESE PADA LINGSAJAVANESE PADA LUNGSIJAVANESE PADA ADEGJAVA" + - "NESE PADA ADEG ADEGJAVANESE PADA PISELEHJAVANESE TURNED PADA PISELEHJAVA" + - "NESE PANGRANGKEPJAVANESE DIGIT ZEROJAVANESE DIGIT ONEJAVANESE DIGIT TWOJ" + - "AVANESE DIGIT THREEJAVANESE DIGIT FOURJAVANESE DIGIT FIVEJAVANESE DIGIT " + - "SIXJAVANESE DIGIT SEVENJAVANESE DIGIT EIGHTJAVANESE DIGIT NINEJAVANESE P" + - "ADA TIRTA TUMETESJAVANESE PADA ISEN-ISENMYANMAR LETTER SHAN GHAMYANMAR L" + - "ETTER SHAN CHAMYANMAR LETTER SHAN JHAMYANMAR LETTER SHAN NNAMYANMAR LETT" + - "ER SHAN BHAMYANMAR SIGN SHAN SAWMYANMAR MODIFIER LETTER SHAN REDUPLICATI" + - "ONMYANMAR LETTER TAI LAING NYAMYANMAR LETTER TAI LAING FAMYANMAR LETTER " + - "TAI LAING GAMYANMAR LETTER TAI LAING GHAMYANMAR LETTER TAI LAING JAMYANM" + - "AR LETTER TAI LAING JHAMYANMAR LETTER TAI LAING DDAMYANMAR LETTER TAI LA" + - "ING DDHAMYANMAR LETTER TAI LAING NNAMYANMAR TAI LAING DIGIT ZEROMYANMAR " + - "TAI LAING DIGIT ONEMYANMAR TAI LAING DIGIT TWOMYANMAR TAI LAING DIGIT TH" + - "REEMYANMAR TAI LAING DIGIT FOURMYANMAR TAI LAING DIGIT FIVEMYANMAR TAI L" + - "AING DIGIT SIXMYANMAR TAI LAING DIGIT SEVENMYANMAR TAI LAING DIGIT EIGHT" + - "MYANMAR TAI LAING DIGIT NINEMYANMAR LETTER TAI LAING LLAMYANMAR LETTER T" + - "AI LAING DAMYANMAR LETTER TAI LAING DHAMYANMAR LETTER TAI LAING BAMYANMA" + - "R LETTER TAI LAING BHACHAM LETTER ACHAM LETTER ICHAM LETTER UCHAM LETTER" + - " ECHAM LETTER AICHAM LETTER OCHAM LETTER KACHAM LETTER KHACHAM LETTER GA" + - "CHAM LETTER GHACHAM LETTER NGUECHAM LETTER NGACHAM LETTER CHACHAM LETTER" + - " CHHACHAM LETTER JACHAM LETTER JHACHAM LETTER NHUECHAM LETTER NHACHAM LE" + - "TTER NHJACHAM LETTER TACHAM LETTER THACHAM LETTER DACHAM LETTER DHACHAM " + - "LETTER NUECHAM LETTER NACHAM LETTER DDACHAM LETTER PACHAM LETTER PPACHAM" + - " LETTER PHACHAM LETTER BACHAM LETTER BHACHAM LETTER MUECHAM LETTER MACHA" + - "M LETTER BBACHAM LETTER YACHAM LETTER RACHAM LETTER LACHAM LETTER VACHAM" + - " LETTER SSACHAM LETTER SACHAM LETTER HACHAM VOWEL SIGN AACHAM VOWEL SIGN" + - " ICHAM VOWEL SIGN IICHAM VOWEL SIGN EICHAM VOWEL SIGN UCHAM VOWEL SIGN O" + - "ECHAM VOWEL SIGN OCHAM VOWEL SIGN AICHAM VOWEL SIGN AUCHAM VOWEL SIGN UE" + - "CHAM CONSONANT SIGN YACHAM CONSONANT SIGN RACHAM CONSONANT SIGN LACHAM C" + - "ONSONANT SIGN WACHAM LETTER FINAL KCHAM LETTER FINAL GCHAM LETTER FINAL " + - "NGCHAM CONSONANT SIGN FINAL NGCHAM LETTER FINAL CHCHAM LETTER FINAL TCHA" + - "M LETTER FINAL NCHAM LETTER FINAL PCHAM LETTER FINAL YCHAM LETTER FINAL " + - "RCHAM LETTER FINAL LCHAM LETTER FINAL SSCHAM CONSONANT SIGN FINAL MCHAM " + - "CONSONANT SIGN FINAL HCHAM DIGIT ZEROCHAM DIGIT ONECHAM DIGIT TWOCHAM DI" + - "GIT THREECHAM DIGIT FOURCHAM DIGIT FIVECHAM DIGIT SIXCHAM DIGIT SEVENCHA" + - "M DIGIT EIGHTCHAM DIGIT NINECHAM PUNCTUATION SPIRALCHAM PUNCTUATION DAND" + - "ACHAM PUNCTUATION DOUBLE DANDACHAM PUNCTUATION TRIPLE DANDAMYANMAR LETTE" + - "R KHAMTI GAMYANMAR LETTER KHAMTI CAMYANMAR LETTER KHAMTI CHAMYANMAR LETT" + - "ER KHAMTI JAMYANMAR LETTER KHAMTI JHAMYANMAR LETTER KHAMTI NYAMYANMAR LE" + - "TTER KHAMTI TTAMYANMAR LETTER KHAMTI TTHAMYANMAR LETTER KHAMTI DDAMYANMA" + - "R LETTER KHAMTI DDHAMYANMAR LETTER KHAMTI DHAMYANMAR LETTER KHAMTI NAMYA" + - "NMAR LETTER KHAMTI SAMYANMAR LETTER KHAMTI HAMYANMAR LETTER KHAMTI HHAMY" + - "ANMAR LETTER KHAMTI FAMYANMAR MODIFIER LETTER KHAMTI REDUPLICATIONMYANMA" + - "R LETTER KHAMTI XAMYANMAR LETTER KHAMTI ZAMYANMAR LETTER KHAMTI RAMYANMA" + - "R LOGOGRAM KHAMTI OAYMYANMAR LOGOGRAM KHAMTI QNMYANMAR LOGOGRAM KHAMTI H" + - "MMYANMAR SYMBOL AITON EXCLAMATIONMYANMAR SYMBOL AITON ONEMYANMAR SYMBOL " + - "AITON TWOMYANMAR LETTER AITON RAMYANMAR SIGN PAO KAREN TONEMYANMAR SIGN ") + ("" + - "TAI LAING TONE-2MYANMAR SIGN TAI LAING TONE-5MYANMAR LETTER SHWE PALAUNG" + - " CHAMYANMAR LETTER SHWE PALAUNG SHATAI VIET LETTER LOW KOTAI VIET LETTER" + - " HIGH KOTAI VIET LETTER LOW KHOTAI VIET LETTER HIGH KHOTAI VIET LETTER L" + - "OW KHHOTAI VIET LETTER HIGH KHHOTAI VIET LETTER LOW GOTAI VIET LETTER HI" + - "GH GOTAI VIET LETTER LOW NGOTAI VIET LETTER HIGH NGOTAI VIET LETTER LOW " + - "COTAI VIET LETTER HIGH COTAI VIET LETTER LOW CHOTAI VIET LETTER HIGH CHO" + - "TAI VIET LETTER LOW SOTAI VIET LETTER HIGH SOTAI VIET LETTER LOW NYOTAI " + - "VIET LETTER HIGH NYOTAI VIET LETTER LOW DOTAI VIET LETTER HIGH DOTAI VIE" + - "T LETTER LOW TOTAI VIET LETTER HIGH TOTAI VIET LETTER LOW THOTAI VIET LE" + - "TTER HIGH THOTAI VIET LETTER LOW NOTAI VIET LETTER HIGH NOTAI VIET LETTE" + - "R LOW BOTAI VIET LETTER HIGH BOTAI VIET LETTER LOW POTAI VIET LETTER HIG" + - "H POTAI VIET LETTER LOW PHOTAI VIET LETTER HIGH PHOTAI VIET LETTER LOW F" + - "OTAI VIET LETTER HIGH FOTAI VIET LETTER LOW MOTAI VIET LETTER HIGH MOTAI" + - " VIET LETTER LOW YOTAI VIET LETTER HIGH YOTAI VIET LETTER LOW ROTAI VIET" + - " LETTER HIGH ROTAI VIET LETTER LOW LOTAI VIET LETTER HIGH LOTAI VIET LET" + - "TER LOW VOTAI VIET LETTER HIGH VOTAI VIET LETTER LOW HOTAI VIET LETTER H" + - "IGH HOTAI VIET LETTER LOW OTAI VIET LETTER HIGH OTAI VIET MAI KANGTAI VI" + - "ET VOWEL AATAI VIET VOWEL ITAI VIET VOWEL UETAI VIET VOWEL UTAI VIET VOW" + - "EL ETAI VIET VOWEL OTAI VIET MAI KHITTAI VIET VOWEL IATAI VIET VOWEL UEA" + - "TAI VIET VOWEL UATAI VIET VOWEL AUETAI VIET VOWEL AYTAI VIET VOWEL ANTAI" + - " VIET VOWEL AMTAI VIET TONE MAI EKTAI VIET TONE MAI NUENGTAI VIET TONE M" + - "AI THOTAI VIET TONE MAI SONGTAI VIET SYMBOL KONTAI VIET SYMBOL NUENGTAI " + - "VIET SYMBOL SAMTAI VIET SYMBOL HO HOITAI VIET SYMBOL KOI KOIMEETEI MAYEK" + - " LETTER EMEETEI MAYEK LETTER OMEETEI MAYEK LETTER CHAMEETEI MAYEK LETTER" + - " NYAMEETEI MAYEK LETTER TTAMEETEI MAYEK LETTER TTHAMEETEI MAYEK LETTER D" + - "DAMEETEI MAYEK LETTER DDHAMEETEI MAYEK LETTER NNAMEETEI MAYEK LETTER SHA" + - "MEETEI MAYEK LETTER SSAMEETEI MAYEK VOWEL SIGN IIMEETEI MAYEK VOWEL SIGN" + - " UUMEETEI MAYEK VOWEL SIGN AAIMEETEI MAYEK VOWEL SIGN AUMEETEI MAYEK VOW" + - "EL SIGN AAUMEETEI MAYEK CHEIKHANMEETEI MAYEK AHANG KHUDAMMEETEI MAYEK AN" + - "JIMEETEI MAYEK SYLLABLE REPETITION MARKMEETEI MAYEK WORD REPETITION MARK" + - "MEETEI MAYEK VOWEL SIGN VISARGAMEETEI MAYEK VIRAMAETHIOPIC SYLLABLE TTHU" + - "ETHIOPIC SYLLABLE TTHIETHIOPIC SYLLABLE TTHAAETHIOPIC SYLLABLE TTHEEETHI" + - "OPIC SYLLABLE TTHEETHIOPIC SYLLABLE TTHOETHIOPIC SYLLABLE DDHUETHIOPIC S" + - "YLLABLE DDHIETHIOPIC SYLLABLE DDHAAETHIOPIC SYLLABLE DDHEEETHIOPIC SYLLA" + - "BLE DDHEETHIOPIC SYLLABLE DDHOETHIOPIC SYLLABLE DZUETHIOPIC SYLLABLE DZI" + - "ETHIOPIC SYLLABLE DZAAETHIOPIC SYLLABLE DZEEETHIOPIC SYLLABLE DZEETHIOPI" + - "C SYLLABLE DZOETHIOPIC SYLLABLE CCHHAETHIOPIC SYLLABLE CCHHUETHIOPIC SYL" + - "LABLE CCHHIETHIOPIC SYLLABLE CCHHAAETHIOPIC SYLLABLE CCHHEEETHIOPIC SYLL" + - "ABLE CCHHEETHIOPIC SYLLABLE CCHHOETHIOPIC SYLLABLE BBAETHIOPIC SYLLABLE " + - "BBUETHIOPIC SYLLABLE BBIETHIOPIC SYLLABLE BBAAETHIOPIC SYLLABLE BBEEETHI" + - "OPIC SYLLABLE BBEETHIOPIC SYLLABLE BBOLATIN SMALL LETTER BARRED ALPHALAT" + - "IN SMALL LETTER A REVERSED-SCHWALATIN SMALL LETTER BLACKLETTER ELATIN SM" + - "ALL LETTER BARRED ELATIN SMALL LETTER E WITH FLOURISHLATIN SMALL LETTER " + - "LENIS FLATIN SMALL LETTER SCRIPT G WITH CROSSED-TAILLATIN SMALL LETTER L" + - " WITH INVERTED LAZY SLATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDELATIN " + - "SMALL LETTER L WITH MIDDLE RINGLATIN SMALL LETTER M WITH CROSSED-TAILLAT" + - "IN SMALL LETTER N WITH CROSSED-TAILLATIN SMALL LETTER ENG WITH CROSSED-T" + - "AILLATIN SMALL LETTER BLACKLETTER OLATIN SMALL LETTER BLACKLETTER O WITH" + - " STROKELATIN SMALL LETTER OPEN O WITH STROKELATIN SMALL LETTER INVERTED " + - "OELATIN SMALL LETTER TURNED OE WITH STROKELATIN SMALL LETTER TURNED OE W" + - "ITH HORIZONTAL STROKELATIN SMALL LETTER TURNED O OPEN-OLATIN SMALL LETTE" + - "R TURNED O OPEN-O WITH STROKELATIN SMALL LETTER STIRRUP RLATIN LETTER SM" + - "ALL CAPITAL R WITH RIGHT LEGLATIN SMALL LETTER R WITHOUT HANDLELATIN SMA" + - "LL LETTER DOUBLE RLATIN SMALL LETTER R WITH CROSSED-TAILLATIN SMALL LETT" + - "ER DOUBLE R WITH CROSSED-TAILLATIN SMALL LETTER SCRIPT RLATIN SMALL LETT" + - "ER SCRIPT R WITH RINGLATIN SMALL LETTER BASELINE ESHLATIN SMALL LETTER U" + - " WITH SHORT RIGHT LEGLATIN SMALL LETTER U BAR WITH SHORT RIGHT LEGLATIN " + - "SMALL LETTER UILATIN SMALL LETTER TURNED UILATIN SMALL LETTER U WITH LEF" + - "T HOOKLATIN SMALL LETTER CHILATIN SMALL LETTER CHI WITH LOW RIGHT RINGLA" + - "TIN SMALL LETTER CHI WITH LOW LEFT SERIFLATIN SMALL LETTER X WITH LOW RI" + - "GHT RINGLATIN SMALL LETTER X WITH LONG LEFT LEGLATIN SMALL LETTER X WITH" + - " LONG LEFT LEG AND LOW RIGHT RINGLATIN SMALL LETTER X WITH LONG LEFT LEG" + - " WITH SERIFLATIN SMALL LETTER Y WITH SHORT RIGHT LEGMODIFIER BREVE WITH " + - "INVERTED BREVEMODIFIER LETTER SMALL HENGMODIFIER LETTER SMALL L WITH INV") + ("" + - "ERTED LAZY SMODIFIER LETTER SMALL L WITH MIDDLE TILDEMODIFIER LETTER SMA" + - "LL U WITH LEFT HOOKLATIN SMALL LETTER SAKHA YATLATIN SMALL LETTER IOTIFI" + - "ED ELATIN SMALL LETTER OPEN OELATIN SMALL LETTER UOLATIN SMALL LETTER IN" + - "VERTED ALPHAGREEK LETTER SMALL CAPITAL OMEGACHEROKEE SMALL LETTER ACHERO" + - "KEE SMALL LETTER ECHEROKEE SMALL LETTER ICHEROKEE SMALL LETTER OCHEROKEE" + - " SMALL LETTER UCHEROKEE SMALL LETTER VCHEROKEE SMALL LETTER GACHEROKEE S" + - "MALL LETTER KACHEROKEE SMALL LETTER GECHEROKEE SMALL LETTER GICHEROKEE S" + - "MALL LETTER GOCHEROKEE SMALL LETTER GUCHEROKEE SMALL LETTER GVCHEROKEE S" + - "MALL LETTER HACHEROKEE SMALL LETTER HECHEROKEE SMALL LETTER HICHEROKEE S" + - "MALL LETTER HOCHEROKEE SMALL LETTER HUCHEROKEE SMALL LETTER HVCHEROKEE S" + - "MALL LETTER LACHEROKEE SMALL LETTER LECHEROKEE SMALL LETTER LICHEROKEE S" + - "MALL LETTER LOCHEROKEE SMALL LETTER LUCHEROKEE SMALL LETTER LVCHEROKEE S" + - "MALL LETTER MACHEROKEE SMALL LETTER MECHEROKEE SMALL LETTER MICHEROKEE S" + - "MALL LETTER MOCHEROKEE SMALL LETTER MUCHEROKEE SMALL LETTER NACHEROKEE S" + - "MALL LETTER HNACHEROKEE SMALL LETTER NAHCHEROKEE SMALL LETTER NECHEROKEE" + - " SMALL LETTER NICHEROKEE SMALL LETTER NOCHEROKEE SMALL LETTER NUCHEROKEE" + - " SMALL LETTER NVCHEROKEE SMALL LETTER QUACHEROKEE SMALL LETTER QUECHEROK" + - "EE SMALL LETTER QUICHEROKEE SMALL LETTER QUOCHEROKEE SMALL LETTER QUUCHE" + - "ROKEE SMALL LETTER QUVCHEROKEE SMALL LETTER SACHEROKEE SMALL LETTER SCHE" + - "ROKEE SMALL LETTER SECHEROKEE SMALL LETTER SICHEROKEE SMALL LETTER SOCHE" + - "ROKEE SMALL LETTER SUCHEROKEE SMALL LETTER SVCHEROKEE SMALL LETTER DACHE" + - "ROKEE SMALL LETTER TACHEROKEE SMALL LETTER DECHEROKEE SMALL LETTER TECHE" + - "ROKEE SMALL LETTER DICHEROKEE SMALL LETTER TICHEROKEE SMALL LETTER DOCHE" + - "ROKEE SMALL LETTER DUCHEROKEE SMALL LETTER DVCHEROKEE SMALL LETTER DLACH" + - "EROKEE SMALL LETTER TLACHEROKEE SMALL LETTER TLECHEROKEE SMALL LETTER TL" + - "ICHEROKEE SMALL LETTER TLOCHEROKEE SMALL LETTER TLUCHEROKEE SMALL LETTER" + - " TLVCHEROKEE SMALL LETTER TSACHEROKEE SMALL LETTER TSECHEROKEE SMALL LET" + - "TER TSICHEROKEE SMALL LETTER TSOCHEROKEE SMALL LETTER TSUCHEROKEE SMALL " + - "LETTER TSVCHEROKEE SMALL LETTER WACHEROKEE SMALL LETTER WECHEROKEE SMALL" + - " LETTER WICHEROKEE SMALL LETTER WOCHEROKEE SMALL LETTER WUCHEROKEE SMALL" + - " LETTER WVCHEROKEE SMALL LETTER YAMEETEI MAYEK LETTER KOKMEETEI MAYEK LE" + - "TTER SAMMEETEI MAYEK LETTER LAIMEETEI MAYEK LETTER MITMEETEI MAYEK LETTE" + - "R PAMEETEI MAYEK LETTER NAMEETEI MAYEK LETTER CHILMEETEI MAYEK LETTER TI" + - "LMEETEI MAYEK LETTER KHOUMEETEI MAYEK LETTER NGOUMEETEI MAYEK LETTER THO" + - "UMEETEI MAYEK LETTER WAIMEETEI MAYEK LETTER YANGMEETEI MAYEK LETTER HUKM" + - "EETEI MAYEK LETTER UNMEETEI MAYEK LETTER IMEETEI MAYEK LETTER PHAMMEETEI" + - " MAYEK LETTER ATIYAMEETEI MAYEK LETTER GOKMEETEI MAYEK LETTER JHAMMEETEI" + - " MAYEK LETTER RAIMEETEI MAYEK LETTER BAMEETEI MAYEK LETTER JILMEETEI MAY" + - "EK LETTER DILMEETEI MAYEK LETTER GHOUMEETEI MAYEK LETTER DHOUMEETEI MAYE" + - "K LETTER BHAMMEETEI MAYEK LETTER KOK LONSUMMEETEI MAYEK LETTER LAI LONSU" + - "MMEETEI MAYEK LETTER MIT LONSUMMEETEI MAYEK LETTER PA LONSUMMEETEI MAYEK" + - " LETTER NA LONSUMMEETEI MAYEK LETTER TIL LONSUMMEETEI MAYEK LETTER NGOU " + - "LONSUMMEETEI MAYEK LETTER I LONSUMMEETEI MAYEK VOWEL SIGN ONAPMEETEI MAY" + - "EK VOWEL SIGN INAPMEETEI MAYEK VOWEL SIGN ANAPMEETEI MAYEK VOWEL SIGN YE" + - "NAPMEETEI MAYEK VOWEL SIGN SOUNAPMEETEI MAYEK VOWEL SIGN UNAPMEETEI MAYE" + - "K VOWEL SIGN CHEINAPMEETEI MAYEK VOWEL SIGN NUNGMEETEI MAYEK CHEIKHEIMEE" + - "TEI MAYEK LUM IYEKMEETEI MAYEK APUN IYEKMEETEI MAYEK DIGIT ZEROMEETEI MA" + - "YEK DIGIT ONEMEETEI MAYEK DIGIT TWOMEETEI MAYEK DIGIT THREEMEETEI MAYEK " + - "DIGIT FOURMEETEI MAYEK DIGIT FIVEMEETEI MAYEK DIGIT SIXMEETEI MAYEK DIGI" + - "T SEVENMEETEI MAYEK DIGIT EIGHTMEETEI MAYEK DIGIT NINEHANGUL JUNGSEONG O" + - "-YEOHANGUL JUNGSEONG O-O-IHANGUL JUNGSEONG YO-AHANGUL JUNGSEONG YO-AEHAN" + - "GUL JUNGSEONG YO-EOHANGUL JUNGSEONG U-YEOHANGUL JUNGSEONG U-I-IHANGUL JU" + - "NGSEONG YU-AEHANGUL JUNGSEONG YU-OHANGUL JUNGSEONG EU-AHANGUL JUNGSEONG " + - "EU-EOHANGUL JUNGSEONG EU-EHANGUL JUNGSEONG EU-OHANGUL JUNGSEONG I-YA-OHA" + - "NGUL JUNGSEONG I-YAEHANGUL JUNGSEONG I-YEOHANGUL JUNGSEONG I-YEHANGUL JU" + - "NGSEONG I-O-IHANGUL JUNGSEONG I-YOHANGUL JUNGSEONG I-YUHANGUL JUNGSEONG " + - "I-IHANGUL JUNGSEONG ARAEA-AHANGUL JUNGSEONG ARAEA-EHANGUL JONGSEONG NIEU" + - "N-RIEULHANGUL JONGSEONG NIEUN-CHIEUCHHANGUL JONGSEONG SSANGTIKEUTHANGUL " + - "JONGSEONG SSANGTIKEUT-PIEUPHANGUL JONGSEONG TIKEUT-PIEUPHANGUL JONGSEONG" + - " TIKEUT-SIOSHANGUL JONGSEONG TIKEUT-SIOS-KIYEOKHANGUL JONGSEONG TIKEUT-C" + - "IEUCHANGUL JONGSEONG TIKEUT-CHIEUCHHANGUL JONGSEONG TIKEUT-THIEUTHHANGUL" + - " JONGSEONG RIEUL-SSANGKIYEOKHANGUL JONGSEONG RIEUL-KIYEOK-HIEUHHANGUL JO" + - "NGSEONG SSANGRIEUL-KHIEUKHHANGUL JONGSEONG RIEUL-MIEUM-HIEUHHANGUL JONGS" + - "EONG RIEUL-PIEUP-TIKEUTHANGUL JONGSEONG RIEUL-PIEUP-PHIEUPHHANGUL JONGSE") + ("" + - "ONG RIEUL-YESIEUNGHANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUHHANGUL JONGSEO" + - "NG KAPYEOUNRIEULHANGUL JONGSEONG MIEUM-NIEUNHANGUL JONGSEONG MIEUM-SSANG" + - "NIEUNHANGUL JONGSEONG SSANGMIEUMHANGUL JONGSEONG MIEUM-PIEUP-SIOSHANGUL " + - "JONGSEONG MIEUM-CIEUCHANGUL JONGSEONG PIEUP-TIKEUTHANGUL JONGSEONG PIEUP" + - "-RIEUL-PHIEUPHHANGUL JONGSEONG PIEUP-MIEUMHANGUL JONGSEONG SSANGPIEUPHAN" + - "GUL JONGSEONG PIEUP-SIOS-TIKEUTHANGUL JONGSEONG PIEUP-CIEUCHANGUL JONGSE" + - "ONG PIEUP-CHIEUCHHANGUL JONGSEONG SIOS-MIEUMHANGUL JONGSEONG SIOS-KAPYEO" + - "UNPIEUPHANGUL JONGSEONG SSANGSIOS-KIYEOKHANGUL JONGSEONG SSANGSIOS-TIKEU" + - "THANGUL JONGSEONG SIOS-PANSIOSHANGUL JONGSEONG SIOS-CIEUCHANGUL JONGSEON" + - "G SIOS-CHIEUCHHANGUL JONGSEONG SIOS-THIEUTHHANGUL JONGSEONG SIOS-HIEUHHA" + - "NGUL JONGSEONG PANSIOS-PIEUPHANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUPHANGUL" + - " JONGSEONG YESIEUNG-MIEUMHANGUL JONGSEONG YESIEUNG-HIEUHHANGUL JONGSEONG" + - " CIEUC-PIEUPHANGUL JONGSEONG CIEUC-SSANGPIEUPHANGUL JONGSEONG SSANGCIEUC" + - "HANGUL JONGSEONG PHIEUPH-SIOSHANGUL JONGSEONG PHIEUPH-THIEUTHCJK COMPATI" + - "BILITY IDEOGRAPH-F900CJK COMPATIBILITY IDEOGRAPH-F901CJK COMPATIBILITY I" + - "DEOGRAPH-F902CJK COMPATIBILITY IDEOGRAPH-F903CJK COMPATIBILITY IDEOGRAPH" + - "-F904CJK COMPATIBILITY IDEOGRAPH-F905CJK COMPATIBILITY IDEOGRAPH-F906CJK" + - " COMPATIBILITY IDEOGRAPH-F907CJK COMPATIBILITY IDEOGRAPH-F908CJK COMPATI" + - "BILITY IDEOGRAPH-F909CJK COMPATIBILITY IDEOGRAPH-F90ACJK COMPATIBILITY I" + - "DEOGRAPH-F90BCJK COMPATIBILITY IDEOGRAPH-F90CCJK COMPATIBILITY IDEOGRAPH" + - "-F90DCJK COMPATIBILITY IDEOGRAPH-F90ECJK COMPATIBILITY IDEOGRAPH-F90FCJK" + - " COMPATIBILITY IDEOGRAPH-F910CJK COMPATIBILITY IDEOGRAPH-F911CJK COMPATI" + - "BILITY IDEOGRAPH-F912CJK COMPATIBILITY IDEOGRAPH-F913CJK COMPATIBILITY I" + - "DEOGRAPH-F914CJK COMPATIBILITY IDEOGRAPH-F915CJK COMPATIBILITY IDEOGRAPH" + - "-F916CJK COMPATIBILITY IDEOGRAPH-F917CJK COMPATIBILITY IDEOGRAPH-F918CJK" + - " COMPATIBILITY IDEOGRAPH-F919CJK COMPATIBILITY IDEOGRAPH-F91ACJK COMPATI" + - "BILITY IDEOGRAPH-F91BCJK COMPATIBILITY IDEOGRAPH-F91CCJK COMPATIBILITY I" + - "DEOGRAPH-F91DCJK COMPATIBILITY IDEOGRAPH-F91ECJK COMPATIBILITY IDEOGRAPH" + - "-F91FCJK COMPATIBILITY IDEOGRAPH-F920CJK COMPATIBILITY IDEOGRAPH-F921CJK" + - " COMPATIBILITY IDEOGRAPH-F922CJK COMPATIBILITY IDEOGRAPH-F923CJK COMPATI" + - "BILITY IDEOGRAPH-F924CJK COMPATIBILITY IDEOGRAPH-F925CJK COMPATIBILITY I" + - "DEOGRAPH-F926CJK COMPATIBILITY IDEOGRAPH-F927CJK COMPATIBILITY IDEOGRAPH" + - "-F928CJK COMPATIBILITY IDEOGRAPH-F929CJK COMPATIBILITY IDEOGRAPH-F92ACJK" + - " COMPATIBILITY IDEOGRAPH-F92BCJK COMPATIBILITY IDEOGRAPH-F92CCJK COMPATI" + - "BILITY IDEOGRAPH-F92DCJK COMPATIBILITY IDEOGRAPH-F92ECJK COMPATIBILITY I" + - "DEOGRAPH-F92FCJK COMPATIBILITY IDEOGRAPH-F930CJK COMPATIBILITY IDEOGRAPH" + - "-F931CJK COMPATIBILITY IDEOGRAPH-F932CJK COMPATIBILITY IDEOGRAPH-F933CJK" + - " COMPATIBILITY IDEOGRAPH-F934CJK COMPATIBILITY IDEOGRAPH-F935CJK COMPATI" + - "BILITY IDEOGRAPH-F936CJK COMPATIBILITY IDEOGRAPH-F937CJK COMPATIBILITY I" + - "DEOGRAPH-F938CJK COMPATIBILITY IDEOGRAPH-F939CJK COMPATIBILITY IDEOGRAPH" + - "-F93ACJK COMPATIBILITY IDEOGRAPH-F93BCJK COMPATIBILITY IDEOGRAPH-F93CCJK" + - " COMPATIBILITY IDEOGRAPH-F93DCJK COMPATIBILITY IDEOGRAPH-F93ECJK COMPATI" + - "BILITY IDEOGRAPH-F93FCJK COMPATIBILITY IDEOGRAPH-F940CJK COMPATIBILITY I" + - "DEOGRAPH-F941CJK COMPATIBILITY IDEOGRAPH-F942CJK COMPATIBILITY IDEOGRAPH" + - "-F943CJK COMPATIBILITY IDEOGRAPH-F944CJK COMPATIBILITY IDEOGRAPH-F945CJK" + - " COMPATIBILITY IDEOGRAPH-F946CJK COMPATIBILITY IDEOGRAPH-F947CJK COMPATI" + - "BILITY IDEOGRAPH-F948CJK COMPATIBILITY IDEOGRAPH-F949CJK COMPATIBILITY I" + - "DEOGRAPH-F94ACJK COMPATIBILITY IDEOGRAPH-F94BCJK COMPATIBILITY IDEOGRAPH" + - "-F94CCJK COMPATIBILITY IDEOGRAPH-F94DCJK COMPATIBILITY IDEOGRAPH-F94ECJK" + - " COMPATIBILITY IDEOGRAPH-F94FCJK COMPATIBILITY IDEOGRAPH-F950CJK COMPATI" + - "BILITY IDEOGRAPH-F951CJK COMPATIBILITY IDEOGRAPH-F952CJK COMPATIBILITY I" + - "DEOGRAPH-F953CJK COMPATIBILITY IDEOGRAPH-F954CJK COMPATIBILITY IDEOGRAPH" + - "-F955CJK COMPATIBILITY IDEOGRAPH-F956CJK COMPATIBILITY IDEOGRAPH-F957CJK" + - " COMPATIBILITY IDEOGRAPH-F958CJK COMPATIBILITY IDEOGRAPH-F959CJK COMPATI" + - "BILITY IDEOGRAPH-F95ACJK COMPATIBILITY IDEOGRAPH-F95BCJK COMPATIBILITY I" + - "DEOGRAPH-F95CCJK COMPATIBILITY IDEOGRAPH-F95DCJK COMPATIBILITY IDEOGRAPH" + - "-F95ECJK COMPATIBILITY IDEOGRAPH-F95FCJK COMPATIBILITY IDEOGRAPH-F960CJK" + - " COMPATIBILITY IDEOGRAPH-F961CJK COMPATIBILITY IDEOGRAPH-F962CJK COMPATI" + - "BILITY IDEOGRAPH-F963CJK COMPATIBILITY IDEOGRAPH-F964CJK COMPATIBILITY I" + - "DEOGRAPH-F965CJK COMPATIBILITY IDEOGRAPH-F966CJK COMPATIBILITY IDEOGRAPH" + - "-F967CJK COMPATIBILITY IDEOGRAPH-F968CJK COMPATIBILITY IDEOGRAPH-F969CJK" + - " COMPATIBILITY IDEOGRAPH-F96ACJK COMPATIBILITY IDEOGRAPH-F96BCJK COMPATI" + - "BILITY IDEOGRAPH-F96CCJK COMPATIBILITY IDEOGRAPH-F96DCJK COMPATIBILITY I" + - "DEOGRAPH-F96ECJK COMPATIBILITY IDEOGRAPH-F96FCJK COMPATIBILITY IDEOGRAPH") + ("" + - "-F970CJK COMPATIBILITY IDEOGRAPH-F971CJK COMPATIBILITY IDEOGRAPH-F972CJK" + - " COMPATIBILITY IDEOGRAPH-F973CJK COMPATIBILITY IDEOGRAPH-F974CJK COMPATI" + - "BILITY IDEOGRAPH-F975CJK COMPATIBILITY IDEOGRAPH-F976CJK COMPATIBILITY I" + - "DEOGRAPH-F977CJK COMPATIBILITY IDEOGRAPH-F978CJK COMPATIBILITY IDEOGRAPH" + - "-F979CJK COMPATIBILITY IDEOGRAPH-F97ACJK COMPATIBILITY IDEOGRAPH-F97BCJK" + - " COMPATIBILITY IDEOGRAPH-F97CCJK COMPATIBILITY IDEOGRAPH-F97DCJK COMPATI" + - "BILITY IDEOGRAPH-F97ECJK COMPATIBILITY IDEOGRAPH-F97FCJK COMPATIBILITY I" + - "DEOGRAPH-F980CJK COMPATIBILITY IDEOGRAPH-F981CJK COMPATIBILITY IDEOGRAPH" + - "-F982CJK COMPATIBILITY IDEOGRAPH-F983CJK COMPATIBILITY IDEOGRAPH-F984CJK" + - " COMPATIBILITY IDEOGRAPH-F985CJK COMPATIBILITY IDEOGRAPH-F986CJK COMPATI" + - "BILITY IDEOGRAPH-F987CJK COMPATIBILITY IDEOGRAPH-F988CJK COMPATIBILITY I" + - "DEOGRAPH-F989CJK COMPATIBILITY IDEOGRAPH-F98ACJK COMPATIBILITY IDEOGRAPH" + - "-F98BCJK COMPATIBILITY IDEOGRAPH-F98CCJK COMPATIBILITY IDEOGRAPH-F98DCJK" + - " COMPATIBILITY IDEOGRAPH-F98ECJK COMPATIBILITY IDEOGRAPH-F98FCJK COMPATI" + - "BILITY IDEOGRAPH-F990CJK COMPATIBILITY IDEOGRAPH-F991CJK COMPATIBILITY I" + - "DEOGRAPH-F992CJK COMPATIBILITY IDEOGRAPH-F993CJK COMPATIBILITY IDEOGRAPH" + - "-F994CJK COMPATIBILITY IDEOGRAPH-F995CJK COMPATIBILITY IDEOGRAPH-F996CJK" + - " COMPATIBILITY IDEOGRAPH-F997CJK COMPATIBILITY IDEOGRAPH-F998CJK COMPATI" + - "BILITY IDEOGRAPH-F999CJK COMPATIBILITY IDEOGRAPH-F99ACJK COMPATIBILITY I" + - "DEOGRAPH-F99BCJK COMPATIBILITY IDEOGRAPH-F99CCJK COMPATIBILITY IDEOGRAPH" + - "-F99DCJK COMPATIBILITY IDEOGRAPH-F99ECJK COMPATIBILITY IDEOGRAPH-F99FCJK" + - " COMPATIBILITY IDEOGRAPH-F9A0CJK COMPATIBILITY IDEOGRAPH-F9A1CJK COMPATI" + - "BILITY IDEOGRAPH-F9A2CJK COMPATIBILITY IDEOGRAPH-F9A3CJK COMPATIBILITY I" + - "DEOGRAPH-F9A4CJK COMPATIBILITY IDEOGRAPH-F9A5CJK COMPATIBILITY IDEOGRAPH" + - "-F9A6CJK COMPATIBILITY IDEOGRAPH-F9A7CJK COMPATIBILITY IDEOGRAPH-F9A8CJK" + - " COMPATIBILITY IDEOGRAPH-F9A9CJK COMPATIBILITY IDEOGRAPH-F9AACJK COMPATI" + - "BILITY IDEOGRAPH-F9ABCJK COMPATIBILITY IDEOGRAPH-F9ACCJK COMPATIBILITY I" + - "DEOGRAPH-F9ADCJK COMPATIBILITY IDEOGRAPH-F9AECJK COMPATIBILITY IDEOGRAPH" + - "-F9AFCJK COMPATIBILITY IDEOGRAPH-F9B0CJK COMPATIBILITY IDEOGRAPH-F9B1CJK" + - " COMPATIBILITY IDEOGRAPH-F9B2CJK COMPATIBILITY IDEOGRAPH-F9B3CJK COMPATI" + - "BILITY IDEOGRAPH-F9B4CJK COMPATIBILITY IDEOGRAPH-F9B5CJK COMPATIBILITY I" + - "DEOGRAPH-F9B6CJK COMPATIBILITY IDEOGRAPH-F9B7CJK COMPATIBILITY IDEOGRAPH" + - "-F9B8CJK COMPATIBILITY IDEOGRAPH-F9B9CJK COMPATIBILITY IDEOGRAPH-F9BACJK" + - " COMPATIBILITY IDEOGRAPH-F9BBCJK COMPATIBILITY IDEOGRAPH-F9BCCJK COMPATI" + - "BILITY IDEOGRAPH-F9BDCJK COMPATIBILITY IDEOGRAPH-F9BECJK COMPATIBILITY I" + - "DEOGRAPH-F9BFCJK COMPATIBILITY IDEOGRAPH-F9C0CJK COMPATIBILITY IDEOGRAPH" + - "-F9C1CJK COMPATIBILITY IDEOGRAPH-F9C2CJK COMPATIBILITY IDEOGRAPH-F9C3CJK" + - " COMPATIBILITY IDEOGRAPH-F9C4CJK COMPATIBILITY IDEOGRAPH-F9C5CJK COMPATI" + - "BILITY IDEOGRAPH-F9C6CJK COMPATIBILITY IDEOGRAPH-F9C7CJK COMPATIBILITY I" + - "DEOGRAPH-F9C8CJK COMPATIBILITY IDEOGRAPH-F9C9CJK COMPATIBILITY IDEOGRAPH" + - "-F9CACJK COMPATIBILITY IDEOGRAPH-F9CBCJK COMPATIBILITY IDEOGRAPH-F9CCCJK" + - " COMPATIBILITY IDEOGRAPH-F9CDCJK COMPATIBILITY IDEOGRAPH-F9CECJK COMPATI" + - "BILITY IDEOGRAPH-F9CFCJK COMPATIBILITY IDEOGRAPH-F9D0CJK COMPATIBILITY I" + - "DEOGRAPH-F9D1CJK COMPATIBILITY IDEOGRAPH-F9D2CJK COMPATIBILITY IDEOGRAPH" + - "-F9D3CJK COMPATIBILITY IDEOGRAPH-F9D4CJK COMPATIBILITY IDEOGRAPH-F9D5CJK" + - " COMPATIBILITY IDEOGRAPH-F9D6CJK COMPATIBILITY IDEOGRAPH-F9D7CJK COMPATI" + - "BILITY IDEOGRAPH-F9D8CJK COMPATIBILITY IDEOGRAPH-F9D9CJK COMPATIBILITY I" + - "DEOGRAPH-F9DACJK COMPATIBILITY IDEOGRAPH-F9DBCJK COMPATIBILITY IDEOGRAPH" + - "-F9DCCJK COMPATIBILITY IDEOGRAPH-F9DDCJK COMPATIBILITY IDEOGRAPH-F9DECJK" + - " COMPATIBILITY IDEOGRAPH-F9DFCJK COMPATIBILITY IDEOGRAPH-F9E0CJK COMPATI" + - "BILITY IDEOGRAPH-F9E1CJK COMPATIBILITY IDEOGRAPH-F9E2CJK COMPATIBILITY I" + - "DEOGRAPH-F9E3CJK COMPATIBILITY IDEOGRAPH-F9E4CJK COMPATIBILITY IDEOGRAPH" + - "-F9E5CJK COMPATIBILITY IDEOGRAPH-F9E6CJK COMPATIBILITY IDEOGRAPH-F9E7CJK" + - " COMPATIBILITY IDEOGRAPH-F9E8CJK COMPATIBILITY IDEOGRAPH-F9E9CJK COMPATI" + - "BILITY IDEOGRAPH-F9EACJK COMPATIBILITY IDEOGRAPH-F9EBCJK COMPATIBILITY I" + - "DEOGRAPH-F9ECCJK COMPATIBILITY IDEOGRAPH-F9EDCJK COMPATIBILITY IDEOGRAPH" + - "-F9EECJK COMPATIBILITY IDEOGRAPH-F9EFCJK COMPATIBILITY IDEOGRAPH-F9F0CJK" + - " COMPATIBILITY IDEOGRAPH-F9F1CJK COMPATIBILITY IDEOGRAPH-F9F2CJK COMPATI" + - "BILITY IDEOGRAPH-F9F3CJK COMPATIBILITY IDEOGRAPH-F9F4CJK COMPATIBILITY I" + - "DEOGRAPH-F9F5CJK COMPATIBILITY IDEOGRAPH-F9F6CJK COMPATIBILITY IDEOGRAPH" + - "-F9F7CJK COMPATIBILITY IDEOGRAPH-F9F8CJK COMPATIBILITY IDEOGRAPH-F9F9CJK" + - " COMPATIBILITY IDEOGRAPH-F9FACJK COMPATIBILITY IDEOGRAPH-F9FBCJK COMPATI" + - "BILITY IDEOGRAPH-F9FCCJK COMPATIBILITY IDEOGRAPH-F9FDCJK COMPATIBILITY I" + - "DEOGRAPH-F9FECJK COMPATIBILITY IDEOGRAPH-F9FFCJK COMPATIBILITY IDEOGRAPH") + ("" + - "-FA00CJK COMPATIBILITY IDEOGRAPH-FA01CJK COMPATIBILITY IDEOGRAPH-FA02CJK" + - " COMPATIBILITY IDEOGRAPH-FA03CJK COMPATIBILITY IDEOGRAPH-FA04CJK COMPATI" + - "BILITY IDEOGRAPH-FA05CJK COMPATIBILITY IDEOGRAPH-FA06CJK COMPATIBILITY I" + - "DEOGRAPH-FA07CJK COMPATIBILITY IDEOGRAPH-FA08CJK COMPATIBILITY IDEOGRAPH" + - "-FA09CJK COMPATIBILITY IDEOGRAPH-FA0ACJK COMPATIBILITY IDEOGRAPH-FA0BCJK" + - " COMPATIBILITY IDEOGRAPH-FA0CCJK COMPATIBILITY IDEOGRAPH-FA0DCJK COMPATI" + - "BILITY IDEOGRAPH-FA0ECJK COMPATIBILITY IDEOGRAPH-FA0FCJK COMPATIBILITY I" + - "DEOGRAPH-FA10CJK COMPATIBILITY IDEOGRAPH-FA11CJK COMPATIBILITY IDEOGRAPH" + - "-FA12CJK COMPATIBILITY IDEOGRAPH-FA13CJK COMPATIBILITY IDEOGRAPH-FA14CJK" + - " COMPATIBILITY IDEOGRAPH-FA15CJK COMPATIBILITY IDEOGRAPH-FA16CJK COMPATI" + - "BILITY IDEOGRAPH-FA17CJK COMPATIBILITY IDEOGRAPH-FA18CJK COMPATIBILITY I" + - "DEOGRAPH-FA19CJK COMPATIBILITY IDEOGRAPH-FA1ACJK COMPATIBILITY IDEOGRAPH" + - "-FA1BCJK COMPATIBILITY IDEOGRAPH-FA1CCJK COMPATIBILITY IDEOGRAPH-FA1DCJK" + - " COMPATIBILITY IDEOGRAPH-FA1ECJK COMPATIBILITY IDEOGRAPH-FA1FCJK COMPATI" + - "BILITY IDEOGRAPH-FA20CJK COMPATIBILITY IDEOGRAPH-FA21CJK COMPATIBILITY I" + - "DEOGRAPH-FA22CJK COMPATIBILITY IDEOGRAPH-FA23CJK COMPATIBILITY IDEOGRAPH" + - "-FA24CJK COMPATIBILITY IDEOGRAPH-FA25CJK COMPATIBILITY IDEOGRAPH-FA26CJK" + - " COMPATIBILITY IDEOGRAPH-FA27CJK COMPATIBILITY IDEOGRAPH-FA28CJK COMPATI" + - "BILITY IDEOGRAPH-FA29CJK COMPATIBILITY IDEOGRAPH-FA2ACJK COMPATIBILITY I" + - "DEOGRAPH-FA2BCJK COMPATIBILITY IDEOGRAPH-FA2CCJK COMPATIBILITY IDEOGRAPH" + - "-FA2DCJK COMPATIBILITY IDEOGRAPH-FA2ECJK COMPATIBILITY IDEOGRAPH-FA2FCJK" + - " COMPATIBILITY IDEOGRAPH-FA30CJK COMPATIBILITY IDEOGRAPH-FA31CJK COMPATI" + - "BILITY IDEOGRAPH-FA32CJK COMPATIBILITY IDEOGRAPH-FA33CJK COMPATIBILITY I" + - "DEOGRAPH-FA34CJK COMPATIBILITY IDEOGRAPH-FA35CJK COMPATIBILITY IDEOGRAPH" + - "-FA36CJK COMPATIBILITY IDEOGRAPH-FA37CJK COMPATIBILITY IDEOGRAPH-FA38CJK" + - " COMPATIBILITY IDEOGRAPH-FA39CJK COMPATIBILITY IDEOGRAPH-FA3ACJK COMPATI" + - "BILITY IDEOGRAPH-FA3BCJK COMPATIBILITY IDEOGRAPH-FA3CCJK COMPATIBILITY I" + - "DEOGRAPH-FA3DCJK COMPATIBILITY IDEOGRAPH-FA3ECJK COMPATIBILITY IDEOGRAPH" + - "-FA3FCJK COMPATIBILITY IDEOGRAPH-FA40CJK COMPATIBILITY IDEOGRAPH-FA41CJK" + - " COMPATIBILITY IDEOGRAPH-FA42CJK COMPATIBILITY IDEOGRAPH-FA43CJK COMPATI" + - "BILITY IDEOGRAPH-FA44CJK COMPATIBILITY IDEOGRAPH-FA45CJK COMPATIBILITY I" + - "DEOGRAPH-FA46CJK COMPATIBILITY IDEOGRAPH-FA47CJK COMPATIBILITY IDEOGRAPH" + - "-FA48CJK COMPATIBILITY IDEOGRAPH-FA49CJK COMPATIBILITY IDEOGRAPH-FA4ACJK" + - " COMPATIBILITY IDEOGRAPH-FA4BCJK COMPATIBILITY IDEOGRAPH-FA4CCJK COMPATI" + - "BILITY IDEOGRAPH-FA4DCJK COMPATIBILITY IDEOGRAPH-FA4ECJK COMPATIBILITY I" + - "DEOGRAPH-FA4FCJK COMPATIBILITY IDEOGRAPH-FA50CJK COMPATIBILITY IDEOGRAPH" + - "-FA51CJK COMPATIBILITY IDEOGRAPH-FA52CJK COMPATIBILITY IDEOGRAPH-FA53CJK" + - " COMPATIBILITY IDEOGRAPH-FA54CJK COMPATIBILITY IDEOGRAPH-FA55CJK COMPATI" + - "BILITY IDEOGRAPH-FA56CJK COMPATIBILITY IDEOGRAPH-FA57CJK COMPATIBILITY I" + - "DEOGRAPH-FA58CJK COMPATIBILITY IDEOGRAPH-FA59CJK COMPATIBILITY IDEOGRAPH" + - "-FA5ACJK COMPATIBILITY IDEOGRAPH-FA5BCJK COMPATIBILITY IDEOGRAPH-FA5CCJK" + - " COMPATIBILITY IDEOGRAPH-FA5DCJK COMPATIBILITY IDEOGRAPH-FA5ECJK COMPATI" + - "BILITY IDEOGRAPH-FA5FCJK COMPATIBILITY IDEOGRAPH-FA60CJK COMPATIBILITY I" + - "DEOGRAPH-FA61CJK COMPATIBILITY IDEOGRAPH-FA62CJK COMPATIBILITY IDEOGRAPH" + - "-FA63CJK COMPATIBILITY IDEOGRAPH-FA64CJK COMPATIBILITY IDEOGRAPH-FA65CJK" + - " COMPATIBILITY IDEOGRAPH-FA66CJK COMPATIBILITY IDEOGRAPH-FA67CJK COMPATI" + - "BILITY IDEOGRAPH-FA68CJK COMPATIBILITY IDEOGRAPH-FA69CJK COMPATIBILITY I" + - "DEOGRAPH-FA6ACJK COMPATIBILITY IDEOGRAPH-FA6BCJK COMPATIBILITY IDEOGRAPH" + - "-FA6CCJK COMPATIBILITY IDEOGRAPH-FA6DCJK COMPATIBILITY IDEOGRAPH-FA70CJK" + - " COMPATIBILITY IDEOGRAPH-FA71CJK COMPATIBILITY IDEOGRAPH-FA72CJK COMPATI" + - "BILITY IDEOGRAPH-FA73CJK COMPATIBILITY IDEOGRAPH-FA74CJK COMPATIBILITY I" + - "DEOGRAPH-FA75CJK COMPATIBILITY IDEOGRAPH-FA76CJK COMPATIBILITY IDEOGRAPH" + - "-FA77CJK COMPATIBILITY IDEOGRAPH-FA78CJK COMPATIBILITY IDEOGRAPH-FA79CJK" + - " COMPATIBILITY IDEOGRAPH-FA7ACJK COMPATIBILITY IDEOGRAPH-FA7BCJK COMPATI" + - "BILITY IDEOGRAPH-FA7CCJK COMPATIBILITY IDEOGRAPH-FA7DCJK COMPATIBILITY I" + - "DEOGRAPH-FA7ECJK COMPATIBILITY IDEOGRAPH-FA7FCJK COMPATIBILITY IDEOGRAPH" + - "-FA80CJK COMPATIBILITY IDEOGRAPH-FA81CJK COMPATIBILITY IDEOGRAPH-FA82CJK" + - " COMPATIBILITY IDEOGRAPH-FA83CJK COMPATIBILITY IDEOGRAPH-FA84CJK COMPATI" + - "BILITY IDEOGRAPH-FA85CJK COMPATIBILITY IDEOGRAPH-FA86CJK COMPATIBILITY I" + - "DEOGRAPH-FA87CJK COMPATIBILITY IDEOGRAPH-FA88CJK COMPATIBILITY IDEOGRAPH" + - "-FA89CJK COMPATIBILITY IDEOGRAPH-FA8ACJK COMPATIBILITY IDEOGRAPH-FA8BCJK" + - " COMPATIBILITY IDEOGRAPH-FA8CCJK COMPATIBILITY IDEOGRAPH-FA8DCJK COMPATI" + - "BILITY IDEOGRAPH-FA8ECJK COMPATIBILITY IDEOGRAPH-FA8FCJK COMPATIBILITY I" + - "DEOGRAPH-FA90CJK COMPATIBILITY IDEOGRAPH-FA91CJK COMPATIBILITY IDEOGRAPH") + ("" + - "-FA92CJK COMPATIBILITY IDEOGRAPH-FA93CJK COMPATIBILITY IDEOGRAPH-FA94CJK" + - " COMPATIBILITY IDEOGRAPH-FA95CJK COMPATIBILITY IDEOGRAPH-FA96CJK COMPATI" + - "BILITY IDEOGRAPH-FA97CJK COMPATIBILITY IDEOGRAPH-FA98CJK COMPATIBILITY I" + - "DEOGRAPH-FA99CJK COMPATIBILITY IDEOGRAPH-FA9ACJK COMPATIBILITY IDEOGRAPH" + - "-FA9BCJK COMPATIBILITY IDEOGRAPH-FA9CCJK COMPATIBILITY IDEOGRAPH-FA9DCJK" + - " COMPATIBILITY IDEOGRAPH-FA9ECJK COMPATIBILITY IDEOGRAPH-FA9FCJK COMPATI" + - "BILITY IDEOGRAPH-FAA0CJK COMPATIBILITY IDEOGRAPH-FAA1CJK COMPATIBILITY I" + - "DEOGRAPH-FAA2CJK COMPATIBILITY IDEOGRAPH-FAA3CJK COMPATIBILITY IDEOGRAPH" + - "-FAA4CJK COMPATIBILITY IDEOGRAPH-FAA5CJK COMPATIBILITY IDEOGRAPH-FAA6CJK" + - " COMPATIBILITY IDEOGRAPH-FAA7CJK COMPATIBILITY IDEOGRAPH-FAA8CJK COMPATI" + - "BILITY IDEOGRAPH-FAA9CJK COMPATIBILITY IDEOGRAPH-FAAACJK COMPATIBILITY I" + - "DEOGRAPH-FAABCJK COMPATIBILITY IDEOGRAPH-FAACCJK COMPATIBILITY IDEOGRAPH" + - "-FAADCJK COMPATIBILITY IDEOGRAPH-FAAECJK COMPATIBILITY IDEOGRAPH-FAAFCJK" + - " COMPATIBILITY IDEOGRAPH-FAB0CJK COMPATIBILITY IDEOGRAPH-FAB1CJK COMPATI" + - "BILITY IDEOGRAPH-FAB2CJK COMPATIBILITY IDEOGRAPH-FAB3CJK COMPATIBILITY I" + - "DEOGRAPH-FAB4CJK COMPATIBILITY IDEOGRAPH-FAB5CJK COMPATIBILITY IDEOGRAPH" + - "-FAB6CJK COMPATIBILITY IDEOGRAPH-FAB7CJK COMPATIBILITY IDEOGRAPH-FAB8CJK" + - " COMPATIBILITY IDEOGRAPH-FAB9CJK COMPATIBILITY IDEOGRAPH-FABACJK COMPATI" + - "BILITY IDEOGRAPH-FABBCJK COMPATIBILITY IDEOGRAPH-FABCCJK COMPATIBILITY I" + - "DEOGRAPH-FABDCJK COMPATIBILITY IDEOGRAPH-FABECJK COMPATIBILITY IDEOGRAPH" + - "-FABFCJK COMPATIBILITY IDEOGRAPH-FAC0CJK COMPATIBILITY IDEOGRAPH-FAC1CJK" + - " COMPATIBILITY IDEOGRAPH-FAC2CJK COMPATIBILITY IDEOGRAPH-FAC3CJK COMPATI" + - "BILITY IDEOGRAPH-FAC4CJK COMPATIBILITY IDEOGRAPH-FAC5CJK COMPATIBILITY I" + - "DEOGRAPH-FAC6CJK COMPATIBILITY IDEOGRAPH-FAC7CJK COMPATIBILITY IDEOGRAPH" + - "-FAC8CJK COMPATIBILITY IDEOGRAPH-FAC9CJK COMPATIBILITY IDEOGRAPH-FACACJK" + - " COMPATIBILITY IDEOGRAPH-FACBCJK COMPATIBILITY IDEOGRAPH-FACCCJK COMPATI" + - "BILITY IDEOGRAPH-FACDCJK COMPATIBILITY IDEOGRAPH-FACECJK COMPATIBILITY I" + - "DEOGRAPH-FACFCJK COMPATIBILITY IDEOGRAPH-FAD0CJK COMPATIBILITY IDEOGRAPH" + - "-FAD1CJK COMPATIBILITY IDEOGRAPH-FAD2CJK COMPATIBILITY IDEOGRAPH-FAD3CJK" + - " COMPATIBILITY IDEOGRAPH-FAD4CJK COMPATIBILITY IDEOGRAPH-FAD5CJK COMPATI" + - "BILITY IDEOGRAPH-FAD6CJK COMPATIBILITY IDEOGRAPH-FAD7CJK COMPATIBILITY I" + - "DEOGRAPH-FAD8CJK COMPATIBILITY IDEOGRAPH-FAD9LATIN SMALL LIGATURE FFLATI" + - "N SMALL LIGATURE FILATIN SMALL LIGATURE FLLATIN SMALL LIGATURE FFILATIN " + - "SMALL LIGATURE FFLLATIN SMALL LIGATURE LONG S TLATIN SMALL LIGATURE STAR" + - "MENIAN SMALL LIGATURE MEN NOWARMENIAN SMALL LIGATURE MEN ECHARMENIAN SMA" + - "LL LIGATURE MEN INIARMENIAN SMALL LIGATURE VEW NOWARMENIAN SMALL LIGATUR" + - "E MEN XEHHEBREW LETTER YOD WITH HIRIQHEBREW POINT JUDEO-SPANISH VARIKAHE" + - "BREW LIGATURE YIDDISH YOD YOD PATAHHEBREW LETTER ALTERNATIVE AYINHEBREW " + - "LETTER WIDE ALEFHEBREW LETTER WIDE DALETHEBREW LETTER WIDE HEHEBREW LETT" + - "ER WIDE KAFHEBREW LETTER WIDE LAMEDHEBREW LETTER WIDE FINAL MEMHEBREW LE" + - "TTER WIDE RESHHEBREW LETTER WIDE TAVHEBREW LETTER ALTERNATIVE PLUS SIGNH" + - "EBREW LETTER SHIN WITH SHIN DOTHEBREW LETTER SHIN WITH SIN DOTHEBREW LET" + - "TER SHIN WITH DAGESH AND SHIN DOTHEBREW LETTER SHIN WITH DAGESH AND SIN " + - "DOTHEBREW LETTER ALEF WITH PATAHHEBREW LETTER ALEF WITH QAMATSHEBREW LET" + - "TER ALEF WITH MAPIQHEBREW LETTER BET WITH DAGESHHEBREW LETTER GIMEL WITH" + - " DAGESHHEBREW LETTER DALET WITH DAGESHHEBREW LETTER HE WITH MAPIQHEBREW " + - "LETTER VAV WITH DAGESHHEBREW LETTER ZAYIN WITH DAGESHHEBREW LETTER TET W" + - "ITH DAGESHHEBREW LETTER YOD WITH DAGESHHEBREW LETTER FINAL KAF WITH DAGE" + - "SHHEBREW LETTER KAF WITH DAGESHHEBREW LETTER LAMED WITH DAGESHHEBREW LET" + - "TER MEM WITH DAGESHHEBREW LETTER NUN WITH DAGESHHEBREW LETTER SAMEKH WIT" + - "H DAGESHHEBREW LETTER FINAL PE WITH DAGESHHEBREW LETTER PE WITH DAGESHHE" + - "BREW LETTER TSADI WITH DAGESHHEBREW LETTER QOF WITH DAGESHHEBREW LETTER " + - "RESH WITH DAGESHHEBREW LETTER SHIN WITH DAGESHHEBREW LETTER TAV WITH DAG" + - "ESHHEBREW LETTER VAV WITH HOLAMHEBREW LETTER BET WITH RAFEHEBREW LETTER " + - "KAF WITH RAFEHEBREW LETTER PE WITH RAFEHEBREW LIGATURE ALEF LAMEDARABIC " + - "LETTER ALEF WASLA ISOLATED FORMARABIC LETTER ALEF WASLA FINAL FORMARABIC" + - " LETTER BEEH ISOLATED FORMARABIC LETTER BEEH FINAL FORMARABIC LETTER BEE" + - "H INITIAL FORMARABIC LETTER BEEH MEDIAL FORMARABIC LETTER PEH ISOLATED F" + - "ORMARABIC LETTER PEH FINAL FORMARABIC LETTER PEH INITIAL FORMARABIC LETT" + - "ER PEH MEDIAL FORMARABIC LETTER BEHEH ISOLATED FORMARABIC LETTER BEHEH F" + - "INAL FORMARABIC LETTER BEHEH INITIAL FORMARABIC LETTER BEHEH MEDIAL FORM" + - "ARABIC LETTER TTEHEH ISOLATED FORMARABIC LETTER TTEHEH FINAL FORMARABIC " + - "LETTER TTEHEH INITIAL FORMARABIC LETTER TTEHEH MEDIAL FORMARABIC LETTER " + - "TEHEH ISOLATED FORMARABIC LETTER TEHEH FINAL FORMARABIC LETTER TEHEH INI") + ("" + - "TIAL FORMARABIC LETTER TEHEH MEDIAL FORMARABIC LETTER TTEH ISOLATED FORM" + - "ARABIC LETTER TTEH FINAL FORMARABIC LETTER TTEH INITIAL FORMARABIC LETTE" + - "R TTEH MEDIAL FORMARABIC LETTER VEH ISOLATED FORMARABIC LETTER VEH FINAL" + - " FORMARABIC LETTER VEH INITIAL FORMARABIC LETTER VEH MEDIAL FORMARABIC L" + - "ETTER PEHEH ISOLATED FORMARABIC LETTER PEHEH FINAL FORMARABIC LETTER PEH" + - "EH INITIAL FORMARABIC LETTER PEHEH MEDIAL FORMARABIC LETTER DYEH ISOLATE" + - "D FORMARABIC LETTER DYEH FINAL FORMARABIC LETTER DYEH INITIAL FORMARABIC" + - " LETTER DYEH MEDIAL FORMARABIC LETTER NYEH ISOLATED FORMARABIC LETTER NY" + - "EH FINAL FORMARABIC LETTER NYEH INITIAL FORMARABIC LETTER NYEH MEDIAL FO" + - "RMARABIC LETTER TCHEH ISOLATED FORMARABIC LETTER TCHEH FINAL FORMARABIC " + - "LETTER TCHEH INITIAL FORMARABIC LETTER TCHEH MEDIAL FORMARABIC LETTER TC" + - "HEHEH ISOLATED FORMARABIC LETTER TCHEHEH FINAL FORMARABIC LETTER TCHEHEH" + - " INITIAL FORMARABIC LETTER TCHEHEH MEDIAL FORMARABIC LETTER DDAHAL ISOLA" + - "TED FORMARABIC LETTER DDAHAL FINAL FORMARABIC LETTER DAHAL ISOLATED FORM" + - "ARABIC LETTER DAHAL FINAL FORMARABIC LETTER DUL ISOLATED FORMARABIC LETT" + - "ER DUL FINAL FORMARABIC LETTER DDAL ISOLATED FORMARABIC LETTER DDAL FINA" + - "L FORMARABIC LETTER JEH ISOLATED FORMARABIC LETTER JEH FINAL FORMARABIC " + - "LETTER RREH ISOLATED FORMARABIC LETTER RREH FINAL FORMARABIC LETTER KEHE" + - "H ISOLATED FORMARABIC LETTER KEHEH FINAL FORMARABIC LETTER KEHEH INITIAL" + - " FORMARABIC LETTER KEHEH MEDIAL FORMARABIC LETTER GAF ISOLATED FORMARABI" + - "C LETTER GAF FINAL FORMARABIC LETTER GAF INITIAL FORMARABIC LETTER GAF M" + - "EDIAL FORMARABIC LETTER GUEH ISOLATED FORMARABIC LETTER GUEH FINAL FORMA" + - "RABIC LETTER GUEH INITIAL FORMARABIC LETTER GUEH MEDIAL FORMARABIC LETTE" + - "R NGOEH ISOLATED FORMARABIC LETTER NGOEH FINAL FORMARABIC LETTER NGOEH I" + - "NITIAL FORMARABIC LETTER NGOEH MEDIAL FORMARABIC LETTER NOON GHUNNA ISOL" + - "ATED FORMARABIC LETTER NOON GHUNNA FINAL FORMARABIC LETTER RNOON ISOLATE" + - "D FORMARABIC LETTER RNOON FINAL FORMARABIC LETTER RNOON INITIAL FORMARAB" + - "IC LETTER RNOON MEDIAL FORMARABIC LETTER HEH WITH YEH ABOVE ISOLATED FOR" + - "MARABIC LETTER HEH WITH YEH ABOVE FINAL FORMARABIC LETTER HEH GOAL ISOLA" + - "TED FORMARABIC LETTER HEH GOAL FINAL FORMARABIC LETTER HEH GOAL INITIAL " + - "FORMARABIC LETTER HEH GOAL MEDIAL FORMARABIC LETTER HEH DOACHASHMEE ISOL" + - "ATED FORMARABIC LETTER HEH DOACHASHMEE FINAL FORMARABIC LETTER HEH DOACH" + - "ASHMEE INITIAL FORMARABIC LETTER HEH DOACHASHMEE MEDIAL FORMARABIC LETTE" + - "R YEH BARREE ISOLATED FORMARABIC LETTER YEH BARREE FINAL FORMARABIC LETT" + - "ER YEH BARREE WITH HAMZA ABOVE ISOLATED FORMARABIC LETTER YEH BARREE WIT" + - "H HAMZA ABOVE FINAL FORMARABIC SYMBOL DOT ABOVEARABIC SYMBOL DOT BELOWAR" + - "ABIC SYMBOL TWO DOTS ABOVEARABIC SYMBOL TWO DOTS BELOWARABIC SYMBOL THRE" + - "E DOTS ABOVEARABIC SYMBOL THREE DOTS BELOWARABIC SYMBOL THREE DOTS POINT" + - "ING DOWNWARDS ABOVEARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOWARAB" + - "IC SYMBOL FOUR DOTS ABOVEARABIC SYMBOL FOUR DOTS BELOWARABIC SYMBOL DOUB" + - "LE VERTICAL BAR BELOWARABIC SYMBOL TWO DOTS VERTICALLY ABOVEARABIC SYMBO" + - "L TWO DOTS VERTICALLY BELOWARABIC SYMBOL RINGARABIC SYMBOL SMALL TAH ABO" + - "VEARABIC SYMBOL SMALL TAH BELOWARABIC LETTER NG ISOLATED FORMARABIC LETT" + - "ER NG FINAL FORMARABIC LETTER NG INITIAL FORMARABIC LETTER NG MEDIAL FOR" + - "MARABIC LETTER U ISOLATED FORMARABIC LETTER U FINAL FORMARABIC LETTER OE" + - " ISOLATED FORMARABIC LETTER OE FINAL FORMARABIC LETTER YU ISOLATED FORMA" + - "RABIC LETTER YU FINAL FORMARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM" + - "ARABIC LETTER VE ISOLATED FORMARABIC LETTER VE FINAL FORMARABIC LETTER K" + - "IRGHIZ OE ISOLATED FORMARABIC LETTER KIRGHIZ OE FINAL FORMARABIC LETTER " + - "KIRGHIZ YU ISOLATED FORMARABIC LETTER KIRGHIZ YU FINAL FORMARABIC LETTER" + - " E ISOLATED FORMARABIC LETTER E FINAL FORMARABIC LETTER E INITIAL FORMAR" + - "ABIC LETTER E MEDIAL FORMARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSUR" + - "A INITIAL FORMARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FO" + - "RMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORMARABIC LIG" + - "ATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORMARABIC LIGATURE YEH WITH " + - "HAMZA ABOVE WITH AE ISOLATED FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WI" + - "TH AE FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED F" + - "ORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORMARABIC LIGATU" + - "RE YEH WITH HAMZA ABOVE WITH U ISOLATED FORMARABIC LIGATURE YEH WITH HAM" + - "ZA ABOVE WITH U FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE I" + - "SOLATED FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORMARABI" + - "C LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORMARABIC LIGATURE YEH" + - " WITH HAMZA ABOVE WITH YU FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE" + - " WITH E ISOLATED FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL F") + ("" + - "ORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORMARABIC LIGATU" + - "RE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORMAR" + - "ABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINA" + - "L FORMARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKS" + - "URA INITIAL FORMARABIC LETTER FARSI YEH ISOLATED FORMARABIC LETTER FARSI" + - " YEH FINAL FORMARABIC LETTER FARSI YEH INITIAL FORMARABIC LETTER FARSI Y" + - "EH MEDIAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FO" + - "RMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORMARABIC LIGA" + - "TURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORMARABIC LIGATURE YEH WIT" + - "H HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE YEH WITH HA" + - "MZA ABOVE WITH YEH ISOLATED FORMARABIC LIGATURE BEH WITH JEEM ISOLATED F" + - "ORMARABIC LIGATURE BEH WITH HAH ISOLATED FORMARABIC LIGATURE BEH WITH KH" + - "AH ISOLATED FORMARABIC LIGATURE BEH WITH MEEM ISOLATED FORMARABIC LIGATU" + - "RE BEH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE BEH WITH YEH ISOLA" + - "TED FORMARABIC LIGATURE TEH WITH JEEM ISOLATED FORMARABIC LIGATURE TEH W" + - "ITH HAH ISOLATED FORMARABIC LIGATURE TEH WITH KHAH ISOLATED FORMARABIC L" + - "IGATURE TEH WITH MEEM ISOLATED FORMARABIC LIGATURE TEH WITH ALEF MAKSURA" + - " ISOLATED FORMARABIC LIGATURE TEH WITH YEH ISOLATED FORMARABIC LIGATURE " + - "THEH WITH JEEM ISOLATED FORMARABIC LIGATURE THEH WITH MEEM ISOLATED FORM" + - "ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE THEH" + - " WITH YEH ISOLATED FORMARABIC LIGATURE JEEM WITH HAH ISOLATED FORMARABIC" + - " LIGATURE JEEM WITH MEEM ISOLATED FORMARABIC LIGATURE HAH WITH JEEM ISOL" + - "ATED FORMARABIC LIGATURE HAH WITH MEEM ISOLATED FORMARABIC LIGATURE KHAH" + - " WITH JEEM ISOLATED FORMARABIC LIGATURE KHAH WITH HAH ISOLATED FORMARABI" + - "C LIGATURE KHAH WITH MEEM ISOLATED FORMARABIC LIGATURE SEEN WITH JEEM IS" + - "OLATED FORMARABIC LIGATURE SEEN WITH HAH ISOLATED FORMARABIC LIGATURE SE" + - "EN WITH KHAH ISOLATED FORMARABIC LIGATURE SEEN WITH MEEM ISOLATED FORMAR" + - "ABIC LIGATURE SAD WITH HAH ISOLATED FORMARABIC LIGATURE SAD WITH MEEM IS" + - "OLATED FORMARABIC LIGATURE DAD WITH JEEM ISOLATED FORMARABIC LIGATURE DA" + - "D WITH HAH ISOLATED FORMARABIC LIGATURE DAD WITH KHAH ISOLATED FORMARABI" + - "C LIGATURE DAD WITH MEEM ISOLATED FORMARABIC LIGATURE TAH WITH HAH ISOLA" + - "TED FORMARABIC LIGATURE TAH WITH MEEM ISOLATED FORMARABIC LIGATURE ZAH W" + - "ITH MEEM ISOLATED FORMARABIC LIGATURE AIN WITH JEEM ISOLATED FORMARABIC " + - "LIGATURE AIN WITH MEEM ISOLATED FORMARABIC LIGATURE GHAIN WITH JEEM ISOL" + - "ATED FORMARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORMARABIC LIGATURE FE" + - "H WITH JEEM ISOLATED FORMARABIC LIGATURE FEH WITH HAH ISOLATED FORMARABI" + - "C LIGATURE FEH WITH KHAH ISOLATED FORMARABIC LIGATURE FEH WITH MEEM ISOL" + - "ATED FORMARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGAT" + - "URE FEH WITH YEH ISOLATED FORMARABIC LIGATURE QAF WITH HAH ISOLATED FORM" + - "ARABIC LIGATURE QAF WITH MEEM ISOLATED FORMARABIC LIGATURE QAF WITH ALEF" + - " MAKSURA ISOLATED FORMARABIC LIGATURE QAF WITH YEH ISOLATED FORMARABIC L" + - "IGATURE KAF WITH ALEF ISOLATED FORMARABIC LIGATURE KAF WITH JEEM ISOLATE" + - "D FORMARABIC LIGATURE KAF WITH HAH ISOLATED FORMARABIC LIGATURE KAF WITH" + - " KHAH ISOLATED FORMARABIC LIGATURE KAF WITH LAM ISOLATED FORMARABIC LIGA" + - "TURE KAF WITH MEEM ISOLATED FORMARABIC LIGATURE KAF WITH ALEF MAKSURA IS" + - "OLATED FORMARABIC LIGATURE KAF WITH YEH ISOLATED FORMARABIC LIGATURE LAM" + - " WITH JEEM ISOLATED FORMARABIC LIGATURE LAM WITH HAH ISOLATED FORMARABIC" + - " LIGATURE LAM WITH KHAH ISOLATED FORMARABIC LIGATURE LAM WITH MEEM ISOLA" + - "TED FORMARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATU" + - "RE LAM WITH YEH ISOLATED FORMARABIC LIGATURE MEEM WITH JEEM ISOLATED FOR" + - "MARABIC LIGATURE MEEM WITH HAH ISOLATED FORMARABIC LIGATURE MEEM WITH KH" + - "AH ISOLATED FORMARABIC LIGATURE MEEM WITH MEEM ISOLATED FORMARABIC LIGAT" + - "URE MEEM WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE MEEM WITH YEH IS" + - "OLATED FORMARABIC LIGATURE NOON WITH JEEM ISOLATED FORMARABIC LIGATURE N" + - "OON WITH HAH ISOLATED FORMARABIC LIGATURE NOON WITH KHAH ISOLATED FORMAR" + - "ABIC LIGATURE NOON WITH MEEM ISOLATED FORMARABIC LIGATURE NOON WITH ALEF" + - " MAKSURA ISOLATED FORMARABIC LIGATURE NOON WITH YEH ISOLATED FORMARABIC " + - "LIGATURE HEH WITH JEEM ISOLATED FORMARABIC LIGATURE HEH WITH MEEM ISOLAT" + - "ED FORMARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATUR" + - "E HEH WITH YEH ISOLATED FORMARABIC LIGATURE YEH WITH JEEM ISOLATED FORMA" + - "RABIC LIGATURE YEH WITH HAH ISOLATED FORMARABIC LIGATURE YEH WITH KHAH I" + - "SOLATED FORMARABIC LIGATURE YEH WITH MEEM ISOLATED FORMARABIC LIGATURE Y" + - "EH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE YEH WITH YEH ISOLATED " + - "FORMARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORMARABIC LIGAT") + ("" + - "URE REH WITH SUPERSCRIPT ALEF ISOLATED FORMARABIC LIGATURE ALEF MAKSURA " + - "WITH SUPERSCRIPT ALEF ISOLATED FORMARABIC LIGATURE SHADDA WITH DAMMATAN " + - "ISOLATED FORMARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORMARABIC LI" + - "GATURE SHADDA WITH FATHA ISOLATED FORMARABIC LIGATURE SHADDA WITH DAMMA " + - "ISOLATED FORMARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORMARABIC LIGAT" + - "URE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORMARABIC LIGATURE YEH WITH H" + - "AMZA ABOVE WITH REH FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH " + - "ZAIN FINAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM" + - "ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORMARABIC LIGATURE" + - " YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE YEH WI" + - "TH HAMZA ABOVE WITH YEH FINAL FORMARABIC LIGATURE BEH WITH REH FINAL FOR" + - "MARABIC LIGATURE BEH WITH ZAIN FINAL FORMARABIC LIGATURE BEH WITH MEEM F" + - "INAL FORMARABIC LIGATURE BEH WITH NOON FINAL FORMARABIC LIGATURE BEH WIT" + - "H ALEF MAKSURA FINAL FORMARABIC LIGATURE BEH WITH YEH FINAL FORMARABIC L" + - "IGATURE TEH WITH REH FINAL FORMARABIC LIGATURE TEH WITH ZAIN FINAL FORMA" + - "RABIC LIGATURE TEH WITH MEEM FINAL FORMARABIC LIGATURE TEH WITH NOON FIN" + - "AL FORMARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE T" + - "EH WITH YEH FINAL FORMARABIC LIGATURE THEH WITH REH FINAL FORMARABIC LIG" + - "ATURE THEH WITH ZAIN FINAL FORMARABIC LIGATURE THEH WITH MEEM FINAL FORM" + - "ARABIC LIGATURE THEH WITH NOON FINAL FORMARABIC LIGATURE THEH WITH ALEF " + - "MAKSURA FINAL FORMARABIC LIGATURE THEH WITH YEH FINAL FORMARABIC LIGATUR" + - "E FEH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE FEH WITH YEH FINAL FOR" + - "MARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE QAF WIT" + - "H YEH FINAL FORMARABIC LIGATURE KAF WITH ALEF FINAL FORMARABIC LIGATURE " + - "KAF WITH LAM FINAL FORMARABIC LIGATURE KAF WITH MEEM FINAL FORMARABIC LI" + - "GATURE KAF WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE KAF WITH YEH FINA" + - "L FORMARABIC LIGATURE LAM WITH MEEM FINAL FORMARABIC LIGATURE LAM WITH A" + - "LEF MAKSURA FINAL FORMARABIC LIGATURE LAM WITH YEH FINAL FORMARABIC LIGA" + - "TURE MEEM WITH ALEF FINAL FORMARABIC LIGATURE MEEM WITH MEEM FINAL FORMA" + - "RABIC LIGATURE NOON WITH REH FINAL FORMARABIC LIGATURE NOON WITH ZAIN FI" + - "NAL FORMARABIC LIGATURE NOON WITH MEEM FINAL FORMARABIC LIGATURE NOON WI" + - "TH NOON FINAL FORMARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORMARABI" + - "C LIGATURE NOON WITH YEH FINAL FORMARABIC LIGATURE ALEF MAKSURA WITH SUP" + - "ERSCRIPT ALEF FINAL FORMARABIC LIGATURE YEH WITH REH FINAL FORMARABIC LI" + - "GATURE YEH WITH ZAIN FINAL FORMARABIC LIGATURE YEH WITH MEEM FINAL FORMA" + - "RABIC LIGATURE YEH WITH NOON FINAL FORMARABIC LIGATURE YEH WITH ALEF MAK" + - "SURA FINAL FORMARABIC LIGATURE YEH WITH YEH FINAL FORMARABIC LIGATURE YE" + - "H WITH HAMZA ABOVE WITH JEEM INITIAL FORMARABIC LIGATURE YEH WITH HAMZA " + - "ABOVE WITH HAH INITIAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHA" + - "H INITIAL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FOR" + - "MARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORMARABIC LIGATU" + - "RE BEH WITH JEEM INITIAL FORMARABIC LIGATURE BEH WITH HAH INITIAL FORMAR" + - "ABIC LIGATURE BEH WITH KHAH INITIAL FORMARABIC LIGATURE BEH WITH MEEM IN" + - "ITIAL FORMARABIC LIGATURE BEH WITH HEH INITIAL FORMARABIC LIGATURE TEH W" + - "ITH JEEM INITIAL FORMARABIC LIGATURE TEH WITH HAH INITIAL FORMARABIC LIG" + - "ATURE TEH WITH KHAH INITIAL FORMARABIC LIGATURE TEH WITH MEEM INITIAL FO" + - "RMARABIC LIGATURE TEH WITH HEH INITIAL FORMARABIC LIGATURE THEH WITH MEE" + - "M INITIAL FORMARABIC LIGATURE JEEM WITH HAH INITIAL FORMARABIC LIGATURE " + - "JEEM WITH MEEM INITIAL FORMARABIC LIGATURE HAH WITH JEEM INITIAL FORMARA" + - "BIC LIGATURE HAH WITH MEEM INITIAL FORMARABIC LIGATURE KHAH WITH JEEM IN" + - "ITIAL FORMARABIC LIGATURE KHAH WITH MEEM INITIAL FORMARABIC LIGATURE SEE" + - "N WITH JEEM INITIAL FORMARABIC LIGATURE SEEN WITH HAH INITIAL FORMARABIC" + - " LIGATURE SEEN WITH KHAH INITIAL FORMARABIC LIGATURE SEEN WITH MEEM INIT" + - "IAL FORMARABIC LIGATURE SAD WITH HAH INITIAL FORMARABIC LIGATURE SAD WIT" + - "H KHAH INITIAL FORMARABIC LIGATURE SAD WITH MEEM INITIAL FORMARABIC LIGA" + - "TURE DAD WITH JEEM INITIAL FORMARABIC LIGATURE DAD WITH HAH INITIAL FORM" + - "ARABIC LIGATURE DAD WITH KHAH INITIAL FORMARABIC LIGATURE DAD WITH MEEM " + - "INITIAL FORMARABIC LIGATURE TAH WITH HAH INITIAL FORMARABIC LIGATURE ZAH" + - " WITH MEEM INITIAL FORMARABIC LIGATURE AIN WITH JEEM INITIAL FORMARABIC " + - "LIGATURE AIN WITH MEEM INITIAL FORMARABIC LIGATURE GHAIN WITH JEEM INITI" + - "AL FORMARABIC LIGATURE GHAIN WITH MEEM INITIAL FORMARABIC LIGATURE FEH W" + - "ITH JEEM INITIAL FORMARABIC LIGATURE FEH WITH HAH INITIAL FORMARABIC LIG" + - "ATURE FEH WITH KHAH INITIAL FORMARABIC LIGATURE FEH WITH MEEM INITIAL FO" + - "RMARABIC LIGATURE QAF WITH HAH INITIAL FORMARABIC LIGATURE QAF WITH MEEM") + ("" + - " INITIAL FORMARABIC LIGATURE KAF WITH JEEM INITIAL FORMARABIC LIGATURE K" + - "AF WITH HAH INITIAL FORMARABIC LIGATURE KAF WITH KHAH INITIAL FORMARABIC" + - " LIGATURE KAF WITH LAM INITIAL FORMARABIC LIGATURE KAF WITH MEEM INITIAL" + - " FORMARABIC LIGATURE LAM WITH JEEM INITIAL FORMARABIC LIGATURE LAM WITH " + - "HAH INITIAL FORMARABIC LIGATURE LAM WITH KHAH INITIAL FORMARABIC LIGATUR" + - "E LAM WITH MEEM INITIAL FORMARABIC LIGATURE LAM WITH HEH INITIAL FORMARA" + - "BIC LIGATURE MEEM WITH JEEM INITIAL FORMARABIC LIGATURE MEEM WITH HAH IN" + - "ITIAL FORMARABIC LIGATURE MEEM WITH KHAH INITIAL FORMARABIC LIGATURE MEE" + - "M WITH MEEM INITIAL FORMARABIC LIGATURE NOON WITH JEEM INITIAL FORMARABI" + - "C LIGATURE NOON WITH HAH INITIAL FORMARABIC LIGATURE NOON WITH KHAH INIT" + - "IAL FORMARABIC LIGATURE NOON WITH MEEM INITIAL FORMARABIC LIGATURE NOON " + - "WITH HEH INITIAL FORMARABIC LIGATURE HEH WITH JEEM INITIAL FORMARABIC LI" + - "GATURE HEH WITH MEEM INITIAL FORMARABIC LIGATURE HEH WITH SUPERSCRIPT AL" + - "EF INITIAL FORMARABIC LIGATURE YEH WITH JEEM INITIAL FORMARABIC LIGATURE" + - " YEH WITH HAH INITIAL FORMARABIC LIGATURE YEH WITH KHAH INITIAL FORMARAB" + - "IC LIGATURE YEH WITH MEEM INITIAL FORMARABIC LIGATURE YEH WITH HEH INITI" + - "AL FORMARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORMARABIC " + - "LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORMARABIC LIGATURE BEH WI" + - "TH MEEM MEDIAL FORMARABIC LIGATURE BEH WITH HEH MEDIAL FORMARABIC LIGATU" + - "RE TEH WITH MEEM MEDIAL FORMARABIC LIGATURE TEH WITH HEH MEDIAL FORMARAB" + - "IC LIGATURE THEH WITH MEEM MEDIAL FORMARABIC LIGATURE THEH WITH HEH MEDI" + - "AL FORMARABIC LIGATURE SEEN WITH MEEM MEDIAL FORMARABIC LIGATURE SEEN WI" + - "TH HEH MEDIAL FORMARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORMARABIC LIGA" + - "TURE SHEEN WITH HEH MEDIAL FORMARABIC LIGATURE KAF WITH LAM MEDIAL FORMA" + - "RABIC LIGATURE KAF WITH MEEM MEDIAL FORMARABIC LIGATURE LAM WITH MEEM ME" + - "DIAL FORMARABIC LIGATURE NOON WITH MEEM MEDIAL FORMARABIC LIGATURE NOON " + - "WITH HEH MEDIAL FORMARABIC LIGATURE YEH WITH MEEM MEDIAL FORMARABIC LIGA" + - "TURE YEH WITH HEH MEDIAL FORMARABIC LIGATURE SHADDA WITH FATHA MEDIAL FO" + - "RMARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORMARABIC LIGATURE SHADDA WI" + - "TH KASRA MEDIAL FORMARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORMA" + - "RABIC LIGATURE TAH WITH YEH ISOLATED FORMARABIC LIGATURE AIN WITH ALEF M" + - "AKSURA ISOLATED FORMARABIC LIGATURE AIN WITH YEH ISOLATED FORMARABIC LIG" + - "ATURE GHAIN WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE GHAIN WITH YE" + - "H ISOLATED FORMARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORMARABI" + - "C LIGATURE SEEN WITH YEH ISOLATED FORMARABIC LIGATURE SHEEN WITH ALEF MA" + - "KSURA ISOLATED FORMARABIC LIGATURE SHEEN WITH YEH ISOLATED FORMARABIC LI" + - "GATURE HAH WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE HAH WITH YEH I" + - "SOLATED FORMARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORMARABIC L" + - "IGATURE JEEM WITH YEH ISOLATED FORMARABIC LIGATURE KHAH WITH ALEF MAKSUR" + - "A ISOLATED FORMARABIC LIGATURE KHAH WITH YEH ISOLATED FORMARABIC LIGATUR" + - "E SAD WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATURE SAD WITH YEH ISOLAT" + - "ED FORMARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORMARABIC LIGATUR" + - "E DAD WITH YEH ISOLATED FORMARABIC LIGATURE SHEEN WITH JEEM ISOLATED FOR" + - "MARABIC LIGATURE SHEEN WITH HAH ISOLATED FORMARABIC LIGATURE SHEEN WITH " + - "KHAH ISOLATED FORMARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORMARABIC LI" + - "GATURE SHEEN WITH REH ISOLATED FORMARABIC LIGATURE SEEN WITH REH ISOLATE" + - "D FORMARABIC LIGATURE SAD WITH REH ISOLATED FORMARABIC LIGATURE DAD WITH" + - " REH ISOLATED FORMARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORMARABIC" + - " LIGATURE TAH WITH YEH FINAL FORMARABIC LIGATURE AIN WITH ALEF MAKSURA F" + - "INAL FORMARABIC LIGATURE AIN WITH YEH FINAL FORMARABIC LIGATURE GHAIN WI" + - "TH ALEF MAKSURA FINAL FORMARABIC LIGATURE GHAIN WITH YEH FINAL FORMARABI" + - "C LIGATURE SEEN WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE SEEN WITH YE" + - "H FINAL FORMARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORMARABIC LIG" + - "ATURE SHEEN WITH YEH FINAL FORMARABIC LIGATURE HAH WITH ALEF MAKSURA FIN" + - "AL FORMARABIC LIGATURE HAH WITH YEH FINAL FORMARABIC LIGATURE JEEM WITH " + - "ALEF MAKSURA FINAL FORMARABIC LIGATURE JEEM WITH YEH FINAL FORMARABIC LI" + - "GATURE KHAH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE KHAH WITH YEH FI" + - "NAL FORMARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE " + - "SAD WITH YEH FINAL FORMARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORMA" + - "RABIC LIGATURE DAD WITH YEH FINAL FORMARABIC LIGATURE SHEEN WITH JEEM FI" + - "NAL FORMARABIC LIGATURE SHEEN WITH HAH FINAL FORMARABIC LIGATURE SHEEN W" + - "ITH KHAH FINAL FORMARABIC LIGATURE SHEEN WITH MEEM FINAL FORMARABIC LIGA" + - "TURE SHEEN WITH REH FINAL FORMARABIC LIGATURE SEEN WITH REH FINAL FORMAR" + - "ABIC LIGATURE SAD WITH REH FINAL FORMARABIC LIGATURE DAD WITH REH FINAL ") + ("" + - "FORMARABIC LIGATURE SHEEN WITH JEEM INITIAL FORMARABIC LIGATURE SHEEN WI" + - "TH HAH INITIAL FORMARABIC LIGATURE SHEEN WITH KHAH INITIAL FORMARABIC LI" + - "GATURE SHEEN WITH MEEM INITIAL FORMARABIC LIGATURE SEEN WITH HEH INITIAL" + - " FORMARABIC LIGATURE SHEEN WITH HEH INITIAL FORMARABIC LIGATURE TAH WITH" + - " MEEM INITIAL FORMARABIC LIGATURE SEEN WITH JEEM MEDIAL FORMARABIC LIGAT" + - "URE SEEN WITH HAH MEDIAL FORMARABIC LIGATURE SEEN WITH KHAH MEDIAL FORMA" + - "RABIC LIGATURE SHEEN WITH JEEM MEDIAL FORMARABIC LIGATURE SHEEN WITH HAH" + - " MEDIAL FORMARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORMARABIC LIGATURE T" + - "AH WITH MEEM MEDIAL FORMARABIC LIGATURE ZAH WITH MEEM MEDIAL FORMARABIC " + - "LIGATURE ALEF WITH FATHATAN FINAL FORMARABIC LIGATURE ALEF WITH FATHATAN" + - " ISOLATED FORMORNATE LEFT PARENTHESISORNATE RIGHT PARENTHESISARABIC LIGA" + - "TURE TEH WITH JEEM WITH MEEM INITIAL FORMARABIC LIGATURE TEH WITH HAH WI" + - "TH JEEM FINAL FORMARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORMARA" + - "BIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORMARABIC LIGATURE TEH WITH" + - " KHAH WITH MEEM INITIAL FORMARABIC LIGATURE TEH WITH MEEM WITH JEEM INIT" + - "IAL FORMARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORMARABIC LIGATU" + - "RE TEH WITH MEEM WITH KHAH INITIAL FORMARABIC LIGATURE JEEM WITH MEEM WI" + - "TH HAH FINAL FORMARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORMARA" + - "BIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE HAH WITH M" + - "EEM WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE SEEN WITH HAH WITH JEEM " + - "INITIAL FORMARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORMARABIC L" + - "IGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE SEEN " + - "WITH MEEM WITH HAH FINAL FORMARABIC LIGATURE SEEN WITH MEEM WITH HAH INI" + - "TIAL FORMARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORMARABIC LIG" + - "ATURE SEEN WITH MEEM WITH MEEM FINAL FORMARABIC LIGATURE SEEN WITH MEEM " + - "WITH MEEM INITIAL FORMARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORMAR" + - "ABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORMARABIC LIGATURE SAD WITH" + - " MEEM WITH MEEM FINAL FORMARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL" + - " FORMARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORMARABIC LIGATUR" + - "E SHEEN WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE SHEEN WITH MEEM WIT" + - "H KHAH FINAL FORMARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORMA" + - "RABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORMARABIC LIGATURE SHEEN" + - " WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE DAD WITH HAH WITH ALEF " + - "MAKSURA FINAL FORMARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORMARAB" + - "IC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORMARABIC LIGATURE TAH WITH" + - " MEEM WITH HAH FINAL FORMARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL " + - "FORMARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE " + - "TAH WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE AIN WITH JEEM WITH MEEM" + - " FINAL FORMARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORMARABIC LIGA" + - "TURE AIN WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE AIN WITH MEEM W" + - "ITH ALEF MAKSURA FINAL FORMARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FIN" + - "AL FORMARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORMARABIC LIGATUR" + - "E GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE FEH WITH K" + - "HAH WITH MEEM FINAL FORMARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL " + - "FORMARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORMARABIC LIGATURE QAF" + - " WITH MEEM WITH MEEM FINAL FORMARABIC LIGATURE LAM WITH HAH WITH MEEM FI" + - "NAL FORMARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORMARABIC LIGATURE " + - "LAM WITH HAH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE LAM WITH JEEM W" + - "ITH JEEM INITIAL FORMARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORMA" + - "RABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORMARABIC LIGATURE LAM WIT" + - "H KHAH WITH MEEM INITIAL FORMARABIC LIGATURE LAM WITH MEEM WITH HAH FINA" + - "L FORMARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORMARABIC LIGATURE" + - " MEEM WITH HAH WITH JEEM INITIAL FORMARABIC LIGATURE MEEM WITH HAH WITH " + - "MEEM INITIAL FORMARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORMARABIC" + - " LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORMARABIC LIGATURE MEEM WITH " + - "JEEM WITH MEEM INITIAL FORMARABIC LIGATURE MEEM WITH KHAH WITH JEEM INIT" + - "IAL FORMARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORMARABIC LIGA" + - "TURE MEEM WITH JEEM WITH KHAH INITIAL FORMARABIC LIGATURE HEH WITH MEEM " + - "WITH JEEM INITIAL FORMARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FO" + - "RMARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORMARABIC LIGATURE NO" + - "ON WITH HAH WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE NOON WITH JEEM W" + - "ITH MEEM FINAL FORMARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM" + - "ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORMARABIC LIGATU" + - "RE NOON WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE NOON WITH MEEM WITH") + ("" + - " ALEF MAKSURA FINAL FORMARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FO" + - "RMARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE BE" + - "H WITH KHAH WITH YEH FINAL FORMARABIC LIGATURE TEH WITH JEEM WITH YEH FI" + - "NAL FORMARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORMARABIC" + - " LIGATURE TEH WITH KHAH WITH YEH FINAL FORMARABIC LIGATURE TEH WITH KHAH" + - " WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE TEH WITH MEEM WITH YEH FINA" + - "L FORMARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORMARABIC L" + - "IGATURE JEEM WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE JEEM WITH HAH " + - "WITH ALEF MAKSURA FINAL FORMARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAK" + - "SURA FINAL FORMARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FO" + - "RMARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORMARABIC LIGATURE SHEEN " + - "WITH HAH WITH YEH FINAL FORMARABIC LIGATURE DAD WITH HAH WITH YEH FINAL " + - "FORMARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE LAM" + - " WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE YEH WITH HAH WITH YEH FINA" + - "L FORMARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE Y" + - "EH WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE MEEM WITH MEEM WITH YEH " + - "FINAL FORMARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORMARABIC LIGATU" + - "RE NOON WITH HAH WITH YEH FINAL FORMARABIC LIGATURE QAF WITH MEEM WITH H" + - "AH INITIAL FORMARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORMARABIC" + - " LIGATURE AIN WITH MEEM WITH YEH FINAL FORMARABIC LIGATURE KAF WITH MEEM" + - " WITH YEH FINAL FORMARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM" + - "ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORMARABIC LIGATURE LAM WI" + - "TH JEEM WITH MEEM INITIAL FORMARABIC LIGATURE KAF WITH MEEM WITH MEEM FI" + - "NAL FORMARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORMARABIC LIGATUR" + - "E NOON WITH JEEM WITH HAH FINAL FORMARABIC LIGATURE JEEM WITH HAH WITH Y" + - "EH FINAL FORMARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORMARABIC LIG" + - "ATURE MEEM WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE FEH WITH MEEM WI" + - "TH YEH FINAL FORMARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORMARABIC " + - "LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORMARABIC LIGATURE AIN WITH JE" + - "EM WITH MEEM INITIAL FORMARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL" + - " FORMARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORMARABIC LIGATURE N" + - "OON WITH JEEM WITH YEH FINAL FORMARABIC LIGATURE SALLA USED AS KORANIC S" + - "TOP SIGN ISOLATED FORMARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISO" + - "LATED FORMARABIC LIGATURE ALLAH ISOLATED FORMARABIC LIGATURE AKBAR ISOLA" + - "TED FORMARABIC LIGATURE MOHAMMAD ISOLATED FORMARABIC LIGATURE SALAM ISOL" + - "ATED FORMARABIC LIGATURE RASOUL ISOLATED FORMARABIC LIGATURE ALAYHE ISOL" + - "ATED FORMARABIC LIGATURE WASALLAM ISOLATED FORMARABIC LIGATURE SALLA ISO" + - "LATED FORMARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAMARABIC LIGATURE JAL" + - "LAJALALOUHOURIAL SIGNARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEMVARIAT" + - "ION SELECTOR-1VARIATION SELECTOR-2VARIATION SELECTOR-3VARIATION SELECTOR" + - "-4VARIATION SELECTOR-5VARIATION SELECTOR-6VARIATION SELECTOR-7VARIATION " + - "SELECTOR-8VARIATION SELECTOR-9VARIATION SELECTOR-10VARIATION SELECTOR-11" + - "VARIATION SELECTOR-12VARIATION SELECTOR-13VARIATION SELECTOR-14VARIATION" + - " SELECTOR-15VARIATION SELECTOR-16PRESENTATION FORM FOR VERTICAL COMMAPRE" + - "SENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMAPRESENTATION FORM FOR VERTI" + - "CAL IDEOGRAPHIC FULL STOPPRESENTATION FORM FOR VERTICAL COLONPRESENTATIO" + - "N FORM FOR VERTICAL SEMICOLONPRESENTATION FORM FOR VERTICAL EXCLAMATION " + - "MARKPRESENTATION FORM FOR VERTICAL QUESTION MARKPRESENTATION FORM FOR VE" + - "RTICAL LEFT WHITE LENTICULAR BRACKETPRESENTATION FORM FOR VERTICAL RIGHT" + - " WHITE LENTICULAR BRAKCETPRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIP" + - "SISCOMBINING LIGATURE LEFT HALFCOMBINING LIGATURE RIGHT HALFCOMBINING DO" + - "UBLE TILDE LEFT HALFCOMBINING DOUBLE TILDE RIGHT HALFCOMBINING MACRON LE" + - "FT HALFCOMBINING MACRON RIGHT HALFCOMBINING CONJOINING MACRONCOMBINING L" + - "IGATURE LEFT HALF BELOWCOMBINING LIGATURE RIGHT HALF BELOWCOMBINING TILD" + - "E LEFT HALF BELOWCOMBINING TILDE RIGHT HALF BELOWCOMBINING MACRON LEFT H" + - "ALF BELOWCOMBINING MACRON RIGHT HALF BELOWCOMBINING CONJOINING MACRON BE" + - "LOWCOMBINING CYRILLIC TITLO LEFT HALFCOMBINING CYRILLIC TITLO RIGHT HALF" + - "PRESENTATION FORM FOR VERTICAL TWO DOT LEADERPRESENTATION FORM FOR VERTI" + - "CAL EM DASHPRESENTATION FORM FOR VERTICAL EN DASHPRESENTATION FORM FOR V" + - "ERTICAL LOW LINEPRESENTATION FORM FOR VERTICAL WAVY LOW LINEPRESENTATION" + - " FORM FOR VERTICAL LEFT PARENTHESISPRESENTATION FORM FOR VERTICAL RIGHT " + - "PARENTHESISPRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKETPRESENTATION" + - " FORM FOR VERTICAL RIGHT CURLY BRACKETPRESENTATION FORM FOR VERTICAL LEF" + - "T TORTOISE SHELL BRACKETPRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SH") + ("" + - "ELL BRACKETPRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKETP" + - "RESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKETPRESENTATION" + - " FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKETPRESENTATION FORM FOR VERTIC" + - "AL RIGHT DOUBLE ANGLE BRACKETPRESENTATION FORM FOR VERTICAL LEFT ANGLE B" + - "RACKETPRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKETPRESENTATION FOR" + - "M FOR VERTICAL LEFT CORNER BRACKETPRESENTATION FORM FOR VERTICAL RIGHT C" + - "ORNER BRACKETPRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKETPRE" + - "SENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKETSESAME DOTWHITE SE" + - "SAME DOTPRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKETPRESENTATION F" + - "ORM FOR VERTICAL RIGHT SQUARE BRACKETDASHED OVERLINECENTRELINE OVERLINEW" + - "AVY OVERLINEDOUBLE WAVY OVERLINEDASHED LOW LINECENTRELINE LOW LINEWAVY L" + - "OW LINESMALL COMMASMALL IDEOGRAPHIC COMMASMALL FULL STOPSMALL SEMICOLONS" + - "MALL COLONSMALL QUESTION MARKSMALL EXCLAMATION MARKSMALL EM DASHSMALL LE" + - "FT PARENTHESISSMALL RIGHT PARENTHESISSMALL LEFT CURLY BRACKETSMALL RIGHT" + - " CURLY BRACKETSMALL LEFT TORTOISE SHELL BRACKETSMALL RIGHT TORTOISE SHEL" + - "L BRACKETSMALL NUMBER SIGNSMALL AMPERSANDSMALL ASTERISKSMALL PLUS SIGNSM" + - "ALL HYPHEN-MINUSSMALL LESS-THAN SIGNSMALL GREATER-THAN SIGNSMALL EQUALS " + - "SIGNSMALL REVERSE SOLIDUSSMALL DOLLAR SIGNSMALL PERCENT SIGNSMALL COMMER" + - "CIAL ATARABIC FATHATAN ISOLATED FORMARABIC TATWEEL WITH FATHATAN ABOVEAR" + - "ABIC DAMMATAN ISOLATED FORMARABIC TAIL FRAGMENTARABIC KASRATAN ISOLATED " + - "FORMARABIC FATHA ISOLATED FORMARABIC FATHA MEDIAL FORMARABIC DAMMA ISOLA" + - "TED FORMARABIC DAMMA MEDIAL FORMARABIC KASRA ISOLATED FORMARABIC KASRA M" + - "EDIAL FORMARABIC SHADDA ISOLATED FORMARABIC SHADDA MEDIAL FORMARABIC SUK" + - "UN ISOLATED FORMARABIC SUKUN MEDIAL FORMARABIC LETTER HAMZA ISOLATED FOR" + - "MARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORMARABIC LETTER ALEF WIT" + - "H MADDA ABOVE FINAL FORMARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FOR" + - "MARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORMARABIC LETTER WAW WITH HA" + - "MZA ABOVE ISOLATED FORMARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORMARAB" + - "IC LETTER ALEF WITH HAMZA BELOW ISOLATED FORMARABIC LETTER ALEF WITH HAM" + - "ZA BELOW FINAL FORMARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORMARABI" + - "C LETTER YEH WITH HAMZA ABOVE FINAL FORMARABIC LETTER YEH WITH HAMZA ABO" + - "VE INITIAL FORMARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORMARABIC LETT" + - "ER ALEF ISOLATED FORMARABIC LETTER ALEF FINAL FORMARABIC LETTER BEH ISOL" + - "ATED FORMARABIC LETTER BEH FINAL FORMARABIC LETTER BEH INITIAL FORMARABI" + - "C LETTER BEH MEDIAL FORMARABIC LETTER TEH MARBUTA ISOLATED FORMARABIC LE" + - "TTER TEH MARBUTA FINAL FORMARABIC LETTER TEH ISOLATED FORMARABIC LETTER " + - "TEH FINAL FORMARABIC LETTER TEH INITIAL FORMARABIC LETTER TEH MEDIAL FOR" + - "MARABIC LETTER THEH ISOLATED FORMARABIC LETTER THEH FINAL FORMARABIC LET" + - "TER THEH INITIAL FORMARABIC LETTER THEH MEDIAL FORMARABIC LETTER JEEM IS" + - "OLATED FORMARABIC LETTER JEEM FINAL FORMARABIC LETTER JEEM INITIAL FORMA" + - "RABIC LETTER JEEM MEDIAL FORMARABIC LETTER HAH ISOLATED FORMARABIC LETTE" + - "R HAH FINAL FORMARABIC LETTER HAH INITIAL FORMARABIC LETTER HAH MEDIAL F" + - "ORMARABIC LETTER KHAH ISOLATED FORMARABIC LETTER KHAH FINAL FORMARABIC L" + - "ETTER KHAH INITIAL FORMARABIC LETTER KHAH MEDIAL FORMARABIC LETTER DAL I" + - "SOLATED FORMARABIC LETTER DAL FINAL FORMARABIC LETTER THAL ISOLATED FORM" + - "ARABIC LETTER THAL FINAL FORMARABIC LETTER REH ISOLATED FORMARABIC LETTE" + - "R REH FINAL FORMARABIC LETTER ZAIN ISOLATED FORMARABIC LETTER ZAIN FINAL" + - " FORMARABIC LETTER SEEN ISOLATED FORMARABIC LETTER SEEN FINAL FORMARABIC" + - " LETTER SEEN INITIAL FORMARABIC LETTER SEEN MEDIAL FORMARABIC LETTER SHE" + - "EN ISOLATED FORMARABIC LETTER SHEEN FINAL FORMARABIC LETTER SHEEN INITIA" + - "L FORMARABIC LETTER SHEEN MEDIAL FORMARABIC LETTER SAD ISOLATED FORMARAB" + - "IC LETTER SAD FINAL FORMARABIC LETTER SAD INITIAL FORMARABIC LETTER SAD " + - "MEDIAL FORMARABIC LETTER DAD ISOLATED FORMARABIC LETTER DAD FINAL FORMAR" + - "ABIC LETTER DAD INITIAL FORMARABIC LETTER DAD MEDIAL FORMARABIC LETTER T" + - "AH ISOLATED FORMARABIC LETTER TAH FINAL FORMARABIC LETTER TAH INITIAL FO" + - "RMARABIC LETTER TAH MEDIAL FORMARABIC LETTER ZAH ISOLATED FORMARABIC LET" + - "TER ZAH FINAL FORMARABIC LETTER ZAH INITIAL FORMARABIC LETTER ZAH MEDIAL" + - " FORMARABIC LETTER AIN ISOLATED FORMARABIC LETTER AIN FINAL FORMARABIC L" + - "ETTER AIN INITIAL FORMARABIC LETTER AIN MEDIAL FORMARABIC LETTER GHAIN I" + - "SOLATED FORMARABIC LETTER GHAIN FINAL FORMARABIC LETTER GHAIN INITIAL FO" + - "RMARABIC LETTER GHAIN MEDIAL FORMARABIC LETTER FEH ISOLATED FORMARABIC L" + - "ETTER FEH FINAL FORMARABIC LETTER FEH INITIAL FORMARABIC LETTER FEH MEDI" + - "AL FORMARABIC LETTER QAF ISOLATED FORMARABIC LETTER QAF FINAL FORMARABIC" + - " LETTER QAF INITIAL FORMARABIC LETTER QAF MEDIAL FORMARABIC LETTER KAF I") + ("" + - "SOLATED FORMARABIC LETTER KAF FINAL FORMARABIC LETTER KAF INITIAL FORMAR" + - "ABIC LETTER KAF MEDIAL FORMARABIC LETTER LAM ISOLATED FORMARABIC LETTER " + - "LAM FINAL FORMARABIC LETTER LAM INITIAL FORMARABIC LETTER LAM MEDIAL FOR" + - "MARABIC LETTER MEEM ISOLATED FORMARABIC LETTER MEEM FINAL FORMARABIC LET" + - "TER MEEM INITIAL FORMARABIC LETTER MEEM MEDIAL FORMARABIC LETTER NOON IS" + - "OLATED FORMARABIC LETTER NOON FINAL FORMARABIC LETTER NOON INITIAL FORMA" + - "RABIC LETTER NOON MEDIAL FORMARABIC LETTER HEH ISOLATED FORMARABIC LETTE" + - "R HEH FINAL FORMARABIC LETTER HEH INITIAL FORMARABIC LETTER HEH MEDIAL F" + - "ORMARABIC LETTER WAW ISOLATED FORMARABIC LETTER WAW FINAL FORMARABIC LET" + - "TER ALEF MAKSURA ISOLATED FORMARABIC LETTER ALEF MAKSURA FINAL FORMARABI" + - "C LETTER YEH ISOLATED FORMARABIC LETTER YEH FINAL FORMARABIC LETTER YEH " + - "INITIAL FORMARABIC LETTER YEH MEDIAL FORMARABIC LIGATURE LAM WITH ALEF W" + - "ITH MADDA ABOVE ISOLATED FORMARABIC LIGATURE LAM WITH ALEF WITH MADDA AB" + - "OVE FINAL FORMARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FO" + - "RMARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORMARABIC LIGATU" + - "RE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORMARABIC LIGATURE LAM WITH " + - "ALEF WITH HAMZA BELOW FINAL FORMARABIC LIGATURE LAM WITH ALEF ISOLATED F" + - "ORMARABIC LIGATURE LAM WITH ALEF FINAL FORMZERO WIDTH NO-BREAK SPACEFULL" + - "WIDTH EXCLAMATION MARKFULLWIDTH QUOTATION MARKFULLWIDTH NUMBER SIGNFULLW" + - "IDTH DOLLAR SIGNFULLWIDTH PERCENT SIGNFULLWIDTH AMPERSANDFULLWIDTH APOST" + - "ROPHEFULLWIDTH LEFT PARENTHESISFULLWIDTH RIGHT PARENTHESISFULLWIDTH ASTE" + - "RISKFULLWIDTH PLUS SIGNFULLWIDTH COMMAFULLWIDTH HYPHEN-MINUSFULLWIDTH FU" + - "LL STOPFULLWIDTH SOLIDUSFULLWIDTH DIGIT ZEROFULLWIDTH DIGIT ONEFULLWIDTH" + - " DIGIT TWOFULLWIDTH DIGIT THREEFULLWIDTH DIGIT FOURFULLWIDTH DIGIT FIVEF" + - "ULLWIDTH DIGIT SIXFULLWIDTH DIGIT SEVENFULLWIDTH DIGIT EIGHTFULLWIDTH DI" + - "GIT NINEFULLWIDTH COLONFULLWIDTH SEMICOLONFULLWIDTH LESS-THAN SIGNFULLWI" + - "DTH EQUALS SIGNFULLWIDTH GREATER-THAN SIGNFULLWIDTH QUESTION MARKFULLWID" + - "TH COMMERCIAL ATFULLWIDTH LATIN CAPITAL LETTER AFULLWIDTH LATIN CAPITAL " + - "LETTER BFULLWIDTH LATIN CAPITAL LETTER CFULLWIDTH LATIN CAPITAL LETTER D" + - "FULLWIDTH LATIN CAPITAL LETTER EFULLWIDTH LATIN CAPITAL LETTER FFULLWIDT" + - "H LATIN CAPITAL LETTER GFULLWIDTH LATIN CAPITAL LETTER HFULLWIDTH LATIN " + - "CAPITAL LETTER IFULLWIDTH LATIN CAPITAL LETTER JFULLWIDTH LATIN CAPITAL " + - "LETTER KFULLWIDTH LATIN CAPITAL LETTER LFULLWIDTH LATIN CAPITAL LETTER M" + - "FULLWIDTH LATIN CAPITAL LETTER NFULLWIDTH LATIN CAPITAL LETTER OFULLWIDT" + - "H LATIN CAPITAL LETTER PFULLWIDTH LATIN CAPITAL LETTER QFULLWIDTH LATIN " + - "CAPITAL LETTER RFULLWIDTH LATIN CAPITAL LETTER SFULLWIDTH LATIN CAPITAL " + - "LETTER TFULLWIDTH LATIN CAPITAL LETTER UFULLWIDTH LATIN CAPITAL LETTER V" + - "FULLWIDTH LATIN CAPITAL LETTER WFULLWIDTH LATIN CAPITAL LETTER XFULLWIDT" + - "H LATIN CAPITAL LETTER YFULLWIDTH LATIN CAPITAL LETTER ZFULLWIDTH LEFT S" + - "QUARE BRACKETFULLWIDTH REVERSE SOLIDUSFULLWIDTH RIGHT SQUARE BRACKETFULL" + - "WIDTH CIRCUMFLEX ACCENTFULLWIDTH LOW LINEFULLWIDTH GRAVE ACCENTFULLWIDTH" + - " LATIN SMALL LETTER AFULLWIDTH LATIN SMALL LETTER BFULLWIDTH LATIN SMALL" + - " LETTER CFULLWIDTH LATIN SMALL LETTER DFULLWIDTH LATIN SMALL LETTER EFUL" + - "LWIDTH LATIN SMALL LETTER FFULLWIDTH LATIN SMALL LETTER GFULLWIDTH LATIN" + - " SMALL LETTER HFULLWIDTH LATIN SMALL LETTER IFULLWIDTH LATIN SMALL LETTE" + - "R JFULLWIDTH LATIN SMALL LETTER KFULLWIDTH LATIN SMALL LETTER LFULLWIDTH" + - " LATIN SMALL LETTER MFULLWIDTH LATIN SMALL LETTER NFULLWIDTH LATIN SMALL" + - " LETTER OFULLWIDTH LATIN SMALL LETTER PFULLWIDTH LATIN SMALL LETTER QFUL" + - "LWIDTH LATIN SMALL LETTER RFULLWIDTH LATIN SMALL LETTER SFULLWIDTH LATIN" + - " SMALL LETTER TFULLWIDTH LATIN SMALL LETTER UFULLWIDTH LATIN SMALL LETTE" + - "R VFULLWIDTH LATIN SMALL LETTER WFULLWIDTH LATIN SMALL LETTER XFULLWIDTH" + - " LATIN SMALL LETTER YFULLWIDTH LATIN SMALL LETTER ZFULLWIDTH LEFT CURLY " + - "BRACKETFULLWIDTH VERTICAL LINEFULLWIDTH RIGHT CURLY BRACKETFULLWIDTH TIL" + - "DEFULLWIDTH LEFT WHITE PARENTHESISFULLWIDTH RIGHT WHITE PARENTHESISHALFW" + - "IDTH IDEOGRAPHIC FULL STOPHALFWIDTH LEFT CORNER BRACKETHALFWIDTH RIGHT C" + - "ORNER BRACKETHALFWIDTH IDEOGRAPHIC COMMAHALFWIDTH KATAKANA MIDDLE DOTHAL" + - "FWIDTH KATAKANA LETTER WOHALFWIDTH KATAKANA LETTER SMALL AHALFWIDTH KATA" + - "KANA LETTER SMALL IHALFWIDTH KATAKANA LETTER SMALL UHALFWIDTH KATAKANA L" + - "ETTER SMALL EHALFWIDTH KATAKANA LETTER SMALL OHALFWIDTH KATAKANA LETTER " + - "SMALL YAHALFWIDTH KATAKANA LETTER SMALL YUHALFWIDTH KATAKANA LETTER SMAL" + - "L YOHALFWIDTH KATAKANA LETTER SMALL TUHALFWIDTH KATAKANA-HIRAGANA PROLON" + - "GED SOUND MARKHALFWIDTH KATAKANA LETTER AHALFWIDTH KATAKANA LETTER IHALF" + - "WIDTH KATAKANA LETTER UHALFWIDTH KATAKANA LETTER EHALFWIDTH KATAKANA LET" + - "TER OHALFWIDTH KATAKANA LETTER KAHALFWIDTH KATAKANA LETTER KIHALFWIDTH K") + ("" + - "ATAKANA LETTER KUHALFWIDTH KATAKANA LETTER KEHALFWIDTH KATAKANA LETTER K" + - "OHALFWIDTH KATAKANA LETTER SAHALFWIDTH KATAKANA LETTER SIHALFWIDTH KATAK" + - "ANA LETTER SUHALFWIDTH KATAKANA LETTER SEHALFWIDTH KATAKANA LETTER SOHAL" + - "FWIDTH KATAKANA LETTER TAHALFWIDTH KATAKANA LETTER TIHALFWIDTH KATAKANA " + - "LETTER TUHALFWIDTH KATAKANA LETTER TEHALFWIDTH KATAKANA LETTER TOHALFWID" + - "TH KATAKANA LETTER NAHALFWIDTH KATAKANA LETTER NIHALFWIDTH KATAKANA LETT" + - "ER NUHALFWIDTH KATAKANA LETTER NEHALFWIDTH KATAKANA LETTER NOHALFWIDTH K" + - "ATAKANA LETTER HAHALFWIDTH KATAKANA LETTER HIHALFWIDTH KATAKANA LETTER H" + - "UHALFWIDTH KATAKANA LETTER HEHALFWIDTH KATAKANA LETTER HOHALFWIDTH KATAK" + - "ANA LETTER MAHALFWIDTH KATAKANA LETTER MIHALFWIDTH KATAKANA LETTER MUHAL" + - "FWIDTH KATAKANA LETTER MEHALFWIDTH KATAKANA LETTER MOHALFWIDTH KATAKANA " + - "LETTER YAHALFWIDTH KATAKANA LETTER YUHALFWIDTH KATAKANA LETTER YOHALFWID" + - "TH KATAKANA LETTER RAHALFWIDTH KATAKANA LETTER RIHALFWIDTH KATAKANA LETT" + - "ER RUHALFWIDTH KATAKANA LETTER REHALFWIDTH KATAKANA LETTER ROHALFWIDTH K" + - "ATAKANA LETTER WAHALFWIDTH KATAKANA LETTER NHALFWIDTH KATAKANA VOICED SO" + - "UND MARKHALFWIDTH KATAKANA SEMI-VOICED SOUND MARKHALFWIDTH HANGUL FILLER" + - "HALFWIDTH HANGUL LETTER KIYEOKHALFWIDTH HANGUL LETTER SSANGKIYEOKHALFWID" + - "TH HANGUL LETTER KIYEOK-SIOSHALFWIDTH HANGUL LETTER NIEUNHALFWIDTH HANGU" + - "L LETTER NIEUN-CIEUCHALFWIDTH HANGUL LETTER NIEUN-HIEUHHALFWIDTH HANGUL " + - "LETTER TIKEUTHALFWIDTH HANGUL LETTER SSANGTIKEUTHALFWIDTH HANGUL LETTER " + - "RIEULHALFWIDTH HANGUL LETTER RIEUL-KIYEOKHALFWIDTH HANGUL LETTER RIEUL-M" + - "IEUMHALFWIDTH HANGUL LETTER RIEUL-PIEUPHALFWIDTH HANGUL LETTER RIEUL-SIO" + - "SHALFWIDTH HANGUL LETTER RIEUL-THIEUTHHALFWIDTH HANGUL LETTER RIEUL-PHIE" + - "UPHHALFWIDTH HANGUL LETTER RIEUL-HIEUHHALFWIDTH HANGUL LETTER MIEUMHALFW" + - "IDTH HANGUL LETTER PIEUPHALFWIDTH HANGUL LETTER SSANGPIEUPHALFWIDTH HANG" + - "UL LETTER PIEUP-SIOSHALFWIDTH HANGUL LETTER SIOSHALFWIDTH HANGUL LETTER " + - "SSANGSIOSHALFWIDTH HANGUL LETTER IEUNGHALFWIDTH HANGUL LETTER CIEUCHALFW" + - "IDTH HANGUL LETTER SSANGCIEUCHALFWIDTH HANGUL LETTER CHIEUCHHALFWIDTH HA" + - "NGUL LETTER KHIEUKHHALFWIDTH HANGUL LETTER THIEUTHHALFWIDTH HANGUL LETTE" + - "R PHIEUPHHALFWIDTH HANGUL LETTER HIEUHHALFWIDTH HANGUL LETTER AHALFWIDTH" + - " HANGUL LETTER AEHALFWIDTH HANGUL LETTER YAHALFWIDTH HANGUL LETTER YAEHA" + - "LFWIDTH HANGUL LETTER EOHALFWIDTH HANGUL LETTER EHALFWIDTH HANGUL LETTER" + - " YEOHALFWIDTH HANGUL LETTER YEHALFWIDTH HANGUL LETTER OHALFWIDTH HANGUL " + - "LETTER WAHALFWIDTH HANGUL LETTER WAEHALFWIDTH HANGUL LETTER OEHALFWIDTH " + - "HANGUL LETTER YOHALFWIDTH HANGUL LETTER UHALFWIDTH HANGUL LETTER WEOHALF" + - "WIDTH HANGUL LETTER WEHALFWIDTH HANGUL LETTER WIHALFWIDTH HANGUL LETTER " + - "YUHALFWIDTH HANGUL LETTER EUHALFWIDTH HANGUL LETTER YIHALFWIDTH HANGUL L" + - "ETTER IFULLWIDTH CENT SIGNFULLWIDTH POUND SIGNFULLWIDTH NOT SIGNFULLWIDT" + - "H MACRONFULLWIDTH BROKEN BARFULLWIDTH YEN SIGNFULLWIDTH WON SIGNHALFWIDT" + - "H FORMS LIGHT VERTICALHALFWIDTH LEFTWARDS ARROWHALFWIDTH UPWARDS ARROWHA" + - "LFWIDTH RIGHTWARDS ARROWHALFWIDTH DOWNWARDS ARROWHALFWIDTH BLACK SQUAREH" + - "ALFWIDTH WHITE CIRCLEINTERLINEAR ANNOTATION ANCHORINTERLINEAR ANNOTATION" + - " SEPARATORINTERLINEAR ANNOTATION TERMINATOROBJECT REPLACEMENT CHARACTERR" + - "EPLACEMENT CHARACTERLINEAR B SYLLABLE B008 ALINEAR B SYLLABLE B038 ELINE" + - "AR B SYLLABLE B028 ILINEAR B SYLLABLE B061 OLINEAR B SYLLABLE B010 ULINE" + - "AR B SYLLABLE B001 DALINEAR B SYLLABLE B045 DELINEAR B SYLLABLE B007 DIL" + - "INEAR B SYLLABLE B014 DOLINEAR B SYLLABLE B051 DULINEAR B SYLLABLE B057 " + - "JALINEAR B SYLLABLE B046 JELINEAR B SYLLABLE B036 JOLINEAR B SYLLABLE B0" + - "65 JULINEAR B SYLLABLE B077 KALINEAR B SYLLABLE B044 KELINEAR B SYLLABLE" + - " B067 KILINEAR B SYLLABLE B070 KOLINEAR B SYLLABLE B081 KULINEAR B SYLLA" + - "BLE B080 MALINEAR B SYLLABLE B013 MELINEAR B SYLLABLE B073 MILINEAR B SY" + - "LLABLE B015 MOLINEAR B SYLLABLE B023 MULINEAR B SYLLABLE B006 NALINEAR B" + - " SYLLABLE B024 NELINEAR B SYLLABLE B030 NILINEAR B SYLLABLE B052 NOLINEA" + - "R B SYLLABLE B055 NULINEAR B SYLLABLE B003 PALINEAR B SYLLABLE B072 PELI" + - "NEAR B SYLLABLE B039 PILINEAR B SYLLABLE B011 POLINEAR B SYLLABLE B050 P" + - "ULINEAR B SYLLABLE B016 QALINEAR B SYLLABLE B078 QELINEAR B SYLLABLE B02" + - "1 QILINEAR B SYLLABLE B032 QOLINEAR B SYLLABLE B060 RALINEAR B SYLLABLE " + - "B027 RELINEAR B SYLLABLE B053 RILINEAR B SYLLABLE B002 ROLINEAR B SYLLAB" + - "LE B026 RULINEAR B SYLLABLE B031 SALINEAR B SYLLABLE B009 SELINEAR B SYL" + - "LABLE B041 SILINEAR B SYLLABLE B012 SOLINEAR B SYLLABLE B058 SULINEAR B " + - "SYLLABLE B059 TALINEAR B SYLLABLE B004 TELINEAR B SYLLABLE B037 TILINEAR" + - " B SYLLABLE B005 TOLINEAR B SYLLABLE B069 TULINEAR B SYLLABLE B054 WALIN" + - "EAR B SYLLABLE B075 WELINEAR B SYLLABLE B040 WILINEAR B SYLLABLE B042 WO" + - "LINEAR B SYLLABLE B017 ZALINEAR B SYLLABLE B074 ZELINEAR B SYLLABLE B020") + ("" + - " ZOLINEAR B SYLLABLE B025 A2LINEAR B SYLLABLE B043 A3LINEAR B SYLLABLE B" + - "085 AULINEAR B SYLLABLE B071 DWELINEAR B SYLLABLE B090 DWOLINEAR B SYLLA" + - "BLE B048 NWALINEAR B SYLLABLE B029 PU2LINEAR B SYLLABLE B062 PTELINEAR B" + - " SYLLABLE B076 RA2LINEAR B SYLLABLE B033 RA3LINEAR B SYLLABLE B068 RO2LI" + - "NEAR B SYLLABLE B066 TA2LINEAR B SYLLABLE B087 TWELINEAR B SYLLABLE B091" + - " TWOLINEAR B SYMBOL B018LINEAR B SYMBOL B019LINEAR B SYMBOL B022LINEAR B" + - " SYMBOL B034LINEAR B SYMBOL B047LINEAR B SYMBOL B049LINEAR B SYMBOL B056" + - "LINEAR B SYMBOL B063LINEAR B SYMBOL B064LINEAR B SYMBOL B079LINEAR B SYM" + - "BOL B082LINEAR B SYMBOL B083LINEAR B SYMBOL B086LINEAR B SYMBOL B089LINE" + - "AR B IDEOGRAM B100 MANLINEAR B IDEOGRAM B102 WOMANLINEAR B IDEOGRAM B104" + - " DEERLINEAR B IDEOGRAM B105 EQUIDLINEAR B IDEOGRAM B105F MARELINEAR B ID" + - "EOGRAM B105M STALLIONLINEAR B IDEOGRAM B106F EWELINEAR B IDEOGRAM B106M " + - "RAMLINEAR B IDEOGRAM B107F SHE-GOATLINEAR B IDEOGRAM B107M HE-GOATLINEAR" + - " B IDEOGRAM B108F SOWLINEAR B IDEOGRAM B108M BOARLINEAR B IDEOGRAM B109F" + - " COWLINEAR B IDEOGRAM B109M BULLLINEAR B IDEOGRAM B120 WHEATLINEAR B IDE" + - "OGRAM B121 BARLEYLINEAR B IDEOGRAM B122 OLIVELINEAR B IDEOGRAM B123 SPIC" + - "ELINEAR B IDEOGRAM B125 CYPERUSLINEAR B MONOGRAM B127 KAPOLINEAR B MONOG" + - "RAM B128 KANAKOLINEAR B IDEOGRAM B130 OILLINEAR B IDEOGRAM B131 WINELINE" + - "AR B IDEOGRAM B132LINEAR B MONOGRAM B133 AREPALINEAR B MONOGRAM B135 MER" + - "ILINEAR B IDEOGRAM B140 BRONZELINEAR B IDEOGRAM B141 GOLDLINEAR B IDEOGR" + - "AM B142LINEAR B IDEOGRAM B145 WOOLLINEAR B IDEOGRAM B146LINEAR B IDEOGRA" + - "M B150LINEAR B IDEOGRAM B151 HORNLINEAR B IDEOGRAM B152LINEAR B IDEOGRAM" + - " B153LINEAR B IDEOGRAM B154LINEAR B MONOGRAM B156 TURO2LINEAR B IDEOGRAM" + - " B157LINEAR B IDEOGRAM B158LINEAR B IDEOGRAM B159 CLOTHLINEAR B IDEOGRAM" + - " B160LINEAR B IDEOGRAM B161LINEAR B IDEOGRAM B162 GARMENTLINEAR B IDEOGR" + - "AM B163 ARMOURLINEAR B IDEOGRAM B164LINEAR B IDEOGRAM B165LINEAR B IDEOG" + - "RAM B166LINEAR B IDEOGRAM B167LINEAR B IDEOGRAM B168LINEAR B IDEOGRAM B1" + - "69LINEAR B IDEOGRAM B170LINEAR B IDEOGRAM B171LINEAR B IDEOGRAM B172LINE" + - "AR B IDEOGRAM B173 MONTHLINEAR B IDEOGRAM B174LINEAR B IDEOGRAM B176 TRE" + - "ELINEAR B IDEOGRAM B177LINEAR B IDEOGRAM B178LINEAR B IDEOGRAM B179LINEA" + - "R B IDEOGRAM B180LINEAR B IDEOGRAM B181LINEAR B IDEOGRAM B182LINEAR B ID" + - "EOGRAM B183LINEAR B IDEOGRAM B184LINEAR B IDEOGRAM B185LINEAR B IDEOGRAM" + - " B189LINEAR B IDEOGRAM B190LINEAR B IDEOGRAM B191 HELMETLINEAR B IDEOGRA" + - "M B220 FOOTSTOOLLINEAR B IDEOGRAM B225 BATHTUBLINEAR B IDEOGRAM B230 SPE" + - "ARLINEAR B IDEOGRAM B231 ARROWLINEAR B IDEOGRAM B232LINEAR B IDEOGRAM B2" + - "33 SWORDLINEAR B IDEOGRAM B234LINEAR B IDEOGRAM B236LINEAR B IDEOGRAM B2" + - "40 WHEELED CHARIOTLINEAR B IDEOGRAM B241 CHARIOTLINEAR B IDEOGRAM B242 C" + - "HARIOT FRAMELINEAR B IDEOGRAM B243 WHEELLINEAR B IDEOGRAM B245LINEAR B I" + - "DEOGRAM B246LINEAR B MONOGRAM B247 DIPTELINEAR B IDEOGRAM B248LINEAR B I" + - "DEOGRAM B249LINEAR B IDEOGRAM B251LINEAR B IDEOGRAM B252LINEAR B IDEOGRA" + - "M B253LINEAR B IDEOGRAM B254 DARTLINEAR B IDEOGRAM B255LINEAR B IDEOGRAM" + - " B256LINEAR B IDEOGRAM B257LINEAR B IDEOGRAM B258LINEAR B IDEOGRAM B259L" + - "INEAR B IDEOGRAM VESSEL B155LINEAR B IDEOGRAM VESSEL B200LINEAR B IDEOGR" + - "AM VESSEL B201LINEAR B IDEOGRAM VESSEL B202LINEAR B IDEOGRAM VESSEL B203" + - "LINEAR B IDEOGRAM VESSEL B204LINEAR B IDEOGRAM VESSEL B205LINEAR B IDEOG" + - "RAM VESSEL B206LINEAR B IDEOGRAM VESSEL B207LINEAR B IDEOGRAM VESSEL B20" + - "8LINEAR B IDEOGRAM VESSEL B209LINEAR B IDEOGRAM VESSEL B210LINEAR B IDEO" + - "GRAM VESSEL B211LINEAR B IDEOGRAM VESSEL B212LINEAR B IDEOGRAM VESSEL B2" + - "13LINEAR B IDEOGRAM VESSEL B214LINEAR B IDEOGRAM VESSEL B215LINEAR B IDE" + - "OGRAM VESSEL B216LINEAR B IDEOGRAM VESSEL B217LINEAR B IDEOGRAM VESSEL B" + - "218LINEAR B IDEOGRAM VESSEL B219LINEAR B IDEOGRAM VESSEL B221LINEAR B ID" + - "EOGRAM VESSEL B222LINEAR B IDEOGRAM VESSEL B226LINEAR B IDEOGRAM VESSEL " + - "B227LINEAR B IDEOGRAM VESSEL B228LINEAR B IDEOGRAM VESSEL B229LINEAR B I" + - "DEOGRAM VESSEL B250LINEAR B IDEOGRAM VESSEL B305AEGEAN WORD SEPARATOR LI" + - "NEAEGEAN WORD SEPARATOR DOTAEGEAN CHECK MARKAEGEAN NUMBER ONEAEGEAN NUMB" + - "ER TWOAEGEAN NUMBER THREEAEGEAN NUMBER FOURAEGEAN NUMBER FIVEAEGEAN NUMB" + - "ER SIXAEGEAN NUMBER SEVENAEGEAN NUMBER EIGHTAEGEAN NUMBER NINEAEGEAN NUM" + - "BER TENAEGEAN NUMBER TWENTYAEGEAN NUMBER THIRTYAEGEAN NUMBER FORTYAEGEAN" + - " NUMBER FIFTYAEGEAN NUMBER SIXTYAEGEAN NUMBER SEVENTYAEGEAN NUMBER EIGHT" + - "YAEGEAN NUMBER NINETYAEGEAN NUMBER ONE HUNDREDAEGEAN NUMBER TWO HUNDREDA" + - "EGEAN NUMBER THREE HUNDREDAEGEAN NUMBER FOUR HUNDREDAEGEAN NUMBER FIVE H" + - "UNDREDAEGEAN NUMBER SIX HUNDREDAEGEAN NUMBER SEVEN HUNDREDAEGEAN NUMBER " + - "EIGHT HUNDREDAEGEAN NUMBER NINE HUNDREDAEGEAN NUMBER ONE THOUSANDAEGEAN " + - "NUMBER TWO THOUSANDAEGEAN NUMBER THREE THOUSANDAEGEAN NUMBER FOUR THOUSA") + ("" + - "NDAEGEAN NUMBER FIVE THOUSANDAEGEAN NUMBER SIX THOUSANDAEGEAN NUMBER SEV" + - "EN THOUSANDAEGEAN NUMBER EIGHT THOUSANDAEGEAN NUMBER NINE THOUSANDAEGEAN" + - " NUMBER TEN THOUSANDAEGEAN NUMBER TWENTY THOUSANDAEGEAN NUMBER THIRTY TH" + - "OUSANDAEGEAN NUMBER FORTY THOUSANDAEGEAN NUMBER FIFTY THOUSANDAEGEAN NUM" + - "BER SIXTY THOUSANDAEGEAN NUMBER SEVENTY THOUSANDAEGEAN NUMBER EIGHTY THO" + - "USANDAEGEAN NUMBER NINETY THOUSANDAEGEAN WEIGHT BASE UNITAEGEAN WEIGHT F" + - "IRST SUBUNITAEGEAN WEIGHT SECOND SUBUNITAEGEAN WEIGHT THIRD SUBUNITAEGEA" + - "N WEIGHT FOURTH SUBUNITAEGEAN DRY MEASURE FIRST SUBUNITAEGEAN LIQUID MEA" + - "SURE FIRST SUBUNITAEGEAN MEASURE SECOND SUBUNITAEGEAN MEASURE THIRD SUBU" + - "NITGREEK ACROPHONIC ATTIC ONE QUARTERGREEK ACROPHONIC ATTIC ONE HALFGREE" + - "K ACROPHONIC ATTIC ONE DRACHMAGREEK ACROPHONIC ATTIC FIVEGREEK ACROPHONI" + - "C ATTIC FIFTYGREEK ACROPHONIC ATTIC FIVE HUNDREDGREEK ACROPHONIC ATTIC F" + - "IVE THOUSANDGREEK ACROPHONIC ATTIC FIFTY THOUSANDGREEK ACROPHONIC ATTIC " + - "FIVE TALENTSGREEK ACROPHONIC ATTIC TEN TALENTSGREEK ACROPHONIC ATTIC FIF" + - "TY TALENTSGREEK ACROPHONIC ATTIC ONE HUNDRED TALENTSGREEK ACROPHONIC ATT" + - "IC FIVE HUNDRED TALENTSGREEK ACROPHONIC ATTIC ONE THOUSAND TALENTSGREEK " + - "ACROPHONIC ATTIC FIVE THOUSAND TALENTSGREEK ACROPHONIC ATTIC FIVE STATER" + - "SGREEK ACROPHONIC ATTIC TEN STATERSGREEK ACROPHONIC ATTIC FIFTY STATERSG" + - "REEK ACROPHONIC ATTIC ONE HUNDRED STATERSGREEK ACROPHONIC ATTIC FIVE HUN" + - "DRED STATERSGREEK ACROPHONIC ATTIC ONE THOUSAND STATERSGREEK ACROPHONIC " + - "ATTIC TEN THOUSAND STATERSGREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERSG" + - "REEK ACROPHONIC ATTIC TEN MNASGREEK ACROPHONIC HERAEUM ONE PLETHRONGREEK" + - " ACROPHONIC THESPIAN ONEGREEK ACROPHONIC HERMIONIAN ONEGREEK ACROPHONIC " + - "EPIDAUREAN TWOGREEK ACROPHONIC THESPIAN TWOGREEK ACROPHONIC CYRENAIC TWO" + - " DRACHMASGREEK ACROPHONIC EPIDAUREAN TWO DRACHMASGREEK ACROPHONIC TROEZE" + - "NIAN FIVEGREEK ACROPHONIC TROEZENIAN TENGREEK ACROPHONIC TROEZENIAN TEN " + - "ALTERNATE FORMGREEK ACROPHONIC HERMIONIAN TENGREEK ACROPHONIC MESSENIAN " + - "TENGREEK ACROPHONIC THESPIAN TENGREEK ACROPHONIC THESPIAN THIRTYGREEK AC" + - "ROPHONIC TROEZENIAN FIFTYGREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FOR" + - "MGREEK ACROPHONIC HERMIONIAN FIFTYGREEK ACROPHONIC THESPIAN FIFTYGREEK A" + - "CROPHONIC THESPIAN ONE HUNDREDGREEK ACROPHONIC THESPIAN THREE HUNDREDGRE" + - "EK ACROPHONIC EPIDAUREAN FIVE HUNDREDGREEK ACROPHONIC TROEZENIAN FIVE HU" + - "NDREDGREEK ACROPHONIC THESPIAN FIVE HUNDREDGREEK ACROPHONIC CARYSTIAN FI" + - "VE HUNDREDGREEK ACROPHONIC NAXIAN FIVE HUNDREDGREEK ACROPHONIC THESPIAN " + - "ONE THOUSANDGREEK ACROPHONIC THESPIAN FIVE THOUSANDGREEK ACROPHONIC DELP" + - "HIC FIVE MNASGREEK ACROPHONIC STRATIAN FIFTY MNASGREEK ONE HALF SIGNGREE" + - "K ONE HALF SIGN ALTERNATE FORMGREEK TWO THIRDS SIGNGREEK THREE QUARTERS " + - "SIGNGREEK YEAR SIGNGREEK TALENT SIGNGREEK DRACHMA SIGNGREEK OBOL SIGNGRE" + - "EK TWO OBOLS SIGNGREEK THREE OBOLS SIGNGREEK FOUR OBOLS SIGNGREEK FIVE O" + - "BOLS SIGNGREEK METRETES SIGNGREEK KYATHOS BASE SIGNGREEK LITRA SIGNGREEK" + - " OUNKIA SIGNGREEK XESTES SIGNGREEK ARTABE SIGNGREEK AROURA SIGNGREEK GRA" + - "MMA SIGNGREEK TRYBLION BASE SIGNGREEK ZERO SIGNGREEK ONE QUARTER SIGNGRE" + - "EK SINUSOID SIGNGREEK INDICTION SIGNNOMISMA SIGNROMAN SEXTANS SIGNROMAN " + - "UNCIA SIGNROMAN SEMUNCIA SIGNROMAN SEXTULA SIGNROMAN DIMIDIA SEXTULA SIG" + - "NROMAN SILIQUA SIGNROMAN DENARIUS SIGNROMAN QUINARIUS SIGNROMAN SESTERTI" + - "US SIGNROMAN DUPONDIUS SIGNROMAN AS SIGNROMAN CENTURIAL SIGNGREEK SYMBOL" + - " TAU RHOPHAISTOS DISC SIGN PEDESTRIANPHAISTOS DISC SIGN PLUMED HEADPHAIS" + - "TOS DISC SIGN TATTOOED HEADPHAISTOS DISC SIGN CAPTIVEPHAISTOS DISC SIGN " + - "CHILDPHAISTOS DISC SIGN WOMANPHAISTOS DISC SIGN HELMETPHAISTOS DISC SIGN" + - " GAUNTLETPHAISTOS DISC SIGN TIARAPHAISTOS DISC SIGN ARROWPHAISTOS DISC S" + - "IGN BOWPHAISTOS DISC SIGN SHIELDPHAISTOS DISC SIGN CLUBPHAISTOS DISC SIG" + - "N MANACLESPHAISTOS DISC SIGN MATTOCKPHAISTOS DISC SIGN SAWPHAISTOS DISC " + - "SIGN LIDPHAISTOS DISC SIGN BOOMERANGPHAISTOS DISC SIGN CARPENTRY PLANEPH" + - "AISTOS DISC SIGN DOLIUMPHAISTOS DISC SIGN COMBPHAISTOS DISC SIGN SLINGPH" + - "AISTOS DISC SIGN COLUMNPHAISTOS DISC SIGN BEEHIVEPHAISTOS DISC SIGN SHIP" + - "PHAISTOS DISC SIGN HORNPHAISTOS DISC SIGN HIDEPHAISTOS DISC SIGN BULLS L" + - "EGPHAISTOS DISC SIGN CATPHAISTOS DISC SIGN RAMPHAISTOS DISC SIGN EAGLEPH" + - "AISTOS DISC SIGN DOVEPHAISTOS DISC SIGN TUNNYPHAISTOS DISC SIGN BEEPHAIS" + - "TOS DISC SIGN PLANE TREEPHAISTOS DISC SIGN VINEPHAISTOS DISC SIGN PAPYRU" + - "SPHAISTOS DISC SIGN ROSETTEPHAISTOS DISC SIGN LILYPHAISTOS DISC SIGN OX " + - "BACKPHAISTOS DISC SIGN FLUTEPHAISTOS DISC SIGN GRATERPHAISTOS DISC SIGN " + - "STRAINERPHAISTOS DISC SIGN SMALL AXEPHAISTOS DISC SIGN WAVY BANDPHAISTOS" + - " DISC SIGN COMBINING OBLIQUE STROKELYCIAN LETTER ALYCIAN LETTER ELYCIAN " + - "LETTER BLYCIAN LETTER BHLYCIAN LETTER GLYCIAN LETTER DLYCIAN LETTER ILYC") + ("" + - "IAN LETTER WLYCIAN LETTER ZLYCIAN LETTER THLYCIAN LETTER JLYCIAN LETTER " + - "KLYCIAN LETTER QLYCIAN LETTER LLYCIAN LETTER MLYCIAN LETTER NLYCIAN LETT" + - "ER MMLYCIAN LETTER NNLYCIAN LETTER ULYCIAN LETTER PLYCIAN LETTER KKLYCIA" + - "N LETTER RLYCIAN LETTER SLYCIAN LETTER TLYCIAN LETTER TTLYCIAN LETTER AN" + - "LYCIAN LETTER ENLYCIAN LETTER HLYCIAN LETTER XCARIAN LETTER ACARIAN LETT" + - "ER P2CARIAN LETTER DCARIAN LETTER LCARIAN LETTER UUUCARIAN LETTER RCARIA" + - "N LETTER LDCARIAN LETTER A2CARIAN LETTER QCARIAN LETTER BCARIAN LETTER M" + - "CARIAN LETTER OCARIAN LETTER D2CARIAN LETTER TCARIAN LETTER SHCARIAN LET" + - "TER SH2CARIAN LETTER SCARIAN LETTER C-18CARIAN LETTER UCARIAN LETTER NNC" + - "ARIAN LETTER XCARIAN LETTER NCARIAN LETTER TT2CARIAN LETTER PCARIAN LETT" + - "ER SSCARIAN LETTER ICARIAN LETTER ECARIAN LETTER UUUUCARIAN LETTER KCARI" + - "AN LETTER K2CARIAN LETTER NDCARIAN LETTER UUCARIAN LETTER GCARIAN LETTER" + - " G2CARIAN LETTER STCARIAN LETTER ST2CARIAN LETTER NGCARIAN LETTER IICARI" + - "AN LETTER C-39CARIAN LETTER TTCARIAN LETTER UUU2CARIAN LETTER RRCARIAN L" + - "ETTER MBCARIAN LETTER MB2CARIAN LETTER MB3CARIAN LETTER MB4CARIAN LETTER" + - " LD2CARIAN LETTER E2CARIAN LETTER UUU3COPTIC EPACT THOUSANDS MARKCOPTIC " + - "EPACT DIGIT ONECOPTIC EPACT DIGIT TWOCOPTIC EPACT DIGIT THREECOPTIC EPAC" + - "T DIGIT FOURCOPTIC EPACT DIGIT FIVECOPTIC EPACT DIGIT SIXCOPTIC EPACT DI" + - "GIT SEVENCOPTIC EPACT DIGIT EIGHTCOPTIC EPACT DIGIT NINECOPTIC EPACT NUM" + - "BER TENCOPTIC EPACT NUMBER TWENTYCOPTIC EPACT NUMBER THIRTYCOPTIC EPACT " + - "NUMBER FORTYCOPTIC EPACT NUMBER FIFTYCOPTIC EPACT NUMBER SIXTYCOPTIC EPA" + - "CT NUMBER SEVENTYCOPTIC EPACT NUMBER EIGHTYCOPTIC EPACT NUMBER NINETYCOP" + - "TIC EPACT NUMBER ONE HUNDREDCOPTIC EPACT NUMBER TWO HUNDREDCOPTIC EPACT " + - "NUMBER THREE HUNDREDCOPTIC EPACT NUMBER FOUR HUNDREDCOPTIC EPACT NUMBER " + - "FIVE HUNDREDCOPTIC EPACT NUMBER SIX HUNDREDCOPTIC EPACT NUMBER SEVEN HUN" + - "DREDCOPTIC EPACT NUMBER EIGHT HUNDREDCOPTIC EPACT NUMBER NINE HUNDREDOLD" + - " ITALIC LETTER AOLD ITALIC LETTER BEOLD ITALIC LETTER KEOLD ITALIC LETTE" + - "R DEOLD ITALIC LETTER EOLD ITALIC LETTER VEOLD ITALIC LETTER ZEOLD ITALI" + - "C LETTER HEOLD ITALIC LETTER THEOLD ITALIC LETTER IOLD ITALIC LETTER KAO" + - "LD ITALIC LETTER ELOLD ITALIC LETTER EMOLD ITALIC LETTER ENOLD ITALIC LE" + - "TTER ESHOLD ITALIC LETTER OOLD ITALIC LETTER PEOLD ITALIC LETTER SHEOLD " + - "ITALIC LETTER KUOLD ITALIC LETTER EROLD ITALIC LETTER ESOLD ITALIC LETTE" + - "R TEOLD ITALIC LETTER UOLD ITALIC LETTER EKSOLD ITALIC LETTER PHEOLD ITA" + - "LIC LETTER KHEOLD ITALIC LETTER EFOLD ITALIC LETTER ERSOLD ITALIC LETTER" + - " CHEOLD ITALIC LETTER IIOLD ITALIC LETTER UUOLD ITALIC LETTER ESSOLD ITA" + - "LIC NUMERAL ONEOLD ITALIC NUMERAL FIVEOLD ITALIC NUMERAL TENOLD ITALIC N" + - "UMERAL FIFTYGOTHIC LETTER AHSAGOTHIC LETTER BAIRKANGOTHIC LETTER GIBAGOT" + - "HIC LETTER DAGSGOTHIC LETTER AIHVUSGOTHIC LETTER QAIRTHRAGOTHIC LETTER I" + - "UJAGOTHIC LETTER HAGLGOTHIC LETTER THIUTHGOTHIC LETTER EISGOTHIC LETTER " + - "KUSMAGOTHIC LETTER LAGUSGOTHIC LETTER MANNAGOTHIC LETTER NAUTHSGOTHIC LE" + - "TTER JERGOTHIC LETTER URUSGOTHIC LETTER PAIRTHRAGOTHIC LETTER NINETYGOTH" + - "IC LETTER RAIDAGOTHIC LETTER SAUILGOTHIC LETTER TEIWSGOTHIC LETTER WINJA" + - "GOTHIC LETTER FAIHUGOTHIC LETTER IGGWSGOTHIC LETTER HWAIRGOTHIC LETTER O" + - "THALGOTHIC LETTER NINE HUNDREDOLD PERMIC LETTER ANOLD PERMIC LETTER BURO" + - "LD PERMIC LETTER GAIOLD PERMIC LETTER DOIOLD PERMIC LETTER EOLD PERMIC L" + - "ETTER ZHOIOLD PERMIC LETTER DZHOIOLD PERMIC LETTER ZATAOLD PERMIC LETTER" + - " DZITAOLD PERMIC LETTER IOLD PERMIC LETTER KOKEOLD PERMIC LETTER LEIOLD " + - "PERMIC LETTER MENOEOLD PERMIC LETTER NENOEOLD PERMIC LETTER VOOIOLD PERM" + - "IC LETTER PEEIOLD PERMIC LETTER REIOLD PERMIC LETTER SIIOLD PERMIC LETTE" + - "R TAIOLD PERMIC LETTER UOLD PERMIC LETTER CHERYOLD PERMIC LETTER SHOOIOL" + - "D PERMIC LETTER SHCHOOIOLD PERMIC LETTER YRYOLD PERMIC LETTER YERUOLD PE" + - "RMIC LETTER OOLD PERMIC LETTER OOOLD PERMIC LETTER EFOLD PERMIC LETTER H" + - "AOLD PERMIC LETTER TSIUOLD PERMIC LETTER VEROLD PERMIC LETTER YEROLD PER" + - "MIC LETTER YERIOLD PERMIC LETTER YATOLD PERMIC LETTER IEOLD PERMIC LETTE" + - "R YUOLD PERMIC LETTER YAOLD PERMIC LETTER IACOMBINING OLD PERMIC LETTER " + - "ANCOMBINING OLD PERMIC LETTER DOICOMBINING OLD PERMIC LETTER ZATACOMBINI" + - "NG OLD PERMIC LETTER NENOECOMBINING OLD PERMIC LETTER SIIUGARITIC LETTER" + - " ALPAUGARITIC LETTER BETAUGARITIC LETTER GAMLAUGARITIC LETTER KHAUGARITI" + - "C LETTER DELTAUGARITIC LETTER HOUGARITIC LETTER WOUGARITIC LETTER ZETAUG" + - "ARITIC LETTER HOTAUGARITIC LETTER TETUGARITIC LETTER YODUGARITIC LETTER " + - "KAFUGARITIC LETTER SHINUGARITIC LETTER LAMDAUGARITIC LETTER MEMUGARITIC " + - "LETTER DHALUGARITIC LETTER NUNUGARITIC LETTER ZUUGARITIC LETTER SAMKAUGA" + - "RITIC LETTER AINUGARITIC LETTER PUUGARITIC LETTER SADEUGARITIC LETTER QO" + - "PAUGARITIC LETTER RASHAUGARITIC LETTER THANNAUGARITIC LETTER GHAINUGARIT") + ("" + - "IC LETTER TOUGARITIC LETTER IUGARITIC LETTER UUGARITIC LETTER SSUUGARITI" + - "C WORD DIVIDEROLD PERSIAN SIGN AOLD PERSIAN SIGN IOLD PERSIAN SIGN UOLD " + - "PERSIAN SIGN KAOLD PERSIAN SIGN KUOLD PERSIAN SIGN GAOLD PERSIAN SIGN GU" + - "OLD PERSIAN SIGN XAOLD PERSIAN SIGN CAOLD PERSIAN SIGN JAOLD PERSIAN SIG" + - "N JIOLD PERSIAN SIGN TAOLD PERSIAN SIGN TUOLD PERSIAN SIGN DAOLD PERSIAN" + - " SIGN DIOLD PERSIAN SIGN DUOLD PERSIAN SIGN THAOLD PERSIAN SIGN PAOLD PE" + - "RSIAN SIGN BAOLD PERSIAN SIGN FAOLD PERSIAN SIGN NAOLD PERSIAN SIGN NUOL" + - "D PERSIAN SIGN MAOLD PERSIAN SIGN MIOLD PERSIAN SIGN MUOLD PERSIAN SIGN " + - "YAOLD PERSIAN SIGN VAOLD PERSIAN SIGN VIOLD PERSIAN SIGN RAOLD PERSIAN S" + - "IGN RUOLD PERSIAN SIGN LAOLD PERSIAN SIGN SAOLD PERSIAN SIGN ZAOLD PERSI" + - "AN SIGN SHAOLD PERSIAN SIGN SSAOLD PERSIAN SIGN HAOLD PERSIAN SIGN AURAM" + - "AZDAAOLD PERSIAN SIGN AURAMAZDAA-2OLD PERSIAN SIGN AURAMAZDAAHAOLD PERSI" + - "AN SIGN XSHAAYATHIYAOLD PERSIAN SIGN DAHYAAUSHOLD PERSIAN SIGN DAHYAAUSH" + - "-2OLD PERSIAN SIGN BAGAOLD PERSIAN SIGN BUUMISHOLD PERSIAN WORD DIVIDERO" + - "LD PERSIAN NUMBER ONEOLD PERSIAN NUMBER TWOOLD PERSIAN NUMBER TENOLD PER" + - "SIAN NUMBER TWENTYOLD PERSIAN NUMBER HUNDREDDESERET CAPITAL LETTER LONG " + - "IDESERET CAPITAL LETTER LONG EDESERET CAPITAL LETTER LONG ADESERET CAPIT" + - "AL LETTER LONG AHDESERET CAPITAL LETTER LONG ODESERET CAPITAL LETTER LON" + - "G OODESERET CAPITAL LETTER SHORT IDESERET CAPITAL LETTER SHORT EDESERET " + - "CAPITAL LETTER SHORT ADESERET CAPITAL LETTER SHORT AHDESERET CAPITAL LET" + - "TER SHORT ODESERET CAPITAL LETTER SHORT OODESERET CAPITAL LETTER AYDESER" + - "ET CAPITAL LETTER OWDESERET CAPITAL LETTER WUDESERET CAPITAL LETTER YEED" + - "ESERET CAPITAL LETTER HDESERET CAPITAL LETTER PEEDESERET CAPITAL LETTER " + - "BEEDESERET CAPITAL LETTER TEEDESERET CAPITAL LETTER DEEDESERET CAPITAL L" + - "ETTER CHEEDESERET CAPITAL LETTER JEEDESERET CAPITAL LETTER KAYDESERET CA" + - "PITAL LETTER GAYDESERET CAPITAL LETTER EFDESERET CAPITAL LETTER VEEDESER" + - "ET CAPITAL LETTER ETHDESERET CAPITAL LETTER THEEDESERET CAPITAL LETTER E" + - "SDESERET CAPITAL LETTER ZEEDESERET CAPITAL LETTER ESHDESERET CAPITAL LET" + - "TER ZHEEDESERET CAPITAL LETTER ERDESERET CAPITAL LETTER ELDESERET CAPITA" + - "L LETTER EMDESERET CAPITAL LETTER ENDESERET CAPITAL LETTER ENGDESERET CA" + - "PITAL LETTER OIDESERET CAPITAL LETTER EWDESERET SMALL LETTER LONG IDESER" + - "ET SMALL LETTER LONG EDESERET SMALL LETTER LONG ADESERET SMALL LETTER LO" + - "NG AHDESERET SMALL LETTER LONG ODESERET SMALL LETTER LONG OODESERET SMAL" + - "L LETTER SHORT IDESERET SMALL LETTER SHORT EDESERET SMALL LETTER SHORT A" + - "DESERET SMALL LETTER SHORT AHDESERET SMALL LETTER SHORT ODESERET SMALL L" + - "ETTER SHORT OODESERET SMALL LETTER AYDESERET SMALL LETTER OWDESERET SMAL" + - "L LETTER WUDESERET SMALL LETTER YEEDESERET SMALL LETTER HDESERET SMALL L" + - "ETTER PEEDESERET SMALL LETTER BEEDESERET SMALL LETTER TEEDESERET SMALL L" + - "ETTER DEEDESERET SMALL LETTER CHEEDESERET SMALL LETTER JEEDESERET SMALL " + - "LETTER KAYDESERET SMALL LETTER GAYDESERET SMALL LETTER EFDESERET SMALL L" + - "ETTER VEEDESERET SMALL LETTER ETHDESERET SMALL LETTER THEEDESERET SMALL " + - "LETTER ESDESERET SMALL LETTER ZEEDESERET SMALL LETTER ESHDESERET SMALL L" + - "ETTER ZHEEDESERET SMALL LETTER ERDESERET SMALL LETTER ELDESERET SMALL LE" + - "TTER EMDESERET SMALL LETTER ENDESERET SMALL LETTER ENGDESERET SMALL LETT" + - "ER OIDESERET SMALL LETTER EWSHAVIAN LETTER PEEPSHAVIAN LETTER TOTSHAVIAN" + - " LETTER KICKSHAVIAN LETTER FEESHAVIAN LETTER THIGHSHAVIAN LETTER SOSHAVI" + - "AN LETTER SURESHAVIAN LETTER CHURCHSHAVIAN LETTER YEASHAVIAN LETTER HUNG" + - "SHAVIAN LETTER BIBSHAVIAN LETTER DEADSHAVIAN LETTER GAGSHAVIAN LETTER VO" + - "WSHAVIAN LETTER THEYSHAVIAN LETTER ZOOSHAVIAN LETTER MEASURESHAVIAN LETT" + - "ER JUDGESHAVIAN LETTER WOESHAVIAN LETTER HA-HASHAVIAN LETTER LOLLSHAVIAN" + - " LETTER MIMESHAVIAN LETTER IFSHAVIAN LETTER EGGSHAVIAN LETTER ASHSHAVIAN" + - " LETTER ADOSHAVIAN LETTER ONSHAVIAN LETTER WOOLSHAVIAN LETTER OUTSHAVIAN" + - " LETTER AHSHAVIAN LETTER ROARSHAVIAN LETTER NUNSHAVIAN LETTER EATSHAVIAN" + - " LETTER AGESHAVIAN LETTER ICESHAVIAN LETTER UPSHAVIAN LETTER OAKSHAVIAN " + - "LETTER OOZESHAVIAN LETTER OILSHAVIAN LETTER AWESHAVIAN LETTER ARESHAVIAN" + - " LETTER ORSHAVIAN LETTER AIRSHAVIAN LETTER ERRSHAVIAN LETTER ARRAYSHAVIA" + - "N LETTER EARSHAVIAN LETTER IANSHAVIAN LETTER YEWOSMANYA LETTER ALEFOSMAN" + - "YA LETTER BAOSMANYA LETTER TAOSMANYA LETTER JAOSMANYA LETTER XAOSMANYA L" + - "ETTER KHAOSMANYA LETTER DEELOSMANYA LETTER RAOSMANYA LETTER SAOSMANYA LE" + - "TTER SHIINOSMANYA LETTER DHAOSMANYA LETTER CAYNOSMANYA LETTER GAOSMANYA " + - "LETTER FAOSMANYA LETTER QAAFOSMANYA LETTER KAAFOSMANYA LETTER LAANOSMANY" + - "A LETTER MIINOSMANYA LETTER NUUNOSMANYA LETTER WAWOSMANYA LETTER HAOSMAN" + - "YA LETTER YAOSMANYA LETTER AOSMANYA LETTER EOSMANYA LETTER IOSMANYA LETT" + - "ER OOSMANYA LETTER UOSMANYA LETTER AAOSMANYA LETTER EEOSMANYA LETTER OOO") + ("" + - "SMANYA DIGIT ZEROOSMANYA DIGIT ONEOSMANYA DIGIT TWOOSMANYA DIGIT THREEOS" + - "MANYA DIGIT FOUROSMANYA DIGIT FIVEOSMANYA DIGIT SIXOSMANYA DIGIT SEVENOS" + - "MANYA DIGIT EIGHTOSMANYA DIGIT NINEOSAGE CAPITAL LETTER AOSAGE CAPITAL L" + - "ETTER AIOSAGE CAPITAL LETTER AINOSAGE CAPITAL LETTER AHOSAGE CAPITAL LET" + - "TER BRAOSAGE CAPITAL LETTER CHAOSAGE CAPITAL LETTER EHCHAOSAGE CAPITAL L" + - "ETTER EOSAGE CAPITAL LETTER EINOSAGE CAPITAL LETTER HAOSAGE CAPITAL LETT" + - "ER HYAOSAGE CAPITAL LETTER IOSAGE CAPITAL LETTER KAOSAGE CAPITAL LETTER " + - "EHKAOSAGE CAPITAL LETTER KYAOSAGE CAPITAL LETTER LAOSAGE CAPITAL LETTER " + - "MAOSAGE CAPITAL LETTER NAOSAGE CAPITAL LETTER OOSAGE CAPITAL LETTER OINO" + - "SAGE CAPITAL LETTER PAOSAGE CAPITAL LETTER EHPAOSAGE CAPITAL LETTER SAOS" + - "AGE CAPITAL LETTER SHAOSAGE CAPITAL LETTER TAOSAGE CAPITAL LETTER EHTAOS" + - "AGE CAPITAL LETTER TSAOSAGE CAPITAL LETTER EHTSAOSAGE CAPITAL LETTER TSH" + - "AOSAGE CAPITAL LETTER DHAOSAGE CAPITAL LETTER UOSAGE CAPITAL LETTER WAOS" + - "AGE CAPITAL LETTER KHAOSAGE CAPITAL LETTER GHAOSAGE CAPITAL LETTER ZAOSA" + - "GE CAPITAL LETTER ZHAOSAGE SMALL LETTER AOSAGE SMALL LETTER AIOSAGE SMAL" + - "L LETTER AINOSAGE SMALL LETTER AHOSAGE SMALL LETTER BRAOSAGE SMALL LETTE" + - "R CHAOSAGE SMALL LETTER EHCHAOSAGE SMALL LETTER EOSAGE SMALL LETTER EINO" + - "SAGE SMALL LETTER HAOSAGE SMALL LETTER HYAOSAGE SMALL LETTER IOSAGE SMAL" + - "L LETTER KAOSAGE SMALL LETTER EHKAOSAGE SMALL LETTER KYAOSAGE SMALL LETT" + - "ER LAOSAGE SMALL LETTER MAOSAGE SMALL LETTER NAOSAGE SMALL LETTER OOSAGE" + - " SMALL LETTER OINOSAGE SMALL LETTER PAOSAGE SMALL LETTER EHPAOSAGE SMALL" + - " LETTER SAOSAGE SMALL LETTER SHAOSAGE SMALL LETTER TAOSAGE SMALL LETTER " + - "EHTAOSAGE SMALL LETTER TSAOSAGE SMALL LETTER EHTSAOSAGE SMALL LETTER TSH" + - "AOSAGE SMALL LETTER DHAOSAGE SMALL LETTER UOSAGE SMALL LETTER WAOSAGE SM" + - "ALL LETTER KHAOSAGE SMALL LETTER GHAOSAGE SMALL LETTER ZAOSAGE SMALL LET" + - "TER ZHAELBASAN LETTER AELBASAN LETTER BEELBASAN LETTER CEELBASAN LETTER " + - "CHEELBASAN LETTER DEELBASAN LETTER NDEELBASAN LETTER DHEELBASAN LETTER E" + - "IELBASAN LETTER EELBASAN LETTER FEELBASAN LETTER GEELBASAN LETTER GJEELB" + - "ASAN LETTER HEELBASAN LETTER IELBASAN LETTER JEELBASAN LETTER KEELBASAN " + - "LETTER LEELBASAN LETTER LLEELBASAN LETTER MEELBASAN LETTER NEELBASAN LET" + - "TER NAELBASAN LETTER NJEELBASAN LETTER OELBASAN LETTER PEELBASAN LETTER " + - "QEELBASAN LETTER REELBASAN LETTER RREELBASAN LETTER SEELBASAN LETTER SHE" + - "ELBASAN LETTER TEELBASAN LETTER THEELBASAN LETTER UELBASAN LETTER VEELBA" + - "SAN LETTER XEELBASAN LETTER YELBASAN LETTER ZEELBASAN LETTER ZHEELBASAN " + - "LETTER GHEELBASAN LETTER GHAMMAELBASAN LETTER KHECAUCASIAN ALBANIAN LETT" + - "ER ALTCAUCASIAN ALBANIAN LETTER BETCAUCASIAN ALBANIAN LETTER GIMCAUCASIA" + - "N ALBANIAN LETTER DATCAUCASIAN ALBANIAN LETTER EBCAUCASIAN ALBANIAN LETT" + - "ER ZARLCAUCASIAN ALBANIAN LETTER EYNCAUCASIAN ALBANIAN LETTER ZHILCAUCAS" + - "IAN ALBANIAN LETTER TASCAUCASIAN ALBANIAN LETTER CHACAUCASIAN ALBANIAN L" + - "ETTER YOWDCAUCASIAN ALBANIAN LETTER ZHACAUCASIAN ALBANIAN LETTER IRBCAUC" + - "ASIAN ALBANIAN LETTER SHACAUCASIAN ALBANIAN LETTER LANCAUCASIAN ALBANIAN" + - " LETTER INYACAUCASIAN ALBANIAN LETTER XEYNCAUCASIAN ALBANIAN LETTER DYAN" + - "CAUCASIAN ALBANIAN LETTER CARCAUCASIAN ALBANIAN LETTER JHOXCAUCASIAN ALB" + - "ANIAN LETTER KARCAUCASIAN ALBANIAN LETTER LYITCAUCASIAN ALBANIAN LETTER " + - "HEYTCAUCASIAN ALBANIAN LETTER QAYCAUCASIAN ALBANIAN LETTER AORCAUCASIAN " + - "ALBANIAN LETTER CHOYCAUCASIAN ALBANIAN LETTER CHICAUCASIAN ALBANIAN LETT" + - "ER CYAYCAUCASIAN ALBANIAN LETTER MAQCAUCASIAN ALBANIAN LETTER QARCAUCASI" + - "AN ALBANIAN LETTER NOWCCAUCASIAN ALBANIAN LETTER DZYAYCAUCASIAN ALBANIAN" + - " LETTER SHAKCAUCASIAN ALBANIAN LETTER JAYNCAUCASIAN ALBANIAN LETTER ONCA" + - "UCASIAN ALBANIAN LETTER TYAYCAUCASIAN ALBANIAN LETTER FAMCAUCASIAN ALBAN" + - "IAN LETTER DZAYCAUCASIAN ALBANIAN LETTER CHATCAUCASIAN ALBANIAN LETTER P" + - "ENCAUCASIAN ALBANIAN LETTER GHEYSCAUCASIAN ALBANIAN LETTER RATCAUCASIAN " + - "ALBANIAN LETTER SEYKCAUCASIAN ALBANIAN LETTER VEYZCAUCASIAN ALBANIAN LET" + - "TER TIWRCAUCASIAN ALBANIAN LETTER SHOYCAUCASIAN ALBANIAN LETTER IWNCAUCA" + - "SIAN ALBANIAN LETTER CYAWCAUCASIAN ALBANIAN LETTER CAYNCAUCASIAN ALBANIA" + - "N LETTER YAYDCAUCASIAN ALBANIAN LETTER PIWRCAUCASIAN ALBANIAN LETTER KIW" + - "CAUCASIAN ALBANIAN CITATION MARKLINEAR A SIGN AB001LINEAR A SIGN AB002LI" + - "NEAR A SIGN AB003LINEAR A SIGN AB004LINEAR A SIGN AB005LINEAR A SIGN AB0" + - "06LINEAR A SIGN AB007LINEAR A SIGN AB008LINEAR A SIGN AB009LINEAR A SIGN" + - " AB010LINEAR A SIGN AB011LINEAR A SIGN AB013LINEAR A SIGN AB016LINEAR A " + - "SIGN AB017LINEAR A SIGN AB020LINEAR A SIGN AB021LINEAR A SIGN AB021FLINE" + - "AR A SIGN AB021MLINEAR A SIGN AB022LINEAR A SIGN AB022FLINEAR A SIGN AB0" + - "22MLINEAR A SIGN AB023LINEAR A SIGN AB023MLINEAR A SIGN AB024LINEAR A SI" + - "GN AB026LINEAR A SIGN AB027LINEAR A SIGN AB028LINEAR A SIGN A028BLINEAR ") + ("" + - "A SIGN AB029LINEAR A SIGN AB030LINEAR A SIGN AB031LINEAR A SIGN AB034LIN" + - "EAR A SIGN AB037LINEAR A SIGN AB038LINEAR A SIGN AB039LINEAR A SIGN AB04" + - "0LINEAR A SIGN AB041LINEAR A SIGN AB044LINEAR A SIGN AB045LINEAR A SIGN " + - "AB046LINEAR A SIGN AB047LINEAR A SIGN AB048LINEAR A SIGN AB049LINEAR A S" + - "IGN AB050LINEAR A SIGN AB051LINEAR A SIGN AB053LINEAR A SIGN AB054LINEAR" + - " A SIGN AB055LINEAR A SIGN AB056LINEAR A SIGN AB057LINEAR A SIGN AB058LI" + - "NEAR A SIGN AB059LINEAR A SIGN AB060LINEAR A SIGN AB061LINEAR A SIGN AB0" + - "65LINEAR A SIGN AB066LINEAR A SIGN AB067LINEAR A SIGN AB069LINEAR A SIGN" + - " AB070LINEAR A SIGN AB073LINEAR A SIGN AB074LINEAR A SIGN AB076LINEAR A " + - "SIGN AB077LINEAR A SIGN AB078LINEAR A SIGN AB079LINEAR A SIGN AB080LINEA" + - "R A SIGN AB081LINEAR A SIGN AB082LINEAR A SIGN AB085LINEAR A SIGN AB086L" + - "INEAR A SIGN AB087LINEAR A SIGN A100-102LINEAR A SIGN AB118LINEAR A SIGN" + - " AB120LINEAR A SIGN A120BLINEAR A SIGN AB122LINEAR A SIGN AB123LINEAR A " + - "SIGN AB131ALINEAR A SIGN AB131BLINEAR A SIGN A131CLINEAR A SIGN AB164LIN" + - "EAR A SIGN AB171LINEAR A SIGN AB180LINEAR A SIGN AB188LINEAR A SIGN AB19" + - "1LINEAR A SIGN A301LINEAR A SIGN A302LINEAR A SIGN A303LINEAR A SIGN A30" + - "4LINEAR A SIGN A305LINEAR A SIGN A306LINEAR A SIGN A307LINEAR A SIGN A30" + - "8LINEAR A SIGN A309ALINEAR A SIGN A309BLINEAR A SIGN A309CLINEAR A SIGN " + - "A310LINEAR A SIGN A311LINEAR A SIGN A312LINEAR A SIGN A313ALINEAR A SIGN" + - " A313BLINEAR A SIGN A313CLINEAR A SIGN A314LINEAR A SIGN A315LINEAR A SI" + - "GN A316LINEAR A SIGN A317LINEAR A SIGN A318LINEAR A SIGN A319LINEAR A SI" + - "GN A320LINEAR A SIGN A321LINEAR A SIGN A322LINEAR A SIGN A323LINEAR A SI" + - "GN A324LINEAR A SIGN A325LINEAR A SIGN A326LINEAR A SIGN A327LINEAR A SI" + - "GN A328LINEAR A SIGN A329LINEAR A SIGN A330LINEAR A SIGN A331LINEAR A SI" + - "GN A332LINEAR A SIGN A333LINEAR A SIGN A334LINEAR A SIGN A335LINEAR A SI" + - "GN A336LINEAR A SIGN A337LINEAR A SIGN A338LINEAR A SIGN A339LINEAR A SI" + - "GN A340LINEAR A SIGN A341LINEAR A SIGN A342LINEAR A SIGN A343LINEAR A SI" + - "GN A344LINEAR A SIGN A345LINEAR A SIGN A346LINEAR A SIGN A347LINEAR A SI" + - "GN A348LINEAR A SIGN A349LINEAR A SIGN A350LINEAR A SIGN A351LINEAR A SI" + - "GN A352LINEAR A SIGN A353LINEAR A SIGN A354LINEAR A SIGN A355LINEAR A SI" + - "GN A356LINEAR A SIGN A357LINEAR A SIGN A358LINEAR A SIGN A359LINEAR A SI" + - "GN A360LINEAR A SIGN A361LINEAR A SIGN A362LINEAR A SIGN A363LINEAR A SI" + - "GN A364LINEAR A SIGN A365LINEAR A SIGN A366LINEAR A SIGN A367LINEAR A SI" + - "GN A368LINEAR A SIGN A369LINEAR A SIGN A370LINEAR A SIGN A371LINEAR A SI" + - "GN A400-VASLINEAR A SIGN A401-VASLINEAR A SIGN A402-VASLINEAR A SIGN A40" + - "3-VASLINEAR A SIGN A404-VASLINEAR A SIGN A405-VASLINEAR A SIGN A406-VASL" + - "INEAR A SIGN A407-VASLINEAR A SIGN A408-VASLINEAR A SIGN A409-VASLINEAR " + - "A SIGN A410-VASLINEAR A SIGN A411-VASLINEAR A SIGN A412-VASLINEAR A SIGN" + - " A413-VASLINEAR A SIGN A414-VASLINEAR A SIGN A415-VASLINEAR A SIGN A416-" + - "VASLINEAR A SIGN A417-VASLINEAR A SIGN A418-VASLINEAR A SIGN A501LINEAR " + - "A SIGN A502LINEAR A SIGN A503LINEAR A SIGN A504LINEAR A SIGN A505LINEAR " + - "A SIGN A506LINEAR A SIGN A508LINEAR A SIGN A509LINEAR A SIGN A510LINEAR " + - "A SIGN A511LINEAR A SIGN A512LINEAR A SIGN A513LINEAR A SIGN A515LINEAR " + - "A SIGN A516LINEAR A SIGN A520LINEAR A SIGN A521LINEAR A SIGN A523LINEAR " + - "A SIGN A524LINEAR A SIGN A525LINEAR A SIGN A526LINEAR A SIGN A527LINEAR " + - "A SIGN A528LINEAR A SIGN A529LINEAR A SIGN A530LINEAR A SIGN A531LINEAR " + - "A SIGN A532LINEAR A SIGN A534LINEAR A SIGN A535LINEAR A SIGN A536LINEAR " + - "A SIGN A537LINEAR A SIGN A538LINEAR A SIGN A539LINEAR A SIGN A540LINEAR " + - "A SIGN A541LINEAR A SIGN A542LINEAR A SIGN A545LINEAR A SIGN A547LINEAR " + - "A SIGN A548LINEAR A SIGN A549LINEAR A SIGN A550LINEAR A SIGN A551LINEAR " + - "A SIGN A552LINEAR A SIGN A553LINEAR A SIGN A554LINEAR A SIGN A555LINEAR " + - "A SIGN A556LINEAR A SIGN A557LINEAR A SIGN A559LINEAR A SIGN A563LINEAR " + - "A SIGN A564LINEAR A SIGN A565LINEAR A SIGN A566LINEAR A SIGN A568LINEAR " + - "A SIGN A569LINEAR A SIGN A570LINEAR A SIGN A571LINEAR A SIGN A572LINEAR " + - "A SIGN A573LINEAR A SIGN A574LINEAR A SIGN A575LINEAR A SIGN A576LINEAR " + - "A SIGN A577LINEAR A SIGN A578LINEAR A SIGN A579LINEAR A SIGN A580LINEAR " + - "A SIGN A581LINEAR A SIGN A582LINEAR A SIGN A583LINEAR A SIGN A584LINEAR " + - "A SIGN A585LINEAR A SIGN A586LINEAR A SIGN A587LINEAR A SIGN A588LINEAR " + - "A SIGN A589LINEAR A SIGN A591LINEAR A SIGN A592LINEAR A SIGN A594LINEAR " + - "A SIGN A595LINEAR A SIGN A596LINEAR A SIGN A598LINEAR A SIGN A600LINEAR " + - "A SIGN A601LINEAR A SIGN A602LINEAR A SIGN A603LINEAR A SIGN A604LINEAR " + - "A SIGN A606LINEAR A SIGN A608LINEAR A SIGN A609LINEAR A SIGN A610LINEAR " + - "A SIGN A611LINEAR A SIGN A612LINEAR A SIGN A613LINEAR A SIGN A614LINEAR " + - "A SIGN A615LINEAR A SIGN A616LINEAR A SIGN A617LINEAR A SIGN A618LINEAR ") + ("" + - "A SIGN A619LINEAR A SIGN A620LINEAR A SIGN A621LINEAR A SIGN A622LINEAR " + - "A SIGN A623LINEAR A SIGN A624LINEAR A SIGN A626LINEAR A SIGN A627LINEAR " + - "A SIGN A628LINEAR A SIGN A629LINEAR A SIGN A634LINEAR A SIGN A637LINEAR " + - "A SIGN A638LINEAR A SIGN A640LINEAR A SIGN A642LINEAR A SIGN A643LINEAR " + - "A SIGN A644LINEAR A SIGN A645LINEAR A SIGN A646LINEAR A SIGN A648LINEAR " + - "A SIGN A649LINEAR A SIGN A651LINEAR A SIGN A652LINEAR A SIGN A653LINEAR " + - "A SIGN A654LINEAR A SIGN A655LINEAR A SIGN A656LINEAR A SIGN A657LINEAR " + - "A SIGN A658LINEAR A SIGN A659LINEAR A SIGN A660LINEAR A SIGN A661LINEAR " + - "A SIGN A662LINEAR A SIGN A663LINEAR A SIGN A664LINEAR A SIGN A701 ALINEA" + - "R A SIGN A702 BLINEAR A SIGN A703 DLINEAR A SIGN A704 ELINEAR A SIGN A70" + - "5 FLINEAR A SIGN A706 HLINEAR A SIGN A707 JLINEAR A SIGN A708 KLINEAR A " + - "SIGN A709 LLINEAR A SIGN A709-2 L2LINEAR A SIGN A709-3 L3LINEAR A SIGN A" + - "709-4 L4LINEAR A SIGN A709-6 L6LINEAR A SIGN A710 WLINEAR A SIGN A711 XL" + - "INEAR A SIGN A712 YLINEAR A SIGN A713 OMEGALINEAR A SIGN A714 ABBLINEAR " + - "A SIGN A715 BBLINEAR A SIGN A717 DDLINEAR A SIGN A726 EYYYLINEAR A SIGN " + - "A732 JELINEAR A SIGN A800LINEAR A SIGN A801LINEAR A SIGN A802LINEAR A SI" + - "GN A803LINEAR A SIGN A804LINEAR A SIGN A805LINEAR A SIGN A806LINEAR A SI" + - "GN A807CYPRIOT SYLLABLE ACYPRIOT SYLLABLE ECYPRIOT SYLLABLE ICYPRIOT SYL" + - "LABLE OCYPRIOT SYLLABLE UCYPRIOT SYLLABLE JACYPRIOT SYLLABLE JOCYPRIOT S" + - "YLLABLE KACYPRIOT SYLLABLE KECYPRIOT SYLLABLE KICYPRIOT SYLLABLE KOCYPRI" + - "OT SYLLABLE KUCYPRIOT SYLLABLE LACYPRIOT SYLLABLE LECYPRIOT SYLLABLE LIC" + - "YPRIOT SYLLABLE LOCYPRIOT SYLLABLE LUCYPRIOT SYLLABLE MACYPRIOT SYLLABLE" + - " MECYPRIOT SYLLABLE MICYPRIOT SYLLABLE MOCYPRIOT SYLLABLE MUCYPRIOT SYLL" + - "ABLE NACYPRIOT SYLLABLE NECYPRIOT SYLLABLE NICYPRIOT SYLLABLE NOCYPRIOT " + - "SYLLABLE NUCYPRIOT SYLLABLE PACYPRIOT SYLLABLE PECYPRIOT SYLLABLE PICYPR" + - "IOT SYLLABLE POCYPRIOT SYLLABLE PUCYPRIOT SYLLABLE RACYPRIOT SYLLABLE RE" + - "CYPRIOT SYLLABLE RICYPRIOT SYLLABLE ROCYPRIOT SYLLABLE RUCYPRIOT SYLLABL" + - "E SACYPRIOT SYLLABLE SECYPRIOT SYLLABLE SICYPRIOT SYLLABLE SOCYPRIOT SYL" + - "LABLE SUCYPRIOT SYLLABLE TACYPRIOT SYLLABLE TECYPRIOT SYLLABLE TICYPRIOT" + - " SYLLABLE TOCYPRIOT SYLLABLE TUCYPRIOT SYLLABLE WACYPRIOT SYLLABLE WECYP" + - "RIOT SYLLABLE WICYPRIOT SYLLABLE WOCYPRIOT SYLLABLE XACYPRIOT SYLLABLE X" + - "ECYPRIOT SYLLABLE ZACYPRIOT SYLLABLE ZOIMPERIAL ARAMAIC LETTER ALEPHIMPE" + - "RIAL ARAMAIC LETTER BETHIMPERIAL ARAMAIC LETTER GIMELIMPERIAL ARAMAIC LE" + - "TTER DALETHIMPERIAL ARAMAIC LETTER HEIMPERIAL ARAMAIC LETTER WAWIMPERIAL" + - " ARAMAIC LETTER ZAYINIMPERIAL ARAMAIC LETTER HETHIMPERIAL ARAMAIC LETTER" + - " TETHIMPERIAL ARAMAIC LETTER YODHIMPERIAL ARAMAIC LETTER KAPHIMPERIAL AR" + - "AMAIC LETTER LAMEDHIMPERIAL ARAMAIC LETTER MEMIMPERIAL ARAMAIC LETTER NU" + - "NIMPERIAL ARAMAIC LETTER SAMEKHIMPERIAL ARAMAIC LETTER AYINIMPERIAL ARAM" + - "AIC LETTER PEIMPERIAL ARAMAIC LETTER SADHEIMPERIAL ARAMAIC LETTER QOPHIM" + - "PERIAL ARAMAIC LETTER RESHIMPERIAL ARAMAIC LETTER SHINIMPERIAL ARAMAIC L" + - "ETTER TAWIMPERIAL ARAMAIC SECTION SIGNIMPERIAL ARAMAIC NUMBER ONEIMPERIA" + - "L ARAMAIC NUMBER TWOIMPERIAL ARAMAIC NUMBER THREEIMPERIAL ARAMAIC NUMBER" + - " TENIMPERIAL ARAMAIC NUMBER TWENTYIMPERIAL ARAMAIC NUMBER ONE HUNDREDIMP" + - "ERIAL ARAMAIC NUMBER ONE THOUSANDIMPERIAL ARAMAIC NUMBER TEN THOUSANDPAL" + - "MYRENE LETTER ALEPHPALMYRENE LETTER BETHPALMYRENE LETTER GIMELPALMYRENE " + - "LETTER DALETHPALMYRENE LETTER HEPALMYRENE LETTER WAWPALMYRENE LETTER ZAY" + - "INPALMYRENE LETTER HETHPALMYRENE LETTER TETHPALMYRENE LETTER YODHPALMYRE" + - "NE LETTER KAPHPALMYRENE LETTER LAMEDHPALMYRENE LETTER MEMPALMYRENE LETTE" + - "R FINAL NUNPALMYRENE LETTER NUNPALMYRENE LETTER SAMEKHPALMYRENE LETTER A" + - "YINPALMYRENE LETTER PEPALMYRENE LETTER SADHEPALMYRENE LETTER QOPHPALMYRE" + - "NE LETTER RESHPALMYRENE LETTER SHINPALMYRENE LETTER TAWPALMYRENE LEFT-PO" + - "INTING FLEURONPALMYRENE RIGHT-POINTING FLEURONPALMYRENE NUMBER ONEPALMYR" + - "ENE NUMBER TWOPALMYRENE NUMBER THREEPALMYRENE NUMBER FOURPALMYRENE NUMBE" + - "R FIVEPALMYRENE NUMBER TENPALMYRENE NUMBER TWENTYNABATAEAN LETTER FINAL " + - "ALEPHNABATAEAN LETTER ALEPHNABATAEAN LETTER FINAL BETHNABATAEAN LETTER B" + - "ETHNABATAEAN LETTER GIMELNABATAEAN LETTER DALETHNABATAEAN LETTER FINAL H" + - "ENABATAEAN LETTER HENABATAEAN LETTER WAWNABATAEAN LETTER ZAYINNABATAEAN " + - "LETTER HETHNABATAEAN LETTER TETHNABATAEAN LETTER FINAL YODHNABATAEAN LET" + - "TER YODHNABATAEAN LETTER FINAL KAPHNABATAEAN LETTER KAPHNABATAEAN LETTER" + - " FINAL LAMEDHNABATAEAN LETTER LAMEDHNABATAEAN LETTER FINAL MEMNABATAEAN " + - "LETTER MEMNABATAEAN LETTER FINAL NUNNABATAEAN LETTER NUNNABATAEAN LETTER" + - " SAMEKHNABATAEAN LETTER AYINNABATAEAN LETTER PENABATAEAN LETTER SADHENAB" + - "ATAEAN LETTER QOPHNABATAEAN LETTER RESHNABATAEAN LETTER FINAL SHINNABATA" + - "EAN LETTER SHINNABATAEAN LETTER TAWNABATAEAN NUMBER ONENABATAEAN NUMBER ") + ("" + - "TWONABATAEAN NUMBER THREENABATAEAN NUMBER FOURNABATAEAN CRUCIFORM NUMBER" + - " FOURNABATAEAN NUMBER FIVENABATAEAN NUMBER TENNABATAEAN NUMBER TWENTYNAB" + - "ATAEAN NUMBER ONE HUNDREDHATRAN LETTER ALEPHHATRAN LETTER BETHHATRAN LET" + - "TER GIMELHATRAN LETTER DALETH-RESHHATRAN LETTER HEHATRAN LETTER WAWHATRA" + - "N LETTER ZAYNHATRAN LETTER HETHHATRAN LETTER TETHHATRAN LETTER YODHHATRA" + - "N LETTER KAPHHATRAN LETTER LAMEDHHATRAN LETTER MEMHATRAN LETTER NUNHATRA" + - "N LETTER SAMEKHHATRAN LETTER AYNHATRAN LETTER PEHATRAN LETTER SADHEHATRA" + - "N LETTER QOPHHATRAN LETTER SHINHATRAN LETTER TAWHATRAN NUMBER ONEHATRAN " + - "NUMBER FIVEHATRAN NUMBER TENHATRAN NUMBER TWENTYHATRAN NUMBER ONE HUNDRE" + - "DPHOENICIAN LETTER ALFPHOENICIAN LETTER BETPHOENICIAN LETTER GAMLPHOENIC" + - "IAN LETTER DELTPHOENICIAN LETTER HEPHOENICIAN LETTER WAUPHOENICIAN LETTE" + - "R ZAIPHOENICIAN LETTER HETPHOENICIAN LETTER TETPHOENICIAN LETTER YODPHOE" + - "NICIAN LETTER KAFPHOENICIAN LETTER LAMDPHOENICIAN LETTER MEMPHOENICIAN L" + - "ETTER NUNPHOENICIAN LETTER SEMKPHOENICIAN LETTER AINPHOENICIAN LETTER PE" + - "PHOENICIAN LETTER SADEPHOENICIAN LETTER QOFPHOENICIAN LETTER ROSHPHOENIC" + - "IAN LETTER SHINPHOENICIAN LETTER TAUPHOENICIAN NUMBER ONEPHOENICIAN NUMB" + - "ER TENPHOENICIAN NUMBER TWENTYPHOENICIAN NUMBER ONE HUNDREDPHOENICIAN NU" + - "MBER TWOPHOENICIAN NUMBER THREEPHOENICIAN WORD SEPARATORLYDIAN LETTER AL" + - "YDIAN LETTER BLYDIAN LETTER GLYDIAN LETTER DLYDIAN LETTER ELYDIAN LETTER" + - " VLYDIAN LETTER ILYDIAN LETTER YLYDIAN LETTER KLYDIAN LETTER LLYDIAN LET" + - "TER MLYDIAN LETTER NLYDIAN LETTER OLYDIAN LETTER RLYDIAN LETTER SSLYDIAN" + - " LETTER TLYDIAN LETTER ULYDIAN LETTER FLYDIAN LETTER QLYDIAN LETTER SLYD" + - "IAN LETTER TTLYDIAN LETTER ANLYDIAN LETTER ENLYDIAN LETTER LYLYDIAN LETT" + - "ER NNLYDIAN LETTER CLYDIAN TRIANGULAR MARKMEROITIC HIEROGLYPHIC LETTER A" + - "MEROITIC HIEROGLYPHIC LETTER EMEROITIC HIEROGLYPHIC LETTER IMEROITIC HIE" + - "ROGLYPHIC LETTER OMEROITIC HIEROGLYPHIC LETTER YAMEROITIC HIEROGLYPHIC L" + - "ETTER WAMEROITIC HIEROGLYPHIC LETTER BAMEROITIC HIEROGLYPHIC LETTER BA-2" + - "MEROITIC HIEROGLYPHIC LETTER PAMEROITIC HIEROGLYPHIC LETTER MAMEROITIC H" + - "IEROGLYPHIC LETTER NAMEROITIC HIEROGLYPHIC LETTER NA-2MEROITIC HIEROGLYP" + - "HIC LETTER NEMEROITIC HIEROGLYPHIC LETTER NE-2MEROITIC HIEROGLYPHIC LETT" + - "ER RAMEROITIC HIEROGLYPHIC LETTER RA-2MEROITIC HIEROGLYPHIC LETTER LAMER" + - "OITIC HIEROGLYPHIC LETTER KHAMEROITIC HIEROGLYPHIC LETTER HHAMEROITIC HI" + - "EROGLYPHIC LETTER SAMEROITIC HIEROGLYPHIC LETTER SA-2MEROITIC HIEROGLYPH" + - "IC LETTER SEMEROITIC HIEROGLYPHIC LETTER KAMEROITIC HIEROGLYPHIC LETTER " + - "QAMEROITIC HIEROGLYPHIC LETTER TAMEROITIC HIEROGLYPHIC LETTER TA-2MEROIT" + - "IC HIEROGLYPHIC LETTER TEMEROITIC HIEROGLYPHIC LETTER TE-2MEROITIC HIERO" + - "GLYPHIC LETTER TOMEROITIC HIEROGLYPHIC LETTER DAMEROITIC HIEROGLYPHIC SY" + - "MBOL VIDJMEROITIC HIEROGLYPHIC SYMBOL VIDJ-2MEROITIC CURSIVE LETTER AMER" + - "OITIC CURSIVE LETTER EMEROITIC CURSIVE LETTER IMEROITIC CURSIVE LETTER O" + - "MEROITIC CURSIVE LETTER YAMEROITIC CURSIVE LETTER WAMEROITIC CURSIVE LET" + - "TER BAMEROITIC CURSIVE LETTER PAMEROITIC CURSIVE LETTER MAMEROITIC CURSI" + - "VE LETTER NAMEROITIC CURSIVE LETTER NEMEROITIC CURSIVE LETTER RAMEROITIC" + - " CURSIVE LETTER LAMEROITIC CURSIVE LETTER KHAMEROITIC CURSIVE LETTER HHA" + - "MEROITIC CURSIVE LETTER SAMEROITIC CURSIVE LETTER ARCHAIC SAMEROITIC CUR" + - "SIVE LETTER SEMEROITIC CURSIVE LETTER KAMEROITIC CURSIVE LETTER QAMEROIT" + - "IC CURSIVE LETTER TAMEROITIC CURSIVE LETTER TEMEROITIC CURSIVE LETTER TO" + - "MEROITIC CURSIVE LETTER DAMEROITIC CURSIVE FRACTION ELEVEN TWELFTHSMEROI" + - "TIC CURSIVE FRACTION ONE HALFMEROITIC CURSIVE LOGOGRAM RMTMEROITIC CURSI" + - "VE LOGOGRAM IMNMEROITIC CURSIVE NUMBER ONEMEROITIC CURSIVE NUMBER TWOMER" + - "OITIC CURSIVE NUMBER THREEMEROITIC CURSIVE NUMBER FOURMEROITIC CURSIVE N" + - "UMBER FIVEMEROITIC CURSIVE NUMBER SIXMEROITIC CURSIVE NUMBER SEVENMEROIT" + - "IC CURSIVE NUMBER EIGHTMEROITIC CURSIVE NUMBER NINEMEROITIC CURSIVE NUMB" + - "ER TENMEROITIC CURSIVE NUMBER TWENTYMEROITIC CURSIVE NUMBER THIRTYMEROIT" + - "IC CURSIVE NUMBER FORTYMEROITIC CURSIVE NUMBER FIFTYMEROITIC CURSIVE NUM" + - "BER SIXTYMEROITIC CURSIVE NUMBER SEVENTYMEROITIC CURSIVE NUMBER ONE HUND" + - "REDMEROITIC CURSIVE NUMBER TWO HUNDREDMEROITIC CURSIVE NUMBER THREE HUND" + - "REDMEROITIC CURSIVE NUMBER FOUR HUNDREDMEROITIC CURSIVE NUMBER FIVE HUND" + - "REDMEROITIC CURSIVE NUMBER SIX HUNDREDMEROITIC CURSIVE NUMBER SEVEN HUND" + - "REDMEROITIC CURSIVE NUMBER EIGHT HUNDREDMEROITIC CURSIVE NUMBER NINE HUN" + - "DREDMEROITIC CURSIVE NUMBER ONE THOUSANDMEROITIC CURSIVE NUMBER TWO THOU" + - "SANDMEROITIC CURSIVE NUMBER THREE THOUSANDMEROITIC CURSIVE NUMBER FOUR T" + - "HOUSANDMEROITIC CURSIVE NUMBER FIVE THOUSANDMEROITIC CURSIVE NUMBER SIX " + - "THOUSANDMEROITIC CURSIVE NUMBER SEVEN THOUSANDMEROITIC CURSIVE NUMBER EI" + - "GHT THOUSANDMEROITIC CURSIVE NUMBER NINE THOUSANDMEROITIC CURSIVE NUMBER") + ("" + - " TEN THOUSANDMEROITIC CURSIVE NUMBER TWENTY THOUSANDMEROITIC CURSIVE NUM" + - "BER THIRTY THOUSANDMEROITIC CURSIVE NUMBER FORTY THOUSANDMEROITIC CURSIV" + - "E NUMBER FIFTY THOUSANDMEROITIC CURSIVE NUMBER SIXTY THOUSANDMEROITIC CU" + - "RSIVE NUMBER SEVENTY THOUSANDMEROITIC CURSIVE NUMBER EIGHTY THOUSANDMERO" + - "ITIC CURSIVE NUMBER NINETY THOUSANDMEROITIC CURSIVE NUMBER ONE HUNDRED T" + - "HOUSANDMEROITIC CURSIVE NUMBER TWO HUNDRED THOUSANDMEROITIC CURSIVE NUMB" + - "ER THREE HUNDRED THOUSANDMEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSANDME" + - "ROITIC CURSIVE NUMBER FIVE HUNDRED THOUSANDMEROITIC CURSIVE NUMBER SIX H" + - "UNDRED THOUSANDMEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSANDMEROITIC CU" + - "RSIVE NUMBER EIGHT HUNDRED THOUSANDMEROITIC CURSIVE NUMBER NINE HUNDRED " + - "THOUSANDMEROITIC CURSIVE FRACTION ONE TWELFTHMEROITIC CURSIVE FRACTION T" + - "WO TWELFTHSMEROITIC CURSIVE FRACTION THREE TWELFTHSMEROITIC CURSIVE FRAC" + - "TION FOUR TWELFTHSMEROITIC CURSIVE FRACTION FIVE TWELFTHSMEROITIC CURSIV" + - "E FRACTION SIX TWELFTHSMEROITIC CURSIVE FRACTION SEVEN TWELFTHSMEROITIC " + - "CURSIVE FRACTION EIGHT TWELFTHSMEROITIC CURSIVE FRACTION NINE TWELFTHSME" + - "ROITIC CURSIVE FRACTION TEN TWELFTHSKHAROSHTHI LETTER AKHAROSHTHI VOWEL " + - "SIGN IKHAROSHTHI VOWEL SIGN UKHAROSHTHI VOWEL SIGN VOCALIC RKHAROSHTHI V" + - "OWEL SIGN EKHAROSHTHI VOWEL SIGN OKHAROSHTHI VOWEL LENGTH MARKKHAROSHTHI" + - " SIGN DOUBLE RING BELOWKHAROSHTHI SIGN ANUSVARAKHAROSHTHI SIGN VISARGAKH" + - "AROSHTHI LETTER KAKHAROSHTHI LETTER KHAKHAROSHTHI LETTER GAKHAROSHTHI LE" + - "TTER GHAKHAROSHTHI LETTER CAKHAROSHTHI LETTER CHAKHAROSHTHI LETTER JAKHA" + - "ROSHTHI LETTER NYAKHAROSHTHI LETTER TTAKHAROSHTHI LETTER TTHAKHAROSHTHI " + - "LETTER DDAKHAROSHTHI LETTER DDHAKHAROSHTHI LETTER NNAKHAROSHTHI LETTER T" + - "AKHAROSHTHI LETTER THAKHAROSHTHI LETTER DAKHAROSHTHI LETTER DHAKHAROSHTH" + - "I LETTER NAKHAROSHTHI LETTER PAKHAROSHTHI LETTER PHAKHAROSHTHI LETTER BA" + - "KHAROSHTHI LETTER BHAKHAROSHTHI LETTER MAKHAROSHTHI LETTER YAKHAROSHTHI " + - "LETTER RAKHAROSHTHI LETTER LAKHAROSHTHI LETTER VAKHAROSHTHI LETTER SHAKH" + - "AROSHTHI LETTER SSAKHAROSHTHI LETTER SAKHAROSHTHI LETTER ZAKHAROSHTHI LE" + - "TTER HAKHAROSHTHI LETTER KKAKHAROSHTHI LETTER TTTHAKHAROSHTHI SIGN BAR A" + - "BOVEKHAROSHTHI SIGN CAUDAKHAROSHTHI SIGN DOT BELOWKHAROSHTHI VIRAMAKHARO" + - "SHTHI DIGIT ONEKHAROSHTHI DIGIT TWOKHAROSHTHI DIGIT THREEKHAROSHTHI DIGI" + - "T FOURKHAROSHTHI NUMBER TENKHAROSHTHI NUMBER TWENTYKHAROSHTHI NUMBER ONE" + - " HUNDREDKHAROSHTHI NUMBER ONE THOUSANDKHAROSHTHI PUNCTUATION DOTKHAROSHT" + - "HI PUNCTUATION SMALL CIRCLEKHAROSHTHI PUNCTUATION CIRCLEKHAROSHTHI PUNCT" + - "UATION CRESCENT BARKHAROSHTHI PUNCTUATION MANGALAMKHAROSHTHI PUNCTUATION" + - " LOTUSKHAROSHTHI PUNCTUATION DANDAKHAROSHTHI PUNCTUATION DOUBLE DANDAKHA" + - "ROSHTHI PUNCTUATION LINESOLD SOUTH ARABIAN LETTER HEOLD SOUTH ARABIAN LE" + - "TTER LAMEDHOLD SOUTH ARABIAN LETTER HETHOLD SOUTH ARABIAN LETTER MEMOLD " + - "SOUTH ARABIAN LETTER QOPHOLD SOUTH ARABIAN LETTER WAWOLD SOUTH ARABIAN L" + - "ETTER SHINOLD SOUTH ARABIAN LETTER RESHOLD SOUTH ARABIAN LETTER BETHOLD " + - "SOUTH ARABIAN LETTER TAWOLD SOUTH ARABIAN LETTER SATOLD SOUTH ARABIAN LE" + - "TTER KAPHOLD SOUTH ARABIAN LETTER NUNOLD SOUTH ARABIAN LETTER KHETHOLD S" + - "OUTH ARABIAN LETTER SADHEOLD SOUTH ARABIAN LETTER SAMEKHOLD SOUTH ARABIA" + - "N LETTER FEOLD SOUTH ARABIAN LETTER ALEFOLD SOUTH ARABIAN LETTER AYNOLD " + - "SOUTH ARABIAN LETTER DHADHEOLD SOUTH ARABIAN LETTER GIMELOLD SOUTH ARABI" + - "AN LETTER DALETHOLD SOUTH ARABIAN LETTER GHAYNOLD SOUTH ARABIAN LETTER T" + - "ETHOLD SOUTH ARABIAN LETTER ZAYNOLD SOUTH ARABIAN LETTER DHALETHOLD SOUT" + - "H ARABIAN LETTER YODHOLD SOUTH ARABIAN LETTER THAWOLD SOUTH ARABIAN LETT" + - "ER THETHOLD SOUTH ARABIAN NUMBER ONEOLD SOUTH ARABIAN NUMBER FIFTYOLD SO" + - "UTH ARABIAN NUMERIC INDICATOROLD NORTH ARABIAN LETTER HEHOLD NORTH ARABI" + - "AN LETTER LAMOLD NORTH ARABIAN LETTER HAHOLD NORTH ARABIAN LETTER MEEMOL" + - "D NORTH ARABIAN LETTER QAFOLD NORTH ARABIAN LETTER WAWOLD NORTH ARABIAN " + - "LETTER ES-2OLD NORTH ARABIAN LETTER REHOLD NORTH ARABIAN LETTER BEHOLD N" + - "ORTH ARABIAN LETTER TEHOLD NORTH ARABIAN LETTER ES-1OLD NORTH ARABIAN LE" + - "TTER KAFOLD NORTH ARABIAN LETTER NOONOLD NORTH ARABIAN LETTER KHAHOLD NO" + - "RTH ARABIAN LETTER SADOLD NORTH ARABIAN LETTER ES-3OLD NORTH ARABIAN LET" + - "TER FEHOLD NORTH ARABIAN LETTER ALEFOLD NORTH ARABIAN LETTER AINOLD NORT" + - "H ARABIAN LETTER DADOLD NORTH ARABIAN LETTER GEEMOLD NORTH ARABIAN LETTE" + - "R DALOLD NORTH ARABIAN LETTER GHAINOLD NORTH ARABIAN LETTER TAHOLD NORTH" + - " ARABIAN LETTER ZAINOLD NORTH ARABIAN LETTER THALOLD NORTH ARABIAN LETTE" + - "R YEHOLD NORTH ARABIAN LETTER THEHOLD NORTH ARABIAN LETTER ZAHOLD NORTH " + - "ARABIAN NUMBER ONEOLD NORTH ARABIAN NUMBER TENOLD NORTH ARABIAN NUMBER T" + - "WENTYMANICHAEAN LETTER ALEPHMANICHAEAN LETTER BETHMANICHAEAN LETTER BHET" + - "HMANICHAEAN LETTER GIMELMANICHAEAN LETTER GHIMELMANICHAEAN LETTER DALETH") + ("" + - "MANICHAEAN LETTER HEMANICHAEAN LETTER WAWMANICHAEAN SIGN UDMANICHAEAN LE" + - "TTER ZAYINMANICHAEAN LETTER ZHAYINMANICHAEAN LETTER JAYINMANICHAEAN LETT" + - "ER JHAYINMANICHAEAN LETTER HETHMANICHAEAN LETTER TETHMANICHAEAN LETTER Y" + - "ODHMANICHAEAN LETTER KAPHMANICHAEAN LETTER XAPHMANICHAEAN LETTER KHAPHMA" + - "NICHAEAN LETTER LAMEDHMANICHAEAN LETTER DHAMEDHMANICHAEAN LETTER THAMEDH" + - "MANICHAEAN LETTER MEMMANICHAEAN LETTER NUNMANICHAEAN LETTER SAMEKHMANICH" + - "AEAN LETTER AYINMANICHAEAN LETTER AAYINMANICHAEAN LETTER PEMANICHAEAN LE" + - "TTER FEMANICHAEAN LETTER SADHEMANICHAEAN LETTER QOPHMANICHAEAN LETTER XO" + - "PHMANICHAEAN LETTER QHOPHMANICHAEAN LETTER RESHMANICHAEAN LETTER SHINMAN" + - "ICHAEAN LETTER SSHINMANICHAEAN LETTER TAWMANICHAEAN ABBREVIATION MARK AB" + - "OVEMANICHAEAN ABBREVIATION MARK BELOWMANICHAEAN NUMBER ONEMANICHAEAN NUM" + - "BER FIVEMANICHAEAN NUMBER TENMANICHAEAN NUMBER TWENTYMANICHAEAN NUMBER O" + - "NE HUNDREDMANICHAEAN PUNCTUATION STARMANICHAEAN PUNCTUATION FLEURONMANIC" + - "HAEAN PUNCTUATION DOUBLE DOT WITHIN DOTMANICHAEAN PUNCTUATION DOT WITHIN" + - " DOTMANICHAEAN PUNCTUATION DOTMANICHAEAN PUNCTUATION TWO DOTSMANICHAEAN " + - "PUNCTUATION LINE FILLERAVESTAN LETTER AAVESTAN LETTER AAAVESTAN LETTER A" + - "OAVESTAN LETTER AAOAVESTAN LETTER ANAVESTAN LETTER AANAVESTAN LETTER AEA" + - "VESTAN LETTER AEEAVESTAN LETTER EAVESTAN LETTER EEAVESTAN LETTER OAVESTA" + - "N LETTER OOAVESTAN LETTER IAVESTAN LETTER IIAVESTAN LETTER UAVESTAN LETT" + - "ER UUAVESTAN LETTER KEAVESTAN LETTER XEAVESTAN LETTER XYEAVESTAN LETTER " + - "XVEAVESTAN LETTER GEAVESTAN LETTER GGEAVESTAN LETTER GHEAVESTAN LETTER C" + - "EAVESTAN LETTER JEAVESTAN LETTER TEAVESTAN LETTER THEAVESTAN LETTER DEAV" + - "ESTAN LETTER DHEAVESTAN LETTER TTEAVESTAN LETTER PEAVESTAN LETTER FEAVES" + - "TAN LETTER BEAVESTAN LETTER BHEAVESTAN LETTER NGEAVESTAN LETTER NGYEAVES" + - "TAN LETTER NGVEAVESTAN LETTER NEAVESTAN LETTER NYEAVESTAN LETTER NNEAVES" + - "TAN LETTER MEAVESTAN LETTER HMEAVESTAN LETTER YYEAVESTAN LETTER YEAVESTA" + - "N LETTER VEAVESTAN LETTER REAVESTAN LETTER LEAVESTAN LETTER SEAVESTAN LE" + - "TTER ZEAVESTAN LETTER SHEAVESTAN LETTER ZHEAVESTAN LETTER SHYEAVESTAN LE" + - "TTER SSHEAVESTAN LETTER HEAVESTAN ABBREVIATION MARKTINY TWO DOTS OVER ON" + - "E DOT PUNCTUATIONSMALL TWO DOTS OVER ONE DOT PUNCTUATIONLARGE TWO DOTS O" + - "VER ONE DOT PUNCTUATIONLARGE ONE DOT OVER TWO DOTS PUNCTUATIONLARGE TWO " + - "RINGS OVER ONE RING PUNCTUATIONLARGE ONE RING OVER TWO RINGS PUNCTUATION" + - "INSCRIPTIONAL PARTHIAN LETTER ALEPHINSCRIPTIONAL PARTHIAN LETTER BETHINS" + - "CRIPTIONAL PARTHIAN LETTER GIMELINSCRIPTIONAL PARTHIAN LETTER DALETHINSC" + - "RIPTIONAL PARTHIAN LETTER HEINSCRIPTIONAL PARTHIAN LETTER WAWINSCRIPTION" + - "AL PARTHIAN LETTER ZAYININSCRIPTIONAL PARTHIAN LETTER HETHINSCRIPTIONAL " + - "PARTHIAN LETTER TETHINSCRIPTIONAL PARTHIAN LETTER YODHINSCRIPTIONAL PART" + - "HIAN LETTER KAPHINSCRIPTIONAL PARTHIAN LETTER LAMEDHINSCRIPTIONAL PARTHI" + - "AN LETTER MEMINSCRIPTIONAL PARTHIAN LETTER NUNINSCRIPTIONAL PARTHIAN LET" + - "TER SAMEKHINSCRIPTIONAL PARTHIAN LETTER AYININSCRIPTIONAL PARTHIAN LETTE" + - "R PEINSCRIPTIONAL PARTHIAN LETTER SADHEINSCRIPTIONAL PARTHIAN LETTER QOP" + - "HINSCRIPTIONAL PARTHIAN LETTER RESHINSCRIPTIONAL PARTHIAN LETTER SHININS" + - "CRIPTIONAL PARTHIAN LETTER TAWINSCRIPTIONAL PARTHIAN NUMBER ONEINSCRIPTI" + - "ONAL PARTHIAN NUMBER TWOINSCRIPTIONAL PARTHIAN NUMBER THREEINSCRIPTIONAL" + - " PARTHIAN NUMBER FOURINSCRIPTIONAL PARTHIAN NUMBER TENINSCRIPTIONAL PART" + - "HIAN NUMBER TWENTYINSCRIPTIONAL PARTHIAN NUMBER ONE HUNDREDINSCRIPTIONAL" + - " PARTHIAN NUMBER ONE THOUSANDINSCRIPTIONAL PAHLAVI LETTER ALEPHINSCRIPTI" + - "ONAL PAHLAVI LETTER BETHINSCRIPTIONAL PAHLAVI LETTER GIMELINSCRIPTIONAL " + - "PAHLAVI LETTER DALETHINSCRIPTIONAL PAHLAVI LETTER HEINSCRIPTIONAL PAHLAV" + - "I LETTER WAW-AYIN-RESHINSCRIPTIONAL PAHLAVI LETTER ZAYININSCRIPTIONAL PA" + - "HLAVI LETTER HETHINSCRIPTIONAL PAHLAVI LETTER TETHINSCRIPTIONAL PAHLAVI " + - "LETTER YODHINSCRIPTIONAL PAHLAVI LETTER KAPHINSCRIPTIONAL PAHLAVI LETTER" + - " LAMEDHINSCRIPTIONAL PAHLAVI LETTER MEM-QOPHINSCRIPTIONAL PAHLAVI LETTER" + - " NUNINSCRIPTIONAL PAHLAVI LETTER SAMEKHINSCRIPTIONAL PAHLAVI LETTER PEIN" + - "SCRIPTIONAL PAHLAVI LETTER SADHEINSCRIPTIONAL PAHLAVI LETTER SHININSCRIP" + - "TIONAL PAHLAVI LETTER TAWINSCRIPTIONAL PAHLAVI NUMBER ONEINSCRIPTIONAL P" + - "AHLAVI NUMBER TWOINSCRIPTIONAL PAHLAVI NUMBER THREEINSCRIPTIONAL PAHLAVI" + - " NUMBER FOURINSCRIPTIONAL PAHLAVI NUMBER TENINSCRIPTIONAL PAHLAVI NUMBER" + - " TWENTYINSCRIPTIONAL PAHLAVI NUMBER ONE HUNDREDINSCRIPTIONAL PAHLAVI NUM" + - "BER ONE THOUSANDPSALTER PAHLAVI LETTER ALEPHPSALTER PAHLAVI LETTER BETHP" + - "SALTER PAHLAVI LETTER GIMELPSALTER PAHLAVI LETTER DALETHPSALTER PAHLAVI " + - "LETTER HEPSALTER PAHLAVI LETTER WAW-AYIN-RESHPSALTER PAHLAVI LETTER ZAYI" + - "NPSALTER PAHLAVI LETTER HETHPSALTER PAHLAVI LETTER YODHPSALTER PAHLAVI L" + - "ETTER KAPHPSALTER PAHLAVI LETTER LAMEDHPSALTER PAHLAVI LETTER MEM-QOPHPS") + ("" + - "ALTER PAHLAVI LETTER NUNPSALTER PAHLAVI LETTER SAMEKHPSALTER PAHLAVI LET" + - "TER PEPSALTER PAHLAVI LETTER SADHEPSALTER PAHLAVI LETTER SHINPSALTER PAH" + - "LAVI LETTER TAWPSALTER PAHLAVI SECTION MARKPSALTER PAHLAVI TURNED SECTIO" + - "N MARKPSALTER PAHLAVI FOUR DOTS WITH CROSSPSALTER PAHLAVI FOUR DOTS WITH" + - " DOTPSALTER PAHLAVI NUMBER ONEPSALTER PAHLAVI NUMBER TWOPSALTER PAHLAVI " + - "NUMBER THREEPSALTER PAHLAVI NUMBER FOURPSALTER PAHLAVI NUMBER TENPSALTER" + - " PAHLAVI NUMBER TWENTYPSALTER PAHLAVI NUMBER ONE HUNDREDOLD TURKIC LETTE" + - "R ORKHON AOLD TURKIC LETTER YENISEI AOLD TURKIC LETTER YENISEI AEOLD TUR" + - "KIC LETTER ORKHON IOLD TURKIC LETTER YENISEI IOLD TURKIC LETTER YENISEI " + - "EOLD TURKIC LETTER ORKHON OOLD TURKIC LETTER ORKHON OEOLD TURKIC LETTER " + - "YENISEI OEOLD TURKIC LETTER ORKHON ABOLD TURKIC LETTER YENISEI ABOLD TUR" + - "KIC LETTER ORKHON AEBOLD TURKIC LETTER YENISEI AEBOLD TURKIC LETTER ORKH" + - "ON AGOLD TURKIC LETTER YENISEI AGOLD TURKIC LETTER ORKHON AEGOLD TURKIC " + - "LETTER YENISEI AEGOLD TURKIC LETTER ORKHON ADOLD TURKIC LETTER YENISEI A" + - "DOLD TURKIC LETTER ORKHON AEDOLD TURKIC LETTER ORKHON EZOLD TURKIC LETTE" + - "R YENISEI EZOLD TURKIC LETTER ORKHON AYOLD TURKIC LETTER YENISEI AYOLD T" + - "URKIC LETTER ORKHON AEYOLD TURKIC LETTER YENISEI AEYOLD TURKIC LETTER OR" + - "KHON AEKOLD TURKIC LETTER YENISEI AEKOLD TURKIC LETTER ORKHON OEKOLD TUR" + - "KIC LETTER YENISEI OEKOLD TURKIC LETTER ORKHON ALOLD TURKIC LETTER YENIS" + - "EI ALOLD TURKIC LETTER ORKHON AELOLD TURKIC LETTER ORKHON ELTOLD TURKIC " + - "LETTER ORKHON EMOLD TURKIC LETTER ORKHON ANOLD TURKIC LETTER ORKHON AENO" + - "LD TURKIC LETTER YENISEI AENOLD TURKIC LETTER ORKHON ENTOLD TURKIC LETTE" + - "R YENISEI ENTOLD TURKIC LETTER ORKHON ENCOLD TURKIC LETTER YENISEI ENCOL" + - "D TURKIC LETTER ORKHON ENYOLD TURKIC LETTER YENISEI ENYOLD TURKIC LETTER" + - " YENISEI ANGOLD TURKIC LETTER ORKHON ENGOLD TURKIC LETTER YENISEI AENGOL" + - "D TURKIC LETTER ORKHON EPOLD TURKIC LETTER ORKHON OPOLD TURKIC LETTER OR" + - "KHON ICOLD TURKIC LETTER ORKHON ECOLD TURKIC LETTER YENISEI ECOLD TURKIC" + - " LETTER ORKHON AQOLD TURKIC LETTER YENISEI AQOLD TURKIC LETTER ORKHON IQ" + - "OLD TURKIC LETTER YENISEI IQOLD TURKIC LETTER ORKHON OQOLD TURKIC LETTER" + - " YENISEI OQOLD TURKIC LETTER ORKHON AROLD TURKIC LETTER YENISEI AROLD TU" + - "RKIC LETTER ORKHON AEROLD TURKIC LETTER ORKHON ASOLD TURKIC LETTER ORKHO" + - "N AESOLD TURKIC LETTER ORKHON ASHOLD TURKIC LETTER YENISEI ASHOLD TURKIC" + - " LETTER ORKHON ESHOLD TURKIC LETTER YENISEI ESHOLD TURKIC LETTER ORKHON " + - "ATOLD TURKIC LETTER YENISEI ATOLD TURKIC LETTER ORKHON AETOLD TURKIC LET" + - "TER YENISEI AETOLD TURKIC LETTER ORKHON OTOLD TURKIC LETTER ORKHON BASHO" + - "LD HUNGARIAN CAPITAL LETTER AOLD HUNGARIAN CAPITAL LETTER AAOLD HUNGARIA" + - "N CAPITAL LETTER EBOLD HUNGARIAN CAPITAL LETTER AMBOLD HUNGARIAN CAPITAL" + - " LETTER ECOLD HUNGARIAN CAPITAL LETTER ENCOLD HUNGARIAN CAPITAL LETTER E" + - "CSOLD HUNGARIAN CAPITAL LETTER EDOLD HUNGARIAN CAPITAL LETTER ANDOLD HUN" + - "GARIAN CAPITAL LETTER EOLD HUNGARIAN CAPITAL LETTER CLOSE EOLD HUNGARIAN" + - " CAPITAL LETTER EEOLD HUNGARIAN CAPITAL LETTER EFOLD HUNGARIAN CAPITAL L" + - "ETTER EGOLD HUNGARIAN CAPITAL LETTER EGYOLD HUNGARIAN CAPITAL LETTER EHO" + - "LD HUNGARIAN CAPITAL LETTER IOLD HUNGARIAN CAPITAL LETTER IIOLD HUNGARIA" + - "N CAPITAL LETTER EJOLD HUNGARIAN CAPITAL LETTER EKOLD HUNGARIAN CAPITAL " + - "LETTER AKOLD HUNGARIAN CAPITAL LETTER UNKOLD HUNGARIAN CAPITAL LETTER EL" + - "OLD HUNGARIAN CAPITAL LETTER ELYOLD HUNGARIAN CAPITAL LETTER EMOLD HUNGA" + - "RIAN CAPITAL LETTER ENOLD HUNGARIAN CAPITAL LETTER ENYOLD HUNGARIAN CAPI" + - "TAL LETTER OOLD HUNGARIAN CAPITAL LETTER OOOLD HUNGARIAN CAPITAL LETTER " + - "NIKOLSBURG OEOLD HUNGARIAN CAPITAL LETTER RUDIMENTA OEOLD HUNGARIAN CAPI" + - "TAL LETTER OEEOLD HUNGARIAN CAPITAL LETTER EPOLD HUNGARIAN CAPITAL LETTE" + - "R EMPOLD HUNGARIAN CAPITAL LETTER EROLD HUNGARIAN CAPITAL LETTER SHORT E" + - "ROLD HUNGARIAN CAPITAL LETTER ESOLD HUNGARIAN CAPITAL LETTER ESZOLD HUNG" + - "ARIAN CAPITAL LETTER ETOLD HUNGARIAN CAPITAL LETTER ENTOLD HUNGARIAN CAP" + - "ITAL LETTER ETYOLD HUNGARIAN CAPITAL LETTER ECHOLD HUNGARIAN CAPITAL LET" + - "TER UOLD HUNGARIAN CAPITAL LETTER UUOLD HUNGARIAN CAPITAL LETTER NIKOLSB" + - "URG UEOLD HUNGARIAN CAPITAL LETTER RUDIMENTA UEOLD HUNGARIAN CAPITAL LET" + - "TER EVOLD HUNGARIAN CAPITAL LETTER EZOLD HUNGARIAN CAPITAL LETTER EZSOLD" + - " HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGNOLD HUNGARIAN CAPITAL LETTER US" + - "OLD HUNGARIAN SMALL LETTER AOLD HUNGARIAN SMALL LETTER AAOLD HUNGARIAN S" + - "MALL LETTER EBOLD HUNGARIAN SMALL LETTER AMBOLD HUNGARIAN SMALL LETTER E" + - "COLD HUNGARIAN SMALL LETTER ENCOLD HUNGARIAN SMALL LETTER ECSOLD HUNGARI" + - "AN SMALL LETTER EDOLD HUNGARIAN SMALL LETTER ANDOLD HUNGARIAN SMALL LETT" + - "ER EOLD HUNGARIAN SMALL LETTER CLOSE EOLD HUNGARIAN SMALL LETTER EEOLD H" + - "UNGARIAN SMALL LETTER EFOLD HUNGARIAN SMALL LETTER EGOLD HUNGARIAN SMALL") + ("" + - " LETTER EGYOLD HUNGARIAN SMALL LETTER EHOLD HUNGARIAN SMALL LETTER IOLD " + - "HUNGARIAN SMALL LETTER IIOLD HUNGARIAN SMALL LETTER EJOLD HUNGARIAN SMAL" + - "L LETTER EKOLD HUNGARIAN SMALL LETTER AKOLD HUNGARIAN SMALL LETTER UNKOL" + - "D HUNGARIAN SMALL LETTER ELOLD HUNGARIAN SMALL LETTER ELYOLD HUNGARIAN S" + - "MALL LETTER EMOLD HUNGARIAN SMALL LETTER ENOLD HUNGARIAN SMALL LETTER EN" + - "YOLD HUNGARIAN SMALL LETTER OOLD HUNGARIAN SMALL LETTER OOOLD HUNGARIAN " + - "SMALL LETTER NIKOLSBURG OEOLD HUNGARIAN SMALL LETTER RUDIMENTA OEOLD HUN" + - "GARIAN SMALL LETTER OEEOLD HUNGARIAN SMALL LETTER EPOLD HUNGARIAN SMALL " + - "LETTER EMPOLD HUNGARIAN SMALL LETTER EROLD HUNGARIAN SMALL LETTER SHORT " + - "EROLD HUNGARIAN SMALL LETTER ESOLD HUNGARIAN SMALL LETTER ESZOLD HUNGARI" + - "AN SMALL LETTER ETOLD HUNGARIAN SMALL LETTER ENTOLD HUNGARIAN SMALL LETT" + - "ER ETYOLD HUNGARIAN SMALL LETTER ECHOLD HUNGARIAN SMALL LETTER UOLD HUNG" + - "ARIAN SMALL LETTER UUOLD HUNGARIAN SMALL LETTER NIKOLSBURG UEOLD HUNGARI" + - "AN SMALL LETTER RUDIMENTA UEOLD HUNGARIAN SMALL LETTER EVOLD HUNGARIAN S" + - "MALL LETTER EZOLD HUNGARIAN SMALL LETTER EZSOLD HUNGARIAN SMALL LETTER E" + - "NT-SHAPED SIGNOLD HUNGARIAN SMALL LETTER USOLD HUNGARIAN NUMBER ONEOLD H" + - "UNGARIAN NUMBER FIVEOLD HUNGARIAN NUMBER TENOLD HUNGARIAN NUMBER FIFTYOL" + - "D HUNGARIAN NUMBER ONE HUNDREDOLD HUNGARIAN NUMBER ONE THOUSANDRUMI DIGI" + - "T ONERUMI DIGIT TWORUMI DIGIT THREERUMI DIGIT FOURRUMI DIGIT FIVERUMI DI" + - "GIT SIXRUMI DIGIT SEVENRUMI DIGIT EIGHTRUMI DIGIT NINERUMI NUMBER TENRUM" + - "I NUMBER TWENTYRUMI NUMBER THIRTYRUMI NUMBER FORTYRUMI NUMBER FIFTYRUMI " + - "NUMBER SIXTYRUMI NUMBER SEVENTYRUMI NUMBER EIGHTYRUMI NUMBER NINETYRUMI " + - "NUMBER ONE HUNDREDRUMI NUMBER TWO HUNDREDRUMI NUMBER THREE HUNDREDRUMI N" + - "UMBER FOUR HUNDREDRUMI NUMBER FIVE HUNDREDRUMI NUMBER SIX HUNDREDRUMI NU" + - "MBER SEVEN HUNDREDRUMI NUMBER EIGHT HUNDREDRUMI NUMBER NINE HUNDREDRUMI " + - "FRACTION ONE HALFRUMI FRACTION ONE QUARTERRUMI FRACTION ONE THIRDRUMI FR" + - "ACTION TWO THIRDSBRAHMI SIGN CANDRABINDUBRAHMI SIGN ANUSVARABRAHMI SIGN " + - "VISARGABRAHMI SIGN JIHVAMULIYABRAHMI SIGN UPADHMANIYABRAHMI LETTER ABRAH" + - "MI LETTER AABRAHMI LETTER IBRAHMI LETTER IIBRAHMI LETTER UBRAHMI LETTER " + - "UUBRAHMI LETTER VOCALIC RBRAHMI LETTER VOCALIC RRBRAHMI LETTER VOCALIC L" + - "BRAHMI LETTER VOCALIC LLBRAHMI LETTER EBRAHMI LETTER AIBRAHMI LETTER OBR" + - "AHMI LETTER AUBRAHMI LETTER KABRAHMI LETTER KHABRAHMI LETTER GABRAHMI LE" + - "TTER GHABRAHMI LETTER NGABRAHMI LETTER CABRAHMI LETTER CHABRAHMI LETTER " + - "JABRAHMI LETTER JHABRAHMI LETTER NYABRAHMI LETTER TTABRAHMI LETTER TTHAB" + - "RAHMI LETTER DDABRAHMI LETTER DDHABRAHMI LETTER NNABRAHMI LETTER TABRAHM" + - "I LETTER THABRAHMI LETTER DABRAHMI LETTER DHABRAHMI LETTER NABRAHMI LETT" + - "ER PABRAHMI LETTER PHABRAHMI LETTER BABRAHMI LETTER BHABRAHMI LETTER MAB" + - "RAHMI LETTER YABRAHMI LETTER RABRAHMI LETTER LABRAHMI LETTER VABRAHMI LE" + - "TTER SHABRAHMI LETTER SSABRAHMI LETTER SABRAHMI LETTER HABRAHMI LETTER L" + - "LABRAHMI LETTER OLD TAMIL LLLABRAHMI LETTER OLD TAMIL RRABRAHMI LETTER O" + - "LD TAMIL NNNABRAHMI VOWEL SIGN AABRAHMI VOWEL SIGN BHATTIPROLU AABRAHMI " + - "VOWEL SIGN IBRAHMI VOWEL SIGN IIBRAHMI VOWEL SIGN UBRAHMI VOWEL SIGN UUB" + - "RAHMI VOWEL SIGN VOCALIC RBRAHMI VOWEL SIGN VOCALIC RRBRAHMI VOWEL SIGN " + - "VOCALIC LBRAHMI VOWEL SIGN VOCALIC LLBRAHMI VOWEL SIGN EBRAHMI VOWEL SIG" + - "N AIBRAHMI VOWEL SIGN OBRAHMI VOWEL SIGN AUBRAHMI VIRAMABRAHMI DANDABRAH" + - "MI DOUBLE DANDABRAHMI PUNCTUATION DOTBRAHMI PUNCTUATION DOUBLE DOTBRAHMI" + - " PUNCTUATION LINEBRAHMI PUNCTUATION CRESCENT BARBRAHMI PUNCTUATION LOTUS" + - "BRAHMI NUMBER ONEBRAHMI NUMBER TWOBRAHMI NUMBER THREEBRAHMI NUMBER FOURB" + - "RAHMI NUMBER FIVEBRAHMI NUMBER SIXBRAHMI NUMBER SEVENBRAHMI NUMBER EIGHT" + - "BRAHMI NUMBER NINEBRAHMI NUMBER TENBRAHMI NUMBER TWENTYBRAHMI NUMBER THI" + - "RTYBRAHMI NUMBER FORTYBRAHMI NUMBER FIFTYBRAHMI NUMBER SIXTYBRAHMI NUMBE" + - "R SEVENTYBRAHMI NUMBER EIGHTYBRAHMI NUMBER NINETYBRAHMI NUMBER ONE HUNDR" + - "EDBRAHMI NUMBER ONE THOUSANDBRAHMI DIGIT ZEROBRAHMI DIGIT ONEBRAHMI DIGI" + - "T TWOBRAHMI DIGIT THREEBRAHMI DIGIT FOURBRAHMI DIGIT FIVEBRAHMI DIGIT SI" + - "XBRAHMI DIGIT SEVENBRAHMI DIGIT EIGHTBRAHMI DIGIT NINEBRAHMI NUMBER JOIN" + - "ERKAITHI SIGN CANDRABINDUKAITHI SIGN ANUSVARAKAITHI SIGN VISARGAKAITHI L" + - "ETTER AKAITHI LETTER AAKAITHI LETTER IKAITHI LETTER IIKAITHI LETTER UKAI" + - "THI LETTER UUKAITHI LETTER EKAITHI LETTER AIKAITHI LETTER OKAITHI LETTER" + - " AUKAITHI LETTER KAKAITHI LETTER KHAKAITHI LETTER GAKAITHI LETTER GHAKAI" + - "THI LETTER NGAKAITHI LETTER CAKAITHI LETTER CHAKAITHI LETTER JAKAITHI LE" + - "TTER JHAKAITHI LETTER NYAKAITHI LETTER TTAKAITHI LETTER TTHAKAITHI LETTE" + - "R DDAKAITHI LETTER DDDHAKAITHI LETTER DDHAKAITHI LETTER RHAKAITHI LETTER" + - " NNAKAITHI LETTER TAKAITHI LETTER THAKAITHI LETTER DAKAITHI LETTER DHAKA" + - "ITHI LETTER NAKAITHI LETTER PAKAITHI LETTER PHAKAITHI LETTER BAKAITHI LE") + ("" + - "TTER BHAKAITHI LETTER MAKAITHI LETTER YAKAITHI LETTER RAKAITHI LETTER LA" + - "KAITHI LETTER VAKAITHI LETTER SHAKAITHI LETTER SSAKAITHI LETTER SAKAITHI" + - " LETTER HAKAITHI VOWEL SIGN AAKAITHI VOWEL SIGN IKAITHI VOWEL SIGN IIKAI" + - "THI VOWEL SIGN UKAITHI VOWEL SIGN UUKAITHI VOWEL SIGN EKAITHI VOWEL SIGN" + - " AIKAITHI VOWEL SIGN OKAITHI VOWEL SIGN AUKAITHI SIGN VIRAMAKAITHI SIGN " + - "NUKTAKAITHI ABBREVIATION SIGNKAITHI ENUMERATION SIGNKAITHI NUMBER SIGNKA" + - "ITHI SECTION MARKKAITHI DOUBLE SECTION MARKKAITHI DANDAKAITHI DOUBLE DAN" + - "DASORA SOMPENG LETTER SAHSORA SOMPENG LETTER TAHSORA SOMPENG LETTER BAHS" + - "ORA SOMPENG LETTER CAHSORA SOMPENG LETTER DAHSORA SOMPENG LETTER GAHSORA" + - " SOMPENG LETTER MAHSORA SOMPENG LETTER NGAHSORA SOMPENG LETTER LAHSORA S" + - "OMPENG LETTER NAHSORA SOMPENG LETTER VAHSORA SOMPENG LETTER PAHSORA SOMP" + - "ENG LETTER YAHSORA SOMPENG LETTER RAHSORA SOMPENG LETTER HAHSORA SOMPENG" + - " LETTER KAHSORA SOMPENG LETTER JAHSORA SOMPENG LETTER NYAHSORA SOMPENG L" + - "ETTER AHSORA SOMPENG LETTER EEHSORA SOMPENG LETTER IHSORA SOMPENG LETTER" + - " UHSORA SOMPENG LETTER OHSORA SOMPENG LETTER EHSORA SOMPENG LETTER MAESO" + - "RA SOMPENG DIGIT ZEROSORA SOMPENG DIGIT ONESORA SOMPENG DIGIT TWOSORA SO" + - "MPENG DIGIT THREESORA SOMPENG DIGIT FOURSORA SOMPENG DIGIT FIVESORA SOMP" + - "ENG DIGIT SIXSORA SOMPENG DIGIT SEVENSORA SOMPENG DIGIT EIGHTSORA SOMPEN" + - "G DIGIT NINECHAKMA SIGN CANDRABINDUCHAKMA SIGN ANUSVARACHAKMA SIGN VISAR" + - "GACHAKMA LETTER AACHAKMA LETTER ICHAKMA LETTER UCHAKMA LETTER ECHAKMA LE" + - "TTER KAACHAKMA LETTER KHAACHAKMA LETTER GAACHAKMA LETTER GHAACHAKMA LETT" + - "ER NGAACHAKMA LETTER CAACHAKMA LETTER CHAACHAKMA LETTER JAACHAKMA LETTER" + - " JHAACHAKMA LETTER NYAACHAKMA LETTER TTAACHAKMA LETTER TTHAACHAKMA LETTE" + - "R DDAACHAKMA LETTER DDHAACHAKMA LETTER NNAACHAKMA LETTER TAACHAKMA LETTE" + - "R THAACHAKMA LETTER DAACHAKMA LETTER DHAACHAKMA LETTER NAACHAKMA LETTER " + - "PAACHAKMA LETTER PHAACHAKMA LETTER BAACHAKMA LETTER BHAACHAKMA LETTER MA" + - "ACHAKMA LETTER YYAACHAKMA LETTER YAACHAKMA LETTER RAACHAKMA LETTER LAACH" + - "AKMA LETTER WAACHAKMA LETTER SAACHAKMA LETTER HAACHAKMA VOWEL SIGN ACHAK" + - "MA VOWEL SIGN ICHAKMA VOWEL SIGN IICHAKMA VOWEL SIGN UCHAKMA VOWEL SIGN " + - "UUCHAKMA VOWEL SIGN ECHAKMA VOWEL SIGN AICHAKMA VOWEL SIGN OCHAKMA VOWEL" + - " SIGN AUCHAKMA VOWEL SIGN OICHAKMA O MARKCHAKMA AU MARKCHAKMA VIRAMACHAK" + - "MA MAAYYAACHAKMA DIGIT ZEROCHAKMA DIGIT ONECHAKMA DIGIT TWOCHAKMA DIGIT " + - "THREECHAKMA DIGIT FOURCHAKMA DIGIT FIVECHAKMA DIGIT SIXCHAKMA DIGIT SEVE" + - "NCHAKMA DIGIT EIGHTCHAKMA DIGIT NINECHAKMA SECTION MARKCHAKMA DANDACHAKM" + - "A DOUBLE DANDACHAKMA QUESTION MARKMAHAJANI LETTER AMAHAJANI LETTER IMAHA" + - "JANI LETTER UMAHAJANI LETTER EMAHAJANI LETTER OMAHAJANI LETTER KAMAHAJAN" + - "I LETTER KHAMAHAJANI LETTER GAMAHAJANI LETTER GHAMAHAJANI LETTER CAMAHAJ" + - "ANI LETTER CHAMAHAJANI LETTER JAMAHAJANI LETTER JHAMAHAJANI LETTER NYAMA" + - "HAJANI LETTER TTAMAHAJANI LETTER TTHAMAHAJANI LETTER DDAMAHAJANI LETTER " + - "DDHAMAHAJANI LETTER NNAMAHAJANI LETTER TAMAHAJANI LETTER THAMAHAJANI LET" + - "TER DAMAHAJANI LETTER DHAMAHAJANI LETTER NAMAHAJANI LETTER PAMAHAJANI LE" + - "TTER PHAMAHAJANI LETTER BAMAHAJANI LETTER BHAMAHAJANI LETTER MAMAHAJANI " + - "LETTER RAMAHAJANI LETTER LAMAHAJANI LETTER VAMAHAJANI LETTER SAMAHAJANI " + - "LETTER HAMAHAJANI LETTER RRAMAHAJANI SIGN NUKTAMAHAJANI ABBREVIATION SIG" + - "NMAHAJANI SECTION MARKMAHAJANI LIGATURE SHRISHARADA SIGN CANDRABINDUSHAR" + - "ADA SIGN ANUSVARASHARADA SIGN VISARGASHARADA LETTER ASHARADA LETTER AASH" + - "ARADA LETTER ISHARADA LETTER IISHARADA LETTER USHARADA LETTER UUSHARADA " + - "LETTER VOCALIC RSHARADA LETTER VOCALIC RRSHARADA LETTER VOCALIC LSHARADA" + - " LETTER VOCALIC LLSHARADA LETTER ESHARADA LETTER AISHARADA LETTER OSHARA" + - "DA LETTER AUSHARADA LETTER KASHARADA LETTER KHASHARADA LETTER GASHARADA " + - "LETTER GHASHARADA LETTER NGASHARADA LETTER CASHARADA LETTER CHASHARADA L" + - "ETTER JASHARADA LETTER JHASHARADA LETTER NYASHARADA LETTER TTASHARADA LE" + - "TTER TTHASHARADA LETTER DDASHARADA LETTER DDHASHARADA LETTER NNASHARADA " + - "LETTER TASHARADA LETTER THASHARADA LETTER DASHARADA LETTER DHASHARADA LE" + - "TTER NASHARADA LETTER PASHARADA LETTER PHASHARADA LETTER BASHARADA LETTE" + - "R BHASHARADA LETTER MASHARADA LETTER YASHARADA LETTER RASHARADA LETTER L" + - "ASHARADA LETTER LLASHARADA LETTER VASHARADA LETTER SHASHARADA LETTER SSA" + - "SHARADA LETTER SASHARADA LETTER HASHARADA VOWEL SIGN AASHARADA VOWEL SIG" + - "N ISHARADA VOWEL SIGN IISHARADA VOWEL SIGN USHARADA VOWEL SIGN UUSHARADA" + - " VOWEL SIGN VOCALIC RSHARADA VOWEL SIGN VOCALIC RRSHARADA VOWEL SIGN VOC" + - "ALIC LSHARADA VOWEL SIGN VOCALIC LLSHARADA VOWEL SIGN ESHARADA VOWEL SIG" + - "N AISHARADA VOWEL SIGN OSHARADA VOWEL SIGN AUSHARADA SIGN VIRAMASHARADA " + - "SIGN AVAGRAHASHARADA SIGN JIHVAMULIYASHARADA SIGN UPADHMANIYASHARADA OMS" + - "HARADA DANDASHARADA DOUBLE DANDASHARADA ABBREVIATION SIGNSHARADA SEPARAT") + ("" + - "ORSHARADA SANDHI MARKSHARADA SIGN NUKTASHARADA VOWEL MODIFIER MARKSHARAD" + - "A EXTRA SHORT VOWEL MARKSHARADA SUTRA MARKSHARADA DIGIT ZEROSHARADA DIGI" + - "T ONESHARADA DIGIT TWOSHARADA DIGIT THREESHARADA DIGIT FOURSHARADA DIGIT" + - " FIVESHARADA DIGIT SIXSHARADA DIGIT SEVENSHARADA DIGIT EIGHTSHARADA DIGI" + - "T NINESHARADA EKAMSHARADA SIGN SIDDHAMSHARADA HEADSTROKESHARADA CONTINUA" + - "TION SIGNSHARADA SECTION MARK-1SHARADA SECTION MARK-2SINHALA ARCHAIC DIG" + - "IT ONESINHALA ARCHAIC DIGIT TWOSINHALA ARCHAIC DIGIT THREESINHALA ARCHAI" + - "C DIGIT FOURSINHALA ARCHAIC DIGIT FIVESINHALA ARCHAIC DIGIT SIXSINHALA A" + - "RCHAIC DIGIT SEVENSINHALA ARCHAIC DIGIT EIGHTSINHALA ARCHAIC DIGIT NINES" + - "INHALA ARCHAIC NUMBER TENSINHALA ARCHAIC NUMBER TWENTYSINHALA ARCHAIC NU" + - "MBER THIRTYSINHALA ARCHAIC NUMBER FORTYSINHALA ARCHAIC NUMBER FIFTYSINHA" + - "LA ARCHAIC NUMBER SIXTYSINHALA ARCHAIC NUMBER SEVENTYSINHALA ARCHAIC NUM" + - "BER EIGHTYSINHALA ARCHAIC NUMBER NINETYSINHALA ARCHAIC NUMBER ONE HUNDRE" + - "DSINHALA ARCHAIC NUMBER ONE THOUSANDKHOJKI LETTER AKHOJKI LETTER AAKHOJK" + - "I LETTER IKHOJKI LETTER UKHOJKI LETTER EKHOJKI LETTER AIKHOJKI LETTER OK" + - "HOJKI LETTER AUKHOJKI LETTER KAKHOJKI LETTER KHAKHOJKI LETTER GAKHOJKI L" + - "ETTER GGAKHOJKI LETTER GHAKHOJKI LETTER NGAKHOJKI LETTER CAKHOJKI LETTER" + - " CHAKHOJKI LETTER JAKHOJKI LETTER JJAKHOJKI LETTER NYAKHOJKI LETTER TTAK" + - "HOJKI LETTER TTHAKHOJKI LETTER DDAKHOJKI LETTER DDHAKHOJKI LETTER NNAKHO" + - "JKI LETTER TAKHOJKI LETTER THAKHOJKI LETTER DAKHOJKI LETTER DDDAKHOJKI L" + - "ETTER DHAKHOJKI LETTER NAKHOJKI LETTER PAKHOJKI LETTER PHAKHOJKI LETTER " + - "BAKHOJKI LETTER BBAKHOJKI LETTER BHAKHOJKI LETTER MAKHOJKI LETTER YAKHOJ" + - "KI LETTER RAKHOJKI LETTER LAKHOJKI LETTER VAKHOJKI LETTER SAKHOJKI LETTE" + - "R HAKHOJKI LETTER LLAKHOJKI VOWEL SIGN AAKHOJKI VOWEL SIGN IKHOJKI VOWEL" + - " SIGN IIKHOJKI VOWEL SIGN UKHOJKI VOWEL SIGN EKHOJKI VOWEL SIGN AIKHOJKI" + - " VOWEL SIGN OKHOJKI VOWEL SIGN AUKHOJKI SIGN ANUSVARAKHOJKI SIGN VIRAMAK" + - "HOJKI SIGN NUKTAKHOJKI SIGN SHADDAKHOJKI DANDAKHOJKI DOUBLE DANDAKHOJKI " + - "WORD SEPARATORKHOJKI SECTION MARKKHOJKI DOUBLE SECTION MARKKHOJKI ABBREV" + - "IATION SIGNKHOJKI SIGN SUKUNMULTANI LETTER AMULTANI LETTER IMULTANI LETT" + - "ER UMULTANI LETTER EMULTANI LETTER KAMULTANI LETTER KHAMULTANI LETTER GA" + - "MULTANI LETTER GHAMULTANI LETTER CAMULTANI LETTER CHAMULTANI LETTER JAMU" + - "LTANI LETTER JJAMULTANI LETTER NYAMULTANI LETTER TTAMULTANI LETTER TTHAM" + - "ULTANI LETTER DDAMULTANI LETTER DDDAMULTANI LETTER DDHAMULTANI LETTER NN" + - "AMULTANI LETTER TAMULTANI LETTER THAMULTANI LETTER DAMULTANI LETTER DHAM" + - "ULTANI LETTER NAMULTANI LETTER PAMULTANI LETTER PHAMULTANI LETTER BAMULT" + - "ANI LETTER BHAMULTANI LETTER MAMULTANI LETTER YAMULTANI LETTER RAMULTANI" + - " LETTER LAMULTANI LETTER VAMULTANI LETTER SAMULTANI LETTER HAMULTANI LET" + - "TER RRAMULTANI LETTER RHAMULTANI SECTION MARKKHUDAWADI LETTER AKHUDAWADI" + - " LETTER AAKHUDAWADI LETTER IKHUDAWADI LETTER IIKHUDAWADI LETTER UKHUDAWA" + - "DI LETTER UUKHUDAWADI LETTER EKHUDAWADI LETTER AIKHUDAWADI LETTER OKHUDA" + - "WADI LETTER AUKHUDAWADI LETTER KAKHUDAWADI LETTER KHAKHUDAWADI LETTER GA" + - "KHUDAWADI LETTER GGAKHUDAWADI LETTER GHAKHUDAWADI LETTER NGAKHUDAWADI LE" + - "TTER CAKHUDAWADI LETTER CHAKHUDAWADI LETTER JAKHUDAWADI LETTER JJAKHUDAW" + - "ADI LETTER JHAKHUDAWADI LETTER NYAKHUDAWADI LETTER TTAKHUDAWADI LETTER T" + - "THAKHUDAWADI LETTER DDAKHUDAWADI LETTER DDDAKHUDAWADI LETTER RRAKHUDAWAD" + - "I LETTER DDHAKHUDAWADI LETTER NNAKHUDAWADI LETTER TAKHUDAWADI LETTER THA" + - "KHUDAWADI LETTER DAKHUDAWADI LETTER DHAKHUDAWADI LETTER NAKHUDAWADI LETT" + - "ER PAKHUDAWADI LETTER PHAKHUDAWADI LETTER BAKHUDAWADI LETTER BBAKHUDAWAD" + - "I LETTER BHAKHUDAWADI LETTER MAKHUDAWADI LETTER YAKHUDAWADI LETTER RAKHU" + - "DAWADI LETTER LAKHUDAWADI LETTER VAKHUDAWADI LETTER SHAKHUDAWADI LETTER " + - "SAKHUDAWADI LETTER HAKHUDAWADI SIGN ANUSVARAKHUDAWADI VOWEL SIGN AAKHUDA" + - "WADI VOWEL SIGN IKHUDAWADI VOWEL SIGN IIKHUDAWADI VOWEL SIGN UKHUDAWADI " + - "VOWEL SIGN UUKHUDAWADI VOWEL SIGN EKHUDAWADI VOWEL SIGN AIKHUDAWADI VOWE" + - "L SIGN OKHUDAWADI VOWEL SIGN AUKHUDAWADI SIGN NUKTAKHUDAWADI SIGN VIRAMA" + - "KHUDAWADI DIGIT ZEROKHUDAWADI DIGIT ONEKHUDAWADI DIGIT TWOKHUDAWADI DIGI" + - "T THREEKHUDAWADI DIGIT FOURKHUDAWADI DIGIT FIVEKHUDAWADI DIGIT SIXKHUDAW" + - "ADI DIGIT SEVENKHUDAWADI DIGIT EIGHTKHUDAWADI DIGIT NINEGRANTHA SIGN COM" + - "BINING ANUSVARA ABOVEGRANTHA SIGN CANDRABINDUGRANTHA SIGN ANUSVARAGRANTH" + - "A SIGN VISARGAGRANTHA LETTER AGRANTHA LETTER AAGRANTHA LETTER IGRANTHA L" + - "ETTER IIGRANTHA LETTER UGRANTHA LETTER UUGRANTHA LETTER VOCALIC RGRANTHA" + - " LETTER VOCALIC LGRANTHA LETTER EEGRANTHA LETTER AIGRANTHA LETTER OOGRAN" + - "THA LETTER AUGRANTHA LETTER KAGRANTHA LETTER KHAGRANTHA LETTER GAGRANTHA" + - " LETTER GHAGRANTHA LETTER NGAGRANTHA LETTER CAGRANTHA LETTER CHAGRANTHA " + - "LETTER JAGRANTHA LETTER JHAGRANTHA LETTER NYAGRANTHA LETTER TTAGRANTHA L") + ("" + - "ETTER TTHAGRANTHA LETTER DDAGRANTHA LETTER DDHAGRANTHA LETTER NNAGRANTHA" + - " LETTER TAGRANTHA LETTER THAGRANTHA LETTER DAGRANTHA LETTER DHAGRANTHA L" + - "ETTER NAGRANTHA LETTER PAGRANTHA LETTER PHAGRANTHA LETTER BAGRANTHA LETT" + - "ER BHAGRANTHA LETTER MAGRANTHA LETTER YAGRANTHA LETTER RAGRANTHA LETTER " + - "LAGRANTHA LETTER LLAGRANTHA LETTER VAGRANTHA LETTER SHAGRANTHA LETTER SS" + - "AGRANTHA LETTER SAGRANTHA LETTER HAGRANTHA SIGN NUKTAGRANTHA SIGN AVAGRA" + - "HAGRANTHA VOWEL SIGN AAGRANTHA VOWEL SIGN IGRANTHA VOWEL SIGN IIGRANTHA " + - "VOWEL SIGN UGRANTHA VOWEL SIGN UUGRANTHA VOWEL SIGN VOCALIC RGRANTHA VOW" + - "EL SIGN VOCALIC RRGRANTHA VOWEL SIGN EEGRANTHA VOWEL SIGN AIGRANTHA VOWE" + - "L SIGN OOGRANTHA VOWEL SIGN AUGRANTHA SIGN VIRAMAGRANTHA OMGRANTHA AU LE" + - "NGTH MARKGRANTHA SIGN PLUTAGRANTHA LETTER VEDIC ANUSVARAGRANTHA LETTER V" + - "EDIC DOUBLE ANUSVARAGRANTHA LETTER VOCALIC RRGRANTHA LETTER VOCALIC LLGR" + - "ANTHA VOWEL SIGN VOCALIC LGRANTHA VOWEL SIGN VOCALIC LLCOMBINING GRANTHA" + - " DIGIT ZEROCOMBINING GRANTHA DIGIT ONECOMBINING GRANTHA DIGIT TWOCOMBINI" + - "NG GRANTHA DIGIT THREECOMBINING GRANTHA DIGIT FOURCOMBINING GRANTHA DIGI" + - "T FIVECOMBINING GRANTHA DIGIT SIXCOMBINING GRANTHA LETTER ACOMBINING GRA" + - "NTHA LETTER KACOMBINING GRANTHA LETTER NACOMBINING GRANTHA LETTER VICOMB" + - "INING GRANTHA LETTER PANEWA LETTER ANEWA LETTER AANEWA LETTER INEWA LETT" + - "ER IINEWA LETTER UNEWA LETTER UUNEWA LETTER VOCALIC RNEWA LETTER VOCALIC" + - " RRNEWA LETTER VOCALIC LNEWA LETTER VOCALIC LLNEWA LETTER ENEWA LETTER A" + - "INEWA LETTER ONEWA LETTER AUNEWA LETTER KANEWA LETTER KHANEWA LETTER GAN" + - "EWA LETTER GHANEWA LETTER NGANEWA LETTER NGHANEWA LETTER CANEWA LETTER C" + - "HANEWA LETTER JANEWA LETTER JHANEWA LETTER NYANEWA LETTER NYHANEWA LETTE" + - "R TTANEWA LETTER TTHANEWA LETTER DDANEWA LETTER DDHANEWA LETTER NNANEWA " + - "LETTER TANEWA LETTER THANEWA LETTER DANEWA LETTER DHANEWA LETTER NANEWA " + - "LETTER NHANEWA LETTER PANEWA LETTER PHANEWA LETTER BANEWA LETTER BHANEWA" + - " LETTER MANEWA LETTER MHANEWA LETTER YANEWA LETTER RANEWA LETTER RHANEWA" + - " LETTER LANEWA LETTER LHANEWA LETTER WANEWA LETTER SHANEWA LETTER SSANEW" + - "A LETTER SANEWA LETTER HANEWA VOWEL SIGN AANEWA VOWEL SIGN INEWA VOWEL S" + - "IGN IINEWA VOWEL SIGN UNEWA VOWEL SIGN UUNEWA VOWEL SIGN VOCALIC RNEWA V" + - "OWEL SIGN VOCALIC RRNEWA VOWEL SIGN VOCALIC LNEWA VOWEL SIGN VOCALIC LLN" + - "EWA VOWEL SIGN ENEWA VOWEL SIGN AINEWA VOWEL SIGN ONEWA VOWEL SIGN AUNEW" + - "A SIGN VIRAMANEWA SIGN CANDRABINDUNEWA SIGN ANUSVARANEWA SIGN VISARGANEW" + - "A SIGN NUKTANEWA SIGN AVAGRAHANEWA SIGN FINAL ANUSVARANEWA OMNEWA SIDDHI" + - "NEWA DANDANEWA DOUBLE DANDANEWA COMMANEWA GAP FILLERNEWA ABBREVIATION SI" + - "GNNEWA DIGIT ZERONEWA DIGIT ONENEWA DIGIT TWONEWA DIGIT THREENEWA DIGIT " + - "FOURNEWA DIGIT FIVENEWA DIGIT SIXNEWA DIGIT SEVENNEWA DIGIT EIGHTNEWA DI" + - "GIT NINENEWA PLACEHOLDER MARKNEWA INSERTION SIGNTIRHUTA ANJITIRHUTA LETT" + - "ER ATIRHUTA LETTER AATIRHUTA LETTER ITIRHUTA LETTER IITIRHUTA LETTER UTI" + - "RHUTA LETTER UUTIRHUTA LETTER VOCALIC RTIRHUTA LETTER VOCALIC RRTIRHUTA " + - "LETTER VOCALIC LTIRHUTA LETTER VOCALIC LLTIRHUTA LETTER ETIRHUTA LETTER " + - "AITIRHUTA LETTER OTIRHUTA LETTER AUTIRHUTA LETTER KATIRHUTA LETTER KHATI" + - "RHUTA LETTER GATIRHUTA LETTER GHATIRHUTA LETTER NGATIRHUTA LETTER CATIRH" + - "UTA LETTER CHATIRHUTA LETTER JATIRHUTA LETTER JHATIRHUTA LETTER NYATIRHU" + - "TA LETTER TTATIRHUTA LETTER TTHATIRHUTA LETTER DDATIRHUTA LETTER DDHATIR" + - "HUTA LETTER NNATIRHUTA LETTER TATIRHUTA LETTER THATIRHUTA LETTER DATIRHU" + - "TA LETTER DHATIRHUTA LETTER NATIRHUTA LETTER PATIRHUTA LETTER PHATIRHUTA" + - " LETTER BATIRHUTA LETTER BHATIRHUTA LETTER MATIRHUTA LETTER YATIRHUTA LE" + - "TTER RATIRHUTA LETTER LATIRHUTA LETTER VATIRHUTA LETTER SHATIRHUTA LETTE" + - "R SSATIRHUTA LETTER SATIRHUTA LETTER HATIRHUTA VOWEL SIGN AATIRHUTA VOWE" + - "L SIGN ITIRHUTA VOWEL SIGN IITIRHUTA VOWEL SIGN UTIRHUTA VOWEL SIGN UUTI" + - "RHUTA VOWEL SIGN VOCALIC RTIRHUTA VOWEL SIGN VOCALIC RRTIRHUTA VOWEL SIG" + - "N VOCALIC LTIRHUTA VOWEL SIGN VOCALIC LLTIRHUTA VOWEL SIGN ETIRHUTA VOWE" + - "L SIGN SHORT ETIRHUTA VOWEL SIGN AITIRHUTA VOWEL SIGN OTIRHUTA VOWEL SIG" + - "N SHORT OTIRHUTA VOWEL SIGN AUTIRHUTA SIGN CANDRABINDUTIRHUTA SIGN ANUSV" + - "ARATIRHUTA SIGN VISARGATIRHUTA SIGN VIRAMATIRHUTA SIGN NUKTATIRHUTA SIGN" + - " AVAGRAHATIRHUTA GVANGTIRHUTA ABBREVIATION SIGNTIRHUTA OMTIRHUTA DIGIT Z" + - "EROTIRHUTA DIGIT ONETIRHUTA DIGIT TWOTIRHUTA DIGIT THREETIRHUTA DIGIT FO" + - "URTIRHUTA DIGIT FIVETIRHUTA DIGIT SIXTIRHUTA DIGIT SEVENTIRHUTA DIGIT EI" + - "GHTTIRHUTA DIGIT NINESIDDHAM LETTER ASIDDHAM LETTER AASIDDHAM LETTER ISI" + - "DDHAM LETTER IISIDDHAM LETTER USIDDHAM LETTER UUSIDDHAM LETTER VOCALIC R" + - "SIDDHAM LETTER VOCALIC RRSIDDHAM LETTER VOCALIC LSIDDHAM LETTER VOCALIC " + - "LLSIDDHAM LETTER ESIDDHAM LETTER AISIDDHAM LETTER OSIDDHAM LETTER AUSIDD" + - "HAM LETTER KASIDDHAM LETTER KHASIDDHAM LETTER GASIDDHAM LETTER GHASIDDHA") + ("" + - "M LETTER NGASIDDHAM LETTER CASIDDHAM LETTER CHASIDDHAM LETTER JASIDDHAM " + - "LETTER JHASIDDHAM LETTER NYASIDDHAM LETTER TTASIDDHAM LETTER TTHASIDDHAM" + - " LETTER DDASIDDHAM LETTER DDHASIDDHAM LETTER NNASIDDHAM LETTER TASIDDHAM" + - " LETTER THASIDDHAM LETTER DASIDDHAM LETTER DHASIDDHAM LETTER NASIDDHAM L" + - "ETTER PASIDDHAM LETTER PHASIDDHAM LETTER BASIDDHAM LETTER BHASIDDHAM LET" + - "TER MASIDDHAM LETTER YASIDDHAM LETTER RASIDDHAM LETTER LASIDDHAM LETTER " + - "VASIDDHAM LETTER SHASIDDHAM LETTER SSASIDDHAM LETTER SASIDDHAM LETTER HA" + - "SIDDHAM VOWEL SIGN AASIDDHAM VOWEL SIGN ISIDDHAM VOWEL SIGN IISIDDHAM VO" + - "WEL SIGN USIDDHAM VOWEL SIGN UUSIDDHAM VOWEL SIGN VOCALIC RSIDDHAM VOWEL" + - " SIGN VOCALIC RRSIDDHAM VOWEL SIGN ESIDDHAM VOWEL SIGN AISIDDHAM VOWEL S" + - "IGN OSIDDHAM VOWEL SIGN AUSIDDHAM SIGN CANDRABINDUSIDDHAM SIGN ANUSVARAS" + - "IDDHAM SIGN VISARGASIDDHAM SIGN VIRAMASIDDHAM SIGN NUKTASIDDHAM SIGN SID" + - "DHAMSIDDHAM DANDASIDDHAM DOUBLE DANDASIDDHAM SEPARATOR DOTSIDDHAM SEPARA" + - "TOR BARSIDDHAM REPETITION MARK-1SIDDHAM REPETITION MARK-2SIDDHAM REPETIT" + - "ION MARK-3SIDDHAM END OF TEXT MARKSIDDHAM SECTION MARK WITH TRIDENT AND " + - "U-SHAPED ORNAMENTSSIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS" + - "SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTSSIDDHAM SECTION MARK " + - "WITH RAYS AND DOTTED DOUBLE CRESCENTSSIDDHAM SECTION MARK WITH RAYS AND " + - "DOTTED TRIPLE CRESCENTSSIDDHAM SECTION MARK DOUBLE RINGSIDDHAM SECTION M" + - "ARK DOUBLE RING WITH RAYSSIDDHAM SECTION MARK WITH DOUBLE CRESCENTSSIDDH" + - "AM SECTION MARK WITH TRIPLE CRESCENTSSIDDHAM SECTION MARK WITH QUADRUPLE" + - " CRESCENTSSIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTSSIDDHAM SECTION MA" + - "RK WITH CIRCLES AND RAYSSIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOS" + - "URESSIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURESSIDDHAM LETTER " + - "THREE-CIRCLE ALTERNATE ISIDDHAM LETTER TWO-CIRCLE ALTERNATE ISIDDHAM LET" + - "TER TWO-CIRCLE ALTERNATE IISIDDHAM LETTER ALTERNATE USIDDHAM VOWEL SIGN " + - "ALTERNATE USIDDHAM VOWEL SIGN ALTERNATE UUMODI LETTER AMODI LETTER AAMOD" + - "I LETTER IMODI LETTER IIMODI LETTER UMODI LETTER UUMODI LETTER VOCALIC R" + - "MODI LETTER VOCALIC RRMODI LETTER VOCALIC LMODI LETTER VOCALIC LLMODI LE" + - "TTER EMODI LETTER AIMODI LETTER OMODI LETTER AUMODI LETTER KAMODI LETTER" + - " KHAMODI LETTER GAMODI LETTER GHAMODI LETTER NGAMODI LETTER CAMODI LETTE" + - "R CHAMODI LETTER JAMODI LETTER JHAMODI LETTER NYAMODI LETTER TTAMODI LET" + - "TER TTHAMODI LETTER DDAMODI LETTER DDHAMODI LETTER NNAMODI LETTER TAMODI" + - " LETTER THAMODI LETTER DAMODI LETTER DHAMODI LETTER NAMODI LETTER PAMODI" + - " LETTER PHAMODI LETTER BAMODI LETTER BHAMODI LETTER MAMODI LETTER YAMODI" + - " LETTER RAMODI LETTER LAMODI LETTER VAMODI LETTER SHAMODI LETTER SSAMODI" + - " LETTER SAMODI LETTER HAMODI LETTER LLAMODI VOWEL SIGN AAMODI VOWEL SIGN" + - " IMODI VOWEL SIGN IIMODI VOWEL SIGN UMODI VOWEL SIGN UUMODI VOWEL SIGN V" + - "OCALIC RMODI VOWEL SIGN VOCALIC RRMODI VOWEL SIGN VOCALIC LMODI VOWEL SI" + - "GN VOCALIC LLMODI VOWEL SIGN EMODI VOWEL SIGN AIMODI VOWEL SIGN OMODI VO" + - "WEL SIGN AUMODI SIGN ANUSVARAMODI SIGN VISARGAMODI SIGN VIRAMAMODI SIGN " + - "ARDHACANDRAMODI DANDAMODI DOUBLE DANDAMODI ABBREVIATION SIGNMODI SIGN HU" + - "VAMODI DIGIT ZEROMODI DIGIT ONEMODI DIGIT TWOMODI DIGIT THREEMODI DIGIT " + - "FOURMODI DIGIT FIVEMODI DIGIT SIXMODI DIGIT SEVENMODI DIGIT EIGHTMODI DI" + - "GIT NINEMONGOLIAN BIRGA WITH ORNAMENTMONGOLIAN ROTATED BIRGAMONGOLIAN DO" + - "UBLE BIRGA WITH ORNAMENTMONGOLIAN TRIPLE BIRGA WITH ORNAMENTMONGOLIAN BI" + - "RGA WITH DOUBLE ORNAMENTMONGOLIAN ROTATED BIRGA WITH ORNAMENTMONGOLIAN R" + - "OTATED BIRGA WITH DOUBLE ORNAMENTMONGOLIAN INVERTED BIRGAMONGOLIAN INVER" + - "TED BIRGA WITH DOUBLE ORNAMENTMONGOLIAN SWIRL BIRGAMONGOLIAN SWIRL BIRGA" + - " WITH ORNAMENTMONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENTMONGOLIAN TURNED" + - " SWIRL BIRGA WITH DOUBLE ORNAMENTTAKRI LETTER ATAKRI LETTER AATAKRI LETT" + - "ER ITAKRI LETTER IITAKRI LETTER UTAKRI LETTER UUTAKRI LETTER ETAKRI LETT" + - "ER AITAKRI LETTER OTAKRI LETTER AUTAKRI LETTER KATAKRI LETTER KHATAKRI L" + - "ETTER GATAKRI LETTER GHATAKRI LETTER NGATAKRI LETTER CATAKRI LETTER CHAT" + - "AKRI LETTER JATAKRI LETTER JHATAKRI LETTER NYATAKRI LETTER TTATAKRI LETT" + - "ER TTHATAKRI LETTER DDATAKRI LETTER DDHATAKRI LETTER NNATAKRI LETTER TAT" + - "AKRI LETTER THATAKRI LETTER DATAKRI LETTER DHATAKRI LETTER NATAKRI LETTE" + - "R PATAKRI LETTER PHATAKRI LETTER BATAKRI LETTER BHATAKRI LETTER MATAKRI " + - "LETTER YATAKRI LETTER RATAKRI LETTER LATAKRI LETTER VATAKRI LETTER SHATA" + - "KRI LETTER SATAKRI LETTER HATAKRI LETTER RRATAKRI SIGN ANUSVARATAKRI SIG" + - "N VISARGATAKRI VOWEL SIGN AATAKRI VOWEL SIGN ITAKRI VOWEL SIGN IITAKRI V" + - "OWEL SIGN UTAKRI VOWEL SIGN UUTAKRI VOWEL SIGN ETAKRI VOWEL SIGN AITAKRI" + - " VOWEL SIGN OTAKRI VOWEL SIGN AUTAKRI SIGN VIRAMATAKRI SIGN NUKTATAKRI D" + - "IGIT ZEROTAKRI DIGIT ONETAKRI DIGIT TWOTAKRI DIGIT THREETAKRI DIGIT FOUR") + ("" + - "TAKRI DIGIT FIVETAKRI DIGIT SIXTAKRI DIGIT SEVENTAKRI DIGIT EIGHTTAKRI D" + - "IGIT NINEAHOM LETTER KAAHOM LETTER KHAAHOM LETTER NGAAHOM LETTER NAAHOM " + - "LETTER TAAHOM LETTER ALTERNATE TAAHOM LETTER PAAHOM LETTER PHAAHOM LETTE" + - "R BAAHOM LETTER MAAHOM LETTER JAAHOM LETTER CHAAHOM LETTER THAAHOM LETTE" + - "R RAAHOM LETTER LAAHOM LETTER SAAHOM LETTER NYAAHOM LETTER HAAHOM LETTER" + - " AAHOM LETTER DAAHOM LETTER DHAAHOM LETTER GAAHOM LETTER ALTERNATE GAAHO" + - "M LETTER GHAAHOM LETTER BHAAHOM LETTER JHAAHOM CONSONANT SIGN MEDIAL LAA" + - "HOM CONSONANT SIGN MEDIAL RAAHOM CONSONANT SIGN MEDIAL LIGATING RAAHOM V" + - "OWEL SIGN AAHOM VOWEL SIGN AAAHOM VOWEL SIGN IAHOM VOWEL SIGN IIAHOM VOW" + - "EL SIGN UAHOM VOWEL SIGN UUAHOM VOWEL SIGN EAHOM VOWEL SIGN AWAHOM VOWEL" + - " SIGN OAHOM VOWEL SIGN AIAHOM VOWEL SIGN AMAHOM SIGN KILLERAHOM DIGIT ZE" + - "ROAHOM DIGIT ONEAHOM DIGIT TWOAHOM DIGIT THREEAHOM DIGIT FOURAHOM DIGIT " + - "FIVEAHOM DIGIT SIXAHOM DIGIT SEVENAHOM DIGIT EIGHTAHOM DIGIT NINEAHOM NU" + - "MBER TENAHOM NUMBER TWENTYAHOM SIGN SMALL SECTIONAHOM SIGN SECTIONAHOM S" + - "IGN RULAIAHOM SYMBOL VIWARANG CITI CAPITAL LETTER NGAAWARANG CITI CAPITA" + - "L LETTER AWARANG CITI CAPITAL LETTER WIWARANG CITI CAPITAL LETTER YUWARA" + - "NG CITI CAPITAL LETTER YAWARANG CITI CAPITAL LETTER YOWARANG CITI CAPITA" + - "L LETTER IIWARANG CITI CAPITAL LETTER UUWARANG CITI CAPITAL LETTER EWARA" + - "NG CITI CAPITAL LETTER OWARANG CITI CAPITAL LETTER ANGWARANG CITI CAPITA" + - "L LETTER GAWARANG CITI CAPITAL LETTER KOWARANG CITI CAPITAL LETTER ENYWA" + - "RANG CITI CAPITAL LETTER YUJWARANG CITI CAPITAL LETTER UCWARANG CITI CAP" + - "ITAL LETTER ENNWARANG CITI CAPITAL LETTER ODDWARANG CITI CAPITAL LETTER " + - "TTEWARANG CITI CAPITAL LETTER NUNGWARANG CITI CAPITAL LETTER DAWARANG CI" + - "TI CAPITAL LETTER ATWARANG CITI CAPITAL LETTER AMWARANG CITI CAPITAL LET" + - "TER BUWARANG CITI CAPITAL LETTER PUWARANG CITI CAPITAL LETTER HIYOWARANG" + - " CITI CAPITAL LETTER HOLOWARANG CITI CAPITAL LETTER HORRWARANG CITI CAPI" + - "TAL LETTER HARWARANG CITI CAPITAL LETTER SSUUWARANG CITI CAPITAL LETTER " + - "SIIWARANG CITI CAPITAL LETTER VIYOWARANG CITI SMALL LETTER NGAAWARANG CI" + - "TI SMALL LETTER AWARANG CITI SMALL LETTER WIWARANG CITI SMALL LETTER YUW" + - "ARANG CITI SMALL LETTER YAWARANG CITI SMALL LETTER YOWARANG CITI SMALL L" + - "ETTER IIWARANG CITI SMALL LETTER UUWARANG CITI SMALL LETTER EWARANG CITI" + - " SMALL LETTER OWARANG CITI SMALL LETTER ANGWARANG CITI SMALL LETTER GAWA" + - "RANG CITI SMALL LETTER KOWARANG CITI SMALL LETTER ENYWARANG CITI SMALL L" + - "ETTER YUJWARANG CITI SMALL LETTER UCWARANG CITI SMALL LETTER ENNWARANG C" + - "ITI SMALL LETTER ODDWARANG CITI SMALL LETTER TTEWARANG CITI SMALL LETTER" + - " NUNGWARANG CITI SMALL LETTER DAWARANG CITI SMALL LETTER ATWARANG CITI S" + - "MALL LETTER AMWARANG CITI SMALL LETTER BUWARANG CITI SMALL LETTER PUWARA" + - "NG CITI SMALL LETTER HIYOWARANG CITI SMALL LETTER HOLOWARANG CITI SMALL " + - "LETTER HORRWARANG CITI SMALL LETTER HARWARANG CITI SMALL LETTER SSUUWARA" + - "NG CITI SMALL LETTER SIIWARANG CITI SMALL LETTER VIYOWARANG CITI DIGIT Z" + - "EROWARANG CITI DIGIT ONEWARANG CITI DIGIT TWOWARANG CITI DIGIT THREEWARA" + - "NG CITI DIGIT FOURWARANG CITI DIGIT FIVEWARANG CITI DIGIT SIXWARANG CITI" + - " DIGIT SEVENWARANG CITI DIGIT EIGHTWARANG CITI DIGIT NINEWARANG CITI NUM" + - "BER TENWARANG CITI NUMBER TWENTYWARANG CITI NUMBER THIRTYWARANG CITI NUM" + - "BER FORTYWARANG CITI NUMBER FIFTYWARANG CITI NUMBER SIXTYWARANG CITI NUM" + - "BER SEVENTYWARANG CITI NUMBER EIGHTYWARANG CITI NUMBER NINETYWARANG CITI" + - " OMPAU CIN HAU LETTER PAPAU CIN HAU LETTER KAPAU CIN HAU LETTER LAPAU CI" + - "N HAU LETTER MAPAU CIN HAU LETTER DAPAU CIN HAU LETTER ZAPAU CIN HAU LET" + - "TER VAPAU CIN HAU LETTER NGAPAU CIN HAU LETTER HAPAU CIN HAU LETTER GAPA" + - "U CIN HAU LETTER KHAPAU CIN HAU LETTER SAPAU CIN HAU LETTER BAPAU CIN HA" + - "U LETTER CAPAU CIN HAU LETTER TAPAU CIN HAU LETTER THAPAU CIN HAU LETTER" + - " NAPAU CIN HAU LETTER PHAPAU CIN HAU LETTER RAPAU CIN HAU LETTER FAPAU C" + - "IN HAU LETTER CHAPAU CIN HAU LETTER APAU CIN HAU LETTER EPAU CIN HAU LET" + - "TER IPAU CIN HAU LETTER OPAU CIN HAU LETTER UPAU CIN HAU LETTER UAPAU CI" + - "N HAU LETTER IAPAU CIN HAU LETTER FINAL PPAU CIN HAU LETTER FINAL KPAU C" + - "IN HAU LETTER FINAL TPAU CIN HAU LETTER FINAL MPAU CIN HAU LETTER FINAL " + - "NPAU CIN HAU LETTER FINAL LPAU CIN HAU LETTER FINAL WPAU CIN HAU LETTER " + - "FINAL NGPAU CIN HAU LETTER FINAL YPAU CIN HAU RISING TONE LONGPAU CIN HA" + - "U RISING TONEPAU CIN HAU SANDHI GLOTTAL STOPPAU CIN HAU RISING TONE LONG" + - " FINALPAU CIN HAU RISING TONE FINALPAU CIN HAU SANDHI GLOTTAL STOP FINAL" + - "PAU CIN HAU SANDHI TONE LONGPAU CIN HAU SANDHI TONEPAU CIN HAU SANDHI TO" + - "NE LONG FINALPAU CIN HAU SANDHI TONE FINALPAU CIN HAU MID-LEVEL TONEPAU " + - "CIN HAU GLOTTAL STOP VARIANTPAU CIN HAU MID-LEVEL TONE LONG FINALPAU CIN" + - " HAU MID-LEVEL TONE FINALPAU CIN HAU LOW-FALLING TONE LONGPAU CIN HAU LO") + ("" + - "W-FALLING TONEPAU CIN HAU GLOTTAL STOPPAU CIN HAU LOW-FALLING TONE LONG " + - "FINALPAU CIN HAU LOW-FALLING TONE FINALPAU CIN HAU GLOTTAL STOP FINALBHA" + - "IKSUKI LETTER ABHAIKSUKI LETTER AABHAIKSUKI LETTER IBHAIKSUKI LETTER IIB" + - "HAIKSUKI LETTER UBHAIKSUKI LETTER UUBHAIKSUKI LETTER VOCALIC RBHAIKSUKI " + - "LETTER VOCALIC RRBHAIKSUKI LETTER VOCALIC LBHAIKSUKI LETTER EBHAIKSUKI L" + - "ETTER AIBHAIKSUKI LETTER OBHAIKSUKI LETTER AUBHAIKSUKI LETTER KABHAIKSUK" + - "I LETTER KHABHAIKSUKI LETTER GABHAIKSUKI LETTER GHABHAIKSUKI LETTER NGAB" + - "HAIKSUKI LETTER CABHAIKSUKI LETTER CHABHAIKSUKI LETTER JABHAIKSUKI LETTE" + - "R JHABHAIKSUKI LETTER NYABHAIKSUKI LETTER TTABHAIKSUKI LETTER TTHABHAIKS" + - "UKI LETTER DDABHAIKSUKI LETTER DDHABHAIKSUKI LETTER NNABHAIKSUKI LETTER " + - "TABHAIKSUKI LETTER THABHAIKSUKI LETTER DABHAIKSUKI LETTER DHABHAIKSUKI L" + - "ETTER NABHAIKSUKI LETTER PABHAIKSUKI LETTER PHABHAIKSUKI LETTER BABHAIKS" + - "UKI LETTER BHABHAIKSUKI LETTER MABHAIKSUKI LETTER YABHAIKSUKI LETTER RAB" + - "HAIKSUKI LETTER LABHAIKSUKI LETTER VABHAIKSUKI LETTER SHABHAIKSUKI LETTE" + - "R SSABHAIKSUKI LETTER SABHAIKSUKI LETTER HABHAIKSUKI VOWEL SIGN AABHAIKS" + - "UKI VOWEL SIGN IBHAIKSUKI VOWEL SIGN IIBHAIKSUKI VOWEL SIGN UBHAIKSUKI V" + - "OWEL SIGN UUBHAIKSUKI VOWEL SIGN VOCALIC RBHAIKSUKI VOWEL SIGN VOCALIC R" + - "RBHAIKSUKI VOWEL SIGN VOCALIC LBHAIKSUKI VOWEL SIGN EBHAIKSUKI VOWEL SIG" + - "N AIBHAIKSUKI VOWEL SIGN OBHAIKSUKI VOWEL SIGN AUBHAIKSUKI SIGN CANDRABI" + - "NDUBHAIKSUKI SIGN ANUSVARABHAIKSUKI SIGN VISARGABHAIKSUKI SIGN VIRAMABHA" + - "IKSUKI SIGN AVAGRAHABHAIKSUKI DANDABHAIKSUKI DOUBLE DANDABHAIKSUKI WORD " + - "SEPARATORBHAIKSUKI GAP FILLER-1BHAIKSUKI GAP FILLER-2BHAIKSUKI DIGIT ZER" + - "OBHAIKSUKI DIGIT ONEBHAIKSUKI DIGIT TWOBHAIKSUKI DIGIT THREEBHAIKSUKI DI" + - "GIT FOURBHAIKSUKI DIGIT FIVEBHAIKSUKI DIGIT SIXBHAIKSUKI DIGIT SEVENBHAI" + - "KSUKI DIGIT EIGHTBHAIKSUKI DIGIT NINEBHAIKSUKI NUMBER ONEBHAIKSUKI NUMBE" + - "R TWOBHAIKSUKI NUMBER THREEBHAIKSUKI NUMBER FOURBHAIKSUKI NUMBER FIVEBHA" + - "IKSUKI NUMBER SIXBHAIKSUKI NUMBER SEVENBHAIKSUKI NUMBER EIGHTBHAIKSUKI N" + - "UMBER NINEBHAIKSUKI NUMBER TENBHAIKSUKI NUMBER TWENTYBHAIKSUKI NUMBER TH" + - "IRTYBHAIKSUKI NUMBER FORTYBHAIKSUKI NUMBER FIFTYBHAIKSUKI NUMBER SIXTYBH" + - "AIKSUKI NUMBER SEVENTYBHAIKSUKI NUMBER EIGHTYBHAIKSUKI NUMBER NINETYBHAI" + - "KSUKI HUNDREDS UNIT MARKMARCHEN HEAD MARKMARCHEN MARK SHADMARCHEN LETTER" + - " KAMARCHEN LETTER KHAMARCHEN LETTER GAMARCHEN LETTER NGAMARCHEN LETTER C" + - "AMARCHEN LETTER CHAMARCHEN LETTER JAMARCHEN LETTER NYAMARCHEN LETTER TAM" + - "ARCHEN LETTER THAMARCHEN LETTER DAMARCHEN LETTER NAMARCHEN LETTER PAMARC" + - "HEN LETTER PHAMARCHEN LETTER BAMARCHEN LETTER MAMARCHEN LETTER TSAMARCHE" + - "N LETTER TSHAMARCHEN LETTER DZAMARCHEN LETTER WAMARCHEN LETTER ZHAMARCHE" + - "N LETTER ZAMARCHEN LETTER -AMARCHEN LETTER YAMARCHEN LETTER RAMARCHEN LE" + - "TTER LAMARCHEN LETTER SHAMARCHEN LETTER SAMARCHEN LETTER HAMARCHEN LETTE" + - "R AMARCHEN SUBJOINED LETTER KAMARCHEN SUBJOINED LETTER KHAMARCHEN SUBJOI" + - "NED LETTER GAMARCHEN SUBJOINED LETTER NGAMARCHEN SUBJOINED LETTER CAMARC" + - "HEN SUBJOINED LETTER CHAMARCHEN SUBJOINED LETTER JAMARCHEN SUBJOINED LET" + - "TER NYAMARCHEN SUBJOINED LETTER TAMARCHEN SUBJOINED LETTER THAMARCHEN SU" + - "BJOINED LETTER DAMARCHEN SUBJOINED LETTER NAMARCHEN SUBJOINED LETTER PAM" + - "ARCHEN SUBJOINED LETTER PHAMARCHEN SUBJOINED LETTER BAMARCHEN SUBJOINED " + - "LETTER MAMARCHEN SUBJOINED LETTER TSAMARCHEN SUBJOINED LETTER TSHAMARCHE" + - "N SUBJOINED LETTER DZAMARCHEN SUBJOINED LETTER WAMARCHEN SUBJOINED LETTE" + - "R ZHAMARCHEN SUBJOINED LETTER ZAMARCHEN SUBJOINED LETTER YAMARCHEN SUBJO" + - "INED LETTER RAMARCHEN SUBJOINED LETTER LAMARCHEN SUBJOINED LETTER SHAMAR" + - "CHEN SUBJOINED LETTER SAMARCHEN SUBJOINED LETTER HAMARCHEN SUBJOINED LET" + - "TER AMARCHEN VOWEL SIGN AAMARCHEN VOWEL SIGN IMARCHEN VOWEL SIGN UMARCHE" + - "N VOWEL SIGN EMARCHEN VOWEL SIGN OMARCHEN SIGN ANUSVARAMARCHEN SIGN CAND" + - "RABINDUCUNEIFORM SIGN ACUNEIFORM SIGN A TIMES ACUNEIFORM SIGN A TIMES BA" + - "DCUNEIFORM SIGN A TIMES GAN2 TENUCUNEIFORM SIGN A TIMES HACUNEIFORM SIGN" + - " A TIMES IGICUNEIFORM SIGN A TIMES LAGAR GUNUCUNEIFORM SIGN A TIMES MUSH" + - "CUNEIFORM SIGN A TIMES SAGCUNEIFORM SIGN A2CUNEIFORM SIGN ABCUNEIFORM SI" + - "GN AB TIMES ASH2CUNEIFORM SIGN AB TIMES DUN3 GUNUCUNEIFORM SIGN AB TIMES" + - " GALCUNEIFORM SIGN AB TIMES GAN2 TENUCUNEIFORM SIGN AB TIMES HACUNEIFORM" + - " SIGN AB TIMES IGI GUNUCUNEIFORM SIGN AB TIMES IMINCUNEIFORM SIGN AB TIM" + - "ES LAGABCUNEIFORM SIGN AB TIMES SHESHCUNEIFORM SIGN AB TIMES U PLUS U PL" + - "US UCUNEIFORM SIGN AB GUNUCUNEIFORM SIGN AB2CUNEIFORM SIGN AB2 TIMES BAL" + - "AGCUNEIFORM SIGN AB2 TIMES GAN2 TENUCUNEIFORM SIGN AB2 TIMES ME PLUS ENC" + - "UNEIFORM SIGN AB2 TIMES SHA3CUNEIFORM SIGN AB2 TIMES TAK4CUNEIFORM SIGN " + - "ADCUNEIFORM SIGN AKCUNEIFORM SIGN AK TIMES ERIN2CUNEIFORM SIGN AK TIMES " + - "SHITA PLUS GISHCUNEIFORM SIGN ALCUNEIFORM SIGN AL TIMES ALCUNEIFORM SIGN") + ("" + - " AL TIMES DIM2CUNEIFORM SIGN AL TIMES GISHCUNEIFORM SIGN AL TIMES HACUNE" + - "IFORM SIGN AL TIMES KAD3CUNEIFORM SIGN AL TIMES KICUNEIFORM SIGN AL TIME" + - "S SHECUNEIFORM SIGN AL TIMES USHCUNEIFORM SIGN ALANCUNEIFORM SIGN ALEPHC" + - "UNEIFORM SIGN AMARCUNEIFORM SIGN AMAR TIMES SHECUNEIFORM SIGN ANCUNEIFOR" + - "M SIGN AN OVER ANCUNEIFORM SIGN AN THREE TIMESCUNEIFORM SIGN AN PLUS NAG" + - "A OPPOSING AN PLUS NAGACUNEIFORM SIGN AN PLUS NAGA SQUAREDCUNEIFORM SIGN" + - " ANSHECUNEIFORM SIGN APINCUNEIFORM SIGN ARADCUNEIFORM SIGN ARAD TIMES KU" + - "RCUNEIFORM SIGN ARKABCUNEIFORM SIGN ASAL2CUNEIFORM SIGN ASHCUNEIFORM SIG" + - "N ASH ZIDA TENUCUNEIFORM SIGN ASH KABA TENUCUNEIFORM SIGN ASH OVER ASH T" + - "UG2 OVER TUG2 TUG2 OVER TUG2 PAPCUNEIFORM SIGN ASH OVER ASH OVER ASHCUNE" + - "IFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASHCUNEIFORM" + - " SIGN ASH2CUNEIFORM SIGN ASHGABCUNEIFORM SIGN BACUNEIFORM SIGN BADCUNEIF" + - "ORM SIGN BAG3CUNEIFORM SIGN BAHAR2CUNEIFORM SIGN BALCUNEIFORM SIGN BAL O" + - "VER BALCUNEIFORM SIGN BALAGCUNEIFORM SIGN BARCUNEIFORM SIGN BARA2CUNEIFO" + - "RM SIGN BICUNEIFORM SIGN BI TIMES ACUNEIFORM SIGN BI TIMES GARCUNEIFORM " + - "SIGN BI TIMES IGI GUNUCUNEIFORM SIGN BUCUNEIFORM SIGN BU OVER BU ABCUNEI" + - "FORM SIGN BU OVER BU UNCUNEIFORM SIGN BU CROSSING BUCUNEIFORM SIGN BULUG" + - "CUNEIFORM SIGN BULUG OVER BULUGCUNEIFORM SIGN BURCUNEIFORM SIGN BUR2CUNE" + - "IFORM SIGN DACUNEIFORM SIGN DAGCUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MA" + - "SHCUNEIFORM SIGN DAG KISIM5 TIMES AMARCUNEIFORM SIGN DAG KISIM5 TIMES BA" + - "LAGCUNEIFORM SIGN DAG KISIM5 TIMES BICUNEIFORM SIGN DAG KISIM5 TIMES GAC" + - "UNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASHCUNEIFORM SIGN DAG KISIM5 TIM" + - "ES GICUNEIFORM SIGN DAG KISIM5 TIMES GIR2CUNEIFORM SIGN DAG KISIM5 TIMES" + - " GUDCUNEIFORM SIGN DAG KISIM5 TIMES HACUNEIFORM SIGN DAG KISIM5 TIMES IR" + - "CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LUCUNEIFORM SIGN DAG KISIM5 TIME" + - "S KAKCUNEIFORM SIGN DAG KISIM5 TIMES LACUNEIFORM SIGN DAG KISIM5 TIMES L" + - "UCUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2CUNEIFORM SIGN DAG KISIM5 " + - "TIMES LUMCUNEIFORM SIGN DAG KISIM5 TIMES NECUNEIFORM SIGN DAG KISIM5 TIM" + - "ES PAP PLUS PAPCUNEIFORM SIGN DAG KISIM5 TIMES SICUNEIFORM SIGN DAG KISI" + - "M5 TIMES TAK4CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2CUNEIFORM SIGN " + - "DAG KISIM5 TIMES USHCUNEIFORM SIGN DAMCUNEIFORM SIGN DARCUNEIFORM SIGN D" + - "ARA3CUNEIFORM SIGN DARA4CUNEIFORM SIGN DICUNEIFORM SIGN DIBCUNEIFORM SIG" + - "N DIMCUNEIFORM SIGN DIM TIMES SHECUNEIFORM SIGN DIM2CUNEIFORM SIGN DINCU" + - "NEIFORM SIGN DIN KASKAL U GUNU DISHCUNEIFORM SIGN DISHCUNEIFORM SIGN DUC" + - "UNEIFORM SIGN DU OVER DUCUNEIFORM SIGN DU GUNUCUNEIFORM SIGN DU SHESHIGC" + - "UNEIFORM SIGN DUBCUNEIFORM SIGN DUB TIMES ESH2CUNEIFORM SIGN DUB2CUNEIFO" + - "RM SIGN DUGCUNEIFORM SIGN DUGUDCUNEIFORM SIGN DUHCUNEIFORM SIGN DUNCUNEI" + - "FORM SIGN DUN3CUNEIFORM SIGN DUN3 GUNUCUNEIFORM SIGN DUN3 GUNU GUNUCUNEI" + - "FORM SIGN DUN4CUNEIFORM SIGN DUR2CUNEIFORM SIGN ECUNEIFORM SIGN E TIMES " + - "PAPCUNEIFORM SIGN E OVER E NUN OVER NUNCUNEIFORM SIGN E2CUNEIFORM SIGN E" + - "2 TIMES A PLUS HA PLUS DACUNEIFORM SIGN E2 TIMES GARCUNEIFORM SIGN E2 TI" + - "MES MICUNEIFORM SIGN E2 TIMES SALCUNEIFORM SIGN E2 TIMES SHECUNEIFORM SI" + - "GN E2 TIMES UCUNEIFORM SIGN EDINCUNEIFORM SIGN EGIRCUNEIFORM SIGN ELCUNE" + - "IFORM SIGN ENCUNEIFORM SIGN EN TIMES GAN2CUNEIFORM SIGN EN TIMES GAN2 TE" + - "NUCUNEIFORM SIGN EN TIMES MECUNEIFORM SIGN EN CROSSING ENCUNEIFORM SIGN " + - "EN OPPOSING ENCUNEIFORM SIGN EN SQUAREDCUNEIFORM SIGN ERENCUNEIFORM SIGN" + - " ERIN2CUNEIFORM SIGN ESH2CUNEIFORM SIGN EZENCUNEIFORM SIGN EZEN TIMES AC" + - "UNEIFORM SIGN EZEN TIMES A PLUS LALCUNEIFORM SIGN EZEN TIMES A PLUS LAL " + - "TIMES LALCUNEIFORM SIGN EZEN TIMES ANCUNEIFORM SIGN EZEN TIMES BADCUNEIF" + - "ORM SIGN EZEN TIMES DUN3 GUNUCUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNUCUN" + - "EIFORM SIGN EZEN TIMES HACUNEIFORM SIGN EZEN TIMES HA GUNUCUNEIFORM SIGN" + - " EZEN TIMES IGI GUNUCUNEIFORM SIGN EZEN TIMES KASKALCUNEIFORM SIGN EZEN " + - "TIMES KASKAL SQUAREDCUNEIFORM SIGN EZEN TIMES KU3CUNEIFORM SIGN EZEN TIM" + - "ES LACUNEIFORM SIGN EZEN TIMES LAL TIMES LALCUNEIFORM SIGN EZEN TIMES LI" + - "CUNEIFORM SIGN EZEN TIMES LUCUNEIFORM SIGN EZEN TIMES U2CUNEIFORM SIGN E" + - "ZEN TIMES UDCUNEIFORM SIGN GACUNEIFORM SIGN GA GUNUCUNEIFORM SIGN GA2CUN" + - "EIFORM SIGN GA2 TIMES A PLUS DA PLUS HACUNEIFORM SIGN GA2 TIMES A PLUS H" + - "ACUNEIFORM SIGN GA2 TIMES A PLUS IGICUNEIFORM SIGN GA2 TIMES AB2 TENU PL" + - "US TABCUNEIFORM SIGN GA2 TIMES ANCUNEIFORM SIGN GA2 TIMES ASHCUNEIFORM S" + - "IGN GA2 TIMES ASH2 PLUS GALCUNEIFORM SIGN GA2 TIMES BADCUNEIFORM SIGN GA" + - "2 TIMES BAR PLUS RACUNEIFORM SIGN GA2 TIMES BURCUNEIFORM SIGN GA2 TIMES " + - "BUR PLUS RACUNEIFORM SIGN GA2 TIMES DACUNEIFORM SIGN GA2 TIMES DICUNEIFO" + - "RM SIGN GA2 TIMES DIM TIMES SHECUNEIFORM SIGN GA2 TIMES DUBCUNEIFORM SIG" + - "N GA2 TIMES ELCUNEIFORM SIGN GA2 TIMES EL PLUS LACUNEIFORM SIGN GA2 TIME") + ("" + - "S ENCUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENUCUNEIFORM SIGN GA2 TIMES " + - "GAN2 TENUCUNEIFORM SIGN GA2 TIMES GARCUNEIFORM SIGN GA2 TIMES GICUNEIFOR" + - "M SIGN GA2 TIMES GI4CUNEIFORM SIGN GA2 TIMES GI4 PLUS ACUNEIFORM SIGN GA" + - "2 TIMES GIR2 PLUS SUCUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2CUNEIFO" + - "RM SIGN GA2 TIMES HALCUNEIFORM SIGN GA2 TIMES HAL PLUS LACUNEIFORM SIGN " + - "GA2 TIMES HI PLUS LICUNEIFORM SIGN GA2 TIMES HUB2CUNEIFORM SIGN GA2 TIME" + - "S IGI GUNUCUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASHCUNEIFORM SIGN GA" + - "2 TIMES KAKCUNEIFORM SIGN GA2 TIMES KASKALCUNEIFORM SIGN GA2 TIMES KIDCU" + - "NEIFORM SIGN GA2 TIMES KID PLUS LALCUNEIFORM SIGN GA2 TIMES KU3 PLUS ANC" + - "UNEIFORM SIGN GA2 TIMES LACUNEIFORM SIGN GA2 TIMES ME PLUS ENCUNEIFORM S" + - "IGN GA2 TIMES MICUNEIFORM SIGN GA2 TIMES NUNCUNEIFORM SIGN GA2 TIMES NUN" + - " OVER NUNCUNEIFORM SIGN GA2 TIMES PACUNEIFORM SIGN GA2 TIMES SALCUNEIFOR" + - "M SIGN GA2 TIMES SARCUNEIFORM SIGN GA2 TIMES SHECUNEIFORM SIGN GA2 TIMES" + - " SHE PLUS TURCUNEIFORM SIGN GA2 TIMES SHIDCUNEIFORM SIGN GA2 TIMES SUMCU" + - "NEIFORM SIGN GA2 TIMES TAK4CUNEIFORM SIGN GA2 TIMES UCUNEIFORM SIGN GA2 " + - "TIMES UDCUNEIFORM SIGN GA2 TIMES UD PLUS DUCUNEIFORM SIGN GA2 OVER GA2CU" + - "NEIFORM SIGN GABACUNEIFORM SIGN GABA CROSSING GABACUNEIFORM SIGN GADCUNE" + - "IFORM SIGN GAD OVER GAD GAR OVER GARCUNEIFORM SIGN GALCUNEIFORM SIGN GAL" + - " GAD OVER GAD GAR OVER GARCUNEIFORM SIGN GALAMCUNEIFORM SIGN GAMCUNEIFOR" + - "M SIGN GANCUNEIFORM SIGN GAN2CUNEIFORM SIGN GAN2 TENUCUNEIFORM SIGN GAN2" + - " OVER GAN2CUNEIFORM SIGN GAN2 CROSSING GAN2CUNEIFORM SIGN GARCUNEIFORM S" + - "IGN GAR3CUNEIFORM SIGN GASHANCUNEIFORM SIGN GESHTINCUNEIFORM SIGN GESHTI" + - "N TIMES KURCUNEIFORM SIGN GICUNEIFORM SIGN GI TIMES ECUNEIFORM SIGN GI T" + - "IMES UCUNEIFORM SIGN GI CROSSING GICUNEIFORM SIGN GI4CUNEIFORM SIGN GI4 " + - "OVER GI4CUNEIFORM SIGN GI4 CROSSING GI4CUNEIFORM SIGN GIDIMCUNEIFORM SIG" + - "N GIR2CUNEIFORM SIGN GIR2 GUNUCUNEIFORM SIGN GIR3CUNEIFORM SIGN GIR3 TIM" + - "ES A PLUS IGICUNEIFORM SIGN GIR3 TIMES GAN2 TENUCUNEIFORM SIGN GIR3 TIME" + - "S IGICUNEIFORM SIGN GIR3 TIMES LU PLUS IGICUNEIFORM SIGN GIR3 TIMES PACU" + - "NEIFORM SIGN GISALCUNEIFORM SIGN GISHCUNEIFORM SIGN GISH CROSSING GISHCU" + - "NEIFORM SIGN GISH TIMES BADCUNEIFORM SIGN GISH TIMES TAK4CUNEIFORM SIGN " + - "GISH TENUCUNEIFORM SIGN GUCUNEIFORM SIGN GU CROSSING GUCUNEIFORM SIGN GU" + - "2CUNEIFORM SIGN GU2 TIMES KAKCUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU" + - "CUNEIFORM SIGN GU2 TIMES NUNCUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2CUNEIF" + - "ORM SIGN GU2 GUNUCUNEIFORM SIGN GUDCUNEIFORM SIGN GUD TIMES A PLUS KURCU" + - "NEIFORM SIGN GUD TIMES KURCUNEIFORM SIGN GUD OVER GUD LUGALCUNEIFORM SIG" + - "N GULCUNEIFORM SIGN GUMCUNEIFORM SIGN GUM TIMES SHECUNEIFORM SIGN GURCUN" + - "EIFORM SIGN GUR7CUNEIFORM SIGN GURUNCUNEIFORM SIGN GURUSHCUNEIFORM SIGN " + - "HACUNEIFORM SIGN HA TENUCUNEIFORM SIGN HA GUNUCUNEIFORM SIGN HALCUNEIFOR" + - "M SIGN HICUNEIFORM SIGN HI TIMES ASHCUNEIFORM SIGN HI TIMES ASH2CUNEIFOR" + - "M SIGN HI TIMES BADCUNEIFORM SIGN HI TIMES DISHCUNEIFORM SIGN HI TIMES G" + - "ADCUNEIFORM SIGN HI TIMES KINCUNEIFORM SIGN HI TIMES NUNCUNEIFORM SIGN H" + - "I TIMES SHECUNEIFORM SIGN HI TIMES UCUNEIFORM SIGN HUCUNEIFORM SIGN HUB2" + - "CUNEIFORM SIGN HUB2 TIMES ANCUNEIFORM SIGN HUB2 TIMES HALCUNEIFORM SIGN " + - "HUB2 TIMES KASKALCUNEIFORM SIGN HUB2 TIMES LISHCUNEIFORM SIGN HUB2 TIMES" + - " UDCUNEIFORM SIGN HUL2CUNEIFORM SIGN ICUNEIFORM SIGN I ACUNEIFORM SIGN I" + - "BCUNEIFORM SIGN IDIMCUNEIFORM SIGN IDIM OVER IDIM BURCUNEIFORM SIGN IDIM" + - " OVER IDIM SQUAREDCUNEIFORM SIGN IGCUNEIFORM SIGN IGICUNEIFORM SIGN IGI " + - "DIBCUNEIFORM SIGN IGI RICUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OV" + - "ER UDCUNEIFORM SIGN IGI GUNUCUNEIFORM SIGN ILCUNEIFORM SIGN IL TIMES GAN" + - "2 TENUCUNEIFORM SIGN IL2CUNEIFORM SIGN IMCUNEIFORM SIGN IM TIMES TAK4CUN" + - "EIFORM SIGN IM CROSSING IMCUNEIFORM SIGN IM OPPOSING IMCUNEIFORM SIGN IM" + - " SQUAREDCUNEIFORM SIGN IMINCUNEIFORM SIGN INCUNEIFORM SIGN IRCUNEIFORM S" + - "IGN ISHCUNEIFORM SIGN KACUNEIFORM SIGN KA TIMES ACUNEIFORM SIGN KA TIMES" + - " ADCUNEIFORM SIGN KA TIMES AD PLUS KU3CUNEIFORM SIGN KA TIMES ASH2CUNEIF" + - "ORM SIGN KA TIMES BADCUNEIFORM SIGN KA TIMES BALAGCUNEIFORM SIGN KA TIME" + - "S BARCUNEIFORM SIGN KA TIMES BICUNEIFORM SIGN KA TIMES ERIN2CUNEIFORM SI" + - "GN KA TIMES ESH2CUNEIFORM SIGN KA TIMES GACUNEIFORM SIGN KA TIMES GALCUN" + - "EIFORM SIGN KA TIMES GAN2 TENUCUNEIFORM SIGN KA TIMES GARCUNEIFORM SIGN " + - "KA TIMES GAR PLUS SHA3 PLUS ACUNEIFORM SIGN KA TIMES GICUNEIFORM SIGN KA" + - " TIMES GIR2CUNEIFORM SIGN KA TIMES GISH PLUS SARCUNEIFORM SIGN KA TIMES " + - "GISH CROSSING GISHCUNEIFORM SIGN KA TIMES GUCUNEIFORM SIGN KA TIMES GUR7" + - "CUNEIFORM SIGN KA TIMES IGICUNEIFORM SIGN KA TIMES IMCUNEIFORM SIGN KA T" + - "IMES KAKCUNEIFORM SIGN KA TIMES KICUNEIFORM SIGN KA TIMES KIDCUNEIFORM S" + - "IGN KA TIMES LICUNEIFORM SIGN KA TIMES LUCUNEIFORM SIGN KA TIMES MECUNEI") + ("" + - "FORM SIGN KA TIMES ME PLUS DUCUNEIFORM SIGN KA TIMES ME PLUS GICUNEIFORM" + - " SIGN KA TIMES ME PLUS TECUNEIFORM SIGN KA TIMES MICUNEIFORM SIGN KA TIM" + - "ES MI PLUS NUNUZCUNEIFORM SIGN KA TIMES NECUNEIFORM SIGN KA TIMES NUNCUN" + - "EIFORM SIGN KA TIMES PICUNEIFORM SIGN KA TIMES RUCUNEIFORM SIGN KA TIMES" + - " SACUNEIFORM SIGN KA TIMES SARCUNEIFORM SIGN KA TIMES SHACUNEIFORM SIGN " + - "KA TIMES SHECUNEIFORM SIGN KA TIMES SHIDCUNEIFORM SIGN KA TIMES SHUCUNEI" + - "FORM SIGN KA TIMES SIGCUNEIFORM SIGN KA TIMES SUHURCUNEIFORM SIGN KA TIM" + - "ES TARCUNEIFORM SIGN KA TIMES UCUNEIFORM SIGN KA TIMES U2CUNEIFORM SIGN " + - "KA TIMES UDCUNEIFORM SIGN KA TIMES UMUM TIMES PACUNEIFORM SIGN KA TIMES " + - "USHCUNEIFORM SIGN KA TIMES ZICUNEIFORM SIGN KA2CUNEIFORM SIGN KA2 CROSSI" + - "NG KA2CUNEIFORM SIGN KABCUNEIFORM SIGN KAD2CUNEIFORM SIGN KAD3CUNEIFORM " + - "SIGN KAD4CUNEIFORM SIGN KAD5CUNEIFORM SIGN KAD5 OVER KAD5CUNEIFORM SIGN " + - "KAKCUNEIFORM SIGN KAK TIMES IGI GUNUCUNEIFORM SIGN KALCUNEIFORM SIGN KAL" + - " TIMES BADCUNEIFORM SIGN KAL CROSSING KALCUNEIFORM SIGN KAM2CUNEIFORM SI" + - "GN KAM4CUNEIFORM SIGN KASKALCUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAG" + - "AB TIMES UCUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIM" + - "ES UCUNEIFORM SIGN KESH2CUNEIFORM SIGN KICUNEIFORM SIGN KI TIMES BADCUNE" + - "IFORM SIGN KI TIMES UCUNEIFORM SIGN KI TIMES UDCUNEIFORM SIGN KIDCUNEIFO" + - "RM SIGN KINCUNEIFORM SIGN KISALCUNEIFORM SIGN KISHCUNEIFORM SIGN KISIM5C" + - "UNEIFORM SIGN KISIM5 OVER KISIM5CUNEIFORM SIGN KUCUNEIFORM SIGN KU OVER " + - "HI TIMES ASH2 KU OVER HI TIMES ASH2CUNEIFORM SIGN KU3CUNEIFORM SIGN KU4C" + - "UNEIFORM SIGN KU4 VARIANT FORMCUNEIFORM SIGN KU7CUNEIFORM SIGN KULCUNEIF" + - "ORM SIGN KUL GUNUCUNEIFORM SIGN KUNCUNEIFORM SIGN KURCUNEIFORM SIGN KUR " + - "OPPOSING KURCUNEIFORM SIGN KUSHU2CUNEIFORM SIGN KWU318CUNEIFORM SIGN LAC" + - "UNEIFORM SIGN LAGABCUNEIFORM SIGN LAGAB TIMES ACUNEIFORM SIGN LAGAB TIME" + - "S A PLUS DA PLUS HACUNEIFORM SIGN LAGAB TIMES A PLUS GARCUNEIFORM SIGN L" + - "AGAB TIMES A PLUS LALCUNEIFORM SIGN LAGAB TIMES ALCUNEIFORM SIGN LAGAB T" + - "IMES ANCUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENUCUNEIFORM SIGN LAGAB TIME" + - "S BADCUNEIFORM SIGN LAGAB TIMES BICUNEIFORM SIGN LAGAB TIMES DARCUNEIFOR" + - "M SIGN LAGAB TIMES ENCUNEIFORM SIGN LAGAB TIMES GACUNEIFORM SIGN LAGAB T" + - "IMES GARCUNEIFORM SIGN LAGAB TIMES GUDCUNEIFORM SIGN LAGAB TIMES GUD PLU" + - "S GUDCUNEIFORM SIGN LAGAB TIMES HACUNEIFORM SIGN LAGAB TIMES HALCUNEIFOR" + - "M SIGN LAGAB TIMES HI TIMES NUNCUNEIFORM SIGN LAGAB TIMES IGI GUNUCUNEIF" + - "ORM SIGN LAGAB TIMES IMCUNEIFORM SIGN LAGAB TIMES IM PLUS HACUNEIFORM SI" + - "GN LAGAB TIMES IM PLUS LUCUNEIFORM SIGN LAGAB TIMES KICUNEIFORM SIGN LAG" + - "AB TIMES KINCUNEIFORM SIGN LAGAB TIMES KU3CUNEIFORM SIGN LAGAB TIMES KUL" + - "CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS ACUNEIFORM SIGN LAGAB TIMES " + - "LAGABCUNEIFORM SIGN LAGAB TIMES LISHCUNEIFORM SIGN LAGAB TIMES LUCUNEIFO" + - "RM SIGN LAGAB TIMES LULCUNEIFORM SIGN LAGAB TIMES MECUNEIFORM SIGN LAGAB" + - " TIMES ME PLUS ENCUNEIFORM SIGN LAGAB TIMES MUSHCUNEIFORM SIGN LAGAB TIM" + - "ES NECUNEIFORM SIGN LAGAB TIMES SHE PLUS SUMCUNEIFORM SIGN LAGAB TIMES S" + - "HITA PLUS GISH PLUS ERIN2CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU" + - "CUNEIFORM SIGN LAGAB TIMES SHU2CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2" + - "CUNEIFORM SIGN LAGAB TIMES SUMCUNEIFORM SIGN LAGAB TIMES TAGCUNEIFORM SI" + - "GN LAGAB TIMES TAK4CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NAC" + - "UNEIFORM SIGN LAGAB TIMES UCUNEIFORM SIGN LAGAB TIMES U PLUS ACUNEIFORM " + - "SIGN LAGAB TIMES U PLUS U PLUS UCUNEIFORM SIGN LAGAB TIMES U2 PLUS ASHCU" + - "NEIFORM SIGN LAGAB TIMES UDCUNEIFORM SIGN LAGAB TIMES USHCUNEIFORM SIGN " + - "LAGAB SQUAREDCUNEIFORM SIGN LAGARCUNEIFORM SIGN LAGAR TIMES SHECUNEIFORM" + - " SIGN LAGAR TIMES SHE PLUS SUMCUNEIFORM SIGN LAGAR GUNUCUNEIFORM SIGN LA" + - "GAR GUNU OVER LAGAR GUNU SHECUNEIFORM SIGN LAHSHUCUNEIFORM SIGN LALCUNEI" + - "FORM SIGN LAL TIMES LALCUNEIFORM SIGN LAMCUNEIFORM SIGN LAM TIMES KURCUN" + - "EIFORM SIGN LAM TIMES KUR PLUS RUCUNEIFORM SIGN LICUNEIFORM SIGN LILCUNE" + - "IFORM SIGN LIMMU2CUNEIFORM SIGN LISHCUNEIFORM SIGN LUCUNEIFORM SIGN LU T" + - "IMES BADCUNEIFORM SIGN LU2CUNEIFORM SIGN LU2 TIMES ALCUNEIFORM SIGN LU2 " + - "TIMES BADCUNEIFORM SIGN LU2 TIMES ESH2CUNEIFORM SIGN LU2 TIMES ESH2 TENU" + - "CUNEIFORM SIGN LU2 TIMES GAN2 TENUCUNEIFORM SIGN LU2 TIMES HI TIMES BADC" + - "UNEIFORM SIGN LU2 TIMES IMCUNEIFORM SIGN LU2 TIMES KAD2CUNEIFORM SIGN LU" + - "2 TIMES KAD3CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASHCUNEIFORM SIGN LU2 TIM" + - "ES KICUNEIFORM SIGN LU2 TIMES LA PLUS ASHCUNEIFORM SIGN LU2 TIMES LAGABC" + - "UNEIFORM SIGN LU2 TIMES ME PLUS ENCUNEIFORM SIGN LU2 TIMES NECUNEIFORM S" + - "IGN LU2 TIMES NUCUNEIFORM SIGN LU2 TIMES SI PLUS ASHCUNEIFORM SIGN LU2 T" + - "IMES SIK2 PLUS BUCUNEIFORM SIGN LU2 TIMES TUG2CUNEIFORM SIGN LU2 TENUCUN" + - "EIFORM SIGN LU2 CROSSING LU2CUNEIFORM SIGN LU2 OPPOSING LU2CUNEIFORM SIG") + ("" + - "N LU2 SQUAREDCUNEIFORM SIGN LU2 SHESHIGCUNEIFORM SIGN LU3CUNEIFORM SIGN " + - "LUGALCUNEIFORM SIGN LUGAL OVER LUGALCUNEIFORM SIGN LUGAL OPPOSING LUGALC" + - "UNEIFORM SIGN LUGAL SHESHIGCUNEIFORM SIGN LUHCUNEIFORM SIGN LULCUNEIFORM" + - " SIGN LUMCUNEIFORM SIGN LUM OVER LUMCUNEIFORM SIGN LUM OVER LUM GAR OVER" + - " GARCUNEIFORM SIGN MACUNEIFORM SIGN MA TIMES TAK4CUNEIFORM SIGN MA GUNUC" + - "UNEIFORM SIGN MA2CUNEIFORM SIGN MAHCUNEIFORM SIGN MARCUNEIFORM SIGN MASH" + - "CUNEIFORM SIGN MASH2CUNEIFORM SIGN MECUNEIFORM SIGN MESCUNEIFORM SIGN MI" + - "CUNEIFORM SIGN MINCUNEIFORM SIGN MUCUNEIFORM SIGN MU OVER MUCUNEIFORM SI" + - "GN MUGCUNEIFORM SIGN MUG GUNUCUNEIFORM SIGN MUNSUBCUNEIFORM SIGN MURGU2C" + - "UNEIFORM SIGN MUSHCUNEIFORM SIGN MUSH TIMES ACUNEIFORM SIGN MUSH TIMES K" + - "URCUNEIFORM SIGN MUSH TIMES ZACUNEIFORM SIGN MUSH OVER MUSHCUNEIFORM SIG" + - "N MUSH OVER MUSH TIMES A PLUS NACUNEIFORM SIGN MUSH CROSSING MUSHCUNEIFO" + - "RM SIGN MUSH3CUNEIFORM SIGN MUSH3 TIMES ACUNEIFORM SIGN MUSH3 TIMES A PL" + - "US DICUNEIFORM SIGN MUSH3 TIMES DICUNEIFORM SIGN MUSH3 GUNUCUNEIFORM SIG" + - "N NACUNEIFORM SIGN NA2CUNEIFORM SIGN NAGACUNEIFORM SIGN NAGA INVERTEDCUN" + - "EIFORM SIGN NAGA TIMES SHU TENUCUNEIFORM SIGN NAGA OPPOSING NAGACUNEIFOR" + - "M SIGN NAGARCUNEIFORM SIGN NAM NUTILLUCUNEIFORM SIGN NAMCUNEIFORM SIGN N" + - "AM2CUNEIFORM SIGN NECUNEIFORM SIGN NE TIMES ACUNEIFORM SIGN NE TIMES UDC" + - "UNEIFORM SIGN NE SHESHIGCUNEIFORM SIGN NICUNEIFORM SIGN NI TIMES ECUNEIF" + - "ORM SIGN NI2CUNEIFORM SIGN NIMCUNEIFORM SIGN NIM TIMES GAN2 TENUCUNEIFOR" + - "M SIGN NIM TIMES GAR PLUS GAN2 TENUCUNEIFORM SIGN NINDA2CUNEIFORM SIGN N" + - "INDA2 TIMES ANCUNEIFORM SIGN NINDA2 TIMES ASHCUNEIFORM SIGN NINDA2 TIMES" + - " ASH PLUS ASHCUNEIFORM SIGN NINDA2 TIMES GUDCUNEIFORM SIGN NINDA2 TIMES " + - "ME PLUS GAN2 TENUCUNEIFORM SIGN NINDA2 TIMES NECUNEIFORM SIGN NINDA2 TIM" + - "ES NUNCUNEIFORM SIGN NINDA2 TIMES SHECUNEIFORM SIGN NINDA2 TIMES SHE PLU" + - "S A ANCUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASHCUNEIFORM SIGN NINDA2 TIME" + - "S SHE PLUS ASH PLUS ASHCUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASHCUNEIFORM " + - "SIGN NINDA2 TIMES USHCUNEIFORM SIGN NISAGCUNEIFORM SIGN NUCUNEIFORM SIGN" + - " NU11CUNEIFORM SIGN NUNCUNEIFORM SIGN NUN LAGAR TIMES GARCUNEIFORM SIGN " + - "NUN LAGAR TIMES MASHCUNEIFORM SIGN NUN LAGAR TIMES SALCUNEIFORM SIGN NUN" + - " LAGAR TIMES SAL OVER NUN LAGAR TIMES SALCUNEIFORM SIGN NUN LAGAR TIMES " + - "USHCUNEIFORM SIGN NUN TENUCUNEIFORM SIGN NUN OVER NUNCUNEIFORM SIGN NUN " + - "CROSSING NUNCUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGARCUNEIFORM SI" + - "GN NUNUZCUNEIFORM SIGN NUNUZ AB2 TIMES ASHGABCUNEIFORM SIGN NUNUZ AB2 TI" + - "MES BICUNEIFORM SIGN NUNUZ AB2 TIMES DUGCUNEIFORM SIGN NUNUZ AB2 TIMES G" + - "UDCUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNUCUNEIFORM SIGN NUNUZ AB2 TIMES " + - "KAD3CUNEIFORM SIGN NUNUZ AB2 TIMES LACUNEIFORM SIGN NUNUZ AB2 TIMES NECU" + - "NEIFORM SIGN NUNUZ AB2 TIMES SILA3CUNEIFORM SIGN NUNUZ AB2 TIMES U2CUNEI" + - "FORM SIGN NUNUZ KISIM5 TIMES BICUNEIFORM SIGN NUNUZ KISIM5 TIMES BI UCUN" + - "EIFORM SIGN PACUNEIFORM SIGN PADCUNEIFORM SIGN PANCUNEIFORM SIGN PAPCUNE" + - "IFORM SIGN PESH2CUNEIFORM SIGN PICUNEIFORM SIGN PI TIMES ACUNEIFORM SIGN" + - " PI TIMES ABCUNEIFORM SIGN PI TIMES BICUNEIFORM SIGN PI TIMES BUCUNEIFOR" + - "M SIGN PI TIMES ECUNEIFORM SIGN PI TIMES ICUNEIFORM SIGN PI TIMES IBCUNE" + - "IFORM SIGN PI TIMES UCUNEIFORM SIGN PI TIMES U2CUNEIFORM SIGN PI CROSSIN" + - "G PICUNEIFORM SIGN PIRIGCUNEIFORM SIGN PIRIG TIMES KALCUNEIFORM SIGN PIR" + - "IG TIMES UDCUNEIFORM SIGN PIRIG TIMES ZACUNEIFORM SIGN PIRIG OPPOSING PI" + - "RIGCUNEIFORM SIGN RACUNEIFORM SIGN RABCUNEIFORM SIGN RICUNEIFORM SIGN RU" + - "CUNEIFORM SIGN SACUNEIFORM SIGN SAG NUTILLUCUNEIFORM SIGN SAGCUNEIFORM S" + - "IGN SAG TIMES ACUNEIFORM SIGN SAG TIMES DUCUNEIFORM SIGN SAG TIMES DUBCU" + - "NEIFORM SIGN SAG TIMES HACUNEIFORM SIGN SAG TIMES KAKCUNEIFORM SIGN SAG " + - "TIMES KURCUNEIFORM SIGN SAG TIMES LUMCUNEIFORM SIGN SAG TIMES MICUNEIFOR" + - "M SIGN SAG TIMES NUNCUNEIFORM SIGN SAG TIMES SALCUNEIFORM SIGN SAG TIMES" + - " SHIDCUNEIFORM SIGN SAG TIMES TABCUNEIFORM SIGN SAG TIMES U2CUNEIFORM SI" + - "GN SAG TIMES UBCUNEIFORM SIGN SAG TIMES UMCUNEIFORM SIGN SAG TIMES URCUN" + - "EIFORM SIGN SAG TIMES USHCUNEIFORM SIGN SAG OVER SAGCUNEIFORM SIGN SAG G" + - "UNUCUNEIFORM SIGN SALCUNEIFORM SIGN SAL LAGAB TIMES ASH2CUNEIFORM SIGN S" + - "ANGA2CUNEIFORM SIGN SARCUNEIFORM SIGN SHACUNEIFORM SIGN SHA3CUNEIFORM SI" + - "GN SHA3 TIMES ACUNEIFORM SIGN SHA3 TIMES BADCUNEIFORM SIGN SHA3 TIMES GI" + - "SHCUNEIFORM SIGN SHA3 TIMES NECUNEIFORM SIGN SHA3 TIMES SHU2CUNEIFORM SI" + - "GN SHA3 TIMES TURCUNEIFORM SIGN SHA3 TIMES UCUNEIFORM SIGN SHA3 TIMES U " + - "PLUS ACUNEIFORM SIGN SHA6CUNEIFORM SIGN SHAB6CUNEIFORM SIGN SHAR2CUNEIFO" + - "RM SIGN SHECUNEIFORM SIGN SHE HUCUNEIFORM SIGN SHE OVER SHE GAD OVER GAD" + - " GAR OVER GARCUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GARCUNEIF" + - "ORM SIGN SHEG9CUNEIFORM SIGN SHENCUNEIFORM SIGN SHESHCUNEIFORM SIGN SHES") + ("" + - "H2CUNEIFORM SIGN SHESHLAMCUNEIFORM SIGN SHIDCUNEIFORM SIGN SHID TIMES AC" + - "UNEIFORM SIGN SHID TIMES IMCUNEIFORM SIGN SHIMCUNEIFORM SIGN SHIM TIMES " + - "ACUNEIFORM SIGN SHIM TIMES BALCUNEIFORM SIGN SHIM TIMES BULUGCUNEIFORM S" + - "IGN SHIM TIMES DINCUNEIFORM SIGN SHIM TIMES GARCUNEIFORM SIGN SHIM TIMES" + - " IGICUNEIFORM SIGN SHIM TIMES IGI GUNUCUNEIFORM SIGN SHIM TIMES KUSHU2CU" + - "NEIFORM SIGN SHIM TIMES LULCUNEIFORM SIGN SHIM TIMES MUGCUNEIFORM SIGN S" + - "HIM TIMES SALCUNEIFORM SIGN SHINIGCUNEIFORM SIGN SHIRCUNEIFORM SIGN SHIR" + - " TENUCUNEIFORM SIGN SHIR OVER SHIR BUR OVER BURCUNEIFORM SIGN SHITACUNEI" + - "FORM SIGN SHUCUNEIFORM SIGN SHU OVER INVERTED SHUCUNEIFORM SIGN SHU2CUNE" + - "IFORM SIGN SHUBURCUNEIFORM SIGN SICUNEIFORM SIGN SI GUNUCUNEIFORM SIGN S" + - "IGCUNEIFORM SIGN SIG4CUNEIFORM SIGN SIG4 OVER SIG4 SHU2CUNEIFORM SIGN SI" + - "K2CUNEIFORM SIGN SILA3CUNEIFORM SIGN SUCUNEIFORM SIGN SU OVER SUCUNEIFOR" + - "M SIGN SUDCUNEIFORM SIGN SUD2CUNEIFORM SIGN SUHURCUNEIFORM SIGN SUMCUNEI" + - "FORM SIGN SUMASHCUNEIFORM SIGN SURCUNEIFORM SIGN SUR9CUNEIFORM SIGN TACU" + - "NEIFORM SIGN TA ASTERISKCUNEIFORM SIGN TA TIMES HICUNEIFORM SIGN TA TIME" + - "S MICUNEIFORM SIGN TA GUNUCUNEIFORM SIGN TABCUNEIFORM SIGN TAB OVER TAB " + - "NI OVER NI DISH OVER DISHCUNEIFORM SIGN TAB SQUAREDCUNEIFORM SIGN TAGCUN" + - "EIFORM SIGN TAG TIMES BICUNEIFORM SIGN TAG TIMES GUDCUNEIFORM SIGN TAG T" + - "IMES SHECUNEIFORM SIGN TAG TIMES SHUCUNEIFORM SIGN TAG TIMES TUG2CUNEIFO" + - "RM SIGN TAG TIMES UDCUNEIFORM SIGN TAK4CUNEIFORM SIGN TARCUNEIFORM SIGN " + - "TECUNEIFORM SIGN TE GUNUCUNEIFORM SIGN TICUNEIFORM SIGN TI TENUCUNEIFORM" + - " SIGN TILCUNEIFORM SIGN TIRCUNEIFORM SIGN TIR TIMES TAK4CUNEIFORM SIGN T" + - "IR OVER TIRCUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GARCUNEIFOR" + - "M SIGN TUCUNEIFORM SIGN TUG2CUNEIFORM SIGN TUKCUNEIFORM SIGN TUMCUNEIFOR" + - "M SIGN TURCUNEIFORM SIGN TUR OVER TUR ZA OVER ZACUNEIFORM SIGN UCUNEIFOR" + - "M SIGN U GUDCUNEIFORM SIGN U U UCUNEIFORM SIGN U OVER U PA OVER PA GAR O" + - "VER GARCUNEIFORM SIGN U OVER U SUR OVER SURCUNEIFORM SIGN U OVER U U REV" + - "ERSED OVER U REVERSEDCUNEIFORM SIGN U2CUNEIFORM SIGN UBCUNEIFORM SIGN UD" + - "CUNEIFORM SIGN UD KUSHU2CUNEIFORM SIGN UD TIMES BADCUNEIFORM SIGN UD TIM" + - "ES MICUNEIFORM SIGN UD TIMES U PLUS U PLUS UCUNEIFORM SIGN UD TIMES U PL" + - "US U PLUS U GUNUCUNEIFORM SIGN UD GUNUCUNEIFORM SIGN UD SHESHIGCUNEIFORM" + - " SIGN UD SHESHIG TIMES BADCUNEIFORM SIGN UDUGCUNEIFORM SIGN UMCUNEIFORM " + - "SIGN UM TIMES LAGABCUNEIFORM SIGN UM TIMES ME PLUS DACUNEIFORM SIGN UM T" + - "IMES SHA3CUNEIFORM SIGN UM TIMES UCUNEIFORM SIGN UMBINCUNEIFORM SIGN UMU" + - "MCUNEIFORM SIGN UMUM TIMES KASKALCUNEIFORM SIGN UMUM TIMES PACUNEIFORM S" + - "IGN UNCUNEIFORM SIGN UN GUNUCUNEIFORM SIGN URCUNEIFORM SIGN UR CROSSING " + - "URCUNEIFORM SIGN UR SHESHIGCUNEIFORM SIGN UR2CUNEIFORM SIGN UR2 TIMES A " + - "PLUS HACUNEIFORM SIGN UR2 TIMES A PLUS NACUNEIFORM SIGN UR2 TIMES ALCUNE" + - "IFORM SIGN UR2 TIMES HACUNEIFORM SIGN UR2 TIMES NUNCUNEIFORM SIGN UR2 TI" + - "MES U2CUNEIFORM SIGN UR2 TIMES U2 PLUS ASHCUNEIFORM SIGN UR2 TIMES U2 PL" + - "US BICUNEIFORM SIGN UR4CUNEIFORM SIGN URICUNEIFORM SIGN URI3CUNEIFORM SI" + - "GN URUCUNEIFORM SIGN URU TIMES ACUNEIFORM SIGN URU TIMES ASHGABCUNEIFORM" + - " SIGN URU TIMES BARCUNEIFORM SIGN URU TIMES DUNCUNEIFORM SIGN URU TIMES " + - "GACUNEIFORM SIGN URU TIMES GALCUNEIFORM SIGN URU TIMES GAN2 TENUCUNEIFOR" + - "M SIGN URU TIMES GARCUNEIFORM SIGN URU TIMES GUCUNEIFORM SIGN URU TIMES " + - "HACUNEIFORM SIGN URU TIMES IGICUNEIFORM SIGN URU TIMES IMCUNEIFORM SIGN " + - "URU TIMES ISHCUNEIFORM SIGN URU TIMES KICUNEIFORM SIGN URU TIMES LUMCUNE" + - "IFORM SIGN URU TIMES MINCUNEIFORM SIGN URU TIMES PACUNEIFORM SIGN URU TI" + - "MES SHECUNEIFORM SIGN URU TIMES SIG4CUNEIFORM SIGN URU TIMES TUCUNEIFORM" + - " SIGN URU TIMES U PLUS GUDCUNEIFORM SIGN URU TIMES UDCUNEIFORM SIGN URU " + - "TIMES URUDACUNEIFORM SIGN URUDACUNEIFORM SIGN URUDA TIMES UCUNEIFORM SIG" + - "N USHCUNEIFORM SIGN USH TIMES ACUNEIFORM SIGN USH TIMES KUCUNEIFORM SIGN" + - " USH TIMES KURCUNEIFORM SIGN USH TIMES TAK4CUNEIFORM SIGN USHXCUNEIFORM " + - "SIGN USH2CUNEIFORM SIGN USHUMXCUNEIFORM SIGN UTUKICUNEIFORM SIGN UZ3CUNE" + - "IFORM SIGN UZ3 TIMES KASKALCUNEIFORM SIGN UZUCUNEIFORM SIGN ZACUNEIFORM " + - "SIGN ZA TENUCUNEIFORM SIGN ZA SQUARED TIMES KURCUNEIFORM SIGN ZAGCUNEIFO" + - "RM SIGN ZAMXCUNEIFORM SIGN ZE2CUNEIFORM SIGN ZICUNEIFORM SIGN ZI OVER ZI" + - "CUNEIFORM SIGN ZI3CUNEIFORM SIGN ZIBCUNEIFORM SIGN ZIB KABA TENUCUNEIFOR" + - "M SIGN ZIGCUNEIFORM SIGN ZIZ2CUNEIFORM SIGN ZUCUNEIFORM SIGN ZU5CUNEIFOR" + - "M SIGN ZU5 TIMES ACUNEIFORM SIGN ZUBURCUNEIFORM SIGN ZUMCUNEIFORM SIGN K" + - "AP ELAMITECUNEIFORM SIGN AB TIMES NUNCUNEIFORM SIGN AB2 TIMES ACUNEIFORM" + - " SIGN AMAR TIMES KUGCUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS MASHCUNEIFOR" + - "M SIGN DAG3CUNEIFORM SIGN DISH PLUS SHUCUNEIFORM SIGN DUB TIMES SHECUNEI" + - "FORM SIGN EZEN TIMES GUDCUNEIFORM SIGN EZEN TIMES SHECUNEIFORM SIGN GA2 ") + ("" + - "TIMES AN PLUS KAK PLUS ACUNEIFORM SIGN GA2 TIMES ASH2CUNEIFORM SIGN GE22" + - "CUNEIFORM SIGN GIGCUNEIFORM SIGN HUSHCUNEIFORM SIGN KA TIMES ANSHECUNEIF" + - "ORM SIGN KA TIMES ASH3CUNEIFORM SIGN KA TIMES GISHCUNEIFORM SIGN KA TIME" + - "S GUDCUNEIFORM SIGN KA TIMES HI TIMES ASH2CUNEIFORM SIGN KA TIMES LUMCUN" + - "EIFORM SIGN KA TIMES PACUNEIFORM SIGN KA TIMES SHULCUNEIFORM SIGN KA TIM" + - "ES TUCUNEIFORM SIGN KA TIMES UR2CUNEIFORM SIGN LAGAB TIMES GICUNEIFORM S" + - "IGN LU2 SHESHIG TIMES BADCUNEIFORM SIGN LU2 TIMES ESH2 PLUS LALCUNEIFORM" + - " SIGN LU2 TIMES SHUCUNEIFORM SIGN MESHCUNEIFORM SIGN MUSH3 TIMES ZACUNEI" + - "FORM SIGN NA4CUNEIFORM SIGN NINCUNEIFORM SIGN NIN9CUNEIFORM SIGN NINDA2 " + - "TIMES BALCUNEIFORM SIGN NINDA2 TIMES GICUNEIFORM SIGN NU11 ROTATED NINET" + - "Y DEGREESCUNEIFORM SIGN PESH2 ASTERISKCUNEIFORM SIGN PIR2CUNEIFORM SIGN " + - "SAG TIMES IGI GUNUCUNEIFORM SIGN TI2CUNEIFORM SIGN UM TIMES MECUNEIFORM " + - "SIGN U UCUNEIFORM NUMERIC SIGN TWO ASHCUNEIFORM NUMERIC SIGN THREE ASHCU" + - "NEIFORM NUMERIC SIGN FOUR ASHCUNEIFORM NUMERIC SIGN FIVE ASHCUNEIFORM NU" + - "MERIC SIGN SIX ASHCUNEIFORM NUMERIC SIGN SEVEN ASHCUNEIFORM NUMERIC SIGN" + - " EIGHT ASHCUNEIFORM NUMERIC SIGN NINE ASHCUNEIFORM NUMERIC SIGN THREE DI" + - "SHCUNEIFORM NUMERIC SIGN FOUR DISHCUNEIFORM NUMERIC SIGN FIVE DISHCUNEIF" + - "ORM NUMERIC SIGN SIX DISHCUNEIFORM NUMERIC SIGN SEVEN DISHCUNEIFORM NUME" + - "RIC SIGN EIGHT DISHCUNEIFORM NUMERIC SIGN NINE DISHCUNEIFORM NUMERIC SIG" + - "N FOUR UCUNEIFORM NUMERIC SIGN FIVE UCUNEIFORM NUMERIC SIGN SIX UCUNEIFO" + - "RM NUMERIC SIGN SEVEN UCUNEIFORM NUMERIC SIGN EIGHT UCUNEIFORM NUMERIC S" + - "IGN NINE UCUNEIFORM NUMERIC SIGN ONE GESH2CUNEIFORM NUMERIC SIGN TWO GES" + - "H2CUNEIFORM NUMERIC SIGN THREE GESH2CUNEIFORM NUMERIC SIGN FOUR GESH2CUN" + - "EIFORM NUMERIC SIGN FIVE GESH2CUNEIFORM NUMERIC SIGN SIX GESH2CUNEIFORM " + - "NUMERIC SIGN SEVEN GESH2CUNEIFORM NUMERIC SIGN EIGHT GESH2CUNEIFORM NUME" + - "RIC SIGN NINE GESH2CUNEIFORM NUMERIC SIGN ONE GESHUCUNEIFORM NUMERIC SIG" + - "N TWO GESHUCUNEIFORM NUMERIC SIGN THREE GESHUCUNEIFORM NUMERIC SIGN FOUR" + - " GESHUCUNEIFORM NUMERIC SIGN FIVE GESHUCUNEIFORM NUMERIC SIGN TWO SHAR2C" + - "UNEIFORM NUMERIC SIGN THREE SHAR2CUNEIFORM NUMERIC SIGN THREE SHAR2 VARI" + - "ANT FORMCUNEIFORM NUMERIC SIGN FOUR SHAR2CUNEIFORM NUMERIC SIGN FIVE SHA" + - "R2CUNEIFORM NUMERIC SIGN SIX SHAR2CUNEIFORM NUMERIC SIGN SEVEN SHAR2CUNE" + - "IFORM NUMERIC SIGN EIGHT SHAR2CUNEIFORM NUMERIC SIGN NINE SHAR2CUNEIFORM" + - " NUMERIC SIGN ONE SHARUCUNEIFORM NUMERIC SIGN TWO SHARUCUNEIFORM NUMERIC" + - " SIGN THREE SHARUCUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORMCUNEIFOR" + - "M NUMERIC SIGN FOUR SHARUCUNEIFORM NUMERIC SIGN FIVE SHARUCUNEIFORM NUME" + - "RIC SIGN SHAR2 TIMES GAL PLUS DISHCUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL" + - " PLUS MINCUNEIFORM NUMERIC SIGN ONE BURUCUNEIFORM NUMERIC SIGN TWO BURUC" + - "UNEIFORM NUMERIC SIGN THREE BURUCUNEIFORM NUMERIC SIGN THREE BURU VARIAN" + - "T FORMCUNEIFORM NUMERIC SIGN FOUR BURUCUNEIFORM NUMERIC SIGN FIVE BURUCU" + - "NEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16CUNEIFORM NUMERIC SIGN THRE" + - "E VARIANT FORM ESH21CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMUCUNEIF" + - "ORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4CUNEIFORM NUMERIC SIGN FOUR VAR" + - "IANT FORM LIMMU ACUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU BCUNEIFO" + - "RM NUMERIC SIGN SIX VARIANT FORM ASH9CUNEIFORM NUMERIC SIGN SEVEN VARIAN" + - "T FORM IMIN3CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN ACUNEIFORM NU" + - "MERIC SIGN SEVEN VARIANT FORM IMIN BCUNEIFORM NUMERIC SIGN EIGHT VARIANT" + - " FORM USSUCUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3CUNEIFORM NUMER" + - "IC SIGN NINE VARIANT FORM ILIMMUCUNEIFORM NUMERIC SIGN NINE VARIANT FORM" + - " ILIMMU3CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4CUNEIFORM NUMERI" + - "C SIGN NINE VARIANT FORM ILIMMU ACUNEIFORM NUMERIC SIGN TWO ASH TENUCUNE" + - "IFORM NUMERIC SIGN THREE ASH TENUCUNEIFORM NUMERIC SIGN FOUR ASH TENUCUN" + - "EIFORM NUMERIC SIGN FIVE ASH TENUCUNEIFORM NUMERIC SIGN SIX ASH TENUCUNE" + - "IFORM NUMERIC SIGN ONE BAN2CUNEIFORM NUMERIC SIGN TWO BAN2CUNEIFORM NUME" + - "RIC SIGN THREE BAN2CUNEIFORM NUMERIC SIGN FOUR BAN2CUNEIFORM NUMERIC SIG" + - "N FOUR BAN2 VARIANT FORMCUNEIFORM NUMERIC SIGN FIVE BAN2CUNEIFORM NUMERI" + - "C SIGN FIVE BAN2 VARIANT FORMCUNEIFORM NUMERIC SIGN NIGIDAMINCUNEIFORM N" + - "UMERIC SIGN NIGIDAESHCUNEIFORM NUMERIC SIGN ONE ESHE3CUNEIFORM NUMERIC S" + - "IGN TWO ESHE3CUNEIFORM NUMERIC SIGN ONE THIRD DISHCUNEIFORM NUMERIC SIGN" + - " TWO THIRDS DISHCUNEIFORM NUMERIC SIGN FIVE SIXTHS DISHCUNEIFORM NUMERIC" + - " SIGN ONE THIRD VARIANT FORM ACUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT " + - "FORM ACUNEIFORM NUMERIC SIGN ONE EIGHTH ASHCUNEIFORM NUMERIC SIGN ONE QU" + - "ARTER ASHCUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTHCUNEIFORM NUMERIC " + - "SIGN OLD ASSYRIAN ONE QUARTERCUNEIFORM NUMERIC SIGN ONE QUARTER GURCUNEI" + - "FORM NUMERIC SIGN ONE HALF GURCUNEIFORM NUMERIC SIGN ELAMITE ONE THIRDCU") + ("" + - "NEIFORM NUMERIC SIGN ELAMITE TWO THIRDSCUNEIFORM NUMERIC SIGN ELAMITE FO" + - "RTYCUNEIFORM NUMERIC SIGN ELAMITE FIFTYCUNEIFORM NUMERIC SIGN FOUR U VAR" + - "IANT FORMCUNEIFORM NUMERIC SIGN FIVE U VARIANT FORMCUNEIFORM NUMERIC SIG" + - "N SIX U VARIANT FORMCUNEIFORM NUMERIC SIGN SEVEN U VARIANT FORMCUNEIFORM" + - " NUMERIC SIGN EIGHT U VARIANT FORMCUNEIFORM NUMERIC SIGN NINE U VARIANT " + - "FORMCUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDERCUNEIFORM PUNCTU" + - "ATION SIGN VERTICAL COLONCUNEIFORM PUNCTUATION SIGN DIAGONAL COLONCUNEIF" + - "ORM PUNCTUATION SIGN DIAGONAL TRICOLONCUNEIFORM PUNCTUATION SIGN DIAGONA" + - "L QUADCOLONCUNEIFORM SIGN AB TIMES NUN TENUCUNEIFORM SIGN AB TIMES SHU2C" + - "UNEIFORM SIGN AD TIMES ESH2CUNEIFORM SIGN BAD TIMES DISH TENUCUNEIFORM S" + - "IGN BAHAR2 TIMES AB2CUNEIFORM SIGN BAHAR2 TIMES NICUNEIFORM SIGN BAHAR2 " + - "TIMES ZACUNEIFORM SIGN BU OVER BU TIMES NA2CUNEIFORM SIGN DA TIMES TAK4C" + - "UNEIFORM SIGN DAG TIMES KURCUNEIFORM SIGN DIM TIMES IGICUNEIFORM SIGN DI" + - "M TIMES U U UCUNEIFORM SIGN DIM2 TIMES UDCUNEIFORM SIGN DUG TIMES ANSHEC" + - "UNEIFORM SIGN DUG TIMES ASHCUNEIFORM SIGN DUG TIMES ASH AT LEFTCUNEIFORM" + - " SIGN DUG TIMES DINCUNEIFORM SIGN DUG TIMES DUNCUNEIFORM SIGN DUG TIMES " + - "ERIN2CUNEIFORM SIGN DUG TIMES GACUNEIFORM SIGN DUG TIMES GICUNEIFORM SIG" + - "N DUG TIMES GIR2 GUNUCUNEIFORM SIGN DUG TIMES GISHCUNEIFORM SIGN DUG TIM" + - "ES HACUNEIFORM SIGN DUG TIMES HICUNEIFORM SIGN DUG TIMES IGI GUNUCUNEIFO" + - "RM SIGN DUG TIMES KASKALCUNEIFORM SIGN DUG TIMES KURCUNEIFORM SIGN DUG T" + - "IMES KUSHU2CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKALCUNEIFORM SIGN DUG" + - " TIMES LAK-020CUNEIFORM SIGN DUG TIMES LAMCUNEIFORM SIGN DUG TIMES LAM T" + - "IMES KURCUNEIFORM SIGN DUG TIMES LUH PLUS GISHCUNEIFORM SIGN DUG TIMES M" + - "ASHCUNEIFORM SIGN DUG TIMES MESCUNEIFORM SIGN DUG TIMES MICUNEIFORM SIGN" + - " DUG TIMES NICUNEIFORM SIGN DUG TIMES PICUNEIFORM SIGN DUG TIMES SHECUNE" + - "IFORM SIGN DUG TIMES SI GUNUCUNEIFORM SIGN E2 TIMES KURCUNEIFORM SIGN E2" + - " TIMES PAPCUNEIFORM SIGN ERIN2 XCUNEIFORM SIGN ESH2 CROSSING ESH2CUNEIFO" + - "RM SIGN EZEN SHESHIG TIMES ASHCUNEIFORM SIGN EZEN SHESHIG TIMES HICUNEIF" + - "ORM SIGN EZEN SHESHIG TIMES IGI GUNUCUNEIFORM SIGN EZEN SHESHIG TIMES LA" + - "CUNEIFORM SIGN EZEN SHESHIG TIMES LALCUNEIFORM SIGN EZEN SHESHIG TIMES M" + - "ECUNEIFORM SIGN EZEN SHESHIG TIMES MESCUNEIFORM SIGN EZEN SHESHIG TIMES " + - "SUCUNEIFORM SIGN EZEN TIMES SUCUNEIFORM SIGN GA2 TIMES BAHAR2CUNEIFORM S" + - "IGN GA2 TIMES DIM GUNUCUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNUCUNEIFO" + - "RM SIGN GA2 TIMES DUG TIMES KASKALCUNEIFORM SIGN GA2 TIMES ERENCUNEIFORM" + - " SIGN GA2 TIMES GACUNEIFORM SIGN GA2 TIMES GAR PLUS DICUNEIFORM SIGN GA2" + - " TIMES GAR PLUS NECUNEIFORM SIGN GA2 TIMES HA PLUS ACUNEIFORM SIGN GA2 T" + - "IMES KUSHU2 PLUS KASKALCUNEIFORM SIGN GA2 TIMES LAMCUNEIFORM SIGN GA2 TI" + - "MES LAM TIMES KURCUNEIFORM SIGN GA2 TIMES LUHCUNEIFORM SIGN GA2 TIMES MU" + - "SHCUNEIFORM SIGN GA2 TIMES NECUNEIFORM SIGN GA2 TIMES NE PLUS E2CUNEIFOR" + - "M SIGN GA2 TIMES NE PLUS GICUNEIFORM SIGN GA2 TIMES SHIMCUNEIFORM SIGN G" + - "A2 TIMES ZIZ2CUNEIFORM SIGN GABA ROTATED NINETY DEGREESCUNEIFORM SIGN GE" + - "SHTIN TIMES UCUNEIFORM SIGN GISH TIMES GISH CROSSING GISHCUNEIFORM SIGN " + - "GU2 TIMES IGI GUNUCUNEIFORM SIGN GUD PLUS GISH TIMES TAK4CUNEIFORM SIGN " + - "HA TENU GUNUCUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASHCUNEIFORM SIGN " + - "KA TIMES BUCUNEIFORM SIGN KA TIMES KACUNEIFORM SIGN KA TIMES U U UCUNEIF" + - "ORM SIGN KA TIMES URCUNEIFORM SIGN LAGAB TIMES ZU OVER ZUCUNEIFORM SIGN " + - "LAK-003CUNEIFORM SIGN LAK-021CUNEIFORM SIGN LAK-025CUNEIFORM SIGN LAK-03" + - "0CUNEIFORM SIGN LAK-050CUNEIFORM SIGN LAK-051CUNEIFORM SIGN LAK-062CUNEI" + - "FORM SIGN LAK-079 OVER LAK-079 GUNUCUNEIFORM SIGN LAK-080CUNEIFORM SIGN " + - "LAK-081 OVER LAK-081CUNEIFORM SIGN LAK-092CUNEIFORM SIGN LAK-130CUNEIFOR" + - "M SIGN LAK-142CUNEIFORM SIGN LAK-210CUNEIFORM SIGN LAK-219CUNEIFORM SIGN" + - " LAK-220CUNEIFORM SIGN LAK-225CUNEIFORM SIGN LAK-228CUNEIFORM SIGN LAK-2" + - "38CUNEIFORM SIGN LAK-265CUNEIFORM SIGN LAK-266CUNEIFORM SIGN LAK-343CUNE" + - "IFORM SIGN LAK-347CUNEIFORM SIGN LAK-348CUNEIFORM SIGN LAK-383CUNEIFORM " + - "SIGN LAK-384CUNEIFORM SIGN LAK-390CUNEIFORM SIGN LAK-441CUNEIFORM SIGN L" + - "AK-449CUNEIFORM SIGN LAK-449 TIMES GUCUNEIFORM SIGN LAK-449 TIMES IGICUN" + - "EIFORM SIGN LAK-449 TIMES PAP PLUS LU3CUNEIFORM SIGN LAK-449 TIMES PAP P" + - "LUS PAP PLUS LU3CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BACUNEIFORM SIGN LA" + - "K-450CUNEIFORM SIGN LAK-457CUNEIFORM SIGN LAK-470CUNEIFORM SIGN LAK-483C" + - "UNEIFORM SIGN LAK-490CUNEIFORM SIGN LAK-492CUNEIFORM SIGN LAK-493CUNEIFO" + - "RM SIGN LAK-495CUNEIFORM SIGN LAK-550CUNEIFORM SIGN LAK-608CUNEIFORM SIG" + - "N LAK-617CUNEIFORM SIGN LAK-617 TIMES ASHCUNEIFORM SIGN LAK-617 TIMES BA" + - "DCUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNUCUNEIFORM SIGN LAK-617 TIMES" + - " KU3CUNEIFORM SIGN LAK-617 TIMES LACUNEIFORM SIGN LAK-617 TIMES TARCUNEI") + ("" + - "FORM SIGN LAK-617 TIMES TECUNEIFORM SIGN LAK-617 TIMES U2CUNEIFORM SIGN " + - "LAK-617 TIMES UDCUNEIFORM SIGN LAK-617 TIMES URUDACUNEIFORM SIGN LAK-636" + - "CUNEIFORM SIGN LAK-648CUNEIFORM SIGN LAK-648 TIMES DUBCUNEIFORM SIGN LAK" + - "-648 TIMES GACUNEIFORM SIGN LAK-648 TIMES IGICUNEIFORM SIGN LAK-648 TIME" + - "S IGI GUNUCUNEIFORM SIGN LAK-648 TIMES NICUNEIFORM SIGN LAK-648 TIMES PA" + - "P PLUS PAP PLUS LU3CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KICUNEIFORM S" + - "IGN LAK-648 TIMES UDCUNEIFORM SIGN LAK-648 TIMES URUDACUNEIFORM SIGN LAK" + - "-724CUNEIFORM SIGN LAK-749CUNEIFORM SIGN LU2 GUNU TIMES ASHCUNEIFORM SIG" + - "N LU2 TIMES DISHCUNEIFORM SIGN LU2 TIMES HALCUNEIFORM SIGN LU2 TIMES PAP" + - "CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3CUNEIFORM SIGN LU2 TIMES T" + - "AK4CUNEIFORM SIGN MI PLUS ZA7CUNEIFORM SIGN MUSH OVER MUSH TIMES GACUNEI" + - "FORM SIGN MUSH OVER MUSH TIMES KAKCUNEIFORM SIGN NINDA2 TIMES DIM GUNUCU" + - "NEIFORM SIGN NINDA2 TIMES GISHCUNEIFORM SIGN NINDA2 TIMES GULCUNEIFORM S" + - "IGN NINDA2 TIMES HICUNEIFORM SIGN NINDA2 TIMES KESH2CUNEIFORM SIGN NINDA" + - "2 TIMES LAK-050CUNEIFORM SIGN NINDA2 TIMES MASHCUNEIFORM SIGN NINDA2 TIM" + - "ES PAP PLUS PAPCUNEIFORM SIGN NINDA2 TIMES UCUNEIFORM SIGN NINDA2 TIMES " + - "U PLUS UCUNEIFORM SIGN NINDA2 TIMES URUDACUNEIFORM SIGN SAG GUNU TIMES H" + - "ACUNEIFORM SIGN SAG TIMES ENCUNEIFORM SIGN SAG TIMES SHE AT LEFTCUNEIFOR" + - "M SIGN SAG TIMES TAK4CUNEIFORM SIGN SHA6 TENUCUNEIFORM SIGN SHE OVER SHE" + - "CUNEIFORM SIGN SHE PLUS HUB2CUNEIFORM SIGN SHE PLUS NAM2CUNEIFORM SIGN S" + - "HE PLUS SARCUNEIFORM SIGN SHU2 PLUS DUG TIMES NICUNEIFORM SIGN SHU2 PLUS" + - " E2 TIMES ANCUNEIFORM SIGN SI TIMES TAK4CUNEIFORM SIGN TAK4 PLUS SAGCUNE" + - "IFORM SIGN TUM TIMES GAN2 TENUCUNEIFORM SIGN TUM TIMES THREE DISHCUNEIFO" + - "RM SIGN UR2 INVERTEDCUNEIFORM SIGN UR2 TIMES UDCUNEIFORM SIGN URU TIMES " + - "DARA3CUNEIFORM SIGN URU TIMES LAK-668CUNEIFORM SIGN URU TIMES LU3CUNEIFO" + - "RM SIGN ZA7CUNEIFORM SIGN ZU OVER ZU PLUS SARCUNEIFORM SIGN ZU5 TIMES TH" + - "REE DISH TENUEGYPTIAN HIEROGLYPH A001EGYPTIAN HIEROGLYPH A002EGYPTIAN HI" + - "EROGLYPH A003EGYPTIAN HIEROGLYPH A004EGYPTIAN HIEROGLYPH A005EGYPTIAN HI" + - "EROGLYPH A005AEGYPTIAN HIEROGLYPH A006EGYPTIAN HIEROGLYPH A006AEGYPTIAN " + - "HIEROGLYPH A006BEGYPTIAN HIEROGLYPH A007EGYPTIAN HIEROGLYPH A008EGYPTIAN" + - " HIEROGLYPH A009EGYPTIAN HIEROGLYPH A010EGYPTIAN HIEROGLYPH A011EGYPTIAN" + - " HIEROGLYPH A012EGYPTIAN HIEROGLYPH A013EGYPTIAN HIEROGLYPH A014EGYPTIAN" + - " HIEROGLYPH A014AEGYPTIAN HIEROGLYPH A015EGYPTIAN HIEROGLYPH A016EGYPTIA" + - "N HIEROGLYPH A017EGYPTIAN HIEROGLYPH A017AEGYPTIAN HIEROGLYPH A018EGYPTI" + - "AN HIEROGLYPH A019EGYPTIAN HIEROGLYPH A020EGYPTIAN HIEROGLYPH A021EGYPTI" + - "AN HIEROGLYPH A022EGYPTIAN HIEROGLYPH A023EGYPTIAN HIEROGLYPH A024EGYPTI" + - "AN HIEROGLYPH A025EGYPTIAN HIEROGLYPH A026EGYPTIAN HIEROGLYPH A027EGYPTI" + - "AN HIEROGLYPH A028EGYPTIAN HIEROGLYPH A029EGYPTIAN HIEROGLYPH A030EGYPTI" + - "AN HIEROGLYPH A031EGYPTIAN HIEROGLYPH A032EGYPTIAN HIEROGLYPH A032AEGYPT" + - "IAN HIEROGLYPH A033EGYPTIAN HIEROGLYPH A034EGYPTIAN HIEROGLYPH A035EGYPT" + - "IAN HIEROGLYPH A036EGYPTIAN HIEROGLYPH A037EGYPTIAN HIEROGLYPH A038EGYPT" + - "IAN HIEROGLYPH A039EGYPTIAN HIEROGLYPH A040EGYPTIAN HIEROGLYPH A040AEGYP" + - "TIAN HIEROGLYPH A041EGYPTIAN HIEROGLYPH A042EGYPTIAN HIEROGLYPH A042AEGY" + - "PTIAN HIEROGLYPH A043EGYPTIAN HIEROGLYPH A043AEGYPTIAN HIEROGLYPH A044EG" + - "YPTIAN HIEROGLYPH A045EGYPTIAN HIEROGLYPH A045AEGYPTIAN HIEROGLYPH A046E" + - "GYPTIAN HIEROGLYPH A047EGYPTIAN HIEROGLYPH A048EGYPTIAN HIEROGLYPH A049E" + - "GYPTIAN HIEROGLYPH A050EGYPTIAN HIEROGLYPH A051EGYPTIAN HIEROGLYPH A052E" + - "GYPTIAN HIEROGLYPH A053EGYPTIAN HIEROGLYPH A054EGYPTIAN HIEROGLYPH A055E" + - "GYPTIAN HIEROGLYPH A056EGYPTIAN HIEROGLYPH A057EGYPTIAN HIEROGLYPH A058E" + - "GYPTIAN HIEROGLYPH A059EGYPTIAN HIEROGLYPH A060EGYPTIAN HIEROGLYPH A061E" + - "GYPTIAN HIEROGLYPH A062EGYPTIAN HIEROGLYPH A063EGYPTIAN HIEROGLYPH A064E" + - "GYPTIAN HIEROGLYPH A065EGYPTIAN HIEROGLYPH A066EGYPTIAN HIEROGLYPH A067E" + - "GYPTIAN HIEROGLYPH A068EGYPTIAN HIEROGLYPH A069EGYPTIAN HIEROGLYPH A070E" + - "GYPTIAN HIEROGLYPH B001EGYPTIAN HIEROGLYPH B002EGYPTIAN HIEROGLYPH B003E" + - "GYPTIAN HIEROGLYPH B004EGYPTIAN HIEROGLYPH B005EGYPTIAN HIEROGLYPH B005A" + - "EGYPTIAN HIEROGLYPH B006EGYPTIAN HIEROGLYPH B007EGYPTIAN HIEROGLYPH B008" + - "EGYPTIAN HIEROGLYPH B009EGYPTIAN HIEROGLYPH C001EGYPTIAN HIEROGLYPH C002" + - "EGYPTIAN HIEROGLYPH C002AEGYPTIAN HIEROGLYPH C002BEGYPTIAN HIEROGLYPH C0" + - "02CEGYPTIAN HIEROGLYPH C003EGYPTIAN HIEROGLYPH C004EGYPTIAN HIEROGLYPH C" + - "005EGYPTIAN HIEROGLYPH C006EGYPTIAN HIEROGLYPH C007EGYPTIAN HIEROGLYPH C" + - "008EGYPTIAN HIEROGLYPH C009EGYPTIAN HIEROGLYPH C010EGYPTIAN HIEROGLYPH C" + - "010AEGYPTIAN HIEROGLYPH C011EGYPTIAN HIEROGLYPH C012EGYPTIAN HIEROGLYPH " + - "C013EGYPTIAN HIEROGLYPH C014EGYPTIAN HIEROGLYPH C015EGYPTIAN HIEROGLYPH " + - "C016EGYPTIAN HIEROGLYPH C017EGYPTIAN HIEROGLYPH C018EGYPTIAN HIEROGLYPH ") + ("" + - "C019EGYPTIAN HIEROGLYPH C020EGYPTIAN HIEROGLYPH C021EGYPTIAN HIEROGLYPH " + - "C022EGYPTIAN HIEROGLYPH C023EGYPTIAN HIEROGLYPH C024EGYPTIAN HIEROGLYPH " + - "D001EGYPTIAN HIEROGLYPH D002EGYPTIAN HIEROGLYPH D003EGYPTIAN HIEROGLYPH " + - "D004EGYPTIAN HIEROGLYPH D005EGYPTIAN HIEROGLYPH D006EGYPTIAN HIEROGLYPH " + - "D007EGYPTIAN HIEROGLYPH D008EGYPTIAN HIEROGLYPH D008AEGYPTIAN HIEROGLYPH" + - " D009EGYPTIAN HIEROGLYPH D010EGYPTIAN HIEROGLYPH D011EGYPTIAN HIEROGLYPH" + - " D012EGYPTIAN HIEROGLYPH D013EGYPTIAN HIEROGLYPH D014EGYPTIAN HIEROGLYPH" + - " D015EGYPTIAN HIEROGLYPH D016EGYPTIAN HIEROGLYPH D017EGYPTIAN HIEROGLYPH" + - " D018EGYPTIAN HIEROGLYPH D019EGYPTIAN HIEROGLYPH D020EGYPTIAN HIEROGLYPH" + - " D021EGYPTIAN HIEROGLYPH D022EGYPTIAN HIEROGLYPH D023EGYPTIAN HIEROGLYPH" + - " D024EGYPTIAN HIEROGLYPH D025EGYPTIAN HIEROGLYPH D026EGYPTIAN HIEROGLYPH" + - " D027EGYPTIAN HIEROGLYPH D027AEGYPTIAN HIEROGLYPH D028EGYPTIAN HIEROGLYP" + - "H D029EGYPTIAN HIEROGLYPH D030EGYPTIAN HIEROGLYPH D031EGYPTIAN HIEROGLYP" + - "H D031AEGYPTIAN HIEROGLYPH D032EGYPTIAN HIEROGLYPH D033EGYPTIAN HIEROGLY" + - "PH D034EGYPTIAN HIEROGLYPH D034AEGYPTIAN HIEROGLYPH D035EGYPTIAN HIEROGL" + - "YPH D036EGYPTIAN HIEROGLYPH D037EGYPTIAN HIEROGLYPH D038EGYPTIAN HIEROGL" + - "YPH D039EGYPTIAN HIEROGLYPH D040EGYPTIAN HIEROGLYPH D041EGYPTIAN HIEROGL" + - "YPH D042EGYPTIAN HIEROGLYPH D043EGYPTIAN HIEROGLYPH D044EGYPTIAN HIEROGL" + - "YPH D045EGYPTIAN HIEROGLYPH D046EGYPTIAN HIEROGLYPH D046AEGYPTIAN HIEROG" + - "LYPH D047EGYPTIAN HIEROGLYPH D048EGYPTIAN HIEROGLYPH D048AEGYPTIAN HIERO" + - "GLYPH D049EGYPTIAN HIEROGLYPH D050EGYPTIAN HIEROGLYPH D050AEGYPTIAN HIER" + - "OGLYPH D050BEGYPTIAN HIEROGLYPH D050CEGYPTIAN HIEROGLYPH D050DEGYPTIAN H" + - "IEROGLYPH D050EEGYPTIAN HIEROGLYPH D050FEGYPTIAN HIEROGLYPH D050GEGYPTIA" + - "N HIEROGLYPH D050HEGYPTIAN HIEROGLYPH D050IEGYPTIAN HIEROGLYPH D051EGYPT" + - "IAN HIEROGLYPH D052EGYPTIAN HIEROGLYPH D052AEGYPTIAN HIEROGLYPH D053EGYP" + - "TIAN HIEROGLYPH D054EGYPTIAN HIEROGLYPH D054AEGYPTIAN HIEROGLYPH D055EGY" + - "PTIAN HIEROGLYPH D056EGYPTIAN HIEROGLYPH D057EGYPTIAN HIEROGLYPH D058EGY" + - "PTIAN HIEROGLYPH D059EGYPTIAN HIEROGLYPH D060EGYPTIAN HIEROGLYPH D061EGY" + - "PTIAN HIEROGLYPH D062EGYPTIAN HIEROGLYPH D063EGYPTIAN HIEROGLYPH D064EGY" + - "PTIAN HIEROGLYPH D065EGYPTIAN HIEROGLYPH D066EGYPTIAN HIEROGLYPH D067EGY" + - "PTIAN HIEROGLYPH D067AEGYPTIAN HIEROGLYPH D067BEGYPTIAN HIEROGLYPH D067C" + - "EGYPTIAN HIEROGLYPH D067DEGYPTIAN HIEROGLYPH D067EEGYPTIAN HIEROGLYPH D0" + - "67FEGYPTIAN HIEROGLYPH D067GEGYPTIAN HIEROGLYPH D067HEGYPTIAN HIEROGLYPH" + - " E001EGYPTIAN HIEROGLYPH E002EGYPTIAN HIEROGLYPH E003EGYPTIAN HIEROGLYPH" + - " E004EGYPTIAN HIEROGLYPH E005EGYPTIAN HIEROGLYPH E006EGYPTIAN HIEROGLYPH" + - " E007EGYPTIAN HIEROGLYPH E008EGYPTIAN HIEROGLYPH E008AEGYPTIAN HIEROGLYP" + - "H E009EGYPTIAN HIEROGLYPH E009AEGYPTIAN HIEROGLYPH E010EGYPTIAN HIEROGLY" + - "PH E011EGYPTIAN HIEROGLYPH E012EGYPTIAN HIEROGLYPH E013EGYPTIAN HIEROGLY" + - "PH E014EGYPTIAN HIEROGLYPH E015EGYPTIAN HIEROGLYPH E016EGYPTIAN HIEROGLY" + - "PH E016AEGYPTIAN HIEROGLYPH E017EGYPTIAN HIEROGLYPH E017AEGYPTIAN HIEROG" + - "LYPH E018EGYPTIAN HIEROGLYPH E019EGYPTIAN HIEROGLYPH E020EGYPTIAN HIEROG" + - "LYPH E020AEGYPTIAN HIEROGLYPH E021EGYPTIAN HIEROGLYPH E022EGYPTIAN HIERO" + - "GLYPH E023EGYPTIAN HIEROGLYPH E024EGYPTIAN HIEROGLYPH E025EGYPTIAN HIERO" + - "GLYPH E026EGYPTIAN HIEROGLYPH E027EGYPTIAN HIEROGLYPH E028EGYPTIAN HIERO" + - "GLYPH E028AEGYPTIAN HIEROGLYPH E029EGYPTIAN HIEROGLYPH E030EGYPTIAN HIER" + - "OGLYPH E031EGYPTIAN HIEROGLYPH E032EGYPTIAN HIEROGLYPH E033EGYPTIAN HIER" + - "OGLYPH E034EGYPTIAN HIEROGLYPH E034AEGYPTIAN HIEROGLYPH E036EGYPTIAN HIE" + - "ROGLYPH E037EGYPTIAN HIEROGLYPH E038EGYPTIAN HIEROGLYPH F001EGYPTIAN HIE" + - "ROGLYPH F001AEGYPTIAN HIEROGLYPH F002EGYPTIAN HIEROGLYPH F003EGYPTIAN HI" + - "EROGLYPH F004EGYPTIAN HIEROGLYPH F005EGYPTIAN HIEROGLYPH F006EGYPTIAN HI" + - "EROGLYPH F007EGYPTIAN HIEROGLYPH F008EGYPTIAN HIEROGLYPH F009EGYPTIAN HI" + - "EROGLYPH F010EGYPTIAN HIEROGLYPH F011EGYPTIAN HIEROGLYPH F012EGYPTIAN HI" + - "EROGLYPH F013EGYPTIAN HIEROGLYPH F013AEGYPTIAN HIEROGLYPH F014EGYPTIAN H" + - "IEROGLYPH F015EGYPTIAN HIEROGLYPH F016EGYPTIAN HIEROGLYPH F017EGYPTIAN H" + - "IEROGLYPH F018EGYPTIAN HIEROGLYPH F019EGYPTIAN HIEROGLYPH F020EGYPTIAN H" + - "IEROGLYPH F021EGYPTIAN HIEROGLYPH F021AEGYPTIAN HIEROGLYPH F022EGYPTIAN " + - "HIEROGLYPH F023EGYPTIAN HIEROGLYPH F024EGYPTIAN HIEROGLYPH F025EGYPTIAN " + - "HIEROGLYPH F026EGYPTIAN HIEROGLYPH F027EGYPTIAN HIEROGLYPH F028EGYPTIAN " + - "HIEROGLYPH F029EGYPTIAN HIEROGLYPH F030EGYPTIAN HIEROGLYPH F031EGYPTIAN " + - "HIEROGLYPH F031AEGYPTIAN HIEROGLYPH F032EGYPTIAN HIEROGLYPH F033EGYPTIAN" + - " HIEROGLYPH F034EGYPTIAN HIEROGLYPH F035EGYPTIAN HIEROGLYPH F036EGYPTIAN" + - " HIEROGLYPH F037EGYPTIAN HIEROGLYPH F037AEGYPTIAN HIEROGLYPH F038EGYPTIA" + - "N HIEROGLYPH F038AEGYPTIAN HIEROGLYPH F039EGYPTIAN HIEROGLYPH F040EGYPTI" + - "AN HIEROGLYPH F041EGYPTIAN HIEROGLYPH F042EGYPTIAN HIEROGLYPH F043EGYPTI") + ("" + - "AN HIEROGLYPH F044EGYPTIAN HIEROGLYPH F045EGYPTIAN HIEROGLYPH F045AEGYPT" + - "IAN HIEROGLYPH F046EGYPTIAN HIEROGLYPH F046AEGYPTIAN HIEROGLYPH F047EGYP" + - "TIAN HIEROGLYPH F047AEGYPTIAN HIEROGLYPH F048EGYPTIAN HIEROGLYPH F049EGY" + - "PTIAN HIEROGLYPH F050EGYPTIAN HIEROGLYPH F051EGYPTIAN HIEROGLYPH F051AEG" + - "YPTIAN HIEROGLYPH F051BEGYPTIAN HIEROGLYPH F051CEGYPTIAN HIEROGLYPH F052" + - "EGYPTIAN HIEROGLYPH F053EGYPTIAN HIEROGLYPH G001EGYPTIAN HIEROGLYPH G002" + - "EGYPTIAN HIEROGLYPH G003EGYPTIAN HIEROGLYPH G004EGYPTIAN HIEROGLYPH G005" + - "EGYPTIAN HIEROGLYPH G006EGYPTIAN HIEROGLYPH G006AEGYPTIAN HIEROGLYPH G00" + - "7EGYPTIAN HIEROGLYPH G007AEGYPTIAN HIEROGLYPH G007BEGYPTIAN HIEROGLYPH G" + - "008EGYPTIAN HIEROGLYPH G009EGYPTIAN HIEROGLYPH G010EGYPTIAN HIEROGLYPH G" + - "011EGYPTIAN HIEROGLYPH G011AEGYPTIAN HIEROGLYPH G012EGYPTIAN HIEROGLYPH " + - "G013EGYPTIAN HIEROGLYPH G014EGYPTIAN HIEROGLYPH G015EGYPTIAN HIEROGLYPH " + - "G016EGYPTIAN HIEROGLYPH G017EGYPTIAN HIEROGLYPH G018EGYPTIAN HIEROGLYPH " + - "G019EGYPTIAN HIEROGLYPH G020EGYPTIAN HIEROGLYPH G020AEGYPTIAN HIEROGLYPH" + - " G021EGYPTIAN HIEROGLYPH G022EGYPTIAN HIEROGLYPH G023EGYPTIAN HIEROGLYPH" + - " G024EGYPTIAN HIEROGLYPH G025EGYPTIAN HIEROGLYPH G026EGYPTIAN HIEROGLYPH" + - " G026AEGYPTIAN HIEROGLYPH G027EGYPTIAN HIEROGLYPH G028EGYPTIAN HIEROGLYP" + - "H G029EGYPTIAN HIEROGLYPH G030EGYPTIAN HIEROGLYPH G031EGYPTIAN HIEROGLYP" + - "H G032EGYPTIAN HIEROGLYPH G033EGYPTIAN HIEROGLYPH G034EGYPTIAN HIEROGLYP" + - "H G035EGYPTIAN HIEROGLYPH G036EGYPTIAN HIEROGLYPH G036AEGYPTIAN HIEROGLY" + - "PH G037EGYPTIAN HIEROGLYPH G037AEGYPTIAN HIEROGLYPH G038EGYPTIAN HIEROGL" + - "YPH G039EGYPTIAN HIEROGLYPH G040EGYPTIAN HIEROGLYPH G041EGYPTIAN HIEROGL" + - "YPH G042EGYPTIAN HIEROGLYPH G043EGYPTIAN HIEROGLYPH G043AEGYPTIAN HIEROG" + - "LYPH G044EGYPTIAN HIEROGLYPH G045EGYPTIAN HIEROGLYPH G045AEGYPTIAN HIERO" + - "GLYPH G046EGYPTIAN HIEROGLYPH G047EGYPTIAN HIEROGLYPH G048EGYPTIAN HIERO" + - "GLYPH G049EGYPTIAN HIEROGLYPH G050EGYPTIAN HIEROGLYPH G051EGYPTIAN HIERO" + - "GLYPH G052EGYPTIAN HIEROGLYPH G053EGYPTIAN HIEROGLYPH G054EGYPTIAN HIERO" + - "GLYPH H001EGYPTIAN HIEROGLYPH H002EGYPTIAN HIEROGLYPH H003EGYPTIAN HIERO" + - "GLYPH H004EGYPTIAN HIEROGLYPH H005EGYPTIAN HIEROGLYPH H006EGYPTIAN HIERO" + - "GLYPH H006AEGYPTIAN HIEROGLYPH H007EGYPTIAN HIEROGLYPH H008EGYPTIAN HIER" + - "OGLYPH I001EGYPTIAN HIEROGLYPH I002EGYPTIAN HIEROGLYPH I003EGYPTIAN HIER" + - "OGLYPH I004EGYPTIAN HIEROGLYPH I005EGYPTIAN HIEROGLYPH I005AEGYPTIAN HIE" + - "ROGLYPH I006EGYPTIAN HIEROGLYPH I007EGYPTIAN HIEROGLYPH I008EGYPTIAN HIE" + - "ROGLYPH I009EGYPTIAN HIEROGLYPH I009AEGYPTIAN HIEROGLYPH I010EGYPTIAN HI" + - "EROGLYPH I010AEGYPTIAN HIEROGLYPH I011EGYPTIAN HIEROGLYPH I011AEGYPTIAN " + - "HIEROGLYPH I012EGYPTIAN HIEROGLYPH I013EGYPTIAN HIEROGLYPH I014EGYPTIAN " + - "HIEROGLYPH I015EGYPTIAN HIEROGLYPH K001EGYPTIAN HIEROGLYPH K002EGYPTIAN " + - "HIEROGLYPH K003EGYPTIAN HIEROGLYPH K004EGYPTIAN HIEROGLYPH K005EGYPTIAN " + - "HIEROGLYPH K006EGYPTIAN HIEROGLYPH K007EGYPTIAN HIEROGLYPH K008EGYPTIAN " + - "HIEROGLYPH L001EGYPTIAN HIEROGLYPH L002EGYPTIAN HIEROGLYPH L002AEGYPTIAN" + - " HIEROGLYPH L003EGYPTIAN HIEROGLYPH L004EGYPTIAN HIEROGLYPH L005EGYPTIAN" + - " HIEROGLYPH L006EGYPTIAN HIEROGLYPH L006AEGYPTIAN HIEROGLYPH L007EGYPTIA" + - "N HIEROGLYPH L008EGYPTIAN HIEROGLYPH M001EGYPTIAN HIEROGLYPH M001AEGYPTI" + - "AN HIEROGLYPH M001BEGYPTIAN HIEROGLYPH M002EGYPTIAN HIEROGLYPH M003EGYPT" + - "IAN HIEROGLYPH M003AEGYPTIAN HIEROGLYPH M004EGYPTIAN HIEROGLYPH M005EGYP" + - "TIAN HIEROGLYPH M006EGYPTIAN HIEROGLYPH M007EGYPTIAN HIEROGLYPH M008EGYP" + - "TIAN HIEROGLYPH M009EGYPTIAN HIEROGLYPH M010EGYPTIAN HIEROGLYPH M010AEGY" + - "PTIAN HIEROGLYPH M011EGYPTIAN HIEROGLYPH M012EGYPTIAN HIEROGLYPH M012AEG" + - "YPTIAN HIEROGLYPH M012BEGYPTIAN HIEROGLYPH M012CEGYPTIAN HIEROGLYPH M012" + - "DEGYPTIAN HIEROGLYPH M012EEGYPTIAN HIEROGLYPH M012FEGYPTIAN HIEROGLYPH M" + - "012GEGYPTIAN HIEROGLYPH M012HEGYPTIAN HIEROGLYPH M013EGYPTIAN HIEROGLYPH" + - " M014EGYPTIAN HIEROGLYPH M015EGYPTIAN HIEROGLYPH M015AEGYPTIAN HIEROGLYP" + - "H M016EGYPTIAN HIEROGLYPH M016AEGYPTIAN HIEROGLYPH M017EGYPTIAN HIEROGLY" + - "PH M017AEGYPTIAN HIEROGLYPH M018EGYPTIAN HIEROGLYPH M019EGYPTIAN HIEROGL" + - "YPH M020EGYPTIAN HIEROGLYPH M021EGYPTIAN HIEROGLYPH M022EGYPTIAN HIEROGL" + - "YPH M022AEGYPTIAN HIEROGLYPH M023EGYPTIAN HIEROGLYPH M024EGYPTIAN HIEROG" + - "LYPH M024AEGYPTIAN HIEROGLYPH M025EGYPTIAN HIEROGLYPH M026EGYPTIAN HIERO" + - "GLYPH M027EGYPTIAN HIEROGLYPH M028EGYPTIAN HIEROGLYPH M028AEGYPTIAN HIER" + - "OGLYPH M029EGYPTIAN HIEROGLYPH M030EGYPTIAN HIEROGLYPH M031EGYPTIAN HIER" + - "OGLYPH M031AEGYPTIAN HIEROGLYPH M032EGYPTIAN HIEROGLYPH M033EGYPTIAN HIE" + - "ROGLYPH M033AEGYPTIAN HIEROGLYPH M033BEGYPTIAN HIEROGLYPH M034EGYPTIAN H" + - "IEROGLYPH M035EGYPTIAN HIEROGLYPH M036EGYPTIAN HIEROGLYPH M037EGYPTIAN H" + - "IEROGLYPH M038EGYPTIAN HIEROGLYPH M039EGYPTIAN HIEROGLYPH M040EGYPTIAN H" + - "IEROGLYPH M040AEGYPTIAN HIEROGLYPH M041EGYPTIAN HIEROGLYPH M042EGYPTIAN ") + ("" + - "HIEROGLYPH M043EGYPTIAN HIEROGLYPH M044EGYPTIAN HIEROGLYPH N001EGYPTIAN " + - "HIEROGLYPH N002EGYPTIAN HIEROGLYPH N003EGYPTIAN HIEROGLYPH N004EGYPTIAN " + - "HIEROGLYPH N005EGYPTIAN HIEROGLYPH N006EGYPTIAN HIEROGLYPH N007EGYPTIAN " + - "HIEROGLYPH N008EGYPTIAN HIEROGLYPH N009EGYPTIAN HIEROGLYPH N010EGYPTIAN " + - "HIEROGLYPH N011EGYPTIAN HIEROGLYPH N012EGYPTIAN HIEROGLYPH N013EGYPTIAN " + - "HIEROGLYPH N014EGYPTIAN HIEROGLYPH N015EGYPTIAN HIEROGLYPH N016EGYPTIAN " + - "HIEROGLYPH N017EGYPTIAN HIEROGLYPH N018EGYPTIAN HIEROGLYPH N018AEGYPTIAN" + - " HIEROGLYPH N018BEGYPTIAN HIEROGLYPH N019EGYPTIAN HIEROGLYPH N020EGYPTIA" + - "N HIEROGLYPH N021EGYPTIAN HIEROGLYPH N022EGYPTIAN HIEROGLYPH N023EGYPTIA" + - "N HIEROGLYPH N024EGYPTIAN HIEROGLYPH N025EGYPTIAN HIEROGLYPH N025AEGYPTI" + - "AN HIEROGLYPH N026EGYPTIAN HIEROGLYPH N027EGYPTIAN HIEROGLYPH N028EGYPTI" + - "AN HIEROGLYPH N029EGYPTIAN HIEROGLYPH N030EGYPTIAN HIEROGLYPH N031EGYPTI" + - "AN HIEROGLYPH N032EGYPTIAN HIEROGLYPH N033EGYPTIAN HIEROGLYPH N033AEGYPT" + - "IAN HIEROGLYPH N034EGYPTIAN HIEROGLYPH N034AEGYPTIAN HIEROGLYPH N035EGYP" + - "TIAN HIEROGLYPH N035AEGYPTIAN HIEROGLYPH N036EGYPTIAN HIEROGLYPH N037EGY" + - "PTIAN HIEROGLYPH N037AEGYPTIAN HIEROGLYPH N038EGYPTIAN HIEROGLYPH N039EG" + - "YPTIAN HIEROGLYPH N040EGYPTIAN HIEROGLYPH N041EGYPTIAN HIEROGLYPH N042EG" + - "YPTIAN HIEROGLYPH NL001EGYPTIAN HIEROGLYPH NL002EGYPTIAN HIEROGLYPH NL00" + - "3EGYPTIAN HIEROGLYPH NL004EGYPTIAN HIEROGLYPH NL005EGYPTIAN HIEROGLYPH N" + - "L005AEGYPTIAN HIEROGLYPH NL006EGYPTIAN HIEROGLYPH NL007EGYPTIAN HIEROGLY" + - "PH NL008EGYPTIAN HIEROGLYPH NL009EGYPTIAN HIEROGLYPH NL010EGYPTIAN HIERO" + - "GLYPH NL011EGYPTIAN HIEROGLYPH NL012EGYPTIAN HIEROGLYPH NL013EGYPTIAN HI" + - "EROGLYPH NL014EGYPTIAN HIEROGLYPH NL015EGYPTIAN HIEROGLYPH NL016EGYPTIAN" + - " HIEROGLYPH NL017EGYPTIAN HIEROGLYPH NL017AEGYPTIAN HIEROGLYPH NL018EGYP" + - "TIAN HIEROGLYPH NL019EGYPTIAN HIEROGLYPH NL020EGYPTIAN HIEROGLYPH NU001E" + - "GYPTIAN HIEROGLYPH NU002EGYPTIAN HIEROGLYPH NU003EGYPTIAN HIEROGLYPH NU0" + - "04EGYPTIAN HIEROGLYPH NU005EGYPTIAN HIEROGLYPH NU006EGYPTIAN HIEROGLYPH " + - "NU007EGYPTIAN HIEROGLYPH NU008EGYPTIAN HIEROGLYPH NU009EGYPTIAN HIEROGLY" + - "PH NU010EGYPTIAN HIEROGLYPH NU010AEGYPTIAN HIEROGLYPH NU011EGYPTIAN HIER" + - "OGLYPH NU011AEGYPTIAN HIEROGLYPH NU012EGYPTIAN HIEROGLYPH NU013EGYPTIAN " + - "HIEROGLYPH NU014EGYPTIAN HIEROGLYPH NU015EGYPTIAN HIEROGLYPH NU016EGYPTI" + - "AN HIEROGLYPH NU017EGYPTIAN HIEROGLYPH NU018EGYPTIAN HIEROGLYPH NU018AEG" + - "YPTIAN HIEROGLYPH NU019EGYPTIAN HIEROGLYPH NU020EGYPTIAN HIEROGLYPH NU02" + - "1EGYPTIAN HIEROGLYPH NU022EGYPTIAN HIEROGLYPH NU022AEGYPTIAN HIEROGLYPH " + - "O001EGYPTIAN HIEROGLYPH O001AEGYPTIAN HIEROGLYPH O002EGYPTIAN HIEROGLYPH" + - " O003EGYPTIAN HIEROGLYPH O004EGYPTIAN HIEROGLYPH O005EGYPTIAN HIEROGLYPH" + - " O005AEGYPTIAN HIEROGLYPH O006EGYPTIAN HIEROGLYPH O006AEGYPTIAN HIEROGLY" + - "PH O006BEGYPTIAN HIEROGLYPH O006CEGYPTIAN HIEROGLYPH O006DEGYPTIAN HIERO" + - "GLYPH O006EEGYPTIAN HIEROGLYPH O006FEGYPTIAN HIEROGLYPH O007EGYPTIAN HIE" + - "ROGLYPH O008EGYPTIAN HIEROGLYPH O009EGYPTIAN HIEROGLYPH O010EGYPTIAN HIE" + - "ROGLYPH O010AEGYPTIAN HIEROGLYPH O010BEGYPTIAN HIEROGLYPH O010CEGYPTIAN " + - "HIEROGLYPH O011EGYPTIAN HIEROGLYPH O012EGYPTIAN HIEROGLYPH O013EGYPTIAN " + - "HIEROGLYPH O014EGYPTIAN HIEROGLYPH O015EGYPTIAN HIEROGLYPH O016EGYPTIAN " + - "HIEROGLYPH O017EGYPTIAN HIEROGLYPH O018EGYPTIAN HIEROGLYPH O019EGYPTIAN " + - "HIEROGLYPH O019AEGYPTIAN HIEROGLYPH O020EGYPTIAN HIEROGLYPH O020AEGYPTIA" + - "N HIEROGLYPH O021EGYPTIAN HIEROGLYPH O022EGYPTIAN HIEROGLYPH O023EGYPTIA" + - "N HIEROGLYPH O024EGYPTIAN HIEROGLYPH O024AEGYPTIAN HIEROGLYPH O025EGYPTI" + - "AN HIEROGLYPH O025AEGYPTIAN HIEROGLYPH O026EGYPTIAN HIEROGLYPH O027EGYPT" + - "IAN HIEROGLYPH O028EGYPTIAN HIEROGLYPH O029EGYPTIAN HIEROGLYPH O029AEGYP" + - "TIAN HIEROGLYPH O030EGYPTIAN HIEROGLYPH O030AEGYPTIAN HIEROGLYPH O031EGY" + - "PTIAN HIEROGLYPH O032EGYPTIAN HIEROGLYPH O033EGYPTIAN HIEROGLYPH O033AEG" + - "YPTIAN HIEROGLYPH O034EGYPTIAN HIEROGLYPH O035EGYPTIAN HIEROGLYPH O036EG" + - "YPTIAN HIEROGLYPH O036AEGYPTIAN HIEROGLYPH O036BEGYPTIAN HIEROGLYPH O036" + - "CEGYPTIAN HIEROGLYPH O036DEGYPTIAN HIEROGLYPH O037EGYPTIAN HIEROGLYPH O0" + - "38EGYPTIAN HIEROGLYPH O039EGYPTIAN HIEROGLYPH O040EGYPTIAN HIEROGLYPH O0" + - "41EGYPTIAN HIEROGLYPH O042EGYPTIAN HIEROGLYPH O043EGYPTIAN HIEROGLYPH O0" + - "44EGYPTIAN HIEROGLYPH O045EGYPTIAN HIEROGLYPH O046EGYPTIAN HIEROGLYPH O0" + - "47EGYPTIAN HIEROGLYPH O048EGYPTIAN HIEROGLYPH O049EGYPTIAN HIEROGLYPH O0" + - "50EGYPTIAN HIEROGLYPH O050AEGYPTIAN HIEROGLYPH O050BEGYPTIAN HIEROGLYPH " + - "O051EGYPTIAN HIEROGLYPH P001EGYPTIAN HIEROGLYPH P001AEGYPTIAN HIEROGLYPH" + - " P002EGYPTIAN HIEROGLYPH P003EGYPTIAN HIEROGLYPH P003AEGYPTIAN HIEROGLYP" + - "H P004EGYPTIAN HIEROGLYPH P005EGYPTIAN HIEROGLYPH P006EGYPTIAN HIEROGLYP" + - "H P007EGYPTIAN HIEROGLYPH P008EGYPTIAN HIEROGLYPH P009EGYPTIAN HIEROGLYP" + - "H P010EGYPTIAN HIEROGLYPH P011EGYPTIAN HIEROGLYPH Q001EGYPTIAN HIEROGLYP") + ("" + - "H Q002EGYPTIAN HIEROGLYPH Q003EGYPTIAN HIEROGLYPH Q004EGYPTIAN HIEROGLYP" + - "H Q005EGYPTIAN HIEROGLYPH Q006EGYPTIAN HIEROGLYPH Q007EGYPTIAN HIEROGLYP" + - "H R001EGYPTIAN HIEROGLYPH R002EGYPTIAN HIEROGLYPH R002AEGYPTIAN HIEROGLY" + - "PH R003EGYPTIAN HIEROGLYPH R003AEGYPTIAN HIEROGLYPH R003BEGYPTIAN HIEROG" + - "LYPH R004EGYPTIAN HIEROGLYPH R005EGYPTIAN HIEROGLYPH R006EGYPTIAN HIEROG" + - "LYPH R007EGYPTIAN HIEROGLYPH R008EGYPTIAN HIEROGLYPH R009EGYPTIAN HIEROG" + - "LYPH R010EGYPTIAN HIEROGLYPH R010AEGYPTIAN HIEROGLYPH R011EGYPTIAN HIERO" + - "GLYPH R012EGYPTIAN HIEROGLYPH R013EGYPTIAN HIEROGLYPH R014EGYPTIAN HIERO" + - "GLYPH R015EGYPTIAN HIEROGLYPH R016EGYPTIAN HIEROGLYPH R016AEGYPTIAN HIER" + - "OGLYPH R017EGYPTIAN HIEROGLYPH R018EGYPTIAN HIEROGLYPH R019EGYPTIAN HIER" + - "OGLYPH R020EGYPTIAN HIEROGLYPH R021EGYPTIAN HIEROGLYPH R022EGYPTIAN HIER" + - "OGLYPH R023EGYPTIAN HIEROGLYPH R024EGYPTIAN HIEROGLYPH R025EGYPTIAN HIER" + - "OGLYPH R026EGYPTIAN HIEROGLYPH R027EGYPTIAN HIEROGLYPH R028EGYPTIAN HIER" + - "OGLYPH R029EGYPTIAN HIEROGLYPH S001EGYPTIAN HIEROGLYPH S002EGYPTIAN HIER" + - "OGLYPH S002AEGYPTIAN HIEROGLYPH S003EGYPTIAN HIEROGLYPH S004EGYPTIAN HIE" + - "ROGLYPH S005EGYPTIAN HIEROGLYPH S006EGYPTIAN HIEROGLYPH S006AEGYPTIAN HI" + - "EROGLYPH S007EGYPTIAN HIEROGLYPH S008EGYPTIAN HIEROGLYPH S009EGYPTIAN HI" + - "EROGLYPH S010EGYPTIAN HIEROGLYPH S011EGYPTIAN HIEROGLYPH S012EGYPTIAN HI" + - "EROGLYPH S013EGYPTIAN HIEROGLYPH S014EGYPTIAN HIEROGLYPH S014AEGYPTIAN H" + - "IEROGLYPH S014BEGYPTIAN HIEROGLYPH S015EGYPTIAN HIEROGLYPH S016EGYPTIAN " + - "HIEROGLYPH S017EGYPTIAN HIEROGLYPH S017AEGYPTIAN HIEROGLYPH S018EGYPTIAN" + - " HIEROGLYPH S019EGYPTIAN HIEROGLYPH S020EGYPTIAN HIEROGLYPH S021EGYPTIAN" + - " HIEROGLYPH S022EGYPTIAN HIEROGLYPH S023EGYPTIAN HIEROGLYPH S024EGYPTIAN" + - " HIEROGLYPH S025EGYPTIAN HIEROGLYPH S026EGYPTIAN HIEROGLYPH S026AEGYPTIA" + - "N HIEROGLYPH S026BEGYPTIAN HIEROGLYPH S027EGYPTIAN HIEROGLYPH S028EGYPTI" + - "AN HIEROGLYPH S029EGYPTIAN HIEROGLYPH S030EGYPTIAN HIEROGLYPH S031EGYPTI" + - "AN HIEROGLYPH S032EGYPTIAN HIEROGLYPH S033EGYPTIAN HIEROGLYPH S034EGYPTI" + - "AN HIEROGLYPH S035EGYPTIAN HIEROGLYPH S035AEGYPTIAN HIEROGLYPH S036EGYPT" + - "IAN HIEROGLYPH S037EGYPTIAN HIEROGLYPH S038EGYPTIAN HIEROGLYPH S039EGYPT" + - "IAN HIEROGLYPH S040EGYPTIAN HIEROGLYPH S041EGYPTIAN HIEROGLYPH S042EGYPT" + - "IAN HIEROGLYPH S043EGYPTIAN HIEROGLYPH S044EGYPTIAN HIEROGLYPH S045EGYPT" + - "IAN HIEROGLYPH S046EGYPTIAN HIEROGLYPH T001EGYPTIAN HIEROGLYPH T002EGYPT" + - "IAN HIEROGLYPH T003EGYPTIAN HIEROGLYPH T003AEGYPTIAN HIEROGLYPH T004EGYP" + - "TIAN HIEROGLYPH T005EGYPTIAN HIEROGLYPH T006EGYPTIAN HIEROGLYPH T007EGYP" + - "TIAN HIEROGLYPH T007AEGYPTIAN HIEROGLYPH T008EGYPTIAN HIEROGLYPH T008AEG" + - "YPTIAN HIEROGLYPH T009EGYPTIAN HIEROGLYPH T009AEGYPTIAN HIEROGLYPH T010E" + - "GYPTIAN HIEROGLYPH T011EGYPTIAN HIEROGLYPH T011AEGYPTIAN HIEROGLYPH T012" + - "EGYPTIAN HIEROGLYPH T013EGYPTIAN HIEROGLYPH T014EGYPTIAN HIEROGLYPH T015" + - "EGYPTIAN HIEROGLYPH T016EGYPTIAN HIEROGLYPH T016AEGYPTIAN HIEROGLYPH T01" + - "7EGYPTIAN HIEROGLYPH T018EGYPTIAN HIEROGLYPH T019EGYPTIAN HIEROGLYPH T02" + - "0EGYPTIAN HIEROGLYPH T021EGYPTIAN HIEROGLYPH T022EGYPTIAN HIEROGLYPH T02" + - "3EGYPTIAN HIEROGLYPH T024EGYPTIAN HIEROGLYPH T025EGYPTIAN HIEROGLYPH T02" + - "6EGYPTIAN HIEROGLYPH T027EGYPTIAN HIEROGLYPH T028EGYPTIAN HIEROGLYPH T02" + - "9EGYPTIAN HIEROGLYPH T030EGYPTIAN HIEROGLYPH T031EGYPTIAN HIEROGLYPH T03" + - "2EGYPTIAN HIEROGLYPH T032AEGYPTIAN HIEROGLYPH T033EGYPTIAN HIEROGLYPH T0" + - "33AEGYPTIAN HIEROGLYPH T034EGYPTIAN HIEROGLYPH T035EGYPTIAN HIEROGLYPH T" + - "036EGYPTIAN HIEROGLYPH U001EGYPTIAN HIEROGLYPH U002EGYPTIAN HIEROGLYPH U" + - "003EGYPTIAN HIEROGLYPH U004EGYPTIAN HIEROGLYPH U005EGYPTIAN HIEROGLYPH U" + - "006EGYPTIAN HIEROGLYPH U006AEGYPTIAN HIEROGLYPH U006BEGYPTIAN HIEROGLYPH" + - " U007EGYPTIAN HIEROGLYPH U008EGYPTIAN HIEROGLYPH U009EGYPTIAN HIEROGLYPH" + - " U010EGYPTIAN HIEROGLYPH U011EGYPTIAN HIEROGLYPH U012EGYPTIAN HIEROGLYPH" + - " U013EGYPTIAN HIEROGLYPH U014EGYPTIAN HIEROGLYPH U015EGYPTIAN HIEROGLYPH" + - " U016EGYPTIAN HIEROGLYPH U017EGYPTIAN HIEROGLYPH U018EGYPTIAN HIEROGLYPH" + - " U019EGYPTIAN HIEROGLYPH U020EGYPTIAN HIEROGLYPH U021EGYPTIAN HIEROGLYPH" + - " U022EGYPTIAN HIEROGLYPH U023EGYPTIAN HIEROGLYPH U023AEGYPTIAN HIEROGLYP" + - "H U024EGYPTIAN HIEROGLYPH U025EGYPTIAN HIEROGLYPH U026EGYPTIAN HIEROGLYP" + - "H U027EGYPTIAN HIEROGLYPH U028EGYPTIAN HIEROGLYPH U029EGYPTIAN HIEROGLYP" + - "H U029AEGYPTIAN HIEROGLYPH U030EGYPTIAN HIEROGLYPH U031EGYPTIAN HIEROGLY" + - "PH U032EGYPTIAN HIEROGLYPH U032AEGYPTIAN HIEROGLYPH U033EGYPTIAN HIEROGL" + - "YPH U034EGYPTIAN HIEROGLYPH U035EGYPTIAN HIEROGLYPH U036EGYPTIAN HIEROGL" + - "YPH U037EGYPTIAN HIEROGLYPH U038EGYPTIAN HIEROGLYPH U039EGYPTIAN HIEROGL" + - "YPH U040EGYPTIAN HIEROGLYPH U041EGYPTIAN HIEROGLYPH U042EGYPTIAN HIEROGL" + - "YPH V001EGYPTIAN HIEROGLYPH V001AEGYPTIAN HIEROGLYPH V001BEGYPTIAN HIERO" + - "GLYPH V001CEGYPTIAN HIEROGLYPH V001DEGYPTIAN HIEROGLYPH V001EEGYPTIAN HI") + ("" + - "EROGLYPH V001FEGYPTIAN HIEROGLYPH V001GEGYPTIAN HIEROGLYPH V001HEGYPTIAN" + - " HIEROGLYPH V001IEGYPTIAN HIEROGLYPH V002EGYPTIAN HIEROGLYPH V002AEGYPTI" + - "AN HIEROGLYPH V003EGYPTIAN HIEROGLYPH V004EGYPTIAN HIEROGLYPH V005EGYPTI" + - "AN HIEROGLYPH V006EGYPTIAN HIEROGLYPH V007EGYPTIAN HIEROGLYPH V007AEGYPT" + - "IAN HIEROGLYPH V007BEGYPTIAN HIEROGLYPH V008EGYPTIAN HIEROGLYPH V009EGYP" + - "TIAN HIEROGLYPH V010EGYPTIAN HIEROGLYPH V011EGYPTIAN HIEROGLYPH V011AEGY" + - "PTIAN HIEROGLYPH V011BEGYPTIAN HIEROGLYPH V011CEGYPTIAN HIEROGLYPH V012E" + - "GYPTIAN HIEROGLYPH V012AEGYPTIAN HIEROGLYPH V012BEGYPTIAN HIEROGLYPH V01" + - "3EGYPTIAN HIEROGLYPH V014EGYPTIAN HIEROGLYPH V015EGYPTIAN HIEROGLYPH V01" + - "6EGYPTIAN HIEROGLYPH V017EGYPTIAN HIEROGLYPH V018EGYPTIAN HIEROGLYPH V01" + - "9EGYPTIAN HIEROGLYPH V020EGYPTIAN HIEROGLYPH V020AEGYPTIAN HIEROGLYPH V0" + - "20BEGYPTIAN HIEROGLYPH V020CEGYPTIAN HIEROGLYPH V020DEGYPTIAN HIEROGLYPH" + - " V020EEGYPTIAN HIEROGLYPH V020FEGYPTIAN HIEROGLYPH V020GEGYPTIAN HIEROGL" + - "YPH V020HEGYPTIAN HIEROGLYPH V020IEGYPTIAN HIEROGLYPH V020JEGYPTIAN HIER" + - "OGLYPH V020KEGYPTIAN HIEROGLYPH V020LEGYPTIAN HIEROGLYPH V021EGYPTIAN HI" + - "EROGLYPH V022EGYPTIAN HIEROGLYPH V023EGYPTIAN HIEROGLYPH V023AEGYPTIAN H" + - "IEROGLYPH V024EGYPTIAN HIEROGLYPH V025EGYPTIAN HIEROGLYPH V026EGYPTIAN H" + - "IEROGLYPH V027EGYPTIAN HIEROGLYPH V028EGYPTIAN HIEROGLYPH V028AEGYPTIAN " + - "HIEROGLYPH V029EGYPTIAN HIEROGLYPH V029AEGYPTIAN HIEROGLYPH V030EGYPTIAN" + - " HIEROGLYPH V030AEGYPTIAN HIEROGLYPH V031EGYPTIAN HIEROGLYPH V031AEGYPTI" + - "AN HIEROGLYPH V032EGYPTIAN HIEROGLYPH V033EGYPTIAN HIEROGLYPH V033AEGYPT" + - "IAN HIEROGLYPH V034EGYPTIAN HIEROGLYPH V035EGYPTIAN HIEROGLYPH V036EGYPT" + - "IAN HIEROGLYPH V037EGYPTIAN HIEROGLYPH V037AEGYPTIAN HIEROGLYPH V038EGYP" + - "TIAN HIEROGLYPH V039EGYPTIAN HIEROGLYPH V040EGYPTIAN HIEROGLYPH V040AEGY" + - "PTIAN HIEROGLYPH W001EGYPTIAN HIEROGLYPH W002EGYPTIAN HIEROGLYPH W003EGY" + - "PTIAN HIEROGLYPH W003AEGYPTIAN HIEROGLYPH W004EGYPTIAN HIEROGLYPH W005EG" + - "YPTIAN HIEROGLYPH W006EGYPTIAN HIEROGLYPH W007EGYPTIAN HIEROGLYPH W008EG" + - "YPTIAN HIEROGLYPH W009EGYPTIAN HIEROGLYPH W009AEGYPTIAN HIEROGLYPH W010E" + - "GYPTIAN HIEROGLYPH W010AEGYPTIAN HIEROGLYPH W011EGYPTIAN HIEROGLYPH W012" + - "EGYPTIAN HIEROGLYPH W013EGYPTIAN HIEROGLYPH W014EGYPTIAN HIEROGLYPH W014" + - "AEGYPTIAN HIEROGLYPH W015EGYPTIAN HIEROGLYPH W016EGYPTIAN HIEROGLYPH W01" + - "7EGYPTIAN HIEROGLYPH W017AEGYPTIAN HIEROGLYPH W018EGYPTIAN HIEROGLYPH W0" + - "18AEGYPTIAN HIEROGLYPH W019EGYPTIAN HIEROGLYPH W020EGYPTIAN HIEROGLYPH W" + - "021EGYPTIAN HIEROGLYPH W022EGYPTIAN HIEROGLYPH W023EGYPTIAN HIEROGLYPH W" + - "024EGYPTIAN HIEROGLYPH W024AEGYPTIAN HIEROGLYPH W025EGYPTIAN HIEROGLYPH " + - "X001EGYPTIAN HIEROGLYPH X002EGYPTIAN HIEROGLYPH X003EGYPTIAN HIEROGLYPH " + - "X004EGYPTIAN HIEROGLYPH X004AEGYPTIAN HIEROGLYPH X004BEGYPTIAN HIEROGLYP" + - "H X005EGYPTIAN HIEROGLYPH X006EGYPTIAN HIEROGLYPH X006AEGYPTIAN HIEROGLY" + - "PH X007EGYPTIAN HIEROGLYPH X008EGYPTIAN HIEROGLYPH X008AEGYPTIAN HIEROGL" + - "YPH Y001EGYPTIAN HIEROGLYPH Y001AEGYPTIAN HIEROGLYPH Y002EGYPTIAN HIEROG" + - "LYPH Y003EGYPTIAN HIEROGLYPH Y004EGYPTIAN HIEROGLYPH Y005EGYPTIAN HIEROG" + - "LYPH Y006EGYPTIAN HIEROGLYPH Y007EGYPTIAN HIEROGLYPH Y008EGYPTIAN HIEROG" + - "LYPH Z001EGYPTIAN HIEROGLYPH Z002EGYPTIAN HIEROGLYPH Z002AEGYPTIAN HIERO" + - "GLYPH Z002BEGYPTIAN HIEROGLYPH Z002CEGYPTIAN HIEROGLYPH Z002DEGYPTIAN HI" + - "EROGLYPH Z003EGYPTIAN HIEROGLYPH Z003AEGYPTIAN HIEROGLYPH Z003BEGYPTIAN " + - "HIEROGLYPH Z004EGYPTIAN HIEROGLYPH Z004AEGYPTIAN HIEROGLYPH Z005EGYPTIAN" + - " HIEROGLYPH Z005AEGYPTIAN HIEROGLYPH Z006EGYPTIAN HIEROGLYPH Z007EGYPTIA" + - "N HIEROGLYPH Z008EGYPTIAN HIEROGLYPH Z009EGYPTIAN HIEROGLYPH Z010EGYPTIA" + - "N HIEROGLYPH Z011EGYPTIAN HIEROGLYPH Z012EGYPTIAN HIEROGLYPH Z013EGYPTIA" + - "N HIEROGLYPH Z014EGYPTIAN HIEROGLYPH Z015EGYPTIAN HIEROGLYPH Z015AEGYPTI" + - "AN HIEROGLYPH Z015BEGYPTIAN HIEROGLYPH Z015CEGYPTIAN HIEROGLYPH Z015DEGY" + - "PTIAN HIEROGLYPH Z015EEGYPTIAN HIEROGLYPH Z015FEGYPTIAN HIEROGLYPH Z015G" + - "EGYPTIAN HIEROGLYPH Z015HEGYPTIAN HIEROGLYPH Z015IEGYPTIAN HIEROGLYPH Z0" + - "16EGYPTIAN HIEROGLYPH Z016AEGYPTIAN HIEROGLYPH Z016BEGYPTIAN HIEROGLYPH " + - "Z016CEGYPTIAN HIEROGLYPH Z016DEGYPTIAN HIEROGLYPH Z016EEGYPTIAN HIEROGLY" + - "PH Z016FEGYPTIAN HIEROGLYPH Z016GEGYPTIAN HIEROGLYPH Z016HEGYPTIAN HIERO" + - "GLYPH AA001EGYPTIAN HIEROGLYPH AA002EGYPTIAN HIEROGLYPH AA003EGYPTIAN HI" + - "EROGLYPH AA004EGYPTIAN HIEROGLYPH AA005EGYPTIAN HIEROGLYPH AA006EGYPTIAN" + - " HIEROGLYPH AA007EGYPTIAN HIEROGLYPH AA007AEGYPTIAN HIEROGLYPH AA007BEGY" + - "PTIAN HIEROGLYPH AA008EGYPTIAN HIEROGLYPH AA009EGYPTIAN HIEROGLYPH AA010" + - "EGYPTIAN HIEROGLYPH AA011EGYPTIAN HIEROGLYPH AA012EGYPTIAN HIEROGLYPH AA" + - "013EGYPTIAN HIEROGLYPH AA014EGYPTIAN HIEROGLYPH AA015EGYPTIAN HIEROGLYPH" + - " AA016EGYPTIAN HIEROGLYPH AA017EGYPTIAN HIEROGLYPH AA018EGYPTIAN HIEROGL" + - "YPH AA019EGYPTIAN HIEROGLYPH AA020EGYPTIAN HIEROGLYPH AA021EGYPTIAN HIER") + ("" + - "OGLYPH AA022EGYPTIAN HIEROGLYPH AA023EGYPTIAN HIEROGLYPH AA024EGYPTIAN H" + - "IEROGLYPH AA025EGYPTIAN HIEROGLYPH AA026EGYPTIAN HIEROGLYPH AA027EGYPTIA" + - "N HIEROGLYPH AA028EGYPTIAN HIEROGLYPH AA029EGYPTIAN HIEROGLYPH AA030EGYP" + - "TIAN HIEROGLYPH AA031EGYPTIAN HIEROGLYPH AA032ANATOLIAN HIEROGLYPH A001A" + - "NATOLIAN HIEROGLYPH A002ANATOLIAN HIEROGLYPH A003ANATOLIAN HIEROGLYPH A0" + - "04ANATOLIAN HIEROGLYPH A005ANATOLIAN HIEROGLYPH A006ANATOLIAN HIEROGLYPH" + - " A007ANATOLIAN HIEROGLYPH A008ANATOLIAN HIEROGLYPH A009ANATOLIAN HIEROGL" + - "YPH A010ANATOLIAN HIEROGLYPH A010AANATOLIAN HIEROGLYPH A011ANATOLIAN HIE" + - "ROGLYPH A012ANATOLIAN HIEROGLYPH A013ANATOLIAN HIEROGLYPH A014ANATOLIAN " + - "HIEROGLYPH A015ANATOLIAN HIEROGLYPH A016ANATOLIAN HIEROGLYPH A017ANATOLI" + - "AN HIEROGLYPH A018ANATOLIAN HIEROGLYPH A019ANATOLIAN HIEROGLYPH A020ANAT" + - "OLIAN HIEROGLYPH A021ANATOLIAN HIEROGLYPH A022ANATOLIAN HIEROGLYPH A023A" + - "NATOLIAN HIEROGLYPH A024ANATOLIAN HIEROGLYPH A025ANATOLIAN HIEROGLYPH A0" + - "26ANATOLIAN HIEROGLYPH A026AANATOLIAN HIEROGLYPH A027ANATOLIAN HIEROGLYP" + - "H A028ANATOLIAN HIEROGLYPH A029ANATOLIAN HIEROGLYPH A030ANATOLIAN HIEROG" + - "LYPH A031ANATOLIAN HIEROGLYPH A032ANATOLIAN HIEROGLYPH A033ANATOLIAN HIE" + - "ROGLYPH A034ANATOLIAN HIEROGLYPH A035ANATOLIAN HIEROGLYPH A036ANATOLIAN " + - "HIEROGLYPH A037ANATOLIAN HIEROGLYPH A038ANATOLIAN HIEROGLYPH A039ANATOLI" + - "AN HIEROGLYPH A039AANATOLIAN HIEROGLYPH A040ANATOLIAN HIEROGLYPH A041ANA" + - "TOLIAN HIEROGLYPH A041AANATOLIAN HIEROGLYPH A042ANATOLIAN HIEROGLYPH A04" + - "3ANATOLIAN HIEROGLYPH A044ANATOLIAN HIEROGLYPH A045ANATOLIAN HIEROGLYPH " + - "A045AANATOLIAN HIEROGLYPH A046ANATOLIAN HIEROGLYPH A046AANATOLIAN HIEROG" + - "LYPH A046BANATOLIAN HIEROGLYPH A047ANATOLIAN HIEROGLYPH A048ANATOLIAN HI" + - "EROGLYPH A049ANATOLIAN HIEROGLYPH A050ANATOLIAN HIEROGLYPH A051ANATOLIAN" + - " HIEROGLYPH A052ANATOLIAN HIEROGLYPH A053ANATOLIAN HIEROGLYPH A054ANATOL" + - "IAN HIEROGLYPH A055ANATOLIAN HIEROGLYPH A056ANATOLIAN HIEROGLYPH A057ANA" + - "TOLIAN HIEROGLYPH A058ANATOLIAN HIEROGLYPH A059ANATOLIAN HIEROGLYPH A060" + - "ANATOLIAN HIEROGLYPH A061ANATOLIAN HIEROGLYPH A062ANATOLIAN HIEROGLYPH A" + - "063ANATOLIAN HIEROGLYPH A064ANATOLIAN HIEROGLYPH A065ANATOLIAN HIEROGLYP" + - "H A066ANATOLIAN HIEROGLYPH A066AANATOLIAN HIEROGLYPH A066BANATOLIAN HIER" + - "OGLYPH A066CANATOLIAN HIEROGLYPH A067ANATOLIAN HIEROGLYPH A068ANATOLIAN " + - "HIEROGLYPH A069ANATOLIAN HIEROGLYPH A070ANATOLIAN HIEROGLYPH A071ANATOLI" + - "AN HIEROGLYPH A072ANATOLIAN HIEROGLYPH A073ANATOLIAN HIEROGLYPH A074ANAT" + - "OLIAN HIEROGLYPH A075ANATOLIAN HIEROGLYPH A076ANATOLIAN HIEROGLYPH A077A" + - "NATOLIAN HIEROGLYPH A078ANATOLIAN HIEROGLYPH A079ANATOLIAN HIEROGLYPH A0" + - "80ANATOLIAN HIEROGLYPH A081ANATOLIAN HIEROGLYPH A082ANATOLIAN HIEROGLYPH" + - " A083ANATOLIAN HIEROGLYPH A084ANATOLIAN HIEROGLYPH A085ANATOLIAN HIEROGL" + - "YPH A086ANATOLIAN HIEROGLYPH A087ANATOLIAN HIEROGLYPH A088ANATOLIAN HIER" + - "OGLYPH A089ANATOLIAN HIEROGLYPH A090ANATOLIAN HIEROGLYPH A091ANATOLIAN H" + - "IEROGLYPH A092ANATOLIAN HIEROGLYPH A093ANATOLIAN HIEROGLYPH A094ANATOLIA" + - "N HIEROGLYPH A095ANATOLIAN HIEROGLYPH A096ANATOLIAN HIEROGLYPH A097ANATO" + - "LIAN HIEROGLYPH A097AANATOLIAN HIEROGLYPH A098ANATOLIAN HIEROGLYPH A098A" + - "ANATOLIAN HIEROGLYPH A099ANATOLIAN HIEROGLYPH A100ANATOLIAN HIEROGLYPH A" + - "100AANATOLIAN HIEROGLYPH A101ANATOLIAN HIEROGLYPH A101AANATOLIAN HIEROGL" + - "YPH A102ANATOLIAN HIEROGLYPH A102AANATOLIAN HIEROGLYPH A103ANATOLIAN HIE" + - "ROGLYPH A104ANATOLIAN HIEROGLYPH A104AANATOLIAN HIEROGLYPH A104BANATOLIA" + - "N HIEROGLYPH A104CANATOLIAN HIEROGLYPH A105ANATOLIAN HIEROGLYPH A105AANA" + - "TOLIAN HIEROGLYPH A105BANATOLIAN HIEROGLYPH A106ANATOLIAN HIEROGLYPH A10" + - "7ANATOLIAN HIEROGLYPH A107AANATOLIAN HIEROGLYPH A107BANATOLIAN HIEROGLYP" + - "H A107CANATOLIAN HIEROGLYPH A108ANATOLIAN HIEROGLYPH A109ANATOLIAN HIERO" + - "GLYPH A110ANATOLIAN HIEROGLYPH A110AANATOLIAN HIEROGLYPH A110BANATOLIAN " + - "HIEROGLYPH A111ANATOLIAN HIEROGLYPH A112ANATOLIAN HIEROGLYPH A113ANATOLI" + - "AN HIEROGLYPH A114ANATOLIAN HIEROGLYPH A115ANATOLIAN HIEROGLYPH A115AANA" + - "TOLIAN HIEROGLYPH A116ANATOLIAN HIEROGLYPH A117ANATOLIAN HIEROGLYPH A118" + - "ANATOLIAN HIEROGLYPH A119ANATOLIAN HIEROGLYPH A120ANATOLIAN HIEROGLYPH A" + - "121ANATOLIAN HIEROGLYPH A122ANATOLIAN HIEROGLYPH A123ANATOLIAN HIEROGLYP" + - "H A124ANATOLIAN HIEROGLYPH A125ANATOLIAN HIEROGLYPH A125AANATOLIAN HIERO" + - "GLYPH A126ANATOLIAN HIEROGLYPH A127ANATOLIAN HIEROGLYPH A128ANATOLIAN HI" + - "EROGLYPH A129ANATOLIAN HIEROGLYPH A130ANATOLIAN HIEROGLYPH A131ANATOLIAN" + - " HIEROGLYPH A132ANATOLIAN HIEROGLYPH A133ANATOLIAN HIEROGLYPH A134ANATOL" + - "IAN HIEROGLYPH A135ANATOLIAN HIEROGLYPH A135AANATOLIAN HIEROGLYPH A136AN" + - "ATOLIAN HIEROGLYPH A137ANATOLIAN HIEROGLYPH A138ANATOLIAN HIEROGLYPH A13" + - "9ANATOLIAN HIEROGLYPH A140ANATOLIAN HIEROGLYPH A141ANATOLIAN HIEROGLYPH " + - "A142ANATOLIAN HIEROGLYPH A143ANATOLIAN HIEROGLYPH A144ANATOLIAN HIEROGLY") + ("" + - "PH A145ANATOLIAN HIEROGLYPH A146ANATOLIAN HIEROGLYPH A147ANATOLIAN HIERO" + - "GLYPH A148ANATOLIAN HIEROGLYPH A149ANATOLIAN HIEROGLYPH A150ANATOLIAN HI" + - "EROGLYPH A151ANATOLIAN HIEROGLYPH A152ANATOLIAN HIEROGLYPH A153ANATOLIAN" + - " HIEROGLYPH A154ANATOLIAN HIEROGLYPH A155ANATOLIAN HIEROGLYPH A156ANATOL" + - "IAN HIEROGLYPH A157ANATOLIAN HIEROGLYPH A158ANATOLIAN HIEROGLYPH A159ANA" + - "TOLIAN HIEROGLYPH A160ANATOLIAN HIEROGLYPH A161ANATOLIAN HIEROGLYPH A162" + - "ANATOLIAN HIEROGLYPH A163ANATOLIAN HIEROGLYPH A164ANATOLIAN HIEROGLYPH A" + - "165ANATOLIAN HIEROGLYPH A166ANATOLIAN HIEROGLYPH A167ANATOLIAN HIEROGLYP" + - "H A168ANATOLIAN HIEROGLYPH A169ANATOLIAN HIEROGLYPH A170ANATOLIAN HIEROG" + - "LYPH A171ANATOLIAN HIEROGLYPH A172ANATOLIAN HIEROGLYPH A173ANATOLIAN HIE" + - "ROGLYPH A174ANATOLIAN HIEROGLYPH A175ANATOLIAN HIEROGLYPH A176ANATOLIAN " + - "HIEROGLYPH A177ANATOLIAN HIEROGLYPH A178ANATOLIAN HIEROGLYPH A179ANATOLI" + - "AN HIEROGLYPH A180ANATOLIAN HIEROGLYPH A181ANATOLIAN HIEROGLYPH A182ANAT" + - "OLIAN HIEROGLYPH A183ANATOLIAN HIEROGLYPH A184ANATOLIAN HIEROGLYPH A185A" + - "NATOLIAN HIEROGLYPH A186ANATOLIAN HIEROGLYPH A187ANATOLIAN HIEROGLYPH A1" + - "88ANATOLIAN HIEROGLYPH A189ANATOLIAN HIEROGLYPH A190ANATOLIAN HIEROGLYPH" + - " A191ANATOLIAN HIEROGLYPH A192ANATOLIAN HIEROGLYPH A193ANATOLIAN HIEROGL" + - "YPH A194ANATOLIAN HIEROGLYPH A195ANATOLIAN HIEROGLYPH A196ANATOLIAN HIER" + - "OGLYPH A197ANATOLIAN HIEROGLYPH A198ANATOLIAN HIEROGLYPH A199ANATOLIAN H" + - "IEROGLYPH A200ANATOLIAN HIEROGLYPH A201ANATOLIAN HIEROGLYPH A202ANATOLIA" + - "N HIEROGLYPH A202AANATOLIAN HIEROGLYPH A202BANATOLIAN HIEROGLYPH A203ANA" + - "TOLIAN HIEROGLYPH A204ANATOLIAN HIEROGLYPH A205ANATOLIAN HIEROGLYPH A206" + - "ANATOLIAN HIEROGLYPH A207ANATOLIAN HIEROGLYPH A207AANATOLIAN HIEROGLYPH " + - "A208ANATOLIAN HIEROGLYPH A209ANATOLIAN HIEROGLYPH A209AANATOLIAN HIEROGL" + - "YPH A210ANATOLIAN HIEROGLYPH A211ANATOLIAN HIEROGLYPH A212ANATOLIAN HIER" + - "OGLYPH A213ANATOLIAN HIEROGLYPH A214ANATOLIAN HIEROGLYPH A215ANATOLIAN H" + - "IEROGLYPH A215AANATOLIAN HIEROGLYPH A216ANATOLIAN HIEROGLYPH A216AANATOL" + - "IAN HIEROGLYPH A217ANATOLIAN HIEROGLYPH A218ANATOLIAN HIEROGLYPH A219ANA" + - "TOLIAN HIEROGLYPH A220ANATOLIAN HIEROGLYPH A221ANATOLIAN HIEROGLYPH A222" + - "ANATOLIAN HIEROGLYPH A223ANATOLIAN HIEROGLYPH A224ANATOLIAN HIEROGLYPH A" + - "225ANATOLIAN HIEROGLYPH A226ANATOLIAN HIEROGLYPH A227ANATOLIAN HIEROGLYP" + - "H A227AANATOLIAN HIEROGLYPH A228ANATOLIAN HIEROGLYPH A229ANATOLIAN HIERO" + - "GLYPH A230ANATOLIAN HIEROGLYPH A231ANATOLIAN HIEROGLYPH A232ANATOLIAN HI" + - "EROGLYPH A233ANATOLIAN HIEROGLYPH A234ANATOLIAN HIEROGLYPH A235ANATOLIAN" + - " HIEROGLYPH A236ANATOLIAN HIEROGLYPH A237ANATOLIAN HIEROGLYPH A238ANATOL" + - "IAN HIEROGLYPH A239ANATOLIAN HIEROGLYPH A240ANATOLIAN HIEROGLYPH A241ANA" + - "TOLIAN HIEROGLYPH A242ANATOLIAN HIEROGLYPH A243ANATOLIAN HIEROGLYPH A244" + - "ANATOLIAN HIEROGLYPH A245ANATOLIAN HIEROGLYPH A246ANATOLIAN HIEROGLYPH A" + - "247ANATOLIAN HIEROGLYPH A248ANATOLIAN HIEROGLYPH A249ANATOLIAN HIEROGLYP" + - "H A250ANATOLIAN HIEROGLYPH A251ANATOLIAN HIEROGLYPH A252ANATOLIAN HIEROG" + - "LYPH A253ANATOLIAN HIEROGLYPH A254ANATOLIAN HIEROGLYPH A255ANATOLIAN HIE" + - "ROGLYPH A256ANATOLIAN HIEROGLYPH A257ANATOLIAN HIEROGLYPH A258ANATOLIAN " + - "HIEROGLYPH A259ANATOLIAN HIEROGLYPH A260ANATOLIAN HIEROGLYPH A261ANATOLI" + - "AN HIEROGLYPH A262ANATOLIAN HIEROGLYPH A263ANATOLIAN HIEROGLYPH A264ANAT" + - "OLIAN HIEROGLYPH A265ANATOLIAN HIEROGLYPH A266ANATOLIAN HIEROGLYPH A267A" + - "NATOLIAN HIEROGLYPH A267AANATOLIAN HIEROGLYPH A268ANATOLIAN HIEROGLYPH A" + - "269ANATOLIAN HIEROGLYPH A270ANATOLIAN HIEROGLYPH A271ANATOLIAN HIEROGLYP" + - "H A272ANATOLIAN HIEROGLYPH A273ANATOLIAN HIEROGLYPH A274ANATOLIAN HIEROG" + - "LYPH A275ANATOLIAN HIEROGLYPH A276ANATOLIAN HIEROGLYPH A277ANATOLIAN HIE" + - "ROGLYPH A278ANATOLIAN HIEROGLYPH A279ANATOLIAN HIEROGLYPH A280ANATOLIAN " + - "HIEROGLYPH A281ANATOLIAN HIEROGLYPH A282ANATOLIAN HIEROGLYPH A283ANATOLI" + - "AN HIEROGLYPH A284ANATOLIAN HIEROGLYPH A285ANATOLIAN HIEROGLYPH A286ANAT" + - "OLIAN HIEROGLYPH A287ANATOLIAN HIEROGLYPH A288ANATOLIAN HIEROGLYPH A289A" + - "NATOLIAN HIEROGLYPH A289AANATOLIAN HIEROGLYPH A290ANATOLIAN HIEROGLYPH A" + - "291ANATOLIAN HIEROGLYPH A292ANATOLIAN HIEROGLYPH A293ANATOLIAN HIEROGLYP" + - "H A294ANATOLIAN HIEROGLYPH A294AANATOLIAN HIEROGLYPH A295ANATOLIAN HIERO" + - "GLYPH A296ANATOLIAN HIEROGLYPH A297ANATOLIAN HIEROGLYPH A298ANATOLIAN HI" + - "EROGLYPH A299ANATOLIAN HIEROGLYPH A299AANATOLIAN HIEROGLYPH A300ANATOLIA" + - "N HIEROGLYPH A301ANATOLIAN HIEROGLYPH A302ANATOLIAN HIEROGLYPH A303ANATO" + - "LIAN HIEROGLYPH A304ANATOLIAN HIEROGLYPH A305ANATOLIAN HIEROGLYPH A306AN" + - "ATOLIAN HIEROGLYPH A307ANATOLIAN HIEROGLYPH A308ANATOLIAN HIEROGLYPH A30" + - "9ANATOLIAN HIEROGLYPH A309AANATOLIAN HIEROGLYPH A310ANATOLIAN HIEROGLYPH" + - " A311ANATOLIAN HIEROGLYPH A312ANATOLIAN HIEROGLYPH A313ANATOLIAN HIEROGL" + - "YPH A314ANATOLIAN HIEROGLYPH A315ANATOLIAN HIEROGLYPH A316ANATOLIAN HIER") + ("" + - "OGLYPH A317ANATOLIAN HIEROGLYPH A318ANATOLIAN HIEROGLYPH A319ANATOLIAN H" + - "IEROGLYPH A320ANATOLIAN HIEROGLYPH A321ANATOLIAN HIEROGLYPH A322ANATOLIA" + - "N HIEROGLYPH A323ANATOLIAN HIEROGLYPH A324ANATOLIAN HIEROGLYPH A325ANATO" + - "LIAN HIEROGLYPH A326ANATOLIAN HIEROGLYPH A327ANATOLIAN HIEROGLYPH A328AN" + - "ATOLIAN HIEROGLYPH A329ANATOLIAN HIEROGLYPH A329AANATOLIAN HIEROGLYPH A3" + - "30ANATOLIAN HIEROGLYPH A331ANATOLIAN HIEROGLYPH A332AANATOLIAN HIEROGLYP" + - "H A332BANATOLIAN HIEROGLYPH A332CANATOLIAN HIEROGLYPH A333ANATOLIAN HIER" + - "OGLYPH A334ANATOLIAN HIEROGLYPH A335ANATOLIAN HIEROGLYPH A336ANATOLIAN H" + - "IEROGLYPH A336AANATOLIAN HIEROGLYPH A336BANATOLIAN HIEROGLYPH A336CANATO" + - "LIAN HIEROGLYPH A337ANATOLIAN HIEROGLYPH A338ANATOLIAN HIEROGLYPH A339AN" + - "ATOLIAN HIEROGLYPH A340ANATOLIAN HIEROGLYPH A341ANATOLIAN HIEROGLYPH A34" + - "2ANATOLIAN HIEROGLYPH A343ANATOLIAN HIEROGLYPH A344ANATOLIAN HIEROGLYPH " + - "A345ANATOLIAN HIEROGLYPH A346ANATOLIAN HIEROGLYPH A347ANATOLIAN HIEROGLY" + - "PH A348ANATOLIAN HIEROGLYPH A349ANATOLIAN HIEROGLYPH A350ANATOLIAN HIERO" + - "GLYPH A351ANATOLIAN HIEROGLYPH A352ANATOLIAN HIEROGLYPH A353ANATOLIAN HI" + - "EROGLYPH A354ANATOLIAN HIEROGLYPH A355ANATOLIAN HIEROGLYPH A356ANATOLIAN" + - " HIEROGLYPH A357ANATOLIAN HIEROGLYPH A358ANATOLIAN HIEROGLYPH A359ANATOL" + - "IAN HIEROGLYPH A359AANATOLIAN HIEROGLYPH A360ANATOLIAN HIEROGLYPH A361AN" + - "ATOLIAN HIEROGLYPH A362ANATOLIAN HIEROGLYPH A363ANATOLIAN HIEROGLYPH A36" + - "4ANATOLIAN HIEROGLYPH A364AANATOLIAN HIEROGLYPH A365ANATOLIAN HIEROGLYPH" + - " A366ANATOLIAN HIEROGLYPH A367ANATOLIAN HIEROGLYPH A368ANATOLIAN HIEROGL" + - "YPH A368AANATOLIAN HIEROGLYPH A369ANATOLIAN HIEROGLYPH A370ANATOLIAN HIE" + - "ROGLYPH A371ANATOLIAN HIEROGLYPH A371AANATOLIAN HIEROGLYPH A372ANATOLIAN" + - " HIEROGLYPH A373ANATOLIAN HIEROGLYPH A374ANATOLIAN HIEROGLYPH A375ANATOL" + - "IAN HIEROGLYPH A376ANATOLIAN HIEROGLYPH A377ANATOLIAN HIEROGLYPH A378ANA" + - "TOLIAN HIEROGLYPH A379ANATOLIAN HIEROGLYPH A380ANATOLIAN HIEROGLYPH A381" + - "ANATOLIAN HIEROGLYPH A381AANATOLIAN HIEROGLYPH A382ANATOLIAN HIEROGLYPH " + - "A383 RA OR RIANATOLIAN HIEROGLYPH A383AANATOLIAN HIEROGLYPH A384ANATOLIA" + - "N HIEROGLYPH A385ANATOLIAN HIEROGLYPH A386ANATOLIAN HIEROGLYPH A386AANAT" + - "OLIAN HIEROGLYPH A387ANATOLIAN HIEROGLYPH A388ANATOLIAN HIEROGLYPH A389A" + - "NATOLIAN HIEROGLYPH A390ANATOLIAN HIEROGLYPH A391ANATOLIAN HIEROGLYPH A3" + - "92ANATOLIAN HIEROGLYPH A393 EIGHTANATOLIAN HIEROGLYPH A394ANATOLIAN HIER" + - "OGLYPH A395ANATOLIAN HIEROGLYPH A396ANATOLIAN HIEROGLYPH A397ANATOLIAN H" + - "IEROGLYPH A398ANATOLIAN HIEROGLYPH A399ANATOLIAN HIEROGLYPH A400ANATOLIA" + - "N HIEROGLYPH A401ANATOLIAN HIEROGLYPH A402ANATOLIAN HIEROGLYPH A403ANATO" + - "LIAN HIEROGLYPH A404ANATOLIAN HIEROGLYPH A405ANATOLIAN HIEROGLYPH A406AN" + - "ATOLIAN HIEROGLYPH A407ANATOLIAN HIEROGLYPH A408ANATOLIAN HIEROGLYPH A40" + - "9ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARKANATOLIAN HIEROGLYPH A410A" + - " END LOGOGRAM MARKANATOLIAN HIEROGLYPH A411ANATOLIAN HIEROGLYPH A412ANAT" + - "OLIAN HIEROGLYPH A413ANATOLIAN HIEROGLYPH A414ANATOLIAN HIEROGLYPH A415A" + - "NATOLIAN HIEROGLYPH A416ANATOLIAN HIEROGLYPH A417ANATOLIAN HIEROGLYPH A4" + - "18ANATOLIAN HIEROGLYPH A419ANATOLIAN HIEROGLYPH A420ANATOLIAN HIEROGLYPH" + - " A421ANATOLIAN HIEROGLYPH A422ANATOLIAN HIEROGLYPH A423ANATOLIAN HIEROGL" + - "YPH A424ANATOLIAN HIEROGLYPH A425ANATOLIAN HIEROGLYPH A426ANATOLIAN HIER" + - "OGLYPH A427ANATOLIAN HIEROGLYPH A428ANATOLIAN HIEROGLYPH A429ANATOLIAN H" + - "IEROGLYPH A430ANATOLIAN HIEROGLYPH A431ANATOLIAN HIEROGLYPH A432ANATOLIA" + - "N HIEROGLYPH A433ANATOLIAN HIEROGLYPH A434ANATOLIAN HIEROGLYPH A435ANATO" + - "LIAN HIEROGLYPH A436ANATOLIAN HIEROGLYPH A437ANATOLIAN HIEROGLYPH A438AN" + - "ATOLIAN HIEROGLYPH A439ANATOLIAN HIEROGLYPH A440ANATOLIAN HIEROGLYPH A44" + - "1ANATOLIAN HIEROGLYPH A442ANATOLIAN HIEROGLYPH A443ANATOLIAN HIEROGLYPH " + - "A444ANATOLIAN HIEROGLYPH A445ANATOLIAN HIEROGLYPH A446ANATOLIAN HIEROGLY" + - "PH A447ANATOLIAN HIEROGLYPH A448ANATOLIAN HIEROGLYPH A449ANATOLIAN HIERO" + - "GLYPH A450ANATOLIAN HIEROGLYPH A450AANATOLIAN HIEROGLYPH A451ANATOLIAN H" + - "IEROGLYPH A452ANATOLIAN HIEROGLYPH A453ANATOLIAN HIEROGLYPH A454ANATOLIA" + - "N HIEROGLYPH A455ANATOLIAN HIEROGLYPH A456ANATOLIAN HIEROGLYPH A457ANATO" + - "LIAN HIEROGLYPH A457AANATOLIAN HIEROGLYPH A458ANATOLIAN HIEROGLYPH A459A" + - "NATOLIAN HIEROGLYPH A460ANATOLIAN HIEROGLYPH A461ANATOLIAN HIEROGLYPH A4" + - "62ANATOLIAN HIEROGLYPH A463ANATOLIAN HIEROGLYPH A464ANATOLIAN HIEROGLYPH" + - " A465ANATOLIAN HIEROGLYPH A466ANATOLIAN HIEROGLYPH A467ANATOLIAN HIEROGL" + - "YPH A468ANATOLIAN HIEROGLYPH A469ANATOLIAN HIEROGLYPH A470ANATOLIAN HIER" + - "OGLYPH A471ANATOLIAN HIEROGLYPH A472ANATOLIAN HIEROGLYPH A473ANATOLIAN H" + - "IEROGLYPH A474ANATOLIAN HIEROGLYPH A475ANATOLIAN HIEROGLYPH A476ANATOLIA" + - "N HIEROGLYPH A477ANATOLIAN HIEROGLYPH A478ANATOLIAN HIEROGLYPH A479ANATO" + - "LIAN HIEROGLYPH A480ANATOLIAN HIEROGLYPH A481ANATOLIAN HIEROGLYPH A482AN") + ("" + - "ATOLIAN HIEROGLYPH A483ANATOLIAN HIEROGLYPH A484ANATOLIAN HIEROGLYPH A48" + - "5ANATOLIAN HIEROGLYPH A486ANATOLIAN HIEROGLYPH A487ANATOLIAN HIEROGLYPH " + - "A488ANATOLIAN HIEROGLYPH A489ANATOLIAN HIEROGLYPH A490ANATOLIAN HIEROGLY" + - "PH A491ANATOLIAN HIEROGLYPH A492ANATOLIAN HIEROGLYPH A493ANATOLIAN HIERO" + - "GLYPH A494ANATOLIAN HIEROGLYPH A495ANATOLIAN HIEROGLYPH A496ANATOLIAN HI" + - "EROGLYPH A497ANATOLIAN HIEROGLYPH A501ANATOLIAN HIEROGLYPH A502ANATOLIAN" + - " HIEROGLYPH A503ANATOLIAN HIEROGLYPH A504ANATOLIAN HIEROGLYPH A505ANATOL" + - "IAN HIEROGLYPH A506ANATOLIAN HIEROGLYPH A507ANATOLIAN HIEROGLYPH A508ANA" + - "TOLIAN HIEROGLYPH A509ANATOLIAN HIEROGLYPH A510ANATOLIAN HIEROGLYPH A511" + - "ANATOLIAN HIEROGLYPH A512ANATOLIAN HIEROGLYPH A513ANATOLIAN HIEROGLYPH A" + - "514ANATOLIAN HIEROGLYPH A515ANATOLIAN HIEROGLYPH A516ANATOLIAN HIEROGLYP" + - "H A517ANATOLIAN HIEROGLYPH A518ANATOLIAN HIEROGLYPH A519ANATOLIAN HIEROG" + - "LYPH A520ANATOLIAN HIEROGLYPH A521ANATOLIAN HIEROGLYPH A522ANATOLIAN HIE" + - "ROGLYPH A523ANATOLIAN HIEROGLYPH A524ANATOLIAN HIEROGLYPH A525ANATOLIAN " + - "HIEROGLYPH A526ANATOLIAN HIEROGLYPH A527ANATOLIAN HIEROGLYPH A528ANATOLI" + - "AN HIEROGLYPH A529ANATOLIAN HIEROGLYPH A530BAMUM LETTER PHASE-A NGKUE MF" + - "ONBAMUM LETTER PHASE-A GBIEE FONBAMUM LETTER PHASE-A PON MFON PIPAEMGBIE" + - "EBAMUM LETTER PHASE-A PON MFON PIPAEMBABAMUM LETTER PHASE-A NAA MFONBAMU" + - "M LETTER PHASE-A SHUENSHUETBAMUM LETTER PHASE-A TITA MFONBAMUM LETTER PH" + - "ASE-A NZA MFONBAMUM LETTER PHASE-A SHINDA PA NJIBAMUM LETTER PHASE-A PON" + - " PA NJI PIPAEMGBIEEBAMUM LETTER PHASE-A PON PA NJI PIPAEMBABAMUM LETTER " + - "PHASE-A MAEMBGBIEEBAMUM LETTER PHASE-A TU MAEMBABAMUM LETTER PHASE-A NGA" + - "NGUBAMUM LETTER PHASE-A MAEMVEUXBAMUM LETTER PHASE-A MANSUAEBAMUM LETTER" + - " PHASE-A MVEUAENGAMBAMUM LETTER PHASE-A SEUNYAMBAMUM LETTER PHASE-A NTOQ" + - "PENBAMUM LETTER PHASE-A KEUKEUTNDABAMUM LETTER PHASE-A NKINDIBAMUM LETTE" + - "R PHASE-A SUUBAMUM LETTER PHASE-A NGKUENZEUMBAMUM LETTER PHASE-A LAPAQBA" + - "MUM LETTER PHASE-A LET KUTBAMUM LETTER PHASE-A NTAP MFAABAMUM LETTER PHA" + - "SE-A MAEKEUPBAMUM LETTER PHASE-A PASHAEBAMUM LETTER PHASE-A GHEUAERAEBAM" + - "UM LETTER PHASE-A PAMSHAEBAMUM LETTER PHASE-A MON NGGEUAETBAMUM LETTER P" + - "HASE-A NZUN MEUTBAMUM LETTER PHASE-A U YUQ NAEBAMUM LETTER PHASE-A GHEUA" + - "EGHEUAEBAMUM LETTER PHASE-A NTAP NTAABAMUM LETTER PHASE-A SISABAMUM LETT" + - "ER PHASE-A MGBASABAMUM LETTER PHASE-A MEUNJOMNDEUQBAMUM LETTER PHASE-A M" + - "OOMPUQBAMUM LETTER PHASE-A KAFABAMUM LETTER PHASE-A PA LEERAEWABAMUM LET" + - "TER PHASE-A NDA LEERAEWABAMUM LETTER PHASE-A PETBAMUM LETTER PHASE-A MAE" + - "MKPENBAMUM LETTER PHASE-A NIKABAMUM LETTER PHASE-A PUPBAMUM LETTER PHASE" + - "-A TUAEPBAMUM LETTER PHASE-A LUAEPBAMUM LETTER PHASE-A SONJAMBAMUM LETTE" + - "R PHASE-A TEUTEUWENBAMUM LETTER PHASE-A MAENYIBAMUM LETTER PHASE-A KETBA" + - "MUM LETTER PHASE-A NDAANGGEUAETBAMUM LETTER PHASE-A KUOQBAMUM LETTER PHA" + - "SE-A MOOMEUTBAMUM LETTER PHASE-A SHUMBAMUM LETTER PHASE-A LOMMAEBAMUM LE" + - "TTER PHASE-A FIRIBAMUM LETTER PHASE-A ROMBAMUM LETTER PHASE-A KPOQBAMUM " + - "LETTER PHASE-A SOQBAMUM LETTER PHASE-A MAP PIEETBAMUM LETTER PHASE-A SHI" + - "RAEBAMUM LETTER PHASE-A NTAPBAMUM LETTER PHASE-A SHOQ NSHUT YUMBAMUM LET" + - "TER PHASE-A NYIT MONGKEUAEQBAMUM LETTER PHASE-A PAARAEBAMUM LETTER PHASE" + - "-A NKAARAEBAMUM LETTER PHASE-A UNKNOWNBAMUM LETTER PHASE-A NGGENBAMUM LE" + - "TTER PHASE-A MAESIBAMUM LETTER PHASE-A NJAMBAMUM LETTER PHASE-A MBANYIBA" + - "MUM LETTER PHASE-A NYETBAMUM LETTER PHASE-A TEUAENBAMUM LETTER PHASE-A S" + - "OTBAMUM LETTER PHASE-A PAAMBAMUM LETTER PHASE-A NSHIEEBAMUM LETTER PHASE" + - "-A MAEMBAMUM LETTER PHASE-A NYIBAMUM LETTER PHASE-A KAQBAMUM LETTER PHAS" + - "E-A NSHABAMUM LETTER PHASE-A VEEBAMUM LETTER PHASE-A LUBAMUM LETTER PHAS" + - "E-A NENBAMUM LETTER PHASE-A NAQBAMUM LETTER PHASE-A MBAQBAMUM LETTER PHA" + - "SE-B NSHUETBAMUM LETTER PHASE-B TU MAEMGBIEEBAMUM LETTER PHASE-B SIEEBAM" + - "UM LETTER PHASE-B SET TUBAMUM LETTER PHASE-B LOM NTEUMBAMUM LETTER PHASE" + - "-B MBA MAELEEBAMUM LETTER PHASE-B KIEEMBAMUM LETTER PHASE-B YEURAEBAMUM " + - "LETTER PHASE-B MBAARAEBAMUM LETTER PHASE-B KAMBAMUM LETTER PHASE-B PEESH" + - "IBAMUM LETTER PHASE-B YAFU LEERAEWABAMUM LETTER PHASE-B LAM NSHUT NYAMBA" + - "MUM LETTER PHASE-B NTIEE SHEUOQBAMUM LETTER PHASE-B NDU NJAABAMUM LETTER" + - " PHASE-B GHEUGHEUAEMBAMUM LETTER PHASE-B PITBAMUM LETTER PHASE-B TU NSIE" + - "EBAMUM LETTER PHASE-B SHET NJAQBAMUM LETTER PHASE-B SHEUAEQTUBAMUM LETTE" + - "R PHASE-B MFON TEUAEQBAMUM LETTER PHASE-B MBIT MBAAKETBAMUM LETTER PHASE" + - "-B NYI NTEUMBAMUM LETTER PHASE-B KEUPUQBAMUM LETTER PHASE-B GHEUGHENBAMU" + - "M LETTER PHASE-B KEUYEUXBAMUM LETTER PHASE-B LAANAEBAMUM LETTER PHASE-B " + - "PARUMBAMUM LETTER PHASE-B VEUMBAMUM LETTER PHASE-B NGKINDI MVOPBAMUM LET" + - "TER PHASE-B NGGEU MBUBAMUM LETTER PHASE-B WUAETBAMUM LETTER PHASE-B SAKE" + - "UAEBAMUM LETTER PHASE-B TAAMBAMUM LETTER PHASE-B MEUQBAMUM LETTER PHASE-") + ("" + - "B NGGUOQBAMUM LETTER PHASE-B NGGUOQ LARGEBAMUM LETTER PHASE-B MFIYAQBAMU" + - "M LETTER PHASE-B SUEBAMUM LETTER PHASE-B MBEURIBAMUM LETTER PHASE-B MONT" + - "IEENBAMUM LETTER PHASE-B NYAEMAEBAMUM LETTER PHASE-B PUNGAAMBAMUM LETTER" + - " PHASE-B MEUT NGGEETBAMUM LETTER PHASE-B FEUXBAMUM LETTER PHASE-B MBUOQB" + - "AMUM LETTER PHASE-B FEEBAMUM LETTER PHASE-B KEUAEMBAMUM LETTER PHASE-B M" + - "A NJEUAENABAMUM LETTER PHASE-B MA NJUQABAMUM LETTER PHASE-B LETBAMUM LET" + - "TER PHASE-B NGGAAMBAMUM LETTER PHASE-B NSENBAMUM LETTER PHASE-B MABAMUM " + - "LETTER PHASE-B KIQBAMUM LETTER PHASE-B NGOMBAMUM LETTER PHASE-C NGKUE MA" + - "EMBABAMUM LETTER PHASE-C NZABAMUM LETTER PHASE-C YUMBAMUM LETTER PHASE-C" + - " WANGKUOQBAMUM LETTER PHASE-C NGGENBAMUM LETTER PHASE-C NDEUAEREEBAMUM L" + - "ETTER PHASE-C NGKAQBAMUM LETTER PHASE-C GHARAEBAMUM LETTER PHASE-C MBEEK" + - "EETBAMUM LETTER PHASE-C GBAYIBAMUM LETTER PHASE-C NYIR MKPARAQ MEUNBAMUM" + - " LETTER PHASE-C NTU MBITBAMUM LETTER PHASE-C MBEUMBAMUM LETTER PHASE-C P" + - "IRIEENBAMUM LETTER PHASE-C NDOMBUBAMUM LETTER PHASE-C MBAA CABBAGE-TREEB" + - "AMUM LETTER PHASE-C KEUSHEUAEPBAMUM LETTER PHASE-C GHAPBAMUM LETTER PHAS" + - "E-C KEUKAQBAMUM LETTER PHASE-C YU MUOMAEBAMUM LETTER PHASE-C NZEUMBAMUM " + - "LETTER PHASE-C MBUEBAMUM LETTER PHASE-C NSEUAENBAMUM LETTER PHASE-C MBIT" + - "BAMUM LETTER PHASE-C YEUQBAMUM LETTER PHASE-C KPARAQBAMUM LETTER PHASE-C" + - " KAABAMUM LETTER PHASE-C SEUXBAMUM LETTER PHASE-C NDIDABAMUM LETTER PHAS" + - "E-C TAASHAEBAMUM LETTER PHASE-C NJUEQBAMUM LETTER PHASE-C TITA YUEBAMUM " + - "LETTER PHASE-C SUAETBAMUM LETTER PHASE-C NGGUAEN NYAMBAMUM LETTER PHASE-" + - "C VEUXBAMUM LETTER PHASE-C NANSANAQBAMUM LETTER PHASE-C MA KEUAERIBAMUM " + - "LETTER PHASE-C NTAABAMUM LETTER PHASE-C NGGUONBAMUM LETTER PHASE-C LAPBA" + - "MUM LETTER PHASE-C MBIRIEENBAMUM LETTER PHASE-C MGBASAQBAMUM LETTER PHAS" + - "E-C NTEUNGBABAMUM LETTER PHASE-C TEUTEUXBAMUM LETTER PHASE-C NGGUMBAMUM " + - "LETTER PHASE-C FUEBAMUM LETTER PHASE-C NDEUTBAMUM LETTER PHASE-C NSABAMU" + - "M LETTER PHASE-C NSHAQBAMUM LETTER PHASE-C BUNGBAMUM LETTER PHASE-C VEUA" + - "EPENBAMUM LETTER PHASE-C MBERAEBAMUM LETTER PHASE-C RUBAMUM LETTER PHASE" + - "-C NJAEMBAMUM LETTER PHASE-C LAMBAMUM LETTER PHASE-C TITUAEPBAMUM LETTER" + - " PHASE-C NSUOT NGOMBAMUM LETTER PHASE-C NJEEEEBAMUM LETTER PHASE-C KETBA" + - "MUM LETTER PHASE-C NGGUBAMUM LETTER PHASE-C MAESIBAMUM LETTER PHASE-C MB" + - "UAEMBAMUM LETTER PHASE-C LUBAMUM LETTER PHASE-C KUTBAMUM LETTER PHASE-C " + - "NJAMBAMUM LETTER PHASE-C NGOMBAMUM LETTER PHASE-C WUPBAMUM LETTER PHASE-" + - "C NGGUEETBAMUM LETTER PHASE-C NSOMBAMUM LETTER PHASE-C NTENBAMUM LETTER " + - "PHASE-C KUOP NKAARAEBAMUM LETTER PHASE-C NSUNBAMUM LETTER PHASE-C NDAMBA" + - "MUM LETTER PHASE-C MA NSIEEBAMUM LETTER PHASE-C YAABAMUM LETTER PHASE-C " + - "NDAPBAMUM LETTER PHASE-C SHUEQBAMUM LETTER PHASE-C SETFONBAMUM LETTER PH" + - "ASE-C MBIBAMUM LETTER PHASE-C MAEMBABAMUM LETTER PHASE-C MBANYIBAMUM LET" + - "TER PHASE-C KEUSEUXBAMUM LETTER PHASE-C MBEUXBAMUM LETTER PHASE-C KEUMBA" + - "MUM LETTER PHASE-C MBAA PICKETBAMUM LETTER PHASE-C YUWOQBAMUM LETTER PHA" + - "SE-C NJEUXBAMUM LETTER PHASE-C MIEEBAMUM LETTER PHASE-C MUAEBAMUM LETTER" + - " PHASE-C SHIQBAMUM LETTER PHASE-C KEN LAWBAMUM LETTER PHASE-C KEN FATIGU" + - "EBAMUM LETTER PHASE-C NGAQBAMUM LETTER PHASE-C NAQBAMUM LETTER PHASE-C L" + - "IQBAMUM LETTER PHASE-C PINBAMUM LETTER PHASE-C PENBAMUM LETTER PHASE-C T" + - "ETBAMUM LETTER PHASE-D MBUOBAMUM LETTER PHASE-D WAPBAMUM LETTER PHASE-D " + - "NJIBAMUM LETTER PHASE-D MFONBAMUM LETTER PHASE-D NJIEEBAMUM LETTER PHASE" + - "-D LIEEBAMUM LETTER PHASE-D NJEUTBAMUM LETTER PHASE-D NSHEEBAMUM LETTER " + - "PHASE-D NGGAAMAEBAMUM LETTER PHASE-D NYAMBAMUM LETTER PHASE-D WUAENBAMUM" + - " LETTER PHASE-D NGKUNBAMUM LETTER PHASE-D SHEEBAMUM LETTER PHASE-D NGKAP" + - "BAMUM LETTER PHASE-D KEUAETMEUNBAMUM LETTER PHASE-D TEUTBAMUM LETTER PHA" + - "SE-D SHEUAEBAMUM LETTER PHASE-D NJAPBAMUM LETTER PHASE-D SUEBAMUM LETTER" + - " PHASE-D KETBAMUM LETTER PHASE-D YAEMMAEBAMUM LETTER PHASE-D KUOMBAMUM L" + - "ETTER PHASE-D SAPBAMUM LETTER PHASE-D MFEUTBAMUM LETTER PHASE-D NDEUXBAM" + - "UM LETTER PHASE-D MALEERIBAMUM LETTER PHASE-D MEUTBAMUM LETTER PHASE-D S" + - "EUAEQBAMUM LETTER PHASE-D YENBAMUM LETTER PHASE-D NJEUAEMBAMUM LETTER PH" + - "ASE-D KEUOT MBUAEBAMUM LETTER PHASE-D NGKEURIBAMUM LETTER PHASE-D TUBAMU" + - "M LETTER PHASE-D GHAABAMUM LETTER PHASE-D NGKYEEBAMUM LETTER PHASE-D FEU" + - "FEUAETBAMUM LETTER PHASE-D NDEEBAMUM LETTER PHASE-D MGBOFUMBAMUM LETTER " + - "PHASE-D LEUAEPBAMUM LETTER PHASE-D NDONBAMUM LETTER PHASE-D MONIBAMUM LE" + - "TTER PHASE-D MGBEUNBAMUM LETTER PHASE-D PUUTBAMUM LETTER PHASE-D MGBIEEB" + - "AMUM LETTER PHASE-D MFOBAMUM LETTER PHASE-D LUMBAMUM LETTER PHASE-D NSIE" + - "EPBAMUM LETTER PHASE-D MBAABAMUM LETTER PHASE-D KWAETBAMUM LETTER PHASE-" + - "D NYETBAMUM LETTER PHASE-D TEUAENBAMUM LETTER PHASE-D SOTBAMUM LETTER PH" + - "ASE-D YUWOQBAMUM LETTER PHASE-D KEUMBAMUM LETTER PHASE-D RAEMBAMUM LETTE") + ("" + - "R PHASE-D TEEEEBAMUM LETTER PHASE-D NGKEUAEQBAMUM LETTER PHASE-D MFEUAEB" + - "AMUM LETTER PHASE-D NSIEETBAMUM LETTER PHASE-D KEUPBAMUM LETTER PHASE-D " + - "PIPBAMUM LETTER PHASE-D PEUTAEBAMUM LETTER PHASE-D NYUEBAMUM LETTER PHAS" + - "E-D LETBAMUM LETTER PHASE-D NGGAAMBAMUM LETTER PHASE-D MFIEEBAMUM LETTER" + - " PHASE-D NGGWAENBAMUM LETTER PHASE-D YUOMBAMUM LETTER PHASE-D PAPBAMUM L" + - "ETTER PHASE-D YUOPBAMUM LETTER PHASE-D NDAMBAMUM LETTER PHASE-D NTEUMBAM" + - "UM LETTER PHASE-D SUAEBAMUM LETTER PHASE-D KUNBAMUM LETTER PHASE-D NGGEU" + - "XBAMUM LETTER PHASE-D NGKIEEBAMUM LETTER PHASE-D TUOTBAMUM LETTER PHASE-" + - "D MEUNBAMUM LETTER PHASE-D KUQBAMUM LETTER PHASE-D NSUMBAMUM LETTER PHAS" + - "E-D TEUNBAMUM LETTER PHASE-D MAENJETBAMUM LETTER PHASE-D NGGAPBAMUM LETT" + - "ER PHASE-D LEUMBAMUM LETTER PHASE-D NGGUOMBAMUM LETTER PHASE-D NSHUTBAMU" + - "M LETTER PHASE-D NJUEQBAMUM LETTER PHASE-D GHEUAEBAMUM LETTER PHASE-D KU" + - "BAMUM LETTER PHASE-D REN OLDBAMUM LETTER PHASE-D TAEBAMUM LETTER PHASE-D" + - " TOQBAMUM LETTER PHASE-D NYIBAMUM LETTER PHASE-D RIIBAMUM LETTER PHASE-D" + - " LEEEEBAMUM LETTER PHASE-D MEEEEBAMUM LETTER PHASE-D MBAMUM LETTER PHASE" + - "-D SUUBAMUM LETTER PHASE-D MUBAMUM LETTER PHASE-D SHIIBAMUM LETTER PHASE" + - "-D SHEUXBAMUM LETTER PHASE-D KYEEBAMUM LETTER PHASE-D NUBAMUM LETTER PHA" + - "SE-D SHUBAMUM LETTER PHASE-D NTEEBAMUM LETTER PHASE-D PEEBAMUM LETTER PH" + - "ASE-D NIBAMUM LETTER PHASE-D SHOQBAMUM LETTER PHASE-D PUQBAMUM LETTER PH" + - "ASE-D MVOPBAMUM LETTER PHASE-D LOQBAMUM LETTER PHASE-D REN MUCHBAMUM LET" + - "TER PHASE-D TIBAMUM LETTER PHASE-D NTUUBAMUM LETTER PHASE-D MBAA SEVENBA" + - "MUM LETTER PHASE-D SAQBAMUM LETTER PHASE-D FAABAMUM LETTER PHASE-E NDAPB" + - "AMUM LETTER PHASE-E TOONBAMUM LETTER PHASE-E MBEUMBAMUM LETTER PHASE-E L" + - "APBAMUM LETTER PHASE-E VOMBAMUM LETTER PHASE-E LOONBAMUM LETTER PHASE-E " + - "PAABAMUM LETTER PHASE-E SOMBAMUM LETTER PHASE-E RAQBAMUM LETTER PHASE-E " + - "NSHUOPBAMUM LETTER PHASE-E NDUNBAMUM LETTER PHASE-E PUAEBAMUM LETTER PHA" + - "SE-E TAMBAMUM LETTER PHASE-E NGKABAMUM LETTER PHASE-E KPEUXBAMUM LETTER " + - "PHASE-E WUOBAMUM LETTER PHASE-E SEEBAMUM LETTER PHASE-E NGGEUAETBAMUM LE" + - "TTER PHASE-E PAAMBAMUM LETTER PHASE-E TOOBAMUM LETTER PHASE-E KUOPBAMUM " + - "LETTER PHASE-E LOMBAMUM LETTER PHASE-E NSHIEEBAMUM LETTER PHASE-E NGOPBA" + - "MUM LETTER PHASE-E MAEMBAMUM LETTER PHASE-E NGKEUXBAMUM LETTER PHASE-E N" + - "GOQBAMUM LETTER PHASE-E NSHUEBAMUM LETTER PHASE-E RIMGBABAMUM LETTER PHA" + - "SE-E NJEUXBAMUM LETTER PHASE-E PEEMBAMUM LETTER PHASE-E SAABAMUM LETTER " + - "PHASE-E NGGURAEBAMUM LETTER PHASE-E MGBABAMUM LETTER PHASE-E GHEUXBAMUM " + - "LETTER PHASE-E NGKEUAEMBAMUM LETTER PHASE-E NJAEMLIBAMUM LETTER PHASE-E " + - "MAPBAMUM LETTER PHASE-E LOOTBAMUM LETTER PHASE-E NGGEEEEBAMUM LETTER PHA" + - "SE-E NDIQBAMUM LETTER PHASE-E TAEN NTEUMBAMUM LETTER PHASE-E SETBAMUM LE" + - "TTER PHASE-E PUMBAMUM LETTER PHASE-E NDAA SOFTNESSBAMUM LETTER PHASE-E N" + - "GGUAESHAE NYAMBAMUM LETTER PHASE-E YIEEBAMUM LETTER PHASE-E GHEUNBAMUM L" + - "ETTER PHASE-E TUAEBAMUM LETTER PHASE-E YEUAEBAMUM LETTER PHASE-E POBAMUM" + - " LETTER PHASE-E TUMAEBAMUM LETTER PHASE-E KEUAEBAMUM LETTER PHASE-E SUAE" + - "NBAMUM LETTER PHASE-E TEUAEQBAMUM LETTER PHASE-E VEUAEBAMUM LETTER PHASE" + - "-E WEUXBAMUM LETTER PHASE-E LAAMBAMUM LETTER PHASE-E PUBAMUM LETTER PHAS" + - "E-E TAAQBAMUM LETTER PHASE-E GHAAMAEBAMUM LETTER PHASE-E NGEUREUTBAMUM L" + - "ETTER PHASE-E SHEUAEQBAMUM LETTER PHASE-E MGBENBAMUM LETTER PHASE-E MBEE" + - "BAMUM LETTER PHASE-E NZAQBAMUM LETTER PHASE-E NKOMBAMUM LETTER PHASE-E G" + - "BETBAMUM LETTER PHASE-E TUMBAMUM LETTER PHASE-E KUETBAMUM LETTER PHASE-E" + - " YAPBAMUM LETTER PHASE-E NYI CLEAVERBAMUM LETTER PHASE-E YITBAMUM LETTER" + - " PHASE-E MFEUQBAMUM LETTER PHASE-E NDIAQBAMUM LETTER PHASE-E PIEEQBAMUM " + - "LETTER PHASE-E YUEQBAMUM LETTER PHASE-E LEUAEMBAMUM LETTER PHASE-E FUEBA" + - "MUM LETTER PHASE-E GBEUXBAMUM LETTER PHASE-E NGKUPBAMUM LETTER PHASE-E K" + - "ETBAMUM LETTER PHASE-E MAEBAMUM LETTER PHASE-E NGKAAMIBAMUM LETTER PHASE" + - "-E GHETBAMUM LETTER PHASE-E FABAMUM LETTER PHASE-E NTUMBAMUM LETTER PHAS" + - "E-E PEUTBAMUM LETTER PHASE-E YEUMBAMUM LETTER PHASE-E NGGEUAEBAMUM LETTE" + - "R PHASE-E NYI BETWEENBAMUM LETTER PHASE-E NZUQBAMUM LETTER PHASE-E POONB" + - "AMUM LETTER PHASE-E MIEEBAMUM LETTER PHASE-E FUETBAMUM LETTER PHASE-E NA" + - "EBAMUM LETTER PHASE-E MUAEBAMUM LETTER PHASE-E GHEUAEBAMUM LETTER PHASE-" + - "E FU IBAMUM LETTER PHASE-E MVIBAMUM LETTER PHASE-E PUAQBAMUM LETTER PHAS" + - "E-E NGKUMBAMUM LETTER PHASE-E KUTBAMUM LETTER PHASE-E PIETBAMUM LETTER P" + - "HASE-E NTAPBAMUM LETTER PHASE-E YEUAETBAMUM LETTER PHASE-E NGGUPBAMUM LE" + - "TTER PHASE-E PA PEOPLEBAMUM LETTER PHASE-E FU CALLBAMUM LETTER PHASE-E F" + - "OMBAMUM LETTER PHASE-E NJEEBAMUM LETTER PHASE-E ABAMUM LETTER PHASE-E TO" + - "QBAMUM LETTER PHASE-E OBAMUM LETTER PHASE-E IBAMUM LETTER PHASE-E LAQBAM" + - "UM LETTER PHASE-E PA PLURALBAMUM LETTER PHASE-E TAABAMUM LETTER PHASE-E ") + ("" + - "TAQBAMUM LETTER PHASE-E NDAA MY HOUSEBAMUM LETTER PHASE-E SHIQBAMUM LETT" + - "ER PHASE-E YEUXBAMUM LETTER PHASE-E NGUAEBAMUM LETTER PHASE-E YUAENBAMUM" + - " LETTER PHASE-E YOQ SWIMMINGBAMUM LETTER PHASE-E YOQ COVERBAMUM LETTER P" + - "HASE-E YUQBAMUM LETTER PHASE-E YUNBAMUM LETTER PHASE-E KEUXBAMUM LETTER " + - "PHASE-E PEUXBAMUM LETTER PHASE-E NJEE EPOCHBAMUM LETTER PHASE-E PUEBAMUM" + - " LETTER PHASE-E WUEBAMUM LETTER PHASE-E FEEBAMUM LETTER PHASE-E VEEBAMUM" + - " LETTER PHASE-E LUBAMUM LETTER PHASE-E MIBAMUM LETTER PHASE-E REUXBAMUM " + - "LETTER PHASE-E RAEBAMUM LETTER PHASE-E NGUAETBAMUM LETTER PHASE-E NGABAM" + - "UM LETTER PHASE-E SHOBAMUM LETTER PHASE-E SHOQBAMUM LETTER PHASE-E FU RE" + - "MEDYBAMUM LETTER PHASE-E NABAMUM LETTER PHASE-E PIBAMUM LETTER PHASE-E L" + - "OQBAMUM LETTER PHASE-E KOBAMUM LETTER PHASE-E MENBAMUM LETTER PHASE-E MA" + - "BAMUM LETTER PHASE-E MAQBAMUM LETTER PHASE-E TEUBAMUM LETTER PHASE-E KIB" + - "AMUM LETTER PHASE-E MONBAMUM LETTER PHASE-E TENBAMUM LETTER PHASE-E FAQB" + - "AMUM LETTER PHASE-E GHOMBAMUM LETTER PHASE-F KABAMUM LETTER PHASE-F UBAM" + - "UM LETTER PHASE-F KUBAMUM LETTER PHASE-F EEBAMUM LETTER PHASE-F REEBAMUM" + - " LETTER PHASE-F TAEBAMUM LETTER PHASE-F NYIBAMUM LETTER PHASE-F LABAMUM " + - "LETTER PHASE-F RIIBAMUM LETTER PHASE-F RIEEBAMUM LETTER PHASE-F MEEEEBAM" + - "UM LETTER PHASE-F TAABAMUM LETTER PHASE-F NDAABAMUM LETTER PHASE-F NJAEM" + - "BAMUM LETTER PHASE-F MBAMUM LETTER PHASE-F SUUBAMUM LETTER PHASE-F SHIIB" + - "AMUM LETTER PHASE-F SIBAMUM LETTER PHASE-F SEUXBAMUM LETTER PHASE-F KYEE" + - "BAMUM LETTER PHASE-F KETBAMUM LETTER PHASE-F NUAEBAMUM LETTER PHASE-F NU" + - "BAMUM LETTER PHASE-F NJUAEBAMUM LETTER PHASE-F YOQBAMUM LETTER PHASE-F S" + - "HUBAMUM LETTER PHASE-F YABAMUM LETTER PHASE-F NSHABAMUM LETTER PHASE-F P" + - "EUXBAMUM LETTER PHASE-F NTEEBAMUM LETTER PHASE-F WUEBAMUM LETTER PHASE-F" + - " PEEBAMUM LETTER PHASE-F RUBAMUM LETTER PHASE-F NIBAMUM LETTER PHASE-F R" + - "EUXBAMUM LETTER PHASE-F KENBAMUM LETTER PHASE-F NGKWAENBAMUM LETTER PHAS" + - "E-F NGGABAMUM LETTER PHASE-F SHOBAMUM LETTER PHASE-F PUAEBAMUM LETTER PH" + - "ASE-F FOMBAMUM LETTER PHASE-F WABAMUM LETTER PHASE-F LIBAMUM LETTER PHAS" + - "E-F LOQBAMUM LETTER PHASE-F KOBAMUM LETTER PHASE-F MBENBAMUM LETTER PHAS" + - "E-F RENBAMUM LETTER PHASE-F MABAMUM LETTER PHASE-F MOBAMUM LETTER PHASE-" + - "F MBAABAMUM LETTER PHASE-F TETBAMUM LETTER PHASE-F KPABAMUM LETTER PHASE" + - "-F SAMBABAMUM LETTER PHASE-F VUEQMRO LETTER TAMRO LETTER NGIMRO LETTER Y" + - "OMRO LETTER MIMMRO LETTER BAMRO LETTER DAMRO LETTER AMRO LETTER PHIMRO L" + - "ETTER KHAIMRO LETTER HAOMRO LETTER DAIMRO LETTER CHUMRO LETTER KEAAEMRO " + - "LETTER OLMRO LETTER MAEMMRO LETTER NINMRO LETTER PAMRO LETTER OOMRO LETT" + - "ER OMRO LETTER ROMRO LETTER SHIMRO LETTER THEAMRO LETTER EAMRO LETTER WA" + - "MRO LETTER EMRO LETTER KOMRO LETTER LANMRO LETTER LAMRO LETTER HAIMRO LE" + - "TTER RIMRO LETTER TEKMRO DIGIT ZEROMRO DIGIT ONEMRO DIGIT TWOMRO DIGIT T" + - "HREEMRO DIGIT FOURMRO DIGIT FIVEMRO DIGIT SIXMRO DIGIT SEVENMRO DIGIT EI" + - "GHTMRO DIGIT NINEMRO DANDAMRO DOUBLE DANDABASSA VAH LETTER ENNIBASSA VAH" + - " LETTER KABASSA VAH LETTER SEBASSA VAH LETTER FABASSA VAH LETTER MBEBASS" + - "A VAH LETTER YIEBASSA VAH LETTER GAHBASSA VAH LETTER DHIIBASSA VAH LETTE" + - "R KPAHBASSA VAH LETTER JOBASSA VAH LETTER HWAHBASSA VAH LETTER WABASSA V" + - "AH LETTER ZOBASSA VAH LETTER GBUBASSA VAH LETTER DOBASSA VAH LETTER CEBA" + - "SSA VAH LETTER UWUBASSA VAH LETTER TOBASSA VAH LETTER BABASSA VAH LETTER" + - " VUBASSA VAH LETTER YEINBASSA VAH LETTER PABASSA VAH LETTER WADDABASSA V" + - "AH LETTER ABASSA VAH LETTER OBASSA VAH LETTER OOBASSA VAH LETTER UBASSA " + - "VAH LETTER EEBASSA VAH LETTER EBASSA VAH LETTER IBASSA VAH COMBINING HIG" + - "H TONEBASSA VAH COMBINING LOW TONEBASSA VAH COMBINING MID TONEBASSA VAH " + - "COMBINING LOW-MID TONEBASSA VAH COMBINING HIGH-LOW TONEBASSA VAH FULL ST" + - "OPPAHAWH HMONG VOWEL KEEBPAHAWH HMONG VOWEL KEEVPAHAWH HMONG VOWEL KIBPA" + - "HAWH HMONG VOWEL KIVPAHAWH HMONG VOWEL KAUBPAHAWH HMONG VOWEL KAUVPAHAWH" + - " HMONG VOWEL KUBPAHAWH HMONG VOWEL KUVPAHAWH HMONG VOWEL KEBPAHAWH HMONG" + - " VOWEL KEVPAHAWH HMONG VOWEL KAIBPAHAWH HMONG VOWEL KAIVPAHAWH HMONG VOW" + - "EL KOOBPAHAWH HMONG VOWEL KOOVPAHAWH HMONG VOWEL KAWBPAHAWH HMONG VOWEL " + - "KAWVPAHAWH HMONG VOWEL KUABPAHAWH HMONG VOWEL KUAVPAHAWH HMONG VOWEL KOB" + - "PAHAWH HMONG VOWEL KOVPAHAWH HMONG VOWEL KIABPAHAWH HMONG VOWEL KIAVPAHA" + - "WH HMONG VOWEL KABPAHAWH HMONG VOWEL KAVPAHAWH HMONG VOWEL KWBPAHAWH HMO" + - "NG VOWEL KWVPAHAWH HMONG VOWEL KAABPAHAWH HMONG VOWEL KAAVPAHAWH HMONG C" + - "ONSONANT VAUPAHAWH HMONG CONSONANT NTSAUPAHAWH HMONG CONSONANT LAUPAHAWH" + - " HMONG CONSONANT HAUPAHAWH HMONG CONSONANT NLAUPAHAWH HMONG CONSONANT RA" + - "UPAHAWH HMONG CONSONANT NKAUPAHAWH HMONG CONSONANT QHAUPAHAWH HMONG CONS" + - "ONANT YAUPAHAWH HMONG CONSONANT HLAUPAHAWH HMONG CONSONANT MAUPAHAWH HMO" + - "NG CONSONANT CHAUPAHAWH HMONG CONSONANT NCHAUPAHAWH HMONG CONSONANT HNAU") + ("" + - "PAHAWH HMONG CONSONANT PLHAUPAHAWH HMONG CONSONANT NTHAUPAHAWH HMONG CON" + - "SONANT NAUPAHAWH HMONG CONSONANT AUPAHAWH HMONG CONSONANT XAUPAHAWH HMON" + - "G CONSONANT CAUPAHAWH HMONG MARK CIM TUBPAHAWH HMONG MARK CIM SOPAHAWH H" + - "MONG MARK CIM KESPAHAWH HMONG MARK CIM KHAVPAHAWH HMONG MARK CIM SUAMPAH" + - "AWH HMONG MARK CIM HOMPAHAWH HMONG MARK CIM TAUMPAHAWH HMONG SIGN VOS TH" + - "OMPAHAWH HMONG SIGN VOS TSHAB CEEBPAHAWH HMONG SIGN CIM CHEEMPAHAWH HMON" + - "G SIGN VOS THIABPAHAWH HMONG SIGN VOS FEEMPAHAWH HMONG SIGN XYEEM NTXIVP" + - "AHAWH HMONG SIGN XYEEM RHOPAHAWH HMONG SIGN XYEEM TOVPAHAWH HMONG SIGN X" + - "YEEM FAIBPAHAWH HMONG SIGN VOS SEEVPAHAWH HMONG SIGN MEEJ SUABPAHAWH HMO" + - "NG SIGN VOS NRUAPAHAWH HMONG SIGN IB YAMPAHAWH HMONG SIGN XAUSPAHAWH HMO" + - "NG SIGN CIM TSOV ROGPAHAWH HMONG DIGIT ZEROPAHAWH HMONG DIGIT ONEPAHAWH " + - "HMONG DIGIT TWOPAHAWH HMONG DIGIT THREEPAHAWH HMONG DIGIT FOURPAHAWH HMO" + - "NG DIGIT FIVEPAHAWH HMONG DIGIT SIXPAHAWH HMONG DIGIT SEVENPAHAWH HMONG " + - "DIGIT EIGHTPAHAWH HMONG DIGIT NINEPAHAWH HMONG NUMBER TENSPAHAWH HMONG N" + - "UMBER HUNDREDSPAHAWH HMONG NUMBER TEN THOUSANDSPAHAWH HMONG NUMBER MILLI" + - "ONSPAHAWH HMONG NUMBER HUNDRED MILLIONSPAHAWH HMONG NUMBER TEN BILLIONSP" + - "AHAWH HMONG NUMBER TRILLIONSPAHAWH HMONG SIGN VOS LUBPAHAWH HMONG SIGN X" + - "YOOPAHAWH HMONG SIGN HLIPAHAWH HMONG SIGN THIRD-STAGE HLIPAHAWH HMONG SI" + - "GN ZWJ THAJPAHAWH HMONG SIGN HNUBPAHAWH HMONG SIGN NQIGPAHAWH HMONG SIGN" + - " XIABPAHAWH HMONG SIGN NTUJPAHAWH HMONG SIGN AVPAHAWH HMONG SIGN TXHEEJ " + - "CEEVPAHAWH HMONG SIGN MEEJ TSEEBPAHAWH HMONG SIGN TAUPAHAWH HMONG SIGN L" + - "OSPAHAWH HMONG SIGN MUSPAHAWH HMONG SIGN CIM HAIS LUS NTOG NTOGPAHAWH HM" + - "ONG SIGN CIM CUAM TSHOOJPAHAWH HMONG SIGN CIM TXWVPAHAWH HMONG SIGN CIM " + - "TXWV CHWVPAHAWH HMONG SIGN CIM PUB DAWBPAHAWH HMONG SIGN CIM NRES TOSPAH" + - "AWH HMONG CLAN SIGN TSHEEJPAHAWH HMONG CLAN SIGN YEEGPAHAWH HMONG CLAN S" + - "IGN LISPAHAWH HMONG CLAN SIGN LAUJPAHAWH HMONG CLAN SIGN XYOOJPAHAWH HMO" + - "NG CLAN SIGN KOOPAHAWH HMONG CLAN SIGN HAWJPAHAWH HMONG CLAN SIGN MUASPA" + - "HAWH HMONG CLAN SIGN THOJPAHAWH HMONG CLAN SIGN TSABPAHAWH HMONG CLAN SI" + - "GN PHABPAHAWH HMONG CLAN SIGN KHABPAHAWH HMONG CLAN SIGN HAMPAHAWH HMONG" + - " CLAN SIGN VAJPAHAWH HMONG CLAN SIGN FAJPAHAWH HMONG CLAN SIGN YAJPAHAWH" + - " HMONG CLAN SIGN TSWBPAHAWH HMONG CLAN SIGN KWMPAHAWH HMONG CLAN SIGN VW" + - "JMIAO LETTER PAMIAO LETTER BAMIAO LETTER YI PAMIAO LETTER PLAMIAO LETTER" + - " MAMIAO LETTER MHAMIAO LETTER ARCHAIC MAMIAO LETTER FAMIAO LETTER VAMIAO" + - " LETTER VFAMIAO LETTER TAMIAO LETTER DAMIAO LETTER YI TTAMIAO LETTER YI " + - "TAMIAO LETTER TTAMIAO LETTER DDAMIAO LETTER NAMIAO LETTER NHAMIAO LETTER" + - " YI NNAMIAO LETTER ARCHAIC NAMIAO LETTER NNAMIAO LETTER NNHAMIAO LETTER " + - "LAMIAO LETTER LYAMIAO LETTER LHAMIAO LETTER LHYAMIAO LETTER TLHAMIAO LET" + - "TER DLHAMIAO LETTER TLHYAMIAO LETTER DLHYAMIAO LETTER KAMIAO LETTER GAMI" + - "AO LETTER YI KAMIAO LETTER QAMIAO LETTER QGAMIAO LETTER NGAMIAO LETTER N" + - "GHAMIAO LETTER ARCHAIC NGAMIAO LETTER HAMIAO LETTER XAMIAO LETTER GHAMIA" + - "O LETTER GHHAMIAO LETTER TSSAMIAO LETTER DZZAMIAO LETTER NYAMIAO LETTER " + - "NYHAMIAO LETTER TSHAMIAO LETTER DZHAMIAO LETTER YI TSHAMIAO LETTER YI DZ" + - "HAMIAO LETTER REFORMED TSHAMIAO LETTER SHAMIAO LETTER SSAMIAO LETTER ZHA" + - "MIAO LETTER ZSHAMIAO LETTER TSAMIAO LETTER DZAMIAO LETTER YI TSAMIAO LET" + - "TER SAMIAO LETTER ZAMIAO LETTER ZSAMIAO LETTER ZZAMIAO LETTER ZZSAMIAO L" + - "ETTER ARCHAIC ZZAMIAO LETTER ZZYAMIAO LETTER ZZSYAMIAO LETTER WAMIAO LET" + - "TER AHMIAO LETTER HHAMIAO LETTER NASALIZATIONMIAO SIGN ASPIRATIONMIAO SI" + - "GN REFORMED VOICINGMIAO SIGN REFORMED ASPIRATIONMIAO VOWEL SIGN AMIAO VO" + - "WEL SIGN AAMIAO VOWEL SIGN AHHMIAO VOWEL SIGN ANMIAO VOWEL SIGN ANGMIAO " + - "VOWEL SIGN OMIAO VOWEL SIGN OOMIAO VOWEL SIGN WOMIAO VOWEL SIGN WMIAO VO" + - "WEL SIGN EMIAO VOWEL SIGN ENMIAO VOWEL SIGN ENGMIAO VOWEL SIGN OEYMIAO V" + - "OWEL SIGN IMIAO VOWEL SIGN IAMIAO VOWEL SIGN IANMIAO VOWEL SIGN IANGMIAO" + - " VOWEL SIGN IOMIAO VOWEL SIGN IEMIAO VOWEL SIGN IIMIAO VOWEL SIGN IUMIAO" + - " VOWEL SIGN INGMIAO VOWEL SIGN UMIAO VOWEL SIGN UAMIAO VOWEL SIGN UANMIA" + - "O VOWEL SIGN UANGMIAO VOWEL SIGN UUMIAO VOWEL SIGN UEIMIAO VOWEL SIGN UN" + - "GMIAO VOWEL SIGN YMIAO VOWEL SIGN YIMIAO VOWEL SIGN AEMIAO VOWEL SIGN AE" + - "EMIAO VOWEL SIGN ERRMIAO VOWEL SIGN ROUNDED ERRMIAO VOWEL SIGN ERMIAO VO" + - "WEL SIGN ROUNDED ERMIAO VOWEL SIGN AIMIAO VOWEL SIGN EIMIAO VOWEL SIGN A" + - "UMIAO VOWEL SIGN OUMIAO VOWEL SIGN NMIAO VOWEL SIGN NGMIAO TONE RIGHTMIA" + - "O TONE TOP RIGHTMIAO TONE ABOVEMIAO TONE BELOWMIAO LETTER TONE-2MIAO LET" + - "TER TONE-3MIAO LETTER TONE-4MIAO LETTER TONE-5MIAO LETTER TONE-6MIAO LET" + - "TER TONE-7MIAO LETTER TONE-8MIAO LETTER REFORMED TONE-1MIAO LETTER REFOR" + - "MED TONE-2MIAO LETTER REFORMED TONE-4MIAO LETTER REFORMED TONE-5MIAO LET" + - "TER REFORMED TONE-6MIAO LETTER REFORMED TONE-8TANGUT ITERATION MARKTANGU") + ("" + - "T COMPONENT-001TANGUT COMPONENT-002TANGUT COMPONENT-003TANGUT COMPONENT-" + - "004TANGUT COMPONENT-005TANGUT COMPONENT-006TANGUT COMPONENT-007TANGUT CO" + - "MPONENT-008TANGUT COMPONENT-009TANGUT COMPONENT-010TANGUT COMPONENT-011T" + - "ANGUT COMPONENT-012TANGUT COMPONENT-013TANGUT COMPONENT-014TANGUT COMPON" + - "ENT-015TANGUT COMPONENT-016TANGUT COMPONENT-017TANGUT COMPONENT-018TANGU" + - "T COMPONENT-019TANGUT COMPONENT-020TANGUT COMPONENT-021TANGUT COMPONENT-" + - "022TANGUT COMPONENT-023TANGUT COMPONENT-024TANGUT COMPONENT-025TANGUT CO" + - "MPONENT-026TANGUT COMPONENT-027TANGUT COMPONENT-028TANGUT COMPONENT-029T" + - "ANGUT COMPONENT-030TANGUT COMPONENT-031TANGUT COMPONENT-032TANGUT COMPON" + - "ENT-033TANGUT COMPONENT-034TANGUT COMPONENT-035TANGUT COMPONENT-036TANGU" + - "T COMPONENT-037TANGUT COMPONENT-038TANGUT COMPONENT-039TANGUT COMPONENT-" + - "040TANGUT COMPONENT-041TANGUT COMPONENT-042TANGUT COMPONENT-043TANGUT CO" + - "MPONENT-044TANGUT COMPONENT-045TANGUT COMPONENT-046TANGUT COMPONENT-047T" + - "ANGUT COMPONENT-048TANGUT COMPONENT-049TANGUT COMPONENT-050TANGUT COMPON" + - "ENT-051TANGUT COMPONENT-052TANGUT COMPONENT-053TANGUT COMPONENT-054TANGU" + - "T COMPONENT-055TANGUT COMPONENT-056TANGUT COMPONENT-057TANGUT COMPONENT-" + - "058TANGUT COMPONENT-059TANGUT COMPONENT-060TANGUT COMPONENT-061TANGUT CO" + - "MPONENT-062TANGUT COMPONENT-063TANGUT COMPONENT-064TANGUT COMPONENT-065T" + - "ANGUT COMPONENT-066TANGUT COMPONENT-067TANGUT COMPONENT-068TANGUT COMPON" + - "ENT-069TANGUT COMPONENT-070TANGUT COMPONENT-071TANGUT COMPONENT-072TANGU" + - "T COMPONENT-073TANGUT COMPONENT-074TANGUT COMPONENT-075TANGUT COMPONENT-" + - "076TANGUT COMPONENT-077TANGUT COMPONENT-078TANGUT COMPONENT-079TANGUT CO" + - "MPONENT-080TANGUT COMPONENT-081TANGUT COMPONENT-082TANGUT COMPONENT-083T" + - "ANGUT COMPONENT-084TANGUT COMPONENT-085TANGUT COMPONENT-086TANGUT COMPON" + - "ENT-087TANGUT COMPONENT-088TANGUT COMPONENT-089TANGUT COMPONENT-090TANGU" + - "T COMPONENT-091TANGUT COMPONENT-092TANGUT COMPONENT-093TANGUT COMPONENT-" + - "094TANGUT COMPONENT-095TANGUT COMPONENT-096TANGUT COMPONENT-097TANGUT CO" + - "MPONENT-098TANGUT COMPONENT-099TANGUT COMPONENT-100TANGUT COMPONENT-101T" + - "ANGUT COMPONENT-102TANGUT COMPONENT-103TANGUT COMPONENT-104TANGUT COMPON" + - "ENT-105TANGUT COMPONENT-106TANGUT COMPONENT-107TANGUT COMPONENT-108TANGU" + - "T COMPONENT-109TANGUT COMPONENT-110TANGUT COMPONENT-111TANGUT COMPONENT-" + - "112TANGUT COMPONENT-113TANGUT COMPONENT-114TANGUT COMPONENT-115TANGUT CO" + - "MPONENT-116TANGUT COMPONENT-117TANGUT COMPONENT-118TANGUT COMPONENT-119T" + - "ANGUT COMPONENT-120TANGUT COMPONENT-121TANGUT COMPONENT-122TANGUT COMPON" + - "ENT-123TANGUT COMPONENT-124TANGUT COMPONENT-125TANGUT COMPONENT-126TANGU" + - "T COMPONENT-127TANGUT COMPONENT-128TANGUT COMPONENT-129TANGUT COMPONENT-" + - "130TANGUT COMPONENT-131TANGUT COMPONENT-132TANGUT COMPONENT-133TANGUT CO" + - "MPONENT-134TANGUT COMPONENT-135TANGUT COMPONENT-136TANGUT COMPONENT-137T" + - "ANGUT COMPONENT-138TANGUT COMPONENT-139TANGUT COMPONENT-140TANGUT COMPON" + - "ENT-141TANGUT COMPONENT-142TANGUT COMPONENT-143TANGUT COMPONENT-144TANGU" + - "T COMPONENT-145TANGUT COMPONENT-146TANGUT COMPONENT-147TANGUT COMPONENT-" + - "148TANGUT COMPONENT-149TANGUT COMPONENT-150TANGUT COMPONENT-151TANGUT CO" + - "MPONENT-152TANGUT COMPONENT-153TANGUT COMPONENT-154TANGUT COMPONENT-155T" + - "ANGUT COMPONENT-156TANGUT COMPONENT-157TANGUT COMPONENT-158TANGUT COMPON" + - "ENT-159TANGUT COMPONENT-160TANGUT COMPONENT-161TANGUT COMPONENT-162TANGU" + - "T COMPONENT-163TANGUT COMPONENT-164TANGUT COMPONENT-165TANGUT COMPONENT-" + - "166TANGUT COMPONENT-167TANGUT COMPONENT-168TANGUT COMPONENT-169TANGUT CO" + - "MPONENT-170TANGUT COMPONENT-171TANGUT COMPONENT-172TANGUT COMPONENT-173T" + - "ANGUT COMPONENT-174TANGUT COMPONENT-175TANGUT COMPONENT-176TANGUT COMPON" + - "ENT-177TANGUT COMPONENT-178TANGUT COMPONENT-179TANGUT COMPONENT-180TANGU" + - "T COMPONENT-181TANGUT COMPONENT-182TANGUT COMPONENT-183TANGUT COMPONENT-" + - "184TANGUT COMPONENT-185TANGUT COMPONENT-186TANGUT COMPONENT-187TANGUT CO" + - "MPONENT-188TANGUT COMPONENT-189TANGUT COMPONENT-190TANGUT COMPONENT-191T" + - "ANGUT COMPONENT-192TANGUT COMPONENT-193TANGUT COMPONENT-194TANGUT COMPON" + - "ENT-195TANGUT COMPONENT-196TANGUT COMPONENT-197TANGUT COMPONENT-198TANGU" + - "T COMPONENT-199TANGUT COMPONENT-200TANGUT COMPONENT-201TANGUT COMPONENT-" + - "202TANGUT COMPONENT-203TANGUT COMPONENT-204TANGUT COMPONENT-205TANGUT CO" + - "MPONENT-206TANGUT COMPONENT-207TANGUT COMPONENT-208TANGUT COMPONENT-209T" + - "ANGUT COMPONENT-210TANGUT COMPONENT-211TANGUT COMPONENT-212TANGUT COMPON" + - "ENT-213TANGUT COMPONENT-214TANGUT COMPONENT-215TANGUT COMPONENT-216TANGU" + - "T COMPONENT-217TANGUT COMPONENT-218TANGUT COMPONENT-219TANGUT COMPONENT-" + - "220TANGUT COMPONENT-221TANGUT COMPONENT-222TANGUT COMPONENT-223TANGUT CO" + - "MPONENT-224TANGUT COMPONENT-225TANGUT COMPONENT-226TANGUT COMPONENT-227T" + - "ANGUT COMPONENT-228TANGUT COMPONENT-229TANGUT COMPONENT-230TANGUT COMPON") + ("" + - "ENT-231TANGUT COMPONENT-232TANGUT COMPONENT-233TANGUT COMPONENT-234TANGU" + - "T COMPONENT-235TANGUT COMPONENT-236TANGUT COMPONENT-237TANGUT COMPONENT-" + - "238TANGUT COMPONENT-239TANGUT COMPONENT-240TANGUT COMPONENT-241TANGUT CO" + - "MPONENT-242TANGUT COMPONENT-243TANGUT COMPONENT-244TANGUT COMPONENT-245T" + - "ANGUT COMPONENT-246TANGUT COMPONENT-247TANGUT COMPONENT-248TANGUT COMPON" + - "ENT-249TANGUT COMPONENT-250TANGUT COMPONENT-251TANGUT COMPONENT-252TANGU" + - "T COMPONENT-253TANGUT COMPONENT-254TANGUT COMPONENT-255TANGUT COMPONENT-" + - "256TANGUT COMPONENT-257TANGUT COMPONENT-258TANGUT COMPONENT-259TANGUT CO" + - "MPONENT-260TANGUT COMPONENT-261TANGUT COMPONENT-262TANGUT COMPONENT-263T" + - "ANGUT COMPONENT-264TANGUT COMPONENT-265TANGUT COMPONENT-266TANGUT COMPON" + - "ENT-267TANGUT COMPONENT-268TANGUT COMPONENT-269TANGUT COMPONENT-270TANGU" + - "T COMPONENT-271TANGUT COMPONENT-272TANGUT COMPONENT-273TANGUT COMPONENT-" + - "274TANGUT COMPONENT-275TANGUT COMPONENT-276TANGUT COMPONENT-277TANGUT CO" + - "MPONENT-278TANGUT COMPONENT-279TANGUT COMPONENT-280TANGUT COMPONENT-281T" + - "ANGUT COMPONENT-282TANGUT COMPONENT-283TANGUT COMPONENT-284TANGUT COMPON" + - "ENT-285TANGUT COMPONENT-286TANGUT COMPONENT-287TANGUT COMPONENT-288TANGU" + - "T COMPONENT-289TANGUT COMPONENT-290TANGUT COMPONENT-291TANGUT COMPONENT-" + - "292TANGUT COMPONENT-293TANGUT COMPONENT-294TANGUT COMPONENT-295TANGUT CO" + - "MPONENT-296TANGUT COMPONENT-297TANGUT COMPONENT-298TANGUT COMPONENT-299T" + - "ANGUT COMPONENT-300TANGUT COMPONENT-301TANGUT COMPONENT-302TANGUT COMPON" + - "ENT-303TANGUT COMPONENT-304TANGUT COMPONENT-305TANGUT COMPONENT-306TANGU" + - "T COMPONENT-307TANGUT COMPONENT-308TANGUT COMPONENT-309TANGUT COMPONENT-" + - "310TANGUT COMPONENT-311TANGUT COMPONENT-312TANGUT COMPONENT-313TANGUT CO" + - "MPONENT-314TANGUT COMPONENT-315TANGUT COMPONENT-316TANGUT COMPONENT-317T" + - "ANGUT COMPONENT-318TANGUT COMPONENT-319TANGUT COMPONENT-320TANGUT COMPON" + - "ENT-321TANGUT COMPONENT-322TANGUT COMPONENT-323TANGUT COMPONENT-324TANGU" + - "T COMPONENT-325TANGUT COMPONENT-326TANGUT COMPONENT-327TANGUT COMPONENT-" + - "328TANGUT COMPONENT-329TANGUT COMPONENT-330TANGUT COMPONENT-331TANGUT CO" + - "MPONENT-332TANGUT COMPONENT-333TANGUT COMPONENT-334TANGUT COMPONENT-335T" + - "ANGUT COMPONENT-336TANGUT COMPONENT-337TANGUT COMPONENT-338TANGUT COMPON" + - "ENT-339TANGUT COMPONENT-340TANGUT COMPONENT-341TANGUT COMPONENT-342TANGU" + - "T COMPONENT-343TANGUT COMPONENT-344TANGUT COMPONENT-345TANGUT COMPONENT-" + - "346TANGUT COMPONENT-347TANGUT COMPONENT-348TANGUT COMPONENT-349TANGUT CO" + - "MPONENT-350TANGUT COMPONENT-351TANGUT COMPONENT-352TANGUT COMPONENT-353T" + - "ANGUT COMPONENT-354TANGUT COMPONENT-355TANGUT COMPONENT-356TANGUT COMPON" + - "ENT-357TANGUT COMPONENT-358TANGUT COMPONENT-359TANGUT COMPONENT-360TANGU" + - "T COMPONENT-361TANGUT COMPONENT-362TANGUT COMPONENT-363TANGUT COMPONENT-" + - "364TANGUT COMPONENT-365TANGUT COMPONENT-366TANGUT COMPONENT-367TANGUT CO" + - "MPONENT-368TANGUT COMPONENT-369TANGUT COMPONENT-370TANGUT COMPONENT-371T" + - "ANGUT COMPONENT-372TANGUT COMPONENT-373TANGUT COMPONENT-374TANGUT COMPON" + - "ENT-375TANGUT COMPONENT-376TANGUT COMPONENT-377TANGUT COMPONENT-378TANGU" + - "T COMPONENT-379TANGUT COMPONENT-380TANGUT COMPONENT-381TANGUT COMPONENT-" + - "382TANGUT COMPONENT-383TANGUT COMPONENT-384TANGUT COMPONENT-385TANGUT CO" + - "MPONENT-386TANGUT COMPONENT-387TANGUT COMPONENT-388TANGUT COMPONENT-389T" + - "ANGUT COMPONENT-390TANGUT COMPONENT-391TANGUT COMPONENT-392TANGUT COMPON" + - "ENT-393TANGUT COMPONENT-394TANGUT COMPONENT-395TANGUT COMPONENT-396TANGU" + - "T COMPONENT-397TANGUT COMPONENT-398TANGUT COMPONENT-399TANGUT COMPONENT-" + - "400TANGUT COMPONENT-401TANGUT COMPONENT-402TANGUT COMPONENT-403TANGUT CO" + - "MPONENT-404TANGUT COMPONENT-405TANGUT COMPONENT-406TANGUT COMPONENT-407T" + - "ANGUT COMPONENT-408TANGUT COMPONENT-409TANGUT COMPONENT-410TANGUT COMPON" + - "ENT-411TANGUT COMPONENT-412TANGUT COMPONENT-413TANGUT COMPONENT-414TANGU" + - "T COMPONENT-415TANGUT COMPONENT-416TANGUT COMPONENT-417TANGUT COMPONENT-" + - "418TANGUT COMPONENT-419TANGUT COMPONENT-420TANGUT COMPONENT-421TANGUT CO" + - "MPONENT-422TANGUT COMPONENT-423TANGUT COMPONENT-424TANGUT COMPONENT-425T" + - "ANGUT COMPONENT-426TANGUT COMPONENT-427TANGUT COMPONENT-428TANGUT COMPON" + - "ENT-429TANGUT COMPONENT-430TANGUT COMPONENT-431TANGUT COMPONENT-432TANGU" + - "T COMPONENT-433TANGUT COMPONENT-434TANGUT COMPONENT-435TANGUT COMPONENT-" + - "436TANGUT COMPONENT-437TANGUT COMPONENT-438TANGUT COMPONENT-439TANGUT CO" + - "MPONENT-440TANGUT COMPONENT-441TANGUT COMPONENT-442TANGUT COMPONENT-443T" + - "ANGUT COMPONENT-444TANGUT COMPONENT-445TANGUT COMPONENT-446TANGUT COMPON" + - "ENT-447TANGUT COMPONENT-448TANGUT COMPONENT-449TANGUT COMPONENT-450TANGU" + - "T COMPONENT-451TANGUT COMPONENT-452TANGUT COMPONENT-453TANGUT COMPONENT-" + - "454TANGUT COMPONENT-455TANGUT COMPONENT-456TANGUT COMPONENT-457TANGUT CO" + - "MPONENT-458TANGUT COMPONENT-459TANGUT COMPONENT-460TANGUT COMPONENT-461T") + ("" + - "ANGUT COMPONENT-462TANGUT COMPONENT-463TANGUT COMPONENT-464TANGUT COMPON" + - "ENT-465TANGUT COMPONENT-466TANGUT COMPONENT-467TANGUT COMPONENT-468TANGU" + - "T COMPONENT-469TANGUT COMPONENT-470TANGUT COMPONENT-471TANGUT COMPONENT-" + - "472TANGUT COMPONENT-473TANGUT COMPONENT-474TANGUT COMPONENT-475TANGUT CO" + - "MPONENT-476TANGUT COMPONENT-477TANGUT COMPONENT-478TANGUT COMPONENT-479T" + - "ANGUT COMPONENT-480TANGUT COMPONENT-481TANGUT COMPONENT-482TANGUT COMPON" + - "ENT-483TANGUT COMPONENT-484TANGUT COMPONENT-485TANGUT COMPONENT-486TANGU" + - "T COMPONENT-487TANGUT COMPONENT-488TANGUT COMPONENT-489TANGUT COMPONENT-" + - "490TANGUT COMPONENT-491TANGUT COMPONENT-492TANGUT COMPONENT-493TANGUT CO" + - "MPONENT-494TANGUT COMPONENT-495TANGUT COMPONENT-496TANGUT COMPONENT-497T" + - "ANGUT COMPONENT-498TANGUT COMPONENT-499TANGUT COMPONENT-500TANGUT COMPON" + - "ENT-501TANGUT COMPONENT-502TANGUT COMPONENT-503TANGUT COMPONENT-504TANGU" + - "T COMPONENT-505TANGUT COMPONENT-506TANGUT COMPONENT-507TANGUT COMPONENT-" + - "508TANGUT COMPONENT-509TANGUT COMPONENT-510TANGUT COMPONENT-511TANGUT CO" + - "MPONENT-512TANGUT COMPONENT-513TANGUT COMPONENT-514TANGUT COMPONENT-515T" + - "ANGUT COMPONENT-516TANGUT COMPONENT-517TANGUT COMPONENT-518TANGUT COMPON" + - "ENT-519TANGUT COMPONENT-520TANGUT COMPONENT-521TANGUT COMPONENT-522TANGU" + - "T COMPONENT-523TANGUT COMPONENT-524TANGUT COMPONENT-525TANGUT COMPONENT-" + - "526TANGUT COMPONENT-527TANGUT COMPONENT-528TANGUT COMPONENT-529TANGUT CO" + - "MPONENT-530TANGUT COMPONENT-531TANGUT COMPONENT-532TANGUT COMPONENT-533T" + - "ANGUT COMPONENT-534TANGUT COMPONENT-535TANGUT COMPONENT-536TANGUT COMPON" + - "ENT-537TANGUT COMPONENT-538TANGUT COMPONENT-539TANGUT COMPONENT-540TANGU" + - "T COMPONENT-541TANGUT COMPONENT-542TANGUT COMPONENT-543TANGUT COMPONENT-" + - "544TANGUT COMPONENT-545TANGUT COMPONENT-546TANGUT COMPONENT-547TANGUT CO" + - "MPONENT-548TANGUT COMPONENT-549TANGUT COMPONENT-550TANGUT COMPONENT-551T" + - "ANGUT COMPONENT-552TANGUT COMPONENT-553TANGUT COMPONENT-554TANGUT COMPON" + - "ENT-555TANGUT COMPONENT-556TANGUT COMPONENT-557TANGUT COMPONENT-558TANGU" + - "T COMPONENT-559TANGUT COMPONENT-560TANGUT COMPONENT-561TANGUT COMPONENT-" + - "562TANGUT COMPONENT-563TANGUT COMPONENT-564TANGUT COMPONENT-565TANGUT CO" + - "MPONENT-566TANGUT COMPONENT-567TANGUT COMPONENT-568TANGUT COMPONENT-569T" + - "ANGUT COMPONENT-570TANGUT COMPONENT-571TANGUT COMPONENT-572TANGUT COMPON" + - "ENT-573TANGUT COMPONENT-574TANGUT COMPONENT-575TANGUT COMPONENT-576TANGU" + - "T COMPONENT-577TANGUT COMPONENT-578TANGUT COMPONENT-579TANGUT COMPONENT-" + - "580TANGUT COMPONENT-581TANGUT COMPONENT-582TANGUT COMPONENT-583TANGUT CO" + - "MPONENT-584TANGUT COMPONENT-585TANGUT COMPONENT-586TANGUT COMPONENT-587T" + - "ANGUT COMPONENT-588TANGUT COMPONENT-589TANGUT COMPONENT-590TANGUT COMPON" + - "ENT-591TANGUT COMPONENT-592TANGUT COMPONENT-593TANGUT COMPONENT-594TANGU" + - "T COMPONENT-595TANGUT COMPONENT-596TANGUT COMPONENT-597TANGUT COMPONENT-" + - "598TANGUT COMPONENT-599TANGUT COMPONENT-600TANGUT COMPONENT-601TANGUT CO" + - "MPONENT-602TANGUT COMPONENT-603TANGUT COMPONENT-604TANGUT COMPONENT-605T" + - "ANGUT COMPONENT-606TANGUT COMPONENT-607TANGUT COMPONENT-608TANGUT COMPON" + - "ENT-609TANGUT COMPONENT-610TANGUT COMPONENT-611TANGUT COMPONENT-612TANGU" + - "T COMPONENT-613TANGUT COMPONENT-614TANGUT COMPONENT-615TANGUT COMPONENT-" + - "616TANGUT COMPONENT-617TANGUT COMPONENT-618TANGUT COMPONENT-619TANGUT CO" + - "MPONENT-620TANGUT COMPONENT-621TANGUT COMPONENT-622TANGUT COMPONENT-623T" + - "ANGUT COMPONENT-624TANGUT COMPONENT-625TANGUT COMPONENT-626TANGUT COMPON" + - "ENT-627TANGUT COMPONENT-628TANGUT COMPONENT-629TANGUT COMPONENT-630TANGU" + - "T COMPONENT-631TANGUT COMPONENT-632TANGUT COMPONENT-633TANGUT COMPONENT-" + - "634TANGUT COMPONENT-635TANGUT COMPONENT-636TANGUT COMPONENT-637TANGUT CO" + - "MPONENT-638TANGUT COMPONENT-639TANGUT COMPONENT-640TANGUT COMPONENT-641T" + - "ANGUT COMPONENT-642TANGUT COMPONENT-643TANGUT COMPONENT-644TANGUT COMPON" + - "ENT-645TANGUT COMPONENT-646TANGUT COMPONENT-647TANGUT COMPONENT-648TANGU" + - "T COMPONENT-649TANGUT COMPONENT-650TANGUT COMPONENT-651TANGUT COMPONENT-" + - "652TANGUT COMPONENT-653TANGUT COMPONENT-654TANGUT COMPONENT-655TANGUT CO" + - "MPONENT-656TANGUT COMPONENT-657TANGUT COMPONENT-658TANGUT COMPONENT-659T" + - "ANGUT COMPONENT-660TANGUT COMPONENT-661TANGUT COMPONENT-662TANGUT COMPON" + - "ENT-663TANGUT COMPONENT-664TANGUT COMPONENT-665TANGUT COMPONENT-666TANGU" + - "T COMPONENT-667TANGUT COMPONENT-668TANGUT COMPONENT-669TANGUT COMPONENT-" + - "670TANGUT COMPONENT-671TANGUT COMPONENT-672TANGUT COMPONENT-673TANGUT CO" + - "MPONENT-674TANGUT COMPONENT-675TANGUT COMPONENT-676TANGUT COMPONENT-677T" + - "ANGUT COMPONENT-678TANGUT COMPONENT-679TANGUT COMPONENT-680TANGUT COMPON" + - "ENT-681TANGUT COMPONENT-682TANGUT COMPONENT-683TANGUT COMPONENT-684TANGU" + - "T COMPONENT-685TANGUT COMPONENT-686TANGUT COMPONENT-687TANGUT COMPONENT-" + - "688TANGUT COMPONENT-689TANGUT COMPONENT-690TANGUT COMPONENT-691TANGUT CO") + ("" + - "MPONENT-692TANGUT COMPONENT-693TANGUT COMPONENT-694TANGUT COMPONENT-695T" + - "ANGUT COMPONENT-696TANGUT COMPONENT-697TANGUT COMPONENT-698TANGUT COMPON" + - "ENT-699TANGUT COMPONENT-700TANGUT COMPONENT-701TANGUT COMPONENT-702TANGU" + - "T COMPONENT-703TANGUT COMPONENT-704TANGUT COMPONENT-705TANGUT COMPONENT-" + - "706TANGUT COMPONENT-707TANGUT COMPONENT-708TANGUT COMPONENT-709TANGUT CO" + - "MPONENT-710TANGUT COMPONENT-711TANGUT COMPONENT-712TANGUT COMPONENT-713T" + - "ANGUT COMPONENT-714TANGUT COMPONENT-715TANGUT COMPONENT-716TANGUT COMPON" + - "ENT-717TANGUT COMPONENT-718TANGUT COMPONENT-719TANGUT COMPONENT-720TANGU" + - "T COMPONENT-721TANGUT COMPONENT-722TANGUT COMPONENT-723TANGUT COMPONENT-" + - "724TANGUT COMPONENT-725TANGUT COMPONENT-726TANGUT COMPONENT-727TANGUT CO" + - "MPONENT-728TANGUT COMPONENT-729TANGUT COMPONENT-730TANGUT COMPONENT-731T" + - "ANGUT COMPONENT-732TANGUT COMPONENT-733TANGUT COMPONENT-734TANGUT COMPON" + - "ENT-735TANGUT COMPONENT-736TANGUT COMPONENT-737TANGUT COMPONENT-738TANGU" + - "T COMPONENT-739TANGUT COMPONENT-740TANGUT COMPONENT-741TANGUT COMPONENT-" + - "742TANGUT COMPONENT-743TANGUT COMPONENT-744TANGUT COMPONENT-745TANGUT CO" + - "MPONENT-746TANGUT COMPONENT-747TANGUT COMPONENT-748TANGUT COMPONENT-749T" + - "ANGUT COMPONENT-750TANGUT COMPONENT-751TANGUT COMPONENT-752TANGUT COMPON" + - "ENT-753TANGUT COMPONENT-754TANGUT COMPONENT-755KATAKANA LETTER ARCHAIC E" + - "HIRAGANA LETTER ARCHAIC YEDUPLOYAN LETTER HDUPLOYAN LETTER XDUPLOYAN LET" + - "TER PDUPLOYAN LETTER TDUPLOYAN LETTER FDUPLOYAN LETTER KDUPLOYAN LETTER " + - "LDUPLOYAN LETTER BDUPLOYAN LETTER DDUPLOYAN LETTER VDUPLOYAN LETTER GDUP" + - "LOYAN LETTER RDUPLOYAN LETTER P NDUPLOYAN LETTER D SDUPLOYAN LETTER F ND" + - "UPLOYAN LETTER K MDUPLOYAN LETTER R SDUPLOYAN LETTER THDUPLOYAN LETTER S" + - "LOAN DHDUPLOYAN LETTER DHDUPLOYAN LETTER KKDUPLOYAN LETTER SLOAN JDUPLOY" + - "AN LETTER HLDUPLOYAN LETTER LHDUPLOYAN LETTER RHDUPLOYAN LETTER MDUPLOYA" + - "N LETTER NDUPLOYAN LETTER JDUPLOYAN LETTER SDUPLOYAN LETTER M NDUPLOYAN " + - "LETTER N MDUPLOYAN LETTER J MDUPLOYAN LETTER S JDUPLOYAN LETTER M WITH D" + - "OTDUPLOYAN LETTER N WITH DOTDUPLOYAN LETTER J WITH DOTDUPLOYAN LETTER J " + - "WITH DOTS INSIDE AND ABOVEDUPLOYAN LETTER S WITH DOTDUPLOYAN LETTER S WI" + - "TH DOT BELOWDUPLOYAN LETTER M SDUPLOYAN LETTER N SDUPLOYAN LETTER J SDUP" + - "LOYAN LETTER S SDUPLOYAN LETTER M N SDUPLOYAN LETTER N M SDUPLOYAN LETTE" + - "R J M SDUPLOYAN LETTER S J SDUPLOYAN LETTER J S WITH DOTDUPLOYAN LETTER " + - "J NDUPLOYAN LETTER J N SDUPLOYAN LETTER S TDUPLOYAN LETTER S T RDUPLOYAN" + - " LETTER S PDUPLOYAN LETTER S P RDUPLOYAN LETTER T SDUPLOYAN LETTER T R S" + - "DUPLOYAN LETTER WDUPLOYAN LETTER WHDUPLOYAN LETTER W RDUPLOYAN LETTER S " + - "NDUPLOYAN LETTER S MDUPLOYAN LETTER K R SDUPLOYAN LETTER G R SDUPLOYAN L" + - "ETTER S KDUPLOYAN LETTER S K RDUPLOYAN LETTER ADUPLOYAN LETTER SLOAN OWD" + - "UPLOYAN LETTER OADUPLOYAN LETTER ODUPLOYAN LETTER AOUDUPLOYAN LETTER IDU" + - "PLOYAN LETTER EDUPLOYAN LETTER IEDUPLOYAN LETTER SHORT IDUPLOYAN LETTER " + - "UIDUPLOYAN LETTER EEDUPLOYAN LETTER SLOAN EHDUPLOYAN LETTER ROMANIAN IDU" + - "PLOYAN LETTER SLOAN EEDUPLOYAN LETTER LONG IDUPLOYAN LETTER YEDUPLOYAN L" + - "ETTER UDUPLOYAN LETTER EUDUPLOYAN LETTER XWDUPLOYAN LETTER U NDUPLOYAN L" + - "ETTER LONG UDUPLOYAN LETTER ROMANIAN UDUPLOYAN LETTER UHDUPLOYAN LETTER " + - "SLOAN UDUPLOYAN LETTER OOHDUPLOYAN LETTER OWDUPLOYAN LETTER OUDUPLOYAN L" + - "ETTER WADUPLOYAN LETTER WODUPLOYAN LETTER WIDUPLOYAN LETTER WEIDUPLOYAN " + - "LETTER WOWDUPLOYAN LETTER NASAL UDUPLOYAN LETTER NASAL ODUPLOYAN LETTER " + - "NASAL IDUPLOYAN LETTER NASAL ADUPLOYAN LETTER PERNIN ANDUPLOYAN LETTER P" + - "ERNIN AMDUPLOYAN LETTER SLOAN ENDUPLOYAN LETTER SLOAN ANDUPLOYAN LETTER " + - "SLOAN ONDUPLOYAN LETTER VOCALIC MDUPLOYAN AFFIX LEFT HORIZONTAL SECANTDU" + - "PLOYAN AFFIX MID HORIZONTAL SECANTDUPLOYAN AFFIX RIGHT HORIZONTAL SECANT" + - "DUPLOYAN AFFIX LOW VERTICAL SECANTDUPLOYAN AFFIX MID VERTICAL SECANTDUPL" + - "OYAN AFFIX HIGH VERTICAL SECANTDUPLOYAN AFFIX ATTACHED SECANTDUPLOYAN AF" + - "FIX ATTACHED LEFT-TO-RIGHT SECANTDUPLOYAN AFFIX ATTACHED TANGENTDUPLOYAN" + - " AFFIX ATTACHED TAILDUPLOYAN AFFIX ATTACHED E HOOKDUPLOYAN AFFIX ATTACHE" + - "D I HOOKDUPLOYAN AFFIX ATTACHED TANGENT HOOKDUPLOYAN AFFIX HIGH ACUTEDUP" + - "LOYAN AFFIX HIGH TIGHT ACUTEDUPLOYAN AFFIX HIGH GRAVEDUPLOYAN AFFIX HIGH" + - " LONG GRAVEDUPLOYAN AFFIX HIGH DOTDUPLOYAN AFFIX HIGH CIRCLEDUPLOYAN AFF" + - "IX HIGH LINEDUPLOYAN AFFIX HIGH WAVEDUPLOYAN AFFIX HIGH VERTICALDUPLOYAN" + - " AFFIX LOW ACUTEDUPLOYAN AFFIX LOW TIGHT ACUTEDUPLOYAN AFFIX LOW GRAVEDU" + - "PLOYAN AFFIX LOW LONG GRAVEDUPLOYAN AFFIX LOW DOTDUPLOYAN AFFIX LOW CIRC" + - "LEDUPLOYAN AFFIX LOW LINEDUPLOYAN AFFIX LOW WAVEDUPLOYAN AFFIX LOW VERTI" + - "CALDUPLOYAN AFFIX LOW ARROWDUPLOYAN SIGN O WITH CROSSDUPLOYAN THICK LETT" + - "ER SELECTORDUPLOYAN DOUBLE MARKDUPLOYAN PUNCTUATION CHINOOK FULL STOPSHO" + - "RTHAND FORMAT LETTER OVERLAPSHORTHAND FORMAT CONTINUING OVERLAPSHORTHAND") + ("" + - " FORMAT DOWN STEPSHORTHAND FORMAT UP STEPBYZANTINE MUSICAL SYMBOL PSILIB" + - "YZANTINE MUSICAL SYMBOL DASEIABYZANTINE MUSICAL SYMBOL PERISPOMENIBYZANT" + - "INE MUSICAL SYMBOL OXEIA EKFONITIKONBYZANTINE MUSICAL SYMBOL OXEIA DIPLI" + - "BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKONBYZANTINE MUSICAL SYMBOL VARE" + - "IA DIPLIBYZANTINE MUSICAL SYMBOL KATHISTIBYZANTINE MUSICAL SYMBOL SYRMAT" + - "IKIBYZANTINE MUSICAL SYMBOL PARAKLITIKIBYZANTINE MUSICAL SYMBOL YPOKRISI" + - "SBYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLIBYZANTINE MUSICAL SYMBOL KREMAS" + - "TIBYZANTINE MUSICAL SYMBOL APESO EKFONITIKONBYZANTINE MUSICAL SYMBOL EXO" + - " EKFONITIKONBYZANTINE MUSICAL SYMBOL TELEIABYZANTINE MUSICAL SYMBOL KENT" + - "IMATABYZANTINE MUSICAL SYMBOL APOSTROFOSBYZANTINE MUSICAL SYMBOL APOSTRO" + - "FOS DIPLIBYZANTINE MUSICAL SYMBOL SYNEVMABYZANTINE MUSICAL SYMBOL THITAB" + - "YZANTINE MUSICAL SYMBOL OLIGON ARCHAIONBYZANTINE MUSICAL SYMBOL GORGON A" + - "RCHAIONBYZANTINE MUSICAL SYMBOL PSILONBYZANTINE MUSICAL SYMBOL CHAMILONB" + - "YZANTINE MUSICAL SYMBOL VATHYBYZANTINE MUSICAL SYMBOL ISON ARCHAIONBYZAN" + - "TINE MUSICAL SYMBOL KENTIMA ARCHAIONBYZANTINE MUSICAL SYMBOL KENTIMATA A" + - "RCHAIONBYZANTINE MUSICAL SYMBOL SAXIMATABYZANTINE MUSICAL SYMBOL PARICHO" + - "NBYZANTINE MUSICAL SYMBOL STAVROS APODEXIABYZANTINE MUSICAL SYMBOL OXEIA" + - "I ARCHAIONBYZANTINE MUSICAL SYMBOL VAREIAI ARCHAIONBYZANTINE MUSICAL SYM" + - "BOL APODERMA ARCHAIONBYZANTINE MUSICAL SYMBOL APOTHEMABYZANTINE MUSICAL " + - "SYMBOL KLASMABYZANTINE MUSICAL SYMBOL REVMABYZANTINE MUSICAL SYMBOL PIAS" + - "MA ARCHAIONBYZANTINE MUSICAL SYMBOL TINAGMABYZANTINE MUSICAL SYMBOL ANAT" + - "RICHISMABYZANTINE MUSICAL SYMBOL SEISMABYZANTINE MUSICAL SYMBOL SYNAGMA " + - "ARCHAIONBYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROUBYZANTINE MUSICAL S" + - "YMBOL OYRANISMA ARCHAIONBYZANTINE MUSICAL SYMBOL THEMABYZANTINE MUSICAL " + - "SYMBOL LEMOIBYZANTINE MUSICAL SYMBOL DYOBYZANTINE MUSICAL SYMBOL TRIABYZ" + - "ANTINE MUSICAL SYMBOL TESSERABYZANTINE MUSICAL SYMBOL KRATIMATABYZANTINE" + - " MUSICAL SYMBOL APESO EXO NEOBYZANTINE MUSICAL SYMBOL FTHORA ARCHAIONBYZ" + - "ANTINE MUSICAL SYMBOL IMIFTHORABYZANTINE MUSICAL SYMBOL TROMIKON ARCHAIO" + - "NBYZANTINE MUSICAL SYMBOL KATAVA TROMIKONBYZANTINE MUSICAL SYMBOL PELAST" + - "ONBYZANTINE MUSICAL SYMBOL PSIFISTONBYZANTINE MUSICAL SYMBOL KONTEVMABYZ" + - "ANTINE MUSICAL SYMBOL CHOREVMA ARCHAIONBYZANTINE MUSICAL SYMBOL RAPISMAB" + - "YZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAIONBYZANTINE MUSICAL SYMBOL PAR" + - "AKLITIKI ARCHAIONBYZANTINE MUSICAL SYMBOL ICHADINBYZANTINE MUSICAL SYMBO" + - "L NANABYZANTINE MUSICAL SYMBOL PETASMABYZANTINE MUSICAL SYMBOL KONTEVMA " + - "ALLOBYZANTINE MUSICAL SYMBOL TROMIKON ALLOBYZANTINE MUSICAL SYMBOL STRAG" + - "GISMATABYZANTINE MUSICAL SYMBOL GRONTHISMATABYZANTINE MUSICAL SYMBOL ISO" + - "N NEOBYZANTINE MUSICAL SYMBOL OLIGON NEOBYZANTINE MUSICAL SYMBOL OXEIA N" + - "EOBYZANTINE MUSICAL SYMBOL PETASTIBYZANTINE MUSICAL SYMBOL KOUFISMABYZAN" + - "TINE MUSICAL SYMBOL PETASTOKOUFISMABYZANTINE MUSICAL SYMBOL KRATIMOKOUFI" + - "SMABYZANTINE MUSICAL SYMBOL PELASTON NEOBYZANTINE MUSICAL SYMBOL KENTIMA" + - "TA NEO ANOBYZANTINE MUSICAL SYMBOL KENTIMA NEO ANOBYZANTINE MUSICAL SYMB" + - "OL YPSILIBYZANTINE MUSICAL SYMBOL APOSTROFOS NEOBYZANTINE MUSICAL SYMBOL" + - " APOSTROFOI SYNDESMOS NEOBYZANTINE MUSICAL SYMBOL YPORROIBYZANTINE MUSIC" + - "AL SYMBOL KRATIMOYPORROONBYZANTINE MUSICAL SYMBOL ELAFRONBYZANTINE MUSIC" + - "AL SYMBOL CHAMILIBYZANTINE MUSICAL SYMBOL MIKRON ISONBYZANTINE MUSICAL S" + - "YMBOL VAREIA NEOBYZANTINE MUSICAL SYMBOL PIASMA NEOBYZANTINE MUSICAL SYM" + - "BOL PSIFISTON NEOBYZANTINE MUSICAL SYMBOL OMALONBYZANTINE MUSICAL SYMBOL" + - " ANTIKENOMABYZANTINE MUSICAL SYMBOL LYGISMABYZANTINE MUSICAL SYMBOL PARA" + - "KLITIKI NEOBYZANTINE MUSICAL SYMBOL PARAKALESMA NEOBYZANTINE MUSICAL SYM" + - "BOL ETERON PARAKALESMABYZANTINE MUSICAL SYMBOL KYLISMABYZANTINE MUSICAL " + - "SYMBOL ANTIKENOKYLISMABYZANTINE MUSICAL SYMBOL TROMIKON NEOBYZANTINE MUS" + - "ICAL SYMBOL EKSTREPTONBYZANTINE MUSICAL SYMBOL SYNAGMA NEOBYZANTINE MUSI" + - "CAL SYMBOL SYRMABYZANTINE MUSICAL SYMBOL CHOREVMA NEOBYZANTINE MUSICAL S" + - "YMBOL EPEGERMABYZANTINE MUSICAL SYMBOL SEISMA NEOBYZANTINE MUSICAL SYMBO" + - "L XIRON KLASMABYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTONBYZANTINE MUSICAL" + - " SYMBOL PSIFISTOLYGISMABYZANTINE MUSICAL SYMBOL TROMIKOLYGISMABYZANTINE " + - "MUSICAL SYMBOL TROMIKOPARAKALESMABYZANTINE MUSICAL SYMBOL PSIFISTOPARAKA" + - "LESMABYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMABYZANTINE MUSICAL SYMBOL PSI" + - "FISTOSYNAGMABYZANTINE MUSICAL SYMBOL GORGOSYNTHETONBYZANTINE MUSICAL SYM" + - "BOL ARGOSYNTHETONBYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETONBYZANTINE " + - "MUSICAL SYMBOL OYRANISMA NEOBYZANTINE MUSICAL SYMBOL THEMATISMOS ESOBYZA" + - "NTINE MUSICAL SYMBOL THEMATISMOS EXOBYZANTINE MUSICAL SYMBOL THEMA APLOU" + - "NBYZANTINE MUSICAL SYMBOL THES KAI APOTHESBYZANTINE MUSICAL SYMBOL KATAV" + - "ASMABYZANTINE MUSICAL SYMBOL ENDOFONONBYZANTINE MUSICAL SYMBOL YFEN KATO") + ("" + - "BYZANTINE MUSICAL SYMBOL YFEN ANOBYZANTINE MUSICAL SYMBOL STAVROSBYZANTI" + - "NE MUSICAL SYMBOL KLASMA ANOBYZANTINE MUSICAL SYMBOL DIPLI ARCHAIONBYZAN" + - "TINE MUSICAL SYMBOL KRATIMA ARCHAIONBYZANTINE MUSICAL SYMBOL KRATIMA ALL" + - "OBYZANTINE MUSICAL SYMBOL KRATIMA NEOBYZANTINE MUSICAL SYMBOL APODERMA N" + - "EOBYZANTINE MUSICAL SYMBOL APLIBYZANTINE MUSICAL SYMBOL DIPLIBYZANTINE M" + - "USICAL SYMBOL TRIPLIBYZANTINE MUSICAL SYMBOL TETRAPLIBYZANTINE MUSICAL S" + - "YMBOL KORONISBYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOUBYZANTINE MUSIC" + - "AL SYMBOL LEIMMA DYO CHRONONBYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONO" + - "NBYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONONBYZANTINE MUSICAL SYMBO" + - "L LEIMMA IMISEOS CHRONOUBYZANTINE MUSICAL SYMBOL GORGON NEO ANOBYZANTINE" + - " MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERABYZANTINE MUSICAL SYMBOL GO" + - "RGON PARESTIGMENON DEXIABYZANTINE MUSICAL SYMBOL DIGORGONBYZANTINE MUSIC" + - "AL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATOBYZANTINE MUSICAL SYMBOL D" + - "IGORGON PARESTIGMENON ARISTERA ANOBYZANTINE MUSICAL SYMBOL DIGORGON PARE" + - "STIGMENON DEXIABYZANTINE MUSICAL SYMBOL TRIGORGONBYZANTINE MUSICAL SYMBO" + - "L ARGONBYZANTINE MUSICAL SYMBOL IMIDIARGONBYZANTINE MUSICAL SYMBOL DIARG" + - "ONBYZANTINE MUSICAL SYMBOL AGOGI POLI ARGIBYZANTINE MUSICAL SYMBOL AGOGI" + - " ARGOTERIBYZANTINE MUSICAL SYMBOL AGOGI ARGIBYZANTINE MUSICAL SYMBOL AGO" + - "GI METRIABYZANTINE MUSICAL SYMBOL AGOGI MESIBYZANTINE MUSICAL SYMBOL AGO" + - "GI GORGIBYZANTINE MUSICAL SYMBOL AGOGI GORGOTERIBYZANTINE MUSICAL SYMBOL" + - " AGOGI POLI GORGIBYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOSBYZANTINE" + - " MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOSBYZANTINE MUSICAL SYMBOL MARTY" + - "RIA DEYTEROS ICHOSBYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOSB" + - "YZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOSBYZANTINE MUSICAL SYMBOL MA" + - "RTYRIA TRIFONIASBYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOSBYZANTIN" + - "E MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOSBYZANTINE MUSICAL SYMBOL" + - " MARTYRIA LEGETOS ICHOSBYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOSBY" + - "ZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOSBYZANTINE MUSICAL SYMBOL A" + - "POSTROFOI TELOUS ICHIMATOSBYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS" + - "BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIASBYZANTINE MUSICAL SYMBOL FA" + - "NEROSIS DIFONIASBYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOSBYZANTINE M" + - "USICAL SYMBOL MARTYRIA PROTOVARYS ICHOSBYZANTINE MUSICAL SYMBOL MARTYRIA" + - " PLAGIOS TETARTOS ICHOSBYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUNBYZAN" + - "TINE MUSICAL SYMBOL GORTHMIKON N DIPLOUNBYZANTINE MUSICAL SYMBOL ENARXIS" + - " KAI FTHORA VOUBYZANTINE MUSICAL SYMBOL IMIFONONBYZANTINE MUSICAL SYMBOL" + - " IMIFTHORONBYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOUBYZANT" + - "INE MUSICAL SYMBOL FTHORA DIATONIKI PABYZANTINE MUSICAL SYMBOL FTHORA DI" + - "ATONIKI NANABYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOSBYZANTINE MUSICAL " + - "SYMBOL FTHORA DIATONIKI DIBYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATON" + - "ON DIBYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KEBYZANTINE MUSICAL SYMBO" + - "L FTHORA DIATONIKI ZOBYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATOBY" + - "ZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANOBYZANTINE MUSICAL SYMBOL F" + - "THORA MALAKON CHROMA DIFONIASBYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHR" + - "OMA MONOFONIASBYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASISBYZANT" + - "INE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFIBYZANTINE MUSICAL SYMBOL " + - "FTHORA NENANOBYZANTINE MUSICAL SYMBOL CHROA ZYGOSBYZANTINE MUSICAL SYMBO" + - "L CHROA KLITONBYZANTINE MUSICAL SYMBOL CHROA SPATHIBYZANTINE MUSICAL SYM" + - "BOL FTHORA I YFESIS TETARTIMORIONBYZANTINE MUSICAL SYMBOL FTHORA ENARMON" + - "IOS ANTIFONIABYZANTINE MUSICAL SYMBOL YFESIS TRITIMORIONBYZANTINE MUSICA" + - "L SYMBOL DIESIS TRITIMORIONBYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION" + - "BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATABYZANTINE MUSICAL SYMBO" + - "L DIESIS MONOGRAMMOS TESSERA DODEKATABYZANTINE MUSICAL SYMBOL DIESIS DIG" + - "RAMMOS EX DODEKATABYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKA" + - "TABYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATABYZANTINE MUSICAL SYM" + - "BOL YFESIS MONOGRAMMOS TESSERA DODEKATABYZANTINE MUSICAL SYMBOL YFESIS D" + - "IGRAMMOS EX DODEKATABYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODE" + - "KATABYZANTINE MUSICAL SYMBOL GENIKI DIESISBYZANTINE MUSICAL SYMBOL GENIK" + - "I YFESISBYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRIBYZANTINE MUSICAL SY" + - "MBOL DIASTOLI APLI MEGALIBYZANTINE MUSICAL SYMBOL DIASTOLI DIPLIBYZANTIN" + - "E MUSICAL SYMBOL DIASTOLI THESEOSBYZANTINE MUSICAL SYMBOL SIMANSIS THESE" + - "OSBYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOUBYZANTINE MUSICAL SYM" + - "BOL SIMANSIS THESEOS TRISIMOUBYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS T" + - "ETRASIMOUBYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOSBYZANTINE MUSICAL SYMBO" + - "L SIMANSIS ARSEOS DISIMOUBYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIM") + ("" + - "OUBYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOUBYZANTINE MUSICAL S" + - "YMBOL DIGRAMMA GGBYZANTINE MUSICAL SYMBOL DIFTOGGOS OUBYZANTINE MUSICAL " + - "SYMBOL STIGMABYZANTINE MUSICAL SYMBOL ARKTIKO PABYZANTINE MUSICAL SYMBOL" + - " ARKTIKO VOUBYZANTINE MUSICAL SYMBOL ARKTIKO GABYZANTINE MUSICAL SYMBOL " + - "ARKTIKO DIBYZANTINE MUSICAL SYMBOL ARKTIKO KEBYZANTINE MUSICAL SYMBOL AR" + - "KTIKO ZOBYZANTINE MUSICAL SYMBOL ARKTIKO NIBYZANTINE MUSICAL SYMBOL KENT" + - "IMATA NEO MESOBYZANTINE MUSICAL SYMBOL KENTIMA NEO MESOBYZANTINE MUSICAL" + - " SYMBOL KENTIMATA NEO KATOBYZANTINE MUSICAL SYMBOL KENTIMA NEO KATOBYZAN" + - "TINE MUSICAL SYMBOL KLASMA KATOBYZANTINE MUSICAL SYMBOL GORGON NEO KATOM" + - "USICAL SYMBOL SINGLE BARLINEMUSICAL SYMBOL DOUBLE BARLINEMUSICAL SYMBOL " + - "FINAL BARLINEMUSICAL SYMBOL REVERSE FINAL BARLINEMUSICAL SYMBOL DASHED B" + - "ARLINEMUSICAL SYMBOL SHORT BARLINEMUSICAL SYMBOL LEFT REPEAT SIGNMUSICAL" + - " SYMBOL RIGHT REPEAT SIGNMUSICAL SYMBOL REPEAT DOTSMUSICAL SYMBOL DAL SE" + - "GNOMUSICAL SYMBOL DA CAPOMUSICAL SYMBOL SEGNOMUSICAL SYMBOL CODAMUSICAL " + - "SYMBOL REPEATED FIGURE-1MUSICAL SYMBOL REPEATED FIGURE-2MUSICAL SYMBOL R" + - "EPEATED FIGURE-3MUSICAL SYMBOL FERMATAMUSICAL SYMBOL FERMATA BELOWMUSICA" + - "L SYMBOL BREATH MARKMUSICAL SYMBOL CAESURAMUSICAL SYMBOL BRACEMUSICAL SY" + - "MBOL BRACKETMUSICAL SYMBOL ONE-LINE STAFFMUSICAL SYMBOL TWO-LINE STAFFMU" + - "SICAL SYMBOL THREE-LINE STAFFMUSICAL SYMBOL FOUR-LINE STAFFMUSICAL SYMBO" + - "L FIVE-LINE STAFFMUSICAL SYMBOL SIX-LINE STAFFMUSICAL SYMBOL SIX-STRING " + - "FRETBOARDMUSICAL SYMBOL FOUR-STRING FRETBOARDMUSICAL SYMBOL G CLEFMUSICA" + - "L SYMBOL G CLEF OTTAVA ALTAMUSICAL SYMBOL G CLEF OTTAVA BASSAMUSICAL SYM" + - "BOL C CLEFMUSICAL SYMBOL F CLEFMUSICAL SYMBOL F CLEF OTTAVA ALTAMUSICAL " + - "SYMBOL F CLEF OTTAVA BASSAMUSICAL SYMBOL DRUM CLEF-1MUSICAL SYMBOL DRUM " + - "CLEF-2MUSICAL SYMBOL MULTIPLE MEASURE RESTMUSICAL SYMBOL DOUBLE SHARPMUS" + - "ICAL SYMBOL DOUBLE FLATMUSICAL SYMBOL FLAT UPMUSICAL SYMBOL FLAT DOWNMUS" + - "ICAL SYMBOL NATURAL UPMUSICAL SYMBOL NATURAL DOWNMUSICAL SYMBOL SHARP UP" + - "MUSICAL SYMBOL SHARP DOWNMUSICAL SYMBOL QUARTER TONE SHARPMUSICAL SYMBOL" + - " QUARTER TONE FLATMUSICAL SYMBOL COMMON TIMEMUSICAL SYMBOL CUT TIMEMUSIC" + - "AL SYMBOL OTTAVA ALTAMUSICAL SYMBOL OTTAVA BASSAMUSICAL SYMBOL QUINDICES" + - "IMA ALTAMUSICAL SYMBOL QUINDICESIMA BASSAMUSICAL SYMBOL MULTI RESTMUSICA" + - "L SYMBOL WHOLE RESTMUSICAL SYMBOL HALF RESTMUSICAL SYMBOL QUARTER RESTMU" + - "SICAL SYMBOL EIGHTH RESTMUSICAL SYMBOL SIXTEENTH RESTMUSICAL SYMBOL THIR" + - "TY-SECOND RESTMUSICAL SYMBOL SIXTY-FOURTH RESTMUSICAL SYMBOL ONE HUNDRED" + - " TWENTY-EIGHTH RESTMUSICAL SYMBOL X NOTEHEADMUSICAL SYMBOL PLUS NOTEHEAD" + - "MUSICAL SYMBOL CIRCLE X NOTEHEADMUSICAL SYMBOL SQUARE NOTEHEAD WHITEMUSI" + - "CAL SYMBOL SQUARE NOTEHEAD BLACKMUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHIT" + - "EMUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACKMUSICAL SYMBOL TRIANGLE NOTEHE" + - "AD LEFT WHITEMUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACKMUSICAL SYMBOL T" + - "RIANGLE NOTEHEAD RIGHT WHITEMUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK" + - "MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITEMUSICAL SYMBOL TRIANGLE NOTEH" + - "EAD DOWN BLACKMUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITEMUSICAL SYM" + - "BOL TRIANGLE NOTEHEAD UP RIGHT BLACKMUSICAL SYMBOL MOON NOTEHEAD WHITEMU" + - "SICAL SYMBOL MOON NOTEHEAD BLACKMUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD D" + - "OWN WHITEMUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACKMUSICAL SYMBOL" + - " PARENTHESIS NOTEHEADMUSICAL SYMBOL VOID NOTEHEADMUSICAL SYMBOL NOTEHEAD" + - " BLACKMUSICAL SYMBOL NULL NOTEHEADMUSICAL SYMBOL CLUSTER NOTEHEAD WHITEM" + - "USICAL SYMBOL CLUSTER NOTEHEAD BLACKMUSICAL SYMBOL BREVEMUSICAL SYMBOL W" + - "HOLE NOTEMUSICAL SYMBOL HALF NOTEMUSICAL SYMBOL QUARTER NOTEMUSICAL SYMB" + - "OL EIGHTH NOTEMUSICAL SYMBOL SIXTEENTH NOTEMUSICAL SYMBOL THIRTY-SECOND " + - "NOTEMUSICAL SYMBOL SIXTY-FOURTH NOTEMUSICAL SYMBOL ONE HUNDRED TWENTY-EI" + - "GHTH NOTEMUSICAL SYMBOL COMBINING STEMMUSICAL SYMBOL COMBINING SPRECHGES" + - "ANG STEMMUSICAL SYMBOL COMBINING TREMOLO-1MUSICAL SYMBOL COMBINING TREMO" + - "LO-2MUSICAL SYMBOL COMBINING TREMOLO-3MUSICAL SYMBOL FINGERED TREMOLO-1M" + - "USICAL SYMBOL FINGERED TREMOLO-2MUSICAL SYMBOL FINGERED TREMOLO-3MUSICAL" + - " SYMBOL COMBINING AUGMENTATION DOTMUSICAL SYMBOL COMBINING FLAG-1MUSICAL" + - " SYMBOL COMBINING FLAG-2MUSICAL SYMBOL COMBINING FLAG-3MUSICAL SYMBOL CO" + - "MBINING FLAG-4MUSICAL SYMBOL COMBINING FLAG-5MUSICAL SYMBOL BEGIN BEAMMU" + - "SICAL SYMBOL END BEAMMUSICAL SYMBOL BEGIN TIEMUSICAL SYMBOL END TIEMUSIC" + - "AL SYMBOL BEGIN SLURMUSICAL SYMBOL END SLURMUSICAL SYMBOL BEGIN PHRASEMU" + - "SICAL SYMBOL END PHRASEMUSICAL SYMBOL COMBINING ACCENTMUSICAL SYMBOL COM" + - "BINING STACCATOMUSICAL SYMBOL COMBINING TENUTOMUSICAL SYMBOL COMBINING S" + - "TACCATISSIMOMUSICAL SYMBOL COMBINING MARCATOMUSICAL SYMBOL COMBINING MAR" + - "CATO-STACCATOMUSICAL SYMBOL COMBINING ACCENT-STACCATOMUSICAL SYMBOL COMB") + ("" + - "INING LOUREMUSICAL SYMBOL ARPEGGIATO UPMUSICAL SYMBOL ARPEGGIATO DOWNMUS" + - "ICAL SYMBOL COMBINING DOITMUSICAL SYMBOL COMBINING RIPMUSICAL SYMBOL COM" + - "BINING FLIPMUSICAL SYMBOL COMBINING SMEARMUSICAL SYMBOL COMBINING BENDMU" + - "SICAL SYMBOL COMBINING DOUBLE TONGUEMUSICAL SYMBOL COMBINING TRIPLE TONG" + - "UEMUSICAL SYMBOL RINFORZANDOMUSICAL SYMBOL SUBITOMUSICAL SYMBOL ZMUSICAL" + - " SYMBOL PIANOMUSICAL SYMBOL MEZZOMUSICAL SYMBOL FORTEMUSICAL SYMBOL CRES" + - "CENDOMUSICAL SYMBOL DECRESCENDOMUSICAL SYMBOL GRACE NOTE SLASHMUSICAL SY" + - "MBOL GRACE NOTE NO SLASHMUSICAL SYMBOL TRMUSICAL SYMBOL TURNMUSICAL SYMB" + - "OL INVERTED TURNMUSICAL SYMBOL TURN SLASHMUSICAL SYMBOL TURN UPMUSICAL S" + - "YMBOL ORNAMENT STROKE-1MUSICAL SYMBOL ORNAMENT STROKE-2MUSICAL SYMBOL OR" + - "NAMENT STROKE-3MUSICAL SYMBOL ORNAMENT STROKE-4MUSICAL SYMBOL ORNAMENT S" + - "TROKE-5MUSICAL SYMBOL ORNAMENT STROKE-6MUSICAL SYMBOL ORNAMENT STROKE-7M" + - "USICAL SYMBOL ORNAMENT STROKE-8MUSICAL SYMBOL ORNAMENT STROKE-9MUSICAL S" + - "YMBOL ORNAMENT STROKE-10MUSICAL SYMBOL ORNAMENT STROKE-11MUSICAL SYMBOL " + - "HAUPTSTIMMEMUSICAL SYMBOL NEBENSTIMMEMUSICAL SYMBOL END OF STIMMEMUSICAL" + - " SYMBOL DEGREE SLASHMUSICAL SYMBOL COMBINING DOWN BOWMUSICAL SYMBOL COMB" + - "INING UP BOWMUSICAL SYMBOL COMBINING HARMONICMUSICAL SYMBOL COMBINING SN" + - "AP PIZZICATOMUSICAL SYMBOL PEDAL MARKMUSICAL SYMBOL PEDAL UP MARKMUSICAL" + - " SYMBOL HALF PEDAL MARKMUSICAL SYMBOL GLISSANDO UPMUSICAL SYMBOL GLISSAN" + - "DO DOWNMUSICAL SYMBOL WITH FINGERNAILSMUSICAL SYMBOL DAMPMUSICAL SYMBOL " + - "DAMP ALLMUSICAL SYMBOL MAXIMAMUSICAL SYMBOL LONGAMUSICAL SYMBOL BREVISMU" + - "SICAL SYMBOL SEMIBREVIS WHITEMUSICAL SYMBOL SEMIBREVIS BLACKMUSICAL SYMB" + - "OL MINIMAMUSICAL SYMBOL MINIMA BLACKMUSICAL SYMBOL SEMIMINIMA WHITEMUSIC" + - "AL SYMBOL SEMIMINIMA BLACKMUSICAL SYMBOL FUSA WHITEMUSICAL SYMBOL FUSA B" + - "LACKMUSICAL SYMBOL LONGA PERFECTA RESTMUSICAL SYMBOL LONGA IMPERFECTA RE" + - "STMUSICAL SYMBOL BREVIS RESTMUSICAL SYMBOL SEMIBREVIS RESTMUSICAL SYMBOL" + - " MINIMA RESTMUSICAL SYMBOL SEMIMINIMA RESTMUSICAL SYMBOL TEMPUS PERFECTU" + - "M CUM PROLATIONE PERFECTAMUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE " + - "IMPERFECTAMUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINU" + - "TION-1MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTAMUSICAL S" + - "YMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTAMUSICAL SYMBOL TEMPUS " + - "IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1MUSICAL SYMBOL TEMPUS " + - "IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2MUSICAL SYMBOL TEMPUS " + - "IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3MUSICAL SYMBOL CROIXMU" + - "SICAL SYMBOL GREGORIAN C CLEFMUSICAL SYMBOL GREGORIAN F CLEFMUSICAL SYMB" + - "OL SQUARE BMUSICAL SYMBOL VIRGAMUSICAL SYMBOL PODATUSMUSICAL SYMBOL CLIV" + - "ISMUSICAL SYMBOL SCANDICUSMUSICAL SYMBOL CLIMACUSMUSICAL SYMBOL TORCULUS" + - "MUSICAL SYMBOL PORRECTUSMUSICAL SYMBOL PORRECTUS FLEXUSMUSICAL SYMBOL SC" + - "ANDICUS FLEXUSMUSICAL SYMBOL TORCULUS RESUPINUSMUSICAL SYMBOL PES SUBPUN" + - "CTISMUSICAL SYMBOL KIEVAN C CLEFMUSICAL SYMBOL KIEVAN END OF PIECEMUSICA" + - "L SYMBOL KIEVAN FINAL NOTEMUSICAL SYMBOL KIEVAN RECITATIVE MARKMUSICAL S" + - "YMBOL KIEVAN WHOLE NOTEMUSICAL SYMBOL KIEVAN HALF NOTEMUSICAL SYMBOL KIE" + - "VAN QUARTER NOTE STEM DOWNMUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UPMUSI" + - "CAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWNMUSICAL SYMBOL KIEVAN EIGHTH NOTE" + - " STEM UPMUSICAL SYMBOL KIEVAN FLAT SIGNGREEK VOCAL NOTATION SYMBOL-1GREE" + - "K VOCAL NOTATION SYMBOL-2GREEK VOCAL NOTATION SYMBOL-3GREEK VOCAL NOTATI" + - "ON SYMBOL-4GREEK VOCAL NOTATION SYMBOL-5GREEK VOCAL NOTATION SYMBOL-6GRE" + - "EK VOCAL NOTATION SYMBOL-7GREEK VOCAL NOTATION SYMBOL-8GREEK VOCAL NOTAT" + - "ION SYMBOL-9GREEK VOCAL NOTATION SYMBOL-10GREEK VOCAL NOTATION SYMBOL-11" + - "GREEK VOCAL NOTATION SYMBOL-12GREEK VOCAL NOTATION SYMBOL-13GREEK VOCAL " + - "NOTATION SYMBOL-14GREEK VOCAL NOTATION SYMBOL-15GREEK VOCAL NOTATION SYM" + - "BOL-16GREEK VOCAL NOTATION SYMBOL-17GREEK VOCAL NOTATION SYMBOL-18GREEK " + - "VOCAL NOTATION SYMBOL-19GREEK VOCAL NOTATION SYMBOL-20GREEK VOCAL NOTATI" + - "ON SYMBOL-21GREEK VOCAL NOTATION SYMBOL-22GREEK VOCAL NOTATION SYMBOL-23" + - "GREEK VOCAL NOTATION SYMBOL-24GREEK VOCAL NOTATION SYMBOL-50GREEK VOCAL " + - "NOTATION SYMBOL-51GREEK VOCAL NOTATION SYMBOL-52GREEK VOCAL NOTATION SYM" + - "BOL-53GREEK VOCAL NOTATION SYMBOL-54GREEK INSTRUMENTAL NOTATION SYMBOL-1" + - "GREEK INSTRUMENTAL NOTATION SYMBOL-2GREEK INSTRUMENTAL NOTATION SYMBOL-4" + - "GREEK INSTRUMENTAL NOTATION SYMBOL-5GREEK INSTRUMENTAL NOTATION SYMBOL-7" + - "GREEK INSTRUMENTAL NOTATION SYMBOL-8GREEK INSTRUMENTAL NOTATION SYMBOL-1" + - "1GREEK INSTRUMENTAL NOTATION SYMBOL-12GREEK INSTRUMENTAL NOTATION SYMBOL" + - "-13GREEK INSTRUMENTAL NOTATION SYMBOL-14GREEK INSTRUMENTAL NOTATION SYMB" + - "OL-17GREEK INSTRUMENTAL NOTATION SYMBOL-18GREEK INSTRUMENTAL NOTATION SY" + - "MBOL-19GREEK INSTRUMENTAL NOTATION SYMBOL-23GREEK INSTRUMENTAL NOTATION ") + ("" + - "SYMBOL-24GREEK INSTRUMENTAL NOTATION SYMBOL-25GREEK INSTRUMENTAL NOTATIO" + - "N SYMBOL-26GREEK INSTRUMENTAL NOTATION SYMBOL-27GREEK INSTRUMENTAL NOTAT" + - "ION SYMBOL-29GREEK INSTRUMENTAL NOTATION SYMBOL-30GREEK INSTRUMENTAL NOT" + - "ATION SYMBOL-32GREEK INSTRUMENTAL NOTATION SYMBOL-36GREEK INSTRUMENTAL N" + - "OTATION SYMBOL-37GREEK INSTRUMENTAL NOTATION SYMBOL-38GREEK INSTRUMENTAL" + - " NOTATION SYMBOL-39GREEK INSTRUMENTAL NOTATION SYMBOL-40GREEK INSTRUMENT" + - "AL NOTATION SYMBOL-42GREEK INSTRUMENTAL NOTATION SYMBOL-43GREEK INSTRUME" + - "NTAL NOTATION SYMBOL-45GREEK INSTRUMENTAL NOTATION SYMBOL-47GREEK INSTRU" + - "MENTAL NOTATION SYMBOL-48GREEK INSTRUMENTAL NOTATION SYMBOL-49GREEK INST" + - "RUMENTAL NOTATION SYMBOL-50GREEK INSTRUMENTAL NOTATION SYMBOL-51GREEK IN" + - "STRUMENTAL NOTATION SYMBOL-52GREEK INSTRUMENTAL NOTATION SYMBOL-53GREEK " + - "INSTRUMENTAL NOTATION SYMBOL-54COMBINING GREEK MUSICAL TRISEMECOMBINING " + - "GREEK MUSICAL TETRASEMECOMBINING GREEK MUSICAL PENTASEMEGREEK MUSICAL LE" + - "IMMAMONOGRAM FOR EARTHDIGRAM FOR HEAVENLY EARTHDIGRAM FOR HUMAN EARTHDIG" + - "RAM FOR EARTHLY HEAVENDIGRAM FOR EARTHLY HUMANDIGRAM FOR EARTHTETRAGRAM " + - "FOR CENTRETETRAGRAM FOR FULL CIRCLETETRAGRAM FOR MIREDTETRAGRAM FOR BARR" + - "IERTETRAGRAM FOR KEEPING SMALLTETRAGRAM FOR CONTRARIETYTETRAGRAM FOR ASC" + - "ENTTETRAGRAM FOR OPPOSITIONTETRAGRAM FOR BRANCHING OUTTETRAGRAM FOR DEFE" + - "CTIVENESS OR DISTORTIONTETRAGRAM FOR DIVERGENCETETRAGRAM FOR YOUTHFULNES" + - "STETRAGRAM FOR INCREASETETRAGRAM FOR PENETRATIONTETRAGRAM FOR REACHTETRA" + - "GRAM FOR CONTACTTETRAGRAM FOR HOLDING BACKTETRAGRAM FOR WAITINGTETRAGRAM" + - " FOR FOLLOWINGTETRAGRAM FOR ADVANCETETRAGRAM FOR RELEASETETRAGRAM FOR RE" + - "SISTANCETETRAGRAM FOR EASETETRAGRAM FOR JOYTETRAGRAM FOR CONTENTIONTETRA" + - "GRAM FOR ENDEAVOURTETRAGRAM FOR DUTIESTETRAGRAM FOR CHANGETETRAGRAM FOR " + - "DECISIVENESSTETRAGRAM FOR BOLD RESOLUTIONTETRAGRAM FOR PACKINGTETRAGRAM " + - "FOR LEGIONTETRAGRAM FOR CLOSENESSTETRAGRAM FOR KINSHIPTETRAGRAM FOR GATH" + - "ERINGTETRAGRAM FOR STRENGTHTETRAGRAM FOR PURITYTETRAGRAM FOR FULLNESSTET" + - "RAGRAM FOR RESIDENCETETRAGRAM FOR LAW OR MODELTETRAGRAM FOR RESPONSETETR" + - "AGRAM FOR GOING TO MEETTETRAGRAM FOR ENCOUNTERSTETRAGRAM FOR STOVETETRAG" + - "RAM FOR GREATNESSTETRAGRAM FOR ENLARGEMENTTETRAGRAM FOR PATTERNTETRAGRAM" + - " FOR RITUALTETRAGRAM FOR FLIGHTTETRAGRAM FOR VASTNESS OR WASTINGTETRAGRA" + - "M FOR CONSTANCYTETRAGRAM FOR MEASURETETRAGRAM FOR ETERNITYTETRAGRAM FOR " + - "UNITYTETRAGRAM FOR DIMINISHMENTTETRAGRAM FOR CLOSED MOUTHTETRAGRAM FOR G" + - "UARDEDNESSTETRAGRAM FOR GATHERING INTETRAGRAM FOR MASSINGTETRAGRAM FOR A" + - "CCUMULATIONTETRAGRAM FOR EMBELLISHMENTTETRAGRAM FOR DOUBTTETRAGRAM FOR W" + - "ATCHTETRAGRAM FOR SINKINGTETRAGRAM FOR INNERTETRAGRAM FOR DEPARTURETETRA" + - "GRAM FOR DARKENINGTETRAGRAM FOR DIMMINGTETRAGRAM FOR EXHAUSTIONTETRAGRAM" + - " FOR SEVERANCETETRAGRAM FOR STOPPAGETETRAGRAM FOR HARDNESSTETRAGRAM FOR " + - "COMPLETIONTETRAGRAM FOR CLOSURETETRAGRAM FOR FAILURETETRAGRAM FOR AGGRAV" + - "ATIONTETRAGRAM FOR COMPLIANCETETRAGRAM FOR ON THE VERGETETRAGRAM FOR DIF" + - "FICULTIESTETRAGRAM FOR LABOURINGTETRAGRAM FOR FOSTERINGCOUNTING ROD UNIT" + - " DIGIT ONECOUNTING ROD UNIT DIGIT TWOCOUNTING ROD UNIT DIGIT THREECOUNTI" + - "NG ROD UNIT DIGIT FOURCOUNTING ROD UNIT DIGIT FIVECOUNTING ROD UNIT DIGI" + - "T SIXCOUNTING ROD UNIT DIGIT SEVENCOUNTING ROD UNIT DIGIT EIGHTCOUNTING " + - "ROD UNIT DIGIT NINECOUNTING ROD TENS DIGIT ONECOUNTING ROD TENS DIGIT TW" + - "OCOUNTING ROD TENS DIGIT THREECOUNTING ROD TENS DIGIT FOURCOUNTING ROD T" + - "ENS DIGIT FIVECOUNTING ROD TENS DIGIT SIXCOUNTING ROD TENS DIGIT SEVENCO" + - "UNTING ROD TENS DIGIT EIGHTCOUNTING ROD TENS DIGIT NINEMATHEMATICAL BOLD" + - " CAPITAL AMATHEMATICAL BOLD CAPITAL BMATHEMATICAL BOLD CAPITAL CMATHEMAT" + - "ICAL BOLD CAPITAL DMATHEMATICAL BOLD CAPITAL EMATHEMATICAL BOLD CAPITAL " + - "FMATHEMATICAL BOLD CAPITAL GMATHEMATICAL BOLD CAPITAL HMATHEMATICAL BOLD" + - " CAPITAL IMATHEMATICAL BOLD CAPITAL JMATHEMATICAL BOLD CAPITAL KMATHEMAT" + - "ICAL BOLD CAPITAL LMATHEMATICAL BOLD CAPITAL MMATHEMATICAL BOLD CAPITAL " + - "NMATHEMATICAL BOLD CAPITAL OMATHEMATICAL BOLD CAPITAL PMATHEMATICAL BOLD" + - " CAPITAL QMATHEMATICAL BOLD CAPITAL RMATHEMATICAL BOLD CAPITAL SMATHEMAT" + - "ICAL BOLD CAPITAL TMATHEMATICAL BOLD CAPITAL UMATHEMATICAL BOLD CAPITAL " + - "VMATHEMATICAL BOLD CAPITAL WMATHEMATICAL BOLD CAPITAL XMATHEMATICAL BOLD" + - " CAPITAL YMATHEMATICAL BOLD CAPITAL ZMATHEMATICAL BOLD SMALL AMATHEMATIC" + - "AL BOLD SMALL BMATHEMATICAL BOLD SMALL CMATHEMATICAL BOLD SMALL DMATHEMA" + - "TICAL BOLD SMALL EMATHEMATICAL BOLD SMALL FMATHEMATICAL BOLD SMALL GMATH" + - "EMATICAL BOLD SMALL HMATHEMATICAL BOLD SMALL IMATHEMATICAL BOLD SMALL JM" + - "ATHEMATICAL BOLD SMALL KMATHEMATICAL BOLD SMALL LMATHEMATICAL BOLD SMALL" + - " MMATHEMATICAL BOLD SMALL NMATHEMATICAL BOLD SMALL OMATHEMATICAL BOLD SM" + - "ALL PMATHEMATICAL BOLD SMALL QMATHEMATICAL BOLD SMALL RMATHEMATICAL BOLD") + ("" + - " SMALL SMATHEMATICAL BOLD SMALL TMATHEMATICAL BOLD SMALL UMATHEMATICAL B" + - "OLD SMALL VMATHEMATICAL BOLD SMALL WMATHEMATICAL BOLD SMALL XMATHEMATICA" + - "L BOLD SMALL YMATHEMATICAL BOLD SMALL ZMATHEMATICAL ITALIC CAPITAL AMATH" + - "EMATICAL ITALIC CAPITAL BMATHEMATICAL ITALIC CAPITAL CMATHEMATICAL ITALI" + - "C CAPITAL DMATHEMATICAL ITALIC CAPITAL EMATHEMATICAL ITALIC CAPITAL FMAT" + - "HEMATICAL ITALIC CAPITAL GMATHEMATICAL ITALIC CAPITAL HMATHEMATICAL ITAL" + - "IC CAPITAL IMATHEMATICAL ITALIC CAPITAL JMATHEMATICAL ITALIC CAPITAL KMA" + - "THEMATICAL ITALIC CAPITAL LMATHEMATICAL ITALIC CAPITAL MMATHEMATICAL ITA" + - "LIC CAPITAL NMATHEMATICAL ITALIC CAPITAL OMATHEMATICAL ITALIC CAPITAL PM" + - "ATHEMATICAL ITALIC CAPITAL QMATHEMATICAL ITALIC CAPITAL RMATHEMATICAL IT" + - "ALIC CAPITAL SMATHEMATICAL ITALIC CAPITAL TMATHEMATICAL ITALIC CAPITAL U" + - "MATHEMATICAL ITALIC CAPITAL VMATHEMATICAL ITALIC CAPITAL WMATHEMATICAL I" + - "TALIC CAPITAL XMATHEMATICAL ITALIC CAPITAL YMATHEMATICAL ITALIC CAPITAL " + - "ZMATHEMATICAL ITALIC SMALL AMATHEMATICAL ITALIC SMALL BMATHEMATICAL ITAL" + - "IC SMALL CMATHEMATICAL ITALIC SMALL DMATHEMATICAL ITALIC SMALL EMATHEMAT" + - "ICAL ITALIC SMALL FMATHEMATICAL ITALIC SMALL GMATHEMATICAL ITALIC SMALL " + - "IMATHEMATICAL ITALIC SMALL JMATHEMATICAL ITALIC SMALL KMATHEMATICAL ITAL" + - "IC SMALL LMATHEMATICAL ITALIC SMALL MMATHEMATICAL ITALIC SMALL NMATHEMAT" + - "ICAL ITALIC SMALL OMATHEMATICAL ITALIC SMALL PMATHEMATICAL ITALIC SMALL " + - "QMATHEMATICAL ITALIC SMALL RMATHEMATICAL ITALIC SMALL SMATHEMATICAL ITAL" + - "IC SMALL TMATHEMATICAL ITALIC SMALL UMATHEMATICAL ITALIC SMALL VMATHEMAT" + - "ICAL ITALIC SMALL WMATHEMATICAL ITALIC SMALL XMATHEMATICAL ITALIC SMALL " + - "YMATHEMATICAL ITALIC SMALL ZMATHEMATICAL BOLD ITALIC CAPITAL AMATHEMATIC" + - "AL BOLD ITALIC CAPITAL BMATHEMATICAL BOLD ITALIC CAPITAL CMATHEMATICAL B" + - "OLD ITALIC CAPITAL DMATHEMATICAL BOLD ITALIC CAPITAL EMATHEMATICAL BOLD " + - "ITALIC CAPITAL FMATHEMATICAL BOLD ITALIC CAPITAL GMATHEMATICAL BOLD ITAL" + - "IC CAPITAL HMATHEMATICAL BOLD ITALIC CAPITAL IMATHEMATICAL BOLD ITALIC C" + - "APITAL JMATHEMATICAL BOLD ITALIC CAPITAL KMATHEMATICAL BOLD ITALIC CAPIT" + - "AL LMATHEMATICAL BOLD ITALIC CAPITAL MMATHEMATICAL BOLD ITALIC CAPITAL N" + - "MATHEMATICAL BOLD ITALIC CAPITAL OMATHEMATICAL BOLD ITALIC CAPITAL PMATH" + - "EMATICAL BOLD ITALIC CAPITAL QMATHEMATICAL BOLD ITALIC CAPITAL RMATHEMAT" + - "ICAL BOLD ITALIC CAPITAL SMATHEMATICAL BOLD ITALIC CAPITAL TMATHEMATICAL" + - " BOLD ITALIC CAPITAL UMATHEMATICAL BOLD ITALIC CAPITAL VMATHEMATICAL BOL" + - "D ITALIC CAPITAL WMATHEMATICAL BOLD ITALIC CAPITAL XMATHEMATICAL BOLD IT" + - "ALIC CAPITAL YMATHEMATICAL BOLD ITALIC CAPITAL ZMATHEMATICAL BOLD ITALIC" + - " SMALL AMATHEMATICAL BOLD ITALIC SMALL BMATHEMATICAL BOLD ITALIC SMALL C" + - "MATHEMATICAL BOLD ITALIC SMALL DMATHEMATICAL BOLD ITALIC SMALL EMATHEMAT" + - "ICAL BOLD ITALIC SMALL FMATHEMATICAL BOLD ITALIC SMALL GMATHEMATICAL BOL" + - "D ITALIC SMALL HMATHEMATICAL BOLD ITALIC SMALL IMATHEMATICAL BOLD ITALIC" + - " SMALL JMATHEMATICAL BOLD ITALIC SMALL KMATHEMATICAL BOLD ITALIC SMALL L" + - "MATHEMATICAL BOLD ITALIC SMALL MMATHEMATICAL BOLD ITALIC SMALL NMATHEMAT" + - "ICAL BOLD ITALIC SMALL OMATHEMATICAL BOLD ITALIC SMALL PMATHEMATICAL BOL" + - "D ITALIC SMALL QMATHEMATICAL BOLD ITALIC SMALL RMATHEMATICAL BOLD ITALIC" + - " SMALL SMATHEMATICAL BOLD ITALIC SMALL TMATHEMATICAL BOLD ITALIC SMALL U" + - "MATHEMATICAL BOLD ITALIC SMALL VMATHEMATICAL BOLD ITALIC SMALL WMATHEMAT" + - "ICAL BOLD ITALIC SMALL XMATHEMATICAL BOLD ITALIC SMALL YMATHEMATICAL BOL" + - "D ITALIC SMALL ZMATHEMATICAL SCRIPT CAPITAL AMATHEMATICAL SCRIPT CAPITAL" + - " CMATHEMATICAL SCRIPT CAPITAL DMATHEMATICAL SCRIPT CAPITAL GMATHEMATICAL" + - " SCRIPT CAPITAL JMATHEMATICAL SCRIPT CAPITAL KMATHEMATICAL SCRIPT CAPITA" + - "L NMATHEMATICAL SCRIPT CAPITAL OMATHEMATICAL SCRIPT CAPITAL PMATHEMATICA" + - "L SCRIPT CAPITAL QMATHEMATICAL SCRIPT CAPITAL SMATHEMATICAL SCRIPT CAPIT" + - "AL TMATHEMATICAL SCRIPT CAPITAL UMATHEMATICAL SCRIPT CAPITAL VMATHEMATIC" + - "AL SCRIPT CAPITAL WMATHEMATICAL SCRIPT CAPITAL XMATHEMATICAL SCRIPT CAPI" + - "TAL YMATHEMATICAL SCRIPT CAPITAL ZMATHEMATICAL SCRIPT SMALL AMATHEMATICA" + - "L SCRIPT SMALL BMATHEMATICAL SCRIPT SMALL CMATHEMATICAL SCRIPT SMALL DMA" + - "THEMATICAL SCRIPT SMALL FMATHEMATICAL SCRIPT SMALL HMATHEMATICAL SCRIPT " + - "SMALL IMATHEMATICAL SCRIPT SMALL JMATHEMATICAL SCRIPT SMALL KMATHEMATICA" + - "L SCRIPT SMALL LMATHEMATICAL SCRIPT SMALL MMATHEMATICAL SCRIPT SMALL NMA" + - "THEMATICAL SCRIPT SMALL PMATHEMATICAL SCRIPT SMALL QMATHEMATICAL SCRIPT " + - "SMALL RMATHEMATICAL SCRIPT SMALL SMATHEMATICAL SCRIPT SMALL TMATHEMATICA" + - "L SCRIPT SMALL UMATHEMATICAL SCRIPT SMALL VMATHEMATICAL SCRIPT SMALL WMA" + - "THEMATICAL SCRIPT SMALL XMATHEMATICAL SCRIPT SMALL YMATHEMATICAL SCRIPT " + - "SMALL ZMATHEMATICAL BOLD SCRIPT CAPITAL AMATHEMATICAL BOLD SCRIPT CAPITA" + - "L BMATHEMATICAL BOLD SCRIPT CAPITAL CMATHEMATICAL BOLD SCRIPT CAPITAL DM") + ("" + - "ATHEMATICAL BOLD SCRIPT CAPITAL EMATHEMATICAL BOLD SCRIPT CAPITAL FMATHE" + - "MATICAL BOLD SCRIPT CAPITAL GMATHEMATICAL BOLD SCRIPT CAPITAL HMATHEMATI" + - "CAL BOLD SCRIPT CAPITAL IMATHEMATICAL BOLD SCRIPT CAPITAL JMATHEMATICAL " + - "BOLD SCRIPT CAPITAL KMATHEMATICAL BOLD SCRIPT CAPITAL LMATHEMATICAL BOLD" + - " SCRIPT CAPITAL MMATHEMATICAL BOLD SCRIPT CAPITAL NMATHEMATICAL BOLD SCR" + - "IPT CAPITAL OMATHEMATICAL BOLD SCRIPT CAPITAL PMATHEMATICAL BOLD SCRIPT " + - "CAPITAL QMATHEMATICAL BOLD SCRIPT CAPITAL RMATHEMATICAL BOLD SCRIPT CAPI" + - "TAL SMATHEMATICAL BOLD SCRIPT CAPITAL TMATHEMATICAL BOLD SCRIPT CAPITAL " + - "UMATHEMATICAL BOLD SCRIPT CAPITAL VMATHEMATICAL BOLD SCRIPT CAPITAL WMAT" + - "HEMATICAL BOLD SCRIPT CAPITAL XMATHEMATICAL BOLD SCRIPT CAPITAL YMATHEMA" + - "TICAL BOLD SCRIPT CAPITAL ZMATHEMATICAL BOLD SCRIPT SMALL AMATHEMATICAL " + - "BOLD SCRIPT SMALL BMATHEMATICAL BOLD SCRIPT SMALL CMATHEMATICAL BOLD SCR" + - "IPT SMALL DMATHEMATICAL BOLD SCRIPT SMALL EMATHEMATICAL BOLD SCRIPT SMAL" + - "L FMATHEMATICAL BOLD SCRIPT SMALL GMATHEMATICAL BOLD SCRIPT SMALL HMATHE" + - "MATICAL BOLD SCRIPT SMALL IMATHEMATICAL BOLD SCRIPT SMALL JMATHEMATICAL " + - "BOLD SCRIPT SMALL KMATHEMATICAL BOLD SCRIPT SMALL LMATHEMATICAL BOLD SCR" + - "IPT SMALL MMATHEMATICAL BOLD SCRIPT SMALL NMATHEMATICAL BOLD SCRIPT SMAL" + - "L OMATHEMATICAL BOLD SCRIPT SMALL PMATHEMATICAL BOLD SCRIPT SMALL QMATHE" + - "MATICAL BOLD SCRIPT SMALL RMATHEMATICAL BOLD SCRIPT SMALL SMATHEMATICAL " + - "BOLD SCRIPT SMALL TMATHEMATICAL BOLD SCRIPT SMALL UMATHEMATICAL BOLD SCR" + - "IPT SMALL VMATHEMATICAL BOLD SCRIPT SMALL WMATHEMATICAL BOLD SCRIPT SMAL" + - "L XMATHEMATICAL BOLD SCRIPT SMALL YMATHEMATICAL BOLD SCRIPT SMALL ZMATHE" + - "MATICAL FRAKTUR CAPITAL AMATHEMATICAL FRAKTUR CAPITAL BMATHEMATICAL FRAK" + - "TUR CAPITAL DMATHEMATICAL FRAKTUR CAPITAL EMATHEMATICAL FRAKTUR CAPITAL " + - "FMATHEMATICAL FRAKTUR CAPITAL GMATHEMATICAL FRAKTUR CAPITAL JMATHEMATICA" + - "L FRAKTUR CAPITAL KMATHEMATICAL FRAKTUR CAPITAL LMATHEMATICAL FRAKTUR CA" + - "PITAL MMATHEMATICAL FRAKTUR CAPITAL NMATHEMATICAL FRAKTUR CAPITAL OMATHE" + - "MATICAL FRAKTUR CAPITAL PMATHEMATICAL FRAKTUR CAPITAL QMATHEMATICAL FRAK" + - "TUR CAPITAL SMATHEMATICAL FRAKTUR CAPITAL TMATHEMATICAL FRAKTUR CAPITAL " + - "UMATHEMATICAL FRAKTUR CAPITAL VMATHEMATICAL FRAKTUR CAPITAL WMATHEMATICA" + - "L FRAKTUR CAPITAL XMATHEMATICAL FRAKTUR CAPITAL YMATHEMATICAL FRAKTUR SM" + - "ALL AMATHEMATICAL FRAKTUR SMALL BMATHEMATICAL FRAKTUR SMALL CMATHEMATICA" + - "L FRAKTUR SMALL DMATHEMATICAL FRAKTUR SMALL EMATHEMATICAL FRAKTUR SMALL " + - "FMATHEMATICAL FRAKTUR SMALL GMATHEMATICAL FRAKTUR SMALL HMATHEMATICAL FR" + - "AKTUR SMALL IMATHEMATICAL FRAKTUR SMALL JMATHEMATICAL FRAKTUR SMALL KMAT" + - "HEMATICAL FRAKTUR SMALL LMATHEMATICAL FRAKTUR SMALL MMATHEMATICAL FRAKTU" + - "R SMALL NMATHEMATICAL FRAKTUR SMALL OMATHEMATICAL FRAKTUR SMALL PMATHEMA" + - "TICAL FRAKTUR SMALL QMATHEMATICAL FRAKTUR SMALL RMATHEMATICAL FRAKTUR SM" + - "ALL SMATHEMATICAL FRAKTUR SMALL TMATHEMATICAL FRAKTUR SMALL UMATHEMATICA" + - "L FRAKTUR SMALL VMATHEMATICAL FRAKTUR SMALL WMATHEMATICAL FRAKTUR SMALL " + - "XMATHEMATICAL FRAKTUR SMALL YMATHEMATICAL FRAKTUR SMALL ZMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL AMATHEMATICAL DOUBLE-STRUCK CAPITAL BMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL DMATHEMATICAL DOUBLE-STRUCK CAPITAL EMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL FMATHEMATICAL DOUBLE-STRUCK CAPITAL GMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL IMATHEMATICAL DOUBLE-STRUCK CAPITAL JMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL KMATHEMATICAL DOUBLE-STRUCK CAPITAL LMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL MMATHEMATICAL DOUBLE-STRUCK CAPITAL OMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL SMATHEMATICAL DOUBLE-STRUCK CAPITAL TMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL UMATHEMATICAL DOUBLE-STRUCK CAPITAL VMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL WMATHEMATICAL DOUBLE-STRUCK CAPITAL XMATHEMATICAL DO" + - "UBLE-STRUCK CAPITAL YMATHEMATICAL DOUBLE-STRUCK SMALL AMATHEMATICAL DOUB" + - "LE-STRUCK SMALL BMATHEMATICAL DOUBLE-STRUCK SMALL CMATHEMATICAL DOUBLE-S" + - "TRUCK SMALL DMATHEMATICAL DOUBLE-STRUCK SMALL EMATHEMATICAL DOUBLE-STRUC" + - "K SMALL FMATHEMATICAL DOUBLE-STRUCK SMALL GMATHEMATICAL DOUBLE-STRUCK SM" + - "ALL HMATHEMATICAL DOUBLE-STRUCK SMALL IMATHEMATICAL DOUBLE-STRUCK SMALL " + - "JMATHEMATICAL DOUBLE-STRUCK SMALL KMATHEMATICAL DOUBLE-STRUCK SMALL LMAT" + - "HEMATICAL DOUBLE-STRUCK SMALL MMATHEMATICAL DOUBLE-STRUCK SMALL NMATHEMA" + - "TICAL DOUBLE-STRUCK SMALL OMATHEMATICAL DOUBLE-STRUCK SMALL PMATHEMATICA" + - "L DOUBLE-STRUCK SMALL QMATHEMATICAL DOUBLE-STRUCK SMALL RMATHEMATICAL DO" + - "UBLE-STRUCK SMALL SMATHEMATICAL DOUBLE-STRUCK SMALL TMATHEMATICAL DOUBLE" + - "-STRUCK SMALL UMATHEMATICAL DOUBLE-STRUCK SMALL VMATHEMATICAL DOUBLE-STR" + - "UCK SMALL WMATHEMATICAL DOUBLE-STRUCK SMALL XMATHEMATICAL DOUBLE-STRUCK " + - "SMALL YMATHEMATICAL DOUBLE-STRUCK SMALL ZMATHEMATICAL BOLD FRAKTUR CAPIT" + - "AL AMATHEMATICAL BOLD FRAKTUR CAPITAL BMATHEMATICAL BOLD FRAKTUR CAPITAL") + ("" + - " CMATHEMATICAL BOLD FRAKTUR CAPITAL DMATHEMATICAL BOLD FRAKTUR CAPITAL E" + - "MATHEMATICAL BOLD FRAKTUR CAPITAL FMATHEMATICAL BOLD FRAKTUR CAPITAL GMA" + - "THEMATICAL BOLD FRAKTUR CAPITAL HMATHEMATICAL BOLD FRAKTUR CAPITAL IMATH" + - "EMATICAL BOLD FRAKTUR CAPITAL JMATHEMATICAL BOLD FRAKTUR CAPITAL KMATHEM" + - "ATICAL BOLD FRAKTUR CAPITAL LMATHEMATICAL BOLD FRAKTUR CAPITAL MMATHEMAT" + - "ICAL BOLD FRAKTUR CAPITAL NMATHEMATICAL BOLD FRAKTUR CAPITAL OMATHEMATIC" + - "AL BOLD FRAKTUR CAPITAL PMATHEMATICAL BOLD FRAKTUR CAPITAL QMATHEMATICAL" + - " BOLD FRAKTUR CAPITAL RMATHEMATICAL BOLD FRAKTUR CAPITAL SMATHEMATICAL B" + - "OLD FRAKTUR CAPITAL TMATHEMATICAL BOLD FRAKTUR CAPITAL UMATHEMATICAL BOL" + - "D FRAKTUR CAPITAL VMATHEMATICAL BOLD FRAKTUR CAPITAL WMATHEMATICAL BOLD " + - "FRAKTUR CAPITAL XMATHEMATICAL BOLD FRAKTUR CAPITAL YMATHEMATICAL BOLD FR" + - "AKTUR CAPITAL ZMATHEMATICAL BOLD FRAKTUR SMALL AMATHEMATICAL BOLD FRAKTU" + - "R SMALL BMATHEMATICAL BOLD FRAKTUR SMALL CMATHEMATICAL BOLD FRAKTUR SMAL" + - "L DMATHEMATICAL BOLD FRAKTUR SMALL EMATHEMATICAL BOLD FRAKTUR SMALL FMAT" + - "HEMATICAL BOLD FRAKTUR SMALL GMATHEMATICAL BOLD FRAKTUR SMALL HMATHEMATI" + - "CAL BOLD FRAKTUR SMALL IMATHEMATICAL BOLD FRAKTUR SMALL JMATHEMATICAL BO" + - "LD FRAKTUR SMALL KMATHEMATICAL BOLD FRAKTUR SMALL LMATHEMATICAL BOLD FRA" + - "KTUR SMALL MMATHEMATICAL BOLD FRAKTUR SMALL NMATHEMATICAL BOLD FRAKTUR S" + - "MALL OMATHEMATICAL BOLD FRAKTUR SMALL PMATHEMATICAL BOLD FRAKTUR SMALL Q" + - "MATHEMATICAL BOLD FRAKTUR SMALL RMATHEMATICAL BOLD FRAKTUR SMALL SMATHEM" + - "ATICAL BOLD FRAKTUR SMALL TMATHEMATICAL BOLD FRAKTUR SMALL UMATHEMATICAL" + - " BOLD FRAKTUR SMALL VMATHEMATICAL BOLD FRAKTUR SMALL WMATHEMATICAL BOLD " + - "FRAKTUR SMALL XMATHEMATICAL BOLD FRAKTUR SMALL YMATHEMATICAL BOLD FRAKTU" + - "R SMALL ZMATHEMATICAL SANS-SERIF CAPITAL AMATHEMATICAL SANS-SERIF CAPITA" + - "L BMATHEMATICAL SANS-SERIF CAPITAL CMATHEMATICAL SANS-SERIF CAPITAL DMAT" + - "HEMATICAL SANS-SERIF CAPITAL EMATHEMATICAL SANS-SERIF CAPITAL FMATHEMATI" + - "CAL SANS-SERIF CAPITAL GMATHEMATICAL SANS-SERIF CAPITAL HMATHEMATICAL SA" + - "NS-SERIF CAPITAL IMATHEMATICAL SANS-SERIF CAPITAL JMATHEMATICAL SANS-SER" + - "IF CAPITAL KMATHEMATICAL SANS-SERIF CAPITAL LMATHEMATICAL SANS-SERIF CAP" + - "ITAL MMATHEMATICAL SANS-SERIF CAPITAL NMATHEMATICAL SANS-SERIF CAPITAL O" + - "MATHEMATICAL SANS-SERIF CAPITAL PMATHEMATICAL SANS-SERIF CAPITAL QMATHEM" + - "ATICAL SANS-SERIF CAPITAL RMATHEMATICAL SANS-SERIF CAPITAL SMATHEMATICAL" + - " SANS-SERIF CAPITAL TMATHEMATICAL SANS-SERIF CAPITAL UMATHEMATICAL SANS-" + - "SERIF CAPITAL VMATHEMATICAL SANS-SERIF CAPITAL WMATHEMATICAL SANS-SERIF " + - "CAPITAL XMATHEMATICAL SANS-SERIF CAPITAL YMATHEMATICAL SANS-SERIF CAPITA" + - "L ZMATHEMATICAL SANS-SERIF SMALL AMATHEMATICAL SANS-SERIF SMALL BMATHEMA" + - "TICAL SANS-SERIF SMALL CMATHEMATICAL SANS-SERIF SMALL DMATHEMATICAL SANS" + - "-SERIF SMALL EMATHEMATICAL SANS-SERIF SMALL FMATHEMATICAL SANS-SERIF SMA" + - "LL GMATHEMATICAL SANS-SERIF SMALL HMATHEMATICAL SANS-SERIF SMALL IMATHEM" + - "ATICAL SANS-SERIF SMALL JMATHEMATICAL SANS-SERIF SMALL KMATHEMATICAL SAN" + - "S-SERIF SMALL LMATHEMATICAL SANS-SERIF SMALL MMATHEMATICAL SANS-SERIF SM" + - "ALL NMATHEMATICAL SANS-SERIF SMALL OMATHEMATICAL SANS-SERIF SMALL PMATHE" + - "MATICAL SANS-SERIF SMALL QMATHEMATICAL SANS-SERIF SMALL RMATHEMATICAL SA" + - "NS-SERIF SMALL SMATHEMATICAL SANS-SERIF SMALL TMATHEMATICAL SANS-SERIF S" + - "MALL UMATHEMATICAL SANS-SERIF SMALL VMATHEMATICAL SANS-SERIF SMALL WMATH" + - "EMATICAL SANS-SERIF SMALL XMATHEMATICAL SANS-SERIF SMALL YMATHEMATICAL S" + - "ANS-SERIF SMALL ZMATHEMATICAL SANS-SERIF BOLD CAPITAL AMATHEMATICAL SANS" + - "-SERIF BOLD CAPITAL BMATHEMATICAL SANS-SERIF BOLD CAPITAL CMATHEMATICAL " + - "SANS-SERIF BOLD CAPITAL DMATHEMATICAL SANS-SERIF BOLD CAPITAL EMATHEMATI" + - "CAL SANS-SERIF BOLD CAPITAL FMATHEMATICAL SANS-SERIF BOLD CAPITAL GMATHE" + - "MATICAL SANS-SERIF BOLD CAPITAL HMATHEMATICAL SANS-SERIF BOLD CAPITAL IM" + - "ATHEMATICAL SANS-SERIF BOLD CAPITAL JMATHEMATICAL SANS-SERIF BOLD CAPITA" + - "L KMATHEMATICAL SANS-SERIF BOLD CAPITAL LMATHEMATICAL SANS-SERIF BOLD CA" + - "PITAL MMATHEMATICAL SANS-SERIF BOLD CAPITAL NMATHEMATICAL SANS-SERIF BOL" + - "D CAPITAL OMATHEMATICAL SANS-SERIF BOLD CAPITAL PMATHEMATICAL SANS-SERIF" + - " BOLD CAPITAL QMATHEMATICAL SANS-SERIF BOLD CAPITAL RMATHEMATICAL SANS-S" + - "ERIF BOLD CAPITAL SMATHEMATICAL SANS-SERIF BOLD CAPITAL TMATHEMATICAL SA" + - "NS-SERIF BOLD CAPITAL UMATHEMATICAL SANS-SERIF BOLD CAPITAL VMATHEMATICA" + - "L SANS-SERIF BOLD CAPITAL WMATHEMATICAL SANS-SERIF BOLD CAPITAL XMATHEMA" + - "TICAL SANS-SERIF BOLD CAPITAL YMATHEMATICAL SANS-SERIF BOLD CAPITAL ZMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL AMATHEMATICAL SANS-SERIF BOLD SMALL BMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL CMATHEMATICAL SANS-SERIF BOLD SMALL DMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL EMATHEMATICAL SANS-SERIF BOLD SMALL FMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL GMATHEMATICAL SANS-SERIF BOLD SMALL HMAT") + ("" + - "HEMATICAL SANS-SERIF BOLD SMALL IMATHEMATICAL SANS-SERIF BOLD SMALL JMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL KMATHEMATICAL SANS-SERIF BOLD SMALL LMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL MMATHEMATICAL SANS-SERIF BOLD SMALL NMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL OMATHEMATICAL SANS-SERIF BOLD SMALL PMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL QMATHEMATICAL SANS-SERIF BOLD SMALL RMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL SMATHEMATICAL SANS-SERIF BOLD SMALL TMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL UMATHEMATICAL SANS-SERIF BOLD SMALL VMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL WMATHEMATICAL SANS-SERIF BOLD SMALL XMAT" + - "HEMATICAL SANS-SERIF BOLD SMALL YMATHEMATICAL SANS-SERIF BOLD SMALL ZMAT" + - "HEMATICAL SANS-SERIF ITALIC CAPITAL AMATHEMATICAL SANS-SERIF ITALIC CAPI" + - "TAL BMATHEMATICAL SANS-SERIF ITALIC CAPITAL CMATHEMATICAL SANS-SERIF ITA" + - "LIC CAPITAL DMATHEMATICAL SANS-SERIF ITALIC CAPITAL EMATHEMATICAL SANS-S" + - "ERIF ITALIC CAPITAL FMATHEMATICAL SANS-SERIF ITALIC CAPITAL GMATHEMATICA" + - "L SANS-SERIF ITALIC CAPITAL HMATHEMATICAL SANS-SERIF ITALIC CAPITAL IMAT" + - "HEMATICAL SANS-SERIF ITALIC CAPITAL JMATHEMATICAL SANS-SERIF ITALIC CAPI" + - "TAL KMATHEMATICAL SANS-SERIF ITALIC CAPITAL LMATHEMATICAL SANS-SERIF ITA" + - "LIC CAPITAL MMATHEMATICAL SANS-SERIF ITALIC CAPITAL NMATHEMATICAL SANS-S" + - "ERIF ITALIC CAPITAL OMATHEMATICAL SANS-SERIF ITALIC CAPITAL PMATHEMATICA" + - "L SANS-SERIF ITALIC CAPITAL QMATHEMATICAL SANS-SERIF ITALIC CAPITAL RMAT" + - "HEMATICAL SANS-SERIF ITALIC CAPITAL SMATHEMATICAL SANS-SERIF ITALIC CAPI" + - "TAL TMATHEMATICAL SANS-SERIF ITALIC CAPITAL UMATHEMATICAL SANS-SERIF ITA" + - "LIC CAPITAL VMATHEMATICAL SANS-SERIF ITALIC CAPITAL WMATHEMATICAL SANS-S" + - "ERIF ITALIC CAPITAL XMATHEMATICAL SANS-SERIF ITALIC CAPITAL YMATHEMATICA" + - "L SANS-SERIF ITALIC CAPITAL ZMATHEMATICAL SANS-SERIF ITALIC SMALL AMATHE" + - "MATICAL SANS-SERIF ITALIC SMALL BMATHEMATICAL SANS-SERIF ITALIC SMALL CM" + - "ATHEMATICAL SANS-SERIF ITALIC SMALL DMATHEMATICAL SANS-SERIF ITALIC SMAL" + - "L EMATHEMATICAL SANS-SERIF ITALIC SMALL FMATHEMATICAL SANS-SERIF ITALIC " + - "SMALL GMATHEMATICAL SANS-SERIF ITALIC SMALL HMATHEMATICAL SANS-SERIF ITA" + - "LIC SMALL IMATHEMATICAL SANS-SERIF ITALIC SMALL JMATHEMATICAL SANS-SERIF" + - " ITALIC SMALL KMATHEMATICAL SANS-SERIF ITALIC SMALL LMATHEMATICAL SANS-S" + - "ERIF ITALIC SMALL MMATHEMATICAL SANS-SERIF ITALIC SMALL NMATHEMATICAL SA" + - "NS-SERIF ITALIC SMALL OMATHEMATICAL SANS-SERIF ITALIC SMALL PMATHEMATICA" + - "L SANS-SERIF ITALIC SMALL QMATHEMATICAL SANS-SERIF ITALIC SMALL RMATHEMA" + - "TICAL SANS-SERIF ITALIC SMALL SMATHEMATICAL SANS-SERIF ITALIC SMALL TMAT" + - "HEMATICAL SANS-SERIF ITALIC SMALL UMATHEMATICAL SANS-SERIF ITALIC SMALL " + - "VMATHEMATICAL SANS-SERIF ITALIC SMALL WMATHEMATICAL SANS-SERIF ITALIC SM" + - "ALL XMATHEMATICAL SANS-SERIF ITALIC SMALL YMATHEMATICAL SANS-SERIF ITALI" + - "C SMALL ZMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL AMATHEMATICAL SANS-" + - "SERIF BOLD ITALIC CAPITAL BMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C" + - "MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DMATHEMATICAL SANS-SERIF BOL" + - "D ITALIC CAPITAL EMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL FMATHEMATI" + - "CAL SANS-SERIF BOLD ITALIC CAPITAL GMATHEMATICAL SANS-SERIF BOLD ITALIC " + - "CAPITAL HMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IMATHEMATICAL SANS-" + - "SERIF BOLD ITALIC CAPITAL JMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K" + - "MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LMATHEMATICAL SANS-SERIF BOL" + - "D ITALIC CAPITAL MMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NMATHEMATI" + - "CAL SANS-SERIF BOLD ITALIC CAPITAL OMATHEMATICAL SANS-SERIF BOLD ITALIC " + - "CAPITAL PMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL QMATHEMATICAL SANS-" + - "SERIF BOLD ITALIC CAPITAL RMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S" + - "MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TMATHEMATICAL SANS-SERIF BOL" + - "D ITALIC CAPITAL UMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL VMATHEMATI" + - "CAL SANS-SERIF BOLD ITALIC CAPITAL WMATHEMATICAL SANS-SERIF BOLD ITALIC " + - "CAPITAL XMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL YMATHEMATICAL SANS-" + - "SERIF BOLD ITALIC CAPITAL ZMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL AMA" + - "THEMATICAL SANS-SERIF BOLD ITALIC SMALL BMATHEMATICAL SANS-SERIF BOLD IT" + - "ALIC SMALL CMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DMATHEMATICAL SANS" + - "-SERIF BOLD ITALIC SMALL EMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FMAT" + - "HEMATICAL SANS-SERIF BOLD ITALIC SMALL GMATHEMATICAL SANS-SERIF BOLD ITA" + - "LIC SMALL HMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IMATHEMATICAL SANS-" + - "SERIF BOLD ITALIC SMALL JMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KMATH" + - "EMATICAL SANS-SERIF BOLD ITALIC SMALL LMATHEMATICAL SANS-SERIF BOLD ITAL" + - "IC SMALL MMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NMATHEMATICAL SANS-S" + - "ERIF BOLD ITALIC SMALL OMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PMATHE" + - "MATICAL SANS-SERIF BOLD ITALIC SMALL QMATHEMATICAL SANS-SERIF BOLD ITALI") + ("" + - "C SMALL RMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SMATHEMATICAL SANS-SE" + - "RIF BOLD ITALIC SMALL TMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UMATHEM" + - "ATICAL SANS-SERIF BOLD ITALIC SMALL VMATHEMATICAL SANS-SERIF BOLD ITALIC" + - " SMALL WMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XMATHEMATICAL SANS-SER" + - "IF BOLD ITALIC SMALL YMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZMATHEMA" + - "TICAL MONOSPACE CAPITAL AMATHEMATICAL MONOSPACE CAPITAL BMATHEMATICAL MO" + - "NOSPACE CAPITAL CMATHEMATICAL MONOSPACE CAPITAL DMATHEMATICAL MONOSPACE " + - "CAPITAL EMATHEMATICAL MONOSPACE CAPITAL FMATHEMATICAL MONOSPACE CAPITAL " + - "GMATHEMATICAL MONOSPACE CAPITAL HMATHEMATICAL MONOSPACE CAPITAL IMATHEMA" + - "TICAL MONOSPACE CAPITAL JMATHEMATICAL MONOSPACE CAPITAL KMATHEMATICAL MO" + - "NOSPACE CAPITAL LMATHEMATICAL MONOSPACE CAPITAL MMATHEMATICAL MONOSPACE " + - "CAPITAL NMATHEMATICAL MONOSPACE CAPITAL OMATHEMATICAL MONOSPACE CAPITAL " + - "PMATHEMATICAL MONOSPACE CAPITAL QMATHEMATICAL MONOSPACE CAPITAL RMATHEMA" + - "TICAL MONOSPACE CAPITAL SMATHEMATICAL MONOSPACE CAPITAL TMATHEMATICAL MO" + - "NOSPACE CAPITAL UMATHEMATICAL MONOSPACE CAPITAL VMATHEMATICAL MONOSPACE " + - "CAPITAL WMATHEMATICAL MONOSPACE CAPITAL XMATHEMATICAL MONOSPACE CAPITAL " + - "YMATHEMATICAL MONOSPACE CAPITAL ZMATHEMATICAL MONOSPACE SMALL AMATHEMATI" + - "CAL MONOSPACE SMALL BMATHEMATICAL MONOSPACE SMALL CMATHEMATICAL MONOSPAC" + - "E SMALL DMATHEMATICAL MONOSPACE SMALL EMATHEMATICAL MONOSPACE SMALL FMAT" + - "HEMATICAL MONOSPACE SMALL GMATHEMATICAL MONOSPACE SMALL HMATHEMATICAL MO" + - "NOSPACE SMALL IMATHEMATICAL MONOSPACE SMALL JMATHEMATICAL MONOSPACE SMAL" + - "L KMATHEMATICAL MONOSPACE SMALL LMATHEMATICAL MONOSPACE SMALL MMATHEMATI" + - "CAL MONOSPACE SMALL NMATHEMATICAL MONOSPACE SMALL OMATHEMATICAL MONOSPAC" + - "E SMALL PMATHEMATICAL MONOSPACE SMALL QMATHEMATICAL MONOSPACE SMALL RMAT" + - "HEMATICAL MONOSPACE SMALL SMATHEMATICAL MONOSPACE SMALL TMATHEMATICAL MO" + - "NOSPACE SMALL UMATHEMATICAL MONOSPACE SMALL VMATHEMATICAL MONOSPACE SMAL" + - "L WMATHEMATICAL MONOSPACE SMALL XMATHEMATICAL MONOSPACE SMALL YMATHEMATI" + - "CAL MONOSPACE SMALL ZMATHEMATICAL ITALIC SMALL DOTLESS IMATHEMATICAL ITA" + - "LIC SMALL DOTLESS JMATHEMATICAL BOLD CAPITAL ALPHAMATHEMATICAL BOLD CAPI" + - "TAL BETAMATHEMATICAL BOLD CAPITAL GAMMAMATHEMATICAL BOLD CAPITAL DELTAMA" + - "THEMATICAL BOLD CAPITAL EPSILONMATHEMATICAL BOLD CAPITAL ZETAMATHEMATICA" + - "L BOLD CAPITAL ETAMATHEMATICAL BOLD CAPITAL THETAMATHEMATICAL BOLD CAPIT" + - "AL IOTAMATHEMATICAL BOLD CAPITAL KAPPAMATHEMATICAL BOLD CAPITAL LAMDAMAT" + - "HEMATICAL BOLD CAPITAL MUMATHEMATICAL BOLD CAPITAL NUMATHEMATICAL BOLD C" + - "APITAL XIMATHEMATICAL BOLD CAPITAL OMICRONMATHEMATICAL BOLD CAPITAL PIMA" + - "THEMATICAL BOLD CAPITAL RHOMATHEMATICAL BOLD CAPITAL THETA SYMBOLMATHEMA" + - "TICAL BOLD CAPITAL SIGMAMATHEMATICAL BOLD CAPITAL TAUMATHEMATICAL BOLD C" + - "APITAL UPSILONMATHEMATICAL BOLD CAPITAL PHIMATHEMATICAL BOLD CAPITAL CHI" + - "MATHEMATICAL BOLD CAPITAL PSIMATHEMATICAL BOLD CAPITAL OMEGAMATHEMATICAL" + - " BOLD NABLAMATHEMATICAL BOLD SMALL ALPHAMATHEMATICAL BOLD SMALL BETAMATH" + - "EMATICAL BOLD SMALL GAMMAMATHEMATICAL BOLD SMALL DELTAMATHEMATICAL BOLD " + - "SMALL EPSILONMATHEMATICAL BOLD SMALL ZETAMATHEMATICAL BOLD SMALL ETAMATH" + - "EMATICAL BOLD SMALL THETAMATHEMATICAL BOLD SMALL IOTAMATHEMATICAL BOLD S" + - "MALL KAPPAMATHEMATICAL BOLD SMALL LAMDAMATHEMATICAL BOLD SMALL MUMATHEMA" + - "TICAL BOLD SMALL NUMATHEMATICAL BOLD SMALL XIMATHEMATICAL BOLD SMALL OMI" + - "CRONMATHEMATICAL BOLD SMALL PIMATHEMATICAL BOLD SMALL RHOMATHEMATICAL BO" + - "LD SMALL FINAL SIGMAMATHEMATICAL BOLD SMALL SIGMAMATHEMATICAL BOLD SMALL" + - " TAUMATHEMATICAL BOLD SMALL UPSILONMATHEMATICAL BOLD SMALL PHIMATHEMATIC" + - "AL BOLD SMALL CHIMATHEMATICAL BOLD SMALL PSIMATHEMATICAL BOLD SMALL OMEG" + - "AMATHEMATICAL BOLD PARTIAL DIFFERENTIALMATHEMATICAL BOLD EPSILON SYMBOLM" + - "ATHEMATICAL BOLD THETA SYMBOLMATHEMATICAL BOLD KAPPA SYMBOLMATHEMATICAL " + - "BOLD PHI SYMBOLMATHEMATICAL BOLD RHO SYMBOLMATHEMATICAL BOLD PI SYMBOLMA" + - "THEMATICAL ITALIC CAPITAL ALPHAMATHEMATICAL ITALIC CAPITAL BETAMATHEMATI" + - "CAL ITALIC CAPITAL GAMMAMATHEMATICAL ITALIC CAPITAL DELTAMATHEMATICAL IT" + - "ALIC CAPITAL EPSILONMATHEMATICAL ITALIC CAPITAL ZETAMATHEMATICAL ITALIC " + - "CAPITAL ETAMATHEMATICAL ITALIC CAPITAL THETAMATHEMATICAL ITALIC CAPITAL " + - "IOTAMATHEMATICAL ITALIC CAPITAL KAPPAMATHEMATICAL ITALIC CAPITAL LAMDAMA" + - "THEMATICAL ITALIC CAPITAL MUMATHEMATICAL ITALIC CAPITAL NUMATHEMATICAL I" + - "TALIC CAPITAL XIMATHEMATICAL ITALIC CAPITAL OMICRONMATHEMATICAL ITALIC C" + - "APITAL PIMATHEMATICAL ITALIC CAPITAL RHOMATHEMATICAL ITALIC CAPITAL THET" + - "A SYMBOLMATHEMATICAL ITALIC CAPITAL SIGMAMATHEMATICAL ITALIC CAPITAL TAU" + - "MATHEMATICAL ITALIC CAPITAL UPSILONMATHEMATICAL ITALIC CAPITAL PHIMATHEM" + - "ATICAL ITALIC CAPITAL CHIMATHEMATICAL ITALIC CAPITAL PSIMATHEMATICAL ITA" + - "LIC CAPITAL OMEGAMATHEMATICAL ITALIC NABLAMATHEMATICAL ITALIC SMALL ALPH") + ("" + - "AMATHEMATICAL ITALIC SMALL BETAMATHEMATICAL ITALIC SMALL GAMMAMATHEMATIC" + - "AL ITALIC SMALL DELTAMATHEMATICAL ITALIC SMALL EPSILONMATHEMATICAL ITALI" + - "C SMALL ZETAMATHEMATICAL ITALIC SMALL ETAMATHEMATICAL ITALIC SMALL THETA" + - "MATHEMATICAL ITALIC SMALL IOTAMATHEMATICAL ITALIC SMALL KAPPAMATHEMATICA" + - "L ITALIC SMALL LAMDAMATHEMATICAL ITALIC SMALL MUMATHEMATICAL ITALIC SMAL" + - "L NUMATHEMATICAL ITALIC SMALL XIMATHEMATICAL ITALIC SMALL OMICRONMATHEMA" + - "TICAL ITALIC SMALL PIMATHEMATICAL ITALIC SMALL RHOMATHEMATICAL ITALIC SM" + - "ALL FINAL SIGMAMATHEMATICAL ITALIC SMALL SIGMAMATHEMATICAL ITALIC SMALL " + - "TAUMATHEMATICAL ITALIC SMALL UPSILONMATHEMATICAL ITALIC SMALL PHIMATHEMA" + - "TICAL ITALIC SMALL CHIMATHEMATICAL ITALIC SMALL PSIMATHEMATICAL ITALIC S" + - "MALL OMEGAMATHEMATICAL ITALIC PARTIAL DIFFERENTIALMATHEMATICAL ITALIC EP" + - "SILON SYMBOLMATHEMATICAL ITALIC THETA SYMBOLMATHEMATICAL ITALIC KAPPA SY" + - "MBOLMATHEMATICAL ITALIC PHI SYMBOLMATHEMATICAL ITALIC RHO SYMBOLMATHEMAT" + - "ICAL ITALIC PI SYMBOLMATHEMATICAL BOLD ITALIC CAPITAL ALPHAMATHEMATICAL " + - "BOLD ITALIC CAPITAL BETAMATHEMATICAL BOLD ITALIC CAPITAL GAMMAMATHEMATIC" + - "AL BOLD ITALIC CAPITAL DELTAMATHEMATICAL BOLD ITALIC CAPITAL EPSILONMATH" + - "EMATICAL BOLD ITALIC CAPITAL ZETAMATHEMATICAL BOLD ITALIC CAPITAL ETAMAT" + - "HEMATICAL BOLD ITALIC CAPITAL THETAMATHEMATICAL BOLD ITALIC CAPITAL IOTA" + - "MATHEMATICAL BOLD ITALIC CAPITAL KAPPAMATHEMATICAL BOLD ITALIC CAPITAL L" + - "AMDAMATHEMATICAL BOLD ITALIC CAPITAL MUMATHEMATICAL BOLD ITALIC CAPITAL " + - "NUMATHEMATICAL BOLD ITALIC CAPITAL XIMATHEMATICAL BOLD ITALIC CAPITAL OM" + - "ICRONMATHEMATICAL BOLD ITALIC CAPITAL PIMATHEMATICAL BOLD ITALIC CAPITAL" + - " RHOMATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOLMATHEMATICAL BOLD ITALI" + - "C CAPITAL SIGMAMATHEMATICAL BOLD ITALIC CAPITAL TAUMATHEMATICAL BOLD ITA" + - "LIC CAPITAL UPSILONMATHEMATICAL BOLD ITALIC CAPITAL PHIMATHEMATICAL BOLD" + - " ITALIC CAPITAL CHIMATHEMATICAL BOLD ITALIC CAPITAL PSIMATHEMATICAL BOLD" + - " ITALIC CAPITAL OMEGAMATHEMATICAL BOLD ITALIC NABLAMATHEMATICAL BOLD ITA" + - "LIC SMALL ALPHAMATHEMATICAL BOLD ITALIC SMALL BETAMATHEMATICAL BOLD ITAL" + - "IC SMALL GAMMAMATHEMATICAL BOLD ITALIC SMALL DELTAMATHEMATICAL BOLD ITAL" + - "IC SMALL EPSILONMATHEMATICAL BOLD ITALIC SMALL ZETAMATHEMATICAL BOLD ITA" + - "LIC SMALL ETAMATHEMATICAL BOLD ITALIC SMALL THETAMATHEMATICAL BOLD ITALI" + - "C SMALL IOTAMATHEMATICAL BOLD ITALIC SMALL KAPPAMATHEMATICAL BOLD ITALIC" + - " SMALL LAMDAMATHEMATICAL BOLD ITALIC SMALL MUMATHEMATICAL BOLD ITALIC SM" + - "ALL NUMATHEMATICAL BOLD ITALIC SMALL XIMATHEMATICAL BOLD ITALIC SMALL OM" + - "ICRONMATHEMATICAL BOLD ITALIC SMALL PIMATHEMATICAL BOLD ITALIC SMALL RHO" + - "MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMAMATHEMATICAL BOLD ITALIC SMALL" + - " SIGMAMATHEMATICAL BOLD ITALIC SMALL TAUMATHEMATICAL BOLD ITALIC SMALL U" + - "PSILONMATHEMATICAL BOLD ITALIC SMALL PHIMATHEMATICAL BOLD ITALIC SMALL C" + - "HIMATHEMATICAL BOLD ITALIC SMALL PSIMATHEMATICAL BOLD ITALIC SMALL OMEGA" + - "MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIALMATHEMATICAL BOLD ITALIC EP" + - "SILON SYMBOLMATHEMATICAL BOLD ITALIC THETA SYMBOLMATHEMATICAL BOLD ITALI" + - "C KAPPA SYMBOLMATHEMATICAL BOLD ITALIC PHI SYMBOLMATHEMATICAL BOLD ITALI" + - "C RHO SYMBOLMATHEMATICAL BOLD ITALIC PI SYMBOLMATHEMATICAL SANS-SERIF BO" + - "LD CAPITAL ALPHAMATHEMATICAL SANS-SERIF BOLD CAPITAL BETAMATHEMATICAL SA" + - "NS-SERIF BOLD CAPITAL GAMMAMATHEMATICAL SANS-SERIF BOLD CAPITAL DELTAMAT" + - "HEMATICAL SANS-SERIF BOLD CAPITAL EPSILONMATHEMATICAL SANS-SERIF BOLD CA" + - "PITAL ZETAMATHEMATICAL SANS-SERIF BOLD CAPITAL ETAMATHEMATICAL SANS-SERI" + - "F BOLD CAPITAL THETAMATHEMATICAL SANS-SERIF BOLD CAPITAL IOTAMATHEMATICA" + - "L SANS-SERIF BOLD CAPITAL KAPPAMATHEMATICAL SANS-SERIF BOLD CAPITAL LAMD" + - "AMATHEMATICAL SANS-SERIF BOLD CAPITAL MUMATHEMATICAL SANS-SERIF BOLD CAP" + - "ITAL NUMATHEMATICAL SANS-SERIF BOLD CAPITAL XIMATHEMATICAL SANS-SERIF BO" + - "LD CAPITAL OMICRONMATHEMATICAL SANS-SERIF BOLD CAPITAL PIMATHEMATICAL SA" + - "NS-SERIF BOLD CAPITAL RHOMATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMB" + - "OLMATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMAMATHEMATICAL SANS-SERIF BOLD" + - " CAPITAL TAUMATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILONMATHEMATICAL SAN" + - "S-SERIF BOLD CAPITAL PHIMATHEMATICAL SANS-SERIF BOLD CAPITAL CHIMATHEMAT" + - "ICAL SANS-SERIF BOLD CAPITAL PSIMATHEMATICAL SANS-SERIF BOLD CAPITAL OME" + - "GAMATHEMATICAL SANS-SERIF BOLD NABLAMATHEMATICAL SANS-SERIF BOLD SMALL A" + - "LPHAMATHEMATICAL SANS-SERIF BOLD SMALL BETAMATHEMATICAL SANS-SERIF BOLD " + - "SMALL GAMMAMATHEMATICAL SANS-SERIF BOLD SMALL DELTAMATHEMATICAL SANS-SER" + - "IF BOLD SMALL EPSILONMATHEMATICAL SANS-SERIF BOLD SMALL ZETAMATHEMATICAL" + - " SANS-SERIF BOLD SMALL ETAMATHEMATICAL SANS-SERIF BOLD SMALL THETAMATHEM" + - "ATICAL SANS-SERIF BOLD SMALL IOTAMATHEMATICAL SANS-SERIF BOLD SMALL KAPP" + - "AMATHEMATICAL SANS-SERIF BOLD SMALL LAMDAMATHEMATICAL SANS-SERIF BOLD SM") + ("" + - "ALL MUMATHEMATICAL SANS-SERIF BOLD SMALL NUMATHEMATICAL SANS-SERIF BOLD " + - "SMALL XIMATHEMATICAL SANS-SERIF BOLD SMALL OMICRONMATHEMATICAL SANS-SERI" + - "F BOLD SMALL PIMATHEMATICAL SANS-SERIF BOLD SMALL RHOMATHEMATICAL SANS-S" + - "ERIF BOLD SMALL FINAL SIGMAMATHEMATICAL SANS-SERIF BOLD SMALL SIGMAMATHE" + - "MATICAL SANS-SERIF BOLD SMALL TAUMATHEMATICAL SANS-SERIF BOLD SMALL UPSI" + - "LONMATHEMATICAL SANS-SERIF BOLD SMALL PHIMATHEMATICAL SANS-SERIF BOLD SM" + - "ALL CHIMATHEMATICAL SANS-SERIF BOLD SMALL PSIMATHEMATICAL SANS-SERIF BOL" + - "D SMALL OMEGAMATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIALMATHEMATIC" + - "AL SANS-SERIF BOLD EPSILON SYMBOLMATHEMATICAL SANS-SERIF BOLD THETA SYMB" + - "OLMATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOLMATHEMATICAL SANS-SERIF BOLD " + - "PHI SYMBOLMATHEMATICAL SANS-SERIF BOLD RHO SYMBOLMATHEMATICAL SANS-SERIF" + - " BOLD PI SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHAMATHEMAT" + - "ICAL SANS-SERIF BOLD ITALIC CAPITAL BETAMATHEMATICAL SANS-SERIF BOLD ITA" + - "LIC CAPITAL GAMMAMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTAMATHEM" + - "ATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILONMATHEMATICAL SANS-SERIF BOL" + - "D ITALIC CAPITAL ZETAMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETAMATH" + - "EMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETAMATHEMATICAL SANS-SERIF BOL" + - "D ITALIC CAPITAL IOTAMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPAMA" + - "THEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDAMATHEMATICAL SANS-SERIF B" + - "OLD ITALIC CAPITAL MUMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NUMATHE" + - "MATICAL SANS-SERIF BOLD ITALIC CAPITAL XIMATHEMATICAL SANS-SERIF BOLD IT" + - "ALIC CAPITAL OMICRONMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PIMATHEM" + - "ATICAL SANS-SERIF BOLD ITALIC CAPITAL RHOMATHEMATICAL SANS-SERIF BOLD IT" + - "ALIC CAPITAL THETA SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIG" + - "MAMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAUMATHEMATICAL SANS-SERIF" + - " BOLD ITALIC CAPITAL UPSILONMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL " + - "PHIMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHIMATHEMATICAL SANS-SERI" + - "F BOLD ITALIC CAPITAL PSIMATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OME" + - "GAMATHEMATICAL SANS-SERIF BOLD ITALIC NABLAMATHEMATICAL SANS-SERIF BOLD " + - "ITALIC SMALL ALPHAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETAMATHEMAT" + - "ICAL SANS-SERIF BOLD ITALIC SMALL GAMMAMATHEMATICAL SANS-SERIF BOLD ITAL" + - "IC SMALL DELTAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILONMATHEMATI" + - "CAL SANS-SERIF BOLD ITALIC SMALL ZETAMATHEMATICAL SANS-SERIF BOLD ITALIC" + - " SMALL ETAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETAMATHEMATICAL SA" + - "NS-SERIF BOLD ITALIC SMALL IOTAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL" + - " KAPPAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDAMATHEMATICAL SANS-S" + - "ERIF BOLD ITALIC SMALL MUMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NUMAT" + - "HEMATICAL SANS-SERIF BOLD ITALIC SMALL XIMATHEMATICAL SANS-SERIF BOLD IT" + - "ALIC SMALL OMICRONMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PIMATHEMATIC" + - "AL SANS-SERIF BOLD ITALIC SMALL RHOMATHEMATICAL SANS-SERIF BOLD ITALIC S" + - "MALL FINAL SIGMAMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMAMATHEMATI" + - "CAL SANS-SERIF BOLD ITALIC SMALL TAUMATHEMATICAL SANS-SERIF BOLD ITALIC " + - "SMALL UPSILONMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHIMATHEMATICAL S" + - "ANS-SERIF BOLD ITALIC SMALL CHIMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL" + - " PSIMATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGAMATHEMATICAL SANS-SER" + - "IF BOLD ITALIC PARTIAL DIFFERENTIALMATHEMATICAL SANS-SERIF BOLD ITALIC E" + - "PSILON SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOLMATHEMATICA" + - "L SANS-SERIF BOLD ITALIC KAPPA SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC" + - " PHI SYMBOLMATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOLMATHEMATICAL SA" + - "NS-SERIF BOLD ITALIC PI SYMBOLMATHEMATICAL BOLD CAPITAL DIGAMMAMATHEMATI" + - "CAL BOLD SMALL DIGAMMAMATHEMATICAL BOLD DIGIT ZEROMATHEMATICAL BOLD DIGI" + - "T ONEMATHEMATICAL BOLD DIGIT TWOMATHEMATICAL BOLD DIGIT THREEMATHEMATICA" + - "L BOLD DIGIT FOURMATHEMATICAL BOLD DIGIT FIVEMATHEMATICAL BOLD DIGIT SIX" + - "MATHEMATICAL BOLD DIGIT SEVENMATHEMATICAL BOLD DIGIT EIGHTMATHEMATICAL B" + - "OLD DIGIT NINEMATHEMATICAL DOUBLE-STRUCK DIGIT ZEROMATHEMATICAL DOUBLE-S" + - "TRUCK DIGIT ONEMATHEMATICAL DOUBLE-STRUCK DIGIT TWOMATHEMATICAL DOUBLE-S" + - "TRUCK DIGIT THREEMATHEMATICAL DOUBLE-STRUCK DIGIT FOURMATHEMATICAL DOUBL" + - "E-STRUCK DIGIT FIVEMATHEMATICAL DOUBLE-STRUCK DIGIT SIXMATHEMATICAL DOUB" + - "LE-STRUCK DIGIT SEVENMATHEMATICAL DOUBLE-STRUCK DIGIT EIGHTMATHEMATICAL " + - "DOUBLE-STRUCK DIGIT NINEMATHEMATICAL SANS-SERIF DIGIT ZEROMATHEMATICAL S" + - "ANS-SERIF DIGIT ONEMATHEMATICAL SANS-SERIF DIGIT TWOMATHEMATICAL SANS-SE" + - "RIF DIGIT THREEMATHEMATICAL SANS-SERIF DIGIT FOURMATHEMATICAL SANS-SERIF" + - " DIGIT FIVEMATHEMATICAL SANS-SERIF DIGIT SIXMATHEMATICAL SANS-SERIF DIGI" + - "T SEVENMATHEMATICAL SANS-SERIF DIGIT EIGHTMATHEMATICAL SANS-SERIF DIGIT ") + ("" + - "NINEMATHEMATICAL SANS-SERIF BOLD DIGIT ZEROMATHEMATICAL SANS-SERIF BOLD " + - "DIGIT ONEMATHEMATICAL SANS-SERIF BOLD DIGIT TWOMATHEMATICAL SANS-SERIF B" + - "OLD DIGIT THREEMATHEMATICAL SANS-SERIF BOLD DIGIT FOURMATHEMATICAL SANS-" + - "SERIF BOLD DIGIT FIVEMATHEMATICAL SANS-SERIF BOLD DIGIT SIXMATHEMATICAL " + - "SANS-SERIF BOLD DIGIT SEVENMATHEMATICAL SANS-SERIF BOLD DIGIT EIGHTMATHE" + - "MATICAL SANS-SERIF BOLD DIGIT NINEMATHEMATICAL MONOSPACE DIGIT ZEROMATHE" + - "MATICAL MONOSPACE DIGIT ONEMATHEMATICAL MONOSPACE DIGIT TWOMATHEMATICAL " + - "MONOSPACE DIGIT THREEMATHEMATICAL MONOSPACE DIGIT FOURMATHEMATICAL MONOS" + - "PACE DIGIT FIVEMATHEMATICAL MONOSPACE DIGIT SIXMATHEMATICAL MONOSPACE DI" + - "GIT SEVENMATHEMATICAL MONOSPACE DIGIT EIGHTMATHEMATICAL MONOSPACE DIGIT " + - "NINESIGNWRITING HAND-FIST INDEXSIGNWRITING HAND-CIRCLE INDEXSIGNWRITING " + - "HAND-CUP INDEXSIGNWRITING HAND-OVAL INDEXSIGNWRITING HAND-HINGE INDEXSIG" + - "NWRITING HAND-ANGLE INDEXSIGNWRITING HAND-FIST INDEX BENTSIGNWRITING HAN" + - "D-CIRCLE INDEX BENTSIGNWRITING HAND-FIST THUMB UNDER INDEX BENTSIGNWRITI" + - "NG HAND-FIST INDEX RAISED KNUCKLESIGNWRITING HAND-FIST INDEX CUPPEDSIGNW" + - "RITING HAND-FIST INDEX HINGEDSIGNWRITING HAND-FIST INDEX HINGED LOWSIGNW" + - "RITING HAND-CIRCLE INDEX HINGESIGNWRITING HAND-FIST INDEX MIDDLESIGNWRIT" + - "ING HAND-CIRCLE INDEX MIDDLESIGNWRITING HAND-FIST INDEX MIDDLE BENTSIGNW" + - "RITING HAND-FIST INDEX MIDDLE RAISED KNUCKLESSIGNWRITING HAND-FIST INDEX" + - " MIDDLE HINGEDSIGNWRITING HAND-FIST INDEX UP MIDDLE HINGEDSIGNWRITING HA" + - "ND-FIST INDEX HINGED MIDDLE UPSIGNWRITING HAND-FIST INDEX MIDDLE CONJOIN" + - "EDSIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENTSIGNWRITING HAN" + - "D-FIST INDEX MIDDLE CONJOINED MIDDLE BENTSIGNWRITING HAND-FIST INDEX MID" + - "DLE CONJOINED CUPPEDSIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGEDS" + - "IGNWRITING HAND-FIST INDEX MIDDLE CROSSEDSIGNWRITING HAND-CIRCLE INDEX M" + - "IDDLE CROSSEDSIGNWRITING HAND-FIST MIDDLE BENT OVER INDEXSIGNWRITING HAN" + - "D-FIST INDEX BENT OVER MIDDLESIGNWRITING HAND-FIST INDEX MIDDLE THUMBSIG" + - "NWRITING HAND-CIRCLE INDEX MIDDLE THUMBSIGNWRITING HAND-FIST INDEX MIDDL" + - "E STRAIGHT THUMB BENTSIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAI" + - "GHTSIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENTSIGNWRITING HAND-FIST IN" + - "DEX MIDDLE HINGED SPREAD THUMB SIDESIGNWRITING HAND-FIST INDEX UP MIDDLE" + - " HINGED THUMB SIDESIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CON" + - "JOINEDSIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDESIGNWRITING" + - " HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARDSIGNWRITING HAND-FIST IND" + - "EX MIDDLE THUMB CUPPEDSIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLEDSI" + - "GNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKEDSIGNWRITING HAND-FIST INDEX" + - " MIDDLE THUMB HINGEDSIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STR" + - "AIGHTSIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDESIGNWRITING " + - "HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINEDSIGNWRITING HAND-FI" + - "ST INDEX MIDDLE CONJOINED THUMB SIDE BENTSIGNWRITING HAND-FIST MIDDLE TH" + - "UMB HOOKED INDEX UPSIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UPSIG" + - "NWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDESIGNWRITING H" + - "AND-FIST INDEX MIDDLE CROSSED THUMB SIDESIGNWRITING HAND-FIST INDEX MIDD" + - "LE CONJOINED THUMB FORWARDSIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED C" + - "UPPED THUMB FORWARDSIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UPSIG" + - "NWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UPSIGNWRITING HAND-FIST MID" + - "DLE THUMB CIRCLED INDEX UPSIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED IND" + - "EX HINGEDSIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UPSIGNWRITI" + - "NG HAND-FIST INDEX THUMB ANGLED IN MIDDLE UPSIGNWRITING HAND-FIST INDEX " + - "THUMB CIRCLED MIDDLE UPSIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINE" + - "D HINGEDSIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUTSIGNWRITING H" + - "AND-FIST INDEX MIDDLE THUMB ANGLEDSIGNWRITING HAND-FIST MIDDLE THUMB ANG" + - "LED OUT INDEX UPSIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROS" + - "SEDSIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UPSIGNWRITING HAND-FI" + - "ST INDEX THUMB HOOKED MIDDLE HINGEDSIGNWRITING HAND-FLAT FOUR FINGERSSIG" + - "NWRITING HAND-FLAT FOUR FINGERS BENTSIGNWRITING HAND-FLAT FOUR FINGERS H" + - "INGEDSIGNWRITING HAND-FLAT FOUR FINGERS CONJOINEDSIGNWRITING HAND-FLAT F" + - "OUR FINGERS CONJOINED SPLITSIGNWRITING HAND-CLAW FOUR FINGERS CONJOINEDS" + - "IGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENTSIGNWRITING HAND-HINGE F" + - "OUR FINGERS CONJOINEDSIGNWRITING HAND-FLAT FIVE FINGERS SPREADSIGNWRITIN" + - "G HAND-FLAT HEEL FIVE FINGERS SPREADSIGNWRITING HAND-FLAT FIVE FINGERS S" + - "PREAD FOUR BENTSIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENTS" + - "IGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENTSIGNWRITING HAND-FLAT HEEL " + - "FIVE FINGERS SPREAD BENTSIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB ") + ("" + - "FORWARDSIGNWRITING HAND-CUP FIVE FINGERS SPREADSIGNWRITING HAND-CUP FIVE" + - " FINGERS SPREAD OPENSIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPENSIGNW" + - "RITING HAND-OVAL FIVE FINGERS SPREADSIGNWRITING HAND-FLAT FIVE FINGERS S" + - "PREAD HINGEDSIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDES" + - "IGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMBSIGNWRITING HAND" + - "-FLATSIGNWRITING HAND-FLAT BETWEEN PALM FACINGSSIGNWRITING HAND-FLAT HEE" + - "LSIGNWRITING HAND-FLAT THUMB SIDESIGNWRITING HAND-FLAT HEEL THUMB SIDESI" + - "GNWRITING HAND-FLAT THUMB BENTSIGNWRITING HAND-FLAT THUMB FORWARDSIGNWRI" + - "TING HAND-FLAT SPLIT INDEX THUMB SIDESIGNWRITING HAND-FLAT SPLIT CENTRES" + - "IGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDESIGNWRITING HAND-FLAT SPLIT " + - "CENTRE THUMB SIDE BENTSIGNWRITING HAND-FLAT SPLIT LITTLESIGNWRITING HAND" + - "-CLAWSIGNWRITING HAND-CLAW THUMB SIDESIGNWRITING HAND-CLAW NO THUMBSIGNW" + - "RITING HAND-CLAW THUMB FORWARDSIGNWRITING HAND-HOOK CURLICUESIGNWRITING " + - "HAND-HOOKSIGNWRITING HAND-CUP OPENSIGNWRITING HAND-CUPSIGNWRITING HAND-C" + - "UP OPEN THUMB SIDESIGNWRITING HAND-CUP THUMB SIDESIGNWRITING HAND-CUP OP" + - "EN NO THUMBSIGNWRITING HAND-CUP NO THUMBSIGNWRITING HAND-CUP OPEN THUMB " + - "FORWARDSIGNWRITING HAND-CUP THUMB FORWARDSIGNWRITING HAND-CURLICUE OPENS" + - "IGNWRITING HAND-CURLICUESIGNWRITING HAND-CIRCLESIGNWRITING HAND-OVALSIGN" + - "WRITING HAND-OVAL THUMB SIDESIGNWRITING HAND-OVAL NO THUMBSIGNWRITING HA" + - "ND-OVAL THUMB FORWARDSIGNWRITING HAND-HINGE OPENSIGNWRITING HAND-HINGE O" + - "PEN THUMB FORWARDSIGNWRITING HAND-HINGESIGNWRITING HAND-HINGE SMALLSIGNW" + - "RITING HAND-HINGE OPEN THUMB SIDESIGNWRITING HAND-HINGE THUMB SIDESIGNWR" + - "ITING HAND-HINGE OPEN NO THUMBSIGNWRITING HAND-HINGE NO THUMBSIGNWRITING" + - " HAND-HINGE THUMB SIDE TOUCHING INDEXSIGNWRITING HAND-HINGE THUMB BETWEE" + - "N MIDDLE RINGSIGNWRITING HAND-ANGLESIGNWRITING HAND-FIST INDEX MIDDLE RI" + - "NGSIGNWRITING HAND-CIRCLE INDEX MIDDLE RINGSIGNWRITING HAND-HINGE INDEX " + - "MIDDLE RINGSIGNWRITING HAND-ANGLE INDEX MIDDLE RINGSIGNWRITING HAND-HING" + - "E LITTLESIGNWRITING HAND-FIST INDEX MIDDLE RING BENTSIGNWRITING HAND-FIS" + - "T INDEX MIDDLE RING CONJOINEDSIGNWRITING HAND-HINGE INDEX MIDDLE RING CO" + - "NJOINEDSIGNWRITING HAND-FIST LITTLE DOWNSIGNWRITING HAND-FIST LITTLE DOW" + - "N RIPPLE STRAIGHTSIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVEDSIGNWRIT" + - "ING HAND-FIST LITTLE DOWN OTHERS CIRCLEDSIGNWRITING HAND-FIST LITTLE UPS" + - "IGNWRITING HAND-FIST THUMB UNDER LITTLE UPSIGNWRITING HAND-CIRCLE LITTLE" + - " UPSIGNWRITING HAND-OVAL LITTLE UPSIGNWRITING HAND-ANGLE LITTLE UPSIGNWR" + - "ITING HAND-FIST LITTLE RAISED KNUCKLESIGNWRITING HAND-FIST LITTLE BENTSI" + - "GNWRITING HAND-FIST LITTLE TOUCHES THUMBSIGNWRITING HAND-FIST LITTLE THU" + - "MBSIGNWRITING HAND-HINGE LITTLE THUMBSIGNWRITING HAND-FIST LITTLE INDEX " + - "THUMBSIGNWRITING HAND-HINGE LITTLE INDEX THUMBSIGNWRITING HAND-ANGLE LIT" + - "TLE INDEX THUMB INDEX THUMB OUTSIGNWRITING HAND-ANGLE LITTLE INDEX THUMB" + - " INDEX THUMBSIGNWRITING HAND-FIST LITTLE INDEXSIGNWRITING HAND-CIRCLE LI" + - "TTLE INDEXSIGNWRITING HAND-HINGE LITTLE INDEXSIGNWRITING HAND-ANGLE LITT" + - "LE INDEXSIGNWRITING HAND-FIST INDEX MIDDLE LITTLESIGNWRITING HAND-CIRCLE" + - " INDEX MIDDLE LITTLESIGNWRITING HAND-HINGE INDEX MIDDLE LITTLESIGNWRITIN" + - "G HAND-HINGE RINGSIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLESIGNWRITING H" + - "AND-FIST INDEX MIDDLE CROSS LITTLESIGNWRITING HAND-CIRCLE INDEX MIDDLE C" + - "ROSS LITTLESIGNWRITING HAND-FIST RING DOWNSIGNWRITING HAND-HINGE RING DO" + - "WN INDEX THUMB HOOK MIDDLESIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB " + - "INDEX CROSSSIGNWRITING HAND-FIST RING UPSIGNWRITING HAND-FIST RING RAISE" + - "D KNUCKLESIGNWRITING HAND-FIST RING LITTLESIGNWRITING HAND-CIRCLE RING L" + - "ITTLESIGNWRITING HAND-OVAL RING LITTLESIGNWRITING HAND-ANGLE RING LITTLE" + - "SIGNWRITING HAND-FIST RING MIDDLESIGNWRITING HAND-FIST RING MIDDLE CONJO" + - "INEDSIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLESSIGNWRITING HAND-FI" + - "ST RING INDEXSIGNWRITING HAND-FIST RING THUMBSIGNWRITING HAND-HOOK RING " + - "THUMBSIGNWRITING HAND-FIST INDEX RING LITTLESIGNWRITING HAND-CIRCLE INDE" + - "X RING LITTLESIGNWRITING HAND-CURLICUE INDEX RING LITTLE ONSIGNWRITING H" + - "AND-HOOK INDEX RING LITTLE OUTSIGNWRITING HAND-HOOK INDEX RING LITTLE IN" + - "SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDERSIGNWRITING HAND-CUP INDEX " + - "RING LITTLESIGNWRITING HAND-HINGE INDEX RING LITTLESIGNWRITING HAND-ANGL" + - "E INDEX RING LITTLE OUTSIGNWRITING HAND-ANGLE INDEX RING LITTLESIGNWRITI" + - "NG HAND-FIST MIDDLE DOWNSIGNWRITING HAND-HINGE MIDDLESIGNWRITING HAND-FI" + - "ST MIDDLE UPSIGNWRITING HAND-CIRCLE MIDDLE UPSIGNWRITING HAND-FIST MIDDL" + - "E RAISED KNUCKLESIGNWRITING HAND-FIST MIDDLE UP THUMB SIDESIGNWRITING HA" + - "ND-HOOK MIDDLE THUMBSIGNWRITING HAND-FIST MIDDLE THUMB LITTLESIGNWRITING" + - " HAND-FIST MIDDLE LITTLESIGNWRITING HAND-FIST MIDDLE RING LITTLESIGNWRIT") + ("" + - "ING HAND-CIRCLE MIDDLE RING LITTLESIGNWRITING HAND-CURLICUE MIDDLE RING " + - "LITTLE ONSIGNWRITING HAND-CUP MIDDLE RING LITTLESIGNWRITING HAND-HINGE M" + - "IDDLE RING LITTLESIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUTSIGNWRITIN" + - "G HAND-ANGLE MIDDLE RING LITTLE INSIGNWRITING HAND-ANGLE MIDDLE RING LIT" + - "TLESIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENTSIGNWRITING HAND-CLAW " + - "MIDDLE RING LITTLE CONJOINEDSIGNWRITING HAND-CLAW MIDDLE RING LITTLE CON" + - "JOINED SIDESIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUTSIGNWRI" + - "TING HAND-HOOK MIDDLE RING LITTLE CONJOINED INSIGNWRITING HAND-HOOK MIDD" + - "LE RING LITTLE CONJOINEDSIGNWRITING HAND-HINGE INDEX HINGEDSIGNWRITING H" + - "AND-FIST INDEX THUMB SIDESIGNWRITING HAND-HINGE INDEX THUMB SIDESIGNWRIT" + - "ING HAND-FIST INDEX THUMB SIDE THUMB DIAGONALSIGNWRITING HAND-FIST INDEX" + - " THUMB SIDE THUMB CONJOINEDSIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB " + - "BENTSIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENTSIGNWRITING HAND-FI" + - "ST INDEX THUMB SIDE BOTH BENTSIGNWRITING HAND-FIST INDEX THUMB SIDE INDE" + - "X HINGESIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHTSIGNWRITI" + - "NG HAND-FIST INDEX THUMB FORWARD INDEX BENTSIGNWRITING HAND-FIST INDEX T" + - "HUMB HOOKSIGNWRITING HAND-FIST INDEX THUMB CURLICUESIGNWRITING HAND-FIST" + - " INDEX THUMB CURVE THUMB INSIDESIGNWRITING HAND-CLAW INDEX THUMB CURVE T" + - "HUMB INSIDESIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDERSIGNWRITIN" + - "G HAND-FIST INDEX THUMB CIRCLESIGNWRITING HAND-CUP INDEX THUMBSIGNWRITIN" + - "G HAND-CUP INDEX THUMB OPENSIGNWRITING HAND-HINGE INDEX THUMB OPENSIGNWR" + - "ITING HAND-HINGE INDEX THUMB LARGESIGNWRITING HAND-HINGE INDEX THUMBSIGN" + - "WRITING HAND-HINGE INDEX THUMB SMALLSIGNWRITING HAND-ANGLE INDEX THUMB O" + - "UTSIGNWRITING HAND-ANGLE INDEX THUMB INSIGNWRITING HAND-ANGLE INDEX THUM" + - "BSIGNWRITING HAND-FIST THUMBSIGNWRITING HAND-FIST THUMB HEELSIGNWRITING " + - "HAND-FIST THUMB SIDE DIAGONALSIGNWRITING HAND-FIST THUMB SIDE CONJOINEDS" + - "IGNWRITING HAND-FIST THUMB SIDE BENTSIGNWRITING HAND-FIST THUMB FORWARDS" + - "IGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLESIGNWRITING HAND-FIST THU" + - "MB BETWEEN MIDDLE RINGSIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLESIG" + - "NWRITING HAND-FIST THUMB UNDER TWO FINGERSSIGNWRITING HAND-FIST THUMB OV" + - "ER TWO FINGERSSIGNWRITING HAND-FIST THUMB UNDER THREE FINGERSSIGNWRITING" + - " HAND-FIST THUMB UNDER FOUR FINGERSSIGNWRITING HAND-FIST THUMB OVER FOUR" + - " RAISED KNUCKLESSIGNWRITING HAND-FISTSIGNWRITING HAND-FIST HEELSIGNWRITI" + - "NG TOUCH SINGLESIGNWRITING TOUCH MULTIPLESIGNWRITING TOUCH BETWEENSIGNWR" + - "ITING GRASP SINGLESIGNWRITING GRASP MULTIPLESIGNWRITING GRASP BETWEENSIG" + - "NWRITING STRIKE SINGLESIGNWRITING STRIKE MULTIPLESIGNWRITING STRIKE BETW" + - "EENSIGNWRITING BRUSH SINGLESIGNWRITING BRUSH MULTIPLESIGNWRITING BRUSH B" + - "ETWEENSIGNWRITING RUB SINGLESIGNWRITING RUB MULTIPLESIGNWRITING RUB BETW" + - "EENSIGNWRITING SURFACE SYMBOLSSIGNWRITING SURFACE BETWEENSIGNWRITING SQU" + - "EEZE LARGE SINGLESIGNWRITING SQUEEZE SMALL SINGLESIGNWRITING SQUEEZE LAR" + - "GE MULTIPLESIGNWRITING SQUEEZE SMALL MULTIPLESIGNWRITING SQUEEZE SEQUENT" + - "IALSIGNWRITING FLICK LARGE SINGLESIGNWRITING FLICK SMALL SINGLESIGNWRITI" + - "NG FLICK LARGE MULTIPLESIGNWRITING FLICK SMALL MULTIPLESIGNWRITING FLICK" + - " SEQUENTIALSIGNWRITING SQUEEZE FLICK ALTERNATINGSIGNWRITING MOVEMENT-HIN" + - "GE UP DOWN LARGESIGNWRITING MOVEMENT-HINGE UP DOWN SMALLSIGNWRITING MOVE" + - "MENT-HINGE UP SEQUENTIALSIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIALSIGNWR" + - "ITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGESIGNWRITING MOVEMENT-HINGE" + - " UP DOWN ALTERNATING SMALLSIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSO" + - "RSSIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACTSIGNWRITING MOVEMENT-FLOO" + - "RPLANE FINGER CONTACTSIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMAL" + - "LSIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUMSIGNWRITING MOVEME" + - "NT-WALLPLANE SINGLE STRAIGHT LARGESIGNWRITING MOVEMENT-WALLPLANE SINGLE " + - "STRAIGHT LARGESTSIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEXSIGNWRIT" + - "ING MOVEMENT-WALLPLANE DOUBLE STRAIGHTSIGNWRITING MOVEMENT-WALLPLANE DOU" + - "BLE WRIST FLEXSIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATINGSIGNWRITI" + - "NG MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEXSIGNWRITING MOVEMENT-" + - "WALLPLANE CROSSSIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENTSI" + - "GNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEXSIGNWRITING MOVEMENT-WALLP" + - "LANE TRIPLE ALTERNATINGSIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING" + - " WRIST FLEXSIGNWRITING MOVEMENT-WALLPLANE BEND SMALLSIGNWRITING MOVEMENT" + - "-WALLPLANE BEND MEDIUMSIGNWRITING MOVEMENT-WALLPLANE BEND LARGESIGNWRITI" + - "NG MOVEMENT-WALLPLANE CORNER SMALLSIGNWRITING MOVEMENT-WALLPLANE CORNER " + - "MEDIUMSIGNWRITING MOVEMENT-WALLPLANE CORNER LARGESIGNWRITING MOVEMENT-WA" + - "LLPLANE CORNER ROTATIONSIGNWRITING MOVEMENT-WALLPLANE CHECK SMALLSIGNWRI") + ("" + - "TING MOVEMENT-WALLPLANE CHECK MEDIUMSIGNWRITING MOVEMENT-WALLPLANE CHECK" + - " LARGESIGNWRITING MOVEMENT-WALLPLANE BOX SMALLSIGNWRITING MOVEMENT-WALLP" + - "LANE BOX MEDIUMSIGNWRITING MOVEMENT-WALLPLANE BOX LARGESIGNWRITING MOVEM" + - "ENT-WALLPLANE ZIGZAG SMALLSIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUMSI" + - "GNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGESIGNWRITING MOVEMENT-WALLPLANE " + - "PEAKS SMALLSIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUMSIGNWRITING MOVEME" + - "NT-WALLPLANE PEAKS LARGESIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE " + - "SINGLESIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLESIGNWRITING " + - "TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATINGSIGNWRITING TRAVEL-WALLPL" + - "ANE ROTATION-FLOORPLANE SINGLESIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOO" + - "RPLANE DOUBLESIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATIN" + - "GSIGNWRITING TRAVEL-WALLPLANE SHAKINGSIGNWRITING TRAVEL-WALLPLANE ARM SP" + - "IRAL SINGLESIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLESIGNWRITING TRA" + - "VEL-WALLPLANE ARM SPIRAL TRIPLESIGNWRITING MOVEMENT-DIAGONAL AWAY SMALLS" + - "IGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUMSIGNWRITING MOVEMENT-DIAGONAL AW" + - "AY LARGESIGNWRITING MOVEMENT-DIAGONAL AWAY LARGESTSIGNWRITING MOVEMENT-D" + - "IAGONAL TOWARDS SMALLSIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUMSIGNWRI" + - "TING MOVEMENT-DIAGONAL TOWARDS LARGESIGNWRITING MOVEMENT-DIAGONAL TOWARD" + - "S LARGESTSIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALLSIGNWRITING MOV" + - "EMENT-DIAGONAL BETWEEN AWAY MEDIUMSIGNWRITING MOVEMENT-DIAGONAL BETWEEN " + - "AWAY LARGESIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGESTSIGNWRITING " + - "MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALLSIGNWRITING MOVEMENT-DIAGONAL BET" + - "WEEN TOWARDS MEDIUMSIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGESI" + - "GNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGESTSIGNWRITING MOVEMENT-" + - "FLOORPLANE SINGLE STRAIGHT SMALLSIGNWRITING MOVEMENT-FLOORPLANE SINGLE S" + - "TRAIGHT MEDIUMSIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGESIGNW" + - "RITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGESTSIGNWRITING MOVEMENT-F" + - "LOORPLANE SINGLE WRIST FLEXSIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIG" + - "HTSIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEXSIGNWRITING MOVEMENT-" + - "FLOORPLANE DOUBLE ALTERNATINGSIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTE" + - "RNATING WRIST FLEXSIGNWRITING MOVEMENT-FLOORPLANE CROSSSIGNWRITING MOVEM" + - "ENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENTSIGNWRITING MOVEMENT-FLOORPLANE T" + - "RIPLE WRIST FLEXSIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEM" + - "ENTSIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEXSIGNWRIT" + - "ING MOVEMENT-FLOORPLANE BENDSIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL" + - "SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUMSIGNWRITING MOVEMENT-FLOORP" + - "LANE CORNER LARGESIGNWRITING MOVEMENT-FLOORPLANE CHECKSIGNWRITING MOVEME" + - "NT-FLOORPLANE BOX SMALLSIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUMSIGNWRI" + - "TING MOVEMENT-FLOORPLANE BOX LARGESIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG" + - " SMALLSIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUMSIGNWRITING MOVEMENT-" + - "FLOORPLANE ZIGZAG LARGESIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALLSIGNWR" + - "ITING MOVEMENT-FLOORPLANE PEAKS MEDIUMSIGNWRITING MOVEMENT-FLOORPLANE PE" + - "AKS LARGESIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLESIGNWRI" + - "TING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLESIGNWRITING TRAVEL-FLOO" + - "RPLANE ROTATION-FLOORPLANE ALTERNATINGSIGNWRITING TRAVEL-FLOORPLANE ROTA" + - "TION-WALLPLANE SINGLESIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DO" + - "UBLESIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATINGSIGNWRIT" + - "ING TRAVEL-FLOORPLANE SHAKINGSIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTE" + - "R SMALLSIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUMSIGNWRITING MO" + - "VEMENT-WALLPLANE CURVE QUARTER LARGESIGNWRITING MOVEMENT-WALLPLANE CURVE" + - " QUARTER LARGESTSIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALLSI" + - "GNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUMSIGNWRITING MOVEMEN" + - "T-WALLPLANE CURVE HALF-CIRCLE LARGESIGNWRITING MOVEMENT-WALLPLANE CURVE " + - "HALF-CIRCLE LARGESTSIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CI" + - "RCLE SMALLSIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDI" + - "UMSIGNWRITING MOVEMENT-WALLPLANE HUMP SMALLSIGNWRITING MOVEMENT-WALLPLAN" + - "E HUMP MEDIUMSIGNWRITING MOVEMENT-WALLPLANE HUMP LARGESIGNWRITING MOVEME" + - "NT-WALLPLANE LOOP SMALLSIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUMSIGNWRI" + - "TING MOVEMENT-WALLPLANE LOOP LARGESIGNWRITING MOVEMENT-WALLPLANE LOOP SM" + - "ALL DOUBLESIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALLSIGNWRIT" + - "ING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUMSIGNWRITING MOVEMENT-WALL" + - "PLANE WAVE CURVE DOUBLE LARGESIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE T" + - "RIPLE SMALLSIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUMSIGNWR" + - "ITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGESIGNWRITING MOVEMENT-WAL") + ("" + - "LPLANE CURVE THEN STRAIGHTSIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SM" + - "ALLSIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUMSIGNWRITING ROTATIO" + - "N-WALLPLANE SINGLESIGNWRITING ROTATION-WALLPLANE DOUBLESIGNWRITING ROTAT" + - "ION-WALLPLANE ALTERNATESIGNWRITING MOVEMENT-WALLPLANE SHAKINGSIGNWRITING" + - " MOVEMENT-WALLPLANE CURVE HITTING FRONT WALLSIGNWRITING MOVEMENT-WALLPLA" + - "NE HUMP HITTING FRONT WALLSIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FR" + - "ONT WALLSIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALLSIGNWRITIN" + - "G ROTATION-WALLPLANE SINGLE HITTING FRONT WALLSIGNWRITING ROTATION-WALLP" + - "LANE DOUBLE HITTING FRONT WALLSIGNWRITING ROTATION-WALLPLANE ALTERNATING" + - " HITTING FRONT WALLSIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHESTSIG" + - "NWRITING MOVEMENT-WALLPLANE HUMP HITTING CHESTSIGNWRITING MOVEMENT-WALLP" + - "LANE LOOP HITTING CHESTSIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST" + - "SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHESTSIGNWRITING ROTATION-" + - "WALLPLANE DOUBLE HITTING CHESTSIGNWRITING ROTATION-WALLPLANE ALTERNATING" + - " HITTING CHESTSIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALLSIG" + - "NWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUMSIGNWRITING MOVEMEN" + - "T-WALLPLANE WAVE DIAGONAL PATH LARGESIGNWRITING MOVEMENT-FLOORPLANE CURV" + - "E HITTING CEILING SMALLSIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEI" + - "LING LARGESIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOU" + - "BLESIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLESIGN" + - "WRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLESIGNWRITING" + - " MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLESIGNWRITING MOVEME" + - "NT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLESIGNWRITING MOVEMENT-FLOO" + - "RPLANE LOOP HITTING CEILING LARGE SINGLESIGNWRITING MOVEMENT-FLOORPLANE " + - "LOOP HITTING CEILING SMALL DOUBLESIGNWRITING MOVEMENT-FLOORPLANE LOOP HI" + - "TTING CEILING LARGE DOUBLESIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING C" + - "EILING SMALLSIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGESI" + - "GNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILINGSIGNWRITING ROTATION" + - "-FLOORPLANE DOUBLE HITTING CEILINGSIGNWRITING ROTATION-FLOORPLANE ALTERN" + - "ATING HITTING CEILINGSIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR" + - " SMALLSIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGESIGNWRITI" + - "NG MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLESIGNWRITING MOVEME" + - "NT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLESIGNWRITING MOVEMENT-FLOORP" + - "LANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLESIGNWRITING MOVEMENT-FLOORPLA" + - "NE HUMP HITTING FLOOR TRIPLE LARGE TRIPLESIGNWRITING MOVEMENT-FLOORPLANE" + - " LOOP HITTING FLOOR SMALL SINGLESIGNWRITING MOVEMENT-FLOORPLANE LOOP HIT" + - "TING FLOOR LARGE SINGLESIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOO" + - "R SMALL DOUBLESIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE D" + - "OUBLESIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALLSIGNWRITING" + - " MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGESIGNWRITING ROTATION-FLOORP" + - "LANE SINGLE HITTING FLOORSIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING " + - "FLOORSIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOORSIGNWRITIN" + - "G MOVEMENT-FLOORPLANE CURVE SMALLSIGNWRITING MOVEMENT-FLOORPLANE CURVE M" + - "EDIUMSIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGESIGNWRITING MOVEMENT-FLO" + - "ORPLANE CURVE LARGESTSIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINEDSIGNW" + - "RITING MOVEMENT-FLOORPLANE HUMP SMALLSIGNWRITING MOVEMENT-FLOORPLANE LOO" + - "P SMALLSIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKESIGNWRITING MOVEMENT-FL" + - "OORPLANE WAVE SMALLSIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGESIGNWRITING" + - " ROTATION-FLOORPLANE SINGLESIGNWRITING ROTATION-FLOORPLANE DOUBLESIGNWRI" + - "TING ROTATION-FLOORPLANE ALTERNATINGSIGNWRITING MOVEMENT-FLOORPLANE SHAK" + - "ING PARALLELSIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLESIGNWR" + - "ITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLESIGNWRITING MOVEMENT-WA" + - "LLPLANE ARM CIRCLE SMALL DOUBLESIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE" + - " MEDIUM DOUBLESIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SM" + - "ALL SINGLESIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM" + - " SINGLESIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SIN" + - "GLESIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLES" + - "IGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLESIGN" + - "WRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLESIGNWRIT" + - "ING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLESIGNWRITING MOVEMENT-WAL" + - "LPLANE WRIST CIRCLE FRONT DOUBLESIGNWRITING MOVEMENT-FLOORPLANE WRIST CI" + - "RCLE HITTING WALL SINGLESIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HIT" + - "TING WALL DOUBLESIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLESIGN" + - "WRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLESIGNWRITING MOVEMENT-FLO") + ("" + - "ORPLANE FINGER CIRCLES HITTING WALL SINGLESIGNWRITING MOVEMENT-FLOORPLAN" + - "E FINGER CIRCLES HITTING WALL DOUBLESIGNWRITING DYNAMIC ARROWHEAD SMALLS" + - "IGNWRITING DYNAMIC ARROWHEAD LARGESIGNWRITING DYNAMIC FASTSIGNWRITING DY" + - "NAMIC SLOWSIGNWRITING DYNAMIC TENSESIGNWRITING DYNAMIC RELAXEDSIGNWRITIN" + - "G DYNAMIC SIMULTANEOUSSIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATINGSIGNWR" + - "ITING DYNAMIC EVERY OTHER TIMESIGNWRITING DYNAMIC GRADUALSIGNWRITING HEA" + - "DSIGNWRITING HEAD RIMSIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHTSIGNWRI" + - "TING HEAD MOVEMENT-WALLPLANE TILTSIGNWRITING HEAD MOVEMENT-FLOORPLANE ST" + - "RAIGHTSIGNWRITING HEAD MOVEMENT-WALLPLANE CURVESIGNWRITING HEAD MOVEMENT" + - "-FLOORPLANE CURVESIGNWRITING HEAD MOVEMENT CIRCLESIGNWRITING FACE DIRECT" + - "ION POSITION NOSE FORWARD TILTINGSIGNWRITING FACE DIRECTION POSITION NOS" + - "E UP OR DOWNSIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTINGS" + - "IGNWRITING EYEBROWS STRAIGHT UPSIGNWRITING EYEBROWS STRAIGHT NEUTRALSIGN" + - "WRITING EYEBROWS STRAIGHT DOWNSIGNWRITING DREAMY EYEBROWS NEUTRAL DOWNSI" + - "GNWRITING DREAMY EYEBROWS DOWN NEUTRALSIGNWRITING DREAMY EYEBROWS UP NEU" + - "TRALSIGNWRITING DREAMY EYEBROWS NEUTRAL UPSIGNWRITING FOREHEAD NEUTRALSI" + - "GNWRITING FOREHEAD CONTACTSIGNWRITING FOREHEAD WRINKLEDSIGNWRITING EYES " + - "OPENSIGNWRITING EYES SQUEEZEDSIGNWRITING EYES CLOSEDSIGNWRITING EYE BLIN" + - "K SINGLESIGNWRITING EYE BLINK MULTIPLESIGNWRITING EYES HALF OPENSIGNWRIT" + - "ING EYES WIDE OPENSIGNWRITING EYES HALF CLOSEDSIGNWRITING EYES WIDENING " + - "MOVEMENTSIGNWRITING EYE WINKSIGNWRITING EYELASHES UPSIGNWRITING EYELASHE" + - "S DOWNSIGNWRITING EYELASHES FLUTTERINGSIGNWRITING EYEGAZE-WALLPLANE STRA" + - "IGHTSIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLESIGNWRITING EYEGAZE-WAL" + - "LPLANE STRAIGHT ALTERNATINGSIGNWRITING EYEGAZE-FLOORPLANE STRAIGHTSIGNWR" + - "ITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLESIGNWRITING EYEGAZE-FLOORPLANE S" + - "TRAIGHT ALTERNATINGSIGNWRITING EYEGAZE-WALLPLANE CURVEDSIGNWRITING EYEGA" + - "ZE-FLOORPLANE CURVEDSIGNWRITING EYEGAZE-WALLPLANE CIRCLINGSIGNWRITING CH" + - "EEKS PUFFEDSIGNWRITING CHEEKS NEUTRALSIGNWRITING CHEEKS SUCKEDSIGNWRITIN" + - "G TENSE CHEEKS HIGHSIGNWRITING TENSE CHEEKS MIDDLESIGNWRITING TENSE CHEE" + - "KS LOWSIGNWRITING EARSSIGNWRITING NOSE NEUTRALSIGNWRITING NOSE CONTACTSI" + - "GNWRITING NOSE WRINKLESSIGNWRITING NOSE WIGGLESSIGNWRITING AIR BLOWING O" + - "UTSIGNWRITING AIR SUCKING INSIGNWRITING AIR BLOW SMALL ROTATIONSSIGNWRIT" + - "ING AIR SUCK SMALL ROTATIONSSIGNWRITING BREATH INHALESIGNWRITING BREATH " + - "EXHALESIGNWRITING MOUTH CLOSED NEUTRALSIGNWRITING MOUTH CLOSED FORWARDSI" + - "GNWRITING MOUTH CLOSED CONTACTSIGNWRITING MOUTH SMILESIGNWRITING MOUTH S" + - "MILE WRINKLEDSIGNWRITING MOUTH SMILE OPENSIGNWRITING MOUTH FROWNSIGNWRIT" + - "ING MOUTH FROWN WRINKLEDSIGNWRITING MOUTH FROWN OPENSIGNWRITING MOUTH OP" + - "EN CIRCLESIGNWRITING MOUTH OPEN FORWARDSIGNWRITING MOUTH OPEN WRINKLEDSI" + - "GNWRITING MOUTH OPEN OVALSIGNWRITING MOUTH OPEN OVAL WRINKLEDSIGNWRITING" + - " MOUTH OPEN OVAL YAWNSIGNWRITING MOUTH OPEN RECTANGLESIGNWRITING MOUTH O" + - "PEN RECTANGLE WRINKLEDSIGNWRITING MOUTH OPEN RECTANGLE YAWNSIGNWRITING M" + - "OUTH KISSSIGNWRITING MOUTH KISS FORWARDSIGNWRITING MOUTH KISS WRINKLEDSI" + - "GNWRITING MOUTH TENSESIGNWRITING MOUTH TENSE FORWARDSIGNWRITING MOUTH TE" + - "NSE SUCKEDSIGNWRITING LIPS PRESSED TOGETHERSIGNWRITING LIP LOWER OVER UP" + - "PERSIGNWRITING LIP UPPER OVER LOWERSIGNWRITING MOUTH CORNERSSIGNWRITING " + - "MOUTH WRINKLES SINGLESIGNWRITING MOUTH WRINKLES DOUBLESIGNWRITING TONGUE" + - " STICKING OUT FARSIGNWRITING TONGUE LICKING LIPSSIGNWRITING TONGUE TIP B" + - "ETWEEN LIPSSIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTHSIGNWRITING TONGU" + - "E INSIDE MOUTH RELAXEDSIGNWRITING TONGUE MOVES AGAINST CHEEKSIGNWRITING " + - "TONGUE CENTRE STICKING OUTSIGNWRITING TONGUE CENTRE INSIDE MOUTHSIGNWRIT" + - "ING TEETHSIGNWRITING TEETH MOVEMENTSIGNWRITING TEETH ON TONGUESIGNWRITIN" + - "G TEETH ON TONGUE MOVEMENTSIGNWRITING TEETH ON LIPSSIGNWRITING TEETH ON " + - "LIPS MOVEMENTSIGNWRITING TEETH BITE LIPSSIGNWRITING MOVEMENT-WALLPLANE J" + - "AWSIGNWRITING MOVEMENT-FLOORPLANE JAWSIGNWRITING NECKSIGNWRITING HAIRSIG" + - "NWRITING EXCITEMENTSIGNWRITING SHOULDER HIP SPINESIGNWRITING SHOULDER HI" + - "P POSITIONSSIGNWRITING WALLPLANE SHOULDER HIP MOVESIGNWRITING FLOORPLANE" + - " SHOULDER HIP MOVESIGNWRITING SHOULDER TILTING FROM WAISTSIGNWRITING TOR" + - "SO-WALLPLANE STRAIGHT STRETCHSIGNWRITING TORSO-WALLPLANE CURVED BENDSIGN" + - "WRITING TORSO-FLOORPLANE TWISTINGSIGNWRITING UPPER BODY TILTING FROM HIP" + - " JOINTSSIGNWRITING LIMB COMBINATIONSIGNWRITING LIMB LENGTH-1SIGNWRITING " + - "LIMB LENGTH-2SIGNWRITING LIMB LENGTH-3SIGNWRITING LIMB LENGTH-4SIGNWRITI" + - "NG LIMB LENGTH-5SIGNWRITING LIMB LENGTH-6SIGNWRITING LIMB LENGTH-7SIGNWR" + - "ITING FINGERSIGNWRITING LOCATION-WALLPLANE SPACESIGNWRITING LOCATION-FLO" + - "ORPLANE SPACESIGNWRITING LOCATION HEIGHTSIGNWRITING LOCATION WIDTHSIGNWR") + ("" + - "ITING LOCATION DEPTHSIGNWRITING LOCATION HEAD NECKSIGNWRITING LOCATION T" + - "ORSOSIGNWRITING LOCATION LIMBS DIGITSSIGNWRITING COMMASIGNWRITING FULL S" + - "TOPSIGNWRITING SEMICOLONSIGNWRITING COLONSIGNWRITING PARENTHESISSIGNWRIT" + - "ING FILL MODIFIER-2SIGNWRITING FILL MODIFIER-3SIGNWRITING FILL MODIFIER-" + - "4SIGNWRITING FILL MODIFIER-5SIGNWRITING FILL MODIFIER-6SIGNWRITING ROTAT" + - "ION MODIFIER-2SIGNWRITING ROTATION MODIFIER-3SIGNWRITING ROTATION MODIFI" + - "ER-4SIGNWRITING ROTATION MODIFIER-5SIGNWRITING ROTATION MODIFIER-6SIGNWR" + - "ITING ROTATION MODIFIER-7SIGNWRITING ROTATION MODIFIER-8SIGNWRITING ROTA" + - "TION MODIFIER-9SIGNWRITING ROTATION MODIFIER-10SIGNWRITING ROTATION MODI" + - "FIER-11SIGNWRITING ROTATION MODIFIER-12SIGNWRITING ROTATION MODIFIER-13S" + - "IGNWRITING ROTATION MODIFIER-14SIGNWRITING ROTATION MODIFIER-15SIGNWRITI" + - "NG ROTATION MODIFIER-16COMBINING GLAGOLITIC LETTER AZUCOMBINING GLAGOLIT" + - "IC LETTER BUKYCOMBINING GLAGOLITIC LETTER VEDECOMBINING GLAGOLITIC LETTE" + - "R GLAGOLICOMBINING GLAGOLITIC LETTER DOBROCOMBINING GLAGOLITIC LETTER YE" + - "STUCOMBINING GLAGOLITIC LETTER ZHIVETECOMBINING GLAGOLITIC LETTER ZEMLJA" + - "COMBINING GLAGOLITIC LETTER IZHECOMBINING GLAGOLITIC LETTER INITIAL IZHE" + - "COMBINING GLAGOLITIC LETTER ICOMBINING GLAGOLITIC LETTER DJERVICOMBINING" + - " GLAGOLITIC LETTER KAKOCOMBINING GLAGOLITIC LETTER LJUDIJECOMBINING GLAG" + - "OLITIC LETTER MYSLITECOMBINING GLAGOLITIC LETTER NASHICOMBINING GLAGOLIT" + - "IC LETTER ONUCOMBINING GLAGOLITIC LETTER POKOJICOMBINING GLAGOLITIC LETT" + - "ER RITSICOMBINING GLAGOLITIC LETTER SLOVOCOMBINING GLAGOLITIC LETTER TVR" + - "IDOCOMBINING GLAGOLITIC LETTER UKUCOMBINING GLAGOLITIC LETTER FRITUCOMBI" + - "NING GLAGOLITIC LETTER HERUCOMBINING GLAGOLITIC LETTER SHTACOMBINING GLA" + - "GOLITIC LETTER TSICOMBINING GLAGOLITIC LETTER CHRIVICOMBINING GLAGOLITIC" + - " LETTER SHACOMBINING GLAGOLITIC LETTER YERUCOMBINING GLAGOLITIC LETTER Y" + - "ERICOMBINING GLAGOLITIC LETTER YATICOMBINING GLAGOLITIC LETTER YUCOMBINI" + - "NG GLAGOLITIC LETTER SMALL YUSCOMBINING GLAGOLITIC LETTER YOCOMBINING GL" + - "AGOLITIC LETTER IOTATED SMALL YUSCOMBINING GLAGOLITIC LETTER BIG YUSCOMB" + - "INING GLAGOLITIC LETTER IOTATED BIG YUSCOMBINING GLAGOLITIC LETTER FITAM" + - "ENDE KIKAKUI SYLLABLE M001 KIMENDE KIKAKUI SYLLABLE M002 KAMENDE KIKAKUI" + - " SYLLABLE M003 KUMENDE KIKAKUI SYLLABLE M065 KEEMENDE KIKAKUI SYLLABLE M" + - "095 KEMENDE KIKAKUI SYLLABLE M076 KOOMENDE KIKAKUI SYLLABLE M048 KOMENDE" + - " KIKAKUI SYLLABLE M179 KUAMENDE KIKAKUI SYLLABLE M004 WIMENDE KIKAKUI SY" + - "LLABLE M005 WAMENDE KIKAKUI SYLLABLE M006 WUMENDE KIKAKUI SYLLABLE M126 " + - "WEEMENDE KIKAKUI SYLLABLE M118 WEMENDE KIKAKUI SYLLABLE M114 WOOMENDE KI" + - "KAKUI SYLLABLE M045 WOMENDE KIKAKUI SYLLABLE M194 WUIMENDE KIKAKUI SYLLA" + - "BLE M143 WEIMENDE KIKAKUI SYLLABLE M061 WVIMENDE KIKAKUI SYLLABLE M049 W" + - "VAMENDE KIKAKUI SYLLABLE M139 WVEMENDE KIKAKUI SYLLABLE M007 MINMENDE KI" + - "KAKUI SYLLABLE M008 MANMENDE KIKAKUI SYLLABLE M009 MUNMENDE KIKAKUI SYLL" + - "ABLE M059 MENMENDE KIKAKUI SYLLABLE M094 MONMENDE KIKAKUI SYLLABLE M154 " + - "MUANMENDE KIKAKUI SYLLABLE M189 MUENMENDE KIKAKUI SYLLABLE M010 BIMENDE " + - "KIKAKUI SYLLABLE M011 BAMENDE KIKAKUI SYLLABLE M012 BUMENDE KIKAKUI SYLL" + - "ABLE M150 BEEMENDE KIKAKUI SYLLABLE M097 BEMENDE KIKAKUI SYLLABLE M103 B" + - "OOMENDE KIKAKUI SYLLABLE M138 BOMENDE KIKAKUI SYLLABLE M013 IMENDE KIKAK" + - "UI SYLLABLE M014 AMENDE KIKAKUI SYLLABLE M015 UMENDE KIKAKUI SYLLABLE M1" + - "63 EEMENDE KIKAKUI SYLLABLE M100 EMENDE KIKAKUI SYLLABLE M165 OOMENDE KI" + - "KAKUI SYLLABLE M147 OMENDE KIKAKUI SYLLABLE M137 EIMENDE KIKAKUI SYLLABL" + - "E M131 INMENDE KIKAKUI SYLLABLE M135 INMENDE KIKAKUI SYLLABLE M195 ANMEN" + - "DE KIKAKUI SYLLABLE M178 ENMENDE KIKAKUI SYLLABLE M019 SIMENDE KIKAKUI S" + - "YLLABLE M020 SAMENDE KIKAKUI SYLLABLE M021 SUMENDE KIKAKUI SYLLABLE M162" + - " SEEMENDE KIKAKUI SYLLABLE M116 SEMENDE KIKAKUI SYLLABLE M136 SOOMENDE K" + - "IKAKUI SYLLABLE M079 SOMENDE KIKAKUI SYLLABLE M196 SIAMENDE KIKAKUI SYLL" + - "ABLE M025 LIMENDE KIKAKUI SYLLABLE M026 LAMENDE KIKAKUI SYLLABLE M027 LU" + - "MENDE KIKAKUI SYLLABLE M084 LEEMENDE KIKAKUI SYLLABLE M073 LEMENDE KIKAK" + - "UI SYLLABLE M054 LOOMENDE KIKAKUI SYLLABLE M153 LOMENDE KIKAKUI SYLLABLE" + - " M110 LONG LEMENDE KIKAKUI SYLLABLE M016 DIMENDE KIKAKUI SYLLABLE M017 D" + - "AMENDE KIKAKUI SYLLABLE M018 DUMENDE KIKAKUI SYLLABLE M089 DEEMENDE KIKA" + - "KUI SYLLABLE M180 DOOMENDE KIKAKUI SYLLABLE M181 DOMENDE KIKAKUI SYLLABL" + - "E M022 TIMENDE KIKAKUI SYLLABLE M023 TAMENDE KIKAKUI SYLLABLE M024 TUMEN" + - "DE KIKAKUI SYLLABLE M091 TEEMENDE KIKAKUI SYLLABLE M055 TEMENDE KIKAKUI " + - "SYLLABLE M104 TOOMENDE KIKAKUI SYLLABLE M069 TOMENDE KIKAKUI SYLLABLE M0" + - "28 JIMENDE KIKAKUI SYLLABLE M029 JAMENDE KIKAKUI SYLLABLE M030 JUMENDE K" + - "IKAKUI SYLLABLE M157 JEEMENDE KIKAKUI SYLLABLE M113 JEMENDE KIKAKUI SYLL" + - "ABLE M160 JOOMENDE KIKAKUI SYLLABLE M063 JOMENDE KIKAKUI SYLLABLE M175 L") + ("" + - "ONG JOMENDE KIKAKUI SYLLABLE M031 YIMENDE KIKAKUI SYLLABLE M032 YAMENDE " + - "KIKAKUI SYLLABLE M033 YUMENDE KIKAKUI SYLLABLE M109 YEEMENDE KIKAKUI SYL" + - "LABLE M080 YEMENDE KIKAKUI SYLLABLE M141 YOOMENDE KIKAKUI SYLLABLE M121 " + - "YOMENDE KIKAKUI SYLLABLE M034 FIMENDE KIKAKUI SYLLABLE M035 FAMENDE KIKA" + - "KUI SYLLABLE M036 FUMENDE KIKAKUI SYLLABLE M078 FEEMENDE KIKAKUI SYLLABL" + - "E M075 FEMENDE KIKAKUI SYLLABLE M133 FOOMENDE KIKAKUI SYLLABLE M088 FOME" + - "NDE KIKAKUI SYLLABLE M197 FUAMENDE KIKAKUI SYLLABLE M101 FANMENDE KIKAKU" + - "I SYLLABLE M037 NINMENDE KIKAKUI SYLLABLE M038 NANMENDE KIKAKUI SYLLABLE" + - " M039 NUNMENDE KIKAKUI SYLLABLE M117 NENMENDE KIKAKUI SYLLABLE M169 NONM" + - "ENDE KIKAKUI SYLLABLE M176 HIMENDE KIKAKUI SYLLABLE M041 HAMENDE KIKAKUI" + - " SYLLABLE M186 HUMENDE KIKAKUI SYLLABLE M040 HEEMENDE KIKAKUI SYLLABLE M" + - "096 HEMENDE KIKAKUI SYLLABLE M042 HOOMENDE KIKAKUI SYLLABLE M140 HOMENDE" + - " KIKAKUI SYLLABLE M083 HEEIMENDE KIKAKUI SYLLABLE M128 HOOUMENDE KIKAKUI" + - " SYLLABLE M053 HINMENDE KIKAKUI SYLLABLE M130 HANMENDE KIKAKUI SYLLABLE " + - "M087 HUNMENDE KIKAKUI SYLLABLE M052 HENMENDE KIKAKUI SYLLABLE M193 HONME" + - "NDE KIKAKUI SYLLABLE M046 HUANMENDE KIKAKUI SYLLABLE M090 NGGIMENDE KIKA" + - "KUI SYLLABLE M043 NGGAMENDE KIKAKUI SYLLABLE M082 NGGUMENDE KIKAKUI SYLL" + - "ABLE M115 NGGEEMENDE KIKAKUI SYLLABLE M146 NGGEMENDE KIKAKUI SYLLABLE M1" + - "56 NGGOOMENDE KIKAKUI SYLLABLE M120 NGGOMENDE KIKAKUI SYLLABLE M159 NGGA" + - "AMENDE KIKAKUI SYLLABLE M127 NGGUAMENDE KIKAKUI SYLLABLE M086 LONG NGGEM" + - "ENDE KIKAKUI SYLLABLE M106 LONG NGGOOMENDE KIKAKUI SYLLABLE M183 LONG NG" + - "GOMENDE KIKAKUI SYLLABLE M155 GIMENDE KIKAKUI SYLLABLE M111 GAMENDE KIKA" + - "KUI SYLLABLE M168 GUMENDE KIKAKUI SYLLABLE M190 GEEMENDE KIKAKUI SYLLABL" + - "E M166 GUEIMENDE KIKAKUI SYLLABLE M167 GUANMENDE KIKAKUI SYLLABLE M184 N" + - "GENMENDE KIKAKUI SYLLABLE M057 NGONMENDE KIKAKUI SYLLABLE M177 NGUANMEND" + - "E KIKAKUI SYLLABLE M068 PIMENDE KIKAKUI SYLLABLE M099 PAMENDE KIKAKUI SY" + - "LLABLE M050 PUMENDE KIKAKUI SYLLABLE M081 PEEMENDE KIKAKUI SYLLABLE M051" + - " PEMENDE KIKAKUI SYLLABLE M102 POOMENDE KIKAKUI SYLLABLE M066 POMENDE KI" + - "KAKUI SYLLABLE M145 MBIMENDE KIKAKUI SYLLABLE M062 MBAMENDE KIKAKUI SYLL" + - "ABLE M122 MBUMENDE KIKAKUI SYLLABLE M047 MBEEMENDE KIKAKUI SYLLABLE M188" + - " MBEEMENDE KIKAKUI SYLLABLE M072 MBEMENDE KIKAKUI SYLLABLE M172 MBOOMEND" + - "E KIKAKUI SYLLABLE M174 MBOMENDE KIKAKUI SYLLABLE M187 MBUUMENDE KIKAKUI" + - " SYLLABLE M161 LONG MBEMENDE KIKAKUI SYLLABLE M105 LONG MBOOMENDE KIKAKU" + - "I SYLLABLE M142 LONG MBOMENDE KIKAKUI SYLLABLE M132 KPIMENDE KIKAKUI SYL" + - "LABLE M092 KPAMENDE KIKAKUI SYLLABLE M074 KPUMENDE KIKAKUI SYLLABLE M044" + - " KPEEMENDE KIKAKUI SYLLABLE M108 KPEMENDE KIKAKUI SYLLABLE M112 KPOOMEND" + - "E KIKAKUI SYLLABLE M158 KPOMENDE KIKAKUI SYLLABLE M124 GBIMENDE KIKAKUI " + - "SYLLABLE M056 GBAMENDE KIKAKUI SYLLABLE M148 GBUMENDE KIKAKUI SYLLABLE M" + - "093 GBEEMENDE KIKAKUI SYLLABLE M107 GBEMENDE KIKAKUI SYLLABLE M071 GBOOM" + - "ENDE KIKAKUI SYLLABLE M070 GBOMENDE KIKAKUI SYLLABLE M171 RAMENDE KIKAKU" + - "I SYLLABLE M123 NDIMENDE KIKAKUI SYLLABLE M129 NDAMENDE KIKAKUI SYLLABLE" + - " M125 NDUMENDE KIKAKUI SYLLABLE M191 NDEEMENDE KIKAKUI SYLLABLE M119 NDE" + - "MENDE KIKAKUI SYLLABLE M067 NDOOMENDE KIKAKUI SYLLABLE M064 NDOMENDE KIK" + - "AKUI SYLLABLE M152 NJAMENDE KIKAKUI SYLLABLE M192 NJUMENDE KIKAKUI SYLLA" + - "BLE M149 NJEEMENDE KIKAKUI SYLLABLE M134 NJOOMENDE KIKAKUI SYLLABLE M182" + - " VIMENDE KIKAKUI SYLLABLE M185 VAMENDE KIKAKUI SYLLABLE M151 VUMENDE KIK" + - "AKUI SYLLABLE M173 VEEMENDE KIKAKUI SYLLABLE M085 VEMENDE KIKAKUI SYLLAB" + - "LE M144 VOOMENDE KIKAKUI SYLLABLE M077 VOMENDE KIKAKUI SYLLABLE M164 NYI" + - "NMENDE KIKAKUI SYLLABLE M058 NYANMENDE KIKAKUI SYLLABLE M170 NYUNMENDE K" + - "IKAKUI SYLLABLE M098 NYENMENDE KIKAKUI SYLLABLE M060 NYONMENDE KIKAKUI D" + - "IGIT ONEMENDE KIKAKUI DIGIT TWOMENDE KIKAKUI DIGIT THREEMENDE KIKAKUI DI" + - "GIT FOURMENDE KIKAKUI DIGIT FIVEMENDE KIKAKUI DIGIT SIXMENDE KIKAKUI DIG" + - "IT SEVENMENDE KIKAKUI DIGIT EIGHTMENDE KIKAKUI DIGIT NINEMENDE KIKAKUI C" + - "OMBINING NUMBER TEENSMENDE KIKAKUI COMBINING NUMBER TENSMENDE KIKAKUI CO" + - "MBINING NUMBER HUNDREDSMENDE KIKAKUI COMBINING NUMBER THOUSANDSMENDE KIK" + - "AKUI COMBINING NUMBER TEN THOUSANDSMENDE KIKAKUI COMBINING NUMBER HUNDRE" + - "D THOUSANDSMENDE KIKAKUI COMBINING NUMBER MILLIONSADLAM CAPITAL LETTER A" + - "LIFADLAM CAPITAL LETTER DAALIADLAM CAPITAL LETTER LAAMADLAM CAPITAL LETT" + - "ER MIIMADLAM CAPITAL LETTER BAADLAM CAPITAL LETTER SINNYIIYHEADLAM CAPIT" + - "AL LETTER PEADLAM CAPITAL LETTER BHEADLAM CAPITAL LETTER RAADLAM CAPITAL" + - " LETTER EADLAM CAPITAL LETTER FAADLAM CAPITAL LETTER IADLAM CAPITAL LETT" + - "ER OADLAM CAPITAL LETTER DHAADLAM CAPITAL LETTER YHEADLAM CAPITAL LETTER" + - " WAWADLAM CAPITAL LETTER NUNADLAM CAPITAL LETTER KAFADLAM CAPITAL LETTER" + - " YAADLAM CAPITAL LETTER UADLAM CAPITAL LETTER JIIMADLAM CAPITAL LETTER C") + ("" + - "HIADLAM CAPITAL LETTER HAADLAM CAPITAL LETTER QAAFADLAM CAPITAL LETTER G" + - "AADLAM CAPITAL LETTER NYAADLAM CAPITAL LETTER TUADLAM CAPITAL LETTER NHA" + - "ADLAM CAPITAL LETTER VAADLAM CAPITAL LETTER KHAADLAM CAPITAL LETTER GBEA" + - "DLAM CAPITAL LETTER ZALADLAM CAPITAL LETTER KPOADLAM CAPITAL LETTER SHAA" + - "DLAM SMALL LETTER ALIFADLAM SMALL LETTER DAALIADLAM SMALL LETTER LAAMADL" + - "AM SMALL LETTER MIIMADLAM SMALL LETTER BAADLAM SMALL LETTER SINNYIIYHEAD" + - "LAM SMALL LETTER PEADLAM SMALL LETTER BHEADLAM SMALL LETTER RAADLAM SMAL" + - "L LETTER EADLAM SMALL LETTER FAADLAM SMALL LETTER IADLAM SMALL LETTER OA" + - "DLAM SMALL LETTER DHAADLAM SMALL LETTER YHEADLAM SMALL LETTER WAWADLAM S" + - "MALL LETTER NUNADLAM SMALL LETTER KAFADLAM SMALL LETTER YAADLAM SMALL LE" + - "TTER UADLAM SMALL LETTER JIIMADLAM SMALL LETTER CHIADLAM SMALL LETTER HA" + - "ADLAM SMALL LETTER QAAFADLAM SMALL LETTER GAADLAM SMALL LETTER NYAADLAM " + - "SMALL LETTER TUADLAM SMALL LETTER NHAADLAM SMALL LETTER VAADLAM SMALL LE" + - "TTER KHAADLAM SMALL LETTER GBEADLAM SMALL LETTER ZALADLAM SMALL LETTER K" + - "POADLAM SMALL LETTER SHAADLAM ALIF LENGTHENERADLAM VOWEL LENGTHENERADLAM" + - " GEMINATION MARKADLAM HAMZAADLAM CONSONANT MODIFIERADLAM GEMINATE CONSON" + - "ANT MODIFIERADLAM NUKTAADLAM DIGIT ZEROADLAM DIGIT ONEADLAM DIGIT TWOADL" + - "AM DIGIT THREEADLAM DIGIT FOURADLAM DIGIT FIVEADLAM DIGIT SIXADLAM DIGIT" + - " SEVENADLAM DIGIT EIGHTADLAM DIGIT NINEADLAM INITIAL EXCLAMATION MARKADL" + - "AM INITIAL QUESTION MARKARABIC MATHEMATICAL ALEFARABIC MATHEMATICAL BEHA" + - "RABIC MATHEMATICAL JEEMARABIC MATHEMATICAL DALARABIC MATHEMATICAL WAWARA" + - "BIC MATHEMATICAL ZAINARABIC MATHEMATICAL HAHARABIC MATHEMATICAL TAHARABI" + - "C MATHEMATICAL YEHARABIC MATHEMATICAL KAFARABIC MATHEMATICAL LAMARABIC M" + - "ATHEMATICAL MEEMARABIC MATHEMATICAL NOONARABIC MATHEMATICAL SEENARABIC M" + - "ATHEMATICAL AINARABIC MATHEMATICAL FEHARABIC MATHEMATICAL SADARABIC MATH" + - "EMATICAL QAFARABIC MATHEMATICAL REHARABIC MATHEMATICAL SHEENARABIC MATHE" + - "MATICAL TEHARABIC MATHEMATICAL THEHARABIC MATHEMATICAL KHAHARABIC MATHEM" + - "ATICAL THALARABIC MATHEMATICAL DADARABIC MATHEMATICAL ZAHARABIC MATHEMAT" + - "ICAL GHAINARABIC MATHEMATICAL DOTLESS BEHARABIC MATHEMATICAL DOTLESS NOO" + - "NARABIC MATHEMATICAL DOTLESS FEHARABIC MATHEMATICAL DOTLESS QAFARABIC MA" + - "THEMATICAL INITIAL BEHARABIC MATHEMATICAL INITIAL JEEMARABIC MATHEMATICA" + - "L INITIAL HEHARABIC MATHEMATICAL INITIAL HAHARABIC MATHEMATICAL INITIAL " + - "YEHARABIC MATHEMATICAL INITIAL KAFARABIC MATHEMATICAL INITIAL LAMARABIC " + - "MATHEMATICAL INITIAL MEEMARABIC MATHEMATICAL INITIAL NOONARABIC MATHEMAT" + - "ICAL INITIAL SEENARABIC MATHEMATICAL INITIAL AINARABIC MATHEMATICAL INIT" + - "IAL FEHARABIC MATHEMATICAL INITIAL SADARABIC MATHEMATICAL INITIAL QAFARA" + - "BIC MATHEMATICAL INITIAL SHEENARABIC MATHEMATICAL INITIAL TEHARABIC MATH" + - "EMATICAL INITIAL THEHARABIC MATHEMATICAL INITIAL KHAHARABIC MATHEMATICAL" + - " INITIAL DADARABIC MATHEMATICAL INITIAL GHAINARABIC MATHEMATICAL TAILED " + - "JEEMARABIC MATHEMATICAL TAILED HAHARABIC MATHEMATICAL TAILED YEHARABIC M" + - "ATHEMATICAL TAILED LAMARABIC MATHEMATICAL TAILED NOONARABIC MATHEMATICAL" + - " TAILED SEENARABIC MATHEMATICAL TAILED AINARABIC MATHEMATICAL TAILED SAD" + - "ARABIC MATHEMATICAL TAILED QAFARABIC MATHEMATICAL TAILED SHEENARABIC MAT" + - "HEMATICAL TAILED KHAHARABIC MATHEMATICAL TAILED DADARABIC MATHEMATICAL T" + - "AILED GHAINARABIC MATHEMATICAL TAILED DOTLESS NOONARABIC MATHEMATICAL TA" + - "ILED DOTLESS QAFARABIC MATHEMATICAL STRETCHED BEHARABIC MATHEMATICAL STR" + - "ETCHED JEEMARABIC MATHEMATICAL STRETCHED HEHARABIC MATHEMATICAL STRETCHE" + - "D HAHARABIC MATHEMATICAL STRETCHED TAHARABIC MATHEMATICAL STRETCHED YEHA" + - "RABIC MATHEMATICAL STRETCHED KAFARABIC MATHEMATICAL STRETCHED MEEMARABIC" + - " MATHEMATICAL STRETCHED NOONARABIC MATHEMATICAL STRETCHED SEENARABIC MAT" + - "HEMATICAL STRETCHED AINARABIC MATHEMATICAL STRETCHED FEHARABIC MATHEMATI" + - "CAL STRETCHED SADARABIC MATHEMATICAL STRETCHED QAFARABIC MATHEMATICAL ST" + - "RETCHED SHEENARABIC MATHEMATICAL STRETCHED TEHARABIC MATHEMATICAL STRETC" + - "HED THEHARABIC MATHEMATICAL STRETCHED KHAHARABIC MATHEMATICAL STRETCHED " + - "DADARABIC MATHEMATICAL STRETCHED ZAHARABIC MATHEMATICAL STRETCHED GHAINA" + - "RABIC MATHEMATICAL STRETCHED DOTLESS BEHARABIC MATHEMATICAL STRETCHED DO" + - "TLESS FEHARABIC MATHEMATICAL LOOPED ALEFARABIC MATHEMATICAL LOOPED BEHAR" + - "ABIC MATHEMATICAL LOOPED JEEMARABIC MATHEMATICAL LOOPED DALARABIC MATHEM" + - "ATICAL LOOPED HEHARABIC MATHEMATICAL LOOPED WAWARABIC MATHEMATICAL LOOPE" + - "D ZAINARABIC MATHEMATICAL LOOPED HAHARABIC MATHEMATICAL LOOPED TAHARABIC" + - " MATHEMATICAL LOOPED YEHARABIC MATHEMATICAL LOOPED LAMARABIC MATHEMATICA" + - "L LOOPED MEEMARABIC MATHEMATICAL LOOPED NOONARABIC MATHEMATICAL LOOPED S" + - "EENARABIC MATHEMATICAL LOOPED AINARABIC MATHEMATICAL LOOPED FEHARABIC MA" + - "THEMATICAL LOOPED SADARABIC MATHEMATICAL LOOPED QAFARABIC MATHEMATICAL L") + ("" + - "OOPED REHARABIC MATHEMATICAL LOOPED SHEENARABIC MATHEMATICAL LOOPED TEHA" + - "RABIC MATHEMATICAL LOOPED THEHARABIC MATHEMATICAL LOOPED KHAHARABIC MATH" + - "EMATICAL LOOPED THALARABIC MATHEMATICAL LOOPED DADARABIC MATHEMATICAL LO" + - "OPED ZAHARABIC MATHEMATICAL LOOPED GHAINARABIC MATHEMATICAL DOUBLE-STRUC" + - "K BEHARABIC MATHEMATICAL DOUBLE-STRUCK JEEMARABIC MATHEMATICAL DOUBLE-ST" + - "RUCK DALARABIC MATHEMATICAL DOUBLE-STRUCK WAWARABIC MATHEMATICAL DOUBLE-" + - "STRUCK ZAINARABIC MATHEMATICAL DOUBLE-STRUCK HAHARABIC MATHEMATICAL DOUB" + - "LE-STRUCK TAHARABIC MATHEMATICAL DOUBLE-STRUCK YEHARABIC MATHEMATICAL DO" + - "UBLE-STRUCK LAMARABIC MATHEMATICAL DOUBLE-STRUCK MEEMARABIC MATHEMATICAL" + - " DOUBLE-STRUCK NOONARABIC MATHEMATICAL DOUBLE-STRUCK SEENARABIC MATHEMAT" + - "ICAL DOUBLE-STRUCK AINARABIC MATHEMATICAL DOUBLE-STRUCK FEHARABIC MATHEM" + - "ATICAL DOUBLE-STRUCK SADARABIC MATHEMATICAL DOUBLE-STRUCK QAFARABIC MATH" + - "EMATICAL DOUBLE-STRUCK REHARABIC MATHEMATICAL DOUBLE-STRUCK SHEENARABIC " + - "MATHEMATICAL DOUBLE-STRUCK TEHARABIC MATHEMATICAL DOUBLE-STRUCK THEHARAB" + - "IC MATHEMATICAL DOUBLE-STRUCK KHAHARABIC MATHEMATICAL DOUBLE-STRUCK THAL" + - "ARABIC MATHEMATICAL DOUBLE-STRUCK DADARABIC MATHEMATICAL DOUBLE-STRUCK Z" + - "AHARABIC MATHEMATICAL DOUBLE-STRUCK GHAINARABIC MATHEMATICAL OPERATOR ME" + - "EM WITH HAH WITH TATWEELARABIC MATHEMATICAL OPERATOR HAH WITH DALMAHJONG" + - " TILE EAST WINDMAHJONG TILE SOUTH WINDMAHJONG TILE WEST WINDMAHJONG TILE" + - " NORTH WINDMAHJONG TILE RED DRAGONMAHJONG TILE GREEN DRAGONMAHJONG TILE " + - "WHITE DRAGONMAHJONG TILE ONE OF CHARACTERSMAHJONG TILE TWO OF CHARACTERS" + - "MAHJONG TILE THREE OF CHARACTERSMAHJONG TILE FOUR OF CHARACTERSMAHJONG T" + - "ILE FIVE OF CHARACTERSMAHJONG TILE SIX OF CHARACTERSMAHJONG TILE SEVEN O" + - "F CHARACTERSMAHJONG TILE EIGHT OF CHARACTERSMAHJONG TILE NINE OF CHARACT" + - "ERSMAHJONG TILE ONE OF BAMBOOSMAHJONG TILE TWO OF BAMBOOSMAHJONG TILE TH" + - "REE OF BAMBOOSMAHJONG TILE FOUR OF BAMBOOSMAHJONG TILE FIVE OF BAMBOOSMA" + - "HJONG TILE SIX OF BAMBOOSMAHJONG TILE SEVEN OF BAMBOOSMAHJONG TILE EIGHT" + - " OF BAMBOOSMAHJONG TILE NINE OF BAMBOOSMAHJONG TILE ONE OF CIRCLESMAHJON" + - "G TILE TWO OF CIRCLESMAHJONG TILE THREE OF CIRCLESMAHJONG TILE FOUR OF C" + - "IRCLESMAHJONG TILE FIVE OF CIRCLESMAHJONG TILE SIX OF CIRCLESMAHJONG TIL" + - "E SEVEN OF CIRCLESMAHJONG TILE EIGHT OF CIRCLESMAHJONG TILE NINE OF CIRC" + - "LESMAHJONG TILE PLUMMAHJONG TILE ORCHIDMAHJONG TILE BAMBOOMAHJONG TILE C" + - "HRYSANTHEMUMMAHJONG TILE SPRINGMAHJONG TILE SUMMERMAHJONG TILE AUTUMNMAH" + - "JONG TILE WINTERMAHJONG TILE JOKERMAHJONG TILE BACKDOMINO TILE HORIZONTA" + - "L BACKDOMINO TILE HORIZONTAL-00-00DOMINO TILE HORIZONTAL-00-01DOMINO TIL" + - "E HORIZONTAL-00-02DOMINO TILE HORIZONTAL-00-03DOMINO TILE HORIZONTAL-00-" + - "04DOMINO TILE HORIZONTAL-00-05DOMINO TILE HORIZONTAL-00-06DOMINO TILE HO" + - "RIZONTAL-01-00DOMINO TILE HORIZONTAL-01-01DOMINO TILE HORIZONTAL-01-02DO" + - "MINO TILE HORIZONTAL-01-03DOMINO TILE HORIZONTAL-01-04DOMINO TILE HORIZO" + - "NTAL-01-05DOMINO TILE HORIZONTAL-01-06DOMINO TILE HORIZONTAL-02-00DOMINO" + - " TILE HORIZONTAL-02-01DOMINO TILE HORIZONTAL-02-02DOMINO TILE HORIZONTAL" + - "-02-03DOMINO TILE HORIZONTAL-02-04DOMINO TILE HORIZONTAL-02-05DOMINO TIL" + - "E HORIZONTAL-02-06DOMINO TILE HORIZONTAL-03-00DOMINO TILE HORIZONTAL-03-" + - "01DOMINO TILE HORIZONTAL-03-02DOMINO TILE HORIZONTAL-03-03DOMINO TILE HO" + - "RIZONTAL-03-04DOMINO TILE HORIZONTAL-03-05DOMINO TILE HORIZONTAL-03-06DO" + - "MINO TILE HORIZONTAL-04-00DOMINO TILE HORIZONTAL-04-01DOMINO TILE HORIZO" + - "NTAL-04-02DOMINO TILE HORIZONTAL-04-03DOMINO TILE HORIZONTAL-04-04DOMINO" + - " TILE HORIZONTAL-04-05DOMINO TILE HORIZONTAL-04-06DOMINO TILE HORIZONTAL" + - "-05-00DOMINO TILE HORIZONTAL-05-01DOMINO TILE HORIZONTAL-05-02DOMINO TIL" + - "E HORIZONTAL-05-03DOMINO TILE HORIZONTAL-05-04DOMINO TILE HORIZONTAL-05-" + - "05DOMINO TILE HORIZONTAL-05-06DOMINO TILE HORIZONTAL-06-00DOMINO TILE HO" + - "RIZONTAL-06-01DOMINO TILE HORIZONTAL-06-02DOMINO TILE HORIZONTAL-06-03DO" + - "MINO TILE HORIZONTAL-06-04DOMINO TILE HORIZONTAL-06-05DOMINO TILE HORIZO" + - "NTAL-06-06DOMINO TILE VERTICAL BACKDOMINO TILE VERTICAL-00-00DOMINO TILE" + - " VERTICAL-00-01DOMINO TILE VERTICAL-00-02DOMINO TILE VERTICAL-00-03DOMIN" + - "O TILE VERTICAL-00-04DOMINO TILE VERTICAL-00-05DOMINO TILE VERTICAL-00-0" + - "6DOMINO TILE VERTICAL-01-00DOMINO TILE VERTICAL-01-01DOMINO TILE VERTICA" + - "L-01-02DOMINO TILE VERTICAL-01-03DOMINO TILE VERTICAL-01-04DOMINO TILE V" + - "ERTICAL-01-05DOMINO TILE VERTICAL-01-06DOMINO TILE VERTICAL-02-00DOMINO " + - "TILE VERTICAL-02-01DOMINO TILE VERTICAL-02-02DOMINO TILE VERTICAL-02-03D" + - "OMINO TILE VERTICAL-02-04DOMINO TILE VERTICAL-02-05DOMINO TILE VERTICAL-" + - "02-06DOMINO TILE VERTICAL-03-00DOMINO TILE VERTICAL-03-01DOMINO TILE VER" + - "TICAL-03-02DOMINO TILE VERTICAL-03-03DOMINO TILE VERTICAL-03-04DOMINO TI" + - "LE VERTICAL-03-05DOMINO TILE VERTICAL-03-06DOMINO TILE VERTICAL-04-00DOM") + ("" + - "INO TILE VERTICAL-04-01DOMINO TILE VERTICAL-04-02DOMINO TILE VERTICAL-04" + - "-03DOMINO TILE VERTICAL-04-04DOMINO TILE VERTICAL-04-05DOMINO TILE VERTI" + - "CAL-04-06DOMINO TILE VERTICAL-05-00DOMINO TILE VERTICAL-05-01DOMINO TILE" + - " VERTICAL-05-02DOMINO TILE VERTICAL-05-03DOMINO TILE VERTICAL-05-04DOMIN" + - "O TILE VERTICAL-05-05DOMINO TILE VERTICAL-05-06DOMINO TILE VERTICAL-06-0" + - "0DOMINO TILE VERTICAL-06-01DOMINO TILE VERTICAL-06-02DOMINO TILE VERTICA" + - "L-06-03DOMINO TILE VERTICAL-06-04DOMINO TILE VERTICAL-06-05DOMINO TILE V" + - "ERTICAL-06-06PLAYING CARD BACKPLAYING CARD ACE OF SPADESPLAYING CARD TWO" + - " OF SPADESPLAYING CARD THREE OF SPADESPLAYING CARD FOUR OF SPADESPLAYING" + - " CARD FIVE OF SPADESPLAYING CARD SIX OF SPADESPLAYING CARD SEVEN OF SPAD" + - "ESPLAYING CARD EIGHT OF SPADESPLAYING CARD NINE OF SPADESPLAYING CARD TE" + - "N OF SPADESPLAYING CARD JACK OF SPADESPLAYING CARD KNIGHT OF SPADESPLAYI" + - "NG CARD QUEEN OF SPADESPLAYING CARD KING OF SPADESPLAYING CARD ACE OF HE" + - "ARTSPLAYING CARD TWO OF HEARTSPLAYING CARD THREE OF HEARTSPLAYING CARD F" + - "OUR OF HEARTSPLAYING CARD FIVE OF HEARTSPLAYING CARD SIX OF HEARTSPLAYIN" + - "G CARD SEVEN OF HEARTSPLAYING CARD EIGHT OF HEARTSPLAYING CARD NINE OF H" + - "EARTSPLAYING CARD TEN OF HEARTSPLAYING CARD JACK OF HEARTSPLAYING CARD K" + - "NIGHT OF HEARTSPLAYING CARD QUEEN OF HEARTSPLAYING CARD KING OF HEARTSPL" + - "AYING CARD RED JOKERPLAYING CARD ACE OF DIAMONDSPLAYING CARD TWO OF DIAM" + - "ONDSPLAYING CARD THREE OF DIAMONDSPLAYING CARD FOUR OF DIAMONDSPLAYING C" + - "ARD FIVE OF DIAMONDSPLAYING CARD SIX OF DIAMONDSPLAYING CARD SEVEN OF DI" + - "AMONDSPLAYING CARD EIGHT OF DIAMONDSPLAYING CARD NINE OF DIAMONDSPLAYING" + - " CARD TEN OF DIAMONDSPLAYING CARD JACK OF DIAMONDSPLAYING CARD KNIGHT OF" + - " DIAMONDSPLAYING CARD QUEEN OF DIAMONDSPLAYING CARD KING OF DIAMONDSPLAY" + - "ING CARD BLACK JOKERPLAYING CARD ACE OF CLUBSPLAYING CARD TWO OF CLUBSPL" + - "AYING CARD THREE OF CLUBSPLAYING CARD FOUR OF CLUBSPLAYING CARD FIVE OF " + - "CLUBSPLAYING CARD SIX OF CLUBSPLAYING CARD SEVEN OF CLUBSPLAYING CARD EI" + - "GHT OF CLUBSPLAYING CARD NINE OF CLUBSPLAYING CARD TEN OF CLUBSPLAYING C" + - "ARD JACK OF CLUBSPLAYING CARD KNIGHT OF CLUBSPLAYING CARD QUEEN OF CLUBS" + - "PLAYING CARD KING OF CLUBSPLAYING CARD WHITE JOKERPLAYING CARD FOOLPLAYI" + - "NG CARD TRUMP-1PLAYING CARD TRUMP-2PLAYING CARD TRUMP-3PLAYING CARD TRUM" + - "P-4PLAYING CARD TRUMP-5PLAYING CARD TRUMP-6PLAYING CARD TRUMP-7PLAYING C" + - "ARD TRUMP-8PLAYING CARD TRUMP-9PLAYING CARD TRUMP-10PLAYING CARD TRUMP-1" + - "1PLAYING CARD TRUMP-12PLAYING CARD TRUMP-13PLAYING CARD TRUMP-14PLAYING " + - "CARD TRUMP-15PLAYING CARD TRUMP-16PLAYING CARD TRUMP-17PLAYING CARD TRUM" + - "P-18PLAYING CARD TRUMP-19PLAYING CARD TRUMP-20PLAYING CARD TRUMP-21DIGIT" + - " ZERO FULL STOPDIGIT ZERO COMMADIGIT ONE COMMADIGIT TWO COMMADIGIT THREE" + - " COMMADIGIT FOUR COMMADIGIT FIVE COMMADIGIT SIX COMMADIGIT SEVEN COMMADI" + - "GIT EIGHT COMMADIGIT NINE COMMADINGBAT CIRCLED SANS-SERIF DIGIT ZERODING" + - "BAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZEROPARENTHESIZED LATIN CAPITAL LE" + - "TTER APARENTHESIZED LATIN CAPITAL LETTER BPARENTHESIZED LATIN CAPITAL LE" + - "TTER CPARENTHESIZED LATIN CAPITAL LETTER DPARENTHESIZED LATIN CAPITAL LE" + - "TTER EPARENTHESIZED LATIN CAPITAL LETTER FPARENTHESIZED LATIN CAPITAL LE" + - "TTER GPARENTHESIZED LATIN CAPITAL LETTER HPARENTHESIZED LATIN CAPITAL LE" + - "TTER IPARENTHESIZED LATIN CAPITAL LETTER JPARENTHESIZED LATIN CAPITAL LE" + - "TTER KPARENTHESIZED LATIN CAPITAL LETTER LPARENTHESIZED LATIN CAPITAL LE" + - "TTER MPARENTHESIZED LATIN CAPITAL LETTER NPARENTHESIZED LATIN CAPITAL LE" + - "TTER OPARENTHESIZED LATIN CAPITAL LETTER PPARENTHESIZED LATIN CAPITAL LE" + - "TTER QPARENTHESIZED LATIN CAPITAL LETTER RPARENTHESIZED LATIN CAPITAL LE" + - "TTER SPARENTHESIZED LATIN CAPITAL LETTER TPARENTHESIZED LATIN CAPITAL LE" + - "TTER UPARENTHESIZED LATIN CAPITAL LETTER VPARENTHESIZED LATIN CAPITAL LE" + - "TTER WPARENTHESIZED LATIN CAPITAL LETTER XPARENTHESIZED LATIN CAPITAL LE" + - "TTER YPARENTHESIZED LATIN CAPITAL LETTER ZTORTOISE SHELL BRACKETED LATIN" + - " CAPITAL LETTER SCIRCLED ITALIC LATIN CAPITAL LETTER CCIRCLED ITALIC LAT" + - "IN CAPITAL LETTER RCIRCLED CDCIRCLED WZSQUARED LATIN CAPITAL LETTER ASQU" + - "ARED LATIN CAPITAL LETTER BSQUARED LATIN CAPITAL LETTER CSQUARED LATIN C" + - "APITAL LETTER DSQUARED LATIN CAPITAL LETTER ESQUARED LATIN CAPITAL LETTE" + - "R FSQUARED LATIN CAPITAL LETTER GSQUARED LATIN CAPITAL LETTER HSQUARED L" + - "ATIN CAPITAL LETTER ISQUARED LATIN CAPITAL LETTER JSQUARED LATIN CAPITAL" + - " LETTER KSQUARED LATIN CAPITAL LETTER LSQUARED LATIN CAPITAL LETTER MSQU" + - "ARED LATIN CAPITAL LETTER NSQUARED LATIN CAPITAL LETTER OSQUARED LATIN C" + - "APITAL LETTER PSQUARED LATIN CAPITAL LETTER QSQUARED LATIN CAPITAL LETTE" + - "R RSQUARED LATIN CAPITAL LETTER SSQUARED LATIN CAPITAL LETTER TSQUARED L" + - "ATIN CAPITAL LETTER USQUARED LATIN CAPITAL LETTER VSQUARED LATIN CAPITAL") + ("" + - " LETTER WSQUARED LATIN CAPITAL LETTER XSQUARED LATIN CAPITAL LETTER YSQU" + - "ARED LATIN CAPITAL LETTER ZSQUARED HVSQUARED MVSQUARED SDSQUARED SSSQUAR" + - "ED PPVSQUARED WCNEGATIVE CIRCLED LATIN CAPITAL LETTER ANEGATIVE CIRCLED " + - "LATIN CAPITAL LETTER BNEGATIVE CIRCLED LATIN CAPITAL LETTER CNEGATIVE CI" + - "RCLED LATIN CAPITAL LETTER DNEGATIVE CIRCLED LATIN CAPITAL LETTER ENEGAT" + - "IVE CIRCLED LATIN CAPITAL LETTER FNEGATIVE CIRCLED LATIN CAPITAL LETTER " + - "GNEGATIVE CIRCLED LATIN CAPITAL LETTER HNEGATIVE CIRCLED LATIN CAPITAL L" + - "ETTER INEGATIVE CIRCLED LATIN CAPITAL LETTER JNEGATIVE CIRCLED LATIN CAP" + - "ITAL LETTER KNEGATIVE CIRCLED LATIN CAPITAL LETTER LNEGATIVE CIRCLED LAT" + - "IN CAPITAL LETTER MNEGATIVE CIRCLED LATIN CAPITAL LETTER NNEGATIVE CIRCL" + - "ED LATIN CAPITAL LETTER ONEGATIVE CIRCLED LATIN CAPITAL LETTER PNEGATIVE" + - " CIRCLED LATIN CAPITAL LETTER QNEGATIVE CIRCLED LATIN CAPITAL LETTER RNE" + - "GATIVE CIRCLED LATIN CAPITAL LETTER SNEGATIVE CIRCLED LATIN CAPITAL LETT" + - "ER TNEGATIVE CIRCLED LATIN CAPITAL LETTER UNEGATIVE CIRCLED LATIN CAPITA" + - "L LETTER VNEGATIVE CIRCLED LATIN CAPITAL LETTER WNEGATIVE CIRCLED LATIN " + - "CAPITAL LETTER XNEGATIVE CIRCLED LATIN CAPITAL LETTER YNEGATIVE CIRCLED " + - "LATIN CAPITAL LETTER ZRAISED MC SIGNRAISED MD SIGNNEGATIVE SQUARED LATIN" + - " CAPITAL LETTER ANEGATIVE SQUARED LATIN CAPITAL LETTER BNEGATIVE SQUARED" + - " LATIN CAPITAL LETTER CNEGATIVE SQUARED LATIN CAPITAL LETTER DNEGATIVE S" + - "QUARED LATIN CAPITAL LETTER ENEGATIVE SQUARED LATIN CAPITAL LETTER FNEGA" + - "TIVE SQUARED LATIN CAPITAL LETTER GNEGATIVE SQUARED LATIN CAPITAL LETTER" + - " HNEGATIVE SQUARED LATIN CAPITAL LETTER INEGATIVE SQUARED LATIN CAPITAL " + - "LETTER JNEGATIVE SQUARED LATIN CAPITAL LETTER KNEGATIVE SQUARED LATIN CA" + - "PITAL LETTER LNEGATIVE SQUARED LATIN CAPITAL LETTER MNEGATIVE SQUARED LA" + - "TIN CAPITAL LETTER NNEGATIVE SQUARED LATIN CAPITAL LETTER ONEGATIVE SQUA" + - "RED LATIN CAPITAL LETTER PNEGATIVE SQUARED LATIN CAPITAL LETTER QNEGATIV" + - "E SQUARED LATIN CAPITAL LETTER RNEGATIVE SQUARED LATIN CAPITAL LETTER SN" + - "EGATIVE SQUARED LATIN CAPITAL LETTER TNEGATIVE SQUARED LATIN CAPITAL LET" + - "TER UNEGATIVE SQUARED LATIN CAPITAL LETTER VNEGATIVE SQUARED LATIN CAPIT" + - "AL LETTER WNEGATIVE SQUARED LATIN CAPITAL LETTER XNEGATIVE SQUARED LATIN" + - " CAPITAL LETTER YNEGATIVE SQUARED LATIN CAPITAL LETTER ZCROSSED NEGATIVE" + - " SQUARED LATIN CAPITAL LETTER PNEGATIVE SQUARED ICNEGATIVE SQUARED PANEG" + - "ATIVE SQUARED SANEGATIVE SQUARED ABNEGATIVE SQUARED WCSQUARE DJSQUARED C" + - "LSQUARED COOLSQUARED FREESQUARED IDSQUARED NEWSQUARED NGSQUARED OKSQUARE" + - "D SOSSQUARED UP WITH EXCLAMATION MARKSQUARED VSSQUARED THREE DSQUARED SE" + - "COND SCREENSQUARED TWO KSQUARED FOUR KSQUARED EIGHT KSQUARED FIVE POINT " + - "ONESQUARED SEVEN POINT ONESQUARED TWENTY-TWO POINT TWOSQUARED SIXTY PSQU" + - "ARED ONE HUNDRED TWENTY PSQUARED LATIN SMALL LETTER DSQUARED HCSQUARED H" + - "DRSQUARED HI-RESSQUARED LOSSLESSSQUARED SHVSQUARED UHDSQUARED VODREGIONA" + - "L INDICATOR SYMBOL LETTER AREGIONAL INDICATOR SYMBOL LETTER BREGIONAL IN" + - "DICATOR SYMBOL LETTER CREGIONAL INDICATOR SYMBOL LETTER DREGIONAL INDICA" + - "TOR SYMBOL LETTER EREGIONAL INDICATOR SYMBOL LETTER FREGIONAL INDICATOR " + - "SYMBOL LETTER GREGIONAL INDICATOR SYMBOL LETTER HREGIONAL INDICATOR SYMB" + - "OL LETTER IREGIONAL INDICATOR SYMBOL LETTER JREGIONAL INDICATOR SYMBOL L" + - "ETTER KREGIONAL INDICATOR SYMBOL LETTER LREGIONAL INDICATOR SYMBOL LETTE" + - "R MREGIONAL INDICATOR SYMBOL LETTER NREGIONAL INDICATOR SYMBOL LETTER OR" + - "EGIONAL INDICATOR SYMBOL LETTER PREGIONAL INDICATOR SYMBOL LETTER QREGIO" + - "NAL INDICATOR SYMBOL LETTER RREGIONAL INDICATOR SYMBOL LETTER SREGIONAL " + - "INDICATOR SYMBOL LETTER TREGIONAL INDICATOR SYMBOL LETTER UREGIONAL INDI" + - "CATOR SYMBOL LETTER VREGIONAL INDICATOR SYMBOL LETTER WREGIONAL INDICATO" + - "R SYMBOL LETTER XREGIONAL INDICATOR SYMBOL LETTER YREGIONAL INDICATOR SY" + - "MBOL LETTER ZSQUARE HIRAGANA HOKASQUARED KATAKANA KOKOSQUARED KATAKANA S" + - "ASQUARED CJK UNIFIED IDEOGRAPH-624BSQUARED CJK UNIFIED IDEOGRAPH-5B57SQU" + - "ARED CJK UNIFIED IDEOGRAPH-53CCSQUARED KATAKANA DESQUARED CJK UNIFIED ID" + - "EOGRAPH-4E8CSQUARED CJK UNIFIED IDEOGRAPH-591ASQUARED CJK UNIFIED IDEOGR" + - "APH-89E3SQUARED CJK UNIFIED IDEOGRAPH-5929SQUARED CJK UNIFIED IDEOGRAPH-" + - "4EA4SQUARED CJK UNIFIED IDEOGRAPH-6620SQUARED CJK UNIFIED IDEOGRAPH-7121" + - "SQUARED CJK UNIFIED IDEOGRAPH-6599SQUARED CJK UNIFIED IDEOGRAPH-524DSQUA" + - "RED CJK UNIFIED IDEOGRAPH-5F8CSQUARED CJK UNIFIED IDEOGRAPH-518DSQUARED " + - "CJK UNIFIED IDEOGRAPH-65B0SQUARED CJK UNIFIED IDEOGRAPH-521DSQUARED CJK " + - "UNIFIED IDEOGRAPH-7D42SQUARED CJK UNIFIED IDEOGRAPH-751FSQUARED CJK UNIF" + - "IED IDEOGRAPH-8CA9SQUARED CJK UNIFIED IDEOGRAPH-58F0SQUARED CJK UNIFIED " + - "IDEOGRAPH-5439SQUARED CJK UNIFIED IDEOGRAPH-6F14SQUARED CJK UNIFIED IDEO" + - "GRAPH-6295SQUARED CJK UNIFIED IDEOGRAPH-6355SQUARED CJK UNIFIED IDEOGRAP") + ("" + - "H-4E00SQUARED CJK UNIFIED IDEOGRAPH-4E09SQUARED CJK UNIFIED IDEOGRAPH-90" + - "4ASQUARED CJK UNIFIED IDEOGRAPH-5DE6SQUARED CJK UNIFIED IDEOGRAPH-4E2DSQ" + - "UARED CJK UNIFIED IDEOGRAPH-53F3SQUARED CJK UNIFIED IDEOGRAPH-6307SQUARE" + - "D CJK UNIFIED IDEOGRAPH-8D70SQUARED CJK UNIFIED IDEOGRAPH-6253SQUARED CJ" + - "K UNIFIED IDEOGRAPH-7981SQUARED CJK UNIFIED IDEOGRAPH-7A7ASQUARED CJK UN" + - "IFIED IDEOGRAPH-5408SQUARED CJK UNIFIED IDEOGRAPH-6E80SQUARED CJK UNIFIE" + - "D IDEOGRAPH-6709SQUARED CJK UNIFIED IDEOGRAPH-6708SQUARED CJK UNIFIED ID" + - "EOGRAPH-7533SQUARED CJK UNIFIED IDEOGRAPH-5272SQUARED CJK UNIFIED IDEOGR" + - "APH-55B6SQUARED CJK UNIFIED IDEOGRAPH-914DTORTOISE SHELL BRACKETED CJK U" + - "NIFIED IDEOGRAPH-672CTORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09" + - "TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8CTORTOISE SHELL BRACKE" + - "TED CJK UNIFIED IDEOGRAPH-5B89TORTOISE SHELL BRACKETED CJK UNIFIED IDEOG" + - "RAPH-70B9TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253TORTOISE SHE" + - "LL BRACKETED CJK UNIFIED IDEOGRAPH-76D7TORTOISE SHELL BRACKETED CJK UNIF" + - "IED IDEOGRAPH-52DDTORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557CIR" + - "CLED IDEOGRAPH ADVANTAGECIRCLED IDEOGRAPH ACCEPTCYCLONEFOGGYCLOSED UMBRE" + - "LLANIGHT WITH STARSSUNRISE OVER MOUNTAINSSUNRISECITYSCAPE AT DUSKSUNSET " + - "OVER BUILDINGSRAINBOWBRIDGE AT NIGHTWATER WAVEVOLCANOMILKY WAYEARTH GLOB" + - "E EUROPE-AFRICAEARTH GLOBE AMERICASEARTH GLOBE ASIA-AUSTRALIAGLOBE WITH " + - "MERIDIANSNEW MOON SYMBOLWAXING CRESCENT MOON SYMBOLFIRST QUARTER MOON SY" + - "MBOLWAXING GIBBOUS MOON SYMBOLFULL MOON SYMBOLWANING GIBBOUS MOON SYMBOL" + - "LAST QUARTER MOON SYMBOLWANING CRESCENT MOON SYMBOLCRESCENT MOONNEW MOON" + - " WITH FACEFIRST QUARTER MOON WITH FACELAST QUARTER MOON WITH FACEFULL MO" + - "ON WITH FACESUN WITH FACEGLOWING STARSHOOTING STARTHERMOMETERBLACK DROPL" + - "ETWHITE SUNWHITE SUN WITH SMALL CLOUDWHITE SUN BEHIND CLOUDWHITE SUN BEH" + - "IND CLOUD WITH RAINCLOUD WITH RAINCLOUD WITH SNOWCLOUD WITH LIGHTNINGCLO" + - "UD WITH TORNADOFOGWIND BLOWING FACEHOT DOGTACOBURRITOCHESTNUTSEEDLINGEVE" + - "RGREEN TREEDECIDUOUS TREEPALM TREECACTUSHOT PEPPERTULIPCHERRY BLOSSOMROS" + - "EHIBISCUSSUNFLOWERBLOSSOMEAR OF MAIZEEAR OF RICEHERBFOUR LEAF CLOVERMAPL" + - "E LEAFFALLEN LEAFLEAF FLUTTERING IN WINDMUSHROOMTOMATOAUBERGINEGRAPESMEL" + - "ONWATERMELONTANGERINELEMONBANANAPINEAPPLERED APPLEGREEN APPLEPEARPEACHCH" + - "ERRIESSTRAWBERRYHAMBURGERSLICE OF PIZZAMEAT ON BONEPOULTRY LEGRICE CRACK" + - "ERRICE BALLCOOKED RICECURRY AND RICESTEAMING BOWLSPAGHETTIBREADFRENCH FR" + - "IESROASTED SWEET POTATODANGOODENSUSHIFRIED SHRIMPFISH CAKE WITH SWIRL DE" + - "SIGNSOFT ICE CREAMSHAVED ICEICE CREAMDOUGHNUTCOOKIECHOCOLATE BARCANDYLOL" + - "LIPOPCUSTARDHONEY POTSHORTCAKEBENTO BOXPOT OF FOODCOOKINGFORK AND KNIFET" + - "EACUP WITHOUT HANDLESAKE BOTTLE AND CUPWINE GLASSCOCKTAIL GLASSTROPICAL " + - "DRINKBEER MUGCLINKING BEER MUGSBABY BOTTLEFORK AND KNIFE WITH PLATEBOTTL" + - "E WITH POPPING CORKPOPCORNRIBBONWRAPPED PRESENTBIRTHDAY CAKEJACK-O-LANTE" + - "RNCHRISTMAS TREEFATHER CHRISTMASFIREWORKSFIREWORK SPARKLERBALLOONPARTY P" + - "OPPERCONFETTI BALLTANABATA TREECROSSED FLAGSPINE DECORATIONJAPANESE DOLL" + - "SCARP STREAMERWIND CHIMEMOON VIEWING CEREMONYSCHOOL SATCHELGRADUATION CA" + - "PHEART WITH TIP ON THE LEFTBOUQUET OF FLOWERSMILITARY MEDALREMINDER RIBB" + - "ONMUSICAL KEYBOARD WITH JACKSSTUDIO MICROPHONELEVEL SLIDERCONTROL KNOBSB" + - "EAMED ASCENDING MUSICAL NOTESBEAMED DESCENDING MUSICAL NOTESFILM FRAMESA" + - "DMISSION TICKETSCAROUSEL HORSEFERRIS WHEELROLLER COASTERFISHING POLE AND" + - " FISHMICROPHONEMOVIE CAMERACINEMAHEADPHONEARTIST PALETTETOP HATCIRCUS TE" + - "NTTICKETCLAPPER BOARDPERFORMING ARTSVIDEO GAMEDIRECT HITSLOT MACHINEBILL" + - "IARDSGAME DIEBOWLINGFLOWER PLAYING CARDSMUSICAL NOTEMULTIPLE MUSICAL NOT" + - "ESSAXOPHONEGUITARMUSICAL KEYBOARDTRUMPETVIOLINMUSICAL SCORERUNNING SHIRT" + - " WITH SASHTENNIS RACQUET AND BALLSKI AND SKI BOOTBASKETBALL AND HOOPCHEQ" + - "UERED FLAGSNOWBOARDERRUNNERSURFERSPORTS MEDALTROPHYHORSE RACINGAMERICAN " + - "FOOTBALLRUGBY FOOTBALLSWIMMERWEIGHT LIFTERGOLFERRACING MOTORCYCLERACING " + - "CARCRICKET BAT AND BALLVOLLEYBALLFIELD HOCKEY STICK AND BALLICE HOCKEY S" + - "TICK AND PUCKTABLE TENNIS PADDLE AND BALLSNOW CAPPED MOUNTAINCAMPINGBEAC" + - "H WITH UMBRELLABUILDING CONSTRUCTIONHOUSE BUILDINGSCITYSCAPEDERELICT HOU" + - "SE BUILDINGCLASSICAL BUILDINGDESERTDESERT ISLANDNATIONAL PARKSTADIUMHOUS" + - "E BUILDINGHOUSE WITH GARDENOFFICE BUILDINGJAPANESE POST OFFICEEUROPEAN P" + - "OST OFFICEHOSPITALBANKAUTOMATED TELLER MACHINEHOTELLOVE HOTELCONVENIENCE" + - " STORESCHOOLDEPARTMENT STOREFACTORYIZAKAYA LANTERNJAPANESE CASTLEEUROPEA" + - "N CASTLEWHITE PENNANTBLACK PENNANTWAVING WHITE FLAGWAVING BLACK FLAGROSE" + - "TTEBLACK ROSETTELABELBADMINTON RACQUET AND SHUTTLECOCKBOW AND ARROWAMPHO" + - "RAEMOJI MODIFIER FITZPATRICK TYPE-1-2EMOJI MODIFIER FITZPATRICK TYPE-3EM" + - "OJI MODIFIER FITZPATRICK TYPE-4EMOJI MODIFIER FITZPATRICK TYPE-5EMOJI MO") + ("" + - "DIFIER FITZPATRICK TYPE-6RATMOUSEOXWATER BUFFALOCOWTIGERLEOPARDRABBITCAT" + - "DRAGONCROCODILEWHALESNAILSNAKEHORSERAMGOATSHEEPMONKEYROOSTERCHICKENDOGPI" + - "GBOARELEPHANTOCTOPUSSPIRAL SHELLBUGANTHONEYBEELADY BEETLEFISHTROPICAL FI" + - "SHBLOWFISHTURTLEHATCHING CHICKBABY CHICKFRONT-FACING BABY CHICKBIRDPENGU" + - "INKOALAPOODLEDROMEDARY CAMELBACTRIAN CAMELDOLPHINMOUSE FACECOW FACETIGER" + - " FACERABBIT FACECAT FACEDRAGON FACESPOUTING WHALEHORSE FACEMONKEY FACEDO" + - "G FACEPIG FACEFROG FACEHAMSTER FACEWOLF FACEBEAR FACEPANDA FACEPIG NOSEP" + - "AW PRINTSCHIPMUNKEYESEYEEARNOSEMOUTHTONGUEWHITE UP POINTING BACKHAND IND" + - "EXWHITE DOWN POINTING BACKHAND INDEXWHITE LEFT POINTING BACKHAND INDEXWH" + - "ITE RIGHT POINTING BACKHAND INDEXFISTED HAND SIGNWAVING HAND SIGNOK HAND" + - " SIGNTHUMBS UP SIGNTHUMBS DOWN SIGNCLAPPING HANDS SIGNOPEN HANDS SIGNCRO" + - "WNWOMANS HATEYEGLASSESNECKTIET-SHIRTJEANSDRESSKIMONOBIKINIWOMANS CLOTHES" + - "PURSEHANDBAGPOUCHMANS SHOEATHLETIC SHOEHIGH-HEELED SHOEWOMANS SANDALWOMA" + - "NS BOOTSFOOTPRINTSBUST IN SILHOUETTEBUSTS IN SILHOUETTEBOYGIRLMANWOMANFA" + - "MILYMAN AND WOMAN HOLDING HANDSTWO MEN HOLDING HANDSTWO WOMEN HOLDING HA" + - "NDSPOLICE OFFICERWOMAN WITH BUNNY EARSBRIDE WITH VEILPERSON WITH BLOND H" + - "AIRMAN WITH GUA PI MAOMAN WITH TURBANOLDER MANOLDER WOMANBABYCONSTRUCTIO" + - "N WORKERPRINCESSJAPANESE OGREJAPANESE GOBLINGHOSTBABY ANGELEXTRATERRESTR" + - "IAL ALIENALIEN MONSTERIMPSKULLINFORMATION DESK PERSONGUARDSMANDANCERLIPS" + - "TICKNAIL POLISHFACE MASSAGEHAIRCUTBARBER POLESYRINGEPILLKISS MARKLOVE LE" + - "TTERRINGGEM STONEKISSBOUQUETCOUPLE WITH HEARTWEDDINGBEATING HEARTBROKEN " + - "HEARTTWO HEARTSSPARKLING HEARTGROWING HEARTHEART WITH ARROWBLUE HEARTGRE" + - "EN HEARTYELLOW HEARTPURPLE HEARTHEART WITH RIBBONREVOLVING HEARTSHEART D" + - "ECORATIONDIAMOND SHAPE WITH A DOT INSIDEELECTRIC LIGHT BULBANGER SYMBOLB" + - "OMBSLEEPING SYMBOLCOLLISION SYMBOLSPLASHING SWEAT SYMBOLDROPLETDASH SYMB" + - "OLPILE OF POOFLEXED BICEPSDIZZY SYMBOLSPEECH BALLOONTHOUGHT BALLOONWHITE" + - " FLOWERHUNDRED POINTS SYMBOLMONEY BAGCURRENCY EXCHANGEHEAVY DOLLAR SIGNC" + - "REDIT CARDBANKNOTE WITH YEN SIGNBANKNOTE WITH DOLLAR SIGNBANKNOTE WITH E" + - "URO SIGNBANKNOTE WITH POUND SIGNMONEY WITH WINGSCHART WITH UPWARDS TREND" + - " AND YEN SIGNSEATPERSONAL COMPUTERBRIEFCASEMINIDISCFLOPPY DISKOPTICAL DI" + - "SCDVDFILE FOLDEROPEN FILE FOLDERPAGE WITH CURLPAGE FACING UPCALENDARTEAR" + - "-OFF CALENDARCARD INDEXCHART WITH UPWARDS TRENDCHART WITH DOWNWARDS TREN" + - "DBAR CHARTCLIPBOARDPUSHPINROUND PUSHPINPAPERCLIPSTRAIGHT RULERTRIANGULAR" + - " RULERBOOKMARK TABSLEDGERNOTEBOOKNOTEBOOK WITH DECORATIVE COVERCLOSED BO" + - "OKOPEN BOOKGREEN BOOKBLUE BOOKORANGE BOOKBOOKSNAME BADGESCROLLMEMOTELEPH" + - "ONE RECEIVERPAGERFAX MACHINESATELLITE ANTENNAPUBLIC ADDRESS LOUDSPEAKERC" + - "HEERING MEGAPHONEOUTBOX TRAYINBOX TRAYPACKAGEE-MAIL SYMBOLINCOMING ENVEL" + - "OPEENVELOPE WITH DOWNWARDS ARROW ABOVECLOSED MAILBOX WITH LOWERED FLAGCL" + - "OSED MAILBOX WITH RAISED FLAGOPEN MAILBOX WITH RAISED FLAGOPEN MAILBOX W" + - "ITH LOWERED FLAGPOSTBOXPOSTAL HORNNEWSPAPERMOBILE PHONEMOBILE PHONE WITH" + - " RIGHTWARDS ARROW AT LEFTVIBRATION MODEMOBILE PHONE OFFNO MOBILE PHONESA" + - "NTENNA WITH BARSCAMERACAMERA WITH FLASHVIDEO CAMERATELEVISIONRADIOVIDEOC" + - "ASSETTEFILM PROJECTORPORTABLE STEREOPRAYER BEADSTWISTED RIGHTWARDS ARROW" + - "SCLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWSCLOCKWISE RIGHTWAR" + - "DS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAYCLOCKWISE DO" + - "WNWARDS AND UPWARDS OPEN CIRCLE ARROWSANTICLOCKWISE DOWNWARDS AND UPWARD" + - "S OPEN CIRCLE ARROWSLOW BRIGHTNESS SYMBOLHIGH BRIGHTNESS SYMBOLSPEAKER W" + - "ITH CANCELLATION STROKESPEAKERSPEAKER WITH ONE SOUND WAVESPEAKER WITH TH" + - "REE SOUND WAVESBATTERYELECTRIC PLUGLEFT-POINTING MAGNIFYING GLASSRIGHT-P" + - "OINTING MAGNIFYING GLASSLOCK WITH INK PENCLOSED LOCK WITH KEYKEYLOCKOPEN" + - " LOCKBELLBELL WITH CANCELLATION STROKEBOOKMARKLINK SYMBOLRADIO BUTTONBAC" + - "K WITH LEFTWARDS ARROW ABOVEEND WITH LEFTWARDS ARROW ABOVEON WITH EXCLAM" + - "ATION MARK WITH LEFT RIGHT ARROW ABOVESOON WITH RIGHTWARDS ARROW ABOVETO" + - "P WITH UPWARDS ARROW ABOVENO ONE UNDER EIGHTEEN SYMBOLKEYCAP TENINPUT SY" + - "MBOL FOR LATIN CAPITAL LETTERSINPUT SYMBOL FOR LATIN SMALL LETTERSINPUT " + - "SYMBOL FOR NUMBERSINPUT SYMBOL FOR SYMBOLSINPUT SYMBOL FOR LATIN LETTERS" + - "FIREELECTRIC TORCHWRENCHHAMMERNUT AND BOLTHOCHOPISTOLMICROSCOPETELESCOPE" + - "CRYSTAL BALLSIX POINTED STAR WITH MIDDLE DOTJAPANESE SYMBOL FOR BEGINNER" + - "TRIDENT EMBLEMBLACK SQUARE BUTTONWHITE SQUARE BUTTONLARGE RED CIRCLELARG" + - "E BLUE CIRCLELARGE ORANGE DIAMONDLARGE BLUE DIAMONDSMALL ORANGE DIAMONDS" + - "MALL BLUE DIAMONDUP-POINTING RED TRIANGLEDOWN-POINTING RED TRIANGLEUP-PO" + - "INTING SMALL RED TRIANGLEDOWN-POINTING SMALL RED TRIANGLELOWER RIGHT SHA" + - "DOWED WHITE CIRCLEUPPER RIGHT SHADOWED WHITE CIRCLECIRCLED CROSS POMMEEC" + - "ROSS POMMEE WITH HALF-CIRCLE BELOWCROSS POMMEENOTCHED LEFT SEMICIRCLE WI") + ("" + - "TH THREE DOTSNOTCHED RIGHT SEMICIRCLE WITH THREE DOTSSYMBOL FOR MARKS CH" + - "APTERWHITE LATIN CROSSHEAVY LATIN CROSSCELTIC CROSSOM SYMBOLDOVE OF PEAC" + - "EKAABAMOSQUESYNAGOGUEMENORAH WITH NINE BRANCHESBOWL OF HYGIEIACLOCK FACE" + - " ONE OCLOCKCLOCK FACE TWO OCLOCKCLOCK FACE THREE OCLOCKCLOCK FACE FOUR O" + - "CLOCKCLOCK FACE FIVE OCLOCKCLOCK FACE SIX OCLOCKCLOCK FACE SEVEN OCLOCKC" + - "LOCK FACE EIGHT OCLOCKCLOCK FACE NINE OCLOCKCLOCK FACE TEN OCLOCKCLOCK F" + - "ACE ELEVEN OCLOCKCLOCK FACE TWELVE OCLOCKCLOCK FACE ONE-THIRTYCLOCK FACE" + - " TWO-THIRTYCLOCK FACE THREE-THIRTYCLOCK FACE FOUR-THIRTYCLOCK FACE FIVE-" + - "THIRTYCLOCK FACE SIX-THIRTYCLOCK FACE SEVEN-THIRTYCLOCK FACE EIGHT-THIRT" + - "YCLOCK FACE NINE-THIRTYCLOCK FACE TEN-THIRTYCLOCK FACE ELEVEN-THIRTYCLOC" + - "K FACE TWELVE-THIRTYRIGHT SPEAKERRIGHT SPEAKER WITH ONE SOUND WAVERIGHT " + - "SPEAKER WITH THREE SOUND WAVESBULLHORNBULLHORN WITH SOUND WAVESRINGING B" + - "ELLBOOKCANDLEMANTELPIECE CLOCKBLACK SKULL AND CROSSBONESNO PIRACYHOLEMAN" + - " IN BUSINESS SUIT LEVITATINGSLEUTH OR SPYDARK SUNGLASSESSPIDERSPIDER WEB" + - "JOYSTICKMAN DANCINGLEFT HAND TELEPHONE RECEIVERTELEPHONE RECEIVER WITH P" + - "AGERIGHT HAND TELEPHONE RECEIVERWHITE TOUCHTONE TELEPHONEBLACK TOUCHTONE" + - " TELEPHONETELEPHONE ON TOP OF MODEMCLAMSHELL MOBILE PHONEBACK OF ENVELOP" + - "ESTAMPED ENVELOPEENVELOPE WITH LIGHTNINGFLYING ENVELOPEPEN OVER STAMPED " + - "ENVELOPELINKED PAPERCLIPSBLACK PUSHPINLOWER LEFT PENCILLOWER LEFT BALLPO" + - "INT PENLOWER LEFT FOUNTAIN PENLOWER LEFT PAINTBRUSHLOWER LEFT CRAYONLEFT" + - " WRITING HANDTURNED OK HAND SIGNRAISED HAND WITH FINGERS SPLAYEDREVERSED" + - " RAISED HAND WITH FINGERS SPLAYEDREVERSED THUMBS UP SIGNREVERSED THUMBS " + - "DOWN SIGNREVERSED VICTORY HANDREVERSED HAND WITH MIDDLE FINGER EXTENDEDR" + - "AISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERSWHITE DOWN POINTING " + - "LEFT HAND INDEXSIDEWAYS WHITE LEFT POINTING INDEXSIDEWAYS WHITE RIGHT PO" + - "INTING INDEXSIDEWAYS BLACK LEFT POINTING INDEXSIDEWAYS BLACK RIGHT POINT" + - "ING INDEXBLACK LEFT POINTING BACKHAND INDEXBLACK RIGHT POINTING BACKHAND" + - " INDEXSIDEWAYS WHITE UP POINTING INDEXSIDEWAYS WHITE DOWN POINTING INDEX" + - "SIDEWAYS BLACK UP POINTING INDEXSIDEWAYS BLACK DOWN POINTING INDEXBLACK " + - "UP POINTING BACKHAND INDEXBLACK DOWN POINTING BACKHAND INDEXBLACK HEARTD" + - "ESKTOP COMPUTERKEYBOARD AND MOUSETHREE NETWORKED COMPUTERSPRINTERPOCKET " + - "CALCULATORBLACK HARD SHELL FLOPPY DISKWHITE HARD SHELL FLOPPY DISKSOFT S" + - "HELL FLOPPY DISKTAPE CARTRIDGEWIRED KEYBOARDONE BUTTON MOUSETWO BUTTON M" + - "OUSETHREE BUTTON MOUSETRACKBALLOLD PERSONAL COMPUTERHARD DISKSCREENPRINT" + - "ER ICONFAX ICONOPTICAL DISC ICONDOCUMENT WITH TEXTDOCUMENT WITH TEXT AND" + - " PICTUREDOCUMENT WITH PICTUREFRAME WITH PICTUREFRAME WITH TILESFRAME WIT" + - "H AN XBLACK FOLDERFOLDEROPEN FOLDERCARD INDEX DIVIDERSCARD FILE BOXFILE " + - "CABINETEMPTY NOTEEMPTY NOTE PAGEEMPTY NOTE PADNOTENOTE PAGENOTE PADEMPTY" + - " DOCUMENTEMPTY PAGEEMPTY PAGESDOCUMENTPAGEPAGESWASTEBASKETSPIRAL NOTE PA" + - "DSPIRAL CALENDAR PADDESKTOP WINDOWMINIMIZEMAXIMIZEOVERLAPCLOCKWISE RIGHT" + - " AND LEFT SEMICIRCLE ARROWSCANCELLATION XINCREASE FONT SIZE SYMBOLDECREA" + - "SE FONT SIZE SYMBOLCOMPRESSIONOLD KEYROLLED-UP NEWSPAPERPAGE WITH CIRCLE" + - "D TEXTSTOCK CHARTDAGGER KNIFELIPSSPEAKING HEAD IN SILHOUETTETHREE RAYS A" + - "BOVETHREE RAYS BELOWTHREE RAYS LEFTTHREE RAYS RIGHTLEFT SPEECH BUBBLERIG" + - "HT SPEECH BUBBLETWO SPEECH BUBBLESTHREE SPEECH BUBBLESLEFT THOUGHT BUBBL" + - "ERIGHT THOUGHT BUBBLELEFT ANGER BUBBLERIGHT ANGER BUBBLEMOOD BUBBLELIGHT" + - "NING MOOD BUBBLELIGHTNING MOODBALLOT BOX WITH BALLOTBALLOT SCRIPT XBALLO" + - "T BOX WITH SCRIPT XBALLOT BOLD SCRIPT XBALLOT BOX WITH BOLD SCRIPT XLIGH" + - "T CHECK MARKBALLOT BOX WITH BOLD CHECKWORLD MAPMOUNT FUJITOKYO TOWERSTAT" + - "UE OF LIBERTYSILHOUETTE OF JAPANMOYAIGRINNING FACEGRINNING FACE WITH SMI" + - "LING EYESFACE WITH TEARS OF JOYSMILING FACE WITH OPEN MOUTHSMILING FACE " + - "WITH OPEN MOUTH AND SMILING EYESSMILING FACE WITH OPEN MOUTH AND COLD SW" + - "EATSMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYESSMILING FACE WITH" + - " HALOSMILING FACE WITH HORNSWINKING FACESMILING FACE WITH SMILING EYESFA" + - "CE SAVOURING DELICIOUS FOODRELIEVED FACESMILING FACE WITH HEART-SHAPED E" + - "YESSMILING FACE WITH SUNGLASSESSMIRKING FACENEUTRAL FACEEXPRESSIONLESS F" + - "ACEUNAMUSED FACEFACE WITH COLD SWEATPENSIVE FACECONFUSED FACECONFOUNDED " + - "FACEKISSING FACEFACE THROWING A KISSKISSING FACE WITH SMILING EYESKISSIN" + - "G FACE WITH CLOSED EYESFACE WITH STUCK-OUT TONGUEFACE WITH STUCK-OUT TON" + - "GUE AND WINKING EYEFACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYESDIS" + - "APPOINTED FACEWORRIED FACEANGRY FACEPOUTING FACECRYING FACEPERSEVERING F" + - "ACEFACE WITH LOOK OF TRIUMPHDISAPPOINTED BUT RELIEVED FACEFROWNING FACE " + - "WITH OPEN MOUTHANGUISHED FACEFEARFUL FACEWEARY FACESLEEPY FACETIRED FACE" + - "GRIMACING FACELOUDLY CRYING FACEFACE WITH OPEN MOUTHHUSHED FACEFACE WITH") + ("" + - " OPEN MOUTH AND COLD SWEATFACE SCREAMING IN FEARASTONISHED FACEFLUSHED F" + - "ACESLEEPING FACEDIZZY FACEFACE WITHOUT MOUTHFACE WITH MEDICAL MASKGRINNI" + - "NG CAT FACE WITH SMILING EYESCAT FACE WITH TEARS OF JOYSMILING CAT FACE " + - "WITH OPEN MOUTHSMILING CAT FACE WITH HEART-SHAPED EYESCAT FACE WITH WRY " + - "SMILEKISSING CAT FACE WITH CLOSED EYESPOUTING CAT FACECRYING CAT FACEWEA" + - "RY CAT FACESLIGHTLY FROWNING FACESLIGHTLY SMILING FACEUPSIDE-DOWN FACEFA" + - "CE WITH ROLLING EYESFACE WITH NO GOOD GESTUREFACE WITH OK GESTUREPERSON " + - "BOWING DEEPLYSEE-NO-EVIL MONKEYHEAR-NO-EVIL MONKEYSPEAK-NO-EVIL MONKEYHA" + - "PPY PERSON RAISING ONE HANDPERSON RAISING BOTH HANDS IN CELEBRATIONPERSO" + - "N FROWNINGPERSON WITH POUTING FACEPERSON WITH FOLDED HANDSNORTH WEST POI" + - "NTING LEAFSOUTH WEST POINTING LEAFNORTH EAST POINTING LEAFSOUTH EAST POI" + - "NTING LEAFTURNED NORTH WEST POINTING LEAFTURNED SOUTH WEST POINTING LEAF" + - "TURNED NORTH EAST POINTING LEAFTURNED SOUTH EAST POINTING LEAFNORTH WEST" + - " POINTING VINE LEAFSOUTH WEST POINTING VINE LEAFNORTH EAST POINTING VINE" + - " LEAFSOUTH EAST POINTING VINE LEAFHEAVY NORTH WEST POINTING VINE LEAFHEA" + - "VY SOUTH WEST POINTING VINE LEAFHEAVY NORTH EAST POINTING VINE LEAFHEAVY" + - " SOUTH EAST POINTING VINE LEAFNORTH WEST POINTING BUDSOUTH WEST POINTING" + - " BUDNORTH EAST POINTING BUDSOUTH EAST POINTING BUDHEAVY NORTH WEST POINT" + - "ING BUDHEAVY SOUTH WEST POINTING BUDHEAVY NORTH EAST POINTING BUDHEAVY S" + - "OUTH EAST POINTING BUDHOLLOW QUILT SQUARE ORNAMENTHOLLOW QUILT SQUARE OR" + - "NAMENT IN BLACK SQUARESOLID QUILT SQUARE ORNAMENTSOLID QUILT SQUARE ORNA" + - "MENT IN BLACK SQUARELEFTWARDS ROCKETUPWARDS ROCKETRIGHTWARDS ROCKETDOWNW" + - "ARDS ROCKETSCRIPT LIGATURE ET ORNAMENTHEAVY SCRIPT LIGATURE ET ORNAMENTL" + - "IGATURE OPEN ET ORNAMENTHEAVY LIGATURE OPEN ET ORNAMENTHEAVY AMPERSAND O" + - "RNAMENTSWASH AMPERSAND ORNAMENTSANS-SERIF HEAVY DOUBLE TURNED COMMA QUOT" + - "ATION MARK ORNAMENTSANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT" + - "SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENTHEAVY INTERROBA" + - "NG ORNAMENTSANS-SERIF INTERROBANG ORNAMENTHEAVY SANS-SERIF INTERROBANG O" + - "RNAMENTVERY HEAVY SOLIDUSVERY HEAVY REVERSE SOLIDUSCHECKER BOARDREVERSE " + - "CHECKER BOARDROCKETHELICOPTERSTEAM LOCOMOTIVERAILWAY CARHIGH-SPEED TRAIN" + - "HIGH-SPEED TRAIN WITH BULLET NOSETRAINMETROLIGHT RAILSTATIONTRAMTRAM CAR" + - "BUSONCOMING BUSTROLLEYBUSBUS STOPMINIBUSAMBULANCEFIRE ENGINEPOLICE CARON" + - "COMING POLICE CARTAXIONCOMING TAXIAUTOMOBILEONCOMING AUTOMOBILERECREATIO" + - "NAL VEHICLEDELIVERY TRUCKARTICULATED LORRYTRACTORMONORAILMOUNTAIN RAILWA" + - "YSUSPENSION RAILWAYMOUNTAIN CABLEWAYAERIAL TRAMWAYSHIPROWBOATSPEEDBOATHO" + - "RIZONTAL TRAFFIC LIGHTVERTICAL TRAFFIC LIGHTCONSTRUCTION SIGNPOLICE CARS" + - " REVOLVING LIGHTTRIANGULAR FLAG ON POSTDOORNO ENTRY SIGNSMOKING SYMBOLNO" + - " SMOKING SYMBOLPUT LITTER IN ITS PLACE SYMBOLDO NOT LITTER SYMBOLPOTABLE" + - " WATER SYMBOLNON-POTABLE WATER SYMBOLBICYCLENO BICYCLESBICYCLISTMOUNTAIN" + - " BICYCLISTPEDESTRIANNO PEDESTRIANSCHILDREN CROSSINGMENS SYMBOLWOMENS SYM" + - "BOLRESTROOMBABY SYMBOLTOILETWATER CLOSETSHOWERBATHBATHTUBPASSPORT CONTRO" + - "LCUSTOMSBAGGAGE CLAIMLEFT LUGGAGETRIANGLE WITH ROUNDED CORNERSPROHIBITED" + - " SIGNCIRCLED INFORMATION SOURCEBOYS SYMBOLGIRLS SYMBOLCOUCH AND LAMPSLEE" + - "PING ACCOMMODATIONSHOPPING BAGSBELLHOP BELLBEDPLACE OF WORSHIPOCTAGONAL " + - "SIGNSHOPPING TROLLEYHAMMER AND WRENCHSHIELDOIL DRUMMOTORWAYRAILWAY TRACK" + - "MOTOR BOATUP-POINTING MILITARY AIRPLANEUP-POINTING AIRPLANEUP-POINTING S" + - "MALL AIRPLANESMALL AIRPLANENORTHEAST-POINTING AIRPLANEAIRPLANE DEPARTURE" + - "AIRPLANE ARRIVINGSATELLITEONCOMING FIRE ENGINEDIESEL LOCOMOTIVEPASSENGER" + - " SHIPSCOOTERMOTOR SCOOTERCANOEALCHEMICAL SYMBOL FOR QUINTESSENCEALCHEMIC" + - "AL SYMBOL FOR AIRALCHEMICAL SYMBOL FOR FIREALCHEMICAL SYMBOL FOR EARTHAL" + - "CHEMICAL SYMBOL FOR WATERALCHEMICAL SYMBOL FOR AQUAFORTISALCHEMICAL SYMB" + - "OL FOR AQUA REGIAALCHEMICAL SYMBOL FOR AQUA REGIA-2ALCHEMICAL SYMBOL FOR" + - " AQUA VITAEALCHEMICAL SYMBOL FOR AQUA VITAE-2ALCHEMICAL SYMBOL FOR VINEG" + - "ARALCHEMICAL SYMBOL FOR VINEGAR-2ALCHEMICAL SYMBOL FOR VINEGAR-3ALCHEMIC" + - "AL SYMBOL FOR SULFURALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFURALCHEMICAL " + - "SYMBOL FOR BLACK SULFURALCHEMICAL SYMBOL FOR MERCURY SUBLIMATEALCHEMICAL" + - " SYMBOL FOR MERCURY SUBLIMATE-2ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3" + - "ALCHEMICAL SYMBOL FOR CINNABARALCHEMICAL SYMBOL FOR SALTALCHEMICAL SYMBO" + - "L FOR NITREALCHEMICAL SYMBOL FOR VITRIOLALCHEMICAL SYMBOL FOR VITRIOL-2A" + - "LCHEMICAL SYMBOL FOR ROCK SALTALCHEMICAL SYMBOL FOR ROCK SALT-2ALCHEMICA" + - "L SYMBOL FOR GOLDALCHEMICAL SYMBOL FOR SILVERALCHEMICAL SYMBOL FOR IRON " + - "OREALCHEMICAL SYMBOL FOR IRON ORE-2ALCHEMICAL SYMBOL FOR CROCUS OF IRONA" + - "LCHEMICAL SYMBOL FOR REGULUS OF IRONALCHEMICAL SYMBOL FOR COPPER OREALCH" + - "EMICAL SYMBOL FOR IRON-COPPER OREALCHEMICAL SYMBOL FOR SUBLIMATE OF COPP") + ("" + - "ERALCHEMICAL SYMBOL FOR CROCUS OF COPPERALCHEMICAL SYMBOL FOR CROCUS OF " + - "COPPER-2ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATEALCHEMICAL SYMBOL FOR SA" + - "LT OF COPPER ANTIMONIATEALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPE" + - "RALCHEMICAL SYMBOL FOR VERDIGRISALCHEMICAL SYMBOL FOR TIN OREALCHEMICAL " + - "SYMBOL FOR LEAD OREALCHEMICAL SYMBOL FOR ANTIMONY OREALCHEMICAL SYMBOL F" + - "OR SUBLIMATE OF ANTIMONYALCHEMICAL SYMBOL FOR SALT OF ANTIMONYALCHEMICAL" + - " SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONYALCHEMICAL SYMBOL FOR VINEGAR O" + - "F ANTIMONYALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONYALCHEMICAL SYMBOL FOR" + - " REGULUS OF ANTIMONY-2ALCHEMICAL SYMBOL FOR REGULUSALCHEMICAL SYMBOL FOR" + - " REGULUS-2ALCHEMICAL SYMBOL FOR REGULUS-3ALCHEMICAL SYMBOL FOR REGULUS-4" + - "ALCHEMICAL SYMBOL FOR ALKALIALCHEMICAL SYMBOL FOR ALKALI-2ALCHEMICAL SYM" + - "BOL FOR MARCASITEALCHEMICAL SYMBOL FOR SAL-AMMONIACALCHEMICAL SYMBOL FOR" + - " ARSENICALCHEMICAL SYMBOL FOR REALGARALCHEMICAL SYMBOL FOR REALGAR-2ALCH" + - "EMICAL SYMBOL FOR AURIPIGMENTALCHEMICAL SYMBOL FOR BISMUTH OREALCHEMICAL" + - " SYMBOL FOR TARTARALCHEMICAL SYMBOL FOR TARTAR-2ALCHEMICAL SYMBOL FOR QU" + - "ICK LIMEALCHEMICAL SYMBOL FOR BORAXALCHEMICAL SYMBOL FOR BORAX-2ALCHEMIC" + - "AL SYMBOL FOR BORAX-3ALCHEMICAL SYMBOL FOR ALUMALCHEMICAL SYMBOL FOR OIL" + - "ALCHEMICAL SYMBOL FOR SPIRITALCHEMICAL SYMBOL FOR TINCTUREALCHEMICAL SYM" + - "BOL FOR GUMALCHEMICAL SYMBOL FOR WAXALCHEMICAL SYMBOL FOR POWDERALCHEMIC" + - "AL SYMBOL FOR CALXALCHEMICAL SYMBOL FOR TUTTYALCHEMICAL SYMBOL FOR CAPUT" + - " MORTUUMALCHEMICAL SYMBOL FOR SCEPTER OF JOVEALCHEMICAL SYMBOL FOR CADUC" + - "EUSALCHEMICAL SYMBOL FOR TRIDENTALCHEMICAL SYMBOL FOR STARRED TRIDENTALC" + - "HEMICAL SYMBOL FOR LODESTONEALCHEMICAL SYMBOL FOR SOAPALCHEMICAL SYMBOL " + - "FOR URINEALCHEMICAL SYMBOL FOR HORSE DUNGALCHEMICAL SYMBOL FOR ASHESALCH" + - "EMICAL SYMBOL FOR POT ASHESALCHEMICAL SYMBOL FOR BRICKALCHEMICAL SYMBOL " + - "FOR POWDERED BRICKALCHEMICAL SYMBOL FOR AMALGAMALCHEMICAL SYMBOL FOR STR" + - "ATUM SUPER STRATUMALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2ALCHEMICA" + - "L SYMBOL FOR SUBLIMATIONALCHEMICAL SYMBOL FOR PRECIPITATEALCHEMICAL SYMB" + - "OL FOR DISTILLALCHEMICAL SYMBOL FOR DISSOLVEALCHEMICAL SYMBOL FOR DISSOL" + - "VE-2ALCHEMICAL SYMBOL FOR PURIFYALCHEMICAL SYMBOL FOR PUTREFACTIONALCHEM" + - "ICAL SYMBOL FOR CRUCIBLEALCHEMICAL SYMBOL FOR CRUCIBLE-2ALCHEMICAL SYMBO" + - "L FOR CRUCIBLE-3ALCHEMICAL SYMBOL FOR CRUCIBLE-4ALCHEMICAL SYMBOL FOR CR" + - "UCIBLE-5ALCHEMICAL SYMBOL FOR ALEMBICALCHEMICAL SYMBOL FOR BATH OF MARYA" + - "LCHEMICAL SYMBOL FOR BATH OF VAPOURSALCHEMICAL SYMBOL FOR RETORTALCHEMIC" + - "AL SYMBOL FOR HOURALCHEMICAL SYMBOL FOR NIGHTALCHEMICAL SYMBOL FOR DAY-N" + - "IGHTALCHEMICAL SYMBOL FOR MONTHALCHEMICAL SYMBOL FOR HALF DRAMALCHEMICAL" + - " SYMBOL FOR HALF OUNCEBLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLEBLACK " + - "UP-POINTING ISOSCELES RIGHT TRIANGLEBLACK RIGHT-POINTING ISOSCELES RIGHT" + - " TRIANGLEBLACK DOWN-POINTING ISOSCELES RIGHT TRIANGLEBLACK SLIGHTLY SMAL" + - "L CIRCLEMEDIUM BOLD WHITE CIRCLEBOLD WHITE CIRCLEHEAVY WHITE CIRCLEVERY " + - "HEAVY WHITE CIRCLEEXTREMELY HEAVY WHITE CIRCLEWHITE CIRCLE CONTAINING BL" + - "ACK SMALL CIRCLEROUND TARGETBLACK TINY SQUAREBLACK SLIGHTLY SMALL SQUARE" + - "LIGHT WHITE SQUAREMEDIUM WHITE SQUAREBOLD WHITE SQUAREHEAVY WHITE SQUARE" + - "VERY HEAVY WHITE SQUAREEXTREMELY HEAVY WHITE SQUAREWHITE SQUARE CONTAINI" + - "NG BLACK VERY SMALL SQUAREWHITE SQUARE CONTAINING BLACK MEDIUM SQUARESQU" + - "ARE TARGETBLACK TINY DIAMONDBLACK VERY SMALL DIAMONDBLACK MEDIUM SMALL D" + - "IAMONDWHITE DIAMOND CONTAINING BLACK VERY SMALL DIAMONDWHITE DIAMOND CON" + - "TAINING BLACK MEDIUM DIAMONDDIAMOND TARGETBLACK TINY LOZENGEBLACK VERY S" + - "MALL LOZENGEBLACK MEDIUM SMALL LOZENGEWHITE LOZENGE CONTAINING BLACK SMA" + - "LL LOZENGETHIN GREEK CROSSLIGHT GREEK CROSSMEDIUM GREEK CROSSBOLD GREEK " + - "CROSSVERY BOLD GREEK CROSSVERY HEAVY GREEK CROSSEXTREMELY HEAVY GREEK CR" + - "OSSTHIN SALTIRELIGHT SALTIREMEDIUM SALTIREBOLD SALTIREHEAVY SALTIREVERY " + - "HEAVY SALTIREEXTREMELY HEAVY SALTIRELIGHT FIVE SPOKED ASTERISKMEDIUM FIV" + - "E SPOKED ASTERISKBOLD FIVE SPOKED ASTERISKHEAVY FIVE SPOKED ASTERISKVERY" + - " HEAVY FIVE SPOKED ASTERISKEXTREMELY HEAVY FIVE SPOKED ASTERISKLIGHT SIX" + - " SPOKED ASTERISKMEDIUM SIX SPOKED ASTERISKBOLD SIX SPOKED ASTERISKHEAVY " + - "SIX SPOKED ASTERISKVERY HEAVY SIX SPOKED ASTERISKEXTREMELY HEAVY SIX SPO" + - "KED ASTERISKLIGHT EIGHT SPOKED ASTERISKMEDIUM EIGHT SPOKED ASTERISKBOLD " + - "EIGHT SPOKED ASTERISKHEAVY EIGHT SPOKED ASTERISKVERY HEAVY EIGHT SPOKED " + - "ASTERISKLIGHT THREE POINTED BLACK STARMEDIUM THREE POINTED BLACK STARTHR" + - "EE POINTED BLACK STARMEDIUM THREE POINTED PINWHEEL STARLIGHT FOUR POINTE" + - "D BLACK STARMEDIUM FOUR POINTED BLACK STARFOUR POINTED BLACK STARMEDIUM " + - "FOUR POINTED PINWHEEL STARREVERSE LIGHT FOUR POINTED PINWHEEL STARLIGHT " + - "FIVE POINTED BLACK STARHEAVY FIVE POINTED BLACK STARMEDIUM SIX POINTED B") + ("" + - "LACK STARHEAVY SIX POINTED BLACK STARSIX POINTED PINWHEEL STARMEDIUM EIG" + - "HT POINTED BLACK STARHEAVY EIGHT POINTED BLACK STARVERY HEAVY EIGHT POIN" + - "TED BLACK STARHEAVY EIGHT POINTED PINWHEEL STARLIGHT TWELVE POINTED BLAC" + - "K STARHEAVY TWELVE POINTED BLACK STARHEAVY TWELVE POINTED PINWHEEL STARL" + - "EFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEADUPWARDS ARROW WITH SMALL TRI" + - "ANGLE ARROWHEADRIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEADDOWNWARDS A" + - "RROW WITH SMALL TRIANGLE ARROWHEADLEFTWARDS ARROW WITH MEDIUM TRIANGLE A" + - "RROWHEADUPWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEADRIGHTWARDS ARROW WIT" + - "H MEDIUM TRIANGLE ARROWHEADDOWNWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEA" + - "DLEFTWARDS ARROW WITH LARGE TRIANGLE ARROWHEADUPWARDS ARROW WITH LARGE T" + - "RIANGLE ARROWHEADRIGHTWARDS ARROW WITH LARGE TRIANGLE ARROWHEADDOWNWARDS" + - " ARROW WITH LARGE TRIANGLE ARROWHEADLEFTWARDS ARROW WITH SMALL EQUILATER" + - "AL ARROWHEADUPWARDS ARROW WITH SMALL EQUILATERAL ARROWHEADRIGHTWARDS ARR" + - "OW WITH SMALL EQUILATERAL ARROWHEADDOWNWARDS ARROW WITH SMALL EQUILATERA" + - "L ARROWHEADLEFTWARDS ARROW WITH EQUILATERAL ARROWHEADUPWARDS ARROW WITH " + - "EQUILATERAL ARROWHEADRIGHTWARDS ARROW WITH EQUILATERAL ARROWHEADDOWNWARD" + - "S ARROW WITH EQUILATERAL ARROWHEADHEAVY LEFTWARDS ARROW WITH EQUILATERAL" + - " ARROWHEADHEAVY UPWARDS ARROW WITH EQUILATERAL ARROWHEADHEAVY RIGHTWARDS" + - " ARROW WITH EQUILATERAL ARROWHEADHEAVY DOWNWARDS ARROW WITH EQUILATERAL " + - "ARROWHEADHEAVY LEFTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEADHEAVY UPW" + - "ARDS ARROW WITH LARGE EQUILATERAL ARROWHEADHEAVY RIGHTWARDS ARROW WITH L" + - "ARGE EQUILATERAL ARROWHEADHEAVY DOWNWARDS ARROW WITH LARGE EQUILATERAL A" + - "RROWHEADLEFTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFTUPWARDS TRIANGL" + - "E-HEADED ARROW WITH NARROW SHAFTRIGHTWARDS TRIANGLE-HEADED ARROW WITH NA" + - "RROW SHAFTDOWNWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFTLEFTWARDS TRI" + - "ANGLE-HEADED ARROW WITH MEDIUM SHAFTUPWARDS TRIANGLE-HEADED ARROW WITH M" + - "EDIUM SHAFTRIGHTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFTDOWNWARDS T" + - "RIANGLE-HEADED ARROW WITH MEDIUM SHAFTLEFTWARDS TRIANGLE-HEADED ARROW WI" + - "TH BOLD SHAFTUPWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFTRIGHTWARDS TRI" + - "ANGLE-HEADED ARROW WITH BOLD SHAFTDOWNWARDS TRIANGLE-HEADED ARROW WITH B" + - "OLD SHAFTLEFTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFTUPWARDS TRIANGL" + - "E-HEADED ARROW WITH HEAVY SHAFTRIGHTWARDS TRIANGLE-HEADED ARROW WITH HEA" + - "VY SHAFTDOWNWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFTLEFTWARDS TRIANG" + - "LE-HEADED ARROW WITH VERY HEAVY SHAFTUPWARDS TRIANGLE-HEADED ARROW WITH " + - "VERY HEAVY SHAFTRIGHTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFTDO" + - "WNWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFTLEFTWARDS FINGER-POST" + - " ARROWUPWARDS FINGER-POST ARROWRIGHTWARDS FINGER-POST ARROWDOWNWARDS FIN" + - "GER-POST ARROWLEFTWARDS SQUARED ARROWUPWARDS SQUARED ARROWRIGHTWARDS SQU" + - "ARED ARROWDOWNWARDS SQUARED ARROWLEFTWARDS COMPRESSED ARROWUPWARDS COMPR" + - "ESSED ARROWRIGHTWARDS COMPRESSED ARROWDOWNWARDS COMPRESSED ARROWLEFTWARD" + - "S HEAVY COMPRESSED ARROWUPWARDS HEAVY COMPRESSED ARROWRIGHTWARDS HEAVY C" + - "OMPRESSED ARROWDOWNWARDS HEAVY COMPRESSED ARROWLEFTWARDS HEAVY ARROWUPWA" + - "RDS HEAVY ARROWRIGHTWARDS HEAVY ARROWDOWNWARDS HEAVY ARROWLEFTWARDS SANS" + - "-SERIF ARROWUPWARDS SANS-SERIF ARROWRIGHTWARDS SANS-SERIF ARROWDOWNWARDS" + - " SANS-SERIF ARROWNORTH WEST SANS-SERIF ARROWNORTH EAST SANS-SERIF ARROWS" + - "OUTH EAST SANS-SERIF ARROWSOUTH WEST SANS-SERIF ARROWLEFT RIGHT SANS-SER" + - "IF ARROWUP DOWN SANS-SERIF ARROWWIDE-HEADED LEFTWARDS LIGHT BARB ARROWWI" + - "DE-HEADED UPWARDS LIGHT BARB ARROWWIDE-HEADED RIGHTWARDS LIGHT BARB ARRO" + - "WWIDE-HEADED DOWNWARDS LIGHT BARB ARROWWIDE-HEADED NORTH WEST LIGHT BARB" + - " ARROWWIDE-HEADED NORTH EAST LIGHT BARB ARROWWIDE-HEADED SOUTH EAST LIGH" + - "T BARB ARROWWIDE-HEADED SOUTH WEST LIGHT BARB ARROWWIDE-HEADED LEFTWARDS" + - " BARB ARROWWIDE-HEADED UPWARDS BARB ARROWWIDE-HEADED RIGHTWARDS BARB ARR" + - "OWWIDE-HEADED DOWNWARDS BARB ARROWWIDE-HEADED NORTH WEST BARB ARROWWIDE-" + - "HEADED NORTH EAST BARB ARROWWIDE-HEADED SOUTH EAST BARB ARROWWIDE-HEADED" + - " SOUTH WEST BARB ARROWWIDE-HEADED LEFTWARDS MEDIUM BARB ARROWWIDE-HEADED" + - " UPWARDS MEDIUM BARB ARROWWIDE-HEADED RIGHTWARDS MEDIUM BARB ARROWWIDE-H" + - "EADED DOWNWARDS MEDIUM BARB ARROWWIDE-HEADED NORTH WEST MEDIUM BARB ARRO" + - "WWIDE-HEADED NORTH EAST MEDIUM BARB ARROWWIDE-HEADED SOUTH EAST MEDIUM B" + - "ARB ARROWWIDE-HEADED SOUTH WEST MEDIUM BARB ARROWWIDE-HEADED LEFTWARDS H" + - "EAVY BARB ARROWWIDE-HEADED UPWARDS HEAVY BARB ARROWWIDE-HEADED RIGHTWARD" + - "S HEAVY BARB ARROWWIDE-HEADED DOWNWARDS HEAVY BARB ARROWWIDE-HEADED NORT" + - "H WEST HEAVY BARB ARROWWIDE-HEADED NORTH EAST HEAVY BARB ARROWWIDE-HEADE" + - "D SOUTH EAST HEAVY BARB ARROWWIDE-HEADED SOUTH WEST HEAVY BARB ARROWWIDE" + - "-HEADED LEFTWARDS VERY HEAVY BARB ARROWWIDE-HEADED UPWARDS VERY HEAVY BA") + ("" + - "RB ARROWWIDE-HEADED RIGHTWARDS VERY HEAVY BARB ARROWWIDE-HEADED DOWNWARD" + - "S VERY HEAVY BARB ARROWWIDE-HEADED NORTH WEST VERY HEAVY BARB ARROWWIDE-" + - "HEADED NORTH EAST VERY HEAVY BARB ARROWWIDE-HEADED SOUTH EAST VERY HEAVY" + - " BARB ARROWWIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROWLEFTWARDS TRIANGL" + - "E ARROWHEADUPWARDS TRIANGLE ARROWHEADRIGHTWARDS TRIANGLE ARROWHEADDOWNWA" + - "RDS TRIANGLE ARROWHEADLEFTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEADUPW" + - "ARDS WHITE ARROW WITHIN TRIANGLE ARROWHEADRIGHTWARDS WHITE ARROW WITHIN " + - "TRIANGLE ARROWHEADDOWNWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEADLEFTWAR" + - "DS ARROW WITH NOTCHED TAILUPWARDS ARROW WITH NOTCHED TAILRIGHTWARDS ARRO" + - "W WITH NOTCHED TAILDOWNWARDS ARROW WITH NOTCHED TAILHEAVY ARROW SHAFT WI" + - "DTH ONEHEAVY ARROW SHAFT WIDTH TWO THIRDSHEAVY ARROW SHAFT WIDTH ONE HAL" + - "FHEAVY ARROW SHAFT WIDTH ONE THIRDLEFTWARDS BOTTOM-SHADED WHITE ARROWRIG" + - "HTWARDS BOTTOM SHADED WHITE ARROWLEFTWARDS TOP SHADED WHITE ARROWRIGHTWA" + - "RDS TOP SHADED WHITE ARROWLEFTWARDS LEFT-SHADED WHITE ARROWRIGHTWARDS RI" + - "GHT-SHADED WHITE ARROWLEFTWARDS RIGHT-SHADED WHITE ARROWRIGHTWARDS LEFT-" + - "SHADED WHITE ARROWLEFTWARDS BACK-TILTED SHADOWED WHITE ARROWRIGHTWARDS B" + - "ACK-TILTED SHADOWED WHITE ARROWLEFTWARDS FRONT-TILTED SHADOWED WHITE ARR" + - "OWRIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROWWHITE ARROW SHAFT WIDTH ON" + - "EWHITE ARROW SHAFT WIDTH TWO THIRDSZIPPER-MOUTH FACEMONEY-MOUTH FACEFACE" + - " WITH THERMOMETERNERD FACETHINKING FACEFACE WITH HEAD-BANDAGEROBOT FACEH" + - "UGGING FACESIGN OF THE HORNSCALL ME HANDRAISED BACK OF HANDLEFT-FACING F" + - "ISTRIGHT-FACING FISTHANDSHAKEHAND WITH INDEX AND MIDDLE FINGERS CROSSEDF" + - "ACE WITH COWBOY HATCLOWN FACENAUSEATED FACEROLLING ON THE FLOOR LAUGHING" + - "DROOLING FACELYING FACEFACE PALMSNEEZING FACEPREGNANT WOMANSELFIEPRINCEM" + - "AN IN TUXEDOMOTHER CHRISTMASSHRUGPERSON DOING CARTWHEELJUGGLINGFENCERMOD" + - "ERN PENTATHLONWRESTLERSWATER POLOHANDBALLWILTED FLOWERDRUM WITH DRUMSTIC" + - "KSCLINKING GLASSESTUMBLER GLASSSPOONGOAL NETRIFLEFIRST PLACE MEDALSECOND" + - " PLACE MEDALTHIRD PLACE MEDALBOXING GLOVEMARTIAL ARTS UNIFORMCROISSANTAV" + - "OCADOCUCUMBERBACONPOTATOCARROTBAGUETTE BREADGREEN SALADSHALLOW PAN OF FO" + - "ODSTUFFED FLATBREADEGGGLASS OF MILKPEANUTSKIWIFRUITPANCAKESCRABLION FACE" + - "SCORPIONTURKEYUNICORN FACEEAGLEDUCKBATSHARKOWLFOX FACEBUTTERFLYDEERGORIL" + - "LALIZARDRHINOCEROSSHRIMPSQUIDCHEESE WEDGECJK COMPATIBILITY IDEOGRAPH-2F8" + - "00CJK COMPATIBILITY IDEOGRAPH-2F801CJK COMPATIBILITY IDEOGRAPH-2F802CJK " + - "COMPATIBILITY IDEOGRAPH-2F803CJK COMPATIBILITY IDEOGRAPH-2F804CJK COMPAT" + - "IBILITY IDEOGRAPH-2F805CJK COMPATIBILITY IDEOGRAPH-2F806CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F807CJK COMPATIBILITY IDEOGRAPH-2F808CJK COMPATIBILITY IDEO" + - "GRAPH-2F809CJK COMPATIBILITY IDEOGRAPH-2F80ACJK COMPATIBILITY IDEOGRAPH-" + - "2F80BCJK COMPATIBILITY IDEOGRAPH-2F80CCJK COMPATIBILITY IDEOGRAPH-2F80DC" + - "JK COMPATIBILITY IDEOGRAPH-2F80ECJK COMPATIBILITY IDEOGRAPH-2F80FCJK COM" + - "PATIBILITY IDEOGRAPH-2F810CJK COMPATIBILITY IDEOGRAPH-2F811CJK COMPATIBI" + - "LITY IDEOGRAPH-2F812CJK COMPATIBILITY IDEOGRAPH-2F813CJK COMPATIBILITY I" + - "DEOGRAPH-2F814CJK COMPATIBILITY IDEOGRAPH-2F815CJK COMPATIBILITY IDEOGRA" + - "PH-2F816CJK COMPATIBILITY IDEOGRAPH-2F817CJK COMPATIBILITY IDEOGRAPH-2F8" + - "18CJK COMPATIBILITY IDEOGRAPH-2F819CJK COMPATIBILITY IDEOGRAPH-2F81ACJK " + - "COMPATIBILITY IDEOGRAPH-2F81BCJK COMPATIBILITY IDEOGRAPH-2F81CCJK COMPAT" + - "IBILITY IDEOGRAPH-2F81DCJK COMPATIBILITY IDEOGRAPH-2F81ECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F81FCJK COMPATIBILITY IDEOGRAPH-2F820CJK COMPATIBILITY IDEO" + - "GRAPH-2F821CJK COMPATIBILITY IDEOGRAPH-2F822CJK COMPATIBILITY IDEOGRAPH-" + - "2F823CJK COMPATIBILITY IDEOGRAPH-2F824CJK COMPATIBILITY IDEOGRAPH-2F825C" + - "JK COMPATIBILITY IDEOGRAPH-2F826CJK COMPATIBILITY IDEOGRAPH-2F827CJK COM" + - "PATIBILITY IDEOGRAPH-2F828CJK COMPATIBILITY IDEOGRAPH-2F829CJK COMPATIBI" + - "LITY IDEOGRAPH-2F82ACJK COMPATIBILITY IDEOGRAPH-2F82BCJK COMPATIBILITY I" + - "DEOGRAPH-2F82CCJK COMPATIBILITY IDEOGRAPH-2F82DCJK COMPATIBILITY IDEOGRA" + - "PH-2F82ECJK COMPATIBILITY IDEOGRAPH-2F82FCJK COMPATIBILITY IDEOGRAPH-2F8" + - "30CJK COMPATIBILITY IDEOGRAPH-2F831CJK COMPATIBILITY IDEOGRAPH-2F832CJK " + - "COMPATIBILITY IDEOGRAPH-2F833CJK COMPATIBILITY IDEOGRAPH-2F834CJK COMPAT" + - "IBILITY IDEOGRAPH-2F835CJK COMPATIBILITY IDEOGRAPH-2F836CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F837CJK COMPATIBILITY IDEOGRAPH-2F838CJK COMPATIBILITY IDEO" + - "GRAPH-2F839CJK COMPATIBILITY IDEOGRAPH-2F83ACJK COMPATIBILITY IDEOGRAPH-" + - "2F83BCJK COMPATIBILITY IDEOGRAPH-2F83CCJK COMPATIBILITY IDEOGRAPH-2F83DC" + - "JK COMPATIBILITY IDEOGRAPH-2F83ECJK COMPATIBILITY IDEOGRAPH-2F83FCJK COM" + - "PATIBILITY IDEOGRAPH-2F840CJK COMPATIBILITY IDEOGRAPH-2F841CJK COMPATIBI" + - "LITY IDEOGRAPH-2F842CJK COMPATIBILITY IDEOGRAPH-2F843CJK COMPATIBILITY I" + - "DEOGRAPH-2F844CJK COMPATIBILITY IDEOGRAPH-2F845CJK COMPATIBILITY IDEOGRA") + ("" + - "PH-2F846CJK COMPATIBILITY IDEOGRAPH-2F847CJK COMPATIBILITY IDEOGRAPH-2F8" + - "48CJK COMPATIBILITY IDEOGRAPH-2F849CJK COMPATIBILITY IDEOGRAPH-2F84ACJK " + - "COMPATIBILITY IDEOGRAPH-2F84BCJK COMPATIBILITY IDEOGRAPH-2F84CCJK COMPAT" + - "IBILITY IDEOGRAPH-2F84DCJK COMPATIBILITY IDEOGRAPH-2F84ECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F84FCJK COMPATIBILITY IDEOGRAPH-2F850CJK COMPATIBILITY IDEO" + - "GRAPH-2F851CJK COMPATIBILITY IDEOGRAPH-2F852CJK COMPATIBILITY IDEOGRAPH-" + - "2F853CJK COMPATIBILITY IDEOGRAPH-2F854CJK COMPATIBILITY IDEOGRAPH-2F855C" + - "JK COMPATIBILITY IDEOGRAPH-2F856CJK COMPATIBILITY IDEOGRAPH-2F857CJK COM" + - "PATIBILITY IDEOGRAPH-2F858CJK COMPATIBILITY IDEOGRAPH-2F859CJK COMPATIBI" + - "LITY IDEOGRAPH-2F85ACJK COMPATIBILITY IDEOGRAPH-2F85BCJK COMPATIBILITY I" + - "DEOGRAPH-2F85CCJK COMPATIBILITY IDEOGRAPH-2F85DCJK COMPATIBILITY IDEOGRA" + - "PH-2F85ECJK COMPATIBILITY IDEOGRAPH-2F85FCJK COMPATIBILITY IDEOGRAPH-2F8" + - "60CJK COMPATIBILITY IDEOGRAPH-2F861CJK COMPATIBILITY IDEOGRAPH-2F862CJK " + - "COMPATIBILITY IDEOGRAPH-2F863CJK COMPATIBILITY IDEOGRAPH-2F864CJK COMPAT" + - "IBILITY IDEOGRAPH-2F865CJK COMPATIBILITY IDEOGRAPH-2F866CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F867CJK COMPATIBILITY IDEOGRAPH-2F868CJK COMPATIBILITY IDEO" + - "GRAPH-2F869CJK COMPATIBILITY IDEOGRAPH-2F86ACJK COMPATIBILITY IDEOGRAPH-" + - "2F86BCJK COMPATIBILITY IDEOGRAPH-2F86CCJK COMPATIBILITY IDEOGRAPH-2F86DC" + - "JK COMPATIBILITY IDEOGRAPH-2F86ECJK COMPATIBILITY IDEOGRAPH-2F86FCJK COM" + - "PATIBILITY IDEOGRAPH-2F870CJK COMPATIBILITY IDEOGRAPH-2F871CJK COMPATIBI" + - "LITY IDEOGRAPH-2F872CJK COMPATIBILITY IDEOGRAPH-2F873CJK COMPATIBILITY I" + - "DEOGRAPH-2F874CJK COMPATIBILITY IDEOGRAPH-2F875CJK COMPATIBILITY IDEOGRA" + - "PH-2F876CJK COMPATIBILITY IDEOGRAPH-2F877CJK COMPATIBILITY IDEOGRAPH-2F8" + - "78CJK COMPATIBILITY IDEOGRAPH-2F879CJK COMPATIBILITY IDEOGRAPH-2F87ACJK " + - "COMPATIBILITY IDEOGRAPH-2F87BCJK COMPATIBILITY IDEOGRAPH-2F87CCJK COMPAT" + - "IBILITY IDEOGRAPH-2F87DCJK COMPATIBILITY IDEOGRAPH-2F87ECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F87FCJK COMPATIBILITY IDEOGRAPH-2F880CJK COMPATIBILITY IDEO" + - "GRAPH-2F881CJK COMPATIBILITY IDEOGRAPH-2F882CJK COMPATIBILITY IDEOGRAPH-" + - "2F883CJK COMPATIBILITY IDEOGRAPH-2F884CJK COMPATIBILITY IDEOGRAPH-2F885C" + - "JK COMPATIBILITY IDEOGRAPH-2F886CJK COMPATIBILITY IDEOGRAPH-2F887CJK COM" + - "PATIBILITY IDEOGRAPH-2F888CJK COMPATIBILITY IDEOGRAPH-2F889CJK COMPATIBI" + - "LITY IDEOGRAPH-2F88ACJK COMPATIBILITY IDEOGRAPH-2F88BCJK COMPATIBILITY I" + - "DEOGRAPH-2F88CCJK COMPATIBILITY IDEOGRAPH-2F88DCJK COMPATIBILITY IDEOGRA" + - "PH-2F88ECJK COMPATIBILITY IDEOGRAPH-2F88FCJK COMPATIBILITY IDEOGRAPH-2F8" + - "90CJK COMPATIBILITY IDEOGRAPH-2F891CJK COMPATIBILITY IDEOGRAPH-2F892CJK " + - "COMPATIBILITY IDEOGRAPH-2F893CJK COMPATIBILITY IDEOGRAPH-2F894CJK COMPAT" + - "IBILITY IDEOGRAPH-2F895CJK COMPATIBILITY IDEOGRAPH-2F896CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F897CJK COMPATIBILITY IDEOGRAPH-2F898CJK COMPATIBILITY IDEO" + - "GRAPH-2F899CJK COMPATIBILITY IDEOGRAPH-2F89ACJK COMPATIBILITY IDEOGRAPH-" + - "2F89BCJK COMPATIBILITY IDEOGRAPH-2F89CCJK COMPATIBILITY IDEOGRAPH-2F89DC" + - "JK COMPATIBILITY IDEOGRAPH-2F89ECJK COMPATIBILITY IDEOGRAPH-2F89FCJK COM" + - "PATIBILITY IDEOGRAPH-2F8A0CJK COMPATIBILITY IDEOGRAPH-2F8A1CJK COMPATIBI" + - "LITY IDEOGRAPH-2F8A2CJK COMPATIBILITY IDEOGRAPH-2F8A3CJK COMPATIBILITY I" + - "DEOGRAPH-2F8A4CJK COMPATIBILITY IDEOGRAPH-2F8A5CJK COMPATIBILITY IDEOGRA" + - "PH-2F8A6CJK COMPATIBILITY IDEOGRAPH-2F8A7CJK COMPATIBILITY IDEOGRAPH-2F8" + - "A8CJK COMPATIBILITY IDEOGRAPH-2F8A9CJK COMPATIBILITY IDEOGRAPH-2F8AACJK " + - "COMPATIBILITY IDEOGRAPH-2F8ABCJK COMPATIBILITY IDEOGRAPH-2F8ACCJK COMPAT" + - "IBILITY IDEOGRAPH-2F8ADCJK COMPATIBILITY IDEOGRAPH-2F8AECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F8AFCJK COMPATIBILITY IDEOGRAPH-2F8B0CJK COMPATIBILITY IDEO" + - "GRAPH-2F8B1CJK COMPATIBILITY IDEOGRAPH-2F8B2CJK COMPATIBILITY IDEOGRAPH-" + - "2F8B3CJK COMPATIBILITY IDEOGRAPH-2F8B4CJK COMPATIBILITY IDEOGRAPH-2F8B5C" + - "JK COMPATIBILITY IDEOGRAPH-2F8B6CJK COMPATIBILITY IDEOGRAPH-2F8B7CJK COM" + - "PATIBILITY IDEOGRAPH-2F8B8CJK COMPATIBILITY IDEOGRAPH-2F8B9CJK COMPATIBI" + - "LITY IDEOGRAPH-2F8BACJK COMPATIBILITY IDEOGRAPH-2F8BBCJK COMPATIBILITY I" + - "DEOGRAPH-2F8BCCJK COMPATIBILITY IDEOGRAPH-2F8BDCJK COMPATIBILITY IDEOGRA" + - "PH-2F8BECJK COMPATIBILITY IDEOGRAPH-2F8BFCJK COMPATIBILITY IDEOGRAPH-2F8" + - "C0CJK COMPATIBILITY IDEOGRAPH-2F8C1CJK COMPATIBILITY IDEOGRAPH-2F8C2CJK " + - "COMPATIBILITY IDEOGRAPH-2F8C3CJK COMPATIBILITY IDEOGRAPH-2F8C4CJK COMPAT" + - "IBILITY IDEOGRAPH-2F8C5CJK COMPATIBILITY IDEOGRAPH-2F8C6CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F8C7CJK COMPATIBILITY IDEOGRAPH-2F8C8CJK COMPATIBILITY IDEO" + - "GRAPH-2F8C9CJK COMPATIBILITY IDEOGRAPH-2F8CACJK COMPATIBILITY IDEOGRAPH-" + - "2F8CBCJK COMPATIBILITY IDEOGRAPH-2F8CCCJK COMPATIBILITY IDEOGRAPH-2F8CDC" + - "JK COMPATIBILITY IDEOGRAPH-2F8CECJK COMPATIBILITY IDEOGRAPH-2F8CFCJK COM" + - "PATIBILITY IDEOGRAPH-2F8D0CJK COMPATIBILITY IDEOGRAPH-2F8D1CJK COMPATIBI") + ("" + - "LITY IDEOGRAPH-2F8D2CJK COMPATIBILITY IDEOGRAPH-2F8D3CJK COMPATIBILITY I" + - "DEOGRAPH-2F8D4CJK COMPATIBILITY IDEOGRAPH-2F8D5CJK COMPATIBILITY IDEOGRA" + - "PH-2F8D6CJK COMPATIBILITY IDEOGRAPH-2F8D7CJK COMPATIBILITY IDEOGRAPH-2F8" + - "D8CJK COMPATIBILITY IDEOGRAPH-2F8D9CJK COMPATIBILITY IDEOGRAPH-2F8DACJK " + - "COMPATIBILITY IDEOGRAPH-2F8DBCJK COMPATIBILITY IDEOGRAPH-2F8DCCJK COMPAT" + - "IBILITY IDEOGRAPH-2F8DDCJK COMPATIBILITY IDEOGRAPH-2F8DECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F8DFCJK COMPATIBILITY IDEOGRAPH-2F8E0CJK COMPATIBILITY IDEO" + - "GRAPH-2F8E1CJK COMPATIBILITY IDEOGRAPH-2F8E2CJK COMPATIBILITY IDEOGRAPH-" + - "2F8E3CJK COMPATIBILITY IDEOGRAPH-2F8E4CJK COMPATIBILITY IDEOGRAPH-2F8E5C" + - "JK COMPATIBILITY IDEOGRAPH-2F8E6CJK COMPATIBILITY IDEOGRAPH-2F8E7CJK COM" + - "PATIBILITY IDEOGRAPH-2F8E8CJK COMPATIBILITY IDEOGRAPH-2F8E9CJK COMPATIBI" + - "LITY IDEOGRAPH-2F8EACJK COMPATIBILITY IDEOGRAPH-2F8EBCJK COMPATIBILITY I" + - "DEOGRAPH-2F8ECCJK COMPATIBILITY IDEOGRAPH-2F8EDCJK COMPATIBILITY IDEOGRA" + - "PH-2F8EECJK COMPATIBILITY IDEOGRAPH-2F8EFCJK COMPATIBILITY IDEOGRAPH-2F8" + - "F0CJK COMPATIBILITY IDEOGRAPH-2F8F1CJK COMPATIBILITY IDEOGRAPH-2F8F2CJK " + - "COMPATIBILITY IDEOGRAPH-2F8F3CJK COMPATIBILITY IDEOGRAPH-2F8F4CJK COMPAT" + - "IBILITY IDEOGRAPH-2F8F5CJK COMPATIBILITY IDEOGRAPH-2F8F6CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F8F7CJK COMPATIBILITY IDEOGRAPH-2F8F8CJK COMPATIBILITY IDEO" + - "GRAPH-2F8F9CJK COMPATIBILITY IDEOGRAPH-2F8FACJK COMPATIBILITY IDEOGRAPH-" + - "2F8FBCJK COMPATIBILITY IDEOGRAPH-2F8FCCJK COMPATIBILITY IDEOGRAPH-2F8FDC" + - "JK COMPATIBILITY IDEOGRAPH-2F8FECJK COMPATIBILITY IDEOGRAPH-2F8FFCJK COM" + - "PATIBILITY IDEOGRAPH-2F900CJK COMPATIBILITY IDEOGRAPH-2F901CJK COMPATIBI" + - "LITY IDEOGRAPH-2F902CJK COMPATIBILITY IDEOGRAPH-2F903CJK COMPATIBILITY I" + - "DEOGRAPH-2F904CJK COMPATIBILITY IDEOGRAPH-2F905CJK COMPATIBILITY IDEOGRA" + - "PH-2F906CJK COMPATIBILITY IDEOGRAPH-2F907CJK COMPATIBILITY IDEOGRAPH-2F9" + - "08CJK COMPATIBILITY IDEOGRAPH-2F909CJK COMPATIBILITY IDEOGRAPH-2F90ACJK " + - "COMPATIBILITY IDEOGRAPH-2F90BCJK COMPATIBILITY IDEOGRAPH-2F90CCJK COMPAT" + - "IBILITY IDEOGRAPH-2F90DCJK COMPATIBILITY IDEOGRAPH-2F90ECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F90FCJK COMPATIBILITY IDEOGRAPH-2F910CJK COMPATIBILITY IDEO" + - "GRAPH-2F911CJK COMPATIBILITY IDEOGRAPH-2F912CJK COMPATIBILITY IDEOGRAPH-" + - "2F913CJK COMPATIBILITY IDEOGRAPH-2F914CJK COMPATIBILITY IDEOGRAPH-2F915C" + - "JK COMPATIBILITY IDEOGRAPH-2F916CJK COMPATIBILITY IDEOGRAPH-2F917CJK COM" + - "PATIBILITY IDEOGRAPH-2F918CJK COMPATIBILITY IDEOGRAPH-2F919CJK COMPATIBI" + - "LITY IDEOGRAPH-2F91ACJK COMPATIBILITY IDEOGRAPH-2F91BCJK COMPATIBILITY I" + - "DEOGRAPH-2F91CCJK COMPATIBILITY IDEOGRAPH-2F91DCJK COMPATIBILITY IDEOGRA" + - "PH-2F91ECJK COMPATIBILITY IDEOGRAPH-2F91FCJK COMPATIBILITY IDEOGRAPH-2F9" + - "20CJK COMPATIBILITY IDEOGRAPH-2F921CJK COMPATIBILITY IDEOGRAPH-2F922CJK " + - "COMPATIBILITY IDEOGRAPH-2F923CJK COMPATIBILITY IDEOGRAPH-2F924CJK COMPAT" + - "IBILITY IDEOGRAPH-2F925CJK COMPATIBILITY IDEOGRAPH-2F926CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F927CJK COMPATIBILITY IDEOGRAPH-2F928CJK COMPATIBILITY IDEO" + - "GRAPH-2F929CJK COMPATIBILITY IDEOGRAPH-2F92ACJK COMPATIBILITY IDEOGRAPH-" + - "2F92BCJK COMPATIBILITY IDEOGRAPH-2F92CCJK COMPATIBILITY IDEOGRAPH-2F92DC" + - "JK COMPATIBILITY IDEOGRAPH-2F92ECJK COMPATIBILITY IDEOGRAPH-2F92FCJK COM" + - "PATIBILITY IDEOGRAPH-2F930CJK COMPATIBILITY IDEOGRAPH-2F931CJK COMPATIBI" + - "LITY IDEOGRAPH-2F932CJK COMPATIBILITY IDEOGRAPH-2F933CJK COMPATIBILITY I" + - "DEOGRAPH-2F934CJK COMPATIBILITY IDEOGRAPH-2F935CJK COMPATIBILITY IDEOGRA" + - "PH-2F936CJK COMPATIBILITY IDEOGRAPH-2F937CJK COMPATIBILITY IDEOGRAPH-2F9" + - "38CJK COMPATIBILITY IDEOGRAPH-2F939CJK COMPATIBILITY IDEOGRAPH-2F93ACJK " + - "COMPATIBILITY IDEOGRAPH-2F93BCJK COMPATIBILITY IDEOGRAPH-2F93CCJK COMPAT" + - "IBILITY IDEOGRAPH-2F93DCJK COMPATIBILITY IDEOGRAPH-2F93ECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F93FCJK COMPATIBILITY IDEOGRAPH-2F940CJK COMPATIBILITY IDEO" + - "GRAPH-2F941CJK COMPATIBILITY IDEOGRAPH-2F942CJK COMPATIBILITY IDEOGRAPH-" + - "2F943CJK COMPATIBILITY IDEOGRAPH-2F944CJK COMPATIBILITY IDEOGRAPH-2F945C" + - "JK COMPATIBILITY IDEOGRAPH-2F946CJK COMPATIBILITY IDEOGRAPH-2F947CJK COM" + - "PATIBILITY IDEOGRAPH-2F948CJK COMPATIBILITY IDEOGRAPH-2F949CJK COMPATIBI" + - "LITY IDEOGRAPH-2F94ACJK COMPATIBILITY IDEOGRAPH-2F94BCJK COMPATIBILITY I" + - "DEOGRAPH-2F94CCJK COMPATIBILITY IDEOGRAPH-2F94DCJK COMPATIBILITY IDEOGRA" + - "PH-2F94ECJK COMPATIBILITY IDEOGRAPH-2F94FCJK COMPATIBILITY IDEOGRAPH-2F9" + - "50CJK COMPATIBILITY IDEOGRAPH-2F951CJK COMPATIBILITY IDEOGRAPH-2F952CJK " + - "COMPATIBILITY IDEOGRAPH-2F953CJK COMPATIBILITY IDEOGRAPH-2F954CJK COMPAT" + - "IBILITY IDEOGRAPH-2F955CJK COMPATIBILITY IDEOGRAPH-2F956CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F957CJK COMPATIBILITY IDEOGRAPH-2F958CJK COMPATIBILITY IDEO" + - "GRAPH-2F959CJK COMPATIBILITY IDEOGRAPH-2F95ACJK COMPATIBILITY IDEOGRAPH-" + - "2F95BCJK COMPATIBILITY IDEOGRAPH-2F95CCJK COMPATIBILITY IDEOGRAPH-2F95DC") + ("" + - "JK COMPATIBILITY IDEOGRAPH-2F95ECJK COMPATIBILITY IDEOGRAPH-2F95FCJK COM" + - "PATIBILITY IDEOGRAPH-2F960CJK COMPATIBILITY IDEOGRAPH-2F961CJK COMPATIBI" + - "LITY IDEOGRAPH-2F962CJK COMPATIBILITY IDEOGRAPH-2F963CJK COMPATIBILITY I" + - "DEOGRAPH-2F964CJK COMPATIBILITY IDEOGRAPH-2F965CJK COMPATIBILITY IDEOGRA" + - "PH-2F966CJK COMPATIBILITY IDEOGRAPH-2F967CJK COMPATIBILITY IDEOGRAPH-2F9" + - "68CJK COMPATIBILITY IDEOGRAPH-2F969CJK COMPATIBILITY IDEOGRAPH-2F96ACJK " + - "COMPATIBILITY IDEOGRAPH-2F96BCJK COMPATIBILITY IDEOGRAPH-2F96CCJK COMPAT" + - "IBILITY IDEOGRAPH-2F96DCJK COMPATIBILITY IDEOGRAPH-2F96ECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F96FCJK COMPATIBILITY IDEOGRAPH-2F970CJK COMPATIBILITY IDEO" + - "GRAPH-2F971CJK COMPATIBILITY IDEOGRAPH-2F972CJK COMPATIBILITY IDEOGRAPH-" + - "2F973CJK COMPATIBILITY IDEOGRAPH-2F974CJK COMPATIBILITY IDEOGRAPH-2F975C" + - "JK COMPATIBILITY IDEOGRAPH-2F976CJK COMPATIBILITY IDEOGRAPH-2F977CJK COM" + - "PATIBILITY IDEOGRAPH-2F978CJK COMPATIBILITY IDEOGRAPH-2F979CJK COMPATIBI" + - "LITY IDEOGRAPH-2F97ACJK COMPATIBILITY IDEOGRAPH-2F97BCJK COMPATIBILITY I" + - "DEOGRAPH-2F97CCJK COMPATIBILITY IDEOGRAPH-2F97DCJK COMPATIBILITY IDEOGRA" + - "PH-2F97ECJK COMPATIBILITY IDEOGRAPH-2F97FCJK COMPATIBILITY IDEOGRAPH-2F9" + - "80CJK COMPATIBILITY IDEOGRAPH-2F981CJK COMPATIBILITY IDEOGRAPH-2F982CJK " + - "COMPATIBILITY IDEOGRAPH-2F983CJK COMPATIBILITY IDEOGRAPH-2F984CJK COMPAT" + - "IBILITY IDEOGRAPH-2F985CJK COMPATIBILITY IDEOGRAPH-2F986CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F987CJK COMPATIBILITY IDEOGRAPH-2F988CJK COMPATIBILITY IDEO" + - "GRAPH-2F989CJK COMPATIBILITY IDEOGRAPH-2F98ACJK COMPATIBILITY IDEOGRAPH-" + - "2F98BCJK COMPATIBILITY IDEOGRAPH-2F98CCJK COMPATIBILITY IDEOGRAPH-2F98DC" + - "JK COMPATIBILITY IDEOGRAPH-2F98ECJK COMPATIBILITY IDEOGRAPH-2F98FCJK COM" + - "PATIBILITY IDEOGRAPH-2F990CJK COMPATIBILITY IDEOGRAPH-2F991CJK COMPATIBI" + - "LITY IDEOGRAPH-2F992CJK COMPATIBILITY IDEOGRAPH-2F993CJK COMPATIBILITY I" + - "DEOGRAPH-2F994CJK COMPATIBILITY IDEOGRAPH-2F995CJK COMPATIBILITY IDEOGRA" + - "PH-2F996CJK COMPATIBILITY IDEOGRAPH-2F997CJK COMPATIBILITY IDEOGRAPH-2F9" + - "98CJK COMPATIBILITY IDEOGRAPH-2F999CJK COMPATIBILITY IDEOGRAPH-2F99ACJK " + - "COMPATIBILITY IDEOGRAPH-2F99BCJK COMPATIBILITY IDEOGRAPH-2F99CCJK COMPAT" + - "IBILITY IDEOGRAPH-2F99DCJK COMPATIBILITY IDEOGRAPH-2F99ECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F99FCJK COMPATIBILITY IDEOGRAPH-2F9A0CJK COMPATIBILITY IDEO" + - "GRAPH-2F9A1CJK COMPATIBILITY IDEOGRAPH-2F9A2CJK COMPATIBILITY IDEOGRAPH-" + - "2F9A3CJK COMPATIBILITY IDEOGRAPH-2F9A4CJK COMPATIBILITY IDEOGRAPH-2F9A5C" + - "JK COMPATIBILITY IDEOGRAPH-2F9A6CJK COMPATIBILITY IDEOGRAPH-2F9A7CJK COM" + - "PATIBILITY IDEOGRAPH-2F9A8CJK COMPATIBILITY IDEOGRAPH-2F9A9CJK COMPATIBI" + - "LITY IDEOGRAPH-2F9AACJK COMPATIBILITY IDEOGRAPH-2F9ABCJK COMPATIBILITY I" + - "DEOGRAPH-2F9ACCJK COMPATIBILITY IDEOGRAPH-2F9ADCJK COMPATIBILITY IDEOGRA" + - "PH-2F9AECJK COMPATIBILITY IDEOGRAPH-2F9AFCJK COMPATIBILITY IDEOGRAPH-2F9" + - "B0CJK COMPATIBILITY IDEOGRAPH-2F9B1CJK COMPATIBILITY IDEOGRAPH-2F9B2CJK " + - "COMPATIBILITY IDEOGRAPH-2F9B3CJK COMPATIBILITY IDEOGRAPH-2F9B4CJK COMPAT" + - "IBILITY IDEOGRAPH-2F9B5CJK COMPATIBILITY IDEOGRAPH-2F9B6CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F9B7CJK COMPATIBILITY IDEOGRAPH-2F9B8CJK COMPATIBILITY IDEO" + - "GRAPH-2F9B9CJK COMPATIBILITY IDEOGRAPH-2F9BACJK COMPATIBILITY IDEOGRAPH-" + - "2F9BBCJK COMPATIBILITY IDEOGRAPH-2F9BCCJK COMPATIBILITY IDEOGRAPH-2F9BDC" + - "JK COMPATIBILITY IDEOGRAPH-2F9BECJK COMPATIBILITY IDEOGRAPH-2F9BFCJK COM" + - "PATIBILITY IDEOGRAPH-2F9C0CJK COMPATIBILITY IDEOGRAPH-2F9C1CJK COMPATIBI" + - "LITY IDEOGRAPH-2F9C2CJK COMPATIBILITY IDEOGRAPH-2F9C3CJK COMPATIBILITY I" + - "DEOGRAPH-2F9C4CJK COMPATIBILITY IDEOGRAPH-2F9C5CJK COMPATIBILITY IDEOGRA" + - "PH-2F9C6CJK COMPATIBILITY IDEOGRAPH-2F9C7CJK COMPATIBILITY IDEOGRAPH-2F9" + - "C8CJK COMPATIBILITY IDEOGRAPH-2F9C9CJK COMPATIBILITY IDEOGRAPH-2F9CACJK " + - "COMPATIBILITY IDEOGRAPH-2F9CBCJK COMPATIBILITY IDEOGRAPH-2F9CCCJK COMPAT" + - "IBILITY IDEOGRAPH-2F9CDCJK COMPATIBILITY IDEOGRAPH-2F9CECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F9CFCJK COMPATIBILITY IDEOGRAPH-2F9D0CJK COMPATIBILITY IDEO" + - "GRAPH-2F9D1CJK COMPATIBILITY IDEOGRAPH-2F9D2CJK COMPATIBILITY IDEOGRAPH-" + - "2F9D3CJK COMPATIBILITY IDEOGRAPH-2F9D4CJK COMPATIBILITY IDEOGRAPH-2F9D5C" + - "JK COMPATIBILITY IDEOGRAPH-2F9D6CJK COMPATIBILITY IDEOGRAPH-2F9D7CJK COM" + - "PATIBILITY IDEOGRAPH-2F9D8CJK COMPATIBILITY IDEOGRAPH-2F9D9CJK COMPATIBI" + - "LITY IDEOGRAPH-2F9DACJK COMPATIBILITY IDEOGRAPH-2F9DBCJK COMPATIBILITY I" + - "DEOGRAPH-2F9DCCJK COMPATIBILITY IDEOGRAPH-2F9DDCJK COMPATIBILITY IDEOGRA" + - "PH-2F9DECJK COMPATIBILITY IDEOGRAPH-2F9DFCJK COMPATIBILITY IDEOGRAPH-2F9" + - "E0CJK COMPATIBILITY IDEOGRAPH-2F9E1CJK COMPATIBILITY IDEOGRAPH-2F9E2CJK " + - "COMPATIBILITY IDEOGRAPH-2F9E3CJK COMPATIBILITY IDEOGRAPH-2F9E4CJK COMPAT" + - "IBILITY IDEOGRAPH-2F9E5CJK COMPATIBILITY IDEOGRAPH-2F9E6CJK COMPATIBILIT" + - "Y IDEOGRAPH-2F9E7CJK COMPATIBILITY IDEOGRAPH-2F9E8CJK COMPATIBILITY IDEO") + ("" + - "GRAPH-2F9E9CJK COMPATIBILITY IDEOGRAPH-2F9EACJK COMPATIBILITY IDEOGRAPH-" + - "2F9EBCJK COMPATIBILITY IDEOGRAPH-2F9ECCJK COMPATIBILITY IDEOGRAPH-2F9EDC" + - "JK COMPATIBILITY IDEOGRAPH-2F9EECJK COMPATIBILITY IDEOGRAPH-2F9EFCJK COM" + - "PATIBILITY IDEOGRAPH-2F9F0CJK COMPATIBILITY IDEOGRAPH-2F9F1CJK COMPATIBI" + - "LITY IDEOGRAPH-2F9F2CJK COMPATIBILITY IDEOGRAPH-2F9F3CJK COMPATIBILITY I" + - "DEOGRAPH-2F9F4CJK COMPATIBILITY IDEOGRAPH-2F9F5CJK COMPATIBILITY IDEOGRA" + - "PH-2F9F6CJK COMPATIBILITY IDEOGRAPH-2F9F7CJK COMPATIBILITY IDEOGRAPH-2F9" + - "F8CJK COMPATIBILITY IDEOGRAPH-2F9F9CJK COMPATIBILITY IDEOGRAPH-2F9FACJK " + - "COMPATIBILITY IDEOGRAPH-2F9FBCJK COMPATIBILITY IDEOGRAPH-2F9FCCJK COMPAT" + - "IBILITY IDEOGRAPH-2F9FDCJK COMPATIBILITY IDEOGRAPH-2F9FECJK COMPATIBILIT" + - "Y IDEOGRAPH-2F9FFCJK COMPATIBILITY IDEOGRAPH-2FA00CJK COMPATIBILITY IDEO" + - "GRAPH-2FA01CJK COMPATIBILITY IDEOGRAPH-2FA02CJK COMPATIBILITY IDEOGRAPH-" + - "2FA03CJK COMPATIBILITY IDEOGRAPH-2FA04CJK COMPATIBILITY IDEOGRAPH-2FA05C" + - "JK COMPATIBILITY IDEOGRAPH-2FA06CJK COMPATIBILITY IDEOGRAPH-2FA07CJK COM" + - "PATIBILITY IDEOGRAPH-2FA08CJK COMPATIBILITY IDEOGRAPH-2FA09CJK COMPATIBI" + - "LITY IDEOGRAPH-2FA0ACJK COMPATIBILITY IDEOGRAPH-2FA0BCJK COMPATIBILITY I" + - "DEOGRAPH-2FA0CCJK COMPATIBILITY IDEOGRAPH-2FA0DCJK COMPATIBILITY IDEOGRA" + - "PH-2FA0ECJK COMPATIBILITY IDEOGRAPH-2FA0FCJK COMPATIBILITY IDEOGRAPH-2FA" + - "10CJK COMPATIBILITY IDEOGRAPH-2FA11CJK COMPATIBILITY IDEOGRAPH-2FA12CJK " + - "COMPATIBILITY IDEOGRAPH-2FA13CJK COMPATIBILITY IDEOGRAPH-2FA14CJK COMPAT" + - "IBILITY IDEOGRAPH-2FA15CJK COMPATIBILITY IDEOGRAPH-2FA16CJK COMPATIBILIT" + - "Y IDEOGRAPH-2FA17CJK COMPATIBILITY IDEOGRAPH-2FA18CJK COMPATIBILITY IDEO" + - "GRAPH-2FA19CJK COMPATIBILITY IDEOGRAPH-2FA1ACJK COMPATIBILITY IDEOGRAPH-" + - "2FA1BCJK COMPATIBILITY IDEOGRAPH-2FA1CCJK COMPATIBILITY IDEOGRAPH-2FA1DL" + - "ANGUAGE TAGTAG SPACETAG EXCLAMATION MARKTAG QUOTATION MARKTAG NUMBER SIG" + - "NTAG DOLLAR SIGNTAG PERCENT SIGNTAG AMPERSANDTAG APOSTROPHETAG LEFT PARE" + - "NTHESISTAG RIGHT PARENTHESISTAG ASTERISKTAG PLUS SIGNTAG COMMATAG HYPHEN" + - "-MINUSTAG FULL STOPTAG SOLIDUSTAG DIGIT ZEROTAG DIGIT ONETAG DIGIT TWOTA" + - "G DIGIT THREETAG DIGIT FOURTAG DIGIT FIVETAG DIGIT SIXTAG DIGIT SEVENTAG" + - " DIGIT EIGHTTAG DIGIT NINETAG COLONTAG SEMICOLONTAG LESS-THAN SIGNTAG EQ" + - "UALS SIGNTAG GREATER-THAN SIGNTAG QUESTION MARKTAG COMMERCIAL ATTAG LATI" + - "N CAPITAL LETTER ATAG LATIN CAPITAL LETTER BTAG LATIN CAPITAL LETTER CTA" + - "G LATIN CAPITAL LETTER DTAG LATIN CAPITAL LETTER ETAG LATIN CAPITAL LETT" + - "ER FTAG LATIN CAPITAL LETTER GTAG LATIN CAPITAL LETTER HTAG LATIN CAPITA" + - "L LETTER ITAG LATIN CAPITAL LETTER JTAG LATIN CAPITAL LETTER KTAG LATIN " + - "CAPITAL LETTER LTAG LATIN CAPITAL LETTER MTAG LATIN CAPITAL LETTER NTAG " + - "LATIN CAPITAL LETTER OTAG LATIN CAPITAL LETTER PTAG LATIN CAPITAL LETTER" + - " QTAG LATIN CAPITAL LETTER RTAG LATIN CAPITAL LETTER STAG LATIN CAPITAL " + - "LETTER TTAG LATIN CAPITAL LETTER UTAG LATIN CAPITAL LETTER VTAG LATIN CA" + - "PITAL LETTER WTAG LATIN CAPITAL LETTER XTAG LATIN CAPITAL LETTER YTAG LA" + - "TIN CAPITAL LETTER ZTAG LEFT SQUARE BRACKETTAG REVERSE SOLIDUSTAG RIGHT " + - "SQUARE BRACKETTAG CIRCUMFLEX ACCENTTAG LOW LINETAG GRAVE ACCENTTAG LATIN" + - " SMALL LETTER ATAG LATIN SMALL LETTER BTAG LATIN SMALL LETTER CTAG LATIN" + - " SMALL LETTER DTAG LATIN SMALL LETTER ETAG LATIN SMALL LETTER FTAG LATIN" + - " SMALL LETTER GTAG LATIN SMALL LETTER HTAG LATIN SMALL LETTER ITAG LATIN" + - " SMALL LETTER JTAG LATIN SMALL LETTER KTAG LATIN SMALL LETTER LTAG LATIN" + - " SMALL LETTER MTAG LATIN SMALL LETTER NTAG LATIN SMALL LETTER OTAG LATIN" + - " SMALL LETTER PTAG LATIN SMALL LETTER QTAG LATIN SMALL LETTER RTAG LATIN" + - " SMALL LETTER STAG LATIN SMALL LETTER TTAG LATIN SMALL LETTER UTAG LATIN" + - " SMALL LETTER VTAG LATIN SMALL LETTER WTAG LATIN SMALL LETTER XTAG LATIN" + - " SMALL LETTER YTAG LATIN SMALL LETTER ZTAG LEFT CURLY BRACKETTAG VERTICA" + - "L LINETAG RIGHT CURLY BRACKETTAG TILDECANCEL TAGVARIATION SELECTOR-17VAR" + - "IATION SELECTOR-18VARIATION SELECTOR-19VARIATION SELECTOR-20VARIATION SE" + - "LECTOR-21VARIATION SELECTOR-22VARIATION SELECTOR-23VARIATION SELECTOR-24" + - "VARIATION SELECTOR-25VARIATION SELECTOR-26VARIATION SELECTOR-27VARIATION" + - " SELECTOR-28VARIATION SELECTOR-29VARIATION SELECTOR-30VARIATION SELECTOR" + - "-31VARIATION SELECTOR-32VARIATION SELECTOR-33VARIATION SELECTOR-34VARIAT" + - "ION SELECTOR-35VARIATION SELECTOR-36VARIATION SELECTOR-37VARIATION SELEC" + - "TOR-38VARIATION SELECTOR-39VARIATION SELECTOR-40VARIATION SELECTOR-41VAR" + - "IATION SELECTOR-42VARIATION SELECTOR-43VARIATION SELECTOR-44VARIATION SE" + - "LECTOR-45VARIATION SELECTOR-46VARIATION SELECTOR-47VARIATION SELECTOR-48" + - "VARIATION SELECTOR-49VARIATION SELECTOR-50VARIATION SELECTOR-51VARIATION" + - " SELECTOR-52VARIATION SELECTOR-53VARIATION SELECTOR-54VARIATION SELECTOR" + - "-55VARIATION SELECTOR-56VARIATION SELECTOR-57VARIATION SELECTOR-58VARIAT") + ("" + - "ION SELECTOR-59VARIATION SELECTOR-60VARIATION SELECTOR-61VARIATION SELEC" + - "TOR-62VARIATION SELECTOR-63VARIATION SELECTOR-64VARIATION SELECTOR-65VAR" + - "IATION SELECTOR-66VARIATION SELECTOR-67VARIATION SELECTOR-68VARIATION SE" + - "LECTOR-69VARIATION SELECTOR-70VARIATION SELECTOR-71VARIATION SELECTOR-72" + - "VARIATION SELECTOR-73VARIATION SELECTOR-74VARIATION SELECTOR-75VARIATION" + - " SELECTOR-76VARIATION SELECTOR-77VARIATION SELECTOR-78VARIATION SELECTOR" + - "-79VARIATION SELECTOR-80VARIATION SELECTOR-81VARIATION SELECTOR-82VARIAT" + - "ION SELECTOR-83VARIATION SELECTOR-84VARIATION SELECTOR-85VARIATION SELEC" + - "TOR-86VARIATION SELECTOR-87VARIATION SELECTOR-88VARIATION SELECTOR-89VAR" + - "IATION SELECTOR-90VARIATION SELECTOR-91VARIATION SELECTOR-92VARIATION SE" + - "LECTOR-93VARIATION SELECTOR-94VARIATION SELECTOR-95VARIATION SELECTOR-96" + - "VARIATION SELECTOR-97VARIATION SELECTOR-98VARIATION SELECTOR-99VARIATION" + - " SELECTOR-100VARIATION SELECTOR-101VARIATION SELECTOR-102VARIATION SELEC" + - "TOR-103VARIATION SELECTOR-104VARIATION SELECTOR-105VARIATION SELECTOR-10" + - "6VARIATION SELECTOR-107VARIATION SELECTOR-108VARIATION SELECTOR-109VARIA" + - "TION SELECTOR-110VARIATION SELECTOR-111VARIATION SELECTOR-112VARIATION S" + - "ELECTOR-113VARIATION SELECTOR-114VARIATION SELECTOR-115VARIATION SELECTO" + - "R-116VARIATION SELECTOR-117VARIATION SELECTOR-118VARIATION SELECTOR-119V" + - "ARIATION SELECTOR-120VARIATION SELECTOR-121VARIATION SELECTOR-122VARIATI" + - "ON SELECTOR-123VARIATION SELECTOR-124VARIATION SELECTOR-125VARIATION SEL" + - "ECTOR-126VARIATION SELECTOR-127VARIATION SELECTOR-128VARIATION SELECTOR-" + - "129VARIATION SELECTOR-130VARIATION SELECTOR-131VARIATION SELECTOR-132VAR" + - "IATION SELECTOR-133VARIATION SELECTOR-134VARIATION SELECTOR-135VARIATION" + - " SELECTOR-136VARIATION SELECTOR-137VARIATION SELECTOR-138VARIATION SELEC" + - "TOR-139VARIATION SELECTOR-140VARIATION SELECTOR-141VARIATION SELECTOR-14" + - "2VARIATION SELECTOR-143VARIATION SELECTOR-144VARIATION SELECTOR-145VARIA" + - "TION SELECTOR-146VARIATION SELECTOR-147VARIATION SELECTOR-148VARIATION S" + - "ELECTOR-149VARIATION SELECTOR-150VARIATION SELECTOR-151VARIATION SELECTO" + - "R-152VARIATION SELECTOR-153VARIATION SELECTOR-154VARIATION SELECTOR-155V" + - "ARIATION SELECTOR-156VARIATION SELECTOR-157VARIATION SELECTOR-158VARIATI" + - "ON SELECTOR-159VARIATION SELECTOR-160VARIATION SELECTOR-161VARIATION SEL" + - "ECTOR-162VARIATION SELECTOR-163VARIATION SELECTOR-164VARIATION SELECTOR-" + - "165VARIATION SELECTOR-166VARIATION SELECTOR-167VARIATION SELECTOR-168VAR" + - "IATION SELECTOR-169VARIATION SELECTOR-170VARIATION SELECTOR-171VARIATION" + - " SELECTOR-172VARIATION SELECTOR-173VARIATION SELECTOR-174VARIATION SELEC" + - "TOR-175VARIATION SELECTOR-176VARIATION SELECTOR-177VARIATION SELECTOR-17" + - "8VARIATION SELECTOR-179VARIATION SELECTOR-180VARIATION SELECTOR-181VARIA" + - "TION SELECTOR-182VARIATION SELECTOR-183VARIATION SELECTOR-184VARIATION S" + - "ELECTOR-185VARIATION SELECTOR-186VARIATION SELECTOR-187VARIATION SELECTO" + - "R-188VARIATION SELECTOR-189VARIATION SELECTOR-190VARIATION SELECTOR-191V" + - "ARIATION SELECTOR-192VARIATION SELECTOR-193VARIATION SELECTOR-194VARIATI" + - "ON SELECTOR-195VARIATION SELECTOR-196VARIATION SELECTOR-197VARIATION SEL" + - "ECTOR-198VARIATION SELECTOR-199VARIATION SELECTOR-200VARIATION SELECTOR-" + - "201VARIATION SELECTOR-202VARIATION SELECTOR-203VARIATION SELECTOR-204VAR" + - "IATION SELECTOR-205VARIATION SELECTOR-206VARIATION SELECTOR-207VARIATION" + - " SELECTOR-208VARIATION SELECTOR-209VARIATION SELECTOR-210VARIATION SELEC" + - "TOR-211VARIATION SELECTOR-212VARIATION SELECTOR-213VARIATION SELECTOR-21" + - "4VARIATION SELECTOR-215VARIATION SELECTOR-216VARIATION SELECTOR-217VARIA" + - "TION SELECTOR-218VARIATION SELECTOR-219VARIATION SELECTOR-220VARIATION S" + - "ELECTOR-221VARIATION SELECTOR-222VARIATION SELECTOR-223VARIATION SELECTO" + - "R-224VARIATION SELECTOR-225VARIATION SELECTOR-226VARIATION SELECTOR-227V" + - "ARIATION SELECTOR-228VARIATION SELECTOR-229VARIATION SELECTOR-230VARIATI" + - "ON SELECTOR-231VARIATION SELECTOR-232VARIATION SELECTOR-233VARIATION SEL" + - "ECTOR-234VARIATION SELECTOR-235VARIATION SELECTOR-236VARIATION SELECTOR-" + - "237VARIATION SELECTOR-238VARIATION SELECTOR-239VARIATION SELECTOR-240VAR" + - "IATION SELECTOR-241VARIATION SELECTOR-242VARIATION SELECTOR-243VARIATION" + - " SELECTOR-244VARIATION SELECTOR-245VARIATION SELECTOR-246VARIATION SELEC" + - "TOR-247VARIATION SELECTOR-248VARIATION SELECTOR-249VARIATION SELECTOR-25" + - "0VARIATION SELECTOR-251VARIATION SELECTOR-252VARIATION SELECTOR-253VARIA" + - "TION SELECTOR-254VARIATION SELECTOR-255VARIATION SELECTOR-256") - -// Total table size 855081 bytes (835KiB); checksum: 98E3EADD diff --git a/vendor/golang.org/x/text/width/common_test.go b/vendor/golang.org/x/text/width/common_test.go deleted file mode 100644 index 9ebb782c..00000000 --- a/vendor/golang.org/x/text/width/common_test.go +++ /dev/null @@ -1,92 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package width - -// This code is shared between the main code generator and the test code. - -import ( - "flag" - "log" - "strconv" - "strings" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/ucd" -) - -var ( - outputFile = flag.String("out", "tables.go", "output file") -) - -var typeMap = map[string]elem{ - "A": tagAmbiguous, - "N": tagNeutral, - "Na": tagNarrow, - "W": tagWide, - "F": tagFullwidth, - "H": tagHalfwidth, -} - -// getWidthData calls f for every entry for which it is defined. -// -// f may be called multiple times for the same rune. The last call to f is the -// correct value. f is not called for all runes. The default tag type is -// Neutral. -func getWidthData(f func(r rune, tag elem, alt rune)) { - // Set the default values for Unified Ideographs. In line with Annex 11, - // we encode full ranges instead of the defined runes in Unified_Ideograph. - for _, b := range []struct{ lo, hi rune }{ - {0x4E00, 0x9FFF}, // the CJK Unified Ideographs block, - {0x3400, 0x4DBF}, // the CJK Unified Ideographs Externsion A block, - {0xF900, 0xFAFF}, // the CJK Compatibility Ideographs block, - {0x20000, 0x2FFFF}, // the Supplementary Ideographic Plane, - {0x30000, 0x3FFFF}, // the Tertiary Ideographic Plane, - } { - for r := b.lo; r <= b.hi; r++ { - f(r, tagWide, 0) - } - } - - inverse := map[rune]rune{} - maps := map[string]bool{ - "<wide>": true, - "<narrow>": true, - } - - // We cannot reuse package norm's decomposition, as we need an unexpanded - // decomposition. We make use of the opportunity to verify that the - // decomposition type is as expected. - ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - s := strings.SplitN(p.String(ucd.DecompMapping), " ", 2) - if !maps[s[0]] { - return - } - x, err := strconv.ParseUint(s[1], 16, 32) - if err != nil { - log.Fatalf("Error parsing rune %q", s[1]) - } - if inverse[r] != 0 || inverse[rune(x)] != 0 { - log.Fatalf("Circular dependency in mapping between %U and %U", r, x) - } - inverse[r] = rune(x) - inverse[rune(x)] = r - }) - - // <rune range>;<type> - ucd.Parse(gen.OpenUCDFile("EastAsianWidth.txt"), func(p *ucd.Parser) { - tag, ok := typeMap[p.String(1)] - if !ok { - log.Fatalf("Unknown width type %q", p.String(1)) - } - r := p.Rune(0) - alt, ok := inverse[r] - if tag == tagFullwidth || tag == tagHalfwidth && r != wonSign { - tag |= tagNeedsFold - if !ok { - log.Fatalf("Narrow or wide rune %U has no decomposition", r) - } - } - f(r, tag, alt) - }) -} diff --git a/vendor/golang.org/x/text/width/example_test.go b/vendor/golang.org/x/text/width/example_test.go deleted file mode 100644 index 62adba66..00000000 --- a/vendor/golang.org/x/text/width/example_test.go +++ /dev/null @@ -1,52 +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 width_test - -import ( - "fmt" - - "golang.org/x/text/width" -) - -func ExampleTransformer_fold() { - s := "abヲ₩○¥A" - f := width.Fold.String(s) - fmt.Printf("%U: %s\n", []rune(s), s) - fmt.Printf("%U: %s\n", []rune(f), f) - - // Output: - // [U+0061 U+0062 U+FF66 U+FFE6 U+FFEE U+FFE5 U+FF21]: abヲ₩○¥A - // [U+0061 U+0062 U+30F2 U+20A9 U+25CB U+00A5 U+0041]: abヲ₩○¥A -} - -func ExampleTransformer_widen() { - s := "ab¥ヲ₩○" - w := width.Widen.String(s) - fmt.Printf("%U: %s\n", []rune(s), s) - fmt.Printf("%U: %s\n", []rune(w), w) - - // Output: - // [U+0061 U+0062 U+00A5 U+FF66 U+20A9 U+FFEE]: ab¥ヲ₩○ - // [U+FF41 U+FF42 U+FFE5 U+30F2 U+FFE6 U+25CB]: ab¥ヲ₩○ -} - -func ExampleTransformer_narrow() { - s := "abヲ₩○¥A" - n := width.Narrow.String(s) - fmt.Printf("%U: %s\n", []rune(s), s) - fmt.Printf("%U: %s\n", []rune(n), n) - - // Ambiguous characters with a halfwidth equivalent get mapped as well. - s = "←" - n = width.Narrow.String(s) - fmt.Printf("%U: %s\n", []rune(s), s) - fmt.Printf("%U: %s\n", []rune(n), n) - - // Output: - // [U+0061 U+0062 U+30F2 U+FFE6 U+25CB U+FFE5 U+FF21]: abヲ₩○¥A - // [U+0061 U+0062 U+FF66 U+20A9 U+FFEE U+00A5 U+0041]: abヲ₩○¥A - // [U+2190]: ← - // [U+FFE9]: ← -} diff --git a/vendor/golang.org/x/text/width/gen.go b/vendor/golang.org/x/text/width/gen.go deleted file mode 100644 index 092277e1..00000000 --- a/vendor/golang.org/x/text/width/gen.go +++ /dev/null @@ -1,115 +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. - -// +build ignore - -// This program generates the trie for width operations. The generated table -// includes width category information as well as the normalization mappings. -package main - -import ( - "bytes" - "fmt" - "io" - "log" - "math" - "unicode/utf8" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/triegen" -) - -// See gen_common.go for flags. - -func main() { - gen.Init() - genTables() - genTests() - gen.Repackage("gen_trieval.go", "trieval.go", "width") - gen.Repackage("gen_common.go", "common_test.go", "width") -} - -func genTables() { - t := triegen.NewTrie("width") - // fold and inverse mappings. See mapComment for a description of the format - // of each entry. Add dummy value to make an index of 0 mean no mapping. - inverse := [][4]byte{{}} - mapping := map[[4]byte]int{[4]byte{}: 0} - - getWidthData(func(r rune, tag elem, alt rune) { - idx := 0 - if alt != 0 { - var buf [4]byte - buf[0] = byte(utf8.EncodeRune(buf[1:], alt)) - s := string(r) - buf[buf[0]] ^= s[len(s)-1] - var ok bool - if idx, ok = mapping[buf]; !ok { - idx = len(mapping) - if idx > math.MaxUint8 { - log.Fatalf("Index %d does not fit in a byte.", idx) - } - mapping[buf] = idx - inverse = append(inverse, buf) - } - } - t.Insert(r, uint64(tag|elem(idx))) - }) - - w := &bytes.Buffer{} - gen.WriteUnicodeVersion(w) - - sz, err := t.Gen(w) - if err != nil { - log.Fatal(err) - } - - sz += writeMappings(w, inverse) - - fmt.Fprintf(w, "// Total table size %d bytes (%dKiB)\n", sz, sz/1024) - - gen.WriteVersionedGoFile(*outputFile, "width", w.Bytes()) -} - -const inverseDataComment = ` -// inverseData contains 4-byte entries of the following format: -// <length> <modified UTF-8-encoded rune> <0 padding> -// The last byte of the UTF-8-encoded rune is xor-ed with the last byte of the -// UTF-8 encoding of the original rune. Mappings often have the following -// pattern: -// A -> A (U+FF21 -> U+0041) -// B -> B (U+FF22 -> U+0042) -// ... -// By xor-ing the last byte the same entry can be shared by many mappings. This -// reduces the total number of distinct entries by about two thirds. -// The resulting entry for the aforementioned mappings is -// { 0x01, 0xE0, 0x00, 0x00 } -// Using this entry to map U+FF21 (UTF-8 [EF BC A1]), we get -// E0 ^ A1 = 41. -// Similarly, for U+FF22 (UTF-8 [EF BC A2]), we get -// E0 ^ A2 = 42. -// Note that because of the xor-ing, the byte sequence stored in the entry is -// not valid UTF-8.` - -func writeMappings(w io.Writer, data [][4]byte) int { - fmt.Fprintln(w, inverseDataComment) - fmt.Fprintf(w, "var inverseData = [%d][4]byte{\n", len(data)) - for _, x := range data { - fmt.Fprintf(w, "{ 0x%02x, 0x%02x, 0x%02x, 0x%02x },\n", x[0], x[1], x[2], x[3]) - } - fmt.Fprintln(w, "}") - return len(data) * 4 -} - -func genTests() { - w := &bytes.Buffer{} - fmt.Fprintf(w, "\nvar mapRunes = map[rune]struct{r rune; e elem}{\n") - getWidthData(func(r rune, tag elem, alt rune) { - if alt != 0 { - fmt.Fprintf(w, "\t0x%X: {0x%X, 0x%X},\n", r, alt, tag) - } - }) - fmt.Fprintln(w, "}") - gen.WriteGoFile("runes_test.go", "width", w.Bytes()) -} diff --git a/vendor/golang.org/x/text/width/gen_common.go b/vendor/golang.org/x/text/width/gen_common.go deleted file mode 100644 index 601e7526..00000000 --- a/vendor/golang.org/x/text/width/gen_common.go +++ /dev/null @@ -1,96 +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. - -// +build ignore - -package main - -// This code is shared between the main code generator and the test code. - -import ( - "flag" - "log" - "strconv" - "strings" - - "golang.org/x/text/internal/gen" - "golang.org/x/text/internal/ucd" -) - -var ( - outputFile = flag.String("out", "tables.go", "output file") -) - -var typeMap = map[string]elem{ - "A": tagAmbiguous, - "N": tagNeutral, - "Na": tagNarrow, - "W": tagWide, - "F": tagFullwidth, - "H": tagHalfwidth, -} - -// getWidthData calls f for every entry for which it is defined. -// -// f may be called multiple times for the same rune. The last call to f is the -// correct value. f is not called for all runes. The default tag type is -// Neutral. -func getWidthData(f func(r rune, tag elem, alt rune)) { - // Set the default values for Unified Ideographs. In line with Annex 11, - // we encode full ranges instead of the defined runes in Unified_Ideograph. - for _, b := range []struct{ lo, hi rune }{ - {0x4E00, 0x9FFF}, // the CJK Unified Ideographs block, - {0x3400, 0x4DBF}, // the CJK Unified Ideographs Externsion A block, - {0xF900, 0xFAFF}, // the CJK Compatibility Ideographs block, - {0x20000, 0x2FFFF}, // the Supplementary Ideographic Plane, - {0x30000, 0x3FFFF}, // the Tertiary Ideographic Plane, - } { - for r := b.lo; r <= b.hi; r++ { - f(r, tagWide, 0) - } - } - - inverse := map[rune]rune{} - maps := map[string]bool{ - "<wide>": true, - "<narrow>": true, - } - - // We cannot reuse package norm's decomposition, as we need an unexpanded - // decomposition. We make use of the opportunity to verify that the - // decomposition type is as expected. - ucd.Parse(gen.OpenUCDFile("UnicodeData.txt"), func(p *ucd.Parser) { - r := p.Rune(0) - s := strings.SplitN(p.String(ucd.DecompMapping), " ", 2) - if !maps[s[0]] { - return - } - x, err := strconv.ParseUint(s[1], 16, 32) - if err != nil { - log.Fatalf("Error parsing rune %q", s[1]) - } - if inverse[r] != 0 || inverse[rune(x)] != 0 { - log.Fatalf("Circular dependency in mapping between %U and %U", r, x) - } - inverse[r] = rune(x) - inverse[rune(x)] = r - }) - - // <rune range>;<type> - ucd.Parse(gen.OpenUCDFile("EastAsianWidth.txt"), func(p *ucd.Parser) { - tag, ok := typeMap[p.String(1)] - if !ok { - log.Fatalf("Unknown width type %q", p.String(1)) - } - r := p.Rune(0) - alt, ok := inverse[r] - if tag == tagFullwidth || tag == tagHalfwidth && r != wonSign { - tag |= tagNeedsFold - if !ok { - log.Fatalf("Narrow or wide rune %U has no decomposition", r) - } - } - f(r, tag, alt) - }) -} diff --git a/vendor/golang.org/x/text/width/gen_trieval.go b/vendor/golang.org/x/text/width/gen_trieval.go deleted file mode 100644 index c17334aa..00000000 --- a/vendor/golang.org/x/text/width/gen_trieval.go +++ /dev/null @@ -1,34 +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. - -// +build ignore - -package main - -// elem is an entry of the width trie. The high byte is used to encode the type -// of the rune. The low byte is used to store the index to a mapping entry in -// the inverseData array. -type elem uint16 - -const ( - tagNeutral elem = iota << typeShift - tagAmbiguous - tagWide - tagNarrow - tagFullwidth - tagHalfwidth -) - -const ( - numTypeBits = 3 - typeShift = 16 - numTypeBits - - // tagNeedsFold is true for all fullwidth and halfwidth runes except for - // the Won sign U+20A9. - tagNeedsFold = 0x1000 - - // The Korean Won sign is halfwidth, but SHOULD NOT be mapped to a wide - // variant. - wonSign rune = 0x20A9 -) diff --git a/vendor/golang.org/x/text/width/kind_string.go b/vendor/golang.org/x/text/width/kind_string.go deleted file mode 100644 index 49bfbf72..00000000 --- a/vendor/golang.org/x/text/width/kind_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type=Kind"; DO NOT EDIT. - -package width - -import "fmt" - -const _Kind_name = "NeutralEastAsianAmbiguousEastAsianWideEastAsianNarrowEastAsianFullwidthEastAsianHalfwidth" - -var _Kind_index = [...]uint8{0, 7, 25, 38, 53, 71, 89} - -func (i Kind) String() string { - if i < 0 || i >= Kind(len(_Kind_index)-1) { - return fmt.Sprintf("Kind(%d)", i) - } - return _Kind_name[_Kind_index[i]:_Kind_index[i+1]] -} diff --git a/vendor/golang.org/x/text/width/runes_test.go b/vendor/golang.org/x/text/width/runes_test.go deleted file mode 100644 index 587dab4e..00000000 --- a/vendor/golang.org/x/text/width/runes_test.go +++ /dev/null @@ -1,461 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package width - -var mapRunes = map[rune]struct { - r rune - e elem -}{ - 0x20: {0x3000, 0x6000}, - 0x21: {0xFF01, 0x6000}, - 0x22: {0xFF02, 0x6000}, - 0x23: {0xFF03, 0x6000}, - 0x24: {0xFF04, 0x6000}, - 0x25: {0xFF05, 0x6000}, - 0x26: {0xFF06, 0x6000}, - 0x27: {0xFF07, 0x6000}, - 0x28: {0xFF08, 0x6000}, - 0x29: {0xFF09, 0x6000}, - 0x2A: {0xFF0A, 0x6000}, - 0x2B: {0xFF0B, 0x6000}, - 0x2C: {0xFF0C, 0x6000}, - 0x2D: {0xFF0D, 0x6000}, - 0x2E: {0xFF0E, 0x6000}, - 0x2F: {0xFF0F, 0x6000}, - 0x30: {0xFF10, 0x6000}, - 0x31: {0xFF11, 0x6000}, - 0x32: {0xFF12, 0x6000}, - 0x33: {0xFF13, 0x6000}, - 0x34: {0xFF14, 0x6000}, - 0x35: {0xFF15, 0x6000}, - 0x36: {0xFF16, 0x6000}, - 0x37: {0xFF17, 0x6000}, - 0x38: {0xFF18, 0x6000}, - 0x39: {0xFF19, 0x6000}, - 0x3A: {0xFF1A, 0x6000}, - 0x3B: {0xFF1B, 0x6000}, - 0x3C: {0xFF1C, 0x6000}, - 0x3D: {0xFF1D, 0x6000}, - 0x3E: {0xFF1E, 0x6000}, - 0x3F: {0xFF1F, 0x6000}, - 0x40: {0xFF20, 0x6000}, - 0x41: {0xFF21, 0x6000}, - 0x42: {0xFF22, 0x6000}, - 0x43: {0xFF23, 0x6000}, - 0x44: {0xFF24, 0x6000}, - 0x45: {0xFF25, 0x6000}, - 0x46: {0xFF26, 0x6000}, - 0x47: {0xFF27, 0x6000}, - 0x48: {0xFF28, 0x6000}, - 0x49: {0xFF29, 0x6000}, - 0x4A: {0xFF2A, 0x6000}, - 0x4B: {0xFF2B, 0x6000}, - 0x4C: {0xFF2C, 0x6000}, - 0x4D: {0xFF2D, 0x6000}, - 0x4E: {0xFF2E, 0x6000}, - 0x4F: {0xFF2F, 0x6000}, - 0x50: {0xFF30, 0x6000}, - 0x51: {0xFF31, 0x6000}, - 0x52: {0xFF32, 0x6000}, - 0x53: {0xFF33, 0x6000}, - 0x54: {0xFF34, 0x6000}, - 0x55: {0xFF35, 0x6000}, - 0x56: {0xFF36, 0x6000}, - 0x57: {0xFF37, 0x6000}, - 0x58: {0xFF38, 0x6000}, - 0x59: {0xFF39, 0x6000}, - 0x5A: {0xFF3A, 0x6000}, - 0x5B: {0xFF3B, 0x6000}, - 0x5C: {0xFF3C, 0x6000}, - 0x5D: {0xFF3D, 0x6000}, - 0x5E: {0xFF3E, 0x6000}, - 0x5F: {0xFF3F, 0x6000}, - 0x60: {0xFF40, 0x6000}, - 0x61: {0xFF41, 0x6000}, - 0x62: {0xFF42, 0x6000}, - 0x63: {0xFF43, 0x6000}, - 0x64: {0xFF44, 0x6000}, - 0x65: {0xFF45, 0x6000}, - 0x66: {0xFF46, 0x6000}, - 0x67: {0xFF47, 0x6000}, - 0x68: {0xFF48, 0x6000}, - 0x69: {0xFF49, 0x6000}, - 0x6A: {0xFF4A, 0x6000}, - 0x6B: {0xFF4B, 0x6000}, - 0x6C: {0xFF4C, 0x6000}, - 0x6D: {0xFF4D, 0x6000}, - 0x6E: {0xFF4E, 0x6000}, - 0x6F: {0xFF4F, 0x6000}, - 0x70: {0xFF50, 0x6000}, - 0x71: {0xFF51, 0x6000}, - 0x72: {0xFF52, 0x6000}, - 0x73: {0xFF53, 0x6000}, - 0x74: {0xFF54, 0x6000}, - 0x75: {0xFF55, 0x6000}, - 0x76: {0xFF56, 0x6000}, - 0x77: {0xFF57, 0x6000}, - 0x78: {0xFF58, 0x6000}, - 0x79: {0xFF59, 0x6000}, - 0x7A: {0xFF5A, 0x6000}, - 0x7B: {0xFF5B, 0x6000}, - 0x7C: {0xFF5C, 0x6000}, - 0x7D: {0xFF5D, 0x6000}, - 0x7E: {0xFF5E, 0x6000}, - 0xA2: {0xFFE0, 0x6000}, - 0xA3: {0xFFE1, 0x6000}, - 0xA5: {0xFFE5, 0x6000}, - 0xA6: {0xFFE4, 0x6000}, - 0xAC: {0xFFE2, 0x6000}, - 0xAF: {0xFFE3, 0x6000}, - 0x20A9: {0xFFE6, 0xA000}, - 0x2190: {0xFFE9, 0x2000}, - 0x2191: {0xFFEA, 0x2000}, - 0x2192: {0xFFEB, 0x2000}, - 0x2193: {0xFFEC, 0x2000}, - 0x2502: {0xFFE8, 0x2000}, - 0x25A0: {0xFFED, 0x2000}, - 0x25CB: {0xFFEE, 0x2000}, - 0x2985: {0xFF5F, 0x6000}, - 0x2986: {0xFF60, 0x6000}, - 0x3000: {0x20, 0x9000}, - 0x3001: {0xFF64, 0x4000}, - 0x3002: {0xFF61, 0x4000}, - 0x300C: {0xFF62, 0x4000}, - 0x300D: {0xFF63, 0x4000}, - 0x3099: {0xFF9E, 0x4000}, - 0x309A: {0xFF9F, 0x4000}, - 0x30A1: {0xFF67, 0x4000}, - 0x30A2: {0xFF71, 0x4000}, - 0x30A3: {0xFF68, 0x4000}, - 0x30A4: {0xFF72, 0x4000}, - 0x30A5: {0xFF69, 0x4000}, - 0x30A6: {0xFF73, 0x4000}, - 0x30A7: {0xFF6A, 0x4000}, - 0x30A8: {0xFF74, 0x4000}, - 0x30A9: {0xFF6B, 0x4000}, - 0x30AA: {0xFF75, 0x4000}, - 0x30AB: {0xFF76, 0x4000}, - 0x30AD: {0xFF77, 0x4000}, - 0x30AF: {0xFF78, 0x4000}, - 0x30B1: {0xFF79, 0x4000}, - 0x30B3: {0xFF7A, 0x4000}, - 0x30B5: {0xFF7B, 0x4000}, - 0x30B7: {0xFF7C, 0x4000}, - 0x30B9: {0xFF7D, 0x4000}, - 0x30BB: {0xFF7E, 0x4000}, - 0x30BD: {0xFF7F, 0x4000}, - 0x30BF: {0xFF80, 0x4000}, - 0x30C1: {0xFF81, 0x4000}, - 0x30C3: {0xFF6F, 0x4000}, - 0x30C4: {0xFF82, 0x4000}, - 0x30C6: {0xFF83, 0x4000}, - 0x30C8: {0xFF84, 0x4000}, - 0x30CA: {0xFF85, 0x4000}, - 0x30CB: {0xFF86, 0x4000}, - 0x30CC: {0xFF87, 0x4000}, - 0x30CD: {0xFF88, 0x4000}, - 0x30CE: {0xFF89, 0x4000}, - 0x30CF: {0xFF8A, 0x4000}, - 0x30D2: {0xFF8B, 0x4000}, - 0x30D5: {0xFF8C, 0x4000}, - 0x30D8: {0xFF8D, 0x4000}, - 0x30DB: {0xFF8E, 0x4000}, - 0x30DE: {0xFF8F, 0x4000}, - 0x30DF: {0xFF90, 0x4000}, - 0x30E0: {0xFF91, 0x4000}, - 0x30E1: {0xFF92, 0x4000}, - 0x30E2: {0xFF93, 0x4000}, - 0x30E3: {0xFF6C, 0x4000}, - 0x30E4: {0xFF94, 0x4000}, - 0x30E5: {0xFF6D, 0x4000}, - 0x30E6: {0xFF95, 0x4000}, - 0x30E7: {0xFF6E, 0x4000}, - 0x30E8: {0xFF96, 0x4000}, - 0x30E9: {0xFF97, 0x4000}, - 0x30EA: {0xFF98, 0x4000}, - 0x30EB: {0xFF99, 0x4000}, - 0x30EC: {0xFF9A, 0x4000}, - 0x30ED: {0xFF9B, 0x4000}, - 0x30EF: {0xFF9C, 0x4000}, - 0x30F2: {0xFF66, 0x4000}, - 0x30F3: {0xFF9D, 0x4000}, - 0x30FB: {0xFF65, 0x4000}, - 0x30FC: {0xFF70, 0x4000}, - 0x3131: {0xFFA1, 0x4000}, - 0x3132: {0xFFA2, 0x4000}, - 0x3133: {0xFFA3, 0x4000}, - 0x3134: {0xFFA4, 0x4000}, - 0x3135: {0xFFA5, 0x4000}, - 0x3136: {0xFFA6, 0x4000}, - 0x3137: {0xFFA7, 0x4000}, - 0x3138: {0xFFA8, 0x4000}, - 0x3139: {0xFFA9, 0x4000}, - 0x313A: {0xFFAA, 0x4000}, - 0x313B: {0xFFAB, 0x4000}, - 0x313C: {0xFFAC, 0x4000}, - 0x313D: {0xFFAD, 0x4000}, - 0x313E: {0xFFAE, 0x4000}, - 0x313F: {0xFFAF, 0x4000}, - 0x3140: {0xFFB0, 0x4000}, - 0x3141: {0xFFB1, 0x4000}, - 0x3142: {0xFFB2, 0x4000}, - 0x3143: {0xFFB3, 0x4000}, - 0x3144: {0xFFB4, 0x4000}, - 0x3145: {0xFFB5, 0x4000}, - 0x3146: {0xFFB6, 0x4000}, - 0x3147: {0xFFB7, 0x4000}, - 0x3148: {0xFFB8, 0x4000}, - 0x3149: {0xFFB9, 0x4000}, - 0x314A: {0xFFBA, 0x4000}, - 0x314B: {0xFFBB, 0x4000}, - 0x314C: {0xFFBC, 0x4000}, - 0x314D: {0xFFBD, 0x4000}, - 0x314E: {0xFFBE, 0x4000}, - 0x314F: {0xFFC2, 0x4000}, - 0x3150: {0xFFC3, 0x4000}, - 0x3151: {0xFFC4, 0x4000}, - 0x3152: {0xFFC5, 0x4000}, - 0x3153: {0xFFC6, 0x4000}, - 0x3154: {0xFFC7, 0x4000}, - 0x3155: {0xFFCA, 0x4000}, - 0x3156: {0xFFCB, 0x4000}, - 0x3157: {0xFFCC, 0x4000}, - 0x3158: {0xFFCD, 0x4000}, - 0x3159: {0xFFCE, 0x4000}, - 0x315A: {0xFFCF, 0x4000}, - 0x315B: {0xFFD2, 0x4000}, - 0x315C: {0xFFD3, 0x4000}, - 0x315D: {0xFFD4, 0x4000}, - 0x315E: {0xFFD5, 0x4000}, - 0x315F: {0xFFD6, 0x4000}, - 0x3160: {0xFFD7, 0x4000}, - 0x3161: {0xFFDA, 0x4000}, - 0x3162: {0xFFDB, 0x4000}, - 0x3163: {0xFFDC, 0x4000}, - 0x3164: {0xFFA0, 0x4000}, - 0xFF01: {0x21, 0x9000}, - 0xFF02: {0x22, 0x9000}, - 0xFF03: {0x23, 0x9000}, - 0xFF04: {0x24, 0x9000}, - 0xFF05: {0x25, 0x9000}, - 0xFF06: {0x26, 0x9000}, - 0xFF07: {0x27, 0x9000}, - 0xFF08: {0x28, 0x9000}, - 0xFF09: {0x29, 0x9000}, - 0xFF0A: {0x2A, 0x9000}, - 0xFF0B: {0x2B, 0x9000}, - 0xFF0C: {0x2C, 0x9000}, - 0xFF0D: {0x2D, 0x9000}, - 0xFF0E: {0x2E, 0x9000}, - 0xFF0F: {0x2F, 0x9000}, - 0xFF10: {0x30, 0x9000}, - 0xFF11: {0x31, 0x9000}, - 0xFF12: {0x32, 0x9000}, - 0xFF13: {0x33, 0x9000}, - 0xFF14: {0x34, 0x9000}, - 0xFF15: {0x35, 0x9000}, - 0xFF16: {0x36, 0x9000}, - 0xFF17: {0x37, 0x9000}, - 0xFF18: {0x38, 0x9000}, - 0xFF19: {0x39, 0x9000}, - 0xFF1A: {0x3A, 0x9000}, - 0xFF1B: {0x3B, 0x9000}, - 0xFF1C: {0x3C, 0x9000}, - 0xFF1D: {0x3D, 0x9000}, - 0xFF1E: {0x3E, 0x9000}, - 0xFF1F: {0x3F, 0x9000}, - 0xFF20: {0x40, 0x9000}, - 0xFF21: {0x41, 0x9000}, - 0xFF22: {0x42, 0x9000}, - 0xFF23: {0x43, 0x9000}, - 0xFF24: {0x44, 0x9000}, - 0xFF25: {0x45, 0x9000}, - 0xFF26: {0x46, 0x9000}, - 0xFF27: {0x47, 0x9000}, - 0xFF28: {0x48, 0x9000}, - 0xFF29: {0x49, 0x9000}, - 0xFF2A: {0x4A, 0x9000}, - 0xFF2B: {0x4B, 0x9000}, - 0xFF2C: {0x4C, 0x9000}, - 0xFF2D: {0x4D, 0x9000}, - 0xFF2E: {0x4E, 0x9000}, - 0xFF2F: {0x4F, 0x9000}, - 0xFF30: {0x50, 0x9000}, - 0xFF31: {0x51, 0x9000}, - 0xFF32: {0x52, 0x9000}, - 0xFF33: {0x53, 0x9000}, - 0xFF34: {0x54, 0x9000}, - 0xFF35: {0x55, 0x9000}, - 0xFF36: {0x56, 0x9000}, - 0xFF37: {0x57, 0x9000}, - 0xFF38: {0x58, 0x9000}, - 0xFF39: {0x59, 0x9000}, - 0xFF3A: {0x5A, 0x9000}, - 0xFF3B: {0x5B, 0x9000}, - 0xFF3C: {0x5C, 0x9000}, - 0xFF3D: {0x5D, 0x9000}, - 0xFF3E: {0x5E, 0x9000}, - 0xFF3F: {0x5F, 0x9000}, - 0xFF40: {0x60, 0x9000}, - 0xFF41: {0x61, 0x9000}, - 0xFF42: {0x62, 0x9000}, - 0xFF43: {0x63, 0x9000}, - 0xFF44: {0x64, 0x9000}, - 0xFF45: {0x65, 0x9000}, - 0xFF46: {0x66, 0x9000}, - 0xFF47: {0x67, 0x9000}, - 0xFF48: {0x68, 0x9000}, - 0xFF49: {0x69, 0x9000}, - 0xFF4A: {0x6A, 0x9000}, - 0xFF4B: {0x6B, 0x9000}, - 0xFF4C: {0x6C, 0x9000}, - 0xFF4D: {0x6D, 0x9000}, - 0xFF4E: {0x6E, 0x9000}, - 0xFF4F: {0x6F, 0x9000}, - 0xFF50: {0x70, 0x9000}, - 0xFF51: {0x71, 0x9000}, - 0xFF52: {0x72, 0x9000}, - 0xFF53: {0x73, 0x9000}, - 0xFF54: {0x74, 0x9000}, - 0xFF55: {0x75, 0x9000}, - 0xFF56: {0x76, 0x9000}, - 0xFF57: {0x77, 0x9000}, - 0xFF58: {0x78, 0x9000}, - 0xFF59: {0x79, 0x9000}, - 0xFF5A: {0x7A, 0x9000}, - 0xFF5B: {0x7B, 0x9000}, - 0xFF5C: {0x7C, 0x9000}, - 0xFF5D: {0x7D, 0x9000}, - 0xFF5E: {0x7E, 0x9000}, - 0xFF5F: {0x2985, 0x9000}, - 0xFF60: {0x2986, 0x9000}, - 0xFF61: {0x3002, 0xB000}, - 0xFF62: {0x300C, 0xB000}, - 0xFF63: {0x300D, 0xB000}, - 0xFF64: {0x3001, 0xB000}, - 0xFF65: {0x30FB, 0xB000}, - 0xFF66: {0x30F2, 0xB000}, - 0xFF67: {0x30A1, 0xB000}, - 0xFF68: {0x30A3, 0xB000}, - 0xFF69: {0x30A5, 0xB000}, - 0xFF6A: {0x30A7, 0xB000}, - 0xFF6B: {0x30A9, 0xB000}, - 0xFF6C: {0x30E3, 0xB000}, - 0xFF6D: {0x30E5, 0xB000}, - 0xFF6E: {0x30E7, 0xB000}, - 0xFF6F: {0x30C3, 0xB000}, - 0xFF70: {0x30FC, 0xB000}, - 0xFF71: {0x30A2, 0xB000}, - 0xFF72: {0x30A4, 0xB000}, - 0xFF73: {0x30A6, 0xB000}, - 0xFF74: {0x30A8, 0xB000}, - 0xFF75: {0x30AA, 0xB000}, - 0xFF76: {0x30AB, 0xB000}, - 0xFF77: {0x30AD, 0xB000}, - 0xFF78: {0x30AF, 0xB000}, - 0xFF79: {0x30B1, 0xB000}, - 0xFF7A: {0x30B3, 0xB000}, - 0xFF7B: {0x30B5, 0xB000}, - 0xFF7C: {0x30B7, 0xB000}, - 0xFF7D: {0x30B9, 0xB000}, - 0xFF7E: {0x30BB, 0xB000}, - 0xFF7F: {0x30BD, 0xB000}, - 0xFF80: {0x30BF, 0xB000}, - 0xFF81: {0x30C1, 0xB000}, - 0xFF82: {0x30C4, 0xB000}, - 0xFF83: {0x30C6, 0xB000}, - 0xFF84: {0x30C8, 0xB000}, - 0xFF85: {0x30CA, 0xB000}, - 0xFF86: {0x30CB, 0xB000}, - 0xFF87: {0x30CC, 0xB000}, - 0xFF88: {0x30CD, 0xB000}, - 0xFF89: {0x30CE, 0xB000}, - 0xFF8A: {0x30CF, 0xB000}, - 0xFF8B: {0x30D2, 0xB000}, - 0xFF8C: {0x30D5, 0xB000}, - 0xFF8D: {0x30D8, 0xB000}, - 0xFF8E: {0x30DB, 0xB000}, - 0xFF8F: {0x30DE, 0xB000}, - 0xFF90: {0x30DF, 0xB000}, - 0xFF91: {0x30E0, 0xB000}, - 0xFF92: {0x30E1, 0xB000}, - 0xFF93: {0x30E2, 0xB000}, - 0xFF94: {0x30E4, 0xB000}, - 0xFF95: {0x30E6, 0xB000}, - 0xFF96: {0x30E8, 0xB000}, - 0xFF97: {0x30E9, 0xB000}, - 0xFF98: {0x30EA, 0xB000}, - 0xFF99: {0x30EB, 0xB000}, - 0xFF9A: {0x30EC, 0xB000}, - 0xFF9B: {0x30ED, 0xB000}, - 0xFF9C: {0x30EF, 0xB000}, - 0xFF9D: {0x30F3, 0xB000}, - 0xFF9E: {0x3099, 0xB000}, - 0xFF9F: {0x309A, 0xB000}, - 0xFFA0: {0x3164, 0xB000}, - 0xFFA1: {0x3131, 0xB000}, - 0xFFA2: {0x3132, 0xB000}, - 0xFFA3: {0x3133, 0xB000}, - 0xFFA4: {0x3134, 0xB000}, - 0xFFA5: {0x3135, 0xB000}, - 0xFFA6: {0x3136, 0xB000}, - 0xFFA7: {0x3137, 0xB000}, - 0xFFA8: {0x3138, 0xB000}, - 0xFFA9: {0x3139, 0xB000}, - 0xFFAA: {0x313A, 0xB000}, - 0xFFAB: {0x313B, 0xB000}, - 0xFFAC: {0x313C, 0xB000}, - 0xFFAD: {0x313D, 0xB000}, - 0xFFAE: {0x313E, 0xB000}, - 0xFFAF: {0x313F, 0xB000}, - 0xFFB0: {0x3140, 0xB000}, - 0xFFB1: {0x3141, 0xB000}, - 0xFFB2: {0x3142, 0xB000}, - 0xFFB3: {0x3143, 0xB000}, - 0xFFB4: {0x3144, 0xB000}, - 0xFFB5: {0x3145, 0xB000}, - 0xFFB6: {0x3146, 0xB000}, - 0xFFB7: {0x3147, 0xB000}, - 0xFFB8: {0x3148, 0xB000}, - 0xFFB9: {0x3149, 0xB000}, - 0xFFBA: {0x314A, 0xB000}, - 0xFFBB: {0x314B, 0xB000}, - 0xFFBC: {0x314C, 0xB000}, - 0xFFBD: {0x314D, 0xB000}, - 0xFFBE: {0x314E, 0xB000}, - 0xFFC2: {0x314F, 0xB000}, - 0xFFC3: {0x3150, 0xB000}, - 0xFFC4: {0x3151, 0xB000}, - 0xFFC5: {0x3152, 0xB000}, - 0xFFC6: {0x3153, 0xB000}, - 0xFFC7: {0x3154, 0xB000}, - 0xFFCA: {0x3155, 0xB000}, - 0xFFCB: {0x3156, 0xB000}, - 0xFFCC: {0x3157, 0xB000}, - 0xFFCD: {0x3158, 0xB000}, - 0xFFCE: {0x3159, 0xB000}, - 0xFFCF: {0x315A, 0xB000}, - 0xFFD2: {0x315B, 0xB000}, - 0xFFD3: {0x315C, 0xB000}, - 0xFFD4: {0x315D, 0xB000}, - 0xFFD5: {0x315E, 0xB000}, - 0xFFD6: {0x315F, 0xB000}, - 0xFFD7: {0x3160, 0xB000}, - 0xFFDA: {0x3161, 0xB000}, - 0xFFDB: {0x3162, 0xB000}, - 0xFFDC: {0x3163, 0xB000}, - 0xFFE0: {0xA2, 0x9000}, - 0xFFE1: {0xA3, 0x9000}, - 0xFFE2: {0xAC, 0x9000}, - 0xFFE3: {0xAF, 0x9000}, - 0xFFE4: {0xA6, 0x9000}, - 0xFFE5: {0xA5, 0x9000}, - 0xFFE6: {0x20A9, 0x9000}, - 0xFFE8: {0x2502, 0xB000}, - 0xFFE9: {0x2190, 0xB000}, - 0xFFEA: {0x2191, 0xB000}, - 0xFFEB: {0x2192, 0xB000}, - 0xFFEC: {0x2193, 0xB000}, - 0xFFED: {0x25A0, 0xB000}, - 0xFFEE: {0x25CB, 0xB000}, -} diff --git a/vendor/golang.org/x/text/width/tables10.0.0.go b/vendor/golang.org/x/text/width/tables10.0.0.go deleted file mode 100644 index f4988626..00000000 --- a/vendor/golang.org/x/text/width/tables10.0.0.go +++ /dev/null @@ -1,1318 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build go1.10 - -package width - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "10.0.0" - -// 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 *widthTrie) lookup(s []byte) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return widthValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = widthIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = widthIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = widthIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *widthTrie) lookupUnsafe(s []byte) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return widthValues[c0] - } - i := widthIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = widthIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = widthIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *widthTrie) lookupString(s string) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return widthValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = widthIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = widthIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = widthIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *widthTrie) lookupStringUnsafe(s string) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return widthValues[c0] - } - i := widthIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = widthIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = widthIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// widthTrie. Total size: 14336 bytes (14.00 KiB). Checksum: c59df54630d3dc4a. -type widthTrie struct{} - -func newWidthTrie(i int) *widthTrie { - return &widthTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *widthTrie) lookupValue(n uint32, b byte) uint16 { - switch { - default: - return uint16(widthValues[n<<6+uint32(b)]) - } -} - -// widthValues: 101 blocks, 6464 entries, 12928 bytes -// The third block is the zero block. -var widthValues = [6464]uint16{ - // Block 0x0, offset 0x0 - 0x20: 0x6001, 0x21: 0x6002, 0x22: 0x6002, 0x23: 0x6002, - 0x24: 0x6002, 0x25: 0x6002, 0x26: 0x6002, 0x27: 0x6002, 0x28: 0x6002, 0x29: 0x6002, - 0x2a: 0x6002, 0x2b: 0x6002, 0x2c: 0x6002, 0x2d: 0x6002, 0x2e: 0x6002, 0x2f: 0x6002, - 0x30: 0x6002, 0x31: 0x6002, 0x32: 0x6002, 0x33: 0x6002, 0x34: 0x6002, 0x35: 0x6002, - 0x36: 0x6002, 0x37: 0x6002, 0x38: 0x6002, 0x39: 0x6002, 0x3a: 0x6002, 0x3b: 0x6002, - 0x3c: 0x6002, 0x3d: 0x6002, 0x3e: 0x6002, 0x3f: 0x6002, - // Block 0x1, offset 0x40 - 0x40: 0x6003, 0x41: 0x6003, 0x42: 0x6003, 0x43: 0x6003, 0x44: 0x6003, 0x45: 0x6003, - 0x46: 0x6003, 0x47: 0x6003, 0x48: 0x6003, 0x49: 0x6003, 0x4a: 0x6003, 0x4b: 0x6003, - 0x4c: 0x6003, 0x4d: 0x6003, 0x4e: 0x6003, 0x4f: 0x6003, 0x50: 0x6003, 0x51: 0x6003, - 0x52: 0x6003, 0x53: 0x6003, 0x54: 0x6003, 0x55: 0x6003, 0x56: 0x6003, 0x57: 0x6003, - 0x58: 0x6003, 0x59: 0x6003, 0x5a: 0x6003, 0x5b: 0x6003, 0x5c: 0x6003, 0x5d: 0x6003, - 0x5e: 0x6003, 0x5f: 0x6003, 0x60: 0x6004, 0x61: 0x6004, 0x62: 0x6004, 0x63: 0x6004, - 0x64: 0x6004, 0x65: 0x6004, 0x66: 0x6004, 0x67: 0x6004, 0x68: 0x6004, 0x69: 0x6004, - 0x6a: 0x6004, 0x6b: 0x6004, 0x6c: 0x6004, 0x6d: 0x6004, 0x6e: 0x6004, 0x6f: 0x6004, - 0x70: 0x6004, 0x71: 0x6004, 0x72: 0x6004, 0x73: 0x6004, 0x74: 0x6004, 0x75: 0x6004, - 0x76: 0x6004, 0x77: 0x6004, 0x78: 0x6004, 0x79: 0x6004, 0x7a: 0x6004, 0x7b: 0x6004, - 0x7c: 0x6004, 0x7d: 0x6004, 0x7e: 0x6004, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xe1: 0x2000, 0xe2: 0x6005, 0xe3: 0x6005, - 0xe4: 0x2000, 0xe5: 0x6006, 0xe6: 0x6005, 0xe7: 0x2000, 0xe8: 0x2000, - 0xea: 0x2000, 0xec: 0x6007, 0xed: 0x2000, 0xee: 0x2000, 0xef: 0x6008, - 0xf0: 0x2000, 0xf1: 0x2000, 0xf2: 0x2000, 0xf3: 0x2000, 0xf4: 0x2000, - 0xf6: 0x2000, 0xf7: 0x2000, 0xf8: 0x2000, 0xf9: 0x2000, 0xfa: 0x2000, - 0xfc: 0x2000, 0xfd: 0x2000, 0xfe: 0x2000, 0xff: 0x2000, - // Block 0x4, offset 0x100 - 0x106: 0x2000, - 0x110: 0x2000, - 0x117: 0x2000, - 0x118: 0x2000, - 0x11e: 0x2000, 0x11f: 0x2000, 0x120: 0x2000, 0x121: 0x2000, - 0x126: 0x2000, 0x128: 0x2000, 0x129: 0x2000, - 0x12a: 0x2000, 0x12c: 0x2000, 0x12d: 0x2000, - 0x130: 0x2000, 0x132: 0x2000, 0x133: 0x2000, - 0x137: 0x2000, 0x138: 0x2000, 0x139: 0x2000, 0x13a: 0x2000, - 0x13c: 0x2000, 0x13e: 0x2000, - // Block 0x5, offset 0x140 - 0x141: 0x2000, - 0x151: 0x2000, - 0x153: 0x2000, - 0x15b: 0x2000, - 0x166: 0x2000, 0x167: 0x2000, - 0x16b: 0x2000, - 0x171: 0x2000, 0x172: 0x2000, 0x173: 0x2000, - 0x178: 0x2000, - 0x17f: 0x2000, - // Block 0x6, offset 0x180 - 0x180: 0x2000, 0x181: 0x2000, 0x182: 0x2000, 0x184: 0x2000, - 0x188: 0x2000, 0x189: 0x2000, 0x18a: 0x2000, 0x18b: 0x2000, - 0x18d: 0x2000, - 0x192: 0x2000, 0x193: 0x2000, - 0x1a6: 0x2000, 0x1a7: 0x2000, - 0x1ab: 0x2000, - // Block 0x7, offset 0x1c0 - 0x1ce: 0x2000, 0x1d0: 0x2000, - 0x1d2: 0x2000, 0x1d4: 0x2000, 0x1d6: 0x2000, - 0x1d8: 0x2000, 0x1da: 0x2000, 0x1dc: 0x2000, - // Block 0x8, offset 0x200 - 0x211: 0x2000, - 0x221: 0x2000, - // Block 0x9, offset 0x240 - 0x244: 0x2000, - 0x247: 0x2000, 0x249: 0x2000, 0x24a: 0x2000, 0x24b: 0x2000, - 0x24d: 0x2000, 0x250: 0x2000, - 0x258: 0x2000, 0x259: 0x2000, 0x25a: 0x2000, 0x25b: 0x2000, 0x25d: 0x2000, - 0x25f: 0x2000, - // Block 0xa, offset 0x280 - 0x280: 0x2000, 0x281: 0x2000, 0x282: 0x2000, 0x283: 0x2000, 0x284: 0x2000, 0x285: 0x2000, - 0x286: 0x2000, 0x287: 0x2000, 0x288: 0x2000, 0x289: 0x2000, 0x28a: 0x2000, 0x28b: 0x2000, - 0x28c: 0x2000, 0x28d: 0x2000, 0x28e: 0x2000, 0x28f: 0x2000, 0x290: 0x2000, 0x291: 0x2000, - 0x292: 0x2000, 0x293: 0x2000, 0x294: 0x2000, 0x295: 0x2000, 0x296: 0x2000, 0x297: 0x2000, - 0x298: 0x2000, 0x299: 0x2000, 0x29a: 0x2000, 0x29b: 0x2000, 0x29c: 0x2000, 0x29d: 0x2000, - 0x29e: 0x2000, 0x29f: 0x2000, 0x2a0: 0x2000, 0x2a1: 0x2000, 0x2a2: 0x2000, 0x2a3: 0x2000, - 0x2a4: 0x2000, 0x2a5: 0x2000, 0x2a6: 0x2000, 0x2a7: 0x2000, 0x2a8: 0x2000, 0x2a9: 0x2000, - 0x2aa: 0x2000, 0x2ab: 0x2000, 0x2ac: 0x2000, 0x2ad: 0x2000, 0x2ae: 0x2000, 0x2af: 0x2000, - 0x2b0: 0x2000, 0x2b1: 0x2000, 0x2b2: 0x2000, 0x2b3: 0x2000, 0x2b4: 0x2000, 0x2b5: 0x2000, - 0x2b6: 0x2000, 0x2b7: 0x2000, 0x2b8: 0x2000, 0x2b9: 0x2000, 0x2ba: 0x2000, 0x2bb: 0x2000, - 0x2bc: 0x2000, 0x2bd: 0x2000, 0x2be: 0x2000, 0x2bf: 0x2000, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x2000, 0x2c1: 0x2000, 0x2c2: 0x2000, 0x2c3: 0x2000, 0x2c4: 0x2000, 0x2c5: 0x2000, - 0x2c6: 0x2000, 0x2c7: 0x2000, 0x2c8: 0x2000, 0x2c9: 0x2000, 0x2ca: 0x2000, 0x2cb: 0x2000, - 0x2cc: 0x2000, 0x2cd: 0x2000, 0x2ce: 0x2000, 0x2cf: 0x2000, 0x2d0: 0x2000, 0x2d1: 0x2000, - 0x2d2: 0x2000, 0x2d3: 0x2000, 0x2d4: 0x2000, 0x2d5: 0x2000, 0x2d6: 0x2000, 0x2d7: 0x2000, - 0x2d8: 0x2000, 0x2d9: 0x2000, 0x2da: 0x2000, 0x2db: 0x2000, 0x2dc: 0x2000, 0x2dd: 0x2000, - 0x2de: 0x2000, 0x2df: 0x2000, 0x2e0: 0x2000, 0x2e1: 0x2000, 0x2e2: 0x2000, 0x2e3: 0x2000, - 0x2e4: 0x2000, 0x2e5: 0x2000, 0x2e6: 0x2000, 0x2e7: 0x2000, 0x2e8: 0x2000, 0x2e9: 0x2000, - 0x2ea: 0x2000, 0x2eb: 0x2000, 0x2ec: 0x2000, 0x2ed: 0x2000, 0x2ee: 0x2000, 0x2ef: 0x2000, - // Block 0xc, offset 0x300 - 0x311: 0x2000, - 0x312: 0x2000, 0x313: 0x2000, 0x314: 0x2000, 0x315: 0x2000, 0x316: 0x2000, 0x317: 0x2000, - 0x318: 0x2000, 0x319: 0x2000, 0x31a: 0x2000, 0x31b: 0x2000, 0x31c: 0x2000, 0x31d: 0x2000, - 0x31e: 0x2000, 0x31f: 0x2000, 0x320: 0x2000, 0x321: 0x2000, 0x323: 0x2000, - 0x324: 0x2000, 0x325: 0x2000, 0x326: 0x2000, 0x327: 0x2000, 0x328: 0x2000, 0x329: 0x2000, - 0x331: 0x2000, 0x332: 0x2000, 0x333: 0x2000, 0x334: 0x2000, 0x335: 0x2000, - 0x336: 0x2000, 0x337: 0x2000, 0x338: 0x2000, 0x339: 0x2000, 0x33a: 0x2000, 0x33b: 0x2000, - 0x33c: 0x2000, 0x33d: 0x2000, 0x33e: 0x2000, 0x33f: 0x2000, - // Block 0xd, offset 0x340 - 0x340: 0x2000, 0x341: 0x2000, 0x343: 0x2000, 0x344: 0x2000, 0x345: 0x2000, - 0x346: 0x2000, 0x347: 0x2000, 0x348: 0x2000, 0x349: 0x2000, - // Block 0xe, offset 0x380 - 0x381: 0x2000, - 0x390: 0x2000, 0x391: 0x2000, - 0x392: 0x2000, 0x393: 0x2000, 0x394: 0x2000, 0x395: 0x2000, 0x396: 0x2000, 0x397: 0x2000, - 0x398: 0x2000, 0x399: 0x2000, 0x39a: 0x2000, 0x39b: 0x2000, 0x39c: 0x2000, 0x39d: 0x2000, - 0x39e: 0x2000, 0x39f: 0x2000, 0x3a0: 0x2000, 0x3a1: 0x2000, 0x3a2: 0x2000, 0x3a3: 0x2000, - 0x3a4: 0x2000, 0x3a5: 0x2000, 0x3a6: 0x2000, 0x3a7: 0x2000, 0x3a8: 0x2000, 0x3a9: 0x2000, - 0x3aa: 0x2000, 0x3ab: 0x2000, 0x3ac: 0x2000, 0x3ad: 0x2000, 0x3ae: 0x2000, 0x3af: 0x2000, - 0x3b0: 0x2000, 0x3b1: 0x2000, 0x3b2: 0x2000, 0x3b3: 0x2000, 0x3b4: 0x2000, 0x3b5: 0x2000, - 0x3b6: 0x2000, 0x3b7: 0x2000, 0x3b8: 0x2000, 0x3b9: 0x2000, 0x3ba: 0x2000, 0x3bb: 0x2000, - 0x3bc: 0x2000, 0x3bd: 0x2000, 0x3be: 0x2000, 0x3bf: 0x2000, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x2000, 0x3c1: 0x2000, 0x3c2: 0x2000, 0x3c3: 0x2000, 0x3c4: 0x2000, 0x3c5: 0x2000, - 0x3c6: 0x2000, 0x3c7: 0x2000, 0x3c8: 0x2000, 0x3c9: 0x2000, 0x3ca: 0x2000, 0x3cb: 0x2000, - 0x3cc: 0x2000, 0x3cd: 0x2000, 0x3ce: 0x2000, 0x3cf: 0x2000, 0x3d1: 0x2000, - // Block 0x10, offset 0x400 - 0x400: 0x4000, 0x401: 0x4000, 0x402: 0x4000, 0x403: 0x4000, 0x404: 0x4000, 0x405: 0x4000, - 0x406: 0x4000, 0x407: 0x4000, 0x408: 0x4000, 0x409: 0x4000, 0x40a: 0x4000, 0x40b: 0x4000, - 0x40c: 0x4000, 0x40d: 0x4000, 0x40e: 0x4000, 0x40f: 0x4000, 0x410: 0x4000, 0x411: 0x4000, - 0x412: 0x4000, 0x413: 0x4000, 0x414: 0x4000, 0x415: 0x4000, 0x416: 0x4000, 0x417: 0x4000, - 0x418: 0x4000, 0x419: 0x4000, 0x41a: 0x4000, 0x41b: 0x4000, 0x41c: 0x4000, 0x41d: 0x4000, - 0x41e: 0x4000, 0x41f: 0x4000, 0x420: 0x4000, 0x421: 0x4000, 0x422: 0x4000, 0x423: 0x4000, - 0x424: 0x4000, 0x425: 0x4000, 0x426: 0x4000, 0x427: 0x4000, 0x428: 0x4000, 0x429: 0x4000, - 0x42a: 0x4000, 0x42b: 0x4000, 0x42c: 0x4000, 0x42d: 0x4000, 0x42e: 0x4000, 0x42f: 0x4000, - 0x430: 0x4000, 0x431: 0x4000, 0x432: 0x4000, 0x433: 0x4000, 0x434: 0x4000, 0x435: 0x4000, - 0x436: 0x4000, 0x437: 0x4000, 0x438: 0x4000, 0x439: 0x4000, 0x43a: 0x4000, 0x43b: 0x4000, - 0x43c: 0x4000, 0x43d: 0x4000, 0x43e: 0x4000, 0x43f: 0x4000, - // Block 0x11, offset 0x440 - 0x440: 0x4000, 0x441: 0x4000, 0x442: 0x4000, 0x443: 0x4000, 0x444: 0x4000, 0x445: 0x4000, - 0x446: 0x4000, 0x447: 0x4000, 0x448: 0x4000, 0x449: 0x4000, 0x44a: 0x4000, 0x44b: 0x4000, - 0x44c: 0x4000, 0x44d: 0x4000, 0x44e: 0x4000, 0x44f: 0x4000, 0x450: 0x4000, 0x451: 0x4000, - 0x452: 0x4000, 0x453: 0x4000, 0x454: 0x4000, 0x455: 0x4000, 0x456: 0x4000, 0x457: 0x4000, - 0x458: 0x4000, 0x459: 0x4000, 0x45a: 0x4000, 0x45b: 0x4000, 0x45c: 0x4000, 0x45d: 0x4000, - 0x45e: 0x4000, 0x45f: 0x4000, - // Block 0x12, offset 0x480 - 0x490: 0x2000, - 0x493: 0x2000, 0x494: 0x2000, 0x495: 0x2000, 0x496: 0x2000, - 0x498: 0x2000, 0x499: 0x2000, 0x49c: 0x2000, 0x49d: 0x2000, - 0x4a0: 0x2000, 0x4a1: 0x2000, 0x4a2: 0x2000, - 0x4a4: 0x2000, 0x4a5: 0x2000, 0x4a6: 0x2000, 0x4a7: 0x2000, - 0x4b0: 0x2000, 0x4b2: 0x2000, 0x4b3: 0x2000, 0x4b5: 0x2000, - 0x4bb: 0x2000, - 0x4be: 0x2000, - // Block 0x13, offset 0x4c0 - 0x4f4: 0x2000, - 0x4ff: 0x2000, - // Block 0x14, offset 0x500 - 0x501: 0x2000, 0x502: 0x2000, 0x503: 0x2000, 0x504: 0x2000, - 0x529: 0xa009, - 0x52c: 0x2000, - // Block 0x15, offset 0x540 - 0x543: 0x2000, 0x545: 0x2000, - 0x549: 0x2000, - 0x553: 0x2000, 0x556: 0x2000, - 0x561: 0x2000, 0x562: 0x2000, - 0x566: 0x2000, - 0x56b: 0x2000, - // Block 0x16, offset 0x580 - 0x593: 0x2000, 0x594: 0x2000, - 0x59b: 0x2000, 0x59c: 0x2000, 0x59d: 0x2000, - 0x59e: 0x2000, 0x5a0: 0x2000, 0x5a1: 0x2000, 0x5a2: 0x2000, 0x5a3: 0x2000, - 0x5a4: 0x2000, 0x5a5: 0x2000, 0x5a6: 0x2000, 0x5a7: 0x2000, 0x5a8: 0x2000, 0x5a9: 0x2000, - 0x5aa: 0x2000, 0x5ab: 0x2000, - 0x5b0: 0x2000, 0x5b1: 0x2000, 0x5b2: 0x2000, 0x5b3: 0x2000, 0x5b4: 0x2000, 0x5b5: 0x2000, - 0x5b6: 0x2000, 0x5b7: 0x2000, 0x5b8: 0x2000, 0x5b9: 0x2000, - // Block 0x17, offset 0x5c0 - 0x5c9: 0x2000, - 0x5d0: 0x200a, 0x5d1: 0x200b, - 0x5d2: 0x200a, 0x5d3: 0x200c, 0x5d4: 0x2000, 0x5d5: 0x2000, 0x5d6: 0x2000, 0x5d7: 0x2000, - 0x5d8: 0x2000, 0x5d9: 0x2000, - 0x5f8: 0x2000, 0x5f9: 0x2000, - // Block 0x18, offset 0x600 - 0x612: 0x2000, 0x614: 0x2000, - 0x627: 0x2000, - // Block 0x19, offset 0x640 - 0x640: 0x2000, 0x642: 0x2000, 0x643: 0x2000, - 0x647: 0x2000, 0x648: 0x2000, 0x64b: 0x2000, - 0x64f: 0x2000, 0x651: 0x2000, - 0x655: 0x2000, - 0x65a: 0x2000, 0x65d: 0x2000, - 0x65e: 0x2000, 0x65f: 0x2000, 0x660: 0x2000, 0x663: 0x2000, - 0x665: 0x2000, 0x667: 0x2000, 0x668: 0x2000, 0x669: 0x2000, - 0x66a: 0x2000, 0x66b: 0x2000, 0x66c: 0x2000, 0x66e: 0x2000, - 0x674: 0x2000, 0x675: 0x2000, - 0x676: 0x2000, 0x677: 0x2000, - 0x67c: 0x2000, 0x67d: 0x2000, - // Block 0x1a, offset 0x680 - 0x688: 0x2000, - 0x68c: 0x2000, - 0x692: 0x2000, - 0x6a0: 0x2000, 0x6a1: 0x2000, - 0x6a4: 0x2000, 0x6a5: 0x2000, 0x6a6: 0x2000, 0x6a7: 0x2000, - 0x6aa: 0x2000, 0x6ab: 0x2000, 0x6ae: 0x2000, 0x6af: 0x2000, - // Block 0x1b, offset 0x6c0 - 0x6c2: 0x2000, 0x6c3: 0x2000, - 0x6c6: 0x2000, 0x6c7: 0x2000, - 0x6d5: 0x2000, - 0x6d9: 0x2000, - 0x6e5: 0x2000, - 0x6ff: 0x2000, - // Block 0x1c, offset 0x700 - 0x712: 0x2000, - 0x71a: 0x4000, 0x71b: 0x4000, - 0x729: 0x4000, - 0x72a: 0x4000, - // Block 0x1d, offset 0x740 - 0x769: 0x4000, - 0x76a: 0x4000, 0x76b: 0x4000, 0x76c: 0x4000, - 0x770: 0x4000, 0x773: 0x4000, - // Block 0x1e, offset 0x780 - 0x7a0: 0x2000, 0x7a1: 0x2000, 0x7a2: 0x2000, 0x7a3: 0x2000, - 0x7a4: 0x2000, 0x7a5: 0x2000, 0x7a6: 0x2000, 0x7a7: 0x2000, 0x7a8: 0x2000, 0x7a9: 0x2000, - 0x7aa: 0x2000, 0x7ab: 0x2000, 0x7ac: 0x2000, 0x7ad: 0x2000, 0x7ae: 0x2000, 0x7af: 0x2000, - 0x7b0: 0x2000, 0x7b1: 0x2000, 0x7b2: 0x2000, 0x7b3: 0x2000, 0x7b4: 0x2000, 0x7b5: 0x2000, - 0x7b6: 0x2000, 0x7b7: 0x2000, 0x7b8: 0x2000, 0x7b9: 0x2000, 0x7ba: 0x2000, 0x7bb: 0x2000, - 0x7bc: 0x2000, 0x7bd: 0x2000, 0x7be: 0x2000, 0x7bf: 0x2000, - // Block 0x1f, offset 0x7c0 - 0x7c0: 0x2000, 0x7c1: 0x2000, 0x7c2: 0x2000, 0x7c3: 0x2000, 0x7c4: 0x2000, 0x7c5: 0x2000, - 0x7c6: 0x2000, 0x7c7: 0x2000, 0x7c8: 0x2000, 0x7c9: 0x2000, 0x7ca: 0x2000, 0x7cb: 0x2000, - 0x7cc: 0x2000, 0x7cd: 0x2000, 0x7ce: 0x2000, 0x7cf: 0x2000, 0x7d0: 0x2000, 0x7d1: 0x2000, - 0x7d2: 0x2000, 0x7d3: 0x2000, 0x7d4: 0x2000, 0x7d5: 0x2000, 0x7d6: 0x2000, 0x7d7: 0x2000, - 0x7d8: 0x2000, 0x7d9: 0x2000, 0x7da: 0x2000, 0x7db: 0x2000, 0x7dc: 0x2000, 0x7dd: 0x2000, - 0x7de: 0x2000, 0x7df: 0x2000, 0x7e0: 0x2000, 0x7e1: 0x2000, 0x7e2: 0x2000, 0x7e3: 0x2000, - 0x7e4: 0x2000, 0x7e5: 0x2000, 0x7e6: 0x2000, 0x7e7: 0x2000, 0x7e8: 0x2000, 0x7e9: 0x2000, - 0x7eb: 0x2000, 0x7ec: 0x2000, 0x7ed: 0x2000, 0x7ee: 0x2000, 0x7ef: 0x2000, - 0x7f0: 0x2000, 0x7f1: 0x2000, 0x7f2: 0x2000, 0x7f3: 0x2000, 0x7f4: 0x2000, 0x7f5: 0x2000, - 0x7f6: 0x2000, 0x7f7: 0x2000, 0x7f8: 0x2000, 0x7f9: 0x2000, 0x7fa: 0x2000, 0x7fb: 0x2000, - 0x7fc: 0x2000, 0x7fd: 0x2000, 0x7fe: 0x2000, 0x7ff: 0x2000, - // Block 0x20, offset 0x800 - 0x800: 0x2000, 0x801: 0x2000, 0x802: 0x200d, 0x803: 0x2000, 0x804: 0x2000, 0x805: 0x2000, - 0x806: 0x2000, 0x807: 0x2000, 0x808: 0x2000, 0x809: 0x2000, 0x80a: 0x2000, 0x80b: 0x2000, - 0x80c: 0x2000, 0x80d: 0x2000, 0x80e: 0x2000, 0x80f: 0x2000, 0x810: 0x2000, 0x811: 0x2000, - 0x812: 0x2000, 0x813: 0x2000, 0x814: 0x2000, 0x815: 0x2000, 0x816: 0x2000, 0x817: 0x2000, - 0x818: 0x2000, 0x819: 0x2000, 0x81a: 0x2000, 0x81b: 0x2000, 0x81c: 0x2000, 0x81d: 0x2000, - 0x81e: 0x2000, 0x81f: 0x2000, 0x820: 0x2000, 0x821: 0x2000, 0x822: 0x2000, 0x823: 0x2000, - 0x824: 0x2000, 0x825: 0x2000, 0x826: 0x2000, 0x827: 0x2000, 0x828: 0x2000, 0x829: 0x2000, - 0x82a: 0x2000, 0x82b: 0x2000, 0x82c: 0x2000, 0x82d: 0x2000, 0x82e: 0x2000, 0x82f: 0x2000, - 0x830: 0x2000, 0x831: 0x2000, 0x832: 0x2000, 0x833: 0x2000, 0x834: 0x2000, 0x835: 0x2000, - 0x836: 0x2000, 0x837: 0x2000, 0x838: 0x2000, 0x839: 0x2000, 0x83a: 0x2000, 0x83b: 0x2000, - 0x83c: 0x2000, 0x83d: 0x2000, 0x83e: 0x2000, 0x83f: 0x2000, - // Block 0x21, offset 0x840 - 0x840: 0x2000, 0x841: 0x2000, 0x842: 0x2000, 0x843: 0x2000, 0x844: 0x2000, 0x845: 0x2000, - 0x846: 0x2000, 0x847: 0x2000, 0x848: 0x2000, 0x849: 0x2000, 0x84a: 0x2000, 0x84b: 0x2000, - 0x850: 0x2000, 0x851: 0x2000, - 0x852: 0x2000, 0x853: 0x2000, 0x854: 0x2000, 0x855: 0x2000, 0x856: 0x2000, 0x857: 0x2000, - 0x858: 0x2000, 0x859: 0x2000, 0x85a: 0x2000, 0x85b: 0x2000, 0x85c: 0x2000, 0x85d: 0x2000, - 0x85e: 0x2000, 0x85f: 0x2000, 0x860: 0x2000, 0x861: 0x2000, 0x862: 0x2000, 0x863: 0x2000, - 0x864: 0x2000, 0x865: 0x2000, 0x866: 0x2000, 0x867: 0x2000, 0x868: 0x2000, 0x869: 0x2000, - 0x86a: 0x2000, 0x86b: 0x2000, 0x86c: 0x2000, 0x86d: 0x2000, 0x86e: 0x2000, 0x86f: 0x2000, - 0x870: 0x2000, 0x871: 0x2000, 0x872: 0x2000, 0x873: 0x2000, - // Block 0x22, offset 0x880 - 0x880: 0x2000, 0x881: 0x2000, 0x882: 0x2000, 0x883: 0x2000, 0x884: 0x2000, 0x885: 0x2000, - 0x886: 0x2000, 0x887: 0x2000, 0x888: 0x2000, 0x889: 0x2000, 0x88a: 0x2000, 0x88b: 0x2000, - 0x88c: 0x2000, 0x88d: 0x2000, 0x88e: 0x2000, 0x88f: 0x2000, - 0x892: 0x2000, 0x893: 0x2000, 0x894: 0x2000, 0x895: 0x2000, - 0x8a0: 0x200e, 0x8a1: 0x2000, 0x8a3: 0x2000, - 0x8a4: 0x2000, 0x8a5: 0x2000, 0x8a6: 0x2000, 0x8a7: 0x2000, 0x8a8: 0x2000, 0x8a9: 0x2000, - 0x8b2: 0x2000, 0x8b3: 0x2000, - 0x8b6: 0x2000, 0x8b7: 0x2000, - 0x8bc: 0x2000, 0x8bd: 0x2000, - // Block 0x23, offset 0x8c0 - 0x8c0: 0x2000, 0x8c1: 0x2000, - 0x8c6: 0x2000, 0x8c7: 0x2000, 0x8c8: 0x2000, 0x8cb: 0x200f, - 0x8ce: 0x2000, 0x8cf: 0x2000, 0x8d0: 0x2000, 0x8d1: 0x2000, - 0x8e2: 0x2000, 0x8e3: 0x2000, - 0x8e4: 0x2000, 0x8e5: 0x2000, - 0x8ef: 0x2000, - 0x8fd: 0x4000, 0x8fe: 0x4000, - // Block 0x24, offset 0x900 - 0x905: 0x2000, - 0x906: 0x2000, 0x909: 0x2000, - 0x90e: 0x2000, 0x90f: 0x2000, - 0x914: 0x4000, 0x915: 0x4000, - 0x91c: 0x2000, - 0x91e: 0x2000, - // Block 0x25, offset 0x940 - 0x940: 0x2000, 0x942: 0x2000, - 0x948: 0x4000, 0x949: 0x4000, 0x94a: 0x4000, 0x94b: 0x4000, - 0x94c: 0x4000, 0x94d: 0x4000, 0x94e: 0x4000, 0x94f: 0x4000, 0x950: 0x4000, 0x951: 0x4000, - 0x952: 0x4000, 0x953: 0x4000, - 0x960: 0x2000, 0x961: 0x2000, 0x963: 0x2000, - 0x964: 0x2000, 0x965: 0x2000, 0x967: 0x2000, 0x968: 0x2000, 0x969: 0x2000, - 0x96a: 0x2000, 0x96c: 0x2000, 0x96d: 0x2000, 0x96f: 0x2000, - 0x97f: 0x4000, - // Block 0x26, offset 0x980 - 0x993: 0x4000, - 0x99e: 0x2000, 0x99f: 0x2000, 0x9a1: 0x4000, - 0x9aa: 0x4000, 0x9ab: 0x4000, - 0x9bd: 0x4000, 0x9be: 0x4000, 0x9bf: 0x2000, - // Block 0x27, offset 0x9c0 - 0x9c4: 0x4000, 0x9c5: 0x4000, - 0x9c6: 0x2000, 0x9c7: 0x2000, 0x9c8: 0x2000, 0x9c9: 0x2000, 0x9ca: 0x2000, 0x9cb: 0x2000, - 0x9cc: 0x2000, 0x9cd: 0x2000, 0x9ce: 0x4000, 0x9cf: 0x2000, 0x9d0: 0x2000, 0x9d1: 0x2000, - 0x9d2: 0x2000, 0x9d3: 0x2000, 0x9d4: 0x4000, 0x9d5: 0x2000, 0x9d6: 0x2000, 0x9d7: 0x2000, - 0x9d8: 0x2000, 0x9d9: 0x2000, 0x9da: 0x2000, 0x9db: 0x2000, 0x9dc: 0x2000, 0x9dd: 0x2000, - 0x9de: 0x2000, 0x9df: 0x2000, 0x9e0: 0x2000, 0x9e1: 0x2000, 0x9e3: 0x2000, - 0x9e8: 0x2000, 0x9e9: 0x2000, - 0x9ea: 0x4000, 0x9eb: 0x2000, 0x9ec: 0x2000, 0x9ed: 0x2000, 0x9ee: 0x2000, 0x9ef: 0x2000, - 0x9f0: 0x2000, 0x9f1: 0x2000, 0x9f2: 0x4000, 0x9f3: 0x4000, 0x9f4: 0x2000, 0x9f5: 0x4000, - 0x9f6: 0x2000, 0x9f7: 0x2000, 0x9f8: 0x2000, 0x9f9: 0x2000, 0x9fa: 0x4000, 0x9fb: 0x2000, - 0x9fc: 0x2000, 0x9fd: 0x4000, 0x9fe: 0x2000, 0x9ff: 0x2000, - // Block 0x28, offset 0xa00 - 0xa05: 0x4000, - 0xa0a: 0x4000, 0xa0b: 0x4000, - 0xa28: 0x4000, - 0xa3d: 0x2000, - // Block 0x29, offset 0xa40 - 0xa4c: 0x4000, 0xa4e: 0x4000, - 0xa53: 0x4000, 0xa54: 0x4000, 0xa55: 0x4000, 0xa57: 0x4000, - 0xa76: 0x2000, 0xa77: 0x2000, 0xa78: 0x2000, 0xa79: 0x2000, 0xa7a: 0x2000, 0xa7b: 0x2000, - 0xa7c: 0x2000, 0xa7d: 0x2000, 0xa7e: 0x2000, 0xa7f: 0x2000, - // Block 0x2a, offset 0xa80 - 0xa95: 0x4000, 0xa96: 0x4000, 0xa97: 0x4000, - 0xab0: 0x4000, - 0xabf: 0x4000, - // Block 0x2b, offset 0xac0 - 0xae6: 0x6000, 0xae7: 0x6000, 0xae8: 0x6000, 0xae9: 0x6000, - 0xaea: 0x6000, 0xaeb: 0x6000, 0xaec: 0x6000, 0xaed: 0x6000, - // Block 0x2c, offset 0xb00 - 0xb05: 0x6010, - 0xb06: 0x6011, - // Block 0x2d, offset 0xb40 - 0xb5b: 0x4000, 0xb5c: 0x4000, - // Block 0x2e, offset 0xb80 - 0xb90: 0x4000, - 0xb95: 0x4000, 0xb96: 0x2000, 0xb97: 0x2000, - 0xb98: 0x2000, 0xb99: 0x2000, - // Block 0x2f, offset 0xbc0 - 0xbc0: 0x4000, 0xbc1: 0x4000, 0xbc2: 0x4000, 0xbc3: 0x4000, 0xbc4: 0x4000, 0xbc5: 0x4000, - 0xbc6: 0x4000, 0xbc7: 0x4000, 0xbc8: 0x4000, 0xbc9: 0x4000, 0xbca: 0x4000, 0xbcb: 0x4000, - 0xbcc: 0x4000, 0xbcd: 0x4000, 0xbce: 0x4000, 0xbcf: 0x4000, 0xbd0: 0x4000, 0xbd1: 0x4000, - 0xbd2: 0x4000, 0xbd3: 0x4000, 0xbd4: 0x4000, 0xbd5: 0x4000, 0xbd6: 0x4000, 0xbd7: 0x4000, - 0xbd8: 0x4000, 0xbd9: 0x4000, 0xbdb: 0x4000, 0xbdc: 0x4000, 0xbdd: 0x4000, - 0xbde: 0x4000, 0xbdf: 0x4000, 0xbe0: 0x4000, 0xbe1: 0x4000, 0xbe2: 0x4000, 0xbe3: 0x4000, - 0xbe4: 0x4000, 0xbe5: 0x4000, 0xbe6: 0x4000, 0xbe7: 0x4000, 0xbe8: 0x4000, 0xbe9: 0x4000, - 0xbea: 0x4000, 0xbeb: 0x4000, 0xbec: 0x4000, 0xbed: 0x4000, 0xbee: 0x4000, 0xbef: 0x4000, - 0xbf0: 0x4000, 0xbf1: 0x4000, 0xbf2: 0x4000, 0xbf3: 0x4000, 0xbf4: 0x4000, 0xbf5: 0x4000, - 0xbf6: 0x4000, 0xbf7: 0x4000, 0xbf8: 0x4000, 0xbf9: 0x4000, 0xbfa: 0x4000, 0xbfb: 0x4000, - 0xbfc: 0x4000, 0xbfd: 0x4000, 0xbfe: 0x4000, 0xbff: 0x4000, - // Block 0x30, offset 0xc00 - 0xc00: 0x4000, 0xc01: 0x4000, 0xc02: 0x4000, 0xc03: 0x4000, 0xc04: 0x4000, 0xc05: 0x4000, - 0xc06: 0x4000, 0xc07: 0x4000, 0xc08: 0x4000, 0xc09: 0x4000, 0xc0a: 0x4000, 0xc0b: 0x4000, - 0xc0c: 0x4000, 0xc0d: 0x4000, 0xc0e: 0x4000, 0xc0f: 0x4000, 0xc10: 0x4000, 0xc11: 0x4000, - 0xc12: 0x4000, 0xc13: 0x4000, 0xc14: 0x4000, 0xc15: 0x4000, 0xc16: 0x4000, 0xc17: 0x4000, - 0xc18: 0x4000, 0xc19: 0x4000, 0xc1a: 0x4000, 0xc1b: 0x4000, 0xc1c: 0x4000, 0xc1d: 0x4000, - 0xc1e: 0x4000, 0xc1f: 0x4000, 0xc20: 0x4000, 0xc21: 0x4000, 0xc22: 0x4000, 0xc23: 0x4000, - 0xc24: 0x4000, 0xc25: 0x4000, 0xc26: 0x4000, 0xc27: 0x4000, 0xc28: 0x4000, 0xc29: 0x4000, - 0xc2a: 0x4000, 0xc2b: 0x4000, 0xc2c: 0x4000, 0xc2d: 0x4000, 0xc2e: 0x4000, 0xc2f: 0x4000, - 0xc30: 0x4000, 0xc31: 0x4000, 0xc32: 0x4000, 0xc33: 0x4000, - // Block 0x31, offset 0xc40 - 0xc40: 0x4000, 0xc41: 0x4000, 0xc42: 0x4000, 0xc43: 0x4000, 0xc44: 0x4000, 0xc45: 0x4000, - 0xc46: 0x4000, 0xc47: 0x4000, 0xc48: 0x4000, 0xc49: 0x4000, 0xc4a: 0x4000, 0xc4b: 0x4000, - 0xc4c: 0x4000, 0xc4d: 0x4000, 0xc4e: 0x4000, 0xc4f: 0x4000, 0xc50: 0x4000, 0xc51: 0x4000, - 0xc52: 0x4000, 0xc53: 0x4000, 0xc54: 0x4000, 0xc55: 0x4000, - 0xc70: 0x4000, 0xc71: 0x4000, 0xc72: 0x4000, 0xc73: 0x4000, 0xc74: 0x4000, 0xc75: 0x4000, - 0xc76: 0x4000, 0xc77: 0x4000, 0xc78: 0x4000, 0xc79: 0x4000, 0xc7a: 0x4000, 0xc7b: 0x4000, - // Block 0x32, offset 0xc80 - 0xc80: 0x9012, 0xc81: 0x4013, 0xc82: 0x4014, 0xc83: 0x4000, 0xc84: 0x4000, 0xc85: 0x4000, - 0xc86: 0x4000, 0xc87: 0x4000, 0xc88: 0x4000, 0xc89: 0x4000, 0xc8a: 0x4000, 0xc8b: 0x4000, - 0xc8c: 0x4015, 0xc8d: 0x4015, 0xc8e: 0x4000, 0xc8f: 0x4000, 0xc90: 0x4000, 0xc91: 0x4000, - 0xc92: 0x4000, 0xc93: 0x4000, 0xc94: 0x4000, 0xc95: 0x4000, 0xc96: 0x4000, 0xc97: 0x4000, - 0xc98: 0x4000, 0xc99: 0x4000, 0xc9a: 0x4000, 0xc9b: 0x4000, 0xc9c: 0x4000, 0xc9d: 0x4000, - 0xc9e: 0x4000, 0xc9f: 0x4000, 0xca0: 0x4000, 0xca1: 0x4000, 0xca2: 0x4000, 0xca3: 0x4000, - 0xca4: 0x4000, 0xca5: 0x4000, 0xca6: 0x4000, 0xca7: 0x4000, 0xca8: 0x4000, 0xca9: 0x4000, - 0xcaa: 0x4000, 0xcab: 0x4000, 0xcac: 0x4000, 0xcad: 0x4000, 0xcae: 0x4000, 0xcaf: 0x4000, - 0xcb0: 0x4000, 0xcb1: 0x4000, 0xcb2: 0x4000, 0xcb3: 0x4000, 0xcb4: 0x4000, 0xcb5: 0x4000, - 0xcb6: 0x4000, 0xcb7: 0x4000, 0xcb8: 0x4000, 0xcb9: 0x4000, 0xcba: 0x4000, 0xcbb: 0x4000, - 0xcbc: 0x4000, 0xcbd: 0x4000, 0xcbe: 0x4000, - // Block 0x33, offset 0xcc0 - 0xcc1: 0x4000, 0xcc2: 0x4000, 0xcc3: 0x4000, 0xcc4: 0x4000, 0xcc5: 0x4000, - 0xcc6: 0x4000, 0xcc7: 0x4000, 0xcc8: 0x4000, 0xcc9: 0x4000, 0xcca: 0x4000, 0xccb: 0x4000, - 0xccc: 0x4000, 0xccd: 0x4000, 0xcce: 0x4000, 0xccf: 0x4000, 0xcd0: 0x4000, 0xcd1: 0x4000, - 0xcd2: 0x4000, 0xcd3: 0x4000, 0xcd4: 0x4000, 0xcd5: 0x4000, 0xcd6: 0x4000, 0xcd7: 0x4000, - 0xcd8: 0x4000, 0xcd9: 0x4000, 0xcda: 0x4000, 0xcdb: 0x4000, 0xcdc: 0x4000, 0xcdd: 0x4000, - 0xcde: 0x4000, 0xcdf: 0x4000, 0xce0: 0x4000, 0xce1: 0x4000, 0xce2: 0x4000, 0xce3: 0x4000, - 0xce4: 0x4000, 0xce5: 0x4000, 0xce6: 0x4000, 0xce7: 0x4000, 0xce8: 0x4000, 0xce9: 0x4000, - 0xcea: 0x4000, 0xceb: 0x4000, 0xcec: 0x4000, 0xced: 0x4000, 0xcee: 0x4000, 0xcef: 0x4000, - 0xcf0: 0x4000, 0xcf1: 0x4000, 0xcf2: 0x4000, 0xcf3: 0x4000, 0xcf4: 0x4000, 0xcf5: 0x4000, - 0xcf6: 0x4000, 0xcf7: 0x4000, 0xcf8: 0x4000, 0xcf9: 0x4000, 0xcfa: 0x4000, 0xcfb: 0x4000, - 0xcfc: 0x4000, 0xcfd: 0x4000, 0xcfe: 0x4000, 0xcff: 0x4000, - // Block 0x34, offset 0xd00 - 0xd00: 0x4000, 0xd01: 0x4000, 0xd02: 0x4000, 0xd03: 0x4000, 0xd04: 0x4000, 0xd05: 0x4000, - 0xd06: 0x4000, 0xd07: 0x4000, 0xd08: 0x4000, 0xd09: 0x4000, 0xd0a: 0x4000, 0xd0b: 0x4000, - 0xd0c: 0x4000, 0xd0d: 0x4000, 0xd0e: 0x4000, 0xd0f: 0x4000, 0xd10: 0x4000, 0xd11: 0x4000, - 0xd12: 0x4000, 0xd13: 0x4000, 0xd14: 0x4000, 0xd15: 0x4000, 0xd16: 0x4000, - 0xd19: 0x4016, 0xd1a: 0x4017, 0xd1b: 0x4000, 0xd1c: 0x4000, 0xd1d: 0x4000, - 0xd1e: 0x4000, 0xd1f: 0x4000, 0xd20: 0x4000, 0xd21: 0x4018, 0xd22: 0x4019, 0xd23: 0x401a, - 0xd24: 0x401b, 0xd25: 0x401c, 0xd26: 0x401d, 0xd27: 0x401e, 0xd28: 0x401f, 0xd29: 0x4020, - 0xd2a: 0x4021, 0xd2b: 0x4022, 0xd2c: 0x4000, 0xd2d: 0x4010, 0xd2e: 0x4000, 0xd2f: 0x4023, - 0xd30: 0x4000, 0xd31: 0x4024, 0xd32: 0x4000, 0xd33: 0x4025, 0xd34: 0x4000, 0xd35: 0x4026, - 0xd36: 0x4000, 0xd37: 0x401a, 0xd38: 0x4000, 0xd39: 0x4027, 0xd3a: 0x4000, 0xd3b: 0x4028, - 0xd3c: 0x4000, 0xd3d: 0x4020, 0xd3e: 0x4000, 0xd3f: 0x4029, - // Block 0x35, offset 0xd40 - 0xd40: 0x4000, 0xd41: 0x402a, 0xd42: 0x4000, 0xd43: 0x402b, 0xd44: 0x402c, 0xd45: 0x4000, - 0xd46: 0x4017, 0xd47: 0x4000, 0xd48: 0x402d, 0xd49: 0x4000, 0xd4a: 0x402e, 0xd4b: 0x402f, - 0xd4c: 0x4030, 0xd4d: 0x4017, 0xd4e: 0x4016, 0xd4f: 0x4017, 0xd50: 0x4000, 0xd51: 0x4000, - 0xd52: 0x4031, 0xd53: 0x4000, 0xd54: 0x4000, 0xd55: 0x4031, 0xd56: 0x4000, 0xd57: 0x4000, - 0xd58: 0x4032, 0xd59: 0x4000, 0xd5a: 0x4000, 0xd5b: 0x4032, 0xd5c: 0x4000, 0xd5d: 0x4000, - 0xd5e: 0x4033, 0xd5f: 0x402e, 0xd60: 0x4034, 0xd61: 0x4035, 0xd62: 0x4034, 0xd63: 0x4036, - 0xd64: 0x4037, 0xd65: 0x4024, 0xd66: 0x4035, 0xd67: 0x4025, 0xd68: 0x4038, 0xd69: 0x4038, - 0xd6a: 0x4039, 0xd6b: 0x4039, 0xd6c: 0x403a, 0xd6d: 0x403a, 0xd6e: 0x4000, 0xd6f: 0x4035, - 0xd70: 0x4000, 0xd71: 0x4000, 0xd72: 0x403b, 0xd73: 0x403c, 0xd74: 0x4000, 0xd75: 0x4000, - 0xd76: 0x4000, 0xd77: 0x4000, 0xd78: 0x4000, 0xd79: 0x4000, 0xd7a: 0x4000, 0xd7b: 0x403d, - 0xd7c: 0x401c, 0xd7d: 0x4000, 0xd7e: 0x4000, 0xd7f: 0x4000, - // Block 0x36, offset 0xd80 - 0xd85: 0x4000, - 0xd86: 0x4000, 0xd87: 0x4000, 0xd88: 0x4000, 0xd89: 0x4000, 0xd8a: 0x4000, 0xd8b: 0x4000, - 0xd8c: 0x4000, 0xd8d: 0x4000, 0xd8e: 0x4000, 0xd8f: 0x4000, 0xd90: 0x4000, 0xd91: 0x4000, - 0xd92: 0x4000, 0xd93: 0x4000, 0xd94: 0x4000, 0xd95: 0x4000, 0xd96: 0x4000, 0xd97: 0x4000, - 0xd98: 0x4000, 0xd99: 0x4000, 0xd9a: 0x4000, 0xd9b: 0x4000, 0xd9c: 0x4000, 0xd9d: 0x4000, - 0xd9e: 0x4000, 0xd9f: 0x4000, 0xda0: 0x4000, 0xda1: 0x4000, 0xda2: 0x4000, 0xda3: 0x4000, - 0xda4: 0x4000, 0xda5: 0x4000, 0xda6: 0x4000, 0xda7: 0x4000, 0xda8: 0x4000, 0xda9: 0x4000, - 0xdaa: 0x4000, 0xdab: 0x4000, 0xdac: 0x4000, 0xdad: 0x4000, 0xdae: 0x4000, - 0xdb1: 0x403e, 0xdb2: 0x403e, 0xdb3: 0x403e, 0xdb4: 0x403e, 0xdb5: 0x403e, - 0xdb6: 0x403e, 0xdb7: 0x403e, 0xdb8: 0x403e, 0xdb9: 0x403e, 0xdba: 0x403e, 0xdbb: 0x403e, - 0xdbc: 0x403e, 0xdbd: 0x403e, 0xdbe: 0x403e, 0xdbf: 0x403e, - // Block 0x37, offset 0xdc0 - 0xdc0: 0x4037, 0xdc1: 0x4037, 0xdc2: 0x4037, 0xdc3: 0x4037, 0xdc4: 0x4037, 0xdc5: 0x4037, - 0xdc6: 0x4037, 0xdc7: 0x4037, 0xdc8: 0x4037, 0xdc9: 0x4037, 0xdca: 0x4037, 0xdcb: 0x4037, - 0xdcc: 0x4037, 0xdcd: 0x4037, 0xdce: 0x4037, 0xdcf: 0x400e, 0xdd0: 0x403f, 0xdd1: 0x4040, - 0xdd2: 0x4041, 0xdd3: 0x4040, 0xdd4: 0x403f, 0xdd5: 0x4042, 0xdd6: 0x4043, 0xdd7: 0x4044, - 0xdd8: 0x4040, 0xdd9: 0x4041, 0xdda: 0x4040, 0xddb: 0x4045, 0xddc: 0x4009, 0xddd: 0x4045, - 0xdde: 0x4046, 0xddf: 0x4045, 0xde0: 0x4047, 0xde1: 0x400b, 0xde2: 0x400a, 0xde3: 0x400c, - 0xde4: 0x4048, 0xde5: 0x4000, 0xde6: 0x4000, 0xde7: 0x4000, 0xde8: 0x4000, 0xde9: 0x4000, - 0xdea: 0x4000, 0xdeb: 0x4000, 0xdec: 0x4000, 0xded: 0x4000, 0xdee: 0x4000, 0xdef: 0x4000, - 0xdf0: 0x4000, 0xdf1: 0x4000, 0xdf2: 0x4000, 0xdf3: 0x4000, 0xdf4: 0x4000, 0xdf5: 0x4000, - 0xdf6: 0x4000, 0xdf7: 0x4000, 0xdf8: 0x4000, 0xdf9: 0x4000, 0xdfa: 0x4000, 0xdfb: 0x4000, - 0xdfc: 0x4000, 0xdfd: 0x4000, 0xdfe: 0x4000, 0xdff: 0x4000, - // Block 0x38, offset 0xe00 - 0xe00: 0x4000, 0xe01: 0x4000, 0xe02: 0x4000, 0xe03: 0x4000, 0xe04: 0x4000, 0xe05: 0x4000, - 0xe06: 0x4000, 0xe07: 0x4000, 0xe08: 0x4000, 0xe09: 0x4000, 0xe0a: 0x4000, 0xe0b: 0x4000, - 0xe0c: 0x4000, 0xe0d: 0x4000, 0xe0e: 0x4000, 0xe10: 0x4000, 0xe11: 0x4000, - 0xe12: 0x4000, 0xe13: 0x4000, 0xe14: 0x4000, 0xe15: 0x4000, 0xe16: 0x4000, 0xe17: 0x4000, - 0xe18: 0x4000, 0xe19: 0x4000, 0xe1a: 0x4000, 0xe1b: 0x4000, 0xe1c: 0x4000, 0xe1d: 0x4000, - 0xe1e: 0x4000, 0xe1f: 0x4000, 0xe20: 0x4000, 0xe21: 0x4000, 0xe22: 0x4000, 0xe23: 0x4000, - 0xe24: 0x4000, 0xe25: 0x4000, 0xe26: 0x4000, 0xe27: 0x4000, 0xe28: 0x4000, 0xe29: 0x4000, - 0xe2a: 0x4000, 0xe2b: 0x4000, 0xe2c: 0x4000, 0xe2d: 0x4000, 0xe2e: 0x4000, 0xe2f: 0x4000, - 0xe30: 0x4000, 0xe31: 0x4000, 0xe32: 0x4000, 0xe33: 0x4000, 0xe34: 0x4000, 0xe35: 0x4000, - 0xe36: 0x4000, 0xe37: 0x4000, 0xe38: 0x4000, 0xe39: 0x4000, 0xe3a: 0x4000, - // Block 0x39, offset 0xe40 - 0xe40: 0x4000, 0xe41: 0x4000, 0xe42: 0x4000, 0xe43: 0x4000, 0xe44: 0x4000, 0xe45: 0x4000, - 0xe46: 0x4000, 0xe47: 0x4000, 0xe48: 0x4000, 0xe49: 0x4000, 0xe4a: 0x4000, 0xe4b: 0x4000, - 0xe4c: 0x4000, 0xe4d: 0x4000, 0xe4e: 0x4000, 0xe4f: 0x4000, 0xe50: 0x4000, 0xe51: 0x4000, - 0xe52: 0x4000, 0xe53: 0x4000, 0xe54: 0x4000, 0xe55: 0x4000, 0xe56: 0x4000, 0xe57: 0x4000, - 0xe58: 0x4000, 0xe59: 0x4000, 0xe5a: 0x4000, 0xe5b: 0x4000, 0xe5c: 0x4000, 0xe5d: 0x4000, - 0xe5e: 0x4000, 0xe5f: 0x4000, 0xe60: 0x4000, 0xe61: 0x4000, 0xe62: 0x4000, 0xe63: 0x4000, - 0xe70: 0x4000, 0xe71: 0x4000, 0xe72: 0x4000, 0xe73: 0x4000, 0xe74: 0x4000, 0xe75: 0x4000, - 0xe76: 0x4000, 0xe77: 0x4000, 0xe78: 0x4000, 0xe79: 0x4000, 0xe7a: 0x4000, 0xe7b: 0x4000, - 0xe7c: 0x4000, 0xe7d: 0x4000, 0xe7e: 0x4000, 0xe7f: 0x4000, - // Block 0x3a, offset 0xe80 - 0xe80: 0x4000, 0xe81: 0x4000, 0xe82: 0x4000, 0xe83: 0x4000, 0xe84: 0x4000, 0xe85: 0x4000, - 0xe86: 0x4000, 0xe87: 0x4000, 0xe88: 0x4000, 0xe89: 0x4000, 0xe8a: 0x4000, 0xe8b: 0x4000, - 0xe8c: 0x4000, 0xe8d: 0x4000, 0xe8e: 0x4000, 0xe8f: 0x4000, 0xe90: 0x4000, 0xe91: 0x4000, - 0xe92: 0x4000, 0xe93: 0x4000, 0xe94: 0x4000, 0xe95: 0x4000, 0xe96: 0x4000, 0xe97: 0x4000, - 0xe98: 0x4000, 0xe99: 0x4000, 0xe9a: 0x4000, 0xe9b: 0x4000, 0xe9c: 0x4000, 0xe9d: 0x4000, - 0xe9e: 0x4000, 0xea0: 0x4000, 0xea1: 0x4000, 0xea2: 0x4000, 0xea3: 0x4000, - 0xea4: 0x4000, 0xea5: 0x4000, 0xea6: 0x4000, 0xea7: 0x4000, 0xea8: 0x4000, 0xea9: 0x4000, - 0xeaa: 0x4000, 0xeab: 0x4000, 0xeac: 0x4000, 0xead: 0x4000, 0xeae: 0x4000, 0xeaf: 0x4000, - 0xeb0: 0x4000, 0xeb1: 0x4000, 0xeb2: 0x4000, 0xeb3: 0x4000, 0xeb4: 0x4000, 0xeb5: 0x4000, - 0xeb6: 0x4000, 0xeb7: 0x4000, 0xeb8: 0x4000, 0xeb9: 0x4000, 0xeba: 0x4000, 0xebb: 0x4000, - 0xebc: 0x4000, 0xebd: 0x4000, 0xebe: 0x4000, 0xebf: 0x4000, - // Block 0x3b, offset 0xec0 - 0xec0: 0x4000, 0xec1: 0x4000, 0xec2: 0x4000, 0xec3: 0x4000, 0xec4: 0x4000, 0xec5: 0x4000, - 0xec6: 0x4000, 0xec7: 0x4000, 0xec8: 0x2000, 0xec9: 0x2000, 0xeca: 0x2000, 0xecb: 0x2000, - 0xecc: 0x2000, 0xecd: 0x2000, 0xece: 0x2000, 0xecf: 0x2000, 0xed0: 0x4000, 0xed1: 0x4000, - 0xed2: 0x4000, 0xed3: 0x4000, 0xed4: 0x4000, 0xed5: 0x4000, 0xed6: 0x4000, 0xed7: 0x4000, - 0xed8: 0x4000, 0xed9: 0x4000, 0xeda: 0x4000, 0xedb: 0x4000, 0xedc: 0x4000, 0xedd: 0x4000, - 0xede: 0x4000, 0xedf: 0x4000, 0xee0: 0x4000, 0xee1: 0x4000, 0xee2: 0x4000, 0xee3: 0x4000, - 0xee4: 0x4000, 0xee5: 0x4000, 0xee6: 0x4000, 0xee7: 0x4000, 0xee8: 0x4000, 0xee9: 0x4000, - 0xeea: 0x4000, 0xeeb: 0x4000, 0xeec: 0x4000, 0xeed: 0x4000, 0xeee: 0x4000, 0xeef: 0x4000, - 0xef0: 0x4000, 0xef1: 0x4000, 0xef2: 0x4000, 0xef3: 0x4000, 0xef4: 0x4000, 0xef5: 0x4000, - 0xef6: 0x4000, 0xef7: 0x4000, 0xef8: 0x4000, 0xef9: 0x4000, 0xefa: 0x4000, 0xefb: 0x4000, - 0xefc: 0x4000, 0xefd: 0x4000, 0xefe: 0x4000, 0xeff: 0x4000, - // Block 0x3c, offset 0xf00 - 0xf00: 0x4000, 0xf01: 0x4000, 0xf02: 0x4000, 0xf03: 0x4000, 0xf04: 0x4000, 0xf05: 0x4000, - 0xf06: 0x4000, 0xf07: 0x4000, 0xf08: 0x4000, 0xf09: 0x4000, 0xf0a: 0x4000, 0xf0b: 0x4000, - 0xf0c: 0x4000, 0xf0d: 0x4000, 0xf0e: 0x4000, 0xf0f: 0x4000, 0xf10: 0x4000, 0xf11: 0x4000, - 0xf12: 0x4000, 0xf13: 0x4000, 0xf14: 0x4000, 0xf15: 0x4000, 0xf16: 0x4000, 0xf17: 0x4000, - 0xf18: 0x4000, 0xf19: 0x4000, 0xf1a: 0x4000, 0xf1b: 0x4000, 0xf1c: 0x4000, 0xf1d: 0x4000, - 0xf1e: 0x4000, 0xf1f: 0x4000, 0xf20: 0x4000, 0xf21: 0x4000, 0xf22: 0x4000, 0xf23: 0x4000, - 0xf24: 0x4000, 0xf25: 0x4000, 0xf26: 0x4000, 0xf27: 0x4000, 0xf28: 0x4000, 0xf29: 0x4000, - 0xf2a: 0x4000, 0xf2b: 0x4000, 0xf2c: 0x4000, 0xf2d: 0x4000, 0xf2e: 0x4000, 0xf2f: 0x4000, - 0xf30: 0x4000, 0xf31: 0x4000, 0xf32: 0x4000, 0xf33: 0x4000, 0xf34: 0x4000, 0xf35: 0x4000, - 0xf36: 0x4000, 0xf37: 0x4000, 0xf38: 0x4000, 0xf39: 0x4000, 0xf3a: 0x4000, 0xf3b: 0x4000, - 0xf3c: 0x4000, 0xf3d: 0x4000, 0xf3e: 0x4000, - // Block 0x3d, offset 0xf40 - 0xf40: 0x4000, 0xf41: 0x4000, 0xf42: 0x4000, 0xf43: 0x4000, 0xf44: 0x4000, 0xf45: 0x4000, - 0xf46: 0x4000, 0xf47: 0x4000, 0xf48: 0x4000, 0xf49: 0x4000, 0xf4a: 0x4000, 0xf4b: 0x4000, - 0xf4c: 0x4000, 0xf50: 0x4000, 0xf51: 0x4000, - 0xf52: 0x4000, 0xf53: 0x4000, 0xf54: 0x4000, 0xf55: 0x4000, 0xf56: 0x4000, 0xf57: 0x4000, - 0xf58: 0x4000, 0xf59: 0x4000, 0xf5a: 0x4000, 0xf5b: 0x4000, 0xf5c: 0x4000, 0xf5d: 0x4000, - 0xf5e: 0x4000, 0xf5f: 0x4000, 0xf60: 0x4000, 0xf61: 0x4000, 0xf62: 0x4000, 0xf63: 0x4000, - 0xf64: 0x4000, 0xf65: 0x4000, 0xf66: 0x4000, 0xf67: 0x4000, 0xf68: 0x4000, 0xf69: 0x4000, - 0xf6a: 0x4000, 0xf6b: 0x4000, 0xf6c: 0x4000, 0xf6d: 0x4000, 0xf6e: 0x4000, 0xf6f: 0x4000, - 0xf70: 0x4000, 0xf71: 0x4000, 0xf72: 0x4000, 0xf73: 0x4000, 0xf74: 0x4000, 0xf75: 0x4000, - 0xf76: 0x4000, 0xf77: 0x4000, 0xf78: 0x4000, 0xf79: 0x4000, 0xf7a: 0x4000, 0xf7b: 0x4000, - 0xf7c: 0x4000, 0xf7d: 0x4000, 0xf7e: 0x4000, 0xf7f: 0x4000, - // Block 0x3e, offset 0xf80 - 0xf80: 0x4000, 0xf81: 0x4000, 0xf82: 0x4000, 0xf83: 0x4000, 0xf84: 0x4000, 0xf85: 0x4000, - 0xf86: 0x4000, - // Block 0x3f, offset 0xfc0 - 0xfe0: 0x4000, 0xfe1: 0x4000, 0xfe2: 0x4000, 0xfe3: 0x4000, - 0xfe4: 0x4000, 0xfe5: 0x4000, 0xfe6: 0x4000, 0xfe7: 0x4000, 0xfe8: 0x4000, 0xfe9: 0x4000, - 0xfea: 0x4000, 0xfeb: 0x4000, 0xfec: 0x4000, 0xfed: 0x4000, 0xfee: 0x4000, 0xfef: 0x4000, - 0xff0: 0x4000, 0xff1: 0x4000, 0xff2: 0x4000, 0xff3: 0x4000, 0xff4: 0x4000, 0xff5: 0x4000, - 0xff6: 0x4000, 0xff7: 0x4000, 0xff8: 0x4000, 0xff9: 0x4000, 0xffa: 0x4000, 0xffb: 0x4000, - 0xffc: 0x4000, - // Block 0x40, offset 0x1000 - 0x1000: 0x4000, 0x1001: 0x4000, 0x1002: 0x4000, 0x1003: 0x4000, 0x1004: 0x4000, 0x1005: 0x4000, - 0x1006: 0x4000, 0x1007: 0x4000, 0x1008: 0x4000, 0x1009: 0x4000, 0x100a: 0x4000, 0x100b: 0x4000, - 0x100c: 0x4000, 0x100d: 0x4000, 0x100e: 0x4000, 0x100f: 0x4000, 0x1010: 0x4000, 0x1011: 0x4000, - 0x1012: 0x4000, 0x1013: 0x4000, 0x1014: 0x4000, 0x1015: 0x4000, 0x1016: 0x4000, 0x1017: 0x4000, - 0x1018: 0x4000, 0x1019: 0x4000, 0x101a: 0x4000, 0x101b: 0x4000, 0x101c: 0x4000, 0x101d: 0x4000, - 0x101e: 0x4000, 0x101f: 0x4000, 0x1020: 0x4000, 0x1021: 0x4000, 0x1022: 0x4000, 0x1023: 0x4000, - // Block 0x41, offset 0x1040 - 0x1040: 0x2000, 0x1041: 0x2000, 0x1042: 0x2000, 0x1043: 0x2000, 0x1044: 0x2000, 0x1045: 0x2000, - 0x1046: 0x2000, 0x1047: 0x2000, 0x1048: 0x2000, 0x1049: 0x2000, 0x104a: 0x2000, 0x104b: 0x2000, - 0x104c: 0x2000, 0x104d: 0x2000, 0x104e: 0x2000, 0x104f: 0x2000, 0x1050: 0x4000, 0x1051: 0x4000, - 0x1052: 0x4000, 0x1053: 0x4000, 0x1054: 0x4000, 0x1055: 0x4000, 0x1056: 0x4000, 0x1057: 0x4000, - 0x1058: 0x4000, 0x1059: 0x4000, - 0x1070: 0x4000, 0x1071: 0x4000, 0x1072: 0x4000, 0x1073: 0x4000, 0x1074: 0x4000, 0x1075: 0x4000, - 0x1076: 0x4000, 0x1077: 0x4000, 0x1078: 0x4000, 0x1079: 0x4000, 0x107a: 0x4000, 0x107b: 0x4000, - 0x107c: 0x4000, 0x107d: 0x4000, 0x107e: 0x4000, 0x107f: 0x4000, - // Block 0x42, offset 0x1080 - 0x1080: 0x4000, 0x1081: 0x4000, 0x1082: 0x4000, 0x1083: 0x4000, 0x1084: 0x4000, 0x1085: 0x4000, - 0x1086: 0x4000, 0x1087: 0x4000, 0x1088: 0x4000, 0x1089: 0x4000, 0x108a: 0x4000, 0x108b: 0x4000, - 0x108c: 0x4000, 0x108d: 0x4000, 0x108e: 0x4000, 0x108f: 0x4000, 0x1090: 0x4000, 0x1091: 0x4000, - 0x1092: 0x4000, 0x1094: 0x4000, 0x1095: 0x4000, 0x1096: 0x4000, 0x1097: 0x4000, - 0x1098: 0x4000, 0x1099: 0x4000, 0x109a: 0x4000, 0x109b: 0x4000, 0x109c: 0x4000, 0x109d: 0x4000, - 0x109e: 0x4000, 0x109f: 0x4000, 0x10a0: 0x4000, 0x10a1: 0x4000, 0x10a2: 0x4000, 0x10a3: 0x4000, - 0x10a4: 0x4000, 0x10a5: 0x4000, 0x10a6: 0x4000, 0x10a8: 0x4000, 0x10a9: 0x4000, - 0x10aa: 0x4000, 0x10ab: 0x4000, - // Block 0x43, offset 0x10c0 - 0x10c1: 0x9012, 0x10c2: 0x9012, 0x10c3: 0x9012, 0x10c4: 0x9012, 0x10c5: 0x9012, - 0x10c6: 0x9012, 0x10c7: 0x9012, 0x10c8: 0x9012, 0x10c9: 0x9012, 0x10ca: 0x9012, 0x10cb: 0x9012, - 0x10cc: 0x9012, 0x10cd: 0x9012, 0x10ce: 0x9012, 0x10cf: 0x9012, 0x10d0: 0x9012, 0x10d1: 0x9012, - 0x10d2: 0x9012, 0x10d3: 0x9012, 0x10d4: 0x9012, 0x10d5: 0x9012, 0x10d6: 0x9012, 0x10d7: 0x9012, - 0x10d8: 0x9012, 0x10d9: 0x9012, 0x10da: 0x9012, 0x10db: 0x9012, 0x10dc: 0x9012, 0x10dd: 0x9012, - 0x10de: 0x9012, 0x10df: 0x9012, 0x10e0: 0x9049, 0x10e1: 0x9049, 0x10e2: 0x9049, 0x10e3: 0x9049, - 0x10e4: 0x9049, 0x10e5: 0x9049, 0x10e6: 0x9049, 0x10e7: 0x9049, 0x10e8: 0x9049, 0x10e9: 0x9049, - 0x10ea: 0x9049, 0x10eb: 0x9049, 0x10ec: 0x9049, 0x10ed: 0x9049, 0x10ee: 0x9049, 0x10ef: 0x9049, - 0x10f0: 0x9049, 0x10f1: 0x9049, 0x10f2: 0x9049, 0x10f3: 0x9049, 0x10f4: 0x9049, 0x10f5: 0x9049, - 0x10f6: 0x9049, 0x10f7: 0x9049, 0x10f8: 0x9049, 0x10f9: 0x9049, 0x10fa: 0x9049, 0x10fb: 0x9049, - 0x10fc: 0x9049, 0x10fd: 0x9049, 0x10fe: 0x9049, 0x10ff: 0x9049, - // Block 0x44, offset 0x1100 - 0x1100: 0x9049, 0x1101: 0x9049, 0x1102: 0x9049, 0x1103: 0x9049, 0x1104: 0x9049, 0x1105: 0x9049, - 0x1106: 0x9049, 0x1107: 0x9049, 0x1108: 0x9049, 0x1109: 0x9049, 0x110a: 0x9049, 0x110b: 0x9049, - 0x110c: 0x9049, 0x110d: 0x9049, 0x110e: 0x9049, 0x110f: 0x9049, 0x1110: 0x9049, 0x1111: 0x9049, - 0x1112: 0x9049, 0x1113: 0x9049, 0x1114: 0x9049, 0x1115: 0x9049, 0x1116: 0x9049, 0x1117: 0x9049, - 0x1118: 0x9049, 0x1119: 0x9049, 0x111a: 0x9049, 0x111b: 0x9049, 0x111c: 0x9049, 0x111d: 0x9049, - 0x111e: 0x9049, 0x111f: 0x904a, 0x1120: 0x904b, 0x1121: 0xb04c, 0x1122: 0xb04d, 0x1123: 0xb04d, - 0x1124: 0xb04e, 0x1125: 0xb04f, 0x1126: 0xb050, 0x1127: 0xb051, 0x1128: 0xb052, 0x1129: 0xb053, - 0x112a: 0xb054, 0x112b: 0xb055, 0x112c: 0xb056, 0x112d: 0xb057, 0x112e: 0xb058, 0x112f: 0xb059, - 0x1130: 0xb05a, 0x1131: 0xb05b, 0x1132: 0xb05c, 0x1133: 0xb05d, 0x1134: 0xb05e, 0x1135: 0xb05f, - 0x1136: 0xb060, 0x1137: 0xb061, 0x1138: 0xb062, 0x1139: 0xb063, 0x113a: 0xb064, 0x113b: 0xb065, - 0x113c: 0xb052, 0x113d: 0xb066, 0x113e: 0xb067, 0x113f: 0xb055, - // Block 0x45, offset 0x1140 - 0x1140: 0xb068, 0x1141: 0xb069, 0x1142: 0xb06a, 0x1143: 0xb06b, 0x1144: 0xb05a, 0x1145: 0xb056, - 0x1146: 0xb06c, 0x1147: 0xb06d, 0x1148: 0xb06b, 0x1149: 0xb06e, 0x114a: 0xb06b, 0x114b: 0xb06f, - 0x114c: 0xb06f, 0x114d: 0xb070, 0x114e: 0xb070, 0x114f: 0xb071, 0x1150: 0xb056, 0x1151: 0xb072, - 0x1152: 0xb073, 0x1153: 0xb072, 0x1154: 0xb074, 0x1155: 0xb073, 0x1156: 0xb075, 0x1157: 0xb075, - 0x1158: 0xb076, 0x1159: 0xb076, 0x115a: 0xb077, 0x115b: 0xb077, 0x115c: 0xb073, 0x115d: 0xb078, - 0x115e: 0xb079, 0x115f: 0xb067, 0x1160: 0xb07a, 0x1161: 0xb07b, 0x1162: 0xb07b, 0x1163: 0xb07b, - 0x1164: 0xb07b, 0x1165: 0xb07b, 0x1166: 0xb07b, 0x1167: 0xb07b, 0x1168: 0xb07b, 0x1169: 0xb07b, - 0x116a: 0xb07b, 0x116b: 0xb07b, 0x116c: 0xb07b, 0x116d: 0xb07b, 0x116e: 0xb07b, 0x116f: 0xb07b, - 0x1170: 0xb07c, 0x1171: 0xb07c, 0x1172: 0xb07c, 0x1173: 0xb07c, 0x1174: 0xb07c, 0x1175: 0xb07c, - 0x1176: 0xb07c, 0x1177: 0xb07c, 0x1178: 0xb07c, 0x1179: 0xb07c, 0x117a: 0xb07c, 0x117b: 0xb07c, - 0x117c: 0xb07c, 0x117d: 0xb07c, 0x117e: 0xb07c, - // Block 0x46, offset 0x1180 - 0x1182: 0xb07d, 0x1183: 0xb07e, 0x1184: 0xb07f, 0x1185: 0xb080, - 0x1186: 0xb07f, 0x1187: 0xb07e, 0x118a: 0xb081, 0x118b: 0xb082, - 0x118c: 0xb083, 0x118d: 0xb07f, 0x118e: 0xb080, 0x118f: 0xb07f, - 0x1192: 0xb084, 0x1193: 0xb085, 0x1194: 0xb084, 0x1195: 0xb086, 0x1196: 0xb084, 0x1197: 0xb087, - 0x119a: 0xb088, 0x119b: 0xb089, 0x119c: 0xb08a, - 0x11a0: 0x908b, 0x11a1: 0x908b, 0x11a2: 0x908c, 0x11a3: 0x908d, - 0x11a4: 0x908b, 0x11a5: 0x908e, 0x11a6: 0x908f, 0x11a8: 0xb090, 0x11a9: 0xb091, - 0x11aa: 0xb092, 0x11ab: 0xb091, 0x11ac: 0xb093, 0x11ad: 0xb094, 0x11ae: 0xb095, - 0x11bd: 0x2000, - // Block 0x47, offset 0x11c0 - 0x11e0: 0x4000, 0x11e1: 0x4000, - // Block 0x48, offset 0x1200 - 0x1200: 0x4000, 0x1201: 0x4000, 0x1202: 0x4000, 0x1203: 0x4000, 0x1204: 0x4000, 0x1205: 0x4000, - 0x1206: 0x4000, 0x1207: 0x4000, 0x1208: 0x4000, 0x1209: 0x4000, 0x120a: 0x4000, 0x120b: 0x4000, - 0x120c: 0x4000, 0x120d: 0x4000, 0x120e: 0x4000, 0x120f: 0x4000, 0x1210: 0x4000, 0x1211: 0x4000, - 0x1212: 0x4000, 0x1213: 0x4000, 0x1214: 0x4000, 0x1215: 0x4000, 0x1216: 0x4000, 0x1217: 0x4000, - 0x1218: 0x4000, 0x1219: 0x4000, 0x121a: 0x4000, 0x121b: 0x4000, 0x121c: 0x4000, 0x121d: 0x4000, - 0x121e: 0x4000, 0x121f: 0x4000, 0x1220: 0x4000, 0x1221: 0x4000, 0x1222: 0x4000, 0x1223: 0x4000, - 0x1224: 0x4000, 0x1225: 0x4000, 0x1226: 0x4000, 0x1227: 0x4000, 0x1228: 0x4000, 0x1229: 0x4000, - 0x122a: 0x4000, 0x122b: 0x4000, 0x122c: 0x4000, - // Block 0x49, offset 0x1240 - 0x1240: 0x4000, 0x1241: 0x4000, 0x1242: 0x4000, 0x1243: 0x4000, 0x1244: 0x4000, 0x1245: 0x4000, - 0x1246: 0x4000, 0x1247: 0x4000, 0x1248: 0x4000, 0x1249: 0x4000, 0x124a: 0x4000, 0x124b: 0x4000, - 0x124c: 0x4000, 0x124d: 0x4000, 0x124e: 0x4000, 0x124f: 0x4000, 0x1250: 0x4000, 0x1251: 0x4000, - 0x1252: 0x4000, 0x1253: 0x4000, 0x1254: 0x4000, 0x1255: 0x4000, 0x1256: 0x4000, 0x1257: 0x4000, - 0x1258: 0x4000, 0x1259: 0x4000, 0x125a: 0x4000, 0x125b: 0x4000, 0x125c: 0x4000, 0x125d: 0x4000, - 0x125e: 0x4000, 0x125f: 0x4000, 0x1260: 0x4000, 0x1261: 0x4000, 0x1262: 0x4000, 0x1263: 0x4000, - 0x1264: 0x4000, 0x1265: 0x4000, 0x1266: 0x4000, 0x1267: 0x4000, 0x1268: 0x4000, 0x1269: 0x4000, - 0x126a: 0x4000, 0x126b: 0x4000, 0x126c: 0x4000, 0x126d: 0x4000, 0x126e: 0x4000, 0x126f: 0x4000, - 0x1270: 0x4000, 0x1271: 0x4000, 0x1272: 0x4000, - // Block 0x4a, offset 0x1280 - 0x1280: 0x4000, 0x1281: 0x4000, 0x1282: 0x4000, 0x1283: 0x4000, 0x1284: 0x4000, 0x1285: 0x4000, - 0x1286: 0x4000, 0x1287: 0x4000, 0x1288: 0x4000, 0x1289: 0x4000, 0x128a: 0x4000, 0x128b: 0x4000, - 0x128c: 0x4000, 0x128d: 0x4000, 0x128e: 0x4000, 0x128f: 0x4000, 0x1290: 0x4000, 0x1291: 0x4000, - 0x1292: 0x4000, 0x1293: 0x4000, 0x1294: 0x4000, 0x1295: 0x4000, 0x1296: 0x4000, 0x1297: 0x4000, - 0x1298: 0x4000, 0x1299: 0x4000, 0x129a: 0x4000, 0x129b: 0x4000, 0x129c: 0x4000, 0x129d: 0x4000, - 0x129e: 0x4000, - // Block 0x4b, offset 0x12c0 - 0x12f0: 0x4000, 0x12f1: 0x4000, 0x12f2: 0x4000, 0x12f3: 0x4000, 0x12f4: 0x4000, 0x12f5: 0x4000, - 0x12f6: 0x4000, 0x12f7: 0x4000, 0x12f8: 0x4000, 0x12f9: 0x4000, 0x12fa: 0x4000, 0x12fb: 0x4000, - 0x12fc: 0x4000, 0x12fd: 0x4000, 0x12fe: 0x4000, 0x12ff: 0x4000, - // Block 0x4c, offset 0x1300 - 0x1300: 0x4000, 0x1301: 0x4000, 0x1302: 0x4000, 0x1303: 0x4000, 0x1304: 0x4000, 0x1305: 0x4000, - 0x1306: 0x4000, 0x1307: 0x4000, 0x1308: 0x4000, 0x1309: 0x4000, 0x130a: 0x4000, 0x130b: 0x4000, - 0x130c: 0x4000, 0x130d: 0x4000, 0x130e: 0x4000, 0x130f: 0x4000, 0x1310: 0x4000, 0x1311: 0x4000, - 0x1312: 0x4000, 0x1313: 0x4000, 0x1314: 0x4000, 0x1315: 0x4000, 0x1316: 0x4000, 0x1317: 0x4000, - 0x1318: 0x4000, 0x1319: 0x4000, 0x131a: 0x4000, 0x131b: 0x4000, 0x131c: 0x4000, 0x131d: 0x4000, - 0x131e: 0x4000, 0x131f: 0x4000, 0x1320: 0x4000, 0x1321: 0x4000, 0x1322: 0x4000, 0x1323: 0x4000, - 0x1324: 0x4000, 0x1325: 0x4000, 0x1326: 0x4000, 0x1327: 0x4000, 0x1328: 0x4000, 0x1329: 0x4000, - 0x132a: 0x4000, 0x132b: 0x4000, 0x132c: 0x4000, 0x132d: 0x4000, 0x132e: 0x4000, 0x132f: 0x4000, - 0x1330: 0x4000, 0x1331: 0x4000, 0x1332: 0x4000, 0x1333: 0x4000, 0x1334: 0x4000, 0x1335: 0x4000, - 0x1336: 0x4000, 0x1337: 0x4000, 0x1338: 0x4000, 0x1339: 0x4000, 0x133a: 0x4000, 0x133b: 0x4000, - // Block 0x4d, offset 0x1340 - 0x1344: 0x4000, - // Block 0x4e, offset 0x1380 - 0x138f: 0x4000, - // Block 0x4f, offset 0x13c0 - 0x13c0: 0x2000, 0x13c1: 0x2000, 0x13c2: 0x2000, 0x13c3: 0x2000, 0x13c4: 0x2000, 0x13c5: 0x2000, - 0x13c6: 0x2000, 0x13c7: 0x2000, 0x13c8: 0x2000, 0x13c9: 0x2000, 0x13ca: 0x2000, - 0x13d0: 0x2000, 0x13d1: 0x2000, - 0x13d2: 0x2000, 0x13d3: 0x2000, 0x13d4: 0x2000, 0x13d5: 0x2000, 0x13d6: 0x2000, 0x13d7: 0x2000, - 0x13d8: 0x2000, 0x13d9: 0x2000, 0x13da: 0x2000, 0x13db: 0x2000, 0x13dc: 0x2000, 0x13dd: 0x2000, - 0x13de: 0x2000, 0x13df: 0x2000, 0x13e0: 0x2000, 0x13e1: 0x2000, 0x13e2: 0x2000, 0x13e3: 0x2000, - 0x13e4: 0x2000, 0x13e5: 0x2000, 0x13e6: 0x2000, 0x13e7: 0x2000, 0x13e8: 0x2000, 0x13e9: 0x2000, - 0x13ea: 0x2000, 0x13eb: 0x2000, 0x13ec: 0x2000, 0x13ed: 0x2000, - 0x13f0: 0x2000, 0x13f1: 0x2000, 0x13f2: 0x2000, 0x13f3: 0x2000, 0x13f4: 0x2000, 0x13f5: 0x2000, - 0x13f6: 0x2000, 0x13f7: 0x2000, 0x13f8: 0x2000, 0x13f9: 0x2000, 0x13fa: 0x2000, 0x13fb: 0x2000, - 0x13fc: 0x2000, 0x13fd: 0x2000, 0x13fe: 0x2000, 0x13ff: 0x2000, - // Block 0x50, offset 0x1400 - 0x1400: 0x2000, 0x1401: 0x2000, 0x1402: 0x2000, 0x1403: 0x2000, 0x1404: 0x2000, 0x1405: 0x2000, - 0x1406: 0x2000, 0x1407: 0x2000, 0x1408: 0x2000, 0x1409: 0x2000, 0x140a: 0x2000, 0x140b: 0x2000, - 0x140c: 0x2000, 0x140d: 0x2000, 0x140e: 0x2000, 0x140f: 0x2000, 0x1410: 0x2000, 0x1411: 0x2000, - 0x1412: 0x2000, 0x1413: 0x2000, 0x1414: 0x2000, 0x1415: 0x2000, 0x1416: 0x2000, 0x1417: 0x2000, - 0x1418: 0x2000, 0x1419: 0x2000, 0x141a: 0x2000, 0x141b: 0x2000, 0x141c: 0x2000, 0x141d: 0x2000, - 0x141e: 0x2000, 0x141f: 0x2000, 0x1420: 0x2000, 0x1421: 0x2000, 0x1422: 0x2000, 0x1423: 0x2000, - 0x1424: 0x2000, 0x1425: 0x2000, 0x1426: 0x2000, 0x1427: 0x2000, 0x1428: 0x2000, 0x1429: 0x2000, - 0x1430: 0x2000, 0x1431: 0x2000, 0x1432: 0x2000, 0x1433: 0x2000, 0x1434: 0x2000, 0x1435: 0x2000, - 0x1436: 0x2000, 0x1437: 0x2000, 0x1438: 0x2000, 0x1439: 0x2000, 0x143a: 0x2000, 0x143b: 0x2000, - 0x143c: 0x2000, 0x143d: 0x2000, 0x143e: 0x2000, 0x143f: 0x2000, - // Block 0x51, offset 0x1440 - 0x1440: 0x2000, 0x1441: 0x2000, 0x1442: 0x2000, 0x1443: 0x2000, 0x1444: 0x2000, 0x1445: 0x2000, - 0x1446: 0x2000, 0x1447: 0x2000, 0x1448: 0x2000, 0x1449: 0x2000, 0x144a: 0x2000, 0x144b: 0x2000, - 0x144c: 0x2000, 0x144d: 0x2000, 0x144e: 0x4000, 0x144f: 0x2000, 0x1450: 0x2000, 0x1451: 0x4000, - 0x1452: 0x4000, 0x1453: 0x4000, 0x1454: 0x4000, 0x1455: 0x4000, 0x1456: 0x4000, 0x1457: 0x4000, - 0x1458: 0x4000, 0x1459: 0x4000, 0x145a: 0x4000, 0x145b: 0x2000, 0x145c: 0x2000, 0x145d: 0x2000, - 0x145e: 0x2000, 0x145f: 0x2000, 0x1460: 0x2000, 0x1461: 0x2000, 0x1462: 0x2000, 0x1463: 0x2000, - 0x1464: 0x2000, 0x1465: 0x2000, 0x1466: 0x2000, 0x1467: 0x2000, 0x1468: 0x2000, 0x1469: 0x2000, - 0x146a: 0x2000, 0x146b: 0x2000, 0x146c: 0x2000, - // Block 0x52, offset 0x1480 - 0x1480: 0x4000, 0x1481: 0x4000, 0x1482: 0x4000, - 0x1490: 0x4000, 0x1491: 0x4000, - 0x1492: 0x4000, 0x1493: 0x4000, 0x1494: 0x4000, 0x1495: 0x4000, 0x1496: 0x4000, 0x1497: 0x4000, - 0x1498: 0x4000, 0x1499: 0x4000, 0x149a: 0x4000, 0x149b: 0x4000, 0x149c: 0x4000, 0x149d: 0x4000, - 0x149e: 0x4000, 0x149f: 0x4000, 0x14a0: 0x4000, 0x14a1: 0x4000, 0x14a2: 0x4000, 0x14a3: 0x4000, - 0x14a4: 0x4000, 0x14a5: 0x4000, 0x14a6: 0x4000, 0x14a7: 0x4000, 0x14a8: 0x4000, 0x14a9: 0x4000, - 0x14aa: 0x4000, 0x14ab: 0x4000, 0x14ac: 0x4000, 0x14ad: 0x4000, 0x14ae: 0x4000, 0x14af: 0x4000, - 0x14b0: 0x4000, 0x14b1: 0x4000, 0x14b2: 0x4000, 0x14b3: 0x4000, 0x14b4: 0x4000, 0x14b5: 0x4000, - 0x14b6: 0x4000, 0x14b7: 0x4000, 0x14b8: 0x4000, 0x14b9: 0x4000, 0x14ba: 0x4000, 0x14bb: 0x4000, - // Block 0x53, offset 0x14c0 - 0x14c0: 0x4000, 0x14c1: 0x4000, 0x14c2: 0x4000, 0x14c3: 0x4000, 0x14c4: 0x4000, 0x14c5: 0x4000, - 0x14c6: 0x4000, 0x14c7: 0x4000, 0x14c8: 0x4000, - 0x14d0: 0x4000, 0x14d1: 0x4000, - 0x14e0: 0x4000, 0x14e1: 0x4000, 0x14e2: 0x4000, 0x14e3: 0x4000, - 0x14e4: 0x4000, 0x14e5: 0x4000, - // Block 0x54, offset 0x1500 - 0x1500: 0x4000, 0x1501: 0x4000, 0x1502: 0x4000, 0x1503: 0x4000, 0x1504: 0x4000, 0x1505: 0x4000, - 0x1506: 0x4000, 0x1507: 0x4000, 0x1508: 0x4000, 0x1509: 0x4000, 0x150a: 0x4000, 0x150b: 0x4000, - 0x150c: 0x4000, 0x150d: 0x4000, 0x150e: 0x4000, 0x150f: 0x4000, 0x1510: 0x4000, 0x1511: 0x4000, - 0x1512: 0x4000, 0x1513: 0x4000, 0x1514: 0x4000, 0x1515: 0x4000, 0x1516: 0x4000, 0x1517: 0x4000, - 0x1518: 0x4000, 0x1519: 0x4000, 0x151a: 0x4000, 0x151b: 0x4000, 0x151c: 0x4000, 0x151d: 0x4000, - 0x151e: 0x4000, 0x151f: 0x4000, 0x1520: 0x4000, - 0x152d: 0x4000, 0x152e: 0x4000, 0x152f: 0x4000, - 0x1530: 0x4000, 0x1531: 0x4000, 0x1532: 0x4000, 0x1533: 0x4000, 0x1534: 0x4000, 0x1535: 0x4000, - 0x1537: 0x4000, 0x1538: 0x4000, 0x1539: 0x4000, 0x153a: 0x4000, 0x153b: 0x4000, - 0x153c: 0x4000, 0x153d: 0x4000, 0x153e: 0x4000, 0x153f: 0x4000, - // Block 0x55, offset 0x1540 - 0x1540: 0x4000, 0x1541: 0x4000, 0x1542: 0x4000, 0x1543: 0x4000, 0x1544: 0x4000, 0x1545: 0x4000, - 0x1546: 0x4000, 0x1547: 0x4000, 0x1548: 0x4000, 0x1549: 0x4000, 0x154a: 0x4000, 0x154b: 0x4000, - 0x154c: 0x4000, 0x154d: 0x4000, 0x154e: 0x4000, 0x154f: 0x4000, 0x1550: 0x4000, 0x1551: 0x4000, - 0x1552: 0x4000, 0x1553: 0x4000, 0x1554: 0x4000, 0x1555: 0x4000, 0x1556: 0x4000, 0x1557: 0x4000, - 0x1558: 0x4000, 0x1559: 0x4000, 0x155a: 0x4000, 0x155b: 0x4000, 0x155c: 0x4000, 0x155d: 0x4000, - 0x155e: 0x4000, 0x155f: 0x4000, 0x1560: 0x4000, 0x1561: 0x4000, 0x1562: 0x4000, 0x1563: 0x4000, - 0x1564: 0x4000, 0x1565: 0x4000, 0x1566: 0x4000, 0x1567: 0x4000, 0x1568: 0x4000, 0x1569: 0x4000, - 0x156a: 0x4000, 0x156b: 0x4000, 0x156c: 0x4000, 0x156d: 0x4000, 0x156e: 0x4000, 0x156f: 0x4000, - 0x1570: 0x4000, 0x1571: 0x4000, 0x1572: 0x4000, 0x1573: 0x4000, 0x1574: 0x4000, 0x1575: 0x4000, - 0x1576: 0x4000, 0x1577: 0x4000, 0x1578: 0x4000, 0x1579: 0x4000, 0x157a: 0x4000, 0x157b: 0x4000, - 0x157c: 0x4000, 0x157e: 0x4000, 0x157f: 0x4000, - // Block 0x56, offset 0x1580 - 0x1580: 0x4000, 0x1581: 0x4000, 0x1582: 0x4000, 0x1583: 0x4000, 0x1584: 0x4000, 0x1585: 0x4000, - 0x1586: 0x4000, 0x1587: 0x4000, 0x1588: 0x4000, 0x1589: 0x4000, 0x158a: 0x4000, 0x158b: 0x4000, - 0x158c: 0x4000, 0x158d: 0x4000, 0x158e: 0x4000, 0x158f: 0x4000, 0x1590: 0x4000, 0x1591: 0x4000, - 0x1592: 0x4000, 0x1593: 0x4000, - 0x15a0: 0x4000, 0x15a1: 0x4000, 0x15a2: 0x4000, 0x15a3: 0x4000, - 0x15a4: 0x4000, 0x15a5: 0x4000, 0x15a6: 0x4000, 0x15a7: 0x4000, 0x15a8: 0x4000, 0x15a9: 0x4000, - 0x15aa: 0x4000, 0x15ab: 0x4000, 0x15ac: 0x4000, 0x15ad: 0x4000, 0x15ae: 0x4000, 0x15af: 0x4000, - 0x15b0: 0x4000, 0x15b1: 0x4000, 0x15b2: 0x4000, 0x15b3: 0x4000, 0x15b4: 0x4000, 0x15b5: 0x4000, - 0x15b6: 0x4000, 0x15b7: 0x4000, 0x15b8: 0x4000, 0x15b9: 0x4000, 0x15ba: 0x4000, 0x15bb: 0x4000, - 0x15bc: 0x4000, 0x15bd: 0x4000, 0x15be: 0x4000, 0x15bf: 0x4000, - // Block 0x57, offset 0x15c0 - 0x15c0: 0x4000, 0x15c1: 0x4000, 0x15c2: 0x4000, 0x15c3: 0x4000, 0x15c4: 0x4000, 0x15c5: 0x4000, - 0x15c6: 0x4000, 0x15c7: 0x4000, 0x15c8: 0x4000, 0x15c9: 0x4000, 0x15ca: 0x4000, - 0x15cf: 0x4000, 0x15d0: 0x4000, 0x15d1: 0x4000, - 0x15d2: 0x4000, 0x15d3: 0x4000, - 0x15e0: 0x4000, 0x15e1: 0x4000, 0x15e2: 0x4000, 0x15e3: 0x4000, - 0x15e4: 0x4000, 0x15e5: 0x4000, 0x15e6: 0x4000, 0x15e7: 0x4000, 0x15e8: 0x4000, 0x15e9: 0x4000, - 0x15ea: 0x4000, 0x15eb: 0x4000, 0x15ec: 0x4000, 0x15ed: 0x4000, 0x15ee: 0x4000, 0x15ef: 0x4000, - 0x15f0: 0x4000, 0x15f4: 0x4000, - 0x15f8: 0x4000, 0x15f9: 0x4000, 0x15fa: 0x4000, 0x15fb: 0x4000, - 0x15fc: 0x4000, 0x15fd: 0x4000, 0x15fe: 0x4000, 0x15ff: 0x4000, - // Block 0x58, offset 0x1600 - 0x1600: 0x4000, 0x1602: 0x4000, 0x1603: 0x4000, 0x1604: 0x4000, 0x1605: 0x4000, - 0x1606: 0x4000, 0x1607: 0x4000, 0x1608: 0x4000, 0x1609: 0x4000, 0x160a: 0x4000, 0x160b: 0x4000, - 0x160c: 0x4000, 0x160d: 0x4000, 0x160e: 0x4000, 0x160f: 0x4000, 0x1610: 0x4000, 0x1611: 0x4000, - 0x1612: 0x4000, 0x1613: 0x4000, 0x1614: 0x4000, 0x1615: 0x4000, 0x1616: 0x4000, 0x1617: 0x4000, - 0x1618: 0x4000, 0x1619: 0x4000, 0x161a: 0x4000, 0x161b: 0x4000, 0x161c: 0x4000, 0x161d: 0x4000, - 0x161e: 0x4000, 0x161f: 0x4000, 0x1620: 0x4000, 0x1621: 0x4000, 0x1622: 0x4000, 0x1623: 0x4000, - 0x1624: 0x4000, 0x1625: 0x4000, 0x1626: 0x4000, 0x1627: 0x4000, 0x1628: 0x4000, 0x1629: 0x4000, - 0x162a: 0x4000, 0x162b: 0x4000, 0x162c: 0x4000, 0x162d: 0x4000, 0x162e: 0x4000, 0x162f: 0x4000, - 0x1630: 0x4000, 0x1631: 0x4000, 0x1632: 0x4000, 0x1633: 0x4000, 0x1634: 0x4000, 0x1635: 0x4000, - 0x1636: 0x4000, 0x1637: 0x4000, 0x1638: 0x4000, 0x1639: 0x4000, 0x163a: 0x4000, 0x163b: 0x4000, - 0x163c: 0x4000, 0x163d: 0x4000, 0x163e: 0x4000, 0x163f: 0x4000, - // Block 0x59, offset 0x1640 - 0x1640: 0x4000, 0x1641: 0x4000, 0x1642: 0x4000, 0x1643: 0x4000, 0x1644: 0x4000, 0x1645: 0x4000, - 0x1646: 0x4000, 0x1647: 0x4000, 0x1648: 0x4000, 0x1649: 0x4000, 0x164a: 0x4000, 0x164b: 0x4000, - 0x164c: 0x4000, 0x164d: 0x4000, 0x164e: 0x4000, 0x164f: 0x4000, 0x1650: 0x4000, 0x1651: 0x4000, - 0x1652: 0x4000, 0x1653: 0x4000, 0x1654: 0x4000, 0x1655: 0x4000, 0x1656: 0x4000, 0x1657: 0x4000, - 0x1658: 0x4000, 0x1659: 0x4000, 0x165a: 0x4000, 0x165b: 0x4000, 0x165c: 0x4000, 0x165d: 0x4000, - 0x165e: 0x4000, 0x165f: 0x4000, 0x1660: 0x4000, 0x1661: 0x4000, 0x1662: 0x4000, 0x1663: 0x4000, - 0x1664: 0x4000, 0x1665: 0x4000, 0x1666: 0x4000, 0x1667: 0x4000, 0x1668: 0x4000, 0x1669: 0x4000, - 0x166a: 0x4000, 0x166b: 0x4000, 0x166c: 0x4000, 0x166d: 0x4000, 0x166e: 0x4000, 0x166f: 0x4000, - 0x1670: 0x4000, 0x1671: 0x4000, 0x1672: 0x4000, 0x1673: 0x4000, 0x1674: 0x4000, 0x1675: 0x4000, - 0x1676: 0x4000, 0x1677: 0x4000, 0x1678: 0x4000, 0x1679: 0x4000, 0x167a: 0x4000, 0x167b: 0x4000, - 0x167c: 0x4000, 0x167f: 0x4000, - // Block 0x5a, offset 0x1680 - 0x1680: 0x4000, 0x1681: 0x4000, 0x1682: 0x4000, 0x1683: 0x4000, 0x1684: 0x4000, 0x1685: 0x4000, - 0x1686: 0x4000, 0x1687: 0x4000, 0x1688: 0x4000, 0x1689: 0x4000, 0x168a: 0x4000, 0x168b: 0x4000, - 0x168c: 0x4000, 0x168d: 0x4000, 0x168e: 0x4000, 0x168f: 0x4000, 0x1690: 0x4000, 0x1691: 0x4000, - 0x1692: 0x4000, 0x1693: 0x4000, 0x1694: 0x4000, 0x1695: 0x4000, 0x1696: 0x4000, 0x1697: 0x4000, - 0x1698: 0x4000, 0x1699: 0x4000, 0x169a: 0x4000, 0x169b: 0x4000, 0x169c: 0x4000, 0x169d: 0x4000, - 0x169e: 0x4000, 0x169f: 0x4000, 0x16a0: 0x4000, 0x16a1: 0x4000, 0x16a2: 0x4000, 0x16a3: 0x4000, - 0x16a4: 0x4000, 0x16a5: 0x4000, 0x16a6: 0x4000, 0x16a7: 0x4000, 0x16a8: 0x4000, 0x16a9: 0x4000, - 0x16aa: 0x4000, 0x16ab: 0x4000, 0x16ac: 0x4000, 0x16ad: 0x4000, 0x16ae: 0x4000, 0x16af: 0x4000, - 0x16b0: 0x4000, 0x16b1: 0x4000, 0x16b2: 0x4000, 0x16b3: 0x4000, 0x16b4: 0x4000, 0x16b5: 0x4000, - 0x16b6: 0x4000, 0x16b7: 0x4000, 0x16b8: 0x4000, 0x16b9: 0x4000, 0x16ba: 0x4000, 0x16bb: 0x4000, - 0x16bc: 0x4000, 0x16bd: 0x4000, - // Block 0x5b, offset 0x16c0 - 0x16cb: 0x4000, - 0x16cc: 0x4000, 0x16cd: 0x4000, 0x16ce: 0x4000, 0x16d0: 0x4000, 0x16d1: 0x4000, - 0x16d2: 0x4000, 0x16d3: 0x4000, 0x16d4: 0x4000, 0x16d5: 0x4000, 0x16d6: 0x4000, 0x16d7: 0x4000, - 0x16d8: 0x4000, 0x16d9: 0x4000, 0x16da: 0x4000, 0x16db: 0x4000, 0x16dc: 0x4000, 0x16dd: 0x4000, - 0x16de: 0x4000, 0x16df: 0x4000, 0x16e0: 0x4000, 0x16e1: 0x4000, 0x16e2: 0x4000, 0x16e3: 0x4000, - 0x16e4: 0x4000, 0x16e5: 0x4000, 0x16e6: 0x4000, 0x16e7: 0x4000, - 0x16fa: 0x4000, - // Block 0x5c, offset 0x1700 - 0x1715: 0x4000, 0x1716: 0x4000, - 0x1724: 0x4000, - // Block 0x5d, offset 0x1740 - 0x177b: 0x4000, - 0x177c: 0x4000, 0x177d: 0x4000, 0x177e: 0x4000, 0x177f: 0x4000, - // Block 0x5e, offset 0x1780 - 0x1780: 0x4000, 0x1781: 0x4000, 0x1782: 0x4000, 0x1783: 0x4000, 0x1784: 0x4000, 0x1785: 0x4000, - 0x1786: 0x4000, 0x1787: 0x4000, 0x1788: 0x4000, 0x1789: 0x4000, 0x178a: 0x4000, 0x178b: 0x4000, - 0x178c: 0x4000, 0x178d: 0x4000, 0x178e: 0x4000, 0x178f: 0x4000, - // Block 0x5f, offset 0x17c0 - 0x17c0: 0x4000, 0x17c1: 0x4000, 0x17c2: 0x4000, 0x17c3: 0x4000, 0x17c4: 0x4000, 0x17c5: 0x4000, - 0x17cc: 0x4000, 0x17d0: 0x4000, 0x17d1: 0x4000, - 0x17d2: 0x4000, - 0x17eb: 0x4000, 0x17ec: 0x4000, - 0x17f4: 0x4000, 0x17f5: 0x4000, - 0x17f6: 0x4000, 0x17f7: 0x4000, 0x17f8: 0x4000, - // Block 0x60, offset 0x1800 - 0x1810: 0x4000, 0x1811: 0x4000, - 0x1812: 0x4000, 0x1813: 0x4000, 0x1814: 0x4000, 0x1815: 0x4000, 0x1816: 0x4000, 0x1817: 0x4000, - 0x1818: 0x4000, 0x1819: 0x4000, 0x181a: 0x4000, 0x181b: 0x4000, 0x181c: 0x4000, 0x181d: 0x4000, - 0x181e: 0x4000, 0x181f: 0x4000, 0x1820: 0x4000, 0x1821: 0x4000, 0x1822: 0x4000, 0x1823: 0x4000, - 0x1824: 0x4000, 0x1825: 0x4000, 0x1826: 0x4000, 0x1827: 0x4000, 0x1828: 0x4000, 0x1829: 0x4000, - 0x182a: 0x4000, 0x182b: 0x4000, 0x182c: 0x4000, 0x182d: 0x4000, 0x182e: 0x4000, 0x182f: 0x4000, - 0x1830: 0x4000, 0x1831: 0x4000, 0x1832: 0x4000, 0x1833: 0x4000, 0x1834: 0x4000, 0x1835: 0x4000, - 0x1836: 0x4000, 0x1837: 0x4000, 0x1838: 0x4000, 0x1839: 0x4000, 0x183a: 0x4000, 0x183b: 0x4000, - 0x183c: 0x4000, 0x183d: 0x4000, 0x183e: 0x4000, - // Block 0x61, offset 0x1840 - 0x1840: 0x4000, 0x1841: 0x4000, 0x1842: 0x4000, 0x1843: 0x4000, 0x1844: 0x4000, 0x1845: 0x4000, - 0x1846: 0x4000, 0x1847: 0x4000, 0x1848: 0x4000, 0x1849: 0x4000, 0x184a: 0x4000, 0x184b: 0x4000, - 0x184c: 0x4000, 0x1850: 0x4000, 0x1851: 0x4000, - 0x1852: 0x4000, 0x1853: 0x4000, 0x1854: 0x4000, 0x1855: 0x4000, 0x1856: 0x4000, 0x1857: 0x4000, - 0x1858: 0x4000, 0x1859: 0x4000, 0x185a: 0x4000, 0x185b: 0x4000, 0x185c: 0x4000, 0x185d: 0x4000, - 0x185e: 0x4000, 0x185f: 0x4000, 0x1860: 0x4000, 0x1861: 0x4000, 0x1862: 0x4000, 0x1863: 0x4000, - 0x1864: 0x4000, 0x1865: 0x4000, 0x1866: 0x4000, 0x1867: 0x4000, 0x1868: 0x4000, 0x1869: 0x4000, - 0x186a: 0x4000, 0x186b: 0x4000, - // Block 0x62, offset 0x1880 - 0x1880: 0x4000, 0x1881: 0x4000, 0x1882: 0x4000, 0x1883: 0x4000, 0x1884: 0x4000, 0x1885: 0x4000, - 0x1886: 0x4000, 0x1887: 0x4000, 0x1888: 0x4000, 0x1889: 0x4000, 0x188a: 0x4000, 0x188b: 0x4000, - 0x188c: 0x4000, 0x188d: 0x4000, 0x188e: 0x4000, 0x188f: 0x4000, 0x1890: 0x4000, 0x1891: 0x4000, - 0x1892: 0x4000, 0x1893: 0x4000, 0x1894: 0x4000, 0x1895: 0x4000, 0x1896: 0x4000, 0x1897: 0x4000, - // Block 0x63, offset 0x18c0 - 0x18c0: 0x4000, - 0x18d0: 0x4000, 0x18d1: 0x4000, - 0x18d2: 0x4000, 0x18d3: 0x4000, 0x18d4: 0x4000, 0x18d5: 0x4000, 0x18d6: 0x4000, 0x18d7: 0x4000, - 0x18d8: 0x4000, 0x18d9: 0x4000, 0x18da: 0x4000, 0x18db: 0x4000, 0x18dc: 0x4000, 0x18dd: 0x4000, - 0x18de: 0x4000, 0x18df: 0x4000, 0x18e0: 0x4000, 0x18e1: 0x4000, 0x18e2: 0x4000, 0x18e3: 0x4000, - 0x18e4: 0x4000, 0x18e5: 0x4000, 0x18e6: 0x4000, - // Block 0x64, offset 0x1900 - 0x1900: 0x2000, 0x1901: 0x2000, 0x1902: 0x2000, 0x1903: 0x2000, 0x1904: 0x2000, 0x1905: 0x2000, - 0x1906: 0x2000, 0x1907: 0x2000, 0x1908: 0x2000, 0x1909: 0x2000, 0x190a: 0x2000, 0x190b: 0x2000, - 0x190c: 0x2000, 0x190d: 0x2000, 0x190e: 0x2000, 0x190f: 0x2000, 0x1910: 0x2000, 0x1911: 0x2000, - 0x1912: 0x2000, 0x1913: 0x2000, 0x1914: 0x2000, 0x1915: 0x2000, 0x1916: 0x2000, 0x1917: 0x2000, - 0x1918: 0x2000, 0x1919: 0x2000, 0x191a: 0x2000, 0x191b: 0x2000, 0x191c: 0x2000, 0x191d: 0x2000, - 0x191e: 0x2000, 0x191f: 0x2000, 0x1920: 0x2000, 0x1921: 0x2000, 0x1922: 0x2000, 0x1923: 0x2000, - 0x1924: 0x2000, 0x1925: 0x2000, 0x1926: 0x2000, 0x1927: 0x2000, 0x1928: 0x2000, 0x1929: 0x2000, - 0x192a: 0x2000, 0x192b: 0x2000, 0x192c: 0x2000, 0x192d: 0x2000, 0x192e: 0x2000, 0x192f: 0x2000, - 0x1930: 0x2000, 0x1931: 0x2000, 0x1932: 0x2000, 0x1933: 0x2000, 0x1934: 0x2000, 0x1935: 0x2000, - 0x1936: 0x2000, 0x1937: 0x2000, 0x1938: 0x2000, 0x1939: 0x2000, 0x193a: 0x2000, 0x193b: 0x2000, - 0x193c: 0x2000, 0x193d: 0x2000, -} - -// widthIndex: 22 blocks, 1408 entries, 1408 bytes -// Block 0 is the zero block. -var widthIndex = [1408]uint8{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x02, 0xc4: 0x03, 0xc5: 0x04, 0xc7: 0x05, - 0xc9: 0x06, 0xcb: 0x07, 0xcc: 0x08, 0xcd: 0x09, 0xce: 0x0a, 0xcf: 0x0b, - 0xd0: 0x0c, 0xd1: 0x0d, - 0xe1: 0x02, 0xe2: 0x03, 0xe3: 0x04, 0xe4: 0x05, 0xe5: 0x06, 0xe6: 0x06, 0xe7: 0x06, - 0xe8: 0x06, 0xe9: 0x06, 0xea: 0x07, 0xeb: 0x06, 0xec: 0x06, 0xed: 0x08, 0xee: 0x09, 0xef: 0x0a, - 0xf0: 0x0f, 0xf3: 0x12, 0xf4: 0x13, - // Block 0x4, offset 0x100 - 0x104: 0x0e, 0x105: 0x0f, - // Block 0x5, offset 0x140 - 0x140: 0x10, 0x141: 0x11, 0x142: 0x12, 0x144: 0x13, 0x145: 0x14, 0x146: 0x15, 0x147: 0x16, - 0x148: 0x17, 0x149: 0x18, 0x14a: 0x19, 0x14c: 0x1a, 0x14f: 0x1b, - 0x151: 0x1c, 0x152: 0x08, 0x153: 0x1d, 0x154: 0x1e, 0x155: 0x1f, 0x156: 0x20, 0x157: 0x21, - 0x158: 0x22, 0x159: 0x23, 0x15a: 0x24, 0x15b: 0x25, 0x15c: 0x26, 0x15d: 0x27, 0x15e: 0x28, 0x15f: 0x29, - 0x166: 0x2a, - 0x16c: 0x2b, 0x16d: 0x2c, - 0x17a: 0x2d, 0x17b: 0x2e, 0x17c: 0x0e, 0x17d: 0x0e, 0x17e: 0x0e, 0x17f: 0x2f, - // Block 0x6, offset 0x180 - 0x180: 0x30, 0x181: 0x31, 0x182: 0x32, 0x183: 0x33, 0x184: 0x34, 0x185: 0x35, 0x186: 0x36, 0x187: 0x37, - 0x188: 0x38, 0x189: 0x39, 0x18a: 0x0e, 0x18b: 0x3a, 0x18c: 0x0e, 0x18d: 0x0e, 0x18e: 0x0e, 0x18f: 0x0e, - 0x190: 0x0e, 0x191: 0x0e, 0x192: 0x0e, 0x193: 0x0e, 0x194: 0x0e, 0x195: 0x0e, 0x196: 0x0e, 0x197: 0x0e, - 0x198: 0x0e, 0x199: 0x0e, 0x19a: 0x0e, 0x19b: 0x0e, 0x19c: 0x0e, 0x19d: 0x0e, 0x19e: 0x0e, 0x19f: 0x0e, - 0x1a0: 0x0e, 0x1a1: 0x0e, 0x1a2: 0x0e, 0x1a3: 0x0e, 0x1a4: 0x0e, 0x1a5: 0x0e, 0x1a6: 0x0e, 0x1a7: 0x0e, - 0x1a8: 0x0e, 0x1a9: 0x0e, 0x1aa: 0x0e, 0x1ab: 0x0e, 0x1ac: 0x0e, 0x1ad: 0x0e, 0x1ae: 0x0e, 0x1af: 0x0e, - 0x1b0: 0x0e, 0x1b1: 0x0e, 0x1b2: 0x0e, 0x1b3: 0x0e, 0x1b4: 0x0e, 0x1b5: 0x0e, 0x1b6: 0x0e, 0x1b7: 0x0e, - 0x1b8: 0x0e, 0x1b9: 0x0e, 0x1ba: 0x0e, 0x1bb: 0x0e, 0x1bc: 0x0e, 0x1bd: 0x0e, 0x1be: 0x0e, 0x1bf: 0x0e, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x0e, 0x1c1: 0x0e, 0x1c2: 0x0e, 0x1c3: 0x0e, 0x1c4: 0x0e, 0x1c5: 0x0e, 0x1c6: 0x0e, 0x1c7: 0x0e, - 0x1c8: 0x0e, 0x1c9: 0x0e, 0x1ca: 0x0e, 0x1cb: 0x0e, 0x1cc: 0x0e, 0x1cd: 0x0e, 0x1ce: 0x0e, 0x1cf: 0x0e, - 0x1d0: 0x0e, 0x1d1: 0x0e, 0x1d2: 0x0e, 0x1d3: 0x0e, 0x1d4: 0x0e, 0x1d5: 0x0e, 0x1d6: 0x0e, 0x1d7: 0x0e, - 0x1d8: 0x0e, 0x1d9: 0x0e, 0x1da: 0x0e, 0x1db: 0x0e, 0x1dc: 0x0e, 0x1dd: 0x0e, 0x1de: 0x0e, 0x1df: 0x0e, - 0x1e0: 0x0e, 0x1e1: 0x0e, 0x1e2: 0x0e, 0x1e3: 0x0e, 0x1e4: 0x0e, 0x1e5: 0x0e, 0x1e6: 0x0e, 0x1e7: 0x0e, - 0x1e8: 0x0e, 0x1e9: 0x0e, 0x1ea: 0x0e, 0x1eb: 0x0e, 0x1ec: 0x0e, 0x1ed: 0x0e, 0x1ee: 0x0e, 0x1ef: 0x0e, - 0x1f0: 0x0e, 0x1f1: 0x0e, 0x1f2: 0x0e, 0x1f3: 0x0e, 0x1f4: 0x0e, 0x1f5: 0x0e, 0x1f6: 0x0e, - 0x1f8: 0x0e, 0x1f9: 0x0e, 0x1fa: 0x0e, 0x1fb: 0x0e, 0x1fc: 0x0e, 0x1fd: 0x0e, 0x1fe: 0x0e, 0x1ff: 0x0e, - // Block 0x8, offset 0x200 - 0x200: 0x0e, 0x201: 0x0e, 0x202: 0x0e, 0x203: 0x0e, 0x204: 0x0e, 0x205: 0x0e, 0x206: 0x0e, 0x207: 0x0e, - 0x208: 0x0e, 0x209: 0x0e, 0x20a: 0x0e, 0x20b: 0x0e, 0x20c: 0x0e, 0x20d: 0x0e, 0x20e: 0x0e, 0x20f: 0x0e, - 0x210: 0x0e, 0x211: 0x0e, 0x212: 0x0e, 0x213: 0x0e, 0x214: 0x0e, 0x215: 0x0e, 0x216: 0x0e, 0x217: 0x0e, - 0x218: 0x0e, 0x219: 0x0e, 0x21a: 0x0e, 0x21b: 0x0e, 0x21c: 0x0e, 0x21d: 0x0e, 0x21e: 0x0e, 0x21f: 0x0e, - 0x220: 0x0e, 0x221: 0x0e, 0x222: 0x0e, 0x223: 0x0e, 0x224: 0x0e, 0x225: 0x0e, 0x226: 0x0e, 0x227: 0x0e, - 0x228: 0x0e, 0x229: 0x0e, 0x22a: 0x0e, 0x22b: 0x0e, 0x22c: 0x0e, 0x22d: 0x0e, 0x22e: 0x0e, 0x22f: 0x0e, - 0x230: 0x0e, 0x231: 0x0e, 0x232: 0x0e, 0x233: 0x0e, 0x234: 0x0e, 0x235: 0x0e, 0x236: 0x0e, 0x237: 0x0e, - 0x238: 0x0e, 0x239: 0x0e, 0x23a: 0x0e, 0x23b: 0x0e, 0x23c: 0x0e, 0x23d: 0x0e, 0x23e: 0x0e, 0x23f: 0x0e, - // Block 0x9, offset 0x240 - 0x240: 0x0e, 0x241: 0x0e, 0x242: 0x0e, 0x243: 0x0e, 0x244: 0x0e, 0x245: 0x0e, 0x246: 0x0e, 0x247: 0x0e, - 0x248: 0x0e, 0x249: 0x0e, 0x24a: 0x0e, 0x24b: 0x0e, 0x24c: 0x0e, 0x24d: 0x0e, 0x24e: 0x0e, 0x24f: 0x0e, - 0x250: 0x0e, 0x251: 0x0e, 0x252: 0x3b, 0x253: 0x3c, - 0x265: 0x3d, - 0x270: 0x0e, 0x271: 0x0e, 0x272: 0x0e, 0x273: 0x0e, 0x274: 0x0e, 0x275: 0x0e, 0x276: 0x0e, 0x277: 0x0e, - 0x278: 0x0e, 0x279: 0x0e, 0x27a: 0x0e, 0x27b: 0x0e, 0x27c: 0x0e, 0x27d: 0x0e, 0x27e: 0x0e, 0x27f: 0x0e, - // Block 0xa, offset 0x280 - 0x280: 0x0e, 0x281: 0x0e, 0x282: 0x0e, 0x283: 0x0e, 0x284: 0x0e, 0x285: 0x0e, 0x286: 0x0e, 0x287: 0x0e, - 0x288: 0x0e, 0x289: 0x0e, 0x28a: 0x0e, 0x28b: 0x0e, 0x28c: 0x0e, 0x28d: 0x0e, 0x28e: 0x0e, 0x28f: 0x0e, - 0x290: 0x0e, 0x291: 0x0e, 0x292: 0x0e, 0x293: 0x0e, 0x294: 0x0e, 0x295: 0x0e, 0x296: 0x0e, 0x297: 0x0e, - 0x298: 0x0e, 0x299: 0x0e, 0x29a: 0x0e, 0x29b: 0x0e, 0x29c: 0x0e, 0x29d: 0x0e, 0x29e: 0x3e, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x08, 0x2c1: 0x08, 0x2c2: 0x08, 0x2c3: 0x08, 0x2c4: 0x08, 0x2c5: 0x08, 0x2c6: 0x08, 0x2c7: 0x08, - 0x2c8: 0x08, 0x2c9: 0x08, 0x2ca: 0x08, 0x2cb: 0x08, 0x2cc: 0x08, 0x2cd: 0x08, 0x2ce: 0x08, 0x2cf: 0x08, - 0x2d0: 0x08, 0x2d1: 0x08, 0x2d2: 0x08, 0x2d3: 0x08, 0x2d4: 0x08, 0x2d5: 0x08, 0x2d6: 0x08, 0x2d7: 0x08, - 0x2d8: 0x08, 0x2d9: 0x08, 0x2da: 0x08, 0x2db: 0x08, 0x2dc: 0x08, 0x2dd: 0x08, 0x2de: 0x08, 0x2df: 0x08, - 0x2e0: 0x08, 0x2e1: 0x08, 0x2e2: 0x08, 0x2e3: 0x08, 0x2e4: 0x08, 0x2e5: 0x08, 0x2e6: 0x08, 0x2e7: 0x08, - 0x2e8: 0x08, 0x2e9: 0x08, 0x2ea: 0x08, 0x2eb: 0x08, 0x2ec: 0x08, 0x2ed: 0x08, 0x2ee: 0x08, 0x2ef: 0x08, - 0x2f0: 0x08, 0x2f1: 0x08, 0x2f2: 0x08, 0x2f3: 0x08, 0x2f4: 0x08, 0x2f5: 0x08, 0x2f6: 0x08, 0x2f7: 0x08, - 0x2f8: 0x08, 0x2f9: 0x08, 0x2fa: 0x08, 0x2fb: 0x08, 0x2fc: 0x08, 0x2fd: 0x08, 0x2fe: 0x08, 0x2ff: 0x08, - // Block 0xc, offset 0x300 - 0x300: 0x08, 0x301: 0x08, 0x302: 0x08, 0x303: 0x08, 0x304: 0x08, 0x305: 0x08, 0x306: 0x08, 0x307: 0x08, - 0x308: 0x08, 0x309: 0x08, 0x30a: 0x08, 0x30b: 0x08, 0x30c: 0x08, 0x30d: 0x08, 0x30e: 0x08, 0x30f: 0x08, - 0x310: 0x08, 0x311: 0x08, 0x312: 0x08, 0x313: 0x08, 0x314: 0x08, 0x315: 0x08, 0x316: 0x08, 0x317: 0x08, - 0x318: 0x08, 0x319: 0x08, 0x31a: 0x08, 0x31b: 0x08, 0x31c: 0x08, 0x31d: 0x08, 0x31e: 0x08, 0x31f: 0x08, - 0x320: 0x08, 0x321: 0x08, 0x322: 0x08, 0x323: 0x08, 0x324: 0x0e, 0x325: 0x0e, 0x326: 0x0e, 0x327: 0x0e, - 0x328: 0x0e, 0x329: 0x0e, 0x32a: 0x0e, 0x32b: 0x0e, - 0x338: 0x3f, 0x339: 0x40, 0x33c: 0x41, 0x33d: 0x42, 0x33e: 0x43, 0x33f: 0x44, - // Block 0xd, offset 0x340 - 0x37f: 0x45, - // Block 0xe, offset 0x380 - 0x380: 0x0e, 0x381: 0x0e, 0x382: 0x0e, 0x383: 0x0e, 0x384: 0x0e, 0x385: 0x0e, 0x386: 0x0e, 0x387: 0x0e, - 0x388: 0x0e, 0x389: 0x0e, 0x38a: 0x0e, 0x38b: 0x0e, 0x38c: 0x0e, 0x38d: 0x0e, 0x38e: 0x0e, 0x38f: 0x0e, - 0x390: 0x0e, 0x391: 0x0e, 0x392: 0x0e, 0x393: 0x0e, 0x394: 0x0e, 0x395: 0x0e, 0x396: 0x0e, 0x397: 0x0e, - 0x398: 0x0e, 0x399: 0x0e, 0x39a: 0x0e, 0x39b: 0x0e, 0x39c: 0x0e, 0x39d: 0x0e, 0x39e: 0x0e, 0x39f: 0x46, - 0x3a0: 0x0e, 0x3a1: 0x0e, 0x3a2: 0x0e, 0x3a3: 0x0e, 0x3a4: 0x0e, 0x3a5: 0x0e, 0x3a6: 0x0e, 0x3a7: 0x0e, - 0x3a8: 0x0e, 0x3a9: 0x0e, 0x3aa: 0x0e, 0x3ab: 0x47, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x0e, 0x3c1: 0x0e, 0x3c2: 0x0e, 0x3c3: 0x0e, 0x3c4: 0x48, 0x3c5: 0x49, 0x3c6: 0x0e, 0x3c7: 0x0e, - 0x3c8: 0x0e, 0x3c9: 0x0e, 0x3ca: 0x0e, 0x3cb: 0x4a, - // Block 0x10, offset 0x400 - 0x400: 0x4b, 0x403: 0x4c, 0x404: 0x4d, 0x405: 0x4e, 0x406: 0x4f, - 0x408: 0x50, 0x409: 0x51, 0x40c: 0x52, 0x40d: 0x53, 0x40e: 0x54, 0x40f: 0x55, - 0x410: 0x3a, 0x411: 0x56, 0x412: 0x0e, 0x413: 0x57, 0x414: 0x58, 0x415: 0x59, 0x416: 0x5a, 0x417: 0x5b, - 0x418: 0x0e, 0x419: 0x5c, 0x41a: 0x0e, 0x41b: 0x5d, - 0x424: 0x5e, 0x425: 0x5f, 0x426: 0x60, 0x427: 0x61, - // Block 0x11, offset 0x440 - 0x456: 0x0b, 0x457: 0x06, - 0x458: 0x0c, 0x45b: 0x0d, 0x45f: 0x0e, - 0x460: 0x06, 0x461: 0x06, 0x462: 0x06, 0x463: 0x06, 0x464: 0x06, 0x465: 0x06, 0x466: 0x06, 0x467: 0x06, - 0x468: 0x06, 0x469: 0x06, 0x46a: 0x06, 0x46b: 0x06, 0x46c: 0x06, 0x46d: 0x06, 0x46e: 0x06, 0x46f: 0x06, - 0x470: 0x06, 0x471: 0x06, 0x472: 0x06, 0x473: 0x06, 0x474: 0x06, 0x475: 0x06, 0x476: 0x06, 0x477: 0x06, - 0x478: 0x06, 0x479: 0x06, 0x47a: 0x06, 0x47b: 0x06, 0x47c: 0x06, 0x47d: 0x06, 0x47e: 0x06, 0x47f: 0x06, - // Block 0x12, offset 0x480 - 0x484: 0x08, 0x485: 0x08, 0x486: 0x08, 0x487: 0x09, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x08, 0x4c1: 0x08, 0x4c2: 0x08, 0x4c3: 0x08, 0x4c4: 0x08, 0x4c5: 0x08, 0x4c6: 0x08, 0x4c7: 0x08, - 0x4c8: 0x08, 0x4c9: 0x08, 0x4ca: 0x08, 0x4cb: 0x08, 0x4cc: 0x08, 0x4cd: 0x08, 0x4ce: 0x08, 0x4cf: 0x08, - 0x4d0: 0x08, 0x4d1: 0x08, 0x4d2: 0x08, 0x4d3: 0x08, 0x4d4: 0x08, 0x4d5: 0x08, 0x4d6: 0x08, 0x4d7: 0x08, - 0x4d8: 0x08, 0x4d9: 0x08, 0x4da: 0x08, 0x4db: 0x08, 0x4dc: 0x08, 0x4dd: 0x08, 0x4de: 0x08, 0x4df: 0x08, - 0x4e0: 0x08, 0x4e1: 0x08, 0x4e2: 0x08, 0x4e3: 0x08, 0x4e4: 0x08, 0x4e5: 0x08, 0x4e6: 0x08, 0x4e7: 0x08, - 0x4e8: 0x08, 0x4e9: 0x08, 0x4ea: 0x08, 0x4eb: 0x08, 0x4ec: 0x08, 0x4ed: 0x08, 0x4ee: 0x08, 0x4ef: 0x08, - 0x4f0: 0x08, 0x4f1: 0x08, 0x4f2: 0x08, 0x4f3: 0x08, 0x4f4: 0x08, 0x4f5: 0x08, 0x4f6: 0x08, 0x4f7: 0x08, - 0x4f8: 0x08, 0x4f9: 0x08, 0x4fa: 0x08, 0x4fb: 0x08, 0x4fc: 0x08, 0x4fd: 0x08, 0x4fe: 0x08, 0x4ff: 0x62, - // Block 0x14, offset 0x500 - 0x520: 0x10, - 0x530: 0x09, 0x531: 0x09, 0x532: 0x09, 0x533: 0x09, 0x534: 0x09, 0x535: 0x09, 0x536: 0x09, 0x537: 0x09, - 0x538: 0x09, 0x539: 0x09, 0x53a: 0x09, 0x53b: 0x09, 0x53c: 0x09, 0x53d: 0x09, 0x53e: 0x09, 0x53f: 0x11, - // Block 0x15, offset 0x540 - 0x540: 0x09, 0x541: 0x09, 0x542: 0x09, 0x543: 0x09, 0x544: 0x09, 0x545: 0x09, 0x546: 0x09, 0x547: 0x09, - 0x548: 0x09, 0x549: 0x09, 0x54a: 0x09, 0x54b: 0x09, 0x54c: 0x09, 0x54d: 0x09, 0x54e: 0x09, 0x54f: 0x11, -} - -// inverseData contains 4-byte entries of the following format: -// <length> <modified UTF-8-encoded rune> <0 padding> -// The last byte of the UTF-8-encoded rune is xor-ed with the last byte of the -// UTF-8 encoding of the original rune. Mappings often have the following -// pattern: -// A -> A (U+FF21 -> U+0041) -// B -> B (U+FF22 -> U+0042) -// ... -// By xor-ing the last byte the same entry can be shared by many mappings. This -// reduces the total number of distinct entries by about two thirds. -// The resulting entry for the aforementioned mappings is -// { 0x01, 0xE0, 0x00, 0x00 } -// Using this entry to map U+FF21 (UTF-8 [EF BC A1]), we get -// E0 ^ A1 = 41. -// Similarly, for U+FF22 (UTF-8 [EF BC A2]), we get -// E0 ^ A2 = 42. -// Note that because of the xor-ing, the byte sequence stored in the entry is -// not valid UTF-8. -var inverseData = [150][4]byte{ - {0x00, 0x00, 0x00, 0x00}, - {0x03, 0xe3, 0x80, 0xa0}, - {0x03, 0xef, 0xbc, 0xa0}, - {0x03, 0xef, 0xbc, 0xe0}, - {0x03, 0xef, 0xbd, 0xe0}, - {0x03, 0xef, 0xbf, 0x02}, - {0x03, 0xef, 0xbf, 0x00}, - {0x03, 0xef, 0xbf, 0x0e}, - {0x03, 0xef, 0xbf, 0x0c}, - {0x03, 0xef, 0xbf, 0x0f}, - {0x03, 0xef, 0xbf, 0x39}, - {0x03, 0xef, 0xbf, 0x3b}, - {0x03, 0xef, 0xbf, 0x3f}, - {0x03, 0xef, 0xbf, 0x2a}, - {0x03, 0xef, 0xbf, 0x0d}, - {0x03, 0xef, 0xbf, 0x25}, - {0x03, 0xef, 0xbd, 0x1a}, - {0x03, 0xef, 0xbd, 0x26}, - {0x01, 0xa0, 0x00, 0x00}, - {0x03, 0xef, 0xbd, 0x25}, - {0x03, 0xef, 0xbd, 0x23}, - {0x03, 0xef, 0xbd, 0x2e}, - {0x03, 0xef, 0xbe, 0x07}, - {0x03, 0xef, 0xbe, 0x05}, - {0x03, 0xef, 0xbd, 0x06}, - {0x03, 0xef, 0xbd, 0x13}, - {0x03, 0xef, 0xbd, 0x0b}, - {0x03, 0xef, 0xbd, 0x16}, - {0x03, 0xef, 0xbd, 0x0c}, - {0x03, 0xef, 0xbd, 0x15}, - {0x03, 0xef, 0xbd, 0x0d}, - {0x03, 0xef, 0xbd, 0x1c}, - {0x03, 0xef, 0xbd, 0x02}, - {0x03, 0xef, 0xbd, 0x1f}, - {0x03, 0xef, 0xbd, 0x1d}, - {0x03, 0xef, 0xbd, 0x17}, - {0x03, 0xef, 0xbd, 0x08}, - {0x03, 0xef, 0xbd, 0x09}, - {0x03, 0xef, 0xbd, 0x0e}, - {0x03, 0xef, 0xbd, 0x04}, - {0x03, 0xef, 0xbd, 0x05}, - {0x03, 0xef, 0xbe, 0x3f}, - {0x03, 0xef, 0xbe, 0x00}, - {0x03, 0xef, 0xbd, 0x2c}, - {0x03, 0xef, 0xbe, 0x06}, - {0x03, 0xef, 0xbe, 0x0c}, - {0x03, 0xef, 0xbe, 0x0f}, - {0x03, 0xef, 0xbe, 0x0d}, - {0x03, 0xef, 0xbe, 0x0b}, - {0x03, 0xef, 0xbe, 0x19}, - {0x03, 0xef, 0xbe, 0x15}, - {0x03, 0xef, 0xbe, 0x11}, - {0x03, 0xef, 0xbe, 0x31}, - {0x03, 0xef, 0xbe, 0x33}, - {0x03, 0xef, 0xbd, 0x0f}, - {0x03, 0xef, 0xbe, 0x30}, - {0x03, 0xef, 0xbe, 0x3e}, - {0x03, 0xef, 0xbe, 0x32}, - {0x03, 0xef, 0xbe, 0x36}, - {0x03, 0xef, 0xbd, 0x14}, - {0x03, 0xef, 0xbe, 0x2e}, - {0x03, 0xef, 0xbd, 0x1e}, - {0x03, 0xef, 0xbe, 0x10}, - {0x03, 0xef, 0xbf, 0x13}, - {0x03, 0xef, 0xbf, 0x15}, - {0x03, 0xef, 0xbf, 0x17}, - {0x03, 0xef, 0xbf, 0x1f}, - {0x03, 0xef, 0xbf, 0x1d}, - {0x03, 0xef, 0xbf, 0x1b}, - {0x03, 0xef, 0xbf, 0x09}, - {0x03, 0xef, 0xbf, 0x0b}, - {0x03, 0xef, 0xbf, 0x37}, - {0x03, 0xef, 0xbe, 0x04}, - {0x01, 0xe0, 0x00, 0x00}, - {0x03, 0xe2, 0xa6, 0x1a}, - {0x03, 0xe2, 0xa6, 0x26}, - {0x03, 0xe3, 0x80, 0x23}, - {0x03, 0xe3, 0x80, 0x2e}, - {0x03, 0xe3, 0x80, 0x25}, - {0x03, 0xe3, 0x83, 0x1e}, - {0x03, 0xe3, 0x83, 0x14}, - {0x03, 0xe3, 0x82, 0x06}, - {0x03, 0xe3, 0x82, 0x0b}, - {0x03, 0xe3, 0x82, 0x0c}, - {0x03, 0xe3, 0x82, 0x0d}, - {0x03, 0xe3, 0x82, 0x02}, - {0x03, 0xe3, 0x83, 0x0f}, - {0x03, 0xe3, 0x83, 0x08}, - {0x03, 0xe3, 0x83, 0x09}, - {0x03, 0xe3, 0x83, 0x2c}, - {0x03, 0xe3, 0x83, 0x0c}, - {0x03, 0xe3, 0x82, 0x13}, - {0x03, 0xe3, 0x82, 0x16}, - {0x03, 0xe3, 0x82, 0x15}, - {0x03, 0xe3, 0x82, 0x1c}, - {0x03, 0xe3, 0x82, 0x1f}, - {0x03, 0xe3, 0x82, 0x1d}, - {0x03, 0xe3, 0x82, 0x1a}, - {0x03, 0xe3, 0x82, 0x17}, - {0x03, 0xe3, 0x82, 0x08}, - {0x03, 0xe3, 0x82, 0x09}, - {0x03, 0xe3, 0x82, 0x0e}, - {0x03, 0xe3, 0x82, 0x04}, - {0x03, 0xe3, 0x82, 0x05}, - {0x03, 0xe3, 0x82, 0x3f}, - {0x03, 0xe3, 0x83, 0x00}, - {0x03, 0xe3, 0x83, 0x06}, - {0x03, 0xe3, 0x83, 0x05}, - {0x03, 0xe3, 0x83, 0x0d}, - {0x03, 0xe3, 0x83, 0x0b}, - {0x03, 0xe3, 0x83, 0x07}, - {0x03, 0xe3, 0x83, 0x19}, - {0x03, 0xe3, 0x83, 0x15}, - {0x03, 0xe3, 0x83, 0x11}, - {0x03, 0xe3, 0x83, 0x31}, - {0x03, 0xe3, 0x83, 0x33}, - {0x03, 0xe3, 0x83, 0x30}, - {0x03, 0xe3, 0x83, 0x3e}, - {0x03, 0xe3, 0x83, 0x32}, - {0x03, 0xe3, 0x83, 0x36}, - {0x03, 0xe3, 0x83, 0x2e}, - {0x03, 0xe3, 0x82, 0x07}, - {0x03, 0xe3, 0x85, 0x04}, - {0x03, 0xe3, 0x84, 0x10}, - {0x03, 0xe3, 0x85, 0x30}, - {0x03, 0xe3, 0x85, 0x0d}, - {0x03, 0xe3, 0x85, 0x13}, - {0x03, 0xe3, 0x85, 0x15}, - {0x03, 0xe3, 0x85, 0x17}, - {0x03, 0xe3, 0x85, 0x1f}, - {0x03, 0xe3, 0x85, 0x1d}, - {0x03, 0xe3, 0x85, 0x1b}, - {0x03, 0xe3, 0x85, 0x09}, - {0x03, 0xe3, 0x85, 0x0f}, - {0x03, 0xe3, 0x85, 0x0b}, - {0x03, 0xe3, 0x85, 0x37}, - {0x03, 0xe3, 0x85, 0x3b}, - {0x03, 0xe3, 0x85, 0x39}, - {0x03, 0xe3, 0x85, 0x3f}, - {0x02, 0xc2, 0x02, 0x00}, - {0x02, 0xc2, 0x0e, 0x00}, - {0x02, 0xc2, 0x0c, 0x00}, - {0x02, 0xc2, 0x00, 0x00}, - {0x03, 0xe2, 0x82, 0x0f}, - {0x03, 0xe2, 0x94, 0x2a}, - {0x03, 0xe2, 0x86, 0x39}, - {0x03, 0xe2, 0x86, 0x3b}, - {0x03, 0xe2, 0x86, 0x3f}, - {0x03, 0xe2, 0x96, 0x0d}, - {0x03, 0xe2, 0x97, 0x25}, -} - -// Total table size 14936 bytes (14KiB) diff --git a/vendor/golang.org/x/text/width/tables9.0.0.go b/vendor/golang.org/x/text/width/tables9.0.0.go deleted file mode 100644 index 7069e263..00000000 --- a/vendor/golang.org/x/text/width/tables9.0.0.go +++ /dev/null @@ -1,1286 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -// +build !go1.10 - -package width - -// UnicodeVersion is the Unicode version from which the tables in this package are derived. -const UnicodeVersion = "9.0.0" - -// 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 *widthTrie) lookup(s []byte) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return widthValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = widthIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = widthIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = widthIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *widthTrie) lookupUnsafe(s []byte) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return widthValues[c0] - } - i := widthIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = widthIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = widthIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// lookupString 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 *widthTrie) lookupString(s string) (v uint16, sz int) { - c0 := s[0] - switch { - case c0 < 0x80: // is ASCII - return widthValues[c0], 1 - case c0 < 0xC2: - return 0, 1 // Illegal UTF-8: not a starter, not ASCII. - case c0 < 0xE0: // 2-byte UTF-8 - if len(s) < 2 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c1), 2 - case c0 < 0xF0: // 3-byte UTF-8 - if len(s) < 3 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = widthIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c2), 3 - case c0 < 0xF8: // 4-byte UTF-8 - if len(s) < 4 { - return 0, 0 - } - i := widthIndex[c0] - c1 := s[1] - if c1 < 0x80 || 0xC0 <= c1 { - return 0, 1 // Illegal UTF-8: not a continuation byte. - } - o := uint32(i)<<6 + uint32(c1) - i = widthIndex[o] - c2 := s[2] - if c2 < 0x80 || 0xC0 <= c2 { - return 0, 2 // Illegal UTF-8: not a continuation byte. - } - o = uint32(i)<<6 + uint32(c2) - i = widthIndex[o] - c3 := s[3] - if c3 < 0x80 || 0xC0 <= c3 { - return 0, 3 // Illegal UTF-8: not a continuation byte. - } - return t.lookupValue(uint32(i), c3), 4 - } - // Illegal rune - return 0, 1 -} - -// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. -// s must start with a full and valid UTF-8 encoded rune. -func (t *widthTrie) lookupStringUnsafe(s string) uint16 { - c0 := s[0] - if c0 < 0x80 { // is ASCII - return widthValues[c0] - } - i := widthIndex[c0] - if c0 < 0xE0 { // 2-byte UTF-8 - return t.lookupValue(uint32(i), s[1]) - } - i = widthIndex[uint32(i)<<6+uint32(s[1])] - if c0 < 0xF0 { // 3-byte UTF-8 - return t.lookupValue(uint32(i), s[2]) - } - i = widthIndex[uint32(i)<<6+uint32(s[2])] - if c0 < 0xF8 { // 4-byte UTF-8 - return t.lookupValue(uint32(i), s[3]) - } - return 0 -} - -// widthTrie. Total size: 14080 bytes (13.75 KiB). Checksum: 3b8aeb3dc03667a3. -type widthTrie struct{} - -func newWidthTrie(i int) *widthTrie { - return &widthTrie{} -} - -// lookupValue determines the type of block n and looks up the value for b. -func (t *widthTrie) lookupValue(n uint32, b byte) uint16 { - switch { - default: - return uint16(widthValues[n<<6+uint32(b)]) - } -} - -// widthValues: 99 blocks, 6336 entries, 12672 bytes -// The third block is the zero block. -var widthValues = [6336]uint16{ - // Block 0x0, offset 0x0 - 0x20: 0x6001, 0x21: 0x6002, 0x22: 0x6002, 0x23: 0x6002, - 0x24: 0x6002, 0x25: 0x6002, 0x26: 0x6002, 0x27: 0x6002, 0x28: 0x6002, 0x29: 0x6002, - 0x2a: 0x6002, 0x2b: 0x6002, 0x2c: 0x6002, 0x2d: 0x6002, 0x2e: 0x6002, 0x2f: 0x6002, - 0x30: 0x6002, 0x31: 0x6002, 0x32: 0x6002, 0x33: 0x6002, 0x34: 0x6002, 0x35: 0x6002, - 0x36: 0x6002, 0x37: 0x6002, 0x38: 0x6002, 0x39: 0x6002, 0x3a: 0x6002, 0x3b: 0x6002, - 0x3c: 0x6002, 0x3d: 0x6002, 0x3e: 0x6002, 0x3f: 0x6002, - // Block 0x1, offset 0x40 - 0x40: 0x6003, 0x41: 0x6003, 0x42: 0x6003, 0x43: 0x6003, 0x44: 0x6003, 0x45: 0x6003, - 0x46: 0x6003, 0x47: 0x6003, 0x48: 0x6003, 0x49: 0x6003, 0x4a: 0x6003, 0x4b: 0x6003, - 0x4c: 0x6003, 0x4d: 0x6003, 0x4e: 0x6003, 0x4f: 0x6003, 0x50: 0x6003, 0x51: 0x6003, - 0x52: 0x6003, 0x53: 0x6003, 0x54: 0x6003, 0x55: 0x6003, 0x56: 0x6003, 0x57: 0x6003, - 0x58: 0x6003, 0x59: 0x6003, 0x5a: 0x6003, 0x5b: 0x6003, 0x5c: 0x6003, 0x5d: 0x6003, - 0x5e: 0x6003, 0x5f: 0x6003, 0x60: 0x6004, 0x61: 0x6004, 0x62: 0x6004, 0x63: 0x6004, - 0x64: 0x6004, 0x65: 0x6004, 0x66: 0x6004, 0x67: 0x6004, 0x68: 0x6004, 0x69: 0x6004, - 0x6a: 0x6004, 0x6b: 0x6004, 0x6c: 0x6004, 0x6d: 0x6004, 0x6e: 0x6004, 0x6f: 0x6004, - 0x70: 0x6004, 0x71: 0x6004, 0x72: 0x6004, 0x73: 0x6004, 0x74: 0x6004, 0x75: 0x6004, - 0x76: 0x6004, 0x77: 0x6004, 0x78: 0x6004, 0x79: 0x6004, 0x7a: 0x6004, 0x7b: 0x6004, - 0x7c: 0x6004, 0x7d: 0x6004, 0x7e: 0x6004, - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xe1: 0x2000, 0xe2: 0x6005, 0xe3: 0x6005, - 0xe4: 0x2000, 0xe5: 0x6006, 0xe6: 0x6005, 0xe7: 0x2000, 0xe8: 0x2000, - 0xea: 0x2000, 0xec: 0x6007, 0xed: 0x2000, 0xee: 0x2000, 0xef: 0x6008, - 0xf0: 0x2000, 0xf1: 0x2000, 0xf2: 0x2000, 0xf3: 0x2000, 0xf4: 0x2000, - 0xf6: 0x2000, 0xf7: 0x2000, 0xf8: 0x2000, 0xf9: 0x2000, 0xfa: 0x2000, - 0xfc: 0x2000, 0xfd: 0x2000, 0xfe: 0x2000, 0xff: 0x2000, - // Block 0x4, offset 0x100 - 0x106: 0x2000, - 0x110: 0x2000, - 0x117: 0x2000, - 0x118: 0x2000, - 0x11e: 0x2000, 0x11f: 0x2000, 0x120: 0x2000, 0x121: 0x2000, - 0x126: 0x2000, 0x128: 0x2000, 0x129: 0x2000, - 0x12a: 0x2000, 0x12c: 0x2000, 0x12d: 0x2000, - 0x130: 0x2000, 0x132: 0x2000, 0x133: 0x2000, - 0x137: 0x2000, 0x138: 0x2000, 0x139: 0x2000, 0x13a: 0x2000, - 0x13c: 0x2000, 0x13e: 0x2000, - // Block 0x5, offset 0x140 - 0x141: 0x2000, - 0x151: 0x2000, - 0x153: 0x2000, - 0x15b: 0x2000, - 0x166: 0x2000, 0x167: 0x2000, - 0x16b: 0x2000, - 0x171: 0x2000, 0x172: 0x2000, 0x173: 0x2000, - 0x178: 0x2000, - 0x17f: 0x2000, - // Block 0x6, offset 0x180 - 0x180: 0x2000, 0x181: 0x2000, 0x182: 0x2000, 0x184: 0x2000, - 0x188: 0x2000, 0x189: 0x2000, 0x18a: 0x2000, 0x18b: 0x2000, - 0x18d: 0x2000, - 0x192: 0x2000, 0x193: 0x2000, - 0x1a6: 0x2000, 0x1a7: 0x2000, - 0x1ab: 0x2000, - // Block 0x7, offset 0x1c0 - 0x1ce: 0x2000, 0x1d0: 0x2000, - 0x1d2: 0x2000, 0x1d4: 0x2000, 0x1d6: 0x2000, - 0x1d8: 0x2000, 0x1da: 0x2000, 0x1dc: 0x2000, - // Block 0x8, offset 0x200 - 0x211: 0x2000, - 0x221: 0x2000, - // Block 0x9, offset 0x240 - 0x244: 0x2000, - 0x247: 0x2000, 0x249: 0x2000, 0x24a: 0x2000, 0x24b: 0x2000, - 0x24d: 0x2000, 0x250: 0x2000, - 0x258: 0x2000, 0x259: 0x2000, 0x25a: 0x2000, 0x25b: 0x2000, 0x25d: 0x2000, - 0x25f: 0x2000, - // Block 0xa, offset 0x280 - 0x280: 0x2000, 0x281: 0x2000, 0x282: 0x2000, 0x283: 0x2000, 0x284: 0x2000, 0x285: 0x2000, - 0x286: 0x2000, 0x287: 0x2000, 0x288: 0x2000, 0x289: 0x2000, 0x28a: 0x2000, 0x28b: 0x2000, - 0x28c: 0x2000, 0x28d: 0x2000, 0x28e: 0x2000, 0x28f: 0x2000, 0x290: 0x2000, 0x291: 0x2000, - 0x292: 0x2000, 0x293: 0x2000, 0x294: 0x2000, 0x295: 0x2000, 0x296: 0x2000, 0x297: 0x2000, - 0x298: 0x2000, 0x299: 0x2000, 0x29a: 0x2000, 0x29b: 0x2000, 0x29c: 0x2000, 0x29d: 0x2000, - 0x29e: 0x2000, 0x29f: 0x2000, 0x2a0: 0x2000, 0x2a1: 0x2000, 0x2a2: 0x2000, 0x2a3: 0x2000, - 0x2a4: 0x2000, 0x2a5: 0x2000, 0x2a6: 0x2000, 0x2a7: 0x2000, 0x2a8: 0x2000, 0x2a9: 0x2000, - 0x2aa: 0x2000, 0x2ab: 0x2000, 0x2ac: 0x2000, 0x2ad: 0x2000, 0x2ae: 0x2000, 0x2af: 0x2000, - 0x2b0: 0x2000, 0x2b1: 0x2000, 0x2b2: 0x2000, 0x2b3: 0x2000, 0x2b4: 0x2000, 0x2b5: 0x2000, - 0x2b6: 0x2000, 0x2b7: 0x2000, 0x2b8: 0x2000, 0x2b9: 0x2000, 0x2ba: 0x2000, 0x2bb: 0x2000, - 0x2bc: 0x2000, 0x2bd: 0x2000, 0x2be: 0x2000, 0x2bf: 0x2000, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x2000, 0x2c1: 0x2000, 0x2c2: 0x2000, 0x2c3: 0x2000, 0x2c4: 0x2000, 0x2c5: 0x2000, - 0x2c6: 0x2000, 0x2c7: 0x2000, 0x2c8: 0x2000, 0x2c9: 0x2000, 0x2ca: 0x2000, 0x2cb: 0x2000, - 0x2cc: 0x2000, 0x2cd: 0x2000, 0x2ce: 0x2000, 0x2cf: 0x2000, 0x2d0: 0x2000, 0x2d1: 0x2000, - 0x2d2: 0x2000, 0x2d3: 0x2000, 0x2d4: 0x2000, 0x2d5: 0x2000, 0x2d6: 0x2000, 0x2d7: 0x2000, - 0x2d8: 0x2000, 0x2d9: 0x2000, 0x2da: 0x2000, 0x2db: 0x2000, 0x2dc: 0x2000, 0x2dd: 0x2000, - 0x2de: 0x2000, 0x2df: 0x2000, 0x2e0: 0x2000, 0x2e1: 0x2000, 0x2e2: 0x2000, 0x2e3: 0x2000, - 0x2e4: 0x2000, 0x2e5: 0x2000, 0x2e6: 0x2000, 0x2e7: 0x2000, 0x2e8: 0x2000, 0x2e9: 0x2000, - 0x2ea: 0x2000, 0x2eb: 0x2000, 0x2ec: 0x2000, 0x2ed: 0x2000, 0x2ee: 0x2000, 0x2ef: 0x2000, - // Block 0xc, offset 0x300 - 0x311: 0x2000, - 0x312: 0x2000, 0x313: 0x2000, 0x314: 0x2000, 0x315: 0x2000, 0x316: 0x2000, 0x317: 0x2000, - 0x318: 0x2000, 0x319: 0x2000, 0x31a: 0x2000, 0x31b: 0x2000, 0x31c: 0x2000, 0x31d: 0x2000, - 0x31e: 0x2000, 0x31f: 0x2000, 0x320: 0x2000, 0x321: 0x2000, 0x323: 0x2000, - 0x324: 0x2000, 0x325: 0x2000, 0x326: 0x2000, 0x327: 0x2000, 0x328: 0x2000, 0x329: 0x2000, - 0x331: 0x2000, 0x332: 0x2000, 0x333: 0x2000, 0x334: 0x2000, 0x335: 0x2000, - 0x336: 0x2000, 0x337: 0x2000, 0x338: 0x2000, 0x339: 0x2000, 0x33a: 0x2000, 0x33b: 0x2000, - 0x33c: 0x2000, 0x33d: 0x2000, 0x33e: 0x2000, 0x33f: 0x2000, - // Block 0xd, offset 0x340 - 0x340: 0x2000, 0x341: 0x2000, 0x343: 0x2000, 0x344: 0x2000, 0x345: 0x2000, - 0x346: 0x2000, 0x347: 0x2000, 0x348: 0x2000, 0x349: 0x2000, - // Block 0xe, offset 0x380 - 0x381: 0x2000, - 0x390: 0x2000, 0x391: 0x2000, - 0x392: 0x2000, 0x393: 0x2000, 0x394: 0x2000, 0x395: 0x2000, 0x396: 0x2000, 0x397: 0x2000, - 0x398: 0x2000, 0x399: 0x2000, 0x39a: 0x2000, 0x39b: 0x2000, 0x39c: 0x2000, 0x39d: 0x2000, - 0x39e: 0x2000, 0x39f: 0x2000, 0x3a0: 0x2000, 0x3a1: 0x2000, 0x3a2: 0x2000, 0x3a3: 0x2000, - 0x3a4: 0x2000, 0x3a5: 0x2000, 0x3a6: 0x2000, 0x3a7: 0x2000, 0x3a8: 0x2000, 0x3a9: 0x2000, - 0x3aa: 0x2000, 0x3ab: 0x2000, 0x3ac: 0x2000, 0x3ad: 0x2000, 0x3ae: 0x2000, 0x3af: 0x2000, - 0x3b0: 0x2000, 0x3b1: 0x2000, 0x3b2: 0x2000, 0x3b3: 0x2000, 0x3b4: 0x2000, 0x3b5: 0x2000, - 0x3b6: 0x2000, 0x3b7: 0x2000, 0x3b8: 0x2000, 0x3b9: 0x2000, 0x3ba: 0x2000, 0x3bb: 0x2000, - 0x3bc: 0x2000, 0x3bd: 0x2000, 0x3be: 0x2000, 0x3bf: 0x2000, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x2000, 0x3c1: 0x2000, 0x3c2: 0x2000, 0x3c3: 0x2000, 0x3c4: 0x2000, 0x3c5: 0x2000, - 0x3c6: 0x2000, 0x3c7: 0x2000, 0x3c8: 0x2000, 0x3c9: 0x2000, 0x3ca: 0x2000, 0x3cb: 0x2000, - 0x3cc: 0x2000, 0x3cd: 0x2000, 0x3ce: 0x2000, 0x3cf: 0x2000, 0x3d1: 0x2000, - // Block 0x10, offset 0x400 - 0x400: 0x4000, 0x401: 0x4000, 0x402: 0x4000, 0x403: 0x4000, 0x404: 0x4000, 0x405: 0x4000, - 0x406: 0x4000, 0x407: 0x4000, 0x408: 0x4000, 0x409: 0x4000, 0x40a: 0x4000, 0x40b: 0x4000, - 0x40c: 0x4000, 0x40d: 0x4000, 0x40e: 0x4000, 0x40f: 0x4000, 0x410: 0x4000, 0x411: 0x4000, - 0x412: 0x4000, 0x413: 0x4000, 0x414: 0x4000, 0x415: 0x4000, 0x416: 0x4000, 0x417: 0x4000, - 0x418: 0x4000, 0x419: 0x4000, 0x41a: 0x4000, 0x41b: 0x4000, 0x41c: 0x4000, 0x41d: 0x4000, - 0x41e: 0x4000, 0x41f: 0x4000, 0x420: 0x4000, 0x421: 0x4000, 0x422: 0x4000, 0x423: 0x4000, - 0x424: 0x4000, 0x425: 0x4000, 0x426: 0x4000, 0x427: 0x4000, 0x428: 0x4000, 0x429: 0x4000, - 0x42a: 0x4000, 0x42b: 0x4000, 0x42c: 0x4000, 0x42d: 0x4000, 0x42e: 0x4000, 0x42f: 0x4000, - 0x430: 0x4000, 0x431: 0x4000, 0x432: 0x4000, 0x433: 0x4000, 0x434: 0x4000, 0x435: 0x4000, - 0x436: 0x4000, 0x437: 0x4000, 0x438: 0x4000, 0x439: 0x4000, 0x43a: 0x4000, 0x43b: 0x4000, - 0x43c: 0x4000, 0x43d: 0x4000, 0x43e: 0x4000, 0x43f: 0x4000, - // Block 0x11, offset 0x440 - 0x440: 0x4000, 0x441: 0x4000, 0x442: 0x4000, 0x443: 0x4000, 0x444: 0x4000, 0x445: 0x4000, - 0x446: 0x4000, 0x447: 0x4000, 0x448: 0x4000, 0x449: 0x4000, 0x44a: 0x4000, 0x44b: 0x4000, - 0x44c: 0x4000, 0x44d: 0x4000, 0x44e: 0x4000, 0x44f: 0x4000, 0x450: 0x4000, 0x451: 0x4000, - 0x452: 0x4000, 0x453: 0x4000, 0x454: 0x4000, 0x455: 0x4000, 0x456: 0x4000, 0x457: 0x4000, - 0x458: 0x4000, 0x459: 0x4000, 0x45a: 0x4000, 0x45b: 0x4000, 0x45c: 0x4000, 0x45d: 0x4000, - 0x45e: 0x4000, 0x45f: 0x4000, - // Block 0x12, offset 0x480 - 0x490: 0x2000, - 0x493: 0x2000, 0x494: 0x2000, 0x495: 0x2000, 0x496: 0x2000, - 0x498: 0x2000, 0x499: 0x2000, 0x49c: 0x2000, 0x49d: 0x2000, - 0x4a0: 0x2000, 0x4a1: 0x2000, 0x4a2: 0x2000, - 0x4a4: 0x2000, 0x4a5: 0x2000, 0x4a6: 0x2000, 0x4a7: 0x2000, - 0x4b0: 0x2000, 0x4b2: 0x2000, 0x4b3: 0x2000, 0x4b5: 0x2000, - 0x4bb: 0x2000, - 0x4be: 0x2000, - // Block 0x13, offset 0x4c0 - 0x4f4: 0x2000, - 0x4ff: 0x2000, - // Block 0x14, offset 0x500 - 0x501: 0x2000, 0x502: 0x2000, 0x503: 0x2000, 0x504: 0x2000, - 0x529: 0xa009, - 0x52c: 0x2000, - // Block 0x15, offset 0x540 - 0x543: 0x2000, 0x545: 0x2000, - 0x549: 0x2000, - 0x553: 0x2000, 0x556: 0x2000, - 0x561: 0x2000, 0x562: 0x2000, - 0x566: 0x2000, - 0x56b: 0x2000, - // Block 0x16, offset 0x580 - 0x593: 0x2000, 0x594: 0x2000, - 0x59b: 0x2000, 0x59c: 0x2000, 0x59d: 0x2000, - 0x59e: 0x2000, 0x5a0: 0x2000, 0x5a1: 0x2000, 0x5a2: 0x2000, 0x5a3: 0x2000, - 0x5a4: 0x2000, 0x5a5: 0x2000, 0x5a6: 0x2000, 0x5a7: 0x2000, 0x5a8: 0x2000, 0x5a9: 0x2000, - 0x5aa: 0x2000, 0x5ab: 0x2000, - 0x5b0: 0x2000, 0x5b1: 0x2000, 0x5b2: 0x2000, 0x5b3: 0x2000, 0x5b4: 0x2000, 0x5b5: 0x2000, - 0x5b6: 0x2000, 0x5b7: 0x2000, 0x5b8: 0x2000, 0x5b9: 0x2000, - // Block 0x17, offset 0x5c0 - 0x5c9: 0x2000, - 0x5d0: 0x200a, 0x5d1: 0x200b, - 0x5d2: 0x200a, 0x5d3: 0x200c, 0x5d4: 0x2000, 0x5d5: 0x2000, 0x5d6: 0x2000, 0x5d7: 0x2000, - 0x5d8: 0x2000, 0x5d9: 0x2000, - 0x5f8: 0x2000, 0x5f9: 0x2000, - // Block 0x18, offset 0x600 - 0x612: 0x2000, 0x614: 0x2000, - 0x627: 0x2000, - // Block 0x19, offset 0x640 - 0x640: 0x2000, 0x642: 0x2000, 0x643: 0x2000, - 0x647: 0x2000, 0x648: 0x2000, 0x64b: 0x2000, - 0x64f: 0x2000, 0x651: 0x2000, - 0x655: 0x2000, - 0x65a: 0x2000, 0x65d: 0x2000, - 0x65e: 0x2000, 0x65f: 0x2000, 0x660: 0x2000, 0x663: 0x2000, - 0x665: 0x2000, 0x667: 0x2000, 0x668: 0x2000, 0x669: 0x2000, - 0x66a: 0x2000, 0x66b: 0x2000, 0x66c: 0x2000, 0x66e: 0x2000, - 0x674: 0x2000, 0x675: 0x2000, - 0x676: 0x2000, 0x677: 0x2000, - 0x67c: 0x2000, 0x67d: 0x2000, - // Block 0x1a, offset 0x680 - 0x688: 0x2000, - 0x68c: 0x2000, - 0x692: 0x2000, - 0x6a0: 0x2000, 0x6a1: 0x2000, - 0x6a4: 0x2000, 0x6a5: 0x2000, 0x6a6: 0x2000, 0x6a7: 0x2000, - 0x6aa: 0x2000, 0x6ab: 0x2000, 0x6ae: 0x2000, 0x6af: 0x2000, - // Block 0x1b, offset 0x6c0 - 0x6c2: 0x2000, 0x6c3: 0x2000, - 0x6c6: 0x2000, 0x6c7: 0x2000, - 0x6d5: 0x2000, - 0x6d9: 0x2000, - 0x6e5: 0x2000, - 0x6ff: 0x2000, - // Block 0x1c, offset 0x700 - 0x712: 0x2000, - 0x71a: 0x4000, 0x71b: 0x4000, - 0x729: 0x4000, - 0x72a: 0x4000, - // Block 0x1d, offset 0x740 - 0x769: 0x4000, - 0x76a: 0x4000, 0x76b: 0x4000, 0x76c: 0x4000, - 0x770: 0x4000, 0x773: 0x4000, - // Block 0x1e, offset 0x780 - 0x7a0: 0x2000, 0x7a1: 0x2000, 0x7a2: 0x2000, 0x7a3: 0x2000, - 0x7a4: 0x2000, 0x7a5: 0x2000, 0x7a6: 0x2000, 0x7a7: 0x2000, 0x7a8: 0x2000, 0x7a9: 0x2000, - 0x7aa: 0x2000, 0x7ab: 0x2000, 0x7ac: 0x2000, 0x7ad: 0x2000, 0x7ae: 0x2000, 0x7af: 0x2000, - 0x7b0: 0x2000, 0x7b1: 0x2000, 0x7b2: 0x2000, 0x7b3: 0x2000, 0x7b4: 0x2000, 0x7b5: 0x2000, - 0x7b6: 0x2000, 0x7b7: 0x2000, 0x7b8: 0x2000, 0x7b9: 0x2000, 0x7ba: 0x2000, 0x7bb: 0x2000, - 0x7bc: 0x2000, 0x7bd: 0x2000, 0x7be: 0x2000, 0x7bf: 0x2000, - // Block 0x1f, offset 0x7c0 - 0x7c0: 0x2000, 0x7c1: 0x2000, 0x7c2: 0x2000, 0x7c3: 0x2000, 0x7c4: 0x2000, 0x7c5: 0x2000, - 0x7c6: 0x2000, 0x7c7: 0x2000, 0x7c8: 0x2000, 0x7c9: 0x2000, 0x7ca: 0x2000, 0x7cb: 0x2000, - 0x7cc: 0x2000, 0x7cd: 0x2000, 0x7ce: 0x2000, 0x7cf: 0x2000, 0x7d0: 0x2000, 0x7d1: 0x2000, - 0x7d2: 0x2000, 0x7d3: 0x2000, 0x7d4: 0x2000, 0x7d5: 0x2000, 0x7d6: 0x2000, 0x7d7: 0x2000, - 0x7d8: 0x2000, 0x7d9: 0x2000, 0x7da: 0x2000, 0x7db: 0x2000, 0x7dc: 0x2000, 0x7dd: 0x2000, - 0x7de: 0x2000, 0x7df: 0x2000, 0x7e0: 0x2000, 0x7e1: 0x2000, 0x7e2: 0x2000, 0x7e3: 0x2000, - 0x7e4: 0x2000, 0x7e5: 0x2000, 0x7e6: 0x2000, 0x7e7: 0x2000, 0x7e8: 0x2000, 0x7e9: 0x2000, - 0x7eb: 0x2000, 0x7ec: 0x2000, 0x7ed: 0x2000, 0x7ee: 0x2000, 0x7ef: 0x2000, - 0x7f0: 0x2000, 0x7f1: 0x2000, 0x7f2: 0x2000, 0x7f3: 0x2000, 0x7f4: 0x2000, 0x7f5: 0x2000, - 0x7f6: 0x2000, 0x7f7: 0x2000, 0x7f8: 0x2000, 0x7f9: 0x2000, 0x7fa: 0x2000, 0x7fb: 0x2000, - 0x7fc: 0x2000, 0x7fd: 0x2000, 0x7fe: 0x2000, 0x7ff: 0x2000, - // Block 0x20, offset 0x800 - 0x800: 0x2000, 0x801: 0x2000, 0x802: 0x200d, 0x803: 0x2000, 0x804: 0x2000, 0x805: 0x2000, - 0x806: 0x2000, 0x807: 0x2000, 0x808: 0x2000, 0x809: 0x2000, 0x80a: 0x2000, 0x80b: 0x2000, - 0x80c: 0x2000, 0x80d: 0x2000, 0x80e: 0x2000, 0x80f: 0x2000, 0x810: 0x2000, 0x811: 0x2000, - 0x812: 0x2000, 0x813: 0x2000, 0x814: 0x2000, 0x815: 0x2000, 0x816: 0x2000, 0x817: 0x2000, - 0x818: 0x2000, 0x819: 0x2000, 0x81a: 0x2000, 0x81b: 0x2000, 0x81c: 0x2000, 0x81d: 0x2000, - 0x81e: 0x2000, 0x81f: 0x2000, 0x820: 0x2000, 0x821: 0x2000, 0x822: 0x2000, 0x823: 0x2000, - 0x824: 0x2000, 0x825: 0x2000, 0x826: 0x2000, 0x827: 0x2000, 0x828: 0x2000, 0x829: 0x2000, - 0x82a: 0x2000, 0x82b: 0x2000, 0x82c: 0x2000, 0x82d: 0x2000, 0x82e: 0x2000, 0x82f: 0x2000, - 0x830: 0x2000, 0x831: 0x2000, 0x832: 0x2000, 0x833: 0x2000, 0x834: 0x2000, 0x835: 0x2000, - 0x836: 0x2000, 0x837: 0x2000, 0x838: 0x2000, 0x839: 0x2000, 0x83a: 0x2000, 0x83b: 0x2000, - 0x83c: 0x2000, 0x83d: 0x2000, 0x83e: 0x2000, 0x83f: 0x2000, - // Block 0x21, offset 0x840 - 0x840: 0x2000, 0x841: 0x2000, 0x842: 0x2000, 0x843: 0x2000, 0x844: 0x2000, 0x845: 0x2000, - 0x846: 0x2000, 0x847: 0x2000, 0x848: 0x2000, 0x849: 0x2000, 0x84a: 0x2000, 0x84b: 0x2000, - 0x850: 0x2000, 0x851: 0x2000, - 0x852: 0x2000, 0x853: 0x2000, 0x854: 0x2000, 0x855: 0x2000, 0x856: 0x2000, 0x857: 0x2000, - 0x858: 0x2000, 0x859: 0x2000, 0x85a: 0x2000, 0x85b: 0x2000, 0x85c: 0x2000, 0x85d: 0x2000, - 0x85e: 0x2000, 0x85f: 0x2000, 0x860: 0x2000, 0x861: 0x2000, 0x862: 0x2000, 0x863: 0x2000, - 0x864: 0x2000, 0x865: 0x2000, 0x866: 0x2000, 0x867: 0x2000, 0x868: 0x2000, 0x869: 0x2000, - 0x86a: 0x2000, 0x86b: 0x2000, 0x86c: 0x2000, 0x86d: 0x2000, 0x86e: 0x2000, 0x86f: 0x2000, - 0x870: 0x2000, 0x871: 0x2000, 0x872: 0x2000, 0x873: 0x2000, - // Block 0x22, offset 0x880 - 0x880: 0x2000, 0x881: 0x2000, 0x882: 0x2000, 0x883: 0x2000, 0x884: 0x2000, 0x885: 0x2000, - 0x886: 0x2000, 0x887: 0x2000, 0x888: 0x2000, 0x889: 0x2000, 0x88a: 0x2000, 0x88b: 0x2000, - 0x88c: 0x2000, 0x88d: 0x2000, 0x88e: 0x2000, 0x88f: 0x2000, - 0x892: 0x2000, 0x893: 0x2000, 0x894: 0x2000, 0x895: 0x2000, - 0x8a0: 0x200e, 0x8a1: 0x2000, 0x8a3: 0x2000, - 0x8a4: 0x2000, 0x8a5: 0x2000, 0x8a6: 0x2000, 0x8a7: 0x2000, 0x8a8: 0x2000, 0x8a9: 0x2000, - 0x8b2: 0x2000, 0x8b3: 0x2000, - 0x8b6: 0x2000, 0x8b7: 0x2000, - 0x8bc: 0x2000, 0x8bd: 0x2000, - // Block 0x23, offset 0x8c0 - 0x8c0: 0x2000, 0x8c1: 0x2000, - 0x8c6: 0x2000, 0x8c7: 0x2000, 0x8c8: 0x2000, 0x8cb: 0x200f, - 0x8ce: 0x2000, 0x8cf: 0x2000, 0x8d0: 0x2000, 0x8d1: 0x2000, - 0x8e2: 0x2000, 0x8e3: 0x2000, - 0x8e4: 0x2000, 0x8e5: 0x2000, - 0x8ef: 0x2000, - 0x8fd: 0x4000, 0x8fe: 0x4000, - // Block 0x24, offset 0x900 - 0x905: 0x2000, - 0x906: 0x2000, 0x909: 0x2000, - 0x90e: 0x2000, 0x90f: 0x2000, - 0x914: 0x4000, 0x915: 0x4000, - 0x91c: 0x2000, - 0x91e: 0x2000, - // Block 0x25, offset 0x940 - 0x940: 0x2000, 0x942: 0x2000, - 0x948: 0x4000, 0x949: 0x4000, 0x94a: 0x4000, 0x94b: 0x4000, - 0x94c: 0x4000, 0x94d: 0x4000, 0x94e: 0x4000, 0x94f: 0x4000, 0x950: 0x4000, 0x951: 0x4000, - 0x952: 0x4000, 0x953: 0x4000, - 0x960: 0x2000, 0x961: 0x2000, 0x963: 0x2000, - 0x964: 0x2000, 0x965: 0x2000, 0x967: 0x2000, 0x968: 0x2000, 0x969: 0x2000, - 0x96a: 0x2000, 0x96c: 0x2000, 0x96d: 0x2000, 0x96f: 0x2000, - 0x97f: 0x4000, - // Block 0x26, offset 0x980 - 0x993: 0x4000, - 0x99e: 0x2000, 0x99f: 0x2000, 0x9a1: 0x4000, - 0x9aa: 0x4000, 0x9ab: 0x4000, - 0x9bd: 0x4000, 0x9be: 0x4000, 0x9bf: 0x2000, - // Block 0x27, offset 0x9c0 - 0x9c4: 0x4000, 0x9c5: 0x4000, - 0x9c6: 0x2000, 0x9c7: 0x2000, 0x9c8: 0x2000, 0x9c9: 0x2000, 0x9ca: 0x2000, 0x9cb: 0x2000, - 0x9cc: 0x2000, 0x9cd: 0x2000, 0x9ce: 0x4000, 0x9cf: 0x2000, 0x9d0: 0x2000, 0x9d1: 0x2000, - 0x9d2: 0x2000, 0x9d3: 0x2000, 0x9d4: 0x4000, 0x9d5: 0x2000, 0x9d6: 0x2000, 0x9d7: 0x2000, - 0x9d8: 0x2000, 0x9d9: 0x2000, 0x9da: 0x2000, 0x9db: 0x2000, 0x9dc: 0x2000, 0x9dd: 0x2000, - 0x9de: 0x2000, 0x9df: 0x2000, 0x9e0: 0x2000, 0x9e1: 0x2000, 0x9e3: 0x2000, - 0x9e8: 0x2000, 0x9e9: 0x2000, - 0x9ea: 0x4000, 0x9eb: 0x2000, 0x9ec: 0x2000, 0x9ed: 0x2000, 0x9ee: 0x2000, 0x9ef: 0x2000, - 0x9f0: 0x2000, 0x9f1: 0x2000, 0x9f2: 0x4000, 0x9f3: 0x4000, 0x9f4: 0x2000, 0x9f5: 0x4000, - 0x9f6: 0x2000, 0x9f7: 0x2000, 0x9f8: 0x2000, 0x9f9: 0x2000, 0x9fa: 0x4000, 0x9fb: 0x2000, - 0x9fc: 0x2000, 0x9fd: 0x4000, 0x9fe: 0x2000, 0x9ff: 0x2000, - // Block 0x28, offset 0xa00 - 0xa05: 0x4000, - 0xa0a: 0x4000, 0xa0b: 0x4000, - 0xa28: 0x4000, - 0xa3d: 0x2000, - // Block 0x29, offset 0xa40 - 0xa4c: 0x4000, 0xa4e: 0x4000, - 0xa53: 0x4000, 0xa54: 0x4000, 0xa55: 0x4000, 0xa57: 0x4000, - 0xa76: 0x2000, 0xa77: 0x2000, 0xa78: 0x2000, 0xa79: 0x2000, 0xa7a: 0x2000, 0xa7b: 0x2000, - 0xa7c: 0x2000, 0xa7d: 0x2000, 0xa7e: 0x2000, 0xa7f: 0x2000, - // Block 0x2a, offset 0xa80 - 0xa95: 0x4000, 0xa96: 0x4000, 0xa97: 0x4000, - 0xab0: 0x4000, - 0xabf: 0x4000, - // Block 0x2b, offset 0xac0 - 0xae6: 0x6000, 0xae7: 0x6000, 0xae8: 0x6000, 0xae9: 0x6000, - 0xaea: 0x6000, 0xaeb: 0x6000, 0xaec: 0x6000, 0xaed: 0x6000, - // Block 0x2c, offset 0xb00 - 0xb05: 0x6010, - 0xb06: 0x6011, - // Block 0x2d, offset 0xb40 - 0xb5b: 0x4000, 0xb5c: 0x4000, - // Block 0x2e, offset 0xb80 - 0xb90: 0x4000, - 0xb95: 0x4000, 0xb96: 0x2000, 0xb97: 0x2000, - 0xb98: 0x2000, 0xb99: 0x2000, - // Block 0x2f, offset 0xbc0 - 0xbc0: 0x4000, 0xbc1: 0x4000, 0xbc2: 0x4000, 0xbc3: 0x4000, 0xbc4: 0x4000, 0xbc5: 0x4000, - 0xbc6: 0x4000, 0xbc7: 0x4000, 0xbc8: 0x4000, 0xbc9: 0x4000, 0xbca: 0x4000, 0xbcb: 0x4000, - 0xbcc: 0x4000, 0xbcd: 0x4000, 0xbce: 0x4000, 0xbcf: 0x4000, 0xbd0: 0x4000, 0xbd1: 0x4000, - 0xbd2: 0x4000, 0xbd3: 0x4000, 0xbd4: 0x4000, 0xbd5: 0x4000, 0xbd6: 0x4000, 0xbd7: 0x4000, - 0xbd8: 0x4000, 0xbd9: 0x4000, 0xbdb: 0x4000, 0xbdc: 0x4000, 0xbdd: 0x4000, - 0xbde: 0x4000, 0xbdf: 0x4000, 0xbe0: 0x4000, 0xbe1: 0x4000, 0xbe2: 0x4000, 0xbe3: 0x4000, - 0xbe4: 0x4000, 0xbe5: 0x4000, 0xbe6: 0x4000, 0xbe7: 0x4000, 0xbe8: 0x4000, 0xbe9: 0x4000, - 0xbea: 0x4000, 0xbeb: 0x4000, 0xbec: 0x4000, 0xbed: 0x4000, 0xbee: 0x4000, 0xbef: 0x4000, - 0xbf0: 0x4000, 0xbf1: 0x4000, 0xbf2: 0x4000, 0xbf3: 0x4000, 0xbf4: 0x4000, 0xbf5: 0x4000, - 0xbf6: 0x4000, 0xbf7: 0x4000, 0xbf8: 0x4000, 0xbf9: 0x4000, 0xbfa: 0x4000, 0xbfb: 0x4000, - 0xbfc: 0x4000, 0xbfd: 0x4000, 0xbfe: 0x4000, 0xbff: 0x4000, - // Block 0x30, offset 0xc00 - 0xc00: 0x4000, 0xc01: 0x4000, 0xc02: 0x4000, 0xc03: 0x4000, 0xc04: 0x4000, 0xc05: 0x4000, - 0xc06: 0x4000, 0xc07: 0x4000, 0xc08: 0x4000, 0xc09: 0x4000, 0xc0a: 0x4000, 0xc0b: 0x4000, - 0xc0c: 0x4000, 0xc0d: 0x4000, 0xc0e: 0x4000, 0xc0f: 0x4000, 0xc10: 0x4000, 0xc11: 0x4000, - 0xc12: 0x4000, 0xc13: 0x4000, 0xc14: 0x4000, 0xc15: 0x4000, 0xc16: 0x4000, 0xc17: 0x4000, - 0xc18: 0x4000, 0xc19: 0x4000, 0xc1a: 0x4000, 0xc1b: 0x4000, 0xc1c: 0x4000, 0xc1d: 0x4000, - 0xc1e: 0x4000, 0xc1f: 0x4000, 0xc20: 0x4000, 0xc21: 0x4000, 0xc22: 0x4000, 0xc23: 0x4000, - 0xc24: 0x4000, 0xc25: 0x4000, 0xc26: 0x4000, 0xc27: 0x4000, 0xc28: 0x4000, 0xc29: 0x4000, - 0xc2a: 0x4000, 0xc2b: 0x4000, 0xc2c: 0x4000, 0xc2d: 0x4000, 0xc2e: 0x4000, 0xc2f: 0x4000, - 0xc30: 0x4000, 0xc31: 0x4000, 0xc32: 0x4000, 0xc33: 0x4000, - // Block 0x31, offset 0xc40 - 0xc40: 0x4000, 0xc41: 0x4000, 0xc42: 0x4000, 0xc43: 0x4000, 0xc44: 0x4000, 0xc45: 0x4000, - 0xc46: 0x4000, 0xc47: 0x4000, 0xc48: 0x4000, 0xc49: 0x4000, 0xc4a: 0x4000, 0xc4b: 0x4000, - 0xc4c: 0x4000, 0xc4d: 0x4000, 0xc4e: 0x4000, 0xc4f: 0x4000, 0xc50: 0x4000, 0xc51: 0x4000, - 0xc52: 0x4000, 0xc53: 0x4000, 0xc54: 0x4000, 0xc55: 0x4000, - 0xc70: 0x4000, 0xc71: 0x4000, 0xc72: 0x4000, 0xc73: 0x4000, 0xc74: 0x4000, 0xc75: 0x4000, - 0xc76: 0x4000, 0xc77: 0x4000, 0xc78: 0x4000, 0xc79: 0x4000, 0xc7a: 0x4000, 0xc7b: 0x4000, - // Block 0x32, offset 0xc80 - 0xc80: 0x9012, 0xc81: 0x4013, 0xc82: 0x4014, 0xc83: 0x4000, 0xc84: 0x4000, 0xc85: 0x4000, - 0xc86: 0x4000, 0xc87: 0x4000, 0xc88: 0x4000, 0xc89: 0x4000, 0xc8a: 0x4000, 0xc8b: 0x4000, - 0xc8c: 0x4015, 0xc8d: 0x4015, 0xc8e: 0x4000, 0xc8f: 0x4000, 0xc90: 0x4000, 0xc91: 0x4000, - 0xc92: 0x4000, 0xc93: 0x4000, 0xc94: 0x4000, 0xc95: 0x4000, 0xc96: 0x4000, 0xc97: 0x4000, - 0xc98: 0x4000, 0xc99: 0x4000, 0xc9a: 0x4000, 0xc9b: 0x4000, 0xc9c: 0x4000, 0xc9d: 0x4000, - 0xc9e: 0x4000, 0xc9f: 0x4000, 0xca0: 0x4000, 0xca1: 0x4000, 0xca2: 0x4000, 0xca3: 0x4000, - 0xca4: 0x4000, 0xca5: 0x4000, 0xca6: 0x4000, 0xca7: 0x4000, 0xca8: 0x4000, 0xca9: 0x4000, - 0xcaa: 0x4000, 0xcab: 0x4000, 0xcac: 0x4000, 0xcad: 0x4000, 0xcae: 0x4000, 0xcaf: 0x4000, - 0xcb0: 0x4000, 0xcb1: 0x4000, 0xcb2: 0x4000, 0xcb3: 0x4000, 0xcb4: 0x4000, 0xcb5: 0x4000, - 0xcb6: 0x4000, 0xcb7: 0x4000, 0xcb8: 0x4000, 0xcb9: 0x4000, 0xcba: 0x4000, 0xcbb: 0x4000, - 0xcbc: 0x4000, 0xcbd: 0x4000, 0xcbe: 0x4000, - // Block 0x33, offset 0xcc0 - 0xcc1: 0x4000, 0xcc2: 0x4000, 0xcc3: 0x4000, 0xcc4: 0x4000, 0xcc5: 0x4000, - 0xcc6: 0x4000, 0xcc7: 0x4000, 0xcc8: 0x4000, 0xcc9: 0x4000, 0xcca: 0x4000, 0xccb: 0x4000, - 0xccc: 0x4000, 0xccd: 0x4000, 0xcce: 0x4000, 0xccf: 0x4000, 0xcd0: 0x4000, 0xcd1: 0x4000, - 0xcd2: 0x4000, 0xcd3: 0x4000, 0xcd4: 0x4000, 0xcd5: 0x4000, 0xcd6: 0x4000, 0xcd7: 0x4000, - 0xcd8: 0x4000, 0xcd9: 0x4000, 0xcda: 0x4000, 0xcdb: 0x4000, 0xcdc: 0x4000, 0xcdd: 0x4000, - 0xcde: 0x4000, 0xcdf: 0x4000, 0xce0: 0x4000, 0xce1: 0x4000, 0xce2: 0x4000, 0xce3: 0x4000, - 0xce4: 0x4000, 0xce5: 0x4000, 0xce6: 0x4000, 0xce7: 0x4000, 0xce8: 0x4000, 0xce9: 0x4000, - 0xcea: 0x4000, 0xceb: 0x4000, 0xcec: 0x4000, 0xced: 0x4000, 0xcee: 0x4000, 0xcef: 0x4000, - 0xcf0: 0x4000, 0xcf1: 0x4000, 0xcf2: 0x4000, 0xcf3: 0x4000, 0xcf4: 0x4000, 0xcf5: 0x4000, - 0xcf6: 0x4000, 0xcf7: 0x4000, 0xcf8: 0x4000, 0xcf9: 0x4000, 0xcfa: 0x4000, 0xcfb: 0x4000, - 0xcfc: 0x4000, 0xcfd: 0x4000, 0xcfe: 0x4000, 0xcff: 0x4000, - // Block 0x34, offset 0xd00 - 0xd00: 0x4000, 0xd01: 0x4000, 0xd02: 0x4000, 0xd03: 0x4000, 0xd04: 0x4000, 0xd05: 0x4000, - 0xd06: 0x4000, 0xd07: 0x4000, 0xd08: 0x4000, 0xd09: 0x4000, 0xd0a: 0x4000, 0xd0b: 0x4000, - 0xd0c: 0x4000, 0xd0d: 0x4000, 0xd0e: 0x4000, 0xd0f: 0x4000, 0xd10: 0x4000, 0xd11: 0x4000, - 0xd12: 0x4000, 0xd13: 0x4000, 0xd14: 0x4000, 0xd15: 0x4000, 0xd16: 0x4000, - 0xd19: 0x4016, 0xd1a: 0x4017, 0xd1b: 0x4000, 0xd1c: 0x4000, 0xd1d: 0x4000, - 0xd1e: 0x4000, 0xd1f: 0x4000, 0xd20: 0x4000, 0xd21: 0x4018, 0xd22: 0x4019, 0xd23: 0x401a, - 0xd24: 0x401b, 0xd25: 0x401c, 0xd26: 0x401d, 0xd27: 0x401e, 0xd28: 0x401f, 0xd29: 0x4020, - 0xd2a: 0x4021, 0xd2b: 0x4022, 0xd2c: 0x4000, 0xd2d: 0x4010, 0xd2e: 0x4000, 0xd2f: 0x4023, - 0xd30: 0x4000, 0xd31: 0x4024, 0xd32: 0x4000, 0xd33: 0x4025, 0xd34: 0x4000, 0xd35: 0x4026, - 0xd36: 0x4000, 0xd37: 0x401a, 0xd38: 0x4000, 0xd39: 0x4027, 0xd3a: 0x4000, 0xd3b: 0x4028, - 0xd3c: 0x4000, 0xd3d: 0x4020, 0xd3e: 0x4000, 0xd3f: 0x4029, - // Block 0x35, offset 0xd40 - 0xd40: 0x4000, 0xd41: 0x402a, 0xd42: 0x4000, 0xd43: 0x402b, 0xd44: 0x402c, 0xd45: 0x4000, - 0xd46: 0x4017, 0xd47: 0x4000, 0xd48: 0x402d, 0xd49: 0x4000, 0xd4a: 0x402e, 0xd4b: 0x402f, - 0xd4c: 0x4030, 0xd4d: 0x4017, 0xd4e: 0x4016, 0xd4f: 0x4017, 0xd50: 0x4000, 0xd51: 0x4000, - 0xd52: 0x4031, 0xd53: 0x4000, 0xd54: 0x4000, 0xd55: 0x4031, 0xd56: 0x4000, 0xd57: 0x4000, - 0xd58: 0x4032, 0xd59: 0x4000, 0xd5a: 0x4000, 0xd5b: 0x4032, 0xd5c: 0x4000, 0xd5d: 0x4000, - 0xd5e: 0x4033, 0xd5f: 0x402e, 0xd60: 0x4034, 0xd61: 0x4035, 0xd62: 0x4034, 0xd63: 0x4036, - 0xd64: 0x4037, 0xd65: 0x4024, 0xd66: 0x4035, 0xd67: 0x4025, 0xd68: 0x4038, 0xd69: 0x4038, - 0xd6a: 0x4039, 0xd6b: 0x4039, 0xd6c: 0x403a, 0xd6d: 0x403a, 0xd6e: 0x4000, 0xd6f: 0x4035, - 0xd70: 0x4000, 0xd71: 0x4000, 0xd72: 0x403b, 0xd73: 0x403c, 0xd74: 0x4000, 0xd75: 0x4000, - 0xd76: 0x4000, 0xd77: 0x4000, 0xd78: 0x4000, 0xd79: 0x4000, 0xd7a: 0x4000, 0xd7b: 0x403d, - 0xd7c: 0x401c, 0xd7d: 0x4000, 0xd7e: 0x4000, 0xd7f: 0x4000, - // Block 0x36, offset 0xd80 - 0xd85: 0x4000, - 0xd86: 0x4000, 0xd87: 0x4000, 0xd88: 0x4000, 0xd89: 0x4000, 0xd8a: 0x4000, 0xd8b: 0x4000, - 0xd8c: 0x4000, 0xd8d: 0x4000, 0xd8e: 0x4000, 0xd8f: 0x4000, 0xd90: 0x4000, 0xd91: 0x4000, - 0xd92: 0x4000, 0xd93: 0x4000, 0xd94: 0x4000, 0xd95: 0x4000, 0xd96: 0x4000, 0xd97: 0x4000, - 0xd98: 0x4000, 0xd99: 0x4000, 0xd9a: 0x4000, 0xd9b: 0x4000, 0xd9c: 0x4000, 0xd9d: 0x4000, - 0xd9e: 0x4000, 0xd9f: 0x4000, 0xda0: 0x4000, 0xda1: 0x4000, 0xda2: 0x4000, 0xda3: 0x4000, - 0xda4: 0x4000, 0xda5: 0x4000, 0xda6: 0x4000, 0xda7: 0x4000, 0xda8: 0x4000, 0xda9: 0x4000, - 0xdaa: 0x4000, 0xdab: 0x4000, 0xdac: 0x4000, 0xdad: 0x4000, - 0xdb1: 0x403e, 0xdb2: 0x403e, 0xdb3: 0x403e, 0xdb4: 0x403e, 0xdb5: 0x403e, - 0xdb6: 0x403e, 0xdb7: 0x403e, 0xdb8: 0x403e, 0xdb9: 0x403e, 0xdba: 0x403e, 0xdbb: 0x403e, - 0xdbc: 0x403e, 0xdbd: 0x403e, 0xdbe: 0x403e, 0xdbf: 0x403e, - // Block 0x37, offset 0xdc0 - 0xdc0: 0x4037, 0xdc1: 0x4037, 0xdc2: 0x4037, 0xdc3: 0x4037, 0xdc4: 0x4037, 0xdc5: 0x4037, - 0xdc6: 0x4037, 0xdc7: 0x4037, 0xdc8: 0x4037, 0xdc9: 0x4037, 0xdca: 0x4037, 0xdcb: 0x4037, - 0xdcc: 0x4037, 0xdcd: 0x4037, 0xdce: 0x4037, 0xdcf: 0x400e, 0xdd0: 0x403f, 0xdd1: 0x4040, - 0xdd2: 0x4041, 0xdd3: 0x4040, 0xdd4: 0x403f, 0xdd5: 0x4042, 0xdd6: 0x4043, 0xdd7: 0x4044, - 0xdd8: 0x4040, 0xdd9: 0x4041, 0xdda: 0x4040, 0xddb: 0x4045, 0xddc: 0x4009, 0xddd: 0x4045, - 0xdde: 0x4046, 0xddf: 0x4045, 0xde0: 0x4047, 0xde1: 0x400b, 0xde2: 0x400a, 0xde3: 0x400c, - 0xde4: 0x4048, 0xde5: 0x4000, 0xde6: 0x4000, 0xde7: 0x4000, 0xde8: 0x4000, 0xde9: 0x4000, - 0xdea: 0x4000, 0xdeb: 0x4000, 0xdec: 0x4000, 0xded: 0x4000, 0xdee: 0x4000, 0xdef: 0x4000, - 0xdf0: 0x4000, 0xdf1: 0x4000, 0xdf2: 0x4000, 0xdf3: 0x4000, 0xdf4: 0x4000, 0xdf5: 0x4000, - 0xdf6: 0x4000, 0xdf7: 0x4000, 0xdf8: 0x4000, 0xdf9: 0x4000, 0xdfa: 0x4000, 0xdfb: 0x4000, - 0xdfc: 0x4000, 0xdfd: 0x4000, 0xdfe: 0x4000, 0xdff: 0x4000, - // Block 0x38, offset 0xe00 - 0xe00: 0x4000, 0xe01: 0x4000, 0xe02: 0x4000, 0xe03: 0x4000, 0xe04: 0x4000, 0xe05: 0x4000, - 0xe06: 0x4000, 0xe07: 0x4000, 0xe08: 0x4000, 0xe09: 0x4000, 0xe0a: 0x4000, 0xe0b: 0x4000, - 0xe0c: 0x4000, 0xe0d: 0x4000, 0xe0e: 0x4000, 0xe10: 0x4000, 0xe11: 0x4000, - 0xe12: 0x4000, 0xe13: 0x4000, 0xe14: 0x4000, 0xe15: 0x4000, 0xe16: 0x4000, 0xe17: 0x4000, - 0xe18: 0x4000, 0xe19: 0x4000, 0xe1a: 0x4000, 0xe1b: 0x4000, 0xe1c: 0x4000, 0xe1d: 0x4000, - 0xe1e: 0x4000, 0xe1f: 0x4000, 0xe20: 0x4000, 0xe21: 0x4000, 0xe22: 0x4000, 0xe23: 0x4000, - 0xe24: 0x4000, 0xe25: 0x4000, 0xe26: 0x4000, 0xe27: 0x4000, 0xe28: 0x4000, 0xe29: 0x4000, - 0xe2a: 0x4000, 0xe2b: 0x4000, 0xe2c: 0x4000, 0xe2d: 0x4000, 0xe2e: 0x4000, 0xe2f: 0x4000, - 0xe30: 0x4000, 0xe31: 0x4000, 0xe32: 0x4000, 0xe33: 0x4000, 0xe34: 0x4000, 0xe35: 0x4000, - 0xe36: 0x4000, 0xe37: 0x4000, 0xe38: 0x4000, 0xe39: 0x4000, 0xe3a: 0x4000, - // Block 0x39, offset 0xe40 - 0xe40: 0x4000, 0xe41: 0x4000, 0xe42: 0x4000, 0xe43: 0x4000, 0xe44: 0x4000, 0xe45: 0x4000, - 0xe46: 0x4000, 0xe47: 0x4000, 0xe48: 0x4000, 0xe49: 0x4000, 0xe4a: 0x4000, 0xe4b: 0x4000, - 0xe4c: 0x4000, 0xe4d: 0x4000, 0xe4e: 0x4000, 0xe4f: 0x4000, 0xe50: 0x4000, 0xe51: 0x4000, - 0xe52: 0x4000, 0xe53: 0x4000, 0xe54: 0x4000, 0xe55: 0x4000, 0xe56: 0x4000, 0xe57: 0x4000, - 0xe58: 0x4000, 0xe59: 0x4000, 0xe5a: 0x4000, 0xe5b: 0x4000, 0xe5c: 0x4000, 0xe5d: 0x4000, - 0xe5e: 0x4000, 0xe5f: 0x4000, 0xe60: 0x4000, 0xe61: 0x4000, 0xe62: 0x4000, 0xe63: 0x4000, - 0xe70: 0x4000, 0xe71: 0x4000, 0xe72: 0x4000, 0xe73: 0x4000, 0xe74: 0x4000, 0xe75: 0x4000, - 0xe76: 0x4000, 0xe77: 0x4000, 0xe78: 0x4000, 0xe79: 0x4000, 0xe7a: 0x4000, 0xe7b: 0x4000, - 0xe7c: 0x4000, 0xe7d: 0x4000, 0xe7e: 0x4000, 0xe7f: 0x4000, - // Block 0x3a, offset 0xe80 - 0xe80: 0x4000, 0xe81: 0x4000, 0xe82: 0x4000, 0xe83: 0x4000, 0xe84: 0x4000, 0xe85: 0x4000, - 0xe86: 0x4000, 0xe87: 0x4000, 0xe88: 0x4000, 0xe89: 0x4000, 0xe8a: 0x4000, 0xe8b: 0x4000, - 0xe8c: 0x4000, 0xe8d: 0x4000, 0xe8e: 0x4000, 0xe8f: 0x4000, 0xe90: 0x4000, 0xe91: 0x4000, - 0xe92: 0x4000, 0xe93: 0x4000, 0xe94: 0x4000, 0xe95: 0x4000, 0xe96: 0x4000, 0xe97: 0x4000, - 0xe98: 0x4000, 0xe99: 0x4000, 0xe9a: 0x4000, 0xe9b: 0x4000, 0xe9c: 0x4000, 0xe9d: 0x4000, - 0xe9e: 0x4000, 0xea0: 0x4000, 0xea1: 0x4000, 0xea2: 0x4000, 0xea3: 0x4000, - 0xea4: 0x4000, 0xea5: 0x4000, 0xea6: 0x4000, 0xea7: 0x4000, 0xea8: 0x4000, 0xea9: 0x4000, - 0xeaa: 0x4000, 0xeab: 0x4000, 0xeac: 0x4000, 0xead: 0x4000, 0xeae: 0x4000, 0xeaf: 0x4000, - 0xeb0: 0x4000, 0xeb1: 0x4000, 0xeb2: 0x4000, 0xeb3: 0x4000, 0xeb4: 0x4000, 0xeb5: 0x4000, - 0xeb6: 0x4000, 0xeb7: 0x4000, 0xeb8: 0x4000, 0xeb9: 0x4000, 0xeba: 0x4000, 0xebb: 0x4000, - 0xebc: 0x4000, 0xebd: 0x4000, 0xebe: 0x4000, 0xebf: 0x4000, - // Block 0x3b, offset 0xec0 - 0xec0: 0x4000, 0xec1: 0x4000, 0xec2: 0x4000, 0xec3: 0x4000, 0xec4: 0x4000, 0xec5: 0x4000, - 0xec6: 0x4000, 0xec7: 0x4000, 0xec8: 0x2000, 0xec9: 0x2000, 0xeca: 0x2000, 0xecb: 0x2000, - 0xecc: 0x2000, 0xecd: 0x2000, 0xece: 0x2000, 0xecf: 0x2000, 0xed0: 0x4000, 0xed1: 0x4000, - 0xed2: 0x4000, 0xed3: 0x4000, 0xed4: 0x4000, 0xed5: 0x4000, 0xed6: 0x4000, 0xed7: 0x4000, - 0xed8: 0x4000, 0xed9: 0x4000, 0xeda: 0x4000, 0xedb: 0x4000, 0xedc: 0x4000, 0xedd: 0x4000, - 0xede: 0x4000, 0xedf: 0x4000, 0xee0: 0x4000, 0xee1: 0x4000, 0xee2: 0x4000, 0xee3: 0x4000, - 0xee4: 0x4000, 0xee5: 0x4000, 0xee6: 0x4000, 0xee7: 0x4000, 0xee8: 0x4000, 0xee9: 0x4000, - 0xeea: 0x4000, 0xeeb: 0x4000, 0xeec: 0x4000, 0xeed: 0x4000, 0xeee: 0x4000, 0xeef: 0x4000, - 0xef0: 0x4000, 0xef1: 0x4000, 0xef2: 0x4000, 0xef3: 0x4000, 0xef4: 0x4000, 0xef5: 0x4000, - 0xef6: 0x4000, 0xef7: 0x4000, 0xef8: 0x4000, 0xef9: 0x4000, 0xefa: 0x4000, 0xefb: 0x4000, - 0xefc: 0x4000, 0xefd: 0x4000, 0xefe: 0x4000, 0xeff: 0x4000, - // Block 0x3c, offset 0xf00 - 0xf00: 0x4000, 0xf01: 0x4000, 0xf02: 0x4000, 0xf03: 0x4000, 0xf04: 0x4000, 0xf05: 0x4000, - 0xf06: 0x4000, 0xf07: 0x4000, 0xf08: 0x4000, 0xf09: 0x4000, 0xf0a: 0x4000, 0xf0b: 0x4000, - 0xf0c: 0x4000, 0xf0d: 0x4000, 0xf0e: 0x4000, 0xf0f: 0x4000, 0xf10: 0x4000, 0xf11: 0x4000, - 0xf12: 0x4000, 0xf13: 0x4000, 0xf14: 0x4000, 0xf15: 0x4000, 0xf16: 0x4000, 0xf17: 0x4000, - 0xf18: 0x4000, 0xf19: 0x4000, 0xf1a: 0x4000, 0xf1b: 0x4000, 0xf1c: 0x4000, 0xf1d: 0x4000, - 0xf1e: 0x4000, 0xf1f: 0x4000, 0xf20: 0x4000, 0xf21: 0x4000, 0xf22: 0x4000, 0xf23: 0x4000, - 0xf24: 0x4000, 0xf25: 0x4000, 0xf26: 0x4000, 0xf27: 0x4000, 0xf28: 0x4000, 0xf29: 0x4000, - 0xf2a: 0x4000, 0xf2b: 0x4000, 0xf2c: 0x4000, 0xf2d: 0x4000, 0xf2e: 0x4000, 0xf2f: 0x4000, - 0xf30: 0x4000, 0xf31: 0x4000, 0xf32: 0x4000, 0xf33: 0x4000, 0xf34: 0x4000, 0xf35: 0x4000, - 0xf36: 0x4000, 0xf37: 0x4000, 0xf38: 0x4000, 0xf39: 0x4000, 0xf3a: 0x4000, 0xf3b: 0x4000, - 0xf3c: 0x4000, 0xf3d: 0x4000, 0xf3e: 0x4000, - // Block 0x3d, offset 0xf40 - 0xf40: 0x4000, 0xf41: 0x4000, 0xf42: 0x4000, 0xf43: 0x4000, 0xf44: 0x4000, 0xf45: 0x4000, - 0xf46: 0x4000, 0xf47: 0x4000, 0xf48: 0x4000, 0xf49: 0x4000, 0xf4a: 0x4000, 0xf4b: 0x4000, - 0xf4c: 0x4000, 0xf50: 0x4000, 0xf51: 0x4000, - 0xf52: 0x4000, 0xf53: 0x4000, 0xf54: 0x4000, 0xf55: 0x4000, 0xf56: 0x4000, 0xf57: 0x4000, - 0xf58: 0x4000, 0xf59: 0x4000, 0xf5a: 0x4000, 0xf5b: 0x4000, 0xf5c: 0x4000, 0xf5d: 0x4000, - 0xf5e: 0x4000, 0xf5f: 0x4000, 0xf60: 0x4000, 0xf61: 0x4000, 0xf62: 0x4000, 0xf63: 0x4000, - 0xf64: 0x4000, 0xf65: 0x4000, 0xf66: 0x4000, 0xf67: 0x4000, 0xf68: 0x4000, 0xf69: 0x4000, - 0xf6a: 0x4000, 0xf6b: 0x4000, 0xf6c: 0x4000, 0xf6d: 0x4000, 0xf6e: 0x4000, 0xf6f: 0x4000, - 0xf70: 0x4000, 0xf71: 0x4000, 0xf72: 0x4000, 0xf73: 0x4000, 0xf74: 0x4000, 0xf75: 0x4000, - 0xf76: 0x4000, 0xf77: 0x4000, 0xf78: 0x4000, 0xf79: 0x4000, 0xf7a: 0x4000, 0xf7b: 0x4000, - 0xf7c: 0x4000, 0xf7d: 0x4000, 0xf7e: 0x4000, 0xf7f: 0x4000, - // Block 0x3e, offset 0xf80 - 0xf80: 0x4000, 0xf81: 0x4000, 0xf82: 0x4000, 0xf83: 0x4000, 0xf84: 0x4000, 0xf85: 0x4000, - 0xf86: 0x4000, - // Block 0x3f, offset 0xfc0 - 0xfe0: 0x4000, 0xfe1: 0x4000, 0xfe2: 0x4000, 0xfe3: 0x4000, - 0xfe4: 0x4000, 0xfe5: 0x4000, 0xfe6: 0x4000, 0xfe7: 0x4000, 0xfe8: 0x4000, 0xfe9: 0x4000, - 0xfea: 0x4000, 0xfeb: 0x4000, 0xfec: 0x4000, 0xfed: 0x4000, 0xfee: 0x4000, 0xfef: 0x4000, - 0xff0: 0x4000, 0xff1: 0x4000, 0xff2: 0x4000, 0xff3: 0x4000, 0xff4: 0x4000, 0xff5: 0x4000, - 0xff6: 0x4000, 0xff7: 0x4000, 0xff8: 0x4000, 0xff9: 0x4000, 0xffa: 0x4000, 0xffb: 0x4000, - 0xffc: 0x4000, - // Block 0x40, offset 0x1000 - 0x1000: 0x4000, 0x1001: 0x4000, 0x1002: 0x4000, 0x1003: 0x4000, 0x1004: 0x4000, 0x1005: 0x4000, - 0x1006: 0x4000, 0x1007: 0x4000, 0x1008: 0x4000, 0x1009: 0x4000, 0x100a: 0x4000, 0x100b: 0x4000, - 0x100c: 0x4000, 0x100d: 0x4000, 0x100e: 0x4000, 0x100f: 0x4000, 0x1010: 0x4000, 0x1011: 0x4000, - 0x1012: 0x4000, 0x1013: 0x4000, 0x1014: 0x4000, 0x1015: 0x4000, 0x1016: 0x4000, 0x1017: 0x4000, - 0x1018: 0x4000, 0x1019: 0x4000, 0x101a: 0x4000, 0x101b: 0x4000, 0x101c: 0x4000, 0x101d: 0x4000, - 0x101e: 0x4000, 0x101f: 0x4000, 0x1020: 0x4000, 0x1021: 0x4000, 0x1022: 0x4000, 0x1023: 0x4000, - // Block 0x41, offset 0x1040 - 0x1040: 0x2000, 0x1041: 0x2000, 0x1042: 0x2000, 0x1043: 0x2000, 0x1044: 0x2000, 0x1045: 0x2000, - 0x1046: 0x2000, 0x1047: 0x2000, 0x1048: 0x2000, 0x1049: 0x2000, 0x104a: 0x2000, 0x104b: 0x2000, - 0x104c: 0x2000, 0x104d: 0x2000, 0x104e: 0x2000, 0x104f: 0x2000, 0x1050: 0x4000, 0x1051: 0x4000, - 0x1052: 0x4000, 0x1053: 0x4000, 0x1054: 0x4000, 0x1055: 0x4000, 0x1056: 0x4000, 0x1057: 0x4000, - 0x1058: 0x4000, 0x1059: 0x4000, - 0x1070: 0x4000, 0x1071: 0x4000, 0x1072: 0x4000, 0x1073: 0x4000, 0x1074: 0x4000, 0x1075: 0x4000, - 0x1076: 0x4000, 0x1077: 0x4000, 0x1078: 0x4000, 0x1079: 0x4000, 0x107a: 0x4000, 0x107b: 0x4000, - 0x107c: 0x4000, 0x107d: 0x4000, 0x107e: 0x4000, 0x107f: 0x4000, - // Block 0x42, offset 0x1080 - 0x1080: 0x4000, 0x1081: 0x4000, 0x1082: 0x4000, 0x1083: 0x4000, 0x1084: 0x4000, 0x1085: 0x4000, - 0x1086: 0x4000, 0x1087: 0x4000, 0x1088: 0x4000, 0x1089: 0x4000, 0x108a: 0x4000, 0x108b: 0x4000, - 0x108c: 0x4000, 0x108d: 0x4000, 0x108e: 0x4000, 0x108f: 0x4000, 0x1090: 0x4000, 0x1091: 0x4000, - 0x1092: 0x4000, 0x1094: 0x4000, 0x1095: 0x4000, 0x1096: 0x4000, 0x1097: 0x4000, - 0x1098: 0x4000, 0x1099: 0x4000, 0x109a: 0x4000, 0x109b: 0x4000, 0x109c: 0x4000, 0x109d: 0x4000, - 0x109e: 0x4000, 0x109f: 0x4000, 0x10a0: 0x4000, 0x10a1: 0x4000, 0x10a2: 0x4000, 0x10a3: 0x4000, - 0x10a4: 0x4000, 0x10a5: 0x4000, 0x10a6: 0x4000, 0x10a8: 0x4000, 0x10a9: 0x4000, - 0x10aa: 0x4000, 0x10ab: 0x4000, - // Block 0x43, offset 0x10c0 - 0x10c1: 0x9012, 0x10c2: 0x9012, 0x10c3: 0x9012, 0x10c4: 0x9012, 0x10c5: 0x9012, - 0x10c6: 0x9012, 0x10c7: 0x9012, 0x10c8: 0x9012, 0x10c9: 0x9012, 0x10ca: 0x9012, 0x10cb: 0x9012, - 0x10cc: 0x9012, 0x10cd: 0x9012, 0x10ce: 0x9012, 0x10cf: 0x9012, 0x10d0: 0x9012, 0x10d1: 0x9012, - 0x10d2: 0x9012, 0x10d3: 0x9012, 0x10d4: 0x9012, 0x10d5: 0x9012, 0x10d6: 0x9012, 0x10d7: 0x9012, - 0x10d8: 0x9012, 0x10d9: 0x9012, 0x10da: 0x9012, 0x10db: 0x9012, 0x10dc: 0x9012, 0x10dd: 0x9012, - 0x10de: 0x9012, 0x10df: 0x9012, 0x10e0: 0x9049, 0x10e1: 0x9049, 0x10e2: 0x9049, 0x10e3: 0x9049, - 0x10e4: 0x9049, 0x10e5: 0x9049, 0x10e6: 0x9049, 0x10e7: 0x9049, 0x10e8: 0x9049, 0x10e9: 0x9049, - 0x10ea: 0x9049, 0x10eb: 0x9049, 0x10ec: 0x9049, 0x10ed: 0x9049, 0x10ee: 0x9049, 0x10ef: 0x9049, - 0x10f0: 0x9049, 0x10f1: 0x9049, 0x10f2: 0x9049, 0x10f3: 0x9049, 0x10f4: 0x9049, 0x10f5: 0x9049, - 0x10f6: 0x9049, 0x10f7: 0x9049, 0x10f8: 0x9049, 0x10f9: 0x9049, 0x10fa: 0x9049, 0x10fb: 0x9049, - 0x10fc: 0x9049, 0x10fd: 0x9049, 0x10fe: 0x9049, 0x10ff: 0x9049, - // Block 0x44, offset 0x1100 - 0x1100: 0x9049, 0x1101: 0x9049, 0x1102: 0x9049, 0x1103: 0x9049, 0x1104: 0x9049, 0x1105: 0x9049, - 0x1106: 0x9049, 0x1107: 0x9049, 0x1108: 0x9049, 0x1109: 0x9049, 0x110a: 0x9049, 0x110b: 0x9049, - 0x110c: 0x9049, 0x110d: 0x9049, 0x110e: 0x9049, 0x110f: 0x9049, 0x1110: 0x9049, 0x1111: 0x9049, - 0x1112: 0x9049, 0x1113: 0x9049, 0x1114: 0x9049, 0x1115: 0x9049, 0x1116: 0x9049, 0x1117: 0x9049, - 0x1118: 0x9049, 0x1119: 0x9049, 0x111a: 0x9049, 0x111b: 0x9049, 0x111c: 0x9049, 0x111d: 0x9049, - 0x111e: 0x9049, 0x111f: 0x904a, 0x1120: 0x904b, 0x1121: 0xb04c, 0x1122: 0xb04d, 0x1123: 0xb04d, - 0x1124: 0xb04e, 0x1125: 0xb04f, 0x1126: 0xb050, 0x1127: 0xb051, 0x1128: 0xb052, 0x1129: 0xb053, - 0x112a: 0xb054, 0x112b: 0xb055, 0x112c: 0xb056, 0x112d: 0xb057, 0x112e: 0xb058, 0x112f: 0xb059, - 0x1130: 0xb05a, 0x1131: 0xb05b, 0x1132: 0xb05c, 0x1133: 0xb05d, 0x1134: 0xb05e, 0x1135: 0xb05f, - 0x1136: 0xb060, 0x1137: 0xb061, 0x1138: 0xb062, 0x1139: 0xb063, 0x113a: 0xb064, 0x113b: 0xb065, - 0x113c: 0xb052, 0x113d: 0xb066, 0x113e: 0xb067, 0x113f: 0xb055, - // Block 0x45, offset 0x1140 - 0x1140: 0xb068, 0x1141: 0xb069, 0x1142: 0xb06a, 0x1143: 0xb06b, 0x1144: 0xb05a, 0x1145: 0xb056, - 0x1146: 0xb06c, 0x1147: 0xb06d, 0x1148: 0xb06b, 0x1149: 0xb06e, 0x114a: 0xb06b, 0x114b: 0xb06f, - 0x114c: 0xb06f, 0x114d: 0xb070, 0x114e: 0xb070, 0x114f: 0xb071, 0x1150: 0xb056, 0x1151: 0xb072, - 0x1152: 0xb073, 0x1153: 0xb072, 0x1154: 0xb074, 0x1155: 0xb073, 0x1156: 0xb075, 0x1157: 0xb075, - 0x1158: 0xb076, 0x1159: 0xb076, 0x115a: 0xb077, 0x115b: 0xb077, 0x115c: 0xb073, 0x115d: 0xb078, - 0x115e: 0xb079, 0x115f: 0xb067, 0x1160: 0xb07a, 0x1161: 0xb07b, 0x1162: 0xb07b, 0x1163: 0xb07b, - 0x1164: 0xb07b, 0x1165: 0xb07b, 0x1166: 0xb07b, 0x1167: 0xb07b, 0x1168: 0xb07b, 0x1169: 0xb07b, - 0x116a: 0xb07b, 0x116b: 0xb07b, 0x116c: 0xb07b, 0x116d: 0xb07b, 0x116e: 0xb07b, 0x116f: 0xb07b, - 0x1170: 0xb07c, 0x1171: 0xb07c, 0x1172: 0xb07c, 0x1173: 0xb07c, 0x1174: 0xb07c, 0x1175: 0xb07c, - 0x1176: 0xb07c, 0x1177: 0xb07c, 0x1178: 0xb07c, 0x1179: 0xb07c, 0x117a: 0xb07c, 0x117b: 0xb07c, - 0x117c: 0xb07c, 0x117d: 0xb07c, 0x117e: 0xb07c, - // Block 0x46, offset 0x1180 - 0x1182: 0xb07d, 0x1183: 0xb07e, 0x1184: 0xb07f, 0x1185: 0xb080, - 0x1186: 0xb07f, 0x1187: 0xb07e, 0x118a: 0xb081, 0x118b: 0xb082, - 0x118c: 0xb083, 0x118d: 0xb07f, 0x118e: 0xb080, 0x118f: 0xb07f, - 0x1192: 0xb084, 0x1193: 0xb085, 0x1194: 0xb084, 0x1195: 0xb086, 0x1196: 0xb084, 0x1197: 0xb087, - 0x119a: 0xb088, 0x119b: 0xb089, 0x119c: 0xb08a, - 0x11a0: 0x908b, 0x11a1: 0x908b, 0x11a2: 0x908c, 0x11a3: 0x908d, - 0x11a4: 0x908b, 0x11a5: 0x908e, 0x11a6: 0x908f, 0x11a8: 0xb090, 0x11a9: 0xb091, - 0x11aa: 0xb092, 0x11ab: 0xb091, 0x11ac: 0xb093, 0x11ad: 0xb094, 0x11ae: 0xb095, - 0x11bd: 0x2000, - // Block 0x47, offset 0x11c0 - 0x11e0: 0x4000, - // Block 0x48, offset 0x1200 - 0x1200: 0x4000, 0x1201: 0x4000, 0x1202: 0x4000, 0x1203: 0x4000, 0x1204: 0x4000, 0x1205: 0x4000, - 0x1206: 0x4000, 0x1207: 0x4000, 0x1208: 0x4000, 0x1209: 0x4000, 0x120a: 0x4000, 0x120b: 0x4000, - 0x120c: 0x4000, 0x120d: 0x4000, 0x120e: 0x4000, 0x120f: 0x4000, 0x1210: 0x4000, 0x1211: 0x4000, - 0x1212: 0x4000, 0x1213: 0x4000, 0x1214: 0x4000, 0x1215: 0x4000, 0x1216: 0x4000, 0x1217: 0x4000, - 0x1218: 0x4000, 0x1219: 0x4000, 0x121a: 0x4000, 0x121b: 0x4000, 0x121c: 0x4000, 0x121d: 0x4000, - 0x121e: 0x4000, 0x121f: 0x4000, 0x1220: 0x4000, 0x1221: 0x4000, 0x1222: 0x4000, 0x1223: 0x4000, - 0x1224: 0x4000, 0x1225: 0x4000, 0x1226: 0x4000, 0x1227: 0x4000, 0x1228: 0x4000, 0x1229: 0x4000, - 0x122a: 0x4000, 0x122b: 0x4000, 0x122c: 0x4000, - // Block 0x49, offset 0x1240 - 0x1240: 0x4000, 0x1241: 0x4000, 0x1242: 0x4000, 0x1243: 0x4000, 0x1244: 0x4000, 0x1245: 0x4000, - 0x1246: 0x4000, 0x1247: 0x4000, 0x1248: 0x4000, 0x1249: 0x4000, 0x124a: 0x4000, 0x124b: 0x4000, - 0x124c: 0x4000, 0x124d: 0x4000, 0x124e: 0x4000, 0x124f: 0x4000, 0x1250: 0x4000, 0x1251: 0x4000, - 0x1252: 0x4000, 0x1253: 0x4000, 0x1254: 0x4000, 0x1255: 0x4000, 0x1256: 0x4000, 0x1257: 0x4000, - 0x1258: 0x4000, 0x1259: 0x4000, 0x125a: 0x4000, 0x125b: 0x4000, 0x125c: 0x4000, 0x125d: 0x4000, - 0x125e: 0x4000, 0x125f: 0x4000, 0x1260: 0x4000, 0x1261: 0x4000, 0x1262: 0x4000, 0x1263: 0x4000, - 0x1264: 0x4000, 0x1265: 0x4000, 0x1266: 0x4000, 0x1267: 0x4000, 0x1268: 0x4000, 0x1269: 0x4000, - 0x126a: 0x4000, 0x126b: 0x4000, 0x126c: 0x4000, 0x126d: 0x4000, 0x126e: 0x4000, 0x126f: 0x4000, - 0x1270: 0x4000, 0x1271: 0x4000, 0x1272: 0x4000, - // Block 0x4a, offset 0x1280 - 0x1280: 0x4000, 0x1281: 0x4000, - // Block 0x4b, offset 0x12c0 - 0x12c4: 0x4000, - // Block 0x4c, offset 0x1300 - 0x130f: 0x4000, - // Block 0x4d, offset 0x1340 - 0x1340: 0x2000, 0x1341: 0x2000, 0x1342: 0x2000, 0x1343: 0x2000, 0x1344: 0x2000, 0x1345: 0x2000, - 0x1346: 0x2000, 0x1347: 0x2000, 0x1348: 0x2000, 0x1349: 0x2000, 0x134a: 0x2000, - 0x1350: 0x2000, 0x1351: 0x2000, - 0x1352: 0x2000, 0x1353: 0x2000, 0x1354: 0x2000, 0x1355: 0x2000, 0x1356: 0x2000, 0x1357: 0x2000, - 0x1358: 0x2000, 0x1359: 0x2000, 0x135a: 0x2000, 0x135b: 0x2000, 0x135c: 0x2000, 0x135d: 0x2000, - 0x135e: 0x2000, 0x135f: 0x2000, 0x1360: 0x2000, 0x1361: 0x2000, 0x1362: 0x2000, 0x1363: 0x2000, - 0x1364: 0x2000, 0x1365: 0x2000, 0x1366: 0x2000, 0x1367: 0x2000, 0x1368: 0x2000, 0x1369: 0x2000, - 0x136a: 0x2000, 0x136b: 0x2000, 0x136c: 0x2000, 0x136d: 0x2000, - 0x1370: 0x2000, 0x1371: 0x2000, 0x1372: 0x2000, 0x1373: 0x2000, 0x1374: 0x2000, 0x1375: 0x2000, - 0x1376: 0x2000, 0x1377: 0x2000, 0x1378: 0x2000, 0x1379: 0x2000, 0x137a: 0x2000, 0x137b: 0x2000, - 0x137c: 0x2000, 0x137d: 0x2000, 0x137e: 0x2000, 0x137f: 0x2000, - // Block 0x4e, offset 0x1380 - 0x1380: 0x2000, 0x1381: 0x2000, 0x1382: 0x2000, 0x1383: 0x2000, 0x1384: 0x2000, 0x1385: 0x2000, - 0x1386: 0x2000, 0x1387: 0x2000, 0x1388: 0x2000, 0x1389: 0x2000, 0x138a: 0x2000, 0x138b: 0x2000, - 0x138c: 0x2000, 0x138d: 0x2000, 0x138e: 0x2000, 0x138f: 0x2000, 0x1390: 0x2000, 0x1391: 0x2000, - 0x1392: 0x2000, 0x1393: 0x2000, 0x1394: 0x2000, 0x1395: 0x2000, 0x1396: 0x2000, 0x1397: 0x2000, - 0x1398: 0x2000, 0x1399: 0x2000, 0x139a: 0x2000, 0x139b: 0x2000, 0x139c: 0x2000, 0x139d: 0x2000, - 0x139e: 0x2000, 0x139f: 0x2000, 0x13a0: 0x2000, 0x13a1: 0x2000, 0x13a2: 0x2000, 0x13a3: 0x2000, - 0x13a4: 0x2000, 0x13a5: 0x2000, 0x13a6: 0x2000, 0x13a7: 0x2000, 0x13a8: 0x2000, 0x13a9: 0x2000, - 0x13b0: 0x2000, 0x13b1: 0x2000, 0x13b2: 0x2000, 0x13b3: 0x2000, 0x13b4: 0x2000, 0x13b5: 0x2000, - 0x13b6: 0x2000, 0x13b7: 0x2000, 0x13b8: 0x2000, 0x13b9: 0x2000, 0x13ba: 0x2000, 0x13bb: 0x2000, - 0x13bc: 0x2000, 0x13bd: 0x2000, 0x13be: 0x2000, 0x13bf: 0x2000, - // Block 0x4f, offset 0x13c0 - 0x13c0: 0x2000, 0x13c1: 0x2000, 0x13c2: 0x2000, 0x13c3: 0x2000, 0x13c4: 0x2000, 0x13c5: 0x2000, - 0x13c6: 0x2000, 0x13c7: 0x2000, 0x13c8: 0x2000, 0x13c9: 0x2000, 0x13ca: 0x2000, 0x13cb: 0x2000, - 0x13cc: 0x2000, 0x13cd: 0x2000, 0x13ce: 0x4000, 0x13cf: 0x2000, 0x13d0: 0x2000, 0x13d1: 0x4000, - 0x13d2: 0x4000, 0x13d3: 0x4000, 0x13d4: 0x4000, 0x13d5: 0x4000, 0x13d6: 0x4000, 0x13d7: 0x4000, - 0x13d8: 0x4000, 0x13d9: 0x4000, 0x13da: 0x4000, 0x13db: 0x2000, 0x13dc: 0x2000, 0x13dd: 0x2000, - 0x13de: 0x2000, 0x13df: 0x2000, 0x13e0: 0x2000, 0x13e1: 0x2000, 0x13e2: 0x2000, 0x13e3: 0x2000, - 0x13e4: 0x2000, 0x13e5: 0x2000, 0x13e6: 0x2000, 0x13e7: 0x2000, 0x13e8: 0x2000, 0x13e9: 0x2000, - 0x13ea: 0x2000, 0x13eb: 0x2000, 0x13ec: 0x2000, - // Block 0x50, offset 0x1400 - 0x1400: 0x4000, 0x1401: 0x4000, 0x1402: 0x4000, - 0x1410: 0x4000, 0x1411: 0x4000, - 0x1412: 0x4000, 0x1413: 0x4000, 0x1414: 0x4000, 0x1415: 0x4000, 0x1416: 0x4000, 0x1417: 0x4000, - 0x1418: 0x4000, 0x1419: 0x4000, 0x141a: 0x4000, 0x141b: 0x4000, 0x141c: 0x4000, 0x141d: 0x4000, - 0x141e: 0x4000, 0x141f: 0x4000, 0x1420: 0x4000, 0x1421: 0x4000, 0x1422: 0x4000, 0x1423: 0x4000, - 0x1424: 0x4000, 0x1425: 0x4000, 0x1426: 0x4000, 0x1427: 0x4000, 0x1428: 0x4000, 0x1429: 0x4000, - 0x142a: 0x4000, 0x142b: 0x4000, 0x142c: 0x4000, 0x142d: 0x4000, 0x142e: 0x4000, 0x142f: 0x4000, - 0x1430: 0x4000, 0x1431: 0x4000, 0x1432: 0x4000, 0x1433: 0x4000, 0x1434: 0x4000, 0x1435: 0x4000, - 0x1436: 0x4000, 0x1437: 0x4000, 0x1438: 0x4000, 0x1439: 0x4000, 0x143a: 0x4000, 0x143b: 0x4000, - // Block 0x51, offset 0x1440 - 0x1440: 0x4000, 0x1441: 0x4000, 0x1442: 0x4000, 0x1443: 0x4000, 0x1444: 0x4000, 0x1445: 0x4000, - 0x1446: 0x4000, 0x1447: 0x4000, 0x1448: 0x4000, - 0x1450: 0x4000, 0x1451: 0x4000, - // Block 0x52, offset 0x1480 - 0x1480: 0x4000, 0x1481: 0x4000, 0x1482: 0x4000, 0x1483: 0x4000, 0x1484: 0x4000, 0x1485: 0x4000, - 0x1486: 0x4000, 0x1487: 0x4000, 0x1488: 0x4000, 0x1489: 0x4000, 0x148a: 0x4000, 0x148b: 0x4000, - 0x148c: 0x4000, 0x148d: 0x4000, 0x148e: 0x4000, 0x148f: 0x4000, 0x1490: 0x4000, 0x1491: 0x4000, - 0x1492: 0x4000, 0x1493: 0x4000, 0x1494: 0x4000, 0x1495: 0x4000, 0x1496: 0x4000, 0x1497: 0x4000, - 0x1498: 0x4000, 0x1499: 0x4000, 0x149a: 0x4000, 0x149b: 0x4000, 0x149c: 0x4000, 0x149d: 0x4000, - 0x149e: 0x4000, 0x149f: 0x4000, 0x14a0: 0x4000, - 0x14ad: 0x4000, 0x14ae: 0x4000, 0x14af: 0x4000, - 0x14b0: 0x4000, 0x14b1: 0x4000, 0x14b2: 0x4000, 0x14b3: 0x4000, 0x14b4: 0x4000, 0x14b5: 0x4000, - 0x14b7: 0x4000, 0x14b8: 0x4000, 0x14b9: 0x4000, 0x14ba: 0x4000, 0x14bb: 0x4000, - 0x14bc: 0x4000, 0x14bd: 0x4000, 0x14be: 0x4000, 0x14bf: 0x4000, - // Block 0x53, offset 0x14c0 - 0x14c0: 0x4000, 0x14c1: 0x4000, 0x14c2: 0x4000, 0x14c3: 0x4000, 0x14c4: 0x4000, 0x14c5: 0x4000, - 0x14c6: 0x4000, 0x14c7: 0x4000, 0x14c8: 0x4000, 0x14c9: 0x4000, 0x14ca: 0x4000, 0x14cb: 0x4000, - 0x14cc: 0x4000, 0x14cd: 0x4000, 0x14ce: 0x4000, 0x14cf: 0x4000, 0x14d0: 0x4000, 0x14d1: 0x4000, - 0x14d2: 0x4000, 0x14d3: 0x4000, 0x14d4: 0x4000, 0x14d5: 0x4000, 0x14d6: 0x4000, 0x14d7: 0x4000, - 0x14d8: 0x4000, 0x14d9: 0x4000, 0x14da: 0x4000, 0x14db: 0x4000, 0x14dc: 0x4000, 0x14dd: 0x4000, - 0x14de: 0x4000, 0x14df: 0x4000, 0x14e0: 0x4000, 0x14e1: 0x4000, 0x14e2: 0x4000, 0x14e3: 0x4000, - 0x14e4: 0x4000, 0x14e5: 0x4000, 0x14e6: 0x4000, 0x14e7: 0x4000, 0x14e8: 0x4000, 0x14e9: 0x4000, - 0x14ea: 0x4000, 0x14eb: 0x4000, 0x14ec: 0x4000, 0x14ed: 0x4000, 0x14ee: 0x4000, 0x14ef: 0x4000, - 0x14f0: 0x4000, 0x14f1: 0x4000, 0x14f2: 0x4000, 0x14f3: 0x4000, 0x14f4: 0x4000, 0x14f5: 0x4000, - 0x14f6: 0x4000, 0x14f7: 0x4000, 0x14f8: 0x4000, 0x14f9: 0x4000, 0x14fa: 0x4000, 0x14fb: 0x4000, - 0x14fc: 0x4000, 0x14fe: 0x4000, 0x14ff: 0x4000, - // Block 0x54, offset 0x1500 - 0x1500: 0x4000, 0x1501: 0x4000, 0x1502: 0x4000, 0x1503: 0x4000, 0x1504: 0x4000, 0x1505: 0x4000, - 0x1506: 0x4000, 0x1507: 0x4000, 0x1508: 0x4000, 0x1509: 0x4000, 0x150a: 0x4000, 0x150b: 0x4000, - 0x150c: 0x4000, 0x150d: 0x4000, 0x150e: 0x4000, 0x150f: 0x4000, 0x1510: 0x4000, 0x1511: 0x4000, - 0x1512: 0x4000, 0x1513: 0x4000, - 0x1520: 0x4000, 0x1521: 0x4000, 0x1522: 0x4000, 0x1523: 0x4000, - 0x1524: 0x4000, 0x1525: 0x4000, 0x1526: 0x4000, 0x1527: 0x4000, 0x1528: 0x4000, 0x1529: 0x4000, - 0x152a: 0x4000, 0x152b: 0x4000, 0x152c: 0x4000, 0x152d: 0x4000, 0x152e: 0x4000, 0x152f: 0x4000, - 0x1530: 0x4000, 0x1531: 0x4000, 0x1532: 0x4000, 0x1533: 0x4000, 0x1534: 0x4000, 0x1535: 0x4000, - 0x1536: 0x4000, 0x1537: 0x4000, 0x1538: 0x4000, 0x1539: 0x4000, 0x153a: 0x4000, 0x153b: 0x4000, - 0x153c: 0x4000, 0x153d: 0x4000, 0x153e: 0x4000, 0x153f: 0x4000, - // Block 0x55, offset 0x1540 - 0x1540: 0x4000, 0x1541: 0x4000, 0x1542: 0x4000, 0x1543: 0x4000, 0x1544: 0x4000, 0x1545: 0x4000, - 0x1546: 0x4000, 0x1547: 0x4000, 0x1548: 0x4000, 0x1549: 0x4000, 0x154a: 0x4000, - 0x154f: 0x4000, 0x1550: 0x4000, 0x1551: 0x4000, - 0x1552: 0x4000, 0x1553: 0x4000, - 0x1560: 0x4000, 0x1561: 0x4000, 0x1562: 0x4000, 0x1563: 0x4000, - 0x1564: 0x4000, 0x1565: 0x4000, 0x1566: 0x4000, 0x1567: 0x4000, 0x1568: 0x4000, 0x1569: 0x4000, - 0x156a: 0x4000, 0x156b: 0x4000, 0x156c: 0x4000, 0x156d: 0x4000, 0x156e: 0x4000, 0x156f: 0x4000, - 0x1570: 0x4000, 0x1574: 0x4000, - 0x1578: 0x4000, 0x1579: 0x4000, 0x157a: 0x4000, 0x157b: 0x4000, - 0x157c: 0x4000, 0x157d: 0x4000, 0x157e: 0x4000, 0x157f: 0x4000, - // Block 0x56, offset 0x1580 - 0x1580: 0x4000, 0x1582: 0x4000, 0x1583: 0x4000, 0x1584: 0x4000, 0x1585: 0x4000, - 0x1586: 0x4000, 0x1587: 0x4000, 0x1588: 0x4000, 0x1589: 0x4000, 0x158a: 0x4000, 0x158b: 0x4000, - 0x158c: 0x4000, 0x158d: 0x4000, 0x158e: 0x4000, 0x158f: 0x4000, 0x1590: 0x4000, 0x1591: 0x4000, - 0x1592: 0x4000, 0x1593: 0x4000, 0x1594: 0x4000, 0x1595: 0x4000, 0x1596: 0x4000, 0x1597: 0x4000, - 0x1598: 0x4000, 0x1599: 0x4000, 0x159a: 0x4000, 0x159b: 0x4000, 0x159c: 0x4000, 0x159d: 0x4000, - 0x159e: 0x4000, 0x159f: 0x4000, 0x15a0: 0x4000, 0x15a1: 0x4000, 0x15a2: 0x4000, 0x15a3: 0x4000, - 0x15a4: 0x4000, 0x15a5: 0x4000, 0x15a6: 0x4000, 0x15a7: 0x4000, 0x15a8: 0x4000, 0x15a9: 0x4000, - 0x15aa: 0x4000, 0x15ab: 0x4000, 0x15ac: 0x4000, 0x15ad: 0x4000, 0x15ae: 0x4000, 0x15af: 0x4000, - 0x15b0: 0x4000, 0x15b1: 0x4000, 0x15b2: 0x4000, 0x15b3: 0x4000, 0x15b4: 0x4000, 0x15b5: 0x4000, - 0x15b6: 0x4000, 0x15b7: 0x4000, 0x15b8: 0x4000, 0x15b9: 0x4000, 0x15ba: 0x4000, 0x15bb: 0x4000, - 0x15bc: 0x4000, 0x15bd: 0x4000, 0x15be: 0x4000, 0x15bf: 0x4000, - // Block 0x57, offset 0x15c0 - 0x15c0: 0x4000, 0x15c1: 0x4000, 0x15c2: 0x4000, 0x15c3: 0x4000, 0x15c4: 0x4000, 0x15c5: 0x4000, - 0x15c6: 0x4000, 0x15c7: 0x4000, 0x15c8: 0x4000, 0x15c9: 0x4000, 0x15ca: 0x4000, 0x15cb: 0x4000, - 0x15cc: 0x4000, 0x15cd: 0x4000, 0x15ce: 0x4000, 0x15cf: 0x4000, 0x15d0: 0x4000, 0x15d1: 0x4000, - 0x15d2: 0x4000, 0x15d3: 0x4000, 0x15d4: 0x4000, 0x15d5: 0x4000, 0x15d6: 0x4000, 0x15d7: 0x4000, - 0x15d8: 0x4000, 0x15d9: 0x4000, 0x15da: 0x4000, 0x15db: 0x4000, 0x15dc: 0x4000, 0x15dd: 0x4000, - 0x15de: 0x4000, 0x15df: 0x4000, 0x15e0: 0x4000, 0x15e1: 0x4000, 0x15e2: 0x4000, 0x15e3: 0x4000, - 0x15e4: 0x4000, 0x15e5: 0x4000, 0x15e6: 0x4000, 0x15e7: 0x4000, 0x15e8: 0x4000, 0x15e9: 0x4000, - 0x15ea: 0x4000, 0x15eb: 0x4000, 0x15ec: 0x4000, 0x15ed: 0x4000, 0x15ee: 0x4000, 0x15ef: 0x4000, - 0x15f0: 0x4000, 0x15f1: 0x4000, 0x15f2: 0x4000, 0x15f3: 0x4000, 0x15f4: 0x4000, 0x15f5: 0x4000, - 0x15f6: 0x4000, 0x15f7: 0x4000, 0x15f8: 0x4000, 0x15f9: 0x4000, 0x15fa: 0x4000, 0x15fb: 0x4000, - 0x15fc: 0x4000, 0x15ff: 0x4000, - // Block 0x58, offset 0x1600 - 0x1600: 0x4000, 0x1601: 0x4000, 0x1602: 0x4000, 0x1603: 0x4000, 0x1604: 0x4000, 0x1605: 0x4000, - 0x1606: 0x4000, 0x1607: 0x4000, 0x1608: 0x4000, 0x1609: 0x4000, 0x160a: 0x4000, 0x160b: 0x4000, - 0x160c: 0x4000, 0x160d: 0x4000, 0x160e: 0x4000, 0x160f: 0x4000, 0x1610: 0x4000, 0x1611: 0x4000, - 0x1612: 0x4000, 0x1613: 0x4000, 0x1614: 0x4000, 0x1615: 0x4000, 0x1616: 0x4000, 0x1617: 0x4000, - 0x1618: 0x4000, 0x1619: 0x4000, 0x161a: 0x4000, 0x161b: 0x4000, 0x161c: 0x4000, 0x161d: 0x4000, - 0x161e: 0x4000, 0x161f: 0x4000, 0x1620: 0x4000, 0x1621: 0x4000, 0x1622: 0x4000, 0x1623: 0x4000, - 0x1624: 0x4000, 0x1625: 0x4000, 0x1626: 0x4000, 0x1627: 0x4000, 0x1628: 0x4000, 0x1629: 0x4000, - 0x162a: 0x4000, 0x162b: 0x4000, 0x162c: 0x4000, 0x162d: 0x4000, 0x162e: 0x4000, 0x162f: 0x4000, - 0x1630: 0x4000, 0x1631: 0x4000, 0x1632: 0x4000, 0x1633: 0x4000, 0x1634: 0x4000, 0x1635: 0x4000, - 0x1636: 0x4000, 0x1637: 0x4000, 0x1638: 0x4000, 0x1639: 0x4000, 0x163a: 0x4000, 0x163b: 0x4000, - 0x163c: 0x4000, 0x163d: 0x4000, - // Block 0x59, offset 0x1640 - 0x164b: 0x4000, - 0x164c: 0x4000, 0x164d: 0x4000, 0x164e: 0x4000, 0x1650: 0x4000, 0x1651: 0x4000, - 0x1652: 0x4000, 0x1653: 0x4000, 0x1654: 0x4000, 0x1655: 0x4000, 0x1656: 0x4000, 0x1657: 0x4000, - 0x1658: 0x4000, 0x1659: 0x4000, 0x165a: 0x4000, 0x165b: 0x4000, 0x165c: 0x4000, 0x165d: 0x4000, - 0x165e: 0x4000, 0x165f: 0x4000, 0x1660: 0x4000, 0x1661: 0x4000, 0x1662: 0x4000, 0x1663: 0x4000, - 0x1664: 0x4000, 0x1665: 0x4000, 0x1666: 0x4000, 0x1667: 0x4000, - 0x167a: 0x4000, - // Block 0x5a, offset 0x1680 - 0x1695: 0x4000, 0x1696: 0x4000, - 0x16a4: 0x4000, - // Block 0x5b, offset 0x16c0 - 0x16fb: 0x4000, - 0x16fc: 0x4000, 0x16fd: 0x4000, 0x16fe: 0x4000, 0x16ff: 0x4000, - // Block 0x5c, offset 0x1700 - 0x1700: 0x4000, 0x1701: 0x4000, 0x1702: 0x4000, 0x1703: 0x4000, 0x1704: 0x4000, 0x1705: 0x4000, - 0x1706: 0x4000, 0x1707: 0x4000, 0x1708: 0x4000, 0x1709: 0x4000, 0x170a: 0x4000, 0x170b: 0x4000, - 0x170c: 0x4000, 0x170d: 0x4000, 0x170e: 0x4000, 0x170f: 0x4000, - // Block 0x5d, offset 0x1740 - 0x1740: 0x4000, 0x1741: 0x4000, 0x1742: 0x4000, 0x1743: 0x4000, 0x1744: 0x4000, 0x1745: 0x4000, - 0x174c: 0x4000, 0x1750: 0x4000, 0x1751: 0x4000, - 0x1752: 0x4000, - 0x176b: 0x4000, 0x176c: 0x4000, - 0x1774: 0x4000, 0x1775: 0x4000, - 0x1776: 0x4000, - // Block 0x5e, offset 0x1780 - 0x1790: 0x4000, 0x1791: 0x4000, - 0x1792: 0x4000, 0x1793: 0x4000, 0x1794: 0x4000, 0x1795: 0x4000, 0x1796: 0x4000, 0x1797: 0x4000, - 0x1798: 0x4000, 0x1799: 0x4000, 0x179a: 0x4000, 0x179b: 0x4000, 0x179c: 0x4000, 0x179d: 0x4000, - 0x179e: 0x4000, 0x17a0: 0x4000, 0x17a1: 0x4000, 0x17a2: 0x4000, 0x17a3: 0x4000, - 0x17a4: 0x4000, 0x17a5: 0x4000, 0x17a6: 0x4000, 0x17a7: 0x4000, - 0x17b0: 0x4000, 0x17b3: 0x4000, 0x17b4: 0x4000, 0x17b5: 0x4000, - 0x17b6: 0x4000, 0x17b7: 0x4000, 0x17b8: 0x4000, 0x17b9: 0x4000, 0x17ba: 0x4000, 0x17bb: 0x4000, - 0x17bc: 0x4000, 0x17bd: 0x4000, 0x17be: 0x4000, - // Block 0x5f, offset 0x17c0 - 0x17c0: 0x4000, 0x17c1: 0x4000, 0x17c2: 0x4000, 0x17c3: 0x4000, 0x17c4: 0x4000, 0x17c5: 0x4000, - 0x17c6: 0x4000, 0x17c7: 0x4000, 0x17c8: 0x4000, 0x17c9: 0x4000, 0x17ca: 0x4000, 0x17cb: 0x4000, - 0x17d0: 0x4000, 0x17d1: 0x4000, - 0x17d2: 0x4000, 0x17d3: 0x4000, 0x17d4: 0x4000, 0x17d5: 0x4000, 0x17d6: 0x4000, 0x17d7: 0x4000, - 0x17d8: 0x4000, 0x17d9: 0x4000, 0x17da: 0x4000, 0x17db: 0x4000, 0x17dc: 0x4000, 0x17dd: 0x4000, - 0x17de: 0x4000, - // Block 0x60, offset 0x1800 - 0x1800: 0x4000, 0x1801: 0x4000, 0x1802: 0x4000, 0x1803: 0x4000, 0x1804: 0x4000, 0x1805: 0x4000, - 0x1806: 0x4000, 0x1807: 0x4000, 0x1808: 0x4000, 0x1809: 0x4000, 0x180a: 0x4000, 0x180b: 0x4000, - 0x180c: 0x4000, 0x180d: 0x4000, 0x180e: 0x4000, 0x180f: 0x4000, 0x1810: 0x4000, 0x1811: 0x4000, - // Block 0x61, offset 0x1840 - 0x1840: 0x4000, - // Block 0x62, offset 0x1880 - 0x1880: 0x2000, 0x1881: 0x2000, 0x1882: 0x2000, 0x1883: 0x2000, 0x1884: 0x2000, 0x1885: 0x2000, - 0x1886: 0x2000, 0x1887: 0x2000, 0x1888: 0x2000, 0x1889: 0x2000, 0x188a: 0x2000, 0x188b: 0x2000, - 0x188c: 0x2000, 0x188d: 0x2000, 0x188e: 0x2000, 0x188f: 0x2000, 0x1890: 0x2000, 0x1891: 0x2000, - 0x1892: 0x2000, 0x1893: 0x2000, 0x1894: 0x2000, 0x1895: 0x2000, 0x1896: 0x2000, 0x1897: 0x2000, - 0x1898: 0x2000, 0x1899: 0x2000, 0x189a: 0x2000, 0x189b: 0x2000, 0x189c: 0x2000, 0x189d: 0x2000, - 0x189e: 0x2000, 0x189f: 0x2000, 0x18a0: 0x2000, 0x18a1: 0x2000, 0x18a2: 0x2000, 0x18a3: 0x2000, - 0x18a4: 0x2000, 0x18a5: 0x2000, 0x18a6: 0x2000, 0x18a7: 0x2000, 0x18a8: 0x2000, 0x18a9: 0x2000, - 0x18aa: 0x2000, 0x18ab: 0x2000, 0x18ac: 0x2000, 0x18ad: 0x2000, 0x18ae: 0x2000, 0x18af: 0x2000, - 0x18b0: 0x2000, 0x18b1: 0x2000, 0x18b2: 0x2000, 0x18b3: 0x2000, 0x18b4: 0x2000, 0x18b5: 0x2000, - 0x18b6: 0x2000, 0x18b7: 0x2000, 0x18b8: 0x2000, 0x18b9: 0x2000, 0x18ba: 0x2000, 0x18bb: 0x2000, - 0x18bc: 0x2000, 0x18bd: 0x2000, -} - -// widthIndex: 22 blocks, 1408 entries, 1408 bytes -// Block 0 is the zero block. -var widthIndex = [1408]uint8{ - // Block 0x0, offset 0x0 - // Block 0x1, offset 0x40 - // Block 0x2, offset 0x80 - // Block 0x3, offset 0xc0 - 0xc2: 0x01, 0xc3: 0x02, 0xc4: 0x03, 0xc5: 0x04, 0xc7: 0x05, - 0xc9: 0x06, 0xcb: 0x07, 0xcc: 0x08, 0xcd: 0x09, 0xce: 0x0a, 0xcf: 0x0b, - 0xd0: 0x0c, 0xd1: 0x0d, - 0xe1: 0x02, 0xe2: 0x03, 0xe3: 0x04, 0xe4: 0x05, 0xe5: 0x06, 0xe6: 0x06, 0xe7: 0x06, - 0xe8: 0x06, 0xe9: 0x06, 0xea: 0x07, 0xeb: 0x06, 0xec: 0x06, 0xed: 0x08, 0xee: 0x09, 0xef: 0x0a, - 0xf0: 0x0f, 0xf3: 0x12, 0xf4: 0x13, - // Block 0x4, offset 0x100 - 0x104: 0x0e, 0x105: 0x0f, - // Block 0x5, offset 0x140 - 0x140: 0x10, 0x141: 0x11, 0x142: 0x12, 0x144: 0x13, 0x145: 0x14, 0x146: 0x15, 0x147: 0x16, - 0x148: 0x17, 0x149: 0x18, 0x14a: 0x19, 0x14c: 0x1a, 0x14f: 0x1b, - 0x151: 0x1c, 0x152: 0x08, 0x153: 0x1d, 0x154: 0x1e, 0x155: 0x1f, 0x156: 0x20, 0x157: 0x21, - 0x158: 0x22, 0x159: 0x23, 0x15a: 0x24, 0x15b: 0x25, 0x15c: 0x26, 0x15d: 0x27, 0x15e: 0x28, 0x15f: 0x29, - 0x166: 0x2a, - 0x16c: 0x2b, 0x16d: 0x2c, - 0x17a: 0x2d, 0x17b: 0x2e, 0x17c: 0x0e, 0x17d: 0x0e, 0x17e: 0x0e, 0x17f: 0x2f, - // Block 0x6, offset 0x180 - 0x180: 0x30, 0x181: 0x31, 0x182: 0x32, 0x183: 0x33, 0x184: 0x34, 0x185: 0x35, 0x186: 0x36, 0x187: 0x37, - 0x188: 0x38, 0x189: 0x39, 0x18a: 0x0e, 0x18b: 0x3a, 0x18c: 0x0e, 0x18d: 0x0e, 0x18e: 0x0e, 0x18f: 0x0e, - 0x190: 0x0e, 0x191: 0x0e, 0x192: 0x0e, 0x193: 0x0e, 0x194: 0x0e, 0x195: 0x0e, 0x196: 0x0e, 0x197: 0x0e, - 0x198: 0x0e, 0x199: 0x0e, 0x19a: 0x0e, 0x19b: 0x0e, 0x19c: 0x0e, 0x19d: 0x0e, 0x19e: 0x0e, 0x19f: 0x0e, - 0x1a0: 0x0e, 0x1a1: 0x0e, 0x1a2: 0x0e, 0x1a3: 0x0e, 0x1a4: 0x0e, 0x1a5: 0x0e, 0x1a6: 0x0e, 0x1a7: 0x0e, - 0x1a8: 0x0e, 0x1a9: 0x0e, 0x1aa: 0x0e, 0x1ab: 0x0e, 0x1ac: 0x0e, 0x1ad: 0x0e, 0x1ae: 0x0e, 0x1af: 0x0e, - 0x1b0: 0x0e, 0x1b1: 0x0e, 0x1b2: 0x0e, 0x1b3: 0x0e, 0x1b4: 0x0e, 0x1b5: 0x0e, 0x1b6: 0x0e, 0x1b7: 0x0e, - 0x1b8: 0x0e, 0x1b9: 0x0e, 0x1ba: 0x0e, 0x1bb: 0x0e, 0x1bc: 0x0e, 0x1bd: 0x0e, 0x1be: 0x0e, 0x1bf: 0x0e, - // Block 0x7, offset 0x1c0 - 0x1c0: 0x0e, 0x1c1: 0x0e, 0x1c2: 0x0e, 0x1c3: 0x0e, 0x1c4: 0x0e, 0x1c5: 0x0e, 0x1c6: 0x0e, 0x1c7: 0x0e, - 0x1c8: 0x0e, 0x1c9: 0x0e, 0x1ca: 0x0e, 0x1cb: 0x0e, 0x1cc: 0x0e, 0x1cd: 0x0e, 0x1ce: 0x0e, 0x1cf: 0x0e, - 0x1d0: 0x0e, 0x1d1: 0x0e, 0x1d2: 0x0e, 0x1d3: 0x0e, 0x1d4: 0x0e, 0x1d5: 0x0e, 0x1d6: 0x0e, 0x1d7: 0x0e, - 0x1d8: 0x0e, 0x1d9: 0x0e, 0x1da: 0x0e, 0x1db: 0x0e, 0x1dc: 0x0e, 0x1dd: 0x0e, 0x1de: 0x0e, 0x1df: 0x0e, - 0x1e0: 0x0e, 0x1e1: 0x0e, 0x1e2: 0x0e, 0x1e3: 0x0e, 0x1e4: 0x0e, 0x1e5: 0x0e, 0x1e6: 0x0e, 0x1e7: 0x0e, - 0x1e8: 0x0e, 0x1e9: 0x0e, 0x1ea: 0x0e, 0x1eb: 0x0e, 0x1ec: 0x0e, 0x1ed: 0x0e, 0x1ee: 0x0e, 0x1ef: 0x0e, - 0x1f0: 0x0e, 0x1f1: 0x0e, 0x1f2: 0x0e, 0x1f3: 0x0e, 0x1f4: 0x0e, 0x1f5: 0x0e, 0x1f6: 0x0e, - 0x1f8: 0x0e, 0x1f9: 0x0e, 0x1fa: 0x0e, 0x1fb: 0x0e, 0x1fc: 0x0e, 0x1fd: 0x0e, 0x1fe: 0x0e, 0x1ff: 0x0e, - // Block 0x8, offset 0x200 - 0x200: 0x0e, 0x201: 0x0e, 0x202: 0x0e, 0x203: 0x0e, 0x204: 0x0e, 0x205: 0x0e, 0x206: 0x0e, 0x207: 0x0e, - 0x208: 0x0e, 0x209: 0x0e, 0x20a: 0x0e, 0x20b: 0x0e, 0x20c: 0x0e, 0x20d: 0x0e, 0x20e: 0x0e, 0x20f: 0x0e, - 0x210: 0x0e, 0x211: 0x0e, 0x212: 0x0e, 0x213: 0x0e, 0x214: 0x0e, 0x215: 0x0e, 0x216: 0x0e, 0x217: 0x0e, - 0x218: 0x0e, 0x219: 0x0e, 0x21a: 0x0e, 0x21b: 0x0e, 0x21c: 0x0e, 0x21d: 0x0e, 0x21e: 0x0e, 0x21f: 0x0e, - 0x220: 0x0e, 0x221: 0x0e, 0x222: 0x0e, 0x223: 0x0e, 0x224: 0x0e, 0x225: 0x0e, 0x226: 0x0e, 0x227: 0x0e, - 0x228: 0x0e, 0x229: 0x0e, 0x22a: 0x0e, 0x22b: 0x0e, 0x22c: 0x0e, 0x22d: 0x0e, 0x22e: 0x0e, 0x22f: 0x0e, - 0x230: 0x0e, 0x231: 0x0e, 0x232: 0x0e, 0x233: 0x0e, 0x234: 0x0e, 0x235: 0x0e, 0x236: 0x0e, 0x237: 0x0e, - 0x238: 0x0e, 0x239: 0x0e, 0x23a: 0x0e, 0x23b: 0x0e, 0x23c: 0x0e, 0x23d: 0x0e, 0x23e: 0x0e, 0x23f: 0x0e, - // Block 0x9, offset 0x240 - 0x240: 0x0e, 0x241: 0x0e, 0x242: 0x0e, 0x243: 0x0e, 0x244: 0x0e, 0x245: 0x0e, 0x246: 0x0e, 0x247: 0x0e, - 0x248: 0x0e, 0x249: 0x0e, 0x24a: 0x0e, 0x24b: 0x0e, 0x24c: 0x0e, 0x24d: 0x0e, 0x24e: 0x0e, 0x24f: 0x0e, - 0x250: 0x0e, 0x251: 0x0e, 0x252: 0x3b, 0x253: 0x3c, - 0x265: 0x3d, - 0x270: 0x0e, 0x271: 0x0e, 0x272: 0x0e, 0x273: 0x0e, 0x274: 0x0e, 0x275: 0x0e, 0x276: 0x0e, 0x277: 0x0e, - 0x278: 0x0e, 0x279: 0x0e, 0x27a: 0x0e, 0x27b: 0x0e, 0x27c: 0x0e, 0x27d: 0x0e, 0x27e: 0x0e, 0x27f: 0x0e, - // Block 0xa, offset 0x280 - 0x280: 0x0e, 0x281: 0x0e, 0x282: 0x0e, 0x283: 0x0e, 0x284: 0x0e, 0x285: 0x0e, 0x286: 0x0e, 0x287: 0x0e, - 0x288: 0x0e, 0x289: 0x0e, 0x28a: 0x0e, 0x28b: 0x0e, 0x28c: 0x0e, 0x28d: 0x0e, 0x28e: 0x0e, 0x28f: 0x0e, - 0x290: 0x0e, 0x291: 0x0e, 0x292: 0x0e, 0x293: 0x0e, 0x294: 0x0e, 0x295: 0x0e, 0x296: 0x0e, 0x297: 0x0e, - 0x298: 0x0e, 0x299: 0x0e, 0x29a: 0x0e, 0x29b: 0x0e, 0x29c: 0x0e, 0x29d: 0x0e, 0x29e: 0x3e, - // Block 0xb, offset 0x2c0 - 0x2c0: 0x08, 0x2c1: 0x08, 0x2c2: 0x08, 0x2c3: 0x08, 0x2c4: 0x08, 0x2c5: 0x08, 0x2c6: 0x08, 0x2c7: 0x08, - 0x2c8: 0x08, 0x2c9: 0x08, 0x2ca: 0x08, 0x2cb: 0x08, 0x2cc: 0x08, 0x2cd: 0x08, 0x2ce: 0x08, 0x2cf: 0x08, - 0x2d0: 0x08, 0x2d1: 0x08, 0x2d2: 0x08, 0x2d3: 0x08, 0x2d4: 0x08, 0x2d5: 0x08, 0x2d6: 0x08, 0x2d7: 0x08, - 0x2d8: 0x08, 0x2d9: 0x08, 0x2da: 0x08, 0x2db: 0x08, 0x2dc: 0x08, 0x2dd: 0x08, 0x2de: 0x08, 0x2df: 0x08, - 0x2e0: 0x08, 0x2e1: 0x08, 0x2e2: 0x08, 0x2e3: 0x08, 0x2e4: 0x08, 0x2e5: 0x08, 0x2e6: 0x08, 0x2e7: 0x08, - 0x2e8: 0x08, 0x2e9: 0x08, 0x2ea: 0x08, 0x2eb: 0x08, 0x2ec: 0x08, 0x2ed: 0x08, 0x2ee: 0x08, 0x2ef: 0x08, - 0x2f0: 0x08, 0x2f1: 0x08, 0x2f2: 0x08, 0x2f3: 0x08, 0x2f4: 0x08, 0x2f5: 0x08, 0x2f6: 0x08, 0x2f7: 0x08, - 0x2f8: 0x08, 0x2f9: 0x08, 0x2fa: 0x08, 0x2fb: 0x08, 0x2fc: 0x08, 0x2fd: 0x08, 0x2fe: 0x08, 0x2ff: 0x08, - // Block 0xc, offset 0x300 - 0x300: 0x08, 0x301: 0x08, 0x302: 0x08, 0x303: 0x08, 0x304: 0x08, 0x305: 0x08, 0x306: 0x08, 0x307: 0x08, - 0x308: 0x08, 0x309: 0x08, 0x30a: 0x08, 0x30b: 0x08, 0x30c: 0x08, 0x30d: 0x08, 0x30e: 0x08, 0x30f: 0x08, - 0x310: 0x08, 0x311: 0x08, 0x312: 0x08, 0x313: 0x08, 0x314: 0x08, 0x315: 0x08, 0x316: 0x08, 0x317: 0x08, - 0x318: 0x08, 0x319: 0x08, 0x31a: 0x08, 0x31b: 0x08, 0x31c: 0x08, 0x31d: 0x08, 0x31e: 0x08, 0x31f: 0x08, - 0x320: 0x08, 0x321: 0x08, 0x322: 0x08, 0x323: 0x08, 0x324: 0x0e, 0x325: 0x0e, 0x326: 0x0e, 0x327: 0x0e, - 0x328: 0x0e, 0x329: 0x0e, 0x32a: 0x0e, 0x32b: 0x0e, - 0x338: 0x3f, 0x339: 0x40, 0x33c: 0x41, 0x33d: 0x42, 0x33e: 0x43, 0x33f: 0x44, - // Block 0xd, offset 0x340 - 0x37f: 0x45, - // Block 0xe, offset 0x380 - 0x380: 0x0e, 0x381: 0x0e, 0x382: 0x0e, 0x383: 0x0e, 0x384: 0x0e, 0x385: 0x0e, 0x386: 0x0e, 0x387: 0x0e, - 0x388: 0x0e, 0x389: 0x0e, 0x38a: 0x0e, 0x38b: 0x0e, 0x38c: 0x0e, 0x38d: 0x0e, 0x38e: 0x0e, 0x38f: 0x0e, - 0x390: 0x0e, 0x391: 0x0e, 0x392: 0x0e, 0x393: 0x0e, 0x394: 0x0e, 0x395: 0x0e, 0x396: 0x0e, 0x397: 0x0e, - 0x398: 0x0e, 0x399: 0x0e, 0x39a: 0x0e, 0x39b: 0x0e, 0x39c: 0x0e, 0x39d: 0x0e, 0x39e: 0x0e, 0x39f: 0x46, - 0x3a0: 0x0e, 0x3a1: 0x0e, 0x3a2: 0x0e, 0x3a3: 0x0e, 0x3a4: 0x0e, 0x3a5: 0x0e, 0x3a6: 0x0e, 0x3a7: 0x0e, - 0x3a8: 0x0e, 0x3a9: 0x0e, 0x3aa: 0x0e, 0x3ab: 0x47, - // Block 0xf, offset 0x3c0 - 0x3c0: 0x48, - // Block 0x10, offset 0x400 - 0x400: 0x49, 0x403: 0x4a, 0x404: 0x4b, 0x405: 0x4c, 0x406: 0x4d, - 0x408: 0x4e, 0x409: 0x4f, 0x40c: 0x50, 0x40d: 0x51, 0x40e: 0x52, 0x40f: 0x53, - 0x410: 0x3a, 0x411: 0x54, 0x412: 0x0e, 0x413: 0x55, 0x414: 0x56, 0x415: 0x57, 0x416: 0x58, 0x417: 0x59, - 0x418: 0x0e, 0x419: 0x5a, 0x41a: 0x0e, 0x41b: 0x5b, - 0x424: 0x5c, 0x425: 0x5d, 0x426: 0x5e, 0x427: 0x5f, - // Block 0x11, offset 0x440 - 0x456: 0x0b, 0x457: 0x06, - 0x458: 0x0c, 0x45b: 0x0d, 0x45f: 0x0e, - 0x460: 0x06, 0x461: 0x06, 0x462: 0x06, 0x463: 0x06, 0x464: 0x06, 0x465: 0x06, 0x466: 0x06, 0x467: 0x06, - 0x468: 0x06, 0x469: 0x06, 0x46a: 0x06, 0x46b: 0x06, 0x46c: 0x06, 0x46d: 0x06, 0x46e: 0x06, 0x46f: 0x06, - 0x470: 0x06, 0x471: 0x06, 0x472: 0x06, 0x473: 0x06, 0x474: 0x06, 0x475: 0x06, 0x476: 0x06, 0x477: 0x06, - 0x478: 0x06, 0x479: 0x06, 0x47a: 0x06, 0x47b: 0x06, 0x47c: 0x06, 0x47d: 0x06, 0x47e: 0x06, 0x47f: 0x06, - // Block 0x12, offset 0x480 - 0x484: 0x08, 0x485: 0x08, 0x486: 0x08, 0x487: 0x09, - // Block 0x13, offset 0x4c0 - 0x4c0: 0x08, 0x4c1: 0x08, 0x4c2: 0x08, 0x4c3: 0x08, 0x4c4: 0x08, 0x4c5: 0x08, 0x4c6: 0x08, 0x4c7: 0x08, - 0x4c8: 0x08, 0x4c9: 0x08, 0x4ca: 0x08, 0x4cb: 0x08, 0x4cc: 0x08, 0x4cd: 0x08, 0x4ce: 0x08, 0x4cf: 0x08, - 0x4d0: 0x08, 0x4d1: 0x08, 0x4d2: 0x08, 0x4d3: 0x08, 0x4d4: 0x08, 0x4d5: 0x08, 0x4d6: 0x08, 0x4d7: 0x08, - 0x4d8: 0x08, 0x4d9: 0x08, 0x4da: 0x08, 0x4db: 0x08, 0x4dc: 0x08, 0x4dd: 0x08, 0x4de: 0x08, 0x4df: 0x08, - 0x4e0: 0x08, 0x4e1: 0x08, 0x4e2: 0x08, 0x4e3: 0x08, 0x4e4: 0x08, 0x4e5: 0x08, 0x4e6: 0x08, 0x4e7: 0x08, - 0x4e8: 0x08, 0x4e9: 0x08, 0x4ea: 0x08, 0x4eb: 0x08, 0x4ec: 0x08, 0x4ed: 0x08, 0x4ee: 0x08, 0x4ef: 0x08, - 0x4f0: 0x08, 0x4f1: 0x08, 0x4f2: 0x08, 0x4f3: 0x08, 0x4f4: 0x08, 0x4f5: 0x08, 0x4f6: 0x08, 0x4f7: 0x08, - 0x4f8: 0x08, 0x4f9: 0x08, 0x4fa: 0x08, 0x4fb: 0x08, 0x4fc: 0x08, 0x4fd: 0x08, 0x4fe: 0x08, 0x4ff: 0x60, - // Block 0x14, offset 0x500 - 0x520: 0x10, - 0x530: 0x09, 0x531: 0x09, 0x532: 0x09, 0x533: 0x09, 0x534: 0x09, 0x535: 0x09, 0x536: 0x09, 0x537: 0x09, - 0x538: 0x09, 0x539: 0x09, 0x53a: 0x09, 0x53b: 0x09, 0x53c: 0x09, 0x53d: 0x09, 0x53e: 0x09, 0x53f: 0x11, - // Block 0x15, offset 0x540 - 0x540: 0x09, 0x541: 0x09, 0x542: 0x09, 0x543: 0x09, 0x544: 0x09, 0x545: 0x09, 0x546: 0x09, 0x547: 0x09, - 0x548: 0x09, 0x549: 0x09, 0x54a: 0x09, 0x54b: 0x09, 0x54c: 0x09, 0x54d: 0x09, 0x54e: 0x09, 0x54f: 0x11, -} - -// inverseData contains 4-byte entries of the following format: -// <length> <modified UTF-8-encoded rune> <0 padding> -// The last byte of the UTF-8-encoded rune is xor-ed with the last byte of the -// UTF-8 encoding of the original rune. Mappings often have the following -// pattern: -// A -> A (U+FF21 -> U+0041) -// B -> B (U+FF22 -> U+0042) -// ... -// By xor-ing the last byte the same entry can be shared by many mappings. This -// reduces the total number of distinct entries by about two thirds. -// The resulting entry for the aforementioned mappings is -// { 0x01, 0xE0, 0x00, 0x00 } -// Using this entry to map U+FF21 (UTF-8 [EF BC A1]), we get -// E0 ^ A1 = 41. -// Similarly, for U+FF22 (UTF-8 [EF BC A2]), we get -// E0 ^ A2 = 42. -// Note that because of the xor-ing, the byte sequence stored in the entry is -// not valid UTF-8. -var inverseData = [150][4]byte{ - {0x00, 0x00, 0x00, 0x00}, - {0x03, 0xe3, 0x80, 0xa0}, - {0x03, 0xef, 0xbc, 0xa0}, - {0x03, 0xef, 0xbc, 0xe0}, - {0x03, 0xef, 0xbd, 0xe0}, - {0x03, 0xef, 0xbf, 0x02}, - {0x03, 0xef, 0xbf, 0x00}, - {0x03, 0xef, 0xbf, 0x0e}, - {0x03, 0xef, 0xbf, 0x0c}, - {0x03, 0xef, 0xbf, 0x0f}, - {0x03, 0xef, 0xbf, 0x39}, - {0x03, 0xef, 0xbf, 0x3b}, - {0x03, 0xef, 0xbf, 0x3f}, - {0x03, 0xef, 0xbf, 0x2a}, - {0x03, 0xef, 0xbf, 0x0d}, - {0x03, 0xef, 0xbf, 0x25}, - {0x03, 0xef, 0xbd, 0x1a}, - {0x03, 0xef, 0xbd, 0x26}, - {0x01, 0xa0, 0x00, 0x00}, - {0x03, 0xef, 0xbd, 0x25}, - {0x03, 0xef, 0xbd, 0x23}, - {0x03, 0xef, 0xbd, 0x2e}, - {0x03, 0xef, 0xbe, 0x07}, - {0x03, 0xef, 0xbe, 0x05}, - {0x03, 0xef, 0xbd, 0x06}, - {0x03, 0xef, 0xbd, 0x13}, - {0x03, 0xef, 0xbd, 0x0b}, - {0x03, 0xef, 0xbd, 0x16}, - {0x03, 0xef, 0xbd, 0x0c}, - {0x03, 0xef, 0xbd, 0x15}, - {0x03, 0xef, 0xbd, 0x0d}, - {0x03, 0xef, 0xbd, 0x1c}, - {0x03, 0xef, 0xbd, 0x02}, - {0x03, 0xef, 0xbd, 0x1f}, - {0x03, 0xef, 0xbd, 0x1d}, - {0x03, 0xef, 0xbd, 0x17}, - {0x03, 0xef, 0xbd, 0x08}, - {0x03, 0xef, 0xbd, 0x09}, - {0x03, 0xef, 0xbd, 0x0e}, - {0x03, 0xef, 0xbd, 0x04}, - {0x03, 0xef, 0xbd, 0x05}, - {0x03, 0xef, 0xbe, 0x3f}, - {0x03, 0xef, 0xbe, 0x00}, - {0x03, 0xef, 0xbd, 0x2c}, - {0x03, 0xef, 0xbe, 0x06}, - {0x03, 0xef, 0xbe, 0x0c}, - {0x03, 0xef, 0xbe, 0x0f}, - {0x03, 0xef, 0xbe, 0x0d}, - {0x03, 0xef, 0xbe, 0x0b}, - {0x03, 0xef, 0xbe, 0x19}, - {0x03, 0xef, 0xbe, 0x15}, - {0x03, 0xef, 0xbe, 0x11}, - {0x03, 0xef, 0xbe, 0x31}, - {0x03, 0xef, 0xbe, 0x33}, - {0x03, 0xef, 0xbd, 0x0f}, - {0x03, 0xef, 0xbe, 0x30}, - {0x03, 0xef, 0xbe, 0x3e}, - {0x03, 0xef, 0xbe, 0x32}, - {0x03, 0xef, 0xbe, 0x36}, - {0x03, 0xef, 0xbd, 0x14}, - {0x03, 0xef, 0xbe, 0x2e}, - {0x03, 0xef, 0xbd, 0x1e}, - {0x03, 0xef, 0xbe, 0x10}, - {0x03, 0xef, 0xbf, 0x13}, - {0x03, 0xef, 0xbf, 0x15}, - {0x03, 0xef, 0xbf, 0x17}, - {0x03, 0xef, 0xbf, 0x1f}, - {0x03, 0xef, 0xbf, 0x1d}, - {0x03, 0xef, 0xbf, 0x1b}, - {0x03, 0xef, 0xbf, 0x09}, - {0x03, 0xef, 0xbf, 0x0b}, - {0x03, 0xef, 0xbf, 0x37}, - {0x03, 0xef, 0xbe, 0x04}, - {0x01, 0xe0, 0x00, 0x00}, - {0x03, 0xe2, 0xa6, 0x1a}, - {0x03, 0xe2, 0xa6, 0x26}, - {0x03, 0xe3, 0x80, 0x23}, - {0x03, 0xe3, 0x80, 0x2e}, - {0x03, 0xe3, 0x80, 0x25}, - {0x03, 0xe3, 0x83, 0x1e}, - {0x03, 0xe3, 0x83, 0x14}, - {0x03, 0xe3, 0x82, 0x06}, - {0x03, 0xe3, 0x82, 0x0b}, - {0x03, 0xe3, 0x82, 0x0c}, - {0x03, 0xe3, 0x82, 0x0d}, - {0x03, 0xe3, 0x82, 0x02}, - {0x03, 0xe3, 0x83, 0x0f}, - {0x03, 0xe3, 0x83, 0x08}, - {0x03, 0xe3, 0x83, 0x09}, - {0x03, 0xe3, 0x83, 0x2c}, - {0x03, 0xe3, 0x83, 0x0c}, - {0x03, 0xe3, 0x82, 0x13}, - {0x03, 0xe3, 0x82, 0x16}, - {0x03, 0xe3, 0x82, 0x15}, - {0x03, 0xe3, 0x82, 0x1c}, - {0x03, 0xe3, 0x82, 0x1f}, - {0x03, 0xe3, 0x82, 0x1d}, - {0x03, 0xe3, 0x82, 0x1a}, - {0x03, 0xe3, 0x82, 0x17}, - {0x03, 0xe3, 0x82, 0x08}, - {0x03, 0xe3, 0x82, 0x09}, - {0x03, 0xe3, 0x82, 0x0e}, - {0x03, 0xe3, 0x82, 0x04}, - {0x03, 0xe3, 0x82, 0x05}, - {0x03, 0xe3, 0x82, 0x3f}, - {0x03, 0xe3, 0x83, 0x00}, - {0x03, 0xe3, 0x83, 0x06}, - {0x03, 0xe3, 0x83, 0x05}, - {0x03, 0xe3, 0x83, 0x0d}, - {0x03, 0xe3, 0x83, 0x0b}, - {0x03, 0xe3, 0x83, 0x07}, - {0x03, 0xe3, 0x83, 0x19}, - {0x03, 0xe3, 0x83, 0x15}, - {0x03, 0xe3, 0x83, 0x11}, - {0x03, 0xe3, 0x83, 0x31}, - {0x03, 0xe3, 0x83, 0x33}, - {0x03, 0xe3, 0x83, 0x30}, - {0x03, 0xe3, 0x83, 0x3e}, - {0x03, 0xe3, 0x83, 0x32}, - {0x03, 0xe3, 0x83, 0x36}, - {0x03, 0xe3, 0x83, 0x2e}, - {0x03, 0xe3, 0x82, 0x07}, - {0x03, 0xe3, 0x85, 0x04}, - {0x03, 0xe3, 0x84, 0x10}, - {0x03, 0xe3, 0x85, 0x30}, - {0x03, 0xe3, 0x85, 0x0d}, - {0x03, 0xe3, 0x85, 0x13}, - {0x03, 0xe3, 0x85, 0x15}, - {0x03, 0xe3, 0x85, 0x17}, - {0x03, 0xe3, 0x85, 0x1f}, - {0x03, 0xe3, 0x85, 0x1d}, - {0x03, 0xe3, 0x85, 0x1b}, - {0x03, 0xe3, 0x85, 0x09}, - {0x03, 0xe3, 0x85, 0x0f}, - {0x03, 0xe3, 0x85, 0x0b}, - {0x03, 0xe3, 0x85, 0x37}, - {0x03, 0xe3, 0x85, 0x3b}, - {0x03, 0xe3, 0x85, 0x39}, - {0x03, 0xe3, 0x85, 0x3f}, - {0x02, 0xc2, 0x02, 0x00}, - {0x02, 0xc2, 0x0e, 0x00}, - {0x02, 0xc2, 0x0c, 0x00}, - {0x02, 0xc2, 0x00, 0x00}, - {0x03, 0xe2, 0x82, 0x0f}, - {0x03, 0xe2, 0x94, 0x2a}, - {0x03, 0xe2, 0x86, 0x39}, - {0x03, 0xe2, 0x86, 0x3b}, - {0x03, 0xe2, 0x86, 0x3f}, - {0x03, 0xe2, 0x96, 0x0d}, - {0x03, 0xe2, 0x97, 0x25}, -} - -// Total table size 14680 bytes (14KiB) diff --git a/vendor/golang.org/x/text/width/tables_test.go b/vendor/golang.org/x/text/width/tables_test.go deleted file mode 100644 index 189febd3..00000000 --- a/vendor/golang.org/x/text/width/tables_test.go +++ /dev/null @@ -1,59 +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 width - -import ( - "testing" - - "golang.org/x/text/internal/testtext" -) - -const ( - loSurrogate = 0xD800 - hiSurrogate = 0xDFFF -) - -func TestTables(t *testing.T) { - testtext.SkipIfNotLong(t) - - runes := map[rune]Kind{} - getWidthData(func(r rune, tag elem, _ rune) { - runes[r] = tag.kind() - }) - for r := rune(0); r < 0x10FFFF; r++ { - if loSurrogate <= r && r <= hiSurrogate { - continue - } - p := LookupRune(r) - if got, want := p.Kind(), runes[r]; got != want { - t.Errorf("Kind of %U was %s; want %s.", r, got, want) - } - want, mapped := foldRune(r) - if got := p.Folded(); (got == 0) == mapped || got != 0 && got != want { - t.Errorf("Folded(%U) = %U; want %U", r, got, want) - } - want, mapped = widenRune(r) - if got := p.Wide(); (got == 0) == mapped || got != 0 && got != want { - t.Errorf("Wide(%U) = %U; want %U", r, got, want) - } - want, mapped = narrowRune(r) - if got := p.Narrow(); (got == 0) == mapped || got != 0 && got != want { - t.Errorf("Narrow(%U) = %U; want %U", r, got, want) - } - } -} - -// TestAmbiguous verifies that that ambiguous runes with a mapping always map to -// a halfwidth rune. -func TestAmbiguous(t *testing.T) { - for r, m := range mapRunes { - if m.e != tagAmbiguous { - continue - } - if k := mapRunes[m.r].e.kind(); k != EastAsianHalfwidth { - t.Errorf("Rune %U is ambiguous and maps to a rune of type %v", r, k) - } - } -} diff --git a/vendor/golang.org/x/text/width/transform.go b/vendor/golang.org/x/text/width/transform.go deleted file mode 100644 index 0049f700..00000000 --- a/vendor/golang.org/x/text/width/transform.go +++ /dev/null @@ -1,239 +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 width - -import ( - "unicode/utf8" - - "golang.org/x/text/transform" -) - -type foldTransform struct { - transform.NopResetter -} - -func (foldTransform) Span(src []byte, atEOF bool) (n int, err error) { - for n < len(src) { - if src[n] < utf8.RuneSelf { - // ASCII fast path. - for n++; n < len(src) && src[n] < utf8.RuneSelf; n++ { - } - continue - } - v, size := trie.lookup(src[n:]) - if size == 0 { // incomplete UTF-8 encoding - if !atEOF { - err = transform.ErrShortSrc - } else { - n = len(src) - } - break - } - if elem(v)&tagNeedsFold != 0 { - err = transform.ErrEndOfSpan - break - } - n += size - } - return n, err -} - -func (foldTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for nSrc < len(src) { - if src[nSrc] < utf8.RuneSelf { - // ASCII fast path. - start, end := nSrc, len(src) - if d := len(dst) - nDst; d < end-start { - end = nSrc + d - } - for nSrc++; nSrc < end && src[nSrc] < utf8.RuneSelf; nSrc++ { - } - n := copy(dst[nDst:], src[start:nSrc]) - if nDst += n; nDst == len(dst) { - nSrc = start + n - if nSrc == len(src) { - return nDst, nSrc, nil - } - if src[nSrc] < utf8.RuneSelf { - return nDst, nSrc, transform.ErrShortDst - } - } - continue - } - v, size := trie.lookup(src[nSrc:]) - if size == 0 { // incomplete UTF-8 encoding - if !atEOF { - return nDst, nSrc, transform.ErrShortSrc - } - size = 1 // gobble 1 byte - } - if elem(v)&tagNeedsFold == 0 { - if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { - return nDst, nSrc, transform.ErrShortDst - } - nDst += size - } else { - data := inverseData[byte(v)] - if len(dst)-nDst < int(data[0]) { - return nDst, nSrc, transform.ErrShortDst - } - i := 1 - for end := int(data[0]); i < end; i++ { - dst[nDst] = data[i] - nDst++ - } - dst[nDst] = data[i] ^ src[nSrc+size-1] - nDst++ - } - nSrc += size - } - return nDst, nSrc, nil -} - -type narrowTransform struct { - transform.NopResetter -} - -func (narrowTransform) Span(src []byte, atEOF bool) (n int, err error) { - for n < len(src) { - if src[n] < utf8.RuneSelf { - // ASCII fast path. - for n++; n < len(src) && src[n] < utf8.RuneSelf; n++ { - } - continue - } - v, size := trie.lookup(src[n:]) - if size == 0 { // incomplete UTF-8 encoding - if !atEOF { - err = transform.ErrShortSrc - } else { - n = len(src) - } - break - } - if k := elem(v).kind(); byte(v) == 0 || k != EastAsianFullwidth && k != EastAsianWide && k != EastAsianAmbiguous { - } else { - err = transform.ErrEndOfSpan - break - } - n += size - } - return n, err -} - -func (narrowTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for nSrc < len(src) { - if src[nSrc] < utf8.RuneSelf { - // ASCII fast path. - start, end := nSrc, len(src) - if d := len(dst) - nDst; d < end-start { - end = nSrc + d - } - for nSrc++; nSrc < end && src[nSrc] < utf8.RuneSelf; nSrc++ { - } - n := copy(dst[nDst:], src[start:nSrc]) - if nDst += n; nDst == len(dst) { - nSrc = start + n - if nSrc == len(src) { - return nDst, nSrc, nil - } - if src[nSrc] < utf8.RuneSelf { - return nDst, nSrc, transform.ErrShortDst - } - } - continue - } - v, size := trie.lookup(src[nSrc:]) - if size == 0 { // incomplete UTF-8 encoding - if !atEOF { - return nDst, nSrc, transform.ErrShortSrc - } - size = 1 // gobble 1 byte - } - if k := elem(v).kind(); byte(v) == 0 || k != EastAsianFullwidth && k != EastAsianWide && k != EastAsianAmbiguous { - if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { - return nDst, nSrc, transform.ErrShortDst - } - nDst += size - } else { - data := inverseData[byte(v)] - if len(dst)-nDst < int(data[0]) { - return nDst, nSrc, transform.ErrShortDst - } - i := 1 - for end := int(data[0]); i < end; i++ { - dst[nDst] = data[i] - nDst++ - } - dst[nDst] = data[i] ^ src[nSrc+size-1] - nDst++ - } - nSrc += size - } - return nDst, nSrc, nil -} - -type wideTransform struct { - transform.NopResetter -} - -func (wideTransform) Span(src []byte, atEOF bool) (n int, err error) { - for n < len(src) { - // TODO: Consider ASCII fast path. Special-casing ASCII handling can - // reduce the ns/op of BenchmarkWideASCII by about 30%. This is probably - // not enough to warrant the extra code and complexity. - v, size := trie.lookup(src[n:]) - if size == 0 { // incomplete UTF-8 encoding - if !atEOF { - err = transform.ErrShortSrc - } else { - n = len(src) - } - break - } - if k := elem(v).kind(); byte(v) == 0 || k != EastAsianHalfwidth && k != EastAsianNarrow { - } else { - err = transform.ErrEndOfSpan - break - } - n += size - } - return n, err -} - -func (wideTransform) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - for nSrc < len(src) { - // TODO: Consider ASCII fast path. Special-casing ASCII handling can - // reduce the ns/op of BenchmarkWideASCII by about 30%. This is probably - // not enough to warrant the extra code and complexity. - v, size := trie.lookup(src[nSrc:]) - if size == 0 { // incomplete UTF-8 encoding - if !atEOF { - return nDst, nSrc, transform.ErrShortSrc - } - size = 1 // gobble 1 byte - } - if k := elem(v).kind(); byte(v) == 0 || k != EastAsianHalfwidth && k != EastAsianNarrow { - if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { - return nDst, nSrc, transform.ErrShortDst - } - nDst += size - } else { - data := inverseData[byte(v)] - if len(dst)-nDst < int(data[0]) { - return nDst, nSrc, transform.ErrShortDst - } - i := 1 - for end := int(data[0]); i < end; i++ { - dst[nDst] = data[i] - nDst++ - } - dst[nDst] = data[i] ^ src[nSrc+size-1] - nDst++ - } - nSrc += size - } - return nDst, nSrc, nil -} diff --git a/vendor/golang.org/x/text/width/transform_test.go b/vendor/golang.org/x/text/width/transform_test.go deleted file mode 100644 index f9122d6d..00000000 --- a/vendor/golang.org/x/text/width/transform_test.go +++ /dev/null @@ -1,701 +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 width - -import ( - "bytes" - "strings" - "testing" - - "golang.org/x/text/internal/testtext" - "golang.org/x/text/transform" -) - -func foldRune(r rune) (folded rune, ok bool) { - alt, ok := mapRunes[r] - if ok && alt.e&tagNeedsFold != 0 { - return alt.r, true - } - return r, false -} - -func widenRune(r rune) (wide rune, ok bool) { - alt, ok := mapRunes[r] - if k := alt.e.kind(); k == EastAsianHalfwidth || k == EastAsianNarrow { - return alt.r, true - } - return r, false -} - -func narrowRune(r rune) (narrow rune, ok bool) { - alt, ok := mapRunes[r] - if k := alt.e.kind(); k == EastAsianFullwidth || k == EastAsianWide || k == EastAsianAmbiguous { - return alt.r, true - } - return r, false -} - -func TestFoldSingleRunes(t *testing.T) { - for r := rune(0); r < 0x1FFFF; r++ { - if loSurrogate <= r && r <= hiSurrogate { - continue - } - x, _ := foldRune(r) - want := string(x) - got := Fold.String(string(r)) - if got != want { - t.Errorf("Fold().String(%U) = %+q; want %+q", r, got, want) - } - } -} - -type transformTest struct { - desc string - src string - nBuf int - nDst int - atEOF bool - dst string - nSrc int - err error - nSpan int - errSpan error -} - -func (tc *transformTest) doTest(t *testing.T, tr Transformer) { - testtext.Run(t, tc.desc, func(t *testing.T) { - b := make([]byte, tc.nBuf) - nDst, nSrc, err := tr.Transform(b, []byte(tc.src), tc.atEOF) - if got := string(b[:nDst]); got != tc.dst[:nDst] { - t.Errorf("dst was %+q; want %+q", got, tc.dst) - } - if nDst != tc.nDst { - t.Errorf("nDst was %d; want %d", nDst, tc.nDst) - } - if nSrc != tc.nSrc { - t.Errorf("nSrc was %d; want %d", nSrc, tc.nSrc) - } - if err != tc.err { - t.Errorf("error was %v; want %v", err, tc.err) - } - if got := tr.String(tc.src); got != tc.dst { - t.Errorf("String(%q) = %q; want %q", tc.src, got, tc.dst) - } - n, err := tr.Span([]byte(tc.src), tc.atEOF) - if n != tc.nSpan || err != tc.errSpan { - t.Errorf("Span: got %d, %v; want %d, %v", n, err, tc.nSpan, tc.errSpan) - } - }) -} - -func TestFold(t *testing.T) { - for _, tc := range []transformTest{{ - desc: "empty", - src: "", - nBuf: 10, - dst: "", - nDst: 0, - nSrc: 0, - atEOF: false, - err: nil, - nSpan: 0, - errSpan: nil, - }, { - desc: "short source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 1, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - nSpan: 1, - errSpan: transform.ErrShortSrc, - }, { - desc: "short source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 1, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - nSpan: 1, - errSpan: transform.ErrShortSrc, - }, { - desc: "incomplete but terminated source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 2, - nSrc: 2, - atEOF: true, - err: nil, - nSpan: 2, - errSpan: nil, - }, { - desc: "incomplete but terminated source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 3, - nSrc: 3, - atEOF: true, - err: nil, - nSpan: 3, - errSpan: nil, - }, { - desc: "exact fit dst", - src: "a\uff01", - nBuf: 2, - dst: "a!", - nDst: 2, - nSrc: 4, - atEOF: false, - err: nil, - nSpan: 1, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "exact fit dst and src ascii", - src: "ab", - nBuf: 2, - dst: "ab", - nDst: 2, - nSrc: 2, - atEOF: true, - err: nil, - nSpan: 2, - errSpan: nil, - }, { - desc: "empty dst", - src: "\u0300", - nBuf: 0, - dst: "\u0300", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 2, - errSpan: nil, - }, { - desc: "empty dst ascii", - src: "a", - nBuf: 0, - dst: "a", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 1, - errSpan: nil, - }, { - desc: "short dst 1", - src: "a\uffe0", // ¢ - nBuf: 2, - dst: "a\u00a2", // ¢ - nDst: 1, - nSrc: 1, - atEOF: false, - err: transform.ErrShortDst, - nSpan: 1, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "short dst 2", - src: "不夠", - nBuf: 3, - dst: "不夠", - nDst: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 6, - errSpan: nil, - }, { - desc: "short dst fast path", - src: "fast", - nDst: 3, - dst: "fast", - nBuf: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 4, - errSpan: nil, - }, { - desc: "short dst larger buffer", - src: "\uff21" + strings.Repeat("0", 127) + "B", - nBuf: 128, - dst: "A" + strings.Repeat("0", 127) + "B", - nDst: 128, - nSrc: 130, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "fast path alternation", - src: "fast路徑fast路徑", - nBuf: 20, - dst: "fast路徑fast路徑", - nDst: 20, - nSrc: 20, - atEOF: true, - err: nil, - nSpan: 20, - errSpan: nil, - }} { - tc.doTest(t, Fold) - } -} - -func TestWidenSingleRunes(t *testing.T) { - for r := rune(0); r < 0x1FFFF; r++ { - if loSurrogate <= r && r <= hiSurrogate { - continue - } - alt, _ := widenRune(r) - want := string(alt) - got := Widen.String(string(r)) - if got != want { - t.Errorf("Widen().String(%U) = %+q; want %+q", r, got, want) - } - } -} - -func TestWiden(t *testing.T) { - for _, tc := range []transformTest{{ - desc: "empty", - src: "", - nBuf: 10, - dst: "", - nDst: 0, - nSrc: 0, - atEOF: false, - err: nil, - nSpan: 0, - errSpan: nil, - }, { - desc: "short source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 3, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "short source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 3, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "incomplete but terminated source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 4, - nSrc: 2, - atEOF: true, - err: nil, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "incomplete but terminated source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 5, - nSrc: 3, - atEOF: true, - err: nil, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "short source 1 some span", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 3, - nSrc: 3, - atEOF: false, - err: transform.ErrShortSrc, - nSpan: 3, - errSpan: transform.ErrShortSrc, - }, { - desc: "short source 2 some span", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 3, - nSrc: 3, - atEOF: false, - err: transform.ErrShortSrc, - nSpan: 3, - errSpan: transform.ErrShortSrc, - }, { - desc: "incomplete but terminated source 1 some span", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 4, - nSrc: 4, - atEOF: true, - err: nil, - nSpan: 4, - errSpan: nil, - }, { - desc: "incomplete but terminated source 2 some span", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 5, - nSrc: 5, - atEOF: true, - err: nil, - nSpan: 5, - errSpan: nil, - }, { - desc: "exact fit dst", - src: "a!", - nBuf: 6, - dst: "a\uff01", - nDst: 6, - nSrc: 2, - atEOF: false, - err: nil, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "empty dst", - src: "\u0300", - nBuf: 0, - dst: "\u0300", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 2, - errSpan: nil, - }, { - desc: "empty dst ascii", - src: "a", - nBuf: 0, - dst: "a", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "short dst 1", - src: "a\uffe0", - nBuf: 4, - dst: "a\uffe0", - nDst: 3, - nSrc: 1, - atEOF: false, - err: transform.ErrShortDst, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "short dst 2", - src: "不夠", - nBuf: 3, - dst: "不夠", - nDst: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 6, - errSpan: nil, - }, { - desc: "short dst ascii", - src: "ascii", - nBuf: 3, - dst: "ascii", // U+ff41, ... - nDst: 3, - nSrc: 1, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "ambiguous", - src: "\uffe9", - nBuf: 4, - dst: "\u2190", - nDst: 3, - nSrc: 3, - atEOF: false, - err: nil, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }} { - tc.doTest(t, Widen) - } -} - -func TestNarrowSingleRunes(t *testing.T) { - for r := rune(0); r < 0x1FFFF; r++ { - if loSurrogate <= r && r <= hiSurrogate { - continue - } - alt, _ := narrowRune(r) - want := string(alt) - got := Narrow.String(string(r)) - if got != want { - t.Errorf("Narrow().String(%U) = %+q; want %+q", r, got, want) - } - } -} - -func TestNarrow(t *testing.T) { - for _, tc := range []transformTest{{ - desc: "empty", - src: "", - nBuf: 10, - dst: "", - nDst: 0, - nSrc: 0, - atEOF: false, - err: nil, - nSpan: 0, - errSpan: nil, - }, { - desc: "short source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 1, - nSrc: 1, - atEOF: false, - err: transform.ErrShortSrc, - nSpan: 1, - errSpan: transform.ErrShortSrc, - }, { - desc: "short source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 1, - nSrc: 3, - atEOF: false, - err: transform.ErrShortSrc, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "incomplete but terminated source 1", - src: "a\xc2", - nBuf: 10, - dst: "a\xc2", - nDst: 2, - nSrc: 4, - atEOF: true, - err: nil, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "incomplete but terminated source 2", - src: "a\xe0\x80", - nBuf: 10, - dst: "a\xe0\x80", - nDst: 3, - nSrc: 5, - atEOF: true, - err: nil, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "exact fit dst", - src: "a\uff01", - nBuf: 2, - dst: "a!", - nDst: 2, - nSrc: 6, - atEOF: false, - err: nil, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "exact fit dst some span", - src: "a\uff01", - nBuf: 2, - dst: "a!", - nDst: 2, - nSrc: 4, - atEOF: false, - err: nil, - nSpan: 1, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "empty dst", - src: "\u0300", - nBuf: 0, - dst: "\u0300", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 2, - errSpan: nil, - }, { - desc: "empty dst ascii", - src: "a", - nBuf: 0, - dst: "a", - nDst: 0, - nSrc: 0, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 1, - errSpan: nil, - }, { - desc: "short dst 1", - src: "a\uffe0", // ¢ - nBuf: 2, - dst: "a\u00a2", // ¢ - nDst: 1, - nSrc: 3, - atEOF: false, - err: transform.ErrShortDst, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "short dst 2", - src: "不夠", - nBuf: 3, - dst: "不夠", - nDst: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 6, - errSpan: nil, - }, { - // Create a narrow variant of ambiguous runes, if they exist. - desc: "ambiguous", - src: "\u2190", - nBuf: 4, - dst: "\uffe9", - nDst: 3, - nSrc: 3, - atEOF: false, - err: nil, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "short dst fast path", - src: "fast", - nBuf: 3, - dst: "fast", - nDst: 3, - nSrc: 3, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 4, - errSpan: nil, - }, { - desc: "short dst larger buffer", - src: "\uff21" + strings.Repeat("0", 127) + "B", - nBuf: 128, - dst: "A" + strings.Repeat("0", 127) + "B", - nDst: 128, - nSrc: 130, - atEOF: true, - err: transform.ErrShortDst, - nSpan: 0, - errSpan: transform.ErrEndOfSpan, - }, { - desc: "fast path alternation", - src: "fast路徑fast路徑", - nBuf: 20, - dst: "fast路徑fast路徑", - nDst: 20, - nSrc: 20, - atEOF: true, - err: nil, - nSpan: 20, - errSpan: nil, - }} { - tc.doTest(t, Narrow) - } -} - -func bench(b *testing.B, t Transformer, s string) { - dst := make([]byte, 1024) - src := []byte(s) - b.SetBytes(int64(len(src))) - b.ResetTimer() - for i := 0; i < b.N; i++ { - t.Transform(dst, src, true) - } -} - -func changingRunes(f func(r rune) (rune, bool)) string { - buf := &bytes.Buffer{} - for r := rune(0); r <= 0xFFFF; r++ { - if _, ok := foldRune(r); ok { - buf.WriteRune(r) - } - } - return buf.String() -} - -func BenchmarkFoldASCII(b *testing.B) { - bench(b, Fold, testtext.ASCII) -} - -func BenchmarkFoldCJK(b *testing.B) { - bench(b, Fold, testtext.CJK) -} - -func BenchmarkFoldNonCanonical(b *testing.B) { - bench(b, Fold, changingRunes(foldRune)) -} - -func BenchmarkFoldOther(b *testing.B) { - bench(b, Fold, testtext.TwoByteUTF8+testtext.ThreeByteUTF8) -} - -func BenchmarkWideASCII(b *testing.B) { - bench(b, Widen, testtext.ASCII) -} - -func BenchmarkWideCJK(b *testing.B) { - bench(b, Widen, testtext.CJK) -} - -func BenchmarkWideNonCanonical(b *testing.B) { - bench(b, Widen, changingRunes(widenRune)) -} - -func BenchmarkWideOther(b *testing.B) { - bench(b, Widen, testtext.TwoByteUTF8+testtext.ThreeByteUTF8) -} - -func BenchmarkNarrowASCII(b *testing.B) { - bench(b, Narrow, testtext.ASCII) -} - -func BenchmarkNarrowCJK(b *testing.B) { - bench(b, Narrow, testtext.CJK) -} - -func BenchmarkNarrowNonCanonical(b *testing.B) { - bench(b, Narrow, changingRunes(narrowRune)) -} - -func BenchmarkNarrowOther(b *testing.B) { - bench(b, Narrow, testtext.TwoByteUTF8+testtext.ThreeByteUTF8) -} diff --git a/vendor/golang.org/x/text/width/trieval.go b/vendor/golang.org/x/text/width/trieval.go deleted file mode 100644 index ca8e45fd..00000000 --- a/vendor/golang.org/x/text/width/trieval.go +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package width - -// elem is an entry of the width trie. The high byte is used to encode the type -// of the rune. The low byte is used to store the index to a mapping entry in -// the inverseData array. -type elem uint16 - -const ( - tagNeutral elem = iota << typeShift - tagAmbiguous - tagWide - tagNarrow - tagFullwidth - tagHalfwidth -) - -const ( - numTypeBits = 3 - typeShift = 16 - numTypeBits - - // tagNeedsFold is true for all fullwidth and halfwidth runes except for - // the Won sign U+20A9. - tagNeedsFold = 0x1000 - - // The Korean Won sign is halfwidth, but SHOULD NOT be mapped to a wide - // variant. - wonSign rune = 0x20A9 -) diff --git a/vendor/golang.org/x/text/width/width.go b/vendor/golang.org/x/text/width/width.go deleted file mode 100644 index f1639ca6..00000000 --- a/vendor/golang.org/x/text/width/width.go +++ /dev/null @@ -1,206 +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. - -//go:generate stringer -type=Kind -//go:generate go run gen.go gen_common.go gen_trieval.go - -// Package width provides functionality for handling different widths in text. -// -// Wide characters behave like ideographs; they tend to allow line breaks after -// each character and remain upright in vertical text layout. Narrow characters -// are kept together in words or runs that are rotated sideways in vertical text -// layout. -// -// For more information, see http://unicode.org/reports/tr11/. -package width // import "golang.org/x/text/width" - -import ( - "unicode/utf8" - - "golang.org/x/text/transform" -) - -// TODO -// 1) Reduce table size by compressing blocks. -// 2) API proposition for computing display length -// (approximation, fixed pitch only). -// 3) Implement display length. - -// Kind indicates the type of width property as defined in http://unicode.org/reports/tr11/. -type Kind int - -const ( - // Neutral characters do not occur in legacy East Asian character sets. - Neutral Kind = iota - - // EastAsianAmbiguous characters that can be sometimes wide and sometimes - // narrow and require additional information not contained in the character - // code to further resolve their width. - EastAsianAmbiguous - - // EastAsianWide characters are wide in its usual form. They occur only in - // the context of East Asian typography. These runes may have explicit - // halfwidth counterparts. - EastAsianWide - - // EastAsianNarrow characters are narrow in its usual form. They often have - // fullwidth counterparts. - EastAsianNarrow - - // Note: there exist Narrow runes that do not have fullwidth or wide - // counterparts, despite what the definition says (e.g. U+27E6). - - // EastAsianFullwidth characters have a compatibility decompositions of type - // wide that map to a narrow counterpart. - EastAsianFullwidth - - // EastAsianHalfwidth characters have a compatibility decomposition of type - // narrow that map to a wide or ambiguous counterpart, plus U+20A9 ₩ WON - // SIGN. - EastAsianHalfwidth - - // Note: there exist runes that have a halfwidth counterparts but that are - // classified as Ambiguous, rather than wide (e.g. U+2190). -) - -// TODO: the generated tries need to return size 1 for invalid runes for the -// width to be computed correctly (each byte should render width 1) - -var trie = newWidthTrie(0) - -// Lookup reports the Properties of the first rune in b and the number of bytes -// of its UTF-8 encoding. -func Lookup(b []byte) (p Properties, size int) { - v, sz := trie.lookup(b) - return Properties{elem(v), b[sz-1]}, sz -} - -// LookupString reports the Properties of the first rune in s and the number of -// bytes of its UTF-8 encoding. -func LookupString(s string) (p Properties, size int) { - v, sz := trie.lookupString(s) - return Properties{elem(v), s[sz-1]}, sz -} - -// LookupRune reports the Properties of rune r. -func LookupRune(r rune) Properties { - var buf [4]byte - n := utf8.EncodeRune(buf[:], r) - v, _ := trie.lookup(buf[:n]) - last := byte(r) - if r >= utf8.RuneSelf { - last = 0x80 + byte(r&0x3f) - } - return Properties{elem(v), last} -} - -// Properties provides access to width properties of a rune. -type Properties struct { - elem elem - last byte -} - -func (e elem) kind() Kind { - return Kind(e >> typeShift) -} - -// Kind returns the Kind of a rune as defined in Unicode TR #11. -// See http://unicode.org/reports/tr11/ for more details. -func (p Properties) Kind() Kind { - return p.elem.kind() -} - -// Folded returns the folded variant of a rune or 0 if the rune is canonical. -func (p Properties) Folded() rune { - if p.elem&tagNeedsFold != 0 { - buf := inverseData[byte(p.elem)] - buf[buf[0]] ^= p.last - r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]]) - return r - } - return 0 -} - -// Narrow returns the narrow variant of a rune or 0 if the rune is already -// narrow or doesn't have a narrow variant. -func (p Properties) Narrow() rune { - if k := p.elem.kind(); byte(p.elem) != 0 && (k == EastAsianFullwidth || k == EastAsianWide || k == EastAsianAmbiguous) { - buf := inverseData[byte(p.elem)] - buf[buf[0]] ^= p.last - r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]]) - return r - } - return 0 -} - -// Wide returns the wide variant of a rune or 0 if the rune is already -// wide or doesn't have a wide variant. -func (p Properties) Wide() rune { - if k := p.elem.kind(); byte(p.elem) != 0 && (k == EastAsianHalfwidth || k == EastAsianNarrow) { - buf := inverseData[byte(p.elem)] - buf[buf[0]] ^= p.last - r, _ := utf8.DecodeRune(buf[1 : 1+buf[0]]) - return r - } - return 0 -} - -// TODO for Properties: -// - Add Fullwidth/Halfwidth or Inverted methods for computing variants -// mapping. -// - Add width information (including information on non-spacing runes). - -// Transformer implements the transform.Transformer interface. -type Transformer struct { - t transform.SpanningTransformer -} - -// Reset implements the transform.Transformer interface. -func (t Transformer) Reset() { t.t.Reset() } - -// Transform implements the transform.Transformer interface. -func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - return t.t.Transform(dst, src, atEOF) -} - -// Span implements the transform.SpanningTransformer interface. -func (t Transformer) Span(src []byte, atEOF bool) (n int, err error) { - return t.t.Span(src, atEOF) -} - -// Bytes returns a new byte slice with the result of applying t to b. -func (t Transformer) Bytes(b []byte) []byte { - b, _, _ = transform.Bytes(t, b) - return b -} - -// String returns a string with the result of applying t to s. -func (t Transformer) String(s string) string { - s, _, _ = transform.String(t, s) - return s -} - -var ( - // Fold is a transform that maps all runes to their canonical width. - // - // Note that the NFKC and NFKD transforms in golang.org/x/text/unicode/norm - // provide a more generic folding mechanism. - Fold Transformer = Transformer{foldTransform{}} - - // Widen is a transform that maps runes to their wide variant, if - // available. - Widen Transformer = Transformer{wideTransform{}} - - // Narrow is a transform that maps runes to their narrow variant, if - // available. - Narrow Transformer = Transformer{narrowTransform{}} -) - -// TODO: Consider the following options: -// - Treat Ambiguous runes that have a halfwidth counterpart as wide, or some -// generalized variant of this. -// - Consider a wide Won character to be the default width (or some generalized -// variant of this). -// - Filter the set of characters that gets converted (the preferred approach is -// to allow applying filters to transforms). diff --git a/vendor/google.golang.org/genproto/.github/CODEOWNERS b/vendor/google.golang.org/genproto/.github/CODEOWNERS deleted file mode 100644 index 7104b62d..00000000 --- a/vendor/google.golang.org/genproto/.github/CODEOWNERS +++ /dev/null @@ -1 +0,0 @@ -* @pongad @jba diff --git a/vendor/google.golang.org/genproto/.travis.yml b/vendor/google.golang.org/genproto/.travis.yml deleted file mode 100644 index e673e05e..00000000 --- a/vendor/google.golang.org/genproto/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: go -go: - - 1.6 - - 1.7 - - 1.8 -go_import_path: google.golang.org/genproto - -script: -- go test -v ./... -- if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]]; then - go get -u -v cloud.google.com/go/...; - fi diff --git a/vendor/google.golang.org/genproto/CONTRIBUTING.md b/vendor/google.golang.org/genproto/CONTRIBUTING.md deleted file mode 100644 index 2827b7d3..00000000 --- a/vendor/google.golang.org/genproto/CONTRIBUTING.md +++ /dev/null @@ -1,27 +0,0 @@ -Want to contribute? Great! First, read this page (including the small print at the end). - -### Before you contribute -Before we can use your code, you must sign the -[Google Individual Contributor License Agreement] -(https://cla.developers.google.com/about/google-individual) -(CLA), which you can do online. The CLA is necessary mainly because you own the -copyright to your changes, even after your contribution becomes part of our -codebase, so we need your permission to use and distribute your code. We also -need to be sure of various other things—for instance that you'll tell us if you -know that your code infringes on other people's patents. You don't have to sign -the CLA until after you've submitted your code for review and a member has -approved it, but you must do it before we can put your code into our codebase. -Before you start working on a larger contribution, you should get in touch with -us first through the issue tracker with your idea so that we can help out and -possibly guide you. Coordinating up front makes it much easier to avoid -frustration later on. - -### Code reviews -All submissions, including submissions by project members, require review. We -use Github pull requests for this purpose. - -### The small print -Contributions made by corporations are covered by a different agreement than -the one above, the -[Software Grant and Corporate Contributor License Agreement] -(https://cla.developers.google.com/about/google-corporate). diff --git a/vendor/google.golang.org/genproto/README.md b/vendor/google.golang.org/genproto/README.md deleted file mode 100644 index 51d0bae5..00000000 --- a/vendor/google.golang.org/genproto/README.md +++ /dev/null @@ -1,28 +0,0 @@ -Go generated proto packages -=========================== - -[![Build Status](https://travis-ci.org/google/go-genproto.svg?branch=master)](https://travis-ci.org/google/go-genproto) -[![GoDoc](https://godoc.org/google.golang.org/genproto?status.svg)](https://godoc.org/google.golang.org/genproto) - -> **IMPORTANT** This repository is currently experimental. The structure -> of the contained packages is subject to change. Please see the original -> source repositories (listed below) to find out the status of the each -> protocol buffer's associated service. - -This repository contains the generated Go packages for common protocol buffer -types, and the generated [gRPC][1] code necessary for interacting with Google's gRPC -APIs. - -There are two sources for the proto files used in this repository: - -1. [google/protobuf][2]: the code in the `protobuf` and `ptypes` subdirectories - is derived from this repo. The messages in `protobuf` are used to describe - protocol buffer messages themselves. The messages under `ptypes` define the - common well-known types. -2. [googleapis/googleapis][3]: the code in the `googleapis` is derived from this - repo. The packages here contain types specifically for interacting with Google - APIs. - -[1]: http://grpc.io -[2]: https://github.com/google/protobuf/ -[3]: https://github.com/googleapis/googleapis/ diff --git a/vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go b/vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go deleted file mode 100644 index 53d57f67..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/annotations/annotations.pb.go +++ /dev/null @@ -1,64 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/annotations.proto - -/* -Package annotations is a generated protocol buffer package. - -It is generated from these files: - google/api/annotations.proto - google/api/http.proto - -It has these top-level messages: - Http - HttpRule - CustomHttpPattern -*/ -package annotations - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -var E_Http = &proto.ExtensionDesc{ - ExtendedType: (*google_protobuf.MethodOptions)(nil), - ExtensionType: (*HttpRule)(nil), - Field: 72295728, - Name: "google.api.http", - Tag: "bytes,72295728,opt,name=http", - Filename: "google/api/annotations.proto", -} - -func init() { - proto.RegisterExtension(E_Http) -} - -func init() { proto.RegisterFile("google/api/annotations.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 208 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xcc, 0xcb, 0xcb, 0x2f, 0x49, 0x2c, 0xc9, 0xcc, - 0xcf, 0x2b, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x82, 0xc8, 0xea, 0x25, 0x16, 0x64, - 0x4a, 0x89, 0x22, 0xa9, 0xcc, 0x28, 0x29, 0x29, 0x80, 0x28, 0x91, 0x52, 0x80, 0x0a, 0x83, 0x79, - 0x49, 0xa5, 0x69, 0xfa, 0x29, 0xa9, 0xc5, 0xc9, 0x45, 0x99, 0x05, 0x25, 0xf9, 0x45, 0x10, 0x15, - 0x56, 0xde, 0x5c, 0x2c, 0x20, 0xf5, 0x42, 0x72, 0x7a, 0x50, 0xd3, 0x60, 0x4a, 0xf5, 0x7c, 0x53, - 0x4b, 0x32, 0xf2, 0x53, 0xfc, 0x0b, 0xc0, 0x56, 0x4a, 0x6c, 0x38, 0xb5, 0x47, 0x49, 0x81, 0x51, - 0x83, 0xdb, 0x48, 0x44, 0x0f, 0x61, 0xad, 0x9e, 0x47, 0x49, 0x49, 0x41, 0x50, 0x69, 0x4e, 0x6a, - 0x10, 0xd8, 0x10, 0xa7, 0x3c, 0x2e, 0xbe, 0xe4, 0xfc, 0x5c, 0x24, 0x05, 0x4e, 0x02, 0x8e, 0x08, - 0x67, 0x07, 0x80, 0x4c, 0x0e, 0x60, 0x8c, 0x72, 0x84, 0xca, 0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, - 0xeb, 0xe5, 0x17, 0xa5, 0xeb, 0xa7, 0xa7, 0xe6, 0x81, 0xed, 0xd5, 0x87, 0x48, 0x25, 0x16, 0x64, - 0x16, 0xa3, 0x7b, 0xda, 0x1a, 0x89, 0xbd, 0x88, 0x89, 0xc5, 0xdd, 0x31, 0xc0, 0x33, 0x89, 0x0d, - 0xac, 0xc9, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0xe3, 0x29, 0x19, 0x62, 0x28, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go b/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go deleted file mode 100644 index 73f050f7..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go +++ /dev/null @@ -1,594 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/http.proto - -package annotations - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Defines the HTTP configuration for an API service. It contains a list of -// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method -// to one or more HTTP REST API methods. -type Http struct { - // A list of HTTP configuration rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - Rules []*HttpRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` - // When set to true, URL path parmeters will be fully URI-decoded except in - // cases of single segment matches in reserved expansion, where "%2F" will be - // left encoded. - // - // The default behavior is to not decode RFC 6570 reserved characters in multi - // segment matches. - FullyDecodeReservedExpansion bool `protobuf:"varint,2,opt,name=fully_decode_reserved_expansion,json=fullyDecodeReservedExpansion" json:"fully_decode_reserved_expansion,omitempty"` -} - -func (m *Http) Reset() { *m = Http{} } -func (m *Http) String() string { return proto.CompactTextString(m) } -func (*Http) ProtoMessage() {} -func (*Http) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Http) GetRules() []*HttpRule { - if m != nil { - return m.Rules - } - return nil -} - -func (m *Http) GetFullyDecodeReservedExpansion() bool { - if m != nil { - return m.FullyDecodeReservedExpansion - } - return false -} - -// `HttpRule` defines the mapping of an RPC method to one or more HTTP -// REST API methods. The mapping specifies how different portions of the RPC -// request message are mapped to URL path, URL query parameters, and -// HTTP request body. The mapping is typically specified as an -// `google.api.http` annotation on the RPC method, -// see "google/api/annotations.proto" for details. -// -// The mapping consists of a field specifying the path template and -// method kind. The path template can refer to fields in the request -// message, as in the example below which describes a REST GET -// operation on a resource collection of messages: -// -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}"; -// } -// } -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // mapped to the URL -// SubMessage sub = 2; // `sub.subfield` is url-mapped -// } -// message Message { -// string text = 1; // content of the resource -// } -// -// The same http annotation can alternatively be expressed inside the -// `GRPC API Configuration` YAML file. -// -// http: -// rules: -// - selector: <proto_package_name>.Messaging.GetMessage -// get: /v1/messages/{message_id}/{sub.subfield} -// -// This definition enables an automatic, bidrectional mapping of HTTP -// JSON to RPC. Example: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))` -// -// In general, not only fields but also field paths can be referenced -// from a path pattern. Fields mapped to the path pattern cannot be -// repeated and must have a primitive (non-message) type. -// -// Any fields in the request message which are not bound by the path -// pattern automatically become (optional) HTTP query -// parameters. Assume the following definition of the request message: -// -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http).get = "/v1/messages/{message_id}"; -// } -// } -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // mapped to the URL -// int64 revision = 2; // becomes a parameter -// SubMessage sub = 3; // `sub.subfield` becomes a parameter -// } -// -// -// This enables a HTTP JSON to RPC mapping as below: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))` -// -// Note that fields which are mapped to HTTP parameters must have a -// primitive type or a repeated primitive type. Message types are not -// allowed. In the case of a repeated type, the parameter can be -// repeated in the URL, as in `...?param=A&param=B`. -// -// For HTTP method kinds which allow a request body, the `body` field -// specifies the mapping. Consider a REST update method on the -// message resource collection: -// -// -// service Messaging { -// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { -// option (google.api.http) = { -// put: "/v1/messages/{message_id}" -// body: "message" -// }; -// } -// } -// message UpdateMessageRequest { -// string message_id = 1; // mapped to the URL -// Message message = 2; // mapped to the body -// } -// -// -// The following HTTP JSON to RPC mapping is enabled, where the -// representation of the JSON in the request body is determined by -// protos JSON encoding: -// -// HTTP | RPC -// -----|----- -// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })` -// -// The special name `*` can be used in the body mapping to define that -// every field not bound by the path template should be mapped to the -// request body. This enables the following alternative definition of -// the update method: -// -// service Messaging { -// rpc UpdateMessage(Message) returns (Message) { -// option (google.api.http) = { -// put: "/v1/messages/{message_id}" -// body: "*" -// }; -// } -// } -// message Message { -// string message_id = 1; -// string text = 2; -// } -// -// -// The following HTTP JSON to RPC mapping is enabled: -// -// HTTP | RPC -// -----|----- -// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")` -// -// Note that when using `*` in the body mapping, it is not possible to -// have HTTP parameters, as all fields not bound by the path end in -// the body. This makes this option more rarely used in practice of -// defining REST APIs. The common usage of `*` is in custom methods -// which don't use the URL at all for transferring data. -// -// It is possible to define multiple HTTP methods for one RPC by using -// the `additional_bindings` option. Example: -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http) = { -// get: "/v1/messages/{message_id}" -// additional_bindings { -// get: "/v1/users/{user_id}/messages/{message_id}" -// } -// }; -// } -// } -// message GetMessageRequest { -// string message_id = 1; -// string user_id = 2; -// } -// -// -// This enables the following two alternative HTTP JSON to RPC -// mappings: -// -// HTTP | RPC -// -----|----- -// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` -// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")` -// -// # Rules for HTTP mapping -// -// The rules for mapping HTTP path, query parameters, and body fields -// to the request message are as follows: -// -// 1. The `body` field specifies either `*` or a field path, or is -// omitted. If omitted, it indicates there is no HTTP request body. -// 2. Leaf fields (recursive expansion of nested messages in the -// request) can be classified into three types: -// (a) Matched in the URL template. -// (b) Covered by body (if body is `*`, everything except (a) fields; -// else everything under the body field) -// (c) All other fields. -// 3. URL query parameters found in the HTTP request are mapped to (c) fields. -// 4. Any body sent with an HTTP request can contain only (b) fields. -// -// The syntax of the path template is as follows: -// -// Template = "/" Segments [ Verb ] ; -// Segments = Segment { "/" Segment } ; -// Segment = "*" | "**" | LITERAL | Variable ; -// Variable = "{" FieldPath [ "=" Segments ] "}" ; -// FieldPath = IDENT { "." IDENT } ; -// Verb = ":" LITERAL ; -// -// The syntax `*` matches a single path segment. The syntax `**` matches zero -// or more path segments, which must be the last part of the path except the -// `Verb`. The syntax `LITERAL` matches literal text in the path. -// -// The syntax `Variable` matches part of the URL path as specified by its -// template. A variable template must not contain other variables. If a variable -// matches a single path segment, its template may be omitted, e.g. `{var}` -// is equivalent to `{var=*}`. -// -// If a variable contains exactly one path segment, such as `"{var}"` or -// `"{var=*}"`, when such a variable is expanded into a URL path, all characters -// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the -// Discovery Document as `{var}`. -// -// If a variable contains one or more path segments, such as `"{var=foo/*}"` -// or `"{var=**}"`, when such a variable is expanded into a URL path, all -// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables -// show up in the Discovery Document as `{+var}`. -// -// NOTE: While the single segment variable matches the semantics of -// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 -// Simple String Expansion, the multi segment variable **does not** match -// RFC 6570 Reserved Expansion. The reason is that the Reserved Expansion -// does not expand special characters like `?` and `#`, which would lead -// to invalid URLs. -// -// NOTE: the field paths in variables and in the `body` must not refer to -// repeated fields or map fields. -type HttpRule struct { - // Selects methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"` - // Determines the URL pattern is matched by this rules. This pattern can be - // used with any of the {get|put|post|delete|patch} methods. A custom method - // can be defined using the 'custom' field. - // - // Types that are valid to be assigned to Pattern: - // *HttpRule_Get - // *HttpRule_Put - // *HttpRule_Post - // *HttpRule_Delete - // *HttpRule_Patch - // *HttpRule_Custom - Pattern isHttpRule_Pattern `protobuf_oneof:"pattern"` - // The name of the request field whose value is mapped to the HTTP body, or - // `*` for mapping all fields not captured by the path pattern to the HTTP - // body. NOTE: the referred field must not be a repeated field and must be - // present at the top-level of request message type. - Body string `protobuf:"bytes,7,opt,name=body" json:"body,omitempty"` - // Additional HTTP bindings for the selector. Nested bindings must - // not contain an `additional_bindings` field themselves (that is, - // the nesting may only be one level deep). - AdditionalBindings []*HttpRule `protobuf:"bytes,11,rep,name=additional_bindings,json=additionalBindings" json:"additional_bindings,omitempty"` -} - -func (m *HttpRule) Reset() { *m = HttpRule{} } -func (m *HttpRule) String() string { return proto.CompactTextString(m) } -func (*HttpRule) ProtoMessage() {} -func (*HttpRule) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -type isHttpRule_Pattern interface { - isHttpRule_Pattern() -} - -type HttpRule_Get struct { - Get string `protobuf:"bytes,2,opt,name=get,oneof"` -} -type HttpRule_Put struct { - Put string `protobuf:"bytes,3,opt,name=put,oneof"` -} -type HttpRule_Post struct { - Post string `protobuf:"bytes,4,opt,name=post,oneof"` -} -type HttpRule_Delete struct { - Delete string `protobuf:"bytes,5,opt,name=delete,oneof"` -} -type HttpRule_Patch struct { - Patch string `protobuf:"bytes,6,opt,name=patch,oneof"` -} -type HttpRule_Custom struct { - Custom *CustomHttpPattern `protobuf:"bytes,8,opt,name=custom,oneof"` -} - -func (*HttpRule_Get) isHttpRule_Pattern() {} -func (*HttpRule_Put) isHttpRule_Pattern() {} -func (*HttpRule_Post) isHttpRule_Pattern() {} -func (*HttpRule_Delete) isHttpRule_Pattern() {} -func (*HttpRule_Patch) isHttpRule_Pattern() {} -func (*HttpRule_Custom) isHttpRule_Pattern() {} - -func (m *HttpRule) GetPattern() isHttpRule_Pattern { - if m != nil { - return m.Pattern - } - return nil -} - -func (m *HttpRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - -func (m *HttpRule) GetGet() string { - if x, ok := m.GetPattern().(*HttpRule_Get); ok { - return x.Get - } - return "" -} - -func (m *HttpRule) GetPut() string { - if x, ok := m.GetPattern().(*HttpRule_Put); ok { - return x.Put - } - return "" -} - -func (m *HttpRule) GetPost() string { - if x, ok := m.GetPattern().(*HttpRule_Post); ok { - return x.Post - } - return "" -} - -func (m *HttpRule) GetDelete() string { - if x, ok := m.GetPattern().(*HttpRule_Delete); ok { - return x.Delete - } - return "" -} - -func (m *HttpRule) GetPatch() string { - if x, ok := m.GetPattern().(*HttpRule_Patch); ok { - return x.Patch - } - return "" -} - -func (m *HttpRule) GetCustom() *CustomHttpPattern { - if x, ok := m.GetPattern().(*HttpRule_Custom); ok { - return x.Custom - } - return nil -} - -func (m *HttpRule) GetBody() string { - if m != nil { - return m.Body - } - return "" -} - -func (m *HttpRule) GetAdditionalBindings() []*HttpRule { - if m != nil { - return m.AdditionalBindings - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*HttpRule) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _HttpRule_OneofMarshaler, _HttpRule_OneofUnmarshaler, _HttpRule_OneofSizer, []interface{}{ - (*HttpRule_Get)(nil), - (*HttpRule_Put)(nil), - (*HttpRule_Post)(nil), - (*HttpRule_Delete)(nil), - (*HttpRule_Patch)(nil), - (*HttpRule_Custom)(nil), - } -} - -func _HttpRule_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*HttpRule) - // pattern - switch x := m.Pattern.(type) { - case *HttpRule_Get: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Get) - case *HttpRule_Put: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Put) - case *HttpRule_Post: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Post) - case *HttpRule_Delete: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Delete) - case *HttpRule_Patch: - b.EncodeVarint(6<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Patch) - case *HttpRule_Custom: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Custom); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("HttpRule.Pattern has unexpected type %T", x) - } - return nil -} - -func _HttpRule_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*HttpRule) - switch tag { - case 2: // pattern.get - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Pattern = &HttpRule_Get{x} - return true, err - case 3: // pattern.put - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Pattern = &HttpRule_Put{x} - return true, err - case 4: // pattern.post - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Pattern = &HttpRule_Post{x} - return true, err - case 5: // pattern.delete - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Pattern = &HttpRule_Delete{x} - return true, err - case 6: // pattern.patch - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Pattern = &HttpRule_Patch{x} - return true, err - case 8: // pattern.custom - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CustomHttpPattern) - err := b.DecodeMessage(msg) - m.Pattern = &HttpRule_Custom{msg} - return true, err - default: - return false, nil - } -} - -func _HttpRule_OneofSizer(msg proto.Message) (n int) { - m := msg.(*HttpRule) - // pattern - switch x := m.Pattern.(type) { - case *HttpRule_Get: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Get))) - n += len(x.Get) - case *HttpRule_Put: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Put))) - n += len(x.Put) - case *HttpRule_Post: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Post))) - n += len(x.Post) - case *HttpRule_Delete: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Delete))) - n += len(x.Delete) - case *HttpRule_Patch: - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Patch))) - n += len(x.Patch) - case *HttpRule_Custom: - s := proto.Size(x.Custom) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A custom pattern is used for defining custom HTTP verb. -type CustomHttpPattern struct { - // The name of this custom HTTP verb. - Kind string `protobuf:"bytes,1,opt,name=kind" json:"kind,omitempty"` - // The path matched by this custom verb. - Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` -} - -func (m *CustomHttpPattern) Reset() { *m = CustomHttpPattern{} } -func (m *CustomHttpPattern) String() string { return proto.CompactTextString(m) } -func (*CustomHttpPattern) ProtoMessage() {} -func (*CustomHttpPattern) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *CustomHttpPattern) GetKind() string { - if m != nil { - return m.Kind - } - return "" -} - -func (m *CustomHttpPattern) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func init() { - proto.RegisterType((*Http)(nil), "google.api.Http") - proto.RegisterType((*HttpRule)(nil), "google.api.HttpRule") - proto.RegisterType((*CustomHttpPattern)(nil), "google.api.CustomHttpPattern") -} - -func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 401 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x41, 0xab, 0x13, 0x31, - 0x10, 0xc7, 0xdd, 0x76, 0xdb, 0xd7, 0x4e, 0x41, 0x30, 0x3e, 0x25, 0x88, 0x62, 0xe9, 0xa9, 0x78, - 0xd8, 0xc2, 0xf3, 0xe0, 0xe1, 0x9d, 0x5e, 0xb5, 0xf8, 0xbc, 0x95, 0x3d, 0x7a, 0x29, 0xe9, 0x66, - 0x4c, 0xa3, 0x79, 0x49, 0xd8, 0xcc, 0x8a, 0xfd, 0x3a, 0x7e, 0x07, 0xbf, 0x9b, 0x47, 0x49, 0x36, - 0xb5, 0x05, 0xc1, 0xdb, 0xfc, 0xff, 0xf3, 0xcb, 0xcc, 0x64, 0x18, 0x78, 0xa6, 0x9c, 0x53, 0x06, - 0x57, 0xc2, 0xeb, 0xd5, 0x81, 0xc8, 0x57, 0xbe, 0x75, 0xe4, 0x18, 0xf4, 0x76, 0x25, 0xbc, 0x5e, - 0x1c, 0xa1, 0xbc, 0x27, 0xf2, 0xec, 0x0d, 0x8c, 0xda, 0xce, 0x60, 0xe0, 0xc5, 0x7c, 0xb8, 0x9c, - 0xdd, 0x5c, 0x57, 0x67, 0xa6, 0x8a, 0x40, 0xdd, 0x19, 0xac, 0x7b, 0x84, 0x6d, 0xe0, 0xf5, 0x97, - 0xce, 0x98, 0xe3, 0x4e, 0x62, 0xe3, 0x24, 0xee, 0x5a, 0x0c, 0xd8, 0x7e, 0x47, 0xb9, 0xc3, 0x1f, - 0x5e, 0xd8, 0xa0, 0x9d, 0xe5, 0x83, 0x79, 0xb1, 0x9c, 0xd4, 0x2f, 0x13, 0xf6, 0x21, 0x51, 0x75, - 0x86, 0x36, 0x27, 0x66, 0xf1, 0x6b, 0x00, 0x93, 0x53, 0x69, 0xf6, 0x02, 0x26, 0x01, 0x0d, 0x36, - 0xe4, 0x5a, 0x5e, 0xcc, 0x8b, 0xe5, 0xb4, 0xfe, 0xab, 0x19, 0x83, 0xa1, 0x42, 0x4a, 0x35, 0xa7, - 0xf7, 0x8f, 0xea, 0x28, 0xa2, 0xe7, 0x3b, 0xe2, 0xc3, 0x93, 0xe7, 0x3b, 0x62, 0xd7, 0x50, 0x7a, - 0x17, 0x88, 0x97, 0xd9, 0x4c, 0x8a, 0x71, 0x18, 0x4b, 0x34, 0x48, 0xc8, 0x47, 0xd9, 0xcf, 0x9a, - 0x3d, 0x87, 0x91, 0x17, 0xd4, 0x1c, 0xf8, 0x38, 0x27, 0x7a, 0xc9, 0xde, 0xc1, 0xb8, 0xe9, 0x02, - 0xb9, 0x07, 0x3e, 0x99, 0x17, 0xcb, 0xd9, 0xcd, 0xab, 0xcb, 0x65, 0xbc, 0x4f, 0x99, 0x38, 0xf7, - 0x56, 0x10, 0x61, 0x6b, 0x63, 0xc1, 0x1e, 0x67, 0x0c, 0xca, 0xbd, 0x93, 0x47, 0x7e, 0x95, 0x3e, - 0x90, 0x62, 0xb6, 0x81, 0xa7, 0x42, 0x4a, 0x4d, 0xda, 0x59, 0x61, 0x76, 0x7b, 0x6d, 0xa5, 0xb6, - 0x2a, 0xf0, 0xd9, 0x7f, 0xd6, 0xcc, 0xce, 0x0f, 0xd6, 0x99, 0x5f, 0x4f, 0xe1, 0xca, 0xf7, 0xfd, - 0x16, 0xb7, 0xf0, 0xe4, 0x9f, 0x21, 0x62, 0xeb, 0x6f, 0xda, 0xca, 0xbc, 0xbb, 0x14, 0x47, 0xcf, - 0x0b, 0x3a, 0xf4, 0x8b, 0xab, 0x53, 0xbc, 0xfe, 0x0a, 0x8f, 0x1b, 0xf7, 0x70, 0xd1, 0x76, 0x3d, - 0x4d, 0x65, 0xe2, 0x61, 0x6c, 0x8b, 0xcf, 0x77, 0x39, 0xa1, 0x9c, 0x11, 0x56, 0x55, 0xae, 0x55, - 0x2b, 0x85, 0x36, 0x9d, 0xcd, 0xaa, 0x4f, 0x09, 0xaf, 0x43, 0x3a, 0x28, 0x61, 0xad, 0x23, 0x11, - 0xc7, 0x0c, 0xb7, 0x17, 0xf1, 0xef, 0xa2, 0xf8, 0x39, 0x28, 0x3f, 0xde, 0x6d, 0x3f, 0xed, 0xc7, - 0xe9, 0xdd, 0xdb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x73, 0x2c, 0xed, 0xfb, 0x87, 0x02, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/authorization_config.pb.go b/vendor/google.golang.org/genproto/googleapis/api/authorization_config.pb.go deleted file mode 100644 index 8062b961..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/authorization_config.pb.go +++ /dev/null @@ -1,80 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/experimental/authorization_config.proto - -/* -Package api is a generated protocol buffer package. - -It is generated from these files: - google/api/experimental/authorization_config.proto - google/api/experimental/experimental.proto - -It has these top-level messages: - AuthorizationConfig - Experimental -*/ -package api - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Configuration of authorization. -// -// This section determines the authorization provider, if unspecified, then no -// authorization check will be done. -// -// Example: -// -// experimental: -// authorization: -// provider: firebaserules.googleapis.com -type AuthorizationConfig struct { - // The name of the authorization provider, such as - // firebaserules.googleapis.com. - Provider string `protobuf:"bytes,1,opt,name=provider" json:"provider,omitempty"` -} - -func (m *AuthorizationConfig) Reset() { *m = AuthorizationConfig{} } -func (m *AuthorizationConfig) String() string { return proto.CompactTextString(m) } -func (*AuthorizationConfig) ProtoMessage() {} -func (*AuthorizationConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *AuthorizationConfig) GetProvider() string { - if m != nil { - return m.Provider - } - return "" -} - -func init() { - proto.RegisterType((*AuthorizationConfig)(nil), "google.api.AuthorizationConfig") -} - -func init() { proto.RegisterFile("google/api/experimental/authorization_config.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 180 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x4a, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xad, 0x28, 0x48, 0x2d, 0xca, 0xcc, 0x4d, 0xcd, - 0x2b, 0x49, 0xcc, 0xd1, 0x4f, 0x2c, 0x2d, 0xc9, 0xc8, 0x2f, 0xca, 0xac, 0x4a, 0x2c, 0xc9, 0xcc, - 0xcf, 0x8b, 0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, - 0x82, 0xe8, 0xd1, 0x4b, 0x2c, 0xc8, 0x54, 0x32, 0xe4, 0x12, 0x76, 0x44, 0x56, 0xe9, 0x0c, 0x56, - 0x28, 0x24, 0xc5, 0xc5, 0x51, 0x50, 0x94, 0x5f, 0x96, 0x99, 0x92, 0x5a, 0x24, 0xc1, 0xa8, 0xc0, - 0xa8, 0xc1, 0x19, 0x04, 0xe7, 0x3b, 0x25, 0x71, 0xf1, 0x25, 0xe7, 0xe7, 0xea, 0x21, 0x0c, 0x71, - 0x92, 0xc0, 0x62, 0x44, 0x00, 0xc8, 0xaa, 0x00, 0xc6, 0x28, 0x5d, 0xa8, 0xba, 0xf4, 0xfc, 0x9c, - 0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74, 0xfd, 0xf4, 0xd4, 0x3c, 0xb0, 0x43, 0xf4, 0x21, 0x52, - 0x89, 0x05, 0x99, 0xc5, 0x20, 0xf7, 0x5b, 0x27, 0x16, 0x64, 0x2e, 0x62, 0x62, 0x71, 0x77, 0x0c, - 0xf0, 0x4c, 0x62, 0x03, 0x2b, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x52, 0x27, 0x0c, 0xba, - 0xdf, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/configchange/config_change.pb.go b/vendor/google.golang.org/genproto/googleapis/api/configchange/config_change.pb.go deleted file mode 100644 index cf415000..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/configchange/config_change.pb.go +++ /dev/null @@ -1,189 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/config_change.proto - -/* -Package configchange is a generated protocol buffer package. - -It is generated from these files: - google/api/config_change.proto - -It has these top-level messages: - ConfigChange - Advice -*/ -package configchange - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Classifies set of possible modifications to an object in the service -// configuration. -type ChangeType int32 - -const ( - // No value was provided. - ChangeType_CHANGE_TYPE_UNSPECIFIED ChangeType = 0 - // The changed object exists in the 'new' service configuration, but not - // in the 'old' service configuration. - ChangeType_ADDED ChangeType = 1 - // The changed object exists in the 'old' service configuration, but not - // in the 'new' service configuration. - ChangeType_REMOVED ChangeType = 2 - // The changed object exists in both service configurations, but its value - // is different. - ChangeType_MODIFIED ChangeType = 3 -) - -var ChangeType_name = map[int32]string{ - 0: "CHANGE_TYPE_UNSPECIFIED", - 1: "ADDED", - 2: "REMOVED", - 3: "MODIFIED", -} -var ChangeType_value = map[string]int32{ - "CHANGE_TYPE_UNSPECIFIED": 0, - "ADDED": 1, - "REMOVED": 2, - "MODIFIED": 3, -} - -func (x ChangeType) String() string { - return proto.EnumName(ChangeType_name, int32(x)) -} -func (ChangeType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Output generated from semantically comparing two versions of a service -// configuration. -// -// Includes detailed information about a field that have changed with -// applicable advice about potential consequences for the change, such as -// backwards-incompatibility. -type ConfigChange struct { - // Object hierarchy path to the change, with levels separated by a '.' - // character. For repeated fields, an applicable unique identifier field is - // used for the index (usually selector, name, or id). For maps, the term - // 'key' is used. If the field has no unique identifier, the numeric index - // is used. - // Examples: - // - visibility.rules[selector=="google.LibraryService.CreateBook"].restriction - // - quota.metric_rules[selector=="google"].metric_costs[key=="reads"].value - // - logging.producer_destinations[0] - Element string `protobuf:"bytes,1,opt,name=element" json:"element,omitempty"` - // Value of the changed object in the old Service configuration, - // in JSON format. This field will not be populated if ChangeType == ADDED. - OldValue string `protobuf:"bytes,2,opt,name=old_value,json=oldValue" json:"old_value,omitempty"` - // Value of the changed object in the new Service configuration, - // in JSON format. This field will not be populated if ChangeType == REMOVED. - NewValue string `protobuf:"bytes,3,opt,name=new_value,json=newValue" json:"new_value,omitempty"` - // The type for this change, either ADDED, REMOVED, or MODIFIED. - ChangeType ChangeType `protobuf:"varint,4,opt,name=change_type,json=changeType,enum=google.api.ChangeType" json:"change_type,omitempty"` - // Collection of advice provided for this change, useful for determining the - // possible impact of this change. - Advices []*Advice `protobuf:"bytes,5,rep,name=advices" json:"advices,omitempty"` -} - -func (m *ConfigChange) Reset() { *m = ConfigChange{} } -func (m *ConfigChange) String() string { return proto.CompactTextString(m) } -func (*ConfigChange) ProtoMessage() {} -func (*ConfigChange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ConfigChange) GetElement() string { - if m != nil { - return m.Element - } - return "" -} - -func (m *ConfigChange) GetOldValue() string { - if m != nil { - return m.OldValue - } - return "" -} - -func (m *ConfigChange) GetNewValue() string { - if m != nil { - return m.NewValue - } - return "" -} - -func (m *ConfigChange) GetChangeType() ChangeType { - if m != nil { - return m.ChangeType - } - return ChangeType_CHANGE_TYPE_UNSPECIFIED -} - -func (m *ConfigChange) GetAdvices() []*Advice { - if m != nil { - return m.Advices - } - return nil -} - -// Generated advice about this change, used for providing more -// information about how a change will affect the existing service. -type Advice struct { - // Useful description for why this advice was applied and what actions should - // be taken to mitigate any implied risks. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *Advice) Reset() { *m = Advice{} } -func (m *Advice) String() string { return proto.CompactTextString(m) } -func (*Advice) ProtoMessage() {} -func (*Advice) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Advice) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func init() { - proto.RegisterType((*ConfigChange)(nil), "google.api.ConfigChange") - proto.RegisterType((*Advice)(nil), "google.api.Advice") - proto.RegisterEnum("google.api.ChangeType", ChangeType_name, ChangeType_value) -} - -func init() { proto.RegisterFile("google/api/config_change.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 338 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x91, 0xcd, 0x4e, 0xc2, 0x40, - 0x14, 0x85, 0x2d, 0xff, 0xdc, 0x12, 0x82, 0xb3, 0xd0, 0x26, 0x24, 0xa6, 0x61, 0x45, 0x88, 0x69, - 0x13, 0x5c, 0xb8, 0x70, 0x55, 0xda, 0x8a, 0x2c, 0x80, 0xa6, 0x22, 0x89, 0x6e, 0x9a, 0xb1, 0x1d, - 0xc7, 0x49, 0xca, 0xcc, 0x08, 0x15, 0xc2, 0xeb, 0xf8, 0x36, 0xbe, 0x95, 0xa1, 0x03, 0xd2, 0xdd, - 0x9c, 0xf9, 0xce, 0xcd, 0x3d, 0x39, 0x17, 0x6e, 0xa8, 0x10, 0x34, 0x25, 0x36, 0x96, 0xcc, 0x8e, - 0x05, 0xff, 0x60, 0x34, 0x8a, 0x3f, 0x31, 0xa7, 0xc4, 0x92, 0x6b, 0x91, 0x09, 0x04, 0x8a, 0x5b, - 0x58, 0xb2, 0xde, 0xaf, 0x06, 0x2d, 0x37, 0xf7, 0xb8, 0xb9, 0x05, 0x19, 0x50, 0x27, 0x29, 0x59, - 0x11, 0x9e, 0x19, 0x9a, 0xa9, 0xf5, 0x9b, 0xe1, 0x49, 0xa2, 0x2e, 0x34, 0x45, 0x9a, 0x44, 0x5b, - 0x9c, 0x7e, 0x13, 0xa3, 0x94, 0xb3, 0x86, 0x48, 0x93, 0xe5, 0x41, 0x1f, 0x20, 0x27, 0xbb, 0x23, - 0x2c, 0x2b, 0xc8, 0xc9, 0x4e, 0xc1, 0x7b, 0xd0, 0x55, 0x80, 0x28, 0xdb, 0x4b, 0x62, 0x54, 0x4c, - 0xad, 0xdf, 0x1e, 0x5e, 0x59, 0xe7, 0x18, 0x96, 0x5a, 0xbe, 0xd8, 0x4b, 0x12, 0x42, 0xfc, 0xff, - 0x46, 0xb7, 0x50, 0xc7, 0xc9, 0x96, 0xc5, 0x64, 0x63, 0x54, 0xcd, 0x72, 0x5f, 0x1f, 0xa2, 0xe2, - 0x90, 0x93, 0xa3, 0xf0, 0x64, 0xe9, 0x0d, 0xa0, 0xa6, 0xbe, 0x90, 0x09, 0x7a, 0x42, 0x36, 0xf1, - 0x9a, 0xc9, 0x8c, 0x09, 0x7e, 0x0c, 0x5b, 0xfc, 0x1a, 0xcc, 0x01, 0xce, 0x3b, 0x51, 0x17, 0xae, - 0xdd, 0x27, 0x67, 0x36, 0xf6, 0xa3, 0xc5, 0x6b, 0xe0, 0x47, 0x2f, 0xb3, 0xe7, 0xc0, 0x77, 0x27, - 0x8f, 0x13, 0xdf, 0xeb, 0x5c, 0xa0, 0x26, 0x54, 0x1d, 0xcf, 0xf3, 0xbd, 0x8e, 0x86, 0x74, 0xa8, - 0x87, 0xfe, 0x74, 0xbe, 0xf4, 0xbd, 0x4e, 0x09, 0xb5, 0xa0, 0x31, 0x9d, 0x7b, 0xca, 0x55, 0x1e, - 0x7d, 0x41, 0x3b, 0x16, 0xab, 0x42, 0xbc, 0xd1, 0x65, 0xb1, 0xd7, 0xe0, 0xd0, 0x7c, 0xa0, 0xbd, - 0xb9, 0x47, 0x03, 0x15, 0x29, 0xe6, 0xd4, 0x12, 0x6b, 0x6a, 0x53, 0xc2, 0xf3, 0xbb, 0xd8, 0x0a, - 0x61, 0xc9, 0x36, 0x85, 0xd3, 0xa9, 0x36, 0x1e, 0x8a, 0xe2, 0xa7, 0x54, 0x19, 0x3b, 0xc1, 0xe4, - 0xbd, 0x96, 0x8f, 0xdd, 0xfd, 0x05, 0x00, 0x00, 0xff, 0xff, 0x46, 0x8b, 0xd3, 0xf5, 0xf0, 0x01, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/distribution/distribution.pb.go b/vendor/google.golang.org/genproto/googleapis/api/distribution/distribution.pb.go deleted file mode 100644 index 68b702a1..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/distribution/distribution.pb.go +++ /dev/null @@ -1,506 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/distribution.proto - -/* -Package distribution is a generated protocol buffer package. - -It is generated from these files: - google/api/distribution.proto - -It has these top-level messages: - Distribution -*/ -package distribution - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "github.com/golang/protobuf/ptypes/any" -import _ "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Distribution contains summary statistics for a population of values and, -// optionally, a histogram representing the distribution of those values across -// a specified set of histogram buckets. -// -// The summary statistics are the count, mean, sum of the squared deviation from -// the mean, the minimum, and the maximum of the set of population of values. -// -// The histogram is based on a sequence of buckets and gives a count of values -// that fall into each bucket. The boundaries of the buckets are given either -// explicitly or by specifying parameters for a method of computing them -// (buckets of fixed width or buckets of exponentially increasing width). -// -// Although it is not forbidden, it is generally a bad idea to include -// non-finite values (infinities or NaNs) in the population of values, as this -// will render the `mean` and `sum_of_squared_deviation` fields meaningless. -type Distribution struct { - // The number of values in the population. Must be non-negative. - Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"` - // The arithmetic mean of the values in the population. If `count` is zero - // then this field must be zero. - Mean float64 `protobuf:"fixed64,2,opt,name=mean" json:"mean,omitempty"` - // The sum of squared deviations from the mean of the values in the - // population. For values x_i this is: - // - // Sum[i=1..n]((x_i - mean)^2) - // - // Knuth, "The Art of Computer Programming", Vol. 2, page 323, 3rd edition - // describes Welford's method for accumulating this sum in one pass. - // - // If `count` is zero then this field must be zero. - SumOfSquaredDeviation float64 `protobuf:"fixed64,3,opt,name=sum_of_squared_deviation,json=sumOfSquaredDeviation" json:"sum_of_squared_deviation,omitempty"` - // If specified, contains the range of the population values. The field - // must not be present if the `count` is zero. - Range *Distribution_Range `protobuf:"bytes,4,opt,name=range" json:"range,omitempty"` - // Defines the histogram bucket boundaries. - BucketOptions *Distribution_BucketOptions `protobuf:"bytes,6,opt,name=bucket_options,json=bucketOptions" json:"bucket_options,omitempty"` - // If `bucket_options` is given, then the sum of the values in `bucket_counts` - // must equal the value in `count`. If `bucket_options` is not given, no - // `bucket_counts` fields may be given. - // - // Bucket counts are given in order under the numbering scheme described - // above (the underflow bucket has number 0; the finite buckets, if any, - // have numbers 1 through N-2; the overflow bucket has number N-1). - // - // The size of `bucket_counts` must be no greater than N as defined in - // `bucket_options`. - // - // Any suffix of trailing zero bucket_count fields may be omitted. - BucketCounts []int64 `protobuf:"varint,7,rep,packed,name=bucket_counts,json=bucketCounts" json:"bucket_counts,omitempty"` -} - -func (m *Distribution) Reset() { *m = Distribution{} } -func (m *Distribution) String() string { return proto.CompactTextString(m) } -func (*Distribution) ProtoMessage() {} -func (*Distribution) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Distribution) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -func (m *Distribution) GetMean() float64 { - if m != nil { - return m.Mean - } - return 0 -} - -func (m *Distribution) GetSumOfSquaredDeviation() float64 { - if m != nil { - return m.SumOfSquaredDeviation - } - return 0 -} - -func (m *Distribution) GetRange() *Distribution_Range { - if m != nil { - return m.Range - } - return nil -} - -func (m *Distribution) GetBucketOptions() *Distribution_BucketOptions { - if m != nil { - return m.BucketOptions - } - return nil -} - -func (m *Distribution) GetBucketCounts() []int64 { - if m != nil { - return m.BucketCounts - } - return nil -} - -// The range of the population values. -type Distribution_Range struct { - // The minimum of the population values. - Min float64 `protobuf:"fixed64,1,opt,name=min" json:"min,omitempty"` - // The maximum of the population values. - Max float64 `protobuf:"fixed64,2,opt,name=max" json:"max,omitempty"` -} - -func (m *Distribution_Range) Reset() { *m = Distribution_Range{} } -func (m *Distribution_Range) String() string { return proto.CompactTextString(m) } -func (*Distribution_Range) ProtoMessage() {} -func (*Distribution_Range) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -func (m *Distribution_Range) GetMin() float64 { - if m != nil { - return m.Min - } - return 0 -} - -func (m *Distribution_Range) GetMax() float64 { - if m != nil { - return m.Max - } - return 0 -} - -// A Distribution may optionally contain a histogram of the values in the -// population. The histogram is given in `bucket_counts` as counts of values -// that fall into one of a sequence of non-overlapping buckets. The sequence -// of buckets is described by `bucket_options`. -// -// A bucket specifies an inclusive lower bound and exclusive upper bound for -// the values that are counted for that bucket. The upper bound of a bucket -// is strictly greater than the lower bound. -// -// The sequence of N buckets for a Distribution consists of an underflow -// bucket (number 0), zero or more finite buckets (number 1 through N - 2) and -// an overflow bucket (number N - 1). The buckets are contiguous: the lower -// bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. -// The buckets span the whole range of finite values: lower bound of the -// underflow bucket is -infinity and the upper bound of the overflow bucket is -// +infinity. The finite buckets are so-called because both bounds are -// finite. -// -// `BucketOptions` describes bucket boundaries in one of three ways. Two -// describe the boundaries by giving parameters for a formula to generate -// boundaries and one gives the bucket boundaries explicitly. -// -// If `bucket_boundaries` is not given, then no `bucket_counts` may be given. -type Distribution_BucketOptions struct { - // Exactly one of these three fields must be set. - // - // Types that are valid to be assigned to Options: - // *Distribution_BucketOptions_LinearBuckets - // *Distribution_BucketOptions_ExponentialBuckets - // *Distribution_BucketOptions_ExplicitBuckets - Options isDistribution_BucketOptions_Options `protobuf_oneof:"options"` -} - -func (m *Distribution_BucketOptions) Reset() { *m = Distribution_BucketOptions{} } -func (m *Distribution_BucketOptions) String() string { return proto.CompactTextString(m) } -func (*Distribution_BucketOptions) ProtoMessage() {} -func (*Distribution_BucketOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 1} } - -type isDistribution_BucketOptions_Options interface { - isDistribution_BucketOptions_Options() -} - -type Distribution_BucketOptions_LinearBuckets struct { - LinearBuckets *Distribution_BucketOptions_Linear `protobuf:"bytes,1,opt,name=linear_buckets,json=linearBuckets,oneof"` -} -type Distribution_BucketOptions_ExponentialBuckets struct { - ExponentialBuckets *Distribution_BucketOptions_Exponential `protobuf:"bytes,2,opt,name=exponential_buckets,json=exponentialBuckets,oneof"` -} -type Distribution_BucketOptions_ExplicitBuckets struct { - ExplicitBuckets *Distribution_BucketOptions_Explicit `protobuf:"bytes,3,opt,name=explicit_buckets,json=explicitBuckets,oneof"` -} - -func (*Distribution_BucketOptions_LinearBuckets) isDistribution_BucketOptions_Options() {} -func (*Distribution_BucketOptions_ExponentialBuckets) isDistribution_BucketOptions_Options() {} -func (*Distribution_BucketOptions_ExplicitBuckets) isDistribution_BucketOptions_Options() {} - -func (m *Distribution_BucketOptions) GetOptions() isDistribution_BucketOptions_Options { - if m != nil { - return m.Options - } - return nil -} - -func (m *Distribution_BucketOptions) GetLinearBuckets() *Distribution_BucketOptions_Linear { - if x, ok := m.GetOptions().(*Distribution_BucketOptions_LinearBuckets); ok { - return x.LinearBuckets - } - return nil -} - -func (m *Distribution_BucketOptions) GetExponentialBuckets() *Distribution_BucketOptions_Exponential { - if x, ok := m.GetOptions().(*Distribution_BucketOptions_ExponentialBuckets); ok { - return x.ExponentialBuckets - } - return nil -} - -func (m *Distribution_BucketOptions) GetExplicitBuckets() *Distribution_BucketOptions_Explicit { - if x, ok := m.GetOptions().(*Distribution_BucketOptions_ExplicitBuckets); ok { - return x.ExplicitBuckets - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Distribution_BucketOptions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Distribution_BucketOptions_OneofMarshaler, _Distribution_BucketOptions_OneofUnmarshaler, _Distribution_BucketOptions_OneofSizer, []interface{}{ - (*Distribution_BucketOptions_LinearBuckets)(nil), - (*Distribution_BucketOptions_ExponentialBuckets)(nil), - (*Distribution_BucketOptions_ExplicitBuckets)(nil), - } -} - -func _Distribution_BucketOptions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Distribution_BucketOptions) - // options - switch x := m.Options.(type) { - case *Distribution_BucketOptions_LinearBuckets: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.LinearBuckets); err != nil { - return err - } - case *Distribution_BucketOptions_ExponentialBuckets: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ExponentialBuckets); err != nil { - return err - } - case *Distribution_BucketOptions_ExplicitBuckets: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ExplicitBuckets); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Distribution_BucketOptions.Options has unexpected type %T", x) - } - return nil -} - -func _Distribution_BucketOptions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Distribution_BucketOptions) - switch tag { - case 1: // options.linear_buckets - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Distribution_BucketOptions_Linear) - err := b.DecodeMessage(msg) - m.Options = &Distribution_BucketOptions_LinearBuckets{msg} - return true, err - case 2: // options.exponential_buckets - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Distribution_BucketOptions_Exponential) - err := b.DecodeMessage(msg) - m.Options = &Distribution_BucketOptions_ExponentialBuckets{msg} - return true, err - case 3: // options.explicit_buckets - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Distribution_BucketOptions_Explicit) - err := b.DecodeMessage(msg) - m.Options = &Distribution_BucketOptions_ExplicitBuckets{msg} - return true, err - default: - return false, nil - } -} - -func _Distribution_BucketOptions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Distribution_BucketOptions) - // options - switch x := m.Options.(type) { - case *Distribution_BucketOptions_LinearBuckets: - s := proto.Size(x.LinearBuckets) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Distribution_BucketOptions_ExponentialBuckets: - s := proto.Size(x.ExponentialBuckets) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Distribution_BucketOptions_ExplicitBuckets: - s := proto.Size(x.ExplicitBuckets) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Specify a sequence of buckets that all have the same width (except -// overflow and underflow). Each bucket represents a constant absolute -// uncertainty on the specific value in the bucket. -// -// Defines `num_finite_buckets + 2` (= N) buckets with these boundaries for -// bucket `i`: -// -// Upper bound (0 <= i < N-1): offset + (width * i). -// Lower bound (1 <= i < N): offset + (width * (i - 1)). -type Distribution_BucketOptions_Linear struct { - // Must be greater than 0. - NumFiniteBuckets int32 `protobuf:"varint,1,opt,name=num_finite_buckets,json=numFiniteBuckets" json:"num_finite_buckets,omitempty"` - // Must be greater than 0. - Width float64 `protobuf:"fixed64,2,opt,name=width" json:"width,omitempty"` - // Lower bound of the first bucket. - Offset float64 `protobuf:"fixed64,3,opt,name=offset" json:"offset,omitempty"` -} - -func (m *Distribution_BucketOptions_Linear) Reset() { *m = Distribution_BucketOptions_Linear{} } -func (m *Distribution_BucketOptions_Linear) String() string { return proto.CompactTextString(m) } -func (*Distribution_BucketOptions_Linear) ProtoMessage() {} -func (*Distribution_BucketOptions_Linear) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 1, 0} -} - -func (m *Distribution_BucketOptions_Linear) GetNumFiniteBuckets() int32 { - if m != nil { - return m.NumFiniteBuckets - } - return 0 -} - -func (m *Distribution_BucketOptions_Linear) GetWidth() float64 { - if m != nil { - return m.Width - } - return 0 -} - -func (m *Distribution_BucketOptions_Linear) GetOffset() float64 { - if m != nil { - return m.Offset - } - return 0 -} - -// Specify a sequence of buckets that have a width that is proportional to -// the value of the lower bound. Each bucket represents a constant relative -// uncertainty on a specific value in the bucket. -// -// Defines `num_finite_buckets + 2` (= N) buckets with these boundaries for -// bucket i: -// -// Upper bound (0 <= i < N-1): scale * (growth_factor ^ i). -// Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)). -type Distribution_BucketOptions_Exponential struct { - // Must be greater than 0. - NumFiniteBuckets int32 `protobuf:"varint,1,opt,name=num_finite_buckets,json=numFiniteBuckets" json:"num_finite_buckets,omitempty"` - // Must be greater than 1. - GrowthFactor float64 `protobuf:"fixed64,2,opt,name=growth_factor,json=growthFactor" json:"growth_factor,omitempty"` - // Must be greater than 0. - Scale float64 `protobuf:"fixed64,3,opt,name=scale" json:"scale,omitempty"` -} - -func (m *Distribution_BucketOptions_Exponential) Reset() { - *m = Distribution_BucketOptions_Exponential{} -} -func (m *Distribution_BucketOptions_Exponential) String() string { return proto.CompactTextString(m) } -func (*Distribution_BucketOptions_Exponential) ProtoMessage() {} -func (*Distribution_BucketOptions_Exponential) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 1, 1} -} - -func (m *Distribution_BucketOptions_Exponential) GetNumFiniteBuckets() int32 { - if m != nil { - return m.NumFiniteBuckets - } - return 0 -} - -func (m *Distribution_BucketOptions_Exponential) GetGrowthFactor() float64 { - if m != nil { - return m.GrowthFactor - } - return 0 -} - -func (m *Distribution_BucketOptions_Exponential) GetScale() float64 { - if m != nil { - return m.Scale - } - return 0 -} - -// A set of buckets with arbitrary widths. -// -// Defines `size(bounds) + 1` (= N) buckets with these boundaries for -// bucket i: -// -// Upper bound (0 <= i < N-1): bounds[i] -// Lower bound (1 <= i < N); bounds[i - 1] -// -// There must be at least one element in `bounds`. If `bounds` has only one -// element, there are no finite buckets, and that single element is the -// common boundary of the overflow and underflow buckets. -type Distribution_BucketOptions_Explicit struct { - // The values must be monotonically increasing. - Bounds []float64 `protobuf:"fixed64,1,rep,packed,name=bounds" json:"bounds,omitempty"` -} - -func (m *Distribution_BucketOptions_Explicit) Reset() { *m = Distribution_BucketOptions_Explicit{} } -func (m *Distribution_BucketOptions_Explicit) String() string { return proto.CompactTextString(m) } -func (*Distribution_BucketOptions_Explicit) ProtoMessage() {} -func (*Distribution_BucketOptions_Explicit) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 1, 2} -} - -func (m *Distribution_BucketOptions_Explicit) GetBounds() []float64 { - if m != nil { - return m.Bounds - } - return nil -} - -func init() { - proto.RegisterType((*Distribution)(nil), "google.api.Distribution") - proto.RegisterType((*Distribution_Range)(nil), "google.api.Distribution.Range") - proto.RegisterType((*Distribution_BucketOptions)(nil), "google.api.Distribution.BucketOptions") - proto.RegisterType((*Distribution_BucketOptions_Linear)(nil), "google.api.Distribution.BucketOptions.Linear") - proto.RegisterType((*Distribution_BucketOptions_Exponential)(nil), "google.api.Distribution.BucketOptions.Exponential") - proto.RegisterType((*Distribution_BucketOptions_Explicit)(nil), "google.api.Distribution.BucketOptions.Explicit") -} - -func init() { proto.RegisterFile("google/api/distribution.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 544 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x5d, 0x6f, 0xd3, 0x30, - 0x14, 0x5d, 0x96, 0xb5, 0x85, 0xdb, 0x0f, 0x8a, 0x19, 0x28, 0x44, 0x7c, 0x54, 0x9b, 0x84, 0x2a, - 0x01, 0x89, 0x54, 0x90, 0x78, 0xe0, 0xad, 0x1b, 0x53, 0x1f, 0x40, 0x9b, 0x8c, 0xc4, 0x03, 0x42, - 0x8a, 0x9c, 0xc4, 0xc9, 0x0c, 0x89, 0x1d, 0x62, 0x67, 0x2b, 0xef, 0xfc, 0x29, 0xfe, 0x1d, 0x8a, - 0xed, 0x6e, 0x19, 0x08, 0xa9, 0xbc, 0xf9, 0xde, 0x73, 0x7c, 0xce, 0xb9, 0x57, 0x71, 0xe0, 0x71, - 0x2e, 0x44, 0x5e, 0xd0, 0x90, 0x54, 0x2c, 0x4c, 0x99, 0x54, 0x35, 0x8b, 0x1b, 0xc5, 0x04, 0x0f, - 0xaa, 0x5a, 0x28, 0x81, 0xc0, 0xc0, 0x01, 0xa9, 0x98, 0xff, 0xa8, 0x43, 0x25, 0x9c, 0x0b, 0x45, - 0x5a, 0xa2, 0x34, 0x4c, 0xff, 0xa1, 0x45, 0x75, 0x15, 0x37, 0x59, 0x48, 0xf8, 0x0f, 0x0b, 0x3d, - 0xfd, 0x13, 0x52, 0xac, 0xa4, 0x52, 0x91, 0xb2, 0x32, 0x84, 0x83, 0x9f, 0x03, 0x18, 0x1d, 0x77, - 0xcc, 0xd1, 0x3e, 0xf4, 0x12, 0xd1, 0x70, 0xe5, 0x39, 0x33, 0x67, 0xee, 0x62, 0x53, 0x20, 0x04, - 0x7b, 0x25, 0x25, 0xdc, 0xdb, 0x9d, 0x39, 0x73, 0x07, 0xeb, 0x33, 0x7a, 0x03, 0x9e, 0x6c, 0xca, - 0x48, 0x64, 0x91, 0xfc, 0xde, 0x90, 0x9a, 0xa6, 0x51, 0x4a, 0x2f, 0x98, 0x4e, 0xe6, 0xb9, 0x9a, - 0x77, 0x5f, 0x36, 0xe5, 0x69, 0xf6, 0xd1, 0xa0, 0xc7, 0x1b, 0x10, 0xbd, 0x86, 0x5e, 0x4d, 0x78, - 0x4e, 0xbd, 0xbd, 0x99, 0x33, 0x1f, 0x2e, 0x9e, 0x04, 0xd7, 0x93, 0x06, 0xdd, 0x2c, 0x01, 0x6e, - 0x59, 0xd8, 0x90, 0xd1, 0x07, 0x98, 0xc4, 0x4d, 0xf2, 0x8d, 0xaa, 0x48, 0x54, 0x7a, 0x7a, 0xaf, - 0xaf, 0xaf, 0x3f, 0xfb, 0xe7, 0xf5, 0xa5, 0xa6, 0x9f, 0x1a, 0x36, 0x1e, 0xc7, 0xdd, 0x12, 0x1d, - 0x82, 0x6d, 0x44, 0x7a, 0x42, 0xe9, 0x0d, 0x66, 0xee, 0xdc, 0xc5, 0x23, 0xd3, 0x3c, 0xd2, 0x3d, - 0xff, 0x39, 0xf4, 0x74, 0x06, 0x34, 0x05, 0xb7, 0x64, 0x5c, 0xef, 0xc4, 0xc1, 0xed, 0x51, 0x77, - 0xc8, 0xda, 0x2e, 0xa4, 0x3d, 0xfa, 0xbf, 0xf6, 0x60, 0x7c, 0xc3, 0x12, 0x7d, 0x82, 0x49, 0xc1, - 0x38, 0x25, 0x75, 0x64, 0x54, 0xa5, 0x16, 0x18, 0x2e, 0x5e, 0x6e, 0x17, 0x39, 0x78, 0xaf, 0x2f, - 0xaf, 0x76, 0xf0, 0xd8, 0xc8, 0x18, 0x54, 0x22, 0x0a, 0xf7, 0xe8, 0xba, 0x12, 0x9c, 0x72, 0xc5, - 0x48, 0x71, 0x25, 0xbe, 0xab, 0xc5, 0x17, 0x5b, 0x8a, 0xbf, 0xbb, 0x56, 0x58, 0xed, 0x60, 0xd4, - 0x11, 0xdc, 0xd8, 0x7c, 0x81, 0x29, 0x5d, 0x57, 0x05, 0x4b, 0x98, 0xba, 0xf2, 0x70, 0xb5, 0x47, - 0xb8, 0xbd, 0x87, 0xbe, 0xbe, 0xda, 0xc1, 0x77, 0x36, 0x52, 0x56, 0xdd, 0x4f, 0xa1, 0x6f, 0xe6, - 0x43, 0x2f, 0x00, 0xf1, 0xa6, 0x8c, 0x32, 0xc6, 0x99, 0xa2, 0x37, 0x56, 0xd5, 0xc3, 0x53, 0xde, - 0x94, 0x27, 0x1a, 0xd8, 0xa4, 0xda, 0x87, 0xde, 0x25, 0x4b, 0xd5, 0xb9, 0x5d, 0xbd, 0x29, 0xd0, - 0x03, 0xe8, 0x8b, 0x2c, 0x93, 0x54, 0xd9, 0x4f, 0xcf, 0x56, 0xfe, 0x05, 0x0c, 0x3b, 0x83, 0xfe, - 0xa7, 0xd5, 0x21, 0x8c, 0xf3, 0x5a, 0x5c, 0xaa, 0xf3, 0x28, 0x23, 0x89, 0x12, 0xb5, 0xb5, 0x1c, - 0x99, 0xe6, 0x89, 0xee, 0xb5, 0x79, 0x64, 0x42, 0x0a, 0x6a, 0x8d, 0x4d, 0xe1, 0x1f, 0xc0, 0xad, - 0xcd, 0xf0, 0x6d, 0xb6, 0x58, 0x34, 0x3c, 0x6d, 0x8d, 0xdc, 0x36, 0x9b, 0xa9, 0x96, 0xb7, 0x61, - 0x60, 0x3f, 0xe5, 0xe5, 0x57, 0x98, 0x24, 0xa2, 0xec, 0x6c, 0x75, 0x79, 0xb7, 0xbb, 0xd6, 0xb3, - 0xf6, 0xad, 0x9e, 0x39, 0x9f, 0x8f, 0x2c, 0x21, 0x17, 0x05, 0xe1, 0x79, 0x20, 0xea, 0x3c, 0xcc, - 0x29, 0xd7, 0x2f, 0x39, 0x34, 0x10, 0xa9, 0x98, 0xfc, 0xeb, 0x8f, 0xf2, 0xb6, 0x5b, 0xc4, 0x7d, - 0xcd, 0x7f, 0xf5, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x88, 0x8e, 0xc5, 0x4b, 0x80, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/experimental.pb.go b/vendor/google.golang.org/genproto/googleapis/api/experimental.pb.go deleted file mode 100644 index a88df3d1..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/experimental.pb.go +++ /dev/null @@ -1,56 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/experimental/experimental.proto - -package api - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Experimental service configuration. These configuration options can -// only be used by whitelisted users. -type Experimental struct { - // Authorization configuration. - Authorization *AuthorizationConfig `protobuf:"bytes,8,opt,name=authorization" json:"authorization,omitempty"` -} - -func (m *Experimental) Reset() { *m = Experimental{} } -func (m *Experimental) String() string { return proto.CompactTextString(m) } -func (*Experimental) ProtoMessage() {} -func (*Experimental) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Experimental) GetAuthorization() *AuthorizationConfig { - if m != nil { - return m.Authorization - } - return nil -} - -func init() { - proto.RegisterType((*Experimental)(nil), "google.api.Experimental") -} - -func init() { proto.RegisterFile("google/api/experimental/experimental.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 204 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4a, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xad, 0x28, 0x48, 0x2d, 0xca, 0xcc, 0x4d, 0xcd, - 0x2b, 0x49, 0xcc, 0x41, 0xe1, 0xe8, 0x15, 0x14, 0xe5, 0x97, 0xe4, 0x0b, 0x71, 0x41, 0xd4, 0xea, - 0x25, 0x16, 0x64, 0x4a, 0xc9, 0x20, 0xe9, 0x4b, 0xcc, 0xcb, 0xcb, 0x2f, 0x49, 0x2c, 0xc9, 0xcc, - 0xcf, 0x2b, 0x86, 0xa8, 0x94, 0x32, 0xc2, 0x65, 0x6a, 0x62, 0x69, 0x49, 0x46, 0x7e, 0x51, 0x66, - 0x15, 0x58, 0x75, 0x7c, 0x72, 0x7e, 0x5e, 0x5a, 0x66, 0x3a, 0x44, 0x8f, 0x52, 0x28, 0x17, 0x8f, - 0x2b, 0x92, 0x52, 0x21, 0x57, 0x2e, 0x5e, 0x14, 0xd5, 0x12, 0x1c, 0x0a, 0x8c, 0x1a, 0xdc, 0x46, - 0xf2, 0x7a, 0x08, 0x57, 0xe8, 0x39, 0x22, 0x2b, 0x70, 0x06, 0x9b, 0x16, 0x84, 0xaa, 0xcb, 0x29, - 0x9a, 0x8b, 0x2f, 0x39, 0x3f, 0x17, 0x49, 0x93, 0x93, 0x20, 0xb2, 0x35, 0x01, 0x20, 0xbb, 0x03, - 0x18, 0xa3, 0x74, 0xa1, 0x0a, 0xd2, 0xf3, 0x73, 0x12, 0xf3, 0xd2, 0xf5, 0xf2, 0x8b, 0xd2, 0xf5, - 0xd3, 0x53, 0xf3, 0xc0, 0x2e, 0xd3, 0x87, 0x48, 0x25, 0x16, 0x64, 0x16, 0x83, 0x3c, 0x64, 0x9d, - 0x58, 0x90, 0xb9, 0x88, 0x89, 0xc5, 0xdd, 0x31, 0xc0, 0x33, 0x89, 0x0d, 0xac, 0xc0, 0x18, 0x10, - 0x00, 0x00, 0xff, 0xff, 0xa0, 0x95, 0x20, 0xe5, 0x46, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.go b/vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.go deleted file mode 100644 index c3e12e5e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/httpbody/httpbody.pb.go +++ /dev/null @@ -1,114 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/httpbody.proto - -/* -Package httpbody is a generated protocol buffer package. - -It is generated from these files: - google/api/httpbody.proto - -It has these top-level messages: - HttpBody -*/ -package httpbody - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Message that represents an arbitrary HTTP body. It should only be used for -// payload formats that can't be represented as JSON, such as raw binary or -// an HTML page. -// -// -// This message can be used both in streaming and non-streaming API methods in -// the request as well as the response. -// -// It can be used as a top-level request field, which is convenient if one -// wants to extract parameters from either the URL or HTTP template into the -// request fields and also want access to the raw HTTP body. -// -// Example: -// -// message GetResourceRequest { -// // A unique request id. -// string request_id = 1; -// -// // The raw HTTP body is bound to this field. -// google.api.HttpBody http_body = 2; -// } -// -// service ResourceService { -// rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); -// rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); -// } -// -// Example with streaming methods: -// -// service CaldavService { -// rpc GetCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// rpc UpdateCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// } -// -// Use of this type only changes how the request and response bodies are -// handled, all other features will continue to work unchanged. -type HttpBody struct { - // The HTTP Content-Type string representing the content type of the body. - ContentType string `protobuf:"bytes,1,opt,name=content_type,json=contentType" json:"content_type,omitempty"` - // HTTP body binary data. - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` -} - -func (m *HttpBody) Reset() { *m = HttpBody{} } -func (m *HttpBody) String() string { return proto.CompactTextString(m) } -func (*HttpBody) ProtoMessage() {} -func (*HttpBody) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *HttpBody) GetContentType() string { - if m != nil { - return m.ContentType - } - return "" -} - -func (m *HttpBody) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -func init() { - proto.RegisterType((*HttpBody)(nil), "google.api.HttpBody") -} - -func init() { proto.RegisterFile("google/api/httpbody.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 181 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0xcf, 0x28, 0x29, 0x29, 0x48, 0xca, 0x4f, 0xa9, 0xd4, - 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x82, 0x48, 0xe9, 0x25, 0x16, 0x64, 0x2a, 0x39, 0x72, - 0x71, 0x78, 0x94, 0x94, 0x14, 0x38, 0xe5, 0xa7, 0x54, 0x0a, 0x29, 0x72, 0xf1, 0x24, 0xe7, 0xe7, - 0x95, 0xa4, 0xe6, 0x95, 0xc4, 0x97, 0x54, 0x16, 0xa4, 0x4a, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, - 0x71, 0x43, 0xc5, 0x42, 0x2a, 0x0b, 0x52, 0x85, 0x84, 0xb8, 0x58, 0x52, 0x12, 0x4b, 0x12, 0x25, - 0x98, 0x14, 0x18, 0x35, 0x78, 0x82, 0xc0, 0x6c, 0xa7, 0x54, 0x2e, 0xbe, 0xe4, 0xfc, 0x5c, 0x3d, - 0x84, 0xa1, 0x4e, 0xbc, 0x30, 0x23, 0x03, 0x40, 0xf6, 0x05, 0x30, 0x46, 0x59, 0x43, 0x25, 0xd3, - 0xf3, 0x73, 0x12, 0xf3, 0xd2, 0xf5, 0xf2, 0x8b, 0xd2, 0xf5, 0xd3, 0x53, 0xf3, 0xc0, 0xae, 0xd1, - 0x87, 0x48, 0x25, 0x16, 0x64, 0x16, 0xa3, 0xb8, 0xd5, 0x1a, 0xc6, 0x58, 0xc4, 0xc4, 0xe2, 0xee, - 0x18, 0xe0, 0x99, 0xc4, 0x06, 0x56, 0x6e, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x3a, 0xdf, - 0x30, 0xd9, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/label/label.pb.go b/vendor/google.golang.org/genproto/googleapis/api/label/label.pb.go deleted file mode 100644 index 790f6c07..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/label/label.pb.go +++ /dev/null @@ -1,119 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/label.proto - -/* -Package label is a generated protocol buffer package. - -It is generated from these files: - google/api/label.proto - -It has these top-level messages: - LabelDescriptor -*/ -package label - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Value types that can be used as label values. -type LabelDescriptor_ValueType int32 - -const ( - // A variable-length string. This is the default. - LabelDescriptor_STRING LabelDescriptor_ValueType = 0 - // Boolean; true or false. - LabelDescriptor_BOOL LabelDescriptor_ValueType = 1 - // A 64-bit signed integer. - LabelDescriptor_INT64 LabelDescriptor_ValueType = 2 -) - -var LabelDescriptor_ValueType_name = map[int32]string{ - 0: "STRING", - 1: "BOOL", - 2: "INT64", -} -var LabelDescriptor_ValueType_value = map[string]int32{ - "STRING": 0, - "BOOL": 1, - "INT64": 2, -} - -func (x LabelDescriptor_ValueType) String() string { - return proto.EnumName(LabelDescriptor_ValueType_name, int32(x)) -} -func (LabelDescriptor_ValueType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// A description of a label. -type LabelDescriptor struct { - // The label key. - Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // The type of data that can be assigned to the label. - ValueType LabelDescriptor_ValueType `protobuf:"varint,2,opt,name=value_type,json=valueType,enum=google.api.LabelDescriptor_ValueType" json:"value_type,omitempty"` - // A human-readable description for the label. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (m *LabelDescriptor) Reset() { *m = LabelDescriptor{} } -func (m *LabelDescriptor) String() string { return proto.CompactTextString(m) } -func (*LabelDescriptor) ProtoMessage() {} -func (*LabelDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *LabelDescriptor) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *LabelDescriptor) GetValueType() LabelDescriptor_ValueType { - if m != nil { - return m.ValueType - } - return LabelDescriptor_STRING -} - -func (m *LabelDescriptor) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func init() { - proto.RegisterType((*LabelDescriptor)(nil), "google.api.LabelDescriptor") - proto.RegisterEnum("google.api.LabelDescriptor_ValueType", LabelDescriptor_ValueType_name, LabelDescriptor_ValueType_value) -} - -func init() { proto.RegisterFile("google/api/label.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 252 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4b, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0xcf, 0x49, 0x4c, 0x4a, 0xcd, 0xd1, 0x2b, 0x28, 0xca, - 0x2f, 0xc9, 0x17, 0xe2, 0x82, 0x88, 0xeb, 0x25, 0x16, 0x64, 0x2a, 0xed, 0x64, 0xe4, 0xe2, 0xf7, - 0x01, 0xc9, 0xb9, 0xa4, 0x16, 0x27, 0x17, 0x65, 0x16, 0x94, 0xe4, 0x17, 0x09, 0x09, 0x70, 0x31, - 0x67, 0xa7, 0x56, 0x4a, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x81, 0x98, 0x42, 0x2e, 0x5c, 0x5c, - 0x65, 0x89, 0x39, 0xa5, 0xa9, 0xf1, 0x25, 0x95, 0x05, 0xa9, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0x7c, - 0x46, 0xaa, 0x7a, 0x08, 0x63, 0xf4, 0xd0, 0x8c, 0xd0, 0x0b, 0x03, 0xa9, 0x0e, 0xa9, 0x2c, 0x48, - 0x0d, 0xe2, 0x2c, 0x83, 0x31, 0x85, 0x14, 0xb8, 0xb8, 0x53, 0xa0, 0x4a, 0x32, 0xf3, 0xf3, 0x24, - 0x98, 0xc1, 0xe6, 0x23, 0x0b, 0x29, 0xe9, 0x70, 0x71, 0xc2, 0x75, 0x0a, 0x71, 0x71, 0xb1, 0x05, - 0x87, 0x04, 0x79, 0xfa, 0xb9, 0x0b, 0x30, 0x08, 0x71, 0x70, 0xb1, 0x38, 0xf9, 0xfb, 0xfb, 0x08, - 0x30, 0x0a, 0x71, 0x72, 0xb1, 0x7a, 0xfa, 0x85, 0x98, 0x99, 0x08, 0x30, 0x39, 0xc5, 0x73, 0xf1, - 0x25, 0xe7, 0xe7, 0x22, 0x39, 0xc3, 0x89, 0x0b, 0xec, 0x8e, 0x00, 0x90, 0x2f, 0x03, 0x18, 0xa3, - 0x4c, 0xa1, 0x32, 0xe9, 0xf9, 0x39, 0x89, 0x79, 0xe9, 0x7a, 0xf9, 0x45, 0xe9, 0xfa, 0xe9, 0xa9, - 0x79, 0xe0, 0x30, 0xd0, 0x87, 0x48, 0x25, 0x16, 0x64, 0x16, 0x23, 0x82, 0xc7, 0x1a, 0x4c, 0xfe, - 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xe2, 0xee, 0x18, 0xe0, 0x99, 0xc4, 0x06, 0x56, 0x6b, 0x0c, 0x08, - 0x00, 0x00, 0xff, 0xff, 0x57, 0x04, 0xaa, 0x1f, 0x49, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/metric/metric.pb.go b/vendor/google.golang.org/genproto/googleapis/api/metric/metric.pb.go deleted file mode 100644 index df451ac5..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/metric/metric.pb.go +++ /dev/null @@ -1,358 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/metric.proto - -/* -Package metric is a generated protocol buffer package. - -It is generated from these files: - google/api/metric.proto - -It has these top-level messages: - MetricDescriptor - Metric -*/ -package metric - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_api "google.golang.org/genproto/googleapis/api/label" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The kind of measurement. It describes how the data is reported. -type MetricDescriptor_MetricKind int32 - -const ( - // Do not use this default value. - MetricDescriptor_METRIC_KIND_UNSPECIFIED MetricDescriptor_MetricKind = 0 - // An instantaneous measurement of a value. - MetricDescriptor_GAUGE MetricDescriptor_MetricKind = 1 - // The change in a value during a time interval. - MetricDescriptor_DELTA MetricDescriptor_MetricKind = 2 - // A value accumulated over a time interval. Cumulative - // measurements in a time series should have the same start time - // and increasing end times, until an event resets the cumulative - // value to zero and sets a new start time for the following - // points. - MetricDescriptor_CUMULATIVE MetricDescriptor_MetricKind = 3 -) - -var MetricDescriptor_MetricKind_name = map[int32]string{ - 0: "METRIC_KIND_UNSPECIFIED", - 1: "GAUGE", - 2: "DELTA", - 3: "CUMULATIVE", -} -var MetricDescriptor_MetricKind_value = map[string]int32{ - "METRIC_KIND_UNSPECIFIED": 0, - "GAUGE": 1, - "DELTA": 2, - "CUMULATIVE": 3, -} - -func (x MetricDescriptor_MetricKind) String() string { - return proto.EnumName(MetricDescriptor_MetricKind_name, int32(x)) -} -func (MetricDescriptor_MetricKind) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 0} -} - -// The value type of a metric. -type MetricDescriptor_ValueType int32 - -const ( - // Do not use this default value. - MetricDescriptor_VALUE_TYPE_UNSPECIFIED MetricDescriptor_ValueType = 0 - // The value is a boolean. - // This value type can be used only if the metric kind is `GAUGE`. - MetricDescriptor_BOOL MetricDescriptor_ValueType = 1 - // The value is a signed 64-bit integer. - MetricDescriptor_INT64 MetricDescriptor_ValueType = 2 - // The value is a double precision floating point number. - MetricDescriptor_DOUBLE MetricDescriptor_ValueType = 3 - // The value is a text string. - // This value type can be used only if the metric kind is `GAUGE`. - MetricDescriptor_STRING MetricDescriptor_ValueType = 4 - // The value is a [`Distribution`][google.api.Distribution]. - MetricDescriptor_DISTRIBUTION MetricDescriptor_ValueType = 5 - // The value is money. - MetricDescriptor_MONEY MetricDescriptor_ValueType = 6 -) - -var MetricDescriptor_ValueType_name = map[int32]string{ - 0: "VALUE_TYPE_UNSPECIFIED", - 1: "BOOL", - 2: "INT64", - 3: "DOUBLE", - 4: "STRING", - 5: "DISTRIBUTION", - 6: "MONEY", -} -var MetricDescriptor_ValueType_value = map[string]int32{ - "VALUE_TYPE_UNSPECIFIED": 0, - "BOOL": 1, - "INT64": 2, - "DOUBLE": 3, - "STRING": 4, - "DISTRIBUTION": 5, - "MONEY": 6, -} - -func (x MetricDescriptor_ValueType) String() string { - return proto.EnumName(MetricDescriptor_ValueType_name, int32(x)) -} -func (MetricDescriptor_ValueType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 1} -} - -// Defines a metric type and its schema. Once a metric descriptor is created, -// deleting or altering it stops data collection and makes the metric type's -// existing data unusable. -type MetricDescriptor struct { - // The resource name of the metric descriptor. Depending on the - // implementation, the name typically includes: (1) the parent resource name - // that defines the scope of the metric type or of its data; and (2) the - // metric's URL-encoded type, which also appears in the `type` field of this - // descriptor. For example, following is the resource name of a custom - // metric within the GCP project `my-project-id`: - // - // "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The metric type, including its DNS name prefix. The type is not - // URL-encoded. All user-defined custom metric types have the DNS name - // `custom.googleapis.com`. Metric types should use a natural hierarchical - // grouping. For example: - // - // "custom.googleapis.com/invoice/paid/amount" - // "appengine.googleapis.com/http/server/response_latencies" - Type string `protobuf:"bytes,8,opt,name=type" json:"type,omitempty"` - // The set of labels that can be used to describe a specific - // instance of this metric type. For example, the - // `appengine.googleapis.com/http/server/response_latencies` metric - // type has a label for the HTTP response code, `response_code`, so - // you can look at latencies for successful responses or just - // for responses that failed. - Labels []*google_api.LabelDescriptor `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty"` - // Whether the metric records instantaneous values, changes to a value, etc. - // Some combinations of `metric_kind` and `value_type` might not be supported. - MetricKind MetricDescriptor_MetricKind `protobuf:"varint,3,opt,name=metric_kind,json=metricKind,enum=google.api.MetricDescriptor_MetricKind" json:"metric_kind,omitempty"` - // Whether the measurement is an integer, a floating-point number, etc. - // Some combinations of `metric_kind` and `value_type` might not be supported. - ValueType MetricDescriptor_ValueType `protobuf:"varint,4,opt,name=value_type,json=valueType,enum=google.api.MetricDescriptor_ValueType" json:"value_type,omitempty"` - // The unit in which the metric value is reported. It is only applicable - // if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The - // supported units are a subset of [The Unified Code for Units of - // Measure](http://unitsofmeasure.org/ucum.html) standard: - // - // **Basic units (UNIT)** - // - // * `bit` bit - // * `By` byte - // * `s` second - // * `min` minute - // * `h` hour - // * `d` day - // - // **Prefixes (PREFIX)** - // - // * `k` kilo (10**3) - // * `M` mega (10**6) - // * `G` giga (10**9) - // * `T` tera (10**12) - // * `P` peta (10**15) - // * `E` exa (10**18) - // * `Z` zetta (10**21) - // * `Y` yotta (10**24) - // * `m` milli (10**-3) - // * `u` micro (10**-6) - // * `n` nano (10**-9) - // * `p` pico (10**-12) - // * `f` femto (10**-15) - // * `a` atto (10**-18) - // * `z` zepto (10**-21) - // * `y` yocto (10**-24) - // * `Ki` kibi (2**10) - // * `Mi` mebi (2**20) - // * `Gi` gibi (2**30) - // * `Ti` tebi (2**40) - // - // **Grammar** - // - // The grammar includes the dimensionless unit `1`, such as `1/s`. - // - // The grammar also includes these connectors: - // - // * `/` division (as an infix operator, e.g. `1/s`). - // * `.` multiplication (as an infix operator, e.g. `GBy.d`) - // - // The grammar for a unit is as follows: - // - // Expression = Component { "." Component } { "/" Component } ; - // - // Component = [ PREFIX ] UNIT [ Annotation ] - // | Annotation - // | "1" - // ; - // - // Annotation = "{" NAME "}" ; - // - // Notes: - // - // * `Annotation` is just a comment if it follows a `UNIT` and is - // equivalent to `1` if it is used alone. For examples, - // `{requests}/s == 1/s`, `By{transmitted}/s == By/s`. - // * `NAME` is a sequence of non-blank printable ASCII characters not - // containing '{' or '}'. - Unit string `protobuf:"bytes,5,opt,name=unit" json:"unit,omitempty"` - // A detailed description of the metric, which can be used in documentation. - Description string `protobuf:"bytes,6,opt,name=description" json:"description,omitempty"` - // A concise name for the metric, which can be displayed in user interfaces. - // Use sentence case without an ending period, for example "Request count". - DisplayName string `protobuf:"bytes,7,opt,name=display_name,json=displayName" json:"display_name,omitempty"` -} - -func (m *MetricDescriptor) Reset() { *m = MetricDescriptor{} } -func (m *MetricDescriptor) String() string { return proto.CompactTextString(m) } -func (*MetricDescriptor) ProtoMessage() {} -func (*MetricDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *MetricDescriptor) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *MetricDescriptor) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *MetricDescriptor) GetLabels() []*google_api.LabelDescriptor { - if m != nil { - return m.Labels - } - return nil -} - -func (m *MetricDescriptor) GetMetricKind() MetricDescriptor_MetricKind { - if m != nil { - return m.MetricKind - } - return MetricDescriptor_METRIC_KIND_UNSPECIFIED -} - -func (m *MetricDescriptor) GetValueType() MetricDescriptor_ValueType { - if m != nil { - return m.ValueType - } - return MetricDescriptor_VALUE_TYPE_UNSPECIFIED -} - -func (m *MetricDescriptor) GetUnit() string { - if m != nil { - return m.Unit - } - return "" -} - -func (m *MetricDescriptor) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *MetricDescriptor) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -// A specific metric, identified by specifying values for all of the -// labels of a [`MetricDescriptor`][google.api.MetricDescriptor]. -type Metric struct { - // An existing metric type, see [google.api.MetricDescriptor][google.api.MetricDescriptor]. - // For example, `custom.googleapis.com/invoice/paid/amount`. - Type string `protobuf:"bytes,3,opt,name=type" json:"type,omitempty"` - // The set of label values that uniquely identify this metric. All - // labels listed in the `MetricDescriptor` must be assigned values. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Metric) Reset() { *m = Metric{} } -func (m *Metric) String() string { return proto.CompactTextString(m) } -func (*Metric) ProtoMessage() {} -func (*Metric) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Metric) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *Metric) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func init() { - proto.RegisterType((*MetricDescriptor)(nil), "google.api.MetricDescriptor") - proto.RegisterType((*Metric)(nil), "google.api.Metric") - proto.RegisterEnum("google.api.MetricDescriptor_MetricKind", MetricDescriptor_MetricKind_name, MetricDescriptor_MetricKind_value) - proto.RegisterEnum("google.api.MetricDescriptor_ValueType", MetricDescriptor_ValueType_name, MetricDescriptor_ValueType_value) -} - -func init() { proto.RegisterFile("google/api/metric.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 506 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0x4d, 0x6f, 0xda, 0x40, - 0x10, 0xad, 0x3f, 0x70, 0xc3, 0x10, 0xa1, 0xd5, 0xaa, 0x4a, 0x2c, 0x22, 0x55, 0x94, 0x43, 0xcb, - 0x09, 0xa4, 0xa4, 0x4a, 0xbf, 0x4e, 0x80, 0xb7, 0xd4, 0x8a, 0xb1, 0x91, 0x63, 0x23, 0xa5, 0x17, - 0xcb, 0x81, 0x95, 0x65, 0xc5, 0xd8, 0xae, 0x71, 0x22, 0xf9, 0x57, 0xf4, 0x17, 0xf4, 0xd2, 0x5f, - 0x5a, 0xed, 0xae, 0x03, 0x16, 0x95, 0x72, 0xe2, 0xed, 0x9b, 0x37, 0x6f, 0x67, 0x96, 0x67, 0x38, - 0x8f, 0xb2, 0x2c, 0x4a, 0xe8, 0x38, 0xcc, 0xe3, 0xf1, 0x96, 0x96, 0x45, 0xbc, 0x1e, 0xe5, 0x45, - 0x56, 0x66, 0x18, 0x44, 0x61, 0x14, 0xe6, 0x71, 0xef, 0xac, 0x21, 0x4a, 0xc2, 0x7b, 0x9a, 0x08, - 0xcd, 0xe0, 0x8f, 0x0a, 0x68, 0xc1, 0x9b, 0x0c, 0xba, 0x5b, 0x17, 0x71, 0x5e, 0x66, 0x05, 0xc6, - 0xa0, 0xa6, 0xe1, 0x96, 0xea, 0x52, 0x5f, 0x1a, 0xb6, 0x5d, 0x8e, 0x19, 0x57, 0x56, 0x39, 0xd5, - 0x4f, 0x04, 0xc7, 0x30, 0xbe, 0x02, 0x8d, 0x7b, 0xed, 0x74, 0xb9, 0xaf, 0x0c, 0x3b, 0x97, 0x17, - 0xa3, 0xc3, 0x8d, 0x23, 0x8b, 0x55, 0x0e, 0xa6, 0x6e, 0x2d, 0xc5, 0x3f, 0xa0, 0x23, 0xa6, 0x0c, - 0x1e, 0xe2, 0x74, 0xa3, 0x2b, 0x7d, 0x69, 0xd8, 0xbd, 0xfc, 0xd0, 0xec, 0x3c, 0x9e, 0xa7, 0x26, - 0x6e, 0xe2, 0x74, 0xe3, 0xc2, 0x76, 0x8f, 0x31, 0x01, 0x78, 0x0a, 0x93, 0x47, 0x1a, 0xf0, 0xc1, - 0x54, 0x6e, 0xf4, 0xfe, 0x45, 0xa3, 0x15, 0x93, 0x7b, 0x55, 0x4e, 0xdd, 0xf6, 0xd3, 0x33, 0x64, - 0x9b, 0x3d, 0xa6, 0x71, 0xa9, 0xb7, 0xc4, 0x66, 0x0c, 0xe3, 0x3e, 0x74, 0x36, 0x75, 0x5b, 0x9c, - 0xa5, 0xba, 0xc6, 0x4b, 0x4d, 0x0a, 0xbf, 0x83, 0xd3, 0x4d, 0xbc, 0xcb, 0x93, 0xb0, 0x0a, 0xf8, - 0x5b, 0xbd, 0xae, 0x25, 0x82, 0xb3, 0xc3, 0x2d, 0x1d, 0x38, 0x00, 0x87, 0xc9, 0xf1, 0x05, 0x9c, - 0x2f, 0x88, 0xe7, 0x9a, 0xb3, 0xe0, 0xc6, 0xb4, 0x8d, 0xc0, 0xb7, 0x6f, 0x97, 0x64, 0x66, 0x7e, - 0x37, 0x89, 0x81, 0x5e, 0xe1, 0x36, 0xb4, 0xe6, 0x13, 0x7f, 0x4e, 0x90, 0xc4, 0xa0, 0x41, 0x2c, - 0x6f, 0x82, 0x64, 0xdc, 0x05, 0x98, 0xf9, 0x0b, 0xdf, 0x9a, 0x78, 0xe6, 0x8a, 0x20, 0x65, 0xf0, - 0x0b, 0xda, 0xfb, 0x0d, 0x70, 0x0f, 0xce, 0x56, 0x13, 0xcb, 0x27, 0x81, 0x77, 0xb7, 0x24, 0x47, - 0x76, 0x27, 0xa0, 0x4e, 0x1d, 0xc7, 0x12, 0x6e, 0xa6, 0xed, 0x5d, 0x7f, 0x44, 0x32, 0x06, 0xd0, - 0x0c, 0xc7, 0x9f, 0x5a, 0x04, 0x29, 0x0c, 0xdf, 0x7a, 0xae, 0x69, 0xcf, 0x91, 0x8a, 0x11, 0x9c, - 0x1a, 0x26, 0x3b, 0x4d, 0x7d, 0xcf, 0x74, 0x6c, 0xd4, 0x62, 0x4d, 0x0b, 0xc7, 0x26, 0x77, 0x48, - 0x1b, 0xfc, 0x96, 0x40, 0x13, 0x4b, 0xec, 0x13, 0xa0, 0x34, 0x12, 0x70, 0x7d, 0x94, 0x80, 0xb7, - 0xff, 0x3f, 0xbf, 0x08, 0xc2, 0x8e, 0xa4, 0x65, 0x51, 0x3d, 0x87, 0xa0, 0xf7, 0x05, 0x3a, 0x0d, - 0x1a, 0x23, 0x50, 0x1e, 0x68, 0x55, 0xe7, 0x8d, 0x41, 0xfc, 0x06, 0x5a, 0xfc, 0x1f, 0xd2, 0x65, - 0xce, 0x89, 0xc3, 0x57, 0xf9, 0xb3, 0x34, 0x0d, 0xa0, 0xbb, 0xce, 0xb6, 0x8d, 0x7b, 0xa6, 0x1d, - 0x71, 0xd1, 0x92, 0x05, 0x7a, 0x29, 0xfd, 0xfc, 0x54, 0x97, 0xa2, 0x2c, 0x09, 0xd3, 0x68, 0x94, - 0x15, 0xd1, 0x38, 0xa2, 0x29, 0x8f, 0xfb, 0x58, 0x94, 0xc2, 0x3c, 0xde, 0x35, 0x3e, 0x97, 0x6f, - 0xe2, 0xe7, 0xaf, 0xac, 0xce, 0x27, 0x4b, 0xf3, 0x5e, 0xe3, 0xd2, 0xab, 0x7f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x18, 0x04, 0x05, 0x82, 0x58, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/monitoredres/monitored_resource.pb.go b/vendor/google.golang.org/genproto/googleapis/api/monitoredres/monitored_resource.pb.go deleted file mode 100644 index 3ce7eb74..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/monitoredres/monitored_resource.pb.go +++ /dev/null @@ -1,180 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/monitored_resource.proto - -/* -Package monitoredres is a generated protocol buffer package. - -It is generated from these files: - google/api/monitored_resource.proto - -It has these top-level messages: - MonitoredResourceDescriptor - MonitoredResource -*/ -package monitoredres - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_api "google.golang.org/genproto/googleapis/api/label" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// An object that describes the schema of a [MonitoredResource][google.api.MonitoredResource] object using a -// type name and a set of labels. For example, the monitored resource -// descriptor for Google Compute Engine VM instances has a type of -// `"gce_instance"` and specifies the use of the labels `"instance_id"` and -// `"zone"` to identify particular VM instances. -// -// Different APIs can support different monitored resource types. APIs generally -// provide a `list` method that returns the monitored resource descriptors used -// by the API. -type MonitoredResourceDescriptor struct { - // Optional. The resource name of the monitored resource descriptor: - // `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where - // {type} is the value of the `type` field in this object and - // {project_id} is a project ID that provides API-specific context for - // accessing the type. APIs that do not use project information can use the - // resource name format `"monitoredResourceDescriptors/{type}"`. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` - // Required. The monitored resource type. For example, the type - // `"cloudsql_database"` represents databases in Google Cloud SQL. - // The maximum length of this value is 256 characters. - Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` - // Optional. A concise name for the monitored resource type that might be - // displayed in user interfaces. It should be a Title Cased Noun Phrase, - // without any article or other determiners. For example, - // `"Google Cloud SQL Database"`. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Optional. A detailed description of the monitored resource type that might - // be used in documentation. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // Required. A set of labels used to describe instances of this monitored - // resource type. For example, an individual Google Cloud SQL database is - // identified by values for the labels `"database_id"` and `"zone"`. - Labels []*google_api.LabelDescriptor `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty"` -} - -func (m *MonitoredResourceDescriptor) Reset() { *m = MonitoredResourceDescriptor{} } -func (m *MonitoredResourceDescriptor) String() string { return proto.CompactTextString(m) } -func (*MonitoredResourceDescriptor) ProtoMessage() {} -func (*MonitoredResourceDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *MonitoredResourceDescriptor) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *MonitoredResourceDescriptor) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *MonitoredResourceDescriptor) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *MonitoredResourceDescriptor) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *MonitoredResourceDescriptor) GetLabels() []*google_api.LabelDescriptor { - if m != nil { - return m.Labels - } - return nil -} - -// An object representing a resource that can be used for monitoring, logging, -// billing, or other purposes. Examples include virtual machine instances, -// databases, and storage devices such as disks. The `type` field identifies a -// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] object that describes the resource's -// schema. Information in the `labels` field identifies the actual resource and -// its attributes according to the schema. For example, a particular Compute -// Engine VM instance could be represented by the following object, because the -// [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] for `"gce_instance"` has labels -// `"instance_id"` and `"zone"`: -// -// { "type": "gce_instance", -// "labels": { "instance_id": "12345678901234", -// "zone": "us-central1-a" }} -type MonitoredResource struct { - // Required. The monitored resource type. This field must match - // the `type` field of a [MonitoredResourceDescriptor][google.api.MonitoredResourceDescriptor] object. For - // example, the type of a Cloud SQL database is `"cloudsql_database"`. - Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` - // Required. Values for all of the labels listed in the associated monitored - // resource descriptor. For example, Cloud SQL databases use the labels - // `"database_id"` and `"zone"`. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *MonitoredResource) Reset() { *m = MonitoredResource{} } -func (m *MonitoredResource) String() string { return proto.CompactTextString(m) } -func (*MonitoredResource) ProtoMessage() {} -func (*MonitoredResource) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *MonitoredResource) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *MonitoredResource) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func init() { - proto.RegisterType((*MonitoredResourceDescriptor)(nil), "google.api.MonitoredResourceDescriptor") - proto.RegisterType((*MonitoredResource)(nil), "google.api.MonitoredResource") -} - -func init() { proto.RegisterFile("google/api/monitored_resource.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 321 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x51, 0x4b, 0x4b, 0x3b, 0x31, - 0x10, 0x27, 0xdb, 0x07, 0xfc, 0x67, 0xff, 0x88, 0x06, 0x29, 0x4b, 0x7b, 0xa9, 0xf5, 0x52, 0x2f, - 0xbb, 0x60, 0x2f, 0x3e, 0x4e, 0xad, 0x8a, 0x08, 0x2a, 0xa5, 0x47, 0x2f, 0x25, 0x6d, 0xc3, 0x12, - 0xdc, 0x66, 0x42, 0xb2, 0x15, 0xf6, 0xeb, 0x08, 0x7e, 0x0e, 0xbf, 0x96, 0x47, 0xc9, 0xa3, 0x76, - 0xa5, 0xde, 0x26, 0xbf, 0xf9, 0x3d, 0x66, 0x32, 0x70, 0x9a, 0x23, 0xe6, 0x05, 0xcf, 0x98, 0x12, - 0xd9, 0x1a, 0xa5, 0x28, 0x51, 0xf3, 0xd5, 0x5c, 0x73, 0x83, 0x1b, 0xbd, 0xe4, 0xa9, 0xd2, 0x58, - 0x22, 0x05, 0x4f, 0x4a, 0x99, 0x12, 0xdd, 0x4e, 0x4d, 0x50, 0xb0, 0x05, 0x2f, 0x3c, 0x67, 0xf0, - 0x49, 0xa0, 0xf7, 0xb4, 0x35, 0x98, 0x05, 0xfd, 0x2d, 0x37, 0x4b, 0x2d, 0x54, 0x89, 0x9a, 0x52, - 0x68, 0x4a, 0xb6, 0xe6, 0x49, 0xab, 0x4f, 0x86, 0xff, 0x66, 0xae, 0xb6, 0x58, 0x59, 0x29, 0x9e, - 0x10, 0x8f, 0xd9, 0x9a, 0x9e, 0xc0, 0xff, 0x95, 0x30, 0xaa, 0x60, 0xd5, 0xdc, 0xf1, 0x23, 0xd7, - 0x8b, 0x03, 0xf6, 0x6c, 0x65, 0x7d, 0x88, 0x57, 0xc1, 0x58, 0xa0, 0x4c, 0x1a, 0x81, 0xb1, 0x83, - 0xe8, 0x08, 0xda, 0x6e, 0x36, 0x93, 0x34, 0xfb, 0x8d, 0x61, 0x7c, 0xde, 0x4b, 0x77, 0x1b, 0xa4, - 0x8f, 0xb6, 0xb3, 0x9b, 0x6c, 0x16, 0xa8, 0x83, 0x0f, 0x02, 0x47, 0x7b, 0x1b, 0xfc, 0x39, 0xe3, - 0xf8, 0xc7, 0x3e, 0x72, 0xf6, 0x67, 0x75, 0xfb, 0x3d, 0x0b, 0x1f, 0x68, 0xee, 0x64, 0xa9, 0xab, - 0x6d, 0x58, 0xf7, 0x12, 0xe2, 0x1a, 0x4c, 0x0f, 0xa1, 0xf1, 0xca, 0xab, 0x10, 0x62, 0x4b, 0x7a, - 0x0c, 0xad, 0x37, 0x56, 0x6c, 0xb6, 0x1f, 0xe0, 0x1f, 0x57, 0xd1, 0x05, 0x99, 0x54, 0x70, 0xb0, - 0xc4, 0x75, 0x2d, 0x72, 0xd2, 0xd9, 0xcb, 0x9c, 0xda, 0x9b, 0x4c, 0xc9, 0xcb, 0x4d, 0x60, 0xe5, - 0x58, 0x30, 0x99, 0xa7, 0xa8, 0xf3, 0x2c, 0xe7, 0xd2, 0x5d, 0x2c, 0xf3, 0x2d, 0xa6, 0x84, 0xf9, - 0x7d, 0x7d, 0xcd, 0xcd, 0x75, 0xfd, 0xf1, 0x45, 0xc8, 0x7b, 0xd4, 0xbc, 0x1f, 0x4f, 0x1f, 0x16, - 0x6d, 0xa7, 0x1c, 0x7d, 0x07, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xfb, 0xfb, 0x11, 0x36, 0x02, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/auth.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/auth.pb.go deleted file mode 100644 index f0b7e90e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/auth.pb.go +++ /dev/null @@ -1,392 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/auth.proto - -/* -Package serviceconfig is a generated protocol buffer package. - -It is generated from these files: - google/api/auth.proto - google/api/backend.proto - google/api/billing.proto - google/api/consumer.proto - google/api/context.proto - google/api/control.proto - google/api/documentation.proto - google/api/endpoint.proto - google/api/log.proto - google/api/logging.proto - google/api/monitoring.proto - google/api/quota.proto - google/api/service.proto - google/api/source_info.proto - google/api/system_parameter.proto - google/api/usage.proto - -It has these top-level messages: - Authentication - AuthenticationRule - AuthProvider - OAuthRequirements - AuthRequirement - Backend - BackendRule - Billing - ProjectProperties - Property - Context - ContextRule - Control - Documentation - DocumentationRule - Page - Endpoint - LogDescriptor - Logging - Monitoring - Quota - MetricRule - QuotaLimit - Service - SourceInfo - SystemParameters - SystemParameterRule - SystemParameter - Usage - UsageRule -*/ -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// `Authentication` defines the authentication configuration for an API. -// -// Example for an API targeted for external use: -// -// name: calendar.googleapis.com -// authentication: -// providers: -// - id: google_calendar_auth -// jwks_uri: https://www.googleapis.com/oauth2/v1/certs -// issuer: https://securetoken.google.com -// rules: -// - selector: "*" -// requirements: -// provider_id: google_calendar_auth -type Authentication struct { - // A list of authentication rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - Rules []*AuthenticationRule `protobuf:"bytes,3,rep,name=rules" json:"rules,omitempty"` - // Defines a set of authentication providers that a service supports. - Providers []*AuthProvider `protobuf:"bytes,4,rep,name=providers" json:"providers,omitempty"` -} - -func (m *Authentication) Reset() { *m = Authentication{} } -func (m *Authentication) String() string { return proto.CompactTextString(m) } -func (*Authentication) ProtoMessage() {} -func (*Authentication) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Authentication) GetRules() []*AuthenticationRule { - if m != nil { - return m.Rules - } - return nil -} - -func (m *Authentication) GetProviders() []*AuthProvider { - if m != nil { - return m.Providers - } - return nil -} - -// Authentication rules for the service. -// -// By default, if a method has any authentication requirements, every request -// must include a valid credential matching one of the requirements. -// It's an error to include more than one kind of credential in a single -// request. -// -// If a method doesn't have any auth requirements, request credentials will be -// ignored. -type AuthenticationRule struct { - // Selects the methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"` - // The requirements for OAuth credentials. - Oauth *OAuthRequirements `protobuf:"bytes,2,opt,name=oauth" json:"oauth,omitempty"` - // Whether to allow requests without a credential. The credential can be - // an OAuth token, Google cookies (first-party auth) or EndUserCreds. - // - // For requests without credentials, if the service control environment is - // specified, each incoming request **must** be associated with a service - // consumer. This can be done by passing an API key that belongs to a consumer - // project. - AllowWithoutCredential bool `protobuf:"varint,5,opt,name=allow_without_credential,json=allowWithoutCredential" json:"allow_without_credential,omitempty"` - // Requirements for additional authentication providers. - Requirements []*AuthRequirement `protobuf:"bytes,7,rep,name=requirements" json:"requirements,omitempty"` -} - -func (m *AuthenticationRule) Reset() { *m = AuthenticationRule{} } -func (m *AuthenticationRule) String() string { return proto.CompactTextString(m) } -func (*AuthenticationRule) ProtoMessage() {} -func (*AuthenticationRule) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *AuthenticationRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - -func (m *AuthenticationRule) GetOauth() *OAuthRequirements { - if m != nil { - return m.Oauth - } - return nil -} - -func (m *AuthenticationRule) GetAllowWithoutCredential() bool { - if m != nil { - return m.AllowWithoutCredential - } - return false -} - -func (m *AuthenticationRule) GetRequirements() []*AuthRequirement { - if m != nil { - return m.Requirements - } - return nil -} - -// Configuration for an anthentication provider, including support for -// [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). -type AuthProvider struct { - // The unique identifier of the auth provider. It will be referred to by - // `AuthRequirement.provider_id`. - // - // Example: "bookstore_auth". - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // Identifies the principal that issued the JWT. See - // https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1 - // Usually a URL or an email address. - // - // Example: https://securetoken.google.com - // Example: 1234567-compute@developer.gserviceaccount.com - Issuer string `protobuf:"bytes,2,opt,name=issuer" json:"issuer,omitempty"` - // URL of the provider's public key set to validate signature of the JWT. See - // [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata). - // Optional if the key set document: - // - can be retrieved from - // [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html - // of the issuer. - // - can be inferred from the email domain of the issuer (e.g. a Google service account). - // - // Example: https://www.googleapis.com/oauth2/v1/certs - JwksUri string `protobuf:"bytes,3,opt,name=jwks_uri,json=jwksUri" json:"jwks_uri,omitempty"` - // The list of JWT - // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). - // that are allowed to access. A JWT containing any of these audiences will - // be accepted. When this setting is absent, only JWTs with audience - // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]" - // will be accepted. For example, if no audiences are in the setting, - // LibraryService API will only accept JWTs with the following audience - // "https://library-example.googleapis.com/google.example.library.v1.LibraryService". - // - // Example: - // - // audiences: bookstore_android.apps.googleusercontent.com, - // bookstore_web.apps.googleusercontent.com - Audiences string `protobuf:"bytes,4,opt,name=audiences" json:"audiences,omitempty"` - // Redirect URL if JWT token is required but no present or is expired. - // Implement authorizationUrl of securityDefinitions in OpenAPI spec. - AuthorizationUrl string `protobuf:"bytes,5,opt,name=authorization_url,json=authorizationUrl" json:"authorization_url,omitempty"` -} - -func (m *AuthProvider) Reset() { *m = AuthProvider{} } -func (m *AuthProvider) String() string { return proto.CompactTextString(m) } -func (*AuthProvider) ProtoMessage() {} -func (*AuthProvider) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *AuthProvider) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *AuthProvider) GetIssuer() string { - if m != nil { - return m.Issuer - } - return "" -} - -func (m *AuthProvider) GetJwksUri() string { - if m != nil { - return m.JwksUri - } - return "" -} - -func (m *AuthProvider) GetAudiences() string { - if m != nil { - return m.Audiences - } - return "" -} - -func (m *AuthProvider) GetAuthorizationUrl() string { - if m != nil { - return m.AuthorizationUrl - } - return "" -} - -// OAuth scopes are a way to define data and permissions on data. For example, -// there are scopes defined for "Read-only access to Google Calendar" and -// "Access to Cloud Platform". Users can consent to a scope for an application, -// giving it permission to access that data on their behalf. -// -// OAuth scope specifications should be fairly coarse grained; a user will need -// to see and understand the text description of what your scope means. -// -// In most cases: use one or at most two OAuth scopes for an entire family of -// products. If your product has multiple APIs, you should probably be sharing -// the OAuth scope across all of those APIs. -// -// When you need finer grained OAuth consent screens: talk with your product -// management about how developers will use them in practice. -// -// Please note that even though each of the canonical scopes is enough for a -// request to be accepted and passed to the backend, a request can still fail -// due to the backend requiring additional scopes or permissions. -type OAuthRequirements struct { - // The list of publicly documented OAuth scopes that are allowed access. An - // OAuth token containing any of these scopes will be accepted. - // - // Example: - // - // canonical_scopes: https://www.googleapis.com/auth/calendar, - // https://www.googleapis.com/auth/calendar.read - CanonicalScopes string `protobuf:"bytes,1,opt,name=canonical_scopes,json=canonicalScopes" json:"canonical_scopes,omitempty"` -} - -func (m *OAuthRequirements) Reset() { *m = OAuthRequirements{} } -func (m *OAuthRequirements) String() string { return proto.CompactTextString(m) } -func (*OAuthRequirements) ProtoMessage() {} -func (*OAuthRequirements) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *OAuthRequirements) GetCanonicalScopes() string { - if m != nil { - return m.CanonicalScopes - } - return "" -} - -// User-defined authentication requirements, including support for -// [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). -type AuthRequirement struct { - // [id][google.api.AuthProvider.id] from authentication provider. - // - // Example: - // - // provider_id: bookstore_auth - ProviderId string `protobuf:"bytes,1,opt,name=provider_id,json=providerId" json:"provider_id,omitempty"` - // NOTE: This will be deprecated soon, once AuthProvider.audiences is - // implemented and accepted in all the runtime components. - // - // The list of JWT - // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). - // that are allowed to access. A JWT containing any of these audiences will - // be accepted. When this setting is absent, only JWTs with audience - // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]" - // will be accepted. For example, if no audiences are in the setting, - // LibraryService API will only accept JWTs with the following audience - // "https://library-example.googleapis.com/google.example.library.v1.LibraryService". - // - // Example: - // - // audiences: bookstore_android.apps.googleusercontent.com, - // bookstore_web.apps.googleusercontent.com - Audiences string `protobuf:"bytes,2,opt,name=audiences" json:"audiences,omitempty"` -} - -func (m *AuthRequirement) Reset() { *m = AuthRequirement{} } -func (m *AuthRequirement) String() string { return proto.CompactTextString(m) } -func (*AuthRequirement) ProtoMessage() {} -func (*AuthRequirement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *AuthRequirement) GetProviderId() string { - if m != nil { - return m.ProviderId - } - return "" -} - -func (m *AuthRequirement) GetAudiences() string { - if m != nil { - return m.Audiences - } - return "" -} - -func init() { - proto.RegisterType((*Authentication)(nil), "google.api.Authentication") - proto.RegisterType((*AuthenticationRule)(nil), "google.api.AuthenticationRule") - proto.RegisterType((*AuthProvider)(nil), "google.api.AuthProvider") - proto.RegisterType((*OAuthRequirements)(nil), "google.api.OAuthRequirements") - proto.RegisterType((*AuthRequirement)(nil), "google.api.AuthRequirement") -} - -func init() { proto.RegisterFile("google/api/auth.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 465 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x52, 0x5f, 0x6b, 0x13, 0x4f, - 0x14, 0x65, 0x93, 0xa6, 0xcd, 0xde, 0x94, 0xb4, 0x1d, 0xf8, 0x95, 0xfd, 0xd5, 0xaa, 0x21, 0x4f, - 0x11, 0x61, 0x03, 0xad, 0x88, 0x20, 0x28, 0xad, 0x88, 0xf4, 0xc9, 0x30, 0x52, 0x04, 0x5f, 0x96, - 0x71, 0x76, 0xdc, 0x8c, 0x9d, 0xce, 0x5d, 0xe7, 0x4f, 0x03, 0x3e, 0xf8, 0x49, 0x7c, 0xf2, 0x93, - 0xf9, 0x51, 0x64, 0x67, 0xb7, 0xc9, 0x6e, 0xfa, 0x78, 0xef, 0x39, 0xe7, 0xde, 0x7b, 0xce, 0x0c, - 0xfc, 0x57, 0x20, 0x16, 0x4a, 0xcc, 0x59, 0x29, 0xe7, 0xcc, 0xbb, 0x65, 0x5a, 0x1a, 0x74, 0x48, - 0xa0, 0x6e, 0xa7, 0xac, 0x94, 0x27, 0xa7, 0x6d, 0x8a, 0xd6, 0xe8, 0x98, 0x93, 0xa8, 0x6d, 0xcd, - 0x9c, 0xfe, 0x82, 0xf1, 0x85, 0x77, 0x4b, 0xa1, 0x9d, 0xe4, 0x01, 0x20, 0x2f, 0x60, 0x60, 0xbc, - 0x12, 0x36, 0xe9, 0x4f, 0xfa, 0xb3, 0xd1, 0xd9, 0x93, 0x74, 0x33, 0x2b, 0xed, 0x52, 0xa9, 0x57, - 0x82, 0xd6, 0x64, 0xf2, 0x12, 0xe2, 0xd2, 0xe0, 0x9d, 0xcc, 0x85, 0xb1, 0xc9, 0x4e, 0x50, 0x26, - 0xdb, 0xca, 0x45, 0x43, 0xa0, 0x1b, 0xea, 0xf4, 0x6f, 0x04, 0xe4, 0xe1, 0x54, 0x72, 0x02, 0x43, - 0x2b, 0x94, 0xe0, 0x0e, 0x4d, 0x12, 0x4d, 0xa2, 0x59, 0x4c, 0xd7, 0x35, 0x39, 0x87, 0x01, 0x56, - 0x5e, 0x93, 0xde, 0x24, 0x9a, 0x8d, 0xce, 0x1e, 0xb7, 0xd7, 0x7c, 0xac, 0x66, 0x51, 0xf1, 0xc3, - 0x4b, 0x23, 0x6e, 0x85, 0x76, 0x96, 0xd6, 0x5c, 0xf2, 0x0a, 0x12, 0xa6, 0x14, 0xae, 0xb2, 0x95, - 0x74, 0x4b, 0xf4, 0x2e, 0xe3, 0x46, 0xe4, 0xd5, 0x52, 0xa6, 0x92, 0xc1, 0x24, 0x9a, 0x0d, 0xe9, - 0x71, 0xc0, 0x3f, 0xd7, 0xf0, 0xbb, 0x35, 0x4a, 0xde, 0xc2, 0xbe, 0x69, 0x0d, 0x4c, 0xf6, 0x82, - 0xb9, 0x47, 0xdb, 0xe6, 0x5a, 0x4b, 0x69, 0x47, 0x30, 0xfd, 0x1d, 0xc1, 0x7e, 0xdb, 0x3e, 0x19, - 0x43, 0x4f, 0xe6, 0x8d, 0xad, 0x9e, 0xcc, 0xc9, 0x31, 0xec, 0x4a, 0x6b, 0xbd, 0x30, 0xc1, 0x51, - 0x4c, 0x9b, 0x8a, 0xfc, 0x0f, 0xc3, 0xef, 0xab, 0x1b, 0x9b, 0x79, 0x23, 0x93, 0x7e, 0x40, 0xf6, - 0xaa, 0xfa, 0xda, 0x48, 0x72, 0x0a, 0x31, 0xf3, 0xb9, 0x14, 0x9a, 0x8b, 0x2a, 0xee, 0x0a, 0xdb, - 0x34, 0xc8, 0x73, 0x38, 0xaa, 0x4c, 0xa3, 0x91, 0x3f, 0x43, 0xa4, 0x99, 0x37, 0xb5, 0xcb, 0x98, - 0x1e, 0x76, 0x80, 0x6b, 0xa3, 0xa6, 0x6f, 0xe0, 0xe8, 0x41, 0x6a, 0xe4, 0x19, 0x1c, 0x72, 0xa6, - 0x51, 0x4b, 0xce, 0x54, 0x66, 0x39, 0x96, 0xc2, 0x36, 0x07, 0x1f, 0xac, 0xfb, 0x9f, 0x42, 0x7b, - 0xba, 0x80, 0x83, 0x2d, 0x39, 0x79, 0x0a, 0xa3, 0xfb, 0x17, 0xce, 0xd6, 0x4e, 0xe1, 0xbe, 0x75, - 0x95, 0x77, 0xcf, 0xef, 0x6d, 0x9d, 0x7f, 0x79, 0x03, 0x63, 0x8e, 0xb7, 0xad, 0x80, 0x2f, 0xe3, - 0x26, 0x3f, 0x87, 0x8b, 0xe8, 0xcb, 0xfb, 0x06, 0x28, 0x50, 0x31, 0x5d, 0xa4, 0x68, 0x8a, 0x79, - 0x21, 0x74, 0xf8, 0xce, 0xf3, 0x1a, 0x62, 0xa5, 0xb4, 0xe1, 0xbf, 0x5b, 0x61, 0xee, 0x24, 0x17, - 0x1c, 0xf5, 0x37, 0x59, 0xbc, 0xee, 0x54, 0x7f, 0x7a, 0x3b, 0x1f, 0x2e, 0x16, 0x57, 0x5f, 0x77, - 0x83, 0xf0, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe5, 0xa3, 0x9d, 0xc6, 0x4a, 0x03, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/backend.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/backend.pb.go deleted file mode 100644 index 5704d9b0..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/backend.pb.go +++ /dev/null @@ -1,98 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/backend.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// `Backend` defines the backend configuration for a service. -type Backend struct { - // A list of API backend rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - Rules []*BackendRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` -} - -func (m *Backend) Reset() { *m = Backend{} } -func (m *Backend) String() string { return proto.CompactTextString(m) } -func (*Backend) ProtoMessage() {} -func (*Backend) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Backend) GetRules() []*BackendRule { - if m != nil { - return m.Rules - } - return nil -} - -// A backend rule provides configuration for an individual API element. -type BackendRule struct { - // Selects the methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"` - // The address of the API backend. - Address string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"` - // The number of seconds to wait for a response from a request. The - // default depends on the deployment context. - Deadline float64 `protobuf:"fixed64,3,opt,name=deadline" json:"deadline,omitempty"` -} - -func (m *BackendRule) Reset() { *m = BackendRule{} } -func (m *BackendRule) String() string { return proto.CompactTextString(m) } -func (*BackendRule) ProtoMessage() {} -func (*BackendRule) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *BackendRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - -func (m *BackendRule) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func (m *BackendRule) GetDeadline() float64 { - if m != nil { - return m.Deadline - } - return 0 -} - -func init() { - proto.RegisterType((*Backend)(nil), "google.api.Backend") - proto.RegisterType((*BackendRule)(nil), "google.api.BackendRule") -} - -func init() { proto.RegisterFile("google/api/backend.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 227 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0x31, 0x4f, 0x03, 0x21, - 0x18, 0x86, 0x43, 0xab, 0x56, 0xbf, 0x1a, 0x87, 0x5b, 0x24, 0x4e, 0x97, 0x4e, 0xb7, 0xc8, 0x25, - 0xba, 0x98, 0x38, 0x79, 0x89, 0x31, 0x6e, 0x17, 0x46, 0x17, 0x43, 0xe1, 0x93, 0x10, 0x91, 0x8f, - 0x40, 0xeb, 0x0f, 0xf2, 0x97, 0x9a, 0xc2, 0x59, 0xdb, 0xf1, 0xe1, 0x79, 0xdf, 0xc0, 0x0b, 0x70, - 0x4b, 0x64, 0x3d, 0xf6, 0x2a, 0xba, 0x7e, 0xad, 0xf4, 0x27, 0x06, 0x23, 0x62, 0xa2, 0x0d, 0x35, - 0x50, 0x8d, 0x50, 0xd1, 0xad, 0x1e, 0x60, 0x31, 0x54, 0xd9, 0xdc, 0xc2, 0x69, 0xda, 0x7a, 0xcc, - 0x9c, 0xb5, 0xf3, 0x6e, 0x79, 0x77, 0x2d, 0xfe, 0x63, 0x62, 0xca, 0xc8, 0xad, 0x47, 0x59, 0x53, - 0xab, 0x77, 0x58, 0x1e, 0x9c, 0x36, 0x37, 0x70, 0x9e, 0xd1, 0xa3, 0xde, 0x50, 0xe2, 0xac, 0x65, - 0xdd, 0x85, 0xdc, 0x73, 0xc3, 0x61, 0xa1, 0x8c, 0x49, 0x98, 0x33, 0x9f, 0x15, 0xf5, 0x87, 0xbb, - 0x96, 0x41, 0x65, 0xbc, 0x0b, 0xc8, 0xe7, 0x2d, 0xeb, 0x98, 0xdc, 0xf3, 0x10, 0xe0, 0x4a, 0xd3, - 0xd7, 0xc1, 0x2b, 0x86, 0xcb, 0xe9, 0xc2, 0x71, 0x37, 0x63, 0x64, 0x6f, 0xcf, 0x93, 0xb3, 0xe4, - 0x55, 0xb0, 0x82, 0x92, 0xed, 0x2d, 0x86, 0x32, 0xb2, 0xaf, 0x4a, 0x45, 0x97, 0xcb, 0x0f, 0x64, - 0x4c, 0xdf, 0x4e, 0xa3, 0xa6, 0xf0, 0xe1, 0xec, 0xe3, 0x11, 0xfd, 0xcc, 0x4e, 0x5e, 0x9e, 0xc6, - 0xd7, 0xf5, 0x59, 0x29, 0xde, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x93, 0x9e, 0x00, 0x39, - 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/billing.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/billing.pb.go deleted file mode 100644 index 81def6a6..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/billing.pb.go +++ /dev/null @@ -1,113 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/billing.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/metric" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Billing related configuration of the service. -// -// The following example shows how to configure monitored resources and metrics -// for billing: -// monitored_resources: -// - type: library.googleapis.com/branch -// labels: -// - key: /city -// description: The city where the library branch is located in. -// - key: /name -// description: The name of the branch. -// metrics: -// - name: library.googleapis.com/book/borrowed_count -// metric_kind: DELTA -// value_type: INT64 -// billing: -// consumer_destinations: -// - monitored_resource: library.googleapis.com/branch -// metrics: -// - library.googleapis.com/book/borrowed_count -type Billing struct { - // Billing configurations for sending metrics to the consumer project. - // There can be multiple consumer destinations per service, each one must have - // a different monitored resource type. A metric can be used in at most - // one consumer destination. - ConsumerDestinations []*Billing_BillingDestination `protobuf:"bytes,8,rep,name=consumer_destinations,json=consumerDestinations" json:"consumer_destinations,omitempty"` -} - -func (m *Billing) Reset() { *m = Billing{} } -func (m *Billing) String() string { return proto.CompactTextString(m) } -func (*Billing) ProtoMessage() {} -func (*Billing) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *Billing) GetConsumerDestinations() []*Billing_BillingDestination { - if m != nil { - return m.ConsumerDestinations - } - return nil -} - -// Configuration of a specific billing destination (Currently only support -// bill against consumer project). -type Billing_BillingDestination struct { - // The monitored resource type. The type must be defined in - // [Service.monitored_resources][google.api.Service.monitored_resources] section. - MonitoredResource string `protobuf:"bytes,1,opt,name=monitored_resource,json=monitoredResource" json:"monitored_resource,omitempty"` - // Names of the metrics to report to this billing destination. - // Each name must be defined in [Service.metrics][google.api.Service.metrics] section. - Metrics []string `protobuf:"bytes,2,rep,name=metrics" json:"metrics,omitempty"` -} - -func (m *Billing_BillingDestination) Reset() { *m = Billing_BillingDestination{} } -func (m *Billing_BillingDestination) String() string { return proto.CompactTextString(m) } -func (*Billing_BillingDestination) ProtoMessage() {} -func (*Billing_BillingDestination) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -func (m *Billing_BillingDestination) GetMonitoredResource() string { - if m != nil { - return m.MonitoredResource - } - return "" -} - -func (m *Billing_BillingDestination) GetMetrics() []string { - if m != nil { - return m.Metrics - } - return nil -} - -func init() { - proto.RegisterType((*Billing)(nil), "google.api.Billing") - proto.RegisterType((*Billing_BillingDestination)(nil), "google.api.Billing.BillingDestination") -} - -func init() { proto.RegisterFile("google/api/billing.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 265 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xc1, 0x4a, 0xc4, 0x30, - 0x10, 0x86, 0xe9, 0xae, 0xb8, 0x6e, 0x14, 0xc1, 0xa0, 0x58, 0x8a, 0x87, 0xe2, 0x41, 0x7a, 0xb1, - 0x05, 0x3d, 0x7a, 0xb2, 0x28, 0xe2, 0xad, 0xf4, 0xa8, 0xc8, 0x92, 0xcd, 0x8e, 0x61, 0xa0, 0x9d, - 0x29, 0x49, 0xd6, 0x07, 0xf2, 0x5d, 0x7c, 0x2f, 0xb1, 0x69, 0xdd, 0x8a, 0xa7, 0x30, 0xf9, 0xfe, - 0xf9, 0x67, 0xe6, 0x17, 0xb1, 0x61, 0x36, 0x0d, 0x14, 0xaa, 0xc3, 0x62, 0x8d, 0x4d, 0x83, 0x64, - 0xf2, 0xce, 0xb2, 0x67, 0x29, 0x02, 0xc9, 0x55, 0x87, 0xc9, 0xc5, 0x44, 0xa5, 0x88, 0xd8, 0x2b, - 0x8f, 0x4c, 0x2e, 0x28, 0x93, 0xf3, 0x09, 0x6d, 0xc1, 0x5b, 0xd4, 0x01, 0x5c, 0x7e, 0x45, 0x62, - 0x51, 0x06, 0x53, 0xf9, 0x2a, 0xce, 0x34, 0x93, 0xdb, 0xb6, 0x60, 0x57, 0x1b, 0x70, 0x1e, 0x29, - 0x78, 0xc4, 0x07, 0xe9, 0x3c, 0x3b, 0xbc, 0xb9, 0xca, 0x77, 0xe3, 0xf2, 0xa1, 0x67, 0x7c, 0x1f, - 0x76, 0xf2, 0xfa, 0x74, 0x34, 0x99, 0x7c, 0xba, 0xe4, 0x4d, 0xc8, 0xff, 0x5a, 0x79, 0x2d, 0x64, - 0xcb, 0x84, 0x9e, 0x2d, 0x6c, 0x56, 0x16, 0x1c, 0x6f, 0xad, 0x86, 0x38, 0x4a, 0xa3, 0x6c, 0x59, - 0x9f, 0xfc, 0x92, 0x7a, 0x00, 0x32, 0x16, 0x8b, 0xb0, 0xbd, 0x8b, 0x67, 0xe9, 0x3c, 0x5b, 0xd6, - 0x63, 0x59, 0x92, 0x38, 0xd6, 0xdc, 0x4e, 0x36, 0x2c, 0x8f, 0x86, 0x71, 0xd5, 0xcf, 0x9d, 0x55, - 0xf4, 0xf2, 0x38, 0x30, 0xc3, 0x8d, 0x22, 0x93, 0xb3, 0x35, 0x85, 0x01, 0xea, 0x53, 0x28, 0x02, - 0x52, 0x1d, 0xba, 0x3e, 0x21, 0x07, 0xf6, 0x03, 0x35, 0x68, 0xa6, 0x77, 0x34, 0x77, 0x7f, 0xaa, - 0xcf, 0xd9, 0xde, 0xd3, 0x7d, 0xf5, 0xbc, 0xde, 0xef, 0x1b, 0x6f, 0xbf, 0x03, 0x00, 0x00, 0xff, - 0xff, 0xca, 0x8b, 0xb4, 0x63, 0x9d, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/consumer.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/consumer.pb.go deleted file mode 100644 index 3e92ac50..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/consumer.pb.go +++ /dev/null @@ -1,158 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/consumer.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Supported data type of the property values -type Property_PropertyType int32 - -const ( - // The type is unspecified, and will result in an error. - Property_UNSPECIFIED Property_PropertyType = 0 - // The type is `int64`. - Property_INT64 Property_PropertyType = 1 - // The type is `bool`. - Property_BOOL Property_PropertyType = 2 - // The type is `string`. - Property_STRING Property_PropertyType = 3 - // The type is 'double'. - Property_DOUBLE Property_PropertyType = 4 -) - -var Property_PropertyType_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "INT64", - 2: "BOOL", - 3: "STRING", - 4: "DOUBLE", -} -var Property_PropertyType_value = map[string]int32{ - "UNSPECIFIED": 0, - "INT64": 1, - "BOOL": 2, - "STRING": 3, - "DOUBLE": 4, -} - -func (x Property_PropertyType) String() string { - return proto.EnumName(Property_PropertyType_name, int32(x)) -} -func (Property_PropertyType) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{1, 0} } - -// A descriptor for defining project properties for a service. One service may -// have many consumer projects, and the service may want to behave differently -// depending on some properties on the project. For example, a project may be -// associated with a school, or a business, or a government agency, a business -// type property on the project may affect how a service responds to the client. -// This descriptor defines which properties are allowed to be set on a project. -// -// Example: -// -// project_properties: -// properties: -// - name: NO_WATERMARK -// type: BOOL -// description: Allows usage of the API without watermarks. -// - name: EXTENDED_TILE_CACHE_PERIOD -// type: INT64 -type ProjectProperties struct { - // List of per consumer project-specific properties. - Properties []*Property `protobuf:"bytes,1,rep,name=properties" json:"properties,omitempty"` -} - -func (m *ProjectProperties) Reset() { *m = ProjectProperties{} } -func (m *ProjectProperties) String() string { return proto.CompactTextString(m) } -func (*ProjectProperties) ProtoMessage() {} -func (*ProjectProperties) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *ProjectProperties) GetProperties() []*Property { - if m != nil { - return m.Properties - } - return nil -} - -// Defines project properties. -// -// API services can define properties that can be assigned to consumer projects -// so that backends can perform response customization without having to make -// additional calls or maintain additional storage. For example, Maps API -// defines properties that controls map tile cache period, or whether to embed a -// watermark in a result. -// -// These values can be set via API producer console. Only API providers can -// define and set these properties. -type Property struct { - // The name of the property (a.k.a key). - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The type of this property. - Type Property_PropertyType `protobuf:"varint,2,opt,name=type,enum=google.api.Property_PropertyType" json:"type,omitempty"` - // The description of the property - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (m *Property) Reset() { *m = Property{} } -func (m *Property) String() string { return proto.CompactTextString(m) } -func (*Property) ProtoMessage() {} -func (*Property) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *Property) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Property) GetType() Property_PropertyType { - if m != nil { - return m.Type - } - return Property_UNSPECIFIED -} - -func (m *Property) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func init() { - proto.RegisterType((*ProjectProperties)(nil), "google.api.ProjectProperties") - proto.RegisterType((*Property)(nil), "google.api.Property") - proto.RegisterEnum("google.api.Property_PropertyType", Property_PropertyType_name, Property_PropertyType_value) -} - -func init() { proto.RegisterFile("google/api/consumer.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 299 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0x4f, 0x4f, 0xf2, 0x40, - 0x10, 0xc6, 0xdf, 0x85, 0xbe, 0x04, 0x06, 0xc5, 0xba, 0xf1, 0x50, 0x6f, 0x95, 0x13, 0xa7, 0x36, - 0x41, 0xf4, 0xe2, 0xad, 0x50, 0x4d, 0x13, 0x02, 0x4d, 0x81, 0x8b, 0xb7, 0x5a, 0xc7, 0x75, 0x0d, - 0xec, 0x6c, 0xb6, 0xd5, 0x84, 0x0f, 0xe8, 0xf7, 0x32, 0x2c, 0x88, 0x35, 0xf1, 0xf6, 0xcc, 0x3e, - 0x7f, 0xb2, 0xf9, 0xc1, 0xa5, 0x20, 0x12, 0x6b, 0x0c, 0x73, 0x2d, 0xc3, 0x82, 0x54, 0xf9, 0xbe, - 0x41, 0x13, 0x68, 0x43, 0x15, 0x71, 0xd8, 0x5b, 0x41, 0xae, 0x65, 0x3f, 0x81, 0xf3, 0xd4, 0xd0, - 0x1b, 0x16, 0x55, 0x6a, 0x48, 0xa3, 0xa9, 0x24, 0x96, 0x7c, 0x04, 0xa0, 0x8f, 0x97, 0xc7, 0xfc, - 0xe6, 0xa0, 0x3b, 0xbc, 0x08, 0x7e, 0x5a, 0xc1, 0x21, 0xbb, 0xcd, 0x6a, 0xb9, 0xfe, 0x27, 0x83, - 0xf6, 0xb7, 0xc1, 0x39, 0x38, 0x2a, 0xdf, 0xa0, 0xc7, 0x7c, 0x36, 0xe8, 0x64, 0x56, 0xf3, 0x1b, - 0x70, 0xaa, 0xad, 0x46, 0xaf, 0xe1, 0xb3, 0x41, 0x6f, 0x78, 0xf5, 0xd7, 0xe0, 0x51, 0x2c, 0xb7, - 0x1a, 0x33, 0x1b, 0xe7, 0x3e, 0x74, 0x9f, 0xb1, 0x2c, 0x8c, 0xd4, 0x95, 0x24, 0xe5, 0x35, 0xed, - 0x62, 0xfd, 0xa9, 0x3f, 0x85, 0x93, 0x7a, 0x8f, 0x9f, 0x41, 0x77, 0x35, 0x5b, 0xa4, 0xf1, 0x38, - 0xb9, 0x4f, 0xe2, 0x89, 0xfb, 0x8f, 0x77, 0xe0, 0x7f, 0x32, 0x5b, 0xde, 0x8e, 0x5c, 0xc6, 0xdb, - 0xe0, 0x44, 0xf3, 0xf9, 0xd4, 0x6d, 0x70, 0x80, 0xd6, 0x62, 0x99, 0x25, 0xb3, 0x07, 0xb7, 0xb9, - 0xd3, 0x93, 0xf9, 0x2a, 0x9a, 0xc6, 0xae, 0x13, 0xbd, 0x42, 0xaf, 0xa0, 0x4d, 0xed, 0x77, 0xd1, - 0xe9, 0xf8, 0x00, 0x30, 0xdd, 0xf1, 0x4b, 0xd9, 0x63, 0x7c, 0x30, 0x05, 0xad, 0x73, 0x25, 0x02, - 0x32, 0x22, 0x14, 0xa8, 0x2c, 0xdd, 0x70, 0x6f, 0xe5, 0x5a, 0x96, 0x96, 0x7d, 0x89, 0xe6, 0x43, - 0x16, 0x58, 0x90, 0x7a, 0x91, 0xe2, 0xee, 0xd7, 0xf5, 0xd4, 0xb2, 0x8d, 0xeb, 0xaf, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xb7, 0xa4, 0x04, 0x2c, 0xac, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/context.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/context.pb.go deleted file mode 100644 index f22859b0..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/context.pb.go +++ /dev/null @@ -1,114 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/context.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// `Context` defines which contexts an API requests. -// -// Example: -// -// context: -// rules: -// - selector: "*" -// requested: -// - google.rpc.context.ProjectContext -// - google.rpc.context.OriginContext -// -// The above specifies that all methods in the API request -// `google.rpc.context.ProjectContext` and -// `google.rpc.context.OriginContext`. -// -// Available context types are defined in package -// `google.rpc.context`. -type Context struct { - // A list of RPC context rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - Rules []*ContextRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` -} - -func (m *Context) Reset() { *m = Context{} } -func (m *Context) String() string { return proto.CompactTextString(m) } -func (*Context) ProtoMessage() {} -func (*Context) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *Context) GetRules() []*ContextRule { - if m != nil { - return m.Rules - } - return nil -} - -// A context rule provides information about the context for an individual API -// element. -type ContextRule struct { - // Selects the methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"` - // A list of full type names of requested contexts. - Requested []string `protobuf:"bytes,2,rep,name=requested" json:"requested,omitempty"` - // A list of full type names of provided contexts. - Provided []string `protobuf:"bytes,3,rep,name=provided" json:"provided,omitempty"` -} - -func (m *ContextRule) Reset() { *m = ContextRule{} } -func (m *ContextRule) String() string { return proto.CompactTextString(m) } -func (*ContextRule) ProtoMessage() {} -func (*ContextRule) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *ContextRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - -func (m *ContextRule) GetRequested() []string { - if m != nil { - return m.Requested - } - return nil -} - -func (m *ContextRule) GetProvided() []string { - if m != nil { - return m.Provided - } - return nil -} - -func init() { - proto.RegisterType((*Context)(nil), "google.api.Context") - proto.RegisterType((*ContextRule)(nil), "google.api.ContextRule") -} - -func init() { proto.RegisterFile("google/api/context.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 231 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0x4f, 0x4b, 0xc4, 0x30, - 0x14, 0xc4, 0xe9, 0xd6, 0x7f, 0x7d, 0x2b, 0x1e, 0x7a, 0x31, 0x88, 0x87, 0xb2, 0xa7, 0x5e, 0x4c, - 0x41, 0x2f, 0x82, 0x27, 0x57, 0x44, 0xbc, 0x95, 0x1e, 0xbd, 0xc5, 0xf4, 0x19, 0x02, 0x31, 0x2f, - 0x26, 0xe9, 0xe2, 0xe7, 0xf1, 0x93, 0xca, 0x26, 0x65, 0xff, 0x1c, 0x67, 0x7e, 0x33, 0x24, 0xf3, - 0x80, 0x29, 0x22, 0x65, 0xb0, 0x13, 0x4e, 0x77, 0x92, 0x6c, 0xc4, 0xdf, 0xc8, 0x9d, 0xa7, 0x48, - 0x35, 0x64, 0xc2, 0x85, 0xd3, 0xab, 0x47, 0x38, 0x7f, 0xc9, 0xb0, 0xbe, 0x83, 0x53, 0x3f, 0x19, - 0x0c, 0xac, 0x68, 0xca, 0x76, 0x79, 0x7f, 0xcd, 0xf7, 0x31, 0x3e, 0x67, 0x86, 0xc9, 0xe0, 0x90, - 0x53, 0x2b, 0x09, 0xcb, 0x03, 0xb7, 0xbe, 0x81, 0x8b, 0x80, 0x06, 0x65, 0x24, 0xcf, 0x8a, 0xa6, - 0x68, 0xab, 0x61, 0xa7, 0xeb, 0x5b, 0xa8, 0x3c, 0xfe, 0x4c, 0x18, 0x22, 0x8e, 0x6c, 0xd1, 0x94, - 0x6d, 0x35, 0xec, 0x8d, 0x6d, 0xd3, 0x79, 0xda, 0xe8, 0x11, 0x47, 0x56, 0x26, 0xb8, 0xd3, 0x6b, - 0x0b, 0x57, 0x92, 0xbe, 0x0f, 0x7e, 0xb2, 0xbe, 0x9c, 0x1f, 0xed, 0xb7, 0x53, 0xfa, 0xe2, 0xe3, - 0x75, 0x66, 0x8a, 0x8c, 0xb0, 0x8a, 0x93, 0x57, 0x9d, 0x42, 0x9b, 0x86, 0x76, 0x19, 0x09, 0xa7, - 0x43, 0xba, 0x42, 0x40, 0xbf, 0xd1, 0x12, 0x25, 0xd9, 0x2f, 0xad, 0x9e, 0x8e, 0xd4, 0xdf, 0xe2, - 0xe4, 0xed, 0xb9, 0x7f, 0xff, 0x3c, 0x4b, 0xc5, 0x87, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb5, - 0x18, 0x98, 0x7a, 0x3d, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/control.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/control.pb.go deleted file mode 100644 index 1f4d8678..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/control.pb.go +++ /dev/null @@ -1,55 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/control.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Selects and configures the service controller used by the service. The -// service controller handles features like abuse, quota, billing, logging, -// monitoring, etc. -type Control struct { - // The service control environment to use. If empty, no control plane - // feature (like quota and billing) will be enabled. - Environment string `protobuf:"bytes,1,opt,name=environment" json:"environment,omitempty"` -} - -func (m *Control) Reset() { *m = Control{} } -func (m *Control) String() string { return proto.CompactTextString(m) } -func (*Control) ProtoMessage() {} -func (*Control) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -func (m *Control) GetEnvironment() string { - if m != nil { - return m.Environment - } - return "" -} - -func init() { - proto.RegisterType((*Control)(nil), "google.api.Control") -} - -func init() { proto.RegisterFile("google/api/control.proto", fileDescriptor5) } - -var fileDescriptor5 = []byte{ - // 165 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x48, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x4f, 0xce, 0xcf, 0x2b, 0x29, 0xca, 0xcf, 0xd1, 0x2b, - 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x82, 0xc8, 0xe8, 0x25, 0x16, 0x64, 0x2a, 0x69, 0x73, 0xb1, - 0x3b, 0x43, 0x24, 0x85, 0x14, 0xb8, 0xb8, 0x53, 0xf3, 0xca, 0x32, 0x8b, 0xf2, 0xf3, 0x72, 0x53, - 0xf3, 0x4a, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0x90, 0x85, 0x9c, 0xf2, 0xb8, 0xf8, 0x92, - 0xf3, 0x73, 0xf5, 0x10, 0xda, 0x9d, 0x78, 0xa0, 0x9a, 0x03, 0x40, 0x06, 0x07, 0x30, 0x46, 0xb9, - 0x42, 0xe5, 0xd2, 0xf3, 0x73, 0x12, 0xf3, 0xd2, 0xf5, 0xf2, 0x8b, 0xd2, 0xf5, 0xd3, 0x53, 0xf3, - 0xc0, 0xd6, 0xea, 0x43, 0xa4, 0x12, 0x0b, 0x32, 0x8b, 0xc1, 0x6e, 0x2a, 0x4e, 0x2d, 0x2a, 0xcb, - 0x4c, 0x4e, 0x4d, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xb7, 0x46, 0xe1, 0x2d, 0x62, 0x62, 0x71, 0x77, - 0x0c, 0xf0, 0x4c, 0x62, 0x03, 0x6b, 0x34, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x44, 0x6e, 0x78, - 0xbd, 0xcb, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/documentation.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/documentation.pb.go deleted file mode 100644 index 99a568cf..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/documentation.pb.go +++ /dev/null @@ -1,267 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/documentation.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// `Documentation` provides the information for describing a service. -// -// Example: -// <pre><code>documentation: -// summary: > -// The Google Calendar API gives access -// to most calendar features. -// pages: -// - name: Overview -// content: &#40;== include google/foo/overview.md ==&#41; -// - name: Tutorial -// content: &#40;== include google/foo/tutorial.md ==&#41; -// subpages; -// - name: Java -// content: &#40;== include google/foo/tutorial_java.md ==&#41; -// rules: -// - selector: google.calendar.Calendar.Get -// description: > -// ... -// - selector: google.calendar.Calendar.Put -// description: > -// ... -// </code></pre> -// Documentation is provided in markdown syntax. In addition to -// standard markdown features, definition lists, tables and fenced -// code blocks are supported. Section headers can be provided and are -// interpreted relative to the section nesting of the context where -// a documentation fragment is embedded. -// -// Documentation from the IDL is merged with documentation defined -// via the config at normalization time, where documentation provided -// by config rules overrides IDL provided. -// -// A number of constructs specific to the API platform are supported -// in documentation text. -// -// In order to reference a proto element, the following -// notation can be used: -// <pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre> -// To override the display text used for the link, this can be used: -// <pre><code>&#91;display text]&#91;fully.qualified.proto.name]</code></pre> -// Text can be excluded from doc using the following notation: -// <pre><code>&#40;-- internal comment --&#41;</code></pre> -// Comments can be made conditional using a visibility label. The below -// text will be only rendered if the `BETA` label is available: -// <pre><code>&#40;--BETA: comment for BETA users --&#41;</code></pre> -// A few directives are available in documentation. Note that -// directives must appear on a single line to be properly -// identified. The `include` directive includes a markdown file from -// an external source: -// <pre><code>&#40;== include path/to/file ==&#41;</code></pre> -// The `resource_for` directive marks a message to be the resource of -// a collection in REST view. If it is not specified, tools attempt -// to infer the resource from the operations in a collection: -// <pre><code>&#40;== resource_for v1.shelves.books ==&#41;</code></pre> -// The directive `suppress_warning` does not directly affect documentation -// and is documented together with service config validation. -type Documentation struct { - // A short summary of what the service does. Can only be provided by - // plain text. - Summary string `protobuf:"bytes,1,opt,name=summary" json:"summary,omitempty"` - // The top level pages for the documentation set. - Pages []*Page `protobuf:"bytes,5,rep,name=pages" json:"pages,omitempty"` - // A list of documentation rules that apply to individual API elements. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - Rules []*DocumentationRule `protobuf:"bytes,3,rep,name=rules" json:"rules,omitempty"` - // The URL to the root of documentation. - DocumentationRootUrl string `protobuf:"bytes,4,opt,name=documentation_root_url,json=documentationRootUrl" json:"documentation_root_url,omitempty"` - // Declares a single overview page. For example: - // <pre><code>documentation: - // summary: ... - // overview: &#40;== include overview.md ==&#41; - // </code></pre> - // This is a shortcut for the following declaration (using pages style): - // <pre><code>documentation: - // summary: ... - // pages: - // - name: Overview - // content: &#40;== include overview.md ==&#41; - // </code></pre> - // Note: you cannot specify both `overview` field and `pages` field. - Overview string `protobuf:"bytes,2,opt,name=overview" json:"overview,omitempty"` -} - -func (m *Documentation) Reset() { *m = Documentation{} } -func (m *Documentation) String() string { return proto.CompactTextString(m) } -func (*Documentation) ProtoMessage() {} -func (*Documentation) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} } - -func (m *Documentation) GetSummary() string { - if m != nil { - return m.Summary - } - return "" -} - -func (m *Documentation) GetPages() []*Page { - if m != nil { - return m.Pages - } - return nil -} - -func (m *Documentation) GetRules() []*DocumentationRule { - if m != nil { - return m.Rules - } - return nil -} - -func (m *Documentation) GetDocumentationRootUrl() string { - if m != nil { - return m.DocumentationRootUrl - } - return "" -} - -func (m *Documentation) GetOverview() string { - if m != nil { - return m.Overview - } - return "" -} - -// A documentation rule provides information about individual API elements. -type DocumentationRule struct { - // The selector is a comma-separated list of patterns. Each pattern is a - // qualified name of the element which may end in "*", indicating a wildcard. - // Wildcards are only allowed at the end and for a whole component of the - // qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To - // specify a default for all applicable elements, the whole pattern "*" - // is used. - Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"` - // Description of the selected API(s). - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Deprecation description of the selected element(s). It can be provided if an - // element is marked as `deprecated`. - DeprecationDescription string `protobuf:"bytes,3,opt,name=deprecation_description,json=deprecationDescription" json:"deprecation_description,omitempty"` -} - -func (m *DocumentationRule) Reset() { *m = DocumentationRule{} } -func (m *DocumentationRule) String() string { return proto.CompactTextString(m) } -func (*DocumentationRule) ProtoMessage() {} -func (*DocumentationRule) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} } - -func (m *DocumentationRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - -func (m *DocumentationRule) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *DocumentationRule) GetDeprecationDescription() string { - if m != nil { - return m.DeprecationDescription - } - return "" -} - -// Represents a documentation page. A page can contain subpages to represent -// nested documentation set structure. -type Page struct { - // The name of the page. It will be used as an identity of the page to - // generate URI of the page, text of the link to this page in navigation, - // etc. The full page name (start from the root page name to this page - // concatenated with `.`) can be used as reference to the page in your - // documentation. For example: - // <pre><code>pages: - // - name: Tutorial - // content: &#40;== include tutorial.md ==&#41; - // subpages: - // - name: Java - // content: &#40;== include tutorial_java.md ==&#41; - // </code></pre> - // You can reference `Java` page using Markdown reference link syntax: - // `[Java][Tutorial.Java]`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The Markdown content of the page. You can use <code>&#40;== include {path} ==&#41;</code> - // to include content from a Markdown file. - Content string `protobuf:"bytes,2,opt,name=content" json:"content,omitempty"` - // Subpages of this page. The order of subpages specified here will be - // honored in the generated docset. - Subpages []*Page `protobuf:"bytes,3,rep,name=subpages" json:"subpages,omitempty"` -} - -func (m *Page) Reset() { *m = Page{} } -func (m *Page) String() string { return proto.CompactTextString(m) } -func (*Page) ProtoMessage() {} -func (*Page) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} } - -func (m *Page) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Page) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *Page) GetSubpages() []*Page { - if m != nil { - return m.Subpages - } - return nil -} - -func init() { - proto.RegisterType((*Documentation)(nil), "google.api.Documentation") - proto.RegisterType((*DocumentationRule)(nil), "google.api.DocumentationRule") - proto.RegisterType((*Page)(nil), "google.api.Page") -} - -func init() { proto.RegisterFile("google/api/documentation.proto", fileDescriptor6) } - -var fileDescriptor6 = []byte{ - // 356 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xc1, 0x6a, 0xe3, 0x30, - 0x14, 0x45, 0x71, 0xec, 0xcc, 0x64, 0x5e, 0x98, 0x61, 0x46, 0x0c, 0x19, 0x33, 0xd0, 0x12, 0xb2, - 0x28, 0x59, 0x14, 0x1b, 0x9a, 0x42, 0x17, 0x5d, 0x35, 0xa4, 0x94, 0xee, 0x8c, 0xa1, 0x9b, 0x6e, - 0x82, 0xa2, 0xbc, 0x0a, 0x83, 0xad, 0x67, 0x24, 0x39, 0xa5, 0xbf, 0xd0, 0xcf, 0xe8, 0x57, 0xf5, - 0x73, 0x8a, 0x65, 0x27, 0xb1, 0x29, 0xdd, 0xf9, 0xfa, 0x1e, 0xe9, 0x3e, 0x5d, 0x09, 0x4e, 0x25, - 0x91, 0xcc, 0x31, 0xe6, 0x65, 0x16, 0x6f, 0x49, 0x54, 0x05, 0x2a, 0xcb, 0x6d, 0x46, 0x2a, 0x2a, - 0x35, 0x59, 0x62, 0xd0, 0xf8, 0x11, 0x2f, 0xb3, 0xd9, 0xbb, 0x07, 0x3f, 0x57, 0x5d, 0x86, 0x85, - 0xf0, 0xdd, 0x54, 0x45, 0xc1, 0xf5, 0x4b, 0xe8, 0x4d, 0xbd, 0xf9, 0x8f, 0x74, 0x2f, 0xd9, 0x19, - 0x0c, 0x4b, 0x2e, 0xd1, 0x84, 0xc3, 0xa9, 0x3f, 0x1f, 0x5f, 0xfc, 0x8e, 0x8e, 0xfb, 0x44, 0x09, - 0x97, 0x98, 0x36, 0x36, 0x5b, 0xc0, 0x50, 0x57, 0x39, 0x9a, 0xd0, 0x77, 0xdc, 0x49, 0x97, 0xeb, - 0x65, 0xa5, 0x55, 0x8e, 0x69, 0xc3, 0xb2, 0x4b, 0x98, 0xf4, 0x66, 0x5d, 0x6b, 0x22, 0xbb, 0xae, - 0x74, 0x1e, 0x06, 0x6e, 0x8a, 0xbf, 0x3d, 0x37, 0x25, 0xb2, 0x0f, 0x3a, 0x67, 0xff, 0x61, 0x44, - 0x3b, 0xd4, 0xbb, 0x0c, 0x9f, 0xc3, 0x81, 0xe3, 0x0e, 0x7a, 0xf6, 0xea, 0xc1, 0x9f, 0x4f, 0x71, - 0xf5, 0x0a, 0x83, 0x39, 0x0a, 0x4b, 0xba, 0x3d, 0xdf, 0x41, 0xb3, 0x29, 0x8c, 0xb7, 0x68, 0x84, - 0xce, 0xca, 0x1a, 0x6f, 0x37, 0xec, 0xfe, 0x62, 0x57, 0xf0, 0x6f, 0x8b, 0xa5, 0x46, 0xd1, 0xcc, - 0xd8, 0xa5, 0x7d, 0x47, 0x4f, 0x3a, 0xf6, 0xea, 0xe8, 0xce, 0x36, 0x10, 0xd4, 0x15, 0x31, 0x06, - 0x81, 0xe2, 0x05, 0xb6, 0xd1, 0xee, 0xbb, 0x6e, 0x5c, 0x90, 0xb2, 0xa8, 0x6c, 0x1b, 0xb9, 0x97, - 0xec, 0x1c, 0x46, 0xa6, 0xda, 0x34, 0xa5, 0xfb, 0x5f, 0x94, 0x7e, 0x20, 0x96, 0x16, 0x7e, 0x09, - 0x2a, 0x3a, 0xc0, 0x92, 0xf5, 0xce, 0x9f, 0xd4, 0xb7, 0x9f, 0x78, 0x8f, 0xb7, 0x2d, 0x21, 0x29, - 0xe7, 0x4a, 0x46, 0xa4, 0x65, 0x2c, 0x51, 0xb9, 0xb7, 0x11, 0x37, 0x16, 0x2f, 0x33, 0xe3, 0x9e, - 0x8f, 0xa9, 0xbb, 0x14, 0x28, 0x48, 0x3d, 0x65, 0xf2, 0xba, 0xa7, 0xde, 0x06, 0xc1, 0xdd, 0x4d, - 0x72, 0xbf, 0xf9, 0xe6, 0x16, 0x2e, 0x3e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x04, 0x32, 0xbf, - 0x76, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/endpoint.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/endpoint.pb.go deleted file mode 100644 index 4bca1828..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/endpoint.pb.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/endpoint.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// `Endpoint` describes a network endpoint that serves a set of APIs. -// A service may expose any number of endpoints, and all endpoints share the -// same service configuration, such as quota configuration and monitoring -// configuration. -// -// Example service configuration: -// -// name: library-example.googleapis.com -// endpoints: -// # Below entry makes 'google.example.library.v1.Library' -// # API be served from endpoint address library-example.googleapis.com. -// # It also allows HTTP OPTIONS calls to be passed to the backend, for -// # it to decide whether the subsequent cross-origin request is -// # allowed to proceed. -// - name: library-example.googleapis.com -// allow_cors: true -type Endpoint struct { - // The canonical name of this endpoint. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // DEPRECATED: This field is no longer supported. Instead of using aliases, - // please specify multiple [google.api.Endpoint][google.api.Endpoint] for each of the intented - // alias. - // - // Additional names that this endpoint will be hosted on. - Aliases []string `protobuf:"bytes,2,rep,name=aliases" json:"aliases,omitempty"` - // The list of APIs served by this endpoint. - Apis []string `protobuf:"bytes,3,rep,name=apis" json:"apis,omitempty"` - // The list of features enabled on this endpoint. - Features []string `protobuf:"bytes,4,rep,name=features" json:"features,omitempty"` - // The specification of an Internet routable address of API frontend that will - // handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary). - // It should be either a valid IPv4 address or a fully-qualified domain name. - // For example, "8.8.8.8" or "myservice.appspot.com". - Target string `protobuf:"bytes,101,opt,name=target" json:"target,omitempty"` - // Allowing - // [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka - // cross-domain traffic, would allow the backends served from this endpoint to - // receive and respond to HTTP OPTIONS requests. The response will be used by - // the browser to determine whether the subsequent cross-origin request is - // allowed to proceed. - AllowCors bool `protobuf:"varint,5,opt,name=allow_cors,json=allowCors" json:"allow_cors,omitempty"` -} - -func (m *Endpoint) Reset() { *m = Endpoint{} } -func (m *Endpoint) String() string { return proto.CompactTextString(m) } -func (*Endpoint) ProtoMessage() {} -func (*Endpoint) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{0} } - -func (m *Endpoint) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Endpoint) GetAliases() []string { - if m != nil { - return m.Aliases - } - return nil -} - -func (m *Endpoint) GetApis() []string { - if m != nil { - return m.Apis - } - return nil -} - -func (m *Endpoint) GetFeatures() []string { - if m != nil { - return m.Features - } - return nil -} - -func (m *Endpoint) GetTarget() string { - if m != nil { - return m.Target - } - return "" -} - -func (m *Endpoint) GetAllowCors() bool { - if m != nil { - return m.AllowCors - } - return false -} - -func init() { - proto.RegisterType((*Endpoint)(nil), "google.api.Endpoint") -} - -func init() { proto.RegisterFile("google/api/endpoint.proto", fileDescriptor7) } - -var fileDescriptor7 = []byte{ - // 253 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0x41, 0x4b, 0xc4, 0x30, - 0x10, 0x85, 0xe9, 0x6e, 0x5d, 0xdb, 0x01, 0x3d, 0xe4, 0x20, 0x71, 0x51, 0x28, 0x9e, 0x7a, 0x6a, - 0x0f, 0x1e, 0x3d, 0xb9, 0xb2, 0x88, 0xb7, 0xd2, 0xa3, 0x17, 0x19, 0xeb, 0x6c, 0x08, 0x64, 0x33, - 0x21, 0x89, 0xfa, 0x73, 0x04, 0x7f, 0xa9, 0x34, 0xed, 0xaa, 0x7b, 0x9b, 0xef, 0xbd, 0x37, 0x61, - 0x5e, 0xe0, 0x52, 0x31, 0x2b, 0x43, 0x2d, 0x3a, 0xdd, 0x92, 0x7d, 0x73, 0xac, 0x6d, 0x6c, 0x9c, - 0xe7, 0xc8, 0x02, 0x26, 0xab, 0x41, 0xa7, 0xd7, 0x57, 0xff, 0x62, 0x68, 0x2d, 0x47, 0x8c, 0x9a, - 0x6d, 0x98, 0x92, 0x37, 0x5f, 0x19, 0x14, 0xdb, 0x79, 0x59, 0x08, 0xc8, 0x2d, 0xee, 0x49, 0x66, - 0x55, 0x56, 0x97, 0x7d, 0x9a, 0x85, 0x84, 0x53, 0x34, 0x1a, 0x03, 0x05, 0xb9, 0xa8, 0x96, 0x75, - 0xd9, 0x1f, 0x70, 0x4c, 0xa3, 0xd3, 0x41, 0x2e, 0x93, 0x9c, 0x66, 0xb1, 0x86, 0x62, 0x47, 0x18, - 0xdf, 0x3d, 0x05, 0x99, 0x27, 0xfd, 0x97, 0xc5, 0x05, 0xac, 0x22, 0x7a, 0x45, 0x51, 0x52, 0x7a, - 0x7f, 0x26, 0x71, 0x0d, 0x80, 0xc6, 0xf0, 0xe7, 0xcb, 0xc0, 0x3e, 0xc8, 0x93, 0x2a, 0xab, 0x8b, - 0xbe, 0x4c, 0xca, 0x03, 0xfb, 0xb0, 0x61, 0x38, 0x1f, 0x78, 0xdf, 0xfc, 0x35, 0xda, 0x9c, 0x1d, - 0x0e, 0xee, 0xc6, 0x0a, 0x5d, 0xf6, 0xbc, 0x9d, 0x4d, 0xc5, 0x06, 0xad, 0x6a, 0xd8, 0xab, 0x56, - 0x91, 0x4d, 0x05, 0xdb, 0xc9, 0x1a, 0x8f, 0x4b, 0x3f, 0x10, 0xc8, 0x7f, 0xe8, 0x81, 0x06, 0xb6, - 0x3b, 0xad, 0xee, 0x8e, 0xe8, 0x7b, 0x91, 0x3f, 0xde, 0x77, 0x4f, 0xaf, 0xab, 0xb4, 0x78, 0xfb, - 0x13, 0x00, 0x00, 0xff, 0xff, 0x34, 0x0e, 0xdd, 0x70, 0x60, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/log.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/log.pb.go deleted file mode 100644 index 09ed8bd8..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/log.pb.go +++ /dev/null @@ -1,98 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/log.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_api2 "google.golang.org/genproto/googleapis/api/label" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A description of a log type. Example in YAML format: -// -// - name: library.googleapis.com/activity_history -// description: The history of borrowing and returning library items. -// display_name: Activity -// labels: -// - key: /customer_id -// description: Identifier of a library customer -type LogDescriptor struct { - // The name of the log. It must be less than 512 characters long and can - // include the following characters: upper- and lower-case alphanumeric - // characters [A-Za-z0-9], and punctuation characters including - // slash, underscore, hyphen, period [/_-.]. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The set of labels that are available to describe a specific log entry. - // Runtime requests that contain labels not specified here are - // considered invalid. - Labels []*google_api2.LabelDescriptor `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty"` - // A human-readable description of this log. This information appears in - // the documentation and can contain details. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // The human-readable name for this log. This information appears on - // the user interface and should be concise. - DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName" json:"display_name,omitempty"` -} - -func (m *LogDescriptor) Reset() { *m = LogDescriptor{} } -func (m *LogDescriptor) String() string { return proto.CompactTextString(m) } -func (*LogDescriptor) ProtoMessage() {} -func (*LogDescriptor) Descriptor() ([]byte, []int) { return fileDescriptor8, []int{0} } - -func (m *LogDescriptor) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LogDescriptor) GetLabels() []*google_api2.LabelDescriptor { - if m != nil { - return m.Labels - } - return nil -} - -func (m *LogDescriptor) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *LogDescriptor) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func init() { - proto.RegisterType((*LogDescriptor)(nil), "google.api.LogDescriptor") -} - -func init() { proto.RegisterFile("google/api/log.proto", fileDescriptor8) } - -var fileDescriptor8 = []byte{ - // 238 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x8f, 0xc1, 0x4a, 0xc3, 0x40, - 0x10, 0x86, 0x49, 0x1b, 0x8a, 0x6e, 0xd5, 0xc3, 0x22, 0x12, 0xf4, 0x12, 0x3d, 0xf5, 0xb4, 0x01, - 0x7b, 0xf4, 0x64, 0x51, 0x44, 0x08, 0x12, 0x7a, 0xf4, 0x22, 0xd3, 0x74, 0x1c, 0x46, 0x36, 0x3b, - 0xcb, 0x6e, 0x11, 0x7c, 0x18, 0x2f, 0x3e, 0xa9, 0x74, 0x13, 0x68, 0x7a, 0xdb, 0xfd, 0xe6, 0x9b, - 0x7f, 0x66, 0xd4, 0x25, 0x89, 0x90, 0xc5, 0x0a, 0x3c, 0x57, 0x56, 0xc8, 0xf8, 0x20, 0x3b, 0xd1, - 0xaa, 0xa7, 0x06, 0x3c, 0x5f, 0x5f, 0x8d, 0x0d, 0xd8, 0xa0, 0xed, 0x9d, 0xbb, 0xdf, 0x4c, 0x9d, - 0xd7, 0x42, 0x4f, 0x18, 0xdb, 0xc0, 0x7e, 0x27, 0x41, 0x6b, 0x95, 0x3b, 0xe8, 0xb0, 0xc8, 0xca, - 0x6c, 0x71, 0xba, 0x4e, 0x6f, 0xbd, 0x54, 0xb3, 0xd4, 0x14, 0x8b, 0x49, 0x39, 0x5d, 0xcc, 0xef, - 0x6f, 0xcc, 0x21, 0xda, 0xd4, 0xfb, 0xca, 0x21, 0x60, 0x3d, 0xa8, 0xba, 0x54, 0xf3, 0xed, 0x40, - 0x59, 0x5c, 0x31, 0x4d, 0x79, 0x63, 0xa4, 0x6f, 0xd5, 0xd9, 0x96, 0xa3, 0xb7, 0xf0, 0xf3, 0x91, - 0x46, 0xe6, 0x83, 0xd2, 0xb3, 0x37, 0xe8, 0x70, 0xf5, 0xa5, 0x2e, 0x5a, 0xe9, 0x46, 0xe3, 0x56, - 0x27, 0xb5, 0x50, 0xb3, 0xdf, 0xbd, 0xc9, 0xde, 0x9f, 0x07, 0x4e, 0x62, 0xc1, 0x91, 0x91, 0x40, - 0x15, 0xa1, 0x4b, 0x97, 0x55, 0x7d, 0x09, 0x3c, 0xc7, 0x74, 0x74, 0xc4, 0xf0, 0xcd, 0x2d, 0xb6, - 0xe2, 0x3e, 0x99, 0x1e, 0x8e, 0x7e, 0x7f, 0x93, 0xfc, 0xe5, 0xb1, 0x79, 0xdd, 0xcc, 0x52, 0xe3, - 0xf2, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x25, 0x6c, 0x32, 0xff, 0x4e, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/logging.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/logging.pb.go deleted file mode 100644 index b62778ae..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/logging.pb.go +++ /dev/null @@ -1,135 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/logging.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Logging configuration of the service. -// -// The following example shows how to configure logs to be sent to the -// producer and consumer projects. In the example, the `activity_history` -// log is sent to both the producer and consumer projects, whereas the -// `purchase_history` log is only sent to the producer project. -// -// monitored_resources: -// - type: library.googleapis.com/branch -// labels: -// - key: /city -// description: The city where the library branch is located in. -// - key: /name -// description: The name of the branch. -// logs: -// - name: activity_history -// labels: -// - key: /customer_id -// - name: purchase_history -// logging: -// producer_destinations: -// - monitored_resource: library.googleapis.com/branch -// logs: -// - activity_history -// - purchase_history -// consumer_destinations: -// - monitored_resource: library.googleapis.com/branch -// logs: -// - activity_history -type Logging struct { - // Logging configurations for sending logs to the producer project. - // There can be multiple producer destinations, each one must have a - // different monitored resource type. A log can be used in at most - // one producer destination. - ProducerDestinations []*Logging_LoggingDestination `protobuf:"bytes,1,rep,name=producer_destinations,json=producerDestinations" json:"producer_destinations,omitempty"` - // Logging configurations for sending logs to the consumer project. - // There can be multiple consumer destinations, each one must have a - // different monitored resource type. A log can be used in at most - // one consumer destination. - ConsumerDestinations []*Logging_LoggingDestination `protobuf:"bytes,2,rep,name=consumer_destinations,json=consumerDestinations" json:"consumer_destinations,omitempty"` -} - -func (m *Logging) Reset() { *m = Logging{} } -func (m *Logging) String() string { return proto.CompactTextString(m) } -func (*Logging) ProtoMessage() {} -func (*Logging) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{0} } - -func (m *Logging) GetProducerDestinations() []*Logging_LoggingDestination { - if m != nil { - return m.ProducerDestinations - } - return nil -} - -func (m *Logging) GetConsumerDestinations() []*Logging_LoggingDestination { - if m != nil { - return m.ConsumerDestinations - } - return nil -} - -// Configuration of a specific logging destination (the producer project -// or the consumer project). -type Logging_LoggingDestination struct { - // The monitored resource type. The type must be defined in the - // [Service.monitored_resources][google.api.Service.monitored_resources] section. - MonitoredResource string `protobuf:"bytes,3,opt,name=monitored_resource,json=monitoredResource" json:"monitored_resource,omitempty"` - // Names of the logs to be sent to this destination. Each name must - // be defined in the [Service.logs][google.api.Service.logs] section. If the log name is - // not a domain scoped name, it will be automatically prefixed with - // the service name followed by "/". - Logs []string `protobuf:"bytes,1,rep,name=logs" json:"logs,omitempty"` -} - -func (m *Logging_LoggingDestination) Reset() { *m = Logging_LoggingDestination{} } -func (m *Logging_LoggingDestination) String() string { return proto.CompactTextString(m) } -func (*Logging_LoggingDestination) ProtoMessage() {} -func (*Logging_LoggingDestination) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{0, 0} } - -func (m *Logging_LoggingDestination) GetMonitoredResource() string { - if m != nil { - return m.MonitoredResource - } - return "" -} - -func (m *Logging_LoggingDestination) GetLogs() []string { - if m != nil { - return m.Logs - } - return nil -} - -func init() { - proto.RegisterType((*Logging)(nil), "google.api.Logging") - proto.RegisterType((*Logging_LoggingDestination)(nil), "google.api.Logging.LoggingDestination") -} - -func init() { proto.RegisterFile("google/api/logging.proto", fileDescriptor9) } - -var fileDescriptor9 = []byte{ - // 270 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x90, 0x4f, 0x4b, 0xc4, 0x30, - 0x10, 0xc5, 0x69, 0x77, 0x51, 0x36, 0x8a, 0x60, 0x50, 0x28, 0x8b, 0x87, 0xc5, 0x83, 0xec, 0xc5, - 0x14, 0xf4, 0xe8, 0xc9, 0x45, 0x11, 0xc1, 0x43, 0xe9, 0x45, 0xd0, 0xc3, 0x12, 0xd3, 0x38, 0x04, - 0xda, 0x99, 0x90, 0xa4, 0x7e, 0x1a, 0x4f, 0x7e, 0x52, 0xd9, 0xa6, 0x75, 0xab, 0x9e, 0xf6, 0x94, - 0x3f, 0xef, 0xbd, 0x5f, 0x32, 0x8f, 0x65, 0x40, 0x04, 0xb5, 0xce, 0xa5, 0x35, 0x79, 0x4d, 0x00, - 0x06, 0x41, 0x58, 0x47, 0x81, 0x38, 0x8b, 0x8a, 0x90, 0xd6, 0xcc, 0xcf, 0x46, 0x2e, 0x89, 0x48, - 0x41, 0x06, 0x43, 0xe8, 0xa3, 0xf3, 0xfc, 0x33, 0x65, 0xfb, 0x4f, 0x31, 0xcb, 0x5f, 0xd9, 0xa9, - 0x75, 0x54, 0xb5, 0x4a, 0xbb, 0x75, 0xa5, 0x7d, 0x30, 0x18, 0xad, 0x59, 0xb2, 0x98, 0x2c, 0x0f, - 0xae, 0x2e, 0xc4, 0x96, 0x2a, 0xfa, 0xcc, 0xb0, 0xde, 0x6d, 0xed, 0xe5, 0xc9, 0x00, 0x19, 0x5d, - 0xfa, 0x0d, 0x5c, 0x11, 0xfa, 0xb6, 0xf9, 0x0b, 0x4f, 0x77, 0x83, 0x0f, 0x90, 0x31, 0x7c, 0xfe, - 0xcc, 0xf8, 0x7f, 0x2f, 0xbf, 0x64, 0xbc, 0x21, 0x34, 0x81, 0x9c, 0xae, 0xd6, 0x4e, 0x7b, 0x6a, - 0x9d, 0xd2, 0xd9, 0x64, 0x91, 0x2c, 0x67, 0xe5, 0xf1, 0x8f, 0x52, 0xf6, 0x02, 0xe7, 0x6c, 0x5a, - 0x13, 0xc4, 0x69, 0x67, 0x65, 0xb7, 0x5f, 0x21, 0x3b, 0x52, 0xd4, 0x8c, 0xfe, 0xb6, 0x3a, 0xec, - 0x1f, 0x2a, 0x36, 0xf5, 0x15, 0xc9, 0xcb, 0x7d, 0xaf, 0x01, 0xd5, 0x12, 0x41, 0x90, 0x83, 0x1c, - 0x34, 0x76, 0xe5, 0xe6, 0x51, 0x92, 0xd6, 0xf8, 0xae, 0x7d, 0xaf, 0xdd, 0x87, 0x51, 0x5a, 0x11, - 0xbe, 0x1b, 0xb8, 0xf9, 0x75, 0xfa, 0x4a, 0xa7, 0x0f, 0xb7, 0xc5, 0xe3, 0xdb, 0x5e, 0x17, 0xbc, - 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x73, 0x4f, 0x86, 0x6e, 0xdb, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/monitoring.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/monitoring.pb.go deleted file mode 100644 index 3ebb6e14..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/monitoring.pb.go +++ /dev/null @@ -1,143 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/monitoring.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Monitoring configuration of the service. -// -// The example below shows how to configure monitored resources and metrics -// for monitoring. In the example, a monitored resource and two metrics are -// defined. The `library.googleapis.com/book/returned_count` metric is sent -// to both producer and consumer projects, whereas the -// `library.googleapis.com/book/overdue_count` metric is only sent to the -// consumer project. -// -// monitored_resources: -// - type: library.googleapis.com/branch -// labels: -// - key: /city -// description: The city where the library branch is located in. -// - key: /name -// description: The name of the branch. -// metrics: -// - name: library.googleapis.com/book/returned_count -// metric_kind: DELTA -// value_type: INT64 -// labels: -// - key: /customer_id -// - name: library.googleapis.com/book/overdue_count -// metric_kind: GAUGE -// value_type: INT64 -// labels: -// - key: /customer_id -// monitoring: -// producer_destinations: -// - monitored_resource: library.googleapis.com/branch -// metrics: -// - library.googleapis.com/book/returned_count -// consumer_destinations: -// - monitored_resource: library.googleapis.com/branch -// metrics: -// - library.googleapis.com/book/returned_count -// - library.googleapis.com/book/overdue_count -type Monitoring struct { - // Monitoring configurations for sending metrics to the producer project. - // There can be multiple producer destinations, each one must have a - // different monitored resource type. A metric can be used in at most - // one producer destination. - ProducerDestinations []*Monitoring_MonitoringDestination `protobuf:"bytes,1,rep,name=producer_destinations,json=producerDestinations" json:"producer_destinations,omitempty"` - // Monitoring configurations for sending metrics to the consumer project. - // There can be multiple consumer destinations, each one must have a - // different monitored resource type. A metric can be used in at most - // one consumer destination. - ConsumerDestinations []*Monitoring_MonitoringDestination `protobuf:"bytes,2,rep,name=consumer_destinations,json=consumerDestinations" json:"consumer_destinations,omitempty"` -} - -func (m *Monitoring) Reset() { *m = Monitoring{} } -func (m *Monitoring) String() string { return proto.CompactTextString(m) } -func (*Monitoring) ProtoMessage() {} -func (*Monitoring) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0} } - -func (m *Monitoring) GetProducerDestinations() []*Monitoring_MonitoringDestination { - if m != nil { - return m.ProducerDestinations - } - return nil -} - -func (m *Monitoring) GetConsumerDestinations() []*Monitoring_MonitoringDestination { - if m != nil { - return m.ConsumerDestinations - } - return nil -} - -// Configuration of a specific monitoring destination (the producer project -// or the consumer project). -type Monitoring_MonitoringDestination struct { - // The monitored resource type. The type must be defined in - // [Service.monitored_resources][google.api.Service.monitored_resources] section. - MonitoredResource string `protobuf:"bytes,1,opt,name=monitored_resource,json=monitoredResource" json:"monitored_resource,omitempty"` - // Names of the metrics to report to this monitoring destination. - // Each name must be defined in [Service.metrics][google.api.Service.metrics] section. - Metrics []string `protobuf:"bytes,2,rep,name=metrics" json:"metrics,omitempty"` -} - -func (m *Monitoring_MonitoringDestination) Reset() { *m = Monitoring_MonitoringDestination{} } -func (m *Monitoring_MonitoringDestination) String() string { return proto.CompactTextString(m) } -func (*Monitoring_MonitoringDestination) ProtoMessage() {} -func (*Monitoring_MonitoringDestination) Descriptor() ([]byte, []int) { - return fileDescriptor10, []int{0, 0} -} - -func (m *Monitoring_MonitoringDestination) GetMonitoredResource() string { - if m != nil { - return m.MonitoredResource - } - return "" -} - -func (m *Monitoring_MonitoringDestination) GetMetrics() []string { - if m != nil { - return m.Metrics - } - return nil -} - -func init() { - proto.RegisterType((*Monitoring)(nil), "google.api.Monitoring") - proto.RegisterType((*Monitoring_MonitoringDestination)(nil), "google.api.Monitoring.MonitoringDestination") -} - -func init() { proto.RegisterFile("google/api/monitoring.proto", fileDescriptor10) } - -var fileDescriptor10 = []byte{ - // 271 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x51, 0xcd, 0x4a, 0xc4, 0x30, - 0x10, 0xa6, 0x55, 0x94, 0x8d, 0xa0, 0x58, 0x5c, 0x28, 0xab, 0x87, 0xc5, 0xd3, 0x1e, 0xb4, 0x05, - 0x3d, 0x7a, 0x72, 0x51, 0xc4, 0x83, 0x50, 0x7a, 0xf4, 0xb2, 0xc6, 0x74, 0x0c, 0x03, 0xdb, 0x99, - 0x9a, 0xa4, 0x3e, 0x90, 0xcf, 0xe0, 0x03, 0xca, 0x36, 0xed, 0x36, 0x8a, 0x27, 0x6f, 0x99, 0x7c, - 0x7f, 0xc3, 0x37, 0xe2, 0x54, 0x33, 0xeb, 0x35, 0xe4, 0xb2, 0xc1, 0xbc, 0x66, 0x42, 0xc7, 0x06, - 0x49, 0x67, 0x8d, 0x61, 0xc7, 0x89, 0xf0, 0x60, 0x26, 0x1b, 0x9c, 0x9d, 0x05, 0x44, 0x49, 0xc4, - 0x4e, 0x3a, 0x64, 0xb2, 0x9e, 0x79, 0xfe, 0x15, 0x0b, 0xf1, 0xb4, 0x95, 0x27, 0x52, 0x4c, 0x1b, - 0xc3, 0x55, 0xab, 0xc0, 0xac, 0x2a, 0xb0, 0x0e, 0xc9, 0xb3, 0xd3, 0x68, 0xbe, 0xb3, 0x38, 0xb8, - 0xba, 0xc8, 0x46, 0xe3, 0x6c, 0x94, 0x05, 0xcf, 0xbb, 0x51, 0x54, 0x9e, 0x0c, 0x56, 0xc1, 0xa7, - 0xdd, 0x44, 0x28, 0x26, 0xdb, 0xd6, 0xbf, 0x23, 0xe2, 0xff, 0x44, 0x0c, 0x56, 0x61, 0xc4, 0xec, - 0x45, 0x4c, 0xff, 0xa4, 0x27, 0x97, 0x22, 0xe9, 0xbb, 0x82, 0x6a, 0x65, 0xc0, 0x72, 0x6b, 0x14, - 0xa4, 0xd1, 0x3c, 0x5a, 0x4c, 0xca, 0xe3, 0x2d, 0x52, 0xf6, 0x40, 0x92, 0x8a, 0xfd, 0x1a, 0x9c, - 0x41, 0xe5, 0x97, 0x9b, 0x94, 0xc3, 0xb8, 0x7c, 0x17, 0x87, 0x8a, 0xeb, 0x60, 0xd5, 0xe5, 0xd1, - 0x98, 0x58, 0x6c, 0x9a, 0x2d, 0xa2, 0xe7, 0xfb, 0x1e, 0xd6, 0xbc, 0x96, 0xa4, 0x33, 0x36, 0x3a, - 0xd7, 0x40, 0x5d, 0xef, 0xb9, 0x87, 0x64, 0x83, 0xb6, 0x3b, 0x8c, 0x05, 0xf3, 0x81, 0x0a, 0x14, - 0xd3, 0x1b, 0xea, 0x9b, 0x1f, 0xd3, 0x67, 0xbc, 0xfb, 0x70, 0x5b, 0x3c, 0xbe, 0xee, 0x75, 0xc2, - 0xeb, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x51, 0x35, 0xf3, 0xe2, 0xf9, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/quota.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/quota.pb.go deleted file mode 100644 index ac5ab097..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/quota.pb.go +++ /dev/null @@ -1,391 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/quota.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Quota configuration helps to achieve fairness and budgeting in service -// usage. -// -// The quota configuration works this way: -// - The service configuration defines a set of metrics. -// - For API calls, the quota.metric_rules maps methods to metrics with -// corresponding costs. -// - The quota.limits defines limits on the metrics, which will be used for -// quota checks at runtime. -// -// An example quota configuration in yaml format: -// -// quota: -// limits: -// -// - name: apiWriteQpsPerProject -// metric: library.googleapis.com/write_calls -// unit: "1/min/{project}" # rate limit for consumer projects -// values: -// STANDARD: 10000 -// -// # The metric rules bind all methods to the read_calls metric, -// # except for the UpdateBook and DeleteBook methods. These two methods -// # are mapped to the write_calls metric, with the UpdateBook method -// # consuming at twice rate as the DeleteBook method. -// metric_rules: -// - selector: "*" -// metric_costs: -// library.googleapis.com/read_calls: 1 -// - selector: google.example.library.v1.LibraryService.UpdateBook -// metric_costs: -// library.googleapis.com/write_calls: 2 -// - selector: google.example.library.v1.LibraryService.DeleteBook -// metric_costs: -// library.googleapis.com/write_calls: 1 -// -// Corresponding Metric definition: -// -// metrics: -// - name: library.googleapis.com/read_calls -// display_name: Read requests -// metric_kind: DELTA -// value_type: INT64 -// -// - name: library.googleapis.com/write_calls -// display_name: Write requests -// metric_kind: DELTA -// value_type: INT64 -// -type Quota struct { - // List of `QuotaLimit` definitions for the service. - // - // Used by metric-based quotas only. - Limits []*QuotaLimit `protobuf:"bytes,3,rep,name=limits" json:"limits,omitempty"` - // List of `MetricRule` definitions, each one mapping a selected method to one - // or more metrics. - // - // Used by metric-based quotas only. - MetricRules []*MetricRule `protobuf:"bytes,4,rep,name=metric_rules,json=metricRules" json:"metric_rules,omitempty"` -} - -func (m *Quota) Reset() { *m = Quota{} } -func (m *Quota) String() string { return proto.CompactTextString(m) } -func (*Quota) ProtoMessage() {} -func (*Quota) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{0} } - -func (m *Quota) GetLimits() []*QuotaLimit { - if m != nil { - return m.Limits - } - return nil -} - -func (m *Quota) GetMetricRules() []*MetricRule { - if m != nil { - return m.MetricRules - } - return nil -} - -// Bind API methods to metrics. Binding a method to a metric causes that -// metric's configured quota, billing, and monitoring behaviors to apply to the -// method call. -// -// Used by metric-based quotas only. -type MetricRule struct { - // Selects the methods to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"` - // Metrics to update when the selected methods are called, and the associated - // cost applied to each metric. - // - // The key of the map is the metric name, and the values are the amount - // increased for the metric against which the quota limits are defined. - // The value must not be negative. - MetricCosts map[string]int64 `protobuf:"bytes,2,rep,name=metric_costs,json=metricCosts" json:"metric_costs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` -} - -func (m *MetricRule) Reset() { *m = MetricRule{} } -func (m *MetricRule) String() string { return proto.CompactTextString(m) } -func (*MetricRule) ProtoMessage() {} -func (*MetricRule) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{1} } - -func (m *MetricRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - -func (m *MetricRule) GetMetricCosts() map[string]int64 { - if m != nil { - return m.MetricCosts - } - return nil -} - -// `QuotaLimit` defines a specific limit that applies over a specified duration -// for a limit type. There can be at most one limit for a duration and limit -// type combination defined within a `QuotaGroup`. -type QuotaLimit struct { - // Name of the quota limit. The name is used to refer to the limit when - // overriding the default limit on per-consumer basis. - // - // For group-based quota limits, the name must be unique within the quota - // group. If a name is not provided, it will be generated from the limit_by - // and duration fields. - // - // For metric-based quota limits, the name must be provided, and it must be - // unique within the service. The name can only include alphanumeric - // characters as well as '-'. - // - // The maximum length of the limit name is 64 characters. - // - // The name of a limit is used as a unique identifier for this limit. - // Therefore, once a limit has been put into use, its name should be - // immutable. You can use the display_name field to provide a user-friendly - // name for the limit. The display name can be evolved over time without - // affecting the identity of the limit. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` - // Optional. User-visible, extended description for this quota limit. - // Should be used only when more context is needed to understand this limit - // than provided by the limit's display name (see: `display_name`). - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Default number of tokens that can be consumed during the specified - // duration. This is the number of tokens assigned when a client - // application developer activates the service for his/her project. - // - // Specifying a value of 0 will block all requests. This can be used if you - // are provisioning quota to selected consumers and blocking others. - // Similarly, a value of -1 will indicate an unlimited quota. No other - // negative values are allowed. - // - // Used by group-based quotas only. - DefaultLimit int64 `protobuf:"varint,3,opt,name=default_limit,json=defaultLimit" json:"default_limit,omitempty"` - // Maximum number of tokens that can be consumed during the specified - // duration. Client application developers can override the default limit up - // to this maximum. If specified, this value cannot be set to a value less - // than the default limit. If not specified, it is set to the default limit. - // - // To allow clients to apply overrides with no upper bound, set this to -1, - // indicating unlimited maximum quota. - // - // Used by group-based quotas only. - MaxLimit int64 `protobuf:"varint,4,opt,name=max_limit,json=maxLimit" json:"max_limit,omitempty"` - // Free tier value displayed in the Developers Console for this limit. - // The free tier is the number of tokens that will be subtracted from the - // billed amount when billing is enabled. - // This field can only be set on a limit with duration "1d", in a billable - // group; it is invalid on any other limit. If this field is not set, it - // defaults to 0, indicating that there is no free tier for this service. - // - // Used by group-based quotas only. - FreeTier int64 `protobuf:"varint,7,opt,name=free_tier,json=freeTier" json:"free_tier,omitempty"` - // Duration of this limit in textual notation. Example: "100s", "24h", "1d". - // For duration longer than a day, only multiple of days is supported. We - // support only "100s" and "1d" for now. Additional support will be added in - // the future. "0" indicates indefinite duration. - // - // Used by group-based quotas only. - Duration string `protobuf:"bytes,5,opt,name=duration" json:"duration,omitempty"` - // The name of the metric this quota limit applies to. The quota limits with - // the same metric will be checked together during runtime. The metric must be - // defined within the service config. - // - // Used by metric-based quotas only. - Metric string `protobuf:"bytes,8,opt,name=metric" json:"metric,omitempty"` - // Specify the unit of the quota limit. It uses the same syntax as - // [Metric.unit][]. The supported unit kinds are determined by the quota - // backend system. - // - // The [Google Service Control](https://cloud.google.com/service-control) - // supports the following unit components: - // * One of the time intevals: - // * "/min" for quota every minute. - // * "/d" for quota every 24 hours, starting 00:00 US Pacific Time. - // * Otherwise the quota won't be reset by time, such as storage limit. - // * One and only one of the granted containers: - // * "/{organization}" quota for an organization. - // * "/{project}" quota for a project. - // * "/{folder}" quota for a folder. - // * "/{resource}" quota for a universal resource. - // * Zero or more quota segmentation dimension. Not all combos are valid. - // * "/{region}" quota for every region. Not to be used with time intervals. - // * Otherwise the resources granted on the target is not segmented. - // * "/{zone}" quota for every zone. Not to be used with time intervals. - // * Otherwise the resources granted on the target is not segmented. - // * "/{resource}" quota for a resource associated with a project or org. - // - // Here are some examples: - // * "1/min/{project}" for quota per minute per project. - // * "1/min/{user}" for quota per minute per user. - // * "1/min/{organization}" for quota per minute per organization. - // - // Note: the order of unit components is insignificant. - // The "1" at the beginning is required to follow the metric unit syntax. - // - // Used by metric-based quotas only. - Unit string `protobuf:"bytes,9,opt,name=unit" json:"unit,omitempty"` - // Tiered limit values. Also allows for regional or zone overrides for these - // values if "/{region}" or "/{zone}" is specified in the unit field. - // - // Currently supported tiers from low to high: - // VERY_LOW, LOW, STANDARD, HIGH, VERY_HIGH - // - // To apply different limit values for users according to their tiers, specify - // the values for the tiers you want to differentiate. For example: - // {LOW:100, STANDARD:500, HIGH:1000, VERY_HIGH:5000} - // - // The limit value for each tier is optional except for the tier STANDARD. - // The limit value for an unspecified tier falls to the value of its next - // tier towards tier STANDARD. For the above example, the limit value for tier - // STANDARD is 500. - // - // To apply the same limit value for all users, just specify limit value for - // tier STANDARD. For example: {STANDARD:500}. - // - // To apply a regional overide for a tier, add a map entry with key - // "<TIER>/<region>", where <region> is a region name. Similarly, for a zone - // override, add a map entry with key "<TIER>/{zone}". - // Further, a wildcard can be used at the end of a zone name in order to - // specify zone level overrides. For example: - // LOW: 10, STANDARD: 50, HIGH: 100, - // LOW/us-central1: 20, STANDARD/us-central1: 60, HIGH/us-central1: 200, - // LOW/us-central1-*: 10, STANDARD/us-central1-*: 20, HIGH/us-central1-*: 80 - // - // The regional overrides tier set for each region must be the same as - // the tier set for default limit values. Same rule applies for zone overrides - // tier as well. - // - // Used by metric-based quotas only. - Values map[string]int64 `protobuf:"bytes,10,rep,name=values" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // User-visible display name for this limit. - // Optional. If not set, the UI will provide a default display name based on - // the quota configuration. This field can be used to override the default - // display name generated from the configuration. - DisplayName string `protobuf:"bytes,12,opt,name=display_name,json=displayName" json:"display_name,omitempty"` -} - -func (m *QuotaLimit) Reset() { *m = QuotaLimit{} } -func (m *QuotaLimit) String() string { return proto.CompactTextString(m) } -func (*QuotaLimit) ProtoMessage() {} -func (*QuotaLimit) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{2} } - -func (m *QuotaLimit) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *QuotaLimit) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *QuotaLimit) GetDefaultLimit() int64 { - if m != nil { - return m.DefaultLimit - } - return 0 -} - -func (m *QuotaLimit) GetMaxLimit() int64 { - if m != nil { - return m.MaxLimit - } - return 0 -} - -func (m *QuotaLimit) GetFreeTier() int64 { - if m != nil { - return m.FreeTier - } - return 0 -} - -func (m *QuotaLimit) GetDuration() string { - if m != nil { - return m.Duration - } - return "" -} - -func (m *QuotaLimit) GetMetric() string { - if m != nil { - return m.Metric - } - return "" -} - -func (m *QuotaLimit) GetUnit() string { - if m != nil { - return m.Unit - } - return "" -} - -func (m *QuotaLimit) GetValues() map[string]int64 { - if m != nil { - return m.Values - } - return nil -} - -func (m *QuotaLimit) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func init() { - proto.RegisterType((*Quota)(nil), "google.api.Quota") - proto.RegisterType((*MetricRule)(nil), "google.api.MetricRule") - proto.RegisterType((*QuotaLimit)(nil), "google.api.QuotaLimit") -} - -func init() { proto.RegisterFile("google/api/quota.proto", fileDescriptor11) } - -var fileDescriptor11 = []byte{ - // 466 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xc1, 0x8e, 0xd3, 0x30, - 0x10, 0x55, 0x9a, 0xb6, 0xb4, 0xd3, 0x82, 0x56, 0x16, 0xaa, 0xac, 0xc2, 0xa1, 0x94, 0x03, 0x3d, - 0xa5, 0x12, 0x5c, 0xd8, 0x45, 0x42, 0x62, 0xd1, 0x0a, 0x81, 0x00, 0x95, 0x08, 0x71, 0xe0, 0x52, - 0x99, 0x74, 0x1a, 0x59, 0x38, 0x71, 0xb0, 0x9d, 0xd5, 0xf6, 0xcc, 0x9f, 0xf0, 0x0d, 0x7c, 0x20, - 0xf2, 0xd8, 0xdb, 0x16, 0xd8, 0xcb, 0xde, 0x66, 0xe6, 0xbd, 0xe7, 0x17, 0x3f, 0x4f, 0x60, 0x52, - 0x6a, 0x5d, 0x2a, 0x5c, 0x8a, 0x46, 0x2e, 0x7f, 0xb4, 0xda, 0x89, 0xac, 0x31, 0xda, 0x69, 0x06, - 0x61, 0x9e, 0x89, 0x46, 0x4e, 0x1f, 0x1e, 0x71, 0x44, 0x5d, 0x6b, 0x27, 0x9c, 0xd4, 0xb5, 0x0d, - 0xcc, 0xb9, 0x81, 0xde, 0x27, 0x2f, 0x64, 0x19, 0xf4, 0x95, 0xac, 0xa4, 0xb3, 0x3c, 0x9d, 0xa5, - 0x8b, 0xd1, 0xd3, 0x49, 0x76, 0x38, 0x23, 0x23, 0xca, 0x7b, 0x0f, 0xe7, 0x91, 0xc5, 0x4e, 0x61, - 0x5c, 0xa1, 0x33, 0xb2, 0x58, 0x9b, 0x56, 0xa1, 0xe5, 0xdd, 0xff, 0x55, 0x1f, 0x08, 0xcf, 0x5b, - 0x85, 0xf9, 0xa8, 0xda, 0xd7, 0x76, 0xfe, 0x3b, 0x01, 0x38, 0x60, 0x6c, 0x0a, 0x03, 0x8b, 0x0a, - 0x0b, 0xa7, 0x0d, 0x4f, 0x66, 0xc9, 0x62, 0x98, 0xef, 0x7b, 0xf6, 0x6e, 0xef, 0x52, 0x68, 0xeb, - 0x2c, 0xef, 0x90, 0xcb, 0x93, 0x9b, 0x5d, 0x62, 0xf9, 0xda, 0x33, 0x2f, 0x6a, 0x67, 0x76, 0xd7, - 0xb6, 0x34, 0x99, 0xbe, 0x84, 0x93, 0x7f, 0x09, 0xec, 0x04, 0xd2, 0xef, 0xb8, 0x8b, 0xb6, 0xbe, - 0x64, 0xf7, 0xa1, 0x77, 0x29, 0x54, 0x8b, 0xbc, 0x33, 0x4b, 0x16, 0x69, 0x1e, 0x9a, 0xb3, 0xce, - 0xf3, 0x64, 0xfe, 0x33, 0x05, 0x38, 0x04, 0xc1, 0x18, 0x74, 0x6b, 0x51, 0x21, 0xef, 0x93, 0x96, - 0x6a, 0x36, 0x83, 0xd1, 0x06, 0x6d, 0x61, 0x64, 0xe3, 0x33, 0xa6, 0x23, 0x86, 0xf9, 0xf1, 0x88, - 0x3d, 0x86, 0xbb, 0x1b, 0xdc, 0x8a, 0x56, 0xb9, 0x35, 0x05, 0xc9, 0x53, 0xb2, 0x19, 0xc7, 0x61, - 0x38, 0xfa, 0x01, 0x0c, 0x2b, 0x71, 0x15, 0x09, 0x5d, 0x22, 0x0c, 0x2a, 0x71, 0xb5, 0x07, 0xb7, - 0x06, 0x71, 0xed, 0x24, 0x1a, 0x7e, 0x27, 0x80, 0x7e, 0xf0, 0x59, 0xa2, 0xf1, 0x59, 0x6e, 0x5a, - 0x43, 0x2f, 0xcc, 0x7b, 0x21, 0xcb, 0xeb, 0x9e, 0x4d, 0xa0, 0x1f, 0xe2, 0xe0, 0x03, 0x42, 0x62, - 0xe7, 0x2f, 0xd2, 0xd6, 0xd2, 0xf1, 0x61, 0xb8, 0x88, 0xaf, 0xd9, 0x19, 0xf4, 0xe9, 0xe2, 0x96, - 0x03, 0x25, 0x3e, 0xbf, 0x79, 0x1b, 0xb2, 0x2f, 0x44, 0x0a, 0x61, 0x47, 0x05, 0x7b, 0x04, 0xe3, - 0x8d, 0xb4, 0x8d, 0x12, 0xbb, 0x35, 0x05, 0x34, 0x8e, 0x29, 0x84, 0xd9, 0x47, 0x51, 0xe1, 0xf4, - 0x14, 0x46, 0x47, 0xca, 0xdb, 0xbc, 0xc2, 0xb9, 0x82, 0x7b, 0x85, 0xae, 0x8e, 0x3e, 0xe7, 0x3c, - 0x3c, 0xca, 0xca, 0xaf, 0xf3, 0x2a, 0xf9, 0x7a, 0x11, 0x91, 0x52, 0x2b, 0x51, 0x97, 0x99, 0x36, - 0xe5, 0xb2, 0xc4, 0x9a, 0x96, 0x7d, 0x19, 0x20, 0xd1, 0x48, 0x4b, 0x7f, 0x83, 0x45, 0x73, 0x29, - 0x0b, 0x2c, 0x74, 0xbd, 0x95, 0xe5, 0x8b, 0xbf, 0xba, 0x5f, 0x9d, 0xee, 0x9b, 0x57, 0xab, 0xb7, - 0xdf, 0xfa, 0x24, 0x7c, 0xf6, 0x27, 0x00, 0x00, 0xff, 0xff, 0x90, 0x7e, 0xf5, 0xab, 0x69, 0x03, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/service.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/service.pb.go deleted file mode 100644 index cad0545a..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/service.pb.go +++ /dev/null @@ -1,376 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/service.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api5 "google.golang.org/genproto/googleapis/api" -import google_api "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/label" -import google_api3 "google.golang.org/genproto/googleapis/api/metric" -import google_api6 "google.golang.org/genproto/googleapis/api/monitoredres" -import _ "github.com/golang/protobuf/ptypes/any" -import google_protobuf4 "google.golang.org/genproto/protobuf/api" -import google_protobuf3 "google.golang.org/genproto/protobuf/ptype" -import google_protobuf5 "github.com/golang/protobuf/ptypes/wrappers" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// `Service` is the root object of Google service configuration schema. It -// describes basic information about a service, such as the name and the -// title, and delegates other aspects to sub-sections. Each sub-section is -// either a proto message or a repeated proto message that configures a -// specific aspect, such as auth. See each proto message definition for details. -// -// Example: -// -// type: google.api.Service -// config_version: 3 -// name: calendar.googleapis.com -// title: Google Calendar API -// apis: -// - name: google.calendar.v3.Calendar -// authentication: -// providers: -// - id: google_calendar_auth -// jwks_uri: https://www.googleapis.com/oauth2/v1/certs -// issuer: https://securetoken.google.com -// rules: -// - selector: "*" -// requirements: -// provider_id: google_calendar_auth -type Service struct { - // The semantic version of the service configuration. The config version - // affects the interpretation of the service configuration. For example, - // certain features are enabled by default for certain config versions. - // The latest config version is `3`. - ConfigVersion *google_protobuf5.UInt32Value `protobuf:"bytes,20,opt,name=config_version,json=configVersion" json:"config_version,omitempty"` - // The DNS address at which this service is available, - // e.g. `calendar.googleapis.com`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A unique ID for a specific instance of this message, typically assigned - // by the client for tracking purpose. If empty, the server may choose to - // generate one instead. - Id string `protobuf:"bytes,33,opt,name=id" json:"id,omitempty"` - // The product title for this service. - Title string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` - // The Google project that owns this service. - ProducerProjectId string `protobuf:"bytes,22,opt,name=producer_project_id,json=producerProjectId" json:"producer_project_id,omitempty"` - // A list of API interfaces exported by this service. Only the `name` field - // of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by the configuration - // author, as the remaining fields will be derived from the IDL during the - // normalization process. It is an error to specify an API interface here - // which cannot be resolved against the associated IDL files. - Apis []*google_protobuf4.Api `protobuf:"bytes,3,rep,name=apis" json:"apis,omitempty"` - // A list of all proto message types included in this API service. - // Types referenced directly or indirectly by the `apis` are - // automatically included. Messages which are not referenced but - // shall be included, such as types used by the `google.protobuf.Any` type, - // should be listed here by name. Example: - // - // types: - // - name: google.protobuf.Int32 - Types []*google_protobuf3.Type `protobuf:"bytes,4,rep,name=types" json:"types,omitempty"` - // A list of all enum types included in this API service. Enums - // referenced directly or indirectly by the `apis` are automatically - // included. Enums which are not referenced but shall be included - // should be listed here by name. Example: - // - // enums: - // - name: google.someapi.v1.SomeEnum - Enums []*google_protobuf3.Enum `protobuf:"bytes,5,rep,name=enums" json:"enums,omitempty"` - // Additional API documentation. - Documentation *Documentation `protobuf:"bytes,6,opt,name=documentation" json:"documentation,omitempty"` - // API backend configuration. - Backend *Backend `protobuf:"bytes,8,opt,name=backend" json:"backend,omitempty"` - // HTTP configuration. - Http *google_api.Http `protobuf:"bytes,9,opt,name=http" json:"http,omitempty"` - // Quota configuration. - Quota *Quota `protobuf:"bytes,10,opt,name=quota" json:"quota,omitempty"` - // Auth configuration. - Authentication *Authentication `protobuf:"bytes,11,opt,name=authentication" json:"authentication,omitempty"` - // Context configuration. - Context *Context `protobuf:"bytes,12,opt,name=context" json:"context,omitempty"` - // Configuration controlling usage of this service. - Usage *Usage `protobuf:"bytes,15,opt,name=usage" json:"usage,omitempty"` - // Configuration for network endpoints. If this is empty, then an endpoint - // with the same name as the service is automatically generated to service all - // defined APIs. - Endpoints []*Endpoint `protobuf:"bytes,18,rep,name=endpoints" json:"endpoints,omitempty"` - // Configuration for the service control plane. - Control *Control `protobuf:"bytes,21,opt,name=control" json:"control,omitempty"` - // Defines the logs used by this service. - Logs []*LogDescriptor `protobuf:"bytes,23,rep,name=logs" json:"logs,omitempty"` - // Defines the metrics used by this service. - Metrics []*google_api3.MetricDescriptor `protobuf:"bytes,24,rep,name=metrics" json:"metrics,omitempty"` - // Defines the monitored resources used by this service. This is required - // by the [Service.monitoring][google.api.Service.monitoring] and [Service.logging][google.api.Service.logging] configurations. - MonitoredResources []*google_api6.MonitoredResourceDescriptor `protobuf:"bytes,25,rep,name=monitored_resources,json=monitoredResources" json:"monitored_resources,omitempty"` - // Billing configuration. - Billing *Billing `protobuf:"bytes,26,opt,name=billing" json:"billing,omitempty"` - // Logging configuration. - Logging *Logging `protobuf:"bytes,27,opt,name=logging" json:"logging,omitempty"` - // Monitoring configuration. - Monitoring *Monitoring `protobuf:"bytes,28,opt,name=monitoring" json:"monitoring,omitempty"` - // System parameter configuration. - SystemParameters *SystemParameters `protobuf:"bytes,29,opt,name=system_parameters,json=systemParameters" json:"system_parameters,omitempty"` - // Output only. The source information for this configuration if available. - SourceInfo *SourceInfo `protobuf:"bytes,37,opt,name=source_info,json=sourceInfo" json:"source_info,omitempty"` - // Experimental configuration. - Experimental *google_api5.Experimental `protobuf:"bytes,101,opt,name=experimental" json:"experimental,omitempty"` -} - -func (m *Service) Reset() { *m = Service{} } -func (m *Service) String() string { return proto.CompactTextString(m) } -func (*Service) ProtoMessage() {} -func (*Service) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{0} } - -func (m *Service) GetConfigVersion() *google_protobuf5.UInt32Value { - if m != nil { - return m.ConfigVersion - } - return nil -} - -func (m *Service) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Service) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Service) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Service) GetProducerProjectId() string { - if m != nil { - return m.ProducerProjectId - } - return "" -} - -func (m *Service) GetApis() []*google_protobuf4.Api { - if m != nil { - return m.Apis - } - return nil -} - -func (m *Service) GetTypes() []*google_protobuf3.Type { - if m != nil { - return m.Types - } - return nil -} - -func (m *Service) GetEnums() []*google_protobuf3.Enum { - if m != nil { - return m.Enums - } - return nil -} - -func (m *Service) GetDocumentation() *Documentation { - if m != nil { - return m.Documentation - } - return nil -} - -func (m *Service) GetBackend() *Backend { - if m != nil { - return m.Backend - } - return nil -} - -func (m *Service) GetHttp() *google_api.Http { - if m != nil { - return m.Http - } - return nil -} - -func (m *Service) GetQuota() *Quota { - if m != nil { - return m.Quota - } - return nil -} - -func (m *Service) GetAuthentication() *Authentication { - if m != nil { - return m.Authentication - } - return nil -} - -func (m *Service) GetContext() *Context { - if m != nil { - return m.Context - } - return nil -} - -func (m *Service) GetUsage() *Usage { - if m != nil { - return m.Usage - } - return nil -} - -func (m *Service) GetEndpoints() []*Endpoint { - if m != nil { - return m.Endpoints - } - return nil -} - -func (m *Service) GetControl() *Control { - if m != nil { - return m.Control - } - return nil -} - -func (m *Service) GetLogs() []*LogDescriptor { - if m != nil { - return m.Logs - } - return nil -} - -func (m *Service) GetMetrics() []*google_api3.MetricDescriptor { - if m != nil { - return m.Metrics - } - return nil -} - -func (m *Service) GetMonitoredResources() []*google_api6.MonitoredResourceDescriptor { - if m != nil { - return m.MonitoredResources - } - return nil -} - -func (m *Service) GetBilling() *Billing { - if m != nil { - return m.Billing - } - return nil -} - -func (m *Service) GetLogging() *Logging { - if m != nil { - return m.Logging - } - return nil -} - -func (m *Service) GetMonitoring() *Monitoring { - if m != nil { - return m.Monitoring - } - return nil -} - -func (m *Service) GetSystemParameters() *SystemParameters { - if m != nil { - return m.SystemParameters - } - return nil -} - -func (m *Service) GetSourceInfo() *SourceInfo { - if m != nil { - return m.SourceInfo - } - return nil -} - -func (m *Service) GetExperimental() *google_api5.Experimental { - if m != nil { - return m.Experimental - } - return nil -} - -func init() { - proto.RegisterType((*Service)(nil), "google.api.Service") -} - -func init() { proto.RegisterFile("google/api/service.proto", fileDescriptor12) } - -var fileDescriptor12 = []byte{ - // 825 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x96, 0xdf, 0x6e, 0xdb, 0x36, - 0x14, 0x87, 0x61, 0xd7, 0x6e, 0x16, 0x3a, 0xcd, 0x1a, 0xc6, 0x49, 0x19, 0xd7, 0x1b, 0xd2, 0xfd, - 0x41, 0x8d, 0x0d, 0x95, 0x01, 0x17, 0xe8, 0x2e, 0x36, 0x60, 0x88, 0xdb, 0x60, 0x33, 0xd0, 0x01, - 0x1e, 0xb3, 0x16, 0xc3, 0x6e, 0x0c, 0x5a, 0xa2, 0x55, 0x6e, 0x12, 0xc9, 0x91, 0x54, 0x17, 0x3f, - 0xc7, 0xde, 0x60, 0x4f, 0x3a, 0x88, 0xa4, 0x62, 0xca, 0x52, 0xee, 0x22, 0x7e, 0xdf, 0x39, 0x38, - 0x14, 0xa9, 0x9f, 0x03, 0x50, 0x2a, 0x44, 0x9a, 0xd1, 0x29, 0x91, 0x6c, 0xaa, 0xa9, 0xfa, 0xc8, - 0x62, 0x1a, 0x49, 0x25, 0x8c, 0x80, 0xc0, 0x91, 0x88, 0x48, 0x36, 0x1a, 0x07, 0x16, 0xe1, 0x5c, - 0x18, 0x62, 0x98, 0xe0, 0xda, 0x99, 0xa3, 0xb3, 0x90, 0x16, 0xe6, 0x83, 0x5f, 0x0e, 0x5b, 0xaf, - 0x49, 0xfc, 0x17, 0xe5, 0x49, 0x1b, 0x61, 0x59, 0xc6, 0x78, 0xda, 0x42, 0x62, 0xc1, 0x0d, 0xbd, - 0x35, 0xf7, 0x10, 0x25, 0x32, 0x4f, 0x3e, 0x0f, 0x48, 0x22, 0xe2, 0x22, 0xa7, 0xdc, 0xcd, 0xe7, - 0xf9, 0x45, 0xc0, 0x29, 0x4f, 0xa4, 0x60, 0xbc, 0x6a, 0xfa, 0x4d, 0x88, 0x6e, 0x25, 0x55, 0xcc, - 0x16, 0x67, 0xb5, 0x87, 0x96, 0x5d, 0x7e, 0x30, 0x46, 0xfa, 0xe5, 0xf3, 0x60, 0x39, 0x23, 0x6b, - 0x5a, 0xe9, 0xc3, 0x70, 0x5d, 0xb4, 0xed, 0x2f, 0x13, 0x69, 0xba, 0xdb, 0xf9, 0x93, 0x80, 0xe4, - 0xd4, 0x28, 0x16, 0x7b, 0xf0, 0x65, 0x08, 0x04, 0x67, 0x46, 0x28, 0x9a, 0xac, 0x14, 0xd5, 0xa2, - 0x50, 0xd5, 0x61, 0x8d, 0x9e, 0x36, 0xa5, 0x5d, 0xeb, 0x70, 0xc4, 0xbf, 0x0b, 0x61, 0x88, 0x5f, - 0x0f, 0x4f, 0xd5, 0x75, 0x5b, 0x31, 0xbe, 0x11, 0x9e, 0x3e, 0x0b, 0xe9, 0x56, 0x1b, 0x9a, 0xaf, - 0x24, 0x51, 0x24, 0xa7, 0x86, 0xaa, 0x96, 0xc6, 0x85, 0x26, 0x29, 0xdd, 0x7b, 0xe3, 0xf6, 0x69, - 0x5d, 0x6c, 0xa6, 0x84, 0x6f, 0xef, 0x45, 0x92, 0x79, 0x34, 0xda, 0x47, 0x66, 0x2b, 0xe9, 0xde, - 0x19, 0xdf, 0xb1, 0x7f, 0x14, 0x91, 0x92, 0x2a, 0x7f, 0x05, 0xbf, 0xf8, 0x17, 0x80, 0x83, 0x1b, - 0x77, 0x7d, 0xe1, 0x6b, 0x70, 0x1c, 0x0b, 0xbe, 0x61, 0xe9, 0xea, 0x23, 0x55, 0x9a, 0x09, 0x8e, - 0x86, 0x97, 0x9d, 0xc9, 0x60, 0x36, 0x8e, 0xfc, 0x8d, 0xae, 0x9a, 0x44, 0xef, 0x16, 0xdc, 0xbc, - 0x9c, 0xbd, 0x27, 0x59, 0x41, 0xf1, 0x23, 0x57, 0xf3, 0xde, 0x95, 0x40, 0x08, 0x7a, 0x9c, 0xe4, - 0x14, 0x75, 0x2e, 0x3b, 0x93, 0x43, 0x6c, 0xff, 0x86, 0xc7, 0xa0, 0xcb, 0x12, 0xf4, 0xcc, 0xae, - 0x74, 0x59, 0x02, 0x87, 0xa0, 0x6f, 0x98, 0xc9, 0x28, 0xea, 0xda, 0x25, 0xf7, 0x00, 0x23, 0x70, - 0x2a, 0x95, 0x48, 0x8a, 0x98, 0xaa, 0x95, 0x54, 0xe2, 0x4f, 0x1a, 0x9b, 0x15, 0x4b, 0xd0, 0xb9, - 0x75, 0x4e, 0x2a, 0xb4, 0x74, 0x64, 0x91, 0xc0, 0x09, 0xe8, 0x11, 0xc9, 0x34, 0x7a, 0x70, 0xf9, - 0x60, 0x32, 0x98, 0x0d, 0x1b, 0x43, 0x5e, 0x49, 0x86, 0xad, 0x01, 0xbf, 0x05, 0xfd, 0xf2, 0x95, - 0x68, 0xd4, 0xb3, 0xea, 0x59, 0x43, 0xfd, 0x6d, 0x2b, 0x29, 0x76, 0x4e, 0x29, 0x53, 0x5e, 0xe4, - 0x1a, 0xf5, 0xef, 0x91, 0xaf, 0x79, 0x91, 0x63, 0xe7, 0xc0, 0x1f, 0xc1, 0xa3, 0xda, 0x97, 0x83, - 0x1e, 0xda, 0x37, 0x76, 0x11, 0xed, 0x32, 0x20, 0x7a, 0x13, 0x0a, 0xb8, 0xee, 0xc3, 0x17, 0xe0, - 0xc0, 0x7f, 0xe2, 0xe8, 0x13, 0x5b, 0x7a, 0x1a, 0x96, 0xce, 0x1d, 0xc2, 0x95, 0x03, 0xbf, 0x02, - 0xbd, 0xf2, 0x13, 0x42, 0x87, 0xd6, 0x7d, 0x1c, 0xba, 0x3f, 0x1b, 0x23, 0xb1, 0xa5, 0xf0, 0x39, - 0xe8, 0xdb, 0xeb, 0x8a, 0x80, 0xd5, 0x4e, 0x42, 0xed, 0xd7, 0x12, 0x60, 0xc7, 0xe1, 0x1c, 0x1c, - 0x97, 0xb9, 0x43, 0xb9, 0x61, 0xb1, 0x9b, 0x7f, 0x60, 0x2b, 0x46, 0x61, 0xc5, 0x55, 0xcd, 0xc0, - 0x7b, 0x15, 0xe5, 0x0e, 0x7c, 0xe0, 0xa0, 0xa3, 0xe6, 0x0e, 0x5e, 0x3b, 0x84, 0x2b, 0xa7, 0x9c, - 0xcd, 0xde, 0x78, 0xf4, 0x69, 0x73, 0xb6, 0x77, 0x25, 0xc0, 0x8e, 0xc3, 0x19, 0x38, 0xac, 0x42, - 0x47, 0x23, 0x58, 0x3f, 0xe3, 0x52, 0xbe, 0xf6, 0x10, 0xef, 0xb4, 0x6a, 0x16, 0x25, 0x32, 0x74, - 0xd6, 0x3e, 0x8b, 0x12, 0x19, 0xae, 0x1c, 0xf8, 0x02, 0xf4, 0x32, 0x91, 0x6a, 0xf4, 0xc4, 0x76, - 0xaf, 0x1d, 0xda, 0x5b, 0x91, 0xbe, 0xa1, 0x3a, 0x56, 0x4c, 0x1a, 0xa1, 0xb0, 0xd5, 0xe0, 0x2b, - 0x70, 0xe0, 0x02, 0x46, 0x23, 0x64, 0x2b, 0xc6, 0x61, 0xc5, 0x2f, 0x16, 0x05, 0x45, 0x95, 0x0c, - 0x7f, 0x07, 0xa7, 0xcd, 0xfc, 0xd1, 0xe8, 0xc2, 0xf6, 0x78, 0x5e, 0xeb, 0x51, 0x69, 0xd8, 0x5b, - 0x41, 0x3b, 0x98, 0xef, 0x43, 0xbb, 0x5f, 0xff, 0x33, 0x80, 0x46, 0x2d, 0xb7, 0xc7, 0x21, 0x5c, - 0x39, 0xa5, 0xee, 0xb3, 0x13, 0x3d, 0x6d, 0xea, 0x6f, 0x1d, 0xc2, 0x95, 0x03, 0x5f, 0x01, 0xb0, - 0x8b, 0x44, 0x34, 0xb6, 0x15, 0xe7, 0x2d, 0xe3, 0x96, 0x45, 0x81, 0x09, 0x17, 0xe0, 0x64, 0x3f, - 0xf7, 0x34, 0xfa, 0xac, 0x1e, 0x25, 0x65, 0xf9, 0x8d, 0x95, 0x96, 0x77, 0x0e, 0x7e, 0xac, 0xf7, - 0x56, 0xe0, 0x77, 0x60, 0x10, 0x04, 0x2c, 0xfa, 0xba, 0x39, 0xc3, 0x8d, 0xc5, 0x0b, 0xbe, 0x11, - 0x18, 0xe8, 0xbb, 0xbf, 0xe1, 0x0f, 0xe0, 0x28, 0xfc, 0x29, 0x42, 0xd4, 0x56, 0xa2, 0xda, 0x05, - 0x0a, 0x38, 0xae, 0xd9, 0x73, 0x5e, 0x26, 0x61, 0x1e, 0xc8, 0xf3, 0x23, 0x1f, 0x92, 0xcb, 0x32, - 0x05, 0x96, 0x9d, 0x3f, 0xae, 0x3d, 0x4b, 0x45, 0x46, 0x78, 0x1a, 0x09, 0x95, 0x4e, 0x53, 0xca, - 0x6d, 0x46, 0x4c, 0x1d, 0x2a, 0x93, 0x27, 0xfc, 0xef, 0xc0, 0xc5, 0xe4, 0xf7, 0xb5, 0xa7, 0xff, - 0xba, 0xbd, 0x9f, 0xae, 0x96, 0x8b, 0xf5, 0x43, 0x5b, 0xf8, 0xf2, 0xff, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xfe, 0x6c, 0x4b, 0xf7, 0x55, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/source_info.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/source_info.pb.go deleted file mode 100644 index 12780844..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/source_info.pb.go +++ /dev/null @@ -1,55 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/source_info.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Source information used to create a Service Config -type SourceInfo struct { - // All files used during config generation. - SourceFiles []*google_protobuf1.Any `protobuf:"bytes,1,rep,name=source_files,json=sourceFiles" json:"source_files,omitempty"` -} - -func (m *SourceInfo) Reset() { *m = SourceInfo{} } -func (m *SourceInfo) String() string { return proto.CompactTextString(m) } -func (*SourceInfo) ProtoMessage() {} -func (*SourceInfo) Descriptor() ([]byte, []int) { return fileDescriptor13, []int{0} } - -func (m *SourceInfo) GetSourceFiles() []*google_protobuf1.Any { - if m != nil { - return m.SourceFiles - } - return nil -} - -func init() { - proto.RegisterType((*SourceInfo)(nil), "google.api.SourceInfo") -} - -func init() { proto.RegisterFile("google/api/source_info.proto", fileDescriptor13) } - -var fileDescriptor13 = []byte{ - // 198 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x2f, 0xce, 0x2f, 0x2d, 0x4a, 0x4e, 0x8d, 0xcf, 0xcc, - 0x4b, 0xcb, 0xd7, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x82, 0xc8, 0xea, 0x25, 0x16, 0x64, - 0x4a, 0x49, 0x42, 0x55, 0x82, 0x65, 0x92, 0x4a, 0xd3, 0xf4, 0x13, 0xf3, 0x2a, 0x21, 0xca, 0x94, - 0x5c, 0xb9, 0xb8, 0x82, 0xc1, 0x7a, 0x3d, 0xf3, 0xd2, 0xf2, 0x85, 0xcc, 0xb9, 0x78, 0xa0, 0x26, - 0xa5, 0x65, 0xe6, 0xa4, 0x16, 0x4b, 0x30, 0x2a, 0x30, 0x6b, 0x70, 0x1b, 0x89, 0xe8, 0x41, 0xcd, - 0x82, 0xe9, 0xd7, 0x73, 0xcc, 0xab, 0x0c, 0xe2, 0x86, 0xa8, 0x74, 0x03, 0x29, 0x74, 0x2a, 0xe4, - 0xe2, 0x4b, 0xce, 0xcf, 0xd5, 0x43, 0xd8, 0xe9, 0xc4, 0x8f, 0x30, 0x36, 0x00, 0xa4, 0x2d, 0x80, - 0x31, 0xca, 0x15, 0x2a, 0x9d, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x97, 0x5f, 0x94, 0xae, 0x9f, - 0x9e, 0x9a, 0x07, 0x36, 0x54, 0x1f, 0x22, 0x95, 0x58, 0x90, 0x59, 0x0c, 0xf1, 0x4f, 0x6a, 0x51, - 0x59, 0x66, 0x72, 0x6a, 0x72, 0x7e, 0x5e, 0x5a, 0x66, 0xba, 0x35, 0x0a, 0x6f, 0x11, 0x13, 0x8b, - 0xbb, 0x63, 0x80, 0x67, 0x12, 0x1b, 0x58, 0xa3, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x78, - 0x5d, 0xab, 0x07, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/system_parameter.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/system_parameter.pb.go deleted file mode 100644 index b3a59853..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/system_parameter.pb.go +++ /dev/null @@ -1,169 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/system_parameter.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// ### System parameter configuration -// -// A system parameter is a special kind of parameter defined by the API -// system, not by an individual API. It is typically mapped to an HTTP header -// and/or a URL query parameter. This configuration specifies which methods -// change the names of the system parameters. -type SystemParameters struct { - // Define system parameters. - // - // The parameters defined here will override the default parameters - // implemented by the system. If this field is missing from the service - // config, default system parameters will be used. Default system parameters - // and names is implementation-dependent. - // - // Example: define api key for all methods - // - // system_parameters - // rules: - // - selector: "*" - // parameters: - // - name: api_key - // url_query_parameter: api_key - // - // - // Example: define 2 api key names for a specific method. - // - // system_parameters - // rules: - // - selector: "/ListShelves" - // parameters: - // - name: api_key - // http_header: Api-Key1 - // - name: api_key - // http_header: Api-Key2 - // - // **NOTE:** All service configuration rules follow "last one wins" order. - Rules []*SystemParameterRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` -} - -func (m *SystemParameters) Reset() { *m = SystemParameters{} } -func (m *SystemParameters) String() string { return proto.CompactTextString(m) } -func (*SystemParameters) ProtoMessage() {} -func (*SystemParameters) Descriptor() ([]byte, []int) { return fileDescriptor14, []int{0} } - -func (m *SystemParameters) GetRules() []*SystemParameterRule { - if m != nil { - return m.Rules - } - return nil -} - -// Define a system parameter rule mapping system parameter definitions to -// methods. -type SystemParameterRule struct { - // Selects the methods to which this rule applies. Use '*' to indicate all - // methods in all APIs. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"` - // Define parameters. Multiple names may be defined for a parameter. - // For a given method call, only one of them should be used. If multiple - // names are used the behavior is implementation-dependent. - // If none of the specified names are present the behavior is - // parameter-dependent. - Parameters []*SystemParameter `protobuf:"bytes,2,rep,name=parameters" json:"parameters,omitempty"` -} - -func (m *SystemParameterRule) Reset() { *m = SystemParameterRule{} } -func (m *SystemParameterRule) String() string { return proto.CompactTextString(m) } -func (*SystemParameterRule) ProtoMessage() {} -func (*SystemParameterRule) Descriptor() ([]byte, []int) { return fileDescriptor14, []int{1} } - -func (m *SystemParameterRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - -func (m *SystemParameterRule) GetParameters() []*SystemParameter { - if m != nil { - return m.Parameters - } - return nil -} - -// Define a parameter's name and location. The parameter may be passed as either -// an HTTP header or a URL query parameter, and if both are passed the behavior -// is implementation-dependent. -type SystemParameter struct { - // Define the name of the parameter, such as "api_key" . It is case sensitive. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Define the HTTP header name to use for the parameter. It is case - // insensitive. - HttpHeader string `protobuf:"bytes,2,opt,name=http_header,json=httpHeader" json:"http_header,omitempty"` - // Define the URL query parameter name to use for the parameter. It is case - // sensitive. - UrlQueryParameter string `protobuf:"bytes,3,opt,name=url_query_parameter,json=urlQueryParameter" json:"url_query_parameter,omitempty"` -} - -func (m *SystemParameter) Reset() { *m = SystemParameter{} } -func (m *SystemParameter) String() string { return proto.CompactTextString(m) } -func (*SystemParameter) ProtoMessage() {} -func (*SystemParameter) Descriptor() ([]byte, []int) { return fileDescriptor14, []int{2} } - -func (m *SystemParameter) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SystemParameter) GetHttpHeader() string { - if m != nil { - return m.HttpHeader - } - return "" -} - -func (m *SystemParameter) GetUrlQueryParameter() string { - if m != nil { - return m.UrlQueryParameter - } - return "" -} - -func init() { - proto.RegisterType((*SystemParameters)(nil), "google.api.SystemParameters") - proto.RegisterType((*SystemParameterRule)(nil), "google.api.SystemParameterRule") - proto.RegisterType((*SystemParameter)(nil), "google.api.SystemParameter") -} - -func init() { proto.RegisterFile("google/api/system_parameter.proto", fileDescriptor14) } - -var fileDescriptor14 = []byte{ - // 286 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0xbf, 0x4e, 0xc3, 0x30, - 0x10, 0x87, 0x95, 0xb6, 0x20, 0xb8, 0x4a, 0xfc, 0x71, 0x19, 0x22, 0x18, 0x5a, 0x3a, 0x75, 0x72, - 0x24, 0x10, 0x53, 0x27, 0x2a, 0x21, 0xe8, 0x16, 0xca, 0xc6, 0x12, 0x99, 0x70, 0xb8, 0x91, 0x9c, - 0xd8, 0x9c, 0x9d, 0x48, 0x7d, 0x1d, 0x9e, 0x14, 0xc5, 0x29, 0x69, 0x89, 0x10, 0x9b, 0xef, 0xbe, - 0xcf, 0xfa, 0x9d, 0xee, 0xe0, 0x5a, 0x6a, 0x2d, 0x15, 0x46, 0xc2, 0x64, 0x91, 0xdd, 0x58, 0x87, - 0x79, 0x62, 0x04, 0x89, 0x1c, 0x1d, 0x12, 0x37, 0xa4, 0x9d, 0x66, 0xd0, 0x28, 0x5c, 0x98, 0x6c, - 0xba, 0x84, 0xb3, 0x17, 0x6f, 0xc5, 0x3f, 0x92, 0x65, 0x77, 0x70, 0x40, 0xa5, 0x42, 0x1b, 0x06, - 0x93, 0xfe, 0x6c, 0x78, 0x33, 0xe6, 0x3b, 0x9f, 0x77, 0xe4, 0x55, 0xa9, 0x70, 0xd5, 0xd8, 0xd3, - 0x02, 0x46, 0x7f, 0x50, 0x76, 0x09, 0x47, 0x16, 0x15, 0xa6, 0x4e, 0x53, 0x18, 0x4c, 0x82, 0xd9, - 0xf1, 0xaa, 0xad, 0xd9, 0x1c, 0xa0, 0x1d, 0xce, 0x86, 0x3d, 0x1f, 0x77, 0xf5, 0x5f, 0xdc, 0x9e, - 0x3e, 0xad, 0xe0, 0xb4, 0x83, 0x19, 0x83, 0x41, 0x21, 0x72, 0xdc, 0xe6, 0xf8, 0x37, 0x1b, 0xc3, - 0x70, 0xed, 0x9c, 0x49, 0xd6, 0x28, 0xde, 0x91, 0xc2, 0x9e, 0x47, 0x50, 0xb7, 0x9e, 0x7c, 0x87, - 0x71, 0x18, 0x95, 0xa4, 0x92, 0xcf, 0x12, 0x69, 0xb3, 0xdb, 0x55, 0xd8, 0xf7, 0xe2, 0x79, 0x49, - 0xea, 0xb9, 0x26, 0x6d, 0xc8, 0xa2, 0x82, 0x93, 0x54, 0xe7, 0x7b, 0x53, 0x2e, 0x2e, 0x3a, 0x73, - 0xc4, 0xf5, 0x9a, 0xe3, 0xe0, 0xf5, 0x61, 0xeb, 0x48, 0xad, 0x44, 0x21, 0xb9, 0x26, 0x19, 0x49, - 0x2c, 0xfc, 0x11, 0xa2, 0x06, 0x09, 0x93, 0xd9, 0xe6, 0x54, 0x48, 0x55, 0x96, 0x62, 0xaa, 0x8b, - 0x8f, 0x4c, 0xce, 0x7f, 0x55, 0x5f, 0xbd, 0xc1, 0xe3, 0x7d, 0xbc, 0x7c, 0x3b, 0xf4, 0x1f, 0x6f, - 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x5e, 0xdf, 0x2e, 0x09, 0xe2, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/usage.pb.go b/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/usage.pb.go deleted file mode 100644 index 1e7d710b..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/serviceconfig/usage.pb.go +++ /dev/null @@ -1,157 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/usage.proto - -package serviceconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Configuration controlling usage of a service. -type Usage struct { - // Requirements that must be satisfied before a consumer project can use the - // service. Each requirement is of the form <service.name>/<requirement-id>; - // for example 'serviceusage.googleapis.com/billing-enabled'. - Requirements []string `protobuf:"bytes,1,rep,name=requirements" json:"requirements,omitempty"` - // A list of usage rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - Rules []*UsageRule `protobuf:"bytes,6,rep,name=rules" json:"rules,omitempty"` - // The full resource name of a channel used for sending notifications to the - // service producer. - // - // Google Service Management currently only supports - // [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification - // channel. To use Google Cloud Pub/Sub as the channel, this must be the name - // of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format - // documented in https://cloud.google.com/pubsub/docs/overview. - ProducerNotificationChannel string `protobuf:"bytes,7,opt,name=producer_notification_channel,json=producerNotificationChannel" json:"producer_notification_channel,omitempty"` -} - -func (m *Usage) Reset() { *m = Usage{} } -func (m *Usage) String() string { return proto.CompactTextString(m) } -func (*Usage) ProtoMessage() {} -func (*Usage) Descriptor() ([]byte, []int) { return fileDescriptor15, []int{0} } - -func (m *Usage) GetRequirements() []string { - if m != nil { - return m.Requirements - } - return nil -} - -func (m *Usage) GetRules() []*UsageRule { - if m != nil { - return m.Rules - } - return nil -} - -func (m *Usage) GetProducerNotificationChannel() string { - if m != nil { - return m.ProducerNotificationChannel - } - return "" -} - -// Usage configuration rules for the service. -// -// NOTE: Under development. -// -// -// Use this rule to configure unregistered calls for the service. Unregistered -// calls are calls that do not contain consumer project identity. -// (Example: calls that do not contain an API key). -// By default, API methods do not allow unregistered calls, and each method call -// must be identified by a consumer project identity. Use this rule to -// allow/disallow unregistered calls. -// -// Example of an API that wants to allow unregistered calls for entire service. -// -// usage: -// rules: -// - selector: "*" -// allow_unregistered_calls: true -// -// Example of a method that wants to allow unregistered calls. -// -// usage: -// rules: -// - selector: "google.example.library.v1.LibraryService.CreateBook" -// allow_unregistered_calls: true -type UsageRule struct { - // Selects the methods to which this rule applies. Use '*' to indicate all - // methods in all APIs. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"` - // True, if the method allows unregistered calls; false otherwise. - AllowUnregisteredCalls bool `protobuf:"varint,2,opt,name=allow_unregistered_calls,json=allowUnregisteredCalls" json:"allow_unregistered_calls,omitempty"` - // True, if the method should skip service control. If so, no control plane - // feature (like quota and billing) will be enabled. - SkipServiceControl bool `protobuf:"varint,3,opt,name=skip_service_control,json=skipServiceControl" json:"skip_service_control,omitempty"` -} - -func (m *UsageRule) Reset() { *m = UsageRule{} } -func (m *UsageRule) String() string { return proto.CompactTextString(m) } -func (*UsageRule) ProtoMessage() {} -func (*UsageRule) Descriptor() ([]byte, []int) { return fileDescriptor15, []int{1} } - -func (m *UsageRule) GetSelector() string { - if m != nil { - return m.Selector - } - return "" -} - -func (m *UsageRule) GetAllowUnregisteredCalls() bool { - if m != nil { - return m.AllowUnregisteredCalls - } - return false -} - -func (m *UsageRule) GetSkipServiceControl() bool { - if m != nil { - return m.SkipServiceControl - } - return false -} - -func init() { - proto.RegisterType((*Usage)(nil), "google.api.Usage") - proto.RegisterType((*UsageRule)(nil), "google.api.UsageRule") -} - -func init() { proto.RegisterFile("google/api/usage.proto", fileDescriptor15) } - -var fileDescriptor15 = []byte{ - // 331 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x91, 0xc1, 0x4b, 0xfb, 0x30, - 0x14, 0xc7, 0xe9, 0xf6, 0xdb, 0x7e, 0x5b, 0x14, 0x0f, 0x41, 0x47, 0x99, 0x0a, 0x65, 0xa7, 0x82, - 0xd0, 0x8a, 0x5e, 0x04, 0x4f, 0x6e, 0x88, 0x78, 0x91, 0x51, 0xd9, 0xc5, 0x4b, 0x89, 0xd9, 0x5b, - 0x0c, 0x66, 0x79, 0x35, 0x49, 0xf5, 0x0f, 0xf1, 0xea, 0xc9, 0xbf, 0x54, 0x9a, 0xcc, 0xd9, 0x1d, - 0xdf, 0xfb, 0x7c, 0xbe, 0xef, 0xb5, 0x2f, 0x64, 0x24, 0x10, 0x85, 0x82, 0x9c, 0x55, 0x32, 0xaf, - 0x2d, 0x13, 0x90, 0x55, 0x06, 0x1d, 0x52, 0x12, 0xfa, 0x19, 0xab, 0xe4, 0xf8, 0xa4, 0xe5, 0x30, - 0xad, 0xd1, 0x31, 0x27, 0x51, 0xdb, 0x60, 0x4e, 0xbe, 0x22, 0xd2, 0x5b, 0x34, 0x49, 0x3a, 0x21, - 0xfb, 0x06, 0xde, 0x6a, 0x69, 0x60, 0x0d, 0xda, 0xd9, 0x38, 0x4a, 0xba, 0xe9, 0xb0, 0xd8, 0xe9, - 0xd1, 0x33, 0xd2, 0x33, 0xb5, 0x02, 0x1b, 0xf7, 0x93, 0x6e, 0xba, 0x77, 0x71, 0x94, 0xfd, 0xed, - 0xc9, 0xfc, 0x94, 0xa2, 0x56, 0x50, 0x04, 0x87, 0x4e, 0xc9, 0x69, 0x65, 0x70, 0x59, 0x73, 0x30, - 0xa5, 0x46, 0x27, 0x57, 0x92, 0xfb, 0xd5, 0x25, 0x7f, 0x61, 0x5a, 0x83, 0x8a, 0xff, 0x27, 0x51, - 0x3a, 0x2c, 0x8e, 0x7f, 0xa5, 0x87, 0x96, 0x33, 0x0b, 0xca, 0xe4, 0x33, 0x22, 0xc3, 0xed, 0x60, - 0x3a, 0x26, 0x03, 0x0b, 0x0a, 0xb8, 0x43, 0x13, 0x47, 0x3e, 0xbc, 0xad, 0xe9, 0x15, 0x89, 0x99, - 0x52, 0xf8, 0x51, 0xd6, 0xda, 0x80, 0x90, 0xd6, 0x81, 0x81, 0x65, 0xc9, 0x99, 0x52, 0x36, 0xee, - 0x24, 0x51, 0x3a, 0x28, 0x46, 0x9e, 0x2f, 0x5a, 0x78, 0xd6, 0x50, 0x7a, 0x4e, 0x0e, 0xed, 0xab, - 0xac, 0x4a, 0x0b, 0xe6, 0x5d, 0x72, 0x28, 0x39, 0x6a, 0x67, 0x50, 0xc5, 0x5d, 0x9f, 0xa2, 0x0d, - 0x7b, 0x0c, 0x68, 0x16, 0xc8, 0x54, 0x91, 0x03, 0x8e, 0xeb, 0xd6, 0xcf, 0x4f, 0x89, 0xff, 0xc8, - 0x79, 0x73, 0xd2, 0x79, 0xf4, 0x74, 0xbb, 0x21, 0x02, 0x15, 0xd3, 0x22, 0x43, 0x23, 0x72, 0x01, - 0xda, 0x1f, 0x3c, 0x0f, 0x88, 0x55, 0xd2, 0xfa, 0x17, 0xd9, 0x2c, 0xe5, 0xa8, 0x57, 0x52, 0x5c, - 0xef, 0x54, 0xdf, 0x9d, 0x7f, 0x77, 0x37, 0xf3, 0xfb, 0xe7, 0xbe, 0x0f, 0x5e, 0xfe, 0x04, 0x00, - 0x00, 0xff, 0xff, 0x9c, 0x4b, 0x8c, 0x57, 0xed, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/check_error.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/check_error.pb.go deleted file mode 100644 index cadea877..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/check_error.pb.go +++ /dev/null @@ -1,207 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicecontrol/v1/check_error.proto - -/* -Package servicecontrol is a generated protocol buffer package. - -It is generated from these files: - google/api/servicecontrol/v1/check_error.proto - google/api/servicecontrol/v1/distribution.proto - google/api/servicecontrol/v1/log_entry.proto - google/api/servicecontrol/v1/metric_value.proto - google/api/servicecontrol/v1/operation.proto - google/api/servicecontrol/v1/quota_controller.proto - google/api/servicecontrol/v1/service_controller.proto - -It has these top-level messages: - CheckError - Distribution - LogEntry - MetricValue - MetricValueSet - Operation - AllocateQuotaRequest - QuotaOperation - AllocateQuotaResponse - QuotaError - CheckRequest - CheckResponse - ReportRequest - ReportResponse -*/ -package servicecontrol - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Error codes for Check responses. -type CheckError_Code int32 - -const ( - // This is never used in `CheckResponse`. - CheckError_ERROR_CODE_UNSPECIFIED CheckError_Code = 0 - // The consumer's project id was not found. - // Same as [google.rpc.Code.NOT_FOUND][]. - CheckError_NOT_FOUND CheckError_Code = 5 - // The consumer doesn't have access to the specified resource. - // Same as [google.rpc.Code.PERMISSION_DENIED][]. - CheckError_PERMISSION_DENIED CheckError_Code = 7 - // Quota check failed. Same as [google.rpc.Code.RESOURCE_EXHAUSTED][]. - CheckError_RESOURCE_EXHAUSTED CheckError_Code = 8 - // The consumer hasn't activated the service. - CheckError_SERVICE_NOT_ACTIVATED CheckError_Code = 104 - // The consumer cannot access the service because billing is disabled. - CheckError_BILLING_DISABLED CheckError_Code = 107 - // The consumer's project has been marked as deleted (soft deletion). - CheckError_PROJECT_DELETED CheckError_Code = 108 - // The consumer's project number or id does not represent a valid project. - CheckError_PROJECT_INVALID CheckError_Code = 114 - // The IP address of the consumer is invalid for the specific consumer - // project. - CheckError_IP_ADDRESS_BLOCKED CheckError_Code = 109 - // The referer address of the consumer request is invalid for the specific - // consumer project. - CheckError_REFERER_BLOCKED CheckError_Code = 110 - // The client application of the consumer request is invalid for the - // specific consumer project. - CheckError_CLIENT_APP_BLOCKED CheckError_Code = 111 - // The consumer's API key is invalid. - CheckError_API_KEY_INVALID CheckError_Code = 105 - // The consumer's API Key has expired. - CheckError_API_KEY_EXPIRED CheckError_Code = 112 - // The consumer's API Key was not found in config record. - CheckError_API_KEY_NOT_FOUND CheckError_Code = 113 - // The backend server for looking up project id/number is unavailable. - CheckError_NAMESPACE_LOOKUP_UNAVAILABLE CheckError_Code = 300 - // The backend server for checking service status is unavailable. - CheckError_SERVICE_STATUS_UNAVAILABLE CheckError_Code = 301 - // The backend server for checking billing status is unavailable. - CheckError_BILLING_STATUS_UNAVAILABLE CheckError_Code = 302 -) - -var CheckError_Code_name = map[int32]string{ - 0: "ERROR_CODE_UNSPECIFIED", - 5: "NOT_FOUND", - 7: "PERMISSION_DENIED", - 8: "RESOURCE_EXHAUSTED", - 104: "SERVICE_NOT_ACTIVATED", - 107: "BILLING_DISABLED", - 108: "PROJECT_DELETED", - 114: "PROJECT_INVALID", - 109: "IP_ADDRESS_BLOCKED", - 110: "REFERER_BLOCKED", - 111: "CLIENT_APP_BLOCKED", - 105: "API_KEY_INVALID", - 112: "API_KEY_EXPIRED", - 113: "API_KEY_NOT_FOUND", - 300: "NAMESPACE_LOOKUP_UNAVAILABLE", - 301: "SERVICE_STATUS_UNAVAILABLE", - 302: "BILLING_STATUS_UNAVAILABLE", -} -var CheckError_Code_value = map[string]int32{ - "ERROR_CODE_UNSPECIFIED": 0, - "NOT_FOUND": 5, - "PERMISSION_DENIED": 7, - "RESOURCE_EXHAUSTED": 8, - "SERVICE_NOT_ACTIVATED": 104, - "BILLING_DISABLED": 107, - "PROJECT_DELETED": 108, - "PROJECT_INVALID": 114, - "IP_ADDRESS_BLOCKED": 109, - "REFERER_BLOCKED": 110, - "CLIENT_APP_BLOCKED": 111, - "API_KEY_INVALID": 105, - "API_KEY_EXPIRED": 112, - "API_KEY_NOT_FOUND": 113, - "NAMESPACE_LOOKUP_UNAVAILABLE": 300, - "SERVICE_STATUS_UNAVAILABLE": 301, - "BILLING_STATUS_UNAVAILABLE": 302, -} - -func (x CheckError_Code) String() string { - return proto.EnumName(CheckError_Code_name, int32(x)) -} -func (CheckError_Code) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// Defines the errors to be returned in -// [google.api.servicecontrol.v1.CheckResponse.check_errors][google.api.servicecontrol.v1.CheckResponse.check_errors]. -type CheckError struct { - // The error code. - Code CheckError_Code `protobuf:"varint,1,opt,name=code,enum=google.api.servicecontrol.v1.CheckError_Code" json:"code,omitempty"` - // Free-form text providing details on the error cause of the error. - Detail string `protobuf:"bytes,2,opt,name=detail" json:"detail,omitempty"` -} - -func (m *CheckError) Reset() { *m = CheckError{} } -func (m *CheckError) String() string { return proto.CompactTextString(m) } -func (*CheckError) ProtoMessage() {} -func (*CheckError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *CheckError) GetCode() CheckError_Code { - if m != nil { - return m.Code - } - return CheckError_ERROR_CODE_UNSPECIFIED -} - -func (m *CheckError) GetDetail() string { - if m != nil { - return m.Detail - } - return "" -} - -func init() { - proto.RegisterType((*CheckError)(nil), "google.api.servicecontrol.v1.CheckError") - proto.RegisterEnum("google.api.servicecontrol.v1.CheckError_Code", CheckError_Code_name, CheckError_Code_value) -} - -func init() { proto.RegisterFile("google/api/servicecontrol/v1/check_error.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 484 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xdd, 0x6e, 0xd3, 0x3e, - 0x18, 0xc6, 0xff, 0xe9, 0xbf, 0x0c, 0x66, 0x09, 0x16, 0x0c, 0xab, 0x46, 0x55, 0x89, 0xb2, 0xa3, - 0x9d, 0x90, 0x68, 0x70, 0xc8, 0x91, 0x6b, 0xbf, 0x05, 0xaf, 0x59, 0x62, 0xd9, 0x49, 0x35, 0x38, - 0xb1, 0x42, 0x1a, 0x65, 0xd1, 0xba, 0xb8, 0xa4, 0x51, 0xaf, 0x80, 0x0b, 0xe0, 0x2a, 0x38, 0x02, - 0xae, 0x8f, 0x43, 0xe4, 0x76, 0xfd, 0x92, 0xa6, 0x1d, 0xfa, 0x79, 0x7f, 0xcf, 0x63, 0xbd, 0x1f, - 0xc8, 0x2b, 0x8c, 0x29, 0xa6, 0xb9, 0x9f, 0xce, 0x4a, 0x7f, 0x9e, 0xd7, 0x8b, 0x32, 0xcb, 0x33, - 0x53, 0x35, 0xb5, 0x99, 0xfa, 0x8b, 0x73, 0x3f, 0xbb, 0xce, 0xb3, 0x1b, 0x9d, 0xd7, 0xb5, 0xa9, - 0xbd, 0x59, 0x6d, 0x1a, 0x83, 0x7b, 0x2b, 0xde, 0x4b, 0x67, 0xa5, 0xb7, 0xcf, 0x7b, 0x8b, 0xf3, - 0x6e, 0x6f, 0x27, 0x2d, 0xad, 0x2a, 0xd3, 0xa4, 0x4d, 0x69, 0xaa, 0xf9, 0xca, 0x7b, 0xfa, 0xa3, - 0x8d, 0x10, 0xb5, 0x89, 0x60, 0x03, 0x31, 0x41, 0xed, 0xcc, 0x4c, 0xf2, 0x13, 0xa7, 0xef, 0x9c, - 0x3d, 0x7b, 0xf7, 0xd6, 0x7b, 0x28, 0xd9, 0xdb, 0xfa, 0x3c, 0x6a, 0x26, 0xb9, 0x5c, 0x5a, 0x71, - 0x07, 0x1d, 0x4c, 0xf2, 0x26, 0x2d, 0xa7, 0x27, 0xad, 0xbe, 0x73, 0x76, 0x28, 0xef, 0x5e, 0xa7, - 0x3f, 0xff, 0x47, 0x6d, 0x8b, 0xe1, 0x2e, 0xea, 0x80, 0x94, 0x91, 0xd4, 0x34, 0x62, 0xa0, 0x93, - 0x50, 0x09, 0xa0, 0x7c, 0xc8, 0x81, 0xb9, 0xff, 0xe1, 0xa7, 0xe8, 0x30, 0x8c, 0x62, 0x3d, 0x8c, - 0x92, 0x90, 0xb9, 0x8f, 0xf0, 0x31, 0x7a, 0x2e, 0x40, 0x5e, 0x72, 0xa5, 0x78, 0x14, 0x6a, 0x06, - 0xa1, 0xa5, 0x1e, 0xe3, 0x0e, 0xc2, 0x12, 0x54, 0x94, 0x48, 0x0a, 0x1a, 0xae, 0x3e, 0x91, 0x44, - 0xc5, 0xc0, 0xdc, 0x27, 0xf8, 0x15, 0x3a, 0x56, 0x20, 0xc7, 0x9c, 0x82, 0xb6, 0x29, 0x84, 0xc6, - 0x7c, 0x4c, 0x6c, 0xe9, 0x1a, 0xbf, 0x44, 0xee, 0x80, 0x07, 0x01, 0x0f, 0x3f, 0x6a, 0xc6, 0x15, - 0x19, 0x04, 0xc0, 0xdc, 0x1b, 0xfc, 0x02, 0x1d, 0x09, 0x19, 0x5d, 0x00, 0x8d, 0x35, 0x83, 0x00, - 0x2c, 0x3a, 0xdd, 0x15, 0x79, 0x38, 0x26, 0x01, 0x67, 0x6e, 0x6d, 0xbf, 0xe4, 0x42, 0x13, 0xc6, - 0x24, 0x28, 0xa5, 0x07, 0x41, 0x44, 0x47, 0xc0, 0xdc, 0x5b, 0x0b, 0x4b, 0x18, 0x82, 0x04, 0xb9, - 0x11, 0x2b, 0x0b, 0xd3, 0x80, 0x43, 0x18, 0x6b, 0x22, 0xc4, 0x46, 0x37, 0x16, 0x26, 0x82, 0xeb, - 0x11, 0x7c, 0xde, 0x24, 0x97, 0xbb, 0x22, 0x5c, 0x09, 0x2e, 0x81, 0xb9, 0x33, 0xdb, 0xf8, 0x5a, - 0xdc, 0xce, 0xe3, 0x1b, 0x7e, 0x83, 0x7a, 0x21, 0xb9, 0x04, 0x25, 0x08, 0x05, 0x1d, 0x44, 0xd1, - 0x28, 0x11, 0x3a, 0x09, 0xc9, 0x98, 0xf0, 0xc0, 0xb6, 0xe4, 0xfe, 0x6a, 0xe1, 0xd7, 0xa8, 0xbb, - 0x9e, 0x81, 0x8a, 0x49, 0x9c, 0xa8, 0x3d, 0xe0, 0xf7, 0x12, 0x58, 0x4f, 0xe2, 0x1e, 0xe0, 0x4f, - 0x6b, 0xf0, 0xdd, 0x41, 0xfd, 0xcc, 0xdc, 0x3e, 0xb8, 0xfb, 0xc1, 0xd1, 0x76, 0xf9, 0xc2, 0x1e, - 0x92, 0x70, 0xbe, 0x5c, 0xdc, 0x19, 0x0a, 0x33, 0x4d, 0xab, 0xc2, 0x33, 0x75, 0xe1, 0x17, 0x79, - 0xb5, 0x3c, 0x33, 0x7f, 0x55, 0x4a, 0x67, 0xe5, 0xfc, 0xfe, 0xab, 0xfe, 0xb0, 0xaf, 0xfc, 0x75, - 0x9c, 0xaf, 0x07, 0x4b, 0xe7, 0xfb, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x65, 0x26, 0xbf, - 0x0e, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/distribution.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/distribution.pb.go deleted file mode 100644 index a4193182..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/distribution.pb.go +++ /dev/null @@ -1,430 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicecontrol/v1/distribution.proto - -package servicecontrol - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Distribution represents a frequency distribution of double-valued sample -// points. It contains the size of the population of sample points plus -// additional optional information: -// -// - the arithmetic mean of the samples -// - the minimum and maximum of the samples -// - the sum-squared-deviation of the samples, used to compute variance -// - a histogram of the values of the sample points -type Distribution struct { - // The total number of samples in the distribution. Must be >= 0. - Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"` - // The arithmetic mean of the samples in the distribution. If `count` is - // zero then this field must be zero. - Mean float64 `protobuf:"fixed64,2,opt,name=mean" json:"mean,omitempty"` - // The minimum of the population of values. Ignored if `count` is zero. - Minimum float64 `protobuf:"fixed64,3,opt,name=minimum" json:"minimum,omitempty"` - // The maximum of the population of values. Ignored if `count` is zero. - Maximum float64 `protobuf:"fixed64,4,opt,name=maximum" json:"maximum,omitempty"` - // The sum of squared deviations from the mean: - // Sum[i=1..count]((x_i - mean)^2) - // where each x_i is a sample values. If `count` is zero then this field - // must be zero, otherwise validation of the request fails. - SumOfSquaredDeviation float64 `protobuf:"fixed64,5,opt,name=sum_of_squared_deviation,json=sumOfSquaredDeviation" json:"sum_of_squared_deviation,omitempty"` - // The number of samples in each histogram bucket. `bucket_counts` are - // optional. If present, they must sum to the `count` value. - // - // The buckets are defined below in `bucket_option`. There are N buckets. - // `bucket_counts[0]` is the number of samples in the underflow bucket. - // `bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples - // in each of the finite buckets. And `bucket_counts[N] is the number - // of samples in the overflow bucket. See the comments of `bucket_option` - // below for more details. - // - // Any suffix of trailing zeros may be omitted. - BucketCounts []int64 `protobuf:"varint,6,rep,packed,name=bucket_counts,json=bucketCounts" json:"bucket_counts,omitempty"` - // Defines the buckets in the histogram. `bucket_option` and `bucket_counts` - // must be both set, or both unset. - // - // Buckets are numbered in the range of [0, N], with a total of N+1 buckets. - // There must be at least two buckets (a single-bucket histogram gives - // no information that isn't already provided by `count`). - // - // The first bucket is the underflow bucket which has a lower bound - // of -inf. The last bucket is the overflow bucket which has an - // upper bound of +inf. All other buckets (if any) are called "finite" - // buckets because they have finite lower and upper bounds. As described - // below, there are three ways to define the finite buckets. - // - // (1) Buckets with constant width. - // (2) Buckets with exponentially growing widths. - // (3) Buckets with arbitrary user-provided widths. - // - // In all cases, the buckets cover the entire real number line (-inf, - // +inf). Bucket upper bounds are exclusive and lower bounds are - // inclusive. The upper bound of the underflow bucket is equal to the - // lower bound of the smallest finite bucket; the lower bound of the - // overflow bucket is equal to the upper bound of the largest finite - // bucket. - // - // Types that are valid to be assigned to BucketOption: - // *Distribution_LinearBuckets_ - // *Distribution_ExponentialBuckets_ - // *Distribution_ExplicitBuckets_ - BucketOption isDistribution_BucketOption `protobuf_oneof:"bucket_option"` -} - -func (m *Distribution) Reset() { *m = Distribution{} } -func (m *Distribution) String() string { return proto.CompactTextString(m) } -func (*Distribution) ProtoMessage() {} -func (*Distribution) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -type isDistribution_BucketOption interface { - isDistribution_BucketOption() -} - -type Distribution_LinearBuckets_ struct { - LinearBuckets *Distribution_LinearBuckets `protobuf:"bytes,7,opt,name=linear_buckets,json=linearBuckets,oneof"` -} -type Distribution_ExponentialBuckets_ struct { - ExponentialBuckets *Distribution_ExponentialBuckets `protobuf:"bytes,8,opt,name=exponential_buckets,json=exponentialBuckets,oneof"` -} -type Distribution_ExplicitBuckets_ struct { - ExplicitBuckets *Distribution_ExplicitBuckets `protobuf:"bytes,9,opt,name=explicit_buckets,json=explicitBuckets,oneof"` -} - -func (*Distribution_LinearBuckets_) isDistribution_BucketOption() {} -func (*Distribution_ExponentialBuckets_) isDistribution_BucketOption() {} -func (*Distribution_ExplicitBuckets_) isDistribution_BucketOption() {} - -func (m *Distribution) GetBucketOption() isDistribution_BucketOption { - if m != nil { - return m.BucketOption - } - return nil -} - -func (m *Distribution) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -func (m *Distribution) GetMean() float64 { - if m != nil { - return m.Mean - } - return 0 -} - -func (m *Distribution) GetMinimum() float64 { - if m != nil { - return m.Minimum - } - return 0 -} - -func (m *Distribution) GetMaximum() float64 { - if m != nil { - return m.Maximum - } - return 0 -} - -func (m *Distribution) GetSumOfSquaredDeviation() float64 { - if m != nil { - return m.SumOfSquaredDeviation - } - return 0 -} - -func (m *Distribution) GetBucketCounts() []int64 { - if m != nil { - return m.BucketCounts - } - return nil -} - -func (m *Distribution) GetLinearBuckets() *Distribution_LinearBuckets { - if x, ok := m.GetBucketOption().(*Distribution_LinearBuckets_); ok { - return x.LinearBuckets - } - return nil -} - -func (m *Distribution) GetExponentialBuckets() *Distribution_ExponentialBuckets { - if x, ok := m.GetBucketOption().(*Distribution_ExponentialBuckets_); ok { - return x.ExponentialBuckets - } - return nil -} - -func (m *Distribution) GetExplicitBuckets() *Distribution_ExplicitBuckets { - if x, ok := m.GetBucketOption().(*Distribution_ExplicitBuckets_); ok { - return x.ExplicitBuckets - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Distribution) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Distribution_OneofMarshaler, _Distribution_OneofUnmarshaler, _Distribution_OneofSizer, []interface{}{ - (*Distribution_LinearBuckets_)(nil), - (*Distribution_ExponentialBuckets_)(nil), - (*Distribution_ExplicitBuckets_)(nil), - } -} - -func _Distribution_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Distribution) - // bucket_option - switch x := m.BucketOption.(type) { - case *Distribution_LinearBuckets_: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.LinearBuckets); err != nil { - return err - } - case *Distribution_ExponentialBuckets_: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ExponentialBuckets); err != nil { - return err - } - case *Distribution_ExplicitBuckets_: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ExplicitBuckets); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Distribution.BucketOption has unexpected type %T", x) - } - return nil -} - -func _Distribution_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Distribution) - switch tag { - case 7: // bucket_option.linear_buckets - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Distribution_LinearBuckets) - err := b.DecodeMessage(msg) - m.BucketOption = &Distribution_LinearBuckets_{msg} - return true, err - case 8: // bucket_option.exponential_buckets - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Distribution_ExponentialBuckets) - err := b.DecodeMessage(msg) - m.BucketOption = &Distribution_ExponentialBuckets_{msg} - return true, err - case 9: // bucket_option.explicit_buckets - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Distribution_ExplicitBuckets) - err := b.DecodeMessage(msg) - m.BucketOption = &Distribution_ExplicitBuckets_{msg} - return true, err - default: - return false, nil - } -} - -func _Distribution_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Distribution) - // bucket_option - switch x := m.BucketOption.(type) { - case *Distribution_LinearBuckets_: - s := proto.Size(x.LinearBuckets) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Distribution_ExponentialBuckets_: - s := proto.Size(x.ExponentialBuckets) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Distribution_ExplicitBuckets_: - s := proto.Size(x.ExplicitBuckets) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Describing buckets with constant width. -type Distribution_LinearBuckets struct { - // The number of finite buckets. With the underflow and overflow buckets, - // the total number of buckets is `num_finite_buckets` + 2. - // See comments on `bucket_options` for details. - NumFiniteBuckets int32 `protobuf:"varint,1,opt,name=num_finite_buckets,json=numFiniteBuckets" json:"num_finite_buckets,omitempty"` - // The i'th linear bucket covers the interval - // [offset + (i-1) * width, offset + i * width) - // where i ranges from 1 to num_finite_buckets, inclusive. - // Must be strictly positive. - Width float64 `protobuf:"fixed64,2,opt,name=width" json:"width,omitempty"` - // The i'th linear bucket covers the interval - // [offset + (i-1) * width, offset + i * width) - // where i ranges from 1 to num_finite_buckets, inclusive. - Offset float64 `protobuf:"fixed64,3,opt,name=offset" json:"offset,omitempty"` -} - -func (m *Distribution_LinearBuckets) Reset() { *m = Distribution_LinearBuckets{} } -func (m *Distribution_LinearBuckets) String() string { return proto.CompactTextString(m) } -func (*Distribution_LinearBuckets) ProtoMessage() {} -func (*Distribution_LinearBuckets) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -func (m *Distribution_LinearBuckets) GetNumFiniteBuckets() int32 { - if m != nil { - return m.NumFiniteBuckets - } - return 0 -} - -func (m *Distribution_LinearBuckets) GetWidth() float64 { - if m != nil { - return m.Width - } - return 0 -} - -func (m *Distribution_LinearBuckets) GetOffset() float64 { - if m != nil { - return m.Offset - } - return 0 -} - -// Describing buckets with exponentially growing width. -type Distribution_ExponentialBuckets struct { - // The number of finite buckets. With the underflow and overflow buckets, - // the total number of buckets is `num_finite_buckets` + 2. - // See comments on `bucket_options` for details. - NumFiniteBuckets int32 `protobuf:"varint,1,opt,name=num_finite_buckets,json=numFiniteBuckets" json:"num_finite_buckets,omitempty"` - // The i'th exponential bucket covers the interval - // [scale * growth_factor^(i-1), scale * growth_factor^i) - // where i ranges from 1 to num_finite_buckets inclusive. - // Must be larger than 1.0. - GrowthFactor float64 `protobuf:"fixed64,2,opt,name=growth_factor,json=growthFactor" json:"growth_factor,omitempty"` - // The i'th exponential bucket covers the interval - // [scale * growth_factor^(i-1), scale * growth_factor^i) - // where i ranges from 1 to num_finite_buckets inclusive. - // Must be > 0. - Scale float64 `protobuf:"fixed64,3,opt,name=scale" json:"scale,omitempty"` -} - -func (m *Distribution_ExponentialBuckets) Reset() { *m = Distribution_ExponentialBuckets{} } -func (m *Distribution_ExponentialBuckets) String() string { return proto.CompactTextString(m) } -func (*Distribution_ExponentialBuckets) ProtoMessage() {} -func (*Distribution_ExponentialBuckets) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{0, 1} -} - -func (m *Distribution_ExponentialBuckets) GetNumFiniteBuckets() int32 { - if m != nil { - return m.NumFiniteBuckets - } - return 0 -} - -func (m *Distribution_ExponentialBuckets) GetGrowthFactor() float64 { - if m != nil { - return m.GrowthFactor - } - return 0 -} - -func (m *Distribution_ExponentialBuckets) GetScale() float64 { - if m != nil { - return m.Scale - } - return 0 -} - -// Describing buckets with arbitrary user-provided width. -type Distribution_ExplicitBuckets struct { - // 'bound' is a list of strictly increasing boundaries between - // buckets. Note that a list of length N-1 defines N buckets because - // of fenceposting. See comments on `bucket_options` for details. - // - // The i'th finite bucket covers the interval - // [bound[i-1], bound[i]) - // where i ranges from 1 to bound_size() - 1. Note that there are no - // finite buckets at all if 'bound' only contains a single element; in - // that special case the single bound defines the boundary between the - // underflow and overflow buckets. - // - // bucket number lower bound upper bound - // i == 0 (underflow) -inf bound[i] - // 0 < i < bound_size() bound[i-1] bound[i] - // i == bound_size() (overflow) bound[i-1] +inf - Bounds []float64 `protobuf:"fixed64,1,rep,packed,name=bounds" json:"bounds,omitempty"` -} - -func (m *Distribution_ExplicitBuckets) Reset() { *m = Distribution_ExplicitBuckets{} } -func (m *Distribution_ExplicitBuckets) String() string { return proto.CompactTextString(m) } -func (*Distribution_ExplicitBuckets) ProtoMessage() {} -func (*Distribution_ExplicitBuckets) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 2} } - -func (m *Distribution_ExplicitBuckets) GetBounds() []float64 { - if m != nil { - return m.Bounds - } - return nil -} - -func init() { - proto.RegisterType((*Distribution)(nil), "google.api.servicecontrol.v1.Distribution") - proto.RegisterType((*Distribution_LinearBuckets)(nil), "google.api.servicecontrol.v1.Distribution.LinearBuckets") - proto.RegisterType((*Distribution_ExponentialBuckets)(nil), "google.api.servicecontrol.v1.Distribution.ExponentialBuckets") - proto.RegisterType((*Distribution_ExplicitBuckets)(nil), "google.api.servicecontrol.v1.Distribution.ExplicitBuckets") -} - -func init() { proto.RegisterFile("google/api/servicecontrol/v1/distribution.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 486 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x4d, 0x6f, 0xd3, 0x40, - 0x10, 0x86, 0x31, 0x6e, 0x52, 0x18, 0x12, 0x52, 0x96, 0x82, 0xac, 0x88, 0x83, 0x45, 0x2f, 0x41, - 0x42, 0xb6, 0x0a, 0x07, 0x10, 0x88, 0x4b, 0x28, 0x15, 0x42, 0x48, 0x54, 0xe6, 0xc6, 0xc5, 0xda, - 0xd8, 0x6b, 0x77, 0x55, 0x7b, 0xc7, 0xec, 0x47, 0x9a, 0x0b, 0x57, 0x7e, 0x0f, 0x3f, 0x8f, 0x23, - 0xf2, 0xae, 0xf3, 0x45, 0xab, 0x48, 0xb9, 0xf9, 0x7d, 0xc7, 0x33, 0xcf, 0xec, 0x68, 0x06, 0xe2, - 0x12, 0xb1, 0xac, 0x58, 0x4c, 0x1b, 0x1e, 0x2b, 0x26, 0xe7, 0x3c, 0x63, 0x19, 0x0a, 0x2d, 0xb1, - 0x8a, 0xe7, 0xa7, 0x71, 0xce, 0x95, 0x96, 0x7c, 0x66, 0x34, 0x47, 0x11, 0x35, 0x12, 0x35, 0x92, - 0x67, 0x2e, 0x21, 0xa2, 0x0d, 0x8f, 0xb6, 0x13, 0xa2, 0xf9, 0xe9, 0xf3, 0x3f, 0x7d, 0x18, 0x9c, - 0x6d, 0x24, 0x91, 0x63, 0xe8, 0x65, 0x68, 0x84, 0x0e, 0xbc, 0xd0, 0x9b, 0xf8, 0x89, 0x13, 0x84, - 0xc0, 0x41, 0xcd, 0xa8, 0x08, 0xee, 0x86, 0xde, 0xc4, 0x4b, 0xec, 0x37, 0x09, 0xe0, 0xb0, 0xe6, - 0x82, 0xd7, 0xa6, 0x0e, 0x7c, 0x6b, 0x2f, 0xa5, 0x8d, 0xd0, 0x85, 0x8d, 0x1c, 0x74, 0x11, 0x27, - 0xc9, 0x1b, 0x08, 0x94, 0xa9, 0x53, 0x2c, 0x52, 0xf5, 0xd3, 0x50, 0xc9, 0xf2, 0x34, 0x67, 0x73, - 0x4e, 0x5b, 0x72, 0xd0, 0xb3, 0xbf, 0x3e, 0x51, 0xa6, 0xfe, 0x56, 0x7c, 0x77, 0xd1, 0xb3, 0x65, - 0x90, 0x9c, 0xc0, 0x70, 0x66, 0xb2, 0x2b, 0xa6, 0x53, 0xdb, 0x90, 0x0a, 0xfa, 0xa1, 0x3f, 0xf1, - 0x93, 0x81, 0x33, 0x3f, 0x5a, 0x8f, 0x50, 0x78, 0x58, 0x71, 0xc1, 0xa8, 0x4c, 0x9d, 0xad, 0x82, - 0xc3, 0xd0, 0x9b, 0x3c, 0x78, 0xf5, 0x36, 0xda, 0x35, 0x83, 0x68, 0xf3, 0xfd, 0xd1, 0x57, 0x5b, - 0x60, 0xea, 0xf2, 0x3f, 0xdf, 0x49, 0x86, 0xd5, 0xa6, 0x41, 0x1a, 0x78, 0xcc, 0x16, 0x0d, 0x0a, - 0x26, 0x34, 0xa7, 0xd5, 0x8a, 0x73, 0xcf, 0x72, 0x3e, 0xec, 0xc1, 0xf9, 0xb4, 0xae, 0xb2, 0x86, - 0x11, 0x76, 0xc3, 0x25, 0x25, 0x1c, 0xb1, 0x45, 0x53, 0xf1, 0x8c, 0xeb, 0x15, 0xee, 0xbe, 0xc5, - 0xbd, 0xdb, 0x0f, 0x67, 0x4b, 0xac, 0x59, 0x23, 0xb6, 0x6d, 0x8d, 0xaf, 0x60, 0xb8, 0xf5, 0x78, - 0xf2, 0x12, 0x88, 0x30, 0x75, 0x5a, 0x70, 0xc1, 0x35, 0x5b, 0xb1, 0xdb, 0xbd, 0xe8, 0x25, 0x47, - 0xc2, 0xd4, 0xe7, 0x36, 0xb0, 0xfc, 0xfb, 0x18, 0x7a, 0xd7, 0x3c, 0xd7, 0x97, 0xdd, 0x8e, 0x38, - 0x41, 0x9e, 0x42, 0x1f, 0x8b, 0x42, 0x31, 0xdd, 0xed, 0x48, 0xa7, 0xc6, 0xbf, 0x80, 0xdc, 0x9c, - 0xc0, 0x9e, 0xc4, 0x13, 0x18, 0x96, 0x12, 0xaf, 0xf5, 0x65, 0x5a, 0xd0, 0x4c, 0xa3, 0xec, 0xc8, - 0x03, 0x67, 0x9e, 0x5b, 0xaf, 0x6d, 0x4b, 0x65, 0xb4, 0x62, 0x1d, 0xdf, 0x89, 0xf1, 0x0b, 0x18, - 0xfd, 0x37, 0x91, 0xb6, 0xd3, 0x19, 0x1a, 0x91, 0xb7, 0x3c, 0xbf, 0xed, 0xd4, 0xa9, 0xe9, 0x68, - 0xb5, 0x79, 0xd8, 0xb4, 0xa3, 0x9c, 0xfe, 0xf6, 0x20, 0xcc, 0xb0, 0xde, 0x39, 0xfc, 0xe9, 0xa3, - 0xcd, 0xe9, 0x5f, 0xb4, 0x87, 0x78, 0xe1, 0xfd, 0xf8, 0xd2, 0xa5, 0x94, 0x58, 0x51, 0x51, 0x46, - 0x28, 0xcb, 0xb8, 0x64, 0xc2, 0x9e, 0x69, 0x77, 0xd6, 0xb4, 0xe1, 0xea, 0xf6, 0xd3, 0x7e, 0xbf, - 0xed, 0xfc, 0xf5, 0xbc, 0x59, 0xdf, 0x66, 0xbe, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x14, 0x52, - 0xaf, 0xef, 0x13, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/log_entry.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/log_entry.pb.go deleted file mode 100644 index 727a19b6..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/log_entry.pb.go +++ /dev/null @@ -1,258 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicecontrol/v1/log_entry.proto - -package servicecontrol - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_logging_type "google.golang.org/genproto/googleapis/logging/type" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" -import google_protobuf2 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// An individual log entry. -type LogEntry struct { - // Required. The log to which this log entry belongs. Examples: `"syslog"`, - // `"book_log"`. - Name string `protobuf:"bytes,10,opt,name=name" json:"name,omitempty"` - // The time the event described by the log entry occurred. If - // omitted, defaults to operation start time. - Timestamp *google_protobuf3.Timestamp `protobuf:"bytes,11,opt,name=timestamp" json:"timestamp,omitempty"` - // The severity of the log entry. The default value is - // `LogSeverity.DEFAULT`. - Severity google_logging_type.LogSeverity `protobuf:"varint,12,opt,name=severity,enum=google.logging.type.LogSeverity" json:"severity,omitempty"` - // A unique ID for the log entry used for deduplication. If omitted, - // the implementation will generate one based on operation_id. - InsertId string `protobuf:"bytes,4,opt,name=insert_id,json=insertId" json:"insert_id,omitempty"` - // A set of user-defined (key, value) data that provides additional - // information about the log entry. - Labels map[string]string `protobuf:"bytes,13,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The log entry payload, which can be one of multiple types. - // - // Types that are valid to be assigned to Payload: - // *LogEntry_ProtoPayload - // *LogEntry_TextPayload - // *LogEntry_StructPayload - Payload isLogEntry_Payload `protobuf_oneof:"payload"` -} - -func (m *LogEntry) Reset() { *m = LogEntry{} } -func (m *LogEntry) String() string { return proto.CompactTextString(m) } -func (*LogEntry) ProtoMessage() {} -func (*LogEntry) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -type isLogEntry_Payload interface { - isLogEntry_Payload() -} - -type LogEntry_ProtoPayload struct { - ProtoPayload *google_protobuf1.Any `protobuf:"bytes,2,opt,name=proto_payload,json=protoPayload,oneof"` -} -type LogEntry_TextPayload struct { - TextPayload string `protobuf:"bytes,3,opt,name=text_payload,json=textPayload,oneof"` -} -type LogEntry_StructPayload struct { - StructPayload *google_protobuf2.Struct `protobuf:"bytes,6,opt,name=struct_payload,json=structPayload,oneof"` -} - -func (*LogEntry_ProtoPayload) isLogEntry_Payload() {} -func (*LogEntry_TextPayload) isLogEntry_Payload() {} -func (*LogEntry_StructPayload) isLogEntry_Payload() {} - -func (m *LogEntry) GetPayload() isLogEntry_Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *LogEntry) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LogEntry) GetTimestamp() *google_protobuf3.Timestamp { - if m != nil { - return m.Timestamp - } - return nil -} - -func (m *LogEntry) GetSeverity() google_logging_type.LogSeverity { - if m != nil { - return m.Severity - } - return google_logging_type.LogSeverity_DEFAULT -} - -func (m *LogEntry) GetInsertId() string { - if m != nil { - return m.InsertId - } - return "" -} - -func (m *LogEntry) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *LogEntry) GetProtoPayload() *google_protobuf1.Any { - if x, ok := m.GetPayload().(*LogEntry_ProtoPayload); ok { - return x.ProtoPayload - } - return nil -} - -func (m *LogEntry) GetTextPayload() string { - if x, ok := m.GetPayload().(*LogEntry_TextPayload); ok { - return x.TextPayload - } - return "" -} - -func (m *LogEntry) GetStructPayload() *google_protobuf2.Struct { - if x, ok := m.GetPayload().(*LogEntry_StructPayload); ok { - return x.StructPayload - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*LogEntry) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _LogEntry_OneofMarshaler, _LogEntry_OneofUnmarshaler, _LogEntry_OneofSizer, []interface{}{ - (*LogEntry_ProtoPayload)(nil), - (*LogEntry_TextPayload)(nil), - (*LogEntry_StructPayload)(nil), - } -} - -func _LogEntry_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*LogEntry) - // payload - switch x := m.Payload.(type) { - case *LogEntry_ProtoPayload: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ProtoPayload); err != nil { - return err - } - case *LogEntry_TextPayload: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.TextPayload) - case *LogEntry_StructPayload: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StructPayload); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("LogEntry.Payload has unexpected type %T", x) - } - return nil -} - -func _LogEntry_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*LogEntry) - switch tag { - case 2: // payload.proto_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Any) - err := b.DecodeMessage(msg) - m.Payload = &LogEntry_ProtoPayload{msg} - return true, err - case 3: // payload.text_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Payload = &LogEntry_TextPayload{x} - return true, err - case 6: // payload.struct_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf2.Struct) - err := b.DecodeMessage(msg) - m.Payload = &LogEntry_StructPayload{msg} - return true, err - default: - return false, nil - } -} - -func _LogEntry_OneofSizer(msg proto.Message) (n int) { - m := msg.(*LogEntry) - // payload - switch x := m.Payload.(type) { - case *LogEntry_ProtoPayload: - s := proto.Size(x.ProtoPayload) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LogEntry_TextPayload: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.TextPayload))) - n += len(x.TextPayload) - case *LogEntry_StructPayload: - s := proto.Size(x.StructPayload) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*LogEntry)(nil), "google.api.servicecontrol.v1.LogEntry") -} - -func init() { proto.RegisterFile("google/api/servicecontrol/v1/log_entry.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 454 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4f, 0x8f, 0xd3, 0x30, - 0x10, 0xc5, 0x9b, 0xed, 0x52, 0x1a, 0xa7, 0x5d, 0x21, 0x6b, 0x25, 0x42, 0xa8, 0x44, 0x04, 0x12, - 0xea, 0x01, 0x39, 0xda, 0x72, 0x59, 0x58, 0x0e, 0x50, 0x09, 0xa9, 0xac, 0x7a, 0x58, 0x65, 0x39, - 0x71, 0xa9, 0xdc, 0xd6, 0x58, 0x16, 0xae, 0x27, 0x4a, 0xdc, 0x88, 0x9c, 0xf8, 0xbc, 0x7c, 0x0b, - 0x94, 0xb1, 0x53, 0xf6, 0x9f, 0xf6, 0xe6, 0xf1, 0xfb, 0xbd, 0x99, 0x79, 0x8e, 0x42, 0xde, 0x49, - 0x00, 0xa9, 0x45, 0xc6, 0x0b, 0x95, 0x55, 0xa2, 0xac, 0xd5, 0x46, 0x6c, 0xc0, 0xd8, 0x12, 0x74, - 0x56, 0x9f, 0x65, 0x1a, 0xe4, 0x4a, 0x18, 0x5b, 0x36, 0xac, 0x28, 0xc1, 0x02, 0x9d, 0x38, 0x9a, - 0xf1, 0x42, 0xb1, 0xdb, 0x34, 0xab, 0xcf, 0x92, 0xc9, 0x8d, 0x5e, 0xdc, 0x18, 0xb0, 0xdc, 0x2a, - 0x30, 0x95, 0xf3, 0x26, 0x6f, 0xbd, 0xaa, 0x41, 0x4a, 0x65, 0x64, 0x66, 0x9b, 0x02, 0x8b, 0x55, - 0x25, 0x6a, 0x51, 0x2a, 0xeb, 0x67, 0x24, 0x2f, 0x3c, 0x87, 0xd5, 0x7a, 0xff, 0x33, 0xe3, 0xa6, - 0x93, 0x26, 0x77, 0xa5, 0xca, 0x96, 0xfb, 0x8d, 0xf5, 0xea, 0xab, 0xbb, 0xaa, 0x55, 0x3b, 0x51, - 0x59, 0xbe, 0x2b, 0x1c, 0xf0, 0xfa, 0x6f, 0x9f, 0x0c, 0x97, 0x20, 0xbf, 0xb6, 0x81, 0x28, 0x25, - 0xc7, 0x86, 0xef, 0x44, 0x4c, 0xd2, 0x60, 0x1a, 0xe6, 0x78, 0xa6, 0xe7, 0x24, 0x3c, 0x78, 0xe2, - 0x28, 0x0d, 0xa6, 0xd1, 0x2c, 0x61, 0x3e, 0x72, 0xd7, 0x95, 0x7d, 0xef, 0x88, 0xfc, 0x3f, 0x4c, - 0x3f, 0x91, 0x61, 0x17, 0x23, 0x1e, 0xa5, 0xc1, 0xf4, 0x64, 0x96, 0x76, 0x46, 0x9f, 0x97, 0xb5, - 0x79, 0xd9, 0x12, 0xe4, 0xb5, 0xe7, 0xf2, 0x83, 0x83, 0xbe, 0x24, 0xa1, 0x32, 0x95, 0x28, 0xed, - 0x4a, 0x6d, 0xe3, 0x63, 0x5c, 0x68, 0xe8, 0x2e, 0xbe, 0x6d, 0xe9, 0x25, 0x19, 0x68, 0xbe, 0x16, - 0xba, 0x8a, 0xc7, 0x69, 0x7f, 0x1a, 0xcd, 0x66, 0xec, 0xb1, 0x8f, 0xc0, 0xba, 0x80, 0x6c, 0x89, - 0x26, 0x3c, 0xe7, 0xbe, 0x03, 0xbd, 0x20, 0x63, 0xcc, 0xb1, 0x2a, 0x78, 0xa3, 0x81, 0x6f, 0xe3, - 0x23, 0x0c, 0x79, 0x7a, 0x2f, 0xe4, 0x17, 0xd3, 0x2c, 0x7a, 0xf9, 0x08, 0xeb, 0x2b, 0xc7, 0xd2, - 0x37, 0x64, 0x64, 0xc5, 0x6f, 0x7b, 0xf0, 0xf6, 0xdb, 0x45, 0x17, 0xbd, 0x3c, 0x6a, 0x6f, 0x3b, - 0xe8, 0x33, 0x39, 0x71, 0x1f, 0xe5, 0x80, 0x0d, 0x70, 0xc4, 0xf3, 0x7b, 0x23, 0xae, 0x11, 0x5b, - 0xf4, 0xf2, 0xb1, 0x33, 0xf8, 0x0e, 0xc9, 0x07, 0x12, 0xdd, 0x58, 0x9d, 0x3e, 0x23, 0xfd, 0x5f, - 0xa2, 0x89, 0x03, 0x7c, 0x95, 0xf6, 0x48, 0x4f, 0xc9, 0x93, 0x9a, 0xeb, 0xbd, 0xc0, 0xe5, 0xc3, - 0xdc, 0x15, 0x1f, 0x8f, 0xce, 0x83, 0x79, 0x48, 0x9e, 0xfa, 0xa9, 0xf3, 0x3f, 0x24, 0xdd, 0xc0, - 0xee, 0xd1, 0xa7, 0x9a, 0x8f, 0xbb, 0xb7, 0xba, 0xc2, 0x98, 0xc1, 0x8f, 0x4b, 0x8f, 0x4b, 0xd0, - 0xdc, 0x48, 0x06, 0xa5, 0xcc, 0xa4, 0x30, 0xb8, 0x71, 0xe6, 0x24, 0x5e, 0xa8, 0xea, 0xe1, 0x7f, - 0xe5, 0xe2, 0xf6, 0xcd, 0x7a, 0x80, 0xb6, 0xf7, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x67, 0x50, - 0x6e, 0x13, 0x61, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/metric_value.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/metric_value.pb.go deleted file mode 100644 index ab7ccb1e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/metric_value.pb.go +++ /dev/null @@ -1,324 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicecontrol/v1/metric_value.proto - -package servicecontrol - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" -import _ "google.golang.org/genproto/googleapis/type/money" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Represents a single metric value. -type MetricValue struct { - // The labels describing the metric value. - // See comments on [google.api.servicecontrol.v1.Operation.labels][google.api.servicecontrol.v1.Operation.labels] for - // the overriding relationship. - Labels map[string]string `protobuf:"bytes,1,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The start of the time period over which this metric value's measurement - // applies. The time period has different semantics for different metric - // types (cumulative, delta, and gauge). See the metric definition - // documentation in the service configuration for details. - StartTime *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The end of the time period over which this metric value's measurement - // applies. - EndTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // The value. The type of value used in the request must - // agree with the metric definition in the service configuration, otherwise - // the MetricValue is rejected. - // - // Types that are valid to be assigned to Value: - // *MetricValue_BoolValue - // *MetricValue_Int64Value - // *MetricValue_DoubleValue - // *MetricValue_StringValue - // *MetricValue_DistributionValue - Value isMetricValue_Value `protobuf_oneof:"value"` -} - -func (m *MetricValue) Reset() { *m = MetricValue{} } -func (m *MetricValue) String() string { return proto.CompactTextString(m) } -func (*MetricValue) ProtoMessage() {} -func (*MetricValue) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -type isMetricValue_Value interface { - isMetricValue_Value() -} - -type MetricValue_BoolValue struct { - BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,oneof"` -} -type MetricValue_Int64Value struct { - Int64Value int64 `protobuf:"varint,5,opt,name=int64_value,json=int64Value,oneof"` -} -type MetricValue_DoubleValue struct { - DoubleValue float64 `protobuf:"fixed64,6,opt,name=double_value,json=doubleValue,oneof"` -} -type MetricValue_StringValue struct { - StringValue string `protobuf:"bytes,7,opt,name=string_value,json=stringValue,oneof"` -} -type MetricValue_DistributionValue struct { - DistributionValue *Distribution `protobuf:"bytes,8,opt,name=distribution_value,json=distributionValue,oneof"` -} - -func (*MetricValue_BoolValue) isMetricValue_Value() {} -func (*MetricValue_Int64Value) isMetricValue_Value() {} -func (*MetricValue_DoubleValue) isMetricValue_Value() {} -func (*MetricValue_StringValue) isMetricValue_Value() {} -func (*MetricValue_DistributionValue) isMetricValue_Value() {} - -func (m *MetricValue) GetValue() isMetricValue_Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *MetricValue) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *MetricValue) GetStartTime() *google_protobuf3.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *MetricValue) GetEndTime() *google_protobuf3.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *MetricValue) GetBoolValue() bool { - if x, ok := m.GetValue().(*MetricValue_BoolValue); ok { - return x.BoolValue - } - return false -} - -func (m *MetricValue) GetInt64Value() int64 { - if x, ok := m.GetValue().(*MetricValue_Int64Value); ok { - return x.Int64Value - } - return 0 -} - -func (m *MetricValue) GetDoubleValue() float64 { - if x, ok := m.GetValue().(*MetricValue_DoubleValue); ok { - return x.DoubleValue - } - return 0 -} - -func (m *MetricValue) GetStringValue() string { - if x, ok := m.GetValue().(*MetricValue_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *MetricValue) GetDistributionValue() *Distribution { - if x, ok := m.GetValue().(*MetricValue_DistributionValue); ok { - return x.DistributionValue - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*MetricValue) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _MetricValue_OneofMarshaler, _MetricValue_OneofUnmarshaler, _MetricValue_OneofSizer, []interface{}{ - (*MetricValue_BoolValue)(nil), - (*MetricValue_Int64Value)(nil), - (*MetricValue_DoubleValue)(nil), - (*MetricValue_StringValue)(nil), - (*MetricValue_DistributionValue)(nil), - } -} - -func _MetricValue_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*MetricValue) - // value - switch x := m.Value.(type) { - case *MetricValue_BoolValue: - t := uint64(0) - if x.BoolValue { - t = 1 - } - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *MetricValue_Int64Value: - b.EncodeVarint(5<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Int64Value)) - case *MetricValue_DoubleValue: - b.EncodeVarint(6<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.DoubleValue)) - case *MetricValue_StringValue: - b.EncodeVarint(7<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *MetricValue_DistributionValue: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DistributionValue); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("MetricValue.Value has unexpected type %T", x) - } - return nil -} - -func _MetricValue_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*MetricValue) - switch tag { - case 4: // value.bool_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &MetricValue_BoolValue{x != 0} - return true, err - case 5: // value.int64_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &MetricValue_Int64Value{int64(x)} - return true, err - case 6: // value.double_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Value = &MetricValue_DoubleValue{math.Float64frombits(x)} - return true, err - case 7: // value.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Value = &MetricValue_StringValue{x} - return true, err - case 8: // value.distribution_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Distribution) - err := b.DecodeMessage(msg) - m.Value = &MetricValue_DistributionValue{msg} - return true, err - default: - return false, nil - } -} - -func _MetricValue_OneofSizer(msg proto.Message) (n int) { - m := msg.(*MetricValue) - // value - switch x := m.Value.(type) { - case *MetricValue_BoolValue: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += 1 - case *MetricValue_Int64Value: - n += proto.SizeVarint(5<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Int64Value)) - case *MetricValue_DoubleValue: - n += proto.SizeVarint(6<<3 | proto.WireFixed64) - n += 8 - case *MetricValue_StringValue: - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *MetricValue_DistributionValue: - s := proto.Size(x.DistributionValue) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents a set of metric values in the same metric. -// Each metric value in the set should have a unique combination of start time, -// end time, and label values. -type MetricValueSet struct { - // The metric name defined in the service configuration. - MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName" json:"metric_name,omitempty"` - // The values in this metric. - MetricValues []*MetricValue `protobuf:"bytes,2,rep,name=metric_values,json=metricValues" json:"metric_values,omitempty"` -} - -func (m *MetricValueSet) Reset() { *m = MetricValueSet{} } -func (m *MetricValueSet) String() string { return proto.CompactTextString(m) } -func (*MetricValueSet) ProtoMessage() {} -func (*MetricValueSet) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *MetricValueSet) GetMetricName() string { - if m != nil { - return m.MetricName - } - return "" -} - -func (m *MetricValueSet) GetMetricValues() []*MetricValue { - if m != nil { - return m.MetricValues - } - return nil -} - -func init() { - proto.RegisterType((*MetricValue)(nil), "google.api.servicecontrol.v1.MetricValue") - proto.RegisterType((*MetricValueSet)(nil), "google.api.servicecontrol.v1.MetricValueSet") -} - -func init() { proto.RegisterFile("google/api/servicecontrol/v1/metric_value.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 482 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcf, 0x8b, 0xd3, 0x40, - 0x14, 0xc7, 0x3b, 0x8d, 0xdb, 0x1f, 0x2f, 0xab, 0x68, 0x14, 0x0c, 0x65, 0xa1, 0x71, 0xbd, 0x44, - 0x0f, 0x13, 0x76, 0x75, 0xc5, 0xd5, 0x5b, 0x51, 0x28, 0xe2, 0x2e, 0x4b, 0x14, 0x0f, 0x7a, 0x58, - 0x26, 0xed, 0x33, 0x0c, 0x26, 0x33, 0x21, 0x33, 0x2d, 0xf4, 0xe8, 0xcd, 0x3f, 0xd9, 0x8b, 0x20, - 0xf3, 0xa3, 0x9a, 0x82, 0xd4, 0xbd, 0xe5, 0x7d, 0xf3, 0xfd, 0xbc, 0x7c, 0x27, 0xef, 0x0d, 0x64, - 0xa5, 0x94, 0x65, 0x85, 0x19, 0x6b, 0x78, 0xa6, 0xb0, 0x5d, 0xf3, 0x05, 0x2e, 0xa4, 0xd0, 0xad, - 0xac, 0xb2, 0xf5, 0x49, 0x56, 0xa3, 0x6e, 0xf9, 0xe2, 0x7a, 0xcd, 0xaa, 0x15, 0xd2, 0xa6, 0x95, - 0x5a, 0x46, 0x47, 0x0e, 0xa0, 0xac, 0xe1, 0x74, 0x17, 0xa0, 0xeb, 0x93, 0xc9, 0x51, 0xa7, 0x1d, - 0x13, 0x42, 0x6a, 0xa6, 0xb9, 0x14, 0xca, 0xb1, 0x93, 0xfd, 0x1f, 0x5b, 0x72, 0xa5, 0x5b, 0x5e, - 0xac, 0x0c, 0xe1, 0x81, 0xa9, 0x07, 0x6c, 0x55, 0xac, 0xbe, 0x66, 0x9a, 0xd7, 0xa8, 0x34, 0xab, - 0x1b, 0x6f, 0x78, 0xe8, 0x0d, 0x7a, 0xd3, 0x60, 0x56, 0x4b, 0x81, 0x1b, 0xf7, 0xe2, 0xf8, 0x57, - 0x00, 0xe1, 0x85, 0x4d, 0xff, 0xc9, 0x84, 0x8f, 0x2e, 0x60, 0x50, 0xb1, 0x02, 0x2b, 0x15, 0x93, - 0x24, 0x48, 0xc3, 0xd3, 0x33, 0xba, 0xef, 0x1c, 0xb4, 0x83, 0xd2, 0xf7, 0x96, 0x7b, 0x2b, 0x74, - 0xbb, 0xc9, 0x7d, 0x93, 0xe8, 0x1c, 0x40, 0x69, 0xd6, 0xea, 0x6b, 0x13, 0x28, 0xee, 0x27, 0x24, - 0x0d, 0x4f, 0x27, 0xdb, 0x96, 0xdb, 0xb4, 0xf4, 0xe3, 0x36, 0x6d, 0x3e, 0xb6, 0x6e, 0x53, 0x47, - 0x67, 0x30, 0x42, 0xb1, 0x74, 0x60, 0xf0, 0x5f, 0x70, 0x88, 0x62, 0x69, 0xb1, 0x29, 0x40, 0x21, - 0x65, 0xe5, 0x66, 0x11, 0xdf, 0x4a, 0x48, 0x3a, 0x9a, 0xf7, 0xf2, 0xb1, 0xd1, 0xdc, 0x09, 0x1f, - 0x41, 0xc8, 0x85, 0x7e, 0xf1, 0xdc, 0x3b, 0x0e, 0x12, 0x92, 0x06, 0xf3, 0x5e, 0x0e, 0x56, 0x74, - 0x96, 0xc7, 0x70, 0xb8, 0x94, 0xab, 0xa2, 0x42, 0xef, 0x19, 0x24, 0x24, 0x25, 0xf3, 0x5e, 0x1e, - 0x3a, 0xf5, 0x8f, 0xc9, 0xcc, 0x41, 0x94, 0xde, 0x34, 0x4c, 0x48, 0x3a, 0x36, 0x26, 0xa7, 0x3a, - 0xd3, 0x17, 0x88, 0xba, 0xe3, 0xf2, 0xd6, 0x91, 0x3d, 0xce, 0xd3, 0xfd, 0xbf, 0xf6, 0x4d, 0x87, - 0x9b, 0xf7, 0xf2, 0x7b, 0xdd, 0x3e, 0xb6, 0xf9, 0xe4, 0x1c, 0xc2, 0xce, 0x3f, 0x8f, 0xee, 0x42, - 0xf0, 0x0d, 0x37, 0x31, 0x31, 0x39, 0x72, 0xf3, 0x18, 0x3d, 0x80, 0x03, 0xf7, 0xc1, 0xbe, 0xd5, - 0x5c, 0xf1, 0xaa, 0xff, 0x92, 0xcc, 0x86, 0xfe, 0xcd, 0xf1, 0x77, 0x02, 0x77, 0x3a, 0x43, 0xfc, - 0x80, 0x3a, 0x9a, 0x42, 0xe8, 0xf7, 0x59, 0xb0, 0x1a, 0x7d, 0x3f, 0x70, 0xd2, 0x25, 0xab, 0x31, - 0xba, 0x84, 0xdb, 0xdd, 0x85, 0x57, 0x71, 0xdf, 0xae, 0xca, 0x93, 0x1b, 0xaf, 0x4a, 0x7e, 0x58, - 0xff, 0x2d, 0xd4, 0xec, 0x07, 0x81, 0x64, 0x21, 0xeb, 0xbd, 0xf8, 0xec, 0xfe, 0x6e, 0xca, 0x2b, - 0xb3, 0x02, 0x57, 0xe4, 0xf3, 0x3b, 0x0f, 0x95, 0xb2, 0x62, 0xa2, 0xa4, 0xb2, 0x2d, 0xb3, 0x12, - 0x85, 0x5d, 0x10, 0x7f, 0x8b, 0x58, 0xc3, 0xd5, 0xbf, 0x6f, 0xd2, 0xeb, 0x5d, 0xe5, 0x27, 0x21, - 0xc5, 0xc0, 0x92, 0xcf, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x00, 0x1a, 0xde, 0xef, 0x03, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/operation.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/operation.pb.go deleted file mode 100644 index f94c2e7b..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/operation.pb.go +++ /dev/null @@ -1,215 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicecontrol/v1/operation.proto - -package servicecontrol - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Defines the importance of the data contained in the operation. -type Operation_Importance int32 - -const ( - // The API implementation may cache and aggregate the data. - // The data may be lost when rare and unexpected system failures occur. - Operation_LOW Operation_Importance = 0 - // The API implementation doesn't cache and aggregate the data. - // If the method returns successfully, it's guaranteed that the data has - // been persisted in durable storage. - Operation_HIGH Operation_Importance = 1 -) - -var Operation_Importance_name = map[int32]string{ - 0: "LOW", - 1: "HIGH", -} -var Operation_Importance_value = map[string]int32{ - "LOW": 0, - "HIGH": 1, -} - -func (x Operation_Importance) String() string { - return proto.EnumName(Operation_Importance_name, int32(x)) -} -func (Operation_Importance) EnumDescriptor() ([]byte, []int) { return fileDescriptor4, []int{0, 0} } - -// Represents information regarding an operation. -type Operation struct { - // Identity of the operation. This must be unique within the scope of the - // service that generated the operation. If the service calls - // Check() and Report() on the same operation, the two calls should carry - // the same id. - // - // UUID version 4 is recommended, though not required. - // In scenarios where an operation is computed from existing information - // and an idempotent id is desirable for deduplication purpose, UUID version 5 - // is recommended. See RFC 4122 for details. - OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // Fully qualified name of the operation. Reserved for future use. - OperationName string `protobuf:"bytes,2,opt,name=operation_name,json=operationName" json:"operation_name,omitempty"` - // Identity of the consumer who is using the service. - // This field should be filled in for the operations initiated by a - // consumer, but not for service-initiated operations that are - // not related to a specific consumer. - // - // This can be in one of the following formats: - // project:<project_id>, - // project_number:<project_number>, - // api_key:<api_key>. - ConsumerId string `protobuf:"bytes,3,opt,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"` - // Required. Start time of the operation. - StartTime *google_protobuf3.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // End time of the operation. - // Required when the operation is used in [ServiceController.Report][google.api.servicecontrol.v1.ServiceController.Report], - // but optional when the operation is used in [ServiceController.Check][google.api.servicecontrol.v1.ServiceController.Check]. - EndTime *google_protobuf3.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Labels describing the operation. Only the following labels are allowed: - // - // - Labels describing monitored resources as defined in - // the service configuration. - // - Default labels of metric values. When specified, labels defined in the - // metric value override these default. - // - The following labels defined by Google Cloud Platform: - // - `cloud.googleapis.com/location` describing the location where the - // operation happened, - // - `servicecontrol.googleapis.com/user_agent` describing the user agent - // of the API request, - // - `servicecontrol.googleapis.com/service_agent` describing the service - // used to handle the API request (e.g. ESP), - // - `servicecontrol.googleapis.com/platform` describing the platform - // where the API is served (e.g. GAE, GCE, GKE). - Labels map[string]string `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Represents information about this operation. Each MetricValueSet - // corresponds to a metric defined in the service configuration. - // The data type used in the MetricValueSet must agree with - // the data type specified in the metric definition. - // - // Within a single operation, it is not allowed to have more than one - // MetricValue instances that have the same metric names and identical - // label value combinations. If a request has such duplicated MetricValue - // instances, the entire request is rejected with - // an invalid argument error. - MetricValueSets []*MetricValueSet `protobuf:"bytes,7,rep,name=metric_value_sets,json=metricValueSets" json:"metric_value_sets,omitempty"` - // Represents information to be logged. - LogEntries []*LogEntry `protobuf:"bytes,8,rep,name=log_entries,json=logEntries" json:"log_entries,omitempty"` - // DO NOT USE. This is an experimental field. - Importance Operation_Importance `protobuf:"varint,11,opt,name=importance,enum=google.api.servicecontrol.v1.Operation_Importance" json:"importance,omitempty"` -} - -func (m *Operation) Reset() { *m = Operation{} } -func (m *Operation) String() string { return proto.CompactTextString(m) } -func (*Operation) ProtoMessage() {} -func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *Operation) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *Operation) GetOperationName() string { - if m != nil { - return m.OperationName - } - return "" -} - -func (m *Operation) GetConsumerId() string { - if m != nil { - return m.ConsumerId - } - return "" -} - -func (m *Operation) GetStartTime() *google_protobuf3.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *Operation) GetEndTime() *google_protobuf3.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *Operation) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *Operation) GetMetricValueSets() []*MetricValueSet { - if m != nil { - return m.MetricValueSets - } - return nil -} - -func (m *Operation) GetLogEntries() []*LogEntry { - if m != nil { - return m.LogEntries - } - return nil -} - -func (m *Operation) GetImportance() Operation_Importance { - if m != nil { - return m.Importance - } - return Operation_LOW -} - -func init() { - proto.RegisterType((*Operation)(nil), "google.api.servicecontrol.v1.Operation") - proto.RegisterEnum("google.api.servicecontrol.v1.Operation_Importance", Operation_Importance_name, Operation_Importance_value) -} - -func init() { proto.RegisterFile("google/api/servicecontrol/v1/operation.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 483 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcf, 0x6b, 0x13, 0x41, - 0x14, 0xc7, 0x9d, 0xa6, 0xf9, 0xf5, 0x56, 0x63, 0x1c, 0x3c, 0x2c, 0xa1, 0x90, 0x58, 0x50, 0x72, - 0x28, 0xb3, 0x34, 0x45, 0xb0, 0x7a, 0x2b, 0x48, 0x1b, 0x8d, 0xb6, 0xac, 0xa2, 0xe2, 0x25, 0x4c, - 0x36, 0xcf, 0x65, 0x70, 0x77, 0x66, 0x99, 0x99, 0x04, 0x7a, 0xf6, 0xe2, 0x9f, 0xec, 0x51, 0x76, - 0xf6, 0x47, 0x13, 0x90, 0xb5, 0xb7, 0x7d, 0x8f, 0xef, 0xe7, 0xbb, 0xdf, 0x79, 0x6f, 0x06, 0x4e, - 0x62, 0xa5, 0xe2, 0x04, 0x03, 0x9e, 0x89, 0xc0, 0xa0, 0xde, 0x8a, 0x08, 0x23, 0x25, 0xad, 0x56, - 0x49, 0xb0, 0x3d, 0x0d, 0x54, 0x86, 0x9a, 0x5b, 0xa1, 0x24, 0xcb, 0xb4, 0xb2, 0x8a, 0x1e, 0x15, - 0x6a, 0xc6, 0x33, 0xc1, 0xf6, 0xd5, 0x6c, 0x7b, 0x3a, 0x3a, 0xda, 0xf1, 0xe2, 0x52, 0x2a, 0xeb, - 0x50, 0x53, 0xb0, 0xa3, 0xe6, 0x3f, 0x25, 0x2a, 0x5e, 0xa2, 0xb4, 0xfa, 0xb6, 0x54, 0x07, 0x8d, - 0xea, 0x14, 0xad, 0x16, 0xd1, 0x72, 0xcb, 0x93, 0x0d, 0x96, 0xc0, 0xb8, 0x04, 0x5c, 0xb5, 0xda, - 0xfc, 0x08, 0xac, 0x48, 0xd1, 0x58, 0x9e, 0x66, 0x85, 0xe0, 0xf8, 0x77, 0x1b, 0xfa, 0xd7, 0xd5, - 0x79, 0xe8, 0x33, 0x78, 0x58, 0x1f, 0x6e, 0x29, 0xd6, 0x3e, 0x99, 0x90, 0x69, 0x3f, 0xf4, 0xea, - 0xde, 0x7c, 0x4d, 0x9f, 0xc3, 0xe0, 0x4e, 0x22, 0x79, 0x8a, 0xfe, 0x81, 0x13, 0x3d, 0xaa, 0xbb, - 0x1f, 0x79, 0x8a, 0x74, 0x0c, 0x5e, 0xa4, 0xa4, 0xd9, 0xa4, 0xa8, 0x73, 0xa3, 0x96, 0xd3, 0x40, - 0xd5, 0x9a, 0xaf, 0xe9, 0x39, 0x80, 0xb1, 0x5c, 0xdb, 0x65, 0x9e, 0xc8, 0x3f, 0x9c, 0x90, 0xa9, - 0x37, 0x1b, 0xb1, 0x72, 0x92, 0x55, 0x5c, 0xf6, 0xb9, 0x8a, 0x1b, 0xf6, 0x9d, 0x3a, 0xaf, 0xe9, - 0x4b, 0xe8, 0xa1, 0x5c, 0x17, 0x60, 0xfb, 0xbf, 0x60, 0x17, 0xe5, 0xda, 0x61, 0xef, 0xa1, 0x93, - 0xf0, 0x15, 0x26, 0xc6, 0xef, 0x4c, 0x5a, 0x53, 0x6f, 0x76, 0xc6, 0x9a, 0xf6, 0xc6, 0xea, 0xa9, - 0xb0, 0x85, 0xa3, 0xde, 0xe6, 0x7b, 0x08, 0x4b, 0x0b, 0xfa, 0x0d, 0x9e, 0xec, 0x8e, 0x7b, 0x69, - 0xd0, 0x1a, 0xbf, 0xeb, 0x7c, 0x4f, 0x9a, 0x7d, 0x3f, 0x38, 0xec, 0x4b, 0x4e, 0x7d, 0x42, 0x1b, - 0x3e, 0x4e, 0xf7, 0x6a, 0x43, 0x2f, 0xc1, 0xab, 0xd6, 0x2e, 0xd0, 0xf8, 0x3d, 0xe7, 0xf9, 0xa2, - 0xd9, 0x73, 0xa1, 0xe2, 0x22, 0x1e, 0x24, 0xc5, 0x97, 0x40, 0x43, 0x43, 0x00, 0x91, 0x66, 0x4a, - 0x5b, 0x2e, 0x23, 0xf4, 0xbd, 0x09, 0x99, 0x0e, 0x66, 0xb3, 0xfb, 0x9e, 0x79, 0x5e, 0x93, 0xe1, - 0x8e, 0xcb, 0xe8, 0x1c, 0xbc, 0x9d, 0x69, 0xd0, 0x21, 0xb4, 0x7e, 0xe2, 0x6d, 0x79, 0x4d, 0xf2, - 0x4f, 0xfa, 0x14, 0xda, 0x6e, 0x20, 0xe5, 0xad, 0x28, 0x8a, 0xd7, 0x07, 0xaf, 0xc8, 0xf1, 0x18, - 0xe0, 0xce, 0x94, 0x76, 0xa1, 0xb5, 0xb8, 0xfe, 0x3a, 0x7c, 0x40, 0x7b, 0x70, 0x78, 0x35, 0xbf, - 0xbc, 0x1a, 0x92, 0x8b, 0x5f, 0x04, 0x26, 0x91, 0x4a, 0x1b, 0x13, 0x5e, 0x0c, 0xea, 0x88, 0x37, - 0xf9, 0xaa, 0x6f, 0xc8, 0xf7, 0x77, 0xa5, 0x3e, 0x56, 0x09, 0x97, 0x31, 0x53, 0x3a, 0x0e, 0x62, - 0x94, 0xee, 0x22, 0x94, 0xcf, 0x85, 0x67, 0xc2, 0xfc, 0xfb, 0xc9, 0xbc, 0xd9, 0xef, 0xfc, 0x21, - 0x64, 0xd5, 0x71, 0xe4, 0xd9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x9c, 0xc2, 0x5d, 0x03, - 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/quota_controller.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/quota_controller.pb.go deleted file mode 100644 index 70f9c500..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/quota_controller.pb.go +++ /dev/null @@ -1,489 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicecontrol/v1/quota_controller.proto - -package servicecontrol - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Supported quota modes. -type QuotaOperation_QuotaMode int32 - -const ( - // Guard against implicit default. Must not be used. - QuotaOperation_UNSPECIFIED QuotaOperation_QuotaMode = 0 - // For AllocateQuota request, allocates quota for the amount specified in - // the service configuration or specified using the quota metrics. If the - // amount is higher than the available quota, allocation error will be - // returned and no quota will be allocated. - QuotaOperation_NORMAL QuotaOperation_QuotaMode = 1 - // The operation allocates quota for the amount specified in the service - // configuration or specified using the quota metrics. If the amount is - // higher than the available quota, request does not fail but all available - // quota will be allocated. - QuotaOperation_BEST_EFFORT QuotaOperation_QuotaMode = 2 - // For AllocateQuota request, only checks if there is enough quota - // available and does not change the available quota. No lock is placed on - // the available quota either. - QuotaOperation_CHECK_ONLY QuotaOperation_QuotaMode = 3 -) - -var QuotaOperation_QuotaMode_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "NORMAL", - 2: "BEST_EFFORT", - 3: "CHECK_ONLY", -} -var QuotaOperation_QuotaMode_value = map[string]int32{ - "UNSPECIFIED": 0, - "NORMAL": 1, - "BEST_EFFORT": 2, - "CHECK_ONLY": 3, -} - -func (x QuotaOperation_QuotaMode) String() string { - return proto.EnumName(QuotaOperation_QuotaMode_name, int32(x)) -} -func (QuotaOperation_QuotaMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{1, 0} } - -// Error codes related to project config validations are deprecated since the -// quota controller methods do not perform these validations. Instead services -// have to call the Check method, without quota_properties field, to perform -// these validations before calling the quota controller methods. These -// methods check only for project deletion to be wipe out compliant. -type QuotaError_Code int32 - -const ( - // This is never used. - QuotaError_UNSPECIFIED QuotaError_Code = 0 - // Quota allocation failed. - // Same as [google.rpc.Code.RESOURCE_EXHAUSTED][]. - QuotaError_RESOURCE_EXHAUSTED QuotaError_Code = 8 - // Consumer cannot access the service because the service requires active - // billing. - QuotaError_BILLING_NOT_ACTIVE QuotaError_Code = 107 - // Consumer's project has been marked as deleted (soft deletion). - QuotaError_PROJECT_DELETED QuotaError_Code = 108 - // Specified API key is invalid. - QuotaError_API_KEY_INVALID QuotaError_Code = 105 - // Specified API Key has expired. - QuotaError_API_KEY_EXPIRED QuotaError_Code = 112 -) - -var QuotaError_Code_name = map[int32]string{ - 0: "UNSPECIFIED", - 8: "RESOURCE_EXHAUSTED", - 107: "BILLING_NOT_ACTIVE", - 108: "PROJECT_DELETED", - 105: "API_KEY_INVALID", - 112: "API_KEY_EXPIRED", -} -var QuotaError_Code_value = map[string]int32{ - "UNSPECIFIED": 0, - "RESOURCE_EXHAUSTED": 8, - "BILLING_NOT_ACTIVE": 107, - "PROJECT_DELETED": 108, - "API_KEY_INVALID": 105, - "API_KEY_EXPIRED": 112, -} - -func (x QuotaError_Code) String() string { - return proto.EnumName(QuotaError_Code_name, int32(x)) -} -func (QuotaError_Code) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{3, 0} } - -// Request message for the AllocateQuota method. -type AllocateQuotaRequest struct { - // Name of the service as specified in the service configuration. For example, - // `"pubsub.googleapis.com"`. - // - // See [google.api.Service][google.api.Service] for the definition of a service name. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // Operation that describes the quota allocation. - AllocateOperation *QuotaOperation `protobuf:"bytes,2,opt,name=allocate_operation,json=allocateOperation" json:"allocate_operation,omitempty"` - // Specifies which version of service configuration should be used to process - // the request. If unspecified or no matching version can be found, the latest - // one will be used. - ServiceConfigId string `protobuf:"bytes,4,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"` -} - -func (m *AllocateQuotaRequest) Reset() { *m = AllocateQuotaRequest{} } -func (m *AllocateQuotaRequest) String() string { return proto.CompactTextString(m) } -func (*AllocateQuotaRequest) ProtoMessage() {} -func (*AllocateQuotaRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -func (m *AllocateQuotaRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *AllocateQuotaRequest) GetAllocateOperation() *QuotaOperation { - if m != nil { - return m.AllocateOperation - } - return nil -} - -func (m *AllocateQuotaRequest) GetServiceConfigId() string { - if m != nil { - return m.ServiceConfigId - } - return "" -} - -// Represents information regarding a quota operation. -type QuotaOperation struct { - // Identity of the operation. This is expected to be unique within the scope - // of the service that generated the operation, and guarantees idempotency in - // case of retries. - // - // UUID version 4 is recommended, though not required. In scenarios where an - // operation is computed from existing information and an idempotent id is - // desirable for deduplication purpose, UUID version 5 is recommended. See - // RFC 4122 for details. - OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // Fully qualified name of the API method for which this quota operation is - // requested. This name is used for matching quota rules or metric rules and - // billing status rules defined in service configuration. This field is not - // required if the quota operation is performed on non-API resources. - // - // Example of an RPC method name: - // google.example.library.v1.LibraryService.CreateShelf - MethodName string `protobuf:"bytes,2,opt,name=method_name,json=methodName" json:"method_name,omitempty"` - // Identity of the consumer for whom this quota operation is being performed. - // - // This can be in one of the following formats: - // project:<project_id>, - // project_number:<project_number>, - // api_key:<api_key>. - ConsumerId string `protobuf:"bytes,3,opt,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"` - // Labels describing the operation. - Labels map[string]string `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Represents information about this operation. Each MetricValueSet - // corresponds to a metric defined in the service configuration. - // The data type used in the MetricValueSet must agree with - // the data type specified in the metric definition. - // - // Within a single operation, it is not allowed to have more than one - // MetricValue instances that have the same metric names and identical - // label value combinations. If a request has such duplicated MetricValue - // instances, the entire request is rejected with - // an invalid argument error. - QuotaMetrics []*MetricValueSet `protobuf:"bytes,5,rep,name=quota_metrics,json=quotaMetrics" json:"quota_metrics,omitempty"` - // Quota mode for this operation. - QuotaMode QuotaOperation_QuotaMode `protobuf:"varint,6,opt,name=quota_mode,json=quotaMode,enum=google.api.servicecontrol.v1.QuotaOperation_QuotaMode" json:"quota_mode,omitempty"` -} - -func (m *QuotaOperation) Reset() { *m = QuotaOperation{} } -func (m *QuotaOperation) String() string { return proto.CompactTextString(m) } -func (*QuotaOperation) ProtoMessage() {} -func (*QuotaOperation) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} } - -func (m *QuotaOperation) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *QuotaOperation) GetMethodName() string { - if m != nil { - return m.MethodName - } - return "" -} - -func (m *QuotaOperation) GetConsumerId() string { - if m != nil { - return m.ConsumerId - } - return "" -} - -func (m *QuotaOperation) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *QuotaOperation) GetQuotaMetrics() []*MetricValueSet { - if m != nil { - return m.QuotaMetrics - } - return nil -} - -func (m *QuotaOperation) GetQuotaMode() QuotaOperation_QuotaMode { - if m != nil { - return m.QuotaMode - } - return QuotaOperation_UNSPECIFIED -} - -// Response message for the AllocateQuota method. -type AllocateQuotaResponse struct { - // The same operation_id value used in the AllocateQuotaRequest. Used for - // logging and diagnostics purposes. - OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // Indicates the decision of the allocate. - AllocateErrors []*QuotaError `protobuf:"bytes,2,rep,name=allocate_errors,json=allocateErrors" json:"allocate_errors,omitempty"` - // Quota metrics to indicate the result of allocation. Depending on the - // request, one or more of the following metrics will be included: - // - // 1. Per quota group or per quota metric incremental usage will be specified - // using the following delta metric : - // "serviceruntime.googleapis.com/api/consumer/quota_used_count" - // - // 2. The quota limit reached condition will be specified using the following - // boolean metric : - // "serviceruntime.googleapis.com/quota/exceeded" - QuotaMetrics []*MetricValueSet `protobuf:"bytes,3,rep,name=quota_metrics,json=quotaMetrics" json:"quota_metrics,omitempty"` - // ID of the actual config used to process the request. - ServiceConfigId string `protobuf:"bytes,4,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"` -} - -func (m *AllocateQuotaResponse) Reset() { *m = AllocateQuotaResponse{} } -func (m *AllocateQuotaResponse) String() string { return proto.CompactTextString(m) } -func (*AllocateQuotaResponse) ProtoMessage() {} -func (*AllocateQuotaResponse) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{2} } - -func (m *AllocateQuotaResponse) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *AllocateQuotaResponse) GetAllocateErrors() []*QuotaError { - if m != nil { - return m.AllocateErrors - } - return nil -} - -func (m *AllocateQuotaResponse) GetQuotaMetrics() []*MetricValueSet { - if m != nil { - return m.QuotaMetrics - } - return nil -} - -func (m *AllocateQuotaResponse) GetServiceConfigId() string { - if m != nil { - return m.ServiceConfigId - } - return "" -} - -// Represents error information for [QuotaOperation][google.api.servicecontrol.v1.QuotaOperation]. -type QuotaError struct { - // Error code. - Code QuotaError_Code `protobuf:"varint,1,opt,name=code,enum=google.api.servicecontrol.v1.QuotaError_Code" json:"code,omitempty"` - // Subject to whom this error applies. See the specific enum for more details - // on this field. For example, "clientip:<ip address of client>" or - // "project:<Google developer project id>". - Subject string `protobuf:"bytes,2,opt,name=subject" json:"subject,omitempty"` - // Free-form text that provides details on the cause of the error. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (m *QuotaError) Reset() { *m = QuotaError{} } -func (m *QuotaError) String() string { return proto.CompactTextString(m) } -func (*QuotaError) ProtoMessage() {} -func (*QuotaError) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{3} } - -func (m *QuotaError) GetCode() QuotaError_Code { - if m != nil { - return m.Code - } - return QuotaError_UNSPECIFIED -} - -func (m *QuotaError) GetSubject() string { - if m != nil { - return m.Subject - } - return "" -} - -func (m *QuotaError) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func init() { - proto.RegisterType((*AllocateQuotaRequest)(nil), "google.api.servicecontrol.v1.AllocateQuotaRequest") - proto.RegisterType((*QuotaOperation)(nil), "google.api.servicecontrol.v1.QuotaOperation") - proto.RegisterType((*AllocateQuotaResponse)(nil), "google.api.servicecontrol.v1.AllocateQuotaResponse") - proto.RegisterType((*QuotaError)(nil), "google.api.servicecontrol.v1.QuotaError") - proto.RegisterEnum("google.api.servicecontrol.v1.QuotaOperation_QuotaMode", QuotaOperation_QuotaMode_name, QuotaOperation_QuotaMode_value) - proto.RegisterEnum("google.api.servicecontrol.v1.QuotaError_Code", QuotaError_Code_name, QuotaError_Code_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for QuotaController service - -type QuotaControllerClient interface { - // Attempts to allocate quota for the specified consumer. It should be called - // before the operation is executed. - // - // This method requires the `servicemanagement.services.quota` - // permission on the specified service. For more information, see - // [Cloud IAM](https://cloud.google.com/iam). - // - // **NOTE:** The client **must** fail-open on server errors `INTERNAL`, - // `UNKNOWN`, `DEADLINE_EXCEEDED`, and `UNAVAILABLE`. To ensure system - // reliability, the server may inject these errors to prohibit any hard - // dependency on the quota functionality. - AllocateQuota(ctx context.Context, in *AllocateQuotaRequest, opts ...grpc.CallOption) (*AllocateQuotaResponse, error) -} - -type quotaControllerClient struct { - cc *grpc.ClientConn -} - -func NewQuotaControllerClient(cc *grpc.ClientConn) QuotaControllerClient { - return &quotaControllerClient{cc} -} - -func (c *quotaControllerClient) AllocateQuota(ctx context.Context, in *AllocateQuotaRequest, opts ...grpc.CallOption) (*AllocateQuotaResponse, error) { - out := new(AllocateQuotaResponse) - err := grpc.Invoke(ctx, "/google.api.servicecontrol.v1.QuotaController/AllocateQuota", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for QuotaController service - -type QuotaControllerServer interface { - // Attempts to allocate quota for the specified consumer. It should be called - // before the operation is executed. - // - // This method requires the `servicemanagement.services.quota` - // permission on the specified service. For more information, see - // [Cloud IAM](https://cloud.google.com/iam). - // - // **NOTE:** The client **must** fail-open on server errors `INTERNAL`, - // `UNKNOWN`, `DEADLINE_EXCEEDED`, and `UNAVAILABLE`. To ensure system - // reliability, the server may inject these errors to prohibit any hard - // dependency on the quota functionality. - AllocateQuota(context.Context, *AllocateQuotaRequest) (*AllocateQuotaResponse, error) -} - -func RegisterQuotaControllerServer(s *grpc.Server, srv QuotaControllerServer) { - s.RegisterService(&_QuotaController_serviceDesc, srv) -} - -func _QuotaController_AllocateQuota_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AllocateQuotaRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QuotaControllerServer).AllocateQuota(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicecontrol.v1.QuotaController/AllocateQuota", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QuotaControllerServer).AllocateQuota(ctx, req.(*AllocateQuotaRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _QuotaController_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.api.servicecontrol.v1.QuotaController", - HandlerType: (*QuotaControllerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AllocateQuota", - Handler: _QuotaController_AllocateQuota_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/api/servicecontrol/v1/quota_controller.proto", -} - -func init() { - proto.RegisterFile("google/api/servicecontrol/v1/quota_controller.proto", fileDescriptor5) -} - -var fileDescriptor5 = []byte{ - // 775 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xc1, 0x6e, 0xea, 0x46, - 0x14, 0xed, 0x18, 0x42, 0x9b, 0xeb, 0x04, 0x9c, 0x69, 0x5a, 0x59, 0x28, 0x52, 0x28, 0x2b, 0x1a, - 0xb5, 0x46, 0x21, 0x55, 0x95, 0xa6, 0x2b, 0x30, 0x93, 0xc6, 0x09, 0x01, 0x62, 0x20, 0x4a, 0xda, - 0x85, 0xe5, 0xd8, 0x53, 0xea, 0xc6, 0x78, 0x1c, 0xdb, 0x20, 0x45, 0x55, 0x37, 0x5d, 0x54, 0xaa, - 0xd4, 0x5d, 0xfb, 0x1d, 0xfd, 0x88, 0xfc, 0x42, 0x7f, 0xe1, 0xfd, 0xc3, 0x7b, 0xcb, 0x27, 0x8f, - 0x0d, 0x0f, 0x22, 0xc4, 0x0b, 0x7a, 0x3b, 0xcf, 0xf1, 0x9c, 0x33, 0xf7, 0xde, 0x73, 0xe7, 0x0e, - 0x1c, 0x0d, 0x19, 0x1b, 0xba, 0xb4, 0x6a, 0xfa, 0x4e, 0x35, 0xa4, 0xc1, 0xc4, 0xb1, 0xa8, 0xc5, - 0xbc, 0x28, 0x60, 0x6e, 0x75, 0x72, 0x58, 0x7d, 0x18, 0xb3, 0xc8, 0x34, 0x52, 0xc0, 0xa5, 0x81, - 0xe2, 0x07, 0x2c, 0x62, 0x78, 0x2f, 0x21, 0x29, 0xa6, 0xef, 0x28, 0x8b, 0x24, 0x65, 0x72, 0x58, - 0xdc, 0x9b, 0x93, 0x34, 0x3d, 0x8f, 0x45, 0x66, 0xe4, 0x30, 0x2f, 0x4c, 0xb8, 0xc5, 0xea, 0xca, - 0x03, 0x47, 0x34, 0x0a, 0x1c, 0xcb, 0x98, 0x98, 0xee, 0x98, 0x26, 0x84, 0xf2, 0x13, 0x82, 0xdd, - 0xba, 0xeb, 0x32, 0xcb, 0x8c, 0xe8, 0x55, 0x1c, 0x8f, 0x4e, 0x1f, 0xc6, 0x34, 0x8c, 0xf0, 0x17, - 0xb0, 0x95, 0x0a, 0x18, 0x9e, 0x39, 0xa2, 0x32, 0x2a, 0xa1, 0xca, 0xa6, 0x2e, 0xa6, 0x58, 0xdb, - 0x1c, 0x51, 0xfc, 0x13, 0x60, 0x33, 0xa5, 0x1a, 0xcc, 0xa7, 0x01, 0x8f, 0x44, 0x16, 0x4a, 0xa8, - 0x22, 0xd6, 0xbe, 0x52, 0x56, 0x65, 0xa1, 0xf0, 0xa3, 0x3a, 0x53, 0x8e, 0xbe, 0x33, 0xd5, 0x99, - 0x41, 0xf8, 0x00, 0x76, 0xa6, 0xe7, 0x5b, 0xcc, 0xfb, 0xd9, 0x19, 0x1a, 0x8e, 0x2d, 0x67, 0x79, - 0x10, 0x85, 0xf4, 0x87, 0xca, 0x71, 0xcd, 0x2e, 0xbf, 0xce, 0x40, 0x7e, 0x51, 0x31, 0x0e, 0x7f, - 0x16, 0x52, 0xcc, 0x4c, 0xc3, 0x9f, 0x61, 0x9a, 0x8d, 0xf7, 0x41, 0x1c, 0xd1, 0xe8, 0x17, 0x66, - 0x27, 0x09, 0x0a, 0x7c, 0x07, 0x24, 0x10, 0xcf, 0x6f, 0x1f, 0x44, 0x8b, 0x79, 0xe1, 0x78, 0x44, - 0x83, 0x58, 0x22, 0x93, 0x6c, 0x98, 0x42, 0x9a, 0x8d, 0xbb, 0x90, 0x73, 0xcd, 0x3b, 0xea, 0x86, - 0x72, 0xb6, 0x94, 0xa9, 0x88, 0xb5, 0xe3, 0x75, 0x92, 0x56, 0x5a, 0x9c, 0x4a, 0xbc, 0x28, 0x78, - 0xd4, 0x53, 0x1d, 0x7c, 0x05, 0xdb, 0x49, 0x57, 0x24, 0x56, 0x85, 0xf2, 0x06, 0x17, 0x7e, 0x4f, - 0x35, 0x2f, 0xf9, 0xe6, 0xeb, 0xd8, 0xd6, 0x1e, 0x8d, 0xf4, 0x2d, 0x2e, 0x91, 0x80, 0x21, 0x1e, - 0x00, 0xa4, 0x92, 0xcc, 0xa6, 0x72, 0xae, 0x84, 0x2a, 0xf9, 0xda, 0xb7, 0x6b, 0x05, 0xca, 0x97, - 0x97, 0xcc, 0xa6, 0xfa, 0xe6, 0xc3, 0xf4, 0xb3, 0xf8, 0x1d, 0x88, 0x73, 0x09, 0x60, 0x09, 0x32, - 0xf7, 0xf4, 0x31, 0x2d, 0x73, 0xfc, 0x89, 0x77, 0x61, 0x83, 0x37, 0x5a, 0x5a, 0xd8, 0x64, 0x71, - 0x22, 0x1c, 0xa3, 0xb2, 0x06, 0x9b, 0x33, 0x49, 0x5c, 0x00, 0x71, 0xd0, 0xee, 0x75, 0x89, 0xaa, - 0x9d, 0x6a, 0xa4, 0x29, 0x7d, 0x84, 0x01, 0x72, 0xed, 0x8e, 0x7e, 0x59, 0x6f, 0x49, 0x28, 0xfe, - 0xd9, 0x20, 0xbd, 0xbe, 0x41, 0x4e, 0x4f, 0x3b, 0x7a, 0x5f, 0x12, 0x70, 0x1e, 0x40, 0x3d, 0x23, - 0xea, 0x85, 0xd1, 0x69, 0xb7, 0x6e, 0xa5, 0x4c, 0xf9, 0x6f, 0x01, 0x3e, 0x7b, 0xd6, 0xbe, 0xa1, - 0xcf, 0xbc, 0x90, 0xbe, 0xa4, 0x01, 0xae, 0xa0, 0x30, 0xeb, 0x5f, 0x1a, 0x04, 0x2c, 0x08, 0x65, - 0x81, 0x97, 0xbb, 0xf2, 0x82, 0xf2, 0x90, 0x98, 0xa0, 0xe7, 0xa7, 0x02, 0x7c, 0xb9, 0xc4, 0xbf, - 0xcc, 0x07, 0xfb, 0xb7, 0xce, 0x45, 0xf8, 0x57, 0x00, 0x78, 0x17, 0x1d, 0xae, 0x43, 0xd6, 0x8a, - 0x4d, 0x47, 0xdc, 0xf4, 0xaf, 0x5f, 0x9a, 0x95, 0xa2, 0xc6, 0x5e, 0x73, 0x2a, 0x96, 0xe1, 0xe3, - 0x70, 0x7c, 0xf7, 0x2b, 0xb5, 0xa2, 0xd4, 0xc7, 0xe9, 0x12, 0x97, 0x40, 0xb4, 0x69, 0x68, 0x05, - 0x8e, 0xcf, 0xaf, 0x7d, 0x72, 0x3b, 0xe6, 0xa1, 0xf2, 0x9f, 0x08, 0xb2, 0xea, 0x52, 0x8f, 0x3f, - 0x07, 0xac, 0x93, 0x5e, 0x67, 0xa0, 0xab, 0xc4, 0x20, 0x37, 0x67, 0xf5, 0x41, 0xaf, 0x4f, 0x9a, - 0xd2, 0x27, 0x31, 0xde, 0xd0, 0x5a, 0x2d, 0xad, 0xfd, 0x83, 0xd1, 0xee, 0xf4, 0x8d, 0xba, 0xda, - 0xd7, 0xae, 0x89, 0x74, 0x8f, 0x3f, 0x85, 0x42, 0x57, 0xef, 0x9c, 0x13, 0xb5, 0x6f, 0x34, 0x49, - 0x8b, 0xc4, 0x9b, 0xdd, 0x18, 0xac, 0x77, 0x35, 0xe3, 0x82, 0xdc, 0x1a, 0x5a, 0xfb, 0xba, 0xde, - 0xd2, 0x9a, 0x92, 0x33, 0x0f, 0x92, 0x9b, 0xae, 0xa6, 0x93, 0xa6, 0xe4, 0xd7, 0x9e, 0x10, 0x14, - 0x78, 0x7a, 0xea, 0x6c, 0xd6, 0xe2, 0xff, 0x10, 0x6c, 0x2f, 0x74, 0x0e, 0xae, 0xad, 0xae, 0xcf, - 0xb2, 0x29, 0x59, 0x3c, 0x5a, 0x8b, 0x93, 0xb4, 0x66, 0xf9, 0x9b, 0x3f, 0xfe, 0x7f, 0xf5, 0x8f, - 0xa0, 0x94, 0xbf, 0x8c, 0x67, 0x72, 0x4a, 0x0a, 0xab, 0xbf, 0xcd, 0x8f, 0xdb, 0xdf, 0x4f, 0xcc, - 0x79, 0xea, 0x09, 0x3a, 0x68, 0xfc, 0x85, 0xa0, 0x64, 0xb1, 0xd1, 0xca, 0x03, 0x1b, 0xbb, 0xcf, - 0xd2, 0xec, 0xc6, 0x43, 0xbe, 0x8b, 0x7e, 0x3c, 0x4f, 0x59, 0x43, 0xe6, 0x9a, 0xde, 0x50, 0x61, - 0xc1, 0xb0, 0x3a, 0xa4, 0x1e, 0x7f, 0x02, 0xd2, 0x27, 0xc3, 0xf4, 0x9d, 0x70, 0xf9, 0xb3, 0xf1, - 0xfd, 0x22, 0xf2, 0x06, 0xa1, 0xbb, 0x1c, 0x67, 0x1e, 0xbd, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xbb, - 0x98, 0x03, 0x4f, 0xe0, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/service_controller.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/service_controller.pb.go deleted file mode 100644 index e3ecc9c9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicecontrol/v1/service_controller.pb.go +++ /dev/null @@ -1,488 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicecontrol/v1/service_controller.proto - -package servicecontrol - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Request message for the Check method. -type CheckRequest struct { - // The service name as specified in its service configuration. For example, - // `"pubsub.googleapis.com"`. - // - // See - // [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service) - // for the definition of a service name. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The operation to be checked. - Operation *Operation `protobuf:"bytes,2,opt,name=operation" json:"operation,omitempty"` - // Specifies which version of service configuration should be used to process - // the request. - // - // If unspecified or no matching version can be found, the - // latest one will be used. - ServiceConfigId string `protobuf:"bytes,4,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"` -} - -func (m *CheckRequest) Reset() { *m = CheckRequest{} } -func (m *CheckRequest) String() string { return proto.CompactTextString(m) } -func (*CheckRequest) ProtoMessage() {} -func (*CheckRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} } - -func (m *CheckRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *CheckRequest) GetOperation() *Operation { - if m != nil { - return m.Operation - } - return nil -} - -func (m *CheckRequest) GetServiceConfigId() string { - if m != nil { - return m.ServiceConfigId - } - return "" -} - -// Response message for the Check method. -type CheckResponse struct { - // The same operation_id value used in the [CheckRequest][google.api.servicecontrol.v1.CheckRequest]. - // Used for logging and diagnostics purposes. - OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // Indicate the decision of the check. - // - // If no check errors are present, the service should process the operation. - // Otherwise the service should use the list of errors to determine the - // appropriate action. - CheckErrors []*CheckError `protobuf:"bytes,2,rep,name=check_errors,json=checkErrors" json:"check_errors,omitempty"` - // The actual config id used to process the request. - ServiceConfigId string `protobuf:"bytes,5,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"` - // Feedback data returned from the server during processing a Check request. - CheckInfo *CheckResponse_CheckInfo `protobuf:"bytes,6,opt,name=check_info,json=checkInfo" json:"check_info,omitempty"` -} - -func (m *CheckResponse) Reset() { *m = CheckResponse{} } -func (m *CheckResponse) String() string { return proto.CompactTextString(m) } -func (*CheckResponse) ProtoMessage() {} -func (*CheckResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} } - -func (m *CheckResponse) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *CheckResponse) GetCheckErrors() []*CheckError { - if m != nil { - return m.CheckErrors - } - return nil -} - -func (m *CheckResponse) GetServiceConfigId() string { - if m != nil { - return m.ServiceConfigId - } - return "" -} - -func (m *CheckResponse) GetCheckInfo() *CheckResponse_CheckInfo { - if m != nil { - return m.CheckInfo - } - return nil -} - -type CheckResponse_CheckInfo struct { - // Consumer info of this check. - ConsumerInfo *CheckResponse_ConsumerInfo `protobuf:"bytes,2,opt,name=consumer_info,json=consumerInfo" json:"consumer_info,omitempty"` -} - -func (m *CheckResponse_CheckInfo) Reset() { *m = CheckResponse_CheckInfo{} } -func (m *CheckResponse_CheckInfo) String() string { return proto.CompactTextString(m) } -func (*CheckResponse_CheckInfo) ProtoMessage() {} -func (*CheckResponse_CheckInfo) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1, 0} } - -func (m *CheckResponse_CheckInfo) GetConsumerInfo() *CheckResponse_ConsumerInfo { - if m != nil { - return m.ConsumerInfo - } - return nil -} - -// `ConsumerInfo` provides information about the consumer project. -type CheckResponse_ConsumerInfo struct { - // The Google cloud project number, e.g. 1234567890. A value of 0 indicates - // no project number is found. - ProjectNumber int64 `protobuf:"varint,1,opt,name=project_number,json=projectNumber" json:"project_number,omitempty"` -} - -func (m *CheckResponse_ConsumerInfo) Reset() { *m = CheckResponse_ConsumerInfo{} } -func (m *CheckResponse_ConsumerInfo) String() string { return proto.CompactTextString(m) } -func (*CheckResponse_ConsumerInfo) ProtoMessage() {} -func (*CheckResponse_ConsumerInfo) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1, 1} } - -func (m *CheckResponse_ConsumerInfo) GetProjectNumber() int64 { - if m != nil { - return m.ProjectNumber - } - return 0 -} - -// Request message for the Report method. -type ReportRequest struct { - // The service name as specified in its service configuration. For example, - // `"pubsub.googleapis.com"`. - // - // See - // [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service) - // for the definition of a service name. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // Operations to be reported. - // - // Typically the service should report one operation per request. - // Putting multiple operations into a single request is allowed, but should - // be used only when multiple operations are natually available at the time - // of the report. - // - // If multiple operations are in a single request, the total request size - // should be no larger than 1MB. See [ReportResponse.report_errors][google.api.servicecontrol.v1.ReportResponse.report_errors] for - // partial failure behavior. - Operations []*Operation `protobuf:"bytes,2,rep,name=operations" json:"operations,omitempty"` - // Specifies which version of service config should be used to process the - // request. - // - // If unspecified or no matching version can be found, the - // latest one will be used. - ServiceConfigId string `protobuf:"bytes,3,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"` -} - -func (m *ReportRequest) Reset() { *m = ReportRequest{} } -func (m *ReportRequest) String() string { return proto.CompactTextString(m) } -func (*ReportRequest) ProtoMessage() {} -func (*ReportRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} } - -func (m *ReportRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *ReportRequest) GetOperations() []*Operation { - if m != nil { - return m.Operations - } - return nil -} - -func (m *ReportRequest) GetServiceConfigId() string { - if m != nil { - return m.ServiceConfigId - } - return "" -} - -// Response message for the Report method. -type ReportResponse struct { - // Partial failures, one for each `Operation` in the request that failed - // processing. There are three possible combinations of the RPC status: - // - // 1. The combination of a successful RPC status and an empty `report_errors` - // list indicates a complete success where all `Operations` in the - // request are processed successfully. - // 2. The combination of a successful RPC status and a non-empty - // `report_errors` list indicates a partial success where some - // `Operations` in the request succeeded. Each - // `Operation` that failed processing has a corresponding item - // in this list. - // 3. A failed RPC status indicates a general non-deterministic failure. - // When this happens, it's impossible to know which of the - // 'Operations' in the request succeeded or failed. - ReportErrors []*ReportResponse_ReportError `protobuf:"bytes,1,rep,name=report_errors,json=reportErrors" json:"report_errors,omitempty"` - // The actual config id used to process the request. - ServiceConfigId string `protobuf:"bytes,2,opt,name=service_config_id,json=serviceConfigId" json:"service_config_id,omitempty"` -} - -func (m *ReportResponse) Reset() { *m = ReportResponse{} } -func (m *ReportResponse) String() string { return proto.CompactTextString(m) } -func (*ReportResponse) ProtoMessage() {} -func (*ReportResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3} } - -func (m *ReportResponse) GetReportErrors() []*ReportResponse_ReportError { - if m != nil { - return m.ReportErrors - } - return nil -} - -func (m *ReportResponse) GetServiceConfigId() string { - if m != nil { - return m.ServiceConfigId - } - return "" -} - -// Represents the processing error of one [Operation][google.api.servicecontrol.v1.Operation] in the request. -type ReportResponse_ReportError struct { - // The [Operation.operation_id][google.api.servicecontrol.v1.Operation.operation_id] value from the request. - OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // Details of the error when processing the [Operation][google.api.servicecontrol.v1.Operation]. - Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` -} - -func (m *ReportResponse_ReportError) Reset() { *m = ReportResponse_ReportError{} } -func (m *ReportResponse_ReportError) String() string { return proto.CompactTextString(m) } -func (*ReportResponse_ReportError) ProtoMessage() {} -func (*ReportResponse_ReportError) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3, 0} } - -func (m *ReportResponse_ReportError) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *ReportResponse_ReportError) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func init() { - proto.RegisterType((*CheckRequest)(nil), "google.api.servicecontrol.v1.CheckRequest") - proto.RegisterType((*CheckResponse)(nil), "google.api.servicecontrol.v1.CheckResponse") - proto.RegisterType((*CheckResponse_CheckInfo)(nil), "google.api.servicecontrol.v1.CheckResponse.CheckInfo") - proto.RegisterType((*CheckResponse_ConsumerInfo)(nil), "google.api.servicecontrol.v1.CheckResponse.ConsumerInfo") - proto.RegisterType((*ReportRequest)(nil), "google.api.servicecontrol.v1.ReportRequest") - proto.RegisterType((*ReportResponse)(nil), "google.api.servicecontrol.v1.ReportResponse") - proto.RegisterType((*ReportResponse_ReportError)(nil), "google.api.servicecontrol.v1.ReportResponse.ReportError") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ServiceController service - -type ServiceControllerClient interface { - // Checks an operation with Google Service Control to decide whether - // the given operation should proceed. It should be called before the - // operation is executed. - // - // If feasible, the client should cache the check results and reuse them for - // 60 seconds. In case of server errors, the client can rely on the cached - // results for longer time. - // - // NOTE: the [CheckRequest][google.api.servicecontrol.v1.CheckRequest] has the size limit of 64KB. - // - // This method requires the `servicemanagement.services.check` permission - // on the specified service. For more information, see - // [Google Cloud IAM](https://cloud.google.com/iam). - Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error) - // Reports operation results to Google Service Control, such as logs and - // metrics. It should be called after an operation is completed. - // - // If feasible, the client should aggregate reporting data for up to 5 - // seconds to reduce API traffic. Limiting aggregation to 5 seconds is to - // reduce data loss during client crashes. Clients should carefully choose - // the aggregation time window to avoid data loss risk more than 0.01% - // for business and compliance reasons. - // - // NOTE: the [ReportRequest][google.api.servicecontrol.v1.ReportRequest] has the size limit of 1MB. - // - // This method requires the `servicemanagement.services.report` permission - // on the specified service. For more information, see - // [Google Cloud IAM](https://cloud.google.com/iam). - Report(ctx context.Context, in *ReportRequest, opts ...grpc.CallOption) (*ReportResponse, error) -} - -type serviceControllerClient struct { - cc *grpc.ClientConn -} - -func NewServiceControllerClient(cc *grpc.ClientConn) ServiceControllerClient { - return &serviceControllerClient{cc} -} - -func (c *serviceControllerClient) Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error) { - out := new(CheckResponse) - err := grpc.Invoke(ctx, "/google.api.servicecontrol.v1.ServiceController/Check", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceControllerClient) Report(ctx context.Context, in *ReportRequest, opts ...grpc.CallOption) (*ReportResponse, error) { - out := new(ReportResponse) - err := grpc.Invoke(ctx, "/google.api.servicecontrol.v1.ServiceController/Report", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ServiceController service - -type ServiceControllerServer interface { - // Checks an operation with Google Service Control to decide whether - // the given operation should proceed. It should be called before the - // operation is executed. - // - // If feasible, the client should cache the check results and reuse them for - // 60 seconds. In case of server errors, the client can rely on the cached - // results for longer time. - // - // NOTE: the [CheckRequest][google.api.servicecontrol.v1.CheckRequest] has the size limit of 64KB. - // - // This method requires the `servicemanagement.services.check` permission - // on the specified service. For more information, see - // [Google Cloud IAM](https://cloud.google.com/iam). - Check(context.Context, *CheckRequest) (*CheckResponse, error) - // Reports operation results to Google Service Control, such as logs and - // metrics. It should be called after an operation is completed. - // - // If feasible, the client should aggregate reporting data for up to 5 - // seconds to reduce API traffic. Limiting aggregation to 5 seconds is to - // reduce data loss during client crashes. Clients should carefully choose - // the aggregation time window to avoid data loss risk more than 0.01% - // for business and compliance reasons. - // - // NOTE: the [ReportRequest][google.api.servicecontrol.v1.ReportRequest] has the size limit of 1MB. - // - // This method requires the `servicemanagement.services.report` permission - // on the specified service. For more information, see - // [Google Cloud IAM](https://cloud.google.com/iam). - Report(context.Context, *ReportRequest) (*ReportResponse, error) -} - -func RegisterServiceControllerServer(s *grpc.Server, srv ServiceControllerServer) { - s.RegisterService(&_ServiceController_serviceDesc, srv) -} - -func _ServiceController_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CheckRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceControllerServer).Check(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicecontrol.v1.ServiceController/Check", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceControllerServer).Check(ctx, req.(*CheckRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceController_Report_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReportRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceControllerServer).Report(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicecontrol.v1.ServiceController/Report", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceControllerServer).Report(ctx, req.(*ReportRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ServiceController_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.api.servicecontrol.v1.ServiceController", - HandlerType: (*ServiceControllerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Check", - Handler: _ServiceController_Check_Handler, - }, - { - MethodName: "Report", - Handler: _ServiceController_Report_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/api/servicecontrol/v1/service_controller.proto", -} - -func init() { - proto.RegisterFile("google/api/servicecontrol/v1/service_controller.proto", fileDescriptor6) -} - -var fileDescriptor6 = []byte{ - // 619 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, - 0x10, 0xd6, 0x3a, 0x6d, 0xa4, 0x4c, 0x9c, 0xfe, 0xea, 0x1e, 0x7e, 0x22, 0xab, 0x87, 0xd4, 0x12, - 0x34, 0x4a, 0x8b, 0xad, 0x16, 0x55, 0x42, 0xe1, 0x44, 0xa3, 0xaa, 0x0a, 0x48, 0xa5, 0x72, 0x38, - 0x21, 0xaa, 0xc8, 0xdd, 0x6c, 0x8c, 0x4b, 0xb2, 0x6b, 0xd6, 0x4e, 0x2e, 0x88, 0x0b, 0x0f, 0xc0, - 0xa1, 0xbc, 0x01, 0xaa, 0xc4, 0x33, 0xf0, 0x1c, 0xbc, 0x02, 0x0f, 0x01, 0x37, 0x94, 0xdd, 0xb5, - 0xeb, 0x08, 0x63, 0x92, 0x9b, 0xf7, 0xdb, 0x99, 0xf9, 0xbe, 0x9d, 0xf9, 0x3c, 0x70, 0x1c, 0x70, - 0x1e, 0x4c, 0xa8, 0xeb, 0x47, 0xa1, 0x1b, 0x53, 0x31, 0x0f, 0x09, 0x25, 0x9c, 0x25, 0x82, 0x4f, - 0xdc, 0xf9, 0x61, 0x8a, 0x0c, 0x35, 0x34, 0xa1, 0xc2, 0x89, 0x04, 0x4f, 0x38, 0xde, 0x51, 0x69, - 0x8e, 0x1f, 0x85, 0xce, 0x72, 0x9a, 0x33, 0x3f, 0xb4, 0x76, 0x72, 0x45, 0x7d, 0xc6, 0x78, 0xe2, - 0x27, 0x21, 0x67, 0xb1, 0xca, 0xb5, 0x9c, 0x52, 0x4a, 0xf2, 0x86, 0x92, 0xb7, 0x43, 0x2a, 0x04, - 0xd7, 0x5c, 0xd6, 0x41, 0x69, 0x3c, 0x8f, 0xa8, 0x90, 0xe5, 0x75, 0xf4, 0x3d, 0x1d, 0x2d, 0x22, - 0xe2, 0xc6, 0x89, 0x9f, 0xcc, 0x34, 0xad, 0x7d, 0x8b, 0xc0, 0xec, 0x2d, 0x8a, 0x7b, 0xf4, 0xdd, - 0x8c, 0xc6, 0x09, 0xde, 0x05, 0x33, 0x7d, 0x1f, 0xf3, 0xa7, 0xb4, 0x89, 0x5a, 0xa8, 0x5d, 0xf3, - 0xea, 0x1a, 0x3b, 0xf7, 0xa7, 0x14, 0x9f, 0x42, 0x2d, 0xab, 0xdf, 0x34, 0x5a, 0xa8, 0x5d, 0x3f, - 0xda, 0x73, 0xca, 0x9e, 0xee, 0xbc, 0x48, 0xc3, 0xbd, 0xbb, 0x4c, 0xdc, 0x81, 0xed, 0x5c, 0x27, - 0xc7, 0x61, 0x30, 0x0c, 0x47, 0xcd, 0x0d, 0x49, 0xf7, 0x9f, 0xbe, 0xe8, 0x49, 0xbc, 0x3f, 0xb2, - 0x6f, 0x2b, 0xd0, 0xd0, 0x32, 0xe3, 0x88, 0xb3, 0x98, 0x2e, 0x74, 0x66, 0xa5, 0x16, 0x89, 0x5a, - 0x67, 0x86, 0xf5, 0x47, 0xf8, 0x39, 0x98, 0xb9, 0xbe, 0xc5, 0x4d, 0xa3, 0x55, 0x69, 0xd7, 0x8f, - 0xda, 0xe5, 0x52, 0x25, 0xcb, 0xe9, 0x22, 0xc1, 0xab, 0x93, 0xec, 0x3b, 0x2e, 0x56, 0xbb, 0x59, - 0xa8, 0x16, 0xbf, 0x04, 0x50, 0xc4, 0x21, 0x1b, 0xf3, 0x66, 0x55, 0x76, 0xe8, 0x78, 0x05, 0xda, - 0xf4, 0x71, 0xea, 0xd4, 0x67, 0x63, 0xee, 0xd5, 0x48, 0xfa, 0x69, 0x5d, 0x43, 0x2d, 0xc3, 0xf1, - 0x25, 0x34, 0x08, 0x67, 0xf1, 0x6c, 0x4a, 0x85, 0x62, 0x51, 0x73, 0x78, 0xbc, 0x16, 0x8b, 0x2e, - 0x20, 0x89, 0x4c, 0x92, 0x3b, 0x59, 0xc7, 0x60, 0xe6, 0x6f, 0xf1, 0x7d, 0xd8, 0x8a, 0x04, 0xbf, - 0xa6, 0x24, 0x19, 0xb2, 0xd9, 0xf4, 0x8a, 0x0a, 0xd9, 0xef, 0x8a, 0xd7, 0xd0, 0xe8, 0xb9, 0x04, - 0xed, 0xaf, 0x08, 0x1a, 0x1e, 0x8d, 0xb8, 0x48, 0xd6, 0xb0, 0xd3, 0x19, 0x40, 0x36, 0xb5, 0x74, - 0x48, 0x2b, 0xfb, 0x29, 0x97, 0x5a, 0x3c, 0xa2, 0x4a, 0xb1, 0xa1, 0x7e, 0x21, 0xd8, 0x4a, 0x95, - 0x6a, 0x47, 0x5d, 0x42, 0x43, 0x48, 0x24, 0xf5, 0x0b, 0x92, 0x52, 0xfe, 0xd1, 0xd2, 0xe5, 0x22, - 0xfa, 0xa8, 0xfc, 0x63, 0x8a, 0xbb, 0xc3, 0x5f, 0xd4, 0x19, 0x85, 0xea, 0xac, 0xd7, 0x50, 0xcf, - 0x15, 0x5a, 0xc5, 0xeb, 0x1d, 0xa8, 0xaa, 0xff, 0x5a, 0x1b, 0x01, 0xa7, 0xaa, 0x45, 0x44, 0x9c, - 0x81, 0xbc, 0xf1, 0x74, 0xc4, 0xd1, 0x37, 0x03, 0xb6, 0x07, 0x19, 0xa3, 0x5e, 0x61, 0xf8, 0x13, - 0x82, 0x4d, 0xe9, 0x0f, 0xdc, 0x59, 0xc9, 0x44, 0x72, 0xbe, 0xd6, 0xfe, 0x1a, 0x86, 0xb3, 0x0f, - 0x3e, 0x7e, 0xff, 0xf1, 0xd9, 0x78, 0x60, 0xef, 0xe6, 0xb6, 0x68, 0xec, 0xbe, 0xcf, 0x1b, 0xe4, - 0x43, 0x57, 0x1a, 0xbe, 0x8b, 0x3a, 0xf8, 0x06, 0x41, 0x55, 0x75, 0x01, 0xef, 0xaf, 0x36, 0x03, - 0x25, 0xe9, 0x60, 0x9d, 0x81, 0xd9, 0x0f, 0xa5, 0xa6, 0x3d, 0xdb, 0x2e, 0xd3, 0xa4, 0x06, 0xd9, - 0x45, 0x9d, 0x93, 0x1b, 0x04, 0x2d, 0xc2, 0xa7, 0xa5, 0x14, 0x27, 0xff, 0xff, 0xd1, 0xdd, 0x8b, - 0xc5, 0xb2, 0xbd, 0x40, 0xaf, 0x9e, 0xe9, 0xbc, 0x80, 0x4f, 0x7c, 0x16, 0x38, 0x5c, 0x04, 0x6e, - 0x40, 0x99, 0x5c, 0xc5, 0xae, 0xba, 0xf2, 0xa3, 0x30, 0x2e, 0x5e, 0xea, 0x4f, 0x96, 0x91, 0x9f, - 0x08, 0x7d, 0x31, 0x36, 0xce, 0x9e, 0x0e, 0x7a, 0x57, 0x55, 0x59, 0xe0, 0xd1, 0xef, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x5e, 0x28, 0x7b, 0xe6, 0xb7, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicemanagement/v1/resources.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicemanagement/v1/resources.pb.go deleted file mode 100644 index 94906476..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicemanagement/v1/resources.pb.go +++ /dev/null @@ -1,802 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicemanagement/v1/resources.proto - -/* -Package servicemanagement is a generated protocol buffer package. - -It is generated from these files: - google/api/servicemanagement/v1/resources.proto - google/api/servicemanagement/v1/servicemanager.proto - -It has these top-level messages: - ManagedService - OperationMetadata - Diagnostic - ConfigSource - ConfigFile - ConfigRef - ChangeReport - Rollout - ListServicesRequest - ListServicesResponse - GetServiceRequest - CreateServiceRequest - DeleteServiceRequest - UndeleteServiceRequest - UndeleteServiceResponse - GetServiceConfigRequest - ListServiceConfigsRequest - ListServiceConfigsResponse - CreateServiceConfigRequest - SubmitConfigSourceRequest - SubmitConfigSourceResponse - CreateServiceRolloutRequest - ListServiceRolloutsRequest - ListServiceRolloutsResponse - GetServiceRolloutRequest - EnableServiceRequest - DisableServiceRequest - GenerateConfigReportRequest - GenerateConfigReportResponse -*/ -package servicemanagement - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api2 "google.golang.org/genproto/googleapis/api/configchange" -import _ "google.golang.org/genproto/googleapis/api/serviceconfig" -import _ "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/any" -import _ "google.golang.org/genproto/protobuf/field_mask" -import _ "github.com/golang/protobuf/ptypes/struct" -import google_protobuf9 "github.com/golang/protobuf/ptypes/timestamp" -import _ "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Code describes the status of one operation step. -type OperationMetadata_Status int32 - -const ( - // Unspecifed code. - OperationMetadata_STATUS_UNSPECIFIED OperationMetadata_Status = 0 - // The step has completed without errors. - OperationMetadata_DONE OperationMetadata_Status = 1 - // The step has not started yet. - OperationMetadata_NOT_STARTED OperationMetadata_Status = 2 - // The step is in progress. - OperationMetadata_IN_PROGRESS OperationMetadata_Status = 3 - // The step has completed with errors. - OperationMetadata_FAILED OperationMetadata_Status = 4 - // The step has completed with cancellation. - OperationMetadata_CANCELLED OperationMetadata_Status = 5 -) - -var OperationMetadata_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "DONE", - 2: "NOT_STARTED", - 3: "IN_PROGRESS", - 4: "FAILED", - 5: "CANCELLED", -} -var OperationMetadata_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "DONE": 1, - "NOT_STARTED": 2, - "IN_PROGRESS": 3, - "FAILED": 4, - "CANCELLED": 5, -} - -func (x OperationMetadata_Status) String() string { - return proto.EnumName(OperationMetadata_Status_name, int32(x)) -} -func (OperationMetadata_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// The kind of diagnostic information possible. -type Diagnostic_Kind int32 - -const ( - // Warnings and errors - Diagnostic_WARNING Diagnostic_Kind = 0 - // Only errors - Diagnostic_ERROR Diagnostic_Kind = 1 -) - -var Diagnostic_Kind_name = map[int32]string{ - 0: "WARNING", - 1: "ERROR", -} -var Diagnostic_Kind_value = map[string]int32{ - "WARNING": 0, - "ERROR": 1, -} - -func (x Diagnostic_Kind) String() string { - return proto.EnumName(Diagnostic_Kind_name, int32(x)) -} -func (Diagnostic_Kind) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -type ConfigFile_FileType int32 - -const ( - // Unknown file type. - ConfigFile_FILE_TYPE_UNSPECIFIED ConfigFile_FileType = 0 - // YAML-specification of service. - ConfigFile_SERVICE_CONFIG_YAML ConfigFile_FileType = 1 - // OpenAPI specification, serialized in JSON. - ConfigFile_OPEN_API_JSON ConfigFile_FileType = 2 - // OpenAPI specification, serialized in YAML. - ConfigFile_OPEN_API_YAML ConfigFile_FileType = 3 - // FileDescriptorSet, generated by protoc. - // - // To generate, use protoc with imports and source info included. - // For an example test.proto file, the following command would put the value - // in a new file named out.pb. - // - // $protoc --include_imports --include_source_info test.proto -o out.pb - ConfigFile_FILE_DESCRIPTOR_SET_PROTO ConfigFile_FileType = 4 -) - -var ConfigFile_FileType_name = map[int32]string{ - 0: "FILE_TYPE_UNSPECIFIED", - 1: "SERVICE_CONFIG_YAML", - 2: "OPEN_API_JSON", - 3: "OPEN_API_YAML", - 4: "FILE_DESCRIPTOR_SET_PROTO", -} -var ConfigFile_FileType_value = map[string]int32{ - "FILE_TYPE_UNSPECIFIED": 0, - "SERVICE_CONFIG_YAML": 1, - "OPEN_API_JSON": 2, - "OPEN_API_YAML": 3, - "FILE_DESCRIPTOR_SET_PROTO": 4, -} - -func (x ConfigFile_FileType) String() string { - return proto.EnumName(ConfigFile_FileType_name, int32(x)) -} -func (ConfigFile_FileType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} } - -// Status of a Rollout. -type Rollout_RolloutStatus int32 - -const ( - // No status specified. - Rollout_ROLLOUT_STATUS_UNSPECIFIED Rollout_RolloutStatus = 0 - // The Rollout is in progress. - Rollout_IN_PROGRESS Rollout_RolloutStatus = 1 - // The Rollout has completed successfully. - Rollout_SUCCESS Rollout_RolloutStatus = 2 - // The Rollout has been cancelled. This can happen if you have overlapping - // Rollout pushes, and the previous ones will be cancelled. - Rollout_CANCELLED Rollout_RolloutStatus = 3 - // The Rollout has failed. It is typically caused by configuration errors. - Rollout_FAILED Rollout_RolloutStatus = 4 - // The Rollout has not started yet and is pending for execution. - Rollout_PENDING Rollout_RolloutStatus = 5 -) - -var Rollout_RolloutStatus_name = map[int32]string{ - 0: "ROLLOUT_STATUS_UNSPECIFIED", - 1: "IN_PROGRESS", - 2: "SUCCESS", - 3: "CANCELLED", - 4: "FAILED", - 5: "PENDING", -} -var Rollout_RolloutStatus_value = map[string]int32{ - "ROLLOUT_STATUS_UNSPECIFIED": 0, - "IN_PROGRESS": 1, - "SUCCESS": 2, - "CANCELLED": 3, - "FAILED": 4, - "PENDING": 5, -} - -func (x Rollout_RolloutStatus) String() string { - return proto.EnumName(Rollout_RolloutStatus_name, int32(x)) -} -func (Rollout_RolloutStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -// The full representation of a Service that is managed by -// Google Service Management. -type ManagedService struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. - ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // ID of the project that produces and owns this service. - ProducerProjectId string `protobuf:"bytes,3,opt,name=producer_project_id,json=producerProjectId" json:"producer_project_id,omitempty"` -} - -func (m *ManagedService) Reset() { *m = ManagedService{} } -func (m *ManagedService) String() string { return proto.CompactTextString(m) } -func (*ManagedService) ProtoMessage() {} -func (*ManagedService) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ManagedService) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *ManagedService) GetProducerProjectId() string { - if m != nil { - return m.ProducerProjectId - } - return "" -} - -// The metadata associated with a long running operation resource. -type OperationMetadata struct { - // The full name of the resources that this operation is directly - // associated with. - ResourceNames []string `protobuf:"bytes,1,rep,name=resource_names,json=resourceNames" json:"resource_names,omitempty"` - // Detailed status information for each step. The order is undetermined. - Steps []*OperationMetadata_Step `protobuf:"bytes,2,rep,name=steps" json:"steps,omitempty"` - // Percentage of completion of this operation, ranging from 0 to 100. - ProgressPercentage int32 `protobuf:"varint,3,opt,name=progress_percentage,json=progressPercentage" json:"progress_percentage,omitempty"` - // The start time of the operation. - StartTime *google_protobuf9.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime" json:"start_time,omitempty"` -} - -func (m *OperationMetadata) Reset() { *m = OperationMetadata{} } -func (m *OperationMetadata) String() string { return proto.CompactTextString(m) } -func (*OperationMetadata) ProtoMessage() {} -func (*OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *OperationMetadata) GetResourceNames() []string { - if m != nil { - return m.ResourceNames - } - return nil -} - -func (m *OperationMetadata) GetSteps() []*OperationMetadata_Step { - if m != nil { - return m.Steps - } - return nil -} - -func (m *OperationMetadata) GetProgressPercentage() int32 { - if m != nil { - return m.ProgressPercentage - } - return 0 -} - -func (m *OperationMetadata) GetStartTime() *google_protobuf9.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -// Represents the status of one operation step. -type OperationMetadata_Step struct { - // The short description of the step. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // The status code. - Status OperationMetadata_Status `protobuf:"varint,4,opt,name=status,enum=google.api.servicemanagement.v1.OperationMetadata_Status" json:"status,omitempty"` -} - -func (m *OperationMetadata_Step) Reset() { *m = OperationMetadata_Step{} } -func (m *OperationMetadata_Step) String() string { return proto.CompactTextString(m) } -func (*OperationMetadata_Step) ProtoMessage() {} -func (*OperationMetadata_Step) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -func (m *OperationMetadata_Step) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *OperationMetadata_Step) GetStatus() OperationMetadata_Status { - if m != nil { - return m.Status - } - return OperationMetadata_STATUS_UNSPECIFIED -} - -// Represents a diagnostic message (error or warning) -type Diagnostic struct { - // File name and line number of the error or warning. - Location string `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"` - // The kind of diagnostic information provided. - Kind Diagnostic_Kind `protobuf:"varint,2,opt,name=kind,enum=google.api.servicemanagement.v1.Diagnostic_Kind" json:"kind,omitempty"` - // Message describing the error or warning. - Message string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` -} - -func (m *Diagnostic) Reset() { *m = Diagnostic{} } -func (m *Diagnostic) String() string { return proto.CompactTextString(m) } -func (*Diagnostic) ProtoMessage() {} -func (*Diagnostic) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Diagnostic) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -func (m *Diagnostic) GetKind() Diagnostic_Kind { - if m != nil { - return m.Kind - } - return Diagnostic_WARNING -} - -func (m *Diagnostic) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -// Represents a source file which is used to generate the service configuration -// defined by `google.api.Service`. -type ConfigSource struct { - // A unique ID for a specific instance of this message, typically assigned - // by the client for tracking purpose. If empty, the server may choose to - // generate one instead. - Id string `protobuf:"bytes,5,opt,name=id" json:"id,omitempty"` - // Set of source configuration files that are used to generate a service - // configuration (`google.api.Service`). - Files []*ConfigFile `protobuf:"bytes,2,rep,name=files" json:"files,omitempty"` -} - -func (m *ConfigSource) Reset() { *m = ConfigSource{} } -func (m *ConfigSource) String() string { return proto.CompactTextString(m) } -func (*ConfigSource) ProtoMessage() {} -func (*ConfigSource) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ConfigSource) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *ConfigSource) GetFiles() []*ConfigFile { - if m != nil { - return m.Files - } - return nil -} - -// Generic specification of a source configuration file -type ConfigFile struct { - // The file name of the configuration file (full or relative path). - FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath" json:"file_path,omitempty"` - // The bytes that constitute the file. - FileContents []byte `protobuf:"bytes,3,opt,name=file_contents,json=fileContents,proto3" json:"file_contents,omitempty"` - // The type of configuration file this represents. - FileType ConfigFile_FileType `protobuf:"varint,4,opt,name=file_type,json=fileType,enum=google.api.servicemanagement.v1.ConfigFile_FileType" json:"file_type,omitempty"` -} - -func (m *ConfigFile) Reset() { *m = ConfigFile{} } -func (m *ConfigFile) String() string { return proto.CompactTextString(m) } -func (*ConfigFile) ProtoMessage() {} -func (*ConfigFile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ConfigFile) GetFilePath() string { - if m != nil { - return m.FilePath - } - return "" -} - -func (m *ConfigFile) GetFileContents() []byte { - if m != nil { - return m.FileContents - } - return nil -} - -func (m *ConfigFile) GetFileType() ConfigFile_FileType { - if m != nil { - return m.FileType - } - return ConfigFile_FILE_TYPE_UNSPECIFIED -} - -// Represents a service configuration with its name and id. -type ConfigRef struct { - // Resource name of a service config. It must have the following - // format: "services/{service name}/configs/{config id}". - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *ConfigRef) Reset() { *m = ConfigRef{} } -func (m *ConfigRef) String() string { return proto.CompactTextString(m) } -func (*ConfigRef) ProtoMessage() {} -func (*ConfigRef) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ConfigRef) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Change report associated with a particular service configuration. -// -// It contains a list of ConfigChanges based on the comparison between -// two service configurations. -type ChangeReport struct { - // List of changes between two service configurations. - // The changes will be alphabetically sorted based on the identifier - // of each change. - // A ConfigChange identifier is a dot separated path to the configuration. - // Example: visibility.rules[selector='LibraryService.CreateBook'].restriction - ConfigChanges []*google_api2.ConfigChange `protobuf:"bytes,1,rep,name=config_changes,json=configChanges" json:"config_changes,omitempty"` -} - -func (m *ChangeReport) Reset() { *m = ChangeReport{} } -func (m *ChangeReport) String() string { return proto.CompactTextString(m) } -func (*ChangeReport) ProtoMessage() {} -func (*ChangeReport) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ChangeReport) GetConfigChanges() []*google_api2.ConfigChange { - if m != nil { - return m.ConfigChanges - } - return nil -} - -// A rollout resource that defines how service configuration versions are pushed -// to control plane systems. Typically, you create a new version of the -// service config, and then create a Rollout to push the service config. -type Rollout struct { - // Optional unique identifier of this Rollout. Only lower case letters, digits - // and '-' are allowed. - // - // If not specified by client, the server will generate one. The generated id - // will have the form of <date><revision number>, where "date" is the create - // date in ISO 8601 format. "revision number" is a monotonically increasing - // positive number that is reset every day for each service. - // An example of the generated rollout_id is '2016-02-16r1' - RolloutId string `protobuf:"bytes,1,opt,name=rollout_id,json=rolloutId" json:"rollout_id,omitempty"` - // Creation time of the rollout. Readonly. - CreateTime *google_protobuf9.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The user who created the Rollout. Readonly. - CreatedBy string `protobuf:"bytes,3,opt,name=created_by,json=createdBy" json:"created_by,omitempty"` - // The status of this rollout. Readonly. In case of a failed rollout, - // the system will automatically rollback to the current Rollout - // version. Readonly. - Status Rollout_RolloutStatus `protobuf:"varint,4,opt,name=status,enum=google.api.servicemanagement.v1.Rollout_RolloutStatus" json:"status,omitempty"` - // Strategy that defines which versions of service configurations should be - // pushed - // and how they should be used at runtime. - // - // Types that are valid to be assigned to Strategy: - // *Rollout_TrafficPercentStrategy_ - // *Rollout_DeleteServiceStrategy_ - Strategy isRollout_Strategy `protobuf_oneof:"strategy"` - // The name of the service associated with this Rollout. - ServiceName string `protobuf:"bytes,8,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` -} - -func (m *Rollout) Reset() { *m = Rollout{} } -func (m *Rollout) String() string { return proto.CompactTextString(m) } -func (*Rollout) ProtoMessage() {} -func (*Rollout) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -type isRollout_Strategy interface { - isRollout_Strategy() -} - -type Rollout_TrafficPercentStrategy_ struct { - TrafficPercentStrategy *Rollout_TrafficPercentStrategy `protobuf:"bytes,5,opt,name=traffic_percent_strategy,json=trafficPercentStrategy,oneof"` -} -type Rollout_DeleteServiceStrategy_ struct { - DeleteServiceStrategy *Rollout_DeleteServiceStrategy `protobuf:"bytes,200,opt,name=delete_service_strategy,json=deleteServiceStrategy,oneof"` -} - -func (*Rollout_TrafficPercentStrategy_) isRollout_Strategy() {} -func (*Rollout_DeleteServiceStrategy_) isRollout_Strategy() {} - -func (m *Rollout) GetStrategy() isRollout_Strategy { - if m != nil { - return m.Strategy - } - return nil -} - -func (m *Rollout) GetRolloutId() string { - if m != nil { - return m.RolloutId - } - return "" -} - -func (m *Rollout) GetCreateTime() *google_protobuf9.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Rollout) GetCreatedBy() string { - if m != nil { - return m.CreatedBy - } - return "" -} - -func (m *Rollout) GetStatus() Rollout_RolloutStatus { - if m != nil { - return m.Status - } - return Rollout_ROLLOUT_STATUS_UNSPECIFIED -} - -func (m *Rollout) GetTrafficPercentStrategy() *Rollout_TrafficPercentStrategy { - if x, ok := m.GetStrategy().(*Rollout_TrafficPercentStrategy_); ok { - return x.TrafficPercentStrategy - } - return nil -} - -func (m *Rollout) GetDeleteServiceStrategy() *Rollout_DeleteServiceStrategy { - if x, ok := m.GetStrategy().(*Rollout_DeleteServiceStrategy_); ok { - return x.DeleteServiceStrategy - } - return nil -} - -func (m *Rollout) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Rollout) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Rollout_OneofMarshaler, _Rollout_OneofUnmarshaler, _Rollout_OneofSizer, []interface{}{ - (*Rollout_TrafficPercentStrategy_)(nil), - (*Rollout_DeleteServiceStrategy_)(nil), - } -} - -func _Rollout_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Rollout) - // strategy - switch x := m.Strategy.(type) { - case *Rollout_TrafficPercentStrategy_: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TrafficPercentStrategy); err != nil { - return err - } - case *Rollout_DeleteServiceStrategy_: - b.EncodeVarint(200<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DeleteServiceStrategy); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Rollout.Strategy has unexpected type %T", x) - } - return nil -} - -func _Rollout_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Rollout) - switch tag { - case 5: // strategy.traffic_percent_strategy - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Rollout_TrafficPercentStrategy) - err := b.DecodeMessage(msg) - m.Strategy = &Rollout_TrafficPercentStrategy_{msg} - return true, err - case 200: // strategy.delete_service_strategy - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Rollout_DeleteServiceStrategy) - err := b.DecodeMessage(msg) - m.Strategy = &Rollout_DeleteServiceStrategy_{msg} - return true, err - default: - return false, nil - } -} - -func _Rollout_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Rollout) - // strategy - switch x := m.Strategy.(type) { - case *Rollout_TrafficPercentStrategy_: - s := proto.Size(x.TrafficPercentStrategy) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Rollout_DeleteServiceStrategy_: - s := proto.Size(x.DeleteServiceStrategy) - n += proto.SizeVarint(200<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Strategy that specifies how Google Service Control should select -// different -// versions of service configurations based on traffic percentage. -// -// One example of how to gradually rollout a new service configuration using -// this -// strategy: -// Day 1 -// -// Rollout { -// id: "example.googleapis.com/rollout_20160206" -// traffic_percent_strategy { -// percentages: { -// "example.googleapis.com/20160201": 70.00 -// "example.googleapis.com/20160206": 30.00 -// } -// } -// } -// -// Day 2 -// -// Rollout { -// id: "example.googleapis.com/rollout_20160207" -// traffic_percent_strategy: { -// percentages: { -// "example.googleapis.com/20160206": 100.00 -// } -// } -// } -type Rollout_TrafficPercentStrategy struct { - // Maps service configuration IDs to their corresponding traffic percentage. - // Key is the service configuration ID, Value is the traffic percentage - // which must be greater than 0.0 and the sum must equal to 100.0. - Percentages map[string]float64 `protobuf:"bytes,1,rep,name=percentages" json:"percentages,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` -} - -func (m *Rollout_TrafficPercentStrategy) Reset() { *m = Rollout_TrafficPercentStrategy{} } -func (m *Rollout_TrafficPercentStrategy) String() string { return proto.CompactTextString(m) } -func (*Rollout_TrafficPercentStrategy) ProtoMessage() {} -func (*Rollout_TrafficPercentStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{7, 0} -} - -func (m *Rollout_TrafficPercentStrategy) GetPercentages() map[string]float64 { - if m != nil { - return m.Percentages - } - return nil -} - -// Strategy used to delete a service. This strategy is a placeholder only -// used by the system generated rollout to delete a service. -type Rollout_DeleteServiceStrategy struct { -} - -func (m *Rollout_DeleteServiceStrategy) Reset() { *m = Rollout_DeleteServiceStrategy{} } -func (m *Rollout_DeleteServiceStrategy) String() string { return proto.CompactTextString(m) } -func (*Rollout_DeleteServiceStrategy) ProtoMessage() {} -func (*Rollout_DeleteServiceStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{7, 1} -} - -func init() { - proto.RegisterType((*ManagedService)(nil), "google.api.servicemanagement.v1.ManagedService") - proto.RegisterType((*OperationMetadata)(nil), "google.api.servicemanagement.v1.OperationMetadata") - proto.RegisterType((*OperationMetadata_Step)(nil), "google.api.servicemanagement.v1.OperationMetadata.Step") - proto.RegisterType((*Diagnostic)(nil), "google.api.servicemanagement.v1.Diagnostic") - proto.RegisterType((*ConfigSource)(nil), "google.api.servicemanagement.v1.ConfigSource") - proto.RegisterType((*ConfigFile)(nil), "google.api.servicemanagement.v1.ConfigFile") - proto.RegisterType((*ConfigRef)(nil), "google.api.servicemanagement.v1.ConfigRef") - proto.RegisterType((*ChangeReport)(nil), "google.api.servicemanagement.v1.ChangeReport") - proto.RegisterType((*Rollout)(nil), "google.api.servicemanagement.v1.Rollout") - proto.RegisterType((*Rollout_TrafficPercentStrategy)(nil), "google.api.servicemanagement.v1.Rollout.TrafficPercentStrategy") - proto.RegisterType((*Rollout_DeleteServiceStrategy)(nil), "google.api.servicemanagement.v1.Rollout.DeleteServiceStrategy") - proto.RegisterEnum("google.api.servicemanagement.v1.OperationMetadata_Status", OperationMetadata_Status_name, OperationMetadata_Status_value) - proto.RegisterEnum("google.api.servicemanagement.v1.Diagnostic_Kind", Diagnostic_Kind_name, Diagnostic_Kind_value) - proto.RegisterEnum("google.api.servicemanagement.v1.ConfigFile_FileType", ConfigFile_FileType_name, ConfigFile_FileType_value) - proto.RegisterEnum("google.api.servicemanagement.v1.Rollout_RolloutStatus", Rollout_RolloutStatus_name, Rollout_RolloutStatus_value) -} - -func init() { proto.RegisterFile("google/api/servicemanagement/v1/resources.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1166 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xef, 0x8e, 0xdb, 0x44, - 0x10, 0xaf, 0xf3, 0xe7, 0xee, 0x32, 0xb9, 0x0b, 0xee, 0x96, 0xf6, 0xd2, 0xd0, 0x3f, 0xc1, 0x15, - 0xd2, 0x49, 0x48, 0x0e, 0x0d, 0x08, 0x28, 0x95, 0x5a, 0xe5, 0x12, 0xdf, 0x61, 0xc8, 0xd9, 0xee, - 0xda, 0x07, 0x2a, 0x5f, 0xac, 0xad, 0xbd, 0x71, 0x4d, 0x13, 0xdb, 0xb2, 0x37, 0x27, 0x45, 0xfd, - 0xc8, 0x0b, 0xf0, 0x0c, 0x7c, 0x81, 0x47, 0xe1, 0x03, 0x4f, 0x00, 0x2f, 0x83, 0xbc, 0x5e, 0xdf, - 0xe5, 0xcf, 0xa1, 0x14, 0xf8, 0x92, 0xec, 0xfc, 0x66, 0xf6, 0x37, 0xb3, 0xb3, 0x33, 0xb3, 0x86, - 0x5e, 0x10, 0xc7, 0xc1, 0x94, 0xf6, 0x48, 0x12, 0xf6, 0x32, 0x9a, 0x5e, 0x84, 0x1e, 0x9d, 0x91, - 0x88, 0x04, 0x74, 0x46, 0x23, 0xd6, 0xbb, 0x78, 0xdc, 0x4b, 0x69, 0x16, 0xcf, 0x53, 0x8f, 0x66, - 0x6a, 0x92, 0xc6, 0x2c, 0x46, 0x0f, 0x8b, 0x0d, 0x2a, 0x49, 0x42, 0x75, 0x63, 0x83, 0x7a, 0xf1, - 0xb8, 0x73, 0x6f, 0x89, 0x91, 0x44, 0x51, 0xcc, 0x08, 0x0b, 0xe3, 0x48, 0x6c, 0xef, 0x3c, 0x58, - 0xd2, 0x7a, 0x71, 0x34, 0x09, 0x03, 0xd7, 0x7b, 0x4d, 0xa2, 0x80, 0x0a, 0x7d, 0x7b, 0x33, 0x1e, - 0xa1, 0x79, 0x24, 0x34, 0xd3, 0x38, 0x0a, 0xd2, 0x79, 0x14, 0x85, 0x51, 0xd0, 0x8b, 0x13, 0x9a, - 0xae, 0xd0, 0xdf, 0x15, 0x46, 0x5c, 0x7a, 0x35, 0x9f, 0xf4, 0x48, 0xb4, 0x10, 0xaa, 0xee, 0xba, - 0x6a, 0x12, 0xd2, 0xa9, 0xef, 0xce, 0x48, 0xf6, 0x46, 0x58, 0xdc, 0x5b, 0xb7, 0xc8, 0x58, 0x3a, - 0xf7, 0x98, 0xd0, 0x3e, 0x5c, 0xd7, 0xb2, 0x70, 0x46, 0x33, 0x46, 0x66, 0x89, 0x30, 0x38, 0x14, - 0x06, 0x69, 0xe2, 0xf5, 0x32, 0x46, 0xd8, 0x5c, 0x04, 0xa5, 0x78, 0xd0, 0x3a, 0xe3, 0x29, 0xf2, - 0xed, 0xe2, 0x44, 0xe8, 0x43, 0xd8, 0x17, 0x87, 0x73, 0x23, 0x32, 0xa3, 0xed, 0x4a, 0x57, 0x3a, - 0x6a, 0xe0, 0xa6, 0xc0, 0x0c, 0x32, 0xa3, 0x48, 0x85, 0x5b, 0x49, 0x1a, 0xfb, 0x73, 0x8f, 0xa6, - 0x6e, 0x92, 0xc6, 0x3f, 0x52, 0x8f, 0xb9, 0xa1, 0xdf, 0xae, 0x72, 0xcb, 0x9b, 0xa5, 0xca, 0x2a, - 0x34, 0xba, 0xaf, 0xfc, 0x55, 0x85, 0x9b, 0x66, 0x99, 0x8e, 0x33, 0xca, 0x88, 0x4f, 0x18, 0x41, - 0x1f, 0x41, 0xab, 0xbc, 0x40, 0xee, 0x29, 0x6b, 0x4b, 0xdd, 0xea, 0x51, 0x03, 0x1f, 0x94, 0x68, - 0xee, 0x2b, 0x43, 0x67, 0x50, 0xcf, 0x18, 0x4d, 0xb2, 0x76, 0xa5, 0x5b, 0x3d, 0x6a, 0xf6, 0xbf, - 0x50, 0xb7, 0x5c, 0xb2, 0xba, 0xe1, 0x49, 0xb5, 0x19, 0x4d, 0x70, 0xc1, 0x82, 0x7a, 0x3c, 0xf6, - 0x20, 0xa5, 0x59, 0xe6, 0x26, 0x34, 0xf5, 0x68, 0xc4, 0x48, 0x40, 0x79, 0xec, 0x75, 0x8c, 0x4a, - 0x95, 0x75, 0xa9, 0x41, 0x4f, 0x00, 0x32, 0x46, 0x52, 0xe6, 0xe6, 0x39, 0x6d, 0xd7, 0xba, 0xd2, - 0x51, 0xb3, 0xdf, 0x29, 0x83, 0x28, 0x13, 0xae, 0x3a, 0x65, 0xc2, 0x71, 0x83, 0x5b, 0xe7, 0x72, - 0xe7, 0x2d, 0xd4, 0x72, 0xd7, 0xa8, 0x0b, 0x4d, 0x9f, 0x66, 0x5e, 0x1a, 0x26, 0x79, 0x58, 0x65, - 0x46, 0x97, 0x20, 0xf4, 0x02, 0x76, 0x8a, 0x6b, 0xe1, 0x0e, 0x5a, 0xfd, 0x27, 0xff, 0xe9, 0x94, - 0x39, 0x01, 0x16, 0x44, 0x4a, 0x00, 0x3b, 0x05, 0x82, 0xee, 0x00, 0xb2, 0x9d, 0x81, 0x73, 0x6e, - 0xbb, 0xe7, 0x86, 0x6d, 0x69, 0x43, 0xfd, 0x44, 0xd7, 0x46, 0xf2, 0x0d, 0xb4, 0x07, 0xb5, 0x91, - 0x69, 0x68, 0xb2, 0x84, 0xde, 0x83, 0xa6, 0x61, 0x3a, 0xae, 0xed, 0x0c, 0xb0, 0xa3, 0x8d, 0xe4, - 0x4a, 0x0e, 0xe8, 0x86, 0x6b, 0x61, 0xf3, 0x14, 0x6b, 0xb6, 0x2d, 0x57, 0x11, 0xc0, 0xce, 0xc9, - 0x40, 0x1f, 0x6b, 0x23, 0xb9, 0x86, 0x0e, 0xa0, 0x31, 0x1c, 0x18, 0x43, 0x6d, 0x9c, 0x8b, 0x75, - 0xe5, 0x37, 0x09, 0x60, 0x14, 0x92, 0x20, 0x8a, 0x33, 0x16, 0x7a, 0xa8, 0x03, 0x7b, 0xd3, 0xd8, - 0xe3, 0xa1, 0xb5, 0x25, 0x7e, 0xd2, 0x4b, 0x19, 0x8d, 0xa0, 0xf6, 0x26, 0x8c, 0x7c, 0x9e, 0x81, - 0x56, 0xff, 0x93, 0xad, 0x87, 0xbc, 0xa2, 0x55, 0xbf, 0x0d, 0x23, 0x1f, 0xf3, 0xdd, 0xa8, 0x0d, - 0xbb, 0x33, 0x9a, 0x65, 0xe5, 0xb5, 0x35, 0x70, 0x29, 0x2a, 0x0f, 0xa0, 0x96, 0xdb, 0xa1, 0x26, - 0xec, 0x7e, 0x3f, 0xc0, 0x86, 0x6e, 0x9c, 0xca, 0x37, 0x50, 0x03, 0xea, 0x1a, 0xc6, 0x26, 0x96, - 0x25, 0x85, 0xc0, 0xfe, 0x90, 0x37, 0xb6, 0xcd, 0x0b, 0x0c, 0xb5, 0xa0, 0x12, 0xfa, 0xed, 0x3a, - 0x27, 0xa9, 0x84, 0x3e, 0x1a, 0x40, 0x7d, 0x12, 0x4e, 0x69, 0x59, 0x6b, 0x1f, 0x6f, 0x0d, 0xb0, - 0x60, 0x3b, 0x09, 0xa7, 0x14, 0x17, 0x3b, 0x95, 0x5f, 0x2b, 0x00, 0x57, 0x28, 0xfa, 0x00, 0x1a, - 0x39, 0xee, 0x26, 0x84, 0xbd, 0x2e, 0xd3, 0x91, 0x03, 0x16, 0x61, 0xaf, 0xd1, 0x23, 0x38, 0xe0, - 0x4a, 0x2f, 0x8e, 0x18, 0x8d, 0x58, 0xc6, 0x8f, 0xb3, 0x8f, 0xf7, 0x73, 0x70, 0x28, 0x30, 0xf4, - 0x42, 0x30, 0xb0, 0x45, 0x42, 0x45, 0x75, 0x7c, 0xf6, 0x2f, 0xe2, 0x52, 0xf3, 0x1f, 0x67, 0x91, - 0xd0, 0xc2, 0x6f, 0xbe, 0x52, 0x7e, 0x92, 0x60, 0xaf, 0x84, 0xd1, 0x5d, 0xb8, 0x7d, 0xa2, 0x8f, - 0x35, 0xd7, 0x79, 0x69, 0x69, 0x6b, 0x05, 0x72, 0x08, 0xb7, 0x6c, 0x0d, 0x7f, 0xa7, 0x0f, 0x35, - 0x77, 0x68, 0x1a, 0x27, 0xfa, 0xa9, 0xfb, 0x72, 0x70, 0x36, 0x96, 0x25, 0x74, 0x13, 0x0e, 0x4c, - 0x4b, 0x33, 0xdc, 0x81, 0xa5, 0xbb, 0xdf, 0xd8, 0xa6, 0x21, 0x57, 0x56, 0x20, 0x6e, 0x55, 0x45, - 0xf7, 0xe1, 0x2e, 0x67, 0x1e, 0x69, 0xf6, 0x10, 0xeb, 0x96, 0x63, 0x62, 0xd7, 0xd6, 0x9c, 0xbc, - 0xaa, 0x1c, 0x53, 0xae, 0x29, 0x0f, 0xa1, 0x51, 0x84, 0x89, 0xe9, 0x04, 0x21, 0xa8, 0xf1, 0x69, - 0x53, 0xa4, 0x88, 0xaf, 0x15, 0x13, 0xf6, 0x87, 0x7c, 0xfe, 0x62, 0x9a, 0xc4, 0x29, 0x43, 0xcf, - 0xa1, 0xb5, 0x32, 0x96, 0x8b, 0x81, 0xd1, 0xec, 0xb7, 0x97, 0xd3, 0x51, 0x50, 0x8a, 0x7d, 0x07, - 0xde, 0x92, 0x94, 0x29, 0x7f, 0xee, 0xc0, 0x2e, 0x8e, 0xa7, 0xd3, 0x78, 0xce, 0xd0, 0x7d, 0x80, - 0xb4, 0x58, 0xe6, 0xa3, 0xab, 0x70, 0xdb, 0x10, 0x88, 0xee, 0xa3, 0xa7, 0xd0, 0xf4, 0x52, 0x4a, - 0x18, 0x2d, 0xda, 0xbe, 0xb2, 0xb5, 0xed, 0xa1, 0x30, 0xcf, 0x81, 0x9c, 0xbb, 0x90, 0x7c, 0xf7, - 0xd5, 0x42, 0xd4, 0x68, 0x43, 0x20, 0xc7, 0x0b, 0x64, 0xac, 0x35, 0xfb, 0xe7, 0x5b, 0xaf, 0x53, - 0x04, 0x5d, 0xfe, 0xaf, 0x76, 0x3a, 0x7a, 0x0b, 0x6d, 0x96, 0x92, 0xc9, 0x24, 0xf4, 0xca, 0x89, - 0xe6, 0x66, 0x2c, 0x25, 0x8c, 0x06, 0x0b, 0x5e, 0xdb, 0xcd, 0xfe, 0xf3, 0x77, 0xf6, 0xe0, 0x14, - 0x44, 0x62, 0xfe, 0xd9, 0x82, 0xe6, 0xeb, 0x1b, 0xf8, 0x0e, 0xbb, 0x56, 0x83, 0x16, 0x70, 0xe8, - 0xd3, 0x29, 0x65, 0xd4, 0x2d, 0x5f, 0x8d, 0x4b, 0xdf, 0xbf, 0x4b, 0xdc, 0xf9, 0xb3, 0x77, 0x76, - 0x3e, 0xe2, 0x44, 0xe2, 0x21, 0x5a, 0xf2, 0x7d, 0xdb, 0xbf, 0x4e, 0xb1, 0xf1, 0x52, 0xed, 0x6d, - 0xbc, 0x54, 0x9d, 0x3f, 0x24, 0xb8, 0x73, 0xfd, 0x91, 0x50, 0x0a, 0xcd, 0xab, 0xf9, 0x5f, 0x96, - 0x92, 0xf5, 0x3f, 0x13, 0xa5, 0x5e, 0x3d, 0x1c, 0x99, 0x16, 0xb1, 0x74, 0x81, 0x97, 0x9d, 0x74, - 0x9e, 0x81, 0xbc, 0x6e, 0x80, 0x64, 0xa8, 0xbe, 0xa1, 0x0b, 0x51, 0x81, 0xf9, 0x12, 0xbd, 0x0f, - 0xf5, 0x0b, 0x32, 0x9d, 0x17, 0x55, 0x27, 0xe1, 0x42, 0xf8, 0xaa, 0xf2, 0xa5, 0xd4, 0x39, 0x84, - 0xdb, 0xd7, 0xe6, 0x48, 0x99, 0xc3, 0xc1, 0x4a, 0x6d, 0xa0, 0x07, 0xd0, 0xc1, 0xe6, 0x78, 0x6c, - 0x9e, 0xf3, 0xa9, 0xbe, 0x39, 0xfb, 0xd7, 0x06, 0xbc, 0x94, 0x8f, 0x4c, 0xfb, 0x7c, 0x38, 0xcc, - 0x85, 0xca, 0xea, 0x84, 0x5f, 0x1d, 0xfe, 0x4d, 0xd8, 0xb5, 0x34, 0x63, 0x94, 0x8f, 0xd6, 0xfa, - 0x31, 0xc0, 0x5e, 0x79, 0xdb, 0xc7, 0x3f, 0x4b, 0xf0, 0xc8, 0x8b, 0x67, 0xdb, 0x12, 0x78, 0xdc, - 0xc2, 0xe5, 0x57, 0x9b, 0x95, 0x77, 0x91, 0x25, 0xfd, 0x60, 0x89, 0x2d, 0x41, 0x3c, 0x25, 0x51, - 0xa0, 0xc6, 0x69, 0xd0, 0x0b, 0x68, 0xc4, 0x7b, 0x4c, 0x7c, 0x02, 0x92, 0x24, 0xcc, 0xfe, 0xf1, - 0x33, 0xf0, 0xe9, 0x06, 0xf8, 0x4b, 0xa5, 0x76, 0x3a, 0xb0, 0xcf, 0x5e, 0xed, 0x70, 0x8e, 0x4f, - 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x2d, 0x64, 0x4d, 0x1e, 0x49, 0x0a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/api/servicemanagement/v1/servicemanager.pb.go b/vendor/google.golang.org/genproto/googleapis/api/servicemanagement/v1/servicemanager.pb.go deleted file mode 100644 index cbd3fb2e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/api/servicemanagement/v1/servicemanager.pb.go +++ /dev/null @@ -1,1514 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/api/servicemanagement/v1/servicemanager.proto - -package servicemanagement - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/serviceconfig" -import google_api22 "google.golang.org/genproto/googleapis/api/serviceconfig" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" -import _ "google.golang.org/genproto/protobuf/field_mask" -import _ "github.com/golang/protobuf/ptypes/struct" -import _ "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type GetServiceConfigRequest_ConfigView int32 - -const ( - // Server response includes all fields except SourceInfo. - GetServiceConfigRequest_BASIC GetServiceConfigRequest_ConfigView = 0 - // Server response includes all fields including SourceInfo. - // SourceFiles are of type 'google.api.servicemanagement.v1.ConfigFile' - // and are only available for configs created using the - // SubmitConfigSource method. - GetServiceConfigRequest_FULL GetServiceConfigRequest_ConfigView = 1 -) - -var GetServiceConfigRequest_ConfigView_name = map[int32]string{ - 0: "BASIC", - 1: "FULL", -} -var GetServiceConfigRequest_ConfigView_value = map[string]int32{ - "BASIC": 0, - "FULL": 1, -} - -func (x GetServiceConfigRequest_ConfigView) String() string { - return proto.EnumName(GetServiceConfigRequest_ConfigView_name, int32(x)) -} -func (GetServiceConfigRequest_ConfigView) EnumDescriptor() ([]byte, []int) { - return fileDescriptor1, []int{7, 0} -} - -// Request message for `ListServices` method. -type ListServicesRequest struct { - // Include services produced by the specified project. - ProducerProjectId string `protobuf:"bytes,1,opt,name=producer_project_id,json=producerProjectId" json:"producer_project_id,omitempty"` - // Requested size of the next page of data. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Token identifying which result to start with; returned by a previous list - // call. - PageToken string `protobuf:"bytes,6,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Include services consumed by the specified consumer. - // - // The Google Service Management implementation accepts the following - // forms: - // - project:<project_id> - ConsumerId string `protobuf:"bytes,7,opt,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"` -} - -func (m *ListServicesRequest) Reset() { *m = ListServicesRequest{} } -func (m *ListServicesRequest) String() string { return proto.CompactTextString(m) } -func (*ListServicesRequest) ProtoMessage() {} -func (*ListServicesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *ListServicesRequest) GetProducerProjectId() string { - if m != nil { - return m.ProducerProjectId - } - return "" -} - -func (m *ListServicesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListServicesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListServicesRequest) GetConsumerId() string { - if m != nil { - return m.ConsumerId - } - return "" -} - -// Response message for `ListServices` method. -type ListServicesResponse struct { - // The returned services will only have the name field set. - Services []*ManagedService `protobuf:"bytes,1,rep,name=services" json:"services,omitempty"` - // Token that can be passed to `ListServices` to resume a paginated query. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListServicesResponse) Reset() { *m = ListServicesResponse{} } -func (m *ListServicesResponse) String() string { return proto.CompactTextString(m) } -func (*ListServicesResponse) ProtoMessage() {} -func (*ListServicesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *ListServicesResponse) GetServices() []*ManagedService { - if m != nil { - return m.Services - } - return nil -} - -func (m *ListServicesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for `GetService` method. -type GetServiceRequest struct { - // The name of the service. See the `ServiceManager` overview for naming - // requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` -} - -func (m *GetServiceRequest) Reset() { *m = GetServiceRequest{} } -func (m *GetServiceRequest) String() string { return proto.CompactTextString(m) } -func (*GetServiceRequest) ProtoMessage() {} -func (*GetServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *GetServiceRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -// Request message for CreateService method. -type CreateServiceRequest struct { - // Initial values for the service resource. - Service *ManagedService `protobuf:"bytes,1,opt,name=service" json:"service,omitempty"` -} - -func (m *CreateServiceRequest) Reset() { *m = CreateServiceRequest{} } -func (m *CreateServiceRequest) String() string { return proto.CompactTextString(m) } -func (*CreateServiceRequest) ProtoMessage() {} -func (*CreateServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *CreateServiceRequest) GetService() *ManagedService { - if m != nil { - return m.Service - } - return nil -} - -// Request message for DeleteService method. -type DeleteServiceRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` -} - -func (m *DeleteServiceRequest) Reset() { *m = DeleteServiceRequest{} } -func (m *DeleteServiceRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteServiceRequest) ProtoMessage() {} -func (*DeleteServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *DeleteServiceRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -// Request message for UndeleteService method. -type UndeleteServiceRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` -} - -func (m *UndeleteServiceRequest) Reset() { *m = UndeleteServiceRequest{} } -func (m *UndeleteServiceRequest) String() string { return proto.CompactTextString(m) } -func (*UndeleteServiceRequest) ProtoMessage() {} -func (*UndeleteServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *UndeleteServiceRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -// Response message for UndeleteService method. -type UndeleteServiceResponse struct { - // Revived service resource. - Service *ManagedService `protobuf:"bytes,1,opt,name=service" json:"service,omitempty"` -} - -func (m *UndeleteServiceResponse) Reset() { *m = UndeleteServiceResponse{} } -func (m *UndeleteServiceResponse) String() string { return proto.CompactTextString(m) } -func (*UndeleteServiceResponse) ProtoMessage() {} -func (*UndeleteServiceResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *UndeleteServiceResponse) GetService() *ManagedService { - if m != nil { - return m.Service - } - return nil -} - -// Request message for GetServiceConfig method. -type GetServiceConfigRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The id of the service configuration resource. - ConfigId string `protobuf:"bytes,2,opt,name=config_id,json=configId" json:"config_id,omitempty"` - // Specifies which parts of the Service Config should be returned in the - // response. - View GetServiceConfigRequest_ConfigView `protobuf:"varint,3,opt,name=view,enum=google.api.servicemanagement.v1.GetServiceConfigRequest_ConfigView" json:"view,omitempty"` -} - -func (m *GetServiceConfigRequest) Reset() { *m = GetServiceConfigRequest{} } -func (m *GetServiceConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetServiceConfigRequest) ProtoMessage() {} -func (*GetServiceConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *GetServiceConfigRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *GetServiceConfigRequest) GetConfigId() string { - if m != nil { - return m.ConfigId - } - return "" -} - -func (m *GetServiceConfigRequest) GetView() GetServiceConfigRequest_ConfigView { - if m != nil { - return m.View - } - return GetServiceConfigRequest_BASIC -} - -// Request message for ListServiceConfigs method. -type ListServiceConfigsRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The token of the page to retrieve. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The max number of items to include in the response list. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListServiceConfigsRequest) Reset() { *m = ListServiceConfigsRequest{} } -func (m *ListServiceConfigsRequest) String() string { return proto.CompactTextString(m) } -func (*ListServiceConfigsRequest) ProtoMessage() {} -func (*ListServiceConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *ListServiceConfigsRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *ListServiceConfigsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListServiceConfigsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for ListServiceConfigs method. -type ListServiceConfigsResponse struct { - // The list of service configuration resources. - ServiceConfigs []*google_api22.Service `protobuf:"bytes,1,rep,name=service_configs,json=serviceConfigs" json:"service_configs,omitempty"` - // The token of the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListServiceConfigsResponse) Reset() { *m = ListServiceConfigsResponse{} } -func (m *ListServiceConfigsResponse) String() string { return proto.CompactTextString(m) } -func (*ListServiceConfigsResponse) ProtoMessage() {} -func (*ListServiceConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *ListServiceConfigsResponse) GetServiceConfigs() []*google_api22.Service { - if m != nil { - return m.ServiceConfigs - } - return nil -} - -func (m *ListServiceConfigsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for CreateServiceConfig method. -type CreateServiceConfigRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The service configuration resource. - ServiceConfig *google_api22.Service `protobuf:"bytes,2,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"` -} - -func (m *CreateServiceConfigRequest) Reset() { *m = CreateServiceConfigRequest{} } -func (m *CreateServiceConfigRequest) String() string { return proto.CompactTextString(m) } -func (*CreateServiceConfigRequest) ProtoMessage() {} -func (*CreateServiceConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *CreateServiceConfigRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *CreateServiceConfigRequest) GetServiceConfig() *google_api22.Service { - if m != nil { - return m.ServiceConfig - } - return nil -} - -// Request message for SubmitConfigSource method. -type SubmitConfigSourceRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The source configuration for the service. - ConfigSource *ConfigSource `protobuf:"bytes,2,opt,name=config_source,json=configSource" json:"config_source,omitempty"` - // Optional. If set, this will result in the generation of a - // `google.api.Service` configuration based on the `ConfigSource` provided, - // but the generated config and the sources will NOT be persisted. - ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly" json:"validate_only,omitempty"` -} - -func (m *SubmitConfigSourceRequest) Reset() { *m = SubmitConfigSourceRequest{} } -func (m *SubmitConfigSourceRequest) String() string { return proto.CompactTextString(m) } -func (*SubmitConfigSourceRequest) ProtoMessage() {} -func (*SubmitConfigSourceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *SubmitConfigSourceRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *SubmitConfigSourceRequest) GetConfigSource() *ConfigSource { - if m != nil { - return m.ConfigSource - } - return nil -} - -func (m *SubmitConfigSourceRequest) GetValidateOnly() bool { - if m != nil { - return m.ValidateOnly - } - return false -} - -// Response message for SubmitConfigSource method. -type SubmitConfigSourceResponse struct { - // The generated service configuration. - ServiceConfig *google_api22.Service `protobuf:"bytes,1,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"` -} - -func (m *SubmitConfigSourceResponse) Reset() { *m = SubmitConfigSourceResponse{} } -func (m *SubmitConfigSourceResponse) String() string { return proto.CompactTextString(m) } -func (*SubmitConfigSourceResponse) ProtoMessage() {} -func (*SubmitConfigSourceResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *SubmitConfigSourceResponse) GetServiceConfig() *google_api22.Service { - if m != nil { - return m.ServiceConfig - } - return nil -} - -// Request message for 'CreateServiceRollout' -type CreateServiceRolloutRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The rollout resource. The `service_name` field is output only. - Rollout *Rollout `protobuf:"bytes,2,opt,name=rollout" json:"rollout,omitempty"` -} - -func (m *CreateServiceRolloutRequest) Reset() { *m = CreateServiceRolloutRequest{} } -func (m *CreateServiceRolloutRequest) String() string { return proto.CompactTextString(m) } -func (*CreateServiceRolloutRequest) ProtoMessage() {} -func (*CreateServiceRolloutRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *CreateServiceRolloutRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *CreateServiceRolloutRequest) GetRollout() *Rollout { - if m != nil { - return m.Rollout - } - return nil -} - -// Request message for 'ListServiceRollouts' -type ListServiceRolloutsRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The token of the page to retrieve. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The max number of items to include in the response list. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Use `filter` to return subset of rollouts. - // The following filters are supported: - // -- To limit the results to only those in - // [status](google.api.servicemanagement.v1.RolloutStatus) 'SUCCESS', - // use filter='status=SUCCESS' - // -- To limit the results to those in - // [status](google.api.servicemanagement.v1.RolloutStatus) 'CANCELLED' - // or 'FAILED', use filter='status=CANCELLED OR status=FAILED' - Filter string `protobuf:"bytes,4,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListServiceRolloutsRequest) Reset() { *m = ListServiceRolloutsRequest{} } -func (m *ListServiceRolloutsRequest) String() string { return proto.CompactTextString(m) } -func (*ListServiceRolloutsRequest) ProtoMessage() {} -func (*ListServiceRolloutsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *ListServiceRolloutsRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *ListServiceRolloutsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListServiceRolloutsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListServiceRolloutsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// Response message for ListServiceRollouts method. -type ListServiceRolloutsResponse struct { - // The list of rollout resources. - Rollouts []*Rollout `protobuf:"bytes,1,rep,name=rollouts" json:"rollouts,omitempty"` - // The token of the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListServiceRolloutsResponse) Reset() { *m = ListServiceRolloutsResponse{} } -func (m *ListServiceRolloutsResponse) String() string { return proto.CompactTextString(m) } -func (*ListServiceRolloutsResponse) ProtoMessage() {} -func (*ListServiceRolloutsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *ListServiceRolloutsResponse) GetRollouts() []*Rollout { - if m != nil { - return m.Rollouts - } - return nil -} - -func (m *ListServiceRolloutsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for GetServiceRollout method. -type GetServiceRolloutRequest struct { - // The name of the service. See the [overview](/service-management/overview) - // for naming requirements. For example: `example.googleapis.com`. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The id of the rollout resource. - RolloutId string `protobuf:"bytes,2,opt,name=rollout_id,json=rolloutId" json:"rollout_id,omitempty"` -} - -func (m *GetServiceRolloutRequest) Reset() { *m = GetServiceRolloutRequest{} } -func (m *GetServiceRolloutRequest) String() string { return proto.CompactTextString(m) } -func (*GetServiceRolloutRequest) ProtoMessage() {} -func (*GetServiceRolloutRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *GetServiceRolloutRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *GetServiceRolloutRequest) GetRolloutId() string { - if m != nil { - return m.RolloutId - } - return "" -} - -// Request message for EnableService method. -type EnableServiceRequest struct { - // Name of the service to enable. Specifying an unknown service name will - // cause the request to fail. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The identity of consumer resource which service enablement will be - // applied to. - // - // The Google Service Management implementation accepts the following - // forms: - // - "project:<project_id>" - // - // Note: this is made compatible with - // google.api.servicecontrol.v1.Operation.consumer_id. - ConsumerId string `protobuf:"bytes,2,opt,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"` -} - -func (m *EnableServiceRequest) Reset() { *m = EnableServiceRequest{} } -func (m *EnableServiceRequest) String() string { return proto.CompactTextString(m) } -func (*EnableServiceRequest) ProtoMessage() {} -func (*EnableServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *EnableServiceRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *EnableServiceRequest) GetConsumerId() string { - if m != nil { - return m.ConsumerId - } - return "" -} - -// Request message for DisableService method. -type DisableServiceRequest struct { - // Name of the service to disable. Specifying an unknown service name - // will cause the request to fail. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The identity of consumer resource which service disablement will be - // applied to. - // - // The Google Service Management implementation accepts the following - // forms: - // - "project:<project_id>" - // - // Note: this is made compatible with - // google.api.servicecontrol.v1.Operation.consumer_id. - ConsumerId string `protobuf:"bytes,2,opt,name=consumer_id,json=consumerId" json:"consumer_id,omitempty"` -} - -func (m *DisableServiceRequest) Reset() { *m = DisableServiceRequest{} } -func (m *DisableServiceRequest) String() string { return proto.CompactTextString(m) } -func (*DisableServiceRequest) ProtoMessage() {} -func (*DisableServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } - -func (m *DisableServiceRequest) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *DisableServiceRequest) GetConsumerId() string { - if m != nil { - return m.ConsumerId - } - return "" -} - -// Request message for GenerateConfigReport method. -type GenerateConfigReportRequest struct { - // Service configuration for which we want to generate the report. - // For this version of API, the supported types are - // [google.api.servicemanagement.v1.ConfigRef][google.api.servicemanagement.v1.ConfigRef], - // [google.api.servicemanagement.v1.ConfigSource][google.api.servicemanagement.v1.ConfigSource], - // and [google.api.Service][google.api.Service] - NewConfig *google_protobuf1.Any `protobuf:"bytes,1,opt,name=new_config,json=newConfig" json:"new_config,omitempty"` - // Service configuration against which the comparison will be done. - // For this version of API, the supported types are - // [google.api.servicemanagement.v1.ConfigRef][google.api.servicemanagement.v1.ConfigRef], - // [google.api.servicemanagement.v1.ConfigSource][google.api.servicemanagement.v1.ConfigSource], - // and [google.api.Service][google.api.Service] - OldConfig *google_protobuf1.Any `protobuf:"bytes,2,opt,name=old_config,json=oldConfig" json:"old_config,omitempty"` -} - -func (m *GenerateConfigReportRequest) Reset() { *m = GenerateConfigReportRequest{} } -func (m *GenerateConfigReportRequest) String() string { return proto.CompactTextString(m) } -func (*GenerateConfigReportRequest) ProtoMessage() {} -func (*GenerateConfigReportRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } - -func (m *GenerateConfigReportRequest) GetNewConfig() *google_protobuf1.Any { - if m != nil { - return m.NewConfig - } - return nil -} - -func (m *GenerateConfigReportRequest) GetOldConfig() *google_protobuf1.Any { - if m != nil { - return m.OldConfig - } - return nil -} - -// Response message for GenerateConfigReport method. -type GenerateConfigReportResponse struct { - // Name of the service this report belongs to. - ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // ID of the service configuration this report belongs to. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // list of ChangeReport, each corresponding to comparison between two - // service configurations. - ChangeReports []*ChangeReport `protobuf:"bytes,3,rep,name=change_reports,json=changeReports" json:"change_reports,omitempty"` - // Errors / Linter warnings associated with the service definition this - // report - // belongs to. - Diagnostics []*Diagnostic `protobuf:"bytes,4,rep,name=diagnostics" json:"diagnostics,omitempty"` -} - -func (m *GenerateConfigReportResponse) Reset() { *m = GenerateConfigReportResponse{} } -func (m *GenerateConfigReportResponse) String() string { return proto.CompactTextString(m) } -func (*GenerateConfigReportResponse) ProtoMessage() {} -func (*GenerateConfigReportResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } - -func (m *GenerateConfigReportResponse) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *GenerateConfigReportResponse) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *GenerateConfigReportResponse) GetChangeReports() []*ChangeReport { - if m != nil { - return m.ChangeReports - } - return nil -} - -func (m *GenerateConfigReportResponse) GetDiagnostics() []*Diagnostic { - if m != nil { - return m.Diagnostics - } - return nil -} - -func init() { - proto.RegisterType((*ListServicesRequest)(nil), "google.api.servicemanagement.v1.ListServicesRequest") - proto.RegisterType((*ListServicesResponse)(nil), "google.api.servicemanagement.v1.ListServicesResponse") - proto.RegisterType((*GetServiceRequest)(nil), "google.api.servicemanagement.v1.GetServiceRequest") - proto.RegisterType((*CreateServiceRequest)(nil), "google.api.servicemanagement.v1.CreateServiceRequest") - proto.RegisterType((*DeleteServiceRequest)(nil), "google.api.servicemanagement.v1.DeleteServiceRequest") - proto.RegisterType((*UndeleteServiceRequest)(nil), "google.api.servicemanagement.v1.UndeleteServiceRequest") - proto.RegisterType((*UndeleteServiceResponse)(nil), "google.api.servicemanagement.v1.UndeleteServiceResponse") - proto.RegisterType((*GetServiceConfigRequest)(nil), "google.api.servicemanagement.v1.GetServiceConfigRequest") - proto.RegisterType((*ListServiceConfigsRequest)(nil), "google.api.servicemanagement.v1.ListServiceConfigsRequest") - proto.RegisterType((*ListServiceConfigsResponse)(nil), "google.api.servicemanagement.v1.ListServiceConfigsResponse") - proto.RegisterType((*CreateServiceConfigRequest)(nil), "google.api.servicemanagement.v1.CreateServiceConfigRequest") - proto.RegisterType((*SubmitConfigSourceRequest)(nil), "google.api.servicemanagement.v1.SubmitConfigSourceRequest") - proto.RegisterType((*SubmitConfigSourceResponse)(nil), "google.api.servicemanagement.v1.SubmitConfigSourceResponse") - proto.RegisterType((*CreateServiceRolloutRequest)(nil), "google.api.servicemanagement.v1.CreateServiceRolloutRequest") - proto.RegisterType((*ListServiceRolloutsRequest)(nil), "google.api.servicemanagement.v1.ListServiceRolloutsRequest") - proto.RegisterType((*ListServiceRolloutsResponse)(nil), "google.api.servicemanagement.v1.ListServiceRolloutsResponse") - proto.RegisterType((*GetServiceRolloutRequest)(nil), "google.api.servicemanagement.v1.GetServiceRolloutRequest") - proto.RegisterType((*EnableServiceRequest)(nil), "google.api.servicemanagement.v1.EnableServiceRequest") - proto.RegisterType((*DisableServiceRequest)(nil), "google.api.servicemanagement.v1.DisableServiceRequest") - proto.RegisterType((*GenerateConfigReportRequest)(nil), "google.api.servicemanagement.v1.GenerateConfigReportRequest") - proto.RegisterType((*GenerateConfigReportResponse)(nil), "google.api.servicemanagement.v1.GenerateConfigReportResponse") - proto.RegisterEnum("google.api.servicemanagement.v1.GetServiceConfigRequest_ConfigView", GetServiceConfigRequest_ConfigView_name, GetServiceConfigRequest_ConfigView_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ServiceManager service - -type ServiceManagerClient interface { - // Lists managed services. - // - // Returns all public services. For authenticated users, also returns all - // services the calling user has "servicemanagement.services.get" permission - // for. - // - // **BETA:** If the caller specifies the `consumer_id`, it returns only the - // services enabled on the consumer. The `consumer_id` must have the format - // of "project:{PROJECT-ID}". - ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error) - // Gets a managed service. Authentication is required unless the service is - // public. - GetService(ctx context.Context, in *GetServiceRequest, opts ...grpc.CallOption) (*ManagedService, error) - // Creates a new managed service. - // Please note one producer project can own no more than 20 services. - // - // Operation<response: ManagedService> - CreateService(ctx context.Context, in *CreateServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes a managed service. This method will change the service to the - // `Soft-Delete` state for 30 days. Within this period, service producers may - // call [UndeleteService][google.api.servicemanagement.v1.ServiceManager.UndeleteService] to restore the service. - // After 30 days, the service will be permanently deleted. - // - // Operation<response: google.protobuf.Empty> - DeleteService(ctx context.Context, in *DeleteServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Revives a previously deleted managed service. The method restores the - // service using the configuration at the time the service was deleted. - // The target service must exist and must have been deleted within the - // last 30 days. - // - // Operation<response: UndeleteServiceResponse> - UndeleteService(ctx context.Context, in *UndeleteServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Lists the history of the service configuration for a managed service, - // from the newest to the oldest. - ListServiceConfigs(ctx context.Context, in *ListServiceConfigsRequest, opts ...grpc.CallOption) (*ListServiceConfigsResponse, error) - // Gets a service configuration (version) for a managed service. - GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api22.Service, error) - // Creates a new service configuration (version) for a managed service. - // This method only stores the service configuration. To roll out the service - // configuration to backend systems please call - // [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout]. - CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api22.Service, error) - // Creates a new service configuration (version) for a managed service based - // on - // user-supplied configuration source files (for example: OpenAPI - // Specification). This method stores the source configurations as well as the - // generated service configuration. To rollout the service configuration to - // other services, - // please call [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout]. - // - // Operation<response: SubmitConfigSourceResponse> - SubmitConfigSource(ctx context.Context, in *SubmitConfigSourceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Lists the history of the service configuration rollouts for a managed - // service, from the newest to the oldest. - ListServiceRollouts(ctx context.Context, in *ListServiceRolloutsRequest, opts ...grpc.CallOption) (*ListServiceRolloutsResponse, error) - // Gets a service configuration [rollout][google.api.servicemanagement.v1.Rollout]. - GetServiceRollout(ctx context.Context, in *GetServiceRolloutRequest, opts ...grpc.CallOption) (*Rollout, error) - // Creates a new service configuration rollout. Based on rollout, the - // Google Service Management will roll out the service configurations to - // different backend services. For example, the logging configuration will be - // pushed to Google Cloud Logging. - // - // Please note that any previous pending and running Rollouts and associated - // Operations will be automatically cancelled so that the latest Rollout will - // not be blocked by previous Rollouts. - // - // Operation<response: Rollout> - CreateServiceRollout(ctx context.Context, in *CreateServiceRolloutRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Generates and returns a report (errors, warnings and changes from - // existing configurations) associated with - // GenerateConfigReportRequest.new_value - // - // If GenerateConfigReportRequest.old_value is specified, - // GenerateConfigReportRequest will contain a single ChangeReport based on the - // comparison between GenerateConfigReportRequest.new_value and - // GenerateConfigReportRequest.old_value. - // If GenerateConfigReportRequest.old_value is not specified, this method - // will compare GenerateConfigReportRequest.new_value with the last pushed - // service configuration. - GenerateConfigReport(ctx context.Context, in *GenerateConfigReportRequest, opts ...grpc.CallOption) (*GenerateConfigReportResponse, error) - // Enables a [service][google.api.servicemanagement.v1.ManagedService] for a project, so it can be used - // for the project. See - // [Cloud Auth Guide](https://cloud.google.com/docs/authentication) for - // more information. - // - // Operation<response: EnableServiceResponse> - EnableService(ctx context.Context, in *EnableServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Disables a [service][google.api.servicemanagement.v1.ManagedService] for a project, so it can no longer be - // be used for the project. It prevents accidental usage that may cause - // unexpected billing charges or security leaks. - // - // Operation<response: DisableServiceResponse> - DisableService(ctx context.Context, in *DisableServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type serviceManagerClient struct { - cc *grpc.ClientConn -} - -func NewServiceManagerClient(cc *grpc.ClientConn) ServiceManagerClient { - return &serviceManagerClient{cc} -} - -func (c *serviceManagerClient) ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error) { - out := new(ListServicesResponse) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/ListServices", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) GetService(ctx context.Context, in *GetServiceRequest, opts ...grpc.CallOption) (*ManagedService, error) { - out := new(ManagedService) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/GetService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) CreateService(ctx context.Context, in *CreateServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/CreateService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) DeleteService(ctx context.Context, in *DeleteServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/DeleteService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) UndeleteService(ctx context.Context, in *UndeleteServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/UndeleteService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) ListServiceConfigs(ctx context.Context, in *ListServiceConfigsRequest, opts ...grpc.CallOption) (*ListServiceConfigsResponse, error) { - out := new(ListServiceConfigsResponse) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/ListServiceConfigs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api22.Service, error) { - out := new(google_api22.Service) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/GetServiceConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api22.Service, error) { - out := new(google_api22.Service) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/CreateServiceConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) SubmitConfigSource(ctx context.Context, in *SubmitConfigSourceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/SubmitConfigSource", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) ListServiceRollouts(ctx context.Context, in *ListServiceRolloutsRequest, opts ...grpc.CallOption) (*ListServiceRolloutsResponse, error) { - out := new(ListServiceRolloutsResponse) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/ListServiceRollouts", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) GetServiceRollout(ctx context.Context, in *GetServiceRolloutRequest, opts ...grpc.CallOption) (*Rollout, error) { - out := new(Rollout) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/GetServiceRollout", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) CreateServiceRollout(ctx context.Context, in *CreateServiceRolloutRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/CreateServiceRollout", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) GenerateConfigReport(ctx context.Context, in *GenerateConfigReportRequest, opts ...grpc.CallOption) (*GenerateConfigReportResponse, error) { - out := new(GenerateConfigReportResponse) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/GenerateConfigReport", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) EnableService(ctx context.Context, in *EnableServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/EnableService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceManagerClient) DisableService(ctx context.Context, in *DisableServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/DisableService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ServiceManager service - -type ServiceManagerServer interface { - // Lists managed services. - // - // Returns all public services. For authenticated users, also returns all - // services the calling user has "servicemanagement.services.get" permission - // for. - // - // **BETA:** If the caller specifies the `consumer_id`, it returns only the - // services enabled on the consumer. The `consumer_id` must have the format - // of "project:{PROJECT-ID}". - ListServices(context.Context, *ListServicesRequest) (*ListServicesResponse, error) - // Gets a managed service. Authentication is required unless the service is - // public. - GetService(context.Context, *GetServiceRequest) (*ManagedService, error) - // Creates a new managed service. - // Please note one producer project can own no more than 20 services. - // - // Operation<response: ManagedService> - CreateService(context.Context, *CreateServiceRequest) (*google_longrunning.Operation, error) - // Deletes a managed service. This method will change the service to the - // `Soft-Delete` state for 30 days. Within this period, service producers may - // call [UndeleteService][google.api.servicemanagement.v1.ServiceManager.UndeleteService] to restore the service. - // After 30 days, the service will be permanently deleted. - // - // Operation<response: google.protobuf.Empty> - DeleteService(context.Context, *DeleteServiceRequest) (*google_longrunning.Operation, error) - // Revives a previously deleted managed service. The method restores the - // service using the configuration at the time the service was deleted. - // The target service must exist and must have been deleted within the - // last 30 days. - // - // Operation<response: UndeleteServiceResponse> - UndeleteService(context.Context, *UndeleteServiceRequest) (*google_longrunning.Operation, error) - // Lists the history of the service configuration for a managed service, - // from the newest to the oldest. - ListServiceConfigs(context.Context, *ListServiceConfigsRequest) (*ListServiceConfigsResponse, error) - // Gets a service configuration (version) for a managed service. - GetServiceConfig(context.Context, *GetServiceConfigRequest) (*google_api22.Service, error) - // Creates a new service configuration (version) for a managed service. - // This method only stores the service configuration. To roll out the service - // configuration to backend systems please call - // [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout]. - CreateServiceConfig(context.Context, *CreateServiceConfigRequest) (*google_api22.Service, error) - // Creates a new service configuration (version) for a managed service based - // on - // user-supplied configuration source files (for example: OpenAPI - // Specification). This method stores the source configurations as well as the - // generated service configuration. To rollout the service configuration to - // other services, - // please call [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout]. - // - // Operation<response: SubmitConfigSourceResponse> - SubmitConfigSource(context.Context, *SubmitConfigSourceRequest) (*google_longrunning.Operation, error) - // Lists the history of the service configuration rollouts for a managed - // service, from the newest to the oldest. - ListServiceRollouts(context.Context, *ListServiceRolloutsRequest) (*ListServiceRolloutsResponse, error) - // Gets a service configuration [rollout][google.api.servicemanagement.v1.Rollout]. - GetServiceRollout(context.Context, *GetServiceRolloutRequest) (*Rollout, error) - // Creates a new service configuration rollout. Based on rollout, the - // Google Service Management will roll out the service configurations to - // different backend services. For example, the logging configuration will be - // pushed to Google Cloud Logging. - // - // Please note that any previous pending and running Rollouts and associated - // Operations will be automatically cancelled so that the latest Rollout will - // not be blocked by previous Rollouts. - // - // Operation<response: Rollout> - CreateServiceRollout(context.Context, *CreateServiceRolloutRequest) (*google_longrunning.Operation, error) - // Generates and returns a report (errors, warnings and changes from - // existing configurations) associated with - // GenerateConfigReportRequest.new_value - // - // If GenerateConfigReportRequest.old_value is specified, - // GenerateConfigReportRequest will contain a single ChangeReport based on the - // comparison between GenerateConfigReportRequest.new_value and - // GenerateConfigReportRequest.old_value. - // If GenerateConfigReportRequest.old_value is not specified, this method - // will compare GenerateConfigReportRequest.new_value with the last pushed - // service configuration. - GenerateConfigReport(context.Context, *GenerateConfigReportRequest) (*GenerateConfigReportResponse, error) - // Enables a [service][google.api.servicemanagement.v1.ManagedService] for a project, so it can be used - // for the project. See - // [Cloud Auth Guide](https://cloud.google.com/docs/authentication) for - // more information. - // - // Operation<response: EnableServiceResponse> - EnableService(context.Context, *EnableServiceRequest) (*google_longrunning.Operation, error) - // Disables a [service][google.api.servicemanagement.v1.ManagedService] for a project, so it can no longer be - // be used for the project. It prevents accidental usage that may cause - // unexpected billing charges or security leaks. - // - // Operation<response: DisableServiceResponse> - DisableService(context.Context, *DisableServiceRequest) (*google_longrunning.Operation, error) -} - -func RegisterServiceManagerServer(s *grpc.Server, srv ServiceManagerServer) { - s.RegisterService(&_ServiceManager_serviceDesc, srv) -} - -func _ServiceManager_ListServices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListServicesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).ListServices(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/ListServices", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).ListServices(ctx, req.(*ListServicesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_GetService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).GetService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/GetService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).GetService(ctx, req.(*GetServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_CreateService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).CreateService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/CreateService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).CreateService(ctx, req.(*CreateServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_DeleteService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).DeleteService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/DeleteService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).DeleteService(ctx, req.(*DeleteServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_UndeleteService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UndeleteServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).UndeleteService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/UndeleteService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).UndeleteService(ctx, req.(*UndeleteServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_ListServiceConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListServiceConfigsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).ListServiceConfigs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/ListServiceConfigs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).ListServiceConfigs(ctx, req.(*ListServiceConfigsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_GetServiceConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServiceConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).GetServiceConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/GetServiceConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).GetServiceConfig(ctx, req.(*GetServiceConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_CreateServiceConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateServiceConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).CreateServiceConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/CreateServiceConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).CreateServiceConfig(ctx, req.(*CreateServiceConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_SubmitConfigSource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubmitConfigSourceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).SubmitConfigSource(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/SubmitConfigSource", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).SubmitConfigSource(ctx, req.(*SubmitConfigSourceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_ListServiceRollouts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListServiceRolloutsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).ListServiceRollouts(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/ListServiceRollouts", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).ListServiceRollouts(ctx, req.(*ListServiceRolloutsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_GetServiceRollout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServiceRolloutRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).GetServiceRollout(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/GetServiceRollout", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).GetServiceRollout(ctx, req.(*GetServiceRolloutRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_CreateServiceRollout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateServiceRolloutRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).CreateServiceRollout(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/CreateServiceRollout", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).CreateServiceRollout(ctx, req.(*CreateServiceRolloutRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_GenerateConfigReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GenerateConfigReportRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).GenerateConfigReport(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/GenerateConfigReport", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).GenerateConfigReport(ctx, req.(*GenerateConfigReportRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_EnableService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EnableServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).EnableService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/EnableService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).EnableService(ctx, req.(*EnableServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ServiceManager_DisableService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DisableServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceManagerServer).DisableService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.api.servicemanagement.v1.ServiceManager/DisableService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceManagerServer).DisableService(ctx, req.(*DisableServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ServiceManager_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.api.servicemanagement.v1.ServiceManager", - HandlerType: (*ServiceManagerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListServices", - Handler: _ServiceManager_ListServices_Handler, - }, - { - MethodName: "GetService", - Handler: _ServiceManager_GetService_Handler, - }, - { - MethodName: "CreateService", - Handler: _ServiceManager_CreateService_Handler, - }, - { - MethodName: "DeleteService", - Handler: _ServiceManager_DeleteService_Handler, - }, - { - MethodName: "UndeleteService", - Handler: _ServiceManager_UndeleteService_Handler, - }, - { - MethodName: "ListServiceConfigs", - Handler: _ServiceManager_ListServiceConfigs_Handler, - }, - { - MethodName: "GetServiceConfig", - Handler: _ServiceManager_GetServiceConfig_Handler, - }, - { - MethodName: "CreateServiceConfig", - Handler: _ServiceManager_CreateServiceConfig_Handler, - }, - { - MethodName: "SubmitConfigSource", - Handler: _ServiceManager_SubmitConfigSource_Handler, - }, - { - MethodName: "ListServiceRollouts", - Handler: _ServiceManager_ListServiceRollouts_Handler, - }, - { - MethodName: "GetServiceRollout", - Handler: _ServiceManager_GetServiceRollout_Handler, - }, - { - MethodName: "CreateServiceRollout", - Handler: _ServiceManager_CreateServiceRollout_Handler, - }, - { - MethodName: "GenerateConfigReport", - Handler: _ServiceManager_GenerateConfigReport_Handler, - }, - { - MethodName: "EnableService", - Handler: _ServiceManager_EnableService_Handler, - }, - { - MethodName: "DisableService", - Handler: _ServiceManager_DisableService_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/api/servicemanagement/v1/servicemanager.proto", -} - -func init() { - proto.RegisterFile("google/api/servicemanagement/v1/servicemanager.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 1420 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0x67, 0x9c, 0xb4, 0x4d, 0x5e, 0x62, 0xb7, 0x9d, 0xb8, 0x8d, 0xeb, 0x34, 0x6a, 0xba, 0x81, - 0x12, 0xa5, 0xd4, 0xab, 0xa4, 0xff, 0xa8, 0x53, 0x0e, 0x4d, 0x02, 0x55, 0x44, 0x4b, 0x23, 0xa7, - 0x05, 0x54, 0x90, 0xac, 0xcd, 0xee, 0x64, 0xbb, 0x74, 0x3d, 0x63, 0x76, 0xd6, 0x09, 0x69, 0x94, - 0x4b, 0x55, 0x09, 0x09, 0x4e, 0xa8, 0x40, 0x25, 0x8e, 0x15, 0xe2, 0xc0, 0x81, 0x0b, 0x07, 0x24, - 0x0e, 0x48, 0x7c, 0x06, 0xc4, 0x37, 0xe0, 0x33, 0x70, 0x46, 0x9e, 0x9d, 0x75, 0x76, 0xec, 0x8d, - 0x77, 0xd7, 0x02, 0x8e, 0xfb, 0x66, 0x7e, 0xef, 0xfd, 0xe6, 0xcd, 0x7b, 0x33, 0xbf, 0x59, 0xb8, - 0x62, 0x33, 0x66, 0xbb, 0x44, 0x37, 0x9a, 0x8e, 0xce, 0x89, 0xb7, 0xed, 0x98, 0xa4, 0x61, 0x50, - 0xc3, 0x26, 0x0d, 0x42, 0x7d, 0x7d, 0x7b, 0x41, 0x35, 0x7a, 0x95, 0xa6, 0xc7, 0x7c, 0x86, 0xcf, - 0x05, 0xa8, 0x8a, 0xd1, 0x74, 0x2a, 0x3d, 0xa8, 0xca, 0xf6, 0x42, 0xf9, 0x6c, 0xc4, 0xad, 0x41, - 0x29, 0xf3, 0x0d, 0xdf, 0x61, 0x94, 0x07, 0xf0, 0xf2, 0xa9, 0xe8, 0x68, 0xcb, 0x7f, 0x24, 0xcd, - 0xa5, 0x5e, 0x2e, 0x72, 0x44, 0x4f, 0x62, 0xe9, 0x11, 0xce, 0x5a, 0x9e, 0x49, 0xc2, 0x08, 0xb3, - 0x12, 0xe0, 0x32, 0x6a, 0x7b, 0x2d, 0x4a, 0x1d, 0x6a, 0xeb, 0xac, 0x49, 0x3c, 0x85, 0xc6, 0x19, - 0x39, 0x49, 0x7c, 0x6d, 0xb6, 0xb6, 0x74, 0x83, 0xee, 0xca, 0xa1, 0x99, 0xee, 0xa1, 0x2d, 0x87, - 0xb8, 0x56, 0xbd, 0x61, 0xf0, 0xc7, 0x72, 0xc6, 0xd9, 0xee, 0x19, 0xdc, 0xf7, 0x5a, 0xa6, 0x2f, - 0x47, 0x27, 0xe5, 0xa8, 0xd7, 0x34, 0x75, 0xee, 0x1b, 0x7e, 0x4b, 0xc6, 0xd4, 0x5e, 0x22, 0x98, - 0xb8, 0xe3, 0x70, 0x7f, 0x23, 0x58, 0x05, 0xaf, 0x91, 0x4f, 0x5b, 0x84, 0xfb, 0xb8, 0x02, 0x13, - 0x4d, 0x8f, 0x59, 0x2d, 0x93, 0x78, 0xf5, 0xa6, 0xc7, 0x3e, 0x21, 0xa6, 0x5f, 0x77, 0xac, 0x12, - 0x9a, 0x41, 0x73, 0xa3, 0xb5, 0x93, 0xe1, 0xd0, 0x7a, 0x30, 0xb2, 0x66, 0xe1, 0x29, 0x18, 0x6d, - 0x1a, 0x36, 0xa9, 0x73, 0xe7, 0x09, 0x29, 0x1d, 0x99, 0x41, 0x73, 0x47, 0x6a, 0x23, 0x6d, 0xc3, - 0x86, 0xf3, 0x84, 0xe0, 0x69, 0x00, 0x31, 0xe8, 0xb3, 0xc7, 0x84, 0x96, 0x8e, 0x0a, 0x1f, 0x62, - 0xfa, 0xfd, 0xb6, 0x01, 0x9f, 0x83, 0x31, 0x93, 0x51, 0xde, 0x6a, 0x10, 0xaf, 0x1d, 0xe3, 0x98, - 0x18, 0x87, 0xd0, 0xb4, 0x66, 0x69, 0x5f, 0x22, 0x28, 0xaa, 0x24, 0x79, 0x93, 0x51, 0x4e, 0xf0, - 0xbb, 0x30, 0x22, 0xd3, 0xcf, 0x4b, 0x68, 0x66, 0x68, 0x6e, 0x6c, 0x51, 0xaf, 0x24, 0x94, 0x42, - 0xe5, 0xae, 0xf8, 0xb2, 0xa4, 0xaf, 0x5a, 0xc7, 0x01, 0xbe, 0x00, 0xc7, 0x29, 0xf9, 0xcc, 0xaf, - 0x47, 0xa8, 0xe6, 0x04, 0x95, 0x7c, 0xdb, 0xbc, 0x1e, 0xd2, 0xd5, 0xae, 0xc1, 0xc9, 0xdb, 0x24, - 0xe4, 0x12, 0xe6, 0xeb, 0x3c, 0x8c, 0x4b, 0x47, 0x75, 0x6a, 0x34, 0x88, 0x4c, 0xd4, 0x98, 0xb4, - 0xbd, 0x67, 0x34, 0x88, 0x66, 0x40, 0x71, 0xc5, 0x23, 0x86, 0x4f, 0xba, 0xa0, 0x6b, 0x70, 0x4c, - 0x4e, 0x13, 0xa8, 0x01, 0xd6, 0x10, 0xe2, 0xb5, 0x1b, 0x50, 0x5c, 0x25, 0x2e, 0xe9, 0x09, 0x91, - 0x82, 0xdd, 0x12, 0x9c, 0x7e, 0x40, 0xad, 0x01, 0xc1, 0x16, 0x4c, 0xf6, 0x80, 0xe5, 0x16, 0xfd, - 0x8b, 0xab, 0xfb, 0x13, 0xc1, 0xe4, 0x41, 0xe6, 0x57, 0x18, 0xdd, 0x72, 0xec, 0xf4, 0x24, 0xdb, - 0x25, 0x6a, 0x0a, 0x4c, 0xbb, 0xc8, 0x82, 0x9d, 0x1d, 0x09, 0x0c, 0x6b, 0x16, 0xfe, 0x00, 0x86, - 0xb7, 0x1d, 0xb2, 0x53, 0x1a, 0x9a, 0x41, 0x73, 0x85, 0xc5, 0x95, 0x44, 0x8e, 0x87, 0xf0, 0xa8, - 0x04, 0x5f, 0xef, 0x3b, 0x64, 0xa7, 0x26, 0x1c, 0x6a, 0xe7, 0x01, 0x0e, 0x6c, 0x78, 0x14, 0x8e, - 0x2c, 0xdf, 0xda, 0x58, 0x5b, 0x39, 0xf1, 0x0a, 0x1e, 0x81, 0xe1, 0x77, 0x1e, 0xdc, 0xb9, 0x73, - 0x02, 0x69, 0x4f, 0xe0, 0x4c, 0xa4, 0xba, 0x83, 0xd9, 0x3c, 0xc3, 0xc2, 0xd4, 0xf6, 0xca, 0x75, - 0xb7, 0x97, 0xd2, 0x9a, 0x43, 0x6a, 0x6b, 0x6a, 0x4f, 0x11, 0x94, 0xe3, 0x82, 0xcb, 0xdd, 0xbb, - 0x09, 0xc7, 0xc3, 0xe8, 0x41, 0xaa, 0xc2, 0x3e, 0x9b, 0x88, 0x66, 0x28, 0xdc, 0xa9, 0x02, 0x57, - 0xbc, 0xa4, 0xee, 0xa8, 0x3d, 0x28, 0x2b, 0x9d, 0x91, 0x79, 0x6b, 0xab, 0x50, 0x50, 0x69, 0x8a, - 0x38, 0x87, 0xb0, 0xcc, 0x2b, 0x2c, 0xb5, 0x5f, 0x10, 0x9c, 0xd9, 0x68, 0x6d, 0x36, 0x1c, 0x3f, - 0x30, 0x6c, 0x88, 0x83, 0x3b, 0x43, 0xf0, 0x1a, 0xe4, 0x65, 0x5d, 0x05, 0x67, 0xbe, 0x8c, 0x7d, - 0x29, 0xb1, 0x86, 0x94, 0x78, 0xe3, 0x66, 0xe4, 0x0b, 0xcf, 0x42, 0x7e, 0xdb, 0x70, 0x1d, 0xcb, - 0xf0, 0x49, 0x9d, 0x51, 0x77, 0x57, 0xec, 0xdb, 0x48, 0x6d, 0x3c, 0x34, 0xde, 0xa3, 0xee, 0xae, - 0xf6, 0x21, 0x94, 0xe3, 0x88, 0xcb, 0xad, 0xeb, 0xcd, 0x09, 0x4a, 0x9d, 0x93, 0x67, 0x08, 0xa6, - 0xd4, 0xb3, 0x8a, 0xb9, 0x2e, 0x6b, 0xf9, 0x19, 0xb2, 0xb2, 0x0c, 0xc7, 0xbc, 0x00, 0x24, 0xf3, - 0x31, 0x97, 0x98, 0x8f, 0x30, 0x48, 0x08, 0xd4, 0x9e, 0xab, 0xc5, 0x29, 0xc7, 0xff, 0xa7, 0xd6, - 0xc0, 0xa7, 0xe1, 0xe8, 0x96, 0xe3, 0xfa, 0xc4, 0x2b, 0x0d, 0x0b, 0x9c, 0xfc, 0x6a, 0xdf, 0x46, - 0x53, 0xb1, 0xac, 0x64, 0xe2, 0x57, 0x61, 0x44, 0x2e, 0x20, 0x6c, 0x96, 0xf4, 0x4b, 0xef, 0x20, - 0x53, 0xf7, 0xce, 0xc7, 0x50, 0x8a, 0xdc, 0x46, 0x99, 0xb7, 0x69, 0x1a, 0x40, 0x86, 0x3c, 0x38, - 0x15, 0x47, 0xa5, 0x65, 0xcd, 0xd2, 0x1e, 0x42, 0xf1, 0x6d, 0x6a, 0x6c, 0xba, 0xd9, 0xef, 0x84, - 0xee, 0x5b, 0x3d, 0xd7, 0x73, 0xab, 0x7f, 0x04, 0xa7, 0x56, 0x1d, 0xfe, 0x1f, 0x39, 0xff, 0x1c, - 0xc1, 0xd4, 0x6d, 0x42, 0xdb, 0x0a, 0xab, 0x73, 0x9c, 0x34, 0x99, 0xd7, 0x49, 0xcd, 0x65, 0x00, - 0x4a, 0x76, 0xd4, 0xce, 0x28, 0x86, 0xdb, 0x14, 0x6a, 0xa8, 0xca, 0x2d, 0xba, 0x5b, 0x1b, 0xa5, - 0x64, 0x27, 0xf0, 0xd0, 0x06, 0x31, 0xd7, 0x52, 0x8f, 0x98, 0x43, 0x40, 0xcc, 0xb5, 0x64, 0x2f, - 0xfd, 0x8d, 0xe0, 0x6c, 0x3c, 0x13, 0x59, 0x2f, 0x29, 0x96, 0x5b, 0x80, 0x5c, 0x67, 0x95, 0x39, - 0xc7, 0xc2, 0xf7, 0xa1, 0x60, 0x3e, 0x32, 0xa8, 0x4d, 0xea, 0x9e, 0xf0, 0xc5, 0x4b, 0x43, 0xa2, - 0xd0, 0x52, 0x9c, 0x39, 0x02, 0x26, 0x19, 0xe4, 0xcd, 0xc8, 0x17, 0xc7, 0x77, 0x61, 0xcc, 0x72, - 0x0c, 0x9b, 0x32, 0xee, 0x3b, 0x26, 0x2f, 0x0d, 0x0b, 0x97, 0x17, 0x13, 0x5d, 0xae, 0x76, 0x30, - 0xb5, 0x28, 0x7e, 0xf1, 0xa7, 0x09, 0x28, 0xc8, 0x9d, 0x0d, 0x6e, 0x74, 0x0f, 0x7f, 0x85, 0x60, - 0x3c, 0x2a, 0xe4, 0xf0, 0x95, 0x44, 0xef, 0x31, 0xe2, 0xb4, 0x7c, 0x35, 0x23, 0x2a, 0x48, 0xb4, - 0x56, 0x7c, 0xfa, 0xc7, 0x5f, 0xcf, 0x73, 0x05, 0x3c, 0x1e, 0x79, 0x47, 0x70, 0xfc, 0x2d, 0x02, - 0x38, 0xe8, 0x20, 0xbc, 0x98, 0xe1, 0xea, 0x0f, 0xf9, 0x64, 0x95, 0x34, 0xda, 0xac, 0x60, 0x32, - 0x8d, 0xa7, 0xa2, 0x4c, 0xf4, 0xbd, 0x68, 0x19, 0xec, 0xe3, 0x67, 0x08, 0xf2, 0xca, 0x21, 0x8c, - 0x93, 0xd7, 0x1d, 0x27, 0x30, 0xcb, 0xd3, 0x21, 0x2c, 0xf2, 0xfa, 0xa8, 0xdc, 0x0b, 0x5f, 0x1f, - 0xda, 0xb4, 0x20, 0x33, 0xa9, 0x29, 0x69, 0xa9, 0x86, 0xaa, 0x0b, 0x7f, 0x81, 0x20, 0xaf, 0x88, - 0xca, 0x14, 0x34, 0xe2, 0x44, 0x68, 0x12, 0x0d, 0x99, 0x93, 0xf9, 0xbe, 0x39, 0x79, 0x81, 0xe0, - 0x78, 0x97, 0xd2, 0xc4, 0xd7, 0x13, 0xe9, 0xc4, 0x0b, 0xdb, 0x24, 0x42, 0x6f, 0x08, 0x42, 0x17, - 0xb4, 0x57, 0xfb, 0x10, 0xaa, 0xb6, 0xa4, 0x6b, 0xfc, 0x2b, 0x02, 0xdc, 0x2b, 0xa4, 0x70, 0x35, - 0x4b, 0xa9, 0xaa, 0xd2, 0xaf, 0xbc, 0x34, 0x10, 0x56, 0x16, 0xfb, 0x45, 0xc1, 0xfe, 0x35, 0x3c, - 0xdb, 0x87, 0xbd, 0x2e, 0x35, 0x1d, 0xfe, 0x0e, 0xc1, 0x89, 0x6e, 0x45, 0x8b, 0xdf, 0x1c, 0x54, - 0x04, 0x97, 0xe3, 0x24, 0x86, 0x76, 0x5d, 0x10, 0x5a, 0xc0, 0x7a, 0x0a, 0x42, 0xfa, 0x5e, 0x47, - 0xa9, 0xef, 0xe3, 0xef, 0x11, 0x4c, 0xc4, 0xc8, 0x43, 0xbc, 0x94, 0xad, 0x1b, 0x52, 0x50, 0x5c, - 0x12, 0x14, 0xaf, 0x6a, 0x69, 0x72, 0x56, 0xed, 0x52, 0x57, 0xf8, 0x07, 0x04, 0xb8, 0x57, 0x8e, - 0xa5, 0x28, 0x80, 0x43, 0xc5, 0x67, 0x52, 0x81, 0x5e, 0x15, 0x74, 0x75, 0x6d, 0x3e, 0x0d, 0x5d, - 0x2e, 0xa2, 0x54, 0xd1, 0x3c, 0xfe, 0x4d, 0x7d, 0xf2, 0x87, 0xfa, 0x05, 0x67, 0x2a, 0xb7, 0x2e, - 0x2d, 0x56, 0xbe, 0x39, 0x18, 0x58, 0x16, 0xab, 0x6c, 0x35, 0xdc, 0xaf, 0xd5, 0xf4, 0x8e, 0x34, - 0xfa, 0x19, 0x29, 0x2f, 0xf0, 0xc0, 0x8c, 0x6f, 0x64, 0x39, 0xb8, 0x15, 0x9d, 0x54, 0x4e, 0xad, - 0xcf, 0xb4, 0x1b, 0x82, 0xe8, 0x65, 0xbc, 0x90, 0x86, 0xa8, 0xbe, 0x77, 0x20, 0xad, 0xf6, 0xf1, - 0x8f, 0xa8, 0xfb, 0xfd, 0x2f, 0x89, 0xdf, 0xcc, 0x78, 0xaa, 0xab, 0xdc, 0x53, 0xd6, 0x48, 0xaa, - 0xcc, 0x56, 0x43, 0xe5, 0x8d, 0x7f, 0x47, 0x50, 0x8c, 0x13, 0x2d, 0x29, 0xc8, 0xf6, 0x51, 0x5d, - 0xe5, 0xb7, 0x06, 0x44, 0xab, 0x65, 0xa2, 0x9d, 0x57, 0x6e, 0x2a, 0x3b, 0x06, 0xd2, 0xae, 0xf3, - 0xaf, 0x11, 0xe4, 0x15, 0xf1, 0x9a, 0xe2, 0xe2, 0x8a, 0x13, 0xbb, 0x49, 0x29, 0xbe, 0x24, 0x58, - 0xbd, 0xae, 0x69, 0xfd, 0xee, 0x09, 0x22, 0x1c, 0xb7, 0x69, 0xbd, 0x40, 0x50, 0x50, 0x75, 0x2f, - 0xbe, 0x96, 0x42, 0x63, 0xf1, 0xec, 0xc4, 0x2a, 0x82, 0xd8, 0x5c, 0xdf, 0xe3, 0xac, 0x6a, 0x05, - 0x9e, 0xab, 0x68, 0x7e, 0xf9, 0x1b, 0x04, 0xb3, 0x26, 0x6b, 0x24, 0x91, 0x59, 0x9e, 0x50, 0x55, - 0xdd, 0x7a, 0x5b, 0xf8, 0xae, 0xa3, 0x87, 0xeb, 0x12, 0x67, 0x33, 0xd7, 0xa0, 0x76, 0x85, 0x79, - 0xb6, 0x6e, 0x13, 0x2a, 0x64, 0xb1, 0xfc, 0x5f, 0x6a, 0x34, 0x1d, 0x7e, 0xe8, 0x3f, 0xd3, 0xa5, - 0x1e, 0xe3, 0xcb, 0xdc, 0xf0, 0xed, 0x5b, 0x1b, 0x77, 0x37, 0x8f, 0x0a, 0x1f, 0x97, 0xff, 0x09, - 0x00, 0x00, 0xff, 0xff, 0x50, 0x43, 0x0b, 0xb9, 0x1c, 0x16, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/legacy/audit_data.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/legacy/audit_data.pb.go deleted file mode 100644 index 48c409a9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/legacy/audit_data.pb.go +++ /dev/null @@ -1,83 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/legacy/audit_data.proto - -/* -Package legacy is a generated protocol buffer package. - -It is generated from these files: - google/appengine/legacy/audit_data.proto - -It has these top-level messages: - AuditData -*/ -package legacy - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Admin Console legacy audit log. -type AuditData struct { - // Text description of the admin event. - // This is the "Event" column in Admin Console's Admin Logs. - EventMessage string `protobuf:"bytes,1,opt,name=event_message,json=eventMessage" json:"event_message,omitempty"` - // Arbitrary event data. - // This is the "Result" column in Admin Console's Admin Logs. - EventData map[string]string `protobuf:"bytes,2,rep,name=event_data,json=eventData" json:"event_data,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *AuditData) Reset() { *m = AuditData{} } -func (m *AuditData) String() string { return proto.CompactTextString(m) } -func (*AuditData) ProtoMessage() {} -func (*AuditData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *AuditData) GetEventMessage() string { - if m != nil { - return m.EventMessage - } - return "" -} - -func (m *AuditData) GetEventData() map[string]string { - if m != nil { - return m.EventData - } - return nil -} - -func init() { - proto.RegisterType((*AuditData)(nil), "google.appengine.legacy.AuditData") -} - -func init() { proto.RegisterFile("google/appengine/legacy/audit_data.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 247 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0x4f, 0x4b, 0x03, 0x31, - 0x10, 0xc5, 0xc9, 0x16, 0x85, 0x1d, 0xb5, 0x48, 0x10, 0x5c, 0xf4, 0x52, 0xf4, 0xb2, 0xa7, 0x04, - 0xf5, 0x22, 0xfe, 0x39, 0x58, 0xec, 0x51, 0x58, 0x7a, 0xf4, 0x52, 0xc6, 0x76, 0x18, 0x16, 0xb7, - 0x49, 0xd8, 0x4d, 0x0b, 0xfb, 0xed, 0xfc, 0x68, 0x92, 0xa4, 0x2e, 0x48, 0xe9, 0x29, 0x33, 0x6f, - 0x7e, 0x99, 0x79, 0x3c, 0x28, 0xd9, 0x5a, 0x6e, 0x48, 0xa3, 0x73, 0x64, 0xb8, 0x36, 0xa4, 0x1b, - 0x62, 0x5c, 0xf6, 0x1a, 0x37, 0xab, 0xda, 0x2f, 0x56, 0xe8, 0x51, 0xb9, 0xd6, 0x7a, 0x2b, 0x2f, - 0x13, 0xa9, 0x06, 0x52, 0x25, 0xf2, 0xe6, 0x47, 0x40, 0xfe, 0x16, 0xe8, 0x77, 0xf4, 0x28, 0x6f, - 0xe1, 0x8c, 0xb6, 0x64, 0xfc, 0x62, 0x4d, 0x5d, 0x87, 0x4c, 0x85, 0x98, 0x88, 0x32, 0x9f, 0x9f, - 0x46, 0xf1, 0x23, 0x69, 0xb2, 0x02, 0x48, 0x50, 0xd8, 0x5f, 0x64, 0x93, 0x51, 0x79, 0x72, 0x7f, - 0xa7, 0x0e, 0x1c, 0x50, 0xc3, 0x72, 0x35, 0x0b, 0x9f, 0x42, 0x35, 0x33, 0xbe, 0xed, 0xe7, 0x39, - 0xfd, 0xf5, 0x57, 0x2f, 0x30, 0xfe, 0x3f, 0x94, 0xe7, 0x30, 0xfa, 0xa6, 0x7e, 0x77, 0x3e, 0x94, - 0xf2, 0x02, 0x8e, 0xb6, 0xd8, 0x6c, 0xa8, 0xc8, 0xa2, 0x96, 0x9a, 0xa7, 0xec, 0x51, 0x4c, 0x0d, - 0x5c, 0x2f, 0xed, 0xfa, 0x90, 0x81, 0xe9, 0x78, 0x70, 0x50, 0x85, 0x28, 0x2a, 0xf1, 0xf9, 0xba, - 0x43, 0xd9, 0x36, 0x68, 0x58, 0xd9, 0x96, 0x35, 0x93, 0x89, 0x41, 0xe9, 0x34, 0x42, 0x57, 0x77, - 0x7b, 0xa9, 0x3e, 0xa7, 0xe7, 0xeb, 0x38, 0x92, 0x0f, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4e, - 0x5d, 0x14, 0xaa, 0x7e, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/logging/v1/request_log.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/logging/v1/request_log.pb.go deleted file mode 100644 index 7fb8990e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/logging/v1/request_log.pb.go +++ /dev/null @@ -1,538 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/logging/v1/request_log.proto - -/* -Package logging is a generated protocol buffer package. - -It is generated from these files: - google/appengine/logging/v1/request_log.proto - -It has these top-level messages: - LogLine - SourceLocation - SourceReference - RequestLog -*/ -package logging - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_logging_type "google.golang.org/genproto/googleapis/logging/type" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Application log line emitted while processing a request. -type LogLine struct { - // Approximate time when this log entry was made. - Time *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=time" json:"time,omitempty"` - // Severity of this log entry. - Severity google_logging_type.LogSeverity `protobuf:"varint,2,opt,name=severity,enum=google.logging.type.LogSeverity" json:"severity,omitempty"` - // App-provided log message. - LogMessage string `protobuf:"bytes,3,opt,name=log_message,json=logMessage" json:"log_message,omitempty"` - // Where in the source code this log message was written. - SourceLocation *SourceLocation `protobuf:"bytes,4,opt,name=source_location,json=sourceLocation" json:"source_location,omitempty"` -} - -func (m *LogLine) Reset() { *m = LogLine{} } -func (m *LogLine) String() string { return proto.CompactTextString(m) } -func (*LogLine) ProtoMessage() {} -func (*LogLine) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *LogLine) GetTime() *google_protobuf2.Timestamp { - if m != nil { - return m.Time - } - return nil -} - -func (m *LogLine) GetSeverity() google_logging_type.LogSeverity { - if m != nil { - return m.Severity - } - return google_logging_type.LogSeverity_DEFAULT -} - -func (m *LogLine) GetLogMessage() string { - if m != nil { - return m.LogMessage - } - return "" -} - -func (m *LogLine) GetSourceLocation() *SourceLocation { - if m != nil { - return m.SourceLocation - } - return nil -} - -// Specifies a location in a source code file. -type SourceLocation struct { - // Source file name. Depending on the runtime environment, this might be a - // simple name or a fully-qualified name. - File string `protobuf:"bytes,1,opt,name=file" json:"file,omitempty"` - // Line within the source file. - Line int64 `protobuf:"varint,2,opt,name=line" json:"line,omitempty"` - // Human-readable name of the function or method being invoked, with optional - // context such as the class or package name. This information is used in - // contexts such as the logs viewer, where a file and line number are less - // meaningful. The format can vary by language. For example: - // `qual.if.ied.Class.method` (Java), `dir/package.func` (Go), `function` - // (Python). - FunctionName string `protobuf:"bytes,3,opt,name=function_name,json=functionName" json:"function_name,omitempty"` -} - -func (m *SourceLocation) Reset() { *m = SourceLocation{} } -func (m *SourceLocation) String() string { return proto.CompactTextString(m) } -func (*SourceLocation) ProtoMessage() {} -func (*SourceLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *SourceLocation) GetFile() string { - if m != nil { - return m.File - } - return "" -} - -func (m *SourceLocation) GetLine() int64 { - if m != nil { - return m.Line - } - return 0 -} - -func (m *SourceLocation) GetFunctionName() string { - if m != nil { - return m.FunctionName - } - return "" -} - -// A reference to a particular snapshot of the source tree used to build and -// deploy an application. -type SourceReference struct { - // Optional. A URI string identifying the repository. - // Example: "https://github.com/GoogleCloudPlatform/kubernetes.git" - Repository string `protobuf:"bytes,1,opt,name=repository" json:"repository,omitempty"` - // The canonical and persistent identifier of the deployed revision. - // Example (git): "0035781c50ec7aa23385dc841529ce8a4b70db1b" - RevisionId string `protobuf:"bytes,2,opt,name=revision_id,json=revisionId" json:"revision_id,omitempty"` -} - -func (m *SourceReference) Reset() { *m = SourceReference{} } -func (m *SourceReference) String() string { return proto.CompactTextString(m) } -func (*SourceReference) ProtoMessage() {} -func (*SourceReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *SourceReference) GetRepository() string { - if m != nil { - return m.Repository - } - return "" -} - -func (m *SourceReference) GetRevisionId() string { - if m != nil { - return m.RevisionId - } - return "" -} - -// Complete log information about a single HTTP request to an App Engine -// application. -type RequestLog struct { - // Application that handled this request. - AppId string `protobuf:"bytes,1,opt,name=app_id,json=appId" json:"app_id,omitempty"` - // Module of the application that handled this request. - ModuleId string `protobuf:"bytes,37,opt,name=module_id,json=moduleId" json:"module_id,omitempty"` - // Version of the application that handled this request. - VersionId string `protobuf:"bytes,2,opt,name=version_id,json=versionId" json:"version_id,omitempty"` - // Globally unique identifier for a request, which is based on the request - // start time. Request IDs for requests which started later will compare - // greater as strings than those for requests which started earlier. - RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId" json:"request_id,omitempty"` - // Origin IP address. - Ip string `protobuf:"bytes,4,opt,name=ip" json:"ip,omitempty"` - // Time when the request started. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time when the request finished. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,7,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Latency of the request. - Latency *google_protobuf1.Duration `protobuf:"bytes,8,opt,name=latency" json:"latency,omitempty"` - // Number of CPU megacycles used to process request. - MegaCycles int64 `protobuf:"varint,9,opt,name=mega_cycles,json=megaCycles" json:"mega_cycles,omitempty"` - // Request method. Example: `"GET"`, `"HEAD"`, `"PUT"`, `"POST"`, `"DELETE"`. - Method string `protobuf:"bytes,10,opt,name=method" json:"method,omitempty"` - // Contains the path and query portion of the URL that was requested. For - // example, if the URL was "http://example.com/app?name=val", the resource - // would be "/app?name=val". The fragment identifier, which is identified by - // the `#` character, is not included. - Resource string `protobuf:"bytes,11,opt,name=resource" json:"resource,omitempty"` - // HTTP version of request. Example: `"HTTP/1.1"`. - HttpVersion string `protobuf:"bytes,12,opt,name=http_version,json=httpVersion" json:"http_version,omitempty"` - // HTTP response status code. Example: 200, 404. - Status int32 `protobuf:"varint,13,opt,name=status" json:"status,omitempty"` - // Size in bytes sent back to client by request. - ResponseSize int64 `protobuf:"varint,14,opt,name=response_size,json=responseSize" json:"response_size,omitempty"` - // Referrer URL of request. - Referrer string `protobuf:"bytes,15,opt,name=referrer" json:"referrer,omitempty"` - // User agent that made the request. - UserAgent string `protobuf:"bytes,16,opt,name=user_agent,json=userAgent" json:"user_agent,omitempty"` - // The logged-in user who made the request. - // - // Most likely, this is the part of the user's email before the `@` sign. The - // field value is the same for different requests from the same user, but - // different users can have similar names. This information is also - // available to the application via the App Engine Users API. - // - // This field will be populated starting with App Engine 1.9.21. - Nickname string `protobuf:"bytes,40,opt,name=nickname" json:"nickname,omitempty"` - // File or class that handled the request. - UrlMapEntry string `protobuf:"bytes,17,opt,name=url_map_entry,json=urlMapEntry" json:"url_map_entry,omitempty"` - // Internet host and port number of the resource being requested. - Host string `protobuf:"bytes,20,opt,name=host" json:"host,omitempty"` - // An indication of the relative cost of serving this request. - Cost float64 `protobuf:"fixed64,21,opt,name=cost" json:"cost,omitempty"` - // Queue name of the request, in the case of an offline request. - TaskQueueName string `protobuf:"bytes,22,opt,name=task_queue_name,json=taskQueueName" json:"task_queue_name,omitempty"` - // Task name of the request, in the case of an offline request. - TaskName string `protobuf:"bytes,23,opt,name=task_name,json=taskName" json:"task_name,omitempty"` - // Whether this was a loading request for the instance. - WasLoadingRequest bool `protobuf:"varint,24,opt,name=was_loading_request,json=wasLoadingRequest" json:"was_loading_request,omitempty"` - // Time this request spent in the pending request queue. - PendingTime *google_protobuf1.Duration `protobuf:"bytes,25,opt,name=pending_time,json=pendingTime" json:"pending_time,omitempty"` - // If the instance processing this request belongs to a manually scaled - // module, then this is the 0-based index of the instance. Otherwise, this - // value is -1. - InstanceIndex int32 `protobuf:"varint,26,opt,name=instance_index,json=instanceIndex" json:"instance_index,omitempty"` - // Whether this request is finished or active. - Finished bool `protobuf:"varint,27,opt,name=finished" json:"finished,omitempty"` - // Whether this is the first `RequestLog` entry for this request. If an - // active request has several `RequestLog` entries written to Stackdriver - // Logging, then this field will be set for one of them. - First bool `protobuf:"varint,42,opt,name=first" json:"first,omitempty"` - // An identifier for the instance that handled the request. - InstanceId string `protobuf:"bytes,28,opt,name=instance_id,json=instanceId" json:"instance_id,omitempty"` - // A list of log lines emitted by the application while serving this request. - Line []*LogLine `protobuf:"bytes,29,rep,name=line" json:"line,omitempty"` - // App Engine release version. - AppEngineRelease string `protobuf:"bytes,38,opt,name=app_engine_release,json=appEngineRelease" json:"app_engine_release,omitempty"` - // Stackdriver Trace identifier for this request. - TraceId string `protobuf:"bytes,39,opt,name=trace_id,json=traceId" json:"trace_id,omitempty"` - // Source code for the application that handled this request. There can be - // more than one source reference per deployed application if source code is - // distributed among multiple repositories. - SourceReference []*SourceReference `protobuf:"bytes,41,rep,name=source_reference,json=sourceReference" json:"source_reference,omitempty"` -} - -func (m *RequestLog) Reset() { *m = RequestLog{} } -func (m *RequestLog) String() string { return proto.CompactTextString(m) } -func (*RequestLog) ProtoMessage() {} -func (*RequestLog) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *RequestLog) GetAppId() string { - if m != nil { - return m.AppId - } - return "" -} - -func (m *RequestLog) GetModuleId() string { - if m != nil { - return m.ModuleId - } - return "" -} - -func (m *RequestLog) GetVersionId() string { - if m != nil { - return m.VersionId - } - return "" -} - -func (m *RequestLog) GetRequestId() string { - if m != nil { - return m.RequestId - } - return "" -} - -func (m *RequestLog) GetIp() string { - if m != nil { - return m.Ip - } - return "" -} - -func (m *RequestLog) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *RequestLog) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *RequestLog) GetLatency() *google_protobuf1.Duration { - if m != nil { - return m.Latency - } - return nil -} - -func (m *RequestLog) GetMegaCycles() int64 { - if m != nil { - return m.MegaCycles - } - return 0 -} - -func (m *RequestLog) GetMethod() string { - if m != nil { - return m.Method - } - return "" -} - -func (m *RequestLog) GetResource() string { - if m != nil { - return m.Resource - } - return "" -} - -func (m *RequestLog) GetHttpVersion() string { - if m != nil { - return m.HttpVersion - } - return "" -} - -func (m *RequestLog) GetStatus() int32 { - if m != nil { - return m.Status - } - return 0 -} - -func (m *RequestLog) GetResponseSize() int64 { - if m != nil { - return m.ResponseSize - } - return 0 -} - -func (m *RequestLog) GetReferrer() string { - if m != nil { - return m.Referrer - } - return "" -} - -func (m *RequestLog) GetUserAgent() string { - if m != nil { - return m.UserAgent - } - return "" -} - -func (m *RequestLog) GetNickname() string { - if m != nil { - return m.Nickname - } - return "" -} - -func (m *RequestLog) GetUrlMapEntry() string { - if m != nil { - return m.UrlMapEntry - } - return "" -} - -func (m *RequestLog) GetHost() string { - if m != nil { - return m.Host - } - return "" -} - -func (m *RequestLog) GetCost() float64 { - if m != nil { - return m.Cost - } - return 0 -} - -func (m *RequestLog) GetTaskQueueName() string { - if m != nil { - return m.TaskQueueName - } - return "" -} - -func (m *RequestLog) GetTaskName() string { - if m != nil { - return m.TaskName - } - return "" -} - -func (m *RequestLog) GetWasLoadingRequest() bool { - if m != nil { - return m.WasLoadingRequest - } - return false -} - -func (m *RequestLog) GetPendingTime() *google_protobuf1.Duration { - if m != nil { - return m.PendingTime - } - return nil -} - -func (m *RequestLog) GetInstanceIndex() int32 { - if m != nil { - return m.InstanceIndex - } - return 0 -} - -func (m *RequestLog) GetFinished() bool { - if m != nil { - return m.Finished - } - return false -} - -func (m *RequestLog) GetFirst() bool { - if m != nil { - return m.First - } - return false -} - -func (m *RequestLog) GetInstanceId() string { - if m != nil { - return m.InstanceId - } - return "" -} - -func (m *RequestLog) GetLine() []*LogLine { - if m != nil { - return m.Line - } - return nil -} - -func (m *RequestLog) GetAppEngineRelease() string { - if m != nil { - return m.AppEngineRelease - } - return "" -} - -func (m *RequestLog) GetTraceId() string { - if m != nil { - return m.TraceId - } - return "" -} - -func (m *RequestLog) GetSourceReference() []*SourceReference { - if m != nil { - return m.SourceReference - } - return nil -} - -func init() { - proto.RegisterType((*LogLine)(nil), "google.appengine.logging.v1.LogLine") - proto.RegisterType((*SourceLocation)(nil), "google.appengine.logging.v1.SourceLocation") - proto.RegisterType((*SourceReference)(nil), "google.appengine.logging.v1.SourceReference") - proto.RegisterType((*RequestLog)(nil), "google.appengine.logging.v1.RequestLog") -} - -func init() { proto.RegisterFile("google/appengine/logging/v1/request_log.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 921 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0x7f, 0x6f, 0x1c, 0x35, - 0x10, 0xd5, 0xe6, 0xe7, 0x9d, 0x2f, 0xb9, 0xa4, 0xa6, 0x2d, 0x4e, 0x42, 0x9b, 0x23, 0xd0, 0x70, - 0x40, 0xd9, 0x53, 0x53, 0x21, 0x81, 0xe8, 0x3f, 0x04, 0xfa, 0xc7, 0x49, 0x57, 0x54, 0x36, 0x15, - 0x48, 0x48, 0x68, 0xe5, 0xee, 0xce, 0x6d, 0xac, 0xee, 0xda, 0xae, 0xed, 0xbd, 0xf6, 0xfa, 0x41, - 0xf8, 0x98, 0x7c, 0x06, 0xe4, 0xb1, 0xf7, 0x4a, 0x00, 0x25, 0xfc, 0xb7, 0xf3, 0xe6, 0xbd, 0xf1, - 0xd8, 0x7e, 0x9e, 0x25, 0x5f, 0x55, 0x4a, 0x55, 0x35, 0x4c, 0xb8, 0xd6, 0x20, 0x2b, 0x21, 0x61, - 0x52, 0xab, 0xaa, 0x12, 0xb2, 0x9a, 0x2c, 0x1e, 0x4d, 0x0c, 0xbc, 0x6e, 0xc1, 0xba, 0xbc, 0x56, - 0x55, 0xaa, 0x8d, 0x72, 0x8a, 0x1e, 0x05, 0x7a, 0xba, 0xa2, 0xa7, 0x91, 0x9e, 0x2e, 0x1e, 0x1d, - 0x9e, 0xc6, 0x5a, 0x5d, 0x05, 0xb7, 0xd4, 0x18, 0xe4, 0x16, 0x16, 0x60, 0x84, 0x5b, 0x86, 0x22, - 0x87, 0xf7, 0x23, 0x0f, 0xa3, 0x97, 0xed, 0x7c, 0x52, 0xb6, 0x86, 0x3b, 0xa1, 0x64, 0xcc, 0x1f, - 0xff, 0x33, 0xef, 0x44, 0x03, 0xd6, 0xf1, 0x46, 0x07, 0xc2, 0xc9, 0x9f, 0x09, 0xd9, 0x9e, 0xa9, - 0x6a, 0x26, 0x24, 0xd0, 0x94, 0x6c, 0xf8, 0x34, 0x4b, 0x46, 0xc9, 0x78, 0x70, 0x76, 0x98, 0xc6, - 0x06, 0x3b, 0x6d, 0xfa, 0xa2, 0xd3, 0x66, 0xc8, 0xa3, 0x4f, 0x48, 0xaf, 0x6b, 0x87, 0xad, 0x8d, - 0x92, 0xf1, 0xf0, 0x6c, 0xd4, 0x69, 0xba, 0xad, 0xf8, 0xbe, 0xd3, 0x99, 0xaa, 0x2e, 0x22, 0x2f, - 0x5b, 0x29, 0xe8, 0x31, 0x19, 0xf8, 0x0d, 0x35, 0x60, 0x2d, 0xaf, 0x80, 0xad, 0x8f, 0x92, 0x71, - 0x3f, 0x23, 0xb5, 0xaa, 0x9e, 0x05, 0x84, 0xbe, 0x20, 0x7b, 0x56, 0xb5, 0xa6, 0x80, 0xbc, 0x56, - 0x05, 0x6e, 0x8a, 0x6d, 0x60, 0x67, 0x5f, 0xa6, 0xd7, 0x1c, 0x5d, 0x7a, 0x81, 0x9a, 0x59, 0x94, - 0x64, 0x43, 0x7b, 0x25, 0x3e, 0xf9, 0x9d, 0x0c, 0xaf, 0x32, 0x28, 0x25, 0x1b, 0x73, 0x51, 0x87, - 0x6d, 0xf7, 0x33, 0xfc, 0xf6, 0x58, 0x2d, 0x24, 0xe0, 0xb6, 0xd6, 0x33, 0xfc, 0xa6, 0x9f, 0x90, - 0xdd, 0x79, 0x2b, 0x0b, 0xaf, 0xc9, 0x25, 0x6f, 0xba, 0x96, 0x77, 0x3a, 0xf0, 0x27, 0xde, 0xc0, - 0x49, 0x46, 0xf6, 0x42, 0xf9, 0x0c, 0xe6, 0x60, 0x40, 0x16, 0x40, 0xef, 0x13, 0x62, 0x40, 0x2b, - 0x2b, 0x9c, 0x32, 0xcb, 0xb8, 0xca, 0xdf, 0x10, 0x7f, 0x10, 0x06, 0x16, 0xc2, 0xfa, 0xba, 0xa2, - 0xc4, 0x25, 0x91, 0x10, 0xa0, 0x69, 0x79, 0xf2, 0x47, 0x9f, 0x90, 0x2c, 0xf8, 0x67, 0xa6, 0x2a, - 0x7a, 0x87, 0x6c, 0x71, 0xad, 0x3d, 0x35, 0xd4, 0xda, 0xe4, 0x5a, 0x4f, 0x4b, 0x7a, 0x44, 0xfa, - 0x8d, 0x2a, 0xdb, 0x1a, 0x7c, 0xe6, 0x01, 0x66, 0x7a, 0x01, 0x98, 0x96, 0xf4, 0x1e, 0x21, 0x0b, - 0x30, 0x57, 0x97, 0xe8, 0x47, 0x24, 0xa4, 0x3b, 0x83, 0x8a, 0x32, 0xee, 0xab, 0x1f, 0x91, 0x69, - 0x49, 0x87, 0x64, 0x4d, 0x68, 0x3c, 0xfc, 0x7e, 0xb6, 0x26, 0x34, 0xfd, 0x96, 0x10, 0xeb, 0xb8, - 0x71, 0x39, 0xda, 0x65, 0xeb, 0x46, 0xbb, 0xf4, 0x91, 0xed, 0x63, 0xfa, 0x35, 0xe9, 0x81, 0x2c, - 0x83, 0x70, 0xfb, 0x46, 0xe1, 0x36, 0xc8, 0x12, 0x65, 0x8f, 0xc9, 0x76, 0xcd, 0x1d, 0xc8, 0x62, - 0xc9, 0x7a, 0xa8, 0x3a, 0xf8, 0x97, 0xea, 0xc7, 0xe8, 0xfc, 0xac, 0x63, 0xfa, 0x83, 0x6d, 0xa0, - 0xe2, 0x79, 0xb1, 0x2c, 0x6a, 0xb0, 0xac, 0x8f, 0x77, 0x49, 0x3c, 0xf4, 0x03, 0x22, 0xf4, 0x2e, - 0xd9, 0x6a, 0xc0, 0x5d, 0xaa, 0x92, 0x11, 0xdc, 0x5b, 0x8c, 0xe8, 0x21, 0xe9, 0x19, 0x08, 0xbe, - 0x61, 0x83, 0x70, 0x92, 0x5d, 0x4c, 0x3f, 0x26, 0x3b, 0x97, 0xce, 0xe9, 0x3c, 0x1e, 0x1e, 0xdb, - 0xc1, 0xfc, 0xc0, 0x63, 0xbf, 0x04, 0xc8, 0x97, 0xb5, 0x8e, 0xbb, 0xd6, 0xb2, 0xdd, 0x51, 0x32, - 0xde, 0xcc, 0x62, 0xe4, 0x0d, 0x64, 0xc0, 0x6a, 0x25, 0x2d, 0xe4, 0x56, 0xbc, 0x03, 0x36, 0xc4, - 0x8e, 0x76, 0x3a, 0xf0, 0x42, 0xbc, 0x83, 0xb0, 0xf6, 0x1c, 0x8c, 0x01, 0xc3, 0xf6, 0xba, 0xb5, - 0x43, 0xec, 0xaf, 0xa9, 0xb5, 0x60, 0x72, 0x5e, 0x81, 0x74, 0x6c, 0x3f, 0x5c, 0x93, 0x47, 0xbe, - 0xf7, 0x80, 0x97, 0x4a, 0x51, 0xbc, 0x42, 0x6f, 0x8e, 0x83, 0xb4, 0x8b, 0xe9, 0x09, 0xd9, 0x6d, - 0x4d, 0x9d, 0x37, 0x5c, 0xe7, 0x20, 0x9d, 0x59, 0xb2, 0x5b, 0xa1, 0xef, 0xd6, 0xd4, 0xcf, 0xb8, - 0x7e, 0xea, 0x21, 0x6f, 0xfa, 0x4b, 0x65, 0x1d, 0xbb, 0x1d, 0x1e, 0x82, 0xff, 0xf6, 0x58, 0xe1, - 0xb1, 0x3b, 0xa3, 0x64, 0x9c, 0x64, 0xf8, 0x4d, 0x4f, 0xc9, 0x9e, 0xe3, 0xf6, 0x55, 0xfe, 0xba, - 0x85, 0x16, 0xc2, 0x53, 0xb8, 0x8b, 0x92, 0x5d, 0x0f, 0xff, 0xec, 0x51, 0xff, 0x16, 0xbc, 0x23, - 0x91, 0x87, 0x8c, 0x0f, 0x43, 0x43, 0x1e, 0xc0, 0x64, 0x4a, 0x3e, 0x78, 0xc3, 0x6d, 0x5e, 0x2b, - 0x5e, 0x0a, 0x59, 0xe5, 0xd1, 0x6c, 0x8c, 0x8d, 0x92, 0x71, 0x2f, 0xbb, 0xf5, 0x86, 0xdb, 0x59, - 0xc8, 0x44, 0xe3, 0xd3, 0x27, 0x64, 0x47, 0x83, 0x44, 0x2e, 0x9a, 0xe7, 0xe0, 0x26, 0x1b, 0x0c, - 0x22, 0x1d, 0xfd, 0xf3, 0x80, 0x0c, 0x85, 0xb4, 0x8e, 0xcb, 0x02, 0x72, 0x21, 0x4b, 0x78, 0xcb, - 0x0e, 0xf1, 0x6a, 0x76, 0x3b, 0x74, 0xea, 0x41, 0x7f, 0x82, 0x73, 0x21, 0x85, 0xbd, 0x84, 0x92, - 0x1d, 0x61, 0x27, 0xab, 0x98, 0xde, 0x26, 0x9b, 0x73, 0x61, 0xac, 0x63, 0x5f, 0x60, 0x22, 0x04, - 0xde, 0x63, 0xef, 0x0b, 0x97, 0xec, 0xa3, 0xf0, 0x78, 0x57, 0x55, 0x4b, 0xfa, 0x4d, 0x9c, 0x24, - 0xf7, 0x46, 0xeb, 0xe3, 0xc1, 0xd9, 0xa7, 0xd7, 0x8e, 0xae, 0x38, 0x88, 0xe3, 0xbc, 0x79, 0x48, - 0xa8, 0x7f, 0xe7, 0x81, 0x96, 0x1b, 0xa8, 0x81, 0x5b, 0x60, 0xa7, 0xb8, 0xc2, 0x3e, 0xd7, 0xfa, - 0x29, 0x26, 0xb2, 0x80, 0xd3, 0x03, 0xd2, 0x73, 0x86, 0x87, 0x2e, 0x3e, 0x43, 0xce, 0x36, 0xc6, - 0xd3, 0x92, 0xfe, 0x4a, 0xf6, 0xe3, 0x20, 0x35, 0xdd, 0x50, 0x62, 0x9f, 0x63, 0x3b, 0x0f, 0xff, - 0xc7, 0x24, 0x5d, 0x0d, 0xb2, 0x2c, 0x8e, 0xe3, 0x15, 0x70, 0xfe, 0x96, 0x1c, 0x17, 0xaa, 0xb9, - 0xae, 0xc6, 0xf9, 0xde, 0xfb, 0xc1, 0xf5, 0xdc, 0x5f, 0xd1, 0xf3, 0xe4, 0xb7, 0xf3, 0xc8, 0xaf, - 0x54, 0xcd, 0x65, 0x95, 0x2a, 0x53, 0x4d, 0x2a, 0x90, 0x78, 0x81, 0x93, 0x90, 0xe2, 0x5a, 0xd8, - 0xff, 0xfc, 0x8d, 0x7e, 0x17, 0x3f, 0x5f, 0x6e, 0x21, 0xfd, 0xf1, 0x5f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x05, 0xf7, 0x68, 0xa8, 0x74, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/app_yaml.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/app_yaml.pb.go deleted file mode 100644 index af25606a..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/app_yaml.pb.go +++ /dev/null @@ -1,900 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/app_yaml.proto - -/* -Package appengine is a generated protocol buffer package. - -It is generated from these files: - google/appengine/v1/app_yaml.proto - google/appengine/v1/appengine.proto - google/appengine/v1/application.proto - google/appengine/v1/audit_data.proto - google/appengine/v1/deploy.proto - google/appengine/v1/instance.proto - google/appengine/v1/location.proto - google/appengine/v1/operation.proto - google/appengine/v1/service.proto - google/appengine/v1/version.proto - -It has these top-level messages: - ApiConfigHandler - ErrorHandler - UrlMap - StaticFilesHandler - ScriptHandler - ApiEndpointHandler - HealthCheck - Library - GetApplicationRequest - RepairApplicationRequest - ListServicesRequest - ListServicesResponse - GetServiceRequest - UpdateServiceRequest - DeleteServiceRequest - ListVersionsRequest - ListVersionsResponse - GetVersionRequest - CreateVersionRequest - UpdateVersionRequest - DeleteVersionRequest - ListInstancesRequest - ListInstancesResponse - GetInstanceRequest - DeleteInstanceRequest - DebugInstanceRequest - Application - UrlDispatchRule - AuditData - UpdateServiceMethod - CreateVersionMethod - Deployment - FileInfo - ContainerInfo - ZipInfo - Instance - LocationMetadata - OperationMetadataV1 - Service - TrafficSplit - Version - AutomaticScaling - BasicScaling - ManualScaling - CpuUtilization - RequestUtilization - DiskUtilization - NetworkUtilization - Network - Resources -*/ -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Actions to take when the user is not logged in. -type AuthFailAction int32 - -const ( - // Not specified. `AUTH_FAIL_ACTION_REDIRECT` is assumed. - AuthFailAction_AUTH_FAIL_ACTION_UNSPECIFIED AuthFailAction = 0 - // Redirects user to "accounts.google.com". The user is redirected back to the - // application URL after signing in or creating an account. - AuthFailAction_AUTH_FAIL_ACTION_REDIRECT AuthFailAction = 1 - // Rejects request with a `401` HTTP status code and an error - // message. - AuthFailAction_AUTH_FAIL_ACTION_UNAUTHORIZED AuthFailAction = 2 -) - -var AuthFailAction_name = map[int32]string{ - 0: "AUTH_FAIL_ACTION_UNSPECIFIED", - 1: "AUTH_FAIL_ACTION_REDIRECT", - 2: "AUTH_FAIL_ACTION_UNAUTHORIZED", -} -var AuthFailAction_value = map[string]int32{ - "AUTH_FAIL_ACTION_UNSPECIFIED": 0, - "AUTH_FAIL_ACTION_REDIRECT": 1, - "AUTH_FAIL_ACTION_UNAUTHORIZED": 2, -} - -func (x AuthFailAction) String() string { - return proto.EnumName(AuthFailAction_name, int32(x)) -} -func (AuthFailAction) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Methods to restrict access to a URL based on login status. -type LoginRequirement int32 - -const ( - // Not specified. `LOGIN_OPTIONAL` is assumed. - LoginRequirement_LOGIN_UNSPECIFIED LoginRequirement = 0 - // Does not require that the user is signed in. - LoginRequirement_LOGIN_OPTIONAL LoginRequirement = 1 - // If the user is not signed in, the `auth_fail_action` is taken. - // In addition, if the user is not an administrator for the - // application, they are given an error message regardless of - // `auth_fail_action`. If the user is an administrator, the handler - // proceeds. - LoginRequirement_LOGIN_ADMIN LoginRequirement = 2 - // If the user has signed in, the handler proceeds normally. Otherwise, the - // auth_fail_action is taken. - LoginRequirement_LOGIN_REQUIRED LoginRequirement = 3 -) - -var LoginRequirement_name = map[int32]string{ - 0: "LOGIN_UNSPECIFIED", - 1: "LOGIN_OPTIONAL", - 2: "LOGIN_ADMIN", - 3: "LOGIN_REQUIRED", -} -var LoginRequirement_value = map[string]int32{ - "LOGIN_UNSPECIFIED": 0, - "LOGIN_OPTIONAL": 1, - "LOGIN_ADMIN": 2, - "LOGIN_REQUIRED": 3, -} - -func (x LoginRequirement) String() string { - return proto.EnumName(LoginRequirement_name, int32(x)) -} -func (LoginRequirement) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -// Methods to enforce security (HTTPS) on a URL. -type SecurityLevel int32 - -const ( - // Not specified. - SecurityLevel_SECURE_UNSPECIFIED SecurityLevel = 0 - // Both HTTP and HTTPS requests with URLs that match the handler succeed - // without redirects. The application can examine the request to determine - // which protocol was used, and respond accordingly. - SecurityLevel_SECURE_DEFAULT SecurityLevel = 0 - // Requests for a URL that match this handler that use HTTPS are automatically - // redirected to the HTTP equivalent URL. - SecurityLevel_SECURE_NEVER SecurityLevel = 1 - // Both HTTP and HTTPS requests with URLs that match the handler succeed - // without redirects. The application can examine the request to determine - // which protocol was used and respond accordingly. - SecurityLevel_SECURE_OPTIONAL SecurityLevel = 2 - // Requests for a URL that match this handler that do not use HTTPS are - // automatically redirected to the HTTPS URL with the same path. Query - // parameters are reserved for the redirect. - SecurityLevel_SECURE_ALWAYS SecurityLevel = 3 -) - -var SecurityLevel_name = map[int32]string{ - 0: "SECURE_UNSPECIFIED", - // Duplicate value: 0: "SECURE_DEFAULT", - 1: "SECURE_NEVER", - 2: "SECURE_OPTIONAL", - 3: "SECURE_ALWAYS", -} -var SecurityLevel_value = map[string]int32{ - "SECURE_UNSPECIFIED": 0, - "SECURE_DEFAULT": 0, - "SECURE_NEVER": 1, - "SECURE_OPTIONAL": 2, - "SECURE_ALWAYS": 3, -} - -func (x SecurityLevel) String() string { - return proto.EnumName(SecurityLevel_name, int32(x)) -} -func (SecurityLevel) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -// Error codes. -type ErrorHandler_ErrorCode int32 - -const ( - // Not specified. ERROR_CODE_DEFAULT is assumed. - ErrorHandler_ERROR_CODE_UNSPECIFIED ErrorHandler_ErrorCode = 0 - // All other error types. - ErrorHandler_ERROR_CODE_DEFAULT ErrorHandler_ErrorCode = 0 - // Application has exceeded a resource quota. - ErrorHandler_ERROR_CODE_OVER_QUOTA ErrorHandler_ErrorCode = 1 - // Client blocked by the application's Denial of Service protection - // configuration. - ErrorHandler_ERROR_CODE_DOS_API_DENIAL ErrorHandler_ErrorCode = 2 - // Deadline reached before the application responds. - ErrorHandler_ERROR_CODE_TIMEOUT ErrorHandler_ErrorCode = 3 -) - -var ErrorHandler_ErrorCode_name = map[int32]string{ - 0: "ERROR_CODE_UNSPECIFIED", - // Duplicate value: 0: "ERROR_CODE_DEFAULT", - 1: "ERROR_CODE_OVER_QUOTA", - 2: "ERROR_CODE_DOS_API_DENIAL", - 3: "ERROR_CODE_TIMEOUT", -} -var ErrorHandler_ErrorCode_value = map[string]int32{ - "ERROR_CODE_UNSPECIFIED": 0, - "ERROR_CODE_DEFAULT": 0, - "ERROR_CODE_OVER_QUOTA": 1, - "ERROR_CODE_DOS_API_DENIAL": 2, - "ERROR_CODE_TIMEOUT": 3, -} - -func (x ErrorHandler_ErrorCode) String() string { - return proto.EnumName(ErrorHandler_ErrorCode_name, int32(x)) -} -func (ErrorHandler_ErrorCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// Redirect codes. -type UrlMap_RedirectHttpResponseCode int32 - -const ( - // Not specified. `302` is assumed. - UrlMap_REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED UrlMap_RedirectHttpResponseCode = 0 - // `301 Moved Permanently` code. - UrlMap_REDIRECT_HTTP_RESPONSE_CODE_301 UrlMap_RedirectHttpResponseCode = 1 - // `302 Moved Temporarily` code. - UrlMap_REDIRECT_HTTP_RESPONSE_CODE_302 UrlMap_RedirectHttpResponseCode = 2 - // `303 See Other` code. - UrlMap_REDIRECT_HTTP_RESPONSE_CODE_303 UrlMap_RedirectHttpResponseCode = 3 - // `307 Temporary Redirect` code. - UrlMap_REDIRECT_HTTP_RESPONSE_CODE_307 UrlMap_RedirectHttpResponseCode = 4 -) - -var UrlMap_RedirectHttpResponseCode_name = map[int32]string{ - 0: "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED", - 1: "REDIRECT_HTTP_RESPONSE_CODE_301", - 2: "REDIRECT_HTTP_RESPONSE_CODE_302", - 3: "REDIRECT_HTTP_RESPONSE_CODE_303", - 4: "REDIRECT_HTTP_RESPONSE_CODE_307", -} -var UrlMap_RedirectHttpResponseCode_value = map[string]int32{ - "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED": 0, - "REDIRECT_HTTP_RESPONSE_CODE_301": 1, - "REDIRECT_HTTP_RESPONSE_CODE_302": 2, - "REDIRECT_HTTP_RESPONSE_CODE_303": 3, - "REDIRECT_HTTP_RESPONSE_CODE_307": 4, -} - -func (x UrlMap_RedirectHttpResponseCode) String() string { - return proto.EnumName(UrlMap_RedirectHttpResponseCode_name, int32(x)) -} -func (UrlMap_RedirectHttpResponseCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{2, 0} -} - -// [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) -// configuration for API handlers. -type ApiConfigHandler struct { - // Action to take when users access resources that require - // authentication. Defaults to `redirect`. - AuthFailAction AuthFailAction `protobuf:"varint,1,opt,name=auth_fail_action,json=authFailAction,enum=google.appengine.v1.AuthFailAction" json:"auth_fail_action,omitempty"` - // Level of login required to access this resource. Defaults to - // `optional`. - Login LoginRequirement `protobuf:"varint,2,opt,name=login,enum=google.appengine.v1.LoginRequirement" json:"login,omitempty"` - // Path to the script from the application root directory. - Script string `protobuf:"bytes,3,opt,name=script" json:"script,omitempty"` - // Security (HTTPS) enforcement for this URL. - SecurityLevel SecurityLevel `protobuf:"varint,4,opt,name=security_level,json=securityLevel,enum=google.appengine.v1.SecurityLevel" json:"security_level,omitempty"` - // URL to serve the endpoint at. - Url string `protobuf:"bytes,5,opt,name=url" json:"url,omitempty"` -} - -func (m *ApiConfigHandler) Reset() { *m = ApiConfigHandler{} } -func (m *ApiConfigHandler) String() string { return proto.CompactTextString(m) } -func (*ApiConfigHandler) ProtoMessage() {} -func (*ApiConfigHandler) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ApiConfigHandler) GetAuthFailAction() AuthFailAction { - if m != nil { - return m.AuthFailAction - } - return AuthFailAction_AUTH_FAIL_ACTION_UNSPECIFIED -} - -func (m *ApiConfigHandler) GetLogin() LoginRequirement { - if m != nil { - return m.Login - } - return LoginRequirement_LOGIN_UNSPECIFIED -} - -func (m *ApiConfigHandler) GetScript() string { - if m != nil { - return m.Script - } - return "" -} - -func (m *ApiConfigHandler) GetSecurityLevel() SecurityLevel { - if m != nil { - return m.SecurityLevel - } - return SecurityLevel_SECURE_UNSPECIFIED -} - -func (m *ApiConfigHandler) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -// Custom static error page to be served when an error occurs. -type ErrorHandler struct { - // Error condition this handler applies to. - ErrorCode ErrorHandler_ErrorCode `protobuf:"varint,1,opt,name=error_code,json=errorCode,enum=google.appengine.v1.ErrorHandler_ErrorCode" json:"error_code,omitempty"` - // Static file content to be served for this error. - StaticFile string `protobuf:"bytes,2,opt,name=static_file,json=staticFile" json:"static_file,omitempty"` - // MIME type of file. Defaults to `text/html`. - MimeType string `protobuf:"bytes,3,opt,name=mime_type,json=mimeType" json:"mime_type,omitempty"` -} - -func (m *ErrorHandler) Reset() { *m = ErrorHandler{} } -func (m *ErrorHandler) String() string { return proto.CompactTextString(m) } -func (*ErrorHandler) ProtoMessage() {} -func (*ErrorHandler) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ErrorHandler) GetErrorCode() ErrorHandler_ErrorCode { - if m != nil { - return m.ErrorCode - } - return ErrorHandler_ERROR_CODE_UNSPECIFIED -} - -func (m *ErrorHandler) GetStaticFile() string { - if m != nil { - return m.StaticFile - } - return "" -} - -func (m *ErrorHandler) GetMimeType() string { - if m != nil { - return m.MimeType - } - return "" -} - -// URL pattern and description of how the URL should be handled. App Engine can -// handle URLs by executing application code or by serving static files -// uploaded with the version, such as images, CSS, or JavaScript. -type UrlMap struct { - // URL prefix. Uses regular expression syntax, which means regexp - // special characters must be escaped, but should not contain groupings. - // All URLs that begin with this prefix are handled by this handler, using the - // portion of the URL after the prefix as part of the file path. - UrlRegex string `protobuf:"bytes,1,opt,name=url_regex,json=urlRegex" json:"url_regex,omitempty"` - // Type of handler for this URL pattern. - // - // Types that are valid to be assigned to HandlerType: - // *UrlMap_StaticFiles - // *UrlMap_Script - // *UrlMap_ApiEndpoint - HandlerType isUrlMap_HandlerType `protobuf_oneof:"handler_type"` - // Security (HTTPS) enforcement for this URL. - SecurityLevel SecurityLevel `protobuf:"varint,5,opt,name=security_level,json=securityLevel,enum=google.appengine.v1.SecurityLevel" json:"security_level,omitempty"` - // Level of login required to access this resource. - Login LoginRequirement `protobuf:"varint,6,opt,name=login,enum=google.appengine.v1.LoginRequirement" json:"login,omitempty"` - // Action to take when users access resources that require - // authentication. Defaults to `redirect`. - AuthFailAction AuthFailAction `protobuf:"varint,7,opt,name=auth_fail_action,json=authFailAction,enum=google.appengine.v1.AuthFailAction" json:"auth_fail_action,omitempty"` - // `30x` code to use when performing redirects for the `secure` field. - // Defaults to `302`. - RedirectHttpResponseCode UrlMap_RedirectHttpResponseCode `protobuf:"varint,8,opt,name=redirect_http_response_code,json=redirectHttpResponseCode,enum=google.appengine.v1.UrlMap_RedirectHttpResponseCode" json:"redirect_http_response_code,omitempty"` -} - -func (m *UrlMap) Reset() { *m = UrlMap{} } -func (m *UrlMap) String() string { return proto.CompactTextString(m) } -func (*UrlMap) ProtoMessage() {} -func (*UrlMap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isUrlMap_HandlerType interface { - isUrlMap_HandlerType() -} - -type UrlMap_StaticFiles struct { - StaticFiles *StaticFilesHandler `protobuf:"bytes,2,opt,name=static_files,json=staticFiles,oneof"` -} -type UrlMap_Script struct { - Script *ScriptHandler `protobuf:"bytes,3,opt,name=script,oneof"` -} -type UrlMap_ApiEndpoint struct { - ApiEndpoint *ApiEndpointHandler `protobuf:"bytes,4,opt,name=api_endpoint,json=apiEndpoint,oneof"` -} - -func (*UrlMap_StaticFiles) isUrlMap_HandlerType() {} -func (*UrlMap_Script) isUrlMap_HandlerType() {} -func (*UrlMap_ApiEndpoint) isUrlMap_HandlerType() {} - -func (m *UrlMap) GetHandlerType() isUrlMap_HandlerType { - if m != nil { - return m.HandlerType - } - return nil -} - -func (m *UrlMap) GetUrlRegex() string { - if m != nil { - return m.UrlRegex - } - return "" -} - -func (m *UrlMap) GetStaticFiles() *StaticFilesHandler { - if x, ok := m.GetHandlerType().(*UrlMap_StaticFiles); ok { - return x.StaticFiles - } - return nil -} - -func (m *UrlMap) GetScript() *ScriptHandler { - if x, ok := m.GetHandlerType().(*UrlMap_Script); ok { - return x.Script - } - return nil -} - -func (m *UrlMap) GetApiEndpoint() *ApiEndpointHandler { - if x, ok := m.GetHandlerType().(*UrlMap_ApiEndpoint); ok { - return x.ApiEndpoint - } - return nil -} - -func (m *UrlMap) GetSecurityLevel() SecurityLevel { - if m != nil { - return m.SecurityLevel - } - return SecurityLevel_SECURE_UNSPECIFIED -} - -func (m *UrlMap) GetLogin() LoginRequirement { - if m != nil { - return m.Login - } - return LoginRequirement_LOGIN_UNSPECIFIED -} - -func (m *UrlMap) GetAuthFailAction() AuthFailAction { - if m != nil { - return m.AuthFailAction - } - return AuthFailAction_AUTH_FAIL_ACTION_UNSPECIFIED -} - -func (m *UrlMap) GetRedirectHttpResponseCode() UrlMap_RedirectHttpResponseCode { - if m != nil { - return m.RedirectHttpResponseCode - } - return UrlMap_REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*UrlMap) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _UrlMap_OneofMarshaler, _UrlMap_OneofUnmarshaler, _UrlMap_OneofSizer, []interface{}{ - (*UrlMap_StaticFiles)(nil), - (*UrlMap_Script)(nil), - (*UrlMap_ApiEndpoint)(nil), - } -} - -func _UrlMap_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*UrlMap) - // handler_type - switch x := m.HandlerType.(type) { - case *UrlMap_StaticFiles: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StaticFiles); err != nil { - return err - } - case *UrlMap_Script: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Script); err != nil { - return err - } - case *UrlMap_ApiEndpoint: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ApiEndpoint); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("UrlMap.HandlerType has unexpected type %T", x) - } - return nil -} - -func _UrlMap_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*UrlMap) - switch tag { - case 2: // handler_type.static_files - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StaticFilesHandler) - err := b.DecodeMessage(msg) - m.HandlerType = &UrlMap_StaticFiles{msg} - return true, err - case 3: // handler_type.script - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ScriptHandler) - err := b.DecodeMessage(msg) - m.HandlerType = &UrlMap_Script{msg} - return true, err - case 4: // handler_type.api_endpoint - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ApiEndpointHandler) - err := b.DecodeMessage(msg) - m.HandlerType = &UrlMap_ApiEndpoint{msg} - return true, err - default: - return false, nil - } -} - -func _UrlMap_OneofSizer(msg proto.Message) (n int) { - m := msg.(*UrlMap) - // handler_type - switch x := m.HandlerType.(type) { - case *UrlMap_StaticFiles: - s := proto.Size(x.StaticFiles) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *UrlMap_Script: - s := proto.Size(x.Script) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *UrlMap_ApiEndpoint: - s := proto.Size(x.ApiEndpoint) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Files served directly to the user for a given URL, such as images, CSS -// stylesheets, or JavaScript source files. Static file handlers describe which -// files in the application directory are static files, and which URLs serve -// them. -type StaticFilesHandler struct { - // Path to the static files matched by the URL pattern, from the - // application root directory. The path can refer to text matched in groupings - // in the URL pattern. - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` - // Regular expression that matches the file paths for all files that should be - // referenced by this handler. - UploadPathRegex string `protobuf:"bytes,2,opt,name=upload_path_regex,json=uploadPathRegex" json:"upload_path_regex,omitempty"` - // HTTP headers to use for all responses from these URLs. - HttpHeaders map[string]string `protobuf:"bytes,3,rep,name=http_headers,json=httpHeaders" json:"http_headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // MIME type used to serve all files served by this handler. - // - // Defaults to file-specific MIME types, which are derived from each file's - // filename extension. - MimeType string `protobuf:"bytes,4,opt,name=mime_type,json=mimeType" json:"mime_type,omitempty"` - // Time a static file served by this handler should be cached - // by web proxies and browsers. - Expiration *google_protobuf1.Duration `protobuf:"bytes,5,opt,name=expiration" json:"expiration,omitempty"` - // Whether this handler should match the request if the file - // referenced by the handler does not exist. - RequireMatchingFile bool `protobuf:"varint,6,opt,name=require_matching_file,json=requireMatchingFile" json:"require_matching_file,omitempty"` - // Whether files should also be uploaded as code data. By default, files - // declared in static file handlers are uploaded as static - // data and are only served to end users; they cannot be read by the - // application. If enabled, uploads are charged against both your code and - // static data storage resource quotas. - ApplicationReadable bool `protobuf:"varint,7,opt,name=application_readable,json=applicationReadable" json:"application_readable,omitempty"` -} - -func (m *StaticFilesHandler) Reset() { *m = StaticFilesHandler{} } -func (m *StaticFilesHandler) String() string { return proto.CompactTextString(m) } -func (*StaticFilesHandler) ProtoMessage() {} -func (*StaticFilesHandler) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *StaticFilesHandler) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *StaticFilesHandler) GetUploadPathRegex() string { - if m != nil { - return m.UploadPathRegex - } - return "" -} - -func (m *StaticFilesHandler) GetHttpHeaders() map[string]string { - if m != nil { - return m.HttpHeaders - } - return nil -} - -func (m *StaticFilesHandler) GetMimeType() string { - if m != nil { - return m.MimeType - } - return "" -} - -func (m *StaticFilesHandler) GetExpiration() *google_protobuf1.Duration { - if m != nil { - return m.Expiration - } - return nil -} - -func (m *StaticFilesHandler) GetRequireMatchingFile() bool { - if m != nil { - return m.RequireMatchingFile - } - return false -} - -func (m *StaticFilesHandler) GetApplicationReadable() bool { - if m != nil { - return m.ApplicationReadable - } - return false -} - -// Executes a script to handle the request that matches the URL pattern. -type ScriptHandler struct { - // Path to the script from the application root directory. - ScriptPath string `protobuf:"bytes,1,opt,name=script_path,json=scriptPath" json:"script_path,omitempty"` -} - -func (m *ScriptHandler) Reset() { *m = ScriptHandler{} } -func (m *ScriptHandler) String() string { return proto.CompactTextString(m) } -func (*ScriptHandler) ProtoMessage() {} -func (*ScriptHandler) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ScriptHandler) GetScriptPath() string { - if m != nil { - return m.ScriptPath - } - return "" -} - -// Uses Google Cloud Endpoints to handle requests. -type ApiEndpointHandler struct { - // Path to the script from the application root directory. - ScriptPath string `protobuf:"bytes,1,opt,name=script_path,json=scriptPath" json:"script_path,omitempty"` -} - -func (m *ApiEndpointHandler) Reset() { *m = ApiEndpointHandler{} } -func (m *ApiEndpointHandler) String() string { return proto.CompactTextString(m) } -func (*ApiEndpointHandler) ProtoMessage() {} -func (*ApiEndpointHandler) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ApiEndpointHandler) GetScriptPath() string { - if m != nil { - return m.ScriptPath - } - return "" -} - -// Health checking configuration for VM instances. Unhealthy instances -// are killed and replaced with new instances. Only applicable for -// instances in App Engine flexible environment. -type HealthCheck struct { - // Whether to explicitly disable health checks for this instance. - DisableHealthCheck bool `protobuf:"varint,1,opt,name=disable_health_check,json=disableHealthCheck" json:"disable_health_check,omitempty"` - // Host header to send when performing an HTTP health check. - // Example: "myapp.appspot.com" - Host string `protobuf:"bytes,2,opt,name=host" json:"host,omitempty"` - // Number of consecutive successful health checks required before receiving - // traffic. - HealthyThreshold uint32 `protobuf:"varint,3,opt,name=healthy_threshold,json=healthyThreshold" json:"healthy_threshold,omitempty"` - // Number of consecutive failed health checks required before removing - // traffic. - UnhealthyThreshold uint32 `protobuf:"varint,4,opt,name=unhealthy_threshold,json=unhealthyThreshold" json:"unhealthy_threshold,omitempty"` - // Number of consecutive failed health checks required before an instance is - // restarted. - RestartThreshold uint32 `protobuf:"varint,5,opt,name=restart_threshold,json=restartThreshold" json:"restart_threshold,omitempty"` - // Interval between health checks. - CheckInterval *google_protobuf1.Duration `protobuf:"bytes,6,opt,name=check_interval,json=checkInterval" json:"check_interval,omitempty"` - // Time before the health check is considered failed. - Timeout *google_protobuf1.Duration `protobuf:"bytes,7,opt,name=timeout" json:"timeout,omitempty"` -} - -func (m *HealthCheck) Reset() { *m = HealthCheck{} } -func (m *HealthCheck) String() string { return proto.CompactTextString(m) } -func (*HealthCheck) ProtoMessage() {} -func (*HealthCheck) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *HealthCheck) GetDisableHealthCheck() bool { - if m != nil { - return m.DisableHealthCheck - } - return false -} - -func (m *HealthCheck) GetHost() string { - if m != nil { - return m.Host - } - return "" -} - -func (m *HealthCheck) GetHealthyThreshold() uint32 { - if m != nil { - return m.HealthyThreshold - } - return 0 -} - -func (m *HealthCheck) GetUnhealthyThreshold() uint32 { - if m != nil { - return m.UnhealthyThreshold - } - return 0 -} - -func (m *HealthCheck) GetRestartThreshold() uint32 { - if m != nil { - return m.RestartThreshold - } - return 0 -} - -func (m *HealthCheck) GetCheckInterval() *google_protobuf1.Duration { - if m != nil { - return m.CheckInterval - } - return nil -} - -func (m *HealthCheck) GetTimeout() *google_protobuf1.Duration { - if m != nil { - return m.Timeout - } - return nil -} - -// Third-party Python runtime library that is required by the application. -type Library struct { - // Name of the library. Example: "django". - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Version of the library to select, or "latest". - Version string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` -} - -func (m *Library) Reset() { *m = Library{} } -func (m *Library) String() string { return proto.CompactTextString(m) } -func (*Library) ProtoMessage() {} -func (*Library) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *Library) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Library) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func init() { - proto.RegisterType((*ApiConfigHandler)(nil), "google.appengine.v1.ApiConfigHandler") - proto.RegisterType((*ErrorHandler)(nil), "google.appengine.v1.ErrorHandler") - proto.RegisterType((*UrlMap)(nil), "google.appengine.v1.UrlMap") - proto.RegisterType((*StaticFilesHandler)(nil), "google.appengine.v1.StaticFilesHandler") - proto.RegisterType((*ScriptHandler)(nil), "google.appengine.v1.ScriptHandler") - proto.RegisterType((*ApiEndpointHandler)(nil), "google.appengine.v1.ApiEndpointHandler") - proto.RegisterType((*HealthCheck)(nil), "google.appengine.v1.HealthCheck") - proto.RegisterType((*Library)(nil), "google.appengine.v1.Library") - proto.RegisterEnum("google.appengine.v1.AuthFailAction", AuthFailAction_name, AuthFailAction_value) - proto.RegisterEnum("google.appengine.v1.LoginRequirement", LoginRequirement_name, LoginRequirement_value) - proto.RegisterEnum("google.appengine.v1.SecurityLevel", SecurityLevel_name, SecurityLevel_value) - proto.RegisterEnum("google.appengine.v1.ErrorHandler_ErrorCode", ErrorHandler_ErrorCode_name, ErrorHandler_ErrorCode_value) - proto.RegisterEnum("google.appengine.v1.UrlMap_RedirectHttpResponseCode", UrlMap_RedirectHttpResponseCode_name, UrlMap_RedirectHttpResponseCode_value) -} - -func init() { proto.RegisterFile("google/appengine/v1/app_yaml.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1232 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xdd, 0x6e, 0x13, 0x47, - 0x14, 0xc6, 0x76, 0x7e, 0x8f, 0x1d, 0xb3, 0x99, 0x00, 0x75, 0x02, 0x94, 0xd4, 0xa8, 0x02, 0x25, - 0x92, 0x4d, 0x92, 0x56, 0xd0, 0x82, 0xaa, 0x2e, 0xf6, 0xa6, 0xde, 0xca, 0x89, 0xcd, 0xd8, 0xa6, - 0x82, 0x5e, 0x8c, 0x26, 0xf6, 0xc4, 0x3b, 0x62, 0xbd, 0xbb, 0x9d, 0x1d, 0x47, 0xf8, 0x39, 0xaa, - 0xbe, 0x07, 0xb7, 0x7d, 0x90, 0x5e, 0xf5, 0x65, 0xaa, 0x99, 0x1d, 0xff, 0x25, 0x0e, 0xa9, 0xb8, - 0x9b, 0x73, 0xce, 0xf7, 0x9d, 0x9d, 0xf3, 0x3b, 0x0b, 0xc5, 0x7e, 0x18, 0xf6, 0x7d, 0x56, 0xa6, - 0x51, 0xc4, 0x82, 0x3e, 0x0f, 0x58, 0xf9, 0xe2, 0x40, 0x09, 0x64, 0x44, 0x07, 0x7e, 0x29, 0x12, - 0xa1, 0x0c, 0xd1, 0x56, 0x82, 0x29, 0x4d, 0x30, 0xa5, 0x8b, 0x83, 0x9d, 0x07, 0x13, 0x22, 0x2f, - 0xd3, 0x20, 0x08, 0x25, 0x95, 0x3c, 0x0c, 0xe2, 0x84, 0xb2, 0xf3, 0xb5, 0xb1, 0x6a, 0xe9, 0x6c, - 0x78, 0x5e, 0xee, 0x0d, 0x85, 0x06, 0x24, 0xf6, 0xe2, 0x9f, 0x69, 0xb0, 0xec, 0x88, 0x57, 0xc2, - 0xe0, 0x9c, 0xf7, 0x6b, 0x34, 0xe8, 0xf9, 0x4c, 0xa0, 0x13, 0xb0, 0xe8, 0x50, 0x7a, 0xe4, 0x9c, - 0x72, 0x9f, 0xd0, 0xae, 0x82, 0x17, 0x52, 0xbb, 0xa9, 0xa7, 0xf9, 0xc3, 0xc7, 0xa5, 0x05, 0x57, - 0x28, 0xd9, 0x43, 0xe9, 0x1d, 0x53, 0xee, 0xdb, 0x1a, 0x8a, 0xf3, 0x74, 0x4e, 0x46, 0x2f, 0x61, - 0xd9, 0x0f, 0xfb, 0x3c, 0x28, 0xa4, 0xb5, 0x8f, 0x6f, 0x17, 0xfa, 0xa8, 0x2b, 0x04, 0x66, 0x7f, - 0x0c, 0xb9, 0x60, 0x03, 0x16, 0x48, 0x9c, 0x70, 0xd0, 0x3d, 0x58, 0x89, 0xbb, 0x82, 0x47, 0xb2, - 0x90, 0xd9, 0x4d, 0x3d, 0x5d, 0xc7, 0x46, 0x42, 0x2e, 0xe4, 0x63, 0xd6, 0x1d, 0x0a, 0x2e, 0x47, - 0xc4, 0x67, 0x17, 0xcc, 0x2f, 0x2c, 0x69, 0xef, 0xc5, 0x85, 0xde, 0x5b, 0x06, 0x5a, 0x57, 0x48, - 0xbc, 0x11, 0xcf, 0x8a, 0xc8, 0x82, 0xcc, 0x50, 0xf8, 0x85, 0x65, 0xed, 0x5f, 0x1d, 0x8b, 0x9f, - 0xd2, 0x90, 0x73, 0x84, 0x08, 0xc5, 0x38, 0x23, 0xbf, 0x02, 0x30, 0x25, 0x93, 0x6e, 0xd8, 0x63, - 0x26, 0x17, 0xfb, 0x0b, 0xbf, 0x34, 0x4b, 0x4b, 0x84, 0x4a, 0xd8, 0x63, 0x78, 0x9d, 0x8d, 0x8f, - 0xe8, 0x11, 0x64, 0x63, 0x55, 0xa4, 0x2e, 0x39, 0xe7, 0x3e, 0xd3, 0x49, 0x59, 0xc7, 0x90, 0xa8, - 0x8e, 0xb9, 0xcf, 0xd0, 0x7d, 0x58, 0x1f, 0xf0, 0x01, 0x23, 0x72, 0x14, 0x31, 0x13, 0xf5, 0x9a, - 0x52, 0xb4, 0x47, 0x11, 0x2b, 0xfe, 0x95, 0x82, 0xf5, 0x89, 0x5b, 0xb4, 0x03, 0xf7, 0x1c, 0x8c, - 0x1b, 0x98, 0x54, 0x1a, 0x55, 0x87, 0x74, 0x4e, 0x5b, 0x4d, 0xa7, 0xe2, 0x1e, 0xbb, 0x4e, 0xd5, - 0xba, 0x85, 0xee, 0x01, 0x9a, 0xb1, 0x55, 0x9d, 0x63, 0xbb, 0x53, 0x6f, 0x5b, 0xb7, 0xd0, 0x36, - 0xdc, 0x9d, 0xd1, 0x37, 0xde, 0x3a, 0x98, 0xbc, 0xe9, 0x34, 0xda, 0xb6, 0x95, 0x42, 0x0f, 0x61, - 0x7b, 0x96, 0xd2, 0x68, 0x11, 0xbb, 0xe9, 0x92, 0xaa, 0x73, 0xea, 0xda, 0x75, 0x2b, 0x7d, 0xc9, - 0x63, 0xdb, 0x3d, 0x71, 0x1a, 0x9d, 0xb6, 0x95, 0xd9, 0x49, 0x5b, 0xa9, 0xe2, 0xdf, 0x2b, 0xb0, - 0xd2, 0x11, 0xfe, 0x09, 0x8d, 0xd4, 0xfd, 0x87, 0xc2, 0x27, 0x82, 0xf5, 0xd9, 0x47, 0x9d, 0xab, - 0x75, 0xbc, 0x36, 0x14, 0x3e, 0x56, 0x32, 0xaa, 0x43, 0x6e, 0x26, 0xfa, 0x58, 0x87, 0x9f, 0x3d, - 0x7c, 0xb2, 0xb8, 0x6a, 0x93, 0x9c, 0xc4, 0x26, 0xa3, 0xb5, 0x5b, 0x38, 0x3b, 0xcd, 0x54, 0x8c, - 0x5e, 0xcd, 0x75, 0x47, 0xf6, 0xba, 0xea, 0x6b, 0xc8, 0xd4, 0xc5, 0xb8, 0x87, 0xea, 0x90, 0xa3, - 0x11, 0x27, 0x2c, 0xe8, 0x45, 0x21, 0x0f, 0xa4, 0xee, 0xa0, 0xeb, 0xee, 0x62, 0x47, 0xdc, 0x31, - 0xb8, 0x99, 0xbb, 0xd0, 0xa9, 0x76, 0x41, 0x47, 0x2e, 0x7f, 0x69, 0x47, 0x4e, 0x26, 0x66, 0xe5, - 0x0b, 0x26, 0x66, 0xd1, 0xf4, 0xae, 0x7e, 0xf9, 0xf4, 0xc6, 0x70, 0x5f, 0xb0, 0x1e, 0x17, 0xac, - 0x2b, 0x89, 0x27, 0x65, 0x44, 0x04, 0x8b, 0xa3, 0x30, 0x88, 0x59, 0x32, 0x0b, 0x6b, 0xda, 0xf3, - 0x77, 0x0b, 0x3d, 0x27, 0xfd, 0x50, 0xc2, 0x86, 0x5e, 0x93, 0x32, 0xc2, 0x86, 0xac, 0x87, 0xa2, - 0x20, 0xae, 0xb1, 0x14, 0xff, 0x4d, 0x41, 0xe1, 0x3a, 0x1a, 0xda, 0x87, 0x27, 0xd8, 0xa9, 0xba, - 0xd8, 0xa9, 0xb4, 0x49, 0xad, 0xdd, 0x6e, 0x12, 0xec, 0xb4, 0x9a, 0x8d, 0xd3, 0x96, 0xb3, 0x68, - 0x0a, 0x1e, 0xc3, 0xa3, 0xcf, 0x81, 0x8f, 0x9e, 0x1d, 0x58, 0xa9, 0x9b, 0x41, 0x87, 0x56, 0xfa, - 0x66, 0xd0, 0x91, 0x95, 0xb9, 0x19, 0xf4, 0xdc, 0x5a, 0x7a, 0x9d, 0x87, 0x9c, 0x97, 0xf4, 0x90, - 0x9e, 0xf1, 0xe2, 0xa7, 0x0c, 0xa0, 0xab, 0xbd, 0x8e, 0x10, 0x2c, 0x45, 0x54, 0x7a, 0x66, 0x84, - 0xf4, 0x19, 0xed, 0xc1, 0xe6, 0x30, 0xf2, 0x43, 0xda, 0x23, 0x4a, 0x34, 0x33, 0x96, 0xac, 0x90, - 0xdb, 0x89, 0xa1, 0x49, 0xa5, 0x97, 0x8c, 0xda, 0xef, 0x90, 0xd3, 0x05, 0xf3, 0x18, 0xed, 0x31, - 0x11, 0x17, 0x32, 0xbb, 0x99, 0xa7, 0xd9, 0xc3, 0x17, 0xff, 0x73, 0xd4, 0x4a, 0x2a, 0xef, 0xb5, - 0x84, 0xea, 0x04, 0x52, 0x8c, 0x70, 0xd6, 0x9b, 0x6a, 0xe6, 0x97, 0xd4, 0xd2, 0xfc, 0x92, 0x42, - 0x3f, 0x00, 0xb0, 0x8f, 0x11, 0x4f, 0x5e, 0x1a, 0x3d, 0x06, 0xd9, 0xc3, 0xed, 0xf1, 0x77, 0xc7, - 0x4f, 0x51, 0xa9, 0x6a, 0x9e, 0x22, 0x3c, 0x03, 0x46, 0x87, 0x70, 0x57, 0x24, 0x3d, 0x4d, 0x06, - 0x54, 0x76, 0x3d, 0x1e, 0xf4, 0x93, 0x3d, 0xa9, 0x46, 0x61, 0x0d, 0x6f, 0x19, 0xe3, 0x89, 0xb1, - 0xe9, 0x85, 0x79, 0x00, 0x77, 0x68, 0x14, 0xf9, 0xbc, 0xab, 0x5d, 0x10, 0xc1, 0x68, 0x8f, 0x9e, - 0xf9, 0x4c, 0x77, 0xfd, 0x1a, 0xde, 0x9a, 0xb1, 0x61, 0x63, 0xda, 0xf9, 0x09, 0xac, 0xcb, 0xf1, - 0xa9, 0x77, 0xe0, 0x03, 0x1b, 0x99, 0x74, 0xab, 0x23, 0xba, 0x03, 0xcb, 0x17, 0xd4, 0x1f, 0x8e, - 0x97, 0x74, 0x22, 0xfc, 0x98, 0x7e, 0x91, 0x2a, 0x3e, 0x83, 0x8d, 0xb9, 0xad, 0xa2, 0xb7, 0xba, - 0x56, 0x90, 0x99, 0x9a, 0x41, 0xa2, 0x52, 0x25, 0x29, 0x7e, 0x0f, 0xe8, 0xea, 0x0e, 0xb9, 0x99, - 0xf6, 0x4f, 0x1a, 0xb2, 0x35, 0x46, 0x7d, 0xe9, 0x55, 0x3c, 0xd6, 0xfd, 0x80, 0x9e, 0xc1, 0x9d, - 0x1e, 0x8f, 0x55, 0x0c, 0xaa, 0xae, 0xbe, 0xf4, 0x48, 0x57, 0xe9, 0x35, 0x73, 0x0d, 0x23, 0x63, - 0x9b, 0x65, 0x20, 0x58, 0xf2, 0xc2, 0x58, 0x9a, 0x18, 0xf4, 0x19, 0xed, 0xc3, 0x66, 0xc2, 0x1e, - 0x11, 0xe9, 0x09, 0x16, 0x7b, 0xa1, 0xdf, 0xd3, 0x2b, 0x74, 0x03, 0x5b, 0xc6, 0xd0, 0x1e, 0xeb, - 0x51, 0x19, 0xb6, 0x86, 0xc1, 0x55, 0xf8, 0x92, 0x86, 0xa3, 0x89, 0x69, 0x4a, 0xd8, 0x87, 0x4d, - 0xc1, 0x62, 0x49, 0x85, 0x9c, 0x81, 0x2f, 0x27, 0xde, 0x8d, 0x61, 0x0a, 0xfe, 0x19, 0xf2, 0x3a, - 0x02, 0xc2, 0x03, 0xc9, 0xc4, 0x05, 0xf5, 0x75, 0xa5, 0x3f, 0xdb, 0x2f, 0x1b, 0x9a, 0xe0, 0x1a, - 0x3c, 0x3a, 0x82, 0x55, 0xc9, 0x07, 0x2c, 0x1c, 0x4a, 0x5d, 0xf1, 0xcf, 0x52, 0xc7, 0xc8, 0xe2, - 0x73, 0x58, 0xad, 0xf3, 0x33, 0x41, 0xc5, 0x48, 0x25, 0x28, 0xa0, 0x03, 0x36, 0x9e, 0x33, 0x75, - 0x46, 0x05, 0x58, 0xbd, 0x60, 0x22, 0x56, 0xed, 0x9b, 0xe4, 0x6d, 0x2c, 0xee, 0x49, 0xc8, 0xcf, - 0x6f, 0x4c, 0xb4, 0x0b, 0x0f, 0xec, 0x4e, 0xbb, 0x46, 0x8e, 0x6d, 0xb7, 0x4e, 0xec, 0x4a, 0xdb, - 0x6d, 0x9c, 0x5e, 0x5a, 0x42, 0x0f, 0x61, 0xfb, 0x0a, 0x62, 0xbc, 0x26, 0xac, 0x14, 0xfa, 0x06, - 0x1e, 0x2e, 0x70, 0xa0, 0x54, 0x0d, 0xec, 0xbe, 0x77, 0xaa, 0x56, 0x7a, 0xef, 0x0c, 0xac, 0xcb, - 0xfb, 0x1e, 0xdd, 0x85, 0xcd, 0x7a, 0xe3, 0x17, 0xf7, 0xf2, 0xc7, 0x10, 0xe4, 0x13, 0x75, 0xa3, - 0xa9, 0x3c, 0xd9, 0x75, 0x2b, 0x85, 0x6e, 0x43, 0x36, 0xd1, 0xd9, 0xd5, 0x13, 0xf7, 0xd4, 0x4a, - 0x4f, 0x41, 0xd8, 0x79, 0xd3, 0x71, 0xb1, 0x53, 0xb5, 0x32, 0x7b, 0x23, 0xd8, 0x98, 0x7b, 0x95, - 0xd4, 0x7b, 0xdf, 0x72, 0x2a, 0x1d, 0xec, 0x5c, 0xfd, 0x82, 0xd1, 0x4f, 0xff, 0x2a, 0x2c, 0xc8, - 0x19, 0xdd, 0xa9, 0xf3, 0xd6, 0xc1, 0x56, 0x0a, 0x6d, 0xc1, 0x6d, 0xa3, 0x99, 0x5c, 0x24, 0x8d, - 0x36, 0x61, 0xc3, 0x28, 0xed, 0xfa, 0x6f, 0xf6, 0xbb, 0x56, 0xf2, 0xf7, 0xf0, 0xba, 0x0f, 0x5f, - 0x75, 0xc3, 0xc1, 0xa2, 0xcd, 0xf4, 0x3a, 0x67, 0x47, 0xd1, 0x3b, 0x3a, 0xf0, 0x9b, 0xaa, 0x96, - 0xcd, 0xd4, 0xfb, 0x57, 0x06, 0xd4, 0x0f, 0x7d, 0x1a, 0xf4, 0x4b, 0xa1, 0xe8, 0x97, 0xfb, 0x2c, - 0xd0, 0x95, 0x2e, 0x27, 0x26, 0x1a, 0xf1, 0x78, 0xee, 0x3f, 0xfa, 0xe5, 0x44, 0x38, 0x5b, 0xd1, - 0xc0, 0xa3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x96, 0x5d, 0x26, 0x6c, 0x6f, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/appengine.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/appengine.pb.go deleted file mode 100644 index d4ce9eed..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/appengine.pb.go +++ /dev/null @@ -1,1359 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/appengine.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/iam/v1" -import _ "google.golang.org/genproto/googleapis/iam/v1" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/empty" -import google_protobuf5 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Fields that should be returned when [Version][google.appengine.v1.Version] resources -// are retreived. -type VersionView int32 - -const ( - // Basic version information including scaling and inbound services, - // but not detailed deployment information. - VersionView_BASIC VersionView = 0 - // The information from `BASIC`, plus detailed information about the - // deployment. This format is required when creating resources, but - // is not returned in `Get` or `List` by default. - VersionView_FULL VersionView = 1 -) - -var VersionView_name = map[int32]string{ - 0: "BASIC", - 1: "FULL", -} -var VersionView_value = map[string]int32{ - "BASIC": 0, - "FULL": 1, -} - -func (x VersionView) String() string { - return proto.EnumName(VersionView_name, int32(x)) -} -func (VersionView) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Request message for `Applications.GetApplication`. -type GetApplicationRequest struct { - // Name of the Application resource to get. Example: `apps/myapp`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetApplicationRequest) Reset() { *m = GetApplicationRequest{} } -func (m *GetApplicationRequest) String() string { return proto.CompactTextString(m) } -func (*GetApplicationRequest) ProtoMessage() {} -func (*GetApplicationRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *GetApplicationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for 'Applications.RepairApplication'. -type RepairApplicationRequest struct { - // Name of the application to repair. Example: `apps/myapp` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *RepairApplicationRequest) Reset() { *m = RepairApplicationRequest{} } -func (m *RepairApplicationRequest) String() string { return proto.CompactTextString(m) } -func (*RepairApplicationRequest) ProtoMessage() {} -func (*RepairApplicationRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *RepairApplicationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `Services.ListServices`. -type ListServicesRequest struct { - // Name of the parent Application resource. Example: `apps/myapp`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Maximum results to return per page. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Continuation token for fetching the next page of results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListServicesRequest) Reset() { *m = ListServicesRequest{} } -func (m *ListServicesRequest) String() string { return proto.CompactTextString(m) } -func (*ListServicesRequest) ProtoMessage() {} -func (*ListServicesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *ListServicesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListServicesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListServicesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for `Services.ListServices`. -type ListServicesResponse struct { - // The services belonging to the requested application. - Services []*Service `protobuf:"bytes,1,rep,name=services" json:"services,omitempty"` - // Continuation token for fetching the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListServicesResponse) Reset() { *m = ListServicesResponse{} } -func (m *ListServicesResponse) String() string { return proto.CompactTextString(m) } -func (*ListServicesResponse) ProtoMessage() {} -func (*ListServicesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *ListServicesResponse) GetServices() []*Service { - if m != nil { - return m.Services - } - return nil -} - -func (m *ListServicesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for `Services.GetService`. -type GetServiceRequest struct { - // Name of the resource requested. Example: `apps/myapp/services/default`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetServiceRequest) Reset() { *m = GetServiceRequest{} } -func (m *GetServiceRequest) String() string { return proto.CompactTextString(m) } -func (*GetServiceRequest) ProtoMessage() {} -func (*GetServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *GetServiceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `Services.UpdateService`. -type UpdateServiceRequest struct { - // Name of the resource to update. Example: `apps/myapp/services/default`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A Service resource containing the updated service. Only fields set in the - // field mask will be updated. - Service *Service `protobuf:"bytes,2,opt,name=service" json:"service,omitempty"` - // Standard field mask for the set of fields to be updated. - UpdateMask *google_protobuf5.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` - // Set to `true` to gradually shift traffic from one version to another - // single version. By default, traffic is shifted immediately. - // For gradual traffic migration, the target version - // must be located within instances that are configured for both - // [warmup requests](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#inboundservicetype) - // and - // [automatic scaling](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#automaticscaling). - // You must specify the - // [`shardBy`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services#shardby) - // field in the Service resource. Gradual traffic migration is not - // supported in the App Engine flexible environment. For examples, see - // [Migrating and Splitting Traffic](https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic). - MigrateTraffic bool `protobuf:"varint,4,opt,name=migrate_traffic,json=migrateTraffic" json:"migrate_traffic,omitempty"` -} - -func (m *UpdateServiceRequest) Reset() { *m = UpdateServiceRequest{} } -func (m *UpdateServiceRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateServiceRequest) ProtoMessage() {} -func (*UpdateServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *UpdateServiceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateServiceRequest) GetService() *Service { - if m != nil { - return m.Service - } - return nil -} - -func (m *UpdateServiceRequest) GetUpdateMask() *google_protobuf5.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func (m *UpdateServiceRequest) GetMigrateTraffic() bool { - if m != nil { - return m.MigrateTraffic - } - return false -} - -// Request message for `Services.DeleteService`. -type DeleteServiceRequest struct { - // Name of the resource requested. Example: `apps/myapp/services/default`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteServiceRequest) Reset() { *m = DeleteServiceRequest{} } -func (m *DeleteServiceRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteServiceRequest) ProtoMessage() {} -func (*DeleteServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *DeleteServiceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `Versions.ListVersions`. -type ListVersionsRequest struct { - // Name of the parent Service resource. Example: - // `apps/myapp/services/default`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Controls the set of fields returned in the `List` response. - View VersionView `protobuf:"varint,2,opt,name=view,enum=google.appengine.v1.VersionView" json:"view,omitempty"` - // Maximum results to return per page. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Continuation token for fetching the next page of results. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListVersionsRequest) Reset() { *m = ListVersionsRequest{} } -func (m *ListVersionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListVersionsRequest) ProtoMessage() {} -func (*ListVersionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *ListVersionsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListVersionsRequest) GetView() VersionView { - if m != nil { - return m.View - } - return VersionView_BASIC -} - -func (m *ListVersionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListVersionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for `Versions.ListVersions`. -type ListVersionsResponse struct { - // The versions belonging to the requested service. - Versions []*Version `protobuf:"bytes,1,rep,name=versions" json:"versions,omitempty"` - // Continuation token for fetching the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListVersionsResponse) Reset() { *m = ListVersionsResponse{} } -func (m *ListVersionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListVersionsResponse) ProtoMessage() {} -func (*ListVersionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *ListVersionsResponse) GetVersions() []*Version { - if m != nil { - return m.Versions - } - return nil -} - -func (m *ListVersionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for `Versions.GetVersion`. -type GetVersionRequest struct { - // Name of the resource requested. Example: - // `apps/myapp/services/default/versions/v1`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Controls the set of fields returned in the `Get` response. - View VersionView `protobuf:"varint,2,opt,name=view,enum=google.appengine.v1.VersionView" json:"view,omitempty"` -} - -func (m *GetVersionRequest) Reset() { *m = GetVersionRequest{} } -func (m *GetVersionRequest) String() string { return proto.CompactTextString(m) } -func (*GetVersionRequest) ProtoMessage() {} -func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *GetVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GetVersionRequest) GetView() VersionView { - if m != nil { - return m.View - } - return VersionView_BASIC -} - -// Request message for `Versions.CreateVersion`. -type CreateVersionRequest struct { - // Name of the parent resource to create this version under. Example: - // `apps/myapp/services/default`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Application deployment configuration. - Version *Version `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` -} - -func (m *CreateVersionRequest) Reset() { *m = CreateVersionRequest{} } -func (m *CreateVersionRequest) String() string { return proto.CompactTextString(m) } -func (*CreateVersionRequest) ProtoMessage() {} -func (*CreateVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *CreateVersionRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateVersionRequest) GetVersion() *Version { - if m != nil { - return m.Version - } - return nil -} - -// Request message for `Versions.UpdateVersion`. -type UpdateVersionRequest struct { - // Name of the resource to update. Example: - // `apps/myapp/services/default/versions/1`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A Version containing the updated resource. Only fields set in the field - // mask will be updated. - Version *Version `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` - // Standard field mask for the set of fields to be updated. - UpdateMask *google_protobuf5.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateVersionRequest) Reset() { *m = UpdateVersionRequest{} } -func (m *UpdateVersionRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateVersionRequest) ProtoMessage() {} -func (*UpdateVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *UpdateVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateVersionRequest) GetVersion() *Version { - if m != nil { - return m.Version - } - return nil -} - -func (m *UpdateVersionRequest) GetUpdateMask() *google_protobuf5.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request message for `Versions.DeleteVersion`. -type DeleteVersionRequest struct { - // Name of the resource requested. Example: - // `apps/myapp/services/default/versions/v1`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteVersionRequest) Reset() { *m = DeleteVersionRequest{} } -func (m *DeleteVersionRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteVersionRequest) ProtoMessage() {} -func (*DeleteVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *DeleteVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `Instances.ListInstances`. -type ListInstancesRequest struct { - // Name of the parent Version resource. Example: - // `apps/myapp/services/default/versions/v1`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Maximum results to return per page. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Continuation token for fetching the next page of results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListInstancesRequest) Reset() { *m = ListInstancesRequest{} } -func (m *ListInstancesRequest) String() string { return proto.CompactTextString(m) } -func (*ListInstancesRequest) ProtoMessage() {} -func (*ListInstancesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *ListInstancesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListInstancesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListInstancesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for `Instances.ListInstances`. -type ListInstancesResponse struct { - // The instances belonging to the requested version. - Instances []*Instance `protobuf:"bytes,1,rep,name=instances" json:"instances,omitempty"` - // Continuation token for fetching the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListInstancesResponse) Reset() { *m = ListInstancesResponse{} } -func (m *ListInstancesResponse) String() string { return proto.CompactTextString(m) } -func (*ListInstancesResponse) ProtoMessage() {} -func (*ListInstancesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *ListInstancesResponse) GetInstances() []*Instance { - if m != nil { - return m.Instances - } - return nil -} - -func (m *ListInstancesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for `Instances.GetInstance`. -type GetInstanceRequest struct { - // Name of the resource requested. Example: - // `apps/myapp/services/default/versions/v1/instances/instance-1`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetInstanceRequest) Reset() { *m = GetInstanceRequest{} } -func (m *GetInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*GetInstanceRequest) ProtoMessage() {} -func (*GetInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *GetInstanceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `Instances.DeleteInstance`. -type DeleteInstanceRequest struct { - // Name of the resource requested. Example: - // `apps/myapp/services/default/versions/v1/instances/instance-1`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteInstanceRequest) Reset() { *m = DeleteInstanceRequest{} } -func (m *DeleteInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteInstanceRequest) ProtoMessage() {} -func (*DeleteInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *DeleteInstanceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `Instances.DebugInstance`. -type DebugInstanceRequest struct { - // Name of the resource requested. Example: - // `apps/myapp/services/default/versions/v1/instances/instance-1`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DebugInstanceRequest) Reset() { *m = DebugInstanceRequest{} } -func (m *DebugInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*DebugInstanceRequest) ProtoMessage() {} -func (*DebugInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *DebugInstanceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*GetApplicationRequest)(nil), "google.appengine.v1.GetApplicationRequest") - proto.RegisterType((*RepairApplicationRequest)(nil), "google.appengine.v1.RepairApplicationRequest") - proto.RegisterType((*ListServicesRequest)(nil), "google.appengine.v1.ListServicesRequest") - proto.RegisterType((*ListServicesResponse)(nil), "google.appengine.v1.ListServicesResponse") - proto.RegisterType((*GetServiceRequest)(nil), "google.appengine.v1.GetServiceRequest") - proto.RegisterType((*UpdateServiceRequest)(nil), "google.appengine.v1.UpdateServiceRequest") - proto.RegisterType((*DeleteServiceRequest)(nil), "google.appengine.v1.DeleteServiceRequest") - proto.RegisterType((*ListVersionsRequest)(nil), "google.appengine.v1.ListVersionsRequest") - proto.RegisterType((*ListVersionsResponse)(nil), "google.appengine.v1.ListVersionsResponse") - proto.RegisterType((*GetVersionRequest)(nil), "google.appengine.v1.GetVersionRequest") - proto.RegisterType((*CreateVersionRequest)(nil), "google.appengine.v1.CreateVersionRequest") - proto.RegisterType((*UpdateVersionRequest)(nil), "google.appengine.v1.UpdateVersionRequest") - proto.RegisterType((*DeleteVersionRequest)(nil), "google.appengine.v1.DeleteVersionRequest") - proto.RegisterType((*ListInstancesRequest)(nil), "google.appengine.v1.ListInstancesRequest") - proto.RegisterType((*ListInstancesResponse)(nil), "google.appengine.v1.ListInstancesResponse") - proto.RegisterType((*GetInstanceRequest)(nil), "google.appengine.v1.GetInstanceRequest") - proto.RegisterType((*DeleteInstanceRequest)(nil), "google.appengine.v1.DeleteInstanceRequest") - proto.RegisterType((*DebugInstanceRequest)(nil), "google.appengine.v1.DebugInstanceRequest") - proto.RegisterEnum("google.appengine.v1.VersionView", VersionView_name, VersionView_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Instances service - -type InstancesClient interface { - // Lists the instances of a version. - ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) - // Gets instance information. - GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*Instance, error) - // Stops a running instance. - DeleteInstance(ctx context.Context, in *DeleteInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Enables debugging on a VM instance. This allows you to use the SSH - // command to connect to the virtual machine where the instance lives. - // While in "debug mode", the instance continues to serve live traffic. - // You should delete the instance when you are done debugging and then - // allow the system to take over and determine if another instance - // should be started. - // - // Only applicable for instances in App Engine flexible environment. - DebugInstance(ctx context.Context, in *DebugInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type instancesClient struct { - cc *grpc.ClientConn -} - -func NewInstancesClient(cc *grpc.ClientConn) InstancesClient { - return &instancesClient{cc} -} - -func (c *instancesClient) ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) { - out := new(ListInstancesResponse) - err := grpc.Invoke(ctx, "/google.appengine.v1.Instances/ListInstances", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instancesClient) GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*Instance, error) { - out := new(Instance) - err := grpc.Invoke(ctx, "/google.appengine.v1.Instances/GetInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instancesClient) DeleteInstance(ctx context.Context, in *DeleteInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.appengine.v1.Instances/DeleteInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instancesClient) DebugInstance(ctx context.Context, in *DebugInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.appengine.v1.Instances/DebugInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Instances service - -type InstancesServer interface { - // Lists the instances of a version. - ListInstances(context.Context, *ListInstancesRequest) (*ListInstancesResponse, error) - // Gets instance information. - GetInstance(context.Context, *GetInstanceRequest) (*Instance, error) - // Stops a running instance. - DeleteInstance(context.Context, *DeleteInstanceRequest) (*google_longrunning.Operation, error) - // Enables debugging on a VM instance. This allows you to use the SSH - // command to connect to the virtual machine where the instance lives. - // While in "debug mode", the instance continues to serve live traffic. - // You should delete the instance when you are done debugging and then - // allow the system to take over and determine if another instance - // should be started. - // - // Only applicable for instances in App Engine flexible environment. - DebugInstance(context.Context, *DebugInstanceRequest) (*google_longrunning.Operation, error) -} - -func RegisterInstancesServer(s *grpc.Server, srv InstancesServer) { - s.RegisterService(&_Instances_serviceDesc, srv) -} - -func _Instances_ListInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInstancesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstancesServer).ListInstances(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Instances/ListInstances", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstancesServer).ListInstances(ctx, req.(*ListInstancesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Instances_GetInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstancesServer).GetInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Instances/GetInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstancesServer).GetInstance(ctx, req.(*GetInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Instances_DeleteInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstancesServer).DeleteInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Instances/DeleteInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstancesServer).DeleteInstance(ctx, req.(*DeleteInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Instances_DebugInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DebugInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstancesServer).DebugInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Instances/DebugInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstancesServer).DebugInstance(ctx, req.(*DebugInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Instances_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.appengine.v1.Instances", - HandlerType: (*InstancesServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListInstances", - Handler: _Instances_ListInstances_Handler, - }, - { - MethodName: "GetInstance", - Handler: _Instances_GetInstance_Handler, - }, - { - MethodName: "DeleteInstance", - Handler: _Instances_DeleteInstance_Handler, - }, - { - MethodName: "DebugInstance", - Handler: _Instances_DebugInstance_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/appengine/v1/appengine.proto", -} - -// Client API for Versions service - -type VersionsClient interface { - // Lists the versions of a service. - ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*ListVersionsResponse, error) - // Gets the specified Version resource. - // By default, only a `BASIC_VIEW` will be returned. - // Specify the `FULL_VIEW` parameter to get the full resource. - GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*Version, error) - // Deploys code and resource files to a new version. - CreateVersion(ctx context.Context, in *CreateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Updates the specified Version resource. - // You can specify the following fields depending on the App Engine - // environment and type of scaling that the version resource uses: - // - // * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status): - // For Version resources that use basic scaling, manual scaling, or run in - // the App Engine flexible environment. - // * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class): - // For Version resources that run in the App Engine standard environment. - // * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): - // For Version resources that use automatic scaling and run in the App - // Engine standard environment. - // * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): - // For Version resources that use automatic scaling and run in the App - // Engine standard environment. - UpdateVersion(ctx context.Context, in *UpdateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes an existing Version resource. - DeleteVersion(ctx context.Context, in *DeleteVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type versionsClient struct { - cc *grpc.ClientConn -} - -func NewVersionsClient(cc *grpc.ClientConn) VersionsClient { - return &versionsClient{cc} -} - -func (c *versionsClient) ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*ListVersionsResponse, error) { - out := new(ListVersionsResponse) - err := grpc.Invoke(ctx, "/google.appengine.v1.Versions/ListVersions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *versionsClient) GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*Version, error) { - out := new(Version) - err := grpc.Invoke(ctx, "/google.appengine.v1.Versions/GetVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *versionsClient) CreateVersion(ctx context.Context, in *CreateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.appengine.v1.Versions/CreateVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *versionsClient) UpdateVersion(ctx context.Context, in *UpdateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.appengine.v1.Versions/UpdateVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *versionsClient) DeleteVersion(ctx context.Context, in *DeleteVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.appengine.v1.Versions/DeleteVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Versions service - -type VersionsServer interface { - // Lists the versions of a service. - ListVersions(context.Context, *ListVersionsRequest) (*ListVersionsResponse, error) - // Gets the specified Version resource. - // By default, only a `BASIC_VIEW` will be returned. - // Specify the `FULL_VIEW` parameter to get the full resource. - GetVersion(context.Context, *GetVersionRequest) (*Version, error) - // Deploys code and resource files to a new version. - CreateVersion(context.Context, *CreateVersionRequest) (*google_longrunning.Operation, error) - // Updates the specified Version resource. - // You can specify the following fields depending on the App Engine - // environment and type of scaling that the version resource uses: - // - // * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status): - // For Version resources that use basic scaling, manual scaling, or run in - // the App Engine flexible environment. - // * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class): - // For Version resources that run in the App Engine standard environment. - // * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): - // For Version resources that use automatic scaling and run in the App - // Engine standard environment. - // * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): - // For Version resources that use automatic scaling and run in the App - // Engine standard environment. - UpdateVersion(context.Context, *UpdateVersionRequest) (*google_longrunning.Operation, error) - // Deletes an existing Version resource. - DeleteVersion(context.Context, *DeleteVersionRequest) (*google_longrunning.Operation, error) -} - -func RegisterVersionsServer(s *grpc.Server, srv VersionsServer) { - s.RegisterService(&_Versions_serviceDesc, srv) -} - -func _Versions_ListVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListVersionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VersionsServer).ListVersions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Versions/ListVersions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VersionsServer).ListVersions(ctx, req.(*ListVersionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Versions_GetVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VersionsServer).GetVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Versions/GetVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VersionsServer).GetVersion(ctx, req.(*GetVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Versions_CreateVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VersionsServer).CreateVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Versions/CreateVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VersionsServer).CreateVersion(ctx, req.(*CreateVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Versions_UpdateVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VersionsServer).UpdateVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Versions/UpdateVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VersionsServer).UpdateVersion(ctx, req.(*UpdateVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Versions_DeleteVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VersionsServer).DeleteVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Versions/DeleteVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VersionsServer).DeleteVersion(ctx, req.(*DeleteVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Versions_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.appengine.v1.Versions", - HandlerType: (*VersionsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListVersions", - Handler: _Versions_ListVersions_Handler, - }, - { - MethodName: "GetVersion", - Handler: _Versions_GetVersion_Handler, - }, - { - MethodName: "CreateVersion", - Handler: _Versions_CreateVersion_Handler, - }, - { - MethodName: "UpdateVersion", - Handler: _Versions_UpdateVersion_Handler, - }, - { - MethodName: "DeleteVersion", - Handler: _Versions_DeleteVersion_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/appengine/v1/appengine.proto", -} - -// Client API for Services service - -type ServicesClient interface { - // Lists all the services in the application. - ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error) - // Gets the current configuration of the specified service. - GetService(ctx context.Context, in *GetServiceRequest, opts ...grpc.CallOption) (*Service, error) - // Updates the configuration of the specified service. - UpdateService(ctx context.Context, in *UpdateServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes the specified service and all enclosed versions. - DeleteService(ctx context.Context, in *DeleteServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type servicesClient struct { - cc *grpc.ClientConn -} - -func NewServicesClient(cc *grpc.ClientConn) ServicesClient { - return &servicesClient{cc} -} - -func (c *servicesClient) ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error) { - out := new(ListServicesResponse) - err := grpc.Invoke(ctx, "/google.appengine.v1.Services/ListServices", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *servicesClient) GetService(ctx context.Context, in *GetServiceRequest, opts ...grpc.CallOption) (*Service, error) { - out := new(Service) - err := grpc.Invoke(ctx, "/google.appengine.v1.Services/GetService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *servicesClient) UpdateService(ctx context.Context, in *UpdateServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.appengine.v1.Services/UpdateService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *servicesClient) DeleteService(ctx context.Context, in *DeleteServiceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.appengine.v1.Services/DeleteService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Services service - -type ServicesServer interface { - // Lists all the services in the application. - ListServices(context.Context, *ListServicesRequest) (*ListServicesResponse, error) - // Gets the current configuration of the specified service. - GetService(context.Context, *GetServiceRequest) (*Service, error) - // Updates the configuration of the specified service. - UpdateService(context.Context, *UpdateServiceRequest) (*google_longrunning.Operation, error) - // Deletes the specified service and all enclosed versions. - DeleteService(context.Context, *DeleteServiceRequest) (*google_longrunning.Operation, error) -} - -func RegisterServicesServer(s *grpc.Server, srv ServicesServer) { - s.RegisterService(&_Services_serviceDesc, srv) -} - -func _Services_ListServices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListServicesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServicesServer).ListServices(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Services/ListServices", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServicesServer).ListServices(ctx, req.(*ListServicesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Services_GetService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServicesServer).GetService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Services/GetService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServicesServer).GetService(ctx, req.(*GetServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Services_UpdateService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServicesServer).UpdateService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Services/UpdateService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServicesServer).UpdateService(ctx, req.(*UpdateServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Services_DeleteService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServicesServer).DeleteService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Services/DeleteService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServicesServer).DeleteService(ctx, req.(*DeleteServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Services_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.appengine.v1.Services", - HandlerType: (*ServicesServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListServices", - Handler: _Services_ListServices_Handler, - }, - { - MethodName: "GetService", - Handler: _Services_GetService_Handler, - }, - { - MethodName: "UpdateService", - Handler: _Services_UpdateService_Handler, - }, - { - MethodName: "DeleteService", - Handler: _Services_DeleteService_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/appengine/v1/appengine.proto", -} - -// Client API for Applications service - -type ApplicationsClient interface { - // Gets information about an application. - GetApplication(ctx context.Context, in *GetApplicationRequest, opts ...grpc.CallOption) (*Application, error) - // Recreates the required App Engine features for the application in your - // project, for example a Cloud Storage bucket or App Engine service account. - // Use this method if you receive an error message about a missing feature, - // for example "*Error retrieving the App Engine service account*". - RepairApplication(ctx context.Context, in *RepairApplicationRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type applicationsClient struct { - cc *grpc.ClientConn -} - -func NewApplicationsClient(cc *grpc.ClientConn) ApplicationsClient { - return &applicationsClient{cc} -} - -func (c *applicationsClient) GetApplication(ctx context.Context, in *GetApplicationRequest, opts ...grpc.CallOption) (*Application, error) { - out := new(Application) - err := grpc.Invoke(ctx, "/google.appengine.v1.Applications/GetApplication", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *applicationsClient) RepairApplication(ctx context.Context, in *RepairApplicationRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.appengine.v1.Applications/RepairApplication", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Applications service - -type ApplicationsServer interface { - // Gets information about an application. - GetApplication(context.Context, *GetApplicationRequest) (*Application, error) - // Recreates the required App Engine features for the application in your - // project, for example a Cloud Storage bucket or App Engine service account. - // Use this method if you receive an error message about a missing feature, - // for example "*Error retrieving the App Engine service account*". - RepairApplication(context.Context, *RepairApplicationRequest) (*google_longrunning.Operation, error) -} - -func RegisterApplicationsServer(s *grpc.Server, srv ApplicationsServer) { - s.RegisterService(&_Applications_serviceDesc, srv) -} - -func _Applications_GetApplication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetApplicationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationsServer).GetApplication(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Applications/GetApplication", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationsServer).GetApplication(ctx, req.(*GetApplicationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Applications_RepairApplication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RepairApplicationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ApplicationsServer).RepairApplication(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.appengine.v1.Applications/RepairApplication", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ApplicationsServer).RepairApplication(ctx, req.(*RepairApplicationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Applications_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.appengine.v1.Applications", - HandlerType: (*ApplicationsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetApplication", - Handler: _Applications_GetApplication_Handler, - }, - { - MethodName: "RepairApplication", - Handler: _Applications_RepairApplication_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/appengine/v1/appengine.proto", -} - -func init() { proto.RegisterFile("google/appengine/v1/appengine.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1134 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xdf, 0x6f, 0xdb, 0x54, - 0x14, 0xc6, 0x6d, 0xba, 0x25, 0x27, 0x6b, 0xb6, 0xde, 0xb6, 0x10, 0xbc, 0x76, 0x0a, 0x1e, 0x2c, - 0xa9, 0xa7, 0xc5, 0x9a, 0x07, 0xd3, 0x48, 0x01, 0xa9, 0xdd, 0xb4, 0x6a, 0x52, 0x11, 0x95, 0xbb, - 0xed, 0x01, 0x09, 0x55, 0x6e, 0x7a, 0x63, 0x5d, 0x9a, 0xd8, 0xc6, 0x76, 0xb2, 0x6e, 0x10, 0x21, - 0x31, 0x09, 0x01, 0x8f, 0x1b, 0x0f, 0x3c, 0x20, 0xed, 0x81, 0x7f, 0x86, 0x77, 0xfe, 0x01, 0x1e, - 0xf8, 0x43, 0x90, 0xaf, 0xef, 0xb5, 0x63, 0xc7, 0xbf, 0x54, 0xc4, 0x5b, 0x7c, 0xef, 0x77, 0xef, - 0xf9, 0xee, 0x77, 0x3e, 0xfb, 0x9c, 0x1b, 0xb8, 0x6e, 0x58, 0x96, 0x31, 0xc4, 0x8a, 0x6e, 0xdb, - 0xd8, 0x34, 0x88, 0x89, 0x95, 0xc9, 0xed, 0xe8, 0xa1, 0x6b, 0x3b, 0x96, 0x67, 0xa1, 0xd5, 0x00, - 0xd4, 0x8d, 0xc6, 0x27, 0xb7, 0xc5, 0x8d, 0x70, 0x25, 0x51, 0x74, 0xd3, 0xb4, 0x3c, 0xdd, 0x23, - 0x96, 0xe9, 0x06, 0x4b, 0xc4, 0x0f, 0x32, 0xf6, 0x1d, 0x92, 0x3e, 0xc5, 0x31, 0x98, 0x94, 0x06, - 0x23, 0xa6, 0xeb, 0xe9, 0x66, 0x9f, 0x45, 0x17, 0xdf, 0x4b, 0xc3, 0xb8, 0xd8, 0x99, 0x90, 0x7c, - 0xc8, 0x04, 0x3b, 0x6e, 0x14, 0xe9, 0x1a, 0x83, 0x10, 0x7d, 0x44, 0x63, 0xe8, 0xa3, 0x23, 0xdb, - 0x1a, 0x92, 0xfe, 0x73, 0x36, 0x2f, 0xc6, 0xe7, 0x63, 0x73, 0x5c, 0xa4, 0xa1, 0x65, 0x1a, 0xce, - 0xd8, 0x34, 0x89, 0x69, 0x28, 0x96, 0x8d, 0x9d, 0xd8, 0x89, 0xaf, 0x32, 0x10, 0x7d, 0x3a, 0x1e, - 0x0f, 0x14, 0x3c, 0xb2, 0x3d, 0xbe, 0x43, 0x2b, 0x39, 0x39, 0x20, 0x78, 0x78, 0x72, 0x34, 0xd2, - 0xdd, 0xd3, 0x00, 0x21, 0xdd, 0x84, 0xf5, 0x3d, 0xec, 0xed, 0x44, 0x0a, 0x69, 0xf8, 0x9b, 0x31, - 0x76, 0x3d, 0x84, 0xa0, 0x62, 0xea, 0x23, 0xdc, 0x14, 0x5a, 0x42, 0xa7, 0xa6, 0xd1, 0xdf, 0x52, - 0x17, 0x9a, 0x1a, 0xb6, 0x75, 0xe2, 0x94, 0xc4, 0x13, 0x58, 0xdd, 0x27, 0xae, 0x77, 0x18, 0x88, - 0xe6, 0x72, 0xe8, 0xdb, 0x70, 0xc1, 0xd6, 0x1d, 0x6c, 0x7a, 0x0c, 0xcc, 0x9e, 0xd0, 0x55, 0xa8, - 0xd9, 0xba, 0x81, 0x8f, 0x5c, 0xf2, 0x02, 0x37, 0x17, 0x5a, 0x42, 0x67, 0x49, 0xab, 0xfa, 0x03, - 0x87, 0xe4, 0x05, 0x46, 0x9b, 0x00, 0x74, 0xd2, 0xb3, 0x4e, 0xb1, 0xd9, 0x5c, 0xa4, 0x0b, 0x29, - 0xfc, 0xb1, 0x3f, 0x20, 0x9d, 0xc1, 0x5a, 0x3c, 0x94, 0x6b, 0x5b, 0xa6, 0x8b, 0xd1, 0x3d, 0xa8, - 0xb2, 0x9c, 0xb9, 0x4d, 0xa1, 0xb5, 0xd8, 0xa9, 0xab, 0x1b, 0xdd, 0x14, 0x5b, 0x75, 0xd9, 0x42, - 0x2d, 0x44, 0xa3, 0x1b, 0x70, 0xd9, 0xc4, 0x67, 0xde, 0xd1, 0x4c, 0xd4, 0x05, 0x1a, 0x75, 0xd9, - 0x1f, 0x3e, 0x08, 0x23, 0xb7, 0x61, 0x65, 0x0f, 0xf3, 0xc0, 0x79, 0x6a, 0xfc, 0x29, 0xc0, 0xda, - 0x13, 0xfb, 0x44, 0xf7, 0x70, 0x31, 0x18, 0xdd, 0x85, 0x8b, 0x8c, 0x09, 0x8d, 0x5a, 0x44, 0x9b, - 0x83, 0xd1, 0x36, 0xd4, 0xc7, 0x34, 0x06, 0x4d, 0x32, 0xd5, 0xa9, 0xae, 0x8a, 0x7c, 0x2d, 0xf7, - 0x41, 0xf7, 0xa1, 0xef, 0x83, 0xcf, 0x75, 0xf7, 0x54, 0x83, 0x00, 0xee, 0xff, 0x46, 0x6d, 0xb8, - 0x3c, 0x22, 0x86, 0xe3, 0xaf, 0xf6, 0x1c, 0x7d, 0x30, 0x20, 0xfd, 0x66, 0xa5, 0x25, 0x74, 0xaa, - 0x5a, 0x83, 0x0d, 0x3f, 0x0e, 0x46, 0x25, 0x19, 0xd6, 0x1e, 0xe0, 0x21, 0x2e, 0x73, 0x12, 0xe9, - 0x8d, 0x10, 0xb8, 0xe0, 0x69, 0xf0, 0x5e, 0x14, 0xba, 0xe0, 0x43, 0xa8, 0x4c, 0x08, 0x7e, 0x46, - 0x8f, 0xdd, 0x50, 0x5b, 0xa9, 0xc7, 0x66, 0x7b, 0x3d, 0x25, 0xf8, 0x99, 0x46, 0xd1, 0x71, 0xef, - 0x2c, 0xe6, 0x7a, 0xa7, 0x92, 0xe1, 0x9d, 0x88, 0x60, 0xe4, 0x1d, 0xf6, 0x32, 0xe7, 0x7b, 0x87, - 0x2d, 0xd4, 0x42, 0x74, 0x69, 0xef, 0x7c, 0x45, 0xbd, 0xc3, 0xd7, 0xe7, 0xd8, 0xe1, 0x5c, 0xa2, - 0x48, 0x03, 0x58, 0xbb, 0xef, 0x60, 0xdd, 0xc3, 0x89, 0x08, 0x59, 0xd2, 0xdf, 0x85, 0x8b, 0xec, - 0x08, 0xb9, 0xa6, 0xe3, 0xbb, 0x71, 0xb0, 0x9f, 0x62, 0xe6, 0xec, 0x12, 0x47, 0x39, 0x67, 0x90, - 0xff, 0xe4, 0xec, 0xc8, 0xb0, 0xc5, 0x04, 0xa5, 0xaf, 0x03, 0x3b, 0x3c, 0x62, 0xe5, 0xe0, 0x7f, - 0xfd, 0x6c, 0x7d, 0x07, 0xeb, 0x89, 0x58, 0xcc, 0x7b, 0xdb, 0x50, 0xe3, 0xf5, 0x88, 0x9b, 0x6f, - 0x33, 0x55, 0x27, 0xbe, 0x54, 0x8b, 0xf0, 0xa5, 0xed, 0xd7, 0x01, 0xb4, 0x87, 0xc3, 0xe0, 0x79, - 0x9a, 0xdc, 0x84, 0xf5, 0x40, 0xbf, 0x32, 0x60, 0x2a, 0xf6, 0xf1, 0xd8, 0x28, 0x81, 0x95, 0x25, - 0xa8, 0xcf, 0xf8, 0x16, 0xd5, 0x60, 0x69, 0x77, 0xe7, 0xf0, 0xd1, 0xfd, 0x2b, 0x6f, 0xa1, 0x2a, - 0x54, 0x1e, 0x3e, 0xd9, 0xdf, 0xbf, 0x22, 0xa8, 0x2f, 0x97, 0xa0, 0x16, 0x2a, 0x84, 0xfe, 0x10, - 0x60, 0x39, 0xa6, 0x19, 0xda, 0x4a, 0x15, 0x26, 0x2d, 0x87, 0xa2, 0x5c, 0x06, 0x1a, 0xa4, 0x40, - 0xda, 0xfe, 0xe1, 0xaf, 0x7f, 0x5e, 0x2f, 0x7c, 0x84, 0xee, 0xf8, 0x85, 0xf9, 0xdb, 0x20, 0xd9, - 0x9f, 0xea, 0xb6, 0xed, 0x2a, 0x32, 0xef, 0x03, 0xfc, 0x9f, 0xfc, 0xa5, 0x57, 0xe4, 0xa9, 0x12, - 0xa5, 0xe0, 0x95, 0x00, 0xf5, 0x19, 0x6d, 0x51, 0x3b, 0x35, 0xf0, 0xbc, 0xfa, 0x62, 0x7e, 0x96, - 0x13, 0xa4, 0x7c, 0x09, 0x73, 0x29, 0x45, 0x8c, 0x14, 0x79, 0x8a, 0x7e, 0x13, 0xa0, 0x11, 0x4f, - 0x23, 0x4a, 0x17, 0x24, 0x35, 0xd7, 0x11, 0xb5, 0x99, 0x86, 0xa4, 0xfb, 0x05, 0x6f, 0x48, 0x38, - 0x35, 0xf9, 0x5c, 0xd4, 0xde, 0x08, 0xb0, 0x1c, 0x33, 0x4d, 0x46, 0x56, 0xd3, 0x8c, 0x55, 0x44, - 0xec, 0x01, 0x25, 0xf6, 0x99, 0xf4, 0xf1, 0x39, 0x88, 0xf5, 0x4e, 0xfc, 0x80, 0x3d, 0x41, 0x56, - 0xff, 0x5e, 0x82, 0x2a, 0x2f, 0x11, 0xe8, 0x57, 0x01, 0x2e, 0xcd, 0xd6, 0x0c, 0xd4, 0xc9, 0x34, - 0x56, 0xa2, 0xee, 0x89, 0x5b, 0x25, 0x90, 0xcc, 0x81, 0x0a, 0x25, 0xbe, 0x85, 0xda, 0xb9, 0x0e, - 0x9c, 0x86, 0xdc, 0xd1, 0x4b, 0x01, 0x20, 0x2a, 0x28, 0xe8, 0x46, 0x96, 0xe9, 0xe2, 0x5f, 0x41, - 0x31, 0xf7, 0x0b, 0x9c, 0x60, 0x51, 0x28, 0xdf, 0x14, 0xbd, 0x16, 0x60, 0x39, 0x56, 0x77, 0x32, - 0x72, 0x99, 0x56, 0x9b, 0x8a, 0x72, 0x79, 0x8f, 0x92, 0x51, 0xa5, 0xb2, 0x92, 0xf4, 0xc2, 0xfa, - 0xe1, 0xb3, 0x8a, 0x15, 0xa9, 0x0c, 0x56, 0x69, 0x85, 0xac, 0x24, 0x2b, 0xb5, 0xac, 0x44, 0x11, - 0xab, 0x5f, 0xa8, 0xef, 0x67, 0x2a, 0x53, 0xa6, 0xef, 0xe7, 0xab, 0x57, 0x11, 0x2b, 0x96, 0x38, - 0xb9, 0x2c, 0x2b, 0xf5, 0xf7, 0x0a, 0x54, 0x79, 0x07, 0x8d, 0x7e, 0x66, 0x16, 0x0f, 0x07, 0xb2, - 0x2d, 0x9e, 0x68, 0xf0, 0x73, 0x2c, 0x9e, 0xec, 0xcf, 0xa5, 0xf7, 0x29, 0xc7, 0x6b, 0x68, 0x63, - 0x3e, 0x9f, 0xd3, 0x90, 0x26, 0x3a, 0xa3, 0xb6, 0x66, 0x8b, 0xb3, 0x6d, 0x1d, 0xef, 0x46, 0xc5, - 0xdc, 0x96, 0x39, 0x11, 0x39, 0x5d, 0x9d, 0x29, 0xfa, 0x29, 0x74, 0x0d, 0x8f, 0x9e, 0xe7, 0x9a, - 0x04, 0x81, 0x82, 0xfc, 0xdc, 0xa2, 0x0c, 0xda, 0x6a, 0x2e, 0x83, 0x5e, 0xd8, 0xda, 0x7f, 0xcf, - 0x9d, 0x92, 0xcf, 0x24, 0xad, 0x31, 0x2f, 0x62, 0xc2, 0xb4, 0x90, 0x73, 0x99, 0xa8, 0xaf, 0x16, - 0xe0, 0xd2, 0xcc, 0xcd, 0xcf, 0x45, 0xcf, 0xa1, 0x11, 0xbf, 0x3c, 0x66, 0x94, 0x93, 0xd4, 0x1b, - 0xa6, 0x98, 0xde, 0xc5, 0xce, 0x00, 0xa5, 0x77, 0x29, 0xad, 0x55, 0xb4, 0x92, 0xa4, 0x35, 0x45, - 0x3f, 0x0a, 0xb0, 0x32, 0x77, 0x17, 0x45, 0xb7, 0x52, 0xb7, 0xcc, 0xba, 0xb3, 0x16, 0xa9, 0x72, - 0x9d, 0x86, 0xdf, 0x94, 0x9a, 0x73, 0xe1, 0x7b, 0x0e, 0xdd, 0xb2, 0x27, 0xc8, 0xbb, 0x04, 0xde, - 0xe9, 0x5b, 0xa3, 0xb4, 0xb8, 0xbb, 0x8d, 0x1d, 0xfe, 0x74, 0xe0, 0x77, 0xa7, 0x07, 0xc2, 0x97, - 0x9f, 0x30, 0x98, 0x61, 0x0d, 0x75, 0xd3, 0xe8, 0x5a, 0x8e, 0xa1, 0x18, 0xd8, 0xa4, 0xbd, 0xab, - 0x12, 0x4c, 0xe9, 0x36, 0x71, 0x63, 0xff, 0x27, 0x6c, 0x87, 0x0f, 0xc7, 0x17, 0x28, 0xf0, 0xce, - 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x89, 0x36, 0x22, 0x8f, 0x3d, 0x11, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/application.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/application.pb.go deleted file mode 100644 index e029d64d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/application.pb.go +++ /dev/null @@ -1,222 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/application.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// An Application resource contains the top-level configuration of an App -// Engine application. -type Application struct { - // Full path to the Application resource in the API. - // Example: `apps/myapp`. - // - // @OutputOnly - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Identifier of the Application resource. This identifier is equivalent - // to the project ID of the Google Cloud Platform project where you want to - // deploy your application. - // Example: `myapp`. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // HTTP path dispatch rules for requests to the application that do not - // explicitly target a service or version. Rules are order-dependent. - // - // @OutputOnly - DispatchRules []*UrlDispatchRule `protobuf:"bytes,3,rep,name=dispatch_rules,json=dispatchRules" json:"dispatch_rules,omitempty"` - // Google Apps authentication domain that controls which users can access - // this application. - // - // Defaults to open access for any Google Account. - AuthDomain string `protobuf:"bytes,6,opt,name=auth_domain,json=authDomain" json:"auth_domain,omitempty"` - // Location from which this application will be run. Application instances - // will run out of data centers in the chosen location, which is also where - // all of the application's end user content is stored. - // - // Defaults to `us-central`. - // - // Options are: - // - // `us-central` - Central US - // - // `europe-west` - Western Europe - // - // `us-east1` - Eastern US - LocationId string `protobuf:"bytes,7,opt,name=location_id,json=locationId" json:"location_id,omitempty"` - // Google Cloud Storage bucket that can be used for storing files - // associated with this application. This bucket is associated with the - // application and can be used by the gcloud deployment commands. - // - // @OutputOnly - CodeBucket string `protobuf:"bytes,8,opt,name=code_bucket,json=codeBucket" json:"code_bucket,omitempty"` - // Cookie expiration policy for this application. - // - // @OutputOnly - DefaultCookieExpiration *google_protobuf1.Duration `protobuf:"bytes,9,opt,name=default_cookie_expiration,json=defaultCookieExpiration" json:"default_cookie_expiration,omitempty"` - // Hostname used to reach this application, as resolved by App Engine. - // - // @OutputOnly - DefaultHostname string `protobuf:"bytes,11,opt,name=default_hostname,json=defaultHostname" json:"default_hostname,omitempty"` - // Google Cloud Storage bucket that can be used by this application to store - // content. - // - // @OutputOnly - DefaultBucket string `protobuf:"bytes,12,opt,name=default_bucket,json=defaultBucket" json:"default_bucket,omitempty"` -} - -func (m *Application) Reset() { *m = Application{} } -func (m *Application) String() string { return proto.CompactTextString(m) } -func (*Application) ProtoMessage() {} -func (*Application) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *Application) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Application) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Application) GetDispatchRules() []*UrlDispatchRule { - if m != nil { - return m.DispatchRules - } - return nil -} - -func (m *Application) GetAuthDomain() string { - if m != nil { - return m.AuthDomain - } - return "" -} - -func (m *Application) GetLocationId() string { - if m != nil { - return m.LocationId - } - return "" -} - -func (m *Application) GetCodeBucket() string { - if m != nil { - return m.CodeBucket - } - return "" -} - -func (m *Application) GetDefaultCookieExpiration() *google_protobuf1.Duration { - if m != nil { - return m.DefaultCookieExpiration - } - return nil -} - -func (m *Application) GetDefaultHostname() string { - if m != nil { - return m.DefaultHostname - } - return "" -} - -func (m *Application) GetDefaultBucket() string { - if m != nil { - return m.DefaultBucket - } - return "" -} - -// Rules to match an HTTP request and dispatch that request to a service. -type UrlDispatchRule struct { - // Domain name to match against. The wildcard "`*`" is supported if - // specified before a period: "`*.`". - // - // Defaults to matching all domains: "`*`". - Domain string `protobuf:"bytes,1,opt,name=domain" json:"domain,omitempty"` - // Pathname within the host. Must start with a "`/`". A - // single "`*`" can be included at the end of the path. The sum - // of the lengths of the domain and path may not exceed 100 - // characters. - Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` - // Resource ID of a service in this application that should - // serve the matched request. The service must already - // exist. Example: `default`. - Service string `protobuf:"bytes,3,opt,name=service" json:"service,omitempty"` -} - -func (m *UrlDispatchRule) Reset() { *m = UrlDispatchRule{} } -func (m *UrlDispatchRule) String() string { return proto.CompactTextString(m) } -func (*UrlDispatchRule) ProtoMessage() {} -func (*UrlDispatchRule) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *UrlDispatchRule) GetDomain() string { - if m != nil { - return m.Domain - } - return "" -} - -func (m *UrlDispatchRule) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *UrlDispatchRule) GetService() string { - if m != nil { - return m.Service - } - return "" -} - -func init() { - proto.RegisterType((*Application)(nil), "google.appengine.v1.Application") - proto.RegisterType((*UrlDispatchRule)(nil), "google.appengine.v1.UrlDispatchRule") -} - -func init() { proto.RegisterFile("google/appengine/v1/application.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 409 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0x5f, 0x6b, 0xdb, 0x30, - 0x14, 0xc5, 0x71, 0x3c, 0x92, 0x45, 0x5e, 0xfe, 0xa0, 0xc1, 0xa2, 0x84, 0xb1, 0x85, 0xb0, 0x40, - 0xf6, 0x62, 0x93, 0xec, 0x71, 0x7b, 0x59, 0x9a, 0x42, 0x4b, 0x5f, 0x82, 0x21, 0x14, 0xfa, 0x62, - 0x14, 0x4b, 0xb1, 0x45, 0x14, 0xc9, 0xd8, 0x72, 0xe8, 0x67, 0xe8, 0xa7, 0x2e, 0x96, 0x64, 0x37, - 0x2d, 0x79, 0xd3, 0x3d, 0xfa, 0x1d, 0xdd, 0xeb, 0x73, 0x0d, 0xe6, 0x89, 0x94, 0x09, 0xa7, 0x01, - 0xce, 0x32, 0x2a, 0x12, 0x26, 0x68, 0x70, 0x5e, 0x56, 0x05, 0x67, 0x31, 0x56, 0x4c, 0x0a, 0x3f, - 0xcb, 0xa5, 0x92, 0xf0, 0xab, 0xc1, 0xfc, 0x06, 0xf3, 0xcf, 0xcb, 0xc9, 0xf7, 0xc6, 0xcb, 0x02, - 0x2c, 0x84, 0x54, 0xda, 0x51, 0x18, 0xcb, 0xe4, 0x87, 0xbd, 0xd5, 0xd5, 0xbe, 0x3c, 0x04, 0xa4, - 0xcc, 0x2f, 0x9e, 0x9c, 0xbd, 0xb8, 0xc0, 0xfb, 0xff, 0xd6, 0x08, 0x42, 0xf0, 0x49, 0xe0, 0x13, - 0x45, 0xce, 0xd4, 0x59, 0x74, 0x43, 0x7d, 0x86, 0x7d, 0xd0, 0x62, 0x04, 0xb5, 0xb4, 0xd2, 0x62, - 0x04, 0x3e, 0x80, 0x3e, 0x61, 0x45, 0x86, 0x55, 0x9c, 0x46, 0x79, 0xc9, 0x69, 0x81, 0xdc, 0xa9, - 0xbb, 0xf0, 0x56, 0xbf, 0xfc, 0x2b, 0xf3, 0xf9, 0xbb, 0x9c, 0x6f, 0x2c, 0x1d, 0x96, 0x9c, 0x86, - 0x3d, 0x72, 0x51, 0x15, 0xf0, 0x27, 0xf0, 0x70, 0xa9, 0xd2, 0x88, 0xc8, 0x13, 0x66, 0x02, 0xb5, - 0x75, 0x17, 0x50, 0x49, 0x1b, 0xad, 0x54, 0x00, 0x97, 0x66, 0xba, 0x88, 0x11, 0xd4, 0x31, 0x40, - 0x2d, 0xdd, 0x93, 0x0a, 0x88, 0x25, 0xa1, 0xd1, 0xbe, 0x8c, 0x8f, 0x54, 0xa1, 0xcf, 0x06, 0xa8, - 0xa4, 0xb5, 0x56, 0xe0, 0x0e, 0x8c, 0x09, 0x3d, 0xe0, 0x92, 0xab, 0x28, 0x96, 0xf2, 0xc8, 0x68, - 0x44, 0x9f, 0x33, 0x66, 0x62, 0x40, 0xdd, 0xa9, 0xb3, 0xf0, 0x56, 0xe3, 0x7a, 0xf4, 0x3a, 0x27, - 0x7f, 0x63, 0x73, 0x0a, 0x47, 0xd6, 0x7b, 0xa3, 0xad, 0xb7, 0x8d, 0x13, 0xfe, 0x06, 0xc3, 0xfa, - 0xd9, 0x54, 0x16, 0x4a, 0xc7, 0xe6, 0xe9, 0xe6, 0x03, 0xab, 0xdf, 0x59, 0x19, 0xce, 0x41, 0xbf, - 0x46, 0xed, 0x94, 0x5f, 0x34, 0xd8, 0xb3, 0xaa, 0x19, 0x74, 0xf6, 0x08, 0x06, 0x1f, 0xd2, 0x82, - 0xdf, 0x40, 0xdb, 0x26, 0x63, 0x36, 0x62, 0xab, 0x6a, 0x4f, 0x19, 0x56, 0xa9, 0xdd, 0x8a, 0x3e, - 0x43, 0x04, 0x3a, 0x05, 0xcd, 0xcf, 0x2c, 0xa6, 0xc8, 0xd5, 0x72, 0x5d, 0xae, 0x8f, 0x60, 0x14, - 0xcb, 0xd3, 0xb5, 0xf5, 0xac, 0x87, 0x17, 0xdb, 0xdf, 0x56, 0x1f, 0xbf, 0x75, 0x9e, 0xfe, 0x59, - 0x30, 0x91, 0x1c, 0x8b, 0xc4, 0x97, 0x79, 0x12, 0x24, 0x54, 0xe8, 0x68, 0x02, 0x73, 0x85, 0x33, - 0x56, 0xbc, 0xfb, 0x5b, 0xff, 0x36, 0xc5, 0xbe, 0xad, 0xc1, 0x3f, 0xaf, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x7a, 0x51, 0x2e, 0x3c, 0xd5, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/audit_data.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/audit_data.pb.go deleted file mode 100644 index 3bd16a74..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/audit_data.pb.go +++ /dev/null @@ -1,208 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/audit_data.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/iam/v1" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// App Engine admin service audit log. -type AuditData struct { - // Detailed information about methods that require it. Does not include - // simple Get, List or Delete methods because all significant information - // (resource name, number of returned elements for List operations) is already - // included in parent audit log message. - // - // Types that are valid to be assigned to Method: - // *AuditData_UpdateService - // *AuditData_CreateVersion - Method isAuditData_Method `protobuf_oneof:"method"` -} - -func (m *AuditData) Reset() { *m = AuditData{} } -func (m *AuditData) String() string { return proto.CompactTextString(m) } -func (*AuditData) ProtoMessage() {} -func (*AuditData) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -type isAuditData_Method interface { - isAuditData_Method() -} - -type AuditData_UpdateService struct { - UpdateService *UpdateServiceMethod `protobuf:"bytes,1,opt,name=update_service,json=updateService,oneof"` -} -type AuditData_CreateVersion struct { - CreateVersion *CreateVersionMethod `protobuf:"bytes,2,opt,name=create_version,json=createVersion,oneof"` -} - -func (*AuditData_UpdateService) isAuditData_Method() {} -func (*AuditData_CreateVersion) isAuditData_Method() {} - -func (m *AuditData) GetMethod() isAuditData_Method { - if m != nil { - return m.Method - } - return nil -} - -func (m *AuditData) GetUpdateService() *UpdateServiceMethod { - if x, ok := m.GetMethod().(*AuditData_UpdateService); ok { - return x.UpdateService - } - return nil -} - -func (m *AuditData) GetCreateVersion() *CreateVersionMethod { - if x, ok := m.GetMethod().(*AuditData_CreateVersion); ok { - return x.CreateVersion - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*AuditData) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _AuditData_OneofMarshaler, _AuditData_OneofUnmarshaler, _AuditData_OneofSizer, []interface{}{ - (*AuditData_UpdateService)(nil), - (*AuditData_CreateVersion)(nil), - } -} - -func _AuditData_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*AuditData) - // method - switch x := m.Method.(type) { - case *AuditData_UpdateService: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.UpdateService); err != nil { - return err - } - case *AuditData_CreateVersion: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CreateVersion); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("AuditData.Method has unexpected type %T", x) - } - return nil -} - -func _AuditData_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*AuditData) - switch tag { - case 1: // method.update_service - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(UpdateServiceMethod) - err := b.DecodeMessage(msg) - m.Method = &AuditData_UpdateService{msg} - return true, err - case 2: // method.create_version - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CreateVersionMethod) - err := b.DecodeMessage(msg) - m.Method = &AuditData_CreateVersion{msg} - return true, err - default: - return false, nil - } -} - -func _AuditData_OneofSizer(msg proto.Message) (n int) { - m := msg.(*AuditData) - // method - switch x := m.Method.(type) { - case *AuditData_UpdateService: - s := proto.Size(x.UpdateService) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_CreateVersion: - s := proto.Size(x.CreateVersion) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Detailed information about UpdateService call. -type UpdateServiceMethod struct { - // Update service request. - Request *UpdateServiceRequest `protobuf:"bytes,1,opt,name=request" json:"request,omitempty"` -} - -func (m *UpdateServiceMethod) Reset() { *m = UpdateServiceMethod{} } -func (m *UpdateServiceMethod) String() string { return proto.CompactTextString(m) } -func (*UpdateServiceMethod) ProtoMessage() {} -func (*UpdateServiceMethod) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *UpdateServiceMethod) GetRequest() *UpdateServiceRequest { - if m != nil { - return m.Request - } - return nil -} - -// Detailed information about CreateVersion call. -type CreateVersionMethod struct { - // Create version request. - Request *CreateVersionRequest `protobuf:"bytes,1,opt,name=request" json:"request,omitempty"` -} - -func (m *CreateVersionMethod) Reset() { *m = CreateVersionMethod{} } -func (m *CreateVersionMethod) String() string { return proto.CompactTextString(m) } -func (*CreateVersionMethod) ProtoMessage() {} -func (*CreateVersionMethod) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } - -func (m *CreateVersionMethod) GetRequest() *CreateVersionRequest { - if m != nil { - return m.Request - } - return nil -} - -func init() { - proto.RegisterType((*AuditData)(nil), "google.appengine.v1.AuditData") - proto.RegisterType((*UpdateServiceMethod)(nil), "google.appengine.v1.UpdateServiceMethod") - proto.RegisterType((*CreateVersionMethod)(nil), "google.appengine.v1.CreateVersionMethod") -} - -func init() { proto.RegisterFile("google/appengine/v1/audit_data.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 290 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xb1, 0x4e, 0xc3, 0x30, - 0x10, 0x86, 0x09, 0x43, 0x01, 0x23, 0x3a, 0xa4, 0x03, 0x55, 0x07, 0x84, 0x0a, 0x43, 0x59, 0x1c, - 0x15, 0x46, 0x58, 0x48, 0x19, 0x58, 0x90, 0x4a, 0x10, 0x0c, 0x5d, 0xa2, 0x23, 0x39, 0x19, 0x4b, - 0x49, 0x6c, 0x1c, 0x27, 0x12, 0xcf, 0xc6, 0xcb, 0x21, 0xdb, 0x21, 0xb4, 0xc8, 0x82, 0x8e, 0xb9, - 0xfb, 0xfe, 0x2f, 0xbf, 0x74, 0x26, 0xe7, 0x4c, 0x08, 0x56, 0x60, 0x04, 0x52, 0x62, 0xc5, 0x78, - 0x85, 0x51, 0x3b, 0x8f, 0xa0, 0xc9, 0xb9, 0x4e, 0x73, 0xd0, 0x40, 0xa5, 0x12, 0x5a, 0x84, 0x23, - 0x47, 0xd1, 0x9e, 0xa2, 0xed, 0x7c, 0x72, 0xe6, 0x8d, 0xf6, 0x84, 0x4d, 0x4e, 0x4e, 0x3a, 0x88, - 0x43, 0x69, 0xd6, 0x1c, 0xca, 0x54, 0x8a, 0x82, 0x67, 0x1f, 0x6e, 0x3f, 0xfd, 0x0c, 0xc8, 0xc1, - 0xad, 0xf9, 0xdd, 0x1d, 0x68, 0x08, 0x1f, 0xc9, 0xb0, 0x91, 0x39, 0x68, 0x4c, 0x6b, 0x54, 0x2d, - 0xcf, 0x70, 0x1c, 0x9c, 0x06, 0xb3, 0xc3, 0xcb, 0x19, 0xf5, 0x14, 0xa0, 0xcf, 0x16, 0x7d, 0x72, - 0xe4, 0x03, 0xea, 0x37, 0x91, 0xdf, 0xef, 0x24, 0x47, 0xcd, 0xfa, 0xd8, 0x28, 0x33, 0x85, 0x46, - 0xd9, 0xa2, 0xaa, 0xb9, 0xa8, 0xc6, 0xbb, 0x7f, 0x28, 0x17, 0x16, 0x7d, 0x71, 0xe4, 0x8f, 0x32, - 0x5b, 0x1f, 0xc7, 0xfb, 0x64, 0x50, 0xda, 0xd5, 0x74, 0x45, 0x46, 0x9e, 0x12, 0xe1, 0x82, 0xec, - 0x29, 0x7c, 0x6f, 0xb0, 0xd6, 0x5d, 0xff, 0x8b, 0xff, 0xfb, 0x27, 0x2e, 0x90, 0x7c, 0x27, 0x8d, - 0xdb, 0xd3, 0x66, 0x5b, 0xf7, 0x46, 0xf4, 0xb7, 0x3b, 0xe6, 0xe4, 0x38, 0x13, 0xa5, 0x2f, 0x18, - 0x0f, 0xfb, 0x6b, 0x2c, 0xcd, 0x81, 0x96, 0xc1, 0xea, 0xa6, 0xc3, 0x98, 0x28, 0xa0, 0x62, 0x54, - 0x28, 0x16, 0x31, 0xac, 0xec, 0xf9, 0x22, 0xb7, 0x02, 0xc9, 0xeb, 0x8d, 0x67, 0x70, 0xdd, 0x7f, - 0xbc, 0x0e, 0x2c, 0x78, 0xf5, 0x15, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x56, 0x80, 0x49, 0x69, 0x02, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/deploy.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/deploy.pb.go deleted file mode 100644 index 46ce408d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/deploy.pb.go +++ /dev/null @@ -1,183 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/deploy.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Code and application artifacts used to deploy a version to App Engine. -type Deployment struct { - // Manifest of the files stored in Google Cloud Storage that are included - // as part of this version. All files must be readable using the - // credentials supplied with this call. - Files map[string]*FileInfo `protobuf:"bytes,1,rep,name=files" json:"files,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // A Docker image that App Engine uses to run the version. - // Only applicable for instances in App Engine flexible environment. - Container *ContainerInfo `protobuf:"bytes,2,opt,name=container" json:"container,omitempty"` - // The zip file for this deployment, if this is a zip deployment. - Zip *ZipInfo `protobuf:"bytes,3,opt,name=zip" json:"zip,omitempty"` -} - -func (m *Deployment) Reset() { *m = Deployment{} } -func (m *Deployment) String() string { return proto.CompactTextString(m) } -func (*Deployment) ProtoMessage() {} -func (*Deployment) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *Deployment) GetFiles() map[string]*FileInfo { - if m != nil { - return m.Files - } - return nil -} - -func (m *Deployment) GetContainer() *ContainerInfo { - if m != nil { - return m.Container - } - return nil -} - -func (m *Deployment) GetZip() *ZipInfo { - if m != nil { - return m.Zip - } - return nil -} - -// Single source file that is part of the version to be deployed. Each source -// file that is deployed must be specified separately. -type FileInfo struct { - // URL source to use to fetch this file. Must be a URL to a resource in - // Google Cloud Storage in the form - // 'http(s)://storage.googleapis.com/\<bucket\>/\<object\>'. - SourceUrl string `protobuf:"bytes,1,opt,name=source_url,json=sourceUrl" json:"source_url,omitempty"` - // The SHA1 hash of the file, in hex. - Sha1Sum string `protobuf:"bytes,2,opt,name=sha1_sum,json=sha1Sum" json:"sha1_sum,omitempty"` - // The MIME type of the file. - // - // Defaults to the value from Google Cloud Storage. - MimeType string `protobuf:"bytes,3,opt,name=mime_type,json=mimeType" json:"mime_type,omitempty"` -} - -func (m *FileInfo) Reset() { *m = FileInfo{} } -func (m *FileInfo) String() string { return proto.CompactTextString(m) } -func (*FileInfo) ProtoMessage() {} -func (*FileInfo) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *FileInfo) GetSourceUrl() string { - if m != nil { - return m.SourceUrl - } - return "" -} - -func (m *FileInfo) GetSha1Sum() string { - if m != nil { - return m.Sha1Sum - } - return "" -} - -func (m *FileInfo) GetMimeType() string { - if m != nil { - return m.MimeType - } - return "" -} - -// Docker image that is used to start a VM container for the version you -// deploy. -type ContainerInfo struct { - // URI to the hosted container image in a Docker repository. The URI must be - // fully qualified and include a tag or digest. - // Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-project/image@digest" - Image string `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"` -} - -func (m *ContainerInfo) Reset() { *m = ContainerInfo{} } -func (m *ContainerInfo) String() string { return proto.CompactTextString(m) } -func (*ContainerInfo) ProtoMessage() {} -func (*ContainerInfo) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} } - -func (m *ContainerInfo) GetImage() string { - if m != nil { - return m.Image - } - return "" -} - -type ZipInfo struct { - // URL of the zip file to deploy from. Must be a URL to a resource in - // Google Cloud Storage in the form - // 'http(s)://storage.googleapis.com/\<bucket\>/\<object\>'. - SourceUrl string `protobuf:"bytes,3,opt,name=source_url,json=sourceUrl" json:"source_url,omitempty"` - // An estimate of the number of files in a zip for a zip deployment. - // If set, must be greater than or equal to the actual number of files. - // Used for optimizing performance; if not provided, deployment may be slow. - FilesCount int32 `protobuf:"varint,4,opt,name=files_count,json=filesCount" json:"files_count,omitempty"` -} - -func (m *ZipInfo) Reset() { *m = ZipInfo{} } -func (m *ZipInfo) String() string { return proto.CompactTextString(m) } -func (*ZipInfo) ProtoMessage() {} -func (*ZipInfo) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} } - -func (m *ZipInfo) GetSourceUrl() string { - if m != nil { - return m.SourceUrl - } - return "" -} - -func (m *ZipInfo) GetFilesCount() int32 { - if m != nil { - return m.FilesCount - } - return 0 -} - -func init() { - proto.RegisterType((*Deployment)(nil), "google.appengine.v1.Deployment") - proto.RegisterType((*FileInfo)(nil), "google.appengine.v1.FileInfo") - proto.RegisterType((*ContainerInfo)(nil), "google.appengine.v1.ContainerInfo") - proto.RegisterType((*ZipInfo)(nil), "google.appengine.v1.ZipInfo") -} - -func init() { proto.RegisterFile("google/appengine/v1/deploy.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 394 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0xd1, 0xab, 0xd3, 0x30, - 0x14, 0xc6, 0xe9, 0x6a, 0xbd, 0xeb, 0x29, 0x82, 0x44, 0xc1, 0x7a, 0xbd, 0x17, 0x4b, 0x41, 0x28, - 0x3e, 0xa4, 0xec, 0xde, 0x17, 0x51, 0x1f, 0x2e, 0x9b, 0x0a, 0x7b, 0x1b, 0x55, 0x11, 0xf6, 0x52, - 0x62, 0xcd, 0x62, 0xb0, 0x4d, 0x42, 0x9b, 0x0e, 0xea, 0x7f, 0xe2, 0x7f, 0x2b, 0x49, 0xba, 0x8d, - 0x8d, 0xbe, 0xf5, 0x7c, 0xfd, 0x7d, 0x5f, 0x4e, 0x72, 0x0e, 0x24, 0x4c, 0x4a, 0x56, 0xd3, 0x9c, - 0x28, 0x45, 0x05, 0xe3, 0x82, 0xe6, 0xfb, 0x45, 0xfe, 0x8b, 0xaa, 0x5a, 0x0e, 0x58, 0xb5, 0x52, - 0x4b, 0xf4, 0xcc, 0x11, 0xf8, 0x48, 0xe0, 0xfd, 0xe2, 0xfa, 0xe6, 0x68, 0xe3, 0x39, 0x11, 0x42, - 0x6a, 0xa2, 0xb9, 0x14, 0x9d, 0xb3, 0xa4, 0xff, 0x66, 0x00, 0x9f, 0x6c, 0x46, 0x43, 0x85, 0x46, - 0x0f, 0x10, 0xec, 0x78, 0x4d, 0xbb, 0xd8, 0x4b, 0xfc, 0x2c, 0xba, 0x7b, 0x8b, 0x27, 0x12, 0xf1, - 0x89, 0xc7, 0x5f, 0x0c, 0xfc, 0x59, 0xe8, 0x76, 0x28, 0x9c, 0x11, 0x3d, 0x40, 0x58, 0x49, 0xa1, - 0x09, 0x17, 0xb4, 0x8d, 0x67, 0x89, 0x97, 0x45, 0x77, 0xe9, 0x64, 0xca, 0xea, 0x40, 0xad, 0xc5, - 0x4e, 0x16, 0x27, 0x13, 0xc2, 0xe0, 0xff, 0xe5, 0x2a, 0xf6, 0xad, 0xf7, 0x66, 0xd2, 0xbb, 0xe5, - 0xca, 0xba, 0x0c, 0x78, 0xfd, 0x03, 0xe0, 0xd4, 0x06, 0x7a, 0x0a, 0xfe, 0x1f, 0x3a, 0xc4, 0x5e, - 0xe2, 0x65, 0x61, 0x61, 0x3e, 0xd1, 0x3d, 0x04, 0x7b, 0x52, 0xf7, 0x74, 0xec, 0xe6, 0x76, 0x32, - 0xd1, 0x24, 0xd8, 0x48, 0xc7, 0xbe, 0x9f, 0xbd, 0xf3, 0x52, 0x02, 0xf3, 0x83, 0x8c, 0x6e, 0x01, - 0x3a, 0xd9, 0xb7, 0x15, 0x2d, 0xfb, 0xb6, 0x1e, 0xd3, 0x43, 0xa7, 0x7c, 0x6f, 0x6b, 0xf4, 0x12, - 0xe6, 0xdd, 0x6f, 0xb2, 0x28, 0xbb, 0xbe, 0xb1, 0xc7, 0x84, 0xc5, 0x95, 0xa9, 0xbf, 0xf6, 0x0d, - 0x7a, 0x05, 0x61, 0xc3, 0x1b, 0x5a, 0xea, 0x41, 0x51, 0x7b, 0xa9, 0xb0, 0x98, 0x1b, 0xe1, 0xdb, - 0xa0, 0x68, 0xfa, 0x06, 0x9e, 0x9c, 0xbd, 0x03, 0x7a, 0x0e, 0x01, 0x6f, 0x08, 0xa3, 0xe3, 0x11, - 0xae, 0x48, 0xd7, 0x70, 0x35, 0x5e, 0xf9, 0xa2, 0x11, 0xff, 0xb2, 0x91, 0xd7, 0x10, 0xd9, 0x39, - 0x94, 0x95, 0xec, 0x85, 0x8e, 0x1f, 0x25, 0x5e, 0x16, 0x14, 0x60, 0xa5, 0x95, 0x51, 0x96, 0x3b, - 0x78, 0x51, 0xc9, 0x66, 0xea, 0x0d, 0x96, 0x91, 0x1b, 0xec, 0xc6, 0x2c, 0xc6, 0xc6, 0xdb, 0x7e, - 0x1c, 0x19, 0x26, 0x6b, 0x22, 0x18, 0x96, 0x2d, 0xcb, 0x19, 0x15, 0x76, 0x6d, 0x72, 0xf7, 0x8b, - 0x28, 0xde, 0x9d, 0xad, 0xe3, 0x87, 0x63, 0xf1, 0xf3, 0xb1, 0x05, 0xef, 0xff, 0x07, 0x00, 0x00, - 0xff, 0xff, 0x6e, 0xeb, 0x52, 0x5a, 0xb6, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/instance.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/instance.pb.go deleted file mode 100644 index d2948ac1..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/instance.pb.go +++ /dev/null @@ -1,266 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/instance.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Availability of the instance. -type Instance_Availability int32 - -const ( - Instance_UNSPECIFIED Instance_Availability = 0 - Instance_RESIDENT Instance_Availability = 1 - Instance_DYNAMIC Instance_Availability = 2 -) - -var Instance_Availability_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "RESIDENT", - 2: "DYNAMIC", -} -var Instance_Availability_value = map[string]int32{ - "UNSPECIFIED": 0, - "RESIDENT": 1, - "DYNAMIC": 2, -} - -func (x Instance_Availability) String() string { - return proto.EnumName(Instance_Availability_name, int32(x)) -} -func (Instance_Availability) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 0} } - -// An Instance resource is the computing unit that App Engine uses to -// automatically scale an application. -type Instance struct { - // Full path to the Instance resource in the API. - // Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. - // - // @OutputOnly - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Relative name of the instance within the version. - // Example: `instance-1`. - // - // @OutputOnly - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // App Engine release this instance is running on. - // - // @OutputOnly - AppEngineRelease string `protobuf:"bytes,3,opt,name=app_engine_release,json=appEngineRelease" json:"app_engine_release,omitempty"` - // Availability of the instance. - // - // @OutputOnly - Availability Instance_Availability `protobuf:"varint,4,opt,name=availability,enum=google.appengine.v1.Instance_Availability" json:"availability,omitempty"` - // Name of the virtual machine where this instance lives. Only applicable - // for instances in App Engine flexible environment. - // - // @OutputOnly - VmName string `protobuf:"bytes,5,opt,name=vm_name,json=vmName" json:"vm_name,omitempty"` - // Zone where the virtual machine is located. Only applicable for instances - // in App Engine flexible environment. - // - // @OutputOnly - VmZoneName string `protobuf:"bytes,6,opt,name=vm_zone_name,json=vmZoneName" json:"vm_zone_name,omitempty"` - // Virtual machine ID of this instance. Only applicable for instances in - // App Engine flexible environment. - // - // @OutputOnly - VmId string `protobuf:"bytes,7,opt,name=vm_id,json=vmId" json:"vm_id,omitempty"` - // Time that this instance was started. - // - // @OutputOnly - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,8,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Number of requests since this instance was started. - // - // @OutputOnly - Requests int32 `protobuf:"varint,9,opt,name=requests" json:"requests,omitempty"` - // Number of errors since this instance was started. - // - // @OutputOnly - Errors int32 `protobuf:"varint,10,opt,name=errors" json:"errors,omitempty"` - // Average queries per second (QPS) over the last minute. - // - // @OutputOnly - Qps float32 `protobuf:"fixed32,11,opt,name=qps" json:"qps,omitempty"` - // Average latency (ms) over the last minute. - // - // @OutputOnly - AverageLatency int32 `protobuf:"varint,12,opt,name=average_latency,json=averageLatency" json:"average_latency,omitempty"` - // Total memory in use (bytes). - // - // @OutputOnly - MemoryUsage int64 `protobuf:"varint,13,opt,name=memory_usage,json=memoryUsage" json:"memory_usage,omitempty"` - // Status of the virtual machine where this instance lives. Only applicable - // for instances in App Engine flexible environment. - // - // @OutputOnly - VmStatus string `protobuf:"bytes,14,opt,name=vm_status,json=vmStatus" json:"vm_status,omitempty"` - // Whether this instance is in debug mode. Only applicable for instances in - // App Engine flexible environment. - // - // @OutputOnly - VmDebugEnabled bool `protobuf:"varint,15,opt,name=vm_debug_enabled,json=vmDebugEnabled" json:"vm_debug_enabled,omitempty"` -} - -func (m *Instance) Reset() { *m = Instance{} } -func (m *Instance) String() string { return proto.CompactTextString(m) } -func (*Instance) ProtoMessage() {} -func (*Instance) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -func (m *Instance) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Instance) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Instance) GetAppEngineRelease() string { - if m != nil { - return m.AppEngineRelease - } - return "" -} - -func (m *Instance) GetAvailability() Instance_Availability { - if m != nil { - return m.Availability - } - return Instance_UNSPECIFIED -} - -func (m *Instance) GetVmName() string { - if m != nil { - return m.VmName - } - return "" -} - -func (m *Instance) GetVmZoneName() string { - if m != nil { - return m.VmZoneName - } - return "" -} - -func (m *Instance) GetVmId() string { - if m != nil { - return m.VmId - } - return "" -} - -func (m *Instance) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *Instance) GetRequests() int32 { - if m != nil { - return m.Requests - } - return 0 -} - -func (m *Instance) GetErrors() int32 { - if m != nil { - return m.Errors - } - return 0 -} - -func (m *Instance) GetQps() float32 { - if m != nil { - return m.Qps - } - return 0 -} - -func (m *Instance) GetAverageLatency() int32 { - if m != nil { - return m.AverageLatency - } - return 0 -} - -func (m *Instance) GetMemoryUsage() int64 { - if m != nil { - return m.MemoryUsage - } - return 0 -} - -func (m *Instance) GetVmStatus() string { - if m != nil { - return m.VmStatus - } - return "" -} - -func (m *Instance) GetVmDebugEnabled() bool { - if m != nil { - return m.VmDebugEnabled - } - return false -} - -func init() { - proto.RegisterType((*Instance)(nil), "google.appengine.v1.Instance") - proto.RegisterEnum("google.appengine.v1.Instance_Availability", Instance_Availability_name, Instance_Availability_value) -} - -func init() { proto.RegisterFile("google/appengine/v1/instance.proto", fileDescriptor5) } - -var fileDescriptor5 = []byte{ - // 521 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x6b, 0xdb, 0x3c, - 0x14, 0x7e, 0x9d, 0xb6, 0xa9, 0x73, 0xe2, 0x26, 0x46, 0x85, 0xb7, 0x22, 0x1b, 0xcc, 0xcb, 0xcd, - 0xcc, 0x18, 0x36, 0xed, 0xae, 0xf6, 0x71, 0xd3, 0x36, 0x1e, 0x18, 0xb6, 0x10, 0x9c, 0xf6, 0x62, - 0xbd, 0x31, 0x4a, 0xac, 0x79, 0x02, 0x4b, 0x72, 0x2d, 0x45, 0x90, 0xfd, 0xc6, 0xfd, 0xa8, 0x61, - 0x39, 0x09, 0x2d, 0xf4, 0xce, 0xcf, 0xc7, 0x41, 0xcf, 0x79, 0x0e, 0x86, 0x69, 0x29, 0x65, 0x59, - 0xd1, 0x98, 0xd4, 0x35, 0x15, 0x25, 0x13, 0x34, 0x36, 0x97, 0x31, 0x13, 0x4a, 0x13, 0xb1, 0xa6, - 0x51, 0xdd, 0x48, 0x2d, 0xd1, 0x79, 0xe7, 0x89, 0x0e, 0x9e, 0xc8, 0x5c, 0x4e, 0x5e, 0x1f, 0x06, - 0x59, 0x4c, 0x84, 0x90, 0x9a, 0x68, 0x26, 0x85, 0xea, 0x46, 0x26, 0x6f, 0x76, 0xaa, 0x45, 0xab, - 0xcd, 0xaf, 0x58, 0x33, 0x4e, 0x95, 0x26, 0xbc, 0xee, 0x0c, 0xd3, 0xbf, 0xc7, 0xe0, 0xa6, 0xbb, - 0x67, 0x10, 0x82, 0x63, 0x41, 0x38, 0xc5, 0x4e, 0xe0, 0x84, 0x83, 0xcc, 0x7e, 0xa3, 0x11, 0xf4, - 0x58, 0x81, 0x7b, 0x96, 0xe9, 0xb1, 0x02, 0x7d, 0x00, 0x44, 0xea, 0x3a, 0xef, 0x02, 0xe4, 0x0d, - 0xad, 0x28, 0x51, 0x14, 0x1f, 0x59, 0xdd, 0x27, 0x75, 0x9d, 0x58, 0x21, 0xeb, 0x78, 0x34, 0x07, - 0x8f, 0x18, 0xc2, 0x2a, 0xb2, 0x62, 0x15, 0xd3, 0x5b, 0x7c, 0x1c, 0x38, 0xe1, 0xe8, 0xea, 0x7d, - 0xf4, 0xc2, 0x26, 0xd1, 0x3e, 0x46, 0x74, 0xfd, 0x64, 0x22, 0x7b, 0x36, 0x8f, 0x2e, 0xe0, 0xd4, - 0xf0, 0xdc, 0x86, 0x3c, 0xb1, 0x4f, 0xf6, 0x0d, 0x9f, 0xb7, 0x31, 0x03, 0xf0, 0x0c, 0xcf, 0xff, - 0x48, 0x41, 0x3b, 0xb5, 0x6f, 0x55, 0x30, 0xfc, 0x41, 0x0a, 0x6a, 0x1d, 0xe7, 0x70, 0x62, 0x78, - 0xce, 0x0a, 0x7c, 0xda, 0x6d, 0x67, 0x78, 0x5a, 0xa0, 0x4f, 0x00, 0x4a, 0x93, 0x46, 0xe7, 0x6d, - 0x2f, 0xd8, 0x0d, 0x9c, 0x70, 0x78, 0x35, 0xd9, 0xa7, 0xdb, 0x97, 0x16, 0xdd, 0xed, 0x4b, 0xcb, - 0x06, 0xd6, 0xdd, 0x62, 0x34, 0x01, 0xb7, 0xa1, 0x8f, 0x1b, 0xaa, 0xb4, 0xc2, 0x83, 0xc0, 0x09, - 0x4f, 0xb2, 0x03, 0x46, 0xff, 0x43, 0x9f, 0x36, 0x8d, 0x6c, 0x14, 0x06, 0xab, 0xec, 0x10, 0xf2, - 0xe1, 0xe8, 0xb1, 0x56, 0x78, 0x18, 0x38, 0x61, 0x2f, 0x6b, 0x3f, 0xd1, 0x3b, 0x18, 0x13, 0x43, - 0x1b, 0x52, 0xd2, 0xbc, 0x22, 0x9a, 0x8a, 0xf5, 0x16, 0x7b, 0x76, 0x64, 0xb4, 0xa3, 0xbf, 0x77, - 0x2c, 0x7a, 0x0b, 0x1e, 0xa7, 0x5c, 0x36, 0xdb, 0x7c, 0xa3, 0x48, 0x49, 0xf1, 0x59, 0xe0, 0x84, - 0x47, 0xd9, 0xb0, 0xe3, 0xee, 0x5b, 0x0a, 0xbd, 0x82, 0x81, 0xe1, 0xb9, 0xd2, 0x44, 0x6f, 0x14, - 0x1e, 0xd9, 0x2d, 0x5d, 0xc3, 0x97, 0x16, 0xa3, 0x10, 0x7c, 0xc3, 0xf3, 0x82, 0xae, 0x36, 0x65, - 0x4e, 0x05, 0x59, 0x55, 0xb4, 0xc0, 0xe3, 0xc0, 0x09, 0xdd, 0x6c, 0x64, 0xf8, 0xac, 0xa5, 0x93, - 0x8e, 0x9d, 0x7e, 0x06, 0xef, 0xe9, 0x05, 0xd0, 0x18, 0x86, 0xf7, 0xf3, 0xe5, 0x22, 0xb9, 0x4d, - 0xbf, 0xa5, 0xc9, 0xcc, 0xff, 0x0f, 0x79, 0xe0, 0x66, 0xc9, 0x32, 0x9d, 0x25, 0xf3, 0x3b, 0xdf, - 0x41, 0x43, 0x38, 0x9d, 0xfd, 0x9c, 0x5f, 0xff, 0x48, 0x6f, 0xfd, 0xde, 0xcd, 0x6f, 0xb8, 0x58, - 0x4b, 0xfe, 0xd2, 0x79, 0x6f, 0xce, 0xf6, 0xf7, 0x5d, 0xb4, 0xb5, 0x2e, 0x9c, 0x87, 0xaf, 0x3b, - 0x57, 0x29, 0x2b, 0x22, 0xca, 0x48, 0x36, 0x65, 0x5c, 0x52, 0x61, 0x4b, 0x8f, 0x3b, 0x89, 0xd4, - 0x4c, 0x3d, 0xfb, 0x23, 0xbe, 0x1c, 0xc0, 0xaa, 0x6f, 0x8d, 0x1f, 0xff, 0x05, 0x00, 0x00, 0xff, - 0xff, 0x97, 0xe7, 0x7d, 0x88, 0x39, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/location.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/location.pb.go deleted file mode 100644 index 83d2efd2..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/location.pb.go +++ /dev/null @@ -1,71 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/location.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/type/latlng" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Metadata for the given [google.cloud.location.Location][google.cloud.location.Location]. -type LocationMetadata struct { - // App Engine Standard Environment is available in the given location. - // - // @OutputOnly - StandardEnvironmentAvailable bool `protobuf:"varint,2,opt,name=standard_environment_available,json=standardEnvironmentAvailable" json:"standard_environment_available,omitempty"` - // App Engine Flexible Environment is available in the given location. - // - // @OutputOnly - FlexibleEnvironmentAvailable bool `protobuf:"varint,4,opt,name=flexible_environment_available,json=flexibleEnvironmentAvailable" json:"flexible_environment_available,omitempty"` -} - -func (m *LocationMetadata) Reset() { *m = LocationMetadata{} } -func (m *LocationMetadata) String() string { return proto.CompactTextString(m) } -func (*LocationMetadata) ProtoMessage() {} -func (*LocationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} } - -func (m *LocationMetadata) GetStandardEnvironmentAvailable() bool { - if m != nil { - return m.StandardEnvironmentAvailable - } - return false -} - -func (m *LocationMetadata) GetFlexibleEnvironmentAvailable() bool { - if m != nil { - return m.FlexibleEnvironmentAvailable - } - return false -} - -func init() { - proto.RegisterType((*LocationMetadata)(nil), "google.appengine.v1.LocationMetadata") -} - -func init() { proto.RegisterFile("google/appengine/v1/location.proto", fileDescriptor6) } - -var fileDescriptor6 = []byte{ - // 236 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0x41, 0x4b, 0xc3, 0x40, - 0x10, 0x85, 0x89, 0x88, 0x48, 0x40, 0x90, 0x7a, 0xb0, 0x94, 0x22, 0xd2, 0x93, 0xa7, 0x5d, 0x8a, - 0x47, 0xbd, 0x58, 0xf4, 0xa6, 0x50, 0x3c, 0x7a, 0x29, 0x93, 0x66, 0x1c, 0x17, 0xa6, 0x33, 0x4b, - 0x32, 0x04, 0xfd, 0x33, 0xfe, 0x56, 0x69, 0x36, 0x1b, 0x11, 0xea, 0x71, 0x79, 0xdf, 0xfb, 0xd8, - 0x37, 0xe5, 0x82, 0x54, 0x89, 0xd1, 0x43, 0x8c, 0x28, 0x14, 0x04, 0x7d, 0xb7, 0xf4, 0xac, 0x5b, - 0xb0, 0xa0, 0xe2, 0x62, 0xa3, 0xa6, 0x93, 0x8b, 0xc4, 0xb8, 0x91, 0x71, 0xdd, 0x72, 0x36, 0x1f, - 0x8b, 0xc1, 0x83, 0x88, 0x5a, 0xdf, 0x68, 0x53, 0x65, 0x36, 0x1d, 0x52, 0xfb, 0x8a, 0xe8, 0x19, - 0x8c, 0x85, 0x52, 0xb2, 0xf8, 0x2e, 0xca, 0xf3, 0xe7, 0xc1, 0xff, 0x82, 0x06, 0x35, 0x18, 0x4c, - 0x1e, 0xcb, 0xab, 0xd6, 0x40, 0x6a, 0x68, 0xea, 0x0d, 0x4a, 0x17, 0x1a, 0x95, 0x1d, 0x8a, 0x6d, - 0xa0, 0x83, 0xc0, 0x50, 0x31, 0x4e, 0x8f, 0xae, 0x8b, 0x9b, 0xd3, 0xd7, 0x79, 0xa6, 0x9e, 0x7e, - 0xa1, 0x87, 0xcc, 0xec, 0x2d, 0xef, 0x8c, 0x9f, 0xa1, 0x62, 0xfc, 0xc7, 0x72, 0x9c, 0x2c, 0x99, - 0x3a, 0x64, 0x59, 0x7d, 0x94, 0x97, 0x5b, 0xdd, 0xb9, 0x03, 0x9b, 0x57, 0x67, 0xf9, 0xe3, 0xeb, - 0xfd, 0x94, 0x75, 0xf1, 0x76, 0x3f, 0x50, 0xa4, 0x0c, 0x42, 0x4e, 0x1b, 0xf2, 0x84, 0xd2, 0x0f, - 0xf5, 0x29, 0x82, 0x18, 0xda, 0x3f, 0xc7, 0xbd, 0x1b, 0x1f, 0xd5, 0x49, 0x0f, 0xde, 0xfe, 0x04, - 0x00, 0x00, 0xff, 0xff, 0x93, 0x9b, 0x7c, 0xf8, 0x84, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/operation.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/operation.pb.go deleted file mode 100644 index 2000f6fc..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/operation.pb.go +++ /dev/null @@ -1,108 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/operation.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Metadata for the given [google.longrunning.Operation][google.longrunning.Operation]. -type OperationMetadataV1 struct { - // API method that initiated this operation. Example: - // `google.appengine.v1.Versions.CreateVersion`. - // - // @OutputOnly - Method string `protobuf:"bytes,1,opt,name=method" json:"method,omitempty"` - // Time that this operation was created. - // - // @OutputOnly - InsertTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=insert_time,json=insertTime" json:"insert_time,omitempty"` - // Time that this operation completed. - // - // @OutputOnly - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // User who requested this operation. - // - // @OutputOnly - User string `protobuf:"bytes,4,opt,name=user" json:"user,omitempty"` - // Name of the resource that this operation is acting on. Example: - // `apps/myapp/services/default`. - // - // @OutputOnly - Target string `protobuf:"bytes,5,opt,name=target" json:"target,omitempty"` -} - -func (m *OperationMetadataV1) Reset() { *m = OperationMetadataV1{} } -func (m *OperationMetadataV1) String() string { return proto.CompactTextString(m) } -func (*OperationMetadataV1) ProtoMessage() {} -func (*OperationMetadataV1) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{0} } - -func (m *OperationMetadataV1) GetMethod() string { - if m != nil { - return m.Method - } - return "" -} - -func (m *OperationMetadataV1) GetInsertTime() *google_protobuf2.Timestamp { - if m != nil { - return m.InsertTime - } - return nil -} - -func (m *OperationMetadataV1) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *OperationMetadataV1) GetUser() string { - if m != nil { - return m.User - } - return "" -} - -func (m *OperationMetadataV1) GetTarget() string { - if m != nil { - return m.Target - } - return "" -} - -func init() { - proto.RegisterType((*OperationMetadataV1)(nil), "google.appengine.v1.OperationMetadataV1") -} - -func init() { proto.RegisterFile("google/appengine/v1/operation.proto", fileDescriptor7) } - -var fileDescriptor7 = []byte{ - // 271 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0x41, 0x4b, 0x03, 0x31, - 0x10, 0x85, 0x59, 0xad, 0x55, 0x53, 0xf0, 0xb0, 0x05, 0x5d, 0x16, 0xc1, 0xa2, 0x97, 0x9e, 0x12, - 0x56, 0xf1, 0x54, 0x4f, 0xbd, 0x8b, 0xa5, 0x88, 0x07, 0x2f, 0x92, 0xba, 0x63, 0x0c, 0x74, 0x67, - 0x42, 0x32, 0xed, 0xbf, 0xf4, 0x3f, 0xc9, 0x26, 0xbb, 0x0b, 0x82, 0xd0, 0x5b, 0x5e, 0xe6, 0x7d, - 0x79, 0x2f, 0x89, 0xb8, 0x33, 0x44, 0x66, 0x0b, 0x4a, 0x3b, 0x07, 0x68, 0x2c, 0x82, 0xda, 0x57, - 0x8a, 0x1c, 0x78, 0xcd, 0x96, 0x50, 0x3a, 0x4f, 0x4c, 0xf9, 0x34, 0x99, 0xe4, 0x60, 0x92, 0xfb, - 0xaa, 0xbc, 0x1e, 0x48, 0xab, 0x34, 0x22, 0x71, 0x24, 0x42, 0x42, 0xca, 0x9b, 0x6e, 0x1a, 0xd5, - 0x66, 0xf7, 0xa5, 0xd8, 0x36, 0x10, 0x58, 0x37, 0x2e, 0x19, 0x6e, 0x7f, 0x32, 0x31, 0x7d, 0xe9, - 0x73, 0x9e, 0x81, 0x75, 0xad, 0x59, 0xbf, 0x55, 0xf9, 0xa5, 0x18, 0x37, 0xc0, 0xdf, 0x54, 0x17, - 0xd9, 0x2c, 0x9b, 0x9f, 0xaf, 0x3b, 0x95, 0x2f, 0xc4, 0xc4, 0x62, 0x00, 0xcf, 0x1f, 0xed, 0x49, - 0xc5, 0xd1, 0x2c, 0x9b, 0x4f, 0xee, 0x4b, 0xd9, 0x35, 0xeb, 0x63, 0xe4, 0x6b, 0x1f, 0xb3, 0x16, - 0xc9, 0xde, 0x6e, 0xe4, 0x8f, 0xe2, 0x0c, 0xb0, 0x4e, 0xe4, 0xf1, 0x41, 0xf2, 0x14, 0xb0, 0x8e, - 0x58, 0x2e, 0x46, 0xbb, 0x00, 0xbe, 0x18, 0xc5, 0x26, 0x71, 0xdd, 0xf6, 0x63, 0xed, 0x0d, 0x70, - 0x71, 0x92, 0xfa, 0x25, 0xb5, 0xb4, 0xe2, 0xea, 0x93, 0x1a, 0xf9, 0xcf, 0x4b, 0x2d, 0x2f, 0x86, - 0x7b, 0xae, 0xda, 0xb0, 0x55, 0xf6, 0xfe, 0xd4, 0xd9, 0x0c, 0x6d, 0x35, 0x1a, 0x49, 0xde, 0x28, - 0x03, 0x18, 0xab, 0xa8, 0x34, 0xd2, 0xce, 0x86, 0x3f, 0x9f, 0xb2, 0x18, 0xc4, 0x66, 0x1c, 0x8d, - 0x0f, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x8e, 0xb2, 0x00, 0xbc, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/service.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/service.pb.go deleted file mode 100644 index 0ccbde77..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/service.pb.go +++ /dev/null @@ -1,165 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/service.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Available sharding mechanisms. -type TrafficSplit_ShardBy int32 - -const ( - // Diversion method unspecified. - TrafficSplit_UNSPECIFIED TrafficSplit_ShardBy = 0 - // Diversion based on a specially named cookie, "GOOGAPPUID." The cookie - // must be set by the application itself or no diversion will occur. - TrafficSplit_COOKIE TrafficSplit_ShardBy = 1 - // Diversion based on applying the modulus operation to a fingerprint - // of the IP address. - TrafficSplit_IP TrafficSplit_ShardBy = 2 -) - -var TrafficSplit_ShardBy_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "COOKIE", - 2: "IP", -} -var TrafficSplit_ShardBy_value = map[string]int32{ - "UNSPECIFIED": 0, - "COOKIE": 1, - "IP": 2, -} - -func (x TrafficSplit_ShardBy) String() string { - return proto.EnumName(TrafficSplit_ShardBy_name, int32(x)) -} -func (TrafficSplit_ShardBy) EnumDescriptor() ([]byte, []int) { return fileDescriptor8, []int{1, 0} } - -// A Service resource is a logical component of an application that can share -// state and communicate in a secure fashion with other services. -// For example, an application that handles customer requests might -// include separate services to handle tasks such as backend data -// analysis or API requests from mobile devices. Each service has a -// collection of versions that define a specific set of code used to -// implement the functionality of that service. -type Service struct { - // Full path to the Service resource in the API. - // Example: `apps/myapp/services/default`. - // - // @OutputOnly - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Relative name of the service within the application. - // Example: `default`. - // - // @OutputOnly - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // Mapping that defines fractional HTTP traffic diversion to - // different versions within the service. - Split *TrafficSplit `protobuf:"bytes,3,opt,name=split" json:"split,omitempty"` -} - -func (m *Service) Reset() { *m = Service{} } -func (m *Service) String() string { return proto.CompactTextString(m) } -func (*Service) ProtoMessage() {} -func (*Service) Descriptor() ([]byte, []int) { return fileDescriptor8, []int{0} } - -func (m *Service) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Service) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Service) GetSplit() *TrafficSplit { - if m != nil { - return m.Split - } - return nil -} - -// Traffic routing configuration for versions within a single service. Traffic -// splits define how traffic directed to the service is assigned to versions. -type TrafficSplit struct { - // Mechanism used to determine which version a request is sent to. - // The traffic selection algorithm will - // be stable for either type until allocations are changed. - ShardBy TrafficSplit_ShardBy `protobuf:"varint,1,opt,name=shard_by,json=shardBy,enum=google.appengine.v1.TrafficSplit_ShardBy" json:"shard_by,omitempty"` - // Mapping from version IDs within the service to fractional - // (0.000, 1] allocations of traffic for that version. Each version can - // be specified only once, but some versions in the service may not - // have any traffic allocation. Services that have traffic allocated - // cannot be deleted until either the service is deleted or - // their traffic allocation is removed. Allocations must sum to 1. - // Up to two decimal place precision is supported for IP-based splits and - // up to three decimal places is supported for cookie-based splits. - Allocations map[string]float64 `protobuf:"bytes,2,rep,name=allocations" json:"allocations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` -} - -func (m *TrafficSplit) Reset() { *m = TrafficSplit{} } -func (m *TrafficSplit) String() string { return proto.CompactTextString(m) } -func (*TrafficSplit) ProtoMessage() {} -func (*TrafficSplit) Descriptor() ([]byte, []int) { return fileDescriptor8, []int{1} } - -func (m *TrafficSplit) GetShardBy() TrafficSplit_ShardBy { - if m != nil { - return m.ShardBy - } - return TrafficSplit_UNSPECIFIED -} - -func (m *TrafficSplit) GetAllocations() map[string]float64 { - if m != nil { - return m.Allocations - } - return nil -} - -func init() { - proto.RegisterType((*Service)(nil), "google.appengine.v1.Service") - proto.RegisterType((*TrafficSplit)(nil), "google.appengine.v1.TrafficSplit") - proto.RegisterEnum("google.appengine.v1.TrafficSplit_ShardBy", TrafficSplit_ShardBy_name, TrafficSplit_ShardBy_value) -} - -func init() { proto.RegisterFile("google/appengine/v1/service.proto", fileDescriptor8) } - -var fileDescriptor8 = []byte{ - // 356 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x51, 0x8b, 0xda, 0x40, - 0x10, 0xc7, 0x9b, 0xb5, 0x6a, 0x3b, 0x11, 0x1b, 0xb6, 0x85, 0x06, 0xe9, 0x83, 0xfa, 0x64, 0x5f, - 0x36, 0x98, 0x3e, 0xb4, 0xb4, 0xa5, 0x50, 0x35, 0x85, 0x50, 0x38, 0x43, 0xe2, 0xbd, 0xdc, 0xcb, - 0xb1, 0xc6, 0x75, 0x6f, 0xb9, 0xb8, 0x1b, 0x92, 0x5c, 0x20, 0x5f, 0xe5, 0x3e, 0xed, 0x91, 0x6c, - 0xf0, 0xbc, 0x43, 0xf0, 0x6d, 0x66, 0xf2, 0xfb, 0xff, 0x67, 0x32, 0xb3, 0x30, 0xe1, 0x4a, 0xf1, - 0x84, 0x39, 0x34, 0x4d, 0x99, 0xe4, 0x42, 0x32, 0xa7, 0x9c, 0x3b, 0x39, 0xcb, 0x4a, 0x11, 0x33, - 0x92, 0x66, 0xaa, 0x50, 0xf8, 0xa3, 0x46, 0xc8, 0x11, 0x21, 0xe5, 0x7c, 0xf4, 0xe5, 0xa8, 0x13, - 0x0e, 0x95, 0x52, 0x15, 0xb4, 0x10, 0x4a, 0xe6, 0x5a, 0x32, 0xdd, 0x43, 0x3f, 0xd2, 0x1e, 0x18, - 0xc3, 0x5b, 0x49, 0x0f, 0xcc, 0x36, 0xc6, 0xc6, 0xec, 0x7d, 0xd8, 0xc4, 0x78, 0x08, 0x48, 0xec, - 0x6c, 0xd4, 0x54, 0x90, 0xd8, 0xe1, 0xef, 0xd0, 0xcd, 0xd3, 0x44, 0x14, 0x76, 0x67, 0x6c, 0xcc, - 0x4c, 0x77, 0x42, 0xce, 0x74, 0x24, 0x9b, 0x8c, 0xee, 0xf7, 0x22, 0x8e, 0x6a, 0x30, 0xd4, 0xfc, - 0xf4, 0x11, 0xc1, 0xe0, 0xb4, 0x8e, 0x57, 0xf0, 0x2e, 0xbf, 0xa3, 0xd9, 0xee, 0x76, 0x5b, 0x35, - 0x1d, 0x87, 0xee, 0xd7, 0x8b, 0x66, 0x24, 0xaa, 0x15, 0x8b, 0x2a, 0xec, 0xe7, 0x3a, 0xc0, 0x1b, - 0x30, 0x69, 0x92, 0xa8, 0x58, 0xff, 0x93, 0x8d, 0xc6, 0x9d, 0x99, 0xe9, 0xba, 0x97, 0x8d, 0xfe, - 0x3e, 0x8b, 0x3c, 0x59, 0x64, 0x55, 0x78, 0x6a, 0x33, 0xfa, 0x03, 0xd6, 0x6b, 0x00, 0x5b, 0xd0, - 0xb9, 0x67, 0x55, 0xbb, 0x9c, 0x3a, 0xc4, 0x9f, 0xa0, 0x5b, 0xd2, 0xe4, 0x81, 0x35, 0xeb, 0x31, - 0x42, 0x9d, 0xfc, 0x44, 0x3f, 0x8c, 0x29, 0x81, 0x7e, 0x3b, 0x29, 0xfe, 0x00, 0xe6, 0xf5, 0x55, - 0x14, 0x78, 0x4b, 0xff, 0x9f, 0xef, 0xad, 0xac, 0x37, 0x18, 0xa0, 0xb7, 0x5c, 0xaf, 0xff, 0xfb, - 0x9e, 0x65, 0xe0, 0x1e, 0x20, 0x3f, 0xb0, 0xd0, 0x82, 0xc3, 0xe7, 0x58, 0x1d, 0xce, 0x4d, 0xbd, - 0x18, 0xb4, 0xd7, 0x09, 0xea, 0x6b, 0x05, 0xc6, 0xcd, 0xef, 0x16, 0xe2, 0x2a, 0xa1, 0x92, 0x13, - 0x95, 0x71, 0x87, 0x33, 0xd9, 0xdc, 0xd2, 0xd1, 0x9f, 0x68, 0x2a, 0xf2, 0x17, 0x8f, 0xe4, 0xd7, - 0x31, 0xd9, 0xf6, 0x1a, 0xf0, 0xdb, 0x53, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5f, 0xbc, 0x13, 0xf4, - 0x4c, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/appengine/v1/version.pb.go b/vendor/google.golang.org/genproto/googleapis/appengine/v1/version.pb.go deleted file mode 100644 index 21f86bf1..00000000 --- a/vendor/google.golang.org/genproto/googleapis/appengine/v1/version.pb.go +++ /dev/null @@ -1,1072 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/appengine/v1/version.proto - -package appengine - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Available inbound services. -type InboundServiceType int32 - -const ( - // Not specified. - InboundServiceType_INBOUND_SERVICE_UNSPECIFIED InboundServiceType = 0 - // Allows an application to receive mail. - InboundServiceType_INBOUND_SERVICE_MAIL InboundServiceType = 1 - // Allows an application to receive email-bound notifications. - InboundServiceType_INBOUND_SERVICE_MAIL_BOUNCE InboundServiceType = 2 - // Allows an application to receive error stanzas. - InboundServiceType_INBOUND_SERVICE_XMPP_ERROR InboundServiceType = 3 - // Allows an application to receive instant messages. - InboundServiceType_INBOUND_SERVICE_XMPP_MESSAGE InboundServiceType = 4 - // Allows an application to receive user subscription POSTs. - InboundServiceType_INBOUND_SERVICE_XMPP_SUBSCRIBE InboundServiceType = 5 - // Allows an application to receive a user's chat presence. - InboundServiceType_INBOUND_SERVICE_XMPP_PRESENCE InboundServiceType = 6 - // Registers an application for notifications when a client connects or - // disconnects from a channel. - InboundServiceType_INBOUND_SERVICE_CHANNEL_PRESENCE InboundServiceType = 7 - // Enables warmup requests. - InboundServiceType_INBOUND_SERVICE_WARMUP InboundServiceType = 9 -) - -var InboundServiceType_name = map[int32]string{ - 0: "INBOUND_SERVICE_UNSPECIFIED", - 1: "INBOUND_SERVICE_MAIL", - 2: "INBOUND_SERVICE_MAIL_BOUNCE", - 3: "INBOUND_SERVICE_XMPP_ERROR", - 4: "INBOUND_SERVICE_XMPP_MESSAGE", - 5: "INBOUND_SERVICE_XMPP_SUBSCRIBE", - 6: "INBOUND_SERVICE_XMPP_PRESENCE", - 7: "INBOUND_SERVICE_CHANNEL_PRESENCE", - 9: "INBOUND_SERVICE_WARMUP", -} -var InboundServiceType_value = map[string]int32{ - "INBOUND_SERVICE_UNSPECIFIED": 0, - "INBOUND_SERVICE_MAIL": 1, - "INBOUND_SERVICE_MAIL_BOUNCE": 2, - "INBOUND_SERVICE_XMPP_ERROR": 3, - "INBOUND_SERVICE_XMPP_MESSAGE": 4, - "INBOUND_SERVICE_XMPP_SUBSCRIBE": 5, - "INBOUND_SERVICE_XMPP_PRESENCE": 6, - "INBOUND_SERVICE_CHANNEL_PRESENCE": 7, - "INBOUND_SERVICE_WARMUP": 9, -} - -func (x InboundServiceType) String() string { - return proto.EnumName(InboundServiceType_name, int32(x)) -} -func (InboundServiceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor9, []int{0} } - -// Run states of a version. -type ServingStatus int32 - -const ( - // Not specified. - ServingStatus_SERVING_STATUS_UNSPECIFIED ServingStatus = 0 - // Currently serving. Instances are created according to the - // scaling settings of the version. - ServingStatus_SERVING ServingStatus = 1 - // Disabled. No instances will be created and the scaling - // settings are ignored until the state of the version changes - // to `SERVING`. - ServingStatus_STOPPED ServingStatus = 2 -) - -var ServingStatus_name = map[int32]string{ - 0: "SERVING_STATUS_UNSPECIFIED", - 1: "SERVING", - 2: "STOPPED", -} -var ServingStatus_value = map[string]int32{ - "SERVING_STATUS_UNSPECIFIED": 0, - "SERVING": 1, - "STOPPED": 2, -} - -func (x ServingStatus) String() string { - return proto.EnumName(ServingStatus_name, int32(x)) -} -func (ServingStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor9, []int{1} } - -// A Version resource is a specific set of source code and configuration files -// that are deployed into a service. -type Version struct { - // Full path to the Version resource in the API. Example: - // `apps/myapp/services/default/versions/v1`. - // - // @OutputOnly - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Relative name of the version within the service. Example: `v1`. - // Version names can contain only lowercase letters, numbers, or hyphens. - // Reserved names: "default", "latest", and any name with the prefix "ah-". - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // Controls how instances are created. - // - // Defaults to `AutomaticScaling`. - // - // Types that are valid to be assigned to Scaling: - // *Version_AutomaticScaling - // *Version_BasicScaling - // *Version_ManualScaling - Scaling isVersion_Scaling `protobuf_oneof:"scaling"` - // Before an application can receive email or XMPP messages, the application - // must be configured to enable the service. - InboundServices []InboundServiceType `protobuf:"varint,6,rep,packed,name=inbound_services,json=inboundServices,enum=google.appengine.v1.InboundServiceType" json:"inbound_services,omitempty"` - // Instance class that is used to run this version. Valid values are: - // * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` - // * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` - // - // Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or - // BasicScaling. - InstanceClass string `protobuf:"bytes,7,opt,name=instance_class,json=instanceClass" json:"instance_class,omitempty"` - // Extra network settings. Only applicable for VM runtimes. - Network *Network `protobuf:"bytes,8,opt,name=network" json:"network,omitempty"` - // Machine resources for this version. Only applicable for VM runtimes. - Resources *Resources `protobuf:"bytes,9,opt,name=resources" json:"resources,omitempty"` - // Desired runtime. Example: `python27`. - Runtime string `protobuf:"bytes,10,opt,name=runtime" json:"runtime,omitempty"` - // Whether multiple requests can be dispatched to this version at once. - Threadsafe bool `protobuf:"varint,11,opt,name=threadsafe" json:"threadsafe,omitempty"` - // Whether to deploy this version in a container on a virtual machine. - Vm bool `protobuf:"varint,12,opt,name=vm" json:"vm,omitempty"` - // Metadata settings that are supplied to this version to enable - // beta runtime features. - BetaSettings map[string]string `protobuf:"bytes,13,rep,name=beta_settings,json=betaSettings" json:"beta_settings,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // App Engine execution environment for this version. - // - // Defaults to `standard`. - Env string `protobuf:"bytes,14,opt,name=env" json:"env,omitempty"` - // Current serving status of this version. Only the versions with a - // `SERVING` status create instances and can be billed. - // - // `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`. - ServingStatus ServingStatus `protobuf:"varint,15,opt,name=serving_status,json=servingStatus,enum=google.appengine.v1.ServingStatus" json:"serving_status,omitempty"` - // Email address of the user who created this version. - // - // @OutputOnly - CreatedBy string `protobuf:"bytes,16,opt,name=created_by,json=createdBy" json:"created_by,omitempty"` - // Time that this version was created. - // - // @OutputOnly - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,17,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Total size in bytes of all the files that are included in this version - // and curerntly hosted on the App Engine disk. - // - // @OutputOnly - DiskUsageBytes int64 `protobuf:"varint,18,opt,name=disk_usage_bytes,json=diskUsageBytes" json:"disk_usage_bytes,omitempty"` - // An ordered list of URL-matching patterns that should be applied to incoming - // requests. The first matching URL handles the request and other request - // handlers are not attempted. - // - // Only returned in `GET` requests if `view=FULL` is set. - Handlers []*UrlMap `protobuf:"bytes,100,rep,name=handlers" json:"handlers,omitempty"` - // Custom static error pages. Limited to 10KB per page. - // - // Only returned in `GET` requests if `view=FULL` is set. - ErrorHandlers []*ErrorHandler `protobuf:"bytes,101,rep,name=error_handlers,json=errorHandlers" json:"error_handlers,omitempty"` - // Configuration for third-party Python runtime libraries that are required - // by the application. - // - // Only returned in `GET` requests if `view=FULL` is set. - Libraries []*Library `protobuf:"bytes,102,rep,name=libraries" json:"libraries,omitempty"` - // Serving configuration for - // [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). - // - // Only returned in `GET` requests if `view=FULL` is set. - ApiConfig *ApiConfigHandler `protobuf:"bytes,103,opt,name=api_config,json=apiConfig" json:"api_config,omitempty"` - // Environment variables available to the application. - // - // Only returned in `GET` requests if `view=FULL` is set. - EnvVariables map[string]string `protobuf:"bytes,104,rep,name=env_variables,json=envVariables" json:"env_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Duration that static files should be cached by web proxies and browsers. - // Only applicable if the corresponding - // [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) - // does not specify its own expiration time. - // - // Only returned in `GET` requests if `view=FULL` is set. - DefaultExpiration *google_protobuf1.Duration `protobuf:"bytes,105,opt,name=default_expiration,json=defaultExpiration" json:"default_expiration,omitempty"` - // Configures health checking for VM instances. Unhealthy instances are - // stopped and replaced with new instances. Only applicable for VM - // runtimes. - // - // Only returned in `GET` requests if `view=FULL` is set. - HealthCheck *HealthCheck `protobuf:"bytes,106,opt,name=health_check,json=healthCheck" json:"health_check,omitempty"` - // Files that match this pattern will not be built into this version. - // Only applicable for Go runtimes. - // - // Only returned in `GET` requests if `view=FULL` is set. - NobuildFilesRegex string `protobuf:"bytes,107,opt,name=nobuild_files_regex,json=nobuildFilesRegex" json:"nobuild_files_regex,omitempty"` - // Code and application artifacts that make up this version. - // - // Only returned in `GET` requests if `view=FULL` is set. - Deployment *Deployment `protobuf:"bytes,108,opt,name=deployment" json:"deployment,omitempty"` - // Serving URL for this version. Example: - // "https://myversion-dot-myservice-dot-myapp.appspot.com" - // - // @OutputOnly - VersionUrl string `protobuf:"bytes,109,opt,name=version_url,json=versionUrl" json:"version_url,omitempty"` -} - -func (m *Version) Reset() { *m = Version{} } -func (m *Version) String() string { return proto.CompactTextString(m) } -func (*Version) ProtoMessage() {} -func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{0} } - -type isVersion_Scaling interface { - isVersion_Scaling() -} - -type Version_AutomaticScaling struct { - AutomaticScaling *AutomaticScaling `protobuf:"bytes,3,opt,name=automatic_scaling,json=automaticScaling,oneof"` -} -type Version_BasicScaling struct { - BasicScaling *BasicScaling `protobuf:"bytes,4,opt,name=basic_scaling,json=basicScaling,oneof"` -} -type Version_ManualScaling struct { - ManualScaling *ManualScaling `protobuf:"bytes,5,opt,name=manual_scaling,json=manualScaling,oneof"` -} - -func (*Version_AutomaticScaling) isVersion_Scaling() {} -func (*Version_BasicScaling) isVersion_Scaling() {} -func (*Version_ManualScaling) isVersion_Scaling() {} - -func (m *Version) GetScaling() isVersion_Scaling { - if m != nil { - return m.Scaling - } - return nil -} - -func (m *Version) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Version) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Version) GetAutomaticScaling() *AutomaticScaling { - if x, ok := m.GetScaling().(*Version_AutomaticScaling); ok { - return x.AutomaticScaling - } - return nil -} - -func (m *Version) GetBasicScaling() *BasicScaling { - if x, ok := m.GetScaling().(*Version_BasicScaling); ok { - return x.BasicScaling - } - return nil -} - -func (m *Version) GetManualScaling() *ManualScaling { - if x, ok := m.GetScaling().(*Version_ManualScaling); ok { - return x.ManualScaling - } - return nil -} - -func (m *Version) GetInboundServices() []InboundServiceType { - if m != nil { - return m.InboundServices - } - return nil -} - -func (m *Version) GetInstanceClass() string { - if m != nil { - return m.InstanceClass - } - return "" -} - -func (m *Version) GetNetwork() *Network { - if m != nil { - return m.Network - } - return nil -} - -func (m *Version) GetResources() *Resources { - if m != nil { - return m.Resources - } - return nil -} - -func (m *Version) GetRuntime() string { - if m != nil { - return m.Runtime - } - return "" -} - -func (m *Version) GetThreadsafe() bool { - if m != nil { - return m.Threadsafe - } - return false -} - -func (m *Version) GetVm() bool { - if m != nil { - return m.Vm - } - return false -} - -func (m *Version) GetBetaSettings() map[string]string { - if m != nil { - return m.BetaSettings - } - return nil -} - -func (m *Version) GetEnv() string { - if m != nil { - return m.Env - } - return "" -} - -func (m *Version) GetServingStatus() ServingStatus { - if m != nil { - return m.ServingStatus - } - return ServingStatus_SERVING_STATUS_UNSPECIFIED -} - -func (m *Version) GetCreatedBy() string { - if m != nil { - return m.CreatedBy - } - return "" -} - -func (m *Version) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Version) GetDiskUsageBytes() int64 { - if m != nil { - return m.DiskUsageBytes - } - return 0 -} - -func (m *Version) GetHandlers() []*UrlMap { - if m != nil { - return m.Handlers - } - return nil -} - -func (m *Version) GetErrorHandlers() []*ErrorHandler { - if m != nil { - return m.ErrorHandlers - } - return nil -} - -func (m *Version) GetLibraries() []*Library { - if m != nil { - return m.Libraries - } - return nil -} - -func (m *Version) GetApiConfig() *ApiConfigHandler { - if m != nil { - return m.ApiConfig - } - return nil -} - -func (m *Version) GetEnvVariables() map[string]string { - if m != nil { - return m.EnvVariables - } - return nil -} - -func (m *Version) GetDefaultExpiration() *google_protobuf1.Duration { - if m != nil { - return m.DefaultExpiration - } - return nil -} - -func (m *Version) GetHealthCheck() *HealthCheck { - if m != nil { - return m.HealthCheck - } - return nil -} - -func (m *Version) GetNobuildFilesRegex() string { - if m != nil { - return m.NobuildFilesRegex - } - return "" -} - -func (m *Version) GetDeployment() *Deployment { - if m != nil { - return m.Deployment - } - return nil -} - -func (m *Version) GetVersionUrl() string { - if m != nil { - return m.VersionUrl - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Version) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Version_OneofMarshaler, _Version_OneofUnmarshaler, _Version_OneofSizer, []interface{}{ - (*Version_AutomaticScaling)(nil), - (*Version_BasicScaling)(nil), - (*Version_ManualScaling)(nil), - } -} - -func _Version_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Version) - // scaling - switch x := m.Scaling.(type) { - case *Version_AutomaticScaling: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AutomaticScaling); err != nil { - return err - } - case *Version_BasicScaling: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BasicScaling); err != nil { - return err - } - case *Version_ManualScaling: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ManualScaling); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Version.Scaling has unexpected type %T", x) - } - return nil -} - -func _Version_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Version) - switch tag { - case 3: // scaling.automatic_scaling - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AutomaticScaling) - err := b.DecodeMessage(msg) - m.Scaling = &Version_AutomaticScaling{msg} - return true, err - case 4: // scaling.basic_scaling - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BasicScaling) - err := b.DecodeMessage(msg) - m.Scaling = &Version_BasicScaling{msg} - return true, err - case 5: // scaling.manual_scaling - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ManualScaling) - err := b.DecodeMessage(msg) - m.Scaling = &Version_ManualScaling{msg} - return true, err - default: - return false, nil - } -} - -func _Version_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Version) - // scaling - switch x := m.Scaling.(type) { - case *Version_AutomaticScaling: - s := proto.Size(x.AutomaticScaling) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Version_BasicScaling: - s := proto.Size(x.BasicScaling) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Version_ManualScaling: - s := proto.Size(x.ManualScaling) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Automatic scaling is based on request rate, response latencies, and other -// application metrics. -type AutomaticScaling struct { - // Amount of time that the - // [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) - // should wait between changes to the number of virtual machines. - // Only applicable for VM runtimes. - CoolDownPeriod *google_protobuf1.Duration `protobuf:"bytes,1,opt,name=cool_down_period,json=coolDownPeriod" json:"cool_down_period,omitempty"` - // Target scaling by CPU usage. - CpuUtilization *CpuUtilization `protobuf:"bytes,2,opt,name=cpu_utilization,json=cpuUtilization" json:"cpu_utilization,omitempty"` - // Number of concurrent requests an automatic scaling instance can accept - // before the scheduler spawns a new instance. - // - // Defaults to a runtime-specific value. - MaxConcurrentRequests int32 `protobuf:"varint,3,opt,name=max_concurrent_requests,json=maxConcurrentRequests" json:"max_concurrent_requests,omitempty"` - // Maximum number of idle instances that should be maintained for this - // version. - MaxIdleInstances int32 `protobuf:"varint,4,opt,name=max_idle_instances,json=maxIdleInstances" json:"max_idle_instances,omitempty"` - // Maximum number of instances that should be started to handle requests. - MaxTotalInstances int32 `protobuf:"varint,5,opt,name=max_total_instances,json=maxTotalInstances" json:"max_total_instances,omitempty"` - // Maximum amount of time that a request should wait in the pending queue - // before starting a new instance to handle it. - MaxPendingLatency *google_protobuf1.Duration `protobuf:"bytes,6,opt,name=max_pending_latency,json=maxPendingLatency" json:"max_pending_latency,omitempty"` - // Minimum number of idle instances that should be maintained for - // this version. Only applicable for the default version of a service. - MinIdleInstances int32 `protobuf:"varint,7,opt,name=min_idle_instances,json=minIdleInstances" json:"min_idle_instances,omitempty"` - // Minimum number of instances that should be maintained for this version. - MinTotalInstances int32 `protobuf:"varint,8,opt,name=min_total_instances,json=minTotalInstances" json:"min_total_instances,omitempty"` - // Minimum amount of time a request should wait in the pending queue before - // starting a new instance to handle it. - MinPendingLatency *google_protobuf1.Duration `protobuf:"bytes,9,opt,name=min_pending_latency,json=minPendingLatency" json:"min_pending_latency,omitempty"` - // Target scaling by request utilization. - RequestUtilization *RequestUtilization `protobuf:"bytes,10,opt,name=request_utilization,json=requestUtilization" json:"request_utilization,omitempty"` - // Target scaling by disk usage. - DiskUtilization *DiskUtilization `protobuf:"bytes,11,opt,name=disk_utilization,json=diskUtilization" json:"disk_utilization,omitempty"` - // Target scaling by network usage. - NetworkUtilization *NetworkUtilization `protobuf:"bytes,12,opt,name=network_utilization,json=networkUtilization" json:"network_utilization,omitempty"` -} - -func (m *AutomaticScaling) Reset() { *m = AutomaticScaling{} } -func (m *AutomaticScaling) String() string { return proto.CompactTextString(m) } -func (*AutomaticScaling) ProtoMessage() {} -func (*AutomaticScaling) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{1} } - -func (m *AutomaticScaling) GetCoolDownPeriod() *google_protobuf1.Duration { - if m != nil { - return m.CoolDownPeriod - } - return nil -} - -func (m *AutomaticScaling) GetCpuUtilization() *CpuUtilization { - if m != nil { - return m.CpuUtilization - } - return nil -} - -func (m *AutomaticScaling) GetMaxConcurrentRequests() int32 { - if m != nil { - return m.MaxConcurrentRequests - } - return 0 -} - -func (m *AutomaticScaling) GetMaxIdleInstances() int32 { - if m != nil { - return m.MaxIdleInstances - } - return 0 -} - -func (m *AutomaticScaling) GetMaxTotalInstances() int32 { - if m != nil { - return m.MaxTotalInstances - } - return 0 -} - -func (m *AutomaticScaling) GetMaxPendingLatency() *google_protobuf1.Duration { - if m != nil { - return m.MaxPendingLatency - } - return nil -} - -func (m *AutomaticScaling) GetMinIdleInstances() int32 { - if m != nil { - return m.MinIdleInstances - } - return 0 -} - -func (m *AutomaticScaling) GetMinTotalInstances() int32 { - if m != nil { - return m.MinTotalInstances - } - return 0 -} - -func (m *AutomaticScaling) GetMinPendingLatency() *google_protobuf1.Duration { - if m != nil { - return m.MinPendingLatency - } - return nil -} - -func (m *AutomaticScaling) GetRequestUtilization() *RequestUtilization { - if m != nil { - return m.RequestUtilization - } - return nil -} - -func (m *AutomaticScaling) GetDiskUtilization() *DiskUtilization { - if m != nil { - return m.DiskUtilization - } - return nil -} - -func (m *AutomaticScaling) GetNetworkUtilization() *NetworkUtilization { - if m != nil { - return m.NetworkUtilization - } - return nil -} - -// A service with basic scaling will create an instance when the application -// receives a request. The instance will be turned down when the app becomes -// idle. Basic scaling is ideal for work that is intermittent or driven by -// user activity. -type BasicScaling struct { - // Duration of time after the last request that an instance must wait before - // the instance is shut down. - IdleTimeout *google_protobuf1.Duration `protobuf:"bytes,1,opt,name=idle_timeout,json=idleTimeout" json:"idle_timeout,omitempty"` - // Maximum number of instances to create for this version. - MaxInstances int32 `protobuf:"varint,2,opt,name=max_instances,json=maxInstances" json:"max_instances,omitempty"` -} - -func (m *BasicScaling) Reset() { *m = BasicScaling{} } -func (m *BasicScaling) String() string { return proto.CompactTextString(m) } -func (*BasicScaling) ProtoMessage() {} -func (*BasicScaling) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{2} } - -func (m *BasicScaling) GetIdleTimeout() *google_protobuf1.Duration { - if m != nil { - return m.IdleTimeout - } - return nil -} - -func (m *BasicScaling) GetMaxInstances() int32 { - if m != nil { - return m.MaxInstances - } - return 0 -} - -// A service with manual scaling runs continuously, allowing you to perform -// complex initialization and rely on the state of its memory over time. -type ManualScaling struct { - // Number of instances to assign to the service at the start. This number - // can later be altered by using the - // [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) - // `set_num_instances()` function. - Instances int32 `protobuf:"varint,1,opt,name=instances" json:"instances,omitempty"` -} - -func (m *ManualScaling) Reset() { *m = ManualScaling{} } -func (m *ManualScaling) String() string { return proto.CompactTextString(m) } -func (*ManualScaling) ProtoMessage() {} -func (*ManualScaling) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{3} } - -func (m *ManualScaling) GetInstances() int32 { - if m != nil { - return m.Instances - } - return 0 -} - -// Target scaling by CPU usage. -type CpuUtilization struct { - // Period of time over which CPU utilization is calculated. - AggregationWindowLength *google_protobuf1.Duration `protobuf:"bytes,1,opt,name=aggregation_window_length,json=aggregationWindowLength" json:"aggregation_window_length,omitempty"` - // Target CPU utilization ratio to maintain when scaling. Must be between 0 - // and 1. - TargetUtilization float64 `protobuf:"fixed64,2,opt,name=target_utilization,json=targetUtilization" json:"target_utilization,omitempty"` -} - -func (m *CpuUtilization) Reset() { *m = CpuUtilization{} } -func (m *CpuUtilization) String() string { return proto.CompactTextString(m) } -func (*CpuUtilization) ProtoMessage() {} -func (*CpuUtilization) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{4} } - -func (m *CpuUtilization) GetAggregationWindowLength() *google_protobuf1.Duration { - if m != nil { - return m.AggregationWindowLength - } - return nil -} - -func (m *CpuUtilization) GetTargetUtilization() float64 { - if m != nil { - return m.TargetUtilization - } - return 0 -} - -// Target scaling by request utilization. Only applicable for VM runtimes. -type RequestUtilization struct { - // Target requests per second. - TargetRequestCountPerSecond int32 `protobuf:"varint,1,opt,name=target_request_count_per_second,json=targetRequestCountPerSecond" json:"target_request_count_per_second,omitempty"` - // Target number of concurrent requests. - TargetConcurrentRequests int32 `protobuf:"varint,2,opt,name=target_concurrent_requests,json=targetConcurrentRequests" json:"target_concurrent_requests,omitempty"` -} - -func (m *RequestUtilization) Reset() { *m = RequestUtilization{} } -func (m *RequestUtilization) String() string { return proto.CompactTextString(m) } -func (*RequestUtilization) ProtoMessage() {} -func (*RequestUtilization) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{5} } - -func (m *RequestUtilization) GetTargetRequestCountPerSecond() int32 { - if m != nil { - return m.TargetRequestCountPerSecond - } - return 0 -} - -func (m *RequestUtilization) GetTargetConcurrentRequests() int32 { - if m != nil { - return m.TargetConcurrentRequests - } - return 0 -} - -// Target scaling by disk usage. Only applicable for VM runtimes. -type DiskUtilization struct { - // Target bytes written per second. - TargetWriteBytesPerSecond int32 `protobuf:"varint,14,opt,name=target_write_bytes_per_second,json=targetWriteBytesPerSecond" json:"target_write_bytes_per_second,omitempty"` - // Target ops written per second. - TargetWriteOpsPerSecond int32 `protobuf:"varint,15,opt,name=target_write_ops_per_second,json=targetWriteOpsPerSecond" json:"target_write_ops_per_second,omitempty"` - // Target bytes read per second. - TargetReadBytesPerSecond int32 `protobuf:"varint,16,opt,name=target_read_bytes_per_second,json=targetReadBytesPerSecond" json:"target_read_bytes_per_second,omitempty"` - // Target ops read per seconds. - TargetReadOpsPerSecond int32 `protobuf:"varint,17,opt,name=target_read_ops_per_second,json=targetReadOpsPerSecond" json:"target_read_ops_per_second,omitempty"` -} - -func (m *DiskUtilization) Reset() { *m = DiskUtilization{} } -func (m *DiskUtilization) String() string { return proto.CompactTextString(m) } -func (*DiskUtilization) ProtoMessage() {} -func (*DiskUtilization) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{6} } - -func (m *DiskUtilization) GetTargetWriteBytesPerSecond() int32 { - if m != nil { - return m.TargetWriteBytesPerSecond - } - return 0 -} - -func (m *DiskUtilization) GetTargetWriteOpsPerSecond() int32 { - if m != nil { - return m.TargetWriteOpsPerSecond - } - return 0 -} - -func (m *DiskUtilization) GetTargetReadBytesPerSecond() int32 { - if m != nil { - return m.TargetReadBytesPerSecond - } - return 0 -} - -func (m *DiskUtilization) GetTargetReadOpsPerSecond() int32 { - if m != nil { - return m.TargetReadOpsPerSecond - } - return 0 -} - -// Target scaling by network usage. Only applicable for VM runtimes. -type NetworkUtilization struct { - // Target bytes sent per second. - TargetSentBytesPerSecond int32 `protobuf:"varint,1,opt,name=target_sent_bytes_per_second,json=targetSentBytesPerSecond" json:"target_sent_bytes_per_second,omitempty"` - // Target packets sent per second. - TargetSentPacketsPerSecond int32 `protobuf:"varint,11,opt,name=target_sent_packets_per_second,json=targetSentPacketsPerSecond" json:"target_sent_packets_per_second,omitempty"` - // Target bytes received per second. - TargetReceivedBytesPerSecond int32 `protobuf:"varint,12,opt,name=target_received_bytes_per_second,json=targetReceivedBytesPerSecond" json:"target_received_bytes_per_second,omitempty"` - // Target packets received per second. - TargetReceivedPacketsPerSecond int32 `protobuf:"varint,13,opt,name=target_received_packets_per_second,json=targetReceivedPacketsPerSecond" json:"target_received_packets_per_second,omitempty"` -} - -func (m *NetworkUtilization) Reset() { *m = NetworkUtilization{} } -func (m *NetworkUtilization) String() string { return proto.CompactTextString(m) } -func (*NetworkUtilization) ProtoMessage() {} -func (*NetworkUtilization) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{7} } - -func (m *NetworkUtilization) GetTargetSentBytesPerSecond() int32 { - if m != nil { - return m.TargetSentBytesPerSecond - } - return 0 -} - -func (m *NetworkUtilization) GetTargetSentPacketsPerSecond() int32 { - if m != nil { - return m.TargetSentPacketsPerSecond - } - return 0 -} - -func (m *NetworkUtilization) GetTargetReceivedBytesPerSecond() int32 { - if m != nil { - return m.TargetReceivedBytesPerSecond - } - return 0 -} - -func (m *NetworkUtilization) GetTargetReceivedPacketsPerSecond() int32 { - if m != nil { - return m.TargetReceivedPacketsPerSecond - } - return 0 -} - -// Extra network settings. Only applicable for VM runtimes. -type Network struct { - // List of ports, or port pairs, to forward from the virtual machine to the - // application container. - ForwardedPorts []string `protobuf:"bytes,1,rep,name=forwarded_ports,json=forwardedPorts" json:"forwarded_ports,omitempty"` - // Tag to apply to the VM instance during creation. - InstanceTag string `protobuf:"bytes,2,opt,name=instance_tag,json=instanceTag" json:"instance_tag,omitempty"` - // Google Cloud Platform network where the virtual machines are created. - // Specify the short name, not the resource path. - // - // Defaults to `default`. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` -} - -func (m *Network) Reset() { *m = Network{} } -func (m *Network) String() string { return proto.CompactTextString(m) } -func (*Network) ProtoMessage() {} -func (*Network) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{8} } - -func (m *Network) GetForwardedPorts() []string { - if m != nil { - return m.ForwardedPorts - } - return nil -} - -func (m *Network) GetInstanceTag() string { - if m != nil { - return m.InstanceTag - } - return "" -} - -func (m *Network) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Machine resources for a version. -type Resources struct { - // Number of CPU cores needed. - Cpu float64 `protobuf:"fixed64,1,opt,name=cpu" json:"cpu,omitempty"` - // Disk size (GB) needed. - DiskGb float64 `protobuf:"fixed64,2,opt,name=disk_gb,json=diskGb" json:"disk_gb,omitempty"` - // Memory (GB) needed. - MemoryGb float64 `protobuf:"fixed64,3,opt,name=memory_gb,json=memoryGb" json:"memory_gb,omitempty"` -} - -func (m *Resources) Reset() { *m = Resources{} } -func (m *Resources) String() string { return proto.CompactTextString(m) } -func (*Resources) ProtoMessage() {} -func (*Resources) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{9} } - -func (m *Resources) GetCpu() float64 { - if m != nil { - return m.Cpu - } - return 0 -} - -func (m *Resources) GetDiskGb() float64 { - if m != nil { - return m.DiskGb - } - return 0 -} - -func (m *Resources) GetMemoryGb() float64 { - if m != nil { - return m.MemoryGb - } - return 0 -} - -func init() { - proto.RegisterType((*Version)(nil), "google.appengine.v1.Version") - proto.RegisterType((*AutomaticScaling)(nil), "google.appengine.v1.AutomaticScaling") - proto.RegisterType((*BasicScaling)(nil), "google.appengine.v1.BasicScaling") - proto.RegisterType((*ManualScaling)(nil), "google.appengine.v1.ManualScaling") - proto.RegisterType((*CpuUtilization)(nil), "google.appengine.v1.CpuUtilization") - proto.RegisterType((*RequestUtilization)(nil), "google.appengine.v1.RequestUtilization") - proto.RegisterType((*DiskUtilization)(nil), "google.appengine.v1.DiskUtilization") - proto.RegisterType((*NetworkUtilization)(nil), "google.appengine.v1.NetworkUtilization") - proto.RegisterType((*Network)(nil), "google.appengine.v1.Network") - proto.RegisterType((*Resources)(nil), "google.appengine.v1.Resources") - proto.RegisterEnum("google.appengine.v1.InboundServiceType", InboundServiceType_name, InboundServiceType_value) - proto.RegisterEnum("google.appengine.v1.ServingStatus", ServingStatus_name, ServingStatus_value) -} - -func init() { proto.RegisterFile("google/appengine/v1/version.proto", fileDescriptor9) } - -var fileDescriptor9 = []byte{ - // 1767 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0x5d, 0x73, 0xdb, 0xc6, - 0x15, 0x0d, 0x29, 0x4b, 0x14, 0x2f, 0x3f, 0x04, 0xad, 0xd3, 0x08, 0x96, 0x64, 0x89, 0x66, 0x92, - 0xb1, 0x26, 0xd3, 0x50, 0x13, 0x77, 0x26, 0xed, 0x38, 0x9e, 0xa6, 0x22, 0x45, 0x5b, 0x6c, 0xf5, - 0xc1, 0x01, 0x48, 0x3b, 0xd3, 0x17, 0xcc, 0x12, 0x58, 0x41, 0x5b, 0x01, 0x0b, 0x64, 0xb1, 0xa0, - 0xc4, 0xfe, 0x87, 0x3e, 0xb6, 0xd3, 0x1f, 0xd1, 0xc7, 0xbe, 0xf5, 0xcf, 0x75, 0x76, 0x01, 0x90, - 0x20, 0x89, 0xd8, 0xed, 0x1b, 0xf7, 0xee, 0x39, 0x67, 0x0f, 0xee, 0xde, 0xbd, 0x0b, 0x10, 0x5e, - 0xb8, 0x41, 0xe0, 0x7a, 0xe4, 0x14, 0x87, 0x21, 0x61, 0x2e, 0x65, 0xe4, 0x74, 0xfa, 0xdd, 0xe9, - 0x94, 0xf0, 0x88, 0x06, 0xac, 0x13, 0xf2, 0x40, 0x04, 0xe8, 0x69, 0x02, 0xe9, 0xcc, 0x21, 0x9d, - 0xe9, 0x77, 0xfb, 0x87, 0x73, 0x1e, 0x3d, 0xc5, 0x8c, 0x05, 0x02, 0x0b, 0x1a, 0xb0, 0x28, 0xa1, - 0xec, 0xb7, 0x8b, 0x54, 0x71, 0x18, 0x5a, 0x33, 0xec, 0x7b, 0x29, 0xa6, 0x55, 0x84, 0x71, 0x48, - 0xe8, 0x05, 0xb3, 0x14, 0x71, 0x94, 0x22, 0xd4, 0x68, 0x12, 0xdf, 0x9e, 0x3a, 0x31, 0x57, 0xcb, - 0xa4, 0xf3, 0xc7, 0xab, 0xf3, 0x82, 0xfa, 0x24, 0x12, 0xd8, 0x0f, 0x13, 0x40, 0xfb, 0xef, 0x0d, - 0xa8, 0xbc, 0x4f, 0x9e, 0x05, 0x21, 0x78, 0xc2, 0xb0, 0x4f, 0xf4, 0x52, 0xab, 0x74, 0x52, 0x35, - 0xd4, 0x6f, 0xd4, 0x84, 0x32, 0x75, 0xf4, 0xb2, 0x8a, 0x94, 0xa9, 0x83, 0x46, 0xb0, 0x8b, 0x63, - 0x11, 0xf8, 0x58, 0x50, 0xdb, 0x8a, 0x6c, 0xec, 0x51, 0xe6, 0xea, 0x1b, 0xad, 0xd2, 0x49, 0xed, - 0xd5, 0xd7, 0x9d, 0x82, 0x2c, 0x74, 0xce, 0x32, 0xb4, 0x99, 0x80, 0x2f, 0x3e, 0x33, 0x34, 0xbc, - 0x12, 0x43, 0x17, 0xd0, 0x98, 0xe0, 0x28, 0xa7, 0xf8, 0x44, 0x29, 0xbe, 0x28, 0x54, 0xec, 0x4a, - 0xe4, 0x42, 0xad, 0x3e, 0xc9, 0x8d, 0xd1, 0x9f, 0xa0, 0xe9, 0x63, 0x16, 0x63, 0x6f, 0x2e, 0xb5, - 0xa9, 0xa4, 0xda, 0x85, 0x52, 0x57, 0x0a, 0xba, 0xd0, 0x6a, 0xf8, 0xf9, 0x00, 0x32, 0x40, 0xa3, - 0x6c, 0x12, 0xc4, 0xcc, 0xb1, 0x22, 0xc2, 0xa7, 0xd4, 0x26, 0x91, 0xbe, 0xd5, 0xda, 0x38, 0x69, - 0xbe, 0x7a, 0x59, 0x28, 0x37, 0x48, 0xc0, 0x66, 0x82, 0x1d, 0xcd, 0x42, 0x62, 0xec, 0xd0, 0xa5, - 0x58, 0x84, 0xbe, 0x86, 0x26, 0x65, 0x91, 0xc0, 0xcc, 0x26, 0x96, 0xed, 0xe1, 0x28, 0xd2, 0x2b, - 0x2a, 0xb9, 0x8d, 0x2c, 0xda, 0x93, 0x41, 0xf4, 0x3d, 0x54, 0x18, 0x11, 0x0f, 0x01, 0xbf, 0xd7, - 0xb7, 0xd5, 0x03, 0x1c, 0x16, 0xae, 0x78, 0x9d, 0x60, 0x8c, 0x0c, 0x8c, 0xde, 0x40, 0x95, 0x93, - 0x28, 0x88, 0xb9, 0xf4, 0x5a, 0x55, 0xcc, 0xa3, 0x42, 0xa6, 0x91, 0xa1, 0x8c, 0x05, 0x01, 0xe9, - 0x50, 0xe1, 0x31, 0x93, 0x35, 0xa2, 0x83, 0x72, 0x95, 0x0d, 0xd1, 0x11, 0x80, 0xb8, 0xe3, 0x04, - 0x3b, 0x11, 0xbe, 0x25, 0x7a, 0xad, 0x55, 0x3a, 0xd9, 0x36, 0x72, 0x11, 0x59, 0x27, 0x53, 0x5f, - 0xaf, 0xab, 0x78, 0x79, 0xea, 0x23, 0x13, 0x1a, 0x13, 0x22, 0xb0, 0x15, 0x11, 0x21, 0x28, 0x73, - 0x23, 0xbd, 0xd1, 0xda, 0x38, 0xa9, 0xbd, 0xea, 0x14, 0x7a, 0x49, 0x0b, 0xb0, 0xd3, 0x25, 0x02, - 0x9b, 0x29, 0xa1, 0xcf, 0x04, 0x9f, 0x19, 0xf5, 0x49, 0x2e, 0x84, 0x34, 0xd8, 0x20, 0x6c, 0xaa, - 0x37, 0x95, 0x35, 0xf9, 0x13, 0x0d, 0xa0, 0xa9, 0x76, 0x86, 0xb9, 0x56, 0x24, 0xb0, 0x88, 0x23, - 0x7d, 0xa7, 0x55, 0x3a, 0x69, 0xfe, 0xc2, 0x76, 0x9b, 0x09, 0xd4, 0x54, 0x48, 0xa3, 0x11, 0xe5, - 0x87, 0xe8, 0x39, 0x80, 0xcd, 0x09, 0x16, 0xc4, 0xb1, 0x26, 0x33, 0x5d, 0x53, 0x6b, 0x54, 0xd3, - 0x48, 0x77, 0x86, 0x7e, 0x80, 0x5a, 0x32, 0xb0, 0x54, 0x7a, 0x76, 0x55, 0x6a, 0xf7, 0xb3, 0x65, - 0xb2, 0xf3, 0xd5, 0x19, 0x65, 0xe7, 0xcb, 0x48, 0xd5, 0x64, 0x00, 0x9d, 0x80, 0xe6, 0xd0, 0xe8, - 0xde, 0x8a, 0x23, 0xec, 0x12, 0x6b, 0x32, 0x13, 0x24, 0xd2, 0x51, 0xab, 0x74, 0xb2, 0x61, 0x34, - 0x65, 0x7c, 0x2c, 0xc3, 0x5d, 0x19, 0x45, 0xbf, 0x85, 0xed, 0x3b, 0xcc, 0x1c, 0x8f, 0xf0, 0x48, - 0x77, 0x54, 0xca, 0x0e, 0x0a, 0x1f, 0x65, 0xcc, 0xbd, 0x2b, 0x1c, 0x1a, 0x73, 0x30, 0xba, 0x80, - 0x26, 0xe1, 0x3c, 0xe0, 0xd6, 0x9c, 0x4e, 0x14, 0xbd, 0xf8, 0x0c, 0xf5, 0x25, 0xf4, 0x22, 0x41, - 0x1a, 0x0d, 0x92, 0x1b, 0x45, 0xe8, 0x35, 0x54, 0x3d, 0x3a, 0xe1, 0x98, 0x53, 0x12, 0xe9, 0xb7, - 0x4a, 0xa4, 0xb8, 0xf8, 0x2e, 0x15, 0x6a, 0x66, 0x2c, 0xe0, 0xe8, 0x1c, 0x00, 0x87, 0xd4, 0xb2, - 0x03, 0x76, 0x4b, 0x5d, 0xdd, 0xfd, 0x58, 0x5f, 0x08, 0x69, 0x4f, 0xa1, 0x32, 0x17, 0x55, 0x9c, - 0x45, 0x64, 0xf1, 0x10, 0x36, 0xb5, 0xa6, 0x98, 0x53, 0x3c, 0xf1, 0x48, 0xa4, 0xdf, 0xfd, 0x0f, - 0xc5, 0xd3, 0x67, 0xd3, 0xf7, 0x19, 0x21, 0x2d, 0x1e, 0x92, 0x0b, 0xa1, 0x0b, 0x40, 0x0e, 0xb9, - 0xc5, 0xb1, 0x27, 0x2c, 0xf2, 0x18, 0xd2, 0xa4, 0x4d, 0xea, 0x54, 0x59, 0x7c, 0xb6, 0xb6, 0x8f, - 0xe7, 0x69, 0x1f, 0x35, 0x76, 0x53, 0x52, 0x7f, 0xce, 0x41, 0x3d, 0xa8, 0xdf, 0x11, 0xec, 0x89, - 0x3b, 0xcb, 0xbe, 0x23, 0xf6, 0xbd, 0xfe, 0x17, 0xa5, 0xd1, 0x2a, 0x74, 0x77, 0xa1, 0x80, 0x3d, - 0x89, 0x33, 0x6a, 0x77, 0x8b, 0x01, 0xea, 0xc0, 0x53, 0x16, 0x4c, 0x62, 0xea, 0x39, 0xd6, 0x2d, - 0xf5, 0x48, 0x64, 0x71, 0xe2, 0x92, 0x47, 0xfd, 0x5e, 0xd5, 0xdd, 0x6e, 0x3a, 0xf5, 0x56, 0xce, - 0x18, 0x72, 0x02, 0xfd, 0x08, 0x90, 0x74, 0x7e, 0x9f, 0x30, 0xa1, 0x7b, 0x6a, 0xc9, 0xe3, 0xc2, - 0x25, 0xcf, 0xe7, 0x30, 0x23, 0x47, 0x41, 0xc7, 0x50, 0x4b, 0x2f, 0x2d, 0x2b, 0xe6, 0x9e, 0xee, - 0xab, 0x85, 0x20, 0x0d, 0x8d, 0xb9, 0xb7, 0xff, 0x23, 0xec, 0xae, 0x1d, 0x40, 0x79, 0xe4, 0xee, - 0xc9, 0x2c, 0xbd, 0x12, 0xe4, 0x4f, 0xf4, 0x39, 0x6c, 0x4e, 0xb1, 0x17, 0x93, 0xf4, 0x52, 0x48, - 0x06, 0xaf, 0xcb, 0xbf, 0x2b, 0x49, 0x81, 0xb5, 0x4d, 0xf8, 0x7f, 0x04, 0xba, 0x55, 0xa8, 0xa4, - 0x5d, 0xbb, 0xfd, 0xef, 0x2d, 0xd0, 0x56, 0xaf, 0x0e, 0xd4, 0x03, 0xcd, 0x0e, 0x02, 0xcf, 0x72, - 0x82, 0x07, 0x66, 0x85, 0x84, 0xd3, 0xc0, 0x51, 0xc2, 0x1f, 0xdd, 0xc0, 0xa6, 0xa4, 0x9c, 0x07, - 0x0f, 0x6c, 0xa8, 0x08, 0xe8, 0x12, 0x76, 0xec, 0x30, 0xb6, 0x62, 0x41, 0x3d, 0xfa, 0xd7, 0xa4, - 0x08, 0xca, 0x4a, 0xe3, 0xcb, 0xc2, 0x6c, 0xf6, 0xc2, 0x78, 0xbc, 0x80, 0x1a, 0x4d, 0x7b, 0x69, - 0x8c, 0xbe, 0x87, 0x3d, 0x1f, 0x3f, 0xca, 0x82, 0xb7, 0x63, 0xce, 0x09, 0x13, 0x16, 0x27, 0x3f, - 0xc7, 0x24, 0x12, 0x91, 0xba, 0x15, 0x37, 0x8d, 0x5f, 0xf9, 0xf8, 0xb1, 0x37, 0x9f, 0x35, 0xd2, - 0x49, 0xf4, 0x6b, 0x40, 0x92, 0x47, 0x1d, 0x8f, 0x58, 0x59, 0xe7, 0x8f, 0xd4, 0xb5, 0xb7, 0x69, - 0x68, 0x3e, 0x7e, 0x1c, 0x38, 0x1e, 0x19, 0x64, 0x71, 0x59, 0x2c, 0x12, 0x2d, 0x02, 0x81, 0xbd, - 0x1c, 0x7c, 0x53, 0xc1, 0x77, 0x7d, 0xfc, 0x38, 0x92, 0x33, 0x0b, 0xfc, 0x20, 0xc1, 0x87, 0x84, - 0x39, 0xb2, 0x35, 0x7a, 0x58, 0x10, 0x66, 0xcf, 0xf4, 0xad, 0x4f, 0x16, 0xbb, 0x8f, 0x1f, 0x87, - 0x09, 0xe9, 0x32, 0xe1, 0x28, 0xa3, 0x94, 0xad, 0x1a, 0xad, 0xa4, 0x46, 0x29, 0x5b, 0x37, 0x4a, - 0xd9, 0x9a, 0xd1, 0xed, 0xd4, 0x28, 0x65, 0x05, 0x46, 0x29, 0x5b, 0x33, 0x5a, 0xfd, 0xb4, 0x51, - 0xca, 0x56, 0x8c, 0xfe, 0x04, 0x4f, 0xd3, 0xd4, 0x2f, 0xed, 0x2d, 0x28, 0xa9, 0x97, 0xbf, 0x70, - 0x07, 0x2a, 0x7c, 0x7e, 0x7f, 0x11, 0x5f, 0x8b, 0xa1, 0x9b, 0xac, 0x7b, 0xe7, 0x64, 0x6b, 0x4a, - 0xf6, 0xab, 0xe2, 0x03, 0x28, 0x5b, 0x7a, 0x4e, 0x73, 0xc7, 0x59, 0x0e, 0x48, 0xab, 0xe9, 0x7d, - 0xbd, 0xa4, 0x59, 0xff, 0x88, 0xd5, 0xf4, 0xa2, 0x5f, 0xb2, 0xca, 0xd6, 0x62, 0xed, 0x9f, 0xa1, - 0x9e, 0x7f, 0x3d, 0x42, 0x6f, 0xa0, 0xae, 0x76, 0x4e, 0xde, 0x59, 0x41, 0x2c, 0x3e, 0x7d, 0x5a, - 0x6a, 0x12, 0x3e, 0x4a, 0xd0, 0xe8, 0x4b, 0x68, 0xa8, 0x22, 0x9d, 0xef, 0x63, 0x59, 0xed, 0x63, - 0x5d, 0xd6, 0x67, 0x16, 0x6b, 0x7f, 0x0b, 0x8d, 0xa5, 0xd7, 0x28, 0x74, 0x08, 0xd5, 0x05, 0xa3, - 0xa4, 0x18, 0x8b, 0x40, 0xfb, 0x1f, 0x25, 0x68, 0x2e, 0x9f, 0x29, 0x34, 0x86, 0x67, 0xd8, 0x75, - 0x39, 0x71, 0xd5, 0xd0, 0x7a, 0xa0, 0xcc, 0x09, 0x1e, 0x2c, 0x8f, 0x30, 0x57, 0xdc, 0x7d, 0xda, - 0xf1, 0x5e, 0x8e, 0xfb, 0x41, 0x51, 0x2f, 0x15, 0x13, 0x7d, 0x0b, 0x48, 0x60, 0xee, 0x12, 0xb1, - 0x76, 0xd6, 0x4b, 0xc6, 0x6e, 0x32, 0x93, 0x4f, 0xdd, 0x3f, 0x4b, 0x80, 0xd6, 0x0b, 0x02, 0x9d, - 0xc3, 0x71, 0xaa, 0x92, 0x55, 0x97, 0x1d, 0xc4, 0x4c, 0xc8, 0xf6, 0x63, 0x45, 0xc4, 0x0e, 0x98, - 0x93, 0x3e, 0xe3, 0x41, 0x02, 0x4b, 0x25, 0x7a, 0x12, 0x34, 0x24, 0xdc, 0x54, 0x10, 0xf4, 0x06, - 0xf6, 0x53, 0x95, 0xa2, 0x4e, 0x91, 0xa4, 0x55, 0x4f, 0x10, 0xeb, 0xcd, 0xa2, 0xfd, 0xb7, 0x32, - 0xec, 0xac, 0x14, 0x15, 0xfa, 0x03, 0x3c, 0x4f, 0x15, 0x1f, 0x38, 0x15, 0xe9, 0x4b, 0x45, 0xde, - 0x55, 0x53, 0x89, 0x3e, 0x4b, 0x40, 0x1f, 0x24, 0x46, 0xbd, 0x61, 0xe4, 0x3d, 0x1d, 0x2c, 0x29, - 0x04, 0xe1, 0x12, 0x7f, 0x47, 0xf1, 0xf7, 0x72, 0xfc, 0x9b, 0x30, 0xc7, 0xfe, 0x3d, 0x1c, 0xce, - 0xf3, 0x82, 0x9d, 0xf5, 0xe5, 0xb5, 0xfc, 0x33, 0x19, 0x04, 0x3b, 0x2b, 0xab, 0xbf, 0x9e, 0x67, - 0x44, 0xf1, 0x57, 0x16, 0xdf, 0x55, 0xec, 0x2f, 0x16, 0xec, 0xfc, 0xda, 0xed, 0x7f, 0x95, 0x01, - 0xad, 0x1f, 0x88, 0x9c, 0xa5, 0x48, 0xa6, 0x77, 0xcd, 0x52, 0x29, 0x6f, 0xc9, 0x24, 0x4c, 0xac, - 0x58, 0xea, 0xc2, 0x51, 0x9e, 0x1f, 0x62, 0xfb, 0x9e, 0x88, 0x25, 0x85, 0x9a, 0x52, 0xd8, 0x5f, - 0x28, 0x0c, 0x13, 0xcc, 0x42, 0xe3, 0x2d, 0xb4, 0xe6, 0x8f, 0x65, 0x13, 0x3a, 0x25, 0x05, 0xa9, - 0xa9, 0x2b, 0x95, 0xc3, 0xec, 0xe1, 0x12, 0xd8, 0x8a, 0x97, 0x3f, 0x42, 0x7b, 0x55, 0xa7, 0xc0, - 0x4f, 0x43, 0x29, 0x1d, 0x2d, 0x2b, 0xad, 0x7a, 0x6a, 0x53, 0xa8, 0xa4, 0xd9, 0x42, 0x2f, 0x61, - 0xe7, 0x36, 0xe0, 0x0f, 0x98, 0x3b, 0x52, 0x30, 0xe0, 0x42, 0x9e, 0xd0, 0x8d, 0x93, 0xaa, 0xd1, - 0x9c, 0x87, 0x87, 0x32, 0x8a, 0x5e, 0x40, 0x7d, 0xfe, 0x99, 0x22, 0xb0, 0x9b, 0xde, 0xd5, 0xb5, - 0x2c, 0x36, 0xc2, 0xee, 0xfc, 0x73, 0x71, 0x63, 0xf1, 0xb9, 0xd8, 0x36, 0xa1, 0x3a, 0xff, 0xb0, - 0x90, 0x57, 0xbf, 0x1d, 0xc6, 0x2a, 0xed, 0x25, 0x43, 0xfe, 0x44, 0x7b, 0x50, 0x51, 0x9d, 0xd4, - 0x9d, 0xa4, 0xe7, 0x70, 0x4b, 0x0e, 0xdf, 0x4d, 0xd0, 0x01, 0x54, 0x7d, 0xe2, 0x07, 0x7c, 0x26, - 0xa7, 0x36, 0xd4, 0xd4, 0x76, 0x12, 0x78, 0x37, 0xf9, 0xe6, 0x3f, 0x65, 0x40, 0xeb, 0x9f, 0x56, - 0xe8, 0x18, 0x0e, 0x06, 0xd7, 0xdd, 0x9b, 0xf1, 0xf5, 0xb9, 0x65, 0xf6, 0x8d, 0xf7, 0x83, 0x5e, - 0xdf, 0x1a, 0x5f, 0x9b, 0xc3, 0x7e, 0x6f, 0xf0, 0x76, 0xd0, 0x3f, 0xd7, 0x3e, 0x43, 0x3a, 0x7c, - 0xbe, 0x0a, 0xb8, 0x3a, 0x1b, 0x5c, 0x6a, 0xa5, 0x22, 0xaa, 0x9c, 0xb1, 0x64, 0xa8, 0xd7, 0xd7, - 0xca, 0xe8, 0x08, 0xf6, 0x57, 0x01, 0x3f, 0x5d, 0x0d, 0x87, 0x56, 0xdf, 0x30, 0x6e, 0x0c, 0x6d, - 0x03, 0xb5, 0xe0, 0xb0, 0x70, 0xfe, 0xaa, 0x6f, 0x9a, 0x67, 0xef, 0xfa, 0xda, 0x13, 0xd4, 0x86, - 0xa3, 0x42, 0x84, 0x39, 0xee, 0x9a, 0x3d, 0x63, 0xd0, 0xed, 0x6b, 0x9b, 0xe8, 0x05, 0x3c, 0x2f, - 0xc4, 0x0c, 0x8d, 0xbe, 0xd9, 0x97, 0x46, 0xb6, 0xd0, 0x57, 0xd0, 0x5a, 0x85, 0xf4, 0x2e, 0xce, - 0xae, 0xaf, 0xfb, 0x97, 0x0b, 0x54, 0x05, 0xed, 0xc3, 0x17, 0xab, 0xa8, 0x0f, 0x67, 0xc6, 0xd5, - 0x78, 0xa8, 0x55, 0xbf, 0x19, 0x40, 0x63, 0xe9, 0xbb, 0x47, 0x3e, 0x9b, 0x02, 0x5d, 0xbf, 0xb3, - 0xcc, 0xd1, 0xd9, 0x68, 0x6c, 0xae, 0xa4, 0xad, 0x06, 0x95, 0x74, 0x5e, 0x2b, 0xa9, 0xc1, 0xe8, - 0x66, 0x38, 0xec, 0x9f, 0x6b, 0xe5, 0xae, 0x0b, 0x7b, 0x76, 0xe0, 0x17, 0xdd, 0x4f, 0xdd, 0x7a, - 0xfa, 0x1a, 0x3e, 0x94, 0xfd, 0x79, 0x58, 0xfa, 0xf3, 0x9b, 0x14, 0xe4, 0x06, 0x1e, 0x66, 0x6e, - 0x27, 0xe0, 0xee, 0xa9, 0x4b, 0x98, 0xea, 0xde, 0xa7, 0xc9, 0x14, 0x0e, 0x69, 0xb4, 0xf4, 0xcf, - 0xc6, 0x0f, 0xf3, 0xc1, 0x64, 0x4b, 0x01, 0x7f, 0xf3, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2f, - 0xe1, 0xd6, 0xfa, 0x7b, 0x11, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1/embedded_assistant.pb.go b/vendor/google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1/embedded_assistant.pb.go deleted file mode 100644 index f3917faf..00000000 --- a/vendor/google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1/embedded_assistant.pb.go +++ /dev/null @@ -1,969 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/assistant/embedded/v1alpha1/embedded_assistant.proto - -/* -Package embedded is a generated protocol buffer package. - -It is generated from these files: - google/assistant/embedded/v1alpha1/embedded_assistant.proto - -It has these top-level messages: - ConverseConfig - AudioInConfig - AudioOutConfig - ConverseState - AudioOut - ConverseResult - ConverseRequest - ConverseResponse -*/ -package embedded - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Audio encoding of the data sent in the audio message. -// Audio must be one-channel (mono). The only language supported is "en-US". -type AudioInConfig_Encoding int32 - -const ( - // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][]. - AudioInConfig_ENCODING_UNSPECIFIED AudioInConfig_Encoding = 0 - // Uncompressed 16-bit signed little-endian samples (Linear PCM). - // This encoding includes no header, only the raw audio bytes. - AudioInConfig_LINEAR16 AudioInConfig_Encoding = 1 - // [`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio - // Codec) is the recommended encoding because it is - // lossless--therefore recognition is not compromised--and - // requires only about half the bandwidth of `LINEAR16`. This encoding - // includes the `FLAC` stream header followed by audio data. It supports - // 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are - // supported. - AudioInConfig_FLAC AudioInConfig_Encoding = 2 -) - -var AudioInConfig_Encoding_name = map[int32]string{ - 0: "ENCODING_UNSPECIFIED", - 1: "LINEAR16", - 2: "FLAC", -} -var AudioInConfig_Encoding_value = map[string]int32{ - "ENCODING_UNSPECIFIED": 0, - "LINEAR16": 1, - "FLAC": 2, -} - -func (x AudioInConfig_Encoding) String() string { - return proto.EnumName(AudioInConfig_Encoding_name, int32(x)) -} -func (AudioInConfig_Encoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// Audio encoding of the data returned in the audio message. All encodings are -// raw audio bytes with no header, except as indicated below. -type AudioOutConfig_Encoding int32 - -const ( - // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][]. - AudioOutConfig_ENCODING_UNSPECIFIED AudioOutConfig_Encoding = 0 - // Uncompressed 16-bit signed little-endian samples (Linear PCM). - AudioOutConfig_LINEAR16 AudioOutConfig_Encoding = 1 - // MP3 audio encoding. The sample rate is encoded in the payload. - AudioOutConfig_MP3 AudioOutConfig_Encoding = 2 - // Opus-encoded audio wrapped in an ogg container. The result will be a - // file which can be played natively on Android and in some browsers (such - // as Chrome). The quality of the encoding is considerably higher than MP3 - // while using the same bitrate. The sample rate is encoded in the payload. - AudioOutConfig_OPUS_IN_OGG AudioOutConfig_Encoding = 3 -) - -var AudioOutConfig_Encoding_name = map[int32]string{ - 0: "ENCODING_UNSPECIFIED", - 1: "LINEAR16", - 2: "MP3", - 3: "OPUS_IN_OGG", -} -var AudioOutConfig_Encoding_value = map[string]int32{ - "ENCODING_UNSPECIFIED": 0, - "LINEAR16": 1, - "MP3": 2, - "OPUS_IN_OGG": 3, -} - -func (x AudioOutConfig_Encoding) String() string { - return proto.EnumName(AudioOutConfig_Encoding_name, int32(x)) -} -func (AudioOutConfig_Encoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// Possible states of the microphone after a `Converse` RPC completes. -type ConverseResult_MicrophoneMode int32 - -const ( - // No mode specified. - ConverseResult_MICROPHONE_MODE_UNSPECIFIED ConverseResult_MicrophoneMode = 0 - // The service is not expecting a follow-on question from the user. - // The microphone should remain off until the user re-activates it. - ConverseResult_CLOSE_MICROPHONE ConverseResult_MicrophoneMode = 1 - // The service is expecting a follow-on question from the user. The - // microphone should be re-opened when the `AudioOut` playback completes - // (by starting a new `Converse` RPC call to send the new audio). - ConverseResult_DIALOG_FOLLOW_ON ConverseResult_MicrophoneMode = 2 -) - -var ConverseResult_MicrophoneMode_name = map[int32]string{ - 0: "MICROPHONE_MODE_UNSPECIFIED", - 1: "CLOSE_MICROPHONE", - 2: "DIALOG_FOLLOW_ON", -} -var ConverseResult_MicrophoneMode_value = map[string]int32{ - "MICROPHONE_MODE_UNSPECIFIED": 0, - "CLOSE_MICROPHONE": 1, - "DIALOG_FOLLOW_ON": 2, -} - -func (x ConverseResult_MicrophoneMode) String() string { - return proto.EnumName(ConverseResult_MicrophoneMode_name, int32(x)) -} -func (ConverseResult_MicrophoneMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 0} -} - -// Indicates the type of event. -type ConverseResponse_EventType int32 - -const ( - // No event specified. - ConverseResponse_EVENT_TYPE_UNSPECIFIED ConverseResponse_EventType = 0 - // This event indicates that the server has detected the end of the user's - // speech utterance and expects no additional speech. Therefore, the server - // will not process additional audio (although it may subsequently return - // additional results). The client should stop sending additional audio - // data, half-close the gRPC connection, and wait for any additional results - // until the server closes the gRPC connection. - ConverseResponse_END_OF_UTTERANCE ConverseResponse_EventType = 1 -) - -var ConverseResponse_EventType_name = map[int32]string{ - 0: "EVENT_TYPE_UNSPECIFIED", - 1: "END_OF_UTTERANCE", -} -var ConverseResponse_EventType_value = map[string]int32{ - "EVENT_TYPE_UNSPECIFIED": 0, - "END_OF_UTTERANCE": 1, -} - -func (x ConverseResponse_EventType) String() string { - return proto.EnumName(ConverseResponse_EventType_name, int32(x)) -} -func (ConverseResponse_EventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{7, 0} -} - -// Specifies how to process the `ConverseRequest` messages. -type ConverseConfig struct { - // *Required* Specifies how to process the subsequent incoming audio. - AudioInConfig *AudioInConfig `protobuf:"bytes,1,opt,name=audio_in_config,json=audioInConfig" json:"audio_in_config,omitempty"` - // *Required* Specifies how to format the audio that will be returned. - AudioOutConfig *AudioOutConfig `protobuf:"bytes,2,opt,name=audio_out_config,json=audioOutConfig" json:"audio_out_config,omitempty"` - // *Required* Represents the current dialog state. - ConverseState *ConverseState `protobuf:"bytes,3,opt,name=converse_state,json=converseState" json:"converse_state,omitempty"` -} - -func (m *ConverseConfig) Reset() { *m = ConverseConfig{} } -func (m *ConverseConfig) String() string { return proto.CompactTextString(m) } -func (*ConverseConfig) ProtoMessage() {} -func (*ConverseConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ConverseConfig) GetAudioInConfig() *AudioInConfig { - if m != nil { - return m.AudioInConfig - } - return nil -} - -func (m *ConverseConfig) GetAudioOutConfig() *AudioOutConfig { - if m != nil { - return m.AudioOutConfig - } - return nil -} - -func (m *ConverseConfig) GetConverseState() *ConverseState { - if m != nil { - return m.ConverseState - } - return nil -} - -// Specifies how to process the `audio_in` data that will be provided in -// subsequent requests. For recommended settings, see the Google Assistant SDK -// [best practices](https://developers.google.com/assistant/sdk/develop/grpc/best-practices/audio). -type AudioInConfig struct { - // *Required* Encoding of audio data sent in all `audio_in` messages. - Encoding AudioInConfig_Encoding `protobuf:"varint,1,opt,name=encoding,enum=google.assistant.embedded.v1alpha1.AudioInConfig_Encoding" json:"encoding,omitempty"` - // *Required* Sample rate (in Hertz) of the audio data sent in all `audio_in` - // messages. Valid values are from 16000-24000, but 16000 is optimal. - // For best results, set the sampling rate of the audio source to 16000 Hz. - // If that's not possible, use the native sample rate of the audio source - // (instead of re-sampling). - SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"` -} - -func (m *AudioInConfig) Reset() { *m = AudioInConfig{} } -func (m *AudioInConfig) String() string { return proto.CompactTextString(m) } -func (*AudioInConfig) ProtoMessage() {} -func (*AudioInConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *AudioInConfig) GetEncoding() AudioInConfig_Encoding { - if m != nil { - return m.Encoding - } - return AudioInConfig_ENCODING_UNSPECIFIED -} - -func (m *AudioInConfig) GetSampleRateHertz() int32 { - if m != nil { - return m.SampleRateHertz - } - return 0 -} - -// Specifies the desired format for the server to use when it returns -// `audio_out` messages. -type AudioOutConfig struct { - // *Required* The encoding of audio data to be returned in all `audio_out` - // messages. - Encoding AudioOutConfig_Encoding `protobuf:"varint,1,opt,name=encoding,enum=google.assistant.embedded.v1alpha1.AudioOutConfig_Encoding" json:"encoding,omitempty"` - // *Required* The sample rate in Hertz of the audio data returned in - // `audio_out` messages. Valid values are: 16000-24000. - SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"` - // *Required* Current volume setting of the device's audio output. - // Valid values are 1 to 100 (corresponding to 1% to 100%). - VolumePercentage int32 `protobuf:"varint,3,opt,name=volume_percentage,json=volumePercentage" json:"volume_percentage,omitempty"` -} - -func (m *AudioOutConfig) Reset() { *m = AudioOutConfig{} } -func (m *AudioOutConfig) String() string { return proto.CompactTextString(m) } -func (*AudioOutConfig) ProtoMessage() {} -func (*AudioOutConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *AudioOutConfig) GetEncoding() AudioOutConfig_Encoding { - if m != nil { - return m.Encoding - } - return AudioOutConfig_ENCODING_UNSPECIFIED -} - -func (m *AudioOutConfig) GetSampleRateHertz() int32 { - if m != nil { - return m.SampleRateHertz - } - return 0 -} - -func (m *AudioOutConfig) GetVolumePercentage() int32 { - if m != nil { - return m.VolumePercentage - } - return 0 -} - -// Provides information about the current dialog state. -type ConverseState struct { - // *Required* The `conversation_state` value returned in the prior - // `ConverseResponse`. Omit (do not set the field) if there was no prior - // `ConverseResponse`. If there was a prior `ConverseResponse`, do not omit - // this field; doing so will end that conversation (and this new request will - // start a new conversation). - ConversationState []byte `protobuf:"bytes,1,opt,name=conversation_state,json=conversationState,proto3" json:"conversation_state,omitempty"` -} - -func (m *ConverseState) Reset() { *m = ConverseState{} } -func (m *ConverseState) String() string { return proto.CompactTextString(m) } -func (*ConverseState) ProtoMessage() {} -func (*ConverseState) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ConverseState) GetConversationState() []byte { - if m != nil { - return m.ConversationState - } - return nil -} - -// The audio containing the assistant's response to the query. Sequential chunks -// of audio data are received in sequential `ConverseResponse` messages. -type AudioOut struct { - // *Output-only* The audio data containing the assistant's response to the - // query. Sequential chunks of audio data are received in sequential - // `ConverseResponse` messages. - AudioData []byte `protobuf:"bytes,1,opt,name=audio_data,json=audioData,proto3" json:"audio_data,omitempty"` -} - -func (m *AudioOut) Reset() { *m = AudioOut{} } -func (m *AudioOut) String() string { return proto.CompactTextString(m) } -func (*AudioOut) ProtoMessage() {} -func (*AudioOut) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *AudioOut) GetAudioData() []byte { - if m != nil { - return m.AudioData - } - return nil -} - -// The semantic result for the user's spoken query. -type ConverseResult struct { - // *Output-only* The recognized transcript of what the user said. - SpokenRequestText string `protobuf:"bytes,1,opt,name=spoken_request_text,json=spokenRequestText" json:"spoken_request_text,omitempty"` - // *Output-only* The text of the assistant's spoken response. This is only - // returned for an IFTTT action. - SpokenResponseText string `protobuf:"bytes,2,opt,name=spoken_response_text,json=spokenResponseText" json:"spoken_response_text,omitempty"` - // *Output-only* State information for subsequent `ConverseRequest`. This - // value should be saved in the client and returned in the - // `conversation_state` with the next `ConverseRequest`. (The client does not - // need to interpret or otherwise use this value.) There is no need to save - // this information across device restarts. - ConversationState []byte `protobuf:"bytes,3,opt,name=conversation_state,json=conversationState,proto3" json:"conversation_state,omitempty"` - // *Output-only* Specifies the mode of the microphone after this `Converse` - // RPC is processed. - MicrophoneMode ConverseResult_MicrophoneMode `protobuf:"varint,4,opt,name=microphone_mode,json=microphoneMode,enum=google.assistant.embedded.v1alpha1.ConverseResult_MicrophoneMode" json:"microphone_mode,omitempty"` - // *Output-only* Updated volume level. The value will be 0 or omitted - // (indicating no change) unless a voice command such as "Increase the volume" - // or "Set volume level 4" was recognized, in which case the value will be - // between 1 and 100 (corresponding to the new volume level of 1% to 100%). - // Typically, a client should use this volume level when playing the - // `audio_out` data, and retain this value as the current volume level and - // supply it in the `AudioOutConfig` of the next `ConverseRequest`. (Some - // clients may also implement other ways to allow the current volume level to - // be changed, for example, by providing a knob that the user can turn.) - VolumePercentage int32 `protobuf:"varint,5,opt,name=volume_percentage,json=volumePercentage" json:"volume_percentage,omitempty"` -} - -func (m *ConverseResult) Reset() { *m = ConverseResult{} } -func (m *ConverseResult) String() string { return proto.CompactTextString(m) } -func (*ConverseResult) ProtoMessage() {} -func (*ConverseResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ConverseResult) GetSpokenRequestText() string { - if m != nil { - return m.SpokenRequestText - } - return "" -} - -func (m *ConverseResult) GetSpokenResponseText() string { - if m != nil { - return m.SpokenResponseText - } - return "" -} - -func (m *ConverseResult) GetConversationState() []byte { - if m != nil { - return m.ConversationState - } - return nil -} - -func (m *ConverseResult) GetMicrophoneMode() ConverseResult_MicrophoneMode { - if m != nil { - return m.MicrophoneMode - } - return ConverseResult_MICROPHONE_MODE_UNSPECIFIED -} - -func (m *ConverseResult) GetVolumePercentage() int32 { - if m != nil { - return m.VolumePercentage - } - return 0 -} - -// The top-level message sent by the client. Clients must send at least two, and -// typically numerous `ConverseRequest` messages. The first message must -// contain a `config` message and must not contain `audio_in` data. All -// subsequent messages must contain `audio_in` data and must not contain a -// `config` message. -type ConverseRequest struct { - // Exactly one of these fields must be specified in each `ConverseRequest`. - // - // Types that are valid to be assigned to ConverseRequest: - // *ConverseRequest_Config - // *ConverseRequest_AudioIn - ConverseRequest isConverseRequest_ConverseRequest `protobuf_oneof:"converse_request"` -} - -func (m *ConverseRequest) Reset() { *m = ConverseRequest{} } -func (m *ConverseRequest) String() string { return proto.CompactTextString(m) } -func (*ConverseRequest) ProtoMessage() {} -func (*ConverseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -type isConverseRequest_ConverseRequest interface { - isConverseRequest_ConverseRequest() -} - -type ConverseRequest_Config struct { - Config *ConverseConfig `protobuf:"bytes,1,opt,name=config,oneof"` -} -type ConverseRequest_AudioIn struct { - AudioIn []byte `protobuf:"bytes,2,opt,name=audio_in,json=audioIn,proto3,oneof"` -} - -func (*ConverseRequest_Config) isConverseRequest_ConverseRequest() {} -func (*ConverseRequest_AudioIn) isConverseRequest_ConverseRequest() {} - -func (m *ConverseRequest) GetConverseRequest() isConverseRequest_ConverseRequest { - if m != nil { - return m.ConverseRequest - } - return nil -} - -func (m *ConverseRequest) GetConfig() *ConverseConfig { - if x, ok := m.GetConverseRequest().(*ConverseRequest_Config); ok { - return x.Config - } - return nil -} - -func (m *ConverseRequest) GetAudioIn() []byte { - if x, ok := m.GetConverseRequest().(*ConverseRequest_AudioIn); ok { - return x.AudioIn - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ConverseRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ConverseRequest_OneofMarshaler, _ConverseRequest_OneofUnmarshaler, _ConverseRequest_OneofSizer, []interface{}{ - (*ConverseRequest_Config)(nil), - (*ConverseRequest_AudioIn)(nil), - } -} - -func _ConverseRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ConverseRequest) - // converse_request - switch x := m.ConverseRequest.(type) { - case *ConverseRequest_Config: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Config); err != nil { - return err - } - case *ConverseRequest_AudioIn: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AudioIn) - case nil: - default: - return fmt.Errorf("ConverseRequest.ConverseRequest has unexpected type %T", x) - } - return nil -} - -func _ConverseRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ConverseRequest) - switch tag { - case 1: // converse_request.config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ConverseConfig) - err := b.DecodeMessage(msg) - m.ConverseRequest = &ConverseRequest_Config{msg} - return true, err - case 2: // converse_request.audio_in - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ConverseRequest = &ConverseRequest_AudioIn{x} - return true, err - default: - return false, nil - } -} - -func _ConverseRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ConverseRequest) - // converse_request - switch x := m.ConverseRequest.(type) { - case *ConverseRequest_Config: - s := proto.Size(x.Config) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ConverseRequest_AudioIn: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AudioIn))) - n += len(x.AudioIn) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The top-level message received by the client. A series of one or more -// `ConverseResponse` messages are streamed back to the client. -type ConverseResponse struct { - // Exactly one of these fields will be populated in each `ConverseResponse`. - // - // Types that are valid to be assigned to ConverseResponse: - // *ConverseResponse_Error - // *ConverseResponse_EventType_ - // *ConverseResponse_AudioOut - // *ConverseResponse_Result - ConverseResponse isConverseResponse_ConverseResponse `protobuf_oneof:"converse_response"` -} - -func (m *ConverseResponse) Reset() { *m = ConverseResponse{} } -func (m *ConverseResponse) String() string { return proto.CompactTextString(m) } -func (*ConverseResponse) ProtoMessage() {} -func (*ConverseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -type isConverseResponse_ConverseResponse interface { - isConverseResponse_ConverseResponse() -} - -type ConverseResponse_Error struct { - Error *google_rpc.Status `protobuf:"bytes,1,opt,name=error,oneof"` -} -type ConverseResponse_EventType_ struct { - EventType ConverseResponse_EventType `protobuf:"varint,2,opt,name=event_type,json=eventType,enum=google.assistant.embedded.v1alpha1.ConverseResponse_EventType,oneof"` -} -type ConverseResponse_AudioOut struct { - AudioOut *AudioOut `protobuf:"bytes,3,opt,name=audio_out,json=audioOut,oneof"` -} -type ConverseResponse_Result struct { - Result *ConverseResult `protobuf:"bytes,5,opt,name=result,oneof"` -} - -func (*ConverseResponse_Error) isConverseResponse_ConverseResponse() {} -func (*ConverseResponse_EventType_) isConverseResponse_ConverseResponse() {} -func (*ConverseResponse_AudioOut) isConverseResponse_ConverseResponse() {} -func (*ConverseResponse_Result) isConverseResponse_ConverseResponse() {} - -func (m *ConverseResponse) GetConverseResponse() isConverseResponse_ConverseResponse { - if m != nil { - return m.ConverseResponse - } - return nil -} - -func (m *ConverseResponse) GetError() *google_rpc.Status { - if x, ok := m.GetConverseResponse().(*ConverseResponse_Error); ok { - return x.Error - } - return nil -} - -func (m *ConverseResponse) GetEventType() ConverseResponse_EventType { - if x, ok := m.GetConverseResponse().(*ConverseResponse_EventType_); ok { - return x.EventType - } - return ConverseResponse_EVENT_TYPE_UNSPECIFIED -} - -func (m *ConverseResponse) GetAudioOut() *AudioOut { - if x, ok := m.GetConverseResponse().(*ConverseResponse_AudioOut); ok { - return x.AudioOut - } - return nil -} - -func (m *ConverseResponse) GetResult() *ConverseResult { - if x, ok := m.GetConverseResponse().(*ConverseResponse_Result); ok { - return x.Result - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ConverseResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ConverseResponse_OneofMarshaler, _ConverseResponse_OneofUnmarshaler, _ConverseResponse_OneofSizer, []interface{}{ - (*ConverseResponse_Error)(nil), - (*ConverseResponse_EventType_)(nil), - (*ConverseResponse_AudioOut)(nil), - (*ConverseResponse_Result)(nil), - } -} - -func _ConverseResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ConverseResponse) - // converse_response - switch x := m.ConverseResponse.(type) { - case *ConverseResponse_Error: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Error); err != nil { - return err - } - case *ConverseResponse_EventType_: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.EventType)) - case *ConverseResponse_AudioOut: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AudioOut); err != nil { - return err - } - case *ConverseResponse_Result: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Result); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ConverseResponse.ConverseResponse has unexpected type %T", x) - } - return nil -} - -func _ConverseResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ConverseResponse) - switch tag { - case 1: // converse_response.error - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_rpc.Status) - err := b.DecodeMessage(msg) - m.ConverseResponse = &ConverseResponse_Error{msg} - return true, err - case 2: // converse_response.event_type - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ConverseResponse = &ConverseResponse_EventType_{ConverseResponse_EventType(x)} - return true, err - case 3: // converse_response.audio_out - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AudioOut) - err := b.DecodeMessage(msg) - m.ConverseResponse = &ConverseResponse_AudioOut{msg} - return true, err - case 5: // converse_response.result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ConverseResult) - err := b.DecodeMessage(msg) - m.ConverseResponse = &ConverseResponse_Result{msg} - return true, err - default: - return false, nil - } -} - -func _ConverseResponse_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ConverseResponse) - // converse_response - switch x := m.ConverseResponse.(type) { - case *ConverseResponse_Error: - s := proto.Size(x.Error) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ConverseResponse_EventType_: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.EventType)) - case *ConverseResponse_AudioOut: - s := proto.Size(x.AudioOut) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ConverseResponse_Result: - s := proto.Size(x.Result) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*ConverseConfig)(nil), "google.assistant.embedded.v1alpha1.ConverseConfig") - proto.RegisterType((*AudioInConfig)(nil), "google.assistant.embedded.v1alpha1.AudioInConfig") - proto.RegisterType((*AudioOutConfig)(nil), "google.assistant.embedded.v1alpha1.AudioOutConfig") - proto.RegisterType((*ConverseState)(nil), "google.assistant.embedded.v1alpha1.ConverseState") - proto.RegisterType((*AudioOut)(nil), "google.assistant.embedded.v1alpha1.AudioOut") - proto.RegisterType((*ConverseResult)(nil), "google.assistant.embedded.v1alpha1.ConverseResult") - proto.RegisterType((*ConverseRequest)(nil), "google.assistant.embedded.v1alpha1.ConverseRequest") - proto.RegisterType((*ConverseResponse)(nil), "google.assistant.embedded.v1alpha1.ConverseResponse") - proto.RegisterEnum("google.assistant.embedded.v1alpha1.AudioInConfig_Encoding", AudioInConfig_Encoding_name, AudioInConfig_Encoding_value) - proto.RegisterEnum("google.assistant.embedded.v1alpha1.AudioOutConfig_Encoding", AudioOutConfig_Encoding_name, AudioOutConfig_Encoding_value) - proto.RegisterEnum("google.assistant.embedded.v1alpha1.ConverseResult_MicrophoneMode", ConverseResult_MicrophoneMode_name, ConverseResult_MicrophoneMode_value) - proto.RegisterEnum("google.assistant.embedded.v1alpha1.ConverseResponse_EventType", ConverseResponse_EventType_name, ConverseResponse_EventType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for EmbeddedAssistant service - -type EmbeddedAssistantClient interface { - // Initiates or continues a conversation with the embedded assistant service. - // Each call performs one round-trip, sending an audio request to the service - // and receiving the audio response. Uses bidirectional streaming to receive - // results, such as the `END_OF_UTTERANCE` event, while sending audio. - // - // A conversation is one or more gRPC connections, each consisting of several - // streamed requests and responses. - // For example, the user says *Add to my shopping list* and the assistant - // responds *What do you want to add?*. The sequence of streamed requests and - // responses in the first gRPC message could be: - // - // * ConverseRequest.config - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseResponse.event_type.END_OF_UTTERANCE - // * ConverseResponse.result.microphone_mode.DIALOG_FOLLOW_ON - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // - // The user then says *bagels* and the assistant responds - // *OK, I've added bagels to your shopping list*. This is sent as another gRPC - // connection call to the `Converse` method, again with streamed requests and - // responses, such as: - // - // * ConverseRequest.config - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseResponse.event_type.END_OF_UTTERANCE - // * ConverseResponse.result.microphone_mode.CLOSE_MICROPHONE - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // - // Although the precise order of responses is not guaranteed, sequential - // ConverseResponse.audio_out messages will always contain sequential portions - // of audio. - Converse(ctx context.Context, opts ...grpc.CallOption) (EmbeddedAssistant_ConverseClient, error) -} - -type embeddedAssistantClient struct { - cc *grpc.ClientConn -} - -func NewEmbeddedAssistantClient(cc *grpc.ClientConn) EmbeddedAssistantClient { - return &embeddedAssistantClient{cc} -} - -func (c *embeddedAssistantClient) Converse(ctx context.Context, opts ...grpc.CallOption) (EmbeddedAssistant_ConverseClient, error) { - stream, err := grpc.NewClientStream(ctx, &_EmbeddedAssistant_serviceDesc.Streams[0], c.cc, "/google.assistant.embedded.v1alpha1.EmbeddedAssistant/Converse", opts...) - if err != nil { - return nil, err - } - x := &embeddedAssistantConverseClient{stream} - return x, nil -} - -type EmbeddedAssistant_ConverseClient interface { - Send(*ConverseRequest) error - Recv() (*ConverseResponse, error) - grpc.ClientStream -} - -type embeddedAssistantConverseClient struct { - grpc.ClientStream -} - -func (x *embeddedAssistantConverseClient) Send(m *ConverseRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *embeddedAssistantConverseClient) Recv() (*ConverseResponse, error) { - m := new(ConverseResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for EmbeddedAssistant service - -type EmbeddedAssistantServer interface { - // Initiates or continues a conversation with the embedded assistant service. - // Each call performs one round-trip, sending an audio request to the service - // and receiving the audio response. Uses bidirectional streaming to receive - // results, such as the `END_OF_UTTERANCE` event, while sending audio. - // - // A conversation is one or more gRPC connections, each consisting of several - // streamed requests and responses. - // For example, the user says *Add to my shopping list* and the assistant - // responds *What do you want to add?*. The sequence of streamed requests and - // responses in the first gRPC message could be: - // - // * ConverseRequest.config - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseResponse.event_type.END_OF_UTTERANCE - // * ConverseResponse.result.microphone_mode.DIALOG_FOLLOW_ON - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // - // The user then says *bagels* and the assistant responds - // *OK, I've added bagels to your shopping list*. This is sent as another gRPC - // connection call to the `Converse` method, again with streamed requests and - // responses, such as: - // - // * ConverseRequest.config - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseRequest.audio_in - // * ConverseResponse.event_type.END_OF_UTTERANCE - // * ConverseResponse.result.microphone_mode.CLOSE_MICROPHONE - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // * ConverseResponse.audio_out - // - // Although the precise order of responses is not guaranteed, sequential - // ConverseResponse.audio_out messages will always contain sequential portions - // of audio. - Converse(EmbeddedAssistant_ConverseServer) error -} - -func RegisterEmbeddedAssistantServer(s *grpc.Server, srv EmbeddedAssistantServer) { - s.RegisterService(&_EmbeddedAssistant_serviceDesc, srv) -} - -func _EmbeddedAssistant_Converse_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(EmbeddedAssistantServer).Converse(&embeddedAssistantConverseServer{stream}) -} - -type EmbeddedAssistant_ConverseServer interface { - Send(*ConverseResponse) error - Recv() (*ConverseRequest, error) - grpc.ServerStream -} - -type embeddedAssistantConverseServer struct { - grpc.ServerStream -} - -func (x *embeddedAssistantConverseServer) Send(m *ConverseResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *embeddedAssistantConverseServer) Recv() (*ConverseRequest, error) { - m := new(ConverseRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _EmbeddedAssistant_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.assistant.embedded.v1alpha1.EmbeddedAssistant", - HandlerType: (*EmbeddedAssistantServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "Converse", - Handler: _EmbeddedAssistant_Converse_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/assistant/embedded/v1alpha1/embedded_assistant.proto", -} - -func init() { - proto.RegisterFile("google/assistant/embedded/v1alpha1/embedded_assistant.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 892 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x51, 0x73, 0xdb, 0x44, - 0x10, 0xb6, 0xec, 0xa6, 0xb5, 0xb7, 0x89, 0x2c, 0x5f, 0x33, 0x90, 0x49, 0x61, 0x60, 0xf4, 0xc0, - 0x94, 0x02, 0x72, 0xe3, 0x30, 0x3c, 0x10, 0xe8, 0x8c, 0x63, 0x2b, 0xb1, 0xc1, 0x96, 0x3c, 0x67, - 0xa7, 0xa5, 0x0c, 0xcc, 0xcd, 0x55, 0x3e, 0x1c, 0x81, 0x7d, 0x27, 0xa4, 0x73, 0xa6, 0xe1, 0x07, - 0xf0, 0xd8, 0xe1, 0x95, 0x67, 0x7e, 0x11, 0xff, 0x88, 0xd1, 0x9d, 0xa4, 0xd8, 0x90, 0x42, 0x1c, - 0x1e, 0x6f, 0xf7, 0xbe, 0x4f, 0xbb, 0xdf, 0x7e, 0xb7, 0x23, 0x38, 0x9a, 0x09, 0x31, 0x9b, 0xb3, - 0x26, 0x4d, 0x92, 0x30, 0x91, 0x94, 0xcb, 0x26, 0x5b, 0xbc, 0x64, 0xd3, 0x29, 0x9b, 0x36, 0x2f, - 0x0e, 0xe8, 0x3c, 0x3a, 0xa7, 0x07, 0x45, 0x84, 0x14, 0x97, 0x9c, 0x28, 0x16, 0x52, 0x20, 0x5b, - 0x83, 0x9d, 0xab, 0x78, 0x7e, 0xd5, 0xc9, 0xc1, 0xfb, 0xef, 0xe4, 0x1f, 0x88, 0xc2, 0x26, 0xe5, - 0x5c, 0x48, 0x2a, 0x43, 0xc1, 0x13, 0xcd, 0xb0, 0xff, 0x76, 0x96, 0x8d, 0xa3, 0xa0, 0x99, 0x48, - 0x2a, 0x97, 0x59, 0xc2, 0xfe, 0xa3, 0x0c, 0x66, 0x47, 0xf0, 0x0b, 0x16, 0x27, 0xac, 0x23, 0xf8, - 0x0f, 0xe1, 0x0c, 0xbd, 0x80, 0x3a, 0x5d, 0x4e, 0x43, 0x41, 0x42, 0x4e, 0x02, 0x15, 0xda, 0x33, - 0xde, 0x37, 0x1e, 0xdd, 0x6f, 0x1d, 0x38, 0xff, 0x5d, 0x87, 0xd3, 0x4e, 0xa1, 0x7d, 0xae, 0xb9, - 0xf0, 0x0e, 0x5d, 0x3d, 0xa2, 0xef, 0xc0, 0xd2, 0xd4, 0x62, 0x29, 0x73, 0xee, 0xb2, 0xe2, 0x6e, - 0xdd, 0x98, 0xdb, 0x5f, 0xca, 0x8c, 0xdc, 0xa4, 0x6b, 0x67, 0xf4, 0x0d, 0x98, 0x41, 0xd6, 0x0a, - 0x49, 0x9b, 0x64, 0x7b, 0x95, 0x9b, 0xd7, 0x9d, 0x8b, 0x30, 0x4e, 0x81, 0x78, 0x27, 0x58, 0x3d, - 0xda, 0x7f, 0x1a, 0xb0, 0xb3, 0xd6, 0x18, 0x7a, 0x06, 0x55, 0xc6, 0x03, 0x31, 0x0d, 0xb9, 0x56, - 0xc7, 0x6c, 0x7d, 0xbe, 0xb1, 0x3a, 0x8e, 0x9b, 0x31, 0xe0, 0x82, 0x0b, 0x3d, 0x86, 0x46, 0x42, - 0x17, 0xd1, 0x9c, 0x91, 0x98, 0x4a, 0x46, 0xce, 0x59, 0x2c, 0x7f, 0x51, 0x12, 0x6d, 0xe1, 0xba, - 0x4e, 0x60, 0x2a, 0x59, 0x2f, 0x0d, 0xdb, 0x5f, 0x40, 0x35, 0x67, 0x40, 0x7b, 0xb0, 0xeb, 0x7a, - 0x1d, 0xbf, 0xdb, 0xf7, 0x4e, 0xc9, 0x99, 0x37, 0x1e, 0xb9, 0x9d, 0xfe, 0x49, 0xdf, 0xed, 0x5a, - 0x25, 0xb4, 0x0d, 0xd5, 0x41, 0xdf, 0x73, 0xdb, 0xf8, 0xe0, 0x33, 0xcb, 0x40, 0x55, 0xb8, 0x73, - 0x32, 0x68, 0x77, 0xac, 0xb2, 0xfd, 0x5b, 0x19, 0xcc, 0x75, 0x41, 0xd1, 0xf3, 0x7f, 0x34, 0x75, - 0xb4, 0xf9, 0x58, 0xfe, 0x67, 0x57, 0xe8, 0x23, 0x68, 0x5c, 0x88, 0xf9, 0x72, 0xc1, 0x48, 0xc4, - 0xe2, 0x80, 0x71, 0x49, 0x67, 0x7a, 0x90, 0x5b, 0xd8, 0xd2, 0x89, 0x51, 0x11, 0xb7, 0x07, 0xb7, - 0x90, 0xe0, 0x1e, 0x54, 0x86, 0xa3, 0x43, 0xab, 0x8c, 0xea, 0x70, 0xdf, 0x1f, 0x9d, 0x8d, 0x49, - 0xdf, 0x23, 0xfe, 0xe9, 0xa9, 0x55, 0xb1, 0x9f, 0xc2, 0xce, 0x9a, 0x0d, 0xd0, 0x27, 0x80, 0x32, - 0x23, 0xa8, 0xd7, 0x94, 0xb9, 0x2a, 0x95, 0x66, 0x1b, 0x37, 0x56, 0x33, 0xda, 0x26, 0x1f, 0x42, - 0x35, 0xd7, 0x02, 0xbd, 0x0b, 0xa0, 0xad, 0x3e, 0xa5, 0x92, 0x66, 0x90, 0x9a, 0x8a, 0x74, 0xa9, - 0xa4, 0xf6, 0xef, 0x95, 0xab, 0x77, 0x87, 0x59, 0xb2, 0x9c, 0x4b, 0xe4, 0xc0, 0x83, 0x24, 0x12, - 0x3f, 0x31, 0x4e, 0x62, 0xf6, 0xf3, 0x92, 0x25, 0x92, 0x48, 0xf6, 0x4a, 0x2a, 0x68, 0x0d, 0x37, - 0x74, 0x0a, 0xeb, 0xcc, 0x84, 0xbd, 0x92, 0xe8, 0x09, 0xec, 0x16, 0xf7, 0x93, 0x48, 0xf0, 0x84, - 0x69, 0x40, 0x59, 0x01, 0x50, 0x0e, 0xd0, 0x29, 0x85, 0xb8, 0xbe, 0x9d, 0xca, 0x1b, 0xda, 0x41, - 0x3f, 0x42, 0x7d, 0x11, 0x06, 0xb1, 0x88, 0xce, 0x05, 0x67, 0x64, 0x21, 0xa6, 0x6c, 0xef, 0x8e, - 0x72, 0x45, 0x7b, 0x93, 0x07, 0xa5, 0xbb, 0x73, 0x86, 0x05, 0xd3, 0x50, 0x4c, 0x19, 0x36, 0x17, - 0x6b, 0xe7, 0xeb, 0xa7, 0xbe, 0xf5, 0x86, 0xa9, 0x7f, 0x0f, 0xe6, 0x3a, 0x1d, 0x7a, 0x0f, 0x1e, - 0x0e, 0xfb, 0x1d, 0xec, 0x8f, 0x7a, 0xbe, 0xe7, 0x92, 0xa1, 0xdf, 0x75, 0xff, 0x66, 0x81, 0x5d, - 0xb0, 0x3a, 0x03, 0x7f, 0xec, 0x92, 0xab, 0x6b, 0x96, 0x91, 0x46, 0xbb, 0xfd, 0xf6, 0xc0, 0x3f, - 0x25, 0x27, 0xfe, 0x60, 0xe0, 0x3f, 0x27, 0xbe, 0x97, 0xbe, 0x0c, 0x03, 0xea, 0x57, 0xd5, 0x2b, - 0xc1, 0xd1, 0x00, 0xee, 0xae, 0xed, 0xc2, 0xd6, 0x26, 0x12, 0xe8, 0x87, 0xd1, 0x2b, 0xe1, 0x8c, - 0x03, 0x3d, 0x84, 0x6a, 0xbe, 0x62, 0xd5, 0xb8, 0xb6, 0x7b, 0x25, 0x7c, 0x2f, 0x5b, 0x95, 0xc7, - 0x08, 0xac, 0x62, 0x8d, 0x65, 0x4e, 0xb0, 0x5f, 0x57, 0xc0, 0x5a, 0x11, 0x54, 0x8d, 0x14, 0x3d, - 0x86, 0x2d, 0x16, 0xc7, 0x22, 0xce, 0x4a, 0x42, 0x79, 0x49, 0x71, 0x14, 0x38, 0x63, 0xb5, 0xe4, - 0x7b, 0x25, 0xac, 0xaf, 0x20, 0x02, 0xc0, 0x2e, 0x18, 0x97, 0x44, 0x5e, 0x46, 0x4c, 0x7d, 0xd3, - 0x6c, 0x3d, 0xdd, 0x70, 0x8c, 0xea, 0xab, 0x8e, 0x9b, 0xd2, 0x4c, 0x2e, 0x23, 0xd6, 0x2b, 0xe1, - 0x1a, 0xcb, 0x0f, 0xe8, 0x6b, 0xa8, 0x15, 0xab, 0x3d, 0xdb, 0xbb, 0x1f, 0x6f, 0xb2, 0x3c, 0x7a, - 0x25, 0x5c, 0xcd, 0xf7, 0x79, 0xaa, 0x76, 0xac, 0x6c, 0xa3, 0x2c, 0xb0, 0xa1, 0xda, 0xda, 0x70, - 0xa9, 0xda, 0x9a, 0xc3, 0xfe, 0x12, 0x6a, 0x45, 0xd1, 0x68, 0x1f, 0xde, 0x72, 0x9f, 0xb9, 0xde, - 0x84, 0x4c, 0x5e, 0x8c, 0xae, 0x31, 0x89, 0xeb, 0x75, 0x89, 0x7f, 0x42, 0xce, 0x26, 0x13, 0x17, - 0xb7, 0xbd, 0x8e, 0x6b, 0x19, 0xc7, 0x0f, 0xa0, 0xb1, 0x32, 0x0f, 0xad, 0x42, 0xeb, 0xb5, 0x01, - 0x0d, 0x37, 0x2b, 0xa1, 0x9d, 0x17, 0x85, 0x2e, 0xa1, 0x9a, 0x57, 0x81, 0x0e, 0x37, 0xab, 0x59, - 0xcd, 0x79, 0xff, 0xd3, 0xdb, 0x8c, 0xe4, 0x91, 0xf1, 0xc4, 0x38, 0xfe, 0xd5, 0x80, 0x0f, 0x02, - 0xb1, 0xb8, 0x01, 0xfe, 0xd8, 0x2c, 0x0a, 0x1e, 0xa5, 0xff, 0x00, 0x23, 0xe3, 0xdb, 0xaf, 0x32, - 0xd4, 0x4c, 0xcc, 0x29, 0x9f, 0x39, 0x22, 0x9e, 0x35, 0x67, 0x8c, 0xab, 0x3f, 0x84, 0xa6, 0x4e, - 0xd1, 0x28, 0x4c, 0xfe, 0xed, 0xe7, 0xe5, 0x28, 0x8f, 0xbc, 0xbc, 0xab, 0x60, 0x87, 0x7f, 0x05, - 0x00, 0x00, 0xff, 0xff, 0xec, 0x7a, 0x68, 0xfa, 0xf2, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/assistant/embedded/v1alpha2/embedded_assistant.pb.go b/vendor/google.golang.org/genproto/googleapis/assistant/embedded/v1alpha2/embedded_assistant.pb.go deleted file mode 100644 index b48a959a..00000000 --- a/vendor/google.golang.org/genproto/googleapis/assistant/embedded/v1alpha2/embedded_assistant.pb.go +++ /dev/null @@ -1,1196 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/assistant/embedded/v1alpha2/embedded_assistant.proto - -/* -Package embedded is a generated protocol buffer package. - -It is generated from these files: - google/assistant/embedded/v1alpha2/embedded_assistant.proto - -It has these top-level messages: - AssistConfig - AudioInConfig - AudioOutConfig - DialogStateIn - AudioOut - DialogStateOut - AssistRequest - AssistResponse - SpeechRecognitionResult - DeviceConfig - DeviceAction - DeviceLocation -*/ -package embedded - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_type "google.golang.org/genproto/googleapis/type/latlng" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Audio encoding of the data sent in the audio message. -// Audio must be one-channel (mono). The only language supported is "en-US". -type AudioInConfig_Encoding int32 - -const ( - // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][]. - AudioInConfig_ENCODING_UNSPECIFIED AudioInConfig_Encoding = 0 - // Uncompressed 16-bit signed little-endian samples (Linear PCM). - // This encoding includes no header, only the raw audio bytes. - AudioInConfig_LINEAR16 AudioInConfig_Encoding = 1 - // [`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio - // Codec) is the recommended encoding because it is - // lossless--therefore recognition is not compromised--and - // requires only about half the bandwidth of `LINEAR16`. This encoding - // includes the `FLAC` stream header followed by audio data. It supports - // 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are - // supported. - AudioInConfig_FLAC AudioInConfig_Encoding = 2 -) - -var AudioInConfig_Encoding_name = map[int32]string{ - 0: "ENCODING_UNSPECIFIED", - 1: "LINEAR16", - 2: "FLAC", -} -var AudioInConfig_Encoding_value = map[string]int32{ - "ENCODING_UNSPECIFIED": 0, - "LINEAR16": 1, - "FLAC": 2, -} - -func (x AudioInConfig_Encoding) String() string { - return proto.EnumName(AudioInConfig_Encoding_name, int32(x)) -} -func (AudioInConfig_Encoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// Audio encoding of the data returned in the audio message. All encodings are -// raw audio bytes with no header, except as indicated below. -type AudioOutConfig_Encoding int32 - -const ( - // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][]. - AudioOutConfig_ENCODING_UNSPECIFIED AudioOutConfig_Encoding = 0 - // Uncompressed 16-bit signed little-endian samples (Linear PCM). - AudioOutConfig_LINEAR16 AudioOutConfig_Encoding = 1 - // MP3 audio encoding. The sample rate is encoded in the payload. - AudioOutConfig_MP3 AudioOutConfig_Encoding = 2 - // Opus-encoded audio wrapped in an ogg container. The result will be a - // file which can be played natively on Android and in some browsers (such - // as Chrome). The quality of the encoding is considerably higher than MP3 - // while using the same bitrate. The sample rate is encoded in the payload. - AudioOutConfig_OPUS_IN_OGG AudioOutConfig_Encoding = 3 -) - -var AudioOutConfig_Encoding_name = map[int32]string{ - 0: "ENCODING_UNSPECIFIED", - 1: "LINEAR16", - 2: "MP3", - 3: "OPUS_IN_OGG", -} -var AudioOutConfig_Encoding_value = map[string]int32{ - "ENCODING_UNSPECIFIED": 0, - "LINEAR16": 1, - "MP3": 2, - "OPUS_IN_OGG": 3, -} - -func (x AudioOutConfig_Encoding) String() string { - return proto.EnumName(AudioOutConfig_Encoding_name, int32(x)) -} -func (AudioOutConfig_Encoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// Possible states of the microphone after a `Assist` RPC completes. -type DialogStateOut_MicrophoneMode int32 - -const ( - // No mode specified. - DialogStateOut_MICROPHONE_MODE_UNSPECIFIED DialogStateOut_MicrophoneMode = 0 - // The service is not expecting a follow-on question from the user. - // The microphone should remain off until the user re-activates it. - DialogStateOut_CLOSE_MICROPHONE DialogStateOut_MicrophoneMode = 1 - // The service is expecting a follow-on question from the user. The - // microphone should be re-opened when the `AudioOut` playback completes - // (by starting a new `Assist` RPC call to send the new audio). - DialogStateOut_DIALOG_FOLLOW_ON DialogStateOut_MicrophoneMode = 2 -) - -var DialogStateOut_MicrophoneMode_name = map[int32]string{ - 0: "MICROPHONE_MODE_UNSPECIFIED", - 1: "CLOSE_MICROPHONE", - 2: "DIALOG_FOLLOW_ON", -} -var DialogStateOut_MicrophoneMode_value = map[string]int32{ - "MICROPHONE_MODE_UNSPECIFIED": 0, - "CLOSE_MICROPHONE": 1, - "DIALOG_FOLLOW_ON": 2, -} - -func (x DialogStateOut_MicrophoneMode) String() string { - return proto.EnumName(DialogStateOut_MicrophoneMode_name, int32(x)) -} -func (DialogStateOut_MicrophoneMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 0} -} - -// Indicates the type of event. -type AssistResponse_EventType int32 - -const ( - // No event specified. - AssistResponse_EVENT_TYPE_UNSPECIFIED AssistResponse_EventType = 0 - // This event indicates that the server has detected the end of the user's - // speech utterance and expects no additional speech. Therefore, the server - // will not process additional audio (although it may subsequently return - // additional results). The client should stop sending additional audio - // data, half-close the gRPC connection, and wait for any additional results - // until the server closes the gRPC connection. - AssistResponse_END_OF_UTTERANCE AssistResponse_EventType = 1 -) - -var AssistResponse_EventType_name = map[int32]string{ - 0: "EVENT_TYPE_UNSPECIFIED", - 1: "END_OF_UTTERANCE", -} -var AssistResponse_EventType_value = map[string]int32{ - "EVENT_TYPE_UNSPECIFIED": 0, - "END_OF_UTTERANCE": 1, -} - -func (x AssistResponse_EventType) String() string { - return proto.EnumName(AssistResponse_EventType_name, int32(x)) -} -func (AssistResponse_EventType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -// Specifies how to process the `AssistRequest` messages. -type AssistConfig struct { - // Types that are valid to be assigned to Type: - // *AssistConfig_AudioInConfig - // *AssistConfig_TextQuery - Type isAssistConfig_Type `protobuf_oneof:"type"` - // *Required* Specifies how to format the audio that will be returned. - AudioOutConfig *AudioOutConfig `protobuf:"bytes,2,opt,name=audio_out_config,json=audioOutConfig" json:"audio_out_config,omitempty"` - // *Required* Represents the current dialog state. - DialogStateIn *DialogStateIn `protobuf:"bytes,3,opt,name=dialog_state_in,json=dialogStateIn" json:"dialog_state_in,omitempty"` - // Device configuration that uniquely identifies a specific device. - DeviceConfig *DeviceConfig `protobuf:"bytes,4,opt,name=device_config,json=deviceConfig" json:"device_config,omitempty"` -} - -func (m *AssistConfig) Reset() { *m = AssistConfig{} } -func (m *AssistConfig) String() string { return proto.CompactTextString(m) } -func (*AssistConfig) ProtoMessage() {} -func (*AssistConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isAssistConfig_Type interface { - isAssistConfig_Type() -} - -type AssistConfig_AudioInConfig struct { - AudioInConfig *AudioInConfig `protobuf:"bytes,1,opt,name=audio_in_config,json=audioInConfig,oneof"` -} -type AssistConfig_TextQuery struct { - TextQuery string `protobuf:"bytes,6,opt,name=text_query,json=textQuery,oneof"` -} - -func (*AssistConfig_AudioInConfig) isAssistConfig_Type() {} -func (*AssistConfig_TextQuery) isAssistConfig_Type() {} - -func (m *AssistConfig) GetType() isAssistConfig_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *AssistConfig) GetAudioInConfig() *AudioInConfig { - if x, ok := m.GetType().(*AssistConfig_AudioInConfig); ok { - return x.AudioInConfig - } - return nil -} - -func (m *AssistConfig) GetTextQuery() string { - if x, ok := m.GetType().(*AssistConfig_TextQuery); ok { - return x.TextQuery - } - return "" -} - -func (m *AssistConfig) GetAudioOutConfig() *AudioOutConfig { - if m != nil { - return m.AudioOutConfig - } - return nil -} - -func (m *AssistConfig) GetDialogStateIn() *DialogStateIn { - if m != nil { - return m.DialogStateIn - } - return nil -} - -func (m *AssistConfig) GetDeviceConfig() *DeviceConfig { - if m != nil { - return m.DeviceConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*AssistConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _AssistConfig_OneofMarshaler, _AssistConfig_OneofUnmarshaler, _AssistConfig_OneofSizer, []interface{}{ - (*AssistConfig_AudioInConfig)(nil), - (*AssistConfig_TextQuery)(nil), - } -} - -func _AssistConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*AssistConfig) - // type - switch x := m.Type.(type) { - case *AssistConfig_AudioInConfig: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AudioInConfig); err != nil { - return err - } - case *AssistConfig_TextQuery: - b.EncodeVarint(6<<3 | proto.WireBytes) - b.EncodeStringBytes(x.TextQuery) - case nil: - default: - return fmt.Errorf("AssistConfig.Type has unexpected type %T", x) - } - return nil -} - -func _AssistConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*AssistConfig) - switch tag { - case 1: // type.audio_in_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AudioInConfig) - err := b.DecodeMessage(msg) - m.Type = &AssistConfig_AudioInConfig{msg} - return true, err - case 6: // type.text_query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Type = &AssistConfig_TextQuery{x} - return true, err - default: - return false, nil - } -} - -func _AssistConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*AssistConfig) - // type - switch x := m.Type.(type) { - case *AssistConfig_AudioInConfig: - s := proto.Size(x.AudioInConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AssistConfig_TextQuery: - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.TextQuery))) - n += len(x.TextQuery) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Specifies how to process the `audio_in` data that will be provided in -// subsequent requests. For recommended settings, see the Google Assistant SDK -// [best practices](https://developers.google.com/assistant/sdk/guides/service/python/best-practices/audio). -type AudioInConfig struct { - // *Required* Encoding of audio data sent in all `audio_in` messages. - Encoding AudioInConfig_Encoding `protobuf:"varint,1,opt,name=encoding,enum=google.assistant.embedded.v1alpha2.AudioInConfig_Encoding" json:"encoding,omitempty"` - // *Required* Sample rate (in Hertz) of the audio data sent in all `audio_in` - // messages. Valid values are from 16000-24000, but 16000 is optimal. - // For best results, set the sampling rate of the audio source to 16000 Hz. - // If that's not possible, use the native sample rate of the audio source - // (instead of re-sampling). - SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"` -} - -func (m *AudioInConfig) Reset() { *m = AudioInConfig{} } -func (m *AudioInConfig) String() string { return proto.CompactTextString(m) } -func (*AudioInConfig) ProtoMessage() {} -func (*AudioInConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *AudioInConfig) GetEncoding() AudioInConfig_Encoding { - if m != nil { - return m.Encoding - } - return AudioInConfig_ENCODING_UNSPECIFIED -} - -func (m *AudioInConfig) GetSampleRateHertz() int32 { - if m != nil { - return m.SampleRateHertz - } - return 0 -} - -// Specifies the desired format for the server to use when it returns -// `audio_out` messages. -type AudioOutConfig struct { - // *Required* The encoding of audio data to be returned in all `audio_out` - // messages. - Encoding AudioOutConfig_Encoding `protobuf:"varint,1,opt,name=encoding,enum=google.assistant.embedded.v1alpha2.AudioOutConfig_Encoding" json:"encoding,omitempty"` - // *Required* The sample rate in Hertz of the audio data returned in - // `audio_out` messages. Valid values are: 16000-24000. - SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"` - // *Required* Current volume setting of the device's audio output. - // Valid values are 1 to 100 (corresponding to 1% to 100%). - VolumePercentage int32 `protobuf:"varint,3,opt,name=volume_percentage,json=volumePercentage" json:"volume_percentage,omitempty"` -} - -func (m *AudioOutConfig) Reset() { *m = AudioOutConfig{} } -func (m *AudioOutConfig) String() string { return proto.CompactTextString(m) } -func (*AudioOutConfig) ProtoMessage() {} -func (*AudioOutConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *AudioOutConfig) GetEncoding() AudioOutConfig_Encoding { - if m != nil { - return m.Encoding - } - return AudioOutConfig_ENCODING_UNSPECIFIED -} - -func (m *AudioOutConfig) GetSampleRateHertz() int32 { - if m != nil { - return m.SampleRateHertz - } - return 0 -} - -func (m *AudioOutConfig) GetVolumePercentage() int32 { - if m != nil { - return m.VolumePercentage - } - return 0 -} - -// Provides information about the current dialog state. -type DialogStateIn struct { - // *Required* This field must always be set to the - // [DialogStateOut.conversation_state][google.assistant.embedded.v1alpha2.DialogStateOut.conversation_state] value that was returned in the prior - // `Assist` RPC. It should only be omitted (field not set) if there was no - // prior `Assist` RPC because this is the first `Assist` RPC made by this - // device after it was first setup and/or a factory-default reset. - ConversationState []byte `protobuf:"bytes,1,opt,name=conversation_state,json=conversationState,proto3" json:"conversation_state,omitempty"` - // *Required* Language of the request in - // [IETF BCP 47 syntax](https://tools.ietf.org/html/bcp47). For example: - // "en-US". If you have selected a language for this `device_id` using the - // [Settings](https://developers.google.com/assistant/sdk/guides/assistant-settings) - // menu in your phone's Google Assistant app, that selection will override - // this value. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // *Optional* Location of the device where the query originated. - DeviceLocation *DeviceLocation `protobuf:"bytes,5,opt,name=device_location,json=deviceLocation" json:"device_location,omitempty"` -} - -func (m *DialogStateIn) Reset() { *m = DialogStateIn{} } -func (m *DialogStateIn) String() string { return proto.CompactTextString(m) } -func (*DialogStateIn) ProtoMessage() {} -func (*DialogStateIn) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *DialogStateIn) GetConversationState() []byte { - if m != nil { - return m.ConversationState - } - return nil -} - -func (m *DialogStateIn) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *DialogStateIn) GetDeviceLocation() *DeviceLocation { - if m != nil { - return m.DeviceLocation - } - return nil -} - -// The audio containing the Assistant's response to the query. Sequential chunks -// of audio data are received in sequential `AssistResponse` messages. -type AudioOut struct { - // *Output-only* The audio data containing the Assistant's response to the - // query. Sequential chunks of audio data are received in sequential - // `AssistResponse` messages. - AudioData []byte `protobuf:"bytes,1,opt,name=audio_data,json=audioData,proto3" json:"audio_data,omitempty"` -} - -func (m *AudioOut) Reset() { *m = AudioOut{} } -func (m *AudioOut) String() string { return proto.CompactTextString(m) } -func (*AudioOut) ProtoMessage() {} -func (*AudioOut) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *AudioOut) GetAudioData() []byte { - if m != nil { - return m.AudioData - } - return nil -} - -// The dialog state resulting from the user's query. Multiple of these messages -// may be received. -type DialogStateOut struct { - // *Output-only* Supplemental display text from the Assistant. This could be - // the same as the speech spoken in `AssistResponse.audio_out` or it could - // be some additional information which aids the user's understanding. - SupplementalDisplayText string `protobuf:"bytes,1,opt,name=supplemental_display_text,json=supplementalDisplayText" json:"supplemental_display_text,omitempty"` - // *Output-only* State information for the subsequent `Assist` RPC. This - // value should be saved in the client and returned in the - // [`DialogStateIn.conversation_state`](#dialogstatein) field with the next - // `Assist` RPC. (The client does not need to interpret or otherwise use this - // value.) This information should be saved across device reboots. However, - // this value should be cleared (not saved in the client) during a - // factory-default reset. - ConversationState []byte `protobuf:"bytes,2,opt,name=conversation_state,json=conversationState,proto3" json:"conversation_state,omitempty"` - // *Output-only* Specifies the mode of the microphone after this `Assist` - // RPC is processed. - MicrophoneMode DialogStateOut_MicrophoneMode `protobuf:"varint,3,opt,name=microphone_mode,json=microphoneMode,enum=google.assistant.embedded.v1alpha2.DialogStateOut_MicrophoneMode" json:"microphone_mode,omitempty"` - // *Output-only* Updated volume level. The value will be 0 or omitted - // (indicating no change) unless a voice command such as *Increase the volume* - // or *Set volume level 4* was recognized, in which case the value will be - // between 1 and 100 (corresponding to the new volume level of 1% to 100%). - // Typically, a client should use this volume level when playing the - // `audio_out` data, and retain this value as the current volume level and - // supply it in the `AudioOutConfig` of the next `AssistRequest`. (Some - // clients may also implement other ways to allow the current volume level to - // be changed, for example, by providing a knob that the user can turn.) - VolumePercentage int32 `protobuf:"varint,4,opt,name=volume_percentage,json=volumePercentage" json:"volume_percentage,omitempty"` -} - -func (m *DialogStateOut) Reset() { *m = DialogStateOut{} } -func (m *DialogStateOut) String() string { return proto.CompactTextString(m) } -func (*DialogStateOut) ProtoMessage() {} -func (*DialogStateOut) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *DialogStateOut) GetSupplementalDisplayText() string { - if m != nil { - return m.SupplementalDisplayText - } - return "" -} - -func (m *DialogStateOut) GetConversationState() []byte { - if m != nil { - return m.ConversationState - } - return nil -} - -func (m *DialogStateOut) GetMicrophoneMode() DialogStateOut_MicrophoneMode { - if m != nil { - return m.MicrophoneMode - } - return DialogStateOut_MICROPHONE_MODE_UNSPECIFIED -} - -func (m *DialogStateOut) GetVolumePercentage() int32 { - if m != nil { - return m.VolumePercentage - } - return 0 -} - -// The top-level message sent by the client. Clients must send at least two, and -// typically numerous `AssistRequest` messages. The first message must -// contain a `config` message and must not contain `audio_in` data. All -// subsequent messages must contain `audio_in` data and must not contain a -// `config` message. -type AssistRequest struct { - // Exactly one of these fields must be specified in each `AssistRequest`. - // - // Types that are valid to be assigned to Type: - // *AssistRequest_Config - // *AssistRequest_AudioIn - Type isAssistRequest_Type `protobuf_oneof:"type"` -} - -func (m *AssistRequest) Reset() { *m = AssistRequest{} } -func (m *AssistRequest) String() string { return proto.CompactTextString(m) } -func (*AssistRequest) ProtoMessage() {} -func (*AssistRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -type isAssistRequest_Type interface { - isAssistRequest_Type() -} - -type AssistRequest_Config struct { - Config *AssistConfig `protobuf:"bytes,1,opt,name=config,oneof"` -} -type AssistRequest_AudioIn struct { - AudioIn []byte `protobuf:"bytes,2,opt,name=audio_in,json=audioIn,proto3,oneof"` -} - -func (*AssistRequest_Config) isAssistRequest_Type() {} -func (*AssistRequest_AudioIn) isAssistRequest_Type() {} - -func (m *AssistRequest) GetType() isAssistRequest_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *AssistRequest) GetConfig() *AssistConfig { - if x, ok := m.GetType().(*AssistRequest_Config); ok { - return x.Config - } - return nil -} - -func (m *AssistRequest) GetAudioIn() []byte { - if x, ok := m.GetType().(*AssistRequest_AudioIn); ok { - return x.AudioIn - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*AssistRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _AssistRequest_OneofMarshaler, _AssistRequest_OneofUnmarshaler, _AssistRequest_OneofSizer, []interface{}{ - (*AssistRequest_Config)(nil), - (*AssistRequest_AudioIn)(nil), - } -} - -func _AssistRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*AssistRequest) - // type - switch x := m.Type.(type) { - case *AssistRequest_Config: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Config); err != nil { - return err - } - case *AssistRequest_AudioIn: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AudioIn) - case nil: - default: - return fmt.Errorf("AssistRequest.Type has unexpected type %T", x) - } - return nil -} - -func _AssistRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*AssistRequest) - switch tag { - case 1: // type.config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AssistConfig) - err := b.DecodeMessage(msg) - m.Type = &AssistRequest_Config{msg} - return true, err - case 2: // type.audio_in - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Type = &AssistRequest_AudioIn{x} - return true, err - default: - return false, nil - } -} - -func _AssistRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*AssistRequest) - // type - switch x := m.Type.(type) { - case *AssistRequest_Config: - s := proto.Size(x.Config) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AssistRequest_AudioIn: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AudioIn))) - n += len(x.AudioIn) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The top-level message received by the client. A series of one or more -// `AssistResponse` messages are streamed back to the client. -type AssistResponse struct { - // *Output-only* Indicates the type of event. - EventType AssistResponse_EventType `protobuf:"varint,1,opt,name=event_type,json=eventType,enum=google.assistant.embedded.v1alpha2.AssistResponse_EventType" json:"event_type,omitempty"` - // *Output-only* The audio containing the Assistant's response to the query. - AudioOut *AudioOut `protobuf:"bytes,3,opt,name=audio_out,json=audioOut" json:"audio_out,omitempty"` - // *Output-only* Contains the action triggered by the query with the - // appropriate payloads and semantic parsing. - DeviceAction *DeviceAction `protobuf:"bytes,6,opt,name=device_action,json=deviceAction" json:"device_action,omitempty"` - // *Output-only* This repeated list contains zero or more speech recognition - // results that correspond to consecutive portions of the audio currently - // being processed, starting with the portion corresponding to the earliest - // audio (and most stable portion) to the portion corresponding to the most - // recent audio. The strings can be concatenated to view the full - // in-progress response. When the speech recognition completes, this list - // will contain one item with `stability` of `1.0`. - SpeechResults []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=speech_results,json=speechResults" json:"speech_results,omitempty"` - // *Output-only* Contains output related to the user's query. - DialogStateOut *DialogStateOut `protobuf:"bytes,5,opt,name=dialog_state_out,json=dialogStateOut" json:"dialog_state_out,omitempty"` -} - -func (m *AssistResponse) Reset() { *m = AssistResponse{} } -func (m *AssistResponse) String() string { return proto.CompactTextString(m) } -func (*AssistResponse) ProtoMessage() {} -func (*AssistResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *AssistResponse) GetEventType() AssistResponse_EventType { - if m != nil { - return m.EventType - } - return AssistResponse_EVENT_TYPE_UNSPECIFIED -} - -func (m *AssistResponse) GetAudioOut() *AudioOut { - if m != nil { - return m.AudioOut - } - return nil -} - -func (m *AssistResponse) GetDeviceAction() *DeviceAction { - if m != nil { - return m.DeviceAction - } - return nil -} - -func (m *AssistResponse) GetSpeechResults() []*SpeechRecognitionResult { - if m != nil { - return m.SpeechResults - } - return nil -} - -func (m *AssistResponse) GetDialogStateOut() *DialogStateOut { - if m != nil { - return m.DialogStateOut - } - return nil -} - -// The estimated transcription of a phrase the user has spoken. This could be -// a single segment or the full guess of the user's spoken query. -type SpeechRecognitionResult struct { - // *Output-only* Transcript text representing the words that the user spoke. - Transcript string `protobuf:"bytes,1,opt,name=transcript" json:"transcript,omitempty"` - // *Output-only* An estimate of the likelihood that the Assistant will not - // change its guess about this result. Values range from 0.0 (completely - // unstable) to 1.0 (completely stable and final). The default of 0.0 is a - // sentinel value indicating `stability` was not set. - Stability float32 `protobuf:"fixed32,2,opt,name=stability" json:"stability,omitempty"` -} - -func (m *SpeechRecognitionResult) Reset() { *m = SpeechRecognitionResult{} } -func (m *SpeechRecognitionResult) String() string { return proto.CompactTextString(m) } -func (*SpeechRecognitionResult) ProtoMessage() {} -func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *SpeechRecognitionResult) GetTranscript() string { - if m != nil { - return m.Transcript - } - return "" -} - -func (m *SpeechRecognitionResult) GetStability() float32 { - if m != nil { - return m.Stability - } - return 0 -} - -// *Required* Fields that identify the device to the Assistant. -// -// See also: -// -// * [Register a Device - REST API](https://developers.google.com/assistant/sdk/reference/device-registration/register-device-manual) -// * [Device Model and Instance Schemas](https://developers.google.com/assistant/sdk/reference/device-registration/model-and-instance-schemas) -// * [Device Proto](https://developers.google.com/assistant/sdk/reference/rpc/google.assistant.devices.v1alpha2#device) -type DeviceConfig struct { - // *Required* Unique identifier for the device. The id length must be 128 - // characters or less. Example: DBCDW098234. This MUST match the device_id - // returned from device registration. This device_id is used to match against - // the user's registered devices to lookup the supported traits and - // capabilities of this device. This information should not change across - // device reboots. However, it should not be saved across - // factory-default resets. - DeviceId string `protobuf:"bytes,1,opt,name=device_id,json=deviceId" json:"device_id,omitempty"` - // *Required* Unique identifier for the device model. The combination of - // device_model_id and device_id must have been previously associated through - // device registration. - DeviceModelId string `protobuf:"bytes,3,opt,name=device_model_id,json=deviceModelId" json:"device_model_id,omitempty"` -} - -func (m *DeviceConfig) Reset() { *m = DeviceConfig{} } -func (m *DeviceConfig) String() string { return proto.CompactTextString(m) } -func (*DeviceConfig) ProtoMessage() {} -func (*DeviceConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *DeviceConfig) GetDeviceId() string { - if m != nil { - return m.DeviceId - } - return "" -} - -func (m *DeviceConfig) GetDeviceModelId() string { - if m != nil { - return m.DeviceModelId - } - return "" -} - -// The response returned to the device if the user has triggered a Device -// Action. For example, a device which supports the query *Turn on the light* -// would receive a `DeviceAction` with a JSON payload containing the semantics -// of the request. -type DeviceAction struct { - // JSON containing the device command response generated from the triggered - // Device Action grammar. The format is given by the - // `action.devices.EXECUTE` intent for a given - // [trait](https://developers.google.com/assistant/sdk/reference/traits/). - DeviceRequestJson string `protobuf:"bytes,1,opt,name=device_request_json,json=deviceRequestJson" json:"device_request_json,omitempty"` -} - -func (m *DeviceAction) Reset() { *m = DeviceAction{} } -func (m *DeviceAction) String() string { return proto.CompactTextString(m) } -func (*DeviceAction) ProtoMessage() {} -func (*DeviceAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *DeviceAction) GetDeviceRequestJson() string { - if m != nil { - return m.DeviceRequestJson - } - return "" -} - -// There are three sources of locations. They are used with this precedence: -// -// 1. This `DeviceLocation`, which is primarily used for mobile devices with -// GPS . -// 2. Location specified by the user during device setup; this is per-user, per -// device. This location is used if `DeviceLocation` is not specified. -// 3. Inferred location based on IP address. This is used only if neither of the -// above are specified. -type DeviceLocation struct { - // Types that are valid to be assigned to Type: - // *DeviceLocation_Coordinates - Type isDeviceLocation_Type `protobuf_oneof:"type"` -} - -func (m *DeviceLocation) Reset() { *m = DeviceLocation{} } -func (m *DeviceLocation) String() string { return proto.CompactTextString(m) } -func (*DeviceLocation) ProtoMessage() {} -func (*DeviceLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -type isDeviceLocation_Type interface { - isDeviceLocation_Type() -} - -type DeviceLocation_Coordinates struct { - Coordinates *google_type.LatLng `protobuf:"bytes,1,opt,name=coordinates,oneof"` -} - -func (*DeviceLocation_Coordinates) isDeviceLocation_Type() {} - -func (m *DeviceLocation) GetType() isDeviceLocation_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *DeviceLocation) GetCoordinates() *google_type.LatLng { - if x, ok := m.GetType().(*DeviceLocation_Coordinates); ok { - return x.Coordinates - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*DeviceLocation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _DeviceLocation_OneofMarshaler, _DeviceLocation_OneofUnmarshaler, _DeviceLocation_OneofSizer, []interface{}{ - (*DeviceLocation_Coordinates)(nil), - } -} - -func _DeviceLocation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*DeviceLocation) - // type - switch x := m.Type.(type) { - case *DeviceLocation_Coordinates: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Coordinates); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("DeviceLocation.Type has unexpected type %T", x) - } - return nil -} - -func _DeviceLocation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*DeviceLocation) - switch tag { - case 1: // type.coordinates - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_type.LatLng) - err := b.DecodeMessage(msg) - m.Type = &DeviceLocation_Coordinates{msg} - return true, err - default: - return false, nil - } -} - -func _DeviceLocation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*DeviceLocation) - // type - switch x := m.Type.(type) { - case *DeviceLocation_Coordinates: - s := proto.Size(x.Coordinates) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*AssistConfig)(nil), "google.assistant.embedded.v1alpha2.AssistConfig") - proto.RegisterType((*AudioInConfig)(nil), "google.assistant.embedded.v1alpha2.AudioInConfig") - proto.RegisterType((*AudioOutConfig)(nil), "google.assistant.embedded.v1alpha2.AudioOutConfig") - proto.RegisterType((*DialogStateIn)(nil), "google.assistant.embedded.v1alpha2.DialogStateIn") - proto.RegisterType((*AudioOut)(nil), "google.assistant.embedded.v1alpha2.AudioOut") - proto.RegisterType((*DialogStateOut)(nil), "google.assistant.embedded.v1alpha2.DialogStateOut") - proto.RegisterType((*AssistRequest)(nil), "google.assistant.embedded.v1alpha2.AssistRequest") - proto.RegisterType((*AssistResponse)(nil), "google.assistant.embedded.v1alpha2.AssistResponse") - proto.RegisterType((*SpeechRecognitionResult)(nil), "google.assistant.embedded.v1alpha2.SpeechRecognitionResult") - proto.RegisterType((*DeviceConfig)(nil), "google.assistant.embedded.v1alpha2.DeviceConfig") - proto.RegisterType((*DeviceAction)(nil), "google.assistant.embedded.v1alpha2.DeviceAction") - proto.RegisterType((*DeviceLocation)(nil), "google.assistant.embedded.v1alpha2.DeviceLocation") - proto.RegisterEnum("google.assistant.embedded.v1alpha2.AudioInConfig_Encoding", AudioInConfig_Encoding_name, AudioInConfig_Encoding_value) - proto.RegisterEnum("google.assistant.embedded.v1alpha2.AudioOutConfig_Encoding", AudioOutConfig_Encoding_name, AudioOutConfig_Encoding_value) - proto.RegisterEnum("google.assistant.embedded.v1alpha2.DialogStateOut_MicrophoneMode", DialogStateOut_MicrophoneMode_name, DialogStateOut_MicrophoneMode_value) - proto.RegisterEnum("google.assistant.embedded.v1alpha2.AssistResponse_EventType", AssistResponse_EventType_name, AssistResponse_EventType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for EmbeddedAssistant service - -type EmbeddedAssistantClient interface { - // Initiates or continues a conversation with the embedded Assistant Service. - // Each call performs one round-trip, sending an audio request to the service - // and receiving the audio response. Uses bidirectional streaming to receive - // results, such as the `END_OF_UTTERANCE` event, while sending audio. - // - // A conversation is one or more gRPC connections, each consisting of several - // streamed requests and responses. - // For example, the user says *Add to my shopping list* and the Assistant - // responds *What do you want to add?*. The sequence of streamed requests and - // responses in the first gRPC message could be: - // - // * AssistRequest.config - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistResponse.event_type.END_OF_UTTERANCE - // * AssistResponse.speech_results.transcript "add to my shopping list" - // * AssistResponse.dialog_state_out.microphone_mode.DIALOG_FOLLOW_ON - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // - // - // The user then says *bagels* and the Assistant responds - // *OK, I've added bagels to your shopping list*. This is sent as another gRPC - // connection call to the `Assist` method, again with streamed requests and - // responses, such as: - // - // * AssistRequest.config - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistResponse.event_type.END_OF_UTTERANCE - // * AssistResponse.dialog_state_out.microphone_mode.CLOSE_MICROPHONE - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // - // Although the precise order of responses is not guaranteed, sequential - // `AssistResponse.audio_out` messages will always contain sequential portions - // of audio. - Assist(ctx context.Context, opts ...grpc.CallOption) (EmbeddedAssistant_AssistClient, error) -} - -type embeddedAssistantClient struct { - cc *grpc.ClientConn -} - -func NewEmbeddedAssistantClient(cc *grpc.ClientConn) EmbeddedAssistantClient { - return &embeddedAssistantClient{cc} -} - -func (c *embeddedAssistantClient) Assist(ctx context.Context, opts ...grpc.CallOption) (EmbeddedAssistant_AssistClient, error) { - stream, err := grpc.NewClientStream(ctx, &_EmbeddedAssistant_serviceDesc.Streams[0], c.cc, "/google.assistant.embedded.v1alpha2.EmbeddedAssistant/Assist", opts...) - if err != nil { - return nil, err - } - x := &embeddedAssistantAssistClient{stream} - return x, nil -} - -type EmbeddedAssistant_AssistClient interface { - Send(*AssistRequest) error - Recv() (*AssistResponse, error) - grpc.ClientStream -} - -type embeddedAssistantAssistClient struct { - grpc.ClientStream -} - -func (x *embeddedAssistantAssistClient) Send(m *AssistRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *embeddedAssistantAssistClient) Recv() (*AssistResponse, error) { - m := new(AssistResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for EmbeddedAssistant service - -type EmbeddedAssistantServer interface { - // Initiates or continues a conversation with the embedded Assistant Service. - // Each call performs one round-trip, sending an audio request to the service - // and receiving the audio response. Uses bidirectional streaming to receive - // results, such as the `END_OF_UTTERANCE` event, while sending audio. - // - // A conversation is one or more gRPC connections, each consisting of several - // streamed requests and responses. - // For example, the user says *Add to my shopping list* and the Assistant - // responds *What do you want to add?*. The sequence of streamed requests and - // responses in the first gRPC message could be: - // - // * AssistRequest.config - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistResponse.event_type.END_OF_UTTERANCE - // * AssistResponse.speech_results.transcript "add to my shopping list" - // * AssistResponse.dialog_state_out.microphone_mode.DIALOG_FOLLOW_ON - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // - // - // The user then says *bagels* and the Assistant responds - // *OK, I've added bagels to your shopping list*. This is sent as another gRPC - // connection call to the `Assist` method, again with streamed requests and - // responses, such as: - // - // * AssistRequest.config - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistRequest.audio_in - // * AssistResponse.event_type.END_OF_UTTERANCE - // * AssistResponse.dialog_state_out.microphone_mode.CLOSE_MICROPHONE - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // * AssistResponse.audio_out - // - // Although the precise order of responses is not guaranteed, sequential - // `AssistResponse.audio_out` messages will always contain sequential portions - // of audio. - Assist(EmbeddedAssistant_AssistServer) error -} - -func RegisterEmbeddedAssistantServer(s *grpc.Server, srv EmbeddedAssistantServer) { - s.RegisterService(&_EmbeddedAssistant_serviceDesc, srv) -} - -func _EmbeddedAssistant_Assist_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(EmbeddedAssistantServer).Assist(&embeddedAssistantAssistServer{stream}) -} - -type EmbeddedAssistant_AssistServer interface { - Send(*AssistResponse) error - Recv() (*AssistRequest, error) - grpc.ServerStream -} - -type embeddedAssistantAssistServer struct { - grpc.ServerStream -} - -func (x *embeddedAssistantAssistServer) Send(m *AssistResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *embeddedAssistantAssistServer) Recv() (*AssistRequest, error) { - m := new(AssistRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _EmbeddedAssistant_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.assistant.embedded.v1alpha2.EmbeddedAssistant", - HandlerType: (*EmbeddedAssistantServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "Assist", - Handler: _EmbeddedAssistant_Assist_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/assistant/embedded/v1alpha2/embedded_assistant.proto", -} - -func init() { - proto.RegisterFile("google/assistant/embedded/v1alpha2/embedded_assistant.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 1141 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x6e, 0xdb, 0x36, - 0x14, 0x8e, 0xec, 0x34, 0xb5, 0x4f, 0x62, 0xc5, 0x61, 0x8b, 0xd5, 0x4b, 0xbb, 0xb5, 0xd0, 0x80, - 0x22, 0xfb, 0xb3, 0x9b, 0x14, 0xd8, 0x80, 0xb6, 0x1b, 0xe0, 0xda, 0x4a, 0xa2, 0xc2, 0xb1, 0x5c, - 0xc6, 0x69, 0xd1, 0xfd, 0x80, 0x60, 0x24, 0x4e, 0x51, 0x21, 0x93, 0xaa, 0x44, 0x07, 0xcd, 0xae, - 0x76, 0x35, 0xec, 0xb2, 0x0f, 0xb1, 0x07, 0xd9, 0x2b, 0xec, 0x59, 0xf6, 0x02, 0x03, 0x29, 0xc9, - 0xb5, 0xb6, 0x66, 0xb3, 0xb7, 0x3b, 0xf1, 0x1c, 0x9e, 0x8f, 0xe4, 0x39, 0xe7, 0xfb, 0x8e, 0xe0, - 0x61, 0x20, 0x44, 0x10, 0xb1, 0x0e, 0x4d, 0xd3, 0x30, 0x95, 0x94, 0xcb, 0x0e, 0x9b, 0x9c, 0x32, - 0xdf, 0x67, 0x7e, 0xe7, 0x7c, 0x97, 0x46, 0xf1, 0x19, 0xdd, 0x9b, 0x59, 0xc8, 0x6c, 0x53, 0x3b, - 0x4e, 0x84, 0x14, 0xc8, 0xca, 0x82, 0xdb, 0x6f, 0xed, 0xc5, 0xd6, 0x76, 0x11, 0xbc, 0x7d, 0xab, - 0x38, 0x20, 0x0e, 0x3b, 0x94, 0x73, 0x21, 0xa9, 0x0c, 0x05, 0x4f, 0x33, 0x84, 0xed, 0x56, 0xee, - 0x95, 0x17, 0x31, 0xeb, 0x44, 0x54, 0x46, 0x3c, 0xc8, 0x3c, 0xd6, 0xaf, 0x55, 0xd8, 0xe8, 0x6a, - 0xdc, 0x9e, 0xe0, 0x3f, 0x84, 0x01, 0xfa, 0x16, 0x36, 0xe9, 0xd4, 0x0f, 0x05, 0x09, 0x39, 0xf1, - 0xb4, 0xa9, 0x65, 0xdc, 0x31, 0x76, 0xd6, 0xf7, 0x76, 0xdb, 0xff, 0x7e, 0x8d, 0x76, 0x57, 0x85, - 0x3a, 0x3c, 0xc3, 0x3a, 0x5c, 0xc1, 0x0d, 0x3a, 0x6f, 0x40, 0xb7, 0x01, 0x24, 0x7b, 0x2d, 0xc9, - 0xab, 0x29, 0x4b, 0x2e, 0x5a, 0x6b, 0x77, 0x8c, 0x9d, 0xfa, 0xe1, 0x0a, 0xae, 0x2b, 0xdb, 0x53, - 0x65, 0x42, 0xdf, 0x41, 0x33, 0x3b, 0x5d, 0x4c, 0x65, 0x71, 0x7c, 0x45, 0x1f, 0xbf, 0xb7, 0xf0, - 0xf1, 0xee, 0x34, 0x7f, 0x0b, 0x36, 0x69, 0x69, 0x8d, 0x5e, 0xc0, 0xa6, 0x1f, 0xd2, 0x48, 0x04, - 0x24, 0x95, 0x54, 0x32, 0x12, 0xf2, 0x56, 0x75, 0xf1, 0xb7, 0xf5, 0x75, 0xe8, 0xb1, 0x8a, 0x74, - 0x38, 0x6e, 0xf8, 0xf3, 0x4b, 0x74, 0x02, 0x0d, 0x9f, 0x9d, 0x87, 0x1e, 0x2b, 0x6e, 0xbd, 0xaa, - 0x81, 0xef, 0x2d, 0x04, 0xac, 0x03, 0xf3, 0x3b, 0x6f, 0xf8, 0x73, 0xab, 0xc7, 0x6b, 0xb0, 0xaa, - 0x6a, 0x66, 0xfd, 0x6e, 0x40, 0xa3, 0x94, 0x5b, 0xf4, 0x0c, 0x6a, 0x8c, 0x7b, 0xc2, 0x0f, 0x79, - 0x56, 0x20, 0x73, 0xef, 0xc1, 0xd2, 0x05, 0x6a, 0xdb, 0x39, 0x02, 0x9e, 0x61, 0xa1, 0x4f, 0x60, - 0x2b, 0xa5, 0x93, 0x38, 0x62, 0x24, 0x51, 0x29, 0x3a, 0x63, 0x89, 0xfc, 0x51, 0x97, 0xe0, 0x0a, - 0xde, 0xcc, 0x1c, 0x98, 0x4a, 0x76, 0xa8, 0xcc, 0xd6, 0x23, 0xa8, 0x15, 0x08, 0xa8, 0x05, 0xd7, - 0xed, 0x61, 0xcf, 0xed, 0x3b, 0xc3, 0x03, 0x72, 0x32, 0x3c, 0x1e, 0xd9, 0x3d, 0x67, 0xdf, 0xb1, - 0xfb, 0xcd, 0x15, 0xb4, 0x01, 0xb5, 0x81, 0x33, 0xb4, 0xbb, 0x78, 0xf7, 0x8b, 0xa6, 0x81, 0x6a, - 0xb0, 0xba, 0x3f, 0xe8, 0xf6, 0x9a, 0x15, 0xeb, 0x4d, 0x05, 0xcc, 0x72, 0xc1, 0xd0, 0xf3, 0xbf, - 0x3d, 0xea, 0xe1, 0xf2, 0x65, 0xff, 0x9f, 0xaf, 0x42, 0x9f, 0xc2, 0xd6, 0xb9, 0x88, 0xa6, 0x13, - 0x46, 0x62, 0x96, 0x78, 0x8c, 0x4b, 0x1a, 0x30, 0xdd, 0x27, 0x57, 0x70, 0x33, 0x73, 0x8c, 0x66, - 0x76, 0x6b, 0xf0, 0x1f, 0x52, 0x70, 0x15, 0xaa, 0x47, 0xa3, 0xfb, 0xcd, 0x0a, 0xda, 0x84, 0x75, - 0x77, 0x74, 0x72, 0x4c, 0x9c, 0x21, 0x71, 0x0f, 0x0e, 0x9a, 0x55, 0xeb, 0x37, 0x03, 0x1a, 0xa5, - 0x36, 0x43, 0x9f, 0x03, 0xf2, 0x04, 0x3f, 0x67, 0x49, 0xaa, 0x09, 0x9d, 0x35, 0xae, 0xce, 0xcd, - 0x06, 0xde, 0x9a, 0xf7, 0xe8, 0x00, 0xf4, 0x11, 0x34, 0x22, 0xca, 0x83, 0x29, 0x0d, 0x54, 0x23, - 0xfa, 0x4c, 0xbf, 0xb1, 0x8e, 0x37, 0x0a, 0x63, 0x4f, 0xf8, 0x4c, 0x51, 0x3c, 0xef, 0xd5, 0x48, - 0x78, 0x3a, 0xb8, 0x75, 0x65, 0x71, 0x8e, 0x65, 0xdd, 0x3a, 0xc8, 0x23, 0xb1, 0xe9, 0x97, 0xd6, - 0xd6, 0xc7, 0x50, 0x2b, 0xca, 0x81, 0x3e, 0x00, 0xc8, 0xd8, 0xec, 0x53, 0x49, 0xf3, 0x4b, 0xd7, - 0xb5, 0xa5, 0x4f, 0x25, 0xb5, 0xfe, 0xa8, 0x80, 0x39, 0xf7, 0x5a, 0x15, 0xf1, 0x00, 0xde, 0x4f, - 0xa7, 0x71, 0x1c, 0xb1, 0x89, 0xca, 0x6f, 0x44, 0xfc, 0x30, 0x8d, 0x23, 0x7a, 0x41, 0x94, 0x42, - 0x68, 0x80, 0x3a, 0xbe, 0x31, 0xbf, 0xa1, 0x9f, 0xf9, 0xc7, 0xec, 0xb5, 0xbc, 0x24, 0x55, 0x95, - 0xcb, 0x52, 0xf5, 0x12, 0x36, 0x27, 0xa1, 0x97, 0x88, 0xf8, 0x4c, 0x70, 0x46, 0x26, 0x2a, 0x59, - 0x55, 0xdd, 0x72, 0xdd, 0x25, 0xc5, 0xc0, 0x9d, 0xca, 0xf6, 0xd1, 0x0c, 0xe9, 0x48, 0xf8, 0x0c, - 0x9b, 0x93, 0xd2, 0xfa, 0xdd, 0x2d, 0xb5, 0x7a, 0x49, 0x4b, 0x7d, 0x0f, 0x66, 0x19, 0x0e, 0xdd, - 0x86, 0x9b, 0x47, 0x4e, 0x0f, 0xbb, 0xa3, 0x43, 0x77, 0x68, 0x93, 0x23, 0xb7, 0x6f, 0xff, 0xa5, - 0xbf, 0xae, 0x43, 0xb3, 0x37, 0x70, 0x8f, 0x6d, 0xf2, 0x76, 0x5b, 0xd3, 0x50, 0xd6, 0xbe, 0xd3, - 0x1d, 0xb8, 0x07, 0x64, 0xdf, 0x1d, 0x0c, 0xdc, 0xe7, 0xc4, 0x1d, 0x36, 0x2b, 0xd6, 0x4f, 0x4a, - 0x4a, 0xf4, 0xcb, 0x30, 0x7b, 0x35, 0x65, 0xa9, 0x44, 0x4f, 0x60, 0xad, 0xa4, 0xf4, 0x0b, 0x89, - 0xd6, 0xfc, 0xd0, 0x38, 0x5c, 0xc1, 0x39, 0x02, 0xba, 0x09, 0xb5, 0x62, 0x7c, 0x64, 0xa9, 0x3f, - 0x5c, 0xc1, 0x57, 0xf3, 0x21, 0x30, 0x53, 0xb3, 0x37, 0xab, 0x60, 0x16, 0x57, 0x48, 0x63, 0xc1, - 0x53, 0xd5, 0x93, 0xc0, 0xce, 0x19, 0x97, 0x44, 0x6d, 0xc8, 0xb9, 0xff, 0x68, 0xf1, 0x7b, 0x14, - 0x38, 0x6d, 0x5b, 0x81, 0x8c, 0x2f, 0x62, 0x86, 0xeb, 0xac, 0xf8, 0x44, 0x0e, 0xd4, 0x67, 0x53, - 0x25, 0x57, 0xfc, 0xcf, 0x96, 0xd1, 0x15, 0x5c, 0x2b, 0x06, 0xc9, 0x9c, 0xce, 0x53, 0x4f, 0x33, - 0x67, 0x6d, 0x59, 0x9d, 0xef, 0xea, 0xb8, 0x42, 0xe7, 0xb3, 0x15, 0x3a, 0x05, 0x33, 0x8d, 0x19, - 0xf3, 0xce, 0x48, 0xc2, 0xd2, 0x69, 0x24, 0xd3, 0x56, 0xe5, 0x4e, 0x75, 0x67, 0x7d, 0x31, 0xf9, - 0x3b, 0xd6, 0x91, 0x98, 0x79, 0x22, 0xe0, 0xa1, 0x06, 0xd7, 0x18, 0xb8, 0x91, 0xe6, 0x0e, 0x8d, - 0xa8, 0x66, 0x6b, 0x69, 0xfa, 0xa9, 0x64, 0x2c, 0xc3, 0xfb, 0x52, 0xc7, 0x63, 0xd3, 0x2f, 0xad, - 0xad, 0xaf, 0xa0, 0x3e, 0xcb, 0x3d, 0xda, 0x86, 0xf7, 0xec, 0x67, 0xf6, 0x70, 0x4c, 0xc6, 0x2f, - 0x46, 0xef, 0xe8, 0x55, 0x7b, 0xd8, 0x27, 0xee, 0x3e, 0x39, 0x19, 0x8f, 0x6d, 0xdc, 0x1d, 0xf6, - 0xec, 0xa6, 0x61, 0x3d, 0x87, 0x1b, 0x97, 0x3c, 0x03, 0x7d, 0x08, 0x20, 0x13, 0xca, 0x53, 0x2f, - 0x09, 0xe3, 0x42, 0x04, 0xe6, 0x2c, 0xe8, 0x16, 0xd4, 0x53, 0x49, 0x4f, 0xc3, 0x28, 0x94, 0x17, - 0xba, 0xe7, 0x2a, 0xf8, 0xad, 0xc1, 0x3a, 0x86, 0x8d, 0xf9, 0xf9, 0x8a, 0x6e, 0x42, 0x3d, 0x2f, - 0x60, 0xe8, 0xe7, 0x60, 0xb5, 0xcc, 0xe0, 0xf8, 0xe8, 0xee, 0x4c, 0x19, 0x95, 0x1e, 0x44, 0x6a, - 0x4b, 0x55, 0x6f, 0xc9, 0x8b, 0xae, 0xd8, 0x18, 0x39, 0xbe, 0xf5, 0x75, 0x01, 0x9a, 0x97, 0xaf, - 0x0d, 0xd7, 0xf2, 0xb8, 0x24, 0xe3, 0x14, 0x79, 0x99, 0x0a, 0x9e, 0xc3, 0x6f, 0x65, 0xae, 0x9c, - 0x6d, 0x4f, 0x52, 0xc1, 0xad, 0xa7, 0x60, 0x96, 0x65, 0x14, 0x7d, 0x09, 0xeb, 0x9e, 0x10, 0x89, - 0x1f, 0x72, 0x2a, 0x59, 0x9a, 0x13, 0xf1, 0x5a, 0x51, 0x17, 0x45, 0x8a, 0xf6, 0x80, 0xca, 0x01, - 0x57, 0x5c, 0x9b, 0xdf, 0x59, 0x70, 0x6a, 0xef, 0x17, 0x03, 0xb6, 0xec, 0xbc, 0x68, 0xdd, 0xa2, - 0x8c, 0x28, 0x85, 0xb5, 0x6c, 0x81, 0x76, 0x97, 0x21, 0x93, 0xbe, 0xe9, 0xf6, 0xde, 0xf2, 0xfc, - 0xdb, 0x31, 0xee, 0x19, 0x8f, 0x7f, 0x36, 0xe0, 0xae, 0x27, 0x26, 0x0b, 0x44, 0x3f, 0x36, 0x67, - 0x57, 0x1d, 0xa9, 0xdf, 0xd1, 0x91, 0xf1, 0xcd, 0x93, 0x3c, 0x2a, 0x10, 0x6a, 0x66, 0xb5, 0x45, - 0x12, 0x74, 0x02, 0xc6, 0xf5, 0xcf, 0x6a, 0x27, 0x73, 0xd1, 0x38, 0x4c, 0xff, 0xe9, 0x47, 0xfa, - 0x61, 0x61, 0x39, 0x5d, 0xd3, 0x61, 0xf7, 0xff, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x7a, 0x00, - 0x97, 0x7e, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_data.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_data.pb.go deleted file mode 100644 index 90fbe302..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_data.pb.go +++ /dev/null @@ -1,252 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto - -/* -Package cluster is a generated protocol buffer package. - -It is generated from these files: - google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto - google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto - google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto - -It has these top-level messages: - Zone - Cluster - ListZonesRequest - ListZonesResponse - GetClusterRequest - ListClustersRequest - ListClustersResponse - CreateClusterRequest - CreateClusterMetadata - UpdateClusterMetadata - DeleteClusterRequest - UndeleteClusterRequest - UndeleteClusterMetadata - V2OperationMetadata -*/ -package cluster - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type StorageType int32 - -const ( - // The storage type used is unspecified. - StorageType_STORAGE_UNSPECIFIED StorageType = 0 - // Data will be stored in SSD, providing low and consistent latencies. - StorageType_STORAGE_SSD StorageType = 1 - // Data will be stored in HDD, providing high and less predictable - // latencies. - StorageType_STORAGE_HDD StorageType = 2 -) - -var StorageType_name = map[int32]string{ - 0: "STORAGE_UNSPECIFIED", - 1: "STORAGE_SSD", - 2: "STORAGE_HDD", -} -var StorageType_value = map[string]int32{ - "STORAGE_UNSPECIFIED": 0, - "STORAGE_SSD": 1, - "STORAGE_HDD": 2, -} - -func (x StorageType) String() string { - return proto.EnumName(StorageType_name, int32(x)) -} -func (StorageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Possible states of a zone. -type Zone_Status int32 - -const ( - // The state of the zone is unknown or unspecified. - Zone_UNKNOWN Zone_Status = 0 - // The zone is in a good state. - Zone_OK Zone_Status = 1 - // The zone is down for planned maintenance. - Zone_PLANNED_MAINTENANCE Zone_Status = 2 - // The zone is down for emergency or unplanned maintenance. - Zone_EMERGENCY_MAINENANCE Zone_Status = 3 -) - -var Zone_Status_name = map[int32]string{ - 0: "UNKNOWN", - 1: "OK", - 2: "PLANNED_MAINTENANCE", - 3: "EMERGENCY_MAINENANCE", -} -var Zone_Status_value = map[string]int32{ - "UNKNOWN": 0, - "OK": 1, - "PLANNED_MAINTENANCE": 2, - "EMERGENCY_MAINENANCE": 3, -} - -func (x Zone_Status) String() string { - return proto.EnumName(Zone_Status_name, int32(x)) -} -func (Zone_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// A physical location in which a particular project can allocate Cloud BigTable -// resources. -type Zone struct { - // A permanent unique identifier for the zone. - // Values are of the form projects/<project>/zones/[a-z][-a-z0-9]* - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of this zone as it appears in UIs. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // The current state of this zone. - Status Zone_Status `protobuf:"varint,3,opt,name=status,enum=google.bigtable.admin.cluster.v1.Zone_Status" json:"status,omitempty"` -} - -func (m *Zone) Reset() { *m = Zone{} } -func (m *Zone) String() string { return proto.CompactTextString(m) } -func (*Zone) ProtoMessage() {} -func (*Zone) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Zone) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Zone) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Zone) GetStatus() Zone_Status { - if m != nil { - return m.Status - } - return Zone_UNKNOWN -} - -// An isolated set of Cloud BigTable resources on which tables can be hosted. -type Cluster struct { - // A permanent unique identifier for the cluster. For technical reasons, the - // zone in which the cluster resides is included here. - // Values are of the form - // projects/<project>/zones/<zone>/clusters/[a-z][-a-z0-9]* - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The operation currently running on the cluster, if any. - // This cannot be set directly, only through CreateCluster, UpdateCluster, - // or UndeleteCluster. Calls to these methods will be rejected if - // "current_operation" is already set. - CurrentOperation *google_longrunning.Operation `protobuf:"bytes,3,opt,name=current_operation,json=currentOperation" json:"current_operation,omitempty"` - // The descriptive name for this cluster as it appears in UIs. - // Must be unique per zone. - DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // The number of serve nodes allocated to this cluster. - ServeNodes int32 `protobuf:"varint,5,opt,name=serve_nodes,json=serveNodes" json:"serve_nodes,omitempty"` - // What storage type to use for tables in this cluster. Only configurable at - // cluster creation time. If unspecified, STORAGE_SSD will be used. - DefaultStorageType StorageType `protobuf:"varint,8,opt,name=default_storage_type,json=defaultStorageType,enum=google.bigtable.admin.cluster.v1.StorageType" json:"default_storage_type,omitempty"` -} - -func (m *Cluster) Reset() { *m = Cluster{} } -func (m *Cluster) String() string { return proto.CompactTextString(m) } -func (*Cluster) ProtoMessage() {} -func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Cluster) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Cluster) GetCurrentOperation() *google_longrunning.Operation { - if m != nil { - return m.CurrentOperation - } - return nil -} - -func (m *Cluster) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Cluster) GetServeNodes() int32 { - if m != nil { - return m.ServeNodes - } - return 0 -} - -func (m *Cluster) GetDefaultStorageType() StorageType { - if m != nil { - return m.DefaultStorageType - } - return StorageType_STORAGE_UNSPECIFIED -} - -func init() { - proto.RegisterType((*Zone)(nil), "google.bigtable.admin.cluster.v1.Zone") - proto.RegisterType((*Cluster)(nil), "google.bigtable.admin.cluster.v1.Cluster") - proto.RegisterEnum("google.bigtable.admin.cluster.v1.StorageType", StorageType_name, StorageType_value) - proto.RegisterEnum("google.bigtable.admin.cluster.v1.Zone_Status", Zone_Status_name, Zone_Status_value) -} - -func init() { - proto.RegisterFile("google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 493 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xd1, 0x6e, 0xd3, 0x3c, - 0x1c, 0xc5, 0x97, 0xae, 0xeb, 0xbe, 0xcf, 0x41, 0x10, 0xcc, 0x24, 0xa2, 0x09, 0xb4, 0x52, 0xb8, - 0xa8, 0x90, 0x70, 0xb4, 0x71, 0x09, 0x37, 0x6d, 0x63, 0xba, 0x32, 0xe6, 0x56, 0x49, 0x27, 0xc4, - 0x6e, 0x2c, 0xb7, 0xf5, 0xac, 0x48, 0xa9, 0x1d, 0xc5, 0x4e, 0xa5, 0x3e, 0x03, 0x12, 0x8f, 0xc7, - 0xf3, 0xa0, 0x3a, 0x6e, 0x55, 0x34, 0xd0, 0xb8, 0xb3, 0xcf, 0x39, 0x3f, 0xbb, 0xff, 0x53, 0x07, - 0x7c, 0x14, 0x4a, 0x89, 0x9c, 0x47, 0xb3, 0x4c, 0x18, 0x36, 0xcb, 0x79, 0xc4, 0x16, 0xcb, 0x4c, - 0x46, 0xf3, 0xbc, 0xd2, 0x86, 0x97, 0xd1, 0xea, 0x7c, 0xe7, 0x50, 0xa7, 0xd1, 0x05, 0x33, 0x0c, - 0x15, 0xa5, 0x32, 0x0a, 0xb6, 0x6b, 0x1a, 0x6d, 0x33, 0xc8, 0xd2, 0xc8, 0x25, 0xd1, 0xea, 0xfc, - 0xf4, 0x85, 0x3b, 0x9f, 0x15, 0x59, 0xc4, 0xa4, 0x54, 0x86, 0x99, 0x4c, 0x49, 0x5d, 0xf3, 0xa7, - 0xaf, 0x9d, 0x9b, 0x2b, 0x29, 0xca, 0x4a, 0xca, 0x4c, 0x8a, 0x48, 0x15, 0xbc, 0xfc, 0x2d, 0x74, - 0xe6, 0x42, 0x76, 0x37, 0xab, 0xee, 0x22, 0x93, 0x2d, 0xb9, 0x36, 0x6c, 0x59, 0xd4, 0x81, 0xce, - 0x4f, 0x0f, 0x34, 0x6f, 0x95, 0xe4, 0x10, 0x82, 0xa6, 0x64, 0x4b, 0x1e, 0x7a, 0x6d, 0xaf, 0xfb, - 0x7f, 0x62, 0xd7, 0xf0, 0x15, 0x78, 0xb4, 0xc8, 0x74, 0x91, 0xb3, 0x35, 0xb5, 0x5e, 0xc3, 0x7a, - 0xbe, 0xd3, 0xc8, 0x26, 0x82, 0x41, 0x4b, 0x1b, 0x66, 0x2a, 0x1d, 0x1e, 0xb6, 0xbd, 0xee, 0xe3, - 0x8b, 0x77, 0xe8, 0xa1, 0xb1, 0xd0, 0xe6, 0x3a, 0x94, 0x5a, 0x28, 0x71, 0x70, 0x67, 0x02, 0x5a, - 0xb5, 0x02, 0x7d, 0x70, 0x7c, 0x43, 0xae, 0xc8, 0xf8, 0x2b, 0x09, 0x0e, 0x60, 0x0b, 0x34, 0xc6, - 0x57, 0x81, 0x07, 0x9f, 0x83, 0x67, 0x93, 0x2f, 0x3d, 0x42, 0x70, 0x4c, 0xaf, 0x7b, 0x23, 0x32, - 0xc5, 0xa4, 0x47, 0x06, 0x38, 0x68, 0xc0, 0x10, 0x9c, 0xe0, 0x6b, 0x9c, 0x0c, 0x31, 0x19, 0x7c, - 0xb3, 0x96, 0x73, 0x0e, 0x3b, 0x3f, 0x1a, 0xe0, 0x78, 0x50, 0x5f, 0xfa, 0xc7, 0xd9, 0x3e, 0x83, - 0xa7, 0xf3, 0xaa, 0x2c, 0xb9, 0x34, 0x74, 0xd7, 0x9a, 0x9d, 0xc1, 0xbf, 0x78, 0xb9, 0x9d, 0x61, - 0xaf, 0x5a, 0x34, 0xde, 0x86, 0x92, 0xc0, 0x71, 0x3b, 0xe5, 0x5e, 0x4f, 0xcd, 0xfb, 0x3d, 0x9d, - 0x01, 0x5f, 0xf3, 0x72, 0xc5, 0xa9, 0x54, 0x0b, 0xae, 0xc3, 0xa3, 0xb6, 0xd7, 0x3d, 0x4a, 0x80, - 0x95, 0xc8, 0x46, 0x81, 0x14, 0x9c, 0x2c, 0xf8, 0x1d, 0xab, 0x72, 0x43, 0xb5, 0x51, 0x25, 0x13, - 0x9c, 0x9a, 0x75, 0xc1, 0xc3, 0xff, 0xfe, 0xb5, 0xd6, 0xb4, 0xa6, 0xa6, 0xeb, 0x82, 0x27, 0xd0, - 0x1d, 0xb5, 0xa7, 0xbd, 0xbd, 0x04, 0xfe, 0xde, 0x76, 0x53, 0x69, 0x3a, 0x1d, 0x27, 0xbd, 0x21, - 0xa6, 0x37, 0x24, 0x9d, 0xe0, 0xc1, 0xe8, 0xd3, 0x08, 0xc7, 0xc1, 0x01, 0x7c, 0x02, 0xfc, 0xad, - 0x91, 0xa6, 0x71, 0xe0, 0xed, 0x0b, 0x97, 0x71, 0x1c, 0x34, 0xfa, 0xdf, 0x3d, 0xf0, 0x66, 0xae, - 0x96, 0x0f, 0xfe, 0xa4, 0x7e, 0xd8, 0x77, 0x96, 0xfb, 0x23, 0x62, 0x66, 0xd8, 0x64, 0xf3, 0xec, - 0x26, 0xde, 0xed, 0xd0, 0xd1, 0x42, 0xe5, 0x4c, 0x0a, 0xa4, 0x4a, 0x11, 0x09, 0x2e, 0xed, 0xa3, - 0x8c, 0x6a, 0x8b, 0x15, 0x99, 0xfe, 0xfb, 0xb7, 0xf5, 0xc1, 0x2d, 0x67, 0x2d, 0xcb, 0xbc, 0xff, - 0x15, 0x00, 0x00, 0xff, 0xff, 0xc9, 0x27, 0x25, 0xa6, 0x8e, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_service.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_service.pb.go deleted file mode 100644 index bfc7f2fc..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_service.pb.go +++ /dev/null @@ -1,472 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto - -package cluster - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for BigtableClusterService service - -type BigtableClusterServiceClient interface { - // Lists the supported zones for the given project. - ListZones(ctx context.Context, in *ListZonesRequest, opts ...grpc.CallOption) (*ListZonesResponse, error) - // Gets information about a particular cluster. - GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) - // Lists all clusters in the given project, along with any zones for which - // cluster information could not be retrieved. - ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) - // Creates a cluster and begins preparing it to begin serving. The returned - // cluster embeds as its "current_operation" a long-running operation which - // can be used to track the progress of turning up the new cluster. - // Immediately upon completion of this request: - // * The cluster will be readable via the API, with all requested attributes - // but no allocated resources. - // Until completion of the embedded operation: - // * Cancelling the operation will render the cluster immediately unreadable - // via the API. - // * All other attempts to modify or delete the cluster will be rejected. - // Upon completion of the embedded operation: - // * Billing for all successfully-allocated resources will begin (some types - // may have lower than the requested levels). - // * New tables can be created in the cluster. - // * The cluster's allocated resource levels will be readable via the API. - // The embedded operation's "metadata" field type is - // [CreateClusterMetadata][google.bigtable.admin.cluster.v1.CreateClusterMetadata] The embedded operation's "response" field type is - // [Cluster][google.bigtable.admin.cluster.v1.Cluster], if successful. - CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Cluster, error) - // Updates a cluster, and begins allocating or releasing resources as - // requested. The returned cluster embeds as its "current_operation" a - // long-running operation which can be used to track the progress of updating - // the cluster. - // Immediately upon completion of this request: - // * For resource types where a decrease in the cluster's allocation has been - // requested, billing will be based on the newly-requested level. - // Until completion of the embedded operation: - // * Cancelling the operation will set its metadata's "cancelled_at_time", - // and begin restoring resources to their pre-request values. The operation - // is guaranteed to succeed at undoing all resource changes, after which - // point it will terminate with a CANCELLED status. - // * All other attempts to modify or delete the cluster will be rejected. - // * Reading the cluster via the API will continue to give the pre-request - // resource levels. - // Upon completion of the embedded operation: - // * Billing will begin for all successfully-allocated resources (some types - // may have lower than the requested levels). - // * All newly-reserved resources will be available for serving the cluster's - // tables. - // * The cluster's new resource levels will be readable via the API. - // [UpdateClusterMetadata][google.bigtable.admin.cluster.v1.UpdateClusterMetadata] The embedded operation's "response" field type is - // [Cluster][google.bigtable.admin.cluster.v1.Cluster], if successful. - UpdateCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Cluster, error) - // Marks a cluster and all of its tables for permanent deletion in 7 days. - // Immediately upon completion of the request: - // * Billing will cease for all of the cluster's reserved resources. - // * The cluster's "delete_time" field will be set 7 days in the future. - // Soon afterward: - // * All tables within the cluster will become unavailable. - // Prior to the cluster's "delete_time": - // * The cluster can be recovered with a call to UndeleteCluster. - // * All other attempts to modify or delete the cluster will be rejected. - // At the cluster's "delete_time": - // * The cluster and *all of its tables* will immediately and irrevocably - // disappear from the API, and their data will be permanently deleted. - DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Cancels the scheduled deletion of an cluster and begins preparing it to - // resume serving. The returned operation will also be embedded as the - // cluster's "current_operation". - // Immediately upon completion of this request: - // * The cluster's "delete_time" field will be unset, protecting it from - // automatic deletion. - // Until completion of the returned operation: - // * The operation cannot be cancelled. - // Upon completion of the returned operation: - // * Billing for the cluster's resources will resume. - // * All tables within the cluster will be available. - // [UndeleteClusterMetadata][google.bigtable.admin.cluster.v1.UndeleteClusterMetadata] The embedded operation's "response" field type is - // [Cluster][google.bigtable.admin.cluster.v1.Cluster], if successful. - UndeleteCluster(ctx context.Context, in *UndeleteClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type bigtableClusterServiceClient struct { - cc *grpc.ClientConn -} - -func NewBigtableClusterServiceClient(cc *grpc.ClientConn) BigtableClusterServiceClient { - return &bigtableClusterServiceClient{cc} -} - -func (c *bigtableClusterServiceClient) ListZones(ctx context.Context, in *ListZonesRequest, opts ...grpc.CallOption) (*ListZonesResponse, error) { - out := new(ListZonesResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.cluster.v1.BigtableClusterService/ListZones", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableClusterServiceClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.bigtable.admin.cluster.v1.BigtableClusterService/GetCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableClusterServiceClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) { - out := new(ListClustersResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.cluster.v1.BigtableClusterService/ListClusters", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableClusterServiceClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.bigtable.admin.cluster.v1.BigtableClusterService/CreateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableClusterServiceClient) UpdateCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.bigtable.admin.cluster.v1.BigtableClusterService/UpdateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableClusterServiceClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.cluster.v1.BigtableClusterService/DeleteCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableClusterServiceClient) UndeleteCluster(ctx context.Context, in *UndeleteClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.bigtable.admin.cluster.v1.BigtableClusterService/UndeleteCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for BigtableClusterService service - -type BigtableClusterServiceServer interface { - // Lists the supported zones for the given project. - ListZones(context.Context, *ListZonesRequest) (*ListZonesResponse, error) - // Gets information about a particular cluster. - GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) - // Lists all clusters in the given project, along with any zones for which - // cluster information could not be retrieved. - ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) - // Creates a cluster and begins preparing it to begin serving. The returned - // cluster embeds as its "current_operation" a long-running operation which - // can be used to track the progress of turning up the new cluster. - // Immediately upon completion of this request: - // * The cluster will be readable via the API, with all requested attributes - // but no allocated resources. - // Until completion of the embedded operation: - // * Cancelling the operation will render the cluster immediately unreadable - // via the API. - // * All other attempts to modify or delete the cluster will be rejected. - // Upon completion of the embedded operation: - // * Billing for all successfully-allocated resources will begin (some types - // may have lower than the requested levels). - // * New tables can be created in the cluster. - // * The cluster's allocated resource levels will be readable via the API. - // The embedded operation's "metadata" field type is - // [CreateClusterMetadata][google.bigtable.admin.cluster.v1.CreateClusterMetadata] The embedded operation's "response" field type is - // [Cluster][google.bigtable.admin.cluster.v1.Cluster], if successful. - CreateCluster(context.Context, *CreateClusterRequest) (*Cluster, error) - // Updates a cluster, and begins allocating or releasing resources as - // requested. The returned cluster embeds as its "current_operation" a - // long-running operation which can be used to track the progress of updating - // the cluster. - // Immediately upon completion of this request: - // * For resource types where a decrease in the cluster's allocation has been - // requested, billing will be based on the newly-requested level. - // Until completion of the embedded operation: - // * Cancelling the operation will set its metadata's "cancelled_at_time", - // and begin restoring resources to their pre-request values. The operation - // is guaranteed to succeed at undoing all resource changes, after which - // point it will terminate with a CANCELLED status. - // * All other attempts to modify or delete the cluster will be rejected. - // * Reading the cluster via the API will continue to give the pre-request - // resource levels. - // Upon completion of the embedded operation: - // * Billing will begin for all successfully-allocated resources (some types - // may have lower than the requested levels). - // * All newly-reserved resources will be available for serving the cluster's - // tables. - // * The cluster's new resource levels will be readable via the API. - // [UpdateClusterMetadata][google.bigtable.admin.cluster.v1.UpdateClusterMetadata] The embedded operation's "response" field type is - // [Cluster][google.bigtable.admin.cluster.v1.Cluster], if successful. - UpdateCluster(context.Context, *Cluster) (*Cluster, error) - // Marks a cluster and all of its tables for permanent deletion in 7 days. - // Immediately upon completion of the request: - // * Billing will cease for all of the cluster's reserved resources. - // * The cluster's "delete_time" field will be set 7 days in the future. - // Soon afterward: - // * All tables within the cluster will become unavailable. - // Prior to the cluster's "delete_time": - // * The cluster can be recovered with a call to UndeleteCluster. - // * All other attempts to modify or delete the cluster will be rejected. - // At the cluster's "delete_time": - // * The cluster and *all of its tables* will immediately and irrevocably - // disappear from the API, and their data will be permanently deleted. - DeleteCluster(context.Context, *DeleteClusterRequest) (*google_protobuf2.Empty, error) - // Cancels the scheduled deletion of an cluster and begins preparing it to - // resume serving. The returned operation will also be embedded as the - // cluster's "current_operation". - // Immediately upon completion of this request: - // * The cluster's "delete_time" field will be unset, protecting it from - // automatic deletion. - // Until completion of the returned operation: - // * The operation cannot be cancelled. - // Upon completion of the returned operation: - // * Billing for the cluster's resources will resume. - // * All tables within the cluster will be available. - // [UndeleteClusterMetadata][google.bigtable.admin.cluster.v1.UndeleteClusterMetadata] The embedded operation's "response" field type is - // [Cluster][google.bigtable.admin.cluster.v1.Cluster], if successful. - UndeleteCluster(context.Context, *UndeleteClusterRequest) (*google_longrunning.Operation, error) -} - -func RegisterBigtableClusterServiceServer(s *grpc.Server, srv BigtableClusterServiceServer) { - s.RegisterService(&_BigtableClusterService_serviceDesc, srv) -} - -func _BigtableClusterService_ListZones_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListZonesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableClusterServiceServer).ListZones(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.cluster.v1.BigtableClusterService/ListZones", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableClusterServiceServer).ListZones(ctx, req.(*ListZonesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableClusterService_GetCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableClusterServiceServer).GetCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.cluster.v1.BigtableClusterService/GetCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableClusterServiceServer).GetCluster(ctx, req.(*GetClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableClusterService_ListClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClustersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableClusterServiceServer).ListClusters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.cluster.v1.BigtableClusterService/ListClusters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableClusterServiceServer).ListClusters(ctx, req.(*ListClustersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableClusterService_CreateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableClusterServiceServer).CreateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.cluster.v1.BigtableClusterService/CreateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableClusterServiceServer).CreateCluster(ctx, req.(*CreateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableClusterService_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Cluster) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableClusterServiceServer).UpdateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.cluster.v1.BigtableClusterService/UpdateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableClusterServiceServer).UpdateCluster(ctx, req.(*Cluster)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableClusterService_DeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableClusterServiceServer).DeleteCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.cluster.v1.BigtableClusterService/DeleteCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableClusterServiceServer).DeleteCluster(ctx, req.(*DeleteClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableClusterService_UndeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UndeleteClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableClusterServiceServer).UndeleteCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.cluster.v1.BigtableClusterService/UndeleteCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableClusterServiceServer).UndeleteCluster(ctx, req.(*UndeleteClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _BigtableClusterService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.bigtable.admin.cluster.v1.BigtableClusterService", - HandlerType: (*BigtableClusterServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListZones", - Handler: _BigtableClusterService_ListZones_Handler, - }, - { - MethodName: "GetCluster", - Handler: _BigtableClusterService_GetCluster_Handler, - }, - { - MethodName: "ListClusters", - Handler: _BigtableClusterService_ListClusters_Handler, - }, - { - MethodName: "CreateCluster", - Handler: _BigtableClusterService_CreateCluster_Handler, - }, - { - MethodName: "UpdateCluster", - Handler: _BigtableClusterService_UpdateCluster_Handler, - }, - { - MethodName: "DeleteCluster", - Handler: _BigtableClusterService_DeleteCluster_Handler, - }, - { - MethodName: "UndeleteCluster", - Handler: _BigtableClusterService_UndeleteCluster_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto", -} - -func init() { - proto.RegisterFile("google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 515 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x4f, 0x6b, 0x14, 0x31, - 0x18, 0xc6, 0x89, 0x07, 0xa1, 0xc1, 0x45, 0xc8, 0xa1, 0x87, 0x6d, 0x0b, 0x32, 0x15, 0xb1, 0x23, - 0x26, 0x6e, 0x17, 0xc5, 0xbf, 0x08, 0x5b, 0xa5, 0x1e, 0x04, 0x8b, 0xd2, 0x4b, 0x2f, 0x4b, 0x76, - 0xe7, 0x35, 0x8c, 0xcc, 0x24, 0x31, 0xc9, 0x2c, 0xa8, 0xf4, 0xe2, 0xcd, 0x93, 0x88, 0x27, 0x3d, - 0x78, 0xeb, 0xdd, 0xef, 0xe2, 0x57, 0xf0, 0x83, 0xc8, 0x64, 0x92, 0xb5, 0x2b, 0x6b, 0x77, 0xa6, - 0xb7, 0x99, 0xc9, 0xfb, 0xbc, 0xcf, 0x6f, 0x9e, 0x24, 0x2f, 0x7e, 0x2c, 0x94, 0x12, 0x05, 0xb0, - 0x49, 0x2e, 0x1c, 0x9f, 0x14, 0xc0, 0x78, 0x56, 0xe6, 0x92, 0x4d, 0x8b, 0xca, 0x3a, 0x30, 0x6c, - 0x36, 0x98, 0xaf, 0x8c, 0xc3, 0xb7, 0xb1, 0x05, 0x33, 0xcb, 0xa7, 0x40, 0xb5, 0x51, 0x4e, 0x91, - 0x2b, 0x4d, 0x03, 0x1a, 0xcb, 0xa8, 0x6f, 0x40, 0x43, 0x31, 0x9d, 0x0d, 0xfa, 0x9b, 0xc1, 0x82, - 0xeb, 0x9c, 0x71, 0x29, 0x95, 0xe3, 0x2e, 0x57, 0xd2, 0x36, 0xfa, 0xfe, 0xc3, 0xee, 0x00, 0x19, - 0x77, 0x3c, 0xa8, 0x9f, 0x9d, 0x1b, 0x7f, 0x5c, 0x82, 0xb5, 0x5c, 0x40, 0xe4, 0xd8, 0x0e, 0x9d, - 0x0a, 0x25, 0x85, 0xa9, 0xa4, 0xcc, 0xa5, 0x60, 0x4a, 0x83, 0x59, 0x80, 0xdd, 0x08, 0x45, 0xfe, - 0x6d, 0x52, 0xbd, 0x66, 0x50, 0x6a, 0xf7, 0xae, 0x59, 0xdc, 0xfd, 0xb4, 0x86, 0xd7, 0x47, 0xc1, - 0x6d, 0xaf, 0x31, 0x7b, 0xd5, 0x78, 0x91, 0x6f, 0x08, 0xaf, 0x3d, 0xcf, 0xad, 0x3b, 0x52, 0x12, - 0x2c, 0xd9, 0xa5, 0xab, 0x32, 0xa3, 0xf3, 0xe2, 0x97, 0xf0, 0xb6, 0x02, 0xeb, 0xfa, 0xc3, 0x4e, - 0x1a, 0xab, 0x95, 0xb4, 0x90, 0x6c, 0x7f, 0xfc, 0xf5, 0xfb, 0xeb, 0x85, 0x2d, 0xb2, 0x51, 0x07, - 0xf1, 0x41, 0xf2, 0x12, 0x1e, 0x69, 0xa3, 0xde, 0xc0, 0xd4, 0x59, 0x96, 0x1e, 0xb3, 0xf7, 0x9e, - 0xe6, 0x07, 0xc2, 0x78, 0x1f, 0x5c, 0x20, 0x26, 0x2d, 0x8c, 0xfe, 0x56, 0x47, 0xba, 0x9d, 0xd5, - 0xa2, 0xa0, 0x48, 0x6e, 0x79, 0xa6, 0x94, 0x5c, 0x5f, 0xc6, 0xd4, 0x20, 0xb1, 0x34, 0x6e, 0x60, - 0x8d, 0x49, 0x7e, 0x22, 0x7c, 0xa9, 0xfe, 0xb7, 0xd0, 0xc1, 0x92, 0xdb, 0xed, 0xb2, 0x88, 0xf5, - 0x11, 0xf2, 0x4e, 0x57, 0x59, 0x48, 0x71, 0xe0, 0x89, 0x6f, 0x90, 0x9d, 0xe5, 0x29, 0x72, 0x21, - 0x0c, 0x08, 0xee, 0x20, 0x9b, 0x53, 0x93, 0x13, 0x84, 0x7b, 0x7b, 0x06, 0xb8, 0x8b, 0x07, 0x81, - 0xb4, 0x30, 0x5f, 0x10, 0x9c, 0x23, 0xd9, 0xc0, 0x99, 0x5c, 0x3b, 0x2b, 0xd9, 0xe3, 0x39, 0xe4, - 0x7d, 0x94, 0x92, 0xef, 0x08, 0xf7, 0x0e, 0x75, 0x76, 0x8a, 0xb3, 0xbd, 0x5f, 0x17, 0xb4, 0xa1, - 0x47, 0xbb, 0xd9, 0x6f, 0xbd, 0xe9, 0x35, 0xdc, 0x17, 0x84, 0x7b, 0x4f, 0xa0, 0x80, 0x4e, 0x21, - 0x2e, 0x08, 0x62, 0x88, 0xeb, 0x51, 0x17, 0xef, 0x2d, 0x7d, 0x5a, 0xdf, 0xdb, 0x78, 0x16, 0xd3, - 0xf6, 0x67, 0xf1, 0x04, 0xe1, 0xcb, 0x87, 0x32, 0x5b, 0xa0, 0xba, 0xbb, 0x9a, 0xea, 0x1f, 0x49, - 0xe4, 0xda, 0x8a, 0xca, 0x53, 0x43, 0x87, 0xbe, 0x88, 0x43, 0x27, 0xb9, 0xe7, 0xf1, 0x86, 0xc9, - 0xa0, 0x75, 0x6a, 0x55, 0xf0, 0x19, 0x7d, 0x46, 0xf8, 0xea, 0x54, 0x95, 0x2b, 0xc9, 0x46, 0x9b, - 0xcb, 0x27, 0x96, 0x3d, 0xa8, 0x93, 0x3a, 0x40, 0x47, 0xfb, 0xa1, 0x83, 0x50, 0x05, 0x97, 0x82, - 0x2a, 0x23, 0x98, 0x00, 0xe9, 0x73, 0x64, 0xcd, 0x12, 0xd7, 0xb9, 0xfd, 0xff, 0xfc, 0x7d, 0x10, - 0x1e, 0x27, 0x17, 0xbd, 0x66, 0xf8, 0x27, 0x00, 0x00, 0xff, 0xff, 0x50, 0x92, 0x91, 0x86, 0x71, - 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.pb.go deleted file mode 100644 index 1f993aa2..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.pb.go +++ /dev/null @@ -1,376 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto - -package cluster - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Request message for BigtableClusterService.ListZones. -type ListZonesRequest struct { - // The unique name of the project for which a list of supported zones is - // requested. - // Values are of the form projects/<project> - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *ListZonesRequest) Reset() { *m = ListZonesRequest{} } -func (m *ListZonesRequest) String() string { return proto.CompactTextString(m) } -func (*ListZonesRequest) ProtoMessage() {} -func (*ListZonesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *ListZonesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Response message for BigtableClusterService.ListZones. -type ListZonesResponse struct { - // The list of requested zones. - Zones []*Zone `protobuf:"bytes,1,rep,name=zones" json:"zones,omitempty"` -} - -func (m *ListZonesResponse) Reset() { *m = ListZonesResponse{} } -func (m *ListZonesResponse) String() string { return proto.CompactTextString(m) } -func (*ListZonesResponse) ProtoMessage() {} -func (*ListZonesResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ListZonesResponse) GetZones() []*Zone { - if m != nil { - return m.Zones - } - return nil -} - -// Request message for BigtableClusterService.GetCluster. -type GetClusterRequest struct { - // The unique name of the requested cluster. - // Values are of the form projects/<project>/zones/<zone>/clusters/<cluster> - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetClusterRequest) Reset() { *m = GetClusterRequest{} } -func (m *GetClusterRequest) String() string { return proto.CompactTextString(m) } -func (*GetClusterRequest) ProtoMessage() {} -func (*GetClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *GetClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for BigtableClusterService.ListClusters. -type ListClustersRequest struct { - // The unique name of the project for which a list of clusters is requested. - // Values are of the form projects/<project> - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *ListClustersRequest) Reset() { *m = ListClustersRequest{} } -func (m *ListClustersRequest) String() string { return proto.CompactTextString(m) } -func (*ListClustersRequest) ProtoMessage() {} -func (*ListClustersRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *ListClustersRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Response message for BigtableClusterService.ListClusters. -type ListClustersResponse struct { - // The list of requested Clusters. - Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters" json:"clusters,omitempty"` - // The zones for which clusters could not be retrieved. - FailedZones []*Zone `protobuf:"bytes,2,rep,name=failed_zones,json=failedZones" json:"failed_zones,omitempty"` -} - -func (m *ListClustersResponse) Reset() { *m = ListClustersResponse{} } -func (m *ListClustersResponse) String() string { return proto.CompactTextString(m) } -func (*ListClustersResponse) ProtoMessage() {} -func (*ListClustersResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *ListClustersResponse) GetClusters() []*Cluster { - if m != nil { - return m.Clusters - } - return nil -} - -func (m *ListClustersResponse) GetFailedZones() []*Zone { - if m != nil { - return m.FailedZones - } - return nil -} - -// Request message for BigtableClusterService.CreateCluster. -type CreateClusterRequest struct { - // The unique name of the zone in which to create the cluster. - // Values are of the form projects/<project>/zones/<zone> - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The id to be used when referring to the new cluster within its zone, - // e.g. just the "test-cluster" section of the full name - // "projects/<project>/zones/<zone>/clusters/test-cluster". - ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The cluster to create. - // The "name", "delete_time", and "current_operation" fields must be left - // blank. - Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"` -} - -func (m *CreateClusterRequest) Reset() { *m = CreateClusterRequest{} } -func (m *CreateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*CreateClusterRequest) ProtoMessage() {} -func (*CreateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *CreateClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *CreateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -// Metadata type for the operation returned by -// BigtableClusterService.CreateCluster. -type CreateClusterMetadata struct { - // The request which prompted the creation of this operation. - OriginalRequest *CreateClusterRequest `protobuf:"bytes,1,opt,name=original_request,json=originalRequest" json:"original_request,omitempty"` - // The time at which original_request was received. - RequestTime *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which this operation failed or was completed successfully. - FinishTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *CreateClusterMetadata) Reset() { *m = CreateClusterMetadata{} } -func (m *CreateClusterMetadata) String() string { return proto.CompactTextString(m) } -func (*CreateClusterMetadata) ProtoMessage() {} -func (*CreateClusterMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *CreateClusterMetadata) GetOriginalRequest() *CreateClusterRequest { - if m != nil { - return m.OriginalRequest - } - return nil -} - -func (m *CreateClusterMetadata) GetRequestTime() *google_protobuf3.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *CreateClusterMetadata) GetFinishTime() *google_protobuf3.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -// Metadata type for the operation returned by -// BigtableClusterService.UpdateCluster. -type UpdateClusterMetadata struct { - // The request which prompted the creation of this operation. - OriginalRequest *Cluster `protobuf:"bytes,1,opt,name=original_request,json=originalRequest" json:"original_request,omitempty"` - // The time at which original_request was received. - RequestTime *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which this operation was cancelled. If set, this operation is - // in the process of undoing itself (which is guaranteed to succeed) and - // cannot be cancelled again. - CancelTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=cancel_time,json=cancelTime" json:"cancel_time,omitempty"` - // The time at which this operation failed or was completed successfully. - FinishTime *google_protobuf3.Timestamp `protobuf:"bytes,4,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *UpdateClusterMetadata) Reset() { *m = UpdateClusterMetadata{} } -func (m *UpdateClusterMetadata) String() string { return proto.CompactTextString(m) } -func (*UpdateClusterMetadata) ProtoMessage() {} -func (*UpdateClusterMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *UpdateClusterMetadata) GetOriginalRequest() *Cluster { - if m != nil { - return m.OriginalRequest - } - return nil -} - -func (m *UpdateClusterMetadata) GetRequestTime() *google_protobuf3.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *UpdateClusterMetadata) GetCancelTime() *google_protobuf3.Timestamp { - if m != nil { - return m.CancelTime - } - return nil -} - -func (m *UpdateClusterMetadata) GetFinishTime() *google_protobuf3.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -// Request message for BigtableClusterService.DeleteCluster. -type DeleteClusterRequest struct { - // The unique name of the cluster to be deleted. - // Values are of the form projects/<project>/zones/<zone>/clusters/<cluster> - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteClusterRequest) Reset() { *m = DeleteClusterRequest{} } -func (m *DeleteClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteClusterRequest) ProtoMessage() {} -func (*DeleteClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *DeleteClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for BigtableClusterService.UndeleteCluster. -type UndeleteClusterRequest struct { - // The unique name of the cluster to be un-deleted. - // Values are of the form projects/<project>/zones/<zone>/clusters/<cluster> - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *UndeleteClusterRequest) Reset() { *m = UndeleteClusterRequest{} } -func (m *UndeleteClusterRequest) String() string { return proto.CompactTextString(m) } -func (*UndeleteClusterRequest) ProtoMessage() {} -func (*UndeleteClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{9} } - -func (m *UndeleteClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Metadata type for the operation returned by -// BigtableClusterService.UndeleteCluster. -type UndeleteClusterMetadata struct { - // The time at which the original request was received. - RequestTime *google_protobuf3.Timestamp `protobuf:"bytes,1,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which this operation failed or was completed successfully. - FinishTime *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *UndeleteClusterMetadata) Reset() { *m = UndeleteClusterMetadata{} } -func (m *UndeleteClusterMetadata) String() string { return proto.CompactTextString(m) } -func (*UndeleteClusterMetadata) ProtoMessage() {} -func (*UndeleteClusterMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{10} } - -func (m *UndeleteClusterMetadata) GetRequestTime() *google_protobuf3.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *UndeleteClusterMetadata) GetFinishTime() *google_protobuf3.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -// Metadata type for operations initiated by the V2 BigtableAdmin service. -// More complete information for such operations is available via the V2 API. -type V2OperationMetadata struct { -} - -func (m *V2OperationMetadata) Reset() { *m = V2OperationMetadata{} } -func (m *V2OperationMetadata) String() string { return proto.CompactTextString(m) } -func (*V2OperationMetadata) ProtoMessage() {} -func (*V2OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{11} } - -func init() { - proto.RegisterType((*ListZonesRequest)(nil), "google.bigtable.admin.cluster.v1.ListZonesRequest") - proto.RegisterType((*ListZonesResponse)(nil), "google.bigtable.admin.cluster.v1.ListZonesResponse") - proto.RegisterType((*GetClusterRequest)(nil), "google.bigtable.admin.cluster.v1.GetClusterRequest") - proto.RegisterType((*ListClustersRequest)(nil), "google.bigtable.admin.cluster.v1.ListClustersRequest") - proto.RegisterType((*ListClustersResponse)(nil), "google.bigtable.admin.cluster.v1.ListClustersResponse") - proto.RegisterType((*CreateClusterRequest)(nil), "google.bigtable.admin.cluster.v1.CreateClusterRequest") - proto.RegisterType((*CreateClusterMetadata)(nil), "google.bigtable.admin.cluster.v1.CreateClusterMetadata") - proto.RegisterType((*UpdateClusterMetadata)(nil), "google.bigtable.admin.cluster.v1.UpdateClusterMetadata") - proto.RegisterType((*DeleteClusterRequest)(nil), "google.bigtable.admin.cluster.v1.DeleteClusterRequest") - proto.RegisterType((*UndeleteClusterRequest)(nil), "google.bigtable.admin.cluster.v1.UndeleteClusterRequest") - proto.RegisterType((*UndeleteClusterMetadata)(nil), "google.bigtable.admin.cluster.v1.UndeleteClusterMetadata") - proto.RegisterType((*V2OperationMetadata)(nil), "google.bigtable.admin.cluster.v1.V2OperationMetadata") -} - -func init() { - proto.RegisterFile("google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto", fileDescriptor2) -} - -var fileDescriptor2 = []byte{ - // 541 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4d, 0x6f, 0xd3, 0x40, - 0x10, 0xd5, 0x26, 0xe5, 0xa3, 0xe3, 0x4a, 0xb4, 0x6e, 0x02, 0x51, 0x24, 0x44, 0x64, 0x50, 0x69, - 0x11, 0xb2, 0xd5, 0x20, 0x71, 0x69, 0xb9, 0x24, 0xa0, 0x52, 0x89, 0x8a, 0x12, 0x5a, 0x0e, 0xbd, - 0x58, 0x9b, 0x78, 0x62, 0x56, 0xb2, 0x77, 0x8d, 0x77, 0x93, 0x03, 0x3f, 0x82, 0x1b, 0xfc, 0x04, - 0xc4, 0x2f, 0xe4, 0x8c, 0xec, 0xdd, 0x8d, 0x68, 0x95, 0xd6, 0xb1, 0x10, 0xb7, 0xdd, 0x99, 0xf7, - 0x66, 0xde, 0x9b, 0x1d, 0x69, 0xe1, 0x6d, 0x2c, 0x44, 0x9c, 0x60, 0x30, 0x66, 0xb1, 0xa2, 0xe3, - 0x04, 0x03, 0x1a, 0xa5, 0x8c, 0x07, 0x93, 0x64, 0x26, 0x15, 0xe6, 0xc1, 0x7c, 0x7f, 0x91, 0x09, - 0x4d, 0x2c, 0x94, 0x98, 0xcf, 0xd9, 0x04, 0xc3, 0x14, 0xa5, 0xa4, 0x31, 0x4a, 0x3f, 0xcb, 0x85, - 0x12, 0x6e, 0x4f, 0x57, 0xf2, 0x2d, 0xde, 0x2f, 0x2b, 0xf9, 0x86, 0xe5, 0xcf, 0xf7, 0xbb, 0x87, - 0xf5, 0x7b, 0x45, 0x54, 0x51, 0x5d, 0xbf, 0xfb, 0xc8, 0xb0, 0xcb, 0xdb, 0x78, 0x36, 0x0d, 0x14, - 0x4b, 0x51, 0x2a, 0x9a, 0x66, 0x1a, 0xe0, 0xed, 0xc0, 0xe6, 0x3b, 0x26, 0xd5, 0x85, 0xe0, 0x28, - 0x47, 0xf8, 0x65, 0x86, 0x52, 0xb9, 0x2e, 0xac, 0x71, 0x9a, 0x62, 0x87, 0xf4, 0xc8, 0xee, 0xfa, - 0xa8, 0x3c, 0x7b, 0x1f, 0x60, 0xeb, 0x2f, 0x9c, 0xcc, 0x04, 0x97, 0xe8, 0x1e, 0xc2, 0xad, 0xaf, - 0x45, 0xa0, 0x43, 0x7a, 0xcd, 0x5d, 0xa7, 0xbf, 0xe3, 0x57, 0xb9, 0xf1, 0x0b, 0xfe, 0x48, 0x93, - 0xbc, 0xa7, 0xb0, 0x75, 0x84, 0x6a, 0xa8, 0x93, 0x37, 0xf5, 0xde, 0x83, 0xed, 0xa2, 0xb7, 0x41, - 0xde, 0x28, 0xf3, 0x17, 0x81, 0xd6, 0x65, 0xac, 0x91, 0xfa, 0x06, 0xee, 0x1a, 0x19, 0x56, 0xed, - 0x5e, 0xb5, 0x5a, 0xab, 0x6d, 0x41, 0x75, 0x8f, 0x61, 0x63, 0x4a, 0x59, 0x82, 0x51, 0xa8, 0x8d, - 0x37, 0x6a, 0x19, 0x77, 0x34, 0xb7, 0x1c, 0xa2, 0xf7, 0x8d, 0x40, 0x6b, 0x98, 0x23, 0x55, 0x58, - 0x3d, 0x02, 0xf7, 0x21, 0x80, 0x7d, 0x5d, 0x16, 0x75, 0x1a, 0x65, 0x66, 0xdd, 0x44, 0x8e, 0x23, - 0x77, 0x08, 0x77, 0xcc, 0xa5, 0xd3, 0xec, 0x91, 0x7a, 0xe6, 0x2c, 0xd3, 0xfb, 0x4d, 0xa0, 0x7d, - 0x49, 0xd0, 0x09, 0x2a, 0x5a, 0xec, 0x92, 0x4b, 0x61, 0x53, 0xe4, 0x2c, 0x66, 0x9c, 0x26, 0x61, - 0xae, 0x55, 0x96, 0xea, 0x9c, 0xfe, 0xcb, 0x15, 0xfa, 0x2c, 0xf1, 0x38, 0xba, 0x67, 0xeb, 0x59, - 0xd3, 0xaf, 0x60, 0xc3, 0x54, 0x0e, 0x8b, 0x15, 0x2d, 0x2d, 0x3a, 0xfd, 0xae, 0x2d, 0x6f, 0xf7, - 0xd7, 0x3f, 0xb3, 0xfb, 0x3b, 0x72, 0x0c, 0xbe, 0x88, 0xb8, 0x07, 0xe0, 0x4c, 0x19, 0x67, 0xf2, - 0xb3, 0x66, 0x37, 0x2b, 0xd9, 0xa0, 0xe1, 0x45, 0xc0, 0xfb, 0xd9, 0x80, 0xf6, 0x79, 0x16, 0x2d, - 0x31, 0x7e, 0x76, 0xad, 0xf1, 0x1a, 0x03, 0xfe, 0x0f, 0x5e, 0x27, 0x94, 0x4f, 0x30, 0x59, 0xd9, - 0xab, 0x86, 0x2f, 0x1b, 0xd4, 0x5a, 0xad, 0x41, 0x3d, 0x83, 0xd6, 0x6b, 0x4c, 0x70, 0x95, 0x8d, - 0xf5, 0x9e, 0xc3, 0xfd, 0x73, 0x1e, 0xad, 0x8a, 0xfe, 0x4e, 0xe0, 0xc1, 0x15, 0xf8, 0xe2, 0x11, - 0xae, 0x8e, 0x8b, 0xfc, 0xd3, 0x6a, 0x34, 0x6a, 0x39, 0x6e, 0xc3, 0xf6, 0xa7, 0xfe, 0xfb, 0x0c, - 0x73, 0xaa, 0x98, 0xe0, 0x56, 0xd2, 0xe0, 0x07, 0x81, 0x27, 0x13, 0x91, 0x56, 0xee, 0xc0, 0xe0, - 0xf1, 0xc0, 0xa4, 0x8c, 0xa9, 0x8f, 0xfa, 0x1b, 0x38, 0x31, 0xbf, 0xc0, 0x69, 0xd1, 0xfd, 0x94, - 0x5c, 0x1c, 0x99, 0x42, 0xb1, 0x48, 0x28, 0x8f, 0x7d, 0x91, 0xc7, 0x41, 0x8c, 0xbc, 0xd4, 0x16, - 0xe8, 0x14, 0xcd, 0x98, 0xbc, 0xfe, 0x0f, 0x38, 0x30, 0xc7, 0xf1, 0xed, 0x92, 0xf3, 0xe2, 0x4f, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x75, 0x68, 0x13, 0xa2, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_data.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_data.pb.go deleted file mode 100644 index 2c6183d8..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_data.pb.go +++ /dev/null @@ -1,451 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/table/v1/bigtable_table_data.proto - -/* -Package table is a generated protocol buffer package. - -It is generated from these files: - google/bigtable/admin/table/v1/bigtable_table_data.proto - google/bigtable/admin/table/v1/bigtable_table_service.proto - google/bigtable/admin/table/v1/bigtable_table_service_messages.proto - -It has these top-level messages: - Table - ColumnFamily - GcRule - CreateTableRequest - ListTablesRequest - ListTablesResponse - GetTableRequest - DeleteTableRequest - RenameTableRequest - CreateColumnFamilyRequest - DeleteColumnFamilyRequest - BulkDeleteRowsRequest -*/ -package table - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type Table_TimestampGranularity int32 - -const ( - Table_MILLIS Table_TimestampGranularity = 0 -) - -var Table_TimestampGranularity_name = map[int32]string{ - 0: "MILLIS", -} -var Table_TimestampGranularity_value = map[string]int32{ - "MILLIS": 0, -} - -func (x Table_TimestampGranularity) String() string { - return proto.EnumName(Table_TimestampGranularity_name, int32(x)) -} -func (Table_TimestampGranularity) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 0} -} - -// A collection of user data indexed by row, column, and timestamp. -// Each table is served using the resources of its parent cluster. -type Table struct { - // A unique identifier of the form - // <cluster_name>/tables/[_a-zA-Z0-9][-_.a-zA-Z0-9]* - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // If this Table is in the process of being created, the Operation used to - // track its progress. As long as this operation is present, the Table will - // not accept any Table Admin or Read/Write requests. - CurrentOperation *google_longrunning.Operation `protobuf:"bytes,2,opt,name=current_operation,json=currentOperation" json:"current_operation,omitempty"` - // The column families configured for this table, mapped by column family id. - ColumnFamilies map[string]*ColumnFamily `protobuf:"bytes,3,rep,name=column_families,json=columnFamilies" json:"column_families,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The granularity (e.g. MILLIS, MICROS) at which timestamps are stored in - // this table. Timestamps not matching the granularity will be rejected. - // Cannot be changed once the table is created. - Granularity Table_TimestampGranularity `protobuf:"varint,4,opt,name=granularity,enum=google.bigtable.admin.table.v1.Table_TimestampGranularity" json:"granularity,omitempty"` -} - -func (m *Table) Reset() { *m = Table{} } -func (m *Table) String() string { return proto.CompactTextString(m) } -func (*Table) ProtoMessage() {} -func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Table) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Table) GetCurrentOperation() *google_longrunning.Operation { - if m != nil { - return m.CurrentOperation - } - return nil -} - -func (m *Table) GetColumnFamilies() map[string]*ColumnFamily { - if m != nil { - return m.ColumnFamilies - } - return nil -} - -func (m *Table) GetGranularity() Table_TimestampGranularity { - if m != nil { - return m.Granularity - } - return Table_MILLIS -} - -// A set of columns within a table which share a common configuration. -type ColumnFamily struct { - // A unique identifier of the form <table_name>/columnFamilies/[-_.a-zA-Z0-9]+ - // The last segment is the same as the "name" field in - // google.bigtable.v1.Family. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Garbage collection expression specified by the following grammar: - // GC = EXPR - // | "" ; - // EXPR = EXPR, "||", EXPR (* lowest precedence *) - // | EXPR, "&&", EXPR - // | "(", EXPR, ")" (* highest precedence *) - // | PROP ; - // PROP = "version() >", NUM32 - // | "age() >", NUM64, [ UNIT ] ; - // NUM32 = non-zero-digit { digit } ; (* # NUM32 <= 2^32 - 1 *) - // NUM64 = non-zero-digit { digit } ; (* # NUM64 <= 2^63 - 1 *) - // UNIT = "d" | "h" | "m" (* d=days, h=hours, m=minutes, else micros *) - // GC expressions can be up to 500 characters in length - // - // The different types of PROP are defined as follows: - // version() - cell index, counting from most recent and starting at 1 - // age() - age of the cell (current time minus cell timestamp) - // - // Example: "version() > 3 || (age() > 3d && version() > 1)" - // drop cells beyond the most recent three, and drop cells older than three - // days unless they're the most recent cell in the row/column - // - // Garbage collection executes opportunistically in the background, and so - // it's possible for reads to return a cell even if it matches the active GC - // expression for its family. - GcExpression string `protobuf:"bytes,2,opt,name=gc_expression,json=gcExpression" json:"gc_expression,omitempty"` - // Garbage collection rule specified as a protobuf. - // Supersedes `gc_expression`. - // Must serialize to at most 500 bytes. - // - // NOTE: Garbage collection executes opportunistically in the background, and - // so it's possible for reads to return a cell even if it matches the active - // GC expression for its family. - GcRule *GcRule `protobuf:"bytes,3,opt,name=gc_rule,json=gcRule" json:"gc_rule,omitempty"` -} - -func (m *ColumnFamily) Reset() { *m = ColumnFamily{} } -func (m *ColumnFamily) String() string { return proto.CompactTextString(m) } -func (*ColumnFamily) ProtoMessage() {} -func (*ColumnFamily) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ColumnFamily) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ColumnFamily) GetGcExpression() string { - if m != nil { - return m.GcExpression - } - return "" -} - -func (m *ColumnFamily) GetGcRule() *GcRule { - if m != nil { - return m.GcRule - } - return nil -} - -// Rule for determining which cells to delete during garbage collection. -type GcRule struct { - // Types that are valid to be assigned to Rule: - // *GcRule_MaxNumVersions - // *GcRule_MaxAge - // *GcRule_Intersection_ - // *GcRule_Union_ - Rule isGcRule_Rule `protobuf_oneof:"rule"` -} - -func (m *GcRule) Reset() { *m = GcRule{} } -func (m *GcRule) String() string { return proto.CompactTextString(m) } -func (*GcRule) ProtoMessage() {} -func (*GcRule) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isGcRule_Rule interface { - isGcRule_Rule() -} - -type GcRule_MaxNumVersions struct { - MaxNumVersions int32 `protobuf:"varint,1,opt,name=max_num_versions,json=maxNumVersions,oneof"` -} -type GcRule_MaxAge struct { - MaxAge *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=max_age,json=maxAge,oneof"` -} -type GcRule_Intersection_ struct { - Intersection *GcRule_Intersection `protobuf:"bytes,3,opt,name=intersection,oneof"` -} -type GcRule_Union_ struct { - Union *GcRule_Union `protobuf:"bytes,4,opt,name=union,oneof"` -} - -func (*GcRule_MaxNumVersions) isGcRule_Rule() {} -func (*GcRule_MaxAge) isGcRule_Rule() {} -func (*GcRule_Intersection_) isGcRule_Rule() {} -func (*GcRule_Union_) isGcRule_Rule() {} - -func (m *GcRule) GetRule() isGcRule_Rule { - if m != nil { - return m.Rule - } - return nil -} - -func (m *GcRule) GetMaxNumVersions() int32 { - if x, ok := m.GetRule().(*GcRule_MaxNumVersions); ok { - return x.MaxNumVersions - } - return 0 -} - -func (m *GcRule) GetMaxAge() *google_protobuf3.Duration { - if x, ok := m.GetRule().(*GcRule_MaxAge); ok { - return x.MaxAge - } - return nil -} - -func (m *GcRule) GetIntersection() *GcRule_Intersection { - if x, ok := m.GetRule().(*GcRule_Intersection_); ok { - return x.Intersection - } - return nil -} - -func (m *GcRule) GetUnion() *GcRule_Union { - if x, ok := m.GetRule().(*GcRule_Union_); ok { - return x.Union - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*GcRule) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _GcRule_OneofMarshaler, _GcRule_OneofUnmarshaler, _GcRule_OneofSizer, []interface{}{ - (*GcRule_MaxNumVersions)(nil), - (*GcRule_MaxAge)(nil), - (*GcRule_Intersection_)(nil), - (*GcRule_Union_)(nil), - } -} - -func _GcRule_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*GcRule) - // rule - switch x := m.Rule.(type) { - case *GcRule_MaxNumVersions: - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.MaxNumVersions)) - case *GcRule_MaxAge: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.MaxAge); err != nil { - return err - } - case *GcRule_Intersection_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Intersection); err != nil { - return err - } - case *GcRule_Union_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Union); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("GcRule.Rule has unexpected type %T", x) - } - return nil -} - -func _GcRule_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*GcRule) - switch tag { - case 1: // rule.max_num_versions - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Rule = &GcRule_MaxNumVersions{int32(x)} - return true, err - case 2: // rule.max_age - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf3.Duration) - err := b.DecodeMessage(msg) - m.Rule = &GcRule_MaxAge{msg} - return true, err - case 3: // rule.intersection - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GcRule_Intersection) - err := b.DecodeMessage(msg) - m.Rule = &GcRule_Intersection_{msg} - return true, err - case 4: // rule.union - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GcRule_Union) - err := b.DecodeMessage(msg) - m.Rule = &GcRule_Union_{msg} - return true, err - default: - return false, nil - } -} - -func _GcRule_OneofSizer(msg proto.Message) (n int) { - m := msg.(*GcRule) - // rule - switch x := m.Rule.(type) { - case *GcRule_MaxNumVersions: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.MaxNumVersions)) - case *GcRule_MaxAge: - s := proto.Size(x.MaxAge) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *GcRule_Intersection_: - s := proto.Size(x.Intersection) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *GcRule_Union_: - s := proto.Size(x.Union) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A GcRule which deletes cells matching all of the given rules. -type GcRule_Intersection struct { - // Only delete cells which would be deleted by every element of `rules`. - Rules []*GcRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` -} - -func (m *GcRule_Intersection) Reset() { *m = GcRule_Intersection{} } -func (m *GcRule_Intersection) String() string { return proto.CompactTextString(m) } -func (*GcRule_Intersection) ProtoMessage() {} -func (*GcRule_Intersection) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *GcRule_Intersection) GetRules() []*GcRule { - if m != nil { - return m.Rules - } - return nil -} - -// A GcRule which deletes cells matching any of the given rules. -type GcRule_Union struct { - // Delete cells which would be deleted by any element of `rules`. - Rules []*GcRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` -} - -func (m *GcRule_Union) Reset() { *m = GcRule_Union{} } -func (m *GcRule_Union) String() string { return proto.CompactTextString(m) } -func (*GcRule_Union) ProtoMessage() {} -func (*GcRule_Union) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} } - -func (m *GcRule_Union) GetRules() []*GcRule { - if m != nil { - return m.Rules - } - return nil -} - -func init() { - proto.RegisterType((*Table)(nil), "google.bigtable.admin.table.v1.Table") - proto.RegisterType((*ColumnFamily)(nil), "google.bigtable.admin.table.v1.ColumnFamily") - proto.RegisterType((*GcRule)(nil), "google.bigtable.admin.table.v1.GcRule") - proto.RegisterType((*GcRule_Intersection)(nil), "google.bigtable.admin.table.v1.GcRule.Intersection") - proto.RegisterType((*GcRule_Union)(nil), "google.bigtable.admin.table.v1.GcRule.Union") - proto.RegisterEnum("google.bigtable.admin.table.v1.Table_TimestampGranularity", Table_TimestampGranularity_name, Table_TimestampGranularity_value) -} - -func init() { - proto.RegisterFile("google/bigtable/admin/table/v1/bigtable_table_data.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 579 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0x61, 0x6b, 0xd3, 0x40, - 0x18, 0xc7, 0x9b, 0xa5, 0xed, 0xd8, 0xb3, 0x3a, 0xeb, 0x29, 0x52, 0x0b, 0x4a, 0xc9, 0x40, 0x8a, - 0xc8, 0x85, 0x6d, 0xbe, 0x98, 0x53, 0x10, 0xbb, 0xcd, 0x6d, 0x32, 0x75, 0xc4, 0x29, 0x28, 0x42, - 0xb8, 0x66, 0xb7, 0x23, 0x98, 0xbb, 0x2b, 0x97, 0x5c, 0x69, 0x5f, 0xfb, 0xc6, 0x8f, 0xe2, 0xa7, - 0xf0, 0xb3, 0x49, 0xee, 0x2e, 0x35, 0x83, 0xe9, 0x26, 0xbe, 0x49, 0x9e, 0x3c, 0xf7, 0xfc, 0x7f, - 0xf7, 0xcf, 0xf3, 0x5c, 0x02, 0xdb, 0x4c, 0x4a, 0x96, 0xd1, 0x70, 0x9c, 0xb2, 0x82, 0x8c, 0x33, - 0x1a, 0x92, 0x33, 0x9e, 0x8a, 0xd0, 0xc6, 0xd3, 0x8d, 0x45, 0x3e, 0xb6, 0xd7, 0x33, 0x52, 0x10, - 0x3c, 0x51, 0xb2, 0x90, 0xe8, 0x81, 0x55, 0xe2, 0xaa, 0x02, 0x1b, 0x25, 0xb6, 0xf1, 0x74, 0xa3, - 0xbf, 0xee, 0xc8, 0x99, 0x14, 0x4c, 0x69, 0x21, 0x52, 0xc1, 0x42, 0x39, 0xa1, 0x8a, 0x14, 0xa9, - 0x14, 0xb9, 0x85, 0xf4, 0x1d, 0x24, 0x34, 0x4f, 0x63, 0x7d, 0x1e, 0x9e, 0x69, 0x5b, 0x60, 0xd7, - 0x83, 0x9f, 0x3e, 0xb4, 0x4e, 0x4b, 0x22, 0x42, 0xd0, 0x14, 0x84, 0xd3, 0x9e, 0x37, 0xf0, 0x86, - 0x2b, 0x91, 0x89, 0xd1, 0x6b, 0xb8, 0x95, 0x68, 0xa5, 0xa8, 0x28, 0xe2, 0x05, 0xb9, 0xb7, 0x34, - 0xf0, 0x86, 0xab, 0x9b, 0xf7, 0xb1, 0xb3, 0x57, 0xdb, 0x1e, 0xbf, 0xab, 0x8a, 0xa2, 0xae, 0xd3, - 0x2d, 0x32, 0x68, 0x0c, 0x37, 0x13, 0x99, 0x69, 0x2e, 0xe2, 0x73, 0xc2, 0xd3, 0x2c, 0xa5, 0x79, - 0xcf, 0x1f, 0xf8, 0xc3, 0xd5, 0xcd, 0xa7, 0xf8, 0xef, 0x2f, 0x8a, 0x8d, 0x3f, 0xbc, 0x6b, 0xc4, - 0xaf, 0x9c, 0x76, 0x5f, 0x14, 0x6a, 0x1e, 0xad, 0x25, 0x17, 0x92, 0xe8, 0x0b, 0xac, 0x32, 0x45, - 0x84, 0xce, 0x88, 0x4a, 0x8b, 0x79, 0xaf, 0x39, 0xf0, 0x86, 0x6b, 0x9b, 0x3b, 0xd7, 0xe3, 0x9f, - 0xa6, 0x9c, 0xe6, 0x05, 0xe1, 0x93, 0x83, 0xdf, 0x84, 0xa8, 0x8e, 0xeb, 0x4b, 0xb8, 0x7d, 0x89, - 0x09, 0xd4, 0x05, 0xff, 0x2b, 0x9d, 0xbb, 0xbe, 0x95, 0x21, 0x1a, 0x41, 0x6b, 0x4a, 0x32, 0x4d, - 0x5d, 0xab, 0x1e, 0x5f, 0x65, 0xa0, 0x46, 0x9d, 0x47, 0x56, 0xba, 0xb3, 0xb4, 0xed, 0x05, 0x01, - 0xdc, 0xb9, 0xcc, 0x15, 0x02, 0x68, 0xbf, 0x39, 0x3a, 0x3e, 0x3e, 0x7a, 0xdf, 0x6d, 0x04, 0xdf, - 0x3d, 0xe8, 0xd4, 0xf5, 0x97, 0xce, 0x71, 0x1d, 0x6e, 0xb0, 0x24, 0xa6, 0xb3, 0x89, 0xa2, 0x79, - 0x5e, 0xcd, 0x70, 0x25, 0xea, 0xb0, 0x64, 0x7f, 0x91, 0x43, 0x2f, 0x60, 0x99, 0x25, 0xb1, 0xd2, - 0x19, 0xed, 0xf9, 0xc6, 0xf7, 0xc3, 0xab, 0x7c, 0x1f, 0x24, 0x91, 0xce, 0x68, 0xd4, 0x66, 0xe6, - 0x1e, 0xfc, 0xf0, 0xa1, 0x6d, 0x53, 0xe8, 0x11, 0x74, 0x39, 0x99, 0xc5, 0x42, 0xf3, 0x78, 0x4a, - 0x55, 0x89, 0xcf, 0x8d, 0xa1, 0xd6, 0x61, 0x23, 0x5a, 0xe3, 0x64, 0xf6, 0x56, 0xf3, 0x8f, 0x2e, - 0x8f, 0x9e, 0xc0, 0x72, 0x59, 0x4b, 0x58, 0xd5, 0xaf, 0x7b, 0xd5, 0xbe, 0xd5, 0xa1, 0xc5, 0x7b, - 0xee, 0xd0, 0x1e, 0x36, 0xa2, 0x36, 0x27, 0xb3, 0x97, 0x8c, 0xa2, 0x4f, 0xd0, 0x49, 0x45, 0x41, - 0x55, 0x4e, 0x13, 0x73, 0x2a, 0xad, 0xe5, 0xad, 0xeb, 0x59, 0xc6, 0x47, 0x35, 0xe9, 0x61, 0x23, - 0xba, 0x80, 0x42, 0x7b, 0xd0, 0xd2, 0xa2, 0x64, 0x36, 0xaf, 0x37, 0x3e, 0xc7, 0xfc, 0x20, 0x2c, - 0xcc, 0x8a, 0xfb, 0xc7, 0xd0, 0xa9, 0xef, 0x82, 0x9e, 0x43, 0xab, 0xec, 0x6d, 0xd9, 0x07, 0xff, - 0x1f, 0x9a, 0x6b, 0x45, 0xfd, 0x7d, 0x68, 0x19, 0xfe, 0xff, 0x61, 0x46, 0x6d, 0x68, 0x96, 0xc1, - 0xe8, 0x9b, 0x07, 0x41, 0x22, 0xf9, 0x15, 0xe2, 0xd1, 0xdd, 0x91, 0x5b, 0x30, 0x9f, 0xc8, 0x1e, - 0x29, 0xc8, 0x49, 0x39, 0x92, 0x13, 0xef, 0xf3, 0xae, 0x53, 0x32, 0x99, 0x11, 0xc1, 0xb0, 0x54, - 0x2c, 0x64, 0x54, 0x98, 0x81, 0x85, 0x76, 0x89, 0x4c, 0xd2, 0xfc, 0x4f, 0x7f, 0xbd, 0x67, 0x26, - 0x18, 0xb7, 0x4d, 0xfd, 0xd6, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x80, 0x76, 0xdc, 0x24, - 0x05, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_service.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_service.pb.go deleted file mode 100644 index 3d5049ab..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_service.pb.go +++ /dev/null @@ -1,423 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/table/v1/bigtable_table_service.proto - -package table - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for BigtableTableService service - -type BigtableTableServiceClient interface { - // Creates a new table, to be served from a specified cluster. - // The table can be created with a full set of initial column families, - // specified in the request. - CreateTable(ctx context.Context, in *CreateTableRequest, opts ...grpc.CallOption) (*Table, error) - // Lists the names of all tables served from a specified cluster. - ListTables(ctx context.Context, in *ListTablesRequest, opts ...grpc.CallOption) (*ListTablesResponse, error) - // Gets the schema of the specified table, including its column families. - GetTable(ctx context.Context, in *GetTableRequest, opts ...grpc.CallOption) (*Table, error) - // Permanently deletes a specified table and all of its data. - DeleteTable(ctx context.Context, in *DeleteTableRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Changes the name of a specified table. - // Cannot be used to move tables between clusters, zones, or projects. - RenameTable(ctx context.Context, in *RenameTableRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Creates a new column family within a specified table. - CreateColumnFamily(ctx context.Context, in *CreateColumnFamilyRequest, opts ...grpc.CallOption) (*ColumnFamily, error) - // Changes the configuration of a specified column family. - UpdateColumnFamily(ctx context.Context, in *ColumnFamily, opts ...grpc.CallOption) (*ColumnFamily, error) - // Permanently deletes a specified column family and all of its data. - DeleteColumnFamily(ctx context.Context, in *DeleteColumnFamilyRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Delete all rows in a table corresponding to a particular prefix - BulkDeleteRows(ctx context.Context, in *BulkDeleteRowsRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type bigtableTableServiceClient struct { - cc *grpc.ClientConn -} - -func NewBigtableTableServiceClient(cc *grpc.ClientConn) BigtableTableServiceClient { - return &bigtableTableServiceClient{cc} -} - -func (c *bigtableTableServiceClient) CreateTable(ctx context.Context, in *CreateTableRequest, opts ...grpc.CallOption) (*Table, error) { - out := new(Table) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/CreateTable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableServiceClient) ListTables(ctx context.Context, in *ListTablesRequest, opts ...grpc.CallOption) (*ListTablesResponse, error) { - out := new(ListTablesResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/ListTables", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableServiceClient) GetTable(ctx context.Context, in *GetTableRequest, opts ...grpc.CallOption) (*Table, error) { - out := new(Table) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/GetTable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableServiceClient) DeleteTable(ctx context.Context, in *DeleteTableRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/DeleteTable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableServiceClient) RenameTable(ctx context.Context, in *RenameTableRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/RenameTable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableServiceClient) CreateColumnFamily(ctx context.Context, in *CreateColumnFamilyRequest, opts ...grpc.CallOption) (*ColumnFamily, error) { - out := new(ColumnFamily) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/CreateColumnFamily", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableServiceClient) UpdateColumnFamily(ctx context.Context, in *ColumnFamily, opts ...grpc.CallOption) (*ColumnFamily, error) { - out := new(ColumnFamily) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/UpdateColumnFamily", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableServiceClient) DeleteColumnFamily(ctx context.Context, in *DeleteColumnFamilyRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/DeleteColumnFamily", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableServiceClient) BulkDeleteRows(ctx context.Context, in *BulkDeleteRowsRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.table.v1.BigtableTableService/BulkDeleteRows", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for BigtableTableService service - -type BigtableTableServiceServer interface { - // Creates a new table, to be served from a specified cluster. - // The table can be created with a full set of initial column families, - // specified in the request. - CreateTable(context.Context, *CreateTableRequest) (*Table, error) - // Lists the names of all tables served from a specified cluster. - ListTables(context.Context, *ListTablesRequest) (*ListTablesResponse, error) - // Gets the schema of the specified table, including its column families. - GetTable(context.Context, *GetTableRequest) (*Table, error) - // Permanently deletes a specified table and all of its data. - DeleteTable(context.Context, *DeleteTableRequest) (*google_protobuf2.Empty, error) - // Changes the name of a specified table. - // Cannot be used to move tables between clusters, zones, or projects. - RenameTable(context.Context, *RenameTableRequest) (*google_protobuf2.Empty, error) - // Creates a new column family within a specified table. - CreateColumnFamily(context.Context, *CreateColumnFamilyRequest) (*ColumnFamily, error) - // Changes the configuration of a specified column family. - UpdateColumnFamily(context.Context, *ColumnFamily) (*ColumnFamily, error) - // Permanently deletes a specified column family and all of its data. - DeleteColumnFamily(context.Context, *DeleteColumnFamilyRequest) (*google_protobuf2.Empty, error) - // Delete all rows in a table corresponding to a particular prefix - BulkDeleteRows(context.Context, *BulkDeleteRowsRequest) (*google_protobuf2.Empty, error) -} - -func RegisterBigtableTableServiceServer(s *grpc.Server, srv BigtableTableServiceServer) { - s.RegisterService(&_BigtableTableService_serviceDesc, srv) -} - -func _BigtableTableService_CreateTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).CreateTable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/CreateTable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).CreateTable(ctx, req.(*CreateTableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableService_ListTables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTablesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).ListTables(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/ListTables", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).ListTables(ctx, req.(*ListTablesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableService_GetTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).GetTable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/GetTable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).GetTable(ctx, req.(*GetTableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableService_DeleteTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteTableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).DeleteTable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/DeleteTable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).DeleteTable(ctx, req.(*DeleteTableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableService_RenameTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RenameTableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).RenameTable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/RenameTable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).RenameTable(ctx, req.(*RenameTableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableService_CreateColumnFamily_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateColumnFamilyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).CreateColumnFamily(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/CreateColumnFamily", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).CreateColumnFamily(ctx, req.(*CreateColumnFamilyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableService_UpdateColumnFamily_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ColumnFamily) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).UpdateColumnFamily(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/UpdateColumnFamily", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).UpdateColumnFamily(ctx, req.(*ColumnFamily)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableService_DeleteColumnFamily_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteColumnFamilyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).DeleteColumnFamily(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/DeleteColumnFamily", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).DeleteColumnFamily(ctx, req.(*DeleteColumnFamilyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableService_BulkDeleteRows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BulkDeleteRowsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableServiceServer).BulkDeleteRows(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.table.v1.BigtableTableService/BulkDeleteRows", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableServiceServer).BulkDeleteRows(ctx, req.(*BulkDeleteRowsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _BigtableTableService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.bigtable.admin.table.v1.BigtableTableService", - HandlerType: (*BigtableTableServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateTable", - Handler: _BigtableTableService_CreateTable_Handler, - }, - { - MethodName: "ListTables", - Handler: _BigtableTableService_ListTables_Handler, - }, - { - MethodName: "GetTable", - Handler: _BigtableTableService_GetTable_Handler, - }, - { - MethodName: "DeleteTable", - Handler: _BigtableTableService_DeleteTable_Handler, - }, - { - MethodName: "RenameTable", - Handler: _BigtableTableService_RenameTable_Handler, - }, - { - MethodName: "CreateColumnFamily", - Handler: _BigtableTableService_CreateColumnFamily_Handler, - }, - { - MethodName: "UpdateColumnFamily", - Handler: _BigtableTableService_UpdateColumnFamily_Handler, - }, - { - MethodName: "DeleteColumnFamily", - Handler: _BigtableTableService_DeleteColumnFamily_Handler, - }, - { - MethodName: "BulkDeleteRows", - Handler: _BigtableTableService_BulkDeleteRows_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/bigtable/admin/table/v1/bigtable_table_service.proto", -} - -func init() { - proto.RegisterFile("google/bigtable/admin/table/v1/bigtable_table_service.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 560 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xbf, 0x6f, 0xd4, 0x30, - 0x14, 0xc7, 0x65, 0x06, 0x84, 0x7c, 0x88, 0xc1, 0x42, 0x0c, 0x07, 0x62, 0x88, 0xc4, 0x12, 0xa1, - 0x58, 0xb9, 0x82, 0x68, 0xaf, 0xaa, 0x84, 0x72, 0xd7, 0x56, 0xa2, 0x20, 0x95, 0x03, 0x16, 0x96, - 0xca, 0xc9, 0x3d, 0xa2, 0x40, 0x62, 0x87, 0xd8, 0x39, 0x54, 0x50, 0x17, 0x16, 0xfe, 0x00, 0x58, - 0x61, 0x62, 0x64, 0x82, 0x1d, 0x76, 0x56, 0xfe, 0x05, 0xfe, 0x10, 0x14, 0x3b, 0xa1, 0x69, 0xf9, - 0xe1, 0x73, 0xd5, 0x25, 0xe7, 0xb3, 0xbf, 0xdf, 0xf7, 0x3e, 0xcf, 0x7e, 0x96, 0xf1, 0x7a, 0x2a, - 0x44, 0x9a, 0x03, 0x8d, 0xb3, 0x54, 0xb1, 0x38, 0x07, 0xca, 0xe6, 0x45, 0xc6, 0xa9, 0x19, 0x2f, - 0xc2, 0xdf, 0xf3, 0x7b, 0xe6, 0x2b, 0xa1, 0x5a, 0x64, 0x09, 0x04, 0x65, 0x25, 0x94, 0x20, 0x57, - 0x8d, 0x39, 0xe8, 0x44, 0x81, 0x36, 0x07, 0x66, 0xbc, 0x08, 0x87, 0x57, 0xda, 0xe0, 0xac, 0xcc, - 0x28, 0xe3, 0x5c, 0x28, 0xa6, 0x32, 0xc1, 0xa5, 0x71, 0x0f, 0x57, 0xdd, 0x52, 0xcf, 0x99, 0x62, - 0xad, 0x73, 0x7a, 0x22, 0xe8, 0xbd, 0x02, 0xa4, 0x64, 0x29, 0x74, 0xf9, 0x2f, 0xb7, 0x51, 0xf4, - 0xbf, 0xb8, 0x7e, 0x42, 0xa1, 0x28, 0xd5, 0xbe, 0x59, 0x1c, 0x7d, 0x3d, 0x8f, 0x2f, 0x46, 0x6d, - 0x98, 0x87, 0xcd, 0xe7, 0x81, 0x09, 0x42, 0x3e, 0x22, 0x3c, 0x98, 0x54, 0xc0, 0x94, 0x99, 0x26, - 0xa3, 0xe0, 0xff, 0x9b, 0x10, 0xf4, 0xc4, 0x33, 0x78, 0x5e, 0x83, 0x54, 0xc3, 0x6b, 0x36, 0x8f, - 0x56, 0x7b, 0xe3, 0xd7, 0x3f, 0x7e, 0xbe, 0x3d, 0x73, 0xc3, 0xa3, 0x4d, 0x4d, 0xaf, 0x38, 0x2b, - 0x60, 0xa3, 0xac, 0xc4, 0x53, 0x48, 0x94, 0xa4, 0x3e, 0x7d, 0x29, 0x38, 0x34, 0xbf, 0x49, 0x5e, - 0x4b, 0x05, 0x95, 0xa4, 0xfe, 0x81, 0xd9, 0x01, 0x39, 0x46, 0x3e, 0xf9, 0x84, 0x30, 0xbe, 0x9b, - 0x49, 0xa5, 0x23, 0x49, 0x12, 0xda, 0x32, 0x1e, 0x6a, 0x3b, 0xc8, 0x91, 0x8b, 0x45, 0x96, 0x82, - 0x4b, 0xf0, 0x6e, 0x69, 0xe2, 0x90, 0xb8, 0x12, 0x93, 0xf7, 0x08, 0x9f, 0xdb, 0x06, 0x13, 0x8e, - 0x50, 0x5b, 0xe6, 0x4e, 0xe9, 0xb8, 0x9f, 0x6b, 0x9a, 0x6e, 0x85, 0x84, 0x4b, 0xd2, 0xb5, 0x70, - 0xd4, 0x3f, 0x20, 0xef, 0x10, 0x1e, 0x4c, 0x21, 0x87, 0xa5, 0x4f, 0xbd, 0x27, 0xee, 0x28, 0x2f, - 0x75, 0x9e, 0xae, 0xe1, 0x82, 0xcd, 0xa6, 0xe1, 0x3a, 0x2c, 0xff, 0x04, 0x58, 0x1f, 0x10, 0x1e, - 0xcc, 0xa0, 0xb1, 0x2c, 0x89, 0xd5, 0x13, 0xdb, 0xb0, 0x26, 0x1a, 0x6b, 0xc3, 0x5b, 0x75, 0xc6, - 0x1a, 0x57, 0x3a, 0x4b, 0xd3, 0x86, 0xdf, 0x11, 0x26, 0xe6, 0x02, 0x4c, 0x44, 0x5e, 0x17, 0x7c, - 0x8b, 0x15, 0x59, 0xbe, 0x4f, 0xd6, 0x96, 0xbb, 0x34, 0x7d, 0x4f, 0x87, 0x7b, 0xdd, 0x6a, 0xed, - 0x99, 0xbc, 0x1d, 0x5d, 0xc4, 0xa6, 0x77, 0xdb, 0xb9, 0x08, 0x9a, 0x1c, 0xc6, 0xc9, 0xcc, 0x9d, - 0xfa, 0x86, 0x30, 0x79, 0x54, 0xce, 0x8f, 0x17, 0xe3, 0x44, 0xe4, 0xc8, 0x7f, 0x4f, 0xf3, 0x6f, - 0x0f, 0x23, 0x57, 0xfe, 0x63, 0xf8, 0xcd, 0xa9, 0x20, 0x9f, 0x7c, 0x41, 0x98, 0x98, 0xce, 0x74, - 0x3b, 0x8e, 0x3f, 0x3d, 0xb6, 0xee, 0xb9, 0xa3, 0xc1, 0xa7, 0xfe, 0x29, 0x80, 0x93, 0xcf, 0x08, - 0x5f, 0x88, 0xea, 0xfc, 0x99, 0xa1, 0x98, 0x89, 0x17, 0x92, 0xdc, 0xb4, 0x11, 0x1f, 0xd5, 0xdb, - 0x68, 0xef, 0x6b, 0xda, 0x1d, 0x6f, 0x4b, 0xd3, 0x9a, 0x57, 0xc3, 0xa9, 0xe3, 0xe3, 0x23, 0xe9, - 0xc6, 0xc8, 0x8f, 0xde, 0x20, 0xec, 0x25, 0xa2, 0xb0, 0x70, 0x46, 0xc3, 0xbf, 0x3d, 0x32, 0x72, - 0xb7, 0xc1, 0xdb, 0x45, 0x8f, 0x27, 0xad, 0x3b, 0x15, 0x39, 0xe3, 0x69, 0x20, 0xaa, 0x94, 0xa6, - 0xc0, 0x35, 0x3c, 0x35, 0x4b, 0xac, 0xcc, 0xe4, 0xbf, 0xde, 0xc1, 0x75, 0x3d, 0x88, 0xcf, 0x6a, - 0xfd, 0xca, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x65, 0xb4, 0xe0, 0xeb, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_service_messages.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_service_messages.pb.go deleted file mode 100644 index 9d9ad71e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/table/v1/bigtable_table_service_messages.pb.go +++ /dev/null @@ -1,400 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/table/v1/bigtable_table_service_messages.proto - -package table - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type CreateTableRequest struct { - // The unique name of the cluster in which to create the new table. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name by which the new table should be referred to within the cluster, - // e.g. "foobar" rather than "<cluster_name>/tables/foobar". - TableId string `protobuf:"bytes,2,opt,name=table_id,json=tableId" json:"table_id,omitempty"` - // The Table to create. The `name` field of the Table and all of its - // ColumnFamilies must be left blank, and will be populated in the response. - Table *Table `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"` - // The optional list of row keys that will be used to initially split the - // table into several tablets (Tablets are similar to HBase regions). - // Given two split keys, "s1" and "s2", three tablets will be created, - // spanning the key ranges: [, s1), [s1, s2), [s2, ). - // - // Example: - // * Row keys := ["a", "apple", "custom", "customer_1", "customer_2", - // "other", "zz"] - // * initial_split_keys := ["apple", "customer_1", "customer_2", "other"] - // * Key assignment: - // - Tablet 1 [, apple) => {"a"}. - // - Tablet 2 [apple, customer_1) => {"apple", "custom"}. - // - Tablet 3 [customer_1, customer_2) => {"customer_1"}. - // - Tablet 4 [customer_2, other) => {"customer_2"}. - // - Tablet 5 [other, ) => {"other", "zz"}. - InitialSplitKeys []string `protobuf:"bytes,4,rep,name=initial_split_keys,json=initialSplitKeys" json:"initial_split_keys,omitempty"` -} - -func (m *CreateTableRequest) Reset() { *m = CreateTableRequest{} } -func (m *CreateTableRequest) String() string { return proto.CompactTextString(m) } -func (*CreateTableRequest) ProtoMessage() {} -func (*CreateTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *CreateTableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateTableRequest) GetTableId() string { - if m != nil { - return m.TableId - } - return "" -} - -func (m *CreateTableRequest) GetTable() *Table { - if m != nil { - return m.Table - } - return nil -} - -func (m *CreateTableRequest) GetInitialSplitKeys() []string { - if m != nil { - return m.InitialSplitKeys - } - return nil -} - -type ListTablesRequest struct { - // The unique name of the cluster for which tables should be listed. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *ListTablesRequest) Reset() { *m = ListTablesRequest{} } -func (m *ListTablesRequest) String() string { return proto.CompactTextString(m) } -func (*ListTablesRequest) ProtoMessage() {} -func (*ListTablesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ListTablesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type ListTablesResponse struct { - // The tables present in the requested cluster. - // At present, only the names of the tables are populated. - Tables []*Table `protobuf:"bytes,1,rep,name=tables" json:"tables,omitempty"` -} - -func (m *ListTablesResponse) Reset() { *m = ListTablesResponse{} } -func (m *ListTablesResponse) String() string { return proto.CompactTextString(m) } -func (*ListTablesResponse) ProtoMessage() {} -func (*ListTablesResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *ListTablesResponse) GetTables() []*Table { - if m != nil { - return m.Tables - } - return nil -} - -type GetTableRequest struct { - // The unique name of the requested table. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetTableRequest) Reset() { *m = GetTableRequest{} } -func (m *GetTableRequest) String() string { return proto.CompactTextString(m) } -func (*GetTableRequest) ProtoMessage() {} -func (*GetTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *GetTableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type DeleteTableRequest struct { - // The unique name of the table to be deleted. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteTableRequest) Reset() { *m = DeleteTableRequest{} } -func (m *DeleteTableRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteTableRequest) ProtoMessage() {} -func (*DeleteTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *DeleteTableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type RenameTableRequest struct { - // The current unique name of the table. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The new name by which the table should be referred to within its containing - // cluster, e.g. "foobar" rather than "<cluster_name>/tables/foobar". - NewId string `protobuf:"bytes,2,opt,name=new_id,json=newId" json:"new_id,omitempty"` -} - -func (m *RenameTableRequest) Reset() { *m = RenameTableRequest{} } -func (m *RenameTableRequest) String() string { return proto.CompactTextString(m) } -func (*RenameTableRequest) ProtoMessage() {} -func (*RenameTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *RenameTableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *RenameTableRequest) GetNewId() string { - if m != nil { - return m.NewId - } - return "" -} - -type CreateColumnFamilyRequest struct { - // The unique name of the table in which to create the new column family. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name by which the new column family should be referred to within the - // table, e.g. "foobar" rather than "<table_name>/columnFamilies/foobar". - ColumnFamilyId string `protobuf:"bytes,2,opt,name=column_family_id,json=columnFamilyId" json:"column_family_id,omitempty"` - // The column family to create. The `name` field must be left blank. - ColumnFamily *ColumnFamily `protobuf:"bytes,3,opt,name=column_family,json=columnFamily" json:"column_family,omitempty"` -} - -func (m *CreateColumnFamilyRequest) Reset() { *m = CreateColumnFamilyRequest{} } -func (m *CreateColumnFamilyRequest) String() string { return proto.CompactTextString(m) } -func (*CreateColumnFamilyRequest) ProtoMessage() {} -func (*CreateColumnFamilyRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *CreateColumnFamilyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateColumnFamilyRequest) GetColumnFamilyId() string { - if m != nil { - return m.ColumnFamilyId - } - return "" -} - -func (m *CreateColumnFamilyRequest) GetColumnFamily() *ColumnFamily { - if m != nil { - return m.ColumnFamily - } - return nil -} - -type DeleteColumnFamilyRequest struct { - // The unique name of the column family to be deleted. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteColumnFamilyRequest) Reset() { *m = DeleteColumnFamilyRequest{} } -func (m *DeleteColumnFamilyRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteColumnFamilyRequest) ProtoMessage() {} -func (*DeleteColumnFamilyRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *DeleteColumnFamilyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type BulkDeleteRowsRequest struct { - // The unique name of the table on which to perform the bulk delete - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // Types that are valid to be assigned to Target: - // *BulkDeleteRowsRequest_RowKeyPrefix - // *BulkDeleteRowsRequest_DeleteAllDataFromTable - Target isBulkDeleteRowsRequest_Target `protobuf_oneof:"target"` -} - -func (m *BulkDeleteRowsRequest) Reset() { *m = BulkDeleteRowsRequest{} } -func (m *BulkDeleteRowsRequest) String() string { return proto.CompactTextString(m) } -func (*BulkDeleteRowsRequest) ProtoMessage() {} -func (*BulkDeleteRowsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -type isBulkDeleteRowsRequest_Target interface { - isBulkDeleteRowsRequest_Target() -} - -type BulkDeleteRowsRequest_RowKeyPrefix struct { - RowKeyPrefix []byte `protobuf:"bytes,2,opt,name=row_key_prefix,json=rowKeyPrefix,proto3,oneof"` -} -type BulkDeleteRowsRequest_DeleteAllDataFromTable struct { - DeleteAllDataFromTable bool `protobuf:"varint,3,opt,name=delete_all_data_from_table,json=deleteAllDataFromTable,oneof"` -} - -func (*BulkDeleteRowsRequest_RowKeyPrefix) isBulkDeleteRowsRequest_Target() {} -func (*BulkDeleteRowsRequest_DeleteAllDataFromTable) isBulkDeleteRowsRequest_Target() {} - -func (m *BulkDeleteRowsRequest) GetTarget() isBulkDeleteRowsRequest_Target { - if m != nil { - return m.Target - } - return nil -} - -func (m *BulkDeleteRowsRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *BulkDeleteRowsRequest) GetRowKeyPrefix() []byte { - if x, ok := m.GetTarget().(*BulkDeleteRowsRequest_RowKeyPrefix); ok { - return x.RowKeyPrefix - } - return nil -} - -func (m *BulkDeleteRowsRequest) GetDeleteAllDataFromTable() bool { - if x, ok := m.GetTarget().(*BulkDeleteRowsRequest_DeleteAllDataFromTable); ok { - return x.DeleteAllDataFromTable - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*BulkDeleteRowsRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _BulkDeleteRowsRequest_OneofMarshaler, _BulkDeleteRowsRequest_OneofUnmarshaler, _BulkDeleteRowsRequest_OneofSizer, []interface{}{ - (*BulkDeleteRowsRequest_RowKeyPrefix)(nil), - (*BulkDeleteRowsRequest_DeleteAllDataFromTable)(nil), - } -} - -func _BulkDeleteRowsRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*BulkDeleteRowsRequest) - // target - switch x := m.Target.(type) { - case *BulkDeleteRowsRequest_RowKeyPrefix: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.RowKeyPrefix) - case *BulkDeleteRowsRequest_DeleteAllDataFromTable: - t := uint64(0) - if x.DeleteAllDataFromTable { - t = 1 - } - b.EncodeVarint(3<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("BulkDeleteRowsRequest.Target has unexpected type %T", x) - } - return nil -} - -func _BulkDeleteRowsRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*BulkDeleteRowsRequest) - switch tag { - case 2: // target.row_key_prefix - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Target = &BulkDeleteRowsRequest_RowKeyPrefix{x} - return true, err - case 3: // target.delete_all_data_from_table - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Target = &BulkDeleteRowsRequest_DeleteAllDataFromTable{x != 0} - return true, err - default: - return false, nil - } -} - -func _BulkDeleteRowsRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*BulkDeleteRowsRequest) - // target - switch x := m.Target.(type) { - case *BulkDeleteRowsRequest_RowKeyPrefix: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RowKeyPrefix))) - n += len(x.RowKeyPrefix) - case *BulkDeleteRowsRequest_DeleteAllDataFromTable: - n += proto.SizeVarint(3<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*CreateTableRequest)(nil), "google.bigtable.admin.table.v1.CreateTableRequest") - proto.RegisterType((*ListTablesRequest)(nil), "google.bigtable.admin.table.v1.ListTablesRequest") - proto.RegisterType((*ListTablesResponse)(nil), "google.bigtable.admin.table.v1.ListTablesResponse") - proto.RegisterType((*GetTableRequest)(nil), "google.bigtable.admin.table.v1.GetTableRequest") - proto.RegisterType((*DeleteTableRequest)(nil), "google.bigtable.admin.table.v1.DeleteTableRequest") - proto.RegisterType((*RenameTableRequest)(nil), "google.bigtable.admin.table.v1.RenameTableRequest") - proto.RegisterType((*CreateColumnFamilyRequest)(nil), "google.bigtable.admin.table.v1.CreateColumnFamilyRequest") - proto.RegisterType((*DeleteColumnFamilyRequest)(nil), "google.bigtable.admin.table.v1.DeleteColumnFamilyRequest") - proto.RegisterType((*BulkDeleteRowsRequest)(nil), "google.bigtable.admin.table.v1.BulkDeleteRowsRequest") -} - -func init() { - proto.RegisterFile("google/bigtable/admin/table/v1/bigtable_table_service_messages.proto", fileDescriptor2) -} - -var fileDescriptor2 = []byte{ - // 514 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0xad, 0x49, 0x1b, 0x92, 0x21, 0x94, 0xb2, 0x52, 0x51, 0x52, 0x09, 0x14, 0x56, 0x2a, 0xe4, - 0x50, 0xd9, 0x2a, 0x5c, 0x90, 0x0a, 0x42, 0x24, 0x51, 0x69, 0x54, 0x40, 0xc1, 0xe1, 0xc4, 0xc5, - 0xda, 0xc4, 0x13, 0x6b, 0xd5, 0xb5, 0x37, 0xec, 0x6e, 0x12, 0xf2, 0x13, 0x7c, 0x06, 0x27, 0xc4, - 0x37, 0x22, 0xef, 0x9a, 0x26, 0x3d, 0x10, 0x97, 0x8b, 0x35, 0x9e, 0x79, 0xf3, 0x66, 0xf6, 0xcd, - 0x0c, 0xf4, 0x13, 0x29, 0x13, 0x81, 0xc1, 0x98, 0x27, 0x86, 0x8d, 0x05, 0x06, 0x2c, 0x4e, 0x79, - 0x16, 0x38, 0x7b, 0x71, 0x7a, 0xed, 0x8f, 0xdc, 0x57, 0xa3, 0x5a, 0xf0, 0x09, 0x46, 0x29, 0x6a, - 0xcd, 0x12, 0xd4, 0xfe, 0x4c, 0x49, 0x23, 0xc9, 0x13, 0xc7, 0xe2, 0xff, 0x45, 0xfb, 0x96, 0xc5, - 0x77, 0xf6, 0xe2, 0xf4, 0xe8, 0xd5, 0xff, 0x55, 0x89, 0x99, 0x61, 0x8e, 0x99, 0xfe, 0xf6, 0x80, - 0xf4, 0x14, 0x32, 0x83, 0x5f, 0xf2, 0x50, 0x88, 0xdf, 0xe6, 0xa8, 0x0d, 0x21, 0xb0, 0x9b, 0xb1, - 0x14, 0x9b, 0x5e, 0xdb, 0xeb, 0xd4, 0x43, 0x6b, 0x93, 0x16, 0xd4, 0x5c, 0x3a, 0x8f, 0x9b, 0x77, - 0xac, 0xff, 0xae, 0xfd, 0x1f, 0xc4, 0xe4, 0x0c, 0xf6, 0xac, 0xd9, 0xac, 0xb4, 0xbd, 0xce, 0xbd, - 0x17, 0xc7, 0xfe, 0xf6, 0x7e, 0x7d, 0x57, 0xcb, 0xe5, 0x90, 0x13, 0x20, 0x3c, 0xe3, 0x86, 0x33, - 0x11, 0xe9, 0x99, 0xe0, 0x26, 0xba, 0xc2, 0x95, 0x6e, 0xee, 0xb6, 0x2b, 0x9d, 0x7a, 0x78, 0x50, - 0x44, 0x46, 0x79, 0xe0, 0x12, 0x57, 0x9a, 0x3e, 0x87, 0x87, 0x1f, 0xb8, 0x36, 0x96, 0x41, 0x6f, - 0x69, 0x97, 0x8e, 0x80, 0x6c, 0x02, 0xf5, 0x4c, 0x66, 0x1a, 0xc9, 0x1b, 0xa8, 0xda, 0xaa, 0xba, - 0xe9, 0xb5, 0x2b, 0xb7, 0x6f, 0xb5, 0x48, 0xa2, 0xc7, 0xf0, 0xe0, 0x3d, 0x9a, 0x32, 0xa9, 0x68, - 0x07, 0x48, 0x1f, 0x05, 0x96, 0x8b, 0x4a, 0xdf, 0x02, 0x09, 0x31, 0xb7, 0x4a, 0xe5, 0x3f, 0x84, - 0x6a, 0x86, 0xcb, 0xb5, 0xf8, 0x7b, 0x19, 0x2e, 0x07, 0x31, 0xfd, 0xe5, 0x41, 0xcb, 0x0d, 0xb0, - 0x27, 0xc5, 0x3c, 0xcd, 0xce, 0x59, 0xca, 0xc5, 0x6a, 0x1b, 0x51, 0x07, 0x0e, 0x26, 0x16, 0x1a, - 0x4d, 0x2d, 0x76, 0x4d, 0xb9, 0x3f, 0xd9, 0xa0, 0x18, 0xc4, 0xe4, 0x33, 0xdc, 0xbf, 0x81, 0x2c, - 0xc6, 0x7b, 0x52, 0xa6, 0xd9, 0x8d, 0x4e, 0x1a, 0x9b, 0xa4, 0x34, 0x80, 0x96, 0x53, 0xe6, 0x96, - 0xdd, 0xd2, 0x9f, 0x1e, 0x1c, 0x76, 0xe7, 0xe2, 0xca, 0x65, 0x85, 0x72, 0x79, 0x3d, 0xf4, 0xc7, - 0x00, 0x6e, 0x1f, 0x37, 0x72, 0xea, 0xd6, 0xf3, 0x29, 0x7f, 0xe6, 0x33, 0xd8, 0x57, 0x72, 0x99, - 0x2f, 0x53, 0x34, 0x53, 0x38, 0xe5, 0xdf, 0xed, 0x23, 0x1b, 0x17, 0x3b, 0x61, 0x43, 0xc9, 0xe5, - 0x25, 0xae, 0x86, 0xd6, 0x4b, 0x5e, 0xc3, 0x51, 0x6c, 0xb9, 0x23, 0x26, 0x84, 0x3d, 0x8d, 0x68, - 0xaa, 0x64, 0x1a, 0xad, 0x17, 0xba, 0x76, 0xb1, 0x13, 0x3e, 0x72, 0x98, 0x77, 0x42, 0xf4, 0x99, - 0x61, 0xe7, 0x4a, 0xa6, 0x76, 0x60, 0xdd, 0x5a, 0xbe, 0x4f, 0x2a, 0x41, 0xd3, 0xfd, 0xe1, 0x01, - 0x9d, 0xc8, 0xb4, 0x44, 0x9b, 0xee, 0xd3, 0x6e, 0x11, 0xb0, 0xf9, 0x23, 0x77, 0xef, 0x1f, 0x8b, - 0x73, 0x1f, 0xe6, 0x37, 0x39, 0xf4, 0xbe, 0xf6, 0x0a, 0x92, 0x44, 0x0a, 0x96, 0x25, 0xbe, 0x54, - 0x49, 0x90, 0x60, 0x66, 0x2f, 0x36, 0x70, 0x21, 0x36, 0xe3, 0xfa, 0x5f, 0xe7, 0x7e, 0x66, 0x8d, - 0x71, 0xd5, 0xe2, 0x5f, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x08, 0x29, 0x16, 0x83, 0x04, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/bigtable_instance_admin.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/bigtable_instance_admin.pb.go deleted file mode 100644 index 2eba7f16..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/bigtable_instance_admin.pb.go +++ /dev/null @@ -1,1719 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/v2/bigtable_instance_admin.proto - -/* -Package admin is a generated protocol buffer package. - -It is generated from these files: - google/bigtable/admin/v2/bigtable_instance_admin.proto - google/bigtable/admin/v2/bigtable_table_admin.proto - google/bigtable/admin/v2/common.proto - google/bigtable/admin/v2/instance.proto - google/bigtable/admin/v2/table.proto - -It has these top-level messages: - CreateInstanceRequest - GetInstanceRequest - ListInstancesRequest - ListInstancesResponse - PartialUpdateInstanceRequest - DeleteInstanceRequest - CreateClusterRequest - GetClusterRequest - ListClustersRequest - ListClustersResponse - DeleteClusterRequest - CreateInstanceMetadata - UpdateInstanceMetadata - CreateClusterMetadata - UpdateClusterMetadata - CreateAppProfileRequest - GetAppProfileRequest - ListAppProfilesRequest - ListAppProfilesResponse - UpdateAppProfileRequest - DeleteAppProfileRequest - CreateTableRequest - CreateTableFromSnapshotRequest - DropRowRangeRequest - ListTablesRequest - ListTablesResponse - GetTableRequest - DeleteTableRequest - ModifyColumnFamiliesRequest - GenerateConsistencyTokenRequest - GenerateConsistencyTokenResponse - CheckConsistencyRequest - CheckConsistencyResponse - SnapshotTableRequest - GetSnapshotRequest - ListSnapshotsRequest - ListSnapshotsResponse - DeleteSnapshotRequest - SnapshotTableMetadata - CreateTableFromSnapshotMetadata - Instance - Cluster - AppProfile - Table - ColumnFamily - GcRule - Snapshot -*/ -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf4 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Request message for BigtableInstanceAdmin.CreateInstance. -type CreateInstanceRequest struct { - // The unique name of the project in which to create the new instance. - // Values are of the form `projects/<project>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The ID to be used when referring to the new instance within its project, - // e.g., just `myinstance` rather than - // `projects/myproject/instances/myinstance`. - InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId" json:"instance_id,omitempty"` - // The instance to create. - // Fields marked `OutputOnly` must be left blank. - Instance *Instance `protobuf:"bytes,3,opt,name=instance" json:"instance,omitempty"` - // The clusters to be created within the instance, mapped by desired - // cluster ID, e.g., just `mycluster` rather than - // `projects/myproject/instances/myinstance/clusters/mycluster`. - // Fields marked `OutputOnly` must be left blank. - // Currently exactly one cluster must be specified. - Clusters map[string]*Cluster `protobuf:"bytes,4,rep,name=clusters" json:"clusters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *CreateInstanceRequest) Reset() { *m = CreateInstanceRequest{} } -func (m *CreateInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*CreateInstanceRequest) ProtoMessage() {} -func (*CreateInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *CreateInstanceRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateInstanceRequest) GetInstanceId() string { - if m != nil { - return m.InstanceId - } - return "" -} - -func (m *CreateInstanceRequest) GetInstance() *Instance { - if m != nil { - return m.Instance - } - return nil -} - -func (m *CreateInstanceRequest) GetClusters() map[string]*Cluster { - if m != nil { - return m.Clusters - } - return nil -} - -// Request message for BigtableInstanceAdmin.GetInstance. -type GetInstanceRequest struct { - // The unique name of the requested instance. Values are of the form - // `projects/<project>/instances/<instance>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetInstanceRequest) Reset() { *m = GetInstanceRequest{} } -func (m *GetInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*GetInstanceRequest) ProtoMessage() {} -func (*GetInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *GetInstanceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for BigtableInstanceAdmin.ListInstances. -type ListInstancesRequest struct { - // The unique name of the project for which a list of instances is requested. - // Values are of the form `projects/<project>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The value of `next_page_token` returned by a previous call. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListInstancesRequest) Reset() { *m = ListInstancesRequest{} } -func (m *ListInstancesRequest) String() string { return proto.CompactTextString(m) } -func (*ListInstancesRequest) ProtoMessage() {} -func (*ListInstancesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ListInstancesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListInstancesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for BigtableInstanceAdmin.ListInstances. -type ListInstancesResponse struct { - // The list of requested instances. - Instances []*Instance `protobuf:"bytes,1,rep,name=instances" json:"instances,omitempty"` - // Locations from which Instance information could not be retrieved, - // due to an outage or some other transient condition. - // Instances whose Clusters are all in one of the failed locations - // may be missing from `instances`, and Instances with at least one - // Cluster in a failed location may only have partial information returned. - FailedLocations []string `protobuf:"bytes,2,rep,name=failed_locations,json=failedLocations" json:"failed_locations,omitempty"` - // Set if not all instances could be returned in a single response. - // Pass this value to `page_token` in another request to get the next - // page of results. - NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListInstancesResponse) Reset() { *m = ListInstancesResponse{} } -func (m *ListInstancesResponse) String() string { return proto.CompactTextString(m) } -func (*ListInstancesResponse) ProtoMessage() {} -func (*ListInstancesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListInstancesResponse) GetInstances() []*Instance { - if m != nil { - return m.Instances - } - return nil -} - -func (m *ListInstancesResponse) GetFailedLocations() []string { - if m != nil { - return m.FailedLocations - } - return nil -} - -func (m *ListInstancesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for BigtableInstanceAdmin.PartialUpdateInstance. -type PartialUpdateInstanceRequest struct { - // The Instance which will (partially) replace the current value. - Instance *Instance `protobuf:"bytes,1,opt,name=instance" json:"instance,omitempty"` - // The subset of Instance fields which should be replaced. - // Must be explicitly set. - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *PartialUpdateInstanceRequest) Reset() { *m = PartialUpdateInstanceRequest{} } -func (m *PartialUpdateInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*PartialUpdateInstanceRequest) ProtoMessage() {} -func (*PartialUpdateInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *PartialUpdateInstanceRequest) GetInstance() *Instance { - if m != nil { - return m.Instance - } - return nil -} - -func (m *PartialUpdateInstanceRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request message for BigtableInstanceAdmin.DeleteInstance. -type DeleteInstanceRequest struct { - // The unique name of the instance to be deleted. - // Values are of the form `projects/<project>/instances/<instance>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteInstanceRequest) Reset() { *m = DeleteInstanceRequest{} } -func (m *DeleteInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteInstanceRequest) ProtoMessage() {} -func (*DeleteInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *DeleteInstanceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for BigtableInstanceAdmin.CreateCluster. -type CreateClusterRequest struct { - // The unique name of the instance in which to create the new cluster. - // Values are of the form - // `projects/<project>/instances/<instance>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The ID to be used when referring to the new cluster within its instance, - // e.g., just `mycluster` rather than - // `projects/myproject/instances/myinstance/clusters/mycluster`. - ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The cluster to be created. - // Fields marked `OutputOnly` must be left blank. - Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"` -} - -func (m *CreateClusterRequest) Reset() { *m = CreateClusterRequest{} } -func (m *CreateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*CreateClusterRequest) ProtoMessage() {} -func (*CreateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *CreateClusterRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *CreateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -// Request message for BigtableInstanceAdmin.GetCluster. -type GetClusterRequest struct { - // The unique name of the requested cluster. Values are of the form - // `projects/<project>/instances/<instance>/clusters/<cluster>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetClusterRequest) Reset() { *m = GetClusterRequest{} } -func (m *GetClusterRequest) String() string { return proto.CompactTextString(m) } -func (*GetClusterRequest) ProtoMessage() {} -func (*GetClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *GetClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for BigtableInstanceAdmin.ListClusters. -type ListClustersRequest struct { - // The unique name of the instance for which a list of clusters is requested. - // Values are of the form `projects/<project>/instances/<instance>`. - // Use `<instance> = '-'` to list Clusters for all Instances in a project, - // e.g., `projects/myproject/instances/-`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The value of `next_page_token` returned by a previous call. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListClustersRequest) Reset() { *m = ListClustersRequest{} } -func (m *ListClustersRequest) String() string { return proto.CompactTextString(m) } -func (*ListClustersRequest) ProtoMessage() {} -func (*ListClustersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ListClustersRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListClustersRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for BigtableInstanceAdmin.ListClusters. -type ListClustersResponse struct { - // The list of requested clusters. - Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters" json:"clusters,omitempty"` - // Locations from which Cluster information could not be retrieved, - // due to an outage or some other transient condition. - // Clusters from these locations may be missing from `clusters`, - // or may only have partial information returned. - FailedLocations []string `protobuf:"bytes,2,rep,name=failed_locations,json=failedLocations" json:"failed_locations,omitempty"` - // Set if not all clusters could be returned in a single response. - // Pass this value to `page_token` in another request to get the next - // page of results. - NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListClustersResponse) Reset() { *m = ListClustersResponse{} } -func (m *ListClustersResponse) String() string { return proto.CompactTextString(m) } -func (*ListClustersResponse) ProtoMessage() {} -func (*ListClustersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ListClustersResponse) GetClusters() []*Cluster { - if m != nil { - return m.Clusters - } - return nil -} - -func (m *ListClustersResponse) GetFailedLocations() []string { - if m != nil { - return m.FailedLocations - } - return nil -} - -func (m *ListClustersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for BigtableInstanceAdmin.DeleteCluster. -type DeleteClusterRequest struct { - // The unique name of the cluster to be deleted. Values are of the form - // `projects/<project>/instances/<instance>/clusters/<cluster>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteClusterRequest) Reset() { *m = DeleteClusterRequest{} } -func (m *DeleteClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteClusterRequest) ProtoMessage() {} -func (*DeleteClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *DeleteClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The metadata for the Operation returned by CreateInstance. -type CreateInstanceMetadata struct { - // The request that prompted the initiation of this CreateInstance operation. - OriginalRequest *CreateInstanceRequest `protobuf:"bytes,1,opt,name=original_request,json=originalRequest" json:"original_request,omitempty"` - // The time at which the original request was received. - RequestTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which the operation failed or was completed successfully. - FinishTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *CreateInstanceMetadata) Reset() { *m = CreateInstanceMetadata{} } -func (m *CreateInstanceMetadata) String() string { return proto.CompactTextString(m) } -func (*CreateInstanceMetadata) ProtoMessage() {} -func (*CreateInstanceMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *CreateInstanceMetadata) GetOriginalRequest() *CreateInstanceRequest { - if m != nil { - return m.OriginalRequest - } - return nil -} - -func (m *CreateInstanceMetadata) GetRequestTime() *google_protobuf1.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *CreateInstanceMetadata) GetFinishTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -// The metadata for the Operation returned by UpdateInstance. -type UpdateInstanceMetadata struct { - // The request that prompted the initiation of this UpdateInstance operation. - OriginalRequest *PartialUpdateInstanceRequest `protobuf:"bytes,1,opt,name=original_request,json=originalRequest" json:"original_request,omitempty"` - // The time at which the original request was received. - RequestTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which the operation failed or was completed successfully. - FinishTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *UpdateInstanceMetadata) Reset() { *m = UpdateInstanceMetadata{} } -func (m *UpdateInstanceMetadata) String() string { return proto.CompactTextString(m) } -func (*UpdateInstanceMetadata) ProtoMessage() {} -func (*UpdateInstanceMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *UpdateInstanceMetadata) GetOriginalRequest() *PartialUpdateInstanceRequest { - if m != nil { - return m.OriginalRequest - } - return nil -} - -func (m *UpdateInstanceMetadata) GetRequestTime() *google_protobuf1.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *UpdateInstanceMetadata) GetFinishTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -// The metadata for the Operation returned by CreateCluster. -type CreateClusterMetadata struct { - // The request that prompted the initiation of this CreateCluster operation. - OriginalRequest *CreateClusterRequest `protobuf:"bytes,1,opt,name=original_request,json=originalRequest" json:"original_request,omitempty"` - // The time at which the original request was received. - RequestTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which the operation failed or was completed successfully. - FinishTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *CreateClusterMetadata) Reset() { *m = CreateClusterMetadata{} } -func (m *CreateClusterMetadata) String() string { return proto.CompactTextString(m) } -func (*CreateClusterMetadata) ProtoMessage() {} -func (*CreateClusterMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *CreateClusterMetadata) GetOriginalRequest() *CreateClusterRequest { - if m != nil { - return m.OriginalRequest - } - return nil -} - -func (m *CreateClusterMetadata) GetRequestTime() *google_protobuf1.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *CreateClusterMetadata) GetFinishTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -// The metadata for the Operation returned by UpdateCluster. -type UpdateClusterMetadata struct { - // The request that prompted the initiation of this UpdateCluster operation. - OriginalRequest *Cluster `protobuf:"bytes,1,opt,name=original_request,json=originalRequest" json:"original_request,omitempty"` - // The time at which the original request was received. - RequestTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which the operation failed or was completed successfully. - FinishTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *UpdateClusterMetadata) Reset() { *m = UpdateClusterMetadata{} } -func (m *UpdateClusterMetadata) String() string { return proto.CompactTextString(m) } -func (*UpdateClusterMetadata) ProtoMessage() {} -func (*UpdateClusterMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *UpdateClusterMetadata) GetOriginalRequest() *Cluster { - if m != nil { - return m.OriginalRequest - } - return nil -} - -func (m *UpdateClusterMetadata) GetRequestTime() *google_protobuf1.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *UpdateClusterMetadata) GetFinishTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for BigtableInstanceAdmin.CreateAppProfile. -type CreateAppProfileRequest struct { - // The unique name of the instance in which to create the new app profile. - // Values are of the form - // `projects/<project>/instances/<instance>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The ID to be used when referring to the new app profile within its - // instance, e.g., just `myprofile` rather than - // `projects/myproject/instances/myinstance/appProfiles/myprofile`. - AppProfileId string `protobuf:"bytes,2,opt,name=app_profile_id,json=appProfileId" json:"app_profile_id,omitempty"` - // The app profile to be created. - // Fields marked `OutputOnly` will be ignored. - AppProfile *AppProfile `protobuf:"bytes,3,opt,name=app_profile,json=appProfile" json:"app_profile,omitempty"` - // If true, ignore safety checks when creating the app profile. - IgnoreWarnings bool `protobuf:"varint,4,opt,name=ignore_warnings,json=ignoreWarnings" json:"ignore_warnings,omitempty"` -} - -func (m *CreateAppProfileRequest) Reset() { *m = CreateAppProfileRequest{} } -func (m *CreateAppProfileRequest) String() string { return proto.CompactTextString(m) } -func (*CreateAppProfileRequest) ProtoMessage() {} -func (*CreateAppProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *CreateAppProfileRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateAppProfileRequest) GetAppProfileId() string { - if m != nil { - return m.AppProfileId - } - return "" -} - -func (m *CreateAppProfileRequest) GetAppProfile() *AppProfile { - if m != nil { - return m.AppProfile - } - return nil -} - -func (m *CreateAppProfileRequest) GetIgnoreWarnings() bool { - if m != nil { - return m.IgnoreWarnings - } - return false -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for BigtableInstanceAdmin.GetAppProfile. -type GetAppProfileRequest struct { - // The unique name of the requested app profile. Values are of the form - // `projects/<project>/instances/<instance>/appProfiles/<app_profile>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetAppProfileRequest) Reset() { *m = GetAppProfileRequest{} } -func (m *GetAppProfileRequest) String() string { return proto.CompactTextString(m) } -func (*GetAppProfileRequest) ProtoMessage() {} -func (*GetAppProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *GetAppProfileRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for BigtableInstanceAdmin.ListAppProfiles. -type ListAppProfilesRequest struct { - // The unique name of the instance for which a list of app profiles is - // requested. Values are of the form - // `projects/<project>/instances/<instance>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The value of `next_page_token` returned by a previous call. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListAppProfilesRequest) Reset() { *m = ListAppProfilesRequest{} } -func (m *ListAppProfilesRequest) String() string { return proto.CompactTextString(m) } -func (*ListAppProfilesRequest) ProtoMessage() {} -func (*ListAppProfilesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *ListAppProfilesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListAppProfilesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Response message for BigtableInstanceAdmin.ListAppProfiles. -type ListAppProfilesResponse struct { - // The list of requested app profiles. - AppProfiles []*AppProfile `protobuf:"bytes,1,rep,name=app_profiles,json=appProfiles" json:"app_profiles,omitempty"` - // Set if not all app profiles could be returned in a single response. - // Pass this value to `page_token` in another request to get the next - // page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListAppProfilesResponse) Reset() { *m = ListAppProfilesResponse{} } -func (m *ListAppProfilesResponse) String() string { return proto.CompactTextString(m) } -func (*ListAppProfilesResponse) ProtoMessage() {} -func (*ListAppProfilesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *ListAppProfilesResponse) GetAppProfiles() []*AppProfile { - if m != nil { - return m.AppProfiles - } - return nil -} - -func (m *ListAppProfilesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for BigtableInstanceAdmin.UpdateAppProfile. -type UpdateAppProfileRequest struct { - // The app profile which will (partially) replace the current value. - AppProfile *AppProfile `protobuf:"bytes,1,opt,name=app_profile,json=appProfile" json:"app_profile,omitempty"` - // The subset of app profile fields which should be replaced. - // If unset, all fields will be replaced. - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` - // If true, ignore safety checks when updating the app profile. - IgnoreWarnings bool `protobuf:"varint,3,opt,name=ignore_warnings,json=ignoreWarnings" json:"ignore_warnings,omitempty"` -} - -func (m *UpdateAppProfileRequest) Reset() { *m = UpdateAppProfileRequest{} } -func (m *UpdateAppProfileRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateAppProfileRequest) ProtoMessage() {} -func (*UpdateAppProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *UpdateAppProfileRequest) GetAppProfile() *AppProfile { - if m != nil { - return m.AppProfile - } - return nil -} - -func (m *UpdateAppProfileRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func (m *UpdateAppProfileRequest) GetIgnoreWarnings() bool { - if m != nil { - return m.IgnoreWarnings - } - return false -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for BigtableInstanceAdmin.DeleteAppProfile. -type DeleteAppProfileRequest struct { - // The unique name of the app profile to be deleted. Values are of the form - // `projects/<project>/instances/<instance>/appProfiles/<app_profile>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // If true, ignore safety checks when deleting the app profile. - IgnoreWarnings bool `protobuf:"varint,2,opt,name=ignore_warnings,json=ignoreWarnings" json:"ignore_warnings,omitempty"` -} - -func (m *DeleteAppProfileRequest) Reset() { *m = DeleteAppProfileRequest{} } -func (m *DeleteAppProfileRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteAppProfileRequest) ProtoMessage() {} -func (*DeleteAppProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *DeleteAppProfileRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DeleteAppProfileRequest) GetIgnoreWarnings() bool { - if m != nil { - return m.IgnoreWarnings - } - return false -} - -func init() { - proto.RegisterType((*CreateInstanceRequest)(nil), "google.bigtable.admin.v2.CreateInstanceRequest") - proto.RegisterType((*GetInstanceRequest)(nil), "google.bigtable.admin.v2.GetInstanceRequest") - proto.RegisterType((*ListInstancesRequest)(nil), "google.bigtable.admin.v2.ListInstancesRequest") - proto.RegisterType((*ListInstancesResponse)(nil), "google.bigtable.admin.v2.ListInstancesResponse") - proto.RegisterType((*PartialUpdateInstanceRequest)(nil), "google.bigtable.admin.v2.PartialUpdateInstanceRequest") - proto.RegisterType((*DeleteInstanceRequest)(nil), "google.bigtable.admin.v2.DeleteInstanceRequest") - proto.RegisterType((*CreateClusterRequest)(nil), "google.bigtable.admin.v2.CreateClusterRequest") - proto.RegisterType((*GetClusterRequest)(nil), "google.bigtable.admin.v2.GetClusterRequest") - proto.RegisterType((*ListClustersRequest)(nil), "google.bigtable.admin.v2.ListClustersRequest") - proto.RegisterType((*ListClustersResponse)(nil), "google.bigtable.admin.v2.ListClustersResponse") - proto.RegisterType((*DeleteClusterRequest)(nil), "google.bigtable.admin.v2.DeleteClusterRequest") - proto.RegisterType((*CreateInstanceMetadata)(nil), "google.bigtable.admin.v2.CreateInstanceMetadata") - proto.RegisterType((*UpdateInstanceMetadata)(nil), "google.bigtable.admin.v2.UpdateInstanceMetadata") - proto.RegisterType((*CreateClusterMetadata)(nil), "google.bigtable.admin.v2.CreateClusterMetadata") - proto.RegisterType((*UpdateClusterMetadata)(nil), "google.bigtable.admin.v2.UpdateClusterMetadata") - proto.RegisterType((*CreateAppProfileRequest)(nil), "google.bigtable.admin.v2.CreateAppProfileRequest") - proto.RegisterType((*GetAppProfileRequest)(nil), "google.bigtable.admin.v2.GetAppProfileRequest") - proto.RegisterType((*ListAppProfilesRequest)(nil), "google.bigtable.admin.v2.ListAppProfilesRequest") - proto.RegisterType((*ListAppProfilesResponse)(nil), "google.bigtable.admin.v2.ListAppProfilesResponse") - proto.RegisterType((*UpdateAppProfileRequest)(nil), "google.bigtable.admin.v2.UpdateAppProfileRequest") - proto.RegisterType((*DeleteAppProfileRequest)(nil), "google.bigtable.admin.v2.DeleteAppProfileRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for BigtableInstanceAdmin service - -type BigtableInstanceAdminClient interface { - // Create an instance within a project. - CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Gets information about an instance. - GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*Instance, error) - // Lists information about instances in a project. - ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) - // Updates an instance within a project. - UpdateInstance(ctx context.Context, in *Instance, opts ...grpc.CallOption) (*Instance, error) - // Partially updates an instance within a project. - PartialUpdateInstance(ctx context.Context, in *PartialUpdateInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Delete an instance from a project. - DeleteInstance(ctx context.Context, in *DeleteInstanceRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Creates a cluster within an instance. - CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Gets information about a cluster. - GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) - // Lists information about clusters in an instance. - ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) - // Updates a cluster within an instance. - UpdateCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes a cluster from an instance. - DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Creates an app profile within an instance. - CreateAppProfile(ctx context.Context, in *CreateAppProfileRequest, opts ...grpc.CallOption) (*AppProfile, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Gets information about an app profile. - GetAppProfile(ctx context.Context, in *GetAppProfileRequest, opts ...grpc.CallOption) (*AppProfile, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Lists information about app profiles in an instance. - ListAppProfiles(ctx context.Context, in *ListAppProfilesRequest, opts ...grpc.CallOption) (*ListAppProfilesResponse, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Updates an app profile within an instance. - UpdateAppProfile(ctx context.Context, in *UpdateAppProfileRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Deletes an app profile from an instance. - DeleteAppProfile(ctx context.Context, in *DeleteAppProfileRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // This is a private alpha release of Cloud Bigtable instance level - // permissions. This feature is not currently available to most Cloud Bigtable - // customers. This feature might be changed in backward-incompatible ways and - // is not recommended for production use. It is not subject to any SLA or - // deprecation policy. - // - // Gets the access control policy for an instance resource. Returns an empty - // policy if an instance exists but does not have a policy set. - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // This is a private alpha release of Cloud Bigtable instance level - // permissions. This feature is not currently available to most Cloud Bigtable - // customers. This feature might be changed in backward-incompatible ways and - // is not recommended for production use. It is not subject to any SLA or - // deprecation policy. - // - // Sets the access control policy on an instance resource. Replaces any - // existing policy. - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // This is a private alpha release of Cloud Bigtable instance level - // permissions. This feature is not currently available to most Cloud Bigtable - // customers. This feature might be changed in backward-incompatible ways and - // is not recommended for production use. It is not subject to any SLA or - // deprecation policy. - // - // Returns permissions that the caller has on the specified instance resource. - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -type bigtableInstanceAdminClient struct { - cc *grpc.ClientConn -} - -func NewBigtableInstanceAdminClient(cc *grpc.ClientConn) BigtableInstanceAdminClient { - return &bigtableInstanceAdminClient{cc} -} - -func (c *bigtableInstanceAdminClient) CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/CreateInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*Instance, error) { - out := new(Instance) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/GetInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) { - out := new(ListInstancesResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/ListInstances", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) UpdateInstance(ctx context.Context, in *Instance, opts ...grpc.CallOption) (*Instance, error) { - out := new(Instance) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/UpdateInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) PartialUpdateInstance(ctx context.Context, in *PartialUpdateInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/PartialUpdateInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) DeleteInstance(ctx context.Context, in *DeleteInstanceRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/DeleteInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/CreateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/GetCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) { - out := new(ListClustersResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/ListClusters", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) UpdateCluster(ctx context.Context, in *Cluster, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/UpdateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/DeleteCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) CreateAppProfile(ctx context.Context, in *CreateAppProfileRequest, opts ...grpc.CallOption) (*AppProfile, error) { - out := new(AppProfile) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/CreateAppProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) GetAppProfile(ctx context.Context, in *GetAppProfileRequest, opts ...grpc.CallOption) (*AppProfile, error) { - out := new(AppProfile) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/GetAppProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) ListAppProfiles(ctx context.Context, in *ListAppProfilesRequest, opts ...grpc.CallOption) (*ListAppProfilesResponse, error) { - out := new(ListAppProfilesResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/ListAppProfiles", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) UpdateAppProfile(ctx context.Context, in *UpdateAppProfileRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/UpdateAppProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) DeleteAppProfile(ctx context.Context, in *DeleteAppProfileRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/DeleteAppProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableInstanceAdminClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableInstanceAdmin/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for BigtableInstanceAdmin service - -type BigtableInstanceAdminServer interface { - // Create an instance within a project. - CreateInstance(context.Context, *CreateInstanceRequest) (*google_longrunning.Operation, error) - // Gets information about an instance. - GetInstance(context.Context, *GetInstanceRequest) (*Instance, error) - // Lists information about instances in a project. - ListInstances(context.Context, *ListInstancesRequest) (*ListInstancesResponse, error) - // Updates an instance within a project. - UpdateInstance(context.Context, *Instance) (*Instance, error) - // Partially updates an instance within a project. - PartialUpdateInstance(context.Context, *PartialUpdateInstanceRequest) (*google_longrunning.Operation, error) - // Delete an instance from a project. - DeleteInstance(context.Context, *DeleteInstanceRequest) (*google_protobuf3.Empty, error) - // Creates a cluster within an instance. - CreateCluster(context.Context, *CreateClusterRequest) (*google_longrunning.Operation, error) - // Gets information about a cluster. - GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) - // Lists information about clusters in an instance. - ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) - // Updates a cluster within an instance. - UpdateCluster(context.Context, *Cluster) (*google_longrunning.Operation, error) - // Deletes a cluster from an instance. - DeleteCluster(context.Context, *DeleteClusterRequest) (*google_protobuf3.Empty, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Creates an app profile within an instance. - CreateAppProfile(context.Context, *CreateAppProfileRequest) (*AppProfile, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Gets information about an app profile. - GetAppProfile(context.Context, *GetAppProfileRequest) (*AppProfile, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Lists information about app profiles in an instance. - ListAppProfiles(context.Context, *ListAppProfilesRequest) (*ListAppProfilesResponse, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Updates an app profile within an instance. - UpdateAppProfile(context.Context, *UpdateAppProfileRequest) (*google_longrunning.Operation, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Deletes an app profile from an instance. - DeleteAppProfile(context.Context, *DeleteAppProfileRequest) (*google_protobuf3.Empty, error) - // This is a private alpha release of Cloud Bigtable instance level - // permissions. This feature is not currently available to most Cloud Bigtable - // customers. This feature might be changed in backward-incompatible ways and - // is not recommended for production use. It is not subject to any SLA or - // deprecation policy. - // - // Gets the access control policy for an instance resource. Returns an empty - // policy if an instance exists but does not have a policy set. - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // This is a private alpha release of Cloud Bigtable instance level - // permissions. This feature is not currently available to most Cloud Bigtable - // customers. This feature might be changed in backward-incompatible ways and - // is not recommended for production use. It is not subject to any SLA or - // deprecation policy. - // - // Sets the access control policy on an instance resource. Replaces any - // existing policy. - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // This is a private alpha release of Cloud Bigtable instance level - // permissions. This feature is not currently available to most Cloud Bigtable - // customers. This feature might be changed in backward-incompatible ways and - // is not recommended for production use. It is not subject to any SLA or - // deprecation policy. - // - // Returns permissions that the caller has on the specified instance resource. - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -func RegisterBigtableInstanceAdminServer(s *grpc.Server, srv BigtableInstanceAdminServer) { - s.RegisterService(&_BigtableInstanceAdmin_serviceDesc, srv) -} - -func _BigtableInstanceAdmin_CreateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).CreateInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/CreateInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).CreateInstance(ctx, req.(*CreateInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_GetInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).GetInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/GetInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).GetInstance(ctx, req.(*GetInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_ListInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInstancesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).ListInstances(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/ListInstances", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).ListInstances(ctx, req.(*ListInstancesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_UpdateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Instance) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).UpdateInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/UpdateInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).UpdateInstance(ctx, req.(*Instance)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_PartialUpdateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PartialUpdateInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).PartialUpdateInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/PartialUpdateInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).PartialUpdateInstance(ctx, req.(*PartialUpdateInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_DeleteInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).DeleteInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/DeleteInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).DeleteInstance(ctx, req.(*DeleteInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_CreateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).CreateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/CreateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).CreateCluster(ctx, req.(*CreateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_GetCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).GetCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/GetCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).GetCluster(ctx, req.(*GetClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_ListClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClustersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).ListClusters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/ListClusters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).ListClusters(ctx, req.(*ListClustersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Cluster) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).UpdateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/UpdateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).UpdateCluster(ctx, req.(*Cluster)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_DeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).DeleteCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/DeleteCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).DeleteCluster(ctx, req.(*DeleteClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_CreateAppProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateAppProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).CreateAppProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/CreateAppProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).CreateAppProfile(ctx, req.(*CreateAppProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_GetAppProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAppProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).GetAppProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/GetAppProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).GetAppProfile(ctx, req.(*GetAppProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_ListAppProfiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListAppProfilesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).ListAppProfiles(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/ListAppProfiles", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).ListAppProfiles(ctx, req.(*ListAppProfilesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_UpdateAppProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateAppProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).UpdateAppProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/UpdateAppProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).UpdateAppProfile(ctx, req.(*UpdateAppProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_DeleteAppProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteAppProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).DeleteAppProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/DeleteAppProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).DeleteAppProfile(ctx, req.(*DeleteAppProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableInstanceAdmin_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableInstanceAdminServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableInstanceAdmin/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableInstanceAdminServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _BigtableInstanceAdmin_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.bigtable.admin.v2.BigtableInstanceAdmin", - HandlerType: (*BigtableInstanceAdminServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateInstance", - Handler: _BigtableInstanceAdmin_CreateInstance_Handler, - }, - { - MethodName: "GetInstance", - Handler: _BigtableInstanceAdmin_GetInstance_Handler, - }, - { - MethodName: "ListInstances", - Handler: _BigtableInstanceAdmin_ListInstances_Handler, - }, - { - MethodName: "UpdateInstance", - Handler: _BigtableInstanceAdmin_UpdateInstance_Handler, - }, - { - MethodName: "PartialUpdateInstance", - Handler: _BigtableInstanceAdmin_PartialUpdateInstance_Handler, - }, - { - MethodName: "DeleteInstance", - Handler: _BigtableInstanceAdmin_DeleteInstance_Handler, - }, - { - MethodName: "CreateCluster", - Handler: _BigtableInstanceAdmin_CreateCluster_Handler, - }, - { - MethodName: "GetCluster", - Handler: _BigtableInstanceAdmin_GetCluster_Handler, - }, - { - MethodName: "ListClusters", - Handler: _BigtableInstanceAdmin_ListClusters_Handler, - }, - { - MethodName: "UpdateCluster", - Handler: _BigtableInstanceAdmin_UpdateCluster_Handler, - }, - { - MethodName: "DeleteCluster", - Handler: _BigtableInstanceAdmin_DeleteCluster_Handler, - }, - { - MethodName: "CreateAppProfile", - Handler: _BigtableInstanceAdmin_CreateAppProfile_Handler, - }, - { - MethodName: "GetAppProfile", - Handler: _BigtableInstanceAdmin_GetAppProfile_Handler, - }, - { - MethodName: "ListAppProfiles", - Handler: _BigtableInstanceAdmin_ListAppProfiles_Handler, - }, - { - MethodName: "UpdateAppProfile", - Handler: _BigtableInstanceAdmin_UpdateAppProfile_Handler, - }, - { - MethodName: "DeleteAppProfile", - Handler: _BigtableInstanceAdmin_DeleteAppProfile_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _BigtableInstanceAdmin_GetIamPolicy_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _BigtableInstanceAdmin_SetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _BigtableInstanceAdmin_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/bigtable/admin/v2/bigtable_instance_admin.proto", -} - -func init() { - proto.RegisterFile("google/bigtable/admin/v2/bigtable_instance_admin.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 1559 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0xdc, 0x44, - 0x1b, 0xd7, 0x6c, 0xfa, 0xf6, 0x6d, 0x9e, 0xcd, 0xd7, 0x3b, 0x6f, 0xf3, 0x21, 0xd3, 0x8f, 0xd4, - 0xad, 0xda, 0x74, 0x1b, 0x6c, 0xb2, 0xa0, 0xb6, 0x4a, 0x48, 0x45, 0x9b, 0x96, 0x28, 0x28, 0x55, - 0xa3, 0x6d, 0x29, 0x6a, 0x15, 0xb1, 0x9a, 0x64, 0x27, 0x8b, 0x89, 0xd7, 0x36, 0xb6, 0x37, 0x50, - 0xa1, 0x5e, 0x10, 0x42, 0xa8, 0x12, 0x1c, 0x40, 0xe2, 0x52, 0xc1, 0x85, 0x0b, 0xaa, 0x10, 0x88, - 0x0b, 0x37, 0xae, 0x20, 0xc1, 0x91, 0xbf, 0x00, 0x89, 0x33, 0xe2, 0xc6, 0x15, 0xcd, 0x97, 0xd7, - 0xf6, 0xda, 0x6b, 0xa7, 0x55, 0xa5, 0x9e, 0xba, 0x9e, 0x79, 0xe6, 0x99, 0xdf, 0xf3, 0x3c, 0xbf, - 0x67, 0xe6, 0x37, 0x29, 0x9c, 0x6f, 0xbb, 0x6e, 0xdb, 0xa6, 0xe6, 0x96, 0xd5, 0x0e, 0xc9, 0x96, - 0x4d, 0x4d, 0xd2, 0xea, 0x58, 0x8e, 0xb9, 0x57, 0x8f, 0x46, 0x9a, 0x96, 0x13, 0x84, 0xc4, 0xd9, - 0xa6, 0x4d, 0x3e, 0x65, 0x78, 0xbe, 0x1b, 0xba, 0x78, 0x46, 0xac, 0x33, 0x94, 0x95, 0x21, 0x26, - 0xf7, 0xea, 0xda, 0x11, 0xe9, 0x91, 0x78, 0x96, 0x49, 0x1c, 0xc7, 0x0d, 0x49, 0x68, 0xb9, 0x4e, - 0x20, 0xd6, 0x69, 0x67, 0x72, 0xf7, 0x53, 0xdb, 0x48, 0xc3, 0x63, 0xd2, 0xd0, 0x22, 0x1d, 0x73, - 0x6f, 0x81, 0xfd, 0xd3, 0xf4, 0x5c, 0xdb, 0xda, 0xbe, 0x27, 0xe7, 0xb5, 0xe4, 0x7c, 0x62, 0xee, - 0xa4, 0x9c, 0xb3, 0x5d, 0xa7, 0xed, 0x77, 0x1d, 0xc7, 0x72, 0xda, 0xa6, 0xeb, 0x51, 0x3f, 0x81, - 0xe4, 0x39, 0x69, 0xc4, 0xbf, 0xb6, 0xba, 0x3b, 0x26, 0xed, 0x78, 0xa1, 0xf2, 0x30, 0x9b, 0x9e, - 0xdc, 0xb1, 0xa8, 0xdd, 0x6a, 0x76, 0x48, 0xb0, 0x2b, 0x2d, 0x8e, 0xa7, 0x2d, 0x42, 0xab, 0x43, - 0x83, 0x90, 0x74, 0x3c, 0x61, 0xa0, 0xff, 0x56, 0x81, 0xc9, 0x15, 0x9f, 0x92, 0x90, 0xae, 0xc9, - 0xc8, 0x1a, 0xf4, 0x9d, 0x2e, 0x0d, 0x42, 0x3c, 0x05, 0x07, 0x3d, 0xe2, 0x53, 0x27, 0x9c, 0x41, - 0xb3, 0x68, 0x6e, 0xb8, 0x21, 0xbf, 0xf0, 0x71, 0xa8, 0x46, 0xb9, 0xb6, 0x5a, 0x33, 0x15, 0x3e, - 0x09, 0x6a, 0x68, 0xad, 0x85, 0x2f, 0xc1, 0x21, 0xf5, 0x35, 0x33, 0x34, 0x8b, 0xe6, 0xaa, 0x75, - 0xdd, 0xc8, 0xab, 0x83, 0x11, 0xed, 0x1a, 0xad, 0xc1, 0x77, 0xe0, 0xd0, 0xb6, 0xdd, 0x0d, 0x42, - 0xea, 0x07, 0x33, 0x07, 0x66, 0x87, 0xe6, 0xaa, 0xf5, 0xe5, 0xfc, 0xf5, 0x99, 0xd8, 0x8d, 0x15, - 0xb9, 0xfe, 0x9a, 0x13, 0xfa, 0xf7, 0x1a, 0x91, 0x3b, 0xed, 0x4d, 0x18, 0x4d, 0x4c, 0xe1, 0x09, - 0x18, 0xda, 0xa5, 0xf7, 0x64, 0x84, 0xec, 0x27, 0xbe, 0x00, 0xff, 0xd9, 0x23, 0x76, 0x97, 0xf2, - 0xc0, 0xaa, 0xf5, 0x13, 0x03, 0xb6, 0x16, 0x9e, 0x1a, 0xc2, 0x7e, 0xb1, 0x72, 0x11, 0xe9, 0x73, - 0x80, 0x57, 0x69, 0x98, 0xce, 0x24, 0x86, 0x03, 0x0e, 0xe9, 0x50, 0xb9, 0x0b, 0xff, 0xad, 0x5f, - 0x87, 0xc3, 0xeb, 0x56, 0x10, 0x99, 0x06, 0x45, 0x59, 0x3f, 0x0a, 0xe0, 0x91, 0x36, 0x6d, 0x86, - 0xee, 0x2e, 0x75, 0x64, 0xd2, 0x87, 0xd9, 0xc8, 0x2d, 0x36, 0xa0, 0x7f, 0x8b, 0x60, 0x32, 0xe5, - 0x2f, 0xf0, 0x5c, 0x27, 0xa0, 0xf8, 0x15, 0x18, 0x56, 0x99, 0x0d, 0x66, 0x10, 0x4f, 0x67, 0x99, - 0x72, 0xf4, 0x16, 0xe1, 0xb3, 0x30, 0xb1, 0x43, 0x2c, 0x9b, 0xb6, 0x9a, 0xb6, 0xbb, 0x2d, 0xc8, - 0x39, 0x53, 0x99, 0x1d, 0x9a, 0x1b, 0x6e, 0x8c, 0x8b, 0xf1, 0x75, 0x35, 0x8c, 0x4f, 0xc3, 0xb8, - 0x43, 0xdf, 0x0b, 0x9b, 0x31, 0xa8, 0x43, 0x1c, 0xea, 0x28, 0x1b, 0xde, 0x88, 0xe0, 0x3e, 0x44, - 0x70, 0x64, 0x83, 0xf8, 0xa1, 0x45, 0xec, 0xd7, 0xbd, 0x56, 0x06, 0xf9, 0xe2, 0x1c, 0x42, 0x8f, - 0xc1, 0xa1, 0x25, 0xa8, 0x76, 0xb9, 0x63, 0xde, 0x0c, 0xb2, 0x96, 0x9a, 0x72, 0xa1, 0xba, 0xc1, - 0x78, 0x95, 0xf5, 0xcb, 0x75, 0x12, 0xec, 0x36, 0x40, 0x98, 0xb3, 0xdf, 0xfa, 0x39, 0x98, 0xbc, - 0x4a, 0x6d, 0xda, 0x8f, 0x2a, 0xab, 0x90, 0x0f, 0x10, 0x1c, 0x16, 0x24, 0x54, 0x7c, 0x28, 0xae, - 0xa4, 0xe4, 0x63, 0xaf, 0x7d, 0x86, 0xe5, 0xc8, 0x5a, 0x0b, 0x2f, 0xc1, 0x7f, 0xe5, 0x87, 0x6c, - 0x9e, 0x12, 0x0c, 0x54, 0x2b, 0xf4, 0x33, 0xf0, 0xbf, 0x55, 0x1a, 0xa6, 0x80, 0x64, 0xa1, 0x5e, - 0x87, 0xff, 0x33, 0xba, 0xa8, 0x66, 0x78, 0x42, 0xf6, 0x7d, 0x83, 0x04, 0x9b, 0x7b, 0xee, 0x24, - 0xf9, 0x96, 0x63, 0xad, 0x2c, 0xb8, 0x57, 0x22, 0x9a, 0x68, 0xc9, 0xd3, 0x60, 0x5e, 0x0d, 0x0e, - 0x8b, 0xda, 0x96, 0x48, 0xd2, 0xdf, 0x08, 0xa6, 0x92, 0xe7, 0xcb, 0x75, 0x1a, 0x92, 0x16, 0x09, - 0x09, 0xbe, 0x0b, 0x13, 0xae, 0x6f, 0xb5, 0x2d, 0x87, 0xd8, 0x4d, 0x5f, 0xb8, 0x90, 0x3c, 0x35, - 0xf7, 0x79, 0x56, 0x35, 0xc6, 0x95, 0x23, 0x05, 0x65, 0x19, 0x46, 0xa4, 0xcb, 0x26, 0x3b, 0xad, - 0x73, 0xc9, 0x7b, 0x4b, 0x1d, 0xe5, 0x8d, 0xaa, 0xb4, 0x67, 0x23, 0x8c, 0xfa, 0x3b, 0x96, 0x63, - 0x05, 0x6f, 0x89, 0xd5, 0x43, 0x85, 0xab, 0x41, 0x98, 0xb3, 0x01, 0xfd, 0x1f, 0x04, 0x53, 0xc9, - 0x8e, 0x8c, 0x42, 0x26, 0xb9, 0x21, 0x9f, 0xcf, 0x0f, 0x79, 0x50, 0x93, 0x3f, 0x5b, 0x91, 0xff, - 0x85, 0xd4, 0x45, 0x28, 0x99, 0x11, 0x05, 0x7e, 0x27, 0x37, 0x70, 0xa3, 0xa8, 0xd6, 0x49, 0x92, - 0x3d, 0x5b, 0x01, 0xff, 0x81, 0x60, 0x52, 0xd4, 0x25, 0x1d, 0xf0, 0x7a, 0x6e, 0xc0, 0x25, 0xba, - 0xf7, 0x99, 0x8a, 0xf1, 0x17, 0x04, 0xd3, 0xa2, 0x12, 0x97, 0x3d, 0x6f, 0xc3, 0x77, 0x77, 0x2c, - 0xbb, 0x50, 0xdf, 0x9c, 0x82, 0x31, 0xe2, 0x79, 0x4d, 0x4f, 0x58, 0xf7, 0xce, 0xe8, 0x11, 0x12, - 0xb9, 0x58, 0x6b, 0xe1, 0x6b, 0x50, 0x8d, 0x59, 0x49, 0x58, 0xa7, 0xf2, 0xd3, 0x13, 0xdb, 0x1f, - 0x7a, 0x8e, 0xf0, 0x19, 0x18, 0xb7, 0xda, 0x8e, 0xeb, 0xd3, 0xe6, 0xbb, 0xc4, 0x67, 0x0a, 0x90, - 0x49, 0x1e, 0x34, 0x77, 0xa8, 0x31, 0x26, 0x86, 0xdf, 0x90, 0xa3, 0xec, 0xdc, 0x5a, 0xa5, 0x61, - 0x7f, 0x14, 0x59, 0xe7, 0xd6, 0x0d, 0x98, 0x62, 0xa7, 0x71, 0xcf, 0xf8, 0x49, 0xcf, 0xf7, 0x07, - 0x08, 0xa6, 0xfb, 0x3c, 0xca, 0x23, 0x7e, 0x15, 0x46, 0x62, 0x89, 0x50, 0xc7, 0x7c, 0xb9, 0x4c, - 0x54, 0x7b, 0x99, 0xc8, 0x3c, 0xc1, 0x2b, 0x59, 0x27, 0xf8, 0xcf, 0x08, 0xa6, 0x05, 0x6f, 0xfb, - 0xb3, 0x91, 0xaa, 0x0a, 0x7a, 0xcc, 0xaa, 0x3c, 0x89, 0x7a, 0xc8, 0x2a, 0xe9, 0x50, 0x66, 0x49, - 0x6f, 0xc3, 0xb4, 0xb8, 0x8a, 0x4a, 0x55, 0x35, 0xcb, 0x6f, 0x25, 0xcb, 0x6f, 0xfd, 0xd1, 0x34, - 0x4c, 0x5e, 0x91, 0xa1, 0xaa, 0x23, 0xf7, 0x32, 0x8b, 0x18, 0x7f, 0x8a, 0x60, 0x2c, 0x79, 0x09, - 0xe1, 0xfd, 0x5e, 0x57, 0xda, 0x51, 0xb5, 0x20, 0xf6, 0x6c, 0x31, 0x6e, 0xa8, 0x67, 0x8b, 0x3e, - 0xff, 0xc1, 0xef, 0x7f, 0x7e, 0x5e, 0x39, 0xad, 0x9f, 0x60, 0x8f, 0xa5, 0xf7, 0x05, 0xbd, 0x96, - 0x3d, 0xdf, 0x7d, 0x9b, 0x6e, 0x87, 0x81, 0x59, 0xbb, 0x1f, 0x3d, 0xa0, 0x82, 0x45, 0x54, 0xc3, - 0x0f, 0x10, 0x54, 0x63, 0x82, 0x19, 0xcf, 0xe7, 0xa3, 0xe9, 0xd7, 0xd5, 0x5a, 0x09, 0x49, 0xa8, - 0x9f, 0xe5, 0x78, 0x4e, 0x62, 0x81, 0x87, 0x25, 0x32, 0x86, 0xa6, 0x07, 0xc6, 0xac, 0xdd, 0xc7, - 0x0f, 0x11, 0x8c, 0x26, 0x34, 0x34, 0x1e, 0x70, 0xbe, 0x67, 0x89, 0x77, 0xcd, 0x2c, 0x6d, 0x2f, - 0x9a, 0x27, 0x85, 0x6e, 0x50, 0xb6, 0xf0, 0x47, 0x08, 0xc6, 0x92, 0xd7, 0x28, 0x2e, 0x11, 0x7f, - 0xa9, 0x1c, 0xc9, 0x9a, 0x69, 0xc5, 0x39, 0x62, 0x35, 0x63, 0x4f, 0x8d, 0xcc, 0x6b, 0x1d, 0x3f, - 0xa6, 0x0e, 0x28, 0xa2, 0xd4, 0xcb, 0x1c, 0xde, 0xf9, 0x7a, 0x8d, 0xc3, 0x8b, 0x1e, 0xe0, 0x03, - 0x71, 0xf6, 0x5e, 0x02, 0x1f, 0x22, 0x18, 0x4b, 0xaa, 0xf9, 0x41, 0x9c, 0xcf, 0xd4, 0xfd, 0xda, - 0x54, 0x5f, 0xeb, 0x5f, 0x63, 0xaf, 0x70, 0x55, 0xbe, 0x5a, 0x09, 0x72, 0x7d, 0x89, 0x60, 0x34, - 0xa1, 0x09, 0xf0, 0x3e, 0xc5, 0x43, 0x51, 0x96, 0x96, 0x39, 0x96, 0x0b, 0xfa, 0x7c, 0x36, 0x95, - 0x12, 0x68, 0x4c, 0xa5, 0xb0, 0x17, 0xd5, 0xcb, 0x01, 0x7f, 0x86, 0x00, 0x7a, 0x4f, 0x07, 0x7c, - 0x6e, 0x60, 0x23, 0xa6, 0x90, 0x15, 0xab, 0x02, 0xfd, 0x25, 0x8e, 0xce, 0xc0, 0xf3, 0x45, 0x99, - 0x8a, 0xa0, 0xb1, 0xa4, 0x7d, 0x8d, 0x60, 0x24, 0xfe, 0xae, 0xc0, 0xcf, 0x0f, 0x6e, 0xb0, 0xd4, - 0x73, 0x46, 0x33, 0xca, 0x9a, 0xcb, 0x76, 0x4c, 0xa2, 0x2c, 0x99, 0x43, 0x76, 0x88, 0x8d, 0x26, - 0x84, 0x14, 0x2e, 0x4e, 0x48, 0x51, 0x35, 0x2f, 0x70, 0x24, 0x0b, 0xda, 0xbe, 0xf2, 0xc5, 0xba, - 0xf3, 0x13, 0x04, 0xa3, 0x89, 0x07, 0xce, 0x20, 0x9e, 0x65, 0xbd, 0x84, 0x72, 0xc9, 0x2e, 0x93, - 0x53, 0xdb, 0x5f, 0x09, 0x7f, 0x40, 0x30, 0x91, 0x56, 0x60, 0x78, 0xa1, 0x88, 0xfa, 0x7d, 0x37, - 0xa2, 0x56, 0xea, 0x12, 0xd7, 0xaf, 0x72, 0x8c, 0x97, 0x74, 0xb3, 0x4c, 0x01, 0x63, 0xe2, 0x63, - 0x31, 0x2e, 0x1b, 0xf0, 0x57, 0x08, 0x46, 0x13, 0x62, 0x6b, 0x50, 0x0e, 0xb3, 0x54, 0x59, 0x49, - 0xb4, 0xb2, 0xc8, 0xd8, 0x2c, 0xcc, 0x68, 0x0c, 0x2a, 0x4b, 0xea, 0xf7, 0x08, 0xc6, 0x53, 0x7a, - 0x0c, 0xbf, 0x30, 0x98, 0xeb, 0xfd, 0x62, 0x50, 0x5b, 0xd8, 0xc7, 0x0a, 0xd9, 0x20, 0x49, 0xc4, - 0xe5, 0xf3, 0x8b, 0x7f, 0x44, 0x30, 0x91, 0x16, 0x6d, 0x83, 0x68, 0x90, 0x23, 0xf0, 0x8a, 0xda, - 0x66, 0x83, 0xe3, 0x7b, 0xad, 0xbe, 0xc4, 0xf1, 0xc5, 0x6a, 0x6a, 0x94, 0xcf, 0x6e, 0x92, 0x0b, - 0x5f, 0x20, 0x98, 0x48, 0xab, 0xb4, 0x41, 0xc0, 0x73, 0x14, 0x5d, 0x6e, 0x57, 0xc9, 0x8c, 0xd6, - 0xf6, 0xcd, 0x81, 0x8f, 0x11, 0x8c, 0x30, 0x4d, 0x44, 0x3a, 0x1b, 0xfc, 0x8f, 0xca, 0x3d, 0x35, - 0x60, 0x91, 0x8e, 0xb1, 0xb7, 0x60, 0xc4, 0x27, 0x15, 0x8a, 0xc9, 0x94, 0x8d, 0x98, 0x8d, 0xee, - 0x8e, 0x3a, 0x07, 0xe1, 0xd3, 0xc0, 0xed, 0xfa, 0xdb, 0xf9, 0x97, 0x6b, 0x3b, 0xe6, 0x99, 0x9d, - 0x39, 0x0c, 0xca, 0xcd, 0x41, 0x50, 0x6e, 0x3e, 0x35, 0x28, 0x41, 0x0a, 0xca, 0x77, 0x08, 0xf0, - 0x2d, 0x1a, 0xf0, 0x41, 0xea, 0x77, 0xac, 0x20, 0xe0, 0x7f, 0x1d, 0x9a, 0x4b, 0x6d, 0xd6, 0x6f, - 0xa2, 0x60, 0x9d, 0x2d, 0x61, 0x29, 0x9b, 0x61, 0x85, 0x43, 0x5d, 0xd6, 0x2f, 0x96, 0x83, 0x1a, - 0xf6, 0x79, 0x5a, 0x44, 0xb5, 0x2b, 0x3f, 0x21, 0x38, 0xb2, 0xed, 0x76, 0x72, 0x09, 0x75, 0x45, - 0xcb, 0x94, 0xf2, 0x1b, 0x8c, 0x45, 0x1b, 0xe8, 0xee, 0xb2, 0x5c, 0xd7, 0x76, 0x6d, 0xe2, 0xb4, - 0x0d, 0xd7, 0x6f, 0x9b, 0x6d, 0xea, 0x70, 0x8e, 0x99, 0x62, 0x8a, 0x78, 0x56, 0xd0, 0xff, 0xff, - 0x18, 0x4b, 0xfc, 0xc7, 0xa3, 0xca, 0xb1, 0x55, 0xb1, 0x7e, 0xc5, 0x76, 0xbb, 0x2d, 0x43, 0x6d, - 0x65, 0xf0, 0x3d, 0x8c, 0xdb, 0xf5, 0x5f, 0x95, 0xc1, 0x26, 0x37, 0xd8, 0x54, 0x06, 0x9b, 0xdc, - 0x60, 0xf3, 0x76, 0x7d, 0xeb, 0x20, 0xdf, 0xeb, 0xc5, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x2f, - 0xdb, 0x53, 0xda, 0xa2, 0x19, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/bigtable_table_admin.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/bigtable_table_admin.pb.go deleted file mode 100644 index 01ebaba6..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/bigtable_table_admin.pb.go +++ /dev/null @@ -1,1725 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/v2/bigtable_table_admin.proto - -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf5 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf3 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.CreateTable][google.bigtable.admin.v2.BigtableTableAdmin.CreateTable] -type CreateTableRequest struct { - // The unique name of the instance in which to create the table. - // Values are of the form `projects/<project>/instances/<instance>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The name by which the new table should be referred to within the parent - // instance, e.g., `foobar` rather than `<parent>/tables/foobar`. - TableId string `protobuf:"bytes,2,opt,name=table_id,json=tableId" json:"table_id,omitempty"` - // The Table to create. - Table *Table `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"` - // The optional list of row keys that will be used to initially split the - // table into several tablets (tablets are similar to HBase regions). - // Given two split keys, `s1` and `s2`, three tablets will be created, - // spanning the key ranges: `[, s1), [s1, s2), [s2, )`. - // - // Example: - // - // * Row keys := `["a", "apple", "custom", "customer_1", "customer_2",` - // `"other", "zz"]` - // * initial_split_keys := `["apple", "customer_1", "customer_2", "other"]` - // * Key assignment: - // - Tablet 1 `[, apple) => {"a"}.` - // - Tablet 2 `[apple, customer_1) => {"apple", "custom"}.` - // - Tablet 3 `[customer_1, customer_2) => {"customer_1"}.` - // - Tablet 4 `[customer_2, other) => {"customer_2"}.` - // - Tablet 5 `[other, ) => {"other", "zz"}.` - InitialSplits []*CreateTableRequest_Split `protobuf:"bytes,4,rep,name=initial_splits,json=initialSplits" json:"initial_splits,omitempty"` -} - -func (m *CreateTableRequest) Reset() { *m = CreateTableRequest{} } -func (m *CreateTableRequest) String() string { return proto.CompactTextString(m) } -func (*CreateTableRequest) ProtoMessage() {} -func (*CreateTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *CreateTableRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateTableRequest) GetTableId() string { - if m != nil { - return m.TableId - } - return "" -} - -func (m *CreateTableRequest) GetTable() *Table { - if m != nil { - return m.Table - } - return nil -} - -func (m *CreateTableRequest) GetInitialSplits() []*CreateTableRequest_Split { - if m != nil { - return m.InitialSplits - } - return nil -} - -// An initial split point for a newly created table. -type CreateTableRequest_Split struct { - // Row key to use as an initial tablet boundary. - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` -} - -func (m *CreateTableRequest_Split) Reset() { *m = CreateTableRequest_Split{} } -func (m *CreateTableRequest_Split) String() string { return proto.CompactTextString(m) } -func (*CreateTableRequest_Split) ProtoMessage() {} -func (*CreateTableRequest_Split) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -func (m *CreateTableRequest_Split) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.CreateTableFromSnapshot][google.bigtable.admin.v2.BigtableTableAdmin.CreateTableFromSnapshot] -type CreateTableFromSnapshotRequest struct { - // The unique name of the instance in which to create the table. - // Values are of the form `projects/<project>/instances/<instance>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The name by which the new table should be referred to within the parent - // instance, e.g., `foobar` rather than `<parent>/tables/foobar`. - TableId string `protobuf:"bytes,2,opt,name=table_id,json=tableId" json:"table_id,omitempty"` - // The unique name of the snapshot from which to restore the table. The - // snapshot and the table must be in the same instance. - // Values are of the form - // `projects/<project>/instances/<instance>/clusters/<cluster>/snapshots/<snapshot>`. - SourceSnapshot string `protobuf:"bytes,3,opt,name=source_snapshot,json=sourceSnapshot" json:"source_snapshot,omitempty"` -} - -func (m *CreateTableFromSnapshotRequest) Reset() { *m = CreateTableFromSnapshotRequest{} } -func (m *CreateTableFromSnapshotRequest) String() string { return proto.CompactTextString(m) } -func (*CreateTableFromSnapshotRequest) ProtoMessage() {} -func (*CreateTableFromSnapshotRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *CreateTableFromSnapshotRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateTableFromSnapshotRequest) GetTableId() string { - if m != nil { - return m.TableId - } - return "" -} - -func (m *CreateTableFromSnapshotRequest) GetSourceSnapshot() string { - if m != nil { - return m.SourceSnapshot - } - return "" -} - -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange][google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange] -type DropRowRangeRequest struct { - // The unique name of the table on which to drop a range of rows. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Delete all rows or by prefix. - // - // Types that are valid to be assigned to Target: - // *DropRowRangeRequest_RowKeyPrefix - // *DropRowRangeRequest_DeleteAllDataFromTable - Target isDropRowRangeRequest_Target `protobuf_oneof:"target"` -} - -func (m *DropRowRangeRequest) Reset() { *m = DropRowRangeRequest{} } -func (m *DropRowRangeRequest) String() string { return proto.CompactTextString(m) } -func (*DropRowRangeRequest) ProtoMessage() {} -func (*DropRowRangeRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -type isDropRowRangeRequest_Target interface { - isDropRowRangeRequest_Target() -} - -type DropRowRangeRequest_RowKeyPrefix struct { - RowKeyPrefix []byte `protobuf:"bytes,2,opt,name=row_key_prefix,json=rowKeyPrefix,proto3,oneof"` -} -type DropRowRangeRequest_DeleteAllDataFromTable struct { - DeleteAllDataFromTable bool `protobuf:"varint,3,opt,name=delete_all_data_from_table,json=deleteAllDataFromTable,oneof"` -} - -func (*DropRowRangeRequest_RowKeyPrefix) isDropRowRangeRequest_Target() {} -func (*DropRowRangeRequest_DeleteAllDataFromTable) isDropRowRangeRequest_Target() {} - -func (m *DropRowRangeRequest) GetTarget() isDropRowRangeRequest_Target { - if m != nil { - return m.Target - } - return nil -} - -func (m *DropRowRangeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DropRowRangeRequest) GetRowKeyPrefix() []byte { - if x, ok := m.GetTarget().(*DropRowRangeRequest_RowKeyPrefix); ok { - return x.RowKeyPrefix - } - return nil -} - -func (m *DropRowRangeRequest) GetDeleteAllDataFromTable() bool { - if x, ok := m.GetTarget().(*DropRowRangeRequest_DeleteAllDataFromTable); ok { - return x.DeleteAllDataFromTable - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*DropRowRangeRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _DropRowRangeRequest_OneofMarshaler, _DropRowRangeRequest_OneofUnmarshaler, _DropRowRangeRequest_OneofSizer, []interface{}{ - (*DropRowRangeRequest_RowKeyPrefix)(nil), - (*DropRowRangeRequest_DeleteAllDataFromTable)(nil), - } -} - -func _DropRowRangeRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*DropRowRangeRequest) - // target - switch x := m.Target.(type) { - case *DropRowRangeRequest_RowKeyPrefix: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.RowKeyPrefix) - case *DropRowRangeRequest_DeleteAllDataFromTable: - t := uint64(0) - if x.DeleteAllDataFromTable { - t = 1 - } - b.EncodeVarint(3<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("DropRowRangeRequest.Target has unexpected type %T", x) - } - return nil -} - -func _DropRowRangeRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*DropRowRangeRequest) - switch tag { - case 2: // target.row_key_prefix - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Target = &DropRowRangeRequest_RowKeyPrefix{x} - return true, err - case 3: // target.delete_all_data_from_table - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Target = &DropRowRangeRequest_DeleteAllDataFromTable{x != 0} - return true, err - default: - return false, nil - } -} - -func _DropRowRangeRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*DropRowRangeRequest) - // target - switch x := m.Target.(type) { - case *DropRowRangeRequest_RowKeyPrefix: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RowKeyPrefix))) - n += len(x.RowKeyPrefix) - case *DropRowRangeRequest_DeleteAllDataFromTable: - n += proto.SizeVarint(3<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.ListTables][google.bigtable.admin.v2.BigtableTableAdmin.ListTables] -type ListTablesRequest struct { - // The unique name of the instance for which tables should be listed. - // Values are of the form `projects/<project>/instances/<instance>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The view to be applied to the returned tables' fields. - // Defaults to `NAME_ONLY` if unspecified; no others are currently supported. - View Table_View `protobuf:"varint,2,opt,name=view,enum=google.bigtable.admin.v2.Table_View" json:"view,omitempty"` - // The value of `next_page_token` returned by a previous call. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListTablesRequest) Reset() { *m = ListTablesRequest{} } -func (m *ListTablesRequest) String() string { return proto.CompactTextString(m) } -func (*ListTablesRequest) ProtoMessage() {} -func (*ListTablesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *ListTablesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListTablesRequest) GetView() Table_View { - if m != nil { - return m.View - } - return Table_VIEW_UNSPECIFIED -} - -func (m *ListTablesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for -// [google.bigtable.admin.v2.BigtableTableAdmin.ListTables][google.bigtable.admin.v2.BigtableTableAdmin.ListTables] -type ListTablesResponse struct { - // The tables present in the requested instance. - Tables []*Table `protobuf:"bytes,1,rep,name=tables" json:"tables,omitempty"` - // Set if not all tables could be returned in a single response. - // Pass this value to `page_token` in another request to get the next - // page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTablesResponse) Reset() { *m = ListTablesResponse{} } -func (m *ListTablesResponse) String() string { return proto.CompactTextString(m) } -func (*ListTablesResponse) ProtoMessage() {} -func (*ListTablesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *ListTablesResponse) GetTables() []*Table { - if m != nil { - return m.Tables - } - return nil -} - -func (m *ListTablesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.GetTable][google.bigtable.admin.v2.BigtableTableAdmin.GetTable] -type GetTableRequest struct { - // The unique name of the requested table. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The view to be applied to the returned table's fields. - // Defaults to `SCHEMA_VIEW` if unspecified. - View Table_View `protobuf:"varint,2,opt,name=view,enum=google.bigtable.admin.v2.Table_View" json:"view,omitempty"` -} - -func (m *GetTableRequest) Reset() { *m = GetTableRequest{} } -func (m *GetTableRequest) String() string { return proto.CompactTextString(m) } -func (*GetTableRequest) ProtoMessage() {} -func (*GetTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *GetTableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GetTableRequest) GetView() Table_View { - if m != nil { - return m.View - } - return Table_VIEW_UNSPECIFIED -} - -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.DeleteTable][google.bigtable.admin.v2.BigtableTableAdmin.DeleteTable] -type DeleteTableRequest struct { - // The unique name of the table to be deleted. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteTableRequest) Reset() { *m = DeleteTableRequest{} } -func (m *DeleteTableRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteTableRequest) ProtoMessage() {} -func (*DeleteTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *DeleteTableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies][google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies] -type ModifyColumnFamiliesRequest struct { - // The unique name of the table whose families should be modified. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Modifications to be atomically applied to the specified table's families. - // Entries are applied in order, meaning that earlier modifications can be - // masked by later ones (in the case of repeated updates to the same family, - // for example). - Modifications []*ModifyColumnFamiliesRequest_Modification `protobuf:"bytes,2,rep,name=modifications" json:"modifications,omitempty"` -} - -func (m *ModifyColumnFamiliesRequest) Reset() { *m = ModifyColumnFamiliesRequest{} } -func (m *ModifyColumnFamiliesRequest) String() string { return proto.CompactTextString(m) } -func (*ModifyColumnFamiliesRequest) ProtoMessage() {} -func (*ModifyColumnFamiliesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *ModifyColumnFamiliesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ModifyColumnFamiliesRequest) GetModifications() []*ModifyColumnFamiliesRequest_Modification { - if m != nil { - return m.Modifications - } - return nil -} - -// A create, update, or delete of a particular column family. -type ModifyColumnFamiliesRequest_Modification struct { - // The ID of the column family to be modified. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // Column familiy modifications. - // - // Types that are valid to be assigned to Mod: - // *ModifyColumnFamiliesRequest_Modification_Create - // *ModifyColumnFamiliesRequest_Modification_Update - // *ModifyColumnFamiliesRequest_Modification_Drop - Mod isModifyColumnFamiliesRequest_Modification_Mod `protobuf_oneof:"mod"` -} - -func (m *ModifyColumnFamiliesRequest_Modification) Reset() { - *m = ModifyColumnFamiliesRequest_Modification{} -} -func (m *ModifyColumnFamiliesRequest_Modification) String() string { return proto.CompactTextString(m) } -func (*ModifyColumnFamiliesRequest_Modification) ProtoMessage() {} -func (*ModifyColumnFamiliesRequest_Modification) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{7, 0} -} - -type isModifyColumnFamiliesRequest_Modification_Mod interface { - isModifyColumnFamiliesRequest_Modification_Mod() -} - -type ModifyColumnFamiliesRequest_Modification_Create struct { - Create *ColumnFamily `protobuf:"bytes,2,opt,name=create,oneof"` -} -type ModifyColumnFamiliesRequest_Modification_Update struct { - Update *ColumnFamily `protobuf:"bytes,3,opt,name=update,oneof"` -} -type ModifyColumnFamiliesRequest_Modification_Drop struct { - Drop bool `protobuf:"varint,4,opt,name=drop,oneof"` -} - -func (*ModifyColumnFamiliesRequest_Modification_Create) isModifyColumnFamiliesRequest_Modification_Mod() { -} -func (*ModifyColumnFamiliesRequest_Modification_Update) isModifyColumnFamiliesRequest_Modification_Mod() { -} -func (*ModifyColumnFamiliesRequest_Modification_Drop) isModifyColumnFamiliesRequest_Modification_Mod() { -} - -func (m *ModifyColumnFamiliesRequest_Modification) GetMod() isModifyColumnFamiliesRequest_Modification_Mod { - if m != nil { - return m.Mod - } - return nil -} - -func (m *ModifyColumnFamiliesRequest_Modification) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *ModifyColumnFamiliesRequest_Modification) GetCreate() *ColumnFamily { - if x, ok := m.GetMod().(*ModifyColumnFamiliesRequest_Modification_Create); ok { - return x.Create - } - return nil -} - -func (m *ModifyColumnFamiliesRequest_Modification) GetUpdate() *ColumnFamily { - if x, ok := m.GetMod().(*ModifyColumnFamiliesRequest_Modification_Update); ok { - return x.Update - } - return nil -} - -func (m *ModifyColumnFamiliesRequest_Modification) GetDrop() bool { - if x, ok := m.GetMod().(*ModifyColumnFamiliesRequest_Modification_Drop); ok { - return x.Drop - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ModifyColumnFamiliesRequest_Modification) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ModifyColumnFamiliesRequest_Modification_OneofMarshaler, _ModifyColumnFamiliesRequest_Modification_OneofUnmarshaler, _ModifyColumnFamiliesRequest_Modification_OneofSizer, []interface{}{ - (*ModifyColumnFamiliesRequest_Modification_Create)(nil), - (*ModifyColumnFamiliesRequest_Modification_Update)(nil), - (*ModifyColumnFamiliesRequest_Modification_Drop)(nil), - } -} - -func _ModifyColumnFamiliesRequest_Modification_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ModifyColumnFamiliesRequest_Modification) - // mod - switch x := m.Mod.(type) { - case *ModifyColumnFamiliesRequest_Modification_Create: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Create); err != nil { - return err - } - case *ModifyColumnFamiliesRequest_Modification_Update: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Update); err != nil { - return err - } - case *ModifyColumnFamiliesRequest_Modification_Drop: - t := uint64(0) - if x.Drop { - t = 1 - } - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("ModifyColumnFamiliesRequest_Modification.Mod has unexpected type %T", x) - } - return nil -} - -func _ModifyColumnFamiliesRequest_Modification_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ModifyColumnFamiliesRequest_Modification) - switch tag { - case 2: // mod.create - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ColumnFamily) - err := b.DecodeMessage(msg) - m.Mod = &ModifyColumnFamiliesRequest_Modification_Create{msg} - return true, err - case 3: // mod.update - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ColumnFamily) - err := b.DecodeMessage(msg) - m.Mod = &ModifyColumnFamiliesRequest_Modification_Update{msg} - return true, err - case 4: // mod.drop - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Mod = &ModifyColumnFamiliesRequest_Modification_Drop{x != 0} - return true, err - default: - return false, nil - } -} - -func _ModifyColumnFamiliesRequest_Modification_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ModifyColumnFamiliesRequest_Modification) - // mod - switch x := m.Mod.(type) { - case *ModifyColumnFamiliesRequest_Modification_Create: - s := proto.Size(x.Create) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ModifyColumnFamiliesRequest_Modification_Update: - s := proto.Size(x.Update) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ModifyColumnFamiliesRequest_Modification_Drop: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.GenerateConsistencyToken][google.bigtable.admin.v2.BigtableTableAdmin.GenerateConsistencyToken] -type GenerateConsistencyTokenRequest struct { - // The unique name of the Table for which to create a consistency token. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GenerateConsistencyTokenRequest) Reset() { *m = GenerateConsistencyTokenRequest{} } -func (m *GenerateConsistencyTokenRequest) String() string { return proto.CompactTextString(m) } -func (*GenerateConsistencyTokenRequest) ProtoMessage() {} -func (*GenerateConsistencyTokenRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *GenerateConsistencyTokenRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Response message for -// [google.bigtable.admin.v2.BigtableTableAdmin.GenerateConsistencyToken][google.bigtable.admin.v2.BigtableTableAdmin.GenerateConsistencyToken] -type GenerateConsistencyTokenResponse struct { - // The generated consistency token. - ConsistencyToken string `protobuf:"bytes,1,opt,name=consistency_token,json=consistencyToken" json:"consistency_token,omitempty"` -} - -func (m *GenerateConsistencyTokenResponse) Reset() { *m = GenerateConsistencyTokenResponse{} } -func (m *GenerateConsistencyTokenResponse) String() string { return proto.CompactTextString(m) } -func (*GenerateConsistencyTokenResponse) ProtoMessage() {} -func (*GenerateConsistencyTokenResponse) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{9} -} - -func (m *GenerateConsistencyTokenResponse) GetConsistencyToken() string { - if m != nil { - return m.ConsistencyToken - } - return "" -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.CheckConsistency][google.bigtable.admin.v2.BigtableTableAdmin.CheckConsistency] -type CheckConsistencyRequest struct { - // The unique name of the Table for which to check replication consistency. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The token created using GenerateConsistencyToken for the Table. - ConsistencyToken string `protobuf:"bytes,2,opt,name=consistency_token,json=consistencyToken" json:"consistency_token,omitempty"` -} - -func (m *CheckConsistencyRequest) Reset() { *m = CheckConsistencyRequest{} } -func (m *CheckConsistencyRequest) String() string { return proto.CompactTextString(m) } -func (*CheckConsistencyRequest) ProtoMessage() {} -func (*CheckConsistencyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *CheckConsistencyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CheckConsistencyRequest) GetConsistencyToken() string { - if m != nil { - return m.ConsistencyToken - } - return "" -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Response message for -// [google.bigtable.admin.v2.BigtableTableAdmin.CheckConsistency][google.bigtable.admin.v2.BigtableTableAdmin.CheckConsistency] -type CheckConsistencyResponse struct { - // True only if the token is consistent. A token is consistent if replication - // has caught up with the restrictions specified in the request. - Consistent bool `protobuf:"varint,1,opt,name=consistent" json:"consistent,omitempty"` -} - -func (m *CheckConsistencyResponse) Reset() { *m = CheckConsistencyResponse{} } -func (m *CheckConsistencyResponse) String() string { return proto.CompactTextString(m) } -func (*CheckConsistencyResponse) ProtoMessage() {} -func (*CheckConsistencyResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *CheckConsistencyResponse) GetConsistent() bool { - if m != nil { - return m.Consistent - } - return false -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.SnapshotTable][google.bigtable.admin.v2.BigtableTableAdmin.SnapshotTable] -type SnapshotTableRequest struct { - // The unique name of the table to have the snapshot taken. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the cluster where the snapshot will be created in. - // Values are of the form - // `projects/<project>/instances/<instance>/clusters/<cluster>`. - Cluster string `protobuf:"bytes,2,opt,name=cluster" json:"cluster,omitempty"` - // The ID by which the new snapshot should be referred to within the parent - // cluster, e.g., `mysnapshot` of the form: `[_a-zA-Z0-9][-_.a-zA-Z0-9]*` - // rather than - // `projects/<project>/instances/<instance>/clusters/<cluster>/snapshots/mysnapshot`. - SnapshotId string `protobuf:"bytes,3,opt,name=snapshot_id,json=snapshotId" json:"snapshot_id,omitempty"` - // The amount of time that the new snapshot can stay active after it is - // created. Once 'ttl' expires, the snapshot will get deleted. The maximum - // amount of time a snapshot can stay active is 7 days. If 'ttl' is not - // specified, the default value of 24 hours will be used. - Ttl *google_protobuf5.Duration `protobuf:"bytes,4,opt,name=ttl" json:"ttl,omitempty"` - // Description of the snapshot. - Description string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"` -} - -func (m *SnapshotTableRequest) Reset() { *m = SnapshotTableRequest{} } -func (m *SnapshotTableRequest) String() string { return proto.CompactTextString(m) } -func (*SnapshotTableRequest) ProtoMessage() {} -func (*SnapshotTableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *SnapshotTableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SnapshotTableRequest) GetCluster() string { - if m != nil { - return m.Cluster - } - return "" -} - -func (m *SnapshotTableRequest) GetSnapshotId() string { - if m != nil { - return m.SnapshotId - } - return "" -} - -func (m *SnapshotTableRequest) GetTtl() *google_protobuf5.Duration { - if m != nil { - return m.Ttl - } - return nil -} - -func (m *SnapshotTableRequest) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.GetSnapshot][google.bigtable.admin.v2.BigtableTableAdmin.GetSnapshot] -type GetSnapshotRequest struct { - // The unique name of the requested snapshot. - // Values are of the form - // `projects/<project>/instances/<instance>/clusters/<cluster>/snapshots/<snapshot>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetSnapshotRequest) Reset() { *m = GetSnapshotRequest{} } -func (m *GetSnapshotRequest) String() string { return proto.CompactTextString(m) } -func (*GetSnapshotRequest) ProtoMessage() {} -func (*GetSnapshotRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *GetSnapshotRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.ListSnapshots][google.bigtable.admin.v2.BigtableTableAdmin.ListSnapshots] -type ListSnapshotsRequest struct { - // The unique name of the cluster for which snapshots should be listed. - // Values are of the form - // `projects/<project>/instances/<instance>/clusters/<cluster>`. - // Use `<cluster> = '-'` to list snapshots for all clusters in an instance, - // e.g., `projects/<project>/instances/<instance>/clusters/-`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The maximum number of snapshots to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value of `next_page_token` returned by a previous call. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListSnapshotsRequest) Reset() { *m = ListSnapshotsRequest{} } -func (m *ListSnapshotsRequest) String() string { return proto.CompactTextString(m) } -func (*ListSnapshotsRequest) ProtoMessage() {} -func (*ListSnapshotsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *ListSnapshotsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListSnapshotsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListSnapshotsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Response message for -// [google.bigtable.admin.v2.BigtableTableAdmin.ListSnapshots][google.bigtable.admin.v2.BigtableTableAdmin.ListSnapshots] -type ListSnapshotsResponse struct { - // The snapshots present in the requested cluster. - Snapshots []*Snapshot `protobuf:"bytes,1,rep,name=snapshots" json:"snapshots,omitempty"` - // Set if not all snapshots could be returned in a single response. - // Pass this value to `page_token` in another request to get the next - // page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListSnapshotsResponse) Reset() { *m = ListSnapshotsResponse{} } -func (m *ListSnapshotsResponse) String() string { return proto.CompactTextString(m) } -func (*ListSnapshotsResponse) ProtoMessage() {} -func (*ListSnapshotsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *ListSnapshotsResponse) GetSnapshots() []*Snapshot { - if m != nil { - return m.Snapshots - } - return nil -} - -func (m *ListSnapshotsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// Request message for -// [google.bigtable.admin.v2.BigtableTableAdmin.DeleteSnapshot][google.bigtable.admin.v2.BigtableTableAdmin.DeleteSnapshot] -type DeleteSnapshotRequest struct { - // The unique name of the snapshot to be deleted. - // Values are of the form - // `projects/<project>/instances/<instance>/clusters/<cluster>/snapshots/<snapshot>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteSnapshotRequest) Reset() { *m = DeleteSnapshotRequest{} } -func (m *DeleteSnapshotRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSnapshotRequest) ProtoMessage() {} -func (*DeleteSnapshotRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *DeleteSnapshotRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// The metadata for the Operation returned by SnapshotTable. -type SnapshotTableMetadata struct { - // The request that prompted the initiation of this SnapshotTable operation. - OriginalRequest *SnapshotTableRequest `protobuf:"bytes,1,opt,name=original_request,json=originalRequest" json:"original_request,omitempty"` - // The time at which the original request was received. - RequestTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which the operation failed or was completed successfully. - FinishTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *SnapshotTableMetadata) Reset() { *m = SnapshotTableMetadata{} } -func (m *SnapshotTableMetadata) String() string { return proto.CompactTextString(m) } -func (*SnapshotTableMetadata) ProtoMessage() {} -func (*SnapshotTableMetadata) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *SnapshotTableMetadata) GetOriginalRequest() *SnapshotTableRequest { - if m != nil { - return m.OriginalRequest - } - return nil -} - -func (m *SnapshotTableMetadata) GetRequestTime() *google_protobuf1.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *SnapshotTableMetadata) GetFinishTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// The metadata for the Operation returned by CreateTableFromSnapshot. -type CreateTableFromSnapshotMetadata struct { - // The request that prompted the initiation of this CreateTableFromSnapshot - // operation. - OriginalRequest *CreateTableFromSnapshotRequest `protobuf:"bytes,1,opt,name=original_request,json=originalRequest" json:"original_request,omitempty"` - // The time at which the original request was received. - RequestTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=request_time,json=requestTime" json:"request_time,omitempty"` - // The time at which the operation failed or was completed successfully. - FinishTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` -} - -func (m *CreateTableFromSnapshotMetadata) Reset() { *m = CreateTableFromSnapshotMetadata{} } -func (m *CreateTableFromSnapshotMetadata) String() string { return proto.CompactTextString(m) } -func (*CreateTableFromSnapshotMetadata) ProtoMessage() {} -func (*CreateTableFromSnapshotMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{18} -} - -func (m *CreateTableFromSnapshotMetadata) GetOriginalRequest() *CreateTableFromSnapshotRequest { - if m != nil { - return m.OriginalRequest - } - return nil -} - -func (m *CreateTableFromSnapshotMetadata) GetRequestTime() *google_protobuf1.Timestamp { - if m != nil { - return m.RequestTime - } - return nil -} - -func (m *CreateTableFromSnapshotMetadata) GetFinishTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -func init() { - proto.RegisterType((*CreateTableRequest)(nil), "google.bigtable.admin.v2.CreateTableRequest") - proto.RegisterType((*CreateTableRequest_Split)(nil), "google.bigtable.admin.v2.CreateTableRequest.Split") - proto.RegisterType((*CreateTableFromSnapshotRequest)(nil), "google.bigtable.admin.v2.CreateTableFromSnapshotRequest") - proto.RegisterType((*DropRowRangeRequest)(nil), "google.bigtable.admin.v2.DropRowRangeRequest") - proto.RegisterType((*ListTablesRequest)(nil), "google.bigtable.admin.v2.ListTablesRequest") - proto.RegisterType((*ListTablesResponse)(nil), "google.bigtable.admin.v2.ListTablesResponse") - proto.RegisterType((*GetTableRequest)(nil), "google.bigtable.admin.v2.GetTableRequest") - proto.RegisterType((*DeleteTableRequest)(nil), "google.bigtable.admin.v2.DeleteTableRequest") - proto.RegisterType((*ModifyColumnFamiliesRequest)(nil), "google.bigtable.admin.v2.ModifyColumnFamiliesRequest") - proto.RegisterType((*ModifyColumnFamiliesRequest_Modification)(nil), "google.bigtable.admin.v2.ModifyColumnFamiliesRequest.Modification") - proto.RegisterType((*GenerateConsistencyTokenRequest)(nil), "google.bigtable.admin.v2.GenerateConsistencyTokenRequest") - proto.RegisterType((*GenerateConsistencyTokenResponse)(nil), "google.bigtable.admin.v2.GenerateConsistencyTokenResponse") - proto.RegisterType((*CheckConsistencyRequest)(nil), "google.bigtable.admin.v2.CheckConsistencyRequest") - proto.RegisterType((*CheckConsistencyResponse)(nil), "google.bigtable.admin.v2.CheckConsistencyResponse") - proto.RegisterType((*SnapshotTableRequest)(nil), "google.bigtable.admin.v2.SnapshotTableRequest") - proto.RegisterType((*GetSnapshotRequest)(nil), "google.bigtable.admin.v2.GetSnapshotRequest") - proto.RegisterType((*ListSnapshotsRequest)(nil), "google.bigtable.admin.v2.ListSnapshotsRequest") - proto.RegisterType((*ListSnapshotsResponse)(nil), "google.bigtable.admin.v2.ListSnapshotsResponse") - proto.RegisterType((*DeleteSnapshotRequest)(nil), "google.bigtable.admin.v2.DeleteSnapshotRequest") - proto.RegisterType((*SnapshotTableMetadata)(nil), "google.bigtable.admin.v2.SnapshotTableMetadata") - proto.RegisterType((*CreateTableFromSnapshotMetadata)(nil), "google.bigtable.admin.v2.CreateTableFromSnapshotMetadata") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for BigtableTableAdmin service - -type BigtableTableAdminClient interface { - // Creates a new table in the specified instance. - // The table can be created with a full set of initial column families, - // specified in the request. - CreateTable(ctx context.Context, in *CreateTableRequest, opts ...grpc.CallOption) (*Table, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Creates a new table from the specified snapshot. The target table must - // not exist. The snapshot and the table must be in the same instance. - CreateTableFromSnapshot(ctx context.Context, in *CreateTableFromSnapshotRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Lists all tables served from a specified instance. - ListTables(ctx context.Context, in *ListTablesRequest, opts ...grpc.CallOption) (*ListTablesResponse, error) - // Gets metadata information about the specified table. - GetTable(ctx context.Context, in *GetTableRequest, opts ...grpc.CallOption) (*Table, error) - // Permanently deletes a specified table and all of its data. - DeleteTable(ctx context.Context, in *DeleteTableRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Performs a series of column family modifications on the specified table. - // Either all or none of the modifications will occur before this method - // returns, but data requests received prior to that point may see a table - // where only some modifications have taken effect. - ModifyColumnFamilies(ctx context.Context, in *ModifyColumnFamiliesRequest, opts ...grpc.CallOption) (*Table, error) - // Permanently drop/delete a row range from a specified table. The request can - // specify whether to delete all rows in a table, or only those that match a - // particular prefix. - DropRowRange(ctx context.Context, in *DropRowRangeRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Generates a consistency token for a Table, which can be used in - // CheckConsistency to check whether mutations to the table that finished - // before this call started have been replicated. The tokens will be available - // for 90 days. - GenerateConsistencyToken(ctx context.Context, in *GenerateConsistencyTokenRequest, opts ...grpc.CallOption) (*GenerateConsistencyTokenResponse, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Checks replication consistency based on a consistency token, that is, if - // replication has caught up based on the conditions specified in the token - // and the check request. - CheckConsistency(ctx context.Context, in *CheckConsistencyRequest, opts ...grpc.CallOption) (*CheckConsistencyResponse, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Creates a new snapshot in the specified cluster from the specified - // source table. The cluster and the table must be in the same instance. - SnapshotTable(ctx context.Context, in *SnapshotTableRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Gets metadata information about the specified snapshot. - GetSnapshot(ctx context.Context, in *GetSnapshotRequest, opts ...grpc.CallOption) (*Snapshot, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Lists all snapshots associated with the specified cluster. - ListSnapshots(ctx context.Context, in *ListSnapshotsRequest, opts ...grpc.CallOption) (*ListSnapshotsResponse, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Permanently deletes the specified snapshot. - DeleteSnapshot(ctx context.Context, in *DeleteSnapshotRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) -} - -type bigtableTableAdminClient struct { - cc *grpc.ClientConn -} - -func NewBigtableTableAdminClient(cc *grpc.ClientConn) BigtableTableAdminClient { - return &bigtableTableAdminClient{cc} -} - -func (c *bigtableTableAdminClient) CreateTable(ctx context.Context, in *CreateTableRequest, opts ...grpc.CallOption) (*Table, error) { - out := new(Table) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/CreateTable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) CreateTableFromSnapshot(ctx context.Context, in *CreateTableFromSnapshotRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/CreateTableFromSnapshot", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) ListTables(ctx context.Context, in *ListTablesRequest, opts ...grpc.CallOption) (*ListTablesResponse, error) { - out := new(ListTablesResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/ListTables", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) GetTable(ctx context.Context, in *GetTableRequest, opts ...grpc.CallOption) (*Table, error) { - out := new(Table) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/GetTable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) DeleteTable(ctx context.Context, in *DeleteTableRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/DeleteTable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) ModifyColumnFamilies(ctx context.Context, in *ModifyColumnFamiliesRequest, opts ...grpc.CallOption) (*Table, error) { - out := new(Table) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/ModifyColumnFamilies", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) DropRowRange(ctx context.Context, in *DropRowRangeRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/DropRowRange", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) GenerateConsistencyToken(ctx context.Context, in *GenerateConsistencyTokenRequest, opts ...grpc.CallOption) (*GenerateConsistencyTokenResponse, error) { - out := new(GenerateConsistencyTokenResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/GenerateConsistencyToken", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) CheckConsistency(ctx context.Context, in *CheckConsistencyRequest, opts ...grpc.CallOption) (*CheckConsistencyResponse, error) { - out := new(CheckConsistencyResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/CheckConsistency", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) SnapshotTable(ctx context.Context, in *SnapshotTableRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/SnapshotTable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) GetSnapshot(ctx context.Context, in *GetSnapshotRequest, opts ...grpc.CallOption) (*Snapshot, error) { - out := new(Snapshot) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/GetSnapshot", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) ListSnapshots(ctx context.Context, in *ListSnapshotsRequest, opts ...grpc.CallOption) (*ListSnapshotsResponse, error) { - out := new(ListSnapshotsResponse) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/ListSnapshots", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableTableAdminClient) DeleteSnapshot(ctx context.Context, in *DeleteSnapshotRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.admin.v2.BigtableTableAdmin/DeleteSnapshot", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for BigtableTableAdmin service - -type BigtableTableAdminServer interface { - // Creates a new table in the specified instance. - // The table can be created with a full set of initial column families, - // specified in the request. - CreateTable(context.Context, *CreateTableRequest) (*Table, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Creates a new table from the specified snapshot. The target table must - // not exist. The snapshot and the table must be in the same instance. - CreateTableFromSnapshot(context.Context, *CreateTableFromSnapshotRequest) (*google_longrunning.Operation, error) - // Lists all tables served from a specified instance. - ListTables(context.Context, *ListTablesRequest) (*ListTablesResponse, error) - // Gets metadata information about the specified table. - GetTable(context.Context, *GetTableRequest) (*Table, error) - // Permanently deletes a specified table and all of its data. - DeleteTable(context.Context, *DeleteTableRequest) (*google_protobuf3.Empty, error) - // Performs a series of column family modifications on the specified table. - // Either all or none of the modifications will occur before this method - // returns, but data requests received prior to that point may see a table - // where only some modifications have taken effect. - ModifyColumnFamilies(context.Context, *ModifyColumnFamiliesRequest) (*Table, error) - // Permanently drop/delete a row range from a specified table. The request can - // specify whether to delete all rows in a table, or only those that match a - // particular prefix. - DropRowRange(context.Context, *DropRowRangeRequest) (*google_protobuf3.Empty, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Generates a consistency token for a Table, which can be used in - // CheckConsistency to check whether mutations to the table that finished - // before this call started have been replicated. The tokens will be available - // for 90 days. - GenerateConsistencyToken(context.Context, *GenerateConsistencyTokenRequest) (*GenerateConsistencyTokenResponse, error) - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Checks replication consistency based on a consistency token, that is, if - // replication has caught up based on the conditions specified in the token - // and the check request. - CheckConsistency(context.Context, *CheckConsistencyRequest) (*CheckConsistencyResponse, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Creates a new snapshot in the specified cluster from the specified - // source table. The cluster and the table must be in the same instance. - SnapshotTable(context.Context, *SnapshotTableRequest) (*google_longrunning.Operation, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Gets metadata information about the specified snapshot. - GetSnapshot(context.Context, *GetSnapshotRequest) (*Snapshot, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Lists all snapshots associated with the specified cluster. - ListSnapshots(context.Context, *ListSnapshotsRequest) (*ListSnapshotsResponse, error) - // This is a private alpha release of Cloud Bigtable snapshots. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // Permanently deletes the specified snapshot. - DeleteSnapshot(context.Context, *DeleteSnapshotRequest) (*google_protobuf3.Empty, error) -} - -func RegisterBigtableTableAdminServer(s *grpc.Server, srv BigtableTableAdminServer) { - s.RegisterService(&_BigtableTableAdmin_serviceDesc, srv) -} - -func _BigtableTableAdmin_CreateTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).CreateTable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/CreateTable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).CreateTable(ctx, req.(*CreateTableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_CreateTableFromSnapshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTableFromSnapshotRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).CreateTableFromSnapshot(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/CreateTableFromSnapshot", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).CreateTableFromSnapshot(ctx, req.(*CreateTableFromSnapshotRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_ListTables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTablesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).ListTables(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/ListTables", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).ListTables(ctx, req.(*ListTablesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_GetTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).GetTable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/GetTable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).GetTable(ctx, req.(*GetTableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_DeleteTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteTableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).DeleteTable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/DeleteTable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).DeleteTable(ctx, req.(*DeleteTableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_ModifyColumnFamilies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyColumnFamiliesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).ModifyColumnFamilies(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/ModifyColumnFamilies", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).ModifyColumnFamilies(ctx, req.(*ModifyColumnFamiliesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_DropRowRange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DropRowRangeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).DropRowRange(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/DropRowRange", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).DropRowRange(ctx, req.(*DropRowRangeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_GenerateConsistencyToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GenerateConsistencyTokenRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).GenerateConsistencyToken(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/GenerateConsistencyToken", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).GenerateConsistencyToken(ctx, req.(*GenerateConsistencyTokenRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_CheckConsistency_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CheckConsistencyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).CheckConsistency(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/CheckConsistency", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).CheckConsistency(ctx, req.(*CheckConsistencyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_SnapshotTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SnapshotTableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).SnapshotTable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/SnapshotTable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).SnapshotTable(ctx, req.(*SnapshotTableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_GetSnapshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSnapshotRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).GetSnapshot(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/GetSnapshot", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).GetSnapshot(ctx, req.(*GetSnapshotRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_ListSnapshots_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSnapshotsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).ListSnapshots(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/ListSnapshots", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).ListSnapshots(ctx, req.(*ListSnapshotsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableTableAdmin_DeleteSnapshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSnapshotRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableTableAdminServer).DeleteSnapshot(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.admin.v2.BigtableTableAdmin/DeleteSnapshot", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableTableAdminServer).DeleteSnapshot(ctx, req.(*DeleteSnapshotRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _BigtableTableAdmin_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.bigtable.admin.v2.BigtableTableAdmin", - HandlerType: (*BigtableTableAdminServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateTable", - Handler: _BigtableTableAdmin_CreateTable_Handler, - }, - { - MethodName: "CreateTableFromSnapshot", - Handler: _BigtableTableAdmin_CreateTableFromSnapshot_Handler, - }, - { - MethodName: "ListTables", - Handler: _BigtableTableAdmin_ListTables_Handler, - }, - { - MethodName: "GetTable", - Handler: _BigtableTableAdmin_GetTable_Handler, - }, - { - MethodName: "DeleteTable", - Handler: _BigtableTableAdmin_DeleteTable_Handler, - }, - { - MethodName: "ModifyColumnFamilies", - Handler: _BigtableTableAdmin_ModifyColumnFamilies_Handler, - }, - { - MethodName: "DropRowRange", - Handler: _BigtableTableAdmin_DropRowRange_Handler, - }, - { - MethodName: "GenerateConsistencyToken", - Handler: _BigtableTableAdmin_GenerateConsistencyToken_Handler, - }, - { - MethodName: "CheckConsistency", - Handler: _BigtableTableAdmin_CheckConsistency_Handler, - }, - { - MethodName: "SnapshotTable", - Handler: _BigtableTableAdmin_SnapshotTable_Handler, - }, - { - MethodName: "GetSnapshot", - Handler: _BigtableTableAdmin_GetSnapshot_Handler, - }, - { - MethodName: "ListSnapshots", - Handler: _BigtableTableAdmin_ListSnapshots_Handler, - }, - { - MethodName: "DeleteSnapshot", - Handler: _BigtableTableAdmin_DeleteSnapshot_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/bigtable/admin/v2/bigtable_table_admin.proto", -} - -func init() { - proto.RegisterFile("google/bigtable/admin/v2/bigtable_table_admin.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 1514 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcb, 0x6f, 0xdc, 0x54, - 0x17, 0xaf, 0x27, 0x8f, 0x26, 0x67, 0xf2, 0xea, 0xfd, 0xd2, 0x76, 0x3a, 0x6d, 0x93, 0xc8, 0x5f, - 0x55, 0x42, 0x52, 0xc6, 0x62, 0xaa, 0xa8, 0x21, 0x6d, 0x20, 0x9d, 0x84, 0x26, 0x05, 0x4a, 0x23, - 0xb7, 0xaa, 0xd4, 0x2a, 0x92, 0xe5, 0x8c, 0x6f, 0x9c, 0xdb, 0x78, 0x7c, 0x8d, 0x7d, 0xa7, 0x69, - 0x0a, 0x5d, 0x50, 0x21, 0x21, 0xb1, 0xed, 0xaa, 0x42, 0x42, 0x62, 0xcb, 0x12, 0x21, 0x21, 0x55, - 0x48, 0x88, 0x2d, 0x5b, 0xd6, 0x2c, 0x90, 0x58, 0xb3, 0xe2, 0x0f, 0x40, 0xf7, 0xe1, 0xc4, 0xf3, - 0xf0, 0x78, 0x26, 0x6c, 0xd8, 0x44, 0xbe, 0xe7, 0x9e, 0xc7, 0xef, 0x9c, 0x73, 0xef, 0xb9, 0xbf, - 0x09, 0x5c, 0x75, 0x29, 0x75, 0x3d, 0x6c, 0x6c, 0x13, 0x97, 0xd9, 0xdb, 0x1e, 0x36, 0x6c, 0xa7, - 0x46, 0x7c, 0xe3, 0x49, 0xf9, 0x50, 0x62, 0xc9, 0xbf, 0x42, 0x5e, 0x0a, 0x42, 0xca, 0x28, 0x2a, - 0x48, 0xa3, 0x52, 0xac, 0x52, 0x92, 0x9b, 0x4f, 0xca, 0xc5, 0x0b, 0xca, 0x9d, 0x1d, 0x10, 0xc3, - 0xf6, 0x7d, 0xca, 0x6c, 0x46, 0xa8, 0x1f, 0x49, 0xbb, 0xe2, 0xa5, 0xd4, 0x60, 0xd2, 0x8d, 0xd4, - 0xfa, 0xbf, 0xd2, 0xf2, 0xa8, 0xef, 0x86, 0x75, 0xdf, 0x27, 0xbe, 0x6b, 0xd0, 0x00, 0x87, 0x0d, - 0xae, 0xa6, 0x94, 0x92, 0x58, 0x6d, 0xd7, 0x77, 0x0c, 0xa7, 0x2e, 0x15, 0xd4, 0xfe, 0xf9, 0xe6, - 0x7d, 0x5c, 0x0b, 0xd8, 0x81, 0xda, 0x9c, 0x6e, 0xde, 0x64, 0xa4, 0x86, 0x23, 0x66, 0xd7, 0x02, - 0xa9, 0xa0, 0xff, 0xad, 0x01, 0x5a, 0x0d, 0xb1, 0xcd, 0xf0, 0x7d, 0x0e, 0xcc, 0xc4, 0x9f, 0xd4, - 0x71, 0xc4, 0xd0, 0x19, 0x18, 0x0c, 0xec, 0x10, 0xfb, 0xac, 0xa0, 0xcd, 0x68, 0xb3, 0xc3, 0xa6, - 0x5a, 0xa1, 0x73, 0x30, 0x24, 0x8b, 0x44, 0x9c, 0x42, 0x4e, 0xec, 0x9c, 0x14, 0xeb, 0xdb, 0x0e, - 0x5a, 0x80, 0x01, 0xf1, 0x59, 0xe8, 0x9b, 0xd1, 0x66, 0xf3, 0xe5, 0xe9, 0x52, 0x5a, 0xe9, 0x4a, - 0x32, 0x92, 0xd4, 0x46, 0x0f, 0x61, 0x8c, 0xf8, 0x84, 0x11, 0xdb, 0xb3, 0xa2, 0xc0, 0x23, 0x2c, - 0x2a, 0xf4, 0xcf, 0xf4, 0xcd, 0xe6, 0xcb, 0xe5, 0x74, 0xfb, 0x56, 0xbc, 0xa5, 0x7b, 0xdc, 0xd4, - 0x1c, 0x55, 0x9e, 0xc4, 0x2a, 0x2a, 0x9e, 0x83, 0x01, 0xf1, 0x85, 0x26, 0xa0, 0x6f, 0x0f, 0x1f, - 0x88, 0x54, 0x46, 0x4c, 0xfe, 0xa9, 0x7f, 0x06, 0x53, 0x09, 0x2f, 0xb7, 0x42, 0x5a, 0xbb, 0xe7, - 0xdb, 0x41, 0xb4, 0x4b, 0xd9, 0xbf, 0xa8, 0xc0, 0x1b, 0x30, 0x1e, 0xd1, 0x7a, 0x58, 0xc5, 0x56, - 0xa4, 0x9c, 0x89, 0x5a, 0x0c, 0x9b, 0x63, 0x52, 0x1c, 0x87, 0xd0, 0x5f, 0x69, 0xf0, 0xbf, 0xb5, - 0x90, 0x06, 0x26, 0xdd, 0x37, 0x6d, 0xdf, 0x3d, 0xac, 0x3a, 0x82, 0x7e, 0xdf, 0xae, 0x61, 0x15, - 0x51, 0x7c, 0xa3, 0xcb, 0x30, 0x16, 0xd2, 0x7d, 0x6b, 0x0f, 0x1f, 0x58, 0x41, 0x88, 0x77, 0xc8, - 0x53, 0x11, 0x75, 0x64, 0xe3, 0x84, 0x39, 0x12, 0xd2, 0xfd, 0x0f, 0xf1, 0xc1, 0xa6, 0x90, 0xa2, - 0x1b, 0x50, 0x74, 0xb0, 0x87, 0x19, 0xb6, 0x6c, 0xcf, 0xb3, 0x1c, 0x9b, 0xd9, 0xd6, 0x4e, 0x48, - 0x6b, 0xd6, 0x51, 0x4f, 0x86, 0x36, 0x4e, 0x98, 0x67, 0xa4, 0xce, 0x4d, 0xcf, 0x5b, 0xb3, 0x99, - 0xcd, 0xf3, 0x16, 0x05, 0xa8, 0x0c, 0xc1, 0x20, 0xb3, 0x43, 0x17, 0x33, 0xfd, 0x0b, 0x0d, 0x4e, - 0x7d, 0x44, 0x22, 0x26, 0xe4, 0x51, 0x56, 0x35, 0x16, 0xa1, 0xff, 0x09, 0xc1, 0xfb, 0x02, 0xd3, - 0x58, 0xf9, 0x52, 0x46, 0xcf, 0x4b, 0x0f, 0x08, 0xde, 0x37, 0x85, 0x05, 0xba, 0x08, 0x10, 0xd8, - 0x2e, 0xb6, 0x18, 0xdd, 0xc3, 0xbe, 0xaa, 0xd3, 0x30, 0x97, 0xdc, 0xe7, 0x02, 0xbd, 0x0e, 0x28, - 0x89, 0x22, 0x0a, 0xa8, 0x1f, 0x61, 0x74, 0x8d, 0xc3, 0xe4, 0x92, 0x82, 0x26, 0x0e, 0x49, 0xe6, - 0x21, 0x53, 0xea, 0xe8, 0x32, 0x8c, 0xfb, 0xf8, 0x29, 0xb3, 0x12, 0x21, 0x65, 0xf3, 0x46, 0xb9, - 0x78, 0xf3, 0x30, 0xac, 0x05, 0xe3, 0xeb, 0x98, 0x35, 0x5c, 0x85, 0x76, 0x4d, 0x39, 0x76, 0xda, - 0xfa, 0x2c, 0xa0, 0x35, 0xd1, 0x82, 0xac, 0x18, 0xfa, 0xef, 0x39, 0x38, 0x7f, 0x87, 0x3a, 0x64, - 0xe7, 0x60, 0x95, 0x7a, 0xf5, 0x9a, 0x7f, 0xcb, 0xae, 0x11, 0x8f, 0x1c, 0xb5, 0xa4, 0x1d, 0xae, - 0x5d, 0x18, 0xad, 0x71, 0x13, 0x52, 0x95, 0x23, 0xa4, 0x90, 0x13, 0x65, 0xaa, 0xa4, 0x03, 0xec, - 0x10, 0x41, 0xee, 0x29, 0x57, 0x66, 0xa3, 0xe3, 0xe2, 0xcf, 0x1a, 0x8c, 0x24, 0xf7, 0xd1, 0x18, - 0xe4, 0x88, 0xa3, 0xc0, 0xe4, 0x88, 0x83, 0x56, 0x60, 0xb0, 0x2a, 0x6e, 0x98, 0x28, 0x52, 0xbe, - 0x7c, 0xb9, 0xc3, 0x7d, 0x3e, 0x8a, 0x7e, 0xb0, 0x71, 0xc2, 0x54, 0x76, 0xdc, 0x43, 0x3d, 0x70, - 0xb8, 0x87, 0xbe, 0x5e, 0x3d, 0x48, 0x3b, 0x34, 0x09, 0xfd, 0x4e, 0x48, 0x83, 0x42, 0xbf, 0x3a, - 0xfd, 0x62, 0x55, 0x19, 0x80, 0xbe, 0x1a, 0x75, 0xf4, 0x05, 0x98, 0x5e, 0xc7, 0x3e, 0x1f, 0xb6, - 0x78, 0x95, 0xfa, 0x11, 0x89, 0x18, 0xf6, 0xab, 0x07, 0xe2, 0x18, 0x74, 0x6a, 0xcb, 0x5d, 0x98, - 0x49, 0x37, 0x53, 0xc7, 0x74, 0x1e, 0x4e, 0x55, 0x8f, 0xf6, 0xd4, 0x79, 0x93, 0x4e, 0x26, 0xaa, - 0x4d, 0x46, 0xfa, 0x23, 0x38, 0xbb, 0xba, 0x8b, 0xab, 0x7b, 0x09, 0x6f, 0x9d, 0x5a, 0xdc, 0xd6, - 0x77, 0x2e, 0xc5, 0xf7, 0x12, 0x14, 0x5a, 0x7d, 0x2b, 0x90, 0x53, 0x00, 0x87, 0xfa, 0xf2, 0x5a, - 0x0f, 0x99, 0x09, 0x89, 0xfe, 0x83, 0x06, 0x93, 0xf1, 0xc4, 0xca, 0xbc, 0x10, 0x05, 0x38, 0x59, - 0xf5, 0xea, 0x11, 0xc3, 0x61, 0x3c, 0x14, 0xd5, 0x12, 0x4d, 0x43, 0x3e, 0x9e, 0x86, 0x7c, 0x64, - 0xca, 0x8b, 0x0e, 0xb1, 0xe8, 0xb6, 0x83, 0xe6, 0xa1, 0x8f, 0x31, 0x4f, 0xf4, 0x28, 0x5f, 0x3e, - 0x17, 0xf7, 0x38, 0x7e, 0xb0, 0x4a, 0x6b, 0xea, 0xb5, 0x33, 0xb9, 0x16, 0x9a, 0x81, 0xbc, 0x83, - 0xa3, 0x6a, 0x48, 0x02, 0x2e, 0x2b, 0x0c, 0x08, 0x6f, 0x49, 0x11, 0xbf, 0x60, 0xeb, 0x98, 0x35, - 0x4f, 0xf3, 0x76, 0x9d, 0x7c, 0x0c, 0x93, 0x7c, 0xc4, 0xc4, 0xaa, 0x99, 0xb3, 0xee, 0x3c, 0x88, - 0xf9, 0x64, 0x45, 0xe4, 0x99, 0x3c, 0xd4, 0x03, 0xe6, 0x10, 0x17, 0xdc, 0x23, 0xcf, 0x70, 0xd6, - 0x38, 0xfb, 0x5c, 0x83, 0xd3, 0x4d, 0xc1, 0x54, 0x1b, 0x56, 0x60, 0x38, 0x2e, 0x46, 0x3c, 0xd5, - 0xf4, 0xf4, 0x83, 0x7e, 0x98, 0xd7, 0x91, 0x51, 0xd7, 0xb3, 0x6d, 0x1e, 0x4e, 0xcb, 0xd1, 0xd3, - 0x4d, 0x71, 0xfe, 0xd2, 0xe0, 0x74, 0x43, 0xf7, 0xef, 0x60, 0x66, 0xf3, 0x57, 0x05, 0x3d, 0x84, - 0x09, 0x1a, 0x12, 0x97, 0xf8, 0xb6, 0x67, 0x85, 0xd2, 0x83, 0xb0, 0xcc, 0x97, 0x4b, 0xd9, 0xb8, - 0x93, 0x07, 0xc9, 0x1c, 0x8f, 0xfd, 0xc4, 0x40, 0x96, 0x61, 0x44, 0x79, 0xb4, 0x38, 0x4f, 0x51, - 0x93, 0xa3, 0xd8, 0x72, 0x26, 0xee, 0xc7, 0x24, 0xc6, 0xcc, 0x2b, 0x7d, 0x2e, 0x41, 0xd7, 0x21, - 0xbf, 0x43, 0x7c, 0x12, 0xed, 0x4a, 0xeb, 0xbe, 0x4c, 0x6b, 0x90, 0xea, 0x5c, 0xa0, 0xbf, 0xc8, - 0xc1, 0x74, 0x0a, 0x25, 0x38, 0x4c, 0xbd, 0x9a, 0x9a, 0xfa, 0x62, 0x57, 0x6c, 0xa5, 0x0d, 0xcf, - 0xf8, 0x4f, 0x15, 0xa1, 0xfc, 0xe3, 0x29, 0x40, 0x15, 0x95, 0x81, 0x40, 0x7c, 0x93, 0x67, 0x81, - 0x5e, 0x6a, 0x90, 0x4f, 0xa4, 0x81, 0xae, 0xf4, 0xc2, 0xcd, 0x8a, 0x59, 0x8f, 0xb4, 0xbe, 0xf0, - 0xe2, 0xb7, 0x3f, 0x5f, 0xe6, 0x0c, 0x7d, 0x8e, 0xf3, 0xe3, 0x4f, 0xe5, 0x6d, 0x5b, 0x0e, 0x42, - 0xfa, 0x18, 0x57, 0x59, 0x64, 0xcc, 0x19, 0xc4, 0x8f, 0x98, 0xed, 0x57, 0x71, 0x64, 0xcc, 0x3d, - 0x97, 0xfc, 0x39, 0x5a, 0xd2, 0xe6, 0xd0, 0x4f, 0x1a, 0x9c, 0x4d, 0x29, 0x2e, 0x3a, 0x76, 0x3f, - 0x8a, 0x17, 0x63, 0xcb, 0x04, 0x29, 0x2f, 0xdd, 0x8d, 0x49, 0xb9, 0xbe, 0x21, 0xb0, 0x56, 0xf4, - 0xe5, 0x1e, 0xb0, 0xca, 0xf7, 0x2c, 0x19, 0x8c, 0xc3, 0xff, 0x5a, 0x03, 0x38, 0xa2, 0x38, 0x68, - 0x3e, 0x1d, 0x71, 0x0b, 0x1d, 0x2b, 0x5e, 0xe9, 0x4e, 0x59, 0x8e, 0x18, 0xbd, 0x2c, 0x30, 0x5f, - 0x41, 0x3d, 0xd4, 0x17, 0x7d, 0xa5, 0xc1, 0x50, 0xcc, 0x84, 0xd0, 0x9b, 0xe9, 0xe1, 0x9a, 0xd8, - 0x52, 0x76, 0xb3, 0x1b, 0xc1, 0xf0, 0x59, 0x93, 0x02, 0x45, 0x21, 0x31, 0xe6, 0x9e, 0xa3, 0x2f, - 0x35, 0xc8, 0x27, 0x58, 0x53, 0xa7, 0xf3, 0xd7, 0x4a, 0xae, 0x8a, 0x67, 0x5a, 0x0e, 0xff, 0xfb, - 0xfc, 0x17, 0x52, 0x8c, 0x64, 0xae, 0x17, 0x24, 0xaf, 0x35, 0x98, 0x6c, 0x47, 0x99, 0xd0, 0xc2, - 0xb1, 0x28, 0x56, 0x76, 0xb9, 0x3e, 0x10, 0x20, 0xd7, 0xf4, 0xf7, 0xba, 0x07, 0xb9, 0x54, 0x6b, - 0x13, 0x90, 0x9f, 0xb8, 0x57, 0x1a, 0x8c, 0x24, 0x7f, 0x76, 0xa0, 0xb7, 0x3a, 0xd4, 0xb1, 0xf5, - 0xe7, 0x49, 0x6a, 0x21, 0x2b, 0x02, 0xe3, 0x0d, 0xfd, 0x5a, 0x0f, 0x18, 0x9d, 0x84, 0x7f, 0x8e, - 0xed, 0x0f, 0x0d, 0x0a, 0x69, 0xbc, 0x0a, 0xbd, 0xd3, 0xe9, 0xfc, 0x75, 0xa4, 0x70, 0xc5, 0xa5, - 0xe3, 0x98, 0xaa, 0x7b, 0xf3, 0xb1, 0xc8, 0x6b, 0x43, 0x5f, 0xed, 0x21, 0x2f, 0x37, 0xc5, 0x29, - 0xcf, 0xf1, 0x17, 0x0d, 0x26, 0x9a, 0xe9, 0x18, 0x7a, 0xbb, 0xc3, 0xa4, 0x6a, 0x4f, 0x0b, 0x8b, - 0xe5, 0x5e, 0x4c, 0x54, 0x2e, 0xb7, 0x44, 0x2e, 0x2b, 0xfa, 0xf5, 0x1e, 0x72, 0xa9, 0x36, 0x39, - 0xe3, 0x39, 0x7c, 0xa3, 0xc1, 0x68, 0xc3, 0x63, 0x8e, 0x7a, 0x7c, 0xf5, 0xb3, 0x06, 0xec, 0xbb, - 0x02, 0xe8, 0xa2, 0x7e, 0xb5, 0x07, 0xa0, 0x51, 0x62, 0xac, 0x7e, 0xab, 0x41, 0x3e, 0x41, 0x00, - 0x3b, 0xcd, 0x8a, 0x56, 0x9e, 0x58, 0xec, 0x82, 0x7a, 0xe9, 0x2b, 0x02, 0xe1, 0x12, 0x5a, 0xcc, - 0x44, 0xa8, 0x38, 0x30, 0xff, 0x3c, 0xa4, 0x6b, 0x7c, 0x8a, 0x7c, 0xaf, 0xc1, 0x68, 0x03, 0x1b, - 0xec, 0x54, 0xc4, 0x76, 0x1c, 0xb5, 0x68, 0x74, 0xad, 0xaf, 0xfa, 0xdf, 0x08, 0xba, 0xe3, 0x1b, - 0x90, 0x80, 0xfd, 0xfc, 0x08, 0x37, 0x7f, 0xaf, 0xc6, 0x1a, 0xf9, 0x23, 0x32, 0xb2, 0xe6, 0x70, - 0x73, 0x79, 0xd3, 0x26, 0x88, 0x42, 0x37, 0x77, 0xec, 0x92, 0x56, 0x5e, 0x6b, 0x70, 0xa1, 0x4a, - 0x6b, 0xa9, 0x80, 0x2a, 0x67, 0x5b, 0x79, 0xcd, 0x26, 0x07, 0xb1, 0xa9, 0x3d, 0x5a, 0x56, 0x46, - 0x2e, 0xf5, 0x6c, 0xdf, 0x2d, 0xd1, 0xd0, 0x35, 0x5c, 0xec, 0x0b, 0x88, 0x86, 0xdc, 0xb2, 0x03, - 0x12, 0xb5, 0xfe, 0x2f, 0xef, 0xba, 0xf8, 0xf8, 0x2e, 0x37, 0xb5, 0x2e, 0xed, 0x57, 0x3d, 0x5a, - 0x77, 0x4a, 0x71, 0x9c, 0x92, 0x88, 0x51, 0x7a, 0x50, 0xfe, 0x35, 0x56, 0xd8, 0x12, 0x0a, 0x5b, - 0xb1, 0xc2, 0x96, 0x50, 0xd8, 0x7a, 0x50, 0xde, 0x1e, 0x14, 0xb1, 0xae, 0xfe, 0x13, 0x00, 0x00, - 0xff, 0xff, 0xe3, 0x38, 0xa4, 0xfd, 0xa3, 0x14, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/common.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/common.pb.go deleted file mode 100644 index 8abf0f56..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/common.pb.go +++ /dev/null @@ -1,70 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/v2/common.proto - -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Storage media types for persisting Bigtable data. -type StorageType int32 - -const ( - // The user did not specify a storage type. - StorageType_STORAGE_TYPE_UNSPECIFIED StorageType = 0 - // Flash (SSD) storage should be used. - StorageType_SSD StorageType = 1 - // Magnetic drive (HDD) storage should be used. - StorageType_HDD StorageType = 2 -) - -var StorageType_name = map[int32]string{ - 0: "STORAGE_TYPE_UNSPECIFIED", - 1: "SSD", - 2: "HDD", -} -var StorageType_value = map[string]int32{ - "STORAGE_TYPE_UNSPECIFIED": 0, - "SSD": 1, - "HDD": 2, -} - -func (x StorageType) String() string { - return proto.EnumName(StorageType_name, int32(x)) -} -func (StorageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func init() { - proto.RegisterEnum("google.bigtable.admin.v2.StorageType", StorageType_name, StorageType_value) -} - -func init() { proto.RegisterFile("google/bigtable/admin/v2/common.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 270 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0xd0, 0xcf, 0x4b, 0xc3, 0x30, - 0x14, 0x07, 0x70, 0x3b, 0x41, 0x21, 0xbb, 0x94, 0x9e, 0xc6, 0x28, 0x7a, 0xf2, 0xe2, 0x21, 0x81, - 0x7a, 0x94, 0x1d, 0xd6, 0x1f, 0xce, 0x5d, 0xb4, 0x98, 0x3a, 0x50, 0x0a, 0x23, 0xdd, 0x62, 0x08, - 0x34, 0x79, 0xa1, 0xcd, 0x06, 0xfe, 0x4b, 0x1e, 0xfc, 0x43, 0xfc, 0xab, 0x64, 0x49, 0x7b, 0x12, - 0x6f, 0x2f, 0xbc, 0xcf, 0xcb, 0xf7, 0x25, 0xe8, 0x46, 0x00, 0x88, 0x96, 0x93, 0x46, 0x0a, 0xcb, - 0x9a, 0x96, 0x13, 0xb6, 0x57, 0x52, 0x93, 0x63, 0x42, 0x76, 0xa0, 0x14, 0x68, 0x6c, 0x3a, 0xb0, - 0x10, 0xcd, 0x3c, 0xc3, 0x23, 0xc3, 0x8e, 0xe1, 0x63, 0x32, 0x8f, 0x87, 0x0b, 0x98, 0x91, 0x84, - 0x69, 0x0d, 0x96, 0x59, 0x09, 0xba, 0xf7, 0x73, 0xf3, 0xeb, 0xa1, 0xeb, 0x4e, 0xcd, 0xe1, 0x83, - 0x58, 0xa9, 0x78, 0x6f, 0x99, 0x32, 0x1e, 0xdc, 0x2e, 0xd0, 0x94, 0x5a, 0xe8, 0x98, 0xe0, 0xd5, - 0xa7, 0xe1, 0x51, 0x8c, 0x66, 0xb4, 0x7a, 0x7e, 0x59, 0xae, 0x8a, 0x6d, 0xf5, 0x56, 0x16, 0xdb, - 0xd7, 0x27, 0x5a, 0x16, 0xd9, 0xfa, 0x61, 0x5d, 0xe4, 0xe1, 0x59, 0x74, 0x89, 0xce, 0x29, 0xcd, - 0xc3, 0xe0, 0x54, 0x3c, 0xe6, 0x79, 0x38, 0x49, 0xbf, 0x03, 0x14, 0xef, 0x40, 0xe1, 0xff, 0xd6, - 0x4b, 0xa7, 0x99, 0x7b, 0x46, 0x79, 0x0a, 0x2b, 0x83, 0xf7, 0xc5, 0x00, 0x05, 0xb4, 0x4c, 0x0b, - 0x0c, 0x9d, 0x20, 0x82, 0x6b, 0xb7, 0x0a, 0xf1, 0x2d, 0x66, 0x64, 0xff, 0xf7, 0x37, 0xee, 0x5d, - 0xf1, 0x35, 0xb9, 0x5a, 0xf9, 0xf9, 0xac, 0x85, 0xc3, 0x1e, 0xa7, 0x63, 0xdc, 0xd2, 0xc5, 0x6d, - 0x92, 0x9f, 0x11, 0xd4, 0x0e, 0xd4, 0x23, 0xa8, 0x1d, 0xa8, 0x37, 0x49, 0x73, 0xe1, 0xb2, 0xee, - 0x7e, 0x03, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x9e, 0x61, 0x6a, 0x78, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/instance.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/instance.pb.go deleted file mode 100644 index 42c78ce9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/instance.pb.go +++ /dev/null @@ -1,541 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/v2/instance.proto - -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Possible states of an instance. -type Instance_State int32 - -const ( - // The state of the instance could not be determined. - Instance_STATE_NOT_KNOWN Instance_State = 0 - // The instance has been successfully created and can serve requests - // to its tables. - Instance_READY Instance_State = 1 - // The instance is currently being created, and may be destroyed - // if the creation process encounters an error. - Instance_CREATING Instance_State = 2 -) - -var Instance_State_name = map[int32]string{ - 0: "STATE_NOT_KNOWN", - 1: "READY", - 2: "CREATING", -} -var Instance_State_value = map[string]int32{ - "STATE_NOT_KNOWN": 0, - "READY": 1, - "CREATING": 2, -} - -func (x Instance_State) String() string { - return proto.EnumName(Instance_State_name, int32(x)) -} -func (Instance_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -// The type of the instance. -type Instance_Type int32 - -const ( - // The type of the instance is unspecified. If set when creating an - // instance, a `PRODUCTION` instance will be created. If set when updating - // an instance, the type will be left unchanged. - Instance_TYPE_UNSPECIFIED Instance_Type = 0 - // An instance meant for production use. `serve_nodes` must be set - // on the cluster. - Instance_PRODUCTION Instance_Type = 1 - // The instance is meant for development and testing purposes only; it has - // no performance or uptime guarantees and is not covered by SLA. - // After a development instance is created, it can be upgraded by - // updating the instance to type `PRODUCTION`. An instance created - // as a production instance cannot be changed to a development instance. - // When creating a development instance, `serve_nodes` on the cluster must - // not be set. - Instance_DEVELOPMENT Instance_Type = 2 -) - -var Instance_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "PRODUCTION", - 2: "DEVELOPMENT", -} -var Instance_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "PRODUCTION": 1, - "DEVELOPMENT": 2, -} - -func (x Instance_Type) String() string { - return proto.EnumName(Instance_Type_name, int32(x)) -} -func (Instance_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} } - -// Possible states of a cluster. -type Cluster_State int32 - -const ( - // The state of the cluster could not be determined. - Cluster_STATE_NOT_KNOWN Cluster_State = 0 - // The cluster has been successfully created and is ready to serve requests. - Cluster_READY Cluster_State = 1 - // The cluster is currently being created, and may be destroyed - // if the creation process encounters an error. - // A cluster may not be able to serve requests while being created. - Cluster_CREATING Cluster_State = 2 - // The cluster is currently being resized, and may revert to its previous - // node count if the process encounters an error. - // A cluster is still capable of serving requests while being resized, - // but may exhibit performance as if its number of allocated nodes is - // between the starting and requested states. - Cluster_RESIZING Cluster_State = 3 - // The cluster has no backing nodes. The data (tables) still - // exist, but no operations can be performed on the cluster. - Cluster_DISABLED Cluster_State = 4 -) - -var Cluster_State_name = map[int32]string{ - 0: "STATE_NOT_KNOWN", - 1: "READY", - 2: "CREATING", - 3: "RESIZING", - 4: "DISABLED", -} -var Cluster_State_value = map[string]int32{ - "STATE_NOT_KNOWN": 0, - "READY": 1, - "CREATING": 2, - "RESIZING": 3, - "DISABLED": 4, -} - -func (x Cluster_State) String() string { - return proto.EnumName(Cluster_State_name, int32(x)) -} -func (Cluster_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{1, 0} } - -// A collection of Bigtable [Tables][google.bigtable.admin.v2.Table] and -// the resources that serve them. -// All tables in an instance are served from a single -// [Cluster][google.bigtable.admin.v2.Cluster]. -type Instance struct { - // (`OutputOnly`) - // The unique name of the instance. Values are of the form - // `projects/<project>/instances/[a-z][a-z0-9\\-]+[a-z0-9]`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The descriptive name for this instance as it appears in UIs. - // Can be changed at any time, but should be kept globally unique - // to avoid confusion. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // (`OutputOnly`) - // The current state of the instance. - State Instance_State `protobuf:"varint,3,opt,name=state,enum=google.bigtable.admin.v2.Instance_State" json:"state,omitempty"` - // The type of the instance. Defaults to `PRODUCTION`. - Type Instance_Type `protobuf:"varint,4,opt,name=type,enum=google.bigtable.admin.v2.Instance_Type" json:"type,omitempty"` - // Labels are a flexible and lightweight mechanism for organizing cloud - // resources into groups that reflect a customer's organizational needs and - // deployment strategies. They can be used to filter resources and aggregate - // metrics. - // - // * Label keys must be between 1 and 63 characters long and must conform to - // the regular expression: `[\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62}`. - // * Label values must be between 0 and 63 characters long and must conform to - // the regular expression: `[\p{Ll}\p{Lo}\p{N}_-]{0,63}`. - // * No more than 64 labels can be associated with a given resource. - // * Keys and values must both be under 128 bytes. - Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Instance) Reset() { *m = Instance{} } -func (m *Instance) String() string { return proto.CompactTextString(m) } -func (*Instance) ProtoMessage() {} -func (*Instance) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *Instance) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Instance) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Instance) GetState() Instance_State { - if m != nil { - return m.State - } - return Instance_STATE_NOT_KNOWN -} - -func (m *Instance) GetType() Instance_Type { - if m != nil { - return m.Type - } - return Instance_TYPE_UNSPECIFIED -} - -func (m *Instance) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// A resizable group of nodes in a particular cloud location, capable -// of serving all [Tables][google.bigtable.admin.v2.Table] in the parent -// [Instance][google.bigtable.admin.v2.Instance]. -type Cluster struct { - // (`OutputOnly`) - // The unique name of the cluster. Values are of the form - // `projects/<project>/instances/<instance>/clusters/[a-z][-a-z0-9]*`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // (`CreationOnly`) - // The location where this cluster's nodes and storage reside. For best - // performance, clients should be located as close as possible to this - // cluster. Currently only zones are supported, so values should be of the - // form `projects/<project>/locations/<zone>`. - Location string `protobuf:"bytes,2,opt,name=location" json:"location,omitempty"` - // (`OutputOnly`) - // The current state of the cluster. - State Cluster_State `protobuf:"varint,3,opt,name=state,enum=google.bigtable.admin.v2.Cluster_State" json:"state,omitempty"` - // The number of nodes allocated to this cluster. More nodes enable higher - // throughput and more consistent performance. - ServeNodes int32 `protobuf:"varint,4,opt,name=serve_nodes,json=serveNodes" json:"serve_nodes,omitempty"` - // (`CreationOnly`) - // The type of storage used by this cluster to serve its - // parent instance's tables, unless explicitly overridden. - DefaultStorageType StorageType `protobuf:"varint,5,opt,name=default_storage_type,json=defaultStorageType,enum=google.bigtable.admin.v2.StorageType" json:"default_storage_type,omitempty"` -} - -func (m *Cluster) Reset() { *m = Cluster{} } -func (m *Cluster) String() string { return proto.CompactTextString(m) } -func (*Cluster) ProtoMessage() {} -func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *Cluster) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Cluster) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -func (m *Cluster) GetState() Cluster_State { - if m != nil { - return m.State - } - return Cluster_STATE_NOT_KNOWN -} - -func (m *Cluster) GetServeNodes() int32 { - if m != nil { - return m.ServeNodes - } - return 0 -} - -func (m *Cluster) GetDefaultStorageType() StorageType { - if m != nil { - return m.DefaultStorageType - } - return StorageType_STORAGE_TYPE_UNSPECIFIED -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// A configuration object describing how Cloud Bigtable should treat traffic -// from a particular end user application. -type AppProfile struct { - // (`OutputOnly`) - // The unique name of the app profile. Values are of the form - // `projects/<project>/instances/<instance>/appProfiles/[_a-zA-Z0-9][-_.a-zA-Z0-9]*`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Strongly validated etag for optimistic concurrency control. Preserve the - // value returned from `GetAppProfile` when calling `UpdateAppProfile` to - // fail the request if there has been a modification in the mean time. The - // `update_mask` of the request need not include `etag` for this protection - // to apply. - // See [Wikipedia](https://en.wikipedia.org/wiki/HTTP_ETag) and - // [RFC 7232](https://tools.ietf.org/html/rfc7232#section-2.3) for more - // details. - Etag string `protobuf:"bytes,2,opt,name=etag" json:"etag,omitempty"` - // Optional long form description of the use case for this AppProfile. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // The routing policy for all read/write requests which use this app profile. - // A value must be explicitly set. - // - // Types that are valid to be assigned to RoutingPolicy: - // *AppProfile_MultiClusterRoutingUseAny_ - // *AppProfile_SingleClusterRouting_ - RoutingPolicy isAppProfile_RoutingPolicy `protobuf_oneof:"routing_policy"` -} - -func (m *AppProfile) Reset() { *m = AppProfile{} } -func (m *AppProfile) String() string { return proto.CompactTextString(m) } -func (*AppProfile) ProtoMessage() {} -func (*AppProfile) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } - -type isAppProfile_RoutingPolicy interface { - isAppProfile_RoutingPolicy() -} - -type AppProfile_MultiClusterRoutingUseAny_ struct { - MultiClusterRoutingUseAny *AppProfile_MultiClusterRoutingUseAny `protobuf:"bytes,5,opt,name=multi_cluster_routing_use_any,json=multiClusterRoutingUseAny,oneof"` -} -type AppProfile_SingleClusterRouting_ struct { - SingleClusterRouting *AppProfile_SingleClusterRouting `protobuf:"bytes,6,opt,name=single_cluster_routing,json=singleClusterRouting,oneof"` -} - -func (*AppProfile_MultiClusterRoutingUseAny_) isAppProfile_RoutingPolicy() {} -func (*AppProfile_SingleClusterRouting_) isAppProfile_RoutingPolicy() {} - -func (m *AppProfile) GetRoutingPolicy() isAppProfile_RoutingPolicy { - if m != nil { - return m.RoutingPolicy - } - return nil -} - -func (m *AppProfile) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *AppProfile) GetEtag() string { - if m != nil { - return m.Etag - } - return "" -} - -func (m *AppProfile) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *AppProfile) GetMultiClusterRoutingUseAny() *AppProfile_MultiClusterRoutingUseAny { - if x, ok := m.GetRoutingPolicy().(*AppProfile_MultiClusterRoutingUseAny_); ok { - return x.MultiClusterRoutingUseAny - } - return nil -} - -func (m *AppProfile) GetSingleClusterRouting() *AppProfile_SingleClusterRouting { - if x, ok := m.GetRoutingPolicy().(*AppProfile_SingleClusterRouting_); ok { - return x.SingleClusterRouting - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*AppProfile) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _AppProfile_OneofMarshaler, _AppProfile_OneofUnmarshaler, _AppProfile_OneofSizer, []interface{}{ - (*AppProfile_MultiClusterRoutingUseAny_)(nil), - (*AppProfile_SingleClusterRouting_)(nil), - } -} - -func _AppProfile_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*AppProfile) - // routing_policy - switch x := m.RoutingPolicy.(type) { - case *AppProfile_MultiClusterRoutingUseAny_: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.MultiClusterRoutingUseAny); err != nil { - return err - } - case *AppProfile_SingleClusterRouting_: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SingleClusterRouting); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("AppProfile.RoutingPolicy has unexpected type %T", x) - } - return nil -} - -func _AppProfile_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*AppProfile) - switch tag { - case 5: // routing_policy.multi_cluster_routing_use_any - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AppProfile_MultiClusterRoutingUseAny) - err := b.DecodeMessage(msg) - m.RoutingPolicy = &AppProfile_MultiClusterRoutingUseAny_{msg} - return true, err - case 6: // routing_policy.single_cluster_routing - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AppProfile_SingleClusterRouting) - err := b.DecodeMessage(msg) - m.RoutingPolicy = &AppProfile_SingleClusterRouting_{msg} - return true, err - default: - return false, nil - } -} - -func _AppProfile_OneofSizer(msg proto.Message) (n int) { - m := msg.(*AppProfile) - // routing_policy - switch x := m.RoutingPolicy.(type) { - case *AppProfile_MultiClusterRoutingUseAny_: - s := proto.Size(x.MultiClusterRoutingUseAny) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AppProfile_SingleClusterRouting_: - s := proto.Size(x.SingleClusterRouting) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Read/write requests may be routed to any cluster in the instance, and will -// fail over to another cluster in the event of transient errors or delays. -// Choosing this option sacrifices read-your-writes consistency to improve -// availability. -type AppProfile_MultiClusterRoutingUseAny struct { -} - -func (m *AppProfile_MultiClusterRoutingUseAny) Reset() { *m = AppProfile_MultiClusterRoutingUseAny{} } -func (m *AppProfile_MultiClusterRoutingUseAny) String() string { return proto.CompactTextString(m) } -func (*AppProfile_MultiClusterRoutingUseAny) ProtoMessage() {} -func (*AppProfile_MultiClusterRoutingUseAny) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{2, 0} -} - -// Unconditionally routes all read/write requests to a specific cluster. -// This option preserves read-your-writes consistency, but does not improve -// availability. -type AppProfile_SingleClusterRouting struct { - // The cluster to which read/write requests should be routed. - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // Whether or not `CheckAndMutateRow` and `ReadModifyWriteRow` requests are - // allowed by this app profile. It is unsafe to send these requests to - // the same table/row/column in multiple clusters. - AllowTransactionalWrites bool `protobuf:"varint,2,opt,name=allow_transactional_writes,json=allowTransactionalWrites" json:"allow_transactional_writes,omitempty"` -} - -func (m *AppProfile_SingleClusterRouting) Reset() { *m = AppProfile_SingleClusterRouting{} } -func (m *AppProfile_SingleClusterRouting) String() string { return proto.CompactTextString(m) } -func (*AppProfile_SingleClusterRouting) ProtoMessage() {} -func (*AppProfile_SingleClusterRouting) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{2, 1} -} - -func (m *AppProfile_SingleClusterRouting) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *AppProfile_SingleClusterRouting) GetAllowTransactionalWrites() bool { - if m != nil { - return m.AllowTransactionalWrites - } - return false -} - -func init() { - proto.RegisterType((*Instance)(nil), "google.bigtable.admin.v2.Instance") - proto.RegisterType((*Cluster)(nil), "google.bigtable.admin.v2.Cluster") - proto.RegisterType((*AppProfile)(nil), "google.bigtable.admin.v2.AppProfile") - proto.RegisterType((*AppProfile_MultiClusterRoutingUseAny)(nil), "google.bigtable.admin.v2.AppProfile.MultiClusterRoutingUseAny") - proto.RegisterType((*AppProfile_SingleClusterRouting)(nil), "google.bigtable.admin.v2.AppProfile.SingleClusterRouting") - proto.RegisterEnum("google.bigtable.admin.v2.Instance_State", Instance_State_name, Instance_State_value) - proto.RegisterEnum("google.bigtable.admin.v2.Instance_Type", Instance_Type_name, Instance_Type_value) - proto.RegisterEnum("google.bigtable.admin.v2.Cluster_State", Cluster_State_name, Cluster_State_value) -} - -func init() { proto.RegisterFile("google/bigtable/admin/v2/instance.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 765 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xdd, 0x8e, 0xdb, 0x44, - 0x14, 0x8e, 0xf3, 0xb3, 0x64, 0x4f, 0xca, 0xd6, 0x1a, 0x22, 0x94, 0x86, 0x16, 0x42, 0xa4, 0xaa, - 0xb9, 0x72, 0xa4, 0x20, 0x24, 0x4a, 0xd9, 0x4a, 0xf9, 0x71, 0x5b, 0x8b, 0xad, 0x13, 0x1c, 0xef, - 0xae, 0xba, 0x8a, 0x64, 0x4d, 0xec, 0x59, 0xcb, 0x62, 0x32, 0x63, 0x3c, 0x93, 0xac, 0x7c, 0xcb, - 0xe3, 0x70, 0xc5, 0x1d, 0x4f, 0xc0, 0x0d, 0x8f, 0xc3, 0x13, 0x20, 0x8f, 0x6d, 0x76, 0x17, 0x12, - 0xb4, 0xe2, 0x6e, 0xce, 0x39, 0xdf, 0x77, 0xbe, 0x33, 0xdf, 0xb1, 0x07, 0x5e, 0x84, 0x9c, 0x87, - 0x94, 0x0c, 0xd7, 0x51, 0x28, 0xf1, 0x9a, 0x92, 0x21, 0x0e, 0x36, 0x11, 0x1b, 0xee, 0x46, 0xc3, - 0x88, 0x09, 0x89, 0x99, 0x4f, 0x8c, 0x38, 0xe1, 0x92, 0xa3, 0x4e, 0x0e, 0x34, 0x4a, 0xa0, 0xa1, - 0x80, 0xc6, 0x6e, 0xd4, 0x7d, 0x5a, 0xb4, 0xc0, 0x71, 0x34, 0xc4, 0x8c, 0x71, 0x89, 0x65, 0xc4, - 0x99, 0xc8, 0x79, 0xdd, 0xe7, 0x07, 0x05, 0x7c, 0xbe, 0xd9, 0x70, 0x96, 0xc3, 0xfa, 0xbf, 0xd5, - 0xa0, 0x69, 0x15, 0x8a, 0x08, 0x41, 0x9d, 0xe1, 0x0d, 0xe9, 0x68, 0x3d, 0x6d, 0x70, 0xec, 0xa8, - 0x33, 0xfa, 0x12, 0x1e, 0x05, 0x91, 0x88, 0x29, 0x4e, 0x3d, 0x55, 0xab, 0xaa, 0x5a, 0xab, 0xc8, - 0xd9, 0x19, 0xe4, 0x35, 0x34, 0x84, 0xc4, 0x92, 0x74, 0x6a, 0x3d, 0x6d, 0x70, 0x32, 0x1a, 0x18, - 0x87, 0x46, 0x36, 0x4a, 0x25, 0x63, 0x99, 0xe1, 0x9d, 0x9c, 0x86, 0x5e, 0x41, 0x5d, 0xa6, 0x31, - 0xe9, 0xd4, 0x15, 0xfd, 0xc5, 0x03, 0xe8, 0x6e, 0x1a, 0x13, 0x47, 0x91, 0xd0, 0x1b, 0x38, 0xa2, - 0x78, 0x4d, 0xa8, 0xe8, 0x34, 0x7a, 0xb5, 0x41, 0x6b, 0x64, 0x3c, 0x80, 0x7e, 0xa6, 0x08, 0x26, - 0x93, 0x49, 0xea, 0x14, 0xec, 0xee, 0x4b, 0x68, 0xdd, 0x49, 0x23, 0x1d, 0x6a, 0x3f, 0x92, 0xb4, - 0x70, 0x22, 0x3b, 0xa2, 0x36, 0x34, 0x76, 0x98, 0x6e, 0x4b, 0x07, 0xf2, 0xe0, 0xdb, 0xea, 0x37, - 0x5a, 0xff, 0x6b, 0x68, 0xa8, 0xfb, 0xa0, 0x4f, 0xe0, 0xf1, 0xd2, 0x1d, 0xbb, 0xa6, 0x67, 0xcf, - 0x5d, 0xef, 0x7b, 0x7b, 0x7e, 0x69, 0xeb, 0x15, 0x74, 0x0c, 0x0d, 0xc7, 0x1c, 0xcf, 0x3e, 0xe8, - 0x1a, 0x7a, 0x04, 0xcd, 0xa9, 0x63, 0x8e, 0x5d, 0xcb, 0x7e, 0xab, 0x57, 0xfb, 0xa7, 0x50, 0xcf, - 0xee, 0x81, 0xda, 0xa0, 0xbb, 0x1f, 0x16, 0xa6, 0x77, 0x6e, 0x2f, 0x17, 0xe6, 0xd4, 0x7a, 0x63, - 0x99, 0x33, 0xbd, 0x82, 0x4e, 0x00, 0x16, 0xce, 0x7c, 0x76, 0x3e, 0x75, 0xad, 0xb9, 0xad, 0x6b, - 0xe8, 0x31, 0xb4, 0x66, 0xe6, 0x85, 0x79, 0x36, 0x5f, 0xbc, 0x37, 0x6d, 0x57, 0xaf, 0xf6, 0x7f, - 0xaf, 0xc2, 0x47, 0x53, 0xba, 0x15, 0x92, 0x24, 0x7b, 0x17, 0xd7, 0x85, 0x26, 0xe5, 0xbe, 0xfa, - 0x26, 0x8a, 0x91, 0xff, 0x8e, 0xd1, 0xe9, 0xfd, 0x8d, 0xfd, 0x87, 0xe5, 0x85, 0xc2, 0xfd, 0x85, - 0x7d, 0x01, 0x2d, 0x41, 0x92, 0x1d, 0xf1, 0x18, 0x0f, 0x88, 0x50, 0x7b, 0x6b, 0x38, 0xa0, 0x52, - 0x76, 0x96, 0x41, 0x97, 0xd0, 0x0e, 0xc8, 0x35, 0xde, 0x52, 0xe9, 0x09, 0xc9, 0x13, 0x1c, 0x12, - 0x4f, 0x6d, 0xb8, 0xa1, 0xe4, 0x9e, 0x1f, 0x96, 0x5b, 0xe6, 0x68, 0xb5, 0x5f, 0x54, 0xb4, 0xb8, - 0x93, 0xeb, 0xff, 0xf0, 0xbf, 0xac, 0xce, 0x22, 0xc7, 0x5c, 0x5a, 0x57, 0x59, 0x54, 0xcb, 0xa2, - 0x99, 0xb5, 0x1c, 0x4f, 0xce, 0xcc, 0x99, 0x5e, 0xef, 0xff, 0x59, 0x03, 0x18, 0xc7, 0xf1, 0x22, - 0xe1, 0xd7, 0x11, 0xdd, 0xff, 0x0f, 0x20, 0xa8, 0x13, 0x89, 0xc3, 0xc2, 0x46, 0x75, 0x46, 0x3d, - 0x68, 0x05, 0x44, 0xf8, 0x49, 0x14, 0x2b, 0x87, 0x6b, 0xc5, 0x6f, 0x71, 0x9b, 0x42, 0x3f, 0x6b, - 0xf0, 0x6c, 0xb3, 0xa5, 0x32, 0xf2, 0xfc, 0xdc, 0x44, 0x2f, 0xe1, 0x5b, 0x19, 0xb1, 0xd0, 0xdb, - 0x0a, 0xe2, 0x61, 0x96, 0x2a, 0x3b, 0x5a, 0xa3, 0xd7, 0x87, 0xed, 0xb8, 0x9d, 0xcb, 0x78, 0x9f, - 0x75, 0x2a, 0xb6, 0xe1, 0xe4, 0x7d, 0xce, 0x05, 0x19, 0xb3, 0xf4, 0x5d, 0xc5, 0x79, 0xb2, 0x39, - 0x54, 0x44, 0x3f, 0xc1, 0xa7, 0x22, 0x62, 0x21, 0x25, 0xff, 0x1c, 0xa2, 0x73, 0xa4, 0xc4, 0x5f, - 0x3e, 0x48, 0x7c, 0xa9, 0x5a, 0xdc, 0x17, 0x78, 0x57, 0x71, 0xda, 0x62, 0x4f, 0xbe, 0xfb, 0x19, - 0x3c, 0x39, 0x38, 0x6c, 0x57, 0x40, 0x7b, 0x5f, 0x33, 0xf4, 0x0c, 0xa0, 0x1c, 0x30, 0x0a, 0x0a, - 0xf3, 0x8f, 0x8b, 0x8c, 0x15, 0xa0, 0xef, 0xa0, 0x8b, 0x29, 0xe5, 0x37, 0x9e, 0x4c, 0x30, 0x13, - 0xd8, 0xcf, 0x0c, 0xc6, 0xd4, 0xbb, 0x49, 0x22, 0x49, 0x84, 0xda, 0x4b, 0xd3, 0xe9, 0x28, 0x84, - 0x7b, 0x17, 0x70, 0xa9, 0xea, 0x13, 0x1d, 0x4e, 0x4a, 0xeb, 0x63, 0x4e, 0x23, 0x3f, 0x9d, 0xfc, - 0xaa, 0xc1, 0x53, 0x9f, 0x6f, 0x0e, 0x5e, 0x7e, 0xf2, 0x71, 0xf9, 0x58, 0x2c, 0xb2, 0x67, 0x72, - 0xa1, 0x5d, 0x9d, 0x16, 0xd0, 0x90, 0x53, 0xcc, 0x42, 0x83, 0x27, 0xe1, 0x30, 0x24, 0x4c, 0x3d, - 0xa2, 0xc3, 0xbc, 0x84, 0xe3, 0x48, 0xfc, 0xfb, 0xb9, 0x7d, 0xa5, 0x0e, 0xbf, 0x54, 0x3f, 0x7f, - 0x9b, 0xf3, 0xa7, 0x94, 0x6f, 0x03, 0x63, 0x52, 0x0a, 0x8e, 0x95, 0xe0, 0xc5, 0xe8, 0x8f, 0x12, - 0xb0, 0x52, 0x80, 0x55, 0x09, 0x58, 0x29, 0xc0, 0xea, 0x62, 0xb4, 0x3e, 0x52, 0x5a, 0x5f, 0xfd, - 0x15, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x04, 0x3d, 0xfc, 0x3a, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/table.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/table.pb.go deleted file mode 100644 index 6ccb15d1..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/admin/v2/table.pb.go +++ /dev/null @@ -1,666 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/admin/v2/table.proto - -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf5 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Possible timestamp granularities to use when keeping multiple versions -// of data in a table. -type Table_TimestampGranularity int32 - -const ( - // The user did not specify a granularity. Should not be returned. - // When specified during table creation, MILLIS will be used. - Table_TIMESTAMP_GRANULARITY_UNSPECIFIED Table_TimestampGranularity = 0 - // The table keeps data versioned at a granularity of 1ms. - Table_MILLIS Table_TimestampGranularity = 1 -) - -var Table_TimestampGranularity_name = map[int32]string{ - 0: "TIMESTAMP_GRANULARITY_UNSPECIFIED", - 1: "MILLIS", -} -var Table_TimestampGranularity_value = map[string]int32{ - "TIMESTAMP_GRANULARITY_UNSPECIFIED": 0, - "MILLIS": 1, -} - -func (x Table_TimestampGranularity) String() string { - return proto.EnumName(Table_TimestampGranularity_name, int32(x)) -} -func (Table_TimestampGranularity) EnumDescriptor() ([]byte, []int) { - return fileDescriptor4, []int{0, 0} -} - -// Defines a view over a table's fields. -type Table_View int32 - -const ( - // Uses the default view for each method as documented in its request. - Table_VIEW_UNSPECIFIED Table_View = 0 - // Only populates `name`. - Table_NAME_ONLY Table_View = 1 - // Only populates `name` and fields related to the table's schema. - Table_SCHEMA_VIEW Table_View = 2 - // This is a private alpha release of Cloud Bigtable replication. This - // feature is not currently available to most Cloud Bigtable customers. This - // feature might be changed in backward-incompatible ways and is not - // recommended for production use. It is not subject to any SLA or - // deprecation policy. - // - // Only populates `name` and fields related to the table's - // replication state. - Table_REPLICATION_VIEW Table_View = 3 - // Populates all fields. - Table_FULL Table_View = 4 -) - -var Table_View_name = map[int32]string{ - 0: "VIEW_UNSPECIFIED", - 1: "NAME_ONLY", - 2: "SCHEMA_VIEW", - 3: "REPLICATION_VIEW", - 4: "FULL", -} -var Table_View_value = map[string]int32{ - "VIEW_UNSPECIFIED": 0, - "NAME_ONLY": 1, - "SCHEMA_VIEW": 2, - "REPLICATION_VIEW": 3, - "FULL": 4, -} - -func (x Table_View) String() string { - return proto.EnumName(Table_View_name, int32(x)) -} -func (Table_View) EnumDescriptor() ([]byte, []int) { return fileDescriptor4, []int{0, 1} } - -// Table replication states. -type Table_ClusterState_ReplicationState int32 - -const ( - // The replication state of the table is unknown in this cluster. - Table_ClusterState_STATE_NOT_KNOWN Table_ClusterState_ReplicationState = 0 - // The cluster was recently created, and the table must finish copying - // over pre-existing data from other clusters before it can begin - // receiving live replication updates and serving - // [Data API][google.bigtable.v2.Bigtable] requests. - Table_ClusterState_INITIALIZING Table_ClusterState_ReplicationState = 1 - // The table is temporarily unable to serve - // [Data API][google.bigtable.v2.Bigtable] requests from this - // cluster due to planned internal maintenance. - Table_ClusterState_PLANNED_MAINTENANCE Table_ClusterState_ReplicationState = 2 - // The table is temporarily unable to serve - // [Data API][google.bigtable.v2.Bigtable] requests from this - // cluster due to unplanned or emergency maintenance. - Table_ClusterState_UNPLANNED_MAINTENANCE Table_ClusterState_ReplicationState = 3 - // The table can serve - // [Data API][google.bigtable.v2.Bigtable] requests from this - // cluster. Depending on replication delay, reads may not immediately - // reflect the state of the table in other clusters. - Table_ClusterState_READY Table_ClusterState_ReplicationState = 4 -) - -var Table_ClusterState_ReplicationState_name = map[int32]string{ - 0: "STATE_NOT_KNOWN", - 1: "INITIALIZING", - 2: "PLANNED_MAINTENANCE", - 3: "UNPLANNED_MAINTENANCE", - 4: "READY", -} -var Table_ClusterState_ReplicationState_value = map[string]int32{ - "STATE_NOT_KNOWN": 0, - "INITIALIZING": 1, - "PLANNED_MAINTENANCE": 2, - "UNPLANNED_MAINTENANCE": 3, - "READY": 4, -} - -func (x Table_ClusterState_ReplicationState) String() string { - return proto.EnumName(Table_ClusterState_ReplicationState_name, int32(x)) -} -func (Table_ClusterState_ReplicationState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor4, []int{0, 0, 0} -} - -// Possible states of a snapshot. -type Snapshot_State int32 - -const ( - // The state of the snapshot could not be determined. - Snapshot_STATE_NOT_KNOWN Snapshot_State = 0 - // The snapshot has been successfully created and can serve all requests. - Snapshot_READY Snapshot_State = 1 - // The snapshot is currently being created, and may be destroyed if the - // creation process encounters an error. A snapshot may not be restored to a - // table while it is being created. - Snapshot_CREATING Snapshot_State = 2 -) - -var Snapshot_State_name = map[int32]string{ - 0: "STATE_NOT_KNOWN", - 1: "READY", - 2: "CREATING", -} -var Snapshot_State_value = map[string]int32{ - "STATE_NOT_KNOWN": 0, - "READY": 1, - "CREATING": 2, -} - -func (x Snapshot_State) String() string { - return proto.EnumName(Snapshot_State_name, int32(x)) -} -func (Snapshot_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor4, []int{3, 0} } - -// A collection of user data indexed by row, column, and timestamp. -// Each table is served using the resources of its parent cluster. -type Table struct { - // (`OutputOnly`) - // The unique name of the table. Values are of the form - // `projects/<project>/instances/<instance>/tables/[_a-zA-Z0-9][-_.a-zA-Z0-9]*`. - // Views: `NAME_ONLY`, `SCHEMA_VIEW`, `FULL` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // (`OutputOnly`) - // Map from cluster ID to per-cluster table state. - // If it could not be determined whether or not the table has data in a - // particular cluster (for example, if its zone is unavailable), then - // there will be an entry for the cluster with UNKNOWN `replication_status`. - // Views: `FULL` - ClusterStates map[string]*Table_ClusterState `protobuf:"bytes,2,rep,name=cluster_states,json=clusterStates" json:"cluster_states,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // (`CreationOnly`) - // The column families configured for this table, mapped by column family ID. - // Views: `SCHEMA_VIEW`, `FULL` - ColumnFamilies map[string]*ColumnFamily `protobuf:"bytes,3,rep,name=column_families,json=columnFamilies" json:"column_families,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // (`CreationOnly`) - // The granularity (e.g. `MILLIS`, `MICROS`) at which timestamps are stored in - // this table. Timestamps not matching the granularity will be rejected. - // If unspecified at creation time, the value will be set to `MILLIS`. - // Views: `SCHEMA_VIEW`, `FULL` - Granularity Table_TimestampGranularity `protobuf:"varint,4,opt,name=granularity,enum=google.bigtable.admin.v2.Table_TimestampGranularity" json:"granularity,omitempty"` -} - -func (m *Table) Reset() { *m = Table{} } -func (m *Table) String() string { return proto.CompactTextString(m) } -func (*Table) ProtoMessage() {} -func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *Table) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Table) GetClusterStates() map[string]*Table_ClusterState { - if m != nil { - return m.ClusterStates - } - return nil -} - -func (m *Table) GetColumnFamilies() map[string]*ColumnFamily { - if m != nil { - return m.ColumnFamilies - } - return nil -} - -func (m *Table) GetGranularity() Table_TimestampGranularity { - if m != nil { - return m.Granularity - } - return Table_TIMESTAMP_GRANULARITY_UNSPECIFIED -} - -// This is a private alpha release of Cloud Bigtable replication. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// The state of a table's data in a particular cluster. -type Table_ClusterState struct { - // (`OutputOnly`) - // The state of replication for the table in this cluster. - ReplicationState Table_ClusterState_ReplicationState `protobuf:"varint,1,opt,name=replication_state,json=replicationState,enum=google.bigtable.admin.v2.Table_ClusterState_ReplicationState" json:"replication_state,omitempty"` -} - -func (m *Table_ClusterState) Reset() { *m = Table_ClusterState{} } -func (m *Table_ClusterState) String() string { return proto.CompactTextString(m) } -func (*Table_ClusterState) ProtoMessage() {} -func (*Table_ClusterState) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0, 0} } - -func (m *Table_ClusterState) GetReplicationState() Table_ClusterState_ReplicationState { - if m != nil { - return m.ReplicationState - } - return Table_ClusterState_STATE_NOT_KNOWN -} - -// A set of columns within a table which share a common configuration. -type ColumnFamily struct { - // Garbage collection rule specified as a protobuf. - // Must serialize to at most 500 bytes. - // - // NOTE: Garbage collection executes opportunistically in the background, and - // so it's possible for reads to return a cell even if it matches the active - // GC expression for its family. - GcRule *GcRule `protobuf:"bytes,1,opt,name=gc_rule,json=gcRule" json:"gc_rule,omitempty"` -} - -func (m *ColumnFamily) Reset() { *m = ColumnFamily{} } -func (m *ColumnFamily) String() string { return proto.CompactTextString(m) } -func (*ColumnFamily) ProtoMessage() {} -func (*ColumnFamily) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *ColumnFamily) GetGcRule() *GcRule { - if m != nil { - return m.GcRule - } - return nil -} - -// Rule for determining which cells to delete during garbage collection. -type GcRule struct { - // Garbage collection rules. - // - // Types that are valid to be assigned to Rule: - // *GcRule_MaxNumVersions - // *GcRule_MaxAge - // *GcRule_Intersection_ - // *GcRule_Union_ - Rule isGcRule_Rule `protobuf_oneof:"rule"` -} - -func (m *GcRule) Reset() { *m = GcRule{} } -func (m *GcRule) String() string { return proto.CompactTextString(m) } -func (*GcRule) ProtoMessage() {} -func (*GcRule) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} } - -type isGcRule_Rule interface { - isGcRule_Rule() -} - -type GcRule_MaxNumVersions struct { - MaxNumVersions int32 `protobuf:"varint,1,opt,name=max_num_versions,json=maxNumVersions,oneof"` -} -type GcRule_MaxAge struct { - MaxAge *google_protobuf5.Duration `protobuf:"bytes,2,opt,name=max_age,json=maxAge,oneof"` -} -type GcRule_Intersection_ struct { - Intersection *GcRule_Intersection `protobuf:"bytes,3,opt,name=intersection,oneof"` -} -type GcRule_Union_ struct { - Union *GcRule_Union `protobuf:"bytes,4,opt,name=union,oneof"` -} - -func (*GcRule_MaxNumVersions) isGcRule_Rule() {} -func (*GcRule_MaxAge) isGcRule_Rule() {} -func (*GcRule_Intersection_) isGcRule_Rule() {} -func (*GcRule_Union_) isGcRule_Rule() {} - -func (m *GcRule) GetRule() isGcRule_Rule { - if m != nil { - return m.Rule - } - return nil -} - -func (m *GcRule) GetMaxNumVersions() int32 { - if x, ok := m.GetRule().(*GcRule_MaxNumVersions); ok { - return x.MaxNumVersions - } - return 0 -} - -func (m *GcRule) GetMaxAge() *google_protobuf5.Duration { - if x, ok := m.GetRule().(*GcRule_MaxAge); ok { - return x.MaxAge - } - return nil -} - -func (m *GcRule) GetIntersection() *GcRule_Intersection { - if x, ok := m.GetRule().(*GcRule_Intersection_); ok { - return x.Intersection - } - return nil -} - -func (m *GcRule) GetUnion() *GcRule_Union { - if x, ok := m.GetRule().(*GcRule_Union_); ok { - return x.Union - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*GcRule) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _GcRule_OneofMarshaler, _GcRule_OneofUnmarshaler, _GcRule_OneofSizer, []interface{}{ - (*GcRule_MaxNumVersions)(nil), - (*GcRule_MaxAge)(nil), - (*GcRule_Intersection_)(nil), - (*GcRule_Union_)(nil), - } -} - -func _GcRule_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*GcRule) - // rule - switch x := m.Rule.(type) { - case *GcRule_MaxNumVersions: - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.MaxNumVersions)) - case *GcRule_MaxAge: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.MaxAge); err != nil { - return err - } - case *GcRule_Intersection_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Intersection); err != nil { - return err - } - case *GcRule_Union_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Union); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("GcRule.Rule has unexpected type %T", x) - } - return nil -} - -func _GcRule_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*GcRule) - switch tag { - case 1: // rule.max_num_versions - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Rule = &GcRule_MaxNumVersions{int32(x)} - return true, err - case 2: // rule.max_age - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf5.Duration) - err := b.DecodeMessage(msg) - m.Rule = &GcRule_MaxAge{msg} - return true, err - case 3: // rule.intersection - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GcRule_Intersection) - err := b.DecodeMessage(msg) - m.Rule = &GcRule_Intersection_{msg} - return true, err - case 4: // rule.union - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GcRule_Union) - err := b.DecodeMessage(msg) - m.Rule = &GcRule_Union_{msg} - return true, err - default: - return false, nil - } -} - -func _GcRule_OneofSizer(msg proto.Message) (n int) { - m := msg.(*GcRule) - // rule - switch x := m.Rule.(type) { - case *GcRule_MaxNumVersions: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.MaxNumVersions)) - case *GcRule_MaxAge: - s := proto.Size(x.MaxAge) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *GcRule_Intersection_: - s := proto.Size(x.Intersection) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *GcRule_Union_: - s := proto.Size(x.Union) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A GcRule which deletes cells matching all of the given rules. -type GcRule_Intersection struct { - // Only delete cells which would be deleted by every element of `rules`. - Rules []*GcRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` -} - -func (m *GcRule_Intersection) Reset() { *m = GcRule_Intersection{} } -func (m *GcRule_Intersection) String() string { return proto.CompactTextString(m) } -func (*GcRule_Intersection) ProtoMessage() {} -func (*GcRule_Intersection) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2, 0} } - -func (m *GcRule_Intersection) GetRules() []*GcRule { - if m != nil { - return m.Rules - } - return nil -} - -// A GcRule which deletes cells matching any of the given rules. -type GcRule_Union struct { - // Delete cells which would be deleted by any element of `rules`. - Rules []*GcRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` -} - -func (m *GcRule_Union) Reset() { *m = GcRule_Union{} } -func (m *GcRule_Union) String() string { return proto.CompactTextString(m) } -func (*GcRule_Union) ProtoMessage() {} -func (*GcRule_Union) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2, 1} } - -func (m *GcRule_Union) GetRules() []*GcRule { - if m != nil { - return m.Rules - } - return nil -} - -// This is a private alpha release of Cloud Bigtable snapshots. This feature -// is not currently available to most Cloud Bigtable customers. This feature -// might be changed in backward-incompatible ways and is not recommended for -// production use. It is not subject to any SLA or deprecation policy. -// -// A snapshot of a table at a particular time. A snapshot can be used as a -// checkpoint for data restoration or a data source for a new table. -type Snapshot struct { - // (`OutputOnly`) - // The unique name of the snapshot. - // Values are of the form - // `projects/<project>/instances/<instance>/clusters/<cluster>/snapshots/<snapshot>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // (`OutputOnly`) - // The source table at the time the snapshot was taken. - SourceTable *Table `protobuf:"bytes,2,opt,name=source_table,json=sourceTable" json:"source_table,omitempty"` - // (`OutputOnly`) - // The size of the data in the source table at the time the snapshot was - // taken. In some cases, this value may be computed asynchronously via a - // background process and a placeholder of 0 will be used in the meantime. - DataSizeBytes int64 `protobuf:"varint,3,opt,name=data_size_bytes,json=dataSizeBytes" json:"data_size_bytes,omitempty"` - // (`OutputOnly`) - // The time when the snapshot is created. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // (`OutputOnly`) - // The time when the snapshot will be deleted. The maximum amount of time a - // snapshot can stay active is 365 days. If 'ttl' is not specified, - // the default maximum of 365 days will be used. - DeleteTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=delete_time,json=deleteTime" json:"delete_time,omitempty"` - // (`OutputOnly`) - // The current state of the snapshot. - State Snapshot_State `protobuf:"varint,6,opt,name=state,enum=google.bigtable.admin.v2.Snapshot_State" json:"state,omitempty"` - // (`OutputOnly`) - // Description of the snapshot. - Description string `protobuf:"bytes,7,opt,name=description" json:"description,omitempty"` -} - -func (m *Snapshot) Reset() { *m = Snapshot{} } -func (m *Snapshot) String() string { return proto.CompactTextString(m) } -func (*Snapshot) ProtoMessage() {} -func (*Snapshot) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} } - -func (m *Snapshot) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Snapshot) GetSourceTable() *Table { - if m != nil { - return m.SourceTable - } - return nil -} - -func (m *Snapshot) GetDataSizeBytes() int64 { - if m != nil { - return m.DataSizeBytes - } - return 0 -} - -func (m *Snapshot) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Snapshot) GetDeleteTime() *google_protobuf1.Timestamp { - if m != nil { - return m.DeleteTime - } - return nil -} - -func (m *Snapshot) GetState() Snapshot_State { - if m != nil { - return m.State - } - return Snapshot_STATE_NOT_KNOWN -} - -func (m *Snapshot) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func init() { - proto.RegisterType((*Table)(nil), "google.bigtable.admin.v2.Table") - proto.RegisterType((*Table_ClusterState)(nil), "google.bigtable.admin.v2.Table.ClusterState") - proto.RegisterType((*ColumnFamily)(nil), "google.bigtable.admin.v2.ColumnFamily") - proto.RegisterType((*GcRule)(nil), "google.bigtable.admin.v2.GcRule") - proto.RegisterType((*GcRule_Intersection)(nil), "google.bigtable.admin.v2.GcRule.Intersection") - proto.RegisterType((*GcRule_Union)(nil), "google.bigtable.admin.v2.GcRule.Union") - proto.RegisterType((*Snapshot)(nil), "google.bigtable.admin.v2.Snapshot") - proto.RegisterEnum("google.bigtable.admin.v2.Table_TimestampGranularity", Table_TimestampGranularity_name, Table_TimestampGranularity_value) - proto.RegisterEnum("google.bigtable.admin.v2.Table_View", Table_View_name, Table_View_value) - proto.RegisterEnum("google.bigtable.admin.v2.Table_ClusterState_ReplicationState", Table_ClusterState_ReplicationState_name, Table_ClusterState_ReplicationState_value) - proto.RegisterEnum("google.bigtable.admin.v2.Snapshot_State", Snapshot_State_name, Snapshot_State_value) -} - -func init() { proto.RegisterFile("google/bigtable/admin/v2/table.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 965 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xff, 0x6e, 0xdb, 0x54, - 0x18, 0xad, 0xe3, 0x38, 0x6d, 0xbf, 0xa4, 0xad, 0xb9, 0x1d, 0x22, 0x8b, 0xa6, 0x2d, 0x44, 0x30, - 0x45, 0x08, 0x1c, 0xc9, 0x1b, 0x08, 0x18, 0x1b, 0x72, 0x52, 0xb7, 0xb5, 0x48, 0xdc, 0xc8, 0x71, - 0x32, 0x75, 0x8a, 0x64, 0xdd, 0x38, 0x77, 0xc6, 0xe0, 0x1f, 0x91, 0x7f, 0x94, 0x66, 0x4f, 0xc1, - 0x0b, 0xf0, 0x37, 0x12, 0x12, 0x2f, 0xc2, 0xf3, 0xf0, 0x00, 0xc8, 0xf7, 0xda, 0x5b, 0xda, 0x26, - 0x84, 0xf1, 0x57, 0xaf, 0xbf, 0x7b, 0xce, 0xf9, 0xfc, 0x9d, 0x7b, 0x7d, 0x1a, 0xf8, 0xc4, 0x09, - 0x43, 0xc7, 0x23, 0x9d, 0x99, 0xeb, 0x24, 0x78, 0xe6, 0x91, 0x0e, 0x9e, 0xfb, 0x6e, 0xd0, 0xb9, - 0x92, 0x3b, 0xf4, 0x51, 0x5a, 0x44, 0x61, 0x12, 0xa2, 0x3a, 0x43, 0x49, 0x05, 0x4a, 0xa2, 0x28, - 0xe9, 0x4a, 0x6e, 0x3c, 0xc8, 0xf9, 0x78, 0xe1, 0x76, 0x70, 0x10, 0x84, 0x09, 0x4e, 0xdc, 0x30, - 0x88, 0x19, 0xaf, 0xf1, 0x30, 0xdf, 0xa5, 0x4f, 0xb3, 0xf4, 0x75, 0x67, 0x9e, 0x46, 0x14, 0x90, - 0xef, 0x3f, 0xba, 0xbd, 0x9f, 0xb8, 0x3e, 0x89, 0x13, 0xec, 0x2f, 0x18, 0xa0, 0xf5, 0xfb, 0x2e, - 0x08, 0x66, 0xd6, 0x11, 0x21, 0x28, 0x07, 0xd8, 0x27, 0x75, 0xae, 0xc9, 0xb5, 0xf7, 0x0d, 0xba, - 0x46, 0x97, 0x70, 0x68, 0x7b, 0x69, 0x9c, 0x90, 0xc8, 0x8a, 0x13, 0x9c, 0x90, 0xb8, 0x5e, 0x6a, - 0xf2, 0xed, 0xaa, 0x2c, 0x4b, 0x9b, 0xde, 0x57, 0xa2, 0x62, 0x52, 0x8f, 0xb1, 0x46, 0x94, 0xa4, - 0x06, 0x49, 0xb4, 0x34, 0x0e, 0xec, 0xd5, 0x1a, 0x9a, 0xc2, 0x91, 0x1d, 0x7a, 0xa9, 0x1f, 0x58, - 0xaf, 0xb1, 0xef, 0x7a, 0x2e, 0x89, 0xeb, 0x3c, 0xd5, 0x7e, 0xb2, 0x55, 0x9b, 0xd2, 0x4e, 0x73, - 0x16, 0x13, 0x3f, 0xb4, 0x6f, 0x14, 0xd1, 0x04, 0xaa, 0x4e, 0x84, 0x83, 0xd4, 0xc3, 0x91, 0x9b, - 0x2c, 0xeb, 0xe5, 0x26, 0xd7, 0x3e, 0x94, 0x9f, 0x6e, 0x53, 0x36, 0x0b, 0x73, 0xce, 0xde, 0x71, - 0x8d, 0x55, 0xa1, 0xc6, 0xdf, 0x1c, 0xd4, 0x56, 0x67, 0x43, 0x3f, 0xc1, 0x07, 0x11, 0x59, 0x78, - 0xae, 0x4d, 0x5d, 0x67, 0x2e, 0x51, 0x0b, 0x0f, 0xe5, 0xe7, 0xef, 0x63, 0x92, 0x64, 0xbc, 0x53, - 0xa1, 0x05, 0x43, 0x8c, 0x6e, 0x55, 0x5a, 0xd7, 0x20, 0xde, 0x46, 0xa1, 0x63, 0x38, 0x1a, 0x99, - 0x8a, 0xa9, 0x5a, 0xfa, 0x85, 0x69, 0xfd, 0xa0, 0x5f, 0xbc, 0xd4, 0xc5, 0x1d, 0x24, 0x42, 0x4d, - 0xd3, 0x35, 0x53, 0x53, 0xfa, 0xda, 0x2b, 0x4d, 0x3f, 0x13, 0x39, 0xf4, 0x11, 0x1c, 0x0f, 0xfb, - 0x8a, 0xae, 0xab, 0x27, 0xd6, 0x40, 0xd1, 0x74, 0x53, 0xd5, 0x15, 0xbd, 0xa7, 0x8a, 0x25, 0x74, - 0x1f, 0x3e, 0x1c, 0xeb, 0xeb, 0xb6, 0x78, 0xb4, 0x0f, 0x82, 0xa1, 0x2a, 0x27, 0x97, 0x62, 0xb9, - 0x11, 0x00, 0xba, 0x7b, 0xa2, 0x48, 0x04, 0xfe, 0x67, 0xb2, 0xcc, 0x2f, 0x4c, 0xb6, 0x44, 0x5d, - 0x10, 0xae, 0xb0, 0x97, 0x92, 0x7a, 0xa9, 0xc9, 0xb5, 0xab, 0xf2, 0xe7, 0xef, 0xe3, 0x80, 0xc1, - 0xa8, 0xdf, 0x96, 0xbe, 0xe6, 0x1a, 0x2e, 0x1c, 0xaf, 0x39, 0xe5, 0x35, 0x0d, 0xbf, 0xbb, 0xd9, - 0xf0, 0xf1, 0xe6, 0x86, 0x2b, 0x7a, 0xcb, 0x95, 0x56, 0x2d, 0x0d, 0xee, 0xad, 0x3b, 0x76, 0xf4, - 0x29, 0x7c, 0x6c, 0x6a, 0x03, 0x75, 0x64, 0x2a, 0x83, 0xa1, 0x75, 0x66, 0x28, 0xfa, 0xb8, 0xaf, - 0x18, 0x9a, 0x79, 0x69, 0x8d, 0xf5, 0xd1, 0x50, 0xed, 0x69, 0xa7, 0x9a, 0x7a, 0x22, 0xee, 0x20, - 0x80, 0xca, 0x40, 0xeb, 0xf7, 0xb5, 0x91, 0xc8, 0xb5, 0xa6, 0x50, 0x9e, 0xb8, 0xe4, 0x17, 0x74, - 0x0f, 0xc4, 0x89, 0xa6, 0xbe, 0xbc, 0x85, 0x3c, 0x80, 0x7d, 0x5d, 0x19, 0xa8, 0xd6, 0x85, 0xde, - 0xbf, 0x14, 0x39, 0x74, 0x04, 0xd5, 0x51, 0xef, 0x5c, 0x1d, 0x28, 0x56, 0x86, 0x15, 0x4b, 0x19, - 0xcb, 0x50, 0x87, 0x7d, 0xad, 0xa7, 0x98, 0xda, 0x85, 0xce, 0xaa, 0x3c, 0xda, 0x83, 0xf2, 0xe9, - 0xb8, 0xdf, 0x17, 0xcb, 0x2d, 0x0d, 0x6a, 0xab, 0x33, 0xa0, 0x6f, 0x60, 0xd7, 0xb1, 0xad, 0x28, - 0xf5, 0xd8, 0x7d, 0xab, 0xca, 0xcd, 0xcd, 0xc3, 0x9f, 0xd9, 0x46, 0xea, 0x11, 0xa3, 0xe2, 0xd0, - 0xbf, 0xad, 0x5f, 0x79, 0xa8, 0xb0, 0x12, 0xfa, 0x0c, 0x44, 0x1f, 0x5f, 0x5b, 0x41, 0xea, 0x5b, - 0x57, 0x24, 0x8a, 0xb3, 0x68, 0xa1, 0x72, 0xc2, 0xf9, 0x8e, 0x71, 0xe8, 0xe3, 0x6b, 0x3d, 0xf5, - 0x27, 0x79, 0x1d, 0x3d, 0x85, 0xdd, 0x0c, 0x8b, 0x9d, 0xc2, 0xee, 0xfb, 0x45, 0xc7, 0x22, 0x5e, - 0xa4, 0x93, 0x3c, 0x7e, 0xce, 0x77, 0x8c, 0x8a, 0x8f, 0xaf, 0x15, 0x87, 0xa0, 0x11, 0xd4, 0xdc, - 0x20, 0x21, 0x51, 0x4c, 0xec, 0x6c, 0xa7, 0xce, 0x53, 0xea, 0x17, 0xdb, 0x5e, 0x56, 0xd2, 0x56, - 0x48, 0xe7, 0x3b, 0xc6, 0x0d, 0x11, 0xf4, 0x02, 0x84, 0x34, 0xc8, 0xd4, 0xca, 0xdb, 0xce, 0x3d, - 0x57, 0x1b, 0x07, 0x4c, 0x86, 0xd1, 0x1a, 0xa7, 0x50, 0x5b, 0xd5, 0x47, 0x5f, 0x81, 0x90, 0x39, - 0x99, 0xcd, 0xce, 0xff, 0x27, 0x2b, 0x19, 0xbc, 0xf1, 0x3d, 0x08, 0x54, 0xf9, 0xff, 0x0a, 0x74, - 0x2b, 0x50, 0xce, 0x16, 0xad, 0xdf, 0x78, 0xd8, 0x1b, 0x05, 0x78, 0x11, 0xff, 0x18, 0x26, 0x6b, - 0xa3, 0xb8, 0x0b, 0xb5, 0x38, 0x4c, 0x23, 0x9b, 0x58, 0x54, 0x2f, 0x3f, 0x81, 0x47, 0x5b, 0xbe, - 0x30, 0xa3, 0xca, 0x48, 0x2c, 0xe2, 0x1f, 0xc3, 0xd1, 0x1c, 0x27, 0xd8, 0x8a, 0xdd, 0x37, 0xc4, - 0x9a, 0x2d, 0x13, 0x9a, 0xb9, 0x5c, 0x9b, 0x37, 0x0e, 0xb2, 0xf2, 0xc8, 0x7d, 0x43, 0xba, 0x59, - 0x11, 0x3d, 0x83, 0xaa, 0x1d, 0x11, 0x9c, 0x10, 0x2b, 0xfb, 0x77, 0x91, 0x7b, 0xdc, 0xb8, 0x73, - 0xd8, 0x6f, 0xbf, 0x1b, 0x03, 0x18, 0x3c, 0x2b, 0x64, 0xe4, 0x39, 0xf1, 0x48, 0x41, 0x16, 0xb6, - 0x93, 0x19, 0x9c, 0x92, 0x5f, 0x80, 0xc0, 0x22, 0xb4, 0x42, 0x23, 0xb4, 0xbd, 0x79, 0xbc, 0xc2, - 0x2c, 0x29, 0x0f, 0x0f, 0x4a, 0x43, 0xcd, 0xac, 0x79, 0x6c, 0x47, 0xee, 0x82, 0xde, 0xb5, 0x5d, - 0x6a, 0xe0, 0x6a, 0xa9, 0xf5, 0x25, 0x08, 0xff, 0x92, 0x9c, 0x6f, 0x33, 0x8f, 0x43, 0x35, 0xd8, - 0xeb, 0x19, 0xaa, 0x62, 0x66, 0x01, 0x5a, 0xea, 0xfe, 0xc9, 0xc1, 0x03, 0x3b, 0xf4, 0x37, 0xbe, - 0x4f, 0x17, 0xa8, 0xc5, 0xc3, 0x6c, 0xbc, 0x21, 0xf7, 0xea, 0x79, 0x8e, 0x73, 0x42, 0x0f, 0x07, - 0x8e, 0x14, 0x46, 0x4e, 0xc7, 0x21, 0x01, 0x1d, 0xbe, 0xc3, 0xb6, 0xf0, 0xc2, 0x8d, 0xef, 0xfe, - 0x28, 0x78, 0x46, 0x17, 0x7f, 0x94, 0x1e, 0x9e, 0x31, 0x7e, 0xcf, 0x0b, 0xd3, 0xb9, 0xd4, 0x2d, - 0xba, 0x29, 0xb4, 0xdb, 0x44, 0xfe, 0xab, 0x00, 0x4c, 0x29, 0x60, 0x5a, 0x00, 0xa6, 0x14, 0x30, - 0x9d, 0xc8, 0xb3, 0x0a, 0xed, 0xf5, 0xe4, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x56, 0x59, 0xa7, - 0xc1, 0x7f, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_data.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_data.pb.go deleted file mode 100644 index 51ece9f9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_data.pb.go +++ /dev/null @@ -1,1980 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/v1/bigtable_data.proto - -/* -Package bigtable is a generated protocol buffer package. - -It is generated from these files: - google/bigtable/v1/bigtable_data.proto - google/bigtable/v1/bigtable_service.proto - google/bigtable/v1/bigtable_service_messages.proto - -It has these top-level messages: - Row - Family - Column - Cell - RowRange - RowSet - ColumnRange - TimestampRange - ValueRange - RowFilter - Mutation - ReadModifyWriteRule - ReadRowsRequest - ReadRowsResponse - SampleRowKeysRequest - SampleRowKeysResponse - MutateRowRequest - MutateRowsRequest - MutateRowsResponse - CheckAndMutateRowRequest - CheckAndMutateRowResponse - ReadModifyWriteRowRequest -*/ -package bigtable - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Specifies the complete (requested) contents of a single row of a table. -// Rows which exceed 256MiB in size cannot be read in full. -type Row struct { - // The unique key which identifies this row within its table. This is the same - // key that's used to identify the row in, for example, a MutateRowRequest. - // May contain any non-empty byte string up to 4KiB in length. - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - // May be empty, but only if the entire row is empty. - // The mutual ordering of column families is not specified. - Families []*Family `protobuf:"bytes,2,rep,name=families" json:"families,omitempty"` -} - -func (m *Row) Reset() { *m = Row{} } -func (m *Row) String() string { return proto.CompactTextString(m) } -func (*Row) ProtoMessage() {} -func (*Row) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Row) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *Row) GetFamilies() []*Family { - if m != nil { - return m.Families - } - return nil -} - -// Specifies (some of) the contents of a single row/column family of a table. -type Family struct { - // The unique key which identifies this family within its row. This is the - // same key that's used to identify the family in, for example, a RowFilter - // which sets its "family_name_regex_filter" field. - // Must match [-_.a-zA-Z0-9]+, except that AggregatingRowProcessors may - // produce cells in a sentinel family with an empty name. - // Must be no greater than 64 characters in length. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Must not be empty. Sorted in order of increasing "qualifier". - Columns []*Column `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` -} - -func (m *Family) Reset() { *m = Family{} } -func (m *Family) String() string { return proto.CompactTextString(m) } -func (*Family) ProtoMessage() {} -func (*Family) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Family) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Family) GetColumns() []*Column { - if m != nil { - return m.Columns - } - return nil -} - -// Specifies (some of) the contents of a single row/column of a table. -type Column struct { - // The unique key which identifies this column within its family. This is the - // same key that's used to identify the column in, for example, a RowFilter - // which sets its "column_qualifier_regex_filter" field. - // May contain any byte string, including the empty string, up to 16kiB in - // length. - Qualifier []byte `protobuf:"bytes,1,opt,name=qualifier,proto3" json:"qualifier,omitempty"` - // Must not be empty. Sorted in order of decreasing "timestamp_micros". - Cells []*Cell `protobuf:"bytes,2,rep,name=cells" json:"cells,omitempty"` -} - -func (m *Column) Reset() { *m = Column{} } -func (m *Column) String() string { return proto.CompactTextString(m) } -func (*Column) ProtoMessage() {} -func (*Column) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Column) GetQualifier() []byte { - if m != nil { - return m.Qualifier - } - return nil -} - -func (m *Column) GetCells() []*Cell { - if m != nil { - return m.Cells - } - return nil -} - -// Specifies (some of) the contents of a single row/column/timestamp of a table. -type Cell struct { - // The cell's stored timestamp, which also uniquely identifies it within - // its column. - // Values are always expressed in microseconds, but individual tables may set - // a coarser "granularity" to further restrict the allowed values. For - // example, a table which specifies millisecond granularity will only allow - // values of "timestamp_micros" which are multiples of 1000. - TimestampMicros int64 `protobuf:"varint,1,opt,name=timestamp_micros,json=timestampMicros" json:"timestamp_micros,omitempty"` - // The value stored in the cell. - // May contain any byte string, including the empty string, up to 100MiB in - // length. - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - // Labels applied to the cell by a [RowFilter][google.bigtable.v1.RowFilter]. - Labels []string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty"` -} - -func (m *Cell) Reset() { *m = Cell{} } -func (m *Cell) String() string { return proto.CompactTextString(m) } -func (*Cell) ProtoMessage() {} -func (*Cell) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Cell) GetTimestampMicros() int64 { - if m != nil { - return m.TimestampMicros - } - return 0 -} - -func (m *Cell) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func (m *Cell) GetLabels() []string { - if m != nil { - return m.Labels - } - return nil -} - -// Specifies a contiguous range of rows. -type RowRange struct { - // Inclusive lower bound. If left empty, interpreted as the empty string. - StartKey []byte `protobuf:"bytes,2,opt,name=start_key,json=startKey,proto3" json:"start_key,omitempty"` - // Exclusive upper bound. If left empty, interpreted as infinity. - EndKey []byte `protobuf:"bytes,3,opt,name=end_key,json=endKey,proto3" json:"end_key,omitempty"` -} - -func (m *RowRange) Reset() { *m = RowRange{} } -func (m *RowRange) String() string { return proto.CompactTextString(m) } -func (*RowRange) ProtoMessage() {} -func (*RowRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *RowRange) GetStartKey() []byte { - if m != nil { - return m.StartKey - } - return nil -} - -func (m *RowRange) GetEndKey() []byte { - if m != nil { - return m.EndKey - } - return nil -} - -// Specifies a non-contiguous set of rows. -type RowSet struct { - // Single rows included in the set. - RowKeys [][]byte `protobuf:"bytes,1,rep,name=row_keys,json=rowKeys,proto3" json:"row_keys,omitempty"` - // Contiguous row ranges included in the set. - RowRanges []*RowRange `protobuf:"bytes,2,rep,name=row_ranges,json=rowRanges" json:"row_ranges,omitempty"` -} - -func (m *RowSet) Reset() { *m = RowSet{} } -func (m *RowSet) String() string { return proto.CompactTextString(m) } -func (*RowSet) ProtoMessage() {} -func (*RowSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *RowSet) GetRowKeys() [][]byte { - if m != nil { - return m.RowKeys - } - return nil -} - -func (m *RowSet) GetRowRanges() []*RowRange { - if m != nil { - return m.RowRanges - } - return nil -} - -// Specifies a contiguous range of columns within a single column family. -// The range spans from <column_family>:<start_qualifier> to -// <column_family>:<end_qualifier>, where both bounds can be either inclusive or -// exclusive. -type ColumnRange struct { - // The name of the column family within which this range falls. - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The column qualifier at which to start the range (within 'column_family'). - // If neither field is set, interpreted as the empty string, inclusive. - // - // Types that are valid to be assigned to StartQualifier: - // *ColumnRange_StartQualifierInclusive - // *ColumnRange_StartQualifierExclusive - StartQualifier isColumnRange_StartQualifier `protobuf_oneof:"start_qualifier"` - // The column qualifier at which to end the range (within 'column_family'). - // If neither field is set, interpreted as the infinite string, exclusive. - // - // Types that are valid to be assigned to EndQualifier: - // *ColumnRange_EndQualifierInclusive - // *ColumnRange_EndQualifierExclusive - EndQualifier isColumnRange_EndQualifier `protobuf_oneof:"end_qualifier"` -} - -func (m *ColumnRange) Reset() { *m = ColumnRange{} } -func (m *ColumnRange) String() string { return proto.CompactTextString(m) } -func (*ColumnRange) ProtoMessage() {} -func (*ColumnRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -type isColumnRange_StartQualifier interface { - isColumnRange_StartQualifier() -} -type isColumnRange_EndQualifier interface { - isColumnRange_EndQualifier() -} - -type ColumnRange_StartQualifierInclusive struct { - StartQualifierInclusive []byte `protobuf:"bytes,2,opt,name=start_qualifier_inclusive,json=startQualifierInclusive,proto3,oneof"` -} -type ColumnRange_StartQualifierExclusive struct { - StartQualifierExclusive []byte `protobuf:"bytes,3,opt,name=start_qualifier_exclusive,json=startQualifierExclusive,proto3,oneof"` -} -type ColumnRange_EndQualifierInclusive struct { - EndQualifierInclusive []byte `protobuf:"bytes,4,opt,name=end_qualifier_inclusive,json=endQualifierInclusive,proto3,oneof"` -} -type ColumnRange_EndQualifierExclusive struct { - EndQualifierExclusive []byte `protobuf:"bytes,5,opt,name=end_qualifier_exclusive,json=endQualifierExclusive,proto3,oneof"` -} - -func (*ColumnRange_StartQualifierInclusive) isColumnRange_StartQualifier() {} -func (*ColumnRange_StartQualifierExclusive) isColumnRange_StartQualifier() {} -func (*ColumnRange_EndQualifierInclusive) isColumnRange_EndQualifier() {} -func (*ColumnRange_EndQualifierExclusive) isColumnRange_EndQualifier() {} - -func (m *ColumnRange) GetStartQualifier() isColumnRange_StartQualifier { - if m != nil { - return m.StartQualifier - } - return nil -} -func (m *ColumnRange) GetEndQualifier() isColumnRange_EndQualifier { - if m != nil { - return m.EndQualifier - } - return nil -} - -func (m *ColumnRange) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *ColumnRange) GetStartQualifierInclusive() []byte { - if x, ok := m.GetStartQualifier().(*ColumnRange_StartQualifierInclusive); ok { - return x.StartQualifierInclusive - } - return nil -} - -func (m *ColumnRange) GetStartQualifierExclusive() []byte { - if x, ok := m.GetStartQualifier().(*ColumnRange_StartQualifierExclusive); ok { - return x.StartQualifierExclusive - } - return nil -} - -func (m *ColumnRange) GetEndQualifierInclusive() []byte { - if x, ok := m.GetEndQualifier().(*ColumnRange_EndQualifierInclusive); ok { - return x.EndQualifierInclusive - } - return nil -} - -func (m *ColumnRange) GetEndQualifierExclusive() []byte { - if x, ok := m.GetEndQualifier().(*ColumnRange_EndQualifierExclusive); ok { - return x.EndQualifierExclusive - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ColumnRange) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ColumnRange_OneofMarshaler, _ColumnRange_OneofUnmarshaler, _ColumnRange_OneofSizer, []interface{}{ - (*ColumnRange_StartQualifierInclusive)(nil), - (*ColumnRange_StartQualifierExclusive)(nil), - (*ColumnRange_EndQualifierInclusive)(nil), - (*ColumnRange_EndQualifierExclusive)(nil), - } -} - -func _ColumnRange_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ColumnRange) - // start_qualifier - switch x := m.StartQualifier.(type) { - case *ColumnRange_StartQualifierInclusive: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartQualifierInclusive) - case *ColumnRange_StartQualifierExclusive: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartQualifierExclusive) - case nil: - default: - return fmt.Errorf("ColumnRange.StartQualifier has unexpected type %T", x) - } - // end_qualifier - switch x := m.EndQualifier.(type) { - case *ColumnRange_EndQualifierInclusive: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndQualifierInclusive) - case *ColumnRange_EndQualifierExclusive: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndQualifierExclusive) - case nil: - default: - return fmt.Errorf("ColumnRange.EndQualifier has unexpected type %T", x) - } - return nil -} - -func _ColumnRange_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ColumnRange) - switch tag { - case 2: // start_qualifier.start_qualifier_inclusive - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartQualifier = &ColumnRange_StartQualifierInclusive{x} - return true, err - case 3: // start_qualifier.start_qualifier_exclusive - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartQualifier = &ColumnRange_StartQualifierExclusive{x} - return true, err - case 4: // end_qualifier.end_qualifier_inclusive - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndQualifier = &ColumnRange_EndQualifierInclusive{x} - return true, err - case 5: // end_qualifier.end_qualifier_exclusive - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndQualifier = &ColumnRange_EndQualifierExclusive{x} - return true, err - default: - return false, nil - } -} - -func _ColumnRange_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ColumnRange) - // start_qualifier - switch x := m.StartQualifier.(type) { - case *ColumnRange_StartQualifierInclusive: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartQualifierInclusive))) - n += len(x.StartQualifierInclusive) - case *ColumnRange_StartQualifierExclusive: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartQualifierExclusive))) - n += len(x.StartQualifierExclusive) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // end_qualifier - switch x := m.EndQualifier.(type) { - case *ColumnRange_EndQualifierInclusive: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndQualifierInclusive))) - n += len(x.EndQualifierInclusive) - case *ColumnRange_EndQualifierExclusive: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndQualifierExclusive))) - n += len(x.EndQualifierExclusive) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Specified a contiguous range of microsecond timestamps. -type TimestampRange struct { - // Inclusive lower bound. If left empty, interpreted as 0. - StartTimestampMicros int64 `protobuf:"varint,1,opt,name=start_timestamp_micros,json=startTimestampMicros" json:"start_timestamp_micros,omitempty"` - // Exclusive upper bound. If left empty, interpreted as infinity. - EndTimestampMicros int64 `protobuf:"varint,2,opt,name=end_timestamp_micros,json=endTimestampMicros" json:"end_timestamp_micros,omitempty"` -} - -func (m *TimestampRange) Reset() { *m = TimestampRange{} } -func (m *TimestampRange) String() string { return proto.CompactTextString(m) } -func (*TimestampRange) ProtoMessage() {} -func (*TimestampRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *TimestampRange) GetStartTimestampMicros() int64 { - if m != nil { - return m.StartTimestampMicros - } - return 0 -} - -func (m *TimestampRange) GetEndTimestampMicros() int64 { - if m != nil { - return m.EndTimestampMicros - } - return 0 -} - -// Specifies a contiguous range of raw byte values. -type ValueRange struct { - // The value at which to start the range. - // If neither field is set, interpreted as the empty string, inclusive. - // - // Types that are valid to be assigned to StartValue: - // *ValueRange_StartValueInclusive - // *ValueRange_StartValueExclusive - StartValue isValueRange_StartValue `protobuf_oneof:"start_value"` - // The value at which to end the range. - // If neither field is set, interpreted as the infinite string, exclusive. - // - // Types that are valid to be assigned to EndValue: - // *ValueRange_EndValueInclusive - // *ValueRange_EndValueExclusive - EndValue isValueRange_EndValue `protobuf_oneof:"end_value"` -} - -func (m *ValueRange) Reset() { *m = ValueRange{} } -func (m *ValueRange) String() string { return proto.CompactTextString(m) } -func (*ValueRange) ProtoMessage() {} -func (*ValueRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -type isValueRange_StartValue interface { - isValueRange_StartValue() -} -type isValueRange_EndValue interface { - isValueRange_EndValue() -} - -type ValueRange_StartValueInclusive struct { - StartValueInclusive []byte `protobuf:"bytes,1,opt,name=start_value_inclusive,json=startValueInclusive,proto3,oneof"` -} -type ValueRange_StartValueExclusive struct { - StartValueExclusive []byte `protobuf:"bytes,2,opt,name=start_value_exclusive,json=startValueExclusive,proto3,oneof"` -} -type ValueRange_EndValueInclusive struct { - EndValueInclusive []byte `protobuf:"bytes,3,opt,name=end_value_inclusive,json=endValueInclusive,proto3,oneof"` -} -type ValueRange_EndValueExclusive struct { - EndValueExclusive []byte `protobuf:"bytes,4,opt,name=end_value_exclusive,json=endValueExclusive,proto3,oneof"` -} - -func (*ValueRange_StartValueInclusive) isValueRange_StartValue() {} -func (*ValueRange_StartValueExclusive) isValueRange_StartValue() {} -func (*ValueRange_EndValueInclusive) isValueRange_EndValue() {} -func (*ValueRange_EndValueExclusive) isValueRange_EndValue() {} - -func (m *ValueRange) GetStartValue() isValueRange_StartValue { - if m != nil { - return m.StartValue - } - return nil -} -func (m *ValueRange) GetEndValue() isValueRange_EndValue { - if m != nil { - return m.EndValue - } - return nil -} - -func (m *ValueRange) GetStartValueInclusive() []byte { - if x, ok := m.GetStartValue().(*ValueRange_StartValueInclusive); ok { - return x.StartValueInclusive - } - return nil -} - -func (m *ValueRange) GetStartValueExclusive() []byte { - if x, ok := m.GetStartValue().(*ValueRange_StartValueExclusive); ok { - return x.StartValueExclusive - } - return nil -} - -func (m *ValueRange) GetEndValueInclusive() []byte { - if x, ok := m.GetEndValue().(*ValueRange_EndValueInclusive); ok { - return x.EndValueInclusive - } - return nil -} - -func (m *ValueRange) GetEndValueExclusive() []byte { - if x, ok := m.GetEndValue().(*ValueRange_EndValueExclusive); ok { - return x.EndValueExclusive - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ValueRange) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ValueRange_OneofMarshaler, _ValueRange_OneofUnmarshaler, _ValueRange_OneofSizer, []interface{}{ - (*ValueRange_StartValueInclusive)(nil), - (*ValueRange_StartValueExclusive)(nil), - (*ValueRange_EndValueInclusive)(nil), - (*ValueRange_EndValueExclusive)(nil), - } -} - -func _ValueRange_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ValueRange) - // start_value - switch x := m.StartValue.(type) { - case *ValueRange_StartValueInclusive: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartValueInclusive) - case *ValueRange_StartValueExclusive: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartValueExclusive) - case nil: - default: - return fmt.Errorf("ValueRange.StartValue has unexpected type %T", x) - } - // end_value - switch x := m.EndValue.(type) { - case *ValueRange_EndValueInclusive: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndValueInclusive) - case *ValueRange_EndValueExclusive: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndValueExclusive) - case nil: - default: - return fmt.Errorf("ValueRange.EndValue has unexpected type %T", x) - } - return nil -} - -func _ValueRange_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ValueRange) - switch tag { - case 1: // start_value.start_value_inclusive - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartValue = &ValueRange_StartValueInclusive{x} - return true, err - case 2: // start_value.start_value_exclusive - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartValue = &ValueRange_StartValueExclusive{x} - return true, err - case 3: // end_value.end_value_inclusive - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndValue = &ValueRange_EndValueInclusive{x} - return true, err - case 4: // end_value.end_value_exclusive - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndValue = &ValueRange_EndValueExclusive{x} - return true, err - default: - return false, nil - } -} - -func _ValueRange_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ValueRange) - // start_value - switch x := m.StartValue.(type) { - case *ValueRange_StartValueInclusive: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartValueInclusive))) - n += len(x.StartValueInclusive) - case *ValueRange_StartValueExclusive: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartValueExclusive))) - n += len(x.StartValueExclusive) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // end_value - switch x := m.EndValue.(type) { - case *ValueRange_EndValueInclusive: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndValueInclusive))) - n += len(x.EndValueInclusive) - case *ValueRange_EndValueExclusive: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndValueExclusive))) - n += len(x.EndValueExclusive) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Takes a row as input and produces an alternate view of the row based on -// specified rules. For example, a RowFilter might trim down a row to include -// just the cells from columns matching a given regular expression, or might -// return all the cells of a row but not their values. More complicated filters -// can be composed out of these components to express requests such as, "within -// every column of a particular family, give just the two most recent cells -// which are older than timestamp X." -// -// There are two broad categories of RowFilters (true filters and transformers), -// as well as two ways to compose simple filters into more complex ones -// (chains and interleaves). They work as follows: -// -// * True filters alter the input row by excluding some of its cells wholesale -// from the output row. An example of a true filter is the "value_regex_filter", -// which excludes cells whose values don't match the specified pattern. All -// regex true filters use RE2 syntax (https://github.com/google/re2/wiki/Syntax) -// in raw byte mode (RE2::Latin1), and are evaluated as full matches. An -// important point to keep in mind is that RE2(.) is equivalent by default to -// RE2([^\n]), meaning that it does not match newlines. When attempting to match -// an arbitrary byte, you should therefore use the escape sequence '\C', which -// may need to be further escaped as '\\C' in your client language. -// -// * Transformers alter the input row by changing the values of some of its -// cells in the output, without excluding them completely. Currently, the only -// supported transformer is the "strip_value_transformer", which replaces every -// cell's value with the empty string. -// -// * Chains and interleaves are described in more detail in the -// RowFilter.Chain and RowFilter.Interleave documentation. -// -// The total serialized size of a RowFilter message must not -// exceed 4096 bytes, and RowFilters may not be nested within each other -// (in Chains or Interleaves) to a depth of more than 20. -type RowFilter struct { - // Which of the possible RowFilter types to apply. If none are set, this - // RowFilter returns all cells in the input row. - // - // Types that are valid to be assigned to Filter: - // *RowFilter_Chain_ - // *RowFilter_Interleave_ - // *RowFilter_Condition_ - // *RowFilter_Sink - // *RowFilter_PassAllFilter - // *RowFilter_BlockAllFilter - // *RowFilter_RowKeyRegexFilter - // *RowFilter_RowSampleFilter - // *RowFilter_FamilyNameRegexFilter - // *RowFilter_ColumnQualifierRegexFilter - // *RowFilter_ColumnRangeFilter - // *RowFilter_TimestampRangeFilter - // *RowFilter_ValueRegexFilter - // *RowFilter_ValueRangeFilter - // *RowFilter_CellsPerRowOffsetFilter - // *RowFilter_CellsPerRowLimitFilter - // *RowFilter_CellsPerColumnLimitFilter - // *RowFilter_StripValueTransformer - // *RowFilter_ApplyLabelTransformer - Filter isRowFilter_Filter `protobuf_oneof:"filter"` -} - -func (m *RowFilter) Reset() { *m = RowFilter{} } -func (m *RowFilter) String() string { return proto.CompactTextString(m) } -func (*RowFilter) ProtoMessage() {} -func (*RowFilter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -type isRowFilter_Filter interface { - isRowFilter_Filter() -} - -type RowFilter_Chain_ struct { - Chain *RowFilter_Chain `protobuf:"bytes,1,opt,name=chain,oneof"` -} -type RowFilter_Interleave_ struct { - Interleave *RowFilter_Interleave `protobuf:"bytes,2,opt,name=interleave,oneof"` -} -type RowFilter_Condition_ struct { - Condition *RowFilter_Condition `protobuf:"bytes,3,opt,name=condition,oneof"` -} -type RowFilter_Sink struct { - Sink bool `protobuf:"varint,16,opt,name=sink,oneof"` -} -type RowFilter_PassAllFilter struct { - PassAllFilter bool `protobuf:"varint,17,opt,name=pass_all_filter,json=passAllFilter,oneof"` -} -type RowFilter_BlockAllFilter struct { - BlockAllFilter bool `protobuf:"varint,18,opt,name=block_all_filter,json=blockAllFilter,oneof"` -} -type RowFilter_RowKeyRegexFilter struct { - RowKeyRegexFilter []byte `protobuf:"bytes,4,opt,name=row_key_regex_filter,json=rowKeyRegexFilter,proto3,oneof"` -} -type RowFilter_RowSampleFilter struct { - RowSampleFilter float64 `protobuf:"fixed64,14,opt,name=row_sample_filter,json=rowSampleFilter,oneof"` -} -type RowFilter_FamilyNameRegexFilter struct { - FamilyNameRegexFilter string `protobuf:"bytes,5,opt,name=family_name_regex_filter,json=familyNameRegexFilter,oneof"` -} -type RowFilter_ColumnQualifierRegexFilter struct { - ColumnQualifierRegexFilter []byte `protobuf:"bytes,6,opt,name=column_qualifier_regex_filter,json=columnQualifierRegexFilter,proto3,oneof"` -} -type RowFilter_ColumnRangeFilter struct { - ColumnRangeFilter *ColumnRange `protobuf:"bytes,7,opt,name=column_range_filter,json=columnRangeFilter,oneof"` -} -type RowFilter_TimestampRangeFilter struct { - TimestampRangeFilter *TimestampRange `protobuf:"bytes,8,opt,name=timestamp_range_filter,json=timestampRangeFilter,oneof"` -} -type RowFilter_ValueRegexFilter struct { - ValueRegexFilter []byte `protobuf:"bytes,9,opt,name=value_regex_filter,json=valueRegexFilter,proto3,oneof"` -} -type RowFilter_ValueRangeFilter struct { - ValueRangeFilter *ValueRange `protobuf:"bytes,15,opt,name=value_range_filter,json=valueRangeFilter,oneof"` -} -type RowFilter_CellsPerRowOffsetFilter struct { - CellsPerRowOffsetFilter int32 `protobuf:"varint,10,opt,name=cells_per_row_offset_filter,json=cellsPerRowOffsetFilter,oneof"` -} -type RowFilter_CellsPerRowLimitFilter struct { - CellsPerRowLimitFilter int32 `protobuf:"varint,11,opt,name=cells_per_row_limit_filter,json=cellsPerRowLimitFilter,oneof"` -} -type RowFilter_CellsPerColumnLimitFilter struct { - CellsPerColumnLimitFilter int32 `protobuf:"varint,12,opt,name=cells_per_column_limit_filter,json=cellsPerColumnLimitFilter,oneof"` -} -type RowFilter_StripValueTransformer struct { - StripValueTransformer bool `protobuf:"varint,13,opt,name=strip_value_transformer,json=stripValueTransformer,oneof"` -} -type RowFilter_ApplyLabelTransformer struct { - ApplyLabelTransformer string `protobuf:"bytes,19,opt,name=apply_label_transformer,json=applyLabelTransformer,oneof"` -} - -func (*RowFilter_Chain_) isRowFilter_Filter() {} -func (*RowFilter_Interleave_) isRowFilter_Filter() {} -func (*RowFilter_Condition_) isRowFilter_Filter() {} -func (*RowFilter_Sink) isRowFilter_Filter() {} -func (*RowFilter_PassAllFilter) isRowFilter_Filter() {} -func (*RowFilter_BlockAllFilter) isRowFilter_Filter() {} -func (*RowFilter_RowKeyRegexFilter) isRowFilter_Filter() {} -func (*RowFilter_RowSampleFilter) isRowFilter_Filter() {} -func (*RowFilter_FamilyNameRegexFilter) isRowFilter_Filter() {} -func (*RowFilter_ColumnQualifierRegexFilter) isRowFilter_Filter() {} -func (*RowFilter_ColumnRangeFilter) isRowFilter_Filter() {} -func (*RowFilter_TimestampRangeFilter) isRowFilter_Filter() {} -func (*RowFilter_ValueRegexFilter) isRowFilter_Filter() {} -func (*RowFilter_ValueRangeFilter) isRowFilter_Filter() {} -func (*RowFilter_CellsPerRowOffsetFilter) isRowFilter_Filter() {} -func (*RowFilter_CellsPerRowLimitFilter) isRowFilter_Filter() {} -func (*RowFilter_CellsPerColumnLimitFilter) isRowFilter_Filter() {} -func (*RowFilter_StripValueTransformer) isRowFilter_Filter() {} -func (*RowFilter_ApplyLabelTransformer) isRowFilter_Filter() {} - -func (m *RowFilter) GetFilter() isRowFilter_Filter { - if m != nil { - return m.Filter - } - return nil -} - -func (m *RowFilter) GetChain() *RowFilter_Chain { - if x, ok := m.GetFilter().(*RowFilter_Chain_); ok { - return x.Chain - } - return nil -} - -func (m *RowFilter) GetInterleave() *RowFilter_Interleave { - if x, ok := m.GetFilter().(*RowFilter_Interleave_); ok { - return x.Interleave - } - return nil -} - -func (m *RowFilter) GetCondition() *RowFilter_Condition { - if x, ok := m.GetFilter().(*RowFilter_Condition_); ok { - return x.Condition - } - return nil -} - -func (m *RowFilter) GetSink() bool { - if x, ok := m.GetFilter().(*RowFilter_Sink); ok { - return x.Sink - } - return false -} - -func (m *RowFilter) GetPassAllFilter() bool { - if x, ok := m.GetFilter().(*RowFilter_PassAllFilter); ok { - return x.PassAllFilter - } - return false -} - -func (m *RowFilter) GetBlockAllFilter() bool { - if x, ok := m.GetFilter().(*RowFilter_BlockAllFilter); ok { - return x.BlockAllFilter - } - return false -} - -func (m *RowFilter) GetRowKeyRegexFilter() []byte { - if x, ok := m.GetFilter().(*RowFilter_RowKeyRegexFilter); ok { - return x.RowKeyRegexFilter - } - return nil -} - -func (m *RowFilter) GetRowSampleFilter() float64 { - if x, ok := m.GetFilter().(*RowFilter_RowSampleFilter); ok { - return x.RowSampleFilter - } - return 0 -} - -func (m *RowFilter) GetFamilyNameRegexFilter() string { - if x, ok := m.GetFilter().(*RowFilter_FamilyNameRegexFilter); ok { - return x.FamilyNameRegexFilter - } - return "" -} - -func (m *RowFilter) GetColumnQualifierRegexFilter() []byte { - if x, ok := m.GetFilter().(*RowFilter_ColumnQualifierRegexFilter); ok { - return x.ColumnQualifierRegexFilter - } - return nil -} - -func (m *RowFilter) GetColumnRangeFilter() *ColumnRange { - if x, ok := m.GetFilter().(*RowFilter_ColumnRangeFilter); ok { - return x.ColumnRangeFilter - } - return nil -} - -func (m *RowFilter) GetTimestampRangeFilter() *TimestampRange { - if x, ok := m.GetFilter().(*RowFilter_TimestampRangeFilter); ok { - return x.TimestampRangeFilter - } - return nil -} - -func (m *RowFilter) GetValueRegexFilter() []byte { - if x, ok := m.GetFilter().(*RowFilter_ValueRegexFilter); ok { - return x.ValueRegexFilter - } - return nil -} - -func (m *RowFilter) GetValueRangeFilter() *ValueRange { - if x, ok := m.GetFilter().(*RowFilter_ValueRangeFilter); ok { - return x.ValueRangeFilter - } - return nil -} - -func (m *RowFilter) GetCellsPerRowOffsetFilter() int32 { - if x, ok := m.GetFilter().(*RowFilter_CellsPerRowOffsetFilter); ok { - return x.CellsPerRowOffsetFilter - } - return 0 -} - -func (m *RowFilter) GetCellsPerRowLimitFilter() int32 { - if x, ok := m.GetFilter().(*RowFilter_CellsPerRowLimitFilter); ok { - return x.CellsPerRowLimitFilter - } - return 0 -} - -func (m *RowFilter) GetCellsPerColumnLimitFilter() int32 { - if x, ok := m.GetFilter().(*RowFilter_CellsPerColumnLimitFilter); ok { - return x.CellsPerColumnLimitFilter - } - return 0 -} - -func (m *RowFilter) GetStripValueTransformer() bool { - if x, ok := m.GetFilter().(*RowFilter_StripValueTransformer); ok { - return x.StripValueTransformer - } - return false -} - -func (m *RowFilter) GetApplyLabelTransformer() string { - if x, ok := m.GetFilter().(*RowFilter_ApplyLabelTransformer); ok { - return x.ApplyLabelTransformer - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RowFilter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RowFilter_OneofMarshaler, _RowFilter_OneofUnmarshaler, _RowFilter_OneofSizer, []interface{}{ - (*RowFilter_Chain_)(nil), - (*RowFilter_Interleave_)(nil), - (*RowFilter_Condition_)(nil), - (*RowFilter_Sink)(nil), - (*RowFilter_PassAllFilter)(nil), - (*RowFilter_BlockAllFilter)(nil), - (*RowFilter_RowKeyRegexFilter)(nil), - (*RowFilter_RowSampleFilter)(nil), - (*RowFilter_FamilyNameRegexFilter)(nil), - (*RowFilter_ColumnQualifierRegexFilter)(nil), - (*RowFilter_ColumnRangeFilter)(nil), - (*RowFilter_TimestampRangeFilter)(nil), - (*RowFilter_ValueRegexFilter)(nil), - (*RowFilter_ValueRangeFilter)(nil), - (*RowFilter_CellsPerRowOffsetFilter)(nil), - (*RowFilter_CellsPerRowLimitFilter)(nil), - (*RowFilter_CellsPerColumnLimitFilter)(nil), - (*RowFilter_StripValueTransformer)(nil), - (*RowFilter_ApplyLabelTransformer)(nil), - } -} - -func _RowFilter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RowFilter) - // filter - switch x := m.Filter.(type) { - case *RowFilter_Chain_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Chain); err != nil { - return err - } - case *RowFilter_Interleave_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Interleave); err != nil { - return err - } - case *RowFilter_Condition_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Condition); err != nil { - return err - } - case *RowFilter_Sink: - t := uint64(0) - if x.Sink { - t = 1 - } - b.EncodeVarint(16<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *RowFilter_PassAllFilter: - t := uint64(0) - if x.PassAllFilter { - t = 1 - } - b.EncodeVarint(17<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *RowFilter_BlockAllFilter: - t := uint64(0) - if x.BlockAllFilter { - t = 1 - } - b.EncodeVarint(18<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *RowFilter_RowKeyRegexFilter: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.RowKeyRegexFilter) - case *RowFilter_RowSampleFilter: - b.EncodeVarint(14<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.RowSampleFilter)) - case *RowFilter_FamilyNameRegexFilter: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.FamilyNameRegexFilter) - case *RowFilter_ColumnQualifierRegexFilter: - b.EncodeVarint(6<<3 | proto.WireBytes) - b.EncodeRawBytes(x.ColumnQualifierRegexFilter) - case *RowFilter_ColumnRangeFilter: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ColumnRangeFilter); err != nil { - return err - } - case *RowFilter_TimestampRangeFilter: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimestampRangeFilter); err != nil { - return err - } - case *RowFilter_ValueRegexFilter: - b.EncodeVarint(9<<3 | proto.WireBytes) - b.EncodeRawBytes(x.ValueRegexFilter) - case *RowFilter_ValueRangeFilter: - b.EncodeVarint(15<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ValueRangeFilter); err != nil { - return err - } - case *RowFilter_CellsPerRowOffsetFilter: - b.EncodeVarint(10<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CellsPerRowOffsetFilter)) - case *RowFilter_CellsPerRowLimitFilter: - b.EncodeVarint(11<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CellsPerRowLimitFilter)) - case *RowFilter_CellsPerColumnLimitFilter: - b.EncodeVarint(12<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CellsPerColumnLimitFilter)) - case *RowFilter_StripValueTransformer: - t := uint64(0) - if x.StripValueTransformer { - t = 1 - } - b.EncodeVarint(13<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *RowFilter_ApplyLabelTransformer: - b.EncodeVarint(19<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ApplyLabelTransformer) - case nil: - default: - return fmt.Errorf("RowFilter.Filter has unexpected type %T", x) - } - return nil -} - -func _RowFilter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RowFilter) - switch tag { - case 1: // filter.chain - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RowFilter_Chain) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_Chain_{msg} - return true, err - case 2: // filter.interleave - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RowFilter_Interleave) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_Interleave_{msg} - return true, err - case 3: // filter.condition - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RowFilter_Condition) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_Condition_{msg} - return true, err - case 16: // filter.sink - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_Sink{x != 0} - return true, err - case 17: // filter.pass_all_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_PassAllFilter{x != 0} - return true, err - case 18: // filter.block_all_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_BlockAllFilter{x != 0} - return true, err - case 4: // filter.row_key_regex_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Filter = &RowFilter_RowKeyRegexFilter{x} - return true, err - case 14: // filter.row_sample_filter - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Filter = &RowFilter_RowSampleFilter{math.Float64frombits(x)} - return true, err - case 5: // filter.family_name_regex_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Filter = &RowFilter_FamilyNameRegexFilter{x} - return true, err - case 6: // filter.column_qualifier_regex_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Filter = &RowFilter_ColumnQualifierRegexFilter{x} - return true, err - case 7: // filter.column_range_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ColumnRange) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_ColumnRangeFilter{msg} - return true, err - case 8: // filter.timestamp_range_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TimestampRange) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_TimestampRangeFilter{msg} - return true, err - case 9: // filter.value_regex_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Filter = &RowFilter_ValueRegexFilter{x} - return true, err - case 15: // filter.value_range_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ValueRange) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_ValueRangeFilter{msg} - return true, err - case 10: // filter.cells_per_row_offset_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_CellsPerRowOffsetFilter{int32(x)} - return true, err - case 11: // filter.cells_per_row_limit_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_CellsPerRowLimitFilter{int32(x)} - return true, err - case 12: // filter.cells_per_column_limit_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_CellsPerColumnLimitFilter{int32(x)} - return true, err - case 13: // filter.strip_value_transformer - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_StripValueTransformer{x != 0} - return true, err - case 19: // filter.apply_label_transformer - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Filter = &RowFilter_ApplyLabelTransformer{x} - return true, err - default: - return false, nil - } -} - -func _RowFilter_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RowFilter) - // filter - switch x := m.Filter.(type) { - case *RowFilter_Chain_: - s := proto.Size(x.Chain) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_Interleave_: - s := proto.Size(x.Interleave) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_Condition_: - s := proto.Size(x.Condition) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_Sink: - n += proto.SizeVarint(16<<3 | proto.WireVarint) - n += 1 - case *RowFilter_PassAllFilter: - n += proto.SizeVarint(17<<3 | proto.WireVarint) - n += 1 - case *RowFilter_BlockAllFilter: - n += proto.SizeVarint(18<<3 | proto.WireVarint) - n += 1 - case *RowFilter_RowKeyRegexFilter: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RowKeyRegexFilter))) - n += len(x.RowKeyRegexFilter) - case *RowFilter_RowSampleFilter: - n += proto.SizeVarint(14<<3 | proto.WireFixed64) - n += 8 - case *RowFilter_FamilyNameRegexFilter: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.FamilyNameRegexFilter))) - n += len(x.FamilyNameRegexFilter) - case *RowFilter_ColumnQualifierRegexFilter: - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ColumnQualifierRegexFilter))) - n += len(x.ColumnQualifierRegexFilter) - case *RowFilter_ColumnRangeFilter: - s := proto.Size(x.ColumnRangeFilter) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_TimestampRangeFilter: - s := proto.Size(x.TimestampRangeFilter) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_ValueRegexFilter: - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ValueRegexFilter))) - n += len(x.ValueRegexFilter) - case *RowFilter_ValueRangeFilter: - s := proto.Size(x.ValueRangeFilter) - n += proto.SizeVarint(15<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_CellsPerRowOffsetFilter: - n += proto.SizeVarint(10<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CellsPerRowOffsetFilter)) - case *RowFilter_CellsPerRowLimitFilter: - n += proto.SizeVarint(11<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CellsPerRowLimitFilter)) - case *RowFilter_CellsPerColumnLimitFilter: - n += proto.SizeVarint(12<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CellsPerColumnLimitFilter)) - case *RowFilter_StripValueTransformer: - n += proto.SizeVarint(13<<3 | proto.WireVarint) - n += 1 - case *RowFilter_ApplyLabelTransformer: - n += proto.SizeVarint(19<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ApplyLabelTransformer))) - n += len(x.ApplyLabelTransformer) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A RowFilter which sends rows through several RowFilters in sequence. -type RowFilter_Chain struct { - // The elements of "filters" are chained together to process the input row: - // in row -> f(0) -> intermediate row -> f(1) -> ... -> f(N) -> out row - // The full chain is executed atomically. - Filters []*RowFilter `protobuf:"bytes,1,rep,name=filters" json:"filters,omitempty"` -} - -func (m *RowFilter_Chain) Reset() { *m = RowFilter_Chain{} } -func (m *RowFilter_Chain) String() string { return proto.CompactTextString(m) } -func (*RowFilter_Chain) ProtoMessage() {} -func (*RowFilter_Chain) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 0} } - -func (m *RowFilter_Chain) GetFilters() []*RowFilter { - if m != nil { - return m.Filters - } - return nil -} - -// A RowFilter which sends each row to each of several component -// RowFilters and interleaves the results. -type RowFilter_Interleave struct { - // The elements of "filters" all process a copy of the input row, and the - // results are pooled, sorted, and combined into a single output row. - // If multiple cells are produced with the same column and timestamp, - // they will all appear in the output row in an unspecified mutual order. - // Consider the following example, with three filters: - // - // input row - // | - // ----------------------------------------------------- - // | | | - // f(0) f(1) f(2) - // | | | - // 1: foo,bar,10,x foo,bar,10,z far,bar,7,a - // 2: foo,blah,11,z far,blah,5,x far,blah,5,x - // | | | - // ----------------------------------------------------- - // | - // 1: foo,bar,10,z // could have switched with #2 - // 2: foo,bar,10,x // could have switched with #1 - // 3: foo,blah,11,z - // 4: far,bar,7,a - // 5: far,blah,5,x // identical to #6 - // 6: far,blah,5,x // identical to #5 - // All interleaved filters are executed atomically. - Filters []*RowFilter `protobuf:"bytes,1,rep,name=filters" json:"filters,omitempty"` -} - -func (m *RowFilter_Interleave) Reset() { *m = RowFilter_Interleave{} } -func (m *RowFilter_Interleave) String() string { return proto.CompactTextString(m) } -func (*RowFilter_Interleave) ProtoMessage() {} -func (*RowFilter_Interleave) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 1} } - -func (m *RowFilter_Interleave) GetFilters() []*RowFilter { - if m != nil { - return m.Filters - } - return nil -} - -// A RowFilter which evaluates one of two possible RowFilters, depending on -// whether or not a predicate RowFilter outputs any cells from the input row. -// -// IMPORTANT NOTE: The predicate filter does not execute atomically with the -// true and false filters, which may lead to inconsistent or unexpected -// results. Additionally, Condition filters have poor performance, especially -// when filters are set for the false condition. -type RowFilter_Condition struct { - // If "predicate_filter" outputs any cells, then "true_filter" will be - // evaluated on the input row. Otherwise, "false_filter" will be evaluated. - PredicateFilter *RowFilter `protobuf:"bytes,1,opt,name=predicate_filter,json=predicateFilter" json:"predicate_filter,omitempty"` - // The filter to apply to the input row if "predicate_filter" returns any - // results. If not provided, no results will be returned in the true case. - TrueFilter *RowFilter `protobuf:"bytes,2,opt,name=true_filter,json=trueFilter" json:"true_filter,omitempty"` - // The filter to apply to the input row if "predicate_filter" does not - // return any results. If not provided, no results will be returned in the - // false case. - FalseFilter *RowFilter `protobuf:"bytes,3,opt,name=false_filter,json=falseFilter" json:"false_filter,omitempty"` -} - -func (m *RowFilter_Condition) Reset() { *m = RowFilter_Condition{} } -func (m *RowFilter_Condition) String() string { return proto.CompactTextString(m) } -func (*RowFilter_Condition) ProtoMessage() {} -func (*RowFilter_Condition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 2} } - -func (m *RowFilter_Condition) GetPredicateFilter() *RowFilter { - if m != nil { - return m.PredicateFilter - } - return nil -} - -func (m *RowFilter_Condition) GetTrueFilter() *RowFilter { - if m != nil { - return m.TrueFilter - } - return nil -} - -func (m *RowFilter_Condition) GetFalseFilter() *RowFilter { - if m != nil { - return m.FalseFilter - } - return nil -} - -// Specifies a particular change to be made to the contents of a row. -type Mutation struct { - // Which of the possible Mutation types to apply. - // - // Types that are valid to be assigned to Mutation: - // *Mutation_SetCell_ - // *Mutation_DeleteFromColumn_ - // *Mutation_DeleteFromFamily_ - // *Mutation_DeleteFromRow_ - Mutation isMutation_Mutation `protobuf_oneof:"mutation"` -} - -func (m *Mutation) Reset() { *m = Mutation{} } -func (m *Mutation) String() string { return proto.CompactTextString(m) } -func (*Mutation) ProtoMessage() {} -func (*Mutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -type isMutation_Mutation interface { - isMutation_Mutation() -} - -type Mutation_SetCell_ struct { - SetCell *Mutation_SetCell `protobuf:"bytes,1,opt,name=set_cell,json=setCell,oneof"` -} -type Mutation_DeleteFromColumn_ struct { - DeleteFromColumn *Mutation_DeleteFromColumn `protobuf:"bytes,2,opt,name=delete_from_column,json=deleteFromColumn,oneof"` -} -type Mutation_DeleteFromFamily_ struct { - DeleteFromFamily *Mutation_DeleteFromFamily `protobuf:"bytes,3,opt,name=delete_from_family,json=deleteFromFamily,oneof"` -} -type Mutation_DeleteFromRow_ struct { - DeleteFromRow *Mutation_DeleteFromRow `protobuf:"bytes,4,opt,name=delete_from_row,json=deleteFromRow,oneof"` -} - -func (*Mutation_SetCell_) isMutation_Mutation() {} -func (*Mutation_DeleteFromColumn_) isMutation_Mutation() {} -func (*Mutation_DeleteFromFamily_) isMutation_Mutation() {} -func (*Mutation_DeleteFromRow_) isMutation_Mutation() {} - -func (m *Mutation) GetMutation() isMutation_Mutation { - if m != nil { - return m.Mutation - } - return nil -} - -func (m *Mutation) GetSetCell() *Mutation_SetCell { - if x, ok := m.GetMutation().(*Mutation_SetCell_); ok { - return x.SetCell - } - return nil -} - -func (m *Mutation) GetDeleteFromColumn() *Mutation_DeleteFromColumn { - if x, ok := m.GetMutation().(*Mutation_DeleteFromColumn_); ok { - return x.DeleteFromColumn - } - return nil -} - -func (m *Mutation) GetDeleteFromFamily() *Mutation_DeleteFromFamily { - if x, ok := m.GetMutation().(*Mutation_DeleteFromFamily_); ok { - return x.DeleteFromFamily - } - return nil -} - -func (m *Mutation) GetDeleteFromRow() *Mutation_DeleteFromRow { - if x, ok := m.GetMutation().(*Mutation_DeleteFromRow_); ok { - return x.DeleteFromRow - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Mutation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Mutation_OneofMarshaler, _Mutation_OneofUnmarshaler, _Mutation_OneofSizer, []interface{}{ - (*Mutation_SetCell_)(nil), - (*Mutation_DeleteFromColumn_)(nil), - (*Mutation_DeleteFromFamily_)(nil), - (*Mutation_DeleteFromRow_)(nil), - } -} - -func _Mutation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Mutation) - // mutation - switch x := m.Mutation.(type) { - case *Mutation_SetCell_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SetCell); err != nil { - return err - } - case *Mutation_DeleteFromColumn_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DeleteFromColumn); err != nil { - return err - } - case *Mutation_DeleteFromFamily_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DeleteFromFamily); err != nil { - return err - } - case *Mutation_DeleteFromRow_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DeleteFromRow); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Mutation.Mutation has unexpected type %T", x) - } - return nil -} - -func _Mutation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Mutation) - switch tag { - case 1: // mutation.set_cell - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_SetCell) - err := b.DecodeMessage(msg) - m.Mutation = &Mutation_SetCell_{msg} - return true, err - case 2: // mutation.delete_from_column - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_DeleteFromColumn) - err := b.DecodeMessage(msg) - m.Mutation = &Mutation_DeleteFromColumn_{msg} - return true, err - case 3: // mutation.delete_from_family - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_DeleteFromFamily) - err := b.DecodeMessage(msg) - m.Mutation = &Mutation_DeleteFromFamily_{msg} - return true, err - case 4: // mutation.delete_from_row - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_DeleteFromRow) - err := b.DecodeMessage(msg) - m.Mutation = &Mutation_DeleteFromRow_{msg} - return true, err - default: - return false, nil - } -} - -func _Mutation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Mutation) - // mutation - switch x := m.Mutation.(type) { - case *Mutation_SetCell_: - s := proto.Size(x.SetCell) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_DeleteFromColumn_: - s := proto.Size(x.DeleteFromColumn) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_DeleteFromFamily_: - s := proto.Size(x.DeleteFromFamily) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_DeleteFromRow_: - s := proto.Size(x.DeleteFromRow) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Mutation which sets the value of the specified cell. -type Mutation_SetCell struct { - // The name of the family into which new data should be written. - // Must match [-_.a-zA-Z0-9]+ - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The qualifier of the column into which new data should be written. - // Can be any byte string, including the empty string. - ColumnQualifier []byte `protobuf:"bytes,2,opt,name=column_qualifier,json=columnQualifier,proto3" json:"column_qualifier,omitempty"` - // The timestamp of the cell into which new data should be written. - // Use -1 for current Bigtable server time. - // Otherwise, the client should set this value itself, noting that the - // default value is a timestamp of zero if the field is left unspecified. - // Values must match the "granularity" of the table (e.g. micros, millis). - TimestampMicros int64 `protobuf:"varint,3,opt,name=timestamp_micros,json=timestampMicros" json:"timestamp_micros,omitempty"` - // The value to be written into the specified cell. - Value []byte `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *Mutation_SetCell) Reset() { *m = Mutation_SetCell{} } -func (m *Mutation_SetCell) String() string { return proto.CompactTextString(m) } -func (*Mutation_SetCell) ProtoMessage() {} -func (*Mutation_SetCell) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 0} } - -func (m *Mutation_SetCell) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *Mutation_SetCell) GetColumnQualifier() []byte { - if m != nil { - return m.ColumnQualifier - } - return nil -} - -func (m *Mutation_SetCell) GetTimestampMicros() int64 { - if m != nil { - return m.TimestampMicros - } - return 0 -} - -func (m *Mutation_SetCell) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -// A Mutation which deletes cells from the specified column, optionally -// restricting the deletions to a given timestamp range. -type Mutation_DeleteFromColumn struct { - // The name of the family from which cells should be deleted. - // Must match [-_.a-zA-Z0-9]+ - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The qualifier of the column from which cells should be deleted. - // Can be any byte string, including the empty string. - ColumnQualifier []byte `protobuf:"bytes,2,opt,name=column_qualifier,json=columnQualifier,proto3" json:"column_qualifier,omitempty"` - // The range of timestamps within which cells should be deleted. - TimeRange *TimestampRange `protobuf:"bytes,3,opt,name=time_range,json=timeRange" json:"time_range,omitempty"` -} - -func (m *Mutation_DeleteFromColumn) Reset() { *m = Mutation_DeleteFromColumn{} } -func (m *Mutation_DeleteFromColumn) String() string { return proto.CompactTextString(m) } -func (*Mutation_DeleteFromColumn) ProtoMessage() {} -func (*Mutation_DeleteFromColumn) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 1} } - -func (m *Mutation_DeleteFromColumn) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *Mutation_DeleteFromColumn) GetColumnQualifier() []byte { - if m != nil { - return m.ColumnQualifier - } - return nil -} - -func (m *Mutation_DeleteFromColumn) GetTimeRange() *TimestampRange { - if m != nil { - return m.TimeRange - } - return nil -} - -// A Mutation which deletes all cells from the specified column family. -type Mutation_DeleteFromFamily struct { - // The name of the family from which cells should be deleted. - // Must match [-_.a-zA-Z0-9]+ - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` -} - -func (m *Mutation_DeleteFromFamily) Reset() { *m = Mutation_DeleteFromFamily{} } -func (m *Mutation_DeleteFromFamily) String() string { return proto.CompactTextString(m) } -func (*Mutation_DeleteFromFamily) ProtoMessage() {} -func (*Mutation_DeleteFromFamily) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 2} } - -func (m *Mutation_DeleteFromFamily) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -// A Mutation which deletes all cells from the containing row. -type Mutation_DeleteFromRow struct { -} - -func (m *Mutation_DeleteFromRow) Reset() { *m = Mutation_DeleteFromRow{} } -func (m *Mutation_DeleteFromRow) String() string { return proto.CompactTextString(m) } -func (*Mutation_DeleteFromRow) ProtoMessage() {} -func (*Mutation_DeleteFromRow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 3} } - -// Specifies an atomic read/modify/write operation on the latest value of the -// specified column. -type ReadModifyWriteRule struct { - // The name of the family to which the read/modify/write should be applied. - // Must match [-_.a-zA-Z0-9]+ - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The qualifier of the column to which the read/modify/write should be - // applied. - // Can be any byte string, including the empty string. - ColumnQualifier []byte `protobuf:"bytes,2,opt,name=column_qualifier,json=columnQualifier,proto3" json:"column_qualifier,omitempty"` - // The rule used to determine the column's new latest value from its current - // latest value. - // - // Types that are valid to be assigned to Rule: - // *ReadModifyWriteRule_AppendValue - // *ReadModifyWriteRule_IncrementAmount - Rule isReadModifyWriteRule_Rule `protobuf_oneof:"rule"` -} - -func (m *ReadModifyWriteRule) Reset() { *m = ReadModifyWriteRule{} } -func (m *ReadModifyWriteRule) String() string { return proto.CompactTextString(m) } -func (*ReadModifyWriteRule) ProtoMessage() {} -func (*ReadModifyWriteRule) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -type isReadModifyWriteRule_Rule interface { - isReadModifyWriteRule_Rule() -} - -type ReadModifyWriteRule_AppendValue struct { - AppendValue []byte `protobuf:"bytes,3,opt,name=append_value,json=appendValue,proto3,oneof"` -} -type ReadModifyWriteRule_IncrementAmount struct { - IncrementAmount int64 `protobuf:"varint,4,opt,name=increment_amount,json=incrementAmount,oneof"` -} - -func (*ReadModifyWriteRule_AppendValue) isReadModifyWriteRule_Rule() {} -func (*ReadModifyWriteRule_IncrementAmount) isReadModifyWriteRule_Rule() {} - -func (m *ReadModifyWriteRule) GetRule() isReadModifyWriteRule_Rule { - if m != nil { - return m.Rule - } - return nil -} - -func (m *ReadModifyWriteRule) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *ReadModifyWriteRule) GetColumnQualifier() []byte { - if m != nil { - return m.ColumnQualifier - } - return nil -} - -func (m *ReadModifyWriteRule) GetAppendValue() []byte { - if x, ok := m.GetRule().(*ReadModifyWriteRule_AppendValue); ok { - return x.AppendValue - } - return nil -} - -func (m *ReadModifyWriteRule) GetIncrementAmount() int64 { - if x, ok := m.GetRule().(*ReadModifyWriteRule_IncrementAmount); ok { - return x.IncrementAmount - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ReadModifyWriteRule) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ReadModifyWriteRule_OneofMarshaler, _ReadModifyWriteRule_OneofUnmarshaler, _ReadModifyWriteRule_OneofSizer, []interface{}{ - (*ReadModifyWriteRule_AppendValue)(nil), - (*ReadModifyWriteRule_IncrementAmount)(nil), - } -} - -func _ReadModifyWriteRule_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ReadModifyWriteRule) - // rule - switch x := m.Rule.(type) { - case *ReadModifyWriteRule_AppendValue: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AppendValue) - case *ReadModifyWriteRule_IncrementAmount: - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IncrementAmount)) - case nil: - default: - return fmt.Errorf("ReadModifyWriteRule.Rule has unexpected type %T", x) - } - return nil -} - -func _ReadModifyWriteRule_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ReadModifyWriteRule) - switch tag { - case 3: // rule.append_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Rule = &ReadModifyWriteRule_AppendValue{x} - return true, err - case 4: // rule.increment_amount - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Rule = &ReadModifyWriteRule_IncrementAmount{int64(x)} - return true, err - default: - return false, nil - } -} - -func _ReadModifyWriteRule_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ReadModifyWriteRule) - // rule - switch x := m.Rule.(type) { - case *ReadModifyWriteRule_AppendValue: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AppendValue))) - n += len(x.AppendValue) - case *ReadModifyWriteRule_IncrementAmount: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IncrementAmount)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*Row)(nil), "google.bigtable.v1.Row") - proto.RegisterType((*Family)(nil), "google.bigtable.v1.Family") - proto.RegisterType((*Column)(nil), "google.bigtable.v1.Column") - proto.RegisterType((*Cell)(nil), "google.bigtable.v1.Cell") - proto.RegisterType((*RowRange)(nil), "google.bigtable.v1.RowRange") - proto.RegisterType((*RowSet)(nil), "google.bigtable.v1.RowSet") - proto.RegisterType((*ColumnRange)(nil), "google.bigtable.v1.ColumnRange") - proto.RegisterType((*TimestampRange)(nil), "google.bigtable.v1.TimestampRange") - proto.RegisterType((*ValueRange)(nil), "google.bigtable.v1.ValueRange") - proto.RegisterType((*RowFilter)(nil), "google.bigtable.v1.RowFilter") - proto.RegisterType((*RowFilter_Chain)(nil), "google.bigtable.v1.RowFilter.Chain") - proto.RegisterType((*RowFilter_Interleave)(nil), "google.bigtable.v1.RowFilter.Interleave") - proto.RegisterType((*RowFilter_Condition)(nil), "google.bigtable.v1.RowFilter.Condition") - proto.RegisterType((*Mutation)(nil), "google.bigtable.v1.Mutation") - proto.RegisterType((*Mutation_SetCell)(nil), "google.bigtable.v1.Mutation.SetCell") - proto.RegisterType((*Mutation_DeleteFromColumn)(nil), "google.bigtable.v1.Mutation.DeleteFromColumn") - proto.RegisterType((*Mutation_DeleteFromFamily)(nil), "google.bigtable.v1.Mutation.DeleteFromFamily") - proto.RegisterType((*Mutation_DeleteFromRow)(nil), "google.bigtable.v1.Mutation.DeleteFromRow") - proto.RegisterType((*ReadModifyWriteRule)(nil), "google.bigtable.v1.ReadModifyWriteRule") -} - -func init() { proto.RegisterFile("google/bigtable/v1/bigtable_data.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1378 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdb, 0x6e, 0x1b, 0x37, - 0x13, 0xd6, 0x5a, 0xb2, 0x0e, 0xb3, 0x76, 0x24, 0xd3, 0x27, 0x45, 0x49, 0xfe, 0x18, 0xca, 0x8f, - 0x56, 0x49, 0x5b, 0x39, 0x71, 0x82, 0x36, 0x6d, 0x82, 0x22, 0x56, 0x0e, 0x55, 0x9a, 0x33, 0x63, - 0xa4, 0x40, 0x80, 0x62, 0x4b, 0x6b, 0x29, 0x75, 0x11, 0xee, 0x52, 0xe5, 0xae, 0xac, 0xe8, 0x45, - 0x7a, 0xdf, 0xe7, 0xe8, 0x5d, 0x5f, 0xa2, 0xaf, 0xd1, 0xcb, 0x5e, 0xf4, 0xa2, 0xe0, 0x61, 0x4f, - 0xb2, 0x62, 0x1b, 0x45, 0xee, 0x96, 0x9c, 0xef, 0xfb, 0x66, 0x38, 0x1c, 0x0e, 0xb9, 0xf0, 0xc9, - 0x88, 0xf3, 0x11, 0xa3, 0xbb, 0x87, 0xde, 0x28, 0x22, 0x87, 0x8c, 0xee, 0x1e, 0xdd, 0x48, 0xbe, - 0x1d, 0x97, 0x44, 0xa4, 0x3b, 0x16, 0x3c, 0xe2, 0x08, 0x69, 0x5c, 0x37, 0xb6, 0x75, 0x8f, 0x6e, - 0xb4, 0x5f, 0x40, 0x11, 0xf3, 0x29, 0x6a, 0x40, 0xf1, 0x1d, 0x9d, 0x35, 0xad, 0x1d, 0xab, 0xb3, - 0x82, 0xe5, 0x27, 0xfa, 0x12, 0xaa, 0x43, 0xe2, 0x7b, 0xcc, 0xa3, 0x61, 0x73, 0x69, 0xa7, 0xd8, - 0xb1, 0xf7, 0x5a, 0xdd, 0xe3, 0xfc, 0xee, 0x23, 0x89, 0x99, 0xe1, 0x04, 0xdb, 0xc6, 0x50, 0xd6, - 0x73, 0x08, 0x41, 0x29, 0x20, 0x3e, 0x55, 0xa2, 0x35, 0xac, 0xbe, 0xd1, 0x2d, 0xa8, 0x0c, 0x38, - 0x9b, 0xf8, 0xc1, 0x89, 0xa2, 0xf7, 0x15, 0x04, 0xc7, 0xd0, 0xf6, 0x1b, 0x28, 0xeb, 0x29, 0x74, - 0x11, 0x6a, 0xbf, 0x4c, 0x08, 0xf3, 0x86, 0x1e, 0x15, 0x26, 0xda, 0x74, 0x02, 0x75, 0x61, 0x79, - 0x40, 0x19, 0x8b, 0xb5, 0x9b, 0x0b, 0xb5, 0x29, 0x63, 0x58, 0xc3, 0xda, 0x0e, 0x94, 0xe4, 0x10, - 0x5d, 0x85, 0x46, 0xe4, 0xf9, 0x34, 0x8c, 0x88, 0x3f, 0x76, 0x7c, 0x6f, 0x20, 0x78, 0xa8, 0xc4, - 0x8b, 0xb8, 0x9e, 0xcc, 0x3f, 0x53, 0xd3, 0x68, 0x03, 0x96, 0x8f, 0x08, 0x9b, 0xd0, 0xe6, 0x92, - 0x72, 0xae, 0x07, 0x68, 0x0b, 0xca, 0x8c, 0x1c, 0x52, 0x16, 0x36, 0x8b, 0x3b, 0xc5, 0x4e, 0x0d, - 0x9b, 0x51, 0xfb, 0x1e, 0x54, 0x31, 0x9f, 0x62, 0x12, 0x8c, 0x28, 0xba, 0x00, 0xb5, 0x30, 0x22, - 0x22, 0x72, 0x64, 0xa2, 0x35, 0xbb, 0xaa, 0x26, 0x9e, 0xd0, 0x19, 0xda, 0x86, 0x0a, 0x0d, 0x5c, - 0x65, 0x2a, 0x2a, 0x53, 0x99, 0x06, 0xee, 0x13, 0x3a, 0x6b, 0xff, 0x04, 0x65, 0xcc, 0xa7, 0xaf, - 0x69, 0x84, 0xce, 0x43, 0x55, 0xf0, 0xa9, 0x84, 0xc8, 0xe0, 0x8a, 0x9d, 0x15, 0x5c, 0x11, 0x7c, - 0xfa, 0x84, 0xce, 0x42, 0x74, 0x07, 0x40, 0x9a, 0x84, 0xf4, 0x13, 0x2f, 0xfe, 0xe2, 0xa2, 0xc5, - 0xc7, 0xc1, 0xe0, 0x9a, 0x30, 0x5f, 0x61, 0xfb, 0x8f, 0x25, 0xb0, 0x4d, 0xc2, 0x55, 0x9c, 0x97, - 0xc1, 0x56, 0x9b, 0x39, 0x73, 0x32, 0xbb, 0x07, 0x7a, 0xea, 0xb9, 0xdc, 0xc3, 0xbb, 0x70, 0x5e, - 0x2f, 0x24, 0x49, 0xbc, 0xe3, 0x05, 0x03, 0x36, 0x09, 0xbd, 0x23, 0x93, 0x96, 0x7e, 0x01, 0x6f, - 0x2b, 0xc8, 0xab, 0x18, 0xf1, 0x38, 0x06, 0x2c, 0x62, 0xd3, 0xf7, 0x31, 0xbb, 0xb8, 0x98, 0xfd, - 0x30, 0x06, 0xa0, 0xdb, 0xb0, 0x2d, 0xf3, 0xb4, 0xc8, 0x73, 0x49, 0x71, 0x2d, 0xbc, 0x49, 0x03, - 0x77, 0x81, 0xdf, 0x63, 0xcc, 0xd4, 0xeb, 0xf2, 0x22, 0x66, 0xe2, 0xb3, 0xb7, 0x06, 0xf5, 0xb9, - 0x88, 0x7b, 0x75, 0x58, 0xcd, 0x89, 0xb5, 0xdf, 0xc3, 0xb9, 0x83, 0xb8, 0x52, 0x74, 0x1a, 0x6f, - 0xc1, 0x96, 0x66, 0x7d, 0xa0, 0xb2, 0x36, 0x94, 0xf5, 0x60, 0xae, 0xbc, 0xae, 0xc3, 0x86, 0x14, - 0x3e, 0xc6, 0x59, 0x52, 0x1c, 0x44, 0x03, 0x77, 0x8e, 0xd1, 0xfe, 0xdb, 0x02, 0x78, 0x23, 0x8b, - 0x30, 0x76, 0xbb, 0xa9, 0xdd, 0xaa, 0xc2, 0xcc, 0xa4, 0xc7, 0x32, 0xa9, 0x5d, 0x57, 0x66, 0xc5, - 0x48, 0x93, 0x33, 0xc7, 0x4a, 0x53, 0xb3, 0x74, 0x9c, 0x95, 0x6e, 0xc6, 0x75, 0x58, 0x97, 0xc1, - 0xce, 0x7b, 0x2a, 0x9a, 0x74, 0xae, 0xd1, 0xc0, 0x9d, 0xf3, 0x93, 0x63, 0xa4, 0x5e, 0x4a, 0xf3, - 0x8c, 0x34, 0xf9, 0xab, 0x60, 0x67, 0x22, 0xeb, 0xd9, 0x50, 0x4b, 0x04, 0xda, 0xff, 0xd8, 0x50, - 0xc3, 0x7c, 0xfa, 0xc8, 0x63, 0x11, 0x15, 0xe8, 0x0e, 0x2c, 0x0f, 0x7e, 0x26, 0x5e, 0xa0, 0x56, - 0x6a, 0xef, 0x5d, 0xf9, 0x40, 0xfd, 0x6b, 0x74, 0xf7, 0xbe, 0x84, 0xf6, 0x0b, 0x58, 0x73, 0xd0, - 0xf7, 0x00, 0x5e, 0x10, 0x51, 0xc1, 0x28, 0x31, 0xab, 0xb6, 0xf7, 0x3a, 0x27, 0x2b, 0x3c, 0x4e, - 0xf0, 0xfd, 0x02, 0xce, 0xb0, 0xd1, 0x77, 0x50, 0x1b, 0xf0, 0xc0, 0xf5, 0x22, 0x8f, 0x07, 0x2a, - 0x19, 0xf6, 0xde, 0xa7, 0xa7, 0x04, 0x13, 0xc3, 0xfb, 0x05, 0x9c, 0x72, 0xd1, 0x06, 0x94, 0x42, - 0x2f, 0x78, 0xd7, 0x6c, 0xec, 0x58, 0x9d, 0x6a, 0xbf, 0x80, 0xd5, 0x08, 0x75, 0xa0, 0x3e, 0x26, - 0x61, 0xe8, 0x10, 0xc6, 0x9c, 0xa1, 0xe2, 0x37, 0xd7, 0x0c, 0x60, 0x55, 0x1a, 0xf6, 0x19, 0x33, - 0x19, 0xb9, 0x06, 0x8d, 0x43, 0xc6, 0x07, 0xef, 0xb2, 0x50, 0x64, 0xa0, 0xe7, 0x94, 0x25, 0xc5, - 0xde, 0x80, 0x0d, 0xd3, 0x5d, 0x1c, 0x41, 0x47, 0xf4, 0x7d, 0x8c, 0x2f, 0x99, 0x02, 0x58, 0xd3, - 0xbd, 0x06, 0x4b, 0x9b, 0xa1, 0x7c, 0x0e, 0x72, 0xd2, 0x09, 0x89, 0x3f, 0x66, 0x34, 0xc6, 0x9f, - 0xdb, 0xb1, 0x3a, 0x56, 0xbf, 0x80, 0xeb, 0x82, 0x4f, 0x5f, 0x2b, 0x8b, 0x41, 0x7f, 0x0d, 0xcd, - 0x4c, 0x5b, 0xc9, 0x3b, 0x91, 0x07, 0xb0, 0xd6, 0x2f, 0xe0, 0xcd, 0xb4, 0xcb, 0x64, 0x1d, 0xdd, - 0x87, 0x4b, 0xfa, 0x26, 0xc8, 0x9c, 0xde, 0x1c, 0xbf, 0x6c, 0x82, 0x6c, 0x69, 0x58, 0x72, 0x86, - 0xb3, 0x22, 0xaf, 0x60, 0xdd, 0x88, 0xa8, 0x36, 0x19, 0x53, 0x2b, 0x6a, 0x7f, 0x2e, 0x9f, 0x70, - 0x0b, 0x49, 0xb4, 0x4c, 0xc0, 0x20, 0x1d, 0x1a, 0xc9, 0xb7, 0xb0, 0x95, 0x1e, 0xd4, 0x9c, 0x6a, - 0x55, 0xa9, 0xb6, 0x17, 0xa9, 0xe6, 0xdb, 0x44, 0xbf, 0x80, 0x37, 0xa2, 0xdc, 0x8c, 0xd1, 0xee, - 0x02, 0xd2, 0xa7, 0x24, 0xb7, 0xd0, 0x9a, 0x59, 0x68, 0x43, 0xd9, 0xb2, 0xcb, 0x7b, 0x9e, 0xe0, - 0xb3, 0x71, 0xd4, 0x55, 0x1c, 0xff, 0x5b, 0x14, 0x47, 0xda, 0x33, 0x52, 0xbd, 0x8c, 0xff, 0x6f, - 0xe1, 0x82, 0xba, 0x23, 0x9d, 0xb1, 0x4c, 0x36, 0x9f, 0x3a, 0x7c, 0x38, 0x0c, 0x69, 0x14, 0x0b, - 0xc3, 0x8e, 0xd5, 0x59, 0x96, 0x8d, 0x5a, 0x81, 0x5e, 0x52, 0x81, 0xf9, 0xf4, 0x85, 0x42, 0x18, - 0xfe, 0x5d, 0x68, 0xe5, 0xf9, 0xcc, 0xf3, 0xbd, 0x84, 0x6e, 0x1b, 0xfa, 0x56, 0x86, 0xfe, 0x54, - 0x02, 0x0c, 0xbb, 0x07, 0x97, 0x52, 0xb6, 0xd9, 0xb6, 0x9c, 0xc0, 0x8a, 0x11, 0x38, 0x1f, 0x0b, - 0xe8, 0xcd, 0xca, 0x6a, 0xdc, 0x86, 0xed, 0x30, 0x12, 0xde, 0xd8, 0x74, 0x9b, 0x48, 0x90, 0x20, - 0x1c, 0x72, 0xe1, 0x53, 0xd1, 0x5c, 0x35, 0x87, 0x60, 0x53, 0x01, 0x54, 0x26, 0x0e, 0x52, 0xb3, - 0x64, 0x92, 0xf1, 0x98, 0xcd, 0x1c, 0x75, 0x8b, 0xe7, 0x98, 0xeb, 0x71, 0xa5, 0x2a, 0xc0, 0x53, - 0x69, 0xcf, 0x30, 0x5b, 0xf7, 0x60, 0x59, 0x35, 0x16, 0xf4, 0x15, 0x54, 0x74, 0xa4, 0xfa, 0xae, - 0xb6, 0xf7, 0x2e, 0x9d, 0xd8, 0x01, 0x70, 0x8c, 0x6e, 0x3d, 0x04, 0x48, 0x1b, 0xcb, 0x7f, 0x97, - 0xf9, 0xd3, 0x82, 0x5a, 0xd2, 0x55, 0x50, 0x1f, 0x1a, 0x63, 0x41, 0x5d, 0x6f, 0x40, 0xa2, 0xa4, - 0x34, 0x74, 0x97, 0x3c, 0x45, 0xaf, 0x9e, 0xd0, 0x92, 0xb2, 0xb0, 0x23, 0x31, 0x49, 0x44, 0x96, - 0xce, 0x22, 0x02, 0x92, 0x61, 0xf8, 0xf7, 0x60, 0x65, 0x48, 0x58, 0x98, 0x08, 0x14, 0xcf, 0x22, - 0x60, 0x2b, 0x8a, 0x1e, 0xf4, 0xaa, 0x50, 0xd6, 0xdc, 0xf6, 0x5f, 0xcb, 0x50, 0x7d, 0x36, 0x89, - 0x88, 0x5a, 0xe2, 0x3e, 0x54, 0x65, 0x79, 0xca, 0x72, 0x30, 0x4b, 0xfb, 0xff, 0x22, 0xd1, 0x18, - 0xdf, 0x7d, 0x4d, 0x23, 0xf9, 0xf4, 0xeb, 0x17, 0x70, 0x25, 0xd4, 0x9f, 0xe8, 0x47, 0x40, 0x2e, - 0x65, 0x54, 0xa6, 0x48, 0x70, 0xdf, 0x94, 0x9d, 0x59, 0xe2, 0x17, 0x27, 0x8a, 0x3d, 0x50, 0xb4, - 0x47, 0x82, 0xfb, 0xba, 0x0c, 0xe5, 0x89, 0x72, 0xe7, 0xe6, 0xe6, 0xe5, 0x75, 0xab, 0x33, 0x09, - 0x38, 0xab, 0xbc, 0x7e, 0x59, 0xe7, 0xe5, 0xcd, 0x6b, 0xfb, 0x00, 0xea, 0x59, 0x79, 0xc1, 0xa7, - 0xaa, 0x77, 0xdb, 0x7b, 0xd7, 0xce, 0xa8, 0x8d, 0xf9, 0x54, 0x5e, 0x21, 0x6e, 0x76, 0xa2, 0xf5, - 0xab, 0x05, 0x15, 0x93, 0xaa, 0xd3, 0x1f, 0x86, 0x57, 0xa1, 0x31, 0xdf, 0xa7, 0xcd, 0x43, 0xb7, - 0x3e, 0xd7, 0x98, 0x17, 0xbe, 0xb8, 0x8b, 0xa7, 0xbc, 0xb8, 0x4b, 0x99, 0x17, 0x77, 0xeb, 0x37, - 0x0b, 0x1a, 0xf3, 0x69, 0xff, 0xa8, 0x11, 0xee, 0x03, 0xc8, 0x48, 0x74, 0x3f, 0x35, 0xdb, 0x74, - 0x86, 0x86, 0x8e, 0x6b, 0x92, 0xa5, 0x3e, 0x5b, 0x37, 0xb3, 0x21, 0x9a, 0x6d, 0x3a, 0x2d, 0xc4, - 0x56, 0x1d, 0x56, 0x73, 0x7b, 0xd2, 0x03, 0xa8, 0xfa, 0x66, 0xb7, 0xda, 0xbf, 0x5b, 0xb0, 0x8e, - 0x29, 0x71, 0x9f, 0x71, 0xd7, 0x1b, 0xce, 0x7e, 0x10, 0x5e, 0x44, 0xf1, 0x84, 0xd1, 0x8f, 0xba, - 0xf0, 0x2b, 0xb0, 0x42, 0xc6, 0xe3, 0xe4, 0x95, 0x95, 0xbc, 0xc9, 0x6d, 0x3d, 0xab, 0xba, 0x25, - 0xfa, 0x0c, 0x1a, 0x5e, 0x30, 0x10, 0xd4, 0xa7, 0x41, 0xe4, 0x10, 0x9f, 0x4f, 0x82, 0x48, 0xed, - 0x4f, 0x51, 0x5e, 0xfd, 0x89, 0x65, 0x5f, 0x19, 0x7a, 0x65, 0x28, 0x89, 0x09, 0xa3, 0x3d, 0x0f, - 0xb6, 0x06, 0xdc, 0x5f, 0x90, 0xc3, 0xde, 0x5a, 0xcf, 0x0c, 0x1e, 0x90, 0x88, 0xbc, 0x94, 0x3f, - 0xab, 0x2f, 0xad, 0xb7, 0xdf, 0x18, 0xe0, 0x88, 0x33, 0x12, 0x8c, 0xba, 0x5c, 0x8c, 0x76, 0x47, - 0x34, 0x50, 0xbf, 0xb2, 0xbb, 0xda, 0x44, 0xc6, 0x5e, 0x98, 0xfd, 0xeb, 0xbd, 0x13, 0x7f, 0x1f, - 0x96, 0x15, 0xec, 0xe6, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x54, 0x66, 0x7c, 0x1b, 0x0f, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_service.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_service.pb.go deleted file mode 100644 index bf22713c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_service.pb.go +++ /dev/null @@ -1,387 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/v1/bigtable_service.proto - -package bigtable - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for BigtableService service - -type BigtableServiceClient interface { - // Streams back the contents of all requested rows, optionally applying - // the same Reader filter to each. Depending on their size, rows may be - // broken up across multiple responses, but atomicity of each row will still - // be preserved. - ReadRows(ctx context.Context, in *ReadRowsRequest, opts ...grpc.CallOption) (BigtableService_ReadRowsClient, error) - // Returns a sample of row keys in the table. The returned row keys will - // delimit contiguous sections of the table of approximately equal size, - // which can be used to break up the data for distributed tasks like - // mapreduces. - SampleRowKeys(ctx context.Context, in *SampleRowKeysRequest, opts ...grpc.CallOption) (BigtableService_SampleRowKeysClient, error) - // Mutates a row atomically. Cells already present in the row are left - // unchanged unless explicitly changed by 'mutation'. - MutateRow(ctx context.Context, in *MutateRowRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Mutates multiple rows in a batch. Each individual row is mutated - // atomically as in MutateRow, but the entire batch is not executed - // atomically. - MutateRows(ctx context.Context, in *MutateRowsRequest, opts ...grpc.CallOption) (*MutateRowsResponse, error) - // Mutates a row atomically based on the output of a predicate Reader filter. - CheckAndMutateRow(ctx context.Context, in *CheckAndMutateRowRequest, opts ...grpc.CallOption) (*CheckAndMutateRowResponse, error) - // Modifies a row atomically, reading the latest existing timestamp/value from - // the specified columns and writing a new value at - // max(existing timestamp, current server time) based on pre-defined - // read/modify/write rules. Returns the new contents of all modified cells. - ReadModifyWriteRow(ctx context.Context, in *ReadModifyWriteRowRequest, opts ...grpc.CallOption) (*Row, error) -} - -type bigtableServiceClient struct { - cc *grpc.ClientConn -} - -func NewBigtableServiceClient(cc *grpc.ClientConn) BigtableServiceClient { - return &bigtableServiceClient{cc} -} - -func (c *bigtableServiceClient) ReadRows(ctx context.Context, in *ReadRowsRequest, opts ...grpc.CallOption) (BigtableService_ReadRowsClient, error) { - stream, err := grpc.NewClientStream(ctx, &_BigtableService_serviceDesc.Streams[0], c.cc, "/google.bigtable.v1.BigtableService/ReadRows", opts...) - if err != nil { - return nil, err - } - x := &bigtableServiceReadRowsClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type BigtableService_ReadRowsClient interface { - Recv() (*ReadRowsResponse, error) - grpc.ClientStream -} - -type bigtableServiceReadRowsClient struct { - grpc.ClientStream -} - -func (x *bigtableServiceReadRowsClient) Recv() (*ReadRowsResponse, error) { - m := new(ReadRowsResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *bigtableServiceClient) SampleRowKeys(ctx context.Context, in *SampleRowKeysRequest, opts ...grpc.CallOption) (BigtableService_SampleRowKeysClient, error) { - stream, err := grpc.NewClientStream(ctx, &_BigtableService_serviceDesc.Streams[1], c.cc, "/google.bigtable.v1.BigtableService/SampleRowKeys", opts...) - if err != nil { - return nil, err - } - x := &bigtableServiceSampleRowKeysClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type BigtableService_SampleRowKeysClient interface { - Recv() (*SampleRowKeysResponse, error) - grpc.ClientStream -} - -type bigtableServiceSampleRowKeysClient struct { - grpc.ClientStream -} - -func (x *bigtableServiceSampleRowKeysClient) Recv() (*SampleRowKeysResponse, error) { - m := new(SampleRowKeysResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *bigtableServiceClient) MutateRow(ctx context.Context, in *MutateRowRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.bigtable.v1.BigtableService/MutateRow", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableServiceClient) MutateRows(ctx context.Context, in *MutateRowsRequest, opts ...grpc.CallOption) (*MutateRowsResponse, error) { - out := new(MutateRowsResponse) - err := grpc.Invoke(ctx, "/google.bigtable.v1.BigtableService/MutateRows", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableServiceClient) CheckAndMutateRow(ctx context.Context, in *CheckAndMutateRowRequest, opts ...grpc.CallOption) (*CheckAndMutateRowResponse, error) { - out := new(CheckAndMutateRowResponse) - err := grpc.Invoke(ctx, "/google.bigtable.v1.BigtableService/CheckAndMutateRow", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableServiceClient) ReadModifyWriteRow(ctx context.Context, in *ReadModifyWriteRowRequest, opts ...grpc.CallOption) (*Row, error) { - out := new(Row) - err := grpc.Invoke(ctx, "/google.bigtable.v1.BigtableService/ReadModifyWriteRow", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for BigtableService service - -type BigtableServiceServer interface { - // Streams back the contents of all requested rows, optionally applying - // the same Reader filter to each. Depending on their size, rows may be - // broken up across multiple responses, but atomicity of each row will still - // be preserved. - ReadRows(*ReadRowsRequest, BigtableService_ReadRowsServer) error - // Returns a sample of row keys in the table. The returned row keys will - // delimit contiguous sections of the table of approximately equal size, - // which can be used to break up the data for distributed tasks like - // mapreduces. - SampleRowKeys(*SampleRowKeysRequest, BigtableService_SampleRowKeysServer) error - // Mutates a row atomically. Cells already present in the row are left - // unchanged unless explicitly changed by 'mutation'. - MutateRow(context.Context, *MutateRowRequest) (*google_protobuf2.Empty, error) - // Mutates multiple rows in a batch. Each individual row is mutated - // atomically as in MutateRow, but the entire batch is not executed - // atomically. - MutateRows(context.Context, *MutateRowsRequest) (*MutateRowsResponse, error) - // Mutates a row atomically based on the output of a predicate Reader filter. - CheckAndMutateRow(context.Context, *CheckAndMutateRowRequest) (*CheckAndMutateRowResponse, error) - // Modifies a row atomically, reading the latest existing timestamp/value from - // the specified columns and writing a new value at - // max(existing timestamp, current server time) based on pre-defined - // read/modify/write rules. Returns the new contents of all modified cells. - ReadModifyWriteRow(context.Context, *ReadModifyWriteRowRequest) (*Row, error) -} - -func RegisterBigtableServiceServer(s *grpc.Server, srv BigtableServiceServer) { - s.RegisterService(&_BigtableService_serviceDesc, srv) -} - -func _BigtableService_ReadRows_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ReadRowsRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(BigtableServiceServer).ReadRows(m, &bigtableServiceReadRowsServer{stream}) -} - -type BigtableService_ReadRowsServer interface { - Send(*ReadRowsResponse) error - grpc.ServerStream -} - -type bigtableServiceReadRowsServer struct { - grpc.ServerStream -} - -func (x *bigtableServiceReadRowsServer) Send(m *ReadRowsResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _BigtableService_SampleRowKeys_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SampleRowKeysRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(BigtableServiceServer).SampleRowKeys(m, &bigtableServiceSampleRowKeysServer{stream}) -} - -type BigtableService_SampleRowKeysServer interface { - Send(*SampleRowKeysResponse) error - grpc.ServerStream -} - -type bigtableServiceSampleRowKeysServer struct { - grpc.ServerStream -} - -func (x *bigtableServiceSampleRowKeysServer) Send(m *SampleRowKeysResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _BigtableService_MutateRow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MutateRowRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableServiceServer).MutateRow(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.v1.BigtableService/MutateRow", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableServiceServer).MutateRow(ctx, req.(*MutateRowRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableService_MutateRows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MutateRowsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableServiceServer).MutateRows(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.v1.BigtableService/MutateRows", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableServiceServer).MutateRows(ctx, req.(*MutateRowsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableService_CheckAndMutateRow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CheckAndMutateRowRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableServiceServer).CheckAndMutateRow(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.v1.BigtableService/CheckAndMutateRow", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableServiceServer).CheckAndMutateRow(ctx, req.(*CheckAndMutateRowRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BigtableService_ReadModifyWriteRow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReadModifyWriteRowRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableServiceServer).ReadModifyWriteRow(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.v1.BigtableService/ReadModifyWriteRow", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableServiceServer).ReadModifyWriteRow(ctx, req.(*ReadModifyWriteRowRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _BigtableService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.bigtable.v1.BigtableService", - HandlerType: (*BigtableServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "MutateRow", - Handler: _BigtableService_MutateRow_Handler, - }, - { - MethodName: "MutateRows", - Handler: _BigtableService_MutateRows_Handler, - }, - { - MethodName: "CheckAndMutateRow", - Handler: _BigtableService_CheckAndMutateRow_Handler, - }, - { - MethodName: "ReadModifyWriteRow", - Handler: _BigtableService_ReadModifyWriteRow_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "ReadRows", - Handler: _BigtableService_ReadRows_Handler, - ServerStreams: true, - }, - { - StreamName: "SampleRowKeys", - Handler: _BigtableService_SampleRowKeys_Handler, - ServerStreams: true, - }, - }, - Metadata: "google/bigtable/v1/bigtable_service.proto", -} - -func init() { proto.RegisterFile("google/bigtable/v1/bigtable_service.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 521 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcd, 0x6e, 0xd4, 0x30, - 0x10, 0xc7, 0x65, 0x0e, 0xa8, 0x58, 0x42, 0x08, 0x4b, 0x14, 0x69, 0xe1, 0x14, 0xa0, 0xa2, 0x11, - 0x8d, 0xdb, 0x72, 0x0b, 0xe2, 0xd0, 0x45, 0x50, 0x21, 0x58, 0x51, 0xa5, 0xe2, 0x43, 0xe5, 0xb0, - 0x78, 0x93, 0x69, 0x08, 0x4d, 0xe2, 0x60, 0x7b, 0x37, 0x5a, 0xaa, 0x5e, 0x38, 0x71, 0xe7, 0x11, - 0x10, 0x17, 0x5e, 0x80, 0x23, 0xef, 0x00, 0x67, 0x6e, 0x3c, 0x08, 0xb2, 0x63, 0x2f, 0x2c, 0x0d, - 0xcb, 0x8a, 0xee, 0x29, 0x8e, 0xe6, 0x3f, 0x33, 0xbf, 0xff, 0xf8, 0x03, 0xaf, 0xa6, 0x9c, 0xa7, - 0x39, 0xd0, 0x41, 0x96, 0x2a, 0x36, 0xc8, 0x81, 0x8e, 0x36, 0x26, 0xeb, 0xbe, 0x04, 0x31, 0xca, - 0x62, 0x08, 0x2a, 0xc1, 0x15, 0x27, 0xa4, 0x91, 0x06, 0x2e, 0x1c, 0x8c, 0x36, 0x3a, 0x97, 0x6d, - 0x3a, 0xab, 0x32, 0xca, 0xca, 0x92, 0x2b, 0xa6, 0x32, 0x5e, 0xca, 0x26, 0xa3, 0xb3, 0x32, 0xab, - 0x78, 0xc2, 0x14, 0xb3, 0xba, 0xcd, 0x39, 0x20, 0xfa, 0x05, 0x48, 0xc9, 0x52, 0x70, 0xb5, 0x2f, - 0xd9, 0x1c, 0xf3, 0x37, 0x18, 0xee, 0x53, 0x28, 0x2a, 0x35, 0x6e, 0x82, 0x9b, 0xdf, 0x97, 0xf0, - 0xb9, 0xae, 0x2d, 0xb0, 0xdb, 0xe4, 0x93, 0x8f, 0x08, 0x2f, 0x45, 0xc0, 0x92, 0x88, 0xd7, 0x92, - 0x5c, 0x09, 0x8e, 0x9b, 0x09, 0x5c, 0x34, 0x82, 0xd7, 0x43, 0x90, 0xaa, 0x73, 0x75, 0xb6, 0x48, - 0x56, 0xbc, 0x94, 0xe0, 0x3d, 0x7c, 0xfb, 0xed, 0xc7, 0xfb, 0x53, 0xf7, 0xbc, 0x2d, 0x4d, 0x7d, - 0xd8, 0x30, 0x97, 0xac, 0x80, 0xdb, 0x95, 0xe0, 0xaf, 0x20, 0x56, 0x92, 0xfa, 0xf4, 0x0d, 0x2f, - 0x41, 0x7f, 0xe3, 0x7c, 0x28, 0x15, 0x08, 0xbd, 0x34, 0x42, 0x49, 0xfd, 0x23, 0x2a, 0x78, 0x2d, - 0x43, 0x01, 0x2c, 0x09, 0x91, 0xbf, 0x8e, 0xc8, 0x67, 0x84, 0xcf, 0xee, 0xb2, 0xa2, 0xca, 0x21, - 0xe2, 0xf5, 0x03, 0x18, 0x4b, 0x72, 0xbd, 0x8d, 0x63, 0x4a, 0xe2, 0x88, 0x57, 0xe7, 0x50, 0x5a, - 0xec, 0x47, 0x06, 0xfb, 0x3e, 0xd9, 0x3e, 0x11, 0xb6, 0x34, 0xb5, 0x75, 0xe1, 0x75, 0x44, 0x3e, - 0x20, 0x7c, 0xa6, 0x37, 0x54, 0x4c, 0xe9, 0x66, 0xa4, 0x75, 0x7a, 0x93, 0xb0, 0x23, 0x5e, 0x76, - 0x2a, 0xb7, 0x8f, 0xc1, 0x5d, 0xbd, 0x8f, 0xde, 0x33, 0x83, 0x17, 0x79, 0xbd, 0x93, 0xe0, 0xd1, - 0x43, 0xc1, 0xeb, 0xfe, 0x01, 0x8c, 0x8f, 0xc2, 0xc2, 0x34, 0x0e, 0x91, 0x4f, 0x3e, 0x21, 0x8c, - 0x27, 0x18, 0x92, 0x5c, 0x9b, 0x89, 0x39, 0x99, 0xec, 0xca, 0xbf, 0x64, 0x76, 0xac, 0x3d, 0xc3, - 0xbd, 0xed, 0x75, 0xff, 0x93, 0xdb, 0x82, 0xea, 0x9a, 0x1a, 0xf6, 0x2b, 0xc2, 0xe7, 0xef, 0xbc, - 0x84, 0xf8, 0x60, 0xab, 0x4c, 0x7e, 0x8d, 0xf6, 0x46, 0x1b, 0xcc, 0x31, 0x99, 0x43, 0x5f, 0x9b, - 0x53, 0x6d, 0x1d, 0xbc, 0x30, 0x0e, 0xf6, 0xbc, 0xc7, 0x0b, 0x9a, 0x7c, 0x3c, 0xd5, 0x49, 0x9b, - 0xfa, 0x82, 0x30, 0xd1, 0xd7, 0xa8, 0xc7, 0x93, 0x6c, 0x7f, 0xfc, 0x54, 0x64, 0x8d, 0xab, 0xb5, - 0xbf, 0x5d, 0xb7, 0x69, 0x9d, 0xb3, 0x75, 0xb1, 0x55, 0xce, 0x6b, 0x8f, 0x19, 0x03, 0xcf, 0xbd, - 0x27, 0x0b, 0x32, 0x20, 0xa6, 0x11, 0x42, 0xe4, 0x77, 0x2b, 0xbc, 0x1c, 0xf3, 0xa2, 0x05, 0xa0, - 0x7b, 0xe1, 0x8f, 0x67, 0x47, 0xee, 0xe8, 0x73, 0xbd, 0x83, 0xf6, 0x42, 0x2b, 0x4e, 0x79, 0xce, - 0xca, 0x34, 0xe0, 0x22, 0xa5, 0x29, 0x94, 0xe6, 0xd4, 0xd3, 0x26, 0xc4, 0xaa, 0x4c, 0xfe, 0xfe, - 0x04, 0xde, 0x72, 0xeb, 0x77, 0x08, 0x0d, 0x4e, 0x1b, 0xe5, 0xcd, 0x9f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x4c, 0x27, 0x6e, 0x9a, 0xb0, 0x05, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_service_messages.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_service_messages.pb.go deleted file mode 100644 index 763b83c2..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/v1/bigtable_service_messages.pb.go +++ /dev/null @@ -1,759 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/v1/bigtable_service_messages.proto - -package bigtable - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Request message for BigtableServer.ReadRows. -type ReadRowsRequest struct { - // The unique name of the table from which to read. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // If neither row_key nor row_range is set, reads from all rows. - // - // Types that are valid to be assigned to Target: - // *ReadRowsRequest_RowKey - // *ReadRowsRequest_RowRange - // *ReadRowsRequest_RowSet - Target isReadRowsRequest_Target `protobuf_oneof:"target"` - // The filter to apply to the contents of the specified row(s). If unset, - // reads the entire table. - Filter *RowFilter `protobuf:"bytes,5,opt,name=filter" json:"filter,omitempty"` - // By default, rows are read sequentially, producing results which are - // guaranteed to arrive in increasing row order. Setting - // "allow_row_interleaving" to true allows multiple rows to be interleaved in - // the response stream, which increases throughput but breaks this guarantee, - // and may force the client to use more memory to buffer partially-received - // rows. Cannot be set to true when specifying "num_rows_limit". - AllowRowInterleaving bool `protobuf:"varint,6,opt,name=allow_row_interleaving,json=allowRowInterleaving" json:"allow_row_interleaving,omitempty"` - // The read will terminate after committing to N rows' worth of results. The - // default (zero) is to return all results. - // Note that "allow_row_interleaving" cannot be set to true when this is set. - NumRowsLimit int64 `protobuf:"varint,7,opt,name=num_rows_limit,json=numRowsLimit" json:"num_rows_limit,omitempty"` -} - -func (m *ReadRowsRequest) Reset() { *m = ReadRowsRequest{} } -func (m *ReadRowsRequest) String() string { return proto.CompactTextString(m) } -func (*ReadRowsRequest) ProtoMessage() {} -func (*ReadRowsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -type isReadRowsRequest_Target interface { - isReadRowsRequest_Target() -} - -type ReadRowsRequest_RowKey struct { - RowKey []byte `protobuf:"bytes,2,opt,name=row_key,json=rowKey,proto3,oneof"` -} -type ReadRowsRequest_RowRange struct { - RowRange *RowRange `protobuf:"bytes,3,opt,name=row_range,json=rowRange,oneof"` -} -type ReadRowsRequest_RowSet struct { - RowSet *RowSet `protobuf:"bytes,8,opt,name=row_set,json=rowSet,oneof"` -} - -func (*ReadRowsRequest_RowKey) isReadRowsRequest_Target() {} -func (*ReadRowsRequest_RowRange) isReadRowsRequest_Target() {} -func (*ReadRowsRequest_RowSet) isReadRowsRequest_Target() {} - -func (m *ReadRowsRequest) GetTarget() isReadRowsRequest_Target { - if m != nil { - return m.Target - } - return nil -} - -func (m *ReadRowsRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *ReadRowsRequest) GetRowKey() []byte { - if x, ok := m.GetTarget().(*ReadRowsRequest_RowKey); ok { - return x.RowKey - } - return nil -} - -func (m *ReadRowsRequest) GetRowRange() *RowRange { - if x, ok := m.GetTarget().(*ReadRowsRequest_RowRange); ok { - return x.RowRange - } - return nil -} - -func (m *ReadRowsRequest) GetRowSet() *RowSet { - if x, ok := m.GetTarget().(*ReadRowsRequest_RowSet); ok { - return x.RowSet - } - return nil -} - -func (m *ReadRowsRequest) GetFilter() *RowFilter { - if m != nil { - return m.Filter - } - return nil -} - -func (m *ReadRowsRequest) GetAllowRowInterleaving() bool { - if m != nil { - return m.AllowRowInterleaving - } - return false -} - -func (m *ReadRowsRequest) GetNumRowsLimit() int64 { - if m != nil { - return m.NumRowsLimit - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ReadRowsRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ReadRowsRequest_OneofMarshaler, _ReadRowsRequest_OneofUnmarshaler, _ReadRowsRequest_OneofSizer, []interface{}{ - (*ReadRowsRequest_RowKey)(nil), - (*ReadRowsRequest_RowRange)(nil), - (*ReadRowsRequest_RowSet)(nil), - } -} - -func _ReadRowsRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ReadRowsRequest) - // target - switch x := m.Target.(type) { - case *ReadRowsRequest_RowKey: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.RowKey) - case *ReadRowsRequest_RowRange: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RowRange); err != nil { - return err - } - case *ReadRowsRequest_RowSet: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RowSet); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ReadRowsRequest.Target has unexpected type %T", x) - } - return nil -} - -func _ReadRowsRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ReadRowsRequest) - switch tag { - case 2: // target.row_key - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Target = &ReadRowsRequest_RowKey{x} - return true, err - case 3: // target.row_range - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RowRange) - err := b.DecodeMessage(msg) - m.Target = &ReadRowsRequest_RowRange{msg} - return true, err - case 8: // target.row_set - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RowSet) - err := b.DecodeMessage(msg) - m.Target = &ReadRowsRequest_RowSet{msg} - return true, err - default: - return false, nil - } -} - -func _ReadRowsRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ReadRowsRequest) - // target - switch x := m.Target.(type) { - case *ReadRowsRequest_RowKey: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RowKey))) - n += len(x.RowKey) - case *ReadRowsRequest_RowRange: - s := proto.Size(x.RowRange) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ReadRowsRequest_RowSet: - s := proto.Size(x.RowSet) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Response message for BigtableService.ReadRows. -type ReadRowsResponse struct { - // The key of the row for which we're receiving data. - // Results will be received in increasing row key order, unless - // "allow_row_interleaving" was specified in the request. - RowKey []byte `protobuf:"bytes,1,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // One or more chunks of the row specified by "row_key". - Chunks []*ReadRowsResponse_Chunk `protobuf:"bytes,2,rep,name=chunks" json:"chunks,omitempty"` -} - -func (m *ReadRowsResponse) Reset() { *m = ReadRowsResponse{} } -func (m *ReadRowsResponse) String() string { return proto.CompactTextString(m) } -func (*ReadRowsResponse) ProtoMessage() {} -func (*ReadRowsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ReadRowsResponse) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *ReadRowsResponse) GetChunks() []*ReadRowsResponse_Chunk { - if m != nil { - return m.Chunks - } - return nil -} - -// Specifies a piece of a row's contents returned as part of the read -// response stream. -type ReadRowsResponse_Chunk struct { - // Types that are valid to be assigned to Chunk: - // *ReadRowsResponse_Chunk_RowContents - // *ReadRowsResponse_Chunk_ResetRow - // *ReadRowsResponse_Chunk_CommitRow - Chunk isReadRowsResponse_Chunk_Chunk `protobuf_oneof:"chunk"` -} - -func (m *ReadRowsResponse_Chunk) Reset() { *m = ReadRowsResponse_Chunk{} } -func (m *ReadRowsResponse_Chunk) String() string { return proto.CompactTextString(m) } -func (*ReadRowsResponse_Chunk) ProtoMessage() {} -func (*ReadRowsResponse_Chunk) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1, 0} } - -type isReadRowsResponse_Chunk_Chunk interface { - isReadRowsResponse_Chunk_Chunk() -} - -type ReadRowsResponse_Chunk_RowContents struct { - RowContents *Family `protobuf:"bytes,1,opt,name=row_contents,json=rowContents,oneof"` -} -type ReadRowsResponse_Chunk_ResetRow struct { - ResetRow bool `protobuf:"varint,2,opt,name=reset_row,json=resetRow,oneof"` -} -type ReadRowsResponse_Chunk_CommitRow struct { - CommitRow bool `protobuf:"varint,3,opt,name=commit_row,json=commitRow,oneof"` -} - -func (*ReadRowsResponse_Chunk_RowContents) isReadRowsResponse_Chunk_Chunk() {} -func (*ReadRowsResponse_Chunk_ResetRow) isReadRowsResponse_Chunk_Chunk() {} -func (*ReadRowsResponse_Chunk_CommitRow) isReadRowsResponse_Chunk_Chunk() {} - -func (m *ReadRowsResponse_Chunk) GetChunk() isReadRowsResponse_Chunk_Chunk { - if m != nil { - return m.Chunk - } - return nil -} - -func (m *ReadRowsResponse_Chunk) GetRowContents() *Family { - if x, ok := m.GetChunk().(*ReadRowsResponse_Chunk_RowContents); ok { - return x.RowContents - } - return nil -} - -func (m *ReadRowsResponse_Chunk) GetResetRow() bool { - if x, ok := m.GetChunk().(*ReadRowsResponse_Chunk_ResetRow); ok { - return x.ResetRow - } - return false -} - -func (m *ReadRowsResponse_Chunk) GetCommitRow() bool { - if x, ok := m.GetChunk().(*ReadRowsResponse_Chunk_CommitRow); ok { - return x.CommitRow - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ReadRowsResponse_Chunk) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ReadRowsResponse_Chunk_OneofMarshaler, _ReadRowsResponse_Chunk_OneofUnmarshaler, _ReadRowsResponse_Chunk_OneofSizer, []interface{}{ - (*ReadRowsResponse_Chunk_RowContents)(nil), - (*ReadRowsResponse_Chunk_ResetRow)(nil), - (*ReadRowsResponse_Chunk_CommitRow)(nil), - } -} - -func _ReadRowsResponse_Chunk_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ReadRowsResponse_Chunk) - // chunk - switch x := m.Chunk.(type) { - case *ReadRowsResponse_Chunk_RowContents: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RowContents); err != nil { - return err - } - case *ReadRowsResponse_Chunk_ResetRow: - t := uint64(0) - if x.ResetRow { - t = 1 - } - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *ReadRowsResponse_Chunk_CommitRow: - t := uint64(0) - if x.CommitRow { - t = 1 - } - b.EncodeVarint(3<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("ReadRowsResponse_Chunk.Chunk has unexpected type %T", x) - } - return nil -} - -func _ReadRowsResponse_Chunk_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ReadRowsResponse_Chunk) - switch tag { - case 1: // chunk.row_contents - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Family) - err := b.DecodeMessage(msg) - m.Chunk = &ReadRowsResponse_Chunk_RowContents{msg} - return true, err - case 2: // chunk.reset_row - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Chunk = &ReadRowsResponse_Chunk_ResetRow{x != 0} - return true, err - case 3: // chunk.commit_row - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Chunk = &ReadRowsResponse_Chunk_CommitRow{x != 0} - return true, err - default: - return false, nil - } -} - -func _ReadRowsResponse_Chunk_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ReadRowsResponse_Chunk) - // chunk - switch x := m.Chunk.(type) { - case *ReadRowsResponse_Chunk_RowContents: - s := proto.Size(x.RowContents) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ReadRowsResponse_Chunk_ResetRow: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += 1 - case *ReadRowsResponse_Chunk_CommitRow: - n += proto.SizeVarint(3<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Request message for BigtableService.SampleRowKeys. -type SampleRowKeysRequest struct { - // The unique name of the table from which to sample row keys. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` -} - -func (m *SampleRowKeysRequest) Reset() { *m = SampleRowKeysRequest{} } -func (m *SampleRowKeysRequest) String() string { return proto.CompactTextString(m) } -func (*SampleRowKeysRequest) ProtoMessage() {} -func (*SampleRowKeysRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *SampleRowKeysRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -// Response message for BigtableService.SampleRowKeys. -type SampleRowKeysResponse struct { - // Sorted streamed sequence of sample row keys in the table. The table might - // have contents before the first row key in the list and after the last one, - // but a key containing the empty string indicates "end of table" and will be - // the last response given, if present. - // Note that row keys in this list may not have ever been written to or read - // from, and users should therefore not make any assumptions about the row key - // structure that are specific to their use case. - RowKey []byte `protobuf:"bytes,1,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // Approximate total storage space used by all rows in the table which precede - // "row_key". Buffering the contents of all rows between two subsequent - // samples would require space roughly equal to the difference in their - // "offset_bytes" fields. - OffsetBytes int64 `protobuf:"varint,2,opt,name=offset_bytes,json=offsetBytes" json:"offset_bytes,omitempty"` -} - -func (m *SampleRowKeysResponse) Reset() { *m = SampleRowKeysResponse{} } -func (m *SampleRowKeysResponse) String() string { return proto.CompactTextString(m) } -func (*SampleRowKeysResponse) ProtoMessage() {} -func (*SampleRowKeysResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *SampleRowKeysResponse) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *SampleRowKeysResponse) GetOffsetBytes() int64 { - if m != nil { - return m.OffsetBytes - } - return 0 -} - -// Request message for BigtableService.MutateRow. -type MutateRowRequest struct { - // The unique name of the table to which the mutation should be applied. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // The key of the row to which the mutation should be applied. - RowKey []byte `protobuf:"bytes,2,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // Changes to be atomically applied to the specified row. Entries are applied - // in order, meaning that earlier mutations can be masked by later ones. - // Must contain at least one entry and at most 100000. - Mutations []*Mutation `protobuf:"bytes,3,rep,name=mutations" json:"mutations,omitempty"` -} - -func (m *MutateRowRequest) Reset() { *m = MutateRowRequest{} } -func (m *MutateRowRequest) String() string { return proto.CompactTextString(m) } -func (*MutateRowRequest) ProtoMessage() {} -func (*MutateRowRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *MutateRowRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *MutateRowRequest) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *MutateRowRequest) GetMutations() []*Mutation { - if m != nil { - return m.Mutations - } - return nil -} - -// Request message for BigtableService.MutateRows. -type MutateRowsRequest struct { - // The unique name of the table to which the mutations should be applied. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // The row keys/mutations to be applied in bulk. - // Each entry is applied as an atomic mutation, but the entries may be - // applied in arbitrary order (even between entries for the same row). - // At least one entry must be specified, and in total the entries may - // contain at most 100000 mutations. - Entries []*MutateRowsRequest_Entry `protobuf:"bytes,2,rep,name=entries" json:"entries,omitempty"` -} - -func (m *MutateRowsRequest) Reset() { *m = MutateRowsRequest{} } -func (m *MutateRowsRequest) String() string { return proto.CompactTextString(m) } -func (*MutateRowsRequest) ProtoMessage() {} -func (*MutateRowsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *MutateRowsRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *MutateRowsRequest) GetEntries() []*MutateRowsRequest_Entry { - if m != nil { - return m.Entries - } - return nil -} - -type MutateRowsRequest_Entry struct { - // The key of the row to which the `mutations` should be applied. - RowKey []byte `protobuf:"bytes,1,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // Changes to be atomically applied to the specified row. Mutations are - // applied in order, meaning that earlier mutations can be masked by - // later ones. - // At least one mutation must be specified. - Mutations []*Mutation `protobuf:"bytes,2,rep,name=mutations" json:"mutations,omitempty"` -} - -func (m *MutateRowsRequest_Entry) Reset() { *m = MutateRowsRequest_Entry{} } -func (m *MutateRowsRequest_Entry) String() string { return proto.CompactTextString(m) } -func (*MutateRowsRequest_Entry) ProtoMessage() {} -func (*MutateRowsRequest_Entry) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5, 0} } - -func (m *MutateRowsRequest_Entry) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *MutateRowsRequest_Entry) GetMutations() []*Mutation { - if m != nil { - return m.Mutations - } - return nil -} - -// Response message for BigtableService.MutateRows. -type MutateRowsResponse struct { - // The results for each Entry from the request, presented in the order - // in which the entries were originally given. - // Depending on how requests are batched during execution, it is possible - // for one Entry to fail due to an error with another Entry. In the event - // that this occurs, the same error will be reported for both entries. - Statuses []*google_rpc.Status `protobuf:"bytes,1,rep,name=statuses" json:"statuses,omitempty"` -} - -func (m *MutateRowsResponse) Reset() { *m = MutateRowsResponse{} } -func (m *MutateRowsResponse) String() string { return proto.CompactTextString(m) } -func (*MutateRowsResponse) ProtoMessage() {} -func (*MutateRowsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *MutateRowsResponse) GetStatuses() []*google_rpc.Status { - if m != nil { - return m.Statuses - } - return nil -} - -// Request message for BigtableService.CheckAndMutateRowRequest -type CheckAndMutateRowRequest struct { - // The unique name of the table to which the conditional mutation should be - // applied. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // The key of the row to which the conditional mutation should be applied. - RowKey []byte `protobuf:"bytes,2,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // The filter to be applied to the contents of the specified row. Depending - // on whether or not any results are yielded, either "true_mutations" or - // "false_mutations" will be executed. If unset, checks that the row contains - // any values at all. - PredicateFilter *RowFilter `protobuf:"bytes,6,opt,name=predicate_filter,json=predicateFilter" json:"predicate_filter,omitempty"` - // Changes to be atomically applied to the specified row if "predicate_filter" - // yields at least one cell when applied to "row_key". Entries are applied in - // order, meaning that earlier mutations can be masked by later ones. - // Must contain at least one entry if "false_mutations" is empty, and at most - // 100000. - TrueMutations []*Mutation `protobuf:"bytes,4,rep,name=true_mutations,json=trueMutations" json:"true_mutations,omitempty"` - // Changes to be atomically applied to the specified row if "predicate_filter" - // does not yield any cells when applied to "row_key". Entries are applied in - // order, meaning that earlier mutations can be masked by later ones. - // Must contain at least one entry if "true_mutations" is empty, and at most - // 100000. - FalseMutations []*Mutation `protobuf:"bytes,5,rep,name=false_mutations,json=falseMutations" json:"false_mutations,omitempty"` -} - -func (m *CheckAndMutateRowRequest) Reset() { *m = CheckAndMutateRowRequest{} } -func (m *CheckAndMutateRowRequest) String() string { return proto.CompactTextString(m) } -func (*CheckAndMutateRowRequest) ProtoMessage() {} -func (*CheckAndMutateRowRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *CheckAndMutateRowRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *CheckAndMutateRowRequest) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *CheckAndMutateRowRequest) GetPredicateFilter() *RowFilter { - if m != nil { - return m.PredicateFilter - } - return nil -} - -func (m *CheckAndMutateRowRequest) GetTrueMutations() []*Mutation { - if m != nil { - return m.TrueMutations - } - return nil -} - -func (m *CheckAndMutateRowRequest) GetFalseMutations() []*Mutation { - if m != nil { - return m.FalseMutations - } - return nil -} - -// Response message for BigtableService.CheckAndMutateRowRequest. -type CheckAndMutateRowResponse struct { - // Whether or not the request's "predicate_filter" yielded any results for - // the specified row. - PredicateMatched bool `protobuf:"varint,1,opt,name=predicate_matched,json=predicateMatched" json:"predicate_matched,omitempty"` -} - -func (m *CheckAndMutateRowResponse) Reset() { *m = CheckAndMutateRowResponse{} } -func (m *CheckAndMutateRowResponse) String() string { return proto.CompactTextString(m) } -func (*CheckAndMutateRowResponse) ProtoMessage() {} -func (*CheckAndMutateRowResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *CheckAndMutateRowResponse) GetPredicateMatched() bool { - if m != nil { - return m.PredicateMatched - } - return false -} - -// Request message for BigtableService.ReadModifyWriteRowRequest. -type ReadModifyWriteRowRequest struct { - // The unique name of the table to which the read/modify/write rules should be - // applied. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // The key of the row to which the read/modify/write rules should be applied. - RowKey []byte `protobuf:"bytes,2,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // Rules specifying how the specified row's contents are to be transformed - // into writes. Entries are applied in order, meaning that earlier rules will - // affect the results of later ones. - Rules []*ReadModifyWriteRule `protobuf:"bytes,3,rep,name=rules" json:"rules,omitempty"` -} - -func (m *ReadModifyWriteRowRequest) Reset() { *m = ReadModifyWriteRowRequest{} } -func (m *ReadModifyWriteRowRequest) String() string { return proto.CompactTextString(m) } -func (*ReadModifyWriteRowRequest) ProtoMessage() {} -func (*ReadModifyWriteRowRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{9} } - -func (m *ReadModifyWriteRowRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *ReadModifyWriteRowRequest) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *ReadModifyWriteRowRequest) GetRules() []*ReadModifyWriteRule { - if m != nil { - return m.Rules - } - return nil -} - -func init() { - proto.RegisterType((*ReadRowsRequest)(nil), "google.bigtable.v1.ReadRowsRequest") - proto.RegisterType((*ReadRowsResponse)(nil), "google.bigtable.v1.ReadRowsResponse") - proto.RegisterType((*ReadRowsResponse_Chunk)(nil), "google.bigtable.v1.ReadRowsResponse.Chunk") - proto.RegisterType((*SampleRowKeysRequest)(nil), "google.bigtable.v1.SampleRowKeysRequest") - proto.RegisterType((*SampleRowKeysResponse)(nil), "google.bigtable.v1.SampleRowKeysResponse") - proto.RegisterType((*MutateRowRequest)(nil), "google.bigtable.v1.MutateRowRequest") - proto.RegisterType((*MutateRowsRequest)(nil), "google.bigtable.v1.MutateRowsRequest") - proto.RegisterType((*MutateRowsRequest_Entry)(nil), "google.bigtable.v1.MutateRowsRequest.Entry") - proto.RegisterType((*MutateRowsResponse)(nil), "google.bigtable.v1.MutateRowsResponse") - proto.RegisterType((*CheckAndMutateRowRequest)(nil), "google.bigtable.v1.CheckAndMutateRowRequest") - proto.RegisterType((*CheckAndMutateRowResponse)(nil), "google.bigtable.v1.CheckAndMutateRowResponse") - proto.RegisterType((*ReadModifyWriteRowRequest)(nil), "google.bigtable.v1.ReadModifyWriteRowRequest") -} - -func init() { proto.RegisterFile("google/bigtable/v1/bigtable_service_messages.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 788 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x5f, 0x8b, 0x23, 0x45, - 0x10, 0xdf, 0x49, 0xcc, 0xbf, 0x4a, 0xdc, 0xdd, 0x6b, 0xce, 0xdb, 0xd9, 0x70, 0x8b, 0x71, 0x10, - 0x0d, 0x1e, 0x4c, 0xb8, 0xd5, 0x7d, 0xb9, 0x43, 0xc4, 0xc4, 0x3d, 0x22, 0x1a, 0x39, 0x3a, 0x0f, - 0x82, 0x08, 0xa1, 0x33, 0xa9, 0xcc, 0x0e, 0x3b, 0xd3, 0x1d, 0xbb, 0x7b, 0x32, 0xe4, 0x59, 0xf0, - 0x5d, 0x3f, 0x85, 0xdf, 0xc8, 0x17, 0x3f, 0x8c, 0x74, 0xcf, 0xe4, 0x8f, 0x6b, 0xa2, 0x11, 0xf6, - 0xad, 0xa7, 0xaa, 0x7e, 0xbf, 0xaa, 0xfa, 0x75, 0x4d, 0x17, 0x5c, 0x87, 0x42, 0x84, 0x31, 0xf6, - 0xa6, 0x51, 0xa8, 0xd9, 0x34, 0xc6, 0xde, 0xf2, 0xe5, 0xe6, 0x3c, 0x51, 0x28, 0x97, 0x51, 0x80, - 0x93, 0x04, 0x95, 0x62, 0x21, 0x2a, 0x7f, 0x21, 0x85, 0x16, 0x84, 0xe4, 0x18, 0x7f, 0x1d, 0xe7, - 0x2f, 0x5f, 0xb6, 0x3f, 0xfa, 0x37, 0x9e, 0x19, 0xd3, 0x2c, 0xc7, 0xb6, 0x2f, 0x8a, 0x38, 0xb9, - 0x08, 0x7a, 0x4a, 0x33, 0x9d, 0x16, 0xa4, 0xde, 0x9f, 0x25, 0x38, 0xa3, 0xc8, 0x66, 0x54, 0x64, - 0x8a, 0xe2, 0x4f, 0x29, 0x2a, 0x4d, 0xae, 0x00, 0x72, 0x02, 0xce, 0x12, 0x74, 0x9d, 0x8e, 0xd3, - 0x6d, 0xd0, 0x86, 0xb5, 0x7c, 0xc7, 0x12, 0x24, 0x97, 0x50, 0x93, 0x22, 0x9b, 0xdc, 0xe3, 0xca, - 0x2d, 0x75, 0x9c, 0x6e, 0x6b, 0x78, 0x42, 0xab, 0x52, 0x64, 0xdf, 0xe0, 0x8a, 0xbc, 0x86, 0x86, - 0x71, 0x49, 0xc6, 0x43, 0x74, 0xcb, 0x1d, 0xa7, 0xdb, 0xbc, 0x7e, 0xee, 0xff, 0xb3, 0x6c, 0x9f, - 0x8a, 0x8c, 0x9a, 0x98, 0xe1, 0x09, 0xad, 0xcb, 0xe2, 0x4c, 0x6e, 0x72, 0x5e, 0x85, 0xda, 0xad, - 0x5b, 0x68, 0xfb, 0x00, 0x74, 0x8c, 0xba, 0xc8, 0x39, 0x46, 0x4d, 0x6e, 0xa0, 0x3a, 0x8f, 0x62, - 0x8d, 0xd2, 0xad, 0x58, 0xd4, 0xd5, 0x01, 0xd4, 0x1b, 0x1b, 0x44, 0x8b, 0x60, 0xf2, 0x19, 0x3c, - 0x63, 0x71, 0x6c, 0x8a, 0x15, 0xd9, 0x24, 0xe2, 0x1a, 0x65, 0x8c, 0x6c, 0x19, 0xf1, 0xd0, 0xad, - 0x76, 0x9c, 0x6e, 0x9d, 0x3e, 0xb5, 0x5e, 0x2a, 0xb2, 0xaf, 0x77, 0x7c, 0xe4, 0x43, 0x38, 0xe5, - 0x69, 0x62, 0x30, 0x6a, 0x12, 0x47, 0x49, 0xa4, 0xdd, 0x5a, 0xc7, 0xe9, 0x96, 0x69, 0x8b, 0xa7, - 0x89, 0x91, 0xf0, 0x5b, 0x63, 0xeb, 0xd7, 0xa1, 0xaa, 0x99, 0x0c, 0x51, 0x7b, 0x3f, 0x97, 0xe0, - 0x7c, 0x2b, 0xaf, 0x5a, 0x08, 0xae, 0x90, 0x5c, 0x6c, 0x05, 0x34, 0xe2, 0xb6, 0x36, 0xf2, 0xf5, - 0xa1, 0x1a, 0xdc, 0xa5, 0xfc, 0x5e, 0xb9, 0xa5, 0x4e, 0xb9, 0xdb, 0xbc, 0xfe, 0x64, 0x6f, 0x2b, - 0x0f, 0xe8, 0xfc, 0x81, 0x81, 0xd0, 0x02, 0xd9, 0xfe, 0xd5, 0x81, 0x8a, 0xb5, 0x90, 0x2f, 0xa0, - 0x65, 0xd2, 0x04, 0x82, 0x6b, 0xe4, 0x5a, 0xd9, 0x5c, 0x07, 0x44, 0x7d, 0xc3, 0x92, 0x28, 0x5e, - 0x0d, 0x4f, 0x68, 0x53, 0x8a, 0x6c, 0x50, 0x00, 0xc8, 0x15, 0x34, 0x24, 0x2a, 0xd4, 0xa6, 0x5d, - 0x7b, 0xd5, 0x75, 0x7b, 0x5f, 0xc6, 0x44, 0x45, 0x46, 0xde, 0x07, 0x08, 0x44, 0x92, 0x44, 0xb9, - 0xbf, 0x5c, 0xf8, 0x1b, 0xb9, 0x8d, 0x8a, 0xac, 0x5f, 0x83, 0x8a, 0x2d, 0xca, 0xbb, 0x81, 0xa7, - 0x63, 0x96, 0x2c, 0x62, 0xa4, 0xb6, 0xcf, 0x23, 0x07, 0xcd, 0x1b, 0xc3, 0x7b, 0x0f, 0x60, 0xff, - 0x25, 0xe0, 0x07, 0xd0, 0x12, 0xf3, 0xb9, 0x29, 0x79, 0xba, 0xd2, 0xa8, 0x6c, 0xd1, 0x65, 0xda, - 0xcc, 0x6d, 0x7d, 0x63, 0xf2, 0x7e, 0x71, 0xe0, 0x7c, 0x94, 0x6a, 0xa6, 0x0d, 0xeb, 0x91, 0x13, - 0x7f, 0xf1, 0x60, 0xe2, 0x37, 0xf9, 0x5e, 0x41, 0x23, 0x31, 0x5c, 0x91, 0xe0, 0xca, 0x2d, 0xdb, - 0x3b, 0xdb, 0x3b, 0xef, 0xa3, 0x22, 0x88, 0x6e, 0xc3, 0xbd, 0x3f, 0x1c, 0x78, 0xb2, 0x29, 0xe4, - 0xd8, 0x7f, 0xef, 0x16, 0x6a, 0xc8, 0xb5, 0x8c, 0x70, 0x3d, 0x22, 0x2f, 0x0e, 0xa6, 0xdb, 0xa5, - 0xf5, 0x6f, 0xb9, 0x96, 0x2b, 0xba, 0xc6, 0xb6, 0x7f, 0x84, 0x8a, 0xb5, 0x1c, 0x56, 0xf2, 0x6f, - 0x9d, 0x95, 0xfe, 0x5f, 0x67, 0x5f, 0x01, 0xd9, 0xad, 0xa0, 0xb8, 0x34, 0x1f, 0xea, 0xf9, 0xcb, - 0x83, 0x66, 0x14, 0x0d, 0x21, 0x59, 0x13, 0xca, 0x45, 0xe0, 0x8f, 0xad, 0x8f, 0x6e, 0x62, 0xbc, - 0xdf, 0x4b, 0xe0, 0x0e, 0xee, 0x30, 0xb8, 0xff, 0x92, 0xcf, 0x1e, 0xed, 0xc2, 0x86, 0x70, 0xbe, - 0x90, 0x38, 0x8b, 0x02, 0xa6, 0x71, 0x52, 0x3c, 0x1b, 0xd5, 0x63, 0x9e, 0x8d, 0xb3, 0x0d, 0x2c, - 0x37, 0x90, 0x01, 0x9c, 0x6a, 0x99, 0xe2, 0x64, 0xab, 0xd2, 0x3b, 0x47, 0xa8, 0xf4, 0xae, 0xc1, - 0xac, 0xbf, 0x14, 0xb9, 0x85, 0xb3, 0x39, 0x8b, 0xd5, 0x2e, 0x4b, 0xe5, 0x08, 0x96, 0x53, 0x0b, - 0xda, 0xd0, 0x78, 0x43, 0xb8, 0xdc, 0xa3, 0x54, 0xa1, 0xfb, 0x0b, 0x78, 0xb2, 0x6d, 0x39, 0x61, - 0x3a, 0xb8, 0xc3, 0x99, 0x55, 0xac, 0x4e, 0xb7, 0x5a, 0x8c, 0x72, 0xbb, 0xf7, 0x9b, 0x03, 0x97, - 0xe6, 0x81, 0x19, 0x89, 0x59, 0x34, 0x5f, 0x7d, 0x2f, 0xa3, 0x47, 0x51, 0xfd, 0x73, 0xa8, 0xc8, - 0x34, 0xc6, 0xf5, 0x2f, 0xf2, 0xf1, 0xa1, 0x67, 0x6d, 0x37, 0x6b, 0x1a, 0x23, 0xcd, 0x51, 0x7d, - 0x0d, 0xcf, 0x02, 0x91, 0xec, 0x01, 0xf5, 0x9f, 0xf7, 0x8b, 0x8f, 0x71, 0xbe, 0x32, 0x47, 0xc5, - 0xc6, 0x7c, 0x6b, 0x76, 0xdb, 0x5b, 0xe7, 0x87, 0x57, 0x05, 0x26, 0x14, 0x31, 0xe3, 0xa1, 0x2f, - 0x64, 0xd8, 0x0b, 0x91, 0xdb, 0xcd, 0xd7, 0xcb, 0x5d, 0x6c, 0x11, 0xa9, 0xdd, 0xed, 0xf9, 0x7a, - 0x7d, 0x9e, 0x56, 0x6d, 0xd8, 0xa7, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x16, 0x55, 0x90, 0x95, - 0xab, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/v2/bigtable.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/v2/bigtable.pb.go deleted file mode 100644 index 5db579f7..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/v2/bigtable.pb.go +++ /dev/null @@ -1,1261 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/v2/bigtable.proto - -/* -Package bigtable is a generated protocol buffer package. - -It is generated from these files: - google/bigtable/v2/bigtable.proto - google/bigtable/v2/data.proto - -It has these top-level messages: - ReadRowsRequest - ReadRowsResponse - SampleRowKeysRequest - SampleRowKeysResponse - MutateRowRequest - MutateRowResponse - MutateRowsRequest - MutateRowsResponse - CheckAndMutateRowRequest - CheckAndMutateRowResponse - ReadModifyWriteRowRequest - ReadModifyWriteRowResponse - Row - Family - Column - Cell - RowRange - RowSet - ColumnRange - TimestampRange - ValueRange - RowFilter - Mutation - ReadModifyWriteRule -*/ -package bigtable - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/wrappers" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Request message for Bigtable.ReadRows. -type ReadRowsRequest struct { - // The unique name of the table from which to read. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // This value specifies routing for replication. If not specified, the - // "default" application profile will be used. - AppProfileId string `protobuf:"bytes,5,opt,name=app_profile_id,json=appProfileId" json:"app_profile_id,omitempty"` - // The row keys and/or ranges to read. If not specified, reads from all rows. - Rows *RowSet `protobuf:"bytes,2,opt,name=rows" json:"rows,omitempty"` - // The filter to apply to the contents of the specified row(s). If unset, - // reads the entirety of each row. - Filter *RowFilter `protobuf:"bytes,3,opt,name=filter" json:"filter,omitempty"` - // The read will terminate after committing to N rows' worth of results. The - // default (zero) is to return all results. - RowsLimit int64 `protobuf:"varint,4,opt,name=rows_limit,json=rowsLimit" json:"rows_limit,omitempty"` -} - -func (m *ReadRowsRequest) Reset() { *m = ReadRowsRequest{} } -func (m *ReadRowsRequest) String() string { return proto.CompactTextString(m) } -func (*ReadRowsRequest) ProtoMessage() {} -func (*ReadRowsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ReadRowsRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *ReadRowsRequest) GetAppProfileId() string { - if m != nil { - return m.AppProfileId - } - return "" -} - -func (m *ReadRowsRequest) GetRows() *RowSet { - if m != nil { - return m.Rows - } - return nil -} - -func (m *ReadRowsRequest) GetFilter() *RowFilter { - if m != nil { - return m.Filter - } - return nil -} - -func (m *ReadRowsRequest) GetRowsLimit() int64 { - if m != nil { - return m.RowsLimit - } - return 0 -} - -// Response message for Bigtable.ReadRows. -type ReadRowsResponse struct { - Chunks []*ReadRowsResponse_CellChunk `protobuf:"bytes,1,rep,name=chunks" json:"chunks,omitempty"` - // Optionally the server might return the row key of the last row it - // has scanned. The client can use this to construct a more - // efficient retry request if needed: any row keys or portions of - // ranges less than this row key can be dropped from the request. - // This is primarily useful for cases where the server has read a - // lot of data that was filtered out since the last committed row - // key, allowing the client to skip that work on a retry. - LastScannedRowKey []byte `protobuf:"bytes,2,opt,name=last_scanned_row_key,json=lastScannedRowKey,proto3" json:"last_scanned_row_key,omitempty"` -} - -func (m *ReadRowsResponse) Reset() { *m = ReadRowsResponse{} } -func (m *ReadRowsResponse) String() string { return proto.CompactTextString(m) } -func (*ReadRowsResponse) ProtoMessage() {} -func (*ReadRowsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ReadRowsResponse) GetChunks() []*ReadRowsResponse_CellChunk { - if m != nil { - return m.Chunks - } - return nil -} - -func (m *ReadRowsResponse) GetLastScannedRowKey() []byte { - if m != nil { - return m.LastScannedRowKey - } - return nil -} - -// Specifies a piece of a row's contents returned as part of the read -// response stream. -type ReadRowsResponse_CellChunk struct { - // The row key for this chunk of data. If the row key is empty, - // this CellChunk is a continuation of the same row as the previous - // CellChunk in the response stream, even if that CellChunk was in a - // previous ReadRowsResponse message. - RowKey []byte `protobuf:"bytes,1,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // The column family name for this chunk of data. If this message - // is not present this CellChunk is a continuation of the same column - // family as the previous CellChunk. The empty string can occur as a - // column family name in a response so clients must check - // explicitly for the presence of this message, not just for - // `family_name.value` being non-empty. - FamilyName *google_protobuf1.StringValue `protobuf:"bytes,2,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The column qualifier for this chunk of data. If this message - // is not present, this CellChunk is a continuation of the same column - // as the previous CellChunk. Column qualifiers may be empty so - // clients must check for the presence of this message, not just - // for `qualifier.value` being non-empty. - Qualifier *google_protobuf1.BytesValue `protobuf:"bytes,3,opt,name=qualifier" json:"qualifier,omitempty"` - // The cell's stored timestamp, which also uniquely identifies it - // within its column. Values are always expressed in - // microseconds, but individual tables may set a coarser - // granularity to further restrict the allowed values. For - // example, a table which specifies millisecond granularity will - // only allow values of `timestamp_micros` which are multiples of - // 1000. Timestamps are only set in the first CellChunk per cell - // (for cells split into multiple chunks). - TimestampMicros int64 `protobuf:"varint,4,opt,name=timestamp_micros,json=timestampMicros" json:"timestamp_micros,omitempty"` - // Labels applied to the cell by a - // [RowFilter][google.bigtable.v2.RowFilter]. Labels are only set - // on the first CellChunk per cell. - Labels []string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty"` - // The value stored in the cell. Cell values can be split across - // multiple CellChunks. In that case only the value field will be - // set in CellChunks after the first: the timestamp and labels - // will only be present in the first CellChunk, even if the first - // CellChunk came in a previous ReadRowsResponse. - Value []byte `protobuf:"bytes,6,opt,name=value,proto3" json:"value,omitempty"` - // If this CellChunk is part of a chunked cell value and this is - // not the final chunk of that cell, value_size will be set to the - // total length of the cell value. The client can use this size - // to pre-allocate memory to hold the full cell value. - ValueSize int32 `protobuf:"varint,7,opt,name=value_size,json=valueSize" json:"value_size,omitempty"` - // Types that are valid to be assigned to RowStatus: - // *ReadRowsResponse_CellChunk_ResetRow - // *ReadRowsResponse_CellChunk_CommitRow - RowStatus isReadRowsResponse_CellChunk_RowStatus `protobuf_oneof:"row_status"` -} - -func (m *ReadRowsResponse_CellChunk) Reset() { *m = ReadRowsResponse_CellChunk{} } -func (m *ReadRowsResponse_CellChunk) String() string { return proto.CompactTextString(m) } -func (*ReadRowsResponse_CellChunk) ProtoMessage() {} -func (*ReadRowsResponse_CellChunk) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -type isReadRowsResponse_CellChunk_RowStatus interface { - isReadRowsResponse_CellChunk_RowStatus() -} - -type ReadRowsResponse_CellChunk_ResetRow struct { - ResetRow bool `protobuf:"varint,8,opt,name=reset_row,json=resetRow,oneof"` -} -type ReadRowsResponse_CellChunk_CommitRow struct { - CommitRow bool `protobuf:"varint,9,opt,name=commit_row,json=commitRow,oneof"` -} - -func (*ReadRowsResponse_CellChunk_ResetRow) isReadRowsResponse_CellChunk_RowStatus() {} -func (*ReadRowsResponse_CellChunk_CommitRow) isReadRowsResponse_CellChunk_RowStatus() {} - -func (m *ReadRowsResponse_CellChunk) GetRowStatus() isReadRowsResponse_CellChunk_RowStatus { - if m != nil { - return m.RowStatus - } - return nil -} - -func (m *ReadRowsResponse_CellChunk) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *ReadRowsResponse_CellChunk) GetFamilyName() *google_protobuf1.StringValue { - if m != nil { - return m.FamilyName - } - return nil -} - -func (m *ReadRowsResponse_CellChunk) GetQualifier() *google_protobuf1.BytesValue { - if m != nil { - return m.Qualifier - } - return nil -} - -func (m *ReadRowsResponse_CellChunk) GetTimestampMicros() int64 { - if m != nil { - return m.TimestampMicros - } - return 0 -} - -func (m *ReadRowsResponse_CellChunk) GetLabels() []string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *ReadRowsResponse_CellChunk) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func (m *ReadRowsResponse_CellChunk) GetValueSize() int32 { - if m != nil { - return m.ValueSize - } - return 0 -} - -func (m *ReadRowsResponse_CellChunk) GetResetRow() bool { - if x, ok := m.GetRowStatus().(*ReadRowsResponse_CellChunk_ResetRow); ok { - return x.ResetRow - } - return false -} - -func (m *ReadRowsResponse_CellChunk) GetCommitRow() bool { - if x, ok := m.GetRowStatus().(*ReadRowsResponse_CellChunk_CommitRow); ok { - return x.CommitRow - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ReadRowsResponse_CellChunk) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ReadRowsResponse_CellChunk_OneofMarshaler, _ReadRowsResponse_CellChunk_OneofUnmarshaler, _ReadRowsResponse_CellChunk_OneofSizer, []interface{}{ - (*ReadRowsResponse_CellChunk_ResetRow)(nil), - (*ReadRowsResponse_CellChunk_CommitRow)(nil), - } -} - -func _ReadRowsResponse_CellChunk_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ReadRowsResponse_CellChunk) - // row_status - switch x := m.RowStatus.(type) { - case *ReadRowsResponse_CellChunk_ResetRow: - t := uint64(0) - if x.ResetRow { - t = 1 - } - b.EncodeVarint(8<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *ReadRowsResponse_CellChunk_CommitRow: - t := uint64(0) - if x.CommitRow { - t = 1 - } - b.EncodeVarint(9<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("ReadRowsResponse_CellChunk.RowStatus has unexpected type %T", x) - } - return nil -} - -func _ReadRowsResponse_CellChunk_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ReadRowsResponse_CellChunk) - switch tag { - case 8: // row_status.reset_row - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.RowStatus = &ReadRowsResponse_CellChunk_ResetRow{x != 0} - return true, err - case 9: // row_status.commit_row - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.RowStatus = &ReadRowsResponse_CellChunk_CommitRow{x != 0} - return true, err - default: - return false, nil - } -} - -func _ReadRowsResponse_CellChunk_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ReadRowsResponse_CellChunk) - // row_status - switch x := m.RowStatus.(type) { - case *ReadRowsResponse_CellChunk_ResetRow: - n += proto.SizeVarint(8<<3 | proto.WireVarint) - n += 1 - case *ReadRowsResponse_CellChunk_CommitRow: - n += proto.SizeVarint(9<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Request message for Bigtable.SampleRowKeys. -type SampleRowKeysRequest struct { - // The unique name of the table from which to sample row keys. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // This value specifies routing for replication. If not specified, the - // "default" application profile will be used. - AppProfileId string `protobuf:"bytes,2,opt,name=app_profile_id,json=appProfileId" json:"app_profile_id,omitempty"` -} - -func (m *SampleRowKeysRequest) Reset() { *m = SampleRowKeysRequest{} } -func (m *SampleRowKeysRequest) String() string { return proto.CompactTextString(m) } -func (*SampleRowKeysRequest) ProtoMessage() {} -func (*SampleRowKeysRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *SampleRowKeysRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *SampleRowKeysRequest) GetAppProfileId() string { - if m != nil { - return m.AppProfileId - } - return "" -} - -// Response message for Bigtable.SampleRowKeys. -type SampleRowKeysResponse struct { - // Sorted streamed sequence of sample row keys in the table. The table might - // have contents before the first row key in the list and after the last one, - // but a key containing the empty string indicates "end of table" and will be - // the last response given, if present. - // Note that row keys in this list may not have ever been written to or read - // from, and users should therefore not make any assumptions about the row key - // structure that are specific to their use case. - RowKey []byte `protobuf:"bytes,1,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // Approximate total storage space used by all rows in the table which precede - // `row_key`. Buffering the contents of all rows between two subsequent - // samples would require space roughly equal to the difference in their - // `offset_bytes` fields. - OffsetBytes int64 `protobuf:"varint,2,opt,name=offset_bytes,json=offsetBytes" json:"offset_bytes,omitempty"` -} - -func (m *SampleRowKeysResponse) Reset() { *m = SampleRowKeysResponse{} } -func (m *SampleRowKeysResponse) String() string { return proto.CompactTextString(m) } -func (*SampleRowKeysResponse) ProtoMessage() {} -func (*SampleRowKeysResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SampleRowKeysResponse) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *SampleRowKeysResponse) GetOffsetBytes() int64 { - if m != nil { - return m.OffsetBytes - } - return 0 -} - -// Request message for Bigtable.MutateRow. -type MutateRowRequest struct { - // The unique name of the table to which the mutation should be applied. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // This value specifies routing for replication. If not specified, the - // "default" application profile will be used. - AppProfileId string `protobuf:"bytes,4,opt,name=app_profile_id,json=appProfileId" json:"app_profile_id,omitempty"` - // The key of the row to which the mutation should be applied. - RowKey []byte `protobuf:"bytes,2,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // Changes to be atomically applied to the specified row. Entries are applied - // in order, meaning that earlier mutations can be masked by later ones. - // Must contain at least one entry and at most 100000. - Mutations []*Mutation `protobuf:"bytes,3,rep,name=mutations" json:"mutations,omitempty"` -} - -func (m *MutateRowRequest) Reset() { *m = MutateRowRequest{} } -func (m *MutateRowRequest) String() string { return proto.CompactTextString(m) } -func (*MutateRowRequest) ProtoMessage() {} -func (*MutateRowRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *MutateRowRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *MutateRowRequest) GetAppProfileId() string { - if m != nil { - return m.AppProfileId - } - return "" -} - -func (m *MutateRowRequest) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *MutateRowRequest) GetMutations() []*Mutation { - if m != nil { - return m.Mutations - } - return nil -} - -// Response message for Bigtable.MutateRow. -type MutateRowResponse struct { -} - -func (m *MutateRowResponse) Reset() { *m = MutateRowResponse{} } -func (m *MutateRowResponse) String() string { return proto.CompactTextString(m) } -func (*MutateRowResponse) ProtoMessage() {} -func (*MutateRowResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -// Request message for BigtableService.MutateRows. -type MutateRowsRequest struct { - // The unique name of the table to which the mutations should be applied. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // This value specifies routing for replication. If not specified, the - // "default" application profile will be used. - AppProfileId string `protobuf:"bytes,3,opt,name=app_profile_id,json=appProfileId" json:"app_profile_id,omitempty"` - // The row keys and corresponding mutations to be applied in bulk. - // Each entry is applied as an atomic mutation, but the entries may be - // applied in arbitrary order (even between entries for the same row). - // At least one entry must be specified, and in total the entries can - // contain at most 100000 mutations. - Entries []*MutateRowsRequest_Entry `protobuf:"bytes,2,rep,name=entries" json:"entries,omitempty"` -} - -func (m *MutateRowsRequest) Reset() { *m = MutateRowsRequest{} } -func (m *MutateRowsRequest) String() string { return proto.CompactTextString(m) } -func (*MutateRowsRequest) ProtoMessage() {} -func (*MutateRowsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *MutateRowsRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *MutateRowsRequest) GetAppProfileId() string { - if m != nil { - return m.AppProfileId - } - return "" -} - -func (m *MutateRowsRequest) GetEntries() []*MutateRowsRequest_Entry { - if m != nil { - return m.Entries - } - return nil -} - -type MutateRowsRequest_Entry struct { - // The key of the row to which the `mutations` should be applied. - RowKey []byte `protobuf:"bytes,1,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // Changes to be atomically applied to the specified row. Mutations are - // applied in order, meaning that earlier mutations can be masked by - // later ones. - // You must specify at least one mutation. - Mutations []*Mutation `protobuf:"bytes,2,rep,name=mutations" json:"mutations,omitempty"` -} - -func (m *MutateRowsRequest_Entry) Reset() { *m = MutateRowsRequest_Entry{} } -func (m *MutateRowsRequest_Entry) String() string { return proto.CompactTextString(m) } -func (*MutateRowsRequest_Entry) ProtoMessage() {} -func (*MutateRowsRequest_Entry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6, 0} } - -func (m *MutateRowsRequest_Entry) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *MutateRowsRequest_Entry) GetMutations() []*Mutation { - if m != nil { - return m.Mutations - } - return nil -} - -// Response message for BigtableService.MutateRows. -type MutateRowsResponse struct { - // One or more results for Entries from the batch request. - Entries []*MutateRowsResponse_Entry `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty"` -} - -func (m *MutateRowsResponse) Reset() { *m = MutateRowsResponse{} } -func (m *MutateRowsResponse) String() string { return proto.CompactTextString(m) } -func (*MutateRowsResponse) ProtoMessage() {} -func (*MutateRowsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *MutateRowsResponse) GetEntries() []*MutateRowsResponse_Entry { - if m != nil { - return m.Entries - } - return nil -} - -type MutateRowsResponse_Entry struct { - // The index into the original request's `entries` list of the Entry - // for which a result is being reported. - Index int64 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` - // The result of the request Entry identified by `index`. - // Depending on how requests are batched during execution, it is possible - // for one Entry to fail due to an error with another Entry. In the event - // that this occurs, the same error will be reported for both entries. - Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` -} - -func (m *MutateRowsResponse_Entry) Reset() { *m = MutateRowsResponse_Entry{} } -func (m *MutateRowsResponse_Entry) String() string { return proto.CompactTextString(m) } -func (*MutateRowsResponse_Entry) ProtoMessage() {} -func (*MutateRowsResponse_Entry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -func (m *MutateRowsResponse_Entry) GetIndex() int64 { - if m != nil { - return m.Index - } - return 0 -} - -func (m *MutateRowsResponse_Entry) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -// Request message for Bigtable.CheckAndMutateRow. -type CheckAndMutateRowRequest struct { - // The unique name of the table to which the conditional mutation should be - // applied. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // This value specifies routing for replication. If not specified, the - // "default" application profile will be used. - AppProfileId string `protobuf:"bytes,7,opt,name=app_profile_id,json=appProfileId" json:"app_profile_id,omitempty"` - // The key of the row to which the conditional mutation should be applied. - RowKey []byte `protobuf:"bytes,2,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // The filter to be applied to the contents of the specified row. Depending - // on whether or not any results are yielded, either `true_mutations` or - // `false_mutations` will be executed. If unset, checks that the row contains - // any values at all. - PredicateFilter *RowFilter `protobuf:"bytes,6,opt,name=predicate_filter,json=predicateFilter" json:"predicate_filter,omitempty"` - // Changes to be atomically applied to the specified row if `predicate_filter` - // yields at least one cell when applied to `row_key`. Entries are applied in - // order, meaning that earlier mutations can be masked by later ones. - // Must contain at least one entry if `false_mutations` is empty, and at most - // 100000. - TrueMutations []*Mutation `protobuf:"bytes,4,rep,name=true_mutations,json=trueMutations" json:"true_mutations,omitempty"` - // Changes to be atomically applied to the specified row if `predicate_filter` - // does not yield any cells when applied to `row_key`. Entries are applied in - // order, meaning that earlier mutations can be masked by later ones. - // Must contain at least one entry if `true_mutations` is empty, and at most - // 100000. - FalseMutations []*Mutation `protobuf:"bytes,5,rep,name=false_mutations,json=falseMutations" json:"false_mutations,omitempty"` -} - -func (m *CheckAndMutateRowRequest) Reset() { *m = CheckAndMutateRowRequest{} } -func (m *CheckAndMutateRowRequest) String() string { return proto.CompactTextString(m) } -func (*CheckAndMutateRowRequest) ProtoMessage() {} -func (*CheckAndMutateRowRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *CheckAndMutateRowRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *CheckAndMutateRowRequest) GetAppProfileId() string { - if m != nil { - return m.AppProfileId - } - return "" -} - -func (m *CheckAndMutateRowRequest) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *CheckAndMutateRowRequest) GetPredicateFilter() *RowFilter { - if m != nil { - return m.PredicateFilter - } - return nil -} - -func (m *CheckAndMutateRowRequest) GetTrueMutations() []*Mutation { - if m != nil { - return m.TrueMutations - } - return nil -} - -func (m *CheckAndMutateRowRequest) GetFalseMutations() []*Mutation { - if m != nil { - return m.FalseMutations - } - return nil -} - -// Response message for Bigtable.CheckAndMutateRow. -type CheckAndMutateRowResponse struct { - // Whether or not the request's `predicate_filter` yielded any results for - // the specified row. - PredicateMatched bool `protobuf:"varint,1,opt,name=predicate_matched,json=predicateMatched" json:"predicate_matched,omitempty"` -} - -func (m *CheckAndMutateRowResponse) Reset() { *m = CheckAndMutateRowResponse{} } -func (m *CheckAndMutateRowResponse) String() string { return proto.CompactTextString(m) } -func (*CheckAndMutateRowResponse) ProtoMessage() {} -func (*CheckAndMutateRowResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *CheckAndMutateRowResponse) GetPredicateMatched() bool { - if m != nil { - return m.PredicateMatched - } - return false -} - -// Request message for Bigtable.ReadModifyWriteRow. -type ReadModifyWriteRowRequest struct { - // The unique name of the table to which the read/modify/write rules should be - // applied. - // Values are of the form - // `projects/<project>/instances/<instance>/tables/<table>`. - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // This is a private alpha release of Cloud Bigtable replication. This feature - // is not currently available to most Cloud Bigtable customers. This feature - // might be changed in backward-incompatible ways and is not recommended for - // production use. It is not subject to any SLA or deprecation policy. - // - // This value specifies routing for replication. If not specified, the - // "default" application profile will be used. - AppProfileId string `protobuf:"bytes,4,opt,name=app_profile_id,json=appProfileId" json:"app_profile_id,omitempty"` - // The key of the row to which the read/modify/write rules should be applied. - RowKey []byte `protobuf:"bytes,2,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"` - // Rules specifying how the specified row's contents are to be transformed - // into writes. Entries are applied in order, meaning that earlier rules will - // affect the results of later ones. - Rules []*ReadModifyWriteRule `protobuf:"bytes,3,rep,name=rules" json:"rules,omitempty"` -} - -func (m *ReadModifyWriteRowRequest) Reset() { *m = ReadModifyWriteRowRequest{} } -func (m *ReadModifyWriteRowRequest) String() string { return proto.CompactTextString(m) } -func (*ReadModifyWriteRowRequest) ProtoMessage() {} -func (*ReadModifyWriteRowRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *ReadModifyWriteRowRequest) GetTableName() string { - if m != nil { - return m.TableName - } - return "" -} - -func (m *ReadModifyWriteRowRequest) GetAppProfileId() string { - if m != nil { - return m.AppProfileId - } - return "" -} - -func (m *ReadModifyWriteRowRequest) GetRowKey() []byte { - if m != nil { - return m.RowKey - } - return nil -} - -func (m *ReadModifyWriteRowRequest) GetRules() []*ReadModifyWriteRule { - if m != nil { - return m.Rules - } - return nil -} - -// Response message for Bigtable.ReadModifyWriteRow. -type ReadModifyWriteRowResponse struct { - // A Row containing the new contents of all cells modified by the request. - Row *Row `protobuf:"bytes,1,opt,name=row" json:"row,omitempty"` -} - -func (m *ReadModifyWriteRowResponse) Reset() { *m = ReadModifyWriteRowResponse{} } -func (m *ReadModifyWriteRowResponse) String() string { return proto.CompactTextString(m) } -func (*ReadModifyWriteRowResponse) ProtoMessage() {} -func (*ReadModifyWriteRowResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ReadModifyWriteRowResponse) GetRow() *Row { - if m != nil { - return m.Row - } - return nil -} - -func init() { - proto.RegisterType((*ReadRowsRequest)(nil), "google.bigtable.v2.ReadRowsRequest") - proto.RegisterType((*ReadRowsResponse)(nil), "google.bigtable.v2.ReadRowsResponse") - proto.RegisterType((*ReadRowsResponse_CellChunk)(nil), "google.bigtable.v2.ReadRowsResponse.CellChunk") - proto.RegisterType((*SampleRowKeysRequest)(nil), "google.bigtable.v2.SampleRowKeysRequest") - proto.RegisterType((*SampleRowKeysResponse)(nil), "google.bigtable.v2.SampleRowKeysResponse") - proto.RegisterType((*MutateRowRequest)(nil), "google.bigtable.v2.MutateRowRequest") - proto.RegisterType((*MutateRowResponse)(nil), "google.bigtable.v2.MutateRowResponse") - proto.RegisterType((*MutateRowsRequest)(nil), "google.bigtable.v2.MutateRowsRequest") - proto.RegisterType((*MutateRowsRequest_Entry)(nil), "google.bigtable.v2.MutateRowsRequest.Entry") - proto.RegisterType((*MutateRowsResponse)(nil), "google.bigtable.v2.MutateRowsResponse") - proto.RegisterType((*MutateRowsResponse_Entry)(nil), "google.bigtable.v2.MutateRowsResponse.Entry") - proto.RegisterType((*CheckAndMutateRowRequest)(nil), "google.bigtable.v2.CheckAndMutateRowRequest") - proto.RegisterType((*CheckAndMutateRowResponse)(nil), "google.bigtable.v2.CheckAndMutateRowResponse") - proto.RegisterType((*ReadModifyWriteRowRequest)(nil), "google.bigtable.v2.ReadModifyWriteRowRequest") - proto.RegisterType((*ReadModifyWriteRowResponse)(nil), "google.bigtable.v2.ReadModifyWriteRowResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Bigtable service - -type BigtableClient interface { - // Streams back the contents of all requested rows in key order, optionally - // applying the same Reader filter to each. Depending on their size, - // rows and cells may be broken up across multiple responses, but - // atomicity of each row will still be preserved. See the - // ReadRowsResponse documentation for details. - ReadRows(ctx context.Context, in *ReadRowsRequest, opts ...grpc.CallOption) (Bigtable_ReadRowsClient, error) - // Returns a sample of row keys in the table. The returned row keys will - // delimit contiguous sections of the table of approximately equal size, - // which can be used to break up the data for distributed tasks like - // mapreduces. - SampleRowKeys(ctx context.Context, in *SampleRowKeysRequest, opts ...grpc.CallOption) (Bigtable_SampleRowKeysClient, error) - // Mutates a row atomically. Cells already present in the row are left - // unchanged unless explicitly changed by `mutation`. - MutateRow(ctx context.Context, in *MutateRowRequest, opts ...grpc.CallOption) (*MutateRowResponse, error) - // Mutates multiple rows in a batch. Each individual row is mutated - // atomically as in MutateRow, but the entire batch is not executed - // atomically. - MutateRows(ctx context.Context, in *MutateRowsRequest, opts ...grpc.CallOption) (Bigtable_MutateRowsClient, error) - // Mutates a row atomically based on the output of a predicate Reader filter. - CheckAndMutateRow(ctx context.Context, in *CheckAndMutateRowRequest, opts ...grpc.CallOption) (*CheckAndMutateRowResponse, error) - // Modifies a row atomically on the server. The method reads the latest - // existing timestamp and value from the specified columns and writes a new - // entry based on pre-defined read/modify/write rules. The new value for the - // timestamp is the greater of the existing timestamp or the current server - // time. The method returns the new contents of all modified cells. - ReadModifyWriteRow(ctx context.Context, in *ReadModifyWriteRowRequest, opts ...grpc.CallOption) (*ReadModifyWriteRowResponse, error) -} - -type bigtableClient struct { - cc *grpc.ClientConn -} - -func NewBigtableClient(cc *grpc.ClientConn) BigtableClient { - return &bigtableClient{cc} -} - -func (c *bigtableClient) ReadRows(ctx context.Context, in *ReadRowsRequest, opts ...grpc.CallOption) (Bigtable_ReadRowsClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Bigtable_serviceDesc.Streams[0], c.cc, "/google.bigtable.v2.Bigtable/ReadRows", opts...) - if err != nil { - return nil, err - } - x := &bigtableReadRowsClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Bigtable_ReadRowsClient interface { - Recv() (*ReadRowsResponse, error) - grpc.ClientStream -} - -type bigtableReadRowsClient struct { - grpc.ClientStream -} - -func (x *bigtableReadRowsClient) Recv() (*ReadRowsResponse, error) { - m := new(ReadRowsResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *bigtableClient) SampleRowKeys(ctx context.Context, in *SampleRowKeysRequest, opts ...grpc.CallOption) (Bigtable_SampleRowKeysClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Bigtable_serviceDesc.Streams[1], c.cc, "/google.bigtable.v2.Bigtable/SampleRowKeys", opts...) - if err != nil { - return nil, err - } - x := &bigtableSampleRowKeysClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Bigtable_SampleRowKeysClient interface { - Recv() (*SampleRowKeysResponse, error) - grpc.ClientStream -} - -type bigtableSampleRowKeysClient struct { - grpc.ClientStream -} - -func (x *bigtableSampleRowKeysClient) Recv() (*SampleRowKeysResponse, error) { - m := new(SampleRowKeysResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *bigtableClient) MutateRow(ctx context.Context, in *MutateRowRequest, opts ...grpc.CallOption) (*MutateRowResponse, error) { - out := new(MutateRowResponse) - err := grpc.Invoke(ctx, "/google.bigtable.v2.Bigtable/MutateRow", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableClient) MutateRows(ctx context.Context, in *MutateRowsRequest, opts ...grpc.CallOption) (Bigtable_MutateRowsClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Bigtable_serviceDesc.Streams[2], c.cc, "/google.bigtable.v2.Bigtable/MutateRows", opts...) - if err != nil { - return nil, err - } - x := &bigtableMutateRowsClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Bigtable_MutateRowsClient interface { - Recv() (*MutateRowsResponse, error) - grpc.ClientStream -} - -type bigtableMutateRowsClient struct { - grpc.ClientStream -} - -func (x *bigtableMutateRowsClient) Recv() (*MutateRowsResponse, error) { - m := new(MutateRowsResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *bigtableClient) CheckAndMutateRow(ctx context.Context, in *CheckAndMutateRowRequest, opts ...grpc.CallOption) (*CheckAndMutateRowResponse, error) { - out := new(CheckAndMutateRowResponse) - err := grpc.Invoke(ctx, "/google.bigtable.v2.Bigtable/CheckAndMutateRow", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *bigtableClient) ReadModifyWriteRow(ctx context.Context, in *ReadModifyWriteRowRequest, opts ...grpc.CallOption) (*ReadModifyWriteRowResponse, error) { - out := new(ReadModifyWriteRowResponse) - err := grpc.Invoke(ctx, "/google.bigtable.v2.Bigtable/ReadModifyWriteRow", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Bigtable service - -type BigtableServer interface { - // Streams back the contents of all requested rows in key order, optionally - // applying the same Reader filter to each. Depending on their size, - // rows and cells may be broken up across multiple responses, but - // atomicity of each row will still be preserved. See the - // ReadRowsResponse documentation for details. - ReadRows(*ReadRowsRequest, Bigtable_ReadRowsServer) error - // Returns a sample of row keys in the table. The returned row keys will - // delimit contiguous sections of the table of approximately equal size, - // which can be used to break up the data for distributed tasks like - // mapreduces. - SampleRowKeys(*SampleRowKeysRequest, Bigtable_SampleRowKeysServer) error - // Mutates a row atomically. Cells already present in the row are left - // unchanged unless explicitly changed by `mutation`. - MutateRow(context.Context, *MutateRowRequest) (*MutateRowResponse, error) - // Mutates multiple rows in a batch. Each individual row is mutated - // atomically as in MutateRow, but the entire batch is not executed - // atomically. - MutateRows(*MutateRowsRequest, Bigtable_MutateRowsServer) error - // Mutates a row atomically based on the output of a predicate Reader filter. - CheckAndMutateRow(context.Context, *CheckAndMutateRowRequest) (*CheckAndMutateRowResponse, error) - // Modifies a row atomically on the server. The method reads the latest - // existing timestamp and value from the specified columns and writes a new - // entry based on pre-defined read/modify/write rules. The new value for the - // timestamp is the greater of the existing timestamp or the current server - // time. The method returns the new contents of all modified cells. - ReadModifyWriteRow(context.Context, *ReadModifyWriteRowRequest) (*ReadModifyWriteRowResponse, error) -} - -func RegisterBigtableServer(s *grpc.Server, srv BigtableServer) { - s.RegisterService(&_Bigtable_serviceDesc, srv) -} - -func _Bigtable_ReadRows_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ReadRowsRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(BigtableServer).ReadRows(m, &bigtableReadRowsServer{stream}) -} - -type Bigtable_ReadRowsServer interface { - Send(*ReadRowsResponse) error - grpc.ServerStream -} - -type bigtableReadRowsServer struct { - grpc.ServerStream -} - -func (x *bigtableReadRowsServer) Send(m *ReadRowsResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Bigtable_SampleRowKeys_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SampleRowKeysRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(BigtableServer).SampleRowKeys(m, &bigtableSampleRowKeysServer{stream}) -} - -type Bigtable_SampleRowKeysServer interface { - Send(*SampleRowKeysResponse) error - grpc.ServerStream -} - -type bigtableSampleRowKeysServer struct { - grpc.ServerStream -} - -func (x *bigtableSampleRowKeysServer) Send(m *SampleRowKeysResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Bigtable_MutateRow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MutateRowRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableServer).MutateRow(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.v2.Bigtable/MutateRow", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableServer).MutateRow(ctx, req.(*MutateRowRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Bigtable_MutateRows_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(MutateRowsRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(BigtableServer).MutateRows(m, &bigtableMutateRowsServer{stream}) -} - -type Bigtable_MutateRowsServer interface { - Send(*MutateRowsResponse) error - grpc.ServerStream -} - -type bigtableMutateRowsServer struct { - grpc.ServerStream -} - -func (x *bigtableMutateRowsServer) Send(m *MutateRowsResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Bigtable_CheckAndMutateRow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CheckAndMutateRowRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableServer).CheckAndMutateRow(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.v2.Bigtable/CheckAndMutateRow", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableServer).CheckAndMutateRow(ctx, req.(*CheckAndMutateRowRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Bigtable_ReadModifyWriteRow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReadModifyWriteRowRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BigtableServer).ReadModifyWriteRow(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bigtable.v2.Bigtable/ReadModifyWriteRow", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BigtableServer).ReadModifyWriteRow(ctx, req.(*ReadModifyWriteRowRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Bigtable_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.bigtable.v2.Bigtable", - HandlerType: (*BigtableServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "MutateRow", - Handler: _Bigtable_MutateRow_Handler, - }, - { - MethodName: "CheckAndMutateRow", - Handler: _Bigtable_CheckAndMutateRow_Handler, - }, - { - MethodName: "ReadModifyWriteRow", - Handler: _Bigtable_ReadModifyWriteRow_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "ReadRows", - Handler: _Bigtable_ReadRows_Handler, - ServerStreams: true, - }, - { - StreamName: "SampleRowKeys", - Handler: _Bigtable_SampleRowKeys_Handler, - ServerStreams: true, - }, - { - StreamName: "MutateRows", - Handler: _Bigtable_MutateRows_Handler, - ServerStreams: true, - }, - }, - Metadata: "google/bigtable/v2/bigtable.proto", -} - -func init() { proto.RegisterFile("google/bigtable/v2/bigtable.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1210 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0x66, 0xec, 0xd8, 0xf1, 0xbe, 0xa4, 0x4d, 0x32, 0x84, 0x76, 0x6b, 0x5a, 0x70, 0x97, 0x16, - 0xdc, 0x94, 0xae, 0x2b, 0x23, 0x0e, 0x75, 0xd5, 0x02, 0x09, 0x69, 0x53, 0x41, 0xaa, 0x6a, 0x2c, - 0x15, 0x09, 0x22, 0xad, 0xc6, 0xeb, 0xb1, 0x3b, 0x74, 0x77, 0x67, 0xbb, 0x3b, 0x5b, 0xe3, 0x22, - 0x2e, 0xfc, 0x05, 0x8e, 0x08, 0x71, 0x42, 0x48, 0x08, 0x38, 0x73, 0xe3, 0xc0, 0x8d, 0x03, 0x17, - 0xae, 0x1c, 0xfb, 0x0b, 0xb8, 0x23, 0xa1, 0x9d, 0x9d, 0xb5, 0x9d, 0xc4, 0x6e, 0x9d, 0x20, 0x71, - 0xdb, 0x7d, 0xef, 0x7d, 0x6f, 0xbf, 0xf7, 0xbd, 0x37, 0x6f, 0x6c, 0x38, 0xdf, 0x17, 0xa2, 0xef, - 0xb1, 0x46, 0x87, 0xf7, 0x25, 0xed, 0x78, 0xac, 0xf1, 0xb8, 0x39, 0x7a, 0xb6, 0xc3, 0x48, 0x48, - 0x81, 0x71, 0x16, 0x62, 0x8f, 0xcc, 0x8f, 0x9b, 0xd5, 0xb3, 0x1a, 0x46, 0x43, 0xde, 0xa0, 0x41, - 0x20, 0x24, 0x95, 0x5c, 0x04, 0x71, 0x86, 0xa8, 0x9e, 0x9b, 0x92, 0xb4, 0x4b, 0x25, 0xd5, 0xee, - 0x57, 0xb4, 0x5b, 0xbd, 0x75, 0x92, 0x5e, 0x63, 0x10, 0xd1, 0x30, 0x64, 0x51, 0x0e, 0x3f, 0xad, - 0xfd, 0x51, 0xe8, 0x36, 0x62, 0x49, 0x65, 0xa2, 0x1d, 0xd6, 0x5f, 0x08, 0x56, 0x08, 0xa3, 0x5d, - 0x22, 0x06, 0x31, 0x61, 0x8f, 0x12, 0x16, 0x4b, 0x7c, 0x0e, 0x40, 0x7d, 0xc3, 0x09, 0xa8, 0xcf, - 0x4c, 0x54, 0x43, 0x75, 0x83, 0x18, 0xca, 0x72, 0x97, 0xfa, 0x0c, 0x5f, 0x80, 0x93, 0x34, 0x0c, - 0x9d, 0x30, 0x12, 0x3d, 0xee, 0x31, 0x87, 0x77, 0xcd, 0x92, 0x0a, 0x59, 0xa6, 0x61, 0x78, 0x2f, - 0x33, 0xde, 0xe9, 0x62, 0x1b, 0x16, 0x22, 0x31, 0x88, 0xcd, 0x42, 0x0d, 0xd5, 0x97, 0x9a, 0x55, - 0xfb, 0x70, 0xc5, 0x36, 0x11, 0x83, 0x36, 0x93, 0x44, 0xc5, 0xe1, 0xb7, 0xa1, 0xdc, 0xe3, 0x9e, - 0x64, 0x91, 0x59, 0x54, 0x88, 0x73, 0x33, 0x10, 0xb7, 0x54, 0x10, 0xd1, 0xc1, 0x29, 0xd7, 0x14, - 0xee, 0x78, 0xdc, 0xe7, 0xd2, 0x5c, 0xa8, 0xa1, 0x7a, 0x91, 0x18, 0xa9, 0xe5, 0xc3, 0xd4, 0x60, - 0xfd, 0x5d, 0x84, 0xd5, 0x71, 0x79, 0x71, 0x28, 0x82, 0x98, 0xe1, 0x5b, 0x50, 0x76, 0x1f, 0x24, - 0xc1, 0xc3, 0xd8, 0x44, 0xb5, 0x62, 0x7d, 0xa9, 0x69, 0x4f, 0xfd, 0xd4, 0x01, 0x94, 0xbd, 0xc5, - 0x3c, 0x6f, 0x2b, 0x85, 0x11, 0x8d, 0xc6, 0x0d, 0x58, 0xf7, 0x68, 0x2c, 0x9d, 0xd8, 0xa5, 0x41, - 0xc0, 0xba, 0x4e, 0x24, 0x06, 0xce, 0x43, 0x36, 0x54, 0x25, 0x2f, 0x93, 0xb5, 0xd4, 0xd7, 0xce, - 0x5c, 0x44, 0x0c, 0x3e, 0x60, 0xc3, 0xea, 0xd3, 0x02, 0x18, 0xa3, 0x34, 0xf8, 0x34, 0x2c, 0xe6, - 0x08, 0xa4, 0x10, 0xe5, 0x48, 0x85, 0xe1, 0x1b, 0xb0, 0xd4, 0xa3, 0x3e, 0xf7, 0x86, 0x59, 0x03, - 0x32, 0x05, 0xcf, 0xe6, 0x24, 0xf3, 0x16, 0xdb, 0x6d, 0x19, 0xf1, 0xa0, 0x7f, 0x9f, 0x7a, 0x09, - 0x23, 0x90, 0x01, 0x54, 0x7f, 0xae, 0x81, 0xf1, 0x28, 0xa1, 0x1e, 0xef, 0xf1, 0x91, 0x98, 0x2f, - 0x1f, 0x02, 0x6f, 0x0e, 0x25, 0x8b, 0x33, 0xec, 0x38, 0x1a, 0x5f, 0x82, 0x55, 0xc9, 0x7d, 0x16, - 0x4b, 0xea, 0x87, 0x8e, 0xcf, 0xdd, 0x48, 0xc4, 0x5a, 0xd3, 0x95, 0x91, 0x7d, 0x57, 0x99, 0xf1, - 0x29, 0x28, 0x7b, 0xb4, 0xc3, 0xbc, 0xd8, 0x2c, 0xd5, 0x8a, 0x75, 0x83, 0xe8, 0x37, 0xbc, 0x0e, - 0xa5, 0xc7, 0x69, 0x5a, 0xb3, 0xac, 0x6a, 0xca, 0x5e, 0xd2, 0x36, 0xa9, 0x07, 0x27, 0xe6, 0x4f, - 0x98, 0xb9, 0x58, 0x43, 0xf5, 0x12, 0x31, 0x94, 0xa5, 0xcd, 0x9f, 0xa4, 0x6e, 0x23, 0x62, 0x31, - 0x93, 0xa9, 0x84, 0x66, 0xa5, 0x86, 0xea, 0x95, 0x9d, 0x17, 0x48, 0x45, 0x99, 0x88, 0x18, 0xe0, - 0x57, 0x01, 0x5c, 0xe1, 0xfb, 0x3c, 0xf3, 0x1b, 0xda, 0x6f, 0x64, 0x36, 0x22, 0x06, 0x9b, 0xcb, - 0x6a, 0x0a, 0x9c, 0x6c, 0xb2, 0xad, 0x4f, 0x60, 0xbd, 0x4d, 0xfd, 0xd0, 0x63, 0x99, 0xec, 0xc7, - 0x9f, 0xeb, 0xc2, 0xe1, 0xb9, 0xb6, 0xda, 0xf0, 0xd2, 0x81, 0xe4, 0x7a, 0xaa, 0x66, 0xb6, 0xf3, - 0x3c, 0x2c, 0x8b, 0x5e, 0x2f, 0xad, 0xae, 0x93, 0x8a, 0xae, 0xb2, 0x16, 0xc9, 0x52, 0x66, 0x53, - 0x7d, 0xb0, 0x7e, 0x44, 0xb0, 0xba, 0x9b, 0x48, 0x2a, 0xd3, 0xac, 0xc7, 0xa6, 0xbb, 0x30, 0xe5, - 0x18, 0x4e, 0xb0, 0x2a, 0xec, 0x63, 0xd5, 0x02, 0xc3, 0x4f, 0xf4, 0x8e, 0x31, 0x8b, 0xea, 0x1c, - 0x9c, 0x9d, 0x76, 0x0e, 0x76, 0x75, 0x10, 0x19, 0x87, 0x5b, 0x2f, 0xc2, 0xda, 0x04, 0xdb, 0xac, - 0x7e, 0xeb, 0x1f, 0x34, 0x61, 0x3d, 0xbe, 0xe6, 0xc5, 0x29, 0x45, 0x6c, 0xc3, 0x22, 0x0b, 0x64, - 0xc4, 0x95, 0x78, 0x29, 0xd3, 0xcb, 0x33, 0x99, 0x4e, 0x7e, 0xdc, 0xde, 0x0e, 0x64, 0x34, 0x24, - 0x39, 0xb6, 0xba, 0x07, 0x25, 0x65, 0x99, 0xdd, 0xaa, 0x7d, 0xa2, 0x14, 0x8e, 0x26, 0xca, 0xf7, - 0x08, 0xf0, 0x24, 0x85, 0xd1, 0xb2, 0x19, 0x71, 0xcf, 0xb6, 0xcd, 0x9b, 0xcf, 0xe3, 0xae, 0xf7, - 0xcd, 0x01, 0xf2, 0x77, 0x72, 0xf2, 0xeb, 0x50, 0xe2, 0x41, 0x97, 0x7d, 0xa6, 0xa8, 0x17, 0x49, - 0xf6, 0x82, 0x37, 0xa0, 0x9c, 0x4d, 0xbf, 0x5e, 0x17, 0x38, 0xff, 0x4a, 0x14, 0xba, 0x76, 0x5b, - 0x79, 0x88, 0x8e, 0xb0, 0xfe, 0x28, 0x80, 0xb9, 0xf5, 0x80, 0xb9, 0x0f, 0xdf, 0x0b, 0xba, 0xff, - 0x7d, 0xea, 0x16, 0x8f, 0x32, 0x75, 0x3b, 0xb0, 0x1a, 0x46, 0xac, 0xcb, 0x5d, 0x2a, 0x99, 0xa3, - 0xf7, 0x7d, 0x79, 0x9e, 0x7d, 0xbf, 0x32, 0x82, 0x65, 0x06, 0xbc, 0x05, 0x27, 0x65, 0x94, 0x30, - 0x67, 0xdc, 0xaf, 0x85, 0x39, 0xfa, 0x75, 0x22, 0xc5, 0xe4, 0x6f, 0x31, 0xde, 0x86, 0x95, 0x1e, - 0xf5, 0xe2, 0xc9, 0x2c, 0xa5, 0x39, 0xb2, 0x9c, 0x54, 0xa0, 0x51, 0x1a, 0x6b, 0x07, 0xce, 0x4c, - 0xd1, 0x53, 0x0f, 0xc0, 0x65, 0x58, 0x1b, 0x97, 0xec, 0x53, 0xe9, 0x3e, 0x60, 0x5d, 0xa5, 0x6b, - 0x85, 0x8c, 0xb5, 0xd8, 0xcd, 0xec, 0xd6, 0x2f, 0x08, 0xce, 0xa4, 0x37, 0xcf, 0xae, 0xe8, 0xf2, - 0xde, 0xf0, 0xa3, 0x88, 0xff, 0x8f, 0x1b, 0xe1, 0x06, 0x94, 0xa2, 0xc4, 0x63, 0xf9, 0x36, 0x78, - 0x63, 0xd6, 0xad, 0x38, 0xc9, 0x2d, 0xf1, 0x18, 0xc9, 0x50, 0xd6, 0x6d, 0xa8, 0x4e, 0x63, 0xae, - 0x55, 0xb8, 0x04, 0xc5, 0x74, 0x77, 0x23, 0xd5, 0xeb, 0xd3, 0x33, 0x7a, 0x4d, 0xd2, 0x98, 0xe6, - 0x4f, 0x15, 0xa8, 0x6c, 0x6a, 0x07, 0xfe, 0x06, 0x41, 0x25, 0xbf, 0x8a, 0xf1, 0x6b, 0xcf, 0xbe, - 0xa8, 0x95, 0x48, 0xd5, 0x0b, 0xf3, 0xdc, 0xe6, 0xd6, 0xfb, 0x5f, 0xfe, 0xf9, 0xf4, 0xab, 0xc2, - 0x4d, 0xeb, 0x5a, 0xfa, 0x43, 0xea, 0xf3, 0xb1, 0xaa, 0x37, 0xc2, 0x48, 0x7c, 0xca, 0x5c, 0x19, - 0x37, 0x36, 0x1a, 0x3c, 0x88, 0x25, 0x0d, 0x5c, 0x96, 0x3e, 0xab, 0x88, 0xb8, 0xb1, 0xf1, 0x45, - 0x2b, 0xd2, 0xa9, 0x5a, 0x68, 0xe3, 0x2a, 0xc2, 0x3f, 0x23, 0x38, 0xb1, 0xef, 0x3e, 0xc0, 0xf5, - 0x69, 0xdf, 0x9f, 0x76, 0x1f, 0x55, 0x2f, 0xcd, 0x11, 0xa9, 0xe9, 0xde, 0x52, 0x74, 0xdf, 0xc5, - 0x37, 0x8f, 0x4c, 0x37, 0x9e, 0xcc, 0x77, 0x15, 0xe1, 0x6f, 0x11, 0x18, 0xa3, 0x21, 0xc5, 0x17, - 0x9e, 0xb9, 0x8c, 0x72, 0xa2, 0x17, 0x9f, 0x13, 0xa5, 0x49, 0x6e, 0x2b, 0x92, 0xef, 0x58, 0xad, - 0x23, 0x93, 0xf4, 0xf3, 0x5c, 0x2d, 0xb4, 0x81, 0xbf, 0x43, 0x00, 0xe3, 0x7d, 0x88, 0x2f, 0xce, - 0xb5, 0xeb, 0xab, 0xaf, 0xcf, 0xb7, 0x56, 0x73, 0x25, 0xad, 0xeb, 0xc7, 0x27, 0xa9, 0x5b, 0xff, - 0x2b, 0x82, 0xb5, 0x43, 0xc7, 0x1e, 0x4f, 0x5d, 0xef, 0xb3, 0xb6, 0x6d, 0xf5, 0xca, 0x9c, 0xd1, - 0x9a, 0xfc, 0xae, 0x22, 0x7f, 0xdb, 0xda, 0x3c, 0x32, 0x79, 0xf7, 0x60, 0xce, 0x54, 0xe9, 0xdf, - 0x10, 0xe0, 0xc3, 0x67, 0x16, 0x5f, 0x99, 0xe7, 0xe4, 0x8f, 0x6b, 0xb0, 0xe7, 0x0d, 0xd7, 0x45, - 0xdc, 0x55, 0x45, 0xec, 0x58, 0x5b, 0xc7, 0x3a, 0x7a, 0xfb, 0x93, 0xb6, 0xd0, 0xc6, 0xe6, 0xd7, - 0x08, 0x4e, 0xb9, 0xc2, 0x9f, 0xc2, 0x62, 0xf3, 0x44, 0xbe, 0x47, 0xee, 0xa5, 0xbf, 0x7b, 0xef, - 0xa1, 0x8f, 0x5b, 0x3a, 0xa8, 0x2f, 0x3c, 0x1a, 0xf4, 0x6d, 0x11, 0xf5, 0x1b, 0x7d, 0x16, 0xa8, - 0x5f, 0xc5, 0x8d, 0xcc, 0x45, 0x43, 0x1e, 0x4f, 0xfe, 0xcb, 0xba, 0x9e, 0x3f, 0xff, 0x50, 0x30, - 0x6f, 0x67, 0xe0, 0x2d, 0x4f, 0x24, 0x5d, 0x3b, 0x4f, 0x6d, 0xdf, 0x6f, 0xfe, 0x9e, 0xbb, 0xf6, - 0x94, 0x6b, 0x2f, 0x77, 0xed, 0xdd, 0x6f, 0x76, 0xca, 0x2a, 0xf9, 0x5b, 0xff, 0x06, 0x00, 0x00, - 0xff, 0xff, 0xd6, 0x35, 0xfc, 0x0e, 0x16, 0x0e, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bigtable/v2/data.pb.go b/vendor/google.golang.org/genproto/googleapis/bigtable/v2/data.pb.go deleted file mode 100644 index a24ba5af..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bigtable/v2/data.pb.go +++ /dev/null @@ -1,2119 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bigtable/v2/data.proto - -package bigtable - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Specifies the complete (requested) contents of a single row of a table. -// Rows which exceed 256MiB in size cannot be read in full. -type Row struct { - // The unique key which identifies this row within its table. This is the same - // key that's used to identify the row in, for example, a MutateRowRequest. - // May contain any non-empty byte string up to 4KiB in length. - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - // May be empty, but only if the entire row is empty. - // The mutual ordering of column families is not specified. - Families []*Family `protobuf:"bytes,2,rep,name=families" json:"families,omitempty"` -} - -func (m *Row) Reset() { *m = Row{} } -func (m *Row) String() string { return proto.CompactTextString(m) } -func (*Row) ProtoMessage() {} -func (*Row) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Row) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *Row) GetFamilies() []*Family { - if m != nil { - return m.Families - } - return nil -} - -// Specifies (some of) the contents of a single row/column family intersection -// of a table. -type Family struct { - // The unique key which identifies this family within its row. This is the - // same key that's used to identify the family in, for example, a RowFilter - // which sets its "family_name_regex_filter" field. - // Must match `[-_.a-zA-Z0-9]+`, except that AggregatingRowProcessors may - // produce cells in a sentinel family with an empty name. - // Must be no greater than 64 characters in length. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Must not be empty. Sorted in order of increasing "qualifier". - Columns []*Column `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` -} - -func (m *Family) Reset() { *m = Family{} } -func (m *Family) String() string { return proto.CompactTextString(m) } -func (*Family) ProtoMessage() {} -func (*Family) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *Family) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Family) GetColumns() []*Column { - if m != nil { - return m.Columns - } - return nil -} - -// Specifies (some of) the contents of a single row/column intersection of a -// table. -type Column struct { - // The unique key which identifies this column within its family. This is the - // same key that's used to identify the column in, for example, a RowFilter - // which sets its `column_qualifier_regex_filter` field. - // May contain any byte string, including the empty string, up to 16kiB in - // length. - Qualifier []byte `protobuf:"bytes,1,opt,name=qualifier,proto3" json:"qualifier,omitempty"` - // Must not be empty. Sorted in order of decreasing "timestamp_micros". - Cells []*Cell `protobuf:"bytes,2,rep,name=cells" json:"cells,omitempty"` -} - -func (m *Column) Reset() { *m = Column{} } -func (m *Column) String() string { return proto.CompactTextString(m) } -func (*Column) ProtoMessage() {} -func (*Column) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *Column) GetQualifier() []byte { - if m != nil { - return m.Qualifier - } - return nil -} - -func (m *Column) GetCells() []*Cell { - if m != nil { - return m.Cells - } - return nil -} - -// Specifies (some of) the contents of a single row/column/timestamp of a table. -type Cell struct { - // The cell's stored timestamp, which also uniquely identifies it within - // its column. - // Values are always expressed in microseconds, but individual tables may set - // a coarser granularity to further restrict the allowed values. For - // example, a table which specifies millisecond granularity will only allow - // values of `timestamp_micros` which are multiples of 1000. - TimestampMicros int64 `protobuf:"varint,1,opt,name=timestamp_micros,json=timestampMicros" json:"timestamp_micros,omitempty"` - // The value stored in the cell. - // May contain any byte string, including the empty string, up to 100MiB in - // length. - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - // Labels applied to the cell by a [RowFilter][google.bigtable.v2.RowFilter]. - Labels []string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty"` -} - -func (m *Cell) Reset() { *m = Cell{} } -func (m *Cell) String() string { return proto.CompactTextString(m) } -func (*Cell) ProtoMessage() {} -func (*Cell) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *Cell) GetTimestampMicros() int64 { - if m != nil { - return m.TimestampMicros - } - return 0 -} - -func (m *Cell) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func (m *Cell) GetLabels() []string { - if m != nil { - return m.Labels - } - return nil -} - -// Specifies a contiguous range of rows. -type RowRange struct { - // The row key at which to start the range. - // If neither field is set, interpreted as the empty string, inclusive. - // - // Types that are valid to be assigned to StartKey: - // *RowRange_StartKeyClosed - // *RowRange_StartKeyOpen - StartKey isRowRange_StartKey `protobuf_oneof:"start_key"` - // The row key at which to end the range. - // If neither field is set, interpreted as the infinite row key, exclusive. - // - // Types that are valid to be assigned to EndKey: - // *RowRange_EndKeyOpen - // *RowRange_EndKeyClosed - EndKey isRowRange_EndKey `protobuf_oneof:"end_key"` -} - -func (m *RowRange) Reset() { *m = RowRange{} } -func (m *RowRange) String() string { return proto.CompactTextString(m) } -func (*RowRange) ProtoMessage() {} -func (*RowRange) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -type isRowRange_StartKey interface { - isRowRange_StartKey() -} -type isRowRange_EndKey interface { - isRowRange_EndKey() -} - -type RowRange_StartKeyClosed struct { - StartKeyClosed []byte `protobuf:"bytes,1,opt,name=start_key_closed,json=startKeyClosed,proto3,oneof"` -} -type RowRange_StartKeyOpen struct { - StartKeyOpen []byte `protobuf:"bytes,2,opt,name=start_key_open,json=startKeyOpen,proto3,oneof"` -} -type RowRange_EndKeyOpen struct { - EndKeyOpen []byte `protobuf:"bytes,3,opt,name=end_key_open,json=endKeyOpen,proto3,oneof"` -} -type RowRange_EndKeyClosed struct { - EndKeyClosed []byte `protobuf:"bytes,4,opt,name=end_key_closed,json=endKeyClosed,proto3,oneof"` -} - -func (*RowRange_StartKeyClosed) isRowRange_StartKey() {} -func (*RowRange_StartKeyOpen) isRowRange_StartKey() {} -func (*RowRange_EndKeyOpen) isRowRange_EndKey() {} -func (*RowRange_EndKeyClosed) isRowRange_EndKey() {} - -func (m *RowRange) GetStartKey() isRowRange_StartKey { - if m != nil { - return m.StartKey - } - return nil -} -func (m *RowRange) GetEndKey() isRowRange_EndKey { - if m != nil { - return m.EndKey - } - return nil -} - -func (m *RowRange) GetStartKeyClosed() []byte { - if x, ok := m.GetStartKey().(*RowRange_StartKeyClosed); ok { - return x.StartKeyClosed - } - return nil -} - -func (m *RowRange) GetStartKeyOpen() []byte { - if x, ok := m.GetStartKey().(*RowRange_StartKeyOpen); ok { - return x.StartKeyOpen - } - return nil -} - -func (m *RowRange) GetEndKeyOpen() []byte { - if x, ok := m.GetEndKey().(*RowRange_EndKeyOpen); ok { - return x.EndKeyOpen - } - return nil -} - -func (m *RowRange) GetEndKeyClosed() []byte { - if x, ok := m.GetEndKey().(*RowRange_EndKeyClosed); ok { - return x.EndKeyClosed - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RowRange) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RowRange_OneofMarshaler, _RowRange_OneofUnmarshaler, _RowRange_OneofSizer, []interface{}{ - (*RowRange_StartKeyClosed)(nil), - (*RowRange_StartKeyOpen)(nil), - (*RowRange_EndKeyOpen)(nil), - (*RowRange_EndKeyClosed)(nil), - } -} - -func _RowRange_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RowRange) - // start_key - switch x := m.StartKey.(type) { - case *RowRange_StartKeyClosed: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartKeyClosed) - case *RowRange_StartKeyOpen: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartKeyOpen) - case nil: - default: - return fmt.Errorf("RowRange.StartKey has unexpected type %T", x) - } - // end_key - switch x := m.EndKey.(type) { - case *RowRange_EndKeyOpen: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndKeyOpen) - case *RowRange_EndKeyClosed: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndKeyClosed) - case nil: - default: - return fmt.Errorf("RowRange.EndKey has unexpected type %T", x) - } - return nil -} - -func _RowRange_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RowRange) - switch tag { - case 1: // start_key.start_key_closed - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartKey = &RowRange_StartKeyClosed{x} - return true, err - case 2: // start_key.start_key_open - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartKey = &RowRange_StartKeyOpen{x} - return true, err - case 3: // end_key.end_key_open - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndKey = &RowRange_EndKeyOpen{x} - return true, err - case 4: // end_key.end_key_closed - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndKey = &RowRange_EndKeyClosed{x} - return true, err - default: - return false, nil - } -} - -func _RowRange_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RowRange) - // start_key - switch x := m.StartKey.(type) { - case *RowRange_StartKeyClosed: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartKeyClosed))) - n += len(x.StartKeyClosed) - case *RowRange_StartKeyOpen: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartKeyOpen))) - n += len(x.StartKeyOpen) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // end_key - switch x := m.EndKey.(type) { - case *RowRange_EndKeyOpen: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndKeyOpen))) - n += len(x.EndKeyOpen) - case *RowRange_EndKeyClosed: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndKeyClosed))) - n += len(x.EndKeyClosed) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Specifies a non-contiguous set of rows. -type RowSet struct { - // Single rows included in the set. - RowKeys [][]byte `protobuf:"bytes,1,rep,name=row_keys,json=rowKeys,proto3" json:"row_keys,omitempty"` - // Contiguous row ranges included in the set. - RowRanges []*RowRange `protobuf:"bytes,2,rep,name=row_ranges,json=rowRanges" json:"row_ranges,omitempty"` -} - -func (m *RowSet) Reset() { *m = RowSet{} } -func (m *RowSet) String() string { return proto.CompactTextString(m) } -func (*RowSet) ProtoMessage() {} -func (*RowSet) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *RowSet) GetRowKeys() [][]byte { - if m != nil { - return m.RowKeys - } - return nil -} - -func (m *RowSet) GetRowRanges() []*RowRange { - if m != nil { - return m.RowRanges - } - return nil -} - -// Specifies a contiguous range of columns within a single column family. -// The range spans from &lt;column_family&gt;:&lt;start_qualifier&gt; to -// &lt;column_family&gt;:&lt;end_qualifier&gt;, where both bounds can be either -// inclusive or exclusive. -type ColumnRange struct { - // The name of the column family within which this range falls. - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The column qualifier at which to start the range (within `column_family`). - // If neither field is set, interpreted as the empty string, inclusive. - // - // Types that are valid to be assigned to StartQualifier: - // *ColumnRange_StartQualifierClosed - // *ColumnRange_StartQualifierOpen - StartQualifier isColumnRange_StartQualifier `protobuf_oneof:"start_qualifier"` - // The column qualifier at which to end the range (within `column_family`). - // If neither field is set, interpreted as the infinite string, exclusive. - // - // Types that are valid to be assigned to EndQualifier: - // *ColumnRange_EndQualifierClosed - // *ColumnRange_EndQualifierOpen - EndQualifier isColumnRange_EndQualifier `protobuf_oneof:"end_qualifier"` -} - -func (m *ColumnRange) Reset() { *m = ColumnRange{} } -func (m *ColumnRange) String() string { return proto.CompactTextString(m) } -func (*ColumnRange) ProtoMessage() {} -func (*ColumnRange) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -type isColumnRange_StartQualifier interface { - isColumnRange_StartQualifier() -} -type isColumnRange_EndQualifier interface { - isColumnRange_EndQualifier() -} - -type ColumnRange_StartQualifierClosed struct { - StartQualifierClosed []byte `protobuf:"bytes,2,opt,name=start_qualifier_closed,json=startQualifierClosed,proto3,oneof"` -} -type ColumnRange_StartQualifierOpen struct { - StartQualifierOpen []byte `protobuf:"bytes,3,opt,name=start_qualifier_open,json=startQualifierOpen,proto3,oneof"` -} -type ColumnRange_EndQualifierClosed struct { - EndQualifierClosed []byte `protobuf:"bytes,4,opt,name=end_qualifier_closed,json=endQualifierClosed,proto3,oneof"` -} -type ColumnRange_EndQualifierOpen struct { - EndQualifierOpen []byte `protobuf:"bytes,5,opt,name=end_qualifier_open,json=endQualifierOpen,proto3,oneof"` -} - -func (*ColumnRange_StartQualifierClosed) isColumnRange_StartQualifier() {} -func (*ColumnRange_StartQualifierOpen) isColumnRange_StartQualifier() {} -func (*ColumnRange_EndQualifierClosed) isColumnRange_EndQualifier() {} -func (*ColumnRange_EndQualifierOpen) isColumnRange_EndQualifier() {} - -func (m *ColumnRange) GetStartQualifier() isColumnRange_StartQualifier { - if m != nil { - return m.StartQualifier - } - return nil -} -func (m *ColumnRange) GetEndQualifier() isColumnRange_EndQualifier { - if m != nil { - return m.EndQualifier - } - return nil -} - -func (m *ColumnRange) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *ColumnRange) GetStartQualifierClosed() []byte { - if x, ok := m.GetStartQualifier().(*ColumnRange_StartQualifierClosed); ok { - return x.StartQualifierClosed - } - return nil -} - -func (m *ColumnRange) GetStartQualifierOpen() []byte { - if x, ok := m.GetStartQualifier().(*ColumnRange_StartQualifierOpen); ok { - return x.StartQualifierOpen - } - return nil -} - -func (m *ColumnRange) GetEndQualifierClosed() []byte { - if x, ok := m.GetEndQualifier().(*ColumnRange_EndQualifierClosed); ok { - return x.EndQualifierClosed - } - return nil -} - -func (m *ColumnRange) GetEndQualifierOpen() []byte { - if x, ok := m.GetEndQualifier().(*ColumnRange_EndQualifierOpen); ok { - return x.EndQualifierOpen - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ColumnRange) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ColumnRange_OneofMarshaler, _ColumnRange_OneofUnmarshaler, _ColumnRange_OneofSizer, []interface{}{ - (*ColumnRange_StartQualifierClosed)(nil), - (*ColumnRange_StartQualifierOpen)(nil), - (*ColumnRange_EndQualifierClosed)(nil), - (*ColumnRange_EndQualifierOpen)(nil), - } -} - -func _ColumnRange_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ColumnRange) - // start_qualifier - switch x := m.StartQualifier.(type) { - case *ColumnRange_StartQualifierClosed: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartQualifierClosed) - case *ColumnRange_StartQualifierOpen: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartQualifierOpen) - case nil: - default: - return fmt.Errorf("ColumnRange.StartQualifier has unexpected type %T", x) - } - // end_qualifier - switch x := m.EndQualifier.(type) { - case *ColumnRange_EndQualifierClosed: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndQualifierClosed) - case *ColumnRange_EndQualifierOpen: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndQualifierOpen) - case nil: - default: - return fmt.Errorf("ColumnRange.EndQualifier has unexpected type %T", x) - } - return nil -} - -func _ColumnRange_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ColumnRange) - switch tag { - case 2: // start_qualifier.start_qualifier_closed - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartQualifier = &ColumnRange_StartQualifierClosed{x} - return true, err - case 3: // start_qualifier.start_qualifier_open - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartQualifier = &ColumnRange_StartQualifierOpen{x} - return true, err - case 4: // end_qualifier.end_qualifier_closed - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndQualifier = &ColumnRange_EndQualifierClosed{x} - return true, err - case 5: // end_qualifier.end_qualifier_open - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndQualifier = &ColumnRange_EndQualifierOpen{x} - return true, err - default: - return false, nil - } -} - -func _ColumnRange_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ColumnRange) - // start_qualifier - switch x := m.StartQualifier.(type) { - case *ColumnRange_StartQualifierClosed: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartQualifierClosed))) - n += len(x.StartQualifierClosed) - case *ColumnRange_StartQualifierOpen: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartQualifierOpen))) - n += len(x.StartQualifierOpen) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // end_qualifier - switch x := m.EndQualifier.(type) { - case *ColumnRange_EndQualifierClosed: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndQualifierClosed))) - n += len(x.EndQualifierClosed) - case *ColumnRange_EndQualifierOpen: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndQualifierOpen))) - n += len(x.EndQualifierOpen) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Specified a contiguous range of microsecond timestamps. -type TimestampRange struct { - // Inclusive lower bound. If left empty, interpreted as 0. - StartTimestampMicros int64 `protobuf:"varint,1,opt,name=start_timestamp_micros,json=startTimestampMicros" json:"start_timestamp_micros,omitempty"` - // Exclusive upper bound. If left empty, interpreted as infinity. - EndTimestampMicros int64 `protobuf:"varint,2,opt,name=end_timestamp_micros,json=endTimestampMicros" json:"end_timestamp_micros,omitempty"` -} - -func (m *TimestampRange) Reset() { *m = TimestampRange{} } -func (m *TimestampRange) String() string { return proto.CompactTextString(m) } -func (*TimestampRange) ProtoMessage() {} -func (*TimestampRange) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *TimestampRange) GetStartTimestampMicros() int64 { - if m != nil { - return m.StartTimestampMicros - } - return 0 -} - -func (m *TimestampRange) GetEndTimestampMicros() int64 { - if m != nil { - return m.EndTimestampMicros - } - return 0 -} - -// Specifies a contiguous range of raw byte values. -type ValueRange struct { - // The value at which to start the range. - // If neither field is set, interpreted as the empty string, inclusive. - // - // Types that are valid to be assigned to StartValue: - // *ValueRange_StartValueClosed - // *ValueRange_StartValueOpen - StartValue isValueRange_StartValue `protobuf_oneof:"start_value"` - // The value at which to end the range. - // If neither field is set, interpreted as the infinite string, exclusive. - // - // Types that are valid to be assigned to EndValue: - // *ValueRange_EndValueClosed - // *ValueRange_EndValueOpen - EndValue isValueRange_EndValue `protobuf_oneof:"end_value"` -} - -func (m *ValueRange) Reset() { *m = ValueRange{} } -func (m *ValueRange) String() string { return proto.CompactTextString(m) } -func (*ValueRange) ProtoMessage() {} -func (*ValueRange) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -type isValueRange_StartValue interface { - isValueRange_StartValue() -} -type isValueRange_EndValue interface { - isValueRange_EndValue() -} - -type ValueRange_StartValueClosed struct { - StartValueClosed []byte `protobuf:"bytes,1,opt,name=start_value_closed,json=startValueClosed,proto3,oneof"` -} -type ValueRange_StartValueOpen struct { - StartValueOpen []byte `protobuf:"bytes,2,opt,name=start_value_open,json=startValueOpen,proto3,oneof"` -} -type ValueRange_EndValueClosed struct { - EndValueClosed []byte `protobuf:"bytes,3,opt,name=end_value_closed,json=endValueClosed,proto3,oneof"` -} -type ValueRange_EndValueOpen struct { - EndValueOpen []byte `protobuf:"bytes,4,opt,name=end_value_open,json=endValueOpen,proto3,oneof"` -} - -func (*ValueRange_StartValueClosed) isValueRange_StartValue() {} -func (*ValueRange_StartValueOpen) isValueRange_StartValue() {} -func (*ValueRange_EndValueClosed) isValueRange_EndValue() {} -func (*ValueRange_EndValueOpen) isValueRange_EndValue() {} - -func (m *ValueRange) GetStartValue() isValueRange_StartValue { - if m != nil { - return m.StartValue - } - return nil -} -func (m *ValueRange) GetEndValue() isValueRange_EndValue { - if m != nil { - return m.EndValue - } - return nil -} - -func (m *ValueRange) GetStartValueClosed() []byte { - if x, ok := m.GetStartValue().(*ValueRange_StartValueClosed); ok { - return x.StartValueClosed - } - return nil -} - -func (m *ValueRange) GetStartValueOpen() []byte { - if x, ok := m.GetStartValue().(*ValueRange_StartValueOpen); ok { - return x.StartValueOpen - } - return nil -} - -func (m *ValueRange) GetEndValueClosed() []byte { - if x, ok := m.GetEndValue().(*ValueRange_EndValueClosed); ok { - return x.EndValueClosed - } - return nil -} - -func (m *ValueRange) GetEndValueOpen() []byte { - if x, ok := m.GetEndValue().(*ValueRange_EndValueOpen); ok { - return x.EndValueOpen - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ValueRange) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ValueRange_OneofMarshaler, _ValueRange_OneofUnmarshaler, _ValueRange_OneofSizer, []interface{}{ - (*ValueRange_StartValueClosed)(nil), - (*ValueRange_StartValueOpen)(nil), - (*ValueRange_EndValueClosed)(nil), - (*ValueRange_EndValueOpen)(nil), - } -} - -func _ValueRange_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ValueRange) - // start_value - switch x := m.StartValue.(type) { - case *ValueRange_StartValueClosed: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartValueClosed) - case *ValueRange_StartValueOpen: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.StartValueOpen) - case nil: - default: - return fmt.Errorf("ValueRange.StartValue has unexpected type %T", x) - } - // end_value - switch x := m.EndValue.(type) { - case *ValueRange_EndValueClosed: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndValueClosed) - case *ValueRange_EndValueOpen: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.EndValueOpen) - case nil: - default: - return fmt.Errorf("ValueRange.EndValue has unexpected type %T", x) - } - return nil -} - -func _ValueRange_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ValueRange) - switch tag { - case 1: // start_value.start_value_closed - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartValue = &ValueRange_StartValueClosed{x} - return true, err - case 2: // start_value.start_value_open - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StartValue = &ValueRange_StartValueOpen{x} - return true, err - case 3: // end_value.end_value_closed - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndValue = &ValueRange_EndValueClosed{x} - return true, err - case 4: // end_value.end_value_open - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.EndValue = &ValueRange_EndValueOpen{x} - return true, err - default: - return false, nil - } -} - -func _ValueRange_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ValueRange) - // start_value - switch x := m.StartValue.(type) { - case *ValueRange_StartValueClosed: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartValueClosed))) - n += len(x.StartValueClosed) - case *ValueRange_StartValueOpen: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StartValueOpen))) - n += len(x.StartValueOpen) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // end_value - switch x := m.EndValue.(type) { - case *ValueRange_EndValueClosed: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndValueClosed))) - n += len(x.EndValueClosed) - case *ValueRange_EndValueOpen: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EndValueOpen))) - n += len(x.EndValueOpen) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Takes a row as input and produces an alternate view of the row based on -// specified rules. For example, a RowFilter might trim down a row to include -// just the cells from columns matching a given regular expression, or might -// return all the cells of a row but not their values. More complicated filters -// can be composed out of these components to express requests such as, "within -// every column of a particular family, give just the two most recent cells -// which are older than timestamp X." -// -// There are two broad categories of RowFilters (true filters and transformers), -// as well as two ways to compose simple filters into more complex ones -// (chains and interleaves). They work as follows: -// -// * True filters alter the input row by excluding some of its cells wholesale -// from the output row. An example of a true filter is the `value_regex_filter`, -// which excludes cells whose values don't match the specified pattern. All -// regex true filters use RE2 syntax (https://github.com/google/re2/wiki/Syntax) -// in raw byte mode (RE2::Latin1), and are evaluated as full matches. An -// important point to keep in mind is that `RE2(.)` is equivalent by default to -// `RE2([^\n])`, meaning that it does not match newlines. When attempting to -// match an arbitrary byte, you should therefore use the escape sequence `\C`, -// which may need to be further escaped as `\\C` in your client language. -// -// * Transformers alter the input row by changing the values of some of its -// cells in the output, without excluding them completely. Currently, the only -// supported transformer is the `strip_value_transformer`, which replaces every -// cell's value with the empty string. -// -// * Chains and interleaves are described in more detail in the -// RowFilter.Chain and RowFilter.Interleave documentation. -// -// The total serialized size of a RowFilter message must not -// exceed 4096 bytes, and RowFilters may not be nested within each other -// (in Chains or Interleaves) to a depth of more than 20. -type RowFilter struct { - // Which of the possible RowFilter types to apply. If none are set, this - // RowFilter returns all cells in the input row. - // - // Types that are valid to be assigned to Filter: - // *RowFilter_Chain_ - // *RowFilter_Interleave_ - // *RowFilter_Condition_ - // *RowFilter_Sink - // *RowFilter_PassAllFilter - // *RowFilter_BlockAllFilter - // *RowFilter_RowKeyRegexFilter - // *RowFilter_RowSampleFilter - // *RowFilter_FamilyNameRegexFilter - // *RowFilter_ColumnQualifierRegexFilter - // *RowFilter_ColumnRangeFilter - // *RowFilter_TimestampRangeFilter - // *RowFilter_ValueRegexFilter - // *RowFilter_ValueRangeFilter - // *RowFilter_CellsPerRowOffsetFilter - // *RowFilter_CellsPerRowLimitFilter - // *RowFilter_CellsPerColumnLimitFilter - // *RowFilter_StripValueTransformer - // *RowFilter_ApplyLabelTransformer - Filter isRowFilter_Filter `protobuf_oneof:"filter"` -} - -func (m *RowFilter) Reset() { *m = RowFilter{} } -func (m *RowFilter) String() string { return proto.CompactTextString(m) } -func (*RowFilter) ProtoMessage() {} -func (*RowFilter) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -type isRowFilter_Filter interface { - isRowFilter_Filter() -} - -type RowFilter_Chain_ struct { - Chain *RowFilter_Chain `protobuf:"bytes,1,opt,name=chain,oneof"` -} -type RowFilter_Interleave_ struct { - Interleave *RowFilter_Interleave `protobuf:"bytes,2,opt,name=interleave,oneof"` -} -type RowFilter_Condition_ struct { - Condition *RowFilter_Condition `protobuf:"bytes,3,opt,name=condition,oneof"` -} -type RowFilter_Sink struct { - Sink bool `protobuf:"varint,16,opt,name=sink,oneof"` -} -type RowFilter_PassAllFilter struct { - PassAllFilter bool `protobuf:"varint,17,opt,name=pass_all_filter,json=passAllFilter,oneof"` -} -type RowFilter_BlockAllFilter struct { - BlockAllFilter bool `protobuf:"varint,18,opt,name=block_all_filter,json=blockAllFilter,oneof"` -} -type RowFilter_RowKeyRegexFilter struct { - RowKeyRegexFilter []byte `protobuf:"bytes,4,opt,name=row_key_regex_filter,json=rowKeyRegexFilter,proto3,oneof"` -} -type RowFilter_RowSampleFilter struct { - RowSampleFilter float64 `protobuf:"fixed64,14,opt,name=row_sample_filter,json=rowSampleFilter,oneof"` -} -type RowFilter_FamilyNameRegexFilter struct { - FamilyNameRegexFilter string `protobuf:"bytes,5,opt,name=family_name_regex_filter,json=familyNameRegexFilter,oneof"` -} -type RowFilter_ColumnQualifierRegexFilter struct { - ColumnQualifierRegexFilter []byte `protobuf:"bytes,6,opt,name=column_qualifier_regex_filter,json=columnQualifierRegexFilter,proto3,oneof"` -} -type RowFilter_ColumnRangeFilter struct { - ColumnRangeFilter *ColumnRange `protobuf:"bytes,7,opt,name=column_range_filter,json=columnRangeFilter,oneof"` -} -type RowFilter_TimestampRangeFilter struct { - TimestampRangeFilter *TimestampRange `protobuf:"bytes,8,opt,name=timestamp_range_filter,json=timestampRangeFilter,oneof"` -} -type RowFilter_ValueRegexFilter struct { - ValueRegexFilter []byte `protobuf:"bytes,9,opt,name=value_regex_filter,json=valueRegexFilter,proto3,oneof"` -} -type RowFilter_ValueRangeFilter struct { - ValueRangeFilter *ValueRange `protobuf:"bytes,15,opt,name=value_range_filter,json=valueRangeFilter,oneof"` -} -type RowFilter_CellsPerRowOffsetFilter struct { - CellsPerRowOffsetFilter int32 `protobuf:"varint,10,opt,name=cells_per_row_offset_filter,json=cellsPerRowOffsetFilter,oneof"` -} -type RowFilter_CellsPerRowLimitFilter struct { - CellsPerRowLimitFilter int32 `protobuf:"varint,11,opt,name=cells_per_row_limit_filter,json=cellsPerRowLimitFilter,oneof"` -} -type RowFilter_CellsPerColumnLimitFilter struct { - CellsPerColumnLimitFilter int32 `protobuf:"varint,12,opt,name=cells_per_column_limit_filter,json=cellsPerColumnLimitFilter,oneof"` -} -type RowFilter_StripValueTransformer struct { - StripValueTransformer bool `protobuf:"varint,13,opt,name=strip_value_transformer,json=stripValueTransformer,oneof"` -} -type RowFilter_ApplyLabelTransformer struct { - ApplyLabelTransformer string `protobuf:"bytes,19,opt,name=apply_label_transformer,json=applyLabelTransformer,oneof"` -} - -func (*RowFilter_Chain_) isRowFilter_Filter() {} -func (*RowFilter_Interleave_) isRowFilter_Filter() {} -func (*RowFilter_Condition_) isRowFilter_Filter() {} -func (*RowFilter_Sink) isRowFilter_Filter() {} -func (*RowFilter_PassAllFilter) isRowFilter_Filter() {} -func (*RowFilter_BlockAllFilter) isRowFilter_Filter() {} -func (*RowFilter_RowKeyRegexFilter) isRowFilter_Filter() {} -func (*RowFilter_RowSampleFilter) isRowFilter_Filter() {} -func (*RowFilter_FamilyNameRegexFilter) isRowFilter_Filter() {} -func (*RowFilter_ColumnQualifierRegexFilter) isRowFilter_Filter() {} -func (*RowFilter_ColumnRangeFilter) isRowFilter_Filter() {} -func (*RowFilter_TimestampRangeFilter) isRowFilter_Filter() {} -func (*RowFilter_ValueRegexFilter) isRowFilter_Filter() {} -func (*RowFilter_ValueRangeFilter) isRowFilter_Filter() {} -func (*RowFilter_CellsPerRowOffsetFilter) isRowFilter_Filter() {} -func (*RowFilter_CellsPerRowLimitFilter) isRowFilter_Filter() {} -func (*RowFilter_CellsPerColumnLimitFilter) isRowFilter_Filter() {} -func (*RowFilter_StripValueTransformer) isRowFilter_Filter() {} -func (*RowFilter_ApplyLabelTransformer) isRowFilter_Filter() {} - -func (m *RowFilter) GetFilter() isRowFilter_Filter { - if m != nil { - return m.Filter - } - return nil -} - -func (m *RowFilter) GetChain() *RowFilter_Chain { - if x, ok := m.GetFilter().(*RowFilter_Chain_); ok { - return x.Chain - } - return nil -} - -func (m *RowFilter) GetInterleave() *RowFilter_Interleave { - if x, ok := m.GetFilter().(*RowFilter_Interleave_); ok { - return x.Interleave - } - return nil -} - -func (m *RowFilter) GetCondition() *RowFilter_Condition { - if x, ok := m.GetFilter().(*RowFilter_Condition_); ok { - return x.Condition - } - return nil -} - -func (m *RowFilter) GetSink() bool { - if x, ok := m.GetFilter().(*RowFilter_Sink); ok { - return x.Sink - } - return false -} - -func (m *RowFilter) GetPassAllFilter() bool { - if x, ok := m.GetFilter().(*RowFilter_PassAllFilter); ok { - return x.PassAllFilter - } - return false -} - -func (m *RowFilter) GetBlockAllFilter() bool { - if x, ok := m.GetFilter().(*RowFilter_BlockAllFilter); ok { - return x.BlockAllFilter - } - return false -} - -func (m *RowFilter) GetRowKeyRegexFilter() []byte { - if x, ok := m.GetFilter().(*RowFilter_RowKeyRegexFilter); ok { - return x.RowKeyRegexFilter - } - return nil -} - -func (m *RowFilter) GetRowSampleFilter() float64 { - if x, ok := m.GetFilter().(*RowFilter_RowSampleFilter); ok { - return x.RowSampleFilter - } - return 0 -} - -func (m *RowFilter) GetFamilyNameRegexFilter() string { - if x, ok := m.GetFilter().(*RowFilter_FamilyNameRegexFilter); ok { - return x.FamilyNameRegexFilter - } - return "" -} - -func (m *RowFilter) GetColumnQualifierRegexFilter() []byte { - if x, ok := m.GetFilter().(*RowFilter_ColumnQualifierRegexFilter); ok { - return x.ColumnQualifierRegexFilter - } - return nil -} - -func (m *RowFilter) GetColumnRangeFilter() *ColumnRange { - if x, ok := m.GetFilter().(*RowFilter_ColumnRangeFilter); ok { - return x.ColumnRangeFilter - } - return nil -} - -func (m *RowFilter) GetTimestampRangeFilter() *TimestampRange { - if x, ok := m.GetFilter().(*RowFilter_TimestampRangeFilter); ok { - return x.TimestampRangeFilter - } - return nil -} - -func (m *RowFilter) GetValueRegexFilter() []byte { - if x, ok := m.GetFilter().(*RowFilter_ValueRegexFilter); ok { - return x.ValueRegexFilter - } - return nil -} - -func (m *RowFilter) GetValueRangeFilter() *ValueRange { - if x, ok := m.GetFilter().(*RowFilter_ValueRangeFilter); ok { - return x.ValueRangeFilter - } - return nil -} - -func (m *RowFilter) GetCellsPerRowOffsetFilter() int32 { - if x, ok := m.GetFilter().(*RowFilter_CellsPerRowOffsetFilter); ok { - return x.CellsPerRowOffsetFilter - } - return 0 -} - -func (m *RowFilter) GetCellsPerRowLimitFilter() int32 { - if x, ok := m.GetFilter().(*RowFilter_CellsPerRowLimitFilter); ok { - return x.CellsPerRowLimitFilter - } - return 0 -} - -func (m *RowFilter) GetCellsPerColumnLimitFilter() int32 { - if x, ok := m.GetFilter().(*RowFilter_CellsPerColumnLimitFilter); ok { - return x.CellsPerColumnLimitFilter - } - return 0 -} - -func (m *RowFilter) GetStripValueTransformer() bool { - if x, ok := m.GetFilter().(*RowFilter_StripValueTransformer); ok { - return x.StripValueTransformer - } - return false -} - -func (m *RowFilter) GetApplyLabelTransformer() string { - if x, ok := m.GetFilter().(*RowFilter_ApplyLabelTransformer); ok { - return x.ApplyLabelTransformer - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RowFilter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RowFilter_OneofMarshaler, _RowFilter_OneofUnmarshaler, _RowFilter_OneofSizer, []interface{}{ - (*RowFilter_Chain_)(nil), - (*RowFilter_Interleave_)(nil), - (*RowFilter_Condition_)(nil), - (*RowFilter_Sink)(nil), - (*RowFilter_PassAllFilter)(nil), - (*RowFilter_BlockAllFilter)(nil), - (*RowFilter_RowKeyRegexFilter)(nil), - (*RowFilter_RowSampleFilter)(nil), - (*RowFilter_FamilyNameRegexFilter)(nil), - (*RowFilter_ColumnQualifierRegexFilter)(nil), - (*RowFilter_ColumnRangeFilter)(nil), - (*RowFilter_TimestampRangeFilter)(nil), - (*RowFilter_ValueRegexFilter)(nil), - (*RowFilter_ValueRangeFilter)(nil), - (*RowFilter_CellsPerRowOffsetFilter)(nil), - (*RowFilter_CellsPerRowLimitFilter)(nil), - (*RowFilter_CellsPerColumnLimitFilter)(nil), - (*RowFilter_StripValueTransformer)(nil), - (*RowFilter_ApplyLabelTransformer)(nil), - } -} - -func _RowFilter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RowFilter) - // filter - switch x := m.Filter.(type) { - case *RowFilter_Chain_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Chain); err != nil { - return err - } - case *RowFilter_Interleave_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Interleave); err != nil { - return err - } - case *RowFilter_Condition_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Condition); err != nil { - return err - } - case *RowFilter_Sink: - t := uint64(0) - if x.Sink { - t = 1 - } - b.EncodeVarint(16<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *RowFilter_PassAllFilter: - t := uint64(0) - if x.PassAllFilter { - t = 1 - } - b.EncodeVarint(17<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *RowFilter_BlockAllFilter: - t := uint64(0) - if x.BlockAllFilter { - t = 1 - } - b.EncodeVarint(18<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *RowFilter_RowKeyRegexFilter: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.RowKeyRegexFilter) - case *RowFilter_RowSampleFilter: - b.EncodeVarint(14<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.RowSampleFilter)) - case *RowFilter_FamilyNameRegexFilter: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.FamilyNameRegexFilter) - case *RowFilter_ColumnQualifierRegexFilter: - b.EncodeVarint(6<<3 | proto.WireBytes) - b.EncodeRawBytes(x.ColumnQualifierRegexFilter) - case *RowFilter_ColumnRangeFilter: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ColumnRangeFilter); err != nil { - return err - } - case *RowFilter_TimestampRangeFilter: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimestampRangeFilter); err != nil { - return err - } - case *RowFilter_ValueRegexFilter: - b.EncodeVarint(9<<3 | proto.WireBytes) - b.EncodeRawBytes(x.ValueRegexFilter) - case *RowFilter_ValueRangeFilter: - b.EncodeVarint(15<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ValueRangeFilter); err != nil { - return err - } - case *RowFilter_CellsPerRowOffsetFilter: - b.EncodeVarint(10<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CellsPerRowOffsetFilter)) - case *RowFilter_CellsPerRowLimitFilter: - b.EncodeVarint(11<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CellsPerRowLimitFilter)) - case *RowFilter_CellsPerColumnLimitFilter: - b.EncodeVarint(12<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CellsPerColumnLimitFilter)) - case *RowFilter_StripValueTransformer: - t := uint64(0) - if x.StripValueTransformer { - t = 1 - } - b.EncodeVarint(13<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *RowFilter_ApplyLabelTransformer: - b.EncodeVarint(19<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ApplyLabelTransformer) - case nil: - default: - return fmt.Errorf("RowFilter.Filter has unexpected type %T", x) - } - return nil -} - -func _RowFilter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RowFilter) - switch tag { - case 1: // filter.chain - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RowFilter_Chain) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_Chain_{msg} - return true, err - case 2: // filter.interleave - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RowFilter_Interleave) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_Interleave_{msg} - return true, err - case 3: // filter.condition - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RowFilter_Condition) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_Condition_{msg} - return true, err - case 16: // filter.sink - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_Sink{x != 0} - return true, err - case 17: // filter.pass_all_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_PassAllFilter{x != 0} - return true, err - case 18: // filter.block_all_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_BlockAllFilter{x != 0} - return true, err - case 4: // filter.row_key_regex_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Filter = &RowFilter_RowKeyRegexFilter{x} - return true, err - case 14: // filter.row_sample_filter - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Filter = &RowFilter_RowSampleFilter{math.Float64frombits(x)} - return true, err - case 5: // filter.family_name_regex_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Filter = &RowFilter_FamilyNameRegexFilter{x} - return true, err - case 6: // filter.column_qualifier_regex_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Filter = &RowFilter_ColumnQualifierRegexFilter{x} - return true, err - case 7: // filter.column_range_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ColumnRange) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_ColumnRangeFilter{msg} - return true, err - case 8: // filter.timestamp_range_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TimestampRange) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_TimestampRangeFilter{msg} - return true, err - case 9: // filter.value_regex_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Filter = &RowFilter_ValueRegexFilter{x} - return true, err - case 15: // filter.value_range_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ValueRange) - err := b.DecodeMessage(msg) - m.Filter = &RowFilter_ValueRangeFilter{msg} - return true, err - case 10: // filter.cells_per_row_offset_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_CellsPerRowOffsetFilter{int32(x)} - return true, err - case 11: // filter.cells_per_row_limit_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_CellsPerRowLimitFilter{int32(x)} - return true, err - case 12: // filter.cells_per_column_limit_filter - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_CellsPerColumnLimitFilter{int32(x)} - return true, err - case 13: // filter.strip_value_transformer - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Filter = &RowFilter_StripValueTransformer{x != 0} - return true, err - case 19: // filter.apply_label_transformer - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Filter = &RowFilter_ApplyLabelTransformer{x} - return true, err - default: - return false, nil - } -} - -func _RowFilter_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RowFilter) - // filter - switch x := m.Filter.(type) { - case *RowFilter_Chain_: - s := proto.Size(x.Chain) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_Interleave_: - s := proto.Size(x.Interleave) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_Condition_: - s := proto.Size(x.Condition) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_Sink: - n += proto.SizeVarint(16<<3 | proto.WireVarint) - n += 1 - case *RowFilter_PassAllFilter: - n += proto.SizeVarint(17<<3 | proto.WireVarint) - n += 1 - case *RowFilter_BlockAllFilter: - n += proto.SizeVarint(18<<3 | proto.WireVarint) - n += 1 - case *RowFilter_RowKeyRegexFilter: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RowKeyRegexFilter))) - n += len(x.RowKeyRegexFilter) - case *RowFilter_RowSampleFilter: - n += proto.SizeVarint(14<<3 | proto.WireFixed64) - n += 8 - case *RowFilter_FamilyNameRegexFilter: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.FamilyNameRegexFilter))) - n += len(x.FamilyNameRegexFilter) - case *RowFilter_ColumnQualifierRegexFilter: - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ColumnQualifierRegexFilter))) - n += len(x.ColumnQualifierRegexFilter) - case *RowFilter_ColumnRangeFilter: - s := proto.Size(x.ColumnRangeFilter) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_TimestampRangeFilter: - s := proto.Size(x.TimestampRangeFilter) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_ValueRegexFilter: - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ValueRegexFilter))) - n += len(x.ValueRegexFilter) - case *RowFilter_ValueRangeFilter: - s := proto.Size(x.ValueRangeFilter) - n += proto.SizeVarint(15<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RowFilter_CellsPerRowOffsetFilter: - n += proto.SizeVarint(10<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CellsPerRowOffsetFilter)) - case *RowFilter_CellsPerRowLimitFilter: - n += proto.SizeVarint(11<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CellsPerRowLimitFilter)) - case *RowFilter_CellsPerColumnLimitFilter: - n += proto.SizeVarint(12<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CellsPerColumnLimitFilter)) - case *RowFilter_StripValueTransformer: - n += proto.SizeVarint(13<<3 | proto.WireVarint) - n += 1 - case *RowFilter_ApplyLabelTransformer: - n += proto.SizeVarint(19<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ApplyLabelTransformer))) - n += len(x.ApplyLabelTransformer) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A RowFilter which sends rows through several RowFilters in sequence. -type RowFilter_Chain struct { - // The elements of "filters" are chained together to process the input row: - // in row -> f(0) -> intermediate row -> f(1) -> ... -> f(N) -> out row - // The full chain is executed atomically. - Filters []*RowFilter `protobuf:"bytes,1,rep,name=filters" json:"filters,omitempty"` -} - -func (m *RowFilter_Chain) Reset() { *m = RowFilter_Chain{} } -func (m *RowFilter_Chain) String() string { return proto.CompactTextString(m) } -func (*RowFilter_Chain) ProtoMessage() {} -func (*RowFilter_Chain) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9, 0} } - -func (m *RowFilter_Chain) GetFilters() []*RowFilter { - if m != nil { - return m.Filters - } - return nil -} - -// A RowFilter which sends each row to each of several component -// RowFilters and interleaves the results. -type RowFilter_Interleave struct { - // The elements of "filters" all process a copy of the input row, and the - // results are pooled, sorted, and combined into a single output row. - // If multiple cells are produced with the same column and timestamp, - // they will all appear in the output row in an unspecified mutual order. - // Consider the following example, with three filters: - // - // input row - // | - // ----------------------------------------------------- - // | | | - // f(0) f(1) f(2) - // | | | - // 1: foo,bar,10,x foo,bar,10,z far,bar,7,a - // 2: foo,blah,11,z far,blah,5,x far,blah,5,x - // | | | - // ----------------------------------------------------- - // | - // 1: foo,bar,10,z // could have switched with #2 - // 2: foo,bar,10,x // could have switched with #1 - // 3: foo,blah,11,z - // 4: far,bar,7,a - // 5: far,blah,5,x // identical to #6 - // 6: far,blah,5,x // identical to #5 - // - // All interleaved filters are executed atomically. - Filters []*RowFilter `protobuf:"bytes,1,rep,name=filters" json:"filters,omitempty"` -} - -func (m *RowFilter_Interleave) Reset() { *m = RowFilter_Interleave{} } -func (m *RowFilter_Interleave) String() string { return proto.CompactTextString(m) } -func (*RowFilter_Interleave) ProtoMessage() {} -func (*RowFilter_Interleave) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9, 1} } - -func (m *RowFilter_Interleave) GetFilters() []*RowFilter { - if m != nil { - return m.Filters - } - return nil -} - -// A RowFilter which evaluates one of two possible RowFilters, depending on -// whether or not a predicate RowFilter outputs any cells from the input row. -// -// IMPORTANT NOTE: The predicate filter does not execute atomically with the -// true and false filters, which may lead to inconsistent or unexpected -// results. Additionally, Condition filters have poor performance, especially -// when filters are set for the false condition. -type RowFilter_Condition struct { - // If `predicate_filter` outputs any cells, then `true_filter` will be - // evaluated on the input row. Otherwise, `false_filter` will be evaluated. - PredicateFilter *RowFilter `protobuf:"bytes,1,opt,name=predicate_filter,json=predicateFilter" json:"predicate_filter,omitempty"` - // The filter to apply to the input row if `predicate_filter` returns any - // results. If not provided, no results will be returned in the true case. - TrueFilter *RowFilter `protobuf:"bytes,2,opt,name=true_filter,json=trueFilter" json:"true_filter,omitempty"` - // The filter to apply to the input row if `predicate_filter` does not - // return any results. If not provided, no results will be returned in the - // false case. - FalseFilter *RowFilter `protobuf:"bytes,3,opt,name=false_filter,json=falseFilter" json:"false_filter,omitempty"` -} - -func (m *RowFilter_Condition) Reset() { *m = RowFilter_Condition{} } -func (m *RowFilter_Condition) String() string { return proto.CompactTextString(m) } -func (*RowFilter_Condition) ProtoMessage() {} -func (*RowFilter_Condition) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9, 2} } - -func (m *RowFilter_Condition) GetPredicateFilter() *RowFilter { - if m != nil { - return m.PredicateFilter - } - return nil -} - -func (m *RowFilter_Condition) GetTrueFilter() *RowFilter { - if m != nil { - return m.TrueFilter - } - return nil -} - -func (m *RowFilter_Condition) GetFalseFilter() *RowFilter { - if m != nil { - return m.FalseFilter - } - return nil -} - -// Specifies a particular change to be made to the contents of a row. -type Mutation struct { - // Which of the possible Mutation types to apply. - // - // Types that are valid to be assigned to Mutation: - // *Mutation_SetCell_ - // *Mutation_DeleteFromColumn_ - // *Mutation_DeleteFromFamily_ - // *Mutation_DeleteFromRow_ - Mutation isMutation_Mutation `protobuf_oneof:"mutation"` -} - -func (m *Mutation) Reset() { *m = Mutation{} } -func (m *Mutation) String() string { return proto.CompactTextString(m) } -func (*Mutation) ProtoMessage() {} -func (*Mutation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -type isMutation_Mutation interface { - isMutation_Mutation() -} - -type Mutation_SetCell_ struct { - SetCell *Mutation_SetCell `protobuf:"bytes,1,opt,name=set_cell,json=setCell,oneof"` -} -type Mutation_DeleteFromColumn_ struct { - DeleteFromColumn *Mutation_DeleteFromColumn `protobuf:"bytes,2,opt,name=delete_from_column,json=deleteFromColumn,oneof"` -} -type Mutation_DeleteFromFamily_ struct { - DeleteFromFamily *Mutation_DeleteFromFamily `protobuf:"bytes,3,opt,name=delete_from_family,json=deleteFromFamily,oneof"` -} -type Mutation_DeleteFromRow_ struct { - DeleteFromRow *Mutation_DeleteFromRow `protobuf:"bytes,4,opt,name=delete_from_row,json=deleteFromRow,oneof"` -} - -func (*Mutation_SetCell_) isMutation_Mutation() {} -func (*Mutation_DeleteFromColumn_) isMutation_Mutation() {} -func (*Mutation_DeleteFromFamily_) isMutation_Mutation() {} -func (*Mutation_DeleteFromRow_) isMutation_Mutation() {} - -func (m *Mutation) GetMutation() isMutation_Mutation { - if m != nil { - return m.Mutation - } - return nil -} - -func (m *Mutation) GetSetCell() *Mutation_SetCell { - if x, ok := m.GetMutation().(*Mutation_SetCell_); ok { - return x.SetCell - } - return nil -} - -func (m *Mutation) GetDeleteFromColumn() *Mutation_DeleteFromColumn { - if x, ok := m.GetMutation().(*Mutation_DeleteFromColumn_); ok { - return x.DeleteFromColumn - } - return nil -} - -func (m *Mutation) GetDeleteFromFamily() *Mutation_DeleteFromFamily { - if x, ok := m.GetMutation().(*Mutation_DeleteFromFamily_); ok { - return x.DeleteFromFamily - } - return nil -} - -func (m *Mutation) GetDeleteFromRow() *Mutation_DeleteFromRow { - if x, ok := m.GetMutation().(*Mutation_DeleteFromRow_); ok { - return x.DeleteFromRow - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Mutation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Mutation_OneofMarshaler, _Mutation_OneofUnmarshaler, _Mutation_OneofSizer, []interface{}{ - (*Mutation_SetCell_)(nil), - (*Mutation_DeleteFromColumn_)(nil), - (*Mutation_DeleteFromFamily_)(nil), - (*Mutation_DeleteFromRow_)(nil), - } -} - -func _Mutation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Mutation) - // mutation - switch x := m.Mutation.(type) { - case *Mutation_SetCell_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SetCell); err != nil { - return err - } - case *Mutation_DeleteFromColumn_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DeleteFromColumn); err != nil { - return err - } - case *Mutation_DeleteFromFamily_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DeleteFromFamily); err != nil { - return err - } - case *Mutation_DeleteFromRow_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DeleteFromRow); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Mutation.Mutation has unexpected type %T", x) - } - return nil -} - -func _Mutation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Mutation) - switch tag { - case 1: // mutation.set_cell - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_SetCell) - err := b.DecodeMessage(msg) - m.Mutation = &Mutation_SetCell_{msg} - return true, err - case 2: // mutation.delete_from_column - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_DeleteFromColumn) - err := b.DecodeMessage(msg) - m.Mutation = &Mutation_DeleteFromColumn_{msg} - return true, err - case 3: // mutation.delete_from_family - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_DeleteFromFamily) - err := b.DecodeMessage(msg) - m.Mutation = &Mutation_DeleteFromFamily_{msg} - return true, err - case 4: // mutation.delete_from_row - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_DeleteFromRow) - err := b.DecodeMessage(msg) - m.Mutation = &Mutation_DeleteFromRow_{msg} - return true, err - default: - return false, nil - } -} - -func _Mutation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Mutation) - // mutation - switch x := m.Mutation.(type) { - case *Mutation_SetCell_: - s := proto.Size(x.SetCell) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_DeleteFromColumn_: - s := proto.Size(x.DeleteFromColumn) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_DeleteFromFamily_: - s := proto.Size(x.DeleteFromFamily) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_DeleteFromRow_: - s := proto.Size(x.DeleteFromRow) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Mutation which sets the value of the specified cell. -type Mutation_SetCell struct { - // The name of the family into which new data should be written. - // Must match `[-_.a-zA-Z0-9]+` - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The qualifier of the column into which new data should be written. - // Can be any byte string, including the empty string. - ColumnQualifier []byte `protobuf:"bytes,2,opt,name=column_qualifier,json=columnQualifier,proto3" json:"column_qualifier,omitempty"` - // The timestamp of the cell into which new data should be written. - // Use -1 for current Bigtable server time. - // Otherwise, the client should set this value itself, noting that the - // default value is a timestamp of zero if the field is left unspecified. - // Values must match the granularity of the table (e.g. micros, millis). - TimestampMicros int64 `protobuf:"varint,3,opt,name=timestamp_micros,json=timestampMicros" json:"timestamp_micros,omitempty"` - // The value to be written into the specified cell. - Value []byte `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *Mutation_SetCell) Reset() { *m = Mutation_SetCell{} } -func (m *Mutation_SetCell) String() string { return proto.CompactTextString(m) } -func (*Mutation_SetCell) ProtoMessage() {} -func (*Mutation_SetCell) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10, 0} } - -func (m *Mutation_SetCell) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *Mutation_SetCell) GetColumnQualifier() []byte { - if m != nil { - return m.ColumnQualifier - } - return nil -} - -func (m *Mutation_SetCell) GetTimestampMicros() int64 { - if m != nil { - return m.TimestampMicros - } - return 0 -} - -func (m *Mutation_SetCell) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -// A Mutation which deletes cells from the specified column, optionally -// restricting the deletions to a given timestamp range. -type Mutation_DeleteFromColumn struct { - // The name of the family from which cells should be deleted. - // Must match `[-_.a-zA-Z0-9]+` - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The qualifier of the column from which cells should be deleted. - // Can be any byte string, including the empty string. - ColumnQualifier []byte `protobuf:"bytes,2,opt,name=column_qualifier,json=columnQualifier,proto3" json:"column_qualifier,omitempty"` - // The range of timestamps within which cells should be deleted. - TimeRange *TimestampRange `protobuf:"bytes,3,opt,name=time_range,json=timeRange" json:"time_range,omitempty"` -} - -func (m *Mutation_DeleteFromColumn) Reset() { *m = Mutation_DeleteFromColumn{} } -func (m *Mutation_DeleteFromColumn) String() string { return proto.CompactTextString(m) } -func (*Mutation_DeleteFromColumn) ProtoMessage() {} -func (*Mutation_DeleteFromColumn) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10, 1} } - -func (m *Mutation_DeleteFromColumn) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *Mutation_DeleteFromColumn) GetColumnQualifier() []byte { - if m != nil { - return m.ColumnQualifier - } - return nil -} - -func (m *Mutation_DeleteFromColumn) GetTimeRange() *TimestampRange { - if m != nil { - return m.TimeRange - } - return nil -} - -// A Mutation which deletes all cells from the specified column family. -type Mutation_DeleteFromFamily struct { - // The name of the family from which cells should be deleted. - // Must match `[-_.a-zA-Z0-9]+` - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` -} - -func (m *Mutation_DeleteFromFamily) Reset() { *m = Mutation_DeleteFromFamily{} } -func (m *Mutation_DeleteFromFamily) String() string { return proto.CompactTextString(m) } -func (*Mutation_DeleteFromFamily) ProtoMessage() {} -func (*Mutation_DeleteFromFamily) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10, 2} } - -func (m *Mutation_DeleteFromFamily) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -// A Mutation which deletes all cells from the containing row. -type Mutation_DeleteFromRow struct { -} - -func (m *Mutation_DeleteFromRow) Reset() { *m = Mutation_DeleteFromRow{} } -func (m *Mutation_DeleteFromRow) String() string { return proto.CompactTextString(m) } -func (*Mutation_DeleteFromRow) ProtoMessage() {} -func (*Mutation_DeleteFromRow) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10, 3} } - -// Specifies an atomic read/modify/write operation on the latest value of the -// specified column. -type ReadModifyWriteRule struct { - // The name of the family to which the read/modify/write should be applied. - // Must match `[-_.a-zA-Z0-9]+` - FamilyName string `protobuf:"bytes,1,opt,name=family_name,json=familyName" json:"family_name,omitempty"` - // The qualifier of the column to which the read/modify/write should be - // applied. - // Can be any byte string, including the empty string. - ColumnQualifier []byte `protobuf:"bytes,2,opt,name=column_qualifier,json=columnQualifier,proto3" json:"column_qualifier,omitempty"` - // The rule used to determine the column's new latest value from its current - // latest value. - // - // Types that are valid to be assigned to Rule: - // *ReadModifyWriteRule_AppendValue - // *ReadModifyWriteRule_IncrementAmount - Rule isReadModifyWriteRule_Rule `protobuf_oneof:"rule"` -} - -func (m *ReadModifyWriteRule) Reset() { *m = ReadModifyWriteRule{} } -func (m *ReadModifyWriteRule) String() string { return proto.CompactTextString(m) } -func (*ReadModifyWriteRule) ProtoMessage() {} -func (*ReadModifyWriteRule) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -type isReadModifyWriteRule_Rule interface { - isReadModifyWriteRule_Rule() -} - -type ReadModifyWriteRule_AppendValue struct { - AppendValue []byte `protobuf:"bytes,3,opt,name=append_value,json=appendValue,proto3,oneof"` -} -type ReadModifyWriteRule_IncrementAmount struct { - IncrementAmount int64 `protobuf:"varint,4,opt,name=increment_amount,json=incrementAmount,oneof"` -} - -func (*ReadModifyWriteRule_AppendValue) isReadModifyWriteRule_Rule() {} -func (*ReadModifyWriteRule_IncrementAmount) isReadModifyWriteRule_Rule() {} - -func (m *ReadModifyWriteRule) GetRule() isReadModifyWriteRule_Rule { - if m != nil { - return m.Rule - } - return nil -} - -func (m *ReadModifyWriteRule) GetFamilyName() string { - if m != nil { - return m.FamilyName - } - return "" -} - -func (m *ReadModifyWriteRule) GetColumnQualifier() []byte { - if m != nil { - return m.ColumnQualifier - } - return nil -} - -func (m *ReadModifyWriteRule) GetAppendValue() []byte { - if x, ok := m.GetRule().(*ReadModifyWriteRule_AppendValue); ok { - return x.AppendValue - } - return nil -} - -func (m *ReadModifyWriteRule) GetIncrementAmount() int64 { - if x, ok := m.GetRule().(*ReadModifyWriteRule_IncrementAmount); ok { - return x.IncrementAmount - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ReadModifyWriteRule) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ReadModifyWriteRule_OneofMarshaler, _ReadModifyWriteRule_OneofUnmarshaler, _ReadModifyWriteRule_OneofSizer, []interface{}{ - (*ReadModifyWriteRule_AppendValue)(nil), - (*ReadModifyWriteRule_IncrementAmount)(nil), - } -} - -func _ReadModifyWriteRule_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ReadModifyWriteRule) - // rule - switch x := m.Rule.(type) { - case *ReadModifyWriteRule_AppendValue: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AppendValue) - case *ReadModifyWriteRule_IncrementAmount: - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IncrementAmount)) - case nil: - default: - return fmt.Errorf("ReadModifyWriteRule.Rule has unexpected type %T", x) - } - return nil -} - -func _ReadModifyWriteRule_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ReadModifyWriteRule) - switch tag { - case 3: // rule.append_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Rule = &ReadModifyWriteRule_AppendValue{x} - return true, err - case 4: // rule.increment_amount - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Rule = &ReadModifyWriteRule_IncrementAmount{int64(x)} - return true, err - default: - return false, nil - } -} - -func _ReadModifyWriteRule_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ReadModifyWriteRule) - // rule - switch x := m.Rule.(type) { - case *ReadModifyWriteRule_AppendValue: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AppendValue))) - n += len(x.AppendValue) - case *ReadModifyWriteRule_IncrementAmount: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IncrementAmount)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*Row)(nil), "google.bigtable.v2.Row") - proto.RegisterType((*Family)(nil), "google.bigtable.v2.Family") - proto.RegisterType((*Column)(nil), "google.bigtable.v2.Column") - proto.RegisterType((*Cell)(nil), "google.bigtable.v2.Cell") - proto.RegisterType((*RowRange)(nil), "google.bigtable.v2.RowRange") - proto.RegisterType((*RowSet)(nil), "google.bigtable.v2.RowSet") - proto.RegisterType((*ColumnRange)(nil), "google.bigtable.v2.ColumnRange") - proto.RegisterType((*TimestampRange)(nil), "google.bigtable.v2.TimestampRange") - proto.RegisterType((*ValueRange)(nil), "google.bigtable.v2.ValueRange") - proto.RegisterType((*RowFilter)(nil), "google.bigtable.v2.RowFilter") - proto.RegisterType((*RowFilter_Chain)(nil), "google.bigtable.v2.RowFilter.Chain") - proto.RegisterType((*RowFilter_Interleave)(nil), "google.bigtable.v2.RowFilter.Interleave") - proto.RegisterType((*RowFilter_Condition)(nil), "google.bigtable.v2.RowFilter.Condition") - proto.RegisterType((*Mutation)(nil), "google.bigtable.v2.Mutation") - proto.RegisterType((*Mutation_SetCell)(nil), "google.bigtable.v2.Mutation.SetCell") - proto.RegisterType((*Mutation_DeleteFromColumn)(nil), "google.bigtable.v2.Mutation.DeleteFromColumn") - proto.RegisterType((*Mutation_DeleteFromFamily)(nil), "google.bigtable.v2.Mutation.DeleteFromFamily") - proto.RegisterType((*Mutation_DeleteFromRow)(nil), "google.bigtable.v2.Mutation.DeleteFromRow") - proto.RegisterType((*ReadModifyWriteRule)(nil), "google.bigtable.v2.ReadModifyWriteRule") -} - -func init() { proto.RegisterFile("google/bigtable/v2/data.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1444 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdb, 0x72, 0x1b, 0x45, - 0x13, 0xd6, 0x5a, 0xb6, 0x2c, 0xf5, 0xca, 0x96, 0x32, 0x71, 0x1c, 0x45, 0x7f, 0xfc, 0xc7, 0xa5, - 0x50, 0x41, 0x31, 0x20, 0x83, 0x92, 0x0a, 0x87, 0x50, 0x54, 0x2c, 0x87, 0x44, 0x90, 0xf3, 0xc4, - 0x65, 0xaa, 0x52, 0xa1, 0x96, 0xb1, 0x34, 0x12, 0x5b, 0x9e, 0xdd, 0x59, 0x76, 0x57, 0x56, 0xf4, - 0x22, 0x70, 0x0d, 0x97, 0xbc, 0x02, 0x77, 0x5c, 0xf2, 0x02, 0xf0, 0x18, 0x3c, 0x00, 0x17, 0xd4, - 0x9c, 0xf6, 0xa0, 0x38, 0xb6, 0x8b, 0xca, 0xdd, 0x6e, 0xf7, 0xf7, 0x7d, 0xdd, 0xd3, 0xd3, 0xd3, - 0x3b, 0x0b, 0x1b, 0x63, 0xce, 0xc7, 0x8c, 0x6e, 0x1f, 0xb8, 0xe3, 0x98, 0x1c, 0x30, 0xba, 0x7d, - 0xd4, 0xdd, 0x1e, 0x92, 0x98, 0x74, 0x82, 0x90, 0xc7, 0x1c, 0x21, 0xe5, 0xee, 0x18, 0x77, 0xe7, - 0xa8, 0xdb, 0x7a, 0x02, 0x45, 0xcc, 0xa7, 0xa8, 0x0e, 0xc5, 0x43, 0x3a, 0x6b, 0x58, 0x9b, 0x56, - 0xbb, 0x8a, 0xc5, 0x23, 0xba, 0x05, 0xe5, 0x11, 0xf1, 0x5c, 0xe6, 0xd2, 0xa8, 0xb1, 0xb0, 0x59, - 0x6c, 0xdb, 0xdd, 0x66, 0xe7, 0x75, 0x7e, 0xe7, 0x9e, 0xc0, 0xcc, 0x70, 0x82, 0x6d, 0x61, 0x28, - 0x29, 0x1b, 0x42, 0xb0, 0xe8, 0x13, 0x8f, 0x4a, 0xd1, 0x0a, 0x96, 0xcf, 0xe8, 0x26, 0x2c, 0x0f, - 0x38, 0x9b, 0x78, 0xfe, 0x89, 0xa2, 0xbb, 0x12, 0x82, 0x0d, 0xb4, 0xb5, 0x0f, 0x25, 0x65, 0x42, - 0x97, 0xa1, 0xf2, 0xc3, 0x84, 0x30, 0x77, 0xe4, 0xd2, 0x50, 0x67, 0x9b, 0x1a, 0x50, 0x07, 0x96, - 0x06, 0x94, 0x31, 0xa3, 0xdd, 0x38, 0x56, 0x9b, 0x32, 0x86, 0x15, 0xac, 0xe5, 0xc0, 0xa2, 0x78, - 0x45, 0xd7, 0xa1, 0x1e, 0xbb, 0x1e, 0x8d, 0x62, 0xe2, 0x05, 0x8e, 0xe7, 0x0e, 0x42, 0x1e, 0x49, - 0xf1, 0x22, 0xae, 0x25, 0xf6, 0x47, 0xd2, 0x8c, 0xd6, 0x60, 0xe9, 0x88, 0xb0, 0x09, 0x6d, 0x2c, - 0xc8, 0xe0, 0xea, 0x05, 0xad, 0x43, 0x89, 0x91, 0x03, 0xca, 0xa2, 0x46, 0x71, 0xb3, 0xd8, 0xae, - 0x60, 0xfd, 0xd6, 0xfa, 0xdd, 0x82, 0x32, 0xe6, 0x53, 0x4c, 0xfc, 0x31, 0x45, 0x5b, 0x50, 0x8f, - 0x62, 0x12, 0xc6, 0xce, 0x21, 0x9d, 0x39, 0x03, 0xc6, 0x23, 0x3a, 0x54, 0x4b, 0xe8, 0x17, 0xf0, - 0xaa, 0xf4, 0x3c, 0xa0, 0xb3, 0x5d, 0x69, 0x47, 0xd7, 0x60, 0x35, 0xc5, 0xf2, 0x80, 0xfa, 0x2a, - 0x5e, 0xbf, 0x80, 0xab, 0x06, 0xf9, 0x24, 0xa0, 0x3e, 0x6a, 0x41, 0x95, 0xfa, 0xc3, 0x14, 0x55, - 0x94, 0x28, 0x0b, 0x03, 0xf5, 0x87, 0x06, 0x73, 0x0d, 0x56, 0x0d, 0x46, 0x47, 0x5d, 0xd4, 0xa8, - 0xaa, 0x42, 0xa9, 0x98, 0x3d, 0x1b, 0x2a, 0x49, 0xcc, 0x5e, 0x05, 0x96, 0x35, 0xa9, 0xf5, 0x1d, - 0x94, 0x30, 0x9f, 0x3e, 0xa7, 0x31, 0xba, 0x04, 0xe5, 0x90, 0x4f, 0x85, 0x51, 0xd4, 0xa7, 0xd8, - 0xae, 0xe2, 0xe5, 0x90, 0x4f, 0x1f, 0xd0, 0x59, 0x84, 0x6e, 0x03, 0x08, 0x57, 0x28, 0x56, 0x6a, - 0xea, 0x7f, 0xf9, 0xb8, 0xfa, 0x9b, 0x72, 0xe0, 0x4a, 0xa8, 0x9f, 0xa2, 0xd6, 0x2f, 0x0b, 0x60, - 0xeb, 0x3d, 0x97, 0x95, 0xba, 0x02, 0xb6, 0xec, 0xa7, 0x99, 0x93, 0x69, 0x20, 0x50, 0xa6, 0xc7, - 0xa2, 0x8d, 0x6e, 0xc1, 0xba, 0x4a, 0x35, 0xd9, 0x7b, 0xb3, 0x34, 0x53, 0xa6, 0x35, 0xe9, 0x7f, - 0x66, 0xdc, 0xba, 0xac, 0x5d, 0x58, 0x9b, 0xe7, 0x65, 0xca, 0x56, 0xc0, 0x28, 0xcf, 0x92, 0xe5, - 0xeb, 0xc2, 0x9a, 0xa8, 0xc4, 0x6b, 0x91, 0x4c, 0x11, 0x11, 0xf5, 0x87, 0xf3, 0x71, 0x3a, 0x80, - 0xf2, 0x1c, 0x19, 0x65, 0x49, 0x33, 0xea, 0x59, 0x86, 0x88, 0xd1, 0x3b, 0x07, 0xb5, 0xb9, 0xbc, - 0x7a, 0x35, 0x58, 0xc9, 0x49, 0xb4, 0x5e, 0xc1, 0xea, 0x9e, 0x69, 0x46, 0x55, 0xa6, 0x9b, 0xa6, - 0x0a, 0x6f, 0x68, 0x5e, 0xb5, 0xd6, 0xbd, 0xb9, 0x0e, 0xfe, 0x50, 0xad, 0xe7, 0x35, 0xce, 0x82, - 0xe4, 0x88, 0xbc, 0xe7, 0x18, 0xad, 0xbf, 0x2c, 0x80, 0x7d, 0xd1, 0xe7, 0x2a, 0x6c, 0x07, 0x54, - 0x99, 0x1c, 0xd9, 0xfb, 0xf3, 0x9d, 0xac, 0x7a, 0x5c, 0xc2, 0x75, 0x31, 0x92, 0xbe, 0x57, 0xf8, - 0x5c, 0x37, 0xaf, 0xa6, 0x68, 0x59, 0xec, 0x2d, 0x10, 0xc5, 0xc9, 0x2b, 0x9b, 0x9e, 0x16, 0x5d, - 0x9c, 0xd5, 0xd5, 0x7d, 0x9d, 0x51, 0xcd, 0xf6, 0x75, 0xa2, 0xd9, 0x5b, 0x01, 0x3b, 0x13, 0x5f, - 0xb4, 0x79, 0x42, 0x6b, 0xfd, 0x63, 0x43, 0x05, 0xf3, 0xe9, 0x3d, 0x97, 0xc5, 0x34, 0x44, 0xb7, - 0x61, 0x69, 0xf0, 0x3d, 0x71, 0x7d, 0xb9, 0x18, 0xbb, 0x7b, 0xf5, 0x0d, 0xfd, 0xab, 0xd0, 0x9d, - 0x5d, 0x01, 0xed, 0x17, 0xb0, 0xe2, 0xa0, 0xaf, 0x01, 0x5c, 0x3f, 0xa6, 0x21, 0xa3, 0xe4, 0x48, - 0x8d, 0x07, 0xbb, 0xdb, 0x3e, 0x59, 0xe1, 0xab, 0x04, 0xdf, 0x2f, 0xe0, 0x0c, 0x1b, 0xdd, 0x87, - 0xca, 0x80, 0xfb, 0x43, 0x37, 0x76, 0xb9, 0x6a, 0x4e, 0xbb, 0xfb, 0xee, 0x29, 0xc9, 0x18, 0x78, - 0xbf, 0x80, 0x53, 0x2e, 0x5a, 0x83, 0xc5, 0xc8, 0xf5, 0x0f, 0x1b, 0xf5, 0x4d, 0xab, 0x5d, 0xee, - 0x17, 0xb0, 0x7c, 0x43, 0x6d, 0xa8, 0x05, 0x24, 0x8a, 0x1c, 0xc2, 0x98, 0x33, 0x92, 0xfc, 0xc6, - 0x39, 0x0d, 0x58, 0x11, 0x8e, 0x1d, 0xc6, 0x74, 0x45, 0xb6, 0xa0, 0x7e, 0xc0, 0xf8, 0xe0, 0x30, - 0x0b, 0x45, 0x1a, 0xba, 0x2a, 0x3d, 0x29, 0xf6, 0x23, 0x58, 0xd3, 0xd3, 0xc1, 0x09, 0xe9, 0x98, - 0xbe, 0x32, 0xf8, 0x45, 0xbd, 0xd7, 0xe7, 0xd4, 0xac, 0xc0, 0xc2, 0xa7, 0x29, 0xef, 0x83, 0x30, - 0x3a, 0x11, 0xf1, 0x02, 0x46, 0x0d, 0x7e, 0x75, 0xd3, 0x6a, 0x5b, 0xfd, 0x02, 0xae, 0x85, 0x7c, - 0xfa, 0x5c, 0x7a, 0x34, 0xfa, 0x53, 0x68, 0x64, 0xc6, 0x42, 0x3e, 0x88, 0x38, 0x5b, 0x95, 0x7e, - 0x01, 0x5f, 0x48, 0xa7, 0x44, 0x36, 0xd0, 0x2e, 0x6c, 0xa8, 0x8f, 0x49, 0xe6, 0x4c, 0xe6, 0xf8, - 0x25, 0x9d, 0x64, 0x53, 0xc1, 0x92, 0xe3, 0x99, 0x15, 0x79, 0x06, 0xe7, 0xb5, 0x88, 0x1c, 0x73, - 0x86, 0xba, 0x2c, 0xf7, 0xe7, 0xca, 0x09, 0x1f, 0x32, 0x81, 0x16, 0x05, 0x18, 0xa4, 0xaf, 0x5a, - 0xf2, 0x05, 0xac, 0xa7, 0x07, 0x31, 0xa7, 0x5a, 0x96, 0xaa, 0xad, 0xe3, 0x54, 0xf3, 0x63, 0x40, - 0x0c, 0xbb, 0x38, 0x67, 0xd1, 0xda, 0x1d, 0x40, 0xea, 0x6c, 0xe4, 0x16, 0x5a, 0x31, 0xe7, 0x54, - 0xfa, 0xb2, 0xcb, 0x7b, 0x9c, 0xe0, 0xb3, 0x79, 0xd4, 0x64, 0x1e, 0xff, 0x3f, 0x2e, 0x8f, 0x74, - 0x26, 0xa4, 0x7a, 0x99, 0xf8, 0x5f, 0xc0, 0xff, 0xe4, 0x67, 0xd6, 0x09, 0x44, 0xb1, 0xf9, 0xd4, - 0xe1, 0xa3, 0x51, 0x44, 0x63, 0x23, 0x0c, 0x9b, 0x56, 0x7b, 0xa9, 0x5f, 0xc0, 0x17, 0x25, 0xe8, - 0x29, 0x0d, 0x31, 0x9f, 0x3e, 0x91, 0x08, 0xcd, 0xff, 0x1c, 0x9a, 0x79, 0x3e, 0x73, 0x3d, 0x37, - 0xa1, 0xdb, 0x9a, 0xbe, 0x9e, 0xa1, 0x3f, 0x14, 0x00, 0xcd, 0xee, 0xc1, 0x46, 0xca, 0xd6, 0xdb, - 0x96, 0x13, 0xa8, 0x6a, 0x81, 0x4b, 0x46, 0x40, 0x6d, 0x56, 0x56, 0xe3, 0x13, 0xb8, 0x18, 0xc5, - 0xa1, 0x1b, 0xe8, 0x19, 0x13, 0x87, 0xc4, 0x8f, 0x46, 0x3c, 0xf4, 0x68, 0xd8, 0x58, 0xd1, 0x87, - 0xe0, 0x82, 0x04, 0xc8, 0x4a, 0xec, 0xa5, 0x6e, 0xc1, 0x24, 0x41, 0xc0, 0x66, 0x8e, 0xbc, 0x08, - 0xe4, 0x98, 0xe7, 0x4d, 0xa7, 0x4a, 0xc0, 0x43, 0xe1, 0xcf, 0x30, 0x9b, 0x77, 0x60, 0x49, 0x0e, - 0x16, 0xf4, 0x31, 0x2c, 0xab, 0x4c, 0xd5, 0xb7, 0xd6, 0xee, 0x6e, 0x9c, 0x38, 0x01, 0xb0, 0x41, - 0x37, 0xbf, 0x04, 0x48, 0x07, 0xcb, 0x7f, 0x97, 0xf9, 0xd3, 0x82, 0x4a, 0x32, 0x55, 0x50, 0x1f, - 0xea, 0x41, 0x48, 0x87, 0xee, 0x80, 0xc4, 0x49, 0x6b, 0xa8, 0x29, 0x79, 0x8a, 0x5e, 0x2d, 0xa1, - 0x25, 0x6d, 0x61, 0xc7, 0xe1, 0x24, 0x11, 0x59, 0x38, 0x8b, 0x08, 0x08, 0x86, 0xe6, 0xdf, 0x81, - 0xea, 0x88, 0xb0, 0x28, 0x11, 0x28, 0x9e, 0x45, 0xc0, 0x96, 0x14, 0xf5, 0xd2, 0x2b, 0x43, 0x49, - 0x71, 0x5b, 0x7f, 0x2f, 0x41, 0xf9, 0xd1, 0x24, 0x26, 0x72, 0x89, 0x3b, 0x50, 0x16, 0xed, 0x29, - 0xda, 0x41, 0x2f, 0xed, 0x9d, 0xe3, 0x44, 0x0d, 0xbe, 0xf3, 0x9c, 0xc6, 0xe2, 0xf6, 0xd8, 0x2f, - 0xe0, 0xe5, 0x48, 0x3d, 0xa2, 0x6f, 0x01, 0x0d, 0x29, 0xa3, 0xa2, 0x44, 0x21, 0xf7, 0x74, 0xdb, - 0xe9, 0x25, 0x7e, 0x70, 0xa2, 0xd8, 0x5d, 0x49, 0xbb, 0x17, 0x72, 0x4f, 0xb5, 0xa1, 0x38, 0x51, - 0xc3, 0x39, 0xdb, 0xbc, 0xbc, 0x1a, 0x75, 0xba, 0x00, 0x67, 0x95, 0x57, 0x97, 0xf3, 0xbc, 0xbc, - 0xbe, 0xb0, 0xef, 0x41, 0x2d, 0x2b, 0x1f, 0xf2, 0xa9, 0x9c, 0xdd, 0x76, 0x77, 0xeb, 0x8c, 0xda, - 0x98, 0x4f, 0xc5, 0x27, 0x64, 0x98, 0x35, 0x34, 0x7f, 0xb4, 0x60, 0x59, 0x97, 0xea, 0xf4, 0x8b, - 0xdd, 0x75, 0xa8, 0xcf, 0xcf, 0x69, 0x7d, 0xd3, 0xae, 0xcd, 0x0d, 0xe6, 0x63, 0x2f, 0xed, 0xc5, - 0x53, 0x2e, 0xed, 0x8b, 0x99, 0x4b, 0x7b, 0xf3, 0x67, 0x0b, 0xea, 0xf3, 0x65, 0x7f, 0xab, 0x19, - 0xee, 0x00, 0x88, 0x4c, 0xd4, 0x3c, 0xd5, 0xdb, 0x74, 0x86, 0x81, 0x8e, 0x2b, 0x82, 0x25, 0x1f, - 0x9b, 0x37, 0xb2, 0x29, 0xea, 0x6d, 0x3a, 0x2d, 0xc5, 0x66, 0x0d, 0x56, 0x72, 0x7b, 0xd2, 0x03, - 0x28, 0x7b, 0x7a, 0xb7, 0x5a, 0xbf, 0x59, 0x70, 0x1e, 0x53, 0x32, 0x7c, 0xc4, 0x87, 0xee, 0x68, - 0xf6, 0x4d, 0xe8, 0xc6, 0x14, 0x4f, 0x18, 0x7d, 0xab, 0x0b, 0xbf, 0x0a, 0x55, 0x12, 0x04, 0xc9, - 0x2d, 0x2b, 0xb9, 0x5e, 0xdb, 0xca, 0x2a, 0xa7, 0x25, 0x7a, 0x0f, 0xea, 0xae, 0x3f, 0x08, 0xa9, - 0x47, 0xfd, 0xd8, 0x21, 0x1e, 0x9f, 0xf8, 0xb1, 0xdc, 0x9f, 0xa2, 0xf8, 0xf4, 0x27, 0x9e, 0x1d, - 0xe9, 0xe8, 0x95, 0x60, 0x31, 0x9c, 0x30, 0xda, 0xfb, 0xc9, 0x82, 0xf5, 0x01, 0xf7, 0x8e, 0x29, - 0x62, 0xaf, 0x72, 0x97, 0xc4, 0xe4, 0xa9, 0xf8, 0xd1, 0x7d, 0x6a, 0xbd, 0xf8, 0x4c, 0x03, 0xc6, - 0x9c, 0x11, 0x7f, 0xdc, 0xe1, 0xe1, 0x78, 0x7b, 0x4c, 0x7d, 0xf9, 0x1b, 0xbc, 0xad, 0x5c, 0x24, - 0x70, 0xa3, 0xec, 0x8f, 0xf2, 0x6d, 0xf3, 0xfc, 0xeb, 0x42, 0xe3, 0xbe, 0x22, 0xef, 0x32, 0x3e, - 0x19, 0x76, 0x7a, 0x26, 0xc6, 0x7e, 0xf7, 0x0f, 0xe3, 0x7a, 0x29, 0x5d, 0x2f, 0x8d, 0xeb, 0xe5, - 0x7e, 0xf7, 0xa0, 0x24, 0xc5, 0x6f, 0xfc, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x05, 0xf7, 0x92, 0x43, - 0x84, 0x0f, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/bytestream/bytestream.pb.go b/vendor/google.golang.org/genproto/googleapis/bytestream/bytestream.pb.go deleted file mode 100644 index 80149480..00000000 --- a/vendor/google.golang.org/genproto/googleapis/bytestream/bytestream.pb.go +++ /dev/null @@ -1,555 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/bytestream/bytestream.proto - -/* -Package bytestream is a generated protocol buffer package. - -It is generated from these files: - google/bytestream/bytestream.proto - -It has these top-level messages: - ReadRequest - ReadResponse - WriteRequest - WriteResponse - QueryWriteStatusRequest - QueryWriteStatusResponse -*/ -package bytestream - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "github.com/golang/protobuf/ptypes/wrappers" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Request object for ByteStream.Read. -type ReadRequest struct { - // The name of the resource to read. - ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName" json:"resource_name,omitempty"` - // The offset for the first byte to return in the read, relative to the start - // of the resource. - // - // A `read_offset` that is negative or greater than the size of the resource - // will cause an `OUT_OF_RANGE` error. - ReadOffset int64 `protobuf:"varint,2,opt,name=read_offset,json=readOffset" json:"read_offset,omitempty"` - // The maximum number of `data` bytes the server is allowed to return in the - // sum of all `ReadResponse` messages. A `read_limit` of zero indicates that - // there is no limit, and a negative `read_limit` will cause an error. - // - // If the stream returns fewer bytes than allowed by the `read_limit` and no - // error occurred, the stream includes all data from the `read_offset` to the - // end of the resource. - ReadLimit int64 `protobuf:"varint,3,opt,name=read_limit,json=readLimit" json:"read_limit,omitempty"` -} - -func (m *ReadRequest) Reset() { *m = ReadRequest{} } -func (m *ReadRequest) String() string { return proto.CompactTextString(m) } -func (*ReadRequest) ProtoMessage() {} -func (*ReadRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ReadRequest) GetResourceName() string { - if m != nil { - return m.ResourceName - } - return "" -} - -func (m *ReadRequest) GetReadOffset() int64 { - if m != nil { - return m.ReadOffset - } - return 0 -} - -func (m *ReadRequest) GetReadLimit() int64 { - if m != nil { - return m.ReadLimit - } - return 0 -} - -// Response object for ByteStream.Read. -type ReadResponse struct { - // A portion of the data for the resource. The service **may** leave `data` - // empty for any given `ReadResponse`. This enables the service to inform the - // client that the request is still live while it is running an operation to - // generate more data. - Data []byte `protobuf:"bytes,10,opt,name=data,proto3" json:"data,omitempty"` -} - -func (m *ReadResponse) Reset() { *m = ReadResponse{} } -func (m *ReadResponse) String() string { return proto.CompactTextString(m) } -func (*ReadResponse) ProtoMessage() {} -func (*ReadResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ReadResponse) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -// Request object for ByteStream.Write. -type WriteRequest struct { - // The name of the resource to write. This **must** be set on the first - // `WriteRequest` of each `Write()` action. If it is set on subsequent calls, - // it **must** match the value of the first request. - ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName" json:"resource_name,omitempty"` - // The offset from the beginning of the resource at which the data should be - // written. It is required on all `WriteRequest`s. - // - // In the first `WriteRequest` of a `Write()` action, it indicates - // the initial offset for the `Write()` call. The value **must** be equal to - // the `committed_size` that a call to `QueryWriteStatus()` would return. - // - // On subsequent calls, this value **must** be set and **must** be equal to - // the sum of the first `write_offset` and the sizes of all `data` bundles - // sent previously on this stream. - // - // An incorrect value will cause an error. - WriteOffset int64 `protobuf:"varint,2,opt,name=write_offset,json=writeOffset" json:"write_offset,omitempty"` - // If `true`, this indicates that the write is complete. Sending any - // `WriteRequest`s subsequent to one in which `finish_write` is `true` will - // cause an error. - FinishWrite bool `protobuf:"varint,3,opt,name=finish_write,json=finishWrite" json:"finish_write,omitempty"` - // A portion of the data for the resource. The client **may** leave `data` - // empty for any given `WriteRequest`. This enables the client to inform the - // service that the request is still live while it is running an operation to - // generate more data. - Data []byte `protobuf:"bytes,10,opt,name=data,proto3" json:"data,omitempty"` -} - -func (m *WriteRequest) Reset() { *m = WriteRequest{} } -func (m *WriteRequest) String() string { return proto.CompactTextString(m) } -func (*WriteRequest) ProtoMessage() {} -func (*WriteRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *WriteRequest) GetResourceName() string { - if m != nil { - return m.ResourceName - } - return "" -} - -func (m *WriteRequest) GetWriteOffset() int64 { - if m != nil { - return m.WriteOffset - } - return 0 -} - -func (m *WriteRequest) GetFinishWrite() bool { - if m != nil { - return m.FinishWrite - } - return false -} - -func (m *WriteRequest) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -// Response object for ByteStream.Write. -type WriteResponse struct { - // The number of bytes that have been processed for the given resource. - CommittedSize int64 `protobuf:"varint,1,opt,name=committed_size,json=committedSize" json:"committed_size,omitempty"` -} - -func (m *WriteResponse) Reset() { *m = WriteResponse{} } -func (m *WriteResponse) String() string { return proto.CompactTextString(m) } -func (*WriteResponse) ProtoMessage() {} -func (*WriteResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *WriteResponse) GetCommittedSize() int64 { - if m != nil { - return m.CommittedSize - } - return 0 -} - -// Request object for ByteStream.QueryWriteStatus. -type QueryWriteStatusRequest struct { - // The name of the resource whose write status is being requested. - ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName" json:"resource_name,omitempty"` -} - -func (m *QueryWriteStatusRequest) Reset() { *m = QueryWriteStatusRequest{} } -func (m *QueryWriteStatusRequest) String() string { return proto.CompactTextString(m) } -func (*QueryWriteStatusRequest) ProtoMessage() {} -func (*QueryWriteStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *QueryWriteStatusRequest) GetResourceName() string { - if m != nil { - return m.ResourceName - } - return "" -} - -// Response object for ByteStream.QueryWriteStatus. -type QueryWriteStatusResponse struct { - // The number of bytes that have been processed for the given resource. - CommittedSize int64 `protobuf:"varint,1,opt,name=committed_size,json=committedSize" json:"committed_size,omitempty"` - // `complete` is `true` only if the client has sent a `WriteRequest` with - // `finish_write` set to true, and the server has processed that request. - Complete bool `protobuf:"varint,2,opt,name=complete" json:"complete,omitempty"` -} - -func (m *QueryWriteStatusResponse) Reset() { *m = QueryWriteStatusResponse{} } -func (m *QueryWriteStatusResponse) String() string { return proto.CompactTextString(m) } -func (*QueryWriteStatusResponse) ProtoMessage() {} -func (*QueryWriteStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *QueryWriteStatusResponse) GetCommittedSize() int64 { - if m != nil { - return m.CommittedSize - } - return 0 -} - -func (m *QueryWriteStatusResponse) GetComplete() bool { - if m != nil { - return m.Complete - } - return false -} - -func init() { - proto.RegisterType((*ReadRequest)(nil), "google.bytestream.ReadRequest") - proto.RegisterType((*ReadResponse)(nil), "google.bytestream.ReadResponse") - proto.RegisterType((*WriteRequest)(nil), "google.bytestream.WriteRequest") - proto.RegisterType((*WriteResponse)(nil), "google.bytestream.WriteResponse") - proto.RegisterType((*QueryWriteStatusRequest)(nil), "google.bytestream.QueryWriteStatusRequest") - proto.RegisterType((*QueryWriteStatusResponse)(nil), "google.bytestream.QueryWriteStatusResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ByteStream service - -type ByteStreamClient interface { - // `Read()` is used to retrieve the contents of a resource as a sequence - // of bytes. The bytes are returned in a sequence of responses, and the - // responses are delivered as the results of a server-side streaming RPC. - Read(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (ByteStream_ReadClient, error) - // `Write()` is used to send the contents of a resource as a sequence of - // bytes. The bytes are sent in a sequence of request protos of a client-side - // streaming RPC. - // - // A `Write()` action is resumable. If there is an error or the connection is - // broken during the `Write()`, the client should check the status of the - // `Write()` by calling `QueryWriteStatus()` and continue writing from the - // returned `committed_size`. This may be less than the amount of data the - // client previously sent. - // - // Calling `Write()` on a resource name that was previously written and - // finalized could cause an error, depending on whether the underlying service - // allows over-writing of previously written resources. - // - // When the client closes the request channel, the service will respond with - // a `WriteResponse`. The service will not view the resource as `complete` - // until the client has sent a `WriteRequest` with `finish_write` set to - // `true`. Sending any requests on a stream after sending a request with - // `finish_write` set to `true` will cause an error. The client **should** - // check the `WriteResponse` it receives to determine how much data the - // service was able to commit and whether the service views the resource as - // `complete` or not. - Write(ctx context.Context, opts ...grpc.CallOption) (ByteStream_WriteClient, error) - // `QueryWriteStatus()` is used to find the `committed_size` for a resource - // that is being written, which can then be used as the `write_offset` for - // the next `Write()` call. - // - // If the resource does not exist (i.e., the resource has been deleted, or the - // first `Write()` has not yet reached the service), this method returns the - // error `NOT_FOUND`. - // - // The client **may** call `QueryWriteStatus()` at any time to determine how - // much data has been processed for this resource. This is useful if the - // client is buffering data and needs to know which data can be safely - // evicted. For any sequence of `QueryWriteStatus()` calls for a given - // resource name, the sequence of returned `committed_size` values will be - // non-decreasing. - QueryWriteStatus(ctx context.Context, in *QueryWriteStatusRequest, opts ...grpc.CallOption) (*QueryWriteStatusResponse, error) -} - -type byteStreamClient struct { - cc *grpc.ClientConn -} - -func NewByteStreamClient(cc *grpc.ClientConn) ByteStreamClient { - return &byteStreamClient{cc} -} - -func (c *byteStreamClient) Read(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (ByteStream_ReadClient, error) { - stream, err := grpc.NewClientStream(ctx, &_ByteStream_serviceDesc.Streams[0], c.cc, "/google.bytestream.ByteStream/Read", opts...) - if err != nil { - return nil, err - } - x := &byteStreamReadClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type ByteStream_ReadClient interface { - Recv() (*ReadResponse, error) - grpc.ClientStream -} - -type byteStreamReadClient struct { - grpc.ClientStream -} - -func (x *byteStreamReadClient) Recv() (*ReadResponse, error) { - m := new(ReadResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *byteStreamClient) Write(ctx context.Context, opts ...grpc.CallOption) (ByteStream_WriteClient, error) { - stream, err := grpc.NewClientStream(ctx, &_ByteStream_serviceDesc.Streams[1], c.cc, "/google.bytestream.ByteStream/Write", opts...) - if err != nil { - return nil, err - } - x := &byteStreamWriteClient{stream} - return x, nil -} - -type ByteStream_WriteClient interface { - Send(*WriteRequest) error - CloseAndRecv() (*WriteResponse, error) - grpc.ClientStream -} - -type byteStreamWriteClient struct { - grpc.ClientStream -} - -func (x *byteStreamWriteClient) Send(m *WriteRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *byteStreamWriteClient) CloseAndRecv() (*WriteResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(WriteResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *byteStreamClient) QueryWriteStatus(ctx context.Context, in *QueryWriteStatusRequest, opts ...grpc.CallOption) (*QueryWriteStatusResponse, error) { - out := new(QueryWriteStatusResponse) - err := grpc.Invoke(ctx, "/google.bytestream.ByteStream/QueryWriteStatus", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ByteStream service - -type ByteStreamServer interface { - // `Read()` is used to retrieve the contents of a resource as a sequence - // of bytes. The bytes are returned in a sequence of responses, and the - // responses are delivered as the results of a server-side streaming RPC. - Read(*ReadRequest, ByteStream_ReadServer) error - // `Write()` is used to send the contents of a resource as a sequence of - // bytes. The bytes are sent in a sequence of request protos of a client-side - // streaming RPC. - // - // A `Write()` action is resumable. If there is an error or the connection is - // broken during the `Write()`, the client should check the status of the - // `Write()` by calling `QueryWriteStatus()` and continue writing from the - // returned `committed_size`. This may be less than the amount of data the - // client previously sent. - // - // Calling `Write()` on a resource name that was previously written and - // finalized could cause an error, depending on whether the underlying service - // allows over-writing of previously written resources. - // - // When the client closes the request channel, the service will respond with - // a `WriteResponse`. The service will not view the resource as `complete` - // until the client has sent a `WriteRequest` with `finish_write` set to - // `true`. Sending any requests on a stream after sending a request with - // `finish_write` set to `true` will cause an error. The client **should** - // check the `WriteResponse` it receives to determine how much data the - // service was able to commit and whether the service views the resource as - // `complete` or not. - Write(ByteStream_WriteServer) error - // `QueryWriteStatus()` is used to find the `committed_size` for a resource - // that is being written, which can then be used as the `write_offset` for - // the next `Write()` call. - // - // If the resource does not exist (i.e., the resource has been deleted, or the - // first `Write()` has not yet reached the service), this method returns the - // error `NOT_FOUND`. - // - // The client **may** call `QueryWriteStatus()` at any time to determine how - // much data has been processed for this resource. This is useful if the - // client is buffering data and needs to know which data can be safely - // evicted. For any sequence of `QueryWriteStatus()` calls for a given - // resource name, the sequence of returned `committed_size` values will be - // non-decreasing. - QueryWriteStatus(context.Context, *QueryWriteStatusRequest) (*QueryWriteStatusResponse, error) -} - -func RegisterByteStreamServer(s *grpc.Server, srv ByteStreamServer) { - s.RegisterService(&_ByteStream_serviceDesc, srv) -} - -func _ByteStream_Read_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ReadRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(ByteStreamServer).Read(m, &byteStreamReadServer{stream}) -} - -type ByteStream_ReadServer interface { - Send(*ReadResponse) error - grpc.ServerStream -} - -type byteStreamReadServer struct { - grpc.ServerStream -} - -func (x *byteStreamReadServer) Send(m *ReadResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _ByteStream_Write_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(ByteStreamServer).Write(&byteStreamWriteServer{stream}) -} - -type ByteStream_WriteServer interface { - SendAndClose(*WriteResponse) error - Recv() (*WriteRequest, error) - grpc.ServerStream -} - -type byteStreamWriteServer struct { - grpc.ServerStream -} - -func (x *byteStreamWriteServer) SendAndClose(m *WriteResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *byteStreamWriteServer) Recv() (*WriteRequest, error) { - m := new(WriteRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _ByteStream_QueryWriteStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryWriteStatusRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ByteStreamServer).QueryWriteStatus(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.bytestream.ByteStream/QueryWriteStatus", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ByteStreamServer).QueryWriteStatus(ctx, req.(*QueryWriteStatusRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ByteStream_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.bytestream.ByteStream", - HandlerType: (*ByteStreamServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "QueryWriteStatus", - Handler: _ByteStream_QueryWriteStatus_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "Read", - Handler: _ByteStream_Read_Handler, - ServerStreams: true, - }, - { - StreamName: "Write", - Handler: _ByteStream_Write_Handler, - ClientStreams: true, - }, - }, - Metadata: "google/bytestream/bytestream.proto", -} - -func init() { proto.RegisterFile("google/bytestream/bytestream.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 446 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0x5b, 0x8b, 0x13, 0x31, - 0x14, 0x66, 0xb6, 0xab, 0x74, 0x4f, 0xa7, 0x5e, 0x02, 0xe2, 0x30, 0xe8, 0x6e, 0x77, 0x44, 0x28, - 0x0a, 0x33, 0xa2, 0xe0, 0xcb, 0x82, 0x0f, 0x7d, 0x13, 0x16, 0x2f, 0xd9, 0x07, 0x41, 0x90, 0x21, - 0x6d, 0x4f, 0xc7, 0x60, 0x93, 0x8c, 0x49, 0x86, 0xa5, 0xfb, 0x1f, 0x7c, 0xf1, 0x17, 0x4b, 0x92, - 0xb1, 0x1d, 0x6d, 0x0b, 0xdb, 0xb7, 0xe4, 0xbb, 0xcc, 0xf9, 0xe6, 0xe4, 0x1c, 0xc8, 0x2a, 0xa5, - 0xaa, 0x25, 0x16, 0xd3, 0x95, 0x45, 0x63, 0x35, 0x32, 0xd1, 0x39, 0xe6, 0xb5, 0x56, 0x56, 0x91, - 0x87, 0x41, 0x93, 0x6f, 0x88, 0xf4, 0x49, 0x6b, 0x63, 0x35, 0x2f, 0x98, 0x94, 0xca, 0x32, 0xcb, - 0x95, 0x34, 0xc1, 0x90, 0x9e, 0xb6, 0xac, 0xbf, 0x4d, 0x9b, 0x45, 0x71, 0xad, 0x59, 0x5d, 0xa3, - 0x6e, 0xf9, 0x4c, 0xc3, 0x80, 0x22, 0x9b, 0x53, 0xfc, 0xd9, 0xa0, 0xb1, 0xe4, 0x19, 0x0c, 0x35, - 0x1a, 0xd5, 0xe8, 0x19, 0x96, 0x92, 0x09, 0x4c, 0xa2, 0x51, 0x34, 0x3e, 0xa1, 0xf1, 0x5f, 0xf0, - 0x03, 0x13, 0x48, 0xce, 0x60, 0xa0, 0x91, 0xcd, 0x4b, 0xb5, 0x58, 0x18, 0xb4, 0xc9, 0xd1, 0x28, - 0x1a, 0xf7, 0x28, 0x38, 0xe8, 0xa3, 0x47, 0xc8, 0x53, 0xf0, 0xb7, 0x72, 0xc9, 0x05, 0xb7, 0x49, - 0xcf, 0xf3, 0x27, 0x0e, 0xb9, 0x74, 0x40, 0x96, 0x41, 0x1c, 0x6a, 0x9a, 0x5a, 0x49, 0x83, 0x84, - 0xc0, 0xf1, 0x9c, 0x59, 0x96, 0xc0, 0x28, 0x1a, 0xc7, 0xd4, 0x9f, 0xb3, 0x5f, 0x11, 0xc4, 0x5f, - 0x34, 0xb7, 0x78, 0x50, 0xb2, 0x73, 0x88, 0xaf, 0x9d, 0xe9, 0xdf, 0x68, 0x03, 0x8f, 0xb5, 0xd9, - 0xce, 0x21, 0x5e, 0x70, 0xc9, 0xcd, 0xf7, 0xd2, 0xa3, 0x3e, 0x5d, 0x9f, 0x0e, 0x02, 0xe6, 0x2b, - 0xee, 0xcc, 0xf3, 0x16, 0x86, 0x6d, 0x9c, 0x36, 0xf4, 0x73, 0xb8, 0x37, 0x53, 0x42, 0x70, 0x6b, - 0x71, 0x5e, 0x1a, 0x7e, 0x13, 0x02, 0xf5, 0xe8, 0x70, 0x8d, 0x5e, 0xf1, 0x1b, 0xcc, 0xde, 0xc1, - 0xe3, 0xcf, 0x0d, 0xea, 0x95, 0x37, 0x5f, 0x59, 0x66, 0x1b, 0x73, 0xc8, 0x1f, 0x65, 0xdf, 0x20, - 0xd9, 0xf6, 0x1f, 0x14, 0x81, 0xa4, 0xd0, 0x9f, 0x29, 0x51, 0x2f, 0xd1, 0xa2, 0x6f, 0x48, 0x9f, - 0xae, 0xef, 0xaf, 0x7f, 0x1f, 0x01, 0x4c, 0x56, 0xee, 0xcb, 0x6e, 0x96, 0xc8, 0x7b, 0x38, 0x76, - 0x2f, 0x43, 0x4e, 0xf3, 0xad, 0x39, 0xcb, 0x3b, 0x63, 0x92, 0x9e, 0xed, 0xe5, 0x43, 0xb4, 0x57, - 0x11, 0xb9, 0x84, 0x3b, 0xa1, 0x9b, 0xbb, 0xb4, 0xdd, 0x97, 0x4d, 0x47, 0xfb, 0x05, 0xe1, 0x6b, - 0xe3, 0x88, 0xfc, 0x80, 0x07, 0xff, 0xb7, 0x81, 0xbc, 0xd8, 0xe1, 0xdb, 0xd3, 0xeb, 0xf4, 0xe5, - 0xad, 0xb4, 0xa1, 0xdc, 0x04, 0xe1, 0xd1, 0x4c, 0x89, 0x6d, 0xc7, 0xe4, 0xfe, 0xa6, 0x55, 0x9f, - 0xdc, 0xf6, 0x7c, 0xbd, 0x68, 0x35, 0x95, 0x5a, 0x32, 0x59, 0xe5, 0x4a, 0x57, 0x45, 0x85, 0xd2, - 0x6f, 0x56, 0x11, 0x28, 0x56, 0x73, 0xd3, 0x59, 0xe3, 0x8b, 0xcd, 0x71, 0x7a, 0xd7, 0xeb, 0xde, - 0xfc, 0x09, 0x00, 0x00, 0xff, 0xff, 0x8f, 0x91, 0x09, 0xd4, 0xf8, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/audit/audit_log.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/audit/audit_log.pb.go deleted file mode 100644 index 33c48ea6..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/audit/audit_log.pb.go +++ /dev/null @@ -1,310 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/audit/audit_log.proto - -/* -Package audit is a generated protocol buffer package. - -It is generated from these files: - google/cloud/audit/audit_log.proto - -It has these top-level messages: - AuditLog - AuthenticationInfo - AuthorizationInfo - RequestMetadata -*/ -package audit - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" -import google_protobuf2 "github.com/golang/protobuf/ptypes/struct" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Common audit log format for Google Cloud Platform API operations. -type AuditLog struct { - // The name of the API service performing the operation. For example, - // `"datastore.googleapis.com"`. - ServiceName string `protobuf:"bytes,7,opt,name=service_name,json=serviceName" json:"service_name,omitempty"` - // The name of the service method or operation. - // For API calls, this should be the name of the API method. - // For example, - // - // "google.datastore.v1.Datastore.RunQuery" - // "google.logging.v1.LoggingService.DeleteLog" - MethodName string `protobuf:"bytes,8,opt,name=method_name,json=methodName" json:"method_name,omitempty"` - // The resource or collection that is the target of the operation. - // The name is a scheme-less URI, not including the API service name. - // For example: - // - // "shelves/SHELF_ID/books" - // "shelves/SHELF_ID/books/BOOK_ID" - ResourceName string `protobuf:"bytes,11,opt,name=resource_name,json=resourceName" json:"resource_name,omitempty"` - // The number of items returned from a List or Query API method, - // if applicable. - NumResponseItems int64 `protobuf:"varint,12,opt,name=num_response_items,json=numResponseItems" json:"num_response_items,omitempty"` - // The status of the overall operation. - Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` - // Authentication information. - AuthenticationInfo *AuthenticationInfo `protobuf:"bytes,3,opt,name=authentication_info,json=authenticationInfo" json:"authentication_info,omitempty"` - // Authorization information. If there are multiple - // resources or permissions involved, then there is - // one AuthorizationInfo element for each {resource, permission} tuple. - AuthorizationInfo []*AuthorizationInfo `protobuf:"bytes,9,rep,name=authorization_info,json=authorizationInfo" json:"authorization_info,omitempty"` - // Metadata about the operation. - RequestMetadata *RequestMetadata `protobuf:"bytes,4,opt,name=request_metadata,json=requestMetadata" json:"request_metadata,omitempty"` - // The operation request. This may not include all request parameters, - // such as those that are too large, privacy-sensitive, or duplicated - // elsewhere in the log record. - // It should never include user-generated data, such as file contents. - // When the JSON object represented here has a proto equivalent, the proto - // name will be indicated in the `@type` property. - Request *google_protobuf2.Struct `protobuf:"bytes,16,opt,name=request" json:"request,omitempty"` - // The operation response. This may not include all response elements, - // such as those that are too large, privacy-sensitive, or duplicated - // elsewhere in the log record. - // It should never include user-generated data, such as file contents. - // When the JSON object represented here has a proto equivalent, the proto - // name will be indicated in the `@type` property. - Response *google_protobuf2.Struct `protobuf:"bytes,17,opt,name=response" json:"response,omitempty"` - // Other service-specific data about the request, response, and other - // activities. - ServiceData *google_protobuf1.Any `protobuf:"bytes,15,opt,name=service_data,json=serviceData" json:"service_data,omitempty"` -} - -func (m *AuditLog) Reset() { *m = AuditLog{} } -func (m *AuditLog) String() string { return proto.CompactTextString(m) } -func (*AuditLog) ProtoMessage() {} -func (*AuditLog) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *AuditLog) GetServiceName() string { - if m != nil { - return m.ServiceName - } - return "" -} - -func (m *AuditLog) GetMethodName() string { - if m != nil { - return m.MethodName - } - return "" -} - -func (m *AuditLog) GetResourceName() string { - if m != nil { - return m.ResourceName - } - return "" -} - -func (m *AuditLog) GetNumResponseItems() int64 { - if m != nil { - return m.NumResponseItems - } - return 0 -} - -func (m *AuditLog) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func (m *AuditLog) GetAuthenticationInfo() *AuthenticationInfo { - if m != nil { - return m.AuthenticationInfo - } - return nil -} - -func (m *AuditLog) GetAuthorizationInfo() []*AuthorizationInfo { - if m != nil { - return m.AuthorizationInfo - } - return nil -} - -func (m *AuditLog) GetRequestMetadata() *RequestMetadata { - if m != nil { - return m.RequestMetadata - } - return nil -} - -func (m *AuditLog) GetRequest() *google_protobuf2.Struct { - if m != nil { - return m.Request - } - return nil -} - -func (m *AuditLog) GetResponse() *google_protobuf2.Struct { - if m != nil { - return m.Response - } - return nil -} - -func (m *AuditLog) GetServiceData() *google_protobuf1.Any { - if m != nil { - return m.ServiceData - } - return nil -} - -// Authentication information for the operation. -type AuthenticationInfo struct { - // The email address of the authenticated user making the request. - PrincipalEmail string `protobuf:"bytes,1,opt,name=principal_email,json=principalEmail" json:"principal_email,omitempty"` -} - -func (m *AuthenticationInfo) Reset() { *m = AuthenticationInfo{} } -func (m *AuthenticationInfo) String() string { return proto.CompactTextString(m) } -func (*AuthenticationInfo) ProtoMessage() {} -func (*AuthenticationInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *AuthenticationInfo) GetPrincipalEmail() string { - if m != nil { - return m.PrincipalEmail - } - return "" -} - -// Authorization information for the operation. -type AuthorizationInfo struct { - // The resource being accessed, as a REST-style string. For example: - // - // bigquery.googlapis.com/projects/PROJECTID/datasets/DATASETID - Resource string `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` - // The required IAM permission. - Permission string `protobuf:"bytes,2,opt,name=permission" json:"permission,omitempty"` - // Whether or not authorization for `resource` and `permission` - // was granted. - Granted bool `protobuf:"varint,3,opt,name=granted" json:"granted,omitempty"` -} - -func (m *AuthorizationInfo) Reset() { *m = AuthorizationInfo{} } -func (m *AuthorizationInfo) String() string { return proto.CompactTextString(m) } -func (*AuthorizationInfo) ProtoMessage() {} -func (*AuthorizationInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *AuthorizationInfo) GetResource() string { - if m != nil { - return m.Resource - } - return "" -} - -func (m *AuthorizationInfo) GetPermission() string { - if m != nil { - return m.Permission - } - return "" -} - -func (m *AuthorizationInfo) GetGranted() bool { - if m != nil { - return m.Granted - } - return false -} - -// Metadata about the request. -type RequestMetadata struct { - // The IP address of the caller. - CallerIp string `protobuf:"bytes,1,opt,name=caller_ip,json=callerIp" json:"caller_ip,omitempty"` - // The user agent of the caller. - // This information is not authenticated and should be treated accordingly. - // For example: - // - // + `google-api-python-client/1.4.0`: - // The request was made by the Google API client for Python. - // + `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`: - // The request was made by the Google Cloud SDK CLI (gcloud). - // + `AppEngine-Google; (+http://code.google.com/appengine; appid: s~my-project`: - // The request was made from the `my-project` App Engine app. - CallerSuppliedUserAgent string `protobuf:"bytes,2,opt,name=caller_supplied_user_agent,json=callerSuppliedUserAgent" json:"caller_supplied_user_agent,omitempty"` -} - -func (m *RequestMetadata) Reset() { *m = RequestMetadata{} } -func (m *RequestMetadata) String() string { return proto.CompactTextString(m) } -func (*RequestMetadata) ProtoMessage() {} -func (*RequestMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *RequestMetadata) GetCallerIp() string { - if m != nil { - return m.CallerIp - } - return "" -} - -func (m *RequestMetadata) GetCallerSuppliedUserAgent() string { - if m != nil { - return m.CallerSuppliedUserAgent - } - return "" -} - -func init() { - proto.RegisterType((*AuditLog)(nil), "google.cloud.audit.AuditLog") - proto.RegisterType((*AuthenticationInfo)(nil), "google.cloud.audit.AuthenticationInfo") - proto.RegisterType((*AuthorizationInfo)(nil), "google.cloud.audit.AuthorizationInfo") - proto.RegisterType((*RequestMetadata)(nil), "google.cloud.audit.RequestMetadata") -} - -func init() { proto.RegisterFile("google/cloud/audit/audit_log.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 576 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x5f, 0x6f, 0xd3, 0x30, - 0x14, 0xc5, 0x55, 0x36, 0x6d, 0xad, 0xbb, 0xd1, 0xd6, 0x20, 0x1a, 0xca, 0x04, 0xa5, 0x13, 0x50, - 0x21, 0x94, 0x88, 0xed, 0x61, 0x0f, 0x13, 0x0f, 0x9d, 0xe0, 0xa1, 0x12, 0x4c, 0x53, 0x0a, 0x42, - 0xe2, 0x25, 0x72, 0x93, 0xdb, 0xcc, 0x22, 0xb1, 0x8d, 0xff, 0x20, 0x8d, 0xef, 0xcc, 0x77, 0x40, - 0xbd, 0x71, 0x4a, 0xd7, 0x0e, 0x5e, 0x2c, 0xf9, 0x9c, 0xdf, 0xbd, 0x76, 0xaf, 0x4f, 0x43, 0x46, - 0xb9, 0x94, 0x79, 0x01, 0x51, 0x5a, 0x48, 0x97, 0x45, 0xcc, 0x65, 0xdc, 0x56, 0x6b, 0x52, 0xc8, - 0x3c, 0x54, 0x5a, 0x5a, 0x49, 0x69, 0xc5, 0x84, 0xc8, 0x84, 0xe8, 0x0e, 0x8e, 0x7c, 0x1d, 0x53, - 0x3c, 0x62, 0x42, 0x48, 0xcb, 0x2c, 0x97, 0xc2, 0x54, 0x15, 0x83, 0xc7, 0xde, 0xc5, 0xdd, 0xdc, - 0x2d, 0x22, 0x26, 0x6e, 0xbc, 0x75, 0xb4, 0x69, 0x19, 0xab, 0x5d, 0x6a, 0xbd, 0xdb, 0xf7, 0xae, - 0x56, 0x69, 0x64, 0x2c, 0xb3, 0xce, 0x77, 0x1c, 0xfd, 0xde, 0x25, 0xcd, 0xc9, 0xf2, 0xe4, 0x8f, - 0x32, 0xa7, 0xcf, 0xc9, 0x81, 0x01, 0xfd, 0x93, 0xa7, 0x90, 0x08, 0x56, 0x42, 0xb0, 0x3f, 0x6c, - 0x8c, 0x5b, 0x71, 0xdb, 0x6b, 0x97, 0xac, 0x04, 0xfa, 0x8c, 0xb4, 0x4b, 0xb0, 0xd7, 0x32, 0xab, - 0x88, 0x26, 0x12, 0xa4, 0x92, 0x10, 0x38, 0x26, 0x87, 0x1a, 0x8c, 0x74, 0xba, 0x6e, 0xd2, 0x46, - 0xe4, 0xa0, 0x16, 0x11, 0x7a, 0x43, 0xa8, 0x70, 0x65, 0xa2, 0xc1, 0x28, 0x29, 0x0c, 0x24, 0xdc, - 0x42, 0x69, 0x82, 0x83, 0x61, 0x63, 0xbc, 0x13, 0x77, 0x85, 0x2b, 0x63, 0x6f, 0x4c, 0x97, 0x3a, - 0x7d, 0x4d, 0xf6, 0xaa, 0x3b, 0x07, 0xf7, 0x86, 0x8d, 0x71, 0xfb, 0x84, 0x86, 0x7e, 0x70, 0x5a, - 0xa5, 0xe1, 0x0c, 0x9d, 0xd8, 0x13, 0xf4, 0x2b, 0x79, 0xc0, 0x9c, 0xbd, 0x06, 0x61, 0x79, 0x8a, - 0xa3, 0x4b, 0xb8, 0x58, 0xc8, 0x60, 0x07, 0x0b, 0x5f, 0x86, 0xdb, 0x13, 0x0f, 0x27, 0xb7, 0xf0, - 0xa9, 0x58, 0xc8, 0x98, 0xb2, 0x2d, 0x8d, 0x7e, 0x26, 0xa8, 0x4a, 0xcd, 0x7f, 0xad, 0xf5, 0x6d, - 0x0d, 0x77, 0xc6, 0xed, 0x93, 0x17, 0xff, 0xea, 0xbb, 0xa2, 0xb1, 0x6d, 0x8f, 0x6d, 0x4a, 0xf4, - 0x92, 0x74, 0x35, 0xfc, 0x70, 0x60, 0x6c, 0x52, 0x82, 0x65, 0x19, 0xb3, 0x2c, 0xd8, 0xc5, 0xbb, - 0x1e, 0xdf, 0xd5, 0x33, 0xae, 0xd8, 0x4f, 0x1e, 0x8d, 0x3b, 0xfa, 0xb6, 0x40, 0xdf, 0x92, 0x7d, - 0x2f, 0x05, 0x5d, 0x6c, 0xd3, 0xaf, 0xdb, 0xd4, 0xb9, 0x08, 0x67, 0x98, 0x8b, 0xb8, 0xe6, 0xe8, - 0x29, 0x69, 0xd6, 0xef, 0x10, 0xf4, 0xfe, 0x5f, 0xb3, 0x02, 0xe9, 0xd9, 0xdf, 0xa4, 0xe0, 0x9d, - 0x3b, 0x58, 0xf8, 0x70, 0xab, 0x70, 0x22, 0x6e, 0x56, 0xf9, 0x79, 0xcf, 0x2c, 0x1b, 0xbd, 0x23, - 0x74, 0x7b, 0xe0, 0xf4, 0x15, 0xe9, 0x28, 0xcd, 0x45, 0xca, 0x15, 0x2b, 0x12, 0x28, 0x19, 0x2f, - 0x82, 0x06, 0xc6, 0xe6, 0xfe, 0x4a, 0xfe, 0xb0, 0x54, 0x47, 0x9c, 0xf4, 0xb6, 0xe6, 0x4a, 0x07, - 0xf8, 0x0b, 0x30, 0x5d, 0xbe, 0x6c, 0xb5, 0xa7, 0x4f, 0x09, 0x51, 0xa0, 0x4b, 0x6e, 0x0c, 0x97, - 0x02, 0xf3, 0xd3, 0x8a, 0xd7, 0x14, 0x1a, 0x90, 0xfd, 0x5c, 0x33, 0x61, 0x21, 0xc3, 0x8c, 0x34, - 0xe3, 0x7a, 0x3b, 0xfa, 0x4e, 0x3a, 0x1b, 0xe3, 0xa6, 0x4f, 0x48, 0x2b, 0x65, 0x45, 0x01, 0x3a, - 0xe1, 0xaa, 0x3e, 0xa9, 0x12, 0xa6, 0x8a, 0x9e, 0x93, 0x81, 0x37, 0x8d, 0x53, 0xaa, 0xe0, 0x90, - 0x25, 0xce, 0x80, 0x4e, 0x58, 0x0e, 0xc2, 0xfa, 0x93, 0xfb, 0x15, 0x31, 0xf3, 0xc0, 0x17, 0x03, - 0x7a, 0xb2, 0xb4, 0x2f, 0xe6, 0xe4, 0x51, 0x2a, 0xcb, 0x3b, 0x9e, 0xfc, 0xe2, 0xb0, 0xfe, 0x77, - 0x5e, 0x2d, 0x67, 0x7a, 0xd5, 0xf8, 0x76, 0xe6, 0xa1, 0x5c, 0x16, 0x4c, 0xe4, 0xa1, 0xd4, 0x79, - 0x94, 0x83, 0xc0, 0x89, 0x47, 0x95, 0xc5, 0x14, 0x37, 0xeb, 0x1f, 0x9e, 0x73, 0x5c, 0xe7, 0x7b, - 0xc8, 0x9c, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x90, 0xe4, 0x37, 0xbf, 0x9b, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1/datatransfer.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1/datatransfer.pb.go deleted file mode 100644 index 2afc5724..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1/datatransfer.pb.go +++ /dev/null @@ -1,1866 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/bigquery/datatransfer/v1/datatransfer.proto - -/* -Package datatransfer is a generated protocol buffer package. - -It is generated from these files: - google/cloud/bigquery/datatransfer/v1/datatransfer.proto - google/cloud/bigquery/datatransfer/v1/transfer.proto - -It has these top-level messages: - DataSourceParameter - DataSource - GetDataSourceRequest - ListDataSourcesRequest - ListDataSourcesResponse - CreateTransferConfigRequest - UpdateTransferConfigRequest - GetTransferConfigRequest - DeleteTransferConfigRequest - GetTransferRunRequest - DeleteTransferRunRequest - ListTransferConfigsRequest - ListTransferConfigsResponse - ListTransferRunsRequest - ListTransferRunsResponse - ListTransferLogsRequest - ListTransferLogsResponse - CheckValidCredsRequest - CheckValidCredsResponse - ScheduleTransferRunsRequest - ScheduleTransferRunsResponse - TransferConfig - TransferRun - TransferMessage -*/ -package datatransfer - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf5 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf6 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" -import google_protobuf7 "github.com/golang/protobuf/ptypes/wrappers" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Parameter type. -type DataSourceParameter_Type int32 - -const ( - // Type unspecified. - DataSourceParameter_TYPE_UNSPECIFIED DataSourceParameter_Type = 0 - // String parameter. - DataSourceParameter_STRING DataSourceParameter_Type = 1 - // Integer parameter (64-bits). - // Will be serialized to json as string. - DataSourceParameter_INTEGER DataSourceParameter_Type = 2 - // Double precision floating point parameter. - DataSourceParameter_DOUBLE DataSourceParameter_Type = 3 - // Boolean parameter. - DataSourceParameter_BOOLEAN DataSourceParameter_Type = 4 - // Record parameter. - DataSourceParameter_RECORD DataSourceParameter_Type = 5 - // Page ID for a Google+ Page. - DataSourceParameter_PLUS_PAGE DataSourceParameter_Type = 6 -) - -var DataSourceParameter_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "STRING", - 2: "INTEGER", - 3: "DOUBLE", - 4: "BOOLEAN", - 5: "RECORD", - 6: "PLUS_PAGE", -} -var DataSourceParameter_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "STRING": 1, - "INTEGER": 2, - "DOUBLE": 3, - "BOOLEAN": 4, - "RECORD": 5, - "PLUS_PAGE": 6, -} - -func (x DataSourceParameter_Type) String() string { - return proto.EnumName(DataSourceParameter_Type_name, int32(x)) -} -func (DataSourceParameter_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// The type of authorization needed for this data source. -type DataSource_AuthorizationType int32 - -const ( - // Type unspecified. - DataSource_AUTHORIZATION_TYPE_UNSPECIFIED DataSource_AuthorizationType = 0 - // Use OAuth 2 authorization codes that can be exchanged - // for a refresh token on the backend. - DataSource_AUTHORIZATION_CODE DataSource_AuthorizationType = 1 - // Return an authorization code for a given Google+ page that can then be - // exchanged for a refresh token on the backend. - DataSource_GOOGLE_PLUS_AUTHORIZATION_CODE DataSource_AuthorizationType = 2 -) - -var DataSource_AuthorizationType_name = map[int32]string{ - 0: "AUTHORIZATION_TYPE_UNSPECIFIED", - 1: "AUTHORIZATION_CODE", - 2: "GOOGLE_PLUS_AUTHORIZATION_CODE", -} -var DataSource_AuthorizationType_value = map[string]int32{ - "AUTHORIZATION_TYPE_UNSPECIFIED": 0, - "AUTHORIZATION_CODE": 1, - "GOOGLE_PLUS_AUTHORIZATION_CODE": 2, -} - -func (x DataSource_AuthorizationType) String() string { - return proto.EnumName(DataSource_AuthorizationType_name, int32(x)) -} -func (DataSource_AuthorizationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{1, 0} -} - -// Represents how the data source supports data auto refresh. -type DataSource_DataRefreshType int32 - -const ( - // The data source won't support data auto refresh, which is default value. - DataSource_DATA_REFRESH_TYPE_UNSPECIFIED DataSource_DataRefreshType = 0 - // The data source supports data auto refresh, and runs will be scheduled - // for the past few days. Does not allow custom values to be set for each - // transfer config. - DataSource_SLIDING_WINDOW DataSource_DataRefreshType = 1 - // The data source supports data auto refresh, and runs will be scheduled - // for the past few days. Allows custom values to be set for each transfer - // config. - DataSource_CUSTOM_SLIDING_WINDOW DataSource_DataRefreshType = 2 -) - -var DataSource_DataRefreshType_name = map[int32]string{ - 0: "DATA_REFRESH_TYPE_UNSPECIFIED", - 1: "SLIDING_WINDOW", - 2: "CUSTOM_SLIDING_WINDOW", -} -var DataSource_DataRefreshType_value = map[string]int32{ - "DATA_REFRESH_TYPE_UNSPECIFIED": 0, - "SLIDING_WINDOW": 1, - "CUSTOM_SLIDING_WINDOW": 2, -} - -func (x DataSource_DataRefreshType) String() string { - return proto.EnumName(DataSource_DataRefreshType_name, int32(x)) -} -func (DataSource_DataRefreshType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{1, 1} -} - -// Represents which runs should be pulled. -type ListTransferRunsRequest_RunAttempt int32 - -const ( - // All runs should be returned. - ListTransferRunsRequest_RUN_ATTEMPT_UNSPECIFIED ListTransferRunsRequest_RunAttempt = 0 - // Only latest run per day should be returned. - ListTransferRunsRequest_LATEST ListTransferRunsRequest_RunAttempt = 1 -) - -var ListTransferRunsRequest_RunAttempt_name = map[int32]string{ - 0: "RUN_ATTEMPT_UNSPECIFIED", - 1: "LATEST", -} -var ListTransferRunsRequest_RunAttempt_value = map[string]int32{ - "RUN_ATTEMPT_UNSPECIFIED": 0, - "LATEST": 1, -} - -func (x ListTransferRunsRequest_RunAttempt) String() string { - return proto.EnumName(ListTransferRunsRequest_RunAttempt_name, int32(x)) -} -func (ListTransferRunsRequest_RunAttempt) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{13, 0} -} - -// Represents a data source parameter with validation rules, so that -// parameters can be rendered in the UI. These parameters are given to us by -// supported data sources, and include all needed information for rendering -// and validation. -// Thus, whoever uses this api can decide to generate either generic ui, -// or custom data source specific forms. -type DataSourceParameter struct { - // Parameter identifier. - ParamId string `protobuf:"bytes,1,opt,name=param_id,json=paramId" json:"param_id,omitempty"` - // Parameter display name in the user interface. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Parameter description. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // Parameter type. - Type DataSourceParameter_Type `protobuf:"varint,4,opt,name=type,enum=google.cloud.bigquery.datatransfer.v1.DataSourceParameter_Type" json:"type,omitempty"` - // Is parameter required. - Required bool `protobuf:"varint,5,opt,name=required" json:"required,omitempty"` - // Can parameter have multiple values. - Repeated bool `protobuf:"varint,6,opt,name=repeated" json:"repeated,omitempty"` - // Regular expression which can be used for parameter validation. - ValidationRegex string `protobuf:"bytes,7,opt,name=validation_regex,json=validationRegex" json:"validation_regex,omitempty"` - // All possible values for the parameter. - AllowedValues []string `protobuf:"bytes,8,rep,name=allowed_values,json=allowedValues" json:"allowed_values,omitempty"` - // For integer and double values specifies minimum allowed value. - MinValue *google_protobuf7.DoubleValue `protobuf:"bytes,9,opt,name=min_value,json=minValue" json:"min_value,omitempty"` - // For integer and double values specifies maxminum allowed value. - MaxValue *google_protobuf7.DoubleValue `protobuf:"bytes,10,opt,name=max_value,json=maxValue" json:"max_value,omitempty"` - // When parameter is a record, describes child fields. - Fields []*DataSourceParameter `protobuf:"bytes,11,rep,name=fields" json:"fields,omitempty"` - // Description of the requirements for this field, in case the user input does - // not fulfill the regex pattern or min/max values. - ValidationDescription string `protobuf:"bytes,12,opt,name=validation_description,json=validationDescription" json:"validation_description,omitempty"` - // URL to a help document to further explain the naming requirements. - ValidationHelpUrl string `protobuf:"bytes,13,opt,name=validation_help_url,json=validationHelpUrl" json:"validation_help_url,omitempty"` - // Cannot be changed after initial creation. - Immutable bool `protobuf:"varint,14,opt,name=immutable" json:"immutable,omitempty"` - // If set to true, schema should be taken from the parent with the same - // parameter_id. Only applicable when parameter type is RECORD. - Recurse bool `protobuf:"varint,15,opt,name=recurse" json:"recurse,omitempty"` -} - -func (m *DataSourceParameter) Reset() { *m = DataSourceParameter{} } -func (m *DataSourceParameter) String() string { return proto.CompactTextString(m) } -func (*DataSourceParameter) ProtoMessage() {} -func (*DataSourceParameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *DataSourceParameter) GetParamId() string { - if m != nil { - return m.ParamId - } - return "" -} - -func (m *DataSourceParameter) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *DataSourceParameter) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *DataSourceParameter) GetType() DataSourceParameter_Type { - if m != nil { - return m.Type - } - return DataSourceParameter_TYPE_UNSPECIFIED -} - -func (m *DataSourceParameter) GetRequired() bool { - if m != nil { - return m.Required - } - return false -} - -func (m *DataSourceParameter) GetRepeated() bool { - if m != nil { - return m.Repeated - } - return false -} - -func (m *DataSourceParameter) GetValidationRegex() string { - if m != nil { - return m.ValidationRegex - } - return "" -} - -func (m *DataSourceParameter) GetAllowedValues() []string { - if m != nil { - return m.AllowedValues - } - return nil -} - -func (m *DataSourceParameter) GetMinValue() *google_protobuf7.DoubleValue { - if m != nil { - return m.MinValue - } - return nil -} - -func (m *DataSourceParameter) GetMaxValue() *google_protobuf7.DoubleValue { - if m != nil { - return m.MaxValue - } - return nil -} - -func (m *DataSourceParameter) GetFields() []*DataSourceParameter { - if m != nil { - return m.Fields - } - return nil -} - -func (m *DataSourceParameter) GetValidationDescription() string { - if m != nil { - return m.ValidationDescription - } - return "" -} - -func (m *DataSourceParameter) GetValidationHelpUrl() string { - if m != nil { - return m.ValidationHelpUrl - } - return "" -} - -func (m *DataSourceParameter) GetImmutable() bool { - if m != nil { - return m.Immutable - } - return false -} - -func (m *DataSourceParameter) GetRecurse() bool { - if m != nil { - return m.Recurse - } - return false -} - -// Represents data source metadata. Metadata is sufficient to -// render UI and request proper OAuth tokens. -type DataSource struct { - // Data source resource name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Data source id. - DataSourceId string `protobuf:"bytes,2,opt,name=data_source_id,json=dataSourceId" json:"data_source_id,omitempty"` - // User friendly data source name. - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // User friendly data source description string. - Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"` - // Data source client id which should be used to receive refresh token. - // When not supplied, no offline credentials are populated for data transfer. - ClientId string `protobuf:"bytes,5,opt,name=client_id,json=clientId" json:"client_id,omitempty"` - // Api auth scopes for which refresh token needs to be obtained. Only valid - // when `client_id` is specified. Ignored otherwise. These are scopes needed - // by a data source to prepare data and ingest them into BigQuery, - // e.g., https://www.googleapis.com/auth/bigquery - Scopes []string `protobuf:"bytes,6,rep,name=scopes" json:"scopes,omitempty"` - // Transfer type. Currently supports only batch transfers, - // which are transfers that use the BigQuery batch APIs (load or - // query) to ingest the data. - TransferType TransferType `protobuf:"varint,7,opt,name=transfer_type,json=transferType,enum=google.cloud.bigquery.datatransfer.v1.TransferType" json:"transfer_type,omitempty"` - // Indicates whether the data source supports multiple transfers - // to different BigQuery targets. - SupportsMultipleTransfers bool `protobuf:"varint,8,opt,name=supports_multiple_transfers,json=supportsMultipleTransfers" json:"supports_multiple_transfers,omitempty"` - // The number of seconds to wait for an update from the data source - // before BigQuery marks the transfer as failed. - UpdateDeadlineSeconds int32 `protobuf:"varint,9,opt,name=update_deadline_seconds,json=updateDeadlineSeconds" json:"update_deadline_seconds,omitempty"` - // Default data transfer schedule. - // Examples of valid schedules include: - // `1st,3rd monday of month 15:30`, - // `every wed,fri of jan,jun 13:15`, and - // `first sunday of quarter 00:00`. - DefaultSchedule string `protobuf:"bytes,10,opt,name=default_schedule,json=defaultSchedule" json:"default_schedule,omitempty"` - // Specifies whether the data source supports a user defined schedule, or - // operates on the default schedule. - // When set to `true`, user can override default schedule. - SupportsCustomSchedule bool `protobuf:"varint,11,opt,name=supports_custom_schedule,json=supportsCustomSchedule" json:"supports_custom_schedule,omitempty"` - // Data source parameters. - Parameters []*DataSourceParameter `protobuf:"bytes,12,rep,name=parameters" json:"parameters,omitempty"` - // Url for the help document for this data source. - HelpUrl string `protobuf:"bytes,13,opt,name=help_url,json=helpUrl" json:"help_url,omitempty"` - // Indicates the type of authorization. - AuthorizationType DataSource_AuthorizationType `protobuf:"varint,14,opt,name=authorization_type,json=authorizationType,enum=google.cloud.bigquery.datatransfer.v1.DataSource_AuthorizationType" json:"authorization_type,omitempty"` - // Specifies whether the data source supports automatic data refresh for the - // past few days, and how it's supported. - // For some data sources, data might not be complete until a few days later, - // so it's useful to refresh data automatically. - DataRefreshType DataSource_DataRefreshType `protobuf:"varint,15,opt,name=data_refresh_type,json=dataRefreshType,enum=google.cloud.bigquery.datatransfer.v1.DataSource_DataRefreshType" json:"data_refresh_type,omitempty"` - // Default data refresh window on days. - // Only meaningful when `data_refresh_type` = `SLIDING_WINDOW`. - DefaultDataRefreshWindowDays int32 `protobuf:"varint,16,opt,name=default_data_refresh_window_days,json=defaultDataRefreshWindowDays" json:"default_data_refresh_window_days,omitempty"` - // Disables backfilling and manual run scheduling - // for the data source. - ManualRunsDisabled bool `protobuf:"varint,17,opt,name=manual_runs_disabled,json=manualRunsDisabled" json:"manual_runs_disabled,omitempty"` - // The minimum interval for scheduler to schedule runs. - MinimumScheduleInterval *google_protobuf4.Duration `protobuf:"bytes,18,opt,name=minimum_schedule_interval,json=minimumScheduleInterval" json:"minimum_schedule_interval,omitempty"` -} - -func (m *DataSource) Reset() { *m = DataSource{} } -func (m *DataSource) String() string { return proto.CompactTextString(m) } -func (*DataSource) ProtoMessage() {} -func (*DataSource) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *DataSource) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DataSource) GetDataSourceId() string { - if m != nil { - return m.DataSourceId - } - return "" -} - -func (m *DataSource) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *DataSource) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *DataSource) GetClientId() string { - if m != nil { - return m.ClientId - } - return "" -} - -func (m *DataSource) GetScopes() []string { - if m != nil { - return m.Scopes - } - return nil -} - -func (m *DataSource) GetTransferType() TransferType { - if m != nil { - return m.TransferType - } - return TransferType_TRANSFER_TYPE_UNSPECIFIED -} - -func (m *DataSource) GetSupportsMultipleTransfers() bool { - if m != nil { - return m.SupportsMultipleTransfers - } - return false -} - -func (m *DataSource) GetUpdateDeadlineSeconds() int32 { - if m != nil { - return m.UpdateDeadlineSeconds - } - return 0 -} - -func (m *DataSource) GetDefaultSchedule() string { - if m != nil { - return m.DefaultSchedule - } - return "" -} - -func (m *DataSource) GetSupportsCustomSchedule() bool { - if m != nil { - return m.SupportsCustomSchedule - } - return false -} - -func (m *DataSource) GetParameters() []*DataSourceParameter { - if m != nil { - return m.Parameters - } - return nil -} - -func (m *DataSource) GetHelpUrl() string { - if m != nil { - return m.HelpUrl - } - return "" -} - -func (m *DataSource) GetAuthorizationType() DataSource_AuthorizationType { - if m != nil { - return m.AuthorizationType - } - return DataSource_AUTHORIZATION_TYPE_UNSPECIFIED -} - -func (m *DataSource) GetDataRefreshType() DataSource_DataRefreshType { - if m != nil { - return m.DataRefreshType - } - return DataSource_DATA_REFRESH_TYPE_UNSPECIFIED -} - -func (m *DataSource) GetDefaultDataRefreshWindowDays() int32 { - if m != nil { - return m.DefaultDataRefreshWindowDays - } - return 0 -} - -func (m *DataSource) GetManualRunsDisabled() bool { - if m != nil { - return m.ManualRunsDisabled - } - return false -} - -func (m *DataSource) GetMinimumScheduleInterval() *google_protobuf4.Duration { - if m != nil { - return m.MinimumScheduleInterval - } - return nil -} - -// A request to get data source info. -type GetDataSourceRequest struct { - // The field will contain name of the resource requested, for example: - // `projects/{project_id}/dataSources/{data_source_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetDataSourceRequest) Reset() { *m = GetDataSourceRequest{} } -func (m *GetDataSourceRequest) String() string { return proto.CompactTextString(m) } -func (*GetDataSourceRequest) ProtoMessage() {} -func (*GetDataSourceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *GetDataSourceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request to list supported data sources and their data transfer settings. -type ListDataSourcesRequest struct { - // The BigQuery project id for which data sources should be returned. - // Must be in the form: `projects/{project_id}` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Pagination token, which can be used to request a specific page - // of `ListDataSourcesRequest` list results. For multiple-page - // results, `ListDataSourcesResponse` outputs - // a `next_page` token, which can be used as the - // `page_token` value to request the next page of list results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Page size. The default page size is the maximum value of 1000 results. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListDataSourcesRequest) Reset() { *m = ListDataSourcesRequest{} } -func (m *ListDataSourcesRequest) String() string { return proto.CompactTextString(m) } -func (*ListDataSourcesRequest) ProtoMessage() {} -func (*ListDataSourcesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListDataSourcesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListDataSourcesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListDataSourcesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Returns list of supported data sources and their metadata. -type ListDataSourcesResponse struct { - // List of supported data sources and their transfer settings. - DataSources []*DataSource `protobuf:"bytes,1,rep,name=data_sources,json=dataSources" json:"data_sources,omitempty"` - // Output only. The next-pagination token. For multiple-page list results, - // this token can be used as the - // `ListDataSourcesRequest.page_token` - // to request the next page of list results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListDataSourcesResponse) Reset() { *m = ListDataSourcesResponse{} } -func (m *ListDataSourcesResponse) String() string { return proto.CompactTextString(m) } -func (*ListDataSourcesResponse) ProtoMessage() {} -func (*ListDataSourcesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListDataSourcesResponse) GetDataSources() []*DataSource { - if m != nil { - return m.DataSources - } - return nil -} - -func (m *ListDataSourcesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to create a data transfer configuration. If new credentials are -// needed for this transfer configuration, an authorization code must be -// provided. If an authorization code is provided, the transfer configuration -// will be associated with the user id corresponding to the -// authorization code. Otherwise, the transfer configuration will be associated -// with the calling user. -type CreateTransferConfigRequest struct { - // The BigQuery project id where the transfer configuration should be created. - // Must be in the format /projects/{project_id}/locations/{location_id} - // If specified location and location of the destination bigquery dataset - // do not match - the request will fail. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Data transfer configuration to create. - TransferConfig *TransferConfig `protobuf:"bytes,2,opt,name=transfer_config,json=transferConfig" json:"transfer_config,omitempty"` - // Optional OAuth2 authorization code to use with this transfer configuration. - // This is required if new credentials are needed, as indicated by - // `CheckValidCreds`. - // In order to obtain authorization_code, please make a - // request to - // https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=<datatransferapiclientid>&scope=<data_source_scopes>&redirect_uri=<redirect_uri> - // - // * client_id should be OAuth client_id of BigQuery DTS API for the given - // data source returned by ListDataSources method. - // * data_source_scopes are the scopes returned by ListDataSources method. - // * redirect_uri is an optional parameter. If not specified, then - // authorization code is posted to the opener of authorization flow window. - // Otherwise it will be sent to the redirect uri. A special value of - // urn:ietf:wg:oauth:2.0:oob means that authorization code should be - // returned in the title bar of the browser, with the page text prompting - // the user to copy the code and paste it in the application. - AuthorizationCode string `protobuf:"bytes,3,opt,name=authorization_code,json=authorizationCode" json:"authorization_code,omitempty"` -} - -func (m *CreateTransferConfigRequest) Reset() { *m = CreateTransferConfigRequest{} } -func (m *CreateTransferConfigRequest) String() string { return proto.CompactTextString(m) } -func (*CreateTransferConfigRequest) ProtoMessage() {} -func (*CreateTransferConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *CreateTransferConfigRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateTransferConfigRequest) GetTransferConfig() *TransferConfig { - if m != nil { - return m.TransferConfig - } - return nil -} - -func (m *CreateTransferConfigRequest) GetAuthorizationCode() string { - if m != nil { - return m.AuthorizationCode - } - return "" -} - -// A request to update a transfer configuration. To update the user id of the -// transfer configuration, an authorization code needs to be provided. -type UpdateTransferConfigRequest struct { - // Data transfer configuration to create. - TransferConfig *TransferConfig `protobuf:"bytes,1,opt,name=transfer_config,json=transferConfig" json:"transfer_config,omitempty"` - // Optional OAuth2 authorization code to use with this transfer configuration. - // If it is provided, the transfer configuration will be associated with the - // authorizing user. - // In order to obtain authorization_code, please make a - // request to - // https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=<datatransferapiclientid>&scope=<data_source_scopes>&redirect_uri=<redirect_uri> - // - // * client_id should be OAuth client_id of BigQuery DTS API for the given - // data source returned by ListDataSources method. - // * data_source_scopes are the scopes returned by ListDataSources method. - // * redirect_uri is an optional parameter. If not specified, then - // authorization code is posted to the opener of authorization flow window. - // Otherwise it will be sent to the redirect uri. A special value of - // urn:ietf:wg:oauth:2.0:oob means that authorization code should be - // returned in the title bar of the browser, with the page text prompting - // the user to copy the code and paste it in the application. - AuthorizationCode string `protobuf:"bytes,3,opt,name=authorization_code,json=authorizationCode" json:"authorization_code,omitempty"` - // Required list of fields to be updated in this request. - UpdateMask *google_protobuf6.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateTransferConfigRequest) Reset() { *m = UpdateTransferConfigRequest{} } -func (m *UpdateTransferConfigRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateTransferConfigRequest) ProtoMessage() {} -func (*UpdateTransferConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *UpdateTransferConfigRequest) GetTransferConfig() *TransferConfig { - if m != nil { - return m.TransferConfig - } - return nil -} - -func (m *UpdateTransferConfigRequest) GetAuthorizationCode() string { - if m != nil { - return m.AuthorizationCode - } - return "" -} - -func (m *UpdateTransferConfigRequest) GetUpdateMask() *google_protobuf6.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// A request to get data transfer information. -type GetTransferConfigRequest struct { - // The field will contain name of the resource requested, for example: - // `projects/{project_id}/transferConfigs/{config_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetTransferConfigRequest) Reset() { *m = GetTransferConfigRequest{} } -func (m *GetTransferConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetTransferConfigRequest) ProtoMessage() {} -func (*GetTransferConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *GetTransferConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request to delete data transfer information. All associated transfer runs -// and log messages will be deleted as well. -type DeleteTransferConfigRequest struct { - // The field will contain name of the resource requested, for example: - // `projects/{project_id}/transferConfigs/{config_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteTransferConfigRequest) Reset() { *m = DeleteTransferConfigRequest{} } -func (m *DeleteTransferConfigRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteTransferConfigRequest) ProtoMessage() {} -func (*DeleteTransferConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *DeleteTransferConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request to get data transfer run information. -type GetTransferRunRequest struct { - // The field will contain name of the resource requested, for example: - // `projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetTransferRunRequest) Reset() { *m = GetTransferRunRequest{} } -func (m *GetTransferRunRequest) String() string { return proto.CompactTextString(m) } -func (*GetTransferRunRequest) ProtoMessage() {} -func (*GetTransferRunRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *GetTransferRunRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request to delete data transfer run information. -type DeleteTransferRunRequest struct { - // The field will contain name of the resource requested, for example: - // `projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteTransferRunRequest) Reset() { *m = DeleteTransferRunRequest{} } -func (m *DeleteTransferRunRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteTransferRunRequest) ProtoMessage() {} -func (*DeleteTransferRunRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *DeleteTransferRunRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request to list data transfers configured for a BigQuery project. -type ListTransferConfigsRequest struct { - // The BigQuery project id for which data sources - // should be returned: `projects/{project_id}`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // When specified, only configurations of requested data sources are returned. - DataSourceIds []string `protobuf:"bytes,2,rep,name=data_source_ids,json=dataSourceIds" json:"data_source_ids,omitempty"` - // Pagination token, which can be used to request a specific page - // of `ListTransfersRequest` list results. For multiple-page - // results, `ListTransfersResponse` outputs - // a `next_page` token, which can be used as the - // `page_token` value to request the next page of list results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Page size. The default page size is the maximum value of 1000 results. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListTransferConfigsRequest) Reset() { *m = ListTransferConfigsRequest{} } -func (m *ListTransferConfigsRequest) String() string { return proto.CompactTextString(m) } -func (*ListTransferConfigsRequest) ProtoMessage() {} -func (*ListTransferConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ListTransferConfigsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListTransferConfigsRequest) GetDataSourceIds() []string { - if m != nil { - return m.DataSourceIds - } - return nil -} - -func (m *ListTransferConfigsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListTransferConfigsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// The returned list of pipelines in the project. -type ListTransferConfigsResponse struct { - // Output only. The stored pipeline transfer configurations. - TransferConfigs []*TransferConfig `protobuf:"bytes,1,rep,name=transfer_configs,json=transferConfigs" json:"transfer_configs,omitempty"` - // Output only. The next-pagination token. For multiple-page list results, - // this token can be used as the - // `ListTransferConfigsRequest.page_token` - // to request the next page of list results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTransferConfigsResponse) Reset() { *m = ListTransferConfigsResponse{} } -func (m *ListTransferConfigsResponse) String() string { return proto.CompactTextString(m) } -func (*ListTransferConfigsResponse) ProtoMessage() {} -func (*ListTransferConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *ListTransferConfigsResponse) GetTransferConfigs() []*TransferConfig { - if m != nil { - return m.TransferConfigs - } - return nil -} - -func (m *ListTransferConfigsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to list data transfer runs. UI can use this method to show/filter -// specific data transfer runs. The data source can use this method to request -// all scheduled transfer runs. -type ListTransferRunsRequest struct { - // Name of transfer configuration for which transfer runs should be retrieved. - // Format of transfer configuration resource name is: - // `projects/{project_id}/transferConfigs/{config_id}`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // When specified, only transfer runs with requested states are returned. - States []TransferState `protobuf:"varint,2,rep,packed,name=states,enum=google.cloud.bigquery.datatransfer.v1.TransferState" json:"states,omitempty"` - // Pagination token, which can be used to request a specific page - // of `ListTransferRunsRequest` list results. For multiple-page - // results, `ListTransferRunsResponse` outputs - // a `next_page` token, which can be used as the - // `page_token` value to request the next page of list results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Page size. The default page size is the maximum value of 1000 results. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Indicates how run attempts are to be pulled. - RunAttempt ListTransferRunsRequest_RunAttempt `protobuf:"varint,5,opt,name=run_attempt,json=runAttempt,enum=google.cloud.bigquery.datatransfer.v1.ListTransferRunsRequest_RunAttempt" json:"run_attempt,omitempty"` -} - -func (m *ListTransferRunsRequest) Reset() { *m = ListTransferRunsRequest{} } -func (m *ListTransferRunsRequest) String() string { return proto.CompactTextString(m) } -func (*ListTransferRunsRequest) ProtoMessage() {} -func (*ListTransferRunsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *ListTransferRunsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListTransferRunsRequest) GetStates() []TransferState { - if m != nil { - return m.States - } - return nil -} - -func (m *ListTransferRunsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListTransferRunsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTransferRunsRequest) GetRunAttempt() ListTransferRunsRequest_RunAttempt { - if m != nil { - return m.RunAttempt - } - return ListTransferRunsRequest_RUN_ATTEMPT_UNSPECIFIED -} - -// The returned list of pipelines in the project. -type ListTransferRunsResponse struct { - // Output only. The stored pipeline transfer runs. - TransferRuns []*TransferRun `protobuf:"bytes,1,rep,name=transfer_runs,json=transferRuns" json:"transfer_runs,omitempty"` - // Output only. The next-pagination token. For multiple-page list results, - // this token can be used as the - // `ListTransferRunsRequest.page_token` - // to request the next page of list results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTransferRunsResponse) Reset() { *m = ListTransferRunsResponse{} } -func (m *ListTransferRunsResponse) String() string { return proto.CompactTextString(m) } -func (*ListTransferRunsResponse) ProtoMessage() {} -func (*ListTransferRunsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *ListTransferRunsResponse) GetTransferRuns() []*TransferRun { - if m != nil { - return m.TransferRuns - } - return nil -} - -func (m *ListTransferRunsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to get user facing log messages associated with data transfer run. -type ListTransferLogsRequest struct { - // Transfer run name in the form: - // `projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Pagination token, which can be used to request a specific page - // of `ListTransferLogsRequest` list results. For multiple-page - // results, `ListTransferLogsResponse` outputs - // a `next_page` token, which can be used as the - // `page_token` value to request the next page of list results. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Page size. The default page size is the maximum value of 1000 results. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Message types to return. If not populated - INFO, WARNING and ERROR - // messages are returned. - MessageTypes []TransferMessage_MessageSeverity `protobuf:"varint,6,rep,packed,name=message_types,json=messageTypes,enum=google.cloud.bigquery.datatransfer.v1.TransferMessage_MessageSeverity" json:"message_types,omitempty"` -} - -func (m *ListTransferLogsRequest) Reset() { *m = ListTransferLogsRequest{} } -func (m *ListTransferLogsRequest) String() string { return proto.CompactTextString(m) } -func (*ListTransferLogsRequest) ProtoMessage() {} -func (*ListTransferLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *ListTransferLogsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListTransferLogsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListTransferLogsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTransferLogsRequest) GetMessageTypes() []TransferMessage_MessageSeverity { - if m != nil { - return m.MessageTypes - } - return nil -} - -// The returned list transfer run messages. -type ListTransferLogsResponse struct { - // Output only. The stored pipeline transfer messages. - TransferMessages []*TransferMessage `protobuf:"bytes,1,rep,name=transfer_messages,json=transferMessages" json:"transfer_messages,omitempty"` - // Output only. The next-pagination token. For multiple-page list results, - // this token can be used as the - // `GetTransferRunLogRequest.page_token` - // to request the next page of list results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTransferLogsResponse) Reset() { *m = ListTransferLogsResponse{} } -func (m *ListTransferLogsResponse) String() string { return proto.CompactTextString(m) } -func (*ListTransferLogsResponse) ProtoMessage() {} -func (*ListTransferLogsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *ListTransferLogsResponse) GetTransferMessages() []*TransferMessage { - if m != nil { - return m.TransferMessages - } - return nil -} - -func (m *ListTransferLogsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to determine whether the user has valid credentials. This method -// is used to limit the number of OAuth popups in the user interface. The -// user id is inferred from the API call context. -// If the data source has the Google+ authorization type, this method -// returns false, as it cannot be determined whether the credentials are -// already valid merely based on the user id. -type CheckValidCredsRequest struct { - // The data source in the form: - // `projects/{project_id}/dataSources/{data_source_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *CheckValidCredsRequest) Reset() { *m = CheckValidCredsRequest{} } -func (m *CheckValidCredsRequest) String() string { return proto.CompactTextString(m) } -func (*CheckValidCredsRequest) ProtoMessage() {} -func (*CheckValidCredsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *CheckValidCredsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A response indicating whether the credentials exist and are valid. -type CheckValidCredsResponse struct { - // If set to `true`, the credentials exist and are valid. - HasValidCreds bool `protobuf:"varint,1,opt,name=has_valid_creds,json=hasValidCreds" json:"has_valid_creds,omitempty"` -} - -func (m *CheckValidCredsResponse) Reset() { *m = CheckValidCredsResponse{} } -func (m *CheckValidCredsResponse) String() string { return proto.CompactTextString(m) } -func (*CheckValidCredsResponse) ProtoMessage() {} -func (*CheckValidCredsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *CheckValidCredsResponse) GetHasValidCreds() bool { - if m != nil { - return m.HasValidCreds - } - return false -} - -// A request to schedule transfer runs for a time range. -type ScheduleTransferRunsRequest struct { - // Transfer configuration name in the form: - // `projects/{project_id}/transferConfigs/{config_id}`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Start time of the range of transfer runs. For example, - // `"2017-05-25T00:00:00+00:00"`. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // End time of the range of transfer runs. For example, - // `"2017-05-30T00:00:00+00:00"`. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *ScheduleTransferRunsRequest) Reset() { *m = ScheduleTransferRunsRequest{} } -func (m *ScheduleTransferRunsRequest) String() string { return proto.CompactTextString(m) } -func (*ScheduleTransferRunsRequest) ProtoMessage() {} -func (*ScheduleTransferRunsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *ScheduleTransferRunsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ScheduleTransferRunsRequest) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *ScheduleTransferRunsRequest) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -// A response to schedule transfer runs for a time range. -type ScheduleTransferRunsResponse struct { - // The transfer runs that were scheduled. - Runs []*TransferRun `protobuf:"bytes,1,rep,name=runs" json:"runs,omitempty"` -} - -func (m *ScheduleTransferRunsResponse) Reset() { *m = ScheduleTransferRunsResponse{} } -func (m *ScheduleTransferRunsResponse) String() string { return proto.CompactTextString(m) } -func (*ScheduleTransferRunsResponse) ProtoMessage() {} -func (*ScheduleTransferRunsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *ScheduleTransferRunsResponse) GetRuns() []*TransferRun { - if m != nil { - return m.Runs - } - return nil -} - -func init() { - proto.RegisterType((*DataSourceParameter)(nil), "google.cloud.bigquery.datatransfer.v1.DataSourceParameter") - proto.RegisterType((*DataSource)(nil), "google.cloud.bigquery.datatransfer.v1.DataSource") - proto.RegisterType((*GetDataSourceRequest)(nil), "google.cloud.bigquery.datatransfer.v1.GetDataSourceRequest") - proto.RegisterType((*ListDataSourcesRequest)(nil), "google.cloud.bigquery.datatransfer.v1.ListDataSourcesRequest") - proto.RegisterType((*ListDataSourcesResponse)(nil), "google.cloud.bigquery.datatransfer.v1.ListDataSourcesResponse") - proto.RegisterType((*CreateTransferConfigRequest)(nil), "google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest") - proto.RegisterType((*UpdateTransferConfigRequest)(nil), "google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest") - proto.RegisterType((*GetTransferConfigRequest)(nil), "google.cloud.bigquery.datatransfer.v1.GetTransferConfigRequest") - proto.RegisterType((*DeleteTransferConfigRequest)(nil), "google.cloud.bigquery.datatransfer.v1.DeleteTransferConfigRequest") - proto.RegisterType((*GetTransferRunRequest)(nil), "google.cloud.bigquery.datatransfer.v1.GetTransferRunRequest") - proto.RegisterType((*DeleteTransferRunRequest)(nil), "google.cloud.bigquery.datatransfer.v1.DeleteTransferRunRequest") - proto.RegisterType((*ListTransferConfigsRequest)(nil), "google.cloud.bigquery.datatransfer.v1.ListTransferConfigsRequest") - proto.RegisterType((*ListTransferConfigsResponse)(nil), "google.cloud.bigquery.datatransfer.v1.ListTransferConfigsResponse") - proto.RegisterType((*ListTransferRunsRequest)(nil), "google.cloud.bigquery.datatransfer.v1.ListTransferRunsRequest") - proto.RegisterType((*ListTransferRunsResponse)(nil), "google.cloud.bigquery.datatransfer.v1.ListTransferRunsResponse") - proto.RegisterType((*ListTransferLogsRequest)(nil), "google.cloud.bigquery.datatransfer.v1.ListTransferLogsRequest") - proto.RegisterType((*ListTransferLogsResponse)(nil), "google.cloud.bigquery.datatransfer.v1.ListTransferLogsResponse") - proto.RegisterType((*CheckValidCredsRequest)(nil), "google.cloud.bigquery.datatransfer.v1.CheckValidCredsRequest") - proto.RegisterType((*CheckValidCredsResponse)(nil), "google.cloud.bigquery.datatransfer.v1.CheckValidCredsResponse") - proto.RegisterType((*ScheduleTransferRunsRequest)(nil), "google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsRequest") - proto.RegisterType((*ScheduleTransferRunsResponse)(nil), "google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsResponse") - proto.RegisterEnum("google.cloud.bigquery.datatransfer.v1.DataSourceParameter_Type", DataSourceParameter_Type_name, DataSourceParameter_Type_value) - proto.RegisterEnum("google.cloud.bigquery.datatransfer.v1.DataSource_AuthorizationType", DataSource_AuthorizationType_name, DataSource_AuthorizationType_value) - proto.RegisterEnum("google.cloud.bigquery.datatransfer.v1.DataSource_DataRefreshType", DataSource_DataRefreshType_name, DataSource_DataRefreshType_value) - proto.RegisterEnum("google.cloud.bigquery.datatransfer.v1.ListTransferRunsRequest_RunAttempt", ListTransferRunsRequest_RunAttempt_name, ListTransferRunsRequest_RunAttempt_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for DataTransferService service - -type DataTransferServiceClient interface { - // Retrieves a supported data source and returns its settings, - // which can be used for UI rendering. - GetDataSource(ctx context.Context, in *GetDataSourceRequest, opts ...grpc.CallOption) (*DataSource, error) - // Lists supported data sources and returns their settings, - // which can be used for UI rendering. - ListDataSources(ctx context.Context, in *ListDataSourcesRequest, opts ...grpc.CallOption) (*ListDataSourcesResponse, error) - // Creates a new data transfer configuration. - CreateTransferConfig(ctx context.Context, in *CreateTransferConfigRequest, opts ...grpc.CallOption) (*TransferConfig, error) - // Updates a data transfer configuration. - // All fields must be set, even if they are not updated. - UpdateTransferConfig(ctx context.Context, in *UpdateTransferConfigRequest, opts ...grpc.CallOption) (*TransferConfig, error) - // Deletes a data transfer configuration, - // including any associated transfer runs and logs. - DeleteTransferConfig(ctx context.Context, in *DeleteTransferConfigRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) - // Returns information about a data transfer config. - GetTransferConfig(ctx context.Context, in *GetTransferConfigRequest, opts ...grpc.CallOption) (*TransferConfig, error) - // Returns information about all data transfers in the project. - ListTransferConfigs(ctx context.Context, in *ListTransferConfigsRequest, opts ...grpc.CallOption) (*ListTransferConfigsResponse, error) - // Creates transfer runs for a time range [start_time, end_time]. - // For each date - or whatever granularity the data source supports - in the - // range, one transfer run is created. - // Note that runs are created per UTC time in the time range. - ScheduleTransferRuns(ctx context.Context, in *ScheduleTransferRunsRequest, opts ...grpc.CallOption) (*ScheduleTransferRunsResponse, error) - // Returns information about the particular transfer run. - GetTransferRun(ctx context.Context, in *GetTransferRunRequest, opts ...grpc.CallOption) (*TransferRun, error) - // Deletes the specified transfer run. - DeleteTransferRun(ctx context.Context, in *DeleteTransferRunRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) - // Returns information about running and completed jobs. - ListTransferRuns(ctx context.Context, in *ListTransferRunsRequest, opts ...grpc.CallOption) (*ListTransferRunsResponse, error) - // Returns user facing log messages for the data transfer run. - ListTransferLogs(ctx context.Context, in *ListTransferLogsRequest, opts ...grpc.CallOption) (*ListTransferLogsResponse, error) - // Returns true if valid credentials exist for the given data source and - // requesting user. - // Some data sources doesn't support service account, so we need to talk to - // them on behalf of the end user. This API just checks whether we have OAuth - // token for the particular user, which is a pre-requisite before user can - // create a transfer config. - CheckValidCreds(ctx context.Context, in *CheckValidCredsRequest, opts ...grpc.CallOption) (*CheckValidCredsResponse, error) -} - -type dataTransferServiceClient struct { - cc *grpc.ClientConn -} - -func NewDataTransferServiceClient(cc *grpc.ClientConn) DataTransferServiceClient { - return &dataTransferServiceClient{cc} -} - -func (c *dataTransferServiceClient) GetDataSource(ctx context.Context, in *GetDataSourceRequest, opts ...grpc.CallOption) (*DataSource, error) { - out := new(DataSource) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/GetDataSource", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) ListDataSources(ctx context.Context, in *ListDataSourcesRequest, opts ...grpc.CallOption) (*ListDataSourcesResponse, error) { - out := new(ListDataSourcesResponse) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ListDataSources", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) CreateTransferConfig(ctx context.Context, in *CreateTransferConfigRequest, opts ...grpc.CallOption) (*TransferConfig, error) { - out := new(TransferConfig) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/CreateTransferConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) UpdateTransferConfig(ctx context.Context, in *UpdateTransferConfigRequest, opts ...grpc.CallOption) (*TransferConfig, error) { - out := new(TransferConfig) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/UpdateTransferConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) DeleteTransferConfig(ctx context.Context, in *DeleteTransferConfigRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) { - out := new(google_protobuf5.Empty) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/DeleteTransferConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) GetTransferConfig(ctx context.Context, in *GetTransferConfigRequest, opts ...grpc.CallOption) (*TransferConfig, error) { - out := new(TransferConfig) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/GetTransferConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) ListTransferConfigs(ctx context.Context, in *ListTransferConfigsRequest, opts ...grpc.CallOption) (*ListTransferConfigsResponse, error) { - out := new(ListTransferConfigsResponse) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ListTransferConfigs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) ScheduleTransferRuns(ctx context.Context, in *ScheduleTransferRunsRequest, opts ...grpc.CallOption) (*ScheduleTransferRunsResponse, error) { - out := new(ScheduleTransferRunsResponse) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ScheduleTransferRuns", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) GetTransferRun(ctx context.Context, in *GetTransferRunRequest, opts ...grpc.CallOption) (*TransferRun, error) { - out := new(TransferRun) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/GetTransferRun", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) DeleteTransferRun(ctx context.Context, in *DeleteTransferRunRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) { - out := new(google_protobuf5.Empty) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/DeleteTransferRun", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) ListTransferRuns(ctx context.Context, in *ListTransferRunsRequest, opts ...grpc.CallOption) (*ListTransferRunsResponse, error) { - out := new(ListTransferRunsResponse) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ListTransferRuns", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) ListTransferLogs(ctx context.Context, in *ListTransferLogsRequest, opts ...grpc.CallOption) (*ListTransferLogsResponse, error) { - out := new(ListTransferLogsResponse) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ListTransferLogs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dataTransferServiceClient) CheckValidCreds(ctx context.Context, in *CheckValidCredsRequest, opts ...grpc.CallOption) (*CheckValidCredsResponse, error) { - out := new(CheckValidCredsResponse) - err := grpc.Invoke(ctx, "/google.cloud.bigquery.datatransfer.v1.DataTransferService/CheckValidCreds", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for DataTransferService service - -type DataTransferServiceServer interface { - // Retrieves a supported data source and returns its settings, - // which can be used for UI rendering. - GetDataSource(context.Context, *GetDataSourceRequest) (*DataSource, error) - // Lists supported data sources and returns their settings, - // which can be used for UI rendering. - ListDataSources(context.Context, *ListDataSourcesRequest) (*ListDataSourcesResponse, error) - // Creates a new data transfer configuration. - CreateTransferConfig(context.Context, *CreateTransferConfigRequest) (*TransferConfig, error) - // Updates a data transfer configuration. - // All fields must be set, even if they are not updated. - UpdateTransferConfig(context.Context, *UpdateTransferConfigRequest) (*TransferConfig, error) - // Deletes a data transfer configuration, - // including any associated transfer runs and logs. - DeleteTransferConfig(context.Context, *DeleteTransferConfigRequest) (*google_protobuf5.Empty, error) - // Returns information about a data transfer config. - GetTransferConfig(context.Context, *GetTransferConfigRequest) (*TransferConfig, error) - // Returns information about all data transfers in the project. - ListTransferConfigs(context.Context, *ListTransferConfigsRequest) (*ListTransferConfigsResponse, error) - // Creates transfer runs for a time range [start_time, end_time]. - // For each date - or whatever granularity the data source supports - in the - // range, one transfer run is created. - // Note that runs are created per UTC time in the time range. - ScheduleTransferRuns(context.Context, *ScheduleTransferRunsRequest) (*ScheduleTransferRunsResponse, error) - // Returns information about the particular transfer run. - GetTransferRun(context.Context, *GetTransferRunRequest) (*TransferRun, error) - // Deletes the specified transfer run. - DeleteTransferRun(context.Context, *DeleteTransferRunRequest) (*google_protobuf5.Empty, error) - // Returns information about running and completed jobs. - ListTransferRuns(context.Context, *ListTransferRunsRequest) (*ListTransferRunsResponse, error) - // Returns user facing log messages for the data transfer run. - ListTransferLogs(context.Context, *ListTransferLogsRequest) (*ListTransferLogsResponse, error) - // Returns true if valid credentials exist for the given data source and - // requesting user. - // Some data sources doesn't support service account, so we need to talk to - // them on behalf of the end user. This API just checks whether we have OAuth - // token for the particular user, which is a pre-requisite before user can - // create a transfer config. - CheckValidCreds(context.Context, *CheckValidCredsRequest) (*CheckValidCredsResponse, error) -} - -func RegisterDataTransferServiceServer(s *grpc.Server, srv DataTransferServiceServer) { - s.RegisterService(&_DataTransferService_serviceDesc, srv) -} - -func _DataTransferService_GetDataSource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDataSourceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).GetDataSource(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/GetDataSource", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).GetDataSource(ctx, req.(*GetDataSourceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_ListDataSources_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDataSourcesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).ListDataSources(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ListDataSources", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).ListDataSources(ctx, req.(*ListDataSourcesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_CreateTransferConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTransferConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).CreateTransferConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/CreateTransferConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).CreateTransferConfig(ctx, req.(*CreateTransferConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_UpdateTransferConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateTransferConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).UpdateTransferConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/UpdateTransferConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).UpdateTransferConfig(ctx, req.(*UpdateTransferConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_DeleteTransferConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteTransferConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).DeleteTransferConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/DeleteTransferConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).DeleteTransferConfig(ctx, req.(*DeleteTransferConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_GetTransferConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTransferConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).GetTransferConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/GetTransferConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).GetTransferConfig(ctx, req.(*GetTransferConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_ListTransferConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTransferConfigsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).ListTransferConfigs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ListTransferConfigs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).ListTransferConfigs(ctx, req.(*ListTransferConfigsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_ScheduleTransferRuns_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ScheduleTransferRunsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).ScheduleTransferRuns(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ScheduleTransferRuns", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).ScheduleTransferRuns(ctx, req.(*ScheduleTransferRunsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_GetTransferRun_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTransferRunRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).GetTransferRun(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/GetTransferRun", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).GetTransferRun(ctx, req.(*GetTransferRunRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_DeleteTransferRun_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteTransferRunRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).DeleteTransferRun(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/DeleteTransferRun", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).DeleteTransferRun(ctx, req.(*DeleteTransferRunRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_ListTransferRuns_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTransferRunsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).ListTransferRuns(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ListTransferRuns", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).ListTransferRuns(ctx, req.(*ListTransferRunsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_ListTransferLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTransferLogsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).ListTransferLogs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/ListTransferLogs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).ListTransferLogs(ctx, req.(*ListTransferLogsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DataTransferService_CheckValidCreds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CheckValidCredsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DataTransferServiceServer).CheckValidCreds(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.bigquery.datatransfer.v1.DataTransferService/CheckValidCreds", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DataTransferServiceServer).CheckValidCreds(ctx, req.(*CheckValidCredsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _DataTransferService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.bigquery.datatransfer.v1.DataTransferService", - HandlerType: (*DataTransferServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetDataSource", - Handler: _DataTransferService_GetDataSource_Handler, - }, - { - MethodName: "ListDataSources", - Handler: _DataTransferService_ListDataSources_Handler, - }, - { - MethodName: "CreateTransferConfig", - Handler: _DataTransferService_CreateTransferConfig_Handler, - }, - { - MethodName: "UpdateTransferConfig", - Handler: _DataTransferService_UpdateTransferConfig_Handler, - }, - { - MethodName: "DeleteTransferConfig", - Handler: _DataTransferService_DeleteTransferConfig_Handler, - }, - { - MethodName: "GetTransferConfig", - Handler: _DataTransferService_GetTransferConfig_Handler, - }, - { - MethodName: "ListTransferConfigs", - Handler: _DataTransferService_ListTransferConfigs_Handler, - }, - { - MethodName: "ScheduleTransferRuns", - Handler: _DataTransferService_ScheduleTransferRuns_Handler, - }, - { - MethodName: "GetTransferRun", - Handler: _DataTransferService_GetTransferRun_Handler, - }, - { - MethodName: "DeleteTransferRun", - Handler: _DataTransferService_DeleteTransferRun_Handler, - }, - { - MethodName: "ListTransferRuns", - Handler: _DataTransferService_ListTransferRuns_Handler, - }, - { - MethodName: "ListTransferLogs", - Handler: _DataTransferService_ListTransferLogs_Handler, - }, - { - MethodName: "CheckValidCreds", - Handler: _DataTransferService_CheckValidCreds_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/bigquery/datatransfer/v1/datatransfer.proto", -} - -func init() { - proto.RegisterFile("google/cloud/bigquery/datatransfer/v1/datatransfer.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 2233 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x4f, 0x73, 0x1b, 0x49, - 0x15, 0x67, 0xfc, 0x5f, 0x4f, 0xb6, 0x24, 0x77, 0x1c, 0x67, 0x22, 0x67, 0x17, 0xef, 0x14, 0x49, - 0x79, 0x0d, 0x48, 0x58, 0xd9, 0x2c, 0xbb, 0xce, 0x6e, 0x52, 0xb2, 0x24, 0x3b, 0x02, 0xdb, 0x72, - 0x46, 0x72, 0x02, 0xa9, 0x14, 0x43, 0x47, 0xd3, 0x96, 0x67, 0x3d, 0x9a, 0x99, 0x4c, 0xcf, 0x38, - 0x71, 0xa8, 0x5c, 0xf8, 0x0a, 0x1c, 0xa0, 0x8a, 0x0f, 0x00, 0xc5, 0x05, 0x8e, 0x7c, 0x00, 0x8a, - 0x02, 0xae, 0x1c, 0xf8, 0x53, 0x14, 0x1c, 0xa0, 0xa8, 0xe2, 0x02, 0x5f, 0x80, 0x03, 0xd5, 0x3d, - 0x3d, 0xd2, 0x48, 0x1a, 0xdb, 0x92, 0x4c, 0xd5, 0x9e, 0x3c, 0xdd, 0xef, 0xbd, 0xee, 0xf7, 0xeb, - 0xf7, 0xa7, 0x7f, 0x2d, 0xc3, 0x47, 0x2d, 0xdb, 0x6e, 0x99, 0x24, 0xdf, 0x34, 0x6d, 0x5f, 0xcf, - 0xbf, 0x30, 0x5a, 0x2f, 0x7d, 0xe2, 0x9e, 0xe5, 0x75, 0xec, 0x61, 0xcf, 0xc5, 0x16, 0x3d, 0x22, - 0x6e, 0xfe, 0x74, 0xa3, 0x67, 0x9c, 0x73, 0x5c, 0xdb, 0xb3, 0xd1, 0xed, 0xc0, 0x32, 0xc7, 0x2d, - 0x73, 0xa1, 0x65, 0xae, 0x47, 0xf3, 0x74, 0x23, 0x7b, 0x4b, 0x6c, 0x80, 0x1d, 0x23, 0x8f, 0x2d, - 0xcb, 0xf6, 0xb0, 0x67, 0xd8, 0x16, 0x0d, 0x16, 0xc9, 0x7e, 0x30, 0xdc, 0xf6, 0xbd, 0x5b, 0x67, - 0xdf, 0x15, 0x56, 0x7c, 0xf4, 0xc2, 0x3f, 0xca, 0xeb, 0xbe, 0xcb, 0x97, 0x15, 0xf2, 0x95, 0x7e, - 0x39, 0x69, 0x3b, 0xde, 0x99, 0x10, 0xae, 0xf6, 0x0b, 0x8f, 0x0c, 0x62, 0xea, 0x5a, 0x1b, 0xd3, - 0x13, 0xa1, 0xf1, 0xc5, 0x7e, 0x0d, 0xcf, 0x68, 0x13, 0xea, 0xe1, 0xb6, 0x73, 0xde, 0xfe, 0xaf, - 0x5c, 0xec, 0x38, 0xc4, 0x15, 0xa8, 0x94, 0x9f, 0xce, 0xc0, 0xb5, 0x32, 0xf6, 0x70, 0xdd, 0xf6, - 0xdd, 0x26, 0x39, 0xc0, 0x2e, 0x6e, 0x13, 0x8f, 0xb8, 0xe8, 0x26, 0xcc, 0x39, 0x6c, 0xa0, 0x19, - 0xba, 0x2c, 0xad, 0x4a, 0x6b, 0x09, 0x75, 0x96, 0x8f, 0xab, 0x3a, 0x7a, 0x0f, 0xe6, 0x75, 0x83, - 0x3a, 0x26, 0x3e, 0xd3, 0x2c, 0xdc, 0x26, 0xf2, 0x04, 0x17, 0x27, 0xc5, 0xdc, 0x3e, 0x6e, 0x13, - 0xb4, 0x0a, 0x49, 0x9d, 0xd0, 0xa6, 0x6b, 0x38, 0x0c, 0xaa, 0x3c, 0x29, 0x34, 0xba, 0x53, 0xa8, - 0x0e, 0x53, 0xde, 0x99, 0x43, 0xe4, 0xa9, 0x55, 0x69, 0x2d, 0x55, 0x78, 0x98, 0x1b, 0x2a, 0x42, - 0xb9, 0x18, 0x4f, 0x73, 0x8d, 0x33, 0x87, 0xa8, 0x7c, 0x31, 0x94, 0x85, 0x39, 0x97, 0xbc, 0xf4, - 0x0d, 0x97, 0xe8, 0xf2, 0xf4, 0xaa, 0xb4, 0x36, 0xa7, 0x76, 0xc6, 0x81, 0xcc, 0x21, 0xd8, 0x23, - 0xba, 0x3c, 0x13, 0xca, 0x82, 0x31, 0x7a, 0x1f, 0x32, 0xa7, 0xd8, 0x34, 0x74, 0x1e, 0x18, 0xcd, - 0x25, 0x2d, 0xf2, 0x5a, 0x9e, 0xe5, 0x3e, 0xa7, 0xbb, 0xf3, 0x2a, 0x9b, 0x46, 0xb7, 0x21, 0x85, - 0x4d, 0xd3, 0x7e, 0x45, 0x74, 0xed, 0x14, 0x9b, 0x3e, 0xa1, 0xf2, 0xdc, 0xea, 0xe4, 0x5a, 0x42, - 0x5d, 0x10, 0xb3, 0x4f, 0xf8, 0x24, 0xfa, 0x18, 0x12, 0x6d, 0xc3, 0x0a, 0x54, 0xe4, 0xc4, 0xaa, - 0xb4, 0x96, 0x2c, 0xdc, 0x0a, 0x31, 0x86, 0xa1, 0xc8, 0x95, 0x6d, 0xff, 0x85, 0x49, 0xb8, 0x85, - 0x3a, 0xd7, 0x36, 0x2c, 0xfe, 0xc5, 0x4d, 0xf1, 0x6b, 0x61, 0x0a, 0x43, 0x99, 0xe2, 0xd7, 0x81, - 0xa9, 0x0a, 0x33, 0x3c, 0x43, 0xa8, 0x9c, 0x5c, 0x9d, 0x5c, 0x4b, 0x16, 0x36, 0xc7, 0x3f, 0x56, - 0x55, 0xac, 0x84, 0xee, 0xc1, 0x72, 0xe4, 0x6c, 0xa2, 0x51, 0x9d, 0xe7, 0x27, 0x74, 0xbd, 0x2b, - 0x2d, 0x47, 0xe2, 0x9b, 0x83, 0x6b, 0x11, 0xb3, 0x63, 0x62, 0x3a, 0x9a, 0xef, 0x9a, 0xf2, 0x02, - 0xb7, 0x59, 0xec, 0x8a, 0x1e, 0x11, 0xd3, 0x39, 0x74, 0x4d, 0x74, 0x0b, 0x12, 0x46, 0xbb, 0xed, - 0x7b, 0xf8, 0x85, 0x49, 0xe4, 0x14, 0x8f, 0x4f, 0x77, 0x02, 0xc9, 0x30, 0xeb, 0x92, 0xa6, 0xef, - 0x52, 0x22, 0xa7, 0xb9, 0x2c, 0x1c, 0x2a, 0x06, 0x4c, 0xb1, 0x04, 0x40, 0x4b, 0x90, 0x69, 0x7c, - 0xfb, 0xa0, 0xa2, 0x1d, 0xee, 0xd7, 0x0f, 0x2a, 0xa5, 0xea, 0x76, 0xb5, 0x52, 0xce, 0x7c, 0x01, - 0x01, 0xcc, 0xd4, 0x1b, 0x6a, 0x75, 0x7f, 0x27, 0x23, 0xa1, 0x24, 0xcc, 0x56, 0xf7, 0x1b, 0x95, - 0x9d, 0x8a, 0x9a, 0x99, 0x60, 0x82, 0x72, 0xed, 0x70, 0x6b, 0xb7, 0x92, 0x99, 0x64, 0x82, 0xad, - 0x5a, 0x6d, 0xb7, 0x52, 0xdc, 0xcf, 0x4c, 0x31, 0x81, 0x5a, 0x29, 0xd5, 0xd4, 0x72, 0x66, 0x1a, - 0x2d, 0x40, 0xe2, 0x60, 0xf7, 0xb0, 0xae, 0x1d, 0x14, 0x77, 0x2a, 0x99, 0x19, 0xe5, 0xbf, 0x09, - 0x80, 0xee, 0x49, 0x21, 0x04, 0x53, 0x3c, 0xfd, 0x83, 0xea, 0xe0, 0xdf, 0xe8, 0x4b, 0x90, 0x62, - 0x67, 0xab, 0x51, 0xae, 0xc2, 0x6a, 0x27, 0x28, 0x8e, 0x79, 0xbd, 0x63, 0x17, 0x53, 0x40, 0x93, - 0x97, 0x16, 0xd0, 0xd4, 0x60, 0x01, 0xad, 0x40, 0xa2, 0x69, 0x1a, 0xc4, 0xf2, 0xd8, 0x2e, 0xd3, - 0x5c, 0x3e, 0x17, 0x4c, 0x54, 0x75, 0xb4, 0x0c, 0x33, 0xb4, 0x69, 0x3b, 0x84, 0xca, 0x33, 0x3c, - 0x3b, 0xc5, 0x08, 0x7d, 0x0b, 0x16, 0xc2, 0xb8, 0x6b, 0xbc, 0xfc, 0x66, 0x79, 0xf9, 0xdd, 0x1d, - 0x32, 0x4f, 0x1a, 0xe2, 0x9b, 0x97, 0xdc, 0xbc, 0x17, 0x19, 0xa1, 0x07, 0xb0, 0x42, 0x7d, 0xc7, - 0xb1, 0x5d, 0x8f, 0x6a, 0x6d, 0xdf, 0xf4, 0x0c, 0xc7, 0x24, 0x5a, 0xa8, 0xc1, 0x8a, 0x84, 0x45, - 0xed, 0x66, 0xa8, 0xb2, 0x27, 0x34, 0xc2, 0x05, 0x29, 0xfa, 0x10, 0x6e, 0xf8, 0x8e, 0x8e, 0x3d, - 0xa2, 0xe9, 0x04, 0xeb, 0xa6, 0x61, 0x11, 0x8d, 0x92, 0xa6, 0x6d, 0xe9, 0x94, 0x97, 0xcf, 0xb4, - 0x7a, 0x3d, 0x10, 0x97, 0x85, 0xb4, 0x1e, 0x08, 0x59, 0xe9, 0xea, 0xe4, 0x08, 0xfb, 0xa6, 0xa7, - 0xd1, 0xe6, 0x31, 0xd1, 0x7d, 0x33, 0x28, 0x9a, 0x84, 0x9a, 0x16, 0xf3, 0x75, 0x31, 0x8d, 0x3e, - 0x02, 0xb9, 0xe3, 0x62, 0xd3, 0xa7, 0x9e, 0xdd, 0xee, 0x9a, 0x24, 0xb9, 0x7f, 0xcb, 0xa1, 0xbc, - 0xc4, 0xc5, 0x1d, 0xcb, 0x67, 0x00, 0x4e, 0x58, 0x18, 0x54, 0x9e, 0xbf, 0x72, 0x6d, 0x45, 0x56, - 0x63, 0x8d, 0xb6, 0xaf, 0x3a, 0x66, 0x8f, 0x45, 0x4d, 0xb8, 0x80, 0xb0, 0xef, 0x1d, 0xdb, 0xae, - 0xf1, 0x26, 0x28, 0x23, 0x1e, 0xb2, 0x14, 0x0f, 0x59, 0x69, 0xe4, 0xed, 0x73, 0xc5, 0xe8, 0x5a, - 0x3c, 0x84, 0x8b, 0xb8, 0x7f, 0x0a, 0xb5, 0x61, 0x91, 0x67, 0xb0, 0x4b, 0x8e, 0x5c, 0x42, 0x8f, - 0x83, 0x2d, 0xd3, 0x7c, 0xcb, 0xe2, 0xe8, 0x5b, 0xb2, 0x4f, 0x35, 0x58, 0x89, 0x6f, 0x98, 0xd6, - 0x7b, 0x27, 0xd0, 0x36, 0xac, 0x86, 0xe1, 0xeb, 0xd9, 0xf6, 0x95, 0x61, 0xe9, 0xf6, 0x2b, 0x4d, - 0xc7, 0x67, 0x54, 0xce, 0xf0, 0xf8, 0xdf, 0x12, 0x7a, 0x91, 0x25, 0x9f, 0x72, 0xa5, 0x32, 0x3e, - 0xa3, 0xe8, 0x6b, 0xb0, 0xd4, 0xc6, 0x96, 0x8f, 0x4d, 0xcd, 0xf5, 0x2d, 0xaa, 0xe9, 0x06, 0x65, - 0x7d, 0x43, 0x97, 0x17, 0x79, 0x5c, 0x51, 0x20, 0x53, 0x7d, 0x8b, 0x96, 0x85, 0x04, 0x1d, 0xc2, - 0xcd, 0xb6, 0x61, 0x19, 0x6d, 0xbf, 0x9b, 0x05, 0x9a, 0x61, 0x79, 0xc4, 0x3d, 0xc5, 0xa6, 0x8c, - 0x78, 0xdb, 0xbd, 0x39, 0xd8, 0x76, 0xc5, 0xe5, 0xad, 0xde, 0x10, 0xb6, 0x61, 0x8a, 0x54, 0x85, - 0xa5, 0x42, 0x61, 0x71, 0xe0, 0x9c, 0x91, 0x02, 0xef, 0x16, 0x0f, 0x1b, 0x8f, 0x6a, 0x6a, 0xf5, - 0x59, 0xb1, 0x51, 0xad, 0xed, 0x6b, 0x31, 0xad, 0x6a, 0x19, 0x50, 0xaf, 0x4e, 0xa9, 0x56, 0xae, - 0x64, 0x24, 0x66, 0xbb, 0x53, 0xab, 0xed, 0xec, 0x56, 0x34, 0xde, 0x8b, 0x62, 0x74, 0x26, 0x94, - 0x26, 0xa4, 0xfb, 0x4e, 0x1a, 0xbd, 0x07, 0xef, 0x94, 0x8b, 0x8d, 0xa2, 0xa6, 0x56, 0xb6, 0xd5, - 0x4a, 0xfd, 0x51, 0xdc, 0x8e, 0x08, 0x52, 0xf5, 0xdd, 0x6a, 0xb9, 0xba, 0xbf, 0xa3, 0x3d, 0xad, - 0xee, 0x97, 0x6b, 0x4f, 0x33, 0x12, 0xba, 0x09, 0xd7, 0x4b, 0x87, 0xf5, 0x46, 0x6d, 0x4f, 0xeb, - 0x13, 0x4d, 0x28, 0xeb, 0xb0, 0xb4, 0x43, 0xbc, 0x6e, 0x70, 0x55, 0xf2, 0xd2, 0x27, 0xd4, 0x8b, - 0xeb, 0x83, 0x8a, 0x09, 0xcb, 0xbb, 0x06, 0x8d, 0x28, 0xd3, 0x50, 0x7b, 0x19, 0x66, 0x1c, 0xec, - 0x12, 0xcb, 0x13, 0xfa, 0x62, 0x84, 0xde, 0x61, 0x25, 0xd6, 0x22, 0x9a, 0x67, 0x9f, 0x90, 0x90, - 0x30, 0x24, 0xd8, 0x4c, 0x83, 0x4d, 0xb0, 0x6e, 0xc7, 0xc5, 0xd4, 0x78, 0x13, 0x70, 0x86, 0x69, - 0x75, 0x8e, 0x4d, 0xd4, 0x8d, 0x37, 0x44, 0xf9, 0xa1, 0x04, 0x37, 0x06, 0xb6, 0xa3, 0x8e, 0x6d, - 0x51, 0x82, 0x1a, 0x30, 0x1f, 0xe9, 0xc8, 0x54, 0x96, 0x78, 0xf1, 0x6e, 0x8c, 0x9c, 0xca, 0x6a, - 0xb2, 0xdb, 0xc2, 0x29, 0xba, 0x03, 0x69, 0x8b, 0xbc, 0xf6, 0xb4, 0x88, 0xcb, 0x41, 0xa3, 0x5f, - 0x60, 0xd3, 0x07, 0xa1, 0xdb, 0xca, 0xaf, 0x24, 0x58, 0x29, 0xb9, 0x8c, 0x64, 0x84, 0x9d, 0xae, - 0x64, 0x5b, 0x47, 0x46, 0xeb, 0xb2, 0xd3, 0xf8, 0x0e, 0xa4, 0x3b, 0x7d, 0xba, 0xc9, 0x2d, 0xf8, - 0xfa, 0xc9, 0xc2, 0xbd, 0x11, 0x3b, 0xb5, 0xd8, 0x2e, 0xe5, 0xf5, 0x8c, 0xd1, 0x57, 0xfb, 0x3b, - 0x4b, 0xd3, 0xd6, 0xc3, 0x7b, 0xa8, 0xb7, 0x29, 0x94, 0x6c, 0x9d, 0x28, 0xff, 0x92, 0x60, 0xe5, - 0x90, 0xb7, 0xdf, 0x78, 0x18, 0x31, 0xee, 0x4a, 0x9f, 0x9f, 0xbb, 0xe8, 0x3e, 0x24, 0xc5, 0x5d, - 0xc2, 0x98, 0x32, 0x4f, 0x97, 0x64, 0x21, 0x3b, 0x50, 0xcc, 0xdb, 0x8c, 0xe0, 0xec, 0x61, 0x7a, - 0xa2, 0x42, 0xa0, 0xce, 0xbe, 0x95, 0x1c, 0xc8, 0x3b, 0xc4, 0x8b, 0xc7, 0x19, 0x97, 0xea, 0x1b, - 0xb0, 0x52, 0x26, 0x26, 0x39, 0xef, 0x68, 0xe2, 0x4c, 0xbe, 0x0c, 0xd7, 0x23, 0x5b, 0xa8, 0xbe, - 0x75, 0x91, 0x72, 0x0e, 0xe4, 0xde, 0xf5, 0x2f, 0xd1, 0xff, 0x91, 0x04, 0x59, 0x56, 0x0c, 0xbd, - 0xee, 0x5c, 0x5a, 0x7f, 0x77, 0x20, 0xdd, 0xcb, 0x5c, 0xa8, 0x3c, 0x11, 0x10, 0xdb, 0x28, 0x75, - 0xa1, 0x57, 0xaa, 0xd3, 0x9f, 0x48, 0xb0, 0x12, 0xeb, 0x9a, 0xa8, 0xd5, 0xef, 0x42, 0xa6, 0x2f, - 0x8d, 0xc2, 0x7a, 0x1d, 0x33, 0x8f, 0xd2, 0xbd, 0x79, 0x34, 0x7c, 0xdd, 0xfe, 0x75, 0x22, 0xe8, - 0x28, 0x91, 0x33, 0xbf, 0xf4, 0x04, 0x77, 0x61, 0x86, 0x7a, 0xd8, 0x23, 0xc1, 0xc1, 0xa5, 0x0a, - 0x1f, 0x8c, 0xe8, 0x73, 0x9d, 0x19, 0xab, 0x62, 0x8d, 0xab, 0x9c, 0x33, 0xfa, 0x0c, 0x92, 0xae, - 0x6f, 0x69, 0xd8, 0xf3, 0xd8, 0x63, 0x92, 0x93, 0xc3, 0x54, 0xa1, 0x3a, 0xa4, 0x3b, 0xe7, 0xc0, - 0xce, 0xa9, 0xbe, 0x55, 0x0c, 0x16, 0x54, 0xc1, 0xed, 0x7c, 0x2b, 0xf7, 0x00, 0xba, 0x12, 0xb4, - 0x02, 0x37, 0xd4, 0xc3, 0x7d, 0xad, 0xd8, 0x68, 0x54, 0xf6, 0x0e, 0x1a, 0x83, 0x64, 0x7c, 0xb7, - 0xd8, 0xa8, 0xd4, 0x1b, 0x19, 0x49, 0xf9, 0xb1, 0x04, 0xf2, 0xe0, 0x4e, 0x22, 0x0f, 0x9e, 0x46, - 0x58, 0x2a, 0xbb, 0xce, 0x45, 0x12, 0x14, 0x46, 0x3c, 0x50, 0x56, 0x28, 0x1d, 0x92, 0xca, 0x36, - 0x18, 0x3a, 0xfc, 0x7f, 0x96, 0x7a, 0xc3, 0xbf, 0x6b, 0xb7, 0x46, 0xbc, 0xc0, 0xa6, 0x2e, 0x0c, - 0xd8, 0x74, 0x5f, 0xc0, 0x4e, 0x60, 0xa1, 0x4d, 0x28, 0xe5, 0xe6, 0x67, 0x21, 0x6b, 0x4f, 0x15, - 0xb6, 0x47, 0x04, 0xbc, 0x17, 0xac, 0x91, 0x13, 0x7f, 0xeb, 0xe4, 0x94, 0xb8, 0x86, 0x77, 0xa6, - 0xce, 0x8b, 0xc5, 0x19, 0x31, 0xa0, 0xac, 0x0a, 0xe5, 0x41, 0x70, 0xe2, 0xe8, 0x9b, 0xb0, 0xd8, - 0x39, 0x7a, 0x61, 0x15, 0x1e, 0xff, 0x87, 0xe3, 0x79, 0xa3, 0x76, 0x6a, 0x5a, 0x4c, 0x0c, 0x1f, - 0x86, 0xaf, 0xc0, 0x72, 0xe9, 0x98, 0x34, 0x4f, 0x9e, 0xb0, 0xd7, 0x62, 0xc9, 0x25, 0x3a, 0xbd, - 0xa8, 0xf1, 0x15, 0xe1, 0xc6, 0x80, 0xb6, 0x40, 0x75, 0x07, 0xd2, 0xc7, 0x98, 0x6a, 0xfc, 0xd5, - 0xa9, 0x35, 0x99, 0x88, 0x5b, 0xce, 0xa9, 0x0b, 0xc7, 0x98, 0x76, 0xf5, 0x79, 0x83, 0x0a, 0x19, - 0xdd, 0x28, 0xa5, 0xff, 0x31, 0x00, 0xf5, 0xb0, 0xeb, 0x69, 0x9e, 0x21, 0x7e, 0x0f, 0x89, 0xbb, - 0x6f, 0x1a, 0xe1, 0x4f, 0x33, 0x6a, 0x82, 0x6b, 0xb3, 0x31, 0xba, 0x07, 0x73, 0xc4, 0xd2, 0x03, - 0xc3, 0xc9, 0x4b, 0x0d, 0x67, 0x89, 0xa5, 0xb3, 0x91, 0x72, 0x04, 0xb7, 0xe2, 0x1d, 0x15, 0x88, - 0xb7, 0x61, 0xea, 0x8a, 0x95, 0xc3, 0xed, 0x0b, 0x7f, 0xbc, 0x1e, 0xfc, 0x3c, 0xd4, 0x69, 0x52, - 0xc4, 0x3d, 0x35, 0x9a, 0x04, 0xfd, 0x52, 0x82, 0x85, 0x1e, 0x36, 0x88, 0xee, 0x0f, 0xb9, 0x47, - 0x1c, 0x87, 0xcc, 0x8e, 0xce, 0xc7, 0x94, 0xaf, 0x7f, 0xff, 0xf7, 0xff, 0xf8, 0xc1, 0xc4, 0x06, - 0xca, 0xe7, 0x4f, 0x37, 0xf2, 0xdf, 0x63, 0x19, 0xf0, 0xa9, 0xe3, 0xda, 0x9f, 0x91, 0xa6, 0x47, - 0xf3, 0xeb, 0x79, 0xd3, 0x6e, 0x06, 0x3f, 0xde, 0xe5, 0xd7, 0xf3, 0x11, 0xe2, 0x96, 0x5f, 0x7f, - 0x8b, 0x7e, 0x2b, 0x41, 0xba, 0x8f, 0x2d, 0xa2, 0x4f, 0x47, 0x68, 0x8e, 0x83, 0xa4, 0x36, 0xfb, - 0x60, 0x5c, 0xf3, 0x20, 0x5a, 0x7d, 0x58, 0x82, 0xa4, 0x3a, 0x07, 0xcd, 0xdb, 0x28, 0x1c, 0xf4, - 0x37, 0x09, 0x96, 0xe2, 0xf8, 0x25, 0xda, 0x1a, 0xd2, 0xa3, 0x0b, 0xc8, 0x69, 0x76, 0xbc, 0x4b, - 0x57, 0xd9, 0xe5, 0x60, 0xb6, 0x95, 0xbb, 0xc3, 0x80, 0xe9, 0xbb, 0xa0, 0x37, 0xfb, 0x79, 0x24, - 0xfa, 0x8f, 0x04, 0x4b, 0x71, 0xd4, 0x73, 0x68, 0x84, 0x17, 0xf0, 0xd6, 0x71, 0x11, 0x3e, 0xe7, - 0x08, 0x9f, 0x14, 0x4a, 0x1c, 0x61, 0x9f, 0xc7, 0xb9, 0x8b, 0x52, 0xb1, 0x0f, 0x6e, 0x7e, 0xfd, - 0xed, 0x20, 0xe2, 0x9f, 0x4b, 0xb0, 0x14, 0xc7, 0x28, 0x87, 0x46, 0x7c, 0x01, 0x1d, 0xcd, 0x2e, - 0x0f, 0x34, 0x97, 0x4a, 0xdb, 0xf1, 0xce, 0x94, 0xfb, 0x1c, 0xd2, 0xbd, 0xf5, 0xbb, 0x97, 0x56, - 0xd3, 0x20, 0x04, 0xf4, 0x1b, 0x09, 0x16, 0x07, 0x38, 0x33, 0x7a, 0x38, 0x7c, 0x43, 0xf8, 0xbf, - 0x46, 0x47, 0x40, 0x41, 0x63, 0x41, 0xf9, 0x93, 0x04, 0xd7, 0x62, 0x28, 0x2a, 0x2a, 0x8e, 0xc1, - 0x9e, 0x7a, 0x99, 0x77, 0x76, 0xeb, 0x2a, 0x4b, 0x88, 0x46, 0xd1, 0x8b, 0x6d, 0xb4, 0xda, 0x42, - 0xff, 0x96, 0x60, 0x29, 0xee, 0xd2, 0x18, 0x3a, 0xb1, 0x2e, 0xb8, 0x1a, 0xb3, 0xa5, 0x2b, 0xad, - 0x21, 0xe0, 0xed, 0x71, 0x78, 0x3b, 0xca, 0xd6, 0xe5, 0xf0, 0xe2, 0x4a, 0x29, 0xfc, 0x1d, 0x87, - 0xad, 0xb9, 0x29, 0xad, 0xa3, 0x5f, 0x4b, 0x90, 0xea, 0x7d, 0x68, 0xa1, 0x4f, 0x46, 0x4f, 0xca, - 0xee, 0x7b, 0x2b, 0x3b, 0xc6, 0x3d, 0xaa, 0x6c, 0x71, 0x4c, 0x9f, 0xa0, 0xcd, 0xd1, 0xd3, 0x31, - 0xcf, 0xae, 0x60, 0x96, 0x95, 0xbf, 0x90, 0x60, 0x71, 0xe0, 0x11, 0x38, 0x74, 0x81, 0x9d, 0xf7, - 0x7c, 0x3c, 0xb7, 0x19, 0x08, 0x97, 0xd7, 0xaf, 0xe2, 0xf2, 0x1f, 0x24, 0xc8, 0xf4, 0x13, 0x7c, - 0xf4, 0xe0, 0x6a, 0x6f, 0x90, 0xec, 0xc3, 0xb1, 0xed, 0x45, 0x82, 0xf5, 0x06, 0x63, 0xd4, 0x04, - 0xe3, 0xe0, 0xd0, 0x3f, 0xfb, 0x90, 0x31, 0xfe, 0x3c, 0x16, 0xb2, 0xc8, 0xab, 0x62, 0x2c, 0x64, - 0x51, 0xe2, 0xae, 0x3c, 0xe6, 0xc8, 0xbe, 0x89, 0xaa, 0xe3, 0x20, 0x0b, 0xa3, 0xd6, 0x91, 0x70, - 0x4c, 0x7f, 0x91, 0x20, 0xdd, 0xc7, 0xa8, 0x87, 0x26, 0x4a, 0xf1, 0xbc, 0x7d, 0x68, 0xa2, 0x74, - 0x0e, 0x91, 0x57, 0xbe, 0xc1, 0x51, 0x96, 0x95, 0x87, 0x23, 0x92, 0xbe, 0xcd, 0x66, 0xef, 0x82, - 0x9b, 0xd2, 0xfa, 0xd6, 0xdf, 0x25, 0x78, 0xbf, 0x69, 0xb7, 0x87, 0xf3, 0x68, 0x6b, 0x31, 0xca, - 0x82, 0x0f, 0x58, 0xbd, 0x1c, 0x48, 0xcf, 0x1e, 0x0b, 0xdb, 0x96, 0x6d, 0x62, 0xab, 0x95, 0xb3, - 0xdd, 0x56, 0xbe, 0x45, 0x2c, 0x5e, 0x4d, 0xf9, 0x40, 0x84, 0x1d, 0x83, 0x5e, 0xf2, 0x1f, 0xe3, - 0xfb, 0xd1, 0xf1, 0xcf, 0x26, 0x6e, 0xef, 0x04, 0x6b, 0x96, 0xb8, 0x3f, 0x5b, 0x46, 0xeb, 0x31, - 0xf7, 0x27, 0xba, 0x7d, 0xee, 0xc9, 0xc6, 0xef, 0x42, 0xbd, 0xe7, 0x5c, 0xef, 0x79, 0xa8, 0xf7, - 0x3c, 0xaa, 0xf7, 0xfc, 0xc9, 0xc6, 0x8b, 0x19, 0xee, 0xcd, 0xdd, 0xff, 0x05, 0x00, 0x00, 0xff, - 0xff, 0xa8, 0x04, 0x35, 0x66, 0x3d, 0x1f, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1/transfer.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1/transfer.pb.go deleted file mode 100644 index 7d51fe9d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1/transfer.pb.go +++ /dev/null @@ -1,531 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/bigquery/datatransfer/v1/transfer.proto - -package datatransfer - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Represents data transfer type. -type TransferType int32 - -const ( - // Invalid or Unknown transfer type placeholder. - TransferType_TRANSFER_TYPE_UNSPECIFIED TransferType = 0 - // Batch data transfer. - TransferType_BATCH TransferType = 1 - // Streaming data transfer. Streaming data source currently doesn't - // support multiple transfer configs per project. - TransferType_STREAMING TransferType = 2 -) - -var TransferType_name = map[int32]string{ - 0: "TRANSFER_TYPE_UNSPECIFIED", - 1: "BATCH", - 2: "STREAMING", -} -var TransferType_value = map[string]int32{ - "TRANSFER_TYPE_UNSPECIFIED": 0, - "BATCH": 1, - "STREAMING": 2, -} - -func (x TransferType) String() string { - return proto.EnumName(TransferType_name, int32(x)) -} -func (TransferType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Represents data transfer run state. -type TransferState int32 - -const ( - // State placeholder. - TransferState_TRANSFER_STATE_UNSPECIFIED TransferState = 0 - // Data transfer is scheduled and is waiting to be picked up by - // data transfer backend. - TransferState_PENDING TransferState = 2 - // Data transfer is in progress. - TransferState_RUNNING TransferState = 3 - // Data transfer completed successsfully. - TransferState_SUCCEEDED TransferState = 4 - // Data transfer failed. - TransferState_FAILED TransferState = 5 - // Data transfer is cancelled. - TransferState_CANCELLED TransferState = 6 -) - -var TransferState_name = map[int32]string{ - 0: "TRANSFER_STATE_UNSPECIFIED", - 2: "PENDING", - 3: "RUNNING", - 4: "SUCCEEDED", - 5: "FAILED", - 6: "CANCELLED", -} -var TransferState_value = map[string]int32{ - "TRANSFER_STATE_UNSPECIFIED": 0, - "PENDING": 2, - "RUNNING": 3, - "SUCCEEDED": 4, - "FAILED": 5, - "CANCELLED": 6, -} - -func (x TransferState) String() string { - return proto.EnumName(TransferState_name, int32(x)) -} -func (TransferState) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -// Represents data transfer user facing message severity. -type TransferMessage_MessageSeverity int32 - -const ( - // No severity specified. - TransferMessage_MESSAGE_SEVERITY_UNSPECIFIED TransferMessage_MessageSeverity = 0 - // Informational message. - TransferMessage_INFO TransferMessage_MessageSeverity = 1 - // Warning message. - TransferMessage_WARNING TransferMessage_MessageSeverity = 2 - // Error message. - TransferMessage_ERROR TransferMessage_MessageSeverity = 3 -) - -var TransferMessage_MessageSeverity_name = map[int32]string{ - 0: "MESSAGE_SEVERITY_UNSPECIFIED", - 1: "INFO", - 2: "WARNING", - 3: "ERROR", -} -var TransferMessage_MessageSeverity_value = map[string]int32{ - "MESSAGE_SEVERITY_UNSPECIFIED": 0, - "INFO": 1, - "WARNING": 2, - "ERROR": 3, -} - -func (x TransferMessage_MessageSeverity) String() string { - return proto.EnumName(TransferMessage_MessageSeverity_name, int32(x)) -} -func (TransferMessage_MessageSeverity) EnumDescriptor() ([]byte, []int) { - return fileDescriptor1, []int{2, 0} -} - -// Represents a data transfer configuration. A transfer configuration -// contains all metadata needed to perform a data transfer. For example, -// `destination_dataset_id` specifies where data should be stored. -// When a new transfer configuration is created, the specified -// `destination_dataset_id` is created when needed and shared with the -// appropriate data source service account. -// Next id: 20 -type TransferConfig struct { - // The resource name of the transfer config. - // Transfer config names have the form - // `projects/{project_id}/transferConfigs/{config_id}`. - // Where `config_id` is usually a uuid, even though it is not - // guaranteed or required. The name is ignored when creating a transfer - // config. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The BigQuery target dataset id. - DestinationDatasetId string `protobuf:"bytes,2,opt,name=destination_dataset_id,json=destinationDatasetId" json:"destination_dataset_id,omitempty"` - // User specified display name for the data transfer. - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Data source id. Cannot be changed once data transfer is created. - DataSourceId string `protobuf:"bytes,5,opt,name=data_source_id,json=dataSourceId" json:"data_source_id,omitempty"` - // Data transfer specific parameters. - Params *google_protobuf1.Struct `protobuf:"bytes,9,opt,name=params" json:"params,omitempty"` - // Data transfer schedule. - // If the data source does not support a custom schedule, this should be - // empty. If it is empty, the default value for the data source will be - // used. - // The specified times are in UTC. - // Examples of valid format: - // `1st,3rd monday of month 15:30`, - // `every wed,fri of jan,jun 13:15`, and - // `first sunday of quarter 00:00`. - // See more explanation about the format here: - // https://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format - // NOTE: the granularity should be at least 8 hours, or less frequent. - Schedule string `protobuf:"bytes,7,opt,name=schedule" json:"schedule,omitempty"` - // The number of days to look back to automatically refresh the data. - // For example, if `data_refresh_window_days = 10`, then every day - // BigQuery reingests data for [today-10, today-1], rather than ingesting data - // for just [today-1]. - // Only valid if the data source supports the feature. Set the value to 0 - // to use the default value. - DataRefreshWindowDays int32 `protobuf:"varint,12,opt,name=data_refresh_window_days,json=dataRefreshWindowDays" json:"data_refresh_window_days,omitempty"` - // Is this config disabled. When set to true, no runs are scheduled - // for a given transfer. - Disabled bool `protobuf:"varint,13,opt,name=disabled" json:"disabled,omitempty"` - // Output only. Data transfer modification time. Ignored by server on input. - UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // Output only. Next time when data transfer will run. - NextRunTime *google_protobuf2.Timestamp `protobuf:"bytes,8,opt,name=next_run_time,json=nextRunTime" json:"next_run_time,omitempty"` - // Output only. State of the most recently updated transfer run. - State TransferState `protobuf:"varint,10,opt,name=state,enum=google.cloud.bigquery.datatransfer.v1.TransferState" json:"state,omitempty"` - // Output only. Unique ID of the user on whose behalf transfer is done. - // Applicable only to data sources that do not support service accounts. - // When set to 0, the data source service account credentials are used. - // May be negative. Note, that this identifier is not stable. - // It may change over time even for the same user. - UserId int64 `protobuf:"varint,11,opt,name=user_id,json=userId" json:"user_id,omitempty"` - // Output only. Region in which BigQuery dataset is located. - DatasetRegion string `protobuf:"bytes,14,opt,name=dataset_region,json=datasetRegion" json:"dataset_region,omitempty"` -} - -func (m *TransferConfig) Reset() { *m = TransferConfig{} } -func (m *TransferConfig) String() string { return proto.CompactTextString(m) } -func (*TransferConfig) ProtoMessage() {} -func (*TransferConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *TransferConfig) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *TransferConfig) GetDestinationDatasetId() string { - if m != nil { - return m.DestinationDatasetId - } - return "" -} - -func (m *TransferConfig) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *TransferConfig) GetDataSourceId() string { - if m != nil { - return m.DataSourceId - } - return "" -} - -func (m *TransferConfig) GetParams() *google_protobuf1.Struct { - if m != nil { - return m.Params - } - return nil -} - -func (m *TransferConfig) GetSchedule() string { - if m != nil { - return m.Schedule - } - return "" -} - -func (m *TransferConfig) GetDataRefreshWindowDays() int32 { - if m != nil { - return m.DataRefreshWindowDays - } - return 0 -} - -func (m *TransferConfig) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -func (m *TransferConfig) GetUpdateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *TransferConfig) GetNextRunTime() *google_protobuf2.Timestamp { - if m != nil { - return m.NextRunTime - } - return nil -} - -func (m *TransferConfig) GetState() TransferState { - if m != nil { - return m.State - } - return TransferState_TRANSFER_STATE_UNSPECIFIED -} - -func (m *TransferConfig) GetUserId() int64 { - if m != nil { - return m.UserId - } - return 0 -} - -func (m *TransferConfig) GetDatasetRegion() string { - if m != nil { - return m.DatasetRegion - } - return "" -} - -// Represents a data transfer run. -// Next id: 27 -type TransferRun struct { - // The resource name of the transfer run. - // Transfer run names have the form - // `projects/{project_id}/locations/{location}/transferConfigs/{config_id}/runs/{run_id}`. - // The name is ignored when creating a transfer run. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Minimum time after which a transfer run can be started. - ScheduleTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=schedule_time,json=scheduleTime" json:"schedule_time,omitempty"` - // For batch transfer runs, specifies the date and time that - // data should be ingested. - RunTime *google_protobuf2.Timestamp `protobuf:"bytes,10,opt,name=run_time,json=runTime" json:"run_time,omitempty"` - // Status of the transfer run. - ErrorStatus *google_rpc.Status `protobuf:"bytes,21,opt,name=error_status,json=errorStatus" json:"error_status,omitempty"` - // Output only. Time when transfer run was started. - // Parameter ignored by server for input requests. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Output only. Time when transfer run ended. - // Parameter ignored by server for input requests. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Output only. Last time the data transfer run state was updated. - UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // Output only. Data transfer specific parameters. - Params *google_protobuf1.Struct `protobuf:"bytes,9,opt,name=params" json:"params,omitempty"` - // Output only. The BigQuery target dataset id. - DestinationDatasetId string `protobuf:"bytes,2,opt,name=destination_dataset_id,json=destinationDatasetId" json:"destination_dataset_id,omitempty"` - // Output only. Data source id. - DataSourceId string `protobuf:"bytes,7,opt,name=data_source_id,json=dataSourceId" json:"data_source_id,omitempty"` - // Data transfer run state. Ignored for input requests. - State TransferState `protobuf:"varint,8,opt,name=state,enum=google.cloud.bigquery.datatransfer.v1.TransferState" json:"state,omitempty"` - // Output only. Unique ID of the user on whose behalf transfer is done. - // Applicable only to data sources that do not support service accounts. - // When set to 0, the data source service account credentials are used. - // May be negative. Note, that this identifier is not stable. - // It may change over time even for the same user. - UserId int64 `protobuf:"varint,11,opt,name=user_id,json=userId" json:"user_id,omitempty"` - // Output only. Describes the schedule of this transfer run if it was - // created as part of a regular schedule. For batch transfer runs that are - // scheduled manually, this is empty. - // NOTE: the system might choose to delay the schedule depending on the - // current load, so `schedule_time` doesn't always matches this. - Schedule string `protobuf:"bytes,12,opt,name=schedule" json:"schedule,omitempty"` -} - -func (m *TransferRun) Reset() { *m = TransferRun{} } -func (m *TransferRun) String() string { return proto.CompactTextString(m) } -func (*TransferRun) ProtoMessage() {} -func (*TransferRun) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *TransferRun) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *TransferRun) GetScheduleTime() *google_protobuf2.Timestamp { - if m != nil { - return m.ScheduleTime - } - return nil -} - -func (m *TransferRun) GetRunTime() *google_protobuf2.Timestamp { - if m != nil { - return m.RunTime - } - return nil -} - -func (m *TransferRun) GetErrorStatus() *google_rpc.Status { - if m != nil { - return m.ErrorStatus - } - return nil -} - -func (m *TransferRun) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *TransferRun) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *TransferRun) GetUpdateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *TransferRun) GetParams() *google_protobuf1.Struct { - if m != nil { - return m.Params - } - return nil -} - -func (m *TransferRun) GetDestinationDatasetId() string { - if m != nil { - return m.DestinationDatasetId - } - return "" -} - -func (m *TransferRun) GetDataSourceId() string { - if m != nil { - return m.DataSourceId - } - return "" -} - -func (m *TransferRun) GetState() TransferState { - if m != nil { - return m.State - } - return TransferState_TRANSFER_STATE_UNSPECIFIED -} - -func (m *TransferRun) GetUserId() int64 { - if m != nil { - return m.UserId - } - return 0 -} - -func (m *TransferRun) GetSchedule() string { - if m != nil { - return m.Schedule - } - return "" -} - -// Represents a user facing message for a particular data transfer run. -type TransferMessage struct { - // Time when message was logged. - MessageTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=message_time,json=messageTime" json:"message_time,omitempty"` - // Message severity. - Severity TransferMessage_MessageSeverity `protobuf:"varint,2,opt,name=severity,enum=google.cloud.bigquery.datatransfer.v1.TransferMessage_MessageSeverity" json:"severity,omitempty"` - // Message text. - MessageText string `protobuf:"bytes,3,opt,name=message_text,json=messageText" json:"message_text,omitempty"` -} - -func (m *TransferMessage) Reset() { *m = TransferMessage{} } -func (m *TransferMessage) String() string { return proto.CompactTextString(m) } -func (*TransferMessage) ProtoMessage() {} -func (*TransferMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *TransferMessage) GetMessageTime() *google_protobuf2.Timestamp { - if m != nil { - return m.MessageTime - } - return nil -} - -func (m *TransferMessage) GetSeverity() TransferMessage_MessageSeverity { - if m != nil { - return m.Severity - } - return TransferMessage_MESSAGE_SEVERITY_UNSPECIFIED -} - -func (m *TransferMessage) GetMessageText() string { - if m != nil { - return m.MessageText - } - return "" -} - -func init() { - proto.RegisterType((*TransferConfig)(nil), "google.cloud.bigquery.datatransfer.v1.TransferConfig") - proto.RegisterType((*TransferRun)(nil), "google.cloud.bigquery.datatransfer.v1.TransferRun") - proto.RegisterType((*TransferMessage)(nil), "google.cloud.bigquery.datatransfer.v1.TransferMessage") - proto.RegisterEnum("google.cloud.bigquery.datatransfer.v1.TransferType", TransferType_name, TransferType_value) - proto.RegisterEnum("google.cloud.bigquery.datatransfer.v1.TransferState", TransferState_name, TransferState_value) - proto.RegisterEnum("google.cloud.bigquery.datatransfer.v1.TransferMessage_MessageSeverity", TransferMessage_MessageSeverity_name, TransferMessage_MessageSeverity_value) -} - -func init() { - proto.RegisterFile("google/cloud/bigquery/datatransfer/v1/transfer.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 922 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0xe3, 0x44, - 0x14, 0xc6, 0xf9, 0xcf, 0x71, 0x92, 0x8d, 0x46, 0x2c, 0x35, 0xd5, 0x02, 0xa1, 0xa2, 0x52, 0xd8, - 0x0b, 0x5b, 0x2d, 0x5d, 0x21, 0xb4, 0x02, 0x94, 0x1f, 0x27, 0x04, 0x6d, 0xb3, 0xd9, 0xb1, 0xdb, - 0xd5, 0xa2, 0x4a, 0xd6, 0x24, 0x9e, 0x7a, 0x2d, 0x25, 0xb6, 0x99, 0x19, 0x77, 0x9b, 0x87, 0xe0, - 0x25, 0xb8, 0xe4, 0x82, 0x07, 0xe1, 0x82, 0xd7, 0xe0, 0x35, 0x90, 0xc7, 0x76, 0x94, 0xcd, 0x56, - 0x4a, 0x8b, 0xc4, 0x55, 0xe7, 0xcc, 0xf9, 0xbe, 0xaf, 0xdf, 0x9c, 0x1f, 0x2b, 0x70, 0xe6, 0x85, - 0xa1, 0xb7, 0xa4, 0xc6, 0x62, 0x19, 0xc6, 0xae, 0x31, 0xf7, 0xbd, 0x5f, 0x63, 0xca, 0xd6, 0x86, - 0x4b, 0x04, 0x11, 0x8c, 0x04, 0xfc, 0x9a, 0x32, 0xe3, 0xe6, 0xc4, 0xc8, 0xcf, 0x7a, 0xc4, 0x42, - 0x11, 0xa2, 0xe3, 0x94, 0xa5, 0x4b, 0x96, 0x9e, 0xb3, 0xf4, 0x6d, 0x96, 0x7e, 0x73, 0x72, 0xf8, - 0x24, 0x13, 0x27, 0x91, 0x6f, 0x90, 0x20, 0x08, 0x05, 0x11, 0x7e, 0x18, 0xf0, 0x54, 0x64, 0x93, - 0x95, 0xd1, 0x3c, 0xbe, 0x36, 0xb8, 0x60, 0xf1, 0x42, 0x64, 0xd9, 0x2f, 0x76, 0xb3, 0xc2, 0x5f, - 0x51, 0x2e, 0xc8, 0x2a, 0xca, 0x00, 0x07, 0x19, 0x80, 0x45, 0x0b, 0x83, 0x0b, 0x22, 0xe2, 0x4c, - 0xf7, 0xe8, 0xef, 0x12, 0xb4, 0xec, 0xcc, 0xc5, 0x20, 0x0c, 0xae, 0x7d, 0x0f, 0x21, 0x28, 0x05, - 0x64, 0x45, 0x35, 0xa5, 0xa3, 0x74, 0xeb, 0x58, 0x9e, 0xd1, 0x19, 0x7c, 0xe2, 0x52, 0x2e, 0xfc, - 0x40, 0x9a, 0x72, 0x12, 0xef, 0x9c, 0x0a, 0xc7, 0x77, 0xb5, 0x82, 0x44, 0x7d, 0xbc, 0x95, 0x1d, - 0xa6, 0xc9, 0x89, 0x8b, 0xbe, 0x84, 0x86, 0xeb, 0xf3, 0x68, 0x49, 0xd6, 0x8e, 0x54, 0x2c, 0x4a, - 0xac, 0x9a, 0xdd, 0x4d, 0x13, 0xe1, 0xaf, 0xa0, 0x95, 0x88, 0x39, 0x3c, 0x8c, 0xd9, 0x82, 0x26, - 0x82, 0x65, 0x09, 0x6a, 0x24, 0xb7, 0x96, 0xbc, 0x9c, 0xb8, 0xc8, 0x80, 0x4a, 0x44, 0x18, 0x59, - 0x71, 0xad, 0xde, 0x51, 0xba, 0xea, 0xe9, 0x81, 0x9e, 0xd5, 0x34, 0x7f, 0xb0, 0x6e, 0xc9, 0x72, - 0xe0, 0x0c, 0x86, 0x0e, 0xa1, 0xc6, 0x17, 0x6f, 0xa9, 0x1b, 0x2f, 0xa9, 0x56, 0x95, 0x82, 0x9b, - 0x18, 0x7d, 0x0b, 0x9a, 0xfc, 0x97, 0x8c, 0x5e, 0x33, 0xca, 0xdf, 0x3a, 0xef, 0xfc, 0xc0, 0x0d, - 0xdf, 0x39, 0x2e, 0x59, 0x73, 0xad, 0xd1, 0x51, 0xba, 0x65, 0xfc, 0x38, 0xc9, 0xe3, 0x34, 0xfd, - 0x5a, 0x66, 0x87, 0x64, 0x2d, 0x45, 0x5d, 0x9f, 0x93, 0xf9, 0x92, 0xba, 0x5a, 0xb3, 0xa3, 0x74, - 0x6b, 0x78, 0x13, 0xa3, 0xe7, 0xa0, 0xc6, 0x91, 0x4b, 0x04, 0x75, 0x92, 0xd2, 0x6b, 0x25, 0x69, - 0xf3, 0xf0, 0x03, 0x9b, 0x76, 0xde, 0x17, 0x0c, 0x29, 0x3c, 0xb9, 0x40, 0x3f, 0x40, 0x33, 0xa0, - 0xb7, 0xc2, 0x61, 0x71, 0x90, 0xd2, 0x6b, 0x7b, 0xe9, 0x6a, 0x42, 0xc0, 0x71, 0x20, 0xf9, 0x3f, - 0x43, 0x39, 0x69, 0x2a, 0xd5, 0xa0, 0xa3, 0x74, 0x5b, 0xa7, 0x67, 0xfa, 0xbd, 0x26, 0x4e, 0xcf, - 0xfb, 0x6e, 0x25, 0x5c, 0x9c, 0x4a, 0xa0, 0x03, 0xa8, 0xc6, 0x9c, 0xb2, 0xa4, 0x13, 0x6a, 0x47, - 0xe9, 0x16, 0x71, 0x25, 0x09, 0x27, 0x2e, 0x3a, 0x4e, 0x3b, 0x95, 0xb4, 0x9d, 0x51, 0xcf, 0x0f, - 0x03, 0xad, 0x25, 0x0b, 0xdb, 0xcc, 0x6e, 0xb1, 0xbc, 0x3c, 0xfa, 0xad, 0x0c, 0x6a, 0x2e, 0x8c, - 0xe3, 0xe0, 0xce, 0x69, 0xfa, 0x11, 0x9a, 0x79, 0x37, 0xd2, 0xf7, 0x16, 0xf7, 0xbe, 0xb7, 0x91, - 0x13, 0xe4, 0x83, 0x9f, 0x41, 0x6d, 0x53, 0x2b, 0xd8, 0xcb, 0xad, 0xb2, 0xac, 0x4e, 0xcf, 0xa0, - 0x41, 0x19, 0x0b, 0x99, 0x93, 0xae, 0x80, 0xf6, 0x58, 0x52, 0x51, 0x4e, 0x65, 0xd1, 0x42, 0xb7, - 0x64, 0x06, 0xab, 0x12, 0x97, 0x06, 0xe8, 0x3b, 0x00, 0x2e, 0x08, 0x13, 0xf7, 0x6d, 0x6d, 0x5d, - 0xa2, 0x73, 0xa3, 0x34, 0x70, 0x53, 0x62, 0x79, 0xbf, 0x51, 0x1a, 0xb8, 0x92, 0xb6, 0x33, 0x4d, - 0x95, 0x07, 0x4d, 0xd3, 0x83, 0x97, 0xe5, 0xbf, 0x2d, 0xf7, 0x87, 0x9b, 0x5b, 0xbd, 0x63, 0x73, - 0x37, 0xa3, 0x59, 0xfb, 0x1f, 0x47, 0x73, 0x7b, 0xdb, 0x1b, 0xef, 0x6f, 0xfb, 0xd1, 0x9f, 0x05, - 0x78, 0x94, 0xab, 0x9d, 0x53, 0xce, 0x89, 0x47, 0xd1, 0xf7, 0xd0, 0x58, 0xa5, 0xc7, 0xb4, 0xbe, - 0xca, 0xfe, 0x75, 0xcb, 0xf0, 0xb2, 0xc0, 0x73, 0xa8, 0x71, 0x7a, 0x43, 0x99, 0x2f, 0xd6, 0xb2, - 0x42, 0xad, 0xd3, 0xd1, 0x03, 0x9f, 0x95, 0x19, 0xd1, 0xb3, 0xbf, 0x56, 0xa6, 0x86, 0x37, 0xba, - 0xc9, 0xa7, 0x73, 0x63, 0x91, 0xde, 0x8a, 0xfc, 0xd3, 0x99, 0xdb, 0xa0, 0xb7, 0xe2, 0xe8, 0x02, - 0x1e, 0xed, 0xf0, 0x51, 0x07, 0x9e, 0x9c, 0x9b, 0x96, 0xd5, 0x1b, 0x9b, 0x8e, 0x65, 0x5e, 0x9a, - 0x78, 0x62, 0xbf, 0x71, 0x2e, 0xa6, 0xd6, 0xcc, 0x1c, 0x4c, 0x46, 0x13, 0x73, 0xd8, 0xfe, 0x08, - 0xd5, 0xa0, 0x34, 0x99, 0x8e, 0x5e, 0xb6, 0x15, 0xa4, 0x42, 0xf5, 0x75, 0x0f, 0x4f, 0x27, 0xd3, - 0x71, 0xbb, 0x80, 0xea, 0x50, 0x36, 0x31, 0x7e, 0x89, 0xdb, 0xc5, 0xa7, 0x63, 0x68, 0xe4, 0x36, - 0xed, 0x75, 0x44, 0xd1, 0x67, 0xf0, 0xa9, 0x8d, 0x7b, 0x53, 0x6b, 0x64, 0x62, 0xc7, 0x7e, 0x33, - 0x33, 0x77, 0x04, 0xeb, 0x50, 0xee, 0xf7, 0xec, 0xc1, 0x4f, 0x6d, 0x05, 0x35, 0xa1, 0x6e, 0xd9, - 0xd8, 0xec, 0x9d, 0x4b, 0xcd, 0xa7, 0x1c, 0x9a, 0xef, 0xb5, 0x11, 0x7d, 0x0e, 0x87, 0x1b, 0x25, - 0xcb, 0xee, 0xd9, 0xbb, 0x52, 0x2a, 0x54, 0x67, 0xe6, 0x74, 0x98, 0x3a, 0x52, 0xa1, 0x8a, 0x2f, - 0xa6, 0xd2, 0x5e, 0x51, 0x2a, 0x5f, 0x0c, 0x06, 0xa6, 0x39, 0x34, 0x87, 0xed, 0x12, 0x02, 0xa8, - 0x8c, 0x7a, 0x93, 0x17, 0xe6, 0xb0, 0x5d, 0x4e, 0x52, 0x83, 0xde, 0x74, 0x60, 0xbe, 0x48, 0xc2, - 0x4a, 0xff, 0x1f, 0x05, 0xbe, 0x5e, 0x84, 0xab, 0xfb, 0xf5, 0xa3, 0xbf, 0x31, 0x38, 0x4b, 0x5a, - 0x3e, 0x53, 0x7e, 0x79, 0x95, 0xf1, 0xbc, 0x70, 0x49, 0x02, 0x4f, 0x0f, 0x99, 0x67, 0x78, 0x34, - 0x90, 0x03, 0x61, 0xa4, 0x29, 0x12, 0xf9, 0x7c, 0xcf, 0x0f, 0x80, 0xe7, 0xdb, 0xf1, 0xef, 0x85, - 0xf2, 0x78, 0xd0, 0x1f, 0xda, 0x7f, 0x14, 0x8e, 0xc7, 0xa9, 0xf6, 0x40, 0x7a, 0xea, 0xfb, 0xde, - 0x2b, 0xe9, 0x29, 0xd9, 0xa8, 0xdc, 0x86, 0x7e, 0x79, 0xf2, 0x57, 0x8e, 0xbb, 0x92, 0xb8, 0xab, - 0x1c, 0x77, 0xb5, 0x8d, 0xbb, 0xba, 0x3c, 0x99, 0x57, 0xa4, 0xab, 0x6f, 0xfe, 0x0d, 0x00, 0x00, - 0xff, 0xff, 0x0d, 0x74, 0xf0, 0x31, 0x95, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/logging/v1/audit_data.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/logging/v1/audit_data.pb.go deleted file mode 100644 index 84044ac8..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/bigquery/logging/v1/audit_data.pb.go +++ /dev/null @@ -1,2225 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/bigquery/logging/v1/audit_data.proto - -/* -Package logging is a generated protocol buffer package. - -It is generated from these files: - google/cloud/bigquery/logging/v1/audit_data.proto - -It has these top-level messages: - AuditData - TableInsertRequest - TableUpdateRequest - TableInsertResponse - TableUpdateResponse - DatasetListRequest - DatasetInsertRequest - DatasetInsertResponse - DatasetUpdateRequest - DatasetUpdateResponse - JobInsertRequest - JobInsertResponse - JobQueryRequest - JobQueryResponse - JobGetQueryResultsRequest - JobGetQueryResultsResponse - JobQueryDoneResponse - JobCompletedEvent - TableDataListRequest - Table - TableInfo - TableViewDefinition - Dataset - DatasetInfo - BigQueryAcl - Job - JobConfiguration - TableDefinition - JobStatus - JobStatistics - DatasetName - TableName - JobName -*/ -package logging - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// BigQuery request and response messages for audit log. -// Note: `Table.schema` has been deprecated in favor of `Table.schemaJson`. -// `Table.schema` may continue to be present in your logs during this -// transition. -type AuditData struct { - // Request data for each BigQuery method. - // - // Types that are valid to be assigned to Request: - // *AuditData_TableInsertRequest - // *AuditData_TableUpdateRequest - // *AuditData_DatasetListRequest - // *AuditData_DatasetInsertRequest - // *AuditData_DatasetUpdateRequest - // *AuditData_JobInsertRequest - // *AuditData_JobQueryRequest - // *AuditData_JobGetQueryResultsRequest - // *AuditData_TableDataListRequest - Request isAuditData_Request `protobuf_oneof:"request"` - // Response data for each BigQuery method. - // - // Types that are valid to be assigned to Response: - // *AuditData_TableInsertResponse - // *AuditData_TableUpdateResponse - // *AuditData_DatasetInsertResponse - // *AuditData_DatasetUpdateResponse - // *AuditData_JobInsertResponse - // *AuditData_JobQueryResponse - // *AuditData_JobGetQueryResultsResponse - // *AuditData_JobQueryDoneResponse - Response isAuditData_Response `protobuf_oneof:"response"` - // A job completion event. - JobCompletedEvent *JobCompletedEvent `protobuf:"bytes,17,opt,name=job_completed_event,json=jobCompletedEvent" json:"job_completed_event,omitempty"` -} - -func (m *AuditData) Reset() { *m = AuditData{} } -func (m *AuditData) String() string { return proto.CompactTextString(m) } -func (*AuditData) ProtoMessage() {} -func (*AuditData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isAuditData_Request interface { - isAuditData_Request() -} -type isAuditData_Response interface { - isAuditData_Response() -} - -type AuditData_TableInsertRequest struct { - TableInsertRequest *TableInsertRequest `protobuf:"bytes,1,opt,name=table_insert_request,json=tableInsertRequest,oneof"` -} -type AuditData_TableUpdateRequest struct { - TableUpdateRequest *TableUpdateRequest `protobuf:"bytes,16,opt,name=table_update_request,json=tableUpdateRequest,oneof"` -} -type AuditData_DatasetListRequest struct { - DatasetListRequest *DatasetListRequest `protobuf:"bytes,2,opt,name=dataset_list_request,json=datasetListRequest,oneof"` -} -type AuditData_DatasetInsertRequest struct { - DatasetInsertRequest *DatasetInsertRequest `protobuf:"bytes,3,opt,name=dataset_insert_request,json=datasetInsertRequest,oneof"` -} -type AuditData_DatasetUpdateRequest struct { - DatasetUpdateRequest *DatasetUpdateRequest `protobuf:"bytes,4,opt,name=dataset_update_request,json=datasetUpdateRequest,oneof"` -} -type AuditData_JobInsertRequest struct { - JobInsertRequest *JobInsertRequest `protobuf:"bytes,5,opt,name=job_insert_request,json=jobInsertRequest,oneof"` -} -type AuditData_JobQueryRequest struct { - JobQueryRequest *JobQueryRequest `protobuf:"bytes,6,opt,name=job_query_request,json=jobQueryRequest,oneof"` -} -type AuditData_JobGetQueryResultsRequest struct { - JobGetQueryResultsRequest *JobGetQueryResultsRequest `protobuf:"bytes,7,opt,name=job_get_query_results_request,json=jobGetQueryResultsRequest,oneof"` -} -type AuditData_TableDataListRequest struct { - TableDataListRequest *TableDataListRequest `protobuf:"bytes,8,opt,name=table_data_list_request,json=tableDataListRequest,oneof"` -} -type AuditData_TableInsertResponse struct { - TableInsertResponse *TableInsertResponse `protobuf:"bytes,9,opt,name=table_insert_response,json=tableInsertResponse,oneof"` -} -type AuditData_TableUpdateResponse struct { - TableUpdateResponse *TableUpdateResponse `protobuf:"bytes,10,opt,name=table_update_response,json=tableUpdateResponse,oneof"` -} -type AuditData_DatasetInsertResponse struct { - DatasetInsertResponse *DatasetInsertResponse `protobuf:"bytes,11,opt,name=dataset_insert_response,json=datasetInsertResponse,oneof"` -} -type AuditData_DatasetUpdateResponse struct { - DatasetUpdateResponse *DatasetUpdateResponse `protobuf:"bytes,12,opt,name=dataset_update_response,json=datasetUpdateResponse,oneof"` -} -type AuditData_JobInsertResponse struct { - JobInsertResponse *JobInsertResponse `protobuf:"bytes,18,opt,name=job_insert_response,json=jobInsertResponse,oneof"` -} -type AuditData_JobQueryResponse struct { - JobQueryResponse *JobQueryResponse `protobuf:"bytes,13,opt,name=job_query_response,json=jobQueryResponse,oneof"` -} -type AuditData_JobGetQueryResultsResponse struct { - JobGetQueryResultsResponse *JobGetQueryResultsResponse `protobuf:"bytes,14,opt,name=job_get_query_results_response,json=jobGetQueryResultsResponse,oneof"` -} -type AuditData_JobQueryDoneResponse struct { - JobQueryDoneResponse *JobQueryDoneResponse `protobuf:"bytes,15,opt,name=job_query_done_response,json=jobQueryDoneResponse,oneof"` -} - -func (*AuditData_TableInsertRequest) isAuditData_Request() {} -func (*AuditData_TableUpdateRequest) isAuditData_Request() {} -func (*AuditData_DatasetListRequest) isAuditData_Request() {} -func (*AuditData_DatasetInsertRequest) isAuditData_Request() {} -func (*AuditData_DatasetUpdateRequest) isAuditData_Request() {} -func (*AuditData_JobInsertRequest) isAuditData_Request() {} -func (*AuditData_JobQueryRequest) isAuditData_Request() {} -func (*AuditData_JobGetQueryResultsRequest) isAuditData_Request() {} -func (*AuditData_TableDataListRequest) isAuditData_Request() {} -func (*AuditData_TableInsertResponse) isAuditData_Response() {} -func (*AuditData_TableUpdateResponse) isAuditData_Response() {} -func (*AuditData_DatasetInsertResponse) isAuditData_Response() {} -func (*AuditData_DatasetUpdateResponse) isAuditData_Response() {} -func (*AuditData_JobInsertResponse) isAuditData_Response() {} -func (*AuditData_JobQueryResponse) isAuditData_Response() {} -func (*AuditData_JobGetQueryResultsResponse) isAuditData_Response() {} -func (*AuditData_JobQueryDoneResponse) isAuditData_Response() {} - -func (m *AuditData) GetRequest() isAuditData_Request { - if m != nil { - return m.Request - } - return nil -} -func (m *AuditData) GetResponse() isAuditData_Response { - if m != nil { - return m.Response - } - return nil -} - -func (m *AuditData) GetTableInsertRequest() *TableInsertRequest { - if x, ok := m.GetRequest().(*AuditData_TableInsertRequest); ok { - return x.TableInsertRequest - } - return nil -} - -func (m *AuditData) GetTableUpdateRequest() *TableUpdateRequest { - if x, ok := m.GetRequest().(*AuditData_TableUpdateRequest); ok { - return x.TableUpdateRequest - } - return nil -} - -func (m *AuditData) GetDatasetListRequest() *DatasetListRequest { - if x, ok := m.GetRequest().(*AuditData_DatasetListRequest); ok { - return x.DatasetListRequest - } - return nil -} - -func (m *AuditData) GetDatasetInsertRequest() *DatasetInsertRequest { - if x, ok := m.GetRequest().(*AuditData_DatasetInsertRequest); ok { - return x.DatasetInsertRequest - } - return nil -} - -func (m *AuditData) GetDatasetUpdateRequest() *DatasetUpdateRequest { - if x, ok := m.GetRequest().(*AuditData_DatasetUpdateRequest); ok { - return x.DatasetUpdateRequest - } - return nil -} - -func (m *AuditData) GetJobInsertRequest() *JobInsertRequest { - if x, ok := m.GetRequest().(*AuditData_JobInsertRequest); ok { - return x.JobInsertRequest - } - return nil -} - -func (m *AuditData) GetJobQueryRequest() *JobQueryRequest { - if x, ok := m.GetRequest().(*AuditData_JobQueryRequest); ok { - return x.JobQueryRequest - } - return nil -} - -func (m *AuditData) GetJobGetQueryResultsRequest() *JobGetQueryResultsRequest { - if x, ok := m.GetRequest().(*AuditData_JobGetQueryResultsRequest); ok { - return x.JobGetQueryResultsRequest - } - return nil -} - -func (m *AuditData) GetTableDataListRequest() *TableDataListRequest { - if x, ok := m.GetRequest().(*AuditData_TableDataListRequest); ok { - return x.TableDataListRequest - } - return nil -} - -func (m *AuditData) GetTableInsertResponse() *TableInsertResponse { - if x, ok := m.GetResponse().(*AuditData_TableInsertResponse); ok { - return x.TableInsertResponse - } - return nil -} - -func (m *AuditData) GetTableUpdateResponse() *TableUpdateResponse { - if x, ok := m.GetResponse().(*AuditData_TableUpdateResponse); ok { - return x.TableUpdateResponse - } - return nil -} - -func (m *AuditData) GetDatasetInsertResponse() *DatasetInsertResponse { - if x, ok := m.GetResponse().(*AuditData_DatasetInsertResponse); ok { - return x.DatasetInsertResponse - } - return nil -} - -func (m *AuditData) GetDatasetUpdateResponse() *DatasetUpdateResponse { - if x, ok := m.GetResponse().(*AuditData_DatasetUpdateResponse); ok { - return x.DatasetUpdateResponse - } - return nil -} - -func (m *AuditData) GetJobInsertResponse() *JobInsertResponse { - if x, ok := m.GetResponse().(*AuditData_JobInsertResponse); ok { - return x.JobInsertResponse - } - return nil -} - -func (m *AuditData) GetJobQueryResponse() *JobQueryResponse { - if x, ok := m.GetResponse().(*AuditData_JobQueryResponse); ok { - return x.JobQueryResponse - } - return nil -} - -func (m *AuditData) GetJobGetQueryResultsResponse() *JobGetQueryResultsResponse { - if x, ok := m.GetResponse().(*AuditData_JobGetQueryResultsResponse); ok { - return x.JobGetQueryResultsResponse - } - return nil -} - -func (m *AuditData) GetJobQueryDoneResponse() *JobQueryDoneResponse { - if x, ok := m.GetResponse().(*AuditData_JobQueryDoneResponse); ok { - return x.JobQueryDoneResponse - } - return nil -} - -func (m *AuditData) GetJobCompletedEvent() *JobCompletedEvent { - if m != nil { - return m.JobCompletedEvent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*AuditData) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _AuditData_OneofMarshaler, _AuditData_OneofUnmarshaler, _AuditData_OneofSizer, []interface{}{ - (*AuditData_TableInsertRequest)(nil), - (*AuditData_TableUpdateRequest)(nil), - (*AuditData_DatasetListRequest)(nil), - (*AuditData_DatasetInsertRequest)(nil), - (*AuditData_DatasetUpdateRequest)(nil), - (*AuditData_JobInsertRequest)(nil), - (*AuditData_JobQueryRequest)(nil), - (*AuditData_JobGetQueryResultsRequest)(nil), - (*AuditData_TableDataListRequest)(nil), - (*AuditData_TableInsertResponse)(nil), - (*AuditData_TableUpdateResponse)(nil), - (*AuditData_DatasetInsertResponse)(nil), - (*AuditData_DatasetUpdateResponse)(nil), - (*AuditData_JobInsertResponse)(nil), - (*AuditData_JobQueryResponse)(nil), - (*AuditData_JobGetQueryResultsResponse)(nil), - (*AuditData_JobQueryDoneResponse)(nil), - } -} - -func _AuditData_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*AuditData) - // request - switch x := m.Request.(type) { - case *AuditData_TableInsertRequest: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TableInsertRequest); err != nil { - return err - } - case *AuditData_TableUpdateRequest: - b.EncodeVarint(16<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TableUpdateRequest); err != nil { - return err - } - case *AuditData_DatasetListRequest: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatasetListRequest); err != nil { - return err - } - case *AuditData_DatasetInsertRequest: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatasetInsertRequest); err != nil { - return err - } - case *AuditData_DatasetUpdateRequest: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatasetUpdateRequest); err != nil { - return err - } - case *AuditData_JobInsertRequest: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.JobInsertRequest); err != nil { - return err - } - case *AuditData_JobQueryRequest: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.JobQueryRequest); err != nil { - return err - } - case *AuditData_JobGetQueryResultsRequest: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.JobGetQueryResultsRequest); err != nil { - return err - } - case *AuditData_TableDataListRequest: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TableDataListRequest); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("AuditData.Request has unexpected type %T", x) - } - // response - switch x := m.Response.(type) { - case *AuditData_TableInsertResponse: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TableInsertResponse); err != nil { - return err - } - case *AuditData_TableUpdateResponse: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TableUpdateResponse); err != nil { - return err - } - case *AuditData_DatasetInsertResponse: - b.EncodeVarint(11<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatasetInsertResponse); err != nil { - return err - } - case *AuditData_DatasetUpdateResponse: - b.EncodeVarint(12<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatasetUpdateResponse); err != nil { - return err - } - case *AuditData_JobInsertResponse: - b.EncodeVarint(18<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.JobInsertResponse); err != nil { - return err - } - case *AuditData_JobQueryResponse: - b.EncodeVarint(13<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.JobQueryResponse); err != nil { - return err - } - case *AuditData_JobGetQueryResultsResponse: - b.EncodeVarint(14<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.JobGetQueryResultsResponse); err != nil { - return err - } - case *AuditData_JobQueryDoneResponse: - b.EncodeVarint(15<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.JobQueryDoneResponse); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("AuditData.Response has unexpected type %T", x) - } - return nil -} - -func _AuditData_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*AuditData) - switch tag { - case 1: // request.table_insert_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TableInsertRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_TableInsertRequest{msg} - return true, err - case 16: // request.table_update_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TableUpdateRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_TableUpdateRequest{msg} - return true, err - case 2: // request.dataset_list_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatasetListRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_DatasetListRequest{msg} - return true, err - case 3: // request.dataset_insert_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatasetInsertRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_DatasetInsertRequest{msg} - return true, err - case 4: // request.dataset_update_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatasetUpdateRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_DatasetUpdateRequest{msg} - return true, err - case 5: // request.job_insert_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobInsertRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_JobInsertRequest{msg} - return true, err - case 6: // request.job_query_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobQueryRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_JobQueryRequest{msg} - return true, err - case 7: // request.job_get_query_results_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobGetQueryResultsRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_JobGetQueryResultsRequest{msg} - return true, err - case 8: // request.table_data_list_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TableDataListRequest) - err := b.DecodeMessage(msg) - m.Request = &AuditData_TableDataListRequest{msg} - return true, err - case 9: // response.table_insert_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TableInsertResponse) - err := b.DecodeMessage(msg) - m.Response = &AuditData_TableInsertResponse{msg} - return true, err - case 10: // response.table_update_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TableUpdateResponse) - err := b.DecodeMessage(msg) - m.Response = &AuditData_TableUpdateResponse{msg} - return true, err - case 11: // response.dataset_insert_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatasetInsertResponse) - err := b.DecodeMessage(msg) - m.Response = &AuditData_DatasetInsertResponse{msg} - return true, err - case 12: // response.dataset_update_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatasetUpdateResponse) - err := b.DecodeMessage(msg) - m.Response = &AuditData_DatasetUpdateResponse{msg} - return true, err - case 18: // response.job_insert_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobInsertResponse) - err := b.DecodeMessage(msg) - m.Response = &AuditData_JobInsertResponse{msg} - return true, err - case 13: // response.job_query_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobQueryResponse) - err := b.DecodeMessage(msg) - m.Response = &AuditData_JobQueryResponse{msg} - return true, err - case 14: // response.job_get_query_results_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobGetQueryResultsResponse) - err := b.DecodeMessage(msg) - m.Response = &AuditData_JobGetQueryResultsResponse{msg} - return true, err - case 15: // response.job_query_done_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobQueryDoneResponse) - err := b.DecodeMessage(msg) - m.Response = &AuditData_JobQueryDoneResponse{msg} - return true, err - default: - return false, nil - } -} - -func _AuditData_OneofSizer(msg proto.Message) (n int) { - m := msg.(*AuditData) - // request - switch x := m.Request.(type) { - case *AuditData_TableInsertRequest: - s := proto.Size(x.TableInsertRequest) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_TableUpdateRequest: - s := proto.Size(x.TableUpdateRequest) - n += proto.SizeVarint(16<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_DatasetListRequest: - s := proto.Size(x.DatasetListRequest) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_DatasetInsertRequest: - s := proto.Size(x.DatasetInsertRequest) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_DatasetUpdateRequest: - s := proto.Size(x.DatasetUpdateRequest) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_JobInsertRequest: - s := proto.Size(x.JobInsertRequest) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_JobQueryRequest: - s := proto.Size(x.JobQueryRequest) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_JobGetQueryResultsRequest: - s := proto.Size(x.JobGetQueryResultsRequest) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_TableDataListRequest: - s := proto.Size(x.TableDataListRequest) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // response - switch x := m.Response.(type) { - case *AuditData_TableInsertResponse: - s := proto.Size(x.TableInsertResponse) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_TableUpdateResponse: - s := proto.Size(x.TableUpdateResponse) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_DatasetInsertResponse: - s := proto.Size(x.DatasetInsertResponse) - n += proto.SizeVarint(11<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_DatasetUpdateResponse: - s := proto.Size(x.DatasetUpdateResponse) - n += proto.SizeVarint(12<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_JobInsertResponse: - s := proto.Size(x.JobInsertResponse) - n += proto.SizeVarint(18<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_JobQueryResponse: - s := proto.Size(x.JobQueryResponse) - n += proto.SizeVarint(13<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_JobGetQueryResultsResponse: - s := proto.Size(x.JobGetQueryResultsResponse) - n += proto.SizeVarint(14<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AuditData_JobQueryDoneResponse: - s := proto.Size(x.JobQueryDoneResponse) - n += proto.SizeVarint(15<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Table insert request. -type TableInsertRequest struct { - // The new table. - Resource *Table `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *TableInsertRequest) Reset() { *m = TableInsertRequest{} } -func (m *TableInsertRequest) String() string { return proto.CompactTextString(m) } -func (*TableInsertRequest) ProtoMessage() {} -func (*TableInsertRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *TableInsertRequest) GetResource() *Table { - if m != nil { - return m.Resource - } - return nil -} - -// Table update request. -type TableUpdateRequest struct { - // The table to be updated. - Resource *Table `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *TableUpdateRequest) Reset() { *m = TableUpdateRequest{} } -func (m *TableUpdateRequest) String() string { return proto.CompactTextString(m) } -func (*TableUpdateRequest) ProtoMessage() {} -func (*TableUpdateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *TableUpdateRequest) GetResource() *Table { - if m != nil { - return m.Resource - } - return nil -} - -// Table insert response. -type TableInsertResponse struct { - // Final state of the inserted table. - Resource *Table `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *TableInsertResponse) Reset() { *m = TableInsertResponse{} } -func (m *TableInsertResponse) String() string { return proto.CompactTextString(m) } -func (*TableInsertResponse) ProtoMessage() {} -func (*TableInsertResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *TableInsertResponse) GetResource() *Table { - if m != nil { - return m.Resource - } - return nil -} - -// Table update response. -type TableUpdateResponse struct { - // Final state of the updated table. - Resource *Table `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *TableUpdateResponse) Reset() { *m = TableUpdateResponse{} } -func (m *TableUpdateResponse) String() string { return proto.CompactTextString(m) } -func (*TableUpdateResponse) ProtoMessage() {} -func (*TableUpdateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *TableUpdateResponse) GetResource() *Table { - if m != nil { - return m.Resource - } - return nil -} - -// Dataset list request. -type DatasetListRequest struct { - // Whether to list all datasets, including hidden ones. - ListAll bool `protobuf:"varint,1,opt,name=list_all,json=listAll" json:"list_all,omitempty"` -} - -func (m *DatasetListRequest) Reset() { *m = DatasetListRequest{} } -func (m *DatasetListRequest) String() string { return proto.CompactTextString(m) } -func (*DatasetListRequest) ProtoMessage() {} -func (*DatasetListRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *DatasetListRequest) GetListAll() bool { - if m != nil { - return m.ListAll - } - return false -} - -// Dataset insert request. -type DatasetInsertRequest struct { - // The dataset to be inserted. - Resource *Dataset `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *DatasetInsertRequest) Reset() { *m = DatasetInsertRequest{} } -func (m *DatasetInsertRequest) String() string { return proto.CompactTextString(m) } -func (*DatasetInsertRequest) ProtoMessage() {} -func (*DatasetInsertRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *DatasetInsertRequest) GetResource() *Dataset { - if m != nil { - return m.Resource - } - return nil -} - -// Dataset insert response. -type DatasetInsertResponse struct { - // Final state of the inserted dataset. - Resource *Dataset `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *DatasetInsertResponse) Reset() { *m = DatasetInsertResponse{} } -func (m *DatasetInsertResponse) String() string { return proto.CompactTextString(m) } -func (*DatasetInsertResponse) ProtoMessage() {} -func (*DatasetInsertResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *DatasetInsertResponse) GetResource() *Dataset { - if m != nil { - return m.Resource - } - return nil -} - -// Dataset update request. -type DatasetUpdateRequest struct { - // The dataset to be updated. - Resource *Dataset `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *DatasetUpdateRequest) Reset() { *m = DatasetUpdateRequest{} } -func (m *DatasetUpdateRequest) String() string { return proto.CompactTextString(m) } -func (*DatasetUpdateRequest) ProtoMessage() {} -func (*DatasetUpdateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *DatasetUpdateRequest) GetResource() *Dataset { - if m != nil { - return m.Resource - } - return nil -} - -// Dataset update response. -type DatasetUpdateResponse struct { - // Final state of the updated dataset. - Resource *Dataset `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *DatasetUpdateResponse) Reset() { *m = DatasetUpdateResponse{} } -func (m *DatasetUpdateResponse) String() string { return proto.CompactTextString(m) } -func (*DatasetUpdateResponse) ProtoMessage() {} -func (*DatasetUpdateResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *DatasetUpdateResponse) GetResource() *Dataset { - if m != nil { - return m.Resource - } - return nil -} - -// Job insert request. -type JobInsertRequest struct { - // Job insert request. - Resource *Job `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *JobInsertRequest) Reset() { *m = JobInsertRequest{} } -func (m *JobInsertRequest) String() string { return proto.CompactTextString(m) } -func (*JobInsertRequest) ProtoMessage() {} -func (*JobInsertRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *JobInsertRequest) GetResource() *Job { - if m != nil { - return m.Resource - } - return nil -} - -// Job insert response. -type JobInsertResponse struct { - // Job insert response. - Resource *Job `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *JobInsertResponse) Reset() { *m = JobInsertResponse{} } -func (m *JobInsertResponse) String() string { return proto.CompactTextString(m) } -func (*JobInsertResponse) ProtoMessage() {} -func (*JobInsertResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *JobInsertResponse) GetResource() *Job { - if m != nil { - return m.Resource - } - return nil -} - -// Job query request. -type JobQueryRequest struct { - // The query. - Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"` - // The maximum number of results. - MaxResults uint32 `protobuf:"varint,2,opt,name=max_results,json=maxResults" json:"max_results,omitempty"` - // The default dataset for tables that do not have a dataset specified. - DefaultDataset *DatasetName `protobuf:"bytes,3,opt,name=default_dataset,json=defaultDataset" json:"default_dataset,omitempty"` - // Project that the query should be charged to. - ProjectId string `protobuf:"bytes,4,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // If true, don't actually run the job. Just check that it would run. - DryRun bool `protobuf:"varint,5,opt,name=dry_run,json=dryRun" json:"dry_run,omitempty"` -} - -func (m *JobQueryRequest) Reset() { *m = JobQueryRequest{} } -func (m *JobQueryRequest) String() string { return proto.CompactTextString(m) } -func (*JobQueryRequest) ProtoMessage() {} -func (*JobQueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *JobQueryRequest) GetQuery() string { - if m != nil { - return m.Query - } - return "" -} - -func (m *JobQueryRequest) GetMaxResults() uint32 { - if m != nil { - return m.MaxResults - } - return 0 -} - -func (m *JobQueryRequest) GetDefaultDataset() *DatasetName { - if m != nil { - return m.DefaultDataset - } - return nil -} - -func (m *JobQueryRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *JobQueryRequest) GetDryRun() bool { - if m != nil { - return m.DryRun - } - return false -} - -// Job query response. -type JobQueryResponse struct { - // The total number of rows in the full query result set. - TotalResults uint64 `protobuf:"varint,1,opt,name=total_results,json=totalResults" json:"total_results,omitempty"` - // Information about the queried job. - Job *Job `protobuf:"bytes,2,opt,name=job" json:"job,omitempty"` -} - -func (m *JobQueryResponse) Reset() { *m = JobQueryResponse{} } -func (m *JobQueryResponse) String() string { return proto.CompactTextString(m) } -func (*JobQueryResponse) ProtoMessage() {} -func (*JobQueryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *JobQueryResponse) GetTotalResults() uint64 { - if m != nil { - return m.TotalResults - } - return 0 -} - -func (m *JobQueryResponse) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -// Job getQueryResults request. -type JobGetQueryResultsRequest struct { - // Maximum number of results to return. - MaxResults uint32 `protobuf:"varint,1,opt,name=max_results,json=maxResults" json:"max_results,omitempty"` - // Zero-based row number at which to start. - StartRow uint64 `protobuf:"varint,2,opt,name=start_row,json=startRow" json:"start_row,omitempty"` -} - -func (m *JobGetQueryResultsRequest) Reset() { *m = JobGetQueryResultsRequest{} } -func (m *JobGetQueryResultsRequest) String() string { return proto.CompactTextString(m) } -func (*JobGetQueryResultsRequest) ProtoMessage() {} -func (*JobGetQueryResultsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *JobGetQueryResultsRequest) GetMaxResults() uint32 { - if m != nil { - return m.MaxResults - } - return 0 -} - -func (m *JobGetQueryResultsRequest) GetStartRow() uint64 { - if m != nil { - return m.StartRow - } - return 0 -} - -// Job getQueryResults response. -type JobGetQueryResultsResponse struct { - // Total number of results in query results. - TotalResults uint64 `protobuf:"varint,1,opt,name=total_results,json=totalResults" json:"total_results,omitempty"` - // The job that was created to run the query. - // It completed if `job.status.state` is `DONE`. - // It failed if `job.status.errorResult` is also present. - Job *Job `protobuf:"bytes,2,opt,name=job" json:"job,omitempty"` -} - -func (m *JobGetQueryResultsResponse) Reset() { *m = JobGetQueryResultsResponse{} } -func (m *JobGetQueryResultsResponse) String() string { return proto.CompactTextString(m) } -func (*JobGetQueryResultsResponse) ProtoMessage() {} -func (*JobGetQueryResultsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *JobGetQueryResultsResponse) GetTotalResults() uint64 { - if m != nil { - return m.TotalResults - } - return 0 -} - -func (m *JobGetQueryResultsResponse) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -// Job getQueryDone response. -type JobQueryDoneResponse struct { - // The job and status information. - // The job completed if `job.status.state` is `DONE`. - Job *Job `protobuf:"bytes,1,opt,name=job" json:"job,omitempty"` -} - -func (m *JobQueryDoneResponse) Reset() { *m = JobQueryDoneResponse{} } -func (m *JobQueryDoneResponse) String() string { return proto.CompactTextString(m) } -func (*JobQueryDoneResponse) ProtoMessage() {} -func (*JobQueryDoneResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *JobQueryDoneResponse) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -// Query job completed event. -type JobCompletedEvent struct { - // Name of the event. - EventName string `protobuf:"bytes,1,opt,name=event_name,json=eventName" json:"event_name,omitempty"` - // Job information. - Job *Job `protobuf:"bytes,2,opt,name=job" json:"job,omitempty"` -} - -func (m *JobCompletedEvent) Reset() { *m = JobCompletedEvent{} } -func (m *JobCompletedEvent) String() string { return proto.CompactTextString(m) } -func (*JobCompletedEvent) ProtoMessage() {} -func (*JobCompletedEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *JobCompletedEvent) GetEventName() string { - if m != nil { - return m.EventName - } - return "" -} - -func (m *JobCompletedEvent) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -// Table data-list request. -type TableDataListRequest struct { - // Starting row offset. - StartRow uint64 `protobuf:"varint,1,opt,name=start_row,json=startRow" json:"start_row,omitempty"` - // Maximum number of results to return. - MaxResults uint32 `protobuf:"varint,2,opt,name=max_results,json=maxResults" json:"max_results,omitempty"` -} - -func (m *TableDataListRequest) Reset() { *m = TableDataListRequest{} } -func (m *TableDataListRequest) String() string { return proto.CompactTextString(m) } -func (*TableDataListRequest) ProtoMessage() {} -func (*TableDataListRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *TableDataListRequest) GetStartRow() uint64 { - if m != nil { - return m.StartRow - } - return 0 -} - -func (m *TableDataListRequest) GetMaxResults() uint32 { - if m != nil { - return m.MaxResults - } - return 0 -} - -// Describes a BigQuery table. -// See the [Table](/bigquery/docs/reference/v2/tables) API resource -// for more details on individual fields. -// Note: `Table.schema` has been deprecated in favor of `Table.schemaJson`. -// `Table.schema` may continue to be present in your logs during this -// transition. -type Table struct { - // The name of the table. - TableName *TableName `protobuf:"bytes,1,opt,name=table_name,json=tableName" json:"table_name,omitempty"` - // User-provided metadata for the table. - Info *TableInfo `protobuf:"bytes,2,opt,name=info" json:"info,omitempty"` - // A JSON representation of the table's schema. - SchemaJson string `protobuf:"bytes,8,opt,name=schema_json,json=schemaJson" json:"schema_json,omitempty"` - // If present, this is a virtual table defined by a SQL query. - View *TableViewDefinition `protobuf:"bytes,4,opt,name=view" json:"view,omitempty"` - // The expiration date for the table, after which the table - // is deleted and the storage reclaimed. - // If not present, the table persists indefinitely. - ExpireTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` - // The time the table was created. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The time the table was last truncated - // by an operation with a `writeDisposition` of `WRITE_TRUNCATE`. - TruncateTime *google_protobuf2.Timestamp `protobuf:"bytes,7,opt,name=truncate_time,json=truncateTime" json:"truncate_time,omitempty"` -} - -func (m *Table) Reset() { *m = Table{} } -func (m *Table) String() string { return proto.CompactTextString(m) } -func (*Table) ProtoMessage() {} -func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *Table) GetTableName() *TableName { - if m != nil { - return m.TableName - } - return nil -} - -func (m *Table) GetInfo() *TableInfo { - if m != nil { - return m.Info - } - return nil -} - -func (m *Table) GetSchemaJson() string { - if m != nil { - return m.SchemaJson - } - return "" -} - -func (m *Table) GetView() *TableViewDefinition { - if m != nil { - return m.View - } - return nil -} - -func (m *Table) GetExpireTime() *google_protobuf2.Timestamp { - if m != nil { - return m.ExpireTime - } - return nil -} - -func (m *Table) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Table) GetTruncateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.TruncateTime - } - return nil -} - -// User-provided metadata for a table. -type TableInfo struct { - // A short name for the table, such as`"Analytics Data - Jan 2011"`. - FriendlyName string `protobuf:"bytes,1,opt,name=friendly_name,json=friendlyName" json:"friendly_name,omitempty"` - // A long description, perhaps several paragraphs, - // describing the table contents in detail. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *TableInfo) Reset() { *m = TableInfo{} } -func (m *TableInfo) String() string { return proto.CompactTextString(m) } -func (*TableInfo) ProtoMessage() {} -func (*TableInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *TableInfo) GetFriendlyName() string { - if m != nil { - return m.FriendlyName - } - return "" -} - -func (m *TableInfo) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// Describes a virtual table defined by a SQL query. -type TableViewDefinition struct { - // SQL query defining the view. - Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"` -} - -func (m *TableViewDefinition) Reset() { *m = TableViewDefinition{} } -func (m *TableViewDefinition) String() string { return proto.CompactTextString(m) } -func (*TableViewDefinition) ProtoMessage() {} -func (*TableViewDefinition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *TableViewDefinition) GetQuery() string { - if m != nil { - return m.Query - } - return "" -} - -// BigQuery dataset information. -// See the [Dataset](/bigquery/docs/reference/v2/datasets) API resource -// for more details on individual fields. -type Dataset struct { - // The name of the dataset. - DatasetName *DatasetName `protobuf:"bytes,1,opt,name=dataset_name,json=datasetName" json:"dataset_name,omitempty"` - // User-provided metadata for the dataset. - Info *DatasetInfo `protobuf:"bytes,2,opt,name=info" json:"info,omitempty"` - // The time the dataset was created. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The time the dataset was last modified. - UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // The access control list for the dataset. - Acl *BigQueryAcl `protobuf:"bytes,6,opt,name=acl" json:"acl,omitempty"` - // If this field is present, each table that does not specify an - // expiration time is assigned an expiration time by adding this - // duration to the table's `createTime`. If this field is empty, - // there is no default table expiration time. - DefaultTableExpireDuration *google_protobuf1.Duration `protobuf:"bytes,8,opt,name=default_table_expire_duration,json=defaultTableExpireDuration" json:"default_table_expire_duration,omitempty"` -} - -func (m *Dataset) Reset() { *m = Dataset{} } -func (m *Dataset) String() string { return proto.CompactTextString(m) } -func (*Dataset) ProtoMessage() {} -func (*Dataset) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *Dataset) GetDatasetName() *DatasetName { - if m != nil { - return m.DatasetName - } - return nil -} - -func (m *Dataset) GetInfo() *DatasetInfo { - if m != nil { - return m.Info - } - return nil -} - -func (m *Dataset) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Dataset) GetUpdateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *Dataset) GetAcl() *BigQueryAcl { - if m != nil { - return m.Acl - } - return nil -} - -func (m *Dataset) GetDefaultTableExpireDuration() *google_protobuf1.Duration { - if m != nil { - return m.DefaultTableExpireDuration - } - return nil -} - -// User-provided metadata for a dataset. -type DatasetInfo struct { - // A short name for the dataset, such as`"Analytics Data 2011"`. - FriendlyName string `protobuf:"bytes,1,opt,name=friendly_name,json=friendlyName" json:"friendly_name,omitempty"` - // A long description, perhaps several paragraphs, - // describing the dataset contents in detail. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *DatasetInfo) Reset() { *m = DatasetInfo{} } -func (m *DatasetInfo) String() string { return proto.CompactTextString(m) } -func (*DatasetInfo) ProtoMessage() {} -func (*DatasetInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *DatasetInfo) GetFriendlyName() string { - if m != nil { - return m.FriendlyName - } - return "" -} - -func (m *DatasetInfo) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// An access control list. -type BigQueryAcl struct { - // Access control entry list. - Entries []*BigQueryAcl_Entry `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty"` -} - -func (m *BigQueryAcl) Reset() { *m = BigQueryAcl{} } -func (m *BigQueryAcl) String() string { return proto.CompactTextString(m) } -func (*BigQueryAcl) ProtoMessage() {} -func (*BigQueryAcl) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *BigQueryAcl) GetEntries() []*BigQueryAcl_Entry { - if m != nil { - return m.Entries - } - return nil -} - -// Access control entry. -type BigQueryAcl_Entry struct { - // The granted role, which can be `READER`, `WRITER`, or `OWNER`. - Role string `protobuf:"bytes,1,opt,name=role" json:"role,omitempty"` - // Grants access to a group identified by an email address. - GroupEmail string `protobuf:"bytes,2,opt,name=group_email,json=groupEmail" json:"group_email,omitempty"` - // Grants access to a user identified by an email address. - UserEmail string `protobuf:"bytes,3,opt,name=user_email,json=userEmail" json:"user_email,omitempty"` - // Grants access to all members of a domain. - Domain string `protobuf:"bytes,4,opt,name=domain" json:"domain,omitempty"` - // Grants access to special groups. Valid groups are `PROJECT_OWNERS`, - // `PROJECT_READERS`, `PROJECT_WRITERS` and `ALL_AUTHENTICATED_USERS`. - SpecialGroup string `protobuf:"bytes,5,opt,name=special_group,json=specialGroup" json:"special_group,omitempty"` - // Grants access to a BigQuery View. - ViewName *TableName `protobuf:"bytes,6,opt,name=view_name,json=viewName" json:"view_name,omitempty"` -} - -func (m *BigQueryAcl_Entry) Reset() { *m = BigQueryAcl_Entry{} } -func (m *BigQueryAcl_Entry) String() string { return proto.CompactTextString(m) } -func (*BigQueryAcl_Entry) ProtoMessage() {} -func (*BigQueryAcl_Entry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24, 0} } - -func (m *BigQueryAcl_Entry) GetRole() string { - if m != nil { - return m.Role - } - return "" -} - -func (m *BigQueryAcl_Entry) GetGroupEmail() string { - if m != nil { - return m.GroupEmail - } - return "" -} - -func (m *BigQueryAcl_Entry) GetUserEmail() string { - if m != nil { - return m.UserEmail - } - return "" -} - -func (m *BigQueryAcl_Entry) GetDomain() string { - if m != nil { - return m.Domain - } - return "" -} - -func (m *BigQueryAcl_Entry) GetSpecialGroup() string { - if m != nil { - return m.SpecialGroup - } - return "" -} - -func (m *BigQueryAcl_Entry) GetViewName() *TableName { - if m != nil { - return m.ViewName - } - return nil -} - -// Describes a job. -type Job struct { - // Job name. - JobName *JobName `protobuf:"bytes,1,opt,name=job_name,json=jobName" json:"job_name,omitempty"` - // Job configuration. - JobConfiguration *JobConfiguration `protobuf:"bytes,2,opt,name=job_configuration,json=jobConfiguration" json:"job_configuration,omitempty"` - // Job status. - JobStatus *JobStatus `protobuf:"bytes,3,opt,name=job_status,json=jobStatus" json:"job_status,omitempty"` - // Job statistics. - JobStatistics *JobStatistics `protobuf:"bytes,4,opt,name=job_statistics,json=jobStatistics" json:"job_statistics,omitempty"` -} - -func (m *Job) Reset() { *m = Job{} } -func (m *Job) String() string { return proto.CompactTextString(m) } -func (*Job) ProtoMessage() {} -func (*Job) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *Job) GetJobName() *JobName { - if m != nil { - return m.JobName - } - return nil -} - -func (m *Job) GetJobConfiguration() *JobConfiguration { - if m != nil { - return m.JobConfiguration - } - return nil -} - -func (m *Job) GetJobStatus() *JobStatus { - if m != nil { - return m.JobStatus - } - return nil -} - -func (m *Job) GetJobStatistics() *JobStatistics { - if m != nil { - return m.JobStatistics - } - return nil -} - -// Job configuration information. -// See the [Jobs](/bigquery/docs/reference/v2/jobs) API resource -// for more details on individual fields. -type JobConfiguration struct { - // Job configuration information. - // - // Types that are valid to be assigned to Configuration: - // *JobConfiguration_Query_ - // *JobConfiguration_Load_ - // *JobConfiguration_Extract_ - // *JobConfiguration_TableCopy_ - Configuration isJobConfiguration_Configuration `protobuf_oneof:"configuration"` - // If true, don't actually run the job. Just check that it would run. - DryRun bool `protobuf:"varint,9,opt,name=dry_run,json=dryRun" json:"dry_run,omitempty"` -} - -func (m *JobConfiguration) Reset() { *m = JobConfiguration{} } -func (m *JobConfiguration) String() string { return proto.CompactTextString(m) } -func (*JobConfiguration) ProtoMessage() {} -func (*JobConfiguration) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -type isJobConfiguration_Configuration interface { - isJobConfiguration_Configuration() -} - -type JobConfiguration_Query_ struct { - Query *JobConfiguration_Query `protobuf:"bytes,5,opt,name=query,oneof"` -} -type JobConfiguration_Load_ struct { - Load *JobConfiguration_Load `protobuf:"bytes,6,opt,name=load,oneof"` -} -type JobConfiguration_Extract_ struct { - Extract *JobConfiguration_Extract `protobuf:"bytes,7,opt,name=extract,oneof"` -} -type JobConfiguration_TableCopy_ struct { - TableCopy *JobConfiguration_TableCopy `protobuf:"bytes,8,opt,name=table_copy,json=tableCopy,oneof"` -} - -func (*JobConfiguration_Query_) isJobConfiguration_Configuration() {} -func (*JobConfiguration_Load_) isJobConfiguration_Configuration() {} -func (*JobConfiguration_Extract_) isJobConfiguration_Configuration() {} -func (*JobConfiguration_TableCopy_) isJobConfiguration_Configuration() {} - -func (m *JobConfiguration) GetConfiguration() isJobConfiguration_Configuration { - if m != nil { - return m.Configuration - } - return nil -} - -func (m *JobConfiguration) GetQuery() *JobConfiguration_Query { - if x, ok := m.GetConfiguration().(*JobConfiguration_Query_); ok { - return x.Query - } - return nil -} - -func (m *JobConfiguration) GetLoad() *JobConfiguration_Load { - if x, ok := m.GetConfiguration().(*JobConfiguration_Load_); ok { - return x.Load - } - return nil -} - -func (m *JobConfiguration) GetExtract() *JobConfiguration_Extract { - if x, ok := m.GetConfiguration().(*JobConfiguration_Extract_); ok { - return x.Extract - } - return nil -} - -func (m *JobConfiguration) GetTableCopy() *JobConfiguration_TableCopy { - if x, ok := m.GetConfiguration().(*JobConfiguration_TableCopy_); ok { - return x.TableCopy - } - return nil -} - -func (m *JobConfiguration) GetDryRun() bool { - if m != nil { - return m.DryRun - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*JobConfiguration) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _JobConfiguration_OneofMarshaler, _JobConfiguration_OneofUnmarshaler, _JobConfiguration_OneofSizer, []interface{}{ - (*JobConfiguration_Query_)(nil), - (*JobConfiguration_Load_)(nil), - (*JobConfiguration_Extract_)(nil), - (*JobConfiguration_TableCopy_)(nil), - } -} - -func _JobConfiguration_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*JobConfiguration) - // configuration - switch x := m.Configuration.(type) { - case *JobConfiguration_Query_: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Query); err != nil { - return err - } - case *JobConfiguration_Load_: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Load); err != nil { - return err - } - case *JobConfiguration_Extract_: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Extract); err != nil { - return err - } - case *JobConfiguration_TableCopy_: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TableCopy); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("JobConfiguration.Configuration has unexpected type %T", x) - } - return nil -} - -func _JobConfiguration_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*JobConfiguration) - switch tag { - case 5: // configuration.query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobConfiguration_Query) - err := b.DecodeMessage(msg) - m.Configuration = &JobConfiguration_Query_{msg} - return true, err - case 6: // configuration.load - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobConfiguration_Load) - err := b.DecodeMessage(msg) - m.Configuration = &JobConfiguration_Load_{msg} - return true, err - case 7: // configuration.extract - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobConfiguration_Extract) - err := b.DecodeMessage(msg) - m.Configuration = &JobConfiguration_Extract_{msg} - return true, err - case 8: // configuration.table_copy - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(JobConfiguration_TableCopy) - err := b.DecodeMessage(msg) - m.Configuration = &JobConfiguration_TableCopy_{msg} - return true, err - default: - return false, nil - } -} - -func _JobConfiguration_OneofSizer(msg proto.Message) (n int) { - m := msg.(*JobConfiguration) - // configuration - switch x := m.Configuration.(type) { - case *JobConfiguration_Query_: - s := proto.Size(x.Query) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *JobConfiguration_Load_: - s := proto.Size(x.Load) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *JobConfiguration_Extract_: - s := proto.Size(x.Extract) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *JobConfiguration_TableCopy_: - s := proto.Size(x.TableCopy) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Describes a query job, which executes a SQL-like query. -type JobConfiguration_Query struct { - // The SQL query to run. - Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"` - // The table where results are written. - DestinationTable *TableName `protobuf:"bytes,2,opt,name=destination_table,json=destinationTable" json:"destination_table,omitempty"` - // Describes when a job is allowed to create a table: - // `CREATE_IF_NEEDED`, `CREATE_NEVER`. - CreateDisposition string `protobuf:"bytes,3,opt,name=create_disposition,json=createDisposition" json:"create_disposition,omitempty"` - // Describes how writes affect existing tables: - // `WRITE_TRUNCATE`, `WRITE_APPEND`, `WRITE_EMPTY`. - WriteDisposition string `protobuf:"bytes,4,opt,name=write_disposition,json=writeDisposition" json:"write_disposition,omitempty"` - // If a table name is specified without a dataset in a query, - // this dataset will be added to table name. - DefaultDataset *DatasetName `protobuf:"bytes,5,opt,name=default_dataset,json=defaultDataset" json:"default_dataset,omitempty"` - // Describes data sources outside BigQuery, if needed. - TableDefinitions []*TableDefinition `protobuf:"bytes,6,rep,name=table_definitions,json=tableDefinitions" json:"table_definitions,omitempty"` -} - -func (m *JobConfiguration_Query) Reset() { *m = JobConfiguration_Query{} } -func (m *JobConfiguration_Query) String() string { return proto.CompactTextString(m) } -func (*JobConfiguration_Query) ProtoMessage() {} -func (*JobConfiguration_Query) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26, 0} } - -func (m *JobConfiguration_Query) GetQuery() string { - if m != nil { - return m.Query - } - return "" -} - -func (m *JobConfiguration_Query) GetDestinationTable() *TableName { - if m != nil { - return m.DestinationTable - } - return nil -} - -func (m *JobConfiguration_Query) GetCreateDisposition() string { - if m != nil { - return m.CreateDisposition - } - return "" -} - -func (m *JobConfiguration_Query) GetWriteDisposition() string { - if m != nil { - return m.WriteDisposition - } - return "" -} - -func (m *JobConfiguration_Query) GetDefaultDataset() *DatasetName { - if m != nil { - return m.DefaultDataset - } - return nil -} - -func (m *JobConfiguration_Query) GetTableDefinitions() []*TableDefinition { - if m != nil { - return m.TableDefinitions - } - return nil -} - -// Describes a load job, which loads data from an external source via -// the import pipeline. -type JobConfiguration_Load struct { - // URIs for the data to be imported. Only Google Cloud Storage URIs are - // supported. - SourceUris []string `protobuf:"bytes,1,rep,name=source_uris,json=sourceUris" json:"source_uris,omitempty"` - // The table schema in JSON format representation of a TableSchema. - SchemaJson string `protobuf:"bytes,6,opt,name=schema_json,json=schemaJson" json:"schema_json,omitempty"` - // The table where the imported data is written. - DestinationTable *TableName `protobuf:"bytes,3,opt,name=destination_table,json=destinationTable" json:"destination_table,omitempty"` - // Describes when a job is allowed to create a table: - // `CREATE_IF_NEEDED`, `CREATE_NEVER`. - CreateDisposition string `protobuf:"bytes,4,opt,name=create_disposition,json=createDisposition" json:"create_disposition,omitempty"` - // Describes how writes affect existing tables: - // `WRITE_TRUNCATE`, `WRITE_APPEND`, `WRITE_EMPTY`. - WriteDisposition string `protobuf:"bytes,5,opt,name=write_disposition,json=writeDisposition" json:"write_disposition,omitempty"` -} - -func (m *JobConfiguration_Load) Reset() { *m = JobConfiguration_Load{} } -func (m *JobConfiguration_Load) String() string { return proto.CompactTextString(m) } -func (*JobConfiguration_Load) ProtoMessage() {} -func (*JobConfiguration_Load) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26, 1} } - -func (m *JobConfiguration_Load) GetSourceUris() []string { - if m != nil { - return m.SourceUris - } - return nil -} - -func (m *JobConfiguration_Load) GetSchemaJson() string { - if m != nil { - return m.SchemaJson - } - return "" -} - -func (m *JobConfiguration_Load) GetDestinationTable() *TableName { - if m != nil { - return m.DestinationTable - } - return nil -} - -func (m *JobConfiguration_Load) GetCreateDisposition() string { - if m != nil { - return m.CreateDisposition - } - return "" -} - -func (m *JobConfiguration_Load) GetWriteDisposition() string { - if m != nil { - return m.WriteDisposition - } - return "" -} - -// Describes an extract job, which exports data to an external source -// via the export pipeline. -type JobConfiguration_Extract struct { - // Google Cloud Storage URIs where extracted data should be written. - DestinationUris []string `protobuf:"bytes,1,rep,name=destination_uris,json=destinationUris" json:"destination_uris,omitempty"` - // The source table. - SourceTable *TableName `protobuf:"bytes,2,opt,name=source_table,json=sourceTable" json:"source_table,omitempty"` -} - -func (m *JobConfiguration_Extract) Reset() { *m = JobConfiguration_Extract{} } -func (m *JobConfiguration_Extract) String() string { return proto.CompactTextString(m) } -func (*JobConfiguration_Extract) ProtoMessage() {} -func (*JobConfiguration_Extract) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26, 2} } - -func (m *JobConfiguration_Extract) GetDestinationUris() []string { - if m != nil { - return m.DestinationUris - } - return nil -} - -func (m *JobConfiguration_Extract) GetSourceTable() *TableName { - if m != nil { - return m.SourceTable - } - return nil -} - -// Describes a copy job, which copies an existing table to another table. -type JobConfiguration_TableCopy struct { - // Source tables. - SourceTables []*TableName `protobuf:"bytes,1,rep,name=source_tables,json=sourceTables" json:"source_tables,omitempty"` - // Destination table. - DestinationTable *TableName `protobuf:"bytes,2,opt,name=destination_table,json=destinationTable" json:"destination_table,omitempty"` - // Describes when a job is allowed to create a table: - // `CREATE_IF_NEEDED`, `CREATE_NEVER`. - CreateDisposition string `protobuf:"bytes,3,opt,name=create_disposition,json=createDisposition" json:"create_disposition,omitempty"` - // Describes how writes affect existing tables: - // `WRITE_TRUNCATE`, `WRITE_APPEND`, `WRITE_EMPTY`. - WriteDisposition string `protobuf:"bytes,4,opt,name=write_disposition,json=writeDisposition" json:"write_disposition,omitempty"` -} - -func (m *JobConfiguration_TableCopy) Reset() { *m = JobConfiguration_TableCopy{} } -func (m *JobConfiguration_TableCopy) String() string { return proto.CompactTextString(m) } -func (*JobConfiguration_TableCopy) ProtoMessage() {} -func (*JobConfiguration_TableCopy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26, 3} } - -func (m *JobConfiguration_TableCopy) GetSourceTables() []*TableName { - if m != nil { - return m.SourceTables - } - return nil -} - -func (m *JobConfiguration_TableCopy) GetDestinationTable() *TableName { - if m != nil { - return m.DestinationTable - } - return nil -} - -func (m *JobConfiguration_TableCopy) GetCreateDisposition() string { - if m != nil { - return m.CreateDisposition - } - return "" -} - -func (m *JobConfiguration_TableCopy) GetWriteDisposition() string { - if m != nil { - return m.WriteDisposition - } - return "" -} - -// Describes an external data source used in a query. -type TableDefinition struct { - // Name of the table, used in queries. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Google Cloud Storage URIs for the data to be imported. - SourceUris []string `protobuf:"bytes,2,rep,name=source_uris,json=sourceUris" json:"source_uris,omitempty"` -} - -func (m *TableDefinition) Reset() { *m = TableDefinition{} } -func (m *TableDefinition) String() string { return proto.CompactTextString(m) } -func (*TableDefinition) ProtoMessage() {} -func (*TableDefinition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *TableDefinition) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *TableDefinition) GetSourceUris() []string { - if m != nil { - return m.SourceUris - } - return nil -} - -// Running state of a job. -type JobStatus struct { - // State of a job: `PENDING`, `RUNNING`, or `DONE`. - State string `protobuf:"bytes,1,opt,name=state" json:"state,omitempty"` - // If the job did not complete successfully, this field describes why. - Error *google_rpc.Status `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` -} - -func (m *JobStatus) Reset() { *m = JobStatus{} } -func (m *JobStatus) String() string { return proto.CompactTextString(m) } -func (*JobStatus) ProtoMessage() {} -func (*JobStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *JobStatus) GetState() string { - if m != nil { - return m.State - } - return "" -} - -func (m *JobStatus) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -// Job statistics that may change after a job starts. -type JobStatistics struct { - // Time when the job was created. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Time when the job started. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time when the job ended. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Total bytes processed for a job. - TotalProcessedBytes int64 `protobuf:"varint,4,opt,name=total_processed_bytes,json=totalProcessedBytes" json:"total_processed_bytes,omitempty"` - // Processed bytes, adjusted by the job's CPU usage. - TotalBilledBytes int64 `protobuf:"varint,5,opt,name=total_billed_bytes,json=totalBilledBytes" json:"total_billed_bytes,omitempty"` - // The tier assigned by CPU-based billing. - BillingTier int32 `protobuf:"varint,7,opt,name=billing_tier,json=billingTier" json:"billing_tier,omitempty"` -} - -func (m *JobStatistics) Reset() { *m = JobStatistics{} } -func (m *JobStatistics) String() string { return proto.CompactTextString(m) } -func (*JobStatistics) ProtoMessage() {} -func (*JobStatistics) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -func (m *JobStatistics) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *JobStatistics) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *JobStatistics) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *JobStatistics) GetTotalProcessedBytes() int64 { - if m != nil { - return m.TotalProcessedBytes - } - return 0 -} - -func (m *JobStatistics) GetTotalBilledBytes() int64 { - if m != nil { - return m.TotalBilledBytes - } - return 0 -} - -func (m *JobStatistics) GetBillingTier() int32 { - if m != nil { - return m.BillingTier - } - return 0 -} - -// The fully-qualified name for a dataset. -type DatasetName struct { - // The project ID. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The dataset ID within the project. - DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` -} - -func (m *DatasetName) Reset() { *m = DatasetName{} } -func (m *DatasetName) String() string { return proto.CompactTextString(m) } -func (*DatasetName) ProtoMessage() {} -func (*DatasetName) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -func (m *DatasetName) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DatasetName) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -// The fully-qualified name for a table. -type TableName struct { - // The project ID. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The dataset ID within the project. - DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // The table ID of the table within the dataset. - TableId string `protobuf:"bytes,3,opt,name=table_id,json=tableId" json:"table_id,omitempty"` -} - -func (m *TableName) Reset() { *m = TableName{} } -func (m *TableName) String() string { return proto.CompactTextString(m) } -func (*TableName) ProtoMessage() {} -func (*TableName) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } - -func (m *TableName) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *TableName) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *TableName) GetTableId() string { - if m != nil { - return m.TableId - } - return "" -} - -// The fully-qualified name for a job. -type JobName struct { - // The project ID. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The job ID within the project. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *JobName) Reset() { *m = JobName{} } -func (m *JobName) String() string { return proto.CompactTextString(m) } -func (*JobName) ProtoMessage() {} -func (*JobName) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } - -func (m *JobName) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *JobName) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -func init() { - proto.RegisterType((*AuditData)(nil), "google.cloud.bigquery.logging.v1.AuditData") - proto.RegisterType((*TableInsertRequest)(nil), "google.cloud.bigquery.logging.v1.TableInsertRequest") - proto.RegisterType((*TableUpdateRequest)(nil), "google.cloud.bigquery.logging.v1.TableUpdateRequest") - proto.RegisterType((*TableInsertResponse)(nil), "google.cloud.bigquery.logging.v1.TableInsertResponse") - proto.RegisterType((*TableUpdateResponse)(nil), "google.cloud.bigquery.logging.v1.TableUpdateResponse") - proto.RegisterType((*DatasetListRequest)(nil), "google.cloud.bigquery.logging.v1.DatasetListRequest") - proto.RegisterType((*DatasetInsertRequest)(nil), "google.cloud.bigquery.logging.v1.DatasetInsertRequest") - proto.RegisterType((*DatasetInsertResponse)(nil), "google.cloud.bigquery.logging.v1.DatasetInsertResponse") - proto.RegisterType((*DatasetUpdateRequest)(nil), "google.cloud.bigquery.logging.v1.DatasetUpdateRequest") - proto.RegisterType((*DatasetUpdateResponse)(nil), "google.cloud.bigquery.logging.v1.DatasetUpdateResponse") - proto.RegisterType((*JobInsertRequest)(nil), "google.cloud.bigquery.logging.v1.JobInsertRequest") - proto.RegisterType((*JobInsertResponse)(nil), "google.cloud.bigquery.logging.v1.JobInsertResponse") - proto.RegisterType((*JobQueryRequest)(nil), "google.cloud.bigquery.logging.v1.JobQueryRequest") - proto.RegisterType((*JobQueryResponse)(nil), "google.cloud.bigquery.logging.v1.JobQueryResponse") - proto.RegisterType((*JobGetQueryResultsRequest)(nil), "google.cloud.bigquery.logging.v1.JobGetQueryResultsRequest") - proto.RegisterType((*JobGetQueryResultsResponse)(nil), "google.cloud.bigquery.logging.v1.JobGetQueryResultsResponse") - proto.RegisterType((*JobQueryDoneResponse)(nil), "google.cloud.bigquery.logging.v1.JobQueryDoneResponse") - proto.RegisterType((*JobCompletedEvent)(nil), "google.cloud.bigquery.logging.v1.JobCompletedEvent") - proto.RegisterType((*TableDataListRequest)(nil), "google.cloud.bigquery.logging.v1.TableDataListRequest") - proto.RegisterType((*Table)(nil), "google.cloud.bigquery.logging.v1.Table") - proto.RegisterType((*TableInfo)(nil), "google.cloud.bigquery.logging.v1.TableInfo") - proto.RegisterType((*TableViewDefinition)(nil), "google.cloud.bigquery.logging.v1.TableViewDefinition") - proto.RegisterType((*Dataset)(nil), "google.cloud.bigquery.logging.v1.Dataset") - proto.RegisterType((*DatasetInfo)(nil), "google.cloud.bigquery.logging.v1.DatasetInfo") - proto.RegisterType((*BigQueryAcl)(nil), "google.cloud.bigquery.logging.v1.BigQueryAcl") - proto.RegisterType((*BigQueryAcl_Entry)(nil), "google.cloud.bigquery.logging.v1.BigQueryAcl.Entry") - proto.RegisterType((*Job)(nil), "google.cloud.bigquery.logging.v1.Job") - proto.RegisterType((*JobConfiguration)(nil), "google.cloud.bigquery.logging.v1.JobConfiguration") - proto.RegisterType((*JobConfiguration_Query)(nil), "google.cloud.bigquery.logging.v1.JobConfiguration.Query") - proto.RegisterType((*JobConfiguration_Load)(nil), "google.cloud.bigquery.logging.v1.JobConfiguration.Load") - proto.RegisterType((*JobConfiguration_Extract)(nil), "google.cloud.bigquery.logging.v1.JobConfiguration.Extract") - proto.RegisterType((*JobConfiguration_TableCopy)(nil), "google.cloud.bigquery.logging.v1.JobConfiguration.TableCopy") - proto.RegisterType((*TableDefinition)(nil), "google.cloud.bigquery.logging.v1.TableDefinition") - proto.RegisterType((*JobStatus)(nil), "google.cloud.bigquery.logging.v1.JobStatus") - proto.RegisterType((*JobStatistics)(nil), "google.cloud.bigquery.logging.v1.JobStatistics") - proto.RegisterType((*DatasetName)(nil), "google.cloud.bigquery.logging.v1.DatasetName") - proto.RegisterType((*TableName)(nil), "google.cloud.bigquery.logging.v1.TableName") - proto.RegisterType((*JobName)(nil), "google.cloud.bigquery.logging.v1.JobName") -} - -func init() { proto.RegisterFile("google/cloud/bigquery/logging/v1/audit_data.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2036 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x73, 0x1b, 0x49, - 0x15, 0x8f, 0x2c, 0xc9, 0x92, 0x9e, 0xec, 0xd8, 0xee, 0xd8, 0x9b, 0x58, 0x90, 0xdd, 0x30, 0x40, - 0xb1, 0x29, 0x13, 0xa9, 0x9c, 0x65, 0x09, 0x90, 0xad, 0x4a, 0xd9, 0xb1, 0x89, 0x93, 0xfd, 0x83, - 0x19, 0x1c, 0x17, 0xbb, 0xc5, 0xae, 0x6a, 0x34, 0xd3, 0xd6, 0xb6, 0x76, 0x34, 0x3d, 0x99, 0x69, - 0xc5, 0x31, 0x17, 0x0a, 0x8a, 0x1b, 0x47, 0x3e, 0x0c, 0x07, 0x2e, 0x50, 0x7c, 0x01, 0x8e, 0x5c, - 0xb8, 0xf0, 0x41, 0x28, 0xaa, 0x5f, 0x77, 0x8f, 0x66, 0x46, 0x72, 0x79, 0xc6, 0x68, 0x0f, 0x7b, - 0x9b, 0x79, 0xdd, 0xbf, 0xf7, 0xeb, 0x7e, 0xfd, 0xfe, 0xf5, 0x0c, 0xec, 0x0e, 0x39, 0x1f, 0xfa, - 0xb4, 0xe7, 0xfa, 0x7c, 0xe2, 0xf5, 0x06, 0x6c, 0xf8, 0x6a, 0x42, 0xa3, 0x8b, 0x9e, 0xcf, 0x87, - 0x43, 0x16, 0x0c, 0x7b, 0xaf, 0x77, 0x7b, 0xce, 0xc4, 0x63, 0xa2, 0xef, 0x39, 0xc2, 0xe9, 0x86, - 0x11, 0x17, 0x9c, 0xdc, 0x53, 0x90, 0x2e, 0x42, 0xba, 0x06, 0xd2, 0xd5, 0x90, 0xee, 0xeb, 0xdd, - 0xce, 0xb7, 0xb5, 0x52, 0x27, 0x64, 0x3d, 0x27, 0x08, 0xb8, 0x70, 0x04, 0xe3, 0x41, 0xac, 0xf0, - 0x9d, 0xb7, 0xf5, 0x28, 0xbe, 0x0d, 0x26, 0x67, 0x3d, 0x6f, 0x12, 0xe1, 0x04, 0x3d, 0xfe, 0x4e, - 0x7e, 0x5c, 0xb0, 0x31, 0x8d, 0x85, 0x33, 0x0e, 0xf5, 0x84, 0xdb, 0x7a, 0x42, 0x14, 0xba, 0xbd, - 0x58, 0x38, 0x62, 0xa2, 0x35, 0x5b, 0xff, 0x5e, 0x83, 0xd6, 0x9e, 0x5c, 0xee, 0x81, 0x23, 0x1c, - 0xf2, 0x25, 0x6c, 0x0a, 0x67, 0xe0, 0xd3, 0x3e, 0x0b, 0x62, 0x1a, 0x89, 0x7e, 0x44, 0x5f, 0x4d, - 0x68, 0x2c, 0xee, 0x54, 0xee, 0x55, 0xde, 0x6d, 0x3f, 0xfc, 0x51, 0xf7, 0xaa, 0x6d, 0x74, 0x4f, - 0x24, 0xfa, 0x39, 0x82, 0x6d, 0x85, 0x3d, 0xba, 0x61, 0x13, 0x31, 0x23, 0x9d, 0x32, 0x4d, 0x42, - 0xcf, 0x11, 0x34, 0x61, 0x5a, 0x2f, 0xc5, 0xf4, 0x12, 0xc1, 0x79, 0xa6, 0x8c, 0x54, 0x32, 0xc9, - 0x93, 0x88, 0xa9, 0xe8, 0xfb, 0x2c, 0x9e, 0xee, 0x69, 0xa9, 0x28, 0xd3, 0x81, 0x42, 0x7f, 0xc4, - 0xe2, 0xf4, 0x9e, 0xbc, 0x19, 0x29, 0x09, 0xe0, 0x2d, 0xc3, 0x94, 0xb3, 0x5f, 0x15, 0xb9, 0x7e, - 0x5c, 0x98, 0x2b, 0x6f, 0x41, 0xb3, 0x83, 0xac, 0x0d, 0x53, 0x7c, 0x39, 0x2b, 0xd6, 0x4a, 0xf2, - 0xe5, 0xed, 0x68, 0xf8, 0xb2, 0x96, 0x1c, 0x00, 0x19, 0xf1, 0x41, 0x7e, 0x6f, 0x75, 0xe4, 0x7a, - 0x78, 0x35, 0xd7, 0x0b, 0x3e, 0xc8, 0xef, 0x6b, 0x7d, 0x94, 0x93, 0x91, 0x3e, 0x6c, 0x48, 0x0e, - 0x04, 0x27, 0x14, 0xcb, 0x48, 0xb1, 0x5b, 0x88, 0xe2, 0x97, 0x52, 0x36, 0x65, 0x58, 0x1b, 0x65, - 0x45, 0xe4, 0x77, 0x70, 0x57, 0x12, 0x0c, 0xa9, 0x48, 0x48, 0xe2, 0x89, 0x2f, 0xe2, 0x84, 0xac, - 0x81, 0x64, 0x8f, 0x0b, 0x91, 0x3d, 0xa3, 0x42, 0x2b, 0x47, 0x1d, 0x53, 0xda, 0xed, 0xd1, 0x65, - 0x83, 0x84, 0xc3, 0x6d, 0xe5, 0xf9, 0xd2, 0xc6, 0x59, 0x97, 0x6c, 0x16, 0x3d, 0x36, 0x74, 0x7e, - 0x79, 0x76, 0x59, 0xa7, 0x54, 0x21, 0x95, 0x93, 0x93, 0xaf, 0x60, 0x2b, 0x17, 0xd4, 0x71, 0xc8, - 0x83, 0x98, 0xde, 0x69, 0x21, 0xdd, 0xfb, 0x25, 0xa3, 0x5a, 0x81, 0x8f, 0x2a, 0xf6, 0x2d, 0x31, - 0x2b, 0x9e, 0x92, 0x25, 0x1e, 0xa9, 0xc9, 0xa0, 0x14, 0x99, 0x71, 0xbc, 0x1c, 0x59, 0x56, 0x4c, - 0x5e, 0xc1, 0xed, 0x99, 0x80, 0xd3, 0x74, 0x6d, 0xa4, 0x7b, 0x54, 0x3a, 0xe2, 0x12, 0xc2, 0x2d, - 0x6f, 0xde, 0x40, 0x9a, 0x32, 0xbf, 0xc3, 0x95, 0x92, 0x94, 0x33, 0x7b, 0xdc, 0xf2, 0xe6, 0x0d, - 0x10, 0x0a, 0xb7, 0x32, 0x61, 0xa7, 0xe9, 0x08, 0xd2, 0xbd, 0x57, 0x2a, 0xee, 0x12, 0xaa, 0x8d, - 0x51, 0x5e, 0x68, 0xa2, 0x3b, 0x09, 0x0a, 0xc5, 0xb2, 0x5a, 0x22, 0xba, 0x8d, 0xb7, 0x1b, 0x92, - 0xf5, 0x51, 0x4e, 0x46, 0xfe, 0x50, 0x81, 0xb7, 0x2f, 0x8b, 0x3e, 0x4d, 0x78, 0x13, 0x09, 0x3f, - 0xb8, 0x5e, 0xf8, 0x25, 0xd4, 0x9d, 0xd1, 0xa5, 0xa3, 0x32, 0x00, 0xa7, 0x1b, 0xf5, 0x78, 0x90, - 0x3a, 0xc2, 0xb5, 0xa2, 0x01, 0x68, 0x76, 0x7b, 0xc0, 0x83, 0xf4, 0x09, 0x6e, 0x8e, 0xe6, 0xc8, - 0x89, 0xab, 0x0e, 0xd0, 0xe5, 0xe3, 0xd0, 0xa7, 0x82, 0x7a, 0x7d, 0xfa, 0x9a, 0x06, 0xe2, 0xce, - 0x46, 0x89, 0x03, 0x7c, 0x6a, 0xb0, 0x87, 0x12, 0x8a, 0xc7, 0x97, 0x15, 0xed, 0xb7, 0xa0, 0xa1, - 0xd3, 0xc8, 0x3e, 0x40, 0xd3, 0xec, 0xc8, 0xfa, 0x14, 0xc8, 0x6c, 0x4d, 0x26, 0x4f, 0x71, 0x06, - 0x9f, 0x44, 0x2e, 0xd5, 0xb5, 0xfd, 0x07, 0x05, 0x03, 0xd3, 0x4e, 0x80, 0x89, 0xea, 0x6c, 0x91, - 0x58, 0x88, 0xea, 0xcf, 0xe0, 0xd6, 0x9c, 0x9c, 0xb3, 0x58, 0xdd, 0xb9, 0x28, 0x5b, 0x88, 0xee, - 0x1e, 0x90, 0xd9, 0x6e, 0x81, 0x6c, 0x43, 0x13, 0xd3, 0xbc, 0xe3, 0xfb, 0xa8, 0xba, 0x69, 0x37, - 0xe4, 0xfb, 0x9e, 0xef, 0x5b, 0x9f, 0xc3, 0xe6, 0xbc, 0x92, 0x4f, 0x0e, 0x67, 0x56, 0x73, 0xbf, - 0x70, 0x5e, 0x49, 0xad, 0xe7, 0x0b, 0xd8, 0x9a, 0x9b, 0xdf, 0x16, 0xa5, 0x7f, 0xba, 0xfc, 0xac, - 0x13, 0x2c, 0x7c, 0xf9, 0xb9, 0xc3, 0x5a, 0x90, 0xfe, 0x97, 0xb0, 0x9e, 0x6f, 0x4a, 0xc8, 0xde, - 0x8c, 0xea, 0xef, 0x17, 0x8a, 0xd0, 0x94, 0xda, 0x53, 0xd8, 0x98, 0xc9, 0xb9, 0x8b, 0xd0, 0xfb, - 0xaf, 0x0a, 0xac, 0xe5, 0x3a, 0x1c, 0xb2, 0x09, 0x75, 0x44, 0xa1, 0xce, 0x96, 0xad, 0x5e, 0xc8, - 0x3b, 0xd0, 0x1e, 0x3b, 0x6f, 0x4c, 0x72, 0xc5, 0x56, 0x77, 0xd5, 0x86, 0xb1, 0xf3, 0x46, 0xe7, - 0x42, 0x72, 0x0a, 0x6b, 0x1e, 0x3d, 0x73, 0x26, 0xbe, 0xba, 0xa6, 0xc4, 0xd4, 0xf4, 0xa8, 0x0f, - 0x0a, 0xdb, 0xf1, 0x13, 0x67, 0x4c, 0xed, 0x9b, 0x5a, 0x8b, 0x96, 0x91, 0xbb, 0x00, 0x61, 0xc4, - 0x47, 0xd4, 0x15, 0x7d, 0xe6, 0x61, 0x1b, 0xda, 0xb2, 0x5b, 0x5a, 0xf2, 0xdc, 0x23, 0xb7, 0xa1, - 0xe1, 0xc9, 0xa4, 0x3f, 0x09, 0xb0, 0x6d, 0x6c, 0xda, 0xcb, 0x5e, 0x74, 0x61, 0x4f, 0x02, 0x2b, - 0xc4, 0x93, 0xc8, 0x16, 0x8b, 0xef, 0xc2, 0xaa, 0xe0, 0xc2, 0xf1, 0x93, 0x6d, 0xc8, 0x2d, 0xd6, - 0xec, 0x15, 0x14, 0x9a, 0x8d, 0x3c, 0x82, 0xea, 0x88, 0x0f, 0x74, 0x33, 0x5f, 0xd0, 0xa2, 0x12, - 0x61, 0x7d, 0x0a, 0xdb, 0x97, 0x36, 0x70, 0x79, 0xfb, 0x55, 0x66, 0xec, 0xf7, 0x2d, 0x68, 0xc5, - 0xc2, 0x91, 0xe5, 0x98, 0x9f, 0x23, 0x79, 0xcd, 0x6e, 0xa2, 0xc0, 0xe6, 0xe7, 0xd6, 0x6f, 0xa1, - 0x73, 0x79, 0x71, 0xfa, 0x9a, 0xb7, 0xf5, 0x0b, 0xd8, 0x9c, 0x57, 0x9b, 0x8c, 0xc2, 0x4a, 0x69, - 0x85, 0x5f, 0xa1, 0x33, 0x67, 0x8b, 0x8d, 0x3c, 0x66, 0xac, 0x61, 0xfd, 0xc0, 0x19, 0x53, 0xed, - 0x7a, 0x2d, 0x94, 0x48, 0xaf, 0xb8, 0xfe, 0xea, 0x4f, 0x60, 0x73, 0x5e, 0x6b, 0x9b, 0x35, 0x77, - 0x25, 0x6b, 0xee, 0x2b, 0x9d, 0xdd, 0xfa, 0x6b, 0x15, 0xea, 0xa8, 0x96, 0xbc, 0x00, 0x50, 0xdd, - 0x69, 0xb2, 0xee, 0xf6, 0xc3, 0x9d, 0x82, 0x69, 0x1e, 0xfd, 0xbd, 0x25, 0xcc, 0x23, 0x79, 0x02, - 0x35, 0x16, 0x9c, 0x71, 0xbd, 0xcb, 0x9d, 0xc2, 0x5d, 0xf4, 0x19, 0xb7, 0x11, 0x28, 0xd7, 0x1d, - 0xbb, 0x5f, 0xd2, 0xb1, 0xd3, 0x1f, 0xc5, 0x3c, 0xc0, 0xe6, 0xbf, 0x65, 0x83, 0x12, 0xbd, 0x88, - 0x79, 0x40, 0x9e, 0x43, 0xed, 0x35, 0xa3, 0xe7, 0xfa, 0x36, 0x57, 0xb4, 0x75, 0x3e, 0x65, 0xf4, - 0xfc, 0x80, 0x9e, 0xb1, 0x80, 0x09, 0xc6, 0x03, 0x1b, 0x55, 0x90, 0xc7, 0xd0, 0xa6, 0x6f, 0x42, - 0x16, 0xd1, 0xbe, 0x60, 0x63, 0xaa, 0xef, 0x6c, 0x1d, 0xa3, 0xd1, 0x7c, 0x36, 0xe8, 0x9e, 0x98, - 0xcf, 0x06, 0x36, 0xa8, 0xe9, 0x52, 0x20, 0xc1, 0x6e, 0x44, 0x65, 0xaf, 0x8b, 0xe0, 0xe5, 0xab, - 0xc1, 0x6a, 0x3a, 0x82, 0x9f, 0xc0, 0xaa, 0x88, 0x26, 0x81, 0x9b, 0xc0, 0x1b, 0x57, 0xc2, 0x57, - 0x0c, 0x40, 0x8a, 0x2c, 0x1b, 0x5a, 0x89, 0xe5, 0x64, 0xf0, 0x9c, 0x45, 0x8c, 0x06, 0x9e, 0x7f, - 0x91, 0xf6, 0xbd, 0x15, 0x23, 0xc4, 0x93, 0xb9, 0x07, 0x6d, 0x8f, 0xc6, 0x6e, 0xc4, 0x42, 0x69, - 0x01, 0x3c, 0xa0, 0x96, 0x9d, 0x16, 0x59, 0x3b, 0xba, 0x07, 0xc8, 0xda, 0x6a, 0x7e, 0x32, 0xb5, - 0xfe, 0x52, 0x85, 0x86, 0xc9, 0x6f, 0xc7, 0xb0, 0x62, 0xda, 0xff, 0x94, 0x0b, 0x95, 0x4c, 0x9a, - 0x6d, 0x6f, 0xfa, 0x42, 0xf6, 0x32, 0x6e, 0xf4, 0xa0, 0xc4, 0x85, 0x25, 0x71, 0xa4, 0xdc, 0xf9, - 0xd4, 0x4a, 0x9d, 0xcf, 0x63, 0x68, 0xeb, 0x8b, 0x4c, 0x51, 0xcf, 0x50, 0xd3, 0xf5, 0xe1, 0x56, - 0x1d, 0xd7, 0xd7, 0x1e, 0x51, 0x60, 0xed, 0xfb, 0x6c, 0x88, 0xa9, 0x69, 0xcf, 0xf5, 0x6d, 0x89, - 0x24, 0xbf, 0x81, 0xbb, 0xa6, 0x0e, 0xa9, 0xc0, 0xd4, 0x5e, 0x6a, 0xbe, 0x6f, 0xe9, 0x2b, 0xf1, - 0xf6, 0xcc, 0x7a, 0x0e, 0xf4, 0x04, 0xbb, 0xa3, 0xf1, 0x78, 0x9e, 0x87, 0x88, 0x36, 0x63, 0xd6, - 0x09, 0xb4, 0x53, 0xd6, 0x5a, 0x94, 0xf3, 0xfc, 0x7d, 0x09, 0xda, 0xa9, 0x8d, 0x90, 0x8f, 0xa1, - 0x41, 0x03, 0x11, 0x31, 0x2a, 0x53, 0x79, 0xb5, 0x58, 0x4b, 0x9f, 0xc2, 0x77, 0x0f, 0x03, 0x11, - 0x5d, 0xd8, 0x46, 0x47, 0xe7, 0x3f, 0x15, 0xa8, 0xa3, 0x88, 0x10, 0xa8, 0x45, 0xdc, 0x37, 0xcb, - 0xc4, 0x67, 0x99, 0x34, 0x86, 0x11, 0x9f, 0x84, 0x7d, 0x3a, 0x76, 0x98, 0xaf, 0x97, 0x07, 0x28, - 0x3a, 0x94, 0x12, 0x99, 0x9a, 0x27, 0x31, 0x8d, 0xf4, 0x78, 0x55, 0xa5, 0x66, 0x29, 0x51, 0xc3, - 0x6f, 0xc1, 0xb2, 0xc7, 0xc7, 0x0e, 0x0b, 0x74, 0x71, 0xd6, 0x6f, 0xd2, 0x36, 0x71, 0x48, 0x5d, - 0xe6, 0xf8, 0x7d, 0x54, 0x86, 0x8e, 0xd0, 0xb2, 0x57, 0xb4, 0xf0, 0x99, 0x94, 0x91, 0x23, 0x68, - 0xc9, 0x6c, 0xa2, 0x8c, 0xb7, 0x5c, 0x3e, 0x7b, 0x36, 0x25, 0x5a, 0x3e, 0x59, 0xff, 0x5c, 0x82, - 0xea, 0x0b, 0x3e, 0x20, 0x07, 0xd0, 0x94, 0x57, 0xa3, 0x54, 0x2c, 0xdd, 0x2f, 0x54, 0x2e, 0x50, - 0x5d, 0x63, 0xa4, 0x1e, 0xcc, 0x47, 0x23, 0x97, 0x07, 0x67, 0x6c, 0x68, 0x3c, 0x67, 0xa9, 0xc4, - 0xcd, 0xf5, 0x69, 0x1a, 0x89, 0xf7, 0xd6, 0x8c, 0x44, 0xd6, 0x0d, 0x49, 0xa0, 0xbe, 0x9c, 0xea, - 0x4e, 0x69, 0xa7, 0x90, 0xe6, 0x5f, 0x21, 0xc4, 0x6e, 0x8d, 0xcc, 0x23, 0x39, 0x85, 0x9b, 0x46, - 0x17, 0x8b, 0x05, 0x73, 0x63, 0x1d, 0xb0, 0xbd, 0xc2, 0xfa, 0x14, 0xcc, 0x5e, 0x1d, 0xa5, 0x5f, - 0xad, 0xbf, 0xb5, 0xb1, 0x87, 0xca, 0x2e, 0xfc, 0xd8, 0x64, 0x34, 0x15, 0xd7, 0x3f, 0x29, 0x6f, - 0x8d, 0x2e, 0xfa, 0xe9, 0xd1, 0x0d, 0xd3, 0x5a, 0x7e, 0x0c, 0x35, 0x9f, 0x3b, 0x9e, 0x3e, 0xfe, - 0x47, 0xd7, 0x50, 0xf8, 0x11, 0x77, 0xbc, 0xa3, 0x1b, 0x36, 0xaa, 0x21, 0xa7, 0xd0, 0xa0, 0x6f, - 0x44, 0xe4, 0xb8, 0xe6, 0xc3, 0xdb, 0xcf, 0xae, 0xa1, 0xf1, 0x50, 0x69, 0x38, 0xba, 0x61, 0x1b, - 0x65, 0xe4, 0x73, 0x53, 0xe9, 0x5d, 0x1e, 0x5e, 0xe8, 0x2c, 0xf2, 0xc1, 0x35, 0x54, 0xa3, 0xf3, - 0x3e, 0xe5, 0xa1, 0xb4, 0x80, 0x2a, 0xfe, 0xf2, 0x25, 0xdd, 0xc8, 0xb6, 0xd2, 0x8d, 0x6c, 0xe7, - 0x4f, 0x55, 0xa8, 0xa3, 0xc5, 0x2e, 0xe9, 0xcc, 0x7f, 0x0d, 0x1b, 0x1e, 0x8d, 0x05, 0x0b, 0x50, - 0xbd, 0x4a, 0x7a, 0x25, 0x5b, 0x08, 0xf4, 0xfd, 0xf5, 0x94, 0x16, 0xd5, 0xdb, 0x3c, 0x00, 0xa2, - 0xab, 0x80, 0xc7, 0xe2, 0x90, 0xc7, 0x58, 0xd2, 0x74, 0x02, 0xd8, 0x50, 0x23, 0x07, 0xd3, 0x01, - 0xb2, 0x03, 0x1b, 0xe7, 0x11, 0xcb, 0xcd, 0x56, 0x39, 0x61, 0x1d, 0x07, 0xd2, 0x93, 0xe7, 0x5c, - 0x17, 0xea, 0x8b, 0xb8, 0x2e, 0x7c, 0x01, 0x1b, 0xfa, 0x5b, 0x68, 0x52, 0x84, 0xe3, 0x3b, 0xcb, - 0x98, 0x44, 0x77, 0x8b, 0x7e, 0x05, 0x9d, 0xb6, 0x3a, 0xeb, 0x22, 0x2b, 0x88, 0x3b, 0xff, 0xad, - 0x40, 0x4d, 0xba, 0x1b, 0xf6, 0x5a, 0x78, 0x89, 0xea, 0x4f, 0x22, 0xa6, 0xf2, 0xb4, 0xec, 0xb5, - 0x50, 0xf4, 0x32, 0x62, 0x71, 0xbe, 0x19, 0x5b, 0x9e, 0x69, 0xc6, 0xe6, 0x1e, 0x5c, 0xf5, 0xeb, - 0x3b, 0xb8, 0x5a, 0xa9, 0x83, 0xab, 0xcf, 0x3f, 0xb8, 0xce, 0x1f, 0x2b, 0xd0, 0xd0, 0xd1, 0x41, - 0xee, 0x43, 0x9a, 0x3b, 0x6d, 0x88, 0xb5, 0x94, 0x1c, 0xad, 0xf1, 0x09, 0xac, 0x68, 0x73, 0x5d, - 0xdb, 0x41, 0xb5, 0xbd, 0x51, 0xd0, 0xf9, 0xf3, 0x92, 0x6e, 0xe2, 0x30, 0x78, 0x8e, 0x61, 0x35, - 0xad, 0xdd, 0x94, 0xcd, 0x52, 0xea, 0x57, 0x52, 0xea, 0xe3, 0x6f, 0x66, 0x54, 0xed, 0xaf, 0xc1, - 0x6a, 0xa6, 0x64, 0x59, 0x3f, 0x87, 0xb5, 0x9c, 0x4f, 0xcb, 0x1e, 0x20, 0xd5, 0xaa, 0xe0, 0x73, - 0xde, 0x99, 0x97, 0xf2, 0xce, 0x6c, 0x7d, 0x08, 0xad, 0xa4, 0xf4, 0xc8, 0x3c, 0x24, 0x6b, 0x8d, - 0x51, 0xa1, 0x5e, 0xc8, 0xbb, 0x50, 0xa7, 0x51, 0xc4, 0x23, 0x6d, 0x25, 0x62, 0xac, 0x14, 0x85, - 0x6e, 0x57, 0xd7, 0x2c, 0x35, 0xc1, 0xfa, 0xc7, 0x12, 0xac, 0x66, 0x0a, 0x4f, 0xbe, 0xdf, 0xac, - 0x94, 0xea, 0x37, 0x7f, 0x0a, 0xa0, 0xae, 0x72, 0x88, 0x5d, 0xba, 0x12, 0xab, 0x2e, 0x7e, 0x08, - 0x7d, 0x1f, 0x9a, 0x34, 0xf0, 0x14, 0xb0, 0x7a, 0x25, 0xb0, 0x41, 0x03, 0x0f, 0x61, 0x0f, 0x61, - 0x4b, 0x5d, 0xb8, 0xc3, 0x88, 0xbb, 0x34, 0x8e, 0xa9, 0xd7, 0x1f, 0x5c, 0x08, 0xaa, 0xea, 0x6e, - 0xd5, 0xbe, 0x85, 0x83, 0xc7, 0x66, 0x6c, 0x5f, 0x0e, 0x91, 0x1f, 0x02, 0x51, 0x98, 0x01, 0xf3, - 0xfd, 0x04, 0x50, 0x47, 0xc0, 0x3a, 0x8e, 0xec, 0xe3, 0x80, 0x9a, 0xfd, 0x1d, 0x58, 0x91, 0xf3, - 0x58, 0x30, 0xec, 0x0b, 0x46, 0x23, 0xac, 0x64, 0x75, 0xbb, 0xad, 0x65, 0x27, 0x8c, 0x46, 0xd6, - 0x87, 0x49, 0x2b, 0x8a, 0x1d, 0x4b, 0xf6, 0x3b, 0x49, 0x25, 0xff, 0x9d, 0xe4, 0x2e, 0x40, 0xf2, - 0x63, 0xc3, 0xd3, 0x4d, 0x5e, 0xcb, 0xfc, 0x90, 0xf0, 0x2c, 0x4f, 0x47, 0xd3, 0xff, 0xaf, 0x8a, - 0x6c, 0x43, 0x53, 0xff, 0x1c, 0xf2, 0xb4, 0x57, 0x37, 0xd4, 0x6f, 0x1d, 0xcf, 0x7a, 0x02, 0x0d, - 0xdd, 0x69, 0x5d, 0xc5, 0xb1, 0x05, 0xcb, 0xf8, 0x87, 0xc2, 0xe8, 0xaf, 0x8f, 0xf8, 0xe0, 0xb9, - 0xb7, 0xff, 0xfb, 0x0a, 0x7c, 0xcf, 0xe5, 0xe3, 0x2b, 0x03, 0x70, 0xff, 0x66, 0xf2, 0x07, 0xfa, - 0x58, 0x9e, 0xe3, 0x71, 0xe5, 0xb3, 0x67, 0x1a, 0x33, 0xe4, 0xbe, 0x13, 0x0c, 0xbb, 0x3c, 0x1a, - 0xf6, 0x86, 0x34, 0xc0, 0x53, 0xee, 0xa9, 0x21, 0x27, 0x64, 0xf1, 0xe5, 0xbf, 0xe0, 0x1f, 0xeb, - 0xc7, 0xc1, 0x32, 0x62, 0xde, 0xfb, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x76, 0x60, 0x19, 0x87, - 0xb5, 0x1f, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/billing/v1/cloud_billing.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/billing/v1/cloud_billing.pb.go deleted file mode 100644 index 238193b8..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/billing/v1/cloud_billing.pb.go +++ /dev/null @@ -1,688 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/billing/v1/cloud_billing.proto - -/* -Package billing is a generated protocol buffer package. - -It is generated from these files: - google/cloud/billing/v1/cloud_billing.proto - -It has these top-level messages: - BillingAccount - ProjectBillingInfo - GetBillingAccountRequest - ListBillingAccountsRequest - ListBillingAccountsResponse - ListProjectBillingInfoRequest - ListProjectBillingInfoResponse - GetProjectBillingInfoRequest - UpdateProjectBillingInfoRequest -*/ -package billing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A billing account in [Google Cloud -// Console](https://console.cloud.google.com/). You can assign a billing account -// to one or more projects. -type BillingAccount struct { - // The resource name of the billing account. The resource name has the form - // `billingAccounts/{billing_account_id}`. For example, - // `billingAccounts/012345-567890-ABCDEF` would be the resource name for - // billing account `012345-567890-ABCDEF`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // True if the billing account is open, and will therefore be charged for any - // usage on associated projects. False if the billing account is closed, and - // therefore projects associated with it will be unable to use paid services. - Open bool `protobuf:"varint,2,opt,name=open" json:"open,omitempty"` - // The display name given to the billing account, such as `My Billing - // Account`. This name is displayed in the Google Cloud Console. - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"` -} - -func (m *BillingAccount) Reset() { *m = BillingAccount{} } -func (m *BillingAccount) String() string { return proto.CompactTextString(m) } -func (*BillingAccount) ProtoMessage() {} -func (*BillingAccount) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *BillingAccount) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *BillingAccount) GetOpen() bool { - if m != nil { - return m.Open - } - return false -} - -func (m *BillingAccount) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -// Encapsulation of billing information for a Cloud Console project. A project -// has at most one associated billing account at a time (but a billing account -// can be assigned to multiple projects). -type ProjectBillingInfo struct { - // The resource name for the `ProjectBillingInfo`; has the form - // `projects/{project_id}/billingInfo`. For example, the resource name for the - // billing information for project `tokyo-rain-123` would be - // `projects/tokyo-rain-123/billingInfo`. This field is read-only. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The ID of the project that this `ProjectBillingInfo` represents, such as - // `tokyo-rain-123`. This is a convenience field so that you don't need to - // parse the `name` field to obtain a project ID. This field is read-only. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The resource name of the billing account associated with the project, if - // any. For example, `billingAccounts/012345-567890-ABCDEF`. - BillingAccountName string `protobuf:"bytes,3,opt,name=billing_account_name,json=billingAccountName" json:"billing_account_name,omitempty"` - // True if the project is associated with an open billing account, to which - // usage on the project is charged. False if the project is associated with a - // closed billing account, or no billing account at all, and therefore cannot - // use paid services. This field is read-only. - BillingEnabled bool `protobuf:"varint,4,opt,name=billing_enabled,json=billingEnabled" json:"billing_enabled,omitempty"` -} - -func (m *ProjectBillingInfo) Reset() { *m = ProjectBillingInfo{} } -func (m *ProjectBillingInfo) String() string { return proto.CompactTextString(m) } -func (*ProjectBillingInfo) ProtoMessage() {} -func (*ProjectBillingInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ProjectBillingInfo) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ProjectBillingInfo) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ProjectBillingInfo) GetBillingAccountName() string { - if m != nil { - return m.BillingAccountName - } - return "" -} - -func (m *ProjectBillingInfo) GetBillingEnabled() bool { - if m != nil { - return m.BillingEnabled - } - return false -} - -// Request message for `GetBillingAccount`. -type GetBillingAccountRequest struct { - // The resource name of the billing account to retrieve. For example, - // `billingAccounts/012345-567890-ABCDEF`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetBillingAccountRequest) Reset() { *m = GetBillingAccountRequest{} } -func (m *GetBillingAccountRequest) String() string { return proto.CompactTextString(m) } -func (*GetBillingAccountRequest) ProtoMessage() {} -func (*GetBillingAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *GetBillingAccountRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `ListBillingAccounts`. -type ListBillingAccountsRequest struct { - // Requested page size. The maximum page size is 100; this is also the - // default. - PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A token identifying a page of results to return. This should be a - // `next_page_token` value returned from a previous `ListBillingAccounts` - // call. If unspecified, the first page of results is returned. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListBillingAccountsRequest) Reset() { *m = ListBillingAccountsRequest{} } -func (m *ListBillingAccountsRequest) String() string { return proto.CompactTextString(m) } -func (*ListBillingAccountsRequest) ProtoMessage() {} -func (*ListBillingAccountsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListBillingAccountsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListBillingAccountsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for `ListBillingAccounts`. -type ListBillingAccountsResponse struct { - // A list of billing accounts. - BillingAccounts []*BillingAccount `protobuf:"bytes,1,rep,name=billing_accounts,json=billingAccounts" json:"billing_accounts,omitempty"` - // A token to retrieve the next page of results. To retrieve the next page, - // call `ListBillingAccounts` again with the `page_token` field set to this - // value. This field is empty if there are no more results to retrieve. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListBillingAccountsResponse) Reset() { *m = ListBillingAccountsResponse{} } -func (m *ListBillingAccountsResponse) String() string { return proto.CompactTextString(m) } -func (*ListBillingAccountsResponse) ProtoMessage() {} -func (*ListBillingAccountsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListBillingAccountsResponse) GetBillingAccounts() []*BillingAccount { - if m != nil { - return m.BillingAccounts - } - return nil -} - -func (m *ListBillingAccountsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for `ListProjectBillingInfo`. -type ListProjectBillingInfoRequest struct { - // The resource name of the billing account associated with the projects that - // you want to list. For example, `billingAccounts/012345-567890-ABCDEF`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Requested page size. The maximum page size is 100; this is also the - // default. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A token identifying a page of results to be returned. This should be a - // `next_page_token` value returned from a previous `ListProjectBillingInfo` - // call. If unspecified, the first page of results is returned. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListProjectBillingInfoRequest) Reset() { *m = ListProjectBillingInfoRequest{} } -func (m *ListProjectBillingInfoRequest) String() string { return proto.CompactTextString(m) } -func (*ListProjectBillingInfoRequest) ProtoMessage() {} -func (*ListProjectBillingInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ListProjectBillingInfoRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListProjectBillingInfoRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListProjectBillingInfoRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Request message for `ListProjectBillingInfoResponse`. -type ListProjectBillingInfoResponse struct { - // A list of `ProjectBillingInfo` resources representing the projects - // associated with the billing account. - ProjectBillingInfo []*ProjectBillingInfo `protobuf:"bytes,1,rep,name=project_billing_info,json=projectBillingInfo" json:"project_billing_info,omitempty"` - // A token to retrieve the next page of results. To retrieve the next page, - // call `ListProjectBillingInfo` again with the `page_token` field set to this - // value. This field is empty if there are no more results to retrieve. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListProjectBillingInfoResponse) Reset() { *m = ListProjectBillingInfoResponse{} } -func (m *ListProjectBillingInfoResponse) String() string { return proto.CompactTextString(m) } -func (*ListProjectBillingInfoResponse) ProtoMessage() {} -func (*ListProjectBillingInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ListProjectBillingInfoResponse) GetProjectBillingInfo() []*ProjectBillingInfo { - if m != nil { - return m.ProjectBillingInfo - } - return nil -} - -func (m *ListProjectBillingInfoResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for `GetProjectBillingInfo`. -type GetProjectBillingInfoRequest struct { - // The resource name of the project for which billing information is - // retrieved. For example, `projects/tokyo-rain-123`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetProjectBillingInfoRequest) Reset() { *m = GetProjectBillingInfoRequest{} } -func (m *GetProjectBillingInfoRequest) String() string { return proto.CompactTextString(m) } -func (*GetProjectBillingInfoRequest) ProtoMessage() {} -func (*GetProjectBillingInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *GetProjectBillingInfoRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `UpdateProjectBillingInfo`. -type UpdateProjectBillingInfoRequest struct { - // The resource name of the project associated with the billing information - // that you want to update. For example, `projects/tokyo-rain-123`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The new billing information for the project. Read-only fields are ignored; - // thus, you may leave empty all fields except `billing_account_name`. - ProjectBillingInfo *ProjectBillingInfo `protobuf:"bytes,2,opt,name=project_billing_info,json=projectBillingInfo" json:"project_billing_info,omitempty"` -} - -func (m *UpdateProjectBillingInfoRequest) Reset() { *m = UpdateProjectBillingInfoRequest{} } -func (m *UpdateProjectBillingInfoRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateProjectBillingInfoRequest) ProtoMessage() {} -func (*UpdateProjectBillingInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *UpdateProjectBillingInfoRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateProjectBillingInfoRequest) GetProjectBillingInfo() *ProjectBillingInfo { - if m != nil { - return m.ProjectBillingInfo - } - return nil -} - -func init() { - proto.RegisterType((*BillingAccount)(nil), "google.cloud.billing.v1.BillingAccount") - proto.RegisterType((*ProjectBillingInfo)(nil), "google.cloud.billing.v1.ProjectBillingInfo") - proto.RegisterType((*GetBillingAccountRequest)(nil), "google.cloud.billing.v1.GetBillingAccountRequest") - proto.RegisterType((*ListBillingAccountsRequest)(nil), "google.cloud.billing.v1.ListBillingAccountsRequest") - proto.RegisterType((*ListBillingAccountsResponse)(nil), "google.cloud.billing.v1.ListBillingAccountsResponse") - proto.RegisterType((*ListProjectBillingInfoRequest)(nil), "google.cloud.billing.v1.ListProjectBillingInfoRequest") - proto.RegisterType((*ListProjectBillingInfoResponse)(nil), "google.cloud.billing.v1.ListProjectBillingInfoResponse") - proto.RegisterType((*GetProjectBillingInfoRequest)(nil), "google.cloud.billing.v1.GetProjectBillingInfoRequest") - proto.RegisterType((*UpdateProjectBillingInfoRequest)(nil), "google.cloud.billing.v1.UpdateProjectBillingInfoRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for CloudBilling service - -type CloudBillingClient interface { - // Gets information about a billing account. The current authenticated user - // must be an [owner of the billing - // account](https://support.google.com/cloud/answer/4430947). - GetBillingAccount(ctx context.Context, in *GetBillingAccountRequest, opts ...grpc.CallOption) (*BillingAccount, error) - // Lists the billing accounts that the current authenticated user - // [owns](https://support.google.com/cloud/answer/4430947). - ListBillingAccounts(ctx context.Context, in *ListBillingAccountsRequest, opts ...grpc.CallOption) (*ListBillingAccountsResponse, error) - // Lists the projects associated with a billing account. The current - // authenticated user must be an [owner of the billing - // account](https://support.google.com/cloud/answer/4430947). - ListProjectBillingInfo(ctx context.Context, in *ListProjectBillingInfoRequest, opts ...grpc.CallOption) (*ListProjectBillingInfoResponse, error) - // Gets the billing information for a project. The current authenticated user - // must have [permission to view the - // project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo - // ). - GetProjectBillingInfo(ctx context.Context, in *GetProjectBillingInfoRequest, opts ...grpc.CallOption) (*ProjectBillingInfo, error) - // Sets or updates the billing account associated with a project. You specify - // the new billing account by setting the `billing_account_name` in the - // `ProjectBillingInfo` resource to the resource name of a billing account. - // Associating a project with an open billing account enables billing on the - // project and allows charges for resource usage. If the project already had a - // billing account, this method changes the billing account used for resource - // usage charges. - // - // *Note:* Incurred charges that have not yet been reported in the transaction - // history of the Google Cloud Console may be billed to the new billing - // account, even if the charge occurred before the new billing account was - // assigned to the project. - // - // The current authenticated user must have ownership privileges for both the - // [project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo - // ) and the [billing - // account](https://support.google.com/cloud/answer/4430947). - // - // You can disable billing on the project by setting the - // `billing_account_name` field to empty. This action disassociates the - // current billing account from the project. Any billable activity of your - // in-use services will stop, and your application could stop functioning as - // expected. Any unbilled charges to date will be billed to the previously - // associated account. The current authenticated user must be either an owner - // of the project or an owner of the billing account for the project. - // - // Note that associating a project with a *closed* billing account will have - // much the same effect as disabling billing on the project: any paid - // resources used by the project will be shut down. Thus, unless you wish to - // disable billing, you should always call this method with the name of an - // *open* billing account. - UpdateProjectBillingInfo(ctx context.Context, in *UpdateProjectBillingInfoRequest, opts ...grpc.CallOption) (*ProjectBillingInfo, error) -} - -type cloudBillingClient struct { - cc *grpc.ClientConn -} - -func NewCloudBillingClient(cc *grpc.ClientConn) CloudBillingClient { - return &cloudBillingClient{cc} -} - -func (c *cloudBillingClient) GetBillingAccount(ctx context.Context, in *GetBillingAccountRequest, opts ...grpc.CallOption) (*BillingAccount, error) { - out := new(BillingAccount) - err := grpc.Invoke(ctx, "/google.cloud.billing.v1.CloudBilling/GetBillingAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBillingClient) ListBillingAccounts(ctx context.Context, in *ListBillingAccountsRequest, opts ...grpc.CallOption) (*ListBillingAccountsResponse, error) { - out := new(ListBillingAccountsResponse) - err := grpc.Invoke(ctx, "/google.cloud.billing.v1.CloudBilling/ListBillingAccounts", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBillingClient) ListProjectBillingInfo(ctx context.Context, in *ListProjectBillingInfoRequest, opts ...grpc.CallOption) (*ListProjectBillingInfoResponse, error) { - out := new(ListProjectBillingInfoResponse) - err := grpc.Invoke(ctx, "/google.cloud.billing.v1.CloudBilling/ListProjectBillingInfo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBillingClient) GetProjectBillingInfo(ctx context.Context, in *GetProjectBillingInfoRequest, opts ...grpc.CallOption) (*ProjectBillingInfo, error) { - out := new(ProjectBillingInfo) - err := grpc.Invoke(ctx, "/google.cloud.billing.v1.CloudBilling/GetProjectBillingInfo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBillingClient) UpdateProjectBillingInfo(ctx context.Context, in *UpdateProjectBillingInfoRequest, opts ...grpc.CallOption) (*ProjectBillingInfo, error) { - out := new(ProjectBillingInfo) - err := grpc.Invoke(ctx, "/google.cloud.billing.v1.CloudBilling/UpdateProjectBillingInfo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for CloudBilling service - -type CloudBillingServer interface { - // Gets information about a billing account. The current authenticated user - // must be an [owner of the billing - // account](https://support.google.com/cloud/answer/4430947). - GetBillingAccount(context.Context, *GetBillingAccountRequest) (*BillingAccount, error) - // Lists the billing accounts that the current authenticated user - // [owns](https://support.google.com/cloud/answer/4430947). - ListBillingAccounts(context.Context, *ListBillingAccountsRequest) (*ListBillingAccountsResponse, error) - // Lists the projects associated with a billing account. The current - // authenticated user must be an [owner of the billing - // account](https://support.google.com/cloud/answer/4430947). - ListProjectBillingInfo(context.Context, *ListProjectBillingInfoRequest) (*ListProjectBillingInfoResponse, error) - // Gets the billing information for a project. The current authenticated user - // must have [permission to view the - // project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo - // ). - GetProjectBillingInfo(context.Context, *GetProjectBillingInfoRequest) (*ProjectBillingInfo, error) - // Sets or updates the billing account associated with a project. You specify - // the new billing account by setting the `billing_account_name` in the - // `ProjectBillingInfo` resource to the resource name of a billing account. - // Associating a project with an open billing account enables billing on the - // project and allows charges for resource usage. If the project already had a - // billing account, this method changes the billing account used for resource - // usage charges. - // - // *Note:* Incurred charges that have not yet been reported in the transaction - // history of the Google Cloud Console may be billed to the new billing - // account, even if the charge occurred before the new billing account was - // assigned to the project. - // - // The current authenticated user must have ownership privileges for both the - // [project](https://cloud.google.com/docs/permissions-overview#h.bgs0oxofvnoo - // ) and the [billing - // account](https://support.google.com/cloud/answer/4430947). - // - // You can disable billing on the project by setting the - // `billing_account_name` field to empty. This action disassociates the - // current billing account from the project. Any billable activity of your - // in-use services will stop, and your application could stop functioning as - // expected. Any unbilled charges to date will be billed to the previously - // associated account. The current authenticated user must be either an owner - // of the project or an owner of the billing account for the project. - // - // Note that associating a project with a *closed* billing account will have - // much the same effect as disabling billing on the project: any paid - // resources used by the project will be shut down. Thus, unless you wish to - // disable billing, you should always call this method with the name of an - // *open* billing account. - UpdateProjectBillingInfo(context.Context, *UpdateProjectBillingInfoRequest) (*ProjectBillingInfo, error) -} - -func RegisterCloudBillingServer(s *grpc.Server, srv CloudBillingServer) { - s.RegisterService(&_CloudBilling_serviceDesc, srv) -} - -func _CloudBilling_GetBillingAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetBillingAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBillingServer).GetBillingAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.billing.v1.CloudBilling/GetBillingAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBillingServer).GetBillingAccount(ctx, req.(*GetBillingAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBilling_ListBillingAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListBillingAccountsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBillingServer).ListBillingAccounts(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.billing.v1.CloudBilling/ListBillingAccounts", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBillingServer).ListBillingAccounts(ctx, req.(*ListBillingAccountsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBilling_ListProjectBillingInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListProjectBillingInfoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBillingServer).ListProjectBillingInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.billing.v1.CloudBilling/ListProjectBillingInfo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBillingServer).ListProjectBillingInfo(ctx, req.(*ListProjectBillingInfoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBilling_GetProjectBillingInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetProjectBillingInfoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBillingServer).GetProjectBillingInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.billing.v1.CloudBilling/GetProjectBillingInfo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBillingServer).GetProjectBillingInfo(ctx, req.(*GetProjectBillingInfoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBilling_UpdateProjectBillingInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateProjectBillingInfoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBillingServer).UpdateProjectBillingInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.billing.v1.CloudBilling/UpdateProjectBillingInfo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBillingServer).UpdateProjectBillingInfo(ctx, req.(*UpdateProjectBillingInfoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _CloudBilling_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.billing.v1.CloudBilling", - HandlerType: (*CloudBillingServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetBillingAccount", - Handler: _CloudBilling_GetBillingAccount_Handler, - }, - { - MethodName: "ListBillingAccounts", - Handler: _CloudBilling_ListBillingAccounts_Handler, - }, - { - MethodName: "ListProjectBillingInfo", - Handler: _CloudBilling_ListProjectBillingInfo_Handler, - }, - { - MethodName: "GetProjectBillingInfo", - Handler: _CloudBilling_GetProjectBillingInfo_Handler, - }, - { - MethodName: "UpdateProjectBillingInfo", - Handler: _CloudBilling_UpdateProjectBillingInfo_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/billing/v1/cloud_billing.proto", -} - -func init() { proto.RegisterFile("google/cloud/billing/v1/cloud_billing.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 667 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x4e, 0xd4, 0x40, - 0x14, 0xce, 0x00, 0x12, 0xf6, 0x80, 0x20, 0x03, 0xe8, 0x66, 0x17, 0x10, 0xea, 0x0f, 0x28, 0xb1, - 0x15, 0xf0, 0xdf, 0xa8, 0x11, 0x63, 0x08, 0x89, 0x31, 0x9b, 0xaa, 0x89, 0xd1, 0x98, 0x66, 0x76, - 0x3b, 0x34, 0xd5, 0x32, 0x53, 0x77, 0x0a, 0x51, 0x8c, 0x37, 0xbe, 0x82, 0x7a, 0xe1, 0x85, 0x37, - 0x5e, 0xe8, 0x2b, 0x78, 0xed, 0x2b, 0xf8, 0x0a, 0xde, 0xfb, 0x0a, 0x66, 0xa6, 0x53, 0x65, 0xbb, - 0x9d, 0x85, 0xc6, 0xbb, 0xe6, 0x9b, 0x73, 0xfa, 0x7d, 0xe7, 0x9b, 0xef, 0x6c, 0x17, 0x96, 0x02, - 0xce, 0x83, 0x88, 0x3a, 0xad, 0x88, 0x6f, 0xfb, 0x4e, 0x33, 0x8c, 0xa2, 0x90, 0x05, 0xce, 0xce, - 0x72, 0x0a, 0x78, 0x1a, 0xb0, 0xe3, 0x36, 0x4f, 0x38, 0x3e, 0x96, 0x16, 0xdb, 0xea, 0xcc, 0xce, - 0xce, 0x76, 0x96, 0x6b, 0xd3, 0xfa, 0x2d, 0x24, 0x0e, 0x1d, 0xc2, 0x18, 0x4f, 0x48, 0x12, 0x72, - 0x26, 0xd2, 0x36, 0xeb, 0x29, 0x8c, 0xae, 0xa5, 0xb5, 0xb7, 0x5b, 0x2d, 0xbe, 0xcd, 0x12, 0x8c, - 0x61, 0x80, 0x91, 0x2d, 0x5a, 0x45, 0x73, 0x68, 0xb1, 0xe2, 0xaa, 0x67, 0x89, 0xf1, 0x98, 0xb2, - 0x6a, 0xdf, 0x1c, 0x5a, 0x1c, 0x72, 0xd5, 0x33, 0x9e, 0x87, 0x11, 0x3f, 0x14, 0x71, 0x44, 0x5e, - 0x7b, 0xaa, 0xbe, 0x5f, 0xd5, 0x0f, 0x6b, 0xec, 0x3e, 0xd9, 0xa2, 0xd6, 0x17, 0x04, 0xb8, 0xd1, - 0xe6, 0xcf, 0x69, 0x2b, 0xd1, 0x24, 0x1b, 0x6c, 0x93, 0x17, 0x32, 0xcc, 0x00, 0xc4, 0x69, 0xa5, - 0x17, 0xfa, 0x8a, 0xa7, 0xe2, 0x56, 0x34, 0xb2, 0xe1, 0xe3, 0xf3, 0x30, 0xa9, 0x47, 0xf2, 0x48, - 0xaa, 0x73, 0x2f, 0x29, 0x6e, 0x76, 0x8c, 0x20, 0xb9, 0xf1, 0x02, 0x8c, 0x65, 0x1d, 0x94, 0x91, - 0x66, 0x44, 0xfd, 0xea, 0x80, 0x52, 0x3f, 0xaa, 0xe1, 0xbb, 0x29, 0x6a, 0xd9, 0x50, 0x5d, 0xa7, - 0x49, 0xa7, 0x09, 0x2e, 0x7d, 0xb9, 0x4d, 0x45, 0xa1, 0x17, 0xd6, 0x63, 0xa8, 0xdd, 0x0b, 0x45, - 0xae, 0x41, 0x64, 0x1d, 0x75, 0xa8, 0xc4, 0x24, 0xa0, 0x9e, 0x08, 0x77, 0xd3, 0xb6, 0x43, 0xee, - 0x90, 0x04, 0x1e, 0x84, 0xbb, 0xe9, 0x90, 0xf2, 0x30, 0xe1, 0x2f, 0xb4, 0x99, 0x72, 0x48, 0x12, - 0xd0, 0x87, 0x12, 0xb0, 0x3e, 0x21, 0xa8, 0x17, 0xbe, 0x5a, 0xc4, 0x9c, 0x09, 0x8a, 0x5d, 0x38, - 0x92, 0x33, 0x41, 0x54, 0xd1, 0x5c, 0xff, 0xe2, 0xf0, 0xca, 0x82, 0x6d, 0xb8, 0x7d, 0x3b, 0x37, - 0xd7, 0x58, 0xa7, 0x53, 0x02, 0x9f, 0x86, 0x31, 0x46, 0x5f, 0x25, 0x5e, 0x97, 0xae, 0xc3, 0x12, - 0x6e, 0xfc, 0xd5, 0xc6, 0x61, 0x46, 0x4a, 0xeb, 0xbe, 0xcd, 0x1e, 0x56, 0x75, 0x9a, 0xd1, 0xd7, - 0xd3, 0x8c, 0xfe, 0xbc, 0x19, 0xdf, 0x10, 0xcc, 0x9a, 0x18, 0xb5, 0x1f, 0xcf, 0x60, 0x32, 0xcb, - 0x4c, 0xe6, 0x4b, 0xc8, 0x36, 0xb9, 0xf6, 0x64, 0xc9, 0xe8, 0x49, 0xc1, 0x2b, 0x71, 0xdc, 0x1d, - 0xd3, 0x83, 0x5a, 0xb3, 0x02, 0xd3, 0xeb, 0xb4, 0x9c, 0x33, 0xd6, 0x07, 0x04, 0xc7, 0x1f, 0xc5, - 0x3e, 0x49, 0x68, 0x39, 0x47, 0x4d, 0x23, 0x4b, 0x61, 0xff, 0x3f, 0xf2, 0xca, 0xef, 0x41, 0x18, - 0xb9, 0x23, 0x7b, 0x35, 0x88, 0x3f, 0x22, 0x18, 0xef, 0xda, 0x0e, 0xbc, 0x6c, 0xe4, 0x31, 0x6d, - 0x52, 0xed, 0xa0, 0x09, 0xb5, 0x4e, 0xbe, 0xfb, 0xf9, 0xeb, 0x7d, 0xdf, 0x2c, 0x9e, 0x96, 0x3f, - 0x74, 0x6f, 0xe4, 0xd0, 0x37, 0x72, 0x99, 0x75, 0xce, 0xbe, 0xc5, 0x9f, 0x11, 0x4c, 0x14, 0xac, - 0x0a, 0x5e, 0x35, 0xd2, 0x98, 0x77, 0xb6, 0x76, 0xa1, 0x5c, 0x53, 0x9a, 0x3e, 0xab, 0xae, 0x84, - 0x4e, 0xe1, 0x09, 0x29, 0x34, 0xbf, 0x56, 0xdf, 0x11, 0x1c, 0x2d, 0x4e, 0x2f, 0xbe, 0xd4, 0x93, - 0xcd, 0x18, 0x87, 0xda, 0xe5, 0xd2, 0x7d, 0x5a, 0xe8, 0x39, 0x25, 0x74, 0x01, 0x9f, 0xea, 0xe5, - 0xa8, 0xa3, 0xd3, 0x20, 0xf0, 0x57, 0x04, 0x53, 0x85, 0x79, 0xc6, 0x17, 0x7b, 0x5d, 0xbb, 0x59, - 0x78, 0x99, 0x54, 0x5a, 0x67, 0x94, 0xd8, 0x13, 0x78, 0xfe, 0x9f, 0xd8, 0x4c, 0x99, 0x54, 0xd9, - 0xdc, 0x23, 0xe7, 0x07, 0x82, 0xaa, 0x69, 0x87, 0xf0, 0x15, 0x23, 0xe9, 0x3e, 0x6b, 0x57, 0x4e, - 0xee, 0x2d, 0x25, 0xf7, 0x6a, 0x6d, 0x7f, 0xb9, 0xd7, 0x0a, 0x17, 0x77, 0xad, 0x0d, 0xf5, 0x16, - 0xdf, 0x32, 0x51, 0xae, 0x8d, 0xef, 0xdd, 0xc6, 0x86, 0xfc, 0x62, 0x37, 0xd0, 0x93, 0x9b, 0xba, - 0x3a, 0xe0, 0x11, 0x61, 0x81, 0xcd, 0xdb, 0x81, 0x13, 0x50, 0xa6, 0xbe, 0xe7, 0x4e, 0x7a, 0x44, - 0xe2, 0x50, 0x74, 0xfd, 0x6d, 0xb8, 0xae, 0x1f, 0x9b, 0x83, 0xaa, 0x74, 0xf5, 0x4f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xc0, 0x01, 0x24, 0x32, 0x60, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/clusters.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/clusters.pb.go deleted file mode 100644 index c3ef596c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/clusters.pb.go +++ /dev/null @@ -1,1598 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dataproc/v1/clusters.proto - -/* -Package dataproc is a generated protocol buffer package. - -It is generated from these files: - google/cloud/dataproc/v1/clusters.proto - google/cloud/dataproc/v1/jobs.proto - google/cloud/dataproc/v1/operations.proto - -It has these top-level messages: - Cluster - ClusterConfig - GceClusterConfig - InstanceGroupConfig - ManagedGroupConfig - AcceleratorConfig - DiskConfig - NodeInitializationAction - ClusterStatus - SoftwareConfig - ClusterMetrics - CreateClusterRequest - UpdateClusterRequest - DeleteClusterRequest - GetClusterRequest - ListClustersRequest - ListClustersResponse - DiagnoseClusterRequest - DiagnoseClusterResults - LoggingConfig - HadoopJob - SparkJob - PySparkJob - QueryList - HiveJob - SparkSqlJob - PigJob - JobPlacement - JobStatus - JobReference - YarnApplication - Job - JobScheduling - SubmitJobRequest - GetJobRequest - ListJobsRequest - UpdateJobRequest - ListJobsResponse - CancelJobRequest - DeleteJobRequest - ClusterOperationStatus - ClusterOperationMetadata -*/ -package dataproc - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf4 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf5 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The cluster state. -type ClusterStatus_State int32 - -const ( - // The cluster state is unknown. - ClusterStatus_UNKNOWN ClusterStatus_State = 0 - // The cluster is being created and set up. It is not ready for use. - ClusterStatus_CREATING ClusterStatus_State = 1 - // The cluster is currently running and healthy. It is ready for use. - ClusterStatus_RUNNING ClusterStatus_State = 2 - // The cluster encountered an error. It is not ready for use. - ClusterStatus_ERROR ClusterStatus_State = 3 - // The cluster is being deleted. It cannot be used. - ClusterStatus_DELETING ClusterStatus_State = 4 - // The cluster is being updated. It continues to accept and process jobs. - ClusterStatus_UPDATING ClusterStatus_State = 5 -) - -var ClusterStatus_State_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CREATING", - 2: "RUNNING", - 3: "ERROR", - 4: "DELETING", - 5: "UPDATING", -} -var ClusterStatus_State_value = map[string]int32{ - "UNKNOWN": 0, - "CREATING": 1, - "RUNNING": 2, - "ERROR": 3, - "DELETING": 4, - "UPDATING": 5, -} - -func (x ClusterStatus_State) String() string { - return proto.EnumName(ClusterStatus_State_name, int32(x)) -} -func (ClusterStatus_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8, 0} } - -type ClusterStatus_Substate int32 - -const ( - ClusterStatus_UNSPECIFIED ClusterStatus_Substate = 0 - // The cluster is known to be in an unhealthy state - // (for example, critical daemons are not running or HDFS capacity is - // exhausted). - // - // Applies to RUNNING state. - ClusterStatus_UNHEALTHY ClusterStatus_Substate = 1 - // The agent-reported status is out of date (may occur if - // Cloud Dataproc loses communication with Agent). - // - // Applies to RUNNING state. - ClusterStatus_STALE_STATUS ClusterStatus_Substate = 2 -) - -var ClusterStatus_Substate_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "UNHEALTHY", - 2: "STALE_STATUS", -} -var ClusterStatus_Substate_value = map[string]int32{ - "UNSPECIFIED": 0, - "UNHEALTHY": 1, - "STALE_STATUS": 2, -} - -func (x ClusterStatus_Substate) String() string { - return proto.EnumName(ClusterStatus_Substate_name, int32(x)) -} -func (ClusterStatus_Substate) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8, 1} } - -// Describes the identifying information, config, and status of -// a cluster of Google Compute Engine instances. -type Cluster struct { - // Required. The Google Cloud Platform project ID that the cluster belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The cluster name. Cluster names within a project must be - // unique. Names of deleted clusters can be reused. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Required. The cluster config. Note that Cloud Dataproc may set - // default values, and values may change when clusters are updated. - Config *ClusterConfig `protobuf:"bytes,3,opt,name=config" json:"config,omitempty"` - // Optional. The labels to associate with this cluster. - // Label **keys** must contain 1 to 63 characters, and must conform to - // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // Label **values** may be empty, but, if present, must contain 1 to 63 - // characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // No more than 32 labels can be associated with a cluster. - Labels map[string]string `protobuf:"bytes,8,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Output-only. Cluster status. - Status *ClusterStatus `protobuf:"bytes,4,opt,name=status" json:"status,omitempty"` - // Output-only. The previous cluster status. - StatusHistory []*ClusterStatus `protobuf:"bytes,7,rep,name=status_history,json=statusHistory" json:"status_history,omitempty"` - // Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc - // generates this value when it creates the cluster. - ClusterUuid string `protobuf:"bytes,6,opt,name=cluster_uuid,json=clusterUuid" json:"cluster_uuid,omitempty"` - // Contains cluster daemon metrics such as HDFS and YARN stats. - // - // **Beta Feature**: This report is available for testing purposes only. It may - // be changed before final release. - Metrics *ClusterMetrics `protobuf:"bytes,9,opt,name=metrics" json:"metrics,omitempty"` -} - -func (m *Cluster) Reset() { *m = Cluster{} } -func (m *Cluster) String() string { return proto.CompactTextString(m) } -func (*Cluster) ProtoMessage() {} -func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Cluster) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *Cluster) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *Cluster) GetConfig() *ClusterConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *Cluster) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *Cluster) GetStatus() *ClusterStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *Cluster) GetStatusHistory() []*ClusterStatus { - if m != nil { - return m.StatusHistory - } - return nil -} - -func (m *Cluster) GetClusterUuid() string { - if m != nil { - return m.ClusterUuid - } - return "" -} - -func (m *Cluster) GetMetrics() *ClusterMetrics { - if m != nil { - return m.Metrics - } - return nil -} - -// The cluster config. -type ClusterConfig struct { - // Optional. A Google Cloud Storage staging bucket used for sharing generated - // SSH keys and config. If you do not specify a staging bucket, Cloud - // Dataproc will determine an appropriate Cloud Storage location (US, - // ASIA, or EU) for your cluster's staging bucket according to the Google - // Compute Engine zone where your cluster is deployed, and then it will create - // and manage this project-level, per-location bucket for you. - ConfigBucket string `protobuf:"bytes,1,opt,name=config_bucket,json=configBucket" json:"config_bucket,omitempty"` - // Required. The shared Google Compute Engine config settings for - // all instances in a cluster. - GceClusterConfig *GceClusterConfig `protobuf:"bytes,8,opt,name=gce_cluster_config,json=gceClusterConfig" json:"gce_cluster_config,omitempty"` - // Optional. The Google Compute Engine config settings for - // the master instance in a cluster. - MasterConfig *InstanceGroupConfig `protobuf:"bytes,9,opt,name=master_config,json=masterConfig" json:"master_config,omitempty"` - // Optional. The Google Compute Engine config settings for - // worker instances in a cluster. - WorkerConfig *InstanceGroupConfig `protobuf:"bytes,10,opt,name=worker_config,json=workerConfig" json:"worker_config,omitempty"` - // Optional. The Google Compute Engine config settings for - // additional worker instances in a cluster. - SecondaryWorkerConfig *InstanceGroupConfig `protobuf:"bytes,12,opt,name=secondary_worker_config,json=secondaryWorkerConfig" json:"secondary_worker_config,omitempty"` - // Optional. The config settings for software inside the cluster. - SoftwareConfig *SoftwareConfig `protobuf:"bytes,13,opt,name=software_config,json=softwareConfig" json:"software_config,omitempty"` - // Optional. Commands to execute on each node after config is - // completed. By default, executables are run on master and all worker nodes. - // You can test a node's `role` metadata to run an executable on - // a master or worker node, as shown below using `curl` (you can also use `wget`): - // - // ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) - // if [[ "${ROLE}" == 'Master' ]]; then - // ... master specific actions ... - // else - // ... worker specific actions ... - // fi - InitializationActions []*NodeInitializationAction `protobuf:"bytes,11,rep,name=initialization_actions,json=initializationActions" json:"initialization_actions,omitempty"` -} - -func (m *ClusterConfig) Reset() { *m = ClusterConfig{} } -func (m *ClusterConfig) String() string { return proto.CompactTextString(m) } -func (*ClusterConfig) ProtoMessage() {} -func (*ClusterConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ClusterConfig) GetConfigBucket() string { - if m != nil { - return m.ConfigBucket - } - return "" -} - -func (m *ClusterConfig) GetGceClusterConfig() *GceClusterConfig { - if m != nil { - return m.GceClusterConfig - } - return nil -} - -func (m *ClusterConfig) GetMasterConfig() *InstanceGroupConfig { - if m != nil { - return m.MasterConfig - } - return nil -} - -func (m *ClusterConfig) GetWorkerConfig() *InstanceGroupConfig { - if m != nil { - return m.WorkerConfig - } - return nil -} - -func (m *ClusterConfig) GetSecondaryWorkerConfig() *InstanceGroupConfig { - if m != nil { - return m.SecondaryWorkerConfig - } - return nil -} - -func (m *ClusterConfig) GetSoftwareConfig() *SoftwareConfig { - if m != nil { - return m.SoftwareConfig - } - return nil -} - -func (m *ClusterConfig) GetInitializationActions() []*NodeInitializationAction { - if m != nil { - return m.InitializationActions - } - return nil -} - -// Common config settings for resources of Google Compute Engine cluster -// instances, applicable to all instances in the cluster. -type GceClusterConfig struct { - // Optional. The zone where the Google Compute Engine cluster will be located. - // On a create request, it is required in the "global" region. If omitted - // in a non-global Cloud Dataproc region, the service will pick a zone in the - // corresponding Compute Engine region. On a get request, zone will - // always be present. - // - // A full URL, partial URI, or short name are valid. Examples: - // - // * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]` - // * `projects/[project_id]/zones/[zone]` - // * `us-central1-f` - ZoneUri string `protobuf:"bytes,1,opt,name=zone_uri,json=zoneUri" json:"zone_uri,omitempty"` - // Optional. The Google Compute Engine network to be used for machine - // communications. Cannot be specified with subnetwork_uri. If neither - // `network_uri` nor `subnetwork_uri` is specified, the "default" network of - // the project is used, if it exists. Cannot be a "Custom Subnet Network" (see - // [Using Subnetworks](/compute/docs/subnetworks) for more information). - // - // A full URL, partial URI, or short name are valid. Examples: - // - // * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default` - // * `projects/[project_id]/regions/global/default` - // * `default` - NetworkUri string `protobuf:"bytes,2,opt,name=network_uri,json=networkUri" json:"network_uri,omitempty"` - // Optional. The Google Compute Engine subnetwork to be used for machine - // communications. Cannot be specified with network_uri. - // - // A full URL, partial URI, or short name are valid. Examples: - // - // * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0` - // * `projects/[project_id]/regions/us-east1/sub0` - // * `sub0` - SubnetworkUri string `protobuf:"bytes,6,opt,name=subnetwork_uri,json=subnetworkUri" json:"subnetwork_uri,omitempty"` - // Optional. If true, all instances in the cluster will only have internal IP - // addresses. By default, clusters are not restricted to internal IP addresses, - // and will have ephemeral external IP addresses assigned to each instance. - // This `internal_ip_only` restriction can only be enabled for subnetwork - // enabled networks, and all off-cluster dependencies must be configured to be - // accessible without external IP addresses. - InternalIpOnly bool `protobuf:"varint,7,opt,name=internal_ip_only,json=internalIpOnly" json:"internal_ip_only,omitempty"` - // Optional. The service account of the instances. Defaults to the default - // Google Compute Engine service account. Custom service accounts need - // permissions equivalent to the folloing IAM roles: - // - // * roles/logging.logWriter - // * roles/storage.objectAdmin - // - // (see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts - // for more information). - // Example: `[account_id]@[project_id].iam.gserviceaccount.com` - ServiceAccount string `protobuf:"bytes,8,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // Optional. The URIs of service account scopes to be included in Google - // Compute Engine instances. The following base set of scopes is always - // included: - // - // * https://www.googleapis.com/auth/cloud.useraccounts.readonly - // * https://www.googleapis.com/auth/devstorage.read_write - // * https://www.googleapis.com/auth/logging.write - // - // If no scopes are specified, the following defaults are also provided: - // - // * https://www.googleapis.com/auth/bigquery - // * https://www.googleapis.com/auth/bigtable.admin.table - // * https://www.googleapis.com/auth/bigtable.data - // * https://www.googleapis.com/auth/devstorage.full_control - ServiceAccountScopes []string `protobuf:"bytes,3,rep,name=service_account_scopes,json=serviceAccountScopes" json:"service_account_scopes,omitempty"` - // The Google Compute Engine tags to add to all instances (see - // [Tagging instances](/compute/docs/label-or-tag-resources#tags)). - Tags []string `protobuf:"bytes,4,rep,name=tags" json:"tags,omitempty"` - // The Google Compute Engine metadata entries to add to all instances (see - // [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)). - Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *GceClusterConfig) Reset() { *m = GceClusterConfig{} } -func (m *GceClusterConfig) String() string { return proto.CompactTextString(m) } -func (*GceClusterConfig) ProtoMessage() {} -func (*GceClusterConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *GceClusterConfig) GetZoneUri() string { - if m != nil { - return m.ZoneUri - } - return "" -} - -func (m *GceClusterConfig) GetNetworkUri() string { - if m != nil { - return m.NetworkUri - } - return "" -} - -func (m *GceClusterConfig) GetSubnetworkUri() string { - if m != nil { - return m.SubnetworkUri - } - return "" -} - -func (m *GceClusterConfig) GetInternalIpOnly() bool { - if m != nil { - return m.InternalIpOnly - } - return false -} - -func (m *GceClusterConfig) GetServiceAccount() string { - if m != nil { - return m.ServiceAccount - } - return "" -} - -func (m *GceClusterConfig) GetServiceAccountScopes() []string { - if m != nil { - return m.ServiceAccountScopes - } - return nil -} - -func (m *GceClusterConfig) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -func (m *GceClusterConfig) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -// Optional. The config settings for Google Compute Engine resources in -// an instance group, such as a master or worker group. -type InstanceGroupConfig struct { - // Optional. The number of VM instances in the instance group. - // For master instance groups, must be set to 1. - NumInstances int32 `protobuf:"varint,1,opt,name=num_instances,json=numInstances" json:"num_instances,omitempty"` - // Optional. The list of instance names. Cloud Dataproc derives the names from - // `cluster_name`, `num_instances`, and the instance group if not set by user - // (recommended practice is to let Cloud Dataproc derive the name). - InstanceNames []string `protobuf:"bytes,2,rep,name=instance_names,json=instanceNames" json:"instance_names,omitempty"` - // Output-only. The Google Compute Engine image resource used for cluster - // instances. Inferred from `SoftwareConfig.image_version`. - ImageUri string `protobuf:"bytes,3,opt,name=image_uri,json=imageUri" json:"image_uri,omitempty"` - // Optional. The Google Compute Engine machine type used for cluster instances. - // - // A full URL, partial URI, or short name are valid. Examples: - // - // * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` - // * `projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` - // * `n1-standard-2` - MachineTypeUri string `protobuf:"bytes,4,opt,name=machine_type_uri,json=machineTypeUri" json:"machine_type_uri,omitempty"` - // Optional. Disk option config settings. - DiskConfig *DiskConfig `protobuf:"bytes,5,opt,name=disk_config,json=diskConfig" json:"disk_config,omitempty"` - // Optional. Specifies that this instance group contains preemptible instances. - IsPreemptible bool `protobuf:"varint,6,opt,name=is_preemptible,json=isPreemptible" json:"is_preemptible,omitempty"` - // Output-only. The config for Google Compute Engine Instance Group - // Manager that manages this group. - // This is only used for preemptible instance groups. - ManagedGroupConfig *ManagedGroupConfig `protobuf:"bytes,7,opt,name=managed_group_config,json=managedGroupConfig" json:"managed_group_config,omitempty"` - // Optional. The Google Compute Engine accelerator configuration for these - // instances. - // - // **Beta Feature**: This feature is still under development. It may be - // changed before final release. - Accelerators []*AcceleratorConfig `protobuf:"bytes,8,rep,name=accelerators" json:"accelerators,omitempty"` -} - -func (m *InstanceGroupConfig) Reset() { *m = InstanceGroupConfig{} } -func (m *InstanceGroupConfig) String() string { return proto.CompactTextString(m) } -func (*InstanceGroupConfig) ProtoMessage() {} -func (*InstanceGroupConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *InstanceGroupConfig) GetNumInstances() int32 { - if m != nil { - return m.NumInstances - } - return 0 -} - -func (m *InstanceGroupConfig) GetInstanceNames() []string { - if m != nil { - return m.InstanceNames - } - return nil -} - -func (m *InstanceGroupConfig) GetImageUri() string { - if m != nil { - return m.ImageUri - } - return "" -} - -func (m *InstanceGroupConfig) GetMachineTypeUri() string { - if m != nil { - return m.MachineTypeUri - } - return "" -} - -func (m *InstanceGroupConfig) GetDiskConfig() *DiskConfig { - if m != nil { - return m.DiskConfig - } - return nil -} - -func (m *InstanceGroupConfig) GetIsPreemptible() bool { - if m != nil { - return m.IsPreemptible - } - return false -} - -func (m *InstanceGroupConfig) GetManagedGroupConfig() *ManagedGroupConfig { - if m != nil { - return m.ManagedGroupConfig - } - return nil -} - -func (m *InstanceGroupConfig) GetAccelerators() []*AcceleratorConfig { - if m != nil { - return m.Accelerators - } - return nil -} - -// Specifies the resources used to actively manage an instance group. -type ManagedGroupConfig struct { - // Output-only. The name of the Instance Template used for the Managed - // Instance Group. - InstanceTemplateName string `protobuf:"bytes,1,opt,name=instance_template_name,json=instanceTemplateName" json:"instance_template_name,omitempty"` - // Output-only. The name of the Instance Group Manager for this group. - InstanceGroupManagerName string `protobuf:"bytes,2,opt,name=instance_group_manager_name,json=instanceGroupManagerName" json:"instance_group_manager_name,omitempty"` -} - -func (m *ManagedGroupConfig) Reset() { *m = ManagedGroupConfig{} } -func (m *ManagedGroupConfig) String() string { return proto.CompactTextString(m) } -func (*ManagedGroupConfig) ProtoMessage() {} -func (*ManagedGroupConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ManagedGroupConfig) GetInstanceTemplateName() string { - if m != nil { - return m.InstanceTemplateName - } - return "" -} - -func (m *ManagedGroupConfig) GetInstanceGroupManagerName() string { - if m != nil { - return m.InstanceGroupManagerName - } - return "" -} - -// Specifies the type and number of accelerator cards attached to the instances -// of an instance group (see [GPUs on Compute Engine](/compute/docs/gpus/)). -type AcceleratorConfig struct { - // Full URL, partial URI, or short name of the accelerator type resource to - // expose to this instance. See [Google Compute Engine AcceleratorTypes]( - // /compute/docs/reference/beta/acceleratorTypes) - // - // Examples - // * `https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` - // * `projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` - // * `nvidia-tesla-k80` - AcceleratorTypeUri string `protobuf:"bytes,1,opt,name=accelerator_type_uri,json=acceleratorTypeUri" json:"accelerator_type_uri,omitempty"` - // The number of the accelerator cards of this type exposed to this instance. - AcceleratorCount int32 `protobuf:"varint,2,opt,name=accelerator_count,json=acceleratorCount" json:"accelerator_count,omitempty"` -} - -func (m *AcceleratorConfig) Reset() { *m = AcceleratorConfig{} } -func (m *AcceleratorConfig) String() string { return proto.CompactTextString(m) } -func (*AcceleratorConfig) ProtoMessage() {} -func (*AcceleratorConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *AcceleratorConfig) GetAcceleratorTypeUri() string { - if m != nil { - return m.AcceleratorTypeUri - } - return "" -} - -func (m *AcceleratorConfig) GetAcceleratorCount() int32 { - if m != nil { - return m.AcceleratorCount - } - return 0 -} - -// Specifies the config of disk options for a group of VM instances. -type DiskConfig struct { - // Optional. Size in GB of the boot disk (default is 500GB). - BootDiskSizeGb int32 `protobuf:"varint,1,opt,name=boot_disk_size_gb,json=bootDiskSizeGb" json:"boot_disk_size_gb,omitempty"` - // Optional. Number of attached SSDs, from 0 to 4 (default is 0). - // If SSDs are not attached, the boot disk is used to store runtime logs and - // [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. - // If one or more SSDs are attached, this runtime bulk - // data is spread across them, and the boot disk contains only basic - // config and installed binaries. - NumLocalSsds int32 `protobuf:"varint,2,opt,name=num_local_ssds,json=numLocalSsds" json:"num_local_ssds,omitempty"` -} - -func (m *DiskConfig) Reset() { *m = DiskConfig{} } -func (m *DiskConfig) String() string { return proto.CompactTextString(m) } -func (*DiskConfig) ProtoMessage() {} -func (*DiskConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *DiskConfig) GetBootDiskSizeGb() int32 { - if m != nil { - return m.BootDiskSizeGb - } - return 0 -} - -func (m *DiskConfig) GetNumLocalSsds() int32 { - if m != nil { - return m.NumLocalSsds - } - return 0 -} - -// Specifies an executable to run on a fully configured node and a -// timeout period for executable completion. -type NodeInitializationAction struct { - // Required. Google Cloud Storage URI of executable file. - ExecutableFile string `protobuf:"bytes,1,opt,name=executable_file,json=executableFile" json:"executable_file,omitempty"` - // Optional. Amount of time executable has to complete. Default is - // 10 minutes. Cluster creation fails with an explanatory error message (the - // name of the executable that caused the error and the exceeded timeout - // period) if the executable is not completed at end of the timeout period. - ExecutionTimeout *google_protobuf4.Duration `protobuf:"bytes,2,opt,name=execution_timeout,json=executionTimeout" json:"execution_timeout,omitempty"` -} - -func (m *NodeInitializationAction) Reset() { *m = NodeInitializationAction{} } -func (m *NodeInitializationAction) String() string { return proto.CompactTextString(m) } -func (*NodeInitializationAction) ProtoMessage() {} -func (*NodeInitializationAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *NodeInitializationAction) GetExecutableFile() string { - if m != nil { - return m.ExecutableFile - } - return "" -} - -func (m *NodeInitializationAction) GetExecutionTimeout() *google_protobuf4.Duration { - if m != nil { - return m.ExecutionTimeout - } - return nil -} - -// The status of a cluster and its instances. -type ClusterStatus struct { - // Output-only. The cluster's state. - State ClusterStatus_State `protobuf:"varint,1,opt,name=state,enum=google.cloud.dataproc.v1.ClusterStatus_State" json:"state,omitempty"` - // Output-only. Optional details of cluster's state. - Detail string `protobuf:"bytes,2,opt,name=detail" json:"detail,omitempty"` - // Output-only. Time when this state was entered. - StateStartTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=state_start_time,json=stateStartTime" json:"state_start_time,omitempty"` - // Output-only. Additional state information that includes - // status reported by the agent. - Substate ClusterStatus_Substate `protobuf:"varint,4,opt,name=substate,enum=google.cloud.dataproc.v1.ClusterStatus_Substate" json:"substate,omitempty"` -} - -func (m *ClusterStatus) Reset() { *m = ClusterStatus{} } -func (m *ClusterStatus) String() string { return proto.CompactTextString(m) } -func (*ClusterStatus) ProtoMessage() {} -func (*ClusterStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ClusterStatus) GetState() ClusterStatus_State { - if m != nil { - return m.State - } - return ClusterStatus_UNKNOWN -} - -func (m *ClusterStatus) GetDetail() string { - if m != nil { - return m.Detail - } - return "" -} - -func (m *ClusterStatus) GetStateStartTime() *google_protobuf3.Timestamp { - if m != nil { - return m.StateStartTime - } - return nil -} - -func (m *ClusterStatus) GetSubstate() ClusterStatus_Substate { - if m != nil { - return m.Substate - } - return ClusterStatus_UNSPECIFIED -} - -// Specifies the selection and config of software inside the cluster. -type SoftwareConfig struct { - // Optional. The version of software inside the cluster. It must match the - // regular expression `[0-9]+\.[0-9]+`. If unspecified, it defaults to the - // latest version (see [Cloud Dataproc Versioning](/dataproc/versioning)). - ImageVersion string `protobuf:"bytes,1,opt,name=image_version,json=imageVersion" json:"image_version,omitempty"` - // Optional. The properties to set on daemon config files. - // - // Property keys are specified in `prefix:property` format, such as - // `core:fs.defaultFS`. The following are supported prefixes - // and their mappings: - // - // * capacity-scheduler: `capacity-scheduler.xml` - // * core: `core-site.xml` - // * distcp: `distcp-default.xml` - // * hdfs: `hdfs-site.xml` - // * hive: `hive-site.xml` - // * mapred: `mapred-site.xml` - // * pig: `pig.properties` - // * spark: `spark-defaults.conf` - // * yarn: `yarn-site.xml` - // - // For more information, see - // [Cluster properties](/dataproc/docs/concepts/cluster-properties). - Properties map[string]string `protobuf:"bytes,2,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *SoftwareConfig) Reset() { *m = SoftwareConfig{} } -func (m *SoftwareConfig) String() string { return proto.CompactTextString(m) } -func (*SoftwareConfig) ProtoMessage() {} -func (*SoftwareConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *SoftwareConfig) GetImageVersion() string { - if m != nil { - return m.ImageVersion - } - return "" -} - -func (m *SoftwareConfig) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -// Contains cluster daemon metrics, such as HDFS and YARN stats. -// -// **Beta Feature**: This report is available for testing purposes only. It may -// be changed before final release. -type ClusterMetrics struct { - // The HDFS metrics. - HdfsMetrics map[string]int64 `protobuf:"bytes,1,rep,name=hdfs_metrics,json=hdfsMetrics" json:"hdfs_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // The YARN metrics. - YarnMetrics map[string]int64 `protobuf:"bytes,2,rep,name=yarn_metrics,json=yarnMetrics" json:"yarn_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` -} - -func (m *ClusterMetrics) Reset() { *m = ClusterMetrics{} } -func (m *ClusterMetrics) String() string { return proto.CompactTextString(m) } -func (*ClusterMetrics) ProtoMessage() {} -func (*ClusterMetrics) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *ClusterMetrics) GetHdfsMetrics() map[string]int64 { - if m != nil { - return m.HdfsMetrics - } - return nil -} - -func (m *ClusterMetrics) GetYarnMetrics() map[string]int64 { - if m != nil { - return m.YarnMetrics - } - return nil -} - -// A request to create a cluster. -type CreateClusterRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The cluster to create. - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster" json:"cluster,omitempty"` -} - -func (m *CreateClusterRequest) Reset() { *m = CreateClusterRequest{} } -func (m *CreateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*CreateClusterRequest) ProtoMessage() {} -func (*CreateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *CreateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *CreateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -// A request to update a cluster. -type UpdateClusterRequest struct { - // Required. The ID of the Google Cloud Platform project the - // cluster belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,5,opt,name=region" json:"region,omitempty"` - // Required. The cluster name. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Required. The changes to the cluster. - Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"` - // Required. Specifies the path, relative to `Cluster`, of - // the field to update. For example, to change the number of workers - // in a cluster to 5, the `update_mask` parameter would be - // specified as `config.worker_config.num_instances`, - // and the `PATCH` request body would specify the new value, as follows: - // - // { - // "config":{ - // "workerConfig":{ - // "numInstances":"5" - // } - // } - // } - // Similarly, to change the number of preemptible workers in a cluster to 5, - // the `update_mask` parameter would be - // `config.secondary_worker_config.num_instances`, and the `PATCH` request - // body would be set as follows: - // - // { - // "config":{ - // "secondaryWorkerConfig":{ - // "numInstances":"5" - // } - // } - // } - // <strong>Note:</strong> Currently, only the following fields can be updated: - // - // <table> - // <tbody> - // <tr> - // <td><strong>Mask</strong></td> - // <td><strong>Purpose</strong></td> - // </tr> - // <tr> - // <td><strong><em>labels</em></strong></td> - // <td>Update labels</td> - // </tr> - // <tr> - // <td><strong><em>config.worker_config.num_instances</em></strong></td> - // <td>Resize primary worker group</td> - // </tr> - // <tr> - // <td><strong><em>config.secondary_worker_config.num_instances</em></strong></td> - // <td>Resize secondary worker group</td> - // </tr> - // </tbody> - // </table> - UpdateMask *google_protobuf5.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateClusterRequest) Reset() { *m = UpdateClusterRequest{} } -func (m *UpdateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateClusterRequest) ProtoMessage() {} -func (*UpdateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *UpdateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *UpdateClusterRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *UpdateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -func (m *UpdateClusterRequest) GetUpdateMask() *google_protobuf5.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// A request to delete a cluster. -type DeleteClusterRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The cluster name. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` -} - -func (m *DeleteClusterRequest) Reset() { *m = DeleteClusterRequest{} } -func (m *DeleteClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteClusterRequest) ProtoMessage() {} -func (*DeleteClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *DeleteClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *DeleteClusterRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -// Request to get the resource representation for a cluster in a project. -type GetClusterRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The cluster name. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` -} - -func (m *GetClusterRequest) Reset() { *m = GetClusterRequest{} } -func (m *GetClusterRequest) String() string { return proto.CompactTextString(m) } -func (*GetClusterRequest) ProtoMessage() {} -func (*GetClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *GetClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *GetClusterRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -// A request to list the clusters in a project. -type ListClustersRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,4,opt,name=region" json:"region,omitempty"` - // Optional. A filter constraining the clusters to list. Filters are - // case-sensitive and have the following syntax: - // - // field = value [AND [field = value]] ... - // - // where **field** is one of `status.state`, `clusterName`, or `labels.[KEY]`, - // and `[KEY]` is a label key. **value** can be `*` to match all values. - // `status.state` can be one of the following: `ACTIVE`, `INACTIVE`, - // `CREATING`, `RUNNING`, `ERROR`, `DELETING`, or `UPDATING`. `ACTIVE` - // contains the `CREATING`, `UPDATING`, and `RUNNING` states. `INACTIVE` - // contains the `DELETING` and `ERROR` states. - // `clusterName` is the name of the cluster provided at creation time. - // Only the logical `AND` operator is supported; space-separated items are - // treated as having an implicit `AND` operator. - // - // Example filter: - // - // status.state = ACTIVE AND clusterName = mycluster - // AND labels.env = staging AND labels.starred = * - Filter string `protobuf:"bytes,5,opt,name=filter" json:"filter,omitempty"` - // Optional. The standard List page size. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The standard List page token. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListClustersRequest) Reset() { *m = ListClustersRequest{} } -func (m *ListClustersRequest) String() string { return proto.CompactTextString(m) } -func (*ListClustersRequest) ProtoMessage() {} -func (*ListClustersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *ListClustersRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListClustersRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *ListClustersRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListClustersRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListClustersRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The list of all clusters in a project. -type ListClustersResponse struct { - // Output-only. The clusters in the project. - Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters" json:"clusters,omitempty"` - // Output-only. This token is included in the response if there are more - // results to fetch. To fetch additional results, provide this value as the - // `page_token` in a subsequent `ListClustersRequest`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListClustersResponse) Reset() { *m = ListClustersResponse{} } -func (m *ListClustersResponse) String() string { return proto.CompactTextString(m) } -func (*ListClustersResponse) ProtoMessage() {} -func (*ListClustersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *ListClustersResponse) GetClusters() []*Cluster { - if m != nil { - return m.Clusters - } - return nil -} - -func (m *ListClustersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to collect cluster diagnostic information. -type DiagnoseClusterRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The cluster name. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` -} - -func (m *DiagnoseClusterRequest) Reset() { *m = DiagnoseClusterRequest{} } -func (m *DiagnoseClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DiagnoseClusterRequest) ProtoMessage() {} -func (*DiagnoseClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *DiagnoseClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DiagnoseClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *DiagnoseClusterRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -// The location of diagnostic output. -type DiagnoseClusterResults struct { - // Output-only. The Google Cloud Storage URI of the diagnostic output. - // The output report is a plain text file with a summary of collected - // diagnostics. - OutputUri string `protobuf:"bytes,1,opt,name=output_uri,json=outputUri" json:"output_uri,omitempty"` -} - -func (m *DiagnoseClusterResults) Reset() { *m = DiagnoseClusterResults{} } -func (m *DiagnoseClusterResults) String() string { return proto.CompactTextString(m) } -func (*DiagnoseClusterResults) ProtoMessage() {} -func (*DiagnoseClusterResults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *DiagnoseClusterResults) GetOutputUri() string { - if m != nil { - return m.OutputUri - } - return "" -} - -func init() { - proto.RegisterType((*Cluster)(nil), "google.cloud.dataproc.v1.Cluster") - proto.RegisterType((*ClusterConfig)(nil), "google.cloud.dataproc.v1.ClusterConfig") - proto.RegisterType((*GceClusterConfig)(nil), "google.cloud.dataproc.v1.GceClusterConfig") - proto.RegisterType((*InstanceGroupConfig)(nil), "google.cloud.dataproc.v1.InstanceGroupConfig") - proto.RegisterType((*ManagedGroupConfig)(nil), "google.cloud.dataproc.v1.ManagedGroupConfig") - proto.RegisterType((*AcceleratorConfig)(nil), "google.cloud.dataproc.v1.AcceleratorConfig") - proto.RegisterType((*DiskConfig)(nil), "google.cloud.dataproc.v1.DiskConfig") - proto.RegisterType((*NodeInitializationAction)(nil), "google.cloud.dataproc.v1.NodeInitializationAction") - proto.RegisterType((*ClusterStatus)(nil), "google.cloud.dataproc.v1.ClusterStatus") - proto.RegisterType((*SoftwareConfig)(nil), "google.cloud.dataproc.v1.SoftwareConfig") - proto.RegisterType((*ClusterMetrics)(nil), "google.cloud.dataproc.v1.ClusterMetrics") - proto.RegisterType((*CreateClusterRequest)(nil), "google.cloud.dataproc.v1.CreateClusterRequest") - proto.RegisterType((*UpdateClusterRequest)(nil), "google.cloud.dataproc.v1.UpdateClusterRequest") - proto.RegisterType((*DeleteClusterRequest)(nil), "google.cloud.dataproc.v1.DeleteClusterRequest") - proto.RegisterType((*GetClusterRequest)(nil), "google.cloud.dataproc.v1.GetClusterRequest") - proto.RegisterType((*ListClustersRequest)(nil), "google.cloud.dataproc.v1.ListClustersRequest") - proto.RegisterType((*ListClustersResponse)(nil), "google.cloud.dataproc.v1.ListClustersResponse") - proto.RegisterType((*DiagnoseClusterRequest)(nil), "google.cloud.dataproc.v1.DiagnoseClusterRequest") - proto.RegisterType((*DiagnoseClusterResults)(nil), "google.cloud.dataproc.v1.DiagnoseClusterResults") - proto.RegisterEnum("google.cloud.dataproc.v1.ClusterStatus_State", ClusterStatus_State_name, ClusterStatus_State_value) - proto.RegisterEnum("google.cloud.dataproc.v1.ClusterStatus_Substate", ClusterStatus_Substate_name, ClusterStatus_Substate_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ClusterController service - -type ClusterControllerClient interface { - // Creates a cluster in a project. - CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Updates a cluster in a project. - UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes a cluster in a project. - DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Gets the resource representation for a cluster in a project. - GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) - // Lists all regions/{region}/clusters in a project. - ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) - // Gets cluster diagnostic information. - // After the operation completes, the Operation.response field - // contains `DiagnoseClusterOutputLocation`. - DiagnoseCluster(ctx context.Context, in *DiagnoseClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type clusterControllerClient struct { - cc *grpc.ClientConn -} - -func NewClusterControllerClient(cc *grpc.ClientConn) ClusterControllerClient { - return &clusterControllerClient{cc} -} - -func (c *clusterControllerClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.ClusterController/CreateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.ClusterController/UpdateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.ClusterController/DeleteCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.ClusterController/GetCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) { - out := new(ListClustersResponse) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.ClusterController/ListClusters", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) DiagnoseCluster(ctx context.Context, in *DiagnoseClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.ClusterController/DiagnoseCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ClusterController service - -type ClusterControllerServer interface { - // Creates a cluster in a project. - CreateCluster(context.Context, *CreateClusterRequest) (*google_longrunning.Operation, error) - // Updates a cluster in a project. - UpdateCluster(context.Context, *UpdateClusterRequest) (*google_longrunning.Operation, error) - // Deletes a cluster in a project. - DeleteCluster(context.Context, *DeleteClusterRequest) (*google_longrunning.Operation, error) - // Gets the resource representation for a cluster in a project. - GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) - // Lists all regions/{region}/clusters in a project. - ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) - // Gets cluster diagnostic information. - // After the operation completes, the Operation.response field - // contains `DiagnoseClusterOutputLocation`. - DiagnoseCluster(context.Context, *DiagnoseClusterRequest) (*google_longrunning.Operation, error) -} - -func RegisterClusterControllerServer(s *grpc.Server, srv ClusterControllerServer) { - s.RegisterService(&_ClusterController_serviceDesc, srv) -} - -func _ClusterController_CreateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).CreateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.ClusterController/CreateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).CreateCluster(ctx, req.(*CreateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).UpdateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.ClusterController/UpdateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).UpdateCluster(ctx, req.(*UpdateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_DeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).DeleteCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.ClusterController/DeleteCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).DeleteCluster(ctx, req.(*DeleteClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_GetCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).GetCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.ClusterController/GetCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).GetCluster(ctx, req.(*GetClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_ListClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClustersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).ListClusters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.ClusterController/ListClusters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).ListClusters(ctx, req.(*ListClustersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_DiagnoseCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DiagnoseClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).DiagnoseCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.ClusterController/DiagnoseCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).DiagnoseCluster(ctx, req.(*DiagnoseClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ClusterController_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dataproc.v1.ClusterController", - HandlerType: (*ClusterControllerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateCluster", - Handler: _ClusterController_CreateCluster_Handler, - }, - { - MethodName: "UpdateCluster", - Handler: _ClusterController_UpdateCluster_Handler, - }, - { - MethodName: "DeleteCluster", - Handler: _ClusterController_DeleteCluster_Handler, - }, - { - MethodName: "GetCluster", - Handler: _ClusterController_GetCluster_Handler, - }, - { - MethodName: "ListClusters", - Handler: _ClusterController_ListClusters_Handler, - }, - { - MethodName: "DiagnoseCluster", - Handler: _ClusterController_DiagnoseCluster_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dataproc/v1/clusters.proto", -} - -func init() { proto.RegisterFile("google/cloud/dataproc/v1/clusters.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1944 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x73, 0x23, 0x47, - 0x15, 0xcf, 0x58, 0xfe, 0x90, 0x9f, 0x3e, 0x2c, 0x77, 0x1c, 0xa3, 0x28, 0x09, 0x71, 0x26, 0x81, - 0x75, 0x36, 0x20, 0xed, 0x3a, 0x50, 0x24, 0x6b, 0x12, 0xb0, 0x2d, 0xad, 0xd7, 0xc4, 0x96, 0xcd, - 0x48, 0xda, 0x24, 0x14, 0x30, 0xd5, 0x9a, 0x69, 0x6b, 0x1b, 0x8f, 0x66, 0x26, 0xd3, 0x3d, 0x4e, - 0xbc, 0x5b, 0x7b, 0xe1, 0x40, 0x15, 0x70, 0xa4, 0x8a, 0x33, 0x07, 0xa8, 0xa2, 0x72, 0x84, 0x1b, - 0xff, 0x00, 0x17, 0x8a, 0x0b, 0x47, 0xae, 0x9c, 0xf8, 0x2b, 0xa8, 0xfe, 0x18, 0x69, 0xc6, 0x5f, - 0x92, 0x97, 0xad, 0x9c, 0x34, 0xf3, 0xfa, 0xf7, 0xde, 0xfb, 0xf5, 0x7b, 0xaf, 0x5f, 0xbf, 0x11, - 0xdc, 0x1a, 0x04, 0xc1, 0xc0, 0x23, 0x0d, 0xc7, 0x0b, 0x62, 0xb7, 0xe1, 0x62, 0x8e, 0xc3, 0x28, - 0x70, 0x1a, 0xa7, 0x77, 0x1b, 0x8e, 0x17, 0x33, 0x4e, 0x22, 0x56, 0x0f, 0xa3, 0x80, 0x07, 0xa8, - 0xaa, 0x80, 0x75, 0x09, 0xac, 0x27, 0xc0, 0xfa, 0xe9, 0xdd, 0xda, 0xab, 0xda, 0x04, 0x0e, 0x69, - 0x03, 0xfb, 0x7e, 0xc0, 0x31, 0xa7, 0x81, 0xaf, 0xf5, 0x6a, 0x6f, 0x5f, 0xe9, 0x20, 0x08, 0x49, - 0x94, 0x81, 0xbe, 0xa9, 0xa1, 0x5e, 0xe0, 0x0f, 0xa2, 0xd8, 0xf7, 0xa9, 0x3f, 0xb8, 0x08, 0xfa, - 0xba, 0x06, 0xc9, 0xb7, 0x7e, 0x7c, 0xdc, 0x70, 0x63, 0x05, 0xd0, 0xeb, 0x6b, 0xe7, 0xd7, 0x8f, - 0x29, 0xf1, 0x5c, 0x7b, 0x88, 0xd9, 0x89, 0x46, 0xbc, 0x7e, 0x1e, 0xc1, 0xe9, 0x90, 0x30, 0x8e, - 0x87, 0xa1, 0x02, 0x98, 0xbf, 0x9a, 0x85, 0x85, 0x1d, 0xb5, 0x7b, 0xf4, 0x1a, 0x40, 0x18, 0x05, - 0xbf, 0x20, 0x0e, 0xb7, 0xa9, 0x5b, 0x35, 0xd6, 0x8c, 0xf5, 0x45, 0x6b, 0x51, 0x4b, 0xf6, 0x5c, - 0xf4, 0x06, 0x14, 0x75, 0x9c, 0x6c, 0x1f, 0x0f, 0x49, 0x75, 0x46, 0x02, 0x0a, 0x5a, 0xd6, 0xc6, - 0x43, 0x82, 0x7e, 0x00, 0xf3, 0x4e, 0xe0, 0x1f, 0xd3, 0x41, 0x35, 0xb7, 0x66, 0xac, 0x17, 0x36, - 0x6e, 0xd5, 0xaf, 0x8a, 0x64, 0x5d, 0x3b, 0xdd, 0x91, 0x70, 0x4b, 0xab, 0xa1, 0x16, 0xcc, 0x7b, - 0xb8, 0x4f, 0x3c, 0x56, 0xcd, 0xaf, 0xe5, 0xd6, 0x0b, 0x1b, 0xdf, 0x9e, 0x68, 0xa0, 0xbe, 0x2f, - 0xf1, 0x2d, 0x9f, 0x47, 0x67, 0x96, 0x56, 0x16, 0x3c, 0x18, 0xc7, 0x3c, 0x66, 0xd5, 0xd9, 0x29, - 0x79, 0x74, 0x24, 0xdc, 0xd2, 0x6a, 0xa8, 0x0d, 0x65, 0xf5, 0x64, 0x3f, 0xa2, 0x8c, 0x07, 0xd1, - 0x59, 0x75, 0x41, 0xf2, 0x99, 0xda, 0x50, 0x49, 0xa9, 0x3f, 0x50, 0xda, 0xe9, 0xd8, 0xc5, 0x31, - 0x75, 0xab, 0xf3, 0x99, 0xd8, 0xf5, 0x62, 0xea, 0xa2, 0x6d, 0x58, 0x18, 0x12, 0x1e, 0x51, 0x87, - 0x55, 0x17, 0x25, 0xe9, 0xf5, 0x89, 0xbe, 0x0e, 0x14, 0xde, 0x4a, 0x14, 0x6b, 0xef, 0x43, 0x21, - 0x15, 0x0e, 0x54, 0x81, 0xdc, 0x09, 0x39, 0xd3, 0x99, 0x14, 0x8f, 0x68, 0x05, 0xe6, 0x4e, 0xb1, - 0x17, 0x27, 0xc9, 0x53, 0x2f, 0xf7, 0x66, 0xde, 0x33, 0xcc, 0x7f, 0xcf, 0x42, 0x29, 0x93, 0x13, - 0xf4, 0x26, 0x94, 0x54, 0x56, 0xec, 0x7e, 0xec, 0x9c, 0x10, 0xae, 0xed, 0x14, 0x95, 0x70, 0x5b, - 0xca, 0xd0, 0x27, 0x80, 0x06, 0x0e, 0xb1, 0x93, 0xcd, 0xe9, 0xec, 0xe7, 0xe5, 0x06, 0x6e, 0x5f, - 0xbd, 0x81, 0x5d, 0x87, 0x64, 0x0b, 0xa0, 0x32, 0x38, 0x27, 0x41, 0x16, 0x94, 0x86, 0x38, 0x6d, - 0x54, 0x45, 0xe5, 0x9a, 0x8a, 0xd8, 0xf3, 0x19, 0xc7, 0xbe, 0x43, 0x76, 0xa3, 0x20, 0x0e, 0xb5, - 0xdd, 0xa2, 0xb2, 0x31, 0xb6, 0xf9, 0x79, 0x10, 0x9d, 0x8c, 0x6d, 0xc2, 0x33, 0xd9, 0x54, 0x36, - 0xb4, 0x4d, 0x02, 0x5f, 0x63, 0xc4, 0x09, 0x7c, 0x17, 0x47, 0x67, 0x76, 0xd6, 0x7a, 0xf1, 0x59, - 0xac, 0xbf, 0x34, 0xb2, 0xf6, 0x71, 0xda, 0xcd, 0x8f, 0x61, 0x89, 0x05, 0xc7, 0xfc, 0x73, 0x1c, - 0x91, 0xc4, 0x7c, 0x69, 0x52, 0x99, 0x74, 0xb4, 0x82, 0xb6, 0x5c, 0x66, 0x99, 0x77, 0x44, 0x61, - 0x95, 0xfa, 0x94, 0x53, 0xec, 0xd1, 0xc7, 0xb2, 0xad, 0xd8, 0xd8, 0x91, 0xed, 0xa7, 0x5a, 0x90, - 0xc5, 0xbe, 0x71, 0xb5, 0xe5, 0x76, 0xe0, 0x92, 0xbd, 0x8c, 0xee, 0x96, 0x54, 0xb5, 0x5e, 0xa2, - 0x97, 0x48, 0x99, 0xf9, 0xa7, 0x1c, 0x54, 0xce, 0xe7, 0x1c, 0xbd, 0x0c, 0xf9, 0xc7, 0x81, 0x4f, - 0xec, 0x38, 0xa2, 0xba, 0xb6, 0x16, 0xc4, 0x7b, 0x2f, 0xa2, 0xe8, 0x75, 0x28, 0xf8, 0x84, 0x8b, - 0x68, 0xca, 0x55, 0x55, 0xad, 0xa0, 0x45, 0x02, 0xf0, 0x0d, 0x28, 0xb3, 0xb8, 0x9f, 0xc6, 0xa8, - 0x23, 0x55, 0x1a, 0x4b, 0x05, 0x6c, 0x1d, 0x2a, 0xd4, 0xe7, 0x24, 0xf2, 0xb1, 0x67, 0xd3, 0xd0, - 0x0e, 0x7c, 0x4f, 0x9c, 0x64, 0x63, 0x3d, 0x6f, 0x95, 0x13, 0xf9, 0x5e, 0x78, 0xe8, 0x7b, 0x67, - 0xe8, 0x16, 0x2c, 0x31, 0x12, 0x9d, 0x52, 0x87, 0xd8, 0xd8, 0x71, 0x82, 0xd8, 0xe7, 0xb2, 0x8a, - 0x17, 0xad, 0xb2, 0x16, 0x6f, 0x29, 0x29, 0xfa, 0x0e, 0xac, 0x9e, 0x03, 0xda, 0xcc, 0x09, 0x42, - 0xc2, 0xaa, 0xb9, 0xb5, 0xdc, 0xfa, 0xa2, 0xb5, 0x92, 0xc5, 0x77, 0xe4, 0x1a, 0x42, 0x30, 0xcb, - 0xf1, 0x40, 0xf4, 0x23, 0x81, 0x91, 0xcf, 0xa8, 0x0b, 0xf9, 0x21, 0xe1, 0x58, 0xc4, 0xb5, 0x3a, - 0x27, 0x23, 0xfe, 0xde, 0xf4, 0x27, 0xa6, 0x7e, 0xa0, 0x55, 0x55, 0xe7, 0x1b, 0x59, 0xaa, 0x6d, - 0x42, 0x29, 0xb3, 0x74, 0xa3, 0x2e, 0xf0, 0xf7, 0x1c, 0xbc, 0x78, 0x49, 0x51, 0x8a, 0x5e, 0xe0, - 0xc7, 0x43, 0x9b, 0xea, 0x25, 0x26, 0xad, 0xcd, 0x59, 0x45, 0x3f, 0x1e, 0x26, 0x70, 0x26, 0x72, - 0x92, 0x00, 0xe4, 0x0d, 0xc1, 0xaa, 0x33, 0x72, 0xb7, 0xa5, 0x44, 0x2a, 0xee, 0x08, 0x86, 0x5e, - 0x81, 0x45, 0x3a, 0xc4, 0x03, 0x95, 0xf7, 0x9c, 0x64, 0x90, 0x97, 0x02, 0x9d, 0xb0, 0x21, 0x76, - 0x1e, 0x51, 0x9f, 0xd8, 0xfc, 0x2c, 0x54, 0x98, 0x59, 0x95, 0x07, 0x2d, 0xef, 0x9e, 0x85, 0x12, - 0xd9, 0x82, 0x82, 0x4b, 0xd9, 0x49, 0x72, 0x18, 0xe6, 0xe4, 0x61, 0x78, 0xeb, 0xea, 0x00, 0x36, - 0x29, 0x3b, 0xd1, 0x07, 0x01, 0xdc, 0xd1, 0xb3, 0x24, 0xcd, 0xec, 0x30, 0x22, 0x64, 0x18, 0x72, - 0xda, 0xf7, 0x88, 0x2c, 0xa4, 0xbc, 0x55, 0xa2, 0xec, 0x68, 0x2c, 0x44, 0x3f, 0x87, 0x95, 0x21, - 0xf6, 0xf1, 0x80, 0xb8, 0xf6, 0x40, 0xc4, 0x25, 0x71, 0xbb, 0x20, 0xdd, 0x7e, 0xeb, 0x6a, 0xb7, - 0x07, 0x4a, 0x2b, 0x7d, 0xc2, 0xd1, 0xf0, 0x82, 0x0c, 0x1d, 0x42, 0x11, 0x3b, 0x0e, 0xf1, 0xc4, - 0x04, 0x10, 0x44, 0xc9, 0xf5, 0xf7, 0xce, 0xd5, 0x76, 0xb7, 0xc6, 0xe8, 0xa4, 0x2d, 0xa5, 0x0d, - 0x98, 0xbf, 0x36, 0x00, 0x5d, 0xf4, 0x2d, 0xaa, 0x77, 0x94, 0x23, 0x4e, 0x86, 0xa1, 0x87, 0xb9, - 0x4a, 0x96, 0xae, 0x8f, 0x95, 0x64, 0xb5, 0xab, 0x17, 0xe5, 0xbd, 0xfe, 0x01, 0xbc, 0x32, 0xd2, - 0x52, 0xdb, 0x57, 0x5b, 0xc8, 0x4c, 0x02, 0x55, 0x9a, 0x2e, 0x1c, 0xe5, 0x5b, 0x8e, 0x05, 0x66, - 0x04, 0xcb, 0x17, 0xe8, 0xa2, 0x3b, 0xb0, 0x92, 0x22, 0x3c, 0xce, 0xb6, 0xe2, 0x81, 0x52, 0x6b, - 0x49, 0xc6, 0xdf, 0x81, 0xe5, 0xb4, 0x86, 0x3a, 0xa4, 0x33, 0xb2, 0x10, 0x2b, 0x38, 0x6d, 0x3f, - 0xf6, 0xb9, 0xf9, 0x33, 0x80, 0x71, 0xc6, 0xd1, 0xdb, 0xb0, 0xdc, 0x0f, 0x02, 0x6e, 0xcb, 0x8a, - 0x61, 0xf4, 0x31, 0xb1, 0x07, 0x7d, 0x5d, 0xc3, 0x65, 0xb1, 0x20, 0xa0, 0x1d, 0xfa, 0x98, 0xec, - 0xf6, 0xd1, 0x5b, 0x50, 0x16, 0xa5, 0xee, 0x05, 0x0e, 0xf6, 0x6c, 0xc6, 0x5c, 0xa6, 0x5d, 0x88, - 0x5a, 0xdf, 0x17, 0xc2, 0x0e, 0x73, 0x99, 0xf9, 0x5b, 0x03, 0xaa, 0x57, 0x35, 0x41, 0xd1, 0x4b, - 0xc8, 0x17, 0xc4, 0x89, 0x39, 0xee, 0x7b, 0xc4, 0x3e, 0xa6, 0x5e, 0x12, 0xdd, 0xf2, 0x58, 0x7c, - 0x9f, 0x7a, 0x04, 0xdd, 0x87, 0x65, 0x25, 0x11, 0xcd, 0x57, 0x8c, 0x66, 0x41, 0xac, 0x76, 0x54, - 0xd8, 0x78, 0x39, 0x49, 0x7d, 0x32, 0xba, 0xd5, 0x9b, 0x7a, 0xf8, 0xb3, 0x2a, 0x23, 0x9d, 0xae, - 0x52, 0x31, 0x7f, 0x9f, 0x1b, 0x5d, 0xde, 0x6a, 0xfe, 0x40, 0x3b, 0x30, 0x27, 0x26, 0x10, 0xe5, - 0xb8, 0x3c, 0xc5, 0x1c, 0xa5, 0xf4, 0xea, 0xe2, 0x87, 0x58, 0x4a, 0x17, 0xad, 0xc2, 0xbc, 0x4b, - 0x38, 0xa6, 0x9e, 0xce, 0xb0, 0x7e, 0x43, 0x4d, 0xa8, 0x48, 0x80, 0xcd, 0x38, 0x8e, 0xb8, 0x24, - 0xae, 0x07, 0xbe, 0xda, 0x05, 0xd6, 0xdd, 0x64, 0xe0, 0xb4, 0xe4, 0x44, 0x45, 0x3a, 0x42, 0x45, - 0x08, 0xd1, 0x3e, 0xe4, 0x59, 0xdc, 0x57, 0x2c, 0x67, 0x25, 0xcb, 0x3b, 0x53, 0xb3, 0xd4, 0x7a, - 0xd6, 0xc8, 0x82, 0xf9, 0x10, 0xe6, 0x24, 0x77, 0x54, 0x80, 0x85, 0x5e, 0xfb, 0xa3, 0xf6, 0xe1, - 0xc7, 0xed, 0xca, 0x0b, 0xa8, 0x08, 0xf9, 0x1d, 0xab, 0xb5, 0xd5, 0xdd, 0x6b, 0xef, 0x56, 0x0c, - 0xb1, 0x64, 0xf5, 0xda, 0x6d, 0xf1, 0x32, 0x83, 0x16, 0x61, 0xae, 0x65, 0x59, 0x87, 0x56, 0x25, - 0x27, 0x50, 0xcd, 0xd6, 0x7e, 0x4b, 0xa2, 0x66, 0xc5, 0x5b, 0xef, 0xa8, 0xa9, 0x74, 0xe6, 0xcc, - 0xef, 0x43, 0x3e, 0xf1, 0x86, 0x96, 0xa0, 0xd0, 0x6b, 0x77, 0x8e, 0x5a, 0x3b, 0x7b, 0xf7, 0xf7, - 0x5a, 0xcd, 0xca, 0x0b, 0xa8, 0x04, 0x8b, 0xbd, 0xf6, 0x83, 0xd6, 0xd6, 0x7e, 0xf7, 0xc1, 0xa7, - 0x15, 0x03, 0x55, 0xa0, 0xd8, 0xe9, 0x6e, 0xed, 0xb7, 0xec, 0x4e, 0x77, 0xab, 0xdb, 0xeb, 0x54, - 0x66, 0xcc, 0x7f, 0x1a, 0x50, 0xce, 0xde, 0xc2, 0xa2, 0x95, 0xaa, 0xf6, 0x77, 0x4a, 0x22, 0x46, - 0x03, 0x3f, 0x19, 0xab, 0xa4, 0xf0, 0xa1, 0x92, 0xa1, 0x4f, 0xe4, 0x28, 0x1e, 0x92, 0x88, 0x53, - 0xdd, 0x46, 0xaf, 0xbd, 0x1c, 0xb2, 0x2e, 0xea, 0x47, 0x23, 0x55, 0x75, 0x39, 0xa4, 0x6c, 0xd5, - 0x3e, 0x80, 0xa5, 0x73, 0xcb, 0x37, 0xba, 0x20, 0xfe, 0x31, 0x03, 0xe5, 0xec, 0xf4, 0x89, 0x7e, - 0x0a, 0xc5, 0x47, 0xee, 0x31, 0xb3, 0x93, 0xe9, 0xd5, 0x90, 0x6c, 0xdf, 0x9f, 0x76, 0x7a, 0xad, - 0x3f, 0x70, 0x8f, 0x99, 0x7e, 0x56, 0x74, 0x0b, 0x8f, 0xc6, 0x12, 0x61, 0xfd, 0x0c, 0x47, 0xfe, - 0xc8, 0xfa, 0xcc, 0x0d, 0xad, 0x7f, 0x8a, 0x23, 0x3f, 0x6b, 0xfd, 0x6c, 0x2c, 0xa9, 0x7d, 0x08, - 0x95, 0xf3, 0xee, 0x27, 0x85, 0x23, 0x97, 0x0a, 0x87, 0xd0, 0x3f, 0xef, 0xe0, 0x26, 0xfa, 0xe6, - 0x6f, 0x0c, 0x58, 0xd9, 0x89, 0x08, 0xe6, 0xc9, 0xe5, 0x6e, 0x91, 0xcf, 0x62, 0xc2, 0xf8, 0xa4, - 0x6f, 0xb1, 0x55, 0x98, 0x8f, 0xc8, 0x40, 0x54, 0x8f, 0xba, 0x40, 0xf5, 0x1b, 0xda, 0x84, 0x05, - 0x3d, 0x8a, 0xeb, 0x36, 0xf2, 0xc6, 0xc4, 0x40, 0x59, 0x89, 0x86, 0xf9, 0x5f, 0x03, 0x56, 0x7a, - 0xa1, 0xfb, 0x7f, 0x90, 0x99, 0xcb, 0x90, 0x99, 0xe2, 0x83, 0x31, 0xc5, 0x37, 0x77, 0x53, 0xbe, - 0x68, 0x13, 0x0a, 0xb1, 0xa4, 0x2b, 0xbf, 0x78, 0xf5, 0xa7, 0xde, 0xc5, 0x0e, 0x74, 0x5f, 0x7c, - 0x14, 0x1f, 0x60, 0x76, 0x62, 0x81, 0x82, 0x8b, 0x67, 0x33, 0x84, 0x95, 0x26, 0xf1, 0xc8, 0xf3, - 0x0a, 0xfc, 0xe4, 0xbd, 0x9a, 0x43, 0x58, 0xde, 0x25, 0xfc, 0x2b, 0x73, 0xf7, 0x07, 0x03, 0x5e, - 0xdc, 0xa7, 0x2c, 0x71, 0xc8, 0x6e, 0xec, 0x71, 0x36, 0xe3, 0x71, 0x15, 0xe6, 0x8f, 0xa9, 0x27, - 0x12, 0xa5, 0x93, 0xac, 0xde, 0xc4, 0x34, 0x17, 0x8a, 0x6e, 0x26, 0x2e, 0x55, 0x7d, 0x53, 0xe6, - 0x85, 0x40, 0xdc, 0xa6, 0xd2, 0x97, 0x58, 0xe4, 0xc1, 0x09, 0x49, 0xb6, 0x20, 0xe1, 0x5d, 0x21, - 0x30, 0x9f, 0xc2, 0x4a, 0x96, 0x21, 0x0b, 0x03, 0x9f, 0x89, 0x71, 0x23, 0x9f, 0xfc, 0x23, 0xa3, - 0xbb, 0xc9, 0x14, 0x65, 0x31, 0x52, 0x41, 0xdf, 0x84, 0x25, 0x9f, 0x7c, 0xc1, 0xed, 0x94, 0x6b, - 0x15, 0x9f, 0x92, 0x10, 0x1f, 0x8d, 0xdc, 0x47, 0xb0, 0xda, 0xa4, 0x78, 0xe0, 0x07, 0xec, 0xab, - 0x2b, 0x82, 0xef, 0x5d, 0xe2, 0x93, 0xc5, 0x1e, 0x67, 0xc2, 0x67, 0x10, 0xf3, 0x30, 0xe6, 0xa9, - 0x29, 0x68, 0x51, 0x49, 0x7a, 0x11, 0xdd, 0xf8, 0x4b, 0x1e, 0x96, 0xc7, 0x1f, 0x00, 0x3c, 0x0a, - 0x3c, 0x8f, 0x44, 0xe8, 0x8f, 0x06, 0x94, 0x32, 0xfd, 0x03, 0xd5, 0xaf, 0x89, 0xd4, 0x25, 0x8d, - 0xa6, 0xf6, 0x5a, 0x82, 0x4f, 0xfd, 0x13, 0x55, 0x3f, 0x4c, 0xfe, 0x89, 0x32, 0x9b, 0xbf, 0xfc, - 0xd7, 0x7f, 0x7e, 0x37, 0xf3, 0xa1, 0xf9, 0x6e, 0xe3, 0xf4, 0x6e, 0x43, 0x47, 0x80, 0x35, 0x9e, - 0x8c, 0xa3, 0xf3, 0xb4, 0xa1, 0x36, 0xcf, 0x1a, 0x4f, 0xd4, 0xc3, 0xd3, 0xd1, 0xbf, 0x69, 0xf7, - 0x46, 0x27, 0xf5, 0xaf, 0x06, 0x94, 0x32, 0x9d, 0xe5, 0x3a, 0x9a, 0x97, 0xb5, 0xa0, 0x49, 0x34, - 0x3b, 0x92, 0xe6, 0xc1, 0xc6, 0xf6, 0x33, 0xd0, 0x6c, 0x3c, 0x49, 0x27, 0xed, 0xe9, 0x98, 0xf5, - 0x97, 0x06, 0x94, 0x32, 0x3d, 0xe2, 0x3a, 0xd6, 0x97, 0x35, 0x93, 0x49, 0xac, 0x7f, 0x24, 0x59, - 0x37, 0x6f, 0x3f, 0x07, 0xd6, 0xe8, 0xcf, 0x06, 0xc0, 0xb8, 0xbd, 0xa0, 0x6b, 0xbe, 0x1c, 0x2e, - 0x34, 0xa1, 0xda, 0xe4, 0xd3, 0x95, 0x50, 0x45, 0xcf, 0x83, 0xea, 0x97, 0x06, 0x14, 0xd3, 0xe7, - 0x1e, 0x5d, 0x33, 0x9d, 0x5e, 0xd2, 0xc1, 0x6a, 0xf5, 0x69, 0xe1, 0xaa, 0x9d, 0x98, 0x9b, 0x92, - 0xfb, 0x77, 0xd1, 0xb3, 0xd4, 0x30, 0xfa, 0x9b, 0x01, 0x4b, 0xe7, 0x4e, 0x2c, 0xba, 0x73, 0xdd, - 0x57, 0xe6, 0x65, 0x0d, 0x65, 0x52, 0x21, 0x3c, 0x94, 0x0c, 0x8f, 0xcc, 0x8f, 0x9e, 0x43, 0xf9, - 0xba, 0x9a, 0xc1, 0x3d, 0xe3, 0xf6, 0xf6, 0x67, 0xf0, 0xaa, 0x13, 0x0c, 0xaf, 0x64, 0xbb, 0x9d, - 0x7c, 0x34, 0xb0, 0x23, 0x71, 0x59, 0x1e, 0x19, 0x3f, 0xf9, 0xa1, 0x86, 0x0e, 0x02, 0x0f, 0xfb, - 0x83, 0x7a, 0x10, 0x0d, 0x1a, 0x03, 0xe2, 0xcb, 0xab, 0xb4, 0xa1, 0x96, 0x70, 0x48, 0xd9, 0xc5, - 0x3f, 0xb8, 0x37, 0x93, 0xe7, 0xfe, 0xbc, 0x04, 0xbf, 0xfb, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xe5, 0xf5, 0x02, 0xd0, 0x6d, 0x17, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/jobs.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/jobs.pb.go deleted file mode 100644 index 1b85f0d2..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/jobs.pb.go +++ /dev/null @@ -1,2573 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dataproc/v1/jobs.proto - -package dataproc - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf5 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The Log4j level for job execution. When running an -// [Apache Hive](http://hive.apache.org/) job, Cloud -// Dataproc configures the Hive client to an equivalent verbosity level. -type LoggingConfig_Level int32 - -const ( - // Level is unspecified. Use default level for log4j. - LoggingConfig_LEVEL_UNSPECIFIED LoggingConfig_Level = 0 - // Use ALL level for log4j. - LoggingConfig_ALL LoggingConfig_Level = 1 - // Use TRACE level for log4j. - LoggingConfig_TRACE LoggingConfig_Level = 2 - // Use DEBUG level for log4j. - LoggingConfig_DEBUG LoggingConfig_Level = 3 - // Use INFO level for log4j. - LoggingConfig_INFO LoggingConfig_Level = 4 - // Use WARN level for log4j. - LoggingConfig_WARN LoggingConfig_Level = 5 - // Use ERROR level for log4j. - LoggingConfig_ERROR LoggingConfig_Level = 6 - // Use FATAL level for log4j. - LoggingConfig_FATAL LoggingConfig_Level = 7 - // Turn off log4j. - LoggingConfig_OFF LoggingConfig_Level = 8 -) - -var LoggingConfig_Level_name = map[int32]string{ - 0: "LEVEL_UNSPECIFIED", - 1: "ALL", - 2: "TRACE", - 3: "DEBUG", - 4: "INFO", - 5: "WARN", - 6: "ERROR", - 7: "FATAL", - 8: "OFF", -} -var LoggingConfig_Level_value = map[string]int32{ - "LEVEL_UNSPECIFIED": 0, - "ALL": 1, - "TRACE": 2, - "DEBUG": 3, - "INFO": 4, - "WARN": 5, - "ERROR": 6, - "FATAL": 7, - "OFF": 8, -} - -func (x LoggingConfig_Level) String() string { - return proto.EnumName(LoggingConfig_Level_name, int32(x)) -} -func (LoggingConfig_Level) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -// The job state. -type JobStatus_State int32 - -const ( - // The job state is unknown. - JobStatus_STATE_UNSPECIFIED JobStatus_State = 0 - // The job is pending; it has been submitted, but is not yet running. - JobStatus_PENDING JobStatus_State = 1 - // Job has been received by the service and completed initial setup; - // it will soon be submitted to the cluster. - JobStatus_SETUP_DONE JobStatus_State = 8 - // The job is running on the cluster. - JobStatus_RUNNING JobStatus_State = 2 - // A CancelJob request has been received, but is pending. - JobStatus_CANCEL_PENDING JobStatus_State = 3 - // Transient in-flight resources have been canceled, and the request to - // cancel the running job has been issued to the cluster. - JobStatus_CANCEL_STARTED JobStatus_State = 7 - // The job cancellation was successful. - JobStatus_CANCELLED JobStatus_State = 4 - // The job has completed successfully. - JobStatus_DONE JobStatus_State = 5 - // The job has completed, but encountered an error. - JobStatus_ERROR JobStatus_State = 6 - // Job attempt has failed. The detail field contains failure details for - // this attempt. - // - // Applies to restartable jobs only. - JobStatus_ATTEMPT_FAILURE JobStatus_State = 9 -) - -var JobStatus_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "PENDING", - 8: "SETUP_DONE", - 2: "RUNNING", - 3: "CANCEL_PENDING", - 7: "CANCEL_STARTED", - 4: "CANCELLED", - 5: "DONE", - 6: "ERROR", - 9: "ATTEMPT_FAILURE", -} -var JobStatus_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "PENDING": 1, - "SETUP_DONE": 8, - "RUNNING": 2, - "CANCEL_PENDING": 3, - "CANCEL_STARTED": 7, - "CANCELLED": 4, - "DONE": 5, - "ERROR": 6, - "ATTEMPT_FAILURE": 9, -} - -func (x JobStatus_State) String() string { - return proto.EnumName(JobStatus_State_name, int32(x)) -} -func (JobStatus_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{9, 0} } - -type JobStatus_Substate int32 - -const ( - JobStatus_UNSPECIFIED JobStatus_Substate = 0 - // The Job is submitted to the agent. - // - // Applies to RUNNING state. - JobStatus_SUBMITTED JobStatus_Substate = 1 - // The Job has been received and is awaiting execution (it may be waiting - // for a condition to be met). See the "details" field for the reason for - // the delay. - // - // Applies to RUNNING state. - JobStatus_QUEUED JobStatus_Substate = 2 - // The agent-reported status is out of date, which may be caused by a - // loss of communication between the agent and Cloud Dataproc. If the - // agent does not send a timely update, the job will fail. - // - // Applies to RUNNING state. - JobStatus_STALE_STATUS JobStatus_Substate = 3 -) - -var JobStatus_Substate_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "SUBMITTED", - 2: "QUEUED", - 3: "STALE_STATUS", -} -var JobStatus_Substate_value = map[string]int32{ - "UNSPECIFIED": 0, - "SUBMITTED": 1, - "QUEUED": 2, - "STALE_STATUS": 3, -} - -func (x JobStatus_Substate) String() string { - return proto.EnumName(JobStatus_Substate_name, int32(x)) -} -func (JobStatus_Substate) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{9, 1} } - -// The application state, corresponding to -// <code>YarnProtos.YarnApplicationStateProto</code>. -type YarnApplication_State int32 - -const ( - // Status is unspecified. - YarnApplication_STATE_UNSPECIFIED YarnApplication_State = 0 - // Status is NEW. - YarnApplication_NEW YarnApplication_State = 1 - // Status is NEW_SAVING. - YarnApplication_NEW_SAVING YarnApplication_State = 2 - // Status is SUBMITTED. - YarnApplication_SUBMITTED YarnApplication_State = 3 - // Status is ACCEPTED. - YarnApplication_ACCEPTED YarnApplication_State = 4 - // Status is RUNNING. - YarnApplication_RUNNING YarnApplication_State = 5 - // Status is FINISHED. - YarnApplication_FINISHED YarnApplication_State = 6 - // Status is FAILED. - YarnApplication_FAILED YarnApplication_State = 7 - // Status is KILLED. - YarnApplication_KILLED YarnApplication_State = 8 -) - -var YarnApplication_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "NEW", - 2: "NEW_SAVING", - 3: "SUBMITTED", - 4: "ACCEPTED", - 5: "RUNNING", - 6: "FINISHED", - 7: "FAILED", - 8: "KILLED", -} -var YarnApplication_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "NEW": 1, - "NEW_SAVING": 2, - "SUBMITTED": 3, - "ACCEPTED": 4, - "RUNNING": 5, - "FINISHED": 6, - "FAILED": 7, - "KILLED": 8, -} - -func (x YarnApplication_State) String() string { - return proto.EnumName(YarnApplication_State_name, int32(x)) -} -func (YarnApplication_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{11, 0} } - -// A matcher that specifies categories of job states. -type ListJobsRequest_JobStateMatcher int32 - -const ( - // Match all jobs, regardless of state. - ListJobsRequest_ALL ListJobsRequest_JobStateMatcher = 0 - // Only match jobs in non-terminal states: PENDING, RUNNING, or - // CANCEL_PENDING. - ListJobsRequest_ACTIVE ListJobsRequest_JobStateMatcher = 1 - // Only match jobs in terminal states: CANCELLED, DONE, or ERROR. - ListJobsRequest_NON_ACTIVE ListJobsRequest_JobStateMatcher = 2 -) - -var ListJobsRequest_JobStateMatcher_name = map[int32]string{ - 0: "ALL", - 1: "ACTIVE", - 2: "NON_ACTIVE", -} -var ListJobsRequest_JobStateMatcher_value = map[string]int32{ - "ALL": 0, - "ACTIVE": 1, - "NON_ACTIVE": 2, -} - -func (x ListJobsRequest_JobStateMatcher) String() string { - return proto.EnumName(ListJobsRequest_JobStateMatcher_name, int32(x)) -} -func (ListJobsRequest_JobStateMatcher) EnumDescriptor() ([]byte, []int) { - return fileDescriptor1, []int{16, 0} -} - -// The runtime logging config of the job. -type LoggingConfig struct { - // The per-package log levels for the driver. This may include - // "root" package name to configure rootLogger. - // Examples: - // 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG' - DriverLogLevels map[string]LoggingConfig_Level `protobuf:"bytes,2,rep,name=driver_log_levels,json=driverLogLevels" json:"driver_log_levels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.cloud.dataproc.v1.LoggingConfig_Level"` -} - -func (m *LoggingConfig) Reset() { *m = LoggingConfig{} } -func (m *LoggingConfig) String() string { return proto.CompactTextString(m) } -func (*LoggingConfig) ProtoMessage() {} -func (*LoggingConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *LoggingConfig) GetDriverLogLevels() map[string]LoggingConfig_Level { - if m != nil { - return m.DriverLogLevels - } - return nil -} - -// A Cloud Dataproc job for running -// [Apache Hadoop MapReduce](https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) -// jobs on [Apache Hadoop YARN](https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). -type HadoopJob struct { - // Required. Indicates the location of the driver's main class. Specify - // either the jar file that contains the main class or the main class name. - // To specify both, add the jar file to `jar_file_uris`, and then specify - // the main class name in this property. - // - // Types that are valid to be assigned to Driver: - // *HadoopJob_MainJarFileUri - // *HadoopJob_MainClass - Driver isHadoopJob_Driver `protobuf_oneof:"driver"` - // Optional. The arguments to pass to the driver. Do not - // include arguments, such as `-libjars` or `-Dfoo=bar`, that can be set as job - // properties, since a collision may occur that causes an incorrect job - // submission. - Args []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"` - // Optional. Jar file URIs to add to the CLASSPATHs of the - // Hadoop driver and tasks. - JarFileUris []string `protobuf:"bytes,4,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied - // to the working directory of Hadoop drivers and distributed tasks. Useful - // for naively parallel tasks. - FileUris []string `protobuf:"bytes,5,rep,name=file_uris,json=fileUris" json:"file_uris,omitempty"` - // Optional. HCFS URIs of archives to be extracted in the working directory of - // Hadoop drivers and tasks. Supported file types: - // .jar, .tar, .tar.gz, .tgz, or .zip. - ArchiveUris []string `protobuf:"bytes,6,rep,name=archive_uris,json=archiveUris" json:"archive_uris,omitempty"` - // Optional. A mapping of property names to values, used to configure Hadoop. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in /etc/hadoop/conf/*-site and - // classes in user code. - Properties map[string]string `protobuf:"bytes,7,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,8,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *HadoopJob) Reset() { *m = HadoopJob{} } -func (m *HadoopJob) String() string { return proto.CompactTextString(m) } -func (*HadoopJob) ProtoMessage() {} -func (*HadoopJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -type isHadoopJob_Driver interface { - isHadoopJob_Driver() -} - -type HadoopJob_MainJarFileUri struct { - MainJarFileUri string `protobuf:"bytes,1,opt,name=main_jar_file_uri,json=mainJarFileUri,oneof"` -} -type HadoopJob_MainClass struct { - MainClass string `protobuf:"bytes,2,opt,name=main_class,json=mainClass,oneof"` -} - -func (*HadoopJob_MainJarFileUri) isHadoopJob_Driver() {} -func (*HadoopJob_MainClass) isHadoopJob_Driver() {} - -func (m *HadoopJob) GetDriver() isHadoopJob_Driver { - if m != nil { - return m.Driver - } - return nil -} - -func (m *HadoopJob) GetMainJarFileUri() string { - if x, ok := m.GetDriver().(*HadoopJob_MainJarFileUri); ok { - return x.MainJarFileUri - } - return "" -} - -func (m *HadoopJob) GetMainClass() string { - if x, ok := m.GetDriver().(*HadoopJob_MainClass); ok { - return x.MainClass - } - return "" -} - -func (m *HadoopJob) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *HadoopJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *HadoopJob) GetFileUris() []string { - if m != nil { - return m.FileUris - } - return nil -} - -func (m *HadoopJob) GetArchiveUris() []string { - if m != nil { - return m.ArchiveUris - } - return nil -} - -func (m *HadoopJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *HadoopJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*HadoopJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _HadoopJob_OneofMarshaler, _HadoopJob_OneofUnmarshaler, _HadoopJob_OneofSizer, []interface{}{ - (*HadoopJob_MainJarFileUri)(nil), - (*HadoopJob_MainClass)(nil), - } -} - -func _HadoopJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*HadoopJob) - // driver - switch x := m.Driver.(type) { - case *HadoopJob_MainJarFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.MainJarFileUri) - case *HadoopJob_MainClass: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.MainClass) - case nil: - default: - return fmt.Errorf("HadoopJob.Driver has unexpected type %T", x) - } - return nil -} - -func _HadoopJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*HadoopJob) - switch tag { - case 1: // driver.main_jar_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Driver = &HadoopJob_MainJarFileUri{x} - return true, err - case 2: // driver.main_class - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Driver = &HadoopJob_MainClass{x} - return true, err - default: - return false, nil - } -} - -func _HadoopJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*HadoopJob) - // driver - switch x := m.Driver.(type) { - case *HadoopJob_MainJarFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.MainJarFileUri))) - n += len(x.MainJarFileUri) - case *HadoopJob_MainClass: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.MainClass))) - n += len(x.MainClass) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc job for running [Apache Spark](http://spark.apache.org/) -// applications on YARN. -type SparkJob struct { - // Required. The specification of the main method to call to drive the job. - // Specify either the jar file that contains the main class or the main class - // name. To pass both a main jar and a main class in that jar, add the jar to - // `CommonJob.jar_file_uris`, and then specify the main class name in `main_class`. - // - // Types that are valid to be assigned to Driver: - // *SparkJob_MainJarFileUri - // *SparkJob_MainClass - Driver isSparkJob_Driver `protobuf_oneof:"driver"` - // Optional. The arguments to pass to the driver. Do not include arguments, - // such as `--conf`, that can be set as job properties, since a collision may - // occur that causes an incorrect job submission. - Args []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"` - // Optional. HCFS URIs of jar files to add to the CLASSPATHs of the - // Spark driver and tasks. - JarFileUris []string `protobuf:"bytes,4,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. HCFS URIs of files to be copied to the working directory of - // Spark drivers and distributed tasks. Useful for naively parallel tasks. - FileUris []string `protobuf:"bytes,5,rep,name=file_uris,json=fileUris" json:"file_uris,omitempty"` - // Optional. HCFS URIs of archives to be extracted in the working directory - // of Spark drivers and tasks. Supported file types: - // .jar, .tar, .tar.gz, .tgz, and .zip. - ArchiveUris []string `protobuf:"bytes,6,rep,name=archive_uris,json=archiveUris" json:"archive_uris,omitempty"` - // Optional. A mapping of property names to values, used to configure Spark. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in - // /etc/spark/conf/spark-defaults.conf and classes in user code. - Properties map[string]string `protobuf:"bytes,7,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,8,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *SparkJob) Reset() { *m = SparkJob{} } -func (m *SparkJob) String() string { return proto.CompactTextString(m) } -func (*SparkJob) ProtoMessage() {} -func (*SparkJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -type isSparkJob_Driver interface { - isSparkJob_Driver() -} - -type SparkJob_MainJarFileUri struct { - MainJarFileUri string `protobuf:"bytes,1,opt,name=main_jar_file_uri,json=mainJarFileUri,oneof"` -} -type SparkJob_MainClass struct { - MainClass string `protobuf:"bytes,2,opt,name=main_class,json=mainClass,oneof"` -} - -func (*SparkJob_MainJarFileUri) isSparkJob_Driver() {} -func (*SparkJob_MainClass) isSparkJob_Driver() {} - -func (m *SparkJob) GetDriver() isSparkJob_Driver { - if m != nil { - return m.Driver - } - return nil -} - -func (m *SparkJob) GetMainJarFileUri() string { - if x, ok := m.GetDriver().(*SparkJob_MainJarFileUri); ok { - return x.MainJarFileUri - } - return "" -} - -func (m *SparkJob) GetMainClass() string { - if x, ok := m.GetDriver().(*SparkJob_MainClass); ok { - return x.MainClass - } - return "" -} - -func (m *SparkJob) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *SparkJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *SparkJob) GetFileUris() []string { - if m != nil { - return m.FileUris - } - return nil -} - -func (m *SparkJob) GetArchiveUris() []string { - if m != nil { - return m.ArchiveUris - } - return nil -} - -func (m *SparkJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *SparkJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SparkJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SparkJob_OneofMarshaler, _SparkJob_OneofUnmarshaler, _SparkJob_OneofSizer, []interface{}{ - (*SparkJob_MainJarFileUri)(nil), - (*SparkJob_MainClass)(nil), - } -} - -func _SparkJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SparkJob) - // driver - switch x := m.Driver.(type) { - case *SparkJob_MainJarFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.MainJarFileUri) - case *SparkJob_MainClass: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.MainClass) - case nil: - default: - return fmt.Errorf("SparkJob.Driver has unexpected type %T", x) - } - return nil -} - -func _SparkJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SparkJob) - switch tag { - case 1: // driver.main_jar_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Driver = &SparkJob_MainJarFileUri{x} - return true, err - case 2: // driver.main_class - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Driver = &SparkJob_MainClass{x} - return true, err - default: - return false, nil - } -} - -func _SparkJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SparkJob) - // driver - switch x := m.Driver.(type) { - case *SparkJob_MainJarFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.MainJarFileUri))) - n += len(x.MainJarFileUri) - case *SparkJob_MainClass: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.MainClass))) - n += len(x.MainClass) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc job for running -// [Apache PySpark](https://spark.apache.org/docs/0.9.0/python-programming-guide.html) -// applications on YARN. -type PySparkJob struct { - // Required. The HCFS URI of the main Python file to use as the driver. Must - // be a .py file. - MainPythonFileUri string `protobuf:"bytes,1,opt,name=main_python_file_uri,json=mainPythonFileUri" json:"main_python_file_uri,omitempty"` - // Optional. The arguments to pass to the driver. Do not include arguments, - // such as `--conf`, that can be set as job properties, since a collision may - // occur that causes an incorrect job submission. - Args []string `protobuf:"bytes,2,rep,name=args" json:"args,omitempty"` - // Optional. HCFS file URIs of Python files to pass to the PySpark - // framework. Supported file types: .py, .egg, and .zip. - PythonFileUris []string `protobuf:"bytes,3,rep,name=python_file_uris,json=pythonFileUris" json:"python_file_uris,omitempty"` - // Optional. HCFS URIs of jar files to add to the CLASSPATHs of the - // Python driver and tasks. - JarFileUris []string `protobuf:"bytes,4,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. HCFS URIs of files to be copied to the working directory of - // Python drivers and distributed tasks. Useful for naively parallel tasks. - FileUris []string `protobuf:"bytes,5,rep,name=file_uris,json=fileUris" json:"file_uris,omitempty"` - // Optional. HCFS URIs of archives to be extracted in the working directory of - // .jar, .tar, .tar.gz, .tgz, and .zip. - ArchiveUris []string `protobuf:"bytes,6,rep,name=archive_uris,json=archiveUris" json:"archive_uris,omitempty"` - // Optional. A mapping of property names to values, used to configure PySpark. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in - // /etc/spark/conf/spark-defaults.conf and classes in user code. - Properties map[string]string `protobuf:"bytes,7,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,8,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *PySparkJob) Reset() { *m = PySparkJob{} } -func (m *PySparkJob) String() string { return proto.CompactTextString(m) } -func (*PySparkJob) ProtoMessage() {} -func (*PySparkJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *PySparkJob) GetMainPythonFileUri() string { - if m != nil { - return m.MainPythonFileUri - } - return "" -} - -func (m *PySparkJob) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *PySparkJob) GetPythonFileUris() []string { - if m != nil { - return m.PythonFileUris - } - return nil -} - -func (m *PySparkJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *PySparkJob) GetFileUris() []string { - if m != nil { - return m.FileUris - } - return nil -} - -func (m *PySparkJob) GetArchiveUris() []string { - if m != nil { - return m.ArchiveUris - } - return nil -} - -func (m *PySparkJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *PySparkJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// A list of queries to run on a cluster. -type QueryList struct { - // Required. The queries to execute. You do not need to terminate a query - // with a semicolon. Multiple queries can be specified in one string - // by separating each with a semicolon. Here is an example of an Cloud - // Dataproc API snippet that uses a QueryList to specify a HiveJob: - // - // "hiveJob": { - // "queryList": { - // "queries": [ - // "query1", - // "query2", - // "query3;query4", - // ] - // } - // } - Queries []string `protobuf:"bytes,1,rep,name=queries" json:"queries,omitempty"` -} - -func (m *QueryList) Reset() { *m = QueryList{} } -func (m *QueryList) String() string { return proto.CompactTextString(m) } -func (*QueryList) ProtoMessage() {} -func (*QueryList) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *QueryList) GetQueries() []string { - if m != nil { - return m.Queries - } - return nil -} - -// A Cloud Dataproc job for running [Apache Hive](https://hive.apache.org/) -// queries on YARN. -type HiveJob struct { - // Required. The sequence of Hive queries to execute, specified as either - // an HCFS file URI or a list of queries. - // - // Types that are valid to be assigned to Queries: - // *HiveJob_QueryFileUri - // *HiveJob_QueryList - Queries isHiveJob_Queries `protobuf_oneof:"queries"` - // Optional. Whether to continue executing queries if a query fails. - // The default value is `false`. Setting to `true` can be useful when executing - // independent parallel queries. - ContinueOnFailure bool `protobuf:"varint,3,opt,name=continue_on_failure,json=continueOnFailure" json:"continue_on_failure,omitempty"` - // Optional. Mapping of query variable names to values (equivalent to the - // Hive command: `SET name="value";`). - ScriptVariables map[string]string `protobuf:"bytes,4,rep,name=script_variables,json=scriptVariables" json:"script_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. A mapping of property names and values, used to configure Hive. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, - // /etc/hive/conf/hive-site.xml, and classes in user code. - Properties map[string]string `protobuf:"bytes,5,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. HCFS URIs of jar files to add to the CLASSPATH of the - // Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes - // and UDFs. - JarFileUris []string `protobuf:"bytes,6,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` -} - -func (m *HiveJob) Reset() { *m = HiveJob{} } -func (m *HiveJob) String() string { return proto.CompactTextString(m) } -func (*HiveJob) ProtoMessage() {} -func (*HiveJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -type isHiveJob_Queries interface { - isHiveJob_Queries() -} - -type HiveJob_QueryFileUri struct { - QueryFileUri string `protobuf:"bytes,1,opt,name=query_file_uri,json=queryFileUri,oneof"` -} -type HiveJob_QueryList struct { - QueryList *QueryList `protobuf:"bytes,2,opt,name=query_list,json=queryList,oneof"` -} - -func (*HiveJob_QueryFileUri) isHiveJob_Queries() {} -func (*HiveJob_QueryList) isHiveJob_Queries() {} - -func (m *HiveJob) GetQueries() isHiveJob_Queries { - if m != nil { - return m.Queries - } - return nil -} - -func (m *HiveJob) GetQueryFileUri() string { - if x, ok := m.GetQueries().(*HiveJob_QueryFileUri); ok { - return x.QueryFileUri - } - return "" -} - -func (m *HiveJob) GetQueryList() *QueryList { - if x, ok := m.GetQueries().(*HiveJob_QueryList); ok { - return x.QueryList - } - return nil -} - -func (m *HiveJob) GetContinueOnFailure() bool { - if m != nil { - return m.ContinueOnFailure - } - return false -} - -func (m *HiveJob) GetScriptVariables() map[string]string { - if m != nil { - return m.ScriptVariables - } - return nil -} - -func (m *HiveJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *HiveJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*HiveJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _HiveJob_OneofMarshaler, _HiveJob_OneofUnmarshaler, _HiveJob_OneofSizer, []interface{}{ - (*HiveJob_QueryFileUri)(nil), - (*HiveJob_QueryList)(nil), - } -} - -func _HiveJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*HiveJob) - // queries - switch x := m.Queries.(type) { - case *HiveJob_QueryFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.QueryFileUri) - case *HiveJob_QueryList: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.QueryList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("HiveJob.Queries has unexpected type %T", x) - } - return nil -} - -func _HiveJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*HiveJob) - switch tag { - case 1: // queries.query_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Queries = &HiveJob_QueryFileUri{x} - return true, err - case 2: // queries.query_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(QueryList) - err := b.DecodeMessage(msg) - m.Queries = &HiveJob_QueryList{msg} - return true, err - default: - return false, nil - } -} - -func _HiveJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*HiveJob) - // queries - switch x := m.Queries.(type) { - case *HiveJob_QueryFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.QueryFileUri))) - n += len(x.QueryFileUri) - case *HiveJob_QueryList: - s := proto.Size(x.QueryList) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc job for running [Apache Spark SQL](http://spark.apache.org/sql/) -// queries. -type SparkSqlJob struct { - // Required. The sequence of Spark SQL queries to execute, specified as - // either an HCFS file URI or as a list of queries. - // - // Types that are valid to be assigned to Queries: - // *SparkSqlJob_QueryFileUri - // *SparkSqlJob_QueryList - Queries isSparkSqlJob_Queries `protobuf_oneof:"queries"` - // Optional. Mapping of query variable names to values (equivalent to the - // Spark SQL command: SET `name="value";`). - ScriptVariables map[string]string `protobuf:"bytes,3,rep,name=script_variables,json=scriptVariables" json:"script_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. A mapping of property names to values, used to configure - // Spark SQL's SparkConf. Properties that conflict with values set by the - // Cloud Dataproc API may be overwritten. - Properties map[string]string `protobuf:"bytes,4,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH. - JarFileUris []string `protobuf:"bytes,56,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,6,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *SparkSqlJob) Reset() { *m = SparkSqlJob{} } -func (m *SparkSqlJob) String() string { return proto.CompactTextString(m) } -func (*SparkSqlJob) ProtoMessage() {} -func (*SparkSqlJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -type isSparkSqlJob_Queries interface { - isSparkSqlJob_Queries() -} - -type SparkSqlJob_QueryFileUri struct { - QueryFileUri string `protobuf:"bytes,1,opt,name=query_file_uri,json=queryFileUri,oneof"` -} -type SparkSqlJob_QueryList struct { - QueryList *QueryList `protobuf:"bytes,2,opt,name=query_list,json=queryList,oneof"` -} - -func (*SparkSqlJob_QueryFileUri) isSparkSqlJob_Queries() {} -func (*SparkSqlJob_QueryList) isSparkSqlJob_Queries() {} - -func (m *SparkSqlJob) GetQueries() isSparkSqlJob_Queries { - if m != nil { - return m.Queries - } - return nil -} - -func (m *SparkSqlJob) GetQueryFileUri() string { - if x, ok := m.GetQueries().(*SparkSqlJob_QueryFileUri); ok { - return x.QueryFileUri - } - return "" -} - -func (m *SparkSqlJob) GetQueryList() *QueryList { - if x, ok := m.GetQueries().(*SparkSqlJob_QueryList); ok { - return x.QueryList - } - return nil -} - -func (m *SparkSqlJob) GetScriptVariables() map[string]string { - if m != nil { - return m.ScriptVariables - } - return nil -} - -func (m *SparkSqlJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *SparkSqlJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *SparkSqlJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SparkSqlJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SparkSqlJob_OneofMarshaler, _SparkSqlJob_OneofUnmarshaler, _SparkSqlJob_OneofSizer, []interface{}{ - (*SparkSqlJob_QueryFileUri)(nil), - (*SparkSqlJob_QueryList)(nil), - } -} - -func _SparkSqlJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SparkSqlJob) - // queries - switch x := m.Queries.(type) { - case *SparkSqlJob_QueryFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.QueryFileUri) - case *SparkSqlJob_QueryList: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.QueryList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("SparkSqlJob.Queries has unexpected type %T", x) - } - return nil -} - -func _SparkSqlJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SparkSqlJob) - switch tag { - case 1: // queries.query_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Queries = &SparkSqlJob_QueryFileUri{x} - return true, err - case 2: // queries.query_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(QueryList) - err := b.DecodeMessage(msg) - m.Queries = &SparkSqlJob_QueryList{msg} - return true, err - default: - return false, nil - } -} - -func _SparkSqlJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SparkSqlJob) - // queries - switch x := m.Queries.(type) { - case *SparkSqlJob_QueryFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.QueryFileUri))) - n += len(x.QueryFileUri) - case *SparkSqlJob_QueryList: - s := proto.Size(x.QueryList) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc job for running [Apache Pig](https://pig.apache.org/) -// queries on YARN. -type PigJob struct { - // Required. The sequence of Pig queries to execute, specified as an HCFS - // file URI or a list of queries. - // - // Types that are valid to be assigned to Queries: - // *PigJob_QueryFileUri - // *PigJob_QueryList - Queries isPigJob_Queries `protobuf_oneof:"queries"` - // Optional. Whether to continue executing queries if a query fails. - // The default value is `false`. Setting to `true` can be useful when executing - // independent parallel queries. - ContinueOnFailure bool `protobuf:"varint,3,opt,name=continue_on_failure,json=continueOnFailure" json:"continue_on_failure,omitempty"` - // Optional. Mapping of query variable names to values (equivalent to the Pig - // command: `name=[value]`). - ScriptVariables map[string]string `protobuf:"bytes,4,rep,name=script_variables,json=scriptVariables" json:"script_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. A mapping of property names to values, used to configure Pig. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, - // /etc/pig/conf/pig.properties, and classes in user code. - Properties map[string]string `protobuf:"bytes,5,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. HCFS URIs of jar files to add to the CLASSPATH of - // the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs. - JarFileUris []string `protobuf:"bytes,6,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,7,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *PigJob) Reset() { *m = PigJob{} } -func (m *PigJob) String() string { return proto.CompactTextString(m) } -func (*PigJob) ProtoMessage() {} -func (*PigJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -type isPigJob_Queries interface { - isPigJob_Queries() -} - -type PigJob_QueryFileUri struct { - QueryFileUri string `protobuf:"bytes,1,opt,name=query_file_uri,json=queryFileUri,oneof"` -} -type PigJob_QueryList struct { - QueryList *QueryList `protobuf:"bytes,2,opt,name=query_list,json=queryList,oneof"` -} - -func (*PigJob_QueryFileUri) isPigJob_Queries() {} -func (*PigJob_QueryList) isPigJob_Queries() {} - -func (m *PigJob) GetQueries() isPigJob_Queries { - if m != nil { - return m.Queries - } - return nil -} - -func (m *PigJob) GetQueryFileUri() string { - if x, ok := m.GetQueries().(*PigJob_QueryFileUri); ok { - return x.QueryFileUri - } - return "" -} - -func (m *PigJob) GetQueryList() *QueryList { - if x, ok := m.GetQueries().(*PigJob_QueryList); ok { - return x.QueryList - } - return nil -} - -func (m *PigJob) GetContinueOnFailure() bool { - if m != nil { - return m.ContinueOnFailure - } - return false -} - -func (m *PigJob) GetScriptVariables() map[string]string { - if m != nil { - return m.ScriptVariables - } - return nil -} - -func (m *PigJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *PigJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *PigJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PigJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PigJob_OneofMarshaler, _PigJob_OneofUnmarshaler, _PigJob_OneofSizer, []interface{}{ - (*PigJob_QueryFileUri)(nil), - (*PigJob_QueryList)(nil), - } -} - -func _PigJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PigJob) - // queries - switch x := m.Queries.(type) { - case *PigJob_QueryFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.QueryFileUri) - case *PigJob_QueryList: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.QueryList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("PigJob.Queries has unexpected type %T", x) - } - return nil -} - -func _PigJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PigJob) - switch tag { - case 1: // queries.query_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Queries = &PigJob_QueryFileUri{x} - return true, err - case 2: // queries.query_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(QueryList) - err := b.DecodeMessage(msg) - m.Queries = &PigJob_QueryList{msg} - return true, err - default: - return false, nil - } -} - -func _PigJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PigJob) - // queries - switch x := m.Queries.(type) { - case *PigJob_QueryFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.QueryFileUri))) - n += len(x.QueryFileUri) - case *PigJob_QueryList: - s := proto.Size(x.QueryList) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Cloud Dataproc job config. -type JobPlacement struct { - // Required. The name of the cluster where the job will be submitted. - ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Output-only. A cluster UUID generated by the Cloud Dataproc service when - // the job is submitted. - ClusterUuid string `protobuf:"bytes,2,opt,name=cluster_uuid,json=clusterUuid" json:"cluster_uuid,omitempty"` -} - -func (m *JobPlacement) Reset() { *m = JobPlacement{} } -func (m *JobPlacement) String() string { return proto.CompactTextString(m) } -func (*JobPlacement) ProtoMessage() {} -func (*JobPlacement) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *JobPlacement) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *JobPlacement) GetClusterUuid() string { - if m != nil { - return m.ClusterUuid - } - return "" -} - -// Cloud Dataproc job status. -type JobStatus struct { - // Output-only. A state message specifying the overall job state. - State JobStatus_State `protobuf:"varint,1,opt,name=state,enum=google.cloud.dataproc.v1.JobStatus_State" json:"state,omitempty"` - // Output-only. Optional job state details, such as an error - // description if the state is <code>ERROR</code>. - Details string `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"` - // Output-only. The time when this state was entered. - StateStartTime *google_protobuf3.Timestamp `protobuf:"bytes,6,opt,name=state_start_time,json=stateStartTime" json:"state_start_time,omitempty"` - // Output-only. Additional state information, which includes - // status reported by the agent. - Substate JobStatus_Substate `protobuf:"varint,7,opt,name=substate,enum=google.cloud.dataproc.v1.JobStatus_Substate" json:"substate,omitempty"` -} - -func (m *JobStatus) Reset() { *m = JobStatus{} } -func (m *JobStatus) String() string { return proto.CompactTextString(m) } -func (*JobStatus) ProtoMessage() {} -func (*JobStatus) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *JobStatus) GetState() JobStatus_State { - if m != nil { - return m.State - } - return JobStatus_STATE_UNSPECIFIED -} - -func (m *JobStatus) GetDetails() string { - if m != nil { - return m.Details - } - return "" -} - -func (m *JobStatus) GetStateStartTime() *google_protobuf3.Timestamp { - if m != nil { - return m.StateStartTime - } - return nil -} - -func (m *JobStatus) GetSubstate() JobStatus_Substate { - if m != nil { - return m.Substate - } - return JobStatus_UNSPECIFIED -} - -// Encapsulates the full scoping used to reference a job. -type JobReference struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Optional. The job ID, which must be unique within the project. The job ID - // is generated by the server upon job submission or provided by the user as a - // means to perform retries without creating duplicate jobs. The ID must - // contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or - // hyphens (-). The maximum length is 100 characters. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *JobReference) Reset() { *m = JobReference{} } -func (m *JobReference) String() string { return proto.CompactTextString(m) } -func (*JobReference) ProtoMessage() {} -func (*JobReference) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *JobReference) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *JobReference) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -// A YARN application created by a job. Application information is a subset of -// <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>. -// -// **Beta Feature**: This report is available for testing purposes only. It may -// be changed before final release. -type YarnApplication struct { - // Required. The application name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The application state. - State YarnApplication_State `protobuf:"varint,2,opt,name=state,enum=google.cloud.dataproc.v1.YarnApplication_State" json:"state,omitempty"` - // Required. The numerical progress of the application, from 1 to 100. - Progress float32 `protobuf:"fixed32,3,opt,name=progress" json:"progress,omitempty"` - // Optional. The HTTP URL of the ApplicationMaster, HistoryServer, or - // TimelineServer that provides application-specific information. The URL uses - // the internal hostname, and requires a proxy server for resolution and, - // possibly, access. - TrackingUrl string `protobuf:"bytes,4,opt,name=tracking_url,json=trackingUrl" json:"tracking_url,omitempty"` -} - -func (m *YarnApplication) Reset() { *m = YarnApplication{} } -func (m *YarnApplication) String() string { return proto.CompactTextString(m) } -func (*YarnApplication) ProtoMessage() {} -func (*YarnApplication) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *YarnApplication) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *YarnApplication) GetState() YarnApplication_State { - if m != nil { - return m.State - } - return YarnApplication_STATE_UNSPECIFIED -} - -func (m *YarnApplication) GetProgress() float32 { - if m != nil { - return m.Progress - } - return 0 -} - -func (m *YarnApplication) GetTrackingUrl() string { - if m != nil { - return m.TrackingUrl - } - return "" -} - -// A Cloud Dataproc job resource. -type Job struct { - // Optional. The fully qualified reference to the job, which can be used to - // obtain the equivalent REST path of the job resource. If this property - // is not specified when a job is created, the server generates a - // <code>job_id</code>. - Reference *JobReference `protobuf:"bytes,1,opt,name=reference" json:"reference,omitempty"` - // Required. Job information, including how, when, and where to - // run the job. - Placement *JobPlacement `protobuf:"bytes,2,opt,name=placement" json:"placement,omitempty"` - // Required. The application/framework-specific portion of the job. - // - // Types that are valid to be assigned to TypeJob: - // *Job_HadoopJob - // *Job_SparkJob - // *Job_PysparkJob - // *Job_HiveJob - // *Job_PigJob - // *Job_SparkSqlJob - TypeJob isJob_TypeJob `protobuf_oneof:"type_job"` - // Output-only. The job status. Additional application-specific - // status information may be contained in the <code>type_job</code> - // and <code>yarn_applications</code> fields. - Status *JobStatus `protobuf:"bytes,8,opt,name=status" json:"status,omitempty"` - // Output-only. The previous job status. - StatusHistory []*JobStatus `protobuf:"bytes,13,rep,name=status_history,json=statusHistory" json:"status_history,omitempty"` - // Output-only. The collection of YARN applications spun up by this job. - // - // **Beta** Feature: This report is available for testing purposes only. It may - // be changed before final release. - YarnApplications []*YarnApplication `protobuf:"bytes,9,rep,name=yarn_applications,json=yarnApplications" json:"yarn_applications,omitempty"` - // Output-only. A URI pointing to the location of the stdout of the job's - // driver program. - DriverOutputResourceUri string `protobuf:"bytes,17,opt,name=driver_output_resource_uri,json=driverOutputResourceUri" json:"driver_output_resource_uri,omitempty"` - // Output-only. If present, the location of miscellaneous control files - // which may be used as part of job setup and handling. If not present, - // control files may be placed in the same location as `driver_output_uri`. - DriverControlFilesUri string `protobuf:"bytes,15,opt,name=driver_control_files_uri,json=driverControlFilesUri" json:"driver_control_files_uri,omitempty"` - // Optional. The labels to associate with this job. - // Label **keys** must contain 1 to 63 characters, and must conform to - // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // Label **values** may be empty, but, if present, must contain 1 to 63 - // characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // No more than 32 labels can be associated with a job. - Labels map[string]string `protobuf:"bytes,18,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. Job scheduling configuration. - Scheduling *JobScheduling `protobuf:"bytes,20,opt,name=scheduling" json:"scheduling,omitempty"` -} - -func (m *Job) Reset() { *m = Job{} } -func (m *Job) String() string { return proto.CompactTextString(m) } -func (*Job) ProtoMessage() {} -func (*Job) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -type isJob_TypeJob interface { - isJob_TypeJob() -} - -type Job_HadoopJob struct { - HadoopJob *HadoopJob `protobuf:"bytes,3,opt,name=hadoop_job,json=hadoopJob,oneof"` -} -type Job_SparkJob struct { - SparkJob *SparkJob `protobuf:"bytes,4,opt,name=spark_job,json=sparkJob,oneof"` -} -type Job_PysparkJob struct { - PysparkJob *PySparkJob `protobuf:"bytes,5,opt,name=pyspark_job,json=pysparkJob,oneof"` -} -type Job_HiveJob struct { - HiveJob *HiveJob `protobuf:"bytes,6,opt,name=hive_job,json=hiveJob,oneof"` -} -type Job_PigJob struct { - PigJob *PigJob `protobuf:"bytes,7,opt,name=pig_job,json=pigJob,oneof"` -} -type Job_SparkSqlJob struct { - SparkSqlJob *SparkSqlJob `protobuf:"bytes,12,opt,name=spark_sql_job,json=sparkSqlJob,oneof"` -} - -func (*Job_HadoopJob) isJob_TypeJob() {} -func (*Job_SparkJob) isJob_TypeJob() {} -func (*Job_PysparkJob) isJob_TypeJob() {} -func (*Job_HiveJob) isJob_TypeJob() {} -func (*Job_PigJob) isJob_TypeJob() {} -func (*Job_SparkSqlJob) isJob_TypeJob() {} - -func (m *Job) GetTypeJob() isJob_TypeJob { - if m != nil { - return m.TypeJob - } - return nil -} - -func (m *Job) GetReference() *JobReference { - if m != nil { - return m.Reference - } - return nil -} - -func (m *Job) GetPlacement() *JobPlacement { - if m != nil { - return m.Placement - } - return nil -} - -func (m *Job) GetHadoopJob() *HadoopJob { - if x, ok := m.GetTypeJob().(*Job_HadoopJob); ok { - return x.HadoopJob - } - return nil -} - -func (m *Job) GetSparkJob() *SparkJob { - if x, ok := m.GetTypeJob().(*Job_SparkJob); ok { - return x.SparkJob - } - return nil -} - -func (m *Job) GetPysparkJob() *PySparkJob { - if x, ok := m.GetTypeJob().(*Job_PysparkJob); ok { - return x.PysparkJob - } - return nil -} - -func (m *Job) GetHiveJob() *HiveJob { - if x, ok := m.GetTypeJob().(*Job_HiveJob); ok { - return x.HiveJob - } - return nil -} - -func (m *Job) GetPigJob() *PigJob { - if x, ok := m.GetTypeJob().(*Job_PigJob); ok { - return x.PigJob - } - return nil -} - -func (m *Job) GetSparkSqlJob() *SparkSqlJob { - if x, ok := m.GetTypeJob().(*Job_SparkSqlJob); ok { - return x.SparkSqlJob - } - return nil -} - -func (m *Job) GetStatus() *JobStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *Job) GetStatusHistory() []*JobStatus { - if m != nil { - return m.StatusHistory - } - return nil -} - -func (m *Job) GetYarnApplications() []*YarnApplication { - if m != nil { - return m.YarnApplications - } - return nil -} - -func (m *Job) GetDriverOutputResourceUri() string { - if m != nil { - return m.DriverOutputResourceUri - } - return "" -} - -func (m *Job) GetDriverControlFilesUri() string { - if m != nil { - return m.DriverControlFilesUri - } - return "" -} - -func (m *Job) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *Job) GetScheduling() *JobScheduling { - if m != nil { - return m.Scheduling - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Job) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Job_OneofMarshaler, _Job_OneofUnmarshaler, _Job_OneofSizer, []interface{}{ - (*Job_HadoopJob)(nil), - (*Job_SparkJob)(nil), - (*Job_PysparkJob)(nil), - (*Job_HiveJob)(nil), - (*Job_PigJob)(nil), - (*Job_SparkSqlJob)(nil), - } -} - -func _Job_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Job) - // type_job - switch x := m.TypeJob.(type) { - case *Job_HadoopJob: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HadoopJob); err != nil { - return err - } - case *Job_SparkJob: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SparkJob); err != nil { - return err - } - case *Job_PysparkJob: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PysparkJob); err != nil { - return err - } - case *Job_HiveJob: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HiveJob); err != nil { - return err - } - case *Job_PigJob: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PigJob); err != nil { - return err - } - case *Job_SparkSqlJob: - b.EncodeVarint(12<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SparkSqlJob); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Job.TypeJob has unexpected type %T", x) - } - return nil -} - -func _Job_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Job) - switch tag { - case 3: // type_job.hadoop_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(HadoopJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_HadoopJob{msg} - return true, err - case 4: // type_job.spark_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(SparkJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_SparkJob{msg} - return true, err - case 5: // type_job.pyspark_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PySparkJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_PysparkJob{msg} - return true, err - case 6: // type_job.hive_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(HiveJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_HiveJob{msg} - return true, err - case 7: // type_job.pig_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PigJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_PigJob{msg} - return true, err - case 12: // type_job.spark_sql_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(SparkSqlJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_SparkSqlJob{msg} - return true, err - default: - return false, nil - } -} - -func _Job_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Job) - // type_job - switch x := m.TypeJob.(type) { - case *Job_HadoopJob: - s := proto.Size(x.HadoopJob) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_SparkJob: - s := proto.Size(x.SparkJob) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_PysparkJob: - s := proto.Size(x.PysparkJob) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_HiveJob: - s := proto.Size(x.HiveJob) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_PigJob: - s := proto.Size(x.PigJob) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_SparkSqlJob: - s := proto.Size(x.SparkSqlJob) - n += proto.SizeVarint(12<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Job scheduling options. -// -// **Beta Feature**: These options are available for testing purposes only. -// They may be changed before final release. -type JobScheduling struct { - // Optional. Maximum number of times per hour a driver may be restarted as - // a result of driver terminating with non-zero code before job is - // reported failed. - // - // A job may be reported as thrashing if driver exits with non-zero code - // 4 times within 10 minute window. - // - // Maximum value is 10. - MaxFailuresPerHour int32 `protobuf:"varint,1,opt,name=max_failures_per_hour,json=maxFailuresPerHour" json:"max_failures_per_hour,omitempty"` -} - -func (m *JobScheduling) Reset() { *m = JobScheduling{} } -func (m *JobScheduling) String() string { return proto.CompactTextString(m) } -func (*JobScheduling) ProtoMessage() {} -func (*JobScheduling) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *JobScheduling) GetMaxFailuresPerHour() int32 { - if m != nil { - return m.MaxFailuresPerHour - } - return 0 -} - -// A request to submit a job. -type SubmitJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The job resource. - Job *Job `protobuf:"bytes,2,opt,name=job" json:"job,omitempty"` -} - -func (m *SubmitJobRequest) Reset() { *m = SubmitJobRequest{} } -func (m *SubmitJobRequest) String() string { return proto.CompactTextString(m) } -func (*SubmitJobRequest) ProtoMessage() {} -func (*SubmitJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *SubmitJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SubmitJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *SubmitJobRequest) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -// A request to get the resource representation for a job in a project. -type GetJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The job ID. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *GetJobRequest) Reset() { *m = GetJobRequest{} } -func (m *GetJobRequest) String() string { return proto.CompactTextString(m) } -func (*GetJobRequest) ProtoMessage() {} -func (*GetJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *GetJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *GetJobRequest) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -// A request to list jobs in a project. -type ListJobsRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,6,opt,name=region" json:"region,omitempty"` - // Optional. The number of results to return in each response. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The page token, returned by a previous call, to request the - // next page of results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. If set, the returned jobs list includes only jobs that were - // submitted to the named cluster. - ClusterName string `protobuf:"bytes,4,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Optional. Specifies enumerated categories of jobs to list. - // (default = match ALL jobs). - // - // If `filter` is provided, `jobStateMatcher` will be ignored. - JobStateMatcher ListJobsRequest_JobStateMatcher `protobuf:"varint,5,opt,name=job_state_matcher,json=jobStateMatcher,enum=google.cloud.dataproc.v1.ListJobsRequest_JobStateMatcher" json:"job_state_matcher,omitempty"` - // Optional. A filter constraining the jobs to list. Filters are - // case-sensitive and have the following syntax: - // - // [field = value] AND [field [= value]] ... - // - // where **field** is `status.state` or `labels.[KEY]`, and `[KEY]` is a label - // key. **value** can be `*` to match all values. - // `status.state` can be either `ACTIVE` or `NON_ACTIVE`. - // Only the logical `AND` operator is supported; space-separated items are - // treated as having an implicit `AND` operator. - // - // Example filter: - // - // status.state = ACTIVE AND labels.env = staging AND labels.starred = * - Filter string `protobuf:"bytes,7,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListJobsRequest) Reset() { *m = ListJobsRequest{} } -func (m *ListJobsRequest) String() string { return proto.CompactTextString(m) } -func (*ListJobsRequest) ProtoMessage() {} -func (*ListJobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *ListJobsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListJobsRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *ListJobsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListJobsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListJobsRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *ListJobsRequest) GetJobStateMatcher() ListJobsRequest_JobStateMatcher { - if m != nil { - return m.JobStateMatcher - } - return ListJobsRequest_ALL -} - -func (m *ListJobsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// A request to update a job. -type UpdateJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,2,opt,name=region" json:"region,omitempty"` - // Required. The job ID. - JobId string `protobuf:"bytes,3,opt,name=job_id,json=jobId" json:"job_id,omitempty"` - // Required. The changes to the job. - Job *Job `protobuf:"bytes,4,opt,name=job" json:"job,omitempty"` - // Required. Specifies the path, relative to <code>Job</code>, of - // the field to update. For example, to update the labels of a Job the - // <code>update_mask</code> parameter would be specified as - // <code>labels</code>, and the `PATCH` request body would specify the new - // value. <strong>Note:</strong> Currently, <code>labels</code> is the only - // field that can be updated. - UpdateMask *google_protobuf5.FieldMask `protobuf:"bytes,5,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateJobRequest) Reset() { *m = UpdateJobRequest{} } -func (m *UpdateJobRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateJobRequest) ProtoMessage() {} -func (*UpdateJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *UpdateJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *UpdateJobRequest) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -func (m *UpdateJobRequest) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -func (m *UpdateJobRequest) GetUpdateMask() *google_protobuf5.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// A list of jobs in a project. -type ListJobsResponse struct { - // Output-only. Jobs list. - Jobs []*Job `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"` - // Optional. This token is included in the response if there are more results - // to fetch. To fetch additional results, provide this value as the - // `page_token` in a subsequent <code>ListJobsRequest</code>. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListJobsResponse) Reset() { *m = ListJobsResponse{} } -func (m *ListJobsResponse) String() string { return proto.CompactTextString(m) } -func (*ListJobsResponse) ProtoMessage() {} -func (*ListJobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } - -func (m *ListJobsResponse) GetJobs() []*Job { - if m != nil { - return m.Jobs - } - return nil -} - -func (m *ListJobsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to cancel a job. -type CancelJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The job ID. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *CancelJobRequest) Reset() { *m = CancelJobRequest{} } -func (m *CancelJobRequest) String() string { return proto.CompactTextString(m) } -func (*CancelJobRequest) ProtoMessage() {} -func (*CancelJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } - -func (m *CancelJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CancelJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *CancelJobRequest) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -// A request to delete a job. -type DeleteJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The job ID. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *DeleteJobRequest) Reset() { *m = DeleteJobRequest{} } -func (m *DeleteJobRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteJobRequest) ProtoMessage() {} -func (*DeleteJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } - -func (m *DeleteJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *DeleteJobRequest) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -func init() { - proto.RegisterType((*LoggingConfig)(nil), "google.cloud.dataproc.v1.LoggingConfig") - proto.RegisterType((*HadoopJob)(nil), "google.cloud.dataproc.v1.HadoopJob") - proto.RegisterType((*SparkJob)(nil), "google.cloud.dataproc.v1.SparkJob") - proto.RegisterType((*PySparkJob)(nil), "google.cloud.dataproc.v1.PySparkJob") - proto.RegisterType((*QueryList)(nil), "google.cloud.dataproc.v1.QueryList") - proto.RegisterType((*HiveJob)(nil), "google.cloud.dataproc.v1.HiveJob") - proto.RegisterType((*SparkSqlJob)(nil), "google.cloud.dataproc.v1.SparkSqlJob") - proto.RegisterType((*PigJob)(nil), "google.cloud.dataproc.v1.PigJob") - proto.RegisterType((*JobPlacement)(nil), "google.cloud.dataproc.v1.JobPlacement") - proto.RegisterType((*JobStatus)(nil), "google.cloud.dataproc.v1.JobStatus") - proto.RegisterType((*JobReference)(nil), "google.cloud.dataproc.v1.JobReference") - proto.RegisterType((*YarnApplication)(nil), "google.cloud.dataproc.v1.YarnApplication") - proto.RegisterType((*Job)(nil), "google.cloud.dataproc.v1.Job") - proto.RegisterType((*JobScheduling)(nil), "google.cloud.dataproc.v1.JobScheduling") - proto.RegisterType((*SubmitJobRequest)(nil), "google.cloud.dataproc.v1.SubmitJobRequest") - proto.RegisterType((*GetJobRequest)(nil), "google.cloud.dataproc.v1.GetJobRequest") - proto.RegisterType((*ListJobsRequest)(nil), "google.cloud.dataproc.v1.ListJobsRequest") - proto.RegisterType((*UpdateJobRequest)(nil), "google.cloud.dataproc.v1.UpdateJobRequest") - proto.RegisterType((*ListJobsResponse)(nil), "google.cloud.dataproc.v1.ListJobsResponse") - proto.RegisterType((*CancelJobRequest)(nil), "google.cloud.dataproc.v1.CancelJobRequest") - proto.RegisterType((*DeleteJobRequest)(nil), "google.cloud.dataproc.v1.DeleteJobRequest") - proto.RegisterEnum("google.cloud.dataproc.v1.LoggingConfig_Level", LoggingConfig_Level_name, LoggingConfig_Level_value) - proto.RegisterEnum("google.cloud.dataproc.v1.JobStatus_State", JobStatus_State_name, JobStatus_State_value) - proto.RegisterEnum("google.cloud.dataproc.v1.JobStatus_Substate", JobStatus_Substate_name, JobStatus_Substate_value) - proto.RegisterEnum("google.cloud.dataproc.v1.YarnApplication_State", YarnApplication_State_name, YarnApplication_State_value) - proto.RegisterEnum("google.cloud.dataproc.v1.ListJobsRequest_JobStateMatcher", ListJobsRequest_JobStateMatcher_name, ListJobsRequest_JobStateMatcher_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for JobController service - -type JobControllerClient interface { - // Submits a job to a cluster. - SubmitJob(ctx context.Context, in *SubmitJobRequest, opts ...grpc.CallOption) (*Job, error) - // Gets the resource representation for a job in a project. - GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) - // Lists regions/{region}/jobs in a project. - ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) - // Updates a job in a project. - UpdateJob(ctx context.Context, in *UpdateJobRequest, opts ...grpc.CallOption) (*Job, error) - // Starts a job cancellation request. To access the job resource - // after cancellation, call - // [regions/{region}/jobs.list](/dataproc/docs/reference/rest/v1/projects.regions.jobs/list) or - // [regions/{region}/jobs.get](/dataproc/docs/reference/rest/v1/projects.regions.jobs/get). - CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*Job, error) - // Deletes the job from the project. If the job is active, the delete fails, - // and the response returns `FAILED_PRECONDITION`. - DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type jobControllerClient struct { - cc *grpc.ClientConn -} - -func NewJobControllerClient(cc *grpc.ClientConn) JobControllerClient { - return &jobControllerClient{cc} -} - -func (c *jobControllerClient) SubmitJob(ctx context.Context, in *SubmitJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.JobController/SubmitJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.JobController/GetJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { - out := new(ListJobsResponse) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.JobController/ListJobs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) UpdateJob(ctx context.Context, in *UpdateJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.JobController/UpdateJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.JobController/CancelJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1.JobController/DeleteJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for JobController service - -type JobControllerServer interface { - // Submits a job to a cluster. - SubmitJob(context.Context, *SubmitJobRequest) (*Job, error) - // Gets the resource representation for a job in a project. - GetJob(context.Context, *GetJobRequest) (*Job, error) - // Lists regions/{region}/jobs in a project. - ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) - // Updates a job in a project. - UpdateJob(context.Context, *UpdateJobRequest) (*Job, error) - // Starts a job cancellation request. To access the job resource - // after cancellation, call - // [regions/{region}/jobs.list](/dataproc/docs/reference/rest/v1/projects.regions.jobs/list) or - // [regions/{region}/jobs.get](/dataproc/docs/reference/rest/v1/projects.regions.jobs/get). - CancelJob(context.Context, *CancelJobRequest) (*Job, error) - // Deletes the job from the project. If the job is active, the delete fails, - // and the response returns `FAILED_PRECONDITION`. - DeleteJob(context.Context, *DeleteJobRequest) (*google_protobuf2.Empty, error) -} - -func RegisterJobControllerServer(s *grpc.Server, srv JobControllerServer) { - s.RegisterService(&_JobController_serviceDesc, srv) -} - -func _JobController_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubmitJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).SubmitJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.JobController/SubmitJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).SubmitJob(ctx, req.(*SubmitJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).GetJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.JobController/GetJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).GetJob(ctx, req.(*GetJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListJobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).ListJobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.JobController/ListJobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).ListJobs(ctx, req.(*ListJobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_UpdateJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).UpdateJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.JobController/UpdateJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).UpdateJob(ctx, req.(*UpdateJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_CancelJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).CancelJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.JobController/CancelJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).CancelJob(ctx, req.(*CancelJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_DeleteJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).DeleteJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1.JobController/DeleteJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).DeleteJob(ctx, req.(*DeleteJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _JobController_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dataproc.v1.JobController", - HandlerType: (*JobControllerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SubmitJob", - Handler: _JobController_SubmitJob_Handler, - }, - { - MethodName: "GetJob", - Handler: _JobController_GetJob_Handler, - }, - { - MethodName: "ListJobs", - Handler: _JobController_ListJobs_Handler, - }, - { - MethodName: "UpdateJob", - Handler: _JobController_UpdateJob_Handler, - }, - { - MethodName: "CancelJob", - Handler: _JobController_CancelJob_Handler, - }, - { - MethodName: "DeleteJob", - Handler: _JobController_DeleteJob_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dataproc/v1/jobs.proto", -} - -func init() { proto.RegisterFile("google/cloud/dataproc/v1/jobs.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 2290 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xcf, 0x73, 0x1b, 0x49, - 0xf5, 0xb7, 0x7e, 0x6b, 0x9e, 0x6c, 0x79, 0xdc, 0x9b, 0xec, 0x57, 0xa5, 0xdd, 0xad, 0xf5, 0x4e, - 0xbe, 0x1b, 0x9c, 0x00, 0x12, 0xd6, 0x42, 0x36, 0x6b, 0x03, 0x59, 0x59, 0x1a, 0x47, 0xf2, 0x2a, - 0xb2, 0x32, 0x92, 0x92, 0x82, 0x2a, 0x6a, 0x32, 0x92, 0xda, 0xf2, 0xd8, 0xa3, 0x99, 0xf1, 0xf4, - 0x8c, 0x2b, 0x4a, 0x2a, 0x17, 0x2e, 0x1c, 0x29, 0xe0, 0x04, 0x55, 0x5c, 0xb8, 0xf1, 0x07, 0xc0, - 0x85, 0xa2, 0xb8, 0x70, 0xe6, 0xc2, 0x81, 0x0b, 0xb5, 0x27, 0x8e, 0xfc, 0x11, 0x54, 0x77, 0xcf, - 0xc8, 0x92, 0x6c, 0xfd, 0x70, 0x02, 0x5b, 0xbb, 0x7b, 0x72, 0x4f, 0xbf, 0x1f, 0xfd, 0xba, 0x3f, - 0x9f, 0x7e, 0xef, 0xb5, 0x0c, 0xb7, 0xfa, 0x96, 0xd5, 0x37, 0x70, 0xbe, 0x6b, 0x58, 0x5e, 0x2f, - 0xdf, 0xd3, 0x5c, 0xcd, 0x76, 0xac, 0x6e, 0xfe, 0x7c, 0x3b, 0x7f, 0x62, 0x75, 0x48, 0xce, 0x76, - 0x2c, 0xd7, 0x42, 0x19, 0xae, 0x94, 0x63, 0x4a, 0xb9, 0x40, 0x29, 0x77, 0xbe, 0x9d, 0x7d, 0xd7, - 0x37, 0xd7, 0x6c, 0x3d, 0xaf, 0x99, 0xa6, 0xe5, 0x6a, 0xae, 0x6e, 0x99, 0xbe, 0x5d, 0xf6, 0x1d, - 0x5f, 0xca, 0xbe, 0x3a, 0xde, 0x51, 0x1e, 0x0f, 0x6c, 0x77, 0xe8, 0x0b, 0x37, 0xa7, 0x85, 0x47, - 0x3a, 0x36, 0x7a, 0xea, 0x40, 0x23, 0xa7, 0xbe, 0xc6, 0xfb, 0xd3, 0x1a, 0xae, 0x3e, 0xc0, 0xc4, - 0xd5, 0x06, 0x36, 0x57, 0x90, 0x3e, 0x0f, 0xc3, 0x5a, 0xcd, 0xea, 0xf7, 0x75, 0xb3, 0x5f, 0xb2, - 0xcc, 0x23, 0xbd, 0x8f, 0x8e, 0x61, 0xa3, 0xe7, 0xe8, 0xe7, 0xd8, 0x51, 0x0d, 0xab, 0xaf, 0x1a, - 0xf8, 0x1c, 0x1b, 0x24, 0x13, 0xde, 0x8c, 0x6c, 0xa5, 0x0a, 0xdf, 0xcf, 0xcd, 0xda, 0x45, 0x6e, - 0xc2, 0x47, 0xae, 0xcc, 0x1c, 0xd4, 0xac, 0x7e, 0x8d, 0x99, 0xcb, 0xa6, 0xeb, 0x0c, 0x95, 0xf5, - 0xde, 0xe4, 0x6c, 0xf6, 0x0c, 0x6e, 0x5c, 0xa5, 0x88, 0x44, 0x88, 0x9c, 0xe2, 0x61, 0x26, 0xb4, - 0x19, 0xda, 0x12, 0x14, 0x3a, 0x44, 0x25, 0x88, 0x9d, 0x6b, 0x86, 0x87, 0x33, 0xe1, 0xcd, 0xd0, - 0x56, 0xba, 0xf0, 0xed, 0x65, 0xe3, 0x60, 0x5e, 0x15, 0x6e, 0xbb, 0x13, 0xbe, 0x1f, 0x92, 0x6c, - 0x88, 0xb1, 0x39, 0x74, 0x13, 0x36, 0x6a, 0xf2, 0x13, 0xb9, 0xa6, 0xb6, 0xeb, 0xcd, 0x86, 0x5c, - 0xaa, 0xee, 0x57, 0xe5, 0xb2, 0xb8, 0x82, 0x12, 0x10, 0x29, 0xd6, 0x6a, 0x62, 0x08, 0x09, 0x10, - 0x6b, 0x29, 0xc5, 0x92, 0x2c, 0x86, 0xe9, 0xb0, 0x2c, 0xef, 0xb5, 0x1f, 0x8a, 0x11, 0x94, 0x84, - 0x68, 0xb5, 0xbe, 0x7f, 0x28, 0x46, 0xe9, 0xe8, 0x69, 0x51, 0xa9, 0x8b, 0x31, 0x2a, 0x96, 0x15, - 0xe5, 0x50, 0x11, 0xe3, 0x74, 0xb8, 0x5f, 0x6c, 0x15, 0x6b, 0x62, 0x82, 0x3a, 0x3a, 0xdc, 0xdf, - 0x17, 0x93, 0xd2, 0x5f, 0x22, 0x20, 0x54, 0xb4, 0x9e, 0x65, 0xd9, 0x07, 0x56, 0x07, 0x7d, 0x13, - 0x36, 0x06, 0x9a, 0x6e, 0xaa, 0x27, 0x9a, 0xa3, 0x1e, 0xe9, 0x06, 0x56, 0x3d, 0x47, 0xe7, 0x1b, - 0xad, 0xac, 0x28, 0x69, 0x2a, 0x3a, 0xd0, 0x9c, 0x7d, 0xdd, 0xc0, 0x6d, 0x47, 0x47, 0xef, 0x03, - 0x30, 0xe5, 0xae, 0xa1, 0x11, 0xc2, 0xb6, 0x4e, 0xb5, 0x04, 0x3a, 0x57, 0xa2, 0x53, 0x08, 0x41, - 0x54, 0x73, 0xfa, 0x24, 0x13, 0xd9, 0x8c, 0x6c, 0x09, 0x0a, 0x1b, 0x23, 0x09, 0xd6, 0xc6, 0x9d, - 0x93, 0x4c, 0x94, 0x09, 0x53, 0x27, 0x23, 0xbf, 0x04, 0xbd, 0x03, 0xc2, 0x85, 0x3c, 0xc6, 0xe4, - 0xc9, 0xa3, 0x40, 0xf8, 0x01, 0xac, 0x6a, 0x4e, 0xf7, 0x58, 0x3f, 0xf7, 0xe5, 0x71, 0x6e, 0xef, - 0xcf, 0x31, 0x95, 0x26, 0x80, 0xed, 0x58, 0x36, 0x76, 0x5c, 0x1d, 0x93, 0x4c, 0x82, 0x71, 0xe3, - 0xa3, 0xd9, 0x98, 0x8c, 0xb6, 0x9f, 0x6b, 0x8c, 0xac, 0x38, 0x25, 0xc6, 0xdc, 0xa0, 0x3a, 0xa4, - 0x0d, 0x0e, 0x9e, 0xda, 0x65, 0xe8, 0x65, 0x92, 0x9b, 0xa1, 0xad, 0x54, 0xe1, 0x1b, 0x4b, 0x82, - 0xad, 0xac, 0x19, 0xe3, 0x9f, 0xd9, 0x1f, 0xc0, 0xfa, 0xd4, 0x72, 0x57, 0x10, 0xeb, 0xc6, 0x38, - 0xb1, 0x84, 0x31, 0xa6, 0xec, 0x25, 0x21, 0xce, 0xf9, 0x2a, 0xfd, 0x39, 0x02, 0xc9, 0xa6, 0xad, - 0x39, 0xa7, 0x5f, 0x1f, 0x00, 0x95, 0x2b, 0x00, 0x2c, 0xcc, 0x3e, 0xe7, 0x60, 0xf7, 0x5f, 0x4d, - 0xfc, 0xfe, 0x1a, 0x01, 0x68, 0x0c, 0x47, 0x08, 0xe6, 0xe1, 0x06, 0x03, 0xc5, 0x1e, 0xba, 0xc7, - 0x96, 0x39, 0x05, 0xa2, 0xc2, 0xd0, 0x6d, 0x30, 0x51, 0x80, 0x62, 0x00, 0x52, 0x78, 0x0c, 0xa4, - 0x2d, 0x10, 0xa7, 0xec, 0x03, 0x10, 0xd3, 0xf6, 0xb8, 0xf1, 0x17, 0x03, 0x67, 0xeb, 0x0a, 0x38, - 0xbf, 0x3b, 0xfb, 0xd8, 0x2f, 0x0e, 0xe3, 0x2b, 0x04, 0xa8, 0xf4, 0x21, 0x08, 0x8f, 0x3d, 0xec, - 0x0c, 0x6b, 0x3a, 0x71, 0x51, 0x06, 0x12, 0x67, 0x1e, 0x76, 0xe8, 0x76, 0x43, 0xec, 0x3c, 0x82, - 0x4f, 0xe9, 0xe7, 0x51, 0x48, 0x54, 0xf4, 0x73, 0x4c, 0xa1, 0xbe, 0x0d, 0x69, 0x3a, 0x3d, 0xbc, - 0x7c, 0x53, 0x57, 0xd9, 0x7c, 0x80, 0x70, 0x19, 0x80, 0xeb, 0x19, 0x3a, 0x71, 0xd9, 0xca, 0xa9, - 0xc2, 0xad, 0xd9, 0xbb, 0x1c, 0x85, 0x41, 0x2f, 0xf3, 0xd9, 0x28, 0xa6, 0x1c, 0xbc, 0xd5, 0xb5, - 0x4c, 0x57, 0x37, 0x3d, 0xac, 0x52, 0x62, 0x68, 0xba, 0xe1, 0x39, 0x38, 0x13, 0xd9, 0x0c, 0x6d, - 0x25, 0x95, 0x8d, 0x40, 0x74, 0x68, 0xee, 0x73, 0x01, 0xd2, 0x40, 0x24, 0x5d, 0x47, 0xb7, 0x5d, - 0xf5, 0x5c, 0x73, 0x74, 0xad, 0x63, 0x60, 0x4e, 0x8e, 0x54, 0xe1, 0xde, 0x9c, 0x5c, 0xca, 0xb7, - 0x96, 0x6b, 0x32, 0xcb, 0x27, 0x81, 0xa1, 0x5f, 0x61, 0xc9, 0xe4, 0x2c, 0x7a, 0x3c, 0x41, 0x8c, - 0x18, 0x73, 0xbe, 0xbd, 0xd8, 0xf9, 0x3c, 0x56, 0x5c, 0xe2, 0x73, 0xfc, 0x12, 0x9f, 0xb3, 0x7b, - 0x70, 0xe3, 0xaa, 0xf8, 0xae, 0x03, 0xf7, 0x9b, 0x5e, 0x7f, 0x61, 0x44, 0x10, 0xe9, 0x4f, 0x51, - 0x48, 0x31, 0xc2, 0x37, 0xcf, 0x8c, 0x2f, 0x9e, 0x15, 0xf8, 0x0a, 0x94, 0x23, 0x0c, 0x88, 0x9d, - 0x05, 0x09, 0x97, 0x87, 0xbb, 0x24, 0xd2, 0xed, 0x09, 0xa4, 0x39, 0x8d, 0xbe, 0xb7, 0xdc, 0x02, - 0xd7, 0x42, 0xfb, 0xfe, 0xe5, 0xec, 0x75, 0x39, 0x4f, 0xc4, 0xdf, 0x28, 0x4f, 0x7c, 0xb9, 0xd8, - 0xf3, 0xcf, 0x28, 0xc4, 0x1b, 0x7a, 0xff, 0xcb, 0x9f, 0x4e, 0x9e, 0xcd, 0x4c, 0x27, 0x73, 0x78, - 0xc0, 0x77, 0xb6, 0x24, 0xc7, 0x1a, 0x57, 0x64, 0x93, 0xef, 0x2c, 0xf4, 0xfd, 0x86, 0xc9, 0xe4, - 0x0a, 0x7a, 0x25, 0xbe, 0x46, 0xf4, 0x6a, 0xc1, 0xea, 0x81, 0xd5, 0x69, 0x18, 0x5a, 0x17, 0x0f, - 0xb0, 0xe9, 0xd2, 0x6a, 0xdf, 0x35, 0x3c, 0xe2, 0x62, 0x47, 0x35, 0xb5, 0x01, 0xf6, 0xfd, 0xa5, - 0xfc, 0xb9, 0xba, 0x36, 0xc0, 0xe3, 0x2a, 0x9e, 0xa7, 0xf7, 0x7c, 0xf7, 0x81, 0x4a, 0xdb, 0xd3, - 0x7b, 0xd2, 0xbf, 0x23, 0x20, 0x1c, 0x58, 0x9d, 0xa6, 0xab, 0xb9, 0x1e, 0x41, 0x0f, 0x20, 0x46, - 0x5c, 0xcd, 0xe5, 0xce, 0xd2, 0x85, 0x3b, 0xb3, 0x0f, 0x6e, 0x64, 0x93, 0xa3, 0x7f, 0xb0, 0xc2, - 0xed, 0x68, 0xb5, 0xed, 0x61, 0x57, 0xd3, 0x0d, 0xbf, 0x89, 0x55, 0x82, 0x4f, 0x54, 0x06, 0x91, - 0xa9, 0xa8, 0xc4, 0xd5, 0x1c, 0x57, 0xa5, 0xaf, 0x4b, 0xff, 0xf6, 0x67, 0x83, 0x55, 0x82, 0xa7, - 0x67, 0xae, 0x15, 0x3c, 0x3d, 0x95, 0x34, 0xb3, 0x69, 0x52, 0x13, 0x3a, 0x89, 0x2a, 0x90, 0x24, - 0x5e, 0x87, 0xc7, 0x98, 0x60, 0x31, 0x7e, 0x6b, 0xa9, 0x18, 0x7d, 0x1b, 0x65, 0x64, 0x2d, 0xfd, - 0x3e, 0x04, 0x31, 0x16, 0x3a, 0x7d, 0xe0, 0x35, 0x5b, 0xc5, 0x96, 0x3c, 0xf5, 0xc0, 0x4b, 0x41, - 0xa2, 0x21, 0xd7, 0xcb, 0xd5, 0xfa, 0x43, 0x31, 0x84, 0xd2, 0x00, 0x4d, 0xb9, 0xd5, 0x6e, 0xa8, - 0xe5, 0xc3, 0xba, 0x2c, 0x26, 0xa9, 0x50, 0x69, 0xd7, 0xeb, 0x54, 0x18, 0x46, 0x08, 0xd2, 0xa5, - 0x62, 0xbd, 0x24, 0xd7, 0xd4, 0xc0, 0x20, 0x32, 0x36, 0xd7, 0x6c, 0x15, 0x95, 0x96, 0x5c, 0x16, - 0x13, 0x68, 0x0d, 0x04, 0x3e, 0x57, 0x93, 0xcb, 0xfc, 0x61, 0xc8, 0xbc, 0x4d, 0x3c, 0x0c, 0xdf, - 0x82, 0xf5, 0x62, 0xab, 0x25, 0x3f, 0x6a, 0xb4, 0xd4, 0xfd, 0x62, 0xb5, 0xd6, 0x56, 0x64, 0x51, - 0x90, 0x2a, 0x90, 0x0c, 0x76, 0x80, 0xd6, 0x21, 0x35, 0x19, 0xe7, 0x1a, 0x08, 0xcd, 0xf6, 0xde, - 0xa3, 0x6a, 0x8b, 0x2e, 0x12, 0x42, 0x00, 0xf1, 0xc7, 0x6d, 0xb9, 0x2d, 0x97, 0xc5, 0x30, 0x12, - 0x61, 0xb5, 0xd9, 0x2a, 0xd6, 0x64, 0x1a, 0x43, 0xab, 0xdd, 0x14, 0x23, 0x52, 0x99, 0x91, 0x48, - 0xc1, 0x47, 0xd8, 0xc1, 0x66, 0x17, 0xa3, 0xf7, 0xd8, 0x45, 0x3d, 0xc1, 0x5d, 0x57, 0xd5, 0x7b, - 0x3e, 0x85, 0x04, 0x7f, 0xa6, 0xda, 0x43, 0x37, 0x21, 0x7e, 0x62, 0x75, 0xd4, 0x11, 0x75, 0x62, - 0x27, 0x56, 0xa7, 0xda, 0x93, 0xfe, 0x10, 0x86, 0xf5, 0x1f, 0x69, 0x8e, 0x59, 0xb4, 0x6d, 0x43, - 0xef, 0xb2, 0x5f, 0x21, 0x68, 0xef, 0x3b, 0x46, 0x43, 0x36, 0x46, 0x72, 0x40, 0x27, 0xfe, 0x18, - 0xcf, 0xcf, 0x86, 0x6a, 0xca, 0xdb, 0x24, 0xa9, 0xb2, 0x90, 0xb4, 0x1d, 0xab, 0xef, 0x60, 0x42, - 0x58, 0x52, 0x0b, 0x2b, 0xa3, 0x6f, 0x4a, 0x71, 0xd7, 0xd1, 0xba, 0xa7, 0xf4, 0xd2, 0x7b, 0x8e, - 0x91, 0x89, 0x72, 0x8a, 0x07, 0x73, 0x6d, 0xc7, 0x90, 0x7e, 0xb6, 0x08, 0xe9, 0x04, 0x44, 0xea, - 0xf2, 0x53, 0x8e, 0x72, 0x5d, 0x7e, 0xaa, 0x36, 0x8b, 0x4f, 0x38, 0xb0, 0x13, 0x47, 0x1b, 0x41, - 0xab, 0x90, 0x2c, 0x96, 0x4a, 0x72, 0xa3, 0xc5, 0xe0, 0x1b, 0xa3, 0x40, 0x8c, 0x8a, 0xf6, 0xab, - 0xf5, 0x6a, 0xb3, 0x22, 0x97, 0xc5, 0x38, 0xc5, 0x80, 0x82, 0xc7, 0x40, 0x07, 0x88, 0x7f, 0x56, - 0x65, 0x88, 0x27, 0xa5, 0x7f, 0x24, 0x21, 0x42, 0xcb, 0x43, 0x19, 0x04, 0x27, 0x80, 0x80, 0x1d, - 0x58, 0xaa, 0x70, 0x7b, 0x2e, 0x8d, 0x47, 0x80, 0x29, 0x17, 0x86, 0xd4, 0x8b, 0x1d, 0x64, 0x03, - 0xbf, 0x76, 0xcc, 0xf7, 0x32, 0xca, 0x1d, 0xca, 0x85, 0x21, 0x2d, 0x41, 0xc7, 0xec, 0xd5, 0xad, - 0x9e, 0x58, 0x1d, 0x76, 0xbc, 0x73, 0x4b, 0xd0, 0xe8, 0x85, 0x4e, 0x4b, 0xd0, 0xf1, 0xe8, 0xd7, - 0x8a, 0x22, 0x08, 0x84, 0x36, 0x0a, 0xcc, 0x49, 0x94, 0x39, 0x91, 0x16, 0xbf, 0x12, 0x2b, 0x2b, - 0x4a, 0x92, 0x04, 0xaf, 0xad, 0x87, 0x90, 0xb2, 0x87, 0x17, 0x4e, 0x62, 0xcc, 0xc9, 0xff, 0x2f, - 0xf3, 0x36, 0xa9, 0xac, 0x28, 0xe0, 0x9b, 0x52, 0x47, 0x3f, 0x84, 0x24, 0x7b, 0x03, 0x51, 0x2f, - 0x3c, 0xc3, 0x7c, 0xb0, 0xb0, 0x91, 0xad, 0xac, 0x28, 0x89, 0x63, 0xff, 0x2d, 0xb0, 0x0b, 0x09, - 0x5b, 0xef, 0x33, 0x73, 0x5e, 0x3f, 0x36, 0x17, 0x55, 0xae, 0xca, 0x8a, 0x12, 0xb7, 0x79, 0xe5, - 0xff, 0x0c, 0xd6, 0xf8, 0x1e, 0xc8, 0x99, 0xc1, 0x5c, 0xac, 0x32, 0x17, 0x1f, 0x2e, 0xd5, 0x60, - 0x55, 0x56, 0x94, 0x14, 0x19, 0xeb, 0x3f, 0x77, 0x21, 0x4e, 0x58, 0x02, 0xf3, 0xdf, 0x53, 0xb7, - 0x96, 0xc8, 0x75, 0x8a, 0x6f, 0x82, 0x0e, 0x20, 0xcd, 0x47, 0xea, 0xb1, 0x4e, 0x5c, 0xcb, 0x19, - 0x66, 0xd6, 0x58, 0x1d, 0x5e, 0xca, 0xc9, 0x1a, 0x37, 0xad, 0x70, 0x4b, 0xf4, 0x04, 0x36, 0x86, - 0x9a, 0x63, 0xaa, 0xda, 0xc5, 0x15, 0x25, 0x19, 0x81, 0xb9, 0xbb, 0xb3, 0xf4, 0xa5, 0x56, 0xc4, - 0xe1, 0xe4, 0x04, 0x41, 0xbb, 0x90, 0xf5, 0x7f, 0x41, 0xb4, 0x3c, 0xd7, 0xf6, 0x5c, 0xd5, 0xc1, - 0xc4, 0xf2, 0x9c, 0x2e, 0xef, 0x99, 0x36, 0xd8, 0x5d, 0xfe, 0x3f, 0xae, 0x71, 0xc8, 0x14, 0x14, - 0x5f, 0x4e, 0x9b, 0xa7, 0x8f, 0x21, 0xe3, 0x1b, 0xd3, 0x16, 0xc7, 0xb1, 0x0c, 0xd6, 0x1d, 0x10, - 0x66, 0xba, 0xce, 0x4c, 0x6f, 0x72, 0x79, 0x89, 0x8b, 0x69, 0x9f, 0x40, 0xa8, 0x61, 0x11, 0xe2, - 0x86, 0xd6, 0xc1, 0x06, 0xc9, 0xa0, 0x45, 0x5b, 0xa0, 0x6d, 0x49, 0x8d, 0xe9, 0xf2, 0x96, 0xc4, - 0x37, 0x44, 0x0f, 0x01, 0x48, 0xf7, 0x18, 0xf7, 0x3c, 0x43, 0x37, 0xfb, 0x99, 0x1b, 0x8b, 0xda, - 0x0c, 0x7a, 0xb0, 0x23, 0x75, 0x65, 0xcc, 0x34, 0xfb, 0x09, 0xa4, 0xc6, 0xfc, 0x5f, 0xab, 0x37, - 0x00, 0x48, 0xba, 0x43, 0x9b, 0xf1, 0x5c, 0xda, 0x83, 0xb5, 0x89, 0x35, 0xd0, 0x36, 0xdc, 0x1c, - 0x68, 0xcf, 0x83, 0x5e, 0x90, 0xa8, 0x36, 0x76, 0xd4, 0x63, 0xcb, 0x73, 0x98, 0xeb, 0x98, 0x82, - 0x06, 0xda, 0x73, 0xbf, 0x1d, 0x24, 0x0d, 0xec, 0x54, 0x2c, 0xcf, 0x91, 0x5e, 0x80, 0xd8, 0xf4, - 0x3a, 0x03, 0xdd, 0x65, 0x09, 0xe7, 0xcc, 0xc3, 0xc4, 0x5d, 0x54, 0x1f, 0xde, 0x86, 0xb8, 0x83, - 0xfb, 0xba, 0x65, 0xb2, 0xc4, 0x21, 0x28, 0xfe, 0x17, 0xca, 0x43, 0x84, 0x72, 0x9f, 0x27, 0xa5, - 0xf7, 0xe6, 0xa7, 0x36, 0xaa, 0x29, 0xfd, 0x04, 0xd6, 0x1e, 0xe2, 0xff, 0xc2, 0xc2, 0x33, 0x0a, - 0xd6, 0xe7, 0x61, 0x58, 0xa7, 0xad, 0xf2, 0x81, 0xd5, 0x21, 0xd7, 0x5e, 0x21, 0x3e, 0xb1, 0xc2, - 0x3b, 0x20, 0xd8, 0x5a, 0x1f, 0xab, 0x44, 0x7f, 0xc1, 0x31, 0x89, 0x29, 0x49, 0x3a, 0xd1, 0xd4, - 0x5f, 0xf0, 0x72, 0x4a, 0x85, 0xae, 0x75, 0x8a, 0x83, 0xd0, 0x98, 0x7a, 0x8b, 0x4e, 0x5c, 0x6a, - 0xd9, 0xa2, 0x97, 0x5b, 0x36, 0x0c, 0x1b, 0x74, 0x03, 0xbc, 0x55, 0x1a, 0x68, 0x6e, 0xf7, 0x18, - 0x3b, 0x2c, 0x17, 0xa6, 0x0b, 0x9f, 0xcc, 0x69, 0x63, 0x27, 0xf7, 0x16, 0x5c, 0x64, 0xfc, 0x88, - 0x3b, 0x50, 0xd6, 0x4f, 0x26, 0x27, 0xe8, 0xee, 0x8e, 0x74, 0xc3, 0xc5, 0x0e, 0x4b, 0x71, 0x82, - 0xe2, 0x7f, 0x49, 0xf7, 0x60, 0x7d, 0xca, 0x36, 0xf8, 0xa1, 0x7b, 0x85, 0x56, 0xb2, 0x62, 0xa9, - 0x55, 0x7d, 0x22, 0xfb, 0x95, 0xf2, 0xb0, 0xae, 0xfa, 0xdf, 0x61, 0xe9, 0x6f, 0x21, 0x10, 0xdb, - 0x76, 0x4f, 0x73, 0xf1, 0xeb, 0x60, 0x18, 0x9e, 0x81, 0x61, 0x64, 0x0c, 0xc3, 0x80, 0x53, 0xd1, - 0x65, 0x39, 0x85, 0x76, 0x21, 0xe5, 0xb1, 0x90, 0xd8, 0xbf, 0x39, 0xfc, 0x82, 0x72, 0xb9, 0xd9, - 0xdc, 0xd7, 0xb1, 0xd1, 0x7b, 0xa4, 0x91, 0x53, 0x05, 0xb8, 0x3a, 0x1d, 0x4b, 0x03, 0x10, 0x2f, - 0x0e, 0x95, 0xd8, 0x96, 0x49, 0x30, 0xda, 0x86, 0xe8, 0x89, 0xd5, 0xe1, 0xbf, 0x23, 0x2d, 0x0c, - 0x81, 0xa9, 0xa2, 0xdb, 0xb0, 0x6e, 0xe2, 0xe7, 0xae, 0x3a, 0xc6, 0x0a, 0xbe, 0xd9, 0x35, 0x3a, - 0xdd, 0x08, 0x98, 0x21, 0x3d, 0x03, 0xb1, 0xa4, 0x99, 0x5d, 0x6c, 0xfc, 0xcf, 0xae, 0xc0, 0x33, - 0x10, 0xcb, 0xd8, 0xc0, 0xaf, 0x07, 0xd0, 0x32, 0x2b, 0x14, 0xfe, 0x98, 0x60, 0x49, 0xc8, 0xcf, - 0xb6, 0x06, 0x76, 0xd0, 0xaf, 0x43, 0x20, 0x8c, 0x52, 0x0a, 0xba, 0x3b, 0xa7, 0x06, 0x4e, 0xe5, - 0x9d, 0xec, 0xfc, 0xc3, 0x95, 0x8a, 0x3f, 0xfd, 0xfb, 0xbf, 0x7e, 0x15, 0xde, 0x95, 0xee, 0xe5, - 0xcf, 0xb7, 0xf3, 0x7e, 0xc0, 0x24, 0xff, 0xf2, 0x62, 0x33, 0xaf, 0xf2, 0x3c, 0x56, 0x92, 0x7f, - 0xc9, 0x07, 0xaf, 0xd8, 0xbf, 0xd8, 0x76, 0x08, 0x5b, 0x68, 0x27, 0x74, 0x17, 0xfd, 0x32, 0x04, - 0x71, 0x9e, 0x72, 0xd0, 0x9c, 0xc4, 0x3d, 0x91, 0x94, 0x16, 0x45, 0xf5, 0x29, 0x8b, 0x6a, 0x07, - 0xdd, 0xbf, 0x66, 0x54, 0xf9, 0x97, 0xfc, 0x38, 0x5f, 0xa1, 0xdf, 0x84, 0x20, 0x19, 0xd0, 0x0e, - 0xdd, 0x59, 0xfa, 0xbe, 0x67, 0xef, 0x2e, 0xa3, 0xca, 0x59, 0x2c, 0x7d, 0xcc, 0xa2, 0xdc, 0x46, - 0xf9, 0x6b, 0x46, 0x89, 0x7e, 0x1b, 0x02, 0x61, 0x74, 0xc7, 0xe7, 0xa1, 0x39, 0x9d, 0x08, 0x16, - 0x9d, 0x9b, 0xcc, 0x22, 0x7a, 0x50, 0x78, 0xed, 0x73, 0xdb, 0x61, 0xf7, 0xfd, 0x77, 0x21, 0x10, - 0x46, 0x97, 0x68, 0x5e, 0x7c, 0xd3, 0x37, 0x6d, 0x51, 0x7c, 0x07, 0x2c, 0xbe, 0xb2, 0xf4, 0xe0, - 0xb5, 0xe3, 0xeb, 0xb2, 0x15, 0x29, 0xed, 0x7e, 0x11, 0x02, 0x61, 0x74, 0x0f, 0xe7, 0x05, 0x39, - 0x7d, 0x59, 0xb3, 0x6f, 0x5f, 0xca, 0x5c, 0xf2, 0xc0, 0x76, 0x87, 0x01, 0xeb, 0xee, 0xbe, 0xf6, - 0xe9, 0xed, 0x0d, 0xe0, 0xdd, 0xae, 0x35, 0x98, 0x19, 0xca, 0x9e, 0x40, 0xf9, 0xd3, 0xa0, 0xab, - 0x36, 0x42, 0x3f, 0xfe, 0xd4, 0x57, 0xeb, 0x5b, 0x86, 0x66, 0xf6, 0x73, 0x96, 0xd3, 0xcf, 0xf7, - 0xb1, 0xc9, 0x62, 0xca, 0x73, 0x91, 0x66, 0xeb, 0xe4, 0xf2, 0xbf, 0xb8, 0x77, 0x83, 0x71, 0x27, - 0xce, 0x94, 0x3f, 0xfa, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0xa8, 0x72, 0x7c, 0x0e, 0x1f, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/operations.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/operations.pb.go deleted file mode 100644 index ecdbdebc..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1/operations.pb.go +++ /dev/null @@ -1,224 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dataproc/v1/operations.proto - -package dataproc - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The operation state. -type ClusterOperationStatus_State int32 - -const ( - // Unused. - ClusterOperationStatus_UNKNOWN ClusterOperationStatus_State = 0 - // The operation has been created. - ClusterOperationStatus_PENDING ClusterOperationStatus_State = 1 - // The operation is running. - ClusterOperationStatus_RUNNING ClusterOperationStatus_State = 2 - // The operation is done; either cancelled or completed. - ClusterOperationStatus_DONE ClusterOperationStatus_State = 3 -) - -var ClusterOperationStatus_State_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", -} -var ClusterOperationStatus_State_value = map[string]int32{ - "UNKNOWN": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, -} - -func (x ClusterOperationStatus_State) String() string { - return proto.EnumName(ClusterOperationStatus_State_name, int32(x)) -} -func (ClusterOperationStatus_State) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 0} -} - -// The status of the operation. -type ClusterOperationStatus struct { - // Output-only. A message containing the operation state. - State ClusterOperationStatus_State `protobuf:"varint,1,opt,name=state,enum=google.cloud.dataproc.v1.ClusterOperationStatus_State" json:"state,omitempty"` - // Output-only. A message containing the detailed operation state. - InnerState string `protobuf:"bytes,2,opt,name=inner_state,json=innerState" json:"inner_state,omitempty"` - // Output-only.A message containing any operation metadata details. - Details string `protobuf:"bytes,3,opt,name=details" json:"details,omitempty"` - // Output-only. The time this state was entered. - StateStartTime *google_protobuf3.Timestamp `protobuf:"bytes,4,opt,name=state_start_time,json=stateStartTime" json:"state_start_time,omitempty"` -} - -func (m *ClusterOperationStatus) Reset() { *m = ClusterOperationStatus{} } -func (m *ClusterOperationStatus) String() string { return proto.CompactTextString(m) } -func (*ClusterOperationStatus) ProtoMessage() {} -func (*ClusterOperationStatus) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *ClusterOperationStatus) GetState() ClusterOperationStatus_State { - if m != nil { - return m.State - } - return ClusterOperationStatus_UNKNOWN -} - -func (m *ClusterOperationStatus) GetInnerState() string { - if m != nil { - return m.InnerState - } - return "" -} - -func (m *ClusterOperationStatus) GetDetails() string { - if m != nil { - return m.Details - } - return "" -} - -func (m *ClusterOperationStatus) GetStateStartTime() *google_protobuf3.Timestamp { - if m != nil { - return m.StateStartTime - } - return nil -} - -// Metadata describing the operation. -type ClusterOperationMetadata struct { - // Output-only. Name of the cluster for the operation. - ClusterName string `protobuf:"bytes,7,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Output-only. Cluster UUID for the operation. - ClusterUuid string `protobuf:"bytes,8,opt,name=cluster_uuid,json=clusterUuid" json:"cluster_uuid,omitempty"` - // Output-only. Current operation status. - Status *ClusterOperationStatus `protobuf:"bytes,9,opt,name=status" json:"status,omitempty"` - // Output-only. The previous operation status. - StatusHistory []*ClusterOperationStatus `protobuf:"bytes,10,rep,name=status_history,json=statusHistory" json:"status_history,omitempty"` - // Output-only. The operation type. - OperationType string `protobuf:"bytes,11,opt,name=operation_type,json=operationType" json:"operation_type,omitempty"` - // Output-only. Short description of operation. - Description string `protobuf:"bytes,12,opt,name=description" json:"description,omitempty"` - // Output-only. Labels associated with the operation - Labels map[string]string `protobuf:"bytes,13,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Output-only. Errors encountered during operation execution. - Warnings []string `protobuf:"bytes,14,rep,name=warnings" json:"warnings,omitempty"` -} - -func (m *ClusterOperationMetadata) Reset() { *m = ClusterOperationMetadata{} } -func (m *ClusterOperationMetadata) String() string { return proto.CompactTextString(m) } -func (*ClusterOperationMetadata) ProtoMessage() {} -func (*ClusterOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ClusterOperationMetadata) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *ClusterOperationMetadata) GetClusterUuid() string { - if m != nil { - return m.ClusterUuid - } - return "" -} - -func (m *ClusterOperationMetadata) GetStatus() *ClusterOperationStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *ClusterOperationMetadata) GetStatusHistory() []*ClusterOperationStatus { - if m != nil { - return m.StatusHistory - } - return nil -} - -func (m *ClusterOperationMetadata) GetOperationType() string { - if m != nil { - return m.OperationType - } - return "" -} - -func (m *ClusterOperationMetadata) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *ClusterOperationMetadata) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *ClusterOperationMetadata) GetWarnings() []string { - if m != nil { - return m.Warnings - } - return nil -} - -func init() { - proto.RegisterType((*ClusterOperationStatus)(nil), "google.cloud.dataproc.v1.ClusterOperationStatus") - proto.RegisterType((*ClusterOperationMetadata)(nil), "google.cloud.dataproc.v1.ClusterOperationMetadata") - proto.RegisterEnum("google.cloud.dataproc.v1.ClusterOperationStatus_State", ClusterOperationStatus_State_name, ClusterOperationStatus_State_value) -} - -func init() { proto.RegisterFile("google/cloud/dataproc/v1/operations.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 553 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x61, 0x6b, 0xd3, 0x40, - 0x18, 0x36, 0xcd, 0xb6, 0xb6, 0x97, 0xb5, 0x96, 0x43, 0xe4, 0x88, 0x83, 0xc5, 0x8a, 0x50, 0xbf, - 0x24, 0x6e, 0x82, 0x4c, 0x05, 0x91, 0xd9, 0xe2, 0xc4, 0x99, 0x96, 0x6c, 0x75, 0xe0, 0x97, 0x72, - 0x6d, 0xce, 0x18, 0x4c, 0xee, 0xc2, 0xdd, 0xa5, 0x92, 0x9f, 0xe3, 0xef, 0xf4, 0x8b, 0xdc, 0x5d, - 0x52, 0xea, 0xe6, 0x40, 0xfd, 0xd4, 0x7b, 0xde, 0xf7, 0x79, 0x9e, 0xbe, 0xcf, 0xcb, 0xdb, 0x82, - 0x27, 0x09, 0x63, 0x49, 0x46, 0x82, 0x55, 0xc6, 0xca, 0x38, 0x88, 0xb1, 0xc4, 0x05, 0x67, 0xab, - 0x60, 0x7d, 0x14, 0xb0, 0x82, 0x70, 0x2c, 0x53, 0x46, 0x85, 0x5f, 0x70, 0x26, 0x19, 0x44, 0x86, - 0xea, 0x6b, 0xaa, 0xdf, 0x50, 0xfd, 0xf5, 0x91, 0x7b, 0x50, 0x9b, 0xe0, 0x22, 0x0d, 0x30, 0xa5, - 0x4c, 0x6e, 0xeb, 0xdc, 0x47, 0x75, 0x37, 0x63, 0x34, 0xe1, 0x25, 0xa5, 0x29, 0x4d, 0x6e, 0x98, - 0xbb, 0x0f, 0x6a, 0x92, 0x46, 0xcb, 0xf2, 0x4b, 0x40, 0xf2, 0x42, 0x56, 0x75, 0xf3, 0xf0, 0x7a, - 0x53, 0xa6, 0x39, 0x11, 0x12, 0xe7, 0x85, 0x21, 0x0c, 0x7f, 0xb4, 0xc0, 0xfd, 0xb7, 0x59, 0x29, - 0x24, 0xe1, 0xd3, 0xc6, 0xf9, 0x42, 0x62, 0x59, 0x0a, 0x78, 0x0e, 0x76, 0x85, 0xc4, 0x92, 0x20, - 0xcb, 0xb3, 0x46, 0xfd, 0xe3, 0xe7, 0xfe, 0x6d, 0x29, 0xfc, 0x3f, 0x1b, 0xf8, 0xea, 0x83, 0x44, - 0xc6, 0x04, 0x1e, 0x02, 0x27, 0xa5, 0x94, 0xf0, 0x85, 0xf1, 0x6c, 0x79, 0xd6, 0xa8, 0x1b, 0x01, - 0x5d, 0xd2, 0x3c, 0x88, 0x40, 0x3b, 0x26, 0x12, 0xa7, 0x99, 0x40, 0xb6, 0x6e, 0x36, 0x10, 0x8e, - 0xc1, 0x40, 0x8b, 0x94, 0x94, 0xcb, 0x85, 0x8a, 0x80, 0x76, 0x3c, 0x6b, 0xe4, 0x1c, 0xbb, 0xcd, - 0x4c, 0x4d, 0x3e, 0xff, 0xb2, 0xc9, 0x17, 0xf5, 0xb5, 0xe6, 0x42, 0x49, 0x54, 0x71, 0x78, 0x02, - 0x76, 0xcd, 0x17, 0x39, 0xa0, 0x3d, 0x0f, 0x3f, 0x84, 0xd3, 0xab, 0x70, 0x70, 0x47, 0x81, 0xd9, - 0x24, 0x1c, 0xbf, 0x0f, 0xdf, 0x0d, 0x2c, 0x05, 0xa2, 0x79, 0x18, 0x2a, 0xd0, 0x82, 0x1d, 0xb0, - 0x33, 0x9e, 0x86, 0x93, 0x81, 0x3d, 0xfc, 0x69, 0x03, 0x74, 0x3d, 0xe2, 0x47, 0x22, 0xb1, 0x5a, - 0x01, 0x7c, 0x08, 0xf6, 0x57, 0xa6, 0xb7, 0xa0, 0x38, 0x27, 0xa8, 0xad, 0x67, 0x77, 0xea, 0x5a, - 0x88, 0x73, 0xb2, 0x4d, 0x29, 0xcb, 0x34, 0x46, 0x9d, 0xdf, 0x28, 0xf3, 0x32, 0x8d, 0xe1, 0x19, - 0xd8, 0x13, 0x7a, 0x69, 0xa8, 0xab, 0x83, 0x3d, 0xfd, 0xd7, 0x65, 0x47, 0xb5, 0x1e, 0x5e, 0x81, - 0xbe, 0x79, 0x2d, 0xbe, 0xa6, 0x42, 0x32, 0x5e, 0x21, 0xe0, 0xd9, 0xff, 0xe5, 0xd8, 0x33, 0x3e, - 0x67, 0xc6, 0x06, 0x3e, 0x06, 0xfd, 0xcd, 0xed, 0x2d, 0x64, 0x55, 0x10, 0xe4, 0xe8, 0x1c, 0xbd, - 0x4d, 0xf5, 0xb2, 0x2a, 0x08, 0xf4, 0x80, 0x13, 0x13, 0xb1, 0xe2, 0x69, 0xa1, 0x4a, 0x68, 0xdf, - 0x64, 0xdd, 0x2a, 0xc1, 0x4f, 0x60, 0x2f, 0xc3, 0x4b, 0x92, 0x09, 0xd4, 0xd3, 0x93, 0xbd, 0xfe, - 0xfb, 0xc9, 0x9a, 0xad, 0xfb, 0xe7, 0xda, 0x60, 0x42, 0x25, 0xaf, 0xa2, 0xda, 0x0d, 0xba, 0xa0, - 0xf3, 0x1d, 0x73, 0xf5, 0x23, 0x11, 0xa8, 0xef, 0xd9, 0xa3, 0x6e, 0xb4, 0xc1, 0xee, 0x0b, 0xe0, - 0x6c, 0x49, 0xe0, 0x00, 0xd8, 0xdf, 0x48, 0xa5, 0x0f, 0xbb, 0x1b, 0xa9, 0x27, 0xbc, 0x07, 0x76, - 0xd7, 0x38, 0x2b, 0x9b, 0xc3, 0x34, 0xe0, 0x65, 0xeb, 0xc4, 0x3a, 0x15, 0xe0, 0x60, 0xc5, 0xf2, - 0x5b, 0x67, 0x3c, 0xbd, 0xbb, 0x99, 0x4e, 0xcc, 0xd4, 0x15, 0xce, 0xac, 0xcf, 0x6f, 0x6a, 0x72, - 0xc2, 0x32, 0x4c, 0x13, 0x9f, 0xf1, 0x24, 0x48, 0x08, 0xd5, 0x37, 0x1a, 0x98, 0x16, 0x2e, 0x52, - 0x71, 0xf3, 0x9f, 0xe3, 0x55, 0xf3, 0x5e, 0xee, 0x69, 0xf2, 0xb3, 0x5f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x09, 0x4c, 0x3d, 0x35, 0x65, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/clusters.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/clusters.pb.go deleted file mode 100644 index 0ba92da1..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/clusters.pb.go +++ /dev/null @@ -1,1775 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dataproc/v1beta2/clusters.proto - -/* -Package dataproc is a generated protocol buffer package. - -It is generated from these files: - google/cloud/dataproc/v1beta2/clusters.proto - google/cloud/dataproc/v1beta2/jobs.proto - google/cloud/dataproc/v1beta2/operations.proto - google/cloud/dataproc/v1beta2/workflow_templates.proto - -It has these top-level messages: - Cluster - ClusterConfig - GceClusterConfig - InstanceGroupConfig - ManagedGroupConfig - AcceleratorConfig - DiskConfig - LifecycleConfig - NodeInitializationAction - ClusterStatus - SoftwareConfig - ClusterMetrics - CreateClusterRequest - UpdateClusterRequest - DeleteClusterRequest - GetClusterRequest - ListClustersRequest - ListClustersResponse - DiagnoseClusterRequest - DiagnoseClusterResults - LoggingConfig - HadoopJob - SparkJob - PySparkJob - QueryList - HiveJob - SparkSqlJob - PigJob - JobPlacement - JobStatus - JobReference - YarnApplication - Job - JobScheduling - SubmitJobRequest - GetJobRequest - ListJobsRequest - UpdateJobRequest - ListJobsResponse - CancelJobRequest - DeleteJobRequest - ClusterOperationStatus - ClusterOperationMetadata - WorkflowTemplate - WorkflowTemplatePlacement - ManagedCluster - ClusterSelector - OrderedJob - WorkflowMetadata - ClusterOperation - WorkflowGraph - WorkflowNode - CreateWorkflowTemplateRequest - GetWorkflowTemplateRequest - InstantiateWorkflowTemplateRequest - UpdateWorkflowTemplateRequest - ListWorkflowTemplatesRequest - ListWorkflowTemplatesResponse - DeleteWorkflowTemplateRequest -*/ -package dataproc - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf4 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf5 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The cluster state. -type ClusterStatus_State int32 - -const ( - // The cluster state is unknown. - ClusterStatus_UNKNOWN ClusterStatus_State = 0 - // The cluster is being created and set up. It is not ready for use. - ClusterStatus_CREATING ClusterStatus_State = 1 - // The cluster is currently running and healthy. It is ready for use. - ClusterStatus_RUNNING ClusterStatus_State = 2 - // The cluster encountered an error. It is not ready for use. - ClusterStatus_ERROR ClusterStatus_State = 3 - // The cluster is being deleted. It cannot be used. - ClusterStatus_DELETING ClusterStatus_State = 4 - // The cluster is being updated. It continues to accept and process jobs. - ClusterStatus_UPDATING ClusterStatus_State = 5 -) - -var ClusterStatus_State_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CREATING", - 2: "RUNNING", - 3: "ERROR", - 4: "DELETING", - 5: "UPDATING", -} -var ClusterStatus_State_value = map[string]int32{ - "UNKNOWN": 0, - "CREATING": 1, - "RUNNING": 2, - "ERROR": 3, - "DELETING": 4, - "UPDATING": 5, -} - -func (x ClusterStatus_State) String() string { - return proto.EnumName(ClusterStatus_State_name, int32(x)) -} -func (ClusterStatus_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 0} } - -type ClusterStatus_Substate int32 - -const ( - ClusterStatus_UNSPECIFIED ClusterStatus_Substate = 0 - // The cluster is known to be in an unhealthy state - // (for example, critical daemons are not running or HDFS capacity is - // exhausted). - // - // Applies to RUNNING state. - ClusterStatus_UNHEALTHY ClusterStatus_Substate = 1 - // The agent-reported status is out of date (may occur if - // Cloud Dataproc loses communication with Agent). - // - // Applies to RUNNING state. - ClusterStatus_STALE_STATUS ClusterStatus_Substate = 2 -) - -var ClusterStatus_Substate_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "UNHEALTHY", - 2: "STALE_STATUS", -} -var ClusterStatus_Substate_value = map[string]int32{ - "UNSPECIFIED": 0, - "UNHEALTHY": 1, - "STALE_STATUS": 2, -} - -func (x ClusterStatus_Substate) String() string { - return proto.EnumName(ClusterStatus_Substate_name, int32(x)) -} -func (ClusterStatus_Substate) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 1} } - -// Describes the identifying information, config, and status of -// a cluster of Google Compute Engine instances. -type Cluster struct { - // Required. The Google Cloud Platform project ID that the cluster belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The cluster name. Cluster names within a project must be - // unique. Names of deleted clusters can be reused. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Required. The cluster config. Note that Cloud Dataproc may set - // default values, and values may change when clusters are updated. - Config *ClusterConfig `protobuf:"bytes,3,opt,name=config" json:"config,omitempty"` - // Optional. The labels to associate with this cluster. - // Label **keys** must contain 1 to 63 characters, and must conform to - // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // Label **values** may be empty, but, if present, must contain 1 to 63 - // characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // No more than 32 labels can be associated with a cluster. - Labels map[string]string `protobuf:"bytes,8,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Output-only. Cluster status. - Status *ClusterStatus `protobuf:"bytes,4,opt,name=status" json:"status,omitempty"` - // Output-only. The previous cluster status. - StatusHistory []*ClusterStatus `protobuf:"bytes,7,rep,name=status_history,json=statusHistory" json:"status_history,omitempty"` - // Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc - // generates this value when it creates the cluster. - ClusterUuid string `protobuf:"bytes,6,opt,name=cluster_uuid,json=clusterUuid" json:"cluster_uuid,omitempty"` - // Contains cluster daemon metrics such as HDFS and YARN stats. - // - // **Beta Feature**: This report is available for testing purposes only. It may - // be changed before final release. - Metrics *ClusterMetrics `protobuf:"bytes,9,opt,name=metrics" json:"metrics,omitempty"` -} - -func (m *Cluster) Reset() { *m = Cluster{} } -func (m *Cluster) String() string { return proto.CompactTextString(m) } -func (*Cluster) ProtoMessage() {} -func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Cluster) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *Cluster) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *Cluster) GetConfig() *ClusterConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *Cluster) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *Cluster) GetStatus() *ClusterStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *Cluster) GetStatusHistory() []*ClusterStatus { - if m != nil { - return m.StatusHistory - } - return nil -} - -func (m *Cluster) GetClusterUuid() string { - if m != nil { - return m.ClusterUuid - } - return "" -} - -func (m *Cluster) GetMetrics() *ClusterMetrics { - if m != nil { - return m.Metrics - } - return nil -} - -// The cluster config. -type ClusterConfig struct { - // Optional. A Google Cloud Storage staging bucket used for sharing generated - // SSH keys and config. If you do not specify a staging bucket, Cloud - // Dataproc will determine an appropriate Cloud Storage location (US, - // ASIA, or EU) for your cluster's staging bucket according to the Google - // Compute Engine zone where your cluster is deployed, and then it will create - // and manage this project-level, per-location bucket for you. - ConfigBucket string `protobuf:"bytes,1,opt,name=config_bucket,json=configBucket" json:"config_bucket,omitempty"` - // Required. The shared Google Compute Engine config settings for - // all instances in a cluster. - GceClusterConfig *GceClusterConfig `protobuf:"bytes,8,opt,name=gce_cluster_config,json=gceClusterConfig" json:"gce_cluster_config,omitempty"` - // Optional. The Google Compute Engine config settings for - // the master instance in a cluster. - MasterConfig *InstanceGroupConfig `protobuf:"bytes,9,opt,name=master_config,json=masterConfig" json:"master_config,omitempty"` - // Optional. The Google Compute Engine config settings for - // worker instances in a cluster. - WorkerConfig *InstanceGroupConfig `protobuf:"bytes,10,opt,name=worker_config,json=workerConfig" json:"worker_config,omitempty"` - // Optional. The Google Compute Engine config settings for - // additional worker instances in a cluster. - SecondaryWorkerConfig *InstanceGroupConfig `protobuf:"bytes,12,opt,name=secondary_worker_config,json=secondaryWorkerConfig" json:"secondary_worker_config,omitempty"` - // Optional. The config settings for software inside the cluster. - SoftwareConfig *SoftwareConfig `protobuf:"bytes,13,opt,name=software_config,json=softwareConfig" json:"software_config,omitempty"` - // Optional. The config setting for auto delete cluster schedule. - LifecycleConfig *LifecycleConfig `protobuf:"bytes,14,opt,name=lifecycle_config,json=lifecycleConfig" json:"lifecycle_config,omitempty"` - // Optional. Commands to execute on each node after config is - // completed. By default, executables are run on master and all worker nodes. - // You can test a node's <code>role</code> metadata to run an executable on - // a master or worker node, as shown below using `curl` (you can also use `wget`): - // - // ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1beta2/instance/attributes/dataproc-role) - // if [[ "${ROLE}" == 'Master' ]]; then - // ... master specific actions ... - // else - // ... worker specific actions ... - // fi - InitializationActions []*NodeInitializationAction `protobuf:"bytes,11,rep,name=initialization_actions,json=initializationActions" json:"initialization_actions,omitempty"` -} - -func (m *ClusterConfig) Reset() { *m = ClusterConfig{} } -func (m *ClusterConfig) String() string { return proto.CompactTextString(m) } -func (*ClusterConfig) ProtoMessage() {} -func (*ClusterConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ClusterConfig) GetConfigBucket() string { - if m != nil { - return m.ConfigBucket - } - return "" -} - -func (m *ClusterConfig) GetGceClusterConfig() *GceClusterConfig { - if m != nil { - return m.GceClusterConfig - } - return nil -} - -func (m *ClusterConfig) GetMasterConfig() *InstanceGroupConfig { - if m != nil { - return m.MasterConfig - } - return nil -} - -func (m *ClusterConfig) GetWorkerConfig() *InstanceGroupConfig { - if m != nil { - return m.WorkerConfig - } - return nil -} - -func (m *ClusterConfig) GetSecondaryWorkerConfig() *InstanceGroupConfig { - if m != nil { - return m.SecondaryWorkerConfig - } - return nil -} - -func (m *ClusterConfig) GetSoftwareConfig() *SoftwareConfig { - if m != nil { - return m.SoftwareConfig - } - return nil -} - -func (m *ClusterConfig) GetLifecycleConfig() *LifecycleConfig { - if m != nil { - return m.LifecycleConfig - } - return nil -} - -func (m *ClusterConfig) GetInitializationActions() []*NodeInitializationAction { - if m != nil { - return m.InitializationActions - } - return nil -} - -// Common config settings for resources of Google Compute Engine cluster -// instances, applicable to all instances in the cluster. -type GceClusterConfig struct { - // Optional. The zone where the Google Compute Engine cluster will be located. - // On a create request, it is required in the "global" region. If omitted - // in a non-global Cloud Dataproc region, the service will pick a zone in the - // corresponding Compute Engine region. On a get request, zone will always be - // present. - // - // A full URL, partial URI, or short name are valid. Examples: - // - // * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]` - // * `projects/[project_id]/zones/[zone]` - // * `us-central1-f` - ZoneUri string `protobuf:"bytes,1,opt,name=zone_uri,json=zoneUri" json:"zone_uri,omitempty"` - // Optional. The Google Compute Engine network to be used for machine - // communications. Cannot be specified with subnetwork_uri. If neither - // `network_uri` nor `subnetwork_uri` is specified, the "default" network of - // the project is used, if it exists. Cannot be a "Custom Subnet Network" (see - // [Using Subnetworks](/compute/docs/subnetworks) for more information). - // - // A full URL, partial URI, or short name are valid. Examples: - // - // * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default` - // * `projects/[project_id]/regions/global/default` - // * `default` - NetworkUri string `protobuf:"bytes,2,opt,name=network_uri,json=networkUri" json:"network_uri,omitempty"` - // Optional. The Google Compute Engine subnetwork to be used for machine - // communications. Cannot be specified with network_uri. - // - // A full URL, partial URI, or short name are valid. Examples: - // - // * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0` - // * `projects/[project_id]/regions/us-east1/sub0` - // * `sub0` - SubnetworkUri string `protobuf:"bytes,6,opt,name=subnetwork_uri,json=subnetworkUri" json:"subnetwork_uri,omitempty"` - // Optional. If true, all instances in the cluster will only have internal IP - // addresses. By default, clusters are not restricted to internal IP addresses, - // and will have ephemeral external IP addresses assigned to each instance. - // This `internal_ip_only` restriction can only be enabled for subnetwork - // enabled networks, and all off-cluster dependencies must be configured to be - // accessible without external IP addresses. - InternalIpOnly bool `protobuf:"varint,7,opt,name=internal_ip_only,json=internalIpOnly" json:"internal_ip_only,omitempty"` - // Optional. The service account of the instances. Defaults to the default - // Google Compute Engine service account. Custom service accounts need - // permissions equivalent to the folloing IAM roles: - // - // * roles/logging.logWriter - // * roles/storage.objectAdmin - // - // (see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts - // for more information). - // Example: `[account_id]@[project_id].iam.gserviceaccount.com` - ServiceAccount string `protobuf:"bytes,8,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // Optional. The URIs of service account scopes to be included in Google - // Compute Engine instances. The following base set of scopes is always - // included: - // - // * https://www.googleapis.com/auth/cloud.useraccounts.readonly - // * https://www.googleapis.com/auth/devstorage.read_write - // * https://www.googleapis.com/auth/logging.write - // - // If no scopes are specified, the following defaults are also provided: - // - // * https://www.googleapis.com/auth/bigquery - // * https://www.googleapis.com/auth/bigtable.admin.table - // * https://www.googleapis.com/auth/bigtable.data - // * https://www.googleapis.com/auth/devstorage.full_control - ServiceAccountScopes []string `protobuf:"bytes,3,rep,name=service_account_scopes,json=serviceAccountScopes" json:"service_account_scopes,omitempty"` - // The Google Compute Engine tags to add to all instances (see - // [Tagging instances](/compute/docs/label-or-tag-resources#tags)). - Tags []string `protobuf:"bytes,4,rep,name=tags" json:"tags,omitempty"` - // The Google Compute Engine metadata entries to add to all instances (see - // [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)). - Metadata map[string]string `protobuf:"bytes,5,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *GceClusterConfig) Reset() { *m = GceClusterConfig{} } -func (m *GceClusterConfig) String() string { return proto.CompactTextString(m) } -func (*GceClusterConfig) ProtoMessage() {} -func (*GceClusterConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *GceClusterConfig) GetZoneUri() string { - if m != nil { - return m.ZoneUri - } - return "" -} - -func (m *GceClusterConfig) GetNetworkUri() string { - if m != nil { - return m.NetworkUri - } - return "" -} - -func (m *GceClusterConfig) GetSubnetworkUri() string { - if m != nil { - return m.SubnetworkUri - } - return "" -} - -func (m *GceClusterConfig) GetInternalIpOnly() bool { - if m != nil { - return m.InternalIpOnly - } - return false -} - -func (m *GceClusterConfig) GetServiceAccount() string { - if m != nil { - return m.ServiceAccount - } - return "" -} - -func (m *GceClusterConfig) GetServiceAccountScopes() []string { - if m != nil { - return m.ServiceAccountScopes - } - return nil -} - -func (m *GceClusterConfig) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -func (m *GceClusterConfig) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -// Optional. The config settings for Google Compute Engine resources in -// an instance group, such as a master or worker group. -type InstanceGroupConfig struct { - // Optional. The number of VM instances in the instance group. - // For master instance groups, must be set to 1. - NumInstances int32 `protobuf:"varint,1,opt,name=num_instances,json=numInstances" json:"num_instances,omitempty"` - // Optional. The list of instance names. Cloud Dataproc derives the names from - // `cluster_name`, `num_instances`, and the instance group if not set by user - // (recommended practice is to let Cloud Dataproc derive the name). - InstanceNames []string `protobuf:"bytes,2,rep,name=instance_names,json=instanceNames" json:"instance_names,omitempty"` - // Output-only. The Google Compute Engine image resource used for cluster - // instances. Inferred from `SoftwareConfig.image_version`. - ImageUri string `protobuf:"bytes,3,opt,name=image_uri,json=imageUri" json:"image_uri,omitempty"` - // Optional. The Google Compute Engine machine type used for cluster instances. - // - // A full URL, partial URI, or short name are valid. Examples: - // - // * `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` - // * `projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2` - // * `n1-standard-2` - MachineTypeUri string `protobuf:"bytes,4,opt,name=machine_type_uri,json=machineTypeUri" json:"machine_type_uri,omitempty"` - // Optional. Disk option config settings. - DiskConfig *DiskConfig `protobuf:"bytes,5,opt,name=disk_config,json=diskConfig" json:"disk_config,omitempty"` - // Optional. Specifies that this instance group contains preemptible instances. - IsPreemptible bool `protobuf:"varint,6,opt,name=is_preemptible,json=isPreemptible" json:"is_preemptible,omitempty"` - // Output-only. The config for Google Compute Engine Instance Group - // Manager that manages this group. - // This is only used for preemptible instance groups. - ManagedGroupConfig *ManagedGroupConfig `protobuf:"bytes,7,opt,name=managed_group_config,json=managedGroupConfig" json:"managed_group_config,omitempty"` - // Optional. The Google Compute Engine accelerator configuration for these - // instances. - // - // **Beta Feature**: This feature is still under development. It may be - // changed before final release. - Accelerators []*AcceleratorConfig `protobuf:"bytes,8,rep,name=accelerators" json:"accelerators,omitempty"` -} - -func (m *InstanceGroupConfig) Reset() { *m = InstanceGroupConfig{} } -func (m *InstanceGroupConfig) String() string { return proto.CompactTextString(m) } -func (*InstanceGroupConfig) ProtoMessage() {} -func (*InstanceGroupConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *InstanceGroupConfig) GetNumInstances() int32 { - if m != nil { - return m.NumInstances - } - return 0 -} - -func (m *InstanceGroupConfig) GetInstanceNames() []string { - if m != nil { - return m.InstanceNames - } - return nil -} - -func (m *InstanceGroupConfig) GetImageUri() string { - if m != nil { - return m.ImageUri - } - return "" -} - -func (m *InstanceGroupConfig) GetMachineTypeUri() string { - if m != nil { - return m.MachineTypeUri - } - return "" -} - -func (m *InstanceGroupConfig) GetDiskConfig() *DiskConfig { - if m != nil { - return m.DiskConfig - } - return nil -} - -func (m *InstanceGroupConfig) GetIsPreemptible() bool { - if m != nil { - return m.IsPreemptible - } - return false -} - -func (m *InstanceGroupConfig) GetManagedGroupConfig() *ManagedGroupConfig { - if m != nil { - return m.ManagedGroupConfig - } - return nil -} - -func (m *InstanceGroupConfig) GetAccelerators() []*AcceleratorConfig { - if m != nil { - return m.Accelerators - } - return nil -} - -// Specifies the resources used to actively manage an instance group. -type ManagedGroupConfig struct { - // Output-only. The name of the Instance Template used for the Managed - // Instance Group. - InstanceTemplateName string `protobuf:"bytes,1,opt,name=instance_template_name,json=instanceTemplateName" json:"instance_template_name,omitempty"` - // Output-only. The name of the Instance Group Manager for this group. - InstanceGroupManagerName string `protobuf:"bytes,2,opt,name=instance_group_manager_name,json=instanceGroupManagerName" json:"instance_group_manager_name,omitempty"` -} - -func (m *ManagedGroupConfig) Reset() { *m = ManagedGroupConfig{} } -func (m *ManagedGroupConfig) String() string { return proto.CompactTextString(m) } -func (*ManagedGroupConfig) ProtoMessage() {} -func (*ManagedGroupConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ManagedGroupConfig) GetInstanceTemplateName() string { - if m != nil { - return m.InstanceTemplateName - } - return "" -} - -func (m *ManagedGroupConfig) GetInstanceGroupManagerName() string { - if m != nil { - return m.InstanceGroupManagerName - } - return "" -} - -// Specifies the type and number of accelerator cards attached to the instances -// of an instance group (see [GPUs on Compute Engine](/compute/docs/gpus/)). -type AcceleratorConfig struct { - // Full URL, partial URI, or short name of the accelerator type resource to - // expose to this instance. See [Google Compute Engine AcceleratorTypes]( - // /compute/docs/reference/beta/acceleratorTypes) - // - // Examples - // * `https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` - // * `projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80` - // * `nvidia-tesla-k80` - AcceleratorTypeUri string `protobuf:"bytes,1,opt,name=accelerator_type_uri,json=acceleratorTypeUri" json:"accelerator_type_uri,omitempty"` - // The number of the accelerator cards of this type exposed to this instance. - AcceleratorCount int32 `protobuf:"varint,2,opt,name=accelerator_count,json=acceleratorCount" json:"accelerator_count,omitempty"` -} - -func (m *AcceleratorConfig) Reset() { *m = AcceleratorConfig{} } -func (m *AcceleratorConfig) String() string { return proto.CompactTextString(m) } -func (*AcceleratorConfig) ProtoMessage() {} -func (*AcceleratorConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *AcceleratorConfig) GetAcceleratorTypeUri() string { - if m != nil { - return m.AcceleratorTypeUri - } - return "" -} - -func (m *AcceleratorConfig) GetAcceleratorCount() int32 { - if m != nil { - return m.AcceleratorCount - } - return 0 -} - -// Specifies the config of disk options for a group of VM instances. -type DiskConfig struct { - // Optional. Size in GB of the boot disk (default is 500GB). - BootDiskSizeGb int32 `protobuf:"varint,1,opt,name=boot_disk_size_gb,json=bootDiskSizeGb" json:"boot_disk_size_gb,omitempty"` - // Optional. Number of attached SSDs, from 0 to 4 (default is 0). - // If SSDs are not attached, the boot disk is used to store runtime logs and - // [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. - // If one or more SSDs are attached, this runtime bulk - // data is spread across them, and the boot disk contains only basic - // config and installed binaries. - NumLocalSsds int32 `protobuf:"varint,2,opt,name=num_local_ssds,json=numLocalSsds" json:"num_local_ssds,omitempty"` -} - -func (m *DiskConfig) Reset() { *m = DiskConfig{} } -func (m *DiskConfig) String() string { return proto.CompactTextString(m) } -func (*DiskConfig) ProtoMessage() {} -func (*DiskConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *DiskConfig) GetBootDiskSizeGb() int32 { - if m != nil { - return m.BootDiskSizeGb - } - return 0 -} - -func (m *DiskConfig) GetNumLocalSsds() int32 { - if m != nil { - return m.NumLocalSsds - } - return 0 -} - -// Specifies the cluster auto delete related schedule configuration. -type LifecycleConfig struct { - // Optional. The longest duration that cluster would keep alive while staying - // idle; passing this threshold will cause cluster to be auto-deleted. - IdleDeleteTtl *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=idle_delete_ttl,json=idleDeleteTtl" json:"idle_delete_ttl,omitempty"` - // Types that are valid to be assigned to Ttl: - // *LifecycleConfig_AutoDeleteTime - // *LifecycleConfig_AutoDeleteTtl - Ttl isLifecycleConfig_Ttl `protobuf_oneof:"ttl"` -} - -func (m *LifecycleConfig) Reset() { *m = LifecycleConfig{} } -func (m *LifecycleConfig) String() string { return proto.CompactTextString(m) } -func (*LifecycleConfig) ProtoMessage() {} -func (*LifecycleConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -type isLifecycleConfig_Ttl interface { - isLifecycleConfig_Ttl() -} - -type LifecycleConfig_AutoDeleteTime struct { - AutoDeleteTime *google_protobuf5.Timestamp `protobuf:"bytes,2,opt,name=auto_delete_time,json=autoDeleteTime,oneof"` -} -type LifecycleConfig_AutoDeleteTtl struct { - AutoDeleteTtl *google_protobuf3.Duration `protobuf:"bytes,3,opt,name=auto_delete_ttl,json=autoDeleteTtl,oneof"` -} - -func (*LifecycleConfig_AutoDeleteTime) isLifecycleConfig_Ttl() {} -func (*LifecycleConfig_AutoDeleteTtl) isLifecycleConfig_Ttl() {} - -func (m *LifecycleConfig) GetTtl() isLifecycleConfig_Ttl { - if m != nil { - return m.Ttl - } - return nil -} - -func (m *LifecycleConfig) GetIdleDeleteTtl() *google_protobuf3.Duration { - if m != nil { - return m.IdleDeleteTtl - } - return nil -} - -func (m *LifecycleConfig) GetAutoDeleteTime() *google_protobuf5.Timestamp { - if x, ok := m.GetTtl().(*LifecycleConfig_AutoDeleteTime); ok { - return x.AutoDeleteTime - } - return nil -} - -func (m *LifecycleConfig) GetAutoDeleteTtl() *google_protobuf3.Duration { - if x, ok := m.GetTtl().(*LifecycleConfig_AutoDeleteTtl); ok { - return x.AutoDeleteTtl - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*LifecycleConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _LifecycleConfig_OneofMarshaler, _LifecycleConfig_OneofUnmarshaler, _LifecycleConfig_OneofSizer, []interface{}{ - (*LifecycleConfig_AutoDeleteTime)(nil), - (*LifecycleConfig_AutoDeleteTtl)(nil), - } -} - -func _LifecycleConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*LifecycleConfig) - // ttl - switch x := m.Ttl.(type) { - case *LifecycleConfig_AutoDeleteTime: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AutoDeleteTime); err != nil { - return err - } - case *LifecycleConfig_AutoDeleteTtl: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AutoDeleteTtl); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("LifecycleConfig.Ttl has unexpected type %T", x) - } - return nil -} - -func _LifecycleConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*LifecycleConfig) - switch tag { - case 2: // ttl.auto_delete_time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf5.Timestamp) - err := b.DecodeMessage(msg) - m.Ttl = &LifecycleConfig_AutoDeleteTime{msg} - return true, err - case 3: // ttl.auto_delete_ttl - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf3.Duration) - err := b.DecodeMessage(msg) - m.Ttl = &LifecycleConfig_AutoDeleteTtl{msg} - return true, err - default: - return false, nil - } -} - -func _LifecycleConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*LifecycleConfig) - // ttl - switch x := m.Ttl.(type) { - case *LifecycleConfig_AutoDeleteTime: - s := proto.Size(x.AutoDeleteTime) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LifecycleConfig_AutoDeleteTtl: - s := proto.Size(x.AutoDeleteTtl) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Specifies an executable to run on a fully configured node and a -// timeout period for executable completion. -type NodeInitializationAction struct { - // Required. Google Cloud Storage URI of executable file. - ExecutableFile string `protobuf:"bytes,1,opt,name=executable_file,json=executableFile" json:"executable_file,omitempty"` - // Optional. Amount of time executable has to complete. Default is - // 10 minutes. Cluster creation fails with an explanatory error message (the - // name of the executable that caused the error and the exceeded timeout - // period) if the executable is not completed at end of the timeout period. - ExecutionTimeout *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=execution_timeout,json=executionTimeout" json:"execution_timeout,omitempty"` -} - -func (m *NodeInitializationAction) Reset() { *m = NodeInitializationAction{} } -func (m *NodeInitializationAction) String() string { return proto.CompactTextString(m) } -func (*NodeInitializationAction) ProtoMessage() {} -func (*NodeInitializationAction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *NodeInitializationAction) GetExecutableFile() string { - if m != nil { - return m.ExecutableFile - } - return "" -} - -func (m *NodeInitializationAction) GetExecutionTimeout() *google_protobuf3.Duration { - if m != nil { - return m.ExecutionTimeout - } - return nil -} - -// The status of a cluster and its instances. -type ClusterStatus struct { - // Output-only. The cluster's state. - State ClusterStatus_State `protobuf:"varint,1,opt,name=state,enum=google.cloud.dataproc.v1beta2.ClusterStatus_State" json:"state,omitempty"` - // Output-only. Optional details of cluster's state. - Detail string `protobuf:"bytes,2,opt,name=detail" json:"detail,omitempty"` - // Output-only. Time when this state was entered. - StateStartTime *google_protobuf5.Timestamp `protobuf:"bytes,3,opt,name=state_start_time,json=stateStartTime" json:"state_start_time,omitempty"` - // Output-only. Additional state information that includes - // status reported by the agent. - Substate ClusterStatus_Substate `protobuf:"varint,4,opt,name=substate,enum=google.cloud.dataproc.v1beta2.ClusterStatus_Substate" json:"substate,omitempty"` -} - -func (m *ClusterStatus) Reset() { *m = ClusterStatus{} } -func (m *ClusterStatus) String() string { return proto.CompactTextString(m) } -func (*ClusterStatus) ProtoMessage() {} -func (*ClusterStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ClusterStatus) GetState() ClusterStatus_State { - if m != nil { - return m.State - } - return ClusterStatus_UNKNOWN -} - -func (m *ClusterStatus) GetDetail() string { - if m != nil { - return m.Detail - } - return "" -} - -func (m *ClusterStatus) GetStateStartTime() *google_protobuf5.Timestamp { - if m != nil { - return m.StateStartTime - } - return nil -} - -func (m *ClusterStatus) GetSubstate() ClusterStatus_Substate { - if m != nil { - return m.Substate - } - return ClusterStatus_UNSPECIFIED -} - -// Specifies the selection and config of software inside the cluster. -type SoftwareConfig struct { - // Optional. The version of software inside the cluster. It must match the - // regular expression `[0-9]+\.[0-9]+`. If unspecified, it defaults to the - // latest version (see [Cloud Dataproc Versioning](/dataproc/versioning)). - ImageVersion string `protobuf:"bytes,1,opt,name=image_version,json=imageVersion" json:"image_version,omitempty"` - // Optional. The properties to set on daemon config files. - // - // Property keys are specified in `prefix:property` format, such as - // `core:fs.defaultFS`. The following are supported prefixes - // and their mappings: - // - // * capacity-scheduler: `capacity-scheduler.xml` - // * core: `core-site.xml` - // * distcp: `distcp-default.xml` - // * hdfs: `hdfs-site.xml` - // * hive: `hive-site.xml` - // * mapred: `mapred-site.xml` - // * pig: `pig.properties` - // * spark: `spark-defaults.conf` - // * yarn: `yarn-site.xml` - // - // For more information, see - // [Cluster properties](/dataproc/docs/concepts/cluster-properties). - Properties map[string]string `protobuf:"bytes,2,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *SoftwareConfig) Reset() { *m = SoftwareConfig{} } -func (m *SoftwareConfig) String() string { return proto.CompactTextString(m) } -func (*SoftwareConfig) ProtoMessage() {} -func (*SoftwareConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *SoftwareConfig) GetImageVersion() string { - if m != nil { - return m.ImageVersion - } - return "" -} - -func (m *SoftwareConfig) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -// Contains cluster daemon metrics, such as HDFS and YARN stats. -// -// **Beta Feature**: This report is available for testing purposes only. It may -// be changed before final release. -type ClusterMetrics struct { - // The HDFS metrics. - HdfsMetrics map[string]int64 `protobuf:"bytes,1,rep,name=hdfs_metrics,json=hdfsMetrics" json:"hdfs_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // The YARN metrics. - YarnMetrics map[string]int64 `protobuf:"bytes,2,rep,name=yarn_metrics,json=yarnMetrics" json:"yarn_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` -} - -func (m *ClusterMetrics) Reset() { *m = ClusterMetrics{} } -func (m *ClusterMetrics) String() string { return proto.CompactTextString(m) } -func (*ClusterMetrics) ProtoMessage() {} -func (*ClusterMetrics) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ClusterMetrics) GetHdfsMetrics() map[string]int64 { - if m != nil { - return m.HdfsMetrics - } - return nil -} - -func (m *ClusterMetrics) GetYarnMetrics() map[string]int64 { - if m != nil { - return m.YarnMetrics - } - return nil -} - -// A request to create a cluster. -type CreateClusterRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The cluster to create. - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster" json:"cluster,omitempty"` -} - -func (m *CreateClusterRequest) Reset() { *m = CreateClusterRequest{} } -func (m *CreateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*CreateClusterRequest) ProtoMessage() {} -func (*CreateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *CreateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *CreateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -// A request to update a cluster. -type UpdateClusterRequest struct { - // Required. The ID of the Google Cloud Platform project the - // cluster belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,5,opt,name=region" json:"region,omitempty"` - // Required. The cluster name. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Required. The changes to the cluster. - Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"` - // Optional. Timeout for graceful YARN decomissioning. Graceful - // decommissioning allows removing nodes from the cluster without - // interrupting jobs in progress. Timeout specifies how long to wait for jobs - // in progress to finish before forcefully removing nodes (and potentially - // interrupting jobs). Default timeout is 0 (for forceful decommission), and - // the maximum allowed timeout is 1 day. - // - // Only supported on Dataproc image versions 1.2 and higher. - GracefulDecommissionTimeout *google_protobuf3.Duration `protobuf:"bytes,6,opt,name=graceful_decommission_timeout,json=gracefulDecommissionTimeout" json:"graceful_decommission_timeout,omitempty"` - // Required. Specifies the path, relative to <code>Cluster</code>, of - // the field to update. For example, to change the number of workers - // in a cluster to 5, the <code>update_mask</code> parameter would be - // specified as <code>config.worker_config.num_instances</code>, - // and the `PATCH` request body would specify the new value, as follows: - // - // { - // "config":{ - // "workerConfig":{ - // "numInstances":"5" - // } - // } - // } - // Similarly, to change the number of preemptible workers in a cluster to 5, the - // <code>update_mask</code> parameter would be <code>config.secondary_worker_config.num_instances</code>, - // and the `PATCH` request body would be set as follows: - // - // { - // "config":{ - // "secondaryWorkerConfig":{ - // "numInstances":"5" - // } - // } - // } - // <strong>Note:</strong> currently only some fields can be updated: - // |Mask|Purpose| - // |`labels`|Updates labels| - // |`config.worker_config.num_instances`|Resize primary worker group| - // |`config.secondary_worker_config.num_instances`|Resize secondary worker group| - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateClusterRequest) Reset() { *m = UpdateClusterRequest{} } -func (m *UpdateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateClusterRequest) ProtoMessage() {} -func (*UpdateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *UpdateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *UpdateClusterRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *UpdateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -func (m *UpdateClusterRequest) GetGracefulDecommissionTimeout() *google_protobuf3.Duration { - if m != nil { - return m.GracefulDecommissionTimeout - } - return nil -} - -func (m *UpdateClusterRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// A request to delete a cluster. -type DeleteClusterRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The cluster name. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Optional. Specifying the `cluster_uuid` means the RPC should fail - // (with error NOT_FOUND) if cluster with specified UUID does not exist. - ClusterUuid string `protobuf:"bytes,4,opt,name=cluster_uuid,json=clusterUuid" json:"cluster_uuid,omitempty"` -} - -func (m *DeleteClusterRequest) Reset() { *m = DeleteClusterRequest{} } -func (m *DeleteClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteClusterRequest) ProtoMessage() {} -func (*DeleteClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *DeleteClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *DeleteClusterRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *DeleteClusterRequest) GetClusterUuid() string { - if m != nil { - return m.ClusterUuid - } - return "" -} - -// Request to get the resource representation for a cluster in a project. -type GetClusterRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The cluster name. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` -} - -func (m *GetClusterRequest) Reset() { *m = GetClusterRequest{} } -func (m *GetClusterRequest) String() string { return proto.CompactTextString(m) } -func (*GetClusterRequest) ProtoMessage() {} -func (*GetClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *GetClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *GetClusterRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -// A request to list the clusters in a project. -type ListClustersRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,4,opt,name=region" json:"region,omitempty"` - // Optional. A filter constraining the clusters to list. Filters are - // case-sensitive and have the following syntax: - // - // field = value [AND [field = value]] ... - // - // where **field** is one of `status.state`, `clusterName`, or `labels.[KEY]`, - // and `[KEY]` is a label key. **value** can be `*` to match all values. - // `status.state` can be one of the following: `ACTIVE`, `INACTIVE`, - // `CREATING`, `RUNNING`, `ERROR`, `DELETING`, or `UPDATING`. `ACTIVE` - // contains the `CREATING`, `UPDATING`, and `RUNNING` states. `INACTIVE` - // contains the `DELETING` and `ERROR` states. - // `clusterName` is the name of the cluster provided at creation time. - // Only the logical `AND` operator is supported; space-separated items are - // treated as having an implicit `AND` operator. - // - // Example filter: - // - // status.state = ACTIVE AND clusterName = mycluster - // AND labels.env = staging AND labels.starred = * - Filter string `protobuf:"bytes,5,opt,name=filter" json:"filter,omitempty"` - // Optional. The standard List page size. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The standard List page token. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListClustersRequest) Reset() { *m = ListClustersRequest{} } -func (m *ListClustersRequest) String() string { return proto.CompactTextString(m) } -func (*ListClustersRequest) ProtoMessage() {} -func (*ListClustersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *ListClustersRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListClustersRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *ListClustersRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListClustersRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListClustersRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The list of all clusters in a project. -type ListClustersResponse struct { - // Output-only. The clusters in the project. - Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters" json:"clusters,omitempty"` - // Output-only. This token is included in the response if there are more - // results to fetch. To fetch additional results, provide this value as the - // `page_token` in a subsequent <code>ListClustersRequest</code>. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListClustersResponse) Reset() { *m = ListClustersResponse{} } -func (m *ListClustersResponse) String() string { return proto.CompactTextString(m) } -func (*ListClustersResponse) ProtoMessage() {} -func (*ListClustersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *ListClustersResponse) GetClusters() []*Cluster { - if m != nil { - return m.Clusters - } - return nil -} - -func (m *ListClustersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to collect cluster diagnostic information. -type DiagnoseClusterRequest struct { - // Required. The ID of the Google Cloud Platform project that the cluster - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The cluster name. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` -} - -func (m *DiagnoseClusterRequest) Reset() { *m = DiagnoseClusterRequest{} } -func (m *DiagnoseClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DiagnoseClusterRequest) ProtoMessage() {} -func (*DiagnoseClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *DiagnoseClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DiagnoseClusterRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *DiagnoseClusterRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -// The location of diagnostic output. -type DiagnoseClusterResults struct { - // Output-only. The Google Cloud Storage URI of the diagnostic output. - // The output report is a plain text file with a summary of collected - // diagnostics. - OutputUri string `protobuf:"bytes,1,opt,name=output_uri,json=outputUri" json:"output_uri,omitempty"` -} - -func (m *DiagnoseClusterResults) Reset() { *m = DiagnoseClusterResults{} } -func (m *DiagnoseClusterResults) String() string { return proto.CompactTextString(m) } -func (*DiagnoseClusterResults) ProtoMessage() {} -func (*DiagnoseClusterResults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *DiagnoseClusterResults) GetOutputUri() string { - if m != nil { - return m.OutputUri - } - return "" -} - -func init() { - proto.RegisterType((*Cluster)(nil), "google.cloud.dataproc.v1beta2.Cluster") - proto.RegisterType((*ClusterConfig)(nil), "google.cloud.dataproc.v1beta2.ClusterConfig") - proto.RegisterType((*GceClusterConfig)(nil), "google.cloud.dataproc.v1beta2.GceClusterConfig") - proto.RegisterType((*InstanceGroupConfig)(nil), "google.cloud.dataproc.v1beta2.InstanceGroupConfig") - proto.RegisterType((*ManagedGroupConfig)(nil), "google.cloud.dataproc.v1beta2.ManagedGroupConfig") - proto.RegisterType((*AcceleratorConfig)(nil), "google.cloud.dataproc.v1beta2.AcceleratorConfig") - proto.RegisterType((*DiskConfig)(nil), "google.cloud.dataproc.v1beta2.DiskConfig") - proto.RegisterType((*LifecycleConfig)(nil), "google.cloud.dataproc.v1beta2.LifecycleConfig") - proto.RegisterType((*NodeInitializationAction)(nil), "google.cloud.dataproc.v1beta2.NodeInitializationAction") - proto.RegisterType((*ClusterStatus)(nil), "google.cloud.dataproc.v1beta2.ClusterStatus") - proto.RegisterType((*SoftwareConfig)(nil), "google.cloud.dataproc.v1beta2.SoftwareConfig") - proto.RegisterType((*ClusterMetrics)(nil), "google.cloud.dataproc.v1beta2.ClusterMetrics") - proto.RegisterType((*CreateClusterRequest)(nil), "google.cloud.dataproc.v1beta2.CreateClusterRequest") - proto.RegisterType((*UpdateClusterRequest)(nil), "google.cloud.dataproc.v1beta2.UpdateClusterRequest") - proto.RegisterType((*DeleteClusterRequest)(nil), "google.cloud.dataproc.v1beta2.DeleteClusterRequest") - proto.RegisterType((*GetClusterRequest)(nil), "google.cloud.dataproc.v1beta2.GetClusterRequest") - proto.RegisterType((*ListClustersRequest)(nil), "google.cloud.dataproc.v1beta2.ListClustersRequest") - proto.RegisterType((*ListClustersResponse)(nil), "google.cloud.dataproc.v1beta2.ListClustersResponse") - proto.RegisterType((*DiagnoseClusterRequest)(nil), "google.cloud.dataproc.v1beta2.DiagnoseClusterRequest") - proto.RegisterType((*DiagnoseClusterResults)(nil), "google.cloud.dataproc.v1beta2.DiagnoseClusterResults") - proto.RegisterEnum("google.cloud.dataproc.v1beta2.ClusterStatus_State", ClusterStatus_State_name, ClusterStatus_State_value) - proto.RegisterEnum("google.cloud.dataproc.v1beta2.ClusterStatus_Substate", ClusterStatus_Substate_name, ClusterStatus_Substate_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ClusterController service - -type ClusterControllerClient interface { - // Creates a cluster in a project. - CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Updates a cluster in a project. - UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes a cluster in a project. - DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Gets the resource representation for a cluster in a project. - GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) - // Lists all regions/{region}/clusters in a project. - ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) - // Gets cluster diagnostic information. - // After the operation completes, the Operation.response field - // contains `DiagnoseClusterOutputLocation`. - DiagnoseCluster(ctx context.Context, in *DiagnoseClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type clusterControllerClient struct { - cc *grpc.ClientConn -} - -func NewClusterControllerClient(cc *grpc.ClientConn) ClusterControllerClient { - return &clusterControllerClient{cc} -} - -func (c *clusterControllerClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.ClusterController/CreateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.ClusterController/UpdateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.ClusterController/DeleteCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.ClusterController/GetCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) { - out := new(ListClustersResponse) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.ClusterController/ListClusters", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterControllerClient) DiagnoseCluster(ctx context.Context, in *DiagnoseClusterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.ClusterController/DiagnoseCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ClusterController service - -type ClusterControllerServer interface { - // Creates a cluster in a project. - CreateCluster(context.Context, *CreateClusterRequest) (*google_longrunning.Operation, error) - // Updates a cluster in a project. - UpdateCluster(context.Context, *UpdateClusterRequest) (*google_longrunning.Operation, error) - // Deletes a cluster in a project. - DeleteCluster(context.Context, *DeleteClusterRequest) (*google_longrunning.Operation, error) - // Gets the resource representation for a cluster in a project. - GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) - // Lists all regions/{region}/clusters in a project. - ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) - // Gets cluster diagnostic information. - // After the operation completes, the Operation.response field - // contains `DiagnoseClusterOutputLocation`. - DiagnoseCluster(context.Context, *DiagnoseClusterRequest) (*google_longrunning.Operation, error) -} - -func RegisterClusterControllerServer(s *grpc.Server, srv ClusterControllerServer) { - s.RegisterService(&_ClusterController_serviceDesc, srv) -} - -func _ClusterController_CreateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).CreateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.ClusterController/CreateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).CreateCluster(ctx, req.(*CreateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).UpdateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.ClusterController/UpdateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).UpdateCluster(ctx, req.(*UpdateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_DeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).DeleteCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.ClusterController/DeleteCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).DeleteCluster(ctx, req.(*DeleteClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_GetCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).GetCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.ClusterController/GetCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).GetCluster(ctx, req.(*GetClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_ListClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClustersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).ListClusters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.ClusterController/ListClusters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).ListClusters(ctx, req.(*ListClustersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterController_DiagnoseCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DiagnoseClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterControllerServer).DiagnoseCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.ClusterController/DiagnoseCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterControllerServer).DiagnoseCluster(ctx, req.(*DiagnoseClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ClusterController_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dataproc.v1beta2.ClusterController", - HandlerType: (*ClusterControllerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateCluster", - Handler: _ClusterController_CreateCluster_Handler, - }, - { - MethodName: "UpdateCluster", - Handler: _ClusterController_UpdateCluster_Handler, - }, - { - MethodName: "DeleteCluster", - Handler: _ClusterController_DeleteCluster_Handler, - }, - { - MethodName: "GetCluster", - Handler: _ClusterController_GetCluster_Handler, - }, - { - MethodName: "ListClusters", - Handler: _ClusterController_ListClusters_Handler, - }, - { - MethodName: "DiagnoseCluster", - Handler: _ClusterController_DiagnoseCluster_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dataproc/v1beta2/clusters.proto", -} - -func init() { proto.RegisterFile("google/cloud/dataproc/v1beta2/clusters.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2093 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcd, 0x72, 0x1b, 0xc7, - 0x11, 0xd6, 0x12, 0x04, 0x09, 0x36, 0x08, 0x10, 0x1c, 0xd3, 0x0c, 0x4c, 0x45, 0xb1, 0xbc, 0x4e, - 0x1c, 0xda, 0x71, 0x00, 0x9b, 0x8a, 0xcb, 0x8e, 0x14, 0xb9, 0x4c, 0x91, 0x14, 0x49, 0x87, 0xa2, - 0x98, 0x05, 0x20, 0x45, 0x49, 0xa9, 0xb6, 0x06, 0xbb, 0x43, 0x68, 0xcc, 0xfd, 0xcb, 0xce, 0xac, - 0x6c, 0x48, 0xa5, 0x8b, 0x6f, 0xa9, 0x1c, 0x72, 0xf0, 0x03, 0xc4, 0xe7, 0x1c, 0x72, 0x4a, 0x55, - 0x2a, 0x87, 0xdc, 0x72, 0xce, 0xc5, 0xa9, 0x3c, 0x41, 0x0e, 0x79, 0x84, 0x1c, 0x53, 0xf3, 0xb3, - 0xc0, 0x2e, 0x48, 0x69, 0x09, 0x46, 0xe5, 0x13, 0x76, 0x7a, 0xfa, 0xe7, 0x9b, 0xee, 0x9e, 0x9e, - 0x9e, 0x01, 0xbc, 0x3b, 0x08, 0xc3, 0x81, 0x47, 0xda, 0x8e, 0x17, 0x26, 0x6e, 0xdb, 0xc5, 0x1c, - 0x47, 0x71, 0xe8, 0xb4, 0x1f, 0xbf, 0xdf, 0x27, 0x1c, 0x6f, 0xb4, 0x1d, 0x2f, 0x61, 0x9c, 0xc4, - 0xac, 0x15, 0xc5, 0x21, 0x0f, 0xd1, 0x15, 0xc5, 0xdd, 0x92, 0xdc, 0xad, 0x94, 0xbb, 0xa5, 0xb9, - 0xd7, 0xbe, 0xab, 0x95, 0xe1, 0x88, 0xb6, 0x71, 0x10, 0x84, 0x1c, 0x73, 0x1a, 0x06, 0x5a, 0x78, - 0xed, 0x4d, 0x3d, 0xeb, 0x85, 0xc1, 0x20, 0x4e, 0x82, 0x80, 0x06, 0x83, 0x76, 0x18, 0x91, 0x38, - 0xc7, 0xf4, 0x3d, 0xcd, 0x24, 0x47, 0xfd, 0xe4, 0xb8, 0xed, 0x26, 0x8a, 0x41, 0xcf, 0x5f, 0x9d, - 0x9c, 0x3f, 0xa6, 0xc4, 0x73, 0x6d, 0x1f, 0xb3, 0x13, 0xcd, 0xf1, 0xfa, 0x24, 0x07, 0xa7, 0x3e, - 0x61, 0x1c, 0xfb, 0x91, 0x62, 0x30, 0xff, 0x30, 0x0b, 0xf3, 0x5b, 0x6a, 0x5d, 0xe8, 0x0a, 0x40, - 0x14, 0x87, 0x9f, 0x11, 0x87, 0xdb, 0xd4, 0x6d, 0x1a, 0x57, 0x8d, 0xf5, 0x05, 0x6b, 0x41, 0x53, - 0xf6, 0x5d, 0xf4, 0x06, 0x2c, 0x6a, 0x0f, 0xd8, 0x01, 0xf6, 0x49, 0x73, 0x46, 0x32, 0x54, 0x35, - 0xed, 0x10, 0xfb, 0x04, 0x6d, 0xc3, 0x9c, 0x13, 0x06, 0xc7, 0x74, 0xd0, 0x2c, 0x5d, 0x35, 0xd6, - 0xab, 0x1b, 0xef, 0xb6, 0x5e, 0xe8, 0xa3, 0x96, 0xb6, 0xbc, 0x25, 0x65, 0x2c, 0x2d, 0x8b, 0x3e, - 0x85, 0x39, 0x0f, 0xf7, 0x89, 0xc7, 0x9a, 0x95, 0xab, 0xa5, 0xf5, 0xea, 0xc6, 0xc6, 0xf9, 0xb4, - 0xb4, 0x0e, 0xa4, 0xd0, 0x4e, 0xc0, 0xe3, 0xa1, 0xa5, 0x35, 0x08, 0x44, 0x8c, 0x63, 0x9e, 0xb0, - 0xe6, 0xec, 0x34, 0x88, 0x3a, 0x52, 0xc6, 0xd2, 0xb2, 0xa8, 0x03, 0x75, 0xf5, 0x65, 0x3f, 0xa2, - 0x8c, 0x87, 0xf1, 0xb0, 0x39, 0x2f, 0x91, 0x4d, 0xa7, 0xad, 0xa6, 0x74, 0xec, 0x29, 0x15, 0x59, - 0x7f, 0x26, 0x09, 0x75, 0x9b, 0x73, 0x39, 0x7f, 0xf6, 0x12, 0xea, 0xa2, 0x5d, 0x98, 0xf7, 0x09, - 0x8f, 0xa9, 0xc3, 0x9a, 0x0b, 0x12, 0xfe, 0x8f, 0xcf, 0x67, 0xf0, 0x8e, 0x12, 0xb2, 0x52, 0xe9, - 0xb5, 0x9f, 0x42, 0x35, 0xe3, 0x1d, 0xd4, 0x80, 0xd2, 0x09, 0x19, 0xea, 0x10, 0x8b, 0x4f, 0xb4, - 0x02, 0xe5, 0xc7, 0xd8, 0x4b, 0xd2, 0xa8, 0xaa, 0xc1, 0xf5, 0x99, 0x8f, 0x0c, 0xf3, 0x9f, 0x65, - 0xa8, 0xe5, 0xe2, 0x84, 0xde, 0x84, 0x9a, 0x8a, 0x94, 0xdd, 0x4f, 0x9c, 0x13, 0xc2, 0xb5, 0x9e, - 0x45, 0x45, 0xbc, 0x25, 0x69, 0xe8, 0x21, 0xa0, 0x81, 0x43, 0xec, 0x74, 0x85, 0x3a, 0x2d, 0x2a, - 0x72, 0x15, 0xed, 0x82, 0x55, 0xec, 0x3a, 0x24, 0x9f, 0x19, 0x8d, 0xc1, 0x04, 0x05, 0xdd, 0x87, - 0x9a, 0x8f, 0xb3, 0x9a, 0x95, 0x7f, 0x8a, 0x52, 0x65, 0x3f, 0x60, 0x1c, 0x07, 0x0e, 0xd9, 0x8d, - 0xc3, 0x24, 0xd2, 0xca, 0x17, 0x95, 0xa2, 0xb1, 0xe2, 0xcf, 0xc3, 0xf8, 0x64, 0xac, 0x18, 0x2e, - 0xae, 0x58, 0x29, 0xd2, 0x8a, 0x3f, 0x83, 0xef, 0x30, 0xe2, 0x84, 0x81, 0x8b, 0xe3, 0xa1, 0x9d, - 0x37, 0xb1, 0x78, 0x61, 0x13, 0xaf, 0x8e, 0x54, 0xde, 0xcf, 0xda, 0xba, 0x07, 0x4b, 0x2c, 0x3c, - 0xe6, 0x9f, 0xe3, 0x98, 0xa4, 0x36, 0x6a, 0xe7, 0xca, 0x9f, 0x8e, 0x96, 0xd2, 0xea, 0xeb, 0x2c, - 0x37, 0x46, 0x0f, 0xa0, 0xe1, 0xd1, 0x63, 0xe2, 0x0c, 0x1d, 0x6f, 0xa4, 0xb8, 0x2e, 0x15, 0xb7, - 0x0a, 0x14, 0x1f, 0xa4, 0x62, 0x5a, 0xf3, 0x92, 0x97, 0x27, 0xa0, 0x00, 0x56, 0x69, 0x40, 0x39, - 0xc5, 0x1e, 0x7d, 0x22, 0x6b, 0x9c, 0x8d, 0x1d, 0x59, 0x0b, 0x9b, 0x55, 0xb9, 0xd5, 0x3e, 0x2c, - 0x30, 0x70, 0x18, 0xba, 0x64, 0x3f, 0xa7, 0x60, 0x53, 0xca, 0x5b, 0xaf, 0xd2, 0x33, 0xa8, 0xcc, - 0xfc, 0x63, 0x09, 0x1a, 0x93, 0x79, 0x86, 0x5e, 0x83, 0xca, 0x93, 0x30, 0x20, 0x76, 0x12, 0x53, - 0x9d, 0xd4, 0xf3, 0x62, 0xdc, 0x8b, 0x29, 0x7a, 0x1d, 0xaa, 0x01, 0xe1, 0x22, 0x6e, 0x72, 0x56, - 0x6d, 0x13, 0xd0, 0x24, 0xc1, 0xf0, 0x03, 0xa8, 0xb3, 0xa4, 0x9f, 0xe5, 0x51, 0x1b, 0xba, 0x36, - 0xa6, 0x0a, 0xb6, 0x75, 0x68, 0xd0, 0x80, 0x93, 0x38, 0xc0, 0x9e, 0x4d, 0x23, 0x3b, 0x0c, 0x3c, - 0x51, 0x4c, 0x8c, 0xf5, 0x8a, 0x55, 0x4f, 0xe9, 0xfb, 0xd1, 0xdd, 0xc0, 0x1b, 0xa2, 0x1f, 0xc2, - 0x12, 0x23, 0xf1, 0x63, 0xea, 0x10, 0x1b, 0x3b, 0x4e, 0x98, 0x04, 0x5c, 0x6e, 0x9f, 0x05, 0xab, - 0xae, 0xc9, 0x9b, 0x8a, 0x8a, 0x7e, 0x02, 0xab, 0x13, 0x8c, 0x36, 0x73, 0xc2, 0x88, 0xb0, 0x66, - 0xe9, 0x6a, 0x69, 0x7d, 0xc1, 0x5a, 0xc9, 0xf3, 0x77, 0xe4, 0x1c, 0x42, 0x30, 0xcb, 0xf1, 0x40, - 0xd4, 0x45, 0xc1, 0x23, 0xbf, 0xd1, 0x03, 0xa8, 0xf8, 0x84, 0x63, 0xe1, 0xdc, 0x66, 0x59, 0xba, - 0xfd, 0xe6, 0x94, 0x5b, 0xb5, 0x75, 0x47, 0xcb, 0xab, 0x32, 0x3c, 0x52, 0xb7, 0x76, 0x03, 0x6a, - 0xb9, 0xa9, 0xa9, 0x6a, 0xd0, 0xbf, 0x4a, 0xf0, 0xca, 0x19, 0xe9, 0x2f, 0x2a, 0x51, 0x90, 0xf8, - 0x36, 0xd5, 0x53, 0x4c, 0x6a, 0x2b, 0x5b, 0x8b, 0x41, 0xe2, 0xa7, 0xec, 0x4c, 0x04, 0x26, 0x65, - 0x90, 0x07, 0x17, 0x6b, 0xce, 0xc8, 0x25, 0xd7, 0x52, 0xaa, 0x38, 0xba, 0x18, 0xba, 0x0c, 0x0b, - 0xd4, 0xc7, 0x03, 0x15, 0xfc, 0x92, 0x44, 0x50, 0x91, 0x04, 0x1d, 0x35, 0x1f, 0x3b, 0x8f, 0x68, - 0x40, 0x6c, 0x3e, 0x8c, 0x14, 0xcf, 0xac, 0x0a, 0x86, 0xa6, 0x77, 0x87, 0x91, 0xe4, 0xfc, 0x14, - 0xaa, 0x2e, 0x65, 0x27, 0xe9, 0xee, 0x28, 0xcb, 0xdd, 0xf1, 0x76, 0x81, 0x17, 0xb7, 0x29, 0x3b, - 0xd1, 0x1b, 0x03, 0xdc, 0xd1, 0xb7, 0x44, 0xce, 0xec, 0x28, 0x26, 0xc4, 0x8f, 0x38, 0xed, 0x7b, - 0x44, 0xa6, 0x54, 0xc5, 0xaa, 0x51, 0x76, 0x34, 0x26, 0x22, 0x07, 0x56, 0x7c, 0x1c, 0xe0, 0x01, - 0x71, 0xed, 0x81, 0x70, 0x4e, 0x6a, 0x7b, 0x5e, 0xda, 0x7e, 0xbf, 0xc0, 0xf6, 0x1d, 0x25, 0x9a, - 0xad, 0x2a, 0xc8, 0x3f, 0x45, 0x43, 0x5d, 0x58, 0xc4, 0x8e, 0x43, 0x3c, 0xd1, 0xa2, 0x84, 0x71, - 0x7a, 0x34, 0xbf, 0x57, 0xa0, 0x7c, 0x73, 0x2c, 0x92, 0x16, 0xc5, 0xac, 0x16, 0xf3, 0xb7, 0x06, - 0xa0, 0xd3, 0x00, 0x44, 0x46, 0x8f, 0x42, 0xc6, 0x89, 0x1f, 0x79, 0x98, 0xab, 0xd8, 0xe9, 0x74, - 0x59, 0x49, 0x67, 0xbb, 0x7a, 0x52, 0x76, 0x1f, 0x37, 0xe1, 0xf2, 0x48, 0x4a, 0x39, 0x42, 0xad, - 0x23, 0xd7, 0xaf, 0x34, 0x69, 0x36, 0x8f, 0x94, 0x6d, 0xd9, 0xbc, 0x98, 0x31, 0x2c, 0x9f, 0x82, - 0x8b, 0xde, 0x83, 0x95, 0x0c, 0xe0, 0x71, 0xf0, 0x15, 0x0e, 0x94, 0x99, 0x4b, 0x13, 0xe0, 0x47, - 0xb0, 0x9c, 0x95, 0x50, 0x1b, 0x77, 0x46, 0xe6, 0x65, 0x03, 0x67, 0xf5, 0x27, 0x01, 0x37, 0x1f, - 0x02, 0x8c, 0x63, 0x8f, 0xde, 0x86, 0xe5, 0x7e, 0x18, 0x72, 0x5b, 0x26, 0x10, 0xa3, 0x4f, 0x88, - 0x3d, 0xe8, 0xeb, 0x94, 0xae, 0x8b, 0x09, 0xc1, 0xda, 0xa1, 0x4f, 0xc8, 0x6e, 0x1f, 0x7d, 0x1f, - 0xea, 0x22, 0xf3, 0xbd, 0xd0, 0xc1, 0x9e, 0xcd, 0x98, 0xcb, 0xb4, 0x09, 0x91, 0xfa, 0x07, 0x82, - 0xd8, 0x61, 0x2e, 0x33, 0xff, 0x63, 0xc0, 0xd2, 0x44, 0xe5, 0x45, 0x9b, 0xb0, 0x44, 0x5d, 0x8f, - 0xd8, 0x2e, 0xf1, 0x08, 0x27, 0x36, 0xe7, 0x9e, 0x34, 0x51, 0xdd, 0x78, 0x2d, 0x8d, 0x65, 0xda, - 0x2c, 0xb6, 0xb6, 0x75, 0xbb, 0x69, 0xd5, 0x84, 0xc4, 0xb6, 0x14, 0xe8, 0x72, 0x0f, 0xdd, 0x86, - 0x06, 0x4e, 0x78, 0x38, 0x52, 0x41, 0xb5, 0x77, 0xab, 0x1b, 0x6b, 0xa7, 0x74, 0x74, 0xd3, 0x86, - 0x73, 0xef, 0x92, 0x55, 0x17, 0x52, 0x5a, 0x0d, 0xf5, 0x09, 0xda, 0x82, 0xa5, 0x9c, 0x1e, 0xee, - 0xe9, 0xbe, 0xf1, 0xf9, 0x50, 0xf6, 0x2e, 0x59, 0xb5, 0x8c, 0x16, 0xee, 0xdd, 0x2a, 0x43, 0x89, - 0x73, 0xcf, 0xfc, 0x9d, 0x01, 0xcd, 0xe7, 0x9d, 0x01, 0xa2, 0x94, 0x92, 0x2f, 0x88, 0x93, 0x70, - 0xdc, 0xf7, 0x88, 0x7d, 0x4c, 0xbd, 0x34, 0x91, 0xea, 0x63, 0xf2, 0x6d, 0xea, 0x11, 0x74, 0x1b, - 0x96, 0x15, 0x45, 0x1c, 0x40, 0x62, 0x5d, 0x61, 0xc2, 0xf5, 0xd2, 0x5e, 0xe0, 0x9e, 0xc6, 0x48, - 0xa6, 0xab, 0x44, 0xcc, 0xaf, 0x4b, 0xa3, 0xa6, 0x49, 0x35, 0x7f, 0x68, 0x0f, 0xca, 0xa2, 0xfd, - 0x53, 0x86, 0xeb, 0xe7, 0xed, 0x69, 0x95, 0x70, 0x4b, 0xfc, 0x10, 0x4b, 0x29, 0x40, 0xab, 0x30, - 0xe7, 0x12, 0x8e, 0xa9, 0xa7, 0x33, 0x5a, 0x8f, 0xd0, 0x36, 0x34, 0x24, 0x83, 0xcd, 0x38, 0x8e, - 0xb9, 0x8a, 0x4a, 0xa9, 0x28, 0x2a, 0x96, 0x6c, 0x6c, 0x49, 0x47, 0x88, 0xc8, 0x98, 0xfc, 0x02, - 0x2a, 0x2c, 0xe9, 0x2b, 0xa8, 0xb3, 0x12, 0xea, 0x07, 0xd3, 0x41, 0xd5, 0xc2, 0xd6, 0x48, 0x8d, - 0x79, 0x0f, 0xca, 0x72, 0x01, 0xa8, 0x0a, 0xf3, 0xbd, 0xc3, 0x9f, 0x1f, 0xde, 0xbd, 0x7f, 0xd8, - 0xb8, 0x84, 0x16, 0xa1, 0xb2, 0x65, 0xed, 0x6c, 0x76, 0xf7, 0x0f, 0x77, 0x1b, 0x86, 0x98, 0xb2, - 0x7a, 0x87, 0x87, 0x62, 0x30, 0x83, 0x16, 0xa0, 0xbc, 0x63, 0x59, 0x77, 0xad, 0x46, 0x49, 0x70, - 0x6d, 0xef, 0x1c, 0xec, 0x48, 0xae, 0x59, 0x31, 0xea, 0x1d, 0x6d, 0x2b, 0x99, 0xb2, 0xf9, 0x33, - 0xa8, 0xa4, 0xd6, 0xd0, 0x12, 0x54, 0x7b, 0x87, 0x9d, 0xa3, 0x9d, 0xad, 0xfd, 0xdb, 0xfb, 0x3b, - 0xdb, 0x8d, 0x4b, 0xa8, 0x06, 0x0b, 0xbd, 0xc3, 0xbd, 0x9d, 0xcd, 0x83, 0xee, 0xde, 0x83, 0x86, - 0x81, 0x1a, 0xb0, 0xd8, 0xe9, 0x6e, 0x1e, 0xec, 0xd8, 0x9d, 0xee, 0x66, 0xb7, 0xd7, 0x69, 0xcc, - 0x98, 0xdf, 0x18, 0x50, 0xcf, 0xb7, 0x3b, 0xe2, 0x38, 0x51, 0x47, 0xc0, 0x63, 0x12, 0x33, 0x1a, - 0x06, 0x69, 0x63, 0x2b, 0x89, 0xf7, 0x14, 0x0d, 0x3d, 0x94, 0xb7, 0xa4, 0x88, 0xc4, 0x9c, 0xea, - 0xa3, 0xa4, 0xf8, 0x94, 0xcc, 0xdb, 0x69, 0x1d, 0x8d, 0xe4, 0xd5, 0x29, 0x99, 0x51, 0xb8, 0x76, - 0x13, 0x96, 0x26, 0xa6, 0xa7, 0x3b, 0x29, 0x67, 0xa0, 0x9e, 0xbf, 0x04, 0x20, 0x0c, 0x8b, 0x8f, - 0xdc, 0x63, 0x66, 0xa7, 0x37, 0x09, 0x43, 0x42, 0xfe, 0x78, 0xaa, 0x9b, 0x44, 0x6b, 0xcf, 0x3d, - 0x66, 0xfa, 0x5b, 0x61, 0xae, 0x3e, 0x1a, 0x53, 0x84, 0x89, 0x21, 0x8e, 0x83, 0x91, 0x89, 0x99, - 0x8b, 0x98, 0x78, 0x80, 0xe3, 0x20, 0x6f, 0x62, 0x38, 0xa6, 0xac, 0x7d, 0x0c, 0x8d, 0x49, 0x0c, - 0x45, 0x8e, 0x29, 0x65, 0x1c, 0x23, 0xe4, 0x27, 0x0d, 0x4c, 0x23, 0x6f, 0xfe, 0xde, 0x80, 0x95, - 0xad, 0x98, 0x60, 0x9e, 0xf6, 0x3b, 0x16, 0xf9, 0x4d, 0x42, 0x18, 0x2f, 0xba, 0x35, 0xaf, 0xc2, - 0x5c, 0x4c, 0x06, 0x22, 0x99, 0x54, 0x4f, 0xa1, 0x47, 0xe8, 0x13, 0x98, 0xd7, 0x77, 0x23, 0x5d, - 0x5f, 0xde, 0x3a, 0x9f, 0xb7, 0xac, 0x54, 0xcc, 0xfc, 0xc7, 0x0c, 0xac, 0xf4, 0x22, 0xf7, 0xff, - 0x40, 0x54, 0xce, 0x21, 0x3a, 0xc7, 0xfd, 0x3e, 0x03, 0xba, 0x74, 0x21, 0xd0, 0xe8, 0x21, 0x5c, - 0x19, 0xc4, 0xd8, 0x21, 0xc7, 0x89, 0x67, 0xbb, 0xc4, 0x09, 0x7d, 0x9f, 0x32, 0x96, 0x2d, 0xb6, - 0x73, 0x45, 0xc5, 0xf6, 0x72, 0x2a, 0xbf, 0x9d, 0x11, 0xd7, 0x75, 0x17, 0xdd, 0x80, 0x6a, 0x22, - 0x5d, 0x22, 0x1f, 0x41, 0xf4, 0x9d, 0xff, 0x74, 0xf9, 0xbb, 0x4d, 0x89, 0xe7, 0xde, 0xc1, 0xec, - 0xc4, 0x02, 0xc5, 0x2e, 0xbe, 0xcd, 0xaf, 0x0c, 0x58, 0x51, 0xe7, 0xca, 0xcb, 0x09, 0xf1, 0x39, - 0x1c, 0x3a, 0xf9, 0x06, 0x30, 0x7b, 0xea, 0x0d, 0xc0, 0xf4, 0x61, 0x79, 0x97, 0xf0, 0x6f, 0x0b, - 0x91, 0xf9, 0xb5, 0x01, 0xaf, 0x1c, 0x50, 0x96, 0x1a, 0x64, 0x53, 0x5b, 0x9c, 0xcd, 0x59, 0x5c, - 0x85, 0xb9, 0x63, 0xea, 0x89, 0x84, 0xd1, 0xc9, 0xa6, 0x46, 0xa2, 0xdb, 0x8e, 0x44, 0xa5, 0x15, - 0x5d, 0x8e, 0x6e, 0x5d, 0x2a, 0x82, 0x20, 0xda, 0x1b, 0x69, 0x4b, 0x4c, 0xf2, 0xf0, 0x84, 0xa4, - 0x4b, 0x90, 0xec, 0x5d, 0x41, 0x30, 0xbf, 0x34, 0x60, 0x25, 0x0f, 0x91, 0x45, 0x61, 0xc0, 0x08, - 0xba, 0x05, 0x95, 0xf4, 0x8d, 0x4e, 0x57, 0xb9, 0xf3, 0xe6, 0xe7, 0x48, 0x0e, 0xbd, 0x05, 0x4b, - 0x01, 0xf9, 0x82, 0xdb, 0x19, 0x00, 0xca, 0x4b, 0x35, 0x41, 0x3e, 0x1a, 0x81, 0x88, 0x61, 0x75, - 0x9b, 0xe2, 0x41, 0x10, 0xb2, 0x6f, 0x2d, 0x5b, 0xcc, 0x0f, 0xcf, 0xb0, 0xc9, 0x12, 0x8f, 0x33, - 0x61, 0x33, 0x4c, 0x78, 0x94, 0xf0, 0x4c, 0x73, 0xba, 0xa0, 0x28, 0xbd, 0x98, 0x6e, 0xfc, 0xb7, - 0x02, 0xcb, 0xe3, 0x6b, 0x1a, 0x8f, 0x43, 0xcf, 0x23, 0x31, 0xfa, 0x93, 0x01, 0xb5, 0x5c, 0x49, - 0x43, 0xd7, 0x8a, 0xdc, 0x75, 0x46, 0x01, 0x5c, 0xbb, 0x92, 0x0a, 0x65, 0xde, 0x32, 0x5b, 0x77, - 0xd3, 0xb7, 0x4c, 0x73, 0xff, 0xcb, 0x6f, 0xfe, 0xfd, 0xd5, 0xcc, 0x96, 0xf9, 0xd1, 0xe8, 0x1d, - 0x55, 0xfb, 0x82, 0xb5, 0x9f, 0x8e, 0xfd, 0xf4, 0xac, 0xad, 0xdc, 0xc0, 0xda, 0x4f, 0xd5, 0xc7, - 0xb3, 0xd1, 0x73, 0xeb, 0xf5, 0x51, 0xf1, 0xf8, 0x9b, 0x01, 0xb5, 0x5c, 0xc5, 0x2b, 0x04, 0x7c, - 0x56, 0x7d, 0x2c, 0x02, 0xfc, 0x4b, 0x09, 0xd8, 0xda, 0xd8, 0xbd, 0x28, 0xe0, 0xf6, 0xd3, 0x6c, - 0x20, 0x9f, 0x8d, 0xf1, 0xff, 0xd9, 0x80, 0x5a, 0xae, 0xc0, 0x14, 0xe2, 0x3f, 0xab, 0x1c, 0x15, - 0xe1, 0xbf, 0x2b, 0xf1, 0xef, 0xbf, 0xf3, 0xb2, 0xf0, 0xa3, 0xbf, 0x18, 0x00, 0xe3, 0x12, 0x84, - 0x8a, 0xee, 0x7c, 0xa7, 0xaa, 0xd5, 0xda, 0x39, 0x77, 0x61, 0x8a, 0x1c, 0xbd, 0x34, 0xe4, 0x7f, - 0x35, 0x60, 0x31, 0x5b, 0x29, 0xd0, 0x46, 0xe1, 0x33, 0xd5, 0xa9, 0xca, 0xb7, 0x76, 0x6d, 0x2a, - 0x19, 0x55, 0x8a, 0xcc, 0x4f, 0xe4, 0x52, 0xae, 0xa3, 0x0b, 0x67, 0x3d, 0xfa, 0xbb, 0x01, 0x4b, - 0x13, 0xbb, 0x1d, 0x7d, 0x50, 0xf8, 0x8e, 0x70, 0x56, 0x45, 0x2a, 0x4a, 0x98, 0x5f, 0x4b, 0xac, - 0x3d, 0xf3, 0xe8, 0x65, 0x25, 0xbc, 0xab, 0x61, 0x5c, 0x37, 0xde, 0xb9, 0xf5, 0x14, 0xde, 0x70, - 0x42, 0xff, 0xc5, 0xb8, 0x6f, 0xa5, 0x77, 0x25, 0x76, 0x24, 0x4e, 0xe8, 0x23, 0xe3, 0x57, 0x3b, - 0x9a, 0x7f, 0x10, 0x7a, 0x38, 0x18, 0xb4, 0xc2, 0x78, 0xd0, 0x1e, 0x90, 0x40, 0x9e, 0xdf, 0x6d, - 0x35, 0x85, 0x23, 0xca, 0x9e, 0xf3, 0x47, 0xcd, 0x8d, 0x94, 0xd0, 0x9f, 0x93, 0x12, 0xd7, 0xfe, - 0x17, 0x00, 0x00, 0xff, 0xff, 0x82, 0x2f, 0x0d, 0xbd, 0xd9, 0x19, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/jobs.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/jobs.pb.go deleted file mode 100644 index 2a2e2945..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/jobs.pb.go +++ /dev/null @@ -1,2573 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dataproc/v1beta2/jobs.proto - -package dataproc - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf4 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf5 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The Log4j level for job execution. When running an -// [Apache Hive](http://hive.apache.org/) job, Cloud -// Dataproc configures the Hive client to an equivalent verbosity level. -type LoggingConfig_Level int32 - -const ( - // Level is unspecified. Use default level for log4j. - LoggingConfig_LEVEL_UNSPECIFIED LoggingConfig_Level = 0 - // Use ALL level for log4j. - LoggingConfig_ALL LoggingConfig_Level = 1 - // Use TRACE level for log4j. - LoggingConfig_TRACE LoggingConfig_Level = 2 - // Use DEBUG level for log4j. - LoggingConfig_DEBUG LoggingConfig_Level = 3 - // Use INFO level for log4j. - LoggingConfig_INFO LoggingConfig_Level = 4 - // Use WARN level for log4j. - LoggingConfig_WARN LoggingConfig_Level = 5 - // Use ERROR level for log4j. - LoggingConfig_ERROR LoggingConfig_Level = 6 - // Use FATAL level for log4j. - LoggingConfig_FATAL LoggingConfig_Level = 7 - // Turn off log4j. - LoggingConfig_OFF LoggingConfig_Level = 8 -) - -var LoggingConfig_Level_name = map[int32]string{ - 0: "LEVEL_UNSPECIFIED", - 1: "ALL", - 2: "TRACE", - 3: "DEBUG", - 4: "INFO", - 5: "WARN", - 6: "ERROR", - 7: "FATAL", - 8: "OFF", -} -var LoggingConfig_Level_value = map[string]int32{ - "LEVEL_UNSPECIFIED": 0, - "ALL": 1, - "TRACE": 2, - "DEBUG": 3, - "INFO": 4, - "WARN": 5, - "ERROR": 6, - "FATAL": 7, - "OFF": 8, -} - -func (x LoggingConfig_Level) String() string { - return proto.EnumName(LoggingConfig_Level_name, int32(x)) -} -func (LoggingConfig_Level) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -// The job state. -type JobStatus_State int32 - -const ( - // The job state is unknown. - JobStatus_STATE_UNSPECIFIED JobStatus_State = 0 - // The job is pending; it has been submitted, but is not yet running. - JobStatus_PENDING JobStatus_State = 1 - // Job has been received by the service and completed initial setup; - // it will soon be submitted to the cluster. - JobStatus_SETUP_DONE JobStatus_State = 8 - // The job is running on the cluster. - JobStatus_RUNNING JobStatus_State = 2 - // A CancelJob request has been received, but is pending. - JobStatus_CANCEL_PENDING JobStatus_State = 3 - // Transient in-flight resources have been canceled, and the request to - // cancel the running job has been issued to the cluster. - JobStatus_CANCEL_STARTED JobStatus_State = 7 - // The job cancellation was successful. - JobStatus_CANCELLED JobStatus_State = 4 - // The job has completed successfully. - JobStatus_DONE JobStatus_State = 5 - // The job has completed, but encountered an error. - JobStatus_ERROR JobStatus_State = 6 - // Job attempt has failed. The detail field contains failure details for - // this attempt. - // - // Applies to restartable jobs only. - JobStatus_ATTEMPT_FAILURE JobStatus_State = 9 -) - -var JobStatus_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "PENDING", - 8: "SETUP_DONE", - 2: "RUNNING", - 3: "CANCEL_PENDING", - 7: "CANCEL_STARTED", - 4: "CANCELLED", - 5: "DONE", - 6: "ERROR", - 9: "ATTEMPT_FAILURE", -} -var JobStatus_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "PENDING": 1, - "SETUP_DONE": 8, - "RUNNING": 2, - "CANCEL_PENDING": 3, - "CANCEL_STARTED": 7, - "CANCELLED": 4, - "DONE": 5, - "ERROR": 6, - "ATTEMPT_FAILURE": 9, -} - -func (x JobStatus_State) String() string { - return proto.EnumName(JobStatus_State_name, int32(x)) -} -func (JobStatus_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{9, 0} } - -type JobStatus_Substate int32 - -const ( - JobStatus_UNSPECIFIED JobStatus_Substate = 0 - // The Job is submitted to the agent. - // - // Applies to RUNNING state. - JobStatus_SUBMITTED JobStatus_Substate = 1 - // The Job has been received and is awaiting execution (it may be waiting - // for a condition to be met). See the "details" field for the reason for - // the delay. - // - // Applies to RUNNING state. - JobStatus_QUEUED JobStatus_Substate = 2 - // The agent-reported status is out of date, which may be caused by a - // loss of communication between the agent and Cloud Dataproc. If the - // agent does not send a timely update, the job will fail. - // - // Applies to RUNNING state. - JobStatus_STALE_STATUS JobStatus_Substate = 3 -) - -var JobStatus_Substate_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "SUBMITTED", - 2: "QUEUED", - 3: "STALE_STATUS", -} -var JobStatus_Substate_value = map[string]int32{ - "UNSPECIFIED": 0, - "SUBMITTED": 1, - "QUEUED": 2, - "STALE_STATUS": 3, -} - -func (x JobStatus_Substate) String() string { - return proto.EnumName(JobStatus_Substate_name, int32(x)) -} -func (JobStatus_Substate) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{9, 1} } - -// The application state, corresponding to -// <code>YarnProtos.YarnApplicationStateProto</code>. -type YarnApplication_State int32 - -const ( - // Status is unspecified. - YarnApplication_STATE_UNSPECIFIED YarnApplication_State = 0 - // Status is NEW. - YarnApplication_NEW YarnApplication_State = 1 - // Status is NEW_SAVING. - YarnApplication_NEW_SAVING YarnApplication_State = 2 - // Status is SUBMITTED. - YarnApplication_SUBMITTED YarnApplication_State = 3 - // Status is ACCEPTED. - YarnApplication_ACCEPTED YarnApplication_State = 4 - // Status is RUNNING. - YarnApplication_RUNNING YarnApplication_State = 5 - // Status is FINISHED. - YarnApplication_FINISHED YarnApplication_State = 6 - // Status is FAILED. - YarnApplication_FAILED YarnApplication_State = 7 - // Status is KILLED. - YarnApplication_KILLED YarnApplication_State = 8 -) - -var YarnApplication_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "NEW", - 2: "NEW_SAVING", - 3: "SUBMITTED", - 4: "ACCEPTED", - 5: "RUNNING", - 6: "FINISHED", - 7: "FAILED", - 8: "KILLED", -} -var YarnApplication_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "NEW": 1, - "NEW_SAVING": 2, - "SUBMITTED": 3, - "ACCEPTED": 4, - "RUNNING": 5, - "FINISHED": 6, - "FAILED": 7, - "KILLED": 8, -} - -func (x YarnApplication_State) String() string { - return proto.EnumName(YarnApplication_State_name, int32(x)) -} -func (YarnApplication_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{11, 0} } - -// A matcher that specifies categories of job states. -type ListJobsRequest_JobStateMatcher int32 - -const ( - // Match all jobs, regardless of state. - ListJobsRequest_ALL ListJobsRequest_JobStateMatcher = 0 - // Only match jobs in non-terminal states: PENDING, RUNNING, or - // CANCEL_PENDING. - ListJobsRequest_ACTIVE ListJobsRequest_JobStateMatcher = 1 - // Only match jobs in terminal states: CANCELLED, DONE, or ERROR. - ListJobsRequest_NON_ACTIVE ListJobsRequest_JobStateMatcher = 2 -) - -var ListJobsRequest_JobStateMatcher_name = map[int32]string{ - 0: "ALL", - 1: "ACTIVE", - 2: "NON_ACTIVE", -} -var ListJobsRequest_JobStateMatcher_value = map[string]int32{ - "ALL": 0, - "ACTIVE": 1, - "NON_ACTIVE": 2, -} - -func (x ListJobsRequest_JobStateMatcher) String() string { - return proto.EnumName(ListJobsRequest_JobStateMatcher_name, int32(x)) -} -func (ListJobsRequest_JobStateMatcher) EnumDescriptor() ([]byte, []int) { - return fileDescriptor1, []int{16, 0} -} - -// The runtime logging config of the job. -type LoggingConfig struct { - // The per-package log levels for the driver. This may include - // "root" package name to configure rootLogger. - // Examples: - // 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG' - DriverLogLevels map[string]LoggingConfig_Level `protobuf:"bytes,2,rep,name=driver_log_levels,json=driverLogLevels" json:"driver_log_levels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.cloud.dataproc.v1beta2.LoggingConfig_Level"` -} - -func (m *LoggingConfig) Reset() { *m = LoggingConfig{} } -func (m *LoggingConfig) String() string { return proto.CompactTextString(m) } -func (*LoggingConfig) ProtoMessage() {} -func (*LoggingConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *LoggingConfig) GetDriverLogLevels() map[string]LoggingConfig_Level { - if m != nil { - return m.DriverLogLevels - } - return nil -} - -// A Cloud Dataproc job for running -// [Apache Hadoop MapReduce](https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) -// jobs on [Apache Hadoop YARN](https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). -type HadoopJob struct { - // Required. Indicates the location of the driver's main class. Specify - // either the jar file that contains the main class or the main class name. - // To specify both, add the jar file to `jar_file_uris`, and then specify - // the main class name in this property. - // - // Types that are valid to be assigned to Driver: - // *HadoopJob_MainJarFileUri - // *HadoopJob_MainClass - Driver isHadoopJob_Driver `protobuf_oneof:"driver"` - // Optional. The arguments to pass to the driver. Do not - // include arguments, such as `-libjars` or `-Dfoo=bar`, that can be set as job - // properties, since a collision may occur that causes an incorrect job - // submission. - Args []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"` - // Optional. Jar file URIs to add to the CLASSPATHs of the - // Hadoop driver and tasks. - JarFileUris []string `protobuf:"bytes,4,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied - // to the working directory of Hadoop drivers and distributed tasks. Useful - // for naively parallel tasks. - FileUris []string `protobuf:"bytes,5,rep,name=file_uris,json=fileUris" json:"file_uris,omitempty"` - // Optional. HCFS URIs of archives to be extracted in the working directory of - // Hadoop drivers and tasks. Supported file types: - // .jar, .tar, .tar.gz, .tgz, or .zip. - ArchiveUris []string `protobuf:"bytes,6,rep,name=archive_uris,json=archiveUris" json:"archive_uris,omitempty"` - // Optional. A mapping of property names to values, used to configure Hadoop. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in /etc/hadoop/conf/*-site and - // classes in user code. - Properties map[string]string `protobuf:"bytes,7,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,8,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *HadoopJob) Reset() { *m = HadoopJob{} } -func (m *HadoopJob) String() string { return proto.CompactTextString(m) } -func (*HadoopJob) ProtoMessage() {} -func (*HadoopJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -type isHadoopJob_Driver interface { - isHadoopJob_Driver() -} - -type HadoopJob_MainJarFileUri struct { - MainJarFileUri string `protobuf:"bytes,1,opt,name=main_jar_file_uri,json=mainJarFileUri,oneof"` -} -type HadoopJob_MainClass struct { - MainClass string `protobuf:"bytes,2,opt,name=main_class,json=mainClass,oneof"` -} - -func (*HadoopJob_MainJarFileUri) isHadoopJob_Driver() {} -func (*HadoopJob_MainClass) isHadoopJob_Driver() {} - -func (m *HadoopJob) GetDriver() isHadoopJob_Driver { - if m != nil { - return m.Driver - } - return nil -} - -func (m *HadoopJob) GetMainJarFileUri() string { - if x, ok := m.GetDriver().(*HadoopJob_MainJarFileUri); ok { - return x.MainJarFileUri - } - return "" -} - -func (m *HadoopJob) GetMainClass() string { - if x, ok := m.GetDriver().(*HadoopJob_MainClass); ok { - return x.MainClass - } - return "" -} - -func (m *HadoopJob) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *HadoopJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *HadoopJob) GetFileUris() []string { - if m != nil { - return m.FileUris - } - return nil -} - -func (m *HadoopJob) GetArchiveUris() []string { - if m != nil { - return m.ArchiveUris - } - return nil -} - -func (m *HadoopJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *HadoopJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*HadoopJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _HadoopJob_OneofMarshaler, _HadoopJob_OneofUnmarshaler, _HadoopJob_OneofSizer, []interface{}{ - (*HadoopJob_MainJarFileUri)(nil), - (*HadoopJob_MainClass)(nil), - } -} - -func _HadoopJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*HadoopJob) - // driver - switch x := m.Driver.(type) { - case *HadoopJob_MainJarFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.MainJarFileUri) - case *HadoopJob_MainClass: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.MainClass) - case nil: - default: - return fmt.Errorf("HadoopJob.Driver has unexpected type %T", x) - } - return nil -} - -func _HadoopJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*HadoopJob) - switch tag { - case 1: // driver.main_jar_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Driver = &HadoopJob_MainJarFileUri{x} - return true, err - case 2: // driver.main_class - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Driver = &HadoopJob_MainClass{x} - return true, err - default: - return false, nil - } -} - -func _HadoopJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*HadoopJob) - // driver - switch x := m.Driver.(type) { - case *HadoopJob_MainJarFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.MainJarFileUri))) - n += len(x.MainJarFileUri) - case *HadoopJob_MainClass: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.MainClass))) - n += len(x.MainClass) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc job for running [Apache Spark](http://spark.apache.org/) -// applications on YARN. -type SparkJob struct { - // Required. The specification of the main method to call to drive the job. - // Specify either the jar file that contains the main class or the main class - // name. To pass both a main jar and a main class in that jar, add the jar to - // `CommonJob.jar_file_uris`, and then specify the main class name in `main_class`. - // - // Types that are valid to be assigned to Driver: - // *SparkJob_MainJarFileUri - // *SparkJob_MainClass - Driver isSparkJob_Driver `protobuf_oneof:"driver"` - // Optional. The arguments to pass to the driver. Do not include arguments, - // such as `--conf`, that can be set as job properties, since a collision may - // occur that causes an incorrect job submission. - Args []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"` - // Optional. HCFS URIs of jar files to add to the CLASSPATHs of the - // Spark driver and tasks. - JarFileUris []string `protobuf:"bytes,4,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. HCFS URIs of files to be copied to the working directory of - // Spark drivers and distributed tasks. Useful for naively parallel tasks. - FileUris []string `protobuf:"bytes,5,rep,name=file_uris,json=fileUris" json:"file_uris,omitempty"` - // Optional. HCFS URIs of archives to be extracted in the working directory - // of Spark drivers and tasks. Supported file types: - // .jar, .tar, .tar.gz, .tgz, and .zip. - ArchiveUris []string `protobuf:"bytes,6,rep,name=archive_uris,json=archiveUris" json:"archive_uris,omitempty"` - // Optional. A mapping of property names to values, used to configure Spark. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in - // /etc/spark/conf/spark-defaults.conf and classes in user code. - Properties map[string]string `protobuf:"bytes,7,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,8,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *SparkJob) Reset() { *m = SparkJob{} } -func (m *SparkJob) String() string { return proto.CompactTextString(m) } -func (*SparkJob) ProtoMessage() {} -func (*SparkJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -type isSparkJob_Driver interface { - isSparkJob_Driver() -} - -type SparkJob_MainJarFileUri struct { - MainJarFileUri string `protobuf:"bytes,1,opt,name=main_jar_file_uri,json=mainJarFileUri,oneof"` -} -type SparkJob_MainClass struct { - MainClass string `protobuf:"bytes,2,opt,name=main_class,json=mainClass,oneof"` -} - -func (*SparkJob_MainJarFileUri) isSparkJob_Driver() {} -func (*SparkJob_MainClass) isSparkJob_Driver() {} - -func (m *SparkJob) GetDriver() isSparkJob_Driver { - if m != nil { - return m.Driver - } - return nil -} - -func (m *SparkJob) GetMainJarFileUri() string { - if x, ok := m.GetDriver().(*SparkJob_MainJarFileUri); ok { - return x.MainJarFileUri - } - return "" -} - -func (m *SparkJob) GetMainClass() string { - if x, ok := m.GetDriver().(*SparkJob_MainClass); ok { - return x.MainClass - } - return "" -} - -func (m *SparkJob) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *SparkJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *SparkJob) GetFileUris() []string { - if m != nil { - return m.FileUris - } - return nil -} - -func (m *SparkJob) GetArchiveUris() []string { - if m != nil { - return m.ArchiveUris - } - return nil -} - -func (m *SparkJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *SparkJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SparkJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SparkJob_OneofMarshaler, _SparkJob_OneofUnmarshaler, _SparkJob_OneofSizer, []interface{}{ - (*SparkJob_MainJarFileUri)(nil), - (*SparkJob_MainClass)(nil), - } -} - -func _SparkJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SparkJob) - // driver - switch x := m.Driver.(type) { - case *SparkJob_MainJarFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.MainJarFileUri) - case *SparkJob_MainClass: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.MainClass) - case nil: - default: - return fmt.Errorf("SparkJob.Driver has unexpected type %T", x) - } - return nil -} - -func _SparkJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SparkJob) - switch tag { - case 1: // driver.main_jar_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Driver = &SparkJob_MainJarFileUri{x} - return true, err - case 2: // driver.main_class - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Driver = &SparkJob_MainClass{x} - return true, err - default: - return false, nil - } -} - -func _SparkJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SparkJob) - // driver - switch x := m.Driver.(type) { - case *SparkJob_MainJarFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.MainJarFileUri))) - n += len(x.MainJarFileUri) - case *SparkJob_MainClass: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.MainClass))) - n += len(x.MainClass) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc job for running -// [Apache PySpark](https://spark.apache.org/docs/0.9.0/python-programming-guide.html) -// applications on YARN. -type PySparkJob struct { - // Required. The HCFS URI of the main Python file to use as the driver. Must - // be a .py file. - MainPythonFileUri string `protobuf:"bytes,1,opt,name=main_python_file_uri,json=mainPythonFileUri" json:"main_python_file_uri,omitempty"` - // Optional. The arguments to pass to the driver. Do not include arguments, - // such as `--conf`, that can be set as job properties, since a collision may - // occur that causes an incorrect job submission. - Args []string `protobuf:"bytes,2,rep,name=args" json:"args,omitempty"` - // Optional. HCFS file URIs of Python files to pass to the PySpark - // framework. Supported file types: .py, .egg, and .zip. - PythonFileUris []string `protobuf:"bytes,3,rep,name=python_file_uris,json=pythonFileUris" json:"python_file_uris,omitempty"` - // Optional. HCFS URIs of jar files to add to the CLASSPATHs of the - // Python driver and tasks. - JarFileUris []string `protobuf:"bytes,4,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. HCFS URIs of files to be copied to the working directory of - // Python drivers and distributed tasks. Useful for naively parallel tasks. - FileUris []string `protobuf:"bytes,5,rep,name=file_uris,json=fileUris" json:"file_uris,omitempty"` - // Optional. HCFS URIs of archives to be extracted in the working directory of - // .jar, .tar, .tar.gz, .tgz, and .zip. - ArchiveUris []string `protobuf:"bytes,6,rep,name=archive_uris,json=archiveUris" json:"archive_uris,omitempty"` - // Optional. A mapping of property names to values, used to configure PySpark. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in - // /etc/spark/conf/spark-defaults.conf and classes in user code. - Properties map[string]string `protobuf:"bytes,7,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,8,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *PySparkJob) Reset() { *m = PySparkJob{} } -func (m *PySparkJob) String() string { return proto.CompactTextString(m) } -func (*PySparkJob) ProtoMessage() {} -func (*PySparkJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *PySparkJob) GetMainPythonFileUri() string { - if m != nil { - return m.MainPythonFileUri - } - return "" -} - -func (m *PySparkJob) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *PySparkJob) GetPythonFileUris() []string { - if m != nil { - return m.PythonFileUris - } - return nil -} - -func (m *PySparkJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *PySparkJob) GetFileUris() []string { - if m != nil { - return m.FileUris - } - return nil -} - -func (m *PySparkJob) GetArchiveUris() []string { - if m != nil { - return m.ArchiveUris - } - return nil -} - -func (m *PySparkJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *PySparkJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// A list of queries to run on a cluster. -type QueryList struct { - // Required. The queries to execute. You do not need to terminate a query - // with a semicolon. Multiple queries can be specified in one string - // by separating each with a semicolon. Here is an example of an Cloud - // Dataproc API snippet that uses a QueryList to specify a HiveJob: - // - // "hiveJob": { - // "queryList": { - // "queries": [ - // "query1", - // "query2", - // "query3;query4", - // ] - // } - // } - Queries []string `protobuf:"bytes,1,rep,name=queries" json:"queries,omitempty"` -} - -func (m *QueryList) Reset() { *m = QueryList{} } -func (m *QueryList) String() string { return proto.CompactTextString(m) } -func (*QueryList) ProtoMessage() {} -func (*QueryList) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *QueryList) GetQueries() []string { - if m != nil { - return m.Queries - } - return nil -} - -// A Cloud Dataproc job for running [Apache Hive](https://hive.apache.org/) -// queries on YARN. -type HiveJob struct { - // Required. The sequence of Hive queries to execute, specified as either - // an HCFS file URI or a list of queries. - // - // Types that are valid to be assigned to Queries: - // *HiveJob_QueryFileUri - // *HiveJob_QueryList - Queries isHiveJob_Queries `protobuf_oneof:"queries"` - // Optional. Whether to continue executing queries if a query fails. - // The default value is `false`. Setting to `true` can be useful when executing - // independent parallel queries. - ContinueOnFailure bool `protobuf:"varint,3,opt,name=continue_on_failure,json=continueOnFailure" json:"continue_on_failure,omitempty"` - // Optional. Mapping of query variable names to values (equivalent to the - // Hive command: `SET name="value";`). - ScriptVariables map[string]string `protobuf:"bytes,4,rep,name=script_variables,json=scriptVariables" json:"script_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. A mapping of property names and values, used to configure Hive. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, - // /etc/hive/conf/hive-site.xml, and classes in user code. - Properties map[string]string `protobuf:"bytes,5,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. HCFS URIs of jar files to add to the CLASSPATH of the - // Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes - // and UDFs. - JarFileUris []string `protobuf:"bytes,6,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` -} - -func (m *HiveJob) Reset() { *m = HiveJob{} } -func (m *HiveJob) String() string { return proto.CompactTextString(m) } -func (*HiveJob) ProtoMessage() {} -func (*HiveJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -type isHiveJob_Queries interface { - isHiveJob_Queries() -} - -type HiveJob_QueryFileUri struct { - QueryFileUri string `protobuf:"bytes,1,opt,name=query_file_uri,json=queryFileUri,oneof"` -} -type HiveJob_QueryList struct { - QueryList *QueryList `protobuf:"bytes,2,opt,name=query_list,json=queryList,oneof"` -} - -func (*HiveJob_QueryFileUri) isHiveJob_Queries() {} -func (*HiveJob_QueryList) isHiveJob_Queries() {} - -func (m *HiveJob) GetQueries() isHiveJob_Queries { - if m != nil { - return m.Queries - } - return nil -} - -func (m *HiveJob) GetQueryFileUri() string { - if x, ok := m.GetQueries().(*HiveJob_QueryFileUri); ok { - return x.QueryFileUri - } - return "" -} - -func (m *HiveJob) GetQueryList() *QueryList { - if x, ok := m.GetQueries().(*HiveJob_QueryList); ok { - return x.QueryList - } - return nil -} - -func (m *HiveJob) GetContinueOnFailure() bool { - if m != nil { - return m.ContinueOnFailure - } - return false -} - -func (m *HiveJob) GetScriptVariables() map[string]string { - if m != nil { - return m.ScriptVariables - } - return nil -} - -func (m *HiveJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *HiveJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*HiveJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _HiveJob_OneofMarshaler, _HiveJob_OneofUnmarshaler, _HiveJob_OneofSizer, []interface{}{ - (*HiveJob_QueryFileUri)(nil), - (*HiveJob_QueryList)(nil), - } -} - -func _HiveJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*HiveJob) - // queries - switch x := m.Queries.(type) { - case *HiveJob_QueryFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.QueryFileUri) - case *HiveJob_QueryList: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.QueryList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("HiveJob.Queries has unexpected type %T", x) - } - return nil -} - -func _HiveJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*HiveJob) - switch tag { - case 1: // queries.query_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Queries = &HiveJob_QueryFileUri{x} - return true, err - case 2: // queries.query_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(QueryList) - err := b.DecodeMessage(msg) - m.Queries = &HiveJob_QueryList{msg} - return true, err - default: - return false, nil - } -} - -func _HiveJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*HiveJob) - // queries - switch x := m.Queries.(type) { - case *HiveJob_QueryFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.QueryFileUri))) - n += len(x.QueryFileUri) - case *HiveJob_QueryList: - s := proto.Size(x.QueryList) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc job for running [Apache Spark SQL](http://spark.apache.org/sql/) -// queries. -type SparkSqlJob struct { - // Required. The sequence of Spark SQL queries to execute, specified as - // either an HCFS file URI or as a list of queries. - // - // Types that are valid to be assigned to Queries: - // *SparkSqlJob_QueryFileUri - // *SparkSqlJob_QueryList - Queries isSparkSqlJob_Queries `protobuf_oneof:"queries"` - // Optional. Mapping of query variable names to values (equivalent to the - // Spark SQL command: SET `name="value";`). - ScriptVariables map[string]string `protobuf:"bytes,3,rep,name=script_variables,json=scriptVariables" json:"script_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. A mapping of property names to values, used to configure - // Spark SQL's SparkConf. Properties that conflict with values set by the - // Cloud Dataproc API may be overwritten. - Properties map[string]string `protobuf:"bytes,4,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH. - JarFileUris []string `protobuf:"bytes,56,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,6,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *SparkSqlJob) Reset() { *m = SparkSqlJob{} } -func (m *SparkSqlJob) String() string { return proto.CompactTextString(m) } -func (*SparkSqlJob) ProtoMessage() {} -func (*SparkSqlJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -type isSparkSqlJob_Queries interface { - isSparkSqlJob_Queries() -} - -type SparkSqlJob_QueryFileUri struct { - QueryFileUri string `protobuf:"bytes,1,opt,name=query_file_uri,json=queryFileUri,oneof"` -} -type SparkSqlJob_QueryList struct { - QueryList *QueryList `protobuf:"bytes,2,opt,name=query_list,json=queryList,oneof"` -} - -func (*SparkSqlJob_QueryFileUri) isSparkSqlJob_Queries() {} -func (*SparkSqlJob_QueryList) isSparkSqlJob_Queries() {} - -func (m *SparkSqlJob) GetQueries() isSparkSqlJob_Queries { - if m != nil { - return m.Queries - } - return nil -} - -func (m *SparkSqlJob) GetQueryFileUri() string { - if x, ok := m.GetQueries().(*SparkSqlJob_QueryFileUri); ok { - return x.QueryFileUri - } - return "" -} - -func (m *SparkSqlJob) GetQueryList() *QueryList { - if x, ok := m.GetQueries().(*SparkSqlJob_QueryList); ok { - return x.QueryList - } - return nil -} - -func (m *SparkSqlJob) GetScriptVariables() map[string]string { - if m != nil { - return m.ScriptVariables - } - return nil -} - -func (m *SparkSqlJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *SparkSqlJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *SparkSqlJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SparkSqlJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SparkSqlJob_OneofMarshaler, _SparkSqlJob_OneofUnmarshaler, _SparkSqlJob_OneofSizer, []interface{}{ - (*SparkSqlJob_QueryFileUri)(nil), - (*SparkSqlJob_QueryList)(nil), - } -} - -func _SparkSqlJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SparkSqlJob) - // queries - switch x := m.Queries.(type) { - case *SparkSqlJob_QueryFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.QueryFileUri) - case *SparkSqlJob_QueryList: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.QueryList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("SparkSqlJob.Queries has unexpected type %T", x) - } - return nil -} - -func _SparkSqlJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SparkSqlJob) - switch tag { - case 1: // queries.query_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Queries = &SparkSqlJob_QueryFileUri{x} - return true, err - case 2: // queries.query_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(QueryList) - err := b.DecodeMessage(msg) - m.Queries = &SparkSqlJob_QueryList{msg} - return true, err - default: - return false, nil - } -} - -func _SparkSqlJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SparkSqlJob) - // queries - switch x := m.Queries.(type) { - case *SparkSqlJob_QueryFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.QueryFileUri))) - n += len(x.QueryFileUri) - case *SparkSqlJob_QueryList: - s := proto.Size(x.QueryList) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc job for running [Apache Pig](https://pig.apache.org/) -// queries on YARN. -type PigJob struct { - // Required. The sequence of Pig queries to execute, specified as an HCFS - // file URI or a list of queries. - // - // Types that are valid to be assigned to Queries: - // *PigJob_QueryFileUri - // *PigJob_QueryList - Queries isPigJob_Queries `protobuf_oneof:"queries"` - // Optional. Whether to continue executing queries if a query fails. - // The default value is `false`. Setting to `true` can be useful when executing - // independent parallel queries. - ContinueOnFailure bool `protobuf:"varint,3,opt,name=continue_on_failure,json=continueOnFailure" json:"continue_on_failure,omitempty"` - // Optional. Mapping of query variable names to values (equivalent to the Pig - // command: `name=[value]`). - ScriptVariables map[string]string `protobuf:"bytes,4,rep,name=script_variables,json=scriptVariables" json:"script_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. A mapping of property names to values, used to configure Pig. - // Properties that conflict with values set by the Cloud Dataproc API may be - // overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, - // /etc/pig/conf/pig.properties, and classes in user code. - Properties map[string]string `protobuf:"bytes,5,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. HCFS URIs of jar files to add to the CLASSPATH of - // the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs. - JarFileUris []string `protobuf:"bytes,6,rep,name=jar_file_uris,json=jarFileUris" json:"jar_file_uris,omitempty"` - // Optional. The runtime log config for job execution. - LoggingConfig *LoggingConfig `protobuf:"bytes,7,opt,name=logging_config,json=loggingConfig" json:"logging_config,omitempty"` -} - -func (m *PigJob) Reset() { *m = PigJob{} } -func (m *PigJob) String() string { return proto.CompactTextString(m) } -func (*PigJob) ProtoMessage() {} -func (*PigJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -type isPigJob_Queries interface { - isPigJob_Queries() -} - -type PigJob_QueryFileUri struct { - QueryFileUri string `protobuf:"bytes,1,opt,name=query_file_uri,json=queryFileUri,oneof"` -} -type PigJob_QueryList struct { - QueryList *QueryList `protobuf:"bytes,2,opt,name=query_list,json=queryList,oneof"` -} - -func (*PigJob_QueryFileUri) isPigJob_Queries() {} -func (*PigJob_QueryList) isPigJob_Queries() {} - -func (m *PigJob) GetQueries() isPigJob_Queries { - if m != nil { - return m.Queries - } - return nil -} - -func (m *PigJob) GetQueryFileUri() string { - if x, ok := m.GetQueries().(*PigJob_QueryFileUri); ok { - return x.QueryFileUri - } - return "" -} - -func (m *PigJob) GetQueryList() *QueryList { - if x, ok := m.GetQueries().(*PigJob_QueryList); ok { - return x.QueryList - } - return nil -} - -func (m *PigJob) GetContinueOnFailure() bool { - if m != nil { - return m.ContinueOnFailure - } - return false -} - -func (m *PigJob) GetScriptVariables() map[string]string { - if m != nil { - return m.ScriptVariables - } - return nil -} - -func (m *PigJob) GetProperties() map[string]string { - if m != nil { - return m.Properties - } - return nil -} - -func (m *PigJob) GetJarFileUris() []string { - if m != nil { - return m.JarFileUris - } - return nil -} - -func (m *PigJob) GetLoggingConfig() *LoggingConfig { - if m != nil { - return m.LoggingConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PigJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PigJob_OneofMarshaler, _PigJob_OneofUnmarshaler, _PigJob_OneofSizer, []interface{}{ - (*PigJob_QueryFileUri)(nil), - (*PigJob_QueryList)(nil), - } -} - -func _PigJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PigJob) - // queries - switch x := m.Queries.(type) { - case *PigJob_QueryFileUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.QueryFileUri) - case *PigJob_QueryList: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.QueryList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("PigJob.Queries has unexpected type %T", x) - } - return nil -} - -func _PigJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PigJob) - switch tag { - case 1: // queries.query_file_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Queries = &PigJob_QueryFileUri{x} - return true, err - case 2: // queries.query_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(QueryList) - err := b.DecodeMessage(msg) - m.Queries = &PigJob_QueryList{msg} - return true, err - default: - return false, nil - } -} - -func _PigJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PigJob) - // queries - switch x := m.Queries.(type) { - case *PigJob_QueryFileUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.QueryFileUri))) - n += len(x.QueryFileUri) - case *PigJob_QueryList: - s := proto.Size(x.QueryList) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Cloud Dataproc job config. -type JobPlacement struct { - // Required. The name of the cluster where the job will be submitted. - ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Output-only. A cluster UUID generated by the Cloud Dataproc service when - // the job is submitted. - ClusterUuid string `protobuf:"bytes,2,opt,name=cluster_uuid,json=clusterUuid" json:"cluster_uuid,omitempty"` -} - -func (m *JobPlacement) Reset() { *m = JobPlacement{} } -func (m *JobPlacement) String() string { return proto.CompactTextString(m) } -func (*JobPlacement) ProtoMessage() {} -func (*JobPlacement) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *JobPlacement) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *JobPlacement) GetClusterUuid() string { - if m != nil { - return m.ClusterUuid - } - return "" -} - -// Cloud Dataproc job status. -type JobStatus struct { - // Output-only. A state message specifying the overall job state. - State JobStatus_State `protobuf:"varint,1,opt,name=state,enum=google.cloud.dataproc.v1beta2.JobStatus_State" json:"state,omitempty"` - // Output-only. Optional job state details, such as an error - // description if the state is <code>ERROR</code>. - Details string `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"` - // Output-only. The time when this state was entered. - StateStartTime *google_protobuf5.Timestamp `protobuf:"bytes,6,opt,name=state_start_time,json=stateStartTime" json:"state_start_time,omitempty"` - // Output-only. Additional state information, which includes - // status reported by the agent. - Substate JobStatus_Substate `protobuf:"varint,7,opt,name=substate,enum=google.cloud.dataproc.v1beta2.JobStatus_Substate" json:"substate,omitempty"` -} - -func (m *JobStatus) Reset() { *m = JobStatus{} } -func (m *JobStatus) String() string { return proto.CompactTextString(m) } -func (*JobStatus) ProtoMessage() {} -func (*JobStatus) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *JobStatus) GetState() JobStatus_State { - if m != nil { - return m.State - } - return JobStatus_STATE_UNSPECIFIED -} - -func (m *JobStatus) GetDetails() string { - if m != nil { - return m.Details - } - return "" -} - -func (m *JobStatus) GetStateStartTime() *google_protobuf5.Timestamp { - if m != nil { - return m.StateStartTime - } - return nil -} - -func (m *JobStatus) GetSubstate() JobStatus_Substate { - if m != nil { - return m.Substate - } - return JobStatus_UNSPECIFIED -} - -// Encapsulates the full scoping used to reference a job. -type JobReference struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Optional. The job ID, which must be unique within the project. The job ID - // is generated by the server upon job submission or provided by the user as a - // means to perform retries without creating duplicate jobs. The ID must - // contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or - // hyphens (-). The maximum length is 100 characters. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *JobReference) Reset() { *m = JobReference{} } -func (m *JobReference) String() string { return proto.CompactTextString(m) } -func (*JobReference) ProtoMessage() {} -func (*JobReference) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *JobReference) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *JobReference) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -// A YARN application created by a job. Application information is a subset of -// <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>. -// -// **Beta Feature**: This report is available for testing purposes only. It may -// be changed before final release. -type YarnApplication struct { - // Required. The application name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The application state. - State YarnApplication_State `protobuf:"varint,2,opt,name=state,enum=google.cloud.dataproc.v1beta2.YarnApplication_State" json:"state,omitempty"` - // Required. The numerical progress of the application, from 1 to 100. - Progress float32 `protobuf:"fixed32,3,opt,name=progress" json:"progress,omitempty"` - // Optional. The HTTP URL of the ApplicationMaster, HistoryServer, or - // TimelineServer that provides application-specific information. The URL uses - // the internal hostname, and requires a proxy server for resolution and, - // possibly, access. - TrackingUrl string `protobuf:"bytes,4,opt,name=tracking_url,json=trackingUrl" json:"tracking_url,omitempty"` -} - -func (m *YarnApplication) Reset() { *m = YarnApplication{} } -func (m *YarnApplication) String() string { return proto.CompactTextString(m) } -func (*YarnApplication) ProtoMessage() {} -func (*YarnApplication) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *YarnApplication) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *YarnApplication) GetState() YarnApplication_State { - if m != nil { - return m.State - } - return YarnApplication_STATE_UNSPECIFIED -} - -func (m *YarnApplication) GetProgress() float32 { - if m != nil { - return m.Progress - } - return 0 -} - -func (m *YarnApplication) GetTrackingUrl() string { - if m != nil { - return m.TrackingUrl - } - return "" -} - -// A Cloud Dataproc job resource. -type Job struct { - // Optional. The fully qualified reference to the job, which can be used to - // obtain the equivalent REST path of the job resource. If this property - // is not specified when a job is created, the server generates a - // <code>job_id</code>. - Reference *JobReference `protobuf:"bytes,1,opt,name=reference" json:"reference,omitempty"` - // Required. Job information, including how, when, and where to - // run the job. - Placement *JobPlacement `protobuf:"bytes,2,opt,name=placement" json:"placement,omitempty"` - // Required. The application/framework-specific portion of the job. - // - // Types that are valid to be assigned to TypeJob: - // *Job_HadoopJob - // *Job_SparkJob - // *Job_PysparkJob - // *Job_HiveJob - // *Job_PigJob - // *Job_SparkSqlJob - TypeJob isJob_TypeJob `protobuf_oneof:"type_job"` - // Output-only. The job status. Additional application-specific - // status information may be contained in the <code>type_job</code> - // and <code>yarn_applications</code> fields. - Status *JobStatus `protobuf:"bytes,8,opt,name=status" json:"status,omitempty"` - // Output-only. The previous job status. - StatusHistory []*JobStatus `protobuf:"bytes,13,rep,name=status_history,json=statusHistory" json:"status_history,omitempty"` - // Output-only. The collection of YARN applications spun up by this job. - // - // **Beta** Feature: This report is available for testing purposes only. It may - // be changed before final release. - YarnApplications []*YarnApplication `protobuf:"bytes,9,rep,name=yarn_applications,json=yarnApplications" json:"yarn_applications,omitempty"` - // Output-only. A URI pointing to the location of the stdout of the job's - // driver program. - DriverOutputResourceUri string `protobuf:"bytes,17,opt,name=driver_output_resource_uri,json=driverOutputResourceUri" json:"driver_output_resource_uri,omitempty"` - // Output-only. If present, the location of miscellaneous control files - // which may be used as part of job setup and handling. If not present, - // control files may be placed in the same location as `driver_output_uri`. - DriverControlFilesUri string `protobuf:"bytes,15,opt,name=driver_control_files_uri,json=driverControlFilesUri" json:"driver_control_files_uri,omitempty"` - // Optional. The labels to associate with this job. - // Label **keys** must contain 1 to 63 characters, and must conform to - // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // Label **values** may be empty, but, if present, must contain 1 to 63 - // characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // No more than 32 labels can be associated with a job. - Labels map[string]string `protobuf:"bytes,18,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. Job scheduling configuration. - Scheduling *JobScheduling `protobuf:"bytes,20,opt,name=scheduling" json:"scheduling,omitempty"` -} - -func (m *Job) Reset() { *m = Job{} } -func (m *Job) String() string { return proto.CompactTextString(m) } -func (*Job) ProtoMessage() {} -func (*Job) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -type isJob_TypeJob interface { - isJob_TypeJob() -} - -type Job_HadoopJob struct { - HadoopJob *HadoopJob `protobuf:"bytes,3,opt,name=hadoop_job,json=hadoopJob,oneof"` -} -type Job_SparkJob struct { - SparkJob *SparkJob `protobuf:"bytes,4,opt,name=spark_job,json=sparkJob,oneof"` -} -type Job_PysparkJob struct { - PysparkJob *PySparkJob `protobuf:"bytes,5,opt,name=pyspark_job,json=pysparkJob,oneof"` -} -type Job_HiveJob struct { - HiveJob *HiveJob `protobuf:"bytes,6,opt,name=hive_job,json=hiveJob,oneof"` -} -type Job_PigJob struct { - PigJob *PigJob `protobuf:"bytes,7,opt,name=pig_job,json=pigJob,oneof"` -} -type Job_SparkSqlJob struct { - SparkSqlJob *SparkSqlJob `protobuf:"bytes,12,opt,name=spark_sql_job,json=sparkSqlJob,oneof"` -} - -func (*Job_HadoopJob) isJob_TypeJob() {} -func (*Job_SparkJob) isJob_TypeJob() {} -func (*Job_PysparkJob) isJob_TypeJob() {} -func (*Job_HiveJob) isJob_TypeJob() {} -func (*Job_PigJob) isJob_TypeJob() {} -func (*Job_SparkSqlJob) isJob_TypeJob() {} - -func (m *Job) GetTypeJob() isJob_TypeJob { - if m != nil { - return m.TypeJob - } - return nil -} - -func (m *Job) GetReference() *JobReference { - if m != nil { - return m.Reference - } - return nil -} - -func (m *Job) GetPlacement() *JobPlacement { - if m != nil { - return m.Placement - } - return nil -} - -func (m *Job) GetHadoopJob() *HadoopJob { - if x, ok := m.GetTypeJob().(*Job_HadoopJob); ok { - return x.HadoopJob - } - return nil -} - -func (m *Job) GetSparkJob() *SparkJob { - if x, ok := m.GetTypeJob().(*Job_SparkJob); ok { - return x.SparkJob - } - return nil -} - -func (m *Job) GetPysparkJob() *PySparkJob { - if x, ok := m.GetTypeJob().(*Job_PysparkJob); ok { - return x.PysparkJob - } - return nil -} - -func (m *Job) GetHiveJob() *HiveJob { - if x, ok := m.GetTypeJob().(*Job_HiveJob); ok { - return x.HiveJob - } - return nil -} - -func (m *Job) GetPigJob() *PigJob { - if x, ok := m.GetTypeJob().(*Job_PigJob); ok { - return x.PigJob - } - return nil -} - -func (m *Job) GetSparkSqlJob() *SparkSqlJob { - if x, ok := m.GetTypeJob().(*Job_SparkSqlJob); ok { - return x.SparkSqlJob - } - return nil -} - -func (m *Job) GetStatus() *JobStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *Job) GetStatusHistory() []*JobStatus { - if m != nil { - return m.StatusHistory - } - return nil -} - -func (m *Job) GetYarnApplications() []*YarnApplication { - if m != nil { - return m.YarnApplications - } - return nil -} - -func (m *Job) GetDriverOutputResourceUri() string { - if m != nil { - return m.DriverOutputResourceUri - } - return "" -} - -func (m *Job) GetDriverControlFilesUri() string { - if m != nil { - return m.DriverControlFilesUri - } - return "" -} - -func (m *Job) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *Job) GetScheduling() *JobScheduling { - if m != nil { - return m.Scheduling - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Job) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Job_OneofMarshaler, _Job_OneofUnmarshaler, _Job_OneofSizer, []interface{}{ - (*Job_HadoopJob)(nil), - (*Job_SparkJob)(nil), - (*Job_PysparkJob)(nil), - (*Job_HiveJob)(nil), - (*Job_PigJob)(nil), - (*Job_SparkSqlJob)(nil), - } -} - -func _Job_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Job) - // type_job - switch x := m.TypeJob.(type) { - case *Job_HadoopJob: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HadoopJob); err != nil { - return err - } - case *Job_SparkJob: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SparkJob); err != nil { - return err - } - case *Job_PysparkJob: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PysparkJob); err != nil { - return err - } - case *Job_HiveJob: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HiveJob); err != nil { - return err - } - case *Job_PigJob: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PigJob); err != nil { - return err - } - case *Job_SparkSqlJob: - b.EncodeVarint(12<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SparkSqlJob); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Job.TypeJob has unexpected type %T", x) - } - return nil -} - -func _Job_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Job) - switch tag { - case 3: // type_job.hadoop_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(HadoopJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_HadoopJob{msg} - return true, err - case 4: // type_job.spark_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(SparkJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_SparkJob{msg} - return true, err - case 5: // type_job.pyspark_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PySparkJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_PysparkJob{msg} - return true, err - case 6: // type_job.hive_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(HiveJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_HiveJob{msg} - return true, err - case 7: // type_job.pig_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PigJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_PigJob{msg} - return true, err - case 12: // type_job.spark_sql_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(SparkSqlJob) - err := b.DecodeMessage(msg) - m.TypeJob = &Job_SparkSqlJob{msg} - return true, err - default: - return false, nil - } -} - -func _Job_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Job) - // type_job - switch x := m.TypeJob.(type) { - case *Job_HadoopJob: - s := proto.Size(x.HadoopJob) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_SparkJob: - s := proto.Size(x.SparkJob) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_PysparkJob: - s := proto.Size(x.PysparkJob) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_HiveJob: - s := proto.Size(x.HiveJob) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_PigJob: - s := proto.Size(x.PigJob) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_SparkSqlJob: - s := proto.Size(x.SparkSqlJob) - n += proto.SizeVarint(12<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Job scheduling options. -// -// **Beta Feature**: These options are available for testing purposes only. -// They may be changed before final release. -type JobScheduling struct { - // Optional. Maximum number of times per hour a driver may be restarted as - // a result of driver terminating with non-zero code before job is - // reported failed. - // - // A job may be reported as thrashing if driver exits with non-zero code - // 4 times within 10 minute window. - // - // Maximum value is 10. - MaxFailuresPerHour int32 `protobuf:"varint,1,opt,name=max_failures_per_hour,json=maxFailuresPerHour" json:"max_failures_per_hour,omitempty"` -} - -func (m *JobScheduling) Reset() { *m = JobScheduling{} } -func (m *JobScheduling) String() string { return proto.CompactTextString(m) } -func (*JobScheduling) ProtoMessage() {} -func (*JobScheduling) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *JobScheduling) GetMaxFailuresPerHour() int32 { - if m != nil { - return m.MaxFailuresPerHour - } - return 0 -} - -// A request to submit a job. -type SubmitJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The job resource. - Job *Job `protobuf:"bytes,2,opt,name=job" json:"job,omitempty"` -} - -func (m *SubmitJobRequest) Reset() { *m = SubmitJobRequest{} } -func (m *SubmitJobRequest) String() string { return proto.CompactTextString(m) } -func (*SubmitJobRequest) ProtoMessage() {} -func (*SubmitJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *SubmitJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SubmitJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *SubmitJobRequest) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -// A request to get the resource representation for a job in a project. -type GetJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The job ID. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *GetJobRequest) Reset() { *m = GetJobRequest{} } -func (m *GetJobRequest) String() string { return proto.CompactTextString(m) } -func (*GetJobRequest) ProtoMessage() {} -func (*GetJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *GetJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *GetJobRequest) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -// A request to list jobs in a project. -type ListJobsRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,6,opt,name=region" json:"region,omitempty"` - // Optional. The number of results to return in each response. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The page token, returned by a previous call, to request the - // next page of results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. If set, the returned jobs list includes only jobs that were - // submitted to the named cluster. - ClusterName string `protobuf:"bytes,4,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Optional. Specifies enumerated categories of jobs to list. - // (default = match ALL jobs). - // - // If `filter` is provided, `jobStateMatcher` will be ignored. - JobStateMatcher ListJobsRequest_JobStateMatcher `protobuf:"varint,5,opt,name=job_state_matcher,json=jobStateMatcher,enum=google.cloud.dataproc.v1beta2.ListJobsRequest_JobStateMatcher" json:"job_state_matcher,omitempty"` - // Optional. A filter constraining the jobs to list. Filters are - // case-sensitive and have the following syntax: - // - // [field = value] AND [field [= value]] ... - // - // where **field** is `status.state` or `labels.[KEY]`, and `[KEY]` is a label - // key. **value** can be `*` to match all values. - // `status.state` can be either `ACTIVE` or `NON_ACTIVE`. - // Only the logical `AND` operator is supported; space-separated items are - // treated as having an implicit `AND` operator. - // - // Example filter: - // - // status.state = ACTIVE AND labels.env = staging AND labels.starred = * - Filter string `protobuf:"bytes,7,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListJobsRequest) Reset() { *m = ListJobsRequest{} } -func (m *ListJobsRequest) String() string { return proto.CompactTextString(m) } -func (*ListJobsRequest) ProtoMessage() {} -func (*ListJobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *ListJobsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListJobsRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *ListJobsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListJobsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListJobsRequest) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *ListJobsRequest) GetJobStateMatcher() ListJobsRequest_JobStateMatcher { - if m != nil { - return m.JobStateMatcher - } - return ListJobsRequest_ALL -} - -func (m *ListJobsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// A request to update a job. -type UpdateJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,2,opt,name=region" json:"region,omitempty"` - // Required. The job ID. - JobId string `protobuf:"bytes,3,opt,name=job_id,json=jobId" json:"job_id,omitempty"` - // Required. The changes to the job. - Job *Job `protobuf:"bytes,4,opt,name=job" json:"job,omitempty"` - // Required. Specifies the path, relative to <code>Job</code>, of - // the field to update. For example, to update the labels of a Job the - // <code>update_mask</code> parameter would be specified as - // <code>labels</code>, and the `PATCH` request body would specify the new - // value. <strong>Note:</strong> Currently, <code>labels</code> is the only - // field that can be updated. - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,5,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateJobRequest) Reset() { *m = UpdateJobRequest{} } -func (m *UpdateJobRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateJobRequest) ProtoMessage() {} -func (*UpdateJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *UpdateJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *UpdateJobRequest) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -func (m *UpdateJobRequest) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -func (m *UpdateJobRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// A list of jobs in a project. -type ListJobsResponse struct { - // Output-only. Jobs list. - Jobs []*Job `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"` - // Optional. This token is included in the response if there are more results - // to fetch. To fetch additional results, provide this value as the - // `page_token` in a subsequent <code>ListJobsRequest</code>. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListJobsResponse) Reset() { *m = ListJobsResponse{} } -func (m *ListJobsResponse) String() string { return proto.CompactTextString(m) } -func (*ListJobsResponse) ProtoMessage() {} -func (*ListJobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } - -func (m *ListJobsResponse) GetJobs() []*Job { - if m != nil { - return m.Jobs - } - return nil -} - -func (m *ListJobsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to cancel a job. -type CancelJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The job ID. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *CancelJobRequest) Reset() { *m = CancelJobRequest{} } -func (m *CancelJobRequest) String() string { return proto.CompactTextString(m) } -func (*CancelJobRequest) ProtoMessage() {} -func (*CancelJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } - -func (m *CancelJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CancelJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *CancelJobRequest) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -// A request to delete a job. -type DeleteJobRequest struct { - // Required. The ID of the Google Cloud Platform project that the job - // belongs to. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. The Cloud Dataproc region in which to handle the request. - Region string `protobuf:"bytes,3,opt,name=region" json:"region,omitempty"` - // Required. The job ID. - JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId" json:"job_id,omitempty"` -} - -func (m *DeleteJobRequest) Reset() { *m = DeleteJobRequest{} } -func (m *DeleteJobRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteJobRequest) ProtoMessage() {} -func (*DeleteJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } - -func (m *DeleteJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteJobRequest) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *DeleteJobRequest) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -func init() { - proto.RegisterType((*LoggingConfig)(nil), "google.cloud.dataproc.v1beta2.LoggingConfig") - proto.RegisterType((*HadoopJob)(nil), "google.cloud.dataproc.v1beta2.HadoopJob") - proto.RegisterType((*SparkJob)(nil), "google.cloud.dataproc.v1beta2.SparkJob") - proto.RegisterType((*PySparkJob)(nil), "google.cloud.dataproc.v1beta2.PySparkJob") - proto.RegisterType((*QueryList)(nil), "google.cloud.dataproc.v1beta2.QueryList") - proto.RegisterType((*HiveJob)(nil), "google.cloud.dataproc.v1beta2.HiveJob") - proto.RegisterType((*SparkSqlJob)(nil), "google.cloud.dataproc.v1beta2.SparkSqlJob") - proto.RegisterType((*PigJob)(nil), "google.cloud.dataproc.v1beta2.PigJob") - proto.RegisterType((*JobPlacement)(nil), "google.cloud.dataproc.v1beta2.JobPlacement") - proto.RegisterType((*JobStatus)(nil), "google.cloud.dataproc.v1beta2.JobStatus") - proto.RegisterType((*JobReference)(nil), "google.cloud.dataproc.v1beta2.JobReference") - proto.RegisterType((*YarnApplication)(nil), "google.cloud.dataproc.v1beta2.YarnApplication") - proto.RegisterType((*Job)(nil), "google.cloud.dataproc.v1beta2.Job") - proto.RegisterType((*JobScheduling)(nil), "google.cloud.dataproc.v1beta2.JobScheduling") - proto.RegisterType((*SubmitJobRequest)(nil), "google.cloud.dataproc.v1beta2.SubmitJobRequest") - proto.RegisterType((*GetJobRequest)(nil), "google.cloud.dataproc.v1beta2.GetJobRequest") - proto.RegisterType((*ListJobsRequest)(nil), "google.cloud.dataproc.v1beta2.ListJobsRequest") - proto.RegisterType((*UpdateJobRequest)(nil), "google.cloud.dataproc.v1beta2.UpdateJobRequest") - proto.RegisterType((*ListJobsResponse)(nil), "google.cloud.dataproc.v1beta2.ListJobsResponse") - proto.RegisterType((*CancelJobRequest)(nil), "google.cloud.dataproc.v1beta2.CancelJobRequest") - proto.RegisterType((*DeleteJobRequest)(nil), "google.cloud.dataproc.v1beta2.DeleteJobRequest") - proto.RegisterEnum("google.cloud.dataproc.v1beta2.LoggingConfig_Level", LoggingConfig_Level_name, LoggingConfig_Level_value) - proto.RegisterEnum("google.cloud.dataproc.v1beta2.JobStatus_State", JobStatus_State_name, JobStatus_State_value) - proto.RegisterEnum("google.cloud.dataproc.v1beta2.JobStatus_Substate", JobStatus_Substate_name, JobStatus_Substate_value) - proto.RegisterEnum("google.cloud.dataproc.v1beta2.YarnApplication_State", YarnApplication_State_name, YarnApplication_State_value) - proto.RegisterEnum("google.cloud.dataproc.v1beta2.ListJobsRequest_JobStateMatcher", ListJobsRequest_JobStateMatcher_name, ListJobsRequest_JobStateMatcher_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for JobController service - -type JobControllerClient interface { - // Submits a job to a cluster. - SubmitJob(ctx context.Context, in *SubmitJobRequest, opts ...grpc.CallOption) (*Job, error) - // Gets the resource representation for a job in a project. - GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) - // Lists regions/{region}/jobs in a project. - ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) - // Updates a job in a project. - UpdateJob(ctx context.Context, in *UpdateJobRequest, opts ...grpc.CallOption) (*Job, error) - // Starts a job cancellation request. To access the job resource - // after cancellation, call - // [regions/{region}/jobs.list](/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/list) or - // [regions/{region}/jobs.get](/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/get). - CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*Job, error) - // Deletes the job from the project. If the job is active, the delete fails, - // and the response returns `FAILED_PRECONDITION`. - DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type jobControllerClient struct { - cc *grpc.ClientConn -} - -func NewJobControllerClient(cc *grpc.ClientConn) JobControllerClient { - return &jobControllerClient{cc} -} - -func (c *jobControllerClient) SubmitJob(ctx context.Context, in *SubmitJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.JobController/SubmitJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.JobController/GetJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { - out := new(ListJobsResponse) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.JobController/ListJobs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) UpdateJob(ctx context.Context, in *UpdateJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.JobController/UpdateJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.JobController/CancelJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobControllerClient) DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.JobController/DeleteJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for JobController service - -type JobControllerServer interface { - // Submits a job to a cluster. - SubmitJob(context.Context, *SubmitJobRequest) (*Job, error) - // Gets the resource representation for a job in a project. - GetJob(context.Context, *GetJobRequest) (*Job, error) - // Lists regions/{region}/jobs in a project. - ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) - // Updates a job in a project. - UpdateJob(context.Context, *UpdateJobRequest) (*Job, error) - // Starts a job cancellation request. To access the job resource - // after cancellation, call - // [regions/{region}/jobs.list](/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/list) or - // [regions/{region}/jobs.get](/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/get). - CancelJob(context.Context, *CancelJobRequest) (*Job, error) - // Deletes the job from the project. If the job is active, the delete fails, - // and the response returns `FAILED_PRECONDITION`. - DeleteJob(context.Context, *DeleteJobRequest) (*google_protobuf2.Empty, error) -} - -func RegisterJobControllerServer(s *grpc.Server, srv JobControllerServer) { - s.RegisterService(&_JobController_serviceDesc, srv) -} - -func _JobController_SubmitJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubmitJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).SubmitJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.JobController/SubmitJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).SubmitJob(ctx, req.(*SubmitJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).GetJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.JobController/GetJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).GetJob(ctx, req.(*GetJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListJobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).ListJobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.JobController/ListJobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).ListJobs(ctx, req.(*ListJobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_UpdateJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).UpdateJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.JobController/UpdateJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).UpdateJob(ctx, req.(*UpdateJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_CancelJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).CancelJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.JobController/CancelJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).CancelJob(ctx, req.(*CancelJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobController_DeleteJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobControllerServer).DeleteJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.JobController/DeleteJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobControllerServer).DeleteJob(ctx, req.(*DeleteJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _JobController_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dataproc.v1beta2.JobController", - HandlerType: (*JobControllerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SubmitJob", - Handler: _JobController_SubmitJob_Handler, - }, - { - MethodName: "GetJob", - Handler: _JobController_GetJob_Handler, - }, - { - MethodName: "ListJobs", - Handler: _JobController_ListJobs_Handler, - }, - { - MethodName: "UpdateJob", - Handler: _JobController_UpdateJob_Handler, - }, - { - MethodName: "CancelJob", - Handler: _JobController_CancelJob_Handler, - }, - { - MethodName: "DeleteJob", - Handler: _JobController_DeleteJob_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dataproc/v1beta2/jobs.proto", -} - -func init() { proto.RegisterFile("google/cloud/dataproc/v1beta2/jobs.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 2294 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xcd, 0x6f, 0xdb, 0xc8, - 0x15, 0xb7, 0xbe, 0xc5, 0x27, 0x4b, 0xa6, 0x67, 0x93, 0xad, 0xa0, 0x74, 0xb1, 0x5e, 0x02, 0x9b, - 0xba, 0xd9, 0x42, 0x42, 0xd4, 0x34, 0x9b, 0x4d, 0xba, 0xdd, 0xc8, 0x12, 0x15, 0xc9, 0x55, 0x64, - 0x2d, 0x25, 0x25, 0xdd, 0x2d, 0x0a, 0x2e, 0x25, 0x8d, 0x65, 0xca, 0x14, 0xc9, 0x70, 0x48, 0x37, - 0xda, 0x20, 0x28, 0xd0, 0x4b, 0x0f, 0x3d, 0xf6, 0x52, 0xa0, 0x40, 0x81, 0xde, 0xba, 0x40, 0x2f, - 0xbd, 0xf6, 0x1f, 0x28, 0x7a, 0x69, 0x0f, 0xfb, 0x27, 0xb4, 0x87, 0x1e, 0x7b, 0xea, 0xb9, 0x98, - 0x19, 0x52, 0x96, 0x64, 0x27, 0xa2, 0xe3, 0x7e, 0x65, 0x4f, 0x26, 0xdf, 0xd7, 0xbc, 0x99, 0xdf, - 0x6f, 0xde, 0xbc, 0xa1, 0x0c, 0xbb, 0x63, 0xcb, 0x1a, 0x1b, 0xb8, 0x34, 0x34, 0x2c, 0x6f, 0x54, - 0x1a, 0x69, 0xae, 0x66, 0x3b, 0xd6, 0xb0, 0x74, 0x72, 0x73, 0x80, 0x5d, 0xad, 0x5c, 0x9a, 0x58, - 0x03, 0x52, 0xb4, 0x1d, 0xcb, 0xb5, 0xd0, 0x5b, 0xdc, 0xb2, 0xc8, 0x2c, 0x8b, 0x81, 0x65, 0xd1, - 0xb7, 0x2c, 0x7c, 0xdd, 0x0f, 0xa4, 0xd9, 0x7a, 0x49, 0x33, 0x4d, 0xcb, 0xd5, 0x5c, 0xdd, 0x32, - 0x7d, 0xe7, 0xc2, 0x35, 0x5f, 0xcb, 0xde, 0x06, 0xde, 0x61, 0x09, 0x4f, 0x6d, 0x77, 0xe6, 0x2b, - 0x77, 0x56, 0x95, 0x87, 0x3a, 0x36, 0x46, 0xea, 0x54, 0x23, 0xc7, 0xbe, 0xc5, 0xdb, 0xab, 0x16, - 0xae, 0x3e, 0xc5, 0xc4, 0xd5, 0xa6, 0x36, 0x37, 0x90, 0xfe, 0x1e, 0x85, 0x6c, 0xcb, 0x1a, 0x8f, - 0x75, 0x73, 0x5c, 0xb5, 0xcc, 0x43, 0x7d, 0x8c, 0xa6, 0xb0, 0x3d, 0x72, 0xf4, 0x13, 0xec, 0xa8, - 0x86, 0x35, 0x56, 0x0d, 0x7c, 0x82, 0x0d, 0x92, 0x8f, 0xee, 0xc4, 0x76, 0x33, 0xe5, 0x4a, 0xf1, - 0xa5, 0x53, 0x29, 0x2e, 0x05, 0x2a, 0xd6, 0x58, 0x94, 0x96, 0x35, 0x6e, 0xb1, 0x18, 0xb2, 0xe9, - 0x3a, 0x33, 0x65, 0x6b, 0xb4, 0x2c, 0x2d, 0x9c, 0xc0, 0x95, 0xf3, 0x0c, 0x91, 0x08, 0xb1, 0x63, - 0x3c, 0xcb, 0x47, 0x76, 0x22, 0xbb, 0x82, 0x42, 0x1f, 0x51, 0x03, 0x12, 0x27, 0x9a, 0xe1, 0xe1, - 0x7c, 0x74, 0x27, 0xb2, 0x9b, 0x2b, 0x97, 0x2f, 0x94, 0x0c, 0x0b, 0xad, 0xf0, 0x00, 0x77, 0xa3, - 0x77, 0x22, 0x92, 0x0d, 0x09, 0x26, 0x43, 0x57, 0x61, 0xbb, 0x25, 0x3f, 0x92, 0x5b, 0x6a, 0xbf, - 0xdd, 0xed, 0xc8, 0xd5, 0x66, 0xbd, 0x29, 0xd7, 0xc4, 0x0d, 0x94, 0x82, 0x58, 0xa5, 0xd5, 0x12, - 0x23, 0x48, 0x80, 0x44, 0x4f, 0xa9, 0x54, 0x65, 0x31, 0x4a, 0x1f, 0x6b, 0xf2, 0x5e, 0xff, 0x81, - 0x18, 0x43, 0x69, 0x88, 0x37, 0xdb, 0xf5, 0x03, 0x31, 0x4e, 0x9f, 0x1e, 0x57, 0x94, 0xb6, 0x98, - 0xa0, 0x6a, 0x59, 0x51, 0x0e, 0x14, 0x31, 0x49, 0x1f, 0xeb, 0x95, 0x5e, 0xa5, 0x25, 0xa6, 0x68, - 0xa0, 0x83, 0x7a, 0x5d, 0x4c, 0x4b, 0x7f, 0x8a, 0x81, 0xd0, 0xd0, 0x46, 0x96, 0x65, 0xef, 0x5b, - 0x03, 0xf4, 0x1e, 0x6c, 0x4f, 0x35, 0xdd, 0x54, 0x27, 0x9a, 0xa3, 0x1e, 0xea, 0x06, 0x56, 0x3d, - 0x47, 0xe7, 0xb3, 0x6d, 0x6c, 0x28, 0x39, 0xaa, 0xda, 0xd7, 0x9c, 0xba, 0x6e, 0xe0, 0xbe, 0xa3, - 0xa3, 0xb7, 0x01, 0x98, 0xf1, 0xd0, 0xd0, 0x08, 0x61, 0xf3, 0xa7, 0x56, 0x02, 0x95, 0x55, 0xa9, - 0x08, 0x21, 0x88, 0x6b, 0xce, 0x98, 0xe4, 0x63, 0x3b, 0xb1, 0x5d, 0x41, 0x61, 0xcf, 0x48, 0x82, - 0xec, 0x62, 0x70, 0x92, 0x8f, 0x33, 0x65, 0x66, 0x32, 0x8f, 0x4b, 0xd0, 0x35, 0x10, 0x4e, 0xf5, - 0x09, 0xa6, 0x4f, 0x1f, 0x06, 0xca, 0x77, 0x60, 0x53, 0x73, 0x86, 0x47, 0xfa, 0x89, 0xaf, 0x4f, - 0x72, 0x7f, 0x5f, 0xc6, 0x4c, 0x7e, 0x00, 0x60, 0x3b, 0x96, 0x8d, 0x1d, 0x57, 0xc7, 0x24, 0x9f, - 0x62, 0x2c, 0xb9, 0xb3, 0x06, 0x98, 0xf9, 0x1a, 0x14, 0x3b, 0x73, 0x57, 0x4e, 0x8e, 0x85, 0x58, - 0xa8, 0x0b, 0x39, 0x83, 0x23, 0xa8, 0x0e, 0x19, 0x84, 0xf9, 0xf4, 0x4e, 0x64, 0x37, 0x53, 0xfe, - 0xd6, 0x45, 0x60, 0x57, 0xb2, 0xc6, 0xe2, 0x6b, 0xe1, 0x43, 0xd8, 0x5a, 0x19, 0xf3, 0x1c, 0x9e, - 0x5d, 0x59, 0xe4, 0x99, 0xb0, 0xc0, 0x99, 0xbd, 0x34, 0x24, 0x39, 0x7d, 0xa5, 0x3f, 0xc6, 0x20, - 0xdd, 0xb5, 0x35, 0xe7, 0xf8, 0xab, 0x03, 0xe5, 0xe3, 0x73, 0xa0, 0x7c, 0x7f, 0xcd, 0x62, 0x07, - 0x4b, 0xf0, 0x1a, 0x23, 0xf9, 0xe7, 0x18, 0x40, 0x67, 0x36, 0xc7, 0xb2, 0x04, 0x57, 0x18, 0x3c, - 0xf6, 0xcc, 0x3d, 0xb2, 0xcc, 0x15, 0x38, 0x15, 0x86, 0x73, 0x87, 0xa9, 0x02, 0x3c, 0x03, 0xb8, - 0xa2, 0x0b, 0x70, 0xed, 0x82, 0xb8, 0xe2, 0x1f, 0xc0, 0x99, 0xb3, 0x17, 0x9d, 0xff, 0x3b, 0xc0, - 0x7e, 0x72, 0x0e, 0xb0, 0x1f, 0xac, 0x59, 0xfb, 0xd3, 0x15, 0x79, 0xdd, 0xa0, 0x95, 0xde, 0x05, - 0xe1, 0x63, 0x0f, 0x3b, 0xb3, 0x96, 0x4e, 0x5c, 0x94, 0x87, 0xd4, 0x13, 0x0f, 0x3b, 0x74, 0xe2, - 0x11, 0xb6, 0x32, 0xc1, 0xab, 0xf4, 0xeb, 0x38, 0xa4, 0x1a, 0xfa, 0x09, 0xa6, 0xa0, 0x5f, 0x87, - 0x1c, 0x15, 0xcf, 0xce, 0xee, 0xde, 0x4d, 0x26, 0x0f, 0xb0, 0x6e, 0x02, 0x70, 0x3b, 0x43, 0x27, - 0x2e, 0x1b, 0x39, 0x53, 0xde, 0x5d, 0x33, 0xd5, 0x79, 0x2e, 0x74, 0x97, 0x3f, 0x99, 0x27, 0x56, - 0x84, 0x37, 0x86, 0x96, 0xe9, 0xea, 0xa6, 0x87, 0x55, 0xca, 0x13, 0x4d, 0x37, 0x3c, 0x07, 0xe7, - 0x63, 0x3b, 0x91, 0xdd, 0xb4, 0xb2, 0x1d, 0xa8, 0x0e, 0xcc, 0x3a, 0x57, 0xa0, 0x43, 0x10, 0xc9, - 0xd0, 0xd1, 0x6d, 0x57, 0x3d, 0xd1, 0x1c, 0x5d, 0x1b, 0x18, 0x98, 0x73, 0x25, 0x53, 0xbe, 0xb7, - 0xae, 0xdc, 0xf2, 0x49, 0x16, 0xbb, 0xcc, 0xfd, 0x51, 0xe0, 0xed, 0x1f, 0xc7, 0x64, 0x59, 0x8a, - 0x1e, 0x2d, 0x91, 0x25, 0xc1, 0x46, 0xb8, 0x1d, 0x72, 0x84, 0x97, 0x31, 0xe5, 0x0c, 0xd1, 0x93, - 0x67, 0x88, 0x5e, 0xd8, 0x83, 0x2b, 0xe7, 0x25, 0x79, 0x11, 0xf4, 0x2f, 0x5b, 0x17, 0x84, 0x39, - 0x5f, 0xa4, 0xbf, 0xc4, 0x21, 0xc3, 0x36, 0x41, 0xf7, 0x89, 0xf1, 0x3f, 0x22, 0xc9, 0xe4, 0x1c, - 0xd0, 0x63, 0x0c, 0x92, 0x8f, 0xc2, 0x14, 0x66, 0x9e, 0x78, 0x48, 0xe0, 0x3f, 0x5d, 0x02, 0x9e, - 0x53, 0xeb, 0xee, 0x05, 0x46, 0xb9, 0x10, 0xf8, 0x77, 0xce, 0x56, 0xb9, 0xb3, 0xa5, 0x24, 0x79, - 0xf9, 0x52, 0xf2, 0xff, 0xc5, 0xa8, 0x7f, 0xc4, 0x21, 0xd9, 0xd1, 0xc7, 0xaf, 0x49, 0xc5, 0xc1, - 0x2f, 0xac, 0x38, 0xeb, 0x68, 0xc1, 0xe7, 0x18, 0x92, 0x77, 0xfd, 0x73, 0x0a, 0xce, 0x77, 0xc2, - 0x0d, 0x70, 0xc9, 0x7a, 0x73, 0x0e, 0xe5, 0x52, 0x5f, 0x35, 0xca, 0xf5, 0x60, 0x73, 0xdf, 0x1a, - 0x74, 0x0c, 0x6d, 0x88, 0xa7, 0xd8, 0x74, 0x69, 0xbb, 0x30, 0x34, 0x3c, 0xe2, 0x62, 0x47, 0x35, - 0xb5, 0x29, 0xf6, 0xe3, 0x65, 0x7c, 0x59, 0x5b, 0x9b, 0xe2, 0x45, 0x13, 0xcf, 0xd3, 0x47, 0x7e, - 0xf8, 0xc0, 0xa4, 0xef, 0xe9, 0x23, 0xe9, 0x9f, 0x31, 0x10, 0xf6, 0xad, 0x41, 0xd7, 0xd5, 0x5c, - 0x8f, 0xa0, 0x1a, 0x24, 0x88, 0xab, 0xb9, 0x3c, 0x58, 0xae, 0x5c, 0x5c, 0xb3, 0x7a, 0x73, 0xc7, - 0x22, 0xfd, 0x83, 0x15, 0xee, 0x4c, 0x4f, 0xea, 0x11, 0x76, 0x35, 0xdd, 0xf0, 0x9b, 0x62, 0x25, - 0x78, 0x45, 0x35, 0x10, 0x99, 0x89, 0x4a, 0x5c, 0xcd, 0x71, 0x55, 0x7a, 0x83, 0xf5, 0x6b, 0x43, - 0x21, 0x18, 0x2a, 0xb8, 0xde, 0x16, 0x7b, 0xc1, 0xf5, 0x56, 0xc9, 0x31, 0x9f, 0x2e, 0x75, 0xa1, - 0x42, 0xf4, 0x10, 0xd2, 0xc4, 0x1b, 0xf0, 0x44, 0x53, 0x2c, 0xd1, 0x9b, 0xe1, 0x13, 0xf5, 0x1d, - 0x95, 0x79, 0x08, 0xe9, 0x8b, 0x08, 0x24, 0x58, 0xfe, 0xf4, 0xfe, 0xd8, 0xed, 0x55, 0x7a, 0xf2, - 0xca, 0xfd, 0x31, 0x03, 0xa9, 0x8e, 0xdc, 0xae, 0x35, 0xdb, 0x0f, 0xc4, 0x08, 0xca, 0x01, 0x74, - 0xe5, 0x5e, 0xbf, 0xa3, 0xd6, 0x0e, 0xda, 0xb2, 0x98, 0xa6, 0x4a, 0xa5, 0xdf, 0x6e, 0x53, 0x65, - 0x14, 0x21, 0xc8, 0x55, 0x2b, 0xed, 0xaa, 0xdc, 0x52, 0x03, 0x87, 0xd8, 0x82, 0xac, 0xdb, 0xab, - 0x28, 0x3d, 0xb9, 0x26, 0xa6, 0x50, 0x16, 0x04, 0x2e, 0x6b, 0xc9, 0x35, 0x7e, 0xef, 0x64, 0xd1, - 0x96, 0xee, 0x9d, 0x6f, 0xc0, 0x56, 0xa5, 0xd7, 0x93, 0x1f, 0x76, 0x7a, 0x6a, 0xbd, 0xd2, 0x6c, - 0xf5, 0x15, 0x59, 0x14, 0xa4, 0x06, 0xa4, 0x83, 0x19, 0xa0, 0x2d, 0xc8, 0x2c, 0xe7, 0x99, 0x05, - 0xa1, 0xdb, 0xdf, 0x7b, 0xd8, 0xec, 0xd1, 0x41, 0x22, 0x08, 0x20, 0xf9, 0x71, 0x5f, 0xee, 0xcb, - 0x35, 0x31, 0x8a, 0x44, 0xd8, 0xec, 0xf6, 0x2a, 0x2d, 0x99, 0xe6, 0xd0, 0xeb, 0x77, 0xc5, 0x98, - 0x54, 0x63, 0x74, 0x52, 0xf0, 0x21, 0x76, 0xb0, 0x39, 0xc4, 0xe8, 0x2d, 0xb6, 0x79, 0x27, 0x78, - 0xe8, 0xaa, 0xfa, 0xc8, 0x27, 0x93, 0xe0, 0x4b, 0x9a, 0x23, 0x74, 0x15, 0x92, 0x13, 0x6b, 0xa0, - 0xce, 0x49, 0x94, 0x98, 0x58, 0x83, 0xe6, 0x48, 0xfa, 0x43, 0x14, 0xb6, 0x3e, 0xd1, 0x1c, 0xb3, - 0x62, 0xdb, 0x86, 0x3e, 0x64, 0x9f, 0x3b, 0x68, 0x1b, 0xbd, 0x40, 0x48, 0xf6, 0x8c, 0xf6, 0x03, - 0x62, 0xf1, 0x0b, 0xff, 0xad, 0x35, 0x78, 0xad, 0x84, 0x5c, 0xa6, 0x57, 0x01, 0xd2, 0xb6, 0x63, - 0x8d, 0x1d, 0x4c, 0x08, 0x2b, 0x79, 0x51, 0x65, 0xfe, 0x4e, 0x19, 0xef, 0x3a, 0xda, 0xf0, 0x98, - 0x16, 0x02, 0xcf, 0x31, 0xf2, 0x71, 0xce, 0xf8, 0x40, 0xd6, 0x77, 0x0c, 0xe9, 0x67, 0xeb, 0xe0, - 0x4e, 0x41, 0xac, 0x2d, 0x3f, 0xe6, 0x50, 0xb7, 0xe5, 0xc7, 0x6a, 0xb7, 0xf2, 0x88, 0xa3, 0xbb, - 0xb4, 0xbe, 0x31, 0xb4, 0x09, 0xe9, 0x4a, 0xb5, 0x2a, 0x77, 0x7a, 0x0c, 0xc3, 0x05, 0x1e, 0x24, - 0xa8, 0xaa, 0xde, 0x6c, 0x37, 0xbb, 0x0d, 0xb9, 0x26, 0x26, 0x29, 0x10, 0x14, 0x41, 0x86, 0x3c, - 0x40, 0xf2, 0xfb, 0x4d, 0x06, 0x7b, 0x5a, 0xfa, 0xa5, 0x00, 0x31, 0x7a, 0x82, 0x34, 0x41, 0x70, - 0x02, 0x1c, 0xd8, 0xaa, 0x65, 0xca, 0xef, 0xad, 0x27, 0xf4, 0x1c, 0x3a, 0xe5, 0xd4, 0x9b, 0x86, - 0xb2, 0x83, 0x0a, 0xe1, 0x9f, 0x31, 0x21, 0x42, 0xcd, 0x8b, 0x8a, 0x72, 0xea, 0x4d, 0xcf, 0xab, - 0x23, 0x76, 0xbd, 0x57, 0x27, 0xd6, 0x80, 0x2d, 0xf4, 0xfa, 0xf3, 0x6a, 0xfe, 0x3d, 0x80, 0x9e, - 0x57, 0x47, 0xf3, 0x0f, 0x24, 0x75, 0x10, 0x08, 0xed, 0x2f, 0x58, 0xa4, 0x38, 0x8b, 0xf4, 0x8d, - 0x90, 0xd7, 0xd1, 0xc6, 0x86, 0x92, 0x26, 0xc1, 0x8d, 0xae, 0x05, 0x19, 0x7b, 0x76, 0x1a, 0x29, - 0xc1, 0x22, 0x7d, 0x33, 0xf4, 0xfd, 0xa7, 0xb1, 0xa1, 0x80, 0xef, 0x4f, 0xa3, 0x55, 0x21, 0xcd, - 0x2e, 0x5b, 0x34, 0x14, 0x2f, 0x42, 0xd7, 0xc3, 0x75, 0xc7, 0x8d, 0x0d, 0x25, 0x75, 0xe4, 0xdf, - 0x37, 0xee, 0x43, 0xca, 0xd6, 0xc7, 0x2c, 0x06, 0x3f, 0x71, 0xde, 0x0d, 0x75, 0xe0, 0x35, 0x36, - 0x94, 0xa4, 0xcd, 0xfb, 0x87, 0x0e, 0x64, 0xf9, 0x94, 0xc8, 0x13, 0x83, 0xc5, 0xd9, 0x64, 0x71, - 0x6e, 0x84, 0x6f, 0xd8, 0x1a, 0x1b, 0x4a, 0x86, 0x2c, 0xb4, 0xb7, 0xf7, 0x21, 0x49, 0x58, 0xb5, - 0xf3, 0xaf, 0x70, 0xbb, 0x61, 0xab, 0xa3, 0xe2, 0xfb, 0xa1, 0x03, 0xc8, 0xf1, 0x27, 0xf5, 0x48, - 0x27, 0xae, 0xe5, 0xcc, 0xf2, 0x59, 0x76, 0x9a, 0x87, 0x8f, 0x94, 0xe5, 0xfe, 0x0d, 0xee, 0x8e, - 0x7e, 0x08, 0xdb, 0x33, 0xcd, 0x31, 0x55, 0xed, 0x74, 0x53, 0x93, 0xbc, 0xc0, 0x62, 0x16, 0x2f, - 0x56, 0x0b, 0x14, 0x71, 0xb6, 0x2c, 0x20, 0xe8, 0x1e, 0x14, 0xfc, 0xcf, 0x9c, 0x96, 0xe7, 0xda, - 0x9e, 0xab, 0x3a, 0x98, 0x58, 0x9e, 0x33, 0xe4, 0xdd, 0xd8, 0x36, 0x2b, 0x01, 0x5f, 0xe3, 0x16, - 0x07, 0xcc, 0x40, 0xf1, 0xf5, 0xb4, 0x2d, 0x7b, 0x1f, 0xf2, 0xbe, 0x33, 0xed, 0x9b, 0x1c, 0xcb, - 0x60, 0x8d, 0x06, 0x61, 0xae, 0x5b, 0xcc, 0xf5, 0x2a, 0xd7, 0x57, 0xb9, 0x9a, 0xb6, 0x1c, 0x84, - 0x3a, 0xd6, 0x21, 0x69, 0x68, 0x03, 0x6c, 0x90, 0x3c, 0x0a, 0x35, 0x0f, 0xda, 0xe6, 0xb4, 0x98, - 0x03, 0x6f, 0x71, 0x7c, 0x6f, 0xd4, 0x02, 0x20, 0xc3, 0x23, 0x3c, 0xf2, 0x0c, 0xdd, 0x1c, 0xe7, - 0xaf, 0x84, 0x6a, 0x5b, 0xe8, 0x3a, 0xcf, 0x7d, 0x94, 0x05, 0xff, 0xc2, 0x07, 0x90, 0x59, 0x18, - 0xe4, 0x42, 0xbd, 0x06, 0x40, 0xda, 0x9d, 0xd9, 0x6c, 0x3f, 0x48, 0x7b, 0x90, 0x5d, 0x1a, 0x03, - 0xdd, 0x84, 0xab, 0x53, 0xed, 0x69, 0xd0, 0x6a, 0x12, 0xd5, 0xc6, 0x8e, 0x7a, 0x64, 0x79, 0x0e, - 0x0b, 0x9d, 0x50, 0xd0, 0x54, 0x7b, 0xea, 0x77, 0x9b, 0xa4, 0x83, 0x9d, 0x86, 0xe5, 0x39, 0xd2, - 0x4f, 0x40, 0xec, 0x7a, 0x83, 0xa9, 0xee, 0xb2, 0x62, 0xf5, 0xc4, 0xc3, 0xc4, 0x5d, 0x77, 0xca, - 0xbc, 0x09, 0x49, 0x07, 0x8f, 0x75, 0xcb, 0x64, 0xf5, 0x46, 0x50, 0xfc, 0x37, 0x74, 0x0b, 0x62, - 0x74, 0x67, 0xf0, 0x82, 0x26, 0x85, 0xa8, 0x8d, 0xd4, 0x5c, 0xfa, 0x11, 0x64, 0x1f, 0xe0, 0x7f, - 0xc3, 0xe8, 0x2f, 0x38, 0xfb, 0xfe, 0x1a, 0x85, 0x2d, 0xda, 0x8e, 0xef, 0x5b, 0x03, 0x72, 0xe1, - 0x11, 0x92, 0x4b, 0x23, 0x5c, 0x03, 0xc1, 0xd6, 0xc6, 0x58, 0x25, 0xfa, 0xe7, 0x1c, 0x98, 0x84, - 0x92, 0xa6, 0x82, 0xae, 0xfe, 0x39, 0x3f, 0x99, 0xa9, 0xd2, 0xb5, 0x8e, 0x71, 0x90, 0x1a, 0x33, - 0xef, 0x51, 0xc1, 0x99, 0x3e, 0x30, 0x7e, 0xb6, 0x0f, 0x9c, 0xc0, 0x36, 0x9d, 0x00, 0x6f, 0xbd, - 0xa6, 0x9a, 0x3b, 0x3c, 0xc2, 0x0e, 0xab, 0x9e, 0xb9, 0xf2, 0xf7, 0xd6, 0x35, 0xc8, 0xcb, 0x13, - 0x0c, 0x76, 0x38, 0x7e, 0xc8, 0xa3, 0x28, 0x5b, 0x93, 0x65, 0x01, 0x9d, 0xe2, 0xa1, 0x6e, 0xb8, - 0xd8, 0x61, 0xf5, 0x50, 0x50, 0xfc, 0x37, 0xe9, 0x36, 0x6c, 0xad, 0xf8, 0x06, 0xdf, 0xe5, 0x37, - 0xe8, 0xa1, 0x58, 0xa9, 0xf6, 0x9a, 0x8f, 0x64, 0xff, 0xd0, 0x3d, 0x68, 0xab, 0xfe, 0x7b, 0x54, - 0xfa, 0x32, 0x02, 0x62, 0xdf, 0x1e, 0x69, 0x2e, 0x7e, 0x15, 0x20, 0xa3, 0x2f, 0x00, 0x32, 0xb6, - 0x00, 0x64, 0xc0, 0xae, 0xf8, 0x85, 0xd8, 0x85, 0xee, 0x41, 0xc6, 0x63, 0x79, 0xb1, 0x1f, 0x69, - 0xfc, 0xc3, 0xe8, 0x6c, 0x1b, 0x5b, 0xd7, 0xb1, 0x31, 0x7a, 0xa8, 0x91, 0x63, 0x05, 0xb8, 0x39, - 0x7d, 0x96, 0x1c, 0x10, 0x4f, 0x57, 0x96, 0xd8, 0x96, 0x49, 0x30, 0xba, 0x0d, 0xf1, 0x89, 0x35, - 0xe0, 0x5f, 0xb7, 0xc2, 0xe5, 0xc1, 0xec, 0xd1, 0x75, 0xd8, 0x32, 0xf1, 0x53, 0x57, 0x5d, 0x20, - 0x09, 0x9f, 0x76, 0x96, 0x8a, 0x3b, 0x01, 0x51, 0xa4, 0xcf, 0x40, 0xac, 0x6a, 0xe6, 0x10, 0x1b, - 0xff, 0xb1, 0x1d, 0xf1, 0x19, 0x88, 0x35, 0x6c, 0xe0, 0x57, 0x83, 0x2a, 0xcc, 0x08, 0xe5, 0x9f, - 0xa7, 0x59, 0x61, 0xf2, 0x6b, 0xb1, 0x81, 0x1d, 0xf4, 0xdb, 0x08, 0x08, 0xf3, 0x32, 0x83, 0x4a, - 0xeb, 0x4e, 0xcd, 0x95, 0x82, 0x54, 0x08, 0xb1, 0xcc, 0x52, 0xfd, 0xa7, 0x5f, 0xfe, 0xed, 0x17, - 0xd1, 0xfb, 0xd2, 0xbd, 0xf9, 0x4f, 0x82, 0x7e, 0xfe, 0xa4, 0xf4, 0xec, 0x74, 0x6e, 0xcf, 0x4b, - 0x3c, 0x75, 0x52, 0x7a, 0xc6, 0x1f, 0x9e, 0xb3, 0x5f, 0x0e, 0xef, 0x12, 0x36, 0xe4, 0xdd, 0xc8, - 0x0d, 0xf4, 0x9b, 0x08, 0x24, 0x79, 0x41, 0x42, 0xeb, 0x0a, 0xfc, 0x52, 0xdd, 0x0a, 0x95, 0xa4, - 0xcc, 0x92, 0xfc, 0x08, 0x7d, 0xf8, 0x2a, 0x49, 0x96, 0x9e, 0xf1, 0xc5, 0x7e, 0x8e, 0xbe, 0x88, - 0x40, 0x3a, 0x60, 0x26, 0x2a, 0x5e, 0xac, 0x38, 0x14, 0x4a, 0xa1, 0xed, 0x39, 0xe5, 0xa5, 0xef, - 0xb2, 0xa4, 0x6f, 0xa3, 0x5b, 0xaf, 0x92, 0x34, 0xfa, 0x5d, 0x04, 0x84, 0x79, 0x69, 0x58, 0x0b, - 0xfd, 0x6a, 0x11, 0x09, 0xb5, 0xaa, 0xfb, 0x2c, 0xc1, 0x5a, 0xf9, 0x72, 0xab, 0x7a, 0x97, 0x15, - 0x8c, 0xdf, 0x47, 0x40, 0x98, 0x6f, 0xc0, 0xb5, 0xe9, 0xae, 0x6e, 0xd5, 0x50, 0xe9, 0x1e, 0xb0, - 0x74, 0x9b, 0x52, 0xed, 0x72, 0xe9, 0x0e, 0xd9, 0xd8, 0x94, 0xb2, 0xbf, 0x8a, 0x80, 0x30, 0xdf, - 0xd2, 0x6b, 0x73, 0x5e, 0xdd, 0xfc, 0x85, 0x37, 0xcf, 0x94, 0x43, 0x79, 0x6a, 0xbb, 0xb3, 0x80, - 0xac, 0x37, 0x2e, 0xb7, 0xac, 0x7b, 0x3f, 0x86, 0x77, 0x86, 0xd6, 0xf4, 0xe5, 0x49, 0xed, 0x09, - 0x94, 0x71, 0x1d, 0x3a, 0x7e, 0x27, 0xf2, 0xa9, 0xec, 0xdb, 0x8e, 0x2d, 0x43, 0x33, 0xc7, 0x45, - 0xcb, 0x19, 0x97, 0xc6, 0xd8, 0x64, 0xd9, 0x95, 0xb8, 0x4a, 0xb3, 0x75, 0xf2, 0x82, 0xff, 0x04, - 0xb8, 0x17, 0x08, 0x06, 0x49, 0xe6, 0xf1, 0xed, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x83, - 0x17, 0x31, 0x3a, 0x20, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/operations.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/operations.pb.go deleted file mode 100644 index 55d5a6fa..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/operations.pb.go +++ /dev/null @@ -1,221 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dataproc/v1beta2/operations.proto - -package dataproc - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf5 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The operation state. -type ClusterOperationStatus_State int32 - -const ( - // Unused. - ClusterOperationStatus_UNKNOWN ClusterOperationStatus_State = 0 - // The operation has been created. - ClusterOperationStatus_PENDING ClusterOperationStatus_State = 1 - // The operation is running. - ClusterOperationStatus_RUNNING ClusterOperationStatus_State = 2 - // The operation is done; either cancelled or completed. - ClusterOperationStatus_DONE ClusterOperationStatus_State = 3 -) - -var ClusterOperationStatus_State_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", -} -var ClusterOperationStatus_State_value = map[string]int32{ - "UNKNOWN": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, -} - -func (x ClusterOperationStatus_State) String() string { - return proto.EnumName(ClusterOperationStatus_State_name, int32(x)) -} -func (ClusterOperationStatus_State) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 0} -} - -// The status of the operation. -type ClusterOperationStatus struct { - // Output-only. A message containing the operation state. - State ClusterOperationStatus_State `protobuf:"varint,1,opt,name=state,enum=google.cloud.dataproc.v1beta2.ClusterOperationStatus_State" json:"state,omitempty"` - // Output-only. A message containing the detailed operation state. - InnerState string `protobuf:"bytes,2,opt,name=inner_state,json=innerState" json:"inner_state,omitempty"` - // Output-only.A message containing any operation metadata details. - Details string `protobuf:"bytes,3,opt,name=details" json:"details,omitempty"` - // Output-only. The time this state was entered. - StateStartTime *google_protobuf5.Timestamp `protobuf:"bytes,4,opt,name=state_start_time,json=stateStartTime" json:"state_start_time,omitempty"` -} - -func (m *ClusterOperationStatus) Reset() { *m = ClusterOperationStatus{} } -func (m *ClusterOperationStatus) String() string { return proto.CompactTextString(m) } -func (*ClusterOperationStatus) ProtoMessage() {} -func (*ClusterOperationStatus) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *ClusterOperationStatus) GetState() ClusterOperationStatus_State { - if m != nil { - return m.State - } - return ClusterOperationStatus_UNKNOWN -} - -func (m *ClusterOperationStatus) GetInnerState() string { - if m != nil { - return m.InnerState - } - return "" -} - -func (m *ClusterOperationStatus) GetDetails() string { - if m != nil { - return m.Details - } - return "" -} - -func (m *ClusterOperationStatus) GetStateStartTime() *google_protobuf5.Timestamp { - if m != nil { - return m.StateStartTime - } - return nil -} - -// Metadata describing the operation. -type ClusterOperationMetadata struct { - // Output-only. Name of the cluster for the operation. - ClusterName string `protobuf:"bytes,7,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Output-only. Cluster UUID for the operation. - ClusterUuid string `protobuf:"bytes,8,opt,name=cluster_uuid,json=clusterUuid" json:"cluster_uuid,omitempty"` - // Output-only. Current operation status. - Status *ClusterOperationStatus `protobuf:"bytes,9,opt,name=status" json:"status,omitempty"` - // Output-only. The previous operation status. - StatusHistory []*ClusterOperationStatus `protobuf:"bytes,10,rep,name=status_history,json=statusHistory" json:"status_history,omitempty"` - // Output-only. The operation type. - OperationType string `protobuf:"bytes,11,opt,name=operation_type,json=operationType" json:"operation_type,omitempty"` - // Output-only. Short description of operation. - Description string `protobuf:"bytes,12,opt,name=description" json:"description,omitempty"` - // Output-only. Labels associated with the operation - Labels map[string]string `protobuf:"bytes,13,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Output-only. Errors encountered during operation execution. - Warnings []string `protobuf:"bytes,14,rep,name=warnings" json:"warnings,omitempty"` -} - -func (m *ClusterOperationMetadata) Reset() { *m = ClusterOperationMetadata{} } -func (m *ClusterOperationMetadata) String() string { return proto.CompactTextString(m) } -func (*ClusterOperationMetadata) ProtoMessage() {} -func (*ClusterOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ClusterOperationMetadata) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *ClusterOperationMetadata) GetClusterUuid() string { - if m != nil { - return m.ClusterUuid - } - return "" -} - -func (m *ClusterOperationMetadata) GetStatus() *ClusterOperationStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *ClusterOperationMetadata) GetStatusHistory() []*ClusterOperationStatus { - if m != nil { - return m.StatusHistory - } - return nil -} - -func (m *ClusterOperationMetadata) GetOperationType() string { - if m != nil { - return m.OperationType - } - return "" -} - -func (m *ClusterOperationMetadata) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *ClusterOperationMetadata) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *ClusterOperationMetadata) GetWarnings() []string { - if m != nil { - return m.Warnings - } - return nil -} - -func init() { - proto.RegisterType((*ClusterOperationStatus)(nil), "google.cloud.dataproc.v1beta2.ClusterOperationStatus") - proto.RegisterType((*ClusterOperationMetadata)(nil), "google.cloud.dataproc.v1beta2.ClusterOperationMetadata") - proto.RegisterEnum("google.cloud.dataproc.v1beta2.ClusterOperationStatus_State", ClusterOperationStatus_State_name, ClusterOperationStatus_State_value) -} - -func init() { proto.RegisterFile("google/cloud/dataproc/v1beta2/operations.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 537 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x5f, 0x8b, 0xd3, 0x4e, - 0x14, 0xfd, 0xa5, 0xff, 0x7b, 0xb3, 0xed, 0xaf, 0x0c, 0x22, 0x43, 0x51, 0x36, 0x5b, 0x10, 0xfa, - 0x94, 0x60, 0x45, 0x58, 0xdd, 0xb7, 0xdd, 0x16, 0x15, 0xdd, 0xb4, 0x66, 0xb7, 0x08, 0x2a, 0x94, - 0x69, 0x33, 0xc6, 0x60, 0x3a, 0x13, 0x66, 0x26, 0x2b, 0x7d, 0xf0, 0x0b, 0xf8, 0x41, 0xfc, 0x9c, - 0x32, 0x33, 0x49, 0xa9, 0xa2, 0x0b, 0xee, 0x53, 0xe7, 0xde, 0x7b, 0xce, 0x99, 0x73, 0xa6, 0x97, - 0x80, 0x9f, 0x70, 0x9e, 0x64, 0x34, 0xd8, 0x64, 0xbc, 0x88, 0x83, 0x98, 0x28, 0x92, 0x0b, 0xbe, - 0x09, 0x6e, 0x1e, 0xaf, 0xa9, 0x22, 0x93, 0x80, 0xe7, 0x54, 0x10, 0x95, 0x72, 0x26, 0xfd, 0x5c, - 0x70, 0xc5, 0xd1, 0x43, 0x8b, 0xf7, 0x0d, 0xde, 0xaf, 0xf0, 0x7e, 0x89, 0x1f, 0x3e, 0x28, 0xe5, - 0x48, 0x9e, 0x06, 0x84, 0x31, 0xae, 0x0e, 0xc9, 0xc3, 0xe3, 0x72, 0x6a, 0xaa, 0x75, 0xf1, 0x29, - 0x50, 0xe9, 0x96, 0x4a, 0x45, 0xb6, 0xb9, 0x05, 0x8c, 0x7e, 0xd4, 0xe0, 0xfe, 0x45, 0x56, 0x48, - 0x45, 0xc5, 0xbc, 0xba, 0xf9, 0x4a, 0x11, 0x55, 0x48, 0xf4, 0x16, 0x9a, 0x52, 0x11, 0x45, 0xb1, - 0xe3, 0x39, 0xe3, 0xfe, 0xe4, 0xcc, 0xbf, 0xd5, 0x88, 0xff, 0x67, 0x15, 0x5f, 0xff, 0xd0, 0xc8, - 0x2a, 0xa1, 0x63, 0x70, 0x53, 0xc6, 0xa8, 0x58, 0x59, 0xe1, 0x9a, 0xe7, 0x8c, 0xbb, 0x11, 0x98, - 0x96, 0xc1, 0x21, 0x0c, 0xed, 0x98, 0x2a, 0x92, 0x66, 0x12, 0xd7, 0xcd, 0xb0, 0x2a, 0xd1, 0x14, - 0x06, 0x86, 0xa4, 0xa9, 0x42, 0xad, 0x74, 0x0e, 0xdc, 0xf0, 0x9c, 0xb1, 0x3b, 0x19, 0x56, 0xc6, - 0xaa, 0x90, 0xfe, 0x75, 0x15, 0x32, 0xea, 0x1b, 0xce, 0x95, 0xa6, 0xe8, 0xe6, 0xe8, 0x14, 0x9a, - 0xf6, 0x22, 0x17, 0xda, 0xcb, 0xf0, 0x75, 0x38, 0x7f, 0x17, 0x0e, 0xfe, 0xd3, 0xc5, 0x62, 0x16, - 0x4e, 0x5f, 0x85, 0x2f, 0x06, 0x8e, 0x2e, 0xa2, 0x65, 0x18, 0xea, 0xa2, 0x86, 0x3a, 0xd0, 0x98, - 0xce, 0xc3, 0xd9, 0xa0, 0x3e, 0xfa, 0xde, 0x00, 0xfc, 0x7b, 0xc4, 0x4b, 0xaa, 0x88, 0x7e, 0x07, - 0x74, 0x02, 0x47, 0x1b, 0x3b, 0x5b, 0x31, 0xb2, 0xa5, 0xb8, 0x6d, 0xbc, 0xbb, 0x65, 0x2f, 0x24, - 0x5b, 0x7a, 0x08, 0x29, 0x8a, 0x34, 0xc6, 0x9d, 0x5f, 0x20, 0xcb, 0x22, 0x8d, 0xd1, 0x25, 0xb4, - 0xa4, 0x79, 0x34, 0xdc, 0x35, 0xc1, 0x9e, 0xde, 0xe9, 0xc5, 0xa3, 0x52, 0x04, 0x7d, 0x84, 0xbe, - 0x3d, 0xad, 0x3e, 0xa7, 0x52, 0x71, 0xb1, 0xc3, 0xe0, 0xd5, 0xef, 0x2e, 0xdb, 0xb3, 0x62, 0x2f, - 0xad, 0x16, 0x7a, 0x04, 0xfd, 0xfd, 0xaa, 0xae, 0xd4, 0x2e, 0xa7, 0xd8, 0x35, 0x89, 0x7a, 0xfb, - 0xee, 0xf5, 0x2e, 0xa7, 0xc8, 0x03, 0x37, 0xa6, 0x72, 0x23, 0xd2, 0x5c, 0xb7, 0xf0, 0x91, 0x4d, - 0x7d, 0xd0, 0x42, 0x1f, 0xa0, 0x95, 0x91, 0x35, 0xcd, 0x24, 0xee, 0x19, 0x7b, 0x17, 0xff, 0x68, - 0xaf, 0xfa, 0x13, 0xfc, 0x37, 0x46, 0x65, 0xc6, 0x94, 0xd8, 0x45, 0xa5, 0x24, 0x1a, 0x42, 0xe7, - 0x2b, 0x11, 0x2c, 0x65, 0x89, 0xc4, 0x7d, 0xaf, 0x3e, 0xee, 0x46, 0xfb, 0x7a, 0xf8, 0x0c, 0xdc, - 0x03, 0x0a, 0x1a, 0x40, 0xfd, 0x0b, 0xdd, 0x99, 0x65, 0xef, 0x46, 0xfa, 0x88, 0xee, 0x41, 0xf3, - 0x86, 0x64, 0x45, 0xb5, 0xa7, 0xb6, 0x78, 0x5e, 0x3b, 0x75, 0xce, 0xbf, 0xc1, 0xc9, 0x86, 0x6f, - 0x6f, 0x37, 0x7a, 0xfe, 0xff, 0xde, 0xa2, 0x5c, 0xe8, 0xcd, 0x5c, 0x38, 0xef, 0x67, 0x25, 0x23, - 0xe1, 0x19, 0x61, 0x89, 0xcf, 0x45, 0x12, 0x24, 0x94, 0x99, 0xbd, 0x0d, 0xec, 0x88, 0xe4, 0xa9, - 0xfc, 0xcb, 0xa7, 0xe1, 0xac, 0x6a, 0xac, 0x5b, 0x86, 0xf1, 0xe4, 0x67, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x83, 0x10, 0x95, 0x5e, 0x4b, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/workflow_templates.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/workflow_templates.pb.go deleted file mode 100644 index 0ed6987a..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2/workflow_templates.pb.go +++ /dev/null @@ -1,1526 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dataproc/v1beta2/workflow_templates.proto - -package dataproc - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf5 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The operation state. -type WorkflowMetadata_State int32 - -const ( - // Unused. - WorkflowMetadata_UNKNOWN WorkflowMetadata_State = 0 - // The operation has been created. - WorkflowMetadata_PENDING WorkflowMetadata_State = 1 - // The operation is running. - WorkflowMetadata_RUNNING WorkflowMetadata_State = 2 - // The operation is done; either cancelled or completed. - WorkflowMetadata_DONE WorkflowMetadata_State = 3 -) - -var WorkflowMetadata_State_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", -} -var WorkflowMetadata_State_value = map[string]int32{ - "UNKNOWN": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, -} - -func (x WorkflowMetadata_State) String() string { - return proto.EnumName(WorkflowMetadata_State_name, int32(x)) -} -func (WorkflowMetadata_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{5, 0} } - -type WorkflowNode_NodeState int32 - -const ( - WorkflowNode_NODE_STATUS_UNSPECIFIED WorkflowNode_NodeState = 0 - // The node is awaiting prerequisite node to finish. - WorkflowNode_BLOCKED WorkflowNode_NodeState = 1 - // The node is runnable but not running. - WorkflowNode_RUNNABLE WorkflowNode_NodeState = 2 - // The node is running. - WorkflowNode_RUNNING WorkflowNode_NodeState = 3 - // The node completed successfully. - WorkflowNode_COMPLETED WorkflowNode_NodeState = 4 - // The node failed. A node can be marked FAILED because - // its ancestor or peer failed. - WorkflowNode_FAILED WorkflowNode_NodeState = 5 -) - -var WorkflowNode_NodeState_name = map[int32]string{ - 0: "NODE_STATUS_UNSPECIFIED", - 1: "BLOCKED", - 2: "RUNNABLE", - 3: "RUNNING", - 4: "COMPLETED", - 5: "FAILED", -} -var WorkflowNode_NodeState_value = map[string]int32{ - "NODE_STATUS_UNSPECIFIED": 0, - "BLOCKED": 1, - "RUNNABLE": 2, - "RUNNING": 3, - "COMPLETED": 4, - "FAILED": 5, -} - -func (x WorkflowNode_NodeState) String() string { - return proto.EnumName(WorkflowNode_NodeState_name, int32(x)) -} -func (WorkflowNode_NodeState) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{8, 0} } - -// A Cloud Dataproc workflow template resource. -type WorkflowTemplate struct { - // Required. The template id. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // Output only. The "resource name" of the template, as described - // in https://cloud.google.com/apis/design/resource_names of the form - // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. Used to perform a consistent read-modify-write. - // - // This field should be left blank for a `CreateWorkflowTemplate` request. It - // is required for an `UpdateWorkflowTemplate` request, and must match the - // current server version. A typical update template flow would fetch the - // current template with a `GetWorkflowTemplate` request, which will return - // the current template with the `version` field filled in with the - // current server version. The user updates other fields in the template, - // then returns it as part of the `UpdateWorkflowTemplate` request. - Version int32 `protobuf:"varint,3,opt,name=version" json:"version,omitempty"` - // Output only. The time template was created. - CreateTime *google_protobuf5.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. The time template was last updated. - UpdateTime *google_protobuf5.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // Optional. The labels to associate with this template. These labels - // will be propagated to all jobs and clusters created by the workflow - // instance. - // - // Label **keys** must contain 1 to 63 characters, and must conform to - // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // - // Label **values** may be empty, but, if present, must contain 1 to 63 - // characters, and must conform to - // [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). - // - // No more than 32 labels can be associated with a template. - Labels map[string]string `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Required. WorkflowTemplate scheduling information. - Placement *WorkflowTemplatePlacement `protobuf:"bytes,7,opt,name=placement" json:"placement,omitempty"` - // Required. The Directed Acyclic Graph of Jobs to submit. - Jobs []*OrderedJob `protobuf:"bytes,8,rep,name=jobs" json:"jobs,omitempty"` -} - -func (m *WorkflowTemplate) Reset() { *m = WorkflowTemplate{} } -func (m *WorkflowTemplate) String() string { return proto.CompactTextString(m) } -func (*WorkflowTemplate) ProtoMessage() {} -func (*WorkflowTemplate) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *WorkflowTemplate) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *WorkflowTemplate) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *WorkflowTemplate) GetVersion() int32 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *WorkflowTemplate) GetCreateTime() *google_protobuf5.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *WorkflowTemplate) GetUpdateTime() *google_protobuf5.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *WorkflowTemplate) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *WorkflowTemplate) GetPlacement() *WorkflowTemplatePlacement { - if m != nil { - return m.Placement - } - return nil -} - -func (m *WorkflowTemplate) GetJobs() []*OrderedJob { - if m != nil { - return m.Jobs - } - return nil -} - -// Specifies workflow execution target. -// -// Either `managed_cluster` or `cluster_selector` is required. -type WorkflowTemplatePlacement struct { - // Types that are valid to be assigned to Placement: - // *WorkflowTemplatePlacement_ManagedCluster - // *WorkflowTemplatePlacement_ClusterSelector - Placement isWorkflowTemplatePlacement_Placement `protobuf_oneof:"placement"` -} - -func (m *WorkflowTemplatePlacement) Reset() { *m = WorkflowTemplatePlacement{} } -func (m *WorkflowTemplatePlacement) String() string { return proto.CompactTextString(m) } -func (*WorkflowTemplatePlacement) ProtoMessage() {} -func (*WorkflowTemplatePlacement) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -type isWorkflowTemplatePlacement_Placement interface { - isWorkflowTemplatePlacement_Placement() -} - -type WorkflowTemplatePlacement_ManagedCluster struct { - ManagedCluster *ManagedCluster `protobuf:"bytes,1,opt,name=managed_cluster,json=managedCluster,oneof"` -} -type WorkflowTemplatePlacement_ClusterSelector struct { - ClusterSelector *ClusterSelector `protobuf:"bytes,2,opt,name=cluster_selector,json=clusterSelector,oneof"` -} - -func (*WorkflowTemplatePlacement_ManagedCluster) isWorkflowTemplatePlacement_Placement() {} -func (*WorkflowTemplatePlacement_ClusterSelector) isWorkflowTemplatePlacement_Placement() {} - -func (m *WorkflowTemplatePlacement) GetPlacement() isWorkflowTemplatePlacement_Placement { - if m != nil { - return m.Placement - } - return nil -} - -func (m *WorkflowTemplatePlacement) GetManagedCluster() *ManagedCluster { - if x, ok := m.GetPlacement().(*WorkflowTemplatePlacement_ManagedCluster); ok { - return x.ManagedCluster - } - return nil -} - -func (m *WorkflowTemplatePlacement) GetClusterSelector() *ClusterSelector { - if x, ok := m.GetPlacement().(*WorkflowTemplatePlacement_ClusterSelector); ok { - return x.ClusterSelector - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*WorkflowTemplatePlacement) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _WorkflowTemplatePlacement_OneofMarshaler, _WorkflowTemplatePlacement_OneofUnmarshaler, _WorkflowTemplatePlacement_OneofSizer, []interface{}{ - (*WorkflowTemplatePlacement_ManagedCluster)(nil), - (*WorkflowTemplatePlacement_ClusterSelector)(nil), - } -} - -func _WorkflowTemplatePlacement_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*WorkflowTemplatePlacement) - // placement - switch x := m.Placement.(type) { - case *WorkflowTemplatePlacement_ManagedCluster: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ManagedCluster); err != nil { - return err - } - case *WorkflowTemplatePlacement_ClusterSelector: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ClusterSelector); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("WorkflowTemplatePlacement.Placement has unexpected type %T", x) - } - return nil -} - -func _WorkflowTemplatePlacement_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*WorkflowTemplatePlacement) - switch tag { - case 1: // placement.managed_cluster - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ManagedCluster) - err := b.DecodeMessage(msg) - m.Placement = &WorkflowTemplatePlacement_ManagedCluster{msg} - return true, err - case 2: // placement.cluster_selector - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ClusterSelector) - err := b.DecodeMessage(msg) - m.Placement = &WorkflowTemplatePlacement_ClusterSelector{msg} - return true, err - default: - return false, nil - } -} - -func _WorkflowTemplatePlacement_OneofSizer(msg proto.Message) (n int) { - m := msg.(*WorkflowTemplatePlacement) - // placement - switch x := m.Placement.(type) { - case *WorkflowTemplatePlacement_ManagedCluster: - s := proto.Size(x.ManagedCluster) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *WorkflowTemplatePlacement_ClusterSelector: - s := proto.Size(x.ClusterSelector) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Cluster that is managed by the workflow. -type ManagedCluster struct { - // Required. The cluster name. Cluster names within a project must be - // unique. Names from deleted clusters can be reused. - ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` - // Required. The cluster configuration. - Config *ClusterConfig `protobuf:"bytes,3,opt,name=config" json:"config,omitempty"` - // Optional. The labels to associate with this cluster. - // - // Label keys must be between 1 and 63 characters long, and must conform to - // the following PCRE regular expression: - // [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62} - // - // Label values must be between 1 and 63 characters long, and must conform to - // the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} - // - // No more than 64 labels can be associated with a given cluster. - Labels map[string]string `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *ManagedCluster) Reset() { *m = ManagedCluster{} } -func (m *ManagedCluster) String() string { return proto.CompactTextString(m) } -func (*ManagedCluster) ProtoMessage() {} -func (*ManagedCluster) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } - -func (m *ManagedCluster) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -func (m *ManagedCluster) GetConfig() *ClusterConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *ManagedCluster) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// A selector that chooses target cluster for jobs based on metadata. -type ClusterSelector struct { - // Optional. The zone where workflow process executes. This parameter does not - // affect the selection of the cluster. - // - // If unspecified, the zone of the first cluster matching the selector - // is used. - Zone string `protobuf:"bytes,1,opt,name=zone" json:"zone,omitempty"` - // Required. The cluster labels. Cluster must have all labels - // to match. - ClusterLabels map[string]string `protobuf:"bytes,2,rep,name=cluster_labels,json=clusterLabels" json:"cluster_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *ClusterSelector) Reset() { *m = ClusterSelector{} } -func (m *ClusterSelector) String() string { return proto.CompactTextString(m) } -func (*ClusterSelector) ProtoMessage() {} -func (*ClusterSelector) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{3} } - -func (m *ClusterSelector) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ClusterSelector) GetClusterLabels() map[string]string { - if m != nil { - return m.ClusterLabels - } - return nil -} - -type OrderedJob struct { - // Required. The step id. The id must be unique among all jobs - // within the template. - // - // The step id is used as prefix for job id, as job `workflow-step-id` label, - // and in prerequisite_step_ids field from other steps. - StepId string `protobuf:"bytes,1,opt,name=step_id,json=stepId" json:"step_id,omitempty"` - // Required. The job definition. - // - // Types that are valid to be assigned to JobType: - // *OrderedJob_HadoopJob - // *OrderedJob_SparkJob - // *OrderedJob_PysparkJob - // *OrderedJob_HiveJob - // *OrderedJob_PigJob - // *OrderedJob_SparkSqlJob - JobType isOrderedJob_JobType `protobuf_oneof:"job_type"` - // Optional. The labels to associate with this job. - // - // Label keys must be between 1 and 63 characters long, and must conform to - // the following regular expression: - // [\p{Ll}\p{Lo}][\p{Ll}\p{Lo}\p{N}_-]{0,62} - // - // Label values must be between 1 and 63 characters long, and must conform to - // the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} - // - // No more than 64 labels can be associated with a given job. - Labels map[string]string `protobuf:"bytes,8,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. Job scheduling configuration. - Scheduling *JobScheduling `protobuf:"bytes,9,opt,name=scheduling" json:"scheduling,omitempty"` - // Optional. The optional list of prerequisite job step_ids. - // If not specified, the job will start at the beginning of workflow. - PrerequisiteStepIds []string `protobuf:"bytes,10,rep,name=prerequisite_step_ids,json=prerequisiteStepIds" json:"prerequisite_step_ids,omitempty"` -} - -func (m *OrderedJob) Reset() { *m = OrderedJob{} } -func (m *OrderedJob) String() string { return proto.CompactTextString(m) } -func (*OrderedJob) ProtoMessage() {} -func (*OrderedJob) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4} } - -type isOrderedJob_JobType interface { - isOrderedJob_JobType() -} - -type OrderedJob_HadoopJob struct { - HadoopJob *HadoopJob `protobuf:"bytes,2,opt,name=hadoop_job,json=hadoopJob,oneof"` -} -type OrderedJob_SparkJob struct { - SparkJob *SparkJob `protobuf:"bytes,3,opt,name=spark_job,json=sparkJob,oneof"` -} -type OrderedJob_PysparkJob struct { - PysparkJob *PySparkJob `protobuf:"bytes,4,opt,name=pyspark_job,json=pysparkJob,oneof"` -} -type OrderedJob_HiveJob struct { - HiveJob *HiveJob `protobuf:"bytes,5,opt,name=hive_job,json=hiveJob,oneof"` -} -type OrderedJob_PigJob struct { - PigJob *PigJob `protobuf:"bytes,6,opt,name=pig_job,json=pigJob,oneof"` -} -type OrderedJob_SparkSqlJob struct { - SparkSqlJob *SparkSqlJob `protobuf:"bytes,7,opt,name=spark_sql_job,json=sparkSqlJob,oneof"` -} - -func (*OrderedJob_HadoopJob) isOrderedJob_JobType() {} -func (*OrderedJob_SparkJob) isOrderedJob_JobType() {} -func (*OrderedJob_PysparkJob) isOrderedJob_JobType() {} -func (*OrderedJob_HiveJob) isOrderedJob_JobType() {} -func (*OrderedJob_PigJob) isOrderedJob_JobType() {} -func (*OrderedJob_SparkSqlJob) isOrderedJob_JobType() {} - -func (m *OrderedJob) GetJobType() isOrderedJob_JobType { - if m != nil { - return m.JobType - } - return nil -} - -func (m *OrderedJob) GetStepId() string { - if m != nil { - return m.StepId - } - return "" -} - -func (m *OrderedJob) GetHadoopJob() *HadoopJob { - if x, ok := m.GetJobType().(*OrderedJob_HadoopJob); ok { - return x.HadoopJob - } - return nil -} - -func (m *OrderedJob) GetSparkJob() *SparkJob { - if x, ok := m.GetJobType().(*OrderedJob_SparkJob); ok { - return x.SparkJob - } - return nil -} - -func (m *OrderedJob) GetPysparkJob() *PySparkJob { - if x, ok := m.GetJobType().(*OrderedJob_PysparkJob); ok { - return x.PysparkJob - } - return nil -} - -func (m *OrderedJob) GetHiveJob() *HiveJob { - if x, ok := m.GetJobType().(*OrderedJob_HiveJob); ok { - return x.HiveJob - } - return nil -} - -func (m *OrderedJob) GetPigJob() *PigJob { - if x, ok := m.GetJobType().(*OrderedJob_PigJob); ok { - return x.PigJob - } - return nil -} - -func (m *OrderedJob) GetSparkSqlJob() *SparkSqlJob { - if x, ok := m.GetJobType().(*OrderedJob_SparkSqlJob); ok { - return x.SparkSqlJob - } - return nil -} - -func (m *OrderedJob) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *OrderedJob) GetScheduling() *JobScheduling { - if m != nil { - return m.Scheduling - } - return nil -} - -func (m *OrderedJob) GetPrerequisiteStepIds() []string { - if m != nil { - return m.PrerequisiteStepIds - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*OrderedJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _OrderedJob_OneofMarshaler, _OrderedJob_OneofUnmarshaler, _OrderedJob_OneofSizer, []interface{}{ - (*OrderedJob_HadoopJob)(nil), - (*OrderedJob_SparkJob)(nil), - (*OrderedJob_PysparkJob)(nil), - (*OrderedJob_HiveJob)(nil), - (*OrderedJob_PigJob)(nil), - (*OrderedJob_SparkSqlJob)(nil), - } -} - -func _OrderedJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*OrderedJob) - // job_type - switch x := m.JobType.(type) { - case *OrderedJob_HadoopJob: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HadoopJob); err != nil { - return err - } - case *OrderedJob_SparkJob: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SparkJob); err != nil { - return err - } - case *OrderedJob_PysparkJob: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PysparkJob); err != nil { - return err - } - case *OrderedJob_HiveJob: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HiveJob); err != nil { - return err - } - case *OrderedJob_PigJob: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PigJob); err != nil { - return err - } - case *OrderedJob_SparkSqlJob: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SparkSqlJob); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("OrderedJob.JobType has unexpected type %T", x) - } - return nil -} - -func _OrderedJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*OrderedJob) - switch tag { - case 2: // job_type.hadoop_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(HadoopJob) - err := b.DecodeMessage(msg) - m.JobType = &OrderedJob_HadoopJob{msg} - return true, err - case 3: // job_type.spark_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(SparkJob) - err := b.DecodeMessage(msg) - m.JobType = &OrderedJob_SparkJob{msg} - return true, err - case 4: // job_type.pyspark_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PySparkJob) - err := b.DecodeMessage(msg) - m.JobType = &OrderedJob_PysparkJob{msg} - return true, err - case 5: // job_type.hive_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(HiveJob) - err := b.DecodeMessage(msg) - m.JobType = &OrderedJob_HiveJob{msg} - return true, err - case 6: // job_type.pig_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PigJob) - err := b.DecodeMessage(msg) - m.JobType = &OrderedJob_PigJob{msg} - return true, err - case 7: // job_type.spark_sql_job - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(SparkSqlJob) - err := b.DecodeMessage(msg) - m.JobType = &OrderedJob_SparkSqlJob{msg} - return true, err - default: - return false, nil - } -} - -func _OrderedJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*OrderedJob) - // job_type - switch x := m.JobType.(type) { - case *OrderedJob_HadoopJob: - s := proto.Size(x.HadoopJob) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *OrderedJob_SparkJob: - s := proto.Size(x.SparkJob) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *OrderedJob_PysparkJob: - s := proto.Size(x.PysparkJob) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *OrderedJob_HiveJob: - s := proto.Size(x.HiveJob) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *OrderedJob_PigJob: - s := proto.Size(x.PigJob) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *OrderedJob_SparkSqlJob: - s := proto.Size(x.SparkSqlJob) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cloud Dataproc workflow template resource. -type WorkflowMetadata struct { - // Output only. The "resource name" of the template. - Template string `protobuf:"bytes,1,opt,name=template" json:"template,omitempty"` - // Output only. The version of template at the time of - // workflow instantiation. - Version int32 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` - // Output only. The create cluster operation metadata. - CreateCluster *ClusterOperation `protobuf:"bytes,3,opt,name=create_cluster,json=createCluster" json:"create_cluster,omitempty"` - // Output only. The workflow graph. - Graph *WorkflowGraph `protobuf:"bytes,4,opt,name=graph" json:"graph,omitempty"` - // Output only. The delete cluster operation metadata. - DeleteCluster *ClusterOperation `protobuf:"bytes,5,opt,name=delete_cluster,json=deleteCluster" json:"delete_cluster,omitempty"` - // Output only. The workflow state. - State WorkflowMetadata_State `protobuf:"varint,6,opt,name=state,enum=google.cloud.dataproc.v1beta2.WorkflowMetadata_State" json:"state,omitempty"` - // Output only. The name of the managed cluster. - ClusterName string `protobuf:"bytes,7,opt,name=cluster_name,json=clusterName" json:"cluster_name,omitempty"` -} - -func (m *WorkflowMetadata) Reset() { *m = WorkflowMetadata{} } -func (m *WorkflowMetadata) String() string { return proto.CompactTextString(m) } -func (*WorkflowMetadata) ProtoMessage() {} -func (*WorkflowMetadata) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{5} } - -func (m *WorkflowMetadata) GetTemplate() string { - if m != nil { - return m.Template - } - return "" -} - -func (m *WorkflowMetadata) GetVersion() int32 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *WorkflowMetadata) GetCreateCluster() *ClusterOperation { - if m != nil { - return m.CreateCluster - } - return nil -} - -func (m *WorkflowMetadata) GetGraph() *WorkflowGraph { - if m != nil { - return m.Graph - } - return nil -} - -func (m *WorkflowMetadata) GetDeleteCluster() *ClusterOperation { - if m != nil { - return m.DeleteCluster - } - return nil -} - -func (m *WorkflowMetadata) GetState() WorkflowMetadata_State { - if m != nil { - return m.State - } - return WorkflowMetadata_UNKNOWN -} - -func (m *WorkflowMetadata) GetClusterName() string { - if m != nil { - return m.ClusterName - } - return "" -} - -type ClusterOperation struct { - // Output only. The id of the cluster operation. - OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // Output only. Error, if operation failed. - Error string `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"` - // Output only. Indicates the operation is done. - Done bool `protobuf:"varint,3,opt,name=done" json:"done,omitempty"` -} - -func (m *ClusterOperation) Reset() { *m = ClusterOperation{} } -func (m *ClusterOperation) String() string { return proto.CompactTextString(m) } -func (*ClusterOperation) ProtoMessage() {} -func (*ClusterOperation) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{6} } - -func (m *ClusterOperation) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *ClusterOperation) GetError() string { - if m != nil { - return m.Error - } - return "" -} - -func (m *ClusterOperation) GetDone() bool { - if m != nil { - return m.Done - } - return false -} - -// The workflow graph. -type WorkflowGraph struct { - // Output only. The workflow nodes. - Nodes []*WorkflowNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"` -} - -func (m *WorkflowGraph) Reset() { *m = WorkflowGraph{} } -func (m *WorkflowGraph) String() string { return proto.CompactTextString(m) } -func (*WorkflowGraph) ProtoMessage() {} -func (*WorkflowGraph) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{7} } - -func (m *WorkflowGraph) GetNodes() []*WorkflowNode { - if m != nil { - return m.Nodes - } - return nil -} - -// The workflow node. -type WorkflowNode struct { - // Output only. The name of the node. - StepId string `protobuf:"bytes,1,opt,name=step_id,json=stepId" json:"step_id,omitempty"` - // Output only. Node's prerequisite nodes. - PrerequisiteStepIds []string `protobuf:"bytes,2,rep,name=prerequisite_step_ids,json=prerequisiteStepIds" json:"prerequisite_step_ids,omitempty"` - // Output only. The job id; populated after the node enters RUNNING state. - JobId string `protobuf:"bytes,3,opt,name=job_id,json=jobId" json:"job_id,omitempty"` - // Output only. The node state. - State WorkflowNode_NodeState `protobuf:"varint,5,opt,name=state,enum=google.cloud.dataproc.v1beta2.WorkflowNode_NodeState" json:"state,omitempty"` - // Output only. The error detail. - Error string `protobuf:"bytes,6,opt,name=error" json:"error,omitempty"` -} - -func (m *WorkflowNode) Reset() { *m = WorkflowNode{} } -func (m *WorkflowNode) String() string { return proto.CompactTextString(m) } -func (*WorkflowNode) ProtoMessage() {} -func (*WorkflowNode) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{8} } - -func (m *WorkflowNode) GetStepId() string { - if m != nil { - return m.StepId - } - return "" -} - -func (m *WorkflowNode) GetPrerequisiteStepIds() []string { - if m != nil { - return m.PrerequisiteStepIds - } - return nil -} - -func (m *WorkflowNode) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -func (m *WorkflowNode) GetState() WorkflowNode_NodeState { - if m != nil { - return m.State - } - return WorkflowNode_NODE_STATUS_UNSPECIFIED -} - -func (m *WorkflowNode) GetError() string { - if m != nil { - return m.Error - } - return "" -} - -// A request to create a workflow template. -type CreateWorkflowTemplateRequest struct { - // Required. The "resource name" of the region, as described - // in https://cloud.google.com/apis/design/resource_names of the form - // `projects/{project_id}/regions/{region}` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The Dataproc workflow template to create. - Template *WorkflowTemplate `protobuf:"bytes,2,opt,name=template" json:"template,omitempty"` -} - -func (m *CreateWorkflowTemplateRequest) Reset() { *m = CreateWorkflowTemplateRequest{} } -func (m *CreateWorkflowTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*CreateWorkflowTemplateRequest) ProtoMessage() {} -func (*CreateWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{9} } - -func (m *CreateWorkflowTemplateRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateWorkflowTemplateRequest) GetTemplate() *WorkflowTemplate { - if m != nil { - return m.Template - } - return nil -} - -// A request to fetch a workflow template. -type GetWorkflowTemplateRequest struct { - // Required. The "resource name" of the workflow template, as described - // in https://cloud.google.com/apis/design/resource_names of the form - // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The version of workflow template to retrieve. Only previously - // instatiated versions can be retrieved. - // - // If unspecified, retrieves the current version. - Version int32 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` -} - -func (m *GetWorkflowTemplateRequest) Reset() { *m = GetWorkflowTemplateRequest{} } -func (m *GetWorkflowTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*GetWorkflowTemplateRequest) ProtoMessage() {} -func (*GetWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{10} } - -func (m *GetWorkflowTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GetWorkflowTemplateRequest) GetVersion() int32 { - if m != nil { - return m.Version - } - return 0 -} - -// A request to instantiate a workflow template. -type InstantiateWorkflowTemplateRequest struct { - // Required. The "resource name" of the workflow template, as described - // in https://cloud.google.com/apis/design/resource_names of the form - // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The version of workflow template to instantiate. If specified, - // the workflow will be instantiated only if the current version of - // the workflow template has the supplied version. - // - // This option cannot be used to instantiate a previous version of - // workflow template. - Version int32 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` - // Optional. A tag that prevents multiple concurrent workflow - // instances with the same tag from running. This mitigates risk of - // concurrent instances started due to retries. - // - // It is recommended to always set this value to a - // [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier). - // - // The tag must contain only letters (a-z, A-Z), numbers (0-9), - // underscores (_), and hyphens (-). The maximum length is 40 characters. - InstanceId string `protobuf:"bytes,3,opt,name=instance_id,json=instanceId" json:"instance_id,omitempty"` -} - -func (m *InstantiateWorkflowTemplateRequest) Reset() { *m = InstantiateWorkflowTemplateRequest{} } -func (m *InstantiateWorkflowTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*InstantiateWorkflowTemplateRequest) ProtoMessage() {} -func (*InstantiateWorkflowTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{11} -} - -func (m *InstantiateWorkflowTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *InstantiateWorkflowTemplateRequest) GetVersion() int32 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *InstantiateWorkflowTemplateRequest) GetInstanceId() string { - if m != nil { - return m.InstanceId - } - return "" -} - -// A request to update a workflow template. -type UpdateWorkflowTemplateRequest struct { - // Required. The updated workflow template. - // - // The `template.version` field must match the current version. - Template *WorkflowTemplate `protobuf:"bytes,1,opt,name=template" json:"template,omitempty"` -} - -func (m *UpdateWorkflowTemplateRequest) Reset() { *m = UpdateWorkflowTemplateRequest{} } -func (m *UpdateWorkflowTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateWorkflowTemplateRequest) ProtoMessage() {} -func (*UpdateWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{12} } - -func (m *UpdateWorkflowTemplateRequest) GetTemplate() *WorkflowTemplate { - if m != nil { - return m.Template - } - return nil -} - -// A request to list workflow templates in a project. -type ListWorkflowTemplatesRequest struct { - // Required. The "resource name" of the region, as described - // in https://cloud.google.com/apis/design/resource_names of the form - // `projects/{project_id}/regions/{region}` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. The maximum number of results to return in each response. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The page token, returned by a previous call, to request the - // next page of results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListWorkflowTemplatesRequest) Reset() { *m = ListWorkflowTemplatesRequest{} } -func (m *ListWorkflowTemplatesRequest) String() string { return proto.CompactTextString(m) } -func (*ListWorkflowTemplatesRequest) ProtoMessage() {} -func (*ListWorkflowTemplatesRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{13} } - -func (m *ListWorkflowTemplatesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListWorkflowTemplatesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListWorkflowTemplatesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// A response to a request to list workflow templates in a project. -type ListWorkflowTemplatesResponse struct { - // Output only. WorkflowTemplates list. - Templates []*WorkflowTemplate `protobuf:"bytes,1,rep,name=templates" json:"templates,omitempty"` - // Output only. This token is included in the response if there are more results - // to fetch. To fetch additional results, provide this value as the - // page_token in a subsequent <code>ListWorkflowTemplatesRequest</code>. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListWorkflowTemplatesResponse) Reset() { *m = ListWorkflowTemplatesResponse{} } -func (m *ListWorkflowTemplatesResponse) String() string { return proto.CompactTextString(m) } -func (*ListWorkflowTemplatesResponse) ProtoMessage() {} -func (*ListWorkflowTemplatesResponse) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{14} } - -func (m *ListWorkflowTemplatesResponse) GetTemplates() []*WorkflowTemplate { - if m != nil { - return m.Templates - } - return nil -} - -func (m *ListWorkflowTemplatesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// A request to delete a workflow template. -// -// Currently started workflows will remain running. -type DeleteWorkflowTemplateRequest struct { - // Required. The "resource name" of the workflow template, as described - // in https://cloud.google.com/apis/design/resource_names of the form - // `projects/{project_id}/regions/{region}/workflowTemplates/{template_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The version of workflow template to delete. If specified, - // will only delete the template if the current server version matches - // specified version. - Version int32 `protobuf:"varint,2,opt,name=version" json:"version,omitempty"` -} - -func (m *DeleteWorkflowTemplateRequest) Reset() { *m = DeleteWorkflowTemplateRequest{} } -func (m *DeleteWorkflowTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteWorkflowTemplateRequest) ProtoMessage() {} -func (*DeleteWorkflowTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{15} } - -func (m *DeleteWorkflowTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DeleteWorkflowTemplateRequest) GetVersion() int32 { - if m != nil { - return m.Version - } - return 0 -} - -func init() { - proto.RegisterType((*WorkflowTemplate)(nil), "google.cloud.dataproc.v1beta2.WorkflowTemplate") - proto.RegisterType((*WorkflowTemplatePlacement)(nil), "google.cloud.dataproc.v1beta2.WorkflowTemplatePlacement") - proto.RegisterType((*ManagedCluster)(nil), "google.cloud.dataproc.v1beta2.ManagedCluster") - proto.RegisterType((*ClusterSelector)(nil), "google.cloud.dataproc.v1beta2.ClusterSelector") - proto.RegisterType((*OrderedJob)(nil), "google.cloud.dataproc.v1beta2.OrderedJob") - proto.RegisterType((*WorkflowMetadata)(nil), "google.cloud.dataproc.v1beta2.WorkflowMetadata") - proto.RegisterType((*ClusterOperation)(nil), "google.cloud.dataproc.v1beta2.ClusterOperation") - proto.RegisterType((*WorkflowGraph)(nil), "google.cloud.dataproc.v1beta2.WorkflowGraph") - proto.RegisterType((*WorkflowNode)(nil), "google.cloud.dataproc.v1beta2.WorkflowNode") - proto.RegisterType((*CreateWorkflowTemplateRequest)(nil), "google.cloud.dataproc.v1beta2.CreateWorkflowTemplateRequest") - proto.RegisterType((*GetWorkflowTemplateRequest)(nil), "google.cloud.dataproc.v1beta2.GetWorkflowTemplateRequest") - proto.RegisterType((*InstantiateWorkflowTemplateRequest)(nil), "google.cloud.dataproc.v1beta2.InstantiateWorkflowTemplateRequest") - proto.RegisterType((*UpdateWorkflowTemplateRequest)(nil), "google.cloud.dataproc.v1beta2.UpdateWorkflowTemplateRequest") - proto.RegisterType((*ListWorkflowTemplatesRequest)(nil), "google.cloud.dataproc.v1beta2.ListWorkflowTemplatesRequest") - proto.RegisterType((*ListWorkflowTemplatesResponse)(nil), "google.cloud.dataproc.v1beta2.ListWorkflowTemplatesResponse") - proto.RegisterType((*DeleteWorkflowTemplateRequest)(nil), "google.cloud.dataproc.v1beta2.DeleteWorkflowTemplateRequest") - proto.RegisterEnum("google.cloud.dataproc.v1beta2.WorkflowMetadata_State", WorkflowMetadata_State_name, WorkflowMetadata_State_value) - proto.RegisterEnum("google.cloud.dataproc.v1beta2.WorkflowNode_NodeState", WorkflowNode_NodeState_name, WorkflowNode_NodeState_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for WorkflowTemplateService service - -type WorkflowTemplateServiceClient interface { - // Creates new workflow template. - CreateWorkflowTemplate(ctx context.Context, in *CreateWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) - // Retrieves the latest workflow template. - // - // Can retrieve previously instantiated template by specifying optional - // version parameter. - GetWorkflowTemplate(ctx context.Context, in *GetWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) - // Instantiates a template and begins execution. - // - // The returned Operation can be used to track execution of - // workflow by polling - // [google.cloud.dataproc.v1beta2.OperationService.GetOperation][]. - // The Operation will complete when entire workflow is finished. - // - // The running workflow can be aborted via - // [google.cloud.dataproc.v1beta2.OperationService.CancelOperation][]. - // - // The [google.cloud.dataproc.v1beta2.Operation.metadata][] will always be - // [google.cloud.dataproc.v1beta2.WorkflowMetadata][google.cloud.dataproc.v1beta2.WorkflowMetadata]. - // - // The [google.cloud.dataproc.v1beta2.Operation.result][] will always be - // [google.protobuf.Empty][google.protobuf.Empty]. - InstantiateWorkflowTemplate(ctx context.Context, in *InstantiateWorkflowTemplateRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Updates (replaces) workflow template. The updated template - // must contain version that matches the current server version. - UpdateWorkflowTemplate(ctx context.Context, in *UpdateWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) - // Lists workflows that match the specified filter in the request. - ListWorkflowTemplates(ctx context.Context, in *ListWorkflowTemplatesRequest, opts ...grpc.CallOption) (*ListWorkflowTemplatesResponse, error) - // Deletes a workflow template. It does not cancel in-progress workflows. - DeleteWorkflowTemplate(ctx context.Context, in *DeleteWorkflowTemplateRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type workflowTemplateServiceClient struct { - cc *grpc.ClientConn -} - -func NewWorkflowTemplateServiceClient(cc *grpc.ClientConn) WorkflowTemplateServiceClient { - return &workflowTemplateServiceClient{cc} -} - -func (c *workflowTemplateServiceClient) CreateWorkflowTemplate(ctx context.Context, in *CreateWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) { - out := new(WorkflowTemplate) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/CreateWorkflowTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *workflowTemplateServiceClient) GetWorkflowTemplate(ctx context.Context, in *GetWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) { - out := new(WorkflowTemplate) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/GetWorkflowTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *workflowTemplateServiceClient) InstantiateWorkflowTemplate(ctx context.Context, in *InstantiateWorkflowTemplateRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/InstantiateWorkflowTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *workflowTemplateServiceClient) UpdateWorkflowTemplate(ctx context.Context, in *UpdateWorkflowTemplateRequest, opts ...grpc.CallOption) (*WorkflowTemplate, error) { - out := new(WorkflowTemplate) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/UpdateWorkflowTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *workflowTemplateServiceClient) ListWorkflowTemplates(ctx context.Context, in *ListWorkflowTemplatesRequest, opts ...grpc.CallOption) (*ListWorkflowTemplatesResponse, error) { - out := new(ListWorkflowTemplatesResponse) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/ListWorkflowTemplates", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *workflowTemplateServiceClient) DeleteWorkflowTemplate(ctx context.Context, in *DeleteWorkflowTemplateRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/DeleteWorkflowTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for WorkflowTemplateService service - -type WorkflowTemplateServiceServer interface { - // Creates new workflow template. - CreateWorkflowTemplate(context.Context, *CreateWorkflowTemplateRequest) (*WorkflowTemplate, error) - // Retrieves the latest workflow template. - // - // Can retrieve previously instantiated template by specifying optional - // version parameter. - GetWorkflowTemplate(context.Context, *GetWorkflowTemplateRequest) (*WorkflowTemplate, error) - // Instantiates a template and begins execution. - // - // The returned Operation can be used to track execution of - // workflow by polling - // [google.cloud.dataproc.v1beta2.OperationService.GetOperation][]. - // The Operation will complete when entire workflow is finished. - // - // The running workflow can be aborted via - // [google.cloud.dataproc.v1beta2.OperationService.CancelOperation][]. - // - // The [google.cloud.dataproc.v1beta2.Operation.metadata][] will always be - // [google.cloud.dataproc.v1beta2.WorkflowMetadata][google.cloud.dataproc.v1beta2.WorkflowMetadata]. - // - // The [google.cloud.dataproc.v1beta2.Operation.result][] will always be - // [google.protobuf.Empty][google.protobuf.Empty]. - InstantiateWorkflowTemplate(context.Context, *InstantiateWorkflowTemplateRequest) (*google_longrunning.Operation, error) - // Updates (replaces) workflow template. The updated template - // must contain version that matches the current server version. - UpdateWorkflowTemplate(context.Context, *UpdateWorkflowTemplateRequest) (*WorkflowTemplate, error) - // Lists workflows that match the specified filter in the request. - ListWorkflowTemplates(context.Context, *ListWorkflowTemplatesRequest) (*ListWorkflowTemplatesResponse, error) - // Deletes a workflow template. It does not cancel in-progress workflows. - DeleteWorkflowTemplate(context.Context, *DeleteWorkflowTemplateRequest) (*google_protobuf2.Empty, error) -} - -func RegisterWorkflowTemplateServiceServer(s *grpc.Server, srv WorkflowTemplateServiceServer) { - s.RegisterService(&_WorkflowTemplateService_serviceDesc, srv) -} - -func _WorkflowTemplateService_CreateWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateWorkflowTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkflowTemplateServiceServer).CreateWorkflowTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/CreateWorkflowTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowTemplateServiceServer).CreateWorkflowTemplate(ctx, req.(*CreateWorkflowTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _WorkflowTemplateService_GetWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetWorkflowTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkflowTemplateServiceServer).GetWorkflowTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/GetWorkflowTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowTemplateServiceServer).GetWorkflowTemplate(ctx, req.(*GetWorkflowTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _WorkflowTemplateService_InstantiateWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(InstantiateWorkflowTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkflowTemplateServiceServer).InstantiateWorkflowTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/InstantiateWorkflowTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowTemplateServiceServer).InstantiateWorkflowTemplate(ctx, req.(*InstantiateWorkflowTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _WorkflowTemplateService_UpdateWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateWorkflowTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkflowTemplateServiceServer).UpdateWorkflowTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/UpdateWorkflowTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowTemplateServiceServer).UpdateWorkflowTemplate(ctx, req.(*UpdateWorkflowTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _WorkflowTemplateService_ListWorkflowTemplates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListWorkflowTemplatesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkflowTemplateServiceServer).ListWorkflowTemplates(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/ListWorkflowTemplates", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowTemplateServiceServer).ListWorkflowTemplates(ctx, req.(*ListWorkflowTemplatesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _WorkflowTemplateService_DeleteWorkflowTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteWorkflowTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkflowTemplateServiceServer).DeleteWorkflowTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dataproc.v1beta2.WorkflowTemplateService/DeleteWorkflowTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkflowTemplateServiceServer).DeleteWorkflowTemplate(ctx, req.(*DeleteWorkflowTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _WorkflowTemplateService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dataproc.v1beta2.WorkflowTemplateService", - HandlerType: (*WorkflowTemplateServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateWorkflowTemplate", - Handler: _WorkflowTemplateService_CreateWorkflowTemplate_Handler, - }, - { - MethodName: "GetWorkflowTemplate", - Handler: _WorkflowTemplateService_GetWorkflowTemplate_Handler, - }, - { - MethodName: "InstantiateWorkflowTemplate", - Handler: _WorkflowTemplateService_InstantiateWorkflowTemplate_Handler, - }, - { - MethodName: "UpdateWorkflowTemplate", - Handler: _WorkflowTemplateService_UpdateWorkflowTemplate_Handler, - }, - { - MethodName: "ListWorkflowTemplates", - Handler: _WorkflowTemplateService_ListWorkflowTemplates_Handler, - }, - { - MethodName: "DeleteWorkflowTemplate", - Handler: _WorkflowTemplateService_DeleteWorkflowTemplate_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dataproc/v1beta2/workflow_templates.proto", -} - -func init() { - proto.RegisterFile("google/cloud/dataproc/v1beta2/workflow_templates.proto", fileDescriptor3) -} - -var fileDescriptor3 = []byte{ - // 1634 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5d, 0x6f, 0xdb, 0x5c, - 0x1d, 0xaf, 0xd3, 0x26, 0x4d, 0xfe, 0x59, 0xdb, 0xe8, 0x3c, 0xac, 0x0b, 0xe9, 0x53, 0xad, 0x33, - 0x62, 0x94, 0x32, 0x12, 0x11, 0x04, 0xea, 0xba, 0x4d, 0x5a, 0xdb, 0x64, 0x6b, 0xda, 0x34, 0x09, - 0x4e, 0xbb, 0x21, 0xb8, 0x88, 0x9c, 0xf8, 0xcc, 0x75, 0xeb, 0xf8, 0xb8, 0xb6, 0xd3, 0xd1, 0xa1, - 0xdd, 0xa0, 0x49, 0x7c, 0x00, 0x24, 0x3e, 0x07, 0x9f, 0x01, 0xbe, 0x00, 0x68, 0x5c, 0x22, 0x71, - 0x83, 0xb8, 0xdf, 0x15, 0xb7, 0xe8, 0xbc, 0xd8, 0x71, 0x5e, 0x9d, 0x74, 0xcf, 0x4d, 0xe4, 0x73, - 0x72, 0x7e, 0xbf, 0xf3, 0xfb, 0xbf, 0x1e, 0x1f, 0xc3, 0x2f, 0x75, 0x42, 0x74, 0x13, 0x17, 0x3a, - 0x26, 0xe9, 0x69, 0x05, 0x4d, 0xf5, 0x54, 0xdb, 0x21, 0x9d, 0xc2, 0xcd, 0xcf, 0xda, 0xd8, 0x53, - 0x8b, 0x85, 0xf7, 0xc4, 0xb9, 0x7a, 0x67, 0x92, 0xf7, 0x2d, 0x0f, 0x77, 0x6d, 0x53, 0xf5, 0xb0, - 0x9b, 0xb7, 0x1d, 0xe2, 0x11, 0xb4, 0xc9, 0x71, 0x79, 0x86, 0xcb, 0xfb, 0xb8, 0xbc, 0xc0, 0xe5, - 0xbe, 0x15, 0xb4, 0xaa, 0x6d, 0x14, 0x54, 0xcb, 0x22, 0x9e, 0xea, 0x19, 0xc4, 0x12, 0xe0, 0xdc, - 0x93, 0xe9, 0x9b, 0x76, 0xcc, 0x9e, 0xeb, 0x61, 0xc7, 0x5f, 0xbd, 0x3d, 0x7d, 0xf5, 0x25, 0x69, - 0xfb, 0x2b, 0x7f, 0x20, 0x56, 0x9a, 0xc4, 0xd2, 0x9d, 0x9e, 0x65, 0x19, 0x96, 0x5e, 0x20, 0x36, - 0x76, 0x06, 0x36, 0xdf, 0x10, 0x8b, 0xd8, 0xa8, 0xdd, 0x7b, 0x57, 0xc0, 0x5d, 0xdb, 0xbb, 0x15, - 0x7f, 0x3e, 0x1c, 0xfe, 0xd3, 0x33, 0xba, 0xd8, 0xf5, 0xd4, 0xae, 0xcd, 0x17, 0xc8, 0x5f, 0x16, - 0x21, 0xf3, 0x56, 0x38, 0xe5, 0x4c, 0xf8, 0x04, 0xad, 0x42, 0xcc, 0xd0, 0xb2, 0xb1, 0x2d, 0x69, - 0x3b, 0xa5, 0xc4, 0x0c, 0x0d, 0x21, 0x58, 0xb2, 0xd4, 0x2e, 0xce, 0x4a, 0x6c, 0x86, 0x3d, 0xa3, - 0x2c, 0x2c, 0xdf, 0x60, 0xc7, 0x35, 0x88, 0x95, 0x5d, 0xdc, 0x92, 0xb6, 0xe3, 0x8a, 0x3f, 0x44, - 0xcf, 0x20, 0xdd, 0x71, 0xb0, 0xea, 0xe1, 0x16, 0xdd, 0x2c, 0xbb, 0xb4, 0x25, 0x6d, 0xa7, 0x8b, - 0xb9, 0xbc, 0x70, 0xb0, 0xaf, 0x24, 0x7f, 0xe6, 0x2b, 0x51, 0x80, 0x2f, 0xa7, 0x13, 0x14, 0xdc, - 0xb3, 0xb5, 0x00, 0x1c, 0x8f, 0x06, 0xf3, 0xe5, 0x0c, 0xdc, 0x84, 0x84, 0xa9, 0xb6, 0xb1, 0xe9, - 0x66, 0x13, 0x5b, 0x8b, 0xdb, 0xe9, 0xe2, 0xb3, 0xfc, 0xd4, 0xa8, 0xe6, 0x87, 0x0d, 0xcf, 0x57, - 0x19, 0xba, 0x6c, 0x79, 0xce, 0xad, 0x22, 0xa8, 0xd0, 0x1b, 0x48, 0xd9, 0xa6, 0xda, 0xc1, 0x5d, - 0x6c, 0x79, 0xd9, 0x65, 0xa6, 0x67, 0x77, 0x4e, 0xde, 0x86, 0x8f, 0x57, 0xfa, 0x54, 0xe8, 0x05, - 0x2c, 0xd1, 0x50, 0x67, 0x93, 0x4c, 0xea, 0x8f, 0x23, 0x28, 0xeb, 0x8e, 0x86, 0x1d, 0xac, 0x1d, - 0x93, 0xb6, 0xc2, 0x60, 0xb9, 0xa7, 0x90, 0x0e, 0xa9, 0x45, 0x19, 0x58, 0xbc, 0xc2, 0xb7, 0x22, - 0x42, 0xf4, 0x11, 0x7d, 0x0f, 0xe2, 0x37, 0xaa, 0xd9, 0xc3, 0x22, 0x8e, 0x7c, 0xb0, 0x17, 0xdb, - 0x95, 0xe4, 0x7f, 0x4b, 0xf0, 0xfd, 0x89, 0x12, 0xd1, 0xaf, 0x61, 0xad, 0xab, 0x5a, 0xaa, 0x8e, - 0xb5, 0x96, 0x48, 0x5c, 0xc6, 0x9a, 0x2e, 0xfe, 0x34, 0x42, 0xe2, 0x29, 0x47, 0x1d, 0x72, 0xd0, - 0xd1, 0x82, 0xb2, 0xda, 0x1d, 0x98, 0x41, 0xbf, 0x85, 0x8c, 0x60, 0x6c, 0xb9, 0xd8, 0xc4, 0x1d, - 0x8f, 0x38, 0x4c, 0x5c, 0xba, 0x98, 0x8f, 0xa0, 0x16, 0x0c, 0x4d, 0x81, 0x3a, 0x5a, 0x50, 0xd6, - 0x3a, 0x83, 0x53, 0x07, 0xe9, 0x50, 0x98, 0xe4, 0x3f, 0xc6, 0x60, 0x75, 0x50, 0x0e, 0x7a, 0x04, - 0xf7, 0xfc, 0xcd, 0x59, 0x2e, 0x73, 0xaf, 0xa4, 0xc5, 0x5c, 0x8d, 0xa6, 0x74, 0x09, 0x12, 0x1d, - 0x62, 0xbd, 0x33, 0x74, 0x96, 0xd1, 0xe9, 0xe2, 0x93, 0xd9, 0x54, 0x1d, 0x32, 0x8c, 0x22, 0xb0, - 0xe8, 0x57, 0x41, 0x12, 0x2e, 0xb1, 0xc8, 0x3e, 0x9d, 0xcb, 0x6d, 0xe3, 0x52, 0xf0, 0x6b, 0x62, - 0xfd, 0x0f, 0x09, 0xd6, 0x86, 0xbc, 0x47, 0xcb, 0xf9, 0x03, 0xb1, 0x82, 0x72, 0xa6, 0xcf, 0xe8, - 0x02, 0x56, 0x7d, 0xf7, 0x08, 0xf5, 0x31, 0xa6, 0x7e, 0x7f, 0xbe, 0xc8, 0xf8, 0xe3, 0xb0, 0x15, - 0x2b, 0x9d, 0xf0, 0x5c, 0xee, 0x25, 0xa0, 0xd1, 0x45, 0x73, 0xd9, 0xf4, 0xbf, 0x38, 0x40, 0xbf, - 0x1e, 0xd0, 0x03, 0x58, 0x76, 0x3d, 0x6c, 0xb7, 0x0c, 0x4d, 0xc0, 0x13, 0x74, 0x58, 0xd1, 0x50, - 0x05, 0xe0, 0x42, 0xd5, 0x08, 0xb1, 0x5b, 0x97, 0xa4, 0x2d, 0x32, 0x6d, 0x3b, 0xc2, 0x9e, 0x23, - 0x06, 0x38, 0x26, 0xed, 0xa3, 0x05, 0x25, 0x75, 0xe1, 0x0f, 0xd0, 0x2b, 0x48, 0xb9, 0xb6, 0xea, - 0x5c, 0x31, 0x26, 0x9e, 0x1d, 0x3f, 0x8a, 0x60, 0x6a, 0xd2, 0xf5, 0x9c, 0x28, 0xe9, 0x8a, 0x67, - 0x54, 0x85, 0xb4, 0x7d, 0xdb, 0x67, 0xe2, 0xbd, 0x31, 0xaa, 0xf6, 0x1b, 0xb7, 0x21, 0x2e, 0x10, - 0x78, 0xca, 0x76, 0x08, 0xc9, 0x0b, 0xe3, 0x06, 0x33, 0x2a, 0xde, 0x29, 0x1f, 0x47, 0x99, 0x67, - 0xdc, 0x60, 0xce, 0xb3, 0x7c, 0xc1, 0x1f, 0xd1, 0x4b, 0x58, 0xb6, 0x0d, 0x9d, 0x71, 0x24, 0x18, - 0xc7, 0x0f, 0xa3, 0xe4, 0x18, 0x3a, 0xa7, 0x48, 0xd8, 0xec, 0x09, 0x35, 0x60, 0x85, 0x9b, 0xe4, - 0x5e, 0x9b, 0x8c, 0x87, 0x77, 0xc9, 0x9d, 0x59, 0x1c, 0xd4, 0xbc, 0x36, 0x39, 0x59, 0xda, 0xed, - 0x0f, 0xd1, 0x69, 0x50, 0x43, 0xbc, 0x3b, 0xfe, 0x62, 0xe6, 0xee, 0x38, 0xb6, 0x85, 0x57, 0x01, - 0xdc, 0xce, 0x05, 0xd6, 0x7a, 0xa6, 0x61, 0xe9, 0xd9, 0xd4, 0x4c, 0xc5, 0x7d, 0x4c, 0xda, 0xcd, - 0x00, 0xa3, 0x84, 0xf0, 0xa8, 0x08, 0xf7, 0x6d, 0x07, 0x3b, 0xf8, 0xba, 0x67, 0xb8, 0x86, 0x87, - 0x5b, 0x22, 0xf9, 0xdc, 0x2c, 0x6c, 0x2d, 0x6e, 0xa7, 0x94, 0x6f, 0xc2, 0x7f, 0x36, 0x59, 0x26, - 0x7e, 0x4d, 0x05, 0x1f, 0x00, 0x24, 0x2f, 0x49, 0xbb, 0xe5, 0xdd, 0xda, 0x58, 0xfe, 0x6f, 0xe8, - 0xb4, 0x3e, 0xc5, 0x9e, 0x4a, 0x55, 0xa3, 0x1c, 0x24, 0xfd, 0xb7, 0x19, 0xc1, 0x18, 0x8c, 0xc3, - 0xa7, 0x74, 0x6c, 0xf0, 0x94, 0x7e, 0x03, 0xab, 0xe2, 0x94, 0xf6, 0xbb, 0x3c, 0x4f, 0xeb, 0xc2, - 0x6c, 0x05, 0x5f, 0xf7, 0x5f, 0x43, 0x94, 0x15, 0x4e, 0xe3, 0xf7, 0xd9, 0x03, 0x88, 0xeb, 0x8e, - 0x6a, 0x5f, 0x88, 0xdc, 0x7e, 0x32, 0xe3, 0x51, 0xf9, 0x9a, 0x62, 0x14, 0x0e, 0xa5, 0xda, 0x34, - 0x6c, 0xe2, 0x90, 0xb6, 0xf8, 0x1d, 0xb5, 0x71, 0x1a, 0x5f, 0xdb, 0x09, 0xc4, 0x5d, 0x8f, 0xba, - 0x89, 0x26, 0xfa, 0x6a, 0x64, 0x56, 0x0d, 0x7b, 0x3a, 0xdf, 0xa4, 0x60, 0x85, 0x73, 0x8c, 0x1c, - 0x28, 0xcb, 0x23, 0x07, 0x8a, 0xbc, 0x0b, 0x71, 0x06, 0x41, 0x69, 0x58, 0x3e, 0xaf, 0x9d, 0xd4, - 0xea, 0x6f, 0x6b, 0x99, 0x05, 0x3a, 0x68, 0x94, 0x6b, 0xa5, 0x4a, 0xed, 0x75, 0x46, 0xa2, 0x03, - 0xe5, 0xbc, 0x56, 0xa3, 0x83, 0x18, 0x4a, 0xc2, 0x52, 0xa9, 0x5e, 0x2b, 0x67, 0x16, 0xe5, 0x16, - 0x64, 0x86, 0x8d, 0xa1, 0x1b, 0x06, 0x2f, 0x7f, 0xfd, 0x66, 0x97, 0x0e, 0xe6, 0x2a, 0x1a, 0xcd, - 0x22, 0xec, 0x38, 0xe2, 0x58, 0x4d, 0x29, 0x7c, 0x40, 0xfb, 0xbd, 0x46, 0xfb, 0x3d, 0x0d, 0x70, - 0x52, 0x61, 0xcf, 0xb2, 0x02, 0x2b, 0x03, 0xae, 0x47, 0xfb, 0x10, 0xb7, 0x88, 0x86, 0xdd, 0xac, - 0xc4, 0x2a, 0xee, 0x27, 0x33, 0xfa, 0xa6, 0x46, 0x34, 0xac, 0x70, 0xa4, 0xfc, 0xd7, 0x18, 0xdc, - 0x0b, 0xcf, 0x4f, 0xee, 0xcc, 0x13, 0x4b, 0x28, 0x36, 0xb1, 0x84, 0xd0, 0x7d, 0x48, 0xd0, 0x3a, - 0x30, 0x34, 0x66, 0x47, 0x4a, 0x89, 0x5f, 0x92, 0x76, 0x45, 0xeb, 0xc7, 0x34, 0x3e, 0x57, 0x4c, - 0xa9, 0xbe, 0x3c, 0xfd, 0x19, 0x88, 0x69, 0xe0, 0xbf, 0x44, 0xc8, 0x7f, 0xf2, 0x15, 0xa4, 0x82, - 0x95, 0x68, 0x03, 0x1e, 0xd4, 0xea, 0xa5, 0x72, 0xab, 0x79, 0xb6, 0x7f, 0x76, 0xde, 0x6c, 0x9d, - 0xd7, 0x9a, 0x8d, 0xf2, 0x61, 0xe5, 0x55, 0xa5, 0x5c, 0xe2, 0xa1, 0x3d, 0xa8, 0xd6, 0x0f, 0x4f, - 0xca, 0xa5, 0x8c, 0x84, 0xee, 0x41, 0x92, 0x86, 0x76, 0xff, 0xa0, 0x5a, 0xce, 0xc4, 0xc2, 0x81, - 0x5e, 0x44, 0x2b, 0x90, 0x3a, 0xac, 0x9f, 0x36, 0xaa, 0xe5, 0xb3, 0x72, 0x29, 0xb3, 0x84, 0x00, - 0x12, 0xaf, 0xf6, 0x2b, 0xd5, 0x72, 0x29, 0x13, 0x97, 0x3f, 0x49, 0xb0, 0x79, 0xc8, 0x2a, 0x6a, - 0xf8, 0x15, 0x4d, 0xc1, 0xd7, 0x3d, 0xec, 0x7a, 0x68, 0x1d, 0x12, 0xb6, 0xea, 0xd0, 0xb7, 0x51, - 0xe1, 0x54, 0x3e, 0x42, 0x27, 0xa1, 0x3e, 0x10, 0x9b, 0xa9, 0x5e, 0x46, 0x76, 0x08, 0x08, 0xe4, - 0x63, 0xc8, 0xbd, 0xc6, 0xde, 0x24, 0x09, 0x11, 0x17, 0x82, 0xc1, 0x56, 0x23, 0xbb, 0x20, 0x57, - 0x2c, 0xd7, 0x53, 0x2d, 0xcf, 0x98, 0x62, 0xd6, 0x5c, 0x9c, 0xe8, 0x21, 0xa4, 0x0d, 0xc6, 0xd9, - 0xc1, 0xfd, 0x94, 0x00, 0x7f, 0xaa, 0xa2, 0xc9, 0x26, 0x6c, 0x9e, 0xb3, 0x9b, 0xc1, 0xa4, 0xfd, - 0x4e, 0x86, 0xda, 0xe6, 0x57, 0xb9, 0xcb, 0x81, 0x6f, 0xab, 0x86, 0x3b, 0xe2, 0x2f, 0x37, 0x2a, - 0x66, 0x1b, 0x90, 0xb2, 0x55, 0x1d, 0xb7, 0x5c, 0xe3, 0x03, 0x16, 0x26, 0x26, 0xe9, 0x44, 0xd3, - 0xf8, 0x80, 0xd1, 0x26, 0x00, 0xfb, 0xd3, 0x23, 0x57, 0xd8, 0x12, 0x26, 0xb2, 0xe5, 0x67, 0x74, - 0x42, 0xfe, 0xb3, 0x04, 0x9b, 0x13, 0x36, 0x75, 0x6d, 0x62, 0xb9, 0x18, 0x9d, 0x42, 0x2a, 0xb8, - 0xe7, 0x8a, 0xba, 0x9e, 0xdb, 0xc6, 0x3e, 0x03, 0x7a, 0x0c, 0x6b, 0x16, 0xfe, 0x9d, 0xd7, 0x0a, - 0x89, 0xe2, 0x7d, 0x66, 0x85, 0x4e, 0x37, 0x02, 0x61, 0xa7, 0xb0, 0x59, 0x62, 0x7d, 0xf7, 0x3b, - 0x09, 0x75, 0xf1, 0x4b, 0x0a, 0x1e, 0x0c, 0x33, 0x35, 0xb1, 0x73, 0x63, 0x74, 0x30, 0xfa, 0x2c, - 0xc1, 0xfa, 0xf8, 0x6a, 0x41, 0xcf, 0xa3, 0x0e, 0x8b, 0x69, 0x45, 0x96, 0x9b, 0xd7, 0x4f, 0xf2, - 0xf1, 0x1f, 0x3e, 0xff, 0xe7, 0x4f, 0xb1, 0x92, 0xbc, 0x1b, 0x5c, 0xe4, 0x7f, 0xcf, 0x63, 0xfc, - 0xc2, 0x76, 0xc8, 0x25, 0xee, 0x78, 0x6e, 0x61, 0xa7, 0xe0, 0x60, 0x9d, 0xde, 0xdc, 0x0b, 0x3b, - 0x1f, 0x83, 0x2f, 0x11, 0x41, 0xd4, 0xf6, 0xfa, 0xa7, 0xf6, 0xdf, 0x24, 0xf8, 0x66, 0x4c, 0xf5, - 0xa1, 0xa8, 0xab, 0xc4, 0xe4, 0x8a, 0x9d, 0xdf, 0x9e, 0x97, 0xcc, 0x9e, 0x3d, 0x14, 0xb2, 0x87, - 0xc6, 0x69, 0xac, 0x35, 0xa3, 0xc6, 0x14, 0x76, 0x3e, 0xa2, 0xbf, 0x4b, 0xb0, 0x31, 0xa5, 0xee, - 0x51, 0xd4, 0xd5, 0x22, 0xba, 0x67, 0xe4, 0x36, 0x7d, 0x8a, 0xd0, 0x17, 0x92, 0x7c, 0x70, 0x62, - 0xca, 0x75, 0x66, 0x43, 0x45, 0x2e, 0xdd, 0xd5, 0x86, 0x3d, 0xa3, 0xaf, 0x61, 0x4f, 0xda, 0x41, - 0xff, 0x92, 0x60, 0x7d, 0x7c, 0x57, 0x89, 0x4c, 0xb7, 0xa9, 0xcd, 0x68, 0xfe, 0xf0, 0x34, 0x99, - 0x69, 0xa7, 0xb9, 0xfd, 0xbe, 0x69, 0x7e, 0xfa, 0xe4, 0xe7, 0xb4, 0xb1, 0x9f, 0x77, 0xff, 0x94, - 0xe0, 0xfe, 0xd8, 0x8e, 0x82, 0xa2, 0xbe, 0xa4, 0x4c, 0x6b, 0x7e, 0xb9, 0xe7, 0x77, 0x03, 0xf3, - 0x26, 0x36, 0x2e, 0x11, 0xe7, 0x2b, 0x2c, 0xf4, 0x17, 0x09, 0xd6, 0xc7, 0x37, 0xa4, 0xc8, 0xa8, - 0x4d, 0xed, 0x63, 0xb9, 0xf5, 0x91, 0xef, 0x52, 0xe5, 0xae, 0xed, 0xdd, 0xfa, 0x92, 0x77, 0xee, - 0x5c, 0x3b, 0x07, 0x9f, 0x24, 0x78, 0xd4, 0x21, 0xdd, 0xe9, 0xea, 0x0e, 0xd6, 0x47, 0xbc, 0xd6, - 0xa0, 0x42, 0x1a, 0xd2, 0x6f, 0xca, 0x02, 0xa8, 0x13, 0x53, 0xb5, 0xf4, 0x3c, 0x71, 0xf4, 0x82, - 0x8e, 0x2d, 0x26, 0xb3, 0xc0, 0xff, 0x52, 0x6d, 0xc3, 0x9d, 0xf0, 0x09, 0xf2, 0x99, 0x3f, 0xd1, - 0x4e, 0x30, 0xc4, 0xcf, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x21, 0xc2, 0x3b, 0x56, 0x15, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/agent.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/agent.pb.go deleted file mode 100644 index 204423db..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/agent.pb.go +++ /dev/null @@ -1,1154 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dialogflow/v2beta1/agent.proto - -/* -Package dialogflow is a generated protocol buffer package. - -It is generated from these files: - google/cloud/dialogflow/v2beta1/agent.proto - google/cloud/dialogflow/v2beta1/context.proto - google/cloud/dialogflow/v2beta1/entity_type.proto - google/cloud/dialogflow/v2beta1/intent.proto - google/cloud/dialogflow/v2beta1/session.proto - google/cloud/dialogflow/v2beta1/session_entity_type.proto - google/cloud/dialogflow/v2beta1/webhook.proto - -It has these top-level messages: - Agent - GetAgentRequest - SearchAgentsRequest - SearchAgentsResponse - TrainAgentRequest - ExportAgentRequest - ExportAgentResponse - ImportAgentRequest - RestoreAgentRequest - Context - ListContextsRequest - ListContextsResponse - GetContextRequest - CreateContextRequest - UpdateContextRequest - DeleteContextRequest - DeleteAllContextsRequest - EntityType - ListEntityTypesRequest - ListEntityTypesResponse - GetEntityTypeRequest - CreateEntityTypeRequest - UpdateEntityTypeRequest - DeleteEntityTypeRequest - BatchUpdateEntityTypesRequest - BatchUpdateEntityTypesResponse - BatchDeleteEntityTypesRequest - BatchCreateEntitiesRequest - BatchUpdateEntitiesRequest - BatchDeleteEntitiesRequest - EntityTypeBatch - Intent - ListIntentsRequest - ListIntentsResponse - GetIntentRequest - CreateIntentRequest - UpdateIntentRequest - DeleteIntentRequest - BatchUpdateIntentsRequest - BatchUpdateIntentsResponse - BatchDeleteIntentsRequest - IntentBatch - DetectIntentRequest - DetectIntentResponse - QueryParameters - QueryInput - QueryResult - StreamingDetectIntentRequest - StreamingDetectIntentResponse - StreamingRecognitionResult - InputAudioConfig - TextInput - EventInput - SessionEntityType - ListSessionEntityTypesRequest - ListSessionEntityTypesResponse - GetSessionEntityTypeRequest - CreateSessionEntityTypeRequest - UpdateSessionEntityTypeRequest - DeleteSessionEntityTypeRequest - WebhookRequest - WebhookResponse - OriginalDetectIntentRequest -*/ -package dialogflow - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/empty" -import _ "google.golang.org/genproto/protobuf/field_mask" -import _ "github.com/golang/protobuf/ptypes/struct" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Match mode determines how intents are detected from user queries. -type Agent_MatchMode int32 - -const ( - // Not specified. - Agent_MATCH_MODE_UNSPECIFIED Agent_MatchMode = 0 - // Best for agents with a small number of examples in intents and/or wide - // use of templates syntax and composite entities. - Agent_MATCH_MODE_HYBRID Agent_MatchMode = 1 - // Can be used for agents with a large number of examples in intents, - // especially the ones using @sys.any or very large developer entities. - Agent_MATCH_MODE_ML_ONLY Agent_MatchMode = 2 -) - -var Agent_MatchMode_name = map[int32]string{ - 0: "MATCH_MODE_UNSPECIFIED", - 1: "MATCH_MODE_HYBRID", - 2: "MATCH_MODE_ML_ONLY", -} -var Agent_MatchMode_value = map[string]int32{ - "MATCH_MODE_UNSPECIFIED": 0, - "MATCH_MODE_HYBRID": 1, - "MATCH_MODE_ML_ONLY": 2, -} - -func (x Agent_MatchMode) String() string { - return proto.EnumName(Agent_MatchMode_name, int32(x)) -} -func (Agent_MatchMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// Represents a conversational agent. -type Agent struct { - // Required. The project of this agent. - // Format: `projects/<Project ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The name of this agent. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Required. The default language of the agent as a language tag. See - // [Language Support](https://dialogflow.com/docs/reference/language) for a - // list of the currently supported language codes. - // This field cannot be set by the `Update` method. - DefaultLanguageCode string `protobuf:"bytes,3,opt,name=default_language_code,json=defaultLanguageCode" json:"default_language_code,omitempty"` - // Optional. The list of all languages supported by this agent (except for the - // `default_language_code`). - SupportedLanguageCodes []string `protobuf:"bytes,4,rep,name=supported_language_codes,json=supportedLanguageCodes" json:"supported_language_codes,omitempty"` - // Required. The time zone of this agent from the - // [time zone database](https://www.iana.org/time-zones), e.g., - // America/New_York, Europe/Paris. - TimeZone string `protobuf:"bytes,5,opt,name=time_zone,json=timeZone" json:"time_zone,omitempty"` - // Optional. The description of this agent. - // The maximum length is 500 characters. If exceeded, the request is rejected. - Description string `protobuf:"bytes,6,opt,name=description" json:"description,omitempty"` - // Optional. The URI of the agent's avatar. - // Avatars are used throughout API.AI console and in the self-hosted - // [Web Demo](https://dialogflow.com/docs/integrations/web-demo) integration. - AvatarUri string `protobuf:"bytes,7,opt,name=avatar_uri,json=avatarUri" json:"avatar_uri,omitempty"` - // Optional. Determines whether this agent should log conversation queries. - EnableLogging bool `protobuf:"varint,8,opt,name=enable_logging,json=enableLogging" json:"enable_logging,omitempty"` - // Optional. Determines how intents are detected from user queries. - MatchMode Agent_MatchMode `protobuf:"varint,9,opt,name=match_mode,json=matchMode,enum=google.cloud.dialogflow.v2beta1.Agent_MatchMode" json:"match_mode,omitempty"` - // Optional. To filter out false positive results and still get variety in - // matched natural language inputs for your agent, you can tune the machine - // learning classification threshold. If the returned score value is less than - // the threshold value, then a fallback intent is be triggered or, if there - // are no fallback intents defined, no intent will be triggered. The score - // values range from 0.0 (completely uncertain) to 1.0 (completely certain). - // If set to 0.0, the default of 0.3 is used. - ClassificationThreshold float32 `protobuf:"fixed32,10,opt,name=classification_threshold,json=classificationThreshold" json:"classification_threshold,omitempty"` -} - -func (m *Agent) Reset() { *m = Agent{} } -func (m *Agent) String() string { return proto.CompactTextString(m) } -func (*Agent) ProtoMessage() {} -func (*Agent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Agent) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *Agent) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Agent) GetDefaultLanguageCode() string { - if m != nil { - return m.DefaultLanguageCode - } - return "" -} - -func (m *Agent) GetSupportedLanguageCodes() []string { - if m != nil { - return m.SupportedLanguageCodes - } - return nil -} - -func (m *Agent) GetTimeZone() string { - if m != nil { - return m.TimeZone - } - return "" -} - -func (m *Agent) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Agent) GetAvatarUri() string { - if m != nil { - return m.AvatarUri - } - return "" -} - -func (m *Agent) GetEnableLogging() bool { - if m != nil { - return m.EnableLogging - } - return false -} - -func (m *Agent) GetMatchMode() Agent_MatchMode { - if m != nil { - return m.MatchMode - } - return Agent_MATCH_MODE_UNSPECIFIED -} - -func (m *Agent) GetClassificationThreshold() float32 { - if m != nil { - return m.ClassificationThreshold - } - return 0 -} - -// The request message for -// [Agents.GetAgent][google.cloud.dialogflow.v2beta1.Agents.GetAgent]. -type GetAgentRequest struct { - // Required. The project that the agent to fetch is associated with. - // Format: `projects/<Project ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` -} - -func (m *GetAgentRequest) Reset() { *m = GetAgentRequest{} } -func (m *GetAgentRequest) String() string { return proto.CompactTextString(m) } -func (*GetAgentRequest) ProtoMessage() {} -func (*GetAgentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *GetAgentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// The request message for -// [Agents.SearchAgents][google.cloud.dialogflow.v2beta1.Agents.SearchAgents]. -type SearchAgentsRequest struct { - // Required. The project to list agents from. - // Format: `projects/<Project ID or '-'>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. The maximum number of items to return in a single page. By - // default 100 and at most 1000. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The next_page_token value returned from a previous list request. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *SearchAgentsRequest) Reset() { *m = SearchAgentsRequest{} } -func (m *SearchAgentsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchAgentsRequest) ProtoMessage() {} -func (*SearchAgentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *SearchAgentsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *SearchAgentsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *SearchAgentsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for -// [Agents.SearchAgents][google.cloud.dialogflow.v2beta1.Agents.SearchAgents]. -type SearchAgentsResponse struct { - // The list of agents. There will be a maximum number of items returned based - // on the page_size field in the request. - Agents []*Agent `protobuf:"bytes,1,rep,name=agents" json:"agents,omitempty"` - // Token to retrieve the next page of results, or empty if there are no - // more results in the list. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchAgentsResponse) Reset() { *m = SearchAgentsResponse{} } -func (m *SearchAgentsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchAgentsResponse) ProtoMessage() {} -func (*SearchAgentsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SearchAgentsResponse) GetAgents() []*Agent { - if m != nil { - return m.Agents - } - return nil -} - -func (m *SearchAgentsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for -// [Agents.TrainAgent][google.cloud.dialogflow.v2beta1.Agents.TrainAgent]. -type TrainAgentRequest struct { - // Required. The project that the agent to train is associated with. - // Format: `projects/<Project ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` -} - -func (m *TrainAgentRequest) Reset() { *m = TrainAgentRequest{} } -func (m *TrainAgentRequest) String() string { return proto.CompactTextString(m) } -func (*TrainAgentRequest) ProtoMessage() {} -func (*TrainAgentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *TrainAgentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// The request message for -// [Agents.ExportAgent][google.cloud.dialogflow.v2beta1.Agents.ExportAgent]. -type ExportAgentRequest struct { - // Required. The project that the agent to export is associated with. - // Format: `projects/<Project ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Warning: Exporting agents to a URI is not implemented yet. - // This feature is coming soon. - // - // Optional. The Google Cloud Storage URI to export the agent to. - // Note: The URI must start with - // "gs://". If left unspecified, the serialized agent is returned inline. - AgentUri string `protobuf:"bytes,2,opt,name=agent_uri,json=agentUri" json:"agent_uri,omitempty"` -} - -func (m *ExportAgentRequest) Reset() { *m = ExportAgentRequest{} } -func (m *ExportAgentRequest) String() string { return proto.CompactTextString(m) } -func (*ExportAgentRequest) ProtoMessage() {} -func (*ExportAgentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ExportAgentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ExportAgentRequest) GetAgentUri() string { - if m != nil { - return m.AgentUri - } - return "" -} - -// The response message for -// [Agents.ExportAgent][google.cloud.dialogflow.v2beta1.Agents.ExportAgent]. -type ExportAgentResponse struct { - // Required. The exported agent. - // - // Types that are valid to be assigned to Agent: - // *ExportAgentResponse_AgentUri - // *ExportAgentResponse_AgentContent - Agent isExportAgentResponse_Agent `protobuf_oneof:"agent"` -} - -func (m *ExportAgentResponse) Reset() { *m = ExportAgentResponse{} } -func (m *ExportAgentResponse) String() string { return proto.CompactTextString(m) } -func (*ExportAgentResponse) ProtoMessage() {} -func (*ExportAgentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -type isExportAgentResponse_Agent interface { - isExportAgentResponse_Agent() -} - -type ExportAgentResponse_AgentUri struct { - AgentUri string `protobuf:"bytes,1,opt,name=agent_uri,json=agentUri,oneof"` -} -type ExportAgentResponse_AgentContent struct { - AgentContent []byte `protobuf:"bytes,2,opt,name=agent_content,json=agentContent,proto3,oneof"` -} - -func (*ExportAgentResponse_AgentUri) isExportAgentResponse_Agent() {} -func (*ExportAgentResponse_AgentContent) isExportAgentResponse_Agent() {} - -func (m *ExportAgentResponse) GetAgent() isExportAgentResponse_Agent { - if m != nil { - return m.Agent - } - return nil -} - -func (m *ExportAgentResponse) GetAgentUri() string { - if x, ok := m.GetAgent().(*ExportAgentResponse_AgentUri); ok { - return x.AgentUri - } - return "" -} - -func (m *ExportAgentResponse) GetAgentContent() []byte { - if x, ok := m.GetAgent().(*ExportAgentResponse_AgentContent); ok { - return x.AgentContent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ExportAgentResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ExportAgentResponse_OneofMarshaler, _ExportAgentResponse_OneofUnmarshaler, _ExportAgentResponse_OneofSizer, []interface{}{ - (*ExportAgentResponse_AgentUri)(nil), - (*ExportAgentResponse_AgentContent)(nil), - } -} - -func _ExportAgentResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ExportAgentResponse) - // agent - switch x := m.Agent.(type) { - case *ExportAgentResponse_AgentUri: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.AgentUri) - case *ExportAgentResponse_AgentContent: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AgentContent) - case nil: - default: - return fmt.Errorf("ExportAgentResponse.Agent has unexpected type %T", x) - } - return nil -} - -func _ExportAgentResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ExportAgentResponse) - switch tag { - case 1: // agent.agent_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Agent = &ExportAgentResponse_AgentUri{x} - return true, err - case 2: // agent.agent_content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Agent = &ExportAgentResponse_AgentContent{x} - return true, err - default: - return false, nil - } -} - -func _ExportAgentResponse_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ExportAgentResponse) - // agent - switch x := m.Agent.(type) { - case *ExportAgentResponse_AgentUri: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AgentUri))) - n += len(x.AgentUri) - case *ExportAgentResponse_AgentContent: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AgentContent))) - n += len(x.AgentContent) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The request message for -// [Agents.ImportAgent][google.cloud.dialogflow.v2beta1.Agents.ImportAgent]. -type ImportAgentRequest struct { - // Required. The project that the agent to import is associated with. - // Format: `projects/<Project ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The agent to import. - // - // Types that are valid to be assigned to Agent: - // *ImportAgentRequest_AgentUri - // *ImportAgentRequest_AgentContent - Agent isImportAgentRequest_Agent `protobuf_oneof:"agent"` -} - -func (m *ImportAgentRequest) Reset() { *m = ImportAgentRequest{} } -func (m *ImportAgentRequest) String() string { return proto.CompactTextString(m) } -func (*ImportAgentRequest) ProtoMessage() {} -func (*ImportAgentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -type isImportAgentRequest_Agent interface { - isImportAgentRequest_Agent() -} - -type ImportAgentRequest_AgentUri struct { - AgentUri string `protobuf:"bytes,2,opt,name=agent_uri,json=agentUri,oneof"` -} -type ImportAgentRequest_AgentContent struct { - AgentContent []byte `protobuf:"bytes,3,opt,name=agent_content,json=agentContent,proto3,oneof"` -} - -func (*ImportAgentRequest_AgentUri) isImportAgentRequest_Agent() {} -func (*ImportAgentRequest_AgentContent) isImportAgentRequest_Agent() {} - -func (m *ImportAgentRequest) GetAgent() isImportAgentRequest_Agent { - if m != nil { - return m.Agent - } - return nil -} - -func (m *ImportAgentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ImportAgentRequest) GetAgentUri() string { - if x, ok := m.GetAgent().(*ImportAgentRequest_AgentUri); ok { - return x.AgentUri - } - return "" -} - -func (m *ImportAgentRequest) GetAgentContent() []byte { - if x, ok := m.GetAgent().(*ImportAgentRequest_AgentContent); ok { - return x.AgentContent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ImportAgentRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ImportAgentRequest_OneofMarshaler, _ImportAgentRequest_OneofUnmarshaler, _ImportAgentRequest_OneofSizer, []interface{}{ - (*ImportAgentRequest_AgentUri)(nil), - (*ImportAgentRequest_AgentContent)(nil), - } -} - -func _ImportAgentRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ImportAgentRequest) - // agent - switch x := m.Agent.(type) { - case *ImportAgentRequest_AgentUri: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.AgentUri) - case *ImportAgentRequest_AgentContent: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AgentContent) - case nil: - default: - return fmt.Errorf("ImportAgentRequest.Agent has unexpected type %T", x) - } - return nil -} - -func _ImportAgentRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ImportAgentRequest) - switch tag { - case 2: // agent.agent_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Agent = &ImportAgentRequest_AgentUri{x} - return true, err - case 3: // agent.agent_content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Agent = &ImportAgentRequest_AgentContent{x} - return true, err - default: - return false, nil - } -} - -func _ImportAgentRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ImportAgentRequest) - // agent - switch x := m.Agent.(type) { - case *ImportAgentRequest_AgentUri: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AgentUri))) - n += len(x.AgentUri) - case *ImportAgentRequest_AgentContent: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AgentContent))) - n += len(x.AgentContent) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The request message for -// [Agents.RestoreAgent][google.cloud.dialogflow.v2beta1.Agents.RestoreAgent]. -type RestoreAgentRequest struct { - // Required. The project that the agent to restore is associated with. - // Format: `projects/<Project ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The agent to restore. - // - // Types that are valid to be assigned to Agent: - // *RestoreAgentRequest_AgentUri - // *RestoreAgentRequest_AgentContent - Agent isRestoreAgentRequest_Agent `protobuf_oneof:"agent"` -} - -func (m *RestoreAgentRequest) Reset() { *m = RestoreAgentRequest{} } -func (m *RestoreAgentRequest) String() string { return proto.CompactTextString(m) } -func (*RestoreAgentRequest) ProtoMessage() {} -func (*RestoreAgentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -type isRestoreAgentRequest_Agent interface { - isRestoreAgentRequest_Agent() -} - -type RestoreAgentRequest_AgentUri struct { - AgentUri string `protobuf:"bytes,2,opt,name=agent_uri,json=agentUri,oneof"` -} -type RestoreAgentRequest_AgentContent struct { - AgentContent []byte `protobuf:"bytes,3,opt,name=agent_content,json=agentContent,proto3,oneof"` -} - -func (*RestoreAgentRequest_AgentUri) isRestoreAgentRequest_Agent() {} -func (*RestoreAgentRequest_AgentContent) isRestoreAgentRequest_Agent() {} - -func (m *RestoreAgentRequest) GetAgent() isRestoreAgentRequest_Agent { - if m != nil { - return m.Agent - } - return nil -} - -func (m *RestoreAgentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *RestoreAgentRequest) GetAgentUri() string { - if x, ok := m.GetAgent().(*RestoreAgentRequest_AgentUri); ok { - return x.AgentUri - } - return "" -} - -func (m *RestoreAgentRequest) GetAgentContent() []byte { - if x, ok := m.GetAgent().(*RestoreAgentRequest_AgentContent); ok { - return x.AgentContent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RestoreAgentRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RestoreAgentRequest_OneofMarshaler, _RestoreAgentRequest_OneofUnmarshaler, _RestoreAgentRequest_OneofSizer, []interface{}{ - (*RestoreAgentRequest_AgentUri)(nil), - (*RestoreAgentRequest_AgentContent)(nil), - } -} - -func _RestoreAgentRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RestoreAgentRequest) - // agent - switch x := m.Agent.(type) { - case *RestoreAgentRequest_AgentUri: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.AgentUri) - case *RestoreAgentRequest_AgentContent: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AgentContent) - case nil: - default: - return fmt.Errorf("RestoreAgentRequest.Agent has unexpected type %T", x) - } - return nil -} - -func _RestoreAgentRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RestoreAgentRequest) - switch tag { - case 2: // agent.agent_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Agent = &RestoreAgentRequest_AgentUri{x} - return true, err - case 3: // agent.agent_content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Agent = &RestoreAgentRequest_AgentContent{x} - return true, err - default: - return false, nil - } -} - -func _RestoreAgentRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RestoreAgentRequest) - // agent - switch x := m.Agent.(type) { - case *RestoreAgentRequest_AgentUri: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AgentUri))) - n += len(x.AgentUri) - case *RestoreAgentRequest_AgentContent: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AgentContent))) - n += len(x.AgentContent) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*Agent)(nil), "google.cloud.dialogflow.v2beta1.Agent") - proto.RegisterType((*GetAgentRequest)(nil), "google.cloud.dialogflow.v2beta1.GetAgentRequest") - proto.RegisterType((*SearchAgentsRequest)(nil), "google.cloud.dialogflow.v2beta1.SearchAgentsRequest") - proto.RegisterType((*SearchAgentsResponse)(nil), "google.cloud.dialogflow.v2beta1.SearchAgentsResponse") - proto.RegisterType((*TrainAgentRequest)(nil), "google.cloud.dialogflow.v2beta1.TrainAgentRequest") - proto.RegisterType((*ExportAgentRequest)(nil), "google.cloud.dialogflow.v2beta1.ExportAgentRequest") - proto.RegisterType((*ExportAgentResponse)(nil), "google.cloud.dialogflow.v2beta1.ExportAgentResponse") - proto.RegisterType((*ImportAgentRequest)(nil), "google.cloud.dialogflow.v2beta1.ImportAgentRequest") - proto.RegisterType((*RestoreAgentRequest)(nil), "google.cloud.dialogflow.v2beta1.RestoreAgentRequest") - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.Agent_MatchMode", Agent_MatchMode_name, Agent_MatchMode_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Agents service - -type AgentsClient interface { - // Retrieves the specified agent. - GetAgent(ctx context.Context, in *GetAgentRequest, opts ...grpc.CallOption) (*Agent, error) - // Returns the list of agents. - // - // Since there is at most one conversational agent per project, this method is - // useful primarily for listing all agents across projects the caller has - // access to. One can achieve that with a wildcard project collection id "-". - // Refer to [List - // Sub-Collections](https://cloud.google.com/apis/design/design_patterns#list_sub-collections). - SearchAgents(ctx context.Context, in *SearchAgentsRequest, opts ...grpc.CallOption) (*SearchAgentsResponse, error) - // Trains the specified agent. - // - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - TrainAgent(ctx context.Context, in *TrainAgentRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Exports the specified agent to a ZIP file. - // - // - // Operation <response: - // [ExportAgentResponse][google.cloud.dialogflow.v2beta1.ExportAgentResponse], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - ExportAgent(ctx context.Context, in *ExportAgentRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Imports the specified agent from a ZIP file. - // - // Uploads new intents and entity types without deleting the existing ones. - // Intents and entity types with the same name are replaced with the new - // versions from ImportAgentRequest. - // - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - ImportAgent(ctx context.Context, in *ImportAgentRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Restores the specified agent from a ZIP file. - // - // Replaces the current agent version with a new one. All the intents and - // entity types in the older version are deleted. - // - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - RestoreAgent(ctx context.Context, in *RestoreAgentRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type agentsClient struct { - cc *grpc.ClientConn -} - -func NewAgentsClient(cc *grpc.ClientConn) AgentsClient { - return &agentsClient{cc} -} - -func (c *agentsClient) GetAgent(ctx context.Context, in *GetAgentRequest, opts ...grpc.CallOption) (*Agent, error) { - out := new(Agent) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Agents/GetAgent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentsClient) SearchAgents(ctx context.Context, in *SearchAgentsRequest, opts ...grpc.CallOption) (*SearchAgentsResponse, error) { - out := new(SearchAgentsResponse) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Agents/SearchAgents", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentsClient) TrainAgent(ctx context.Context, in *TrainAgentRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Agents/TrainAgent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentsClient) ExportAgent(ctx context.Context, in *ExportAgentRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Agents/ExportAgent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentsClient) ImportAgent(ctx context.Context, in *ImportAgentRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Agents/ImportAgent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *agentsClient) RestoreAgent(ctx context.Context, in *RestoreAgentRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Agents/RestoreAgent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Agents service - -type AgentsServer interface { - // Retrieves the specified agent. - GetAgent(context.Context, *GetAgentRequest) (*Agent, error) - // Returns the list of agents. - // - // Since there is at most one conversational agent per project, this method is - // useful primarily for listing all agents across projects the caller has - // access to. One can achieve that with a wildcard project collection id "-". - // Refer to [List - // Sub-Collections](https://cloud.google.com/apis/design/design_patterns#list_sub-collections). - SearchAgents(context.Context, *SearchAgentsRequest) (*SearchAgentsResponse, error) - // Trains the specified agent. - // - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - TrainAgent(context.Context, *TrainAgentRequest) (*google_longrunning.Operation, error) - // Exports the specified agent to a ZIP file. - // - // - // Operation <response: - // [ExportAgentResponse][google.cloud.dialogflow.v2beta1.ExportAgentResponse], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - ExportAgent(context.Context, *ExportAgentRequest) (*google_longrunning.Operation, error) - // Imports the specified agent from a ZIP file. - // - // Uploads new intents and entity types without deleting the existing ones. - // Intents and entity types with the same name are replaced with the new - // versions from ImportAgentRequest. - // - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - ImportAgent(context.Context, *ImportAgentRequest) (*google_longrunning.Operation, error) - // Restores the specified agent from a ZIP file. - // - // Replaces the current agent version with a new one. All the intents and - // entity types in the older version are deleted. - // - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - RestoreAgent(context.Context, *RestoreAgentRequest) (*google_longrunning.Operation, error) -} - -func RegisterAgentsServer(s *grpc.Server, srv AgentsServer) { - s.RegisterService(&_Agents_serviceDesc, srv) -} - -func _Agents_GetAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAgentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentsServer).GetAgent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Agents/GetAgent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentsServer).GetAgent(ctx, req.(*GetAgentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agents_SearchAgents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchAgentsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentsServer).SearchAgents(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Agents/SearchAgents", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentsServer).SearchAgents(ctx, req.(*SearchAgentsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agents_TrainAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TrainAgentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentsServer).TrainAgent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Agents/TrainAgent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentsServer).TrainAgent(ctx, req.(*TrainAgentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agents_ExportAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExportAgentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentsServer).ExportAgent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Agents/ExportAgent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentsServer).ExportAgent(ctx, req.(*ExportAgentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agents_ImportAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ImportAgentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentsServer).ImportAgent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Agents/ImportAgent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentsServer).ImportAgent(ctx, req.(*ImportAgentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Agents_RestoreAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RestoreAgentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentsServer).RestoreAgent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Agents/RestoreAgent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentsServer).RestoreAgent(ctx, req.(*RestoreAgentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Agents_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dialogflow.v2beta1.Agents", - HandlerType: (*AgentsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetAgent", - Handler: _Agents_GetAgent_Handler, - }, - { - MethodName: "SearchAgents", - Handler: _Agents_SearchAgents_Handler, - }, - { - MethodName: "TrainAgent", - Handler: _Agents_TrainAgent_Handler, - }, - { - MethodName: "ExportAgent", - Handler: _Agents_ExportAgent_Handler, - }, - { - MethodName: "ImportAgent", - Handler: _Agents_ImportAgent_Handler, - }, - { - MethodName: "RestoreAgent", - Handler: _Agents_RestoreAgent_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dialogflow/v2beta1/agent.proto", -} - -func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/agent.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 975 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x41, 0x6f, 0xdc, 0x44, - 0x14, 0xae, 0x37, 0x4d, 0xb2, 0xfb, 0x92, 0xb4, 0xe9, 0x84, 0x06, 0x6b, 0xdb, 0xa8, 0x8b, 0x4b, - 0xab, 0xed, 0x46, 0xd8, 0x74, 0xd3, 0x4a, 0x10, 0x04, 0x52, 0xb3, 0x9b, 0x36, 0x2b, 0x65, 0x93, - 0xc8, 0x49, 0x2a, 0xb5, 0x17, 0x6b, 0x62, 0xcf, 0x3a, 0x43, 0xed, 0x19, 0xe3, 0x99, 0x2d, 0x6d, - 0x0a, 0x1c, 0xf8, 0x05, 0x48, 0x20, 0x21, 0x38, 0x72, 0x42, 0x1c, 0x38, 0xf1, 0x4f, 0xf8, 0x0b, - 0xfc, 0x08, 0x8e, 0xc8, 0x63, 0x6f, 0xd6, 0x9b, 0xb4, 0xb5, 0x91, 0x90, 0xb8, 0xd9, 0xdf, 0xfb, - 0xde, 0x7b, 0xdf, 0xcc, 0x7c, 0x4f, 0x33, 0xb0, 0xea, 0x73, 0xee, 0x07, 0xc4, 0x72, 0x03, 0x3e, - 0xf4, 0x2c, 0x8f, 0xe2, 0x80, 0xfb, 0x83, 0x80, 0x7f, 0x69, 0x3d, 0x6f, 0x1f, 0x11, 0x89, 0xef, - 0x5a, 0xd8, 0x27, 0x4c, 0x9a, 0x51, 0xcc, 0x25, 0x47, 0x37, 0x52, 0xb2, 0xa9, 0xc8, 0xe6, 0x98, - 0x6c, 0x66, 0xe4, 0xfa, 0xf5, 0xac, 0x1a, 0x8e, 0xa8, 0x85, 0x19, 0xe3, 0x12, 0x4b, 0xca, 0x99, - 0x48, 0xd3, 0xeb, 0x37, 0xb3, 0x68, 0xc0, 0x99, 0x1f, 0x0f, 0x19, 0xa3, 0xcc, 0xb7, 0x78, 0x44, - 0xe2, 0x09, 0xd2, 0xb5, 0x8c, 0xa4, 0xfe, 0x8e, 0x86, 0x03, 0x8b, 0x84, 0x91, 0x7c, 0x99, 0x05, - 0x1b, 0x67, 0x83, 0x03, 0x4a, 0x02, 0xcf, 0x09, 0xb1, 0x78, 0x96, 0x31, 0xae, 0x9f, 0x65, 0x08, - 0x19, 0x0f, 0xdd, 0x6c, 0x01, 0xc6, 0x4f, 0x17, 0x61, 0xfa, 0x41, 0xb2, 0x20, 0xb4, 0x0c, 0x33, - 0x11, 0x8e, 0x09, 0x93, 0xba, 0xd6, 0xd0, 0x9a, 0x35, 0x3b, 0xfb, 0x43, 0xef, 0xc1, 0xbc, 0x47, - 0x45, 0x14, 0xe0, 0x97, 0x0e, 0xc3, 0x21, 0xd1, 0x2b, 0x2a, 0x3a, 0x97, 0x61, 0x3b, 0x38, 0x24, - 0xa8, 0x0d, 0x57, 0x3d, 0x32, 0xc0, 0xc3, 0x40, 0x3a, 0x01, 0x66, 0xfe, 0x10, 0xfb, 0xc4, 0x71, - 0xb9, 0x47, 0xf4, 0x29, 0xc5, 0x5d, 0xca, 0x82, 0xdb, 0x59, 0xac, 0xc3, 0x3d, 0x82, 0x3e, 0x02, - 0x5d, 0x0c, 0xa3, 0x88, 0xc7, 0x92, 0x78, 0x93, 0x59, 0x42, 0xbf, 0xd8, 0x98, 0x6a, 0xd6, 0xec, - 0xe5, 0xd3, 0x78, 0x3e, 0x51, 0xa0, 0x6b, 0x50, 0x93, 0x34, 0x24, 0xce, 0x09, 0x67, 0x44, 0x9f, - 0x56, 0x1d, 0xaa, 0x09, 0xf0, 0x94, 0x33, 0x82, 0x1a, 0x30, 0xe7, 0x11, 0xe1, 0xc6, 0x34, 0x4a, - 0xb6, 0x50, 0x9f, 0xc9, 0xc4, 0x8e, 0x21, 0xb4, 0x02, 0x80, 0x9f, 0x63, 0x89, 0x63, 0x67, 0x18, - 0x53, 0x7d, 0x56, 0x11, 0x6a, 0x29, 0x72, 0x18, 0x53, 0x74, 0x0b, 0x2e, 0x11, 0x86, 0x8f, 0x02, - 0xe2, 0x04, 0xdc, 0xf7, 0x29, 0xf3, 0xf5, 0x6a, 0x43, 0x6b, 0x56, 0xed, 0x85, 0x14, 0xdd, 0x4e, - 0x41, 0xb4, 0x0b, 0x10, 0x62, 0xe9, 0x1e, 0x3b, 0x61, 0xb2, 0xce, 0x5a, 0x43, 0x6b, 0x5e, 0x6a, - 0x7f, 0x68, 0x16, 0xb8, 0xc1, 0x54, 0x3b, 0x6d, 0xf6, 0x93, 0xc4, 0x3e, 0xf7, 0x88, 0x5d, 0x0b, - 0x47, 0x9f, 0xe8, 0x63, 0xd0, 0xdd, 0x00, 0x0b, 0x41, 0x07, 0xd4, 0x55, 0xc7, 0xef, 0xc8, 0xe3, - 0x98, 0x88, 0x63, 0x1e, 0x78, 0x3a, 0x34, 0xb4, 0x66, 0xc5, 0x7e, 0x77, 0x32, 0x7e, 0x30, 0x0a, - 0x1b, 0x8f, 0xa1, 0x76, 0x5a, 0x12, 0xd5, 0x61, 0xb9, 0xff, 0xe0, 0xa0, 0xb3, 0xe5, 0xf4, 0x77, - 0xbb, 0x9b, 0xce, 0xe1, 0xce, 0xfe, 0xde, 0x66, 0xa7, 0xf7, 0xb0, 0xb7, 0xd9, 0x5d, 0xbc, 0x80, - 0xae, 0xc2, 0x95, 0x5c, 0x6c, 0xeb, 0xc9, 0x86, 0xdd, 0xeb, 0x2e, 0x6a, 0x68, 0x19, 0x50, 0x0e, - 0xee, 0x6f, 0x3b, 0xbb, 0x3b, 0xdb, 0x4f, 0x16, 0x2b, 0xc6, 0x1d, 0xb8, 0xfc, 0x88, 0x48, 0xa5, - 0xd9, 0x26, 0x5f, 0x0c, 0x89, 0x78, 0xa3, 0x49, 0x0c, 0x0a, 0x4b, 0xfb, 0x04, 0xc7, 0xee, 0xb1, - 0x62, 0x8b, 0x02, 0x7a, 0x72, 0x84, 0x51, 0x72, 0xdc, 0x82, 0x9e, 0xa4, 0x86, 0x9a, 0xb6, 0xab, - 0x09, 0xb0, 0x4f, 0x4f, 0x48, 0x72, 0x40, 0x2a, 0x28, 0xf9, 0x33, 0xc2, 0x32, 0x0b, 0x29, 0xfa, - 0x41, 0x02, 0x18, 0xdf, 0xc0, 0x3b, 0x93, 0xad, 0x44, 0xc4, 0x99, 0x20, 0xe8, 0x33, 0x98, 0x51, - 0x93, 0x29, 0x74, 0xad, 0x31, 0xd5, 0x9c, 0x6b, 0xdf, 0x2e, 0x77, 0x1a, 0x76, 0x96, 0x85, 0x6e, - 0xc3, 0x65, 0x46, 0x5e, 0x48, 0x27, 0xd7, 0x3b, 0xb5, 0xfa, 0x42, 0x02, 0xef, 0x9d, 0xf6, 0x5f, - 0x85, 0x2b, 0x07, 0x31, 0xa6, 0xac, 0xd4, 0xbe, 0xf4, 0x00, 0x6d, 0xbe, 0x48, 0x4c, 0x5c, 0x86, - 0x9d, 0x6c, 0x8b, 0x12, 0xa3, 0x9c, 0x99, 0x36, 0xaf, 0x2a, 0xe0, 0x30, 0xa6, 0x86, 0x07, 0x4b, - 0x13, 0xa5, 0xb2, 0x65, 0xaf, 0xe4, 0x73, 0x54, 0xb9, 0xad, 0x0b, 0xe3, 0x2c, 0x74, 0x0b, 0x16, - 0xd2, 0xb0, 0xcb, 0x99, 0x4c, 0x3a, 0x26, 0x65, 0xe7, 0xb7, 0x2e, 0xd8, 0xf3, 0x0a, 0xee, 0xa4, - 0xe8, 0xc6, 0x2c, 0x4c, 0xab, 0x7f, 0xe3, 0x15, 0xa0, 0x5e, 0x58, 0x5a, 0xf0, 0xca, 0x39, 0xc1, - 0x6f, 0x6f, 0x3e, 0xf5, 0xf6, 0xe6, 0x5f, 0xc1, 0x92, 0x4d, 0x84, 0xe4, 0x31, 0xf9, 0x1f, 0xba, - 0xb7, 0xff, 0x98, 0x85, 0x99, 0xd4, 0x53, 0xe8, 0x3b, 0x0d, 0xaa, 0x23, 0xeb, 0xa3, 0xe2, 0xb1, - 0x3e, 0x33, 0x25, 0xf5, 0x92, 0xd6, 0x33, 0x5a, 0xdf, 0xfe, 0xf9, 0xd7, 0xf7, 0x95, 0xf7, 0x91, - 0x71, 0x7a, 0xb7, 0xbc, 0x4a, 0x97, 0xf6, 0x69, 0x14, 0xf3, 0xcf, 0x89, 0x2b, 0x85, 0xd5, 0xfa, - 0x3a, 0xbd, 0x6f, 0xd0, 0xef, 0x1a, 0xcc, 0xe7, 0x7d, 0x8f, 0xee, 0x15, 0x36, 0x79, 0xcd, 0x44, - 0xd6, 0xef, 0xff, 0xcb, 0xac, 0xd4, 0x65, 0xc6, 0x5d, 0xa5, 0x74, 0x15, 0xdd, 0x29, 0x56, 0xba, - 0x2e, 0x54, 0x01, 0xf4, 0x83, 0x06, 0x30, 0x1e, 0x14, 0xd4, 0x2e, 0x6c, 0x7c, 0x6e, 0xaa, 0xea, - 0x2b, 0xa3, 0x9c, 0xdc, 0xfd, 0x68, 0xee, 0x8e, 0xee, 0x47, 0x63, 0x4d, 0x89, 0xfa, 0xc0, 0x68, - 0x96, 0x10, 0x25, 0x93, 0xe2, 0xeb, 0x5a, 0x0b, 0xfd, 0xa8, 0xc1, 0x5c, 0x6e, 0x8e, 0xd0, 0x5a, - 0xa1, 0xae, 0xf3, 0x03, 0x5c, 0x24, 0xec, 0x9e, 0x12, 0x66, 0x1a, 0x65, 0x76, 0x8b, 0xa8, 0xea, - 0x23, 0x65, 0xb9, 0xd9, 0x2b, 0xa1, 0xec, 0xfc, 0xa4, 0xfe, 0x97, 0xca, 0x68, 0x38, 0x52, 0xf6, - 0xb3, 0x06, 0xf3, 0xf9, 0xc1, 0x2c, 0xe1, 0xbd, 0xd7, 0xcc, 0x71, 0x91, 0xb6, 0xfb, 0x4a, 0x9b, - 0x65, 0xb4, 0x4a, 0x68, 0x8b, 0xd3, 0xf2, 0xeb, 0x5a, 0x6b, 0xe3, 0x57, 0x0d, 0x6e, 0xba, 0x3c, - 0x2c, 0x52, 0xb4, 0x01, 0x4a, 0xcb, 0x5e, 0xf2, 0xea, 0xd9, 0xd3, 0x9e, 0xf6, 0x32, 0xba, 0xcf, - 0x93, 0xb7, 0x87, 0xc9, 0x63, 0xdf, 0xf2, 0x09, 0x53, 0x6f, 0x22, 0x2b, 0x0d, 0xe1, 0x88, 0x8a, - 0x37, 0x3e, 0x02, 0x3f, 0x19, 0x43, 0x7f, 0x6b, 0xda, 0x2f, 0x95, 0x4a, 0xf7, 0xe1, 0x6f, 0x95, - 0x1b, 0x8f, 0xd2, 0x9a, 0x1d, 0x25, 0xa1, 0x3b, 0x96, 0xf0, 0x38, 0x4d, 0x3a, 0x9a, 0x51, 0xf5, - 0xd7, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x35, 0x4d, 0xe2, 0x83, 0x63, 0x0a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/context.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/context.pb.go deleted file mode 100644 index dafb4353..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/context.pb.go +++ /dev/null @@ -1,563 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dialogflow/v2beta1/context.proto - -package dialogflow - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf4 "github.com/golang/protobuf/ptypes/struct" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Represents a context. -type Context struct { - // Required. The unique identifier of the context. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`. - // Note: The Context ID is always converted to lowercase. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The number of conversational query requests after which the - // context expires. If set to `0` (the default) the context expires - // immediately. Contexts expire automatically after 10 minutes even if there - // are no matching queries. - LifespanCount int32 `protobuf:"varint,2,opt,name=lifespan_count,json=lifespanCount" json:"lifespan_count,omitempty"` - // Optional. The collection of parameters associated with this context. - // Refer to [this doc](https://dialogflow.com/docs/actions-and-parameters) for - // syntax. - Parameters *google_protobuf4.Struct `protobuf:"bytes,3,opt,name=parameters" json:"parameters,omitempty"` -} - -func (m *Context) Reset() { *m = Context{} } -func (m *Context) String() string { return proto.CompactTextString(m) } -func (*Context) ProtoMessage() {} -func (*Context) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Context) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Context) GetLifespanCount() int32 { - if m != nil { - return m.LifespanCount - } - return 0 -} - -func (m *Context) GetParameters() *google_protobuf4.Struct { - if m != nil { - return m.Parameters - } - return nil -} - -// The request message for -// [Contexts.ListContexts][google.cloud.dialogflow.v2beta1.Contexts.ListContexts]. -type ListContextsRequest struct { - // Required. The session to list all contexts from. - // Format: `projects/<Project ID>/agent/sessions/<Session ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. The maximum number of items to return in a single page. By - // default 100 and at most 1000. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The next_page_token value returned from a previous list request. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListContextsRequest) Reset() { *m = ListContextsRequest{} } -func (m *ListContextsRequest) String() string { return proto.CompactTextString(m) } -func (*ListContextsRequest) ProtoMessage() {} -func (*ListContextsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *ListContextsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListContextsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListContextsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for -// [Contexts.ListContexts][google.cloud.dialogflow.v2beta1.Contexts.ListContexts]. -type ListContextsResponse struct { - // The list of contexts. There will be a maximum number of items - // returned based on the page_size field in the request. - Contexts []*Context `protobuf:"bytes,1,rep,name=contexts" json:"contexts,omitempty"` - // Token to retrieve the next page of results, or empty if there are no - // more results in the list. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListContextsResponse) Reset() { *m = ListContextsResponse{} } -func (m *ListContextsResponse) String() string { return proto.CompactTextString(m) } -func (*ListContextsResponse) ProtoMessage() {} -func (*ListContextsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *ListContextsResponse) GetContexts() []*Context { - if m != nil { - return m.Contexts - } - return nil -} - -func (m *ListContextsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for -// [Contexts.GetContext][google.cloud.dialogflow.v2beta1.Contexts.GetContext]. -type GetContextRequest struct { - // Required. The name of the context. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetContextRequest) Reset() { *m = GetContextRequest{} } -func (m *GetContextRequest) String() string { return proto.CompactTextString(m) } -func (*GetContextRequest) ProtoMessage() {} -func (*GetContextRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *GetContextRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for -// [Contexts.CreateContext][google.cloud.dialogflow.v2beta1.Contexts.CreateContext]. -type CreateContextRequest struct { - // Required. The session to create a context for. - // Format: `projects/<Project ID>/agent/sessions/<Session ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The context to create. - Context *Context `protobuf:"bytes,2,opt,name=context" json:"context,omitempty"` -} - -func (m *CreateContextRequest) Reset() { *m = CreateContextRequest{} } -func (m *CreateContextRequest) String() string { return proto.CompactTextString(m) } -func (*CreateContextRequest) ProtoMessage() {} -func (*CreateContextRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *CreateContextRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateContextRequest) GetContext() *Context { - if m != nil { - return m.Context - } - return nil -} - -// The request message for -// [Contexts.UpdateContext][google.cloud.dialogflow.v2beta1.Contexts.UpdateContext]. -type UpdateContextRequest struct { - // Required. The context to update. - Context *Context `protobuf:"bytes,1,opt,name=context" json:"context,omitempty"` - // Optional. The mask to control which fields get updated. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateContextRequest) Reset() { *m = UpdateContextRequest{} } -func (m *UpdateContextRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateContextRequest) ProtoMessage() {} -func (*UpdateContextRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *UpdateContextRequest) GetContext() *Context { - if m != nil { - return m.Context - } - return nil -} - -func (m *UpdateContextRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The request message for -// [Contexts.DeleteContext][google.cloud.dialogflow.v2beta1.Contexts.DeleteContext]. -type DeleteContextRequest struct { - // Required. The name of the context to delete. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>/contexts/<Context ID>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteContextRequest) Reset() { *m = DeleteContextRequest{} } -func (m *DeleteContextRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteContextRequest) ProtoMessage() {} -func (*DeleteContextRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *DeleteContextRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for -// [Contexts.DeleteAllContexts][google.cloud.dialogflow.v2beta1.Contexts.DeleteAllContexts]. -type DeleteAllContextsRequest struct { - // Required. The name of the session to delete all contexts from. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` -} - -func (m *DeleteAllContextsRequest) Reset() { *m = DeleteAllContextsRequest{} } -func (m *DeleteAllContextsRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteAllContextsRequest) ProtoMessage() {} -func (*DeleteAllContextsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *DeleteAllContextsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func init() { - proto.RegisterType((*Context)(nil), "google.cloud.dialogflow.v2beta1.Context") - proto.RegisterType((*ListContextsRequest)(nil), "google.cloud.dialogflow.v2beta1.ListContextsRequest") - proto.RegisterType((*ListContextsResponse)(nil), "google.cloud.dialogflow.v2beta1.ListContextsResponse") - proto.RegisterType((*GetContextRequest)(nil), "google.cloud.dialogflow.v2beta1.GetContextRequest") - proto.RegisterType((*CreateContextRequest)(nil), "google.cloud.dialogflow.v2beta1.CreateContextRequest") - proto.RegisterType((*UpdateContextRequest)(nil), "google.cloud.dialogflow.v2beta1.UpdateContextRequest") - proto.RegisterType((*DeleteContextRequest)(nil), "google.cloud.dialogflow.v2beta1.DeleteContextRequest") - proto.RegisterType((*DeleteAllContextsRequest)(nil), "google.cloud.dialogflow.v2beta1.DeleteAllContextsRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Contexts service - -type ContextsClient interface { - // Returns the list of all contexts in the specified session. - ListContexts(ctx context.Context, in *ListContextsRequest, opts ...grpc.CallOption) (*ListContextsResponse, error) - // Retrieves the specified context. - GetContext(ctx context.Context, in *GetContextRequest, opts ...grpc.CallOption) (*Context, error) - // Creates a context. - CreateContext(ctx context.Context, in *CreateContextRequest, opts ...grpc.CallOption) (*Context, error) - // Updates the specified context. - UpdateContext(ctx context.Context, in *UpdateContextRequest, opts ...grpc.CallOption) (*Context, error) - // Deletes the specified context. - DeleteContext(ctx context.Context, in *DeleteContextRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Deletes all active contexts in the specified session. - DeleteAllContexts(ctx context.Context, in *DeleteAllContextsRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type contextsClient struct { - cc *grpc.ClientConn -} - -func NewContextsClient(cc *grpc.ClientConn) ContextsClient { - return &contextsClient{cc} -} - -func (c *contextsClient) ListContexts(ctx context.Context, in *ListContextsRequest, opts ...grpc.CallOption) (*ListContextsResponse, error) { - out := new(ListContextsResponse) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/ListContexts", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *contextsClient) GetContext(ctx context.Context, in *GetContextRequest, opts ...grpc.CallOption) (*Context, error) { - out := new(Context) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/GetContext", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *contextsClient) CreateContext(ctx context.Context, in *CreateContextRequest, opts ...grpc.CallOption) (*Context, error) { - out := new(Context) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/CreateContext", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *contextsClient) UpdateContext(ctx context.Context, in *UpdateContextRequest, opts ...grpc.CallOption) (*Context, error) { - out := new(Context) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/UpdateContext", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *contextsClient) DeleteContext(ctx context.Context, in *DeleteContextRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/DeleteContext", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *contextsClient) DeleteAllContexts(ctx context.Context, in *DeleteAllContextsRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Contexts/DeleteAllContexts", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Contexts service - -type ContextsServer interface { - // Returns the list of all contexts in the specified session. - ListContexts(context.Context, *ListContextsRequest) (*ListContextsResponse, error) - // Retrieves the specified context. - GetContext(context.Context, *GetContextRequest) (*Context, error) - // Creates a context. - CreateContext(context.Context, *CreateContextRequest) (*Context, error) - // Updates the specified context. - UpdateContext(context.Context, *UpdateContextRequest) (*Context, error) - // Deletes the specified context. - DeleteContext(context.Context, *DeleteContextRequest) (*google_protobuf2.Empty, error) - // Deletes all active contexts in the specified session. - DeleteAllContexts(context.Context, *DeleteAllContextsRequest) (*google_protobuf2.Empty, error) -} - -func RegisterContextsServer(s *grpc.Server, srv ContextsServer) { - s.RegisterService(&_Contexts_serviceDesc, srv) -} - -func _Contexts_ListContexts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListContextsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContextsServer).ListContexts(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/ListContexts", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContextsServer).ListContexts(ctx, req.(*ListContextsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Contexts_GetContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetContextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContextsServer).GetContext(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/GetContext", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContextsServer).GetContext(ctx, req.(*GetContextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Contexts_CreateContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateContextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContextsServer).CreateContext(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/CreateContext", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContextsServer).CreateContext(ctx, req.(*CreateContextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Contexts_UpdateContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateContextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContextsServer).UpdateContext(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/UpdateContext", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContextsServer).UpdateContext(ctx, req.(*UpdateContextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Contexts_DeleteContext_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteContextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContextsServer).DeleteContext(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/DeleteContext", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContextsServer).DeleteContext(ctx, req.(*DeleteContextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Contexts_DeleteAllContexts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteAllContextsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContextsServer).DeleteAllContexts(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Contexts/DeleteAllContexts", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContextsServer).DeleteAllContexts(ctx, req.(*DeleteAllContextsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Contexts_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dialogflow.v2beta1.Contexts", - HandlerType: (*ContextsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListContexts", - Handler: _Contexts_ListContexts_Handler, - }, - { - MethodName: "GetContext", - Handler: _Contexts_GetContext_Handler, - }, - { - MethodName: "CreateContext", - Handler: _Contexts_CreateContext_Handler, - }, - { - MethodName: "UpdateContext", - Handler: _Contexts_UpdateContext_Handler, - }, - { - MethodName: "DeleteContext", - Handler: _Contexts_DeleteContext_Handler, - }, - { - MethodName: "DeleteAllContexts", - Handler: _Contexts_DeleteAllContexts_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dialogflow/v2beta1/context.proto", -} - -func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/context.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 731 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x96, 0xcd, 0x6e, 0xd3, 0x4a, - 0x14, 0xc7, 0x35, 0xe9, 0xbd, 0x6d, 0x7a, 0xda, 0xdc, 0xab, 0x0e, 0x51, 0x89, 0xd2, 0xa2, 0x46, - 0x46, 0x40, 0x14, 0x09, 0x5b, 0x84, 0x6f, 0x2a, 0x2a, 0xb5, 0x09, 0xad, 0x2a, 0x81, 0xa8, 0x52, - 0x60, 0xc1, 0x26, 0x9a, 0x26, 0x27, 0x96, 0xa9, 0xe3, 0x31, 0x9e, 0x09, 0x94, 0xa2, 0x6e, 0x10, - 0x6f, 0xc0, 0x82, 0x1d, 0x0b, 0x16, 0x2c, 0xfa, 0x06, 0x88, 0x05, 0xe2, 0x19, 0x78, 0x05, 0x1e, - 0x82, 0x25, 0xf2, 0x78, 0x9c, 0x8f, 0x26, 0x25, 0x71, 0x77, 0xf1, 0xcc, 0x7f, 0xce, 0xf9, 0x9d, - 0x33, 0xff, 0x63, 0x07, 0xae, 0xda, 0x9c, 0xdb, 0x2e, 0x5a, 0x0d, 0x97, 0x77, 0x9a, 0x56, 0xd3, - 0x61, 0x2e, 0xb7, 0x5b, 0x2e, 0x7f, 0x6d, 0xbd, 0x2a, 0xef, 0xa1, 0x64, 0xd7, 0xac, 0x06, 0xf7, - 0x24, 0x1e, 0x48, 0xd3, 0x0f, 0xb8, 0xe4, 0x74, 0x25, 0x92, 0x9b, 0x4a, 0x6e, 0xf6, 0xe4, 0xa6, - 0x96, 0xe7, 0x97, 0x75, 0x3c, 0xe6, 0x3b, 0x16, 0xf3, 0x3c, 0x2e, 0x99, 0x74, 0xb8, 0x27, 0xa2, - 0xe3, 0xf9, 0x25, 0xbd, 0xab, 0x9e, 0xf6, 0x3a, 0x2d, 0x0b, 0xdb, 0xbe, 0x7c, 0xa3, 0x37, 0x0b, - 0x27, 0x37, 0x5b, 0x0e, 0xba, 0xcd, 0x7a, 0x9b, 0x89, 0x7d, 0xad, 0x58, 0x3e, 0xa9, 0x10, 0x32, - 0xe8, 0x34, 0x34, 0x9b, 0x71, 0x04, 0x33, 0x95, 0x08, 0x96, 0x52, 0xf8, 0xc7, 0x63, 0x6d, 0xcc, - 0x91, 0x02, 0x29, 0xce, 0xd6, 0xd4, 0x6f, 0x7a, 0x09, 0xfe, 0x73, 0x9d, 0x16, 0x0a, 0x9f, 0x79, - 0xf5, 0x06, 0xef, 0x78, 0x32, 0x97, 0x2a, 0x90, 0xe2, 0xbf, 0xb5, 0x4c, 0xbc, 0x5a, 0x09, 0x17, - 0xe9, 0x6d, 0x00, 0x9f, 0x05, 0xac, 0x8d, 0x12, 0x03, 0x91, 0x9b, 0x2a, 0x90, 0xe2, 0x5c, 0xf9, - 0xbc, 0xa9, 0xcb, 0x8e, 0x13, 0x9b, 0xbb, 0x2a, 0x71, 0xad, 0x4f, 0x6a, 0x38, 0x70, 0xee, 0xa1, - 0x23, 0xa4, 0x46, 0x10, 0x35, 0x7c, 0xd9, 0x41, 0x21, 0xe9, 0x22, 0x4c, 0xfb, 0x2c, 0x40, 0x4f, - 0x6a, 0x18, 0xfd, 0x44, 0x97, 0x60, 0xd6, 0x67, 0x36, 0xd6, 0x85, 0x73, 0x88, 0x9a, 0x24, 0x1d, - 0x2e, 0xec, 0x3a, 0x87, 0x48, 0x2f, 0x84, 0x10, 0x36, 0xd6, 0x25, 0xdf, 0x47, 0x4f, 0x41, 0xcc, - 0xd6, 0x94, 0xfc, 0x49, 0xb8, 0x60, 0xbc, 0x27, 0x90, 0x1d, 0xcc, 0x25, 0x7c, 0xee, 0x09, 0xa4, - 0x55, 0x48, 0xeb, 0xfb, 0x12, 0x39, 0x52, 0x98, 0x2a, 0xce, 0x95, 0x8b, 0xe6, 0x98, 0x1b, 0x33, - 0x75, 0x90, 0x5a, 0xf7, 0x24, 0xbd, 0x0c, 0xff, 0x7b, 0x78, 0x20, 0xeb, 0x7d, 0x08, 0x29, 0x85, - 0x90, 0x09, 0x97, 0x77, 0xba, 0x18, 0x57, 0x60, 0x61, 0x0b, 0x63, 0x88, 0xb8, 0xde, 0x11, 0xad, - 0x37, 0x02, 0xc8, 0x56, 0x02, 0x64, 0x12, 0x4f, 0x68, 0x4f, 0xeb, 0xcd, 0x06, 0xcc, 0x68, 0x18, - 0x95, 0x38, 0x49, 0x15, 0xf1, 0x41, 0xe3, 0x23, 0x81, 0xec, 0x53, 0xbf, 0x39, 0x9c, 0xb4, 0x2f, - 0x38, 0x39, 0x63, 0x70, 0xba, 0x0a, 0x73, 0x1d, 0x15, 0x5b, 0xb9, 0x53, 0x43, 0xe6, 0x87, 0x5c, - 0xb2, 0x19, 0x1a, 0xf8, 0x11, 0x13, 0xfb, 0x35, 0x88, 0xe4, 0xe1, 0x6f, 0xa3, 0x04, 0xd9, 0x2a, - 0xba, 0x38, 0x04, 0x36, 0xaa, 0x73, 0x65, 0xc8, 0x45, 0xda, 0x75, 0xd7, 0x9d, 0xd0, 0x59, 0xe5, - 0xef, 0x69, 0x48, 0xc7, 0x5a, 0xfa, 0x8d, 0xc0, 0x7c, 0xbf, 0x55, 0xe8, 0x8d, 0xb1, 0xd5, 0x8e, - 0x70, 0x71, 0xfe, 0x66, 0xc2, 0x53, 0x91, 0x1f, 0x8d, 0xb5, 0x77, 0x3f, 0x7f, 0x7d, 0x48, 0xdd, - 0xa1, 0xb7, 0xba, 0xaf, 0x93, 0xb7, 0x11, 0xe4, 0x7d, 0x3f, 0xe0, 0x2f, 0xb0, 0x21, 0x85, 0x55, - 0xb2, 0x98, 0x8d, 0x9e, 0xb4, 0x04, 0x0a, 0x11, 0xbe, 0x29, 0xac, 0xd2, 0x91, 0xd5, 0x75, 0xe2, - 0x31, 0x01, 0xe8, 0x59, 0x8c, 0x96, 0xc7, 0x52, 0x0c, 0xf9, 0x31, 0x3f, 0xf1, 0xed, 0x8e, 0x82, - 0x0d, 0xef, 0xe0, 0x6f, 0xa8, 0x5d, 0x52, 0xab, 0x74, 0x44, 0xbf, 0x12, 0xc8, 0x0c, 0xd8, 0x9c, - 0x8e, 0xef, 0xda, 0xa8, 0xb1, 0x48, 0x80, 0xbc, 0xa5, 0x90, 0xd7, 0x8d, 0x33, 0xf6, 0xf7, 0x5e, - 0xd7, 0xd0, 0x3f, 0x08, 0x64, 0x06, 0xa6, 0x65, 0x02, 0xf6, 0x51, 0xd3, 0x95, 0x80, 0xfd, 0xb1, - 0x62, 0xdf, 0x2e, 0xaf, 0xf5, 0xd8, 0xe3, 0x6f, 0x4d, 0x92, 0xb6, 0xf7, 0x6a, 0xf8, 0x44, 0x20, - 0x33, 0x30, 0x58, 0x13, 0xd4, 0x30, 0x6a, 0x10, 0xf3, 0x8b, 0x43, 0x83, 0xfc, 0x20, 0xfc, 0x4c, - 0xc5, 0x06, 0x29, 0x9d, 0xd5, 0x20, 0x5f, 0x08, 0x2c, 0x0c, 0x4d, 0x33, 0xbd, 0x3b, 0x21, 0xe4, - 0xf0, 0x1b, 0x20, 0x09, 0x68, 0x12, 0x5b, 0x6c, 0x1c, 0x13, 0xb8, 0xd8, 0xe0, 0xed, 0x71, 0x60, - 0x1b, 0xf3, 0x1a, 0x68, 0x27, 0x4c, 0xbf, 0x43, 0x9e, 0x6f, 0xeb, 0x03, 0x36, 0x77, 0x99, 0x67, - 0x9b, 0x3c, 0xb0, 0x2d, 0x1b, 0x3d, 0x05, 0x67, 0x45, 0x5b, 0xcc, 0x77, 0xc4, 0xa9, 0xff, 0x35, - 0x56, 0x7b, 0x4b, 0xbf, 0x09, 0xf9, 0x9c, 0x4a, 0x55, 0x37, 0x8f, 0x53, 0x2b, 0x5b, 0x51, 0xcc, - 0x8a, 0x82, 0xa8, 0xf6, 0x20, 0x9e, 0x45, 0x87, 0xf6, 0xa6, 0x55, 0xfc, 0xeb, 0x7f, 0x02, 0x00, - 0x00, 0xff, 0xff, 0x69, 0x4e, 0x3f, 0xa2, 0xca, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/entity_type.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/entity_type.pb.go deleted file mode 100644 index 31d44cbf..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/entity_type.pb.go +++ /dev/null @@ -1,1285 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dialogflow/v2beta1/entity_type.proto - -package dialogflow - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" -import _ "github.com/golang/protobuf/ptypes/struct" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Represents kinds of entities. -type EntityType_Kind int32 - -const ( - // Not specified. This value should be never used. - EntityType_KIND_UNSPECIFIED EntityType_Kind = 0 - // Map entity types allow mapping of a group of synonyms to a canonical - // value. - EntityType_KIND_MAP EntityType_Kind = 1 - // List entity types contain a set of entries that do not map to canonical - // values. However, list entity types can contain references to other entity - // types (with or without aliases). - EntityType_KIND_LIST EntityType_Kind = 2 -) - -var EntityType_Kind_name = map[int32]string{ - 0: "KIND_UNSPECIFIED", - 1: "KIND_MAP", - 2: "KIND_LIST", -} -var EntityType_Kind_value = map[string]int32{ - "KIND_UNSPECIFIED": 0, - "KIND_MAP": 1, - "KIND_LIST": 2, -} - -func (x EntityType_Kind) String() string { - return proto.EnumName(EntityType_Kind_name, int32(x)) -} -func (EntityType_Kind) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -// Represents different entity type expansion modes. Automated expansion -// allows an agent to recognize values that have not been explicitly listed in -// the entity (for example, new kinds of shopping list items). -type EntityType_AutoExpansionMode int32 - -const ( - // Auto expansion disabled for the entity. - EntityType_AUTO_EXPANSION_MODE_UNSPECIFIED EntityType_AutoExpansionMode = 0 - // Allows an agent to recognize values that have not been explicitly - // listed in the entity. - EntityType_AUTO_EXPANSION_MODE_DEFAULT EntityType_AutoExpansionMode = 1 -) - -var EntityType_AutoExpansionMode_name = map[int32]string{ - 0: "AUTO_EXPANSION_MODE_UNSPECIFIED", - 1: "AUTO_EXPANSION_MODE_DEFAULT", -} -var EntityType_AutoExpansionMode_value = map[string]int32{ - "AUTO_EXPANSION_MODE_UNSPECIFIED": 0, - "AUTO_EXPANSION_MODE_DEFAULT": 1, -} - -func (x EntityType_AutoExpansionMode) String() string { - return proto.EnumName(EntityType_AutoExpansionMode_name, int32(x)) -} -func (EntityType_AutoExpansionMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 1} -} - -// Represents an entity type. -// Entity types serve as a tool for extracting parameter values from natural -// language queries. -type EntityType struct { - // Required for all methods except `create` (`create` populates the name - // automatically. - // The unique identifier of the entity type. Format: - // `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The name of the entity. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Required. Indicates the kind of entity type. - Kind EntityType_Kind `protobuf:"varint,3,opt,name=kind,enum=google.cloud.dialogflow.v2beta1.EntityType_Kind" json:"kind,omitempty"` - // Optional. Indicates whether the entity type can be automatically - // expanded. - AutoExpansionMode EntityType_AutoExpansionMode `protobuf:"varint,4,opt,name=auto_expansion_mode,json=autoExpansionMode,enum=google.cloud.dialogflow.v2beta1.EntityType_AutoExpansionMode" json:"auto_expansion_mode,omitempty"` - // Optional. The collection of entities associated with the entity type. - Entities []*EntityType_Entity `protobuf:"bytes,6,rep,name=entities" json:"entities,omitempty"` -} - -func (m *EntityType) Reset() { *m = EntityType{} } -func (m *EntityType) String() string { return proto.CompactTextString(m) } -func (*EntityType) ProtoMessage() {} -func (*EntityType) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *EntityType) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *EntityType) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *EntityType) GetKind() EntityType_Kind { - if m != nil { - return m.Kind - } - return EntityType_KIND_UNSPECIFIED -} - -func (m *EntityType) GetAutoExpansionMode() EntityType_AutoExpansionMode { - if m != nil { - return m.AutoExpansionMode - } - return EntityType_AUTO_EXPANSION_MODE_UNSPECIFIED -} - -func (m *EntityType) GetEntities() []*EntityType_Entity { - if m != nil { - return m.Entities - } - return nil -} - -// Optional. Represents an entity. -type EntityType_Entity struct { - // Required. - // For `KIND_MAP` entity types: - // A canonical name to be used in place of synonyms. - // For `KIND_LIST` entity types: - // A string that can contain references to other entity types (with or - // without aliases). - Value string `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` - // Required. A collection of synonyms. For `KIND_LIST` entity types this - // must contain exactly one synonym equal to `value`. - Synonyms []string `protobuf:"bytes,2,rep,name=synonyms" json:"synonyms,omitempty"` -} - -func (m *EntityType_Entity) Reset() { *m = EntityType_Entity{} } -func (m *EntityType_Entity) String() string { return proto.CompactTextString(m) } -func (*EntityType_Entity) ProtoMessage() {} -func (*EntityType_Entity) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -func (m *EntityType_Entity) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *EntityType_Entity) GetSynonyms() []string { - if m != nil { - return m.Synonyms - } - return nil -} - -// The request message for -// [EntityTypes.ListEntityTypes][google.cloud.dialogflow.v2beta1.EntityTypes.ListEntityTypes]. -type ListEntityTypesRequest struct { - // Required. The agent to list all entity types from. - // Format: `projects/<Project ID>/agent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. The language to list entity synonyms for. If not specified, - // the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The maximum number of items to return in a single page. By - // default 100 and at most 1000. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The next_page_token value returned from a previous list request. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListEntityTypesRequest) Reset() { *m = ListEntityTypesRequest{} } -func (m *ListEntityTypesRequest) String() string { return proto.CompactTextString(m) } -func (*ListEntityTypesRequest) ProtoMessage() {} -func (*ListEntityTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ListEntityTypesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListEntityTypesRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *ListEntityTypesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListEntityTypesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for -// [EntityTypes.ListEntityTypes][google.cloud.dialogflow.v2beta1.EntityTypes.ListEntityTypes]. -type ListEntityTypesResponse struct { - // The list of agent entity types. There will be a maximum number of items - // returned based on the page_size field in the request. - EntityTypes []*EntityType `protobuf:"bytes,1,rep,name=entity_types,json=entityTypes" json:"entity_types,omitempty"` - // Token to retrieve the next page of results, or empty if there are no - // more results in the list. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListEntityTypesResponse) Reset() { *m = ListEntityTypesResponse{} } -func (m *ListEntityTypesResponse) String() string { return proto.CompactTextString(m) } -func (*ListEntityTypesResponse) ProtoMessage() {} -func (*ListEntityTypesResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *ListEntityTypesResponse) GetEntityTypes() []*EntityType { - if m != nil { - return m.EntityTypes - } - return nil -} - -func (m *ListEntityTypesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for -// [EntityTypes.GetEntityType][google.cloud.dialogflow.v2beta1.EntityTypes.GetEntityType]. -type GetEntityTypeRequest struct { - // Required. The name of the entity type. - // Format: `projects/<Project ID>/agent/entityTypes/<EntityType ID>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The language to retrieve entity synonyms for. If not specified, - // the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *GetEntityTypeRequest) Reset() { *m = GetEntityTypeRequest{} } -func (m *GetEntityTypeRequest) String() string { return proto.CompactTextString(m) } -func (*GetEntityTypeRequest) ProtoMessage() {} -func (*GetEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *GetEntityTypeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GetEntityTypeRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// The request message for -// [EntityTypes.CreateEntityType][google.cloud.dialogflow.v2beta1.EntityTypes.CreateEntityType]. -type CreateEntityTypeRequest struct { - // Required. The agent to create a entity type for. - // Format: `projects/<Project ID>/agent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The entity type to create. - EntityType *EntityType `protobuf:"bytes,2,opt,name=entity_type,json=entityType" json:"entity_type,omitempty"` - // Optional. The language of entity synonyms defined in `entity_type`. If not - // specified, the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *CreateEntityTypeRequest) Reset() { *m = CreateEntityTypeRequest{} } -func (m *CreateEntityTypeRequest) String() string { return proto.CompactTextString(m) } -func (*CreateEntityTypeRequest) ProtoMessage() {} -func (*CreateEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *CreateEntityTypeRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateEntityTypeRequest) GetEntityType() *EntityType { - if m != nil { - return m.EntityType - } - return nil -} - -func (m *CreateEntityTypeRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// The request message for -// [EntityTypes.UpdateEntityType][google.cloud.dialogflow.v2beta1.EntityTypes.UpdateEntityType]. -type UpdateEntityTypeRequest struct { - // Required. The entity type to update. - // Format: `projects/<Project ID>/agent/entityTypes/<EntityType ID>`. - EntityType *EntityType `protobuf:"bytes,1,opt,name=entity_type,json=entityType" json:"entity_type,omitempty"` - // Optional. The language of entity synonyms defined in `entity_type`. If not - // specified, the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The mask to control which fields get updated. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateEntityTypeRequest) Reset() { *m = UpdateEntityTypeRequest{} } -func (m *UpdateEntityTypeRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateEntityTypeRequest) ProtoMessage() {} -func (*UpdateEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *UpdateEntityTypeRequest) GetEntityType() *EntityType { - if m != nil { - return m.EntityType - } - return nil -} - -func (m *UpdateEntityTypeRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *UpdateEntityTypeRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The request message for -// [EntityTypes.DeleteEntityType][google.cloud.dialogflow.v2beta1.EntityTypes.DeleteEntityType]. -type DeleteEntityTypeRequest struct { - // Required. The name of the entity type to delete. - // Format: `projects/<Project ID>/agent/entityTypes/<EntityType ID>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteEntityTypeRequest) Reset() { *m = DeleteEntityTypeRequest{} } -func (m *DeleteEntityTypeRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteEntityTypeRequest) ProtoMessage() {} -func (*DeleteEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *DeleteEntityTypeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for -// [EntityTypes.BatchUpdateEntityTypes][google.cloud.dialogflow.v2beta1.EntityTypes.BatchUpdateEntityTypes]. -type BatchUpdateEntityTypesRequest struct { - // Required. The name of the agent to update or create entity types in. - // Format: `projects/<Project ID>/agent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The source of the entity type batch. - // - // For each entity type in the batch: - // * If `name` is specified, we update an existing entity type. - // * If `name` is not specified, we create a new entity type. - // - // Types that are valid to be assigned to EntityTypeBatch: - // *BatchUpdateEntityTypesRequest_EntityTypeBatchUri - // *BatchUpdateEntityTypesRequest_EntityTypeBatchInline - EntityTypeBatch isBatchUpdateEntityTypesRequest_EntityTypeBatch `protobuf_oneof:"entity_type_batch"` - // Optional. The language of entity synonyms defined in `entity_types`. If not - // specified, the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,4,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The mask to control which fields get updated. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,5,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *BatchUpdateEntityTypesRequest) Reset() { *m = BatchUpdateEntityTypesRequest{} } -func (m *BatchUpdateEntityTypesRequest) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateEntityTypesRequest) ProtoMessage() {} -func (*BatchUpdateEntityTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -type isBatchUpdateEntityTypesRequest_EntityTypeBatch interface { - isBatchUpdateEntityTypesRequest_EntityTypeBatch() -} - -type BatchUpdateEntityTypesRequest_EntityTypeBatchUri struct { - EntityTypeBatchUri string `protobuf:"bytes,2,opt,name=entity_type_batch_uri,json=entityTypeBatchUri,oneof"` -} -type BatchUpdateEntityTypesRequest_EntityTypeBatchInline struct { - EntityTypeBatchInline *EntityTypeBatch `protobuf:"bytes,3,opt,name=entity_type_batch_inline,json=entityTypeBatchInline,oneof"` -} - -func (*BatchUpdateEntityTypesRequest_EntityTypeBatchUri) isBatchUpdateEntityTypesRequest_EntityTypeBatch() { -} -func (*BatchUpdateEntityTypesRequest_EntityTypeBatchInline) isBatchUpdateEntityTypesRequest_EntityTypeBatch() { -} - -func (m *BatchUpdateEntityTypesRequest) GetEntityTypeBatch() isBatchUpdateEntityTypesRequest_EntityTypeBatch { - if m != nil { - return m.EntityTypeBatch - } - return nil -} - -func (m *BatchUpdateEntityTypesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *BatchUpdateEntityTypesRequest) GetEntityTypeBatchUri() string { - if x, ok := m.GetEntityTypeBatch().(*BatchUpdateEntityTypesRequest_EntityTypeBatchUri); ok { - return x.EntityTypeBatchUri - } - return "" -} - -func (m *BatchUpdateEntityTypesRequest) GetEntityTypeBatchInline() *EntityTypeBatch { - if x, ok := m.GetEntityTypeBatch().(*BatchUpdateEntityTypesRequest_EntityTypeBatchInline); ok { - return x.EntityTypeBatchInline - } - return nil -} - -func (m *BatchUpdateEntityTypesRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *BatchUpdateEntityTypesRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*BatchUpdateEntityTypesRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _BatchUpdateEntityTypesRequest_OneofMarshaler, _BatchUpdateEntityTypesRequest_OneofUnmarshaler, _BatchUpdateEntityTypesRequest_OneofSizer, []interface{}{ - (*BatchUpdateEntityTypesRequest_EntityTypeBatchUri)(nil), - (*BatchUpdateEntityTypesRequest_EntityTypeBatchInline)(nil), - } -} - -func _BatchUpdateEntityTypesRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*BatchUpdateEntityTypesRequest) - // entity_type_batch - switch x := m.EntityTypeBatch.(type) { - case *BatchUpdateEntityTypesRequest_EntityTypeBatchUri: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.EntityTypeBatchUri) - case *BatchUpdateEntityTypesRequest_EntityTypeBatchInline: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.EntityTypeBatchInline); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("BatchUpdateEntityTypesRequest.EntityTypeBatch has unexpected type %T", x) - } - return nil -} - -func _BatchUpdateEntityTypesRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*BatchUpdateEntityTypesRequest) - switch tag { - case 2: // entity_type_batch.entity_type_batch_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.EntityTypeBatch = &BatchUpdateEntityTypesRequest_EntityTypeBatchUri{x} - return true, err - case 3: // entity_type_batch.entity_type_batch_inline - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(EntityTypeBatch) - err := b.DecodeMessage(msg) - m.EntityTypeBatch = &BatchUpdateEntityTypesRequest_EntityTypeBatchInline{msg} - return true, err - default: - return false, nil - } -} - -func _BatchUpdateEntityTypesRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*BatchUpdateEntityTypesRequest) - // entity_type_batch - switch x := m.EntityTypeBatch.(type) { - case *BatchUpdateEntityTypesRequest_EntityTypeBatchUri: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.EntityTypeBatchUri))) - n += len(x.EntityTypeBatchUri) - case *BatchUpdateEntityTypesRequest_EntityTypeBatchInline: - s := proto.Size(x.EntityTypeBatchInline) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response message for -// [EntityTypes.BatchUpdateEntityTypes][google.cloud.dialogflow.v2beta1.EntityTypes.BatchUpdateEntityTypes]. -type BatchUpdateEntityTypesResponse struct { - // The collection of updated or created entity types. - EntityTypes []*EntityType `protobuf:"bytes,1,rep,name=entity_types,json=entityTypes" json:"entity_types,omitempty"` -} - -func (m *BatchUpdateEntityTypesResponse) Reset() { *m = BatchUpdateEntityTypesResponse{} } -func (m *BatchUpdateEntityTypesResponse) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateEntityTypesResponse) ProtoMessage() {} -func (*BatchUpdateEntityTypesResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *BatchUpdateEntityTypesResponse) GetEntityTypes() []*EntityType { - if m != nil { - return m.EntityTypes - } - return nil -} - -// The request message for -// [EntityTypes.BatchDeleteEntityTypes][google.cloud.dialogflow.v2beta1.EntityTypes.BatchDeleteEntityTypes]. -type BatchDeleteEntityTypesRequest struct { - // Required. The name of the agent to delete all entities types for. Format: - // `projects/<Project ID>/agent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The names entity types to delete. All names must point to the - // same agent as `parent`. - EntityTypeNames []string `protobuf:"bytes,2,rep,name=entity_type_names,json=entityTypeNames" json:"entity_type_names,omitempty"` -} - -func (m *BatchDeleteEntityTypesRequest) Reset() { *m = BatchDeleteEntityTypesRequest{} } -func (m *BatchDeleteEntityTypesRequest) String() string { return proto.CompactTextString(m) } -func (*BatchDeleteEntityTypesRequest) ProtoMessage() {} -func (*BatchDeleteEntityTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{9} } - -func (m *BatchDeleteEntityTypesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *BatchDeleteEntityTypesRequest) GetEntityTypeNames() []string { - if m != nil { - return m.EntityTypeNames - } - return nil -} - -// The request message for -// [EntityTypes.BatchCreateEntities][google.cloud.dialogflow.v2beta1.EntityTypes.BatchCreateEntities]. -type BatchCreateEntitiesRequest struct { - // Required. The name of the entity type to create entities in. Format: - // `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The collection of entities to create. - Entities []*EntityType_Entity `protobuf:"bytes,2,rep,name=entities" json:"entities,omitempty"` - // Optional. The language of entity synonyms defined in `entities`. If not - // specified, the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *BatchCreateEntitiesRequest) Reset() { *m = BatchCreateEntitiesRequest{} } -func (m *BatchCreateEntitiesRequest) String() string { return proto.CompactTextString(m) } -func (*BatchCreateEntitiesRequest) ProtoMessage() {} -func (*BatchCreateEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{10} } - -func (m *BatchCreateEntitiesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *BatchCreateEntitiesRequest) GetEntities() []*EntityType_Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *BatchCreateEntitiesRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// The response message for -// [EntityTypes.BatchCreateEntities][google.cloud.dialogflow.v2beta1.EntityTypes.BatchCreateEntities]. -type BatchUpdateEntitiesRequest struct { - // Required. The name of the entity type to update the entities in. Format: - // `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The collection of new entities to replace the existing entities. - Entities []*EntityType_Entity `protobuf:"bytes,2,rep,name=entities" json:"entities,omitempty"` - // Optional. The language of entity synonyms defined in `entities`. If not - // specified, the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The mask to control which fields get updated. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *BatchUpdateEntitiesRequest) Reset() { *m = BatchUpdateEntitiesRequest{} } -func (m *BatchUpdateEntitiesRequest) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateEntitiesRequest) ProtoMessage() {} -func (*BatchUpdateEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{11} } - -func (m *BatchUpdateEntitiesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *BatchUpdateEntitiesRequest) GetEntities() []*EntityType_Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *BatchUpdateEntitiesRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *BatchUpdateEntitiesRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The request message for -// [EntityTypes.BatchDeleteEntities][google.cloud.dialogflow.v2beta1.EntityTypes.BatchDeleteEntities]. -type BatchDeleteEntitiesRequest struct { - // Required. The name of the entity type to delete entries for. Format: - // `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The canonical `values` of the entities to delete. Note that - // these are not fully-qualified names, i.e. they don't start with - // `projects/<Project ID>`. - EntityValues []string `protobuf:"bytes,2,rep,name=entity_values,json=entityValues" json:"entity_values,omitempty"` - // Optional. The language of entity synonyms defined in `entities`. If not - // specified, the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *BatchDeleteEntitiesRequest) Reset() { *m = BatchDeleteEntitiesRequest{} } -func (m *BatchDeleteEntitiesRequest) String() string { return proto.CompactTextString(m) } -func (*BatchDeleteEntitiesRequest) ProtoMessage() {} -func (*BatchDeleteEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{12} } - -func (m *BatchDeleteEntitiesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *BatchDeleteEntitiesRequest) GetEntityValues() []string { - if m != nil { - return m.EntityValues - } - return nil -} - -func (m *BatchDeleteEntitiesRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// This message is a wrapper around a collection of entity types. -type EntityTypeBatch struct { - // A collection of entity types. - EntityTypes []*EntityType `protobuf:"bytes,1,rep,name=entity_types,json=entityTypes" json:"entity_types,omitempty"` -} - -func (m *EntityTypeBatch) Reset() { *m = EntityTypeBatch{} } -func (m *EntityTypeBatch) String() string { return proto.CompactTextString(m) } -func (*EntityTypeBatch) ProtoMessage() {} -func (*EntityTypeBatch) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{13} } - -func (m *EntityTypeBatch) GetEntityTypes() []*EntityType { - if m != nil { - return m.EntityTypes - } - return nil -} - -func init() { - proto.RegisterType((*EntityType)(nil), "google.cloud.dialogflow.v2beta1.EntityType") - proto.RegisterType((*EntityType_Entity)(nil), "google.cloud.dialogflow.v2beta1.EntityType.Entity") - proto.RegisterType((*ListEntityTypesRequest)(nil), "google.cloud.dialogflow.v2beta1.ListEntityTypesRequest") - proto.RegisterType((*ListEntityTypesResponse)(nil), "google.cloud.dialogflow.v2beta1.ListEntityTypesResponse") - proto.RegisterType((*GetEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.GetEntityTypeRequest") - proto.RegisterType((*CreateEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.CreateEntityTypeRequest") - proto.RegisterType((*UpdateEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.UpdateEntityTypeRequest") - proto.RegisterType((*DeleteEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.DeleteEntityTypeRequest") - proto.RegisterType((*BatchUpdateEntityTypesRequest)(nil), "google.cloud.dialogflow.v2beta1.BatchUpdateEntityTypesRequest") - proto.RegisterType((*BatchUpdateEntityTypesResponse)(nil), "google.cloud.dialogflow.v2beta1.BatchUpdateEntityTypesResponse") - proto.RegisterType((*BatchDeleteEntityTypesRequest)(nil), "google.cloud.dialogflow.v2beta1.BatchDeleteEntityTypesRequest") - proto.RegisterType((*BatchCreateEntitiesRequest)(nil), "google.cloud.dialogflow.v2beta1.BatchCreateEntitiesRequest") - proto.RegisterType((*BatchUpdateEntitiesRequest)(nil), "google.cloud.dialogflow.v2beta1.BatchUpdateEntitiesRequest") - proto.RegisterType((*BatchDeleteEntitiesRequest)(nil), "google.cloud.dialogflow.v2beta1.BatchDeleteEntitiesRequest") - proto.RegisterType((*EntityTypeBatch)(nil), "google.cloud.dialogflow.v2beta1.EntityTypeBatch") - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.EntityType_Kind", EntityType_Kind_name, EntityType_Kind_value) - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.EntityType_AutoExpansionMode", EntityType_AutoExpansionMode_name, EntityType_AutoExpansionMode_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for EntityTypes service - -type EntityTypesClient interface { - // Returns the list of all entity types in the specified agent. - ListEntityTypes(ctx context.Context, in *ListEntityTypesRequest, opts ...grpc.CallOption) (*ListEntityTypesResponse, error) - // Retrieves the specified entity type. - GetEntityType(ctx context.Context, in *GetEntityTypeRequest, opts ...grpc.CallOption) (*EntityType, error) - // Creates an entity type in the specified agent. - CreateEntityType(ctx context.Context, in *CreateEntityTypeRequest, opts ...grpc.CallOption) (*EntityType, error) - // Updates the specified entity type. - UpdateEntityType(ctx context.Context, in *UpdateEntityTypeRequest, opts ...grpc.CallOption) (*EntityType, error) - // Deletes the specified entity type. - DeleteEntityType(ctx context.Context, in *DeleteEntityTypeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Updates/Creates multiple entity types in the specified agent. - // - // Operation <response: - // [BatchUpdateEntityTypesResponse][google.cloud.dialogflow.v2beta1.BatchUpdateEntityTypesResponse], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - BatchUpdateEntityTypes(ctx context.Context, in *BatchUpdateEntityTypesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes entity types in the specified agent. - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - BatchDeleteEntityTypes(ctx context.Context, in *BatchDeleteEntityTypesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Creates multiple new entities in the specified entity type (extends the - // existing collection of entries). - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty]> - BatchCreateEntities(ctx context.Context, in *BatchCreateEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Updates entities in the specified entity type (replaces the existing - // collection of entries). - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - BatchUpdateEntities(ctx context.Context, in *BatchUpdateEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes entities in the specified entity type. - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - BatchDeleteEntities(ctx context.Context, in *BatchDeleteEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type entityTypesClient struct { - cc *grpc.ClientConn -} - -func NewEntityTypesClient(cc *grpc.ClientConn) EntityTypesClient { - return &entityTypesClient{cc} -} - -func (c *entityTypesClient) ListEntityTypes(ctx context.Context, in *ListEntityTypesRequest, opts ...grpc.CallOption) (*ListEntityTypesResponse, error) { - out := new(ListEntityTypesResponse) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/ListEntityTypes", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) GetEntityType(ctx context.Context, in *GetEntityTypeRequest, opts ...grpc.CallOption) (*EntityType, error) { - out := new(EntityType) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/GetEntityType", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) CreateEntityType(ctx context.Context, in *CreateEntityTypeRequest, opts ...grpc.CallOption) (*EntityType, error) { - out := new(EntityType) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/CreateEntityType", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) UpdateEntityType(ctx context.Context, in *UpdateEntityTypeRequest, opts ...grpc.CallOption) (*EntityType, error) { - out := new(EntityType) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/UpdateEntityType", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) DeleteEntityType(ctx context.Context, in *DeleteEntityTypeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/DeleteEntityType", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) BatchUpdateEntityTypes(ctx context.Context, in *BatchUpdateEntityTypesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchUpdateEntityTypes", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) BatchDeleteEntityTypes(ctx context.Context, in *BatchDeleteEntityTypesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchDeleteEntityTypes", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) BatchCreateEntities(ctx context.Context, in *BatchCreateEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchCreateEntities", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) BatchUpdateEntities(ctx context.Context, in *BatchUpdateEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchUpdateEntities", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *entityTypesClient) BatchDeleteEntities(ctx context.Context, in *BatchDeleteEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchDeleteEntities", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for EntityTypes service - -type EntityTypesServer interface { - // Returns the list of all entity types in the specified agent. - ListEntityTypes(context.Context, *ListEntityTypesRequest) (*ListEntityTypesResponse, error) - // Retrieves the specified entity type. - GetEntityType(context.Context, *GetEntityTypeRequest) (*EntityType, error) - // Creates an entity type in the specified agent. - CreateEntityType(context.Context, *CreateEntityTypeRequest) (*EntityType, error) - // Updates the specified entity type. - UpdateEntityType(context.Context, *UpdateEntityTypeRequest) (*EntityType, error) - // Deletes the specified entity type. - DeleteEntityType(context.Context, *DeleteEntityTypeRequest) (*google_protobuf2.Empty, error) - // Updates/Creates multiple entity types in the specified agent. - // - // Operation <response: - // [BatchUpdateEntityTypesResponse][google.cloud.dialogflow.v2beta1.BatchUpdateEntityTypesResponse], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - BatchUpdateEntityTypes(context.Context, *BatchUpdateEntityTypesRequest) (*google_longrunning.Operation, error) - // Deletes entity types in the specified agent. - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - BatchDeleteEntityTypes(context.Context, *BatchDeleteEntityTypesRequest) (*google_longrunning.Operation, error) - // Creates multiple new entities in the specified entity type (extends the - // existing collection of entries). - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty]> - BatchCreateEntities(context.Context, *BatchCreateEntitiesRequest) (*google_longrunning.Operation, error) - // Updates entities in the specified entity type (replaces the existing - // collection of entries). - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - BatchUpdateEntities(context.Context, *BatchUpdateEntitiesRequest) (*google_longrunning.Operation, error) - // Deletes entities in the specified entity type. - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty], - // metadata: [google.protobuf.Struct][google.protobuf.Struct]> - BatchDeleteEntities(context.Context, *BatchDeleteEntitiesRequest) (*google_longrunning.Operation, error) -} - -func RegisterEntityTypesServer(s *grpc.Server, srv EntityTypesServer) { - s.RegisterService(&_EntityTypes_serviceDesc, srv) -} - -func _EntityTypes_ListEntityTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListEntityTypesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).ListEntityTypes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/ListEntityTypes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).ListEntityTypes(ctx, req.(*ListEntityTypesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_GetEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEntityTypeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).GetEntityType(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/GetEntityType", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).GetEntityType(ctx, req.(*GetEntityTypeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_CreateEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateEntityTypeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).CreateEntityType(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/CreateEntityType", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).CreateEntityType(ctx, req.(*CreateEntityTypeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_UpdateEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateEntityTypeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).UpdateEntityType(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/UpdateEntityType", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).UpdateEntityType(ctx, req.(*UpdateEntityTypeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_DeleteEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteEntityTypeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).DeleteEntityType(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/DeleteEntityType", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).DeleteEntityType(ctx, req.(*DeleteEntityTypeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_BatchUpdateEntityTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchUpdateEntityTypesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).BatchUpdateEntityTypes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchUpdateEntityTypes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).BatchUpdateEntityTypes(ctx, req.(*BatchUpdateEntityTypesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_BatchDeleteEntityTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchDeleteEntityTypesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).BatchDeleteEntityTypes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchDeleteEntityTypes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).BatchDeleteEntityTypes(ctx, req.(*BatchDeleteEntityTypesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_BatchCreateEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchCreateEntitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).BatchCreateEntities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchCreateEntities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).BatchCreateEntities(ctx, req.(*BatchCreateEntitiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_BatchUpdateEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchUpdateEntitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).BatchUpdateEntities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchUpdateEntities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).BatchUpdateEntities(ctx, req.(*BatchUpdateEntitiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _EntityTypes_BatchDeleteEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchDeleteEntitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(EntityTypesServer).BatchDeleteEntities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.EntityTypes/BatchDeleteEntities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(EntityTypesServer).BatchDeleteEntities(ctx, req.(*BatchDeleteEntitiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _EntityTypes_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dialogflow.v2beta1.EntityTypes", - HandlerType: (*EntityTypesServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListEntityTypes", - Handler: _EntityTypes_ListEntityTypes_Handler, - }, - { - MethodName: "GetEntityType", - Handler: _EntityTypes_GetEntityType_Handler, - }, - { - MethodName: "CreateEntityType", - Handler: _EntityTypes_CreateEntityType_Handler, - }, - { - MethodName: "UpdateEntityType", - Handler: _EntityTypes_UpdateEntityType_Handler, - }, - { - MethodName: "DeleteEntityType", - Handler: _EntityTypes_DeleteEntityType_Handler, - }, - { - MethodName: "BatchUpdateEntityTypes", - Handler: _EntityTypes_BatchUpdateEntityTypes_Handler, - }, - { - MethodName: "BatchDeleteEntityTypes", - Handler: _EntityTypes_BatchDeleteEntityTypes_Handler, - }, - { - MethodName: "BatchCreateEntities", - Handler: _EntityTypes_BatchCreateEntities_Handler, - }, - { - MethodName: "BatchUpdateEntities", - Handler: _EntityTypes_BatchUpdateEntities_Handler, - }, - { - MethodName: "BatchDeleteEntities", - Handler: _EntityTypes_BatchDeleteEntities_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dialogflow/v2beta1/entity_type.proto", -} - -func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/entity_type.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 1236 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcf, 0x6e, 0xe3, 0xd4, - 0x17, 0x9e, 0x9b, 0xa6, 0x55, 0x7b, 0xd2, 0x4e, 0xd3, 0xdb, 0x4e, 0x1b, 0xa5, 0xd3, 0x5f, 0xfb, - 0x73, 0x25, 0x54, 0x15, 0x11, 0xcf, 0x64, 0xc4, 0xbf, 0x56, 0x05, 0xb5, 0x4d, 0x3a, 0x13, 0xa6, - 0x4d, 0x22, 0xb7, 0x1d, 0x01, 0x1b, 0xcb, 0x4d, 0x6e, 0x83, 0xa9, 0x73, 0xaf, 0x89, 0xed, 0x61, - 0x32, 0x68, 0x58, 0xf0, 0x06, 0x88, 0x1d, 0x62, 0x85, 0xd8, 0x00, 0xe2, 0x0d, 0x10, 0x1b, 0x56, - 0xb0, 0x42, 0xe2, 0x15, 0x10, 0xcf, 0x80, 0xc4, 0x06, 0xf9, 0xda, 0x8e, 0x1d, 0xc7, 0xc1, 0x36, - 0xcc, 0x8c, 0xd8, 0xe5, 0xfe, 0x39, 0xe7, 0x7c, 0xdf, 0x39, 0xe7, 0xde, 0xef, 0x3a, 0x70, 0xbb, - 0xc3, 0x58, 0x47, 0x23, 0x62, 0x4b, 0x63, 0x56, 0x5b, 0x6c, 0xab, 0x8a, 0xc6, 0x3a, 0x97, 0x1a, - 0xfb, 0x50, 0x7c, 0x58, 0xbe, 0x20, 0xa6, 0x72, 0x5b, 0x24, 0xd4, 0x54, 0xcd, 0xbe, 0x6c, 0xf6, - 0x75, 0x52, 0xd2, 0x7b, 0xcc, 0x64, 0x78, 0xdd, 0x31, 0x29, 0x71, 0x93, 0x92, 0x6f, 0x52, 0x72, - 0x4d, 0x8a, 0x37, 0x5d, 0x9f, 0x8a, 0xae, 0x8a, 0x0a, 0xa5, 0xcc, 0x54, 0x4c, 0x95, 0x51, 0xc3, - 0x31, 0x2f, 0x6e, 0xba, 0xab, 0x1a, 0xa3, 0x9d, 0x9e, 0x45, 0xa9, 0x4a, 0x3b, 0x22, 0xd3, 0x49, - 0x6f, 0x68, 0xd3, 0xaa, 0xbb, 0x89, 0x8f, 0x2e, 0xac, 0x4b, 0x91, 0x74, 0x75, 0xb3, 0xef, 0x2e, - 0x6e, 0x84, 0x17, 0x2f, 0x55, 0xa2, 0xb5, 0xe5, 0xae, 0x62, 0x5c, 0xb9, 0x3b, 0x6e, 0x86, 0x77, - 0x18, 0x66, 0xcf, 0x6a, 0x99, 0xce, 0xaa, 0xf0, 0x79, 0x16, 0xa0, 0xca, 0x69, 0x9d, 0xf5, 0x75, - 0x82, 0x31, 0x64, 0xa9, 0xd2, 0x25, 0x05, 0xb4, 0x81, 0xb6, 0x66, 0x24, 0xfe, 0x1b, 0xff, 0x1f, - 0x66, 0xdb, 0xaa, 0xa1, 0x6b, 0x4a, 0x5f, 0xe6, 0x6b, 0x19, 0xbe, 0x96, 0x73, 0xe7, 0xea, 0xf6, - 0x96, 0x0a, 0x64, 0xaf, 0x54, 0xda, 0x2e, 0x4c, 0x6c, 0xa0, 0xad, 0xeb, 0xe5, 0x5b, 0xa5, 0x98, - 0xac, 0x94, 0xfc, 0x88, 0xa5, 0xfb, 0x2a, 0x6d, 0x4b, 0xdc, 0x1a, 0x77, 0x61, 0x51, 0xb1, 0x4c, - 0x26, 0x93, 0x47, 0xba, 0x42, 0x0d, 0x95, 0x51, 0xb9, 0xcb, 0xda, 0xa4, 0x90, 0xe5, 0x4e, 0xf7, - 0xd2, 0x38, 0xdd, 0xb7, 0x4c, 0x56, 0xf5, 0xbc, 0x9c, 0xb0, 0x36, 0x91, 0x16, 0x94, 0xf0, 0x14, - 0xae, 0xc3, 0x34, 0x2f, 0xa8, 0x4a, 0x8c, 0xc2, 0xd4, 0xc6, 0xc4, 0x56, 0xae, 0x5c, 0x4e, 0x13, - 0xc3, 0xf9, 0x29, 0x0d, 0x7c, 0x14, 0x77, 0x60, 0xca, 0x99, 0xc3, 0x4b, 0x30, 0xf9, 0x50, 0xd1, - 0x2c, 0x2f, 0x8d, 0xce, 0x00, 0x17, 0x61, 0xda, 0xe8, 0x53, 0x46, 0xfb, 0x5d, 0xa3, 0x90, 0xd9, - 0x98, 0xd8, 0x9a, 0x91, 0x06, 0x63, 0xe1, 0x75, 0xc8, 0xda, 0x89, 0xc0, 0x4b, 0x90, 0xbf, 0x5f, - 0xab, 0x57, 0xe4, 0xf3, 0xfa, 0x69, 0xb3, 0x7a, 0x58, 0x3b, 0xaa, 0x55, 0x2b, 0xf9, 0x6b, 0x78, - 0x16, 0xa6, 0xf9, 0xec, 0xc9, 0x7e, 0x33, 0x8f, 0xf0, 0x1c, 0xcc, 0xf0, 0xd1, 0x71, 0xed, 0xf4, - 0x2c, 0x9f, 0x11, 0xde, 0x81, 0x85, 0x11, 0xba, 0x78, 0x13, 0xd6, 0xf7, 0xcf, 0xcf, 0x1a, 0x72, - 0xf5, 0xed, 0xe6, 0x7e, 0xfd, 0xb4, 0xd6, 0xa8, 0xcb, 0x27, 0x8d, 0x4a, 0x35, 0xe4, 0x76, 0x1d, - 0x56, 0xa3, 0x36, 0x55, 0xaa, 0x47, 0xfb, 0xe7, 0xc7, 0x67, 0x79, 0x24, 0x7c, 0x8a, 0x60, 0xf9, - 0x58, 0x35, 0x4c, 0x9f, 0xb5, 0x21, 0x91, 0x0f, 0x2c, 0x62, 0x98, 0x78, 0x19, 0xa6, 0x74, 0xa5, - 0x47, 0xa8, 0xe9, 0x72, 0x74, 0x47, 0x78, 0x13, 0xe6, 0x34, 0x85, 0x76, 0x2c, 0xa5, 0x43, 0xe4, - 0x96, 0x5d, 0x3d, 0xa7, 0x5b, 0x66, 0xbd, 0xc9, 0x43, 0x1b, 0xdd, 0x2a, 0xcc, 0xe8, 0xf6, 0x06, - 0x43, 0x7d, 0x4c, 0x78, 0xcf, 0x4c, 0x4a, 0xd3, 0xf6, 0xc4, 0xa9, 0xfa, 0x98, 0xe0, 0x35, 0x00, - 0xbe, 0x68, 0xb2, 0x2b, 0x42, 0x79, 0xf1, 0x67, 0x24, 0xbe, 0xfd, 0xcc, 0x9e, 0xb0, 0x31, 0xad, - 0x8c, 0x60, 0x32, 0x74, 0x46, 0x0d, 0xbb, 0xa2, 0xb3, 0x81, 0x23, 0x6a, 0x14, 0x10, 0xaf, 0xea, - 0x8b, 0x29, 0xaa, 0x2a, 0xe5, 0x88, 0xef, 0x17, 0xbf, 0x00, 0xf3, 0x94, 0x3c, 0x32, 0xe5, 0x00, - 0x1e, 0x87, 0xce, 0x9c, 0x3d, 0xdd, 0x1c, 0x60, 0x6a, 0xc0, 0xd2, 0x5d, 0x12, 0x40, 0xe4, 0x25, - 0x29, 0xea, 0x34, 0x25, 0x49, 0x90, 0xf0, 0x15, 0x82, 0x95, 0xc3, 0x1e, 0x51, 0x4c, 0x32, 0xea, - 0x74, 0x5c, 0xe6, 0x8f, 0x21, 0x17, 0x20, 0xcf, 0xdd, 0xa6, 0xe4, 0x0e, 0x3e, 0xf7, 0x51, 0x98, - 0x13, 0x11, 0x30, 0x7f, 0x42, 0xb0, 0x72, 0xae, 0xb7, 0x23, 0x61, 0x86, 0xe0, 0xa0, 0xa7, 0x0c, - 0x27, 0xaa, 0xad, 0x76, 0x21, 0x67, 0x71, 0x34, 0xfc, 0xfa, 0xe3, 0x88, 0x73, 0xe5, 0xa2, 0x17, - 0xd2, 0xbb, 0xff, 0x4a, 0x47, 0xf6, 0x0d, 0x79, 0xa2, 0x18, 0x57, 0x12, 0x38, 0xdb, 0xed, 0xdf, - 0xc2, 0x4b, 0xb0, 0x52, 0x21, 0x1a, 0x89, 0xa2, 0x12, 0x51, 0x46, 0xe1, 0x97, 0x0c, 0xac, 0x1d, - 0x28, 0x66, 0xeb, 0xbd, 0x30, 0xff, 0xd8, 0x13, 0x72, 0x07, 0x6e, 0x04, 0x12, 0x23, 0x5f, 0xd8, - 0x4e, 0x64, 0xab, 0xa7, 0x3a, 0x94, 0xee, 0x5d, 0x93, 0xb0, 0xcf, 0xdb, 0x89, 0xd0, 0x53, 0xf1, - 0x15, 0x14, 0x46, 0x8d, 0x54, 0xaa, 0xa9, 0x94, 0xb8, 0x3c, 0xd3, 0x5c, 0xba, 0xdc, 0xed, 0xbd, - 0x6b, 0xd2, 0x8d, 0x50, 0xa4, 0x1a, 0x77, 0x38, 0x9a, 0xec, 0x6c, 0x7c, 0xb2, 0x27, 0xd3, 0x24, - 0xfb, 0x60, 0x11, 0x16, 0x46, 0xe8, 0x08, 0x3a, 0xfc, 0x6f, 0x5c, 0x46, 0x9f, 0xcd, 0xf9, 0x16, - 0x5a, 0x6e, 0x0d, 0xc3, 0x85, 0x8f, 0xad, 0xe1, 0xf6, 0x30, 0x7e, 0xbb, 0x23, 0xbc, 0x3b, 0x7d, - 0xde, 0x0f, 0x60, 0x4b, 0xa3, 0x21, 0x7c, 0x8d, 0xa0, 0xc8, 0xa3, 0x04, 0x0e, 0xb4, 0x1a, 0x1f, - 0x22, 0xa8, 0x4e, 0x99, 0x7f, 0xaf, 0x4e, 0xc9, 0x0e, 0xf4, 0xef, 0x1e, 0xd6, 0x40, 0x0d, 0xfe, - 0xa3, 0x58, 0xc3, 0x0d, 0x98, 0x4d, 0x75, 0xda, 0x3f, 0x76, 0x79, 0x06, 0x2a, 0xaf, 0x26, 0x12, - 0x37, 0xb7, 0xec, 0x5c, 0xd1, 0xbd, 0x92, 0xbb, 0x4d, 0xf9, 0x80, 0xcf, 0x25, 0x4b, 0xb4, 0x02, - 0xf3, 0xa1, 0xe3, 0xf8, 0xb4, 0x9b, 0xbb, 0xfc, 0xe7, 0x75, 0xc8, 0x05, 0x5a, 0x1a, 0x7f, 0x8f, - 0x60, 0x3e, 0x24, 0x9c, 0xf8, 0xd5, 0x58, 0xef, 0xd1, 0xf2, 0x5f, 0x7c, 0x2d, 0xbd, 0xa1, 0x73, - 0x86, 0x85, 0x57, 0x3e, 0xf9, 0xf5, 0xb7, 0xcf, 0x32, 0xb7, 0x70, 0x69, 0xf0, 0xaa, 0xfe, 0xc8, - 0xc9, 0xee, 0x9e, 0xde, 0x63, 0xef, 0x93, 0x96, 0x69, 0x88, 0xdb, 0xa2, 0xd2, 0x21, 0xd4, 0x7c, - 0x22, 0x06, 0xb5, 0xf8, 0x5b, 0x04, 0x73, 0x43, 0x22, 0x8b, 0x5f, 0x8e, 0xc5, 0x10, 0x25, 0xca, - 0xc5, 0x34, 0x19, 0x8d, 0x42, 0x6b, 0x1f, 0xf6, 0x11, 0xac, 0x41, 0xa8, 0xe2, 0xf6, 0x13, 0xfc, - 0x03, 0x82, 0x7c, 0x58, 0xc0, 0x71, 0x7c, 0xd2, 0xc6, 0x68, 0x7e, 0x3a, 0xcc, 0x87, 0x1c, 0xf3, - 0x9e, 0x90, 0x32, 0xc3, 0x3b, 0x41, 0xbd, 0xc6, 0x3f, 0x23, 0xc8, 0x87, 0x2f, 0xe2, 0x04, 0x04, - 0xc6, 0xbc, 0x06, 0xd2, 0x11, 0x68, 0x70, 0x02, 0xb5, 0xf2, 0x8e, 0x4f, 0x20, 0xf8, 0xe5, 0x95, - 0xa4, 0x00, 0xc3, 0x64, 0xbe, 0x40, 0x90, 0x0f, 0xdf, 0xf1, 0x09, 0xc8, 0x8c, 0x79, 0x0f, 0x14, - 0x97, 0x47, 0x2e, 0x99, 0xaa, 0xfd, 0x45, 0xe6, 0x35, 0xcb, 0xf6, 0x3f, 0x68, 0x96, 0xe5, 0x68, - 0xe5, 0xc3, 0x6f, 0xc4, 0x82, 0xfc, 0xdb, 0x47, 0x48, 0x71, 0xcd, 0xb3, 0x0f, 0x7c, 0x61, 0x96, - 0x1a, 0xde, 0x17, 0xa6, 0x50, 0xe5, 0x88, 0xdf, 0x14, 0x76, 0x52, 0xb6, 0xca, 0x85, 0x1f, 0x74, - 0x07, 0x6d, 0xfb, 0x04, 0x46, 0x84, 0x34, 0x29, 0x81, 0x71, 0x0a, 0xfc, 0x4c, 0x09, 0x38, 0x41, - 0x6d, 0x02, 0x3f, 0x22, 0x58, 0x8c, 0xd0, 0x68, 0xbc, 0x9b, 0x0c, 0x7d, 0xa4, 0xb2, 0xc7, 0x41, - 0x6f, 0x72, 0xe8, 0x6f, 0x09, 0xd5, 0x58, 0xe8, 0xa1, 0x7e, 0x11, 0x3d, 0x9d, 0x74, 0x58, 0x38, - 0xc1, 0x87, 0x58, 0x0c, 0xab, 0x77, 0x52, 0x16, 0x91, 0x9a, 0xff, 0xbc, 0x58, 0xf8, 0xcd, 0x34, - 0x60, 0x31, 0xac, 0xcd, 0x49, 0x59, 0x44, 0x2a, 0xfa, 0xf3, 0x62, 0x31, 0xe8, 0xa8, 0x83, 0xef, - 0x10, 0x6c, 0xb6, 0x58, 0x37, 0x0e, 0xf3, 0x41, 0xe0, 0x19, 0xd0, 0xb4, 0x6f, 0x93, 0x26, 0x7a, - 0xb7, 0xe6, 0xda, 0x74, 0x98, 0xfd, 0x64, 0x28, 0xb1, 0x5e, 0x47, 0xec, 0x10, 0xca, 0xef, 0x1a, - 0xd1, 0x59, 0x52, 0x74, 0xd5, 0x18, 0xfb, 0x2f, 0xd5, 0xae, 0x3f, 0xf5, 0x07, 0x42, 0x5f, 0x66, - 0x32, 0x95, 0xa3, 0x6f, 0x32, 0xeb, 0x77, 0x1d, 0x9f, 0x87, 0x1c, 0x47, 0xc5, 0xc7, 0xf1, 0xc0, - 0x31, 0xba, 0x98, 0xe2, 0xfe, 0xef, 0xfc, 0x15, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x5f, 0x36, 0x09, - 0x04, 0x13, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/intent.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/intent.pb.go deleted file mode 100644 index b343de04..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/intent.pb.go +++ /dev/null @@ -1,2552 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dialogflow/v2beta1/intent.proto - -package dialogflow - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf4 "github.com/golang/protobuf/ptypes/struct" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Represents the options for views of an intent. -// An intent can be a sizable object. Therefore, we provide a resource view that -// does not return training phrases in the response by default. -type IntentView int32 - -const ( - // Training phrases field is not populated in the response. - IntentView_INTENT_VIEW_UNSPECIFIED IntentView = 0 - // All fields are populated. - IntentView_INTENT_VIEW_FULL IntentView = 1 -) - -var IntentView_name = map[int32]string{ - 0: "INTENT_VIEW_UNSPECIFIED", - 1: "INTENT_VIEW_FULL", -} -var IntentView_value = map[string]int32{ - "INTENT_VIEW_UNSPECIFIED": 0, - "INTENT_VIEW_FULL": 1, -} - -func (x IntentView) String() string { - return proto.EnumName(IntentView_name, int32(x)) -} -func (IntentView) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -// Represents the different states that webhooks can be in. -type Intent_WebhookState int32 - -const ( - // Webhook is disabled in the agent and in the intent. - Intent_WEBHOOK_STATE_UNSPECIFIED Intent_WebhookState = 0 - // Webhook is enabled in the agent and in the intent. - Intent_WEBHOOK_STATE_ENABLED Intent_WebhookState = 1 - // Webhook is enabled in the agent and in the intent. Also, each slot - // filling prompt is forwarded to the webhook. - Intent_WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING Intent_WebhookState = 2 -) - -var Intent_WebhookState_name = map[int32]string{ - 0: "WEBHOOK_STATE_UNSPECIFIED", - 1: "WEBHOOK_STATE_ENABLED", - 2: "WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING", -} -var Intent_WebhookState_value = map[string]int32{ - "WEBHOOK_STATE_UNSPECIFIED": 0, - "WEBHOOK_STATE_ENABLED": 1, - "WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING": 2, -} - -func (x Intent_WebhookState) String() string { - return proto.EnumName(Intent_WebhookState_name, int32(x)) -} -func (Intent_WebhookState) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -// Represents different types of training phrases. -type Intent_TrainingPhrase_Type int32 - -const ( - // Not specified. This value should never be used. - Intent_TrainingPhrase_TYPE_UNSPECIFIED Intent_TrainingPhrase_Type = 0 - // Examples do not contain @-prefixed entity type names, but example parts - // can be annotated with entity types. - Intent_TrainingPhrase_EXAMPLE Intent_TrainingPhrase_Type = 1 - // Templates are not annotated with entity types, but they can contain - // @-prefixed entity type names as substrings. - Intent_TrainingPhrase_TEMPLATE Intent_TrainingPhrase_Type = 2 -) - -var Intent_TrainingPhrase_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "EXAMPLE", - 2: "TEMPLATE", -} -var Intent_TrainingPhrase_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "EXAMPLE": 1, - "TEMPLATE": 2, -} - -func (x Intent_TrainingPhrase_Type) String() string { - return proto.EnumName(Intent_TrainingPhrase_Type_name, int32(x)) -} -func (Intent_TrainingPhrase_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 0, 0} -} - -// Represents different platforms that a rich message can be intended for. -type Intent_Message_Platform int32 - -const ( - // Not specified. - Intent_Message_PLATFORM_UNSPECIFIED Intent_Message_Platform = 0 - // Facebook. - Intent_Message_FACEBOOK Intent_Message_Platform = 1 - // Slack. - Intent_Message_SLACK Intent_Message_Platform = 2 - // Telegram. - Intent_Message_TELEGRAM Intent_Message_Platform = 3 - // Kik. - Intent_Message_KIK Intent_Message_Platform = 4 - // Skype. - Intent_Message_SKYPE Intent_Message_Platform = 5 - // Line. - Intent_Message_LINE Intent_Message_Platform = 6 - // Viber. - Intent_Message_VIBER Intent_Message_Platform = 7 - // Actions on Google. - Intent_Message_ACTIONS_ON_GOOGLE Intent_Message_Platform = 8 -) - -var Intent_Message_Platform_name = map[int32]string{ - 0: "PLATFORM_UNSPECIFIED", - 1: "FACEBOOK", - 2: "SLACK", - 3: "TELEGRAM", - 4: "KIK", - 5: "SKYPE", - 6: "LINE", - 7: "VIBER", - 8: "ACTIONS_ON_GOOGLE", -} -var Intent_Message_Platform_value = map[string]int32{ - "PLATFORM_UNSPECIFIED": 0, - "FACEBOOK": 1, - "SLACK": 2, - "TELEGRAM": 3, - "KIK": 4, - "SKYPE": 5, - "LINE": 6, - "VIBER": 7, - "ACTIONS_ON_GOOGLE": 8, -} - -func (x Intent_Message_Platform) String() string { - return proto.EnumName(Intent_Message_Platform_name, int32(x)) -} -func (Intent_Message_Platform) EnumDescriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 0} -} - -// Represents an intent. -// Intents convert a number of user expressions or patterns into an action. An -// action is an extraction of a user command or sentence semantics. -type Intent struct { - // Required for all methods except `create` (`create` populates the name - // automatically. - // The unique identifier of this intent. - // Format: `projects/<Project ID>/agent/intents/<Intent ID>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The name of this intent. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Required. Indicates whether webhooks are enabled for the intent. - WebhookState Intent_WebhookState `protobuf:"varint,6,opt,name=webhook_state,json=webhookState,enum=google.cloud.dialogflow.v2beta1.Intent_WebhookState" json:"webhook_state,omitempty"` - // Optional. The priority of this intent. Higher numbers represent higher - // priorities. Zero or negative numbers mean that the intent is disabled. - Priority int32 `protobuf:"varint,3,opt,name=priority" json:"priority,omitempty"` - // Optional. Indicates whether this is a fallback intent. - IsFallback bool `protobuf:"varint,4,opt,name=is_fallback,json=isFallback" json:"is_fallback,omitempty"` - // Optional. Indicates whether Machine Learning is enabled for the intent. - // Note: If `ml_enabled` setting is set to false, then this intent is not - // taken into account during inference in `ML ONLY` match mode. Also, - // auto-markup in the UI is turned off. - MlEnabled bool `protobuf:"varint,5,opt,name=ml_enabled,json=mlEnabled" json:"ml_enabled,omitempty"` - // Optional. The list of context names required for this intent to be - // triggered. - // Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`. - InputContextNames []string `protobuf:"bytes,7,rep,name=input_context_names,json=inputContextNames" json:"input_context_names,omitempty"` - // Optional. The collection of event names that trigger the intent. - // If the collection of input contexts is not empty, all of the contexts must - // be present in the active user session for an event to trigger this intent. - Events []string `protobuf:"bytes,8,rep,name=events" json:"events,omitempty"` - // Optional. The collection of examples/templates that the agent is - // trained on. - TrainingPhrases []*Intent_TrainingPhrase `protobuf:"bytes,9,rep,name=training_phrases,json=trainingPhrases" json:"training_phrases,omitempty"` - // Optional. The name of the action associated with the intent. - Action string `protobuf:"bytes,10,opt,name=action" json:"action,omitempty"` - // Optional. The collection of contexts that are activated when the intent - // is matched. Context messages in this collection should not set the - // parameters field. Setting the `lifespan_count` to 0 will reset the context - // when the intent is matched. - // Format: `projects/<Project ID>/agent/sessions/-/contexts/<Context ID>`. - OutputContexts []*Context `protobuf:"bytes,11,rep,name=output_contexts,json=outputContexts" json:"output_contexts,omitempty"` - // Optional. Indicates whether to delete all contexts in the current - // session when this intent is matched. - ResetContexts bool `protobuf:"varint,12,opt,name=reset_contexts,json=resetContexts" json:"reset_contexts,omitempty"` - // Optional. The collection of parameters associated with the intent. - Parameters []*Intent_Parameter `protobuf:"bytes,13,rep,name=parameters" json:"parameters,omitempty"` - // Optional. The collection of rich messages corresponding to the - // `Response` field in API.AI console. - Messages []*Intent_Message `protobuf:"bytes,14,rep,name=messages" json:"messages,omitempty"` - // Optional. The list of platforms for which the first response will be - // taken from among the messages assigned to the DEFAULT_PLATFORM. - DefaultResponsePlatforms []Intent_Message_Platform `protobuf:"varint,15,rep,packed,name=default_response_platforms,json=defaultResponsePlatforms,enum=google.cloud.dialogflow.v2beta1.Intent_Message_Platform" json:"default_response_platforms,omitempty"` - // The unique identifier of the root intent in the chain of followup intents. - // It identifies the correct followup intents chain for this intent. - // Format: `projects/<Project ID>/agent/intents/<Intent ID>`. - RootFollowupIntentName string `protobuf:"bytes,16,opt,name=root_followup_intent_name,json=rootFollowupIntentName" json:"root_followup_intent_name,omitempty"` - // The unique identifier of the parent intent in the chain of followup - // intents. - // It identifies the parent followup intent. - // Format: `projects/<Project ID>/agent/intents/<Intent ID>`. - ParentFollowupIntentName string `protobuf:"bytes,17,opt,name=parent_followup_intent_name,json=parentFollowupIntentName" json:"parent_followup_intent_name,omitempty"` - // Optional. Collection of information about all followup intents that have - // name of this intent as a root_name. - FollowupIntentInfo []*Intent_FollowupIntentInfo `protobuf:"bytes,18,rep,name=followup_intent_info,json=followupIntentInfo" json:"followup_intent_info,omitempty"` -} - -func (m *Intent) Reset() { *m = Intent{} } -func (m *Intent) String() string { return proto.CompactTextString(m) } -func (*Intent) ProtoMessage() {} -func (*Intent) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *Intent) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Intent) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Intent) GetWebhookState() Intent_WebhookState { - if m != nil { - return m.WebhookState - } - return Intent_WEBHOOK_STATE_UNSPECIFIED -} - -func (m *Intent) GetPriority() int32 { - if m != nil { - return m.Priority - } - return 0 -} - -func (m *Intent) GetIsFallback() bool { - if m != nil { - return m.IsFallback - } - return false -} - -func (m *Intent) GetMlEnabled() bool { - if m != nil { - return m.MlEnabled - } - return false -} - -func (m *Intent) GetInputContextNames() []string { - if m != nil { - return m.InputContextNames - } - return nil -} - -func (m *Intent) GetEvents() []string { - if m != nil { - return m.Events - } - return nil -} - -func (m *Intent) GetTrainingPhrases() []*Intent_TrainingPhrase { - if m != nil { - return m.TrainingPhrases - } - return nil -} - -func (m *Intent) GetAction() string { - if m != nil { - return m.Action - } - return "" -} - -func (m *Intent) GetOutputContexts() []*Context { - if m != nil { - return m.OutputContexts - } - return nil -} - -func (m *Intent) GetResetContexts() bool { - if m != nil { - return m.ResetContexts - } - return false -} - -func (m *Intent) GetParameters() []*Intent_Parameter { - if m != nil { - return m.Parameters - } - return nil -} - -func (m *Intent) GetMessages() []*Intent_Message { - if m != nil { - return m.Messages - } - return nil -} - -func (m *Intent) GetDefaultResponsePlatforms() []Intent_Message_Platform { - if m != nil { - return m.DefaultResponsePlatforms - } - return nil -} - -func (m *Intent) GetRootFollowupIntentName() string { - if m != nil { - return m.RootFollowupIntentName - } - return "" -} - -func (m *Intent) GetParentFollowupIntentName() string { - if m != nil { - return m.ParentFollowupIntentName - } - return "" -} - -func (m *Intent) GetFollowupIntentInfo() []*Intent_FollowupIntentInfo { - if m != nil { - return m.FollowupIntentInfo - } - return nil -} - -// Represents an example or template that the agent is trained on. -type Intent_TrainingPhrase struct { - // Required. The unique identifier of this training phrase. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The type of the training phrase. - Type Intent_TrainingPhrase_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.dialogflow.v2beta1.Intent_TrainingPhrase_Type" json:"type,omitempty"` - // Required. The collection of training phrase parts (can be annotated). - // Fields: `entity_type`, `alias` and `user_defined` should be populated - // only for the annotated parts of the training phrase. - Parts []*Intent_TrainingPhrase_Part `protobuf:"bytes,3,rep,name=parts" json:"parts,omitempty"` - // Optional. Indicates how many times this example or template was added to - // the intent. Each time a developer adds an existing sample by editing an - // intent or training, this counter is increased. - TimesAddedCount int32 `protobuf:"varint,4,opt,name=times_added_count,json=timesAddedCount" json:"times_added_count,omitempty"` -} - -func (m *Intent_TrainingPhrase) Reset() { *m = Intent_TrainingPhrase{} } -func (m *Intent_TrainingPhrase) String() string { return proto.CompactTextString(m) } -func (*Intent_TrainingPhrase) ProtoMessage() {} -func (*Intent_TrainingPhrase) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -func (m *Intent_TrainingPhrase) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Intent_TrainingPhrase) GetType() Intent_TrainingPhrase_Type { - if m != nil { - return m.Type - } - return Intent_TrainingPhrase_TYPE_UNSPECIFIED -} - -func (m *Intent_TrainingPhrase) GetParts() []*Intent_TrainingPhrase_Part { - if m != nil { - return m.Parts - } - return nil -} - -func (m *Intent_TrainingPhrase) GetTimesAddedCount() int32 { - if m != nil { - return m.TimesAddedCount - } - return 0 -} - -// Represents a part of a training phrase. -type Intent_TrainingPhrase_Part struct { - // Required. The text corresponding to the example or template, - // if there are no annotations. For - // annotated examples, it is the text for one of the example's parts. - Text string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // Optional. The entity type name prefixed with `@`. This field is - // required for the annotated part of the text and applies only to - // examples. - EntityType string `protobuf:"bytes,2,opt,name=entity_type,json=entityType" json:"entity_type,omitempty"` - // Optional. The parameter name for the value extracted from the - // annotated part of the example. - Alias string `protobuf:"bytes,3,opt,name=alias" json:"alias,omitempty"` - // Optional. Indicates whether the text was manually annotated by the - // developer. - UserDefined bool `protobuf:"varint,4,opt,name=user_defined,json=userDefined" json:"user_defined,omitempty"` -} - -func (m *Intent_TrainingPhrase_Part) Reset() { *m = Intent_TrainingPhrase_Part{} } -func (m *Intent_TrainingPhrase_Part) String() string { return proto.CompactTextString(m) } -func (*Intent_TrainingPhrase_Part) ProtoMessage() {} -func (*Intent_TrainingPhrase_Part) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 0, 0} -} - -func (m *Intent_TrainingPhrase_Part) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -func (m *Intent_TrainingPhrase_Part) GetEntityType() string { - if m != nil { - return m.EntityType - } - return "" -} - -func (m *Intent_TrainingPhrase_Part) GetAlias() string { - if m != nil { - return m.Alias - } - return "" -} - -func (m *Intent_TrainingPhrase_Part) GetUserDefined() bool { - if m != nil { - return m.UserDefined - } - return false -} - -// Represents intent parameters. -type Intent_Parameter struct { - // The unique identifier of this parameter. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The name of the parameter. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Optional. The definition of the parameter value. It can be: - // - a constant string, - // - a parameter value defined as `$parameter_name`, - // - an original parameter value defined as `$parameter_name.original`, - // - a parameter value from some context defined as - // `#context_name.parameter_name`. - Value string `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` - // Optional. The default value to use when the `value` yields an empty - // result. - // Default values can be extracted from contexts by using the following - // syntax: `#context_name.parameter_name`. - DefaultValue string `protobuf:"bytes,4,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"` - // Optional. The name of the entity type, prefixed with `@`, that - // describes values of the parameter. If the parameter is - // required, this must be provided. - EntityTypeDisplayName string `protobuf:"bytes,5,opt,name=entity_type_display_name,json=entityTypeDisplayName" json:"entity_type_display_name,omitempty"` - // Optional. Indicates whether the parameter is required. That is, - // whether the intent cannot be completed without collecting the parameter - // value. - Mandatory bool `protobuf:"varint,6,opt,name=mandatory" json:"mandatory,omitempty"` - // Optional. The collection of prompts that the agent can present to the - // user in order to collect value for the parameter. - Prompts []string `protobuf:"bytes,7,rep,name=prompts" json:"prompts,omitempty"` - // Optional. Indicates whether the parameter represents a list of values. - IsList bool `protobuf:"varint,8,opt,name=is_list,json=isList" json:"is_list,omitempty"` -} - -func (m *Intent_Parameter) Reset() { *m = Intent_Parameter{} } -func (m *Intent_Parameter) String() string { return proto.CompactTextString(m) } -func (*Intent_Parameter) ProtoMessage() {} -func (*Intent_Parameter) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} } - -func (m *Intent_Parameter) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Intent_Parameter) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Intent_Parameter) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *Intent_Parameter) GetDefaultValue() string { - if m != nil { - return m.DefaultValue - } - return "" -} - -func (m *Intent_Parameter) GetEntityTypeDisplayName() string { - if m != nil { - return m.EntityTypeDisplayName - } - return "" -} - -func (m *Intent_Parameter) GetMandatory() bool { - if m != nil { - return m.Mandatory - } - return false -} - -func (m *Intent_Parameter) GetPrompts() []string { - if m != nil { - return m.Prompts - } - return nil -} - -func (m *Intent_Parameter) GetIsList() bool { - if m != nil { - return m.IsList - } - return false -} - -// Corresponds to the `Response` field in API.AI console. -type Intent_Message struct { - // Required. The rich response message. - // - // Types that are valid to be assigned to Message: - // *Intent_Message_Text_ - // *Intent_Message_Image_ - // *Intent_Message_QuickReplies_ - // *Intent_Message_Card_ - // *Intent_Message_Payload - // *Intent_Message_SimpleResponses_ - // *Intent_Message_BasicCard_ - // *Intent_Message_Suggestions_ - // *Intent_Message_LinkOutSuggestion_ - // *Intent_Message_ListSelect_ - // *Intent_Message_CarouselSelect_ - Message isIntent_Message_Message `protobuf_oneof:"message"` - // Optional. The platform that this message is intended for. - Platform Intent_Message_Platform `protobuf:"varint,6,opt,name=platform,enum=google.cloud.dialogflow.v2beta1.Intent_Message_Platform" json:"platform,omitempty"` -} - -func (m *Intent_Message) Reset() { *m = Intent_Message{} } -func (m *Intent_Message) String() string { return proto.CompactTextString(m) } -func (*Intent_Message) ProtoMessage() {} -func (*Intent_Message) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2} } - -type isIntent_Message_Message interface { - isIntent_Message_Message() -} - -type Intent_Message_Text_ struct { - Text *Intent_Message_Text `protobuf:"bytes,1,opt,name=text,oneof"` -} -type Intent_Message_Image_ struct { - Image *Intent_Message_Image `protobuf:"bytes,2,opt,name=image,oneof"` -} -type Intent_Message_QuickReplies_ struct { - QuickReplies *Intent_Message_QuickReplies `protobuf:"bytes,3,opt,name=quick_replies,json=quickReplies,oneof"` -} -type Intent_Message_Card_ struct { - Card *Intent_Message_Card `protobuf:"bytes,4,opt,name=card,oneof"` -} -type Intent_Message_Payload struct { - Payload *google_protobuf4.Struct `protobuf:"bytes,5,opt,name=payload,oneof"` -} -type Intent_Message_SimpleResponses_ struct { - SimpleResponses *Intent_Message_SimpleResponses `protobuf:"bytes,7,opt,name=simple_responses,json=simpleResponses,oneof"` -} -type Intent_Message_BasicCard_ struct { - BasicCard *Intent_Message_BasicCard `protobuf:"bytes,8,opt,name=basic_card,json=basicCard,oneof"` -} -type Intent_Message_Suggestions_ struct { - Suggestions *Intent_Message_Suggestions `protobuf:"bytes,9,opt,name=suggestions,oneof"` -} -type Intent_Message_LinkOutSuggestion_ struct { - LinkOutSuggestion *Intent_Message_LinkOutSuggestion `protobuf:"bytes,10,opt,name=link_out_suggestion,json=linkOutSuggestion,oneof"` -} -type Intent_Message_ListSelect_ struct { - ListSelect *Intent_Message_ListSelect `protobuf:"bytes,11,opt,name=list_select,json=listSelect,oneof"` -} -type Intent_Message_CarouselSelect_ struct { - CarouselSelect *Intent_Message_CarouselSelect `protobuf:"bytes,12,opt,name=carousel_select,json=carouselSelect,oneof"` -} - -func (*Intent_Message_Text_) isIntent_Message_Message() {} -func (*Intent_Message_Image_) isIntent_Message_Message() {} -func (*Intent_Message_QuickReplies_) isIntent_Message_Message() {} -func (*Intent_Message_Card_) isIntent_Message_Message() {} -func (*Intent_Message_Payload) isIntent_Message_Message() {} -func (*Intent_Message_SimpleResponses_) isIntent_Message_Message() {} -func (*Intent_Message_BasicCard_) isIntent_Message_Message() {} -func (*Intent_Message_Suggestions_) isIntent_Message_Message() {} -func (*Intent_Message_LinkOutSuggestion_) isIntent_Message_Message() {} -func (*Intent_Message_ListSelect_) isIntent_Message_Message() {} -func (*Intent_Message_CarouselSelect_) isIntent_Message_Message() {} - -func (m *Intent_Message) GetMessage() isIntent_Message_Message { - if m != nil { - return m.Message - } - return nil -} - -func (m *Intent_Message) GetText() *Intent_Message_Text { - if x, ok := m.GetMessage().(*Intent_Message_Text_); ok { - return x.Text - } - return nil -} - -func (m *Intent_Message) GetImage() *Intent_Message_Image { - if x, ok := m.GetMessage().(*Intent_Message_Image_); ok { - return x.Image - } - return nil -} - -func (m *Intent_Message) GetQuickReplies() *Intent_Message_QuickReplies { - if x, ok := m.GetMessage().(*Intent_Message_QuickReplies_); ok { - return x.QuickReplies - } - return nil -} - -func (m *Intent_Message) GetCard() *Intent_Message_Card { - if x, ok := m.GetMessage().(*Intent_Message_Card_); ok { - return x.Card - } - return nil -} - -func (m *Intent_Message) GetPayload() *google_protobuf4.Struct { - if x, ok := m.GetMessage().(*Intent_Message_Payload); ok { - return x.Payload - } - return nil -} - -func (m *Intent_Message) GetSimpleResponses() *Intent_Message_SimpleResponses { - if x, ok := m.GetMessage().(*Intent_Message_SimpleResponses_); ok { - return x.SimpleResponses - } - return nil -} - -func (m *Intent_Message) GetBasicCard() *Intent_Message_BasicCard { - if x, ok := m.GetMessage().(*Intent_Message_BasicCard_); ok { - return x.BasicCard - } - return nil -} - -func (m *Intent_Message) GetSuggestions() *Intent_Message_Suggestions { - if x, ok := m.GetMessage().(*Intent_Message_Suggestions_); ok { - return x.Suggestions - } - return nil -} - -func (m *Intent_Message) GetLinkOutSuggestion() *Intent_Message_LinkOutSuggestion { - if x, ok := m.GetMessage().(*Intent_Message_LinkOutSuggestion_); ok { - return x.LinkOutSuggestion - } - return nil -} - -func (m *Intent_Message) GetListSelect() *Intent_Message_ListSelect { - if x, ok := m.GetMessage().(*Intent_Message_ListSelect_); ok { - return x.ListSelect - } - return nil -} - -func (m *Intent_Message) GetCarouselSelect() *Intent_Message_CarouselSelect { - if x, ok := m.GetMessage().(*Intent_Message_CarouselSelect_); ok { - return x.CarouselSelect - } - return nil -} - -func (m *Intent_Message) GetPlatform() Intent_Message_Platform { - if m != nil { - return m.Platform - } - return Intent_Message_PLATFORM_UNSPECIFIED -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Intent_Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Intent_Message_OneofMarshaler, _Intent_Message_OneofUnmarshaler, _Intent_Message_OneofSizer, []interface{}{ - (*Intent_Message_Text_)(nil), - (*Intent_Message_Image_)(nil), - (*Intent_Message_QuickReplies_)(nil), - (*Intent_Message_Card_)(nil), - (*Intent_Message_Payload)(nil), - (*Intent_Message_SimpleResponses_)(nil), - (*Intent_Message_BasicCard_)(nil), - (*Intent_Message_Suggestions_)(nil), - (*Intent_Message_LinkOutSuggestion_)(nil), - (*Intent_Message_ListSelect_)(nil), - (*Intent_Message_CarouselSelect_)(nil), - } -} - -func _Intent_Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Intent_Message) - // message - switch x := m.Message.(type) { - case *Intent_Message_Text_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Text); err != nil { - return err - } - case *Intent_Message_Image_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Image); err != nil { - return err - } - case *Intent_Message_QuickReplies_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.QuickReplies); err != nil { - return err - } - case *Intent_Message_Card_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Card); err != nil { - return err - } - case *Intent_Message_Payload: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Payload); err != nil { - return err - } - case *Intent_Message_SimpleResponses_: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SimpleResponses); err != nil { - return err - } - case *Intent_Message_BasicCard_: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BasicCard); err != nil { - return err - } - case *Intent_Message_Suggestions_: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Suggestions); err != nil { - return err - } - case *Intent_Message_LinkOutSuggestion_: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.LinkOutSuggestion); err != nil { - return err - } - case *Intent_Message_ListSelect_: - b.EncodeVarint(11<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ListSelect); err != nil { - return err - } - case *Intent_Message_CarouselSelect_: - b.EncodeVarint(12<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CarouselSelect); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Intent_Message.Message has unexpected type %T", x) - } - return nil -} - -func _Intent_Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Intent_Message) - switch tag { - case 1: // message.text - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_Text) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_Text_{msg} - return true, err - case 2: // message.image - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_Image) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_Image_{msg} - return true, err - case 3: // message.quick_replies - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_QuickReplies) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_QuickReplies_{msg} - return true, err - case 4: // message.card - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_Card) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_Card_{msg} - return true, err - case 5: // message.payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf4.Struct) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_Payload{msg} - return true, err - case 7: // message.simple_responses - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_SimpleResponses) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_SimpleResponses_{msg} - return true, err - case 8: // message.basic_card - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_BasicCard) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_BasicCard_{msg} - return true, err - case 9: // message.suggestions - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_Suggestions) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_Suggestions_{msg} - return true, err - case 10: // message.link_out_suggestion - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_LinkOutSuggestion) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_LinkOutSuggestion_{msg} - return true, err - case 11: // message.list_select - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_ListSelect) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_ListSelect_{msg} - return true, err - case 12: // message.carousel_select - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Intent_Message_CarouselSelect) - err := b.DecodeMessage(msg) - m.Message = &Intent_Message_CarouselSelect_{msg} - return true, err - default: - return false, nil - } -} - -func _Intent_Message_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Intent_Message) - // message - switch x := m.Message.(type) { - case *Intent_Message_Text_: - s := proto.Size(x.Text) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_Image_: - s := proto.Size(x.Image) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_QuickReplies_: - s := proto.Size(x.QuickReplies) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_Card_: - s := proto.Size(x.Card) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_Payload: - s := proto.Size(x.Payload) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_SimpleResponses_: - s := proto.Size(x.SimpleResponses) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_BasicCard_: - s := proto.Size(x.BasicCard) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_Suggestions_: - s := proto.Size(x.Suggestions) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_LinkOutSuggestion_: - s := proto.Size(x.LinkOutSuggestion) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_ListSelect_: - s := proto.Size(x.ListSelect) - n += proto.SizeVarint(11<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Intent_Message_CarouselSelect_: - s := proto.Size(x.CarouselSelect) - n += proto.SizeVarint(12<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The text response message. -type Intent_Message_Text struct { - // Optional. The collection of the agent's responses. - Text []string `protobuf:"bytes,1,rep,name=text" json:"text,omitempty"` -} - -func (m *Intent_Message_Text) Reset() { *m = Intent_Message_Text{} } -func (m *Intent_Message_Text) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_Text) ProtoMessage() {} -func (*Intent_Message_Text) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2, 0} } - -func (m *Intent_Message_Text) GetText() []string { - if m != nil { - return m.Text - } - return nil -} - -// The image response message. -type Intent_Message_Image struct { - // Optional. The public URI to an image file. - ImageUri string `protobuf:"bytes,1,opt,name=image_uri,json=imageUri" json:"image_uri,omitempty"` - // Optional. A text description of the image to be used for accessibility, - // e.g., screen readers. - AccessibilityText string `protobuf:"bytes,2,opt,name=accessibility_text,json=accessibilityText" json:"accessibility_text,omitempty"` -} - -func (m *Intent_Message_Image) Reset() { *m = Intent_Message_Image{} } -func (m *Intent_Message_Image) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_Image) ProtoMessage() {} -func (*Intent_Message_Image) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2, 1} } - -func (m *Intent_Message_Image) GetImageUri() string { - if m != nil { - return m.ImageUri - } - return "" -} - -func (m *Intent_Message_Image) GetAccessibilityText() string { - if m != nil { - return m.AccessibilityText - } - return "" -} - -// The quick replies response message. -type Intent_Message_QuickReplies struct { - // Optional. The title of the collection of quick replies. - Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - // Optional. The collection of quick replies. - QuickReplies []string `protobuf:"bytes,2,rep,name=quick_replies,json=quickReplies" json:"quick_replies,omitempty"` -} - -func (m *Intent_Message_QuickReplies) Reset() { *m = Intent_Message_QuickReplies{} } -func (m *Intent_Message_QuickReplies) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_QuickReplies) ProtoMessage() {} -func (*Intent_Message_QuickReplies) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 2} -} - -func (m *Intent_Message_QuickReplies) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Intent_Message_QuickReplies) GetQuickReplies() []string { - if m != nil { - return m.QuickReplies - } - return nil -} - -// The card response message. -type Intent_Message_Card struct { - // Optional. The title of the card. - Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - // Optional. The subtitle of the card. - Subtitle string `protobuf:"bytes,2,opt,name=subtitle" json:"subtitle,omitempty"` - // Optional. The public URI to an image file for the card. - ImageUri string `protobuf:"bytes,3,opt,name=image_uri,json=imageUri" json:"image_uri,omitempty"` - // Optional. The collection of card buttons. - Buttons []*Intent_Message_Card_Button `protobuf:"bytes,4,rep,name=buttons" json:"buttons,omitempty"` -} - -func (m *Intent_Message_Card) Reset() { *m = Intent_Message_Card{} } -func (m *Intent_Message_Card) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_Card) ProtoMessage() {} -func (*Intent_Message_Card) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2, 3} } - -func (m *Intent_Message_Card) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Intent_Message_Card) GetSubtitle() string { - if m != nil { - return m.Subtitle - } - return "" -} - -func (m *Intent_Message_Card) GetImageUri() string { - if m != nil { - return m.ImageUri - } - return "" -} - -func (m *Intent_Message_Card) GetButtons() []*Intent_Message_Card_Button { - if m != nil { - return m.Buttons - } - return nil -} - -// Optional. Contains information about a button. -type Intent_Message_Card_Button struct { - // Optional. The text to show on the button. - Text string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // Optional. The text to send back to the Dialogflow API or a URI to - // open. - Postback string `protobuf:"bytes,2,opt,name=postback" json:"postback,omitempty"` -} - -func (m *Intent_Message_Card_Button) Reset() { *m = Intent_Message_Card_Button{} } -func (m *Intent_Message_Card_Button) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_Card_Button) ProtoMessage() {} -func (*Intent_Message_Card_Button) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 3, 0} -} - -func (m *Intent_Message_Card_Button) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -func (m *Intent_Message_Card_Button) GetPostback() string { - if m != nil { - return m.Postback - } - return "" -} - -// The simple response message containing speech or text. -type Intent_Message_SimpleResponse struct { - // One of text_to_speech or ssml must be provided. The plain text of the - // speech output. Mutually exclusive with ssml. - TextToSpeech string `protobuf:"bytes,1,opt,name=text_to_speech,json=textToSpeech" json:"text_to_speech,omitempty"` - // One of text_to_speech or ssml must be provided. Structured spoken - // response to the user in the SSML format. Mutually exclusive with - // text_to_speech. - Ssml string `protobuf:"bytes,2,opt,name=ssml" json:"ssml,omitempty"` - // Optional. The text to display. - DisplayText string `protobuf:"bytes,3,opt,name=display_text,json=displayText" json:"display_text,omitempty"` -} - -func (m *Intent_Message_SimpleResponse) Reset() { *m = Intent_Message_SimpleResponse{} } -func (m *Intent_Message_SimpleResponse) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_SimpleResponse) ProtoMessage() {} -func (*Intent_Message_SimpleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 4} -} - -func (m *Intent_Message_SimpleResponse) GetTextToSpeech() string { - if m != nil { - return m.TextToSpeech - } - return "" -} - -func (m *Intent_Message_SimpleResponse) GetSsml() string { - if m != nil { - return m.Ssml - } - return "" -} - -func (m *Intent_Message_SimpleResponse) GetDisplayText() string { - if m != nil { - return m.DisplayText - } - return "" -} - -// The collection of simple response candidates. -// This message in `QueryResult.fulfillment_messages` and -// `WebhookResponse.fulfillment_messages` should contain only one -// `SimpleResponse`. -type Intent_Message_SimpleResponses struct { - // Required. The list of simple responses. - SimpleResponses []*Intent_Message_SimpleResponse `protobuf:"bytes,1,rep,name=simple_responses,json=simpleResponses" json:"simple_responses,omitempty"` -} - -func (m *Intent_Message_SimpleResponses) Reset() { *m = Intent_Message_SimpleResponses{} } -func (m *Intent_Message_SimpleResponses) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_SimpleResponses) ProtoMessage() {} -func (*Intent_Message_SimpleResponses) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 5} -} - -func (m *Intent_Message_SimpleResponses) GetSimpleResponses() []*Intent_Message_SimpleResponse { - if m != nil { - return m.SimpleResponses - } - return nil -} - -// The basic card message. Useful for displaying information. -type Intent_Message_BasicCard struct { - // Optional. The title of the card. - Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - // Optional. The subtitle of the card. - Subtitle string `protobuf:"bytes,2,opt,name=subtitle" json:"subtitle,omitempty"` - // Required, unless image is present. The body text of the card. - FormattedText string `protobuf:"bytes,3,opt,name=formatted_text,json=formattedText" json:"formatted_text,omitempty"` - // Optional. The image for the card. - Image *Intent_Message_Image `protobuf:"bytes,4,opt,name=image" json:"image,omitempty"` - // Optional. The collection of card buttons. - Buttons []*Intent_Message_BasicCard_Button `protobuf:"bytes,5,rep,name=buttons" json:"buttons,omitempty"` -} - -func (m *Intent_Message_BasicCard) Reset() { *m = Intent_Message_BasicCard{} } -func (m *Intent_Message_BasicCard) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_BasicCard) ProtoMessage() {} -func (*Intent_Message_BasicCard) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2, 6} } - -func (m *Intent_Message_BasicCard) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Intent_Message_BasicCard) GetSubtitle() string { - if m != nil { - return m.Subtitle - } - return "" -} - -func (m *Intent_Message_BasicCard) GetFormattedText() string { - if m != nil { - return m.FormattedText - } - return "" -} - -func (m *Intent_Message_BasicCard) GetImage() *Intent_Message_Image { - if m != nil { - return m.Image - } - return nil -} - -func (m *Intent_Message_BasicCard) GetButtons() []*Intent_Message_BasicCard_Button { - if m != nil { - return m.Buttons - } - return nil -} - -// The button object that appears at the bottom of a card. -type Intent_Message_BasicCard_Button struct { - // Required. The title of the button. - Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - // Required. Action to take when a user taps on the button. - OpenUriAction *Intent_Message_BasicCard_Button_OpenUriAction `protobuf:"bytes,2,opt,name=open_uri_action,json=openUriAction" json:"open_uri_action,omitempty"` -} - -func (m *Intent_Message_BasicCard_Button) Reset() { *m = Intent_Message_BasicCard_Button{} } -func (m *Intent_Message_BasicCard_Button) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_BasicCard_Button) ProtoMessage() {} -func (*Intent_Message_BasicCard_Button) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 6, 0} -} - -func (m *Intent_Message_BasicCard_Button) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Intent_Message_BasicCard_Button) GetOpenUriAction() *Intent_Message_BasicCard_Button_OpenUriAction { - if m != nil { - return m.OpenUriAction - } - return nil -} - -// Opens the given URI. -type Intent_Message_BasicCard_Button_OpenUriAction struct { - // Required. The HTTP or HTTPS scheme URI. - Uri string `protobuf:"bytes,1,opt,name=uri" json:"uri,omitempty"` -} - -func (m *Intent_Message_BasicCard_Button_OpenUriAction) Reset() { - *m = Intent_Message_BasicCard_Button_OpenUriAction{} -} -func (m *Intent_Message_BasicCard_Button_OpenUriAction) String() string { - return proto.CompactTextString(m) -} -func (*Intent_Message_BasicCard_Button_OpenUriAction) ProtoMessage() {} -func (*Intent_Message_BasicCard_Button_OpenUriAction) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 6, 0, 0} -} - -func (m *Intent_Message_BasicCard_Button_OpenUriAction) GetUri() string { - if m != nil { - return m.Uri - } - return "" -} - -// The suggestion chip message that the user can tap to quickly post a reply -// to the conversation. -type Intent_Message_Suggestion struct { - // Required. The text shown the in the suggestion chip. - Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` -} - -func (m *Intent_Message_Suggestion) Reset() { *m = Intent_Message_Suggestion{} } -func (m *Intent_Message_Suggestion) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_Suggestion) ProtoMessage() {} -func (*Intent_Message_Suggestion) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2, 7} } - -func (m *Intent_Message_Suggestion) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -// The collection of suggestions. -type Intent_Message_Suggestions struct { - // Required. The list of suggested replies. - Suggestions []*Intent_Message_Suggestion `protobuf:"bytes,1,rep,name=suggestions" json:"suggestions,omitempty"` -} - -func (m *Intent_Message_Suggestions) Reset() { *m = Intent_Message_Suggestions{} } -func (m *Intent_Message_Suggestions) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_Suggestions) ProtoMessage() {} -func (*Intent_Message_Suggestions) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 8} -} - -func (m *Intent_Message_Suggestions) GetSuggestions() []*Intent_Message_Suggestion { - if m != nil { - return m.Suggestions - } - return nil -} - -// The suggestion chip message that allows the user to jump out to the app -// or website associated with this agent. -type Intent_Message_LinkOutSuggestion struct { - // Required. The name of the app or site this chip is linking to. - DestinationName string `protobuf:"bytes,1,opt,name=destination_name,json=destinationName" json:"destination_name,omitempty"` - // Required. The URI of the app or site to open when the user taps the - // suggestion chip. - Uri string `protobuf:"bytes,2,opt,name=uri" json:"uri,omitempty"` -} - -func (m *Intent_Message_LinkOutSuggestion) Reset() { *m = Intent_Message_LinkOutSuggestion{} } -func (m *Intent_Message_LinkOutSuggestion) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_LinkOutSuggestion) ProtoMessage() {} -func (*Intent_Message_LinkOutSuggestion) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 9} -} - -func (m *Intent_Message_LinkOutSuggestion) GetDestinationName() string { - if m != nil { - return m.DestinationName - } - return "" -} - -func (m *Intent_Message_LinkOutSuggestion) GetUri() string { - if m != nil { - return m.Uri - } - return "" -} - -// The card for presenting a list of options to select from. -type Intent_Message_ListSelect struct { - // Optional. The overall title of the list. - Title string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` - // Required. List items. - Items []*Intent_Message_ListSelect_Item `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"` -} - -func (m *Intent_Message_ListSelect) Reset() { *m = Intent_Message_ListSelect{} } -func (m *Intent_Message_ListSelect) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_ListSelect) ProtoMessage() {} -func (*Intent_Message_ListSelect) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 10} -} - -func (m *Intent_Message_ListSelect) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Intent_Message_ListSelect) GetItems() []*Intent_Message_ListSelect_Item { - if m != nil { - return m.Items - } - return nil -} - -// An item in the list. -type Intent_Message_ListSelect_Item struct { - // Required. Additional information about this option. - Info *Intent_Message_SelectItemInfo `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"` - // Required. The title of the list item. - Title string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` - // Optional. The main text describing the item. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // Optional. The image to display. - Image *Intent_Message_Image `protobuf:"bytes,4,opt,name=image" json:"image,omitempty"` -} - -func (m *Intent_Message_ListSelect_Item) Reset() { *m = Intent_Message_ListSelect_Item{} } -func (m *Intent_Message_ListSelect_Item) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_ListSelect_Item) ProtoMessage() {} -func (*Intent_Message_ListSelect_Item) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 10, 0} -} - -func (m *Intent_Message_ListSelect_Item) GetInfo() *Intent_Message_SelectItemInfo { - if m != nil { - return m.Info - } - return nil -} - -func (m *Intent_Message_ListSelect_Item) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Intent_Message_ListSelect_Item) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Intent_Message_ListSelect_Item) GetImage() *Intent_Message_Image { - if m != nil { - return m.Image - } - return nil -} - -// The card for presenting a carousel of options to select from. -type Intent_Message_CarouselSelect struct { - // Required. Carousel items. - Items []*Intent_Message_CarouselSelect_Item `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"` -} - -func (m *Intent_Message_CarouselSelect) Reset() { *m = Intent_Message_CarouselSelect{} } -func (m *Intent_Message_CarouselSelect) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_CarouselSelect) ProtoMessage() {} -func (*Intent_Message_CarouselSelect) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 11} -} - -func (m *Intent_Message_CarouselSelect) GetItems() []*Intent_Message_CarouselSelect_Item { - if m != nil { - return m.Items - } - return nil -} - -// An item in the carousel. -type Intent_Message_CarouselSelect_Item struct { - // Required. Additional info about the option item. - Info *Intent_Message_SelectItemInfo `protobuf:"bytes,1,opt,name=info" json:"info,omitempty"` - // Required. Title of the carousel item. - Title string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` - // Optional. The body text of the card. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // Optional. The image to display. - Image *Intent_Message_Image `protobuf:"bytes,4,opt,name=image" json:"image,omitempty"` -} - -func (m *Intent_Message_CarouselSelect_Item) Reset() { *m = Intent_Message_CarouselSelect_Item{} } -func (m *Intent_Message_CarouselSelect_Item) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_CarouselSelect_Item) ProtoMessage() {} -func (*Intent_Message_CarouselSelect_Item) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 11, 0} -} - -func (m *Intent_Message_CarouselSelect_Item) GetInfo() *Intent_Message_SelectItemInfo { - if m != nil { - return m.Info - } - return nil -} - -func (m *Intent_Message_CarouselSelect_Item) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Intent_Message_CarouselSelect_Item) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Intent_Message_CarouselSelect_Item) GetImage() *Intent_Message_Image { - if m != nil { - return m.Image - } - return nil -} - -// Additional info about the select item for when it is triggered in a -// dialog. -type Intent_Message_SelectItemInfo struct { - // Required. A unique key that will be sent back to the agent if this - // response is given. - Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // Optional. A list of synonyms that can also be used to trigger this - // item in dialog. - Synonyms []string `protobuf:"bytes,2,rep,name=synonyms" json:"synonyms,omitempty"` -} - -func (m *Intent_Message_SelectItemInfo) Reset() { *m = Intent_Message_SelectItemInfo{} } -func (m *Intent_Message_SelectItemInfo) String() string { return proto.CompactTextString(m) } -func (*Intent_Message_SelectItemInfo) ProtoMessage() {} -func (*Intent_Message_SelectItemInfo) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 12} -} - -func (m *Intent_Message_SelectItemInfo) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *Intent_Message_SelectItemInfo) GetSynonyms() []string { - if m != nil { - return m.Synonyms - } - return nil -} - -// Represents a single followup intent in the chain. -type Intent_FollowupIntentInfo struct { - // The unique identifier of the followup intent. - // Format: `projects/<Project ID>/agent/intents/<Intent ID>`. - FollowupIntentName string `protobuf:"bytes,1,opt,name=followup_intent_name,json=followupIntentName" json:"followup_intent_name,omitempty"` - // The unique identifier of the followup intent parent. - // Format: `projects/<Project ID>/agent/intents/<Intent ID>`. - ParentFollowupIntentName string `protobuf:"bytes,2,opt,name=parent_followup_intent_name,json=parentFollowupIntentName" json:"parent_followup_intent_name,omitempty"` -} - -func (m *Intent_FollowupIntentInfo) Reset() { *m = Intent_FollowupIntentInfo{} } -func (m *Intent_FollowupIntentInfo) String() string { return proto.CompactTextString(m) } -func (*Intent_FollowupIntentInfo) ProtoMessage() {} -func (*Intent_FollowupIntentInfo) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 3} } - -func (m *Intent_FollowupIntentInfo) GetFollowupIntentName() string { - if m != nil { - return m.FollowupIntentName - } - return "" -} - -func (m *Intent_FollowupIntentInfo) GetParentFollowupIntentName() string { - if m != nil { - return m.ParentFollowupIntentName - } - return "" -} - -// The request message for -// [Intents.ListIntents][google.cloud.dialogflow.v2beta1.Intents.ListIntents]. -type ListIntentsRequest struct { - // Required. The agent to list all intents from. - // Format: `projects/<Project ID>/agent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. The language to list training phrases, parameters and rich - // messages for. If not specified, the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent before they can be used. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The resource view to apply to the returned intent. - IntentView IntentView `protobuf:"varint,3,opt,name=intent_view,json=intentView,enum=google.cloud.dialogflow.v2beta1.IntentView" json:"intent_view,omitempty"` - // Optional. The maximum number of items to return in a single page. By - // default 100 and at most 1000. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The next_page_token value returned from a previous list request. - PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListIntentsRequest) Reset() { *m = ListIntentsRequest{} } -func (m *ListIntentsRequest) String() string { return proto.CompactTextString(m) } -func (*ListIntentsRequest) ProtoMessage() {} -func (*ListIntentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *ListIntentsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListIntentsRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *ListIntentsRequest) GetIntentView() IntentView { - if m != nil { - return m.IntentView - } - return IntentView_INTENT_VIEW_UNSPECIFIED -} - -func (m *ListIntentsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListIntentsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for -// [Intents.ListIntents][google.cloud.dialogflow.v2beta1.Intents.ListIntents]. -type ListIntentsResponse struct { - // The list of agent intents. There will be a maximum number of items - // returned based on the page_size field in the request. - Intents []*Intent `protobuf:"bytes,1,rep,name=intents" json:"intents,omitempty"` - // Token to retrieve the next page of results, or empty if there are no - // more results in the list. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListIntentsResponse) Reset() { *m = ListIntentsResponse{} } -func (m *ListIntentsResponse) String() string { return proto.CompactTextString(m) } -func (*ListIntentsResponse) ProtoMessage() {} -func (*ListIntentsResponse) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } - -func (m *ListIntentsResponse) GetIntents() []*Intent { - if m != nil { - return m.Intents - } - return nil -} - -func (m *ListIntentsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for -// [Intents.GetIntent][google.cloud.dialogflow.v2beta1.Intents.GetIntent]. -type GetIntentRequest struct { - // Required. The name of the intent. - // Format: `projects/<Project ID>/agent/intents/<Intent ID>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The language to retrieve training phrases, parameters and rich - // messages for. If not specified, the agent's default language is used. - // [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The resource view to apply to the returned intent. - IntentView IntentView `protobuf:"varint,3,opt,name=intent_view,json=intentView,enum=google.cloud.dialogflow.v2beta1.IntentView" json:"intent_view,omitempty"` -} - -func (m *GetIntentRequest) Reset() { *m = GetIntentRequest{} } -func (m *GetIntentRequest) String() string { return proto.CompactTextString(m) } -func (*GetIntentRequest) ProtoMessage() {} -func (*GetIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{3} } - -func (m *GetIntentRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GetIntentRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *GetIntentRequest) GetIntentView() IntentView { - if m != nil { - return m.IntentView - } - return IntentView_INTENT_VIEW_UNSPECIFIED -} - -// The request message for -// [Intents.CreateIntent][google.cloud.dialogflow.v2beta1.Intents.CreateIntent]. -type CreateIntentRequest struct { - // Required. The agent to create a intent for. - // Format: `projects/<Project ID>/agent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The intent to create. - Intent *Intent `protobuf:"bytes,2,opt,name=intent" json:"intent,omitempty"` - // Optional. The language of training phrases, parameters and rich messages - // defined in `intent`. If not specified, the agent's default language is - // used. [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The resource view to apply to the returned intent. - IntentView IntentView `protobuf:"varint,4,opt,name=intent_view,json=intentView,enum=google.cloud.dialogflow.v2beta1.IntentView" json:"intent_view,omitempty"` -} - -func (m *CreateIntentRequest) Reset() { *m = CreateIntentRequest{} } -func (m *CreateIntentRequest) String() string { return proto.CompactTextString(m) } -func (*CreateIntentRequest) ProtoMessage() {} -func (*CreateIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4} } - -func (m *CreateIntentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateIntentRequest) GetIntent() *Intent { - if m != nil { - return m.Intent - } - return nil -} - -func (m *CreateIntentRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *CreateIntentRequest) GetIntentView() IntentView { - if m != nil { - return m.IntentView - } - return IntentView_INTENT_VIEW_UNSPECIFIED -} - -// The request message for -// [Intents.UpdateIntent][google.cloud.dialogflow.v2beta1.Intents.UpdateIntent]. -type UpdateIntentRequest struct { - // Required. The intent to update. - // Format: `projects/<Project ID>/agent/intents/<Intent ID>`. - Intent *Intent `protobuf:"bytes,1,opt,name=intent" json:"intent,omitempty"` - // Optional. The language of training phrases, parameters and rich messages - // defined in `intent`. If not specified, the agent's default language is - // used. [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The mask to control which fields get updated. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` - // Optional. The resource view to apply to the returned intent. - IntentView IntentView `protobuf:"varint,4,opt,name=intent_view,json=intentView,enum=google.cloud.dialogflow.v2beta1.IntentView" json:"intent_view,omitempty"` -} - -func (m *UpdateIntentRequest) Reset() { *m = UpdateIntentRequest{} } -func (m *UpdateIntentRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateIntentRequest) ProtoMessage() {} -func (*UpdateIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{5} } - -func (m *UpdateIntentRequest) GetIntent() *Intent { - if m != nil { - return m.Intent - } - return nil -} - -func (m *UpdateIntentRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *UpdateIntentRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func (m *UpdateIntentRequest) GetIntentView() IntentView { - if m != nil { - return m.IntentView - } - return IntentView_INTENT_VIEW_UNSPECIFIED -} - -// The request message for -// [Intents.DeleteIntent][google.cloud.dialogflow.v2beta1.Intents.DeleteIntent]. -type DeleteIntentRequest struct { - // Required. The name of the intent to delete. - // Format: `projects/<Project ID>/agent/intents/<Intent ID>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteIntentRequest) Reset() { *m = DeleteIntentRequest{} } -func (m *DeleteIntentRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteIntentRequest) ProtoMessage() {} -func (*DeleteIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{6} } - -func (m *DeleteIntentRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for -// [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents]. -type BatchUpdateIntentsRequest struct { - // Required. The name of the agent to update or create intents in. - // Format: `projects/<Project ID>/agent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The source of the intent batch. - // - // Types that are valid to be assigned to IntentBatch: - // *BatchUpdateIntentsRequest_IntentBatchUri - // *BatchUpdateIntentsRequest_IntentBatchInline - IntentBatch isBatchUpdateIntentsRequest_IntentBatch `protobuf_oneof:"intent_batch"` - // Optional. The language of training phrases, parameters and rich messages - // defined in `intents`. If not specified, the agent's default language is - // used. [More than a dozen - // languages](https://dialogflow.com/docs/reference/language) are supported. - // Note: languages must be enabled in the agent, before they can be used. - LanguageCode string `protobuf:"bytes,4,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The mask to control which fields get updated. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,5,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` - // Optional. The resource view to apply to the returned intent. - IntentView IntentView `protobuf:"varint,6,opt,name=intent_view,json=intentView,enum=google.cloud.dialogflow.v2beta1.IntentView" json:"intent_view,omitempty"` -} - -func (m *BatchUpdateIntentsRequest) Reset() { *m = BatchUpdateIntentsRequest{} } -func (m *BatchUpdateIntentsRequest) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateIntentsRequest) ProtoMessage() {} -func (*BatchUpdateIntentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{7} } - -type isBatchUpdateIntentsRequest_IntentBatch interface { - isBatchUpdateIntentsRequest_IntentBatch() -} - -type BatchUpdateIntentsRequest_IntentBatchUri struct { - IntentBatchUri string `protobuf:"bytes,2,opt,name=intent_batch_uri,json=intentBatchUri,oneof"` -} -type BatchUpdateIntentsRequest_IntentBatchInline struct { - IntentBatchInline *IntentBatch `protobuf:"bytes,3,opt,name=intent_batch_inline,json=intentBatchInline,oneof"` -} - -func (*BatchUpdateIntentsRequest_IntentBatchUri) isBatchUpdateIntentsRequest_IntentBatch() {} -func (*BatchUpdateIntentsRequest_IntentBatchInline) isBatchUpdateIntentsRequest_IntentBatch() {} - -func (m *BatchUpdateIntentsRequest) GetIntentBatch() isBatchUpdateIntentsRequest_IntentBatch { - if m != nil { - return m.IntentBatch - } - return nil -} - -func (m *BatchUpdateIntentsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *BatchUpdateIntentsRequest) GetIntentBatchUri() string { - if x, ok := m.GetIntentBatch().(*BatchUpdateIntentsRequest_IntentBatchUri); ok { - return x.IntentBatchUri - } - return "" -} - -func (m *BatchUpdateIntentsRequest) GetIntentBatchInline() *IntentBatch { - if x, ok := m.GetIntentBatch().(*BatchUpdateIntentsRequest_IntentBatchInline); ok { - return x.IntentBatchInline - } - return nil -} - -func (m *BatchUpdateIntentsRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *BatchUpdateIntentsRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func (m *BatchUpdateIntentsRequest) GetIntentView() IntentView { - if m != nil { - return m.IntentView - } - return IntentView_INTENT_VIEW_UNSPECIFIED -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*BatchUpdateIntentsRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _BatchUpdateIntentsRequest_OneofMarshaler, _BatchUpdateIntentsRequest_OneofUnmarshaler, _BatchUpdateIntentsRequest_OneofSizer, []interface{}{ - (*BatchUpdateIntentsRequest_IntentBatchUri)(nil), - (*BatchUpdateIntentsRequest_IntentBatchInline)(nil), - } -} - -func _BatchUpdateIntentsRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*BatchUpdateIntentsRequest) - // intent_batch - switch x := m.IntentBatch.(type) { - case *BatchUpdateIntentsRequest_IntentBatchUri: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.IntentBatchUri) - case *BatchUpdateIntentsRequest_IntentBatchInline: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.IntentBatchInline); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("BatchUpdateIntentsRequest.IntentBatch has unexpected type %T", x) - } - return nil -} - -func _BatchUpdateIntentsRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*BatchUpdateIntentsRequest) - switch tag { - case 2: // intent_batch.intent_batch_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.IntentBatch = &BatchUpdateIntentsRequest_IntentBatchUri{x} - return true, err - case 3: // intent_batch.intent_batch_inline - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(IntentBatch) - err := b.DecodeMessage(msg) - m.IntentBatch = &BatchUpdateIntentsRequest_IntentBatchInline{msg} - return true, err - default: - return false, nil - } -} - -func _BatchUpdateIntentsRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*BatchUpdateIntentsRequest) - // intent_batch - switch x := m.IntentBatch.(type) { - case *BatchUpdateIntentsRequest_IntentBatchUri: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.IntentBatchUri))) - n += len(x.IntentBatchUri) - case *BatchUpdateIntentsRequest_IntentBatchInline: - s := proto.Size(x.IntentBatchInline) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response message for -// [Intents.BatchUpdateIntents][google.cloud.dialogflow.v2beta1.Intents.BatchUpdateIntents]. -type BatchUpdateIntentsResponse struct { - // The collection of updated or created intents. - Intents []*Intent `protobuf:"bytes,1,rep,name=intents" json:"intents,omitempty"` -} - -func (m *BatchUpdateIntentsResponse) Reset() { *m = BatchUpdateIntentsResponse{} } -func (m *BatchUpdateIntentsResponse) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateIntentsResponse) ProtoMessage() {} -func (*BatchUpdateIntentsResponse) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{8} } - -func (m *BatchUpdateIntentsResponse) GetIntents() []*Intent { - if m != nil { - return m.Intents - } - return nil -} - -// The request message for -// [Intents.BatchDeleteIntents][google.cloud.dialogflow.v2beta1.Intents.BatchDeleteIntents]. -type BatchDeleteIntentsRequest struct { - // Required. The name of the agent to delete all entities types for. Format: - // `projects/<Project ID>/agent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The collection of intents to delete. Only intent `name` must be - // filled in. - Intents []*Intent `protobuf:"bytes,2,rep,name=intents" json:"intents,omitempty"` -} - -func (m *BatchDeleteIntentsRequest) Reset() { *m = BatchDeleteIntentsRequest{} } -func (m *BatchDeleteIntentsRequest) String() string { return proto.CompactTextString(m) } -func (*BatchDeleteIntentsRequest) ProtoMessage() {} -func (*BatchDeleteIntentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{9} } - -func (m *BatchDeleteIntentsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *BatchDeleteIntentsRequest) GetIntents() []*Intent { - if m != nil { - return m.Intents - } - return nil -} - -// This message is a wrapper around a collection of intents. -type IntentBatch struct { - // A collection of intents. - Intents []*Intent `protobuf:"bytes,1,rep,name=intents" json:"intents,omitempty"` -} - -func (m *IntentBatch) Reset() { *m = IntentBatch{} } -func (m *IntentBatch) String() string { return proto.CompactTextString(m) } -func (*IntentBatch) ProtoMessage() {} -func (*IntentBatch) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{10} } - -func (m *IntentBatch) GetIntents() []*Intent { - if m != nil { - return m.Intents - } - return nil -} - -func init() { - proto.RegisterType((*Intent)(nil), "google.cloud.dialogflow.v2beta1.Intent") - proto.RegisterType((*Intent_TrainingPhrase)(nil), "google.cloud.dialogflow.v2beta1.Intent.TrainingPhrase") - proto.RegisterType((*Intent_TrainingPhrase_Part)(nil), "google.cloud.dialogflow.v2beta1.Intent.TrainingPhrase.Part") - proto.RegisterType((*Intent_Parameter)(nil), "google.cloud.dialogflow.v2beta1.Intent.Parameter") - proto.RegisterType((*Intent_Message)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message") - proto.RegisterType((*Intent_Message_Text)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.Text") - proto.RegisterType((*Intent_Message_Image)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.Image") - proto.RegisterType((*Intent_Message_QuickReplies)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.QuickReplies") - proto.RegisterType((*Intent_Message_Card)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.Card") - proto.RegisterType((*Intent_Message_Card_Button)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.Card.Button") - proto.RegisterType((*Intent_Message_SimpleResponse)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.SimpleResponse") - proto.RegisterType((*Intent_Message_SimpleResponses)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.SimpleResponses") - proto.RegisterType((*Intent_Message_BasicCard)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.BasicCard") - proto.RegisterType((*Intent_Message_BasicCard_Button)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.BasicCard.Button") - proto.RegisterType((*Intent_Message_BasicCard_Button_OpenUriAction)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.BasicCard.Button.OpenUriAction") - proto.RegisterType((*Intent_Message_Suggestion)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.Suggestion") - proto.RegisterType((*Intent_Message_Suggestions)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.Suggestions") - proto.RegisterType((*Intent_Message_LinkOutSuggestion)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.LinkOutSuggestion") - proto.RegisterType((*Intent_Message_ListSelect)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.ListSelect") - proto.RegisterType((*Intent_Message_ListSelect_Item)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.ListSelect.Item") - proto.RegisterType((*Intent_Message_CarouselSelect)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.CarouselSelect") - proto.RegisterType((*Intent_Message_CarouselSelect_Item)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.CarouselSelect.Item") - proto.RegisterType((*Intent_Message_SelectItemInfo)(nil), "google.cloud.dialogflow.v2beta1.Intent.Message.SelectItemInfo") - proto.RegisterType((*Intent_FollowupIntentInfo)(nil), "google.cloud.dialogflow.v2beta1.Intent.FollowupIntentInfo") - proto.RegisterType((*ListIntentsRequest)(nil), "google.cloud.dialogflow.v2beta1.ListIntentsRequest") - proto.RegisterType((*ListIntentsResponse)(nil), "google.cloud.dialogflow.v2beta1.ListIntentsResponse") - proto.RegisterType((*GetIntentRequest)(nil), "google.cloud.dialogflow.v2beta1.GetIntentRequest") - proto.RegisterType((*CreateIntentRequest)(nil), "google.cloud.dialogflow.v2beta1.CreateIntentRequest") - proto.RegisterType((*UpdateIntentRequest)(nil), "google.cloud.dialogflow.v2beta1.UpdateIntentRequest") - proto.RegisterType((*DeleteIntentRequest)(nil), "google.cloud.dialogflow.v2beta1.DeleteIntentRequest") - proto.RegisterType((*BatchUpdateIntentsRequest)(nil), "google.cloud.dialogflow.v2beta1.BatchUpdateIntentsRequest") - proto.RegisterType((*BatchUpdateIntentsResponse)(nil), "google.cloud.dialogflow.v2beta1.BatchUpdateIntentsResponse") - proto.RegisterType((*BatchDeleteIntentsRequest)(nil), "google.cloud.dialogflow.v2beta1.BatchDeleteIntentsRequest") - proto.RegisterType((*IntentBatch)(nil), "google.cloud.dialogflow.v2beta1.IntentBatch") - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.IntentView", IntentView_name, IntentView_value) - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.Intent_WebhookState", Intent_WebhookState_name, Intent_WebhookState_value) - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.Intent_TrainingPhrase_Type", Intent_TrainingPhrase_Type_name, Intent_TrainingPhrase_Type_value) - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.Intent_Message_Platform", Intent_Message_Platform_name, Intent_Message_Platform_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Intents service - -type IntentsClient interface { - // Returns the list of all intents in the specified agent. - ListIntents(ctx context.Context, in *ListIntentsRequest, opts ...grpc.CallOption) (*ListIntentsResponse, error) - // Retrieves the specified intent. - GetIntent(ctx context.Context, in *GetIntentRequest, opts ...grpc.CallOption) (*Intent, error) - // Creates an intent in the specified agent. - CreateIntent(ctx context.Context, in *CreateIntentRequest, opts ...grpc.CallOption) (*Intent, error) - // Updates the specified intent. - UpdateIntent(ctx context.Context, in *UpdateIntentRequest, opts ...grpc.CallOption) (*Intent, error) - // Deletes the specified intent. - DeleteIntent(ctx context.Context, in *DeleteIntentRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Updates/Creates multiple intents in the specified agent. - // - // Operation <response: - // [BatchUpdateIntentsResponse][google.cloud.dialogflow.v2beta1.BatchUpdateIntentsResponse]> - BatchUpdateIntents(ctx context.Context, in *BatchUpdateIntentsRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes intents in the specified agent. - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty]> - BatchDeleteIntents(ctx context.Context, in *BatchDeleteIntentsRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type intentsClient struct { - cc *grpc.ClientConn -} - -func NewIntentsClient(cc *grpc.ClientConn) IntentsClient { - return &intentsClient{cc} -} - -func (c *intentsClient) ListIntents(ctx context.Context, in *ListIntentsRequest, opts ...grpc.CallOption) (*ListIntentsResponse, error) { - out := new(ListIntentsResponse) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Intents/ListIntents", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *intentsClient) GetIntent(ctx context.Context, in *GetIntentRequest, opts ...grpc.CallOption) (*Intent, error) { - out := new(Intent) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Intents/GetIntent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *intentsClient) CreateIntent(ctx context.Context, in *CreateIntentRequest, opts ...grpc.CallOption) (*Intent, error) { - out := new(Intent) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Intents/CreateIntent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *intentsClient) UpdateIntent(ctx context.Context, in *UpdateIntentRequest, opts ...grpc.CallOption) (*Intent, error) { - out := new(Intent) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Intents/UpdateIntent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *intentsClient) DeleteIntent(ctx context.Context, in *DeleteIntentRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Intents/DeleteIntent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *intentsClient) BatchUpdateIntents(ctx context.Context, in *BatchUpdateIntentsRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Intents/BatchUpdateIntents", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *intentsClient) BatchDeleteIntents(ctx context.Context, in *BatchDeleteIntentsRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Intents/BatchDeleteIntents", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Intents service - -type IntentsServer interface { - // Returns the list of all intents in the specified agent. - ListIntents(context.Context, *ListIntentsRequest) (*ListIntentsResponse, error) - // Retrieves the specified intent. - GetIntent(context.Context, *GetIntentRequest) (*Intent, error) - // Creates an intent in the specified agent. - CreateIntent(context.Context, *CreateIntentRequest) (*Intent, error) - // Updates the specified intent. - UpdateIntent(context.Context, *UpdateIntentRequest) (*Intent, error) - // Deletes the specified intent. - DeleteIntent(context.Context, *DeleteIntentRequest) (*google_protobuf2.Empty, error) - // Updates/Creates multiple intents in the specified agent. - // - // Operation <response: - // [BatchUpdateIntentsResponse][google.cloud.dialogflow.v2beta1.BatchUpdateIntentsResponse]> - BatchUpdateIntents(context.Context, *BatchUpdateIntentsRequest) (*google_longrunning.Operation, error) - // Deletes intents in the specified agent. - // - // Operation <response: [google.protobuf.Empty][google.protobuf.Empty]> - BatchDeleteIntents(context.Context, *BatchDeleteIntentsRequest) (*google_longrunning.Operation, error) -} - -func RegisterIntentsServer(s *grpc.Server, srv IntentsServer) { - s.RegisterService(&_Intents_serviceDesc, srv) -} - -func _Intents_ListIntents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListIntentsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IntentsServer).ListIntents(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Intents/ListIntents", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IntentsServer).ListIntents(ctx, req.(*ListIntentsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Intents_GetIntent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetIntentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IntentsServer).GetIntent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Intents/GetIntent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IntentsServer).GetIntent(ctx, req.(*GetIntentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Intents_CreateIntent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateIntentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IntentsServer).CreateIntent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Intents/CreateIntent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IntentsServer).CreateIntent(ctx, req.(*CreateIntentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Intents_UpdateIntent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateIntentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IntentsServer).UpdateIntent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Intents/UpdateIntent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IntentsServer).UpdateIntent(ctx, req.(*UpdateIntentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Intents_DeleteIntent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteIntentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IntentsServer).DeleteIntent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Intents/DeleteIntent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IntentsServer).DeleteIntent(ctx, req.(*DeleteIntentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Intents_BatchUpdateIntents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchUpdateIntentsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IntentsServer).BatchUpdateIntents(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Intents/BatchUpdateIntents", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IntentsServer).BatchUpdateIntents(ctx, req.(*BatchUpdateIntentsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Intents_BatchDeleteIntents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchDeleteIntentsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IntentsServer).BatchDeleteIntents(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Intents/BatchDeleteIntents", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IntentsServer).BatchDeleteIntents(ctx, req.(*BatchDeleteIntentsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Intents_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dialogflow.v2beta1.Intents", - HandlerType: (*IntentsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListIntents", - Handler: _Intents_ListIntents_Handler, - }, - { - MethodName: "GetIntent", - Handler: _Intents_GetIntent_Handler, - }, - { - MethodName: "CreateIntent", - Handler: _Intents_CreateIntent_Handler, - }, - { - MethodName: "UpdateIntent", - Handler: _Intents_UpdateIntent_Handler, - }, - { - MethodName: "DeleteIntent", - Handler: _Intents_DeleteIntent_Handler, - }, - { - MethodName: "BatchUpdateIntents", - Handler: _Intents_BatchUpdateIntents_Handler, - }, - { - MethodName: "BatchDeleteIntents", - Handler: _Intents_BatchDeleteIntents_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dialogflow/v2beta1/intent.proto", -} - -func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/intent.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 2577 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0xcd, 0x73, 0x23, 0x47, - 0xd9, 0xf7, 0xe8, 0xc3, 0x96, 0x1e, 0xc9, 0xb2, 0xdc, 0xde, 0x6c, 0xb4, 0x93, 0xa4, 0xe2, 0x28, - 0x6f, 0xf2, 0x3a, 0x7e, 0x13, 0xe9, 0x8d, 0x92, 0x37, 0x1f, 0xbb, 0x6f, 0x12, 0x64, 0x5b, 0x5e, - 0x0b, 0xcb, 0x96, 0x76, 0x2c, 0x6f, 0xd8, 0x14, 0x30, 0x35, 0x92, 0xda, 0xda, 0xc6, 0xa3, 0x99, - 0xc9, 0x74, 0xcb, 0x1b, 0x05, 0x52, 0x45, 0x51, 0x05, 0x1c, 0xb8, 0x50, 0x70, 0xa2, 0xb8, 0xc1, - 0x29, 0x14, 0x07, 0x2a, 0x37, 0xfe, 0x04, 0x0e, 0x9c, 0x38, 0xe6, 0x40, 0x51, 0x45, 0xf1, 0x27, - 0x50, 0xdc, 0xa0, 0xfa, 0x63, 0xa4, 0x91, 0xa5, 0x45, 0x92, 0xbd, 0x70, 0xe1, 0x36, 0xfd, 0x74, - 0xf7, 0xef, 0xf9, 0xea, 0xfe, 0x3d, 0xdd, 0x2d, 0xc1, 0xab, 0x5d, 0xd7, 0xed, 0xda, 0xb8, 0xd8, - 0xb6, 0xdd, 0x7e, 0xa7, 0xd8, 0x21, 0x96, 0xed, 0x76, 0xcf, 0x6c, 0xf7, 0x51, 0xf1, 0xa2, 0xd4, - 0xc2, 0xcc, 0x7a, 0xbd, 0x48, 0x1c, 0x86, 0x1d, 0x56, 0xf0, 0x7c, 0x97, 0xb9, 0xe8, 0x79, 0x39, - 0xba, 0x20, 0x46, 0x17, 0x46, 0xa3, 0x0b, 0x6a, 0xb4, 0xfe, 0xac, 0x82, 0xb3, 0x3c, 0x52, 0xb4, - 0x1c, 0xc7, 0x65, 0x16, 0x23, 0xae, 0x43, 0xe5, 0x74, 0xfd, 0xb5, 0x59, 0xca, 0xda, 0xae, 0xc3, - 0xf0, 0x27, 0x4a, 0x9b, 0xfe, 0xa2, 0x1a, 0x6e, 0xbb, 0x4e, 0xd7, 0xef, 0x3b, 0x0e, 0x71, 0xba, - 0x45, 0xd7, 0xc3, 0xfe, 0x18, 0xe6, 0x33, 0x6a, 0x90, 0x68, 0xb5, 0xfa, 0x67, 0x45, 0xdc, 0xf3, - 0xd8, 0x40, 0x75, 0x6e, 0x5e, 0xee, 0x3c, 0x23, 0xd8, 0xee, 0x98, 0x3d, 0x8b, 0x9e, 0xab, 0x11, - 0xcf, 0x5e, 0x1e, 0x41, 0x99, 0xdf, 0x6f, 0x2b, 0x0b, 0xf2, 0x7f, 0x7d, 0x05, 0x96, 0xab, 0x22, - 0x00, 0x08, 0x41, 0xcc, 0xb1, 0x7a, 0x38, 0xa7, 0x6d, 0x6a, 0x5b, 0x49, 0x43, 0x7c, 0xa3, 0x17, - 0x20, 0xdd, 0x21, 0xd4, 0xb3, 0xad, 0x81, 0x29, 0xfa, 0x22, 0xa2, 0x2f, 0xa5, 0x64, 0xc7, 0x7c, - 0xc8, 0x03, 0x58, 0x7d, 0x84, 0x5b, 0x0f, 0x5d, 0xf7, 0xdc, 0xa4, 0xcc, 0x62, 0x38, 0xb7, 0xbc, - 0xa9, 0x6d, 0x65, 0x4a, 0x6f, 0x16, 0x66, 0x44, 0xb2, 0x20, 0xd5, 0x16, 0x3e, 0x94, 0x93, 0x4f, - 0xf8, 0x5c, 0x23, 0xfd, 0x28, 0xd4, 0x42, 0x3a, 0x24, 0x3c, 0x9f, 0xb8, 0x3e, 0x61, 0x83, 0x5c, - 0x74, 0x53, 0xdb, 0x8a, 0x1b, 0xc3, 0x36, 0x7a, 0x1e, 0x52, 0x84, 0x9a, 0x67, 0x96, 0x6d, 0xb7, - 0xac, 0xf6, 0x79, 0x2e, 0xb6, 0xa9, 0x6d, 0x25, 0x0c, 0x20, 0x74, 0x5f, 0x49, 0xd0, 0x73, 0x00, - 0x3d, 0xdb, 0xc4, 0x8e, 0xd5, 0xb2, 0x71, 0x27, 0x17, 0x17, 0xfd, 0xc9, 0x9e, 0x5d, 0x91, 0x02, - 0x54, 0x80, 0x0d, 0xe2, 0x78, 0x7d, 0x66, 0xaa, 0x8c, 0x08, 0xff, 0x68, 0x6e, 0x65, 0x33, 0xba, - 0x95, 0x34, 0xd6, 0x45, 0xd7, 0xae, 0xec, 0xe1, 0x5e, 0x52, 0x74, 0x13, 0x96, 0xf1, 0x05, 0x76, - 0x18, 0xcd, 0x25, 0xc4, 0x10, 0xd5, 0x42, 0x16, 0x64, 0x99, 0x6f, 0x11, 0x9e, 0x3a, 0xd3, 0x7b, - 0xe8, 0x5b, 0x14, 0xd3, 0x5c, 0x72, 0x33, 0xba, 0x95, 0x2a, 0xbd, 0x35, 0x6f, 0x04, 0x9a, 0x6a, - 0x7e, 0x43, 0x4c, 0x37, 0xd6, 0xd8, 0x58, 0x5b, 0xa8, 0xb6, 0xda, 0x7c, 0x45, 0xe4, 0x40, 0x84, - 0x5f, 0xb5, 0xd0, 0x3d, 0x58, 0x73, 0xfb, 0x2c, 0xe4, 0x03, 0xcd, 0xa5, 0x84, 0xe6, 0xad, 0x99, - 0x9a, 0x95, 0x6b, 0x46, 0x46, 0x02, 0xa8, 0x26, 0x45, 0x2f, 0x41, 0xc6, 0xc7, 0x14, 0x87, 0x10, - 0xd3, 0x22, 0x70, 0xab, 0x42, 0x3a, 0x1c, 0x76, 0x0f, 0xc0, 0xb3, 0x7c, 0xab, 0x87, 0x19, 0xf6, - 0x69, 0x6e, 0x55, 0x28, 0x7d, 0x7d, 0x5e, 0x77, 0x1b, 0xc1, 0x4c, 0x23, 0x04, 0x82, 0x0e, 0x21, - 0xd1, 0xc3, 0x94, 0x5a, 0x5d, 0x4c, 0x73, 0x19, 0x01, 0x58, 0x9c, 0x17, 0xf0, 0x48, 0xce, 0x33, - 0x86, 0x00, 0xe8, 0x02, 0xf4, 0x0e, 0x3e, 0xb3, 0xfa, 0x36, 0x33, 0x7d, 0x4c, 0x3d, 0xd7, 0xa1, - 0xd8, 0xf4, 0x6c, 0x8b, 0x9d, 0xb9, 0x7e, 0x8f, 0xe6, 0xd6, 0x36, 0xa3, 0x5b, 0x99, 0xd2, 0x3b, - 0x0b, 0xc2, 0x17, 0x1a, 0x0a, 0xc0, 0xc8, 0x29, 0x6c, 0x43, 0x41, 0x07, 0x1d, 0x14, 0xbd, 0x0b, - 0xb7, 0x7c, 0xd7, 0x65, 0xe6, 0x99, 0x6b, 0xdb, 0xee, 0xa3, 0xbe, 0x67, 0x4a, 0x6e, 0x91, 0x7b, - 0x27, 0x2b, 0x92, 0x77, 0x93, 0x0f, 0xd8, 0x57, 0xfd, 0x52, 0x83, 0xd8, 0x46, 0xef, 0xc1, 0x33, - 0x9e, 0xe5, 0xf3, 0xc1, 0x53, 0x27, 0xaf, 0x8b, 0xc9, 0x39, 0x39, 0x64, 0xca, 0x74, 0x1b, 0x6e, - 0x5c, 0x9e, 0x47, 0x9c, 0x33, 0x37, 0x87, 0x44, 0x28, 0x6f, 0xcf, 0xeb, 0xeb, 0x38, 0x72, 0xd5, - 0x39, 0x73, 0x0d, 0x74, 0x36, 0x21, 0xd3, 0x7f, 0x19, 0x85, 0xcc, 0xf8, 0xaa, 0x9d, 0xca, 0x1e, - 0x75, 0x88, 0xb1, 0x81, 0x27, 0x59, 0x23, 0x53, 0xba, 0x73, 0xb5, 0xfd, 0x50, 0x68, 0x0e, 0x3c, - 0x6c, 0x08, 0x20, 0x74, 0x0f, 0xe2, 0x9e, 0xe5, 0x33, 0x9a, 0x8b, 0x0a, 0xb7, 0xae, 0x8a, 0xd8, - 0xb0, 0x7c, 0x66, 0x48, 0x24, 0xb4, 0x0d, 0xeb, 0x8c, 0xf4, 0x30, 0x35, 0xad, 0x4e, 0x07, 0x77, - 0xcc, 0xb6, 0xdb, 0x77, 0x98, 0x60, 0x93, 0xb8, 0xb1, 0x26, 0x3a, 0xca, 0x5c, 0xbe, 0xcb, 0xc5, - 0x3a, 0x83, 0x18, 0x9f, 0xca, 0x7d, 0xe5, 0xfb, 0x20, 0xf0, 0x95, 0x7f, 0x73, 0x3e, 0xc2, 0x0e, - 0x23, 0x6c, 0x60, 0x0e, 0x5d, 0x4e, 0x1a, 0x20, 0x45, 0xdc, 0x03, 0x74, 0x03, 0xe2, 0x96, 0x4d, - 0x2c, 0x2a, 0x98, 0x2c, 0x69, 0xc8, 0x06, 0x27, 0xd8, 0x3e, 0xc5, 0xbe, 0xd9, 0xc1, 0x67, 0xc4, - 0xc1, 0x1d, 0xc5, 0x63, 0x29, 0x2e, 0xdb, 0x93, 0xa2, 0xfc, 0xdb, 0x10, 0x53, 0x00, 0xd9, 0xe6, - 0x83, 0x46, 0xc5, 0x3c, 0x3d, 0x3e, 0x69, 0x54, 0x76, 0xab, 0xfb, 0xd5, 0xca, 0x5e, 0x76, 0x09, - 0xa5, 0x60, 0xa5, 0xf2, 0xb5, 0xf2, 0x51, 0xa3, 0x56, 0xc9, 0x6a, 0x28, 0x0d, 0x89, 0x66, 0xe5, - 0xa8, 0x51, 0x2b, 0x37, 0x2b, 0xd9, 0x88, 0xfe, 0xc3, 0x08, 0x24, 0x87, 0x9b, 0xed, 0xaa, 0xf4, - 0x7e, 0x03, 0xe2, 0x17, 0x96, 0xdd, 0xc7, 0x81, 0xd9, 0xa2, 0x81, 0x5e, 0x84, 0xd5, 0x60, 0x83, - 0xc9, 0xde, 0x98, 0xe8, 0x4d, 0x2b, 0xe1, 0x7d, 0x31, 0xe8, 0x6d, 0xc8, 0x85, 0x42, 0x62, 0x8e, - 0x69, 0x8a, 0x8b, 0xf1, 0x4f, 0x8d, 0xe2, 0xb3, 0x17, 0xd2, 0xf9, 0x2c, 0x24, 0x7b, 0x96, 0xd3, - 0xb1, 0x98, 0xeb, 0x0f, 0x44, 0x39, 0xe1, 0xcc, 0x1d, 0x08, 0x50, 0x0e, 0x56, 0x3c, 0xdf, 0xed, - 0x79, 0x2c, 0x60, 0xeb, 0xa0, 0x89, 0x9e, 0x86, 0x15, 0x42, 0x4d, 0x9b, 0x50, 0x96, 0x4b, 0x88, - 0x59, 0xcb, 0x84, 0xd6, 0x08, 0x65, 0xfa, 0x4f, 0x74, 0x58, 0x51, 0xdb, 0x18, 0x7d, 0x35, 0x94, - 0xbc, 0xd4, 0xfc, 0x65, 0x2a, 0x60, 0x81, 0x26, 0xfe, 0x84, 0x1d, 0x2c, 0xa9, 0xa4, 0x1f, 0x41, - 0x9c, 0xf4, 0xac, 0xae, 0x0c, 0x5c, 0xaa, 0xf4, 0x7f, 0x8b, 0x82, 0x55, 0xf9, 0xe4, 0x83, 0x25, - 0x43, 0xa2, 0xa0, 0x36, 0xac, 0x7e, 0xdc, 0x27, 0xed, 0x73, 0xd3, 0xc7, 0x9e, 0x4d, 0xb0, 0x5c, - 0x2a, 0xa9, 0xd2, 0xff, 0x2f, 0x0a, 0x7b, 0x8f, 0x83, 0x18, 0x12, 0xe3, 0x60, 0xc9, 0x48, 0x7f, - 0x1c, 0x6a, 0x73, 0xff, 0xdb, 0x96, 0x2f, 0x57, 0xda, 0x15, 0xfc, 0xdf, 0xb5, 0xfc, 0x0e, 0xf7, - 0x9f, 0x63, 0xa0, 0x37, 0x60, 0xc5, 0xb3, 0x06, 0xb6, 0x6b, 0xc9, 0x02, 0x9b, 0x2a, 0x3d, 0x1d, - 0xc0, 0x05, 0xa7, 0x8d, 0xc2, 0x89, 0x38, 0x6d, 0x1c, 0x2c, 0x19, 0xc1, 0x48, 0x64, 0x43, 0x96, - 0x92, 0x9e, 0x67, 0xe3, 0x21, 0x37, 0xf3, 0x44, 0xf2, 0xd9, 0x1f, 0x2c, 0x6a, 0xcc, 0x89, 0xc0, - 0x09, 0x78, 0x98, 0xfb, 0xba, 0x46, 0xc7, 0x45, 0xe8, 0x23, 0x80, 0x96, 0x45, 0x49, 0xdb, 0x14, - 0x4e, 0x27, 0x84, 0x9e, 0x77, 0x17, 0xd5, 0xb3, 0xc3, 0x11, 0x94, 0xe7, 0xc9, 0x56, 0xd0, 0x40, - 0x26, 0xa4, 0x68, 0xbf, 0xdb, 0xc5, 0x54, 0x1c, 0xd7, 0x72, 0x49, 0x01, 0x7e, 0x67, 0x61, 0x27, - 0x46, 0x10, 0x07, 0x4b, 0x46, 0x18, 0x11, 0x51, 0xd8, 0xb0, 0x89, 0x73, 0x6e, 0xba, 0x7d, 0x66, - 0x8e, 0xe4, 0xe2, 0x18, 0x90, 0x2a, 0x95, 0x17, 0x55, 0x54, 0x23, 0xce, 0x79, 0xbd, 0xcf, 0x46, - 0xfa, 0x0e, 0x96, 0x8c, 0x75, 0xfb, 0xb2, 0x10, 0x7d, 0x03, 0x52, 0x7c, 0x0b, 0x99, 0x14, 0xdb, - 0xb8, 0xcd, 0x72, 0x29, 0xa1, 0xec, 0xf6, 0xe2, 0xca, 0x28, 0x3b, 0x11, 0x08, 0x07, 0x4b, 0x06, - 0xd8, 0xc3, 0x16, 0x22, 0xb0, 0xd6, 0xb6, 0x7c, 0xb7, 0x4f, 0xb1, 0x1d, 0xa8, 0x48, 0x0b, 0x15, - 0xef, 0x5f, 0x61, 0x29, 0x0a, 0x98, 0xa1, 0x9a, 0x4c, 0x7b, 0x4c, 0x82, 0x9a, 0x90, 0x08, 0xaa, - 0xbe, 0x3a, 0x95, 0x5e, 0xbd, 0xe8, 0x0f, 0x91, 0x74, 0x1d, 0x62, 0x9c, 0x04, 0x42, 0x55, 0x20, - 0x1a, 0x54, 0x01, 0xfd, 0x04, 0xe2, 0x62, 0x4f, 0xa3, 0x67, 0x20, 0x29, 0xf6, 0xb4, 0xd9, 0xf7, - 0x89, 0xa2, 0xdc, 0x84, 0x10, 0x9c, 0xfa, 0x04, 0xbd, 0x06, 0xc8, 0x6a, 0xb7, 0x31, 0xa5, 0xa4, - 0x45, 0x6c, 0xc1, 0x8f, 0x1c, 0x47, 0x92, 0xef, 0xfa, 0x58, 0x0f, 0x57, 0xa4, 0x57, 0x21, 0x1d, - 0xde, 0xd1, 0x9c, 0x92, 0x19, 0x61, 0x76, 0x40, 0xe5, 0xb2, 0xc1, 0x29, 0x79, 0x9c, 0x3c, 0x22, - 0xc2, 0xae, 0xb1, 0xcd, 0xaf, 0xff, 0x45, 0x83, 0x98, 0x58, 0xba, 0xd3, 0x31, 0x74, 0x48, 0xd0, - 0x7e, 0x4b, 0x76, 0x48, 0x73, 0x86, 0xed, 0x71, 0x8f, 0xa2, 0x97, 0x3c, 0x3a, 0x85, 0x95, 0x56, - 0x9f, 0x31, 0xbe, 0x0b, 0x62, 0x8b, 0x95, 0xe6, 0x30, 0xaf, 0x14, 0x76, 0x04, 0x86, 0x11, 0x60, - 0xe9, 0xef, 0xc0, 0xb2, 0x14, 0x4d, 0x2d, 0xb9, 0xfc, 0x7a, 0xe0, 0x52, 0x26, 0xce, 0xff, 0xca, - 0xda, 0xa0, 0xad, 0xf7, 0x20, 0x33, 0x4e, 0x0e, 0xe8, 0xbf, 0x20, 0x23, 0xce, 0xf9, 0xcc, 0x35, - 0xa9, 0x87, 0x71, 0xfb, 0xa1, 0xc2, 0x4a, 0x73, 0x69, 0xd3, 0x3d, 0x11, 0x32, 0xae, 0x87, 0xd2, - 0x9e, 0xad, 0xf0, 0xc4, 0x77, 0xb8, 0x4a, 0x0a, 0x1b, 0xa2, 0x63, 0x55, 0x52, 0xa4, 0xe8, 0x3b, - 0xb0, 0x76, 0x89, 0x8b, 0x10, 0x99, 0x42, 0x73, 0x9a, 0x88, 0xcd, 0xfb, 0xd7, 0xa3, 0xb9, 0x09, - 0x8e, 0xd3, 0x7f, 0x17, 0x85, 0xe4, 0x90, 0xa2, 0xae, 0x90, 0xda, 0x97, 0x20, 0xc3, 0x57, 0xb6, - 0xc5, 0x18, 0xee, 0x84, 0x5d, 0x5c, 0x1d, 0x4a, 0xc5, 0x82, 0x3f, 0x0c, 0xaa, 0x5d, 0xec, 0x1a, - 0xd5, 0x2e, 0xa8, 0x75, 0x1f, 0x8d, 0x56, 0x4c, 0x5c, 0x44, 0xe5, 0x2b, 0x57, 0x26, 0xe5, 0x89, - 0x65, 0xf3, 0x5b, 0x6d, 0xb8, 0x6e, 0xa6, 0x07, 0xe3, 0x02, 0xd6, 0x5c, 0x0f, 0x3b, 0x7c, 0x29, - 0x9b, 0xea, 0x6a, 0x25, 0x2b, 0xf8, 0xf1, 0x75, 0x8d, 0x28, 0xd4, 0x3d, 0xec, 0x9c, 0xfa, 0xa4, - 0x2c, 0x50, 0x8d, 0x55, 0x37, 0xdc, 0xd4, 0x5f, 0x80, 0xd5, 0xb1, 0x7e, 0x94, 0x85, 0xe8, 0x88, - 0x20, 0xf8, 0xa7, 0x9e, 0x07, 0x08, 0x71, 0xf1, 0x54, 0xf3, 0xf5, 0x73, 0x48, 0x85, 0x8a, 0x06, - 0xfa, 0xfa, 0x78, 0x19, 0xd2, 0x16, 0x3b, 0xf2, 0x4f, 0x96, 0xa1, 0xb1, 0x1a, 0xa4, 0x37, 0x60, - 0x7d, 0xa2, 0x70, 0xa0, 0x57, 0x20, 0xdb, 0xe1, 0x9f, 0x8e, 0x78, 0xa9, 0x30, 0x43, 0x07, 0xcb, - 0xb5, 0x90, 0x5c, 0x1c, 0xe6, 0x94, 0x8b, 0x91, 0x91, 0x8b, 0x5f, 0x46, 0x00, 0x46, 0xe5, 0xe1, - 0x31, 0x29, 0x3a, 0x85, 0x38, 0x61, 0xb8, 0x27, 0x69, 0xec, 0x0a, 0x47, 0x83, 0x91, 0x82, 0x42, - 0x95, 0xe1, 0x9e, 0x21, 0xd1, 0xf4, 0x3f, 0x6a, 0x10, 0xe3, 0x6d, 0x64, 0x40, 0x4c, 0x5c, 0x90, - 0xb4, 0xab, 0xd5, 0x1e, 0x09, 0xcd, 0x91, 0xc4, 0x25, 0x49, 0x60, 0x8d, 0x3c, 0x89, 0x84, 0x3d, - 0xd9, 0x84, 0x54, 0x07, 0xd3, 0xb6, 0x4f, 0x3c, 0xb1, 0xd0, 0x02, 0xf6, 0x18, 0x89, 0x9e, 0xe8, - 0xc6, 0xd2, 0x7f, 0x1f, 0x81, 0xcc, 0x78, 0x65, 0x44, 0x0f, 0x82, 0x58, 0xca, 0xa5, 0xb1, 0x7b, - 0xbd, 0x42, 0xfb, 0x1f, 0x16, 0xcf, 0xf7, 0x21, 0x33, 0x6e, 0x1c, 0x5f, 0xd1, 0xe7, 0x78, 0x10, - 0x6c, 0xda, 0x73, 0x3c, 0x10, 0xe4, 0x3a, 0x70, 0x5c, 0x67, 0xd0, 0x0b, 0xca, 0xee, 0xb0, 0x9d, - 0xff, 0x91, 0x06, 0x89, 0xe0, 0x14, 0x81, 0x72, 0x70, 0x83, 0xdf, 0xce, 0xf6, 0xeb, 0xc6, 0xd1, - 0xa5, 0x7b, 0x5c, 0x1a, 0x12, 0xfb, 0xe5, 0xdd, 0xca, 0x4e, 0xbd, 0x7e, 0x98, 0xd5, 0x50, 0x12, - 0xe2, 0x27, 0xb5, 0xf2, 0xee, 0x61, 0x36, 0x22, 0xef, 0x74, 0xb5, 0xca, 0x5d, 0xa3, 0x7c, 0x94, - 0x8d, 0xa2, 0x15, 0x88, 0x1e, 0x56, 0x0f, 0xb3, 0x31, 0x31, 0xe2, 0xf0, 0x41, 0xa3, 0x92, 0x8d, - 0xa3, 0x04, 0xc4, 0x6a, 0xd5, 0xe3, 0x4a, 0x76, 0x99, 0x0b, 0xef, 0x57, 0x77, 0x2a, 0x46, 0x76, - 0x05, 0x3d, 0x05, 0xeb, 0xe5, 0xdd, 0x66, 0xb5, 0x7e, 0x7c, 0x62, 0xd6, 0x8f, 0xcd, 0xbb, 0xf5, - 0xfa, 0xdd, 0x5a, 0x25, 0x9b, 0xd8, 0x49, 0xc2, 0x8a, 0x7a, 0x25, 0xd1, 0xbf, 0xaf, 0x01, 0x9a, - 0xbc, 0xef, 0xa3, 0xff, 0x9d, 0x7c, 0x49, 0x08, 0x6d, 0xef, 0x4b, 0xaf, 0x01, 0xf3, 0x3c, 0x5d, - 0x44, 0xfe, 0xf9, 0xd3, 0x45, 0x9e, 0x41, 0x3a, 0xfc, 0x06, 0x88, 0x9e, 0x83, 0x5b, 0x1f, 0x56, - 0x76, 0x0e, 0xea, 0xf5, 0x43, 0xf3, 0xa4, 0x59, 0x6e, 0x5e, 0xbe, 0xf0, 0xde, 0x82, 0xa7, 0xc6, - 0xbb, 0x2b, 0xc7, 0xe5, 0x9d, 0x5a, 0x65, 0x2f, 0xab, 0xa1, 0x6d, 0x78, 0x79, 0x6a, 0x97, 0xb9, - 0x5f, 0x37, 0xcc, 0x93, 0x5a, 0xbd, 0x69, 0xee, 0x57, 0x6b, 0xb5, 0xea, 0xf1, 0xdd, 0x6c, 0x24, - 0xff, 0xa5, 0x06, 0x88, 0x73, 0x84, 0x34, 0x84, 0x1a, 0xf8, 0xe3, 0x3e, 0xa6, 0x0c, 0xdd, 0x84, - 0x65, 0x69, 0xa8, 0xf2, 0x57, 0xb5, 0xf8, 0xe9, 0xca, 0xb6, 0x9c, 0x6e, 0x9f, 0x1f, 0x80, 0xda, - 0x6e, 0x27, 0xf0, 0x2a, 0x1d, 0x08, 0x77, 0xdd, 0x0e, 0x46, 0x35, 0x48, 0x29, 0xc7, 0x2f, 0x08, - 0x7e, 0x24, 0x56, 0x66, 0xa6, 0xf4, 0x3f, 0x73, 0xae, 0xbe, 0xfb, 0x04, 0x3f, 0x32, 0x80, 0x0c, - 0xbf, 0xf9, 0x81, 0xcb, 0xe3, 0xea, 0x28, 0xf9, 0x14, 0xab, 0x17, 0x89, 0x04, 0x17, 0x9c, 0x90, - 0x4f, 0x79, 0x90, 0x40, 0x74, 0x32, 0xf7, 0x1c, 0x3b, 0xea, 0x36, 0x2d, 0x86, 0x37, 0xb9, 0x20, - 0xff, 0x5d, 0x0d, 0x36, 0xc6, 0xbc, 0x53, 0x87, 0xa0, 0x32, 0xac, 0x48, 0x0d, 0x01, 0x17, 0xfc, - 0xf7, 0x9c, 0xd6, 0x19, 0xc1, 0x3c, 0xf4, 0x32, 0xac, 0x39, 0xfc, 0x1c, 0x15, 0x52, 0x2f, 0x63, - 0xb1, 0xca, 0xc5, 0x8d, 0xa1, 0x09, 0x3f, 0xd3, 0x20, 0x7b, 0x17, 0x2b, 0x0b, 0x82, 0xf0, 0x4e, - 0x7b, 0x84, 0xf8, 0xf7, 0x87, 0x36, 0xff, 0x27, 0x0d, 0x36, 0x76, 0x7d, 0x6c, 0x31, 0x3c, 0x6e, - 0xde, 0xe3, 0xb2, 0xff, 0x01, 0x2c, 0xcb, 0xd9, 0xea, 0x98, 0x30, 0x77, 0xd4, 0xd4, 0xb4, 0x49, - 0x1f, 0xa3, 0xb3, 0x7d, 0x8c, 0x5d, 0xcf, 0xc7, 0x1f, 0x44, 0x60, 0xe3, 0xd4, 0xeb, 0x4c, 0xf8, - 0x38, 0xf2, 0x45, 0x7b, 0x42, 0xbe, 0x4c, 0xcb, 0xd7, 0x1d, 0x48, 0xf5, 0x85, 0x72, 0xf1, 0x53, - 0x84, 0x7a, 0xc8, 0xd0, 0x27, 0x5e, 0x07, 0xf6, 0x09, 0xb6, 0x3b, 0x47, 0x16, 0x3d, 0x37, 0x40, - 0x0e, 0xe7, 0xdf, 0x4f, 0x38, 0x10, 0xaf, 0xc0, 0xc6, 0x1e, 0xb6, 0xf1, 0xe5, 0x38, 0x4c, 0x59, - 0x8a, 0xf9, 0xbf, 0x47, 0xe0, 0xd6, 0x8e, 0xc5, 0xda, 0x0f, 0xc3, 0x81, 0x9b, 0xc9, 0x0d, 0xdb, - 0x90, 0x55, 0xe6, 0xb6, 0xf8, 0x5c, 0x73, 0x78, 0xdc, 0xe1, 0x57, 0x52, 0xd9, 0x23, 0x41, 0x7d, - 0x82, 0xbe, 0x09, 0x1b, 0x63, 0x63, 0x89, 0x63, 0x13, 0x07, 0xab, 0xf8, 0xbc, 0x3a, 0xa7, 0x8b, - 0x02, 0x8d, 0x5f, 0xde, 0x43, 0xe0, 0x55, 0x01, 0x34, 0x99, 0x9c, 0xd8, 0xec, 0xe4, 0xc4, 0xaf, - 0x93, 0x9c, 0xe5, 0x6b, 0x25, 0x67, 0x27, 0x03, 0xe9, 0x70, 0x3c, 0xf2, 0x26, 0xe8, 0xd3, 0x12, - 0xf0, 0xc4, 0xe8, 0x2b, 0x7f, 0xa1, 0x32, 0x1c, 0x5e, 0x12, 0x33, 0x33, 0x1c, 0xd2, 0x1b, 0xb9, - 0xa2, 0xde, 0x06, 0xa4, 0x42, 0xc9, 0x7b, 0x02, 0x9e, 0x6c, 0x7f, 0x00, 0x50, 0x0d, 0x57, 0x8b, - 0xa7, 0xab, 0xc7, 0xcd, 0xca, 0x71, 0xd3, 0xbc, 0x5f, 0xad, 0x7c, 0x78, 0xa9, 0x66, 0xde, 0x80, - 0x6c, 0xb8, 0x73, 0xff, 0xb4, 0x56, 0xcb, 0x6a, 0xa5, 0x2f, 0x92, 0xb0, 0xa2, 0x02, 0x80, 0x7e, - 0xad, 0x41, 0x2a, 0x54, 0x30, 0xd0, 0x1b, 0x33, 0xcd, 0x99, 0x2c, 0x9e, 0xfa, 0x9b, 0x8b, 0x4d, - 0x92, 0x49, 0xcd, 0x97, 0xbe, 0xf7, 0x87, 0x3f, 0xff, 0x34, 0xf2, 0x2a, 0xda, 0x1e, 0xfe, 0x48, - 0xfa, 0x6d, 0x19, 0xf6, 0xf7, 0x3c, 0xdf, 0xfd, 0x16, 0x6e, 0x33, 0x5a, 0xdc, 0x2e, 0x5a, 0x5d, - 0xec, 0xb0, 0xcf, 0x8a, 0x41, 0x11, 0xfa, 0xb9, 0x06, 0xc9, 0x61, 0x71, 0x41, 0xb3, 0x7f, 0x7a, - 0xba, 0x5c, 0x88, 0xf4, 0x79, 0xc3, 0x3d, 0xcd, 0x3a, 0x4e, 0x15, 0x13, 0xb6, 0x05, 0xa6, 0x15, - 0xb7, 0x3f, 0x43, 0x9f, 0x6b, 0x90, 0x0e, 0x97, 0x17, 0x34, 0x3b, 0x30, 0x53, 0xaa, 0xd1, 0xfc, - 0x36, 0xde, 0x16, 0x36, 0xbe, 0x99, 0x5f, 0x20, 0x82, 0xb7, 0x03, 0x36, 0xff, 0x8d, 0x06, 0xe9, - 0xf0, 0x66, 0x9b, 0xc3, 0xd6, 0x29, 0x55, 0x65, 0x7e, 0x5b, 0xcb, 0xc2, 0xd6, 0x3b, 0xa5, 0xd7, - 0x47, 0xb6, 0xaa, 0x1f, 0xe0, 0x67, 0x85, 0x75, 0x68, 0xf2, 0x8f, 0x35, 0x48, 0x87, 0xb7, 0xef, - 0x1c, 0x26, 0x4f, 0x29, 0x00, 0xfa, 0xcd, 0x09, 0xc2, 0xab, 0xf4, 0x3c, 0x36, 0x08, 0x32, 0xbe, - 0xbd, 0x48, 0xc6, 0xbf, 0xd0, 0x00, 0x4d, 0xf2, 0x16, 0x9a, 0x7d, 0x09, 0x7f, 0x6c, 0xb5, 0xd1, - 0x9f, 0x0b, 0xe6, 0x86, 0xfe, 0x1c, 0x50, 0xa8, 0x07, 0x7f, 0x0e, 0x08, 0xe2, 0x98, 0x7f, 0x6b, - 0x81, 0x9c, 0xb7, 0x46, 0xca, 0x6e, 0x6b, 0xdb, 0x23, 0xa3, 0xc7, 0xb8, 0x70, 0x5e, 0xa3, 0xa7, - 0x11, 0xe8, 0xbf, 0xcc, 0x68, 0xa9, 0xec, 0xb6, 0xb6, 0xbd, 0xf3, 0xb9, 0x06, 0x2f, 0xb6, 0xdd, - 0xde, 0x2c, 0x1b, 0x77, 0x14, 0xdb, 0x36, 0x78, 0x6e, 0x1b, 0xda, 0x47, 0x55, 0x35, 0xbe, 0xeb, - 0xf2, 0x4a, 0x58, 0x70, 0xfd, 0x6e, 0xb1, 0x8b, 0x1d, 0x91, 0xf9, 0xa2, 0xec, 0xb2, 0x3c, 0x42, - 0x1f, 0xfb, 0xbf, 0x8d, 0x3b, 0x23, 0xd1, 0xdf, 0x34, 0xed, 0x17, 0x91, 0xc8, 0xde, 0xfe, 0xaf, - 0x22, 0xcf, 0xdf, 0x95, 0x98, 0xbb, 0xc2, 0x86, 0xbd, 0x91, 0x0d, 0xf7, 0xe5, 0xa4, 0xd6, 0xb2, - 0xc0, 0x7f, 0xe3, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x83, 0x8c, 0xb5, 0x01, 0x83, 0x22, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/session.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/session.pb.go deleted file mode 100644 index fa627cb9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/session.pb.go +++ /dev/null @@ -1,1247 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dialogflow/v2beta1/session.proto - -package dialogflow - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/struct" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" -import google_type "google.golang.org/genproto/googleapis/type/latlng" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Audio encoding of the audio content sent in the conversational query request. -// Refer to the [Cloud Speech API documentation](/speech/docs/basics) for more -// details. -type AudioEncoding int32 - -const ( - // Not specified. - AudioEncoding_AUDIO_ENCODING_UNSPECIFIED AudioEncoding = 0 - // Uncompressed 16-bit signed little-endian samples (Linear PCM). - AudioEncoding_AUDIO_ENCODING_LINEAR_16 AudioEncoding = 1 - // [`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio - // Codec) is the recommended encoding because it is lossless (therefore - // recognition is not compromised) and requires only about half the - // bandwidth of `LINEAR16`. `FLAC` stream encoding supports 16-bit and - // 24-bit samples, however, not all fields in `STREAMINFO` are supported. - AudioEncoding_AUDIO_ENCODING_FLAC AudioEncoding = 2 - // 8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law. - AudioEncoding_AUDIO_ENCODING_MULAW AudioEncoding = 3 - // Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000. - AudioEncoding_AUDIO_ENCODING_AMR AudioEncoding = 4 - // Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000. - AudioEncoding_AUDIO_ENCODING_AMR_WB AudioEncoding = 5 - // Opus encoded audio frames in Ogg container - // ([OggOpus](https://wiki.xiph.org/OggOpus)). - // `sample_rate_hertz` must be 16000. - AudioEncoding_AUDIO_ENCODING_OGG_OPUS AudioEncoding = 6 - // Although the use of lossy encodings is not recommended, if a very low - // bitrate encoding is required, `OGG_OPUS` is highly preferred over - // Speex encoding. The [Speex](https://speex.org/) encoding supported by - // Dialogflow API has a header byte in each block, as in MIME type - // `audio/x-speex-with-header-byte`. - // It is a variant of the RTP Speex encoding defined in - // [RFC 5574](https://tools.ietf.org/html/rfc5574). - // The stream is a sequence of blocks, one block per RTP packet. Each block - // starts with a byte containing the length of the block, in bytes, followed - // by one or more frames of Speex data, padded to an integral number of - // bytes (octets) as specified in RFC 5574. In other words, each RTP header - // is replaced with a single byte containing the block length. Only Speex - // wideband is supported. `sample_rate_hertz` must be 16000. - AudioEncoding_AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE AudioEncoding = 7 -) - -var AudioEncoding_name = map[int32]string{ - 0: "AUDIO_ENCODING_UNSPECIFIED", - 1: "AUDIO_ENCODING_LINEAR_16", - 2: "AUDIO_ENCODING_FLAC", - 3: "AUDIO_ENCODING_MULAW", - 4: "AUDIO_ENCODING_AMR", - 5: "AUDIO_ENCODING_AMR_WB", - 6: "AUDIO_ENCODING_OGG_OPUS", - 7: "AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE", -} -var AudioEncoding_value = map[string]int32{ - "AUDIO_ENCODING_UNSPECIFIED": 0, - "AUDIO_ENCODING_LINEAR_16": 1, - "AUDIO_ENCODING_FLAC": 2, - "AUDIO_ENCODING_MULAW": 3, - "AUDIO_ENCODING_AMR": 4, - "AUDIO_ENCODING_AMR_WB": 5, - "AUDIO_ENCODING_OGG_OPUS": 6, - "AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE": 7, -} - -func (x AudioEncoding) String() string { - return proto.EnumName(AudioEncoding_name, int32(x)) -} -func (AudioEncoding) EnumDescriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -// Type of the response message. -type StreamingRecognitionResult_MessageType int32 - -const ( - // Not specified. Should never be used. - StreamingRecognitionResult_MESSAGE_TYPE_UNSPECIFIED StreamingRecognitionResult_MessageType = 0 - // Message contains a (possibly partial) transcript. - StreamingRecognitionResult_TRANSCRIPT StreamingRecognitionResult_MessageType = 1 - // Event indicates that the server has detected the end of the user's speech - // utterance and expects no additional speech. Therefore, the server will - // not process additional audio (although it may subsequently return - // additional results). The client should stop sending additional audio - // data, half-close the gRPC connection, and wait for any additional results - // until the server closes the gRPC connection. This message is only sent if - // `single_utterance` was set to `true`, and is not used otherwise. - StreamingRecognitionResult_END_OF_SINGLE_UTTERANCE StreamingRecognitionResult_MessageType = 2 -) - -var StreamingRecognitionResult_MessageType_name = map[int32]string{ - 0: "MESSAGE_TYPE_UNSPECIFIED", - 1: "TRANSCRIPT", - 2: "END_OF_SINGLE_UTTERANCE", -} -var StreamingRecognitionResult_MessageType_value = map[string]int32{ - "MESSAGE_TYPE_UNSPECIFIED": 0, - "TRANSCRIPT": 1, - "END_OF_SINGLE_UTTERANCE": 2, -} - -func (x StreamingRecognitionResult_MessageType) String() string { - return proto.EnumName(StreamingRecognitionResult_MessageType_name, int32(x)) -} -func (StreamingRecognitionResult_MessageType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor4, []int{7, 0} -} - -// The request to detect user's intent. -type DetectIntentRequest struct { - // Required. The name of the session this query is sent to. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>`. - // It's up to the API caller to choose an appropriate session ID. It can be - // a random number or some type of user identifier (preferably hashed). - // The length of the session ID must not exceed 36 bytes. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // Optional. The parameters of this query. - QueryParams *QueryParameters `protobuf:"bytes,2,opt,name=query_params,json=queryParams" json:"query_params,omitempty"` - // Required. The input specification. It can be set to: - // - // 1. an audio config - // which instructs the speech recognizer how to process the speech audio, - // - // 2. a conversational query in the form of text, or - // - // 3. an event that specifies which intent to trigger. - QueryInput *QueryInput `protobuf:"bytes,3,opt,name=query_input,json=queryInput" json:"query_input,omitempty"` - // Optional. The natural language speech audio to be processed. This field - // should be populated iff `query_input` is set to an input audio config. - // A single request can contain up to 1 minute of speech audio data. - InputAudio []byte `protobuf:"bytes,5,opt,name=input_audio,json=inputAudio,proto3" json:"input_audio,omitempty"` -} - -func (m *DetectIntentRequest) Reset() { *m = DetectIntentRequest{} } -func (m *DetectIntentRequest) String() string { return proto.CompactTextString(m) } -func (*DetectIntentRequest) ProtoMessage() {} -func (*DetectIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *DetectIntentRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *DetectIntentRequest) GetQueryParams() *QueryParameters { - if m != nil { - return m.QueryParams - } - return nil -} - -func (m *DetectIntentRequest) GetQueryInput() *QueryInput { - if m != nil { - return m.QueryInput - } - return nil -} - -func (m *DetectIntentRequest) GetInputAudio() []byte { - if m != nil { - return m.InputAudio - } - return nil -} - -// The message returned from the DetectIntent method. -type DetectIntentResponse struct { - // The unique identifier of the response. It can be used to - // locate a response in the training example set or for reporting issues. - ResponseId string `protobuf:"bytes,1,opt,name=response_id,json=responseId" json:"response_id,omitempty"` - // The results of the conversational query or event processing. - QueryResult *QueryResult `protobuf:"bytes,2,opt,name=query_result,json=queryResult" json:"query_result,omitempty"` - // Specifies the status of the webhook request. `webhook_status` - // is never populated in webhook requests. - WebhookStatus *google_rpc.Status `protobuf:"bytes,3,opt,name=webhook_status,json=webhookStatus" json:"webhook_status,omitempty"` -} - -func (m *DetectIntentResponse) Reset() { *m = DetectIntentResponse{} } -func (m *DetectIntentResponse) String() string { return proto.CompactTextString(m) } -func (*DetectIntentResponse) ProtoMessage() {} -func (*DetectIntentResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *DetectIntentResponse) GetResponseId() string { - if m != nil { - return m.ResponseId - } - return "" -} - -func (m *DetectIntentResponse) GetQueryResult() *QueryResult { - if m != nil { - return m.QueryResult - } - return nil -} - -func (m *DetectIntentResponse) GetWebhookStatus() *google_rpc.Status { - if m != nil { - return m.WebhookStatus - } - return nil -} - -// Represents the parameters of the conversational query. -type QueryParameters struct { - // Optional. The time zone of this conversational query from the - // [time zone database](https://www.iana.org/time-zones), e.g., - // America/New_York, Europe/Paris. If not provided, the time zone specified in - // agent settings is used. - TimeZone string `protobuf:"bytes,1,opt,name=time_zone,json=timeZone" json:"time_zone,omitempty"` - // Optional. The geo location of this conversational query. - GeoLocation *google_type.LatLng `protobuf:"bytes,2,opt,name=geo_location,json=geoLocation" json:"geo_location,omitempty"` - // Optional. The collection of contexts to be activated before this query is - // executed. - Contexts []*Context `protobuf:"bytes,3,rep,name=contexts" json:"contexts,omitempty"` - // Optional. Specifies whether to delete all contexts in the current session - // before the new ones are activated. - ResetContexts bool `protobuf:"varint,4,opt,name=reset_contexts,json=resetContexts" json:"reset_contexts,omitempty"` - // Optional. The collection of session entity types to replace or extend - // developer entities with for this query only. The entity synonyms apply - // to all languages. - SessionEntityTypes []*SessionEntityType `protobuf:"bytes,5,rep,name=session_entity_types,json=sessionEntityTypes" json:"session_entity_types,omitempty"` - // Optional. This field can be used to pass custom data into the webhook - // associated with the agent. Arbitrary JSON objects are supported. - Payload *google_protobuf4.Struct `protobuf:"bytes,6,opt,name=payload" json:"payload,omitempty"` -} - -func (m *QueryParameters) Reset() { *m = QueryParameters{} } -func (m *QueryParameters) String() string { return proto.CompactTextString(m) } -func (*QueryParameters) ProtoMessage() {} -func (*QueryParameters) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} } - -func (m *QueryParameters) GetTimeZone() string { - if m != nil { - return m.TimeZone - } - return "" -} - -func (m *QueryParameters) GetGeoLocation() *google_type.LatLng { - if m != nil { - return m.GeoLocation - } - return nil -} - -func (m *QueryParameters) GetContexts() []*Context { - if m != nil { - return m.Contexts - } - return nil -} - -func (m *QueryParameters) GetResetContexts() bool { - if m != nil { - return m.ResetContexts - } - return false -} - -func (m *QueryParameters) GetSessionEntityTypes() []*SessionEntityType { - if m != nil { - return m.SessionEntityTypes - } - return nil -} - -func (m *QueryParameters) GetPayload() *google_protobuf4.Struct { - if m != nil { - return m.Payload - } - return nil -} - -// Represents the query input. It can contain either: -// -// 1. An audio config which -// instructs the speech recognizer how to process the speech audio. -// -// 2. A conversational query in the form of text,. -// -// 3. An event that specifies which intent to trigger. -type QueryInput struct { - // Required. The input specification. - // - // Types that are valid to be assigned to Input: - // *QueryInput_AudioConfig - // *QueryInput_Text - // *QueryInput_Event - Input isQueryInput_Input `protobuf_oneof:"input"` -} - -func (m *QueryInput) Reset() { *m = QueryInput{} } -func (m *QueryInput) String() string { return proto.CompactTextString(m) } -func (*QueryInput) ProtoMessage() {} -func (*QueryInput) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} } - -type isQueryInput_Input interface { - isQueryInput_Input() -} - -type QueryInput_AudioConfig struct { - AudioConfig *InputAudioConfig `protobuf:"bytes,1,opt,name=audio_config,json=audioConfig,oneof"` -} -type QueryInput_Text struct { - Text *TextInput `protobuf:"bytes,2,opt,name=text,oneof"` -} -type QueryInput_Event struct { - Event *EventInput `protobuf:"bytes,3,opt,name=event,oneof"` -} - -func (*QueryInput_AudioConfig) isQueryInput_Input() {} -func (*QueryInput_Text) isQueryInput_Input() {} -func (*QueryInput_Event) isQueryInput_Input() {} - -func (m *QueryInput) GetInput() isQueryInput_Input { - if m != nil { - return m.Input - } - return nil -} - -func (m *QueryInput) GetAudioConfig() *InputAudioConfig { - if x, ok := m.GetInput().(*QueryInput_AudioConfig); ok { - return x.AudioConfig - } - return nil -} - -func (m *QueryInput) GetText() *TextInput { - if x, ok := m.GetInput().(*QueryInput_Text); ok { - return x.Text - } - return nil -} - -func (m *QueryInput) GetEvent() *EventInput { - if x, ok := m.GetInput().(*QueryInput_Event); ok { - return x.Event - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*QueryInput) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _QueryInput_OneofMarshaler, _QueryInput_OneofUnmarshaler, _QueryInput_OneofSizer, []interface{}{ - (*QueryInput_AudioConfig)(nil), - (*QueryInput_Text)(nil), - (*QueryInput_Event)(nil), - } -} - -func _QueryInput_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*QueryInput) - // input - switch x := m.Input.(type) { - case *QueryInput_AudioConfig: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AudioConfig); err != nil { - return err - } - case *QueryInput_Text: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Text); err != nil { - return err - } - case *QueryInput_Event: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Event); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("QueryInput.Input has unexpected type %T", x) - } - return nil -} - -func _QueryInput_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*QueryInput) - switch tag { - case 1: // input.audio_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InputAudioConfig) - err := b.DecodeMessage(msg) - m.Input = &QueryInput_AudioConfig{msg} - return true, err - case 2: // input.text - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TextInput) - err := b.DecodeMessage(msg) - m.Input = &QueryInput_Text{msg} - return true, err - case 3: // input.event - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(EventInput) - err := b.DecodeMessage(msg) - m.Input = &QueryInput_Event{msg} - return true, err - default: - return false, nil - } -} - -func _QueryInput_OneofSizer(msg proto.Message) (n int) { - m := msg.(*QueryInput) - // input - switch x := m.Input.(type) { - case *QueryInput_AudioConfig: - s := proto.Size(x.AudioConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *QueryInput_Text: - s := proto.Size(x.Text) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *QueryInput_Event: - s := proto.Size(x.Event) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents the result of conversational query or event processing. -type QueryResult struct { - // The original conversational query text: - // - If natural language text was provided as input, `query_text` contains - // a copy of the input. - // - If natural language speech audio was provided as input, `query_text` - // contains the speech recognition result. If speech recognizer produced - // multiple alternatives, a particular one is picked. - // - If an event was provided as input, `query_text` is not set. - QueryText string `protobuf:"bytes,1,opt,name=query_text,json=queryText" json:"query_text,omitempty"` - // The language that was triggered during intent detection. - // See [Language Support](https://dialogflow.com/docs/reference/language) - // for a list of the currently supported language codes. - LanguageCode string `protobuf:"bytes,15,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // The Speech recognition confidence between 0.0 and 1.0. A higher number - // indicates an estimated greater likelihood that the recognized words are - // correct. The default of 0.0 is a sentinel value indicating that confidence - // was not set. - // - // You should not rely on this field as it isn't guaranteed to be accurate, or - // even set. In particular this field isn't set in Webhook calls and for - // StreamingDetectIntent since the streaming endpoint has separate confidence - // estimates per portion of the audio in StreamingRecognitionResult. - SpeechRecognitionConfidence float32 `protobuf:"fixed32,2,opt,name=speech_recognition_confidence,json=speechRecognitionConfidence" json:"speech_recognition_confidence,omitempty"` - // The action name from the matched intent. - Action string `protobuf:"bytes,3,opt,name=action" json:"action,omitempty"` - // The collection of extracted parameters. - Parameters *google_protobuf4.Struct `protobuf:"bytes,4,opt,name=parameters" json:"parameters,omitempty"` - // This field is set to: - // - `false` if the matched intent has required parameters and not all of - // the required parameter values have been collected. - // - `true` if all required parameter values have been collected, or if the - // matched intent doesn't contain any required parameters. - AllRequiredParamsPresent bool `protobuf:"varint,5,opt,name=all_required_params_present,json=allRequiredParamsPresent" json:"all_required_params_present,omitempty"` - // The text to be pronounced to the user or shown on the screen. - FulfillmentText string `protobuf:"bytes,6,opt,name=fulfillment_text,json=fulfillmentText" json:"fulfillment_text,omitempty"` - // The collection of rich messages to present to the user. - FulfillmentMessages []*Intent_Message `protobuf:"bytes,7,rep,name=fulfillment_messages,json=fulfillmentMessages" json:"fulfillment_messages,omitempty"` - // If the query was fulfilled by a webhook call, this field is set to the - // value of the `source` field returned in the webhook response. - WebhookSource string `protobuf:"bytes,8,opt,name=webhook_source,json=webhookSource" json:"webhook_source,omitempty"` - // If the query was fulfilled by a webhook call, this field is set to the - // value of the `payload` field returned in the webhook response. - WebhookPayload *google_protobuf4.Struct `protobuf:"bytes,9,opt,name=webhook_payload,json=webhookPayload" json:"webhook_payload,omitempty"` - // The collection of output contexts. If applicable, - // `output_contexts.parameters` contains entries with name - // `<parameter name>.original` containing the original parameter values - // before the query. - OutputContexts []*Context `protobuf:"bytes,10,rep,name=output_contexts,json=outputContexts" json:"output_contexts,omitempty"` - // The intent that matched the conversational query. Some, not - // all fields are filled in this message, including but not limited to: - // `name`, `display_name` and `webhook_state`. - Intent *Intent `protobuf:"bytes,11,opt,name=intent" json:"intent,omitempty"` - // The intent detection confidence. Values range from 0.0 - // (completely uncertain) to 1.0 (completely certain). - IntentDetectionConfidence float32 `protobuf:"fixed32,12,opt,name=intent_detection_confidence,json=intentDetectionConfidence" json:"intent_detection_confidence,omitempty"` - // The free-form diagnostic info. For example, this field - // could contain webhook call latency. - DiagnosticInfo *google_protobuf4.Struct `protobuf:"bytes,14,opt,name=diagnostic_info,json=diagnosticInfo" json:"diagnostic_info,omitempty"` -} - -func (m *QueryResult) Reset() { *m = QueryResult{} } -func (m *QueryResult) String() string { return proto.CompactTextString(m) } -func (*QueryResult) ProtoMessage() {} -func (*QueryResult) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} } - -func (m *QueryResult) GetQueryText() string { - if m != nil { - return m.QueryText - } - return "" -} - -func (m *QueryResult) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *QueryResult) GetSpeechRecognitionConfidence() float32 { - if m != nil { - return m.SpeechRecognitionConfidence - } - return 0 -} - -func (m *QueryResult) GetAction() string { - if m != nil { - return m.Action - } - return "" -} - -func (m *QueryResult) GetParameters() *google_protobuf4.Struct { - if m != nil { - return m.Parameters - } - return nil -} - -func (m *QueryResult) GetAllRequiredParamsPresent() bool { - if m != nil { - return m.AllRequiredParamsPresent - } - return false -} - -func (m *QueryResult) GetFulfillmentText() string { - if m != nil { - return m.FulfillmentText - } - return "" -} - -func (m *QueryResult) GetFulfillmentMessages() []*Intent_Message { - if m != nil { - return m.FulfillmentMessages - } - return nil -} - -func (m *QueryResult) GetWebhookSource() string { - if m != nil { - return m.WebhookSource - } - return "" -} - -func (m *QueryResult) GetWebhookPayload() *google_protobuf4.Struct { - if m != nil { - return m.WebhookPayload - } - return nil -} - -func (m *QueryResult) GetOutputContexts() []*Context { - if m != nil { - return m.OutputContexts - } - return nil -} - -func (m *QueryResult) GetIntent() *Intent { - if m != nil { - return m.Intent - } - return nil -} - -func (m *QueryResult) GetIntentDetectionConfidence() float32 { - if m != nil { - return m.IntentDetectionConfidence - } - return 0 -} - -func (m *QueryResult) GetDiagnosticInfo() *google_protobuf4.Struct { - if m != nil { - return m.DiagnosticInfo - } - return nil -} - -// The top-level message sent by the client to the -// `StreamingDetectIntent` method. -// -// Multiple request messages should be sent in order: -// -// 1. The first message must contain `session`, `query_input` plus optionally -// `query_params` and/or `single_utterance`. The message must not contain -// `input_audio`. -// -// 2. If `query_input` was set to a streaming input audio config, -// all subsequent messages must contain only `input_audio`. -// Otherwise, finish the request stream. -type StreamingDetectIntentRequest struct { - // Required. The name of the session the query is sent to. - // Format of the session name: - // `projects/<Project ID>/agent/sessions/<Session ID>`. - // It’s up to the API caller to choose an appropriate <Session ID>. It can be - // a random number or some type of user identifier (preferably hashed). - // The length of the session ID must not exceed 36 characters. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // Optional. The parameters of this query. - QueryParams *QueryParameters `protobuf:"bytes,2,opt,name=query_params,json=queryParams" json:"query_params,omitempty"` - // Required. The input specification. It can be set to: - // - // 1. an audio config which instructs the speech recognizer how to process - // the speech audio, - // - // 2. a conversational query in the form of text, or - // - // 3. an event that specifies which intent to trigger. - QueryInput *QueryInput `protobuf:"bytes,3,opt,name=query_input,json=queryInput" json:"query_input,omitempty"` - // Optional. If `true`, the recognizer will detect a single spoken utterance - // in input audio. When it detects that the user has paused or stopped - // speaking, it will cease recognition. This setting is ignored when - // `query_input` is a piece of text or an event. - SingleUtterance bool `protobuf:"varint,4,opt,name=single_utterance,json=singleUtterance" json:"single_utterance,omitempty"` - // Optional. The input audio content to be recognized. Must be sent if - // `query_input` was set to a streaming input audio config. The complete audio - // over all streaming messages must not exceed 1 minute. - InputAudio []byte `protobuf:"bytes,6,opt,name=input_audio,json=inputAudio,proto3" json:"input_audio,omitempty"` -} - -func (m *StreamingDetectIntentRequest) Reset() { *m = StreamingDetectIntentRequest{} } -func (m *StreamingDetectIntentRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingDetectIntentRequest) ProtoMessage() {} -func (*StreamingDetectIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} } - -func (m *StreamingDetectIntentRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *StreamingDetectIntentRequest) GetQueryParams() *QueryParameters { - if m != nil { - return m.QueryParams - } - return nil -} - -func (m *StreamingDetectIntentRequest) GetQueryInput() *QueryInput { - if m != nil { - return m.QueryInput - } - return nil -} - -func (m *StreamingDetectIntentRequest) GetSingleUtterance() bool { - if m != nil { - return m.SingleUtterance - } - return false -} - -func (m *StreamingDetectIntentRequest) GetInputAudio() []byte { - if m != nil { - return m.InputAudio - } - return nil -} - -// The top-level message returned from the -// `StreamingDetectIntent` method. -// -// Multiple response messages can be returned in order: -// -// 1. If the input was set to streaming audio, the first one or more messages -// contain `recognition_result`. Each `recognition_result` represents a more -// complete transcript of what the user said. The last `recognition_result` -// has `is_final` set to `true`. -// -// 2. The next message contains `response_id`, `query_result` -// and optionally `webhook_status` if a WebHook was called. -type StreamingDetectIntentResponse struct { - // The unique identifier of the response. It can be used to - // locate a response in the training example set or for reporting issues. - ResponseId string `protobuf:"bytes,1,opt,name=response_id,json=responseId" json:"response_id,omitempty"` - // The result of speech recognition. - RecognitionResult *StreamingRecognitionResult `protobuf:"bytes,2,opt,name=recognition_result,json=recognitionResult" json:"recognition_result,omitempty"` - // The result of the conversational query or event processing. - QueryResult *QueryResult `protobuf:"bytes,3,opt,name=query_result,json=queryResult" json:"query_result,omitempty"` - // Specifies the status of the webhook request. - WebhookStatus *google_rpc.Status `protobuf:"bytes,4,opt,name=webhook_status,json=webhookStatus" json:"webhook_status,omitempty"` -} - -func (m *StreamingDetectIntentResponse) Reset() { *m = StreamingDetectIntentResponse{} } -func (m *StreamingDetectIntentResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingDetectIntentResponse) ProtoMessage() {} -func (*StreamingDetectIntentResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} } - -func (m *StreamingDetectIntentResponse) GetResponseId() string { - if m != nil { - return m.ResponseId - } - return "" -} - -func (m *StreamingDetectIntentResponse) GetRecognitionResult() *StreamingRecognitionResult { - if m != nil { - return m.RecognitionResult - } - return nil -} - -func (m *StreamingDetectIntentResponse) GetQueryResult() *QueryResult { - if m != nil { - return m.QueryResult - } - return nil -} - -func (m *StreamingDetectIntentResponse) GetWebhookStatus() *google_rpc.Status { - if m != nil { - return m.WebhookStatus - } - return nil -} - -// Contains a speech recognition result corresponding to a portion of the audio -// that is currently being processed or an indication that this is the end -// of the single requested utterance. -// -// Example: -// -// 1. transcript: "tube" -// -// 2. transcript: "to be a" -// -// 3. transcript: "to be" -// -// 4. transcript: "to be or not to be" -// is_final: true -// -// 5. transcript: " that's" -// -// 6. transcript: " that is" -// -// 7. recognition_event_type: `RECOGNITION_EVENT_END_OF_SINGLE_UTTERANCE` -// -// 8. transcript: " that is the question" -// is_final: true -// -// Only two of the responses contain final results (#4 and #8 indicated by -// `is_final: true`). Concatenating these generates the full transcript: "to be -// or not to be that is the question". -// -// In each response we populate: -// -// * for `MESSAGE_TYPE_TRANSCRIPT`: `transcript` and possibly `is_final`. -// -// * for `MESSAGE_TYPE_END_OF_SINGLE_UTTERANCE`: only `event_type`. -type StreamingRecognitionResult struct { - // Type of the result message. - MessageType StreamingRecognitionResult_MessageType `protobuf:"varint,1,opt,name=message_type,json=messageType,enum=google.cloud.dialogflow.v2beta1.StreamingRecognitionResult_MessageType" json:"message_type,omitempty"` - // Transcript text representing the words that the user spoke. - // Populated if and only if `event_type` = `RECOGNITION_EVENT_TRANSCRIPT`. - Transcript string `protobuf:"bytes,2,opt,name=transcript" json:"transcript,omitempty"` - // The default of 0.0 is a sentinel value indicating `confidence` was not set. - // If `false`, the `StreamingRecognitionResult` represents an - // interim result that may change. If `true`, the recognizer will not return - // any further hypotheses about this piece of the audio. May only be populated - // for `event_type` = `RECOGNITION_EVENT_TRANSCRIPT`. - IsFinal bool `protobuf:"varint,3,opt,name=is_final,json=isFinal" json:"is_final,omitempty"` - // The Speech confidence between 0.0 and 1.0 for the current portion of audio. - // A higher number indicates an estimated greater likelihood that the - // recognized words are correct. The default of 0.0 is a sentinel value - // indicating that confidence was not set. - // - // This field is typically only provided if `is_final` is true and you should - // not rely on it being accurate or even set. - Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *StreamingRecognitionResult) Reset() { *m = StreamingRecognitionResult{} } -func (m *StreamingRecognitionResult) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognitionResult) ProtoMessage() {} -func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} } - -func (m *StreamingRecognitionResult) GetMessageType() StreamingRecognitionResult_MessageType { - if m != nil { - return m.MessageType - } - return StreamingRecognitionResult_MESSAGE_TYPE_UNSPECIFIED -} - -func (m *StreamingRecognitionResult) GetTranscript() string { - if m != nil { - return m.Transcript - } - return "" -} - -func (m *StreamingRecognitionResult) GetIsFinal() bool { - if m != nil { - return m.IsFinal - } - return false -} - -func (m *StreamingRecognitionResult) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Instructs the speech recognizer how to process the audio content. -type InputAudioConfig struct { - // Required. Audio encoding of the audio content to process. - AudioEncoding AudioEncoding `protobuf:"varint,1,opt,name=audio_encoding,json=audioEncoding,enum=google.cloud.dialogflow.v2beta1.AudioEncoding" json:"audio_encoding,omitempty"` - // Required. Sample rate (in Hertz) of the audio content sent in the query. - // Refer to [Cloud Speech API documentation](/speech/docs/basics) for more - // details. - SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"` - // Required. The language of the supplied audio. Dialogflow does not do - // translations. See [Language - // Support](https://dialogflow.com/docs/languages) for a list of the - // currently supported language codes. Note that queries in the same session - // do not necessarily need to specify the same language. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. The collection of phrase hints which are used to boost accuracy - // of speech recognition. - // Refer to [Cloud Speech API documentation](/speech/docs/basics#phrase-hints) - // for more details. - PhraseHints []string `protobuf:"bytes,4,rep,name=phrase_hints,json=phraseHints" json:"phrase_hints,omitempty"` -} - -func (m *InputAudioConfig) Reset() { *m = InputAudioConfig{} } -func (m *InputAudioConfig) String() string { return proto.CompactTextString(m) } -func (*InputAudioConfig) ProtoMessage() {} -func (*InputAudioConfig) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{8} } - -func (m *InputAudioConfig) GetAudioEncoding() AudioEncoding { - if m != nil { - return m.AudioEncoding - } - return AudioEncoding_AUDIO_ENCODING_UNSPECIFIED -} - -func (m *InputAudioConfig) GetSampleRateHertz() int32 { - if m != nil { - return m.SampleRateHertz - } - return 0 -} - -func (m *InputAudioConfig) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *InputAudioConfig) GetPhraseHints() []string { - if m != nil { - return m.PhraseHints - } - return nil -} - -// Represents the natural language text to be processed. -type TextInput struct { - // Required. The UTF-8 encoded natural language text to be processed. - // Text length must not exceed 256 bytes. - Text string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // Required. The language of this conversational query. See [Language - // Support](https://dialogflow.com/docs/languages) for a list of the - // currently supported language codes. Note that queries in the same session - // do not necessarily need to specify the same language. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *TextInput) Reset() { *m = TextInput{} } -func (m *TextInput) String() string { return proto.CompactTextString(m) } -func (*TextInput) ProtoMessage() {} -func (*TextInput) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{9} } - -func (m *TextInput) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -func (m *TextInput) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// Events allow for matching intents by event name instead of the natural -// language input. For instance, input `<event: { name: “welcome_event”, -// parameters: { name: “Sam” } }>` can trigger a personalized welcome response. -// The parameter `name` may be used by the agent in the response: -// `“Hello #welcome_event.name! What can I do for you today?”`. -type EventInput struct { - // Required. The unique identifier of the event. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The collection of parameters associated with the event. - Parameters *google_protobuf4.Struct `protobuf:"bytes,2,opt,name=parameters" json:"parameters,omitempty"` - // Required. The language of this query. See [Language - // Support](https://dialogflow.com/docs/languages) for a list of the - // currently supported language codes. Note that queries in the same session - // do not necessarily need to specify the same language. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *EventInput) Reset() { *m = EventInput{} } -func (m *EventInput) String() string { return proto.CompactTextString(m) } -func (*EventInput) ProtoMessage() {} -func (*EventInput) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{10} } - -func (m *EventInput) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *EventInput) GetParameters() *google_protobuf4.Struct { - if m != nil { - return m.Parameters - } - return nil -} - -func (m *EventInput) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func init() { - proto.RegisterType((*DetectIntentRequest)(nil), "google.cloud.dialogflow.v2beta1.DetectIntentRequest") - proto.RegisterType((*DetectIntentResponse)(nil), "google.cloud.dialogflow.v2beta1.DetectIntentResponse") - proto.RegisterType((*QueryParameters)(nil), "google.cloud.dialogflow.v2beta1.QueryParameters") - proto.RegisterType((*QueryInput)(nil), "google.cloud.dialogflow.v2beta1.QueryInput") - proto.RegisterType((*QueryResult)(nil), "google.cloud.dialogflow.v2beta1.QueryResult") - proto.RegisterType((*StreamingDetectIntentRequest)(nil), "google.cloud.dialogflow.v2beta1.StreamingDetectIntentRequest") - proto.RegisterType((*StreamingDetectIntentResponse)(nil), "google.cloud.dialogflow.v2beta1.StreamingDetectIntentResponse") - proto.RegisterType((*StreamingRecognitionResult)(nil), "google.cloud.dialogflow.v2beta1.StreamingRecognitionResult") - proto.RegisterType((*InputAudioConfig)(nil), "google.cloud.dialogflow.v2beta1.InputAudioConfig") - proto.RegisterType((*TextInput)(nil), "google.cloud.dialogflow.v2beta1.TextInput") - proto.RegisterType((*EventInput)(nil), "google.cloud.dialogflow.v2beta1.EventInput") - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.AudioEncoding", AudioEncoding_name, AudioEncoding_value) - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.StreamingRecognitionResult_MessageType", StreamingRecognitionResult_MessageType_name, StreamingRecognitionResult_MessageType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Sessions service - -type SessionsClient interface { - // Processes a natural language query and returns structured, actionable data - // as a result. This method is not idempotent, because it may cause contexts - // and session entity types to be updated, which in turn might affect - // results of future queries. - DetectIntent(ctx context.Context, in *DetectIntentRequest, opts ...grpc.CallOption) (*DetectIntentResponse, error) - // Processes a natural language query in audio format in a streaming fashion - // and returns structured, actionable data as a result. This method is only - // available via the gRPC API (not REST). - StreamingDetectIntent(ctx context.Context, opts ...grpc.CallOption) (Sessions_StreamingDetectIntentClient, error) -} - -type sessionsClient struct { - cc *grpc.ClientConn -} - -func NewSessionsClient(cc *grpc.ClientConn) SessionsClient { - return &sessionsClient{cc} -} - -func (c *sessionsClient) DetectIntent(ctx context.Context, in *DetectIntentRequest, opts ...grpc.CallOption) (*DetectIntentResponse, error) { - out := new(DetectIntentResponse) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.Sessions/DetectIntent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionsClient) StreamingDetectIntent(ctx context.Context, opts ...grpc.CallOption) (Sessions_StreamingDetectIntentClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Sessions_serviceDesc.Streams[0], c.cc, "/google.cloud.dialogflow.v2beta1.Sessions/StreamingDetectIntent", opts...) - if err != nil { - return nil, err - } - x := &sessionsStreamingDetectIntentClient{stream} - return x, nil -} - -type Sessions_StreamingDetectIntentClient interface { - Send(*StreamingDetectIntentRequest) error - Recv() (*StreamingDetectIntentResponse, error) - grpc.ClientStream -} - -type sessionsStreamingDetectIntentClient struct { - grpc.ClientStream -} - -func (x *sessionsStreamingDetectIntentClient) Send(m *StreamingDetectIntentRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *sessionsStreamingDetectIntentClient) Recv() (*StreamingDetectIntentResponse, error) { - m := new(StreamingDetectIntentResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for Sessions service - -type SessionsServer interface { - // Processes a natural language query and returns structured, actionable data - // as a result. This method is not idempotent, because it may cause contexts - // and session entity types to be updated, which in turn might affect - // results of future queries. - DetectIntent(context.Context, *DetectIntentRequest) (*DetectIntentResponse, error) - // Processes a natural language query in audio format in a streaming fashion - // and returns structured, actionable data as a result. This method is only - // available via the gRPC API (not REST). - StreamingDetectIntent(Sessions_StreamingDetectIntentServer) error -} - -func RegisterSessionsServer(s *grpc.Server, srv SessionsServer) { - s.RegisterService(&_Sessions_serviceDesc, srv) -} - -func _Sessions_DetectIntent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DetectIntentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionsServer).DetectIntent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.Sessions/DetectIntent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionsServer).DetectIntent(ctx, req.(*DetectIntentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Sessions_StreamingDetectIntent_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(SessionsServer).StreamingDetectIntent(&sessionsStreamingDetectIntentServer{stream}) -} - -type Sessions_StreamingDetectIntentServer interface { - Send(*StreamingDetectIntentResponse) error - Recv() (*StreamingDetectIntentRequest, error) - grpc.ServerStream -} - -type sessionsStreamingDetectIntentServer struct { - grpc.ServerStream -} - -func (x *sessionsStreamingDetectIntentServer) Send(m *StreamingDetectIntentResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *sessionsStreamingDetectIntentServer) Recv() (*StreamingDetectIntentRequest, error) { - m := new(StreamingDetectIntentRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _Sessions_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dialogflow.v2beta1.Sessions", - HandlerType: (*SessionsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DetectIntent", - Handler: _Sessions_DetectIntent_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingDetectIntent", - Handler: _Sessions_StreamingDetectIntent_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/cloud/dialogflow/v2beta1/session.proto", -} - -func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/session.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 1580 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0x3f, 0x73, 0x1b, 0xc7, - 0x15, 0xd7, 0x81, 0xff, 0x1f, 0x40, 0x12, 0x5e, 0xc9, 0xd6, 0x89, 0x94, 0x2c, 0x05, 0x1e, 0x4f, - 0x28, 0xc6, 0x01, 0x2c, 0x26, 0x71, 0xc6, 0xd6, 0xc8, 0x11, 0x08, 0x1c, 0x49, 0xcc, 0x80, 0x20, - 0xbc, 0x00, 0x2d, 0xdb, 0xcd, 0xce, 0xf2, 0xb0, 0x38, 0x9e, 0x72, 0xd8, 0x3d, 0xde, 0x2e, 0x6c, - 0xd3, 0x99, 0xa4, 0xc8, 0x57, 0x48, 0x97, 0x32, 0x4d, 0x66, 0xdc, 0xa6, 0x49, 0x93, 0xca, 0x1f, - 0x21, 0x75, 0xba, 0x94, 0x49, 0x95, 0x14, 0x99, 0x49, 0x93, 0xb9, 0xdd, 0x3d, 0x00, 0x02, 0x29, - 0x03, 0x4a, 0x52, 0xb9, 0xc3, 0xbe, 0xf7, 0x7b, 0x6f, 0xdf, 0x7b, 0xf7, 0x7b, 0xef, 0x2d, 0xe0, - 0x87, 0x81, 0x10, 0x41, 0xc4, 0x2a, 0x7e, 0x24, 0x86, 0xbd, 0x4a, 0x2f, 0xa4, 0x91, 0x08, 0xfa, - 0x91, 0xf8, 0xa2, 0xf2, 0xf9, 0xde, 0x19, 0x53, 0xf4, 0x51, 0x45, 0x32, 0x29, 0x43, 0xc1, 0xcb, - 0x71, 0x22, 0x94, 0x40, 0xf7, 0x0d, 0xbc, 0xac, 0xe1, 0xe5, 0x31, 0xbc, 0x6c, 0xe1, 0x5b, 0x77, - 0xad, 0x3f, 0x1a, 0x87, 0x15, 0xca, 0xb9, 0x50, 0x54, 0x85, 0x82, 0x4b, 0x63, 0xbe, 0x35, 0xf3, - 0x36, 0x5f, 0x70, 0xc5, 0xbe, 0x54, 0x16, 0xfe, 0xce, 0x2c, 0x78, 0xc8, 0x15, 0xe3, 0x19, 0xfa, - 0xfd, 0x39, 0x53, 0x21, 0x8c, 0xab, 0x50, 0x5d, 0x12, 0x75, 0x19, 0x33, 0x6b, 0x9a, 0x45, 0xad, - 0x4f, 0x67, 0xc3, 0x7e, 0x45, 0xaa, 0x64, 0xe8, 0x67, 0x8e, 0x6f, 0x5b, 0x6d, 0x12, 0xfb, 0x15, - 0xa9, 0xa8, 0x1a, 0x66, 0xe9, 0xb8, 0x56, 0x91, 0x7a, 0xaa, 0x44, 0x54, 0x45, 0x3c, 0x30, 0x9a, - 0xd2, 0x3f, 0x1c, 0xb8, 0x59, 0x67, 0x8a, 0xf9, 0xaa, 0xa1, 0x43, 0xc4, 0xec, 0x62, 0xc8, 0xa4, - 0x42, 0x2e, 0xac, 0xd8, 0x28, 0x5c, 0xe7, 0x81, 0xb3, 0xb3, 0x86, 0xb3, 0x23, 0xea, 0x40, 0xe1, - 0x62, 0xc8, 0x92, 0x4b, 0x12, 0xd3, 0x84, 0x0e, 0xa4, 0x9b, 0x7b, 0xe0, 0xec, 0xe4, 0xf7, 0xde, - 0x2d, 0xcf, 0x28, 0x78, 0xf9, 0xa3, 0xd4, 0xa8, 0x9d, 0xda, 0x30, 0xc5, 0x12, 0x89, 0xf3, 0x17, - 0x23, 0x81, 0x44, 0x4d, 0x30, 0x47, 0x12, 0xf2, 0x78, 0xa8, 0xdc, 0x05, 0xed, 0xf3, 0x07, 0xf3, - 0xf9, 0x6c, 0xa4, 0x26, 0x18, 0x2e, 0x46, 0xbf, 0xd1, 0x7d, 0xc8, 0x6b, 0x3f, 0x84, 0x0e, 0x7b, - 0xa1, 0x70, 0x97, 0x1e, 0x38, 0x3b, 0x05, 0x0c, 0x5a, 0x54, 0x4d, 0x25, 0xa5, 0x6f, 0x1c, 0xb8, - 0xf5, 0x62, 0xd6, 0x32, 0x16, 0x5c, 0xb2, 0xd4, 0x32, 0xb1, 0xbf, 0x49, 0xd8, 0xb3, 0xa9, 0x43, - 0x26, 0x6a, 0xf4, 0xd0, 0x49, 0x96, 0x7d, 0xc2, 0xe4, 0x30, 0x52, 0x36, 0xfb, 0x77, 0xe6, 0x8b, - 0x14, 0x6b, 0x1b, 0x9b, 0xb9, 0x39, 0xa0, 0xf7, 0x61, 0xe3, 0x0b, 0x76, 0x76, 0x2e, 0xc4, 0xcf, - 0x89, 0xf9, 0x64, 0x36, 0x79, 0x94, 0xb9, 0x4c, 0x62, 0xbf, 0xdc, 0xd1, 0x1a, 0xbc, 0x6e, 0x91, - 0xe6, 0x58, 0xfa, 0x5b, 0x0e, 0x36, 0xa7, 0xaa, 0x8a, 0xb6, 0x61, 0x4d, 0x85, 0x03, 0x46, 0xbe, - 0x12, 0x9c, 0xd9, 0xf0, 0x57, 0x53, 0xc1, 0x67, 0x82, 0x33, 0xf4, 0x1e, 0x14, 0x02, 0x26, 0x48, - 0x24, 0x7c, 0x4d, 0x76, 0x1b, 0xfc, 0xcd, 0xec, 0x26, 0xcd, 0xb3, 0x26, 0x55, 0x4d, 0x1e, 0xe0, - 0x7c, 0xc0, 0x44, 0xd3, 0xe2, 0x50, 0x1d, 0x56, 0x2d, 0xdf, 0xd3, 0xe8, 0x16, 0x76, 0xf2, 0x7b, - 0x3b, 0x33, 0x13, 0xae, 0x19, 0x03, 0x3c, 0xb2, 0x44, 0x6f, 0xc3, 0x46, 0xc2, 0x24, 0x53, 0x64, - 0xe4, 0x6b, 0xf1, 0x81, 0xb3, 0xb3, 0x8a, 0xd7, 0xb5, 0xb4, 0x96, 0xc1, 0x7a, 0x70, 0xeb, 0x1a, - 0xfe, 0x4b, 0x77, 0x49, 0x5f, 0xbc, 0x37, 0xf3, 0xe2, 0x8e, 0x31, 0xf6, 0xb4, 0x6d, 0xf7, 0x32, - 0x66, 0x18, 0xc9, 0x69, 0x91, 0x44, 0x8f, 0x60, 0x25, 0xa6, 0x97, 0x91, 0xa0, 0x3d, 0x77, 0x59, - 0x57, 0xe1, 0x76, 0xe6, 0x38, 0x6b, 0xad, 0x72, 0x47, 0xb7, 0x16, 0xce, 0x70, 0xa5, 0x7f, 0x3a, - 0x00, 0x63, 0xc2, 0xa1, 0x8f, 0xa1, 0xa0, 0xe9, 0x95, 0xa6, 0xd3, 0x0f, 0x03, 0x5d, 0xec, 0xfc, - 0xde, 0xa3, 0x99, 0xf1, 0x35, 0x46, 0x34, 0xac, 0x69, 0xc3, 0xa3, 0x1b, 0x38, 0x4f, 0xc7, 0x47, - 0xf4, 0x14, 0x16, 0xd3, 0x42, 0xd8, 0x8f, 0xb3, 0x3b, 0xd3, 0x5f, 0x97, 0x7d, 0xa9, 0xb4, 0xcf, - 0xa3, 0x1b, 0x58, 0x5b, 0xa2, 0x1a, 0x2c, 0xb1, 0xcf, 0x19, 0x9f, 0xbf, 0x8d, 0xbc, 0x14, 0x9d, - 0xf9, 0x30, 0xb6, 0xfb, 0x2b, 0xb0, 0xa4, 0x1b, 0xa6, 0xf4, 0x87, 0x65, 0xc8, 0x4f, 0xb0, 0x17, - 0xdd, 0x03, 0xd3, 0x6a, 0x44, 0x47, 0x69, 0x28, 0xb6, 0xa6, 0x25, 0x69, 0x24, 0xe8, 0x2d, 0x58, - 0x8f, 0x28, 0x0f, 0x86, 0x34, 0x60, 0xc4, 0x17, 0x3d, 0xe6, 0x6e, 0x6a, 0x44, 0x21, 0x13, 0xd6, - 0x44, 0x8f, 0xa1, 0x7d, 0xb8, 0x27, 0x63, 0xc6, 0xfc, 0x73, 0x92, 0x30, 0x5f, 0x04, 0x3c, 0x4c, - 0x69, 0x66, 0x0a, 0xd9, 0x63, 0xdc, 0x67, 0x3a, 0xf9, 0x1c, 0xde, 0x36, 0x20, 0x3c, 0xc6, 0xd4, - 0x46, 0x10, 0xf4, 0x06, 0x2c, 0x53, 0x5f, 0xd3, 0x78, 0x41, 0xdf, 0x60, 0x4f, 0xe8, 0xa7, 0x00, - 0xf1, 0xa8, 0x1f, 0x34, 0xc5, 0xbe, 0xe5, 0xe3, 0x4e, 0x40, 0xd1, 0x13, 0xd8, 0xa6, 0x51, 0x44, - 0x12, 0x76, 0x31, 0x0c, 0x13, 0xd6, 0xb3, 0xf3, 0x8d, 0xc4, 0x29, 0x3d, 0xb9, 0xd2, 0x53, 0x64, - 0x15, 0xbb, 0x34, 0x8a, 0xb0, 0x45, 0x98, 0xd9, 0xd5, 0x36, 0x7a, 0xf4, 0x10, 0x8a, 0xfd, 0x61, - 0xd4, 0x0f, 0xa3, 0x68, 0xc0, 0xb8, 0x32, 0xd5, 0x59, 0xd6, 0x91, 0x6d, 0x4e, 0xc8, 0x75, 0x8d, - 0xce, 0xe0, 0xd6, 0x24, 0x74, 0xc0, 0xa4, 0xa4, 0x01, 0x93, 0xee, 0x8a, 0xa6, 0x78, 0x65, 0x0e, - 0x0a, 0xe9, 0x6d, 0x72, 0x6c, 0xec, 0xf0, 0xcd, 0x09, 0x67, 0x56, 0xa6, 0xbb, 0x6d, 0x34, 0x57, - 0xc4, 0x30, 0xf1, 0x99, 0xbb, 0xaa, 0x83, 0x19, 0xcd, 0x10, 0x2d, 0x44, 0x4f, 0x61, 0x33, 0x83, - 0x65, 0xfd, 0xb0, 0xf6, 0xed, 0x25, 0xcb, 0xdc, 0xb6, 0x0d, 0x1c, 0x7d, 0x04, 0x9b, 0x62, 0xa8, - 0xd2, 0x69, 0x3b, 0xea, 0x6b, 0x78, 0xc5, 0x19, 0xb1, 0x61, 0x1c, 0x8c, 0x46, 0xc0, 0xcf, 0x60, - 0xd9, 0x2c, 0x4c, 0x37, 0xaf, 0x63, 0xf9, 0xfe, 0x9c, 0x15, 0xc1, 0xd6, 0x0c, 0x7d, 0x08, 0xdb, - 0xe6, 0x17, 0xe9, 0xe9, 0x29, 0x3f, 0xc5, 0xae, 0x82, 0x66, 0xd7, 0x1d, 0x03, 0xa9, 0x67, 0x88, - 0x09, 0x6e, 0x3d, 0x85, 0xcd, 0x5e, 0x48, 0x03, 0x2e, 0xa4, 0x0a, 0x7d, 0x12, 0xf2, 0xbe, 0x70, - 0x37, 0x66, 0x54, 0x65, 0x8c, 0x6f, 0xf0, 0xbe, 0x28, 0xfd, 0x3e, 0x07, 0x77, 0x3b, 0x2a, 0x61, - 0x74, 0x10, 0xf2, 0xe0, 0x3b, 0xb7, 0x60, 0x1f, 0x42, 0x51, 0x86, 0x3c, 0x88, 0x18, 0x19, 0x2a, - 0xc5, 0x12, 0x9a, 0x16, 0xd5, 0x0c, 0xf3, 0x4d, 0x23, 0x3f, 0xcd, 0xc4, 0xd3, 0xbb, 0x78, 0xf9, - 0xca, 0x2e, 0xfe, 0x63, 0x0e, 0xee, 0xbd, 0xa4, 0x52, 0xf3, 0x2e, 0xe5, 0xe7, 0x80, 0x26, 0xe7, - 0xc8, 0x0b, 0xab, 0xf9, 0xf1, 0xec, 0x85, 0x91, 0x5d, 0x3e, 0x31, 0x67, 0xec, 0xa6, 0x7e, 0x2d, - 0x99, 0x16, 0x5d, 0x79, 0x00, 0x2c, 0xfc, 0xff, 0x1f, 0x00, 0x8b, 0xf3, 0x3e, 0x00, 0xfe, 0x94, - 0x83, 0xad, 0x97, 0x47, 0x8f, 0x9e, 0x43, 0xc1, 0x8e, 0x16, 0xbd, 0x42, 0x75, 0xe1, 0x36, 0xf6, - 0x0e, 0xff, 0x87, 0x82, 0x64, 0x23, 0x47, 0xaf, 0xd5, 0xfc, 0x60, 0x7c, 0x40, 0x6f, 0x02, 0xa8, - 0x84, 0x72, 0xe9, 0x27, 0x61, 0x6c, 0x4a, 0xbf, 0x86, 0x27, 0x24, 0xe8, 0x0e, 0xac, 0x86, 0x92, - 0xf4, 0x43, 0x4e, 0x23, 0x5d, 0xb2, 0x55, 0xbc, 0x12, 0xca, 0x83, 0xf4, 0x98, 0x9a, 0x4e, 0xf4, - 0xe6, 0xa2, 0xee, 0xcd, 0x09, 0x49, 0xe9, 0x13, 0xc8, 0x4f, 0x5c, 0x8b, 0xee, 0x82, 0x7b, 0xec, - 0x75, 0x3a, 0xd5, 0x43, 0x8f, 0x74, 0x3f, 0x6d, 0x7b, 0xe4, 0xb4, 0xd5, 0x69, 0x7b, 0xb5, 0xc6, - 0x41, 0xc3, 0xab, 0x17, 0x6f, 0xa0, 0x0d, 0x80, 0x2e, 0xae, 0xb6, 0x3a, 0x35, 0xdc, 0x68, 0x77, - 0x8b, 0x0e, 0xda, 0x86, 0xdb, 0x5e, 0xab, 0x4e, 0x4e, 0x0e, 0x48, 0xa7, 0xd1, 0x3a, 0x6c, 0x7a, - 0xe4, 0xb4, 0xdb, 0xf5, 0x70, 0xb5, 0x55, 0xf3, 0x8a, 0xb9, 0xd2, 0x5f, 0x1c, 0x28, 0x4e, 0xaf, - 0x63, 0x74, 0x0a, 0x1b, 0x66, 0xaf, 0x33, 0xee, 0x8b, 0x5e, 0xc8, 0x03, 0x5b, 0xb7, 0xf2, 0xcc, - 0xba, 0x69, 0x2f, 0x9e, 0xb5, 0xc2, 0xeb, 0x74, 0xf2, 0x88, 0x76, 0xe1, 0x35, 0x49, 0x07, 0x71, - 0xc4, 0x48, 0x42, 0x15, 0x23, 0xe7, 0x2c, 0x51, 0x5f, 0xe9, 0x3a, 0x2d, 0xe1, 0x4d, 0xa3, 0xc0, - 0x54, 0xb1, 0xa3, 0x54, 0x7c, 0x75, 0x87, 0x2e, 0x5c, 0xb3, 0x43, 0xbf, 0x07, 0x85, 0xf8, 0x3c, - 0xa1, 0x92, 0x91, 0xf3, 0x90, 0xeb, 0xc7, 0xd4, 0xc2, 0xce, 0x1a, 0xce, 0x1b, 0xd9, 0x51, 0x2a, - 0x2a, 0xd5, 0x61, 0x6d, 0xf4, 0x3a, 0x40, 0xc8, 0xbe, 0x2b, 0x4c, 0xfb, 0x98, 0x97, 0xc2, 0x95, - 0x8b, 0x72, 0x57, 0x2f, 0x2a, 0xfd, 0x0a, 0x60, 0xfc, 0x40, 0x48, 0xdd, 0x70, 0x3a, 0xc8, 0xde, - 0x96, 0xfa, 0xf7, 0xd4, 0xca, 0xcd, 0xcd, 0xbf, 0x72, 0xe7, 0x49, 0x74, 0xf7, 0xdf, 0x0e, 0xac, - 0xbf, 0x50, 0x5a, 0xf4, 0x26, 0x6c, 0x55, 0x4f, 0xeb, 0x8d, 0x13, 0xe2, 0xb5, 0x6a, 0x27, 0xf5, - 0x46, 0xeb, 0x70, 0x8a, 0x04, 0x77, 0xc1, 0x9d, 0xd2, 0x37, 0x1b, 0x2d, 0xaf, 0x8a, 0xc9, 0xa3, - 0xf7, 0x8a, 0x0e, 0xba, 0x0d, 0x37, 0xa7, 0xb4, 0x07, 0xcd, 0x6a, 0xad, 0x98, 0x43, 0x2e, 0xdc, - 0x9a, 0x52, 0x1c, 0x9f, 0x36, 0xab, 0xcf, 0x8a, 0x0b, 0xe8, 0x0d, 0x40, 0x53, 0x9a, 0xea, 0x31, - 0x2e, 0x2e, 0xa2, 0x3b, 0xf0, 0xfa, 0x55, 0x39, 0x79, 0xb6, 0x5f, 0x5c, 0x4a, 0x89, 0x37, 0xa5, - 0x3a, 0x39, 0x3c, 0x24, 0x27, 0xed, 0xd3, 0x4e, 0x71, 0x19, 0x3d, 0x84, 0xb7, 0xa7, 0x94, 0x9d, - 0xb6, 0xe7, 0x7d, 0x42, 0x9e, 0x35, 0xba, 0x47, 0xe4, 0xc8, 0xab, 0xd6, 0x3d, 0x4c, 0xf6, 0x3f, - 0xed, 0x7a, 0xc5, 0x95, 0xbd, 0xbf, 0xe7, 0x60, 0xd5, 0x3e, 0x69, 0x25, 0xfa, 0xc6, 0x81, 0xc2, - 0xe4, 0x88, 0x44, 0x3f, 0x9e, 0x49, 0xca, 0x6b, 0x76, 0xcf, 0xd6, 0x4f, 0x5e, 0xd1, 0xca, 0x0c, - 0xda, 0xd2, 0xc1, 0xaf, 0xff, 0xfc, 0xd7, 0xdf, 0xe4, 0x9e, 0x96, 0x1e, 0x8f, 0xfe, 0xa8, 0xfe, - 0xc2, 0xee, 0xac, 0x27, 0x71, 0x22, 0x9e, 0x33, 0x5f, 0xc9, 0xca, 0x6e, 0x85, 0x06, 0x8c, 0xab, - 0xec, 0x2f, 0xac, 0xac, 0xec, 0xfe, 0xf2, 0x83, 0xde, 0x84, 0xb3, 0x0f, 0x9c, 0x5d, 0xf4, 0x5b, - 0x07, 0x5e, 0xbf, 0x76, 0xe2, 0xa3, 0x27, 0xf3, 0xcf, 0xa6, 0xeb, 0xf2, 0xfa, 0xf0, 0xbf, 0x35, - 0x37, 0x09, 0xee, 0x38, 0xef, 0x3a, 0xfb, 0x5f, 0x3b, 0xf0, 0x96, 0x2f, 0x06, 0xb3, 0x3c, 0xed, - 0x17, 0xec, 0x47, 0x69, 0xa7, 0xf4, 0x6e, 0x3b, 0x9f, 0x35, 0xac, 0x41, 0x20, 0x52, 0xf2, 0x96, - 0x45, 0x12, 0x54, 0x02, 0xc6, 0x35, 0xf9, 0x2b, 0x46, 0x45, 0xe3, 0x50, 0xbe, 0xf4, 0x3f, 0xff, - 0xe3, 0xb1, 0xe8, 0x5f, 0x8e, 0xf3, 0xbb, 0x5c, 0xae, 0x7e, 0xf0, 0x75, 0xee, 0xfe, 0xa1, 0xf1, - 0x59, 0xd3, 0x41, 0xd4, 0xc7, 0x41, 0x7c, 0x6c, 0x8c, 0xce, 0x96, 0xb5, 0xff, 0x1f, 0xfd, 0x27, - 0x00, 0x00, 0xff, 0xff, 0x78, 0xce, 0xe5, 0x99, 0x1d, 0x11, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/session_entity_type.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/session_entity_type.pb.go deleted file mode 100644 index da14f264..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/session_entity_type.pb.go +++ /dev/null @@ -1,557 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dialogflow/v2beta1/session_entity_type.proto - -package dialogflow - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The types of modifications for a session entity type. -type SessionEntityType_EntityOverrideMode int32 - -const ( - // Not specified. This value should be never used. - SessionEntityType_ENTITY_OVERRIDE_MODE_UNSPECIFIED SessionEntityType_EntityOverrideMode = 0 - // The collection of session entities overrides the collection of entities - // in the corresponding developer entity type. - SessionEntityType_ENTITY_OVERRIDE_MODE_OVERRIDE SessionEntityType_EntityOverrideMode = 1 - // The collection of session entities extends the collection of entities in - // the corresponding developer entity type. - // Calls to `ListSessionEntityTypes`, `GetSessionEntityType`, - // `CreateSessionEntityType` and `UpdateSessionEntityType` return the full - // collection of entities from the developer entity type in the agent's - // default language and the session entity type. - SessionEntityType_ENTITY_OVERRIDE_MODE_SUPPLEMENT SessionEntityType_EntityOverrideMode = 2 -) - -var SessionEntityType_EntityOverrideMode_name = map[int32]string{ - 0: "ENTITY_OVERRIDE_MODE_UNSPECIFIED", - 1: "ENTITY_OVERRIDE_MODE_OVERRIDE", - 2: "ENTITY_OVERRIDE_MODE_SUPPLEMENT", -} -var SessionEntityType_EntityOverrideMode_value = map[string]int32{ - "ENTITY_OVERRIDE_MODE_UNSPECIFIED": 0, - "ENTITY_OVERRIDE_MODE_OVERRIDE": 1, - "ENTITY_OVERRIDE_MODE_SUPPLEMENT": 2, -} - -func (x SessionEntityType_EntityOverrideMode) String() string { - return proto.EnumName(SessionEntityType_EntityOverrideMode_name, int32(x)) -} -func (SessionEntityType_EntityOverrideMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor5, []int{0, 0} -} - -// Represents a session entity type. -// -// Extends or replaces a developer entity type at the user session level (we -// refer to the entity types defined at the agent level as "developer entity -// types"). -// -// Note: session entity types apply to all queries, regardless of the language. -type SessionEntityType struct { - // Required. The unique identifier of this session entity type. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>/entityTypes/<Entity Type - // Display Name>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. Indicates whether the additional data should override or - // supplement the developer entity type definition. - EntityOverrideMode SessionEntityType_EntityOverrideMode `protobuf:"varint,2,opt,name=entity_override_mode,json=entityOverrideMode,enum=google.cloud.dialogflow.v2beta1.SessionEntityType_EntityOverrideMode" json:"entity_override_mode,omitempty"` - // Required. The collection of entities associated with this session entity - // type. - Entities []*EntityType_Entity `protobuf:"bytes,3,rep,name=entities" json:"entities,omitempty"` -} - -func (m *SessionEntityType) Reset() { *m = SessionEntityType{} } -func (m *SessionEntityType) String() string { return proto.CompactTextString(m) } -func (*SessionEntityType) ProtoMessage() {} -func (*SessionEntityType) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -func (m *SessionEntityType) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SessionEntityType) GetEntityOverrideMode() SessionEntityType_EntityOverrideMode { - if m != nil { - return m.EntityOverrideMode - } - return SessionEntityType_ENTITY_OVERRIDE_MODE_UNSPECIFIED -} - -func (m *SessionEntityType) GetEntities() []*EntityType_Entity { - if m != nil { - return m.Entities - } - return nil -} - -// The request message for -// [SessionEntityTypes.ListSessionEntityTypes][google.cloud.dialogflow.v2beta1.SessionEntityTypes.ListSessionEntityTypes]. -type ListSessionEntityTypesRequest struct { - // Required. The session to list all session entity types from. - // Format: `projects/<Project ID>/agent/sessions/<Session ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. The maximum number of items to return in a single page. By - // default 100 and at most 1000. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. The next_page_token value returned from a previous list request. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListSessionEntityTypesRequest) Reset() { *m = ListSessionEntityTypesRequest{} } -func (m *ListSessionEntityTypesRequest) String() string { return proto.CompactTextString(m) } -func (*ListSessionEntityTypesRequest) ProtoMessage() {} -func (*ListSessionEntityTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} } - -func (m *ListSessionEntityTypesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListSessionEntityTypesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListSessionEntityTypesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for -// [SessionEntityTypes.ListSessionEntityTypes][google.cloud.dialogflow.v2beta1.SessionEntityTypes.ListSessionEntityTypes]. -type ListSessionEntityTypesResponse struct { - // The list of session entity types. There will be a maximum number of items - // returned based on the page_size field in the request. - SessionEntityTypes []*SessionEntityType `protobuf:"bytes,1,rep,name=session_entity_types,json=sessionEntityTypes" json:"session_entity_types,omitempty"` - // Token to retrieve the next page of results, or empty if there are no - // more results in the list. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListSessionEntityTypesResponse) Reset() { *m = ListSessionEntityTypesResponse{} } -func (m *ListSessionEntityTypesResponse) String() string { return proto.CompactTextString(m) } -func (*ListSessionEntityTypesResponse) ProtoMessage() {} -func (*ListSessionEntityTypesResponse) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{2} } - -func (m *ListSessionEntityTypesResponse) GetSessionEntityTypes() []*SessionEntityType { - if m != nil { - return m.SessionEntityTypes - } - return nil -} - -func (m *ListSessionEntityTypesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for -// [SessionEntityTypes.GetSessionEntityType][google.cloud.dialogflow.v2beta1.SessionEntityTypes.GetSessionEntityType]. -type GetSessionEntityTypeRequest struct { - // Required. The name of the session entity type. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>/entityTypes/<Entity Type - // Display Name>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetSessionEntityTypeRequest) Reset() { *m = GetSessionEntityTypeRequest{} } -func (m *GetSessionEntityTypeRequest) String() string { return proto.CompactTextString(m) } -func (*GetSessionEntityTypeRequest) ProtoMessage() {} -func (*GetSessionEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{3} } - -func (m *GetSessionEntityTypeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for -// [SessionEntityTypes.CreateSessionEntityType][google.cloud.dialogflow.v2beta1.SessionEntityTypes.CreateSessionEntityType]. -type CreateSessionEntityTypeRequest struct { - // Required. The session to create a session entity type for. - // Format: `projects/<Project ID>/agent/sessions/<Session ID>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The session entity type to create. - SessionEntityType *SessionEntityType `protobuf:"bytes,2,opt,name=session_entity_type,json=sessionEntityType" json:"session_entity_type,omitempty"` -} - -func (m *CreateSessionEntityTypeRequest) Reset() { *m = CreateSessionEntityTypeRequest{} } -func (m *CreateSessionEntityTypeRequest) String() string { return proto.CompactTextString(m) } -func (*CreateSessionEntityTypeRequest) ProtoMessage() {} -func (*CreateSessionEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{4} } - -func (m *CreateSessionEntityTypeRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateSessionEntityTypeRequest) GetSessionEntityType() *SessionEntityType { - if m != nil { - return m.SessionEntityType - } - return nil -} - -// The request message for -// [SessionEntityTypes.UpdateSessionEntityType][google.cloud.dialogflow.v2beta1.SessionEntityTypes.UpdateSessionEntityType]. -type UpdateSessionEntityTypeRequest struct { - // Required. The entity type to update. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>/entityTypes/<Entity Type - // Display Name>`. - SessionEntityType *SessionEntityType `protobuf:"bytes,1,opt,name=session_entity_type,json=sessionEntityType" json:"session_entity_type,omitempty"` - // Optional. The mask to control which fields get updated. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateSessionEntityTypeRequest) Reset() { *m = UpdateSessionEntityTypeRequest{} } -func (m *UpdateSessionEntityTypeRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateSessionEntityTypeRequest) ProtoMessage() {} -func (*UpdateSessionEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{5} } - -func (m *UpdateSessionEntityTypeRequest) GetSessionEntityType() *SessionEntityType { - if m != nil { - return m.SessionEntityType - } - return nil -} - -func (m *UpdateSessionEntityTypeRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The request message for -// [SessionEntityTypes.DeleteSessionEntityType][google.cloud.dialogflow.v2beta1.SessionEntityTypes.DeleteSessionEntityType]. -type DeleteSessionEntityTypeRequest struct { - // Required. The name of the entity type to delete. Format: - // `projects/<Project ID>/agent/sessions/<Session ID>/entityTypes/<Entity Type - // Display Name>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteSessionEntityTypeRequest) Reset() { *m = DeleteSessionEntityTypeRequest{} } -func (m *DeleteSessionEntityTypeRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSessionEntityTypeRequest) ProtoMessage() {} -func (*DeleteSessionEntityTypeRequest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{6} } - -func (m *DeleteSessionEntityTypeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*SessionEntityType)(nil), "google.cloud.dialogflow.v2beta1.SessionEntityType") - proto.RegisterType((*ListSessionEntityTypesRequest)(nil), "google.cloud.dialogflow.v2beta1.ListSessionEntityTypesRequest") - proto.RegisterType((*ListSessionEntityTypesResponse)(nil), "google.cloud.dialogflow.v2beta1.ListSessionEntityTypesResponse") - proto.RegisterType((*GetSessionEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.GetSessionEntityTypeRequest") - proto.RegisterType((*CreateSessionEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.CreateSessionEntityTypeRequest") - proto.RegisterType((*UpdateSessionEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.UpdateSessionEntityTypeRequest") - proto.RegisterType((*DeleteSessionEntityTypeRequest)(nil), "google.cloud.dialogflow.v2beta1.DeleteSessionEntityTypeRequest") - proto.RegisterEnum("google.cloud.dialogflow.v2beta1.SessionEntityType_EntityOverrideMode", SessionEntityType_EntityOverrideMode_name, SessionEntityType_EntityOverrideMode_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for SessionEntityTypes service - -type SessionEntityTypesClient interface { - // Returns the list of all session entity types in the specified session. - ListSessionEntityTypes(ctx context.Context, in *ListSessionEntityTypesRequest, opts ...grpc.CallOption) (*ListSessionEntityTypesResponse, error) - // Retrieves the specified session entity type. - GetSessionEntityType(ctx context.Context, in *GetSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) - // Creates a session entity type. - CreateSessionEntityType(ctx context.Context, in *CreateSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) - // Updates the specified session entity type. - UpdateSessionEntityType(ctx context.Context, in *UpdateSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) - // Deletes the specified session entity type. - DeleteSessionEntityType(ctx context.Context, in *DeleteSessionEntityTypeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type sessionEntityTypesClient struct { - cc *grpc.ClientConn -} - -func NewSessionEntityTypesClient(cc *grpc.ClientConn) SessionEntityTypesClient { - return &sessionEntityTypesClient{cc} -} - -func (c *sessionEntityTypesClient) ListSessionEntityTypes(ctx context.Context, in *ListSessionEntityTypesRequest, opts ...grpc.CallOption) (*ListSessionEntityTypesResponse, error) { - out := new(ListSessionEntityTypesResponse) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/ListSessionEntityTypes", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionEntityTypesClient) GetSessionEntityType(ctx context.Context, in *GetSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) { - out := new(SessionEntityType) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/GetSessionEntityType", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionEntityTypesClient) CreateSessionEntityType(ctx context.Context, in *CreateSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) { - out := new(SessionEntityType) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/CreateSessionEntityType", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionEntityTypesClient) UpdateSessionEntityType(ctx context.Context, in *UpdateSessionEntityTypeRequest, opts ...grpc.CallOption) (*SessionEntityType, error) { - out := new(SessionEntityType) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/UpdateSessionEntityType", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionEntityTypesClient) DeleteSessionEntityType(ctx context.Context, in *DeleteSessionEntityTypeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/DeleteSessionEntityType", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for SessionEntityTypes service - -type SessionEntityTypesServer interface { - // Returns the list of all session entity types in the specified session. - ListSessionEntityTypes(context.Context, *ListSessionEntityTypesRequest) (*ListSessionEntityTypesResponse, error) - // Retrieves the specified session entity type. - GetSessionEntityType(context.Context, *GetSessionEntityTypeRequest) (*SessionEntityType, error) - // Creates a session entity type. - CreateSessionEntityType(context.Context, *CreateSessionEntityTypeRequest) (*SessionEntityType, error) - // Updates the specified session entity type. - UpdateSessionEntityType(context.Context, *UpdateSessionEntityTypeRequest) (*SessionEntityType, error) - // Deletes the specified session entity type. - DeleteSessionEntityType(context.Context, *DeleteSessionEntityTypeRequest) (*google_protobuf2.Empty, error) -} - -func RegisterSessionEntityTypesServer(s *grpc.Server, srv SessionEntityTypesServer) { - s.RegisterService(&_SessionEntityTypes_serviceDesc, srv) -} - -func _SessionEntityTypes_ListSessionEntityTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSessionEntityTypesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionEntityTypesServer).ListSessionEntityTypes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/ListSessionEntityTypes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionEntityTypesServer).ListSessionEntityTypes(ctx, req.(*ListSessionEntityTypesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionEntityTypes_GetSessionEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSessionEntityTypeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionEntityTypesServer).GetSessionEntityType(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/GetSessionEntityType", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionEntityTypesServer).GetSessionEntityType(ctx, req.(*GetSessionEntityTypeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionEntityTypes_CreateSessionEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateSessionEntityTypeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionEntityTypesServer).CreateSessionEntityType(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/CreateSessionEntityType", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionEntityTypesServer).CreateSessionEntityType(ctx, req.(*CreateSessionEntityTypeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionEntityTypes_UpdateSessionEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSessionEntityTypeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionEntityTypesServer).UpdateSessionEntityType(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/UpdateSessionEntityType", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionEntityTypesServer).UpdateSessionEntityType(ctx, req.(*UpdateSessionEntityTypeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionEntityTypes_DeleteSessionEntityType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSessionEntityTypeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionEntityTypesServer).DeleteSessionEntityType(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.dialogflow.v2beta1.SessionEntityTypes/DeleteSessionEntityType", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionEntityTypesServer).DeleteSessionEntityType(ctx, req.(*DeleteSessionEntityTypeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _SessionEntityTypes_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.dialogflow.v2beta1.SessionEntityTypes", - HandlerType: (*SessionEntityTypesServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListSessionEntityTypes", - Handler: _SessionEntityTypes_ListSessionEntityTypes_Handler, - }, - { - MethodName: "GetSessionEntityType", - Handler: _SessionEntityTypes_GetSessionEntityType_Handler, - }, - { - MethodName: "CreateSessionEntityType", - Handler: _SessionEntityTypes_CreateSessionEntityType_Handler, - }, - { - MethodName: "UpdateSessionEntityType", - Handler: _SessionEntityTypes_UpdateSessionEntityType_Handler, - }, - { - MethodName: "DeleteSessionEntityType", - Handler: _SessionEntityTypes_DeleteSessionEntityType_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/dialogflow/v2beta1/session_entity_type.proto", -} - -func init() { - proto.RegisterFile("google/cloud/dialogflow/v2beta1/session_entity_type.proto", fileDescriptor5) -} - -var fileDescriptor5 = []byte{ - // 804 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x4f, 0xdb, 0x48, - 0x14, 0xdf, 0x31, 0xbb, 0x08, 0x06, 0xed, 0x2e, 0xcc, 0xa2, 0x10, 0x85, 0x25, 0x64, 0xcd, 0x6a, - 0x85, 0x72, 0xb0, 0x45, 0x76, 0x2f, 0x2c, 0xfd, 0xa3, 0x42, 0x0c, 0x8a, 0x44, 0x42, 0xe4, 0x04, - 0xa4, 0xf6, 0x62, 0x39, 0xf8, 0x61, 0x19, 0x12, 0x8f, 0x9b, 0x99, 0x40, 0x43, 0xc5, 0x85, 0xaf, - 0xd0, 0x6b, 0x4f, 0x3d, 0xf6, 0xd0, 0x53, 0xfb, 0x01, 0x7a, 0xee, 0xb1, 0xd7, 0x4a, 0xbd, 0x54, - 0xfd, 0x06, 0x95, 0xaa, 0x9e, 0x2a, 0x8f, 0x1d, 0x82, 0xea, 0x3f, 0xa1, 0x51, 0x6f, 0x9e, 0x37, - 0xf3, 0x7b, 0xef, 0xf7, 0x7b, 0xf3, 0xde, 0xf3, 0xe0, 0x75, 0x9b, 0x52, 0xbb, 0x0d, 0xea, 0x61, - 0x9b, 0xf6, 0x2c, 0xd5, 0x72, 0xcc, 0x36, 0xb5, 0x8f, 0xda, 0xf4, 0x4c, 0x3d, 0x2d, 0xb5, 0x80, - 0x9b, 0x6b, 0x2a, 0x03, 0xc6, 0x1c, 0xea, 0x1a, 0xe0, 0x72, 0x87, 0xf7, 0x0d, 0xde, 0xf7, 0x40, - 0xf1, 0xba, 0x94, 0x53, 0xb2, 0x1c, 0x40, 0x15, 0x01, 0x55, 0x86, 0x50, 0x25, 0x84, 0xe6, 0xfe, - 0x0c, 0x7d, 0x9b, 0x9e, 0xa3, 0x9a, 0xae, 0x4b, 0xb9, 0xc9, 0x1d, 0xea, 0xb2, 0x00, 0x9e, 0x5b, - 0x1b, 0x15, 0x39, 0x12, 0x31, 0xb7, 0x18, 0x42, 0xc4, 0xaa, 0xd5, 0x3b, 0x52, 0xa1, 0xe3, 0xf1, - 0x7e, 0xb8, 0x59, 0xf8, 0x76, 0xf3, 0xc8, 0x81, 0xb6, 0x65, 0x74, 0x4c, 0x76, 0x12, 0x9c, 0x90, - 0x3f, 0x49, 0x78, 0xae, 0x11, 0xc8, 0xd1, 0x84, 0xef, 0x66, 0xdf, 0x03, 0x42, 0xf0, 0xcf, 0xae, - 0xd9, 0x81, 0x2c, 0x2a, 0xa0, 0xd5, 0x69, 0x5d, 0x7c, 0x93, 0x33, 0x3c, 0x1f, 0x46, 0xa7, 0xa7, - 0xd0, 0xed, 0x3a, 0x16, 0x18, 0x1d, 0x6a, 0x41, 0x56, 0x2a, 0xa0, 0xd5, 0xdf, 0x4a, 0x9a, 0x32, - 0x42, 0xb9, 0x12, 0x89, 0xa2, 0x04, 0x9f, 0x7b, 0xa1, 0xb7, 0x2a, 0xb5, 0x40, 0x27, 0x10, 0xb1, - 0x91, 0x1a, 0x9e, 0x12, 0x56, 0x07, 0x58, 0x76, 0xa2, 0x30, 0xb1, 0x3a, 0x53, 0x2a, 0x8d, 0x0c, - 0x16, 0x89, 0xa2, 0x5f, 0xf9, 0x90, 0x2f, 0x11, 0x26, 0xd1, 0xd0, 0xe4, 0x6f, 0x5c, 0xd0, 0x6a, - 0xcd, 0x4a, 0xf3, 0xbe, 0xb1, 0x77, 0xa0, 0xe9, 0x7a, 0xa5, 0xac, 0x19, 0xd5, 0xbd, 0xb2, 0x66, - 0xec, 0xd7, 0x1a, 0x75, 0x6d, 0xab, 0xb2, 0x5d, 0xd1, 0xca, 0xb3, 0x3f, 0x91, 0xbf, 0xf0, 0x52, - 0xec, 0xa9, 0xc1, 0x6a, 0x16, 0x91, 0x15, 0xbc, 0x1c, 0x7b, 0xa4, 0xb1, 0x5f, 0xaf, 0xef, 0x6a, - 0x55, 0xad, 0xd6, 0x9c, 0x95, 0x64, 0x86, 0x97, 0x76, 0x1d, 0xc6, 0x23, 0x49, 0x61, 0x3a, 0x3c, - 0xec, 0x01, 0xe3, 0x24, 0x83, 0x27, 0x3d, 0xb3, 0x0b, 0x2e, 0x0f, 0x2f, 0x21, 0x5c, 0x91, 0x45, - 0x3c, 0xed, 0x99, 0x36, 0x18, 0xcc, 0x39, 0x0f, 0x72, 0xff, 0x8b, 0x3e, 0xe5, 0x1b, 0x1a, 0xce, - 0x39, 0x90, 0x25, 0x8c, 0xc5, 0x26, 0xa7, 0x27, 0xe0, 0x66, 0x27, 0x04, 0x50, 0x1c, 0x6f, 0xfa, - 0x06, 0xf9, 0x05, 0xc2, 0xf9, 0xa4, 0xa8, 0xcc, 0xa3, 0x2e, 0x03, 0x62, 0xe1, 0xf9, 0x98, 0xea, - 0x66, 0x59, 0x74, 0xc3, 0xc4, 0x47, 0x5c, 0xeb, 0x84, 0x45, 0xa2, 0x91, 0x7f, 0xf0, 0xef, 0x2e, - 0x3c, 0xe2, 0xc6, 0x35, 0xb2, 0x92, 0x20, 0xfb, 0xab, 0x6f, 0xae, 0x5f, 0x11, 0x5e, 0xc3, 0x8b, - 0x3b, 0x10, 0xa5, 0x3b, 0xc8, 0x51, 0x4c, 0x99, 0xca, 0x4f, 0x11, 0xce, 0x6f, 0x75, 0xc1, 0xe4, - 0x90, 0x08, 0x4b, 0x4a, 0x6d, 0x0b, 0xff, 0x11, 0xa3, 0x5d, 0x30, 0x1b, 0x4f, 0xfa, 0x5c, 0x44, - 0xba, 0xfc, 0x1a, 0xe1, 0xfc, 0xbe, 0x67, 0xa5, 0xd1, 0x4b, 0xa0, 0x81, 0x7e, 0x20, 0x0d, 0xb2, - 0x81, 0x67, 0x7a, 0x82, 0x85, 0x98, 0x05, 0xa1, 0xc4, 0xdc, 0xc0, 0xf7, 0x60, 0x5c, 0x28, 0xdb, - 0xfe, 0xb8, 0xa8, 0x9a, 0xec, 0x44, 0xc7, 0xc1, 0x71, 0xff, 0x5b, 0xfe, 0x0f, 0xe7, 0xcb, 0xd0, - 0x86, 0x14, 0x09, 0x31, 0x17, 0x53, 0x7a, 0x3f, 0x85, 0x49, 0xb4, 0xf0, 0xc8, 0x3b, 0x84, 0x33, - 0xf1, 0x35, 0x49, 0xee, 0x8c, 0xd4, 0x9a, 0xda, 0x42, 0xb9, 0xbb, 0x63, 0xe3, 0x83, 0x66, 0x90, - 0xef, 0x5d, 0xbe, 0xfd, 0xf0, 0x44, 0xda, 0x20, 0xeb, 0x57, 0xf3, 0xf7, 0x71, 0x50, 0x2a, 0xb7, - 0xbd, 0x2e, 0x3d, 0x86, 0x43, 0xce, 0xd4, 0xa2, 0x6a, 0xda, 0xe0, 0xf2, 0xc1, 0x2f, 0x81, 0xa9, - 0xc5, 0x8b, 0x70, 0x48, 0x07, 0x1a, 0xde, 0x20, 0x3c, 0x1f, 0x57, 0xc2, 0xe4, 0xd6, 0x48, 0x72, - 0x29, 0x95, 0x9f, 0x1b, 0xa3, 0x0c, 0xe2, 0xd4, 0xf8, 0x17, 0x93, 0xa6, 0xe5, 0xba, 0x14, 0xb5, - 0x78, 0x41, 0x3e, 0x22, 0xbc, 0x90, 0xd0, 0x5c, 0x64, 0x74, 0xb6, 0xd3, 0xdb, 0x72, 0x2c, 0x4d, - 0x07, 0x42, 0x53, 0x5d, 0x1e, 0xff, 0x86, 0xfe, 0x8f, 0x6b, 0x36, 0xf2, 0x05, 0xe1, 0x85, 0x84, - 0x36, 0xbd, 0x81, 0xd0, 0xf4, 0x06, 0x1f, 0x4b, 0xe8, 0xb1, 0x10, 0x6a, 0x95, 0xaa, 0x43, 0xa1, - 0x71, 0xaf, 0x90, 0xef, 0xbc, 0xd0, 0x78, 0xf1, 0xaf, 0x10, 0x5e, 0x48, 0x68, 0xf0, 0x1b, 0x88, - 0x4f, 0x1f, 0x0d, 0xb9, 0x4c, 0x64, 0xc8, 0x68, 0xfe, 0x83, 0x65, 0x50, 0x9d, 0xc5, 0xf1, 0xab, - 0x73, 0xf3, 0x25, 0xc2, 0x2b, 0x87, 0xb4, 0x33, 0x8a, 0xe1, 0x66, 0x26, 0x42, 0xae, 0xee, 0x73, - 0xa9, 0xa3, 0x07, 0x95, 0x10, 0x6a, 0xd3, 0xb6, 0xe9, 0xda, 0x0a, 0xed, 0xda, 0xaa, 0x0d, 0xae, - 0x60, 0xaa, 0x06, 0x5b, 0xa6, 0xe7, 0xb0, 0xc4, 0xe7, 0xd9, 0xc6, 0xd0, 0xf4, 0x19, 0xa1, 0x67, - 0x92, 0x54, 0xde, 0x7e, 0x2e, 0x2d, 0xef, 0x04, 0x3e, 0xb7, 0x04, 0x9d, 0xf2, 0x90, 0xce, 0x41, - 0x00, 0x6a, 0x4d, 0x0a, 0xff, 0xff, 0x7e, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x87, 0xb0, 0xb6, - 0x77, 0x0a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/webhook.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/webhook.pb.go deleted file mode 100644 index 80e59ea3..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1/webhook.pb.go +++ /dev/null @@ -1,209 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/dialogflow/v2beta1/webhook.proto - -package dialogflow - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/struct" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The request message for a webhook call. -type WebhookRequest struct { - // The unique identifier of detectIntent request session. - // Can be used to identify end-user inside webhook implementation. - // Format: `projects/<Project ID>/agent/sessions/<Session ID>`. - Session string `protobuf:"bytes,4,opt,name=session" json:"session,omitempty"` - // The unique identifier of the response. Contains the same value as - // `[Streaming]DetectIntentResponse.response_id`. - ResponseId string `protobuf:"bytes,1,opt,name=response_id,json=responseId" json:"response_id,omitempty"` - // The result of the conversational query or event processing. Contains the - // same value as `[Streaming]DetectIntentResponse.query_result`. - QueryResult *QueryResult `protobuf:"bytes,2,opt,name=query_result,json=queryResult" json:"query_result,omitempty"` - // Optional. The contents of the original request that was passed to - // `[Streaming]DetectIntent` call. - OriginalDetectIntentRequest *OriginalDetectIntentRequest `protobuf:"bytes,3,opt,name=original_detect_intent_request,json=originalDetectIntentRequest" json:"original_detect_intent_request,omitempty"` -} - -func (m *WebhookRequest) Reset() { *m = WebhookRequest{} } -func (m *WebhookRequest) String() string { return proto.CompactTextString(m) } -func (*WebhookRequest) ProtoMessage() {} -func (*WebhookRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} } - -func (m *WebhookRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *WebhookRequest) GetResponseId() string { - if m != nil { - return m.ResponseId - } - return "" -} - -func (m *WebhookRequest) GetQueryResult() *QueryResult { - if m != nil { - return m.QueryResult - } - return nil -} - -func (m *WebhookRequest) GetOriginalDetectIntentRequest() *OriginalDetectIntentRequest { - if m != nil { - return m.OriginalDetectIntentRequest - } - return nil -} - -// The response message for a webhook call. -type WebhookResponse struct { - // Optional. The text to be shown on the screen. This value is passed directly - // to `QueryResult.fulfillment_text`. - FulfillmentText string `protobuf:"bytes,1,opt,name=fulfillment_text,json=fulfillmentText" json:"fulfillment_text,omitempty"` - // Optional. The collection of rich messages to present to the user. This - // value is passed directly to `QueryResult.fulfillment_messages`. - FulfillmentMessages []*Intent_Message `protobuf:"bytes,2,rep,name=fulfillment_messages,json=fulfillmentMessages" json:"fulfillment_messages,omitempty"` - // Optional. This value is passed directly to `QueryResult.webhook_source`. - Source string `protobuf:"bytes,3,opt,name=source" json:"source,omitempty"` - // Optional. This value is passed directly to `QueryResult.webhook_payload`. - Payload *google_protobuf4.Struct `protobuf:"bytes,4,opt,name=payload" json:"payload,omitempty"` - // Optional. The collection of output contexts. This value is passed directly - // to `QueryResult.output_contexts`. - OutputContexts []*Context `protobuf:"bytes,5,rep,name=output_contexts,json=outputContexts" json:"output_contexts,omitempty"` - // Optional. Makes the platform immediately invoke another `DetectIntent` call - // internally with the specified event as input. - FollowupEventInput *EventInput `protobuf:"bytes,6,opt,name=followup_event_input,json=followupEventInput" json:"followup_event_input,omitempty"` -} - -func (m *WebhookResponse) Reset() { *m = WebhookResponse{} } -func (m *WebhookResponse) String() string { return proto.CompactTextString(m) } -func (*WebhookResponse) ProtoMessage() {} -func (*WebhookResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} } - -func (m *WebhookResponse) GetFulfillmentText() string { - if m != nil { - return m.FulfillmentText - } - return "" -} - -func (m *WebhookResponse) GetFulfillmentMessages() []*Intent_Message { - if m != nil { - return m.FulfillmentMessages - } - return nil -} - -func (m *WebhookResponse) GetSource() string { - if m != nil { - return m.Source - } - return "" -} - -func (m *WebhookResponse) GetPayload() *google_protobuf4.Struct { - if m != nil { - return m.Payload - } - return nil -} - -func (m *WebhookResponse) GetOutputContexts() []*Context { - if m != nil { - return m.OutputContexts - } - return nil -} - -func (m *WebhookResponse) GetFollowupEventInput() *EventInput { - if m != nil { - return m.FollowupEventInput - } - return nil -} - -// Represents the contents of the original request that was passed to -// the `[Streaming]DetectIntent` call. -type OriginalDetectIntentRequest struct { - // The source of this request, e.g., `google`, `facebook`, `slack`. It is set - // by Dialogflow-owned servers. Possible values of this field correspond to - // [Intent.Message.Platform][google.cloud.dialogflow.v2beta1.Intent.Message.Platform]. - Source string `protobuf:"bytes,1,opt,name=source" json:"source,omitempty"` - // Optional. This field is set to the value of `QueryParameters.payload` field - // passed in the request. - Payload *google_protobuf4.Struct `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"` -} - -func (m *OriginalDetectIntentRequest) Reset() { *m = OriginalDetectIntentRequest{} } -func (m *OriginalDetectIntentRequest) String() string { return proto.CompactTextString(m) } -func (*OriginalDetectIntentRequest) ProtoMessage() {} -func (*OriginalDetectIntentRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} } - -func (m *OriginalDetectIntentRequest) GetSource() string { - if m != nil { - return m.Source - } - return "" -} - -func (m *OriginalDetectIntentRequest) GetPayload() *google_protobuf4.Struct { - if m != nil { - return m.Payload - } - return nil -} - -func init() { - proto.RegisterType((*WebhookRequest)(nil), "google.cloud.dialogflow.v2beta1.WebhookRequest") - proto.RegisterType((*WebhookResponse)(nil), "google.cloud.dialogflow.v2beta1.WebhookResponse") - proto.RegisterType((*OriginalDetectIntentRequest)(nil), "google.cloud.dialogflow.v2beta1.OriginalDetectIntentRequest") -} - -func init() { proto.RegisterFile("google/cloud/dialogflow/v2beta1/webhook.proto", fileDescriptor6) } - -var fileDescriptor6 = []byte{ - // 538 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x41, 0x6f, 0xd3, 0x30, - 0x14, 0x56, 0x52, 0xd8, 0x34, 0x77, 0x5a, 0x91, 0x99, 0x20, 0xda, 0x10, 0xad, 0xca, 0xa5, 0x88, - 0x91, 0x68, 0xe5, 0x08, 0xa7, 0xad, 0x80, 0x7a, 0x40, 0xdb, 0x02, 0x02, 0x09, 0x09, 0x45, 0x6e, - 0xe2, 0x66, 0x16, 0xae, 0x5f, 0x1a, 0xdb, 0xeb, 0x76, 0xe4, 0x87, 0x20, 0x21, 0x8e, 0xfb, 0x85, - 0x1c, 0x51, 0x6c, 0x87, 0xf4, 0x52, 0xb2, 0xe3, 0x7b, 0xfe, 0xbe, 0xef, 0x7d, 0xfe, 0xfc, 0x8c, - 0x5e, 0xe6, 0x00, 0x39, 0xa7, 0x51, 0xca, 0x41, 0x67, 0x51, 0xc6, 0x08, 0x87, 0x7c, 0xce, 0x61, - 0x15, 0x5d, 0x8d, 0x67, 0x54, 0x91, 0xe3, 0x68, 0x45, 0x67, 0x97, 0x00, 0xdf, 0xc3, 0xa2, 0x04, - 0x05, 0xb8, 0x6f, 0xe1, 0xa1, 0x81, 0x87, 0x0d, 0x3c, 0x74, 0xf0, 0x83, 0x27, 0x4e, 0x8f, 0x14, - 0x2c, 0x22, 0x42, 0x80, 0x22, 0x8a, 0x81, 0x90, 0x96, 0x7e, 0xd0, 0x3a, 0x2d, 0x05, 0xa1, 0xe8, - 0xb5, 0x72, 0xf0, 0xa3, 0x36, 0x38, 0x13, 0x8a, 0x0a, 0x75, 0x57, 0x71, 0x49, 0xa5, 0x64, 0x20, - 0x1c, 0xbc, 0x76, 0x6a, 0xaa, 0x99, 0x9e, 0x47, 0x52, 0x95, 0x3a, 0x75, 0x62, 0xc3, 0x5f, 0x3e, - 0xda, 0xfb, 0x62, 0xaf, 0x1e, 0xd3, 0xa5, 0xa6, 0x52, 0xe1, 0x00, 0x6d, 0x3b, 0x85, 0xe0, 0xde, - 0xc0, 0x1b, 0xed, 0xc4, 0x75, 0x89, 0xfb, 0xa8, 0x5b, 0x52, 0x59, 0x80, 0x90, 0x34, 0x61, 0x59, - 0xe0, 0x99, 0x53, 0x54, 0xb7, 0xa6, 0x19, 0x3e, 0x43, 0xbb, 0x4b, 0x4d, 0xcb, 0x9b, 0xa4, 0xa4, - 0x52, 0x73, 0x15, 0xf8, 0x03, 0x6f, 0xd4, 0x1d, 0x1f, 0x85, 0x2d, 0x69, 0x86, 0x17, 0x15, 0x29, - 0x36, 0x9c, 0xb8, 0xbb, 0x6c, 0x0a, 0xfc, 0xc3, 0x43, 0x4f, 0xa1, 0x64, 0x39, 0x13, 0x84, 0x27, - 0x19, 0x55, 0x34, 0x55, 0x89, 0x0d, 0x23, 0x29, 0xad, 0xdd, 0xa0, 0x63, 0x66, 0xbc, 0x69, 0x9d, - 0x71, 0xe6, 0x64, 0x26, 0x46, 0x65, 0x6a, 0x44, 0xdc, 0x95, 0xe3, 0x43, 0xd8, 0x7c, 0x38, 0xfc, - 0xd9, 0x41, 0xbd, 0x7f, 0x11, 0xd9, 0xab, 0xe2, 0xe7, 0xe8, 0xc1, 0x5c, 0xf3, 0x39, 0xe3, 0x7c, - 0x51, 0x79, 0xa9, 0xde, 0xd2, 0xc5, 0xd1, 0x5b, 0xeb, 0x7f, 0xa2, 0xd7, 0x0a, 0xcf, 0xd0, 0xfe, - 0x3a, 0x74, 0x41, 0xa5, 0x24, 0x39, 0x95, 0x81, 0x3f, 0xe8, 0x8c, 0xba, 0xe3, 0xa8, 0xd5, 0xb7, - 0x35, 0x13, 0x7e, 0xb0, 0xbc, 0xf8, 0xe1, 0x9a, 0x98, 0xeb, 0x49, 0xfc, 0x08, 0x6d, 0x49, 0xd0, - 0x65, 0x4a, 0x4d, 0x1a, 0x3b, 0xb1, 0xab, 0xf0, 0x31, 0xda, 0x2e, 0xc8, 0x0d, 0x07, 0x92, 0x99, - 0xa7, 0xec, 0x8e, 0x1f, 0xd7, 0xe3, 0xea, 0x6d, 0x08, 0x3f, 0x9a, 0x6d, 0x88, 0x6b, 0x1c, 0xbe, - 0x40, 0x3d, 0xd0, 0xaa, 0xd0, 0x2a, 0x71, 0x3b, 0x2a, 0x83, 0xfb, 0xc6, 0xe9, 0xa8, 0xd5, 0xe9, - 0xa9, 0x25, 0xc4, 0x7b, 0x56, 0xc0, 0x95, 0x12, 0x7f, 0x43, 0xfb, 0x73, 0xe0, 0x1c, 0x56, 0xba, - 0x48, 0xe8, 0x55, 0x15, 0x02, 0x13, 0x85, 0x56, 0xc1, 0x96, 0xb1, 0xf4, 0xa2, 0x55, 0xf7, 0x6d, - 0xc5, 0x99, 0x56, 0x94, 0x18, 0xd7, 0x42, 0x4d, 0x6f, 0x78, 0x89, 0x0e, 0xff, 0xf3, 0xb6, 0x6b, - 0xd9, 0x78, 0x9b, 0xb2, 0xe9, 0xdc, 0x2d, 0x9b, 0x93, 0x5b, 0x0f, 0x3d, 0x4b, 0x61, 0xd1, 0x66, - 0xf8, 0x64, 0xd7, 0xad, 0xcb, 0x79, 0x25, 0x74, 0xee, 0x7d, 0x9d, 0x3a, 0x42, 0x0e, 0x9c, 0x88, - 0x3c, 0x84, 0x32, 0x8f, 0x72, 0x2a, 0xcc, 0x98, 0xc8, 0x1e, 0x91, 0x82, 0xc9, 0x8d, 0x1f, 0xfa, - 0x75, 0xd3, 0xfa, 0xe3, 0x79, 0xbf, 0x7d, 0x7f, 0xf2, 0xee, 0xd6, 0xef, 0xbf, 0xb7, 0x9a, 0xa7, - 0xc6, 0xc4, 0xa4, 0x31, 0xf1, 0xd9, 0x92, 0x66, 0x5b, 0x46, 0xff, 0xd5, 0xdf, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x52, 0x6e, 0x3d, 0x85, 0xfa, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/functions/v1beta2/functions.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/functions/v1beta2/functions.pb.go deleted file mode 100644 index 53a9f562..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/functions/v1beta2/functions.pb.go +++ /dev/null @@ -1,1203 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/functions/v1beta2/functions.proto - -/* -Package functions is a generated protocol buffer package. - -It is generated from these files: - google/cloud/functions/v1beta2/functions.proto - google/cloud/functions/v1beta2/operations.proto - -It has these top-level messages: - CloudFunction - HTTPSTrigger - EventTrigger - SourceRepository - CreateFunctionRequest - UpdateFunctionRequest - GetFunctionRequest - ListFunctionsRequest - ListFunctionsResponse - DeleteFunctionRequest - CallFunctionRequest - CallFunctionResponse - OperationMetadataV1Beta2 -*/ -package functions - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/serviceconfig" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Describes the current stage of a deployment. -type CloudFunctionStatus int32 - -const ( - // Status not specified. - CloudFunctionStatus_STATUS_UNSPECIFIED CloudFunctionStatus = 0 - // Successfully deployed. - CloudFunctionStatus_READY CloudFunctionStatus = 1 - // Not deployed correctly - behavior is undefined. The item should be updated - // or deleted to move it out of this state. - CloudFunctionStatus_FAILED CloudFunctionStatus = 2 - // Creation or update in progress. - CloudFunctionStatus_DEPLOYING CloudFunctionStatus = 3 - // Deletion in progress. - CloudFunctionStatus_DELETING CloudFunctionStatus = 4 -) - -var CloudFunctionStatus_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "READY", - 2: "FAILED", - 3: "DEPLOYING", - 4: "DELETING", -} -var CloudFunctionStatus_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "READY": 1, - "FAILED": 2, - "DEPLOYING": 3, - "DELETING": 4, -} - -func (x CloudFunctionStatus) String() string { - return proto.EnumName(CloudFunctionStatus_name, int32(x)) -} -func (CloudFunctionStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Describes a Cloud Function that contains user computation executed in -// response to an event. It encapsulate function and triggers configurations. -type CloudFunction struct { - // A user-defined name of the function. Function names must be unique - // globally and match pattern `projects/*/locations/*/functions/*` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The location of the function source code. - // - // Types that are valid to be assigned to SourceCode: - // *CloudFunction_SourceArchiveUrl - // *CloudFunction_SourceRepository - SourceCode isCloudFunction_SourceCode `protobuf_oneof:"source_code"` - // An event that triggers the function. - // - // Types that are valid to be assigned to Trigger: - // *CloudFunction_HttpsTrigger - // *CloudFunction_EventTrigger - Trigger isCloudFunction_Trigger `protobuf_oneof:"trigger"` - // Output only. Status of the function deployment. - Status CloudFunctionStatus `protobuf:"varint,7,opt,name=status,enum=google.cloud.functions.v1beta2.CloudFunctionStatus" json:"status,omitempty"` - // Output only. Name of the most recent operation modifying the function. If - // the function status is `DEPLOYING` or `DELETING`, then it points to the - // active operation. - LatestOperation string `protobuf:"bytes,8,opt,name=latest_operation,json=latestOperation" json:"latest_operation,omitempty"` - // The name of the function (as defined in source code) that will be - // executed. Defaults to the resource name suffix, if not specified. For - // backward compatibility, if function with given name is not found, then the - // system will try to use function named "function". - // For Node.js this is name of a function exported by the module specified - // in `source_location`. - EntryPoint string `protobuf:"bytes,9,opt,name=entry_point,json=entryPoint" json:"entry_point,omitempty"` - // The function execution timeout. Execution is considered failed and - // can be terminated if the function is not completed at the end of the - // timeout period. Defaults to 60 seconds. - Timeout *google_protobuf3.Duration `protobuf:"bytes,10,opt,name=timeout" json:"timeout,omitempty"` - // The amount of memory in MB available for a function. - // Defaults to 256MB. - AvailableMemoryMb int32 `protobuf:"varint,11,opt,name=available_memory_mb,json=availableMemoryMb" json:"available_memory_mb,omitempty"` - // Output only. The service account of the function. - ServiceAccount string `protobuf:"bytes,13,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // Output only. The last update timestamp of a Cloud Function. - UpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,15,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *CloudFunction) Reset() { *m = CloudFunction{} } -func (m *CloudFunction) String() string { return proto.CompactTextString(m) } -func (*CloudFunction) ProtoMessage() {} -func (*CloudFunction) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isCloudFunction_SourceCode interface { - isCloudFunction_SourceCode() -} -type isCloudFunction_Trigger interface { - isCloudFunction_Trigger() -} - -type CloudFunction_SourceArchiveUrl struct { - SourceArchiveUrl string `protobuf:"bytes,14,opt,name=source_archive_url,json=sourceArchiveUrl,oneof"` -} -type CloudFunction_SourceRepository struct { - SourceRepository *SourceRepository `protobuf:"bytes,3,opt,name=source_repository,json=sourceRepository,oneof"` -} -type CloudFunction_HttpsTrigger struct { - HttpsTrigger *HTTPSTrigger `protobuf:"bytes,6,opt,name=https_trigger,json=httpsTrigger,oneof"` -} -type CloudFunction_EventTrigger struct { - EventTrigger *EventTrigger `protobuf:"bytes,12,opt,name=event_trigger,json=eventTrigger,oneof"` -} - -func (*CloudFunction_SourceArchiveUrl) isCloudFunction_SourceCode() {} -func (*CloudFunction_SourceRepository) isCloudFunction_SourceCode() {} -func (*CloudFunction_HttpsTrigger) isCloudFunction_Trigger() {} -func (*CloudFunction_EventTrigger) isCloudFunction_Trigger() {} - -func (m *CloudFunction) GetSourceCode() isCloudFunction_SourceCode { - if m != nil { - return m.SourceCode - } - return nil -} -func (m *CloudFunction) GetTrigger() isCloudFunction_Trigger { - if m != nil { - return m.Trigger - } - return nil -} - -func (m *CloudFunction) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CloudFunction) GetSourceArchiveUrl() string { - if x, ok := m.GetSourceCode().(*CloudFunction_SourceArchiveUrl); ok { - return x.SourceArchiveUrl - } - return "" -} - -func (m *CloudFunction) GetSourceRepository() *SourceRepository { - if x, ok := m.GetSourceCode().(*CloudFunction_SourceRepository); ok { - return x.SourceRepository - } - return nil -} - -func (m *CloudFunction) GetHttpsTrigger() *HTTPSTrigger { - if x, ok := m.GetTrigger().(*CloudFunction_HttpsTrigger); ok { - return x.HttpsTrigger - } - return nil -} - -func (m *CloudFunction) GetEventTrigger() *EventTrigger { - if x, ok := m.GetTrigger().(*CloudFunction_EventTrigger); ok { - return x.EventTrigger - } - return nil -} - -func (m *CloudFunction) GetStatus() CloudFunctionStatus { - if m != nil { - return m.Status - } - return CloudFunctionStatus_STATUS_UNSPECIFIED -} - -func (m *CloudFunction) GetLatestOperation() string { - if m != nil { - return m.LatestOperation - } - return "" -} - -func (m *CloudFunction) GetEntryPoint() string { - if m != nil { - return m.EntryPoint - } - return "" -} - -func (m *CloudFunction) GetTimeout() *google_protobuf3.Duration { - if m != nil { - return m.Timeout - } - return nil -} - -func (m *CloudFunction) GetAvailableMemoryMb() int32 { - if m != nil { - return m.AvailableMemoryMb - } - return 0 -} - -func (m *CloudFunction) GetServiceAccount() string { - if m != nil { - return m.ServiceAccount - } - return "" -} - -func (m *CloudFunction) GetUpdateTime() *google_protobuf4.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CloudFunction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CloudFunction_OneofMarshaler, _CloudFunction_OneofUnmarshaler, _CloudFunction_OneofSizer, []interface{}{ - (*CloudFunction_SourceArchiveUrl)(nil), - (*CloudFunction_SourceRepository)(nil), - (*CloudFunction_HttpsTrigger)(nil), - (*CloudFunction_EventTrigger)(nil), - } -} - -func _CloudFunction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CloudFunction) - // source_code - switch x := m.SourceCode.(type) { - case *CloudFunction_SourceArchiveUrl: - b.EncodeVarint(14<<3 | proto.WireBytes) - b.EncodeStringBytes(x.SourceArchiveUrl) - case *CloudFunction_SourceRepository: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SourceRepository); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CloudFunction.SourceCode has unexpected type %T", x) - } - // trigger - switch x := m.Trigger.(type) { - case *CloudFunction_HttpsTrigger: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HttpsTrigger); err != nil { - return err - } - case *CloudFunction_EventTrigger: - b.EncodeVarint(12<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.EventTrigger); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CloudFunction.Trigger has unexpected type %T", x) - } - return nil -} - -func _CloudFunction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CloudFunction) - switch tag { - case 14: // source_code.source_archive_url - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.SourceCode = &CloudFunction_SourceArchiveUrl{x} - return true, err - case 3: // source_code.source_repository - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(SourceRepository) - err := b.DecodeMessage(msg) - m.SourceCode = &CloudFunction_SourceRepository{msg} - return true, err - case 6: // trigger.https_trigger - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(HTTPSTrigger) - err := b.DecodeMessage(msg) - m.Trigger = &CloudFunction_HttpsTrigger{msg} - return true, err - case 12: // trigger.event_trigger - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(EventTrigger) - err := b.DecodeMessage(msg) - m.Trigger = &CloudFunction_EventTrigger{msg} - return true, err - default: - return false, nil - } -} - -func _CloudFunction_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CloudFunction) - // source_code - switch x := m.SourceCode.(type) { - case *CloudFunction_SourceArchiveUrl: - n += proto.SizeVarint(14<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.SourceArchiveUrl))) - n += len(x.SourceArchiveUrl) - case *CloudFunction_SourceRepository: - s := proto.Size(x.SourceRepository) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // trigger - switch x := m.Trigger.(type) { - case *CloudFunction_HttpsTrigger: - s := proto.Size(x.HttpsTrigger) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *CloudFunction_EventTrigger: - s := proto.Size(x.EventTrigger) - n += proto.SizeVarint(12<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Describes HTTPSTrigger, could be used to connect web hooks to function. -type HTTPSTrigger struct { - // Output only. The deployed url for the function. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` -} - -func (m *HTTPSTrigger) Reset() { *m = HTTPSTrigger{} } -func (m *HTTPSTrigger) String() string { return proto.CompactTextString(m) } -func (*HTTPSTrigger) ProtoMessage() {} -func (*HTTPSTrigger) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *HTTPSTrigger) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -// Describes EventTrigger, used to request events be sent from another -// service. -type EventTrigger struct { - // `event_type` names contain the service that is sending an event and the - // kind of event that was fired. Must be of the form - // `providers/*/eventTypes/*` e.g. Directly handle a Message published to - // Google Cloud Pub/Sub `providers/cloud.pubsub/eventTypes/topic.publish` - // - // Handle an object changing in Google Cloud Storage - // `providers/cloud.storage/eventTypes/object.change` - // - // Handle a write to the Firebase Realtime Database - // `providers/firebase.database/eventTypes/data.write` - EventType string `protobuf:"bytes,1,opt,name=event_type,json=eventType" json:"event_type,omitempty"` - // Which instance of the source's service should send events. E.g. for Pub/Sub - // this would be a Pub/Sub topic at `projects/*/topics/*`. For Google Cloud - // Storage this would be a bucket at `projects/*/buckets/*`. For any source - // that only supports one instance per-project, this should be the name of the - // project (`projects/*`) - Resource string `protobuf:"bytes,2,opt,name=resource" json:"resource,omitempty"` -} - -func (m *EventTrigger) Reset() { *m = EventTrigger{} } -func (m *EventTrigger) String() string { return proto.CompactTextString(m) } -func (*EventTrigger) ProtoMessage() {} -func (*EventTrigger) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *EventTrigger) GetEventType() string { - if m != nil { - return m.EventType - } - return "" -} - -func (m *EventTrigger) GetResource() string { - if m != nil { - return m.Resource - } - return "" -} - -// Describes the location of the function source in a remote repository. -type SourceRepository struct { - // URL to the hosted repository where the function is defined. Only paths in - // https://source.developers.google.com domain are supported. The path should - // contain the name of the repository. - RepositoryUrl string `protobuf:"bytes,1,opt,name=repository_url,json=repositoryUrl" json:"repository_url,omitempty"` - // The path within the repository where the function is defined. The path - // should point to the directory where Cloud Functions files are located. Use - // "/" if the function is defined directly in the root directory of a - // repository. - SourcePath string `protobuf:"bytes,2,opt,name=source_path,json=sourcePath" json:"source_path,omitempty"` - // The version of a function. Defaults to the latest version of the master - // branch. - // - // Types that are valid to be assigned to Version: - // *SourceRepository_Branch - // *SourceRepository_Tag - // *SourceRepository_Revision - Version isSourceRepository_Version `protobuf_oneof:"version"` - // Output only. The id of the revision that was resolved at the moment of - // function creation or update. For example when a user deployed from a - // branch, it will be the revision id of the latest change on this branch at - // that time. If user deployed from revision then this value will be always - // equal to the revision specified by the user. - DeployedRevision string `protobuf:"bytes,6,opt,name=deployed_revision,json=deployedRevision" json:"deployed_revision,omitempty"` -} - -func (m *SourceRepository) Reset() { *m = SourceRepository{} } -func (m *SourceRepository) String() string { return proto.CompactTextString(m) } -func (*SourceRepository) ProtoMessage() {} -func (*SourceRepository) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -type isSourceRepository_Version interface { - isSourceRepository_Version() -} - -type SourceRepository_Branch struct { - Branch string `protobuf:"bytes,3,opt,name=branch,oneof"` -} -type SourceRepository_Tag struct { - Tag string `protobuf:"bytes,4,opt,name=tag,oneof"` -} -type SourceRepository_Revision struct { - Revision string `protobuf:"bytes,5,opt,name=revision,oneof"` -} - -func (*SourceRepository_Branch) isSourceRepository_Version() {} -func (*SourceRepository_Tag) isSourceRepository_Version() {} -func (*SourceRepository_Revision) isSourceRepository_Version() {} - -func (m *SourceRepository) GetVersion() isSourceRepository_Version { - if m != nil { - return m.Version - } - return nil -} - -func (m *SourceRepository) GetRepositoryUrl() string { - if m != nil { - return m.RepositoryUrl - } - return "" -} - -func (m *SourceRepository) GetSourcePath() string { - if m != nil { - return m.SourcePath - } - return "" -} - -func (m *SourceRepository) GetBranch() string { - if x, ok := m.GetVersion().(*SourceRepository_Branch); ok { - return x.Branch - } - return "" -} - -func (m *SourceRepository) GetTag() string { - if x, ok := m.GetVersion().(*SourceRepository_Tag); ok { - return x.Tag - } - return "" -} - -func (m *SourceRepository) GetRevision() string { - if x, ok := m.GetVersion().(*SourceRepository_Revision); ok { - return x.Revision - } - return "" -} - -func (m *SourceRepository) GetDeployedRevision() string { - if m != nil { - return m.DeployedRevision - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SourceRepository) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SourceRepository_OneofMarshaler, _SourceRepository_OneofUnmarshaler, _SourceRepository_OneofSizer, []interface{}{ - (*SourceRepository_Branch)(nil), - (*SourceRepository_Tag)(nil), - (*SourceRepository_Revision)(nil), - } -} - -func _SourceRepository_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SourceRepository) - // version - switch x := m.Version.(type) { - case *SourceRepository_Branch: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Branch) - case *SourceRepository_Tag: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Tag) - case *SourceRepository_Revision: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Revision) - case nil: - default: - return fmt.Errorf("SourceRepository.Version has unexpected type %T", x) - } - return nil -} - -func _SourceRepository_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SourceRepository) - switch tag { - case 3: // version.branch - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Version = &SourceRepository_Branch{x} - return true, err - case 4: // version.tag - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Version = &SourceRepository_Tag{x} - return true, err - case 5: // version.revision - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Version = &SourceRepository_Revision{x} - return true, err - default: - return false, nil - } -} - -func _SourceRepository_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SourceRepository) - // version - switch x := m.Version.(type) { - case *SourceRepository_Branch: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Branch))) - n += len(x.Branch) - case *SourceRepository_Tag: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Tag))) - n += len(x.Tag) - case *SourceRepository_Revision: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Revision))) - n += len(x.Revision) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Request for the `CreateFunction` method. -type CreateFunctionRequest struct { - // The project and location in which the function should be created, specified - // in the format `projects/*/locations/*` - Location string `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"` - // Function to be created. - Function *CloudFunction `protobuf:"bytes,2,opt,name=function" json:"function,omitempty"` -} - -func (m *CreateFunctionRequest) Reset() { *m = CreateFunctionRequest{} } -func (m *CreateFunctionRequest) String() string { return proto.CompactTextString(m) } -func (*CreateFunctionRequest) ProtoMessage() {} -func (*CreateFunctionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *CreateFunctionRequest) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -func (m *CreateFunctionRequest) GetFunction() *CloudFunction { - if m != nil { - return m.Function - } - return nil -} - -// Request for the `UpdateFunction` method. -type UpdateFunctionRequest struct { - // The name of the function to be updated. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // New version of the function. - Function *CloudFunction `protobuf:"bytes,2,opt,name=function" json:"function,omitempty"` -} - -func (m *UpdateFunctionRequest) Reset() { *m = UpdateFunctionRequest{} } -func (m *UpdateFunctionRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateFunctionRequest) ProtoMessage() {} -func (*UpdateFunctionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *UpdateFunctionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateFunctionRequest) GetFunction() *CloudFunction { - if m != nil { - return m.Function - } - return nil -} - -// Request for the `GetFunction` method. -type GetFunctionRequest struct { - // The name of the function which details should be obtained. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetFunctionRequest) Reset() { *m = GetFunctionRequest{} } -func (m *GetFunctionRequest) String() string { return proto.CompactTextString(m) } -func (*GetFunctionRequest) ProtoMessage() {} -func (*GetFunctionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *GetFunctionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for the `ListFunctions` method. -type ListFunctionsRequest struct { - // The project and location from which the function should be listed, - // specified in the format `projects/*/locations/*` - // If you want to list functions in all locations, use "-" in place of a - // location. - Location string `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"` - // Maximum number of functions to return per call. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last - // `ListFunctionsResponse`; indicates that - // this is a continuation of a prior `ListFunctions` call, and that the - // system should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListFunctionsRequest) Reset() { *m = ListFunctionsRequest{} } -func (m *ListFunctionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListFunctionsRequest) ProtoMessage() {} -func (*ListFunctionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ListFunctionsRequest) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -func (m *ListFunctionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListFunctionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the `ListFunctions` method. -type ListFunctionsResponse struct { - // The functions that match the request. - Functions []*CloudFunction `protobuf:"bytes,1,rep,name=functions" json:"functions,omitempty"` - // If not empty, indicates that there may be more functions that match - // the request; this value should be passed in a new - // [google.cloud.functions.v1beta2.ListFunctionsRequest][] - // to get more functions. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListFunctionsResponse) Reset() { *m = ListFunctionsResponse{} } -func (m *ListFunctionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListFunctionsResponse) ProtoMessage() {} -func (*ListFunctionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ListFunctionsResponse) GetFunctions() []*CloudFunction { - if m != nil { - return m.Functions - } - return nil -} - -func (m *ListFunctionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the `DeleteFunction` method. -type DeleteFunctionRequest struct { - // The name of the function which should be deleted. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteFunctionRequest) Reset() { *m = DeleteFunctionRequest{} } -func (m *DeleteFunctionRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteFunctionRequest) ProtoMessage() {} -func (*DeleteFunctionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *DeleteFunctionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for the `CallFunction` method. -type CallFunctionRequest struct { - // The name of the function to be called. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Input to be passed to the function. - Data string `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` -} - -func (m *CallFunctionRequest) Reset() { *m = CallFunctionRequest{} } -func (m *CallFunctionRequest) String() string { return proto.CompactTextString(m) } -func (*CallFunctionRequest) ProtoMessage() {} -func (*CallFunctionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *CallFunctionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CallFunctionRequest) GetData() string { - if m != nil { - return m.Data - } - return "" -} - -// Response of `CallFunction` method. -type CallFunctionResponse struct { - // Execution id of function invocation. - ExecutionId string `protobuf:"bytes,1,opt,name=execution_id,json=executionId" json:"execution_id,omitempty"` - // Result populated for successful execution of synchronous function. Will - // not be populated if function does not return a result through context. - Result string `protobuf:"bytes,2,opt,name=result" json:"result,omitempty"` - // Either system or user-function generated error. Set if execution - // was not successful. - Error string `protobuf:"bytes,3,opt,name=error" json:"error,omitempty"` -} - -func (m *CallFunctionResponse) Reset() { *m = CallFunctionResponse{} } -func (m *CallFunctionResponse) String() string { return proto.CompactTextString(m) } -func (*CallFunctionResponse) ProtoMessage() {} -func (*CallFunctionResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *CallFunctionResponse) GetExecutionId() string { - if m != nil { - return m.ExecutionId - } - return "" -} - -func (m *CallFunctionResponse) GetResult() string { - if m != nil { - return m.Result - } - return "" -} - -func (m *CallFunctionResponse) GetError() string { - if m != nil { - return m.Error - } - return "" -} - -func init() { - proto.RegisterType((*CloudFunction)(nil), "google.cloud.functions.v1beta2.CloudFunction") - proto.RegisterType((*HTTPSTrigger)(nil), "google.cloud.functions.v1beta2.HTTPSTrigger") - proto.RegisterType((*EventTrigger)(nil), "google.cloud.functions.v1beta2.EventTrigger") - proto.RegisterType((*SourceRepository)(nil), "google.cloud.functions.v1beta2.SourceRepository") - proto.RegisterType((*CreateFunctionRequest)(nil), "google.cloud.functions.v1beta2.CreateFunctionRequest") - proto.RegisterType((*UpdateFunctionRequest)(nil), "google.cloud.functions.v1beta2.UpdateFunctionRequest") - proto.RegisterType((*GetFunctionRequest)(nil), "google.cloud.functions.v1beta2.GetFunctionRequest") - proto.RegisterType((*ListFunctionsRequest)(nil), "google.cloud.functions.v1beta2.ListFunctionsRequest") - proto.RegisterType((*ListFunctionsResponse)(nil), "google.cloud.functions.v1beta2.ListFunctionsResponse") - proto.RegisterType((*DeleteFunctionRequest)(nil), "google.cloud.functions.v1beta2.DeleteFunctionRequest") - proto.RegisterType((*CallFunctionRequest)(nil), "google.cloud.functions.v1beta2.CallFunctionRequest") - proto.RegisterType((*CallFunctionResponse)(nil), "google.cloud.functions.v1beta2.CallFunctionResponse") - proto.RegisterEnum("google.cloud.functions.v1beta2.CloudFunctionStatus", CloudFunctionStatus_name, CloudFunctionStatus_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for CloudFunctionsService service - -type CloudFunctionsServiceClient interface { - // Returns a list of functions that belong to the requested project. - ListFunctions(ctx context.Context, in *ListFunctionsRequest, opts ...grpc.CallOption) (*ListFunctionsResponse, error) - // Returns a function with the given name from the requested project. - GetFunction(ctx context.Context, in *GetFunctionRequest, opts ...grpc.CallOption) (*CloudFunction, error) - // Creates a new function. If a function with the given name already exists in - // the specified project, the long running operation will return - // `ALREADY_EXISTS` error. - CreateFunction(ctx context.Context, in *CreateFunctionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Updates existing function. - UpdateFunction(ctx context.Context, in *UpdateFunctionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes a function with the given name from the specified project. If the - // given function is used by some trigger, the trigger will be updated to - // remove this function. - DeleteFunction(ctx context.Context, in *DeleteFunctionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Invokes synchronously deployed function. To be used for testing, very - // limited traffic allowed. - CallFunction(ctx context.Context, in *CallFunctionRequest, opts ...grpc.CallOption) (*CallFunctionResponse, error) -} - -type cloudFunctionsServiceClient struct { - cc *grpc.ClientConn -} - -func NewCloudFunctionsServiceClient(cc *grpc.ClientConn) CloudFunctionsServiceClient { - return &cloudFunctionsServiceClient{cc} -} - -func (c *cloudFunctionsServiceClient) ListFunctions(ctx context.Context, in *ListFunctionsRequest, opts ...grpc.CallOption) (*ListFunctionsResponse, error) { - out := new(ListFunctionsResponse) - err := grpc.Invoke(ctx, "/google.cloud.functions.v1beta2.CloudFunctionsService/ListFunctions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudFunctionsServiceClient) GetFunction(ctx context.Context, in *GetFunctionRequest, opts ...grpc.CallOption) (*CloudFunction, error) { - out := new(CloudFunction) - err := grpc.Invoke(ctx, "/google.cloud.functions.v1beta2.CloudFunctionsService/GetFunction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudFunctionsServiceClient) CreateFunction(ctx context.Context, in *CreateFunctionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.functions.v1beta2.CloudFunctionsService/CreateFunction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudFunctionsServiceClient) UpdateFunction(ctx context.Context, in *UpdateFunctionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.functions.v1beta2.CloudFunctionsService/UpdateFunction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudFunctionsServiceClient) DeleteFunction(ctx context.Context, in *DeleteFunctionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.functions.v1beta2.CloudFunctionsService/DeleteFunction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudFunctionsServiceClient) CallFunction(ctx context.Context, in *CallFunctionRequest, opts ...grpc.CallOption) (*CallFunctionResponse, error) { - out := new(CallFunctionResponse) - err := grpc.Invoke(ctx, "/google.cloud.functions.v1beta2.CloudFunctionsService/CallFunction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for CloudFunctionsService service - -type CloudFunctionsServiceServer interface { - // Returns a list of functions that belong to the requested project. - ListFunctions(context.Context, *ListFunctionsRequest) (*ListFunctionsResponse, error) - // Returns a function with the given name from the requested project. - GetFunction(context.Context, *GetFunctionRequest) (*CloudFunction, error) - // Creates a new function. If a function with the given name already exists in - // the specified project, the long running operation will return - // `ALREADY_EXISTS` error. - CreateFunction(context.Context, *CreateFunctionRequest) (*google_longrunning.Operation, error) - // Updates existing function. - UpdateFunction(context.Context, *UpdateFunctionRequest) (*google_longrunning.Operation, error) - // Deletes a function with the given name from the specified project. If the - // given function is used by some trigger, the trigger will be updated to - // remove this function. - DeleteFunction(context.Context, *DeleteFunctionRequest) (*google_longrunning.Operation, error) - // Invokes synchronously deployed function. To be used for testing, very - // limited traffic allowed. - CallFunction(context.Context, *CallFunctionRequest) (*CallFunctionResponse, error) -} - -func RegisterCloudFunctionsServiceServer(s *grpc.Server, srv CloudFunctionsServiceServer) { - s.RegisterService(&_CloudFunctionsService_serviceDesc, srv) -} - -func _CloudFunctionsService_ListFunctions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFunctionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudFunctionsServiceServer).ListFunctions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.functions.v1beta2.CloudFunctionsService/ListFunctions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudFunctionsServiceServer).ListFunctions(ctx, req.(*ListFunctionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudFunctionsService_GetFunction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFunctionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudFunctionsServiceServer).GetFunction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.functions.v1beta2.CloudFunctionsService/GetFunction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudFunctionsServiceServer).GetFunction(ctx, req.(*GetFunctionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudFunctionsService_CreateFunction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateFunctionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudFunctionsServiceServer).CreateFunction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.functions.v1beta2.CloudFunctionsService/CreateFunction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudFunctionsServiceServer).CreateFunction(ctx, req.(*CreateFunctionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudFunctionsService_UpdateFunction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateFunctionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudFunctionsServiceServer).UpdateFunction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.functions.v1beta2.CloudFunctionsService/UpdateFunction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudFunctionsServiceServer).UpdateFunction(ctx, req.(*UpdateFunctionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudFunctionsService_DeleteFunction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteFunctionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudFunctionsServiceServer).DeleteFunction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.functions.v1beta2.CloudFunctionsService/DeleteFunction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudFunctionsServiceServer).DeleteFunction(ctx, req.(*DeleteFunctionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudFunctionsService_CallFunction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CallFunctionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudFunctionsServiceServer).CallFunction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.functions.v1beta2.CloudFunctionsService/CallFunction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudFunctionsServiceServer).CallFunction(ctx, req.(*CallFunctionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _CloudFunctionsService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.functions.v1beta2.CloudFunctionsService", - HandlerType: (*CloudFunctionsServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListFunctions", - Handler: _CloudFunctionsService_ListFunctions_Handler, - }, - { - MethodName: "GetFunction", - Handler: _CloudFunctionsService_GetFunction_Handler, - }, - { - MethodName: "CreateFunction", - Handler: _CloudFunctionsService_CreateFunction_Handler, - }, - { - MethodName: "UpdateFunction", - Handler: _CloudFunctionsService_UpdateFunction_Handler, - }, - { - MethodName: "DeleteFunction", - Handler: _CloudFunctionsService_DeleteFunction_Handler, - }, - { - MethodName: "CallFunction", - Handler: _CloudFunctionsService_CallFunction_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/functions/v1beta2/functions.proto", -} - -func init() { proto.RegisterFile("google/cloud/functions/v1beta2/functions.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1216 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x73, 0xdb, 0x44, - 0x18, 0xae, 0xf2, 0xe1, 0xc6, 0xaf, 0x3f, 0xe2, 0x6e, 0x9b, 0x8e, 0x30, 0x2d, 0x0d, 0x62, 0x80, - 0x90, 0x82, 0x0d, 0x6e, 0x80, 0x99, 0x7e, 0x30, 0x24, 0xb1, 0x93, 0x78, 0x9a, 0xb6, 0x1e, 0xd9, - 0x39, 0x94, 0x8b, 0x66, 0x2d, 0x6f, 0x15, 0x81, 0xac, 0x15, 0xab, 0x95, 0xa7, 0x29, 0x53, 0x0e, - 0xcc, 0x70, 0xe3, 0xc6, 0x3f, 0xe8, 0x99, 0xe1, 0x07, 0x30, 0xc3, 0x9d, 0x3b, 0x57, 0x86, 0x13, - 0x3f, 0x84, 0xd9, 0xd5, 0x4a, 0x96, 0x93, 0x14, 0x25, 0x19, 0x6e, 0xda, 0xe7, 0xfd, 0x7a, 0x76, - 0xdf, 0x67, 0x5f, 0xaf, 0xa1, 0xe1, 0x50, 0xea, 0x78, 0xa4, 0x69, 0x7b, 0x34, 0x1a, 0x35, 0x9f, - 0x45, 0xbe, 0xcd, 0x5d, 0xea, 0x87, 0xcd, 0xc9, 0x27, 0x43, 0xc2, 0x71, 0x6b, 0x8a, 0x34, 0x02, - 0x46, 0x39, 0x45, 0x6f, 0xc5, 0xfe, 0x0d, 0xe9, 0xdf, 0x98, 0x5a, 0x95, 0x7f, 0xfd, 0x86, 0xca, - 0x87, 0x03, 0xb7, 0x89, 0x7d, 0x9f, 0x72, 0x9c, 0x89, 0xae, 0xaf, 0x64, 0xad, 0x11, 0x3f, 0x54, - 0x70, 0x33, 0x87, 0x04, 0x0d, 0x08, 0x9b, 0xc9, 0xf3, 0x8e, 0x0a, 0xf0, 0xa8, 0xef, 0xb0, 0xc8, - 0xf7, 0x5d, 0xdf, 0x39, 0xe9, 0xa4, 0xa8, 0x36, 0xe5, 0x6a, 0x18, 0x3d, 0x6b, 0x8e, 0xa2, 0xd8, - 0x41, 0xd9, 0x6f, 0x1d, 0xb7, 0x73, 0x77, 0x4c, 0x42, 0x8e, 0xc7, 0x41, 0xec, 0x60, 0xfc, 0xb5, - 0x08, 0x95, 0x6d, 0x41, 0x69, 0x47, 0x31, 0x42, 0x08, 0x16, 0x7c, 0x3c, 0x26, 0xba, 0xb6, 0xaa, - 0xad, 0x15, 0x4d, 0xf9, 0x8d, 0x1a, 0x80, 0x42, 0x1a, 0x31, 0x9b, 0x58, 0x98, 0xd9, 0x87, 0xee, - 0x84, 0x58, 0x11, 0xf3, 0xf4, 0xaa, 0xf0, 0xd8, 0xbb, 0x64, 0xd6, 0x62, 0xdb, 0x66, 0x6c, 0x3a, - 0x60, 0x1e, 0xb2, 0xe0, 0x8a, 0xf2, 0x67, 0x24, 0xa0, 0xa1, 0xcb, 0x29, 0x3b, 0xd2, 0xe7, 0x57, - 0xb5, 0xb5, 0x52, 0xeb, 0xe3, 0xc6, 0x7f, 0x9f, 0x6e, 0xa3, 0x2f, 0x03, 0xcd, 0x34, 0x6e, 0x5a, - 0x60, 0x8a, 0xa1, 0x3e, 0x54, 0x0e, 0x39, 0x0f, 0x42, 0x8b, 0x33, 0xd7, 0x71, 0x08, 0xd3, 0x0b, - 0x32, 0xf9, 0x87, 0x79, 0xc9, 0xf7, 0x06, 0x83, 0x5e, 0x7f, 0x10, 0xc7, 0xec, 0x69, 0x66, 0x59, - 0x26, 0x51, 0x6b, 0x91, 0x94, 0x4c, 0x88, 0xcf, 0xd3, 0xa4, 0xe5, 0xb3, 0x25, 0xed, 0x88, 0xa0, - 0x4c, 0x52, 0x92, 0x59, 0xa3, 0x87, 0x50, 0x08, 0x39, 0xe6, 0x51, 0xa8, 0x5f, 0x5e, 0xd5, 0xd6, - 0xaa, 0xad, 0x3b, 0x79, 0xd9, 0x66, 0xba, 0xd1, 0x97, 0xa1, 0xa6, 0x4a, 0x81, 0x3e, 0x80, 0x9a, - 0x87, 0x39, 0x09, 0xb9, 0x95, 0x2a, 0x41, 0x5f, 0x92, 0x7d, 0x5a, 0x8e, 0xf1, 0x27, 0x09, 0x8c, - 0x6e, 0x41, 0x89, 0xf8, 0x9c, 0x1d, 0x59, 0x01, 0x75, 0x7d, 0xae, 0x17, 0xa5, 0x17, 0x48, 0xa8, - 0x27, 0x10, 0x74, 0x07, 0x2e, 0x0b, 0x31, 0xd0, 0x88, 0xeb, 0x20, 0xf7, 0xf9, 0x46, 0xc2, 0x2c, - 0x11, 0x4b, 0xa3, 0xad, 0xc4, 0x64, 0x26, 0x9e, 0xa8, 0x01, 0x57, 0xf1, 0x04, 0xbb, 0x1e, 0x1e, - 0x7a, 0xc4, 0x1a, 0x93, 0x31, 0x65, 0x47, 0xd6, 0x78, 0xa8, 0x97, 0x56, 0xb5, 0xb5, 0x45, 0xf3, - 0x4a, 0x6a, 0x7a, 0x24, 0x2d, 0x8f, 0x86, 0xe8, 0x7d, 0x58, 0x0e, 0x09, 0x9b, 0xb8, 0x42, 0x39, - 0xb6, 0x4d, 0x23, 0x9f, 0xeb, 0x15, 0xc9, 0xa4, 0xaa, 0xe0, 0xcd, 0x18, 0x45, 0xf7, 0xa0, 0x14, - 0x05, 0x23, 0xcc, 0x89, 0x25, 0x4a, 0xe9, 0xcb, 0x92, 0x51, 0xfd, 0x04, 0xa3, 0x41, 0x22, 0x5f, - 0x13, 0x62, 0x77, 0x01, 0x6c, 0x55, 0xa0, 0xa4, 0xe4, 0x66, 0xd3, 0x11, 0xd9, 0x2a, 0xc2, 0x65, - 0xd5, 0x41, 0x63, 0x15, 0xca, 0xd9, 0x96, 0xa3, 0x1a, 0xcc, 0x0b, 0xe5, 0xc6, 0xda, 0x16, 0x9f, - 0x46, 0x17, 0xca, 0xd9, 0xfe, 0xa1, 0x9b, 0x00, 0x4a, 0x04, 0x47, 0x41, 0x72, 0x09, 0x8a, 0x71, - 0x47, 0x8f, 0x02, 0x82, 0xea, 0xb0, 0xc4, 0x48, 0x5c, 0x4c, 0x9f, 0x93, 0xc6, 0x74, 0x6d, 0xfc, - 0xad, 0x41, 0xed, 0xb8, 0x7a, 0xd1, 0xbb, 0x50, 0x9d, 0xde, 0x01, 0x6b, 0x5a, 0xbc, 0x32, 0x45, - 0xc5, 0x8d, 0xb9, 0x95, 0x6e, 0x21, 0xc0, 0xfc, 0x50, 0xa5, 0x86, 0x18, 0xea, 0x61, 0x7e, 0x88, - 0x74, 0x28, 0x0c, 0x19, 0xf6, 0xed, 0x43, 0x79, 0x8f, 0xc4, 0xb5, 0x53, 0x6b, 0x84, 0x60, 0x9e, - 0x63, 0x47, 0x5f, 0x50, 0xb0, 0x58, 0xa0, 0x1b, 0x82, 0xe6, 0xc4, 0x0d, 0x85, 0x40, 0x16, 0x95, - 0x21, 0x45, 0xd0, 0x6d, 0xb8, 0x32, 0x22, 0x81, 0x47, 0x8f, 0xc8, 0xc8, 0x4a, 0xdd, 0x0a, 0xb2, - 0x64, 0x2d, 0x31, 0x98, 0x0a, 0x17, 0xa7, 0x39, 0x21, 0x4c, 0x7c, 0x1a, 0xdf, 0xc3, 0xca, 0x36, - 0x23, 0x98, 0x93, 0x44, 0x9e, 0x26, 0xf9, 0x36, 0x22, 0x21, 0x17, 0xa7, 0xe2, 0x51, 0x3b, 0xd6, - 0x63, 0xbc, 0xbd, 0x74, 0x8d, 0xba, 0xb0, 0x94, 0x88, 0x5c, 0x6e, 0xab, 0xd4, 0xfa, 0xe8, 0x5c, - 0x57, 0xc0, 0x4c, 0xc3, 0x8d, 0x09, 0xac, 0x1c, 0xc8, 0xae, 0x1f, 0xaf, 0x7f, 0xda, 0xcc, 0xfa, - 0x1f, 0xeb, 0xae, 0x01, 0xda, 0x25, 0xfc, 0x0c, 0x45, 0x0d, 0x1f, 0xae, 0xed, 0xbb, 0x61, 0xea, - 0x1a, 0x9e, 0xe5, 0x80, 0xde, 0x84, 0x62, 0x80, 0x1d, 0x62, 0x85, 0xee, 0x8b, 0x58, 0x53, 0x8b, - 0xe6, 0x92, 0x00, 0xfa, 0xee, 0x0b, 0x22, 0xe4, 0x28, 0x8d, 0x9c, 0x7e, 0x43, 0xfc, 0xb8, 0xf5, - 0xa6, 0x74, 0x1f, 0x08, 0xc0, 0xf8, 0x49, 0x83, 0x95, 0x63, 0x05, 0xc3, 0x80, 0xfa, 0x21, 0x41, - 0x0f, 0xa1, 0x98, 0x6e, 0x50, 0xd7, 0x56, 0xe7, 0xcf, 0xbf, 0xff, 0x69, 0x3c, 0x7a, 0x0f, 0x96, - 0x7d, 0xf2, 0x9c, 0x5b, 0x19, 0x2a, 0xb1, 0x42, 0x2b, 0x02, 0xee, 0xa5, 0x74, 0x6e, 0xc3, 0x4a, - 0x9b, 0x78, 0xe4, 0x4c, 0x0d, 0x32, 0x1e, 0xc0, 0xd5, 0x6d, 0xec, 0x79, 0x67, 0xe9, 0x25, 0x82, - 0x85, 0x11, 0xe6, 0x58, 0x15, 0x95, 0xdf, 0x86, 0x03, 0xd7, 0x66, 0xc3, 0xd5, 0xc6, 0xdf, 0x86, - 0x32, 0x79, 0x4e, 0xec, 0x48, 0x80, 0x96, 0x3b, 0x52, 0x79, 0x4a, 0x29, 0xd6, 0x1d, 0xa1, 0xeb, - 0x50, 0x60, 0x24, 0x8c, 0x3c, 0xae, 0x12, 0xaa, 0x15, 0xba, 0x06, 0x8b, 0x84, 0x31, 0xca, 0xd4, - 0x39, 0xc7, 0x8b, 0x75, 0x0c, 0x57, 0x4f, 0x99, 0xc9, 0xe8, 0x3a, 0xa0, 0xfe, 0x60, 0x73, 0x70, - 0xd0, 0xb7, 0x0e, 0x1e, 0xf7, 0x7b, 0x9d, 0xed, 0xee, 0x4e, 0xb7, 0xd3, 0xae, 0x5d, 0x42, 0x45, - 0x58, 0x34, 0x3b, 0x9b, 0xed, 0xa7, 0x35, 0x0d, 0x01, 0x14, 0x76, 0x36, 0xbb, 0xfb, 0x9d, 0x76, - 0x6d, 0x0e, 0x55, 0xa0, 0xd8, 0xee, 0xf4, 0xf6, 0x9f, 0x3c, 0xed, 0x3e, 0xde, 0xad, 0xcd, 0xa3, - 0x32, 0x2c, 0xb5, 0x3b, 0xfb, 0x9d, 0x81, 0x58, 0x2d, 0xb4, 0xfe, 0x58, 0x82, 0x95, 0x99, 0x1a, - 0x61, 0x3f, 0x1e, 0x8f, 0xe8, 0x37, 0x0d, 0x2a, 0x33, 0x0d, 0x46, 0x1b, 0x79, 0x5d, 0x3c, 0x4d, - 0x80, 0xf5, 0x4f, 0xcf, 0x19, 0x15, 0x1f, 0xa6, 0x71, 0xff, 0x87, 0x3f, 0xff, 0xf9, 0x79, 0xee, - 0x33, 0xb4, 0x91, 0xbe, 0x53, 0xbe, 0x4b, 0x74, 0xfb, 0x20, 0x60, 0xf4, 0x6b, 0x62, 0xf3, 0xb0, - 0xb9, 0xde, 0x4c, 0xb0, 0xb0, 0xb9, 0xfe, 0x72, 0xfa, 0xb6, 0x41, 0xbf, 0x68, 0x50, 0xca, 0x5c, - 0x1c, 0xd4, 0xca, 0x23, 0x71, 0xf2, 0x96, 0xd5, 0xcf, 0x27, 0x5a, 0xe3, 0xae, 0x24, 0xbc, 0x81, - 0x5a, 0x53, 0xc2, 0x42, 0x41, 0xaf, 0x21, 0x9b, 0x79, 0x87, 0xad, 0xbf, 0x44, 0xbf, 0x6a, 0x50, - 0x9d, 0x9d, 0x6f, 0x28, 0xf7, 0xd8, 0x4e, 0x9d, 0x87, 0xf5, 0x9b, 0x49, 0x58, 0xe6, 0xf1, 0xd6, - 0x48, 0x7f, 0x9b, 0x8d, 0x1d, 0x49, 0xf2, 0x4b, 0xe3, 0x42, 0xa7, 0x7a, 0x37, 0x9d, 0x4b, 0xe2, - 0x7c, 0xab, 0xb3, 0x03, 0x31, 0x9f, 0xf0, 0xa9, 0x03, 0x34, 0x8f, 0x70, 0x5b, 0x12, 0xfe, 0xa2, - 0x7e, 0x81, 0x53, 0xcd, 0xd0, 0x7d, 0xa5, 0x41, 0x75, 0x76, 0x3c, 0xe4, 0xd3, 0x3d, 0x75, 0x9c, - 0xe4, 0xd1, 0x55, 0x22, 0x58, 0xbf, 0x88, 0x08, 0x7e, 0xd7, 0xa0, 0x9c, 0x9d, 0x2b, 0x28, 0xff, - 0xc1, 0x76, 0x72, 0x88, 0xd5, 0x37, 0xce, 0x17, 0xa4, 0x6e, 0xdb, 0x96, 0xe4, 0x7d, 0xdf, 0xf8, - 0xfc, 0x02, 0xc7, 0x6c, 0x63, 0xcf, 0xbb, 0xab, 0xad, 0x6f, 0xfd, 0xa8, 0x81, 0x61, 0xd3, 0x71, - 0x4e, 0xfd, 0xad, 0x6a, 0x7a, 0xd7, 0x7b, 0xe2, 0x6d, 0xd5, 0xd3, 0xbe, 0xda, 0x55, 0x11, 0x0e, - 0xf5, 0xb0, 0xef, 0x34, 0x28, 0x73, 0x9a, 0x0e, 0xf1, 0xe5, 0xcb, 0x4b, 0xfd, 0x77, 0xc1, 0x81, - 0x1b, 0xbe, 0xee, 0xff, 0xcb, 0xbd, 0x14, 0x79, 0x35, 0x37, 0xbf, 0xbb, 0xbd, 0x33, 0x2c, 0xc8, - 0xc8, 0x3b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x22, 0xa1, 0xda, 0x9f, 0x7d, 0x0d, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/functions/v1beta2/operations.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/functions/v1beta2/operations.pb.go deleted file mode 100644 index dee76e0c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/functions/v1beta2/operations.pb.go +++ /dev/null @@ -1,116 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/functions/v1beta2/operations.proto - -package functions - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A type of an operation. -type OperationType int32 - -const ( - // Unknown operation type. - OperationType_OPERATION_UNSPECIFIED OperationType = 0 - // Triggered by CreateFunction call - OperationType_CREATE_FUNCTION OperationType = 1 - // Triggered by UpdateFunction call - OperationType_UPDATE_FUNCTION OperationType = 2 - // Triggered by DeleteFunction call. - OperationType_DELETE_FUNCTION OperationType = 3 -) - -var OperationType_name = map[int32]string{ - 0: "OPERATION_UNSPECIFIED", - 1: "CREATE_FUNCTION", - 2: "UPDATE_FUNCTION", - 3: "DELETE_FUNCTION", -} -var OperationType_value = map[string]int32{ - "OPERATION_UNSPECIFIED": 0, - "CREATE_FUNCTION": 1, - "UPDATE_FUNCTION": 2, - "DELETE_FUNCTION": 3, -} - -func (x OperationType) String() string { - return proto.EnumName(OperationType_name, int32(x)) -} -func (OperationType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Metadata describing an [Operation][google.longrunning.Operation] -type OperationMetadataV1Beta2 struct { - // Target of the operation - for example - // projects/project-1/locations/region-1/functions/function-1 - Target string `protobuf:"bytes,1,opt,name=target" json:"target,omitempty"` - // Type of operation. - Type OperationType `protobuf:"varint,2,opt,name=type,enum=google.cloud.functions.v1beta2.OperationType" json:"type,omitempty"` - // The original request that started the operation. - Request *google_protobuf1.Any `protobuf:"bytes,3,opt,name=request" json:"request,omitempty"` -} - -func (m *OperationMetadataV1Beta2) Reset() { *m = OperationMetadataV1Beta2{} } -func (m *OperationMetadataV1Beta2) String() string { return proto.CompactTextString(m) } -func (*OperationMetadataV1Beta2) ProtoMessage() {} -func (*OperationMetadataV1Beta2) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *OperationMetadataV1Beta2) GetTarget() string { - if m != nil { - return m.Target - } - return "" -} - -func (m *OperationMetadataV1Beta2) GetType() OperationType { - if m != nil { - return m.Type - } - return OperationType_OPERATION_UNSPECIFIED -} - -func (m *OperationMetadataV1Beta2) GetRequest() *google_protobuf1.Any { - if m != nil { - return m.Request - } - return nil -} - -func init() { - proto.RegisterType((*OperationMetadataV1Beta2)(nil), "google.cloud.functions.v1beta2.OperationMetadataV1Beta2") - proto.RegisterEnum("google.cloud.functions.v1beta2.OperationType", OperationType_name, OperationType_value) -} - -func init() { proto.RegisterFile("google/cloud/functions/v1beta2/operations.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 333 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0x4f, 0x4f, 0xf2, 0x30, - 0x1c, 0xc7, 0x9f, 0xc2, 0x13, 0x8c, 0x35, 0x2a, 0x99, 0x7f, 0x32, 0x88, 0x31, 0x84, 0x13, 0x31, - 0xb1, 0x0d, 0x78, 0xf4, 0x34, 0xa0, 0x18, 0x12, 0x85, 0x65, 0x82, 0x07, 0x2f, 0xa4, 0x40, 0x69, - 0x96, 0xcc, 0xb6, 0x6e, 0x9d, 0xc9, 0x5e, 0x82, 0x2f, 0xc4, 0xf7, 0x69, 0x56, 0xba, 0x05, 0x0e, - 0xea, 0xb1, 0x9f, 0xf6, 0xf3, 0xed, 0xf7, 0x97, 0x1f, 0xc4, 0x5c, 0x4a, 0x1e, 0x31, 0xbc, 0x8a, - 0x64, 0xba, 0xc6, 0x9b, 0x54, 0xac, 0x74, 0x28, 0x45, 0x82, 0x3f, 0xba, 0x4b, 0xa6, 0x69, 0x0f, - 0x4b, 0xc5, 0x62, 0x6a, 0x10, 0x52, 0xb1, 0xd4, 0xd2, 0xb9, 0xde, 0x0a, 0xc8, 0x08, 0xa8, 0x14, - 0x90, 0x15, 0x9a, 0x57, 0x36, 0x90, 0xaa, 0x10, 0x53, 0x21, 0xa4, 0xde, 0xb5, 0x9b, 0x0d, 0x7b, - 0x6b, 0x4e, 0xcb, 0x74, 0x83, 0xa9, 0xc8, 0xb6, 0x57, 0xed, 0x2f, 0x00, 0xdd, 0x69, 0xf1, 0xdb, - 0x13, 0xd3, 0x74, 0x4d, 0x35, 0x7d, 0xe9, 0xf6, 0xf3, 0x54, 0xe7, 0x12, 0xd6, 0x34, 0x8d, 0x39, - 0xd3, 0x2e, 0x68, 0x81, 0xce, 0x61, 0x60, 0x4f, 0x8e, 0x07, 0xff, 0xeb, 0x4c, 0x31, 0xb7, 0xd2, - 0x02, 0x9d, 0x93, 0xde, 0x2d, 0xfa, 0xbd, 0x1c, 0x2a, 0xf3, 0x67, 0x99, 0x62, 0x81, 0x51, 0x1d, - 0x04, 0x0f, 0x62, 0xf6, 0x9e, 0xb2, 0x44, 0xbb, 0xd5, 0x16, 0xe8, 0x1c, 0xf5, 0xce, 0x8b, 0x94, - 0xa2, 0x24, 0xf2, 0x44, 0x16, 0x14, 0x8f, 0x6e, 0x42, 0x78, 0xbc, 0x17, 0xe3, 0x34, 0xe0, 0xc5, - 0xd4, 0x27, 0x81, 0x37, 0x1b, 0x4f, 0x27, 0x8b, 0xf9, 0xe4, 0xd9, 0x27, 0x83, 0xf1, 0x68, 0x4c, - 0x86, 0xf5, 0x7f, 0xce, 0x19, 0x3c, 0x1d, 0x04, 0xc4, 0x9b, 0x91, 0xc5, 0x68, 0x3e, 0x19, 0xe4, - 0x0f, 0xea, 0x20, 0x87, 0x73, 0x7f, 0xb8, 0x07, 0x2b, 0x39, 0x1c, 0x92, 0x47, 0xb2, 0x0b, 0xab, - 0xfd, 0x4f, 0x00, 0xdb, 0x2b, 0xf9, 0xf6, 0xc7, 0x54, 0x7d, 0x77, 0x54, 0xa0, 0xb2, 0x58, 0xe2, - 0xe7, 0xdd, 0x7d, 0xf0, 0xfa, 0x60, 0x5d, 0x2e, 0x23, 0x2a, 0x38, 0x92, 0x31, 0xc7, 0x9c, 0x09, - 0x33, 0x99, 0x5d, 0x3d, 0x55, 0x61, 0xf2, 0xd3, 0xfa, 0xef, 0x4b, 0xb2, 0xac, 0x19, 0xe7, 0xee, - 0x3b, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x8a, 0xb1, 0x83, 0x31, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/iot/v1/device_manager.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/iot/v1/device_manager.pb.go deleted file mode 100644 index 6fc71169..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/iot/v1/device_manager.pb.go +++ /dev/null @@ -1,1327 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/iot/v1/device_manager.proto - -/* -Package iot is a generated protocol buffer package. - -It is generated from these files: - google/cloud/iot/v1/device_manager.proto - google/cloud/iot/v1/resources.proto - -It has these top-level messages: - CreateDeviceRegistryRequest - GetDeviceRegistryRequest - DeleteDeviceRegistryRequest - UpdateDeviceRegistryRequest - ListDeviceRegistriesRequest - ListDeviceRegistriesResponse - CreateDeviceRequest - GetDeviceRequest - UpdateDeviceRequest - DeleteDeviceRequest - ListDevicesRequest - ListDevicesResponse - ModifyCloudToDeviceConfigRequest - ListDeviceConfigVersionsRequest - ListDeviceConfigVersionsResponse - ListDeviceStatesRequest - ListDeviceStatesResponse - Device - DeviceRegistry - MqttConfig - HttpConfig - EventNotificationConfig - StateNotificationConfig - RegistryCredential - X509CertificateDetails - PublicKeyCertificate - DeviceCredential - PublicKeyCredential - DeviceConfig - DeviceState -*/ -package iot - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_protobuf3 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf4 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Request for `CreateDeviceRegistry`. -type CreateDeviceRegistryRequest struct { - // The project and cloud region where this device registry must be created. - // For example, `projects/example-project/locations/us-central1`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The device registry. The field `name` must be empty. The server will - // generate that field from the device registry `id` provided and the - // `parent` field. - DeviceRegistry *DeviceRegistry `protobuf:"bytes,2,opt,name=device_registry,json=deviceRegistry" json:"device_registry,omitempty"` -} - -func (m *CreateDeviceRegistryRequest) Reset() { *m = CreateDeviceRegistryRequest{} } -func (m *CreateDeviceRegistryRequest) String() string { return proto.CompactTextString(m) } -func (*CreateDeviceRegistryRequest) ProtoMessage() {} -func (*CreateDeviceRegistryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *CreateDeviceRegistryRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateDeviceRegistryRequest) GetDeviceRegistry() *DeviceRegistry { - if m != nil { - return m.DeviceRegistry - } - return nil -} - -// Request for `GetDeviceRegistry`. -type GetDeviceRegistryRequest struct { - // The name of the device registry. For example, - // `projects/example-project/locations/us-central1/registries/my-registry`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetDeviceRegistryRequest) Reset() { *m = GetDeviceRegistryRequest{} } -func (m *GetDeviceRegistryRequest) String() string { return proto.CompactTextString(m) } -func (*GetDeviceRegistryRequest) ProtoMessage() {} -func (*GetDeviceRegistryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *GetDeviceRegistryRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for `DeleteDeviceRegistry`. -type DeleteDeviceRegistryRequest struct { - // The name of the device registry. For example, - // `projects/example-project/locations/us-central1/registries/my-registry`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteDeviceRegistryRequest) Reset() { *m = DeleteDeviceRegistryRequest{} } -func (m *DeleteDeviceRegistryRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteDeviceRegistryRequest) ProtoMessage() {} -func (*DeleteDeviceRegistryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *DeleteDeviceRegistryRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for `UpdateDeviceRegistry`. -type UpdateDeviceRegistryRequest struct { - // The new values for the device registry. The `id` field must be empty, and - // the `name` field must indicate the path of the resource. For example, - // `projects/example-project/locations/us-central1/registries/my-registry`. - DeviceRegistry *DeviceRegistry `protobuf:"bytes,1,opt,name=device_registry,json=deviceRegistry" json:"device_registry,omitempty"` - // Only updates the `device_registry` fields indicated by this mask. - // The field mask must not be empty, and it must not contain fields that - // are immutable or only set by the server. - // Mutable top-level fields: `event_notification_config`, `http_config`, - // `mqtt_config`, and `state_notification_config`. - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateDeviceRegistryRequest) Reset() { *m = UpdateDeviceRegistryRequest{} } -func (m *UpdateDeviceRegistryRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateDeviceRegistryRequest) ProtoMessage() {} -func (*UpdateDeviceRegistryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *UpdateDeviceRegistryRequest) GetDeviceRegistry() *DeviceRegistry { - if m != nil { - return m.DeviceRegistry - } - return nil -} - -func (m *UpdateDeviceRegistryRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request for `ListDeviceRegistries`. -type ListDeviceRegistriesRequest struct { - // The project and cloud region path. For example, - // `projects/example-project/locations/us-central1`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The maximum number of registries to return in the response. If this value - // is zero, the service will select a default size. A call may return fewer - // objects than requested, but if there is a non-empty `page_token`, it - // indicates that more entries are available. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last `ListDeviceRegistriesResponse`; indicates - // that this is a continuation of a prior `ListDeviceRegistries` call, and - // that the system should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListDeviceRegistriesRequest) Reset() { *m = ListDeviceRegistriesRequest{} } -func (m *ListDeviceRegistriesRequest) String() string { return proto.CompactTextString(m) } -func (*ListDeviceRegistriesRequest) ProtoMessage() {} -func (*ListDeviceRegistriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListDeviceRegistriesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListDeviceRegistriesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListDeviceRegistriesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for `ListDeviceRegistries`. -type ListDeviceRegistriesResponse struct { - // The registries that matched the query. - DeviceRegistries []*DeviceRegistry `protobuf:"bytes,1,rep,name=device_registries,json=deviceRegistries" json:"device_registries,omitempty"` - // If not empty, indicates that there may be more registries that match the - // request; this value should be passed in a new - // `ListDeviceRegistriesRequest`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListDeviceRegistriesResponse) Reset() { *m = ListDeviceRegistriesResponse{} } -func (m *ListDeviceRegistriesResponse) String() string { return proto.CompactTextString(m) } -func (*ListDeviceRegistriesResponse) ProtoMessage() {} -func (*ListDeviceRegistriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ListDeviceRegistriesResponse) GetDeviceRegistries() []*DeviceRegistry { - if m != nil { - return m.DeviceRegistries - } - return nil -} - -func (m *ListDeviceRegistriesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for `CreateDevice`. -type CreateDeviceRequest struct { - // The name of the device registry where this device should be created. - // For example, - // `projects/example-project/locations/us-central1/registries/my-registry`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The device registration details. - Device *Device `protobuf:"bytes,2,opt,name=device" json:"device,omitempty"` -} - -func (m *CreateDeviceRequest) Reset() { *m = CreateDeviceRequest{} } -func (m *CreateDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*CreateDeviceRequest) ProtoMessage() {} -func (*CreateDeviceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *CreateDeviceRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateDeviceRequest) GetDevice() *Device { - if m != nil { - return m.Device - } - return nil -} - -// Request for `GetDevice`. -type GetDeviceRequest struct { - // The name of the device. For example, - // `projects/p0/locations/us-central1/registries/registry0/devices/device0` or - // `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The fields of the `Device` resource to be returned in the response. If the - // field mask is unset or empty, all fields are returned. - FieldMask *google_protobuf4.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask" json:"field_mask,omitempty"` -} - -func (m *GetDeviceRequest) Reset() { *m = GetDeviceRequest{} } -func (m *GetDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*GetDeviceRequest) ProtoMessage() {} -func (*GetDeviceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *GetDeviceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GetDeviceRequest) GetFieldMask() *google_protobuf4.FieldMask { - if m != nil { - return m.FieldMask - } - return nil -} - -// Request for `UpdateDevice`. -type UpdateDeviceRequest struct { - // The new values for the device registry. The `id` and `num_id` fields must - // be empty, and the field `name` must specify the name path. For example, - // `projects/p0/locations/us-central1/registries/registry0/devices/device0`or - // `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. - Device *Device `protobuf:"bytes,2,opt,name=device" json:"device,omitempty"` - // Only updates the `device` fields indicated by this mask. - // The field mask must not be empty, and it must not contain fields that - // are immutable or only set by the server. - // Mutable top-level fields: `credentials`, `enabled_state`, and `metadata` - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateDeviceRequest) Reset() { *m = UpdateDeviceRequest{} } -func (m *UpdateDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateDeviceRequest) ProtoMessage() {} -func (*UpdateDeviceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *UpdateDeviceRequest) GetDevice() *Device { - if m != nil { - return m.Device - } - return nil -} - -func (m *UpdateDeviceRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request for `DeleteDevice`. -type DeleteDeviceRequest struct { - // The name of the device. For example, - // `projects/p0/locations/us-central1/registries/registry0/devices/device0` or - // `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteDeviceRequest) Reset() { *m = DeleteDeviceRequest{} } -func (m *DeleteDeviceRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteDeviceRequest) ProtoMessage() {} -func (*DeleteDeviceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *DeleteDeviceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for `ListDevices`. -type ListDevicesRequest struct { - // The device registry path. Required. For example, - // `projects/my-project/locations/us-central1/registries/my-registry`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // A list of device numerical ids. If empty, it will ignore this field. This - // field cannot hold more than 10,000 entries. - DeviceNumIds []uint64 `protobuf:"varint,2,rep,packed,name=device_num_ids,json=deviceNumIds" json:"device_num_ids,omitempty"` - // A list of device string identifiers. If empty, it will ignore this field. - // For example, `['device0', 'device12']`. This field cannot hold more than - // 10,000 entries. - DeviceIds []string `protobuf:"bytes,3,rep,name=device_ids,json=deviceIds" json:"device_ids,omitempty"` - // The fields of the `Device` resource to be returned in the response. The - // fields `id`, and `num_id` are always returned by default, along with any - // other fields specified. - FieldMask *google_protobuf4.FieldMask `protobuf:"bytes,4,opt,name=field_mask,json=fieldMask" json:"field_mask,omitempty"` - // The maximum number of devices to return in the response. If this value - // is zero, the service will select a default size. A call may return fewer - // objects than requested, but if there is a non-empty `page_token`, it - // indicates that more entries are available. - PageSize int32 `protobuf:"varint,100,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last `ListDevicesResponse`; indicates - // that this is a continuation of a prior `ListDevices` call, and - // that the system should return the next page of data. - PageToken string `protobuf:"bytes,101,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListDevicesRequest) Reset() { *m = ListDevicesRequest{} } -func (m *ListDevicesRequest) String() string { return proto.CompactTextString(m) } -func (*ListDevicesRequest) ProtoMessage() {} -func (*ListDevicesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *ListDevicesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListDevicesRequest) GetDeviceNumIds() []uint64 { - if m != nil { - return m.DeviceNumIds - } - return nil -} - -func (m *ListDevicesRequest) GetDeviceIds() []string { - if m != nil { - return m.DeviceIds - } - return nil -} - -func (m *ListDevicesRequest) GetFieldMask() *google_protobuf4.FieldMask { - if m != nil { - return m.FieldMask - } - return nil -} - -func (m *ListDevicesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListDevicesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for `ListDevices`. -type ListDevicesResponse struct { - // The devices that match the request. - Devices []*Device `protobuf:"bytes,1,rep,name=devices" json:"devices,omitempty"` - // If not empty, indicates that there may be more devices that match the - // request; this value should be passed in a new `ListDevicesRequest`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListDevicesResponse) Reset() { *m = ListDevicesResponse{} } -func (m *ListDevicesResponse) String() string { return proto.CompactTextString(m) } -func (*ListDevicesResponse) ProtoMessage() {} -func (*ListDevicesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ListDevicesResponse) GetDevices() []*Device { - if m != nil { - return m.Devices - } - return nil -} - -func (m *ListDevicesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for `ModifyCloudToDeviceConfig`. -type ModifyCloudToDeviceConfigRequest struct { - // The name of the device. For example, - // `projects/p0/locations/us-central1/registries/registry0/devices/device0` or - // `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The version number to update. If this value is zero, it will not check the - // version number of the server and will always update the current version; - // otherwise, this update will fail if the version number found on the server - // does not match this version number. This is used to support multiple - // simultaneous updates without losing data. - VersionToUpdate int64 `protobuf:"varint,2,opt,name=version_to_update,json=versionToUpdate" json:"version_to_update,omitempty"` - // The configuration data for the device. - BinaryData []byte `protobuf:"bytes,3,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"` -} - -func (m *ModifyCloudToDeviceConfigRequest) Reset() { *m = ModifyCloudToDeviceConfigRequest{} } -func (m *ModifyCloudToDeviceConfigRequest) String() string { return proto.CompactTextString(m) } -func (*ModifyCloudToDeviceConfigRequest) ProtoMessage() {} -func (*ModifyCloudToDeviceConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{12} -} - -func (m *ModifyCloudToDeviceConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ModifyCloudToDeviceConfigRequest) GetVersionToUpdate() int64 { - if m != nil { - return m.VersionToUpdate - } - return 0 -} - -func (m *ModifyCloudToDeviceConfigRequest) GetBinaryData() []byte { - if m != nil { - return m.BinaryData - } - return nil -} - -// Request for `ListDeviceConfigVersions`. -type ListDeviceConfigVersionsRequest struct { - // The name of the device. For example, - // `projects/p0/locations/us-central1/registries/registry0/devices/device0` or - // `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The number of versions to list. Versions are listed in decreasing order of - // the version number. The maximum number of versions retained is 10. If this - // value is zero, it will return all the versions available. - NumVersions int32 `protobuf:"varint,2,opt,name=num_versions,json=numVersions" json:"num_versions,omitempty"` -} - -func (m *ListDeviceConfigVersionsRequest) Reset() { *m = ListDeviceConfigVersionsRequest{} } -func (m *ListDeviceConfigVersionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListDeviceConfigVersionsRequest) ProtoMessage() {} -func (*ListDeviceConfigVersionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{13} -} - -func (m *ListDeviceConfigVersionsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListDeviceConfigVersionsRequest) GetNumVersions() int32 { - if m != nil { - return m.NumVersions - } - return 0 -} - -// Response for `ListDeviceConfigVersions`. -type ListDeviceConfigVersionsResponse struct { - // The device configuration for the last few versions. Versions are listed - // in decreasing order, starting from the most recent one. - DeviceConfigs []*DeviceConfig `protobuf:"bytes,1,rep,name=device_configs,json=deviceConfigs" json:"device_configs,omitempty"` -} - -func (m *ListDeviceConfigVersionsResponse) Reset() { *m = ListDeviceConfigVersionsResponse{} } -func (m *ListDeviceConfigVersionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListDeviceConfigVersionsResponse) ProtoMessage() {} -func (*ListDeviceConfigVersionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{14} -} - -func (m *ListDeviceConfigVersionsResponse) GetDeviceConfigs() []*DeviceConfig { - if m != nil { - return m.DeviceConfigs - } - return nil -} - -// Request for `ListDeviceStates`. -type ListDeviceStatesRequest struct { - // The name of the device. For example, - // `projects/p0/locations/us-central1/registries/registry0/devices/device0` or - // `projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The number of states to list. States are listed in descending order of - // update time. The maximum number of states retained is 10. If this - // value is zero, it will return all the states available. - NumStates int32 `protobuf:"varint,2,opt,name=num_states,json=numStates" json:"num_states,omitempty"` -} - -func (m *ListDeviceStatesRequest) Reset() { *m = ListDeviceStatesRequest{} } -func (m *ListDeviceStatesRequest) String() string { return proto.CompactTextString(m) } -func (*ListDeviceStatesRequest) ProtoMessage() {} -func (*ListDeviceStatesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *ListDeviceStatesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListDeviceStatesRequest) GetNumStates() int32 { - if m != nil { - return m.NumStates - } - return 0 -} - -// Response for `ListDeviceStates`. -type ListDeviceStatesResponse struct { - // The last few device states. States are listed in descending order of server - // update time, starting from the most recent one. - DeviceStates []*DeviceState `protobuf:"bytes,1,rep,name=device_states,json=deviceStates" json:"device_states,omitempty"` -} - -func (m *ListDeviceStatesResponse) Reset() { *m = ListDeviceStatesResponse{} } -func (m *ListDeviceStatesResponse) String() string { return proto.CompactTextString(m) } -func (*ListDeviceStatesResponse) ProtoMessage() {} -func (*ListDeviceStatesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *ListDeviceStatesResponse) GetDeviceStates() []*DeviceState { - if m != nil { - return m.DeviceStates - } - return nil -} - -func init() { - proto.RegisterType((*CreateDeviceRegistryRequest)(nil), "google.cloud.iot.v1.CreateDeviceRegistryRequest") - proto.RegisterType((*GetDeviceRegistryRequest)(nil), "google.cloud.iot.v1.GetDeviceRegistryRequest") - proto.RegisterType((*DeleteDeviceRegistryRequest)(nil), "google.cloud.iot.v1.DeleteDeviceRegistryRequest") - proto.RegisterType((*UpdateDeviceRegistryRequest)(nil), "google.cloud.iot.v1.UpdateDeviceRegistryRequest") - proto.RegisterType((*ListDeviceRegistriesRequest)(nil), "google.cloud.iot.v1.ListDeviceRegistriesRequest") - proto.RegisterType((*ListDeviceRegistriesResponse)(nil), "google.cloud.iot.v1.ListDeviceRegistriesResponse") - proto.RegisterType((*CreateDeviceRequest)(nil), "google.cloud.iot.v1.CreateDeviceRequest") - proto.RegisterType((*GetDeviceRequest)(nil), "google.cloud.iot.v1.GetDeviceRequest") - proto.RegisterType((*UpdateDeviceRequest)(nil), "google.cloud.iot.v1.UpdateDeviceRequest") - proto.RegisterType((*DeleteDeviceRequest)(nil), "google.cloud.iot.v1.DeleteDeviceRequest") - proto.RegisterType((*ListDevicesRequest)(nil), "google.cloud.iot.v1.ListDevicesRequest") - proto.RegisterType((*ListDevicesResponse)(nil), "google.cloud.iot.v1.ListDevicesResponse") - proto.RegisterType((*ModifyCloudToDeviceConfigRequest)(nil), "google.cloud.iot.v1.ModifyCloudToDeviceConfigRequest") - proto.RegisterType((*ListDeviceConfigVersionsRequest)(nil), "google.cloud.iot.v1.ListDeviceConfigVersionsRequest") - proto.RegisterType((*ListDeviceConfigVersionsResponse)(nil), "google.cloud.iot.v1.ListDeviceConfigVersionsResponse") - proto.RegisterType((*ListDeviceStatesRequest)(nil), "google.cloud.iot.v1.ListDeviceStatesRequest") - proto.RegisterType((*ListDeviceStatesResponse)(nil), "google.cloud.iot.v1.ListDeviceStatesResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for DeviceManager service - -type DeviceManagerClient interface { - // Creates a device registry that contains devices. - CreateDeviceRegistry(ctx context.Context, in *CreateDeviceRegistryRequest, opts ...grpc.CallOption) (*DeviceRegistry, error) - // Gets a device registry configuration. - GetDeviceRegistry(ctx context.Context, in *GetDeviceRegistryRequest, opts ...grpc.CallOption) (*DeviceRegistry, error) - // Updates a device registry configuration. - UpdateDeviceRegistry(ctx context.Context, in *UpdateDeviceRegistryRequest, opts ...grpc.CallOption) (*DeviceRegistry, error) - // Deletes a device registry configuration. - DeleteDeviceRegistry(ctx context.Context, in *DeleteDeviceRegistryRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Lists device registries. - ListDeviceRegistries(ctx context.Context, in *ListDeviceRegistriesRequest, opts ...grpc.CallOption) (*ListDeviceRegistriesResponse, error) - // Creates a device in a device registry. - CreateDevice(ctx context.Context, in *CreateDeviceRequest, opts ...grpc.CallOption) (*Device, error) - // Gets details about a device. - GetDevice(ctx context.Context, in *GetDeviceRequest, opts ...grpc.CallOption) (*Device, error) - // Updates a device. - UpdateDevice(ctx context.Context, in *UpdateDeviceRequest, opts ...grpc.CallOption) (*Device, error) - // Deletes a device. - DeleteDevice(ctx context.Context, in *DeleteDeviceRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // List devices in a device registry. - ListDevices(ctx context.Context, in *ListDevicesRequest, opts ...grpc.CallOption) (*ListDevicesResponse, error) - // Modifies the configuration for the device, which is eventually sent from - // the Cloud IoT Core servers. Returns the modified configuration version and - // its metadata. - ModifyCloudToDeviceConfig(ctx context.Context, in *ModifyCloudToDeviceConfigRequest, opts ...grpc.CallOption) (*DeviceConfig, error) - // Lists the last few versions of the device configuration in descending - // order (i.e.: newest first). - ListDeviceConfigVersions(ctx context.Context, in *ListDeviceConfigVersionsRequest, opts ...grpc.CallOption) (*ListDeviceConfigVersionsResponse, error) - // Lists the last few versions of the device state in descending order (i.e.: - // newest first). - ListDeviceStates(ctx context.Context, in *ListDeviceStatesRequest, opts ...grpc.CallOption) (*ListDeviceStatesResponse, error) - // Sets the access control policy on the specified resource. Replaces any - // existing policy. - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Gets the access control policy for a resource. - // Returns an empty policy if the resource exists and does not have a policy - // set. - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Returns permissions that a caller has on the specified resource. - // If the resource does not exist, this will return an empty set of - // permissions, not a NOT_FOUND error. - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -type deviceManagerClient struct { - cc *grpc.ClientConn -} - -func NewDeviceManagerClient(cc *grpc.ClientConn) DeviceManagerClient { - return &deviceManagerClient{cc} -} - -func (c *deviceManagerClient) CreateDeviceRegistry(ctx context.Context, in *CreateDeviceRegistryRequest, opts ...grpc.CallOption) (*DeviceRegistry, error) { - out := new(DeviceRegistry) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/CreateDeviceRegistry", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) GetDeviceRegistry(ctx context.Context, in *GetDeviceRegistryRequest, opts ...grpc.CallOption) (*DeviceRegistry, error) { - out := new(DeviceRegistry) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/GetDeviceRegistry", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) UpdateDeviceRegistry(ctx context.Context, in *UpdateDeviceRegistryRequest, opts ...grpc.CallOption) (*DeviceRegistry, error) { - out := new(DeviceRegistry) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/UpdateDeviceRegistry", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) DeleteDeviceRegistry(ctx context.Context, in *DeleteDeviceRegistryRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/DeleteDeviceRegistry", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) ListDeviceRegistries(ctx context.Context, in *ListDeviceRegistriesRequest, opts ...grpc.CallOption) (*ListDeviceRegistriesResponse, error) { - out := new(ListDeviceRegistriesResponse) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/ListDeviceRegistries", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) CreateDevice(ctx context.Context, in *CreateDeviceRequest, opts ...grpc.CallOption) (*Device, error) { - out := new(Device) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/CreateDevice", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) GetDevice(ctx context.Context, in *GetDeviceRequest, opts ...grpc.CallOption) (*Device, error) { - out := new(Device) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/GetDevice", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) UpdateDevice(ctx context.Context, in *UpdateDeviceRequest, opts ...grpc.CallOption) (*Device, error) { - out := new(Device) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/UpdateDevice", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) DeleteDevice(ctx context.Context, in *DeleteDeviceRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/DeleteDevice", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) ListDevices(ctx context.Context, in *ListDevicesRequest, opts ...grpc.CallOption) (*ListDevicesResponse, error) { - out := new(ListDevicesResponse) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/ListDevices", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) ModifyCloudToDeviceConfig(ctx context.Context, in *ModifyCloudToDeviceConfigRequest, opts ...grpc.CallOption) (*DeviceConfig, error) { - out := new(DeviceConfig) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/ModifyCloudToDeviceConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) ListDeviceConfigVersions(ctx context.Context, in *ListDeviceConfigVersionsRequest, opts ...grpc.CallOption) (*ListDeviceConfigVersionsResponse, error) { - out := new(ListDeviceConfigVersionsResponse) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/ListDeviceConfigVersions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) ListDeviceStates(ctx context.Context, in *ListDeviceStatesRequest, opts ...grpc.CallOption) (*ListDeviceStatesResponse, error) { - out := new(ListDeviceStatesResponse) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/ListDeviceStates", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *deviceManagerClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.cloud.iot.v1.DeviceManager/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for DeviceManager service - -type DeviceManagerServer interface { - // Creates a device registry that contains devices. - CreateDeviceRegistry(context.Context, *CreateDeviceRegistryRequest) (*DeviceRegistry, error) - // Gets a device registry configuration. - GetDeviceRegistry(context.Context, *GetDeviceRegistryRequest) (*DeviceRegistry, error) - // Updates a device registry configuration. - UpdateDeviceRegistry(context.Context, *UpdateDeviceRegistryRequest) (*DeviceRegistry, error) - // Deletes a device registry configuration. - DeleteDeviceRegistry(context.Context, *DeleteDeviceRegistryRequest) (*google_protobuf3.Empty, error) - // Lists device registries. - ListDeviceRegistries(context.Context, *ListDeviceRegistriesRequest) (*ListDeviceRegistriesResponse, error) - // Creates a device in a device registry. - CreateDevice(context.Context, *CreateDeviceRequest) (*Device, error) - // Gets details about a device. - GetDevice(context.Context, *GetDeviceRequest) (*Device, error) - // Updates a device. - UpdateDevice(context.Context, *UpdateDeviceRequest) (*Device, error) - // Deletes a device. - DeleteDevice(context.Context, *DeleteDeviceRequest) (*google_protobuf3.Empty, error) - // List devices in a device registry. - ListDevices(context.Context, *ListDevicesRequest) (*ListDevicesResponse, error) - // Modifies the configuration for the device, which is eventually sent from - // the Cloud IoT Core servers. Returns the modified configuration version and - // its metadata. - ModifyCloudToDeviceConfig(context.Context, *ModifyCloudToDeviceConfigRequest) (*DeviceConfig, error) - // Lists the last few versions of the device configuration in descending - // order (i.e.: newest first). - ListDeviceConfigVersions(context.Context, *ListDeviceConfigVersionsRequest) (*ListDeviceConfigVersionsResponse, error) - // Lists the last few versions of the device state in descending order (i.e.: - // newest first). - ListDeviceStates(context.Context, *ListDeviceStatesRequest) (*ListDeviceStatesResponse, error) - // Sets the access control policy on the specified resource. Replaces any - // existing policy. - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Gets the access control policy for a resource. - // Returns an empty policy if the resource exists and does not have a policy - // set. - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Returns permissions that a caller has on the specified resource. - // If the resource does not exist, this will return an empty set of - // permissions, not a NOT_FOUND error. - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -func RegisterDeviceManagerServer(s *grpc.Server, srv DeviceManagerServer) { - s.RegisterService(&_DeviceManager_serviceDesc, srv) -} - -func _DeviceManager_CreateDeviceRegistry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateDeviceRegistryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).CreateDeviceRegistry(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/CreateDeviceRegistry", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).CreateDeviceRegistry(ctx, req.(*CreateDeviceRegistryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_GetDeviceRegistry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDeviceRegistryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).GetDeviceRegistry(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/GetDeviceRegistry", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).GetDeviceRegistry(ctx, req.(*GetDeviceRegistryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_UpdateDeviceRegistry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateDeviceRegistryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).UpdateDeviceRegistry(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/UpdateDeviceRegistry", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).UpdateDeviceRegistry(ctx, req.(*UpdateDeviceRegistryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_DeleteDeviceRegistry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteDeviceRegistryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).DeleteDeviceRegistry(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/DeleteDeviceRegistry", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).DeleteDeviceRegistry(ctx, req.(*DeleteDeviceRegistryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_ListDeviceRegistries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDeviceRegistriesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).ListDeviceRegistries(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/ListDeviceRegistries", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).ListDeviceRegistries(ctx, req.(*ListDeviceRegistriesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_CreateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).CreateDevice(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/CreateDevice", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).CreateDevice(ctx, req.(*CreateDeviceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).GetDevice(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/GetDevice", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).GetDevice(ctx, req.(*GetDeviceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).UpdateDevice(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/UpdateDevice", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).UpdateDevice(ctx, req.(*UpdateDeviceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteDeviceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).DeleteDevice(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/DeleteDevice", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).DeleteDevice(ctx, req.(*DeleteDeviceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_ListDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDevicesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).ListDevices(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/ListDevices", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).ListDevices(ctx, req.(*ListDevicesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_ModifyCloudToDeviceConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyCloudToDeviceConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).ModifyCloudToDeviceConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/ModifyCloudToDeviceConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).ModifyCloudToDeviceConfig(ctx, req.(*ModifyCloudToDeviceConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_ListDeviceConfigVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDeviceConfigVersionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).ListDeviceConfigVersions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/ListDeviceConfigVersions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).ListDeviceConfigVersions(ctx, req.(*ListDeviceConfigVersionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_ListDeviceStates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDeviceStatesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).ListDeviceStates(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/ListDeviceStates", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).ListDeviceStates(ctx, req.(*ListDeviceStatesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DeviceManager_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DeviceManagerServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.iot.v1.DeviceManager/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DeviceManagerServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _DeviceManager_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.iot.v1.DeviceManager", - HandlerType: (*DeviceManagerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateDeviceRegistry", - Handler: _DeviceManager_CreateDeviceRegistry_Handler, - }, - { - MethodName: "GetDeviceRegistry", - Handler: _DeviceManager_GetDeviceRegistry_Handler, - }, - { - MethodName: "UpdateDeviceRegistry", - Handler: _DeviceManager_UpdateDeviceRegistry_Handler, - }, - { - MethodName: "DeleteDeviceRegistry", - Handler: _DeviceManager_DeleteDeviceRegistry_Handler, - }, - { - MethodName: "ListDeviceRegistries", - Handler: _DeviceManager_ListDeviceRegistries_Handler, - }, - { - MethodName: "CreateDevice", - Handler: _DeviceManager_CreateDevice_Handler, - }, - { - MethodName: "GetDevice", - Handler: _DeviceManager_GetDevice_Handler, - }, - { - MethodName: "UpdateDevice", - Handler: _DeviceManager_UpdateDevice_Handler, - }, - { - MethodName: "DeleteDevice", - Handler: _DeviceManager_DeleteDevice_Handler, - }, - { - MethodName: "ListDevices", - Handler: _DeviceManager_ListDevices_Handler, - }, - { - MethodName: "ModifyCloudToDeviceConfig", - Handler: _DeviceManager_ModifyCloudToDeviceConfig_Handler, - }, - { - MethodName: "ListDeviceConfigVersions", - Handler: _DeviceManager_ListDeviceConfigVersions_Handler, - }, - { - MethodName: "ListDeviceStates", - Handler: _DeviceManager_ListDeviceStates_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _DeviceManager_SetIamPolicy_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _DeviceManager_GetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _DeviceManager_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/iot/v1/device_manager.proto", -} - -func init() { proto.RegisterFile("google/cloud/iot/v1/device_manager.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1307 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x98, 0xcf, 0x8f, 0xdb, 0x44, - 0x14, 0xc7, 0x35, 0x9b, 0x52, 0xd8, 0xb7, 0x29, 0x6d, 0x67, 0xb7, 0x6d, 0x48, 0x5a, 0x9a, 0xba, - 0xfc, 0x48, 0x23, 0x6a, 0x77, 0xb7, 0xb4, 0x2a, 0xa9, 0xa0, 0xd0, 0x6e, 0xd9, 0xb6, 0x6a, 0x21, - 0x64, 0x17, 0x8a, 0x90, 0x50, 0x34, 0x1b, 0xcf, 0x46, 0xd3, 0x8d, 0x3d, 0xa9, 0xc7, 0x59, 0xb1, - 0x45, 0xbd, 0xd0, 0x03, 0x67, 0x40, 0x48, 0xbd, 0x21, 0x71, 0x40, 0xdc, 0x91, 0x10, 0x12, 0x77, - 0xfe, 0x01, 0x38, 0xf0, 0x07, 0x70, 0xe0, 0x4f, 0xe8, 0x11, 0x79, 0x66, 0xbc, 0x6b, 0x3b, 0xb6, - 0xe3, 0xe4, 0xc0, 0x2d, 0x9e, 0xf7, 0x66, 0xe6, 0x33, 0xdf, 0xf7, 0x9e, 0xe7, 0xc5, 0xd0, 0xe8, - 0x73, 0xde, 0x1f, 0x50, 0xab, 0x37, 0xe0, 0x23, 0xdb, 0x62, 0xdc, 0xb7, 0x76, 0x96, 0x2d, 0x9b, - 0xee, 0xb0, 0x1e, 0xed, 0x3a, 0xc4, 0x25, 0x7d, 0xea, 0x99, 0x43, 0x8f, 0xfb, 0x1c, 0x2f, 0x2a, - 0x4f, 0x53, 0x7a, 0x9a, 0x8c, 0xfb, 0xe6, 0xce, 0x72, 0xf5, 0xa4, 0x9e, 0x4e, 0x86, 0xcc, 0x22, - 0xae, 0xcb, 0x7d, 0xe2, 0x33, 0xee, 0x0a, 0x35, 0xa5, 0x7a, 0x36, 0x6d, 0x71, 0x8f, 0x0a, 0x3e, - 0xf2, 0x7a, 0x34, 0x74, 0x7a, 0x59, 0x3b, 0x31, 0xe2, 0x04, 0x66, 0x46, 0x9c, 0xee, 0x90, 0x0f, - 0x58, 0x6f, 0x57, 0xdb, 0xab, 0x71, 0x7b, 0xcc, 0x56, 0xd3, 0x36, 0xf9, 0xb4, 0x39, 0xda, 0xb2, - 0xa8, 0x33, 0xf4, 0x43, 0x63, 0x3d, 0x69, 0xdc, 0x62, 0x74, 0x60, 0x77, 0x1d, 0x22, 0xb6, 0x95, - 0x87, 0xf1, 0x04, 0x41, 0xed, 0x86, 0x47, 0x89, 0x4f, 0x57, 0xe5, 0x89, 0x3b, 0xb4, 0xcf, 0x84, - 0xef, 0xed, 0x76, 0xe8, 0xc3, 0x11, 0x15, 0x3e, 0x3e, 0x0e, 0x07, 0x87, 0xc4, 0xa3, 0xae, 0x5f, - 0x41, 0x75, 0xd4, 0x98, 0xef, 0xe8, 0x27, 0x7c, 0x17, 0x0e, 0x6b, 0x89, 0x3c, 0x3d, 0xa3, 0x32, - 0x57, 0x47, 0x8d, 0x85, 0x95, 0xb3, 0x66, 0x8a, 0x48, 0x66, 0x62, 0xf1, 0x17, 0xed, 0xd8, 0xb3, - 0x61, 0x42, 0x65, 0x8d, 0xfa, 0xe9, 0x04, 0x18, 0x0e, 0xb8, 0xc4, 0xa1, 0x7a, 0x7f, 0xf9, 0xdb, - 0x58, 0x86, 0xda, 0x2a, 0x1d, 0xd0, 0x2c, 0xe8, 0xb4, 0x29, 0x3f, 0x23, 0xa8, 0x7d, 0x3c, 0xb4, - 0x33, 0x0f, 0x9a, 0x72, 0x20, 0x34, 0xf3, 0x81, 0xf0, 0x55, 0x58, 0x18, 0xc9, 0xcd, 0xa4, 0xd6, - 0x5a, 0x9a, 0x6a, 0xb8, 0x52, 0x18, 0x0e, 0xf3, 0xfd, 0x20, 0x1c, 0xf7, 0x88, 0xd8, 0xee, 0x80, - 0x72, 0x0f, 0x7e, 0x1b, 0x0f, 0xa1, 0x76, 0x97, 0x89, 0xb8, 0x1c, 0x8c, 0x8a, 0x49, 0x21, 0xa9, - 0xc1, 0xfc, 0x90, 0xf4, 0x69, 0x57, 0xb0, 0x47, 0x54, 0xee, 0xf8, 0x5c, 0xe7, 0x85, 0x60, 0x60, - 0x9d, 0x3d, 0xa2, 0xf8, 0x14, 0x80, 0x34, 0xfa, 0x7c, 0x9b, 0xba, 0x95, 0x92, 0x9c, 0x28, 0xdd, - 0x37, 0x82, 0x01, 0xe3, 0x29, 0x82, 0x93, 0xe9, 0x7b, 0x8a, 0x21, 0x77, 0x05, 0xc5, 0x6d, 0x38, - 0x1a, 0x97, 0x87, 0x51, 0x51, 0x41, 0xf5, 0x52, 0x51, 0x81, 0x8e, 0xd8, 0x89, 0x95, 0xf1, 0x6b, - 0x70, 0xd8, 0xa5, 0x5f, 0xf8, 0xdd, 0x08, 0xd6, 0x9c, 0xc4, 0x3a, 0x14, 0x0c, 0xb7, 0xf7, 0xd0, - 0x36, 0x61, 0x31, 0x9e, 0xa0, 0xf9, 0x2a, 0x5c, 0x84, 0x83, 0x6a, 0x2b, 0x2d, 0x7a, 0x2d, 0x8f, - 0x4e, 0xbb, 0x1a, 0x04, 0x8e, 0x44, 0xf2, 0x2f, 0x33, 0x89, 0xf0, 0x5b, 0x00, 0xfb, 0x15, 0x54, - 0x20, 0xaa, 0xf3, 0x5b, 0xe1, 0x4f, 0xe3, 0x6b, 0x04, 0x8b, 0xf1, 0xfc, 0x53, 0xdb, 0xcc, 0xc2, - 0x9b, 0x4c, 0xaf, 0xd2, 0x54, 0xe9, 0x75, 0x0e, 0x16, 0xe3, 0xc5, 0x93, 0x5d, 0x34, 0xff, 0x22, - 0xc0, 0xfb, 0x69, 0x31, 0x31, 0x03, 0x5f, 0x01, 0x5d, 0x07, 0x5d, 0x77, 0xe4, 0x74, 0x99, 0x2d, - 0x2a, 0x73, 0xf5, 0x52, 0xe3, 0x40, 0xa7, 0xac, 0x46, 0x3f, 0x18, 0x39, 0xb7, 0x6d, 0x11, 0xa4, - 0xa2, 0xf6, 0x0a, 0x3c, 0x4a, 0xf5, 0x52, 0x90, 0x8a, 0x6a, 0x24, 0x30, 0xc7, 0x35, 0x3e, 0x30, - 0x85, 0xc6, 0xf1, 0x0a, 0xb0, 0x73, 0x2b, 0x80, 0x26, 0x2b, 0xc0, 0x87, 0xc5, 0xd8, 0x49, 0x75, - 0xde, 0x5f, 0x82, 0xe7, 0x15, 0x5a, 0x98, 0xed, 0xb9, 0xf1, 0x09, 0x7d, 0x0b, 0x27, 0xf7, 0x13, - 0x04, 0xf5, 0x7b, 0xdc, 0x66, 0x5b, 0xbb, 0x37, 0x82, 0xe5, 0x36, 0xb8, 0x5a, 0xe8, 0x06, 0x77, - 0xb7, 0x58, 0x3f, 0x2f, 0x13, 0x9b, 0x70, 0x74, 0x87, 0x7a, 0x82, 0x71, 0xb7, 0xeb, 0xf3, 0xae, - 0x8a, 0xae, 0xdc, 0xa2, 0xd4, 0x39, 0xac, 0x0d, 0x1b, 0x5c, 0xe5, 0x1b, 0x3e, 0x0d, 0x0b, 0x9b, - 0xcc, 0x25, 0xde, 0x6e, 0xd7, 0x26, 0x3e, 0x91, 0xd9, 0x52, 0xee, 0x80, 0x1a, 0x5a, 0x25, 0x3e, - 0x31, 0x3e, 0x85, 0xd3, 0xfb, 0x67, 0x57, 0x7b, 0x7f, 0xa2, 0xd6, 0x10, 0x79, 0x0c, 0x67, 0xa0, - 0x1c, 0xc4, 0x59, 0x6f, 0x27, 0xf4, 0x3b, 0x67, 0xc1, 0x1d, 0x39, 0xe1, 0x6c, 0x63, 0x00, 0xf5, - 0xec, 0x95, 0xb5, 0xc4, 0xb7, 0xf6, 0xb2, 0xa6, 0x27, 0x1d, 0x42, 0xa5, 0xcf, 0xe4, 0x28, 0xad, - 0x05, 0x3a, 0x64, 0x47, 0x9e, 0x84, 0x71, 0x17, 0x4e, 0xec, 0xef, 0xb6, 0xee, 0x13, 0x9f, 0xe6, - 0xf2, 0x9f, 0x02, 0x08, 0xf8, 0x85, 0x74, 0xd4, 0xf4, 0xf3, 0xee, 0xc8, 0x51, 0x33, 0x0d, 0x02, - 0x95, 0xf1, 0xd5, 0x34, 0xf3, 0x4d, 0xd0, 0x5b, 0x87, 0xb3, 0x15, 0x72, 0x3d, 0x07, 0x59, 0xae, - 0x10, 0x96, 0x82, 0x5a, 0x6e, 0xe5, 0xd9, 0x31, 0x38, 0xa4, 0xac, 0xf7, 0x54, 0xa3, 0x81, 0x7f, - 0x45, 0xb0, 0x94, 0x76, 0x1f, 0xe3, 0x0b, 0xa9, 0x4b, 0xe7, 0x5c, 0xdd, 0xd5, 0x22, 0xef, 0x65, - 0x63, 0xed, 0xab, 0x3f, 0xff, 0xf9, 0x6e, 0xee, 0x3d, 0xc3, 0x0c, 0x1a, 0x8b, 0x2f, 0x55, 0x1d, - 0xbf, 0x3d, 0xf4, 0xf8, 0x03, 0xda, 0xf3, 0x85, 0xd5, 0xb4, 0x06, 0xbc, 0xa7, 0xfa, 0x19, 0xab, - 0xf9, 0xd8, 0xda, 0x7f, 0xf5, 0xb7, 0x92, 0x97, 0x25, 0xfe, 0x01, 0xc1, 0xd1, 0xb1, 0x3b, 0x1c, - 0x9f, 0x4f, 0x65, 0xc8, 0xba, 0xeb, 0x8b, 0x21, 0x5f, 0x96, 0xc8, 0x17, 0xb0, 0x42, 0x0e, 0x22, - 0x99, 0x01, 0x1c, 0xe1, 0xb5, 0x9a, 0x8f, 0xf1, 0x1f, 0x08, 0x96, 0xd2, 0x3a, 0x80, 0x0c, 0x69, - 0x73, 0x9a, 0x85, 0x62, 0x9c, 0xf7, 0x25, 0xe7, 0x47, 0x2b, 0xef, 0x48, 0xce, 0x84, 0x5e, 0x66, - 0x61, 0xee, 0x71, 0xa9, 0x9f, 0x22, 0x58, 0x4a, 0x6b, 0x7f, 0x32, 0x0e, 0x92, 0xd3, 0x29, 0x55, - 0x8f, 0x8f, 0xbd, 0x58, 0x6f, 0x06, 0xed, 0x63, 0xa8, 0x71, 0x73, 0x5a, 0x8d, 0x7f, 0x41, 0xb0, - 0x94, 0xd6, 0x47, 0x64, 0xa0, 0xe5, 0xb4, 0x39, 0xd5, 0xe5, 0x29, 0x66, 0xa8, 0xaa, 0x4c, 0x64, - 0x46, 0xe1, 0x64, 0x0e, 0x72, 0xb7, 0x1c, 0xad, 0x24, 0xdc, 0x28, 0x50, 0x6c, 0x8a, 0x32, 0xef, - 0x3a, 0x30, 0x6e, 0x49, 0x9e, 0xeb, 0xc6, 0x95, 0xc9, 0x3c, 0x71, 0x1d, 0xf5, 0xdf, 0x0f, 0xd1, - 0x0a, 0x2f, 0xfc, 0x6f, 0x10, 0xcc, 0xef, 0x55, 0x0d, 0x7e, 0x75, 0x52, 0x55, 0x15, 0x60, 0x7b, - 0x57, 0xb2, 0xb5, 0xf0, 0x95, 0xa9, 0x22, 0x1c, 0x82, 0x05, 0xb1, 0xfe, 0x09, 0x41, 0x39, 0x5a, - 0x24, 0x19, 0xaa, 0xa5, 0x34, 0x3d, 0xf9, 0x64, 0x1f, 0x4a, 0xb2, 0xdb, 0x2b, 0xd7, 0x22, 0x75, - 0x63, 0xce, 0x00, 0xb8, 0x27, 0xde, 0xb7, 0x08, 0xca, 0xd1, 0x22, 0xc8, 0x00, 0x4d, 0x69, 0x8a, - 0x32, 0xeb, 0x43, 0xab, 0xd7, 0x9c, 0x5d, 0xbd, 0x1f, 0x11, 0x2c, 0x44, 0x1a, 0x0e, 0xfc, 0xfa, - 0x84, 0x74, 0xdf, 0xab, 0x8b, 0xc6, 0x64, 0x47, 0x5d, 0x0e, 0xf1, 0x10, 0xcf, 0x90, 0x7e, 0xf8, - 0x2f, 0x04, 0x2f, 0x65, 0xb6, 0x27, 0xf8, 0x52, 0x2a, 0xc9, 0xa4, 0x76, 0xa6, 0x3a, 0xf9, 0x5e, - 0x37, 0x3e, 0x97, 0xe4, 0xf7, 0x8d, 0xce, 0xac, 0xf2, 0xb6, 0x9c, 0x2c, 0x8a, 0x16, 0x6a, 0xe2, - 0xbf, 0x51, 0xf4, 0x6a, 0x8f, 0xb7, 0x25, 0xf8, 0xcd, 0x09, 0xfa, 0xa6, 0xf6, 0x47, 0xd5, 0x4b, - 0x53, 0xce, 0xd2, 0x21, 0xd2, 0xb9, 0x8e, 0xd7, 0x66, 0x3d, 0xa8, 0xd5, 0x8b, 0xd3, 0xff, 0x86, - 0xe0, 0x48, 0xb2, 0x6b, 0xc1, 0x6f, 0x4c, 0x80, 0x8b, 0xb5, 0x4a, 0xd5, 0xf3, 0x05, 0xbd, 0xf5, - 0x11, 0x74, 0x07, 0x81, 0xaf, 0xcd, 0x7c, 0x04, 0xd5, 0x42, 0xe1, 0xef, 0x11, 0x94, 0xd7, 0xa9, - 0x7f, 0x9b, 0x38, 0x6d, 0xf9, 0x81, 0x03, 0x1b, 0x21, 0x08, 0x23, 0x4e, 0x80, 0x10, 0x35, 0x86, - 0xb0, 0xc7, 0x12, 0x3e, 0xca, 0x6a, 0xdc, 0x91, 0x50, 0xab, 0x86, 0x82, 0x0a, 0xbf, 0xb7, 0x14, - 0xbb, 0x6f, 0x45, 0x64, 0x9b, 0x20, 0x5b, 0x02, 0xae, 0xb5, 0x3c, 0xae, 0xb5, 0xff, 0x87, 0xab, - 0x9f, 0xe0, 0xfa, 0x1d, 0x01, 0xde, 0xa0, 0x42, 0x0e, 0x52, 0xcf, 0x61, 0x42, 0x65, 0x40, 0x23, - 0xb1, 0xf3, 0xb8, 0x4b, 0xc8, 0x78, 0xae, 0x80, 0xa7, 0x0e, 0x72, 0x5b, 0x72, 0xdf, 0x31, 0x6e, - 0xce, 0xc0, 0xed, 0x8f, 0x2d, 0xdb, 0x42, 0xcd, 0xeb, 0x0f, 0xe0, 0x44, 0x8f, 0x3b, 0x69, 0xa9, - 0x76, 0x1d, 0xc7, 0x5a, 0xe2, 0x76, 0xf0, 0xe6, 0x6d, 0xa3, 0xcf, 0x2e, 0x6b, 0xd7, 0x3e, 0x1f, - 0x10, 0xb7, 0x6f, 0x72, 0xaf, 0x6f, 0xf5, 0xa9, 0x2b, 0xdf, 0xcb, 0x96, 0x32, 0x91, 0x21, 0x13, - 0xb1, 0x0f, 0x6d, 0x57, 0x19, 0xf7, 0x9f, 0x21, 0xb4, 0x79, 0x50, 0x7a, 0x5d, 0xfc, 0x2f, 0x00, - 0x00, 0xff, 0xff, 0xe6, 0xf2, 0xe0, 0x78, 0xea, 0x13, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/iot/v1/resources.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/iot/v1/resources.pb.go deleted file mode 100644 index 4533c77b..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/iot/v1/resources.pb.go +++ /dev/null @@ -1,1026 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/iot/v1/resources.proto - -package iot - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Indicates whether an MQTT connection is enabled or disabled. See the field -// description for details. -type MqttState int32 - -const ( - // No MQTT state specified. If not specified, MQTT will be enabled by default. - MqttState_MQTT_STATE_UNSPECIFIED MqttState = 0 - // Enables a MQTT connection. - MqttState_MQTT_ENABLED MqttState = 1 - // Disables a MQTT connection. - MqttState_MQTT_DISABLED MqttState = 2 -) - -var MqttState_name = map[int32]string{ - 0: "MQTT_STATE_UNSPECIFIED", - 1: "MQTT_ENABLED", - 2: "MQTT_DISABLED", -} -var MqttState_value = map[string]int32{ - "MQTT_STATE_UNSPECIFIED": 0, - "MQTT_ENABLED": 1, - "MQTT_DISABLED": 2, -} - -func (x MqttState) String() string { - return proto.EnumName(MqttState_name, int32(x)) -} -func (MqttState) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Indicates whether DeviceService (HTTP) is enabled or disabled for the -// registry. See the field description for details. -type HttpState int32 - -const ( - // No HTTP state specified. If not specified, DeviceService will be - // enabled by default. - HttpState_HTTP_STATE_UNSPECIFIED HttpState = 0 - // Enables DeviceService (HTTP) service for the registry. - HttpState_HTTP_ENABLED HttpState = 1 - // Disables DeviceService (HTTP) service for the registry. - HttpState_HTTP_DISABLED HttpState = 2 -) - -var HttpState_name = map[int32]string{ - 0: "HTTP_STATE_UNSPECIFIED", - 1: "HTTP_ENABLED", - 2: "HTTP_DISABLED", -} -var HttpState_value = map[string]int32{ - "HTTP_STATE_UNSPECIFIED": 0, - "HTTP_ENABLED": 1, - "HTTP_DISABLED": 2, -} - -func (x HttpState) String() string { - return proto.EnumName(HttpState_name, int32(x)) -} -func (HttpState) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -// The supported formats for the public key. -type PublicKeyCertificateFormat int32 - -const ( - // The format has not been specified. This is an invalid default value and - // must not be used. - PublicKeyCertificateFormat_UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT PublicKeyCertificateFormat = 0 - // An X.509v3 certificate ([RFC5280](https://www.ietf.org/rfc/rfc5280.txt)), - // encoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and - // `-----END CERTIFICATE-----`. - PublicKeyCertificateFormat_X509_CERTIFICATE_PEM PublicKeyCertificateFormat = 1 -) - -var PublicKeyCertificateFormat_name = map[int32]string{ - 0: "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT", - 1: "X509_CERTIFICATE_PEM", -} -var PublicKeyCertificateFormat_value = map[string]int32{ - "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT": 0, - "X509_CERTIFICATE_PEM": 1, -} - -func (x PublicKeyCertificateFormat) String() string { - return proto.EnumName(PublicKeyCertificateFormat_name, int32(x)) -} -func (PublicKeyCertificateFormat) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -// The supported formats for the public key. -type PublicKeyFormat int32 - -const ( - // The format has not been specified. This is an invalid default value and - // must not be used. - PublicKeyFormat_UNSPECIFIED_PUBLIC_KEY_FORMAT PublicKeyFormat = 0 - // An RSA public key encoded in base64, and wrapped by - // `-----BEGIN PUBLIC KEY-----` and `-----END PUBLIC KEY-----`. This can be - // used to verify `RS256` signatures in JWT tokens ([RFC7518]( - // https://www.ietf.org/rfc/rfc7518.txt)). - PublicKeyFormat_RSA_PEM PublicKeyFormat = 3 - // As RSA_PEM, but wrapped in an X.509v3 certificate ([RFC5280]( - // https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by - // `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`. - PublicKeyFormat_RSA_X509_PEM PublicKeyFormat = 1 - // Public key for the ECDSA algorithm using P-256 and SHA-256, encoded in - // base64, and wrapped by `-----BEGIN PUBLIC KEY-----` and `-----END - // PUBLIC KEY-----`. This can be used to verify JWT tokens with the `ES256` - // algorithm ([RFC7518](https://www.ietf.org/rfc/rfc7518.txt)). This curve is - // defined in [OpenSSL](https://www.openssl.org/) as the `prime256v1` curve. - PublicKeyFormat_ES256_PEM PublicKeyFormat = 2 - // As ES256_PEM, but wrapped in an X.509v3 certificate ([RFC5280]( - // https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by - // `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`. - PublicKeyFormat_ES256_X509_PEM PublicKeyFormat = 4 -) - -var PublicKeyFormat_name = map[int32]string{ - 0: "UNSPECIFIED_PUBLIC_KEY_FORMAT", - 3: "RSA_PEM", - 1: "RSA_X509_PEM", - 2: "ES256_PEM", - 4: "ES256_X509_PEM", -} -var PublicKeyFormat_value = map[string]int32{ - "UNSPECIFIED_PUBLIC_KEY_FORMAT": 0, - "RSA_PEM": 3, - "RSA_X509_PEM": 1, - "ES256_PEM": 2, - "ES256_X509_PEM": 4, -} - -func (x PublicKeyFormat) String() string { - return proto.EnumName(PublicKeyFormat_name, int32(x)) -} -func (PublicKeyFormat) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -// The device resource. -type Device struct { - // The user-defined device identifier. The device ID must be unique - // within a device registry. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The resource path name. For example, - // `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or - // `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`. - // When `name` is populated as a response from the service, it always ends - // in the device numeric ID. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - // [Output only] A server-defined unique numeric ID for the device. This is a - // more compact way to identify devices, and it is globally unique. - NumId uint64 `protobuf:"varint,3,opt,name=num_id,json=numId" json:"num_id,omitempty"` - // The credentials used to authenticate this device. To allow credential - // rotation without interruption, multiple device credentials can be bound to - // this device. No more than 3 credentials can be bound to a single device at - // a time. When new credentials are added to a device, they are verified - // against the registry credentials. For details, see the description of the - // `DeviceRegistry.credentials` field. - Credentials []*DeviceCredential `protobuf:"bytes,12,rep,name=credentials" json:"credentials,omitempty"` - // [Output only] The last time a heartbeat was received. Timestamps are - // periodically collected and written to storage; they may be stale by a few - // minutes. This field is only for devices connecting through MQTT. - LastHeartbeatTime *google_protobuf1.Timestamp `protobuf:"bytes,7,opt,name=last_heartbeat_time,json=lastHeartbeatTime" json:"last_heartbeat_time,omitempty"` - // [Output only] The last time a telemetry event was received. Timestamps are - // periodically collected and written to storage; they may be stale by a few - // minutes. - LastEventTime *google_protobuf1.Timestamp `protobuf:"bytes,8,opt,name=last_event_time,json=lastEventTime" json:"last_event_time,omitempty"` - // [Output only] The last time a state event was received. Timestamps are - // periodically collected and written to storage; they may be stale by a few - // minutes. - LastStateTime *google_protobuf1.Timestamp `protobuf:"bytes,20,opt,name=last_state_time,json=lastStateTime" json:"last_state_time,omitempty"` - // [Output only] The last time a cloud-to-device config version acknowledgment - // was received from the device. This field is only for configurations - // sent through MQTT. - LastConfigAckTime *google_protobuf1.Timestamp `protobuf:"bytes,14,opt,name=last_config_ack_time,json=lastConfigAckTime" json:"last_config_ack_time,omitempty"` - // [Output only] The last time a cloud-to-device config version was sent to - // the device. - LastConfigSendTime *google_protobuf1.Timestamp `protobuf:"bytes,18,opt,name=last_config_send_time,json=lastConfigSendTime" json:"last_config_send_time,omitempty"` - // If a device is blocked, connections or requests from this device will fail. - // Can be used to temporarily prevent the device from connecting if, for - // example, the sensor is generating bad data and needs maintenance. - Blocked bool `protobuf:"varint,19,opt,name=blocked" json:"blocked,omitempty"` - // [Output only] The time the most recent error occurred, such as a failure to - // publish to Cloud Pub/Sub. This field is the timestamp of - // 'last_error_status'. - LastErrorTime *google_protobuf1.Timestamp `protobuf:"bytes,10,opt,name=last_error_time,json=lastErrorTime" json:"last_error_time,omitempty"` - // [Output only] The error message of the most recent error, such as a failure - // to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this - // field. If no errors have occurred, this field has an empty message - // and the status code 0 == OK. Otherwise, this field is expected to have a - // status code other than OK. - LastErrorStatus *google_rpc.Status `protobuf:"bytes,11,opt,name=last_error_status,json=lastErrorStatus" json:"last_error_status,omitempty"` - // The most recent device configuration, which is eventually sent from - // Cloud IoT Core to the device. If not present on creation, the - // configuration will be initialized with an empty payload and version value - // of `1`. To update this field after creation, use the - // `DeviceManager.ModifyCloudToDeviceConfig` method. - Config *DeviceConfig `protobuf:"bytes,13,opt,name=config" json:"config,omitempty"` - // [Output only] The state most recently received from the device. If no state - // has been reported, this field is not present. - State *DeviceState `protobuf:"bytes,16,opt,name=state" json:"state,omitempty"` - // The metadata key-value pairs assigned to the device. This metadata is not - // interpreted or indexed by Cloud IoT Core. It can be used to add contextual - // information for the device. - // - // Keys must conform to the regular expression [a-zA-Z0-9-_]+ and be less than - // 128 bytes in length. - // - // Values are free-form strings. Each value must be less than or equal to 32 - // KB in size. - // - // The total size of all keys and values must be less than 256 KB, and the - // maximum number of key-value pairs is 500. - Metadata map[string]string `protobuf:"bytes,17,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Device) Reset() { *m = Device{} } -func (m *Device) String() string { return proto.CompactTextString(m) } -func (*Device) ProtoMessage() {} -func (*Device) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Device) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Device) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Device) GetNumId() uint64 { - if m != nil { - return m.NumId - } - return 0 -} - -func (m *Device) GetCredentials() []*DeviceCredential { - if m != nil { - return m.Credentials - } - return nil -} - -func (m *Device) GetLastHeartbeatTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LastHeartbeatTime - } - return nil -} - -func (m *Device) GetLastEventTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LastEventTime - } - return nil -} - -func (m *Device) GetLastStateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LastStateTime - } - return nil -} - -func (m *Device) GetLastConfigAckTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LastConfigAckTime - } - return nil -} - -func (m *Device) GetLastConfigSendTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LastConfigSendTime - } - return nil -} - -func (m *Device) GetBlocked() bool { - if m != nil { - return m.Blocked - } - return false -} - -func (m *Device) GetLastErrorTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LastErrorTime - } - return nil -} - -func (m *Device) GetLastErrorStatus() *google_rpc.Status { - if m != nil { - return m.LastErrorStatus - } - return nil -} - -func (m *Device) GetConfig() *DeviceConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *Device) GetState() *DeviceState { - if m != nil { - return m.State - } - return nil -} - -func (m *Device) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -// A container for a group of devices. -type DeviceRegistry struct { - // The identifier of this device registry. For example, `myRegistry`. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The resource path name. For example, - // `projects/example-project/locations/us-central1/registries/my-registry`. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - // The configuration for notification of telemetry events received from the - // device. All telemetry events that were successfully published by the - // device and acknowledged by Cloud IoT Core are guaranteed to be - // delivered to Cloud Pub/Sub. Only the first configuration is used. If you - // try to publish a device telemetry event using MQTT without specifying a - // Cloud Pub/Sub topic for the device's registry, the connection closes - // automatically. If you try to do so using an HTTP connection, an error - // is returned. - EventNotificationConfigs []*EventNotificationConfig `protobuf:"bytes,10,rep,name=event_notification_configs,json=eventNotificationConfigs" json:"event_notification_configs,omitempty"` - // The configuration for notification of new states received from the device. - // State updates are guaranteed to be stored in the state history, but - // notifications to Cloud Pub/Sub are not guaranteed. For example, if - // permissions are misconfigured or the specified topic doesn't exist, no - // notification will be published but the state will still be stored in Cloud - // IoT Core. - StateNotificationConfig *StateNotificationConfig `protobuf:"bytes,7,opt,name=state_notification_config,json=stateNotificationConfig" json:"state_notification_config,omitempty"` - // The MQTT configuration for this device registry. - MqttConfig *MqttConfig `protobuf:"bytes,4,opt,name=mqtt_config,json=mqttConfig" json:"mqtt_config,omitempty"` - // The DeviceService (HTTP) configuration for this device registry. - HttpConfig *HttpConfig `protobuf:"bytes,9,opt,name=http_config,json=httpConfig" json:"http_config,omitempty"` - // The credentials used to verify the device credentials. No more than 10 - // credentials can be bound to a single registry at a time. The verification - // process occurs at the time of device creation or update. If this field is - // empty, no verification is performed. Otherwise, the credentials of a newly - // created device or added credentials of an updated device should be signed - // with one of these registry credentials. - // - // Note, however, that existing devices will never be affected by - // modifications to this list of credentials: after a device has been - // successfully created in a registry, it should be able to connect even if - // its registry credentials are revoked, deleted, or modified. - Credentials []*RegistryCredential `protobuf:"bytes,8,rep,name=credentials" json:"credentials,omitempty"` -} - -func (m *DeviceRegistry) Reset() { *m = DeviceRegistry{} } -func (m *DeviceRegistry) String() string { return proto.CompactTextString(m) } -func (*DeviceRegistry) ProtoMessage() {} -func (*DeviceRegistry) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *DeviceRegistry) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *DeviceRegistry) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DeviceRegistry) GetEventNotificationConfigs() []*EventNotificationConfig { - if m != nil { - return m.EventNotificationConfigs - } - return nil -} - -func (m *DeviceRegistry) GetStateNotificationConfig() *StateNotificationConfig { - if m != nil { - return m.StateNotificationConfig - } - return nil -} - -func (m *DeviceRegistry) GetMqttConfig() *MqttConfig { - if m != nil { - return m.MqttConfig - } - return nil -} - -func (m *DeviceRegistry) GetHttpConfig() *HttpConfig { - if m != nil { - return m.HttpConfig - } - return nil -} - -func (m *DeviceRegistry) GetCredentials() []*RegistryCredential { - if m != nil { - return m.Credentials - } - return nil -} - -// The configuration of MQTT for a device registry. -type MqttConfig struct { - // If enabled, allows connections using the MQTT protocol. Otherwise, MQTT - // connections to this registry will fail. - MqttEnabledState MqttState `protobuf:"varint,1,opt,name=mqtt_enabled_state,json=mqttEnabledState,enum=google.cloud.iot.v1.MqttState" json:"mqtt_enabled_state,omitempty"` -} - -func (m *MqttConfig) Reset() { *m = MqttConfig{} } -func (m *MqttConfig) String() string { return proto.CompactTextString(m) } -func (*MqttConfig) ProtoMessage() {} -func (*MqttConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *MqttConfig) GetMqttEnabledState() MqttState { - if m != nil { - return m.MqttEnabledState - } - return MqttState_MQTT_STATE_UNSPECIFIED -} - -// The configuration of the HTTP bridge for a device registry. -type HttpConfig struct { - // If enabled, allows devices to use DeviceService via the HTTP protocol. - // Otherwise, any requests to DeviceService will fail for this registry. - HttpEnabledState HttpState `protobuf:"varint,1,opt,name=http_enabled_state,json=httpEnabledState,enum=google.cloud.iot.v1.HttpState" json:"http_enabled_state,omitempty"` -} - -func (m *HttpConfig) Reset() { *m = HttpConfig{} } -func (m *HttpConfig) String() string { return proto.CompactTextString(m) } -func (*HttpConfig) ProtoMessage() {} -func (*HttpConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *HttpConfig) GetHttpEnabledState() HttpState { - if m != nil { - return m.HttpEnabledState - } - return HttpState_HTTP_STATE_UNSPECIFIED -} - -// The configuration to forward telemetry events. -type EventNotificationConfig struct { - // A Cloud Pub/Sub topic name. For example, - // `projects/myProject/topics/deviceEvents`. - PubsubTopicName string `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName" json:"pubsub_topic_name,omitempty"` -} - -func (m *EventNotificationConfig) Reset() { *m = EventNotificationConfig{} } -func (m *EventNotificationConfig) String() string { return proto.CompactTextString(m) } -func (*EventNotificationConfig) ProtoMessage() {} -func (*EventNotificationConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *EventNotificationConfig) GetPubsubTopicName() string { - if m != nil { - return m.PubsubTopicName - } - return "" -} - -// The configuration for notification of new states received from the device. -type StateNotificationConfig struct { - // A Cloud Pub/Sub topic name. For example, - // `projects/myProject/topics/deviceEvents`. - PubsubTopicName string `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName" json:"pubsub_topic_name,omitempty"` -} - -func (m *StateNotificationConfig) Reset() { *m = StateNotificationConfig{} } -func (m *StateNotificationConfig) String() string { return proto.CompactTextString(m) } -func (*StateNotificationConfig) ProtoMessage() {} -func (*StateNotificationConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *StateNotificationConfig) GetPubsubTopicName() string { - if m != nil { - return m.PubsubTopicName - } - return "" -} - -// A server-stored registry credential used to validate device credentials. -type RegistryCredential struct { - // The credential data. Reserved for expansion in the future. - // - // Types that are valid to be assigned to Credential: - // *RegistryCredential_PublicKeyCertificate - Credential isRegistryCredential_Credential `protobuf_oneof:"credential"` -} - -func (m *RegistryCredential) Reset() { *m = RegistryCredential{} } -func (m *RegistryCredential) String() string { return proto.CompactTextString(m) } -func (*RegistryCredential) ProtoMessage() {} -func (*RegistryCredential) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -type isRegistryCredential_Credential interface { - isRegistryCredential_Credential() -} - -type RegistryCredential_PublicKeyCertificate struct { - PublicKeyCertificate *PublicKeyCertificate `protobuf:"bytes,1,opt,name=public_key_certificate,json=publicKeyCertificate,oneof"` -} - -func (*RegistryCredential_PublicKeyCertificate) isRegistryCredential_Credential() {} - -func (m *RegistryCredential) GetCredential() isRegistryCredential_Credential { - if m != nil { - return m.Credential - } - return nil -} - -func (m *RegistryCredential) GetPublicKeyCertificate() *PublicKeyCertificate { - if x, ok := m.GetCredential().(*RegistryCredential_PublicKeyCertificate); ok { - return x.PublicKeyCertificate - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RegistryCredential) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RegistryCredential_OneofMarshaler, _RegistryCredential_OneofUnmarshaler, _RegistryCredential_OneofSizer, []interface{}{ - (*RegistryCredential_PublicKeyCertificate)(nil), - } -} - -func _RegistryCredential_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RegistryCredential) - // credential - switch x := m.Credential.(type) { - case *RegistryCredential_PublicKeyCertificate: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PublicKeyCertificate); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RegistryCredential.Credential has unexpected type %T", x) - } - return nil -} - -func _RegistryCredential_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RegistryCredential) - switch tag { - case 1: // credential.public_key_certificate - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PublicKeyCertificate) - err := b.DecodeMessage(msg) - m.Credential = &RegistryCredential_PublicKeyCertificate{msg} - return true, err - default: - return false, nil - } -} - -func _RegistryCredential_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RegistryCredential) - // credential - switch x := m.Credential.(type) { - case *RegistryCredential_PublicKeyCertificate: - s := proto.Size(x.PublicKeyCertificate) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Details of an X.509 certificate. For informational purposes only. -type X509CertificateDetails struct { - // The entity that signed the certificate. - Issuer string `protobuf:"bytes,1,opt,name=issuer" json:"issuer,omitempty"` - // The entity the certificate and public key belong to. - Subject string `protobuf:"bytes,2,opt,name=subject" json:"subject,omitempty"` - // The time the certificate becomes valid. - StartTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The time the certificate becomes invalid. - ExpiryTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=expiry_time,json=expiryTime" json:"expiry_time,omitempty"` - // The algorithm used to sign the certificate. - SignatureAlgorithm string `protobuf:"bytes,5,opt,name=signature_algorithm,json=signatureAlgorithm" json:"signature_algorithm,omitempty"` - // The type of public key in the certificate. - PublicKeyType string `protobuf:"bytes,6,opt,name=public_key_type,json=publicKeyType" json:"public_key_type,omitempty"` -} - -func (m *X509CertificateDetails) Reset() { *m = X509CertificateDetails{} } -func (m *X509CertificateDetails) String() string { return proto.CompactTextString(m) } -func (*X509CertificateDetails) ProtoMessage() {} -func (*X509CertificateDetails) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *X509CertificateDetails) GetIssuer() string { - if m != nil { - return m.Issuer - } - return "" -} - -func (m *X509CertificateDetails) GetSubject() string { - if m != nil { - return m.Subject - } - return "" -} - -func (m *X509CertificateDetails) GetStartTime() *google_protobuf1.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *X509CertificateDetails) GetExpiryTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ExpiryTime - } - return nil -} - -func (m *X509CertificateDetails) GetSignatureAlgorithm() string { - if m != nil { - return m.SignatureAlgorithm - } - return "" -} - -func (m *X509CertificateDetails) GetPublicKeyType() string { - if m != nil { - return m.PublicKeyType - } - return "" -} - -// A public key certificate format and data. -type PublicKeyCertificate struct { - // The certificate format. - Format PublicKeyCertificateFormat `protobuf:"varint,1,opt,name=format,enum=google.cloud.iot.v1.PublicKeyCertificateFormat" json:"format,omitempty"` - // The certificate data. - Certificate string `protobuf:"bytes,2,opt,name=certificate" json:"certificate,omitempty"` - // [Output only] The certificate details. Used only for X.509 certificates. - X509Details *X509CertificateDetails `protobuf:"bytes,3,opt,name=x509_details,json=x509Details" json:"x509_details,omitempty"` -} - -func (m *PublicKeyCertificate) Reset() { *m = PublicKeyCertificate{} } -func (m *PublicKeyCertificate) String() string { return proto.CompactTextString(m) } -func (*PublicKeyCertificate) ProtoMessage() {} -func (*PublicKeyCertificate) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *PublicKeyCertificate) GetFormat() PublicKeyCertificateFormat { - if m != nil { - return m.Format - } - return PublicKeyCertificateFormat_UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT -} - -func (m *PublicKeyCertificate) GetCertificate() string { - if m != nil { - return m.Certificate - } - return "" -} - -func (m *PublicKeyCertificate) GetX509Details() *X509CertificateDetails { - if m != nil { - return m.X509Details - } - return nil -} - -// A server-stored device credential used for authentication. -type DeviceCredential struct { - // The credential data. Reserved for expansion in the future. - // - // Types that are valid to be assigned to Credential: - // *DeviceCredential_PublicKey - Credential isDeviceCredential_Credential `protobuf_oneof:"credential"` - // [Optional] The time at which this credential becomes invalid. This - // credential will be ignored for new client authentication requests after - // this timestamp; however, it will not be automatically deleted. - ExpirationTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=expiration_time,json=expirationTime" json:"expiration_time,omitempty"` -} - -func (m *DeviceCredential) Reset() { *m = DeviceCredential{} } -func (m *DeviceCredential) String() string { return proto.CompactTextString(m) } -func (*DeviceCredential) ProtoMessage() {} -func (*DeviceCredential) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -type isDeviceCredential_Credential interface { - isDeviceCredential_Credential() -} - -type DeviceCredential_PublicKey struct { - PublicKey *PublicKeyCredential `protobuf:"bytes,2,opt,name=public_key,json=publicKey,oneof"` -} - -func (*DeviceCredential_PublicKey) isDeviceCredential_Credential() {} - -func (m *DeviceCredential) GetCredential() isDeviceCredential_Credential { - if m != nil { - return m.Credential - } - return nil -} - -func (m *DeviceCredential) GetPublicKey() *PublicKeyCredential { - if x, ok := m.GetCredential().(*DeviceCredential_PublicKey); ok { - return x.PublicKey - } - return nil -} - -func (m *DeviceCredential) GetExpirationTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ExpirationTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*DeviceCredential) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _DeviceCredential_OneofMarshaler, _DeviceCredential_OneofUnmarshaler, _DeviceCredential_OneofSizer, []interface{}{ - (*DeviceCredential_PublicKey)(nil), - } -} - -func _DeviceCredential_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*DeviceCredential) - // credential - switch x := m.Credential.(type) { - case *DeviceCredential_PublicKey: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PublicKey); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("DeviceCredential.Credential has unexpected type %T", x) - } - return nil -} - -func _DeviceCredential_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*DeviceCredential) - switch tag { - case 2: // credential.public_key - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PublicKeyCredential) - err := b.DecodeMessage(msg) - m.Credential = &DeviceCredential_PublicKey{msg} - return true, err - default: - return false, nil - } -} - -func _DeviceCredential_OneofSizer(msg proto.Message) (n int) { - m := msg.(*DeviceCredential) - // credential - switch x := m.Credential.(type) { - case *DeviceCredential_PublicKey: - s := proto.Size(x.PublicKey) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A public key format and data. -type PublicKeyCredential struct { - // The format of the key. - Format PublicKeyFormat `protobuf:"varint,1,opt,name=format,enum=google.cloud.iot.v1.PublicKeyFormat" json:"format,omitempty"` - // The key data. - Key string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"` -} - -func (m *PublicKeyCredential) Reset() { *m = PublicKeyCredential{} } -func (m *PublicKeyCredential) String() string { return proto.CompactTextString(m) } -func (*PublicKeyCredential) ProtoMessage() {} -func (*PublicKeyCredential) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *PublicKeyCredential) GetFormat() PublicKeyFormat { - if m != nil { - return m.Format - } - return PublicKeyFormat_UNSPECIFIED_PUBLIC_KEY_FORMAT -} - -func (m *PublicKeyCredential) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -// The device configuration. Eventually delivered to devices. -type DeviceConfig struct { - // [Output only] The version of this update. The version number is assigned by - // the server, and is always greater than 0 after device creation. The - // version must be 0 on the `CreateDevice` request if a `config` is - // specified; the response of `CreateDevice` will always have a value of 1. - Version int64 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"` - // [Output only] The time at which this configuration version was updated in - // Cloud IoT Core. This timestamp is set by the server. - CloudUpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=cloud_update_time,json=cloudUpdateTime" json:"cloud_update_time,omitempty"` - // [Output only] The time at which Cloud IoT Core received the - // acknowledgment from the device, indicating that the device has received - // this configuration version. If this field is not present, the device has - // not yet acknowledged that it received this version. Note that when - // the config was sent to the device, many config versions may have been - // available in Cloud IoT Core while the device was disconnected, and on - // connection, only the latest version is sent to the device. Some - // versions may never be sent to the device, and therefore are never - // acknowledged. This timestamp is set by Cloud IoT Core. - DeviceAckTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=device_ack_time,json=deviceAckTime" json:"device_ack_time,omitempty"` - // The device configuration data. - BinaryData []byte `protobuf:"bytes,4,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"` -} - -func (m *DeviceConfig) Reset() { *m = DeviceConfig{} } -func (m *DeviceConfig) String() string { return proto.CompactTextString(m) } -func (*DeviceConfig) ProtoMessage() {} -func (*DeviceConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *DeviceConfig) GetVersion() int64 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *DeviceConfig) GetCloudUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CloudUpdateTime - } - return nil -} - -func (m *DeviceConfig) GetDeviceAckTime() *google_protobuf1.Timestamp { - if m != nil { - return m.DeviceAckTime - } - return nil -} - -func (m *DeviceConfig) GetBinaryData() []byte { - if m != nil { - return m.BinaryData - } - return nil -} - -// The device state, as reported by the device. -type DeviceState struct { - // [Output only] The time at which this state version was updated in Cloud - // IoT Core. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // The device state data. - BinaryData []byte `protobuf:"bytes,2,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"` -} - -func (m *DeviceState) Reset() { *m = DeviceState{} } -func (m *DeviceState) String() string { return proto.CompactTextString(m) } -func (*DeviceState) ProtoMessage() {} -func (*DeviceState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *DeviceState) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *DeviceState) GetBinaryData() []byte { - if m != nil { - return m.BinaryData - } - return nil -} - -func init() { - proto.RegisterType((*Device)(nil), "google.cloud.iot.v1.Device") - proto.RegisterType((*DeviceRegistry)(nil), "google.cloud.iot.v1.DeviceRegistry") - proto.RegisterType((*MqttConfig)(nil), "google.cloud.iot.v1.MqttConfig") - proto.RegisterType((*HttpConfig)(nil), "google.cloud.iot.v1.HttpConfig") - proto.RegisterType((*EventNotificationConfig)(nil), "google.cloud.iot.v1.EventNotificationConfig") - proto.RegisterType((*StateNotificationConfig)(nil), "google.cloud.iot.v1.StateNotificationConfig") - proto.RegisterType((*RegistryCredential)(nil), "google.cloud.iot.v1.RegistryCredential") - proto.RegisterType((*X509CertificateDetails)(nil), "google.cloud.iot.v1.X509CertificateDetails") - proto.RegisterType((*PublicKeyCertificate)(nil), "google.cloud.iot.v1.PublicKeyCertificate") - proto.RegisterType((*DeviceCredential)(nil), "google.cloud.iot.v1.DeviceCredential") - proto.RegisterType((*PublicKeyCredential)(nil), "google.cloud.iot.v1.PublicKeyCredential") - proto.RegisterType((*DeviceConfig)(nil), "google.cloud.iot.v1.DeviceConfig") - proto.RegisterType((*DeviceState)(nil), "google.cloud.iot.v1.DeviceState") - proto.RegisterEnum("google.cloud.iot.v1.MqttState", MqttState_name, MqttState_value) - proto.RegisterEnum("google.cloud.iot.v1.HttpState", HttpState_name, HttpState_value) - proto.RegisterEnum("google.cloud.iot.v1.PublicKeyCertificateFormat", PublicKeyCertificateFormat_name, PublicKeyCertificateFormat_value) - proto.RegisterEnum("google.cloud.iot.v1.PublicKeyFormat", PublicKeyFormat_name, PublicKeyFormat_value) -} - -func init() { proto.RegisterFile("google/cloud/iot/v1/resources.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1320 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x97, 0xdd, 0x72, 0xdb, 0x44, - 0x14, 0xc7, 0x23, 0x27, 0x71, 0x92, 0xe3, 0xf8, 0x23, 0x9b, 0x34, 0x11, 0x1e, 0xa0, 0xae, 0xf9, - 0x4a, 0x0b, 0xd8, 0x6d, 0x98, 0x76, 0x08, 0x65, 0x18, 0x12, 0x47, 0x69, 0x4c, 0x93, 0x60, 0x64, - 0x77, 0x06, 0x7a, 0xa3, 0x59, 0x4b, 0x1b, 0x47, 0x8d, 0x2d, 0xa9, 0xd2, 0xca, 0x53, 0x3f, 0x00, - 0x0f, 0xc0, 0x35, 0x2f, 0xc1, 0xab, 0x70, 0xc1, 0x05, 0x6f, 0xc2, 0x25, 0xb3, 0x67, 0x25, 0xf9, - 0x03, 0x39, 0x0e, 0x77, 0xde, 0xdd, 0xf3, 0xff, 0x1d, 0x9d, 0xaf, 0x95, 0x0c, 0x1f, 0xf5, 0x5c, - 0xb7, 0xd7, 0x67, 0x75, 0xb3, 0xef, 0x86, 0x56, 0xdd, 0x76, 0x79, 0x7d, 0xf8, 0xa4, 0xee, 0xb3, - 0xc0, 0x0d, 0x7d, 0x93, 0x05, 0x35, 0xcf, 0x77, 0xb9, 0x4b, 0xb6, 0xa5, 0x51, 0x0d, 0x8d, 0x6a, - 0xb6, 0xcb, 0x6b, 0xc3, 0x27, 0xe5, 0xf7, 0x23, 0x25, 0xf5, 0xec, 0x3a, 0x75, 0x1c, 0x97, 0x53, - 0x6e, 0xbb, 0x4e, 0x24, 0x29, 0xdf, 0x8f, 0x4e, 0x71, 0xd5, 0x0d, 0xaf, 0xea, 0xdc, 0x1e, 0xb0, - 0x80, 0xd3, 0x81, 0x17, 0x19, 0xec, 0x45, 0x06, 0xbe, 0x67, 0xd6, 0x03, 0x4e, 0x79, 0x18, 0x29, - 0xab, 0xbf, 0xad, 0x41, 0xf6, 0x84, 0x0d, 0x6d, 0x93, 0x91, 0x02, 0x64, 0x6c, 0x4b, 0x55, 0x2a, - 0xca, 0xfe, 0x86, 0x9e, 0xb1, 0x2d, 0x42, 0x60, 0xc5, 0xa1, 0x03, 0xa6, 0x66, 0x70, 0x07, 0x7f, - 0x93, 0x7b, 0x90, 0x75, 0xc2, 0x81, 0x61, 0x5b, 0xea, 0x72, 0x45, 0xd9, 0x5f, 0xd1, 0x57, 0x9d, - 0x70, 0xd0, 0xb4, 0xc8, 0x0b, 0xc8, 0x99, 0x3e, 0xb3, 0x98, 0xc3, 0x6d, 0xda, 0x0f, 0xd4, 0xcd, - 0xca, 0xf2, 0x7e, 0xee, 0xe0, 0x93, 0x5a, 0x4a, 0x20, 0x35, 0xe9, 0xac, 0x91, 0x58, 0xeb, 0x93, - 0x4a, 0xf2, 0x03, 0x6c, 0xf7, 0x69, 0xc0, 0x8d, 0x6b, 0x46, 0x7d, 0xde, 0x65, 0x94, 0x1b, 0x22, - 0x12, 0x75, 0xad, 0xa2, 0xec, 0xe7, 0x0e, 0xca, 0x31, 0x30, 0x0e, 0xb3, 0xd6, 0x89, 0xc3, 0xd4, - 0xb7, 0x84, 0xec, 0x2c, 0x56, 0x89, 0x7d, 0x72, 0x0c, 0x45, 0x64, 0xb1, 0x21, 0x73, 0x22, 0xce, - 0xfa, 0x42, 0x4e, 0x5e, 0x48, 0x34, 0xa1, 0x98, 0x62, 0x88, 0x9c, 0x31, 0xc9, 0xd8, 0xb9, 0x1b, - 0xa3, 0x2d, 0x14, 0xc8, 0x78, 0x09, 0x3b, 0xc8, 0x30, 0x5d, 0xe7, 0xca, 0xee, 0x19, 0xd4, 0xbc, - 0x91, 0xa0, 0xc2, 0xdd, 0x82, 0x6a, 0xa0, 0xec, 0xc8, 0xbc, 0x41, 0xd8, 0x05, 0xdc, 0x9b, 0x84, - 0x05, 0xcc, 0xb1, 0x24, 0x8d, 0x2c, 0xa4, 0x91, 0x31, 0xad, 0xcd, 0x1c, 0x0b, 0x71, 0x2a, 0xac, - 0x75, 0xfb, 0xae, 0x79, 0xc3, 0x2c, 0x75, 0xbb, 0xa2, 0xec, 0xaf, 0xeb, 0xf1, 0x72, 0x9c, 0x3d, - 0xdf, 0x77, 0x7d, 0xe9, 0x02, 0xee, 0x98, 0x3d, 0xa1, 0x40, 0xfa, 0x77, 0xb0, 0x35, 0xc1, 0x90, - 0x7d, 0xa7, 0xe6, 0x90, 0x42, 0x62, 0x8a, 0xef, 0x99, 0xb5, 0x36, 0x9e, 0xe8, 0xc5, 0x44, 0x2d, - 0x37, 0xc8, 0x21, 0x64, 0x65, 0x9c, 0x6a, 0x1e, 0x45, 0x0f, 0x6e, 0xeb, 0x28, 0x34, 0xd4, 0x23, - 0x01, 0x79, 0x06, 0xab, 0x58, 0x33, 0xb5, 0x84, 0xca, 0xca, 0x2d, 0x4a, 0xac, 0x94, 0x2e, 0xcd, - 0x89, 0x06, 0xeb, 0x03, 0xc6, 0xa9, 0x45, 0x39, 0x55, 0xb7, 0xb0, 0x8d, 0x1f, 0xde, 0x22, 0xad, - 0x5d, 0x44, 0xb6, 0x9a, 0xc3, 0xfd, 0x91, 0x9e, 0x48, 0xcb, 0xcf, 0x21, 0x3f, 0x75, 0x44, 0x4a, - 0xb0, 0x7c, 0xc3, 0x46, 0xd1, 0x74, 0x89, 0x9f, 0x64, 0x07, 0x56, 0x87, 0xb4, 0x1f, 0xc6, 0xf3, - 0x25, 0x17, 0xdf, 0x64, 0xbe, 0x56, 0xaa, 0x7f, 0x2f, 0x43, 0x41, 0xf2, 0x75, 0xd6, 0xb3, 0x03, - 0x21, 0xbf, 0xcb, 0x6c, 0xbe, 0x81, 0xb2, 0x6c, 0x75, 0xc7, 0xe5, 0xf6, 0x95, 0x6d, 0xe2, 0x0d, - 0x11, 0x35, 0x4a, 0xa0, 0x02, 0x06, 0xf3, 0x45, 0x6a, 0x30, 0xd8, 0xef, 0x97, 0x13, 0xaa, 0x28, - 0x99, 0x2a, 0x4b, 0x3f, 0x08, 0xc8, 0x35, 0xbc, 0x27, 0x47, 0x22, 0xc5, 0x57, 0x34, 0xad, 0xe9, - 0xae, 0x30, 0xd9, 0x29, 0xae, 0xf6, 0x82, 0xf4, 0x03, 0xf2, 0x3d, 0xe4, 0x06, 0x6f, 0x79, 0xdc, - 0xf0, 0xea, 0x0a, 0xb2, 0xef, 0xa7, 0xb2, 0x2f, 0xde, 0xf2, 0xa8, 0xbf, 0x75, 0x18, 0x24, 0xbf, - 0x05, 0xe1, 0x9a, 0x73, 0x2f, 0x26, 0x6c, 0xdc, 0x42, 0x38, 0xe3, 0xdc, 0x8b, 0x09, 0xd7, 0xc9, - 0x6f, 0xd2, 0x9c, 0xbe, 0xde, 0xd6, 0x31, 0x95, 0x9f, 0xa5, 0x12, 0xe2, 0x8a, 0xcd, 0xb9, 0xe0, - 0xaa, 0xaf, 0x01, 0xc6, 0x8f, 0x49, 0xce, 0x81, 0x60, 0x70, 0xcc, 0xa1, 0xdd, 0x3e, 0xb3, 0xe4, - 0x35, 0x83, 0x65, 0x2e, 0x1c, 0x7c, 0x38, 0x37, 0x46, 0xd9, 0xb0, 0x25, 0xa1, 0xd4, 0xa4, 0x10, - 0x77, 0x04, 0x7b, 0x1c, 0x80, 0x60, 0x63, 0xd8, 0x77, 0x67, 0x0b, 0x71, 0xc4, 0x16, 0xca, 0x29, - 0xb6, 0x06, 0x7b, 0x73, 0xba, 0x84, 0x3c, 0x82, 0x2d, 0x2f, 0xec, 0x06, 0x61, 0xd7, 0xe0, 0xae, - 0x67, 0x9b, 0x06, 0x36, 0xa6, 0x6c, 0xd5, 0xa2, 0x3c, 0xe8, 0x88, 0xfd, 0x4b, 0x3a, 0x40, 0xcc, - 0x9c, 0x0e, 0xf8, 0x5f, 0x98, 0x5f, 0x15, 0x20, 0xff, 0xcd, 0x34, 0xa1, 0xb0, 0xeb, 0x85, 0xdd, - 0xbe, 0x6d, 0x1a, 0x37, 0x6c, 0x64, 0x98, 0xcc, 0x8f, 0x9c, 0x48, 0xce, 0xbc, 0x51, 0x6e, 0xa1, - 0xe4, 0x25, 0x1b, 0x35, 0xc6, 0x82, 0xb3, 0x25, 0x7d, 0xc7, 0x4b, 0xd9, 0x3f, 0xde, 0x04, 0x18, - 0x97, 0xb3, 0xfa, 0x7b, 0x06, 0x76, 0x7f, 0x7e, 0xfa, 0xf8, 0x70, 0xc2, 0xe2, 0x84, 0x71, 0x6a, - 0xf7, 0x03, 0xb2, 0x0b, 0x59, 0x3b, 0x08, 0x42, 0xe6, 0x47, 0x31, 0x44, 0x2b, 0x71, 0xe3, 0x06, - 0x61, 0xf7, 0x0d, 0x33, 0x79, 0x34, 0xbc, 0xf1, 0x92, 0x1c, 0x02, 0x04, 0x9c, 0xfa, 0xd1, 0xab, - 0x6a, 0x79, 0xe1, 0x65, 0xbb, 0x81, 0xd6, 0x78, 0xd1, 0x3e, 0x87, 0x1c, 0x7b, 0xe7, 0xd9, 0xfe, - 0x48, 0x6a, 0x57, 0x16, 0x6a, 0x41, 0x9a, 0xa3, 0xb8, 0x0e, 0xdb, 0x81, 0xdd, 0x73, 0x28, 0x0f, - 0x7d, 0x66, 0xd0, 0x7e, 0xcf, 0xf5, 0x6d, 0x7e, 0x3d, 0x50, 0x57, 0xf1, 0xe9, 0x48, 0x72, 0x74, - 0x14, 0x9f, 0x90, 0x4f, 0xa1, 0x38, 0x91, 0x66, 0x3e, 0xf2, 0x98, 0x9a, 0x45, 0xe3, 0x7c, 0x92, - 0xb2, 0xce, 0xc8, 0x63, 0xd5, 0x3f, 0x15, 0xd8, 0x49, 0x4b, 0x2e, 0x79, 0x01, 0xd9, 0x2b, 0xd7, - 0x1f, 0x50, 0x1e, 0xb5, 0x63, 0xfd, 0xce, 0x75, 0x39, 0x45, 0x99, 0x1e, 0xc9, 0x49, 0x05, 0x72, - 0x93, 0x55, 0x96, 0x09, 0x9d, 0xdc, 0x22, 0x97, 0xb0, 0xf9, 0xee, 0xe9, 0xe3, 0x43, 0xc3, 0x92, - 0x65, 0x89, 0xd2, 0xfa, 0x79, 0xaa, 0xc3, 0xf4, 0x4a, 0xea, 0x39, 0x01, 0x88, 0x16, 0xd5, 0x3f, - 0x14, 0x28, 0xcd, 0x7e, 0xc2, 0x90, 0x26, 0xc0, 0x38, 0x21, 0xf8, 0x14, 0xb9, 0x83, 0xfd, 0x05, - 0x31, 0x25, 0xea, 0xb3, 0x25, 0x7d, 0x23, 0xc9, 0x1b, 0x69, 0x40, 0x11, 0x4b, 0x23, 0x2f, 0x54, - 0xac, 0x66, 0x76, 0x61, 0x35, 0x0b, 0x63, 0x89, 0xd8, 0x9c, 0x69, 0x52, 0x06, 0xdb, 0x29, 0x6e, - 0xc9, 0xb7, 0x33, 0x45, 0xf8, 0xf8, 0xf6, 0x07, 0x9e, 0xc9, 0x7c, 0xf4, 0x3e, 0xcb, 0x24, 0xef, - 0xb3, 0xea, 0x5f, 0x0a, 0x6c, 0x4e, 0xbe, 0x8a, 0x45, 0xa7, 0x0f, 0x99, 0x1f, 0xd8, 0xae, 0x83, - 0x1e, 0x96, 0xf5, 0x78, 0x49, 0x4e, 0x61, 0x0b, 0x9d, 0x18, 0xa1, 0x67, 0x25, 0xdf, 0x55, 0x99, - 0x85, 0x61, 0x16, 0x51, 0xf4, 0x0a, 0x35, 0xf1, 0xd7, 0x99, 0x85, 0x1e, 0xc7, 0x1f, 0x55, 0x8b, - 0xc7, 0x26, 0x2f, 0x25, 0xf1, 0x07, 0xd5, 0x7d, 0xc8, 0x75, 0x6d, 0x87, 0xfa, 0x23, 0x03, 0xdf, - 0xf9, 0x62, 0x74, 0x36, 0x75, 0x90, 0x5b, 0x27, 0x94, 0xd3, 0xea, 0x0d, 0xe4, 0x26, 0xbe, 0x13, - 0xc4, 0xa8, 0x4d, 0x3e, 0xb5, 0xb2, 0x78, 0xd4, 0xc2, 0xf1, 0x03, 0xcf, 0x38, 0xcb, 0xcc, 0x3a, - 0x7b, 0x74, 0x0e, 0x1b, 0xc9, 0x0d, 0x4f, 0xca, 0xb0, 0x7b, 0xf1, 0x53, 0xa7, 0x63, 0xb4, 0x3b, - 0x47, 0x1d, 0xcd, 0x78, 0x75, 0xd9, 0x6e, 0x69, 0x8d, 0xe6, 0x69, 0x53, 0x3b, 0x29, 0x2d, 0x91, - 0x12, 0x6c, 0xe2, 0x99, 0x76, 0x79, 0x74, 0x7c, 0xae, 0x9d, 0x94, 0x14, 0xb2, 0x05, 0x79, 0xdc, - 0x39, 0x69, 0xb6, 0xe5, 0x56, 0x46, 0xd0, 0x92, 0x3b, 0x5d, 0xd0, 0xce, 0x3a, 0x9d, 0xd6, 0x3c, - 0x1a, 0x9e, 0x4d, 0xd1, 0x70, 0x67, 0x82, 0xc6, 0xa0, 0x3c, 0x7f, 0x24, 0xc9, 0x97, 0xf0, 0x70, - 0x82, 0x69, 0xb4, 0x5e, 0x1d, 0x9f, 0x37, 0x1b, 0xc6, 0x4b, 0xed, 0x17, 0xa3, 0xa1, 0xe9, 0x9d, - 0xe6, 0x69, 0xb3, 0x21, 0xdc, 0x9e, 0xfe, 0xa8, 0x5f, 0x1c, 0x75, 0x4a, 0x4b, 0x44, 0x85, 0x1d, - 0x31, 0x6e, 0x53, 0x87, 0x2d, 0xed, 0xa2, 0xa4, 0x3c, 0x1a, 0x42, 0x71, 0xa6, 0xe9, 0xc8, 0x03, - 0xf8, 0x60, 0x0e, 0x3b, 0xe1, 0xe5, 0x60, 0x4d, 0x6f, 0x1f, 0x21, 0x62, 0x59, 0x84, 0x23, 0x16, - 0xe8, 0x00, 0xa1, 0x24, 0x0f, 0x1b, 0x5a, 0xfb, 0xe0, 0xe9, 0x33, 0x5c, 0x66, 0x08, 0x81, 0x82, - 0x5c, 0x26, 0x26, 0x2b, 0xc7, 0x57, 0xb0, 0x67, 0xba, 0x83, 0xb4, 0x21, 0x38, 0x2e, 0xe8, 0xf1, - 0x5f, 0xb4, 0x96, 0xa8, 0x6f, 0x4b, 0x79, 0xfd, 0x2c, 0x32, 0xeb, 0xb9, 0x7d, 0xea, 0xf4, 0x6a, - 0xae, 0xdf, 0xab, 0xf7, 0x98, 0x83, 0xd5, 0xaf, 0xcb, 0x23, 0xea, 0xd9, 0xc1, 0xd4, 0xff, 0xbc, - 0xe7, 0xb6, 0xcb, 0xff, 0x51, 0x94, 0x6e, 0x16, 0xad, 0xbe, 0xfa, 0x37, 0x00, 0x00, 0xff, 0xff, - 0x19, 0x85, 0xa9, 0x71, 0x0c, 0x0e, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/language/v1/language_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/language/v1/language_service.pb.go deleted file mode 100644 index 126175f0..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/language/v1/language_service.pb.go +++ /dev/null @@ -1,2591 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/language/v1/language_service.proto - -/* -Package language is a generated protocol buffer package. - -It is generated from these files: - google/cloud/language/v1/language_service.proto - -It has these top-level messages: - Document - Sentence - Entity - Token - Sentiment - PartOfSpeech - DependencyEdge - EntityMention - TextSpan - ClassificationCategory - AnalyzeSentimentRequest - AnalyzeSentimentResponse - AnalyzeEntitySentimentRequest - AnalyzeEntitySentimentResponse - AnalyzeEntitiesRequest - AnalyzeEntitiesResponse - AnalyzeSyntaxRequest - AnalyzeSyntaxResponse - ClassifyTextRequest - ClassifyTextResponse - AnnotateTextRequest - AnnotateTextResponse -*/ -package language - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents the text encoding that the caller uses to process the output. -// Providing an `EncodingType` is recommended because the API provides the -// beginning offsets for various outputs, such as tokens and mentions, and -// languages that natively use different text encodings may access offsets -// differently. -type EncodingType int32 - -const ( - // If `EncodingType` is not specified, encoding-dependent information (such as - // `begin_offset`) will be set at `-1`. - EncodingType_NONE EncodingType = 0 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-8 encoding of the input. C++ and Go are examples of languages - // that use this encoding natively. - EncodingType_UTF8 EncodingType = 1 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-16 encoding of the input. Java and Javascript are examples of - // languages that use this encoding natively. - EncodingType_UTF16 EncodingType = 2 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-32 encoding of the input. Python is an example of a language - // that uses this encoding natively. - EncodingType_UTF32 EncodingType = 3 -) - -var EncodingType_name = map[int32]string{ - 0: "NONE", - 1: "UTF8", - 2: "UTF16", - 3: "UTF32", -} -var EncodingType_value = map[string]int32{ - "NONE": 0, - "UTF8": 1, - "UTF16": 2, - "UTF32": 3, -} - -func (x EncodingType) String() string { - return proto.EnumName(EncodingType_name, int32(x)) -} -func (EncodingType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// The document types enum. -type Document_Type int32 - -const ( - // The content type is not specified. - Document_TYPE_UNSPECIFIED Document_Type = 0 - // Plain text - Document_PLAIN_TEXT Document_Type = 1 - // HTML - Document_HTML Document_Type = 2 -) - -var Document_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "PLAIN_TEXT", - 2: "HTML", -} -var Document_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "PLAIN_TEXT": 1, - "HTML": 2, -} - -func (x Document_Type) String() string { - return proto.EnumName(Document_Type_name, int32(x)) -} -func (Document_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// The type of the entity. -type Entity_Type int32 - -const ( - // Unknown - Entity_UNKNOWN Entity_Type = 0 - // Person - Entity_PERSON Entity_Type = 1 - // Location - Entity_LOCATION Entity_Type = 2 - // Organization - Entity_ORGANIZATION Entity_Type = 3 - // Event - Entity_EVENT Entity_Type = 4 - // Work of art - Entity_WORK_OF_ART Entity_Type = 5 - // Consumer goods - Entity_CONSUMER_GOOD Entity_Type = 6 - // Other types - Entity_OTHER Entity_Type = 7 -) - -var Entity_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PERSON", - 2: "LOCATION", - 3: "ORGANIZATION", - 4: "EVENT", - 5: "WORK_OF_ART", - 6: "CONSUMER_GOOD", - 7: "OTHER", -} -var Entity_Type_value = map[string]int32{ - "UNKNOWN": 0, - "PERSON": 1, - "LOCATION": 2, - "ORGANIZATION": 3, - "EVENT": 4, - "WORK_OF_ART": 5, - "CONSUMER_GOOD": 6, - "OTHER": 7, -} - -func (x Entity_Type) String() string { - return proto.EnumName(Entity_Type_name, int32(x)) -} -func (Entity_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// The part of speech tags enum. -type PartOfSpeech_Tag int32 - -const ( - // Unknown - PartOfSpeech_UNKNOWN PartOfSpeech_Tag = 0 - // Adjective - PartOfSpeech_ADJ PartOfSpeech_Tag = 1 - // Adposition (preposition and postposition) - PartOfSpeech_ADP PartOfSpeech_Tag = 2 - // Adverb - PartOfSpeech_ADV PartOfSpeech_Tag = 3 - // Conjunction - PartOfSpeech_CONJ PartOfSpeech_Tag = 4 - // Determiner - PartOfSpeech_DET PartOfSpeech_Tag = 5 - // Noun (common and proper) - PartOfSpeech_NOUN PartOfSpeech_Tag = 6 - // Cardinal number - PartOfSpeech_NUM PartOfSpeech_Tag = 7 - // Pronoun - PartOfSpeech_PRON PartOfSpeech_Tag = 8 - // Particle or other function word - PartOfSpeech_PRT PartOfSpeech_Tag = 9 - // Punctuation - PartOfSpeech_PUNCT PartOfSpeech_Tag = 10 - // Verb (all tenses and modes) - PartOfSpeech_VERB PartOfSpeech_Tag = 11 - // Other: foreign words, typos, abbreviations - PartOfSpeech_X PartOfSpeech_Tag = 12 - // Affix - PartOfSpeech_AFFIX PartOfSpeech_Tag = 13 -) - -var PartOfSpeech_Tag_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ADJ", - 2: "ADP", - 3: "ADV", - 4: "CONJ", - 5: "DET", - 6: "NOUN", - 7: "NUM", - 8: "PRON", - 9: "PRT", - 10: "PUNCT", - 11: "VERB", - 12: "X", - 13: "AFFIX", -} -var PartOfSpeech_Tag_value = map[string]int32{ - "UNKNOWN": 0, - "ADJ": 1, - "ADP": 2, - "ADV": 3, - "CONJ": 4, - "DET": 5, - "NOUN": 6, - "NUM": 7, - "PRON": 8, - "PRT": 9, - "PUNCT": 10, - "VERB": 11, - "X": 12, - "AFFIX": 13, -} - -func (x PartOfSpeech_Tag) String() string { - return proto.EnumName(PartOfSpeech_Tag_name, int32(x)) -} -func (PartOfSpeech_Tag) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} } - -// The characteristic of a verb that expresses time flow during an event. -type PartOfSpeech_Aspect int32 - -const ( - // Aspect is not applicable in the analyzed language or is not predicted. - PartOfSpeech_ASPECT_UNKNOWN PartOfSpeech_Aspect = 0 - // Perfective - PartOfSpeech_PERFECTIVE PartOfSpeech_Aspect = 1 - // Imperfective - PartOfSpeech_IMPERFECTIVE PartOfSpeech_Aspect = 2 - // Progressive - PartOfSpeech_PROGRESSIVE PartOfSpeech_Aspect = 3 -) - -var PartOfSpeech_Aspect_name = map[int32]string{ - 0: "ASPECT_UNKNOWN", - 1: "PERFECTIVE", - 2: "IMPERFECTIVE", - 3: "PROGRESSIVE", -} -var PartOfSpeech_Aspect_value = map[string]int32{ - "ASPECT_UNKNOWN": 0, - "PERFECTIVE": 1, - "IMPERFECTIVE": 2, - "PROGRESSIVE": 3, -} - -func (x PartOfSpeech_Aspect) String() string { - return proto.EnumName(PartOfSpeech_Aspect_name, int32(x)) -} -func (PartOfSpeech_Aspect) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 1} } - -// The grammatical function performed by a noun or pronoun in a phrase, -// clause, or sentence. In some languages, other parts of speech, such as -// adjective and determiner, take case inflection in agreement with the noun. -type PartOfSpeech_Case int32 - -const ( - // Case is not applicable in the analyzed language or is not predicted. - PartOfSpeech_CASE_UNKNOWN PartOfSpeech_Case = 0 - // Accusative - PartOfSpeech_ACCUSATIVE PartOfSpeech_Case = 1 - // Adverbial - PartOfSpeech_ADVERBIAL PartOfSpeech_Case = 2 - // Complementive - PartOfSpeech_COMPLEMENTIVE PartOfSpeech_Case = 3 - // Dative - PartOfSpeech_DATIVE PartOfSpeech_Case = 4 - // Genitive - PartOfSpeech_GENITIVE PartOfSpeech_Case = 5 - // Instrumental - PartOfSpeech_INSTRUMENTAL PartOfSpeech_Case = 6 - // Locative - PartOfSpeech_LOCATIVE PartOfSpeech_Case = 7 - // Nominative - PartOfSpeech_NOMINATIVE PartOfSpeech_Case = 8 - // Oblique - PartOfSpeech_OBLIQUE PartOfSpeech_Case = 9 - // Partitive - PartOfSpeech_PARTITIVE PartOfSpeech_Case = 10 - // Prepositional - PartOfSpeech_PREPOSITIONAL PartOfSpeech_Case = 11 - // Reflexive - PartOfSpeech_REFLEXIVE_CASE PartOfSpeech_Case = 12 - // Relative - PartOfSpeech_RELATIVE_CASE PartOfSpeech_Case = 13 - // Vocative - PartOfSpeech_VOCATIVE PartOfSpeech_Case = 14 -) - -var PartOfSpeech_Case_name = map[int32]string{ - 0: "CASE_UNKNOWN", - 1: "ACCUSATIVE", - 2: "ADVERBIAL", - 3: "COMPLEMENTIVE", - 4: "DATIVE", - 5: "GENITIVE", - 6: "INSTRUMENTAL", - 7: "LOCATIVE", - 8: "NOMINATIVE", - 9: "OBLIQUE", - 10: "PARTITIVE", - 11: "PREPOSITIONAL", - 12: "REFLEXIVE_CASE", - 13: "RELATIVE_CASE", - 14: "VOCATIVE", -} -var PartOfSpeech_Case_value = map[string]int32{ - "CASE_UNKNOWN": 0, - "ACCUSATIVE": 1, - "ADVERBIAL": 2, - "COMPLEMENTIVE": 3, - "DATIVE": 4, - "GENITIVE": 5, - "INSTRUMENTAL": 6, - "LOCATIVE": 7, - "NOMINATIVE": 8, - "OBLIQUE": 9, - "PARTITIVE": 10, - "PREPOSITIONAL": 11, - "REFLEXIVE_CASE": 12, - "RELATIVE_CASE": 13, - "VOCATIVE": 14, -} - -func (x PartOfSpeech_Case) String() string { - return proto.EnumName(PartOfSpeech_Case_name, int32(x)) -} -func (PartOfSpeech_Case) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 2} } - -// Depending on the language, Form can be categorizing different forms of -// verbs, adjectives, adverbs, etc. For example, categorizing inflected -// endings of verbs and adjectives or distinguishing between short and long -// forms of adjectives and participles -type PartOfSpeech_Form int32 - -const ( - // Form is not applicable in the analyzed language or is not predicted. - PartOfSpeech_FORM_UNKNOWN PartOfSpeech_Form = 0 - // Adnomial - PartOfSpeech_ADNOMIAL PartOfSpeech_Form = 1 - // Auxiliary - PartOfSpeech_AUXILIARY PartOfSpeech_Form = 2 - // Complementizer - PartOfSpeech_COMPLEMENTIZER PartOfSpeech_Form = 3 - // Final ending - PartOfSpeech_FINAL_ENDING PartOfSpeech_Form = 4 - // Gerund - PartOfSpeech_GERUND PartOfSpeech_Form = 5 - // Realis - PartOfSpeech_REALIS PartOfSpeech_Form = 6 - // Irrealis - PartOfSpeech_IRREALIS PartOfSpeech_Form = 7 - // Short form - PartOfSpeech_SHORT PartOfSpeech_Form = 8 - // Long form - PartOfSpeech_LONG PartOfSpeech_Form = 9 - // Order form - PartOfSpeech_ORDER PartOfSpeech_Form = 10 - // Specific form - PartOfSpeech_SPECIFIC PartOfSpeech_Form = 11 -) - -var PartOfSpeech_Form_name = map[int32]string{ - 0: "FORM_UNKNOWN", - 1: "ADNOMIAL", - 2: "AUXILIARY", - 3: "COMPLEMENTIZER", - 4: "FINAL_ENDING", - 5: "GERUND", - 6: "REALIS", - 7: "IRREALIS", - 8: "SHORT", - 9: "LONG", - 10: "ORDER", - 11: "SPECIFIC", -} -var PartOfSpeech_Form_value = map[string]int32{ - "FORM_UNKNOWN": 0, - "ADNOMIAL": 1, - "AUXILIARY": 2, - "COMPLEMENTIZER": 3, - "FINAL_ENDING": 4, - "GERUND": 5, - "REALIS": 6, - "IRREALIS": 7, - "SHORT": 8, - "LONG": 9, - "ORDER": 10, - "SPECIFIC": 11, -} - -func (x PartOfSpeech_Form) String() string { - return proto.EnumName(PartOfSpeech_Form_name, int32(x)) -} -func (PartOfSpeech_Form) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 3} } - -// Gender classes of nouns reflected in the behaviour of associated words. -type PartOfSpeech_Gender int32 - -const ( - // Gender is not applicable in the analyzed language or is not predicted. - PartOfSpeech_GENDER_UNKNOWN PartOfSpeech_Gender = 0 - // Feminine - PartOfSpeech_FEMININE PartOfSpeech_Gender = 1 - // Masculine - PartOfSpeech_MASCULINE PartOfSpeech_Gender = 2 - // Neuter - PartOfSpeech_NEUTER PartOfSpeech_Gender = 3 -) - -var PartOfSpeech_Gender_name = map[int32]string{ - 0: "GENDER_UNKNOWN", - 1: "FEMININE", - 2: "MASCULINE", - 3: "NEUTER", -} -var PartOfSpeech_Gender_value = map[string]int32{ - "GENDER_UNKNOWN": 0, - "FEMININE": 1, - "MASCULINE": 2, - "NEUTER": 3, -} - -func (x PartOfSpeech_Gender) String() string { - return proto.EnumName(PartOfSpeech_Gender_name, int32(x)) -} -func (PartOfSpeech_Gender) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 4} } - -// The grammatical feature of verbs, used for showing modality and attitude. -type PartOfSpeech_Mood int32 - -const ( - // Mood is not applicable in the analyzed language or is not predicted. - PartOfSpeech_MOOD_UNKNOWN PartOfSpeech_Mood = 0 - // Conditional - PartOfSpeech_CONDITIONAL_MOOD PartOfSpeech_Mood = 1 - // Imperative - PartOfSpeech_IMPERATIVE PartOfSpeech_Mood = 2 - // Indicative - PartOfSpeech_INDICATIVE PartOfSpeech_Mood = 3 - // Interrogative - PartOfSpeech_INTERROGATIVE PartOfSpeech_Mood = 4 - // Jussive - PartOfSpeech_JUSSIVE PartOfSpeech_Mood = 5 - // Subjunctive - PartOfSpeech_SUBJUNCTIVE PartOfSpeech_Mood = 6 -) - -var PartOfSpeech_Mood_name = map[int32]string{ - 0: "MOOD_UNKNOWN", - 1: "CONDITIONAL_MOOD", - 2: "IMPERATIVE", - 3: "INDICATIVE", - 4: "INTERROGATIVE", - 5: "JUSSIVE", - 6: "SUBJUNCTIVE", -} -var PartOfSpeech_Mood_value = map[string]int32{ - "MOOD_UNKNOWN": 0, - "CONDITIONAL_MOOD": 1, - "IMPERATIVE": 2, - "INDICATIVE": 3, - "INTERROGATIVE": 4, - "JUSSIVE": 5, - "SUBJUNCTIVE": 6, -} - -func (x PartOfSpeech_Mood) String() string { - return proto.EnumName(PartOfSpeech_Mood_name, int32(x)) -} -func (PartOfSpeech_Mood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 5} } - -// Count distinctions. -type PartOfSpeech_Number int32 - -const ( - // Number is not applicable in the analyzed language or is not predicted. - PartOfSpeech_NUMBER_UNKNOWN PartOfSpeech_Number = 0 - // Singular - PartOfSpeech_SINGULAR PartOfSpeech_Number = 1 - // Plural - PartOfSpeech_PLURAL PartOfSpeech_Number = 2 - // Dual - PartOfSpeech_DUAL PartOfSpeech_Number = 3 -) - -var PartOfSpeech_Number_name = map[int32]string{ - 0: "NUMBER_UNKNOWN", - 1: "SINGULAR", - 2: "PLURAL", - 3: "DUAL", -} -var PartOfSpeech_Number_value = map[string]int32{ - "NUMBER_UNKNOWN": 0, - "SINGULAR": 1, - "PLURAL": 2, - "DUAL": 3, -} - -func (x PartOfSpeech_Number) String() string { - return proto.EnumName(PartOfSpeech_Number_name, int32(x)) -} -func (PartOfSpeech_Number) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 6} } - -// The distinction between the speaker, second person, third person, etc. -type PartOfSpeech_Person int32 - -const ( - // Person is not applicable in the analyzed language or is not predicted. - PartOfSpeech_PERSON_UNKNOWN PartOfSpeech_Person = 0 - // First - PartOfSpeech_FIRST PartOfSpeech_Person = 1 - // Second - PartOfSpeech_SECOND PartOfSpeech_Person = 2 - // Third - PartOfSpeech_THIRD PartOfSpeech_Person = 3 - // Reflexive - PartOfSpeech_REFLEXIVE_PERSON PartOfSpeech_Person = 4 -) - -var PartOfSpeech_Person_name = map[int32]string{ - 0: "PERSON_UNKNOWN", - 1: "FIRST", - 2: "SECOND", - 3: "THIRD", - 4: "REFLEXIVE_PERSON", -} -var PartOfSpeech_Person_value = map[string]int32{ - "PERSON_UNKNOWN": 0, - "FIRST": 1, - "SECOND": 2, - "THIRD": 3, - "REFLEXIVE_PERSON": 4, -} - -func (x PartOfSpeech_Person) String() string { - return proto.EnumName(PartOfSpeech_Person_name, int32(x)) -} -func (PartOfSpeech_Person) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 7} } - -// This category shows if the token is part of a proper name. -type PartOfSpeech_Proper int32 - -const ( - // Proper is not applicable in the analyzed language or is not predicted. - PartOfSpeech_PROPER_UNKNOWN PartOfSpeech_Proper = 0 - // Proper - PartOfSpeech_PROPER PartOfSpeech_Proper = 1 - // Not proper - PartOfSpeech_NOT_PROPER PartOfSpeech_Proper = 2 -) - -var PartOfSpeech_Proper_name = map[int32]string{ - 0: "PROPER_UNKNOWN", - 1: "PROPER", - 2: "NOT_PROPER", -} -var PartOfSpeech_Proper_value = map[string]int32{ - "PROPER_UNKNOWN": 0, - "PROPER": 1, - "NOT_PROPER": 2, -} - -func (x PartOfSpeech_Proper) String() string { - return proto.EnumName(PartOfSpeech_Proper_name, int32(x)) -} -func (PartOfSpeech_Proper) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 8} } - -// Reciprocal features of a pronoun. -type PartOfSpeech_Reciprocity int32 - -const ( - // Reciprocity is not applicable in the analyzed language or is not - // predicted. - PartOfSpeech_RECIPROCITY_UNKNOWN PartOfSpeech_Reciprocity = 0 - // Reciprocal - PartOfSpeech_RECIPROCAL PartOfSpeech_Reciprocity = 1 - // Non-reciprocal - PartOfSpeech_NON_RECIPROCAL PartOfSpeech_Reciprocity = 2 -) - -var PartOfSpeech_Reciprocity_name = map[int32]string{ - 0: "RECIPROCITY_UNKNOWN", - 1: "RECIPROCAL", - 2: "NON_RECIPROCAL", -} -var PartOfSpeech_Reciprocity_value = map[string]int32{ - "RECIPROCITY_UNKNOWN": 0, - "RECIPROCAL": 1, - "NON_RECIPROCAL": 2, -} - -func (x PartOfSpeech_Reciprocity) String() string { - return proto.EnumName(PartOfSpeech_Reciprocity_name, int32(x)) -} -func (PartOfSpeech_Reciprocity) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 9} } - -// Time reference. -type PartOfSpeech_Tense int32 - -const ( - // Tense is not applicable in the analyzed language or is not predicted. - PartOfSpeech_TENSE_UNKNOWN PartOfSpeech_Tense = 0 - // Conditional - PartOfSpeech_CONDITIONAL_TENSE PartOfSpeech_Tense = 1 - // Future - PartOfSpeech_FUTURE PartOfSpeech_Tense = 2 - // Past - PartOfSpeech_PAST PartOfSpeech_Tense = 3 - // Present - PartOfSpeech_PRESENT PartOfSpeech_Tense = 4 - // Imperfect - PartOfSpeech_IMPERFECT PartOfSpeech_Tense = 5 - // Pluperfect - PartOfSpeech_PLUPERFECT PartOfSpeech_Tense = 6 -) - -var PartOfSpeech_Tense_name = map[int32]string{ - 0: "TENSE_UNKNOWN", - 1: "CONDITIONAL_TENSE", - 2: "FUTURE", - 3: "PAST", - 4: "PRESENT", - 5: "IMPERFECT", - 6: "PLUPERFECT", -} -var PartOfSpeech_Tense_value = map[string]int32{ - "TENSE_UNKNOWN": 0, - "CONDITIONAL_TENSE": 1, - "FUTURE": 2, - "PAST": 3, - "PRESENT": 4, - "IMPERFECT": 5, - "PLUPERFECT": 6, -} - -func (x PartOfSpeech_Tense) String() string { - return proto.EnumName(PartOfSpeech_Tense_name, int32(x)) -} -func (PartOfSpeech_Tense) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 10} } - -// The relationship between the action that a verb expresses and the -// participants identified by its arguments. -type PartOfSpeech_Voice int32 - -const ( - // Voice is not applicable in the analyzed language or is not predicted. - PartOfSpeech_VOICE_UNKNOWN PartOfSpeech_Voice = 0 - // Active - PartOfSpeech_ACTIVE PartOfSpeech_Voice = 1 - // Causative - PartOfSpeech_CAUSATIVE PartOfSpeech_Voice = 2 - // Passive - PartOfSpeech_PASSIVE PartOfSpeech_Voice = 3 -) - -var PartOfSpeech_Voice_name = map[int32]string{ - 0: "VOICE_UNKNOWN", - 1: "ACTIVE", - 2: "CAUSATIVE", - 3: "PASSIVE", -} -var PartOfSpeech_Voice_value = map[string]int32{ - "VOICE_UNKNOWN": 0, - "ACTIVE": 1, - "CAUSATIVE": 2, - "PASSIVE": 3, -} - -func (x PartOfSpeech_Voice) String() string { - return proto.EnumName(PartOfSpeech_Voice_name, int32(x)) -} -func (PartOfSpeech_Voice) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 11} } - -// The parse label enum for the token. -type DependencyEdge_Label int32 - -const ( - // Unknown - DependencyEdge_UNKNOWN DependencyEdge_Label = 0 - // Abbreviation modifier - DependencyEdge_ABBREV DependencyEdge_Label = 1 - // Adjectival complement - DependencyEdge_ACOMP DependencyEdge_Label = 2 - // Adverbial clause modifier - DependencyEdge_ADVCL DependencyEdge_Label = 3 - // Adverbial modifier - DependencyEdge_ADVMOD DependencyEdge_Label = 4 - // Adjectival modifier of an NP - DependencyEdge_AMOD DependencyEdge_Label = 5 - // Appositional modifier of an NP - DependencyEdge_APPOS DependencyEdge_Label = 6 - // Attribute dependent of a copular verb - DependencyEdge_ATTR DependencyEdge_Label = 7 - // Auxiliary (non-main) verb - DependencyEdge_AUX DependencyEdge_Label = 8 - // Passive auxiliary - DependencyEdge_AUXPASS DependencyEdge_Label = 9 - // Coordinating conjunction - DependencyEdge_CC DependencyEdge_Label = 10 - // Clausal complement of a verb or adjective - DependencyEdge_CCOMP DependencyEdge_Label = 11 - // Conjunct - DependencyEdge_CONJ DependencyEdge_Label = 12 - // Clausal subject - DependencyEdge_CSUBJ DependencyEdge_Label = 13 - // Clausal passive subject - DependencyEdge_CSUBJPASS DependencyEdge_Label = 14 - // Dependency (unable to determine) - DependencyEdge_DEP DependencyEdge_Label = 15 - // Determiner - DependencyEdge_DET DependencyEdge_Label = 16 - // Discourse - DependencyEdge_DISCOURSE DependencyEdge_Label = 17 - // Direct object - DependencyEdge_DOBJ DependencyEdge_Label = 18 - // Expletive - DependencyEdge_EXPL DependencyEdge_Label = 19 - // Goes with (part of a word in a text not well edited) - DependencyEdge_GOESWITH DependencyEdge_Label = 20 - // Indirect object - DependencyEdge_IOBJ DependencyEdge_Label = 21 - // Marker (word introducing a subordinate clause) - DependencyEdge_MARK DependencyEdge_Label = 22 - // Multi-word expression - DependencyEdge_MWE DependencyEdge_Label = 23 - // Multi-word verbal expression - DependencyEdge_MWV DependencyEdge_Label = 24 - // Negation modifier - DependencyEdge_NEG DependencyEdge_Label = 25 - // Noun compound modifier - DependencyEdge_NN DependencyEdge_Label = 26 - // Noun phrase used as an adverbial modifier - DependencyEdge_NPADVMOD DependencyEdge_Label = 27 - // Nominal subject - DependencyEdge_NSUBJ DependencyEdge_Label = 28 - // Passive nominal subject - DependencyEdge_NSUBJPASS DependencyEdge_Label = 29 - // Numeric modifier of a noun - DependencyEdge_NUM DependencyEdge_Label = 30 - // Element of compound number - DependencyEdge_NUMBER DependencyEdge_Label = 31 - // Punctuation mark - DependencyEdge_P DependencyEdge_Label = 32 - // Parataxis relation - DependencyEdge_PARATAXIS DependencyEdge_Label = 33 - // Participial modifier - DependencyEdge_PARTMOD DependencyEdge_Label = 34 - // The complement of a preposition is a clause - DependencyEdge_PCOMP DependencyEdge_Label = 35 - // Object of a preposition - DependencyEdge_POBJ DependencyEdge_Label = 36 - // Possession modifier - DependencyEdge_POSS DependencyEdge_Label = 37 - // Postverbal negative particle - DependencyEdge_POSTNEG DependencyEdge_Label = 38 - // Predicate complement - DependencyEdge_PRECOMP DependencyEdge_Label = 39 - // Preconjunt - DependencyEdge_PRECONJ DependencyEdge_Label = 40 - // Predeterminer - DependencyEdge_PREDET DependencyEdge_Label = 41 - // Prefix - DependencyEdge_PREF DependencyEdge_Label = 42 - // Prepositional modifier - DependencyEdge_PREP DependencyEdge_Label = 43 - // The relationship between a verb and verbal morpheme - DependencyEdge_PRONL DependencyEdge_Label = 44 - // Particle - DependencyEdge_PRT DependencyEdge_Label = 45 - // Associative or possessive marker - DependencyEdge_PS DependencyEdge_Label = 46 - // Quantifier phrase modifier - DependencyEdge_QUANTMOD DependencyEdge_Label = 47 - // Relative clause modifier - DependencyEdge_RCMOD DependencyEdge_Label = 48 - // Complementizer in relative clause - DependencyEdge_RCMODREL DependencyEdge_Label = 49 - // Ellipsis without a preceding predicate - DependencyEdge_RDROP DependencyEdge_Label = 50 - // Referent - DependencyEdge_REF DependencyEdge_Label = 51 - // Remnant - DependencyEdge_REMNANT DependencyEdge_Label = 52 - // Reparandum - DependencyEdge_REPARANDUM DependencyEdge_Label = 53 - // Root - DependencyEdge_ROOT DependencyEdge_Label = 54 - // Suffix specifying a unit of number - DependencyEdge_SNUM DependencyEdge_Label = 55 - // Suffix - DependencyEdge_SUFF DependencyEdge_Label = 56 - // Temporal modifier - DependencyEdge_TMOD DependencyEdge_Label = 57 - // Topic marker - DependencyEdge_TOPIC DependencyEdge_Label = 58 - // Clause headed by an infinite form of the verb that modifies a noun - DependencyEdge_VMOD DependencyEdge_Label = 59 - // Vocative - DependencyEdge_VOCATIVE DependencyEdge_Label = 60 - // Open clausal complement - DependencyEdge_XCOMP DependencyEdge_Label = 61 - // Name suffix - DependencyEdge_SUFFIX DependencyEdge_Label = 62 - // Name title - DependencyEdge_TITLE DependencyEdge_Label = 63 - // Adverbial phrase modifier - DependencyEdge_ADVPHMOD DependencyEdge_Label = 64 - // Causative auxiliary - DependencyEdge_AUXCAUS DependencyEdge_Label = 65 - // Helper auxiliary - DependencyEdge_AUXVV DependencyEdge_Label = 66 - // Rentaishi (Prenominal modifier) - DependencyEdge_DTMOD DependencyEdge_Label = 67 - // Foreign words - DependencyEdge_FOREIGN DependencyEdge_Label = 68 - // Keyword - DependencyEdge_KW DependencyEdge_Label = 69 - // List for chains of comparable items - DependencyEdge_LIST DependencyEdge_Label = 70 - // Nominalized clause - DependencyEdge_NOMC DependencyEdge_Label = 71 - // Nominalized clausal subject - DependencyEdge_NOMCSUBJ DependencyEdge_Label = 72 - // Nominalized clausal passive - DependencyEdge_NOMCSUBJPASS DependencyEdge_Label = 73 - // Compound of numeric modifier - DependencyEdge_NUMC DependencyEdge_Label = 74 - // Copula - DependencyEdge_COP DependencyEdge_Label = 75 - // Dislocated relation (for fronted/topicalized elements) - DependencyEdge_DISLOCATED DependencyEdge_Label = 76 - // Aspect marker - DependencyEdge_ASP DependencyEdge_Label = 77 - // Genitive modifier - DependencyEdge_GMOD DependencyEdge_Label = 78 - // Genitive object - DependencyEdge_GOBJ DependencyEdge_Label = 79 - // Infinitival modifier - DependencyEdge_INFMOD DependencyEdge_Label = 80 - // Measure - DependencyEdge_MES DependencyEdge_Label = 81 - // Nominal complement of a noun - DependencyEdge_NCOMP DependencyEdge_Label = 82 -) - -var DependencyEdge_Label_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ABBREV", - 2: "ACOMP", - 3: "ADVCL", - 4: "ADVMOD", - 5: "AMOD", - 6: "APPOS", - 7: "ATTR", - 8: "AUX", - 9: "AUXPASS", - 10: "CC", - 11: "CCOMP", - 12: "CONJ", - 13: "CSUBJ", - 14: "CSUBJPASS", - 15: "DEP", - 16: "DET", - 17: "DISCOURSE", - 18: "DOBJ", - 19: "EXPL", - 20: "GOESWITH", - 21: "IOBJ", - 22: "MARK", - 23: "MWE", - 24: "MWV", - 25: "NEG", - 26: "NN", - 27: "NPADVMOD", - 28: "NSUBJ", - 29: "NSUBJPASS", - 30: "NUM", - 31: "NUMBER", - 32: "P", - 33: "PARATAXIS", - 34: "PARTMOD", - 35: "PCOMP", - 36: "POBJ", - 37: "POSS", - 38: "POSTNEG", - 39: "PRECOMP", - 40: "PRECONJ", - 41: "PREDET", - 42: "PREF", - 43: "PREP", - 44: "PRONL", - 45: "PRT", - 46: "PS", - 47: "QUANTMOD", - 48: "RCMOD", - 49: "RCMODREL", - 50: "RDROP", - 51: "REF", - 52: "REMNANT", - 53: "REPARANDUM", - 54: "ROOT", - 55: "SNUM", - 56: "SUFF", - 57: "TMOD", - 58: "TOPIC", - 59: "VMOD", - 60: "VOCATIVE", - 61: "XCOMP", - 62: "SUFFIX", - 63: "TITLE", - 64: "ADVPHMOD", - 65: "AUXCAUS", - 66: "AUXVV", - 67: "DTMOD", - 68: "FOREIGN", - 69: "KW", - 70: "LIST", - 71: "NOMC", - 72: "NOMCSUBJ", - 73: "NOMCSUBJPASS", - 74: "NUMC", - 75: "COP", - 76: "DISLOCATED", - 77: "ASP", - 78: "GMOD", - 79: "GOBJ", - 80: "INFMOD", - 81: "MES", - 82: "NCOMP", -} -var DependencyEdge_Label_value = map[string]int32{ - "UNKNOWN": 0, - "ABBREV": 1, - "ACOMP": 2, - "ADVCL": 3, - "ADVMOD": 4, - "AMOD": 5, - "APPOS": 6, - "ATTR": 7, - "AUX": 8, - "AUXPASS": 9, - "CC": 10, - "CCOMP": 11, - "CONJ": 12, - "CSUBJ": 13, - "CSUBJPASS": 14, - "DEP": 15, - "DET": 16, - "DISCOURSE": 17, - "DOBJ": 18, - "EXPL": 19, - "GOESWITH": 20, - "IOBJ": 21, - "MARK": 22, - "MWE": 23, - "MWV": 24, - "NEG": 25, - "NN": 26, - "NPADVMOD": 27, - "NSUBJ": 28, - "NSUBJPASS": 29, - "NUM": 30, - "NUMBER": 31, - "P": 32, - "PARATAXIS": 33, - "PARTMOD": 34, - "PCOMP": 35, - "POBJ": 36, - "POSS": 37, - "POSTNEG": 38, - "PRECOMP": 39, - "PRECONJ": 40, - "PREDET": 41, - "PREF": 42, - "PREP": 43, - "PRONL": 44, - "PRT": 45, - "PS": 46, - "QUANTMOD": 47, - "RCMOD": 48, - "RCMODREL": 49, - "RDROP": 50, - "REF": 51, - "REMNANT": 52, - "REPARANDUM": 53, - "ROOT": 54, - "SNUM": 55, - "SUFF": 56, - "TMOD": 57, - "TOPIC": 58, - "VMOD": 59, - "VOCATIVE": 60, - "XCOMP": 61, - "SUFFIX": 62, - "TITLE": 63, - "ADVPHMOD": 64, - "AUXCAUS": 65, - "AUXVV": 66, - "DTMOD": 67, - "FOREIGN": 68, - "KW": 69, - "LIST": 70, - "NOMC": 71, - "NOMCSUBJ": 72, - "NOMCSUBJPASS": 73, - "NUMC": 74, - "COP": 75, - "DISLOCATED": 76, - "ASP": 77, - "GMOD": 78, - "GOBJ": 79, - "INFMOD": 80, - "MES": 81, - "NCOMP": 82, -} - -func (x DependencyEdge_Label) String() string { - return proto.EnumName(DependencyEdge_Label_name, int32(x)) -} -func (DependencyEdge_Label) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6, 0} } - -// The supported types of mentions. -type EntityMention_Type int32 - -const ( - // Unknown - EntityMention_TYPE_UNKNOWN EntityMention_Type = 0 - // Proper name - EntityMention_PROPER EntityMention_Type = 1 - // Common noun (or noun compound) - EntityMention_COMMON EntityMention_Type = 2 -) - -var EntityMention_Type_name = map[int32]string{ - 0: "TYPE_UNKNOWN", - 1: "PROPER", - 2: "COMMON", -} -var EntityMention_Type_value = map[string]int32{ - "TYPE_UNKNOWN": 0, - "PROPER": 1, - "COMMON": 2, -} - -func (x EntityMention_Type) String() string { - return proto.EnumName(EntityMention_Type_name, int32(x)) -} -func (EntityMention_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -// ################################################################ # -// -// Represents the input to API methods. -type Document struct { - // Required. If the type is not set or is `TYPE_UNSPECIFIED`, - // returns an `INVALID_ARGUMENT` error. - Type Document_Type `protobuf:"varint,1,opt,name=type,enum=google.cloud.language.v1.Document_Type" json:"type,omitempty"` - // The source of the document: a string containing the content or a - // Google Cloud Storage URI. - // - // Types that are valid to be assigned to Source: - // *Document_Content - // *Document_GcsContentUri - Source isDocument_Source `protobuf_oneof:"source"` - // The language of the document (if not specified, the language is - // automatically detected). Both ISO and BCP-47 language codes are - // accepted.<br> - // [Language Support](/natural-language/docs/languages) - // lists currently supported languages for each API method. - // If the language (either specified by the caller or automatically detected) - // is not supported by the called API method, an `INVALID_ARGUMENT` error - // is returned. - Language string `protobuf:"bytes,4,opt,name=language" json:"language,omitempty"` -} - -func (m *Document) Reset() { *m = Document{} } -func (m *Document) String() string { return proto.CompactTextString(m) } -func (*Document) ProtoMessage() {} -func (*Document) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isDocument_Source interface { - isDocument_Source() -} - -type Document_Content struct { - Content string `protobuf:"bytes,2,opt,name=content,oneof"` -} -type Document_GcsContentUri struct { - GcsContentUri string `protobuf:"bytes,3,opt,name=gcs_content_uri,json=gcsContentUri,oneof"` -} - -func (*Document_Content) isDocument_Source() {} -func (*Document_GcsContentUri) isDocument_Source() {} - -func (m *Document) GetSource() isDocument_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *Document) GetType() Document_Type { - if m != nil { - return m.Type - } - return Document_TYPE_UNSPECIFIED -} - -func (m *Document) GetContent() string { - if x, ok := m.GetSource().(*Document_Content); ok { - return x.Content - } - return "" -} - -func (m *Document) GetGcsContentUri() string { - if x, ok := m.GetSource().(*Document_GcsContentUri); ok { - return x.GcsContentUri - } - return "" -} - -func (m *Document) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Document) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Document_OneofMarshaler, _Document_OneofUnmarshaler, _Document_OneofSizer, []interface{}{ - (*Document_Content)(nil), - (*Document_GcsContentUri)(nil), - } -} - -func _Document_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Document) - // source - switch x := m.Source.(type) { - case *Document_Content: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Content) - case *Document_GcsContentUri: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.GcsContentUri) - case nil: - default: - return fmt.Errorf("Document.Source has unexpected type %T", x) - } - return nil -} - -func _Document_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Document) - switch tag { - case 2: // source.content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Source = &Document_Content{x} - return true, err - case 3: // source.gcs_content_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Source = &Document_GcsContentUri{x} - return true, err - default: - return false, nil - } -} - -func _Document_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Document) - // source - switch x := m.Source.(type) { - case *Document_Content: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Content))) - n += len(x.Content) - case *Document_GcsContentUri: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.GcsContentUri))) - n += len(x.GcsContentUri) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents a sentence in the input document. -type Sentence struct { - // The sentence text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // For calls to [AnalyzeSentiment][] or if - // [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_document_sentiment] is set to - // true, this field will contain the sentiment for the sentence. - Sentiment *Sentiment `protobuf:"bytes,2,opt,name=sentiment" json:"sentiment,omitempty"` -} - -func (m *Sentence) Reset() { *m = Sentence{} } -func (m *Sentence) String() string { return proto.CompactTextString(m) } -func (*Sentence) ProtoMessage() {} -func (*Sentence) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Sentence) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *Sentence) GetSentiment() *Sentiment { - if m != nil { - return m.Sentiment - } - return nil -} - -// Represents a phrase in the text that is a known entity, such as -// a person, an organization, or location. The API associates information, such -// as salience and mentions, with entities. -type Entity struct { - // The representative name for the entity. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The entity type. - Type Entity_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.language.v1.Entity_Type" json:"type,omitempty"` - // Metadata associated with the entity. - // - // Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if - // available. The associated keys are "wikipedia_url" and "mid", respectively. - Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The salience score associated with the entity in the [0, 1.0] range. - // - // The salience score for an entity provides information about the - // importance or centrality of that entity to the entire document text. - // Scores closer to 0 are less salient, while scores closer to 1.0 are highly - // salient. - Salience float32 `protobuf:"fixed32,4,opt,name=salience" json:"salience,omitempty"` - // The mentions of this entity in the input document. The API currently - // supports proper noun mentions. - Mentions []*EntityMention `protobuf:"bytes,5,rep,name=mentions" json:"mentions,omitempty"` - // For calls to [AnalyzeEntitySentiment][] or if - // [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_entity_sentiment] is set to - // true, this field will contain the aggregate sentiment expressed for this - // entity in the provided document. - Sentiment *Sentiment `protobuf:"bytes,6,opt,name=sentiment" json:"sentiment,omitempty"` -} - -func (m *Entity) Reset() { *m = Entity{} } -func (m *Entity) String() string { return proto.CompactTextString(m) } -func (*Entity) ProtoMessage() {} -func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Entity) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Entity) GetType() Entity_Type { - if m != nil { - return m.Type - } - return Entity_UNKNOWN -} - -func (m *Entity) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *Entity) GetSalience() float32 { - if m != nil { - return m.Salience - } - return 0 -} - -func (m *Entity) GetMentions() []*EntityMention { - if m != nil { - return m.Mentions - } - return nil -} - -func (m *Entity) GetSentiment() *Sentiment { - if m != nil { - return m.Sentiment - } - return nil -} - -// Represents the smallest syntactic building block of the text. -type Token struct { - // The token text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // Parts of speech tag for this token. - PartOfSpeech *PartOfSpeech `protobuf:"bytes,2,opt,name=part_of_speech,json=partOfSpeech" json:"part_of_speech,omitempty"` - // Dependency tree parse for this token. - DependencyEdge *DependencyEdge `protobuf:"bytes,3,opt,name=dependency_edge,json=dependencyEdge" json:"dependency_edge,omitempty"` - // [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token. - Lemma string `protobuf:"bytes,4,opt,name=lemma" json:"lemma,omitempty"` -} - -func (m *Token) Reset() { *m = Token{} } -func (m *Token) String() string { return proto.CompactTextString(m) } -func (*Token) ProtoMessage() {} -func (*Token) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Token) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *Token) GetPartOfSpeech() *PartOfSpeech { - if m != nil { - return m.PartOfSpeech - } - return nil -} - -func (m *Token) GetDependencyEdge() *DependencyEdge { - if m != nil { - return m.DependencyEdge - } - return nil -} - -func (m *Token) GetLemma() string { - if m != nil { - return m.Lemma - } - return "" -} - -// Represents the feeling associated with the entire text or entities in -// the text. -type Sentiment struct { - // A non-negative number in the [0, +inf) range, which represents - // the absolute magnitude of sentiment regardless of score (positive or - // negative). - Magnitude float32 `protobuf:"fixed32,2,opt,name=magnitude" json:"magnitude,omitempty"` - // Sentiment score between -1.0 (negative sentiment) and 1.0 - // (positive sentiment). - Score float32 `protobuf:"fixed32,3,opt,name=score" json:"score,omitempty"` -} - -func (m *Sentiment) Reset() { *m = Sentiment{} } -func (m *Sentiment) String() string { return proto.CompactTextString(m) } -func (*Sentiment) ProtoMessage() {} -func (*Sentiment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Sentiment) GetMagnitude() float32 { - if m != nil { - return m.Magnitude - } - return 0 -} - -func (m *Sentiment) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -// Represents part of speech information for a token. Parts of speech -// are as defined in -// http://www.lrec-conf.org/proceedings/lrec2012/pdf/274_Paper.pdf -type PartOfSpeech struct { - // The part of speech tag. - Tag PartOfSpeech_Tag `protobuf:"varint,1,opt,name=tag,enum=google.cloud.language.v1.PartOfSpeech_Tag" json:"tag,omitempty"` - // The grammatical aspect. - Aspect PartOfSpeech_Aspect `protobuf:"varint,2,opt,name=aspect,enum=google.cloud.language.v1.PartOfSpeech_Aspect" json:"aspect,omitempty"` - // The grammatical case. - Case PartOfSpeech_Case `protobuf:"varint,3,opt,name=case,enum=google.cloud.language.v1.PartOfSpeech_Case" json:"case,omitempty"` - // The grammatical form. - Form PartOfSpeech_Form `protobuf:"varint,4,opt,name=form,enum=google.cloud.language.v1.PartOfSpeech_Form" json:"form,omitempty"` - // The grammatical gender. - Gender PartOfSpeech_Gender `protobuf:"varint,5,opt,name=gender,enum=google.cloud.language.v1.PartOfSpeech_Gender" json:"gender,omitempty"` - // The grammatical mood. - Mood PartOfSpeech_Mood `protobuf:"varint,6,opt,name=mood,enum=google.cloud.language.v1.PartOfSpeech_Mood" json:"mood,omitempty"` - // The grammatical number. - Number PartOfSpeech_Number `protobuf:"varint,7,opt,name=number,enum=google.cloud.language.v1.PartOfSpeech_Number" json:"number,omitempty"` - // The grammatical person. - Person PartOfSpeech_Person `protobuf:"varint,8,opt,name=person,enum=google.cloud.language.v1.PartOfSpeech_Person" json:"person,omitempty"` - // The grammatical properness. - Proper PartOfSpeech_Proper `protobuf:"varint,9,opt,name=proper,enum=google.cloud.language.v1.PartOfSpeech_Proper" json:"proper,omitempty"` - // The grammatical reciprocity. - Reciprocity PartOfSpeech_Reciprocity `protobuf:"varint,10,opt,name=reciprocity,enum=google.cloud.language.v1.PartOfSpeech_Reciprocity" json:"reciprocity,omitempty"` - // The grammatical tense. - Tense PartOfSpeech_Tense `protobuf:"varint,11,opt,name=tense,enum=google.cloud.language.v1.PartOfSpeech_Tense" json:"tense,omitempty"` - // The grammatical voice. - Voice PartOfSpeech_Voice `protobuf:"varint,12,opt,name=voice,enum=google.cloud.language.v1.PartOfSpeech_Voice" json:"voice,omitempty"` -} - -func (m *PartOfSpeech) Reset() { *m = PartOfSpeech{} } -func (m *PartOfSpeech) String() string { return proto.CompactTextString(m) } -func (*PartOfSpeech) ProtoMessage() {} -func (*PartOfSpeech) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *PartOfSpeech) GetTag() PartOfSpeech_Tag { - if m != nil { - return m.Tag - } - return PartOfSpeech_UNKNOWN -} - -func (m *PartOfSpeech) GetAspect() PartOfSpeech_Aspect { - if m != nil { - return m.Aspect - } - return PartOfSpeech_ASPECT_UNKNOWN -} - -func (m *PartOfSpeech) GetCase() PartOfSpeech_Case { - if m != nil { - return m.Case - } - return PartOfSpeech_CASE_UNKNOWN -} - -func (m *PartOfSpeech) GetForm() PartOfSpeech_Form { - if m != nil { - return m.Form - } - return PartOfSpeech_FORM_UNKNOWN -} - -func (m *PartOfSpeech) GetGender() PartOfSpeech_Gender { - if m != nil { - return m.Gender - } - return PartOfSpeech_GENDER_UNKNOWN -} - -func (m *PartOfSpeech) GetMood() PartOfSpeech_Mood { - if m != nil { - return m.Mood - } - return PartOfSpeech_MOOD_UNKNOWN -} - -func (m *PartOfSpeech) GetNumber() PartOfSpeech_Number { - if m != nil { - return m.Number - } - return PartOfSpeech_NUMBER_UNKNOWN -} - -func (m *PartOfSpeech) GetPerson() PartOfSpeech_Person { - if m != nil { - return m.Person - } - return PartOfSpeech_PERSON_UNKNOWN -} - -func (m *PartOfSpeech) GetProper() PartOfSpeech_Proper { - if m != nil { - return m.Proper - } - return PartOfSpeech_PROPER_UNKNOWN -} - -func (m *PartOfSpeech) GetReciprocity() PartOfSpeech_Reciprocity { - if m != nil { - return m.Reciprocity - } - return PartOfSpeech_RECIPROCITY_UNKNOWN -} - -func (m *PartOfSpeech) GetTense() PartOfSpeech_Tense { - if m != nil { - return m.Tense - } - return PartOfSpeech_TENSE_UNKNOWN -} - -func (m *PartOfSpeech) GetVoice() PartOfSpeech_Voice { - if m != nil { - return m.Voice - } - return PartOfSpeech_VOICE_UNKNOWN -} - -// Represents dependency parse tree information for a token. (For more -// information on dependency labels, see -// http://www.aclweb.org/anthology/P13-2017 -type DependencyEdge struct { - // Represents the head of this token in the dependency tree. - // This is the index of the token which has an arc going to this token. - // The index is the position of the token in the array of tokens returned - // by the API method. If this token is a root token, then the - // `head_token_index` is its own index. - HeadTokenIndex int32 `protobuf:"varint,1,opt,name=head_token_index,json=headTokenIndex" json:"head_token_index,omitempty"` - // The parse label for the token. - Label DependencyEdge_Label `protobuf:"varint,2,opt,name=label,enum=google.cloud.language.v1.DependencyEdge_Label" json:"label,omitempty"` -} - -func (m *DependencyEdge) Reset() { *m = DependencyEdge{} } -func (m *DependencyEdge) String() string { return proto.CompactTextString(m) } -func (*DependencyEdge) ProtoMessage() {} -func (*DependencyEdge) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *DependencyEdge) GetHeadTokenIndex() int32 { - if m != nil { - return m.HeadTokenIndex - } - return 0 -} - -func (m *DependencyEdge) GetLabel() DependencyEdge_Label { - if m != nil { - return m.Label - } - return DependencyEdge_UNKNOWN -} - -// Represents a mention for an entity in the text. Currently, proper noun -// mentions are supported. -type EntityMention struct { - // The mention text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // The type of the entity mention. - Type EntityMention_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.language.v1.EntityMention_Type" json:"type,omitempty"` - // For calls to [AnalyzeEntitySentiment][] or if - // [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_entity_sentiment] is set to - // true, this field will contain the sentiment expressed for this mention of - // the entity in the provided document. - Sentiment *Sentiment `protobuf:"bytes,3,opt,name=sentiment" json:"sentiment,omitempty"` -} - -func (m *EntityMention) Reset() { *m = EntityMention{} } -func (m *EntityMention) String() string { return proto.CompactTextString(m) } -func (*EntityMention) ProtoMessage() {} -func (*EntityMention) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *EntityMention) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *EntityMention) GetType() EntityMention_Type { - if m != nil { - return m.Type - } - return EntityMention_TYPE_UNKNOWN -} - -func (m *EntityMention) GetSentiment() *Sentiment { - if m != nil { - return m.Sentiment - } - return nil -} - -// Represents an output piece of text. -type TextSpan struct { - // The content of the output text. - Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"` - // The API calculates the beginning offset of the content in the original - // document according to the [EncodingType][google.cloud.language.v1.EncodingType] specified in the API request. - BeginOffset int32 `protobuf:"varint,2,opt,name=begin_offset,json=beginOffset" json:"begin_offset,omitempty"` -} - -func (m *TextSpan) Reset() { *m = TextSpan{} } -func (m *TextSpan) String() string { return proto.CompactTextString(m) } -func (*TextSpan) ProtoMessage() {} -func (*TextSpan) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *TextSpan) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *TextSpan) GetBeginOffset() int32 { - if m != nil { - return m.BeginOffset - } - return 0 -} - -// Represents a category returned from the text classifier. -type ClassificationCategory struct { - // The name of the category representing the document. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The classifier's confidence of the category. Number represents how certain - // the classifier is that this category represents the given text. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *ClassificationCategory) Reset() { *m = ClassificationCategory{} } -func (m *ClassificationCategory) String() string { return proto.CompactTextString(m) } -func (*ClassificationCategory) ProtoMessage() {} -func (*ClassificationCategory) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ClassificationCategory) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ClassificationCategory) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// The sentiment analysis request message. -type AnalyzeSentimentRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate sentence offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeSentimentRequest) Reset() { *m = AnalyzeSentimentRequest{} } -func (m *AnalyzeSentimentRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSentimentRequest) ProtoMessage() {} -func (*AnalyzeSentimentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *AnalyzeSentimentRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeSentimentRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The sentiment analysis response message. -type AnalyzeSentimentResponse struct { - // The overall sentiment of the input document. - DocumentSentiment *Sentiment `protobuf:"bytes,1,opt,name=document_sentiment,json=documentSentiment" json:"document_sentiment,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1.Document.language] field for more details. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` - // The sentiment for all the sentences in the document. - Sentences []*Sentence `protobuf:"bytes,3,rep,name=sentences" json:"sentences,omitempty"` -} - -func (m *AnalyzeSentimentResponse) Reset() { *m = AnalyzeSentimentResponse{} } -func (m *AnalyzeSentimentResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSentimentResponse) ProtoMessage() {} -func (*AnalyzeSentimentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *AnalyzeSentimentResponse) GetDocumentSentiment() *Sentiment { - if m != nil { - return m.DocumentSentiment - } - return nil -} - -func (m *AnalyzeSentimentResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -func (m *AnalyzeSentimentResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -// The entity-level sentiment analysis request message. -type AnalyzeEntitySentimentRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeEntitySentimentRequest) Reset() { *m = AnalyzeEntitySentimentRequest{} } -func (m *AnalyzeEntitySentimentRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitySentimentRequest) ProtoMessage() {} -func (*AnalyzeEntitySentimentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *AnalyzeEntitySentimentRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeEntitySentimentRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The entity-level sentiment analysis response message. -type AnalyzeEntitySentimentResponse struct { - // The recognized entities in the input document with associated sentiments. - Entities []*Entity `protobuf:"bytes,1,rep,name=entities" json:"entities,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1.Document.language] field for more details. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` -} - -func (m *AnalyzeEntitySentimentResponse) Reset() { *m = AnalyzeEntitySentimentResponse{} } -func (m *AnalyzeEntitySentimentResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitySentimentResponse) ProtoMessage() {} -func (*AnalyzeEntitySentimentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *AnalyzeEntitySentimentResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *AnalyzeEntitySentimentResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// The entity analysis request message. -type AnalyzeEntitiesRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeEntitiesRequest) Reset() { *m = AnalyzeEntitiesRequest{} } -func (m *AnalyzeEntitiesRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitiesRequest) ProtoMessage() {} -func (*AnalyzeEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *AnalyzeEntitiesRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeEntitiesRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The entity analysis response message. -type AnalyzeEntitiesResponse struct { - // The recognized entities in the input document. - Entities []*Entity `protobuf:"bytes,1,rep,name=entities" json:"entities,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1.Document.language] field for more details. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` -} - -func (m *AnalyzeEntitiesResponse) Reset() { *m = AnalyzeEntitiesResponse{} } -func (m *AnalyzeEntitiesResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitiesResponse) ProtoMessage() {} -func (*AnalyzeEntitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *AnalyzeEntitiesResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *AnalyzeEntitiesResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// The syntax analysis request message. -type AnalyzeSyntaxRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeSyntaxRequest) Reset() { *m = AnalyzeSyntaxRequest{} } -func (m *AnalyzeSyntaxRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSyntaxRequest) ProtoMessage() {} -func (*AnalyzeSyntaxRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *AnalyzeSyntaxRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeSyntaxRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The syntax analysis response message. -type AnalyzeSyntaxResponse struct { - // Sentences in the input document. - Sentences []*Sentence `protobuf:"bytes,1,rep,name=sentences" json:"sentences,omitempty"` - // Tokens, along with their syntactic information, in the input document. - Tokens []*Token `protobuf:"bytes,2,rep,name=tokens" json:"tokens,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1.Document.language] field for more details. - Language string `protobuf:"bytes,3,opt,name=language" json:"language,omitempty"` -} - -func (m *AnalyzeSyntaxResponse) Reset() { *m = AnalyzeSyntaxResponse{} } -func (m *AnalyzeSyntaxResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSyntaxResponse) ProtoMessage() {} -func (*AnalyzeSyntaxResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *AnalyzeSyntaxResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -func (m *AnalyzeSyntaxResponse) GetTokens() []*Token { - if m != nil { - return m.Tokens - } - return nil -} - -func (m *AnalyzeSyntaxResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// The document classification request message. -type ClassifyTextRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` -} - -func (m *ClassifyTextRequest) Reset() { *m = ClassifyTextRequest{} } -func (m *ClassifyTextRequest) String() string { return proto.CompactTextString(m) } -func (*ClassifyTextRequest) ProtoMessage() {} -func (*ClassifyTextRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *ClassifyTextRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -// The document classification response message. -type ClassifyTextResponse struct { - // Categories representing the input document. - Categories []*ClassificationCategory `protobuf:"bytes,1,rep,name=categories" json:"categories,omitempty"` -} - -func (m *ClassifyTextResponse) Reset() { *m = ClassifyTextResponse{} } -func (m *ClassifyTextResponse) String() string { return proto.CompactTextString(m) } -func (*ClassifyTextResponse) ProtoMessage() {} -func (*ClassifyTextResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *ClassifyTextResponse) GetCategories() []*ClassificationCategory { - if m != nil { - return m.Categories - } - return nil -} - -// The request message for the text annotation API, which can perform multiple -// analysis types (sentiment, entities, and syntax) in one call. -type AnnotateTextRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The enabled features. - Features *AnnotateTextRequest_Features `protobuf:"bytes,2,opt,name=features" json:"features,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,3,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnnotateTextRequest) Reset() { *m = AnnotateTextRequest{} } -func (m *AnnotateTextRequest) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextRequest) ProtoMessage() {} -func (*AnnotateTextRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *AnnotateTextRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnnotateTextRequest) GetFeatures() *AnnotateTextRequest_Features { - if m != nil { - return m.Features - } - return nil -} - -func (m *AnnotateTextRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// All available features for sentiment, syntax, and semantic analysis. -// Setting each one to true will enable that specific analysis for the input. -type AnnotateTextRequest_Features struct { - // Extract syntax information. - ExtractSyntax bool `protobuf:"varint,1,opt,name=extract_syntax,json=extractSyntax" json:"extract_syntax,omitempty"` - // Extract entities. - ExtractEntities bool `protobuf:"varint,2,opt,name=extract_entities,json=extractEntities" json:"extract_entities,omitempty"` - // Extract document-level sentiment. - ExtractDocumentSentiment bool `protobuf:"varint,3,opt,name=extract_document_sentiment,json=extractDocumentSentiment" json:"extract_document_sentiment,omitempty"` - // Extract entities and their associated sentiment. - ExtractEntitySentiment bool `protobuf:"varint,4,opt,name=extract_entity_sentiment,json=extractEntitySentiment" json:"extract_entity_sentiment,omitempty"` - // Classify the full document into categories. - ClassifyText bool `protobuf:"varint,6,opt,name=classify_text,json=classifyText" json:"classify_text,omitempty"` -} - -func (m *AnnotateTextRequest_Features) Reset() { *m = AnnotateTextRequest_Features{} } -func (m *AnnotateTextRequest_Features) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextRequest_Features) ProtoMessage() {} -func (*AnnotateTextRequest_Features) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{20, 0} -} - -func (m *AnnotateTextRequest_Features) GetExtractSyntax() bool { - if m != nil { - return m.ExtractSyntax - } - return false -} - -func (m *AnnotateTextRequest_Features) GetExtractEntities() bool { - if m != nil { - return m.ExtractEntities - } - return false -} - -func (m *AnnotateTextRequest_Features) GetExtractDocumentSentiment() bool { - if m != nil { - return m.ExtractDocumentSentiment - } - return false -} - -func (m *AnnotateTextRequest_Features) GetExtractEntitySentiment() bool { - if m != nil { - return m.ExtractEntitySentiment - } - return false -} - -func (m *AnnotateTextRequest_Features) GetClassifyText() bool { - if m != nil { - return m.ClassifyText - } - return false -} - -// The text annotations response message. -type AnnotateTextResponse struct { - // Sentences in the input document. Populated if the user enables - // [AnnotateTextRequest.Features.extract_syntax][google.cloud.language.v1.AnnotateTextRequest.Features.extract_syntax]. - Sentences []*Sentence `protobuf:"bytes,1,rep,name=sentences" json:"sentences,omitempty"` - // Tokens, along with their syntactic information, in the input document. - // Populated if the user enables - // [AnnotateTextRequest.Features.extract_syntax][google.cloud.language.v1.AnnotateTextRequest.Features.extract_syntax]. - Tokens []*Token `protobuf:"bytes,2,rep,name=tokens" json:"tokens,omitempty"` - // Entities, along with their semantic information, in the input document. - // Populated if the user enables - // [AnnotateTextRequest.Features.extract_entities][google.cloud.language.v1.AnnotateTextRequest.Features.extract_entities]. - Entities []*Entity `protobuf:"bytes,3,rep,name=entities" json:"entities,omitempty"` - // The overall sentiment for the document. Populated if the user enables - // [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1.AnnotateTextRequest.Features.extract_document_sentiment]. - DocumentSentiment *Sentiment `protobuf:"bytes,4,opt,name=document_sentiment,json=documentSentiment" json:"document_sentiment,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1.Document.language] field for more details. - Language string `protobuf:"bytes,5,opt,name=language" json:"language,omitempty"` - // Categories identified in the input document. - Categories []*ClassificationCategory `protobuf:"bytes,6,rep,name=categories" json:"categories,omitempty"` -} - -func (m *AnnotateTextResponse) Reset() { *m = AnnotateTextResponse{} } -func (m *AnnotateTextResponse) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextResponse) ProtoMessage() {} -func (*AnnotateTextResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *AnnotateTextResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -func (m *AnnotateTextResponse) GetTokens() []*Token { - if m != nil { - return m.Tokens - } - return nil -} - -func (m *AnnotateTextResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *AnnotateTextResponse) GetDocumentSentiment() *Sentiment { - if m != nil { - return m.DocumentSentiment - } - return nil -} - -func (m *AnnotateTextResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -func (m *AnnotateTextResponse) GetCategories() []*ClassificationCategory { - if m != nil { - return m.Categories - } - return nil -} - -func init() { - proto.RegisterType((*Document)(nil), "google.cloud.language.v1.Document") - proto.RegisterType((*Sentence)(nil), "google.cloud.language.v1.Sentence") - proto.RegisterType((*Entity)(nil), "google.cloud.language.v1.Entity") - proto.RegisterType((*Token)(nil), "google.cloud.language.v1.Token") - proto.RegisterType((*Sentiment)(nil), "google.cloud.language.v1.Sentiment") - proto.RegisterType((*PartOfSpeech)(nil), "google.cloud.language.v1.PartOfSpeech") - proto.RegisterType((*DependencyEdge)(nil), "google.cloud.language.v1.DependencyEdge") - proto.RegisterType((*EntityMention)(nil), "google.cloud.language.v1.EntityMention") - proto.RegisterType((*TextSpan)(nil), "google.cloud.language.v1.TextSpan") - proto.RegisterType((*ClassificationCategory)(nil), "google.cloud.language.v1.ClassificationCategory") - proto.RegisterType((*AnalyzeSentimentRequest)(nil), "google.cloud.language.v1.AnalyzeSentimentRequest") - proto.RegisterType((*AnalyzeSentimentResponse)(nil), "google.cloud.language.v1.AnalyzeSentimentResponse") - proto.RegisterType((*AnalyzeEntitySentimentRequest)(nil), "google.cloud.language.v1.AnalyzeEntitySentimentRequest") - proto.RegisterType((*AnalyzeEntitySentimentResponse)(nil), "google.cloud.language.v1.AnalyzeEntitySentimentResponse") - proto.RegisterType((*AnalyzeEntitiesRequest)(nil), "google.cloud.language.v1.AnalyzeEntitiesRequest") - proto.RegisterType((*AnalyzeEntitiesResponse)(nil), "google.cloud.language.v1.AnalyzeEntitiesResponse") - proto.RegisterType((*AnalyzeSyntaxRequest)(nil), "google.cloud.language.v1.AnalyzeSyntaxRequest") - proto.RegisterType((*AnalyzeSyntaxResponse)(nil), "google.cloud.language.v1.AnalyzeSyntaxResponse") - proto.RegisterType((*ClassifyTextRequest)(nil), "google.cloud.language.v1.ClassifyTextRequest") - proto.RegisterType((*ClassifyTextResponse)(nil), "google.cloud.language.v1.ClassifyTextResponse") - proto.RegisterType((*AnnotateTextRequest)(nil), "google.cloud.language.v1.AnnotateTextRequest") - proto.RegisterType((*AnnotateTextRequest_Features)(nil), "google.cloud.language.v1.AnnotateTextRequest.Features") - proto.RegisterType((*AnnotateTextResponse)(nil), "google.cloud.language.v1.AnnotateTextResponse") - proto.RegisterEnum("google.cloud.language.v1.EncodingType", EncodingType_name, EncodingType_value) - proto.RegisterEnum("google.cloud.language.v1.Document_Type", Document_Type_name, Document_Type_value) - proto.RegisterEnum("google.cloud.language.v1.Entity_Type", Entity_Type_name, Entity_Type_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Tag", PartOfSpeech_Tag_name, PartOfSpeech_Tag_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Aspect", PartOfSpeech_Aspect_name, PartOfSpeech_Aspect_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Case", PartOfSpeech_Case_name, PartOfSpeech_Case_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Form", PartOfSpeech_Form_name, PartOfSpeech_Form_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Gender", PartOfSpeech_Gender_name, PartOfSpeech_Gender_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Mood", PartOfSpeech_Mood_name, PartOfSpeech_Mood_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Number", PartOfSpeech_Number_name, PartOfSpeech_Number_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Person", PartOfSpeech_Person_name, PartOfSpeech_Person_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Proper", PartOfSpeech_Proper_name, PartOfSpeech_Proper_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Reciprocity", PartOfSpeech_Reciprocity_name, PartOfSpeech_Reciprocity_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Tense", PartOfSpeech_Tense_name, PartOfSpeech_Tense_value) - proto.RegisterEnum("google.cloud.language.v1.PartOfSpeech_Voice", PartOfSpeech_Voice_name, PartOfSpeech_Voice_value) - proto.RegisterEnum("google.cloud.language.v1.DependencyEdge_Label", DependencyEdge_Label_name, DependencyEdge_Label_value) - proto.RegisterEnum("google.cloud.language.v1.EntityMention_Type", EntityMention_Type_name, EntityMention_Type_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for LanguageService service - -type LanguageServiceClient interface { - // Analyzes the sentiment of the provided text. - AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error) - // Finds named entities (currently proper names and common nouns) in the text - // along with entity types, salience, mentions for each entity, and - // other properties. - AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error) - // Finds entities, similar to [AnalyzeEntities][google.cloud.language.v1.LanguageService.AnalyzeEntities] in the text and analyzes - // sentiment associated with each entity and its mentions. - AnalyzeEntitySentiment(ctx context.Context, in *AnalyzeEntitySentimentRequest, opts ...grpc.CallOption) (*AnalyzeEntitySentimentResponse, error) - // Analyzes the syntax of the text and provides sentence boundaries and - // tokenization along with part of speech tags, dependency trees, and other - // properties. - AnalyzeSyntax(ctx context.Context, in *AnalyzeSyntaxRequest, opts ...grpc.CallOption) (*AnalyzeSyntaxResponse, error) - // Classifies a document into categories. - ClassifyText(ctx context.Context, in *ClassifyTextRequest, opts ...grpc.CallOption) (*ClassifyTextResponse, error) - // A convenience method that provides all the features that analyzeSentiment, - // analyzeEntities, and analyzeSyntax provide in one call. - AnnotateText(ctx context.Context, in *AnnotateTextRequest, opts ...grpc.CallOption) (*AnnotateTextResponse, error) -} - -type languageServiceClient struct { - cc *grpc.ClientConn -} - -func NewLanguageServiceClient(cc *grpc.ClientConn) LanguageServiceClient { - return &languageServiceClient{cc} -} - -func (c *languageServiceClient) AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error) { - out := new(AnalyzeSentimentResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1.LanguageService/AnalyzeSentiment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error) { - out := new(AnalyzeEntitiesResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1.LanguageService/AnalyzeEntities", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnalyzeEntitySentiment(ctx context.Context, in *AnalyzeEntitySentimentRequest, opts ...grpc.CallOption) (*AnalyzeEntitySentimentResponse, error) { - out := new(AnalyzeEntitySentimentResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1.LanguageService/AnalyzeEntitySentiment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnalyzeSyntax(ctx context.Context, in *AnalyzeSyntaxRequest, opts ...grpc.CallOption) (*AnalyzeSyntaxResponse, error) { - out := new(AnalyzeSyntaxResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1.LanguageService/AnalyzeSyntax", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) ClassifyText(ctx context.Context, in *ClassifyTextRequest, opts ...grpc.CallOption) (*ClassifyTextResponse, error) { - out := new(ClassifyTextResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1.LanguageService/ClassifyText", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnnotateText(ctx context.Context, in *AnnotateTextRequest, opts ...grpc.CallOption) (*AnnotateTextResponse, error) { - out := new(AnnotateTextResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1.LanguageService/AnnotateText", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for LanguageService service - -type LanguageServiceServer interface { - // Analyzes the sentiment of the provided text. - AnalyzeSentiment(context.Context, *AnalyzeSentimentRequest) (*AnalyzeSentimentResponse, error) - // Finds named entities (currently proper names and common nouns) in the text - // along with entity types, salience, mentions for each entity, and - // other properties. - AnalyzeEntities(context.Context, *AnalyzeEntitiesRequest) (*AnalyzeEntitiesResponse, error) - // Finds entities, similar to [AnalyzeEntities][google.cloud.language.v1.LanguageService.AnalyzeEntities] in the text and analyzes - // sentiment associated with each entity and its mentions. - AnalyzeEntitySentiment(context.Context, *AnalyzeEntitySentimentRequest) (*AnalyzeEntitySentimentResponse, error) - // Analyzes the syntax of the text and provides sentence boundaries and - // tokenization along with part of speech tags, dependency trees, and other - // properties. - AnalyzeSyntax(context.Context, *AnalyzeSyntaxRequest) (*AnalyzeSyntaxResponse, error) - // Classifies a document into categories. - ClassifyText(context.Context, *ClassifyTextRequest) (*ClassifyTextResponse, error) - // A convenience method that provides all the features that analyzeSentiment, - // analyzeEntities, and analyzeSyntax provide in one call. - AnnotateText(context.Context, *AnnotateTextRequest) (*AnnotateTextResponse, error) -} - -func RegisterLanguageServiceServer(s *grpc.Server, srv LanguageServiceServer) { - s.RegisterService(&_LanguageService_serviceDesc, srv) -} - -func _LanguageService_AnalyzeSentiment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeSentimentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeSentiment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1.LanguageService/AnalyzeSentiment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeSentiment(ctx, req.(*AnalyzeSentimentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnalyzeEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeEntitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeEntities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1.LanguageService/AnalyzeEntities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeEntities(ctx, req.(*AnalyzeEntitiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnalyzeEntitySentiment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeEntitySentimentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeEntitySentiment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1.LanguageService/AnalyzeEntitySentiment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeEntitySentiment(ctx, req.(*AnalyzeEntitySentimentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnalyzeSyntax_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeSyntaxRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeSyntax(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1.LanguageService/AnalyzeSyntax", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeSyntax(ctx, req.(*AnalyzeSyntaxRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_ClassifyText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClassifyTextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).ClassifyText(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1.LanguageService/ClassifyText", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).ClassifyText(ctx, req.(*ClassifyTextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnnotateText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnnotateTextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnnotateText(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1.LanguageService/AnnotateText", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnnotateText(ctx, req.(*AnnotateTextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _LanguageService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.language.v1.LanguageService", - HandlerType: (*LanguageServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AnalyzeSentiment", - Handler: _LanguageService_AnalyzeSentiment_Handler, - }, - { - MethodName: "AnalyzeEntities", - Handler: _LanguageService_AnalyzeEntities_Handler, - }, - { - MethodName: "AnalyzeEntitySentiment", - Handler: _LanguageService_AnalyzeEntitySentiment_Handler, - }, - { - MethodName: "AnalyzeSyntax", - Handler: _LanguageService_AnalyzeSyntax_Handler, - }, - { - MethodName: "ClassifyText", - Handler: _LanguageService_ClassifyText_Handler, - }, - { - MethodName: "AnnotateText", - Handler: _LanguageService_AnnotateText_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/language/v1/language_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/language/v1/language_service.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2967 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcb, 0x73, 0xdb, 0xd6, - 0xd5, 0x37, 0xf8, 0x12, 0x75, 0x28, 0xc9, 0xd7, 0xb0, 0xe3, 0xf0, 0x53, 0x1c, 0xc7, 0x81, 0x63, - 0x47, 0x76, 0x12, 0xca, 0x56, 0xbe, 0xcf, 0x71, 0x6c, 0x7f, 0x89, 0x21, 0xf0, 0x92, 0x82, 0x0c, - 0x02, 0xf0, 0x05, 0x40, 0x2b, 0xd9, 0x70, 0x60, 0x12, 0x62, 0x38, 0x91, 0x08, 0x96, 0x80, 0x3c, - 0x56, 0x36, 0x9d, 0xe9, 0x4c, 0x97, 0x5d, 0x74, 0xda, 0x45, 0x97, 0x9d, 0xe9, 0x63, 0xa6, 0x33, - 0x99, 0xf6, 0x1f, 0xe8, 0x9f, 0xd0, 0x5d, 0xff, 0x84, 0x76, 0xd7, 0x5d, 0x17, 0x9d, 0x76, 0xd1, - 0xc7, 0x9c, 0x7b, 0x01, 0x12, 0x94, 0x25, 0x59, 0x72, 0xd3, 0x69, 0x76, 0xf7, 0x1e, 0x9e, 0xdf, - 0x79, 0xdd, 0xf3, 0xb8, 0xb8, 0x12, 0xac, 0xf6, 0xc3, 0xb0, 0xbf, 0x13, 0xac, 0x76, 0x77, 0xc2, - 0xbd, 0xde, 0xea, 0x8e, 0x3f, 0xec, 0xef, 0xf9, 0xfd, 0x60, 0xf5, 0xd9, 0xed, 0xc9, 0xba, 0x13, - 0x05, 0xe3, 0x67, 0x83, 0x6e, 0x50, 0x1b, 0x8d, 0xc3, 0x38, 0x94, 0xab, 0x02, 0x50, 0xe3, 0x80, - 0x5a, 0xca, 0x54, 0x7b, 0x76, 0x7b, 0xf9, 0x52, 0x22, 0xca, 0x1f, 0x0d, 0x56, 0xfd, 0xe1, 0x30, - 0x8c, 0xfd, 0x78, 0x10, 0x0e, 0x23, 0x81, 0x53, 0xfe, 0x24, 0x41, 0xb9, 0x1e, 0x76, 0xf7, 0x76, - 0x83, 0x61, 0x2c, 0xdf, 0x87, 0x42, 0xbc, 0x3f, 0x0a, 0xaa, 0xd2, 0x15, 0x69, 0x65, 0x69, 0xed, - 0xdd, 0xda, 0x51, 0x32, 0x6b, 0x29, 0xa2, 0xe6, 0xee, 0x8f, 0x02, 0xc6, 0x41, 0xf2, 0x32, 0xcc, - 0x75, 0xc3, 0x61, 0x1c, 0x0c, 0xe3, 0x6a, 0xee, 0x8a, 0xb4, 0x32, 0xbf, 0x71, 0x86, 0xa5, 0x04, - 0x79, 0x05, 0xce, 0xf6, 0xbb, 0x51, 0x27, 0xd9, 0x76, 0xf6, 0xc6, 0x83, 0x6a, 0x3e, 0xe1, 0x59, - 0xec, 0x77, 0x23, 0x4d, 0xd0, 0xbd, 0xf1, 0x40, 0x5e, 0x86, 0x72, 0xaa, 0xa8, 0x5a, 0x40, 0x16, - 0x36, 0xd9, 0x2b, 0x77, 0xa0, 0x80, 0xfa, 0xe4, 0x0b, 0x40, 0xdc, 0xcf, 0x6c, 0xda, 0xf1, 0x4c, - 0xc7, 0xa6, 0x9a, 0xde, 0xd0, 0x69, 0x9d, 0x9c, 0x91, 0x97, 0x00, 0x6c, 0x43, 0xd5, 0xcd, 0x8e, - 0x4b, 0xb7, 0x5c, 0x22, 0xc9, 0x65, 0x28, 0x6c, 0xb8, 0x2d, 0x83, 0xe4, 0xd6, 0xcb, 0x50, 0x8a, - 0xc2, 0xbd, 0x71, 0x37, 0x50, 0xbe, 0x2f, 0x41, 0xd9, 0x09, 0x50, 0x59, 0x37, 0x90, 0xef, 0x40, - 0x21, 0x0e, 0x9e, 0xc7, 0xdc, 0xdb, 0xca, 0x9a, 0x72, 0xb4, 0xb7, 0x6e, 0xf0, 0x3c, 0x76, 0x46, - 0xfe, 0x90, 0x71, 0x7e, 0x59, 0x85, 0xf9, 0x28, 0x18, 0xc6, 0x83, 0xdd, 0xd4, 0xd5, 0xca, 0xda, - 0xd5, 0xa3, 0xc1, 0x4e, 0xca, 0xca, 0xa6, 0x28, 0xe5, 0x9f, 0x79, 0x28, 0xd1, 0x61, 0x3c, 0x88, - 0xf7, 0x65, 0x19, 0x0a, 0x43, 0x7f, 0x57, 0xc4, 0x7c, 0x9e, 0xf1, 0xb5, 0xfc, 0x71, 0x72, 0x0e, - 0x39, 0x7e, 0x0e, 0xd7, 0x8e, 0x16, 0x2e, 0x64, 0x64, 0x4f, 0x61, 0x13, 0xca, 0xbb, 0x41, 0xec, - 0xf7, 0xfc, 0xd8, 0xaf, 0xe6, 0xaf, 0xe4, 0x57, 0x2a, 0x6b, 0xb5, 0x97, 0xc2, 0x5b, 0x09, 0x80, - 0x0e, 0xe3, 0xf1, 0x3e, 0x9b, 0xe0, 0xf1, 0x2c, 0x22, 0x7f, 0x67, 0x80, 0xc1, 0xe2, 0x67, 0x91, - 0x63, 0x93, 0xbd, 0xac, 0xa1, 0x9e, 0x21, 0xcf, 0xa4, 0x6a, 0x91, 0xeb, 0x79, 0xf7, 0x65, 0x7a, - 0x5a, 0x82, 0x9f, 0x4d, 0x80, 0xb3, 0x91, 0x2c, 0xbd, 0x4a, 0x24, 0x97, 0xef, 0xc3, 0xe2, 0x8c, - 0xf9, 0x32, 0x81, 0xfc, 0x97, 0xc1, 0x7e, 0x12, 0x4e, 0x5c, 0xca, 0x17, 0xa0, 0xf8, 0xcc, 0xdf, - 0xd9, 0x13, 0xe1, 0x9c, 0x67, 0x62, 0x73, 0x2f, 0x77, 0x57, 0x52, 0xf6, 0x93, 0x84, 0xaa, 0xc0, - 0x9c, 0x67, 0x3e, 0x32, 0xad, 0x27, 0x26, 0x39, 0x23, 0x03, 0x94, 0x6c, 0xca, 0x1c, 0xcb, 0x24, - 0x92, 0xbc, 0x00, 0x65, 0xc3, 0xd2, 0x54, 0x57, 0xb7, 0x4c, 0x92, 0x93, 0x09, 0x2c, 0x58, 0xac, - 0xa9, 0x9a, 0xfa, 0xe7, 0x82, 0x92, 0x97, 0xe7, 0xa1, 0x48, 0xdb, 0xd4, 0x74, 0x49, 0x41, 0x3e, - 0x0b, 0x95, 0x27, 0x16, 0x7b, 0xd4, 0xb1, 0x1a, 0x1d, 0x95, 0xb9, 0xa4, 0x28, 0x9f, 0x83, 0x45, - 0xcd, 0x32, 0x1d, 0xaf, 0x45, 0x59, 0xa7, 0x69, 0x59, 0x75, 0x52, 0x42, 0x76, 0xcb, 0xdd, 0xa0, - 0x8c, 0xcc, 0x29, 0x7f, 0x91, 0xa0, 0xe8, 0x86, 0x5f, 0x06, 0xc3, 0x57, 0x4e, 0x43, 0x03, 0x96, - 0x46, 0xfe, 0x38, 0xee, 0x84, 0xdb, 0x9d, 0x68, 0x14, 0x04, 0xdd, 0x2f, 0x92, 0x5c, 0xbc, 0x7e, - 0xb4, 0x04, 0xdb, 0x1f, 0xc7, 0xd6, 0xb6, 0xc3, 0xb9, 0xd9, 0xc2, 0x28, 0xb3, 0x93, 0x1f, 0xc3, - 0xd9, 0x5e, 0x30, 0x0a, 0x86, 0xbd, 0x60, 0xd8, 0xdd, 0xef, 0x04, 0xbd, 0x7e, 0xc0, 0x2b, 0xb4, - 0xb2, 0xb6, 0x72, 0x4c, 0x17, 0x98, 0x00, 0x68, 0xaf, 0x1f, 0xb0, 0xa5, 0xde, 0xcc, 0x1e, 0xe3, - 0xbe, 0x13, 0xec, 0xee, 0xfa, 0x49, 0x1d, 0x8b, 0x8d, 0xf2, 0x29, 0xcc, 0x4f, 0x0e, 0x52, 0xbe, - 0x04, 0xf3, 0xbb, 0x7e, 0x7f, 0x38, 0x88, 0xf7, 0x7a, 0xe2, 0x78, 0x72, 0x6c, 0x4a, 0x40, 0x01, - 0x51, 0x37, 0x1c, 0x0b, 0x4b, 0x72, 0x4c, 0x6c, 0x94, 0xbf, 0x13, 0x58, 0xc8, 0x3a, 0x22, 0x3f, - 0x80, 0x7c, 0xec, 0xf7, 0x93, 0xa6, 0x75, 0xf3, 0x64, 0xde, 0xd7, 0x5c, 0xbf, 0xcf, 0x10, 0x26, - 0x53, 0x28, 0xf9, 0xd1, 0x28, 0xe8, 0xc6, 0x49, 0xb5, 0x7d, 0x70, 0x42, 0x01, 0x2a, 0x07, 0xb1, - 0x04, 0x2c, 0x7f, 0x0a, 0x85, 0xae, 0x1f, 0x09, 0x53, 0x97, 0xd6, 0xde, 0x3b, 0xa1, 0x10, 0xcd, - 0x8f, 0x02, 0xc6, 0x81, 0x28, 0x60, 0x3b, 0x1c, 0xef, 0xf2, 0x60, 0x9d, 0x5c, 0x40, 0x23, 0x1c, - 0xef, 0x32, 0x0e, 0x44, 0x47, 0xfa, 0x18, 0xfe, 0x71, 0xb5, 0x78, 0x2a, 0x47, 0x9a, 0x1c, 0xc4, - 0x12, 0x30, 0xda, 0xb1, 0x1b, 0x86, 0x3d, 0x5e, 0x8e, 0x27, 0xb7, 0xa3, 0x15, 0x86, 0x3d, 0xc6, - 0x81, 0x68, 0xc7, 0x70, 0x6f, 0xf7, 0x69, 0x30, 0xae, 0xce, 0x9d, 0xca, 0x0e, 0x93, 0x83, 0x58, - 0x02, 0x46, 0x31, 0xa3, 0x60, 0x1c, 0x85, 0xc3, 0x6a, 0xf9, 0x54, 0x62, 0x6c, 0x0e, 0x62, 0x09, - 0x98, 0x8b, 0x19, 0x87, 0xa3, 0x60, 0x5c, 0x9d, 0x3f, 0x9d, 0x18, 0x0e, 0x62, 0x09, 0x58, 0x76, - 0xa1, 0x32, 0x0e, 0xba, 0x83, 0xd1, 0x38, 0xec, 0x0e, 0xe2, 0xfd, 0x2a, 0x70, 0x59, 0x6b, 0x27, - 0x94, 0xc5, 0xa6, 0x48, 0x96, 0x15, 0x23, 0xaf, 0x43, 0x31, 0x0e, 0x86, 0x51, 0x50, 0xad, 0x70, - 0x79, 0xef, 0x9f, 0x34, 0x77, 0x11, 0xc3, 0x04, 0x14, 0x65, 0x3c, 0x0b, 0x07, 0xdd, 0xa0, 0xba, - 0x70, 0x2a, 0x19, 0x6d, 0xc4, 0x30, 0x01, 0x55, 0x7e, 0x20, 0x41, 0xde, 0xf5, 0xfb, 0xb3, 0x7d, - 0x70, 0x0e, 0xf2, 0x6a, 0x7d, 0x93, 0x48, 0x62, 0x61, 0x93, 0x9c, 0x58, 0xb4, 0x49, 0x1e, 0x47, - 0xab, 0x66, 0x99, 0x9b, 0xa4, 0x80, 0xa4, 0x3a, 0xc5, 0x6e, 0x57, 0x86, 0x82, 0x69, 0x79, 0x26, - 0x29, 0x21, 0xc9, 0xf4, 0x5a, 0x64, 0x0e, 0x49, 0x36, 0xb3, 0x4c, 0x52, 0x46, 0x92, 0xcd, 0x5c, - 0x32, 0x8f, 0x0d, 0xd0, 0xf6, 0x4c, 0xcd, 0x25, 0x80, 0xbf, 0xb6, 0x29, 0x5b, 0x27, 0x15, 0xb9, - 0x08, 0xd2, 0x16, 0x59, 0xc0, 0xdf, 0xd4, 0x46, 0x43, 0xdf, 0x22, 0x8b, 0x8a, 0x05, 0x25, 0x51, - 0x5e, 0xb2, 0x0c, 0x4b, 0x2a, 0x0e, 0x79, 0xb7, 0x33, 0x35, 0x0c, 0x07, 0x3d, 0x65, 0x0d, 0xaa, - 0xb9, 0x7a, 0x9b, 0x12, 0x09, 0xdb, 0xb2, 0xde, 0xca, 0x50, 0x72, 0xd8, 0x8b, 0x6d, 0x66, 0x35, - 0x19, 0x75, 0x1c, 0x24, 0xe4, 0x95, 0xbf, 0x4a, 0x50, 0xc0, 0x5a, 0x43, 0x5e, 0x4d, 0x75, 0xe8, - 0xac, 0x34, 0x55, 0xd3, 0x3c, 0x47, 0x4d, 0xa4, 0x2d, 0xc2, 0xbc, 0x5a, 0x47, 0xcb, 0x74, 0xd5, - 0x20, 0x39, 0xd1, 0xc5, 0x5b, 0xb6, 0x41, 0x5b, 0xd4, 0xe4, 0x1c, 0x79, 0x1c, 0x10, 0x75, 0xc1, - 0x5d, 0xc0, 0x01, 0xd1, 0xa4, 0xa6, 0xce, 0x77, 0x45, 0x6e, 0x89, 0xe9, 0xb8, 0xcc, 0x43, 0x66, - 0xd5, 0x20, 0xa5, 0xe9, 0x00, 0x69, 0x53, 0x32, 0x87, 0xba, 0x4c, 0xab, 0xa5, 0x9b, 0x62, 0x5f, - 0xc6, 0x78, 0x5b, 0xeb, 0x86, 0xfe, 0xd8, 0xa3, 0x64, 0x1e, 0x15, 0xdb, 0x2a, 0x73, 0x85, 0x2c, - 0x40, 0xc5, 0x36, 0xa3, 0xb6, 0xe5, 0xe8, 0x38, 0x6b, 0x54, 0x83, 0x54, 0x30, 0x18, 0x8c, 0x36, - 0x0c, 0xba, 0xa5, 0xb7, 0x69, 0x07, 0xdd, 0x20, 0x0b, 0xc8, 0xc6, 0xa8, 0xc1, 0x05, 0x0a, 0xd2, - 0x22, 0xea, 0x6c, 0xa7, 0x3a, 0x97, 0x94, 0xdf, 0x48, 0x50, 0xc0, 0x2e, 0x81, 0xc6, 0x35, 0x2c, - 0xd6, 0xca, 0xb8, 0xbe, 0x00, 0x65, 0xb5, 0x8e, 0x06, 0xa9, 0x46, 0xe2, 0xb8, 0xb7, 0xa5, 0x1b, - 0xba, 0xca, 0x3e, 0x23, 0x39, 0x54, 0x96, 0x71, 0xfc, 0x73, 0xca, 0x48, 0x9e, 0x8b, 0xd0, 0x4d, - 0xd5, 0xe8, 0x50, 0xb3, 0xae, 0x9b, 0x4d, 0x52, 0xc0, 0x58, 0x34, 0x29, 0xf3, 0xcc, 0x3a, 0x29, - 0xe2, 0x9a, 0x51, 0xd5, 0xd0, 0x1d, 0xe1, 0xb7, 0xce, 0x92, 0xdd, 0x1c, 0x1e, 0xad, 0xb3, 0x61, - 0x31, 0x97, 0x94, 0xf1, 0xd8, 0x0d, 0xcb, 0x6c, 0x8a, 0x5c, 0xb0, 0x58, 0x9d, 0x32, 0x02, 0xc8, - 0x9d, 0xdc, 0xe4, 0x34, 0x52, 0x51, 0x28, 0x94, 0x44, 0x4f, 0x42, 0x1b, 0x9a, 0xd4, 0xac, 0x53, - 0x36, 0x6b, 0x74, 0x83, 0xb6, 0x74, 0x53, 0x37, 0x93, 0xd3, 0x6a, 0xa9, 0x8e, 0xe6, 0x19, 0xb8, - 0xcd, 0xa1, 0x09, 0x26, 0xf5, 0x5c, 0x34, 0x56, 0xf9, 0x2e, 0x14, 0xb0, 0x2b, 0xa1, 0xd1, 0x2d, - 0xcb, 0xaa, 0x67, 0x44, 0x5c, 0x00, 0xa2, 0x59, 0x66, 0x3d, 0x09, 0x6c, 0x07, 0x7f, 0x25, 0x12, - 0x1e, 0x0e, 0x4f, 0x23, 0x35, 0x49, 0x22, 0xdc, 0x9b, 0x75, 0x3d, 0x09, 0x64, 0x1e, 0x23, 0xad, - 0x9b, 0x2e, 0x65, 0xcc, 0x6a, 0xa6, 0xa7, 0x5f, 0x81, 0xb9, 0x4d, 0x4f, 0xe4, 0x58, 0x11, 0x93, - 0xce, 0xf1, 0xd6, 0x37, 0x31, 0xbd, 0x91, 0x50, 0x52, 0x1e, 0x42, 0x49, 0xf4, 0x34, 0xf4, 0xc3, - 0xf4, 0x5a, 0xeb, 0x07, 0xfd, 0x70, 0x74, 0xb3, 0xe9, 0x19, 0x2a, 0x23, 0x12, 0xbf, 0x74, 0x18, - 0x1e, 0xe3, 0x29, 0x57, 0x86, 0x42, 0xdd, 0x53, 0x0d, 0x92, 0x57, 0x5c, 0x28, 0x89, 0x76, 0x86, - 0x12, 0xc4, 0xa5, 0x24, 0x23, 0x61, 0x1e, 0x8a, 0x0d, 0x9d, 0x39, 0xae, 0x80, 0x3b, 0x14, 0x7d, - 0x22, 0x39, 0x24, 0xbb, 0x1b, 0x3a, 0xab, 0x93, 0x3c, 0x3a, 0x3a, 0x4d, 0x98, 0xe4, 0x52, 0x53, - 0x50, 0xee, 0x42, 0x49, 0x74, 0x37, 0x2e, 0x95, 0x59, 0xf6, 0x8c, 0x5d, 0x68, 0x09, 0xa7, 0x89, - 0x90, 0x98, 0x96, 0xdb, 0x49, 0xf6, 0x39, 0x65, 0x13, 0x2a, 0x99, 0x5e, 0x26, 0xbf, 0x0e, 0xe7, - 0x19, 0xd5, 0x74, 0x9b, 0x59, 0x9a, 0xee, 0x7e, 0x36, 0x5b, 0x53, 0xe9, 0x0f, 0x3c, 0xb5, 0xd0, - 0x7f, 0xcb, 0xec, 0x64, 0x68, 0x39, 0x25, 0x82, 0x22, 0xef, 0x63, 0x18, 0x57, 0x97, 0x9a, 0x33, - 0x35, 0xf9, 0x1a, 0x9c, 0xcb, 0x1e, 0x10, 0xff, 0x59, 0x78, 0xd9, 0xf0, 0x5c, 0x8f, 0x51, 0x11, - 0x24, 0x5b, 0x75, 0x5c, 0x92, 0xc7, 0x43, 0xb0, 0x19, 0x75, 0xc4, 0x2d, 0x6c, 0x11, 0xe6, 0x27, - 0xbd, 0x80, 0x14, 0xc5, 0x37, 0x81, 0x97, 0xee, 0x4b, 0xca, 0x3a, 0x14, 0x79, 0xe3, 0x43, 0xa5, - 0x6d, 0x4b, 0xd7, 0xe8, 0xac, 0xe3, 0xaa, 0x36, 0x6d, 0x02, 0x9a, 0x9a, 0xf6, 0x84, 0x1c, 0x57, - 0xa1, 0xa6, 0xbd, 0xe4, 0xeb, 0x32, 0x2c, 0xcd, 0xde, 0x7c, 0xe4, 0x15, 0x20, 0x5f, 0x04, 0x7e, - 0xaf, 0x13, 0xe3, 0x85, 0xae, 0x33, 0x18, 0xf6, 0x82, 0xe7, 0xfc, 0x3a, 0x52, 0x64, 0x4b, 0x48, - 0xe7, 0xf7, 0x3c, 0x1d, 0xa9, 0x72, 0x1d, 0x8a, 0x3b, 0xfe, 0xd3, 0x60, 0x27, 0xb9, 0x6c, 0xd4, - 0x4e, 0x7a, 0xb9, 0xaa, 0x19, 0x88, 0x62, 0x02, 0xac, 0xfc, 0x6a, 0x0e, 0x8a, 0x9c, 0xf0, 0xc2, - 0xcd, 0x55, 0x5d, 0x5f, 0x67, 0xb4, 0x4d, 0x24, 0xde, 0x4d, 0xb1, 0x7e, 0x45, 0x42, 0xa8, 0xf5, - 0xb6, 0x66, 0x88, 0xd6, 0xa5, 0xd6, 0xdb, 0x2d, 0xab, 0x4e, 0x0a, 0x18, 0x41, 0x15, 0x57, 0x45, - 0xce, 0x60, 0xdb, 0x16, 0xd6, 0x2d, 0x12, 0x5d, 0x97, 0x91, 0x39, 0xde, 0xec, 0xbd, 0x2d, 0xd1, - 0xa4, 0x54, 0x6f, 0x0b, 0xfd, 0x27, 0xf3, 0x72, 0x09, 0x72, 0x9a, 0x46, 0x00, 0x21, 0x1a, 0x17, - 0x5f, 0x99, 0x0c, 0x03, 0xde, 0xc1, 0x35, 0x2c, 0x01, 0xb2, 0xc8, 0x03, 0x88, 0x4b, 0x0e, 0x5b, - 0x12, 0x63, 0xc2, 0x26, 0x67, 0xd3, 0x79, 0x41, 0x90, 0xa1, 0xae, 0x3b, 0x9a, 0xe5, 0x31, 0x87, - 0x92, 0x73, 0x3c, 0xe7, 0xad, 0xf5, 0x4d, 0x22, 0xe3, 0x8a, 0x6e, 0xd9, 0x06, 0x39, 0xcf, 0x7b, - 0xab, 0x45, 0x9d, 0x27, 0xba, 0xbb, 0x41, 0x2e, 0x20, 0x5d, 0x47, 0x8e, 0xd7, 0x70, 0xd5, 0x52, - 0xd9, 0x23, 0x72, 0x11, 0xa5, 0xb5, 0x9e, 0x50, 0xf2, 0xba, 0x58, 0xb4, 0x49, 0x95, 0x0f, 0x1f, - 0xda, 0x24, 0xff, 0x83, 0x86, 0x9a, 0x26, 0x59, 0x46, 0x21, 0xa6, 0x9d, 0xf8, 0xfc, 0x06, 0x5a, - 0x68, 0x72, 0x0b, 0x2f, 0xa1, 0x01, 0xe6, 0xc4, 0xc2, 0x37, 0xd3, 0xa9, 0x75, 0x99, 0xb7, 0x10, - 0x5e, 0xab, 0xe4, 0x2d, 0x9c, 0x4c, 0x36, 0xb9, 0x92, 0x74, 0x66, 0xd5, 0x55, 0xb7, 0x74, 0x87, - 0xbc, 0x2d, 0xb2, 0x81, 0xb9, 0x28, 0x51, 0xe1, 0x13, 0x8d, 0x07, 0xe2, 0x2a, 0x4f, 0x49, 0xb4, - 0xf0, 0x1d, 0xb1, 0x72, 0x1c, 0x72, 0x8d, 0xf3, 0x5a, 0x8e, 0x8b, 0x36, 0x5d, 0x4f, 0x32, 0x95, - 0x73, 0xbf, 0x3b, 0xd9, 0x98, 0x9b, 0x64, 0x45, 0x14, 0x1d, 0xc5, 0xc8, 0xdc, 0x10, 0x63, 0x93, - 0x36, 0xc8, 0xcd, 0x64, 0x65, 0x93, 0xf7, 0xb8, 0x16, 0x66, 0x99, 0x06, 0x79, 0x3f, 0x9d, 0xa5, - 0x1f, 0xa0, 0x87, 0xb6, 0x43, 0x6a, 0xe8, 0xe1, 0x63, 0x4f, 0x35, 0xb9, 0x3d, 0xab, 0xc8, 0xc9, - 0x34, 0x5c, 0xde, 0xc2, 0x1f, 0xf8, 0x92, 0x51, 0x83, 0xdc, 0xe6, 0x3f, 0xd4, 0x99, 0x65, 0x93, - 0x35, 0x14, 0x81, 0x0a, 0x3e, 0x44, 0x1b, 0x18, 0x6d, 0x99, 0xaa, 0xe9, 0x92, 0xff, 0x15, 0x45, - 0x8b, 0x7e, 0x9a, 0x75, 0xaf, 0x45, 0xfe, 0x0f, 0xb5, 0x33, 0xcb, 0x72, 0xc9, 0x1d, 0x5c, 0x39, - 0x18, 0x9c, 0x8f, 0xf8, 0xca, 0x6b, 0x34, 0xc8, 0x5d, 0x5c, 0x71, 0x8d, 0x1f, 0xf3, 0x7e, 0x63, - 0xd9, 0xba, 0x46, 0xee, 0xf1, 0x99, 0x8e, 0xc4, 0xfb, 0x33, 0x33, 0xe8, 0x01, 0xb2, 0x6c, 0x71, - 0xb7, 0xff, 0x9f, 0x77, 0x2a, 0x8f, 0x8f, 0xf9, 0x4f, 0x38, 0x52, 0x77, 0x0d, 0x4a, 0x3e, 0x15, - 0xa3, 0xa8, 0x6d, 0x6f, 0x20, 0xfa, 0x61, 0x92, 0x72, 0x58, 0x81, 0x44, 0xe5, 0xd9, 0xe9, 0x6d, - 0xb5, 0xdb, 0x64, 0x1d, 0x97, 0x75, 0xae, 0x55, 0x43, 0x96, 0x86, 0xc5, 0xa8, 0xde, 0x34, 0x49, - 0x1d, 0x43, 0xf1, 0xe8, 0x09, 0xa1, 0x7c, 0xb8, 0xe8, 0x8e, 0x4b, 0x1a, 0xe2, 0x3a, 0xd2, 0xd2, - 0x48, 0x93, 0x27, 0x80, 0xd5, 0x12, 0x79, 0xb9, 0x81, 0xc3, 0x20, 0xdd, 0xf1, 0x83, 0xd7, 0x39, - 0xa7, 0xd7, 0xd2, 0xc8, 0x26, 0x86, 0x45, 0xb3, 0x6c, 0xf2, 0x08, 0x23, 0x51, 0xd7, 0x1d, 0x3e, - 0xb7, 0x69, 0x9d, 0x18, 0xbc, 0x14, 0x1c, 0x9b, 0xb4, 0x90, 0xb7, 0x89, 0xea, 0x4d, 0xbe, 0xc2, - 0xb3, 0xb6, 0xd0, 0x21, 0xdd, 0x6c, 0x20, 0xd5, 0xe6, 0x69, 0x48, 0x1d, 0xf2, 0x98, 0xe7, 0x19, - 0x77, 0x98, 0x29, 0xff, 0x90, 0x60, 0x71, 0xe6, 0xfb, 0xf7, 0x95, 0x3f, 0xf8, 0x1e, 0xce, 0xbc, - 0x0a, 0xbc, 0x7f, 0xc2, 0xcf, 0xed, 0xec, 0xe3, 0xc0, 0xcc, 0xf7, 0x76, 0xfe, 0x95, 0x5e, 0x2e, - 0x6e, 0x25, 0x9f, 0xcc, 0x04, 0x16, 0x92, 0x37, 0x98, 0xc3, 0x06, 0x07, 0x40, 0x49, 0xb3, 0x5a, - 0x2d, 0xfc, 0x6a, 0x56, 0x9a, 0x50, 0x4e, 0x1d, 0x91, 0xab, 0xd3, 0x37, 0x22, 0xf1, 0x81, 0x3e, - 0x79, 0x21, 0x7a, 0x1b, 0x16, 0x9e, 0x06, 0xfd, 0xc1, 0xb0, 0x13, 0x6e, 0x6f, 0x47, 0x81, 0xf8, - 0x18, 0x2b, 0xb2, 0x0a, 0xa7, 0x59, 0x9c, 0xa4, 0x18, 0x70, 0x51, 0xdb, 0xf1, 0xa3, 0x68, 0xb0, - 0x3d, 0xe8, 0xf2, 0x37, 0x2c, 0xcd, 0x8f, 0x83, 0x7e, 0x38, 0x3e, 0xfc, 0x0d, 0xe5, 0x32, 0x40, - 0x37, 0x1c, 0x6e, 0x0f, 0x7a, 0xfc, 0xf9, 0x42, 0x7c, 0x5b, 0x66, 0x28, 0xca, 0x2f, 0x25, 0x78, - 0x5d, 0x1d, 0xfa, 0x3b, 0xfb, 0x5f, 0x05, 0x53, 0x47, 0x83, 0xef, 0xec, 0x05, 0x51, 0x2c, 0x7f, - 0x02, 0xe5, 0x5e, 0xf2, 0xc2, 0xf5, 0xf2, 0x53, 0x4a, 0xdf, 0xc2, 0xd8, 0x04, 0x23, 0x3f, 0x82, - 0xc5, 0x60, 0xd8, 0x0d, 0x7b, 0x83, 0x61, 0xbf, 0x93, 0x39, 0xb2, 0xeb, 0xc7, 0x1d, 0x99, 0x60, - 0xe7, 0x87, 0xb5, 0x10, 0x64, 0x76, 0xca, 0xef, 0x24, 0xa8, 0xbe, 0x68, 0x68, 0x34, 0x0a, 0x71, - 0x78, 0x32, 0x90, 0x53, 0xad, 0x9d, 0xe9, 0xd1, 0x4a, 0x27, 0x3f, 0xda, 0x73, 0x29, 0x7c, 0xfa, - 0x51, 0x9e, 0x7d, 0x82, 0xcb, 0xcd, 0x3e, 0xc1, 0xc9, 0x0f, 0x45, 0x06, 0x61, 0x04, 0xa3, 0xe4, - 0x7d, 0x49, 0x39, 0x5e, 0x0d, 0xb2, 0xb2, 0x29, 0x48, 0xf9, 0x5a, 0x82, 0x37, 0x13, 0x77, 0x44, - 0x9e, 0x7e, 0xbb, 0xa3, 0xff, 0x15, 0x5c, 0x3e, 0xca, 0xda, 0xe4, 0x08, 0x1e, 0x40, 0x19, 0x69, - 0xf1, 0x20, 0x88, 0xaa, 0x12, 0x8f, 0xc8, 0x95, 0x97, 0x95, 0x26, 0x9b, 0x20, 0x8e, 0x0b, 0xb6, - 0xf2, 0x0b, 0x09, 0x2e, 0x66, 0x95, 0x0f, 0x82, 0xe8, 0x5b, 0x19, 0xa3, 0x68, 0x52, 0x49, 0x53, - 0x33, 0xff, 0xe3, 0xc1, 0xf9, 0x99, 0x04, 0x17, 0xd2, 0xb2, 0xd8, 0x1f, 0xc6, 0xfe, 0xf3, 0x6f, - 0x65, 0x68, 0x7e, 0x2d, 0xc1, 0x6b, 0x07, 0xac, 0x4c, 0x22, 0x33, 0x53, 0x49, 0xd2, 0x2b, 0x54, - 0x92, 0xfc, 0x11, 0x94, 0xf8, 0x85, 0x33, 0xaa, 0xe6, 0x38, 0xfc, 0xad, 0x63, 0x26, 0x09, 0xf2, - 0xb1, 0x84, 0x7d, 0x26, 0xac, 0xf9, 0x03, 0x61, 0xf5, 0xe0, 0x7c, 0xd2, 0x64, 0xf7, 0xb1, 0x6b, - 0x7f, 0x43, 0x41, 0x55, 0xbe, 0x80, 0x0b, 0xb3, 0x62, 0x93, 0x28, 0xd8, 0x00, 0x5d, 0xd1, 0xc5, - 0xa7, 0x19, 0x72, 0xeb, 0x68, 0xc9, 0x87, 0xf7, 0x7f, 0x96, 0x91, 0xa1, 0xfc, 0x39, 0x0f, 0xe7, - 0x55, 0xf1, 0x67, 0x8e, 0xe0, 0x1b, 0xf4, 0x40, 0x66, 0x50, 0xde, 0x0e, 0xfc, 0x78, 0x6f, 0x1c, - 0x44, 0xc9, 0x43, 0xeb, 0x9d, 0xa3, 0xf1, 0x87, 0x18, 0x50, 0x6b, 0x24, 0x68, 0x36, 0x91, 0xf3, - 0x62, 0xaa, 0xe5, 0x5f, 0x3d, 0xd5, 0x96, 0xff, 0x26, 0x41, 0x39, 0xd5, 0x21, 0x5f, 0x83, 0xa5, - 0xe0, 0x79, 0x3c, 0xf6, 0xbb, 0x71, 0x27, 0xe2, 0x79, 0xc7, 0x7d, 0x2e, 0xb3, 0xc5, 0x84, 0x2a, - 0x92, 0x51, 0xbe, 0x01, 0x24, 0x65, 0x9b, 0x94, 0x69, 0x8e, 0x33, 0x9e, 0x4d, 0xe8, 0x69, 0x45, - 0xcb, 0x0f, 0x60, 0x39, 0x65, 0x3d, 0x64, 0xe2, 0xe4, 0x39, 0xa8, 0x9a, 0x70, 0xd4, 0x5f, 0x98, - 0x29, 0x77, 0xa1, 0x3a, 0xa3, 0x68, 0x3f, 0x83, 0x2d, 0x70, 0xec, 0xc5, 0xac, 0xc2, 0x69, 0x9b, - 0x95, 0xaf, 0xc2, 0x62, 0x37, 0xc9, 0x9c, 0x0e, 0xbf, 0x36, 0x95, 0x38, 0xfb, 0x42, 0x37, 0x93, - 0x4e, 0xca, 0x0f, 0xf3, 0xd8, 0x0c, 0xb2, 0x31, 0xff, 0xef, 0x57, 0x59, 0xb6, 0xf5, 0xe5, 0x4f, - 0xdd, 0xfa, 0x0e, 0x1f, 0xec, 0x85, 0x6f, 0x6c, 0xb0, 0x17, 0x0f, 0x0c, 0xf6, 0xd9, 0x42, 0x2c, - 0xfd, 0xfb, 0x85, 0x78, 0xf3, 0x2e, 0x2c, 0x64, 0xb3, 0x55, 0x5c, 0xc9, 0x4d, 0x4a, 0xce, 0xe0, - 0xca, 0x73, 0x1b, 0x77, 0xc5, 0x57, 0xaa, 0xe7, 0x36, 0x6e, 0xdf, 0x11, 0x5f, 0xa9, 0x9e, 0xdb, - 0xf8, 0x70, 0x8d, 0xe4, 0xd7, 0xfe, 0x30, 0x07, 0x67, 0x8d, 0x44, 0x99, 0x23, 0xfe, 0xca, 0x29, - 0xff, 0x5c, 0x02, 0x72, 0xf0, 0x16, 0x24, 0xdf, 0x3e, 0xae, 0x02, 0x0f, 0xbd, 0xda, 0x2d, 0xaf, - 0x9d, 0x06, 0x22, 0x92, 0x48, 0xb9, 0xf1, 0xbd, 0xdf, 0xff, 0xf1, 0x47, 0xb9, 0xab, 0xca, 0xe5, - 0xd5, 0x67, 0xb7, 0x57, 0xd3, 0xb0, 0x46, 0xf7, 0xfc, 0x03, 0xfc, 0xf7, 0xa4, 0x9b, 0xf2, 0x4f, - 0x25, 0x38, 0x7b, 0x60, 0x16, 0xca, 0xb7, 0x5e, 0xaa, 0xf2, 0xc0, 0x74, 0x5f, 0xbe, 0x7d, 0x0a, - 0x44, 0x62, 0xe3, 0x0a, 0xb7, 0x51, 0x51, 0xde, 0x3c, 0xd4, 0xc6, 0x94, 0x1d, 0x4d, 0xfc, 0xed, - 0x81, 0x5b, 0x45, 0xa6, 0xd6, 0x3e, 0x3a, 0x99, 0xde, 0x17, 0xae, 0x6c, 0xcb, 0x77, 0x4f, 0x0f, - 0x4c, 0xec, 0x5e, 0xe5, 0x76, 0xdf, 0x50, 0xde, 0x39, 0xda, 0xee, 0xfd, 0x99, 0x08, 0xff, 0x44, - 0x82, 0xc5, 0x99, 0x89, 0x2a, 0xd7, 0x5e, 0x7e, 0xa4, 0xd9, 0x0b, 0xc2, 0xf2, 0xea, 0x89, 0xf9, - 0x13, 0x1b, 0xaf, 0x73, 0x1b, 0xaf, 0x28, 0x6f, 0x1c, 0x7e, 0xfe, 0x9c, 0x19, 0x4d, 0xfb, 0xb1, - 0x04, 0x0b, 0xd9, 0x29, 0x27, 0x7f, 0xf0, 0xd2, 0x02, 0xca, 0x0e, 0xd9, 0xe5, 0xda, 0x49, 0xd9, - 0x13, 0xbb, 0xae, 0x71, 0xbb, 0xde, 0x52, 0x96, 0x67, 0xed, 0xca, 0x76, 0xc6, 0xd4, 0xac, 0x6c, - 0x73, 0x3c, 0xce, 0xac, 0x43, 0x06, 0xd7, 0x72, 0xed, 0xa4, 0xec, 0xc7, 0x9b, 0xe5, 0x67, 0x78, - 0xef, 0x49, 0x37, 0xd7, 0x9f, 0xc3, 0xa5, 0x6e, 0xb8, 0x7b, 0xa4, 0xec, 0xf5, 0x0b, 0x07, 0x5a, - 0x80, 0x3d, 0x0e, 0xe3, 0xd0, 0x96, 0x3e, 0x7f, 0x98, 0x20, 0xfa, 0x21, 0x72, 0xd7, 0xc2, 0x71, - 0x7f, 0xb5, 0x1f, 0x0c, 0xf9, 0x7f, 0x33, 0x24, 0xff, 0x35, 0xe1, 0x8f, 0x06, 0xd1, 0x8b, 0xff, - 0x39, 0x71, 0x3f, 0x5d, 0x3f, 0x2d, 0x71, 0xe6, 0x0f, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0x5f, - 0x87, 0x12, 0xb1, 0x65, 0x21, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/language/v1beta1/language_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/language/v1beta1/language_service.pb.go deleted file mode 100644 index 4eba8950..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/language/v1beta1/language_service.pb.go +++ /dev/null @@ -1,2311 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/language/v1beta1/language_service.proto - -/* -Package language is a generated protocol buffer package. - -It is generated from these files: - google/cloud/language/v1beta1/language_service.proto - -It has these top-level messages: - Document - Sentence - Entity - Token - Sentiment - PartOfSpeech - DependencyEdge - EntityMention - TextSpan - AnalyzeSentimentRequest - AnalyzeSentimentResponse - AnalyzeEntitiesRequest - AnalyzeEntitiesResponse - AnalyzeSyntaxRequest - AnalyzeSyntaxResponse - AnnotateTextRequest - AnnotateTextResponse -*/ -package language - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents the text encoding that the caller uses to process the output. -// Providing an `EncodingType` is recommended because the API provides the -// beginning offsets for various outputs, such as tokens and mentions, and -// languages that natively use different text encodings may access offsets -// differently. -type EncodingType int32 - -const ( - // If `EncodingType` is not specified, encoding-dependent information (such as - // `begin_offset`) will be set at `-1`. - EncodingType_NONE EncodingType = 0 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-8 encoding of the input. C++ and Go are examples of languages - // that use this encoding natively. - EncodingType_UTF8 EncodingType = 1 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-16 encoding of the input. Java and Javascript are examples of - // languages that use this encoding natively. - EncodingType_UTF16 EncodingType = 2 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-32 encoding of the input. Python is an example of a language - // that uses this encoding natively. - EncodingType_UTF32 EncodingType = 3 -) - -var EncodingType_name = map[int32]string{ - 0: "NONE", - 1: "UTF8", - 2: "UTF16", - 3: "UTF32", -} -var EncodingType_value = map[string]int32{ - "NONE": 0, - "UTF8": 1, - "UTF16": 2, - "UTF32": 3, -} - -func (x EncodingType) String() string { - return proto.EnumName(EncodingType_name, int32(x)) -} -func (EncodingType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// The document types enum. -type Document_Type int32 - -const ( - // The content type is not specified. - Document_TYPE_UNSPECIFIED Document_Type = 0 - // Plain text - Document_PLAIN_TEXT Document_Type = 1 - // HTML - Document_HTML Document_Type = 2 -) - -var Document_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "PLAIN_TEXT", - 2: "HTML", -} -var Document_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "PLAIN_TEXT": 1, - "HTML": 2, -} - -func (x Document_Type) String() string { - return proto.EnumName(Document_Type_name, int32(x)) -} -func (Document_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// The type of the entity. -type Entity_Type int32 - -const ( - // Unknown - Entity_UNKNOWN Entity_Type = 0 - // Person - Entity_PERSON Entity_Type = 1 - // Location - Entity_LOCATION Entity_Type = 2 - // Organization - Entity_ORGANIZATION Entity_Type = 3 - // Event - Entity_EVENT Entity_Type = 4 - // Work of art - Entity_WORK_OF_ART Entity_Type = 5 - // Consumer goods - Entity_CONSUMER_GOOD Entity_Type = 6 - // Other types - Entity_OTHER Entity_Type = 7 -) - -var Entity_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PERSON", - 2: "LOCATION", - 3: "ORGANIZATION", - 4: "EVENT", - 5: "WORK_OF_ART", - 6: "CONSUMER_GOOD", - 7: "OTHER", -} -var Entity_Type_value = map[string]int32{ - "UNKNOWN": 0, - "PERSON": 1, - "LOCATION": 2, - "ORGANIZATION": 3, - "EVENT": 4, - "WORK_OF_ART": 5, - "CONSUMER_GOOD": 6, - "OTHER": 7, -} - -func (x Entity_Type) String() string { - return proto.EnumName(Entity_Type_name, int32(x)) -} -func (Entity_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// The part of speech tags enum. -type PartOfSpeech_Tag int32 - -const ( - // Unknown - PartOfSpeech_UNKNOWN PartOfSpeech_Tag = 0 - // Adjective - PartOfSpeech_ADJ PartOfSpeech_Tag = 1 - // Adposition (preposition and postposition) - PartOfSpeech_ADP PartOfSpeech_Tag = 2 - // Adverb - PartOfSpeech_ADV PartOfSpeech_Tag = 3 - // Conjunction - PartOfSpeech_CONJ PartOfSpeech_Tag = 4 - // Determiner - PartOfSpeech_DET PartOfSpeech_Tag = 5 - // Noun (common and proper) - PartOfSpeech_NOUN PartOfSpeech_Tag = 6 - // Cardinal number - PartOfSpeech_NUM PartOfSpeech_Tag = 7 - // Pronoun - PartOfSpeech_PRON PartOfSpeech_Tag = 8 - // Particle or other function word - PartOfSpeech_PRT PartOfSpeech_Tag = 9 - // Punctuation - PartOfSpeech_PUNCT PartOfSpeech_Tag = 10 - // Verb (all tenses and modes) - PartOfSpeech_VERB PartOfSpeech_Tag = 11 - // Other: foreign words, typos, abbreviations - PartOfSpeech_X PartOfSpeech_Tag = 12 - // Affix - PartOfSpeech_AFFIX PartOfSpeech_Tag = 13 -) - -var PartOfSpeech_Tag_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ADJ", - 2: "ADP", - 3: "ADV", - 4: "CONJ", - 5: "DET", - 6: "NOUN", - 7: "NUM", - 8: "PRON", - 9: "PRT", - 10: "PUNCT", - 11: "VERB", - 12: "X", - 13: "AFFIX", -} -var PartOfSpeech_Tag_value = map[string]int32{ - "UNKNOWN": 0, - "ADJ": 1, - "ADP": 2, - "ADV": 3, - "CONJ": 4, - "DET": 5, - "NOUN": 6, - "NUM": 7, - "PRON": 8, - "PRT": 9, - "PUNCT": 10, - "VERB": 11, - "X": 12, - "AFFIX": 13, -} - -func (x PartOfSpeech_Tag) String() string { - return proto.EnumName(PartOfSpeech_Tag_name, int32(x)) -} -func (PartOfSpeech_Tag) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} } - -// The characteristic of a verb that expresses time flow during an event. -type PartOfSpeech_Aspect int32 - -const ( - // Aspect is not applicable in the analyzed language or is not predicted. - PartOfSpeech_ASPECT_UNKNOWN PartOfSpeech_Aspect = 0 - // Perfective - PartOfSpeech_PERFECTIVE PartOfSpeech_Aspect = 1 - // Imperfective - PartOfSpeech_IMPERFECTIVE PartOfSpeech_Aspect = 2 - // Progressive - PartOfSpeech_PROGRESSIVE PartOfSpeech_Aspect = 3 -) - -var PartOfSpeech_Aspect_name = map[int32]string{ - 0: "ASPECT_UNKNOWN", - 1: "PERFECTIVE", - 2: "IMPERFECTIVE", - 3: "PROGRESSIVE", -} -var PartOfSpeech_Aspect_value = map[string]int32{ - "ASPECT_UNKNOWN": 0, - "PERFECTIVE": 1, - "IMPERFECTIVE": 2, - "PROGRESSIVE": 3, -} - -func (x PartOfSpeech_Aspect) String() string { - return proto.EnumName(PartOfSpeech_Aspect_name, int32(x)) -} -func (PartOfSpeech_Aspect) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 1} } - -// The grammatical function performed by a noun or pronoun in a phrase, -// clause, or sentence. In some languages, other parts of speech, such as -// adjective and determiner, take case inflection in agreement with the noun. -type PartOfSpeech_Case int32 - -const ( - // Case is not applicable in the analyzed language or is not predicted. - PartOfSpeech_CASE_UNKNOWN PartOfSpeech_Case = 0 - // Accusative - PartOfSpeech_ACCUSATIVE PartOfSpeech_Case = 1 - // Adverbial - PartOfSpeech_ADVERBIAL PartOfSpeech_Case = 2 - // Complementive - PartOfSpeech_COMPLEMENTIVE PartOfSpeech_Case = 3 - // Dative - PartOfSpeech_DATIVE PartOfSpeech_Case = 4 - // Genitive - PartOfSpeech_GENITIVE PartOfSpeech_Case = 5 - // Instrumental - PartOfSpeech_INSTRUMENTAL PartOfSpeech_Case = 6 - // Locative - PartOfSpeech_LOCATIVE PartOfSpeech_Case = 7 - // Nominative - PartOfSpeech_NOMINATIVE PartOfSpeech_Case = 8 - // Oblique - PartOfSpeech_OBLIQUE PartOfSpeech_Case = 9 - // Partitive - PartOfSpeech_PARTITIVE PartOfSpeech_Case = 10 - // Prepositional - PartOfSpeech_PREPOSITIONAL PartOfSpeech_Case = 11 - // Reflexive - PartOfSpeech_REFLEXIVE_CASE PartOfSpeech_Case = 12 - // Relative - PartOfSpeech_RELATIVE_CASE PartOfSpeech_Case = 13 - // Vocative - PartOfSpeech_VOCATIVE PartOfSpeech_Case = 14 -) - -var PartOfSpeech_Case_name = map[int32]string{ - 0: "CASE_UNKNOWN", - 1: "ACCUSATIVE", - 2: "ADVERBIAL", - 3: "COMPLEMENTIVE", - 4: "DATIVE", - 5: "GENITIVE", - 6: "INSTRUMENTAL", - 7: "LOCATIVE", - 8: "NOMINATIVE", - 9: "OBLIQUE", - 10: "PARTITIVE", - 11: "PREPOSITIONAL", - 12: "REFLEXIVE_CASE", - 13: "RELATIVE_CASE", - 14: "VOCATIVE", -} -var PartOfSpeech_Case_value = map[string]int32{ - "CASE_UNKNOWN": 0, - "ACCUSATIVE": 1, - "ADVERBIAL": 2, - "COMPLEMENTIVE": 3, - "DATIVE": 4, - "GENITIVE": 5, - "INSTRUMENTAL": 6, - "LOCATIVE": 7, - "NOMINATIVE": 8, - "OBLIQUE": 9, - "PARTITIVE": 10, - "PREPOSITIONAL": 11, - "REFLEXIVE_CASE": 12, - "RELATIVE_CASE": 13, - "VOCATIVE": 14, -} - -func (x PartOfSpeech_Case) String() string { - return proto.EnumName(PartOfSpeech_Case_name, int32(x)) -} -func (PartOfSpeech_Case) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 2} } - -// Depending on the language, Form can be categorizing different forms of -// verbs, adjectives, adverbs, etc. For example, categorizing inflected -// endings of verbs and adjectives or distinguishing between short and long -// forms of adjectives and participles -type PartOfSpeech_Form int32 - -const ( - // Form is not applicable in the analyzed language or is not predicted. - PartOfSpeech_FORM_UNKNOWN PartOfSpeech_Form = 0 - // Adnomial - PartOfSpeech_ADNOMIAL PartOfSpeech_Form = 1 - // Auxiliary - PartOfSpeech_AUXILIARY PartOfSpeech_Form = 2 - // Complementizer - PartOfSpeech_COMPLEMENTIZER PartOfSpeech_Form = 3 - // Final ending - PartOfSpeech_FINAL_ENDING PartOfSpeech_Form = 4 - // Gerund - PartOfSpeech_GERUND PartOfSpeech_Form = 5 - // Realis - PartOfSpeech_REALIS PartOfSpeech_Form = 6 - // Irrealis - PartOfSpeech_IRREALIS PartOfSpeech_Form = 7 - // Short form - PartOfSpeech_SHORT PartOfSpeech_Form = 8 - // Long form - PartOfSpeech_LONG PartOfSpeech_Form = 9 - // Order form - PartOfSpeech_ORDER PartOfSpeech_Form = 10 - // Specific form - PartOfSpeech_SPECIFIC PartOfSpeech_Form = 11 -) - -var PartOfSpeech_Form_name = map[int32]string{ - 0: "FORM_UNKNOWN", - 1: "ADNOMIAL", - 2: "AUXILIARY", - 3: "COMPLEMENTIZER", - 4: "FINAL_ENDING", - 5: "GERUND", - 6: "REALIS", - 7: "IRREALIS", - 8: "SHORT", - 9: "LONG", - 10: "ORDER", - 11: "SPECIFIC", -} -var PartOfSpeech_Form_value = map[string]int32{ - "FORM_UNKNOWN": 0, - "ADNOMIAL": 1, - "AUXILIARY": 2, - "COMPLEMENTIZER": 3, - "FINAL_ENDING": 4, - "GERUND": 5, - "REALIS": 6, - "IRREALIS": 7, - "SHORT": 8, - "LONG": 9, - "ORDER": 10, - "SPECIFIC": 11, -} - -func (x PartOfSpeech_Form) String() string { - return proto.EnumName(PartOfSpeech_Form_name, int32(x)) -} -func (PartOfSpeech_Form) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 3} } - -// Gender classes of nouns reflected in the behaviour of associated words. -type PartOfSpeech_Gender int32 - -const ( - // Gender is not applicable in the analyzed language or is not predicted. - PartOfSpeech_GENDER_UNKNOWN PartOfSpeech_Gender = 0 - // Feminine - PartOfSpeech_FEMININE PartOfSpeech_Gender = 1 - // Masculine - PartOfSpeech_MASCULINE PartOfSpeech_Gender = 2 - // Neuter - PartOfSpeech_NEUTER PartOfSpeech_Gender = 3 -) - -var PartOfSpeech_Gender_name = map[int32]string{ - 0: "GENDER_UNKNOWN", - 1: "FEMININE", - 2: "MASCULINE", - 3: "NEUTER", -} -var PartOfSpeech_Gender_value = map[string]int32{ - "GENDER_UNKNOWN": 0, - "FEMININE": 1, - "MASCULINE": 2, - "NEUTER": 3, -} - -func (x PartOfSpeech_Gender) String() string { - return proto.EnumName(PartOfSpeech_Gender_name, int32(x)) -} -func (PartOfSpeech_Gender) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 4} } - -// The grammatical feature of verbs, used for showing modality and attitude. -type PartOfSpeech_Mood int32 - -const ( - // Mood is not applicable in the analyzed language or is not predicted. - PartOfSpeech_MOOD_UNKNOWN PartOfSpeech_Mood = 0 - // Conditional - PartOfSpeech_CONDITIONAL_MOOD PartOfSpeech_Mood = 1 - // Imperative - PartOfSpeech_IMPERATIVE PartOfSpeech_Mood = 2 - // Indicative - PartOfSpeech_INDICATIVE PartOfSpeech_Mood = 3 - // Interrogative - PartOfSpeech_INTERROGATIVE PartOfSpeech_Mood = 4 - // Jussive - PartOfSpeech_JUSSIVE PartOfSpeech_Mood = 5 - // Subjunctive - PartOfSpeech_SUBJUNCTIVE PartOfSpeech_Mood = 6 -) - -var PartOfSpeech_Mood_name = map[int32]string{ - 0: "MOOD_UNKNOWN", - 1: "CONDITIONAL_MOOD", - 2: "IMPERATIVE", - 3: "INDICATIVE", - 4: "INTERROGATIVE", - 5: "JUSSIVE", - 6: "SUBJUNCTIVE", -} -var PartOfSpeech_Mood_value = map[string]int32{ - "MOOD_UNKNOWN": 0, - "CONDITIONAL_MOOD": 1, - "IMPERATIVE": 2, - "INDICATIVE": 3, - "INTERROGATIVE": 4, - "JUSSIVE": 5, - "SUBJUNCTIVE": 6, -} - -func (x PartOfSpeech_Mood) String() string { - return proto.EnumName(PartOfSpeech_Mood_name, int32(x)) -} -func (PartOfSpeech_Mood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 5} } - -// Count distinctions. -type PartOfSpeech_Number int32 - -const ( - // Number is not applicable in the analyzed language or is not predicted. - PartOfSpeech_NUMBER_UNKNOWN PartOfSpeech_Number = 0 - // Singular - PartOfSpeech_SINGULAR PartOfSpeech_Number = 1 - // Plural - PartOfSpeech_PLURAL PartOfSpeech_Number = 2 - // Dual - PartOfSpeech_DUAL PartOfSpeech_Number = 3 -) - -var PartOfSpeech_Number_name = map[int32]string{ - 0: "NUMBER_UNKNOWN", - 1: "SINGULAR", - 2: "PLURAL", - 3: "DUAL", -} -var PartOfSpeech_Number_value = map[string]int32{ - "NUMBER_UNKNOWN": 0, - "SINGULAR": 1, - "PLURAL": 2, - "DUAL": 3, -} - -func (x PartOfSpeech_Number) String() string { - return proto.EnumName(PartOfSpeech_Number_name, int32(x)) -} -func (PartOfSpeech_Number) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 6} } - -// The distinction between the speaker, second person, third person, etc. -type PartOfSpeech_Person int32 - -const ( - // Person is not applicable in the analyzed language or is not predicted. - PartOfSpeech_PERSON_UNKNOWN PartOfSpeech_Person = 0 - // First - PartOfSpeech_FIRST PartOfSpeech_Person = 1 - // Second - PartOfSpeech_SECOND PartOfSpeech_Person = 2 - // Third - PartOfSpeech_THIRD PartOfSpeech_Person = 3 - // Reflexive - PartOfSpeech_REFLEXIVE_PERSON PartOfSpeech_Person = 4 -) - -var PartOfSpeech_Person_name = map[int32]string{ - 0: "PERSON_UNKNOWN", - 1: "FIRST", - 2: "SECOND", - 3: "THIRD", - 4: "REFLEXIVE_PERSON", -} -var PartOfSpeech_Person_value = map[string]int32{ - "PERSON_UNKNOWN": 0, - "FIRST": 1, - "SECOND": 2, - "THIRD": 3, - "REFLEXIVE_PERSON": 4, -} - -func (x PartOfSpeech_Person) String() string { - return proto.EnumName(PartOfSpeech_Person_name, int32(x)) -} -func (PartOfSpeech_Person) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 7} } - -// This category shows if the token is part of a proper name. -type PartOfSpeech_Proper int32 - -const ( - // Proper is not applicable in the analyzed language or is not predicted. - PartOfSpeech_PROPER_UNKNOWN PartOfSpeech_Proper = 0 - // Proper - PartOfSpeech_PROPER PartOfSpeech_Proper = 1 - // Not proper - PartOfSpeech_NOT_PROPER PartOfSpeech_Proper = 2 -) - -var PartOfSpeech_Proper_name = map[int32]string{ - 0: "PROPER_UNKNOWN", - 1: "PROPER", - 2: "NOT_PROPER", -} -var PartOfSpeech_Proper_value = map[string]int32{ - "PROPER_UNKNOWN": 0, - "PROPER": 1, - "NOT_PROPER": 2, -} - -func (x PartOfSpeech_Proper) String() string { - return proto.EnumName(PartOfSpeech_Proper_name, int32(x)) -} -func (PartOfSpeech_Proper) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 8} } - -// Reciprocal features of a pronoun. -type PartOfSpeech_Reciprocity int32 - -const ( - // Reciprocity is not applicable in the analyzed language or is not - // predicted. - PartOfSpeech_RECIPROCITY_UNKNOWN PartOfSpeech_Reciprocity = 0 - // Reciprocal - PartOfSpeech_RECIPROCAL PartOfSpeech_Reciprocity = 1 - // Non-reciprocal - PartOfSpeech_NON_RECIPROCAL PartOfSpeech_Reciprocity = 2 -) - -var PartOfSpeech_Reciprocity_name = map[int32]string{ - 0: "RECIPROCITY_UNKNOWN", - 1: "RECIPROCAL", - 2: "NON_RECIPROCAL", -} -var PartOfSpeech_Reciprocity_value = map[string]int32{ - "RECIPROCITY_UNKNOWN": 0, - "RECIPROCAL": 1, - "NON_RECIPROCAL": 2, -} - -func (x PartOfSpeech_Reciprocity) String() string { - return proto.EnumName(PartOfSpeech_Reciprocity_name, int32(x)) -} -func (PartOfSpeech_Reciprocity) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 9} } - -// Time reference. -type PartOfSpeech_Tense int32 - -const ( - // Tense is not applicable in the analyzed language or is not predicted. - PartOfSpeech_TENSE_UNKNOWN PartOfSpeech_Tense = 0 - // Conditional - PartOfSpeech_CONDITIONAL_TENSE PartOfSpeech_Tense = 1 - // Future - PartOfSpeech_FUTURE PartOfSpeech_Tense = 2 - // Past - PartOfSpeech_PAST PartOfSpeech_Tense = 3 - // Present - PartOfSpeech_PRESENT PartOfSpeech_Tense = 4 - // Imperfect - PartOfSpeech_IMPERFECT PartOfSpeech_Tense = 5 - // Pluperfect - PartOfSpeech_PLUPERFECT PartOfSpeech_Tense = 6 -) - -var PartOfSpeech_Tense_name = map[int32]string{ - 0: "TENSE_UNKNOWN", - 1: "CONDITIONAL_TENSE", - 2: "FUTURE", - 3: "PAST", - 4: "PRESENT", - 5: "IMPERFECT", - 6: "PLUPERFECT", -} -var PartOfSpeech_Tense_value = map[string]int32{ - "TENSE_UNKNOWN": 0, - "CONDITIONAL_TENSE": 1, - "FUTURE": 2, - "PAST": 3, - "PRESENT": 4, - "IMPERFECT": 5, - "PLUPERFECT": 6, -} - -func (x PartOfSpeech_Tense) String() string { - return proto.EnumName(PartOfSpeech_Tense_name, int32(x)) -} -func (PartOfSpeech_Tense) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 10} } - -// The relationship between the action that a verb expresses and the -// participants identified by its arguments. -type PartOfSpeech_Voice int32 - -const ( - // Voice is not applicable in the analyzed language or is not predicted. - PartOfSpeech_VOICE_UNKNOWN PartOfSpeech_Voice = 0 - // Active - PartOfSpeech_ACTIVE PartOfSpeech_Voice = 1 - // Causative - PartOfSpeech_CAUSATIVE PartOfSpeech_Voice = 2 - // Passive - PartOfSpeech_PASSIVE PartOfSpeech_Voice = 3 -) - -var PartOfSpeech_Voice_name = map[int32]string{ - 0: "VOICE_UNKNOWN", - 1: "ACTIVE", - 2: "CAUSATIVE", - 3: "PASSIVE", -} -var PartOfSpeech_Voice_value = map[string]int32{ - "VOICE_UNKNOWN": 0, - "ACTIVE": 1, - "CAUSATIVE": 2, - "PASSIVE": 3, -} - -func (x PartOfSpeech_Voice) String() string { - return proto.EnumName(PartOfSpeech_Voice_name, int32(x)) -} -func (PartOfSpeech_Voice) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 11} } - -// The parse label enum for the token. -type DependencyEdge_Label int32 - -const ( - // Unknown - DependencyEdge_UNKNOWN DependencyEdge_Label = 0 - // Abbreviation modifier - DependencyEdge_ABBREV DependencyEdge_Label = 1 - // Adjectival complement - DependencyEdge_ACOMP DependencyEdge_Label = 2 - // Adverbial clause modifier - DependencyEdge_ADVCL DependencyEdge_Label = 3 - // Adverbial modifier - DependencyEdge_ADVMOD DependencyEdge_Label = 4 - // Adjectival modifier of an NP - DependencyEdge_AMOD DependencyEdge_Label = 5 - // Appositional modifier of an NP - DependencyEdge_APPOS DependencyEdge_Label = 6 - // Attribute dependent of a copular verb - DependencyEdge_ATTR DependencyEdge_Label = 7 - // Auxiliary (non-main) verb - DependencyEdge_AUX DependencyEdge_Label = 8 - // Passive auxiliary - DependencyEdge_AUXPASS DependencyEdge_Label = 9 - // Coordinating conjunction - DependencyEdge_CC DependencyEdge_Label = 10 - // Clausal complement of a verb or adjective - DependencyEdge_CCOMP DependencyEdge_Label = 11 - // Conjunct - DependencyEdge_CONJ DependencyEdge_Label = 12 - // Clausal subject - DependencyEdge_CSUBJ DependencyEdge_Label = 13 - // Clausal passive subject - DependencyEdge_CSUBJPASS DependencyEdge_Label = 14 - // Dependency (unable to determine) - DependencyEdge_DEP DependencyEdge_Label = 15 - // Determiner - DependencyEdge_DET DependencyEdge_Label = 16 - // Discourse - DependencyEdge_DISCOURSE DependencyEdge_Label = 17 - // Direct object - DependencyEdge_DOBJ DependencyEdge_Label = 18 - // Expletive - DependencyEdge_EXPL DependencyEdge_Label = 19 - // Goes with (part of a word in a text not well edited) - DependencyEdge_GOESWITH DependencyEdge_Label = 20 - // Indirect object - DependencyEdge_IOBJ DependencyEdge_Label = 21 - // Marker (word introducing a subordinate clause) - DependencyEdge_MARK DependencyEdge_Label = 22 - // Multi-word expression - DependencyEdge_MWE DependencyEdge_Label = 23 - // Multi-word verbal expression - DependencyEdge_MWV DependencyEdge_Label = 24 - // Negation modifier - DependencyEdge_NEG DependencyEdge_Label = 25 - // Noun compound modifier - DependencyEdge_NN DependencyEdge_Label = 26 - // Noun phrase used as an adverbial modifier - DependencyEdge_NPADVMOD DependencyEdge_Label = 27 - // Nominal subject - DependencyEdge_NSUBJ DependencyEdge_Label = 28 - // Passive nominal subject - DependencyEdge_NSUBJPASS DependencyEdge_Label = 29 - // Numeric modifier of a noun - DependencyEdge_NUM DependencyEdge_Label = 30 - // Element of compound number - DependencyEdge_NUMBER DependencyEdge_Label = 31 - // Punctuation mark - DependencyEdge_P DependencyEdge_Label = 32 - // Parataxis relation - DependencyEdge_PARATAXIS DependencyEdge_Label = 33 - // Participial modifier - DependencyEdge_PARTMOD DependencyEdge_Label = 34 - // The complement of a preposition is a clause - DependencyEdge_PCOMP DependencyEdge_Label = 35 - // Object of a preposition - DependencyEdge_POBJ DependencyEdge_Label = 36 - // Possession modifier - DependencyEdge_POSS DependencyEdge_Label = 37 - // Postverbal negative particle - DependencyEdge_POSTNEG DependencyEdge_Label = 38 - // Predicate complement - DependencyEdge_PRECOMP DependencyEdge_Label = 39 - // Preconjunt - DependencyEdge_PRECONJ DependencyEdge_Label = 40 - // Predeterminer - DependencyEdge_PREDET DependencyEdge_Label = 41 - // Prefix - DependencyEdge_PREF DependencyEdge_Label = 42 - // Prepositional modifier - DependencyEdge_PREP DependencyEdge_Label = 43 - // The relationship between a verb and verbal morpheme - DependencyEdge_PRONL DependencyEdge_Label = 44 - // Particle - DependencyEdge_PRT DependencyEdge_Label = 45 - // Associative or possessive marker - DependencyEdge_PS DependencyEdge_Label = 46 - // Quantifier phrase modifier - DependencyEdge_QUANTMOD DependencyEdge_Label = 47 - // Relative clause modifier - DependencyEdge_RCMOD DependencyEdge_Label = 48 - // Complementizer in relative clause - DependencyEdge_RCMODREL DependencyEdge_Label = 49 - // Ellipsis without a preceding predicate - DependencyEdge_RDROP DependencyEdge_Label = 50 - // Referent - DependencyEdge_REF DependencyEdge_Label = 51 - // Remnant - DependencyEdge_REMNANT DependencyEdge_Label = 52 - // Reparandum - DependencyEdge_REPARANDUM DependencyEdge_Label = 53 - // Root - DependencyEdge_ROOT DependencyEdge_Label = 54 - // Suffix specifying a unit of number - DependencyEdge_SNUM DependencyEdge_Label = 55 - // Suffix - DependencyEdge_SUFF DependencyEdge_Label = 56 - // Temporal modifier - DependencyEdge_TMOD DependencyEdge_Label = 57 - // Topic marker - DependencyEdge_TOPIC DependencyEdge_Label = 58 - // Clause headed by an infinite form of the verb that modifies a noun - DependencyEdge_VMOD DependencyEdge_Label = 59 - // Vocative - DependencyEdge_VOCATIVE DependencyEdge_Label = 60 - // Open clausal complement - DependencyEdge_XCOMP DependencyEdge_Label = 61 - // Name suffix - DependencyEdge_SUFFIX DependencyEdge_Label = 62 - // Name title - DependencyEdge_TITLE DependencyEdge_Label = 63 - // Adverbial phrase modifier - DependencyEdge_ADVPHMOD DependencyEdge_Label = 64 - // Causative auxiliary - DependencyEdge_AUXCAUS DependencyEdge_Label = 65 - // Helper auxiliary - DependencyEdge_AUXVV DependencyEdge_Label = 66 - // Rentaishi (Prenominal modifier) - DependencyEdge_DTMOD DependencyEdge_Label = 67 - // Foreign words - DependencyEdge_FOREIGN DependencyEdge_Label = 68 - // Keyword - DependencyEdge_KW DependencyEdge_Label = 69 - // List for chains of comparable items - DependencyEdge_LIST DependencyEdge_Label = 70 - // Nominalized clause - DependencyEdge_NOMC DependencyEdge_Label = 71 - // Nominalized clausal subject - DependencyEdge_NOMCSUBJ DependencyEdge_Label = 72 - // Nominalized clausal passive - DependencyEdge_NOMCSUBJPASS DependencyEdge_Label = 73 - // Compound of numeric modifier - DependencyEdge_NUMC DependencyEdge_Label = 74 - // Copula - DependencyEdge_COP DependencyEdge_Label = 75 - // Dislocated relation (for fronted/topicalized elements) - DependencyEdge_DISLOCATED DependencyEdge_Label = 76 -) - -var DependencyEdge_Label_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ABBREV", - 2: "ACOMP", - 3: "ADVCL", - 4: "ADVMOD", - 5: "AMOD", - 6: "APPOS", - 7: "ATTR", - 8: "AUX", - 9: "AUXPASS", - 10: "CC", - 11: "CCOMP", - 12: "CONJ", - 13: "CSUBJ", - 14: "CSUBJPASS", - 15: "DEP", - 16: "DET", - 17: "DISCOURSE", - 18: "DOBJ", - 19: "EXPL", - 20: "GOESWITH", - 21: "IOBJ", - 22: "MARK", - 23: "MWE", - 24: "MWV", - 25: "NEG", - 26: "NN", - 27: "NPADVMOD", - 28: "NSUBJ", - 29: "NSUBJPASS", - 30: "NUM", - 31: "NUMBER", - 32: "P", - 33: "PARATAXIS", - 34: "PARTMOD", - 35: "PCOMP", - 36: "POBJ", - 37: "POSS", - 38: "POSTNEG", - 39: "PRECOMP", - 40: "PRECONJ", - 41: "PREDET", - 42: "PREF", - 43: "PREP", - 44: "PRONL", - 45: "PRT", - 46: "PS", - 47: "QUANTMOD", - 48: "RCMOD", - 49: "RCMODREL", - 50: "RDROP", - 51: "REF", - 52: "REMNANT", - 53: "REPARANDUM", - 54: "ROOT", - 55: "SNUM", - 56: "SUFF", - 57: "TMOD", - 58: "TOPIC", - 59: "VMOD", - 60: "VOCATIVE", - 61: "XCOMP", - 62: "SUFFIX", - 63: "TITLE", - 64: "ADVPHMOD", - 65: "AUXCAUS", - 66: "AUXVV", - 67: "DTMOD", - 68: "FOREIGN", - 69: "KW", - 70: "LIST", - 71: "NOMC", - 72: "NOMCSUBJ", - 73: "NOMCSUBJPASS", - 74: "NUMC", - 75: "COP", - 76: "DISLOCATED", -} -var DependencyEdge_Label_value = map[string]int32{ - "UNKNOWN": 0, - "ABBREV": 1, - "ACOMP": 2, - "ADVCL": 3, - "ADVMOD": 4, - "AMOD": 5, - "APPOS": 6, - "ATTR": 7, - "AUX": 8, - "AUXPASS": 9, - "CC": 10, - "CCOMP": 11, - "CONJ": 12, - "CSUBJ": 13, - "CSUBJPASS": 14, - "DEP": 15, - "DET": 16, - "DISCOURSE": 17, - "DOBJ": 18, - "EXPL": 19, - "GOESWITH": 20, - "IOBJ": 21, - "MARK": 22, - "MWE": 23, - "MWV": 24, - "NEG": 25, - "NN": 26, - "NPADVMOD": 27, - "NSUBJ": 28, - "NSUBJPASS": 29, - "NUM": 30, - "NUMBER": 31, - "P": 32, - "PARATAXIS": 33, - "PARTMOD": 34, - "PCOMP": 35, - "POBJ": 36, - "POSS": 37, - "POSTNEG": 38, - "PRECOMP": 39, - "PRECONJ": 40, - "PREDET": 41, - "PREF": 42, - "PREP": 43, - "PRONL": 44, - "PRT": 45, - "PS": 46, - "QUANTMOD": 47, - "RCMOD": 48, - "RCMODREL": 49, - "RDROP": 50, - "REF": 51, - "REMNANT": 52, - "REPARANDUM": 53, - "ROOT": 54, - "SNUM": 55, - "SUFF": 56, - "TMOD": 57, - "TOPIC": 58, - "VMOD": 59, - "VOCATIVE": 60, - "XCOMP": 61, - "SUFFIX": 62, - "TITLE": 63, - "ADVPHMOD": 64, - "AUXCAUS": 65, - "AUXVV": 66, - "DTMOD": 67, - "FOREIGN": 68, - "KW": 69, - "LIST": 70, - "NOMC": 71, - "NOMCSUBJ": 72, - "NOMCSUBJPASS": 73, - "NUMC": 74, - "COP": 75, - "DISLOCATED": 76, -} - -func (x DependencyEdge_Label) String() string { - return proto.EnumName(DependencyEdge_Label_name, int32(x)) -} -func (DependencyEdge_Label) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6, 0} } - -// The supported types of mentions. -type EntityMention_Type int32 - -const ( - // Unknown - EntityMention_TYPE_UNKNOWN EntityMention_Type = 0 - // Proper name - EntityMention_PROPER EntityMention_Type = 1 - // Common noun (or noun compound) - EntityMention_COMMON EntityMention_Type = 2 -) - -var EntityMention_Type_name = map[int32]string{ - 0: "TYPE_UNKNOWN", - 1: "PROPER", - 2: "COMMON", -} -var EntityMention_Type_value = map[string]int32{ - "TYPE_UNKNOWN": 0, - "PROPER": 1, - "COMMON": 2, -} - -func (x EntityMention_Type) String() string { - return proto.EnumName(EntityMention_Type_name, int32(x)) -} -func (EntityMention_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -// ################################################################ # -// -// Represents the input to API methods. -type Document struct { - // Required. If the type is not set or is `TYPE_UNSPECIFIED`, - // returns an `INVALID_ARGUMENT` error. - Type Document_Type `protobuf:"varint,1,opt,name=type,enum=google.cloud.language.v1beta1.Document_Type" json:"type,omitempty"` - // The source of the document: a string containing the content or a - // Google Cloud Storage URI. - // - // Types that are valid to be assigned to Source: - // *Document_Content - // *Document_GcsContentUri - Source isDocument_Source `protobuf_oneof:"source"` - // The language of the document (if not specified, the language is - // automatically detected). Both ISO and BCP-47 language codes are - // accepted.<br> - // [Language Support](https://cloud.google.com/natural-language/docs/languages) - // lists currently supported languages for each API method. - // If the language (either specified by the caller or automatically detected) - // is not supported by the called API method, an `INVALID_ARGUMENT` error - // is returned. - Language string `protobuf:"bytes,4,opt,name=language" json:"language,omitempty"` -} - -func (m *Document) Reset() { *m = Document{} } -func (m *Document) String() string { return proto.CompactTextString(m) } -func (*Document) ProtoMessage() {} -func (*Document) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isDocument_Source interface { - isDocument_Source() -} - -type Document_Content struct { - Content string `protobuf:"bytes,2,opt,name=content,oneof"` -} -type Document_GcsContentUri struct { - GcsContentUri string `protobuf:"bytes,3,opt,name=gcs_content_uri,json=gcsContentUri,oneof"` -} - -func (*Document_Content) isDocument_Source() {} -func (*Document_GcsContentUri) isDocument_Source() {} - -func (m *Document) GetSource() isDocument_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *Document) GetType() Document_Type { - if m != nil { - return m.Type - } - return Document_TYPE_UNSPECIFIED -} - -func (m *Document) GetContent() string { - if x, ok := m.GetSource().(*Document_Content); ok { - return x.Content - } - return "" -} - -func (m *Document) GetGcsContentUri() string { - if x, ok := m.GetSource().(*Document_GcsContentUri); ok { - return x.GcsContentUri - } - return "" -} - -func (m *Document) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Document) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Document_OneofMarshaler, _Document_OneofUnmarshaler, _Document_OneofSizer, []interface{}{ - (*Document_Content)(nil), - (*Document_GcsContentUri)(nil), - } -} - -func _Document_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Document) - // source - switch x := m.Source.(type) { - case *Document_Content: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Content) - case *Document_GcsContentUri: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.GcsContentUri) - case nil: - default: - return fmt.Errorf("Document.Source has unexpected type %T", x) - } - return nil -} - -func _Document_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Document) - switch tag { - case 2: // source.content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Source = &Document_Content{x} - return true, err - case 3: // source.gcs_content_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Source = &Document_GcsContentUri{x} - return true, err - default: - return false, nil - } -} - -func _Document_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Document) - // source - switch x := m.Source.(type) { - case *Document_Content: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Content))) - n += len(x.Content) - case *Document_GcsContentUri: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.GcsContentUri))) - n += len(x.GcsContentUri) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents a sentence in the input document. -type Sentence struct { - // The sentence text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // For calls to [AnalyzeSentiment][] or if - // [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1beta1.AnnotateTextRequest.Features.extract_document_sentiment] is set to - // true, this field will contain the sentiment for the sentence. - Sentiment *Sentiment `protobuf:"bytes,2,opt,name=sentiment" json:"sentiment,omitempty"` -} - -func (m *Sentence) Reset() { *m = Sentence{} } -func (m *Sentence) String() string { return proto.CompactTextString(m) } -func (*Sentence) ProtoMessage() {} -func (*Sentence) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Sentence) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *Sentence) GetSentiment() *Sentiment { - if m != nil { - return m.Sentiment - } - return nil -} - -// Represents a phrase in the text that is a known entity, such as -// a person, an organization, or location. The API associates information, such -// as salience and mentions, with entities. -type Entity struct { - // The representative name for the entity. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The entity type. - Type Entity_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.language.v1beta1.Entity_Type" json:"type,omitempty"` - // Metadata associated with the entity. - // - // Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if - // available. The associated keys are "wikipedia_url" and "mid", respectively. - Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The salience score associated with the entity in the [0, 1.0] range. - // - // The salience score for an entity provides information about the - // importance or centrality of that entity to the entire document text. - // Scores closer to 0 are less salient, while scores closer to 1.0 are highly - // salient. - Salience float32 `protobuf:"fixed32,4,opt,name=salience" json:"salience,omitempty"` - // The mentions of this entity in the input document. The API currently - // supports proper noun mentions. - Mentions []*EntityMention `protobuf:"bytes,5,rep,name=mentions" json:"mentions,omitempty"` -} - -func (m *Entity) Reset() { *m = Entity{} } -func (m *Entity) String() string { return proto.CompactTextString(m) } -func (*Entity) ProtoMessage() {} -func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Entity) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Entity) GetType() Entity_Type { - if m != nil { - return m.Type - } - return Entity_UNKNOWN -} - -func (m *Entity) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *Entity) GetSalience() float32 { - if m != nil { - return m.Salience - } - return 0 -} - -func (m *Entity) GetMentions() []*EntityMention { - if m != nil { - return m.Mentions - } - return nil -} - -// Represents the smallest syntactic building block of the text. -type Token struct { - // The token text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // Parts of speech tag for this token. - PartOfSpeech *PartOfSpeech `protobuf:"bytes,2,opt,name=part_of_speech,json=partOfSpeech" json:"part_of_speech,omitempty"` - // Dependency tree parse for this token. - DependencyEdge *DependencyEdge `protobuf:"bytes,3,opt,name=dependency_edge,json=dependencyEdge" json:"dependency_edge,omitempty"` - // [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token. - Lemma string `protobuf:"bytes,4,opt,name=lemma" json:"lemma,omitempty"` -} - -func (m *Token) Reset() { *m = Token{} } -func (m *Token) String() string { return proto.CompactTextString(m) } -func (*Token) ProtoMessage() {} -func (*Token) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Token) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *Token) GetPartOfSpeech() *PartOfSpeech { - if m != nil { - return m.PartOfSpeech - } - return nil -} - -func (m *Token) GetDependencyEdge() *DependencyEdge { - if m != nil { - return m.DependencyEdge - } - return nil -} - -func (m *Token) GetLemma() string { - if m != nil { - return m.Lemma - } - return "" -} - -// Represents the feeling associated with the entire text or entities in -// the text. -type Sentiment struct { - // DEPRECATED FIELD - This field is being deprecated in - // favor of score. Please refer to our documentation at - // https://cloud.google.com/natural-language/docs for more information. - Polarity float32 `protobuf:"fixed32,1,opt,name=polarity" json:"polarity,omitempty"` - // A non-negative number in the [0, +inf) range, which represents - // the absolute magnitude of sentiment regardless of score (positive or - // negative). - Magnitude float32 `protobuf:"fixed32,2,opt,name=magnitude" json:"magnitude,omitempty"` - // Sentiment score between -1.0 (negative sentiment) and 1.0 - // (positive sentiment). - Score float32 `protobuf:"fixed32,3,opt,name=score" json:"score,omitempty"` -} - -func (m *Sentiment) Reset() { *m = Sentiment{} } -func (m *Sentiment) String() string { return proto.CompactTextString(m) } -func (*Sentiment) ProtoMessage() {} -func (*Sentiment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Sentiment) GetPolarity() float32 { - if m != nil { - return m.Polarity - } - return 0 -} - -func (m *Sentiment) GetMagnitude() float32 { - if m != nil { - return m.Magnitude - } - return 0 -} - -func (m *Sentiment) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -// Represents part of speech information for a token. -type PartOfSpeech struct { - // The part of speech tag. - Tag PartOfSpeech_Tag `protobuf:"varint,1,opt,name=tag,enum=google.cloud.language.v1beta1.PartOfSpeech_Tag" json:"tag,omitempty"` - // The grammatical aspect. - Aspect PartOfSpeech_Aspect `protobuf:"varint,2,opt,name=aspect,enum=google.cloud.language.v1beta1.PartOfSpeech_Aspect" json:"aspect,omitempty"` - // The grammatical case. - Case PartOfSpeech_Case `protobuf:"varint,3,opt,name=case,enum=google.cloud.language.v1beta1.PartOfSpeech_Case" json:"case,omitempty"` - // The grammatical form. - Form PartOfSpeech_Form `protobuf:"varint,4,opt,name=form,enum=google.cloud.language.v1beta1.PartOfSpeech_Form" json:"form,omitempty"` - // The grammatical gender. - Gender PartOfSpeech_Gender `protobuf:"varint,5,opt,name=gender,enum=google.cloud.language.v1beta1.PartOfSpeech_Gender" json:"gender,omitempty"` - // The grammatical mood. - Mood PartOfSpeech_Mood `protobuf:"varint,6,opt,name=mood,enum=google.cloud.language.v1beta1.PartOfSpeech_Mood" json:"mood,omitempty"` - // The grammatical number. - Number PartOfSpeech_Number `protobuf:"varint,7,opt,name=number,enum=google.cloud.language.v1beta1.PartOfSpeech_Number" json:"number,omitempty"` - // The grammatical person. - Person PartOfSpeech_Person `protobuf:"varint,8,opt,name=person,enum=google.cloud.language.v1beta1.PartOfSpeech_Person" json:"person,omitempty"` - // The grammatical properness. - Proper PartOfSpeech_Proper `protobuf:"varint,9,opt,name=proper,enum=google.cloud.language.v1beta1.PartOfSpeech_Proper" json:"proper,omitempty"` - // The grammatical reciprocity. - Reciprocity PartOfSpeech_Reciprocity `protobuf:"varint,10,opt,name=reciprocity,enum=google.cloud.language.v1beta1.PartOfSpeech_Reciprocity" json:"reciprocity,omitempty"` - // The grammatical tense. - Tense PartOfSpeech_Tense `protobuf:"varint,11,opt,name=tense,enum=google.cloud.language.v1beta1.PartOfSpeech_Tense" json:"tense,omitempty"` - // The grammatical voice. - Voice PartOfSpeech_Voice `protobuf:"varint,12,opt,name=voice,enum=google.cloud.language.v1beta1.PartOfSpeech_Voice" json:"voice,omitempty"` -} - -func (m *PartOfSpeech) Reset() { *m = PartOfSpeech{} } -func (m *PartOfSpeech) String() string { return proto.CompactTextString(m) } -func (*PartOfSpeech) ProtoMessage() {} -func (*PartOfSpeech) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *PartOfSpeech) GetTag() PartOfSpeech_Tag { - if m != nil { - return m.Tag - } - return PartOfSpeech_UNKNOWN -} - -func (m *PartOfSpeech) GetAspect() PartOfSpeech_Aspect { - if m != nil { - return m.Aspect - } - return PartOfSpeech_ASPECT_UNKNOWN -} - -func (m *PartOfSpeech) GetCase() PartOfSpeech_Case { - if m != nil { - return m.Case - } - return PartOfSpeech_CASE_UNKNOWN -} - -func (m *PartOfSpeech) GetForm() PartOfSpeech_Form { - if m != nil { - return m.Form - } - return PartOfSpeech_FORM_UNKNOWN -} - -func (m *PartOfSpeech) GetGender() PartOfSpeech_Gender { - if m != nil { - return m.Gender - } - return PartOfSpeech_GENDER_UNKNOWN -} - -func (m *PartOfSpeech) GetMood() PartOfSpeech_Mood { - if m != nil { - return m.Mood - } - return PartOfSpeech_MOOD_UNKNOWN -} - -func (m *PartOfSpeech) GetNumber() PartOfSpeech_Number { - if m != nil { - return m.Number - } - return PartOfSpeech_NUMBER_UNKNOWN -} - -func (m *PartOfSpeech) GetPerson() PartOfSpeech_Person { - if m != nil { - return m.Person - } - return PartOfSpeech_PERSON_UNKNOWN -} - -func (m *PartOfSpeech) GetProper() PartOfSpeech_Proper { - if m != nil { - return m.Proper - } - return PartOfSpeech_PROPER_UNKNOWN -} - -func (m *PartOfSpeech) GetReciprocity() PartOfSpeech_Reciprocity { - if m != nil { - return m.Reciprocity - } - return PartOfSpeech_RECIPROCITY_UNKNOWN -} - -func (m *PartOfSpeech) GetTense() PartOfSpeech_Tense { - if m != nil { - return m.Tense - } - return PartOfSpeech_TENSE_UNKNOWN -} - -func (m *PartOfSpeech) GetVoice() PartOfSpeech_Voice { - if m != nil { - return m.Voice - } - return PartOfSpeech_VOICE_UNKNOWN -} - -// Represents dependency parse tree information for a token. -type DependencyEdge struct { - // Represents the head of this token in the dependency tree. - // This is the index of the token which has an arc going to this token. - // The index is the position of the token in the array of tokens returned - // by the API method. If this token is a root token, then the - // `head_token_index` is its own index. - HeadTokenIndex int32 `protobuf:"varint,1,opt,name=head_token_index,json=headTokenIndex" json:"head_token_index,omitempty"` - // The parse label for the token. - Label DependencyEdge_Label `protobuf:"varint,2,opt,name=label,enum=google.cloud.language.v1beta1.DependencyEdge_Label" json:"label,omitempty"` -} - -func (m *DependencyEdge) Reset() { *m = DependencyEdge{} } -func (m *DependencyEdge) String() string { return proto.CompactTextString(m) } -func (*DependencyEdge) ProtoMessage() {} -func (*DependencyEdge) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *DependencyEdge) GetHeadTokenIndex() int32 { - if m != nil { - return m.HeadTokenIndex - } - return 0 -} - -func (m *DependencyEdge) GetLabel() DependencyEdge_Label { - if m != nil { - return m.Label - } - return DependencyEdge_UNKNOWN -} - -// Represents a mention for an entity in the text. Currently, proper noun -// mentions are supported. -type EntityMention struct { - // The mention text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // The type of the entity mention. - Type EntityMention_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.language.v1beta1.EntityMention_Type" json:"type,omitempty"` -} - -func (m *EntityMention) Reset() { *m = EntityMention{} } -func (m *EntityMention) String() string { return proto.CompactTextString(m) } -func (*EntityMention) ProtoMessage() {} -func (*EntityMention) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *EntityMention) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *EntityMention) GetType() EntityMention_Type { - if m != nil { - return m.Type - } - return EntityMention_TYPE_UNKNOWN -} - -// Represents an output piece of text. -type TextSpan struct { - // The content of the output text. - Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"` - // The API calculates the beginning offset of the content in the original - // document according to the [EncodingType][google.cloud.language.v1beta1.EncodingType] specified in the API request. - BeginOffset int32 `protobuf:"varint,2,opt,name=begin_offset,json=beginOffset" json:"begin_offset,omitempty"` -} - -func (m *TextSpan) Reset() { *m = TextSpan{} } -func (m *TextSpan) String() string { return proto.CompactTextString(m) } -func (*TextSpan) ProtoMessage() {} -func (*TextSpan) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *TextSpan) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *TextSpan) GetBeginOffset() int32 { - if m != nil { - return m.BeginOffset - } - return 0 -} - -// The sentiment analysis request message. -type AnalyzeSentimentRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate sentence offsets for the - // sentence sentiment. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeSentimentRequest) Reset() { *m = AnalyzeSentimentRequest{} } -func (m *AnalyzeSentimentRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSentimentRequest) ProtoMessage() {} -func (*AnalyzeSentimentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *AnalyzeSentimentRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeSentimentRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The sentiment analysis response message. -type AnalyzeSentimentResponse struct { - // The overall sentiment of the input document. - DocumentSentiment *Sentiment `protobuf:"bytes,1,opt,name=document_sentiment,json=documentSentiment" json:"document_sentiment,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta1.Document.language] field for more details. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` - // The sentiment for all the sentences in the document. - Sentences []*Sentence `protobuf:"bytes,3,rep,name=sentences" json:"sentences,omitempty"` -} - -func (m *AnalyzeSentimentResponse) Reset() { *m = AnalyzeSentimentResponse{} } -func (m *AnalyzeSentimentResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSentimentResponse) ProtoMessage() {} -func (*AnalyzeSentimentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *AnalyzeSentimentResponse) GetDocumentSentiment() *Sentiment { - if m != nil { - return m.DocumentSentiment - } - return nil -} - -func (m *AnalyzeSentimentResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -func (m *AnalyzeSentimentResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -// The entity analysis request message. -type AnalyzeEntitiesRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeEntitiesRequest) Reset() { *m = AnalyzeEntitiesRequest{} } -func (m *AnalyzeEntitiesRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitiesRequest) ProtoMessage() {} -func (*AnalyzeEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *AnalyzeEntitiesRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeEntitiesRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The entity analysis response message. -type AnalyzeEntitiesResponse struct { - // The recognized entities in the input document. - Entities []*Entity `protobuf:"bytes,1,rep,name=entities" json:"entities,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta1.Document.language] field for more details. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` -} - -func (m *AnalyzeEntitiesResponse) Reset() { *m = AnalyzeEntitiesResponse{} } -func (m *AnalyzeEntitiesResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitiesResponse) ProtoMessage() {} -func (*AnalyzeEntitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *AnalyzeEntitiesResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *AnalyzeEntitiesResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// The syntax analysis request message. -type AnalyzeSyntaxRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeSyntaxRequest) Reset() { *m = AnalyzeSyntaxRequest{} } -func (m *AnalyzeSyntaxRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSyntaxRequest) ProtoMessage() {} -func (*AnalyzeSyntaxRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *AnalyzeSyntaxRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeSyntaxRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The syntax analysis response message. -type AnalyzeSyntaxResponse struct { - // Sentences in the input document. - Sentences []*Sentence `protobuf:"bytes,1,rep,name=sentences" json:"sentences,omitempty"` - // Tokens, along with their syntactic information, in the input document. - Tokens []*Token `protobuf:"bytes,2,rep,name=tokens" json:"tokens,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta1.Document.language] field for more details. - Language string `protobuf:"bytes,3,opt,name=language" json:"language,omitempty"` -} - -func (m *AnalyzeSyntaxResponse) Reset() { *m = AnalyzeSyntaxResponse{} } -func (m *AnalyzeSyntaxResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSyntaxResponse) ProtoMessage() {} -func (*AnalyzeSyntaxResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *AnalyzeSyntaxResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -func (m *AnalyzeSyntaxResponse) GetTokens() []*Token { - if m != nil { - return m.Tokens - } - return nil -} - -func (m *AnalyzeSyntaxResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// The request message for the text annotation API, which can perform multiple -// analysis types (sentiment, entities, and syntax) in one call. -type AnnotateTextRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The enabled features. - Features *AnnotateTextRequest_Features `protobuf:"bytes,2,opt,name=features" json:"features,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,3,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta1.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnnotateTextRequest) Reset() { *m = AnnotateTextRequest{} } -func (m *AnnotateTextRequest) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextRequest) ProtoMessage() {} -func (*AnnotateTextRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *AnnotateTextRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnnotateTextRequest) GetFeatures() *AnnotateTextRequest_Features { - if m != nil { - return m.Features - } - return nil -} - -func (m *AnnotateTextRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// All available features for sentiment, syntax, and semantic analysis. -// Setting each one to true will enable that specific analysis for the input. -type AnnotateTextRequest_Features struct { - // Extract syntax information. - ExtractSyntax bool `protobuf:"varint,1,opt,name=extract_syntax,json=extractSyntax" json:"extract_syntax,omitempty"` - // Extract entities. - ExtractEntities bool `protobuf:"varint,2,opt,name=extract_entities,json=extractEntities" json:"extract_entities,omitempty"` - // Extract document-level sentiment. - ExtractDocumentSentiment bool `protobuf:"varint,3,opt,name=extract_document_sentiment,json=extractDocumentSentiment" json:"extract_document_sentiment,omitempty"` -} - -func (m *AnnotateTextRequest_Features) Reset() { *m = AnnotateTextRequest_Features{} } -func (m *AnnotateTextRequest_Features) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextRequest_Features) ProtoMessage() {} -func (*AnnotateTextRequest_Features) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{15, 0} -} - -func (m *AnnotateTextRequest_Features) GetExtractSyntax() bool { - if m != nil { - return m.ExtractSyntax - } - return false -} - -func (m *AnnotateTextRequest_Features) GetExtractEntities() bool { - if m != nil { - return m.ExtractEntities - } - return false -} - -func (m *AnnotateTextRequest_Features) GetExtractDocumentSentiment() bool { - if m != nil { - return m.ExtractDocumentSentiment - } - return false -} - -// The text annotations response message. -type AnnotateTextResponse struct { - // Sentences in the input document. Populated if the user enables - // [AnnotateTextRequest.Features.extract_syntax][google.cloud.language.v1beta1.AnnotateTextRequest.Features.extract_syntax]. - Sentences []*Sentence `protobuf:"bytes,1,rep,name=sentences" json:"sentences,omitempty"` - // Tokens, along with their syntactic information, in the input document. - // Populated if the user enables - // [AnnotateTextRequest.Features.extract_syntax][google.cloud.language.v1beta1.AnnotateTextRequest.Features.extract_syntax]. - Tokens []*Token `protobuf:"bytes,2,rep,name=tokens" json:"tokens,omitempty"` - // Entities, along with their semantic information, in the input document. - // Populated if the user enables - // [AnnotateTextRequest.Features.extract_entities][google.cloud.language.v1beta1.AnnotateTextRequest.Features.extract_entities]. - Entities []*Entity `protobuf:"bytes,3,rep,name=entities" json:"entities,omitempty"` - // The overall sentiment for the document. Populated if the user enables - // [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1beta1.AnnotateTextRequest.Features.extract_document_sentiment]. - DocumentSentiment *Sentiment `protobuf:"bytes,4,opt,name=document_sentiment,json=documentSentiment" json:"document_sentiment,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta1.Document.language] field for more details. - Language string `protobuf:"bytes,5,opt,name=language" json:"language,omitempty"` -} - -func (m *AnnotateTextResponse) Reset() { *m = AnnotateTextResponse{} } -func (m *AnnotateTextResponse) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextResponse) ProtoMessage() {} -func (*AnnotateTextResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *AnnotateTextResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -func (m *AnnotateTextResponse) GetTokens() []*Token { - if m != nil { - return m.Tokens - } - return nil -} - -func (m *AnnotateTextResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *AnnotateTextResponse) GetDocumentSentiment() *Sentiment { - if m != nil { - return m.DocumentSentiment - } - return nil -} - -func (m *AnnotateTextResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -func init() { - proto.RegisterType((*Document)(nil), "google.cloud.language.v1beta1.Document") - proto.RegisterType((*Sentence)(nil), "google.cloud.language.v1beta1.Sentence") - proto.RegisterType((*Entity)(nil), "google.cloud.language.v1beta1.Entity") - proto.RegisterType((*Token)(nil), "google.cloud.language.v1beta1.Token") - proto.RegisterType((*Sentiment)(nil), "google.cloud.language.v1beta1.Sentiment") - proto.RegisterType((*PartOfSpeech)(nil), "google.cloud.language.v1beta1.PartOfSpeech") - proto.RegisterType((*DependencyEdge)(nil), "google.cloud.language.v1beta1.DependencyEdge") - proto.RegisterType((*EntityMention)(nil), "google.cloud.language.v1beta1.EntityMention") - proto.RegisterType((*TextSpan)(nil), "google.cloud.language.v1beta1.TextSpan") - proto.RegisterType((*AnalyzeSentimentRequest)(nil), "google.cloud.language.v1beta1.AnalyzeSentimentRequest") - proto.RegisterType((*AnalyzeSentimentResponse)(nil), "google.cloud.language.v1beta1.AnalyzeSentimentResponse") - proto.RegisterType((*AnalyzeEntitiesRequest)(nil), "google.cloud.language.v1beta1.AnalyzeEntitiesRequest") - proto.RegisterType((*AnalyzeEntitiesResponse)(nil), "google.cloud.language.v1beta1.AnalyzeEntitiesResponse") - proto.RegisterType((*AnalyzeSyntaxRequest)(nil), "google.cloud.language.v1beta1.AnalyzeSyntaxRequest") - proto.RegisterType((*AnalyzeSyntaxResponse)(nil), "google.cloud.language.v1beta1.AnalyzeSyntaxResponse") - proto.RegisterType((*AnnotateTextRequest)(nil), "google.cloud.language.v1beta1.AnnotateTextRequest") - proto.RegisterType((*AnnotateTextRequest_Features)(nil), "google.cloud.language.v1beta1.AnnotateTextRequest.Features") - proto.RegisterType((*AnnotateTextResponse)(nil), "google.cloud.language.v1beta1.AnnotateTextResponse") - proto.RegisterEnum("google.cloud.language.v1beta1.EncodingType", EncodingType_name, EncodingType_value) - proto.RegisterEnum("google.cloud.language.v1beta1.Document_Type", Document_Type_name, Document_Type_value) - proto.RegisterEnum("google.cloud.language.v1beta1.Entity_Type", Entity_Type_name, Entity_Type_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Tag", PartOfSpeech_Tag_name, PartOfSpeech_Tag_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Aspect", PartOfSpeech_Aspect_name, PartOfSpeech_Aspect_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Case", PartOfSpeech_Case_name, PartOfSpeech_Case_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Form", PartOfSpeech_Form_name, PartOfSpeech_Form_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Gender", PartOfSpeech_Gender_name, PartOfSpeech_Gender_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Mood", PartOfSpeech_Mood_name, PartOfSpeech_Mood_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Number", PartOfSpeech_Number_name, PartOfSpeech_Number_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Person", PartOfSpeech_Person_name, PartOfSpeech_Person_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Proper", PartOfSpeech_Proper_name, PartOfSpeech_Proper_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Reciprocity", PartOfSpeech_Reciprocity_name, PartOfSpeech_Reciprocity_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Tense", PartOfSpeech_Tense_name, PartOfSpeech_Tense_value) - proto.RegisterEnum("google.cloud.language.v1beta1.PartOfSpeech_Voice", PartOfSpeech_Voice_name, PartOfSpeech_Voice_value) - proto.RegisterEnum("google.cloud.language.v1beta1.DependencyEdge_Label", DependencyEdge_Label_name, DependencyEdge_Label_value) - proto.RegisterEnum("google.cloud.language.v1beta1.EntityMention_Type", EntityMention_Type_name, EntityMention_Type_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for LanguageService service - -type LanguageServiceClient interface { - // Analyzes the sentiment of the provided text. - AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error) - // Finds named entities (currently proper names and common nouns) in the text - // along with entity types, salience, mentions for each entity, and - // other properties. - AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error) - // Analyzes the syntax of the text and provides sentence boundaries and - // tokenization along with part of speech tags, dependency trees, and other - // properties. - AnalyzeSyntax(ctx context.Context, in *AnalyzeSyntaxRequest, opts ...grpc.CallOption) (*AnalyzeSyntaxResponse, error) - // A convenience method that provides all the features that analyzeSentiment, - // analyzeEntities, and analyzeSyntax provide in one call. - AnnotateText(ctx context.Context, in *AnnotateTextRequest, opts ...grpc.CallOption) (*AnnotateTextResponse, error) -} - -type languageServiceClient struct { - cc *grpc.ClientConn -} - -func NewLanguageServiceClient(cc *grpc.ClientConn) LanguageServiceClient { - return &languageServiceClient{cc} -} - -func (c *languageServiceClient) AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error) { - out := new(AnalyzeSentimentResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta1.LanguageService/AnalyzeSentiment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error) { - out := new(AnalyzeEntitiesResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta1.LanguageService/AnalyzeEntities", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnalyzeSyntax(ctx context.Context, in *AnalyzeSyntaxRequest, opts ...grpc.CallOption) (*AnalyzeSyntaxResponse, error) { - out := new(AnalyzeSyntaxResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta1.LanguageService/AnalyzeSyntax", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnnotateText(ctx context.Context, in *AnnotateTextRequest, opts ...grpc.CallOption) (*AnnotateTextResponse, error) { - out := new(AnnotateTextResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta1.LanguageService/AnnotateText", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for LanguageService service - -type LanguageServiceServer interface { - // Analyzes the sentiment of the provided text. - AnalyzeSentiment(context.Context, *AnalyzeSentimentRequest) (*AnalyzeSentimentResponse, error) - // Finds named entities (currently proper names and common nouns) in the text - // along with entity types, salience, mentions for each entity, and - // other properties. - AnalyzeEntities(context.Context, *AnalyzeEntitiesRequest) (*AnalyzeEntitiesResponse, error) - // Analyzes the syntax of the text and provides sentence boundaries and - // tokenization along with part of speech tags, dependency trees, and other - // properties. - AnalyzeSyntax(context.Context, *AnalyzeSyntaxRequest) (*AnalyzeSyntaxResponse, error) - // A convenience method that provides all the features that analyzeSentiment, - // analyzeEntities, and analyzeSyntax provide in one call. - AnnotateText(context.Context, *AnnotateTextRequest) (*AnnotateTextResponse, error) -} - -func RegisterLanguageServiceServer(s *grpc.Server, srv LanguageServiceServer) { - s.RegisterService(&_LanguageService_serviceDesc, srv) -} - -func _LanguageService_AnalyzeSentiment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeSentimentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeSentiment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta1.LanguageService/AnalyzeSentiment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeSentiment(ctx, req.(*AnalyzeSentimentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnalyzeEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeEntitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeEntities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta1.LanguageService/AnalyzeEntities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeEntities(ctx, req.(*AnalyzeEntitiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnalyzeSyntax_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeSyntaxRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeSyntax(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta1.LanguageService/AnalyzeSyntax", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeSyntax(ctx, req.(*AnalyzeSyntaxRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnnotateText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnnotateTextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnnotateText(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta1.LanguageService/AnnotateText", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnnotateText(ctx, req.(*AnnotateTextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _LanguageService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.language.v1beta1.LanguageService", - HandlerType: (*LanguageServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AnalyzeSentiment", - Handler: _LanguageService_AnalyzeSentiment_Handler, - }, - { - MethodName: "AnalyzeEntities", - Handler: _LanguageService_AnalyzeEntities_Handler, - }, - { - MethodName: "AnalyzeSyntax", - Handler: _LanguageService_AnalyzeSyntax_Handler, - }, - { - MethodName: "AnnotateText", - Handler: _LanguageService_AnnotateText_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/language/v1beta1/language_service.proto", -} - -func init() { - proto.RegisterFile("google/cloud/language/v1beta1/language_service.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 2755 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x73, 0xdb, 0xc6, - 0x15, 0x37, 0xf8, 0x4f, 0xe4, 0x92, 0x92, 0xd6, 0x88, 0x93, 0xb0, 0x6a, 0xd2, 0x38, 0x48, 0x5c, - 0x2b, 0x76, 0x42, 0xc5, 0x52, 0xe2, 0xb8, 0x76, 0x9a, 0x06, 0x02, 0x96, 0x14, 0x64, 0x10, 0x40, - 0x16, 0x00, 0x25, 0xa7, 0x07, 0x0e, 0x4c, 0xae, 0x19, 0x4e, 0x24, 0x80, 0x25, 0x21, 0x8f, 0xd5, - 0x4b, 0x67, 0x32, 0xd3, 0x63, 0xa7, 0x87, 0xde, 0x7a, 0x6c, 0x0f, 0x3d, 0x75, 0xd2, 0x99, 0x5e, - 0xda, 0x0f, 0xd0, 0x43, 0xa7, 0xc7, 0xcc, 0xf4, 0x13, 0xf4, 0xd8, 0x43, 0x0f, 0x3d, 0xf4, 0xd8, - 0x79, 0xbb, 0x0b, 0xfe, 0x51, 0x1c, 0x4b, 0x4c, 0x72, 0xc8, 0x6d, 0xf7, 0xf1, 0xfd, 0x7e, 0xef, - 0xed, 0xdb, 0xb7, 0xef, 0x2d, 0x96, 0xe8, 0x9d, 0x41, 0x92, 0x0c, 0x8e, 0xd8, 0x56, 0xef, 0x28, - 0x39, 0xe9, 0x6f, 0x1d, 0x45, 0xf1, 0xe0, 0x24, 0x1a, 0xb0, 0xad, 0xc7, 0xb7, 0x1e, 0xb2, 0x34, - 0xba, 0x35, 0x15, 0x74, 0x27, 0x6c, 0xfc, 0x78, 0xd8, 0x63, 0x8d, 0xd1, 0x38, 0x49, 0x13, 0xf5, - 0x65, 0x81, 0x6a, 0x70, 0x54, 0x23, 0x53, 0x6a, 0x48, 0xd4, 0xc6, 0x4b, 0x92, 0x34, 0x1a, 0x0d, - 0xb7, 0xa2, 0x38, 0x4e, 0xd2, 0x28, 0x1d, 0x26, 0xf1, 0x44, 0x80, 0xb5, 0xff, 0x28, 0xa8, 0x6c, - 0x26, 0xbd, 0x93, 0x63, 0x16, 0xa7, 0xea, 0x87, 0xa8, 0x90, 0x9e, 0x8e, 0x58, 0x5d, 0xb9, 0xaa, - 0x6c, 0xae, 0x6d, 0xbf, 0xd9, 0x78, 0x26, 0x71, 0x23, 0x83, 0x35, 0x82, 0xd3, 0x11, 0xa3, 0x1c, - 0xa9, 0x6e, 0xa0, 0x95, 0x5e, 0x12, 0xa7, 0x2c, 0x4e, 0xeb, 0xb9, 0xab, 0xca, 0x66, 0x65, 0xef, - 0x12, 0xcd, 0x04, 0xea, 0x26, 0x5a, 0x1f, 0xf4, 0x26, 0x5d, 0x39, 0xed, 0x9e, 0x8c, 0x87, 0xf5, - 0xbc, 0xd4, 0x59, 0x1d, 0xf4, 0x26, 0x86, 0x90, 0x87, 0xe3, 0xa1, 0xba, 0x81, 0xca, 0x99, 0xb5, - 0x7a, 0x01, 0x54, 0xe8, 0x74, 0xae, 0xdd, 0x46, 0x05, 0xb0, 0xa7, 0x5e, 0x41, 0x38, 0x78, 0xe0, - 0x91, 0x6e, 0xe8, 0xf8, 0x1e, 0x31, 0xac, 0xa6, 0x45, 0x4c, 0x7c, 0x49, 0x5d, 0x43, 0xc8, 0xb3, - 0x75, 0xcb, 0xe9, 0x06, 0xe4, 0x30, 0xc0, 0x8a, 0x5a, 0x46, 0x85, 0xbd, 0xa0, 0x6d, 0xe3, 0xdc, - 0x6e, 0x19, 0x95, 0x26, 0xc9, 0xc9, 0xb8, 0xc7, 0xb4, 0x5f, 0x2b, 0xa8, 0xec, 0x33, 0x30, 0xd6, - 0x63, 0xea, 0x3d, 0x54, 0x48, 0xd9, 0x93, 0x94, 0x2f, 0xb9, 0xba, 0x7d, 0xfd, 0x9c, 0x25, 0x07, - 0xec, 0x49, 0xea, 0x8f, 0xa2, 0x98, 0x72, 0x90, 0xda, 0x44, 0x95, 0x09, 0x8b, 0xd3, 0xe1, 0x71, - 0xb6, 0xde, 0xea, 0xf6, 0xe6, 0x39, 0x0c, 0x7e, 0xa6, 0x4f, 0x67, 0x50, 0xed, 0x1f, 0x79, 0x54, - 0x22, 0x71, 0x3a, 0x4c, 0x4f, 0x55, 0x15, 0x15, 0xe2, 0xe8, 0x58, 0x6c, 0x41, 0x85, 0xf2, 0xb1, - 0xfa, 0x81, 0xdc, 0x96, 0x1c, 0xdf, 0x96, 0x1b, 0xe7, 0x58, 0x10, 0x44, 0xf3, 0x9b, 0xe2, 0xa2, - 0xf2, 0x31, 0x4b, 0xa3, 0x7e, 0x94, 0x46, 0xf5, 0xfc, 0xd5, 0xfc, 0x66, 0x75, 0x7b, 0xe7, 0x62, - 0x1c, 0x6d, 0x89, 0x22, 0x71, 0x3a, 0x3e, 0xa5, 0x53, 0x12, 0xd8, 0x9f, 0x49, 0x74, 0x34, 0x84, - 0x00, 0xf2, 0xfd, 0xc9, 0xd1, 0xe9, 0x5c, 0xdd, 0x03, 0x63, 0x31, 0x4f, 0xb1, 0x7a, 0x91, 0x1b, - 0x7b, 0xf3, 0x42, 0xc6, 0xda, 0x02, 0x44, 0xa7, 0xe8, 0x8d, 0x7b, 0x68, 0x75, 0xc1, 0x01, 0x15, - 0xa3, 0xfc, 0xa7, 0xec, 0x54, 0x86, 0x06, 0x86, 0xea, 0x15, 0x54, 0x7c, 0x1c, 0x1d, 0x9d, 0x88, - 0xd0, 0x54, 0xa8, 0x98, 0xdc, 0xcd, 0xdd, 0x51, 0xb4, 0x53, 0x99, 0x26, 0x55, 0xb4, 0x12, 0x3a, - 0xf7, 0x1d, 0xf7, 0xc0, 0xc1, 0x97, 0x54, 0x84, 0x4a, 0x1e, 0xa1, 0xbe, 0xeb, 0x60, 0x45, 0xad, - 0xa1, 0xb2, 0xed, 0x1a, 0x7a, 0x60, 0xb9, 0x0e, 0xce, 0xa9, 0x18, 0xd5, 0x5c, 0xda, 0xd2, 0x1d, - 0xeb, 0x63, 0x21, 0xc9, 0xab, 0x15, 0x54, 0x24, 0x1d, 0xe2, 0x04, 0xb8, 0xa0, 0xae, 0xa3, 0xea, - 0x81, 0x4b, 0xef, 0x77, 0xdd, 0x66, 0x57, 0xa7, 0x01, 0x2e, 0xaa, 0x97, 0xd1, 0xaa, 0xe1, 0x3a, - 0x7e, 0xd8, 0x26, 0xb4, 0xdb, 0x72, 0x5d, 0x13, 0x97, 0x40, 0xdd, 0x0d, 0xf6, 0x08, 0xc5, 0x2b, - 0xda, 0x2f, 0x73, 0xa8, 0x18, 0x24, 0x9f, 0xb2, 0xf8, 0x9b, 0x25, 0xd7, 0x47, 0x68, 0x6d, 0x14, - 0x8d, 0xd3, 0x6e, 0xf2, 0xa8, 0x3b, 0x19, 0x31, 0xd6, 0xfb, 0x44, 0x66, 0xd8, 0xcd, 0x73, 0x68, - 0xbc, 0x68, 0x9c, 0xba, 0x8f, 0x7c, 0x0e, 0xa1, 0xb5, 0xd1, 0xdc, 0x4c, 0xed, 0xa0, 0xf5, 0x3e, - 0x1b, 0xb1, 0xb8, 0xcf, 0xe2, 0xde, 0x69, 0x97, 0xf5, 0x07, 0x8c, 0x9f, 0xc0, 0xea, 0xf6, 0x5b, - 0xe7, 0x1d, 0xf5, 0x29, 0x8a, 0xf4, 0x07, 0x8c, 0xae, 0xf5, 0x17, 0xe6, 0xb0, 0x0d, 0x47, 0xec, - 0xf8, 0x38, 0x92, 0x87, 0x55, 0x4c, 0xb4, 0x9f, 0xa2, 0xca, 0x34, 0xdb, 0x21, 0x65, 0x46, 0xc9, - 0x51, 0x34, 0x1e, 0xa6, 0x62, 0x03, 0x73, 0x74, 0x3a, 0x57, 0x5f, 0x42, 0x95, 0xe3, 0x68, 0x10, - 0x0f, 0xd3, 0x93, 0xbe, 0xd8, 0xc9, 0x1c, 0x9d, 0x09, 0x80, 0x7c, 0xd2, 0x4b, 0xc6, 0xc2, 0xd5, - 0x1c, 0x15, 0x13, 0xed, 0xaf, 0x97, 0x51, 0x6d, 0x7e, 0xa5, 0xaa, 0x8e, 0xf2, 0x69, 0x34, 0x90, - 0xa5, 0x6b, 0x6b, 0x89, 0x18, 0x35, 0x82, 0x68, 0x40, 0x01, 0xab, 0xee, 0xa3, 0x52, 0x34, 0x19, - 0xb1, 0x5e, 0x2a, 0x4f, 0xda, 0xf6, 0x32, 0x2c, 0x3a, 0x47, 0x52, 0xc9, 0xa0, 0x9a, 0xa8, 0xd0, - 0x8b, 0x26, 0xc2, 0xe9, 0xb5, 0xed, 0xb7, 0x97, 0x61, 0x32, 0xa2, 0x09, 0xa3, 0x1c, 0x0d, 0x2c, - 0x8f, 0x92, 0xf1, 0x31, 0x8f, 0xeb, 0x92, 0x2c, 0xcd, 0x64, 0x7c, 0x4c, 0x39, 0x1a, 0xd6, 0x35, - 0x80, 0xed, 0x1a, 0xd7, 0x8b, 0xcb, 0xaf, 0xab, 0xc5, 0x91, 0x54, 0x32, 0x80, 0x47, 0xc7, 0x49, - 0xd2, 0xaf, 0x97, 0x96, 0xf7, 0xa8, 0x9d, 0x24, 0x7d, 0xca, 0xd1, 0xe0, 0x51, 0x7c, 0x72, 0xfc, - 0x90, 0x8d, 0xeb, 0x2b, 0xcb, 0x7b, 0xe4, 0x70, 0x24, 0x95, 0x0c, 0xc0, 0x35, 0x62, 0xe3, 0x49, - 0x12, 0xd7, 0xcb, 0xcb, 0x73, 0x79, 0x1c, 0x49, 0x25, 0x03, 0xe7, 0x1a, 0x27, 0x23, 0x36, 0xae, - 0x57, 0xbe, 0x06, 0x17, 0x47, 0x52, 0xc9, 0xa0, 0x3e, 0x40, 0xd5, 0x31, 0xeb, 0x0d, 0x47, 0xe3, - 0xa4, 0x07, 0x49, 0x8f, 0x38, 0xe1, 0x7b, 0xcb, 0x10, 0xd2, 0x19, 0x9c, 0xce, 0x73, 0xa9, 0x2d, - 0x54, 0x4c, 0x59, 0x3c, 0x61, 0xf5, 0x2a, 0x27, 0xbd, 0xb5, 0x54, 0xb6, 0x03, 0x90, 0x0a, 0x3c, - 0x10, 0x3d, 0x4e, 0x86, 0x3d, 0x56, 0xaf, 0x2d, 0x4f, 0xd4, 0x01, 0x20, 0x15, 0x78, 0xed, 0x57, - 0x0a, 0xca, 0x07, 0xd1, 0x60, 0xb1, 0xdc, 0xae, 0xa0, 0xbc, 0x6e, 0xee, 0x63, 0x45, 0x0c, 0x3c, - 0x9c, 0x13, 0x83, 0x0e, 0xce, 0x43, 0x5f, 0x36, 0x5c, 0x67, 0x1f, 0x17, 0x40, 0x64, 0x12, 0x28, - 0xaa, 0x65, 0x54, 0x70, 0xdc, 0xd0, 0xc1, 0x25, 0x10, 0x39, 0x61, 0x1b, 0xaf, 0x80, 0xc8, 0xa3, - 0xae, 0x83, 0xcb, 0x20, 0xf2, 0x68, 0x80, 0x2b, 0x50, 0x67, 0xbd, 0xd0, 0x31, 0x02, 0x8c, 0xe0, - 0xd7, 0x0e, 0xa1, 0xbb, 0xb8, 0xaa, 0x16, 0x91, 0x72, 0x88, 0x6b, 0xf0, 0x9b, 0xde, 0x6c, 0x5a, - 0x87, 0x78, 0x55, 0x73, 0x51, 0x49, 0x1c, 0x48, 0x55, 0x45, 0x6b, 0x3a, 0xdc, 0x10, 0x82, 0xee, - 0xcc, 0x31, 0xb8, 0x25, 0x10, 0xda, 0x24, 0x46, 0x60, 0x75, 0x08, 0x56, 0xa0, 0xfa, 0x5b, 0xed, - 0x39, 0x49, 0x0e, 0x4a, 0xbe, 0x47, 0xdd, 0x16, 0x25, 0xbe, 0x0f, 0x82, 0xbc, 0xf6, 0x3f, 0x05, - 0x15, 0xe0, 0x60, 0x82, 0xae, 0xa1, 0xfb, 0x64, 0x91, 0x4d, 0x37, 0x8c, 0xd0, 0xd7, 0x25, 0xdb, - 0x2a, 0xaa, 0xe8, 0x26, 0x78, 0x66, 0xe9, 0x36, 0xce, 0x89, 0x66, 0xd1, 0xf6, 0x6c, 0xd2, 0x26, - 0x0e, 0xd7, 0xc8, 0x43, 0x1f, 0x32, 0x85, 0x76, 0x01, 0xfa, 0x50, 0x8b, 0x38, 0x16, 0x9f, 0x15, - 0xb9, 0x27, 0x8e, 0x1f, 0xd0, 0x10, 0x94, 0x75, 0x1b, 0x97, 0x66, 0x7d, 0xaa, 0x43, 0xf0, 0x0a, - 0xd8, 0x72, 0xdc, 0xb6, 0xe5, 0x88, 0x79, 0x19, 0xe2, 0xed, 0xee, 0xda, 0xd6, 0x47, 0x21, 0xc1, - 0x15, 0x30, 0xec, 0xe9, 0x34, 0x10, 0x5c, 0x08, 0x0c, 0x7b, 0x94, 0x78, 0xae, 0x6f, 0x41, 0x4b, - 0xd3, 0x6d, 0x5c, 0x85, 0x60, 0x50, 0xd2, 0xb4, 0xc9, 0xa1, 0xd5, 0x21, 0x5d, 0x58, 0x06, 0xae, - 0x81, 0x1a, 0x25, 0x36, 0x27, 0x14, 0xa2, 0x55, 0xb0, 0xd9, 0xc9, 0x6c, 0xae, 0x69, 0x9f, 0x2b, - 0xa8, 0x00, 0xd5, 0x04, 0x9c, 0x6b, 0xba, 0xb4, 0x3d, 0xb7, 0xf4, 0x1a, 0x2a, 0xeb, 0x26, 0x38, - 0xa4, 0xdb, 0x72, 0xe1, 0xe1, 0xa1, 0x65, 0x5b, 0x3a, 0x7d, 0x80, 0x73, 0x60, 0x6c, 0x6e, 0xe1, - 0x1f, 0x13, 0x8a, 0xf3, 0x9c, 0xc2, 0x72, 0x74, 0xbb, 0x4b, 0x1c, 0xd3, 0x72, 0x5a, 0xb8, 0x00, - 0xb1, 0x68, 0x11, 0x1a, 0x3a, 0x26, 0x2e, 0xc2, 0x98, 0x12, 0xdd, 0xb6, 0x7c, 0xb1, 0x6e, 0x8b, - 0xca, 0xd9, 0x0a, 0x6c, 0xad, 0xbf, 0xe7, 0xd2, 0x00, 0x97, 0x61, 0xdb, 0x6d, 0xd7, 0x69, 0x89, - 0x5c, 0x70, 0xa9, 0x49, 0x28, 0x46, 0xa0, 0x2d, 0xaf, 0x81, 0x06, 0xae, 0x6a, 0x04, 0x95, 0x44, - 0xd9, 0x02, 0x1f, 0x5a, 0xc4, 0x31, 0x09, 0x5d, 0x74, 0xba, 0x49, 0xda, 0x96, 0x63, 0x39, 0x72, - 0xb7, 0xda, 0xba, 0x6f, 0x84, 0x36, 0x4c, 0x73, 0xe0, 0x82, 0x43, 0xc2, 0x00, 0x9c, 0xd5, 0x7e, - 0x81, 0x0a, 0x50, 0xb3, 0xc0, 0xe9, 0xb6, 0xeb, 0x9a, 0x73, 0x14, 0x57, 0x10, 0x36, 0x5c, 0xc7, - 0x94, 0x81, 0xed, 0xc2, 0xaf, 0x58, 0x81, 0xcd, 0xe1, 0x69, 0xa4, 0xcb, 0x24, 0x82, 0xb9, 0x63, - 0x5a, 0x32, 0x90, 0x79, 0x88, 0xb4, 0xe5, 0x04, 0x84, 0x52, 0xb7, 0x95, 0xed, 0x7e, 0x15, 0xad, - 0xec, 0x87, 0x22, 0xc7, 0x8a, 0x90, 0x74, 0x7e, 0xb8, 0xbb, 0x0f, 0xe9, 0x0d, 0x82, 0x92, 0xf6, - 0x21, 0x2a, 0x89, 0x62, 0x07, 0xeb, 0x70, 0xc2, 0xf6, 0xee, 0xd9, 0x75, 0xf8, 0x96, 0xd3, 0x0a, - 0x6d, 0x9d, 0x62, 0x85, 0xdf, 0x6d, 0xec, 0x90, 0xf2, 0x94, 0x2b, 0xa3, 0x82, 0x19, 0xea, 0x36, - 0xce, 0x6b, 0x01, 0x2a, 0x89, 0x12, 0x07, 0x0c, 0xe2, 0xee, 0x33, 0xc7, 0x50, 0x41, 0xc5, 0xa6, - 0x45, 0xfd, 0x40, 0xc0, 0x7d, 0x02, 0x6b, 0xc2, 0x39, 0x10, 0x07, 0x7b, 0x16, 0x35, 0x71, 0x1e, - 0x16, 0x3a, 0x4b, 0x18, 0x79, 0x77, 0x2a, 0x68, 0x77, 0x50, 0x49, 0x14, 0x3b, 0xce, 0x4a, 0x5d, - 0x6f, 0xc1, 0x2f, 0xf0, 0x84, 0xcb, 0x44, 0x48, 0x1c, 0x37, 0xe8, 0xca, 0x79, 0x4e, 0xdb, 0x47, - 0xd5, 0xb9, 0xaa, 0xa6, 0xbe, 0x88, 0x9e, 0xa3, 0xc4, 0xb0, 0x3c, 0xea, 0x1a, 0x56, 0xf0, 0x60, - 0xf1, 0x4c, 0x65, 0x3f, 0xf0, 0xd4, 0x82, 0xf5, 0xbb, 0x4e, 0x77, 0x4e, 0x96, 0xd3, 0x26, 0xa8, - 0xc8, 0x8b, 0x19, 0xc4, 0x35, 0x20, 0xce, 0xc2, 0x99, 0x7c, 0x1e, 0x5d, 0x9e, 0xdf, 0x20, 0xfe, - 0xb3, 0x58, 0x65, 0x33, 0x0c, 0x42, 0x4a, 0x44, 0x90, 0x3c, 0xdd, 0x0f, 0x70, 0x1e, 0x36, 0xc1, - 0xa3, 0xc4, 0x17, 0x97, 0xbd, 0x55, 0x54, 0x99, 0xd6, 0x02, 0x5c, 0x14, 0x1f, 0x14, 0x61, 0x36, - 0x2f, 0x69, 0xbb, 0xa8, 0xc8, 0x0b, 0x1f, 0x18, 0xed, 0xb8, 0x96, 0x41, 0x16, 0x17, 0xae, 0x1b, - 0xb3, 0x22, 0x60, 0xe8, 0x59, 0x4d, 0xc8, 0x71, 0x13, 0x7a, 0x56, 0x4b, 0xfe, 0xbb, 0x82, 0xd6, - 0x16, 0x6f, 0x54, 0xea, 0x26, 0xc2, 0x9f, 0xb0, 0xa8, 0xdf, 0x4d, 0xe1, 0xde, 0xd8, 0x1d, 0xc6, - 0x7d, 0xf6, 0x84, 0x5f, 0x65, 0x8a, 0x74, 0x0d, 0xe4, 0xfc, 0x3a, 0x69, 0x81, 0x54, 0xb5, 0x50, - 0xf1, 0x28, 0x7a, 0xc8, 0x8e, 0xe4, 0x1d, 0x65, 0x67, 0xa9, 0x9b, 0x5b, 0xc3, 0x06, 0x28, 0x15, - 0x0c, 0xda, 0xbf, 0x4b, 0xa8, 0xc8, 0x05, 0x5f, 0xba, 0x25, 0xeb, 0xbb, 0xbb, 0x94, 0x74, 0xb0, - 0xc2, 0x4b, 0x2a, 0x1c, 0x62, 0x91, 0x15, 0xba, 0xd9, 0x31, 0x6c, 0x51, 0xbf, 0x74, 0xb3, 0xd3, - 0x76, 0x4d, 0x5c, 0x80, 0x30, 0xea, 0x30, 0x2a, 0x72, 0x05, 0xcf, 0x73, 0xe1, 0xf0, 0x82, 0x30, - 0x08, 0x28, 0x5e, 0xe1, 0x15, 0x3f, 0x3c, 0x14, 0x95, 0x4a, 0x0f, 0x0f, 0x21, 0x08, 0xb8, 0xa2, - 0x96, 0x50, 0xce, 0x30, 0x30, 0x02, 0x88, 0xc1, 0xe9, 0xab, 0xd3, 0x8e, 0xc0, 0xcb, 0xb8, 0x01, - 0xe7, 0x00, 0xaf, 0xf2, 0x28, 0xc2, 0x90, 0xc3, 0xd6, 0x44, 0xaf, 0xf0, 0xf0, 0x7a, 0xd6, 0x34, - 0x30, 0x28, 0x98, 0x96, 0x6f, 0xb8, 0x21, 0xf5, 0x09, 0xbe, 0xcc, 0x13, 0xdf, 0xdd, 0xdd, 0xc7, - 0x2a, 0x8c, 0xc8, 0xa1, 0x67, 0xe3, 0xe7, 0x78, 0x81, 0x75, 0x89, 0x7f, 0x60, 0x05, 0x7b, 0xf8, - 0x0a, 0xc8, 0x2d, 0xd0, 0x78, 0x1e, 0x46, 0x6d, 0x9d, 0xde, 0xc7, 0x2f, 0x00, 0x5b, 0xfb, 0x80, - 0xe0, 0x17, 0xc5, 0xa0, 0x83, 0xeb, 0xbc, 0x03, 0x91, 0x16, 0xfe, 0x1e, 0x38, 0xea, 0x38, 0x78, - 0x03, 0x48, 0x1c, 0x4f, 0xae, 0xf9, 0xfb, 0xe0, 0xa1, 0xc3, 0x3d, 0x7c, 0x09, 0x1c, 0x70, 0xa6, - 0x1e, 0xbe, 0x9c, 0xb5, 0xae, 0x1f, 0xf0, 0x3a, 0xc2, 0x0f, 0x2c, 0x7e, 0x05, 0xda, 0x93, 0x87, - 0xaf, 0xca, 0xf2, 0xac, 0x07, 0xfa, 0xa1, 0xe5, 0xe3, 0x57, 0x45, 0x4a, 0xd0, 0x00, 0x18, 0x35, - 0xde, 0xd6, 0x78, 0x20, 0x5e, 0xe3, 0x79, 0x09, 0x1e, 0xbe, 0x2e, 0x46, 0xbe, 0x8f, 0xaf, 0x71, - 0x5d, 0xd7, 0x0f, 0xc0, 0xa7, 0x1f, 0xca, 0x74, 0xe5, 0xda, 0xd7, 0xa7, 0x13, 0x67, 0x1f, 0x6f, - 0x8a, 0x93, 0x47, 0x20, 0x32, 0x6f, 0x88, 0xde, 0x49, 0x9a, 0xf8, 0x86, 0x1c, 0x79, 0xf8, 0x26, - 0xb7, 0x42, 0x5d, 0xc7, 0xc6, 0x6f, 0x66, 0x0d, 0xf5, 0x2d, 0x58, 0xa1, 0xe7, 0xe3, 0x06, 0xac, - 0xf0, 0xa3, 0x50, 0x77, 0xb8, 0x3f, 0x5b, 0xa0, 0x49, 0x0d, 0x18, 0xbe, 0x0d, 0x3f, 0xf0, 0x21, - 0x25, 0x36, 0xbe, 0xc5, 0x7f, 0x30, 0xa9, 0xeb, 0xe1, 0x6d, 0xa0, 0x00, 0x03, 0x3b, 0xe0, 0x03, - 0x25, 0x6d, 0x47, 0x77, 0x02, 0xfc, 0x8e, 0x38, 0xb9, 0xb0, 0x4e, 0xc7, 0x0c, 0xdb, 0xf8, 0x5d, - 0xb0, 0x4e, 0x5d, 0x37, 0xc0, 0xb7, 0x61, 0xe4, 0x43, 0x70, 0xde, 0xe3, 0xa3, 0xb0, 0xd9, 0xc4, - 0x77, 0x60, 0xc4, 0x2d, 0xfe, 0x88, 0x17, 0x1d, 0xd7, 0xb3, 0x0c, 0x7c, 0x97, 0x37, 0x76, 0x10, - 0xde, 0x5b, 0x68, 0x44, 0xef, 0x83, 0xca, 0x21, 0x5f, 0xf6, 0x8f, 0x79, 0xb9, 0x0a, 0x79, 0xaf, - 0xff, 0x80, 0x23, 0xad, 0xc0, 0x26, 0xf8, 0x27, 0xa2, 0x1f, 0x75, 0xbc, 0x3d, 0x40, 0x7f, 0x28, - 0x53, 0x0e, 0x8e, 0x21, 0xd6, 0x79, 0x76, 0x86, 0x87, 0x9d, 0x0e, 0xde, 0x85, 0xa1, 0xc9, 0xad, - 0x1a, 0xa0, 0xd2, 0x74, 0x29, 0xb1, 0x5a, 0x0e, 0x36, 0x21, 0x14, 0xf7, 0x0f, 0x30, 0xe1, 0x1d, - 0xc6, 0xf2, 0x03, 0xdc, 0x14, 0x77, 0x92, 0xb6, 0x81, 0x5b, 0x3c, 0x01, 0xdc, 0xb6, 0xc8, 0xcb, - 0x3d, 0xe8, 0x08, 0xd9, 0x8c, 0x6f, 0xbc, 0xc5, 0x35, 0xc3, 0xb6, 0x81, 0xf7, 0x21, 0x2c, 0x86, - 0xeb, 0xe1, 0xfb, 0x10, 0x09, 0xd3, 0xf2, 0x79, 0xf3, 0x26, 0x26, 0xb6, 0xb5, 0xbf, 0x29, 0x68, - 0x75, 0xe1, 0x5b, 0xf7, 0x9b, 0x7d, 0x1f, 0x92, 0x85, 0x57, 0x81, 0x5b, 0xcb, 0x7c, 0x64, 0xcf, - 0x3d, 0x0e, 0x68, 0x6f, 0xcb, 0x0f, 0x65, 0x8c, 0x6a, 0xf2, 0x3d, 0xe5, 0x69, 0x75, 0x1c, 0xa1, - 0x92, 0xe1, 0xb6, 0xdb, 0xf0, 0xad, 0xac, 0xb5, 0x50, 0x39, 0x73, 0x45, 0xad, 0xcf, 0xde, 0x7b, - 0xc4, 0x67, 0xf9, 0xf4, 0xb5, 0xe7, 0x55, 0x54, 0x7b, 0xc8, 0x06, 0xc3, 0xb8, 0x9b, 0x3c, 0x7a, - 0x34, 0x61, 0xe2, 0x93, 0xaa, 0x48, 0xab, 0x5c, 0xe6, 0x72, 0x91, 0xf6, 0x27, 0x05, 0xbd, 0xa8, - 0xc7, 0xd1, 0xd1, 0xe9, 0xcf, 0xd9, 0xec, 0x59, 0x84, 0xfd, 0xec, 0x84, 0x4d, 0x52, 0xd5, 0x40, - 0xe5, 0xbe, 0x7c, 0x5f, 0xba, 0x60, 0x78, 0xb2, 0xe7, 0x28, 0x3a, 0x05, 0xaa, 0x1e, 0x5a, 0x65, - 0x71, 0x2f, 0xe9, 0x0f, 0xe3, 0x41, 0x77, 0x2e, 0x56, 0x37, 0xcf, 0x8d, 0x95, 0xc0, 0xf0, 0x28, - 0xd5, 0xd8, 0xdc, 0x4c, 0xfb, 0xa7, 0x82, 0xea, 0x5f, 0x76, 0x79, 0x32, 0x4a, 0xa0, 0x0f, 0x1d, - 0x20, 0x35, 0x33, 0xdd, 0x9d, 0xbd, 0x0b, 0x29, 0x4b, 0xbe, 0x0b, 0x5d, 0xce, 0x38, 0x16, 0x3e, - 0x9e, 0xa7, 0xef, 0x61, 0xb9, 0xc5, 0xf7, 0x30, 0x95, 0x88, 0x37, 0x28, 0x16, 0xf7, 0xd8, 0x44, - 0xbe, 0xee, 0x5c, 0xbf, 0x80, 0x2d, 0xd0, 0xa7, 0x33, 0x24, 0x5c, 0xf2, 0x5e, 0x90, 0x0b, 0xe3, - 0xa9, 0x32, 0x64, 0x93, 0xef, 0xf8, 0x56, 0x3c, 0x99, 0x26, 0xcf, 0xcc, 0x61, 0xb9, 0x11, 0x3a, - 0x2a, 0x33, 0x29, 0xab, 0x2b, 0x3c, 0x24, 0xd7, 0x2e, 0x74, 0x3c, 0xe8, 0x14, 0xf6, 0xac, 0x90, - 0x6b, 0x7f, 0x54, 0xd0, 0x95, 0x2c, 0x09, 0x4e, 0xe3, 0x34, 0x7a, 0xf2, 0x1d, 0x8f, 0xd4, 0x5f, - 0x14, 0xf4, 0xfc, 0x19, 0x7f, 0x65, 0xa0, 0x16, 0x92, 0x47, 0xf9, 0xba, 0xc9, 0xa3, 0xbe, 0x8f, - 0x4a, 0xfc, 0xe2, 0x32, 0xa9, 0xe7, 0x38, 0xc7, 0xeb, 0xe7, 0x55, 0x32, 0x50, 0xa6, 0x12, 0xb3, - 0x10, 0xea, 0xfc, 0x99, 0x50, 0xff, 0x2e, 0x8f, 0x9e, 0xd3, 0xc5, 0xa3, 0x35, 0x83, 0xa2, 0xf3, - 0xad, 0x46, 0xfa, 0x00, 0x95, 0x1f, 0xb1, 0x28, 0x3d, 0x19, 0xb3, 0x89, 0x7c, 0x5b, 0xbb, 0x77, - 0x0e, 0xc9, 0x53, 0x5c, 0x69, 0x34, 0x25, 0x05, 0x9d, 0x92, 0x7d, 0x79, 0x0b, 0xf3, 0xdf, 0x70, - 0x0b, 0x37, 0x7e, 0xab, 0xa0, 0x72, 0x66, 0x48, 0xbd, 0x86, 0xd6, 0xd8, 0x93, 0x74, 0x1c, 0xf5, - 0xd2, 0xee, 0x84, 0xef, 0x27, 0x0f, 0x41, 0x99, 0xae, 0x4a, 0xa9, 0xd8, 0x64, 0xf5, 0x0d, 0x84, - 0x33, 0xb5, 0xe9, 0x69, 0xc8, 0x71, 0xc5, 0x75, 0x29, 0xcf, 0x0e, 0x8e, 0xfa, 0x3e, 0xda, 0xc8, - 0x54, 0x9f, 0x52, 0xc1, 0xf2, 0x1c, 0x54, 0x97, 0x1a, 0xe6, 0xd9, 0xf2, 0xa4, 0x7d, 0x91, 0x83, - 0xf3, 0x30, 0x1f, 0x99, 0xef, 0x52, 0x7a, 0xcd, 0x17, 0x83, 0xfc, 0xd7, 0x2b, 0x06, 0x4f, 0x2f, - 0xec, 0x85, 0x6f, 0xb7, 0xb0, 0x17, 0x17, 0x53, 0xff, 0xc6, 0x1d, 0x54, 0x9b, 0x4f, 0x08, 0x71, - 0x17, 0x71, 0x08, 0xbe, 0x04, 0xa3, 0x30, 0x68, 0xde, 0x11, 0xd7, 0xf3, 0x30, 0x68, 0xde, 0xba, - 0x2d, 0xae, 0xe7, 0x61, 0xd0, 0xdc, 0xd9, 0xc6, 0xf9, 0xed, 0xbf, 0x17, 0xd1, 0xba, 0x2d, 0x69, - 0x7c, 0xf1, 0x57, 0x91, 0xfa, 0x67, 0x05, 0xe1, 0xb3, 0x8d, 0x4b, 0xbd, 0x7d, 0x6e, 0xba, 0x3f, - 0xb5, 0x39, 0x6f, 0xbc, 0xb7, 0x34, 0x4e, 0x24, 0x84, 0xd6, 0xf8, 0xec, 0x8b, 0x7f, 0xfd, 0x26, - 0xb7, 0xa9, 0xbd, 0x36, 0xfd, 0x4f, 0x2b, 0x8b, 0xc9, 0xe4, 0x6e, 0x74, 0x06, 0x74, 0x57, 0xb9, - 0xa1, 0x7e, 0xae, 0xa0, 0xf5, 0x33, 0x45, 0x5e, 0x7d, 0xf7, 0x62, 0xc6, 0xcf, 0x74, 0xb1, 0x8d, - 0xdb, 0xcb, 0xc2, 0xa4, 0xcb, 0x6f, 0x71, 0x97, 0xaf, 0x6b, 0xda, 0x57, 0xbb, 0x9c, 0x61, 0xc0, - 0xe3, 0x3f, 0x28, 0x68, 0x75, 0xa1, 0xd6, 0xaa, 0x3b, 0x17, 0x0c, 0xd6, 0x7c, 0x27, 0xd9, 0x78, - 0x67, 0x39, 0x90, 0xf4, 0xf5, 0x26, 0xf7, 0xf5, 0x9a, 0x76, 0xf5, 0x19, 0xe1, 0xe5, 0x08, 0xf0, - 0xf4, 0xf7, 0x0a, 0xaa, 0xcd, 0x9f, 0x5a, 0x75, 0x7b, 0xf9, 0xe2, 0xb7, 0xb1, 0xb3, 0x14, 0x46, - 0xba, 0x79, 0x83, 0xbb, 0xf9, 0xba, 0xf6, 0xca, 0x53, 0xdd, 0x9c, 0x01, 0xee, 0x2a, 0x37, 0x76, - 0x3f, 0x53, 0xd0, 0xab, 0xbd, 0xe4, 0xf8, 0xd9, 0x66, 0x76, 0xaf, 0x9c, 0x49, 0x77, 0x6f, 0x9c, - 0xa4, 0x89, 0xa7, 0x7c, 0x4c, 0x24, 0x6c, 0x90, 0x00, 0xa4, 0x91, 0x8c, 0x07, 0x5b, 0x03, 0x16, - 0xf3, 0x7f, 0x3e, 0xb7, 0xc4, 0x4f, 0xd1, 0x68, 0x38, 0xf9, 0x8a, 0xff, 0x5b, 0xef, 0x65, 0x82, - 0x87, 0x25, 0x8e, 0xd8, 0xf9, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe6, 0xf6, 0xe5, 0xb1, 0xa0, - 0x1d, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/language/v1beta2/language_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/language/v1beta2/language_service.pb.go deleted file mode 100644 index a1fea069..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/language/v1beta2/language_service.pb.go +++ /dev/null @@ -1,2596 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/language/v1beta2/language_service.proto - -/* -Package language is a generated protocol buffer package. - -It is generated from these files: - google/cloud/language/v1beta2/language_service.proto - -It has these top-level messages: - Document - Sentence - Entity - Token - Sentiment - PartOfSpeech - DependencyEdge - EntityMention - TextSpan - ClassificationCategory - AnalyzeSentimentRequest - AnalyzeSentimentResponse - AnalyzeEntitySentimentRequest - AnalyzeEntitySentimentResponse - AnalyzeEntitiesRequest - AnalyzeEntitiesResponse - AnalyzeSyntaxRequest - AnalyzeSyntaxResponse - ClassifyTextRequest - ClassifyTextResponse - AnnotateTextRequest - AnnotateTextResponse -*/ -package language - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/timestamp" -import _ "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents the text encoding that the caller uses to process the output. -// Providing an `EncodingType` is recommended because the API provides the -// beginning offsets for various outputs, such as tokens and mentions, and -// languages that natively use different text encodings may access offsets -// differently. -type EncodingType int32 - -const ( - // If `EncodingType` is not specified, encoding-dependent information (such as - // `begin_offset`) will be set at `-1`. - EncodingType_NONE EncodingType = 0 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-8 encoding of the input. C++ and Go are examples of languages - // that use this encoding natively. - EncodingType_UTF8 EncodingType = 1 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-16 encoding of the input. Java and Javascript are examples of - // languages that use this encoding natively. - EncodingType_UTF16 EncodingType = 2 - // Encoding-dependent information (such as `begin_offset`) is calculated based - // on the UTF-32 encoding of the input. Python is an example of a language - // that uses this encoding natively. - EncodingType_UTF32 EncodingType = 3 -) - -var EncodingType_name = map[int32]string{ - 0: "NONE", - 1: "UTF8", - 2: "UTF16", - 3: "UTF32", -} -var EncodingType_value = map[string]int32{ - "NONE": 0, - "UTF8": 1, - "UTF16": 2, - "UTF32": 3, -} - -func (x EncodingType) String() string { - return proto.EnumName(EncodingType_name, int32(x)) -} -func (EncodingType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// The document types enum. -type Document_Type int32 - -const ( - // The content type is not specified. - Document_TYPE_UNSPECIFIED Document_Type = 0 - // Plain text - Document_PLAIN_TEXT Document_Type = 1 - // HTML - Document_HTML Document_Type = 2 -) - -var Document_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "PLAIN_TEXT", - 2: "HTML", -} -var Document_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "PLAIN_TEXT": 1, - "HTML": 2, -} - -func (x Document_Type) String() string { - return proto.EnumName(Document_Type_name, int32(x)) -} -func (Document_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// The type of the entity. -type Entity_Type int32 - -const ( - // Unknown - Entity_UNKNOWN Entity_Type = 0 - // Person - Entity_PERSON Entity_Type = 1 - // Location - Entity_LOCATION Entity_Type = 2 - // Organization - Entity_ORGANIZATION Entity_Type = 3 - // Event - Entity_EVENT Entity_Type = 4 - // Work of art - Entity_WORK_OF_ART Entity_Type = 5 - // Consumer goods - Entity_CONSUMER_GOOD Entity_Type = 6 - // Other types - Entity_OTHER Entity_Type = 7 -) - -var Entity_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "PERSON", - 2: "LOCATION", - 3: "ORGANIZATION", - 4: "EVENT", - 5: "WORK_OF_ART", - 6: "CONSUMER_GOOD", - 7: "OTHER", -} -var Entity_Type_value = map[string]int32{ - "UNKNOWN": 0, - "PERSON": 1, - "LOCATION": 2, - "ORGANIZATION": 3, - "EVENT": 4, - "WORK_OF_ART": 5, - "CONSUMER_GOOD": 6, - "OTHER": 7, -} - -func (x Entity_Type) String() string { - return proto.EnumName(Entity_Type_name, int32(x)) -} -func (Entity_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// The part of speech tags enum. -type PartOfSpeech_Tag int32 - -const ( - // Unknown - PartOfSpeech_UNKNOWN PartOfSpeech_Tag = 0 - // Adjective - PartOfSpeech_ADJ PartOfSpeech_Tag = 1 - // Adposition (preposition and postposition) - PartOfSpeech_ADP PartOfSpeech_Tag = 2 - // Adverb - PartOfSpeech_ADV PartOfSpeech_Tag = 3 - // Conjunction - PartOfSpeech_CONJ PartOfSpeech_Tag = 4 - // Determiner - PartOfSpeech_DET PartOfSpeech_Tag = 5 - // Noun (common and proper) - PartOfSpeech_NOUN PartOfSpeech_Tag = 6 - // Cardinal number - PartOfSpeech_NUM PartOfSpeech_Tag = 7 - // Pronoun - PartOfSpeech_PRON PartOfSpeech_Tag = 8 - // Particle or other function word - PartOfSpeech_PRT PartOfSpeech_Tag = 9 - // Punctuation - PartOfSpeech_PUNCT PartOfSpeech_Tag = 10 - // Verb (all tenses and modes) - PartOfSpeech_VERB PartOfSpeech_Tag = 11 - // Other: foreign words, typos, abbreviations - PartOfSpeech_X PartOfSpeech_Tag = 12 - // Affix - PartOfSpeech_AFFIX PartOfSpeech_Tag = 13 -) - -var PartOfSpeech_Tag_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ADJ", - 2: "ADP", - 3: "ADV", - 4: "CONJ", - 5: "DET", - 6: "NOUN", - 7: "NUM", - 8: "PRON", - 9: "PRT", - 10: "PUNCT", - 11: "VERB", - 12: "X", - 13: "AFFIX", -} -var PartOfSpeech_Tag_value = map[string]int32{ - "UNKNOWN": 0, - "ADJ": 1, - "ADP": 2, - "ADV": 3, - "CONJ": 4, - "DET": 5, - "NOUN": 6, - "NUM": 7, - "PRON": 8, - "PRT": 9, - "PUNCT": 10, - "VERB": 11, - "X": 12, - "AFFIX": 13, -} - -func (x PartOfSpeech_Tag) String() string { - return proto.EnumName(PartOfSpeech_Tag_name, int32(x)) -} -func (PartOfSpeech_Tag) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} } - -// The characteristic of a verb that expresses time flow during an event. -type PartOfSpeech_Aspect int32 - -const ( - // Aspect is not applicable in the analyzed language or is not predicted. - PartOfSpeech_ASPECT_UNKNOWN PartOfSpeech_Aspect = 0 - // Perfective - PartOfSpeech_PERFECTIVE PartOfSpeech_Aspect = 1 - // Imperfective - PartOfSpeech_IMPERFECTIVE PartOfSpeech_Aspect = 2 - // Progressive - PartOfSpeech_PROGRESSIVE PartOfSpeech_Aspect = 3 -) - -var PartOfSpeech_Aspect_name = map[int32]string{ - 0: "ASPECT_UNKNOWN", - 1: "PERFECTIVE", - 2: "IMPERFECTIVE", - 3: "PROGRESSIVE", -} -var PartOfSpeech_Aspect_value = map[string]int32{ - "ASPECT_UNKNOWN": 0, - "PERFECTIVE": 1, - "IMPERFECTIVE": 2, - "PROGRESSIVE": 3, -} - -func (x PartOfSpeech_Aspect) String() string { - return proto.EnumName(PartOfSpeech_Aspect_name, int32(x)) -} -func (PartOfSpeech_Aspect) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 1} } - -// The grammatical function performed by a noun or pronoun in a phrase, -// clause, or sentence. In some languages, other parts of speech, such as -// adjective and determiner, take case inflection in agreement with the noun. -type PartOfSpeech_Case int32 - -const ( - // Case is not applicable in the analyzed language or is not predicted. - PartOfSpeech_CASE_UNKNOWN PartOfSpeech_Case = 0 - // Accusative - PartOfSpeech_ACCUSATIVE PartOfSpeech_Case = 1 - // Adverbial - PartOfSpeech_ADVERBIAL PartOfSpeech_Case = 2 - // Complementive - PartOfSpeech_COMPLEMENTIVE PartOfSpeech_Case = 3 - // Dative - PartOfSpeech_DATIVE PartOfSpeech_Case = 4 - // Genitive - PartOfSpeech_GENITIVE PartOfSpeech_Case = 5 - // Instrumental - PartOfSpeech_INSTRUMENTAL PartOfSpeech_Case = 6 - // Locative - PartOfSpeech_LOCATIVE PartOfSpeech_Case = 7 - // Nominative - PartOfSpeech_NOMINATIVE PartOfSpeech_Case = 8 - // Oblique - PartOfSpeech_OBLIQUE PartOfSpeech_Case = 9 - // Partitive - PartOfSpeech_PARTITIVE PartOfSpeech_Case = 10 - // Prepositional - PartOfSpeech_PREPOSITIONAL PartOfSpeech_Case = 11 - // Reflexive - PartOfSpeech_REFLEXIVE_CASE PartOfSpeech_Case = 12 - // Relative - PartOfSpeech_RELATIVE_CASE PartOfSpeech_Case = 13 - // Vocative - PartOfSpeech_VOCATIVE PartOfSpeech_Case = 14 -) - -var PartOfSpeech_Case_name = map[int32]string{ - 0: "CASE_UNKNOWN", - 1: "ACCUSATIVE", - 2: "ADVERBIAL", - 3: "COMPLEMENTIVE", - 4: "DATIVE", - 5: "GENITIVE", - 6: "INSTRUMENTAL", - 7: "LOCATIVE", - 8: "NOMINATIVE", - 9: "OBLIQUE", - 10: "PARTITIVE", - 11: "PREPOSITIONAL", - 12: "REFLEXIVE_CASE", - 13: "RELATIVE_CASE", - 14: "VOCATIVE", -} -var PartOfSpeech_Case_value = map[string]int32{ - "CASE_UNKNOWN": 0, - "ACCUSATIVE": 1, - "ADVERBIAL": 2, - "COMPLEMENTIVE": 3, - "DATIVE": 4, - "GENITIVE": 5, - "INSTRUMENTAL": 6, - "LOCATIVE": 7, - "NOMINATIVE": 8, - "OBLIQUE": 9, - "PARTITIVE": 10, - "PREPOSITIONAL": 11, - "REFLEXIVE_CASE": 12, - "RELATIVE_CASE": 13, - "VOCATIVE": 14, -} - -func (x PartOfSpeech_Case) String() string { - return proto.EnumName(PartOfSpeech_Case_name, int32(x)) -} -func (PartOfSpeech_Case) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 2} } - -// Depending on the language, Form can be categorizing different forms of -// verbs, adjectives, adverbs, etc. For example, categorizing inflected -// endings of verbs and adjectives or distinguishing between short and long -// forms of adjectives and participles -type PartOfSpeech_Form int32 - -const ( - // Form is not applicable in the analyzed language or is not predicted. - PartOfSpeech_FORM_UNKNOWN PartOfSpeech_Form = 0 - // Adnomial - PartOfSpeech_ADNOMIAL PartOfSpeech_Form = 1 - // Auxiliary - PartOfSpeech_AUXILIARY PartOfSpeech_Form = 2 - // Complementizer - PartOfSpeech_COMPLEMENTIZER PartOfSpeech_Form = 3 - // Final ending - PartOfSpeech_FINAL_ENDING PartOfSpeech_Form = 4 - // Gerund - PartOfSpeech_GERUND PartOfSpeech_Form = 5 - // Realis - PartOfSpeech_REALIS PartOfSpeech_Form = 6 - // Irrealis - PartOfSpeech_IRREALIS PartOfSpeech_Form = 7 - // Short form - PartOfSpeech_SHORT PartOfSpeech_Form = 8 - // Long form - PartOfSpeech_LONG PartOfSpeech_Form = 9 - // Order form - PartOfSpeech_ORDER PartOfSpeech_Form = 10 - // Specific form - PartOfSpeech_SPECIFIC PartOfSpeech_Form = 11 -) - -var PartOfSpeech_Form_name = map[int32]string{ - 0: "FORM_UNKNOWN", - 1: "ADNOMIAL", - 2: "AUXILIARY", - 3: "COMPLEMENTIZER", - 4: "FINAL_ENDING", - 5: "GERUND", - 6: "REALIS", - 7: "IRREALIS", - 8: "SHORT", - 9: "LONG", - 10: "ORDER", - 11: "SPECIFIC", -} -var PartOfSpeech_Form_value = map[string]int32{ - "FORM_UNKNOWN": 0, - "ADNOMIAL": 1, - "AUXILIARY": 2, - "COMPLEMENTIZER": 3, - "FINAL_ENDING": 4, - "GERUND": 5, - "REALIS": 6, - "IRREALIS": 7, - "SHORT": 8, - "LONG": 9, - "ORDER": 10, - "SPECIFIC": 11, -} - -func (x PartOfSpeech_Form) String() string { - return proto.EnumName(PartOfSpeech_Form_name, int32(x)) -} -func (PartOfSpeech_Form) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 3} } - -// Gender classes of nouns reflected in the behaviour of associated words. -type PartOfSpeech_Gender int32 - -const ( - // Gender is not applicable in the analyzed language or is not predicted. - PartOfSpeech_GENDER_UNKNOWN PartOfSpeech_Gender = 0 - // Feminine - PartOfSpeech_FEMININE PartOfSpeech_Gender = 1 - // Masculine - PartOfSpeech_MASCULINE PartOfSpeech_Gender = 2 - // Neuter - PartOfSpeech_NEUTER PartOfSpeech_Gender = 3 -) - -var PartOfSpeech_Gender_name = map[int32]string{ - 0: "GENDER_UNKNOWN", - 1: "FEMININE", - 2: "MASCULINE", - 3: "NEUTER", -} -var PartOfSpeech_Gender_value = map[string]int32{ - "GENDER_UNKNOWN": 0, - "FEMININE": 1, - "MASCULINE": 2, - "NEUTER": 3, -} - -func (x PartOfSpeech_Gender) String() string { - return proto.EnumName(PartOfSpeech_Gender_name, int32(x)) -} -func (PartOfSpeech_Gender) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 4} } - -// The grammatical feature of verbs, used for showing modality and attitude. -type PartOfSpeech_Mood int32 - -const ( - // Mood is not applicable in the analyzed language or is not predicted. - PartOfSpeech_MOOD_UNKNOWN PartOfSpeech_Mood = 0 - // Conditional - PartOfSpeech_CONDITIONAL_MOOD PartOfSpeech_Mood = 1 - // Imperative - PartOfSpeech_IMPERATIVE PartOfSpeech_Mood = 2 - // Indicative - PartOfSpeech_INDICATIVE PartOfSpeech_Mood = 3 - // Interrogative - PartOfSpeech_INTERROGATIVE PartOfSpeech_Mood = 4 - // Jussive - PartOfSpeech_JUSSIVE PartOfSpeech_Mood = 5 - // Subjunctive - PartOfSpeech_SUBJUNCTIVE PartOfSpeech_Mood = 6 -) - -var PartOfSpeech_Mood_name = map[int32]string{ - 0: "MOOD_UNKNOWN", - 1: "CONDITIONAL_MOOD", - 2: "IMPERATIVE", - 3: "INDICATIVE", - 4: "INTERROGATIVE", - 5: "JUSSIVE", - 6: "SUBJUNCTIVE", -} -var PartOfSpeech_Mood_value = map[string]int32{ - "MOOD_UNKNOWN": 0, - "CONDITIONAL_MOOD": 1, - "IMPERATIVE": 2, - "INDICATIVE": 3, - "INTERROGATIVE": 4, - "JUSSIVE": 5, - "SUBJUNCTIVE": 6, -} - -func (x PartOfSpeech_Mood) String() string { - return proto.EnumName(PartOfSpeech_Mood_name, int32(x)) -} -func (PartOfSpeech_Mood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 5} } - -// Count distinctions. -type PartOfSpeech_Number int32 - -const ( - // Number is not applicable in the analyzed language or is not predicted. - PartOfSpeech_NUMBER_UNKNOWN PartOfSpeech_Number = 0 - // Singular - PartOfSpeech_SINGULAR PartOfSpeech_Number = 1 - // Plural - PartOfSpeech_PLURAL PartOfSpeech_Number = 2 - // Dual - PartOfSpeech_DUAL PartOfSpeech_Number = 3 -) - -var PartOfSpeech_Number_name = map[int32]string{ - 0: "NUMBER_UNKNOWN", - 1: "SINGULAR", - 2: "PLURAL", - 3: "DUAL", -} -var PartOfSpeech_Number_value = map[string]int32{ - "NUMBER_UNKNOWN": 0, - "SINGULAR": 1, - "PLURAL": 2, - "DUAL": 3, -} - -func (x PartOfSpeech_Number) String() string { - return proto.EnumName(PartOfSpeech_Number_name, int32(x)) -} -func (PartOfSpeech_Number) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 6} } - -// The distinction between the speaker, second person, third person, etc. -type PartOfSpeech_Person int32 - -const ( - // Person is not applicable in the analyzed language or is not predicted. - PartOfSpeech_PERSON_UNKNOWN PartOfSpeech_Person = 0 - // First - PartOfSpeech_FIRST PartOfSpeech_Person = 1 - // Second - PartOfSpeech_SECOND PartOfSpeech_Person = 2 - // Third - PartOfSpeech_THIRD PartOfSpeech_Person = 3 - // Reflexive - PartOfSpeech_REFLEXIVE_PERSON PartOfSpeech_Person = 4 -) - -var PartOfSpeech_Person_name = map[int32]string{ - 0: "PERSON_UNKNOWN", - 1: "FIRST", - 2: "SECOND", - 3: "THIRD", - 4: "REFLEXIVE_PERSON", -} -var PartOfSpeech_Person_value = map[string]int32{ - "PERSON_UNKNOWN": 0, - "FIRST": 1, - "SECOND": 2, - "THIRD": 3, - "REFLEXIVE_PERSON": 4, -} - -func (x PartOfSpeech_Person) String() string { - return proto.EnumName(PartOfSpeech_Person_name, int32(x)) -} -func (PartOfSpeech_Person) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 7} } - -// This category shows if the token is part of a proper name. -type PartOfSpeech_Proper int32 - -const ( - // Proper is not applicable in the analyzed language or is not predicted. - PartOfSpeech_PROPER_UNKNOWN PartOfSpeech_Proper = 0 - // Proper - PartOfSpeech_PROPER PartOfSpeech_Proper = 1 - // Not proper - PartOfSpeech_NOT_PROPER PartOfSpeech_Proper = 2 -) - -var PartOfSpeech_Proper_name = map[int32]string{ - 0: "PROPER_UNKNOWN", - 1: "PROPER", - 2: "NOT_PROPER", -} -var PartOfSpeech_Proper_value = map[string]int32{ - "PROPER_UNKNOWN": 0, - "PROPER": 1, - "NOT_PROPER": 2, -} - -func (x PartOfSpeech_Proper) String() string { - return proto.EnumName(PartOfSpeech_Proper_name, int32(x)) -} -func (PartOfSpeech_Proper) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 8} } - -// Reciprocal features of a pronoun. -type PartOfSpeech_Reciprocity int32 - -const ( - // Reciprocity is not applicable in the analyzed language or is not - // predicted. - PartOfSpeech_RECIPROCITY_UNKNOWN PartOfSpeech_Reciprocity = 0 - // Reciprocal - PartOfSpeech_RECIPROCAL PartOfSpeech_Reciprocity = 1 - // Non-reciprocal - PartOfSpeech_NON_RECIPROCAL PartOfSpeech_Reciprocity = 2 -) - -var PartOfSpeech_Reciprocity_name = map[int32]string{ - 0: "RECIPROCITY_UNKNOWN", - 1: "RECIPROCAL", - 2: "NON_RECIPROCAL", -} -var PartOfSpeech_Reciprocity_value = map[string]int32{ - "RECIPROCITY_UNKNOWN": 0, - "RECIPROCAL": 1, - "NON_RECIPROCAL": 2, -} - -func (x PartOfSpeech_Reciprocity) String() string { - return proto.EnumName(PartOfSpeech_Reciprocity_name, int32(x)) -} -func (PartOfSpeech_Reciprocity) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 9} } - -// Time reference. -type PartOfSpeech_Tense int32 - -const ( - // Tense is not applicable in the analyzed language or is not predicted. - PartOfSpeech_TENSE_UNKNOWN PartOfSpeech_Tense = 0 - // Conditional - PartOfSpeech_CONDITIONAL_TENSE PartOfSpeech_Tense = 1 - // Future - PartOfSpeech_FUTURE PartOfSpeech_Tense = 2 - // Past - PartOfSpeech_PAST PartOfSpeech_Tense = 3 - // Present - PartOfSpeech_PRESENT PartOfSpeech_Tense = 4 - // Imperfect - PartOfSpeech_IMPERFECT PartOfSpeech_Tense = 5 - // Pluperfect - PartOfSpeech_PLUPERFECT PartOfSpeech_Tense = 6 -) - -var PartOfSpeech_Tense_name = map[int32]string{ - 0: "TENSE_UNKNOWN", - 1: "CONDITIONAL_TENSE", - 2: "FUTURE", - 3: "PAST", - 4: "PRESENT", - 5: "IMPERFECT", - 6: "PLUPERFECT", -} -var PartOfSpeech_Tense_value = map[string]int32{ - "TENSE_UNKNOWN": 0, - "CONDITIONAL_TENSE": 1, - "FUTURE": 2, - "PAST": 3, - "PRESENT": 4, - "IMPERFECT": 5, - "PLUPERFECT": 6, -} - -func (x PartOfSpeech_Tense) String() string { - return proto.EnumName(PartOfSpeech_Tense_name, int32(x)) -} -func (PartOfSpeech_Tense) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 10} } - -// The relationship between the action that a verb expresses and the -// participants identified by its arguments. -type PartOfSpeech_Voice int32 - -const ( - // Voice is not applicable in the analyzed language or is not predicted. - PartOfSpeech_VOICE_UNKNOWN PartOfSpeech_Voice = 0 - // Active - PartOfSpeech_ACTIVE PartOfSpeech_Voice = 1 - // Causative - PartOfSpeech_CAUSATIVE PartOfSpeech_Voice = 2 - // Passive - PartOfSpeech_PASSIVE PartOfSpeech_Voice = 3 -) - -var PartOfSpeech_Voice_name = map[int32]string{ - 0: "VOICE_UNKNOWN", - 1: "ACTIVE", - 2: "CAUSATIVE", - 3: "PASSIVE", -} -var PartOfSpeech_Voice_value = map[string]int32{ - "VOICE_UNKNOWN": 0, - "ACTIVE": 1, - "CAUSATIVE": 2, - "PASSIVE": 3, -} - -func (x PartOfSpeech_Voice) String() string { - return proto.EnumName(PartOfSpeech_Voice_name, int32(x)) -} -func (PartOfSpeech_Voice) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 11} } - -// The parse label enum for the token. -type DependencyEdge_Label int32 - -const ( - // Unknown - DependencyEdge_UNKNOWN DependencyEdge_Label = 0 - // Abbreviation modifier - DependencyEdge_ABBREV DependencyEdge_Label = 1 - // Adjectival complement - DependencyEdge_ACOMP DependencyEdge_Label = 2 - // Adverbial clause modifier - DependencyEdge_ADVCL DependencyEdge_Label = 3 - // Adverbial modifier - DependencyEdge_ADVMOD DependencyEdge_Label = 4 - // Adjectival modifier of an NP - DependencyEdge_AMOD DependencyEdge_Label = 5 - // Appositional modifier of an NP - DependencyEdge_APPOS DependencyEdge_Label = 6 - // Attribute dependent of a copular verb - DependencyEdge_ATTR DependencyEdge_Label = 7 - // Auxiliary (non-main) verb - DependencyEdge_AUX DependencyEdge_Label = 8 - // Passive auxiliary - DependencyEdge_AUXPASS DependencyEdge_Label = 9 - // Coordinating conjunction - DependencyEdge_CC DependencyEdge_Label = 10 - // Clausal complement of a verb or adjective - DependencyEdge_CCOMP DependencyEdge_Label = 11 - // Conjunct - DependencyEdge_CONJ DependencyEdge_Label = 12 - // Clausal subject - DependencyEdge_CSUBJ DependencyEdge_Label = 13 - // Clausal passive subject - DependencyEdge_CSUBJPASS DependencyEdge_Label = 14 - // Dependency (unable to determine) - DependencyEdge_DEP DependencyEdge_Label = 15 - // Determiner - DependencyEdge_DET DependencyEdge_Label = 16 - // Discourse - DependencyEdge_DISCOURSE DependencyEdge_Label = 17 - // Direct object - DependencyEdge_DOBJ DependencyEdge_Label = 18 - // Expletive - DependencyEdge_EXPL DependencyEdge_Label = 19 - // Goes with (part of a word in a text not well edited) - DependencyEdge_GOESWITH DependencyEdge_Label = 20 - // Indirect object - DependencyEdge_IOBJ DependencyEdge_Label = 21 - // Marker (word introducing a subordinate clause) - DependencyEdge_MARK DependencyEdge_Label = 22 - // Multi-word expression - DependencyEdge_MWE DependencyEdge_Label = 23 - // Multi-word verbal expression - DependencyEdge_MWV DependencyEdge_Label = 24 - // Negation modifier - DependencyEdge_NEG DependencyEdge_Label = 25 - // Noun compound modifier - DependencyEdge_NN DependencyEdge_Label = 26 - // Noun phrase used as an adverbial modifier - DependencyEdge_NPADVMOD DependencyEdge_Label = 27 - // Nominal subject - DependencyEdge_NSUBJ DependencyEdge_Label = 28 - // Passive nominal subject - DependencyEdge_NSUBJPASS DependencyEdge_Label = 29 - // Numeric modifier of a noun - DependencyEdge_NUM DependencyEdge_Label = 30 - // Element of compound number - DependencyEdge_NUMBER DependencyEdge_Label = 31 - // Punctuation mark - DependencyEdge_P DependencyEdge_Label = 32 - // Parataxis relation - DependencyEdge_PARATAXIS DependencyEdge_Label = 33 - // Participial modifier - DependencyEdge_PARTMOD DependencyEdge_Label = 34 - // The complement of a preposition is a clause - DependencyEdge_PCOMP DependencyEdge_Label = 35 - // Object of a preposition - DependencyEdge_POBJ DependencyEdge_Label = 36 - // Possession modifier - DependencyEdge_POSS DependencyEdge_Label = 37 - // Postverbal negative particle - DependencyEdge_POSTNEG DependencyEdge_Label = 38 - // Predicate complement - DependencyEdge_PRECOMP DependencyEdge_Label = 39 - // Preconjunt - DependencyEdge_PRECONJ DependencyEdge_Label = 40 - // Predeterminer - DependencyEdge_PREDET DependencyEdge_Label = 41 - // Prefix - DependencyEdge_PREF DependencyEdge_Label = 42 - // Prepositional modifier - DependencyEdge_PREP DependencyEdge_Label = 43 - // The relationship between a verb and verbal morpheme - DependencyEdge_PRONL DependencyEdge_Label = 44 - // Particle - DependencyEdge_PRT DependencyEdge_Label = 45 - // Associative or possessive marker - DependencyEdge_PS DependencyEdge_Label = 46 - // Quantifier phrase modifier - DependencyEdge_QUANTMOD DependencyEdge_Label = 47 - // Relative clause modifier - DependencyEdge_RCMOD DependencyEdge_Label = 48 - // Complementizer in relative clause - DependencyEdge_RCMODREL DependencyEdge_Label = 49 - // Ellipsis without a preceding predicate - DependencyEdge_RDROP DependencyEdge_Label = 50 - // Referent - DependencyEdge_REF DependencyEdge_Label = 51 - // Remnant - DependencyEdge_REMNANT DependencyEdge_Label = 52 - // Reparandum - DependencyEdge_REPARANDUM DependencyEdge_Label = 53 - // Root - DependencyEdge_ROOT DependencyEdge_Label = 54 - // Suffix specifying a unit of number - DependencyEdge_SNUM DependencyEdge_Label = 55 - // Suffix - DependencyEdge_SUFF DependencyEdge_Label = 56 - // Temporal modifier - DependencyEdge_TMOD DependencyEdge_Label = 57 - // Topic marker - DependencyEdge_TOPIC DependencyEdge_Label = 58 - // Clause headed by an infinite form of the verb that modifies a noun - DependencyEdge_VMOD DependencyEdge_Label = 59 - // Vocative - DependencyEdge_VOCATIVE DependencyEdge_Label = 60 - // Open clausal complement - DependencyEdge_XCOMP DependencyEdge_Label = 61 - // Name suffix - DependencyEdge_SUFFIX DependencyEdge_Label = 62 - // Name title - DependencyEdge_TITLE DependencyEdge_Label = 63 - // Adverbial phrase modifier - DependencyEdge_ADVPHMOD DependencyEdge_Label = 64 - // Causative auxiliary - DependencyEdge_AUXCAUS DependencyEdge_Label = 65 - // Helper auxiliary - DependencyEdge_AUXVV DependencyEdge_Label = 66 - // Rentaishi (Prenominal modifier) - DependencyEdge_DTMOD DependencyEdge_Label = 67 - // Foreign words - DependencyEdge_FOREIGN DependencyEdge_Label = 68 - // Keyword - DependencyEdge_KW DependencyEdge_Label = 69 - // List for chains of comparable items - DependencyEdge_LIST DependencyEdge_Label = 70 - // Nominalized clause - DependencyEdge_NOMC DependencyEdge_Label = 71 - // Nominalized clausal subject - DependencyEdge_NOMCSUBJ DependencyEdge_Label = 72 - // Nominalized clausal passive - DependencyEdge_NOMCSUBJPASS DependencyEdge_Label = 73 - // Compound of numeric modifier - DependencyEdge_NUMC DependencyEdge_Label = 74 - // Copula - DependencyEdge_COP DependencyEdge_Label = 75 - // Dislocated relation (for fronted/topicalized elements) - DependencyEdge_DISLOCATED DependencyEdge_Label = 76 - // Aspect marker - DependencyEdge_ASP DependencyEdge_Label = 77 - // Genitive modifier - DependencyEdge_GMOD DependencyEdge_Label = 78 - // Genitive object - DependencyEdge_GOBJ DependencyEdge_Label = 79 - // Infinitival modifier - DependencyEdge_INFMOD DependencyEdge_Label = 80 - // Measure - DependencyEdge_MES DependencyEdge_Label = 81 - // Nominal complement of a noun - DependencyEdge_NCOMP DependencyEdge_Label = 82 -) - -var DependencyEdge_Label_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ABBREV", - 2: "ACOMP", - 3: "ADVCL", - 4: "ADVMOD", - 5: "AMOD", - 6: "APPOS", - 7: "ATTR", - 8: "AUX", - 9: "AUXPASS", - 10: "CC", - 11: "CCOMP", - 12: "CONJ", - 13: "CSUBJ", - 14: "CSUBJPASS", - 15: "DEP", - 16: "DET", - 17: "DISCOURSE", - 18: "DOBJ", - 19: "EXPL", - 20: "GOESWITH", - 21: "IOBJ", - 22: "MARK", - 23: "MWE", - 24: "MWV", - 25: "NEG", - 26: "NN", - 27: "NPADVMOD", - 28: "NSUBJ", - 29: "NSUBJPASS", - 30: "NUM", - 31: "NUMBER", - 32: "P", - 33: "PARATAXIS", - 34: "PARTMOD", - 35: "PCOMP", - 36: "POBJ", - 37: "POSS", - 38: "POSTNEG", - 39: "PRECOMP", - 40: "PRECONJ", - 41: "PREDET", - 42: "PREF", - 43: "PREP", - 44: "PRONL", - 45: "PRT", - 46: "PS", - 47: "QUANTMOD", - 48: "RCMOD", - 49: "RCMODREL", - 50: "RDROP", - 51: "REF", - 52: "REMNANT", - 53: "REPARANDUM", - 54: "ROOT", - 55: "SNUM", - 56: "SUFF", - 57: "TMOD", - 58: "TOPIC", - 59: "VMOD", - 60: "VOCATIVE", - 61: "XCOMP", - 62: "SUFFIX", - 63: "TITLE", - 64: "ADVPHMOD", - 65: "AUXCAUS", - 66: "AUXVV", - 67: "DTMOD", - 68: "FOREIGN", - 69: "KW", - 70: "LIST", - 71: "NOMC", - 72: "NOMCSUBJ", - 73: "NOMCSUBJPASS", - 74: "NUMC", - 75: "COP", - 76: "DISLOCATED", - 77: "ASP", - 78: "GMOD", - 79: "GOBJ", - 80: "INFMOD", - 81: "MES", - 82: "NCOMP", -} -var DependencyEdge_Label_value = map[string]int32{ - "UNKNOWN": 0, - "ABBREV": 1, - "ACOMP": 2, - "ADVCL": 3, - "ADVMOD": 4, - "AMOD": 5, - "APPOS": 6, - "ATTR": 7, - "AUX": 8, - "AUXPASS": 9, - "CC": 10, - "CCOMP": 11, - "CONJ": 12, - "CSUBJ": 13, - "CSUBJPASS": 14, - "DEP": 15, - "DET": 16, - "DISCOURSE": 17, - "DOBJ": 18, - "EXPL": 19, - "GOESWITH": 20, - "IOBJ": 21, - "MARK": 22, - "MWE": 23, - "MWV": 24, - "NEG": 25, - "NN": 26, - "NPADVMOD": 27, - "NSUBJ": 28, - "NSUBJPASS": 29, - "NUM": 30, - "NUMBER": 31, - "P": 32, - "PARATAXIS": 33, - "PARTMOD": 34, - "PCOMP": 35, - "POBJ": 36, - "POSS": 37, - "POSTNEG": 38, - "PRECOMP": 39, - "PRECONJ": 40, - "PREDET": 41, - "PREF": 42, - "PREP": 43, - "PRONL": 44, - "PRT": 45, - "PS": 46, - "QUANTMOD": 47, - "RCMOD": 48, - "RCMODREL": 49, - "RDROP": 50, - "REF": 51, - "REMNANT": 52, - "REPARANDUM": 53, - "ROOT": 54, - "SNUM": 55, - "SUFF": 56, - "TMOD": 57, - "TOPIC": 58, - "VMOD": 59, - "VOCATIVE": 60, - "XCOMP": 61, - "SUFFIX": 62, - "TITLE": 63, - "ADVPHMOD": 64, - "AUXCAUS": 65, - "AUXVV": 66, - "DTMOD": 67, - "FOREIGN": 68, - "KW": 69, - "LIST": 70, - "NOMC": 71, - "NOMCSUBJ": 72, - "NOMCSUBJPASS": 73, - "NUMC": 74, - "COP": 75, - "DISLOCATED": 76, - "ASP": 77, - "GMOD": 78, - "GOBJ": 79, - "INFMOD": 80, - "MES": 81, - "NCOMP": 82, -} - -func (x DependencyEdge_Label) String() string { - return proto.EnumName(DependencyEdge_Label_name, int32(x)) -} -func (DependencyEdge_Label) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6, 0} } - -// The supported types of mentions. -type EntityMention_Type int32 - -const ( - // Unknown - EntityMention_TYPE_UNKNOWN EntityMention_Type = 0 - // Proper name - EntityMention_PROPER EntityMention_Type = 1 - // Common noun (or noun compound) - EntityMention_COMMON EntityMention_Type = 2 -) - -var EntityMention_Type_name = map[int32]string{ - 0: "TYPE_UNKNOWN", - 1: "PROPER", - 2: "COMMON", -} -var EntityMention_Type_value = map[string]int32{ - "TYPE_UNKNOWN": 0, - "PROPER": 1, - "COMMON": 2, -} - -func (x EntityMention_Type) String() string { - return proto.EnumName(EntityMention_Type_name, int32(x)) -} -func (EntityMention_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -// ################################################################ # -// -// Represents the input to API methods. -type Document struct { - // Required. If the type is not set or is `TYPE_UNSPECIFIED`, - // returns an `INVALID_ARGUMENT` error. - Type Document_Type `protobuf:"varint,1,opt,name=type,enum=google.cloud.language.v1beta2.Document_Type" json:"type,omitempty"` - // The source of the document: a string containing the content or a - // Google Cloud Storage URI. - // - // Types that are valid to be assigned to Source: - // *Document_Content - // *Document_GcsContentUri - Source isDocument_Source `protobuf_oneof:"source"` - // The language of the document (if not specified, the language is - // automatically detected). Both ISO and BCP-47 language codes are - // accepted.<br> - // [Language Support](/natural-language/docs/languages) - // lists currently supported languages for each API method. - // If the language (either specified by the caller or automatically detected) - // is not supported by the called API method, an `INVALID_ARGUMENT` error - // is returned. - Language string `protobuf:"bytes,4,opt,name=language" json:"language,omitempty"` -} - -func (m *Document) Reset() { *m = Document{} } -func (m *Document) String() string { return proto.CompactTextString(m) } -func (*Document) ProtoMessage() {} -func (*Document) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isDocument_Source interface { - isDocument_Source() -} - -type Document_Content struct { - Content string `protobuf:"bytes,2,opt,name=content,oneof"` -} -type Document_GcsContentUri struct { - GcsContentUri string `protobuf:"bytes,3,opt,name=gcs_content_uri,json=gcsContentUri,oneof"` -} - -func (*Document_Content) isDocument_Source() {} -func (*Document_GcsContentUri) isDocument_Source() {} - -func (m *Document) GetSource() isDocument_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *Document) GetType() Document_Type { - if m != nil { - return m.Type - } - return Document_TYPE_UNSPECIFIED -} - -func (m *Document) GetContent() string { - if x, ok := m.GetSource().(*Document_Content); ok { - return x.Content - } - return "" -} - -func (m *Document) GetGcsContentUri() string { - if x, ok := m.GetSource().(*Document_GcsContentUri); ok { - return x.GcsContentUri - } - return "" -} - -func (m *Document) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Document) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Document_OneofMarshaler, _Document_OneofUnmarshaler, _Document_OneofSizer, []interface{}{ - (*Document_Content)(nil), - (*Document_GcsContentUri)(nil), - } -} - -func _Document_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Document) - // source - switch x := m.Source.(type) { - case *Document_Content: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Content) - case *Document_GcsContentUri: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.GcsContentUri) - case nil: - default: - return fmt.Errorf("Document.Source has unexpected type %T", x) - } - return nil -} - -func _Document_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Document) - switch tag { - case 2: // source.content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Source = &Document_Content{x} - return true, err - case 3: // source.gcs_content_uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Source = &Document_GcsContentUri{x} - return true, err - default: - return false, nil - } -} - -func _Document_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Document) - // source - switch x := m.Source.(type) { - case *Document_Content: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Content))) - n += len(x.Content) - case *Document_GcsContentUri: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.GcsContentUri))) - n += len(x.GcsContentUri) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents a sentence in the input document. -type Sentence struct { - // The sentence text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // For calls to [AnalyzeSentiment][] or if - // [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_document_sentiment] is set to - // true, this field will contain the sentiment for the sentence. - Sentiment *Sentiment `protobuf:"bytes,2,opt,name=sentiment" json:"sentiment,omitempty"` -} - -func (m *Sentence) Reset() { *m = Sentence{} } -func (m *Sentence) String() string { return proto.CompactTextString(m) } -func (*Sentence) ProtoMessage() {} -func (*Sentence) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Sentence) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *Sentence) GetSentiment() *Sentiment { - if m != nil { - return m.Sentiment - } - return nil -} - -// Represents a phrase in the text that is a known entity, such as -// a person, an organization, or location. The API associates information, such -// as salience and mentions, with entities. -type Entity struct { - // The representative name for the entity. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The entity type. - Type Entity_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.language.v1beta2.Entity_Type" json:"type,omitempty"` - // Metadata associated with the entity. - // - // Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if - // available. The associated keys are "wikipedia_url" and "mid", respectively. - Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The salience score associated with the entity in the [0, 1.0] range. - // - // The salience score for an entity provides information about the - // importance or centrality of that entity to the entire document text. - // Scores closer to 0 are less salient, while scores closer to 1.0 are highly - // salient. - Salience float32 `protobuf:"fixed32,4,opt,name=salience" json:"salience,omitempty"` - // The mentions of this entity in the input document. The API currently - // supports proper noun mentions. - Mentions []*EntityMention `protobuf:"bytes,5,rep,name=mentions" json:"mentions,omitempty"` - // For calls to [AnalyzeEntitySentiment][] or if - // [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_entity_sentiment] is set to - // true, this field will contain the aggregate sentiment expressed for this - // entity in the provided document. - Sentiment *Sentiment `protobuf:"bytes,6,opt,name=sentiment" json:"sentiment,omitempty"` -} - -func (m *Entity) Reset() { *m = Entity{} } -func (m *Entity) String() string { return proto.CompactTextString(m) } -func (*Entity) ProtoMessage() {} -func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Entity) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Entity) GetType() Entity_Type { - if m != nil { - return m.Type - } - return Entity_UNKNOWN -} - -func (m *Entity) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *Entity) GetSalience() float32 { - if m != nil { - return m.Salience - } - return 0 -} - -func (m *Entity) GetMentions() []*EntityMention { - if m != nil { - return m.Mentions - } - return nil -} - -func (m *Entity) GetSentiment() *Sentiment { - if m != nil { - return m.Sentiment - } - return nil -} - -// Represents the smallest syntactic building block of the text. -type Token struct { - // The token text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // Parts of speech tag for this token. - PartOfSpeech *PartOfSpeech `protobuf:"bytes,2,opt,name=part_of_speech,json=partOfSpeech" json:"part_of_speech,omitempty"` - // Dependency tree parse for this token. - DependencyEdge *DependencyEdge `protobuf:"bytes,3,opt,name=dependency_edge,json=dependencyEdge" json:"dependency_edge,omitempty"` - // [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token. - Lemma string `protobuf:"bytes,4,opt,name=lemma" json:"lemma,omitempty"` -} - -func (m *Token) Reset() { *m = Token{} } -func (m *Token) String() string { return proto.CompactTextString(m) } -func (*Token) ProtoMessage() {} -func (*Token) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Token) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *Token) GetPartOfSpeech() *PartOfSpeech { - if m != nil { - return m.PartOfSpeech - } - return nil -} - -func (m *Token) GetDependencyEdge() *DependencyEdge { - if m != nil { - return m.DependencyEdge - } - return nil -} - -func (m *Token) GetLemma() string { - if m != nil { - return m.Lemma - } - return "" -} - -// Represents the feeling associated with the entire text or entities in -// the text. -type Sentiment struct { - // A non-negative number in the [0, +inf) range, which represents - // the absolute magnitude of sentiment regardless of score (positive or - // negative). - Magnitude float32 `protobuf:"fixed32,2,opt,name=magnitude" json:"magnitude,omitempty"` - // Sentiment score between -1.0 (negative sentiment) and 1.0 - // (positive sentiment). - Score float32 `protobuf:"fixed32,3,opt,name=score" json:"score,omitempty"` -} - -func (m *Sentiment) Reset() { *m = Sentiment{} } -func (m *Sentiment) String() string { return proto.CompactTextString(m) } -func (*Sentiment) ProtoMessage() {} -func (*Sentiment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Sentiment) GetMagnitude() float32 { - if m != nil { - return m.Magnitude - } - return 0 -} - -func (m *Sentiment) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -// Represents part of speech information for a token. -type PartOfSpeech struct { - // The part of speech tag. - Tag PartOfSpeech_Tag `protobuf:"varint,1,opt,name=tag,enum=google.cloud.language.v1beta2.PartOfSpeech_Tag" json:"tag,omitempty"` - // The grammatical aspect. - Aspect PartOfSpeech_Aspect `protobuf:"varint,2,opt,name=aspect,enum=google.cloud.language.v1beta2.PartOfSpeech_Aspect" json:"aspect,omitempty"` - // The grammatical case. - Case PartOfSpeech_Case `protobuf:"varint,3,opt,name=case,enum=google.cloud.language.v1beta2.PartOfSpeech_Case" json:"case,omitempty"` - // The grammatical form. - Form PartOfSpeech_Form `protobuf:"varint,4,opt,name=form,enum=google.cloud.language.v1beta2.PartOfSpeech_Form" json:"form,omitempty"` - // The grammatical gender. - Gender PartOfSpeech_Gender `protobuf:"varint,5,opt,name=gender,enum=google.cloud.language.v1beta2.PartOfSpeech_Gender" json:"gender,omitempty"` - // The grammatical mood. - Mood PartOfSpeech_Mood `protobuf:"varint,6,opt,name=mood,enum=google.cloud.language.v1beta2.PartOfSpeech_Mood" json:"mood,omitempty"` - // The grammatical number. - Number PartOfSpeech_Number `protobuf:"varint,7,opt,name=number,enum=google.cloud.language.v1beta2.PartOfSpeech_Number" json:"number,omitempty"` - // The grammatical person. - Person PartOfSpeech_Person `protobuf:"varint,8,opt,name=person,enum=google.cloud.language.v1beta2.PartOfSpeech_Person" json:"person,omitempty"` - // The grammatical properness. - Proper PartOfSpeech_Proper `protobuf:"varint,9,opt,name=proper,enum=google.cloud.language.v1beta2.PartOfSpeech_Proper" json:"proper,omitempty"` - // The grammatical reciprocity. - Reciprocity PartOfSpeech_Reciprocity `protobuf:"varint,10,opt,name=reciprocity,enum=google.cloud.language.v1beta2.PartOfSpeech_Reciprocity" json:"reciprocity,omitempty"` - // The grammatical tense. - Tense PartOfSpeech_Tense `protobuf:"varint,11,opt,name=tense,enum=google.cloud.language.v1beta2.PartOfSpeech_Tense" json:"tense,omitempty"` - // The grammatical voice. - Voice PartOfSpeech_Voice `protobuf:"varint,12,opt,name=voice,enum=google.cloud.language.v1beta2.PartOfSpeech_Voice" json:"voice,omitempty"` -} - -func (m *PartOfSpeech) Reset() { *m = PartOfSpeech{} } -func (m *PartOfSpeech) String() string { return proto.CompactTextString(m) } -func (*PartOfSpeech) ProtoMessage() {} -func (*PartOfSpeech) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *PartOfSpeech) GetTag() PartOfSpeech_Tag { - if m != nil { - return m.Tag - } - return PartOfSpeech_UNKNOWN -} - -func (m *PartOfSpeech) GetAspect() PartOfSpeech_Aspect { - if m != nil { - return m.Aspect - } - return PartOfSpeech_ASPECT_UNKNOWN -} - -func (m *PartOfSpeech) GetCase() PartOfSpeech_Case { - if m != nil { - return m.Case - } - return PartOfSpeech_CASE_UNKNOWN -} - -func (m *PartOfSpeech) GetForm() PartOfSpeech_Form { - if m != nil { - return m.Form - } - return PartOfSpeech_FORM_UNKNOWN -} - -func (m *PartOfSpeech) GetGender() PartOfSpeech_Gender { - if m != nil { - return m.Gender - } - return PartOfSpeech_GENDER_UNKNOWN -} - -func (m *PartOfSpeech) GetMood() PartOfSpeech_Mood { - if m != nil { - return m.Mood - } - return PartOfSpeech_MOOD_UNKNOWN -} - -func (m *PartOfSpeech) GetNumber() PartOfSpeech_Number { - if m != nil { - return m.Number - } - return PartOfSpeech_NUMBER_UNKNOWN -} - -func (m *PartOfSpeech) GetPerson() PartOfSpeech_Person { - if m != nil { - return m.Person - } - return PartOfSpeech_PERSON_UNKNOWN -} - -func (m *PartOfSpeech) GetProper() PartOfSpeech_Proper { - if m != nil { - return m.Proper - } - return PartOfSpeech_PROPER_UNKNOWN -} - -func (m *PartOfSpeech) GetReciprocity() PartOfSpeech_Reciprocity { - if m != nil { - return m.Reciprocity - } - return PartOfSpeech_RECIPROCITY_UNKNOWN -} - -func (m *PartOfSpeech) GetTense() PartOfSpeech_Tense { - if m != nil { - return m.Tense - } - return PartOfSpeech_TENSE_UNKNOWN -} - -func (m *PartOfSpeech) GetVoice() PartOfSpeech_Voice { - if m != nil { - return m.Voice - } - return PartOfSpeech_VOICE_UNKNOWN -} - -// Represents dependency parse tree information for a token. -type DependencyEdge struct { - // Represents the head of this token in the dependency tree. - // This is the index of the token which has an arc going to this token. - // The index is the position of the token in the array of tokens returned - // by the API method. If this token is a root token, then the - // `head_token_index` is its own index. - HeadTokenIndex int32 `protobuf:"varint,1,opt,name=head_token_index,json=headTokenIndex" json:"head_token_index,omitempty"` - // The parse label for the token. - Label DependencyEdge_Label `protobuf:"varint,2,opt,name=label,enum=google.cloud.language.v1beta2.DependencyEdge_Label" json:"label,omitempty"` -} - -func (m *DependencyEdge) Reset() { *m = DependencyEdge{} } -func (m *DependencyEdge) String() string { return proto.CompactTextString(m) } -func (*DependencyEdge) ProtoMessage() {} -func (*DependencyEdge) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *DependencyEdge) GetHeadTokenIndex() int32 { - if m != nil { - return m.HeadTokenIndex - } - return 0 -} - -func (m *DependencyEdge) GetLabel() DependencyEdge_Label { - if m != nil { - return m.Label - } - return DependencyEdge_UNKNOWN -} - -// Represents a mention for an entity in the text. Currently, proper noun -// mentions are supported. -type EntityMention struct { - // The mention text. - Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // The type of the entity mention. - Type EntityMention_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.language.v1beta2.EntityMention_Type" json:"type,omitempty"` - // For calls to [AnalyzeEntitySentiment][] or if - // [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_entity_sentiment] is set to - // true, this field will contain the sentiment expressed for this mention of - // the entity in the provided document. - Sentiment *Sentiment `protobuf:"bytes,3,opt,name=sentiment" json:"sentiment,omitempty"` -} - -func (m *EntityMention) Reset() { *m = EntityMention{} } -func (m *EntityMention) String() string { return proto.CompactTextString(m) } -func (*EntityMention) ProtoMessage() {} -func (*EntityMention) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *EntityMention) GetText() *TextSpan { - if m != nil { - return m.Text - } - return nil -} - -func (m *EntityMention) GetType() EntityMention_Type { - if m != nil { - return m.Type - } - return EntityMention_TYPE_UNKNOWN -} - -func (m *EntityMention) GetSentiment() *Sentiment { - if m != nil { - return m.Sentiment - } - return nil -} - -// Represents an output piece of text. -type TextSpan struct { - // The content of the output text. - Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"` - // The API calculates the beginning offset of the content in the original - // document according to the [EncodingType][google.cloud.language.v1beta2.EncodingType] specified in the API request. - BeginOffset int32 `protobuf:"varint,2,opt,name=begin_offset,json=beginOffset" json:"begin_offset,omitempty"` -} - -func (m *TextSpan) Reset() { *m = TextSpan{} } -func (m *TextSpan) String() string { return proto.CompactTextString(m) } -func (*TextSpan) ProtoMessage() {} -func (*TextSpan) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *TextSpan) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -func (m *TextSpan) GetBeginOffset() int32 { - if m != nil { - return m.BeginOffset - } - return 0 -} - -// Represents a category returned from the text classifier. -type ClassificationCategory struct { - // The name of the category representing the document. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The classifier's confidence of the category. Number represents how certain - // the classifier is that this category represents the given text. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *ClassificationCategory) Reset() { *m = ClassificationCategory{} } -func (m *ClassificationCategory) String() string { return proto.CompactTextString(m) } -func (*ClassificationCategory) ProtoMessage() {} -func (*ClassificationCategory) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ClassificationCategory) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ClassificationCategory) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// The sentiment analysis request message. -type AnalyzeSentimentRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate sentence offsets for the - // sentence sentiment. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeSentimentRequest) Reset() { *m = AnalyzeSentimentRequest{} } -func (m *AnalyzeSentimentRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSentimentRequest) ProtoMessage() {} -func (*AnalyzeSentimentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *AnalyzeSentimentRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeSentimentRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The sentiment analysis response message. -type AnalyzeSentimentResponse struct { - // The overall sentiment of the input document. - DocumentSentiment *Sentiment `protobuf:"bytes,1,opt,name=document_sentiment,json=documentSentiment" json:"document_sentiment,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` - // The sentiment for all the sentences in the document. - Sentences []*Sentence `protobuf:"bytes,3,rep,name=sentences" json:"sentences,omitempty"` -} - -func (m *AnalyzeSentimentResponse) Reset() { *m = AnalyzeSentimentResponse{} } -func (m *AnalyzeSentimentResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSentimentResponse) ProtoMessage() {} -func (*AnalyzeSentimentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *AnalyzeSentimentResponse) GetDocumentSentiment() *Sentiment { - if m != nil { - return m.DocumentSentiment - } - return nil -} - -func (m *AnalyzeSentimentResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -func (m *AnalyzeSentimentResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -// The entity-level sentiment analysis request message. -type AnalyzeEntitySentimentRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeEntitySentimentRequest) Reset() { *m = AnalyzeEntitySentimentRequest{} } -func (m *AnalyzeEntitySentimentRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitySentimentRequest) ProtoMessage() {} -func (*AnalyzeEntitySentimentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *AnalyzeEntitySentimentRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeEntitySentimentRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The entity-level sentiment analysis response message. -type AnalyzeEntitySentimentResponse struct { - // The recognized entities in the input document with associated sentiments. - Entities []*Entity `protobuf:"bytes,1,rep,name=entities" json:"entities,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` -} - -func (m *AnalyzeEntitySentimentResponse) Reset() { *m = AnalyzeEntitySentimentResponse{} } -func (m *AnalyzeEntitySentimentResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitySentimentResponse) ProtoMessage() {} -func (*AnalyzeEntitySentimentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *AnalyzeEntitySentimentResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *AnalyzeEntitySentimentResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// The entity analysis request message. -type AnalyzeEntitiesRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeEntitiesRequest) Reset() { *m = AnalyzeEntitiesRequest{} } -func (m *AnalyzeEntitiesRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitiesRequest) ProtoMessage() {} -func (*AnalyzeEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *AnalyzeEntitiesRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeEntitiesRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The entity analysis response message. -type AnalyzeEntitiesResponse struct { - // The recognized entities in the input document. - Entities []*Entity `protobuf:"bytes,1,rep,name=entities" json:"entities,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details. - Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` -} - -func (m *AnalyzeEntitiesResponse) Reset() { *m = AnalyzeEntitiesResponse{} } -func (m *AnalyzeEntitiesResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeEntitiesResponse) ProtoMessage() {} -func (*AnalyzeEntitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *AnalyzeEntitiesResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *AnalyzeEntitiesResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// The syntax analysis request message. -type AnalyzeSyntaxRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnalyzeSyntaxRequest) Reset() { *m = AnalyzeSyntaxRequest{} } -func (m *AnalyzeSyntaxRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSyntaxRequest) ProtoMessage() {} -func (*AnalyzeSyntaxRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *AnalyzeSyntaxRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnalyzeSyntaxRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// The syntax analysis response message. -type AnalyzeSyntaxResponse struct { - // Sentences in the input document. - Sentences []*Sentence `protobuf:"bytes,1,rep,name=sentences" json:"sentences,omitempty"` - // Tokens, along with their syntactic information, in the input document. - Tokens []*Token `protobuf:"bytes,2,rep,name=tokens" json:"tokens,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details. - Language string `protobuf:"bytes,3,opt,name=language" json:"language,omitempty"` -} - -func (m *AnalyzeSyntaxResponse) Reset() { *m = AnalyzeSyntaxResponse{} } -func (m *AnalyzeSyntaxResponse) String() string { return proto.CompactTextString(m) } -func (*AnalyzeSyntaxResponse) ProtoMessage() {} -func (*AnalyzeSyntaxResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *AnalyzeSyntaxResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -func (m *AnalyzeSyntaxResponse) GetTokens() []*Token { - if m != nil { - return m.Tokens - } - return nil -} - -func (m *AnalyzeSyntaxResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -// The document classification request message. -type ClassifyTextRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` -} - -func (m *ClassifyTextRequest) Reset() { *m = ClassifyTextRequest{} } -func (m *ClassifyTextRequest) String() string { return proto.CompactTextString(m) } -func (*ClassifyTextRequest) ProtoMessage() {} -func (*ClassifyTextRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *ClassifyTextRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -// The document classification response message. -type ClassifyTextResponse struct { - // Categories representing the input document. - Categories []*ClassificationCategory `protobuf:"bytes,1,rep,name=categories" json:"categories,omitempty"` -} - -func (m *ClassifyTextResponse) Reset() { *m = ClassifyTextResponse{} } -func (m *ClassifyTextResponse) String() string { return proto.CompactTextString(m) } -func (*ClassifyTextResponse) ProtoMessage() {} -func (*ClassifyTextResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *ClassifyTextResponse) GetCategories() []*ClassificationCategory { - if m != nil { - return m.Categories - } - return nil -} - -// The request message for the text annotation API, which can perform multiple -// analysis types (sentiment, entities, and syntax) in one call. -type AnnotateTextRequest struct { - // Input document. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The enabled features. - Features *AnnotateTextRequest_Features `protobuf:"bytes,2,opt,name=features" json:"features,omitempty"` - // The encoding type used by the API to calculate offsets. - EncodingType EncodingType `protobuf:"varint,3,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"` -} - -func (m *AnnotateTextRequest) Reset() { *m = AnnotateTextRequest{} } -func (m *AnnotateTextRequest) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextRequest) ProtoMessage() {} -func (*AnnotateTextRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *AnnotateTextRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *AnnotateTextRequest) GetFeatures() *AnnotateTextRequest_Features { - if m != nil { - return m.Features - } - return nil -} - -func (m *AnnotateTextRequest) GetEncodingType() EncodingType { - if m != nil { - return m.EncodingType - } - return EncodingType_NONE -} - -// All available features for sentiment, syntax, and semantic analysis. -// Setting each one to true will enable that specific analysis for the input. -type AnnotateTextRequest_Features struct { - // Extract syntax information. - ExtractSyntax bool `protobuf:"varint,1,opt,name=extract_syntax,json=extractSyntax" json:"extract_syntax,omitempty"` - // Extract entities. - ExtractEntities bool `protobuf:"varint,2,opt,name=extract_entities,json=extractEntities" json:"extract_entities,omitempty"` - // Extract document-level sentiment. - ExtractDocumentSentiment bool `protobuf:"varint,3,opt,name=extract_document_sentiment,json=extractDocumentSentiment" json:"extract_document_sentiment,omitempty"` - // Extract entities and their associated sentiment. - ExtractEntitySentiment bool `protobuf:"varint,4,opt,name=extract_entity_sentiment,json=extractEntitySentiment" json:"extract_entity_sentiment,omitempty"` - // Classify the full document into categories. - ClassifyText bool `protobuf:"varint,6,opt,name=classify_text,json=classifyText" json:"classify_text,omitempty"` -} - -func (m *AnnotateTextRequest_Features) Reset() { *m = AnnotateTextRequest_Features{} } -func (m *AnnotateTextRequest_Features) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextRequest_Features) ProtoMessage() {} -func (*AnnotateTextRequest_Features) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{20, 0} -} - -func (m *AnnotateTextRequest_Features) GetExtractSyntax() bool { - if m != nil { - return m.ExtractSyntax - } - return false -} - -func (m *AnnotateTextRequest_Features) GetExtractEntities() bool { - if m != nil { - return m.ExtractEntities - } - return false -} - -func (m *AnnotateTextRequest_Features) GetExtractDocumentSentiment() bool { - if m != nil { - return m.ExtractDocumentSentiment - } - return false -} - -func (m *AnnotateTextRequest_Features) GetExtractEntitySentiment() bool { - if m != nil { - return m.ExtractEntitySentiment - } - return false -} - -func (m *AnnotateTextRequest_Features) GetClassifyText() bool { - if m != nil { - return m.ClassifyText - } - return false -} - -// The text annotations response message. -type AnnotateTextResponse struct { - // Sentences in the input document. Populated if the user enables - // [AnnotateTextRequest.Features.extract_syntax][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_syntax]. - Sentences []*Sentence `protobuf:"bytes,1,rep,name=sentences" json:"sentences,omitempty"` - // Tokens, along with their syntactic information, in the input document. - // Populated if the user enables - // [AnnotateTextRequest.Features.extract_syntax][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_syntax]. - Tokens []*Token `protobuf:"bytes,2,rep,name=tokens" json:"tokens,omitempty"` - // Entities, along with their semantic information, in the input document. - // Populated if the user enables - // [AnnotateTextRequest.Features.extract_entities][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_entities]. - Entities []*Entity `protobuf:"bytes,3,rep,name=entities" json:"entities,omitempty"` - // The overall sentiment for the document. Populated if the user enables - // [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_document_sentiment]. - DocumentSentiment *Sentiment `protobuf:"bytes,4,opt,name=document_sentiment,json=documentSentiment" json:"document_sentiment,omitempty"` - // The language of the text, which will be the same as the language specified - // in the request or, if not specified, the automatically-detected language. - // See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details. - Language string `protobuf:"bytes,5,opt,name=language" json:"language,omitempty"` - // Categories identified in the input document. - Categories []*ClassificationCategory `protobuf:"bytes,6,rep,name=categories" json:"categories,omitempty"` -} - -func (m *AnnotateTextResponse) Reset() { *m = AnnotateTextResponse{} } -func (m *AnnotateTextResponse) String() string { return proto.CompactTextString(m) } -func (*AnnotateTextResponse) ProtoMessage() {} -func (*AnnotateTextResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *AnnotateTextResponse) GetSentences() []*Sentence { - if m != nil { - return m.Sentences - } - return nil -} - -func (m *AnnotateTextResponse) GetTokens() []*Token { - if m != nil { - return m.Tokens - } - return nil -} - -func (m *AnnotateTextResponse) GetEntities() []*Entity { - if m != nil { - return m.Entities - } - return nil -} - -func (m *AnnotateTextResponse) GetDocumentSentiment() *Sentiment { - if m != nil { - return m.DocumentSentiment - } - return nil -} - -func (m *AnnotateTextResponse) GetLanguage() string { - if m != nil { - return m.Language - } - return "" -} - -func (m *AnnotateTextResponse) GetCategories() []*ClassificationCategory { - if m != nil { - return m.Categories - } - return nil -} - -func init() { - proto.RegisterType((*Document)(nil), "google.cloud.language.v1beta2.Document") - proto.RegisterType((*Sentence)(nil), "google.cloud.language.v1beta2.Sentence") - proto.RegisterType((*Entity)(nil), "google.cloud.language.v1beta2.Entity") - proto.RegisterType((*Token)(nil), "google.cloud.language.v1beta2.Token") - proto.RegisterType((*Sentiment)(nil), "google.cloud.language.v1beta2.Sentiment") - proto.RegisterType((*PartOfSpeech)(nil), "google.cloud.language.v1beta2.PartOfSpeech") - proto.RegisterType((*DependencyEdge)(nil), "google.cloud.language.v1beta2.DependencyEdge") - proto.RegisterType((*EntityMention)(nil), "google.cloud.language.v1beta2.EntityMention") - proto.RegisterType((*TextSpan)(nil), "google.cloud.language.v1beta2.TextSpan") - proto.RegisterType((*ClassificationCategory)(nil), "google.cloud.language.v1beta2.ClassificationCategory") - proto.RegisterType((*AnalyzeSentimentRequest)(nil), "google.cloud.language.v1beta2.AnalyzeSentimentRequest") - proto.RegisterType((*AnalyzeSentimentResponse)(nil), "google.cloud.language.v1beta2.AnalyzeSentimentResponse") - proto.RegisterType((*AnalyzeEntitySentimentRequest)(nil), "google.cloud.language.v1beta2.AnalyzeEntitySentimentRequest") - proto.RegisterType((*AnalyzeEntitySentimentResponse)(nil), "google.cloud.language.v1beta2.AnalyzeEntitySentimentResponse") - proto.RegisterType((*AnalyzeEntitiesRequest)(nil), "google.cloud.language.v1beta2.AnalyzeEntitiesRequest") - proto.RegisterType((*AnalyzeEntitiesResponse)(nil), "google.cloud.language.v1beta2.AnalyzeEntitiesResponse") - proto.RegisterType((*AnalyzeSyntaxRequest)(nil), "google.cloud.language.v1beta2.AnalyzeSyntaxRequest") - proto.RegisterType((*AnalyzeSyntaxResponse)(nil), "google.cloud.language.v1beta2.AnalyzeSyntaxResponse") - proto.RegisterType((*ClassifyTextRequest)(nil), "google.cloud.language.v1beta2.ClassifyTextRequest") - proto.RegisterType((*ClassifyTextResponse)(nil), "google.cloud.language.v1beta2.ClassifyTextResponse") - proto.RegisterType((*AnnotateTextRequest)(nil), "google.cloud.language.v1beta2.AnnotateTextRequest") - proto.RegisterType((*AnnotateTextRequest_Features)(nil), "google.cloud.language.v1beta2.AnnotateTextRequest.Features") - proto.RegisterType((*AnnotateTextResponse)(nil), "google.cloud.language.v1beta2.AnnotateTextResponse") - proto.RegisterEnum("google.cloud.language.v1beta2.EncodingType", EncodingType_name, EncodingType_value) - proto.RegisterEnum("google.cloud.language.v1beta2.Document_Type", Document_Type_name, Document_Type_value) - proto.RegisterEnum("google.cloud.language.v1beta2.Entity_Type", Entity_Type_name, Entity_Type_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Tag", PartOfSpeech_Tag_name, PartOfSpeech_Tag_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Aspect", PartOfSpeech_Aspect_name, PartOfSpeech_Aspect_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Case", PartOfSpeech_Case_name, PartOfSpeech_Case_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Form", PartOfSpeech_Form_name, PartOfSpeech_Form_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Gender", PartOfSpeech_Gender_name, PartOfSpeech_Gender_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Mood", PartOfSpeech_Mood_name, PartOfSpeech_Mood_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Number", PartOfSpeech_Number_name, PartOfSpeech_Number_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Person", PartOfSpeech_Person_name, PartOfSpeech_Person_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Proper", PartOfSpeech_Proper_name, PartOfSpeech_Proper_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Reciprocity", PartOfSpeech_Reciprocity_name, PartOfSpeech_Reciprocity_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Tense", PartOfSpeech_Tense_name, PartOfSpeech_Tense_value) - proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Voice", PartOfSpeech_Voice_name, PartOfSpeech_Voice_value) - proto.RegisterEnum("google.cloud.language.v1beta2.DependencyEdge_Label", DependencyEdge_Label_name, DependencyEdge_Label_value) - proto.RegisterEnum("google.cloud.language.v1beta2.EntityMention_Type", EntityMention_Type_name, EntityMention_Type_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for LanguageService service - -type LanguageServiceClient interface { - // Analyzes the sentiment of the provided text. - AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error) - // Finds named entities (currently proper names and common nouns) in the text - // along with entity types, salience, mentions for each entity, and - // other properties. - AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error) - // Finds entities, similar to [AnalyzeEntities][google.cloud.language.v1beta2.LanguageService.AnalyzeEntities] in the text and analyzes - // sentiment associated with each entity and its mentions. - AnalyzeEntitySentiment(ctx context.Context, in *AnalyzeEntitySentimentRequest, opts ...grpc.CallOption) (*AnalyzeEntitySentimentResponse, error) - // Analyzes the syntax of the text and provides sentence boundaries and - // tokenization along with part of speech tags, dependency trees, and other - // properties. - AnalyzeSyntax(ctx context.Context, in *AnalyzeSyntaxRequest, opts ...grpc.CallOption) (*AnalyzeSyntaxResponse, error) - // Classifies a document into categories. - ClassifyText(ctx context.Context, in *ClassifyTextRequest, opts ...grpc.CallOption) (*ClassifyTextResponse, error) - // A convenience method that provides all syntax, sentiment, entity, and - // classification features in one call. - AnnotateText(ctx context.Context, in *AnnotateTextRequest, opts ...grpc.CallOption) (*AnnotateTextResponse, error) -} - -type languageServiceClient struct { - cc *grpc.ClientConn -} - -func NewLanguageServiceClient(cc *grpc.ClientConn) LanguageServiceClient { - return &languageServiceClient{cc} -} - -func (c *languageServiceClient) AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error) { - out := new(AnalyzeSentimentResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnalyzeSentiment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error) { - out := new(AnalyzeEntitiesResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnalyzeEntities", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnalyzeEntitySentiment(ctx context.Context, in *AnalyzeEntitySentimentRequest, opts ...grpc.CallOption) (*AnalyzeEntitySentimentResponse, error) { - out := new(AnalyzeEntitySentimentResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnalyzeEntitySentiment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnalyzeSyntax(ctx context.Context, in *AnalyzeSyntaxRequest, opts ...grpc.CallOption) (*AnalyzeSyntaxResponse, error) { - out := new(AnalyzeSyntaxResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnalyzeSyntax", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) ClassifyText(ctx context.Context, in *ClassifyTextRequest, opts ...grpc.CallOption) (*ClassifyTextResponse, error) { - out := new(ClassifyTextResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/ClassifyText", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *languageServiceClient) AnnotateText(ctx context.Context, in *AnnotateTextRequest, opts ...grpc.CallOption) (*AnnotateTextResponse, error) { - out := new(AnnotateTextResponse) - err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnnotateText", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for LanguageService service - -type LanguageServiceServer interface { - // Analyzes the sentiment of the provided text. - AnalyzeSentiment(context.Context, *AnalyzeSentimentRequest) (*AnalyzeSentimentResponse, error) - // Finds named entities (currently proper names and common nouns) in the text - // along with entity types, salience, mentions for each entity, and - // other properties. - AnalyzeEntities(context.Context, *AnalyzeEntitiesRequest) (*AnalyzeEntitiesResponse, error) - // Finds entities, similar to [AnalyzeEntities][google.cloud.language.v1beta2.LanguageService.AnalyzeEntities] in the text and analyzes - // sentiment associated with each entity and its mentions. - AnalyzeEntitySentiment(context.Context, *AnalyzeEntitySentimentRequest) (*AnalyzeEntitySentimentResponse, error) - // Analyzes the syntax of the text and provides sentence boundaries and - // tokenization along with part of speech tags, dependency trees, and other - // properties. - AnalyzeSyntax(context.Context, *AnalyzeSyntaxRequest) (*AnalyzeSyntaxResponse, error) - // Classifies a document into categories. - ClassifyText(context.Context, *ClassifyTextRequest) (*ClassifyTextResponse, error) - // A convenience method that provides all syntax, sentiment, entity, and - // classification features in one call. - AnnotateText(context.Context, *AnnotateTextRequest) (*AnnotateTextResponse, error) -} - -func RegisterLanguageServiceServer(s *grpc.Server, srv LanguageServiceServer) { - s.RegisterService(&_LanguageService_serviceDesc, srv) -} - -func _LanguageService_AnalyzeSentiment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeSentimentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeSentiment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnalyzeSentiment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeSentiment(ctx, req.(*AnalyzeSentimentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnalyzeEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeEntitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeEntities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnalyzeEntities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeEntities(ctx, req.(*AnalyzeEntitiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnalyzeEntitySentiment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeEntitySentimentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeEntitySentiment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnalyzeEntitySentiment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeEntitySentiment(ctx, req.(*AnalyzeEntitySentimentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnalyzeSyntax_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeSyntaxRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnalyzeSyntax(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnalyzeSyntax", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnalyzeSyntax(ctx, req.(*AnalyzeSyntaxRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_ClassifyText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ClassifyTextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).ClassifyText(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta2.LanguageService/ClassifyText", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).ClassifyText(ctx, req.(*ClassifyTextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LanguageService_AnnotateText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnnotateTextRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LanguageServiceServer).AnnotateText(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnnotateText", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LanguageServiceServer).AnnotateText(ctx, req.(*AnnotateTextRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _LanguageService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.language.v1beta2.LanguageService", - HandlerType: (*LanguageServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AnalyzeSentiment", - Handler: _LanguageService_AnalyzeSentiment_Handler, - }, - { - MethodName: "AnalyzeEntities", - Handler: _LanguageService_AnalyzeEntities_Handler, - }, - { - MethodName: "AnalyzeEntitySentiment", - Handler: _LanguageService_AnalyzeEntitySentiment_Handler, - }, - { - MethodName: "AnalyzeSyntax", - Handler: _LanguageService_AnalyzeSyntax_Handler, - }, - { - MethodName: "ClassifyText", - Handler: _LanguageService_ClassifyText_Handler, - }, - { - MethodName: "AnnotateText", - Handler: _LanguageService_AnnotateText_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/language/v1beta2/language_service.proto", -} - -func init() { - proto.RegisterFile("google/cloud/language/v1beta2/language_service.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 3019 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0x4b, 0x73, 0xdb, 0xc6, - 0xfd, 0x06, 0x5f, 0xa2, 0x96, 0x92, 0xbc, 0x86, 0x1d, 0x9b, 0x7f, 0xfd, 0xf3, 0x70, 0xe0, 0xb8, - 0x56, 0xec, 0x44, 0x8a, 0x25, 0xc7, 0x71, 0x6d, 0xe7, 0x01, 0x01, 0x4b, 0x0a, 0x32, 0x09, 0xc0, - 0x0b, 0x80, 0x92, 0x7d, 0xe1, 0xc0, 0x24, 0xc4, 0x70, 0x22, 0x02, 0x2c, 0x01, 0x79, 0xac, 0x5e, - 0x32, 0xcd, 0x4c, 0x8f, 0x99, 0x1e, 0xf2, 0x11, 0x7a, 0xe8, 0xb4, 0x33, 0x9d, 0xb4, 0xd3, 0x99, - 0x4e, 0x7b, 0xe8, 0x27, 0xe8, 0xb1, 0x33, 0xfd, 0x04, 0xfd, 0x00, 0x3d, 0xb6, 0xb7, 0xce, 0x6f, - 0x77, 0x41, 0x82, 0xb2, 0x62, 0x89, 0x8e, 0xa7, 0x93, 0xde, 0x76, 0x7f, 0xf8, 0xbd, 0x9f, 0xbb, - 0x4b, 0xa2, 0x5b, 0xbd, 0x28, 0xea, 0xed, 0x07, 0x6b, 0x9d, 0xfd, 0xe8, 0xa0, 0xbb, 0xb6, 0xef, - 0x87, 0xbd, 0x03, 0xbf, 0x17, 0xac, 0x3d, 0xbd, 0xf9, 0x24, 0x48, 0xfc, 0xf5, 0x31, 0xa0, 0x1d, - 0x07, 0xa3, 0xa7, 0xfd, 0x4e, 0xb0, 0x3a, 0x1c, 0x45, 0x49, 0x24, 0xbf, 0xc1, 0xa9, 0x56, 0x19, - 0xd5, 0x6a, 0x8a, 0xb4, 0x2a, 0xa8, 0x96, 0x5f, 0x17, 0x4c, 0xfd, 0x61, 0x7f, 0xcd, 0x0f, 0xc3, - 0x28, 0xf1, 0x93, 0x7e, 0x14, 0xc6, 0x9c, 0x78, 0xf9, 0x8a, 0xf8, 0xba, 0x1f, 0x85, 0xbd, 0xd1, - 0x41, 0x18, 0xf6, 0xc3, 0xde, 0x5a, 0x34, 0x0c, 0x46, 0x53, 0x48, 0x6f, 0x09, 0x24, 0xb6, 0x7b, - 0x72, 0xb0, 0xb7, 0x96, 0xf4, 0x07, 0x41, 0x9c, 0xf8, 0x83, 0xa1, 0x40, 0xb8, 0x24, 0x10, 0x46, - 0xc3, 0xce, 0x5a, 0x9c, 0xf8, 0xc9, 0x81, 0xa0, 0x54, 0xfe, 0x29, 0xa1, 0xb2, 0x1e, 0x75, 0x0e, - 0x06, 0x41, 0x98, 0xc8, 0x9f, 0xa1, 0x42, 0x72, 0x38, 0x0c, 0xaa, 0xd2, 0x65, 0x69, 0x65, 0x69, - 0xfd, 0xbd, 0xd5, 0x17, 0xea, 0xbd, 0x9a, 0x92, 0xad, 0xba, 0x87, 0xc3, 0x80, 0x32, 0x4a, 0x79, - 0x19, 0xcd, 0x75, 0xa2, 0x30, 0x09, 0xc2, 0xa4, 0x9a, 0xbb, 0x2c, 0xad, 0xcc, 0x6f, 0x9d, 0xa1, - 0x29, 0x40, 0x5e, 0x41, 0x67, 0x7b, 0x9d, 0xb8, 0x2d, 0xb6, 0xed, 0x83, 0x51, 0xbf, 0x9a, 0x17, - 0x38, 0x8b, 0xbd, 0x4e, 0xac, 0x71, 0xb8, 0x37, 0xea, 0xcb, 0xcb, 0xa8, 0x9c, 0x4a, 0xab, 0x16, - 0x00, 0x85, 0x8e, 0xf7, 0xca, 0x6d, 0x54, 0x00, 0x79, 0xf2, 0x05, 0x84, 0xdd, 0x47, 0x36, 0x69, - 0x7b, 0xa6, 0x63, 0x13, 0xcd, 0xa8, 0x19, 0x44, 0xc7, 0x67, 0xe4, 0x25, 0x84, 0xec, 0x86, 0x6a, - 0x98, 0x6d, 0x97, 0xec, 0xba, 0x58, 0x92, 0xcb, 0xa8, 0xb0, 0xe5, 0x36, 0x1b, 0x38, 0xb7, 0x59, - 0x46, 0xa5, 0x38, 0x3a, 0x18, 0x75, 0x02, 0xe5, 0x17, 0x12, 0x2a, 0x3b, 0x01, 0x08, 0xeb, 0x04, - 0xf2, 0x3d, 0x54, 0x48, 0x82, 0x67, 0x09, 0x33, 0xb9, 0xb2, 0x7e, 0xed, 0x04, 0x93, 0xdd, 0xe0, - 0x59, 0xe2, 0x0c, 0xfd, 0x90, 0x32, 0x22, 0xb9, 0x86, 0xe6, 0xe3, 0x20, 0x04, 0x5f, 0x0b, 0x7b, - 0x2b, 0xeb, 0x2b, 0x27, 0x70, 0x70, 0x52, 0x7c, 0x3a, 0x21, 0x55, 0xbe, 0x29, 0xa0, 0x12, 0x09, - 0x93, 0x7e, 0x72, 0x28, 0xcb, 0xa8, 0x10, 0xfa, 0x03, 0x1e, 0x82, 0x79, 0xca, 0xd6, 0xf2, 0x27, - 0x22, 0x2c, 0x39, 0x16, 0x96, 0xeb, 0x27, 0x48, 0xe0, 0x8c, 0xb2, 0x41, 0xb1, 0x50, 0x79, 0x10, - 0x24, 0x7e, 0xd7, 0x4f, 0xfc, 0x6a, 0xfe, 0x72, 0x7e, 0xa5, 0xb2, 0xbe, 0x71, 0x3a, 0x1e, 0x4d, - 0x41, 0x45, 0xc2, 0x64, 0x74, 0x48, 0xc7, 0x4c, 0x20, 0x3e, 0xb1, 0xbf, 0xdf, 0x07, 0x07, 0xb2, - 0xf8, 0xe4, 0xe8, 0x78, 0x2f, 0x6f, 0x81, 0xb0, 0x90, 0x25, 0x67, 0xb5, 0xc8, 0x84, 0xbd, 0x77, - 0x2a, 0x61, 0x4d, 0x4e, 0x44, 0xc7, 0xd4, 0xd3, 0xde, 0x2d, 0xbd, 0xb4, 0x77, 0x97, 0xef, 0xa1, - 0xc5, 0x29, 0x43, 0x64, 0x8c, 0xf2, 0x5f, 0x04, 0x87, 0xc2, 0xc5, 0xb0, 0x94, 0x2f, 0xa0, 0xe2, - 0x53, 0x7f, 0xff, 0x80, 0xbb, 0x78, 0x9e, 0xf2, 0xcd, 0xdd, 0xdc, 0x1d, 0x49, 0x39, 0x14, 0xe9, - 0x56, 0x41, 0x73, 0x9e, 0xf9, 0xc0, 0xb4, 0x76, 0x4c, 0x7c, 0x46, 0x46, 0xa8, 0x64, 0x13, 0xea, - 0x58, 0x26, 0x96, 0xe4, 0x05, 0x54, 0x6e, 0x58, 0x9a, 0xea, 0x1a, 0x96, 0x89, 0x73, 0x32, 0x46, - 0x0b, 0x16, 0xad, 0xab, 0xa6, 0xf1, 0x98, 0x43, 0xf2, 0xf2, 0x3c, 0x2a, 0x92, 0x16, 0x31, 0x5d, - 0x5c, 0x90, 0xcf, 0xa2, 0xca, 0x8e, 0x45, 0x1f, 0xb4, 0xad, 0x5a, 0x5b, 0xa5, 0x2e, 0x2e, 0xca, - 0xe7, 0xd0, 0xa2, 0x66, 0x99, 0x8e, 0xd7, 0x24, 0xb4, 0x5d, 0xb7, 0x2c, 0x1d, 0x97, 0x00, 0xdd, - 0x72, 0xb7, 0x08, 0xc5, 0x73, 0xca, 0xcf, 0x73, 0xa8, 0xe8, 0x46, 0x5f, 0x04, 0xe1, 0xf7, 0x4b, - 0xd2, 0x87, 0x68, 0x69, 0xe8, 0x8f, 0x92, 0x76, 0xb4, 0xd7, 0x8e, 0x87, 0x41, 0xd0, 0xf9, 0x5c, - 0x64, 0xea, 0x8d, 0x13, 0xd8, 0xd8, 0xfe, 0x28, 0xb1, 0xf6, 0x1c, 0x46, 0x42, 0x17, 0x86, 0x99, - 0x9d, 0xdc, 0x42, 0x67, 0xbb, 0xc1, 0x30, 0x08, 0xbb, 0x41, 0xd8, 0x39, 0x6c, 0x07, 0xdd, 0x5e, - 0xc0, 0x2a, 0xb9, 0xb2, 0xfe, 0xfe, 0x49, 0x2d, 0x63, 0x4c, 0x45, 0xba, 0xbd, 0x80, 0x2e, 0x75, - 0xa7, 0xf6, 0x10, 0x86, 0xfd, 0x60, 0x30, 0xf0, 0x45, 0xd1, 0xf3, 0x8d, 0xf2, 0x29, 0x9a, 0x1f, - 0xc7, 0x55, 0x7e, 0x1d, 0xcd, 0x0f, 0xfc, 0x5e, 0xd8, 0x4f, 0x0e, 0xba, 0x3c, 0x5a, 0x39, 0x3a, - 0x01, 0x00, 0x83, 0xb8, 0x13, 0x8d, 0xb8, 0x3a, 0x39, 0xca, 0x37, 0xca, 0x9f, 0xcf, 0xa1, 0x85, - 0xac, 0x35, 0xb2, 0x8a, 0xf2, 0x89, 0xdf, 0x13, 0x6d, 0x6e, 0x6d, 0x06, 0x3f, 0xac, 0xba, 0x7e, - 0x8f, 0x02, 0xad, 0xbc, 0x8d, 0x4a, 0x7e, 0x3c, 0x0c, 0x3a, 0x89, 0xa8, 0xca, 0xf5, 0x59, 0xb8, - 0xa8, 0x8c, 0x92, 0x0a, 0x0e, 0xb2, 0x8e, 0x0a, 0x1d, 0x3f, 0xe6, 0x4a, 0x2f, 0xad, 0x7f, 0x30, - 0x0b, 0x27, 0xcd, 0x8f, 0x03, 0xca, 0xa8, 0x81, 0xcb, 0x5e, 0x34, 0x1a, 0x30, 0xdf, 0xcd, 0xc8, - 0xa5, 0x16, 0x8d, 0x06, 0x94, 0x51, 0x83, 0x5d, 0x3d, 0x08, 0xc9, 0xa8, 0x5a, 0x9c, 0xdd, 0xae, - 0x3a, 0xa3, 0xa4, 0x82, 0x03, 0x68, 0x34, 0x88, 0xa2, 0x2e, 0xab, 0xdd, 0x19, 0x35, 0x6a, 0x46, - 0x51, 0x97, 0x32, 0x6a, 0xd0, 0x28, 0x3c, 0x18, 0x3c, 0x09, 0x46, 0xd5, 0xb9, 0xd9, 0x35, 0x32, - 0x19, 0x25, 0x15, 0x1c, 0x80, 0xd7, 0x30, 0x18, 0xc5, 0x51, 0x58, 0x2d, 0xcf, 0xce, 0xcb, 0x66, - 0x94, 0x54, 0x70, 0x60, 0xbc, 0x46, 0x30, 0x89, 0xab, 0xf3, 0x2f, 0xc1, 0x8b, 0x51, 0x52, 0xc1, - 0x41, 0x7e, 0x84, 0x2a, 0xa3, 0xa0, 0xd3, 0x1f, 0x8e, 0xa2, 0x4e, 0x3f, 0x39, 0xac, 0x22, 0xc6, - 0xf0, 0xa3, 0x59, 0x18, 0xd2, 0x09, 0x39, 0xcd, 0xf2, 0x92, 0xeb, 0xa8, 0x98, 0x04, 0x61, 0x1c, - 0x54, 0x2b, 0x8c, 0xe9, 0xcd, 0x99, 0xb2, 0x1d, 0x08, 0x29, 0xa7, 0x07, 0x46, 0x4f, 0xa3, 0x7e, - 0x27, 0xa8, 0x2e, 0xcc, 0xce, 0xa8, 0x05, 0x84, 0x94, 0xd3, 0x2b, 0x5f, 0x4b, 0x28, 0xef, 0xfa, - 0xbd, 0xe9, 0x96, 0x3a, 0x87, 0xf2, 0xaa, 0xbe, 0x8d, 0x25, 0xbe, 0xb0, 0x71, 0x8e, 0x2f, 0x5a, - 0x38, 0x0f, 0x33, 0x5c, 0xb3, 0xcc, 0x6d, 0x5c, 0x00, 0x90, 0x4e, 0xa0, 0x71, 0x96, 0x51, 0xc1, - 0xb4, 0x3c, 0x13, 0x97, 0x00, 0x64, 0x7a, 0x4d, 0x3c, 0x07, 0x20, 0x9b, 0x5a, 0x26, 0x2e, 0x03, - 0xc8, 0xa6, 0x2e, 0x9e, 0x87, 0x5e, 0x6a, 0x7b, 0xa6, 0xe6, 0x62, 0x04, 0x5f, 0x5b, 0x84, 0x6e, - 0xe2, 0x8a, 0x5c, 0x44, 0xd2, 0x2e, 0x5e, 0x80, 0x6f, 0x6a, 0xad, 0x66, 0xec, 0xe2, 0x45, 0xc5, - 0x42, 0x25, 0x5e, 0x90, 0xb2, 0x8c, 0x96, 0x54, 0x38, 0x4d, 0xb8, 0xed, 0x89, 0x62, 0x70, 0xa2, - 0x20, 0xb4, 0x46, 0x34, 0xd7, 0x68, 0x11, 0x2c, 0x41, 0x87, 0x37, 0x9a, 0x19, 0x48, 0x0e, 0xda, - 0xba, 0x4d, 0xad, 0x3a, 0x25, 0x8e, 0x03, 0x80, 0xbc, 0xf2, 0x2f, 0x09, 0x15, 0xa0, 0x30, 0x01, - 0x57, 0x53, 0x1d, 0x32, 0xcd, 0x4d, 0xd5, 0x34, 0xcf, 0x51, 0x05, 0xb7, 0x45, 0x34, 0xaf, 0xea, - 0xa0, 0x99, 0xa1, 0x36, 0x70, 0x8e, 0x0f, 0x84, 0xa6, 0xdd, 0x20, 0x4d, 0x62, 0x32, 0x8c, 0x3c, - 0xcc, 0x1a, 0x9d, 0x63, 0x17, 0x60, 0xd6, 0xd4, 0x89, 0x69, 0xb0, 0x5d, 0x91, 0x69, 0x62, 0x3a, - 0x2e, 0xf5, 0x00, 0x59, 0x6d, 0xe0, 0xd2, 0x64, 0x16, 0xb5, 0x08, 0x9e, 0x03, 0x59, 0xa6, 0xd5, - 0x34, 0x4c, 0xbe, 0x2f, 0x83, 0xbf, 0xad, 0xcd, 0x86, 0xf1, 0xd0, 0x23, 0x78, 0x1e, 0x04, 0xdb, - 0x2a, 0x75, 0x39, 0x2f, 0x04, 0x82, 0x6d, 0x4a, 0x6c, 0xcb, 0x31, 0x60, 0x6c, 0xa9, 0x0d, 0x5c, - 0x01, 0x67, 0x50, 0x52, 0x6b, 0x90, 0x5d, 0xa3, 0x45, 0xda, 0x60, 0x06, 0x5e, 0x00, 0x34, 0x4a, - 0x1a, 0x8c, 0x21, 0x07, 0x2d, 0x82, 0xcc, 0x56, 0x2a, 0x73, 0x49, 0xf9, 0x56, 0x42, 0x05, 0xe8, - 0x26, 0xa0, 0x5c, 0xcd, 0xa2, 0xcd, 0x8c, 0xe9, 0x0b, 0xa8, 0xac, 0xea, 0xa0, 0x90, 0xda, 0x10, - 0x86, 0x7b, 0xbb, 0x46, 0xc3, 0x50, 0xe9, 0x23, 0x9c, 0x03, 0x61, 0x19, 0xc3, 0x1f, 0x13, 0x8a, - 0xf3, 0x8c, 0x85, 0x61, 0xaa, 0x8d, 0x36, 0x31, 0x75, 0xc3, 0xac, 0xe3, 0x02, 0xf8, 0xa2, 0x4e, - 0xa8, 0x67, 0xea, 0xb8, 0x08, 0x6b, 0x4a, 0xd4, 0x86, 0xe1, 0x70, 0xbb, 0x0d, 0x2a, 0x76, 0x73, - 0x10, 0x5a, 0x67, 0xcb, 0xa2, 0x2e, 0x2e, 0x43, 0xd8, 0x1b, 0x96, 0x59, 0xe7, 0xb9, 0x60, 0x51, - 0x9d, 0x50, 0x8c, 0x00, 0x5b, 0x1c, 0x19, 0x35, 0x5c, 0x51, 0x08, 0x2a, 0xf1, 0xb6, 0x05, 0x3a, - 0xd4, 0x89, 0xa9, 0x13, 0x3a, 0xad, 0x74, 0x8d, 0x34, 0x0d, 0xd3, 0x30, 0x45, 0xb4, 0x9a, 0xaa, - 0xa3, 0x79, 0x0d, 0xd8, 0xe6, 0x40, 0x05, 0x93, 0x78, 0x2e, 0x28, 0xab, 0x7c, 0x89, 0x0a, 0xd0, - 0xb3, 0x40, 0xe9, 0xa6, 0x65, 0xe9, 0x19, 0x16, 0x17, 0x10, 0xd6, 0x2c, 0x53, 0x17, 0x8e, 0x6d, - 0xc3, 0x57, 0x2c, 0x41, 0x70, 0x58, 0x1a, 0xa9, 0x22, 0x89, 0x60, 0x6f, 0xea, 0x86, 0x70, 0x64, - 0x1e, 0x3c, 0x6d, 0x98, 0x2e, 0xa1, 0xd4, 0xaa, 0xa7, 0xd1, 0xaf, 0xa0, 0xb9, 0x6d, 0x8f, 0xe7, - 0x58, 0x11, 0x92, 0xce, 0xf1, 0x36, 0xb7, 0x21, 0xbd, 0x01, 0x50, 0x52, 0x3e, 0x43, 0x25, 0xde, - 0xec, 0xc0, 0x0e, 0xd3, 0x6b, 0x6e, 0x1e, 0xb5, 0xc3, 0x31, 0xcc, 0xba, 0xd7, 0x50, 0x29, 0x96, - 0xd8, 0xf9, 0xa5, 0xe1, 0x51, 0x96, 0x72, 0x65, 0x54, 0xd0, 0x3d, 0xb5, 0x81, 0xf3, 0x8a, 0x8b, - 0x4a, 0xbc, 0xc5, 0x01, 0x07, 0x7e, 0xbe, 0xc9, 0x70, 0x98, 0x47, 0xc5, 0x9a, 0x41, 0x1d, 0x97, - 0x93, 0x3b, 0x04, 0x6c, 0xc2, 0x39, 0x00, 0xbb, 0x5b, 0x06, 0xd5, 0x71, 0x1e, 0x0c, 0x9d, 0x24, - 0x8c, 0x38, 0x1f, 0x15, 0x94, 0x3b, 0xa8, 0xc4, 0x9b, 0x1d, 0xe3, 0x4a, 0x2d, 0x7b, 0x4a, 0x2f, - 0xd0, 0x84, 0xc1, 0xb8, 0x4b, 0x4c, 0xcb, 0x6d, 0x8b, 0x7d, 0x4e, 0xd9, 0x46, 0x95, 0x4c, 0x57, - 0x93, 0x2f, 0xa1, 0xf3, 0x94, 0x68, 0x86, 0x4d, 0x2d, 0xcd, 0x70, 0x1f, 0x4d, 0xd7, 0x54, 0xfa, - 0x81, 0xa5, 0x16, 0xd8, 0x6f, 0x99, 0xed, 0x0c, 0x2c, 0xa7, 0xc4, 0xa8, 0xc8, 0x9a, 0x19, 0xf8, - 0xd5, 0x25, 0xe6, 0x54, 0x4d, 0xbe, 0x86, 0xce, 0x65, 0x03, 0xc4, 0x3e, 0x73, 0x2b, 0x6b, 0x9e, - 0xeb, 0x51, 0xc2, 0x9d, 0x64, 0xab, 0x8e, 0x8b, 0xf3, 0x10, 0x04, 0x9b, 0x12, 0x87, 0x1f, 0xe8, - 0x16, 0xd1, 0xfc, 0xb8, 0x17, 0xe0, 0x22, 0xbf, 0x7c, 0x78, 0xe9, 0xbe, 0xa4, 0x6c, 0xa2, 0x22, - 0x6b, 0x7c, 0x20, 0xb4, 0x65, 0x19, 0x1a, 0x99, 0x36, 0x5c, 0xd5, 0x26, 0x4d, 0x40, 0x53, 0xd3, - 0x9e, 0x90, 0x63, 0x22, 0xd4, 0xb4, 0x97, 0xfc, 0xbe, 0x8c, 0x96, 0xa6, 0x4f, 0x4d, 0xf2, 0x0a, - 0xc2, 0x9f, 0x07, 0x7e, 0xb7, 0x9d, 0xc0, 0xd9, 0xb0, 0xdd, 0x0f, 0xbb, 0xc1, 0x33, 0x76, 0x94, - 0x29, 0xd2, 0x25, 0x80, 0xb3, 0x23, 0xa3, 0x01, 0x50, 0xd9, 0x40, 0xc5, 0x7d, 0xff, 0x49, 0xb0, - 0x2f, 0xce, 0x28, 0x1b, 0x33, 0x9d, 0xce, 0x56, 0x1b, 0x40, 0x4a, 0x39, 0x07, 0xe5, 0xd7, 0x73, - 0xa8, 0xc8, 0x00, 0xcf, 0x9d, 0x84, 0xd5, 0xcd, 0x4d, 0x4a, 0x5a, 0x58, 0x62, 0x2d, 0x15, 0x8a, - 0x98, 0x67, 0x85, 0xaa, 0xb7, 0xb4, 0x06, 0xef, 0x5f, 0xaa, 0xde, 0x6a, 0x5a, 0x3a, 0x2e, 0x80, - 0x1b, 0x55, 0x58, 0x15, 0x19, 0x82, 0x6d, 0x5b, 0x50, 0xbc, 0x00, 0x74, 0x5d, 0x8a, 0xe7, 0x58, - 0xc7, 0xf7, 0x76, 0x79, 0xa7, 0x52, 0xbd, 0x5d, 0x70, 0x02, 0x9e, 0x97, 0x4b, 0x28, 0xa7, 0x69, - 0x18, 0x01, 0x89, 0xc6, 0xd8, 0x57, 0xc6, 0x13, 0x81, 0xb5, 0x71, 0x0d, 0xea, 0x00, 0x2f, 0x32, - 0x2f, 0xc2, 0x92, 0x91, 0x2d, 0xf1, 0x59, 0x61, 0xe3, 0xb3, 0xe9, 0xd0, 0xc0, 0x80, 0xa0, 0x1b, - 0x8e, 0x66, 0x79, 0xd4, 0x21, 0xf8, 0x1c, 0x4b, 0x7c, 0x6b, 0x73, 0x1b, 0xcb, 0xb0, 0x22, 0xbb, - 0x76, 0x03, 0x9f, 0x67, 0x0d, 0xd6, 0x22, 0xce, 0x8e, 0xe1, 0x6e, 0xe1, 0x0b, 0x00, 0x37, 0x00, - 0xe3, 0x35, 0x58, 0x35, 0x55, 0xfa, 0x00, 0x5f, 0x04, 0x6e, 0xcd, 0x1d, 0x82, 0x2f, 0xf1, 0x45, - 0x0b, 0x57, 0xd9, 0x04, 0x22, 0x75, 0xfc, 0x7f, 0xa0, 0xa8, 0x69, 0xe2, 0x65, 0x60, 0x62, 0xda, - 0xc2, 0xe6, 0xff, 0x07, 0x0d, 0x4d, 0xa6, 0xe1, 0xeb, 0xa0, 0x80, 0x39, 0xd6, 0xf0, 0x8d, 0x74, - 0x74, 0xbd, 0xc9, 0xfa, 0x08, 0x2b, 0x58, 0xfc, 0x16, 0x8c, 0x27, 0x1b, 0x5f, 0x16, 0xed, 0x59, - 0x75, 0xd5, 0x5d, 0xc3, 0xc1, 0x6f, 0xf3, 0x94, 0xa0, 0x2e, 0x70, 0x54, 0xd8, 0x58, 0x63, 0x8e, - 0xb8, 0xc2, 0xf2, 0x12, 0x34, 0x7c, 0x87, 0xaf, 0x1c, 0x07, 0x5f, 0x65, 0xb8, 0x96, 0xe3, 0x82, - 0x4e, 0x3f, 0x12, 0xe9, 0xca, 0xb0, 0xaf, 0x8d, 0x37, 0xe6, 0x36, 0x5e, 0xe1, 0x95, 0x47, 0xc0, - 0x33, 0xef, 0xf2, 0xd9, 0x49, 0x6a, 0xf8, 0xba, 0x58, 0xd9, 0xf8, 0x06, 0x93, 0x42, 0x2d, 0xb3, - 0x81, 0xdf, 0x4b, 0x07, 0xea, 0xfb, 0x60, 0xa1, 0xed, 0xe0, 0x55, 0xb0, 0xf0, 0xa1, 0xa7, 0x9a, - 0x4c, 0x9f, 0x35, 0xc0, 0xa4, 0x1a, 0x2c, 0x3f, 0x80, 0x0f, 0x6c, 0x49, 0x49, 0x03, 0xdf, 0x64, - 0x1f, 0x74, 0x6a, 0xd9, 0x78, 0x1d, 0x58, 0x80, 0x80, 0x0d, 0xd0, 0x81, 0x92, 0xa6, 0xa9, 0x9a, - 0x2e, 0xbe, 0xc5, 0x2b, 0x17, 0xec, 0x34, 0x75, 0xaf, 0x89, 0x3f, 0x04, 0xe9, 0xd4, 0xb2, 0x5c, - 0x7c, 0x1b, 0x56, 0x0e, 0x38, 0xe7, 0x23, 0xb6, 0xf2, 0x6a, 0x35, 0x7c, 0x07, 0x56, 0x4c, 0xe2, - 0x8f, 0x59, 0xd3, 0xb1, 0x6c, 0x43, 0xc3, 0x77, 0xd9, 0x60, 0x07, 0xe0, 0xbd, 0xa9, 0x41, 0x74, - 0x1f, 0x50, 0x76, 0x99, 0xd9, 0x1f, 0xb3, 0x76, 0xe5, 0xb1, 0x59, 0xff, 0x09, 0xa3, 0x34, 0xdc, - 0x06, 0xc1, 0x9f, 0xf2, 0x79, 0xd4, 0xb2, 0xb7, 0x80, 0xfa, 0x33, 0x91, 0x72, 0x50, 0x86, 0x58, - 0x65, 0xd9, 0xe9, 0xed, 0xb6, 0x5a, 0x78, 0x13, 0x96, 0x3a, 0x93, 0xaa, 0x01, 0x4a, 0xcd, 0xa2, - 0xc4, 0xa8, 0x9b, 0x58, 0x07, 0x57, 0x3c, 0xd8, 0xc1, 0x84, 0x4d, 0x18, 0xc3, 0x71, 0x71, 0x8d, - 0x9f, 0x49, 0x9a, 0x1a, 0xae, 0xb3, 0x04, 0xb0, 0x9a, 0x3c, 0x2f, 0xb7, 0x60, 0x22, 0xa4, 0x3b, - 0x16, 0x78, 0x83, 0x61, 0x7a, 0x4d, 0x0d, 0x6f, 0x83, 0x5b, 0x34, 0xcb, 0xc6, 0x0f, 0xc0, 0x13, - 0xba, 0xe1, 0xb0, 0xe1, 0x4d, 0x74, 0xdc, 0x60, 0xa5, 0xe0, 0xd8, 0xb8, 0x09, 0xb8, 0x75, 0x10, - 0x6f, 0xb2, 0x15, 0xc4, 0xda, 0x02, 0x83, 0x0c, 0xb3, 0x06, 0x50, 0x9b, 0xa5, 0x21, 0x71, 0xf0, - 0x43, 0x96, 0x67, 0xcc, 0x60, 0xaa, 0x7c, 0x9d, 0x43, 0x8b, 0x53, 0x97, 0xea, 0xef, 0x77, 0x81, - 0x24, 0x53, 0xcf, 0x0f, 0x37, 0x67, 0xb9, 0xcd, 0x67, 0x5f, 0x21, 0xa6, 0xae, 0xf3, 0xf9, 0x97, - 0x7f, 0x2c, 0xf9, 0x40, 0xdc, 0xc8, 0x31, 0x5a, 0x10, 0x0f, 0x40, 0xc7, 0x0d, 0x13, 0x84, 0x4a, - 0x9a, 0xd5, 0x6c, 0xc2, 0xa5, 0x5c, 0xa9, 0xa3, 0x72, 0x6a, 0x92, 0x5c, 0x9d, 0x3c, 0x50, 0xf1, - 0xfb, 0xff, 0xf8, 0x79, 0xea, 0x6d, 0xb4, 0xf0, 0x24, 0xe8, 0xf5, 0xc3, 0x76, 0xb4, 0xb7, 0x17, - 0x07, 0xfc, 0x5e, 0x57, 0xa4, 0x15, 0x06, 0xb3, 0x18, 0x48, 0x69, 0xa0, 0x8b, 0xda, 0xbe, 0x1f, - 0xc7, 0xfd, 0xbd, 0x7e, 0x87, 0xbd, 0xbf, 0x69, 0x7e, 0x12, 0xf4, 0xa2, 0xd1, 0xf1, 0xcf, 0x36, - 0x6f, 0x22, 0xd4, 0x89, 0xc2, 0xbd, 0x7e, 0x97, 0xbd, 0x93, 0xf0, 0xbb, 0x6a, 0x06, 0xa2, 0xfc, - 0x4e, 0x42, 0x97, 0xd4, 0xd0, 0xdf, 0x3f, 0xfc, 0x69, 0x30, 0x31, 0x34, 0xf8, 0xc9, 0x41, 0x10, - 0x27, 0xb2, 0x86, 0xca, 0x5d, 0xf1, 0xbc, 0x76, 0xca, 0xa0, 0xa5, 0xaf, 0x71, 0x74, 0x4c, 0x28, - 0xdb, 0x68, 0x31, 0x08, 0x3b, 0x51, 0xb7, 0x1f, 0xf6, 0xda, 0x99, 0x08, 0xde, 0x38, 0x31, 0x82, - 0x9c, 0x86, 0xc5, 0x6e, 0x21, 0xc8, 0xec, 0x94, 0xbf, 0x4b, 0xa8, 0xfa, 0xbc, 0xca, 0xf1, 0x30, - 0x82, 0xd1, 0xba, 0x83, 0xe4, 0x54, 0x74, 0x7b, 0x12, 0x69, 0x69, 0xc6, 0x48, 0x9f, 0x4b, 0x79, - 0x4c, 0xee, 0xfc, 0xd9, 0xe7, 0xc0, 0xdc, 0xf4, 0x73, 0xa0, 0x4c, 0x78, 0x56, 0x81, 0x43, 0x63, - 0xf1, 0xb8, 0x75, 0xed, 0x14, 0xb2, 0x00, 0x9f, 0x4e, 0x28, 0x95, 0x3f, 0x4a, 0xe8, 0x0d, 0x61, - 0x18, 0x4f, 0xe0, 0xff, 0x95, 0x88, 0x7c, 0x89, 0xde, 0xfc, 0x2e, 0xbd, 0x45, 0x58, 0x54, 0x54, - 0x06, 0x58, 0xd2, 0x0f, 0xe2, 0xaa, 0xc4, 0x1c, 0x74, 0xf5, 0x54, 0x25, 0x4c, 0xc7, 0x64, 0x2f, - 0x0a, 0x00, 0x9c, 0xf8, 0x2f, 0x66, 0x35, 0xe8, 0x07, 0xf1, 0x0f, 0xdc, 0x65, 0xcf, 0xc6, 0x65, - 0x37, 0x51, 0xf8, 0xbf, 0xe3, 0xab, 0xdf, 0x4a, 0xe8, 0x42, 0x5a, 0x3e, 0x87, 0x61, 0xe2, 0x3f, - 0xfb, 0x81, 0x7b, 0xea, 0x4f, 0x12, 0x7a, 0xed, 0x88, 0xbe, 0xc2, 0x51, 0x53, 0x65, 0x27, 0xbd, - 0x6c, 0xd9, 0xc9, 0xf7, 0x51, 0x89, 0x9d, 0x62, 0xe3, 0x6a, 0x8e, 0xf1, 0x78, 0xe7, 0xa4, 0xc9, - 0x04, 0xc8, 0x54, 0xd0, 0x4c, 0xb9, 0x3a, 0x7f, 0xc4, 0xd5, 0x8f, 0xd1, 0x79, 0xd1, 0xaa, 0x0f, - 0xa1, 0xf7, 0xbf, 0x4a, 0x47, 0x2b, 0x03, 0x74, 0x61, 0x9a, 0xb7, 0x70, 0x8a, 0x87, 0x50, 0x87, - 0x0f, 0x84, 0x49, 0xfe, 0x7c, 0x78, 0x02, 0xfb, 0xe3, 0xe7, 0x09, 0xcd, 0x30, 0x52, 0x7e, 0x56, - 0x40, 0xe7, 0x55, 0xfe, 0xbb, 0x50, 0xf0, 0xaa, 0x6d, 0x91, 0x77, 0x50, 0x79, 0x2f, 0xf0, 0x93, - 0x83, 0x51, 0x10, 0x8b, 0x77, 0xe1, 0x7b, 0x27, 0x30, 0x39, 0x46, 0x95, 0xd5, 0x9a, 0x60, 0x41, - 0xc7, 0xcc, 0x9e, 0xcf, 0xc6, 0xfc, 0xf7, 0xcc, 0xc6, 0xe5, 0x7f, 0x4b, 0xa8, 0x9c, 0x0a, 0x92, - 0xaf, 0xa2, 0xa5, 0xe0, 0x59, 0x32, 0xf2, 0x3b, 0x49, 0x3b, 0x66, 0xa9, 0xc9, 0x5c, 0x50, 0xa6, - 0x8b, 0x02, 0xca, 0xf3, 0x55, 0x7e, 0x17, 0xe1, 0x14, 0x6d, 0x5c, 0xd8, 0x39, 0x86, 0x78, 0x56, - 0xc0, 0xd3, 0x1e, 0x20, 0xdf, 0x47, 0xcb, 0x29, 0xea, 0x31, 0x63, 0x2c, 0xcf, 0x88, 0xaa, 0x02, - 0x43, 0x7f, 0x6e, 0x46, 0xdd, 0x41, 0xd5, 0x29, 0x41, 0x87, 0x19, 0xda, 0x02, 0xa3, 0xbd, 0x98, - 0x15, 0x38, 0xe9, 0xd3, 0xf2, 0x15, 0xb4, 0xd8, 0x11, 0xd9, 0xd4, 0x66, 0x87, 0xb4, 0x12, 0x43, - 0x5f, 0xe8, 0x64, 0x52, 0x4c, 0xf9, 0x4d, 0x1e, 0x3a, 0x47, 0xd6, 0xf1, 0x3f, 0xa4, 0x42, 0xcc, - 0xb6, 0xcd, 0xfc, 0xcb, 0xb5, 0xcd, 0xe3, 0x0f, 0x0f, 0x85, 0x57, 0x7b, 0x78, 0x28, 0x1e, 0x39, - 0x3c, 0x4c, 0x17, 0x6c, 0xe9, 0x15, 0x15, 0xec, 0xf5, 0x3b, 0x68, 0x21, 0x9b, 0xc6, 0xfc, 0x66, - 0x60, 0x12, 0x7c, 0x06, 0x56, 0x9e, 0x5b, 0xbb, 0xc3, 0x2f, 0xcb, 0x9e, 0x5b, 0xbb, 0x79, 0x9b, - 0x5f, 0x96, 0x3d, 0xb7, 0xb6, 0xb1, 0x8e, 0xf3, 0xeb, 0x7f, 0x29, 0xa3, 0xb3, 0x0d, 0x21, 0xd1, - 0xe1, 0xbf, 0x21, 0xcb, 0x7f, 0x90, 0x10, 0x3e, 0x7a, 0xe6, 0x92, 0x6f, 0x9f, 0x58, 0xa4, 0xc7, - 0x9e, 0x2b, 0x97, 0x3f, 0x9a, 0x99, 0x8e, 0xe7, 0x99, 0xb2, 0xfa, 0xd5, 0xdf, 0xfe, 0xf1, 0x4d, - 0x6e, 0x45, 0xb9, 0x32, 0xfe, 0xb1, 0x3b, 0x75, 0x75, 0x7c, 0xd7, 0x3f, 0x42, 0x74, 0x57, 0xba, - 0x2e, 0x7f, 0x2b, 0xa1, 0xb3, 0x47, 0xa6, 0xac, 0xfc, 0xe1, 0xe9, 0x84, 0x1f, 0x39, 0x46, 0x2c, - 0xdf, 0x9e, 0x95, 0x4c, 0xa8, 0xfc, 0x3e, 0x53, 0xf9, 0x9a, 0xa2, 0x7c, 0xb7, 0xca, 0x29, 0x0d, - 0x68, 0xfc, 0xd7, 0x23, 0x07, 0x99, 0x4c, 0x89, 0xde, 0x9f, 0x41, 0x83, 0xe7, 0x4e, 0x8e, 0xcb, - 0x1f, 0xbf, 0x24, 0xb5, 0x30, 0xe3, 0x16, 0x33, 0x63, 0x55, 0x79, 0xf7, 0x04, 0x33, 0x0e, 0xa7, - 0xfc, 0xff, 0x2b, 0x09, 0x2d, 0x4e, 0x8d, 0x6e, 0x79, 0xe3, 0x94, 0xa1, 0xcf, 0x1e, 0x4c, 0x96, - 0x6f, 0xcd, 0x46, 0x24, 0x54, 0xbe, 0xc1, 0x54, 0xbe, 0xaa, 0x5c, 0x7e, 0x41, 0xb2, 0x30, 0x0a, - 0xd0, 0xf4, 0x97, 0x12, 0x5a, 0xc8, 0x8e, 0x53, 0x79, 0xfd, 0x74, 0x15, 0x98, 0x9d, 0xeb, 0xcb, - 0x1b, 0x33, 0xd1, 0x08, 0x35, 0xaf, 0x33, 0x35, 0xdf, 0x51, 0xde, 0x3a, 0x46, 0xcd, 0x6c, 0xf7, - 0x4d, 0xb5, 0xcc, 0x36, 0xe0, 0x13, 0xb5, 0x3c, 0x66, 0x4c, 0x2e, 0x6f, 0xcc, 0x44, 0x73, 0x0a, - 0x2d, 0xfd, 0x0c, 0xc1, 0x5d, 0xe9, 0xfa, 0xe6, 0x57, 0x12, 0x7a, 0xbb, 0x13, 0x0d, 0x5e, 0x2c, - 0x66, 0xf3, 0xc2, 0x91, 0x16, 0x63, 0x8f, 0xa2, 0x24, 0xb2, 0xa5, 0xc7, 0x44, 0x90, 0xf5, 0x22, - 0x20, 0x59, 0x8d, 0x46, 0xbd, 0xb5, 0x5e, 0x10, 0xb2, 0xff, 0x89, 0xac, 0xf1, 0x4f, 0xfe, 0xb0, - 0x1f, 0x7f, 0xc7, 0x9f, 0x5f, 0xee, 0xa5, 0x80, 0x27, 0x25, 0x46, 0xb1, 0xf1, 0x9f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xcc, 0x93, 0x36, 0x44, 0x2d, 0x23, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/location/locations.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/location/locations.pb.go deleted file mode 100644 index 2b9f9f52..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/location/locations.pb.go +++ /dev/null @@ -1,331 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/location/locations.proto - -/* -Package location is a generated protocol buffer package. - -It is generated from these files: - google/cloud/location/locations.proto - -It has these top-level messages: - ListLocationsRequest - ListLocationsResponse - GetLocationRequest - Location -*/ -package location - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The request message for [Locations.ListLocations][google.cloud.location.Locations.ListLocations]. -type ListLocationsRequest struct { - // The resource that owns the locations collection, if applicable. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The standard list filter. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // The standard list page size. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The standard list page token. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListLocationsRequest) Reset() { *m = ListLocationsRequest{} } -func (m *ListLocationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListLocationsRequest) ProtoMessage() {} -func (*ListLocationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ListLocationsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListLocationsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListLocationsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListLocationsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for [Locations.ListLocations][google.cloud.location.Locations.ListLocations]. -type ListLocationsResponse struct { - // A list of locations that matches the specified filter in the request. - Locations []*Location `protobuf:"bytes,1,rep,name=locations" json:"locations,omitempty"` - // The standard List next-page token. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListLocationsResponse) Reset() { *m = ListLocationsResponse{} } -func (m *ListLocationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListLocationsResponse) ProtoMessage() {} -func (*ListLocationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ListLocationsResponse) GetLocations() []*Location { - if m != nil { - return m.Locations - } - return nil -} - -func (m *ListLocationsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for [Locations.GetLocation][google.cloud.location.Locations.GetLocation]. -type GetLocationRequest struct { - // Resource name for the location. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetLocationRequest) Reset() { *m = GetLocationRequest{} } -func (m *GetLocationRequest) String() string { return proto.CompactTextString(m) } -func (*GetLocationRequest) ProtoMessage() {} -func (*GetLocationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *GetLocationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A resource that represents Google Cloud Platform location. -type Location struct { - // Resource name for the location, which may vary between implementations. - // For example: `"projects/example-project/locations/us-east1"` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The canonical id for this location. For example: `"us-east1"`. - LocationId string `protobuf:"bytes,4,opt,name=location_id,json=locationId" json:"location_id,omitempty"` - // Cross-service attributes for the location. For example - // - // {"cloud.googleapis.com/region": "us-east1"} - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Service-specific metadata. For example the available capacity at the given - // location. - Metadata *google_protobuf1.Any `protobuf:"bytes,3,opt,name=metadata" json:"metadata,omitempty"` -} - -func (m *Location) Reset() { *m = Location{} } -func (m *Location) String() string { return proto.CompactTextString(m) } -func (*Location) ProtoMessage() {} -func (*Location) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Location) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Location) GetLocationId() string { - if m != nil { - return m.LocationId - } - return "" -} - -func (m *Location) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *Location) GetMetadata() *google_protobuf1.Any { - if m != nil { - return m.Metadata - } - return nil -} - -func init() { - proto.RegisterType((*ListLocationsRequest)(nil), "google.cloud.location.ListLocationsRequest") - proto.RegisterType((*ListLocationsResponse)(nil), "google.cloud.location.ListLocationsResponse") - proto.RegisterType((*GetLocationRequest)(nil), "google.cloud.location.GetLocationRequest") - proto.RegisterType((*Location)(nil), "google.cloud.location.Location") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Locations service - -type LocationsClient interface { - // Lists information about the supported locations for this service. - ListLocations(ctx context.Context, in *ListLocationsRequest, opts ...grpc.CallOption) (*ListLocationsResponse, error) - // Get information about a location. - GetLocation(ctx context.Context, in *GetLocationRequest, opts ...grpc.CallOption) (*Location, error) -} - -type locationsClient struct { - cc *grpc.ClientConn -} - -func NewLocationsClient(cc *grpc.ClientConn) LocationsClient { - return &locationsClient{cc} -} - -func (c *locationsClient) ListLocations(ctx context.Context, in *ListLocationsRequest, opts ...grpc.CallOption) (*ListLocationsResponse, error) { - out := new(ListLocationsResponse) - err := grpc.Invoke(ctx, "/google.cloud.location.Locations/ListLocations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *locationsClient) GetLocation(ctx context.Context, in *GetLocationRequest, opts ...grpc.CallOption) (*Location, error) { - out := new(Location) - err := grpc.Invoke(ctx, "/google.cloud.location.Locations/GetLocation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Locations service - -type LocationsServer interface { - // Lists information about the supported locations for this service. - ListLocations(context.Context, *ListLocationsRequest) (*ListLocationsResponse, error) - // Get information about a location. - GetLocation(context.Context, *GetLocationRequest) (*Location, error) -} - -func RegisterLocationsServer(s *grpc.Server, srv LocationsServer) { - s.RegisterService(&_Locations_serviceDesc, srv) -} - -func _Locations_ListLocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListLocationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LocationsServer).ListLocations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.location.Locations/ListLocations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LocationsServer).ListLocations(ctx, req.(*ListLocationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Locations_GetLocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetLocationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LocationsServer).GetLocation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.location.Locations/GetLocation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LocationsServer).GetLocation(ctx, req.(*GetLocationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Locations_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.location.Locations", - HandlerType: (*LocationsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListLocations", - Handler: _Locations_ListLocations_Handler, - }, - { - MethodName: "GetLocation", - Handler: _Locations_GetLocation_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/location/locations.proto", -} - -func init() { proto.RegisterFile("google/cloud/location/locations.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 508 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xd6, 0x3a, 0x6d, 0x94, 0x8c, 0x55, 0x40, 0xa3, 0x14, 0xb9, 0x06, 0x94, 0xd4, 0x08, 0x48, - 0x0b, 0xf2, 0x42, 0xb8, 0xf0, 0xa3, 0x1c, 0x28, 0x42, 0x08, 0x29, 0x87, 0xc8, 0x70, 0xe2, 0x12, - 0x6d, 0x92, 0xad, 0x65, 0xea, 0xec, 0x1a, 0x7b, 0x53, 0x91, 0xa2, 0xf6, 0x80, 0x78, 0x83, 0xbe, - 0x04, 0xef, 0xc3, 0x2b, 0xf0, 0x02, 0xdc, 0x38, 0x22, 0xaf, 0x7f, 0x12, 0x8a, 0x4b, 0xb8, 0xcd, - 0xce, 0x7c, 0xb3, 0xdf, 0x7c, 0xf3, 0xad, 0x0d, 0x77, 0x7c, 0x29, 0xfd, 0x90, 0xd3, 0x49, 0x28, - 0xe7, 0x53, 0x1a, 0xca, 0x09, 0x53, 0x81, 0x14, 0x65, 0x90, 0xb8, 0x51, 0x2c, 0x95, 0xc4, 0xed, - 0x0c, 0xe6, 0x6a, 0x98, 0x5b, 0x54, 0xed, 0x9b, 0x79, 0x37, 0x8b, 0x02, 0xca, 0x84, 0x90, 0x6a, - 0xb5, 0xc9, 0xde, 0xc9, 0xab, 0xfa, 0x34, 0x9e, 0x1f, 0x52, 0x26, 0x16, 0x59, 0xc9, 0x39, 0x83, - 0xd6, 0x20, 0x48, 0xd4, 0xa0, 0xa0, 0xf1, 0xf8, 0xc7, 0x39, 0x4f, 0x14, 0x22, 0x6c, 0x08, 0x36, - 0xe3, 0x16, 0xe9, 0x90, 0x6e, 0xd3, 0xd3, 0x31, 0x5e, 0x87, 0xfa, 0x61, 0x10, 0x2a, 0x1e, 0x5b, - 0x86, 0xce, 0xe6, 0x27, 0xbc, 0x01, 0xcd, 0x88, 0xf9, 0x7c, 0x94, 0x04, 0x27, 0xdc, 0xaa, 0x75, - 0x48, 0x77, 0xd3, 0x6b, 0xa4, 0x89, 0xb7, 0xc1, 0x09, 0xc7, 0x5b, 0x00, 0xba, 0xa8, 0xe4, 0x11, - 0x17, 0xd6, 0x86, 0x6e, 0xd4, 0xf0, 0x77, 0x69, 0xc2, 0x39, 0x83, 0xed, 0x0b, 0xfc, 0x49, 0x24, - 0x45, 0xc2, 0xb1, 0x0f, 0xcd, 0x52, 0xbb, 0x45, 0x3a, 0xb5, 0xae, 0xd9, 0x6b, 0xbb, 0x95, 0xe2, - 0xdd, 0xa2, 0xd9, 0x5b, 0x76, 0xe0, 0x5d, 0xb8, 0x2a, 0xf8, 0x27, 0x35, 0x5a, 0xe1, 0xce, 0x86, - 0xde, 0x4a, 0xd3, 0xc3, 0x92, 0xbf, 0x0b, 0xf8, 0x9a, 0x97, 0xf4, 0xff, 0x50, 0xef, 0xfc, 0x24, - 0xd0, 0x28, 0x70, 0x95, 0xeb, 0x69, 0x83, 0x59, 0xf0, 0x8f, 0x82, 0x69, 0x2e, 0x15, 0x8a, 0xd4, - 0x9b, 0x29, 0xbe, 0x84, 0x7a, 0xc8, 0xc6, 0x3c, 0x4c, 0x2c, 0x43, 0xeb, 0xb9, 0xbf, 0x46, 0x8f, - 0x3b, 0xd0, 0xe8, 0x57, 0x42, 0xc5, 0x0b, 0x2f, 0x6f, 0xc5, 0x87, 0xd0, 0x98, 0x71, 0xc5, 0xa6, - 0x4c, 0x31, 0xbd, 0x6b, 0xb3, 0xd7, 0x2a, 0xae, 0x29, 0xec, 0x75, 0x5f, 0x88, 0x85, 0x57, 0xa2, - 0xec, 0xa7, 0x60, 0xae, 0x5c, 0x84, 0xd7, 0xa0, 0x76, 0xc4, 0x17, 0xf9, 0xe4, 0x69, 0x88, 0x2d, - 0xd8, 0x3c, 0x66, 0xe1, 0x9c, 0xe7, 0x1b, 0xca, 0x0e, 0xcf, 0x8c, 0x27, 0xa4, 0xf7, 0xcd, 0x80, - 0x66, 0x69, 0x0d, 0x9e, 0x13, 0xd8, 0xfa, 0xc3, 0x2c, 0xbc, 0x54, 0x41, 0xc5, 0x93, 0xb2, 0x1f, - 0xfc, 0x1f, 0x38, 0xf3, 0xdf, 0xb9, 0xf7, 0xe5, 0xfb, 0x8f, 0x73, 0x63, 0x17, 0xdb, 0xf4, 0xf8, - 0x11, 0xfd, 0x9c, 0x2e, 0xb8, 0x1f, 0xc5, 0xf2, 0x03, 0x9f, 0xa8, 0x84, 0xee, 0x9f, 0x2e, 0xbf, - 0x0b, 0xfc, 0x4a, 0xc0, 0x5c, 0xb1, 0x10, 0xf7, 0x2e, 0xa1, 0xf9, 0xdb, 0x66, 0x7b, 0xdd, 0x83, - 0x72, 0xf6, 0xf4, 0x10, 0xb7, 0x71, 0xb7, 0x6a, 0x88, 0xe5, 0x0c, 0x74, 0xff, 0xf4, 0x40, 0xc2, - 0xce, 0x44, 0xce, 0xaa, 0x2f, 0x3c, 0xb8, 0x52, 0xea, 0x1b, 0xa6, 0x1e, 0x0d, 0xc9, 0xfb, 0x7e, - 0x0e, 0xf4, 0x65, 0xc8, 0x84, 0xef, 0xca, 0xd8, 0xa7, 0x3e, 0x17, 0xda, 0x41, 0x9a, 0x95, 0x58, - 0x14, 0x24, 0x17, 0xfe, 0x06, 0xcf, 0x8b, 0xe0, 0x17, 0x21, 0xe3, 0xba, 0x06, 0x3f, 0xfe, 0x1d, - 0x00, 0x00, 0xff, 0xff, 0x0d, 0x57, 0x9e, 0xa7, 0x39, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/job_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/job_service.pb.go deleted file mode 100644 index b99add0e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/job_service.pb.go +++ /dev/null @@ -1,1822 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1/job_service.proto - -/* -Package ml is a generated protocol buffer package. - -It is generated from these files: - google/cloud/ml/v1/job_service.proto - google/cloud/ml/v1/model_service.proto - google/cloud/ml/v1/operation_metadata.proto - google/cloud/ml/v1/prediction_service.proto - google/cloud/ml/v1/project_service.proto - -It has these top-level messages: - TrainingInput - HyperparameterSpec - ParameterSpec - HyperparameterOutput - TrainingOutput - PredictionInput - PredictionOutput - Job - CreateJobRequest - ListJobsRequest - ListJobsResponse - GetJobRequest - CancelJobRequest - Model - Version - ManualScaling - CreateModelRequest - ListModelsRequest - ListModelsResponse - GetModelRequest - DeleteModelRequest - CreateVersionRequest - ListVersionsRequest - ListVersionsResponse - GetVersionRequest - DeleteVersionRequest - SetDefaultVersionRequest - OperationMetadata - PredictRequest - GetConfigRequest - GetConfigResponse -*/ -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/serviceconfig" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A scale tier is an abstract representation of the resources Cloud ML -// will allocate to a training job. When selecting a scale tier for your -// training job, you should consider the size of your training dataset and -// the complexity of your model. As the tiers increase, virtual machines are -// added to handle your job, and the individual machines in the cluster -// generally have more memory and greater processing power than they do at -// lower tiers. The number of training units charged per hour of processing -// increases as tiers get more advanced. Refer to the -// [pricing guide](/ml/pricing) for more details. Note that in addition to -// incurring costs, your use of training resources is constrained by the -// [quota policy](/ml/quota). -type TrainingInput_ScaleTier int32 - -const ( - // A single worker instance. This tier is suitable for learning how to use - // Cloud ML, and for experimenting with new models using small datasets. - TrainingInput_BASIC TrainingInput_ScaleTier = 0 - // Many workers and a few parameter servers. - TrainingInput_STANDARD_1 TrainingInput_ScaleTier = 1 - // A large number of workers with many parameter servers. - TrainingInput_PREMIUM_1 TrainingInput_ScaleTier = 3 - // A single worker instance [with a GPU](ml/docs/how-tos/using-gpus). - TrainingInput_BASIC_GPU TrainingInput_ScaleTier = 6 - // The CUSTOM tier is not a set tier, but rather enables you to use your - // own cluster specification. When you use this tier, set values to - // configure your processing cluster according to these guidelines: - // - // * You _must_ set `TrainingInput.masterType` to specify the type - // of machine to use for your master node. This is the only required - // setting. - // - // * You _may_ set `TrainingInput.workerCount` to specify the number of - // workers to use. If you specify one or more workers, you _must_ also - // set `TrainingInput.workerType` to specify the type of machine to use - // for your worker nodes. - // - // * You _may_ set `TrainingInput.parameterServerCount` to specify the - // number of parameter servers to use. If you specify one or more - // parameter servers, you _must_ also set - // `TrainingInput.parameterServerType` to specify the type of machine to - // use for your parameter servers. - // - // Note that all of your workers must use the same machine type, which can - // be different from your parameter server type and master type. Your - // parameter servers must likewise use the same machine type, which can be - // different from your worker type and master type. - TrainingInput_CUSTOM TrainingInput_ScaleTier = 5 -) - -var TrainingInput_ScaleTier_name = map[int32]string{ - 0: "BASIC", - 1: "STANDARD_1", - 3: "PREMIUM_1", - 6: "BASIC_GPU", - 5: "CUSTOM", -} -var TrainingInput_ScaleTier_value = map[string]int32{ - "BASIC": 0, - "STANDARD_1": 1, - "PREMIUM_1": 3, - "BASIC_GPU": 6, - "CUSTOM": 5, -} - -func (x TrainingInput_ScaleTier) String() string { - return proto.EnumName(TrainingInput_ScaleTier_name, int32(x)) -} -func (TrainingInput_ScaleTier) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// The available types of optimization goals. -type HyperparameterSpec_GoalType int32 - -const ( - // Goal Type will default to maximize. - HyperparameterSpec_GOAL_TYPE_UNSPECIFIED HyperparameterSpec_GoalType = 0 - // Maximize the goal metric. - HyperparameterSpec_MAXIMIZE HyperparameterSpec_GoalType = 1 - // Minimize the goal metric. - HyperparameterSpec_MINIMIZE HyperparameterSpec_GoalType = 2 -) - -var HyperparameterSpec_GoalType_name = map[int32]string{ - 0: "GOAL_TYPE_UNSPECIFIED", - 1: "MAXIMIZE", - 2: "MINIMIZE", -} -var HyperparameterSpec_GoalType_value = map[string]int32{ - "GOAL_TYPE_UNSPECIFIED": 0, - "MAXIMIZE": 1, - "MINIMIZE": 2, -} - -func (x HyperparameterSpec_GoalType) String() string { - return proto.EnumName(HyperparameterSpec_GoalType_name, int32(x)) -} -func (HyperparameterSpec_GoalType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{1, 0} -} - -// The type of the parameter. -type ParameterSpec_ParameterType int32 - -const ( - // You must specify a valid type. Using this unspecified type will result in - // an error. - ParameterSpec_PARAMETER_TYPE_UNSPECIFIED ParameterSpec_ParameterType = 0 - // Type for real-valued parameters. - ParameterSpec_DOUBLE ParameterSpec_ParameterType = 1 - // Type for integral parameters. - ParameterSpec_INTEGER ParameterSpec_ParameterType = 2 - // The parameter is categorical, with a value chosen from the categories - // field. - ParameterSpec_CATEGORICAL ParameterSpec_ParameterType = 3 - // The parameter is real valued, with a fixed set of feasible points. If - // `type==DISCRETE`, feasible_points must be provided, and - // {`min_value`, `max_value`} will be ignored. - ParameterSpec_DISCRETE ParameterSpec_ParameterType = 4 -) - -var ParameterSpec_ParameterType_name = map[int32]string{ - 0: "PARAMETER_TYPE_UNSPECIFIED", - 1: "DOUBLE", - 2: "INTEGER", - 3: "CATEGORICAL", - 4: "DISCRETE", -} -var ParameterSpec_ParameterType_value = map[string]int32{ - "PARAMETER_TYPE_UNSPECIFIED": 0, - "DOUBLE": 1, - "INTEGER": 2, - "CATEGORICAL": 3, - "DISCRETE": 4, -} - -func (x ParameterSpec_ParameterType) String() string { - return proto.EnumName(ParameterSpec_ParameterType_name, int32(x)) -} -func (ParameterSpec_ParameterType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{2, 0} -} - -// The type of scaling that should be applied to this parameter. -type ParameterSpec_ScaleType int32 - -const ( - // By default, no scaling is applied. - ParameterSpec_NONE ParameterSpec_ScaleType = 0 - // Scales the feasible space to (0, 1) linearly. - ParameterSpec_UNIT_LINEAR_SCALE ParameterSpec_ScaleType = 1 - // Scales the feasible space logarithmically to (0, 1). The entire feasible - // space must be strictly positive. - ParameterSpec_UNIT_LOG_SCALE ParameterSpec_ScaleType = 2 - // Scales the feasible space "reverse" logarithmically to (0, 1). The result - // is that values close to the top of the feasible space are spread out more - // than points near the bottom. The entire feasible space must be strictly - // positive. - ParameterSpec_UNIT_REVERSE_LOG_SCALE ParameterSpec_ScaleType = 3 -) - -var ParameterSpec_ScaleType_name = map[int32]string{ - 0: "NONE", - 1: "UNIT_LINEAR_SCALE", - 2: "UNIT_LOG_SCALE", - 3: "UNIT_REVERSE_LOG_SCALE", -} -var ParameterSpec_ScaleType_value = map[string]int32{ - "NONE": 0, - "UNIT_LINEAR_SCALE": 1, - "UNIT_LOG_SCALE": 2, - "UNIT_REVERSE_LOG_SCALE": 3, -} - -func (x ParameterSpec_ScaleType) String() string { - return proto.EnumName(ParameterSpec_ScaleType_name, int32(x)) -} -func (ParameterSpec_ScaleType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} } - -// The format used to separate data instances in the source files. -type PredictionInput_DataFormat int32 - -const ( - // Unspecified format. - PredictionInput_DATA_FORMAT_UNSPECIFIED PredictionInput_DataFormat = 0 - // The source file is a text file with instances separated by the - // new-line character. - PredictionInput_TEXT PredictionInput_DataFormat = 1 - // The source file is a TFRecord file. - PredictionInput_TF_RECORD PredictionInput_DataFormat = 2 - // The source file is a GZIP-compressed TFRecord file. - PredictionInput_TF_RECORD_GZIP PredictionInput_DataFormat = 3 -) - -var PredictionInput_DataFormat_name = map[int32]string{ - 0: "DATA_FORMAT_UNSPECIFIED", - 1: "TEXT", - 2: "TF_RECORD", - 3: "TF_RECORD_GZIP", -} -var PredictionInput_DataFormat_value = map[string]int32{ - "DATA_FORMAT_UNSPECIFIED": 0, - "TEXT": 1, - "TF_RECORD": 2, - "TF_RECORD_GZIP": 3, -} - -func (x PredictionInput_DataFormat) String() string { - return proto.EnumName(PredictionInput_DataFormat_name, int32(x)) -} -func (PredictionInput_DataFormat) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 0} -} - -// Describes the job state. -type Job_State int32 - -const ( - // The job state is unspecified. - Job_STATE_UNSPECIFIED Job_State = 0 - // The job has been just created and processing has not yet begun. - Job_QUEUED Job_State = 1 - // The service is preparing to run the job. - Job_PREPARING Job_State = 2 - // The job is in progress. - Job_RUNNING Job_State = 3 - // The job completed successfully. - Job_SUCCEEDED Job_State = 4 - // The job failed. - // `error_message` should contain the details of the failure. - Job_FAILED Job_State = 5 - // The job is being cancelled. - // `error_message` should describe the reason for the cancellation. - Job_CANCELLING Job_State = 6 - // The job has been cancelled. - // `error_message` should describe the reason for the cancellation. - Job_CANCELLED Job_State = 7 -) - -var Job_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "QUEUED", - 2: "PREPARING", - 3: "RUNNING", - 4: "SUCCEEDED", - 5: "FAILED", - 6: "CANCELLING", - 7: "CANCELLED", -} -var Job_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "QUEUED": 1, - "PREPARING": 2, - "RUNNING": 3, - "SUCCEEDED": 4, - "FAILED": 5, - "CANCELLING": 6, - "CANCELLED": 7, -} - -func (x Job_State) String() string { - return proto.EnumName(Job_State_name, int32(x)) -} -func (Job_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -// Represents input parameters for a training job. -type TrainingInput struct { - // Required. Specifies the machine types, the number of replicas for workers - // and parameter servers. - ScaleTier TrainingInput_ScaleTier `protobuf:"varint,1,opt,name=scale_tier,json=scaleTier,enum=google.cloud.ml.v1.TrainingInput_ScaleTier" json:"scale_tier,omitempty"` - // Optional. Specifies the type of virtual machine to use for your training - // job's master worker. - // - // The following types are supported: - // - // <dl> - // <dt>standard</dt> - // <dd> - // A basic machine configuration suitable for training simple models with - // small to moderate datasets. - // </dd> - // <dt>large_model</dt> - // <dd> - // A machine with a lot of memory, specially suited for parameter servers - // when your model is large (having many hidden layers or layers with very - // large numbers of nodes). - // </dd> - // <dt>complex_model_s</dt> - // <dd> - // A machine suitable for the master and workers of the cluster when your - // model requires more computation than the standard machine can handle - // satisfactorily. - // </dd> - // <dt>complex_model_m</dt> - // <dd> - // A machine with roughly twice the number of cores and roughly double the - // memory of <code suppresswarning="true">complex_model_s</code>. - // </dd> - // <dt>complex_model_l</dt> - // <dd> - // A machine with roughly twice the number of cores and roughly double the - // memory of <code suppresswarning="true">complex_model_m</code>. - // </dd> - // <dt>standard_gpu</dt> - // <dd> - // A machine equivalent to <code suppresswarning="true">standard</code> that - // also includes a - // <a href="ml/docs/how-tos/using-gpus"> - // GPU that you can use in your trainer</a>. - // </dd> - // <dt>complex_model_m_gpu</dt> - // <dd> - // A machine equivalent to - // <code suppresswarning="true">coplex_model_m</code> that also includes - // four GPUs. - // </dd> - // </dl> - // - // You must set this value when `scaleTier` is set to `CUSTOM`. - MasterType string `protobuf:"bytes,2,opt,name=master_type,json=masterType" json:"master_type,omitempty"` - // Optional. Specifies the type of virtual machine to use for your training - // job's worker nodes. - // - // The supported values are the same as those described in the entry for - // `masterType`. - // - // This value must be present when `scaleTier` is set to `CUSTOM` and - // `workerCount` is greater than zero. - WorkerType string `protobuf:"bytes,3,opt,name=worker_type,json=workerType" json:"worker_type,omitempty"` - // Optional. Specifies the type of virtual machine to use for your training - // job's parameter server. - // - // The supported values are the same as those described in the entry for - // `master_type`. - // - // This value must be present when `scaleTier` is set to `CUSTOM` and - // `parameter_server_count` is greater than zero. - ParameterServerType string `protobuf:"bytes,4,opt,name=parameter_server_type,json=parameterServerType" json:"parameter_server_type,omitempty"` - // Optional. The number of worker replicas to use for the training job. Each - // replica in the cluster will be of the type specified in `worker_type`. - // - // This value can only be used when `scale_tier` is set to `CUSTOM`. If you - // set this value, you must also set `worker_type`. - WorkerCount int64 `protobuf:"varint,5,opt,name=worker_count,json=workerCount" json:"worker_count,omitempty"` - // Optional. The number of parameter server replicas to use for the training - // job. Each replica in the cluster will be of the type specified in - // `parameter_server_type`. - // - // This value can only be used when `scale_tier` is set to `CUSTOM`.If you - // set this value, you must also set `parameter_server_type`. - ParameterServerCount int64 `protobuf:"varint,6,opt,name=parameter_server_count,json=parameterServerCount" json:"parameter_server_count,omitempty"` - // Required. The Google Cloud Storage location of the packages with - // the training program and any additional dependencies. - PackageUris []string `protobuf:"bytes,7,rep,name=package_uris,json=packageUris" json:"package_uris,omitempty"` - // Required. The Python module name to run after installing the packages. - PythonModule string `protobuf:"bytes,8,opt,name=python_module,json=pythonModule" json:"python_module,omitempty"` - // Optional. Command line arguments to pass to the program. - Args []string `protobuf:"bytes,10,rep,name=args" json:"args,omitempty"` - // Optional. The set of Hyperparameters to tune. - Hyperparameters *HyperparameterSpec `protobuf:"bytes,12,opt,name=hyperparameters" json:"hyperparameters,omitempty"` - // Required. The Google Compute Engine region to run the training job in. - Region string `protobuf:"bytes,14,opt,name=region" json:"region,omitempty"` - // Optional. A Google Cloud Storage path in which to store training outputs - // and other data needed for training. This path is passed to your TensorFlow - // program as the 'job_dir' command-line argument. The benefit of specifying - // this field is that Cloud ML validates the path for use in training. - JobDir string `protobuf:"bytes,16,opt,name=job_dir,json=jobDir" json:"job_dir,omitempty"` - // Optional. The Google Cloud ML runtime version to use for training. If not - // set, Google Cloud ML will choose the latest stable version. - RuntimeVersion string `protobuf:"bytes,15,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"` -} - -func (m *TrainingInput) Reset() { *m = TrainingInput{} } -func (m *TrainingInput) String() string { return proto.CompactTextString(m) } -func (*TrainingInput) ProtoMessage() {} -func (*TrainingInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *TrainingInput) GetScaleTier() TrainingInput_ScaleTier { - if m != nil { - return m.ScaleTier - } - return TrainingInput_BASIC -} - -func (m *TrainingInput) GetMasterType() string { - if m != nil { - return m.MasterType - } - return "" -} - -func (m *TrainingInput) GetWorkerType() string { - if m != nil { - return m.WorkerType - } - return "" -} - -func (m *TrainingInput) GetParameterServerType() string { - if m != nil { - return m.ParameterServerType - } - return "" -} - -func (m *TrainingInput) GetWorkerCount() int64 { - if m != nil { - return m.WorkerCount - } - return 0 -} - -func (m *TrainingInput) GetParameterServerCount() int64 { - if m != nil { - return m.ParameterServerCount - } - return 0 -} - -func (m *TrainingInput) GetPackageUris() []string { - if m != nil { - return m.PackageUris - } - return nil -} - -func (m *TrainingInput) GetPythonModule() string { - if m != nil { - return m.PythonModule - } - return "" -} - -func (m *TrainingInput) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *TrainingInput) GetHyperparameters() *HyperparameterSpec { - if m != nil { - return m.Hyperparameters - } - return nil -} - -func (m *TrainingInput) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *TrainingInput) GetJobDir() string { - if m != nil { - return m.JobDir - } - return "" -} - -func (m *TrainingInput) GetRuntimeVersion() string { - if m != nil { - return m.RuntimeVersion - } - return "" -} - -// Represents a set of hyperparameters to optimize. -type HyperparameterSpec struct { - // Required. The type of goal to use for tuning. Available types are - // `MAXIMIZE` and `MINIMIZE`. - // - // Defaults to `MAXIMIZE`. - Goal HyperparameterSpec_GoalType `protobuf:"varint,1,opt,name=goal,enum=google.cloud.ml.v1.HyperparameterSpec_GoalType" json:"goal,omitempty"` - // Required. The set of parameters to tune. - Params []*ParameterSpec `protobuf:"bytes,2,rep,name=params" json:"params,omitempty"` - // Optional. How many training trials should be attempted to optimize - // the specified hyperparameters. - // - // Defaults to one. - MaxTrials int32 `protobuf:"varint,3,opt,name=max_trials,json=maxTrials" json:"max_trials,omitempty"` - // Optional. The number of training trials to run concurrently. - // You can reduce the time it takes to perform hyperparameter tuning by adding - // trials in parallel. However, each trail only benefits from the information - // gained in completed trials. That means that a trial does not get access to - // the results of trials running at the same time, which could reduce the - // quality of the overall optimization. - // - // Each trial will use the same scale tier and machine types. - // - // Defaults to one. - MaxParallelTrials int32 `protobuf:"varint,4,opt,name=max_parallel_trials,json=maxParallelTrials" json:"max_parallel_trials,omitempty"` - // Optional. The Tensorflow summary tag name to use for optimizing trials. For - // current versions of Tensorflow, this tag name should exactly match what is - // shown in Tensorboard, including all scopes. For versions of Tensorflow - // prior to 0.12, this should be only the tag passed to tf.Summary. - // By default, "training/hptuning/metric" will be used. - HyperparameterMetricTag string `protobuf:"bytes,5,opt,name=hyperparameter_metric_tag,json=hyperparameterMetricTag" json:"hyperparameter_metric_tag,omitempty"` -} - -func (m *HyperparameterSpec) Reset() { *m = HyperparameterSpec{} } -func (m *HyperparameterSpec) String() string { return proto.CompactTextString(m) } -func (*HyperparameterSpec) ProtoMessage() {} -func (*HyperparameterSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *HyperparameterSpec) GetGoal() HyperparameterSpec_GoalType { - if m != nil { - return m.Goal - } - return HyperparameterSpec_GOAL_TYPE_UNSPECIFIED -} - -func (m *HyperparameterSpec) GetParams() []*ParameterSpec { - if m != nil { - return m.Params - } - return nil -} - -func (m *HyperparameterSpec) GetMaxTrials() int32 { - if m != nil { - return m.MaxTrials - } - return 0 -} - -func (m *HyperparameterSpec) GetMaxParallelTrials() int32 { - if m != nil { - return m.MaxParallelTrials - } - return 0 -} - -func (m *HyperparameterSpec) GetHyperparameterMetricTag() string { - if m != nil { - return m.HyperparameterMetricTag - } - return "" -} - -// Represents a single hyperparameter to optimize. -type ParameterSpec struct { - // Required. The parameter name must be unique amongst all ParameterConfigs in - // a HyperparameterSpec message. E.g., "learning_rate". - ParameterName string `protobuf:"bytes,1,opt,name=parameter_name,json=parameterName" json:"parameter_name,omitempty"` - // Required. The type of the parameter. - Type ParameterSpec_ParameterType `protobuf:"varint,4,opt,name=type,enum=google.cloud.ml.v1.ParameterSpec_ParameterType" json:"type,omitempty"` - // Required if type is `DOUBLE` or `INTEGER`. This field - // should be unset if type is `CATEGORICAL`. This value should be integers if - // type is INTEGER. - MinValue float64 `protobuf:"fixed64,2,opt,name=min_value,json=minValue" json:"min_value,omitempty"` - // Required if typeis `DOUBLE` or `INTEGER`. This field - // should be unset if type is `CATEGORICAL`. This value should be integers if - // type is `INTEGER`. - MaxValue float64 `protobuf:"fixed64,3,opt,name=max_value,json=maxValue" json:"max_value,omitempty"` - // Required if type is `CATEGORICAL`. The list of possible categories. - CategoricalValues []string `protobuf:"bytes,5,rep,name=categorical_values,json=categoricalValues" json:"categorical_values,omitempty"` - // Required if type is `DISCRETE`. - // A list of feasible points. - // The list should be in strictly increasing order. For instance, this - // parameter might have possible settings of 1.5, 2.5, and 4.0. This list - // should not contain more than 1,000 values. - DiscreteValues []float64 `protobuf:"fixed64,6,rep,packed,name=discrete_values,json=discreteValues" json:"discrete_values,omitempty"` - // Optional. How the parameter should be scaled to the hypercube. - // Leave unset for categorical parameters. - // Some kind of scaling is strongly recommended for real or integral - // parameters (e.g., `UNIT_LINEAR_SCALE`). - ScaleType ParameterSpec_ScaleType `protobuf:"varint,7,opt,name=scale_type,json=scaleType,enum=google.cloud.ml.v1.ParameterSpec_ScaleType" json:"scale_type,omitempty"` -} - -func (m *ParameterSpec) Reset() { *m = ParameterSpec{} } -func (m *ParameterSpec) String() string { return proto.CompactTextString(m) } -func (*ParameterSpec) ProtoMessage() {} -func (*ParameterSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ParameterSpec) GetParameterName() string { - if m != nil { - return m.ParameterName - } - return "" -} - -func (m *ParameterSpec) GetType() ParameterSpec_ParameterType { - if m != nil { - return m.Type - } - return ParameterSpec_PARAMETER_TYPE_UNSPECIFIED -} - -func (m *ParameterSpec) GetMinValue() float64 { - if m != nil { - return m.MinValue - } - return 0 -} - -func (m *ParameterSpec) GetMaxValue() float64 { - if m != nil { - return m.MaxValue - } - return 0 -} - -func (m *ParameterSpec) GetCategoricalValues() []string { - if m != nil { - return m.CategoricalValues - } - return nil -} - -func (m *ParameterSpec) GetDiscreteValues() []float64 { - if m != nil { - return m.DiscreteValues - } - return nil -} - -func (m *ParameterSpec) GetScaleType() ParameterSpec_ScaleType { - if m != nil { - return m.ScaleType - } - return ParameterSpec_NONE -} - -// Represents the result of a single hyperparameter tuning trial from a -// training job. The TrainingOutput object that is returned on successful -// completion of a training job with hyperparameter tuning includes a list -// of HyperparameterOutput objects, one for each successful trial. -type HyperparameterOutput struct { - // The trial id for these results. - TrialId string `protobuf:"bytes,1,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"` - // The hyperparameters given to this trial. - Hyperparameters map[string]string `protobuf:"bytes,2,rep,name=hyperparameters" json:"hyperparameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The final objective metric seen for this trial. - FinalMetric *HyperparameterOutput_HyperparameterMetric `protobuf:"bytes,3,opt,name=final_metric,json=finalMetric" json:"final_metric,omitempty"` - // All recorded object metrics for this trial. - AllMetrics []*HyperparameterOutput_HyperparameterMetric `protobuf:"bytes,4,rep,name=all_metrics,json=allMetrics" json:"all_metrics,omitempty"` -} - -func (m *HyperparameterOutput) Reset() { *m = HyperparameterOutput{} } -func (m *HyperparameterOutput) String() string { return proto.CompactTextString(m) } -func (*HyperparameterOutput) ProtoMessage() {} -func (*HyperparameterOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *HyperparameterOutput) GetTrialId() string { - if m != nil { - return m.TrialId - } - return "" -} - -func (m *HyperparameterOutput) GetHyperparameters() map[string]string { - if m != nil { - return m.Hyperparameters - } - return nil -} - -func (m *HyperparameterOutput) GetFinalMetric() *HyperparameterOutput_HyperparameterMetric { - if m != nil { - return m.FinalMetric - } - return nil -} - -func (m *HyperparameterOutput) GetAllMetrics() []*HyperparameterOutput_HyperparameterMetric { - if m != nil { - return m.AllMetrics - } - return nil -} - -// An observed value of a metric. -type HyperparameterOutput_HyperparameterMetric struct { - // The global training step for this metric. - TrainingStep int64 `protobuf:"varint,1,opt,name=training_step,json=trainingStep" json:"training_step,omitempty"` - // The objective value at this training step. - ObjectiveValue float64 `protobuf:"fixed64,2,opt,name=objective_value,json=objectiveValue" json:"objective_value,omitempty"` -} - -func (m *HyperparameterOutput_HyperparameterMetric) Reset() { - *m = HyperparameterOutput_HyperparameterMetric{} -} -func (m *HyperparameterOutput_HyperparameterMetric) String() string { return proto.CompactTextString(m) } -func (*HyperparameterOutput_HyperparameterMetric) ProtoMessage() {} -func (*HyperparameterOutput_HyperparameterMetric) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{3, 0} -} - -func (m *HyperparameterOutput_HyperparameterMetric) GetTrainingStep() int64 { - if m != nil { - return m.TrainingStep - } - return 0 -} - -func (m *HyperparameterOutput_HyperparameterMetric) GetObjectiveValue() float64 { - if m != nil { - return m.ObjectiveValue - } - return 0 -} - -// Represents results of a training job. Output only. -type TrainingOutput struct { - // The number of hyperparameter tuning trials that completed successfully. - // Only set for hyperparameter tuning jobs. - CompletedTrialCount int64 `protobuf:"varint,1,opt,name=completed_trial_count,json=completedTrialCount" json:"completed_trial_count,omitempty"` - // Results for individual Hyperparameter trials. - // Only set for hyperparameter tuning jobs. - Trials []*HyperparameterOutput `protobuf:"bytes,2,rep,name=trials" json:"trials,omitempty"` - // The amount of ML units consumed by the job. - ConsumedMlUnits float64 `protobuf:"fixed64,3,opt,name=consumed_ml_units,json=consumedMlUnits" json:"consumed_ml_units,omitempty"` - // Whether this job is a hyperparameter tuning job. - IsHyperparameterTuningJob bool `protobuf:"varint,4,opt,name=is_hyperparameter_tuning_job,json=isHyperparameterTuningJob" json:"is_hyperparameter_tuning_job,omitempty"` -} - -func (m *TrainingOutput) Reset() { *m = TrainingOutput{} } -func (m *TrainingOutput) String() string { return proto.CompactTextString(m) } -func (*TrainingOutput) ProtoMessage() {} -func (*TrainingOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *TrainingOutput) GetCompletedTrialCount() int64 { - if m != nil { - return m.CompletedTrialCount - } - return 0 -} - -func (m *TrainingOutput) GetTrials() []*HyperparameterOutput { - if m != nil { - return m.Trials - } - return nil -} - -func (m *TrainingOutput) GetConsumedMlUnits() float64 { - if m != nil { - return m.ConsumedMlUnits - } - return 0 -} - -func (m *TrainingOutput) GetIsHyperparameterTuningJob() bool { - if m != nil { - return m.IsHyperparameterTuningJob - } - return false -} - -// Represents input parameters for a prediction job. -type PredictionInput struct { - // Required. The model or the version to use for prediction. - // - // Types that are valid to be assigned to ModelVersion: - // *PredictionInput_ModelName - // *PredictionInput_VersionName - // *PredictionInput_Uri - ModelVersion isPredictionInput_ModelVersion `protobuf_oneof:"model_version"` - // Required. The format of the input data files. - DataFormat PredictionInput_DataFormat `protobuf:"varint,3,opt,name=data_format,json=dataFormat,enum=google.cloud.ml.v1.PredictionInput_DataFormat" json:"data_format,omitempty"` - // Required. The Google Cloud Storage location of the input data files. - // May contain wildcards. - InputPaths []string `protobuf:"bytes,4,rep,name=input_paths,json=inputPaths" json:"input_paths,omitempty"` - // Required. The output Google Cloud Storage location. - OutputPath string `protobuf:"bytes,5,opt,name=output_path,json=outputPath" json:"output_path,omitempty"` - // Optional. The maximum number of workers to be used for parallel processing. - // Defaults to 10 if not specified. - MaxWorkerCount int64 `protobuf:"varint,6,opt,name=max_worker_count,json=maxWorkerCount" json:"max_worker_count,omitempty"` - // Required. The Google Compute Engine region to run the prediction job in. - Region string `protobuf:"bytes,7,opt,name=region" json:"region,omitempty"` - // Optional. The Google Cloud ML runtime version to use for this batch - // prediction. If not set, Google Cloud ML will pick the runtime version used - // during the CreateVersion request for this model version, or choose the - // latest stable version when model version information is not available - // such as when the model is specified by uri. - RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"` -} - -func (m *PredictionInput) Reset() { *m = PredictionInput{} } -func (m *PredictionInput) String() string { return proto.CompactTextString(m) } -func (*PredictionInput) ProtoMessage() {} -func (*PredictionInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -type isPredictionInput_ModelVersion interface { - isPredictionInput_ModelVersion() -} - -type PredictionInput_ModelName struct { - ModelName string `protobuf:"bytes,1,opt,name=model_name,json=modelName,oneof"` -} -type PredictionInput_VersionName struct { - VersionName string `protobuf:"bytes,2,opt,name=version_name,json=versionName,oneof"` -} -type PredictionInput_Uri struct { - Uri string `protobuf:"bytes,9,opt,name=uri,oneof"` -} - -func (*PredictionInput_ModelName) isPredictionInput_ModelVersion() {} -func (*PredictionInput_VersionName) isPredictionInput_ModelVersion() {} -func (*PredictionInput_Uri) isPredictionInput_ModelVersion() {} - -func (m *PredictionInput) GetModelVersion() isPredictionInput_ModelVersion { - if m != nil { - return m.ModelVersion - } - return nil -} - -func (m *PredictionInput) GetModelName() string { - if x, ok := m.GetModelVersion().(*PredictionInput_ModelName); ok { - return x.ModelName - } - return "" -} - -func (m *PredictionInput) GetVersionName() string { - if x, ok := m.GetModelVersion().(*PredictionInput_VersionName); ok { - return x.VersionName - } - return "" -} - -func (m *PredictionInput) GetUri() string { - if x, ok := m.GetModelVersion().(*PredictionInput_Uri); ok { - return x.Uri - } - return "" -} - -func (m *PredictionInput) GetDataFormat() PredictionInput_DataFormat { - if m != nil { - return m.DataFormat - } - return PredictionInput_DATA_FORMAT_UNSPECIFIED -} - -func (m *PredictionInput) GetInputPaths() []string { - if m != nil { - return m.InputPaths - } - return nil -} - -func (m *PredictionInput) GetOutputPath() string { - if m != nil { - return m.OutputPath - } - return "" -} - -func (m *PredictionInput) GetMaxWorkerCount() int64 { - if m != nil { - return m.MaxWorkerCount - } - return 0 -} - -func (m *PredictionInput) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *PredictionInput) GetRuntimeVersion() string { - if m != nil { - return m.RuntimeVersion - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PredictionInput) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PredictionInput_OneofMarshaler, _PredictionInput_OneofUnmarshaler, _PredictionInput_OneofSizer, []interface{}{ - (*PredictionInput_ModelName)(nil), - (*PredictionInput_VersionName)(nil), - (*PredictionInput_Uri)(nil), - } -} - -func _PredictionInput_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PredictionInput) - // model_version - switch x := m.ModelVersion.(type) { - case *PredictionInput_ModelName: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ModelName) - case *PredictionInput_VersionName: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.VersionName) - case *PredictionInput_Uri: - b.EncodeVarint(9<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Uri) - case nil: - default: - return fmt.Errorf("PredictionInput.ModelVersion has unexpected type %T", x) - } - return nil -} - -func _PredictionInput_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PredictionInput) - switch tag { - case 1: // model_version.model_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ModelVersion = &PredictionInput_ModelName{x} - return true, err - case 2: // model_version.version_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ModelVersion = &PredictionInput_VersionName{x} - return true, err - case 9: // model_version.uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ModelVersion = &PredictionInput_Uri{x} - return true, err - default: - return false, nil - } -} - -func _PredictionInput_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PredictionInput) - // model_version - switch x := m.ModelVersion.(type) { - case *PredictionInput_ModelName: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ModelName))) - n += len(x.ModelName) - case *PredictionInput_VersionName: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.VersionName))) - n += len(x.VersionName) - case *PredictionInput_Uri: - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Uri))) - n += len(x.Uri) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents results of a prediction job. -type PredictionOutput struct { - // The output Google Cloud Storage location provided at the job creation time. - OutputPath string `protobuf:"bytes,1,opt,name=output_path,json=outputPath" json:"output_path,omitempty"` - // The number of generated predictions. - PredictionCount int64 `protobuf:"varint,2,opt,name=prediction_count,json=predictionCount" json:"prediction_count,omitempty"` - // The number of data instances which resulted in errors. - ErrorCount int64 `protobuf:"varint,3,opt,name=error_count,json=errorCount" json:"error_count,omitempty"` - // Node hours used by the batch prediction job. - NodeHours float64 `protobuf:"fixed64,4,opt,name=node_hours,json=nodeHours" json:"node_hours,omitempty"` -} - -func (m *PredictionOutput) Reset() { *m = PredictionOutput{} } -func (m *PredictionOutput) String() string { return proto.CompactTextString(m) } -func (*PredictionOutput) ProtoMessage() {} -func (*PredictionOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *PredictionOutput) GetOutputPath() string { - if m != nil { - return m.OutputPath - } - return "" -} - -func (m *PredictionOutput) GetPredictionCount() int64 { - if m != nil { - return m.PredictionCount - } - return 0 -} - -func (m *PredictionOutput) GetErrorCount() int64 { - if m != nil { - return m.ErrorCount - } - return 0 -} - -func (m *PredictionOutput) GetNodeHours() float64 { - if m != nil { - return m.NodeHours - } - return 0 -} - -// Represents a training or prediction job. -type Job struct { - // Required. The user-specified id of the job. - JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"` - // Required. Parameters to create a job. - // - // Types that are valid to be assigned to Input: - // *Job_TrainingInput - // *Job_PredictionInput - Input isJob_Input `protobuf_oneof:"input"` - // Output only. When the job was created. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. When the job processing was started. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Output only. When the job processing was completed. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Output only. The detailed state of a job. - State Job_State `protobuf:"varint,7,opt,name=state,enum=google.cloud.ml.v1.Job_State" json:"state,omitempty"` - // Output only. The details of a failure or a cancellation. - ErrorMessage string `protobuf:"bytes,8,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"` - // Output only. The current result of the job. - // - // Types that are valid to be assigned to Output: - // *Job_TrainingOutput - // *Job_PredictionOutput - Output isJob_Output `protobuf_oneof:"output"` -} - -func (m *Job) Reset() { *m = Job{} } -func (m *Job) String() string { return proto.CompactTextString(m) } -func (*Job) ProtoMessage() {} -func (*Job) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -type isJob_Input interface { - isJob_Input() -} -type isJob_Output interface { - isJob_Output() -} - -type Job_TrainingInput struct { - TrainingInput *TrainingInput `protobuf:"bytes,2,opt,name=training_input,json=trainingInput,oneof"` -} -type Job_PredictionInput struct { - PredictionInput *PredictionInput `protobuf:"bytes,3,opt,name=prediction_input,json=predictionInput,oneof"` -} -type Job_TrainingOutput struct { - TrainingOutput *TrainingOutput `protobuf:"bytes,9,opt,name=training_output,json=trainingOutput,oneof"` -} -type Job_PredictionOutput struct { - PredictionOutput *PredictionOutput `protobuf:"bytes,10,opt,name=prediction_output,json=predictionOutput,oneof"` -} - -func (*Job_TrainingInput) isJob_Input() {} -func (*Job_PredictionInput) isJob_Input() {} -func (*Job_TrainingOutput) isJob_Output() {} -func (*Job_PredictionOutput) isJob_Output() {} - -func (m *Job) GetInput() isJob_Input { - if m != nil { - return m.Input - } - return nil -} -func (m *Job) GetOutput() isJob_Output { - if m != nil { - return m.Output - } - return nil -} - -func (m *Job) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -func (m *Job) GetTrainingInput() *TrainingInput { - if x, ok := m.GetInput().(*Job_TrainingInput); ok { - return x.TrainingInput - } - return nil -} - -func (m *Job) GetPredictionInput() *PredictionInput { - if x, ok := m.GetInput().(*Job_PredictionInput); ok { - return x.PredictionInput - } - return nil -} - -func (m *Job) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Job) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *Job) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *Job) GetState() Job_State { - if m != nil { - return m.State - } - return Job_STATE_UNSPECIFIED -} - -func (m *Job) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage - } - return "" -} - -func (m *Job) GetTrainingOutput() *TrainingOutput { - if x, ok := m.GetOutput().(*Job_TrainingOutput); ok { - return x.TrainingOutput - } - return nil -} - -func (m *Job) GetPredictionOutput() *PredictionOutput { - if x, ok := m.GetOutput().(*Job_PredictionOutput); ok { - return x.PredictionOutput - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Job) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Job_OneofMarshaler, _Job_OneofUnmarshaler, _Job_OneofSizer, []interface{}{ - (*Job_TrainingInput)(nil), - (*Job_PredictionInput)(nil), - (*Job_TrainingOutput)(nil), - (*Job_PredictionOutput)(nil), - } -} - -func _Job_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Job) - // input - switch x := m.Input.(type) { - case *Job_TrainingInput: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TrainingInput); err != nil { - return err - } - case *Job_PredictionInput: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PredictionInput); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Job.Input has unexpected type %T", x) - } - // output - switch x := m.Output.(type) { - case *Job_TrainingOutput: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TrainingOutput); err != nil { - return err - } - case *Job_PredictionOutput: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PredictionOutput); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Job.Output has unexpected type %T", x) - } - return nil -} - -func _Job_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Job) - switch tag { - case 2: // input.training_input - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TrainingInput) - err := b.DecodeMessage(msg) - m.Input = &Job_TrainingInput{msg} - return true, err - case 3: // input.prediction_input - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PredictionInput) - err := b.DecodeMessage(msg) - m.Input = &Job_PredictionInput{msg} - return true, err - case 9: // output.training_output - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TrainingOutput) - err := b.DecodeMessage(msg) - m.Output = &Job_TrainingOutput{msg} - return true, err - case 10: // output.prediction_output - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PredictionOutput) - err := b.DecodeMessage(msg) - m.Output = &Job_PredictionOutput{msg} - return true, err - default: - return false, nil - } -} - -func _Job_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Job) - // input - switch x := m.Input.(type) { - case *Job_TrainingInput: - s := proto.Size(x.TrainingInput) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_PredictionInput: - s := proto.Size(x.PredictionInput) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // output - switch x := m.Output.(type) { - case *Job_TrainingOutput: - s := proto.Size(x.TrainingOutput) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_PredictionOutput: - s := proto.Size(x.PredictionOutput) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Request message for the CreateJob method. -type CreateJobRequest struct { - // Required. The project name. - // - // Authorization: requires `Editor` role on the specified project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The job to create. - Job *Job `protobuf:"bytes,2,opt,name=job" json:"job,omitempty"` -} - -func (m *CreateJobRequest) Reset() { *m = CreateJobRequest{} } -func (m *CreateJobRequest) String() string { return proto.CompactTextString(m) } -func (*CreateJobRequest) ProtoMessage() {} -func (*CreateJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *CreateJobRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateJobRequest) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -// Request message for the ListJobs method. -type ListJobsRequest struct { - // Required. The name of the project for which to list jobs. - // - // Authorization: requires `Viewer` role on the specified project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. Specifies the subset of jobs to retrieve. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // Optional. A page token to request the next page of results. - // - // You get the token from the `next_page_token` field of the response from - // the previous call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The number of jobs to retrieve per "page" of results. If there - // are more remaining results than this number, the response message will - // contain a valid value in the `next_page_token` field. - // - // The default value is 20, and the maximum page size is 100. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListJobsRequest) Reset() { *m = ListJobsRequest{} } -func (m *ListJobsRequest) String() string { return proto.CompactTextString(m) } -func (*ListJobsRequest) ProtoMessage() {} -func (*ListJobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ListJobsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListJobsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListJobsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListJobsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for the ListJobs method. -type ListJobsResponse struct { - // The list of jobs. - Jobs []*Job `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"` - // Optional. Pass this token as the `page_token` field of the request for a - // subsequent call. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListJobsResponse) Reset() { *m = ListJobsResponse{} } -func (m *ListJobsResponse) String() string { return proto.CompactTextString(m) } -func (*ListJobsResponse) ProtoMessage() {} -func (*ListJobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *ListJobsResponse) GetJobs() []*Job { - if m != nil { - return m.Jobs - } - return nil -} - -func (m *ListJobsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for the GetJob method. -type GetJobRequest struct { - // Required. The name of the job to get the description of. - // - // Authorization: requires `Viewer` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetJobRequest) Reset() { *m = GetJobRequest{} } -func (m *GetJobRequest) String() string { return proto.CompactTextString(m) } -func (*GetJobRequest) ProtoMessage() {} -func (*GetJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *GetJobRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for the CancelJob method. -type CancelJobRequest struct { - // Required. The name of the job to cancel. - // - // Authorization: requires `Editor` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *CancelJobRequest) Reset() { *m = CancelJobRequest{} } -func (m *CancelJobRequest) String() string { return proto.CompactTextString(m) } -func (*CancelJobRequest) ProtoMessage() {} -func (*CancelJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *CancelJobRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*TrainingInput)(nil), "google.cloud.ml.v1.TrainingInput") - proto.RegisterType((*HyperparameterSpec)(nil), "google.cloud.ml.v1.HyperparameterSpec") - proto.RegisterType((*ParameterSpec)(nil), "google.cloud.ml.v1.ParameterSpec") - proto.RegisterType((*HyperparameterOutput)(nil), "google.cloud.ml.v1.HyperparameterOutput") - proto.RegisterType((*HyperparameterOutput_HyperparameterMetric)(nil), "google.cloud.ml.v1.HyperparameterOutput.HyperparameterMetric") - proto.RegisterType((*TrainingOutput)(nil), "google.cloud.ml.v1.TrainingOutput") - proto.RegisterType((*PredictionInput)(nil), "google.cloud.ml.v1.PredictionInput") - proto.RegisterType((*PredictionOutput)(nil), "google.cloud.ml.v1.PredictionOutput") - proto.RegisterType((*Job)(nil), "google.cloud.ml.v1.Job") - proto.RegisterType((*CreateJobRequest)(nil), "google.cloud.ml.v1.CreateJobRequest") - proto.RegisterType((*ListJobsRequest)(nil), "google.cloud.ml.v1.ListJobsRequest") - proto.RegisterType((*ListJobsResponse)(nil), "google.cloud.ml.v1.ListJobsResponse") - proto.RegisterType((*GetJobRequest)(nil), "google.cloud.ml.v1.GetJobRequest") - proto.RegisterType((*CancelJobRequest)(nil), "google.cloud.ml.v1.CancelJobRequest") - proto.RegisterEnum("google.cloud.ml.v1.TrainingInput_ScaleTier", TrainingInput_ScaleTier_name, TrainingInput_ScaleTier_value) - proto.RegisterEnum("google.cloud.ml.v1.HyperparameterSpec_GoalType", HyperparameterSpec_GoalType_name, HyperparameterSpec_GoalType_value) - proto.RegisterEnum("google.cloud.ml.v1.ParameterSpec_ParameterType", ParameterSpec_ParameterType_name, ParameterSpec_ParameterType_value) - proto.RegisterEnum("google.cloud.ml.v1.ParameterSpec_ScaleType", ParameterSpec_ScaleType_name, ParameterSpec_ScaleType_value) - proto.RegisterEnum("google.cloud.ml.v1.PredictionInput_DataFormat", PredictionInput_DataFormat_name, PredictionInput_DataFormat_value) - proto.RegisterEnum("google.cloud.ml.v1.Job_State", Job_State_name, Job_State_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for JobService service - -type JobServiceClient interface { - // Creates a training or a batch prediction job. - CreateJob(ctx context.Context, in *CreateJobRequest, opts ...grpc.CallOption) (*Job, error) - // Lists the jobs in the project. - ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) - // Describes a job. - GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) - // Cancels a running job. - CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) -} - -type jobServiceClient struct { - cc *grpc.ClientConn -} - -func NewJobServiceClient(cc *grpc.ClientConn) JobServiceClient { - return &jobServiceClient{cc} -} - -func (c *jobServiceClient) CreateJob(ctx context.Context, in *CreateJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.JobService/CreateJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { - out := new(ListJobsResponse) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.JobService/ListJobs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.JobService/GetJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.JobService/CancelJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for JobService service - -type JobServiceServer interface { - // Creates a training or a batch prediction job. - CreateJob(context.Context, *CreateJobRequest) (*Job, error) - // Lists the jobs in the project. - ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) - // Describes a job. - GetJob(context.Context, *GetJobRequest) (*Job, error) - // Cancels a running job. - CancelJob(context.Context, *CancelJobRequest) (*google_protobuf1.Empty, error) -} - -func RegisterJobServiceServer(s *grpc.Server, srv JobServiceServer) { - s.RegisterService(&_JobService_serviceDesc, srv) -} - -func _JobService_CreateJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).CreateJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.JobService/CreateJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).CreateJob(ctx, req.(*CreateJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListJobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).ListJobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.JobService/ListJobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).ListJobs(ctx, req.(*ListJobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).GetJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.JobService/GetJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).GetJob(ctx, req.(*GetJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_CancelJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).CancelJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.JobService/CancelJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).CancelJob(ctx, req.(*CancelJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _JobService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.ml.v1.JobService", - HandlerType: (*JobServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateJob", - Handler: _JobService_CreateJob_Handler, - }, - { - MethodName: "ListJobs", - Handler: _JobService_ListJobs_Handler, - }, - { - MethodName: "GetJob", - Handler: _JobService_GetJob_Handler, - }, - { - MethodName: "CancelJob", - Handler: _JobService_CancelJob_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/ml/v1/job_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/ml/v1/job_service.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2070 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xdb, 0x6e, 0x1b, 0xc9, - 0x11, 0x15, 0xaf, 0x22, 0x8b, 0x12, 0x39, 0x6e, 0x5b, 0x36, 0x4d, 0xdb, 0x6b, 0x79, 0xe4, 0x38, - 0xb2, 0x17, 0x21, 0x21, 0xed, 0x06, 0xc8, 0x7a, 0xb1, 0x48, 0x28, 0x72, 0x2c, 0x51, 0x10, 0x29, - 0xa6, 0x39, 0x74, 0x36, 0x46, 0x90, 0x49, 0x93, 0x6c, 0xd3, 0x23, 0xcf, 0x2d, 0x33, 0x4d, 0x45, - 0xda, 0x85, 0x81, 0x20, 0x08, 0xf2, 0x03, 0x79, 0x0f, 0xf2, 0x4d, 0xc9, 0x1f, 0x04, 0x01, 0xf2, - 0x01, 0x79, 0x0e, 0x10, 0xf4, 0x85, 0xc3, 0x8b, 0x28, 0xd9, 0x48, 0xde, 0xd8, 0xa7, 0x4e, 0x55, - 0x75, 0x57, 0x55, 0x57, 0xd7, 0x10, 0x9e, 0x8e, 0x7d, 0x7f, 0xec, 0xd0, 0xda, 0xd0, 0xf1, 0x27, - 0xa3, 0x9a, 0xeb, 0xd4, 0xce, 0xf7, 0x6a, 0x67, 0xfe, 0xc0, 0x8a, 0x68, 0x78, 0x6e, 0x0f, 0x69, - 0x35, 0x08, 0x7d, 0xe6, 0x23, 0x24, 0x59, 0x55, 0xc1, 0xaa, 0xba, 0x4e, 0xf5, 0x7c, 0xaf, 0xf2, - 0x50, 0x69, 0x92, 0xc0, 0xae, 0x11, 0xcf, 0xf3, 0x19, 0x61, 0xb6, 0xef, 0x45, 0x52, 0xa3, 0xb2, - 0x35, 0x2f, 0x9d, 0xb0, 0x77, 0x0a, 0x7e, 0xa0, 0x60, 0xb1, 0x1a, 0x4c, 0xde, 0xd6, 0xa8, 0x1b, - 0xb0, 0x4b, 0x25, 0x7c, 0xbc, 0x2c, 0x64, 0xb6, 0x4b, 0x23, 0x46, 0xdc, 0x40, 0x12, 0xf4, 0x3f, - 0x66, 0x60, 0xd3, 0x0c, 0x89, 0xed, 0xd9, 0xde, 0xb8, 0xe5, 0x05, 0x13, 0x86, 0x8e, 0x01, 0xa2, - 0x21, 0x71, 0xa8, 0xc5, 0x6c, 0x1a, 0x96, 0x13, 0xdb, 0x89, 0xdd, 0xe2, 0xfe, 0xe7, 0xd5, 0xab, - 0xbb, 0xad, 0x2e, 0xa8, 0x55, 0x7b, 0x5c, 0xc7, 0xb4, 0x69, 0x88, 0xf3, 0xd1, 0xf4, 0x27, 0x7a, - 0x0c, 0x05, 0x97, 0x44, 0x8c, 0x86, 0x16, 0xbb, 0x0c, 0x68, 0x39, 0xb9, 0x9d, 0xd8, 0xcd, 0x63, - 0x90, 0x90, 0x79, 0x19, 0x50, 0x4e, 0xf8, 0x9d, 0x1f, 0xbe, 0x9f, 0x12, 0x52, 0x92, 0x20, 0x21, - 0x41, 0xd8, 0x87, 0xad, 0x80, 0x84, 0xc4, 0xa5, 0xdc, 0x08, 0x8f, 0xe0, 0x94, 0x9a, 0x16, 0xd4, - 0xdb, 0xb1, 0xb0, 0x27, 0x64, 0x42, 0xe7, 0x09, 0x6c, 0x28, 0xa3, 0x43, 0x7f, 0xe2, 0xb1, 0x72, - 0x66, 0x3b, 0xb1, 0x9b, 0xc2, 0xca, 0x51, 0x83, 0x43, 0xe8, 0x4b, 0xb8, 0x7b, 0xc5, 0xac, 0x24, - 0x67, 0x05, 0xf9, 0xce, 0x92, 0x5d, 0xa9, 0xf5, 0x04, 0x36, 0x02, 0x32, 0x7c, 0x4f, 0xc6, 0xd4, - 0x9a, 0x84, 0x76, 0x54, 0x5e, 0xdf, 0x4e, 0xed, 0xe6, 0x71, 0x41, 0x61, 0xfd, 0xd0, 0x8e, 0xd0, - 0x0e, 0x6c, 0x06, 0x97, 0xec, 0x9d, 0xef, 0x59, 0xae, 0x3f, 0x9a, 0x38, 0xb4, 0x9c, 0x13, 0xfb, - 0xdc, 0x90, 0x60, 0x5b, 0x60, 0x08, 0x41, 0x9a, 0x84, 0xe3, 0xa8, 0x0c, 0x42, 0x5f, 0xfc, 0x46, - 0x5d, 0x28, 0xbd, 0xbb, 0x0c, 0x68, 0x18, 0x3b, 0x8e, 0xca, 0x1b, 0xdb, 0x89, 0xdd, 0xc2, 0xfe, - 0xb3, 0x55, 0xb1, 0x3f, 0x5a, 0xa0, 0xf6, 0x02, 0x3a, 0xc4, 0xcb, 0xea, 0xe8, 0x2e, 0x64, 0x43, - 0x3a, 0xb6, 0x7d, 0xaf, 0x5c, 0x14, 0x7b, 0x50, 0x2b, 0x74, 0x0f, 0xd6, 0x79, 0x39, 0x8e, 0xec, - 0xb0, 0xac, 0x49, 0xc1, 0x99, 0x3f, 0x68, 0xda, 0x21, 0xfa, 0x21, 0x94, 0xc2, 0x89, 0xc7, 0x2b, - 0xc4, 0x3a, 0xa7, 0x61, 0xc4, 0x35, 0x4b, 0x82, 0x50, 0x54, 0xf0, 0x6b, 0x89, 0xea, 0x5d, 0xc8, - 0xc7, 0xe9, 0x46, 0x79, 0xc8, 0x1c, 0xd4, 0x7b, 0xad, 0x86, 0xb6, 0x86, 0x8a, 0x00, 0x3d, 0xb3, - 0xde, 0x69, 0xd6, 0x71, 0xd3, 0xda, 0xd3, 0x12, 0x68, 0x13, 0xf2, 0x5d, 0x6c, 0xb4, 0x5b, 0xfd, - 0xb6, 0xb5, 0xa7, 0xa5, 0xf8, 0x52, 0x30, 0xad, 0xc3, 0x6e, 0x5f, 0xcb, 0x22, 0x80, 0x6c, 0xa3, - 0xdf, 0x33, 0x4f, 0xdb, 0x5a, 0x46, 0xff, 0x47, 0x12, 0xd0, 0xd5, 0x33, 0xa1, 0x06, 0xa4, 0xc7, - 0x3e, 0x71, 0x54, 0x15, 0xd6, 0x3e, 0x2d, 0x12, 0xd5, 0x43, 0x9f, 0x38, 0xbc, 0x10, 0xb0, 0x50, - 0x46, 0x5f, 0x41, 0x56, 0xc8, 0xa3, 0x72, 0x72, 0x3b, 0xb5, 0x5b, 0xd8, 0x7f, 0xb2, 0xca, 0x4c, - 0x77, 0x21, 0x96, 0x4a, 0x01, 0x3d, 0x02, 0x70, 0xc9, 0x85, 0xc5, 0x42, 0x9b, 0x38, 0x91, 0xa8, - 0xce, 0x0c, 0xce, 0xbb, 0xe4, 0xc2, 0x14, 0x00, 0xaa, 0xc2, 0x6d, 0x2e, 0xe6, 0x64, 0xc7, 0xa1, - 0xce, 0x94, 0x97, 0x16, 0xbc, 0x5b, 0x2e, 0xb9, 0xe8, 0x2a, 0x89, 0xe2, 0xbf, 0x84, 0xfb, 0x8b, - 0x49, 0xb2, 0x5c, 0xca, 0x42, 0x7b, 0x68, 0x31, 0x32, 0x16, 0x55, 0x9a, 0xc7, 0xf7, 0x16, 0x09, - 0x6d, 0x21, 0x37, 0xc9, 0x58, 0xaf, 0x43, 0x6e, 0x7a, 0x2e, 0x74, 0x1f, 0xb6, 0x0e, 0x4f, 0xeb, - 0x27, 0x96, 0xf9, 0xcb, 0xae, 0x61, 0xf5, 0x3b, 0xbd, 0xae, 0xd1, 0x68, 0xbd, 0x6a, 0x19, 0x4d, - 0x6d, 0x0d, 0x6d, 0x40, 0xae, 0x5d, 0xff, 0xb6, 0xd5, 0x6e, 0xbd, 0x31, 0xb4, 0x84, 0x58, 0xb5, - 0x3a, 0x72, 0x95, 0xd4, 0xff, 0x9a, 0x86, 0xcd, 0x85, 0x73, 0xa2, 0x1f, 0x40, 0x71, 0xb6, 0x17, - 0x8f, 0xb8, 0x54, 0x44, 0x3a, 0x8f, 0x37, 0x63, 0xb4, 0x43, 0x5c, 0xca, 0xd3, 0x10, 0xdf, 0xb9, - 0x6b, 0xd2, 0xb0, 0x60, 0x77, 0xb6, 0x92, 0x69, 0xe0, 0xca, 0xe8, 0x01, 0xe4, 0x5d, 0xdb, 0xb3, - 0xce, 0x89, 0x33, 0x91, 0x9d, 0x20, 0x81, 0x73, 0xae, 0xed, 0xbd, 0xe6, 0x6b, 0x21, 0x24, 0x17, - 0x4a, 0x98, 0x52, 0x42, 0x72, 0x21, 0x85, 0x3f, 0x02, 0x34, 0x24, 0x8c, 0x8e, 0xfd, 0xd0, 0x1e, - 0x12, 0x47, 0x92, 0xa2, 0x72, 0x46, 0x5c, 0x9e, 0x5b, 0x73, 0x12, 0xc1, 0x8e, 0x78, 0x19, 0x8f, - 0xec, 0x68, 0x18, 0x52, 0x46, 0xa7, 0xdc, 0xec, 0x76, 0x6a, 0x37, 0x81, 0x8b, 0x53, 0x58, 0x11, - 0x67, 0x9d, 0x8e, 0x1f, 0x6e, 0xfd, 0xfa, 0x4e, 0xb7, 0x78, 0x38, 0x59, 0xfa, 0xfc, 0x60, 0xaa, - 0xd3, 0x5d, 0x06, 0x54, 0x1f, 0xcf, 0x85, 0x56, 0xe4, 0xe8, 0x33, 0xa8, 0x74, 0xeb, 0xb8, 0xde, - 0x36, 0x4c, 0x03, 0xaf, 0x4a, 0x14, 0x40, 0xb6, 0x79, 0xda, 0x3f, 0x38, 0xe1, 0x69, 0x2a, 0xc0, - 0x7a, 0xab, 0x63, 0x1a, 0x87, 0x06, 0xd6, 0x92, 0xa8, 0x04, 0x85, 0x46, 0xdd, 0x34, 0x0e, 0x4f, - 0x71, 0xab, 0x51, 0x3f, 0xd1, 0x52, 0x3c, 0x89, 0xcd, 0x56, 0xaf, 0x81, 0x0d, 0xd3, 0xd0, 0xd2, - 0xfa, 0xaf, 0xa6, 0x77, 0x8f, 0x3b, 0xc9, 0x41, 0xba, 0x73, 0xda, 0x31, 0xb4, 0x35, 0xb4, 0x05, - 0xb7, 0xfa, 0x9d, 0x96, 0x69, 0x9d, 0xb4, 0x3a, 0x46, 0x1d, 0x5b, 0xbd, 0x46, 0x5d, 0x58, 0x46, - 0x50, 0x94, 0xf0, 0xe9, 0xa1, 0xc2, 0x92, 0xa8, 0x02, 0x77, 0x05, 0x86, 0x8d, 0xd7, 0x06, 0xee, - 0x19, 0x73, 0xb2, 0x94, 0xfe, 0xa7, 0x34, 0xdc, 0x59, 0xbc, 0x51, 0xa7, 0x13, 0xc6, 0x5f, 0x85, - 0xfb, 0x90, 0x13, 0xd5, 0x6d, 0xd9, 0x23, 0x55, 0x23, 0xeb, 0x62, 0xdd, 0x1a, 0xa1, 0xf1, 0xd5, - 0xce, 0x25, 0x2f, 0xda, 0x37, 0x1f, 0xbf, 0xaf, 0xd2, 0xfa, 0x12, 0x18, 0x19, 0x1e, 0x0b, 0x2f, - 0xaf, 0x36, 0xb4, 0xdf, 0xc0, 0xc6, 0x5b, 0xdb, 0x23, 0x8e, 0xba, 0x35, 0xa2, 0x4e, 0xfe, 0x77, - 0x2f, 0xf2, 0x6a, 0xe1, 0x82, 0x30, 0x29, 0x17, 0xe8, 0xd7, 0x50, 0x20, 0xce, 0xd4, 0x3e, 0xbf, - 0xc8, 0xa9, 0xff, 0xdf, 0x01, 0x10, 0x47, 0x99, 0x8f, 0x2a, 0xa3, 0xe5, 0xe8, 0x2a, 0xbf, 0x3b, - 0xb0, 0xc9, 0xd4, 0x6b, 0x6a, 0x45, 0x8c, 0x06, 0x22, 0xc4, 0x29, 0xbc, 0x31, 0x05, 0x7b, 0x8c, - 0x06, 0xbc, 0xae, 0xfd, 0xc1, 0x19, 0x1d, 0x32, 0xfb, 0x9c, 0x2e, 0x5c, 0xa3, 0x62, 0x0c, 0x8b, - 0xc2, 0xae, 0x1c, 0x2c, 0x7b, 0x91, 0x01, 0x45, 0x1a, 0xa4, 0xde, 0xd3, 0x4b, 0x95, 0x3e, 0xfe, - 0x13, 0xdd, 0x81, 0xcc, 0xcc, 0x50, 0x1e, 0xcb, 0xc5, 0xcb, 0xe4, 0x4f, 0x12, 0xfa, 0xbf, 0x13, - 0x50, 0x9c, 0x3e, 0xf0, 0xaa, 0x04, 0xf6, 0x61, 0x6b, 0xe8, 0xbb, 0x81, 0x43, 0x19, 0x1d, 0xc9, - 0x56, 0xa7, 0x9e, 0x4c, 0xb9, 0xd9, 0xdb, 0xb1, 0x50, 0x74, 0x3b, 0xf9, 0x62, 0xfe, 0x0c, 0xb2, - 0xaa, 0x29, 0xca, 0x92, 0xd8, 0xfd, 0xd4, 0x58, 0x62, 0xa5, 0x87, 0x5e, 0xc0, 0xad, 0xa1, 0xef, - 0x45, 0x13, 0x97, 0x8e, 0x2c, 0xd7, 0xb1, 0x26, 0x9e, 0xcd, 0x22, 0xd5, 0x21, 0x4a, 0x53, 0x41, - 0xdb, 0xe9, 0x73, 0x18, 0xfd, 0x14, 0x1e, 0xda, 0x91, 0xb5, 0xd4, 0x62, 0xd9, 0x44, 0x84, 0xf5, - 0xcc, 0x1f, 0x88, 0xfe, 0x95, 0xc3, 0xf7, 0xed, 0x68, 0xd1, 0xa3, 0x29, 0x18, 0xc7, 0xfe, 0x40, - 0xff, 0x5b, 0x0a, 0x4a, 0xdd, 0x90, 0x8e, 0xec, 0x21, 0x1f, 0xbc, 0xe4, 0x3c, 0xf4, 0x18, 0xc0, - 0xf5, 0x47, 0xd4, 0x99, 0xeb, 0x8f, 0x47, 0x6b, 0x38, 0x2f, 0x30, 0xd1, 0x1d, 0x77, 0x60, 0x43, - 0x3d, 0x97, 0x92, 0x92, 0x54, 0x94, 0x82, 0x42, 0x05, 0x09, 0x41, 0x6a, 0x12, 0xda, 0xe5, 0xbc, - 0x92, 0xf1, 0x05, 0x3a, 0x85, 0xc2, 0x88, 0x30, 0x62, 0xbd, 0xf5, 0x43, 0x97, 0x30, 0x71, 0xa8, - 0xe2, 0x7e, 0x75, 0x65, 0x03, 0x5a, 0xdc, 0x53, 0xb5, 0x49, 0x18, 0x79, 0x25, 0xb4, 0x30, 0x8c, - 0xe2, 0xdf, 0x7c, 0x9a, 0xb2, 0xb9, 0xdc, 0x0a, 0x08, 0x7b, 0x27, 0xcb, 0x37, 0x8f, 0x41, 0x40, - 0x5d, 0x8e, 0x70, 0x82, 0x2f, 0xc2, 0x2b, 0x18, 0xea, 0xc9, 0x01, 0x09, 0x71, 0x06, 0xda, 0x05, - 0x8d, 0xf7, 0xe1, 0x85, 0xf1, 0x49, 0x4e, 0x44, 0x45, 0x97, 0x5c, 0xfc, 0x62, 0x6e, 0x82, 0x9a, - 0x4d, 0x17, 0xeb, 0x0b, 0xd3, 0xc5, 0x8a, 0x21, 0x22, 0xb7, 0x72, 0x88, 0x78, 0x0d, 0x30, 0x3b, - 0x06, 0x7a, 0x00, 0xf7, 0x9a, 0x75, 0xb3, 0x6e, 0xbd, 0x3a, 0xc5, 0xed, 0xba, 0xb9, 0xd4, 0x2b, - 0x73, 0x90, 0x36, 0x8d, 0x6f, 0x4d, 0x39, 0x51, 0x98, 0xaf, 0x2c, 0x6c, 0x34, 0x4e, 0x71, 0x53, - 0x4b, 0xf2, 0xf6, 0x16, 0x2f, 0xad, 0xc3, 0x37, 0xad, 0xae, 0x96, 0x3a, 0x28, 0xc1, 0xa6, 0xcc, - 0x97, 0x72, 0xaf, 0xff, 0x25, 0x01, 0xda, 0x2c, 0x80, 0xaa, 0x98, 0x97, 0x22, 0x91, 0xb8, 0x12, - 0x89, 0xe7, 0xa0, 0x05, 0xb1, 0x92, 0x8a, 0x44, 0x52, 0x44, 0xa2, 0x34, 0xc3, 0x65, 0x28, 0x1e, - 0x43, 0x81, 0x86, 0xa1, 0x3f, 0x8d, 0x57, 0x4a, 0xb0, 0x40, 0x40, 0x92, 0xf0, 0x08, 0xc0, 0xf3, - 0x47, 0xd4, 0x7a, 0xe7, 0x4f, 0x42, 0x39, 0x1e, 0x24, 0x70, 0x9e, 0x23, 0x47, 0x1c, 0xd0, 0xff, - 0x93, 0x81, 0xd4, 0xb1, 0x3f, 0x40, 0x5b, 0xc0, 0x27, 0xb1, 0x59, 0x87, 0xcd, 0x9c, 0xf9, 0x83, - 0xd6, 0x08, 0x1d, 0x43, 0x31, 0x6e, 0x0e, 0x22, 0x97, 0x62, 0x1f, 0xd7, 0xcc, 0x31, 0x0b, 0x43, - 0xf9, 0xd1, 0x1a, 0x8e, 0xfb, 0x8a, 0x2c, 0xe6, 0xee, 0xc2, 0xa9, 0xa4, 0x35, 0xd9, 0x46, 0x77, - 0x3e, 0xa1, 0xee, 0x8e, 0xd6, 0xe6, 0x0f, 0x2f, 0x2d, 0x7e, 0x0d, 0x85, 0x61, 0x48, 0x09, 0xe3, - 0xdf, 0x0b, 0xae, 0x1c, 0x11, 0x0a, 0xfb, 0x95, 0xa9, 0xb1, 0xe9, 0x77, 0x47, 0xd5, 0x9c, 0x7e, - 0x77, 0x60, 0x90, 0x74, 0x0e, 0xa0, 0xaf, 0x00, 0x22, 0x46, 0x42, 0x26, 0x75, 0x33, 0x1f, 0xd5, - 0xcd, 0x0b, 0xb6, 0x50, 0xfd, 0x31, 0xe4, 0xa8, 0x37, 0x92, 0x8a, 0xd9, 0x8f, 0x2a, 0xae, 0x53, - 0x6f, 0x24, 0xd4, 0xbe, 0x80, 0x4c, 0xc4, 0x08, 0x9b, 0x3e, 0xf7, 0x8f, 0x56, 0x9d, 0xfa, 0xd8, - 0x1f, 0x54, 0x7b, 0x9c, 0x84, 0x25, 0x97, 0xb7, 0x67, 0x99, 0x60, 0x97, 0x46, 0x11, 0x19, 0xc7, - 0x43, 0xbd, 0x00, 0xdb, 0x12, 0x43, 0x6d, 0x28, 0xc5, 0x69, 0x92, 0x75, 0x24, 0x6e, 0x7b, 0x61, - 0x5f, 0xbf, 0x29, 0x4f, 0xb2, 0x1c, 0x8f, 0x12, 0x38, 0xce, 0xb1, 0x2a, 0xd0, 0x1e, 0xdc, 0x9a, - 0xcb, 0x94, 0x32, 0x08, 0xc2, 0xe0, 0xd3, 0x9b, 0x53, 0x15, 0x9b, 0x9c, 0x4b, 0xb5, 0xc4, 0xf4, - 0xdf, 0x27, 0x20, 0x23, 0x4e, 0xc6, 0xe7, 0x85, 0x9e, 0x59, 0x37, 0x57, 0x4c, 0x25, 0x3f, 0xef, - 0x1b, 0x7d, 0xa3, 0x19, 0x4f, 0xef, 0xdd, 0x3a, 0x6e, 0x75, 0x0e, 0xb5, 0x24, 0x1f, 0x52, 0x70, - 0xbf, 0xd3, 0xe1, 0x0b, 0x31, 0xca, 0xf7, 0xfa, 0x8d, 0x86, 0x61, 0x34, 0x8d, 0xa6, 0x96, 0xe6, - 0x6a, 0xaf, 0xea, 0xad, 0x13, 0xa3, 0xa9, 0x65, 0xf8, 0x47, 0x40, 0xa3, 0xde, 0x69, 0x18, 0x27, - 0x27, 0x9c, 0x9a, 0xe5, 0x54, 0xb5, 0x36, 0x9a, 0xda, 0xfa, 0xc1, 0x3a, 0x64, 0x44, 0xd9, 0x1d, - 0xe4, 0x20, 0x2b, 0x4f, 0xa5, 0xf7, 0x41, 0x6b, 0x88, 0x9a, 0x38, 0xf6, 0x07, 0x98, 0xfe, 0x76, - 0x42, 0x23, 0xd1, 0x5e, 0x02, 0x12, 0x52, 0xf5, 0xba, 0xe4, 0xb1, 0x5a, 0xa1, 0xe7, 0x90, 0xe2, - 0x9d, 0x5c, 0xde, 0x80, 0x7b, 0xd7, 0x64, 0x0f, 0x73, 0x8e, 0xfe, 0x01, 0x4a, 0x27, 0x76, 0xc4, - 0x8e, 0xfd, 0x41, 0xf4, 0x31, 0xab, 0x77, 0x21, 0xfb, 0xd6, 0x76, 0x18, 0x0d, 0xd5, 0x43, 0xa8, - 0x56, 0xfc, 0xe2, 0x06, 0xfc, 0x6b, 0x8f, 0xf9, 0xef, 0xa9, 0xa7, 0x3e, 0x39, 0xf3, 0x1c, 0x31, - 0x39, 0xc0, 0xa7, 0x56, 0x21, 0x8e, 0xec, 0xef, 0x64, 0xf5, 0x66, 0x70, 0x8e, 0x03, 0x3d, 0xfb, - 0x3b, 0x3e, 0x11, 0x6a, 0x33, 0xf7, 0x51, 0xe0, 0x7b, 0x11, 0x45, 0x9f, 0x43, 0xfa, 0xcc, 0x1f, - 0x44, 0xe5, 0x84, 0x78, 0x0c, 0xaf, 0xdd, 0xbe, 0x20, 0xa1, 0x67, 0x50, 0xf2, 0xe8, 0x05, 0x6f, - 0x50, 0xf1, 0x0e, 0xe4, 0xee, 0x36, 0x39, 0xdc, 0x9d, 0xee, 0x42, 0xdf, 0x81, 0xcd, 0x43, 0xca, - 0xe6, 0x62, 0x87, 0x20, 0x3d, 0x37, 0xcb, 0x8b, 0xdf, 0xfa, 0x33, 0xd0, 0x1a, 0xc4, 0x1b, 0x52, - 0xe7, 0x66, 0xde, 0xfe, 0xbf, 0x52, 0x00, 0xc7, 0xfe, 0xa0, 0x27, 0xff, 0xab, 0x40, 0x13, 0xc8, - 0xc7, 0xa9, 0x41, 0x2b, 0xeb, 0x6e, 0x39, 0x73, 0x95, 0xeb, 0x4e, 0xa5, 0x3f, 0xff, 0xc3, 0xdf, - 0xff, 0xf9, 0xe7, 0xe4, 0x8e, 0xfe, 0xb0, 0x76, 0xbe, 0x57, 0xfb, 0x5e, 0x46, 0xfe, 0x9b, 0x20, - 0xf4, 0xf9, 0xec, 0x12, 0xd5, 0x5e, 0x7c, 0xa8, 0xf1, 0x53, 0xbf, 0xe4, 0xa9, 0x43, 0xdf, 0x43, - 0x6e, 0x1a, 0x3b, 0xb4, 0xb2, 0x31, 0x2d, 0x25, 0xb6, 0xf2, 0xf4, 0x66, 0x92, 0x0c, 0xbf, 0xfe, - 0x54, 0xec, 0xe0, 0x33, 0x74, 0xe3, 0x0e, 0xd0, 0x19, 0x64, 0x65, 0x3c, 0xd1, 0xca, 0x0e, 0xbb, - 0x10, 0xeb, 0xeb, 0x4f, 0xbb, 0xe8, 0x8b, 0xc7, 0x76, 0xce, 0x93, 0x70, 0x54, 0x7b, 0xf1, 0x01, - 0x5d, 0x42, 0x3e, 0x4e, 0xcb, 0x35, 0xf1, 0x5d, 0xca, 0x5a, 0xe5, 0xee, 0x95, 0x36, 0x67, 0xb8, - 0x01, 0xbb, 0xd4, 0xab, 0xc2, 0xe1, 0xae, 0xbe, 0x73, 0x93, 0xc3, 0x97, 0x43, 0x61, 0xee, 0x65, - 0xe2, 0xc5, 0x01, 0x85, 0xca, 0xd0, 0x77, 0xaf, 0xb8, 0x24, 0x81, 0x5d, 0x3d, 0xdf, 0x3b, 0x28, - 0xcd, 0x8a, 0xa0, 0xcb, 0xfd, 0x74, 0x13, 0x6f, 0xbe, 0x54, 0xd4, 0xb1, 0xef, 0x10, 0x6f, 0x5c, - 0xf5, 0xc3, 0x71, 0x6d, 0x4c, 0x3d, 0xb1, 0x8b, 0x9a, 0x14, 0x91, 0xc0, 0x8e, 0xe6, 0xff, 0xf6, - 0xfa, 0xda, 0x75, 0x06, 0x59, 0x41, 0xf8, 0xe2, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x7b, - 0x72, 0xd5, 0x16, 0x13, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/model_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/model_service.pb.go deleted file mode 100644 index c05f8adf..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/model_service.pb.go +++ /dev/null @@ -1,1049 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1/model_service.proto - -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/serviceconfig" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Represents a machine learning solution. -// -// A model can have multiple versions, each of which is a deployed, trained -// model ready to receive prediction requests. The model itself is just a -// container. -type Model struct { - // Required. The name specified for the model when it was created. - // - // The model name must be unique within the project it is created in. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The description specified for the model when it was created. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Output only. The default version of the model. This version will be used to - // handle prediction requests that do not specify a version. - // - // You can change the default version by calling - // [projects.methods.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault). - DefaultVersion *Version `protobuf:"bytes,3,opt,name=default_version,json=defaultVersion" json:"default_version,omitempty"` - // Optional. The list of regions where the model is going to be deployed. - // Currently only one region per model is supported. - // Defaults to 'us-central1' if nothing is set. - Regions []string `protobuf:"bytes,4,rep,name=regions" json:"regions,omitempty"` - // Optional. If true, enables StackDriver Logging for online prediction. - // Default is false. - OnlinePredictionLogging bool `protobuf:"varint,5,opt,name=online_prediction_logging,json=onlinePredictionLogging" json:"online_prediction_logging,omitempty"` -} - -func (m *Model) Reset() { *m = Model{} } -func (m *Model) String() string { return proto.CompactTextString(m) } -func (*Model) ProtoMessage() {} -func (*Model) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Model) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Model) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Model) GetDefaultVersion() *Version { - if m != nil { - return m.DefaultVersion - } - return nil -} - -func (m *Model) GetRegions() []string { - if m != nil { - return m.Regions - } - return nil -} - -func (m *Model) GetOnlinePredictionLogging() bool { - if m != nil { - return m.OnlinePredictionLogging - } - return false -} - -// Represents a version of the model. -// -// Each version is a trained model deployed in the cloud, ready to handle -// prediction requests. A model can have multiple versions. You can get -// information about all of the versions of a given model by calling -// [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list). -type Version struct { - // Required.The name specified for the version when it was created. - // - // The version name must be unique within the model it is created in. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The description specified for the version when it was created. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Output only. If true, this version will be used to handle prediction - // requests that do not specify a version. - // - // You can change the default version by calling - // [projects.methods.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault). - IsDefault bool `protobuf:"varint,3,opt,name=is_default,json=isDefault" json:"is_default,omitempty"` - // Required. The Google Cloud Storage location of the trained model used to - // create the version. See the - // [overview of model deployment](/ml/docs/concepts/deployment-overview) for - // more informaiton. - // - // When passing Version to - // [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create) - // the model service uses the specified location as the source of the model. - // Once deployed, the model version is hosted by the prediction service, so - // this location is useful only as a historical record. - DeploymentUri string `protobuf:"bytes,4,opt,name=deployment_uri,json=deploymentUri" json:"deployment_uri,omitempty"` - // Output only. The time the version was created. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. The time the version was last used for prediction. - LastUseTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=last_use_time,json=lastUseTime" json:"last_use_time,omitempty"` - // Optional. The Google Cloud ML runtime version to use for this deployment. - // If not set, Google Cloud ML will choose a version. - RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"` - // Optional. Manually select the number of nodes to use for serving the - // model. If unset (i.e., by default), the number of nodes used to serve - // the model automatically scales with traffic. However, care should be - // taken to ramp up traffic according to the model's ability to scale. If - // your model needs to handle bursts of traffic beyond it's ability to - // scale, it is recommended you set this field appropriately. - ManualScaling *ManualScaling `protobuf:"bytes,9,opt,name=manual_scaling,json=manualScaling" json:"manual_scaling,omitempty"` -} - -func (m *Version) Reset() { *m = Version{} } -func (m *Version) String() string { return proto.CompactTextString(m) } -func (*Version) ProtoMessage() {} -func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *Version) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Version) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Version) GetIsDefault() bool { - if m != nil { - return m.IsDefault - } - return false -} - -func (m *Version) GetDeploymentUri() string { - if m != nil { - return m.DeploymentUri - } - return "" -} - -func (m *Version) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Version) GetLastUseTime() *google_protobuf2.Timestamp { - if m != nil { - return m.LastUseTime - } - return nil -} - -func (m *Version) GetRuntimeVersion() string { - if m != nil { - return m.RuntimeVersion - } - return "" -} - -func (m *Version) GetManualScaling() *ManualScaling { - if m != nil { - return m.ManualScaling - } - return nil -} - -// Options for manually scaling a model. -type ManualScaling struct { - // The number of nodes to allocate for this model. These nodes are always up, - // starting from the time the model is deployed, so the cost of operating - // this model will be proportional to nodes * number of hours since - // deployment. - Nodes int32 `protobuf:"varint,1,opt,name=nodes" json:"nodes,omitempty"` -} - -func (m *ManualScaling) Reset() { *m = ManualScaling{} } -func (m *ManualScaling) String() string { return proto.CompactTextString(m) } -func (*ManualScaling) ProtoMessage() {} -func (*ManualScaling) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *ManualScaling) GetNodes() int32 { - if m != nil { - return m.Nodes - } - return 0 -} - -// Request message for the CreateModel method. -type CreateModelRequest struct { - // Required. The project name. - // - // Authorization: requires `Editor` role on the specified project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The model to create. - Model *Model `protobuf:"bytes,2,opt,name=model" json:"model,omitempty"` -} - -func (m *CreateModelRequest) Reset() { *m = CreateModelRequest{} } -func (m *CreateModelRequest) String() string { return proto.CompactTextString(m) } -func (*CreateModelRequest) ProtoMessage() {} -func (*CreateModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *CreateModelRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateModelRequest) GetModel() *Model { - if m != nil { - return m.Model - } - return nil -} - -// Request message for the ListModels method. -type ListModelsRequest struct { - // Required. The name of the project whose models are to be listed. - // - // Authorization: requires `Viewer` role on the specified project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. A page token to request the next page of results. - // - // You get the token from the `next_page_token` field of the response from - // the previous call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The number of models to retrieve per "page" of results. If there - // are more remaining results than this number, the response message will - // contain a valid value in the `next_page_token` field. - // - // The default value is 20, and the maximum page size is 100. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListModelsRequest) Reset() { *m = ListModelsRequest{} } -func (m *ListModelsRequest) String() string { return proto.CompactTextString(m) } -func (*ListModelsRequest) ProtoMessage() {} -func (*ListModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *ListModelsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListModelsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListModelsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for the ListModels method. -type ListModelsResponse struct { - // The list of models. - Models []*Model `protobuf:"bytes,1,rep,name=models" json:"models,omitempty"` - // Optional. Pass this token as the `page_token` field of the request for a - // subsequent call. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListModelsResponse) Reset() { *m = ListModelsResponse{} } -func (m *ListModelsResponse) String() string { return proto.CompactTextString(m) } -func (*ListModelsResponse) ProtoMessage() {} -func (*ListModelsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *ListModelsResponse) GetModels() []*Model { - if m != nil { - return m.Models - } - return nil -} - -func (m *ListModelsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for the GetModel method. -type GetModelRequest struct { - // Required. The name of the model. - // - // Authorization: requires `Viewer` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetModelRequest) Reset() { *m = GetModelRequest{} } -func (m *GetModelRequest) String() string { return proto.CompactTextString(m) } -func (*GetModelRequest) ProtoMessage() {} -func (*GetModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *GetModelRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for the DeleteModel method. -type DeleteModelRequest struct { - // Required. The name of the model. - // - // Authorization: requires `Editor` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteModelRequest) Reset() { *m = DeleteModelRequest{} } -func (m *DeleteModelRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteModelRequest) ProtoMessage() {} -func (*DeleteModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *DeleteModelRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Uploads the provided trained model version to Cloud Machine Learning. -type CreateVersionRequest struct { - // Required. The name of the model. - // - // Authorization: requires `Editor` role on the parent project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The version details. - Version *Version `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` -} - -func (m *CreateVersionRequest) Reset() { *m = CreateVersionRequest{} } -func (m *CreateVersionRequest) String() string { return proto.CompactTextString(m) } -func (*CreateVersionRequest) ProtoMessage() {} -func (*CreateVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *CreateVersionRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateVersionRequest) GetVersion() *Version { - if m != nil { - return m.Version - } - return nil -} - -// Request message for the ListVersions method. -type ListVersionsRequest struct { - // Required. The name of the model for which to list the version. - // - // Authorization: requires `Viewer` role on the parent project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. A page token to request the next page of results. - // - // You get the token from the `next_page_token` field of the response from - // the previous call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The number of versions to retrieve per "page" of results. If - // there are more remaining results than this number, the response message - // will contain a valid value in the `next_page_token` field. - // - // The default value is 20, and the maximum page size is 100. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListVersionsRequest) Reset() { *m = ListVersionsRequest{} } -func (m *ListVersionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListVersionsRequest) ProtoMessage() {} -func (*ListVersionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *ListVersionsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListVersionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListVersionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for the ListVersions method. -type ListVersionsResponse struct { - // The list of versions. - Versions []*Version `protobuf:"bytes,1,rep,name=versions" json:"versions,omitempty"` - // Optional. Pass this token as the `page_token` field of the request for a - // subsequent call. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListVersionsResponse) Reset() { *m = ListVersionsResponse{} } -func (m *ListVersionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListVersionsResponse) ProtoMessage() {} -func (*ListVersionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *ListVersionsResponse) GetVersions() []*Version { - if m != nil { - return m.Versions - } - return nil -} - -func (m *ListVersionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for the GetVersion method. -type GetVersionRequest struct { - // Required. The name of the version. - // - // Authorization: requires `Viewer` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetVersionRequest) Reset() { *m = GetVersionRequest{} } -func (m *GetVersionRequest) String() string { return proto.CompactTextString(m) } -func (*GetVersionRequest) ProtoMessage() {} -func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *GetVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for the DeleteVerionRequest method. -type DeleteVersionRequest struct { - // Required. The name of the version. You can get the names of all the - // versions of a model by calling - // [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list). - // - // Authorization: requires `Editor` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteVersionRequest) Reset() { *m = DeleteVersionRequest{} } -func (m *DeleteVersionRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteVersionRequest) ProtoMessage() {} -func (*DeleteVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *DeleteVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for the SetDefaultVersion request. -type SetDefaultVersionRequest struct { - // Required. The name of the version to make the default for the model. You - // can get the names of all the versions of a model by calling - // [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list). - // - // Authorization: requires `Editor` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *SetDefaultVersionRequest) Reset() { *m = SetDefaultVersionRequest{} } -func (m *SetDefaultVersionRequest) String() string { return proto.CompactTextString(m) } -func (*SetDefaultVersionRequest) ProtoMessage() {} -func (*SetDefaultVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *SetDefaultVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*Model)(nil), "google.cloud.ml.v1.Model") - proto.RegisterType((*Version)(nil), "google.cloud.ml.v1.Version") - proto.RegisterType((*ManualScaling)(nil), "google.cloud.ml.v1.ManualScaling") - proto.RegisterType((*CreateModelRequest)(nil), "google.cloud.ml.v1.CreateModelRequest") - proto.RegisterType((*ListModelsRequest)(nil), "google.cloud.ml.v1.ListModelsRequest") - proto.RegisterType((*ListModelsResponse)(nil), "google.cloud.ml.v1.ListModelsResponse") - proto.RegisterType((*GetModelRequest)(nil), "google.cloud.ml.v1.GetModelRequest") - proto.RegisterType((*DeleteModelRequest)(nil), "google.cloud.ml.v1.DeleteModelRequest") - proto.RegisterType((*CreateVersionRequest)(nil), "google.cloud.ml.v1.CreateVersionRequest") - proto.RegisterType((*ListVersionsRequest)(nil), "google.cloud.ml.v1.ListVersionsRequest") - proto.RegisterType((*ListVersionsResponse)(nil), "google.cloud.ml.v1.ListVersionsResponse") - proto.RegisterType((*GetVersionRequest)(nil), "google.cloud.ml.v1.GetVersionRequest") - proto.RegisterType((*DeleteVersionRequest)(nil), "google.cloud.ml.v1.DeleteVersionRequest") - proto.RegisterType((*SetDefaultVersionRequest)(nil), "google.cloud.ml.v1.SetDefaultVersionRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ModelService service - -type ModelServiceClient interface { - // Creates a model which will later contain one or more versions. - // - // You must add at least one version before you can request predictions from - // the model. Add versions by calling - // [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create). - CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*Model, error) - // Lists the models in a project. - // - // Each project can contain multiple models, and each model can have multiple - // versions. - ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error) - // Gets information about a model, including its name, the description (if - // set), and the default version (if at least one version of the model has - // been deployed). - GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error) - // Deletes a model. - // - // You can only delete a model if there are no versions in it. You can delete - // versions by calling - // [projects.models.versions.delete](/ml/reference/rest/v1/projects.models.versions/delete). - DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Creates a new version of a model from a trained TensorFlow model. - // - // If the version created in the cloud by this call is the first deployed - // version of the specified model, it will be made the default version of the - // model. When you add a version to a model that already has one or more - // versions, the default version does not automatically change. If you want a - // new version to be the default, you must call - // [projects.models.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault). - CreateVersion(ctx context.Context, in *CreateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Gets basic information about all the versions of a model. - // - // If you expect that a model has a lot of versions, or if you need to handle - // only a limited number of results at a time, you can request that the list - // be retrieved in batches (called pages): - ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*ListVersionsResponse, error) - // Gets information about a model version. - // - // Models can have multiple versions. You can call - // [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list) - // to get the same information that this method returns for all of the - // versions of a model. - GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*Version, error) - // Deletes a model version. - // - // Each model can have multiple versions deployed and in use at any given - // time. Use this method to remove a single version. - // - // Note: You cannot delete the version that is set as the default version - // of the model unless it is the only remaining version. - DeleteVersion(ctx context.Context, in *DeleteVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Designates a version to be the default for the model. - // - // The default version is used for prediction requests made against the model - // that don't specify a version. - // - // The first version to be created for a model is automatically set as the - // default. You must make any subsequent changes to the default version - // setting manually using this method. - SetDefaultVersion(ctx context.Context, in *SetDefaultVersionRequest, opts ...grpc.CallOption) (*Version, error) -} - -type modelServiceClient struct { - cc *grpc.ClientConn -} - -func NewModelServiceClient(cc *grpc.ClientConn) ModelServiceClient { - return &modelServiceClient{cc} -} - -func (c *modelServiceClient) CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*Model, error) { - out := new(Model) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/CreateModel", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error) { - out := new(ListModelsResponse) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/ListModels", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error) { - out := new(Model) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/GetModel", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/DeleteModel", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) CreateVersion(ctx context.Context, in *CreateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/CreateVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*ListVersionsResponse, error) { - out := new(ListVersionsResponse) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/ListVersions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*Version, error) { - out := new(Version) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/GetVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) DeleteVersion(ctx context.Context, in *DeleteVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/DeleteVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) SetDefaultVersion(ctx context.Context, in *SetDefaultVersionRequest, opts ...grpc.CallOption) (*Version, error) { - out := new(Version) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ModelService/SetDefaultVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ModelService service - -type ModelServiceServer interface { - // Creates a model which will later contain one or more versions. - // - // You must add at least one version before you can request predictions from - // the model. Add versions by calling - // [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create). - CreateModel(context.Context, *CreateModelRequest) (*Model, error) - // Lists the models in a project. - // - // Each project can contain multiple models, and each model can have multiple - // versions. - ListModels(context.Context, *ListModelsRequest) (*ListModelsResponse, error) - // Gets information about a model, including its name, the description (if - // set), and the default version (if at least one version of the model has - // been deployed). - GetModel(context.Context, *GetModelRequest) (*Model, error) - // Deletes a model. - // - // You can only delete a model if there are no versions in it. You can delete - // versions by calling - // [projects.models.versions.delete](/ml/reference/rest/v1/projects.models.versions/delete). - DeleteModel(context.Context, *DeleteModelRequest) (*google_longrunning.Operation, error) - // Creates a new version of a model from a trained TensorFlow model. - // - // If the version created in the cloud by this call is the first deployed - // version of the specified model, it will be made the default version of the - // model. When you add a version to a model that already has one or more - // versions, the default version does not automatically change. If you want a - // new version to be the default, you must call - // [projects.models.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault). - CreateVersion(context.Context, *CreateVersionRequest) (*google_longrunning.Operation, error) - // Gets basic information about all the versions of a model. - // - // If you expect that a model has a lot of versions, or if you need to handle - // only a limited number of results at a time, you can request that the list - // be retrieved in batches (called pages): - ListVersions(context.Context, *ListVersionsRequest) (*ListVersionsResponse, error) - // Gets information about a model version. - // - // Models can have multiple versions. You can call - // [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list) - // to get the same information that this method returns for all of the - // versions of a model. - GetVersion(context.Context, *GetVersionRequest) (*Version, error) - // Deletes a model version. - // - // Each model can have multiple versions deployed and in use at any given - // time. Use this method to remove a single version. - // - // Note: You cannot delete the version that is set as the default version - // of the model unless it is the only remaining version. - DeleteVersion(context.Context, *DeleteVersionRequest) (*google_longrunning.Operation, error) - // Designates a version to be the default for the model. - // - // The default version is used for prediction requests made against the model - // that don't specify a version. - // - // The first version to be created for a model is automatically set as the - // default. You must make any subsequent changes to the default version - // setting manually using this method. - SetDefaultVersion(context.Context, *SetDefaultVersionRequest) (*Version, error) -} - -func RegisterModelServiceServer(s *grpc.Server, srv ModelServiceServer) { - s.RegisterService(&_ModelService_serviceDesc, srv) -} - -func _ModelService_CreateModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateModelRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).CreateModel(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/CreateModel", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).CreateModel(ctx, req.(*CreateModelRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_ListModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListModelsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).ListModels(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/ListModels", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).ListModels(ctx, req.(*ListModelsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_GetModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetModelRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).GetModel(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/GetModel", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).GetModel(ctx, req.(*GetModelRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_DeleteModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteModelRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).DeleteModel(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/DeleteModel", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).DeleteModel(ctx, req.(*DeleteModelRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_CreateVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).CreateVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/CreateVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).CreateVersion(ctx, req.(*CreateVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_ListVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListVersionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).ListVersions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/ListVersions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).ListVersions(ctx, req.(*ListVersionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_GetVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).GetVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/GetVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).GetVersion(ctx, req.(*GetVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_DeleteVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).DeleteVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/DeleteVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).DeleteVersion(ctx, req.(*DeleteVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_SetDefaultVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetDefaultVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).SetDefaultVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ModelService/SetDefaultVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).SetDefaultVersion(ctx, req.(*SetDefaultVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ModelService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.ml.v1.ModelService", - HandlerType: (*ModelServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateModel", - Handler: _ModelService_CreateModel_Handler, - }, - { - MethodName: "ListModels", - Handler: _ModelService_ListModels_Handler, - }, - { - MethodName: "GetModel", - Handler: _ModelService_GetModel_Handler, - }, - { - MethodName: "DeleteModel", - Handler: _ModelService_DeleteModel_Handler, - }, - { - MethodName: "CreateVersion", - Handler: _ModelService_CreateVersion_Handler, - }, - { - MethodName: "ListVersions", - Handler: _ModelService_ListVersions_Handler, - }, - { - MethodName: "GetVersion", - Handler: _ModelService_GetVersion_Handler, - }, - { - MethodName: "DeleteVersion", - Handler: _ModelService_DeleteVersion_Handler, - }, - { - MethodName: "SetDefaultVersion", - Handler: _ModelService_SetDefaultVersion_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/ml/v1/model_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/ml/v1/model_service.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 996 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xcf, 0x6f, 0xe3, 0x44, - 0x14, 0x96, 0xdb, 0xa6, 0x4d, 0x5e, 0x36, 0xad, 0x3a, 0x14, 0xc8, 0x66, 0x29, 0x04, 0xaf, 0xda, - 0x86, 0x00, 0xb6, 0x52, 0x8a, 0x10, 0x59, 0x01, 0xd2, 0x52, 0x69, 0x39, 0xec, 0x8a, 0xca, 0xdd, - 0xe5, 0x80, 0x84, 0x2c, 0x6f, 0x32, 0x6b, 0x06, 0xec, 0x19, 0xe3, 0x19, 0x07, 0x58, 0x58, 0x21, - 0xc1, 0x91, 0x23, 0xdc, 0xf9, 0xa3, 0x38, 0x71, 0xe7, 0xc6, 0x99, 0x3b, 0x9a, 0x1f, 0x4e, 0xed, - 0xc4, 0x89, 0x0b, 0x12, 0x37, 0xcf, 0x9b, 0xef, 0xcd, 0xfb, 0xe6, 0x7d, 0xef, 0xbd, 0x31, 0x1c, - 0x87, 0x8c, 0x85, 0x11, 0x76, 0x27, 0x11, 0xcb, 0xa6, 0x6e, 0x1c, 0xb9, 0xb3, 0x91, 0x1b, 0xb3, - 0x29, 0x8e, 0x7c, 0x8e, 0xd3, 0x19, 0x99, 0x60, 0x27, 0x49, 0x99, 0x60, 0x08, 0x69, 0x9c, 0xa3, - 0x70, 0x4e, 0x1c, 0x39, 0xb3, 0x51, 0xef, 0x25, 0xe3, 0x1b, 0x24, 0xc4, 0x0d, 0x28, 0x65, 0x22, - 0x10, 0x84, 0x51, 0xae, 0x3d, 0x7a, 0xcf, 0x17, 0x77, 0x33, 0xf1, 0xb9, 0x31, 0xdf, 0x36, 0xe6, - 0x88, 0xd1, 0x30, 0xcd, 0x28, 0x25, 0x34, 0x74, 0x59, 0x82, 0xd3, 0x92, 0xef, 0x2b, 0x06, 0xa4, - 0x56, 0x8f, 0xb3, 0x27, 0xae, 0x20, 0x31, 0xe6, 0x22, 0x88, 0x13, 0x0d, 0xb0, 0xff, 0xb0, 0xa0, - 0xf1, 0x40, 0xd2, 0x44, 0x08, 0xb6, 0x68, 0x10, 0xe3, 0xae, 0xd5, 0xb7, 0x06, 0x2d, 0x4f, 0x7d, - 0xa3, 0x3e, 0xb4, 0xa7, 0x98, 0x4f, 0x52, 0x92, 0xc8, 0x43, 0xbb, 0x1b, 0x6a, 0xab, 0x68, 0x42, - 0xe7, 0xb0, 0x37, 0xc5, 0x4f, 0x82, 0x2c, 0x12, 0xfe, 0x0c, 0xa7, 0x5c, 0xa2, 0x36, 0xfb, 0xd6, - 0xa0, 0x7d, 0x7a, 0xcb, 0x59, 0xbe, 0xa8, 0xf3, 0x89, 0x86, 0x78, 0xbb, 0xc6, 0xc7, 0xac, 0x51, - 0x17, 0x76, 0x52, 0x1c, 0x4a, 0xde, 0xdd, 0xad, 0xfe, 0xe6, 0xa0, 0xe5, 0xe5, 0x4b, 0x34, 0x86, - 0x9b, 0x8c, 0x46, 0x84, 0x62, 0x3f, 0x49, 0xf1, 0x94, 0x4c, 0x64, 0x50, 0x3f, 0x62, 0x61, 0x48, - 0x68, 0xd8, 0x6d, 0xf4, 0xad, 0x41, 0xd3, 0x7b, 0x51, 0x03, 0x2e, 0xe6, 0xfb, 0xf7, 0xf5, 0xb6, - 0xfd, 0xf7, 0x06, 0xec, 0xe4, 0x11, 0xfe, 0xdb, 0xed, 0x0e, 0x01, 0x08, 0xf7, 0x0d, 0x59, 0x75, - 0xb1, 0xa6, 0xd7, 0x22, 0xfc, 0x5c, 0x1b, 0xd0, 0x11, 0xec, 0x4e, 0x71, 0x12, 0xb1, 0x6f, 0x63, - 0x4c, 0x85, 0x9f, 0xa5, 0xa4, 0xbb, 0xa5, 0xce, 0xe8, 0x5c, 0x59, 0x1f, 0xa5, 0x04, 0xdd, 0x81, - 0xf6, 0x24, 0xc5, 0x81, 0xc0, 0xbe, 0xcc, 0xbe, 0x62, 0xdd, 0x3e, 0xed, 0xe5, 0xf9, 0xc9, 0xa5, - 0x71, 0x1e, 0xe6, 0xd2, 0x78, 0xa0, 0xe1, 0xd2, 0x80, 0xde, 0x87, 0x4e, 0x14, 0x70, 0xe1, 0x67, - 0xdc, 0xb8, 0x6f, 0xd7, 0xba, 0xb7, 0xa5, 0xc3, 0x23, 0xae, 0xfd, 0x4f, 0x60, 0x2f, 0xcd, 0xa8, - 0xf4, 0x9c, 0x0b, 0xd4, 0x54, 0x24, 0x77, 0x8d, 0x39, 0xcf, 0xd0, 0x47, 0xb0, 0x1b, 0x07, 0x34, - 0x0b, 0x22, 0x9f, 0x4f, 0x82, 0x48, 0xa6, 0xb7, 0xa5, 0x22, 0xbd, 0x5a, 0x25, 0xe4, 0x03, 0x85, - 0xbc, 0xd4, 0x40, 0xaf, 0x13, 0x17, 0x97, 0xf6, 0x11, 0x74, 0x4a, 0xfb, 0xe8, 0x00, 0x1a, 0x94, - 0x4d, 0x31, 0x57, 0xd9, 0x6f, 0x78, 0x7a, 0x61, 0x7f, 0x06, 0xe8, 0x43, 0x75, 0x4f, 0x55, 0x7f, - 0x1e, 0xfe, 0x2a, 0xc3, 0x5c, 0xa0, 0x17, 0x60, 0x3b, 0x09, 0x52, 0x4c, 0x85, 0x91, 0xca, 0xac, - 0x90, 0x0b, 0x0d, 0xd5, 0x4e, 0x4a, 0xa6, 0xf6, 0xe9, 0xcd, 0x4a, 0x56, 0xea, 0x20, 0x8d, 0xb3, - 0x43, 0xd8, 0xbf, 0x4f, 0xb8, 0x50, 0x36, 0x5e, 0x77, 0xfa, 0x21, 0x40, 0x12, 0x84, 0xd8, 0x17, - 0xec, 0x4b, 0x4c, 0x8d, 0x8a, 0x2d, 0x69, 0x79, 0x28, 0x0d, 0xe8, 0x16, 0xa8, 0x85, 0xcf, 0xc9, - 0x53, 0xad, 0x5f, 0xc3, 0x6b, 0x4a, 0xc3, 0x25, 0x79, 0x8a, 0x6d, 0x06, 0xa8, 0x18, 0x88, 0x27, - 0x8c, 0x72, 0x8c, 0x46, 0xb0, 0xad, 0x78, 0xc8, 0x4b, 0x6f, 0xae, 0x27, 0x6c, 0x80, 0xe8, 0x18, - 0xf6, 0x28, 0xfe, 0x46, 0xf8, 0x05, 0x26, 0xba, 0x26, 0x3b, 0xd2, 0x7c, 0x91, 0xb3, 0xb1, 0x8f, - 0x60, 0xef, 0x1e, 0x16, 0xa5, 0xac, 0x55, 0x94, 0xb7, 0x3d, 0x00, 0x74, 0x8e, 0x23, 0xbc, 0x90, - 0xdf, 0x2a, 0x24, 0x86, 0x03, 0xad, 0x44, 0xde, 0x9f, 0x35, 0xd9, 0x7a, 0x1b, 0x76, 0xf2, 0x5a, - 0xda, 0xa8, 0x6f, 0xf6, 0x1c, 0x6b, 0x13, 0x78, 0x4e, 0x26, 0xca, 0xd8, 0xff, 0x57, 0x4d, 0xbe, - 0x86, 0x83, 0x72, 0x28, 0xa3, 0xca, 0x3b, 0xd0, 0x34, 0x6c, 0x72, 0x5d, 0xd6, 0x52, 0x9f, 0x83, - 0xaf, 0xad, 0xcd, 0x09, 0xec, 0xdf, 0xc3, 0x62, 0x21, 0x8f, 0x55, 0x39, 0x1f, 0xc2, 0x81, 0x56, - 0xe7, 0x1a, 0x58, 0x07, 0xba, 0x97, 0x58, 0x9c, 0x97, 0x66, 0xe6, 0x1a, 0xfc, 0xe9, 0x5f, 0x2d, - 0xb8, 0xa1, 0x44, 0xbf, 0xd4, 0x4f, 0x0f, 0xfa, 0x01, 0xda, 0x85, 0x56, 0x43, 0xc7, 0x55, 0x77, - 0x5e, 0xee, 0xc5, 0xde, 0xea, 0x9a, 0xb5, 0xdf, 0xfc, 0xf1, 0xf7, 0x3f, 0x7f, 0xd9, 0x38, 0xb1, - 0x5f, 0x96, 0xef, 0xdc, 0x77, 0x5a, 0xb1, 0xf7, 0x92, 0x94, 0x7d, 0x81, 0x27, 0x82, 0xbb, 0xc3, - 0x67, 0xfa, 0xed, 0xe3, 0x63, 0xdd, 0x8c, 0xe8, 0x27, 0x0b, 0xe0, 0xaa, 0x49, 0xd0, 0x51, 0xd5, - 0xc1, 0x4b, 0xdd, 0xda, 0x3b, 0xae, 0x83, 0x69, 0x55, 0xed, 0x63, 0x45, 0xa6, 0x8f, 0x6a, 0xc8, - 0xa0, 0x14, 0x9a, 0x79, 0xe3, 0xa0, 0xdb, 0x55, 0x67, 0x2f, 0xb4, 0xd5, 0xba, 0x04, 0x94, 0x63, - 0xca, 0xb4, 0x17, 0x22, 0x9a, 0x80, 0xee, 0xf0, 0x19, 0xfa, 0x1e, 0xda, 0x85, 0x2e, 0xac, 0x4e, - 0xfd, 0x72, 0x9b, 0xf6, 0x0e, 0x73, 0x5c, 0xe1, 0x79, 0x77, 0x3e, 0xce, 0x9f, 0xf7, 0x3c, 0xfa, - 0xb0, 0x2e, 0xfa, 0xaf, 0x16, 0x74, 0x4a, 0xad, 0x8d, 0x06, 0xab, 0xb5, 0x2f, 0x57, 0x56, 0x1d, - 0x85, 0xb1, 0xa2, 0x70, 0x66, 0xbf, 0x56, 0x9d, 0xf4, 0x2b, 0x12, 0x6e, 0xde, 0x44, 0xe3, 0x7c, - 0x12, 0x48, 0x5a, 0x37, 0x8a, 0xfd, 0x89, 0x4e, 0x56, 0x29, 0xbd, 0x30, 0x2c, 0x7a, 0x83, 0x7a, - 0xa0, 0x29, 0x8a, 0x91, 0xe2, 0xf7, 0x3a, 0xba, 0x3e, 0x3f, 0x55, 0xa5, 0x57, 0xdd, 0x5b, 0x5d, - 0xa5, 0x4b, 0xdd, 0xdd, 0x5b, 0x37, 0x41, 0x16, 0x58, 0xac, 0x12, 0x6a, 0x4e, 0x41, 0x6a, 0xf6, - 0xb3, 0x05, 0x9d, 0xd2, 0x68, 0xa8, 0xd6, 0xac, 0x6a, 0x7a, 0xd4, 0x69, 0x66, 0xd8, 0x0c, 0xff, - 0x05, 0x9b, 0xdf, 0x2c, 0xd8, 0x5f, 0x1a, 0x3e, 0xe8, 0x8d, 0x2a, 0x46, 0xab, 0x66, 0xd4, 0xfa, - 0x0c, 0x7d, 0xa0, 0x38, 0xbd, 0x6b, 0x9f, 0x5d, 0x9b, 0xd3, 0x98, 0xcf, 0x03, 0x8d, 0xad, 0xe1, - 0xdd, 0x10, 0x7a, 0x13, 0x16, 0x2f, 0x85, 0x08, 0x12, 0xe2, 0xcc, 0x46, 0x77, 0xf7, 0x8b, 0x83, - 0xf0, 0x42, 0xfe, 0x2c, 0x5d, 0x58, 0x9f, 0x9e, 0x19, 0x70, 0xc8, 0xa2, 0x80, 0x86, 0x0e, 0x4b, - 0x43, 0x37, 0xc4, 0x54, 0xfd, 0x4a, 0xb9, 0x7a, 0x2b, 0x48, 0x08, 0x2f, 0xfe, 0xcb, 0xdf, 0x89, - 0xa3, 0xc7, 0xdb, 0x0a, 0xf0, 0xd6, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x07, 0x42, 0xf7, - 0xeb, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/operation_metadata.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/operation_metadata.pb.go deleted file mode 100644 index a41117d5..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/operation_metadata.pb.go +++ /dev/null @@ -1,161 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1/operation_metadata.proto - -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The operation type. -type OperationMetadata_OperationType int32 - -const ( - // Unspecified operation type. - OperationMetadata_OPERATION_TYPE_UNSPECIFIED OperationMetadata_OperationType = 0 - // An operation to create a new version. - OperationMetadata_CREATE_VERSION OperationMetadata_OperationType = 1 - // An operation to delete an existing version. - OperationMetadata_DELETE_VERSION OperationMetadata_OperationType = 2 - // An operation to delete an existing model. - OperationMetadata_DELETE_MODEL OperationMetadata_OperationType = 3 -) - -var OperationMetadata_OperationType_name = map[int32]string{ - 0: "OPERATION_TYPE_UNSPECIFIED", - 1: "CREATE_VERSION", - 2: "DELETE_VERSION", - 3: "DELETE_MODEL", -} -var OperationMetadata_OperationType_value = map[string]int32{ - "OPERATION_TYPE_UNSPECIFIED": 0, - "CREATE_VERSION": 1, - "DELETE_VERSION": 2, - "DELETE_MODEL": 3, -} - -func (x OperationMetadata_OperationType) String() string { - return proto.EnumName(OperationMetadata_OperationType_name, int32(x)) -} -func (OperationMetadata_OperationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 0} -} - -// Represents the metadata of the long-running operation. -type OperationMetadata struct { - // The time the operation was submitted. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The time operation processing started. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The time operation processing completed. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Indicates whether a request to cancel this operation has been made. - IsCancellationRequested bool `protobuf:"varint,4,opt,name=is_cancellation_requested,json=isCancellationRequested" json:"is_cancellation_requested,omitempty"` - // The operation type. - OperationType OperationMetadata_OperationType `protobuf:"varint,5,opt,name=operation_type,json=operationType,enum=google.cloud.ml.v1.OperationMetadata_OperationType" json:"operation_type,omitempty"` - // Contains the name of the model associated with the operation. - ModelName string `protobuf:"bytes,6,opt,name=model_name,json=modelName" json:"model_name,omitempty"` - // Contains the version associated with the operation. - Version *Version `protobuf:"bytes,7,opt,name=version" json:"version,omitempty"` -} - -func (m *OperationMetadata) Reset() { *m = OperationMetadata{} } -func (m *OperationMetadata) String() string { return proto.CompactTextString(m) } -func (*OperationMetadata) ProtoMessage() {} -func (*OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *OperationMetadata) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *OperationMetadata) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *OperationMetadata) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *OperationMetadata) GetIsCancellationRequested() bool { - if m != nil { - return m.IsCancellationRequested - } - return false -} - -func (m *OperationMetadata) GetOperationType() OperationMetadata_OperationType { - if m != nil { - return m.OperationType - } - return OperationMetadata_OPERATION_TYPE_UNSPECIFIED -} - -func (m *OperationMetadata) GetModelName() string { - if m != nil { - return m.ModelName - } - return "" -} - -func (m *OperationMetadata) GetVersion() *Version { - if m != nil { - return m.Version - } - return nil -} - -func init() { - proto.RegisterType((*OperationMetadata)(nil), "google.cloud.ml.v1.OperationMetadata") - proto.RegisterEnum("google.cloud.ml.v1.OperationMetadata_OperationType", OperationMetadata_OperationType_name, OperationMetadata_OperationType_value) -} - -func init() { proto.RegisterFile("google/cloud/ml/v1/operation_metadata.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 454 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x5f, 0x6b, 0xdb, 0x30, - 0x14, 0xc5, 0xe7, 0xb6, 0x6b, 0x1a, 0x75, 0x0d, 0x99, 0x1e, 0xb6, 0xcc, 0xfb, 0x17, 0xfa, 0x30, - 0x02, 0x03, 0x99, 0xb4, 0xdb, 0xc3, 0xd6, 0xa7, 0x36, 0xd1, 0x20, 0xd0, 0xc6, 0xc6, 0xf5, 0x0a, - 0xeb, 0x8b, 0x51, 0xed, 0x3b, 0x23, 0x90, 0x25, 0xcf, 0x52, 0x0c, 0xfd, 0x2c, 0xfb, 0xb2, 0x23, - 0x92, 0x4d, 0x33, 0x52, 0xe8, 0xa3, 0xce, 0xfd, 0x9d, 0xab, 0xab, 0x7b, 0x84, 0x3e, 0x17, 0x4a, - 0x15, 0x02, 0x82, 0x4c, 0xa8, 0x55, 0x1e, 0x94, 0x22, 0x68, 0xa6, 0x81, 0xaa, 0xa0, 0x66, 0x86, - 0x2b, 0x99, 0x96, 0x60, 0x58, 0xce, 0x0c, 0x23, 0x55, 0xad, 0x8c, 0xc2, 0xd8, 0xc1, 0xc4, 0xc2, - 0xa4, 0x14, 0xa4, 0x99, 0xfa, 0xef, 0xda, 0x06, 0xac, 0xe2, 0x01, 0x93, 0x52, 0x19, 0xeb, 0xd4, - 0xce, 0xe1, 0x7f, 0x7a, 0xa4, 0x7d, 0xa9, 0x72, 0x10, 0xa9, 0x86, 0xba, 0xe1, 0x19, 0xb4, 0xdc, - 0xc7, 0x96, 0xb3, 0xa7, 0xbb, 0xd5, 0xef, 0xc0, 0xf0, 0x12, 0xb4, 0x61, 0x65, 0xe5, 0x80, 0xe3, - 0xbf, 0x7b, 0xe8, 0x65, 0xd8, 0xcd, 0x75, 0xd5, 0x8e, 0x85, 0xcf, 0xd0, 0x61, 0x56, 0x03, 0x33, - 0x90, 0xae, 0xf9, 0x91, 0x37, 0xf6, 0x26, 0x87, 0x27, 0x3e, 0x69, 0xc7, 0xec, 0x9a, 0x91, 0xa4, - 0x6b, 0x16, 0x23, 0x87, 0xaf, 0x05, 0xfc, 0x0d, 0x21, 0x6d, 0x58, 0x6d, 0x9c, 0x77, 0xe7, 0x49, - 0x6f, 0xdf, 0xd2, 0xd6, 0xfa, 0x15, 0x1d, 0x80, 0xcc, 0x9d, 0x71, 0xf7, 0x49, 0x63, 0x0f, 0x64, - 0x6e, 0x6d, 0xdf, 0xd1, 0x1b, 0xae, 0xd3, 0x8c, 0xc9, 0x0c, 0x84, 0x70, 0x1b, 0xae, 0xe1, 0xcf, - 0x0a, 0xb4, 0x81, 0x7c, 0xb4, 0x37, 0xf6, 0x26, 0x07, 0xf1, 0x6b, 0xae, 0x67, 0x1b, 0xf5, 0xb8, - 0x2b, 0xe3, 0x5b, 0x34, 0x78, 0xc8, 0xc5, 0xdc, 0x57, 0x30, 0x7a, 0x3e, 0xf6, 0x26, 0x83, 0x93, - 0x53, 0xb2, 0x1d, 0x0a, 0xd9, 0xda, 0xd4, 0x83, 0x92, 0xdc, 0x57, 0x10, 0x1f, 0xa9, 0xcd, 0x23, - 0x7e, 0x8f, 0x90, 0x0b, 0x45, 0xb2, 0x12, 0x46, 0xfb, 0x63, 0x6f, 0xd2, 0x8f, 0xfb, 0x56, 0x59, - 0x32, 0xfb, 0xda, 0x5e, 0x03, 0xb5, 0xe6, 0x4a, 0x8e, 0x7a, 0xf6, 0xb1, 0x6f, 0x1f, 0xbb, 0xf3, - 0xc6, 0x21, 0x71, 0xc7, 0x1e, 0x73, 0x74, 0xf4, 0xdf, 0xad, 0xf8, 0x03, 0xf2, 0xc3, 0x88, 0xc6, - 0xe7, 0xc9, 0x22, 0x5c, 0xa6, 0xc9, 0xaf, 0x88, 0xa6, 0x3f, 0x97, 0xd7, 0x11, 0x9d, 0x2d, 0x7e, - 0x2c, 0xe8, 0x7c, 0xf8, 0x0c, 0x63, 0x34, 0x98, 0xc5, 0xf4, 0x3c, 0xa1, 0xe9, 0x0d, 0x8d, 0xaf, - 0x17, 0xe1, 0x72, 0xe8, 0xad, 0xb5, 0x39, 0xbd, 0xa4, 0x1b, 0xda, 0x0e, 0x1e, 0xa2, 0x17, 0xad, - 0x76, 0x15, 0xce, 0xe9, 0xe5, 0x70, 0xf7, 0x42, 0x20, 0x3f, 0x53, 0xe5, 0xd6, 0x54, 0xac, 0xe2, - 0xa4, 0x99, 0x5e, 0xbc, 0xda, 0x5a, 0x47, 0xb4, 0x0e, 0x29, 0xf2, 0x6e, 0xbf, 0xb4, 0x8e, 0x42, - 0x09, 0x26, 0x0b, 0xa2, 0xea, 0x22, 0x28, 0x40, 0xda, 0x08, 0x03, 0x57, 0x62, 0x15, 0xd7, 0x9b, - 0xbf, 0xf7, 0xac, 0x14, 0x77, 0xfb, 0x16, 0x38, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x03, 0xf9, - 0xcc, 0xf1, 0x3c, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/prediction_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/prediction_service.pb.go deleted file mode 100644 index 9d27c9c4..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/prediction_service.pb.go +++ /dev/null @@ -1,343 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1/prediction_service.proto - -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api3 "google.golang.org/genproto/googleapis/api/httpbody" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Request for predictions to be issued against a trained model. -// -// The body of the request is a single JSON object with a single top-level -// field: -// -// <dl> -// <dt>instances</dt> -// <dd>A JSON array containing values representing the instances to use for -// prediction.</dd> -// </dl> -// -// The structure of each element of the instances list is determined by your -// model's input definition. Instances can include named inputs or can contain -// only unlabeled values. -// -// Not all data includes named inputs. Some instances will be simple -// JSON values (boolean, number, or string). However, instances are often lists -// of simple values, or complex nested lists. Here are some examples of request -// bodies: -// -// CSV data with each row encoded as a string value: -// <pre> -// {"instances": ["1.0,true,\\"x\\"", "-2.0,false,\\"y\\""]} -// </pre> -// Plain text: -// <pre> -// {"instances": ["the quick brown fox", "la bruja le dio"]} -// </pre> -// Sentences encoded as lists of words (vectors of strings): -// <pre> -// { -// "instances": [ -// ["the","quick","brown"], -// ["la","bruja","le"], -// ... -// ] -// } -// </pre> -// Floating point scalar values: -// <pre> -// {"instances": [0.0, 1.1, 2.2]} -// </pre> -// Vectors of integers: -// <pre> -// { -// "instances": [ -// [0, 1, 2], -// [3, 4, 5], -// ... -// ] -// } -// </pre> -// Tensors (in this case, two-dimensional tensors): -// <pre> -// { -// "instances": [ -// [ -// [0, 1, 2], -// [3, 4, 5] -// ], -// ... -// ] -// } -// </pre> -// Images can be represented different ways. In this encoding scheme the first -// two dimensions represent the rows and columns of the image, and the third -// contains lists (vectors) of the R, G, and B values for each pixel. -// <pre> -// { -// "instances": [ -// [ -// [ -// [138, 30, 66], -// [130, 20, 56], -// ... -// ], -// [ -// [126, 38, 61], -// [122, 24, 57], -// ... -// ], -// ... -// ], -// ... -// ] -// } -// </pre> -// JSON strings must be encoded as UTF-8. To send binary data, you must -// base64-encode the data and mark it as binary. To mark a JSON string -// as binary, replace it with a JSON object with a single attribute named `b64`: -// <pre>{"b64": "..."} </pre> -// For example: -// -// Two Serialized tf.Examples (fake data, for illustrative purposes only): -// <pre> -// {"instances": [{"b64": "X5ad6u"}, {"b64": "IA9j4nx"}]} -// </pre> -// Two JPEG image byte strings (fake data, for illustrative purposes only): -// <pre> -// {"instances": [{"b64": "ASa8asdf"}, {"b64": "JLK7ljk3"}]} -// </pre> -// If your data includes named references, format each instance as a JSON object -// with the named references as the keys: -// -// JSON input data to be preprocessed: -// <pre> -// { -// "instances": [ -// { -// "a": 1.0, -// "b": true, -// "c": "x" -// }, -// { -// "a": -2.0, -// "b": false, -// "c": "y" -// } -// ] -// } -// </pre> -// Some models have an underlying TensorFlow graph that accepts multiple input -// tensors. In this case, you should use the names of JSON name/value pairs to -// identify the input tensors, as shown in the following exmaples: -// -// For a graph with input tensor aliases "tag" (string) and "image" -// (base64-encoded string): -// <pre> -// { -// "instances": [ -// { -// "tag": "beach", -// "image": {"b64": "ASa8asdf"} -// }, -// { -// "tag": "car", -// "image": {"b64": "JLK7ljk3"} -// } -// ] -// } -// </pre> -// For a graph with input tensor aliases "tag" (string) and "image" -// (3-dimensional array of 8-bit ints): -// <pre> -// { -// "instances": [ -// { -// "tag": "beach", -// "image": [ -// [ -// [138, 30, 66], -// [130, 20, 56], -// ... -// ], -// [ -// [126, 38, 61], -// [122, 24, 57], -// ... -// ], -// ... -// ] -// }, -// { -// "tag": "car", -// "image": [ -// [ -// [255, 0, 102], -// [255, 0, 97], -// ... -// ], -// [ -// [254, 1, 101], -// [254, 2, 93], -// ... -// ], -// ... -// ] -// }, -// ... -// ] -// } -// </pre> -// If the call is successful, the response body will contain one prediction -// entry per instance in the request body. If prediction fails for any -// instance, the response body will contain no predictions and will contian -// a single error entry instead. -type PredictRequest struct { - // Required. The resource name of a model or a version. - // - // Authorization: requires `Viewer` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // - // Required. The prediction request body. - HttpBody *google_api3.HttpBody `protobuf:"bytes,2,opt,name=http_body,json=httpBody" json:"http_body,omitempty"` -} - -func (m *PredictRequest) Reset() { *m = PredictRequest{} } -func (m *PredictRequest) String() string { return proto.CompactTextString(m) } -func (*PredictRequest) ProtoMessage() {} -func (*PredictRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *PredictRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *PredictRequest) GetHttpBody() *google_api3.HttpBody { - if m != nil { - return m.HttpBody - } - return nil -} - -func init() { - proto.RegisterType((*PredictRequest)(nil), "google.cloud.ml.v1.PredictRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for OnlinePredictionService service - -type OnlinePredictionServiceClient interface { - // Performs prediction on the data in the request. - // - // **** REMOVE FROM GENERATED DOCUMENTATION - Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error) -} - -type onlinePredictionServiceClient struct { - cc *grpc.ClientConn -} - -func NewOnlinePredictionServiceClient(cc *grpc.ClientConn) OnlinePredictionServiceClient { - return &onlinePredictionServiceClient{cc} -} - -func (c *onlinePredictionServiceClient) Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error) { - out := new(google_api3.HttpBody) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.OnlinePredictionService/Predict", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for OnlinePredictionService service - -type OnlinePredictionServiceServer interface { - // Performs prediction on the data in the request. - // - // **** REMOVE FROM GENERATED DOCUMENTATION - Predict(context.Context, *PredictRequest) (*google_api3.HttpBody, error) -} - -func RegisterOnlinePredictionServiceServer(s *grpc.Server, srv OnlinePredictionServiceServer) { - s.RegisterService(&_OnlinePredictionService_serviceDesc, srv) -} - -func _OnlinePredictionService_Predict_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PredictRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OnlinePredictionServiceServer).Predict(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.OnlinePredictionService/Predict", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OnlinePredictionServiceServer).Predict(ctx, req.(*PredictRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _OnlinePredictionService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.ml.v1.OnlinePredictionService", - HandlerType: (*OnlinePredictionServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Predict", - Handler: _OnlinePredictionService_Predict_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/ml/v1/prediction_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/ml/v1/prediction_service.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 308 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x51, 0x4f, 0x4b, 0xfb, 0x30, - 0x18, 0xa6, 0xe3, 0xc7, 0x4f, 0x17, 0xc1, 0x43, 0x10, 0x9d, 0x45, 0x64, 0xd4, 0xcb, 0x9c, 0x90, - 0xd0, 0xe9, 0x69, 0xe2, 0x65, 0x27, 0x6f, 0x96, 0x79, 0x10, 0xbc, 0x8c, 0xac, 0x0d, 0x59, 0x24, - 0xcd, 0x1b, 0xdb, 0xac, 0x30, 0xc4, 0x8b, 0x37, 0xcf, 0x7e, 0x34, 0xbf, 0x82, 0x1f, 0x44, 0xd2, - 0x04, 0x99, 0xd4, 0xdb, 0x4b, 0xde, 0xe7, 0x79, 0x9f, 0x3f, 0x41, 0x17, 0x02, 0x40, 0x28, 0x4e, - 0x73, 0x05, 0xeb, 0x82, 0x96, 0x8a, 0x36, 0x29, 0x35, 0x15, 0x2f, 0x64, 0x6e, 0x25, 0xe8, 0x45, - 0xcd, 0xab, 0x46, 0xe6, 0x9c, 0x98, 0x0a, 0x2c, 0x60, 0xec, 0xc1, 0xa4, 0x05, 0x93, 0x52, 0x91, - 0x26, 0x8d, 0x4f, 0xc2, 0x01, 0x66, 0x24, 0x65, 0x5a, 0x83, 0x65, 0x8e, 0x58, 0x7b, 0x46, 0x7c, - 0xbc, 0xb5, 0x5d, 0x59, 0x6b, 0x96, 0x50, 0x6c, 0xfc, 0x2a, 0x79, 0x40, 0xfb, 0x99, 0x17, 0x9a, - 0xf3, 0xe7, 0x35, 0xaf, 0x2d, 0xc6, 0xe8, 0x9f, 0x66, 0x25, 0x1f, 0x44, 0xc3, 0x68, 0xd4, 0x9f, - 0xb7, 0x33, 0x4e, 0x51, 0xdf, 0xf1, 0x16, 0x8e, 0x38, 0xe8, 0x0d, 0xa3, 0xd1, 0xde, 0xe4, 0x80, - 0x04, 0x1b, 0xcc, 0x48, 0x72, 0x6b, 0xad, 0x99, 0x41, 0xb1, 0x99, 0xef, 0xae, 0xc2, 0x34, 0x79, - 0x8f, 0xd0, 0xd1, 0x9d, 0x56, 0x52, 0xf3, 0xec, 0x27, 0xc8, 0xbd, 0xcf, 0x81, 0x35, 0xda, 0x09, - 0x8f, 0x38, 0x21, 0xdd, 0x34, 0xe4, 0xb7, 0xa3, 0xf8, 0x4f, 0xa9, 0xe4, 0xfc, 0xed, 0xf3, 0xeb, - 0xa3, 0x77, 0x96, 0x9c, 0xba, 0xb2, 0x5e, 0x9c, 0xcd, 0x1b, 0x53, 0xc1, 0x13, 0xcf, 0x6d, 0x4d, - 0xc7, 0xe3, 0xd7, 0x69, 0xe8, 0x6f, 0x1a, 0x8d, 0x67, 0x0a, 0xc5, 0x39, 0x94, 0x1d, 0x25, 0x77, - 0xae, 0x49, 0x67, 0x87, 0x1d, 0x83, 0x99, 0xab, 0x26, 0x8b, 0x1e, 0xaf, 0x02, 0x43, 0x80, 0x62, - 0x5a, 0x10, 0xa8, 0x04, 0x15, 0x5c, 0xb7, 0xc5, 0x51, 0xbf, 0x62, 0x46, 0xd6, 0xdb, 0xbf, 0x76, - 0x5d, 0xaa, 0xe5, 0xff, 0x16, 0x70, 0xf9, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x81, 0x8e, 0x25, 0xca, - 0xd5, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/project_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/project_service.pb.go deleted file mode 100644 index 751bce74..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1/project_service.pb.go +++ /dev/null @@ -1,177 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1/project_service.proto - -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Requests service account information associated with a project. -type GetConfigRequest struct { - // Required. The project name. - // - // Authorization: requires `Viewer` role on the specified project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetConfigRequest) Reset() { *m = GetConfigRequest{} } -func (m *GetConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetConfigRequest) ProtoMessage() {} -func (*GetConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *GetConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Returns service account information associated with a project. -type GetConfigResponse struct { - // The service account Cloud ML uses to access resources in the project. - ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // The project number for `service_account`. - ServiceAccountProject int64 `protobuf:"varint,2,opt,name=service_account_project,json=serviceAccountProject" json:"service_account_project,omitempty"` -} - -func (m *GetConfigResponse) Reset() { *m = GetConfigResponse{} } -func (m *GetConfigResponse) String() string { return proto.CompactTextString(m) } -func (*GetConfigResponse) ProtoMessage() {} -func (*GetConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *GetConfigResponse) GetServiceAccount() string { - if m != nil { - return m.ServiceAccount - } - return "" -} - -func (m *GetConfigResponse) GetServiceAccountProject() int64 { - if m != nil { - return m.ServiceAccountProject - } - return 0 -} - -func init() { - proto.RegisterType((*GetConfigRequest)(nil), "google.cloud.ml.v1.GetConfigRequest") - proto.RegisterType((*GetConfigResponse)(nil), "google.cloud.ml.v1.GetConfigResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ProjectManagementService service - -type ProjectManagementServiceClient interface { - // Get the service account information associated with your project. You need - // this information in order to grant the service account persmissions for - // the Google Cloud Storage location where you put your model training code - // for training the model with Google Cloud Machine Learning. - GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) -} - -type projectManagementServiceClient struct { - cc *grpc.ClientConn -} - -func NewProjectManagementServiceClient(cc *grpc.ClientConn) ProjectManagementServiceClient { - return &projectManagementServiceClient{cc} -} - -func (c *projectManagementServiceClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { - out := new(GetConfigResponse) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1.ProjectManagementService/GetConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ProjectManagementService service - -type ProjectManagementServiceServer interface { - // Get the service account information associated with your project. You need - // this information in order to grant the service account persmissions for - // the Google Cloud Storage location where you put your model training code - // for training the model with Google Cloud Machine Learning. - GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) -} - -func RegisterProjectManagementServiceServer(s *grpc.Server, srv ProjectManagementServiceServer) { - s.RegisterService(&_ProjectManagementService_serviceDesc, srv) -} - -func _ProjectManagementService_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectManagementServiceServer).GetConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1.ProjectManagementService/GetConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectManagementServiceServer).GetConfig(ctx, req.(*GetConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ProjectManagementService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.ml.v1.ProjectManagementService", - HandlerType: (*ProjectManagementServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetConfig", - Handler: _ProjectManagementService_GetConfig_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/ml/v1/project_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/ml/v1/project_service.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 319 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xbf, 0x4a, 0x43, 0x31, - 0x14, 0xc6, 0xb9, 0x55, 0x84, 0x66, 0xf0, 0x4f, 0x44, 0x2c, 0x45, 0xb0, 0x16, 0xb5, 0xc5, 0x21, - 0xa1, 0x2a, 0x0e, 0x8a, 0x83, 0x75, 0x70, 0x12, 0x4a, 0xdd, 0x5c, 0x4a, 0xbc, 0x1e, 0x43, 0x24, - 0xc9, 0x89, 0x37, 0xe9, 0x5d, 0xc4, 0x41, 0x5f, 0xc1, 0xdd, 0x97, 0xf2, 0x15, 0x7c, 0x10, 0xe9, - 0x4d, 0x94, 0xda, 0x0e, 0x6e, 0x87, 0x73, 0x7e, 0x5f, 0xf2, 0x7d, 0xe7, 0x90, 0xae, 0x44, 0x94, - 0x1a, 0x78, 0xae, 0x71, 0x7c, 0xcf, 0x8d, 0xe6, 0x65, 0x8f, 0xbb, 0x02, 0x1f, 0x21, 0x0f, 0x23, - 0x0f, 0x45, 0xa9, 0x72, 0x60, 0xae, 0xc0, 0x80, 0x94, 0x46, 0x92, 0x55, 0x24, 0x33, 0x9a, 0x95, - 0xbd, 0xe6, 0x56, 0x52, 0x0b, 0xa7, 0xb8, 0xb0, 0x16, 0x83, 0x08, 0x0a, 0xad, 0x8f, 0x8a, 0xf6, - 0x3e, 0x59, 0xbd, 0x82, 0x70, 0x89, 0xf6, 0x41, 0xc9, 0x21, 0x3c, 0x8d, 0xc1, 0x07, 0x4a, 0xc9, - 0xa2, 0x15, 0x06, 0x1a, 0x59, 0x2b, 0xeb, 0xd6, 0x87, 0x55, 0xdd, 0x0e, 0x64, 0x6d, 0x8a, 0xf3, - 0x0e, 0xad, 0x07, 0xda, 0x21, 0x2b, 0xe9, 0xff, 0x91, 0xc8, 0x73, 0x1c, 0xdb, 0x90, 0x34, 0xcb, - 0xa9, 0x7d, 0x11, 0xbb, 0xf4, 0x84, 0x6c, 0xce, 0x80, 0xa3, 0x14, 0xa0, 0x51, 0x6b, 0x65, 0xdd, - 0x85, 0xe1, 0xc6, 0x5f, 0xc1, 0x20, 0x0e, 0x0f, 0x3f, 0x32, 0xd2, 0x48, 0xf5, 0xb5, 0xb0, 0x42, - 0x82, 0x01, 0x1b, 0x6e, 0x22, 0x4a, 0x5f, 0x33, 0x52, 0xff, 0xf5, 0x44, 0x77, 0xd9, 0x7c, 0x76, - 0x36, 0x1b, 0xad, 0xb9, 0xf7, 0x0f, 0x15, 0x83, 0xb5, 0x3b, 0x6f, 0x9f, 0x5f, 0xef, 0xb5, 0x1d, - 0xba, 0x3d, 0x59, 0xf5, 0xf3, 0x64, 0x01, 0xe7, 0xc9, 0xaf, 0xe7, 0x07, 0x2f, 0xa7, 0xf2, 0x47, - 0xd0, 0x57, 0xa4, 0x99, 0xa3, 0x99, 0x7b, 0x54, 0x38, 0xc5, 0xca, 0x5e, 0x7f, 0x3d, 0x79, 0x4f, - 0x8e, 0x07, 0x93, 0x8d, 0x0f, 0xb2, 0xdb, 0xe3, 0x84, 0x4b, 0xd4, 0xc2, 0x4a, 0x86, 0x85, 0xe4, - 0x12, 0x6c, 0x75, 0x0f, 0x1e, 0x47, 0xc2, 0x29, 0x3f, 0x7d, 0xee, 0x33, 0xa3, 0xef, 0x96, 0x2a, - 0xe0, 0xe8, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xd0, 0xa5, 0x43, 0x33, 0x0e, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/job_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/job_service.pb.go deleted file mode 100644 index df13ca5e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/job_service.pb.go +++ /dev/null @@ -1,1823 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1beta1/job_service.proto - -/* -Package ml is a generated protocol buffer package. - -It is generated from these files: - google/cloud/ml/v1beta1/job_service.proto - google/cloud/ml/v1beta1/model_service.proto - google/cloud/ml/v1beta1/operation_metadata.proto - google/cloud/ml/v1beta1/prediction_service.proto - google/cloud/ml/v1beta1/project_service.proto - -It has these top-level messages: - TrainingInput - HyperparameterSpec - ParameterSpec - HyperparameterOutput - TrainingOutput - PredictionInput - PredictionOutput - Job - CreateJobRequest - ListJobsRequest - ListJobsResponse - GetJobRequest - CancelJobRequest - Model - Version - ManualScaling - CreateModelRequest - ListModelsRequest - ListModelsResponse - GetModelRequest - DeleteModelRequest - CreateVersionRequest - ListVersionsRequest - ListVersionsResponse - GetVersionRequest - DeleteVersionRequest - SetDefaultVersionRequest - OperationMetadata - PredictRequest - GetConfigRequest - GetConfigResponse -*/ -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/serviceconfig" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A scale tier is an abstract representation of the resources Cloud ML -// will allocate to a training job. When selecting a scale tier for your -// training job, you should consider the size of your training dataset and -// the complexity of your model. As the tiers increase, virtual machines are -// added to handle your job, and the individual machines in the cluster -// generally have more memory and greater processing power than they do at -// lower tiers. The number of training units charged per hour of processing -// increases as tiers get more advanced. Refer to the -// [pricing guide](/ml/pricing) for more details. Note that in addition to -// incurring costs, your use of training resources is constrained by the -// [quota policy](/ml/quota). -type TrainingInput_ScaleTier int32 - -const ( - // A single worker instance. This tier is suitable for learning how to use - // Cloud ML, and for experimenting with new models using small datasets. - TrainingInput_BASIC TrainingInput_ScaleTier = 0 - // Many workers and a few parameter servers. - TrainingInput_STANDARD_1 TrainingInput_ScaleTier = 1 - // A large number of workers with many parameter servers. - TrainingInput_PREMIUM_1 TrainingInput_ScaleTier = 3 - // A single worker instance [with a GPU](ml/docs/how-tos/using-gpus). - TrainingInput_BASIC_GPU TrainingInput_ScaleTier = 6 - // The CUSTOM tier is not a set tier, but rather enables you to use your - // own cluster specification. When you use this tier, set values to - // configure your processing cluster according to these guidelines: - // - // * You _must_ set `TrainingInput.masterType` to specify the type - // of machine to use for your master node. This is the only required - // setting. - // - // * You _may_ set `TrainingInput.workerCount` to specify the number of - // workers to use. If you specify one or more workers, you _must_ also - // set `TrainingInput.workerType` to specify the type of machine to use - // for your worker nodes. - // - // * You _may_ set `TrainingInput.parameterServerCount` to specify the - // number of parameter servers to use. If you specify one or more - // parameter servers, you _must_ also set - // `TrainingInput.parameterServerType` to specify the type of machine to - // use for your parameter servers. - // - // Note that all of your workers must use the same machine type, which can - // be different from your parameter server type and master type. Your - // parameter servers must likewise use the same machine type, which can be - // different from your worker type and master type. - TrainingInput_CUSTOM TrainingInput_ScaleTier = 5 -) - -var TrainingInput_ScaleTier_name = map[int32]string{ - 0: "BASIC", - 1: "STANDARD_1", - 3: "PREMIUM_1", - 6: "BASIC_GPU", - 5: "CUSTOM", -} -var TrainingInput_ScaleTier_value = map[string]int32{ - "BASIC": 0, - "STANDARD_1": 1, - "PREMIUM_1": 3, - "BASIC_GPU": 6, - "CUSTOM": 5, -} - -func (x TrainingInput_ScaleTier) String() string { - return proto.EnumName(TrainingInput_ScaleTier_name, int32(x)) -} -func (TrainingInput_ScaleTier) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// The available types of optimization goals. -type HyperparameterSpec_GoalType int32 - -const ( - // Goal Type will default to maximize. - HyperparameterSpec_GOAL_TYPE_UNSPECIFIED HyperparameterSpec_GoalType = 0 - // Maximize the goal metric. - HyperparameterSpec_MAXIMIZE HyperparameterSpec_GoalType = 1 - // Minimize the goal metric. - HyperparameterSpec_MINIMIZE HyperparameterSpec_GoalType = 2 -) - -var HyperparameterSpec_GoalType_name = map[int32]string{ - 0: "GOAL_TYPE_UNSPECIFIED", - 1: "MAXIMIZE", - 2: "MINIMIZE", -} -var HyperparameterSpec_GoalType_value = map[string]int32{ - "GOAL_TYPE_UNSPECIFIED": 0, - "MAXIMIZE": 1, - "MINIMIZE": 2, -} - -func (x HyperparameterSpec_GoalType) String() string { - return proto.EnumName(HyperparameterSpec_GoalType_name, int32(x)) -} -func (HyperparameterSpec_GoalType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{1, 0} -} - -// The type of the parameter. -type ParameterSpec_ParameterType int32 - -const ( - // You must specify a valid type. Using this unspecified type will result in - // an error. - ParameterSpec_PARAMETER_TYPE_UNSPECIFIED ParameterSpec_ParameterType = 0 - // Type for real-valued parameters. - ParameterSpec_DOUBLE ParameterSpec_ParameterType = 1 - // Type for integral parameters. - ParameterSpec_INTEGER ParameterSpec_ParameterType = 2 - // The parameter is categorical, with a value chosen from the categories - // field. - ParameterSpec_CATEGORICAL ParameterSpec_ParameterType = 3 - // The parameter is real valued, with a fixed set of feasible points. If - // `type==DISCRETE`, feasible_points must be provided, and - // {`min_value`, `max_value`} will be ignored. - ParameterSpec_DISCRETE ParameterSpec_ParameterType = 4 -) - -var ParameterSpec_ParameterType_name = map[int32]string{ - 0: "PARAMETER_TYPE_UNSPECIFIED", - 1: "DOUBLE", - 2: "INTEGER", - 3: "CATEGORICAL", - 4: "DISCRETE", -} -var ParameterSpec_ParameterType_value = map[string]int32{ - "PARAMETER_TYPE_UNSPECIFIED": 0, - "DOUBLE": 1, - "INTEGER": 2, - "CATEGORICAL": 3, - "DISCRETE": 4, -} - -func (x ParameterSpec_ParameterType) String() string { - return proto.EnumName(ParameterSpec_ParameterType_name, int32(x)) -} -func (ParameterSpec_ParameterType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{2, 0} -} - -// The type of scaling that should be applied to this parameter. -type ParameterSpec_ScaleType int32 - -const ( - // By default, no scaling is applied. - ParameterSpec_NONE ParameterSpec_ScaleType = 0 - // Scales the feasible space to (0, 1) linearly. - ParameterSpec_UNIT_LINEAR_SCALE ParameterSpec_ScaleType = 1 - // Scales the feasible space logarithmically to (0, 1). The entire feasible - // space must be strictly positive. - ParameterSpec_UNIT_LOG_SCALE ParameterSpec_ScaleType = 2 - // Scales the feasible space "reverse" logarithmically to (0, 1). The result - // is that values close to the top of the feasible space are spread out more - // than points near the bottom. The entire feasible space must be strictly - // positive. - ParameterSpec_UNIT_REVERSE_LOG_SCALE ParameterSpec_ScaleType = 3 -) - -var ParameterSpec_ScaleType_name = map[int32]string{ - 0: "NONE", - 1: "UNIT_LINEAR_SCALE", - 2: "UNIT_LOG_SCALE", - 3: "UNIT_REVERSE_LOG_SCALE", -} -var ParameterSpec_ScaleType_value = map[string]int32{ - "NONE": 0, - "UNIT_LINEAR_SCALE": 1, - "UNIT_LOG_SCALE": 2, - "UNIT_REVERSE_LOG_SCALE": 3, -} - -func (x ParameterSpec_ScaleType) String() string { - return proto.EnumName(ParameterSpec_ScaleType_name, int32(x)) -} -func (ParameterSpec_ScaleType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} } - -// The format used to separate data instances in the source files. -type PredictionInput_DataFormat int32 - -const ( - // Unspecified format. - PredictionInput_DATA_FORMAT_UNSPECIFIED PredictionInput_DataFormat = 0 - // The source file is a text file with instances separated by the - // new-line character. - PredictionInput_TEXT PredictionInput_DataFormat = 1 - // The source file is a TFRecord file. - PredictionInput_TF_RECORD PredictionInput_DataFormat = 2 - // The source file is a GZIP-compressed TFRecord file. - PredictionInput_TF_RECORD_GZIP PredictionInput_DataFormat = 3 -) - -var PredictionInput_DataFormat_name = map[int32]string{ - 0: "DATA_FORMAT_UNSPECIFIED", - 1: "TEXT", - 2: "TF_RECORD", - 3: "TF_RECORD_GZIP", -} -var PredictionInput_DataFormat_value = map[string]int32{ - "DATA_FORMAT_UNSPECIFIED": 0, - "TEXT": 1, - "TF_RECORD": 2, - "TF_RECORD_GZIP": 3, -} - -func (x PredictionInput_DataFormat) String() string { - return proto.EnumName(PredictionInput_DataFormat_name, int32(x)) -} -func (PredictionInput_DataFormat) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 0} -} - -// Describes the job state. -type Job_State int32 - -const ( - // The job state is unspecified. - Job_STATE_UNSPECIFIED Job_State = 0 - // The job has been just created and processing has not yet begun. - Job_QUEUED Job_State = 1 - // The service is preparing to run the job. - Job_PREPARING Job_State = 2 - // The job is in progress. - Job_RUNNING Job_State = 3 - // The job completed successfully. - Job_SUCCEEDED Job_State = 4 - // The job failed. - // `error_message` should contain the details of the failure. - Job_FAILED Job_State = 5 - // The job is being cancelled. - // `error_message` should describe the reason for the cancellation. - Job_CANCELLING Job_State = 6 - // The job has been cancelled. - // `error_message` should describe the reason for the cancellation. - Job_CANCELLED Job_State = 7 -) - -var Job_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "QUEUED", - 2: "PREPARING", - 3: "RUNNING", - 4: "SUCCEEDED", - 5: "FAILED", - 6: "CANCELLING", - 7: "CANCELLED", -} -var Job_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "QUEUED": 1, - "PREPARING": 2, - "RUNNING": 3, - "SUCCEEDED": 4, - "FAILED": 5, - "CANCELLING": 6, - "CANCELLED": 7, -} - -func (x Job_State) String() string { - return proto.EnumName(Job_State_name, int32(x)) -} -func (Job_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -// Represents input parameters for a training job. -type TrainingInput struct { - // Required. Specifies the machine types, the number of replicas for workers - // and parameter servers. - ScaleTier TrainingInput_ScaleTier `protobuf:"varint,1,opt,name=scale_tier,json=scaleTier,enum=google.cloud.ml.v1beta1.TrainingInput_ScaleTier" json:"scale_tier,omitempty"` - // Optional. Specifies the type of virtual machine to use for your training - // job's master worker. - // - // The following types are supported: - // - // <dl> - // <dt>standard</dt> - // <dd> - // A basic machine configuration suitable for training simple models with - // small to moderate datasets. - // </dd> - // <dt>large_model</dt> - // <dd> - // A machine with a lot of memory, specially suited for parameter servers - // when your model is large (having many hidden layers or layers with very - // large numbers of nodes). - // </dd> - // <dt>complex_model_s</dt> - // <dd> - // A machine suitable for the master and workers of the cluster when your - // model requires more computation than the standard machine can handle - // satisfactorily. - // </dd> - // <dt>complex_model_m</dt> - // <dd> - // A machine with roughly twice the number of cores and roughly double the - // memory of <code suppresswarning="true">complex_model_s</code>. - // </dd> - // <dt>complex_model_l</dt> - // <dd> - // A machine with roughly twice the number of cores and roughly double the - // memory of <code suppresswarning="true">complex_model_m</code>. - // </dd> - // <dt>standard_gpu</dt> - // <dd> - // A machine equivalent to <code suppresswarning="true">standard</code> that - // also includes a - // <a href="ml/docs/how-tos/using-gpus"> - // GPU that you can use in your trainer</a>. - // </dd> - // <dt>complex_model_m_gpu</dt> - // <dd> - // A machine equivalent to - // <code suppresswarning="true">coplex_model_m</code> that also includes - // four GPUs. - // </dd> - // </dl> - // - // You must set this value when `scaleTier` is set to `CUSTOM`. - MasterType string `protobuf:"bytes,2,opt,name=master_type,json=masterType" json:"master_type,omitempty"` - // Optional. Specifies the type of virtual machine to use for your training - // job's worker nodes. - // - // The supported values are the same as those described in the entry for - // `masterType`. - // - // This value must be present when `scaleTier` is set to `CUSTOM` and - // `workerCount` is greater than zero. - WorkerType string `protobuf:"bytes,3,opt,name=worker_type,json=workerType" json:"worker_type,omitempty"` - // Optional. Specifies the type of virtual machine to use for your training - // job's parameter server. - // - // The supported values are the same as those described in the entry for - // `master_type`. - // - // This value must be present when `scaleTier` is set to `CUSTOM` and - // `parameter_server_count` is greater than zero. - ParameterServerType string `protobuf:"bytes,4,opt,name=parameter_server_type,json=parameterServerType" json:"parameter_server_type,omitempty"` - // Optional. The number of worker replicas to use for the training job. Each - // replica in the cluster will be of the type specified in `worker_type`. - // - // This value can only be used when `scale_tier` is set to `CUSTOM`. If you - // set this value, you must also set `worker_type`. - WorkerCount int64 `protobuf:"varint,5,opt,name=worker_count,json=workerCount" json:"worker_count,omitempty"` - // Optional. The number of parameter server replicas to use for the training - // job. Each replica in the cluster will be of the type specified in - // `parameter_server_type`. - // - // This value can only be used when `scale_tier` is set to `CUSTOM`.If you - // set this value, you must also set `parameter_server_type`. - ParameterServerCount int64 `protobuf:"varint,6,opt,name=parameter_server_count,json=parameterServerCount" json:"parameter_server_count,omitempty"` - // Required. The Google Cloud Storage location of the packages with - // the training program and any additional dependencies. - PackageUris []string `protobuf:"bytes,7,rep,name=package_uris,json=packageUris" json:"package_uris,omitempty"` - // Required. The Python module name to run after installing the packages. - PythonModule string `protobuf:"bytes,8,opt,name=python_module,json=pythonModule" json:"python_module,omitempty"` - // Optional. Command line arguments to pass to the program. - Args []string `protobuf:"bytes,10,rep,name=args" json:"args,omitempty"` - // Optional. The set of Hyperparameters to tune. - Hyperparameters *HyperparameterSpec `protobuf:"bytes,12,opt,name=hyperparameters" json:"hyperparameters,omitempty"` - // Required. The Google Compute Engine region to run the training job in. - Region string `protobuf:"bytes,14,opt,name=region" json:"region,omitempty"` - // Optional. A Google Cloud Storage path in which to store training outputs - // and other data needed for training. This path is passed to your TensorFlow - // program as the 'job_dir' command-line argument. The benefit of specifying - // this field is that Cloud ML validates the path for use in training. - JobDir string `protobuf:"bytes,16,opt,name=job_dir,json=jobDir" json:"job_dir,omitempty"` - // Optional. The Google Cloud ML runtime version to use for training. If not - // set, Google Cloud ML will choose the latest stable version. - RuntimeVersion string `protobuf:"bytes,15,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"` -} - -func (m *TrainingInput) Reset() { *m = TrainingInput{} } -func (m *TrainingInput) String() string { return proto.CompactTextString(m) } -func (*TrainingInput) ProtoMessage() {} -func (*TrainingInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *TrainingInput) GetScaleTier() TrainingInput_ScaleTier { - if m != nil { - return m.ScaleTier - } - return TrainingInput_BASIC -} - -func (m *TrainingInput) GetMasterType() string { - if m != nil { - return m.MasterType - } - return "" -} - -func (m *TrainingInput) GetWorkerType() string { - if m != nil { - return m.WorkerType - } - return "" -} - -func (m *TrainingInput) GetParameterServerType() string { - if m != nil { - return m.ParameterServerType - } - return "" -} - -func (m *TrainingInput) GetWorkerCount() int64 { - if m != nil { - return m.WorkerCount - } - return 0 -} - -func (m *TrainingInput) GetParameterServerCount() int64 { - if m != nil { - return m.ParameterServerCount - } - return 0 -} - -func (m *TrainingInput) GetPackageUris() []string { - if m != nil { - return m.PackageUris - } - return nil -} - -func (m *TrainingInput) GetPythonModule() string { - if m != nil { - return m.PythonModule - } - return "" -} - -func (m *TrainingInput) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *TrainingInput) GetHyperparameters() *HyperparameterSpec { - if m != nil { - return m.Hyperparameters - } - return nil -} - -func (m *TrainingInput) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *TrainingInput) GetJobDir() string { - if m != nil { - return m.JobDir - } - return "" -} - -func (m *TrainingInput) GetRuntimeVersion() string { - if m != nil { - return m.RuntimeVersion - } - return "" -} - -// Represents a set of hyperparameters to optimize. -type HyperparameterSpec struct { - // Required. The type of goal to use for tuning. Available types are - // `MAXIMIZE` and `MINIMIZE`. - // - // Defaults to `MAXIMIZE`. - Goal HyperparameterSpec_GoalType `protobuf:"varint,1,opt,name=goal,enum=google.cloud.ml.v1beta1.HyperparameterSpec_GoalType" json:"goal,omitempty"` - // Required. The set of parameters to tune. - Params []*ParameterSpec `protobuf:"bytes,2,rep,name=params" json:"params,omitempty"` - // Optional. How many training trials should be attempted to optimize - // the specified hyperparameters. - // - // Defaults to one. - MaxTrials int32 `protobuf:"varint,3,opt,name=max_trials,json=maxTrials" json:"max_trials,omitempty"` - // Optional. The number of training trials to run concurrently. - // You can reduce the time it takes to perform hyperparameter tuning by adding - // trials in parallel. However, each trail only benefits from the information - // gained in completed trials. That means that a trial does not get access to - // the results of trials running at the same time, which could reduce the - // quality of the overall optimization. - // - // Each trial will use the same scale tier and machine types. - // - // Defaults to one. - MaxParallelTrials int32 `protobuf:"varint,4,opt,name=max_parallel_trials,json=maxParallelTrials" json:"max_parallel_trials,omitempty"` - // Optional. The Tensorflow summary tag name to use for optimizing trials. For - // current versions of Tensorflow, this tag name should exactly match what is - // shown in Tensorboard, including all scopes. For versions of Tensorflow - // prior to 0.12, this should be only the tag passed to tf.Summary. - // By default, "training/hptuning/metric" will be used. - HyperparameterMetricTag string `protobuf:"bytes,5,opt,name=hyperparameter_metric_tag,json=hyperparameterMetricTag" json:"hyperparameter_metric_tag,omitempty"` -} - -func (m *HyperparameterSpec) Reset() { *m = HyperparameterSpec{} } -func (m *HyperparameterSpec) String() string { return proto.CompactTextString(m) } -func (*HyperparameterSpec) ProtoMessage() {} -func (*HyperparameterSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *HyperparameterSpec) GetGoal() HyperparameterSpec_GoalType { - if m != nil { - return m.Goal - } - return HyperparameterSpec_GOAL_TYPE_UNSPECIFIED -} - -func (m *HyperparameterSpec) GetParams() []*ParameterSpec { - if m != nil { - return m.Params - } - return nil -} - -func (m *HyperparameterSpec) GetMaxTrials() int32 { - if m != nil { - return m.MaxTrials - } - return 0 -} - -func (m *HyperparameterSpec) GetMaxParallelTrials() int32 { - if m != nil { - return m.MaxParallelTrials - } - return 0 -} - -func (m *HyperparameterSpec) GetHyperparameterMetricTag() string { - if m != nil { - return m.HyperparameterMetricTag - } - return "" -} - -// Represents a single hyperparameter to optimize. -type ParameterSpec struct { - // Required. The parameter name must be unique amongst all ParameterConfigs in - // a HyperparameterSpec message. E.g., "learning_rate". - ParameterName string `protobuf:"bytes,1,opt,name=parameter_name,json=parameterName" json:"parameter_name,omitempty"` - // Required. The type of the parameter. - Type ParameterSpec_ParameterType `protobuf:"varint,4,opt,name=type,enum=google.cloud.ml.v1beta1.ParameterSpec_ParameterType" json:"type,omitempty"` - // Required if type is `DOUBLE` or `INTEGER`. This field - // should be unset if type is `CATEGORICAL`. This value should be integers if - // type is INTEGER. - MinValue float64 `protobuf:"fixed64,2,opt,name=min_value,json=minValue" json:"min_value,omitempty"` - // Required if typeis `DOUBLE` or `INTEGER`. This field - // should be unset if type is `CATEGORICAL`. This value should be integers if - // type is `INTEGER`. - MaxValue float64 `protobuf:"fixed64,3,opt,name=max_value,json=maxValue" json:"max_value,omitempty"` - // Required if type is `CATEGORICAL`. The list of possible categories. - CategoricalValues []string `protobuf:"bytes,5,rep,name=categorical_values,json=categoricalValues" json:"categorical_values,omitempty"` - // Required if type is `DISCRETE`. - // A list of feasible points. - // The list should be in strictly increasing order. For instance, this - // parameter might have possible settings of 1.5, 2.5, and 4.0. This list - // should not contain more than 1,000 values. - DiscreteValues []float64 `protobuf:"fixed64,6,rep,packed,name=discrete_values,json=discreteValues" json:"discrete_values,omitempty"` - // Optional. How the parameter should be scaled to the hypercube. - // Leave unset for categorical parameters. - // Some kind of scaling is strongly recommended for real or integral - // parameters (e.g., `UNIT_LINEAR_SCALE`). - ScaleType ParameterSpec_ScaleType `protobuf:"varint,7,opt,name=scale_type,json=scaleType,enum=google.cloud.ml.v1beta1.ParameterSpec_ScaleType" json:"scale_type,omitempty"` -} - -func (m *ParameterSpec) Reset() { *m = ParameterSpec{} } -func (m *ParameterSpec) String() string { return proto.CompactTextString(m) } -func (*ParameterSpec) ProtoMessage() {} -func (*ParameterSpec) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ParameterSpec) GetParameterName() string { - if m != nil { - return m.ParameterName - } - return "" -} - -func (m *ParameterSpec) GetType() ParameterSpec_ParameterType { - if m != nil { - return m.Type - } - return ParameterSpec_PARAMETER_TYPE_UNSPECIFIED -} - -func (m *ParameterSpec) GetMinValue() float64 { - if m != nil { - return m.MinValue - } - return 0 -} - -func (m *ParameterSpec) GetMaxValue() float64 { - if m != nil { - return m.MaxValue - } - return 0 -} - -func (m *ParameterSpec) GetCategoricalValues() []string { - if m != nil { - return m.CategoricalValues - } - return nil -} - -func (m *ParameterSpec) GetDiscreteValues() []float64 { - if m != nil { - return m.DiscreteValues - } - return nil -} - -func (m *ParameterSpec) GetScaleType() ParameterSpec_ScaleType { - if m != nil { - return m.ScaleType - } - return ParameterSpec_NONE -} - -// Represents the result of a single hyperparameter tuning trial from a -// training job. The TrainingOutput object that is returned on successful -// completion of a training job with hyperparameter tuning includes a list -// of HyperparameterOutput objects, one for each successful trial. -type HyperparameterOutput struct { - // The trial id for these results. - TrialId string `protobuf:"bytes,1,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"` - // The hyperparameters given to this trial. - Hyperparameters map[string]string `protobuf:"bytes,2,rep,name=hyperparameters" json:"hyperparameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The final objective metric seen for this trial. - FinalMetric *HyperparameterOutput_HyperparameterMetric `protobuf:"bytes,3,opt,name=final_metric,json=finalMetric" json:"final_metric,omitempty"` - // All recorded object metrics for this trial. - AllMetrics []*HyperparameterOutput_HyperparameterMetric `protobuf:"bytes,4,rep,name=all_metrics,json=allMetrics" json:"all_metrics,omitempty"` -} - -func (m *HyperparameterOutput) Reset() { *m = HyperparameterOutput{} } -func (m *HyperparameterOutput) String() string { return proto.CompactTextString(m) } -func (*HyperparameterOutput) ProtoMessage() {} -func (*HyperparameterOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *HyperparameterOutput) GetTrialId() string { - if m != nil { - return m.TrialId - } - return "" -} - -func (m *HyperparameterOutput) GetHyperparameters() map[string]string { - if m != nil { - return m.Hyperparameters - } - return nil -} - -func (m *HyperparameterOutput) GetFinalMetric() *HyperparameterOutput_HyperparameterMetric { - if m != nil { - return m.FinalMetric - } - return nil -} - -func (m *HyperparameterOutput) GetAllMetrics() []*HyperparameterOutput_HyperparameterMetric { - if m != nil { - return m.AllMetrics - } - return nil -} - -// An observed value of a metric. -type HyperparameterOutput_HyperparameterMetric struct { - // The global training step for this metric. - TrainingStep int64 `protobuf:"varint,1,opt,name=training_step,json=trainingStep" json:"training_step,omitempty"` - // The objective value at this training step. - ObjectiveValue float64 `protobuf:"fixed64,2,opt,name=objective_value,json=objectiveValue" json:"objective_value,omitempty"` -} - -func (m *HyperparameterOutput_HyperparameterMetric) Reset() { - *m = HyperparameterOutput_HyperparameterMetric{} -} -func (m *HyperparameterOutput_HyperparameterMetric) String() string { return proto.CompactTextString(m) } -func (*HyperparameterOutput_HyperparameterMetric) ProtoMessage() {} -func (*HyperparameterOutput_HyperparameterMetric) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{3, 0} -} - -func (m *HyperparameterOutput_HyperparameterMetric) GetTrainingStep() int64 { - if m != nil { - return m.TrainingStep - } - return 0 -} - -func (m *HyperparameterOutput_HyperparameterMetric) GetObjectiveValue() float64 { - if m != nil { - return m.ObjectiveValue - } - return 0 -} - -// Represents results of a training job. Output only. -type TrainingOutput struct { - // The number of hyperparameter tuning trials that completed successfully. - // Only set for hyperparameter tuning jobs. - CompletedTrialCount int64 `protobuf:"varint,1,opt,name=completed_trial_count,json=completedTrialCount" json:"completed_trial_count,omitempty"` - // Results for individual Hyperparameter trials. - // Only set for hyperparameter tuning jobs. - Trials []*HyperparameterOutput `protobuf:"bytes,2,rep,name=trials" json:"trials,omitempty"` - // The amount of ML units consumed by the job. - ConsumedMlUnits float64 `protobuf:"fixed64,3,opt,name=consumed_ml_units,json=consumedMlUnits" json:"consumed_ml_units,omitempty"` - // Whether this job is a hyperparameter tuning job. - IsHyperparameterTuningJob bool `protobuf:"varint,4,opt,name=is_hyperparameter_tuning_job,json=isHyperparameterTuningJob" json:"is_hyperparameter_tuning_job,omitempty"` -} - -func (m *TrainingOutput) Reset() { *m = TrainingOutput{} } -func (m *TrainingOutput) String() string { return proto.CompactTextString(m) } -func (*TrainingOutput) ProtoMessage() {} -func (*TrainingOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *TrainingOutput) GetCompletedTrialCount() int64 { - if m != nil { - return m.CompletedTrialCount - } - return 0 -} - -func (m *TrainingOutput) GetTrials() []*HyperparameterOutput { - if m != nil { - return m.Trials - } - return nil -} - -func (m *TrainingOutput) GetConsumedMlUnits() float64 { - if m != nil { - return m.ConsumedMlUnits - } - return 0 -} - -func (m *TrainingOutput) GetIsHyperparameterTuningJob() bool { - if m != nil { - return m.IsHyperparameterTuningJob - } - return false -} - -// Represents input parameters for a prediction job. -type PredictionInput struct { - // Required. The model or the version to use for prediction. - // - // Types that are valid to be assigned to ModelVersion: - // *PredictionInput_ModelName - // *PredictionInput_VersionName - // *PredictionInput_Uri - ModelVersion isPredictionInput_ModelVersion `protobuf_oneof:"model_version"` - // Required. The format of the input data files. - DataFormat PredictionInput_DataFormat `protobuf:"varint,3,opt,name=data_format,json=dataFormat,enum=google.cloud.ml.v1beta1.PredictionInput_DataFormat" json:"data_format,omitempty"` - // Required. The Google Cloud Storage location of the input data files. - // May contain wildcards. - InputPaths []string `protobuf:"bytes,4,rep,name=input_paths,json=inputPaths" json:"input_paths,omitempty"` - // Required. The output Google Cloud Storage location. - OutputPath string `protobuf:"bytes,5,opt,name=output_path,json=outputPath" json:"output_path,omitempty"` - // Optional. The maximum number of workers to be used for parallel processing. - // Defaults to 10 if not specified. - MaxWorkerCount int64 `protobuf:"varint,6,opt,name=max_worker_count,json=maxWorkerCount" json:"max_worker_count,omitempty"` - // Required. The Google Compute Engine region to run the prediction job in. - Region string `protobuf:"bytes,7,opt,name=region" json:"region,omitempty"` - // Optional. The Google Cloud ML runtime version to use for this batch - // prediction. If not set, Google Cloud ML will pick the runtime version used - // during the CreateVersion request for this model version, or choose the - // latest stable version when model version information is not available - // such as when the model is specified by uri. - RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"` -} - -func (m *PredictionInput) Reset() { *m = PredictionInput{} } -func (m *PredictionInput) String() string { return proto.CompactTextString(m) } -func (*PredictionInput) ProtoMessage() {} -func (*PredictionInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -type isPredictionInput_ModelVersion interface { - isPredictionInput_ModelVersion() -} - -type PredictionInput_ModelName struct { - ModelName string `protobuf:"bytes,1,opt,name=model_name,json=modelName,oneof"` -} -type PredictionInput_VersionName struct { - VersionName string `protobuf:"bytes,2,opt,name=version_name,json=versionName,oneof"` -} -type PredictionInput_Uri struct { - Uri string `protobuf:"bytes,9,opt,name=uri,oneof"` -} - -func (*PredictionInput_ModelName) isPredictionInput_ModelVersion() {} -func (*PredictionInput_VersionName) isPredictionInput_ModelVersion() {} -func (*PredictionInput_Uri) isPredictionInput_ModelVersion() {} - -func (m *PredictionInput) GetModelVersion() isPredictionInput_ModelVersion { - if m != nil { - return m.ModelVersion - } - return nil -} - -func (m *PredictionInput) GetModelName() string { - if x, ok := m.GetModelVersion().(*PredictionInput_ModelName); ok { - return x.ModelName - } - return "" -} - -func (m *PredictionInput) GetVersionName() string { - if x, ok := m.GetModelVersion().(*PredictionInput_VersionName); ok { - return x.VersionName - } - return "" -} - -func (m *PredictionInput) GetUri() string { - if x, ok := m.GetModelVersion().(*PredictionInput_Uri); ok { - return x.Uri - } - return "" -} - -func (m *PredictionInput) GetDataFormat() PredictionInput_DataFormat { - if m != nil { - return m.DataFormat - } - return PredictionInput_DATA_FORMAT_UNSPECIFIED -} - -func (m *PredictionInput) GetInputPaths() []string { - if m != nil { - return m.InputPaths - } - return nil -} - -func (m *PredictionInput) GetOutputPath() string { - if m != nil { - return m.OutputPath - } - return "" -} - -func (m *PredictionInput) GetMaxWorkerCount() int64 { - if m != nil { - return m.MaxWorkerCount - } - return 0 -} - -func (m *PredictionInput) GetRegion() string { - if m != nil { - return m.Region - } - return "" -} - -func (m *PredictionInput) GetRuntimeVersion() string { - if m != nil { - return m.RuntimeVersion - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PredictionInput) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PredictionInput_OneofMarshaler, _PredictionInput_OneofUnmarshaler, _PredictionInput_OneofSizer, []interface{}{ - (*PredictionInput_ModelName)(nil), - (*PredictionInput_VersionName)(nil), - (*PredictionInput_Uri)(nil), - } -} - -func _PredictionInput_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PredictionInput) - // model_version - switch x := m.ModelVersion.(type) { - case *PredictionInput_ModelName: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ModelName) - case *PredictionInput_VersionName: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.VersionName) - case *PredictionInput_Uri: - b.EncodeVarint(9<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Uri) - case nil: - default: - return fmt.Errorf("PredictionInput.ModelVersion has unexpected type %T", x) - } - return nil -} - -func _PredictionInput_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PredictionInput) - switch tag { - case 1: // model_version.model_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ModelVersion = &PredictionInput_ModelName{x} - return true, err - case 2: // model_version.version_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ModelVersion = &PredictionInput_VersionName{x} - return true, err - case 9: // model_version.uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ModelVersion = &PredictionInput_Uri{x} - return true, err - default: - return false, nil - } -} - -func _PredictionInput_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PredictionInput) - // model_version - switch x := m.ModelVersion.(type) { - case *PredictionInput_ModelName: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ModelName))) - n += len(x.ModelName) - case *PredictionInput_VersionName: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.VersionName))) - n += len(x.VersionName) - case *PredictionInput_Uri: - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Uri))) - n += len(x.Uri) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents results of a prediction job. -type PredictionOutput struct { - // The output Google Cloud Storage location provided at the job creation time. - OutputPath string `protobuf:"bytes,1,opt,name=output_path,json=outputPath" json:"output_path,omitempty"` - // The number of generated predictions. - PredictionCount int64 `protobuf:"varint,2,opt,name=prediction_count,json=predictionCount" json:"prediction_count,omitempty"` - // The number of data instances which resulted in errors. - ErrorCount int64 `protobuf:"varint,3,opt,name=error_count,json=errorCount" json:"error_count,omitempty"` - // Node hours used by the batch prediction job. - NodeHours float64 `protobuf:"fixed64,4,opt,name=node_hours,json=nodeHours" json:"node_hours,omitempty"` -} - -func (m *PredictionOutput) Reset() { *m = PredictionOutput{} } -func (m *PredictionOutput) String() string { return proto.CompactTextString(m) } -func (*PredictionOutput) ProtoMessage() {} -func (*PredictionOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *PredictionOutput) GetOutputPath() string { - if m != nil { - return m.OutputPath - } - return "" -} - -func (m *PredictionOutput) GetPredictionCount() int64 { - if m != nil { - return m.PredictionCount - } - return 0 -} - -func (m *PredictionOutput) GetErrorCount() int64 { - if m != nil { - return m.ErrorCount - } - return 0 -} - -func (m *PredictionOutput) GetNodeHours() float64 { - if m != nil { - return m.NodeHours - } - return 0 -} - -// Represents a training or prediction job. -type Job struct { - // Required. The user-specified id of the job. - JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId" json:"job_id,omitempty"` - // Required. Parameters to create a job. - // - // Types that are valid to be assigned to Input: - // *Job_TrainingInput - // *Job_PredictionInput - Input isJob_Input `protobuf_oneof:"input"` - // Output only. When the job was created. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. When the job processing was started. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Output only. When the job processing was completed. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Output only. The detailed state of a job. - State Job_State `protobuf:"varint,7,opt,name=state,enum=google.cloud.ml.v1beta1.Job_State" json:"state,omitempty"` - // Output only. The details of a failure or a cancellation. - ErrorMessage string `protobuf:"bytes,8,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"` - // Output only. The current result of the job. - // - // Types that are valid to be assigned to Output: - // *Job_TrainingOutput - // *Job_PredictionOutput - Output isJob_Output `protobuf_oneof:"output"` -} - -func (m *Job) Reset() { *m = Job{} } -func (m *Job) String() string { return proto.CompactTextString(m) } -func (*Job) ProtoMessage() {} -func (*Job) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -type isJob_Input interface { - isJob_Input() -} -type isJob_Output interface { - isJob_Output() -} - -type Job_TrainingInput struct { - TrainingInput *TrainingInput `protobuf:"bytes,2,opt,name=training_input,json=trainingInput,oneof"` -} -type Job_PredictionInput struct { - PredictionInput *PredictionInput `protobuf:"bytes,3,opt,name=prediction_input,json=predictionInput,oneof"` -} -type Job_TrainingOutput struct { - TrainingOutput *TrainingOutput `protobuf:"bytes,9,opt,name=training_output,json=trainingOutput,oneof"` -} -type Job_PredictionOutput struct { - PredictionOutput *PredictionOutput `protobuf:"bytes,10,opt,name=prediction_output,json=predictionOutput,oneof"` -} - -func (*Job_TrainingInput) isJob_Input() {} -func (*Job_PredictionInput) isJob_Input() {} -func (*Job_TrainingOutput) isJob_Output() {} -func (*Job_PredictionOutput) isJob_Output() {} - -func (m *Job) GetInput() isJob_Input { - if m != nil { - return m.Input - } - return nil -} -func (m *Job) GetOutput() isJob_Output { - if m != nil { - return m.Output - } - return nil -} - -func (m *Job) GetJobId() string { - if m != nil { - return m.JobId - } - return "" -} - -func (m *Job) GetTrainingInput() *TrainingInput { - if x, ok := m.GetInput().(*Job_TrainingInput); ok { - return x.TrainingInput - } - return nil -} - -func (m *Job) GetPredictionInput() *PredictionInput { - if x, ok := m.GetInput().(*Job_PredictionInput); ok { - return x.PredictionInput - } - return nil -} - -func (m *Job) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Job) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *Job) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *Job) GetState() Job_State { - if m != nil { - return m.State - } - return Job_STATE_UNSPECIFIED -} - -func (m *Job) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage - } - return "" -} - -func (m *Job) GetTrainingOutput() *TrainingOutput { - if x, ok := m.GetOutput().(*Job_TrainingOutput); ok { - return x.TrainingOutput - } - return nil -} - -func (m *Job) GetPredictionOutput() *PredictionOutput { - if x, ok := m.GetOutput().(*Job_PredictionOutput); ok { - return x.PredictionOutput - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Job) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Job_OneofMarshaler, _Job_OneofUnmarshaler, _Job_OneofSizer, []interface{}{ - (*Job_TrainingInput)(nil), - (*Job_PredictionInput)(nil), - (*Job_TrainingOutput)(nil), - (*Job_PredictionOutput)(nil), - } -} - -func _Job_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Job) - // input - switch x := m.Input.(type) { - case *Job_TrainingInput: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TrainingInput); err != nil { - return err - } - case *Job_PredictionInput: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PredictionInput); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Job.Input has unexpected type %T", x) - } - // output - switch x := m.Output.(type) { - case *Job_TrainingOutput: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TrainingOutput); err != nil { - return err - } - case *Job_PredictionOutput: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PredictionOutput); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Job.Output has unexpected type %T", x) - } - return nil -} - -func _Job_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Job) - switch tag { - case 2: // input.training_input - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TrainingInput) - err := b.DecodeMessage(msg) - m.Input = &Job_TrainingInput{msg} - return true, err - case 3: // input.prediction_input - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PredictionInput) - err := b.DecodeMessage(msg) - m.Input = &Job_PredictionInput{msg} - return true, err - case 9: // output.training_output - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TrainingOutput) - err := b.DecodeMessage(msg) - m.Output = &Job_TrainingOutput{msg} - return true, err - case 10: // output.prediction_output - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PredictionOutput) - err := b.DecodeMessage(msg) - m.Output = &Job_PredictionOutput{msg} - return true, err - default: - return false, nil - } -} - -func _Job_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Job) - // input - switch x := m.Input.(type) { - case *Job_TrainingInput: - s := proto.Size(x.TrainingInput) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_PredictionInput: - s := proto.Size(x.PredictionInput) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // output - switch x := m.Output.(type) { - case *Job_TrainingOutput: - s := proto.Size(x.TrainingOutput) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Job_PredictionOutput: - s := proto.Size(x.PredictionOutput) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Request message for the CreateJob method. -type CreateJobRequest struct { - // Required. The project name. - // - // Authorization: requires `Editor` role on the specified project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The job to create. - Job *Job `protobuf:"bytes,2,opt,name=job" json:"job,omitempty"` -} - -func (m *CreateJobRequest) Reset() { *m = CreateJobRequest{} } -func (m *CreateJobRequest) String() string { return proto.CompactTextString(m) } -func (*CreateJobRequest) ProtoMessage() {} -func (*CreateJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *CreateJobRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateJobRequest) GetJob() *Job { - if m != nil { - return m.Job - } - return nil -} - -// Request message for the ListJobs method. -type ListJobsRequest struct { - // Required. The name of the project for which to list jobs. - // - // Authorization: requires `Viewer` role on the specified project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. Specifies the subset of jobs to retrieve. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // Optional. A page token to request the next page of results. - // - // You get the token from the `next_page_token` field of the response from - // the previous call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The number of jobs to retrieve per "page" of results. If there - // are more remaining results than this number, the response message will - // contain a valid value in the `next_page_token` field. - // - // The default value is 20, and the maximum page size is 100. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListJobsRequest) Reset() { *m = ListJobsRequest{} } -func (m *ListJobsRequest) String() string { return proto.CompactTextString(m) } -func (*ListJobsRequest) ProtoMessage() {} -func (*ListJobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ListJobsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListJobsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListJobsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListJobsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for the ListJobs method. -type ListJobsResponse struct { - // The list of jobs. - Jobs []*Job `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"` - // Optional. Pass this token as the `page_token` field of the request for a - // subsequent call. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListJobsResponse) Reset() { *m = ListJobsResponse{} } -func (m *ListJobsResponse) String() string { return proto.CompactTextString(m) } -func (*ListJobsResponse) ProtoMessage() {} -func (*ListJobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *ListJobsResponse) GetJobs() []*Job { - if m != nil { - return m.Jobs - } - return nil -} - -func (m *ListJobsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for the GetJob method. -type GetJobRequest struct { - // Required. The name of the job to get the description of. - // - // Authorization: requires `Viewer` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetJobRequest) Reset() { *m = GetJobRequest{} } -func (m *GetJobRequest) String() string { return proto.CompactTextString(m) } -func (*GetJobRequest) ProtoMessage() {} -func (*GetJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *GetJobRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for the CancelJob method. -type CancelJobRequest struct { - // Required. The name of the job to cancel. - // - // Authorization: requires `Editor` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *CancelJobRequest) Reset() { *m = CancelJobRequest{} } -func (m *CancelJobRequest) String() string { return proto.CompactTextString(m) } -func (*CancelJobRequest) ProtoMessage() {} -func (*CancelJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *CancelJobRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*TrainingInput)(nil), "google.cloud.ml.v1beta1.TrainingInput") - proto.RegisterType((*HyperparameterSpec)(nil), "google.cloud.ml.v1beta1.HyperparameterSpec") - proto.RegisterType((*ParameterSpec)(nil), "google.cloud.ml.v1beta1.ParameterSpec") - proto.RegisterType((*HyperparameterOutput)(nil), "google.cloud.ml.v1beta1.HyperparameterOutput") - proto.RegisterType((*HyperparameterOutput_HyperparameterMetric)(nil), "google.cloud.ml.v1beta1.HyperparameterOutput.HyperparameterMetric") - proto.RegisterType((*TrainingOutput)(nil), "google.cloud.ml.v1beta1.TrainingOutput") - proto.RegisterType((*PredictionInput)(nil), "google.cloud.ml.v1beta1.PredictionInput") - proto.RegisterType((*PredictionOutput)(nil), "google.cloud.ml.v1beta1.PredictionOutput") - proto.RegisterType((*Job)(nil), "google.cloud.ml.v1beta1.Job") - proto.RegisterType((*CreateJobRequest)(nil), "google.cloud.ml.v1beta1.CreateJobRequest") - proto.RegisterType((*ListJobsRequest)(nil), "google.cloud.ml.v1beta1.ListJobsRequest") - proto.RegisterType((*ListJobsResponse)(nil), "google.cloud.ml.v1beta1.ListJobsResponse") - proto.RegisterType((*GetJobRequest)(nil), "google.cloud.ml.v1beta1.GetJobRequest") - proto.RegisterType((*CancelJobRequest)(nil), "google.cloud.ml.v1beta1.CancelJobRequest") - proto.RegisterEnum("google.cloud.ml.v1beta1.TrainingInput_ScaleTier", TrainingInput_ScaleTier_name, TrainingInput_ScaleTier_value) - proto.RegisterEnum("google.cloud.ml.v1beta1.HyperparameterSpec_GoalType", HyperparameterSpec_GoalType_name, HyperparameterSpec_GoalType_value) - proto.RegisterEnum("google.cloud.ml.v1beta1.ParameterSpec_ParameterType", ParameterSpec_ParameterType_name, ParameterSpec_ParameterType_value) - proto.RegisterEnum("google.cloud.ml.v1beta1.ParameterSpec_ScaleType", ParameterSpec_ScaleType_name, ParameterSpec_ScaleType_value) - proto.RegisterEnum("google.cloud.ml.v1beta1.PredictionInput_DataFormat", PredictionInput_DataFormat_name, PredictionInput_DataFormat_value) - proto.RegisterEnum("google.cloud.ml.v1beta1.Job_State", Job_State_name, Job_State_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for JobService service - -type JobServiceClient interface { - // Creates a training or a batch prediction job. - CreateJob(ctx context.Context, in *CreateJobRequest, opts ...grpc.CallOption) (*Job, error) - // Lists the jobs in the project. - ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) - // Describes a job. - GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) - // Cancels a running job. - CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) -} - -type jobServiceClient struct { - cc *grpc.ClientConn -} - -func NewJobServiceClient(cc *grpc.ClientConn) JobServiceClient { - return &jobServiceClient{cc} -} - -func (c *jobServiceClient) CreateJob(ctx context.Context, in *CreateJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.JobService/CreateJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { - out := new(ListJobsResponse) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.JobService/ListJobs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*Job, error) { - out := new(Job) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.JobService/GetJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) CancelJob(ctx context.Context, in *CancelJobRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.JobService/CancelJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for JobService service - -type JobServiceServer interface { - // Creates a training or a batch prediction job. - CreateJob(context.Context, *CreateJobRequest) (*Job, error) - // Lists the jobs in the project. - ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) - // Describes a job. - GetJob(context.Context, *GetJobRequest) (*Job, error) - // Cancels a running job. - CancelJob(context.Context, *CancelJobRequest) (*google_protobuf1.Empty, error) -} - -func RegisterJobServiceServer(s *grpc.Server, srv JobServiceServer) { - s.RegisterService(&_JobService_serviceDesc, srv) -} - -func _JobService_CreateJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).CreateJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.JobService/CreateJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).CreateJob(ctx, req.(*CreateJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListJobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).ListJobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.JobService/ListJobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).ListJobs(ctx, req.(*ListJobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).GetJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.JobService/GetJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).GetJob(ctx, req.(*GetJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_CancelJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).CancelJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.JobService/CancelJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).CancelJob(ctx, req.(*CancelJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _JobService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.ml.v1beta1.JobService", - HandlerType: (*JobServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateJob", - Handler: _JobService_CreateJob_Handler, - }, - { - MethodName: "ListJobs", - Handler: _JobService_ListJobs_Handler, - }, - { - MethodName: "GetJob", - Handler: _JobService_GetJob_Handler, - }, - { - MethodName: "CancelJob", - Handler: _JobService_CancelJob_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/ml/v1beta1/job_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/ml/v1beta1/job_service.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2082 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4b, 0x6f, 0x1b, 0xc9, - 0x11, 0x16, 0x9f, 0x22, 0x8b, 0x12, 0x39, 0x6e, 0x5b, 0x36, 0x2d, 0x7b, 0x63, 0x79, 0x8c, 0x78, - 0x65, 0x07, 0x26, 0xd7, 0xf2, 0x06, 0xd8, 0xf5, 0x22, 0x09, 0x28, 0x72, 0x2c, 0x51, 0x10, 0x1f, - 0x69, 0x0e, 0x1d, 0xc7, 0x08, 0x30, 0x68, 0x92, 0x6d, 0x7a, 0xe4, 0x99, 0xe9, 0xc9, 0x4c, 0xd3, - 0x91, 0x36, 0x30, 0x10, 0x24, 0x39, 0xe5, 0x90, 0x4b, 0x90, 0x1c, 0x03, 0xe4, 0x9a, 0xbf, 0x93, - 0x43, 0xfe, 0x40, 0x8e, 0xf9, 0x01, 0x39, 0x06, 0xfd, 0xe0, 0x53, 0x96, 0xe4, 0x45, 0x72, 0x63, - 0x7f, 0xf5, 0x55, 0x55, 0x77, 0x55, 0x75, 0x4d, 0x35, 0xe1, 0xd1, 0x98, 0xb1, 0xb1, 0x47, 0xab, - 0x43, 0x8f, 0x4d, 0x46, 0x55, 0xdf, 0xab, 0xbe, 0x7f, 0x3a, 0xa0, 0x9c, 0x3c, 0xad, 0x9e, 0xb0, - 0x81, 0x13, 0xd3, 0xe8, 0xbd, 0x3b, 0xa4, 0x95, 0x30, 0x62, 0x9c, 0xa1, 0x5b, 0x8a, 0x5a, 0x91, - 0xd4, 0x8a, 0xef, 0x55, 0x34, 0x75, 0xfb, 0xae, 0xb6, 0x41, 0x42, 0xb7, 0x4a, 0x82, 0x80, 0x71, - 0xc2, 0x5d, 0x16, 0xc4, 0x4a, 0x6d, 0x7b, 0x6b, 0x51, 0x3a, 0xe1, 0x6f, 0x35, 0x7c, 0x47, 0xc3, - 0x72, 0x35, 0x98, 0xbc, 0xa9, 0x52, 0x3f, 0xe4, 0x67, 0x5a, 0x78, 0x6f, 0x55, 0xc8, 0x5d, 0x9f, - 0xc6, 0x9c, 0xf8, 0xa1, 0x22, 0x98, 0x7f, 0xcc, 0xc0, 0xa6, 0x1d, 0x11, 0x37, 0x70, 0x83, 0x71, - 0x33, 0x08, 0x27, 0x1c, 0x75, 0x00, 0xe2, 0x21, 0xf1, 0xa8, 0xc3, 0x5d, 0x1a, 0x95, 0x13, 0x3b, - 0x89, 0xdd, 0xe2, 0xde, 0x17, 0x95, 0x0b, 0xb6, 0x5c, 0x59, 0xd2, 0xad, 0xf4, 0x84, 0xa2, 0xed, - 0xd2, 0x08, 0xe7, 0xe3, 0xe9, 0x4f, 0x74, 0x0f, 0x0a, 0x3e, 0x89, 0x39, 0x8d, 0x1c, 0x7e, 0x16, - 0xd2, 0x72, 0x72, 0x27, 0xb1, 0x9b, 0xc7, 0xa0, 0x20, 0xfb, 0x2c, 0xa4, 0x82, 0xf0, 0x2b, 0x16, - 0xbd, 0x9b, 0x12, 0x52, 0x8a, 0xa0, 0x20, 0x49, 0xd8, 0x83, 0xad, 0x90, 0x44, 0xc4, 0xa7, 0xc2, - 0x88, 0x88, 0xe5, 0x94, 0x9a, 0x96, 0xd4, 0xeb, 0x33, 0x61, 0x4f, 0xca, 0xa4, 0xce, 0x7d, 0xd8, - 0xd0, 0x46, 0x87, 0x6c, 0x12, 0xf0, 0x72, 0x66, 0x27, 0xb1, 0x9b, 0xc2, 0xda, 0x51, 0x5d, 0x40, - 0xe8, 0x4b, 0xb8, 0x79, 0xce, 0xac, 0x22, 0x67, 0x25, 0xf9, 0xc6, 0x8a, 0x5d, 0xa5, 0x75, 0x1f, - 0x36, 0x42, 0x32, 0x7c, 0x47, 0xc6, 0xd4, 0x99, 0x44, 0x6e, 0x5c, 0x5e, 0xdf, 0x49, 0xed, 0xe6, - 0x71, 0x41, 0x63, 0xfd, 0xc8, 0x8d, 0xd1, 0x03, 0xd8, 0x0c, 0xcf, 0xf8, 0x5b, 0x16, 0x38, 0x3e, - 0x1b, 0x4d, 0x3c, 0x5a, 0xce, 0xc9, 0x7d, 0x6e, 0x28, 0xb0, 0x25, 0x31, 0x84, 0x20, 0x4d, 0xa2, - 0x71, 0x5c, 0x06, 0xa9, 0x2f, 0x7f, 0xa3, 0x3e, 0x94, 0xde, 0x9e, 0x85, 0x34, 0x9a, 0x39, 0x8e, - 0xcb, 0x1b, 0x3b, 0x89, 0xdd, 0xc2, 0xde, 0x0f, 0x2e, 0x4c, 0xc0, 0xe1, 0x12, 0xbf, 0x17, 0xd2, - 0x21, 0x5e, 0xb5, 0x81, 0x6e, 0x42, 0x36, 0xa2, 0x63, 0x97, 0x05, 0xe5, 0xa2, 0xdc, 0x88, 0x5e, - 0xa1, 0x5b, 0xb0, 0x2e, 0xaa, 0x73, 0xe4, 0x46, 0x65, 0x43, 0x09, 0x4e, 0xd8, 0xa0, 0xe1, 0x46, - 0xe8, 0x73, 0x28, 0x45, 0x93, 0x40, 0xd4, 0x8a, 0xf3, 0x9e, 0x46, 0xb1, 0xd0, 0x2c, 0x49, 0x42, - 0x51, 0xc3, 0x2f, 0x15, 0x6a, 0x76, 0x21, 0x3f, 0xcb, 0x39, 0xca, 0x43, 0x66, 0xbf, 0xd6, 0x6b, - 0xd6, 0x8d, 0x35, 0x54, 0x04, 0xe8, 0xd9, 0xb5, 0x76, 0xa3, 0x86, 0x1b, 0xce, 0x53, 0x23, 0x81, - 0x36, 0x21, 0xdf, 0xc5, 0x56, 0xab, 0xd9, 0x6f, 0x39, 0x4f, 0x8d, 0x94, 0x58, 0x4a, 0xa6, 0x73, - 0xd0, 0xed, 0x1b, 0x59, 0x04, 0x90, 0xad, 0xf7, 0x7b, 0x76, 0xa7, 0x65, 0x64, 0xcc, 0x7f, 0x27, - 0x01, 0x9d, 0x3f, 0x13, 0x3a, 0x84, 0xf4, 0x98, 0x11, 0x4f, 0xd7, 0xe3, 0x97, 0xdf, 0x21, 0x1c, - 0x95, 0x03, 0x46, 0x3c, 0x51, 0x12, 0x58, 0x5a, 0x40, 0x3f, 0x86, 0xac, 0x94, 0xc7, 0xe5, 0xe4, - 0x4e, 0x6a, 0xb7, 0xb0, 0xf7, 0xf0, 0x42, 0x5b, 0xdd, 0xa5, 0xa8, 0x6a, 0x2d, 0xf4, 0x19, 0x80, - 0x4f, 0x4e, 0x1d, 0x1e, 0xb9, 0xc4, 0x8b, 0x65, 0xb1, 0x66, 0x70, 0xde, 0x27, 0xa7, 0xb6, 0x04, - 0x50, 0x05, 0xae, 0x0b, 0xb1, 0x20, 0x7b, 0x1e, 0xf5, 0xa6, 0xbc, 0xb4, 0xe4, 0x5d, 0xf3, 0xc9, - 0x69, 0x57, 0x4b, 0x34, 0xff, 0x39, 0xdc, 0x5e, 0x4e, 0x97, 0xe3, 0x53, 0x1e, 0xb9, 0x43, 0x87, - 0x93, 0xb1, 0x2c, 0xda, 0x3c, 0xbe, 0xb5, 0x4c, 0x68, 0x49, 0xb9, 0x4d, 0xc6, 0x66, 0x0d, 0x72, - 0xd3, 0xc3, 0xa1, 0xdb, 0xb0, 0x75, 0xd0, 0xa9, 0x1d, 0x3b, 0xf6, 0xcf, 0xbb, 0x96, 0xd3, 0x6f, - 0xf7, 0xba, 0x56, 0xbd, 0xf9, 0xa2, 0x69, 0x35, 0x8c, 0x35, 0xb4, 0x01, 0xb9, 0x56, 0xed, 0x55, - 0xb3, 0xd5, 0x7c, 0x6d, 0x19, 0x09, 0xb9, 0x6a, 0xb6, 0xd5, 0x2a, 0x69, 0xfe, 0x3d, 0x0d, 0x9b, - 0x4b, 0xe7, 0x44, 0xdf, 0x87, 0xe2, 0x7c, 0x2f, 0x01, 0xf1, 0xa9, 0x8c, 0x79, 0x1e, 0x6f, 0xce, - 0xd0, 0x36, 0xf1, 0xa9, 0x48, 0xc8, 0xec, 0x0a, 0x5e, 0x96, 0x90, 0x25, 0xe3, 0xf3, 0x95, 0x4a, - 0x88, 0xb0, 0x80, 0xee, 0x40, 0xde, 0x77, 0x03, 0xe7, 0x3d, 0xf1, 0x26, 0xaa, 0x3b, 0x24, 0x70, - 0xce, 0x77, 0x83, 0x97, 0x62, 0x2d, 0x85, 0xe4, 0x54, 0x0b, 0x53, 0x5a, 0x48, 0x4e, 0x95, 0xf0, - 0x09, 0xa0, 0x21, 0xe1, 0x74, 0xcc, 0x22, 0x77, 0x48, 0x3c, 0x45, 0x8a, 0xcb, 0x19, 0x79, 0xa1, - 0xae, 0x2d, 0x48, 0x24, 0x3b, 0x16, 0x55, 0x3d, 0x72, 0xe3, 0x61, 0x44, 0x39, 0x9d, 0x72, 0xb3, - 0x3b, 0xa9, 0xdd, 0x04, 0x2e, 0x4e, 0x61, 0x4d, 0x9c, 0xb7, 0x40, 0x71, 0xc2, 0xf5, 0x2b, 0x5a, - 0xe0, 0xf2, 0x09, 0xd5, 0x75, 0x10, 0xa7, 0xd3, 0x2d, 0xf0, 0x2c, 0xa4, 0xe6, 0x78, 0x21, 0xc8, - 0x32, 0x5b, 0xdf, 0x83, 0xed, 0x6e, 0x0d, 0xd7, 0x5a, 0x96, 0x6d, 0xe1, 0x8f, 0xa5, 0x0c, 0x20, - 0xdb, 0xe8, 0xf4, 0xf7, 0x8f, 0x45, 0xc2, 0x0a, 0xb0, 0xde, 0x6c, 0xdb, 0xd6, 0x81, 0x85, 0x8d, - 0x24, 0x2a, 0x41, 0xa1, 0x5e, 0xb3, 0xad, 0x83, 0x0e, 0x6e, 0xd6, 0x6b, 0xc7, 0x46, 0x4a, 0xa4, - 0xb3, 0xd1, 0xec, 0xd5, 0xb1, 0x65, 0x5b, 0x46, 0xda, 0xfc, 0xc5, 0xf4, 0x3e, 0x0a, 0x27, 0x39, - 0x48, 0xb7, 0x3b, 0x6d, 0xcb, 0x58, 0x43, 0x5b, 0x70, 0xad, 0xdf, 0x6e, 0xda, 0xce, 0x71, 0xb3, - 0x6d, 0xd5, 0xb0, 0xd3, 0xab, 0xd7, 0xa4, 0x65, 0x04, 0x45, 0x05, 0x77, 0x0e, 0x34, 0x96, 0x44, - 0xdb, 0x70, 0x53, 0x62, 0xd8, 0x7a, 0x69, 0xe1, 0x9e, 0xb5, 0x20, 0x4b, 0x99, 0x7f, 0x4e, 0xc3, - 0x8d, 0xe5, 0x0b, 0xd6, 0x99, 0x70, 0xf1, 0xcd, 0xb8, 0x0d, 0x39, 0x59, 0xe7, 0x8e, 0x3b, 0xd2, - 0xd5, 0xb2, 0x2e, 0xd7, 0xcd, 0x11, 0xf2, 0xce, 0xb7, 0x34, 0x75, 0xef, 0xf6, 0x3f, 0xf1, 0x0e, - 0x2b, 0x17, 0x2b, 0x60, 0x6c, 0x05, 0x3c, 0x3a, 0x3b, 0xdf, 0xe9, 0x28, 0x6c, 0xbc, 0x71, 0x03, - 0xe2, 0xe9, 0x4b, 0x24, 0x2b, 0xe6, 0x7f, 0x74, 0xa5, 0xae, 0x1b, 0x2e, 0x48, 0xbb, 0x6a, 0x81, - 0x86, 0x50, 0x20, 0xde, 0xd4, 0x89, 0xb8, 0xdc, 0xa9, 0xff, 0x93, 0x17, 0x20, 0x9e, 0xf6, 0x11, - 0x6f, 0x8f, 0x56, 0x83, 0xad, 0x9d, 0x3f, 0x80, 0x4d, 0xae, 0xbf, 0xba, 0x4e, 0xcc, 0x69, 0x28, - 0x23, 0x9e, 0xc2, 0x1b, 0x53, 0xb0, 0xc7, 0x69, 0x28, 0x6a, 0x9d, 0x0d, 0x4e, 0xe8, 0x90, 0xbb, - 0xef, 0xe9, 0xd2, 0xd5, 0x2a, 0xce, 0x60, 0x59, 0xec, 0xdb, 0xfb, 0xab, 0x5e, 0x54, 0x68, 0x91, - 0x01, 0xa9, 0x77, 0xf4, 0x4c, 0x67, 0x53, 0xfc, 0x44, 0x37, 0x20, 0x33, 0x37, 0x94, 0xc7, 0x6a, - 0xf1, 0x3c, 0xf9, 0x55, 0xc2, 0xfc, 0x4f, 0x02, 0x8a, 0xd3, 0x41, 0x40, 0x57, 0xc4, 0x1e, 0x6c, - 0x0d, 0x99, 0x1f, 0x7a, 0x94, 0xd3, 0x91, 0xea, 0x81, 0xfa, 0xd3, 0xaa, 0x36, 0x7b, 0x7d, 0x26, - 0x94, 0x6d, 0x50, 0x7d, 0x59, 0x2d, 0xc8, 0xea, 0x6e, 0xa9, 0x2a, 0xe4, 0xc9, 0x77, 0x0a, 0x28, - 0xd6, 0xca, 0xe8, 0x31, 0x5c, 0x1b, 0xb2, 0x20, 0x9e, 0xf8, 0x74, 0xe4, 0xf8, 0x9e, 0x33, 0x09, - 0x5c, 0x1e, 0xeb, 0xd6, 0x51, 0x9a, 0x0a, 0x5a, 0x5e, 0x5f, 0xc0, 0xe8, 0x27, 0x70, 0xd7, 0x8d, - 0x9d, 0x95, 0x06, 0xcc, 0x27, 0x32, 0xb6, 0x27, 0x6c, 0x20, 0xbb, 0x5b, 0x0e, 0xdf, 0x76, 0xe3, - 0x65, 0x8f, 0xb6, 0x64, 0x1c, 0xb1, 0x81, 0xf9, 0xcf, 0x14, 0x94, 0xba, 0x11, 0x1d, 0xb9, 0x43, - 0x31, 0xaa, 0xa9, 0x09, 0xea, 0x1e, 0x80, 0xcf, 0x46, 0xd4, 0x5b, 0xe8, 0x9e, 0x87, 0x6b, 0x38, - 0x2f, 0x31, 0xd9, 0x3b, 0x1f, 0xc0, 0x86, 0xfe, 0xac, 0x2a, 0x4a, 0x52, 0x53, 0x0a, 0x1a, 0x95, - 0x24, 0x04, 0xa9, 0x49, 0xe4, 0x96, 0xf3, 0x5a, 0x26, 0x16, 0xc8, 0x86, 0xc2, 0x88, 0x70, 0xe2, - 0xbc, 0x61, 0x91, 0x4f, 0xb8, 0x3c, 0x54, 0x71, 0xef, 0xd9, 0xc5, 0x9d, 0x69, 0x79, 0x63, 0x95, - 0x06, 0xe1, 0xe4, 0x85, 0x54, 0xc5, 0x30, 0x9a, 0xfd, 0x16, 0xf3, 0x97, 0x2b, 0xe4, 0x4e, 0x48, - 0xf8, 0x5b, 0x55, 0xcd, 0x79, 0x0c, 0x12, 0xea, 0x0a, 0x44, 0x10, 0x98, 0x8c, 0xb1, 0x64, 0xe8, - 0xaf, 0x12, 0x28, 0x48, 0x30, 0xd0, 0x2e, 0x18, 0xa2, 0x4b, 0x2f, 0x0d, 0x5c, 0x6a, 0x86, 0x2a, - 0xfa, 0xe4, 0xf4, 0x67, 0x0b, 0x33, 0xd7, 0x7c, 0x14, 0x59, 0x5f, 0x1a, 0x45, 0x3e, 0x32, 0x71, - 0xe4, 0x3e, 0x3a, 0x71, 0xbc, 0x04, 0x98, 0x1f, 0x03, 0xdd, 0x81, 0x5b, 0x8d, 0x9a, 0x5d, 0x73, - 0x5e, 0x74, 0x70, 0xab, 0x66, 0xaf, 0x34, 0xd1, 0x1c, 0xa4, 0x6d, 0xeb, 0x95, 0xad, 0xc6, 0x0f, - 0xfb, 0x85, 0x83, 0xad, 0x7a, 0x07, 0x37, 0x8c, 0xa4, 0xe8, 0x7b, 0xb3, 0xa5, 0x73, 0xf0, 0xba, - 0xd9, 0x35, 0x52, 0xfb, 0x25, 0xd8, 0x54, 0x49, 0xd3, 0xee, 0xcd, 0xbf, 0x26, 0xc0, 0x98, 0x07, - 0x50, 0x97, 0xf5, 0x4a, 0x24, 0x12, 0xe7, 0x22, 0xf1, 0x08, 0x8c, 0x70, 0xa6, 0xa4, 0x23, 0x91, - 0x94, 0x91, 0x28, 0xcd, 0x71, 0x15, 0x8a, 0x7b, 0x50, 0xa0, 0x51, 0xc4, 0xa6, 0xf1, 0x4a, 0x49, - 0x16, 0x48, 0x48, 0x11, 0x3e, 0x03, 0x08, 0xd8, 0x88, 0x3a, 0x6f, 0xd9, 0x24, 0x52, 0x13, 0x44, - 0x02, 0xe7, 0x05, 0x72, 0x28, 0x00, 0xf3, 0x2f, 0x59, 0x48, 0x1d, 0xb1, 0x01, 0xda, 0x02, 0x31, - 0xb6, 0xcd, 0x5b, 0x6f, 0xe6, 0x84, 0x0d, 0x9a, 0x23, 0xd4, 0x81, 0xe2, 0xac, 0x4d, 0xc8, 0x5c, - 0xca, 0x7d, 0x5c, 0x36, 0xef, 0x2c, 0xcd, 0xf2, 0x87, 0x6b, 0x78, 0xd6, 0x66, 0x54, 0x59, 0xf7, - 0x97, 0x8e, 0xa6, 0x4c, 0xaa, 0xfe, 0xba, 0xfb, 0xa9, 0x15, 0x78, 0xb8, 0xb6, 0x18, 0x06, 0x65, - 0xf6, 0x1b, 0x28, 0x0c, 0x23, 0x4a, 0xb8, 0x78, 0x70, 0xf8, 0x6a, 0x9e, 0x28, 0xec, 0x6d, 0x4f, - 0x2d, 0x4e, 0x1f, 0x2e, 0x15, 0x7b, 0xfa, 0x70, 0xc1, 0xa0, 0xe8, 0x02, 0x40, 0x5f, 0x03, 0xc4, - 0x9c, 0x44, 0x5c, 0xe9, 0x66, 0xae, 0xd4, 0xcd, 0x4b, 0xb6, 0x54, 0xfd, 0x21, 0xe4, 0x68, 0x30, - 0x52, 0x8a, 0xd9, 0x2b, 0x15, 0xd7, 0x69, 0x30, 0x92, 0x6a, 0x5f, 0x41, 0x26, 0xe6, 0x84, 0x4f, - 0xc7, 0x02, 0xf3, 0xc2, 0xa3, 0x1f, 0xb1, 0x41, 0xa5, 0x27, 0x98, 0x58, 0x29, 0x88, 0xbe, 0xad, - 0xf2, 0xed, 0xd3, 0x38, 0x26, 0xe3, 0xd9, 0xab, 0x40, 0x82, 0x2d, 0x85, 0x21, 0x0c, 0xa5, 0x59, - 0xd6, 0x54, 0x59, 0xc9, 0x0e, 0x50, 0xd8, 0xfb, 0xfc, 0xca, 0xb4, 0xa9, 0x12, 0x3d, 0x4c, 0xe0, - 0x59, 0xde, 0x75, 0xd1, 0xbe, 0x82, 0x6b, 0x0b, 0x89, 0xd3, 0x56, 0x41, 0x5a, 0x7d, 0xf4, 0x09, - 0x99, 0x9b, 0xd9, 0x5d, 0x48, 0xbf, 0xc2, 0xcc, 0xdf, 0x24, 0x20, 0x23, 0xcf, 0x28, 0x26, 0x8c, - 0x9e, 0x5d, 0xb3, 0x3f, 0x32, 0xc7, 0xfc, 0xb4, 0x6f, 0xf5, 0xad, 0xc6, 0xec, 0x0d, 0xd0, 0xad, - 0xe1, 0x66, 0xfb, 0xc0, 0x48, 0x8a, 0xb1, 0x06, 0xf7, 0xdb, 0x6d, 0xb1, 0x90, 0x0f, 0x82, 0x5e, - 0xbf, 0x5e, 0xb7, 0xac, 0x86, 0xd5, 0x30, 0xd2, 0x42, 0xed, 0x45, 0xad, 0x79, 0x6c, 0x35, 0x8c, - 0x8c, 0x78, 0x4a, 0xd4, 0x6b, 0xed, 0xba, 0x75, 0x7c, 0x2c, 0xa8, 0x59, 0x41, 0xd5, 0x6b, 0xab, - 0x61, 0xac, 0xef, 0xaf, 0x43, 0x46, 0x96, 0xe2, 0x7e, 0x0e, 0xb2, 0xea, 0x68, 0xe6, 0x6b, 0x30, - 0xea, 0xb2, 0x44, 0x8e, 0xd8, 0x00, 0xd3, 0x5f, 0x4e, 0x68, 0x2c, 0xfb, 0x4e, 0x48, 0x22, 0xaa, - 0x3f, 0x40, 0x79, 0xac, 0x57, 0xa8, 0x02, 0x29, 0xd1, 0xe7, 0xd5, 0xd5, 0xb8, 0x7b, 0x59, 0x32, - 0xb1, 0x20, 0x9a, 0x1f, 0xa0, 0x74, 0xec, 0xc6, 0xfc, 0x88, 0x0d, 0xe2, 0xab, 0x4c, 0xdf, 0x84, - 0xec, 0x1b, 0xd7, 0xe3, 0x34, 0xd2, 0x1f, 0x4c, 0xbd, 0x12, 0xd7, 0x3a, 0x14, 0xaf, 0x47, 0xce, - 0xde, 0xd1, 0x40, 0x3f, 0x61, 0xf3, 0x02, 0xb1, 0x05, 0x20, 0x26, 0x5e, 0x29, 0x8e, 0xdd, 0x6f, - 0x55, 0x45, 0x67, 0x70, 0x4e, 0x00, 0x3d, 0xf7, 0x5b, 0x6a, 0x7a, 0x60, 0xcc, 0xdd, 0xc7, 0x21, - 0x0b, 0x62, 0x8a, 0xbe, 0x80, 0xf4, 0x09, 0x1b, 0xc4, 0xe5, 0x84, 0xfc, 0x68, 0x5e, 0x7e, 0x06, - 0xc9, 0x44, 0x0f, 0xa1, 0x14, 0xd0, 0x53, 0xd1, 0xc3, 0x66, 0xdb, 0x50, 0x5b, 0xdc, 0x14, 0x70, - 0x77, 0xba, 0x15, 0xf3, 0x01, 0x6c, 0x1e, 0x50, 0xbe, 0x10, 0x45, 0x04, 0xe9, 0x85, 0x17, 0x81, - 0xfc, 0x6d, 0x3e, 0x04, 0xa3, 0x4e, 0x82, 0x21, 0xf5, 0x2e, 0xe7, 0xed, 0xfd, 0x2d, 0x0d, 0x70, - 0xc4, 0x06, 0x3d, 0xf5, 0x57, 0x08, 0xfa, 0x7d, 0x02, 0xf2, 0xb3, 0x2c, 0xa1, 0x8b, 0xeb, 0x70, - 0x35, 0x93, 0xdb, 0x97, 0x1e, 0xd0, 0xac, 0xfc, 0xf6, 0x1f, 0xff, 0xfa, 0x53, 0x72, 0xd7, 0xbc, - 0x3f, 0xfb, 0xff, 0xe5, 0xd7, 0x2a, 0x1d, 0x3f, 0x0a, 0x23, 0x26, 0x06, 0x9f, 0xb8, 0xfa, 0xf8, - 0x43, 0x55, 0x44, 0xe1, 0xb9, 0xc8, 0x27, 0xfa, 0x43, 0x02, 0x72, 0xd3, 0x88, 0xa2, 0x8b, 0xfb, - 0xd8, 0x4a, 0xce, 0xb7, 0x1f, 0x7d, 0x02, 0x53, 0xa5, 0xc7, 0x7c, 0x24, 0x77, 0xf4, 0x00, 0x5d, - 0xbd, 0x23, 0x74, 0x06, 0x59, 0x15, 0x6f, 0x74, 0x71, 0x93, 0x5e, 0x4a, 0xc8, 0x15, 0xc1, 0xf8, - 0x88, 0x6b, 0x91, 0x8a, 0x05, 0xc7, 0xd2, 0x6f, 0xf5, 0xf1, 0x07, 0xf4, 0x3b, 0x91, 0x8e, 0x69, - 0x1a, 0x2f, 0x4b, 0xc7, 0x4a, 0xaa, 0xb7, 0x6f, 0x9e, 0x6b, 0x9a, 0x96, 0x1f, 0xf2, 0x33, 0xf3, - 0x99, 0xf4, 0xfd, 0xc4, 0xdc, 0xbd, 0xd2, 0xf7, 0xf3, 0xa1, 0xb4, 0xf9, 0x3c, 0xf1, 0x78, 0x9f, - 0xc1, 0xbd, 0x21, 0xf3, 0xcf, 0x39, 0x27, 0xa1, 0x3b, 0xdd, 0xc0, 0x7e, 0x69, 0x5e, 0x43, 0x5d, - 0xe1, 0xb1, 0x9b, 0x78, 0xfd, 0xb5, 0xe6, 0x8f, 0x99, 0x47, 0x82, 0x71, 0x85, 0x45, 0xe3, 0xea, - 0x98, 0x06, 0x72, 0x3f, 0x55, 0x25, 0x22, 0xa1, 0x1b, 0x9f, 0xfb, 0x67, 0xee, 0x1b, 0xdf, 0x1b, - 0x64, 0x25, 0xeb, 0xd9, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x10, 0x62, 0xa8, 0xbe, 0x13, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/model_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/model_service.pb.go deleted file mode 100644 index 486865db..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/model_service.pb.go +++ /dev/null @@ -1,1050 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1beta1/model_service.proto - -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/serviceconfig" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Represents a machine learning solution. -// -// A model can have multiple versions, each of which is a deployed, trained -// model ready to receive prediction requests. The model itself is just a -// container. -type Model struct { - // Required. The name specified for the model when it was created. - // - // The model name must be unique within the project it is created in. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The description specified for the model when it was created. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Output only. The default version of the model. This version will be used to - // handle prediction requests that do not specify a version. - // - // You can change the default version by calling - // [projects.methods.versions.setDefault](/ml/reference/rest/v1beta1/projects.models.versions/setDefault). - DefaultVersion *Version `protobuf:"bytes,3,opt,name=default_version,json=defaultVersion" json:"default_version,omitempty"` - // Optional. The list of regions where the model is going to be deployed. - // Currently only one region per model is supported. - // Defaults to 'us-central1' if nothing is set. - Regions []string `protobuf:"bytes,4,rep,name=regions" json:"regions,omitempty"` - // Optional. If true, enables StackDriver Logging for online prediction. - // Default is false. - OnlinePredictionLogging bool `protobuf:"varint,5,opt,name=online_prediction_logging,json=onlinePredictionLogging" json:"online_prediction_logging,omitempty"` -} - -func (m *Model) Reset() { *m = Model{} } -func (m *Model) String() string { return proto.CompactTextString(m) } -func (*Model) ProtoMessage() {} -func (*Model) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Model) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Model) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Model) GetDefaultVersion() *Version { - if m != nil { - return m.DefaultVersion - } - return nil -} - -func (m *Model) GetRegions() []string { - if m != nil { - return m.Regions - } - return nil -} - -func (m *Model) GetOnlinePredictionLogging() bool { - if m != nil { - return m.OnlinePredictionLogging - } - return false -} - -// Represents a version of the model. -// -// Each version is a trained model deployed in the cloud, ready to handle -// prediction requests. A model can have multiple versions. You can get -// information about all of the versions of a given model by calling -// [projects.models.versions.list](/ml/reference/rest/v1beta1/projects.models.versions/list). -type Version struct { - // Required.The name specified for the version when it was created. - // - // The version name must be unique within the model it is created in. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. The description specified for the version when it was created. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Output only. If true, this version will be used to handle prediction - // requests that do not specify a version. - // - // You can change the default version by calling - // [projects.methods.versions.setDefault](/ml/reference/rest/v1beta1/projects.models.versions/setDefault). - IsDefault bool `protobuf:"varint,3,opt,name=is_default,json=isDefault" json:"is_default,omitempty"` - // Required. The Google Cloud Storage location of the trained model used to - // create the version. See the - // [overview of model deployment](/ml/docs/concepts/deployment-overview) for - // more informaiton. - // - // When passing Version to - // [projects.models.versions.create](/ml/reference/rest/v1beta1/projects.models.versions/create) - // the model service uses the specified location as the source of the model. - // Once deployed, the model version is hosted by the prediction service, so - // this location is useful only as a historical record. - DeploymentUri string `protobuf:"bytes,4,opt,name=deployment_uri,json=deploymentUri" json:"deployment_uri,omitempty"` - // Output only. The time the version was created. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. The time the version was last used for prediction. - LastUseTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=last_use_time,json=lastUseTime" json:"last_use_time,omitempty"` - // Optional. The Google Cloud ML runtime version to use for this deployment. - // If not set, Google Cloud ML will choose a version. - RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion" json:"runtime_version,omitempty"` - // Optional. Manually select the number of nodes to use for serving the - // model. If unset (i.e., by default), the number of nodes used to serve - // the model automatically scales with traffic. However, care should be - // taken to ramp up traffic according to the model's ability to scale. If - // your model needs to handle bursts of traffic beyond it's ability to - // scale, it is recommended you set this field appropriately. - ManualScaling *ManualScaling `protobuf:"bytes,9,opt,name=manual_scaling,json=manualScaling" json:"manual_scaling,omitempty"` -} - -func (m *Version) Reset() { *m = Version{} } -func (m *Version) String() string { return proto.CompactTextString(m) } -func (*Version) ProtoMessage() {} -func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *Version) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Version) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Version) GetIsDefault() bool { - if m != nil { - return m.IsDefault - } - return false -} - -func (m *Version) GetDeploymentUri() string { - if m != nil { - return m.DeploymentUri - } - return "" -} - -func (m *Version) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Version) GetLastUseTime() *google_protobuf2.Timestamp { - if m != nil { - return m.LastUseTime - } - return nil -} - -func (m *Version) GetRuntimeVersion() string { - if m != nil { - return m.RuntimeVersion - } - return "" -} - -func (m *Version) GetManualScaling() *ManualScaling { - if m != nil { - return m.ManualScaling - } - return nil -} - -// Options for manually scaling a model. -type ManualScaling struct { - // The number of nodes to allocate for this model. These nodes are always up, - // starting from the time the model is deployed, so the cost of operating - // this model will be proportional to nodes * number of hours since - // deployment. - Nodes int32 `protobuf:"varint,1,opt,name=nodes" json:"nodes,omitempty"` -} - -func (m *ManualScaling) Reset() { *m = ManualScaling{} } -func (m *ManualScaling) String() string { return proto.CompactTextString(m) } -func (*ManualScaling) ProtoMessage() {} -func (*ManualScaling) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *ManualScaling) GetNodes() int32 { - if m != nil { - return m.Nodes - } - return 0 -} - -// Request message for the CreateModel method. -type CreateModelRequest struct { - // Required. The project name. - // - // Authorization: requires `Editor` role on the specified project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The model to create. - Model *Model `protobuf:"bytes,2,opt,name=model" json:"model,omitempty"` -} - -func (m *CreateModelRequest) Reset() { *m = CreateModelRequest{} } -func (m *CreateModelRequest) String() string { return proto.CompactTextString(m) } -func (*CreateModelRequest) ProtoMessage() {} -func (*CreateModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *CreateModelRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateModelRequest) GetModel() *Model { - if m != nil { - return m.Model - } - return nil -} - -// Request message for the ListModels method. -type ListModelsRequest struct { - // Required. The name of the project whose models are to be listed. - // - // Authorization: requires `Viewer` role on the specified project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. A page token to request the next page of results. - // - // You get the token from the `next_page_token` field of the response from - // the previous call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The number of models to retrieve per "page" of results. If there - // are more remaining results than this number, the response message will - // contain a valid value in the `next_page_token` field. - // - // The default value is 20, and the maximum page size is 100. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListModelsRequest) Reset() { *m = ListModelsRequest{} } -func (m *ListModelsRequest) String() string { return proto.CompactTextString(m) } -func (*ListModelsRequest) ProtoMessage() {} -func (*ListModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *ListModelsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListModelsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListModelsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for the ListModels method. -type ListModelsResponse struct { - // The list of models. - Models []*Model `protobuf:"bytes,1,rep,name=models" json:"models,omitempty"` - // Optional. Pass this token as the `page_token` field of the request for a - // subsequent call. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListModelsResponse) Reset() { *m = ListModelsResponse{} } -func (m *ListModelsResponse) String() string { return proto.CompactTextString(m) } -func (*ListModelsResponse) ProtoMessage() {} -func (*ListModelsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *ListModelsResponse) GetModels() []*Model { - if m != nil { - return m.Models - } - return nil -} - -func (m *ListModelsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for the GetModel method. -type GetModelRequest struct { - // Required. The name of the model. - // - // Authorization: requires `Viewer` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetModelRequest) Reset() { *m = GetModelRequest{} } -func (m *GetModelRequest) String() string { return proto.CompactTextString(m) } -func (*GetModelRequest) ProtoMessage() {} -func (*GetModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *GetModelRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for the DeleteModel method. -type DeleteModelRequest struct { - // Required. The name of the model. - // - // Authorization: requires `Editor` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteModelRequest) Reset() { *m = DeleteModelRequest{} } -func (m *DeleteModelRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteModelRequest) ProtoMessage() {} -func (*DeleteModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *DeleteModelRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Uploads the provided trained model version to Cloud Machine Learning. -type CreateVersionRequest struct { - // Required. The name of the model. - // - // Authorization: requires `Editor` role on the parent project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The version details. - Version *Version `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` -} - -func (m *CreateVersionRequest) Reset() { *m = CreateVersionRequest{} } -func (m *CreateVersionRequest) String() string { return proto.CompactTextString(m) } -func (*CreateVersionRequest) ProtoMessage() {} -func (*CreateVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *CreateVersionRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateVersionRequest) GetVersion() *Version { - if m != nil { - return m.Version - } - return nil -} - -// Request message for the ListVersions method. -type ListVersionsRequest struct { - // Required. The name of the model for which to list the version. - // - // Authorization: requires `Viewer` role on the parent project. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. A page token to request the next page of results. - // - // You get the token from the `next_page_token` field of the response from - // the previous call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The number of versions to retrieve per "page" of results. If - // there are more remaining results than this number, the response message - // will contain a valid value in the `next_page_token` field. - // - // The default value is 20, and the maximum page size is 100. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListVersionsRequest) Reset() { *m = ListVersionsRequest{} } -func (m *ListVersionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListVersionsRequest) ProtoMessage() {} -func (*ListVersionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *ListVersionsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListVersionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListVersionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for the ListVersions method. -type ListVersionsResponse struct { - // The list of versions. - Versions []*Version `protobuf:"bytes,1,rep,name=versions" json:"versions,omitempty"` - // Optional. Pass this token as the `page_token` field of the request for a - // subsequent call. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListVersionsResponse) Reset() { *m = ListVersionsResponse{} } -func (m *ListVersionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListVersionsResponse) ProtoMessage() {} -func (*ListVersionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *ListVersionsResponse) GetVersions() []*Version { - if m != nil { - return m.Versions - } - return nil -} - -func (m *ListVersionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for the GetVersion method. -type GetVersionRequest struct { - // Required. The name of the version. - // - // Authorization: requires `Viewer` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetVersionRequest) Reset() { *m = GetVersionRequest{} } -func (m *GetVersionRequest) String() string { return proto.CompactTextString(m) } -func (*GetVersionRequest) ProtoMessage() {} -func (*GetVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *GetVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for the DeleteVerionRequest method. -type DeleteVersionRequest struct { - // Required. The name of the version. You can get the names of all the - // versions of a model by calling - // [projects.models.versions.list](/ml/reference/rest/v1beta1/projects.models.versions/list). - // - // Authorization: requires `Editor` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteVersionRequest) Reset() { *m = DeleteVersionRequest{} } -func (m *DeleteVersionRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteVersionRequest) ProtoMessage() {} -func (*DeleteVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *DeleteVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for the SetDefaultVersion request. -type SetDefaultVersionRequest struct { - // Required. The name of the version to make the default for the model. You - // can get the names of all the versions of a model by calling - // [projects.models.versions.list](/ml/reference/rest/v1beta1/projects.models.versions/list). - // - // Authorization: requires `Editor` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *SetDefaultVersionRequest) Reset() { *m = SetDefaultVersionRequest{} } -func (m *SetDefaultVersionRequest) String() string { return proto.CompactTextString(m) } -func (*SetDefaultVersionRequest) ProtoMessage() {} -func (*SetDefaultVersionRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *SetDefaultVersionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*Model)(nil), "google.cloud.ml.v1beta1.Model") - proto.RegisterType((*Version)(nil), "google.cloud.ml.v1beta1.Version") - proto.RegisterType((*ManualScaling)(nil), "google.cloud.ml.v1beta1.ManualScaling") - proto.RegisterType((*CreateModelRequest)(nil), "google.cloud.ml.v1beta1.CreateModelRequest") - proto.RegisterType((*ListModelsRequest)(nil), "google.cloud.ml.v1beta1.ListModelsRequest") - proto.RegisterType((*ListModelsResponse)(nil), "google.cloud.ml.v1beta1.ListModelsResponse") - proto.RegisterType((*GetModelRequest)(nil), "google.cloud.ml.v1beta1.GetModelRequest") - proto.RegisterType((*DeleteModelRequest)(nil), "google.cloud.ml.v1beta1.DeleteModelRequest") - proto.RegisterType((*CreateVersionRequest)(nil), "google.cloud.ml.v1beta1.CreateVersionRequest") - proto.RegisterType((*ListVersionsRequest)(nil), "google.cloud.ml.v1beta1.ListVersionsRequest") - proto.RegisterType((*ListVersionsResponse)(nil), "google.cloud.ml.v1beta1.ListVersionsResponse") - proto.RegisterType((*GetVersionRequest)(nil), "google.cloud.ml.v1beta1.GetVersionRequest") - proto.RegisterType((*DeleteVersionRequest)(nil), "google.cloud.ml.v1beta1.DeleteVersionRequest") - proto.RegisterType((*SetDefaultVersionRequest)(nil), "google.cloud.ml.v1beta1.SetDefaultVersionRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ModelService service - -type ModelServiceClient interface { - // Creates a model which will later contain one or more versions. - // - // You must add at least one version before you can request predictions from - // the model. Add versions by calling - // [projects.models.versions.create](/ml/reference/rest/v1beta1/projects.models.versions/create). - CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*Model, error) - // Lists the models in a project. - // - // Each project can contain multiple models, and each model can have multiple - // versions. - ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error) - // Gets information about a model, including its name, the description (if - // set), and the default version (if at least one version of the model has - // been deployed). - GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error) - // Deletes a model. - // - // You can only delete a model if there are no versions in it. You can delete - // versions by calling - // [projects.models.versions.delete](/ml/reference/rest/v1beta1/projects.models.versions/delete). - DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Creates a new version of a model from a trained TensorFlow model. - // - // If the version created in the cloud by this call is the first deployed - // version of the specified model, it will be made the default version of the - // model. When you add a version to a model that already has one or more - // versions, the default version does not automatically change. If you want a - // new version to be the default, you must call - // [projects.models.versions.setDefault](/ml/reference/rest/v1beta1/projects.models.versions/setDefault). - CreateVersion(ctx context.Context, in *CreateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Gets basic information about all the versions of a model. - // - // If you expect that a model has a lot of versions, or if you need to handle - // only a limited number of results at a time, you can request that the list - // be retrieved in batches (called pages): - ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*ListVersionsResponse, error) - // Gets information about a model version. - // - // Models can have multiple versions. You can call - // [projects.models.versions.list](/ml/reference/rest/v1beta1/projects.models.versions/list) - // to get the same information that this method returns for all of the - // versions of a model. - GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*Version, error) - // Deletes a model version. - // - // Each model can have multiple versions deployed and in use at any given - // time. Use this method to remove a single version. - // - // Note: You cannot delete the version that is set as the default version - // of the model unless it is the only remaining version. - DeleteVersion(ctx context.Context, in *DeleteVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Designates a version to be the default for the model. - // - // The default version is used for prediction requests made against the model - // that don't specify a version. - // - // The first version to be created for a model is automatically set as the - // default. You must make any subsequent changes to the default version - // setting manually using this method. - SetDefaultVersion(ctx context.Context, in *SetDefaultVersionRequest, opts ...grpc.CallOption) (*Version, error) -} - -type modelServiceClient struct { - cc *grpc.ClientConn -} - -func NewModelServiceClient(cc *grpc.ClientConn) ModelServiceClient { - return &modelServiceClient{cc} -} - -func (c *modelServiceClient) CreateModel(ctx context.Context, in *CreateModelRequest, opts ...grpc.CallOption) (*Model, error) { - out := new(Model) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/CreateModel", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) ListModels(ctx context.Context, in *ListModelsRequest, opts ...grpc.CallOption) (*ListModelsResponse, error) { - out := new(ListModelsResponse) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/ListModels", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) GetModel(ctx context.Context, in *GetModelRequest, opts ...grpc.CallOption) (*Model, error) { - out := new(Model) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/GetModel", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) DeleteModel(ctx context.Context, in *DeleteModelRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/DeleteModel", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) CreateVersion(ctx context.Context, in *CreateVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/CreateVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) ListVersions(ctx context.Context, in *ListVersionsRequest, opts ...grpc.CallOption) (*ListVersionsResponse, error) { - out := new(ListVersionsResponse) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/ListVersions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*Version, error) { - out := new(Version) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/GetVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) DeleteVersion(ctx context.Context, in *DeleteVersionRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/DeleteVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *modelServiceClient) SetDefaultVersion(ctx context.Context, in *SetDefaultVersionRequest, opts ...grpc.CallOption) (*Version, error) { - out := new(Version) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ModelService/SetDefaultVersion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ModelService service - -type ModelServiceServer interface { - // Creates a model which will later contain one or more versions. - // - // You must add at least one version before you can request predictions from - // the model. Add versions by calling - // [projects.models.versions.create](/ml/reference/rest/v1beta1/projects.models.versions/create). - CreateModel(context.Context, *CreateModelRequest) (*Model, error) - // Lists the models in a project. - // - // Each project can contain multiple models, and each model can have multiple - // versions. - ListModels(context.Context, *ListModelsRequest) (*ListModelsResponse, error) - // Gets information about a model, including its name, the description (if - // set), and the default version (if at least one version of the model has - // been deployed). - GetModel(context.Context, *GetModelRequest) (*Model, error) - // Deletes a model. - // - // You can only delete a model if there are no versions in it. You can delete - // versions by calling - // [projects.models.versions.delete](/ml/reference/rest/v1beta1/projects.models.versions/delete). - DeleteModel(context.Context, *DeleteModelRequest) (*google_longrunning.Operation, error) - // Creates a new version of a model from a trained TensorFlow model. - // - // If the version created in the cloud by this call is the first deployed - // version of the specified model, it will be made the default version of the - // model. When you add a version to a model that already has one or more - // versions, the default version does not automatically change. If you want a - // new version to be the default, you must call - // [projects.models.versions.setDefault](/ml/reference/rest/v1beta1/projects.models.versions/setDefault). - CreateVersion(context.Context, *CreateVersionRequest) (*google_longrunning.Operation, error) - // Gets basic information about all the versions of a model. - // - // If you expect that a model has a lot of versions, or if you need to handle - // only a limited number of results at a time, you can request that the list - // be retrieved in batches (called pages): - ListVersions(context.Context, *ListVersionsRequest) (*ListVersionsResponse, error) - // Gets information about a model version. - // - // Models can have multiple versions. You can call - // [projects.models.versions.list](/ml/reference/rest/v1beta1/projects.models.versions/list) - // to get the same information that this method returns for all of the - // versions of a model. - GetVersion(context.Context, *GetVersionRequest) (*Version, error) - // Deletes a model version. - // - // Each model can have multiple versions deployed and in use at any given - // time. Use this method to remove a single version. - // - // Note: You cannot delete the version that is set as the default version - // of the model unless it is the only remaining version. - DeleteVersion(context.Context, *DeleteVersionRequest) (*google_longrunning.Operation, error) - // Designates a version to be the default for the model. - // - // The default version is used for prediction requests made against the model - // that don't specify a version. - // - // The first version to be created for a model is automatically set as the - // default. You must make any subsequent changes to the default version - // setting manually using this method. - SetDefaultVersion(context.Context, *SetDefaultVersionRequest) (*Version, error) -} - -func RegisterModelServiceServer(s *grpc.Server, srv ModelServiceServer) { - s.RegisterService(&_ModelService_serviceDesc, srv) -} - -func _ModelService_CreateModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateModelRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).CreateModel(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/CreateModel", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).CreateModel(ctx, req.(*CreateModelRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_ListModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListModelsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).ListModels(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/ListModels", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).ListModels(ctx, req.(*ListModelsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_GetModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetModelRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).GetModel(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/GetModel", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).GetModel(ctx, req.(*GetModelRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_DeleteModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteModelRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).DeleteModel(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/DeleteModel", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).DeleteModel(ctx, req.(*DeleteModelRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_CreateVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).CreateVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/CreateVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).CreateVersion(ctx, req.(*CreateVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_ListVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListVersionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).ListVersions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/ListVersions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).ListVersions(ctx, req.(*ListVersionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_GetVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).GetVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/GetVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).GetVersion(ctx, req.(*GetVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_DeleteVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).DeleteVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/DeleteVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).DeleteVersion(ctx, req.(*DeleteVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ModelService_SetDefaultVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetDefaultVersionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ModelServiceServer).SetDefaultVersion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ModelService/SetDefaultVersion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ModelServiceServer).SetDefaultVersion(ctx, req.(*SetDefaultVersionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ModelService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.ml.v1beta1.ModelService", - HandlerType: (*ModelServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateModel", - Handler: _ModelService_CreateModel_Handler, - }, - { - MethodName: "ListModels", - Handler: _ModelService_ListModels_Handler, - }, - { - MethodName: "GetModel", - Handler: _ModelService_GetModel_Handler, - }, - { - MethodName: "DeleteModel", - Handler: _ModelService_DeleteModel_Handler, - }, - { - MethodName: "CreateVersion", - Handler: _ModelService_CreateVersion_Handler, - }, - { - MethodName: "ListVersions", - Handler: _ModelService_ListVersions_Handler, - }, - { - MethodName: "GetVersion", - Handler: _ModelService_GetVersion_Handler, - }, - { - MethodName: "DeleteVersion", - Handler: _ModelService_DeleteVersion_Handler, - }, - { - MethodName: "SetDefaultVersion", - Handler: _ModelService_SetDefaultVersion_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/ml/v1beta1/model_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/ml/v1beta1/model_service.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1013 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xd6, 0x26, 0x71, 0x62, 0x3f, 0xd7, 0x89, 0x32, 0x04, 0x6a, 0x0c, 0xa1, 0xd6, 0x56, 0x69, - 0x2d, 0xa7, 0xdd, 0x25, 0x06, 0x55, 0x8a, 0x0b, 0x45, 0x2a, 0x91, 0x2a, 0xa4, 0x46, 0x44, 0x9b, - 0x96, 0x03, 0x97, 0xd5, 0xc6, 0x9e, 0x2e, 0x53, 0x76, 0x67, 0xb6, 0x3b, 0xb3, 0x11, 0x14, 0x7a, - 0x80, 0x03, 0x47, 0x0e, 0x20, 0xae, 0x5c, 0xb8, 0xf3, 0xcf, 0x70, 0xe7, 0x84, 0xf8, 0x23, 0x38, - 0xa1, 0xf9, 0xb1, 0xce, 0x3a, 0xfe, 0xb1, 0x1b, 0x24, 0x6e, 0x9e, 0x37, 0xdf, 0x9b, 0xf7, 0xcd, - 0xfb, 0xde, 0x7b, 0x3b, 0x86, 0xfd, 0x90, 0xb1, 0x30, 0xc2, 0xee, 0x28, 0x62, 0xd9, 0xd8, 0x8d, - 0x23, 0xf7, 0xfc, 0xe0, 0x0c, 0x8b, 0xe0, 0xc0, 0x8d, 0xd9, 0x18, 0x47, 0x3e, 0xc7, 0xe9, 0x39, - 0x19, 0x61, 0x27, 0x49, 0x99, 0x60, 0xe8, 0xba, 0x06, 0x3b, 0x0a, 0xec, 0xc4, 0x91, 0x63, 0xc0, - 0x9d, 0xb7, 0xcd, 0x29, 0x41, 0x42, 0xdc, 0x80, 0x52, 0x26, 0x02, 0x41, 0x18, 0xe5, 0xda, 0xad, - 0xf3, 0x7a, 0x71, 0x37, 0x13, 0x5f, 0x18, 0xf3, 0x4d, 0x63, 0x8e, 0x18, 0x0d, 0xd3, 0x8c, 0x52, - 0x42, 0x43, 0x97, 0x25, 0x38, 0x9d, 0xf2, 0xbd, 0x61, 0x40, 0x6a, 0x75, 0x96, 0x3d, 0x73, 0x05, - 0x89, 0x31, 0x17, 0x41, 0x9c, 0x68, 0x80, 0xfd, 0xa7, 0x05, 0xb5, 0x63, 0xc9, 0x15, 0x21, 0x58, - 0xa3, 0x41, 0x8c, 0xdb, 0x56, 0xd7, 0xea, 0x35, 0x3c, 0xf5, 0x1b, 0x75, 0xa1, 0x39, 0xc6, 0x7c, - 0x94, 0x92, 0x44, 0x1e, 0xda, 0x5e, 0x51, 0x5b, 0x45, 0x13, 0xfa, 0x04, 0xb6, 0xc6, 0xf8, 0x59, - 0x90, 0x45, 0xc2, 0x3f, 0xc7, 0x29, 0x97, 0xa8, 0xd5, 0xae, 0xd5, 0x6b, 0x0e, 0xba, 0xce, 0x82, - 0xdb, 0x3a, 0x9f, 0x69, 0x9c, 0xb7, 0x69, 0x1c, 0xcd, 0x1a, 0xb5, 0x61, 0x23, 0xc5, 0xa1, 0x24, - 0xdf, 0x5e, 0xeb, 0xae, 0xf6, 0x1a, 0x5e, 0xbe, 0x44, 0x43, 0x78, 0x93, 0xd1, 0x88, 0x50, 0xec, - 0x27, 0x29, 0x1e, 0x93, 0x91, 0x8c, 0xec, 0x47, 0x2c, 0x0c, 0x09, 0x0d, 0xdb, 0xb5, 0xae, 0xd5, - 0xab, 0x7b, 0xd7, 0x35, 0xe0, 0x64, 0xb2, 0xff, 0x58, 0x6f, 0xdb, 0xff, 0xac, 0xc0, 0x46, 0x1e, - 0xe1, 0xbf, 0x5d, 0x71, 0x17, 0x80, 0x70, 0xdf, 0x90, 0x55, 0xb7, 0xab, 0x7b, 0x0d, 0xc2, 0x8f, - 0xb4, 0x01, 0xed, 0xc1, 0xe6, 0x18, 0x27, 0x11, 0xfb, 0x3a, 0xc6, 0x54, 0xf8, 0x59, 0x4a, 0xda, - 0x6b, 0xea, 0x8c, 0xd6, 0x85, 0xf5, 0x69, 0x4a, 0xd0, 0x7d, 0x68, 0x8e, 0x52, 0x1c, 0x08, 0xec, - 0x4b, 0x09, 0x14, 0xeb, 0xe6, 0xa0, 0x93, 0x27, 0x29, 0xd7, 0xc7, 0x79, 0x92, 0xeb, 0xe3, 0x81, - 0x86, 0x4b, 0x03, 0x7a, 0x00, 0xad, 0x28, 0xe0, 0xc2, 0xcf, 0xb8, 0x71, 0x5f, 0x2f, 0x75, 0x6f, - 0x4a, 0x87, 0xa7, 0x5c, 0xfb, 0xdf, 0x86, 0xad, 0x34, 0xa3, 0xd2, 0x73, 0xa2, 0x52, 0x5d, 0x91, - 0xdc, 0x34, 0xe6, 0x3c, 0x43, 0xc7, 0xb0, 0x19, 0x07, 0x34, 0x0b, 0x22, 0x9f, 0x8f, 0x82, 0x48, - 0xa6, 0xb7, 0xa1, 0x22, 0xdd, 0x5a, 0xa8, 0xe6, 0xb1, 0x82, 0x9f, 0x6a, 0xb4, 0xd7, 0x8a, 0x8b, - 0x4b, 0x7b, 0x0f, 0x5a, 0x53, 0xfb, 0x68, 0x07, 0x6a, 0x94, 0x8d, 0x31, 0x57, 0x12, 0xd4, 0x3c, - 0xbd, 0xb0, 0xcf, 0x00, 0x7d, 0xac, 0x2e, 0xab, 0x2a, 0xd1, 0xc3, 0x2f, 0x32, 0xcc, 0x05, 0x7a, - 0x03, 0xd6, 0x93, 0x20, 0xc5, 0x54, 0x18, 0xbd, 0xcc, 0x0a, 0xbd, 0x0f, 0x35, 0xd5, 0x5d, 0x4a, - 0xab, 0xe6, 0xe0, 0x9d, 0xc5, 0xd4, 0xd4, 0x69, 0x1a, 0x6c, 0x87, 0xb0, 0xfd, 0x98, 0x70, 0xa1, - 0x6c, 0xbc, 0x2c, 0xc4, 0x2e, 0x40, 0x12, 0x84, 0xd8, 0x17, 0xec, 0x4b, 0x4c, 0x8d, 0x9e, 0x0d, - 0x69, 0x79, 0x22, 0x0d, 0xe8, 0x2d, 0x50, 0x0b, 0x9f, 0x93, 0x97, 0x5a, 0xc9, 0x9a, 0x57, 0x97, - 0x86, 0x53, 0xf2, 0x12, 0xdb, 0x02, 0x50, 0x31, 0x10, 0x4f, 0x18, 0xe5, 0x18, 0xdd, 0x83, 0x75, - 0xc5, 0x43, 0xde, 0x7c, 0xb5, 0x02, 0x6b, 0x83, 0x46, 0xb7, 0x60, 0x8b, 0xe2, 0xaf, 0x84, 0x5f, - 0xa0, 0xa3, 0x4b, 0xb4, 0x25, 0xcd, 0x27, 0x39, 0x25, 0x7b, 0x0f, 0xb6, 0x1e, 0x61, 0x31, 0x95, - 0xbf, 0x39, 0xd5, 0x6e, 0xf7, 0x00, 0x1d, 0xe1, 0x08, 0x5f, 0xca, 0xf4, 0x3c, 0xe4, 0x73, 0xd8, - 0xd1, 0x9a, 0xe4, 0xed, 0x5a, 0x92, 0xb2, 0x21, 0x6c, 0xe4, 0xa5, 0xb5, 0x52, 0x71, 0x00, 0xe4, - 0x0e, 0x36, 0x81, 0xd7, 0x64, 0xca, 0x8c, 0xfd, 0x7f, 0x55, 0xe7, 0x5b, 0xd8, 0x99, 0x0e, 0x65, - 0xf4, 0xf9, 0x00, 0xea, 0x86, 0x4d, 0xae, 0x50, 0x39, 0xff, 0x89, 0x47, 0x65, 0x95, 0x6e, 0xc3, - 0xf6, 0x23, 0x2c, 0x2e, 0x65, 0x74, 0x5e, 0xf6, 0xfb, 0xb0, 0xa3, 0x75, 0xaa, 0x80, 0x75, 0xa0, - 0x7d, 0x8a, 0xc5, 0xd1, 0xd4, 0x30, 0x5d, 0x82, 0x1f, 0xfc, 0x0d, 0x70, 0x4d, 0xc9, 0x7f, 0xaa, - 0xbf, 0x4e, 0xe8, 0x47, 0x0b, 0x9a, 0x85, 0xfe, 0x43, 0xfb, 0x0b, 0x6f, 0x3e, 0xdb, 0xa5, 0x9d, - 0x92, 0x42, 0xb6, 0x07, 0xdf, 0xff, 0xf1, 0xd7, 0xcf, 0x2b, 0x77, 0xec, 0x9b, 0x93, 0x4f, 0xe3, - 0x37, 0x5a, 0xc6, 0x0f, 0x93, 0x94, 0x3d, 0xc7, 0x23, 0xc1, 0xdd, 0xfe, 0x2b, 0xfd, 0xb9, 0xe4, - 0x43, 0xdd, 0xab, 0xe8, 0x27, 0x0b, 0xe0, 0xa2, 0x87, 0x50, 0x7f, 0x61, 0x88, 0x99, 0x8e, 0xee, - 0xec, 0x57, 0xc2, 0x6a, 0xd1, 0xed, 0x7d, 0xc5, 0x6d, 0x0f, 0x55, 0xe1, 0x86, 0xbe, 0xb3, 0xa0, - 0x9e, 0xb7, 0x18, 0xea, 0x2d, 0x0c, 0x73, 0xa9, 0x0b, 0x4b, 0xf3, 0x33, 0x87, 0x83, 0x54, 0xa9, - 0xc0, 0xc0, 0x10, 0x70, 0xfb, 0xaf, 0xd0, 0x0f, 0x16, 0x34, 0x0b, 0xfd, 0xbb, 0x44, 0xa9, 0xd9, - 0x2e, 0xef, 0xec, 0xe6, 0xe0, 0xc2, 0x8b, 0xc1, 0xf9, 0x34, 0x7f, 0x31, 0xe4, 0x44, 0xfa, 0x95, - 0x88, 0xfc, 0x6a, 0x41, 0x6b, 0x6a, 0x3c, 0xa0, 0xbb, 0x25, 0x45, 0x33, 0x5d, 0x98, 0x65, 0x64, - 0x3e, 0x52, 0x64, 0x0e, 0x6d, 0x67, 0x89, 0x32, 0x17, 0x74, 0xdc, 0xbc, 0x11, 0x87, 0xf9, 0x48, - 0x41, 0xbf, 0x59, 0x70, 0xad, 0xd8, 0xe8, 0xe8, 0xce, 0xd2, 0xc2, 0xb8, 0x34, 0x7a, 0x3a, 0x77, - 0x2b, 0xa2, 0x4d, 0x21, 0xdd, 0x53, 0x74, 0xdf, 0x45, 0x57, 0xa4, 0xab, 0x0a, 0xfd, 0x62, 0x20, - 0x2c, 0x29, 0xf4, 0x99, 0xa9, 0xd1, 0x29, 0x1d, 0x4f, 0xf3, 0x48, 0x2d, 0x12, 0x74, 0xc2, 0x48, - 0x6a, 0xfb, 0x8b, 0x05, 0xad, 0xa9, 0xe1, 0xb3, 0x44, 0xdb, 0x79, 0x43, 0xaa, 0x4c, 0x5b, 0xc3, - 0xab, 0x7f, 0x55, 0x5e, 0xbf, 0x5b, 0xb0, 0x3d, 0x33, 0xe8, 0xd0, 0xc1, 0x42, 0x6e, 0x8b, 0x86, - 0x62, 0x85, 0xd4, 0x1d, 0x29, 0x8a, 0x0f, 0xec, 0xc3, 0xab, 0x51, 0x1c, 0xf2, 0x49, 0xc8, 0xa1, - 0xd5, 0x7f, 0xf8, 0x02, 0x6e, 0x8c, 0x58, 0x3c, 0x13, 0x2c, 0x48, 0x48, 0x1e, 0xf0, 0xe1, 0x76, - 0x71, 0x10, 0x9f, 0xc8, 0x57, 0xdc, 0x89, 0xf5, 0xf9, 0xa1, 0xf1, 0x08, 0x59, 0x14, 0xd0, 0xd0, - 0x61, 0x69, 0xe8, 0x86, 0x98, 0xaa, 0x37, 0x9e, 0xab, 0xb7, 0x82, 0x84, 0xf0, 0x99, 0xff, 0x1c, - 0xf7, 0xe3, 0xe8, 0x6c, 0x5d, 0xa1, 0xde, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0x04, 0x39, 0xff, - 0x08, 0x98, 0x0c, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/operation_metadata.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/operation_metadata.pb.go deleted file mode 100644 index 29307773..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/operation_metadata.pb.go +++ /dev/null @@ -1,161 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1beta1/operation_metadata.proto - -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The operation type. -type OperationMetadata_OperationType int32 - -const ( - // Unspecified operation type. - OperationMetadata_OPERATION_TYPE_UNSPECIFIED OperationMetadata_OperationType = 0 - // An operation to create a new version. - OperationMetadata_CREATE_VERSION OperationMetadata_OperationType = 1 - // An operation to delete an existing version. - OperationMetadata_DELETE_VERSION OperationMetadata_OperationType = 2 - // An operation to delete an existing model. - OperationMetadata_DELETE_MODEL OperationMetadata_OperationType = 3 -) - -var OperationMetadata_OperationType_name = map[int32]string{ - 0: "OPERATION_TYPE_UNSPECIFIED", - 1: "CREATE_VERSION", - 2: "DELETE_VERSION", - 3: "DELETE_MODEL", -} -var OperationMetadata_OperationType_value = map[string]int32{ - "OPERATION_TYPE_UNSPECIFIED": 0, - "CREATE_VERSION": 1, - "DELETE_VERSION": 2, - "DELETE_MODEL": 3, -} - -func (x OperationMetadata_OperationType) String() string { - return proto.EnumName(OperationMetadata_OperationType_name, int32(x)) -} -func (OperationMetadata_OperationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 0} -} - -// Represents the metadata of the long-running operation. -type OperationMetadata struct { - // The time the operation was submitted. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The time operation processing started. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The time operation processing completed. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Indicates whether a request to cancel this operation has been made. - IsCancellationRequested bool `protobuf:"varint,4,opt,name=is_cancellation_requested,json=isCancellationRequested" json:"is_cancellation_requested,omitempty"` - // The operation type. - OperationType OperationMetadata_OperationType `protobuf:"varint,5,opt,name=operation_type,json=operationType,enum=google.cloud.ml.v1beta1.OperationMetadata_OperationType" json:"operation_type,omitempty"` - // Contains the name of the model associated with the operation. - ModelName string `protobuf:"bytes,6,opt,name=model_name,json=modelName" json:"model_name,omitempty"` - // Contains the version associated with the operation. - Version *Version `protobuf:"bytes,7,opt,name=version" json:"version,omitempty"` -} - -func (m *OperationMetadata) Reset() { *m = OperationMetadata{} } -func (m *OperationMetadata) String() string { return proto.CompactTextString(m) } -func (*OperationMetadata) ProtoMessage() {} -func (*OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *OperationMetadata) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *OperationMetadata) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *OperationMetadata) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *OperationMetadata) GetIsCancellationRequested() bool { - if m != nil { - return m.IsCancellationRequested - } - return false -} - -func (m *OperationMetadata) GetOperationType() OperationMetadata_OperationType { - if m != nil { - return m.OperationType - } - return OperationMetadata_OPERATION_TYPE_UNSPECIFIED -} - -func (m *OperationMetadata) GetModelName() string { - if m != nil { - return m.ModelName - } - return "" -} - -func (m *OperationMetadata) GetVersion() *Version { - if m != nil { - return m.Version - } - return nil -} - -func init() { - proto.RegisterType((*OperationMetadata)(nil), "google.cloud.ml.v1beta1.OperationMetadata") - proto.RegisterEnum("google.cloud.ml.v1beta1.OperationMetadata_OperationType", OperationMetadata_OperationType_name, OperationMetadata_OperationType_value) -} - -func init() { proto.RegisterFile("google/cloud/ml/v1beta1/operation_metadata.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 457 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x5f, 0x6b, 0xdb, 0x30, - 0x14, 0xc5, 0xe7, 0xb6, 0x6b, 0x1b, 0x75, 0x0d, 0x99, 0x1f, 0x56, 0x2f, 0x6c, 0xab, 0xe9, 0x53, - 0x60, 0x60, 0xaf, 0x1d, 0x83, 0x75, 0x7d, 0x6a, 0x13, 0x0d, 0x02, 0x6d, 0x6c, 0x54, 0xaf, 0xb0, - 0xbd, 0x18, 0xc5, 0xbe, 0x33, 0x02, 0xfd, 0xf1, 0x2c, 0x25, 0xd0, 0x0f, 0xb4, 0xef, 0x39, 0x22, - 0xd9, 0x34, 0x23, 0x84, 0x3e, 0xea, 0xdc, 0xf3, 0xbb, 0xf7, 0xf8, 0x5e, 0xa3, 0x4f, 0x95, 0x52, - 0x15, 0x87, 0xb8, 0xe0, 0x6a, 0x51, 0xc6, 0x82, 0xc7, 0xcb, 0xf3, 0x39, 0x18, 0x7a, 0x1e, 0xab, - 0x1a, 0x1a, 0x6a, 0x98, 0x92, 0xb9, 0x00, 0x43, 0x4b, 0x6a, 0x68, 0x54, 0x37, 0xca, 0x28, 0xff, - 0xc4, 0x11, 0x91, 0x25, 0x22, 0xc1, 0xa3, 0x96, 0x18, 0xbe, 0x6b, 0x5b, 0xd1, 0x9a, 0xc5, 0x54, - 0x4a, 0x65, 0x2c, 0xae, 0x1d, 0x36, 0xfc, 0xb8, 0x6d, 0x90, 0x50, 0x25, 0xf0, 0x5c, 0x43, 0xb3, - 0x64, 0x05, 0xb4, 0xe6, 0xd3, 0xd6, 0x6c, 0x5f, 0xf3, 0xc5, 0xef, 0xd8, 0x30, 0x01, 0xda, 0x50, - 0x51, 0x3b, 0xc3, 0xd9, 0xdf, 0x3d, 0xf4, 0x3a, 0xe9, 0x12, 0xde, 0xb5, 0x01, 0xfd, 0x2b, 0x74, - 0x54, 0x34, 0x40, 0x0d, 0xe4, 0x2b, 0x7f, 0xe0, 0x85, 0xde, 0xe8, 0xe8, 0x62, 0x18, 0xb5, 0x81, - 0xbb, 0x66, 0x51, 0xd6, 0x35, 0x23, 0xc8, 0xd9, 0x57, 0x82, 0x7f, 0x89, 0x90, 0x36, 0xb4, 0x31, - 0x8e, 0xdd, 0x79, 0x96, 0xed, 0x59, 0xb7, 0x45, 0xbf, 0xa0, 0x43, 0x90, 0xa5, 0x03, 0x77, 0x9f, - 0x05, 0x0f, 0x40, 0x96, 0x16, 0xfb, 0x86, 0xde, 0x32, 0x9d, 0x17, 0x54, 0x16, 0xc0, 0xb9, 0xdb, - 0x75, 0x03, 0x7f, 0x16, 0xa0, 0x0d, 0x94, 0xc1, 0x5e, 0xe8, 0x8d, 0x0e, 0xc9, 0x09, 0xd3, 0xe3, - 0xb5, 0x3a, 0xe9, 0xca, 0x7e, 0x8e, 0xfa, 0x4f, 0x17, 0x32, 0x8f, 0x35, 0x04, 0x2f, 0x43, 0x6f, - 0xd4, 0xbf, 0xf8, 0x1a, 0x6d, 0x39, 0x4f, 0xb4, 0xb1, 0xae, 0x27, 0x25, 0x7b, 0xac, 0x81, 0x1c, - 0xab, 0xf5, 0xa7, 0xff, 0x1e, 0x21, 0x77, 0x19, 0x49, 0x05, 0x04, 0xfb, 0xa1, 0x37, 0xea, 0x91, - 0x9e, 0x55, 0x66, 0xd4, 0x66, 0x3f, 0x58, 0x42, 0xa3, 0x99, 0x92, 0xc1, 0x81, 0xfd, 0xe2, 0x70, - 0xeb, 0xe0, 0x07, 0xe7, 0x23, 0x1d, 0x70, 0xc6, 0xd0, 0xf1, 0x7f, 0xa3, 0xfd, 0x0f, 0x68, 0x98, - 0xa4, 0x98, 0x5c, 0x67, 0xd3, 0x64, 0x96, 0x67, 0x3f, 0x53, 0x9c, 0xff, 0x98, 0xdd, 0xa7, 0x78, - 0x3c, 0xfd, 0x3e, 0xc5, 0x93, 0xc1, 0x0b, 0xdf, 0x47, 0xfd, 0x31, 0xc1, 0xd7, 0x19, 0xce, 0x1f, - 0x30, 0xb9, 0x9f, 0x26, 0xb3, 0x81, 0xb7, 0xd2, 0x26, 0xf8, 0x16, 0xaf, 0x69, 0x3b, 0xfe, 0x00, - 0xbd, 0x6a, 0xb5, 0xbb, 0x64, 0x82, 0x6f, 0x07, 0xbb, 0x37, 0x4b, 0x74, 0x5a, 0x28, 0xb1, 0x11, - 0x8d, 0xd6, 0xac, 0x8b, 0x77, 0xf3, 0x66, 0x63, 0x31, 0xe9, 0xea, 0x66, 0xa9, 0xf7, 0xeb, 0xb2, - 0xc5, 0x2a, 0xc5, 0xa9, 0xac, 0x22, 0xd5, 0x54, 0x71, 0x05, 0xd2, 0x5e, 0x34, 0x76, 0x25, 0x5a, - 0x33, 0xbd, 0xf1, 0x47, 0x5f, 0x09, 0x3e, 0xdf, 0xb7, 0xae, 0xcf, 0xff, 0x02, 0x00, 0x00, 0xff, - 0xff, 0x89, 0xf8, 0x21, 0xa7, 0x5f, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/prediction_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/prediction_service.pb.go deleted file mode 100644 index 7d6a8ada..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/prediction_service.pb.go +++ /dev/null @@ -1,343 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1beta1/prediction_service.proto - -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api3 "google.golang.org/genproto/googleapis/api/httpbody" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Request for predictions to be issued against a trained model. -// -// The body of the request is a single JSON object with a single top-level -// field: -// -// <dl> -// <dt>instances</dt> -// <dd>A JSON array containing values representing the instances to use for -// prediction.</dd> -// </dl> -// -// The structure of each element of the instances list is determined by your -// model's input definition. Instances can include named inputs or can contain -// only unlabeled values. -// -// Not all data includes named inputs. Some instances will be simple -// JSON values (boolean, number, or string). However, instances are often lists -// of simple values, or complex nested lists. Here are some examples of request -// bodies: -// -// CSV data with each row encoded as a string value: -// <pre> -// {"instances": ["1.0,true,\\"x\\"", "-2.0,false,\\"y\\""]} -// </pre> -// Plain text: -// <pre> -// {"instances": ["the quick brown fox", "la bruja le dio"]} -// </pre> -// Sentences encoded as lists of words (vectors of strings): -// <pre> -// { -// "instances": [ -// ["the","quick","brown"], -// ["la","bruja","le"], -// ... -// ] -// } -// </pre> -// Floating point scalar values: -// <pre> -// {"instances": [0.0, 1.1, 2.2]} -// </pre> -// Vectors of integers: -// <pre> -// { -// "instances": [ -// [0, 1, 2], -// [3, 4, 5], -// ... -// ] -// } -// </pre> -// Tensors (in this case, two-dimensional tensors): -// <pre> -// { -// "instances": [ -// [ -// [0, 1, 2], -// [3, 4, 5] -// ], -// ... -// ] -// } -// </pre> -// Images can be represented different ways. In this encoding scheme the first -// two dimensions represent the rows and columns of the image, and the third -// contains lists (vectors) of the R, G, and B values for each pixel. -// <pre> -// { -// "instances": [ -// [ -// [ -// [138, 30, 66], -// [130, 20, 56], -// ... -// ], -// [ -// [126, 38, 61], -// [122, 24, 57], -// ... -// ], -// ... -// ], -// ... -// ] -// } -// </pre> -// JSON strings must be encoded as UTF-8. To send binary data, you must -// base64-encode the data and mark it as binary. To mark a JSON string -// as binary, replace it with a JSON object with a single attribute named `b64`: -// <pre>{"b64": "..."} </pre> -// For example: -// -// Two Serialized tf.Examples (fake data, for illustrative purposes only): -// <pre> -// {"instances": [{"b64": "X5ad6u"}, {"b64": "IA9j4nx"}]} -// </pre> -// Two JPEG image byte strings (fake data, for illustrative purposes only): -// <pre> -// {"instances": [{"b64": "ASa8asdf"}, {"b64": "JLK7ljk3"}]} -// </pre> -// If your data includes named references, format each instance as a JSON object -// with the named references as the keys: -// -// JSON input data to be preprocessed: -// <pre> -// { -// "instances": [ -// { -// "a": 1.0, -// "b": true, -// "c": "x" -// }, -// { -// "a": -2.0, -// "b": false, -// "c": "y" -// } -// ] -// } -// </pre> -// Some models have an underlying TensorFlow graph that accepts multiple input -// tensors. In this case, you should use the names of JSON name/value pairs to -// identify the input tensors, as shown in the following exmaples: -// -// For a graph with input tensor aliases "tag" (string) and "image" -// (base64-encoded string): -// <pre> -// { -// "instances": [ -// { -// "tag": "beach", -// "image": {"b64": "ASa8asdf"} -// }, -// { -// "tag": "car", -// "image": {"b64": "JLK7ljk3"} -// } -// ] -// } -// </pre> -// For a graph with input tensor aliases "tag" (string) and "image" -// (3-dimensional array of 8-bit ints): -// <pre> -// { -// "instances": [ -// { -// "tag": "beach", -// "image": [ -// [ -// [138, 30, 66], -// [130, 20, 56], -// ... -// ], -// [ -// [126, 38, 61], -// [122, 24, 57], -// ... -// ], -// ... -// ] -// }, -// { -// "tag": "car", -// "image": [ -// [ -// [255, 0, 102], -// [255, 0, 97], -// ... -// ], -// [ -// [254, 1, 101], -// [254, 2, 93], -// ... -// ], -// ... -// ] -// }, -// ... -// ] -// } -// </pre> -// If the call is successful, the response body will contain one prediction -// entry per instance in the request body. If prediction fails for any -// instance, the response body will contain no predictions and will contian -// a single error entry instead. -type PredictRequest struct { - // Required. The resource name of a model or a version. - // - // Authorization: requires `Viewer` role on the parent project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // - // Required. The prediction request body. - HttpBody *google_api3.HttpBody `protobuf:"bytes,2,opt,name=http_body,json=httpBody" json:"http_body,omitempty"` -} - -func (m *PredictRequest) Reset() { *m = PredictRequest{} } -func (m *PredictRequest) String() string { return proto.CompactTextString(m) } -func (*PredictRequest) ProtoMessage() {} -func (*PredictRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *PredictRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *PredictRequest) GetHttpBody() *google_api3.HttpBody { - if m != nil { - return m.HttpBody - } - return nil -} - -func init() { - proto.RegisterType((*PredictRequest)(nil), "google.cloud.ml.v1beta1.PredictRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for OnlinePredictionService service - -type OnlinePredictionServiceClient interface { - // Performs prediction on the data in the request. - // - // **** REMOVE FROM GENERATED DOCUMENTATION - Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error) -} - -type onlinePredictionServiceClient struct { - cc *grpc.ClientConn -} - -func NewOnlinePredictionServiceClient(cc *grpc.ClientConn) OnlinePredictionServiceClient { - return &onlinePredictionServiceClient{cc} -} - -func (c *onlinePredictionServiceClient) Predict(ctx context.Context, in *PredictRequest, opts ...grpc.CallOption) (*google_api3.HttpBody, error) { - out := new(google_api3.HttpBody) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.OnlinePredictionService/Predict", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for OnlinePredictionService service - -type OnlinePredictionServiceServer interface { - // Performs prediction on the data in the request. - // - // **** REMOVE FROM GENERATED DOCUMENTATION - Predict(context.Context, *PredictRequest) (*google_api3.HttpBody, error) -} - -func RegisterOnlinePredictionServiceServer(s *grpc.Server, srv OnlinePredictionServiceServer) { - s.RegisterService(&_OnlinePredictionService_serviceDesc, srv) -} - -func _OnlinePredictionService_Predict_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PredictRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OnlinePredictionServiceServer).Predict(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.OnlinePredictionService/Predict", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OnlinePredictionServiceServer).Predict(ctx, req.(*PredictRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _OnlinePredictionService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.ml.v1beta1.OnlinePredictionService", - HandlerType: (*OnlinePredictionServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Predict", - Handler: _OnlinePredictionService_Predict_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/ml/v1beta1/prediction_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/ml/v1beta1/prediction_service.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 312 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x4d, 0x4a, 0x03, 0x31, - 0x14, 0xc7, 0x49, 0x11, 0xb5, 0x11, 0x5c, 0x04, 0xb1, 0xb5, 0x08, 0x96, 0xba, 0xb0, 0x74, 0x91, - 0xd8, 0xba, 0xb2, 0xe2, 0xa6, 0x2b, 0x77, 0x0e, 0x75, 0x21, 0xb8, 0x29, 0xe9, 0x4c, 0x48, 0x23, - 0x99, 0xbc, 0x38, 0x93, 0x16, 0x8b, 0xb8, 0xf1, 0x0a, 0x3d, 0x9a, 0x57, 0xf0, 0x20, 0x92, 0x49, - 0x28, 0xca, 0xe8, 0xee, 0x31, 0x6f, 0x7e, 0xef, 0xff, 0x11, 0x7c, 0x29, 0x01, 0xa4, 0x16, 0x2c, - 0xd5, 0xb0, 0xcc, 0x58, 0xae, 0xd9, 0x6a, 0x38, 0x17, 0x8e, 0x0f, 0x99, 0x2d, 0x44, 0xa6, 0x52, - 0xa7, 0xc0, 0xcc, 0x4a, 0x51, 0xac, 0x54, 0x2a, 0xa8, 0x2d, 0xc0, 0x01, 0x69, 0x05, 0x82, 0x56, - 0x04, 0xcd, 0x35, 0x8d, 0x44, 0xe7, 0x34, 0x9e, 0xe2, 0x56, 0x31, 0x6e, 0x0c, 0x38, 0xee, 0xe9, - 0x32, 0x60, 0x9d, 0x93, 0x1f, 0xdb, 0x85, 0x73, 0x76, 0x0e, 0xd9, 0x3a, 0xac, 0x7a, 0x8f, 0xf8, - 0x30, 0x09, 0x6a, 0x53, 0xf1, 0xb2, 0x14, 0xa5, 0x23, 0x04, 0xef, 0x18, 0x9e, 0x8b, 0x36, 0xea, - 0xa2, 0x7e, 0x73, 0x5a, 0xcd, 0x64, 0x88, 0x9b, 0x9e, 0x9b, 0x79, 0xb0, 0xdd, 0xe8, 0xa2, 0xfe, - 0xc1, 0xe8, 0x88, 0x46, 0x2f, 0xdc, 0x2a, 0x7a, 0xe7, 0x9c, 0x9d, 0x40, 0xb6, 0x9e, 0xee, 0x2f, - 0xe2, 0x34, 0xda, 0x20, 0xdc, 0xba, 0x37, 0x5a, 0x19, 0x91, 0x6c, 0xd3, 0x3c, 0x84, 0x30, 0xe4, - 0x15, 0xef, 0xc5, 0x8f, 0xe4, 0x82, 0xfe, 0x13, 0x89, 0xfe, 0xb6, 0xd5, 0xf9, 0x53, 0xaf, 0x47, - 0x3f, 0x3e, 0xbf, 0x36, 0x8d, 0x7e, 0xef, 0x7c, 0xdb, 0xdd, 0x9b, 0x37, 0x7c, 0x6b, 0x0b, 0x78, - 0x16, 0xa9, 0x2b, 0xd9, 0x60, 0xf0, 0x3e, 0x8e, 0x75, 0x8e, 0xd1, 0x60, 0xb2, 0xc2, 0x67, 0x29, - 0xe4, 0x35, 0x4d, 0x7f, 0x33, 0x1e, 0x98, 0x1c, 0xd7, 0xfc, 0x26, 0xbe, 0xa9, 0x04, 0x3d, 0x5d, - 0x47, 0x4c, 0x82, 0xe6, 0x46, 0x52, 0x28, 0x24, 0x93, 0xc2, 0x54, 0x3d, 0xb2, 0xb0, 0xe2, 0x56, - 0x95, 0xb5, 0xe7, 0xbc, 0xc9, 0xf5, 0x7c, 0xb7, 0xfa, 0xeb, 0xea, 0x3b, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x26, 0x25, 0x67, 0xf3, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/project_service.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/project_service.pb.go deleted file mode 100644 index cdf5bbc5..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/ml/v1beta1/project_service.pb.go +++ /dev/null @@ -1,178 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/ml/v1beta1/project_service.proto - -package ml - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Requests service account information associated with a project. -type GetConfigRequest struct { - // Required. The project name. - // - // Authorization: requires `Viewer` role on the specified project. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetConfigRequest) Reset() { *m = GetConfigRequest{} } -func (m *GetConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetConfigRequest) ProtoMessage() {} -func (*GetConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *GetConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Returns service account information associated with a project. -type GetConfigResponse struct { - // The service account Cloud ML uses to access resources in the project. - ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // The project number for `service_account`. - ServiceAccountProject int64 `protobuf:"varint,2,opt,name=service_account_project,json=serviceAccountProject" json:"service_account_project,omitempty"` -} - -func (m *GetConfigResponse) Reset() { *m = GetConfigResponse{} } -func (m *GetConfigResponse) String() string { return proto.CompactTextString(m) } -func (*GetConfigResponse) ProtoMessage() {} -func (*GetConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *GetConfigResponse) GetServiceAccount() string { - if m != nil { - return m.ServiceAccount - } - return "" -} - -func (m *GetConfigResponse) GetServiceAccountProject() int64 { - if m != nil { - return m.ServiceAccountProject - } - return 0 -} - -func init() { - proto.RegisterType((*GetConfigRequest)(nil), "google.cloud.ml.v1beta1.GetConfigRequest") - proto.RegisterType((*GetConfigResponse)(nil), "google.cloud.ml.v1beta1.GetConfigResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ProjectManagementService service - -type ProjectManagementServiceClient interface { - // Get the service account information associated with your project. You need - // this information in order to grant the service account persmissions for - // the Google Cloud Storage location where you put your model training code - // for training the model with Google Cloud Machine Learning. - GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) -} - -type projectManagementServiceClient struct { - cc *grpc.ClientConn -} - -func NewProjectManagementServiceClient(cc *grpc.ClientConn) ProjectManagementServiceClient { - return &projectManagementServiceClient{cc} -} - -func (c *projectManagementServiceClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*GetConfigResponse, error) { - out := new(GetConfigResponse) - err := grpc.Invoke(ctx, "/google.cloud.ml.v1beta1.ProjectManagementService/GetConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ProjectManagementService service - -type ProjectManagementServiceServer interface { - // Get the service account information associated with your project. You need - // this information in order to grant the service account persmissions for - // the Google Cloud Storage location where you put your model training code - // for training the model with Google Cloud Machine Learning. - GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) -} - -func RegisterProjectManagementServiceServer(s *grpc.Server, srv ProjectManagementServiceServer) { - s.RegisterService(&_ProjectManagementService_serviceDesc, srv) -} - -func _ProjectManagementService_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProjectManagementServiceServer).GetConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.ml.v1beta1.ProjectManagementService/GetConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProjectManagementServiceServer).GetConfig(ctx, req.(*GetConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ProjectManagementService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.ml.v1beta1.ProjectManagementService", - HandlerType: (*ProjectManagementServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetConfig", - Handler: _ProjectManagementService_GetConfig_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/ml/v1beta1/project_service.proto", -} - -func init() { proto.RegisterFile("google/cloud/ml/v1beta1/project_service.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 327 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x4a, 0x43, 0x31, - 0x10, 0xc6, 0x79, 0x55, 0x84, 0x66, 0xe1, 0x9f, 0x88, 0xb4, 0x14, 0xc1, 0x52, 0xa4, 0xd6, 0xa2, - 0x09, 0x55, 0x10, 0x54, 0x5c, 0x58, 0x17, 0xae, 0x84, 0x52, 0x77, 0x6e, 0x4a, 0xfa, 0x1c, 0xc3, - 0x93, 0x24, 0x13, 0x5f, 0xd2, 0x6e, 0xc4, 0x8d, 0x27, 0x10, 0x3c, 0x87, 0xa7, 0xf1, 0x0a, 0x1e, - 0x44, 0xfa, 0x92, 0x16, 0x6d, 0x11, 0xdc, 0x0d, 0x33, 0xbf, 0x6f, 0x32, 0xdf, 0x4c, 0xc8, 0xa1, - 0x44, 0x94, 0x0a, 0x78, 0xaa, 0x70, 0x74, 0xcf, 0xb5, 0xe2, 0xe3, 0xce, 0x10, 0xbc, 0xe8, 0x70, - 0x9b, 0xe3, 0x23, 0xa4, 0x7e, 0xe0, 0x20, 0x1f, 0x67, 0x29, 0x30, 0x9b, 0xa3, 0x47, 0x5a, 0x09, - 0x38, 0x2b, 0x70, 0xa6, 0x15, 0x8b, 0x78, 0x6d, 0x3b, 0xf6, 0x11, 0x36, 0xe3, 0xc2, 0x18, 0xf4, - 0xc2, 0x67, 0x68, 0x5c, 0x90, 0x35, 0x9a, 0x64, 0xfd, 0x1a, 0xfc, 0x15, 0x9a, 0x87, 0x4c, 0xf6, - 0xe1, 0x69, 0x04, 0xce, 0x53, 0x4a, 0x96, 0x8d, 0xd0, 0x50, 0x4d, 0xea, 0x49, 0xab, 0xdc, 0x2f, - 0xe2, 0x86, 0x27, 0x1b, 0x3f, 0x38, 0x67, 0xd1, 0x38, 0xa0, 0x7b, 0x64, 0x2d, 0x0e, 0x31, 0x10, - 0x69, 0x8a, 0x23, 0xe3, 0xa3, 0x66, 0x35, 0xa6, 0x2f, 0x43, 0x96, 0x9e, 0x90, 0xca, 0x1c, 0x38, - 0x88, 0x2e, 0xaa, 0xa5, 0x7a, 0xd2, 0x5a, 0xea, 0x6f, 0xfd, 0x16, 0xf4, 0x42, 0xf1, 0xe8, 0x23, - 0x21, 0xd5, 0x18, 0xdf, 0x08, 0x23, 0x24, 0x68, 0x30, 0xfe, 0x36, 0xa0, 0xf4, 0x2d, 0x21, 0xe5, - 0xd9, 0x4c, 0x74, 0x9f, 0xfd, 0xb1, 0x00, 0x36, 0xef, 0xaf, 0xd6, 0xfe, 0x0f, 0x1a, 0x2c, 0x36, - 0x0e, 0x5e, 0x3f, 0xbf, 0xde, 0x4b, 0x4d, 0xba, 0x3b, 0x5b, 0xff, 0xf3, 0x64, 0x1f, 0x17, 0x71, - 0x7c, 0xc7, 0xdb, 0x2f, 0x67, 0x72, 0xaa, 0xea, 0x3a, 0xb2, 0x93, 0xa2, 0x5e, 0x68, 0x2f, 0x6c, - 0x36, 0x7d, 0xa2, 0xbb, 0x19, 0xfd, 0x44, 0x17, 0xbd, 0xc9, 0x15, 0x7a, 0xc9, 0xdd, 0x69, 0xd4, - 0x48, 0x54, 0xc2, 0x48, 0x86, 0xb9, 0xe4, 0x12, 0x4c, 0x71, 0x23, 0x1e, 0x4a, 0xc2, 0x66, 0x6e, - 0xe1, 0x33, 0x9c, 0x6b, 0x35, 0x5c, 0x29, 0xa8, 0xe3, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x76, - 0x59, 0xc4, 0x91, 0x31, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/common/common.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/common/common.pb.go deleted file mode 100644 index 28d69481..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/common/common.pb.go +++ /dev/null @@ -1,196 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/oslogin/common/common.proto - -/* -Package common is a generated protocol buffer package. - -It is generated from these files: - google/cloud/oslogin/common/common.proto - -It has these top-level messages: - PosixAccount - SshPublicKey -*/ -package common - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The POSIX account information associated with a Google account. -type PosixAccount struct { - // Only one POSIX account can be marked as primary. - Primary bool `protobuf:"varint,1,opt,name=primary" json:"primary,omitempty"` - // The username of the POSIX account. - Username string `protobuf:"bytes,2,opt,name=username" json:"username,omitempty"` - // The user ID. - Uid int64 `protobuf:"varint,3,opt,name=uid" json:"uid,omitempty"` - // The default group ID. - Gid int64 `protobuf:"varint,4,opt,name=gid" json:"gid,omitempty"` - // The path to the home directory for this account. - HomeDirectory string `protobuf:"bytes,5,opt,name=home_directory,json=homeDirectory" json:"home_directory,omitempty"` - // The path to the logic shell for this account. - Shell string `protobuf:"bytes,6,opt,name=shell" json:"shell,omitempty"` - // The GECOS (user information) entry for this account. - Gecos string `protobuf:"bytes,7,opt,name=gecos" json:"gecos,omitempty"` - // System identifier for which account the username or uid applies to. - // By default, the empty value is used. - SystemId string `protobuf:"bytes,8,opt,name=system_id,json=systemId" json:"system_id,omitempty"` - // Output only. A POSIX account identifier. - AccountId string `protobuf:"bytes,9,opt,name=account_id,json=accountId" json:"account_id,omitempty"` -} - -func (m *PosixAccount) Reset() { *m = PosixAccount{} } -func (m *PosixAccount) String() string { return proto.CompactTextString(m) } -func (*PosixAccount) ProtoMessage() {} -func (*PosixAccount) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *PosixAccount) GetPrimary() bool { - if m != nil { - return m.Primary - } - return false -} - -func (m *PosixAccount) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *PosixAccount) GetUid() int64 { - if m != nil { - return m.Uid - } - return 0 -} - -func (m *PosixAccount) GetGid() int64 { - if m != nil { - return m.Gid - } - return 0 -} - -func (m *PosixAccount) GetHomeDirectory() string { - if m != nil { - return m.HomeDirectory - } - return "" -} - -func (m *PosixAccount) GetShell() string { - if m != nil { - return m.Shell - } - return "" -} - -func (m *PosixAccount) GetGecos() string { - if m != nil { - return m.Gecos - } - return "" -} - -func (m *PosixAccount) GetSystemId() string { - if m != nil { - return m.SystemId - } - return "" -} - -func (m *PosixAccount) GetAccountId() string { - if m != nil { - return m.AccountId - } - return "" -} - -// The SSH public key information associated with a Google account. -type SshPublicKey struct { - // Public key text in SSH format, defined by - // <a href="https://www.ietf.org/rfc/rfc4253.txt" target="_blank">RFC4253</a> - // section 6.6. - Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // An expiration time in microseconds since epoch. - ExpirationTimeUsec int64 `protobuf:"varint,2,opt,name=expiration_time_usec,json=expirationTimeUsec" json:"expiration_time_usec,omitempty"` - // Output only. The SHA-256 fingerprint of the SSH public key. - Fingerprint string `protobuf:"bytes,3,opt,name=fingerprint" json:"fingerprint,omitempty"` -} - -func (m *SshPublicKey) Reset() { *m = SshPublicKey{} } -func (m *SshPublicKey) String() string { return proto.CompactTextString(m) } -func (*SshPublicKey) ProtoMessage() {} -func (*SshPublicKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *SshPublicKey) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *SshPublicKey) GetExpirationTimeUsec() int64 { - if m != nil { - return m.ExpirationTimeUsec - } - return 0 -} - -func (m *SshPublicKey) GetFingerprint() string { - if m != nil { - return m.Fingerprint - } - return "" -} - -func init() { - proto.RegisterType((*PosixAccount)(nil), "google.cloud.oslogin.common.PosixAccount") - proto.RegisterType((*SshPublicKey)(nil), "google.cloud.oslogin.common.SshPublicKey") -} - -func init() { proto.RegisterFile("google/cloud/oslogin/common/common.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 406 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x41, 0x6b, 0x14, 0x31, - 0x14, 0xc7, 0x99, 0xae, 0x6d, 0x77, 0xe2, 0x2a, 0x12, 0x7a, 0x08, 0x5d, 0xc5, 0xa5, 0x20, 0xec, - 0x69, 0x46, 0xf0, 0xe8, 0xa9, 0xad, 0x20, 0x45, 0xc1, 0x65, 0xd4, 0x8b, 0x2c, 0x2c, 0xd3, 0xe4, - 0x99, 0x7d, 0x38, 0xc9, 0x1b, 0x92, 0x0c, 0x74, 0xbf, 0x92, 0x07, 0x3f, 0x88, 0x5f, 0xc8, 0xab, - 0x24, 0x99, 0x51, 0x0f, 0xd2, 0x53, 0xf2, 0xff, 0xff, 0xfe, 0xf3, 0x92, 0x97, 0x37, 0x6c, 0xad, - 0x89, 0x74, 0x07, 0xb5, 0xec, 0x68, 0x50, 0x35, 0xf9, 0x8e, 0x34, 0xda, 0x5a, 0x92, 0x31, 0x34, - 0x2d, 0x55, 0xef, 0x28, 0x10, 0x5f, 0xe6, 0x64, 0x95, 0x92, 0xd5, 0x98, 0xac, 0x72, 0xe4, 0xfc, - 0xe9, 0x58, 0xa6, 0xed, 0xb1, 0x6e, 0xad, 0xa5, 0xd0, 0x06, 0x24, 0xeb, 0xf3, 0xa7, 0x17, 0xbf, - 0x0a, 0xb6, 0xd8, 0x90, 0xc7, 0xbb, 0x4b, 0x29, 0x69, 0xb0, 0x81, 0x0b, 0x76, 0xda, 0x3b, 0x34, - 0xad, 0x3b, 0x88, 0x62, 0x55, 0xac, 0xe7, 0xcd, 0x24, 0xf9, 0x39, 0x9b, 0x0f, 0x1e, 0x9c, 0x6d, - 0x0d, 0x88, 0xa3, 0x55, 0xb1, 0x2e, 0x9b, 0x3f, 0x9a, 0x3f, 0x61, 0xb3, 0x01, 0x95, 0x98, 0xad, - 0x8a, 0xf5, 0xac, 0x89, 0xdb, 0xe8, 0x68, 0x54, 0xe2, 0x41, 0x76, 0x34, 0x2a, 0xfe, 0x82, 0x3d, - 0xde, 0x93, 0x81, 0x9d, 0x42, 0x07, 0x32, 0x90, 0x3b, 0x88, 0xe3, 0x54, 0xe5, 0x51, 0x74, 0xdf, - 0x4c, 0x26, 0x3f, 0x63, 0xc7, 0x7e, 0x0f, 0x5d, 0x27, 0x4e, 0x12, 0xcd, 0x22, 0xba, 0x1a, 0x24, - 0x79, 0x71, 0x9a, 0xdd, 0x24, 0xf8, 0x92, 0x95, 0xfe, 0xe0, 0x03, 0x98, 0x1d, 0x2a, 0x31, 0xcf, - 0x77, 0xca, 0xc6, 0x8d, 0xe2, 0xcf, 0x18, 0x6b, 0x73, 0x53, 0x91, 0x96, 0x89, 0x96, 0xa3, 0x73, - 0xa3, 0x2e, 0x02, 0x5b, 0x7c, 0xf4, 0xfb, 0xcd, 0x70, 0xdb, 0xa1, 0x7c, 0x07, 0x87, 0x78, 0xe1, - 0x6f, 0x90, 0x9b, 0x2e, 0x9b, 0xb8, 0xe5, 0x2f, 0xd9, 0x19, 0xdc, 0xf5, 0xe8, 0xd2, 0x83, 0xed, - 0x02, 0x1a, 0xd8, 0x0d, 0x1e, 0x64, 0x6a, 0x7e, 0xd6, 0xf0, 0xbf, 0xec, 0x13, 0x1a, 0xf8, 0xec, - 0x41, 0xf2, 0x15, 0x7b, 0xf8, 0x15, 0xad, 0x06, 0xd7, 0x3b, 0xb4, 0x21, 0x3d, 0x47, 0xd9, 0xfc, - 0x6b, 0x5d, 0xfd, 0x28, 0xd8, 0x73, 0x49, 0xa6, 0xba, 0x67, 0x62, 0x57, 0x8b, 0x0f, 0xfe, 0x7d, - 0xd4, 0x9b, 0x38, 0xa1, 0x2f, 0x97, 0x63, 0x54, 0x53, 0xd7, 0x5a, 0x5d, 0x91, 0xd3, 0xb5, 0x06, - 0x9b, 0xa6, 0x57, 0x67, 0xd4, 0xf6, 0xe8, 0xff, 0xfb, 0x97, 0xbc, 0xce, 0xcb, 0xf7, 0xa3, 0xe5, - 0xdb, 0x5c, 0xe3, 0x3a, 0x1d, 0x37, 0x96, 0xaf, 0xae, 0x13, 0xfd, 0x39, 0xd1, 0x6d, 0xa2, 0xdb, - 0x91, 0x6e, 0x33, 0xbd, 0x3d, 0x49, 0x27, 0xbd, 0xfa, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x30, - 0xf7, 0x5b, 0x8e, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1/oslogin.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1/oslogin.pb.go deleted file mode 100644 index 9ebcb38a..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1/oslogin.pb.go +++ /dev/null @@ -1,584 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/oslogin/v1/oslogin.proto - -/* -Package oslogin is a generated protocol buffer package. - -It is generated from these files: - google/cloud/oslogin/v1/oslogin.proto - -It has these top-level messages: - LoginProfile - DeletePosixAccountRequest - DeleteSshPublicKeyRequest - GetLoginProfileRequest - GetSshPublicKeyRequest - ImportSshPublicKeyRequest - ImportSshPublicKeyResponse - UpdateSshPublicKeyRequest -*/ -package oslogin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_cloud_oslogin_common "google.golang.org/genproto/googleapis/cloud/oslogin/common" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The user profile information used for logging in to a virtual machine on -// Google Compute Engine. -type LoginProfile struct { - // The primary email address that uniquely identifies the user. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The list of POSIX accounts associated with the user. - PosixAccounts []*google_cloud_oslogin_common.PosixAccount `protobuf:"bytes,2,rep,name=posix_accounts,json=posixAccounts" json:"posix_accounts,omitempty"` - // A map from SSH public key fingerprint to the associated key object. - SshPublicKeys map[string]*google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,3,rep,name=ssh_public_keys,json=sshPublicKeys" json:"ssh_public_keys,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Indicates if the user is suspended. A suspended user cannot log in but - // their profile information is retained. - Suspended bool `protobuf:"varint,4,opt,name=suspended" json:"suspended,omitempty"` -} - -func (m *LoginProfile) Reset() { *m = LoginProfile{} } -func (m *LoginProfile) String() string { return proto.CompactTextString(m) } -func (*LoginProfile) ProtoMessage() {} -func (*LoginProfile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *LoginProfile) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LoginProfile) GetPosixAccounts() []*google_cloud_oslogin_common.PosixAccount { - if m != nil { - return m.PosixAccounts - } - return nil -} - -func (m *LoginProfile) GetSshPublicKeys() map[string]*google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKeys - } - return nil -} - -func (m *LoginProfile) GetSuspended() bool { - if m != nil { - return m.Suspended - } - return false -} - -// A request message for deleting a POSIX account entry. -type DeletePosixAccountRequest struct { - // A reference to the POSIX account to update. POSIX accounts are identified - // by the project ID they are associated with. A reference to the POSIX - // account is in format `users/{user}/projects/{project}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeletePosixAccountRequest) Reset() { *m = DeletePosixAccountRequest{} } -func (m *DeletePosixAccountRequest) String() string { return proto.CompactTextString(m) } -func (*DeletePosixAccountRequest) ProtoMessage() {} -func (*DeletePosixAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *DeletePosixAccountRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for deleting an SSH public key. -type DeleteSshPublicKeyRequest struct { - // The fingerprint of the public key to update. Public keys are identified by - // their SHA-256 fingerprint. The fingerprint of the public key is in format - // `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteSshPublicKeyRequest) Reset() { *m = DeleteSshPublicKeyRequest{} } -func (m *DeleteSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSshPublicKeyRequest) ProtoMessage() {} -func (*DeleteSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *DeleteSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for retrieving the login profile information for a user. -type GetLoginProfileRequest struct { - // The unique ID for the user in format `users/{user}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetLoginProfileRequest) Reset() { *m = GetLoginProfileRequest{} } -func (m *GetLoginProfileRequest) String() string { return proto.CompactTextString(m) } -func (*GetLoginProfileRequest) ProtoMessage() {} -func (*GetLoginProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *GetLoginProfileRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for retrieving an SSH public key. -type GetSshPublicKeyRequest struct { - // The fingerprint of the public key to retrieve. Public keys are identified - // by their SHA-256 fingerprint. The fingerprint of the public key is in - // format `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetSshPublicKeyRequest) Reset() { *m = GetSshPublicKeyRequest{} } -func (m *GetSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*GetSshPublicKeyRequest) ProtoMessage() {} -func (*GetSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *GetSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for importing an SSH public key. -type ImportSshPublicKeyRequest struct { - // The unique ID for the user in format `users/{user}`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The SSH public key and expiration time. - SshPublicKey *google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,2,opt,name=ssh_public_key,json=sshPublicKey" json:"ssh_public_key,omitempty"` - // The project ID of the Google Cloud Platform project. - ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId" json:"project_id,omitempty"` -} - -func (m *ImportSshPublicKeyRequest) Reset() { *m = ImportSshPublicKeyRequest{} } -func (m *ImportSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*ImportSshPublicKeyRequest) ProtoMessage() {} -func (*ImportSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ImportSshPublicKeyRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ImportSshPublicKeyRequest) GetSshPublicKey() *google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKey - } - return nil -} - -func (m *ImportSshPublicKeyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -// A response message for importing an SSH public key. -type ImportSshPublicKeyResponse struct { - // The login profile information for the user. - LoginProfile *LoginProfile `protobuf:"bytes,1,opt,name=login_profile,json=loginProfile" json:"login_profile,omitempty"` -} - -func (m *ImportSshPublicKeyResponse) Reset() { *m = ImportSshPublicKeyResponse{} } -func (m *ImportSshPublicKeyResponse) String() string { return proto.CompactTextString(m) } -func (*ImportSshPublicKeyResponse) ProtoMessage() {} -func (*ImportSshPublicKeyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ImportSshPublicKeyResponse) GetLoginProfile() *LoginProfile { - if m != nil { - return m.LoginProfile - } - return nil -} - -// A request message for updating an SSH public key. -type UpdateSshPublicKeyRequest struct { - // The fingerprint of the public key to update. Public keys are identified by - // their SHA-256 fingerprint. The fingerprint of the public key is in format - // `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The SSH public key and expiration time. - SshPublicKey *google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,2,opt,name=ssh_public_key,json=sshPublicKey" json:"ssh_public_key,omitempty"` - // Mask to control which fields get updated. Updates all if not present. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateSshPublicKeyRequest) Reset() { *m = UpdateSshPublicKeyRequest{} } -func (m *UpdateSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateSshPublicKeyRequest) ProtoMessage() {} -func (*UpdateSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *UpdateSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateSshPublicKeyRequest) GetSshPublicKey() *google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKey - } - return nil -} - -func (m *UpdateSshPublicKeyRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func init() { - proto.RegisterType((*LoginProfile)(nil), "google.cloud.oslogin.v1.LoginProfile") - proto.RegisterType((*DeletePosixAccountRequest)(nil), "google.cloud.oslogin.v1.DeletePosixAccountRequest") - proto.RegisterType((*DeleteSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1.DeleteSshPublicKeyRequest") - proto.RegisterType((*GetLoginProfileRequest)(nil), "google.cloud.oslogin.v1.GetLoginProfileRequest") - proto.RegisterType((*GetSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1.GetSshPublicKeyRequest") - proto.RegisterType((*ImportSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1.ImportSshPublicKeyRequest") - proto.RegisterType((*ImportSshPublicKeyResponse)(nil), "google.cloud.oslogin.v1.ImportSshPublicKeyResponse") - proto.RegisterType((*UpdateSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1.UpdateSshPublicKeyRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for OsLoginService service - -type OsLoginServiceClient interface { - // Deletes a POSIX account. - DeletePosixAccount(ctx context.Context, in *DeletePosixAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Deletes an SSH public key. - DeleteSshPublicKey(ctx context.Context, in *DeleteSshPublicKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Retrieves the profile information used for logging in to a virtual machine - // on Google Compute Engine. - GetLoginProfile(ctx context.Context, in *GetLoginProfileRequest, opts ...grpc.CallOption) (*LoginProfile, error) - // Retrieves an SSH public key. - GetSshPublicKey(ctx context.Context, in *GetSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) - // Adds an SSH public key and returns the profile information. Default POSIX - // account information is set when no username and UID exist as part of the - // login profile. - ImportSshPublicKey(ctx context.Context, in *ImportSshPublicKeyRequest, opts ...grpc.CallOption) (*ImportSshPublicKeyResponse, error) - // Updates an SSH public key and returns the profile information. This method - // supports patch semantics. - UpdateSshPublicKey(ctx context.Context, in *UpdateSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) -} - -type osLoginServiceClient struct { - cc *grpc.ClientConn -} - -func NewOsLoginServiceClient(cc *grpc.ClientConn) OsLoginServiceClient { - return &osLoginServiceClient{cc} -} - -func (c *osLoginServiceClient) DeletePosixAccount(ctx context.Context, in *DeletePosixAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/DeletePosixAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) DeleteSshPublicKey(ctx context.Context, in *DeleteSshPublicKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/DeleteSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) GetLoginProfile(ctx context.Context, in *GetLoginProfileRequest, opts ...grpc.CallOption) (*LoginProfile, error) { - out := new(LoginProfile) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/GetLoginProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) GetSshPublicKey(ctx context.Context, in *GetSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) { - out := new(google_cloud_oslogin_common.SshPublicKey) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/GetSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) ImportSshPublicKey(ctx context.Context, in *ImportSshPublicKeyRequest, opts ...grpc.CallOption) (*ImportSshPublicKeyResponse, error) { - out := new(ImportSshPublicKeyResponse) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/ImportSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) UpdateSshPublicKey(ctx context.Context, in *UpdateSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) { - out := new(google_cloud_oslogin_common.SshPublicKey) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1.OsLoginService/UpdateSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for OsLoginService service - -type OsLoginServiceServer interface { - // Deletes a POSIX account. - DeletePosixAccount(context.Context, *DeletePosixAccountRequest) (*google_protobuf1.Empty, error) - // Deletes an SSH public key. - DeleteSshPublicKey(context.Context, *DeleteSshPublicKeyRequest) (*google_protobuf1.Empty, error) - // Retrieves the profile information used for logging in to a virtual machine - // on Google Compute Engine. - GetLoginProfile(context.Context, *GetLoginProfileRequest) (*LoginProfile, error) - // Retrieves an SSH public key. - GetSshPublicKey(context.Context, *GetSshPublicKeyRequest) (*google_cloud_oslogin_common.SshPublicKey, error) - // Adds an SSH public key and returns the profile information. Default POSIX - // account information is set when no username and UID exist as part of the - // login profile. - ImportSshPublicKey(context.Context, *ImportSshPublicKeyRequest) (*ImportSshPublicKeyResponse, error) - // Updates an SSH public key and returns the profile information. This method - // supports patch semantics. - UpdateSshPublicKey(context.Context, *UpdateSshPublicKeyRequest) (*google_cloud_oslogin_common.SshPublicKey, error) -} - -func RegisterOsLoginServiceServer(s *grpc.Server, srv OsLoginServiceServer) { - s.RegisterService(&_OsLoginService_serviceDesc, srv) -} - -func _OsLoginService_DeletePosixAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeletePosixAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).DeletePosixAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1.OsLoginService/DeletePosixAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).DeletePosixAccount(ctx, req.(*DeletePosixAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_DeleteSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).DeleteSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1.OsLoginService/DeleteSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).DeleteSshPublicKey(ctx, req.(*DeleteSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_GetLoginProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetLoginProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).GetLoginProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1.OsLoginService/GetLoginProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).GetLoginProfile(ctx, req.(*GetLoginProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_GetSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).GetSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1.OsLoginService/GetSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).GetSshPublicKey(ctx, req.(*GetSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_ImportSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ImportSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).ImportSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1.OsLoginService/ImportSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).ImportSshPublicKey(ctx, req.(*ImportSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_UpdateSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).UpdateSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1.OsLoginService/UpdateSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).UpdateSshPublicKey(ctx, req.(*UpdateSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _OsLoginService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.oslogin.v1.OsLoginService", - HandlerType: (*OsLoginServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DeletePosixAccount", - Handler: _OsLoginService_DeletePosixAccount_Handler, - }, - { - MethodName: "DeleteSshPublicKey", - Handler: _OsLoginService_DeleteSshPublicKey_Handler, - }, - { - MethodName: "GetLoginProfile", - Handler: _OsLoginService_GetLoginProfile_Handler, - }, - { - MethodName: "GetSshPublicKey", - Handler: _OsLoginService_GetSshPublicKey_Handler, - }, - { - MethodName: "ImportSshPublicKey", - Handler: _OsLoginService_ImportSshPublicKey_Handler, - }, - { - MethodName: "UpdateSshPublicKey", - Handler: _OsLoginService_UpdateSshPublicKey_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/oslogin/v1/oslogin.proto", -} - -func init() { proto.RegisterFile("google/cloud/oslogin/v1/oslogin.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 774 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0x96, 0x93, 0x52, 0xe8, 0x26, 0x6d, 0xd1, 0x1e, 0xda, 0xd4, 0x6d, 0xd5, 0x60, 0x51, 0x35, - 0x44, 0xc8, 0x56, 0x52, 0x0e, 0x25, 0x15, 0x54, 0x14, 0x4a, 0x55, 0x7e, 0xd4, 0x28, 0x15, 0x3d, - 0xa0, 0x4a, 0xc1, 0x75, 0xb6, 0xae, 0x89, 0xed, 0x5d, 0xbc, 0x76, 0x44, 0x84, 0x7a, 0xe1, 0xc2, - 0x85, 0x13, 0x9c, 0x38, 0x22, 0x6e, 0x5c, 0x78, 0x02, 0x78, 0x00, 0x24, 0x4e, 0x3c, 0x01, 0x12, - 0x0f, 0x82, 0xbc, 0x5e, 0xb7, 0x4e, 0x6c, 0xa7, 0xae, 0xc4, 0x29, 0xbb, 0x9e, 0xf9, 0x66, 0xbf, - 0xfd, 0x76, 0xbe, 0x51, 0xc0, 0xb2, 0x8e, 0xb1, 0x6e, 0x22, 0x45, 0x33, 0xb1, 0xd7, 0x51, 0x30, - 0x35, 0xb1, 0x6e, 0xd8, 0x4a, 0xaf, 0x16, 0x2e, 0x65, 0xe2, 0x60, 0x17, 0xc3, 0xd9, 0x20, 0x4d, - 0x66, 0x69, 0x72, 0x18, 0xeb, 0xd5, 0xc4, 0x05, 0x8e, 0x57, 0x89, 0xa1, 0xa8, 0xb6, 0x8d, 0x5d, - 0xd5, 0x35, 0xb0, 0x4d, 0x03, 0x98, 0x58, 0x49, 0xac, 0xae, 0x61, 0xcb, 0xc2, 0xe1, 0x0f, 0xcf, - 0x9c, 0xe7, 0x99, 0x6c, 0x77, 0xe8, 0x1d, 0x29, 0xc8, 0x22, 0x6e, 0x9f, 0x07, 0xcb, 0xc3, 0xc1, - 0x23, 0x03, 0x99, 0x9d, 0xb6, 0xa5, 0xd2, 0x6e, 0x90, 0x21, 0xfd, 0xc9, 0x81, 0xe2, 0x13, 0xbf, - 0x78, 0xd3, 0xc1, 0x47, 0x86, 0x89, 0x20, 0x04, 0x63, 0xb6, 0x6a, 0xa1, 0x92, 0x50, 0x16, 0x2a, - 0x13, 0x2d, 0xb6, 0x86, 0x4d, 0x30, 0x45, 0x30, 0x35, 0x5e, 0xb7, 0x55, 0x4d, 0xc3, 0x9e, 0xed, - 0xd2, 0x52, 0xae, 0x9c, 0xaf, 0x14, 0xea, 0x37, 0xe4, 0xc4, 0xdb, 0x71, 0x7e, 0x4d, 0x1f, 0x72, - 0x2f, 0x40, 0xb4, 0x26, 0x49, 0x64, 0x47, 0xe1, 0x0b, 0x30, 0x4d, 0xe9, 0x71, 0x9b, 0x78, 0x87, - 0xa6, 0xa1, 0xb5, 0xbb, 0xa8, 0x4f, 0x4b, 0x79, 0x56, 0x72, 0x4d, 0x4e, 0x11, 0x4c, 0x8e, 0xb2, - 0x94, 0xf7, 0xe8, 0x71, 0x93, 0x61, 0x1f, 0xa3, 0x3e, 0xdd, 0xb2, 0x5d, 0xa7, 0xdf, 0x9a, 0xa4, - 0xd1, 0x6f, 0x70, 0x01, 0x4c, 0x50, 0x8f, 0x12, 0x64, 0x77, 0x50, 0xa7, 0x34, 0x56, 0x16, 0x2a, - 0x57, 0x5a, 0x67, 0x1f, 0xc4, 0x2e, 0x80, 0xf1, 0x12, 0xf0, 0x2a, 0xc8, 0x77, 0x51, 0x9f, 0x5f, - 0xdd, 0x5f, 0xc2, 0x0d, 0x70, 0xa9, 0xa7, 0x9a, 0x1e, 0x2a, 0xe5, 0xca, 0xc2, 0xb9, 0x17, 0x8e, - 0x56, 0x6c, 0x05, 0xb8, 0x46, 0x6e, 0x4d, 0x90, 0x14, 0x30, 0xf7, 0x00, 0x99, 0xc8, 0x45, 0x03, - 0x8a, 0xa0, 0x57, 0x1e, 0xa2, 0x6e, 0x92, 0xde, 0x67, 0x80, 0x81, 0x8a, 0x23, 0x00, 0x37, 0xc1, - 0xcc, 0x36, 0x72, 0xa3, 0x0a, 0x9d, 0x9f, 0x9d, 0xb5, 0xf6, 0x17, 0x01, 0xcc, 0xed, 0x58, 0x04, - 0x3b, 0x89, 0x88, 0x19, 0x30, 0x4e, 0x54, 0x07, 0xd9, 0x2e, 0xc7, 0xf0, 0x1d, 0xdc, 0x05, 0x53, - 0x83, 0x0f, 0x7c, 0x71, 0x05, 0x8b, 0xd1, 0x07, 0x85, 0x8b, 0x00, 0x10, 0x07, 0xbf, 0x44, 0x9a, - 0xdb, 0x36, 0x3a, 0xa5, 0x3c, 0x3b, 0x6c, 0x82, 0x7f, 0xd9, 0xe9, 0x48, 0xc7, 0x40, 0x4c, 0x22, - 0x49, 0x09, 0xb6, 0x29, 0x82, 0x8f, 0xc0, 0x24, 0x3b, 0xa7, 0x4d, 0x02, 0x75, 0x18, 0xd9, 0x42, - 0x7d, 0x39, 0x53, 0xb3, 0xb5, 0x8a, 0x66, 0x64, 0x27, 0x7d, 0x17, 0xc0, 0xdc, 0x33, 0xd2, 0x51, - 0x33, 0xbf, 0xce, 0xff, 0xd7, 0x62, 0x1d, 0x14, 0x3c, 0xc6, 0x80, 0x39, 0x99, 0x89, 0x51, 0xa8, - 0x8b, 0x61, 0xb5, 0xd0, 0xec, 0xf2, 0x43, 0xdf, 0xec, 0x4f, 0x55, 0xda, 0x6d, 0x81, 0x20, 0xdd, - 0x5f, 0xd7, 0x7f, 0x5d, 0x06, 0x53, 0xbb, 0x94, 0x5d, 0x70, 0x0f, 0x39, 0x3d, 0x43, 0x43, 0xf0, - 0x9d, 0x00, 0x60, 0xbc, 0x43, 0x61, 0x3d, 0x55, 0x9e, 0xd4, 0x76, 0x16, 0x67, 0x62, 0x2c, 0xb6, - 0xfc, 0x79, 0x24, 0x2d, 0xbf, 0xfd, 0xfd, 0xf7, 0x63, 0x6e, 0xa9, 0xba, 0xe8, 0x8f, 0xc8, 0x37, - 0xbe, 0x2c, 0x77, 0x3c, 0x8a, 0x1c, 0xaa, 0x54, 0x15, 0xfe, 0x88, 0x54, 0xa9, 0x9e, 0xc0, 0xf7, - 0xa7, 0x4c, 0xa2, 0xd7, 0x3f, 0x97, 0x49, 0xc2, 0x4b, 0xa4, 0x32, 0xa9, 0x32, 0x26, 0xd7, 0xab, - 0x52, 0x9c, 0xc9, 0xc0, 0x04, 0xf1, 0xe9, 0x7c, 0x10, 0xc0, 0xf4, 0x90, 0xb1, 0xa0, 0x92, 0xca, - 0x25, 0xd9, 0x82, 0x62, 0xb6, 0x2e, 0x93, 0x56, 0x18, 0xaf, 0x6b, 0x70, 0x29, 0xc6, 0xeb, 0x44, - 0x89, 0x36, 0x20, 0xfc, 0x14, 0x90, 0x1a, 0x10, 0x68, 0x24, 0xa9, 0x24, 0x75, 0xb2, 0xf7, 0x5e, - 0x28, 0x18, 0xcc, 0x22, 0xd8, 0x0f, 0x01, 0xc0, 0xb8, 0x0f, 0x47, 0xbc, 0x5f, 0xea, 0x64, 0x11, - 0x57, 0x2f, 0x84, 0x09, 0x8c, 0x2e, 0x6d, 0x30, 0xae, 0xb7, 0xa5, 0x15, 0xc6, 0x35, 0x98, 0x45, - 0xa7, 0x32, 0x36, 0x8c, 0x18, 0xb0, 0x31, 0xe4, 0x4c, 0xf8, 0x4d, 0x00, 0x30, 0xee, 0xee, 0x11, - 0x17, 0x48, 0x1d, 0x05, 0x17, 0x91, 0xb8, 0xc1, 0x68, 0xdf, 0xaa, 0x67, 0x90, 0x78, 0x98, 0xf1, - 0xe6, 0x67, 0x01, 0xcc, 0x6b, 0xd8, 0x4a, 0x23, 0xb8, 0x59, 0xe4, 0x66, 0x6f, 0xfa, 0x36, 0x68, - 0x0a, 0xcf, 0xef, 0xf2, 0x44, 0x1d, 0x9b, 0xaa, 0xad, 0xcb, 0xd8, 0xd1, 0x15, 0x1d, 0xd9, 0xcc, - 0x24, 0x4a, 0x10, 0x52, 0x89, 0x41, 0x63, 0xff, 0x6b, 0xd6, 0xf9, 0xf2, 0x6b, 0x6e, 0x76, 0x3b, - 0x28, 0x70, 0x9f, 0x9d, 0xc4, 0xab, 0xcb, 0xfb, 0xb5, 0x9f, 0x61, 0xe4, 0x80, 0x45, 0x0e, 0x78, - 0xe4, 0x60, 0xbf, 0x76, 0x38, 0xce, 0xca, 0xaf, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x79, - 0x9f, 0xd6, 0x35, 0x09, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1alpha/oslogin.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1alpha/oslogin.pb.go deleted file mode 100644 index 5fbc3b30..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1alpha/oslogin.pb.go +++ /dev/null @@ -1,583 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/oslogin/v1alpha/oslogin.proto - -/* -Package oslogin is a generated protocol buffer package. - -It is generated from these files: - google/cloud/oslogin/v1alpha/oslogin.proto - -It has these top-level messages: - LoginProfile - DeletePosixAccountRequest - DeleteSshPublicKeyRequest - GetLoginProfileRequest - GetSshPublicKeyRequest - ImportSshPublicKeyRequest - ImportSshPublicKeyResponse - UpdateSshPublicKeyRequest -*/ -package oslogin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_cloud_oslogin_common "google.golang.org/genproto/googleapis/cloud/oslogin/common" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The user profile information used for logging in to a virtual machine on -// Google Compute Engine. -type LoginProfile struct { - // A unique user ID for identifying the user. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The list of POSIX accounts associated with the Directory API user. - PosixAccounts []*google_cloud_oslogin_common.PosixAccount `protobuf:"bytes,2,rep,name=posix_accounts,json=posixAccounts" json:"posix_accounts,omitempty"` - // A map from SSH public key fingerprint to the associated key object. - SshPublicKeys map[string]*google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,3,rep,name=ssh_public_keys,json=sshPublicKeys" json:"ssh_public_keys,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Indicates if the user is suspended. - Suspended bool `protobuf:"varint,4,opt,name=suspended" json:"suspended,omitempty"` -} - -func (m *LoginProfile) Reset() { *m = LoginProfile{} } -func (m *LoginProfile) String() string { return proto.CompactTextString(m) } -func (*LoginProfile) ProtoMessage() {} -func (*LoginProfile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *LoginProfile) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LoginProfile) GetPosixAccounts() []*google_cloud_oslogin_common.PosixAccount { - if m != nil { - return m.PosixAccounts - } - return nil -} - -func (m *LoginProfile) GetSshPublicKeys() map[string]*google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKeys - } - return nil -} - -func (m *LoginProfile) GetSuspended() bool { - if m != nil { - return m.Suspended - } - return false -} - -// A request message for deleting a POSIX account entry. -type DeletePosixAccountRequest struct { - // A reference to the POSIX account to update. POSIX accounts are identified - // by the project ID they are associated with. A reference to the POSIX - // account is in format `users/{user}/projects/{project}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeletePosixAccountRequest) Reset() { *m = DeletePosixAccountRequest{} } -func (m *DeletePosixAccountRequest) String() string { return proto.CompactTextString(m) } -func (*DeletePosixAccountRequest) ProtoMessage() {} -func (*DeletePosixAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *DeletePosixAccountRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for deleting an SSH public key. -type DeleteSshPublicKeyRequest struct { - // The fingerprint of the public key to update. Public keys are identified by - // their SHA-256 fingerprint. The fingerprint of the public key is in format - // `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteSshPublicKeyRequest) Reset() { *m = DeleteSshPublicKeyRequest{} } -func (m *DeleteSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSshPublicKeyRequest) ProtoMessage() {} -func (*DeleteSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *DeleteSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for retrieving the login profile information for a user. -type GetLoginProfileRequest struct { - // The unique ID for the user in format `users/{user}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetLoginProfileRequest) Reset() { *m = GetLoginProfileRequest{} } -func (m *GetLoginProfileRequest) String() string { return proto.CompactTextString(m) } -func (*GetLoginProfileRequest) ProtoMessage() {} -func (*GetLoginProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *GetLoginProfileRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for retrieving an SSH public key. -type GetSshPublicKeyRequest struct { - // The fingerprint of the public key to retrieve. Public keys are identified - // by their SHA-256 fingerprint. The fingerprint of the public key is in - // format `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetSshPublicKeyRequest) Reset() { *m = GetSshPublicKeyRequest{} } -func (m *GetSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*GetSshPublicKeyRequest) ProtoMessage() {} -func (*GetSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *GetSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for importing an SSH public key. -type ImportSshPublicKeyRequest struct { - // The unique ID for the user in format `users/{user}`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The SSH public key and expiration time. - SshPublicKey *google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,2,opt,name=ssh_public_key,json=sshPublicKey" json:"ssh_public_key,omitempty"` - // The project ID of the Google Cloud Platform project. - ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId" json:"project_id,omitempty"` -} - -func (m *ImportSshPublicKeyRequest) Reset() { *m = ImportSshPublicKeyRequest{} } -func (m *ImportSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*ImportSshPublicKeyRequest) ProtoMessage() {} -func (*ImportSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ImportSshPublicKeyRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ImportSshPublicKeyRequest) GetSshPublicKey() *google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKey - } - return nil -} - -func (m *ImportSshPublicKeyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -// A response message for importing an SSH public key. -type ImportSshPublicKeyResponse struct { - // The login profile information for the user. - LoginProfile *LoginProfile `protobuf:"bytes,1,opt,name=login_profile,json=loginProfile" json:"login_profile,omitempty"` -} - -func (m *ImportSshPublicKeyResponse) Reset() { *m = ImportSshPublicKeyResponse{} } -func (m *ImportSshPublicKeyResponse) String() string { return proto.CompactTextString(m) } -func (*ImportSshPublicKeyResponse) ProtoMessage() {} -func (*ImportSshPublicKeyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ImportSshPublicKeyResponse) GetLoginProfile() *LoginProfile { - if m != nil { - return m.LoginProfile - } - return nil -} - -// A request message for updating an SSH public key. -type UpdateSshPublicKeyRequest struct { - // The fingerprint of the public key to update. Public keys are identified by - // their SHA-256 fingerprint. The fingerprint of the public key is in format - // `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The SSH public key and expiration time. - SshPublicKey *google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,2,opt,name=ssh_public_key,json=sshPublicKey" json:"ssh_public_key,omitempty"` - // Mask to control which fields get updated. Updates all if not present. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateSshPublicKeyRequest) Reset() { *m = UpdateSshPublicKeyRequest{} } -func (m *UpdateSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateSshPublicKeyRequest) ProtoMessage() {} -func (*UpdateSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *UpdateSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateSshPublicKeyRequest) GetSshPublicKey() *google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKey - } - return nil -} - -func (m *UpdateSshPublicKeyRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func init() { - proto.RegisterType((*LoginProfile)(nil), "google.cloud.oslogin.v1alpha.LoginProfile") - proto.RegisterType((*DeletePosixAccountRequest)(nil), "google.cloud.oslogin.v1alpha.DeletePosixAccountRequest") - proto.RegisterType((*DeleteSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1alpha.DeleteSshPublicKeyRequest") - proto.RegisterType((*GetLoginProfileRequest)(nil), "google.cloud.oslogin.v1alpha.GetLoginProfileRequest") - proto.RegisterType((*GetSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1alpha.GetSshPublicKeyRequest") - proto.RegisterType((*ImportSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1alpha.ImportSshPublicKeyRequest") - proto.RegisterType((*ImportSshPublicKeyResponse)(nil), "google.cloud.oslogin.v1alpha.ImportSshPublicKeyResponse") - proto.RegisterType((*UpdateSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1alpha.UpdateSshPublicKeyRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for OsLoginService service - -type OsLoginServiceClient interface { - // Deletes a POSIX account. - DeletePosixAccount(ctx context.Context, in *DeletePosixAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Deletes an SSH public key. - DeleteSshPublicKey(ctx context.Context, in *DeleteSshPublicKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Retrieves the profile information used for logging in to a virtual machine - // on Google Compute Engine. - GetLoginProfile(ctx context.Context, in *GetLoginProfileRequest, opts ...grpc.CallOption) (*LoginProfile, error) - // Retrieves an SSH public key. - GetSshPublicKey(ctx context.Context, in *GetSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) - // Adds an SSH public key and returns the profile information. Default POSIX - // account information is set when no username and UID exist as part of the - // login profile. - ImportSshPublicKey(ctx context.Context, in *ImportSshPublicKeyRequest, opts ...grpc.CallOption) (*ImportSshPublicKeyResponse, error) - // Updates an SSH public key and returns the profile information. This method - // supports patch semantics. - UpdateSshPublicKey(ctx context.Context, in *UpdateSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) -} - -type osLoginServiceClient struct { - cc *grpc.ClientConn -} - -func NewOsLoginServiceClient(cc *grpc.ClientConn) OsLoginServiceClient { - return &osLoginServiceClient{cc} -} - -func (c *osLoginServiceClient) DeletePosixAccount(ctx context.Context, in *DeletePosixAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1alpha.OsLoginService/DeletePosixAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) DeleteSshPublicKey(ctx context.Context, in *DeleteSshPublicKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1alpha.OsLoginService/DeleteSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) GetLoginProfile(ctx context.Context, in *GetLoginProfileRequest, opts ...grpc.CallOption) (*LoginProfile, error) { - out := new(LoginProfile) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1alpha.OsLoginService/GetLoginProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) GetSshPublicKey(ctx context.Context, in *GetSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) { - out := new(google_cloud_oslogin_common.SshPublicKey) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1alpha.OsLoginService/GetSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) ImportSshPublicKey(ctx context.Context, in *ImportSshPublicKeyRequest, opts ...grpc.CallOption) (*ImportSshPublicKeyResponse, error) { - out := new(ImportSshPublicKeyResponse) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1alpha.OsLoginService/ImportSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) UpdateSshPublicKey(ctx context.Context, in *UpdateSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) { - out := new(google_cloud_oslogin_common.SshPublicKey) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1alpha.OsLoginService/UpdateSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for OsLoginService service - -type OsLoginServiceServer interface { - // Deletes a POSIX account. - DeletePosixAccount(context.Context, *DeletePosixAccountRequest) (*google_protobuf1.Empty, error) - // Deletes an SSH public key. - DeleteSshPublicKey(context.Context, *DeleteSshPublicKeyRequest) (*google_protobuf1.Empty, error) - // Retrieves the profile information used for logging in to a virtual machine - // on Google Compute Engine. - GetLoginProfile(context.Context, *GetLoginProfileRequest) (*LoginProfile, error) - // Retrieves an SSH public key. - GetSshPublicKey(context.Context, *GetSshPublicKeyRequest) (*google_cloud_oslogin_common.SshPublicKey, error) - // Adds an SSH public key and returns the profile information. Default POSIX - // account information is set when no username and UID exist as part of the - // login profile. - ImportSshPublicKey(context.Context, *ImportSshPublicKeyRequest) (*ImportSshPublicKeyResponse, error) - // Updates an SSH public key and returns the profile information. This method - // supports patch semantics. - UpdateSshPublicKey(context.Context, *UpdateSshPublicKeyRequest) (*google_cloud_oslogin_common.SshPublicKey, error) -} - -func RegisterOsLoginServiceServer(s *grpc.Server, srv OsLoginServiceServer) { - s.RegisterService(&_OsLoginService_serviceDesc, srv) -} - -func _OsLoginService_DeletePosixAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeletePosixAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).DeletePosixAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1alpha.OsLoginService/DeletePosixAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).DeletePosixAccount(ctx, req.(*DeletePosixAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_DeleteSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).DeleteSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1alpha.OsLoginService/DeleteSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).DeleteSshPublicKey(ctx, req.(*DeleteSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_GetLoginProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetLoginProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).GetLoginProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1alpha.OsLoginService/GetLoginProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).GetLoginProfile(ctx, req.(*GetLoginProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_GetSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).GetSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1alpha.OsLoginService/GetSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).GetSshPublicKey(ctx, req.(*GetSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_ImportSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ImportSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).ImportSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1alpha.OsLoginService/ImportSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).ImportSshPublicKey(ctx, req.(*ImportSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_UpdateSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).UpdateSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1alpha.OsLoginService/UpdateSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).UpdateSshPublicKey(ctx, req.(*UpdateSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _OsLoginService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.oslogin.v1alpha.OsLoginService", - HandlerType: (*OsLoginServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DeletePosixAccount", - Handler: _OsLoginService_DeletePosixAccount_Handler, - }, - { - MethodName: "DeleteSshPublicKey", - Handler: _OsLoginService_DeleteSshPublicKey_Handler, - }, - { - MethodName: "GetLoginProfile", - Handler: _OsLoginService_GetLoginProfile_Handler, - }, - { - MethodName: "GetSshPublicKey", - Handler: _OsLoginService_GetSshPublicKey_Handler, - }, - { - MethodName: "ImportSshPublicKey", - Handler: _OsLoginService_ImportSshPublicKey_Handler, - }, - { - MethodName: "UpdateSshPublicKey", - Handler: _OsLoginService_UpdateSshPublicKey_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/oslogin/v1alpha/oslogin.proto", -} - -func init() { proto.RegisterFile("google/cloud/oslogin/v1alpha/oslogin.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 779 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6a, 0xdb, 0x4a, - 0x14, 0x46, 0x76, 0x6e, 0x48, 0xc6, 0x4e, 0x72, 0x99, 0x45, 0x70, 0x74, 0x73, 0xc1, 0x88, 0xd0, - 0x3a, 0x26, 0x68, 0x88, 0x5b, 0x68, 0x9a, 0x90, 0x86, 0xfc, 0x35, 0x84, 0xb6, 0xc4, 0x38, 0x34, - 0x8b, 0x12, 0x30, 0x13, 0x79, 0xa2, 0xa8, 0x96, 0x34, 0x53, 0x8d, 0x14, 0x6a, 0x4a, 0x36, 0x7d, - 0x83, 0x12, 0xe8, 0xbe, 0x64, 0xd7, 0x7d, 0x17, 0x5d, 0xf4, 0x05, 0x0a, 0x5d, 0xf5, 0x15, 0x4a, - 0x9f, 0xa3, 0x68, 0x34, 0x4a, 0x64, 0x5b, 0xb6, 0x65, 0xe8, 0xca, 0x3a, 0x73, 0xfe, 0xbe, 0xf3, - 0x9d, 0x1f, 0x0c, 0xaa, 0x26, 0xa5, 0xa6, 0x4d, 0x90, 0x61, 0xd3, 0xa0, 0x85, 0x28, 0xb7, 0xa9, - 0x69, 0xb9, 0xe8, 0x72, 0x15, 0xdb, 0xec, 0x02, 0xc7, 0xb2, 0xce, 0x3c, 0xea, 0x53, 0xb8, 0x18, - 0xd9, 0xea, 0xc2, 0x56, 0x8f, 0x75, 0xd2, 0x56, 0x95, 0x5a, 0x84, 0x99, 0x85, 0xb0, 0xeb, 0x52, - 0x1f, 0xfb, 0x16, 0x75, 0x79, 0xe4, 0xab, 0x56, 0x52, 0xf3, 0x18, 0xd4, 0x71, 0x68, 0xfc, 0x23, - 0x2d, 0xff, 0x93, 0x96, 0x42, 0x3a, 0x0b, 0xce, 0x11, 0x71, 0x98, 0xdf, 0x91, 0xca, 0x72, 0xaf, - 0xf2, 0xdc, 0x22, 0x76, 0xab, 0xe9, 0x60, 0xde, 0x8e, 0x2c, 0xb4, 0xdf, 0x39, 0x50, 0x7c, 0x1e, - 0x06, 0xaf, 0x7b, 0xf4, 0xdc, 0xb2, 0x09, 0x84, 0x60, 0xc2, 0xc5, 0x0e, 0x29, 0x29, 0x65, 0xa5, - 0x32, 0xdd, 0x10, 0xdf, 0xb0, 0x0e, 0x66, 0x19, 0xe5, 0xd6, 0xdb, 0x26, 0x36, 0x0c, 0x1a, 0xb8, - 0x3e, 0x2f, 0xe5, 0xca, 0xf9, 0x4a, 0xa1, 0xb6, 0xac, 0xa7, 0x96, 0x28, 0xf1, 0xd5, 0x43, 0x97, - 0xed, 0xc8, 0xa3, 0x31, 0xc3, 0x12, 0x12, 0x87, 0x04, 0xcc, 0x71, 0x7e, 0xd1, 0x64, 0xc1, 0x99, - 0x6d, 0x19, 0xcd, 0x36, 0xe9, 0xf0, 0x52, 0x5e, 0x84, 0xdc, 0xd4, 0x87, 0xb1, 0xa6, 0x27, 0xa1, - 0xea, 0xc7, 0xfc, 0xa2, 0x2e, 0x02, 0x3c, 0x23, 0x1d, 0xbe, 0xef, 0xfa, 0x5e, 0xa7, 0x31, 0xc3, - 0x93, 0x6f, 0x70, 0x11, 0x4c, 0xf3, 0x80, 0x33, 0xe2, 0xb6, 0x48, 0xab, 0x34, 0x51, 0x56, 0x2a, - 0x53, 0x8d, 0xbb, 0x07, 0xb5, 0x0d, 0x60, 0x7f, 0x08, 0xf8, 0x2f, 0xc8, 0xb7, 0x49, 0x47, 0xd6, - 0x1f, 0x7e, 0xc2, 0x2d, 0xf0, 0xcf, 0x25, 0xb6, 0x03, 0x52, 0xca, 0x95, 0x95, 0x91, 0x55, 0x27, - 0x23, 0x36, 0x22, 0xbf, 0xf5, 0xdc, 0x9a, 0xa2, 0x21, 0xb0, 0xb0, 0x47, 0x6c, 0xe2, 0x93, 0x2e, - 0x5a, 0xc8, 0x9b, 0x80, 0x70, 0x3f, 0x8d, 0xf4, 0x3b, 0x87, 0xae, 0x88, 0x43, 0x1c, 0x56, 0xc0, - 0xfc, 0x01, 0xf1, 0x93, 0x0c, 0x8d, 0xb6, 0xce, 0x1a, 0xfb, 0x46, 0x01, 0x0b, 0x87, 0x0e, 0xa3, - 0x5e, 0xaa, 0xc7, 0x3c, 0x98, 0x64, 0xd8, 0x23, 0xae, 0x2f, 0x7d, 0xa4, 0x04, 0x8f, 0xc0, 0x6c, - 0x77, 0x97, 0xc7, 0x67, 0xb0, 0x98, 0x6c, 0x28, 0xfc, 0x1f, 0x00, 0xe6, 0xd1, 0xd7, 0xc4, 0xf0, - 0x9b, 0x56, 0xab, 0x94, 0x17, 0xc9, 0xa6, 0xe5, 0xcb, 0x61, 0x4b, 0x73, 0x80, 0x9a, 0x06, 0x92, - 0x33, 0xea, 0x72, 0x02, 0x8f, 0xc0, 0x8c, 0xc8, 0xd3, 0x64, 0x11, 0x3b, 0x02, 0x6c, 0xa1, 0x56, - 0xcd, 0x3e, 0x71, 0x8d, 0xa2, 0x9d, 0x90, 0xb4, 0x6f, 0x0a, 0x58, 0x78, 0xc9, 0x5a, 0x38, 0x73, - 0x8b, 0xfe, 0x3e, 0x21, 0x1b, 0xa0, 0x10, 0x08, 0x04, 0x62, 0xa7, 0x05, 0x23, 0x85, 0x9a, 0x1a, - 0x47, 0x8b, 0xd7, 0x5e, 0x7f, 0x1a, 0xae, 0xfd, 0x0b, 0xcc, 0xdb, 0x0d, 0x10, 0x99, 0x87, 0xdf, - 0xb5, 0xeb, 0x29, 0x30, 0x7b, 0xc4, 0x45, 0x81, 0xc7, 0xc4, 0xbb, 0xb4, 0x0c, 0x02, 0x3f, 0x28, - 0x00, 0xf6, 0x8f, 0x29, 0x7c, 0x34, 0x9c, 0xa3, 0x81, 0x83, 0xad, 0xce, 0xf7, 0x41, 0xd9, 0x0f, - 0xcf, 0x93, 0x56, 0x7d, 0xff, 0xf3, 0xd7, 0x75, 0x6e, 0xa9, 0xaa, 0xdd, 0xde, 0xce, 0x77, 0x21, - 0x41, 0x9b, 0x01, 0x27, 0x1e, 0x47, 0x55, 0x24, 0x7b, 0xca, 0x51, 0xf5, 0x0a, 0x7e, 0xbc, 0xc5, - 0x94, 0x24, 0x22, 0x1b, 0xa6, 0x94, 0xc6, 0x0c, 0xc4, 0x84, 0x04, 0xa6, 0xe5, 0xea, 0xfd, 0x01, - 0x98, 0xba, 0x4e, 0x4b, 0x08, 0xec, 0x93, 0x02, 0xe6, 0x7a, 0x36, 0x0e, 0x3e, 0x1c, 0x8e, 0x2a, - 0x7d, 0x41, 0xd5, 0x31, 0x66, 0x50, 0x5b, 0x11, 0x30, 0xef, 0xc1, 0xa5, 0x74, 0x98, 0x57, 0x28, - 0x39, 0xa3, 0xf0, 0x26, 0xc2, 0xd8, 0xc5, 0xdc, 0x68, 0x8c, 0x69, 0xb4, 0x65, 0x9f, 0xd1, 0x98, - 0x49, 0x98, 0x99, 0xc9, 0x1f, 0x0a, 0x80, 0xfd, 0x9b, 0x3b, 0xaa, 0xc5, 0x03, 0x0f, 0x92, 0xba, - 0x36, 0xbe, 0x63, 0x74, 0x24, 0xb4, 0x3d, 0x01, 0xfd, 0x89, 0xb6, 0x72, 0x07, 0x3d, 0x3a, 0x66, - 0xb7, 0xfc, 0xae, 0x5b, 0x7d, 0xde, 0xeb, 0x3d, 0x5b, 0x0d, 0xbf, 0x2a, 0x00, 0xf6, 0x5f, 0x86, - 0x51, 0xf5, 0x0c, 0xbc, 0x25, 0xe3, 0x70, 0xbf, 0x25, 0x0a, 0x78, 0x5c, 0xcb, 0xca, 0x7d, 0x2f, - 0xf6, 0x9d, 0x2f, 0x0a, 0x28, 0x1b, 0xd4, 0x19, 0x0a, 0x75, 0xa7, 0x28, 0xef, 0x46, 0x3d, 0x5c, - 0xa1, 0xba, 0xf2, 0x6a, 0x57, 0x5a, 0x9b, 0xd4, 0xc6, 0xae, 0xa9, 0x53, 0xcf, 0x44, 0x26, 0x71, - 0xc5, 0x82, 0xa1, 0x48, 0x85, 0x99, 0xc5, 0xd3, 0xff, 0x36, 0x6d, 0x48, 0xf9, 0x73, 0x6e, 0xf1, - 0x20, 0x8a, 0xb2, 0x2b, 0x72, 0xca, 0x14, 0xfa, 0xc9, 0xea, 0x76, 0x68, 0xf6, 0x3d, 0x56, 0x9f, - 0x0a, 0xf5, 0xa9, 0x54, 0x9f, 0x9e, 0x44, 0x51, 0xce, 0x26, 0x45, 0xb6, 0x07, 0x7f, 0x02, 0x00, - 0x00, 0xff, 0xff, 0xf8, 0xf2, 0xe5, 0x19, 0xa3, 0x09, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1beta/oslogin.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1beta/oslogin.pb.go deleted file mode 100644 index 9171c69e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/oslogin/v1beta/oslogin.pb.go +++ /dev/null @@ -1,584 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/oslogin/v1beta/oslogin.proto - -/* -Package oslogin is a generated protocol buffer package. - -It is generated from these files: - google/cloud/oslogin/v1beta/oslogin.proto - -It has these top-level messages: - LoginProfile - DeletePosixAccountRequest - DeleteSshPublicKeyRequest - GetLoginProfileRequest - GetSshPublicKeyRequest - ImportSshPublicKeyRequest - ImportSshPublicKeyResponse - UpdateSshPublicKeyRequest -*/ -package oslogin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_cloud_oslogin_common "google.golang.org/genproto/googleapis/cloud/oslogin/common" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The user profile information used for logging in to a virtual machine on -// Google Compute Engine. -type LoginProfile struct { - // The primary email address that uniquely identifies the user. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The list of POSIX accounts associated with the user. - PosixAccounts []*google_cloud_oslogin_common.PosixAccount `protobuf:"bytes,2,rep,name=posix_accounts,json=posixAccounts" json:"posix_accounts,omitempty"` - // A map from SSH public key fingerprint to the associated key object. - SshPublicKeys map[string]*google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,3,rep,name=ssh_public_keys,json=sshPublicKeys" json:"ssh_public_keys,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Indicates if the user is suspended. A suspended user cannot log in but - // their profile information is retained. - Suspended bool `protobuf:"varint,4,opt,name=suspended" json:"suspended,omitempty"` -} - -func (m *LoginProfile) Reset() { *m = LoginProfile{} } -func (m *LoginProfile) String() string { return proto.CompactTextString(m) } -func (*LoginProfile) ProtoMessage() {} -func (*LoginProfile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *LoginProfile) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LoginProfile) GetPosixAccounts() []*google_cloud_oslogin_common.PosixAccount { - if m != nil { - return m.PosixAccounts - } - return nil -} - -func (m *LoginProfile) GetSshPublicKeys() map[string]*google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKeys - } - return nil -} - -func (m *LoginProfile) GetSuspended() bool { - if m != nil { - return m.Suspended - } - return false -} - -// A request message for deleting a POSIX account entry. -type DeletePosixAccountRequest struct { - // A reference to the POSIX account to update. POSIX accounts are identified - // by the project ID they are associated with. A reference to the POSIX - // account is in format `users/{user}/projects/{project}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeletePosixAccountRequest) Reset() { *m = DeletePosixAccountRequest{} } -func (m *DeletePosixAccountRequest) String() string { return proto.CompactTextString(m) } -func (*DeletePosixAccountRequest) ProtoMessage() {} -func (*DeletePosixAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *DeletePosixAccountRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for deleting an SSH public key. -type DeleteSshPublicKeyRequest struct { - // The fingerprint of the public key to update. Public keys are identified by - // their SHA-256 fingerprint. The fingerprint of the public key is in format - // `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteSshPublicKeyRequest) Reset() { *m = DeleteSshPublicKeyRequest{} } -func (m *DeleteSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSshPublicKeyRequest) ProtoMessage() {} -func (*DeleteSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *DeleteSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for retrieving the login profile information for a user. -type GetLoginProfileRequest struct { - // The unique ID for the user in format `users/{user}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetLoginProfileRequest) Reset() { *m = GetLoginProfileRequest{} } -func (m *GetLoginProfileRequest) String() string { return proto.CompactTextString(m) } -func (*GetLoginProfileRequest) ProtoMessage() {} -func (*GetLoginProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *GetLoginProfileRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for retrieving an SSH public key. -type GetSshPublicKeyRequest struct { - // The fingerprint of the public key to retrieve. Public keys are identified - // by their SHA-256 fingerprint. The fingerprint of the public key is in - // format `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetSshPublicKeyRequest) Reset() { *m = GetSshPublicKeyRequest{} } -func (m *GetSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*GetSshPublicKeyRequest) ProtoMessage() {} -func (*GetSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *GetSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A request message for importing an SSH public key. -type ImportSshPublicKeyRequest struct { - // The unique ID for the user in format `users/{user}`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The SSH public key and expiration time. - SshPublicKey *google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,2,opt,name=ssh_public_key,json=sshPublicKey" json:"ssh_public_key,omitempty"` - // The project ID of the Google Cloud Platform project. - ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId" json:"project_id,omitempty"` -} - -func (m *ImportSshPublicKeyRequest) Reset() { *m = ImportSshPublicKeyRequest{} } -func (m *ImportSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*ImportSshPublicKeyRequest) ProtoMessage() {} -func (*ImportSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ImportSshPublicKeyRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ImportSshPublicKeyRequest) GetSshPublicKey() *google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKey - } - return nil -} - -func (m *ImportSshPublicKeyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -// A response message for importing an SSH public key. -type ImportSshPublicKeyResponse struct { - // The login profile information for the user. - LoginProfile *LoginProfile `protobuf:"bytes,1,opt,name=login_profile,json=loginProfile" json:"login_profile,omitempty"` -} - -func (m *ImportSshPublicKeyResponse) Reset() { *m = ImportSshPublicKeyResponse{} } -func (m *ImportSshPublicKeyResponse) String() string { return proto.CompactTextString(m) } -func (*ImportSshPublicKeyResponse) ProtoMessage() {} -func (*ImportSshPublicKeyResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ImportSshPublicKeyResponse) GetLoginProfile() *LoginProfile { - if m != nil { - return m.LoginProfile - } - return nil -} - -// A request message for updating an SSH public key. -type UpdateSshPublicKeyRequest struct { - // The fingerprint of the public key to update. Public keys are identified by - // their SHA-256 fingerprint. The fingerprint of the public key is in format - // `users/{user}/sshPublicKeys/{fingerprint}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The SSH public key and expiration time. - SshPublicKey *google_cloud_oslogin_common.SshPublicKey `protobuf:"bytes,2,opt,name=ssh_public_key,json=sshPublicKey" json:"ssh_public_key,omitempty"` - // Mask to control which fields get updated. Updates all if not present. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateSshPublicKeyRequest) Reset() { *m = UpdateSshPublicKeyRequest{} } -func (m *UpdateSshPublicKeyRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateSshPublicKeyRequest) ProtoMessage() {} -func (*UpdateSshPublicKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *UpdateSshPublicKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateSshPublicKeyRequest) GetSshPublicKey() *google_cloud_oslogin_common.SshPublicKey { - if m != nil { - return m.SshPublicKey - } - return nil -} - -func (m *UpdateSshPublicKeyRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func init() { - proto.RegisterType((*LoginProfile)(nil), "google.cloud.oslogin.v1beta.LoginProfile") - proto.RegisterType((*DeletePosixAccountRequest)(nil), "google.cloud.oslogin.v1beta.DeletePosixAccountRequest") - proto.RegisterType((*DeleteSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1beta.DeleteSshPublicKeyRequest") - proto.RegisterType((*GetLoginProfileRequest)(nil), "google.cloud.oslogin.v1beta.GetLoginProfileRequest") - proto.RegisterType((*GetSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1beta.GetSshPublicKeyRequest") - proto.RegisterType((*ImportSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1beta.ImportSshPublicKeyRequest") - proto.RegisterType((*ImportSshPublicKeyResponse)(nil), "google.cloud.oslogin.v1beta.ImportSshPublicKeyResponse") - proto.RegisterType((*UpdateSshPublicKeyRequest)(nil), "google.cloud.oslogin.v1beta.UpdateSshPublicKeyRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for OsLoginService service - -type OsLoginServiceClient interface { - // Deletes a POSIX account. - DeletePosixAccount(ctx context.Context, in *DeletePosixAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Deletes an SSH public key. - DeleteSshPublicKey(ctx context.Context, in *DeleteSshPublicKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Retrieves the profile information used for logging in to a virtual machine - // on Google Compute Engine. - GetLoginProfile(ctx context.Context, in *GetLoginProfileRequest, opts ...grpc.CallOption) (*LoginProfile, error) - // Retrieves an SSH public key. - GetSshPublicKey(ctx context.Context, in *GetSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) - // Adds an SSH public key and returns the profile information. Default POSIX - // account information is set when no username and UID exist as part of the - // login profile. - ImportSshPublicKey(ctx context.Context, in *ImportSshPublicKeyRequest, opts ...grpc.CallOption) (*ImportSshPublicKeyResponse, error) - // Updates an SSH public key and returns the profile information. This method - // supports patch semantics. - UpdateSshPublicKey(ctx context.Context, in *UpdateSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) -} - -type osLoginServiceClient struct { - cc *grpc.ClientConn -} - -func NewOsLoginServiceClient(cc *grpc.ClientConn) OsLoginServiceClient { - return &osLoginServiceClient{cc} -} - -func (c *osLoginServiceClient) DeletePosixAccount(ctx context.Context, in *DeletePosixAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1beta.OsLoginService/DeletePosixAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) DeleteSshPublicKey(ctx context.Context, in *DeleteSshPublicKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1beta.OsLoginService/DeleteSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) GetLoginProfile(ctx context.Context, in *GetLoginProfileRequest, opts ...grpc.CallOption) (*LoginProfile, error) { - out := new(LoginProfile) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1beta.OsLoginService/GetLoginProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) GetSshPublicKey(ctx context.Context, in *GetSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) { - out := new(google_cloud_oslogin_common.SshPublicKey) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1beta.OsLoginService/GetSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) ImportSshPublicKey(ctx context.Context, in *ImportSshPublicKeyRequest, opts ...grpc.CallOption) (*ImportSshPublicKeyResponse, error) { - out := new(ImportSshPublicKeyResponse) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1beta.OsLoginService/ImportSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *osLoginServiceClient) UpdateSshPublicKey(ctx context.Context, in *UpdateSshPublicKeyRequest, opts ...grpc.CallOption) (*google_cloud_oslogin_common.SshPublicKey, error) { - out := new(google_cloud_oslogin_common.SshPublicKey) - err := grpc.Invoke(ctx, "/google.cloud.oslogin.v1beta.OsLoginService/UpdateSshPublicKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for OsLoginService service - -type OsLoginServiceServer interface { - // Deletes a POSIX account. - DeletePosixAccount(context.Context, *DeletePosixAccountRequest) (*google_protobuf1.Empty, error) - // Deletes an SSH public key. - DeleteSshPublicKey(context.Context, *DeleteSshPublicKeyRequest) (*google_protobuf1.Empty, error) - // Retrieves the profile information used for logging in to a virtual machine - // on Google Compute Engine. - GetLoginProfile(context.Context, *GetLoginProfileRequest) (*LoginProfile, error) - // Retrieves an SSH public key. - GetSshPublicKey(context.Context, *GetSshPublicKeyRequest) (*google_cloud_oslogin_common.SshPublicKey, error) - // Adds an SSH public key and returns the profile information. Default POSIX - // account information is set when no username and UID exist as part of the - // login profile. - ImportSshPublicKey(context.Context, *ImportSshPublicKeyRequest) (*ImportSshPublicKeyResponse, error) - // Updates an SSH public key and returns the profile information. This method - // supports patch semantics. - UpdateSshPublicKey(context.Context, *UpdateSshPublicKeyRequest) (*google_cloud_oslogin_common.SshPublicKey, error) -} - -func RegisterOsLoginServiceServer(s *grpc.Server, srv OsLoginServiceServer) { - s.RegisterService(&_OsLoginService_serviceDesc, srv) -} - -func _OsLoginService_DeletePosixAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeletePosixAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).DeletePosixAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1beta.OsLoginService/DeletePosixAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).DeletePosixAccount(ctx, req.(*DeletePosixAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_DeleteSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).DeleteSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1beta.OsLoginService/DeleteSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).DeleteSshPublicKey(ctx, req.(*DeleteSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_GetLoginProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetLoginProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).GetLoginProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1beta.OsLoginService/GetLoginProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).GetLoginProfile(ctx, req.(*GetLoginProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_GetSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).GetSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1beta.OsLoginService/GetSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).GetSshPublicKey(ctx, req.(*GetSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_ImportSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ImportSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).ImportSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1beta.OsLoginService/ImportSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).ImportSshPublicKey(ctx, req.(*ImportSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _OsLoginService_UpdateSshPublicKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSshPublicKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OsLoginServiceServer).UpdateSshPublicKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.oslogin.v1beta.OsLoginService/UpdateSshPublicKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OsLoginServiceServer).UpdateSshPublicKey(ctx, req.(*UpdateSshPublicKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _OsLoginService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.oslogin.v1beta.OsLoginService", - HandlerType: (*OsLoginServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DeletePosixAccount", - Handler: _OsLoginService_DeletePosixAccount_Handler, - }, - { - MethodName: "DeleteSshPublicKey", - Handler: _OsLoginService_DeleteSshPublicKey_Handler, - }, - { - MethodName: "GetLoginProfile", - Handler: _OsLoginService_GetLoginProfile_Handler, - }, - { - MethodName: "GetSshPublicKey", - Handler: _OsLoginService_GetSshPublicKey_Handler, - }, - { - MethodName: "ImportSshPublicKey", - Handler: _OsLoginService_ImportSshPublicKey_Handler, - }, - { - MethodName: "UpdateSshPublicKey", - Handler: _OsLoginService_UpdateSshPublicKey_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/oslogin/v1beta/oslogin.proto", -} - -func init() { proto.RegisterFile("google/cloud/oslogin/v1beta/oslogin.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 780 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x4f, 0x13, 0x4f, - 0x18, 0xc7, 0xb3, 0x2d, 0x3f, 0x02, 0x43, 0x81, 0x5f, 0xe6, 0x40, 0xca, 0x82, 0xb1, 0x2e, 0xd1, - 0x94, 0x62, 0x76, 0x43, 0x49, 0x94, 0x80, 0x68, 0x2c, 0x22, 0x21, 0xfe, 0xa1, 0x29, 0x91, 0x83, - 0x21, 0x69, 0xa6, 0xbb, 0xc3, 0xb2, 0x76, 0x77, 0x67, 0xdc, 0xd9, 0x25, 0x36, 0x86, 0x8b, 0x89, - 0x67, 0x0f, 0x7a, 0x36, 0x31, 0xde, 0xbc, 0x79, 0xf2, 0xe4, 0x1b, 0xe0, 0xea, 0x5b, 0xd0, 0xf7, - 0x61, 0x76, 0x76, 0x16, 0xb6, 0xed, 0xb6, 0x5d, 0x12, 0x4f, 0xdd, 0x99, 0xe7, 0xdf, 0x67, 0xbe, - 0x33, 0xcf, 0x93, 0x82, 0x65, 0x93, 0x10, 0xd3, 0xc6, 0x9a, 0x6e, 0x93, 0xc0, 0xd0, 0x08, 0xb3, - 0x89, 0x69, 0xb9, 0xda, 0xe9, 0x6a, 0x0b, 0xfb, 0x28, 0x5e, 0xaa, 0xd4, 0x23, 0x3e, 0x81, 0x0b, - 0x91, 0xab, 0xca, 0x5d, 0xd5, 0xd8, 0x16, 0xb9, 0xca, 0x8b, 0x22, 0x0f, 0xa2, 0x96, 0x86, 0x5c, - 0x97, 0xf8, 0xc8, 0xb7, 0x88, 0xcb, 0xa2, 0x50, 0xb9, 0x9c, 0x5a, 0x45, 0x27, 0x8e, 0x43, 0xe2, - 0x1f, 0xe1, 0x29, 0x8a, 0x68, 0x7c, 0xd5, 0x0a, 0x8e, 0x35, 0xec, 0x50, 0xbf, 0x23, 0x8c, 0xa5, - 0x5e, 0xe3, 0xb1, 0x85, 0x6d, 0xa3, 0xe9, 0x20, 0xd6, 0x8e, 0x3c, 0x94, 0x3f, 0x39, 0x50, 0x78, - 0x1a, 0x26, 0xaf, 0x7b, 0xe4, 0xd8, 0xb2, 0x31, 0x84, 0x60, 0xcc, 0x45, 0x0e, 0x2e, 0x4a, 0x25, - 0xa9, 0x3c, 0xd9, 0xe0, 0xdf, 0xb0, 0x0e, 0x66, 0x28, 0x61, 0xd6, 0x9b, 0x26, 0xd2, 0x75, 0x12, - 0xb8, 0x3e, 0x2b, 0xe6, 0x4a, 0xf9, 0xf2, 0x54, 0x75, 0x59, 0x4d, 0x3d, 0xa1, 0xe0, 0xab, 0x87, - 0x21, 0x0f, 0xa3, 0x88, 0xc6, 0x34, 0x4d, 0xac, 0x18, 0x34, 0xc0, 0x2c, 0x63, 0x27, 0x4d, 0x1a, - 0xb4, 0x6c, 0x4b, 0x6f, 0xb6, 0x71, 0x87, 0x15, 0xf3, 0x3c, 0xe5, 0x3d, 0x75, 0x88, 0x68, 0x6a, - 0x92, 0x54, 0x3d, 0x60, 0x27, 0x75, 0x1e, 0xff, 0x04, 0x77, 0xd8, 0x8e, 0xeb, 0x7b, 0x9d, 0xc6, - 0x34, 0x4b, 0xee, 0xc1, 0x45, 0x30, 0xc9, 0x02, 0x46, 0xb1, 0x6b, 0x60, 0xa3, 0x38, 0x56, 0x92, - 0xca, 0x13, 0x8d, 0xcb, 0x0d, 0xb9, 0x0d, 0x60, 0x7f, 0x0a, 0xf8, 0x3f, 0xc8, 0xb7, 0x71, 0x47, - 0x1c, 0x3f, 0xfc, 0x84, 0x0f, 0xc0, 0x7f, 0xa7, 0xc8, 0x0e, 0x70, 0x31, 0x57, 0x92, 0x46, 0x1e, - 0x3a, 0x99, 0xb1, 0x11, 0xc5, 0x6d, 0xe4, 0xd6, 0x25, 0x45, 0x03, 0xf3, 0x8f, 0xb0, 0x8d, 0x7d, - 0xdc, 0xa5, 0x0a, 0x7e, 0x1d, 0x60, 0xe6, 0xa7, 0x69, 0x7e, 0x19, 0xd0, 0x95, 0x71, 0x48, 0xc0, - 0x6d, 0x30, 0xb7, 0x8b, 0xfd, 0xa4, 0x42, 0xa3, 0xbd, 0xb3, 0xe6, 0xfe, 0x2a, 0x81, 0xf9, 0x3d, - 0x87, 0x12, 0x2f, 0x35, 0x62, 0x0e, 0x8c, 0x53, 0xe4, 0x61, 0xd7, 0x17, 0x31, 0x62, 0x05, 0xf7, - 0xc1, 0x4c, 0xf7, 0x25, 0x5f, 0x5d, 0xc1, 0x42, 0xf2, 0x42, 0xe1, 0x35, 0x00, 0xa8, 0x47, 0x5e, - 0x61, 0xdd, 0x6f, 0x5a, 0x46, 0x31, 0xcf, 0x8b, 0x4d, 0x8a, 0x9d, 0x3d, 0x43, 0xb1, 0x81, 0x9c, - 0x06, 0xc9, 0x28, 0x71, 0x19, 0x86, 0xcf, 0xc1, 0x34, 0xaf, 0xd3, 0xa4, 0x91, 0x3a, 0x1c, 0x76, - 0x20, 0x4c, 0xca, 0x83, 0x6b, 0x14, 0xec, 0xc4, 0x4a, 0xf9, 0x29, 0x81, 0xf9, 0x17, 0xd4, 0x40, - 0x99, 0x6f, 0xe8, 0xdf, 0xeb, 0xb1, 0x09, 0xa6, 0x02, 0x4e, 0xc0, 0x3b, 0x9a, 0x0b, 0x32, 0x55, - 0x95, 0xe3, 0x6c, 0x71, 0xd3, 0xab, 0x8f, 0xc3, 0xa6, 0x7f, 0x86, 0x58, 0xbb, 0x01, 0x22, 0xf7, - 0xf0, 0xbb, 0xfa, 0x7e, 0x02, 0xcc, 0xec, 0x33, 0x7e, 0xc0, 0x03, 0xec, 0x9d, 0x5a, 0x3a, 0x86, - 0x1f, 0x24, 0x00, 0xfb, 0x5f, 0x29, 0xbc, 0x33, 0x54, 0xa2, 0x81, 0xcf, 0x5a, 0x9e, 0xeb, 0x23, - 0xd9, 0x09, 0x67, 0x93, 0xb2, 0xfc, 0xee, 0xd7, 0xef, 0x8f, 0xb9, 0xa5, 0xca, 0x8d, 0x78, 0x6c, - 0xbe, 0x0d, 0xe5, 0xd9, 0x0a, 0x18, 0xf6, 0x98, 0x56, 0xd1, 0xc4, 0x85, 0x32, 0xad, 0x72, 0x06, - 0x3f, 0x5d, 0x10, 0x25, 0x65, 0xc8, 0x44, 0x94, 0x72, 0x2b, 0x03, 0x89, 0x54, 0x4e, 0x54, 0xae, - 0xdc, 0x4a, 0x27, 0xea, 0x9a, 0x2a, 0x21, 0xd6, 0x67, 0x09, 0xcc, 0xf6, 0x34, 0x1b, 0x5c, 0x1b, - 0xca, 0x94, 0xde, 0x9a, 0x72, 0xf6, 0xd7, 0xa7, 0xac, 0x70, 0xc6, 0x9b, 0x70, 0x29, 0x95, 0xf1, - 0x4c, 0x4b, 0x3e, 0x4e, 0xf8, 0x25, 0x02, 0xec, 0x12, 0x6d, 0x24, 0x60, 0x9a, 0x62, 0xd9, 0xdf, - 0x66, 0x2c, 0x22, 0xcc, 0x2a, 0xe2, 0xb9, 0x04, 0x60, 0x7f, 0xbf, 0x8e, 0xb8, 0xdb, 0x81, 0x53, - 0x48, 0xbe, 0x7b, 0xe5, 0xb8, 0x68, 0x30, 0x28, 0xdb, 0x9c, 0x7b, 0x4b, 0x59, 0xb9, 0xe0, 0x8e, - 0xe6, 0xd7, 0x85, 0xb4, 0x1b, 0x56, 0x5f, 0xf0, 0x46, 0x4f, 0x27, 0xc3, 0x1f, 0x12, 0x80, 0xfd, - 0xd3, 0x60, 0xc4, 0x61, 0x06, 0x8e, 0x8f, 0xab, 0xc8, 0x7e, 0x9f, 0xe3, 0xaf, 0x57, 0x33, 0xca, - 0xde, 0x4b, 0x5e, 0xfb, 0x2e, 0x81, 0xeb, 0x3a, 0x71, 0x86, 0x81, 0xd6, 0x0a, 0x62, 0x50, 0xd4, - 0xc3, 0xb6, 0xa9, 0x4b, 0x2f, 0x6b, 0xc2, 0xd9, 0x24, 0x36, 0x72, 0x4d, 0x95, 0x78, 0xa6, 0x66, - 0x62, 0x97, 0x37, 0x95, 0x16, 0x99, 0x10, 0xb5, 0x58, 0xea, 0x7f, 0xa4, 0x4d, 0xb1, 0xfc, 0x96, - 0x5b, 0xd8, 0x8d, 0x92, 0x6c, 0xf3, 0x8a, 0xa2, 0x82, 0x7a, 0xb8, 0x5a, 0xc3, 0x3e, 0x3a, 0x8f, - 0xad, 0x47, 0xdc, 0x7a, 0x24, 0xac, 0x47, 0x87, 0x3c, 0x47, 0x6b, 0x9c, 0x97, 0x5a, 0xfb, 0x1b, - 0x00, 0x00, 0xff, 0xff, 0xc7, 0x96, 0xd9, 0xc2, 0x8d, 0x09, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/resourcemanager/v2/folders.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/resourcemanager/v2/folders.pb.go deleted file mode 100644 index 6f360bba..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/resourcemanager/v2/folders.pb.go +++ /dev/null @@ -1,1263 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/resourcemanager/v2/folders.proto - -/* -Package resourcemanager is a generated protocol buffer package. - -It is generated from these files: - google/cloud/resourcemanager/v2/folders.proto - -It has these top-level messages: - Folder - ListFoldersRequest - ListFoldersResponse - SearchFoldersRequest - SearchFoldersResponse - GetFolderRequest - CreateFolderRequest - MoveFolderRequest - UpdateFolderRequest - DeleteFolderRequest - UndeleteFolderRequest - FolderOperation -*/ -package resourcemanager - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Folder lifecycle states. -type Folder_LifecycleState int32 - -const ( - // Unspecified state. - Folder_LIFECYCLE_STATE_UNSPECIFIED Folder_LifecycleState = 0 - // The normal and active state. - Folder_ACTIVE Folder_LifecycleState = 1 - // The folder has been marked for deletion by the user. - Folder_DELETE_REQUESTED Folder_LifecycleState = 2 -) - -var Folder_LifecycleState_name = map[int32]string{ - 0: "LIFECYCLE_STATE_UNSPECIFIED", - 1: "ACTIVE", - 2: "DELETE_REQUESTED", -} -var Folder_LifecycleState_value = map[string]int32{ - "LIFECYCLE_STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "DELETE_REQUESTED": 2, -} - -func (x Folder_LifecycleState) String() string { - return proto.EnumName(Folder_LifecycleState_name, int32(x)) -} -func (Folder_LifecycleState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// The type of operation that failed. -type FolderOperation_OperationType int32 - -const ( - // Operation type not specified. - FolderOperation_OPERATION_TYPE_UNSPECIFIED FolderOperation_OperationType = 0 - // A create folder operation. - FolderOperation_CREATE FolderOperation_OperationType = 1 - // A move folder operation. - FolderOperation_MOVE FolderOperation_OperationType = 2 -) - -var FolderOperation_OperationType_name = map[int32]string{ - 0: "OPERATION_TYPE_UNSPECIFIED", - 1: "CREATE", - 2: "MOVE", -} -var FolderOperation_OperationType_value = map[string]int32{ - "OPERATION_TYPE_UNSPECIFIED": 0, - "CREATE": 1, - "MOVE": 2, -} - -func (x FolderOperation_OperationType) String() string { - return proto.EnumName(FolderOperation_OperationType_name, int32(x)) -} -func (FolderOperation_OperationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{11, 0} -} - -// A Folder in an Organization's resource hierarchy, used to -// organize that Organization's resources. -type Folder struct { - // Output only. The resource name of the Folder. - // Its format is `folders/{folder_id}`, for example: "folders/1234". - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The Folder’s parent's resource name. - // Updates to the folder's parent must be performed via [MoveFolders]. - Parent string `protobuf:"bytes,2,opt,name=parent" json:"parent,omitempty"` - // The folder’s display name. - // A folder’s display name must be unique amongst its siblings, e.g. - // no two folders with the same parent can share the same display name. - // The display name must start and end with a letter or digit, may contain - // letters, digits, spaces, hyphens and underscores and can be no longer - // than 30 characters. This is captured by the regular expression: - // [\p{L}\p{N}]({\p{L}\p{N}_- ]{0,28}[\p{L}\p{N}])?. - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Output only. The lifecycle state of the folder. - // Updates to the lifecycle_state must be performed via - // [DeleteFolder] and [UndeleteFolder]. - LifecycleState Folder_LifecycleState `protobuf:"varint,4,opt,name=lifecycle_state,json=lifecycleState,enum=google.cloud.resourcemanager.v2.Folder_LifecycleState" json:"lifecycle_state,omitempty"` - // Output only. Timestamp when the Folder was created. Assigned by the server. - CreateTime *google_protobuf4.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. Timestamp when the Folder was last modified. - UpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *Folder) Reset() { *m = Folder{} } -func (m *Folder) String() string { return proto.CompactTextString(m) } -func (*Folder) ProtoMessage() {} -func (*Folder) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Folder) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Folder) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *Folder) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Folder) GetLifecycleState() Folder_LifecycleState { - if m != nil { - return m.LifecycleState - } - return Folder_LIFECYCLE_STATE_UNSPECIFIED -} - -func (m *Folder) GetCreateTime() *google_protobuf4.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Folder) GetUpdateTime() *google_protobuf4.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// The ListFolders request message. -type ListFoldersRequest struct { - // The resource name of the Organization or Folder whose Folders are - // being listed. - // Must be of the form `folders/{folder_id}` or `organizations/{org_id}`. - // Access to this method is controlled by checking the - // `resourcemanager.folders.list` permission on the `parent`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The maximum number of Folders to return in the response. - // This field is optional. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A pagination token returned from a previous call to `ListFolders` - // that indicates where this listing should continue from. - // This field is optional. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Controls whether Folders in the [DELETE_REQUESTED} state should - // be returned. - ShowDeleted bool `protobuf:"varint,4,opt,name=show_deleted,json=showDeleted" json:"show_deleted,omitempty"` -} - -func (m *ListFoldersRequest) Reset() { *m = ListFoldersRequest{} } -func (m *ListFoldersRequest) String() string { return proto.CompactTextString(m) } -func (*ListFoldersRequest) ProtoMessage() {} -func (*ListFoldersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ListFoldersRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListFoldersRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListFoldersRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListFoldersRequest) GetShowDeleted() bool { - if m != nil { - return m.ShowDeleted - } - return false -} - -// The ListFolders response message. -type ListFoldersResponse struct { - // A possibly paginated list of Folders that are direct descendants of - // the specified parent resource. - Folders []*Folder `protobuf:"bytes,1,rep,name=folders" json:"folders,omitempty"` - // A pagination token returned from a previous call to `ListFolders` - // that indicates from where listing should continue. - // This field is optional. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListFoldersResponse) Reset() { *m = ListFoldersResponse{} } -func (m *ListFoldersResponse) String() string { return proto.CompactTextString(m) } -func (*ListFoldersResponse) ProtoMessage() {} -func (*ListFoldersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ListFoldersResponse) GetFolders() []*Folder { - if m != nil { - return m.Folders - } - return nil -} - -func (m *ListFoldersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for searching folders. -type SearchFoldersRequest struct { - // The maximum number of folders to return in the response. - // This field is optional. - PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A pagination token returned from a previous call to `SearchFolders` - // that indicates from where search should continue. - // This field is optional. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Search criteria used to select the Folders to return. - // If no search criteria is specified then all accessible folders will be - // returned. - // - // Query expressions can be used to restrict results based upon displayName, - // lifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR` - // can be used along with the suffix wildcard symbol `*`. - // - // Some example queries are: - // |Query|Description| - // |------|-----------| - // |displayName=Test*|Folders whose display name starts with "Test".| - // |lifecycleState=ACTIVE|Folders whose lifecycleState is ACTIVE.| - // |parent=folders/123|Folders whose parent is "folders/123".| - // |parent=folders/123 AND lifecycleState=ACTIVE|Active folders whose - // parent is "folders/123".| - Query string `protobuf:"bytes,3,opt,name=query" json:"query,omitempty"` -} - -func (m *SearchFoldersRequest) Reset() { *m = SearchFoldersRequest{} } -func (m *SearchFoldersRequest) String() string { return proto.CompactTextString(m) } -func (*SearchFoldersRequest) ProtoMessage() {} -func (*SearchFoldersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SearchFoldersRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *SearchFoldersRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchFoldersRequest) GetQuery() string { - if m != nil { - return m.Query - } - return "" -} - -// The response message for searching folders. -type SearchFoldersResponse struct { - // A possibly paginated folder search results. - // the specified parent resource. - Folders []*Folder `protobuf:"bytes,1,rep,name=folders" json:"folders,omitempty"` - // A pagination token returned from a previous call to `SearchFolders` - // that indicates from where searching should continue. - // This field is optional. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchFoldersResponse) Reset() { *m = SearchFoldersResponse{} } -func (m *SearchFoldersResponse) String() string { return proto.CompactTextString(m) } -func (*SearchFoldersResponse) ProtoMessage() {} -func (*SearchFoldersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *SearchFoldersResponse) GetFolders() []*Folder { - if m != nil { - return m.Folders - } - return nil -} - -func (m *SearchFoldersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The GetFolder request message. -type GetFolderRequest struct { - // The resource name of the Folder to retrieve. - // Must be of the form `folders/{folder_id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetFolderRequest) Reset() { *m = GetFolderRequest{} } -func (m *GetFolderRequest) String() string { return proto.CompactTextString(m) } -func (*GetFolderRequest) ProtoMessage() {} -func (*GetFolderRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *GetFolderRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The CreateFolder request message. -type CreateFolderRequest struct { - // The resource name of the new Folder's parent. - // Must be of the form `folders/{folder_id}` or `organizations/{org_id}`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The Folder being created, only the display name will be consulted. - // All other fields will be ignored. - Folder *Folder `protobuf:"bytes,2,opt,name=folder" json:"folder,omitempty"` -} - -func (m *CreateFolderRequest) Reset() { *m = CreateFolderRequest{} } -func (m *CreateFolderRequest) String() string { return proto.CompactTextString(m) } -func (*CreateFolderRequest) ProtoMessage() {} -func (*CreateFolderRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *CreateFolderRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateFolderRequest) GetFolder() *Folder { - if m != nil { - return m.Folder - } - return nil -} - -// The MoveFolder request message. -type MoveFolderRequest struct { - // The resource name of the Folder to move. - // Must be of the form folders/{folder_id} - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The resource name of the Folder or Organization to reparent - // the folder under. - // Must be of the form `folders/{folder_id}` or `organizations/{org_id}`. - DestinationParent string `protobuf:"bytes,2,opt,name=destination_parent,json=destinationParent" json:"destination_parent,omitempty"` -} - -func (m *MoveFolderRequest) Reset() { *m = MoveFolderRequest{} } -func (m *MoveFolderRequest) String() string { return proto.CompactTextString(m) } -func (*MoveFolderRequest) ProtoMessage() {} -func (*MoveFolderRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *MoveFolderRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *MoveFolderRequest) GetDestinationParent() string { - if m != nil { - return m.DestinationParent - } - return "" -} - -// The request message for updating a folder's display name. -type UpdateFolderRequest struct { - // The new definition of the Folder. It must include a - // a `name` and `display_name` field. The other fields - // will be ignored. - Folder *Folder `protobuf:"bytes,1,opt,name=folder" json:"folder,omitempty"` - // Fields to be updated. - // Only the `display_name` can be updated. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateFolderRequest) Reset() { *m = UpdateFolderRequest{} } -func (m *UpdateFolderRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateFolderRequest) ProtoMessage() {} -func (*UpdateFolderRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *UpdateFolderRequest) GetFolder() *Folder { - if m != nil { - return m.Folder - } - return nil -} - -func (m *UpdateFolderRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The DeleteFolder request message. -type DeleteFolderRequest struct { - // the resource name of the Folder to be deleted. - // Must be of the form `folders/{folder_id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Instructs DeleteFolderAction to delete a folder even when the folder is not - // empty. - RecursiveDelete bool `protobuf:"varint,2,opt,name=recursive_delete,json=recursiveDelete" json:"recursive_delete,omitempty"` -} - -func (m *DeleteFolderRequest) Reset() { *m = DeleteFolderRequest{} } -func (m *DeleteFolderRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteFolderRequest) ProtoMessage() {} -func (*DeleteFolderRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *DeleteFolderRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DeleteFolderRequest) GetRecursiveDelete() bool { - if m != nil { - return m.RecursiveDelete - } - return false -} - -// The UndeleteFolder request message. -type UndeleteFolderRequest struct { - // The resource name of the Folder to undelete. - // Must be of the form `folders/{folder_id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *UndeleteFolderRequest) Reset() { *m = UndeleteFolderRequest{} } -func (m *UndeleteFolderRequest) String() string { return proto.CompactTextString(m) } -func (*UndeleteFolderRequest) ProtoMessage() {} -func (*UndeleteFolderRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *UndeleteFolderRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Metadata describing a long running folder operation -type FolderOperation struct { - // The display name of the folder. - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // The type of this operation. - OperationType FolderOperation_OperationType `protobuf:"varint,2,opt,name=operation_type,json=operationType,enum=google.cloud.resourcemanager.v2.FolderOperation_OperationType" json:"operation_type,omitempty"` - // The resource name of the folder's parent. - // Only applicable when the operation_type is MOVE. - SourceParent string `protobuf:"bytes,3,opt,name=source_parent,json=sourceParent" json:"source_parent,omitempty"` - // The resource name of the folder or organization we are either creating - // the folder under or moving the folder to. - DestinationParent string `protobuf:"bytes,4,opt,name=destination_parent,json=destinationParent" json:"destination_parent,omitempty"` -} - -func (m *FolderOperation) Reset() { *m = FolderOperation{} } -func (m *FolderOperation) String() string { return proto.CompactTextString(m) } -func (*FolderOperation) ProtoMessage() {} -func (*FolderOperation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *FolderOperation) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *FolderOperation) GetOperationType() FolderOperation_OperationType { - if m != nil { - return m.OperationType - } - return FolderOperation_OPERATION_TYPE_UNSPECIFIED -} - -func (m *FolderOperation) GetSourceParent() string { - if m != nil { - return m.SourceParent - } - return "" -} - -func (m *FolderOperation) GetDestinationParent() string { - if m != nil { - return m.DestinationParent - } - return "" -} - -func init() { - proto.RegisterType((*Folder)(nil), "google.cloud.resourcemanager.v2.Folder") - proto.RegisterType((*ListFoldersRequest)(nil), "google.cloud.resourcemanager.v2.ListFoldersRequest") - proto.RegisterType((*ListFoldersResponse)(nil), "google.cloud.resourcemanager.v2.ListFoldersResponse") - proto.RegisterType((*SearchFoldersRequest)(nil), "google.cloud.resourcemanager.v2.SearchFoldersRequest") - proto.RegisterType((*SearchFoldersResponse)(nil), "google.cloud.resourcemanager.v2.SearchFoldersResponse") - proto.RegisterType((*GetFolderRequest)(nil), "google.cloud.resourcemanager.v2.GetFolderRequest") - proto.RegisterType((*CreateFolderRequest)(nil), "google.cloud.resourcemanager.v2.CreateFolderRequest") - proto.RegisterType((*MoveFolderRequest)(nil), "google.cloud.resourcemanager.v2.MoveFolderRequest") - proto.RegisterType((*UpdateFolderRequest)(nil), "google.cloud.resourcemanager.v2.UpdateFolderRequest") - proto.RegisterType((*DeleteFolderRequest)(nil), "google.cloud.resourcemanager.v2.DeleteFolderRequest") - proto.RegisterType((*UndeleteFolderRequest)(nil), "google.cloud.resourcemanager.v2.UndeleteFolderRequest") - proto.RegisterType((*FolderOperation)(nil), "google.cloud.resourcemanager.v2.FolderOperation") - proto.RegisterEnum("google.cloud.resourcemanager.v2.Folder_LifecycleState", Folder_LifecycleState_name, Folder_LifecycleState_value) - proto.RegisterEnum("google.cloud.resourcemanager.v2.FolderOperation_OperationType", FolderOperation_OperationType_name, FolderOperation_OperationType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Folders service - -type FoldersClient interface { - // Lists the Folders that are direct descendants of supplied parent resource. - // List provides a strongly consistent view of the Folders underneath - // the specified parent resource. - // List returns Folders sorted based upon the (ascending) lexical ordering - // of their display_name. - // The caller must have `resourcemanager.folders.list` permission on the - // identified parent. - ListFolders(ctx context.Context, in *ListFoldersRequest, opts ...grpc.CallOption) (*ListFoldersResponse, error) - // Search for folders that match specific filter criteria. - // Search provides an eventually consistent view of the folders a user has - // access to which meet the specified filter criteria. - // - // This will only return folders on which the caller has the - // permission `resourcemanager.folders.get`. - SearchFolders(ctx context.Context, in *SearchFoldersRequest, opts ...grpc.CallOption) (*SearchFoldersResponse, error) - // Retrieves a Folder identified by the supplied resource name. - // Valid Folder resource names have the format `folders/{folder_id}` - // (for example, `folders/1234`). - // The caller must have `resourcemanager.folders.get` permission on the - // identified folder. - GetFolder(ctx context.Context, in *GetFolderRequest, opts ...grpc.CallOption) (*Folder, error) - // Creates a Folder in the resource hierarchy. - // Returns an Operation which can be used to track the progress of the - // folder creation workflow. - // Upon success the Operation.response field will be populated with the - // created Folder. - // - // In order to succeed, the addition of this new Folder must not violate - // the Folder naming, height or fanout constraints. - // + The Folder's display_name must be distinct from all other Folder's that - // share its parent. - // + The addition of the Folder must not cause the active Folder hierarchy - // to exceed a height of 4. Note, the full active + deleted Folder hierarchy - // is allowed to reach a height of 8; this provides additional headroom when - // moving folders that contain deleted folders. - // + The addition of the Folder must not cause the total number of Folders - // under its parent to exceed 100. - // - // If the operation fails due to a folder constraint violation, - // a PreconditionFailure explaining the violation will be returned. - // If the failure occurs synchronously then the PreconditionFailure - // will be returned via the Status.details field and if it occurs - // asynchronously then the PreconditionFailure will be returned - // via the the Operation.error field. - // - // The caller must have `resourcemanager.folders.create` permission on the - // identified parent. - CreateFolder(ctx context.Context, in *CreateFolderRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Updates a Folder, changing its display_name. - // Changes to the folder display_name will be rejected if they violate either - // the display_name formatting rules or naming constraints described in - // the [CreateFolder] documentation. - // + The Folder's display name must start and end with a letter or digit, - // may contain letters, digits, spaces, hyphens and underscores and can be - // no longer than 30 characters. This is captured by the regular expression: - // [\p{L}\p{N}]({\p{L}\p{N}_- ]{0,28}[\p{L}\p{N}])?. - // The caller must have `resourcemanager.folders.update` permission on the - // identified folder. - // - // If the update fails due to the unique name constraint then a - // PreconditionFailure explaining this violation will be returned - // in the Status.details field. - UpdateFolder(ctx context.Context, in *UpdateFolderRequest, opts ...grpc.CallOption) (*Folder, error) - // Moves a Folder under a new resource parent. - // Returns an Operation which can be used to track the progress of the - // folder move workflow. - // Upon success the Operation.response field will be populated with the - // moved Folder. - // Upon failure, a FolderOperationError categorizing the failure cause will - // be returned - if the failure occurs synchronously then the - // FolderOperationError will be returned via the Status.details field - // and if it occurs asynchronously then the FolderOperation will be returned - // via the the Operation.error field. - // In addition, the Operation.metadata field will be populated with a - // FolderOperation message as an aid to stateless clients. - // Folder moves will be rejected if they violate either the naming, height - // or fanout constraints described in the [CreateFolder] documentation. - // The caller must have `resourcemanager.folders.move` permission on the - // folder's current and proposed new parent. - MoveFolder(ctx context.Context, in *MoveFolderRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Requests deletion of a Folder. The Folder is moved into the - // [DELETE_REQUESTED] state immediately, and is deleted approximately 30 days - // later. This method may only be called on an empty Folder in the [ACTIVE] - // state, where a Folder is empty if it doesn't contain any Folders or - // Projects in the [ACTIVE] state. - // The caller must have `resourcemanager.folders.delete` permission on the - // identified folder. - DeleteFolder(ctx context.Context, in *DeleteFolderRequest, opts ...grpc.CallOption) (*Folder, error) - // Cancels the deletion request for a Folder. This method may only be - // called on a Folder in the [DELETE_REQUESTED] state. - // In order to succeed, the Folder's parent must be in the [ACTIVE] state. - // In addition, reintroducing the folder into the tree must not violate - // folder naming, height and fanout constraints described in the - // [CreateFolder] documentation. - // The caller must have `resourcemanager.folders.undelete` permission on the - // identified folder. - UndeleteFolder(ctx context.Context, in *UndeleteFolderRequest, opts ...grpc.CallOption) (*Folder, error) - // Gets the access control policy for a Folder. The returned policy may be - // empty if no such policy or resource exists. The `resource` field should - // be the Folder's resource name, e.g. "folders/1234". - // The caller must have `resourcemanager.folders.getIamPolicy` permission - // on the identified folder. - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Sets the access control policy on a Folder, replacing any existing policy. - // The `resource` field should be the Folder's resource name, e.g. - // "folders/1234". - // The caller must have `resourcemanager.folders.setIamPolicy` permission - // on the identified folder. - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Returns permissions that a caller has on the specified Folder. - // The `resource` field should be the Folder's resource name, - // e.g. "folders/1234". - // - // There are no permissions required for making this API call. - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -type foldersClient struct { - cc *grpc.ClientConn -} - -func NewFoldersClient(cc *grpc.ClientConn) FoldersClient { - return &foldersClient{cc} -} - -func (c *foldersClient) ListFolders(ctx context.Context, in *ListFoldersRequest, opts ...grpc.CallOption) (*ListFoldersResponse, error) { - out := new(ListFoldersResponse) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/ListFolders", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) SearchFolders(ctx context.Context, in *SearchFoldersRequest, opts ...grpc.CallOption) (*SearchFoldersResponse, error) { - out := new(SearchFoldersResponse) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/SearchFolders", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) GetFolder(ctx context.Context, in *GetFolderRequest, opts ...grpc.CallOption) (*Folder, error) { - out := new(Folder) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/GetFolder", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) CreateFolder(ctx context.Context, in *CreateFolderRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/CreateFolder", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) UpdateFolder(ctx context.Context, in *UpdateFolderRequest, opts ...grpc.CallOption) (*Folder, error) { - out := new(Folder) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/UpdateFolder", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) MoveFolder(ctx context.Context, in *MoveFolderRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/MoveFolder", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) DeleteFolder(ctx context.Context, in *DeleteFolderRequest, opts ...grpc.CallOption) (*Folder, error) { - out := new(Folder) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/DeleteFolder", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) UndeleteFolder(ctx context.Context, in *UndeleteFolderRequest, opts ...grpc.CallOption) (*Folder, error) { - out := new(Folder) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/UndeleteFolder", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *foldersClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.cloud.resourcemanager.v2.Folders/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Folders service - -type FoldersServer interface { - // Lists the Folders that are direct descendants of supplied parent resource. - // List provides a strongly consistent view of the Folders underneath - // the specified parent resource. - // List returns Folders sorted based upon the (ascending) lexical ordering - // of their display_name. - // The caller must have `resourcemanager.folders.list` permission on the - // identified parent. - ListFolders(context.Context, *ListFoldersRequest) (*ListFoldersResponse, error) - // Search for folders that match specific filter criteria. - // Search provides an eventually consistent view of the folders a user has - // access to which meet the specified filter criteria. - // - // This will only return folders on which the caller has the - // permission `resourcemanager.folders.get`. - SearchFolders(context.Context, *SearchFoldersRequest) (*SearchFoldersResponse, error) - // Retrieves a Folder identified by the supplied resource name. - // Valid Folder resource names have the format `folders/{folder_id}` - // (for example, `folders/1234`). - // The caller must have `resourcemanager.folders.get` permission on the - // identified folder. - GetFolder(context.Context, *GetFolderRequest) (*Folder, error) - // Creates a Folder in the resource hierarchy. - // Returns an Operation which can be used to track the progress of the - // folder creation workflow. - // Upon success the Operation.response field will be populated with the - // created Folder. - // - // In order to succeed, the addition of this new Folder must not violate - // the Folder naming, height or fanout constraints. - // + The Folder's display_name must be distinct from all other Folder's that - // share its parent. - // + The addition of the Folder must not cause the active Folder hierarchy - // to exceed a height of 4. Note, the full active + deleted Folder hierarchy - // is allowed to reach a height of 8; this provides additional headroom when - // moving folders that contain deleted folders. - // + The addition of the Folder must not cause the total number of Folders - // under its parent to exceed 100. - // - // If the operation fails due to a folder constraint violation, - // a PreconditionFailure explaining the violation will be returned. - // If the failure occurs synchronously then the PreconditionFailure - // will be returned via the Status.details field and if it occurs - // asynchronously then the PreconditionFailure will be returned - // via the the Operation.error field. - // - // The caller must have `resourcemanager.folders.create` permission on the - // identified parent. - CreateFolder(context.Context, *CreateFolderRequest) (*google_longrunning.Operation, error) - // Updates a Folder, changing its display_name. - // Changes to the folder display_name will be rejected if they violate either - // the display_name formatting rules or naming constraints described in - // the [CreateFolder] documentation. - // + The Folder's display name must start and end with a letter or digit, - // may contain letters, digits, spaces, hyphens and underscores and can be - // no longer than 30 characters. This is captured by the regular expression: - // [\p{L}\p{N}]({\p{L}\p{N}_- ]{0,28}[\p{L}\p{N}])?. - // The caller must have `resourcemanager.folders.update` permission on the - // identified folder. - // - // If the update fails due to the unique name constraint then a - // PreconditionFailure explaining this violation will be returned - // in the Status.details field. - UpdateFolder(context.Context, *UpdateFolderRequest) (*Folder, error) - // Moves a Folder under a new resource parent. - // Returns an Operation which can be used to track the progress of the - // folder move workflow. - // Upon success the Operation.response field will be populated with the - // moved Folder. - // Upon failure, a FolderOperationError categorizing the failure cause will - // be returned - if the failure occurs synchronously then the - // FolderOperationError will be returned via the Status.details field - // and if it occurs asynchronously then the FolderOperation will be returned - // via the the Operation.error field. - // In addition, the Operation.metadata field will be populated with a - // FolderOperation message as an aid to stateless clients. - // Folder moves will be rejected if they violate either the naming, height - // or fanout constraints described in the [CreateFolder] documentation. - // The caller must have `resourcemanager.folders.move` permission on the - // folder's current and proposed new parent. - MoveFolder(context.Context, *MoveFolderRequest) (*google_longrunning.Operation, error) - // Requests deletion of a Folder. The Folder is moved into the - // [DELETE_REQUESTED] state immediately, and is deleted approximately 30 days - // later. This method may only be called on an empty Folder in the [ACTIVE] - // state, where a Folder is empty if it doesn't contain any Folders or - // Projects in the [ACTIVE] state. - // The caller must have `resourcemanager.folders.delete` permission on the - // identified folder. - DeleteFolder(context.Context, *DeleteFolderRequest) (*Folder, error) - // Cancels the deletion request for a Folder. This method may only be - // called on a Folder in the [DELETE_REQUESTED] state. - // In order to succeed, the Folder's parent must be in the [ACTIVE] state. - // In addition, reintroducing the folder into the tree must not violate - // folder naming, height and fanout constraints described in the - // [CreateFolder] documentation. - // The caller must have `resourcemanager.folders.undelete` permission on the - // identified folder. - UndeleteFolder(context.Context, *UndeleteFolderRequest) (*Folder, error) - // Gets the access control policy for a Folder. The returned policy may be - // empty if no such policy or resource exists. The `resource` field should - // be the Folder's resource name, e.g. "folders/1234". - // The caller must have `resourcemanager.folders.getIamPolicy` permission - // on the identified folder. - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Sets the access control policy on a Folder, replacing any existing policy. - // The `resource` field should be the Folder's resource name, e.g. - // "folders/1234". - // The caller must have `resourcemanager.folders.setIamPolicy` permission - // on the identified folder. - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Returns permissions that a caller has on the specified Folder. - // The `resource` field should be the Folder's resource name, - // e.g. "folders/1234". - // - // There are no permissions required for making this API call. - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -func RegisterFoldersServer(s *grpc.Server, srv FoldersServer) { - s.RegisterService(&_Folders_serviceDesc, srv) -} - -func _Folders_ListFolders_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListFoldersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).ListFolders(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/ListFolders", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).ListFolders(ctx, req.(*ListFoldersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_SearchFolders_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchFoldersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).SearchFolders(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/SearchFolders", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).SearchFolders(ctx, req.(*SearchFoldersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_GetFolder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetFolderRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).GetFolder(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/GetFolder", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).GetFolder(ctx, req.(*GetFolderRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_CreateFolder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateFolderRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).CreateFolder(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/CreateFolder", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).CreateFolder(ctx, req.(*CreateFolderRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_UpdateFolder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateFolderRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).UpdateFolder(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/UpdateFolder", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).UpdateFolder(ctx, req.(*UpdateFolderRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_MoveFolder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MoveFolderRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).MoveFolder(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/MoveFolder", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).MoveFolder(ctx, req.(*MoveFolderRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_DeleteFolder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteFolderRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).DeleteFolder(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/DeleteFolder", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).DeleteFolder(ctx, req.(*DeleteFolderRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_UndeleteFolder_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UndeleteFolderRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).UndeleteFolder(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/UndeleteFolder", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).UndeleteFolder(ctx, req.(*UndeleteFolderRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Folders_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FoldersServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.resourcemanager.v2.Folders/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FoldersServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Folders_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.resourcemanager.v2.Folders", - HandlerType: (*FoldersServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListFolders", - Handler: _Folders_ListFolders_Handler, - }, - { - MethodName: "SearchFolders", - Handler: _Folders_SearchFolders_Handler, - }, - { - MethodName: "GetFolder", - Handler: _Folders_GetFolder_Handler, - }, - { - MethodName: "CreateFolder", - Handler: _Folders_CreateFolder_Handler, - }, - { - MethodName: "UpdateFolder", - Handler: _Folders_UpdateFolder_Handler, - }, - { - MethodName: "MoveFolder", - Handler: _Folders_MoveFolder_Handler, - }, - { - MethodName: "DeleteFolder", - Handler: _Folders_DeleteFolder_Handler, - }, - { - MethodName: "UndeleteFolder", - Handler: _Folders_UndeleteFolder_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _Folders_GetIamPolicy_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _Folders_SetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _Folders_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/resourcemanager/v2/folders.proto", -} - -func init() { proto.RegisterFile("google/cloud/resourcemanager/v2/folders.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1235 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x5d, 0x6f, 0xdb, 0xd4, - 0x1b, 0xff, 0x9f, 0xac, 0xcb, 0xba, 0x27, 0x2f, 0xcd, 0x4e, 0xdb, 0xfd, 0x4b, 0xba, 0xbe, 0x70, - 0xca, 0x46, 0xd6, 0x6a, 0xce, 0x9a, 0x41, 0x2f, 0x3a, 0x01, 0xea, 0x52, 0xb7, 0x8a, 0xd4, 0x97, - 0xe0, 0xb8, 0x95, 0x86, 0x2a, 0x59, 0x5e, 0x72, 0x9a, 0x5a, 0x75, 0x6c, 0xcf, 0x76, 0x02, 0xd9, - 0x84, 0x34, 0x4d, 0x9a, 0xb8, 0x98, 0xb8, 0xda, 0x1d, 0x88, 0x0b, 0x6e, 0xb9, 0x45, 0xe2, 0x3b, - 0xc0, 0x2d, 0x5f, 0x81, 0x0f, 0x82, 0x7c, 0x7c, 0x9c, 0xda, 0x4e, 0x3a, 0xa7, 0x08, 0x71, 0x55, - 0xfb, 0x79, 0xfd, 0x3d, 0x6f, 0xbf, 0x3a, 0xf0, 0xa0, 0x6d, 0x9a, 0x6d, 0x9d, 0x96, 0x9b, 0xba, - 0xd9, 0x6d, 0x95, 0x6d, 0xea, 0x98, 0x5d, 0xbb, 0x49, 0x3b, 0xaa, 0xa1, 0xb6, 0xa9, 0x5d, 0xee, - 0x55, 0xca, 0xa7, 0xa6, 0xde, 0xa2, 0xb6, 0x23, 0x58, 0xb6, 0xe9, 0x9a, 0x78, 0xc9, 0x37, 0x17, - 0x98, 0xb9, 0x10, 0x33, 0x17, 0x7a, 0x95, 0xe2, 0x1d, 0x1e, 0x4f, 0xb5, 0xb4, 0xb2, 0x6a, 0x18, - 0xa6, 0xab, 0xba, 0x9a, 0x69, 0x70, 0xf7, 0xe2, 0x22, 0xd7, 0x6a, 0x6a, 0xa7, 0xdc, 0x5b, 0xf7, - 0xfe, 0x28, 0x96, 0xa9, 0x6b, 0xcd, 0x3e, 0xd7, 0x17, 0xa3, 0xfa, 0x88, 0x6e, 0x85, 0xeb, 0x74, - 0xd3, 0x68, 0xdb, 0x5d, 0xc3, 0xd0, 0x8c, 0x76, 0xd9, 0xb4, 0xa8, 0x1d, 0x49, 0xb0, 0xcc, 0x8d, - 0xd8, 0xdb, 0xb3, 0xee, 0x69, 0xf9, 0x54, 0xa3, 0x7a, 0x4b, 0xe9, 0xa8, 0xce, 0x39, 0xb7, 0x58, - 0x8a, 0x5b, 0xb8, 0x5a, 0x87, 0x3a, 0xae, 0xda, 0xb1, 0x7c, 0x03, 0xf2, 0xdd, 0x35, 0x48, 0xef, - 0xb0, 0xa2, 0x31, 0x86, 0x09, 0x43, 0xed, 0xd0, 0x39, 0xb4, 0x8c, 0x4a, 0x37, 0x25, 0xf6, 0x8c, - 0x6f, 0x43, 0xda, 0x52, 0x6d, 0x6a, 0xb8, 0x73, 0x29, 0x26, 0xe5, 0x6f, 0xf8, 0x43, 0xc8, 0xb6, - 0x34, 0xc7, 0xd2, 0xd5, 0xbe, 0xc2, 0x7c, 0xae, 0x31, 0x6d, 0x86, 0xcb, 0x0e, 0x3c, 0x57, 0x05, - 0xa6, 0x74, 0xed, 0x94, 0x36, 0xfb, 0x4d, 0x9d, 0x2a, 0x8e, 0xab, 0xba, 0x74, 0x6e, 0x62, 0x19, - 0x95, 0xf2, 0x95, 0x0d, 0x21, 0xa1, 0xad, 0x82, 0x0f, 0x48, 0xd8, 0x0b, 0xdc, 0x1b, 0x9e, 0xb7, - 0x94, 0xd7, 0x23, 0xef, 0xf8, 0x31, 0x64, 0x9a, 0x36, 0x55, 0x5d, 0xaa, 0x78, 0x45, 0xcd, 0x5d, - 0x5f, 0x46, 0xa5, 0x4c, 0xa5, 0x18, 0x04, 0x0f, 0x2a, 0x16, 0xe4, 0xa0, 0x62, 0x09, 0x7c, 0x73, - 0x4f, 0xe0, 0x39, 0x77, 0xad, 0xd6, 0xc0, 0x39, 0x9d, 0xec, 0xec, 0x9b, 0x7b, 0x02, 0xd2, 0x80, - 0x7c, 0x14, 0x1b, 0x5e, 0x82, 0xf9, 0xbd, 0xda, 0x8e, 0x58, 0x7d, 0x5a, 0xdd, 0x13, 0x95, 0x86, - 0xbc, 0x25, 0x8b, 0xca, 0xd1, 0x41, 0xa3, 0x2e, 0x56, 0x6b, 0x3b, 0x35, 0x71, 0xbb, 0xf0, 0x3f, - 0x0c, 0x90, 0xde, 0xaa, 0xca, 0xb5, 0x63, 0xb1, 0x80, 0xf0, 0x0c, 0x14, 0xb6, 0xc5, 0x3d, 0x51, - 0x16, 0x15, 0x49, 0xfc, 0xf2, 0x48, 0x6c, 0xc8, 0xe2, 0x76, 0x21, 0x45, 0xde, 0x22, 0xc0, 0x7b, - 0x9a, 0xe3, 0xfa, 0xc5, 0x3b, 0x12, 0x7d, 0xde, 0xa5, 0x8e, 0x1b, 0x9a, 0x00, 0x8a, 0x4c, 0x60, - 0x1e, 0x6e, 0x5a, 0x6a, 0x9b, 0x2a, 0x8e, 0xf6, 0x82, 0xb2, 0xe1, 0x5c, 0x97, 0x26, 0x3d, 0x41, - 0x43, 0x7b, 0x41, 0xf1, 0x02, 0x00, 0x53, 0xba, 0xe6, 0x39, 0x35, 0xf8, 0x70, 0x98, 0xb9, 0xec, - 0x09, 0xbc, 0xe9, 0x39, 0x67, 0xe6, 0xd7, 0x4a, 0x8b, 0xea, 0xd4, 0xa5, 0x2d, 0x36, 0x97, 0x49, - 0x29, 0xe3, 0xc9, 0xb6, 0x7d, 0x11, 0x79, 0x85, 0x60, 0x3a, 0x82, 0xc6, 0xb1, 0x4c, 0xc3, 0xa1, - 0x78, 0x0b, 0x6e, 0xf0, 0x1b, 0x99, 0x43, 0xcb, 0xd7, 0x4a, 0x99, 0xca, 0xc7, 0x63, 0x4e, 0x53, - 0x0a, 0xfc, 0xf0, 0x3d, 0x98, 0x32, 0xe8, 0x37, 0xae, 0x12, 0x42, 0xe8, 0x2f, 0x57, 0xce, 0x13, - 0xd7, 0x03, 0x94, 0xe4, 0x0c, 0x66, 0x1a, 0x54, 0xb5, 0x9b, 0x67, 0xb1, 0x8e, 0x44, 0x2a, 0x47, - 0xef, 0xad, 0x3c, 0x15, 0xaf, 0x7c, 0x06, 0xae, 0x3f, 0xef, 0x52, 0xbb, 0xcf, 0x7b, 0xe2, 0xbf, - 0x90, 0xd7, 0x08, 0x66, 0x63, 0xa9, 0xfe, 0xfb, 0x72, 0xef, 0x41, 0x61, 0x97, 0xf2, 0x7e, 0x07, - 0xa5, 0x8e, 0x38, 0x49, 0x62, 0xc0, 0x74, 0x95, 0xed, 0x71, 0xd4, 0xf4, 0xb2, 0x3d, 0xf9, 0x02, - 0xd2, 0x3e, 0x12, 0x96, 0xf5, 0x0a, 0x05, 0x70, 0x37, 0x72, 0x0c, 0xb7, 0xf6, 0xcd, 0x1e, 0x4d, - 0x04, 0x86, 0x1f, 0x00, 0x6e, 0x51, 0xc7, 0xd5, 0x0c, 0xc6, 0x51, 0x4a, 0x84, 0x37, 0x6e, 0x85, - 0x34, 0x75, 0xa6, 0x20, 0xef, 0x10, 0x4c, 0x1f, 0xb1, 0x9b, 0x8a, 0x86, 0xbe, 0x00, 0x8c, 0xfe, - 0x11, 0xe0, 0xd0, 0x69, 0x7b, 0x44, 0xc8, 0xcb, 0x1e, 0x3e, 0xed, 0x1d, 0x8f, 0x2b, 0xf7, 0x55, - 0xe7, 0x3c, 0x38, 0x6d, 0xef, 0x99, 0xc8, 0x30, 0xed, 0x9f, 0x40, 0x72, 0xbd, 0xf7, 0xa1, 0x60, - 0xd3, 0x66, 0xd7, 0x76, 0xb4, 0x1e, 0xe5, 0xa7, 0xc4, 0x92, 0x4d, 0x4a, 0x53, 0x03, 0xb9, 0x1f, - 0x8b, 0xac, 0xc1, 0xec, 0x91, 0xd1, 0x1a, 0x2f, 0x2e, 0xf9, 0x2d, 0x05, 0x53, 0xbe, 0xd5, 0x61, - 0x40, 0xf8, 0x43, 0x7c, 0x8b, 0x86, 0xf9, 0x96, 0x42, 0x7e, 0xf0, 0x0f, 0x42, 0x71, 0xfb, 0x96, - 0x0f, 0x26, 0x5f, 0xf9, 0x7c, 0xcc, 0xfe, 0x0d, 0x92, 0x09, 0x83, 0x27, 0xb9, 0x6f, 0x51, 0x29, - 0x67, 0x86, 0x5f, 0xf1, 0x0a, 0xe4, 0xfc, 0x00, 0xc1, 0x80, 0xfd, 0x4b, 0xca, 0xfa, 0x42, 0x7f, - 0xb6, 0x97, 0xac, 0xc2, 0xc4, 0x65, 0xab, 0x20, 0x42, 0x2e, 0x92, 0x13, 0x2f, 0x42, 0xf1, 0xb0, - 0x2e, 0x4a, 0x5b, 0x72, 0xed, 0xf0, 0x40, 0x91, 0x9f, 0xd6, 0x47, 0xb0, 0x69, 0x55, 0x12, 0xb7, - 0x64, 0x8f, 0x4d, 0x27, 0x61, 0x62, 0xff, 0xf0, 0x58, 0x2c, 0xa4, 0x2a, 0xbf, 0x66, 0xe1, 0x06, - 0x3f, 0x60, 0xfc, 0x3d, 0x82, 0x4c, 0x88, 0xbf, 0xf0, 0xa3, 0xc4, 0x2e, 0x0c, 0x73, 0x6f, 0xf1, - 0x93, 0xab, 0x39, 0xf9, 0x9c, 0x41, 0xa6, 0x5f, 0xff, 0xf9, 0xd7, 0xbb, 0x54, 0x0e, 0x67, 0x42, - 0x1f, 0x14, 0xf8, 0x27, 0x04, 0xb9, 0x08, 0xc5, 0xe0, 0x4f, 0x13, 0x83, 0x8f, 0x62, 0xbf, 0xe2, - 0xc6, 0x55, 0xdd, 0x38, 0xaa, 0x05, 0x86, 0xea, 0xff, 0x04, 0x87, 0x50, 0x6d, 0x3a, 0xcc, 0x74, - 0x13, 0xad, 0xe2, 0x37, 0x08, 0x6e, 0x0e, 0xe8, 0x07, 0xaf, 0x27, 0x26, 0x89, 0x53, 0x55, 0x71, - 0xdc, 0x33, 0x25, 0x77, 0x18, 0x90, 0xdb, 0x78, 0xc6, 0x03, 0xf2, 0xd2, 0xdb, 0xe6, 0xcf, 0x38, - 0x9c, 0xf2, 0xea, 0xb7, 0xf8, 0x15, 0x82, 0x6c, 0x98, 0xde, 0x70, 0xf2, 0x0c, 0x46, 0xb0, 0x61, - 0x71, 0x21, 0xf0, 0x0a, 0x7d, 0x3f, 0x5d, 0xec, 0x35, 0x99, 0x67, 0x18, 0x66, 0x49, 0x78, 0x44, - 0x9b, 0x01, 0x7f, 0xfc, 0x80, 0x20, 0x1b, 0x26, 0xa6, 0x31, 0x20, 0x8c, 0xe0, 0xb1, 0xf1, 0x1b, - 0xb2, 0xc6, 0xc0, 0xdc, 0xad, 0xcc, 0xb3, 0x86, 0xf8, 0x20, 0x84, 0x58, 0x5f, 0x06, 0xe0, 0xde, - 0x20, 0x80, 0x0b, 0x3a, 0xc6, 0x95, 0xc4, 0x24, 0x43, 0xdc, 0x9d, 0xd4, 0x9b, 0x8f, 0x18, 0x9c, - 0x45, 0xf2, 0xc1, 0xa8, 0xf9, 0x6c, 0x76, 0xcc, 0x1e, 0xf5, 0xf6, 0xe5, 0x2d, 0x82, 0x6c, 0x98, - 0x28, 0xc7, 0x68, 0xd2, 0x08, 0x5e, 0xbd, 0xf2, 0xd6, 0xac, 0x8e, 0xde, 0x9a, 0x1f, 0x11, 0xe4, - 0xa3, 0x04, 0x8b, 0x93, 0xef, 0x64, 0x24, 0x23, 0x8f, 0x8f, 0xa8, 0xc4, 0x10, 0x11, 0xb2, 0x30, - 0xb2, 0x4f, 0x5d, 0x1e, 0xdc, 0xeb, 0xd5, 0x4b, 0xc8, 0xee, 0x52, 0xb7, 0xa6, 0x76, 0xea, 0xec, - 0x0b, 0x1f, 0x93, 0x20, 0x85, 0xa6, 0x76, 0x84, 0xde, 0xba, 0x10, 0x56, 0x06, 0x30, 0x66, 0x63, - 0x36, 0xbe, 0x96, 0x3c, 0x64, 0x49, 0x57, 0xc9, 0x5d, 0x96, 0x34, 0x00, 0x17, 0x4e, 0xdc, 0x0e, - 0x05, 0xe3, 0xc9, 0x1b, 0xef, 0x4b, 0xde, 0xf8, 0x37, 0x93, 0x3b, 0xb1, 0xe4, 0x3f, 0x23, 0xc0, - 0x32, 0x75, 0x98, 0x90, 0xda, 0x1d, 0xcd, 0x71, 0xbc, 0x5f, 0x2f, 0xb8, 0x14, 0x8b, 0x3f, 0x6c, - 0x12, 0x20, 0xb9, 0x3f, 0x86, 0x25, 0x27, 0xb8, 0x0d, 0x86, 0xee, 0x21, 0x59, 0xbb, 0x14, 0x9d, - 0x3b, 0xe4, 0xbc, 0x89, 0x56, 0x9f, 0xfc, 0x8e, 0x60, 0xa5, 0x69, 0x76, 0x92, 0xc6, 0xfe, 0x24, - 0xcb, 0x19, 0xb5, 0xee, 0x7d, 0x40, 0xd4, 0xd1, 0x57, 0x07, 0xdc, 0xa1, 0x6d, 0xea, 0xaa, 0xd1, - 0x16, 0x4c, 0xbb, 0x5d, 0x6e, 0x53, 0x83, 0x7d, 0x5e, 0x94, 0x7d, 0x95, 0x6a, 0x69, 0xce, 0xa5, - 0x3f, 0x35, 0x1f, 0xc7, 0x44, 0xbf, 0xa4, 0x96, 0x76, 0xfd, 0x80, 0x55, 0x86, 0x40, 0xe2, 0xea, - 0x7d, 0x8e, 0xe0, 0xb8, 0xf2, 0x47, 0x60, 0x71, 0xc2, 0x2c, 0x4e, 0x62, 0x16, 0x27, 0xc7, 0x95, - 0x67, 0x69, 0x96, 0xfe, 0xd1, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xda, 0x9b, 0x45, 0x8f, 0xe8, - 0x0e, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go deleted file mode 100644 index 157bd2c4..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/resources.pb.go +++ /dev/null @@ -1,591 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/runtimeconfig/v1beta1/resources.proto - -/* -Package runtimeconfig is a generated protocol buffer package. - -It is generated from these files: - google/cloud/runtimeconfig/v1beta1/resources.proto - google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto - -It has these top-level messages: - RuntimeConfig - Variable - EndCondition - Waiter - ListConfigsRequest - ListConfigsResponse - GetConfigRequest - CreateConfigRequest - UpdateConfigRequest - DeleteConfigRequest - ListVariablesRequest - ListVariablesResponse - WatchVariableRequest - GetVariableRequest - CreateVariableRequest - UpdateVariableRequest - DeleteVariableRequest - ListWaitersRequest - ListWaitersResponse - GetWaiterRequest - CreateWaiterRequest - DeleteWaiterRequest -*/ -package runtimeconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The `VariableState` describes the last known state of the variable and is -// used during a `variables().watch` call to distinguish the state of the -// variable. -type VariableState int32 - -const ( - // Default variable state. - VariableState_VARIABLE_STATE_UNSPECIFIED VariableState = 0 - // The variable was updated, while `variables().watch` was executing. - VariableState_UPDATED VariableState = 1 - // The variable was deleted, while `variables().watch` was executing. - VariableState_DELETED VariableState = 2 -) - -var VariableState_name = map[int32]string{ - 0: "VARIABLE_STATE_UNSPECIFIED", - 1: "UPDATED", - 2: "DELETED", -} -var VariableState_value = map[string]int32{ - "VARIABLE_STATE_UNSPECIFIED": 0, - "UPDATED": 1, - "DELETED": 2, -} - -func (x VariableState) String() string { - return proto.EnumName(VariableState_name, int32(x)) -} -func (VariableState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig -// service. A RuntimeConfig resource consists of metadata and a hierarchy of -// variables. -type RuntimeConfig struct { - // The resource name of a runtime config. The name must have the format: - // - // projects/[PROJECT_ID]/configs/[CONFIG_NAME] - // - // The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an - // arbitrary name that matches RFC 1035 segment specification. The length of - // `[CONFIG_NAME]` must be less than 64 bytes. - // - // You pick the RuntimeConfig resource name, but the server will validate that - // the name adheres to this format. After you create the resource, you cannot - // change the resource's name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // An optional description of the RuntimeConfig object. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } -func (m *RuntimeConfig) String() string { return proto.CompactTextString(m) } -func (*RuntimeConfig) ProtoMessage() {} -func (*RuntimeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *RuntimeConfig) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *RuntimeConfig) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// Describes a single variable within a RuntimeConfig resource. -// The name denotes the hierarchical variable name. For example, -// `ports/serving_port` is a valid variable name. The variable value is an -// opaque string and only leaf variables can have values (that is, variables -// that do not have any child variables). -type Variable struct { - // The name of the variable resource, in the format: - // - // projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME] - // - // The `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a - // valid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system - // file path naming. - // - // The `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and - // dashes. Slashes are used as path element separators and are not part of the - // `[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one - // non-slash character. Multiple slashes are coalesced into single slash - // character. Each path segment should follow RFC 1035 segment specification. - // The length of a `[VARIABLE_NAME]` must be less than 256 bytes. - // - // Once you create a variable, you cannot change the variable name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The the value of the variable. It can be either a binary or a string - // value. You must specify one of either `value` or `text`. Specifying both - // will cause the server to return an error. - // - // Types that are valid to be assigned to Contents: - // *Variable_Value - // *Variable_Text - Contents isVariable_Contents `protobuf_oneof:"contents"` - // [Output Only] The time of the last variable update. - UpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // [Ouput only] The current state of the variable. The variable state indicates - // the outcome of the `variables().watch` call and is visible through the - // `get` and `list` calls. - State VariableState `protobuf:"varint,4,opt,name=state,enum=google.cloud.runtimeconfig.v1beta1.VariableState" json:"state,omitempty"` -} - -func (m *Variable) Reset() { *m = Variable{} } -func (m *Variable) String() string { return proto.CompactTextString(m) } -func (*Variable) ProtoMessage() {} -func (*Variable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type isVariable_Contents interface { - isVariable_Contents() -} - -type Variable_Value struct { - Value []byte `protobuf:"bytes,2,opt,name=value,proto3,oneof"` -} -type Variable_Text struct { - Text string `protobuf:"bytes,5,opt,name=text,oneof"` -} - -func (*Variable_Value) isVariable_Contents() {} -func (*Variable_Text) isVariable_Contents() {} - -func (m *Variable) GetContents() isVariable_Contents { - if m != nil { - return m.Contents - } - return nil -} - -func (m *Variable) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Variable) GetValue() []byte { - if x, ok := m.GetContents().(*Variable_Value); ok { - return x.Value - } - return nil -} - -func (m *Variable) GetText() string { - if x, ok := m.GetContents().(*Variable_Text); ok { - return x.Text - } - return "" -} - -func (m *Variable) GetUpdateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *Variable) GetState() VariableState { - if m != nil { - return m.State - } - return VariableState_VARIABLE_STATE_UNSPECIFIED -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Variable) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Variable_OneofMarshaler, _Variable_OneofUnmarshaler, _Variable_OneofSizer, []interface{}{ - (*Variable_Value)(nil), - (*Variable_Text)(nil), - } -} - -func _Variable_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Variable) - // contents - switch x := m.Contents.(type) { - case *Variable_Value: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Value) - case *Variable_Text: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Text) - case nil: - default: - return fmt.Errorf("Variable.Contents has unexpected type %T", x) - } - return nil -} - -func _Variable_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Variable) - switch tag { - case 2: // contents.value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Contents = &Variable_Value{x} - return true, err - case 5: // contents.text - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Contents = &Variable_Text{x} - return true, err - default: - return false, nil - } -} - -func _Variable_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Variable) - // contents - switch x := m.Contents.(type) { - case *Variable_Value: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Value))) - n += len(x.Value) - case *Variable_Text: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Text))) - n += len(x.Text) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The condition that a Waiter resource is waiting for. -type EndCondition struct { - // The condition oneof holds the available condition types for this - // EndCondition. Currently, the only available type is Cardinality. - // - // Types that are valid to be assigned to Condition: - // *EndCondition_Cardinality_ - Condition isEndCondition_Condition `protobuf_oneof:"condition"` -} - -func (m *EndCondition) Reset() { *m = EndCondition{} } -func (m *EndCondition) String() string { return proto.CompactTextString(m) } -func (*EndCondition) ProtoMessage() {} -func (*EndCondition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isEndCondition_Condition interface { - isEndCondition_Condition() -} - -type EndCondition_Cardinality_ struct { - Cardinality *EndCondition_Cardinality `protobuf:"bytes,1,opt,name=cardinality,oneof"` -} - -func (*EndCondition_Cardinality_) isEndCondition_Condition() {} - -func (m *EndCondition) GetCondition() isEndCondition_Condition { - if m != nil { - return m.Condition - } - return nil -} - -func (m *EndCondition) GetCardinality() *EndCondition_Cardinality { - if x, ok := m.GetCondition().(*EndCondition_Cardinality_); ok { - return x.Cardinality - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*EndCondition) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _EndCondition_OneofMarshaler, _EndCondition_OneofUnmarshaler, _EndCondition_OneofSizer, []interface{}{ - (*EndCondition_Cardinality_)(nil), - } -} - -func _EndCondition_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*EndCondition) - // condition - switch x := m.Condition.(type) { - case *EndCondition_Cardinality_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Cardinality); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("EndCondition.Condition has unexpected type %T", x) - } - return nil -} - -func _EndCondition_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*EndCondition) - switch tag { - case 1: // condition.cardinality - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(EndCondition_Cardinality) - err := b.DecodeMessage(msg) - m.Condition = &EndCondition_Cardinality_{msg} - return true, err - default: - return false, nil - } -} - -func _EndCondition_OneofSizer(msg proto.Message) (n int) { - m := msg.(*EndCondition) - // condition - switch x := m.Condition.(type) { - case *EndCondition_Cardinality_: - s := proto.Size(x.Cardinality) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Cardinality condition for the Waiter resource. A cardinality condition is -// met when the number of variables under a specified path prefix reaches a -// predefined number. For example, if you set a Cardinality condition where -// the `path` is set to `/foo` and the number of paths is set to 2, the -// following variables would meet the condition in a RuntimeConfig resource: -// -// + `/foo/variable1 = "value1"` -// + `/foo/variable2 = "value2"` -// + `/bar/variable3 = "value3"` -// -// It would not would not satisify the same condition with the `number` set to -// 3, however, because there is only 2 paths that start with `/foo`. -// Cardinality conditions are recursive; all subtrees under the specific -// path prefix are counted. -type EndCondition_Cardinality struct { - // The root of the variable subtree to monitor. For example, `/foo`. - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` - // The number variables under the `path` that must exist to meet this - // condition. Defaults to 1 if not specified. - Number int32 `protobuf:"varint,2,opt,name=number" json:"number,omitempty"` -} - -func (m *EndCondition_Cardinality) Reset() { *m = EndCondition_Cardinality{} } -func (m *EndCondition_Cardinality) String() string { return proto.CompactTextString(m) } -func (*EndCondition_Cardinality) ProtoMessage() {} -func (*EndCondition_Cardinality) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *EndCondition_Cardinality) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *EndCondition_Cardinality) GetNumber() int32 { - if m != nil { - return m.Number - } - return 0 -} - -// A Waiter resource waits for some end condition within a RuntimeConfig resource -// to be met before it returns. For example, assume you have a distributed -// system where each node writes to a Variable resource indidicating the node's -// readiness as part of the startup process. -// -// You then configure a Waiter resource with the success condition set to wait -// until some number of nodes have checked in. Afterwards, your application -// runs some arbitrary code after the condition has been met and the waiter -// returns successfully. -// -// Once created, a Waiter resource is immutable. -// -// To learn more about using waiters, read the -// [Creating a Waiter](/deployment-manager/runtime-configurator/creating-a-waiter) -// documentation. -type Waiter struct { - // The name of the Waiter resource, in the format: - // - // projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME] - // - // The `[PROJECT_ID]` must be a valid Google Cloud project ID, - // the `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the - // `[WAITER_NAME]` must match RFC 1035 segment specification, and the length - // of `[WAITER_NAME]` must be less than 64 bytes. - // - // After you create a Waiter resource, you cannot change the resource name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // [Required] Specifies the timeout of the waiter in seconds, beginning from - // the instant that `waiters().create` method is called. If this time elapses - // before the success or failure conditions are met, the waiter fails and sets - // the `error` code to `DEADLINE_EXCEEDED`. - Timeout *google_protobuf1.Duration `protobuf:"bytes,2,opt,name=timeout" json:"timeout,omitempty"` - // [Optional] The failure condition of this waiter. If this condition is met, - // `done` will be set to `true` and the `error` code will be set to `ABORTED`. - // The failure condition takes precedence over the success condition. If both - // conditions are met, a failure will be indicated. This value is optional; if - // no failure condition is set, the only failure scenario will be a timeout. - Failure *EndCondition `protobuf:"bytes,3,opt,name=failure" json:"failure,omitempty"` - // [Required] The success condition. If this condition is met, `done` will be - // set to `true` and the `error` value will remain unset. The failure condition - // takes precedence over the success condition. If both conditions are met, a - // failure will be indicated. - Success *EndCondition `protobuf:"bytes,4,opt,name=success" json:"success,omitempty"` - // [Output Only] The instant at which this Waiter resource was created. Adding - // the value of `timeout` to this instant yields the timeout deadline for the - // waiter. - CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // [Output Only] If the value is `false`, it means the waiter is still waiting - // for one of its conditions to be met. - // - // If true, the waiter has finished. If the waiter finished due to a timeout - // or failure, `error` will be set. - Done bool `protobuf:"varint,6,opt,name=done" json:"done,omitempty"` - // [Output Only] If the waiter ended due to a failure or timeout, this value - // will be set. - Error *google_rpc.Status `protobuf:"bytes,7,opt,name=error" json:"error,omitempty"` -} - -func (m *Waiter) Reset() { *m = Waiter{} } -func (m *Waiter) String() string { return proto.CompactTextString(m) } -func (*Waiter) ProtoMessage() {} -func (*Waiter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Waiter) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Waiter) GetTimeout() *google_protobuf1.Duration { - if m != nil { - return m.Timeout - } - return nil -} - -func (m *Waiter) GetFailure() *EndCondition { - if m != nil { - return m.Failure - } - return nil -} - -func (m *Waiter) GetSuccess() *EndCondition { - if m != nil { - return m.Success - } - return nil -} - -func (m *Waiter) GetCreateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Waiter) GetDone() bool { - if m != nil { - return m.Done - } - return false -} - -func (m *Waiter) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -func init() { - proto.RegisterType((*RuntimeConfig)(nil), "google.cloud.runtimeconfig.v1beta1.RuntimeConfig") - proto.RegisterType((*Variable)(nil), "google.cloud.runtimeconfig.v1beta1.Variable") - proto.RegisterType((*EndCondition)(nil), "google.cloud.runtimeconfig.v1beta1.EndCondition") - proto.RegisterType((*EndCondition_Cardinality)(nil), "google.cloud.runtimeconfig.v1beta1.EndCondition.Cardinality") - proto.RegisterType((*Waiter)(nil), "google.cloud.runtimeconfig.v1beta1.Waiter") - proto.RegisterEnum("google.cloud.runtimeconfig.v1beta1.VariableState", VariableState_name, VariableState_value) -} - -func init() { proto.RegisterFile("google/cloud/runtimeconfig/v1beta1/resources.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 628 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xdd, 0x6e, 0xd3, 0x30, - 0x14, 0xc7, 0x9b, 0xd2, 0x8f, 0xed, 0x64, 0x43, 0x93, 0x85, 0x46, 0xa8, 0xd0, 0xa8, 0x7a, 0x81, - 0x2a, 0x2e, 0x12, 0xda, 0x5d, 0xa1, 0x71, 0xd3, 0x8f, 0xb0, 0x15, 0x4d, 0x30, 0xa5, 0x5d, 0x91, - 0xd0, 0xa4, 0xe1, 0x3a, 0x6e, 0x88, 0x94, 0xda, 0x91, 0xe3, 0x4c, 0xf0, 0x4a, 0x3c, 0x01, 0x2f, - 0xc0, 0x0d, 0x0f, 0xc1, 0x15, 0x0f, 0x82, 0xec, 0x38, 0xd0, 0xc2, 0xc4, 0x06, 0x77, 0x3e, 0x3e, - 0xff, 0xf3, 0x3b, 0x1f, 0x3e, 0x09, 0xf4, 0x23, 0xce, 0xa3, 0x84, 0x7a, 0x24, 0xe1, 0x79, 0xe8, - 0x89, 0x9c, 0xc9, 0x78, 0x45, 0x09, 0x67, 0xcb, 0x38, 0xf2, 0xae, 0x7a, 0x0b, 0x2a, 0x71, 0xcf, - 0x13, 0x34, 0xe3, 0xb9, 0x20, 0x34, 0x73, 0x53, 0xc1, 0x25, 0x47, 0x9d, 0x22, 0xc6, 0xd5, 0x31, - 0xee, 0x46, 0x8c, 0x6b, 0x62, 0x5a, 0x0f, 0x0d, 0x17, 0xa7, 0xb1, 0x87, 0x19, 0xe3, 0x12, 0xcb, - 0x98, 0x33, 0x43, 0x68, 0x1d, 0x18, 0xaf, 0xb6, 0x16, 0xf9, 0xd2, 0x0b, 0x73, 0xa1, 0x05, 0xc6, - 0xff, 0xe8, 0x77, 0xbf, 0xca, 0x90, 0x49, 0xbc, 0x4a, 0x8d, 0xe0, 0xbe, 0x11, 0x88, 0x94, 0x78, - 0x99, 0xc4, 0x32, 0x37, 0xe4, 0x8e, 0x0f, 0xbb, 0x41, 0x51, 0xd0, 0x48, 0x17, 0x84, 0x10, 0xd4, - 0x18, 0x5e, 0x51, 0xc7, 0x6a, 0x5b, 0xdd, 0xed, 0x40, 0x9f, 0x51, 0x1b, 0xec, 0x90, 0x66, 0x44, - 0xc4, 0xa9, 0xca, 0xe9, 0x54, 0xb5, 0x6b, 0xfd, 0xaa, 0xf3, 0xcd, 0x82, 0xad, 0x39, 0x16, 0x31, - 0x5e, 0x24, 0xf4, 0x5a, 0xc4, 0x3e, 0xd4, 0xaf, 0x70, 0x92, 0x53, 0x1d, 0xbc, 0x73, 0x52, 0x09, - 0x0a, 0x13, 0xdd, 0x83, 0x9a, 0xa4, 0x1f, 0xa4, 0x53, 0x57, 0xda, 0x93, 0x4a, 0xa0, 0x2d, 0x74, - 0x04, 0x76, 0x9e, 0x86, 0x58, 0xd2, 0x4b, 0x55, 0x99, 0x73, 0xa7, 0x6d, 0x75, 0xed, 0x7e, 0xcb, - 0x35, 0x73, 0x2c, 0xbb, 0x74, 0x67, 0x65, 0x97, 0x01, 0x14, 0x72, 0x75, 0x81, 0x8e, 0xa1, 0xae, - 0x5a, 0xa4, 0x4e, 0xad, 0x6d, 0x75, 0xef, 0xf6, 0x7b, 0xee, 0xcd, 0xe3, 0x77, 0xcb, 0xda, 0xa7, - 0x2a, 0x30, 0x28, 0xe2, 0x87, 0x00, 0x5b, 0x84, 0x33, 0x49, 0x99, 0xcc, 0x3a, 0x9f, 0x2d, 0xd8, - 0xf1, 0x59, 0x38, 0xe2, 0x2c, 0x8c, 0x55, 0xc7, 0xe8, 0x1d, 0xd8, 0x04, 0x8b, 0x30, 0x66, 0x38, - 0x89, 0xe5, 0x47, 0xdd, 0xab, 0xdd, 0x7f, 0x7e, 0x9b, 0x5c, 0xeb, 0x18, 0x77, 0xf4, 0x8b, 0x71, - 0x52, 0x09, 0xd6, 0x91, 0xad, 0x67, 0x60, 0xaf, 0x79, 0xd5, 0x54, 0x53, 0x2c, 0xdf, 0x97, 0x53, - 0x55, 0x67, 0xb4, 0x0f, 0x0d, 0x96, 0xaf, 0x16, 0x54, 0xe8, 0xb1, 0xd6, 0x03, 0x63, 0x0d, 0x6d, - 0xd8, 0x26, 0x65, 0x8a, 0xce, 0xf7, 0x2a, 0x34, 0xde, 0xe0, 0x58, 0x52, 0x71, 0xed, 0xcb, 0x1c, - 0x42, 0x53, 0x15, 0xc9, 0x73, 0xa9, 0x21, 0x76, 0xff, 0xc1, 0x1f, 0x73, 0x1e, 0x9b, 0x6d, 0x0b, - 0x4a, 0x25, 0x7a, 0x09, 0xcd, 0x25, 0x8e, 0x93, 0x5c, 0x94, 0x8f, 0xf3, 0xf4, 0x5f, 0x3b, 0x0f, - 0x4a, 0x80, 0x62, 0x65, 0x39, 0x21, 0x34, 0xcb, 0xf4, 0x8b, 0xfd, 0x17, 0xcb, 0x00, 0xd4, 0xe2, - 0x10, 0x41, 0x7f, 0x2e, 0x4e, 0xfd, 0xe6, 0xc5, 0x29, 0xe4, 0x7a, 0x71, 0x10, 0xd4, 0x42, 0xce, - 0xa8, 0xd3, 0x68, 0x5b, 0xdd, 0xad, 0x40, 0x9f, 0x51, 0x17, 0xea, 0x54, 0x08, 0x2e, 0x9c, 0xa6, - 0x46, 0xa1, 0x12, 0x25, 0x52, 0xe2, 0x4e, 0xf5, 0x87, 0x14, 0x14, 0x82, 0x27, 0x13, 0xd8, 0xdd, - 0xd8, 0x22, 0x74, 0x00, 0xad, 0xf9, 0x20, 0x98, 0x0c, 0x86, 0xa7, 0xfe, 0xe5, 0x74, 0x36, 0x98, - 0xf9, 0x97, 0xe7, 0xaf, 0xa6, 0x67, 0xfe, 0x68, 0xf2, 0x62, 0xe2, 0x8f, 0xf7, 0x2a, 0xc8, 0x86, - 0xe6, 0xf9, 0xd9, 0x78, 0x30, 0xf3, 0xc7, 0x7b, 0x96, 0x32, 0xc6, 0xfe, 0xa9, 0xaf, 0x8c, 0xea, - 0xf0, 0x8b, 0x05, 0x8f, 0x09, 0x5f, 0xdd, 0x62, 0x0c, 0x67, 0xd6, 0xdb, 0xd7, 0x46, 0x15, 0xf1, - 0x04, 0xb3, 0xc8, 0xe5, 0x22, 0xf2, 0x22, 0xca, 0x74, 0xab, 0x5e, 0xe1, 0xc2, 0x69, 0x9c, 0xfd, - 0xed, 0x87, 0x75, 0xb4, 0x71, 0xfb, 0xa9, 0xda, 0x39, 0x2e, 0x88, 0x23, 0x9d, 0x77, 0xe3, 0xf7, - 0xe0, 0xce, 0x7b, 0x43, 0x15, 0xf2, 0xb5, 0x14, 0x5d, 0x68, 0xd1, 0xc5, 0x86, 0xe8, 0x62, 0x5e, - 0x70, 0x17, 0x0d, 0x5d, 0xc5, 0xe1, 0x8f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1a, 0xc9, 0x60, 0x90, - 0x35, 0x05, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go deleted file mode 100644 index 2fb9f137..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1/runtimeconfig.pb.go +++ /dev/null @@ -1,1355 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto - -package runtimeconfig - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf4 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Request for the `ListConfigs()` method. -type ListConfigsRequest struct { - // The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848) - // for this request, in the format `projects/[PROJECT_ID]`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Specifies the number of results to return per page. If there are fewer - // elements than the specified number, returns all elements. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Specifies a page token to use. Set `pageToken` to a `nextPageToken` - // returned by a previous list request to get the next page of results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListConfigsRequest) Reset() { *m = ListConfigsRequest{} } -func (m *ListConfigsRequest) String() string { return proto.CompactTextString(m) } -func (*ListConfigsRequest) ProtoMessage() {} -func (*ListConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *ListConfigsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListConfigsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListConfigsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// `ListConfigs()` returns the following response. The order of returned -// objects is arbitrary; that is, it is not ordered in any particular way. -type ListConfigsResponse struct { - // A list of the configurations in the project. The order of returned - // objects is arbitrary; that is, it is not ordered in any particular way. - Configs []*RuntimeConfig `protobuf:"bytes,1,rep,name=configs" json:"configs,omitempty"` - // This token allows you to get the next page of results for list requests. - // If the number of results is larger than `pageSize`, use the `nextPageToken` - // as a value for the query parameter `pageToken` in the next list request. - // Subsequent list requests will have their own `nextPageToken` to continue - // paging through the results - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListConfigsResponse) Reset() { *m = ListConfigsResponse{} } -func (m *ListConfigsResponse) String() string { return proto.CompactTextString(m) } -func (*ListConfigsResponse) ProtoMessage() {} -func (*ListConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *ListConfigsResponse) GetConfigs() []*RuntimeConfig { - if m != nil { - return m.Configs - } - return nil -} - -func (m *ListConfigsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Gets a RuntimeConfig resource. -type GetConfigRequest struct { - // The name of the RuntimeConfig resource to retrieve, in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *GetConfigRequest) Reset() { *m = GetConfigRequest{} } -func (m *GetConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetConfigRequest) ProtoMessage() {} -func (*GetConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *GetConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Creates a RuntimeConfig resource. -type CreateConfigRequest struct { - // The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848) - // for this request, in the format `projects/[PROJECT_ID]`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The RuntimeConfig to create. - Config *RuntimeConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"` - // An optional but recommended unique `request_id`. If the server - // receives two `create()` requests with the same - // `request_id`, then the second request will be ignored and the - // first resource created and stored in the backend is returned. - // Empty `request_id` fields are ignored. - // - // It is responsibility of the client to ensure uniqueness of the - // `request_id` strings. - // - // `request_id` strings are limited to 64 characters. - RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId" json:"request_id,omitempty"` -} - -func (m *CreateConfigRequest) Reset() { *m = CreateConfigRequest{} } -func (m *CreateConfigRequest) String() string { return proto.CompactTextString(m) } -func (*CreateConfigRequest) ProtoMessage() {} -func (*CreateConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *CreateConfigRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateConfigRequest) GetConfig() *RuntimeConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *CreateConfigRequest) GetRequestId() string { - if m != nil { - return m.RequestId - } - return "" -} - -// Request message for `UpdateConfig()` method. -type UpdateConfigRequest struct { - // The name of the RuntimeConfig resource to update, in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The config resource to update. - Config *RuntimeConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"` -} - -func (m *UpdateConfigRequest) Reset() { *m = UpdateConfigRequest{} } -func (m *UpdateConfigRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateConfigRequest) ProtoMessage() {} -func (*UpdateConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *UpdateConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateConfigRequest) GetConfig() *RuntimeConfig { - if m != nil { - return m.Config - } - return nil -} - -// Request for the `DeleteConfig()` method. -type DeleteConfigRequest struct { - // The RuntimeConfig resource to delete, in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteConfigRequest) Reset() { *m = DeleteConfigRequest{} } -func (m *DeleteConfigRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteConfigRequest) ProtoMessage() {} -func (*DeleteConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *DeleteConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for the `ListVariables()` method. -type ListVariablesRequest struct { - // The path to the RuntimeConfig resource for which you want to list variables. - // The configuration must exist beforehand; the path must by in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Filters variables by matching the specified filter. For example: - // - // `projects/example-project/config/[CONFIG_NAME]/variables/example-variable`. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // Specifies the number of results to return per page. If there are fewer - // elements than the specified number, returns all elements. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Specifies a page token to use. Set `pageToken` to a `nextPageToken` - // returned by a previous list request to get the next page of results. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The flag indicates whether the user wants to return values of variables. - // If true, then only those variables that user has IAM GetVariable permission - // will be returned along with their values. - ReturnValues bool `protobuf:"varint,5,opt,name=return_values,json=returnValues" json:"return_values,omitempty"` -} - -func (m *ListVariablesRequest) Reset() { *m = ListVariablesRequest{} } -func (m *ListVariablesRequest) String() string { return proto.CompactTextString(m) } -func (*ListVariablesRequest) ProtoMessage() {} -func (*ListVariablesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *ListVariablesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListVariablesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListVariablesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListVariablesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListVariablesRequest) GetReturnValues() bool { - if m != nil { - return m.ReturnValues - } - return false -} - -// Response for the `ListVariables()` method. -type ListVariablesResponse struct { - // A list of variables and their values. The order of returned variable - // objects is arbitrary. - Variables []*Variable `protobuf:"bytes,1,rep,name=variables" json:"variables,omitempty"` - // This token allows you to get the next page of results for list requests. - // If the number of results is larger than `pageSize`, use the `nextPageToken` - // as a value for the query parameter `pageToken` in the next list request. - // Subsequent list requests will have their own `nextPageToken` to continue - // paging through the results - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListVariablesResponse) Reset() { *m = ListVariablesResponse{} } -func (m *ListVariablesResponse) String() string { return proto.CompactTextString(m) } -func (*ListVariablesResponse) ProtoMessage() {} -func (*ListVariablesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *ListVariablesResponse) GetVariables() []*Variable { - if m != nil { - return m.Variables - } - return nil -} - -func (m *ListVariablesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the `WatchVariable()` method. -type WatchVariableRequest struct { - // The name of the variable to watch, in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // If specified, checks the current timestamp of the variable and if the - // current timestamp is newer than `newerThan` timestamp, the method returns - // immediately. - // - // If not specified or the variable has an older timestamp, the watcher waits - // for a the value to change before returning. - NewerThan *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=newer_than,json=newerThan" json:"newer_than,omitempty"` -} - -func (m *WatchVariableRequest) Reset() { *m = WatchVariableRequest{} } -func (m *WatchVariableRequest) String() string { return proto.CompactTextString(m) } -func (*WatchVariableRequest) ProtoMessage() {} -func (*WatchVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *WatchVariableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *WatchVariableRequest) GetNewerThan() *google_protobuf2.Timestamp { - if m != nil { - return m.NewerThan - } - return nil -} - -// Request for the `GetVariable()` method. -type GetVariableRequest struct { - // The name of the variable to return, in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetVariableRequest) Reset() { *m = GetVariableRequest{} } -func (m *GetVariableRequest) String() string { return proto.CompactTextString(m) } -func (*GetVariableRequest) ProtoMessage() {} -func (*GetVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *GetVariableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for the `CreateVariable()` method. -type CreateVariableRequest struct { - // The path to the RutimeConfig resource that this variable should belong to. - // The configuration must exist beforehand; the path must by in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The variable to create. - Variable *Variable `protobuf:"bytes,2,opt,name=variable" json:"variable,omitempty"` - // An optional but recommended unique `request_id`. If the server - // receives two `create()` requests with the same - // `request_id`, then the second request will be ignored and the - // first resource created and stored in the backend is returned. - // Empty `request_id` fields are ignored. - // - // It is responsibility of the client to ensure uniqueness of the - // `request_id` strings. - // - // `request_id` strings are limited to 64 characters. - RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId" json:"request_id,omitempty"` -} - -func (m *CreateVariableRequest) Reset() { *m = CreateVariableRequest{} } -func (m *CreateVariableRequest) String() string { return proto.CompactTextString(m) } -func (*CreateVariableRequest) ProtoMessage() {} -func (*CreateVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *CreateVariableRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateVariableRequest) GetVariable() *Variable { - if m != nil { - return m.Variable - } - return nil -} - -func (m *CreateVariableRequest) GetRequestId() string { - if m != nil { - return m.RequestId - } - return "" -} - -// Request for the `UpdateVariable()` method. -type UpdateVariableRequest struct { - // The name of the variable to update, in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The variable to update. - Variable *Variable `protobuf:"bytes,2,opt,name=variable" json:"variable,omitempty"` -} - -func (m *UpdateVariableRequest) Reset() { *m = UpdateVariableRequest{} } -func (m *UpdateVariableRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateVariableRequest) ProtoMessage() {} -func (*UpdateVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *UpdateVariableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateVariableRequest) GetVariable() *Variable { - if m != nil { - return m.Variable - } - return nil -} - -// Request for the `DeleteVariable()` method. -type DeleteVariableRequest struct { - // The name of the variable to delete, in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Set to `true` to recursively delete multiple variables with the same - // prefix. - Recursive bool `protobuf:"varint,2,opt,name=recursive" json:"recursive,omitempty"` -} - -func (m *DeleteVariableRequest) Reset() { *m = DeleteVariableRequest{} } -func (m *DeleteVariableRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteVariableRequest) ProtoMessage() {} -func (*DeleteVariableRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *DeleteVariableRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DeleteVariableRequest) GetRecursive() bool { - if m != nil { - return m.Recursive - } - return false -} - -// Request for the `ListWaiters()` method. -type ListWaitersRequest struct { - // The path to the configuration for which you want to get a list of waiters. - // The configuration must exist beforehand; the path must by in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Specifies the number of results to return per page. If there are fewer - // elements than the specified number, returns all elements. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Specifies a page token to use. Set `pageToken` to a `nextPageToken` - // returned by a previous list request to get the next page of results. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListWaitersRequest) Reset() { *m = ListWaitersRequest{} } -func (m *ListWaitersRequest) String() string { return proto.CompactTextString(m) } -func (*ListWaitersRequest) ProtoMessage() {} -func (*ListWaitersRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *ListWaitersRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListWaitersRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListWaitersRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the `ListWaiters()` method. -// Order of returned waiter objects is arbitrary. -type ListWaitersResponse struct { - // Found waiters in the project. - Waiters []*Waiter `protobuf:"bytes,1,rep,name=waiters" json:"waiters,omitempty"` - // This token allows you to get the next page of results for list requests. - // If the number of results is larger than `pageSize`, use the `nextPageToken` - // as a value for the query parameter `pageToken` in the next list request. - // Subsequent list requests will have their own `nextPageToken` to continue - // paging through the results - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListWaitersResponse) Reset() { *m = ListWaitersResponse{} } -func (m *ListWaitersResponse) String() string { return proto.CompactTextString(m) } -func (*ListWaitersResponse) ProtoMessage() {} -func (*ListWaitersResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *ListWaitersResponse) GetWaiters() []*Waiter { - if m != nil { - return m.Waiters - } - return nil -} - -func (m *ListWaitersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the `GetWaiter()` method. -type GetWaiterRequest struct { - // The fully-qualified name of the Waiter resource object to retrieve, in the - // format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetWaiterRequest) Reset() { *m = GetWaiterRequest{} } -func (m *GetWaiterRequest) String() string { return proto.CompactTextString(m) } -func (*GetWaiterRequest) ProtoMessage() {} -func (*GetWaiterRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *GetWaiterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `CreateWaiter()` method. -type CreateWaiterRequest struct { - // The path to the configuration that will own the waiter. - // The configuration must exist beforehand; the path must by in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The Waiter resource to create. - Waiter *Waiter `protobuf:"bytes,2,opt,name=waiter" json:"waiter,omitempty"` - // An optional but recommended unique `request_id`. If the server - // receives two `create()` requests with the same - // `request_id`, then the second request will be ignored and the - // first resource created and stored in the backend is returned. - // Empty `request_id` fields are ignored. - // - // It is responsibility of the client to ensure uniqueness of the - // `request_id` strings. - // - // `request_id` strings are limited to 64 characters. - RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId" json:"request_id,omitempty"` -} - -func (m *CreateWaiterRequest) Reset() { *m = CreateWaiterRequest{} } -func (m *CreateWaiterRequest) String() string { return proto.CompactTextString(m) } -func (*CreateWaiterRequest) ProtoMessage() {} -func (*CreateWaiterRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *CreateWaiterRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateWaiterRequest) GetWaiter() *Waiter { - if m != nil { - return m.Waiter - } - return nil -} - -func (m *CreateWaiterRequest) GetRequestId() string { - if m != nil { - return m.RequestId - } - return "" -} - -// Request for the `DeleteWaiter()` method. -type DeleteWaiterRequest struct { - // The Waiter resource to delete, in the format: - // - // `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteWaiterRequest) Reset() { *m = DeleteWaiterRequest{} } -func (m *DeleteWaiterRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteWaiterRequest) ProtoMessage() {} -func (*DeleteWaiterRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *DeleteWaiterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*ListConfigsRequest)(nil), "google.cloud.runtimeconfig.v1beta1.ListConfigsRequest") - proto.RegisterType((*ListConfigsResponse)(nil), "google.cloud.runtimeconfig.v1beta1.ListConfigsResponse") - proto.RegisterType((*GetConfigRequest)(nil), "google.cloud.runtimeconfig.v1beta1.GetConfigRequest") - proto.RegisterType((*CreateConfigRequest)(nil), "google.cloud.runtimeconfig.v1beta1.CreateConfigRequest") - proto.RegisterType((*UpdateConfigRequest)(nil), "google.cloud.runtimeconfig.v1beta1.UpdateConfigRequest") - proto.RegisterType((*DeleteConfigRequest)(nil), "google.cloud.runtimeconfig.v1beta1.DeleteConfigRequest") - proto.RegisterType((*ListVariablesRequest)(nil), "google.cloud.runtimeconfig.v1beta1.ListVariablesRequest") - proto.RegisterType((*ListVariablesResponse)(nil), "google.cloud.runtimeconfig.v1beta1.ListVariablesResponse") - proto.RegisterType((*WatchVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.WatchVariableRequest") - proto.RegisterType((*GetVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.GetVariableRequest") - proto.RegisterType((*CreateVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.CreateVariableRequest") - proto.RegisterType((*UpdateVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.UpdateVariableRequest") - proto.RegisterType((*DeleteVariableRequest)(nil), "google.cloud.runtimeconfig.v1beta1.DeleteVariableRequest") - proto.RegisterType((*ListWaitersRequest)(nil), "google.cloud.runtimeconfig.v1beta1.ListWaitersRequest") - proto.RegisterType((*ListWaitersResponse)(nil), "google.cloud.runtimeconfig.v1beta1.ListWaitersResponse") - proto.RegisterType((*GetWaiterRequest)(nil), "google.cloud.runtimeconfig.v1beta1.GetWaiterRequest") - proto.RegisterType((*CreateWaiterRequest)(nil), "google.cloud.runtimeconfig.v1beta1.CreateWaiterRequest") - proto.RegisterType((*DeleteWaiterRequest)(nil), "google.cloud.runtimeconfig.v1beta1.DeleteWaiterRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for RuntimeConfigManager service - -type RuntimeConfigManagerClient interface { - // Lists all the RuntimeConfig resources within project. - ListConfigs(ctx context.Context, in *ListConfigsRequest, opts ...grpc.CallOption) (*ListConfigsResponse, error) - // Gets information about a RuntimeConfig resource. - GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) - // Creates a new RuntimeConfig resource. The configuration name must be - // unique within project. - CreateConfig(ctx context.Context, in *CreateConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) - // Updates a RuntimeConfig resource. The configuration must exist beforehand. - UpdateConfig(ctx context.Context, in *UpdateConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) - // Deletes a RuntimeConfig resource. - DeleteConfig(ctx context.Context, in *DeleteConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Lists variables within given a configuration, matching any provided filters. - // This only lists variable names, not the values, unless `return_values` is - // true, in which case only variables that user has IAM permission to - // GetVariable will be returned. - ListVariables(ctx context.Context, in *ListVariablesRequest, opts ...grpc.CallOption) (*ListVariablesResponse, error) - // Gets information about a single variable. - GetVariable(ctx context.Context, in *GetVariableRequest, opts ...grpc.CallOption) (*Variable, error) - // Watches a specific variable and waits for a change in the variable's value. - // When there is a change, this method returns the new value or times out. - // - // If a variable is deleted while being watched, the `variableState` state is - // set to `DELETED` and the method returns the last known variable `value`. - // - // If you set the deadline for watching to a larger value than internal timeout - // (60 seconds), the current variable value is returned and the `variableState` - // will be `VARIABLE_STATE_UNSPECIFIED`. - // - // To learn more about creating a watcher, read the - // [Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable) - // documentation. - WatchVariable(ctx context.Context, in *WatchVariableRequest, opts ...grpc.CallOption) (*Variable, error) - // Creates a variable within the given configuration. You cannot create - // a variable with a name that is a prefix of an existing variable name, or a - // name that has an existing variable name as a prefix. - // - // To learn more about creating a variable, read the - // [Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables) - // documentation. - CreateVariable(ctx context.Context, in *CreateVariableRequest, opts ...grpc.CallOption) (*Variable, error) - // Updates an existing variable with a new value. - UpdateVariable(ctx context.Context, in *UpdateVariableRequest, opts ...grpc.CallOption) (*Variable, error) - // Deletes a variable or multiple variables. - // - // If you specify a variable name, then that variable is deleted. If you - // specify a prefix and `recursive` is true, then all variables with that - // prefix are deleted. You must set a `recursive` to true if you delete - // variables by prefix. - DeleteVariable(ctx context.Context, in *DeleteVariableRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // List waiters within the given configuration. - ListWaiters(ctx context.Context, in *ListWaitersRequest, opts ...grpc.CallOption) (*ListWaitersResponse, error) - // Gets information about a single waiter. - GetWaiter(ctx context.Context, in *GetWaiterRequest, opts ...grpc.CallOption) (*Waiter, error) - // Creates a Waiter resource. This operation returns a long-running Operation - // resource which can be polled for completion. However, a waiter with the - // given name will exist (and can be retrieved) prior to the operation - // completing. If the operation fails, the failed Waiter resource will - // still exist and must be deleted prior to subsequent creation attempts. - CreateWaiter(ctx context.Context, in *CreateWaiterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes the waiter with the specified name. - DeleteWaiter(ctx context.Context, in *DeleteWaiterRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) -} - -type runtimeConfigManagerClient struct { - cc *grpc.ClientConn -} - -func NewRuntimeConfigManagerClient(cc *grpc.ClientConn) RuntimeConfigManagerClient { - return &runtimeConfigManagerClient{cc} -} - -func (c *runtimeConfigManagerClient) ListConfigs(ctx context.Context, in *ListConfigsRequest, opts ...grpc.CallOption) (*ListConfigsResponse, error) { - out := new(ListConfigsResponse) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListConfigs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) GetConfig(ctx context.Context, in *GetConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) { - out := new(RuntimeConfig) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) CreateConfig(ctx context.Context, in *CreateConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) { - out := new(RuntimeConfig) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) UpdateConfig(ctx context.Context, in *UpdateConfigRequest, opts ...grpc.CallOption) (*RuntimeConfig, error) { - out := new(RuntimeConfig) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/UpdateConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) DeleteConfig(ctx context.Context, in *DeleteConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) ListVariables(ctx context.Context, in *ListVariablesRequest, opts ...grpc.CallOption) (*ListVariablesResponse, error) { - out := new(ListVariablesResponse) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListVariables", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) GetVariable(ctx context.Context, in *GetVariableRequest, opts ...grpc.CallOption) (*Variable, error) { - out := new(Variable) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetVariable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) WatchVariable(ctx context.Context, in *WatchVariableRequest, opts ...grpc.CallOption) (*Variable, error) { - out := new(Variable) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/WatchVariable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) CreateVariable(ctx context.Context, in *CreateVariableRequest, opts ...grpc.CallOption) (*Variable, error) { - out := new(Variable) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateVariable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) UpdateVariable(ctx context.Context, in *UpdateVariableRequest, opts ...grpc.CallOption) (*Variable, error) { - out := new(Variable) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/UpdateVariable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) DeleteVariable(ctx context.Context, in *DeleteVariableRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteVariable", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) ListWaiters(ctx context.Context, in *ListWaitersRequest, opts ...grpc.CallOption) (*ListWaitersResponse, error) { - out := new(ListWaitersResponse) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListWaiters", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) GetWaiter(ctx context.Context, in *GetWaiterRequest, opts ...grpc.CallOption) (*Waiter, error) { - out := new(Waiter) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetWaiter", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) CreateWaiter(ctx context.Context, in *CreateWaiterRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateWaiter", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *runtimeConfigManagerClient) DeleteWaiter(ctx context.Context, in *DeleteWaiterRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteWaiter", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for RuntimeConfigManager service - -type RuntimeConfigManagerServer interface { - // Lists all the RuntimeConfig resources within project. - ListConfigs(context.Context, *ListConfigsRequest) (*ListConfigsResponse, error) - // Gets information about a RuntimeConfig resource. - GetConfig(context.Context, *GetConfigRequest) (*RuntimeConfig, error) - // Creates a new RuntimeConfig resource. The configuration name must be - // unique within project. - CreateConfig(context.Context, *CreateConfigRequest) (*RuntimeConfig, error) - // Updates a RuntimeConfig resource. The configuration must exist beforehand. - UpdateConfig(context.Context, *UpdateConfigRequest) (*RuntimeConfig, error) - // Deletes a RuntimeConfig resource. - DeleteConfig(context.Context, *DeleteConfigRequest) (*google_protobuf4.Empty, error) - // Lists variables within given a configuration, matching any provided filters. - // This only lists variable names, not the values, unless `return_values` is - // true, in which case only variables that user has IAM permission to - // GetVariable will be returned. - ListVariables(context.Context, *ListVariablesRequest) (*ListVariablesResponse, error) - // Gets information about a single variable. - GetVariable(context.Context, *GetVariableRequest) (*Variable, error) - // Watches a specific variable and waits for a change in the variable's value. - // When there is a change, this method returns the new value or times out. - // - // If a variable is deleted while being watched, the `variableState` state is - // set to `DELETED` and the method returns the last known variable `value`. - // - // If you set the deadline for watching to a larger value than internal timeout - // (60 seconds), the current variable value is returned and the `variableState` - // will be `VARIABLE_STATE_UNSPECIFIED`. - // - // To learn more about creating a watcher, read the - // [Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable) - // documentation. - WatchVariable(context.Context, *WatchVariableRequest) (*Variable, error) - // Creates a variable within the given configuration. You cannot create - // a variable with a name that is a prefix of an existing variable name, or a - // name that has an existing variable name as a prefix. - // - // To learn more about creating a variable, read the - // [Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables) - // documentation. - CreateVariable(context.Context, *CreateVariableRequest) (*Variable, error) - // Updates an existing variable with a new value. - UpdateVariable(context.Context, *UpdateVariableRequest) (*Variable, error) - // Deletes a variable or multiple variables. - // - // If you specify a variable name, then that variable is deleted. If you - // specify a prefix and `recursive` is true, then all variables with that - // prefix are deleted. You must set a `recursive` to true if you delete - // variables by prefix. - DeleteVariable(context.Context, *DeleteVariableRequest) (*google_protobuf4.Empty, error) - // List waiters within the given configuration. - ListWaiters(context.Context, *ListWaitersRequest) (*ListWaitersResponse, error) - // Gets information about a single waiter. - GetWaiter(context.Context, *GetWaiterRequest) (*Waiter, error) - // Creates a Waiter resource. This operation returns a long-running Operation - // resource which can be polled for completion. However, a waiter with the - // given name will exist (and can be retrieved) prior to the operation - // completing. If the operation fails, the failed Waiter resource will - // still exist and must be deleted prior to subsequent creation attempts. - CreateWaiter(context.Context, *CreateWaiterRequest) (*google_longrunning.Operation, error) - // Deletes the waiter with the specified name. - DeleteWaiter(context.Context, *DeleteWaiterRequest) (*google_protobuf4.Empty, error) -} - -func RegisterRuntimeConfigManagerServer(s *grpc.Server, srv RuntimeConfigManagerServer) { - s.RegisterService(&_RuntimeConfigManager_serviceDesc, srv) -} - -func _RuntimeConfigManager_ListConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListConfigsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).ListConfigs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListConfigs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).ListConfigs(ctx, req.(*ListConfigsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).GetConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).GetConfig(ctx, req.(*GetConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_CreateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).CreateConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).CreateConfig(ctx, req.(*CreateConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_UpdateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).UpdateConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/UpdateConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).UpdateConfig(ctx, req.(*UpdateConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_DeleteConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).DeleteConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).DeleteConfig(ctx, req.(*DeleteConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_ListVariables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListVariablesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).ListVariables(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListVariables", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).ListVariables(ctx, req.(*ListVariablesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_GetVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVariableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).GetVariable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetVariable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).GetVariable(ctx, req.(*GetVariableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_WatchVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WatchVariableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).WatchVariable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/WatchVariable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).WatchVariable(ctx, req.(*WatchVariableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_CreateVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateVariableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).CreateVariable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateVariable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).CreateVariable(ctx, req.(*CreateVariableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_UpdateVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateVariableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).UpdateVariable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/UpdateVariable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).UpdateVariable(ctx, req.(*UpdateVariableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_DeleteVariable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteVariableRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).DeleteVariable(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteVariable", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).DeleteVariable(ctx, req.(*DeleteVariableRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_ListWaiters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListWaitersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).ListWaiters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/ListWaiters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).ListWaiters(ctx, req.(*ListWaitersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_GetWaiter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetWaiterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).GetWaiter(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/GetWaiter", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).GetWaiter(ctx, req.(*GetWaiterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_CreateWaiter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateWaiterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).CreateWaiter(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/CreateWaiter", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).CreateWaiter(ctx, req.(*CreateWaiterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RuntimeConfigManager_DeleteWaiter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteWaiterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeConfigManagerServer).DeleteWaiter(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager/DeleteWaiter", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeConfigManagerServer).DeleteWaiter(ctx, req.(*DeleteWaiterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _RuntimeConfigManager_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.runtimeconfig.v1beta1.RuntimeConfigManager", - HandlerType: (*RuntimeConfigManagerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListConfigs", - Handler: _RuntimeConfigManager_ListConfigs_Handler, - }, - { - MethodName: "GetConfig", - Handler: _RuntimeConfigManager_GetConfig_Handler, - }, - { - MethodName: "CreateConfig", - Handler: _RuntimeConfigManager_CreateConfig_Handler, - }, - { - MethodName: "UpdateConfig", - Handler: _RuntimeConfigManager_UpdateConfig_Handler, - }, - { - MethodName: "DeleteConfig", - Handler: _RuntimeConfigManager_DeleteConfig_Handler, - }, - { - MethodName: "ListVariables", - Handler: _RuntimeConfigManager_ListVariables_Handler, - }, - { - MethodName: "GetVariable", - Handler: _RuntimeConfigManager_GetVariable_Handler, - }, - { - MethodName: "WatchVariable", - Handler: _RuntimeConfigManager_WatchVariable_Handler, - }, - { - MethodName: "CreateVariable", - Handler: _RuntimeConfigManager_CreateVariable_Handler, - }, - { - MethodName: "UpdateVariable", - Handler: _RuntimeConfigManager_UpdateVariable_Handler, - }, - { - MethodName: "DeleteVariable", - Handler: _RuntimeConfigManager_DeleteVariable_Handler, - }, - { - MethodName: "ListWaiters", - Handler: _RuntimeConfigManager_ListWaiters_Handler, - }, - { - MethodName: "GetWaiter", - Handler: _RuntimeConfigManager_GetWaiter_Handler, - }, - { - MethodName: "CreateWaiter", - Handler: _RuntimeConfigManager_CreateWaiter_Handler, - }, - { - MethodName: "DeleteWaiter", - Handler: _RuntimeConfigManager_DeleteWaiter_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto", -} - -func init() { - proto.RegisterFile("google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 1158 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x98, 0x4b, 0x6f, 0xdd, 0x44, - 0x14, 0xc7, 0x35, 0x49, 0x9b, 0xe6, 0x9e, 0x3c, 0x40, 0x93, 0x87, 0x22, 0xb7, 0x15, 0x91, 0x8b, - 0xa2, 0x70, 0x55, 0xd9, 0x4d, 0x5a, 0xa5, 0x49, 0xa0, 0x2c, 0x92, 0xa2, 0x10, 0x1e, 0x6a, 0x65, - 0x42, 0x2a, 0xa1, 0x48, 0xd1, 0xe4, 0x66, 0xe2, 0x18, 0x6e, 0xc6, 0xc6, 0x1e, 0x27, 0x50, 0x94, - 0x0d, 0xec, 0x40, 0x48, 0x48, 0x2c, 0xca, 0x8a, 0x05, 0x12, 0x20, 0x21, 0x84, 0x58, 0xb1, 0x41, - 0x74, 0xc7, 0x86, 0x2d, 0x12, 0x9f, 0x80, 0x0f, 0x82, 0x3c, 0x0f, 0x5f, 0xfb, 0xe6, 0x3e, 0xc6, - 0x21, 0xdd, 0x25, 0xe3, 0xf3, 0xf8, 0xcd, 0x99, 0x33, 0xf3, 0x3f, 0xba, 0xb0, 0xe4, 0x87, 0xa1, - 0xdf, 0xa4, 0x6e, 0xa3, 0x19, 0xa6, 0xfb, 0x6e, 0x9c, 0x32, 0x1e, 0x1c, 0xd1, 0x46, 0xc8, 0x0e, - 0x02, 0xdf, 0x3d, 0x5e, 0xd8, 0xa3, 0x9c, 0x2c, 0x94, 0x57, 0x9d, 0x28, 0x0e, 0x79, 0x88, 0x6d, - 0xe9, 0xe7, 0x08, 0x3f, 0xa7, 0x6c, 0xa1, 0xfc, 0xac, 0x6b, 0x2a, 0x36, 0x89, 0x02, 0x97, 0x30, - 0x16, 0x72, 0xc2, 0x83, 0x90, 0x25, 0x32, 0x82, 0xb5, 0x68, 0x92, 0x99, 0x26, 0x61, 0x1a, 0x37, - 0xa8, 0xf6, 0xb9, 0xa1, 0x7c, 0x9a, 0x21, 0xf3, 0xe3, 0x94, 0xb1, 0x80, 0xf9, 0x6e, 0x18, 0xd1, - 0xb8, 0x14, 0xf8, 0xaa, 0x32, 0x12, 0xff, 0xed, 0xa5, 0x07, 0x2e, 0x3d, 0x8a, 0xf8, 0xc7, 0xea, - 0xe3, 0x0b, 0xed, 0x1f, 0xb3, 0xac, 0x09, 0x27, 0x47, 0x91, 0x34, 0xb0, 0x0f, 0x01, 0xbf, 0x15, - 0x24, 0x7c, 0x5d, 0x80, 0x24, 0x1e, 0xfd, 0x30, 0xa5, 0x09, 0xc7, 0xd3, 0x30, 0x14, 0x91, 0x98, - 0x32, 0x3e, 0x83, 0x66, 0xd1, 0x7c, 0xcd, 0x53, 0xff, 0xe1, 0xab, 0x50, 0x8b, 0x88, 0x4f, 0x77, - 0x93, 0xe0, 0x31, 0x9d, 0x19, 0x98, 0x45, 0xf3, 0x97, 0xbd, 0xe1, 0x6c, 0xe1, 0x9d, 0xe0, 0x31, - 0xc5, 0xd7, 0x01, 0xc4, 0x47, 0x1e, 0x7e, 0x40, 0xd9, 0xcc, 0xa0, 0x70, 0x14, 0xe6, 0x5b, 0xd9, - 0x82, 0xfd, 0x39, 0x82, 0x89, 0x52, 0xaa, 0x24, 0x0a, 0x59, 0x42, 0xf1, 0x9b, 0x70, 0x45, 0x96, - 0x21, 0x99, 0x41, 0xb3, 0x83, 0xf3, 0x23, 0x8b, 0x0b, 0x4e, 0xff, 0x62, 0x3b, 0x9e, 0x5c, 0x95, - 0xc1, 0x3c, 0x1d, 0x01, 0xcf, 0xc1, 0x73, 0x8c, 0x7e, 0xc4, 0x77, 0x0b, 0x20, 0x03, 0x02, 0x64, - 0x2c, 0x5b, 0x7e, 0x98, 0xc3, 0xcc, 0xc1, 0xf3, 0x1b, 0x54, 0xa1, 0xe8, 0x4d, 0x63, 0xb8, 0xc4, - 0xc8, 0x11, 0x55, 0x0e, 0xe2, 0x6f, 0xfb, 0x09, 0x82, 0x89, 0xf5, 0x98, 0x12, 0x4e, 0xcb, 0xb6, - 0xdd, 0x0a, 0xb4, 0x09, 0x43, 0x12, 0x45, 0x44, 0x39, 0xd7, 0x5e, 0x54, 0x80, 0xac, 0x9c, 0xb1, - 0xcc, 0xb6, 0x1b, 0xec, 0xeb, 0x72, 0xaa, 0x95, 0xcd, 0x7d, 0x9b, 0xc3, 0xc4, 0xbb, 0xd1, 0xfe, - 0x19, 0x30, 0xbd, 0x09, 0xd4, 0xda, 0xc4, 0x05, 0x42, 0xd9, 0x2f, 0xc1, 0xc4, 0x7d, 0xda, 0xa4, - 0x06, 0x59, 0xed, 0x1f, 0x11, 0x4c, 0x66, 0xe7, 0xbd, 0x4d, 0xe2, 0x80, 0xec, 0x35, 0x69, 0xdf, - 0xe6, 0x9a, 0x86, 0xa1, 0x83, 0xa0, 0xc9, 0x69, 0xac, 0x4e, 0x40, 0xfd, 0x57, 0x6e, 0xba, 0xc1, - 0x9e, 0x4d, 0x77, 0xa9, 0xad, 0xe9, 0xf0, 0x0d, 0x18, 0x8b, 0x29, 0x4f, 0x63, 0xb6, 0x7b, 0x4c, - 0x9a, 0x29, 0x4d, 0x66, 0x2e, 0xcf, 0xa2, 0xf9, 0x61, 0x6f, 0x54, 0x2e, 0x6e, 0x8b, 0x35, 0xfb, - 0x0b, 0x04, 0x53, 0x6d, 0xa4, 0xaa, 0x37, 0xdf, 0x80, 0xda, 0xb1, 0x5e, 0x54, 0xdd, 0x79, 0xd3, - 0xa4, 0x78, 0x3a, 0x92, 0xd7, 0x72, 0x37, 0x6e, 0x4d, 0x0a, 0x93, 0x8f, 0x08, 0x6f, 0x1c, 0xe6, - 0x31, 0x7a, 0x9c, 0xec, 0x0a, 0x00, 0xa3, 0x27, 0x34, 0xde, 0xe5, 0x87, 0x44, 0xee, 0x7e, 0x64, - 0xd1, 0xd2, 0x80, 0xfa, 0xce, 0x3b, 0x5b, 0xfa, 0xce, 0x7b, 0x35, 0x61, 0xbd, 0x75, 0x48, 0x98, - 0x3d, 0x0f, 0x78, 0x83, 0x72, 0x83, 0x24, 0xf6, 0x37, 0x08, 0xa6, 0xe4, 0x1d, 0x68, 0xb7, 0xee, - 0x76, 0x92, 0xaf, 0xc3, 0xb0, 0xde, 0xb7, 0x6a, 0xb9, 0x6a, 0x55, 0xcb, 0xbd, 0xfb, 0x5d, 0x82, - 0x14, 0xa6, 0xe4, 0x25, 0x30, 0x29, 0xd6, 0x85, 0x51, 0xd9, 0x9b, 0x30, 0x25, 0x6f, 0x81, 0x49, - 0xda, 0x6b, 0x50, 0x8b, 0x69, 0x23, 0x8d, 0x93, 0xe0, 0x58, 0xe6, 0x1d, 0xf6, 0x5a, 0x0b, 0xfa, - 0xfd, 0x7d, 0x44, 0x02, 0x4e, 0xe3, 0x67, 0xfa, 0xfe, 0x7e, 0xa6, 0xde, 0xdf, 0x3c, 0x95, 0xea, - 0xf1, 0xfb, 0x70, 0xe5, 0x44, 0x2e, 0xa9, 0x0e, 0xaf, 0x9b, 0x54, 0x45, 0x46, 0xf1, 0xb4, 0x6b, - 0xc5, 0x87, 0x57, 0x79, 0xf7, 0x68, 0xba, 0xaf, 0xf2, 0x87, 0xb7, 0x6c, 0xdb, 0xad, 0x32, 0x6b, - 0x30, 0x24, 0x51, 0xd4, 0xd1, 0x56, 0xd9, 0x84, 0xf2, 0xec, 0xd7, 0x6c, 0xf9, 0xdb, 0xd7, 0x97, - 0x7e, 0xf1, 0x9f, 0x49, 0x98, 0x2c, 0x3d, 0xa0, 0x6f, 0x13, 0x46, 0x7c, 0x1a, 0xe3, 0x9f, 0x11, - 0x8c, 0x14, 0x44, 0x10, 0x2f, 0x99, 0x60, 0x9e, 0x15, 0x68, 0xeb, 0x6e, 0x65, 0x3f, 0x79, 0xda, - 0xf6, 0xcd, 0x4f, 0xff, 0xfe, 0xf7, 0xeb, 0x81, 0x39, 0xfc, 0x62, 0x3e, 0x74, 0x7c, 0x22, 0x2b, - 0x78, 0x2f, 0x8a, 0xc3, 0xf7, 0x69, 0x83, 0x27, 0x6e, 0xfd, 0xd4, 0xd5, 0x72, 0xfa, 0x1d, 0x82, - 0x5a, 0xae, 0x93, 0xf8, 0x8e, 0x49, 0xd2, 0x76, 0x59, 0xb5, 0xaa, 0xab, 0x4d, 0x27, 0xc8, 0xac, - 0xac, 0x05, 0x44, 0x4d, 0xe8, 0xd6, 0x4f, 0xf1, 0xaf, 0x08, 0x46, 0x8b, 0x1a, 0x8d, 0x8d, 0x8a, - 0xd3, 0x41, 0xd5, 0xcf, 0x83, 0x7a, 0x47, 0xa0, 0x3a, 0xb6, 0x51, 0x3d, 0x57, 0xb5, 0xb6, 0x67, - 0xc8, 0x45, 0xf5, 0x36, 0x43, 0xee, 0xa0, 0xf7, 0xff, 0x03, 0xd9, 0x32, 0xaa, 0x6e, 0x8e, 0xfc, - 0x25, 0x82, 0xd1, 0xa2, 0xf4, 0x9b, 0x21, 0x77, 0x18, 0x16, 0xac, 0xe9, 0x33, 0x02, 0xf5, 0x5a, - 0x36, 0xb1, 0xea, 0x53, 0xaf, 0x9b, 0x9d, 0xfa, 0x53, 0x04, 0x63, 0x25, 0xd1, 0xc6, 0xcb, 0xa6, - 0x77, 0xa2, 0x7d, 0x22, 0xb1, 0x56, 0xce, 0xe1, 0xa9, 0xee, 0xd3, 0xb2, 0x80, 0x5e, 0xc4, 0xb7, - 0x7a, 0x9c, 0x7f, 0x01, 0xdb, 0x6d, 0xcd, 0x03, 0xbf, 0x20, 0x18, 0x29, 0x28, 0xb0, 0xd9, 0x53, - 0x70, 0x56, 0xb2, 0xad, 0x4a, 0x22, 0x66, 0xaf, 0x08, 0xde, 0xdb, 0x78, 0xc1, 0xa0, 0xc8, 0x2d, - 0x58, 0xb7, 0x5e, 0x3f, 0xc5, 0xbf, 0x23, 0x18, 0x2b, 0x4d, 0x26, 0x66, 0x15, 0xef, 0x34, 0xcc, - 0x54, 0x84, 0x5e, 0x13, 0xd0, 0xaf, 0xd8, 0x77, 0x2b, 0x43, 0xaf, 0x9e, 0x64, 0xd9, 0x57, 0x51, - 0x1d, 0xff, 0x81, 0x60, 0xbc, 0x3c, 0xc5, 0xe0, 0x15, 0xf3, 0x77, 0xe2, 0x62, 0xf8, 0x2b, 0x37, - 0xc9, 0x6a, 0x6b, 0x12, 0x7a, 0x8a, 0x60, 0xbc, 0x3c, 0xeb, 0x98, 0xf1, 0x77, 0x9c, 0x8f, 0x2a, - 0xf2, 0xaf, 0x0b, 0xfe, 0x7b, 0x56, 0xf5, 0xa6, 0x29, 0x6c, 0xe0, 0x5b, 0x04, 0xe3, 0xe5, 0xa9, - 0xc9, 0x6c, 0x03, 0x1d, 0x27, 0xad, 0xae, 0x8f, 0x88, 0xea, 0xef, 0xfa, 0x39, 0xfa, 0xfb, 0x37, - 0xa5, 0xcd, 0x6a, 0x40, 0x32, 0xd7, 0xe6, 0xf2, 0xf0, 0x66, 0xae, 0xcd, 0x6d, 0x93, 0x98, 0xbd, - 0x24, 0xd8, 0x6f, 0x61, 0xc7, 0xb0, 0x4d, 0xf4, 0xec, 0xf5, 0xbd, 0x54, 0x69, 0x19, 0xce, 0x58, - 0xa5, 0x4b, 0x53, 0x8c, 0x55, 0x61, 0x5e, 0xea, 0xc4, 0xd9, 0xbd, 0xc6, 0x0a, 0x32, 0x7b, 0xb2, - 0x7f, 0xc8, 0x85, 0x5a, 0xa1, 0x56, 0x10, 0xea, 0x32, 0xed, 0x75, 0xed, 0x58, 0xf8, 0x65, 0xc4, - 0x79, 0xa0, 0x7f, 0x19, 0xb1, 0x5f, 0x15, 0x80, 0xcb, 0x76, 0xc5, 0x42, 0xae, 0xea, 0x41, 0xf0, - 0x49, 0xae, 0x75, 0x55, 0x40, 0x3b, 0x0c, 0x87, 0x5d, 0xdb, 0x54, 0x95, 0xb0, 0x5e, 0xb1, 0x84, - 0x6b, 0x7f, 0x22, 0x98, 0x6b, 0x84, 0x47, 0x06, 0x38, 0x0f, 0xd1, 0x7b, 0x0f, 0x94, 0x95, 0x1f, - 0x36, 0x09, 0xf3, 0x9d, 0x30, 0xf6, 0x5d, 0x9f, 0x32, 0x41, 0xe2, 0xca, 0x4f, 0x24, 0x0a, 0x92, - 0x5e, 0xbf, 0x48, 0xbd, 0x5c, 0x5a, 0xfd, 0x69, 0xc0, 0xde, 0x90, 0x11, 0xd7, 0x45, 0xde, 0xd2, - 0x58, 0xe1, 0x6c, 0x2f, 0xac, 0x65, 0x2e, 0x7f, 0x69, 0xa3, 0x1d, 0x61, 0xb4, 0x53, 0x32, 0xda, - 0xd9, 0x96, 0x71, 0xf7, 0x86, 0x04, 0xc5, 0xed, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x36, - 0x17, 0x5a, 0x90, 0x13, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1/cloud_speech.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1/cloud_speech.pb.go deleted file mode 100644 index 31c6c4e5..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1/cloud_speech.pb.go +++ /dev/null @@ -1,1254 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/speech/v1/cloud_speech.proto - -/* -Package speech is a generated protocol buffer package. - -It is generated from these files: - google/cloud/speech/v1/cloud_speech.proto - -It has these top-level messages: - RecognizeRequest - LongRunningRecognizeRequest - StreamingRecognizeRequest - StreamingRecognitionConfig - RecognitionConfig - SpeechContext - RecognitionAudio - RecognizeResponse - LongRunningRecognizeResponse - LongRunningRecognizeMetadata - StreamingRecognizeResponse - StreamingRecognitionResult - SpeechRecognitionResult - SpeechRecognitionAlternative - WordInfo -*/ -package speech - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/any" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Audio encoding of the data sent in the audio message. All encodings support -// only 1 channel (mono) audio. Only `FLAC` and `WAV` include a header that -// describes the bytes of audio that follow the header. The other encodings -// are raw audio bytes with no header. -// -// For best results, the audio source should be captured and transmitted using -// a lossless encoding (`FLAC` or `LINEAR16`). Recognition accuracy may be -// reduced if lossy codecs, which include the other codecs listed in -// this section, are used to capture or transmit the audio, particularly if -// background noise is present. -type RecognitionConfig_AudioEncoding int32 - -const ( - // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]. - RecognitionConfig_ENCODING_UNSPECIFIED RecognitionConfig_AudioEncoding = 0 - // Uncompressed 16-bit signed little-endian samples (Linear PCM). - RecognitionConfig_LINEAR16 RecognitionConfig_AudioEncoding = 1 - // [`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio - // Codec) is the recommended encoding because it is - // lossless--therefore recognition is not compromised--and - // requires only about half the bandwidth of `LINEAR16`. `FLAC` stream - // encoding supports 16-bit and 24-bit samples, however, not all fields in - // `STREAMINFO` are supported. - RecognitionConfig_FLAC RecognitionConfig_AudioEncoding = 2 - // 8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law. - RecognitionConfig_MULAW RecognitionConfig_AudioEncoding = 3 - // Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000. - RecognitionConfig_AMR RecognitionConfig_AudioEncoding = 4 - // Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000. - RecognitionConfig_AMR_WB RecognitionConfig_AudioEncoding = 5 - // Opus encoded audio frames in Ogg container - // ([OggOpus](https://wiki.xiph.org/OggOpus)). - // `sample_rate_hertz` must be 16000. - RecognitionConfig_OGG_OPUS RecognitionConfig_AudioEncoding = 6 - // Although the use of lossy encodings is not recommended, if a very low - // bitrate encoding is required, `OGG_OPUS` is highly preferred over - // Speex encoding. The [Speex](https://speex.org/) encoding supported by - // Cloud Speech API has a header byte in each block, as in MIME type - // `audio/x-speex-with-header-byte`. - // It is a variant of the RTP Speex encoding defined in - // [RFC 5574](https://tools.ietf.org/html/rfc5574). - // The stream is a sequence of blocks, one block per RTP packet. Each block - // starts with a byte containing the length of the block, in bytes, followed - // by one or more frames of Speex data, padded to an integral number of - // bytes (octets) as specified in RFC 5574. In other words, each RTP header - // is replaced with a single byte containing the block length. Only Speex - // wideband is supported. `sample_rate_hertz` must be 16000. - RecognitionConfig_SPEEX_WITH_HEADER_BYTE RecognitionConfig_AudioEncoding = 7 -) - -var RecognitionConfig_AudioEncoding_name = map[int32]string{ - 0: "ENCODING_UNSPECIFIED", - 1: "LINEAR16", - 2: "FLAC", - 3: "MULAW", - 4: "AMR", - 5: "AMR_WB", - 6: "OGG_OPUS", - 7: "SPEEX_WITH_HEADER_BYTE", -} -var RecognitionConfig_AudioEncoding_value = map[string]int32{ - "ENCODING_UNSPECIFIED": 0, - "LINEAR16": 1, - "FLAC": 2, - "MULAW": 3, - "AMR": 4, - "AMR_WB": 5, - "OGG_OPUS": 6, - "SPEEX_WITH_HEADER_BYTE": 7, -} - -func (x RecognitionConfig_AudioEncoding) String() string { - return proto.EnumName(RecognitionConfig_AudioEncoding_name, int32(x)) -} -func (RecognitionConfig_AudioEncoding) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{4, 0} -} - -// Indicates the type of speech event. -type StreamingRecognizeResponse_SpeechEventType int32 - -const ( - // No speech event specified. - StreamingRecognizeResponse_SPEECH_EVENT_UNSPECIFIED StreamingRecognizeResponse_SpeechEventType = 0 - // This event indicates that the server has detected the end of the user's - // speech utterance and expects no additional speech. Therefore, the server - // will not process additional audio (although it may subsequently return - // additional results). The client should stop sending additional audio - // data, half-close the gRPC connection, and wait for any additional results - // until the server closes the gRPC connection. This event is only sent if - // `single_utterance` was set to `true`, and is not used otherwise. - StreamingRecognizeResponse_END_OF_SINGLE_UTTERANCE StreamingRecognizeResponse_SpeechEventType = 1 -) - -var StreamingRecognizeResponse_SpeechEventType_name = map[int32]string{ - 0: "SPEECH_EVENT_UNSPECIFIED", - 1: "END_OF_SINGLE_UTTERANCE", -} -var StreamingRecognizeResponse_SpeechEventType_value = map[string]int32{ - "SPEECH_EVENT_UNSPECIFIED": 0, - "END_OF_SINGLE_UTTERANCE": 1, -} - -func (x StreamingRecognizeResponse_SpeechEventType) String() string { - return proto.EnumName(StreamingRecognizeResponse_SpeechEventType_name, int32(x)) -} -func (StreamingRecognizeResponse_SpeechEventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{10, 0} -} - -// The top-level message sent by the client for the `Recognize` method. -type RecognizeRequest struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Required* The audio data to be recognized. - Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"` -} - -func (m *RecognizeRequest) Reset() { *m = RecognizeRequest{} } -func (m *RecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*RecognizeRequest) ProtoMessage() {} -func (*RecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *RecognizeRequest) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *RecognizeRequest) GetAudio() *RecognitionAudio { - if m != nil { - return m.Audio - } - return nil -} - -// The top-level message sent by the client for the `LongRunningRecognize` -// method. -type LongRunningRecognizeRequest struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Required* The audio data to be recognized. - Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"` -} - -func (m *LongRunningRecognizeRequest) Reset() { *m = LongRunningRecognizeRequest{} } -func (m *LongRunningRecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*LongRunningRecognizeRequest) ProtoMessage() {} -func (*LongRunningRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *LongRunningRecognizeRequest) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *LongRunningRecognizeRequest) GetAudio() *RecognitionAudio { - if m != nil { - return m.Audio - } - return nil -} - -// The top-level message sent by the client for the `StreamingRecognize` method. -// Multiple `StreamingRecognizeRequest` messages are sent. The first message -// must contain a `streaming_config` message and must not contain `audio` data. -// All subsequent messages must contain `audio` data and must not contain a -// `streaming_config` message. -type StreamingRecognizeRequest struct { - // The streaming request, which is either a streaming config or audio content. - // - // Types that are valid to be assigned to StreamingRequest: - // *StreamingRecognizeRequest_StreamingConfig - // *StreamingRecognizeRequest_AudioContent - StreamingRequest isStreamingRecognizeRequest_StreamingRequest `protobuf_oneof:"streaming_request"` -} - -func (m *StreamingRecognizeRequest) Reset() { *m = StreamingRecognizeRequest{} } -func (m *StreamingRecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognizeRequest) ProtoMessage() {} -func (*StreamingRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isStreamingRecognizeRequest_StreamingRequest interface { - isStreamingRecognizeRequest_StreamingRequest() -} - -type StreamingRecognizeRequest_StreamingConfig struct { - StreamingConfig *StreamingRecognitionConfig `protobuf:"bytes,1,opt,name=streaming_config,json=streamingConfig,oneof"` -} -type StreamingRecognizeRequest_AudioContent struct { - AudioContent []byte `protobuf:"bytes,2,opt,name=audio_content,json=audioContent,proto3,oneof"` -} - -func (*StreamingRecognizeRequest_StreamingConfig) isStreamingRecognizeRequest_StreamingRequest() {} -func (*StreamingRecognizeRequest_AudioContent) isStreamingRecognizeRequest_StreamingRequest() {} - -func (m *StreamingRecognizeRequest) GetStreamingRequest() isStreamingRecognizeRequest_StreamingRequest { - if m != nil { - return m.StreamingRequest - } - return nil -} - -func (m *StreamingRecognizeRequest) GetStreamingConfig() *StreamingRecognitionConfig { - if x, ok := m.GetStreamingRequest().(*StreamingRecognizeRequest_StreamingConfig); ok { - return x.StreamingConfig - } - return nil -} - -func (m *StreamingRecognizeRequest) GetAudioContent() []byte { - if x, ok := m.GetStreamingRequest().(*StreamingRecognizeRequest_AudioContent); ok { - return x.AudioContent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*StreamingRecognizeRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _StreamingRecognizeRequest_OneofMarshaler, _StreamingRecognizeRequest_OneofUnmarshaler, _StreamingRecognizeRequest_OneofSizer, []interface{}{ - (*StreamingRecognizeRequest_StreamingConfig)(nil), - (*StreamingRecognizeRequest_AudioContent)(nil), - } -} - -func _StreamingRecognizeRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*StreamingRecognizeRequest) - // streaming_request - switch x := m.StreamingRequest.(type) { - case *StreamingRecognizeRequest_StreamingConfig: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StreamingConfig); err != nil { - return err - } - case *StreamingRecognizeRequest_AudioContent: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AudioContent) - case nil: - default: - return fmt.Errorf("StreamingRecognizeRequest.StreamingRequest has unexpected type %T", x) - } - return nil -} - -func _StreamingRecognizeRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*StreamingRecognizeRequest) - switch tag { - case 1: // streaming_request.streaming_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StreamingRecognitionConfig) - err := b.DecodeMessage(msg) - m.StreamingRequest = &StreamingRecognizeRequest_StreamingConfig{msg} - return true, err - case 2: // streaming_request.audio_content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StreamingRequest = &StreamingRecognizeRequest_AudioContent{x} - return true, err - default: - return false, nil - } -} - -func _StreamingRecognizeRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*StreamingRecognizeRequest) - // streaming_request - switch x := m.StreamingRequest.(type) { - case *StreamingRecognizeRequest_StreamingConfig: - s := proto.Size(x.StreamingConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StreamingRecognizeRequest_AudioContent: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AudioContent))) - n += len(x.AudioContent) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Provides information to the recognizer that specifies how to process the -// request. -type StreamingRecognitionConfig struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Optional* If `false` or omitted, the recognizer will perform continuous - // recognition (continuing to wait for and process audio even if the user - // pauses speaking) until the client closes the input stream (gRPC API) or - // until the maximum time limit has been reached. May return multiple - // `StreamingRecognitionResult`s with the `is_final` flag set to `true`. - // - // If `true`, the recognizer will detect a single spoken utterance. When it - // detects that the user has paused or stopped speaking, it will return an - // `END_OF_SINGLE_UTTERANCE` event and cease recognition. It will return no - // more than one `StreamingRecognitionResult` with the `is_final` flag set to - // `true`. - SingleUtterance bool `protobuf:"varint,2,opt,name=single_utterance,json=singleUtterance" json:"single_utterance,omitempty"` - // *Optional* If `true`, interim results (tentative hypotheses) may be - // returned as they become available (these interim results are indicated with - // the `is_final=false` flag). - // If `false` or omitted, only `is_final=true` result(s) are returned. - InterimResults bool `protobuf:"varint,3,opt,name=interim_results,json=interimResults" json:"interim_results,omitempty"` -} - -func (m *StreamingRecognitionConfig) Reset() { *m = StreamingRecognitionConfig{} } -func (m *StreamingRecognitionConfig) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognitionConfig) ProtoMessage() {} -func (*StreamingRecognitionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *StreamingRecognitionConfig) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *StreamingRecognitionConfig) GetSingleUtterance() bool { - if m != nil { - return m.SingleUtterance - } - return false -} - -func (m *StreamingRecognitionConfig) GetInterimResults() bool { - if m != nil { - return m.InterimResults - } - return false -} - -// Provides information to the recognizer that specifies how to process the -// request. -type RecognitionConfig struct { - // *Required* Encoding of audio data sent in all `RecognitionAudio` messages. - Encoding RecognitionConfig_AudioEncoding `protobuf:"varint,1,opt,name=encoding,enum=google.cloud.speech.v1.RecognitionConfig_AudioEncoding" json:"encoding,omitempty"` - // *Required* Sample rate in Hertz of the audio data sent in all - // `RecognitionAudio` messages. Valid values are: 8000-48000. - // 16000 is optimal. For best results, set the sampling rate of the audio - // source to 16000 Hz. If that's not possible, use the native sample rate of - // the audio source (instead of re-sampling). - SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"` - // *Required* The language of the supplied audio as a - // [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. - // Example: "en-US". - // See [Language Support](https://cloud.google.com/speech/docs/languages) - // for a list of the currently supported language codes. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // *Optional* Maximum number of recognition hypotheses to be returned. - // Specifically, the maximum number of `SpeechRecognitionAlternative` messages - // within each `SpeechRecognitionResult`. - // The server may return fewer than `max_alternatives`. - // Valid values are `0`-`30`. A value of `0` or `1` will return a maximum of - // one. If omitted, will return a maximum of one. - MaxAlternatives int32 `protobuf:"varint,4,opt,name=max_alternatives,json=maxAlternatives" json:"max_alternatives,omitempty"` - // *Optional* If set to `true`, the server will attempt to filter out - // profanities, replacing all but the initial character in each filtered word - // with asterisks, e.g. "f***". If set to `false` or omitted, profanities - // won't be filtered out. - ProfanityFilter bool `protobuf:"varint,5,opt,name=profanity_filter,json=profanityFilter" json:"profanity_filter,omitempty"` - // *Optional* A means to provide context to assist the speech recognition. - SpeechContexts []*SpeechContext `protobuf:"bytes,6,rep,name=speech_contexts,json=speechContexts" json:"speech_contexts,omitempty"` - // *Optional* If `true`, the top result includes a list of words and - // the start and end time offsets (timestamps) for those words. If - // `false`, no word-level time offset information is returned. The default is - // `false`. - EnableWordTimeOffsets bool `protobuf:"varint,8,opt,name=enable_word_time_offsets,json=enableWordTimeOffsets" json:"enable_word_time_offsets,omitempty"` -} - -func (m *RecognitionConfig) Reset() { *m = RecognitionConfig{} } -func (m *RecognitionConfig) String() string { return proto.CompactTextString(m) } -func (*RecognitionConfig) ProtoMessage() {} -func (*RecognitionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *RecognitionConfig) GetEncoding() RecognitionConfig_AudioEncoding { - if m != nil { - return m.Encoding - } - return RecognitionConfig_ENCODING_UNSPECIFIED -} - -func (m *RecognitionConfig) GetSampleRateHertz() int32 { - if m != nil { - return m.SampleRateHertz - } - return 0 -} - -func (m *RecognitionConfig) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *RecognitionConfig) GetMaxAlternatives() int32 { - if m != nil { - return m.MaxAlternatives - } - return 0 -} - -func (m *RecognitionConfig) GetProfanityFilter() bool { - if m != nil { - return m.ProfanityFilter - } - return false -} - -func (m *RecognitionConfig) GetSpeechContexts() []*SpeechContext { - if m != nil { - return m.SpeechContexts - } - return nil -} - -func (m *RecognitionConfig) GetEnableWordTimeOffsets() bool { - if m != nil { - return m.EnableWordTimeOffsets - } - return false -} - -// Provides "hints" to the speech recognizer to favor specific words and phrases -// in the results. -type SpeechContext struct { - // *Optional* A list of strings containing words and phrases "hints" so that - // the speech recognition is more likely to recognize them. This can be used - // to improve the accuracy for specific words and phrases, for example, if - // specific commands are typically spoken by the user. This can also be used - // to add additional words to the vocabulary of the recognizer. See - // [usage limits](https://cloud.google.com/speech/limits#content). - Phrases []string `protobuf:"bytes,1,rep,name=phrases" json:"phrases,omitempty"` -} - -func (m *SpeechContext) Reset() { *m = SpeechContext{} } -func (m *SpeechContext) String() string { return proto.CompactTextString(m) } -func (*SpeechContext) ProtoMessage() {} -func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *SpeechContext) GetPhrases() []string { - if m != nil { - return m.Phrases - } - return nil -} - -// Contains audio data in the encoding specified in the `RecognitionConfig`. -// Either `content` or `uri` must be supplied. Supplying both or neither -// returns [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]. See -// [audio limits](https://cloud.google.com/speech/limits#content). -type RecognitionAudio struct { - // The audio source, which is either inline content or a Google Cloud - // Storage uri. - // - // Types that are valid to be assigned to AudioSource: - // *RecognitionAudio_Content - // *RecognitionAudio_Uri - AudioSource isRecognitionAudio_AudioSource `protobuf_oneof:"audio_source"` -} - -func (m *RecognitionAudio) Reset() { *m = RecognitionAudio{} } -func (m *RecognitionAudio) String() string { return proto.CompactTextString(m) } -func (*RecognitionAudio) ProtoMessage() {} -func (*RecognitionAudio) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -type isRecognitionAudio_AudioSource interface { - isRecognitionAudio_AudioSource() -} - -type RecognitionAudio_Content struct { - Content []byte `protobuf:"bytes,1,opt,name=content,proto3,oneof"` -} -type RecognitionAudio_Uri struct { - Uri string `protobuf:"bytes,2,opt,name=uri,oneof"` -} - -func (*RecognitionAudio_Content) isRecognitionAudio_AudioSource() {} -func (*RecognitionAudio_Uri) isRecognitionAudio_AudioSource() {} - -func (m *RecognitionAudio) GetAudioSource() isRecognitionAudio_AudioSource { - if m != nil { - return m.AudioSource - } - return nil -} - -func (m *RecognitionAudio) GetContent() []byte { - if x, ok := m.GetAudioSource().(*RecognitionAudio_Content); ok { - return x.Content - } - return nil -} - -func (m *RecognitionAudio) GetUri() string { - if x, ok := m.GetAudioSource().(*RecognitionAudio_Uri); ok { - return x.Uri - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RecognitionAudio) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RecognitionAudio_OneofMarshaler, _RecognitionAudio_OneofUnmarshaler, _RecognitionAudio_OneofSizer, []interface{}{ - (*RecognitionAudio_Content)(nil), - (*RecognitionAudio_Uri)(nil), - } -} - -func _RecognitionAudio_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RecognitionAudio) - // audio_source - switch x := m.AudioSource.(type) { - case *RecognitionAudio_Content: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Content) - case *RecognitionAudio_Uri: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Uri) - case nil: - default: - return fmt.Errorf("RecognitionAudio.AudioSource has unexpected type %T", x) - } - return nil -} - -func _RecognitionAudio_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RecognitionAudio) - switch tag { - case 1: // audio_source.content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.AudioSource = &RecognitionAudio_Content{x} - return true, err - case 2: // audio_source.uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.AudioSource = &RecognitionAudio_Uri{x} - return true, err - default: - return false, nil - } -} - -func _RecognitionAudio_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RecognitionAudio) - // audio_source - switch x := m.AudioSource.(type) { - case *RecognitionAudio_Content: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Content))) - n += len(x.Content) - case *RecognitionAudio_Uri: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Uri))) - n += len(x.Uri) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The only message returned to the client by the `Recognize` method. It -// contains the result as zero or more sequential `SpeechRecognitionResult` -// messages. -type RecognizeResponse struct { - // *Output-only* Sequential list of transcription results corresponding to - // sequential portions of audio. - Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` -} - -func (m *RecognizeResponse) Reset() { *m = RecognizeResponse{} } -func (m *RecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*RecognizeResponse) ProtoMessage() {} -func (*RecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *RecognizeResponse) GetResults() []*SpeechRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -// The only message returned to the client by the `LongRunningRecognize` method. -// It contains the result as zero or more sequential `SpeechRecognitionResult` -// messages. It is included in the `result.response` field of the `Operation` -// returned by the `GetOperation` call of the `google::longrunning::Operations` -// service. -type LongRunningRecognizeResponse struct { - // *Output-only* Sequential list of transcription results corresponding to - // sequential portions of audio. - Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` -} - -func (m *LongRunningRecognizeResponse) Reset() { *m = LongRunningRecognizeResponse{} } -func (m *LongRunningRecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*LongRunningRecognizeResponse) ProtoMessage() {} -func (*LongRunningRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *LongRunningRecognizeResponse) GetResults() []*SpeechRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -// Describes the progress of a long-running `LongRunningRecognize` call. It is -// included in the `metadata` field of the `Operation` returned by the -// `GetOperation` call of the `google::longrunning::Operations` service. -type LongRunningRecognizeMetadata struct { - // Approximate percentage of audio processed thus far. Guaranteed to be 100 - // when the audio is fully processed and the results are available. - ProgressPercent int32 `protobuf:"varint,1,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"` - // Time when the request was received. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time of the most recent processing update. - LastUpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` -} - -func (m *LongRunningRecognizeMetadata) Reset() { *m = LongRunningRecognizeMetadata{} } -func (m *LongRunningRecognizeMetadata) String() string { return proto.CompactTextString(m) } -func (*LongRunningRecognizeMetadata) ProtoMessage() {} -func (*LongRunningRecognizeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *LongRunningRecognizeMetadata) GetProgressPercent() int32 { - if m != nil { - return m.ProgressPercent - } - return 0 -} - -func (m *LongRunningRecognizeMetadata) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *LongRunningRecognizeMetadata) GetLastUpdateTime() *google_protobuf4.Timestamp { - if m != nil { - return m.LastUpdateTime - } - return nil -} - -// `StreamingRecognizeResponse` is the only message returned to the client by -// `StreamingRecognize`. A series of zero or more `StreamingRecognizeResponse` -// messages are streamed back to the client. If there is no recognizable -// audio, and `single_utterance` is set to false, then no messages are streamed -// back to the client. -// -// Here's an example of a series of ten `StreamingRecognizeResponse`s that might -// be returned while processing audio: -// -// 1. results { alternatives { transcript: "tube" } stability: 0.01 } -// -// 2. results { alternatives { transcript: "to be a" } stability: 0.01 } -// -// 3. results { alternatives { transcript: "to be" } stability: 0.9 } -// results { alternatives { transcript: " or not to be" } stability: 0.01 } -// -// 4. results { alternatives { transcript: "to be or not to be" -// confidence: 0.92 } -// alternatives { transcript: "to bee or not to bee" } -// is_final: true } -// -// 5. results { alternatives { transcript: " that's" } stability: 0.01 } -// -// 6. results { alternatives { transcript: " that is" } stability: 0.9 } -// results { alternatives { transcript: " the question" } stability: 0.01 } -// -// 7. results { alternatives { transcript: " that is the question" -// confidence: 0.98 } -// alternatives { transcript: " that was the question" } -// is_final: true } -// -// Notes: -// -// - Only two of the above responses #4 and #7 contain final results; they are -// indicated by `is_final: true`. Concatenating these together generates the -// full transcript: "to be or not to be that is the question". -// -// - The others contain interim `results`. #3 and #6 contain two interim -// `results`: the first portion has a high stability and is less likely to -// change; the second portion has a low stability and is very likely to -// change. A UI designer might choose to show only high stability `results`. -// -// - The specific `stability` and `confidence` values shown above are only for -// illustrative purposes. Actual values may vary. -// -// - In each response, only one of these fields will be set: -// `error`, -// `speech_event_type`, or -// one or more (repeated) `results`. -type StreamingRecognizeResponse struct { - // *Output-only* If set, returns a [google.rpc.Status][google.rpc.Status] message that - // specifies the error for the operation. - Error *google_rpc.Status `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` - // *Output-only* This repeated list contains zero or more results that - // correspond to consecutive portions of the audio currently being processed. - // It contains zero or more `is_final=false` results followed by zero or one - // `is_final=true` result (the newly settled portion). - Results []*StreamingRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` - // *Output-only* Indicates the type of speech event. - SpeechEventType StreamingRecognizeResponse_SpeechEventType `protobuf:"varint,4,opt,name=speech_event_type,json=speechEventType,enum=google.cloud.speech.v1.StreamingRecognizeResponse_SpeechEventType" json:"speech_event_type,omitempty"` -} - -func (m *StreamingRecognizeResponse) Reset() { *m = StreamingRecognizeResponse{} } -func (m *StreamingRecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognizeResponse) ProtoMessage() {} -func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *StreamingRecognizeResponse) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -func (m *StreamingRecognizeResponse) GetResults() []*StreamingRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -func (m *StreamingRecognizeResponse) GetSpeechEventType() StreamingRecognizeResponse_SpeechEventType { - if m != nil { - return m.SpeechEventType - } - return StreamingRecognizeResponse_SPEECH_EVENT_UNSPECIFIED -} - -// A streaming speech recognition result corresponding to a portion of the audio -// that is currently being processed. -type StreamingRecognitionResult struct { - // *Output-only* May contain one or more recognition hypotheses (up to the - // maximum specified in `max_alternatives`). - Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"` - // *Output-only* If `false`, this `StreamingRecognitionResult` represents an - // interim result that may change. If `true`, this is the final time the - // speech service will return this particular `StreamingRecognitionResult`, - // the recognizer will not return any further hypotheses for this portion of - // the transcript and corresponding audio. - IsFinal bool `protobuf:"varint,2,opt,name=is_final,json=isFinal" json:"is_final,omitempty"` - // *Output-only* An estimate of the likelihood that the recognizer will not - // change its guess about this interim result. Values range from 0.0 - // (completely unstable) to 1.0 (completely stable). - // This field is only provided for interim results (`is_final=false`). - // The default of 0.0 is a sentinel value indicating `stability` was not set. - Stability float32 `protobuf:"fixed32,3,opt,name=stability" json:"stability,omitempty"` -} - -func (m *StreamingRecognitionResult) Reset() { *m = StreamingRecognitionResult{} } -func (m *StreamingRecognitionResult) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognitionResult) ProtoMessage() {} -func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *StreamingRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative { - if m != nil { - return m.Alternatives - } - return nil -} - -func (m *StreamingRecognitionResult) GetIsFinal() bool { - if m != nil { - return m.IsFinal - } - return false -} - -func (m *StreamingRecognitionResult) GetStability() float32 { - if m != nil { - return m.Stability - } - return 0 -} - -// A speech recognition result corresponding to a portion of the audio. -type SpeechRecognitionResult struct { - // *Output-only* May contain one or more recognition hypotheses (up to the - // maximum specified in `max_alternatives`). - // These alternatives are ordered in terms of accuracy, with the top (first) - // alternative being the most probable, as ranked by the recognizer. - Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"` -} - -func (m *SpeechRecognitionResult) Reset() { *m = SpeechRecognitionResult{} } -func (m *SpeechRecognitionResult) String() string { return proto.CompactTextString(m) } -func (*SpeechRecognitionResult) ProtoMessage() {} -func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *SpeechRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative { - if m != nil { - return m.Alternatives - } - return nil -} - -// Alternative hypotheses (a.k.a. n-best list). -type SpeechRecognitionAlternative struct { - // *Output-only* Transcript text representing the words that the user spoke. - Transcript string `protobuf:"bytes,1,opt,name=transcript" json:"transcript,omitempty"` - // *Output-only* The confidence estimate between 0.0 and 1.0. A higher number - // indicates an estimated greater likelihood that the recognized words are - // correct. This field is typically provided only for the top hypothesis, and - // only for `is_final=true` results. Clients should not rely on the - // `confidence` field as it is not guaranteed to be accurate or consistent. - // The default of 0.0 is a sentinel value indicating `confidence` was not set. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` - // *Output-only* A list of word-specific information for each recognized word. - Words []*WordInfo `protobuf:"bytes,3,rep,name=words" json:"words,omitempty"` -} - -func (m *SpeechRecognitionAlternative) Reset() { *m = SpeechRecognitionAlternative{} } -func (m *SpeechRecognitionAlternative) String() string { return proto.CompactTextString(m) } -func (*SpeechRecognitionAlternative) ProtoMessage() {} -func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *SpeechRecognitionAlternative) GetTranscript() string { - if m != nil { - return m.Transcript - } - return "" -} - -func (m *SpeechRecognitionAlternative) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func (m *SpeechRecognitionAlternative) GetWords() []*WordInfo { - if m != nil { - return m.Words - } - return nil -} - -// Word-specific information for recognized words. Word information is only -// included in the response when certain request parameters are set, such -// as `enable_word_time_offsets`. -type WordInfo struct { - // *Output-only* Time offset relative to the beginning of the audio, - // and corresponding to the start of the spoken word. - // This field is only set if `enable_word_time_offsets=true` and only - // in the top hypothesis. - // This is an experimental feature and the accuracy of the time offset can - // vary. - StartTime *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // *Output-only* Time offset relative to the beginning of the audio, - // and corresponding to the end of the spoken word. - // This field is only set if `enable_word_time_offsets=true` and only - // in the top hypothesis. - // This is an experimental feature and the accuracy of the time offset can - // vary. - EndTime *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // *Output-only* The word corresponding to this set of information. - Word string `protobuf:"bytes,3,opt,name=word" json:"word,omitempty"` -} - -func (m *WordInfo) Reset() { *m = WordInfo{} } -func (m *WordInfo) String() string { return proto.CompactTextString(m) } -func (*WordInfo) ProtoMessage() {} -func (*WordInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *WordInfo) GetStartTime() *google_protobuf3.Duration { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *WordInfo) GetEndTime() *google_protobuf3.Duration { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *WordInfo) GetWord() string { - if m != nil { - return m.Word - } - return "" -} - -func init() { - proto.RegisterType((*RecognizeRequest)(nil), "google.cloud.speech.v1.RecognizeRequest") - proto.RegisterType((*LongRunningRecognizeRequest)(nil), "google.cloud.speech.v1.LongRunningRecognizeRequest") - proto.RegisterType((*StreamingRecognizeRequest)(nil), "google.cloud.speech.v1.StreamingRecognizeRequest") - proto.RegisterType((*StreamingRecognitionConfig)(nil), "google.cloud.speech.v1.StreamingRecognitionConfig") - proto.RegisterType((*RecognitionConfig)(nil), "google.cloud.speech.v1.RecognitionConfig") - proto.RegisterType((*SpeechContext)(nil), "google.cloud.speech.v1.SpeechContext") - proto.RegisterType((*RecognitionAudio)(nil), "google.cloud.speech.v1.RecognitionAudio") - proto.RegisterType((*RecognizeResponse)(nil), "google.cloud.speech.v1.RecognizeResponse") - proto.RegisterType((*LongRunningRecognizeResponse)(nil), "google.cloud.speech.v1.LongRunningRecognizeResponse") - proto.RegisterType((*LongRunningRecognizeMetadata)(nil), "google.cloud.speech.v1.LongRunningRecognizeMetadata") - proto.RegisterType((*StreamingRecognizeResponse)(nil), "google.cloud.speech.v1.StreamingRecognizeResponse") - proto.RegisterType((*StreamingRecognitionResult)(nil), "google.cloud.speech.v1.StreamingRecognitionResult") - proto.RegisterType((*SpeechRecognitionResult)(nil), "google.cloud.speech.v1.SpeechRecognitionResult") - proto.RegisterType((*SpeechRecognitionAlternative)(nil), "google.cloud.speech.v1.SpeechRecognitionAlternative") - proto.RegisterType((*WordInfo)(nil), "google.cloud.speech.v1.WordInfo") - proto.RegisterEnum("google.cloud.speech.v1.RecognitionConfig_AudioEncoding", RecognitionConfig_AudioEncoding_name, RecognitionConfig_AudioEncoding_value) - proto.RegisterEnum("google.cloud.speech.v1.StreamingRecognizeResponse_SpeechEventType", StreamingRecognizeResponse_SpeechEventType_name, StreamingRecognizeResponse_SpeechEventType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Speech service - -type SpeechClient interface { - // Performs synchronous speech recognition: receive results after all audio - // has been sent and processed. - Recognize(ctx context.Context, in *RecognizeRequest, opts ...grpc.CallOption) (*RecognizeResponse, error) - // Performs asynchronous speech recognition: receive results via the - // google.longrunning.Operations interface. Returns either an - // `Operation.error` or an `Operation.response` which contains - // a `LongRunningRecognizeResponse` message. - LongRunningRecognize(ctx context.Context, in *LongRunningRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Performs bidirectional streaming speech recognition: receive results while - // sending audio. This method is only available via the gRPC API (not REST). - StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error) -} - -type speechClient struct { - cc *grpc.ClientConn -} - -func NewSpeechClient(cc *grpc.ClientConn) SpeechClient { - return &speechClient{cc} -} - -func (c *speechClient) Recognize(ctx context.Context, in *RecognizeRequest, opts ...grpc.CallOption) (*RecognizeResponse, error) { - out := new(RecognizeResponse) - err := grpc.Invoke(ctx, "/google.cloud.speech.v1.Speech/Recognize", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *speechClient) LongRunningRecognize(ctx context.Context, in *LongRunningRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.speech.v1.Speech/LongRunningRecognize", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *speechClient) StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Speech_serviceDesc.Streams[0], c.cc, "/google.cloud.speech.v1.Speech/StreamingRecognize", opts...) - if err != nil { - return nil, err - } - x := &speechStreamingRecognizeClient{stream} - return x, nil -} - -type Speech_StreamingRecognizeClient interface { - Send(*StreamingRecognizeRequest) error - Recv() (*StreamingRecognizeResponse, error) - grpc.ClientStream -} - -type speechStreamingRecognizeClient struct { - grpc.ClientStream -} - -func (x *speechStreamingRecognizeClient) Send(m *StreamingRecognizeRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *speechStreamingRecognizeClient) Recv() (*StreamingRecognizeResponse, error) { - m := new(StreamingRecognizeResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for Speech service - -type SpeechServer interface { - // Performs synchronous speech recognition: receive results after all audio - // has been sent and processed. - Recognize(context.Context, *RecognizeRequest) (*RecognizeResponse, error) - // Performs asynchronous speech recognition: receive results via the - // google.longrunning.Operations interface. Returns either an - // `Operation.error` or an `Operation.response` which contains - // a `LongRunningRecognizeResponse` message. - LongRunningRecognize(context.Context, *LongRunningRecognizeRequest) (*google_longrunning.Operation, error) - // Performs bidirectional streaming speech recognition: receive results while - // sending audio. This method is only available via the gRPC API (not REST). - StreamingRecognize(Speech_StreamingRecognizeServer) error -} - -func RegisterSpeechServer(s *grpc.Server, srv SpeechServer) { - s.RegisterService(&_Speech_serviceDesc, srv) -} - -func _Speech_Recognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RecognizeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpeechServer).Recognize(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.speech.v1.Speech/Recognize", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpeechServer).Recognize(ctx, req.(*RecognizeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Speech_LongRunningRecognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LongRunningRecognizeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpeechServer).LongRunningRecognize(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.speech.v1.Speech/LongRunningRecognize", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpeechServer).LongRunningRecognize(ctx, req.(*LongRunningRecognizeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Speech_StreamingRecognize_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(SpeechServer).StreamingRecognize(&speechStreamingRecognizeServer{stream}) -} - -type Speech_StreamingRecognizeServer interface { - Send(*StreamingRecognizeResponse) error - Recv() (*StreamingRecognizeRequest, error) - grpc.ServerStream -} - -type speechStreamingRecognizeServer struct { - grpc.ServerStream -} - -func (x *speechStreamingRecognizeServer) Send(m *StreamingRecognizeResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *speechStreamingRecognizeServer) Recv() (*StreamingRecognizeRequest, error) { - m := new(StreamingRecognizeRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _Speech_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.speech.v1.Speech", - HandlerType: (*SpeechServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Recognize", - Handler: _Speech_Recognize_Handler, - }, - { - MethodName: "LongRunningRecognize", - Handler: _Speech_LongRunningRecognize_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingRecognize", - Handler: _Speech_StreamingRecognize_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/cloud/speech/v1/cloud_speech.proto", -} - -func init() { proto.RegisterFile("google/cloud/speech/v1/cloud_speech.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1318 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xce, 0xc6, 0x71, 0x3e, 0xde, 0xe6, 0xc3, 0x19, 0x4a, 0xeb, 0xb8, 0xa1, 0x8d, 0xb6, 0x54, - 0x24, 0x3d, 0xd8, 0x24, 0xad, 0x5a, 0x28, 0x08, 0xc9, 0x71, 0x36, 0x89, 0x25, 0xc7, 0x89, 0xc6, - 0x0e, 0x29, 0x1c, 0x18, 0x4d, 0xec, 0xf1, 0x76, 0x25, 0x7b, 0x76, 0x99, 0x19, 0x87, 0xa6, 0x17, - 0x04, 0x57, 0x24, 0x2e, 0x88, 0x9e, 0x39, 0xf5, 0xca, 0x81, 0x0b, 0xbf, 0x81, 0x23, 0xfc, 0x05, - 0x7e, 0x04, 0x47, 0x34, 0x33, 0xbb, 0x8e, 0xed, 0xc4, 0x69, 0x2a, 0x15, 0x89, 0xdb, 0xce, 0xf3, - 0x7e, 0xcc, 0x33, 0xef, 0xbc, 0x1f, 0xb3, 0xb0, 0xe6, 0x87, 0xa1, 0xdf, 0x66, 0x85, 0x46, 0x3b, - 0xec, 0x36, 0x0b, 0x32, 0x62, 0xac, 0xf1, 0xac, 0x70, 0xb2, 0x6e, 0xd7, 0xc4, 0xae, 0xf3, 0x91, - 0x08, 0x55, 0x88, 0x6e, 0x58, 0xd5, 0xbc, 0x11, 0xe5, 0x63, 0xd1, 0xc9, 0x7a, 0x6e, 0x39, 0x76, - 0x41, 0xa3, 0xa0, 0x40, 0x39, 0x0f, 0x15, 0x55, 0x41, 0xc8, 0xa5, 0xb5, 0xca, 0xdd, 0x8d, 0xa5, - 0xed, 0x90, 0xfb, 0xa2, 0xcb, 0x79, 0xc0, 0xfd, 0x42, 0x18, 0x31, 0x31, 0xa0, 0xb4, 0x14, 0x2b, - 0x99, 0xd5, 0x71, 0xb7, 0x55, 0xa0, 0xfc, 0x34, 0x16, 0xdd, 0x1e, 0x16, 0x35, 0xbb, 0xd6, 0x36, - 0x96, 0xdf, 0x19, 0x96, 0xab, 0xa0, 0xc3, 0xa4, 0xa2, 0x9d, 0x28, 0x56, 0xb8, 0x19, 0x2b, 0x88, - 0xa8, 0x51, 0x90, 0x8a, 0xaa, 0x6e, 0xbc, 0xa9, 0xfb, 0xb3, 0x03, 0x19, 0xcc, 0x1a, 0xa1, 0xcf, - 0x83, 0x17, 0x0c, 0xb3, 0xaf, 0xbb, 0x4c, 0x2a, 0x54, 0x84, 0xc9, 0x46, 0xc8, 0x5b, 0x81, 0x9f, - 0x75, 0x56, 0x9c, 0xd5, 0x6b, 0x1b, 0x6b, 0xf9, 0x8b, 0x4f, 0x9d, 0x8f, 0x2d, 0x35, 0x93, 0x92, - 0x31, 0xc0, 0xb1, 0x21, 0xfa, 0x0c, 0xd2, 0xb4, 0xdb, 0x0c, 0xc2, 0xec, 0xb8, 0xf1, 0xb0, 0x7a, - 0x05, 0x0f, 0x45, 0xad, 0x8f, 0xad, 0x99, 0xfb, 0x8b, 0x03, 0xb7, 0x2a, 0x21, 0xf7, 0xb1, 0x8d, - 0xd6, 0xff, 0x91, 0xe2, 0xef, 0x0e, 0x2c, 0xd5, 0x94, 0x60, 0xb4, 0x73, 0x11, 0x41, 0x02, 0x19, - 0x99, 0x08, 0xc9, 0x00, 0xd5, 0x8d, 0x51, 0x1b, 0x0d, 0x3b, 0x3b, 0xe3, 0xbc, 0x3b, 0x86, 0x17, - 0x7a, 0xde, 0x2c, 0x84, 0xee, 0xc1, 0x9c, 0xe1, 0xa1, 0x9d, 0x2b, 0xc6, 0x95, 0x39, 0xc6, 0xec, - 0xee, 0x18, 0x9e, 0x35, 0x70, 0xc9, 0xa2, 0x9b, 0xef, 0xc0, 0xe2, 0x19, 0x0f, 0x61, 0xc9, 0xb9, - 0xbf, 0x39, 0x90, 0x1b, 0xbd, 0xdb, 0xdb, 0x08, 0xee, 0x1a, 0x64, 0x64, 0xc0, 0xfd, 0x36, 0x23, - 0x5d, 0xa5, 0x98, 0xa0, 0xbc, 0xc1, 0x0c, 0xc1, 0x69, 0xbc, 0x60, 0xf1, 0xc3, 0x04, 0x46, 0x1f, - 0xc0, 0x42, 0xc0, 0x15, 0x13, 0x41, 0x87, 0x08, 0x26, 0xbb, 0x6d, 0x25, 0xb3, 0x29, 0xa3, 0x39, - 0x1f, 0xc3, 0xd8, 0xa2, 0xee, 0xab, 0x09, 0x58, 0x3c, 0x4f, 0xb6, 0x06, 0xd3, 0x8c, 0x37, 0xc2, - 0x66, 0xc0, 0x2d, 0xdd, 0xf9, 0x8d, 0xc7, 0x57, 0xa6, 0x9b, 0x37, 0x17, 0xea, 0xc5, 0xe6, 0xb8, - 0xe7, 0x08, 0xdd, 0x87, 0x45, 0x49, 0x3b, 0x51, 0x9b, 0x11, 0x41, 0x15, 0x23, 0xcf, 0x98, 0x50, - 0x2f, 0x0c, 0xff, 0x34, 0x5e, 0xb0, 0x02, 0x4c, 0x15, 0xdb, 0xd5, 0x30, 0xba, 0x0b, 0x73, 0x6d, - 0xca, 0xfd, 0x2e, 0xf5, 0x19, 0x69, 0x84, 0x4d, 0x66, 0xd8, 0xcf, 0xe0, 0xd9, 0x04, 0x2c, 0x85, - 0x4d, 0xa6, 0xe3, 0xd1, 0xa1, 0xcf, 0x09, 0x6d, 0x2b, 0x26, 0x38, 0x55, 0xc1, 0x09, 0x93, 0xd9, - 0x09, 0xeb, 0xaf, 0x43, 0x9f, 0x17, 0xfb, 0x60, 0xad, 0x1a, 0x89, 0xb0, 0x45, 0x79, 0xa0, 0x4e, - 0x49, 0x2b, 0xd0, 0xa2, 0x6c, 0xda, 0x86, 0xae, 0x87, 0x6f, 0x1b, 0x18, 0x55, 0x61, 0xc1, 0x9e, - 0xce, 0x26, 0xc1, 0x73, 0x25, 0xb3, 0x93, 0x2b, 0xa9, 0xd5, 0x6b, 0x1b, 0xf7, 0x46, 0xe6, 0x98, - 0xf9, 0x2a, 0x59, 0x6d, 0x3c, 0x2f, 0xfb, 0x97, 0x12, 0x3d, 0x86, 0x2c, 0xe3, 0xf4, 0xb8, 0xcd, - 0xc8, 0x37, 0xa1, 0x68, 0x12, 0xdd, 0x45, 0x48, 0xd8, 0x6a, 0x49, 0xa6, 0x64, 0x76, 0xda, 0x50, - 0x78, 0xd7, 0xca, 0x8f, 0x42, 0xd1, 0xac, 0x07, 0x1d, 0xb6, 0x6f, 0x85, 0xee, 0x0f, 0x0e, 0xcc, - 0x0d, 0xc4, 0x12, 0x65, 0xe1, 0xba, 0x57, 0x2d, 0xed, 0x6f, 0x95, 0xab, 0x3b, 0xe4, 0xb0, 0x5a, - 0x3b, 0xf0, 0x4a, 0xe5, 0xed, 0xb2, 0xb7, 0x95, 0x19, 0x43, 0xb3, 0x30, 0x5d, 0x29, 0x57, 0xbd, - 0x22, 0x5e, 0x7f, 0x94, 0x71, 0xd0, 0x34, 0x4c, 0x6c, 0x57, 0x8a, 0xa5, 0xcc, 0x38, 0x9a, 0x81, - 0xf4, 0xde, 0x61, 0xa5, 0x78, 0x94, 0x49, 0xa1, 0x29, 0x48, 0x15, 0xf7, 0x70, 0x66, 0x02, 0x01, - 0x4c, 0x16, 0xf7, 0x30, 0x39, 0xda, 0xcc, 0xa4, 0xb5, 0xdd, 0xfe, 0xce, 0x0e, 0xd9, 0x3f, 0x38, - 0xac, 0x65, 0x26, 0x51, 0x0e, 0x6e, 0xd4, 0x0e, 0x3c, 0xef, 0x29, 0x39, 0x2a, 0xd7, 0x77, 0xc9, - 0xae, 0x57, 0xdc, 0xf2, 0x30, 0xd9, 0xfc, 0xa2, 0xee, 0x65, 0xa6, 0xdc, 0x35, 0x98, 0x1b, 0x38, - 0x27, 0xca, 0xc2, 0x54, 0xf4, 0x4c, 0x50, 0xc9, 0x64, 0xd6, 0x59, 0x49, 0xad, 0xce, 0xe0, 0x64, - 0xe9, 0xe2, 0x5e, 0xfb, 0xeb, 0xd5, 0x37, 0xca, 0xc1, 0x54, 0x52, 0x53, 0x4e, 0x5c, 0x53, 0x09, - 0x80, 0x10, 0xa4, 0xba, 0x22, 0x30, 0xa9, 0x30, 0xb3, 0x3b, 0x86, 0xf5, 0x62, 0x73, 0x1e, 0x6c, - 0xc9, 0x11, 0x19, 0x76, 0x45, 0x83, 0xb9, 0x5f, 0xf5, 0xd2, 0x54, 0xb7, 0x03, 0x19, 0x85, 0x5c, - 0x32, 0x54, 0x86, 0xa9, 0x24, 0xbb, 0xc7, 0xcd, 0x15, 0x15, 0x2e, 0xbf, 0xa2, 0x3e, 0x56, 0x36, - 0xff, 0x71, 0x62, 0xef, 0x06, 0xb0, 0x7c, 0x71, 0x6b, 0x7c, 0xfb, 0x5b, 0xfd, 0xe1, 0x5c, 0xbc, - 0xd7, 0x1e, 0x53, 0xb4, 0x49, 0x15, 0x8d, 0x93, 0xd5, 0x17, 0x4c, 0x4a, 0x12, 0x31, 0xd1, 0x48, - 0x82, 0x96, 0x36, 0xc9, 0x6a, 0xf0, 0x03, 0x0b, 0xa3, 0x8f, 0x01, 0xa4, 0xa2, 0x42, 0x99, 0xb4, - 0x8a, 0x9b, 0x6e, 0x2e, 0x61, 0x96, 0x4c, 0xae, 0x7c, 0x3d, 0x99, 0x5c, 0x78, 0xc6, 0x68, 0xeb, - 0x35, 0xda, 0x82, 0x4c, 0x9b, 0x4a, 0x45, 0xba, 0x51, 0x53, 0x97, 0xa3, 0x71, 0x90, 0x7a, 0xad, - 0x83, 0x79, 0x6d, 0x73, 0x68, 0x4c, 0x34, 0xe8, 0xfe, 0x39, 0x7e, 0xbe, 0xeb, 0xf5, 0x85, 0x6d, - 0x15, 0xd2, 0x4c, 0x88, 0x50, 0xc4, 0x4d, 0x0f, 0x25, 0x9e, 0x45, 0xd4, 0xc8, 0xd7, 0xcc, 0xcc, - 0xc4, 0x56, 0x01, 0x55, 0x86, 0x03, 0xfc, 0x46, 0x2d, 0x7d, 0x28, 0xc6, 0x88, 0xc3, 0x62, 0x5c, - 0xc4, 0xec, 0x84, 0x71, 0x45, 0xd4, 0x69, 0xc4, 0x4c, 0x6f, 0x98, 0xdf, 0xd8, 0xbc, 0xaa, 0xdf, - 0xb3, 0x63, 0xc4, 0x77, 0xea, 0x69, 0x57, 0xf5, 0xd3, 0x88, 0xe1, 0xb8, 0x43, 0xf4, 0x00, 0xb7, - 0x02, 0x0b, 0x43, 0x3a, 0x68, 0x19, 0xb2, 0xba, 0x98, 0x4a, 0xbb, 0xc4, 0xfb, 0xdc, 0xab, 0xd6, - 0x87, 0x0a, 0xf6, 0x16, 0xdc, 0xf4, 0xaa, 0x5b, 0x64, 0x7f, 0x9b, 0xd4, 0xca, 0xd5, 0x9d, 0x8a, - 0x47, 0x0e, 0xeb, 0x75, 0x0f, 0x17, 0xab, 0x25, 0x2f, 0xe3, 0xb8, 0xbf, 0x8e, 0x18, 0x25, 0xf6, - 0x94, 0xe8, 0x29, 0xcc, 0x0e, 0xf4, 0x3c, 0xc7, 0xc4, 0xeb, 0xe1, 0x95, 0x13, 0xb2, 0xaf, 0x33, - 0xe2, 0x01, 0x4f, 0x68, 0x09, 0xa6, 0x03, 0x49, 0x5a, 0x01, 0xa7, 0xed, 0x78, 0xb2, 0x4c, 0x05, - 0x72, 0x5b, 0x2f, 0xd1, 0x32, 0xe8, 0xdc, 0x39, 0x0e, 0xda, 0x81, 0x3a, 0x35, 0x79, 0x32, 0x8e, - 0xcf, 0x00, 0x57, 0xc2, 0xcd, 0x11, 0x79, 0xff, 0xdf, 0xb1, 0x75, 0x5f, 0x3a, 0xb0, 0x7c, 0x99, - 0x3a, 0xba, 0x0d, 0xa0, 0x04, 0xe5, 0xb2, 0x21, 0x82, 0xc8, 0x96, 0xd0, 0x0c, 0xee, 0x43, 0xb4, - 0xdc, 0x8c, 0xd6, 0x26, 0x4b, 0x46, 0xe9, 0x38, 0xee, 0x43, 0xd0, 0x23, 0x48, 0xeb, 0x9e, 0xad, - 0x67, 0xa7, 0xe6, 0xbc, 0x32, 0x8a, 0xb3, 0xee, 0xdc, 0x65, 0xde, 0x0a, 0xb1, 0x55, 0x77, 0x7f, - 0x74, 0x60, 0x3a, 0xc1, 0xd0, 0x47, 0x03, 0x25, 0x6a, 0xeb, 0x60, 0xe9, 0x5c, 0x85, 0x6d, 0xc5, - 0x8f, 0xcf, 0xfe, 0x0a, 0x7d, 0xa8, 0xa7, 0x70, 0xb3, 0xbf, 0xb4, 0x2f, 0xb1, 0x9b, 0x62, 0xdc, - 0x4c, 0x0f, 0x84, 0x60, 0x42, 0xb3, 0x88, 0x27, 0xa6, 0xf9, 0xde, 0x78, 0x95, 0x82, 0x49, 0x1b, - 0x29, 0xf4, 0x9d, 0x03, 0x33, 0xbd, 0x04, 0x47, 0xaf, 0x7b, 0xa0, 0xf5, 0xde, 0x5e, 0xb9, 0xb5, - 0x2b, 0x68, 0xda, 0x6a, 0x71, 0xef, 0x7c, 0xff, 0xd7, 0xdf, 0x3f, 0x8d, 0x2f, 0xb9, 0xd7, 0xf5, - 0x7b, 0xdf, 0x2a, 0x3e, 0x11, 0x89, 0xd6, 0x13, 0xe7, 0x3e, 0x7a, 0xe9, 0xc0, 0xf5, 0x8b, 0x3a, - 0x20, 0x7a, 0x30, 0x6a, 0x93, 0x4b, 0x9e, 0xad, 0xb9, 0xf7, 0x12, 0xa3, 0xbe, 0x3f, 0x81, 0xfc, - 0x7e, 0xf2, 0x27, 0xe0, 0xde, 0x37, 0x6c, 0xde, 0x77, 0xef, 0xf4, 0xb1, 0xe9, 0xd3, 0x1c, 0x20, - 0xf6, 0x2d, 0xa0, 0xf3, 0x5d, 0x00, 0xad, 0xbf, 0x49, 0xc7, 0xb0, 0x9c, 0x36, 0xde, 0xbc, 0xc9, - 0xac, 0x3a, 0x1f, 0x3a, 0x9b, 0x6d, 0xc8, 0x35, 0xc2, 0xce, 0x08, 0xe3, 0xcd, 0x6b, 0xf6, 0x0e, - 0x0f, 0xf4, 0xe5, 0x1f, 0x38, 0x5f, 0x7e, 0x1a, 0xab, 0xf9, 0xa1, 0x7e, 0x16, 0xe5, 0x43, 0xe1, - 0x17, 0x7c, 0xc6, 0x4d, 0x6a, 0x14, 0xac, 0x88, 0x46, 0x81, 0x1c, 0xfe, 0x03, 0xfb, 0xc4, 0x7e, - 0xfd, 0xe3, 0x38, 0xc7, 0x93, 0x46, 0xf7, 0xc1, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x52, 0x28, - 0xae, 0xd1, 0xac, 0x0d, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1beta1/cloud_speech.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1beta1/cloud_speech.pb.go deleted file mode 100644 index 178a9307..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1beta1/cloud_speech.pb.go +++ /dev/null @@ -1,1195 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/speech/v1beta1/cloud_speech.proto - -/* -Package speech is a generated protocol buffer package. - -It is generated from these files: - google/cloud/speech/v1beta1/cloud_speech.proto - -It has these top-level messages: - SyncRecognizeRequest - AsyncRecognizeRequest - StreamingRecognizeRequest - StreamingRecognitionConfig - RecognitionConfig - SpeechContext - RecognitionAudio - SyncRecognizeResponse - AsyncRecognizeResponse - AsyncRecognizeMetadata - StreamingRecognizeResponse - StreamingRecognitionResult - SpeechRecognitionResult - SpeechRecognitionAlternative -*/ -package speech - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/duration" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Audio encoding of the data sent in the audio message. All encodings support -// only 1 channel (mono) audio. Only `FLAC` includes a header that describes -// the bytes of audio that follow the header. The other encodings are raw -// audio bytes with no header. -// -// For best results, the audio source should be captured and transmitted using -// a lossless encoding (`FLAC` or `LINEAR16`). Recognition accuracy may be -// reduced if lossy codecs (such as AMR, AMR_WB and MULAW) are used to capture -// or transmit the audio, particularly if background noise is present. -type RecognitionConfig_AudioEncoding int32 - -const ( - // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]. - RecognitionConfig_ENCODING_UNSPECIFIED RecognitionConfig_AudioEncoding = 0 - // Uncompressed 16-bit signed little-endian samples (Linear PCM). - // This is the only encoding that may be used by `AsyncRecognize`. - RecognitionConfig_LINEAR16 RecognitionConfig_AudioEncoding = 1 - // This is the recommended encoding for `SyncRecognize` and - // `StreamingRecognize` because it uses lossless compression; therefore - // recognition accuracy is not compromised by a lossy codec. - // - // The stream FLAC (Free Lossless Audio Codec) encoding is specified at: - // http://flac.sourceforge.net/documentation.html. - // 16-bit and 24-bit samples are supported. - // Not all fields in STREAMINFO are supported. - RecognitionConfig_FLAC RecognitionConfig_AudioEncoding = 2 - // 8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law. - RecognitionConfig_MULAW RecognitionConfig_AudioEncoding = 3 - // Adaptive Multi-Rate Narrowband codec. `sample_rate` must be 8000 Hz. - RecognitionConfig_AMR RecognitionConfig_AudioEncoding = 4 - // Adaptive Multi-Rate Wideband codec. `sample_rate` must be 16000 Hz. - RecognitionConfig_AMR_WB RecognitionConfig_AudioEncoding = 5 -) - -var RecognitionConfig_AudioEncoding_name = map[int32]string{ - 0: "ENCODING_UNSPECIFIED", - 1: "LINEAR16", - 2: "FLAC", - 3: "MULAW", - 4: "AMR", - 5: "AMR_WB", -} -var RecognitionConfig_AudioEncoding_value = map[string]int32{ - "ENCODING_UNSPECIFIED": 0, - "LINEAR16": 1, - "FLAC": 2, - "MULAW": 3, - "AMR": 4, - "AMR_WB": 5, -} - -func (x RecognitionConfig_AudioEncoding) String() string { - return proto.EnumName(RecognitionConfig_AudioEncoding_name, int32(x)) -} -func (RecognitionConfig_AudioEncoding) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{4, 0} -} - -// Indicates the type of endpointer event. -type StreamingRecognizeResponse_EndpointerType int32 - -const ( - // No endpointer event specified. - StreamingRecognizeResponse_ENDPOINTER_EVENT_UNSPECIFIED StreamingRecognizeResponse_EndpointerType = 0 - // Speech has been detected in the audio stream, and the service is - // beginning to process it. - StreamingRecognizeResponse_START_OF_SPEECH StreamingRecognizeResponse_EndpointerType = 1 - // Speech has ceased to be detected in the audio stream. (For example, the - // user may have paused after speaking.) If `single_utterance` is `false`, - // the service will continue to process audio, and if subsequent speech is - // detected, will send another START_OF_SPEECH event. - StreamingRecognizeResponse_END_OF_SPEECH StreamingRecognizeResponse_EndpointerType = 2 - // This event is sent after the client has half-closed the input stream gRPC - // connection and the server has received all of the audio. (The server may - // still be processing the audio and may subsequently return additional - // results.) - StreamingRecognizeResponse_END_OF_AUDIO StreamingRecognizeResponse_EndpointerType = 3 - // This event is only sent when `single_utterance` is `true`. It indicates - // that the server has detected the end of the user's speech utterance and - // expects no additional speech. Therefore, the server will not process - // additional audio (although it may subsequently return additional - // results). The client should stop sending additional audio data, - // half-close the gRPC connection, and wait for any additional results - // until the server closes the gRPC connection. - StreamingRecognizeResponse_END_OF_UTTERANCE StreamingRecognizeResponse_EndpointerType = 4 -) - -var StreamingRecognizeResponse_EndpointerType_name = map[int32]string{ - 0: "ENDPOINTER_EVENT_UNSPECIFIED", - 1: "START_OF_SPEECH", - 2: "END_OF_SPEECH", - 3: "END_OF_AUDIO", - 4: "END_OF_UTTERANCE", -} -var StreamingRecognizeResponse_EndpointerType_value = map[string]int32{ - "ENDPOINTER_EVENT_UNSPECIFIED": 0, - "START_OF_SPEECH": 1, - "END_OF_SPEECH": 2, - "END_OF_AUDIO": 3, - "END_OF_UTTERANCE": 4, -} - -func (x StreamingRecognizeResponse_EndpointerType) String() string { - return proto.EnumName(StreamingRecognizeResponse_EndpointerType_name, int32(x)) -} -func (StreamingRecognizeResponse_EndpointerType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{10, 0} -} - -// The top-level message sent by the client for the `SyncRecognize` method. -type SyncRecognizeRequest struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Required* The audio data to be recognized. - Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"` -} - -func (m *SyncRecognizeRequest) Reset() { *m = SyncRecognizeRequest{} } -func (m *SyncRecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*SyncRecognizeRequest) ProtoMessage() {} -func (*SyncRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *SyncRecognizeRequest) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *SyncRecognizeRequest) GetAudio() *RecognitionAudio { - if m != nil { - return m.Audio - } - return nil -} - -// The top-level message sent by the client for the `AsyncRecognize` method. -type AsyncRecognizeRequest struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Required* The audio data to be recognized. - Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"` -} - -func (m *AsyncRecognizeRequest) Reset() { *m = AsyncRecognizeRequest{} } -func (m *AsyncRecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*AsyncRecognizeRequest) ProtoMessage() {} -func (*AsyncRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *AsyncRecognizeRequest) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *AsyncRecognizeRequest) GetAudio() *RecognitionAudio { - if m != nil { - return m.Audio - } - return nil -} - -// The top-level message sent by the client for the `StreamingRecognize` method. -// Multiple `StreamingRecognizeRequest` messages are sent. The first message -// must contain a `streaming_config` message and must not contain `audio` data. -// All subsequent messages must contain `audio` data and must not contain a -// `streaming_config` message. -type StreamingRecognizeRequest struct { - // The streaming request, which is either a streaming config or audio content. - // - // Types that are valid to be assigned to StreamingRequest: - // *StreamingRecognizeRequest_StreamingConfig - // *StreamingRecognizeRequest_AudioContent - StreamingRequest isStreamingRecognizeRequest_StreamingRequest `protobuf_oneof:"streaming_request"` -} - -func (m *StreamingRecognizeRequest) Reset() { *m = StreamingRecognizeRequest{} } -func (m *StreamingRecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognizeRequest) ProtoMessage() {} -func (*StreamingRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isStreamingRecognizeRequest_StreamingRequest interface { - isStreamingRecognizeRequest_StreamingRequest() -} - -type StreamingRecognizeRequest_StreamingConfig struct { - StreamingConfig *StreamingRecognitionConfig `protobuf:"bytes,1,opt,name=streaming_config,json=streamingConfig,oneof"` -} -type StreamingRecognizeRequest_AudioContent struct { - AudioContent []byte `protobuf:"bytes,2,opt,name=audio_content,json=audioContent,proto3,oneof"` -} - -func (*StreamingRecognizeRequest_StreamingConfig) isStreamingRecognizeRequest_StreamingRequest() {} -func (*StreamingRecognizeRequest_AudioContent) isStreamingRecognizeRequest_StreamingRequest() {} - -func (m *StreamingRecognizeRequest) GetStreamingRequest() isStreamingRecognizeRequest_StreamingRequest { - if m != nil { - return m.StreamingRequest - } - return nil -} - -func (m *StreamingRecognizeRequest) GetStreamingConfig() *StreamingRecognitionConfig { - if x, ok := m.GetStreamingRequest().(*StreamingRecognizeRequest_StreamingConfig); ok { - return x.StreamingConfig - } - return nil -} - -func (m *StreamingRecognizeRequest) GetAudioContent() []byte { - if x, ok := m.GetStreamingRequest().(*StreamingRecognizeRequest_AudioContent); ok { - return x.AudioContent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*StreamingRecognizeRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _StreamingRecognizeRequest_OneofMarshaler, _StreamingRecognizeRequest_OneofUnmarshaler, _StreamingRecognizeRequest_OneofSizer, []interface{}{ - (*StreamingRecognizeRequest_StreamingConfig)(nil), - (*StreamingRecognizeRequest_AudioContent)(nil), - } -} - -func _StreamingRecognizeRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*StreamingRecognizeRequest) - // streaming_request - switch x := m.StreamingRequest.(type) { - case *StreamingRecognizeRequest_StreamingConfig: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StreamingConfig); err != nil { - return err - } - case *StreamingRecognizeRequest_AudioContent: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AudioContent) - case nil: - default: - return fmt.Errorf("StreamingRecognizeRequest.StreamingRequest has unexpected type %T", x) - } - return nil -} - -func _StreamingRecognizeRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*StreamingRecognizeRequest) - switch tag { - case 1: // streaming_request.streaming_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StreamingRecognitionConfig) - err := b.DecodeMessage(msg) - m.StreamingRequest = &StreamingRecognizeRequest_StreamingConfig{msg} - return true, err - case 2: // streaming_request.audio_content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StreamingRequest = &StreamingRecognizeRequest_AudioContent{x} - return true, err - default: - return false, nil - } -} - -func _StreamingRecognizeRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*StreamingRecognizeRequest) - // streaming_request - switch x := m.StreamingRequest.(type) { - case *StreamingRecognizeRequest_StreamingConfig: - s := proto.Size(x.StreamingConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StreamingRecognizeRequest_AudioContent: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AudioContent))) - n += len(x.AudioContent) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Provides information to the recognizer that specifies how to process the -// request. -type StreamingRecognitionConfig struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Optional* If `false` or omitted, the recognizer will perform continuous - // recognition (continuing to wait for and process audio even if the user - // pauses speaking) until the client closes the input stream (gRPC API) or - // until the maximum time limit has been reached. May return multiple - // `StreamingRecognitionResult`s with the `is_final` flag set to `true`. - // - // If `true`, the recognizer will detect a single spoken utterance. When it - // detects that the user has paused or stopped speaking, it will return an - // `END_OF_UTTERANCE` event and cease recognition. It will return no more than - // one `StreamingRecognitionResult` with the `is_final` flag set to `true`. - SingleUtterance bool `protobuf:"varint,2,opt,name=single_utterance,json=singleUtterance" json:"single_utterance,omitempty"` - // *Optional* If `true`, interim results (tentative hypotheses) may be - // returned as they become available (these interim results are indicated with - // the `is_final=false` flag). - // If `false` or omitted, only `is_final=true` result(s) are returned. - InterimResults bool `protobuf:"varint,3,opt,name=interim_results,json=interimResults" json:"interim_results,omitempty"` -} - -func (m *StreamingRecognitionConfig) Reset() { *m = StreamingRecognitionConfig{} } -func (m *StreamingRecognitionConfig) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognitionConfig) ProtoMessage() {} -func (*StreamingRecognitionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *StreamingRecognitionConfig) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *StreamingRecognitionConfig) GetSingleUtterance() bool { - if m != nil { - return m.SingleUtterance - } - return false -} - -func (m *StreamingRecognitionConfig) GetInterimResults() bool { - if m != nil { - return m.InterimResults - } - return false -} - -// Provides information to the recognizer that specifies how to process the -// request. -type RecognitionConfig struct { - // *Required* Encoding of audio data sent in all `RecognitionAudio` messages. - Encoding RecognitionConfig_AudioEncoding `protobuf:"varint,1,opt,name=encoding,enum=google.cloud.speech.v1beta1.RecognitionConfig_AudioEncoding" json:"encoding,omitempty"` - // *Required* Sample rate in Hertz of the audio data sent in all - // `RecognitionAudio` messages. Valid values are: 8000-48000. - // 16000 is optimal. For best results, set the sampling rate of the audio - // source to 16000 Hz. If that's not possible, use the native sample rate of - // the audio source (instead of re-sampling). - SampleRate int32 `protobuf:"varint,2,opt,name=sample_rate,json=sampleRate" json:"sample_rate,omitempty"` - // *Optional* The language of the supplied audio as a BCP-47 language tag. - // Example: "en-GB" https://www.rfc-editor.org/rfc/bcp/bcp47.txt - // If omitted, defaults to "en-US". See - // [Language Support](https://cloud.google.com/speech/docs/languages) - // for a list of the currently supported language codes. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // *Optional* Maximum number of recognition hypotheses to be returned. - // Specifically, the maximum number of `SpeechRecognitionAlternative` messages - // within each `SpeechRecognitionResult`. - // The server may return fewer than `max_alternatives`. - // Valid values are `0`-`30`. A value of `0` or `1` will return a maximum of - // one. If omitted, will return a maximum of one. - MaxAlternatives int32 `protobuf:"varint,4,opt,name=max_alternatives,json=maxAlternatives" json:"max_alternatives,omitempty"` - // *Optional* If set to `true`, the server will attempt to filter out - // profanities, replacing all but the initial character in each filtered word - // with asterisks, e.g. "f***". If set to `false` or omitted, profanities - // won't be filtered out. - ProfanityFilter bool `protobuf:"varint,5,opt,name=profanity_filter,json=profanityFilter" json:"profanity_filter,omitempty"` - // *Optional* A means to provide context to assist the speech recognition. - SpeechContext *SpeechContext `protobuf:"bytes,6,opt,name=speech_context,json=speechContext" json:"speech_context,omitempty"` -} - -func (m *RecognitionConfig) Reset() { *m = RecognitionConfig{} } -func (m *RecognitionConfig) String() string { return proto.CompactTextString(m) } -func (*RecognitionConfig) ProtoMessage() {} -func (*RecognitionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *RecognitionConfig) GetEncoding() RecognitionConfig_AudioEncoding { - if m != nil { - return m.Encoding - } - return RecognitionConfig_ENCODING_UNSPECIFIED -} - -func (m *RecognitionConfig) GetSampleRate() int32 { - if m != nil { - return m.SampleRate - } - return 0 -} - -func (m *RecognitionConfig) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *RecognitionConfig) GetMaxAlternatives() int32 { - if m != nil { - return m.MaxAlternatives - } - return 0 -} - -func (m *RecognitionConfig) GetProfanityFilter() bool { - if m != nil { - return m.ProfanityFilter - } - return false -} - -func (m *RecognitionConfig) GetSpeechContext() *SpeechContext { - if m != nil { - return m.SpeechContext - } - return nil -} - -// Provides "hints" to the speech recognizer to favor specific words and phrases -// in the results. -type SpeechContext struct { - // *Optional* A list of strings containing words and phrases "hints" so that - // the speech recognition is more likely to recognize them. This can be used - // to improve the accuracy for specific words and phrases, for example, if - // specific commands are typically spoken by the user. This can also be used - // to add additional words to the vocabulary of the recognizer. See - // [usage limits](https://cloud.google.com/speech/limits#content). - Phrases []string `protobuf:"bytes,1,rep,name=phrases" json:"phrases,omitempty"` -} - -func (m *SpeechContext) Reset() { *m = SpeechContext{} } -func (m *SpeechContext) String() string { return proto.CompactTextString(m) } -func (*SpeechContext) ProtoMessage() {} -func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *SpeechContext) GetPhrases() []string { - if m != nil { - return m.Phrases - } - return nil -} - -// Contains audio data in the encoding specified in the `RecognitionConfig`. -// Either `content` or `uri` must be supplied. Supplying both or neither -// returns [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]. See -// [audio limits](https://cloud.google.com/speech/limits#content). -type RecognitionAudio struct { - // The audio source, which is either inline content or a GCS uri. - // - // Types that are valid to be assigned to AudioSource: - // *RecognitionAudio_Content - // *RecognitionAudio_Uri - AudioSource isRecognitionAudio_AudioSource `protobuf_oneof:"audio_source"` -} - -func (m *RecognitionAudio) Reset() { *m = RecognitionAudio{} } -func (m *RecognitionAudio) String() string { return proto.CompactTextString(m) } -func (*RecognitionAudio) ProtoMessage() {} -func (*RecognitionAudio) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -type isRecognitionAudio_AudioSource interface { - isRecognitionAudio_AudioSource() -} - -type RecognitionAudio_Content struct { - Content []byte `protobuf:"bytes,1,opt,name=content,proto3,oneof"` -} -type RecognitionAudio_Uri struct { - Uri string `protobuf:"bytes,2,opt,name=uri,oneof"` -} - -func (*RecognitionAudio_Content) isRecognitionAudio_AudioSource() {} -func (*RecognitionAudio_Uri) isRecognitionAudio_AudioSource() {} - -func (m *RecognitionAudio) GetAudioSource() isRecognitionAudio_AudioSource { - if m != nil { - return m.AudioSource - } - return nil -} - -func (m *RecognitionAudio) GetContent() []byte { - if x, ok := m.GetAudioSource().(*RecognitionAudio_Content); ok { - return x.Content - } - return nil -} - -func (m *RecognitionAudio) GetUri() string { - if x, ok := m.GetAudioSource().(*RecognitionAudio_Uri); ok { - return x.Uri - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RecognitionAudio) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RecognitionAudio_OneofMarshaler, _RecognitionAudio_OneofUnmarshaler, _RecognitionAudio_OneofSizer, []interface{}{ - (*RecognitionAudio_Content)(nil), - (*RecognitionAudio_Uri)(nil), - } -} - -func _RecognitionAudio_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RecognitionAudio) - // audio_source - switch x := m.AudioSource.(type) { - case *RecognitionAudio_Content: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Content) - case *RecognitionAudio_Uri: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Uri) - case nil: - default: - return fmt.Errorf("RecognitionAudio.AudioSource has unexpected type %T", x) - } - return nil -} - -func _RecognitionAudio_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RecognitionAudio) - switch tag { - case 1: // audio_source.content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.AudioSource = &RecognitionAudio_Content{x} - return true, err - case 2: // audio_source.uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.AudioSource = &RecognitionAudio_Uri{x} - return true, err - default: - return false, nil - } -} - -func _RecognitionAudio_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RecognitionAudio) - // audio_source - switch x := m.AudioSource.(type) { - case *RecognitionAudio_Content: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Content))) - n += len(x.Content) - case *RecognitionAudio_Uri: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Uri))) - n += len(x.Uri) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The only message returned to the client by `SyncRecognize`. method. It -// contains the result as zero or more sequential `SpeechRecognitionResult` -// messages. -type SyncRecognizeResponse struct { - // *Output-only* Sequential list of transcription results corresponding to - // sequential portions of audio. - Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` -} - -func (m *SyncRecognizeResponse) Reset() { *m = SyncRecognizeResponse{} } -func (m *SyncRecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*SyncRecognizeResponse) ProtoMessage() {} -func (*SyncRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *SyncRecognizeResponse) GetResults() []*SpeechRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -// The only message returned to the client by `AsyncRecognize`. It contains the -// result as zero or more sequential `SpeechRecognitionResult` messages. It is -// included in the `result.response` field of the `Operation` returned by the -// `GetOperation` call of the `google::longrunning::Operations` service. -type AsyncRecognizeResponse struct { - // *Output-only* Sequential list of transcription results corresponding to - // sequential portions of audio. - Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` -} - -func (m *AsyncRecognizeResponse) Reset() { *m = AsyncRecognizeResponse{} } -func (m *AsyncRecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*AsyncRecognizeResponse) ProtoMessage() {} -func (*AsyncRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *AsyncRecognizeResponse) GetResults() []*SpeechRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -// Describes the progress of a long-running `AsyncRecognize` call. It is -// included in the `metadata` field of the `Operation` returned by the -// `GetOperation` call of the `google::longrunning::Operations` service. -type AsyncRecognizeMetadata struct { - // Approximate percentage of audio processed thus far. Guaranteed to be 100 - // when the audio is fully processed and the results are available. - ProgressPercent int32 `protobuf:"varint,1,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"` - // Time when the request was received. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time of the most recent processing update. - LastUpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` -} - -func (m *AsyncRecognizeMetadata) Reset() { *m = AsyncRecognizeMetadata{} } -func (m *AsyncRecognizeMetadata) String() string { return proto.CompactTextString(m) } -func (*AsyncRecognizeMetadata) ProtoMessage() {} -func (*AsyncRecognizeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *AsyncRecognizeMetadata) GetProgressPercent() int32 { - if m != nil { - return m.ProgressPercent - } - return 0 -} - -func (m *AsyncRecognizeMetadata) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *AsyncRecognizeMetadata) GetLastUpdateTime() *google_protobuf4.Timestamp { - if m != nil { - return m.LastUpdateTime - } - return nil -} - -// `StreamingRecognizeResponse` is the only message returned to the client by -// `StreamingRecognize`. A series of one or more `StreamingRecognizeResponse` -// messages are streamed back to the client. -// -// Here's an example of a series of ten `StreamingRecognizeResponse`s that might -// be returned while processing audio: -// -// 1. endpointer_type: START_OF_SPEECH -// -// 2. results { alternatives { transcript: "tube" } stability: 0.01 } -// result_index: 0 -// -// 3. results { alternatives { transcript: "to be a" } stability: 0.01 } -// result_index: 0 -// -// 4. results { alternatives { transcript: "to be" } stability: 0.9 } -// results { alternatives { transcript: " or not to be" } stability: 0.01 } -// result_index: 0 -// -// 5. results { alternatives { transcript: "to be or not to be" -// confidence: 0.92 } -// alternatives { transcript: "to bee or not to bee" } -// is_final: true } -// result_index: 0 -// -// 6. results { alternatives { transcript: " that's" } stability: 0.01 } -// result_index: 1 -// -// 7. results { alternatives { transcript: " that is" } stability: 0.9 } -// results { alternatives { transcript: " the question" } stability: 0.01 } -// result_index: 1 -// -// 8. endpointer_type: END_OF_SPEECH -// -// 9. results { alternatives { transcript: " that is the question" -// confidence: 0.98 } -// alternatives { transcript: " that was the question" } -// is_final: true } -// result_index: 1 -// -// 10. endpointer_type: END_OF_AUDIO -// -// Notes: -// -// - Only two of the above responses #5 and #9 contain final results, they are -// indicated by `is_final: true`. Concatenating these together generates the -// full transcript: "to be or not to be that is the question". -// -// - The others contain interim `results`. #4 and #7 contain two interim -// `results`, the first portion has a high stability and is less likely to -// change, the second portion has a low stability and is very likely to -// change. A UI designer might choose to show only high stability `results`. -// -// - The specific `stability` and `confidence` values shown above are only for -// illustrative purposes. Actual values may vary. -// -// - The `result_index` indicates the portion of audio that has had final -// results returned, and is no longer being processed. For example, the -// `results` in #6 and later correspond to the portion of audio after -// "to be or not to be". -type StreamingRecognizeResponse struct { - // *Output-only* If set, returns a [google.rpc.Status][google.rpc.Status] message that - // specifies the error for the operation. - Error *google_rpc.Status `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` - // *Output-only* This repeated list contains zero or more results that - // correspond to consecutive portions of the audio currently being processed. - // It contains zero or one `is_final=true` result (the newly settled portion), - // followed by zero or more `is_final=false` results. - Results []*StreamingRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` - // *Output-only* Indicates the lowest index in the `results` array that has - // changed. The repeated `StreamingRecognitionResult` results overwrite past - // results at this index and higher. - ResultIndex int32 `protobuf:"varint,3,opt,name=result_index,json=resultIndex" json:"result_index,omitempty"` - // *Output-only* Indicates the type of endpointer event. - EndpointerType StreamingRecognizeResponse_EndpointerType `protobuf:"varint,4,opt,name=endpointer_type,json=endpointerType,enum=google.cloud.speech.v1beta1.StreamingRecognizeResponse_EndpointerType" json:"endpointer_type,omitempty"` -} - -func (m *StreamingRecognizeResponse) Reset() { *m = StreamingRecognizeResponse{} } -func (m *StreamingRecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognizeResponse) ProtoMessage() {} -func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *StreamingRecognizeResponse) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -func (m *StreamingRecognizeResponse) GetResults() []*StreamingRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -func (m *StreamingRecognizeResponse) GetResultIndex() int32 { - if m != nil { - return m.ResultIndex - } - return 0 -} - -func (m *StreamingRecognizeResponse) GetEndpointerType() StreamingRecognizeResponse_EndpointerType { - if m != nil { - return m.EndpointerType - } - return StreamingRecognizeResponse_ENDPOINTER_EVENT_UNSPECIFIED -} - -// A streaming speech recognition result corresponding to a portion of the audio -// that is currently being processed. -type StreamingRecognitionResult struct { - // *Output-only* May contain one or more recognition hypotheses (up to the - // maximum specified in `max_alternatives`). - Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"` - // *Output-only* If `false`, this `StreamingRecognitionResult` represents an - // interim result that may change. If `true`, this is the final time the - // speech service will return this particular `StreamingRecognitionResult`, - // the recognizer will not return any further hypotheses for this portion of - // the transcript and corresponding audio. - IsFinal bool `protobuf:"varint,2,opt,name=is_final,json=isFinal" json:"is_final,omitempty"` - // *Output-only* An estimate of the likelihood that the recognizer will not - // change its guess about this interim result. Values range from 0.0 - // (completely unstable) to 1.0 (completely stable). - // This field is only provided for interim results (`is_final=false`). - // The default of 0.0 is a sentinel value indicating `stability` was not set. - Stability float32 `protobuf:"fixed32,3,opt,name=stability" json:"stability,omitempty"` -} - -func (m *StreamingRecognitionResult) Reset() { *m = StreamingRecognitionResult{} } -func (m *StreamingRecognitionResult) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognitionResult) ProtoMessage() {} -func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *StreamingRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative { - if m != nil { - return m.Alternatives - } - return nil -} - -func (m *StreamingRecognitionResult) GetIsFinal() bool { - if m != nil { - return m.IsFinal - } - return false -} - -func (m *StreamingRecognitionResult) GetStability() float32 { - if m != nil { - return m.Stability - } - return 0 -} - -// A speech recognition result corresponding to a portion of the audio. -type SpeechRecognitionResult struct { - // *Output-only* May contain one or more recognition hypotheses (up to the - // maximum specified in `max_alternatives`). - Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"` -} - -func (m *SpeechRecognitionResult) Reset() { *m = SpeechRecognitionResult{} } -func (m *SpeechRecognitionResult) String() string { return proto.CompactTextString(m) } -func (*SpeechRecognitionResult) ProtoMessage() {} -func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *SpeechRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative { - if m != nil { - return m.Alternatives - } - return nil -} - -// Alternative hypotheses (a.k.a. n-best list). -type SpeechRecognitionAlternative struct { - // *Output-only* Transcript text representing the words that the user spoke. - Transcript string `protobuf:"bytes,1,opt,name=transcript" json:"transcript,omitempty"` - // *Output-only* The confidence estimate between 0.0 and 1.0. A higher number - // indicates an estimated greater likelihood that the recognized words are - // correct. This field is typically provided only for the top hypothesis, and - // only for `is_final=true` results. Clients should not rely on the - // `confidence` field as it is not guaranteed to be accurate, or even set, in - // any of the results. - // The default of 0.0 is a sentinel value indicating `confidence` was not set. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *SpeechRecognitionAlternative) Reset() { *m = SpeechRecognitionAlternative{} } -func (m *SpeechRecognitionAlternative) String() string { return proto.CompactTextString(m) } -func (*SpeechRecognitionAlternative) ProtoMessage() {} -func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *SpeechRecognitionAlternative) GetTranscript() string { - if m != nil { - return m.Transcript - } - return "" -} - -func (m *SpeechRecognitionAlternative) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func init() { - proto.RegisterType((*SyncRecognizeRequest)(nil), "google.cloud.speech.v1beta1.SyncRecognizeRequest") - proto.RegisterType((*AsyncRecognizeRequest)(nil), "google.cloud.speech.v1beta1.AsyncRecognizeRequest") - proto.RegisterType((*StreamingRecognizeRequest)(nil), "google.cloud.speech.v1beta1.StreamingRecognizeRequest") - proto.RegisterType((*StreamingRecognitionConfig)(nil), "google.cloud.speech.v1beta1.StreamingRecognitionConfig") - proto.RegisterType((*RecognitionConfig)(nil), "google.cloud.speech.v1beta1.RecognitionConfig") - proto.RegisterType((*SpeechContext)(nil), "google.cloud.speech.v1beta1.SpeechContext") - proto.RegisterType((*RecognitionAudio)(nil), "google.cloud.speech.v1beta1.RecognitionAudio") - proto.RegisterType((*SyncRecognizeResponse)(nil), "google.cloud.speech.v1beta1.SyncRecognizeResponse") - proto.RegisterType((*AsyncRecognizeResponse)(nil), "google.cloud.speech.v1beta1.AsyncRecognizeResponse") - proto.RegisterType((*AsyncRecognizeMetadata)(nil), "google.cloud.speech.v1beta1.AsyncRecognizeMetadata") - proto.RegisterType((*StreamingRecognizeResponse)(nil), "google.cloud.speech.v1beta1.StreamingRecognizeResponse") - proto.RegisterType((*StreamingRecognitionResult)(nil), "google.cloud.speech.v1beta1.StreamingRecognitionResult") - proto.RegisterType((*SpeechRecognitionResult)(nil), "google.cloud.speech.v1beta1.SpeechRecognitionResult") - proto.RegisterType((*SpeechRecognitionAlternative)(nil), "google.cloud.speech.v1beta1.SpeechRecognitionAlternative") - proto.RegisterEnum("google.cloud.speech.v1beta1.RecognitionConfig_AudioEncoding", RecognitionConfig_AudioEncoding_name, RecognitionConfig_AudioEncoding_value) - proto.RegisterEnum("google.cloud.speech.v1beta1.StreamingRecognizeResponse_EndpointerType", StreamingRecognizeResponse_EndpointerType_name, StreamingRecognizeResponse_EndpointerType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Speech service - -type SpeechClient interface { - // Performs synchronous speech recognition: receive results after all audio - // has been sent and processed. - SyncRecognize(ctx context.Context, in *SyncRecognizeRequest, opts ...grpc.CallOption) (*SyncRecognizeResponse, error) - // Performs asynchronous speech recognition: receive results via the - // [google.longrunning.Operations] - // (/speech/reference/rest/v1beta1/operations#Operation) - // interface. Returns either an - // `Operation.error` or an `Operation.response` which contains - // an `AsyncRecognizeResponse` message. - AsyncRecognize(ctx context.Context, in *AsyncRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Performs bidirectional streaming speech recognition: receive results while - // sending audio. This method is only available via the gRPC API (not REST). - StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error) -} - -type speechClient struct { - cc *grpc.ClientConn -} - -func NewSpeechClient(cc *grpc.ClientConn) SpeechClient { - return &speechClient{cc} -} - -func (c *speechClient) SyncRecognize(ctx context.Context, in *SyncRecognizeRequest, opts ...grpc.CallOption) (*SyncRecognizeResponse, error) { - out := new(SyncRecognizeResponse) - err := grpc.Invoke(ctx, "/google.cloud.speech.v1beta1.Speech/SyncRecognize", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *speechClient) AsyncRecognize(ctx context.Context, in *AsyncRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.speech.v1beta1.Speech/AsyncRecognize", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *speechClient) StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Speech_serviceDesc.Streams[0], c.cc, "/google.cloud.speech.v1beta1.Speech/StreamingRecognize", opts...) - if err != nil { - return nil, err - } - x := &speechStreamingRecognizeClient{stream} - return x, nil -} - -type Speech_StreamingRecognizeClient interface { - Send(*StreamingRecognizeRequest) error - Recv() (*StreamingRecognizeResponse, error) - grpc.ClientStream -} - -type speechStreamingRecognizeClient struct { - grpc.ClientStream -} - -func (x *speechStreamingRecognizeClient) Send(m *StreamingRecognizeRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *speechStreamingRecognizeClient) Recv() (*StreamingRecognizeResponse, error) { - m := new(StreamingRecognizeResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for Speech service - -type SpeechServer interface { - // Performs synchronous speech recognition: receive results after all audio - // has been sent and processed. - SyncRecognize(context.Context, *SyncRecognizeRequest) (*SyncRecognizeResponse, error) - // Performs asynchronous speech recognition: receive results via the - // [google.longrunning.Operations] - // (/speech/reference/rest/v1beta1/operations#Operation) - // interface. Returns either an - // `Operation.error` or an `Operation.response` which contains - // an `AsyncRecognizeResponse` message. - AsyncRecognize(context.Context, *AsyncRecognizeRequest) (*google_longrunning.Operation, error) - // Performs bidirectional streaming speech recognition: receive results while - // sending audio. This method is only available via the gRPC API (not REST). - StreamingRecognize(Speech_StreamingRecognizeServer) error -} - -func RegisterSpeechServer(s *grpc.Server, srv SpeechServer) { - s.RegisterService(&_Speech_serviceDesc, srv) -} - -func _Speech_SyncRecognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SyncRecognizeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpeechServer).SyncRecognize(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.speech.v1beta1.Speech/SyncRecognize", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpeechServer).SyncRecognize(ctx, req.(*SyncRecognizeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Speech_AsyncRecognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AsyncRecognizeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpeechServer).AsyncRecognize(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.speech.v1beta1.Speech/AsyncRecognize", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpeechServer).AsyncRecognize(ctx, req.(*AsyncRecognizeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Speech_StreamingRecognize_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(SpeechServer).StreamingRecognize(&speechStreamingRecognizeServer{stream}) -} - -type Speech_StreamingRecognizeServer interface { - Send(*StreamingRecognizeResponse) error - Recv() (*StreamingRecognizeRequest, error) - grpc.ServerStream -} - -type speechStreamingRecognizeServer struct { - grpc.ServerStream -} - -func (x *speechStreamingRecognizeServer) Send(m *StreamingRecognizeResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *speechStreamingRecognizeServer) Recv() (*StreamingRecognizeRequest, error) { - m := new(StreamingRecognizeRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _Speech_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.speech.v1beta1.Speech", - HandlerType: (*SpeechServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SyncRecognize", - Handler: _Speech_SyncRecognize_Handler, - }, - { - MethodName: "AsyncRecognize", - Handler: _Speech_AsyncRecognize_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingRecognize", - Handler: _Speech_StreamingRecognize_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/cloud/speech/v1beta1/cloud_speech.proto", -} - -func init() { proto.RegisterFile("google/cloud/speech/v1beta1/cloud_speech.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1214 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0xc5, - 0x1b, 0xcf, 0xda, 0x71, 0x5e, 0x9e, 0xd8, 0xce, 0x76, 0xda, 0xfe, 0xeb, 0xfa, 0x9f, 0xb6, 0x61, - 0x2b, 0x44, 0x5a, 0x89, 0x35, 0x09, 0xa8, 0x55, 0x0b, 0x17, 0xc7, 0x59, 0x13, 0x4b, 0x8d, 0x93, - 0x4e, 0x1c, 0x8a, 0x90, 0x60, 0x35, 0x59, 0x4f, 0xb6, 0x2b, 0xd9, 0x33, 0xcb, 0xcc, 0x6c, 0x95, - 0x70, 0xec, 0x8d, 0x0b, 0x17, 0xbe, 0x00, 0x12, 0x7c, 0x02, 0xc4, 0x81, 0x0b, 0xe2, 0xc2, 0x81, - 0x3b, 0x5f, 0x81, 0x0f, 0x82, 0x76, 0x66, 0x37, 0xb1, 0x9d, 0xc6, 0x34, 0x88, 0x4a, 0xdc, 0xfc, - 0xfc, 0x9e, 0x97, 0xf9, 0xed, 0x33, 0xcf, 0xcb, 0x18, 0xdc, 0x90, 0xf3, 0x70, 0x40, 0x1b, 0xc1, - 0x80, 0x27, 0xfd, 0x86, 0x8c, 0x29, 0x0d, 0x9e, 0x37, 0x5e, 0xac, 0x1f, 0x52, 0x45, 0xd6, 0x0d, - 0xe8, 0x1b, 0xd0, 0x8d, 0x05, 0x57, 0x1c, 0xfd, 0xdf, 0xd8, 0xbb, 0x5a, 0xe5, 0x66, 0xaa, 0xcc, - 0xbe, 0xbe, 0x92, 0x05, 0x23, 0x71, 0xd4, 0x20, 0x8c, 0x71, 0x45, 0x54, 0xc4, 0x99, 0x34, 0xae, - 0xf5, 0xbb, 0x99, 0x76, 0xc0, 0x59, 0x28, 0x12, 0xc6, 0x22, 0x16, 0x36, 0x78, 0x4c, 0xc5, 0x98, - 0xd1, 0xed, 0xcc, 0x48, 0x4b, 0x87, 0xc9, 0x51, 0xa3, 0x9f, 0x18, 0x83, 0x4c, 0x7f, 0x67, 0x52, - 0xaf, 0xa2, 0x21, 0x95, 0x8a, 0x0c, 0xe3, 0xcc, 0xe0, 0x46, 0x66, 0x20, 0xe2, 0xa0, 0x21, 0x15, - 0x51, 0x49, 0x16, 0xd9, 0xf9, 0xde, 0x82, 0x6b, 0xfb, 0x27, 0x2c, 0xc0, 0x34, 0xe0, 0x21, 0x8b, - 0xbe, 0xa2, 0x98, 0x7e, 0x99, 0x50, 0xa9, 0x50, 0x1b, 0xe6, 0x02, 0xce, 0x8e, 0xa2, 0xb0, 0x66, - 0xad, 0x5a, 0x6b, 0x4b, 0x1b, 0xae, 0x3b, 0xe5, 0x1b, 0xdd, 0xcc, 0x3d, 0xa5, 0xd4, 0xd2, 0x5e, - 0x38, 0xf3, 0x46, 0x2d, 0x28, 0x91, 0xa4, 0x1f, 0xf1, 0x5a, 0x41, 0x87, 0x79, 0xf7, 0x75, 0xc3, - 0x34, 0x53, 0x27, 0x6c, 0x7c, 0x9d, 0x1f, 0x2c, 0xb8, 0xde, 0x94, 0xff, 0x79, 0x9a, 0xbf, 0x58, - 0x70, 0x73, 0x5f, 0x09, 0x4a, 0x86, 0x11, 0x0b, 0xcf, 0x51, 0xed, 0x83, 0x2d, 0x73, 0xa5, 0x3f, - 0x46, 0xfa, 0xe1, 0xd4, 0xd3, 0x26, 0x23, 0x9e, 0xb1, 0xdf, 0x9e, 0xc1, 0xcb, 0xa7, 0x21, 0x0d, - 0x84, 0xde, 0x86, 0x8a, 0x26, 0x93, 0x9e, 0xa0, 0x28, 0x53, 0xfa, 0x83, 0xca, 0xdb, 0x33, 0xb8, - 0xac, 0xe1, 0x96, 0x41, 0x37, 0xaf, 0xc2, 0x95, 0x33, 0x32, 0xc2, 0x30, 0x74, 0x7e, 0xb6, 0xa0, - 0x7e, 0xf1, 0x69, 0xff, 0x5a, 0xae, 0xef, 0x81, 0x2d, 0x23, 0x16, 0x0e, 0xa8, 0x9f, 0x28, 0x45, - 0x05, 0x61, 0x01, 0xd5, 0x2c, 0x17, 0xf0, 0xb2, 0xc1, 0x0f, 0x72, 0x18, 0xbd, 0x03, 0xcb, 0x11, - 0x53, 0x54, 0x44, 0x43, 0x5f, 0x50, 0x99, 0x0c, 0x94, 0xac, 0x15, 0xb5, 0x65, 0x35, 0x83, 0xb1, - 0x41, 0x9d, 0x5f, 0x8b, 0x70, 0xe5, 0x3c, 0xe3, 0x4f, 0x61, 0x81, 0xb2, 0x80, 0xf7, 0x23, 0x66, - 0x38, 0x57, 0x37, 0x3e, 0xba, 0x1c, 0x67, 0x57, 0xdf, 0xaf, 0x97, 0xc5, 0xc0, 0xa7, 0xd1, 0xd0, - 0x1d, 0x58, 0x92, 0x64, 0x18, 0x0f, 0xa8, 0x2f, 0x88, 0x32, 0xf4, 0x4b, 0x18, 0x0c, 0x84, 0x89, - 0xa2, 0xe8, 0x2e, 0x54, 0x06, 0x84, 0x85, 0x09, 0x09, 0xa9, 0x1f, 0xf0, 0x3e, 0xd5, 0xbc, 0x17, - 0x71, 0x39, 0x07, 0x5b, 0xbc, 0x4f, 0xd3, 0x4c, 0x0c, 0xc9, 0xb1, 0x4f, 0x06, 0x8a, 0x0a, 0x46, - 0x54, 0xf4, 0x82, 0xca, 0xda, 0xac, 0x0e, 0xb5, 0x3c, 0x24, 0xc7, 0xcd, 0x11, 0x38, 0x35, 0x8d, - 0x05, 0x3f, 0x22, 0x2c, 0x52, 0x27, 0xfe, 0x51, 0x94, 0xaa, 0x6a, 0x25, 0x93, 0xb4, 0x53, 0xbc, - 0xad, 0x61, 0xf4, 0x14, 0xaa, 0xe6, 0xbb, 0x4c, 0x0d, 0x1c, 0xab, 0xda, 0x9c, 0xbe, 0xaf, 0xfb, - 0xd3, 0xcb, 0x4c, 0x8b, 0x2d, 0xe3, 0x81, 0x2b, 0x72, 0x54, 0x74, 0x08, 0x54, 0xc6, 0x32, 0x81, - 0x6a, 0x70, 0xcd, 0xeb, 0xb6, 0x76, 0xb7, 0x3a, 0xdd, 0x8f, 0xfd, 0x83, 0xee, 0xfe, 0x9e, 0xd7, - 0xea, 0xb4, 0x3b, 0xde, 0x96, 0x3d, 0x83, 0xca, 0xb0, 0xf0, 0xa4, 0xd3, 0xf5, 0x9a, 0x78, 0xfd, - 0x81, 0x6d, 0xa1, 0x05, 0x98, 0x6d, 0x3f, 0x69, 0xb6, 0xec, 0x02, 0x5a, 0x84, 0xd2, 0xce, 0xc1, - 0x93, 0xe6, 0x33, 0xbb, 0x88, 0xe6, 0xa1, 0xd8, 0xdc, 0xc1, 0xf6, 0x2c, 0x02, 0x98, 0x6b, 0xee, - 0x60, 0xff, 0xd9, 0xa6, 0x5d, 0x72, 0xee, 0x41, 0x65, 0x8c, 0x02, 0xaa, 0xc1, 0x7c, 0xfc, 0x5c, - 0x10, 0x49, 0x65, 0xcd, 0x5a, 0x2d, 0xae, 0x2d, 0xe2, 0x5c, 0x74, 0x30, 0xd8, 0x93, 0x2d, 0x88, - 0xea, 0x30, 0x9f, 0x57, 0xbc, 0x95, 0x55, 0x7c, 0x0e, 0x20, 0x04, 0xc5, 0x44, 0x44, 0xfa, 0x92, - 0x16, 0xb7, 0x67, 0x70, 0x2a, 0x6c, 0x56, 0xc1, 0x34, 0x84, 0x2f, 0x79, 0x22, 0x02, 0xea, 0x84, - 0x70, 0x7d, 0x62, 0x0e, 0xca, 0x98, 0x33, 0x49, 0x51, 0x17, 0xe6, 0xf3, 0xd2, 0x2b, 0xac, 0x16, - 0xd7, 0x96, 0x36, 0x3e, 0x78, 0x8d, 0x34, 0x8e, 0xd0, 0x33, 0x15, 0x8a, 0xf3, 0x20, 0xce, 0x73, - 0xf8, 0xdf, 0xe4, 0x28, 0x7b, 0x43, 0x27, 0xfd, 0x66, 0x4d, 0x1e, 0xb5, 0x43, 0x15, 0xe9, 0x13, - 0x45, 0xb2, 0x6a, 0x0a, 0x05, 0x95, 0xd2, 0x8f, 0xa9, 0x08, 0xf2, 0xb4, 0x95, 0x74, 0x35, 0x69, - 0x7c, 0xcf, 0xc0, 0xe8, 0x11, 0x80, 0x54, 0x44, 0x28, 0x3f, 0xdd, 0x29, 0xd9, 0x78, 0xac, 0xe7, - 0xc4, 0xf2, 0x85, 0xe3, 0xf6, 0xf2, 0x85, 0x83, 0x17, 0xb5, 0x75, 0x2a, 0xa3, 0x2d, 0xb0, 0x07, - 0x44, 0x2a, 0x3f, 0x89, 0xfb, 0x44, 0x51, 0x13, 0xa0, 0xf8, 0xb7, 0x01, 0xaa, 0xa9, 0xcf, 0x81, - 0x76, 0x49, 0x41, 0xe7, 0xc7, 0xe2, 0xf9, 0xa9, 0x34, 0x92, 0xb5, 0x35, 0x28, 0x51, 0x21, 0xb8, - 0xc8, 0x86, 0x12, 0xca, 0x23, 0x8b, 0x38, 0x70, 0xf7, 0xf5, 0xaa, 0xc3, 0xc6, 0x00, 0x3d, 0x9d, - 0xcc, 0xef, 0xe5, 0xe7, 0xee, 0x44, 0x8a, 0xd1, 0x5b, 0x50, 0x36, 0x3f, 0xfd, 0x88, 0xf5, 0xe9, - 0xb1, 0xfe, 0xba, 0x12, 0x5e, 0x32, 0x58, 0x27, 0x85, 0x10, 0x87, 0x65, 0xca, 0xfa, 0x31, 0xd7, - 0x03, 0xcb, 0x57, 0x27, 0x31, 0xd5, 0x2d, 0x5e, 0xdd, 0x68, 0x5f, 0xea, 0xf4, 0xb3, 0x2f, 0x76, - 0xbd, 0xd3, 0x70, 0xbd, 0x93, 0x98, 0xe2, 0x2a, 0x1d, 0x93, 0x9d, 0x97, 0x16, 0x54, 0xc7, 0x4d, - 0xd0, 0x2a, 0xac, 0x78, 0xdd, 0xad, 0xbd, 0xdd, 0x4e, 0xb7, 0xe7, 0x61, 0xdf, 0xfb, 0xc4, 0xeb, - 0xf6, 0x26, 0xba, 0xf6, 0x2a, 0x2c, 0xef, 0xf7, 0x9a, 0xb8, 0xe7, 0xef, 0xb6, 0xfd, 0xfd, 0x3d, - 0xcf, 0x6b, 0x6d, 0xdb, 0x16, 0xba, 0x02, 0x15, 0xaf, 0xbb, 0x35, 0x02, 0x15, 0x90, 0x0d, 0xe5, - 0x0c, 0x6a, 0x1e, 0x6c, 0x75, 0x76, 0xed, 0x22, 0xba, 0x06, 0x76, 0x86, 0x1c, 0xf4, 0x7a, 0x1e, - 0x6e, 0x76, 0x5b, 0x9e, 0x3d, 0xeb, 0xfc, 0x74, 0xc1, 0x2a, 0x31, 0x09, 0x44, 0x9f, 0x43, 0x79, - 0x6c, 0xe8, 0x59, 0xfa, 0x3e, 0x1e, 0x5d, 0xae, 0xde, 0x47, 0xe6, 0x23, 0x1e, 0x0b, 0x87, 0x6e, - 0xc2, 0x42, 0x24, 0xfd, 0xa3, 0x88, 0x91, 0x41, 0xb6, 0x59, 0xe6, 0x23, 0xd9, 0x4e, 0x45, 0xb4, - 0x02, 0x69, 0x81, 0x1e, 0x46, 0x83, 0x48, 0x9d, 0xe8, 0xeb, 0x2a, 0xe0, 0x33, 0xc0, 0x39, 0x86, - 0x1b, 0x17, 0xb4, 0xd5, 0x1b, 0xa6, 0xec, 0x7c, 0x01, 0x2b, 0xd3, 0xac, 0xd1, 0x6d, 0x00, 0x25, - 0x08, 0x93, 0x81, 0x88, 0x62, 0xd3, 0xab, 0x8b, 0x78, 0x04, 0x49, 0xf5, 0x7a, 0xbd, 0xf6, 0x69, - 0xbe, 0x4e, 0x0b, 0x78, 0x04, 0xd9, 0xf8, 0xbd, 0x08, 0x73, 0xe6, 0x00, 0xf4, 0x9d, 0x05, 0x95, - 0xb1, 0x59, 0x87, 0xd6, 0xa7, 0x7f, 0xc5, 0x2b, 0x1e, 0x5e, 0xf5, 0x8d, 0xcb, 0xb8, 0x98, 0xc2, - 0x75, 0xd6, 0x5e, 0xfe, 0xf1, 0xe7, 0xb7, 0x05, 0xc7, 0xb9, 0x75, 0xfa, 0x96, 0x36, 0x6e, 0x8f, - 0xd3, 0x21, 0x25, 0x72, 0xf3, 0xc7, 0xd6, 0x7d, 0xf4, 0x8d, 0x05, 0xd5, 0xf1, 0xd1, 0x85, 0xa6, - 0x1f, 0xf8, 0xca, 0xd7, 0x61, 0xfd, 0x56, 0xee, 0x33, 0xf2, 0xba, 0x76, 0x77, 0xf3, 0xd7, 0xb5, - 0x73, 0x4f, 0xf3, 0xb9, 0xeb, 0xdc, 0x9e, 0xe4, 0x43, 0xce, 0x11, 0xfa, 0xda, 0x02, 0x74, 0xbe, - 0x25, 0xd1, 0x83, 0x4b, 0xf7, 0xb0, 0x21, 0xf6, 0xf0, 0x1f, 0xf6, 0xfe, 0x9a, 0xf5, 0x9e, 0xb5, - 0x29, 0xe1, 0x4e, 0xc0, 0x87, 0xd3, 0x22, 0x6c, 0x2e, 0x99, 0xab, 0xde, 0x4b, 0xa7, 0xeb, 0x9e, - 0xf5, 0x59, 0x33, 0xb3, 0x0d, 0x79, 0xfa, 0xfc, 0x70, 0xb9, 0x08, 0x1b, 0x21, 0x65, 0x7a, 0xf6, - 0x36, 0x8c, 0x8a, 0xc4, 0x91, 0x7c, 0xe5, 0xdf, 0x9d, 0x0f, 0x8d, 0x78, 0x38, 0xa7, 0xad, 0xdf, - 0xff, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x25, 0x0d, 0x06, 0x48, 0x1b, 0x0d, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go deleted file mode 100644 index 1a65d2eb..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1/cloud_speech.pb.go +++ /dev/null @@ -1,1646 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/speech/v1_1beta1/cloud_speech.proto - -/* -Package speech is a generated protocol buffer package. - -It is generated from these files: - google/cloud/speech/v1_1beta1/cloud_speech.proto - -It has these top-level messages: - RecognizeRequest - LongRunningRecognizeRequest - StreamingRecognizeRequest - StreamingRecognitionConfig - RecognitionConfig - RecognitionMetadata - SpeechContext - RecognitionAudio - RecognizeResponse - LongRunningRecognizeResponse - LongRunningRecognizeMetadata - StreamingRecognizeResponse - StreamingRecognitionResult - SpeechRecognitionResult - SpeechRecognitionAlternative - WordInfo -*/ -package speech - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Audio encoding of the data sent in the audio message. All encodings support -// only 1 channel (mono) audio. Only `FLAC` includes a header that describes -// the bytes of audio that follow the header. The other encodings are raw -// audio bytes with no header. -// -// For best results, the audio source should be captured and transmitted using -// a lossless encoding (`FLAC` or `LINEAR16`). Recognition accuracy may be -// reduced if lossy codecs, which include the other codecs listed in -// this section, are used to capture or transmit the audio, particularly if -// background noise is present. -type RecognitionConfig_AudioEncoding int32 - -const ( - // Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]. - RecognitionConfig_ENCODING_UNSPECIFIED RecognitionConfig_AudioEncoding = 0 - // Uncompressed 16-bit signed little-endian samples (Linear PCM). - RecognitionConfig_LINEAR16 RecognitionConfig_AudioEncoding = 1 - // [`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio - // Codec) is the recommended encoding because it is - // lossless--therefore recognition is not compromised--and - // requires only about half the bandwidth of `LINEAR16`. `FLAC` stream - // encoding supports 16-bit and 24-bit samples, however, not all fields in - // `STREAMINFO` are supported. - RecognitionConfig_FLAC RecognitionConfig_AudioEncoding = 2 - // 8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law. - RecognitionConfig_MULAW RecognitionConfig_AudioEncoding = 3 - // Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000. - RecognitionConfig_AMR RecognitionConfig_AudioEncoding = 4 - // Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000. - RecognitionConfig_AMR_WB RecognitionConfig_AudioEncoding = 5 - // Opus encoded audio frames in Ogg container - // ([OggOpus](https://wiki.xiph.org/OggOpus)). - // `sample_rate_hertz` must be 16000. - RecognitionConfig_OGG_OPUS RecognitionConfig_AudioEncoding = 6 - // Although the use of lossy encodings is not recommended, if a very low - // bitrate encoding is required, `OGG_OPUS` is highly preferred over - // Speex encoding. The [Speex](https://speex.org/) encoding supported by - // Cloud Speech API has a header byte in each block, as in MIME type - // `audio/x-speex-with-header-byte`. - // It is a variant of the RTP Speex encoding defined in - // [RFC 5574](https://tools.ietf.org/html/rfc5574). - // The stream is a sequence of blocks, one block per RTP packet. Each block - // starts with a byte containing the length of the block, in bytes, followed - // by one or more frames of Speex data, padded to an integral number of - // bytes (octets) as specified in RFC 5574. In other words, each RTP header - // is replaced with a single byte containing the block length. Only Speex - // wideband is supported. `sample_rate_hertz` must be 16000. - RecognitionConfig_SPEEX_WITH_HEADER_BYTE RecognitionConfig_AudioEncoding = 7 -) - -var RecognitionConfig_AudioEncoding_name = map[int32]string{ - 0: "ENCODING_UNSPECIFIED", - 1: "LINEAR16", - 2: "FLAC", - 3: "MULAW", - 4: "AMR", - 5: "AMR_WB", - 6: "OGG_OPUS", - 7: "SPEEX_WITH_HEADER_BYTE", -} -var RecognitionConfig_AudioEncoding_value = map[string]int32{ - "ENCODING_UNSPECIFIED": 0, - "LINEAR16": 1, - "FLAC": 2, - "MULAW": 3, - "AMR": 4, - "AMR_WB": 5, - "OGG_OPUS": 6, - "SPEEX_WITH_HEADER_BYTE": 7, -} - -func (x RecognitionConfig_AudioEncoding) String() string { - return proto.EnumName(RecognitionConfig_AudioEncoding_name, int32(x)) -} -func (RecognitionConfig_AudioEncoding) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{4, 0} -} - -// Use case categories that the audio recognition request can be described -// by. -type RecognitionMetadata_InteractionType int32 - -const ( - // Use case is either unknown or is something other than one of the other - // values below. - RecognitionMetadata_INTERACTION_TYPE_UNSPECIFIED RecognitionMetadata_InteractionType = 0 - // Multiple people in a conversation or discussion. For example in a - // meeting with two or more people actively participating. Typically - // all the primary people speaking would be in the same room (if not, - // see PHONE_CALL) - RecognitionMetadata_DISCUSSION RecognitionMetadata_InteractionType = 1 - // One or more persons lecturing or presenting to others, mostly - // uninterrupted. - RecognitionMetadata_PRESENTATION RecognitionMetadata_InteractionType = 2 - // A phone-call or video-conference in which two or more people, who are - // not in the same room, are actively participating. - RecognitionMetadata_PHONE_CALL RecognitionMetadata_InteractionType = 3 - // A recorded message intended for another person to listen to. - RecognitionMetadata_VOICEMAIL RecognitionMetadata_InteractionType = 4 - // Professionally produced audio (eg. TV Show, Podcast). - RecognitionMetadata_PROFESSIONALLY_PRODUCED RecognitionMetadata_InteractionType = 5 - // Transcribe spoken questions and queries into text. - RecognitionMetadata_VOICE_SEARCH RecognitionMetadata_InteractionType = 6 - // Transcribe voice commands, such as for controlling a device. - RecognitionMetadata_VOICE_COMMAND RecognitionMetadata_InteractionType = 7 - // Transcribe speech to text to create a written document, such as a - // text-message, email or report. - RecognitionMetadata_DICTATION RecognitionMetadata_InteractionType = 8 -) - -var RecognitionMetadata_InteractionType_name = map[int32]string{ - 0: "INTERACTION_TYPE_UNSPECIFIED", - 1: "DISCUSSION", - 2: "PRESENTATION", - 3: "PHONE_CALL", - 4: "VOICEMAIL", - 5: "PROFESSIONALLY_PRODUCED", - 6: "VOICE_SEARCH", - 7: "VOICE_COMMAND", - 8: "DICTATION", -} -var RecognitionMetadata_InteractionType_value = map[string]int32{ - "INTERACTION_TYPE_UNSPECIFIED": 0, - "DISCUSSION": 1, - "PRESENTATION": 2, - "PHONE_CALL": 3, - "VOICEMAIL": 4, - "PROFESSIONALLY_PRODUCED": 5, - "VOICE_SEARCH": 6, - "VOICE_COMMAND": 7, - "DICTATION": 8, -} - -func (x RecognitionMetadata_InteractionType) String() string { - return proto.EnumName(RecognitionMetadata_InteractionType_name, int32(x)) -} -func (RecognitionMetadata_InteractionType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 0} -} - -// Enumerates the types of capture settings describing an audio file. -type RecognitionMetadata_MicrophoneDistance int32 - -const ( - // Audio type is not known. - RecognitionMetadata_MICROPHONE_DISTANCE_UNSPECIFIED RecognitionMetadata_MicrophoneDistance = 0 - // The audio was captured from a closely placed microphone. Eg. phone, - // dictaphone, or handheld microphone. Generally if there speaker is within - // 1 meter of the microphone. - RecognitionMetadata_NEARFIELD RecognitionMetadata_MicrophoneDistance = 1 - // The speaker if within 3 meters of the microphone. - RecognitionMetadata_MIDFIELD RecognitionMetadata_MicrophoneDistance = 2 - // The speaker is more than 3 meters away from the microphone. - RecognitionMetadata_FARFIELD RecognitionMetadata_MicrophoneDistance = 3 -) - -var RecognitionMetadata_MicrophoneDistance_name = map[int32]string{ - 0: "MICROPHONE_DISTANCE_UNSPECIFIED", - 1: "NEARFIELD", - 2: "MIDFIELD", - 3: "FARFIELD", -} -var RecognitionMetadata_MicrophoneDistance_value = map[string]int32{ - "MICROPHONE_DISTANCE_UNSPECIFIED": 0, - "NEARFIELD": 1, - "MIDFIELD": 2, - "FARFIELD": 3, -} - -func (x RecognitionMetadata_MicrophoneDistance) String() string { - return proto.EnumName(RecognitionMetadata_MicrophoneDistance_name, int32(x)) -} -func (RecognitionMetadata_MicrophoneDistance) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 1} -} - -// The original media the speech was recorded on. -type RecognitionMetadata_OriginalMediaType int32 - -const ( - // Unknown original media type. - RecognitionMetadata_ORIGINAL_MEDIA_TYPE_UNSPECIFIED RecognitionMetadata_OriginalMediaType = 0 - // The speech data is an audio recording. - RecognitionMetadata_AUDIO RecognitionMetadata_OriginalMediaType = 1 - // The speech data originally recorded on a video. - RecognitionMetadata_VIDEO RecognitionMetadata_OriginalMediaType = 2 -) - -var RecognitionMetadata_OriginalMediaType_name = map[int32]string{ - 0: "ORIGINAL_MEDIA_TYPE_UNSPECIFIED", - 1: "AUDIO", - 2: "VIDEO", -} -var RecognitionMetadata_OriginalMediaType_value = map[string]int32{ - "ORIGINAL_MEDIA_TYPE_UNSPECIFIED": 0, - "AUDIO": 1, - "VIDEO": 2, -} - -func (x RecognitionMetadata_OriginalMediaType) String() string { - return proto.EnumName(RecognitionMetadata_OriginalMediaType_name, int32(x)) -} -func (RecognitionMetadata_OriginalMediaType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 2} -} - -// How many speakers expected in the speech to be recognized. -type RecognitionMetadata_NumberOfSpeakers int32 - -const ( - // Unknown number of persons speaking. - RecognitionMetadata_NUMBER_OF_SPEAKERS_UNSPECIFIED RecognitionMetadata_NumberOfSpeakers = 0 - // Only one person is the prominent speaker (ignore background voices). - RecognitionMetadata_ONE_SPEAKER RecognitionMetadata_NumberOfSpeakers = 1 - // Two people are the prominent speakers (transcript should focus - // on the two most prominent speakers). - RecognitionMetadata_TWO_SPEAKERS RecognitionMetadata_NumberOfSpeakers = 2 - // Transcribe all voices. - RecognitionMetadata_MULTIPLE_SPEAKERS RecognitionMetadata_NumberOfSpeakers = 3 -) - -var RecognitionMetadata_NumberOfSpeakers_name = map[int32]string{ - 0: "NUMBER_OF_SPEAKERS_UNSPECIFIED", - 1: "ONE_SPEAKER", - 2: "TWO_SPEAKERS", - 3: "MULTIPLE_SPEAKERS", -} -var RecognitionMetadata_NumberOfSpeakers_value = map[string]int32{ - "NUMBER_OF_SPEAKERS_UNSPECIFIED": 0, - "ONE_SPEAKER": 1, - "TWO_SPEAKERS": 2, - "MULTIPLE_SPEAKERS": 3, -} - -func (x RecognitionMetadata_NumberOfSpeakers) String() string { - return proto.EnumName(RecognitionMetadata_NumberOfSpeakers_name, int32(x)) -} -func (RecognitionMetadata_NumberOfSpeakers) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 3} -} - -// The type of device the speech was recorded with. -type RecognitionMetadata_RecordingDeviceType int32 - -const ( - // The recording device is unknown. - RecognitionMetadata_RECORDING_DEVICE_TYPE_UNSPECIFIED RecognitionMetadata_RecordingDeviceType = 0 - // Speech was recorded on a smartphone. - RecognitionMetadata_SMARTPHONE RecognitionMetadata_RecordingDeviceType = 1 - // Speech was recorded using a personal computer or tablet. - RecognitionMetadata_PC RecognitionMetadata_RecordingDeviceType = 2 - // Speech was recorded over a phone line. - RecognitionMetadata_PHONE_LINE RecognitionMetadata_RecordingDeviceType = 3 - // Speech was recorded in a vehicle. - RecognitionMetadata_VEHICLE RecognitionMetadata_RecordingDeviceType = 4 - // Speech was recorded outdoors. - RecognitionMetadata_OTHER_OUTDOOR_DEVICE RecognitionMetadata_RecordingDeviceType = 5 - // Speech was recorded indoors. - RecognitionMetadata_OTHER_INDOOR_DEVICE RecognitionMetadata_RecordingDeviceType = 6 -) - -var RecognitionMetadata_RecordingDeviceType_name = map[int32]string{ - 0: "RECORDING_DEVICE_TYPE_UNSPECIFIED", - 1: "SMARTPHONE", - 2: "PC", - 3: "PHONE_LINE", - 4: "VEHICLE", - 5: "OTHER_OUTDOOR_DEVICE", - 6: "OTHER_INDOOR_DEVICE", -} -var RecognitionMetadata_RecordingDeviceType_value = map[string]int32{ - "RECORDING_DEVICE_TYPE_UNSPECIFIED": 0, - "SMARTPHONE": 1, - "PC": 2, - "PHONE_LINE": 3, - "VEHICLE": 4, - "OTHER_OUTDOOR_DEVICE": 5, - "OTHER_INDOOR_DEVICE": 6, -} - -func (x RecognitionMetadata_RecordingDeviceType) String() string { - return proto.EnumName(RecognitionMetadata_RecordingDeviceType_name, int32(x)) -} -func (RecognitionMetadata_RecordingDeviceType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{5, 4} -} - -// Indicates the type of speech event. -type StreamingRecognizeResponse_SpeechEventType int32 - -const ( - // No speech event specified. - StreamingRecognizeResponse_SPEECH_EVENT_UNSPECIFIED StreamingRecognizeResponse_SpeechEventType = 0 - // This event indicates that the server has detected the end of the user's - // speech utterance and expects no additional speech. Therefore, the server - // will not process additional audio (although it may subsequently return - // additional results). The client should stop sending additional audio - // data, half-close the gRPC connection, and wait for any additional results - // until the server closes the gRPC connection. This event is only sent if - // `single_utterance` was set to `true`, and is not used otherwise. - StreamingRecognizeResponse_END_OF_SINGLE_UTTERANCE StreamingRecognizeResponse_SpeechEventType = 1 -) - -var StreamingRecognizeResponse_SpeechEventType_name = map[int32]string{ - 0: "SPEECH_EVENT_UNSPECIFIED", - 1: "END_OF_SINGLE_UTTERANCE", -} -var StreamingRecognizeResponse_SpeechEventType_value = map[string]int32{ - "SPEECH_EVENT_UNSPECIFIED": 0, - "END_OF_SINGLE_UTTERANCE": 1, -} - -func (x StreamingRecognizeResponse_SpeechEventType) String() string { - return proto.EnumName(StreamingRecognizeResponse_SpeechEventType_name, int32(x)) -} -func (StreamingRecognizeResponse_SpeechEventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{11, 0} -} - -// The top-level message sent by the client for the `Recognize` method. -type RecognizeRequest struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Required* The audio data to be recognized. - Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"` -} - -func (m *RecognizeRequest) Reset() { *m = RecognizeRequest{} } -func (m *RecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*RecognizeRequest) ProtoMessage() {} -func (*RecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *RecognizeRequest) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *RecognizeRequest) GetAudio() *RecognitionAudio { - if m != nil { - return m.Audio - } - return nil -} - -// The top-level message sent by the client for the `LongRunningRecognize` -// method. -type LongRunningRecognizeRequest struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Required* The audio data to be recognized. - Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"` -} - -func (m *LongRunningRecognizeRequest) Reset() { *m = LongRunningRecognizeRequest{} } -func (m *LongRunningRecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*LongRunningRecognizeRequest) ProtoMessage() {} -func (*LongRunningRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *LongRunningRecognizeRequest) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *LongRunningRecognizeRequest) GetAudio() *RecognitionAudio { - if m != nil { - return m.Audio - } - return nil -} - -// The top-level message sent by the client for the `StreamingRecognize` method. -// Multiple `StreamingRecognizeRequest` messages are sent. The first message -// must contain a `streaming_config` message and must not contain `audio` data. -// All subsequent messages must contain `audio` data and must not contain a -// `streaming_config` message. -type StreamingRecognizeRequest struct { - // The streaming request, which is either a streaming config or audio content. - // - // Types that are valid to be assigned to StreamingRequest: - // *StreamingRecognizeRequest_StreamingConfig - // *StreamingRecognizeRequest_AudioContent - StreamingRequest isStreamingRecognizeRequest_StreamingRequest `protobuf_oneof:"streaming_request"` -} - -func (m *StreamingRecognizeRequest) Reset() { *m = StreamingRecognizeRequest{} } -func (m *StreamingRecognizeRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognizeRequest) ProtoMessage() {} -func (*StreamingRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isStreamingRecognizeRequest_StreamingRequest interface { - isStreamingRecognizeRequest_StreamingRequest() -} - -type StreamingRecognizeRequest_StreamingConfig struct { - StreamingConfig *StreamingRecognitionConfig `protobuf:"bytes,1,opt,name=streaming_config,json=streamingConfig,oneof"` -} -type StreamingRecognizeRequest_AudioContent struct { - AudioContent []byte `protobuf:"bytes,2,opt,name=audio_content,json=audioContent,proto3,oneof"` -} - -func (*StreamingRecognizeRequest_StreamingConfig) isStreamingRecognizeRequest_StreamingRequest() {} -func (*StreamingRecognizeRequest_AudioContent) isStreamingRecognizeRequest_StreamingRequest() {} - -func (m *StreamingRecognizeRequest) GetStreamingRequest() isStreamingRecognizeRequest_StreamingRequest { - if m != nil { - return m.StreamingRequest - } - return nil -} - -func (m *StreamingRecognizeRequest) GetStreamingConfig() *StreamingRecognitionConfig { - if x, ok := m.GetStreamingRequest().(*StreamingRecognizeRequest_StreamingConfig); ok { - return x.StreamingConfig - } - return nil -} - -func (m *StreamingRecognizeRequest) GetAudioContent() []byte { - if x, ok := m.GetStreamingRequest().(*StreamingRecognizeRequest_AudioContent); ok { - return x.AudioContent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*StreamingRecognizeRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _StreamingRecognizeRequest_OneofMarshaler, _StreamingRecognizeRequest_OneofUnmarshaler, _StreamingRecognizeRequest_OneofSizer, []interface{}{ - (*StreamingRecognizeRequest_StreamingConfig)(nil), - (*StreamingRecognizeRequest_AudioContent)(nil), - } -} - -func _StreamingRecognizeRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*StreamingRecognizeRequest) - // streaming_request - switch x := m.StreamingRequest.(type) { - case *StreamingRecognizeRequest_StreamingConfig: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StreamingConfig); err != nil { - return err - } - case *StreamingRecognizeRequest_AudioContent: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.AudioContent) - case nil: - default: - return fmt.Errorf("StreamingRecognizeRequest.StreamingRequest has unexpected type %T", x) - } - return nil -} - -func _StreamingRecognizeRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*StreamingRecognizeRequest) - switch tag { - case 1: // streaming_request.streaming_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StreamingRecognitionConfig) - err := b.DecodeMessage(msg) - m.StreamingRequest = &StreamingRecognizeRequest_StreamingConfig{msg} - return true, err - case 2: // streaming_request.audio_content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.StreamingRequest = &StreamingRecognizeRequest_AudioContent{x} - return true, err - default: - return false, nil - } -} - -func _StreamingRecognizeRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*StreamingRecognizeRequest) - // streaming_request - switch x := m.StreamingRequest.(type) { - case *StreamingRecognizeRequest_StreamingConfig: - s := proto.Size(x.StreamingConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StreamingRecognizeRequest_AudioContent: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AudioContent))) - n += len(x.AudioContent) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Provides information to the recognizer that specifies how to process the -// request. -type StreamingRecognitionConfig struct { - // *Required* Provides information to the recognizer that specifies how to - // process the request. - Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` - // *Optional* If `false` or omitted, the recognizer will perform continuous - // recognition (continuing to wait for and process audio even if the user - // pauses speaking) until the client closes the input stream (gRPC API) or - // until the maximum time limit has been reached. May return multiple - // `StreamingRecognitionResult`s with the `is_final` flag set to `true`. - // - // If `true`, the recognizer will detect a single spoken utterance. When it - // detects that the user has paused or stopped speaking, it will return an - // `END_OF_SINGLE_UTTERANCE` event and cease recognition. It will return no - // more than one `StreamingRecognitionResult` with the `is_final` flag set to - // `true`. - SingleUtterance bool `protobuf:"varint,2,opt,name=single_utterance,json=singleUtterance" json:"single_utterance,omitempty"` - // *Optional* If `true`, interim results (tentative hypotheses) may be - // returned as they become available (these interim results are indicated with - // the `is_final=false` flag). - // If `false` or omitted, only `is_final=true` result(s) are returned. - InterimResults bool `protobuf:"varint,3,opt,name=interim_results,json=interimResults" json:"interim_results,omitempty"` -} - -func (m *StreamingRecognitionConfig) Reset() { *m = StreamingRecognitionConfig{} } -func (m *StreamingRecognitionConfig) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognitionConfig) ProtoMessage() {} -func (*StreamingRecognitionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *StreamingRecognitionConfig) GetConfig() *RecognitionConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *StreamingRecognitionConfig) GetSingleUtterance() bool { - if m != nil { - return m.SingleUtterance - } - return false -} - -func (m *StreamingRecognitionConfig) GetInterimResults() bool { - if m != nil { - return m.InterimResults - } - return false -} - -// Provides information to the recognizer that specifies how to process the -// request. -type RecognitionConfig struct { - // *Required* Encoding of audio data sent in all `RecognitionAudio` messages. - Encoding RecognitionConfig_AudioEncoding `protobuf:"varint,1,opt,name=encoding,enum=google.cloud.speech.v1p1beta1.RecognitionConfig_AudioEncoding" json:"encoding,omitempty"` - // *Required* Sample rate in Hertz of the audio data sent in all - // `RecognitionAudio` messages. Valid values are: 8000-48000. - // 16000 is optimal. For best results, set the sampling rate of the audio - // source to 16000 Hz. If that's not possible, use the native sample rate of - // the audio source (instead of re-sampling). - SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"` - // *Required* The language of the supplied audio as a - // [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. - // Example: "en-US". - // See [Language Support](https://cloud.google.com/speech/docs/languages) - // for a list of the currently supported language codes. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // *Optional* Maximum number of recognition hypotheses to be returned. - // Specifically, the maximum number of `SpeechRecognitionAlternative` messages - // within each `SpeechRecognitionResult`. - // The server may return fewer than `max_alternatives`. - // Valid values are `0`-`30`. A value of `0` or `1` will return a maximum of - // one. If omitted, will return a maximum of one. - MaxAlternatives int32 `protobuf:"varint,4,opt,name=max_alternatives,json=maxAlternatives" json:"max_alternatives,omitempty"` - // *Optional* If set to `true`, the server will attempt to filter out - // profanities, replacing all but the initial character in each filtered word - // with asterisks, e.g. "f***". If set to `false` or omitted, profanities - // won't be filtered out. - ProfanityFilter bool `protobuf:"varint,5,opt,name=profanity_filter,json=profanityFilter" json:"profanity_filter,omitempty"` - // *Optional* A means to provide context to assist the speech recognition. - SpeechContexts []*SpeechContext `protobuf:"bytes,6,rep,name=speech_contexts,json=speechContexts" json:"speech_contexts,omitempty"` - // *Optional* If `true`, the top result includes a list of words and - // the start and end time offsets (timestamps) for those words. If - // `false`, no word-level time offset information is returned. The default is - // `false`. - EnableWordTimeOffsets bool `protobuf:"varint,8,opt,name=enable_word_time_offsets,json=enableWordTimeOffsets" json:"enable_word_time_offsets,omitempty"` - // *Optional* If 'true', adds punctuation to recognition result hypotheses. - // This feature is only available in select languages. Setting this for - // requests in other languages has no effect at all. - // The default 'false' value does not add punctuation to result hypotheses. - // NOTE: "This is currently offered as an experimental service, complimentary - // to all users. In the future this may be exclusively available as a - // premium feature." - EnableAutomaticPunctuation bool `protobuf:"varint,11,opt,name=enable_automatic_punctuation,json=enableAutomaticPunctuation" json:"enable_automatic_punctuation,omitempty"` - // *Optional* Metadata regarding this request. - Metadata *RecognitionMetadata `protobuf:"bytes,9,opt,name=metadata" json:"metadata,omitempty"` -} - -func (m *RecognitionConfig) Reset() { *m = RecognitionConfig{} } -func (m *RecognitionConfig) String() string { return proto.CompactTextString(m) } -func (*RecognitionConfig) ProtoMessage() {} -func (*RecognitionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *RecognitionConfig) GetEncoding() RecognitionConfig_AudioEncoding { - if m != nil { - return m.Encoding - } - return RecognitionConfig_ENCODING_UNSPECIFIED -} - -func (m *RecognitionConfig) GetSampleRateHertz() int32 { - if m != nil { - return m.SampleRateHertz - } - return 0 -} - -func (m *RecognitionConfig) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *RecognitionConfig) GetMaxAlternatives() int32 { - if m != nil { - return m.MaxAlternatives - } - return 0 -} - -func (m *RecognitionConfig) GetProfanityFilter() bool { - if m != nil { - return m.ProfanityFilter - } - return false -} - -func (m *RecognitionConfig) GetSpeechContexts() []*SpeechContext { - if m != nil { - return m.SpeechContexts - } - return nil -} - -func (m *RecognitionConfig) GetEnableWordTimeOffsets() bool { - if m != nil { - return m.EnableWordTimeOffsets - } - return false -} - -func (m *RecognitionConfig) GetEnableAutomaticPunctuation() bool { - if m != nil { - return m.EnableAutomaticPunctuation - } - return false -} - -func (m *RecognitionConfig) GetMetadata() *RecognitionMetadata { - if m != nil { - return m.Metadata - } - return nil -} - -// Description of audio data to be recognized. -type RecognitionMetadata struct { - // The use case most closely describing the audio content to be recognized. - InteractionType RecognitionMetadata_InteractionType `protobuf:"varint,1,opt,name=interaction_type,json=interactionType,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_InteractionType" json:"interaction_type,omitempty"` - // The industry vertical to which this speech recognition request most - // closely applies. This is most indicative of the topics contained - // in the audio. Use the 6-digit NAICS code to identify the industry - // vertical - see https://www.naics.com/search/. - IndustryNaicsCodeOfAudio uint32 `protobuf:"varint,3,opt,name=industry_naics_code_of_audio,json=industryNaicsCodeOfAudio" json:"industry_naics_code_of_audio,omitempty"` - // The audio type that most closely describes the audio being recognized. - MicrophoneDistance RecognitionMetadata_MicrophoneDistance `protobuf:"varint,4,opt,name=microphone_distance,json=microphoneDistance,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_MicrophoneDistance" json:"microphone_distance,omitempty"` - // The original media the speech was recorded on. - OriginalMediaType RecognitionMetadata_OriginalMediaType `protobuf:"varint,5,opt,name=original_media_type,json=originalMediaType,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_OriginalMediaType" json:"original_media_type,omitempty"` - // How many people are speaking prominently in the audio and expected to be - // recognized. - NumberOfSpeakers RecognitionMetadata_NumberOfSpeakers `protobuf:"varint,6,opt,name=number_of_speakers,json=numberOfSpeakers,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_NumberOfSpeakers" json:"number_of_speakers,omitempty"` - // The type of device the speech was recorded with. - RecordingDeviceType RecognitionMetadata_RecordingDeviceType `protobuf:"varint,7,opt,name=recording_device_type,json=recordingDeviceType,enum=google.cloud.speech.v1p1beta1.RecognitionMetadata_RecordingDeviceType" json:"recording_device_type,omitempty"` - // The device used to make the recording. Examples 'Nexus 5X' or - // 'Polycom SoundStation IP 6000' or 'POTS' or 'VoIP' or - // 'Cardioid Microphone'. - RecordingDeviceName string `protobuf:"bytes,8,opt,name=recording_device_name,json=recordingDeviceName" json:"recording_device_name,omitempty"` - // Mime type of the original audio file. For example `audio/m4a`, - // `audio/x-alaw-basic`, `audio/mp3`, `audio/3gpp`. - // A list of possible audio mime types is maintained at - // http://www.iana.org/assignments/media-types/media-types.xhtml#audio - OriginalMimeType string `protobuf:"bytes,9,opt,name=original_mime_type,json=originalMimeType" json:"original_mime_type,omitempty"` - // Obfuscated (privacy-protected) ID of the user, to identify number of - // unique users using the service. - ObfuscatedId int64 `protobuf:"varint,10,opt,name=obfuscated_id,json=obfuscatedId" json:"obfuscated_id,omitempty"` - // Description of the content. Eg. "Recordings of federal supreme court - // hearings from 2012". - AudioTopic string `protobuf:"bytes,11,opt,name=audio_topic,json=audioTopic" json:"audio_topic,omitempty"` -} - -func (m *RecognitionMetadata) Reset() { *m = RecognitionMetadata{} } -func (m *RecognitionMetadata) String() string { return proto.CompactTextString(m) } -func (*RecognitionMetadata) ProtoMessage() {} -func (*RecognitionMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *RecognitionMetadata) GetInteractionType() RecognitionMetadata_InteractionType { - if m != nil { - return m.InteractionType - } - return RecognitionMetadata_INTERACTION_TYPE_UNSPECIFIED -} - -func (m *RecognitionMetadata) GetIndustryNaicsCodeOfAudio() uint32 { - if m != nil { - return m.IndustryNaicsCodeOfAudio - } - return 0 -} - -func (m *RecognitionMetadata) GetMicrophoneDistance() RecognitionMetadata_MicrophoneDistance { - if m != nil { - return m.MicrophoneDistance - } - return RecognitionMetadata_MICROPHONE_DISTANCE_UNSPECIFIED -} - -func (m *RecognitionMetadata) GetOriginalMediaType() RecognitionMetadata_OriginalMediaType { - if m != nil { - return m.OriginalMediaType - } - return RecognitionMetadata_ORIGINAL_MEDIA_TYPE_UNSPECIFIED -} - -func (m *RecognitionMetadata) GetNumberOfSpeakers() RecognitionMetadata_NumberOfSpeakers { - if m != nil { - return m.NumberOfSpeakers - } - return RecognitionMetadata_NUMBER_OF_SPEAKERS_UNSPECIFIED -} - -func (m *RecognitionMetadata) GetRecordingDeviceType() RecognitionMetadata_RecordingDeviceType { - if m != nil { - return m.RecordingDeviceType - } - return RecognitionMetadata_RECORDING_DEVICE_TYPE_UNSPECIFIED -} - -func (m *RecognitionMetadata) GetRecordingDeviceName() string { - if m != nil { - return m.RecordingDeviceName - } - return "" -} - -func (m *RecognitionMetadata) GetOriginalMimeType() string { - if m != nil { - return m.OriginalMimeType - } - return "" -} - -func (m *RecognitionMetadata) GetObfuscatedId() int64 { - if m != nil { - return m.ObfuscatedId - } - return 0 -} - -func (m *RecognitionMetadata) GetAudioTopic() string { - if m != nil { - return m.AudioTopic - } - return "" -} - -// Provides "hints" to the speech recognizer to favor specific words and phrases -// in the results. -type SpeechContext struct { - // *Optional* A list of strings containing words and phrases "hints" so that - // the speech recognition is more likely to recognize them. This can be used - // to improve the accuracy for specific words and phrases, for example, if - // specific commands are typically spoken by the user. This can also be used - // to add additional words to the vocabulary of the recognizer. See - // [usage limits](https://cloud.google.com/speech/limits#content). - Phrases []string `protobuf:"bytes,1,rep,name=phrases" json:"phrases,omitempty"` -} - -func (m *SpeechContext) Reset() { *m = SpeechContext{} } -func (m *SpeechContext) String() string { return proto.CompactTextString(m) } -func (*SpeechContext) ProtoMessage() {} -func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *SpeechContext) GetPhrases() []string { - if m != nil { - return m.Phrases - } - return nil -} - -// Contains audio data in the encoding specified in the `RecognitionConfig`. -// Either `content` or `uri` must be supplied. Supplying both or neither -// returns [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]. See -// [audio limits](https://cloud.google.com/speech/limits#content). -type RecognitionAudio struct { - // The audio source, which is either inline content or a GCS uri. - // - // Types that are valid to be assigned to AudioSource: - // *RecognitionAudio_Content - // *RecognitionAudio_Uri - AudioSource isRecognitionAudio_AudioSource `protobuf_oneof:"audio_source"` -} - -func (m *RecognitionAudio) Reset() { *m = RecognitionAudio{} } -func (m *RecognitionAudio) String() string { return proto.CompactTextString(m) } -func (*RecognitionAudio) ProtoMessage() {} -func (*RecognitionAudio) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -type isRecognitionAudio_AudioSource interface { - isRecognitionAudio_AudioSource() -} - -type RecognitionAudio_Content struct { - Content []byte `protobuf:"bytes,1,opt,name=content,proto3,oneof"` -} -type RecognitionAudio_Uri struct { - Uri string `protobuf:"bytes,2,opt,name=uri,oneof"` -} - -func (*RecognitionAudio_Content) isRecognitionAudio_AudioSource() {} -func (*RecognitionAudio_Uri) isRecognitionAudio_AudioSource() {} - -func (m *RecognitionAudio) GetAudioSource() isRecognitionAudio_AudioSource { - if m != nil { - return m.AudioSource - } - return nil -} - -func (m *RecognitionAudio) GetContent() []byte { - if x, ok := m.GetAudioSource().(*RecognitionAudio_Content); ok { - return x.Content - } - return nil -} - -func (m *RecognitionAudio) GetUri() string { - if x, ok := m.GetAudioSource().(*RecognitionAudio_Uri); ok { - return x.Uri - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RecognitionAudio) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RecognitionAudio_OneofMarshaler, _RecognitionAudio_OneofUnmarshaler, _RecognitionAudio_OneofSizer, []interface{}{ - (*RecognitionAudio_Content)(nil), - (*RecognitionAudio_Uri)(nil), - } -} - -func _RecognitionAudio_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RecognitionAudio) - // audio_source - switch x := m.AudioSource.(type) { - case *RecognitionAudio_Content: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Content) - case *RecognitionAudio_Uri: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Uri) - case nil: - default: - return fmt.Errorf("RecognitionAudio.AudioSource has unexpected type %T", x) - } - return nil -} - -func _RecognitionAudio_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RecognitionAudio) - switch tag { - case 1: // audio_source.content - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.AudioSource = &RecognitionAudio_Content{x} - return true, err - case 2: // audio_source.uri - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.AudioSource = &RecognitionAudio_Uri{x} - return true, err - default: - return false, nil - } -} - -func _RecognitionAudio_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RecognitionAudio) - // audio_source - switch x := m.AudioSource.(type) { - case *RecognitionAudio_Content: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Content))) - n += len(x.Content) - case *RecognitionAudio_Uri: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Uri))) - n += len(x.Uri) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The only message returned to the client by the `Recognize` method. It -// contains the result as zero or more sequential `SpeechRecognitionResult` -// messages. -type RecognizeResponse struct { - // *Output-only* Sequential list of transcription results corresponding to - // sequential portions of audio. - Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` -} - -func (m *RecognizeResponse) Reset() { *m = RecognizeResponse{} } -func (m *RecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*RecognizeResponse) ProtoMessage() {} -func (*RecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *RecognizeResponse) GetResults() []*SpeechRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -// The only message returned to the client by the `LongRunningRecognize` method. -// It contains the result as zero or more sequential `SpeechRecognitionResult` -// messages. It is included in the `result.response` field of the `Operation` -// returned by the `GetOperation` call of the `google::longrunning::Operations` -// service. -type LongRunningRecognizeResponse struct { - // *Output-only* Sequential list of transcription results corresponding to - // sequential portions of audio. - Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` -} - -func (m *LongRunningRecognizeResponse) Reset() { *m = LongRunningRecognizeResponse{} } -func (m *LongRunningRecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*LongRunningRecognizeResponse) ProtoMessage() {} -func (*LongRunningRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *LongRunningRecognizeResponse) GetResults() []*SpeechRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -// Describes the progress of a long-running `LongRunningRecognize` call. It is -// included in the `metadata` field of the `Operation` returned by the -// `GetOperation` call of the `google::longrunning::Operations` service. -type LongRunningRecognizeMetadata struct { - // Approximate percentage of audio processed thus far. Guaranteed to be 100 - // when the audio is fully processed and the results are available. - ProgressPercent int32 `protobuf:"varint,1,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"` - // Time when the request was received. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time of the most recent processing update. - LastUpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` -} - -func (m *LongRunningRecognizeMetadata) Reset() { *m = LongRunningRecognizeMetadata{} } -func (m *LongRunningRecognizeMetadata) String() string { return proto.CompactTextString(m) } -func (*LongRunningRecognizeMetadata) ProtoMessage() {} -func (*LongRunningRecognizeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *LongRunningRecognizeMetadata) GetProgressPercent() int32 { - if m != nil { - return m.ProgressPercent - } - return 0 -} - -func (m *LongRunningRecognizeMetadata) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *LongRunningRecognizeMetadata) GetLastUpdateTime() *google_protobuf4.Timestamp { - if m != nil { - return m.LastUpdateTime - } - return nil -} - -// `StreamingRecognizeResponse` is the only message returned to the client by -// `StreamingRecognize`. A series of zero or more `StreamingRecognizeResponse` -// messages are streamed back to the client. If there is no recognizable -// audio, and `single_utterance` is set to false, then no messages are streamed -// back to the client. -// -// Here's an example of a series of ten `StreamingRecognizeResponse`s that might -// be returned while processing audio: -// -// 1. results { alternatives { transcript: "tube" } stability: 0.01 } -// -// 2. results { alternatives { transcript: "to be a" } stability: 0.01 } -// -// 3. results { alternatives { transcript: "to be" } stability: 0.9 } -// results { alternatives { transcript: " or not to be" } stability: 0.01 } -// -// 4. results { alternatives { transcript: "to be or not to be" -// confidence: 0.92 } -// alternatives { transcript: "to bee or not to bee" } -// is_final: true } -// -// 5. results { alternatives { transcript: " that's" } stability: 0.01 } -// -// 6. results { alternatives { transcript: " that is" } stability: 0.9 } -// results { alternatives { transcript: " the question" } stability: 0.01 } -// -// 7. results { alternatives { transcript: " that is the question" -// confidence: 0.98 } -// alternatives { transcript: " that was the question" } -// is_final: true } -// -// Notes: -// -// - Only two of the above responses #4 and #7 contain final results; they are -// indicated by `is_final: true`. Concatenating these together generates the -// full transcript: "to be or not to be that is the question". -// -// - The others contain interim `results`. #3 and #6 contain two interim -// `results`: the first portion has a high stability and is less likely to -// change; the second portion has a low stability and is very likely to -// change. A UI designer might choose to show only high stability `results`. -// -// - The specific `stability` and `confidence` values shown above are only for -// illustrative purposes. Actual values may vary. -// -// - In each response, only one of these fields will be set: -// `error`, -// `speech_event_type`, or -// one or more (repeated) `results`. -type StreamingRecognizeResponse struct { - // *Output-only* If set, returns a [google.rpc.Status][google.rpc.Status] message that - // specifies the error for the operation. - Error *google_rpc.Status `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` - // *Output-only* This repeated list contains zero or more results that - // correspond to consecutive portions of the audio currently being processed. - // It contains zero or more `is_final=false` results followed by zero or one - // `is_final=true` result (the newly settled portion). - Results []*StreamingRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"` - // *Output-only* Indicates the type of speech event. - SpeechEventType StreamingRecognizeResponse_SpeechEventType `protobuf:"varint,4,opt,name=speech_event_type,json=speechEventType,enum=google.cloud.speech.v1p1beta1.StreamingRecognizeResponse_SpeechEventType" json:"speech_event_type,omitempty"` -} - -func (m *StreamingRecognizeResponse) Reset() { *m = StreamingRecognizeResponse{} } -func (m *StreamingRecognizeResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognizeResponse) ProtoMessage() {} -func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *StreamingRecognizeResponse) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -func (m *StreamingRecognizeResponse) GetResults() []*StreamingRecognitionResult { - if m != nil { - return m.Results - } - return nil -} - -func (m *StreamingRecognizeResponse) GetSpeechEventType() StreamingRecognizeResponse_SpeechEventType { - if m != nil { - return m.SpeechEventType - } - return StreamingRecognizeResponse_SPEECH_EVENT_UNSPECIFIED -} - -// A streaming speech recognition result corresponding to a portion of the audio -// that is currently being processed. -type StreamingRecognitionResult struct { - // *Output-only* May contain one or more recognition hypotheses (up to the - // maximum specified in `max_alternatives`). - Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"` - // *Output-only* If `false`, this `StreamingRecognitionResult` represents an - // interim result that may change. If `true`, this is the final time the - // speech service will return this particular `StreamingRecognitionResult`, - // the recognizer will not return any further hypotheses for this portion of - // the transcript and corresponding audio. - IsFinal bool `protobuf:"varint,2,opt,name=is_final,json=isFinal" json:"is_final,omitempty"` - // *Output-only* An estimate of the likelihood that the recognizer will not - // change its guess about this interim result. Values range from 0.0 - // (completely unstable) to 1.0 (completely stable). - // This field is only provided for interim results (`is_final=false`). - // The default of 0.0 is a sentinel value indicating `stability` was not set. - Stability float32 `protobuf:"fixed32,3,opt,name=stability" json:"stability,omitempty"` -} - -func (m *StreamingRecognitionResult) Reset() { *m = StreamingRecognitionResult{} } -func (m *StreamingRecognitionResult) String() string { return proto.CompactTextString(m) } -func (*StreamingRecognitionResult) ProtoMessage() {} -func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *StreamingRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative { - if m != nil { - return m.Alternatives - } - return nil -} - -func (m *StreamingRecognitionResult) GetIsFinal() bool { - if m != nil { - return m.IsFinal - } - return false -} - -func (m *StreamingRecognitionResult) GetStability() float32 { - if m != nil { - return m.Stability - } - return 0 -} - -// A speech recognition result corresponding to a portion of the audio. -type SpeechRecognitionResult struct { - // *Output-only* May contain one or more recognition hypotheses (up to the - // maximum specified in `max_alternatives`). - // These alternatives are ordered in terms of accuracy, with the top (first) - // alternative being the most probable, as ranked by the recognizer. - Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"` -} - -func (m *SpeechRecognitionResult) Reset() { *m = SpeechRecognitionResult{} } -func (m *SpeechRecognitionResult) String() string { return proto.CompactTextString(m) } -func (*SpeechRecognitionResult) ProtoMessage() {} -func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *SpeechRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative { - if m != nil { - return m.Alternatives - } - return nil -} - -// Alternative hypotheses (a.k.a. n-best list). -type SpeechRecognitionAlternative struct { - // *Output-only* Transcript text representing the words that the user spoke. - Transcript string `protobuf:"bytes,1,opt,name=transcript" json:"transcript,omitempty"` - // *Output-only* The confidence estimate between 0.0 and 1.0. A higher number - // indicates an estimated greater likelihood that the recognized words are - // correct. This field is typically provided only for the top hypothesis, and - // only for `is_final=true` results. Clients should not rely on the - // `confidence` field as it is not guaranteed to be accurate, or even set, in - // any of the results. - // The default of 0.0 is a sentinel value indicating `confidence` was not set. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` - // *Output-only* A list of word-specific information for each recognized word. - Words []*WordInfo `protobuf:"bytes,3,rep,name=words" json:"words,omitempty"` -} - -func (m *SpeechRecognitionAlternative) Reset() { *m = SpeechRecognitionAlternative{} } -func (m *SpeechRecognitionAlternative) String() string { return proto.CompactTextString(m) } -func (*SpeechRecognitionAlternative) ProtoMessage() {} -func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *SpeechRecognitionAlternative) GetTranscript() string { - if m != nil { - return m.Transcript - } - return "" -} - -func (m *SpeechRecognitionAlternative) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func (m *SpeechRecognitionAlternative) GetWords() []*WordInfo { - if m != nil { - return m.Words - } - return nil -} - -// Word-specific information for recognized words. Word information is only -// included in the response when certain request parameters are set, such -// as `enable_word_time_offsets`. -type WordInfo struct { - // *Output-only* Time offset relative to the beginning of the audio, - // and corresponding to the start of the spoken word. - // This field is only set if `enable_word_time_offsets=true` and only - // in the top hypothesis. - // This is an experimental feature and the accuracy of the time offset can - // vary. - StartTime *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // *Output-only* Time offset relative to the beginning of the audio, - // and corresponding to the end of the spoken word. - // This field is only set if `enable_word_time_offsets=true` and only - // in the top hypothesis. - // This is an experimental feature and the accuracy of the time offset can - // vary. - EndTime *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // *Output-only* The word corresponding to this set of information. - Word string `protobuf:"bytes,3,opt,name=word" json:"word,omitempty"` -} - -func (m *WordInfo) Reset() { *m = WordInfo{} } -func (m *WordInfo) String() string { return proto.CompactTextString(m) } -func (*WordInfo) ProtoMessage() {} -func (*WordInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *WordInfo) GetStartTime() *google_protobuf3.Duration { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *WordInfo) GetEndTime() *google_protobuf3.Duration { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *WordInfo) GetWord() string { - if m != nil { - return m.Word - } - return "" -} - -func init() { - proto.RegisterType((*RecognizeRequest)(nil), "google.cloud.speech.v1p1beta1.RecognizeRequest") - proto.RegisterType((*LongRunningRecognizeRequest)(nil), "google.cloud.speech.v1p1beta1.LongRunningRecognizeRequest") - proto.RegisterType((*StreamingRecognizeRequest)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognizeRequest") - proto.RegisterType((*StreamingRecognitionConfig)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognitionConfig") - proto.RegisterType((*RecognitionConfig)(nil), "google.cloud.speech.v1p1beta1.RecognitionConfig") - proto.RegisterType((*RecognitionMetadata)(nil), "google.cloud.speech.v1p1beta1.RecognitionMetadata") - proto.RegisterType((*SpeechContext)(nil), "google.cloud.speech.v1p1beta1.SpeechContext") - proto.RegisterType((*RecognitionAudio)(nil), "google.cloud.speech.v1p1beta1.RecognitionAudio") - proto.RegisterType((*RecognizeResponse)(nil), "google.cloud.speech.v1p1beta1.RecognizeResponse") - proto.RegisterType((*LongRunningRecognizeResponse)(nil), "google.cloud.speech.v1p1beta1.LongRunningRecognizeResponse") - proto.RegisterType((*LongRunningRecognizeMetadata)(nil), "google.cloud.speech.v1p1beta1.LongRunningRecognizeMetadata") - proto.RegisterType((*StreamingRecognizeResponse)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognizeResponse") - proto.RegisterType((*StreamingRecognitionResult)(nil), "google.cloud.speech.v1p1beta1.StreamingRecognitionResult") - proto.RegisterType((*SpeechRecognitionResult)(nil), "google.cloud.speech.v1p1beta1.SpeechRecognitionResult") - proto.RegisterType((*SpeechRecognitionAlternative)(nil), "google.cloud.speech.v1p1beta1.SpeechRecognitionAlternative") - proto.RegisterType((*WordInfo)(nil), "google.cloud.speech.v1p1beta1.WordInfo") - proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionConfig_AudioEncoding", RecognitionConfig_AudioEncoding_name, RecognitionConfig_AudioEncoding_value) - proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_InteractionType", RecognitionMetadata_InteractionType_name, RecognitionMetadata_InteractionType_value) - proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_MicrophoneDistance", RecognitionMetadata_MicrophoneDistance_name, RecognitionMetadata_MicrophoneDistance_value) - proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_OriginalMediaType", RecognitionMetadata_OriginalMediaType_name, RecognitionMetadata_OriginalMediaType_value) - proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_NumberOfSpeakers", RecognitionMetadata_NumberOfSpeakers_name, RecognitionMetadata_NumberOfSpeakers_value) - proto.RegisterEnum("google.cloud.speech.v1p1beta1.RecognitionMetadata_RecordingDeviceType", RecognitionMetadata_RecordingDeviceType_name, RecognitionMetadata_RecordingDeviceType_value) - proto.RegisterEnum("google.cloud.speech.v1p1beta1.StreamingRecognizeResponse_SpeechEventType", StreamingRecognizeResponse_SpeechEventType_name, StreamingRecognizeResponse_SpeechEventType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Speech service - -type SpeechClient interface { - // Performs synchronous speech recognition: receive results after all audio - // has been sent and processed. - Recognize(ctx context.Context, in *RecognizeRequest, opts ...grpc.CallOption) (*RecognizeResponse, error) - // Performs asynchronous speech recognition: receive results via the - // google.longrunning.Operations interface. Returns either an - // `Operation.error` or an `Operation.response` which contains - // a `LongRunningRecognizeResponse` message. - LongRunningRecognize(ctx context.Context, in *LongRunningRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Performs bidirectional streaming speech recognition: receive results while - // sending audio. This method is only available via the gRPC API (not REST). - StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error) -} - -type speechClient struct { - cc *grpc.ClientConn -} - -func NewSpeechClient(cc *grpc.ClientConn) SpeechClient { - return &speechClient{cc} -} - -func (c *speechClient) Recognize(ctx context.Context, in *RecognizeRequest, opts ...grpc.CallOption) (*RecognizeResponse, error) { - out := new(RecognizeResponse) - err := grpc.Invoke(ctx, "/google.cloud.speech.v1p1beta1.Speech/Recognize", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *speechClient) LongRunningRecognize(ctx context.Context, in *LongRunningRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.speech.v1p1beta1.Speech/LongRunningRecognize", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *speechClient) StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Speech_serviceDesc.Streams[0], c.cc, "/google.cloud.speech.v1p1beta1.Speech/StreamingRecognize", opts...) - if err != nil { - return nil, err - } - x := &speechStreamingRecognizeClient{stream} - return x, nil -} - -type Speech_StreamingRecognizeClient interface { - Send(*StreamingRecognizeRequest) error - Recv() (*StreamingRecognizeResponse, error) - grpc.ClientStream -} - -type speechStreamingRecognizeClient struct { - grpc.ClientStream -} - -func (x *speechStreamingRecognizeClient) Send(m *StreamingRecognizeRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *speechStreamingRecognizeClient) Recv() (*StreamingRecognizeResponse, error) { - m := new(StreamingRecognizeResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for Speech service - -type SpeechServer interface { - // Performs synchronous speech recognition: receive results after all audio - // has been sent and processed. - Recognize(context.Context, *RecognizeRequest) (*RecognizeResponse, error) - // Performs asynchronous speech recognition: receive results via the - // google.longrunning.Operations interface. Returns either an - // `Operation.error` or an `Operation.response` which contains - // a `LongRunningRecognizeResponse` message. - LongRunningRecognize(context.Context, *LongRunningRecognizeRequest) (*google_longrunning.Operation, error) - // Performs bidirectional streaming speech recognition: receive results while - // sending audio. This method is only available via the gRPC API (not REST). - StreamingRecognize(Speech_StreamingRecognizeServer) error -} - -func RegisterSpeechServer(s *grpc.Server, srv SpeechServer) { - s.RegisterService(&_Speech_serviceDesc, srv) -} - -func _Speech_Recognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RecognizeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpeechServer).Recognize(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.speech.v1p1beta1.Speech/Recognize", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpeechServer).Recognize(ctx, req.(*RecognizeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Speech_LongRunningRecognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LongRunningRecognizeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpeechServer).LongRunningRecognize(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.speech.v1p1beta1.Speech/LongRunningRecognize", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpeechServer).LongRunningRecognize(ctx, req.(*LongRunningRecognizeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Speech_StreamingRecognize_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(SpeechServer).StreamingRecognize(&speechStreamingRecognizeServer{stream}) -} - -type Speech_StreamingRecognizeServer interface { - Send(*StreamingRecognizeResponse) error - Recv() (*StreamingRecognizeRequest, error) - grpc.ServerStream -} - -type speechStreamingRecognizeServer struct { - grpc.ServerStream -} - -func (x *speechStreamingRecognizeServer) Send(m *StreamingRecognizeResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *speechStreamingRecognizeServer) Recv() (*StreamingRecognizeRequest, error) { - m := new(StreamingRecognizeRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _Speech_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.speech.v1p1beta1.Speech", - HandlerType: (*SpeechServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Recognize", - Handler: _Speech_Recognize_Handler, - }, - { - MethodName: "LongRunningRecognize", - Handler: _Speech_LongRunningRecognize_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingRecognize", - Handler: _Speech_StreamingRecognize_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/cloud/speech/v1_1beta1/cloud_speech.proto", -} - -func init() { proto.RegisterFile("google/cloud/speech/v1_1beta1/cloud_speech.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2005 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xbf, 0x73, 0xdb, 0xc8, - 0xf5, 0x37, 0x48, 0x51, 0x12, 0x9f, 0x7e, 0x41, 0xab, 0xf3, 0xd7, 0xb4, 0xac, 0xb3, 0x75, 0xf0, - 0xdc, 0x9d, 0xee, 0xbe, 0x37, 0xa4, 0xa5, 0x64, 0x2e, 0x67, 0xdf, 0xe4, 0x26, 0x10, 0x00, 0x99, - 0x98, 0x90, 0x00, 0x67, 0x49, 0xda, 0xf1, 0x35, 0x3b, 0x10, 0xb8, 0xa4, 0x31, 0x21, 0x01, 0x1c, - 0xb0, 0x50, 0x6c, 0x97, 0x69, 0x33, 0x49, 0x93, 0x99, 0x74, 0xa9, 0x72, 0x75, 0xca, 0x14, 0x69, - 0x52, 0x25, 0x45, 0xda, 0x34, 0x29, 0xaf, 0xc8, 0x1f, 0x91, 0x32, 0xb3, 0xbb, 0x00, 0x45, 0x91, - 0xb2, 0x2d, 0x6b, 0x72, 0x33, 0xe9, 0x88, 0xcf, 0xbe, 0xf7, 0x79, 0x6f, 0xdf, 0xbe, 0x7d, 0x7c, - 0x6f, 0xe1, 0xc1, 0x28, 0x8a, 0x46, 0x63, 0xda, 0xf0, 0xc7, 0x51, 0x36, 0x68, 0xa4, 0x31, 0xa5, - 0xfe, 0xf3, 0xc6, 0xd9, 0x21, 0x39, 0x3c, 0xa5, 0xcc, 0x3b, 0x94, 0x30, 0x91, 0x70, 0x3d, 0x4e, - 0x22, 0x16, 0xa1, 0xf7, 0xa5, 0x46, 0x5d, 0x2c, 0xd5, 0xf3, 0xa5, 0xb3, 0xc3, 0x58, 0x6a, 0xec, - 0xee, 0xe5, 0x84, 0x5e, 0x1c, 0x34, 0xbc, 0x30, 0x8c, 0x98, 0xc7, 0x82, 0x28, 0x4c, 0xa5, 0xf2, - 0xee, 0xfd, 0x7c, 0x75, 0x1c, 0x85, 0xa3, 0x24, 0x0b, 0xc3, 0x20, 0x1c, 0x35, 0xa2, 0x98, 0x26, - 0x17, 0x84, 0xee, 0xe6, 0x42, 0xe2, 0xeb, 0x34, 0x1b, 0x36, 0x06, 0x99, 0x14, 0xc8, 0xd7, 0xef, - 0xcd, 0xaf, 0xb3, 0x60, 0x42, 0x53, 0xe6, 0x4d, 0xe2, 0x5c, 0xe0, 0x56, 0x2e, 0x90, 0xc4, 0x7e, - 0x23, 0x65, 0x1e, 0xcb, 0x72, 0x66, 0xed, 0x0f, 0x0a, 0xa8, 0x98, 0xfa, 0xd1, 0x28, 0x0c, 0x5e, - 0x51, 0x4c, 0xbf, 0xc9, 0x68, 0xca, 0x50, 0x13, 0x96, 0xfd, 0x28, 0x1c, 0x06, 0xa3, 0x9a, 0xb2, - 0xaf, 0x1c, 0xac, 0x1d, 0x3d, 0xa8, 0xbf, 0x71, 0x87, 0xf5, 0x9c, 0x80, 0x3b, 0x64, 0x08, 0x3d, - 0x9c, 0xeb, 0x23, 0x0b, 0x2a, 0x5e, 0x36, 0x08, 0xa2, 0x5a, 0x49, 0x10, 0x35, 0xae, 0x4e, 0xa4, - 0x73, 0x35, 0x2c, 0xb5, 0xb5, 0x3f, 0x2a, 0x70, 0xa7, 0x15, 0x85, 0x23, 0x2c, 0x03, 0xf4, 0xbf, - 0xef, 0xf0, 0x5f, 0x14, 0xb8, 0xdd, 0x65, 0x09, 0xf5, 0x26, 0x97, 0xb9, 0x3b, 0x04, 0x35, 0x2d, - 0x16, 0xc9, 0x05, 0xc7, 0x1f, 0xbe, 0xc5, 0xde, 0x3c, 0xe7, 0xf9, 0x0e, 0x9a, 0x37, 0xf0, 0xd6, - 0x94, 0x54, 0x42, 0xe8, 0x43, 0xd8, 0x10, 0xee, 0x70, 0x1b, 0x8c, 0x86, 0x4c, 0x6c, 0x6a, 0xbd, - 0x79, 0x03, 0xaf, 0x0b, 0xd8, 0x90, 0xe8, 0xf1, 0x0e, 0x6c, 0x9f, 0xbb, 0x93, 0x48, 0x1f, 0xb5, - 0x3f, 0x2b, 0xb0, 0xfb, 0x7a, 0x6b, 0xff, 0xc5, 0x88, 0x7f, 0x02, 0x6a, 0x1a, 0x84, 0xa3, 0x31, - 0x25, 0x19, 0x63, 0x34, 0xf1, 0x42, 0x9f, 0x0a, 0x3f, 0x57, 0xf1, 0x96, 0xc4, 0xfb, 0x05, 0x8c, - 0x3e, 0x86, 0xad, 0x20, 0x64, 0x34, 0x09, 0x26, 0x24, 0xa1, 0x69, 0x36, 0x66, 0x69, 0xad, 0x2c, - 0x24, 0x37, 0x73, 0x18, 0x4b, 0x54, 0xfb, 0x5b, 0x05, 0xb6, 0x17, 0x7d, 0xfe, 0x1a, 0x56, 0x69, - 0xe8, 0x47, 0x83, 0x20, 0x94, 0x5e, 0x6f, 0x1e, 0x7d, 0xf5, 0xae, 0x5e, 0xd7, 0xc5, 0x29, 0x5b, - 0x39, 0x0b, 0x9e, 0xf2, 0xa1, 0x4f, 0x61, 0x3b, 0xf5, 0x26, 0xf1, 0x98, 0x92, 0xc4, 0x63, 0x94, - 0x3c, 0xa7, 0x09, 0x7b, 0x25, 0xb6, 0x51, 0xc1, 0x5b, 0x72, 0x01, 0x7b, 0x8c, 0x36, 0x39, 0x8c, - 0xee, 0xc3, 0xc6, 0xd8, 0x0b, 0x47, 0x99, 0x37, 0xa2, 0xc4, 0x8f, 0x06, 0x54, 0x6c, 0xa2, 0x8a, - 0xd7, 0x0b, 0xd0, 0x88, 0x06, 0x94, 0x87, 0x65, 0xe2, 0xbd, 0x20, 0xde, 0x98, 0xd1, 0x24, 0xf4, - 0x58, 0x70, 0x46, 0xd3, 0xda, 0x92, 0xe4, 0x9b, 0x78, 0x2f, 0xf4, 0x19, 0x98, 0x8b, 0xc6, 0x49, - 0x34, 0xf4, 0xc2, 0x80, 0xbd, 0x24, 0xc3, 0x80, 0x2f, 0xd5, 0x2a, 0x32, 0x82, 0x53, 0xfc, 0x44, - 0xc0, 0xa8, 0x0f, 0x5b, 0x72, 0x93, 0x32, 0x25, 0x5e, 0xb0, 0xb4, 0xb6, 0xbc, 0x5f, 0x3e, 0x58, - 0x3b, 0xfa, 0xec, 0x6d, 0x89, 0x27, 0x00, 0x43, 0x2a, 0xe1, 0xcd, 0x74, 0xf6, 0x33, 0x45, 0x3f, - 0x82, 0x1a, 0x0d, 0xbd, 0xd3, 0x31, 0x25, 0xbf, 0x88, 0x92, 0x01, 0xe1, 0xd5, 0x87, 0x44, 0xc3, - 0x61, 0x4a, 0x59, 0x5a, 0x5b, 0x15, 0x9e, 0xdc, 0x94, 0xeb, 0x4f, 0xa3, 0x64, 0xd0, 0x0b, 0x26, - 0xd4, 0x95, 0x8b, 0xe8, 0x27, 0xb0, 0x97, 0x2b, 0x7a, 0x19, 0x8b, 0x26, 0x1e, 0x0b, 0x7c, 0x12, - 0x67, 0xa1, 0xcf, 0x32, 0x51, 0xde, 0x6a, 0x6b, 0x42, 0x79, 0x57, 0xca, 0xe8, 0x85, 0x48, 0xe7, - 0x5c, 0x02, 0x39, 0xb0, 0x3a, 0xa1, 0xcc, 0x1b, 0x78, 0xcc, 0xab, 0x55, 0x45, 0x2a, 0x1e, 0x5d, - 0xfd, 0x50, 0xdb, 0xb9, 0x26, 0x9e, 0x72, 0x68, 0xbf, 0x52, 0x60, 0xe3, 0xc2, 0x21, 0xa3, 0x1a, - 0xbc, 0x67, 0x39, 0x86, 0x6b, 0xda, 0xce, 0x63, 0xd2, 0x77, 0xba, 0x1d, 0xcb, 0xb0, 0x4f, 0x6c, - 0xcb, 0x54, 0x6f, 0xa0, 0x75, 0x58, 0x6d, 0xd9, 0x8e, 0xa5, 0xe3, 0xc3, 0xcf, 0x55, 0x05, 0xad, - 0xc2, 0xd2, 0x49, 0x4b, 0x37, 0xd4, 0x12, 0xaa, 0x42, 0xa5, 0xdd, 0x6f, 0xe9, 0x4f, 0xd5, 0x32, - 0x5a, 0x81, 0xb2, 0xde, 0xc6, 0xea, 0x12, 0x02, 0x58, 0xd6, 0xdb, 0x98, 0x3c, 0x3d, 0x56, 0x2b, - 0x5c, 0xcf, 0x7d, 0xfc, 0x98, 0xb8, 0x9d, 0x7e, 0x57, 0x5d, 0x46, 0xbb, 0xf0, 0x7f, 0xdd, 0x8e, - 0x65, 0xfd, 0x8c, 0x3c, 0xb5, 0x7b, 0x4d, 0xd2, 0xb4, 0x74, 0xd3, 0xc2, 0xe4, 0xf8, 0x59, 0xcf, - 0x52, 0x57, 0xb4, 0xef, 0xd6, 0x60, 0xe7, 0x12, 0x7f, 0xd1, 0x04, 0x54, 0x91, 0xf2, 0x9e, 0xcf, - 0x61, 0xc2, 0x5e, 0xc6, 0x34, 0x4f, 0xe9, 0xe3, 0x77, 0xdf, 0x7d, 0xdd, 0x3e, 0xa7, 0xea, 0xbd, - 0x8c, 0x29, 0xde, 0x0a, 0x2e, 0x02, 0xe8, 0x2b, 0xd8, 0x0b, 0xc2, 0x41, 0x96, 0xb2, 0xe4, 0x25, - 0x09, 0xbd, 0xc0, 0x4f, 0x45, 0xde, 0x92, 0x68, 0x48, 0x64, 0xb1, 0xe4, 0x09, 0xbc, 0x81, 0x6b, - 0x85, 0x8c, 0xc3, 0x45, 0x78, 0x16, 0xbb, 0x43, 0x11, 0x4a, 0x74, 0x06, 0x3b, 0x93, 0xc0, 0x4f, - 0xa2, 0xf8, 0x79, 0x14, 0x52, 0x32, 0x08, 0x52, 0x26, 0xae, 0xf9, 0x92, 0xf0, 0xd8, 0xba, 0x86, - 0xc7, 0xed, 0x29, 0x9b, 0x99, 0x93, 0x61, 0x34, 0x59, 0xc0, 0x10, 0x83, 0x9d, 0x28, 0x09, 0x46, - 0x41, 0xe8, 0x8d, 0xc9, 0x84, 0x0e, 0x02, 0x4f, 0x46, 0xaa, 0x22, 0xec, 0x9a, 0xd7, 0xb0, 0xeb, - 0xe6, 0x6c, 0x6d, 0x4e, 0x26, 0x62, 0xb5, 0x1d, 0xcd, 0x43, 0xe8, 0x1b, 0x40, 0x61, 0x36, 0x39, - 0xa5, 0x09, 0x0f, 0x50, 0x1a, 0x53, 0xef, 0xe7, 0x34, 0xe1, 0xf7, 0x8c, 0x1b, 0x35, 0xae, 0x61, - 0xd4, 0x11, 0x64, 0xee, 0xb0, 0x9b, 0x53, 0x61, 0x35, 0x9c, 0x43, 0xd0, 0x2b, 0xb8, 0x99, 0x50, - 0x3f, 0x4a, 0x78, 0xc2, 0x92, 0x01, 0x3d, 0x0b, 0x7c, 0x2a, 0xb7, 0xba, 0x22, 0xac, 0x9e, 0x5c, - 0xc3, 0x2a, 0x2e, 0xf8, 0x4c, 0x41, 0x27, 0x36, 0xbb, 0x93, 0x2c, 0x82, 0xe8, 0xe8, 0x12, 0xdb, - 0xa1, 0x37, 0xa1, 0xe2, 0xe6, 0x57, 0x17, 0x74, 0x1c, 0x6f, 0x42, 0xd1, 0x67, 0x80, 0xce, 0x0f, - 0x86, 0x57, 0x0b, 0xe1, 0x6c, 0x55, 0x28, 0xa8, 0xd3, 0x88, 0x06, 0x13, 0x69, 0xe1, 0x3e, 0x6c, - 0x44, 0xa7, 0xc3, 0x2c, 0xf5, 0x3d, 0x46, 0x07, 0x24, 0x18, 0xd4, 0x60, 0x5f, 0x39, 0x28, 0xe3, - 0xf5, 0x73, 0xd0, 0x1e, 0xa0, 0x7b, 0xb0, 0x26, 0xff, 0xec, 0x58, 0x14, 0x07, 0xbe, 0xa8, 0x1c, - 0x55, 0x0c, 0x02, 0xea, 0x71, 0x44, 0xfb, 0xab, 0x02, 0x5b, 0x73, 0x99, 0x8e, 0xf6, 0x61, 0xcf, - 0x76, 0x7a, 0x16, 0xd6, 0x8d, 0x9e, 0xed, 0x3a, 0xa4, 0xf7, 0xac, 0x63, 0xcd, 0xdd, 0xf1, 0x4d, - 0x00, 0xd3, 0xee, 0x1a, 0xfd, 0x6e, 0xd7, 0x76, 0x1d, 0x55, 0x41, 0x2a, 0xac, 0x77, 0xb0, 0xd5, - 0xb5, 0x9c, 0x9e, 0xce, 0x55, 0xd4, 0x12, 0x97, 0xe8, 0x34, 0x5d, 0xc7, 0x22, 0x86, 0xde, 0x6a, - 0xa9, 0x65, 0xb4, 0x01, 0xd5, 0x27, 0xae, 0x6d, 0x58, 0x6d, 0xdd, 0x6e, 0xa9, 0x4b, 0xe8, 0x0e, - 0xdc, 0xea, 0x60, 0xf7, 0xc4, 0x12, 0x04, 0x7a, 0xab, 0xf5, 0x8c, 0x74, 0xb0, 0x6b, 0xf6, 0x0d, - 0xcb, 0x54, 0x2b, 0x9c, 0x4d, 0xc8, 0x92, 0xae, 0xa5, 0x63, 0xa3, 0xa9, 0x2e, 0xa3, 0x6d, 0xd8, - 0x90, 0x88, 0xe1, 0xb6, 0xdb, 0xba, 0x63, 0xaa, 0x2b, 0x9c, 0xd0, 0xb4, 0x8d, 0xdc, 0xde, 0xaa, - 0x36, 0x00, 0xb4, 0x98, 0xfe, 0xe8, 0x3e, 0xdc, 0x6b, 0xdb, 0x06, 0x76, 0xa5, 0x2b, 0xa6, 0xdd, - 0xed, 0xe9, 0x8e, 0x31, 0xbf, 0x99, 0x0d, 0xa8, 0xf2, 0x72, 0x75, 0x62, 0x5b, 0x2d, 0x53, 0x55, - 0x78, 0x1d, 0x6a, 0xdb, 0xa6, 0xfc, 0x2a, 0xf1, 0xaf, 0x93, 0x62, 0xad, 0xac, 0x39, 0xb0, 0xbd, - 0x90, 0xec, 0xdc, 0x88, 0x8b, 0xed, 0xc7, 0xb6, 0xa3, 0xb7, 0x48, 0xdb, 0x32, 0x6d, 0xfd, 0xb2, - 0x88, 0x55, 0xa1, 0xa2, 0xf7, 0x4d, 0xdb, 0x55, 0x15, 0xfe, 0xf3, 0x89, 0x6d, 0x5a, 0xae, 0x5a, - 0xd2, 0x62, 0x50, 0xe7, 0xf3, 0x18, 0x69, 0x70, 0xd7, 0xe9, 0xb7, 0x8f, 0x2d, 0x4c, 0xdc, 0x13, - 0xd2, 0xed, 0x58, 0xfa, 0x4f, 0x2d, 0xdc, 0x9d, 0x63, 0xdb, 0x82, 0x35, 0xbe, 0xa1, 0x7c, 0x55, - 0x1e, 0x40, 0xef, 0xa9, 0x3b, 0x15, 0x57, 0x4b, 0xe8, 0x26, 0x6c, 0xb7, 0xfb, 0xad, 0x9e, 0xdd, - 0x69, 0x59, 0xe7, 0x70, 0x59, 0xfb, 0x56, 0x91, 0xb5, 0x73, 0x3e, 0x5f, 0x3f, 0x84, 0x0f, 0xb0, - 0x65, 0xb8, 0x58, 0x14, 0x74, 0xd3, 0x7a, 0xc2, 0x83, 0x7d, 0xf9, 0xc1, 0x77, 0xdb, 0x3a, 0xee, - 0x89, 0x80, 0xaa, 0x0a, 0x5a, 0x86, 0x52, 0xc7, 0x98, 0x3d, 0x6e, 0x5e, 0xfa, 0xd5, 0x32, 0x5a, - 0x83, 0x95, 0x27, 0x56, 0xd3, 0x36, 0x5a, 0x96, 0xba, 0xc4, 0xff, 0x2b, 0xdc, 0x5e, 0x93, 0x6f, - 0xa8, 0xdf, 0x33, 0x5d, 0x17, 0xe7, 0xfc, 0x6a, 0x05, 0xdd, 0x82, 0x1d, 0xb9, 0x62, 0x3b, 0xb3, - 0x0b, 0xcb, 0xda, 0x27, 0xb0, 0x71, 0xe1, 0xcf, 0x15, 0xd5, 0x60, 0x25, 0x7e, 0x9e, 0x78, 0x29, - 0x4d, 0x6b, 0xca, 0x7e, 0xf9, 0xa0, 0x8a, 0x8b, 0x4f, 0x0d, 0x4f, 0x7b, 0xf5, 0x69, 0xc3, 0x89, - 0x76, 0x61, 0xa5, 0xe8, 0xee, 0x94, 0xbc, 0xbb, 0x2b, 0x00, 0x84, 0xa0, 0x9c, 0x25, 0x81, 0x68, - 0x43, 0xaa, 0xcd, 0x1b, 0x98, 0x7f, 0x1c, 0x6f, 0x82, 0x6c, 0xfe, 0x48, 0x1a, 0x65, 0x89, 0x4f, - 0x35, 0x3a, 0xed, 0x94, 0x78, 0x7f, 0x9a, 0xc6, 0x51, 0x98, 0x52, 0xd4, 0x81, 0x95, 0xa2, 0xc1, - 0x2a, 0x89, 0xf6, 0xe0, 0xf3, 0x2b, 0xb5, 0x07, 0x33, 0xce, 0xc9, 0x4e, 0x0c, 0x17, 0x34, 0x5a, - 0x0c, 0x7b, 0x97, 0x37, 0xf0, 0xdf, 0x9b, 0xc5, 0xbf, 0x2b, 0x97, 0x9b, 0x9c, 0xfe, 0x87, 0xca, - 0xb6, 0x69, 0x94, 0xd0, 0x34, 0x25, 0x31, 0x4d, 0xfc, 0x22, 0x84, 0x15, 0xd1, 0x36, 0x09, 0xbc, - 0x23, 0x61, 0xf4, 0x10, 0x20, 0x65, 0x5e, 0xc2, 0x44, 0x67, 0x93, 0x8f, 0x06, 0xbb, 0x85, 0x83, - 0xc5, 0xd0, 0x55, 0xef, 0x15, 0x43, 0x17, 0xae, 0x0a, 0x69, 0xfe, 0x8d, 0x4c, 0x50, 0xc7, 0x5e, - 0xca, 0x48, 0x16, 0x0f, 0x78, 0x63, 0x28, 0x08, 0xca, 0x6f, 0x25, 0xd8, 0xe4, 0x3a, 0x7d, 0xa1, - 0xc2, 0x41, 0xed, 0xbb, 0xd2, 0x62, 0x37, 0x3e, 0x13, 0xbd, 0x03, 0xa8, 0xd0, 0x24, 0x89, 0x92, - 0xbc, 0x19, 0x47, 0x05, 0x73, 0x12, 0xfb, 0xf5, 0xae, 0x18, 0xf7, 0xb0, 0x14, 0x40, 0xdd, 0xf9, - 0x38, 0x5f, 0x67, 0xe2, 0x98, 0x0b, 0x35, 0xca, 0x60, 0x3b, 0xef, 0x2a, 0xe9, 0x19, 0x0d, 0x99, - 0x2c, 0xe6, 0xf2, 0xcf, 0xdd, 0x7e, 0x47, 0xfa, 0xf3, 0x4d, 0xe5, 0x27, 0x6c, 0x71, 0x46, 0xd9, - 0x95, 0xa4, 0x17, 0x01, 0xad, 0x05, 0x5b, 0x73, 0x32, 0x68, 0x0f, 0x6a, 0xbc, 0x97, 0x32, 0x9a, - 0xc4, 0x7a, 0x62, 0x39, 0xbd, 0xb9, 0x2b, 0x7d, 0x07, 0x6e, 0x59, 0x8e, 0x29, 0x8a, 0x8d, 0xed, - 0x3c, 0x6e, 0x59, 0xa4, 0xdf, 0xe3, 0xb5, 0xdf, 0x31, 0x2c, 0x55, 0xd1, 0xfe, 0xf4, 0x9a, 0x81, - 0x47, 0x6e, 0x16, 0x11, 0x58, 0xbf, 0xd0, 0x8b, 0x2b, 0x22, 0x7a, 0x5f, 0xbe, 0x6b, 0x96, 0xce, - 0x34, 0xee, 0xf8, 0x02, 0x21, 0xba, 0x0d, 0xab, 0x41, 0x4a, 0x86, 0xbc, 0xe0, 0xe6, 0xf3, 0xcf, - 0x4a, 0x90, 0x9e, 0xf0, 0x4f, 0xb4, 0x07, 0x3c, 0xa1, 0x4e, 0x83, 0x71, 0xc0, 0x5e, 0x8a, 0xe4, - 0x29, 0xe1, 0x73, 0x40, 0x7b, 0x05, 0xb7, 0x5e, 0x73, 0x19, 0xbe, 0x77, 0xa7, 0xb5, 0xdf, 0x2b, - 0xb0, 0xf7, 0x26, 0x71, 0x74, 0x17, 0x80, 0x25, 0x5e, 0x98, 0xfa, 0x49, 0x10, 0xcb, 0xeb, 0x55, - 0xc5, 0x33, 0x08, 0x5f, 0x17, 0x73, 0xe0, 0x80, 0x16, 0x73, 0x5f, 0x09, 0xcf, 0x20, 0xe8, 0xc7, - 0x50, 0xe1, 0x23, 0x05, 0x1f, 0xf4, 0xb8, 0xeb, 0x1f, 0xbf, 0xc5, 0x75, 0x3e, 0x5f, 0xd8, 0xe1, - 0x30, 0xc2, 0x52, 0x4b, 0xfb, 0x8d, 0x02, 0xab, 0x05, 0x86, 0xbe, 0xb8, 0x70, 0x8b, 0xe5, 0x55, - 0xb9, 0xbd, 0x70, 0x09, 0xcd, 0xfc, 0x69, 0x65, 0xf6, 0x12, 0xff, 0x90, 0x4f, 0x8e, 0x83, 0xd9, - 0xdb, 0xff, 0x06, 0xbd, 0x15, 0x1a, 0x8a, 0x19, 0x07, 0x21, 0x58, 0xe2, 0x5e, 0xe4, 0xe3, 0x9d, - 0xf8, 0x7d, 0xf4, 0xcf, 0x32, 0x2c, 0xcb, 0x80, 0xa1, 0xdf, 0x29, 0x50, 0x9d, 0x66, 0x3d, 0xba, - 0xe2, 0x4b, 0xc3, 0xf4, 0x11, 0x61, 0xf7, 0xc1, 0xd5, 0x15, 0xe4, 0x85, 0xd2, 0x3e, 0xfa, 0xe5, - 0x3f, 0xfe, 0xf5, 0xdb, 0xd2, 0xbe, 0x76, 0xa7, 0x31, 0x95, 0xca, 0xdf, 0xb7, 0x1e, 0x25, 0x85, - 0xf0, 0x23, 0xe5, 0x53, 0xf4, 0xad, 0x02, 0xef, 0x5d, 0x56, 0x39, 0xd1, 0xa3, 0xb7, 0x98, 0x7c, - 0xc3, 0x13, 0xcd, 0xee, 0xfb, 0x85, 0xee, 0xcc, 0x43, 0x57, 0xdd, 0x2d, 0x1e, 0xba, 0xb4, 0x43, - 0xe1, 0xdb, 0xff, 0x6b, 0x1f, 0x2d, 0xfa, 0x36, 0xa3, 0x70, 0xc1, 0xcd, 0x5f, 0x2b, 0x80, 0x16, - 0xcb, 0x07, 0xfa, 0xe2, 0x1a, 0x15, 0x47, 0xba, 0xf8, 0xf0, 0xda, 0xb5, 0xea, 0x40, 0x79, 0xa0, - 0x1c, 0xbf, 0x82, 0x0f, 0xfc, 0x68, 0xf2, 0x66, 0x8e, 0xe3, 0x35, 0x79, 0xf8, 0x1d, 0x9e, 0x35, - 0x1d, 0xe5, 0x6b, 0x23, 0x97, 0x1e, 0x45, 0x7c, 0xf8, 0xaf, 0x47, 0xc9, 0xa8, 0x31, 0xa2, 0xa1, - 0xc8, 0xa9, 0x86, 0x5c, 0xf2, 0xe2, 0x20, 0x9d, 0x7f, 0x8b, 0xcc, 0xc9, 0xbe, 0x94, 0xc0, 0xbf, - 0x15, 0xe5, 0x74, 0x59, 0xa8, 0xfc, 0xe0, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x32, 0x25, - 0x1e, 0xbd, 0x14, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/support/common/common.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/support/common/common.pb.go deleted file mode 100644 index b9bbfb86..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/support/common/common.pb.go +++ /dev/null @@ -1,864 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/support/common.proto - -/* -Package common is a generated protocol buffer package. - -It is generated from these files: - google/cloud/support/common.proto - -It has these top-level messages: - SupportAccount - Case - CustomerIssue - SupportRole - Comment - IssueTaxonomy -*/ -package common - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The current state of this SupportAccount. -type SupportAccount_State int32 - -const ( - // Account is in an unknown state. - SupportAccount_STATE_UNSPECIFIED SupportAccount_State = 0 - // Account is in an active state. - SupportAccount_ACTIVE SupportAccount_State = 1 - // Account has been created but is being provisioned in support systems. - SupportAccount_PENDING SupportAccount_State = 2 - // Account deletion has been requested by the user. - SupportAccount_PENDING_DELETION SupportAccount_State = 3 -) - -var SupportAccount_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "ACTIVE", - 2: "PENDING", - 3: "PENDING_DELETION", -} -var SupportAccount_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "PENDING": 2, - "PENDING_DELETION": 3, -} - -func (x SupportAccount_State) String() string { - return proto.EnumName(SupportAccount_State_name, int32(x)) -} -func (SupportAccount_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// Pricing model applicable to this support account. -type SupportAccount_PricingModel int32 - -const ( - // This account is subscribed to an unknown pricing model. - SupportAccount_PRICING_MODEL_UNKNOWN SupportAccount_PricingModel = 0 - // Package based pricing (Platinum, Gold, Silver, Bronze). - SupportAccount_PACKAGES SupportAccount_PricingModel = 1 - // Support charges are calculated based on user seats a.k.a, - // "Pick Your Team" model. - SupportAccount_USER_ROLES SupportAccount_PricingModel = 2 -) - -var SupportAccount_PricingModel_name = map[int32]string{ - 0: "PRICING_MODEL_UNKNOWN", - 1: "PACKAGES", - 2: "USER_ROLES", -} -var SupportAccount_PricingModel_value = map[string]int32{ - "PRICING_MODEL_UNKNOWN": 0, - "PACKAGES": 1, - "USER_ROLES": 2, -} - -func (x SupportAccount_PricingModel) String() string { - return proto.EnumName(SupportAccount_PricingModel_name, int32(x)) -} -func (SupportAccount_PricingModel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 1} -} - -// The case priority with P0 being the most urgent and P4 the least. -type Case_Priority int32 - -const ( - // Priority is undefined or has not been set yet. - Case_PRIORITY_UNSPECIFIED Case_Priority = 0 - // Extreme impact on a production service - Service is hard down. - Case_P0 Case_Priority = 1 - // Critical impact on a production service - Service is currently unusable. - Case_P1 Case_Priority = 2 - // Severe impact on a production service - Service is usable but greatly - // impaired. - Case_P2 Case_Priority = 3 - // Medium impact on a production service - Service is available, but - // moderately impaired. - Case_P3 Case_Priority = 4 - // General questions or minor issues - Production service is fully - // available. - Case_P4 Case_Priority = 5 -) - -var Case_Priority_name = map[int32]string{ - 0: "PRIORITY_UNSPECIFIED", - 1: "P0", - 2: "P1", - 3: "P2", - 4: "P3", - 5: "P4", -} -var Case_Priority_value = map[string]int32{ - "PRIORITY_UNSPECIFIED": 0, - "P0": 1, - "P1": 2, - "P2": 3, - "P3": 4, - "P4": 5, -} - -func (x Case_Priority) String() string { - return proto.EnumName(Case_Priority_name, int32(x)) -} -func (Case_Priority) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// The state of a case. -type Case_State int32 - -const ( - // Case is in an unknown state. - Case_STATE_UNSPECIFIED Case_State = 0 - // Case has been created but no one is assigned to work on it yet. - Case_NEW Case_State = 1 - // Case has been assigned to a support agent. - Case_ASSIGNED Case_State = 2 - // A support agent is currently investigating the case. - Case_IN_PROGRESS_GOOGLE_SUPPORT Case_State = 3 - // Case has been forwarded to product team for further investigation. - Case_IN_PROGRESS_GOOGLE_ENG Case_State = 4 - // Case is under investigation and relates to a known issue. - Case_IN_PROGRESS_KNOWN_ISSUE Case_State = 5 - // Case is waiting for a response from the customer. - Case_WAITING_FOR_CUSTOMER_RESPONSE Case_State = 6 - // A solution has been offered for the case but it isn't closed yet. - Case_SOLUTION_OFFERED Case_State = 7 - // Cases has been fully resolved and is in a closed state. - Case_CLOSED Case_State = 8 -) - -var Case_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "NEW", - 2: "ASSIGNED", - 3: "IN_PROGRESS_GOOGLE_SUPPORT", - 4: "IN_PROGRESS_GOOGLE_ENG", - 5: "IN_PROGRESS_KNOWN_ISSUE", - 6: "WAITING_FOR_CUSTOMER_RESPONSE", - 7: "SOLUTION_OFFERED", - 8: "CLOSED", -} -var Case_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "NEW": 1, - "ASSIGNED": 2, - "IN_PROGRESS_GOOGLE_SUPPORT": 3, - "IN_PROGRESS_GOOGLE_ENG": 4, - "IN_PROGRESS_KNOWN_ISSUE": 5, - "WAITING_FOR_CUSTOMER_RESPONSE": 6, - "SOLUTION_OFFERED": 7, - "CLOSED": 8, -} - -func (x Case_State) String() string { - return proto.EnumName(Case_State_name, int32(x)) -} -func (Case_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} } - -// The status of a customer issue. -type CustomerIssue_IssueState int32 - -const ( - // Issue in an unknown state. - CustomerIssue_ISSUE_STATE_UNSPECIFIED CustomerIssue_IssueState = 0 - // Issue is currently open but the work on it has not been started. - CustomerIssue_OPEN CustomerIssue_IssueState = 1 - // Issue is currently being worked on. - CustomerIssue_IN_PROGRESS CustomerIssue_IssueState = 2 - // Issue is fixed. - CustomerIssue_FIXED CustomerIssue_IssueState = 3 - // Issue has been marked as invalid. - CustomerIssue_WONT_FIX CustomerIssue_IssueState = 4 - // Issue verified and in production. - CustomerIssue_VERIFIED CustomerIssue_IssueState = 5 -) - -var CustomerIssue_IssueState_name = map[int32]string{ - 0: "ISSUE_STATE_UNSPECIFIED", - 1: "OPEN", - 2: "IN_PROGRESS", - 3: "FIXED", - 4: "WONT_FIX", - 5: "VERIFIED", -} -var CustomerIssue_IssueState_value = map[string]int32{ - "ISSUE_STATE_UNSPECIFIED": 0, - "OPEN": 1, - "IN_PROGRESS": 2, - "FIXED": 3, - "WONT_FIX": 4, - "VERIFIED": 5, -} - -func (x CustomerIssue_IssueState) String() string { - return proto.EnumName(CustomerIssue_IssueState_name, int32(x)) -} -func (CustomerIssue_IssueState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// A role which determines the support resources and features a user might -// get access to. -type SupportRole_Role int32 - -const ( - // An unknown role. - SupportRole_ROLE_UNSPECIFIED SupportRole_Role = 0 - // The basic support role. - SupportRole_BASIC SupportRole_Role = 1 - // The developer role. - SupportRole_DEVELOPER SupportRole_Role = 2 - // The operation role. - SupportRole_OPERATION SupportRole_Role = 3 - // The site reliability role. - SupportRole_SITE_RELIABILITY SupportRole_Role = 4 -) - -var SupportRole_Role_name = map[int32]string{ - 0: "ROLE_UNSPECIFIED", - 1: "BASIC", - 2: "DEVELOPER", - 3: "OPERATION", - 4: "SITE_RELIABILITY", -} -var SupportRole_Role_value = map[string]int32{ - "ROLE_UNSPECIFIED": 0, - "BASIC": 1, - "DEVELOPER": 2, - "OPERATION": 3, - "SITE_RELIABILITY": 4, -} - -func (x SupportRole_Role) String() string { - return proto.EnumName(SupportRole_Role_name, int32(x)) -} -func (SupportRole_Role) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } - -// A Google Cloud Platform account that identifies support eligibility for a -// Cloud resource. Currently the Cloud resource can only be an Organization -// but this might change in future. -type SupportAccount struct { - // The resource name for a support account in format - // `supportAccounts/{account_id}`. - // Output only. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Identifier for this entity that gets persisted in storage system. The - // resource name is populated using this field in format - // `supportAccounts/{account_id}`. - AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId" json:"account_id,omitempty"` - // The Cloud resource with which this support account is associated. - CloudResource string `protobuf:"bytes,3,opt,name=cloud_resource,json=cloudResource" json:"cloud_resource,omitempty"` - // A user friendly display name assigned to this support account. - DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Indicates the current state of an account. - State SupportAccount_State `protobuf:"varint,5,opt,name=state,enum=google.cloud.support.common.SupportAccount_State" json:"state,omitempty"` - // Time when this account was created. - // Output only. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The resource name of a billing account associated with this support - // account. For example, `billingAccounts/ABCDEF-012345-567890`. - BillingAccountName string `protobuf:"bytes,7,opt,name=billing_account_name,json=billingAccountName" json:"billing_account_name,omitempty"` - UnifyAccountId string `protobuf:"bytes,8,opt,name=unify_account_id,json=unifyAccountId" json:"unify_account_id,omitempty"` - // The PricingModel applicable to this support account. - PricingModel SupportAccount_PricingModel `protobuf:"varint,9,opt,name=pricing_model,json=pricingModel,enum=google.cloud.support.common.SupportAccount_PricingModel" json:"pricing_model,omitempty"` -} - -func (m *SupportAccount) Reset() { *m = SupportAccount{} } -func (m *SupportAccount) String() string { return proto.CompactTextString(m) } -func (*SupportAccount) ProtoMessage() {} -func (*SupportAccount) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *SupportAccount) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SupportAccount) GetAccountId() string { - if m != nil { - return m.AccountId - } - return "" -} - -func (m *SupportAccount) GetCloudResource() string { - if m != nil { - return m.CloudResource - } - return "" -} - -func (m *SupportAccount) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *SupportAccount) GetState() SupportAccount_State { - if m != nil { - return m.State - } - return SupportAccount_STATE_UNSPECIFIED -} - -func (m *SupportAccount) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *SupportAccount) GetBillingAccountName() string { - if m != nil { - return m.BillingAccountName - } - return "" -} - -func (m *SupportAccount) GetUnifyAccountId() string { - if m != nil { - return m.UnifyAccountId - } - return "" -} - -func (m *SupportAccount) GetPricingModel() SupportAccount_PricingModel { - if m != nil { - return m.PricingModel - } - return SupportAccount_PRICING_MODEL_UNKNOWN -} - -// A support case created by the user. -type Case struct { - // The resource name for the Case in format - // `supportAccounts/{account_id}/cases/{case_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The short summary of the issue reported in this case. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // The board description of issue provided with initial summary. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // The product component for which this Case is reported. - Component string `protobuf:"bytes,4,opt,name=component" json:"component,omitempty"` - // The product subcomponent for which this Case is reported. - Subcomponent string `protobuf:"bytes,5,opt,name=subcomponent" json:"subcomponent,omitempty"` - // Timezone the client sending this request is in. - // It should be in a format IANA recognizes: https://www.iana.org/time-zone - // There is no additional validation done by the API. - ClientTimezone string `protobuf:"bytes,6,opt,name=client_timezone,json=clientTimezone" json:"client_timezone,omitempty"` - // The email addresses that can be copied to receive updates on this case. - // Users can specify a maximum of 10 email addresses. - CcAddresses []string `protobuf:"bytes,7,rep,name=cc_addresses,json=ccAddresses" json:"cc_addresses,omitempty"` - // The Google Cloud Platform project ID for which this case is created. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // List of customer issues associated with this case. - Issues []*CustomerIssue `protobuf:"bytes,10,rep,name=issues" json:"issues,omitempty"` - // The current priority of this case. - Priority Case_Priority `protobuf:"varint,11,opt,name=priority,enum=google.cloud.support.common.Case_Priority" json:"priority,omitempty"` - // The current state of this case. - State Case_State `protobuf:"varint,12,opt,name=state,enum=google.cloud.support.common.Case_State" json:"state,omitempty"` - // Time when this case was created. - // Output only. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,13,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Time when this case was last updated. - // Output only. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,14,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // Email address of user who created this case. - // Output only. It is inferred from credentials supplied during case creation. - CreatorEmail string `protobuf:"bytes,15,opt,name=creator_email,json=creatorEmail" json:"creator_email,omitempty"` - // The issue category applicable to this case. - Category string `protobuf:"bytes,16,opt,name=category" json:"category,omitempty"` -} - -func (m *Case) Reset() { *m = Case{} } -func (m *Case) String() string { return proto.CompactTextString(m) } -func (*Case) ProtoMessage() {} -func (*Case) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Case) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Case) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Case) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Case) GetComponent() string { - if m != nil { - return m.Component - } - return "" -} - -func (m *Case) GetSubcomponent() string { - if m != nil { - return m.Subcomponent - } - return "" -} - -func (m *Case) GetClientTimezone() string { - if m != nil { - return m.ClientTimezone - } - return "" -} - -func (m *Case) GetCcAddresses() []string { - if m != nil { - return m.CcAddresses - } - return nil -} - -func (m *Case) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *Case) GetIssues() []*CustomerIssue { - if m != nil { - return m.Issues - } - return nil -} - -func (m *Case) GetPriority() Case_Priority { - if m != nil { - return m.Priority - } - return Case_PRIORITY_UNSPECIFIED -} - -func (m *Case) GetState() Case_State { - if m != nil { - return m.State - } - return Case_STATE_UNSPECIFIED -} - -func (m *Case) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Case) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *Case) GetCreatorEmail() string { - if m != nil { - return m.CreatorEmail - } - return "" -} - -func (m *Case) GetCategory() string { - if m != nil { - return m.Category - } - return "" -} - -// Reference to a Google internal ticket used for investigating a support case. -// Not every support case will have an internal ticket associated with it. -// A support case can have multiple tickets linked to it. -type CustomerIssue struct { - // Unique identifier for the internal issue. - // Output only. - IssueId string `protobuf:"bytes,1,opt,name=issue_id,json=issueId" json:"issue_id,omitempty"` - // Represents current status of the internal ticket. - // Output only. - State CustomerIssue_IssueState `protobuf:"varint,2,opt,name=state,enum=google.cloud.support.common.CustomerIssue_IssueState" json:"state,omitempty"` - // Time when the internal issue was created. - // Output only. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Time when the internal issue was marked as resolved. - // Output only. - ResolveTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=resolve_time,json=resolveTime" json:"resolve_time,omitempty"` - // Time when the internal issue was last updated. - // Output only. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *CustomerIssue) Reset() { *m = CustomerIssue{} } -func (m *CustomerIssue) String() string { return proto.CompactTextString(m) } -func (*CustomerIssue) ProtoMessage() {} -func (*CustomerIssue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *CustomerIssue) GetIssueId() string { - if m != nil { - return m.IssueId - } - return "" -} - -func (m *CustomerIssue) GetState() CustomerIssue_IssueState { - if m != nil { - return m.State - } - return CustomerIssue_ISSUE_STATE_UNSPECIFIED -} - -func (m *CustomerIssue) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *CustomerIssue) GetResolveTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ResolveTime - } - return nil -} - -func (m *CustomerIssue) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// A message that contains mapping of a user and their role under a support -// account. -type SupportRole struct { - // Email address of user being added through this Role. - Email string `protobuf:"bytes,1,opt,name=email" json:"email,omitempty"` - // The type of role assigned to user. - Role SupportRole_Role `protobuf:"varint,2,opt,name=role,enum=google.cloud.support.common.SupportRole_Role" json:"role,omitempty"` -} - -func (m *SupportRole) Reset() { *m = SupportRole{} } -func (m *SupportRole) String() string { return proto.CompactTextString(m) } -func (*SupportRole) ProtoMessage() {} -func (*SupportRole) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SupportRole) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -func (m *SupportRole) GetRole() SupportRole_Role { - if m != nil { - return m.Role - } - return SupportRole_ROLE_UNSPECIFIED -} - -// The comment text associated with a `Case`. -type Comment struct { - // Text containing a maximum of 3000 characters. - Text string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"` - // Time when this update was created. - // Output only. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The email address/name of user who created this comment. - // Output only. - Author string `protobuf:"bytes,3,opt,name=author" json:"author,omitempty"` - // The resource name for this comment in format - // `supportAccounts/{account_id}/cases/{case_id}/{comment_id}`. - // Output only. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` -} - -func (m *Comment) Reset() { *m = Comment{} } -func (m *Comment) String() string { return proto.CompactTextString(m) } -func (*Comment) ProtoMessage() {} -func (*Comment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Comment) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -func (m *Comment) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Comment) GetAuthor() string { - if m != nil { - return m.Author - } - return "" -} - -func (m *Comment) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Represents the product component taxonomy that is to be used while creating -// or updating a `Case`. A client should obtain the list of issue categories, -// component/subcomponent from this object and specify it in `Case.category`, -// `Case.component` and `Case.subcomponent` fields respectively. -type IssueTaxonomy struct { - // Map of available categories. - Categories map[string]*IssueTaxonomy_Category `protobuf:"bytes,1,rep,name=categories" json:"categories,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *IssueTaxonomy) Reset() { *m = IssueTaxonomy{} } -func (m *IssueTaxonomy) String() string { return proto.CompactTextString(m) } -func (*IssueTaxonomy) ProtoMessage() {} -func (*IssueTaxonomy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *IssueTaxonomy) GetCategories() map[string]*IssueTaxonomy_Category { - if m != nil { - return m.Categories - } - return nil -} - -// The representation of a product component. It is composed of a canonical -// name for the product (e.g., Google App Engine), languages in which a -// support ticket can be created under this component, a template that -// provides hints on important details to be filled out before submitting a -// case. It also contains an embedded list of product subcomponents that have -// similar attributes as top-level components. -// (e.g., Google App Engine > Memcache). -type IssueTaxonomy_Component struct { - // User friendly name of this component. - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // List of languages in which a support case can be created under this - // component. Represented by language codes in ISO_639-1 standard. - Languages []string `protobuf:"bytes,2,rep,name=languages" json:"languages,omitempty"` - // Template to be used while filling the description of a support case. - Template string `protobuf:"bytes,3,opt,name=template" json:"template,omitempty"` - // List of subcomponents under this component. - Subcomponents []*IssueTaxonomy_Component `protobuf:"bytes,4,rep,name=subcomponents" json:"subcomponents,omitempty"` -} - -func (m *IssueTaxonomy_Component) Reset() { *m = IssueTaxonomy_Component{} } -func (m *IssueTaxonomy_Component) String() string { return proto.CompactTextString(m) } -func (*IssueTaxonomy_Component) ProtoMessage() {} -func (*IssueTaxonomy_Component) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} } - -func (m *IssueTaxonomy_Component) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *IssueTaxonomy_Component) GetLanguages() []string { - if m != nil { - return m.Languages - } - return nil -} - -func (m *IssueTaxonomy_Component) GetTemplate() string { - if m != nil { - return m.Template - } - return "" -} - -func (m *IssueTaxonomy_Component) GetSubcomponents() []*IssueTaxonomy_Component { - if m != nil { - return m.Subcomponents - } - return nil -} - -// Represents the category of issue (Technical or Non-Technical) -// reported through a support case. -type IssueTaxonomy_Category struct { - // User friendly name of this category. - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Map of product components under this category. - Components map[string]*IssueTaxonomy_Component `protobuf:"bytes,2,rep,name=components" json:"components,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *IssueTaxonomy_Category) Reset() { *m = IssueTaxonomy_Category{} } -func (m *IssueTaxonomy_Category) String() string { return proto.CompactTextString(m) } -func (*IssueTaxonomy_Category) ProtoMessage() {} -func (*IssueTaxonomy_Category) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 1} } - -func (m *IssueTaxonomy_Category) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *IssueTaxonomy_Category) GetComponents() map[string]*IssueTaxonomy_Component { - if m != nil { - return m.Components - } - return nil -} - -func init() { - proto.RegisterType((*SupportAccount)(nil), "google.cloud.support.common.SupportAccount") - proto.RegisterType((*Case)(nil), "google.cloud.support.common.Case") - proto.RegisterType((*CustomerIssue)(nil), "google.cloud.support.common.CustomerIssue") - proto.RegisterType((*SupportRole)(nil), "google.cloud.support.common.SupportRole") - proto.RegisterType((*Comment)(nil), "google.cloud.support.common.Comment") - proto.RegisterType((*IssueTaxonomy)(nil), "google.cloud.support.common.IssueTaxonomy") - proto.RegisterType((*IssueTaxonomy_Component)(nil), "google.cloud.support.common.IssueTaxonomy.Component") - proto.RegisterType((*IssueTaxonomy_Category)(nil), "google.cloud.support.common.IssueTaxonomy.Category") - proto.RegisterEnum("google.cloud.support.common.SupportAccount_State", SupportAccount_State_name, SupportAccount_State_value) - proto.RegisterEnum("google.cloud.support.common.SupportAccount_PricingModel", SupportAccount_PricingModel_name, SupportAccount_PricingModel_value) - proto.RegisterEnum("google.cloud.support.common.Case_Priority", Case_Priority_name, Case_Priority_value) - proto.RegisterEnum("google.cloud.support.common.Case_State", Case_State_name, Case_State_value) - proto.RegisterEnum("google.cloud.support.common.CustomerIssue_IssueState", CustomerIssue_IssueState_name, CustomerIssue_IssueState_value) - proto.RegisterEnum("google.cloud.support.common.SupportRole_Role", SupportRole_Role_name, SupportRole_Role_value) -} - -func init() { proto.RegisterFile("google/cloud/support/common.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1336 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x61, 0x6e, 0xdb, 0xc6, - 0x12, 0x0e, 0x29, 0xc9, 0x92, 0x46, 0x96, 0xbd, 0x59, 0x38, 0x79, 0x8c, 0x92, 0xbc, 0x38, 0x7a, - 0x78, 0x88, 0x51, 0xa0, 0x72, 0xe2, 0xa4, 0x40, 0x90, 0x20, 0x3f, 0x64, 0x6a, 0x2d, 0xb0, 0x91, - 0x49, 0x82, 0xa4, 0xe3, 0x24, 0x45, 0x41, 0xd0, 0xd4, 0x46, 0x65, 0x43, 0x72, 0x09, 0x92, 0x4a, - 0xa3, 0x1e, 0xa0, 0x3d, 0x45, 0xef, 0xd0, 0x5f, 0xbd, 0x40, 0x7b, 0x83, 0xde, 0xa1, 0xe7, 0x28, - 0x76, 0x49, 0xc9, 0xb2, 0x63, 0xd8, 0x51, 0xfe, 0x68, 0x39, 0xb3, 0x33, 0xb3, 0x33, 0xb3, 0xdf, - 0xb7, 0x63, 0xc3, 0xfd, 0x09, 0x63, 0x93, 0x90, 0xee, 0xfa, 0x21, 0x9b, 0x8e, 0x77, 0xb3, 0x69, - 0x92, 0xb0, 0x34, 0xdf, 0xf5, 0x59, 0x14, 0xb1, 0xb8, 0x97, 0xa4, 0x2c, 0x67, 0xf8, 0x76, 0x61, - 0xd2, 0x13, 0x26, 0xbd, 0xd2, 0xa4, 0x57, 0x98, 0x74, 0xee, 0x94, 0xfe, 0x5e, 0x12, 0xec, 0x7a, - 0x71, 0xcc, 0x72, 0x2f, 0x0f, 0x58, 0x9c, 0x15, 0xae, 0x9d, 0x7b, 0xe5, 0xae, 0x90, 0x4e, 0xa6, - 0xef, 0x76, 0xf3, 0x20, 0xa2, 0x59, 0xee, 0x45, 0x49, 0x61, 0xd0, 0xfd, 0xa7, 0x0a, 0x1b, 0x76, - 0x11, 0xb1, 0xef, 0xfb, 0x6c, 0x1a, 0xe7, 0x18, 0x43, 0x35, 0xf6, 0x22, 0xaa, 0x48, 0xdb, 0xd2, - 0x4e, 0xd3, 0x12, 0xdf, 0xf8, 0x2e, 0x80, 0x57, 0x6c, 0xbb, 0xc1, 0x58, 0x91, 0xc5, 0x4e, 0xb3, - 0xd4, 0x68, 0x63, 0xfc, 0x7f, 0xd8, 0x10, 0xc9, 0xb9, 0x29, 0xcd, 0xd8, 0x34, 0xf5, 0xa9, 0x52, - 0x11, 0x26, 0x6d, 0xa1, 0xb5, 0x4a, 0x25, 0xbe, 0x0f, 0xeb, 0xe3, 0x20, 0x4b, 0x42, 0x6f, 0xe6, - 0x8a, 0x13, 0xaa, 0xc2, 0xa8, 0x55, 0xea, 0x74, 0x7e, 0xd0, 0x10, 0x6a, 0x59, 0xee, 0xe5, 0x54, - 0xa9, 0x6d, 0x4b, 0x3b, 0x1b, 0x7b, 0x8f, 0x7a, 0x97, 0xd4, 0xde, 0x3b, 0x9b, 0x78, 0xcf, 0xe6, - 0x8e, 0x56, 0xe1, 0x8f, 0x9f, 0x43, 0xcb, 0x4f, 0xa9, 0x97, 0x53, 0x97, 0x97, 0xac, 0xac, 0x6d, - 0x4b, 0x3b, 0xad, 0xbd, 0xce, 0x3c, 0xdc, 0xbc, 0x1f, 0x3d, 0x67, 0xde, 0x0f, 0x0b, 0x0a, 0x73, - 0xae, 0xc0, 0x0f, 0x61, 0xeb, 0x24, 0x08, 0xc3, 0x20, 0x9e, 0xb8, 0xf3, 0xb2, 0x45, 0xc2, 0x75, - 0x91, 0x30, 0x2e, 0xf7, 0xca, 0x73, 0x45, 0xde, 0x3b, 0x80, 0xa6, 0x71, 0xf0, 0x6e, 0xe6, 0x2e, - 0xb5, 0xa9, 0x21, 0xac, 0x37, 0x84, 0xbe, 0xbf, 0xe8, 0xd5, 0xf7, 0xd0, 0x4e, 0xd2, 0xc0, 0xe7, - 0xb1, 0x23, 0x36, 0xa6, 0xa1, 0xd2, 0x14, 0x95, 0x3e, 0x5d, 0xa5, 0x52, 0xb3, 0x08, 0x70, 0xc8, - 0xfd, 0xad, 0xf5, 0x64, 0x49, 0xea, 0x1e, 0x42, 0x4d, 0xf4, 0x01, 0xdf, 0x80, 0xeb, 0xb6, 0xd3, - 0x77, 0x88, 0x7b, 0xa4, 0xdb, 0x26, 0x51, 0xb5, 0x03, 0x8d, 0x0c, 0xd0, 0x35, 0x0c, 0xb0, 0xd6, - 0x57, 0x1d, 0xed, 0x15, 0x41, 0x12, 0x6e, 0x41, 0xdd, 0x24, 0xfa, 0x40, 0xd3, 0x87, 0x48, 0xc6, - 0x5b, 0x80, 0x4a, 0xc1, 0x1d, 0x90, 0x11, 0x71, 0x34, 0x43, 0x47, 0x95, 0xee, 0x10, 0xd6, 0x97, - 0x0f, 0xc3, 0xb7, 0xe0, 0x86, 0x69, 0x69, 0x2a, 0xb7, 0x3a, 0x34, 0x06, 0x64, 0xe4, 0x1e, 0xe9, - 0x2f, 0x75, 0xe3, 0x58, 0x47, 0xd7, 0xf0, 0x3a, 0x34, 0xcc, 0xbe, 0xfa, 0xb2, 0x3f, 0x24, 0x36, - 0x92, 0xf0, 0x06, 0xc0, 0x91, 0x4d, 0x2c, 0xd7, 0x32, 0x46, 0xc4, 0x46, 0x72, 0xf7, 0x8f, 0x3a, - 0x54, 0x55, 0x2f, 0xa3, 0x17, 0xc2, 0xeb, 0x3c, 0x30, 0xe4, 0x4f, 0x81, 0xb1, 0x0d, 0xad, 0x31, - 0xcd, 0xfc, 0x34, 0x48, 0x38, 0xbe, 0x4b, 0x7c, 0x2d, 0xab, 0xf0, 0x1d, 0x68, 0xfa, 0x2c, 0x4a, - 0x58, 0x4c, 0xe3, 0xbc, 0x84, 0xd6, 0xa9, 0x02, 0x77, 0x61, 0x3d, 0x9b, 0x9e, 0x9c, 0x1a, 0xd4, - 0x84, 0xc1, 0x19, 0x1d, 0x7e, 0x00, 0x9b, 0x7e, 0x18, 0xd0, 0x38, 0x17, 0x98, 0xf9, 0x99, 0xc5, - 0x05, 0x6e, 0x9a, 0xd6, 0x46, 0xa1, 0x76, 0x4a, 0x2d, 0xcf, 0xd7, 0xf7, 0x5d, 0x6f, 0x3c, 0x4e, - 0x69, 0x96, 0xd1, 0x4c, 0xa9, 0x6f, 0x57, 0x78, 0x36, 0xbe, 0xdf, 0x9f, 0xab, 0x38, 0x63, 0x92, - 0x94, 0xfd, 0x48, 0xfd, 0x25, 0x28, 0x34, 0x4b, 0x8d, 0x36, 0xc6, 0xfb, 0xb0, 0x16, 0x64, 0xd9, - 0x94, 0x66, 0x0a, 0x6c, 0x57, 0x76, 0x5a, 0x7b, 0x5f, 0x5d, 0x7a, 0xfd, 0xea, 0x34, 0xcb, 0x59, - 0x44, 0x53, 0x8d, 0xbb, 0x58, 0xa5, 0x27, 0x3e, 0x80, 0x46, 0x92, 0x06, 0x2c, 0x0d, 0xf2, 0x99, - 0xd2, 0x12, 0x20, 0xba, 0x22, 0x8a, 0x97, 0x51, 0x0e, 0x1d, 0xe1, 0x61, 0x2d, 0x7c, 0xf1, 0x8b, - 0x39, 0xe7, 0xd6, 0x45, 0x90, 0x07, 0x57, 0x07, 0xb9, 0x8c, 0x69, 0xed, 0x95, 0x98, 0xf6, 0x1c, - 0x5a, 0xd3, 0x64, 0xbc, 0x70, 0xde, 0xb8, 0xda, 0xb9, 0x30, 0x17, 0xce, 0xff, 0x83, 0xb6, 0x08, - 0xc5, 0x52, 0x97, 0x46, 0x5e, 0x10, 0x2a, 0x9b, 0xc5, 0xa5, 0x96, 0x4a, 0xc2, 0x75, 0xb8, 0x03, - 0x0d, 0xdf, 0xcb, 0xe9, 0x84, 0xa5, 0x33, 0x05, 0x89, 0xfd, 0x85, 0xdc, 0x1d, 0x41, 0x63, 0xde, - 0x0f, 0xac, 0xc0, 0x96, 0x69, 0x69, 0x86, 0xa5, 0x39, 0x6f, 0xce, 0x51, 0x66, 0x0d, 0x64, 0xf3, - 0x21, 0x92, 0xc4, 0xfa, 0x08, 0xc9, 0x62, 0xdd, 0x43, 0x15, 0xb1, 0x3e, 0x46, 0x55, 0xb1, 0x3e, - 0x41, 0xb5, 0xee, 0xdf, 0xd2, 0x15, 0xdc, 0xab, 0x43, 0x45, 0x27, 0xc7, 0x48, 0xe2, 0x54, 0xe9, - 0xdb, 0xb6, 0x36, 0xd4, 0xc9, 0x00, 0xc9, 0xf8, 0xbf, 0xd0, 0xd1, 0x74, 0xd7, 0xb4, 0x8c, 0xa1, - 0x45, 0x6c, 0xdb, 0x1d, 0x1a, 0xc6, 0x70, 0x44, 0x5c, 0xfb, 0xc8, 0x34, 0x0d, 0xcb, 0x41, 0x15, - 0xdc, 0x81, 0x9b, 0x17, 0xec, 0x13, 0x7d, 0x88, 0xaa, 0xf8, 0x36, 0xfc, 0x67, 0x79, 0x4f, 0x70, - 0xd1, 0xd5, 0x6c, 0xfb, 0x88, 0xa0, 0x1a, 0xbe, 0x0f, 0x77, 0x8f, 0xfb, 0x9a, 0xc3, 0xc9, 0x7a, - 0x60, 0x58, 0xae, 0x7a, 0x64, 0x3b, 0xc6, 0x21, 0xe7, 0x24, 0xb1, 0x4d, 0x43, 0xb7, 0x09, 0x5a, - 0xe3, 0xac, 0xb7, 0x8d, 0xd1, 0x11, 0x67, 0xbb, 0x6b, 0x1c, 0x1c, 0x10, 0x8b, 0x0c, 0x50, 0x9d, - 0x3f, 0x12, 0xea, 0xc8, 0xb0, 0xc9, 0x00, 0x35, 0xba, 0xbf, 0x55, 0xa0, 0x7d, 0x06, 0x7f, 0xf8, - 0x16, 0x34, 0x04, 0x02, 0x39, 0xb0, 0x0b, 0x16, 0xd7, 0x85, 0xac, 0x8d, 0xf1, 0xcb, 0x39, 0x94, - 0x64, 0x01, 0xa5, 0x6f, 0x3e, 0x1f, 0xd5, 0x3d, 0xf1, 0x7b, 0x19, 0xb0, 0x2a, 0x2b, 0x01, 0xeb, - 0x05, 0xac, 0xf3, 0x61, 0x14, 0x7e, 0x28, 0xbd, 0xab, 0x57, 0x7a, 0xb7, 0x4a, 0xfb, 0x8b, 0x70, - 0x59, 0x5b, 0x05, 0x97, 0xdd, 0xf7, 0x00, 0xa7, 0xd5, 0x88, 0x2b, 0xe2, 0x17, 0xe2, 0x5e, 0x04, - 0x89, 0x06, 0x54, 0x0d, 0x93, 0xe8, 0x48, 0xc2, 0x9b, 0xd0, 0x5a, 0xba, 0x49, 0x24, 0xe3, 0x26, - 0xd4, 0x0e, 0xb4, 0xd7, 0x64, 0x80, 0x2a, 0x1c, 0x2f, 0xc7, 0x86, 0xee, 0xb8, 0x07, 0xda, 0x6b, - 0x54, 0xe5, 0xd2, 0x2b, 0x62, 0x15, 0x11, 0x6a, 0xdd, 0x3f, 0x25, 0x68, 0x95, 0xe3, 0xc1, 0x62, - 0x21, 0xc5, 0x5b, 0x50, 0x2b, 0xc8, 0x50, 0x5c, 0x4d, 0x21, 0xe0, 0x3e, 0x54, 0x53, 0x16, 0xce, - 0xef, 0xe5, 0xeb, 0xcf, 0x19, 0x36, 0x3c, 0x5a, 0x8f, 0xff, 0x58, 0xc2, 0xb5, 0xfb, 0x1d, 0x54, - 0xcb, 0x03, 0x10, 0x7f, 0xd4, 0xcf, 0x15, 0xd2, 0x84, 0xda, 0x7e, 0xdf, 0xd6, 0x54, 0x24, 0xe1, - 0x36, 0x34, 0x07, 0xe4, 0x15, 0x19, 0x19, 0x26, 0xb1, 0x90, 0xcc, 0x45, 0xfe, 0xd5, 0x2f, 0x26, - 0x8a, 0x40, 0x9c, 0xe6, 0x10, 0xd7, 0x22, 0x23, 0xad, 0xbf, 0xaf, 0x8d, 0x34, 0xe7, 0x0d, 0xaa, - 0x76, 0x7f, 0x91, 0xa0, 0xae, 0xb2, 0x28, 0xa2, 0xc5, 0x1f, 0x20, 0x39, 0xfd, 0x98, 0xcf, 0x27, - 0x04, 0xff, 0x3e, 0x8f, 0x05, 0x79, 0x25, 0x2c, 0xdc, 0x84, 0x35, 0x6f, 0x9a, 0xff, 0xc0, 0xd2, - 0x72, 0x6c, 0x94, 0xd2, 0x62, 0x14, 0x55, 0x4f, 0x47, 0x51, 0xf7, 0xf7, 0x1a, 0xb4, 0xc5, 0xe5, - 0x39, 0xde, 0x47, 0x16, 0xb3, 0x68, 0x86, 0xdf, 0x02, 0x94, 0x0f, 0x46, 0x40, 0x33, 0x45, 0x12, - 0xcf, 0xf5, 0xb3, 0x4b, 0x1b, 0x78, 0xc6, 0xbf, 0xa7, 0x2e, 0x9c, 0x49, 0x9c, 0xa7, 0x33, 0x6b, - 0x29, 0x5a, 0xe7, 0x2f, 0x09, 0x9a, 0xea, 0x62, 0xfe, 0x9c, 0x1f, 0x83, 0xd2, 0xa7, 0x63, 0xf0, - 0x0e, 0x34, 0x43, 0x2f, 0x9e, 0x4c, 0xbd, 0x09, 0xcd, 0x14, 0x59, 0x8c, 0x9d, 0x53, 0x05, 0x7f, - 0xeb, 0x72, 0x1a, 0x25, 0x21, 0x67, 0x60, 0x51, 0xea, 0x42, 0xc6, 0x6f, 0xa1, 0xbd, 0x3c, 0xec, - 0x32, 0xa5, 0x2a, 0x2a, 0x79, 0xb2, 0x4a, 0x25, 0x73, 0x67, 0xeb, 0x6c, 0xa8, 0xce, 0xaf, 0x32, - 0x34, 0xca, 0x32, 0x67, 0x9f, 0x53, 0x85, 0x0f, 0xb0, 0x94, 0x88, 0x2c, 0x12, 0x51, 0x57, 0x6f, - 0xe9, 0x52, 0x46, 0x8b, 0xde, 0x9e, 0x26, 0x95, 0xc1, 0xe6, 0xb9, 0x6d, 0x8c, 0xa0, 0xf2, 0x9e, - 0xce, 0xca, 0x8c, 0xf8, 0x27, 0xfe, 0x16, 0x6a, 0x1f, 0xbc, 0x70, 0x3a, 0x47, 0xd4, 0x97, 0x75, - 0xa3, 0x08, 0xf1, 0x4c, 0x7e, 0x2a, 0x75, 0x52, 0xd8, 0x3c, 0x77, 0xdf, 0x17, 0x1c, 0xaa, 0x9d, - 0x3d, 0xf4, 0xf1, 0x17, 0x54, 0xbe, 0x74, 0xe6, 0xfe, 0x4f, 0x70, 0xcf, 0x67, 0xd1, 0x65, 0x41, - 0xf6, 0xaf, 0xab, 0x5c, 0x5b, 0x12, 0xdb, 0xe4, 0x6c, 0x79, 0xdb, 0x2f, 0xed, 0x27, 0x8c, 0xe3, - 0xa7, 0xc7, 0xd2, 0xc9, 0xee, 0x84, 0xc6, 0x82, 0x49, 0xbb, 0xc5, 0x96, 0x97, 0x04, 0xd9, 0x85, - 0xff, 0x97, 0x3c, 0x2f, 0x96, 0x93, 0x35, 0x61, 0xfd, 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x0c, 0xd0, 0x7b, 0x46, 0xc4, 0x0c, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/support/v1alpha1/cloud_support.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/support/v1alpha1/cloud_support.pb.go deleted file mode 100644 index 80ae418c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/support/v1alpha1/cloud_support.pb.go +++ /dev/null @@ -1,806 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/support/v1alpha1/cloud_support.proto - -/* -Package support is a generated protocol buffer package. - -It is generated from these files: - google/cloud/support/v1alpha1/cloud_support.proto - -It has these top-level messages: - GetSupportAccountRequest - ListSupportAccountsRequest - ListSupportAccountsResponse - GetCaseRequest - ListCasesRequest - ListCasesResponse - ListCommentsRequest - ListCommentsResponse - CreateCaseRequest - UpdateCaseRequest - CreateCommentRequest - GetIssueTaxonomyRequest -*/ -package support - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_cloud_support_common "google.golang.org/genproto/googleapis/cloud/support/common" -import _ "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The request message for `GetSupportAccount`. -type GetSupportAccountRequest struct { - // The resource name of the support accounts. For example: - // `supportAccounts/accountA`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetSupportAccountRequest) Reset() { *m = GetSupportAccountRequest{} } -func (m *GetSupportAccountRequest) String() string { return proto.CompactTextString(m) } -func (*GetSupportAccountRequest) ProtoMessage() {} -func (*GetSupportAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *GetSupportAccountRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for `ListSupportAccount`. -type ListSupportAccountsRequest struct { - // The filter applied to search results. It only supports filtering a support - // account list by a cloud_resource. For example, to filter results by support - // accounts associated with an Organization, its value should be: - // "cloud_resource:organizations/<organization_id>" - Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"` - // Maximum number of accounts fetched with each request. - PageSize int64 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A token identifying the page of results to return. If unspecified, the - // first page is retrieved. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListSupportAccountsRequest) Reset() { *m = ListSupportAccountsRequest{} } -func (m *ListSupportAccountsRequest) String() string { return proto.CompactTextString(m) } -func (*ListSupportAccountsRequest) ProtoMessage() {} -func (*ListSupportAccountsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ListSupportAccountsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListSupportAccountsRequest) GetPageSize() int64 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListSupportAccountsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for `ListSupportAccount`. -type ListSupportAccountsResponse struct { - // A list of support accounts. - Accounts []*google_cloud_support_common.SupportAccount `protobuf:"bytes,1,rep,name=accounts" json:"accounts,omitempty"` - // A token to retrieve the next page of results. This should be passed on in - // `page_token` field of `ListSupportAccountRequest` for next request. If - // unspecified, there are no more results to retrieve. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListSupportAccountsResponse) Reset() { *m = ListSupportAccountsResponse{} } -func (m *ListSupportAccountsResponse) String() string { return proto.CompactTextString(m) } -func (*ListSupportAccountsResponse) ProtoMessage() {} -func (*ListSupportAccountsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ListSupportAccountsResponse) GetAccounts() []*google_cloud_support_common.SupportAccount { - if m != nil { - return m.Accounts - } - return nil -} - -func (m *ListSupportAccountsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for `GetCase` method. -type GetCaseRequest struct { - // Name of case resource requested. - // For example: "supportAccounts/accountA/cases/123" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetCaseRequest) Reset() { *m = GetCaseRequest{} } -func (m *GetCaseRequest) String() string { return proto.CompactTextString(m) } -func (*GetCaseRequest) ProtoMessage() {} -func (*GetCaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *GetCaseRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for `ListCase` method. -type ListCasesRequest struct { - // Name of the account resource for which cases are requested. For example: - // "supportAccounts/accountA" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The filter applied to the search results. Currently it only accepts "OPEN" - // or "CLOSED" strings, filtering out cases that are open or resolved. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // Maximum number of cases fetched with each request. - PageSize int64 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A token identifying the page of results to return. If unspecified, the - // first page is retrieved. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListCasesRequest) Reset() { *m = ListCasesRequest{} } -func (m *ListCasesRequest) String() string { return proto.CompactTextString(m) } -func (*ListCasesRequest) ProtoMessage() {} -func (*ListCasesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListCasesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListCasesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListCasesRequest) GetPageSize() int64 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListCasesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for `ListCase` method. -type ListCasesResponse struct { - // A list of cases. - Cases []*google_cloud_support_common.Case `protobuf:"bytes,1,rep,name=cases" json:"cases,omitempty"` - // A token to retrieve the next page of results. This should be passed on in - // `page_token` field of `ListCaseRequest` for next request. If unspecified, - // there are no more results to retrieve. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListCasesResponse) Reset() { *m = ListCasesResponse{} } -func (m *ListCasesResponse) String() string { return proto.CompactTextString(m) } -func (*ListCasesResponse) ProtoMessage() {} -func (*ListCasesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ListCasesResponse) GetCases() []*google_cloud_support_common.Case { - if m != nil { - return m.Cases - } - return nil -} - -func (m *ListCasesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for `ListComments` method. -type ListCommentsRequest struct { - // The resource name of case for which comments should be listed. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *ListCommentsRequest) Reset() { *m = ListCommentsRequest{} } -func (m *ListCommentsRequest) String() string { return proto.CompactTextString(m) } -func (*ListCommentsRequest) ProtoMessage() {} -func (*ListCommentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ListCommentsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The response message for `ListComments` method. -type ListCommentsResponse struct { - // A list of comments. - Comments []*google_cloud_support_common.Comment `protobuf:"bytes,1,rep,name=comments" json:"comments,omitempty"` -} - -func (m *ListCommentsResponse) Reset() { *m = ListCommentsResponse{} } -func (m *ListCommentsResponse) String() string { return proto.CompactTextString(m) } -func (*ListCommentsResponse) ProtoMessage() {} -func (*ListCommentsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ListCommentsResponse) GetComments() []*google_cloud_support_common.Comment { - if m != nil { - return m.Comments - } - return nil -} - -// The request message for `CreateCase` method. -type CreateCaseRequest struct { - // The resource name for `SupportAccount` under which this case is created. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The case resource to create. - Case *google_cloud_support_common.Case `protobuf:"bytes,2,opt,name=case" json:"case,omitempty"` -} - -func (m *CreateCaseRequest) Reset() { *m = CreateCaseRequest{} } -func (m *CreateCaseRequest) String() string { return proto.CompactTextString(m) } -func (*CreateCaseRequest) ProtoMessage() {} -func (*CreateCaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *CreateCaseRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateCaseRequest) GetCase() *google_cloud_support_common.Case { - if m != nil { - return m.Case - } - return nil -} - -// The request message for `UpdateCase` method. -type UpdateCaseRequest struct { - // The case resource to update. - Case *google_cloud_support_common.Case `protobuf:"bytes,1,opt,name=case" json:"case,omitempty"` - // A field that represents attributes of a Case object that should be updated - // as part of this request. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateCaseRequest) Reset() { *m = UpdateCaseRequest{} } -func (m *UpdateCaseRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateCaseRequest) ProtoMessage() {} -func (*UpdateCaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *UpdateCaseRequest) GetCase() *google_cloud_support_common.Case { - if m != nil { - return m.Case - } - return nil -} - -func (m *UpdateCaseRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The request message for `CreateComment` method. -type CreateCommentRequest struct { - // The resource name of case to which this comment should be added. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The `Comment` to be added to this case. - Comment *google_cloud_support_common.Comment `protobuf:"bytes,2,opt,name=comment" json:"comment,omitempty"` -} - -func (m *CreateCommentRequest) Reset() { *m = CreateCommentRequest{} } -func (m *CreateCommentRequest) String() string { return proto.CompactTextString(m) } -func (*CreateCommentRequest) ProtoMessage() {} -func (*CreateCommentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *CreateCommentRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateCommentRequest) GetComment() *google_cloud_support_common.Comment { - if m != nil { - return m.Comment - } - return nil -} - -// The request message for `GetIssueTaxonomy` method. -type GetIssueTaxonomyRequest struct { -} - -func (m *GetIssueTaxonomyRequest) Reset() { *m = GetIssueTaxonomyRequest{} } -func (m *GetIssueTaxonomyRequest) String() string { return proto.CompactTextString(m) } -func (*GetIssueTaxonomyRequest) ProtoMessage() {} -func (*GetIssueTaxonomyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func init() { - proto.RegisterType((*GetSupportAccountRequest)(nil), "google.cloud.support.v1alpha1.GetSupportAccountRequest") - proto.RegisterType((*ListSupportAccountsRequest)(nil), "google.cloud.support.v1alpha1.ListSupportAccountsRequest") - proto.RegisterType((*ListSupportAccountsResponse)(nil), "google.cloud.support.v1alpha1.ListSupportAccountsResponse") - proto.RegisterType((*GetCaseRequest)(nil), "google.cloud.support.v1alpha1.GetCaseRequest") - proto.RegisterType((*ListCasesRequest)(nil), "google.cloud.support.v1alpha1.ListCasesRequest") - proto.RegisterType((*ListCasesResponse)(nil), "google.cloud.support.v1alpha1.ListCasesResponse") - proto.RegisterType((*ListCommentsRequest)(nil), "google.cloud.support.v1alpha1.ListCommentsRequest") - proto.RegisterType((*ListCommentsResponse)(nil), "google.cloud.support.v1alpha1.ListCommentsResponse") - proto.RegisterType((*CreateCaseRequest)(nil), "google.cloud.support.v1alpha1.CreateCaseRequest") - proto.RegisterType((*UpdateCaseRequest)(nil), "google.cloud.support.v1alpha1.UpdateCaseRequest") - proto.RegisterType((*CreateCommentRequest)(nil), "google.cloud.support.v1alpha1.CreateCommentRequest") - proto.RegisterType((*GetIssueTaxonomyRequest)(nil), "google.cloud.support.v1alpha1.GetIssueTaxonomyRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for CloudSupport service - -type CloudSupportClient interface { - // Retrieves the support account details given an account identifier. - // The authenticated user calling this method must be the account owner. - GetSupportAccount(ctx context.Context, in *GetSupportAccountRequest, opts ...grpc.CallOption) (*google_cloud_support_common.SupportAccount, error) - // Retrieves the list of accounts the current authenticated user has access - // to. - ListSupportAccounts(ctx context.Context, in *ListSupportAccountsRequest, opts ...grpc.CallOption) (*ListSupportAccountsResponse, error) - // Retrieves the details for a support case. The current authenticated user - // calling this method must have permissions to view this case. - GetCase(ctx context.Context, in *GetCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) - // Retrieves the list of support cases associated with an account. The current - // authenticated user must have the permission to list and view these cases. - ListCases(ctx context.Context, in *ListCasesRequest, opts ...grpc.CallOption) (*ListCasesResponse, error) - // Lists all comments from a case. - ListComments(ctx context.Context, in *ListCommentsRequest, opts ...grpc.CallOption) (*ListCommentsResponse, error) - // Creates a case and associates it with a - // [SupportAccount][google.cloud.support.v1alpha2.SupportAcccount]. The - // authenticated user attempting this action must have permissions to create a - // `Case` under that [SupportAccount]. - CreateCase(ctx context.Context, in *CreateCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) - // Updates a support case. Only a small set of details (priority, subject and - // cc_address) can be update after a case is created. - UpdateCase(ctx context.Context, in *UpdateCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) - // Adds a new comment to a case. - CreateComment(ctx context.Context, in *CreateCommentRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Comment, error) - // Retrieves the taxonomy of product categories and components to be used - // while creating a support case. - GetIssueTaxonomy(ctx context.Context, in *GetIssueTaxonomyRequest, opts ...grpc.CallOption) (*google_cloud_support_common.IssueTaxonomy, error) -} - -type cloudSupportClient struct { - cc *grpc.ClientConn -} - -func NewCloudSupportClient(cc *grpc.ClientConn) CloudSupportClient { - return &cloudSupportClient{cc} -} - -func (c *cloudSupportClient) GetSupportAccount(ctx context.Context, in *GetSupportAccountRequest, opts ...grpc.CallOption) (*google_cloud_support_common.SupportAccount, error) { - out := new(google_cloud_support_common.SupportAccount) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/GetSupportAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudSupportClient) ListSupportAccounts(ctx context.Context, in *ListSupportAccountsRequest, opts ...grpc.CallOption) (*ListSupportAccountsResponse, error) { - out := new(ListSupportAccountsResponse) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/ListSupportAccounts", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudSupportClient) GetCase(ctx context.Context, in *GetCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) { - out := new(google_cloud_support_common.Case) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/GetCase", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudSupportClient) ListCases(ctx context.Context, in *ListCasesRequest, opts ...grpc.CallOption) (*ListCasesResponse, error) { - out := new(ListCasesResponse) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/ListCases", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudSupportClient) ListComments(ctx context.Context, in *ListCommentsRequest, opts ...grpc.CallOption) (*ListCommentsResponse, error) { - out := new(ListCommentsResponse) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/ListComments", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudSupportClient) CreateCase(ctx context.Context, in *CreateCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) { - out := new(google_cloud_support_common.Case) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/CreateCase", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudSupportClient) UpdateCase(ctx context.Context, in *UpdateCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) { - out := new(google_cloud_support_common.Case) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/UpdateCase", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudSupportClient) CreateComment(ctx context.Context, in *CreateCommentRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Comment, error) { - out := new(google_cloud_support_common.Comment) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/CreateComment", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudSupportClient) GetIssueTaxonomy(ctx context.Context, in *GetIssueTaxonomyRequest, opts ...grpc.CallOption) (*google_cloud_support_common.IssueTaxonomy, error) { - out := new(google_cloud_support_common.IssueTaxonomy) - err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/GetIssueTaxonomy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for CloudSupport service - -type CloudSupportServer interface { - // Retrieves the support account details given an account identifier. - // The authenticated user calling this method must be the account owner. - GetSupportAccount(context.Context, *GetSupportAccountRequest) (*google_cloud_support_common.SupportAccount, error) - // Retrieves the list of accounts the current authenticated user has access - // to. - ListSupportAccounts(context.Context, *ListSupportAccountsRequest) (*ListSupportAccountsResponse, error) - // Retrieves the details for a support case. The current authenticated user - // calling this method must have permissions to view this case. - GetCase(context.Context, *GetCaseRequest) (*google_cloud_support_common.Case, error) - // Retrieves the list of support cases associated with an account. The current - // authenticated user must have the permission to list and view these cases. - ListCases(context.Context, *ListCasesRequest) (*ListCasesResponse, error) - // Lists all comments from a case. - ListComments(context.Context, *ListCommentsRequest) (*ListCommentsResponse, error) - // Creates a case and associates it with a - // [SupportAccount][google.cloud.support.v1alpha2.SupportAcccount]. The - // authenticated user attempting this action must have permissions to create a - // `Case` under that [SupportAccount]. - CreateCase(context.Context, *CreateCaseRequest) (*google_cloud_support_common.Case, error) - // Updates a support case. Only a small set of details (priority, subject and - // cc_address) can be update after a case is created. - UpdateCase(context.Context, *UpdateCaseRequest) (*google_cloud_support_common.Case, error) - // Adds a new comment to a case. - CreateComment(context.Context, *CreateCommentRequest) (*google_cloud_support_common.Comment, error) - // Retrieves the taxonomy of product categories and components to be used - // while creating a support case. - GetIssueTaxonomy(context.Context, *GetIssueTaxonomyRequest) (*google_cloud_support_common.IssueTaxonomy, error) -} - -func RegisterCloudSupportServer(s *grpc.Server, srv CloudSupportServer) { - s.RegisterService(&_CloudSupport_serviceDesc, srv) -} - -func _CloudSupport_GetSupportAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSupportAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).GetSupportAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/GetSupportAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).GetSupportAccount(ctx, req.(*GetSupportAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudSupport_ListSupportAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSupportAccountsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).ListSupportAccounts(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/ListSupportAccounts", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).ListSupportAccounts(ctx, req.(*ListSupportAccountsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudSupport_GetCase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetCaseRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).GetCase(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/GetCase", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).GetCase(ctx, req.(*GetCaseRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudSupport_ListCases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListCasesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).ListCases(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/ListCases", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).ListCases(ctx, req.(*ListCasesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudSupport_ListComments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListCommentsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).ListComments(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/ListComments", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).ListComments(ctx, req.(*ListCommentsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudSupport_CreateCase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateCaseRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).CreateCase(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/CreateCase", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).CreateCase(ctx, req.(*CreateCaseRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudSupport_UpdateCase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateCaseRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).UpdateCase(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/UpdateCase", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).UpdateCase(ctx, req.(*UpdateCaseRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudSupport_CreateComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateCommentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).CreateComment(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/CreateComment", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).CreateComment(ctx, req.(*CreateCommentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudSupport_GetIssueTaxonomy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetIssueTaxonomyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudSupportServer).GetIssueTaxonomy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/GetIssueTaxonomy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudSupportServer).GetIssueTaxonomy(ctx, req.(*GetIssueTaxonomyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _CloudSupport_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.support.v1alpha1.CloudSupport", - HandlerType: (*CloudSupportServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetSupportAccount", - Handler: _CloudSupport_GetSupportAccount_Handler, - }, - { - MethodName: "ListSupportAccounts", - Handler: _CloudSupport_ListSupportAccounts_Handler, - }, - { - MethodName: "GetCase", - Handler: _CloudSupport_GetCase_Handler, - }, - { - MethodName: "ListCases", - Handler: _CloudSupport_ListCases_Handler, - }, - { - MethodName: "ListComments", - Handler: _CloudSupport_ListComments_Handler, - }, - { - MethodName: "CreateCase", - Handler: _CloudSupport_CreateCase_Handler, - }, - { - MethodName: "UpdateCase", - Handler: _CloudSupport_UpdateCase_Handler, - }, - { - MethodName: "CreateComment", - Handler: _CloudSupport_CreateComment_Handler, - }, - { - MethodName: "GetIssueTaxonomy", - Handler: _CloudSupport_GetIssueTaxonomy_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/support/v1alpha1/cloud_support.proto", -} - -func init() { proto.RegisterFile("google/cloud/support/v1alpha1/cloud_support.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 863 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x41, 0x4f, 0x33, 0x45, - 0x18, 0xce, 0xb4, 0xc8, 0x07, 0x2f, 0xdf, 0xa7, 0x5f, 0x47, 0x82, 0x65, 0x0b, 0x49, 0x3b, 0x21, - 0xa6, 0x56, 0xdd, 0x85, 0x36, 0x88, 0x96, 0x40, 0x14, 0x88, 0x8d, 0x89, 0x26, 0xa4, 0x60, 0x62, - 0xbc, 0x34, 0x43, 0x19, 0xd6, 0x95, 0xee, 0xce, 0xda, 0x99, 0x1a, 0x40, 0xbd, 0x78, 0xf1, 0xa6, - 0x07, 0x6f, 0x7a, 0xe1, 0xe2, 0x59, 0x0f, 0xfe, 0x13, 0xff, 0x82, 0xfe, 0x0f, 0xb3, 0xb3, 0xb3, - 0xed, 0x76, 0x69, 0x77, 0x17, 0x6e, 0xdd, 0x77, 0xde, 0xe7, 0x7d, 0x9f, 0x79, 0xe6, 0x9d, 0x67, - 0x0a, 0x3b, 0x36, 0xe7, 0xf6, 0x80, 0x59, 0xfd, 0x01, 0x1f, 0x5d, 0x5a, 0x62, 0xe4, 0xfb, 0x7c, - 0x28, 0xad, 0x6f, 0x77, 0xe8, 0xc0, 0xff, 0x8a, 0xee, 0x84, 0xe1, 0x9e, 0x0e, 0x9b, 0xfe, 0x90, - 0x4b, 0x8e, 0x37, 0x43, 0x88, 0xa9, 0xd6, 0xcc, 0x68, 0x2d, 0x82, 0x18, 0x1b, 0xba, 0x22, 0xf5, - 0x1d, 0x8b, 0x7a, 0x1e, 0x97, 0x54, 0x3a, 0xdc, 0x13, 0x21, 0xd8, 0xa8, 0xcd, 0xec, 0xd7, 0xe7, - 0xae, 0xcb, 0x3d, 0x9d, 0x52, 0xd1, 0x29, 0xea, 0xeb, 0x62, 0x74, 0x65, 0x31, 0xd7, 0x97, 0xb7, - 0x7a, 0xb1, 0x9a, 0x5c, 0xbc, 0x72, 0xd8, 0xe0, 0xb2, 0xe7, 0x52, 0x71, 0x1d, 0x66, 0x10, 0x13, - 0xca, 0x1d, 0x26, 0xcf, 0xc2, 0xca, 0x1f, 0xf5, 0xfb, 0x7c, 0xe4, 0xc9, 0x2e, 0xfb, 0x66, 0xc4, - 0x84, 0xc4, 0x18, 0x16, 0x3c, 0xea, 0xb2, 0x32, 0xaa, 0xa2, 0xfa, 0x72, 0x57, 0xfd, 0x26, 0x3e, - 0x18, 0x9f, 0x3a, 0x22, 0x01, 0x10, 0x11, 0x62, 0x0d, 0x16, 0xaf, 0x9c, 0x81, 0x64, 0x43, 0x8d, - 0xd1, 0x5f, 0xb8, 0x02, 0xcb, 0x3e, 0xb5, 0x59, 0x4f, 0x38, 0x77, 0xac, 0x5c, 0xa8, 0xa2, 0x7a, - 0xb1, 0xbb, 0x14, 0x04, 0xce, 0x9c, 0x3b, 0x86, 0x37, 0x01, 0xd4, 0xa2, 0xe4, 0xd7, 0xcc, 0x2b, - 0x17, 0x15, 0x50, 0xa5, 0x9f, 0x07, 0x01, 0xf2, 0x33, 0x82, 0xca, 0xcc, 0x96, 0xc2, 0xe7, 0x9e, - 0x60, 0xb8, 0x03, 0x4b, 0x54, 0xc7, 0xca, 0xa8, 0x5a, 0xac, 0xaf, 0x34, 0xdf, 0x36, 0x67, 0x6a, - 0xae, 0x65, 0x4b, 0xec, 0x75, 0x0c, 0xc6, 0x6f, 0xc2, 0x6b, 0x1e, 0xbb, 0x91, 0xbd, 0x18, 0x99, - 0x82, 0x22, 0xf3, 0x22, 0x08, 0x9f, 0x8e, 0x09, 0x6d, 0xc1, 0xab, 0x1d, 0x26, 0x8f, 0xa9, 0x60, - 0x69, 0x42, 0xdd, 0xc1, 0xcb, 0x80, 0x75, 0x90, 0x26, 0x52, 0xf2, 0x62, 0x92, 0x15, 0xe6, 0x4b, - 0x56, 0x4c, 0x95, 0x6c, 0x21, 0x29, 0x99, 0x84, 0x52, 0xac, 0xb7, 0xd6, 0x69, 0x0f, 0x5e, 0xe9, - 0x07, 0x01, 0x2d, 0x52, 0x2d, 0x55, 0x24, 0xb5, 0xbb, 0x30, 0x3f, 0xb7, 0x2e, 0x6f, 0xc1, 0xeb, - 0xaa, 0x2b, 0x77, 0x5d, 0x16, 0x9b, 0x89, 0x59, 0xe2, 0x7c, 0x01, 0xab, 0xd3, 0xa9, 0x9a, 0xe3, - 0x87, 0xb0, 0xd4, 0xd7, 0x31, 0x4d, 0x73, 0x2b, 0x9d, 0x66, 0x98, 0xdc, 0x1d, 0xa3, 0xc8, 0x05, - 0x94, 0x8e, 0x87, 0x8c, 0x4a, 0x16, 0x3f, 0x9f, 0x35, 0x58, 0xf4, 0xe9, 0x90, 0x79, 0x32, 0x1a, - 0xcb, 0xf0, 0x0b, 0xef, 0xc2, 0x42, 0xb0, 0x45, 0xb5, 0x9d, 0x5c, 0x8a, 0xa8, 0x74, 0xf2, 0x13, - 0x82, 0xd2, 0xe7, 0xfe, 0x65, 0xa2, 0x49, 0x54, 0x0c, 0x3d, 0xaa, 0x18, 0xde, 0x87, 0x95, 0x91, - 0xaa, 0xa5, 0x6e, 0xa5, 0xa6, 0x62, 0x44, 0xe8, 0xe8, 0xe2, 0x9a, 0x1f, 0x07, 0x17, 0xf7, 0x33, - 0x2a, 0xae, 0xbb, 0x10, 0xa6, 0x07, 0xbf, 0xc9, 0xd7, 0xb0, 0xaa, 0x77, 0xab, 0x85, 0x48, 0x19, - 0xb4, 0x43, 0x78, 0xa6, 0x55, 0xd2, 0x4d, 0xf2, 0x49, 0x1b, 0x81, 0xc8, 0x3a, 0xbc, 0xd1, 0x61, - 0xf2, 0x13, 0x21, 0x46, 0xec, 0x9c, 0xde, 0x70, 0x8f, 0xbb, 0xb7, 0xba, 0x5d, 0xf3, 0xbf, 0x15, - 0x78, 0x7e, 0x1c, 0x14, 0xd1, 0x77, 0x0b, 0xff, 0x81, 0xa0, 0xf4, 0xc0, 0x56, 0xf0, 0x9e, 0x99, - 0xea, 0x85, 0xe6, 0x3c, 0x23, 0x32, 0x1e, 0x73, 0xa1, 0x49, 0xe3, 0xc7, 0x7f, 0xfe, 0xfd, 0xb5, - 0xb0, 0x85, 0xc9, 0xc4, 0x97, 0xbf, 0x0b, 0x04, 0x38, 0x10, 0xd3, 0x06, 0x62, 0x35, 0x7e, 0xc0, - 0x7f, 0xa2, 0x70, 0x66, 0x13, 0xde, 0x82, 0x3f, 0xc8, 0x60, 0x3a, 0xdf, 0x02, 0x8d, 0xf6, 0x53, - 0xa0, 0xe1, 0xf8, 0x93, 0x9a, 0xa2, 0x5e, 0xc1, 0xeb, 0x13, 0xea, 0x09, 0xd2, 0xf8, 0x17, 0x04, - 0xcf, 0xb4, 0xfb, 0xe0, 0x77, 0xb3, 0xf5, 0x8c, 0x0d, 0xa8, 0x91, 0x3d, 0x92, 0xa4, 0xa9, 0x08, - 0xbc, 0x83, 0x1b, 0x99, 0xda, 0x59, 0xca, 0x1b, 0x02, 0x0d, 0xef, 0x11, 0x2c, 0x8f, 0xdd, 0x06, - 0x5b, 0x39, 0xb6, 0x1f, 0xf7, 0x44, 0x63, 0x3b, 0x3f, 0x40, 0xab, 0xb4, 0xad, 0x48, 0x36, 0x70, - 0x3d, 0xfb, 0x80, 0x43, 0x96, 0xf8, 0x6f, 0x04, 0xcf, 0xe3, 0x7e, 0x83, 0x9b, 0x79, 0x9a, 0x4e, - 0xfb, 0x98, 0xd1, 0x7a, 0x14, 0x46, 0x73, 0xdd, 0x57, 0x5c, 0x77, 0x71, 0x2b, 0xbf, 0xa0, 0x56, - 0xe4, 0x65, 0xf8, 0x77, 0x04, 0x30, 0x31, 0x33, 0x9c, 0xa5, 0xd4, 0x03, 0xdf, 0xcb, 0x73, 0xe2, - 0xef, 0x2b, 0x82, 0x4d, 0x12, 0x3f, 0xf1, 0xd0, 0x1d, 0xe7, 0xca, 0xd9, 0x0e, 0x8d, 0xeb, 0x1e, - 0x01, 0x4c, 0x5c, 0x30, 0x93, 0xdd, 0x03, 0xc3, 0xcc, 0xc3, 0xee, 0x40, 0xb1, 0xdb, 0x6b, 0x5a, - 0x31, 0x76, 0x41, 0x73, 0x33, 0x43, 0x43, 0x4d, 0xf1, 0x2f, 0x04, 0x2f, 0xa6, 0xfc, 0x11, 0xb7, - 0xf2, 0x69, 0x38, 0xe5, 0xa6, 0x46, 0x2e, 0xa3, 0x24, 0x27, 0x8a, 0xeb, 0x21, 0x79, 0xca, 0x51, - 0xb7, 0x23, 0x97, 0xc5, 0xbf, 0x21, 0x78, 0x99, 0xb4, 0x59, 0xfc, 0x5e, 0xf6, 0x45, 0x9f, 0xe5, - 0xcb, 0x46, 0x23, 0x95, 0xf8, 0x14, 0x84, 0x10, 0x45, 0x7f, 0x03, 0x1b, 0x63, 0xfa, 0x6d, 0x3b, - 0x51, 0xf6, 0xe8, 0x7b, 0xa8, 0xf5, 0xb9, 0x9b, 0x4e, 0xe6, 0xa8, 0x14, 0x7f, 0x09, 0x4e, 0x83, - 0xf7, 0xeb, 0xcb, 0x13, 0x8d, 0xb0, 0xf9, 0x80, 0x7a, 0xb6, 0xc9, 0x87, 0xb6, 0x65, 0x33, 0x4f, - 0xbd, 0x6d, 0x56, 0xb8, 0x44, 0x7d, 0x47, 0xcc, 0xf9, 0x57, 0xbd, 0xaf, 0x03, 0x17, 0x8b, 0x0a, - 0xd0, 0xfa, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xad, 0xe1, 0xf2, 0x57, 0x85, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1/video_intelligence.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1/video_intelligence.pb.go deleted file mode 100644 index 75b0f760..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1/video_intelligence.pb.go +++ /dev/null @@ -1,1158 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/videointelligence/v1/video_intelligence.proto - -/* -Package videointelligence is a generated protocol buffer package. - -It is generated from these files: - google/cloud/videointelligence/v1/video_intelligence.proto - -It has these top-level messages: - AnnotateVideoRequest - VideoContext - LabelDetectionConfig - ShotChangeDetectionConfig - ExplicitContentDetectionConfig - FaceDetectionConfig - VideoSegment - LabelSegment - LabelFrame - Entity - LabelAnnotation - ExplicitContentFrame - ExplicitContentAnnotation - NormalizedBoundingBox - FaceSegment - FaceFrame - FaceAnnotation - VideoAnnotationResults - AnnotateVideoResponse - VideoAnnotationProgress - AnnotateVideoProgress -*/ -package videointelligence - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Video annotation feature. -type Feature int32 - -const ( - // Unspecified. - Feature_FEATURE_UNSPECIFIED Feature = 0 - // Label detection. Detect objects, such as dog or flower. - Feature_LABEL_DETECTION Feature = 1 - // Shot change detection. - Feature_SHOT_CHANGE_DETECTION Feature = 2 - // Explicit content detection. - Feature_EXPLICIT_CONTENT_DETECTION Feature = 3 - // Human face detection and tracking. - Feature_FACE_DETECTION Feature = 4 -) - -var Feature_name = map[int32]string{ - 0: "FEATURE_UNSPECIFIED", - 1: "LABEL_DETECTION", - 2: "SHOT_CHANGE_DETECTION", - 3: "EXPLICIT_CONTENT_DETECTION", - 4: "FACE_DETECTION", -} -var Feature_value = map[string]int32{ - "FEATURE_UNSPECIFIED": 0, - "LABEL_DETECTION": 1, - "SHOT_CHANGE_DETECTION": 2, - "EXPLICIT_CONTENT_DETECTION": 3, - "FACE_DETECTION": 4, -} - -func (x Feature) String() string { - return proto.EnumName(Feature_name, int32(x)) -} -func (Feature) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Label detection mode. -type LabelDetectionMode int32 - -const ( - // Unspecified. - LabelDetectionMode_LABEL_DETECTION_MODE_UNSPECIFIED LabelDetectionMode = 0 - // Detect shot-level labels. - LabelDetectionMode_SHOT_MODE LabelDetectionMode = 1 - // Detect frame-level labels. - LabelDetectionMode_FRAME_MODE LabelDetectionMode = 2 - // Detect both shot-level and frame-level labels. - LabelDetectionMode_SHOT_AND_FRAME_MODE LabelDetectionMode = 3 -) - -var LabelDetectionMode_name = map[int32]string{ - 0: "LABEL_DETECTION_MODE_UNSPECIFIED", - 1: "SHOT_MODE", - 2: "FRAME_MODE", - 3: "SHOT_AND_FRAME_MODE", -} -var LabelDetectionMode_value = map[string]int32{ - "LABEL_DETECTION_MODE_UNSPECIFIED": 0, - "SHOT_MODE": 1, - "FRAME_MODE": 2, - "SHOT_AND_FRAME_MODE": 3, -} - -func (x LabelDetectionMode) String() string { - return proto.EnumName(LabelDetectionMode_name, int32(x)) -} -func (LabelDetectionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -// Bucketized representation of likelihood. -type Likelihood int32 - -const ( - // Unspecified likelihood. - Likelihood_LIKELIHOOD_UNSPECIFIED Likelihood = 0 - // Very unlikely. - Likelihood_VERY_UNLIKELY Likelihood = 1 - // Unlikely. - Likelihood_UNLIKELY Likelihood = 2 - // Possible. - Likelihood_POSSIBLE Likelihood = 3 - // Likely. - Likelihood_LIKELY Likelihood = 4 - // Very likely. - Likelihood_VERY_LIKELY Likelihood = 5 -) - -var Likelihood_name = map[int32]string{ - 0: "LIKELIHOOD_UNSPECIFIED", - 1: "VERY_UNLIKELY", - 2: "UNLIKELY", - 3: "POSSIBLE", - 4: "LIKELY", - 5: "VERY_LIKELY", -} -var Likelihood_value = map[string]int32{ - "LIKELIHOOD_UNSPECIFIED": 0, - "VERY_UNLIKELY": 1, - "UNLIKELY": 2, - "POSSIBLE": 3, - "LIKELY": 4, - "VERY_LIKELY": 5, -} - -func (x Likelihood) String() string { - return proto.EnumName(Likelihood_name, int32(x)) -} -func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -// Video annotation request. -type AnnotateVideoRequest struct { - // Input video location. Currently, only - // [Google Cloud Storage](https://cloud.google.com/storage/) URIs are - // supported, which must be specified in the following format: - // `gs://bucket-id/object-id` (other URI formats return - // [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see - // [Request URIs](/storage/docs/reference-uris). - // A video URI may include wildcards in `object-id`, and thus identify - // multiple videos. Supported wildcards: '*' to match 0 or more characters; - // '?' to match 1 character. If unset, the input video should be embedded - // in the request as `input_content`. If set, `input_content` should be unset. - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // The video data bytes. - // If unset, the input video(s) should be specified via `input_uri`. - // If set, `input_uri` should be unset. - InputContent []byte `protobuf:"bytes,6,opt,name=input_content,json=inputContent,proto3" json:"input_content,omitempty"` - // Requested video annotation features. - Features []Feature `protobuf:"varint,2,rep,packed,name=features,enum=google.cloud.videointelligence.v1.Feature" json:"features,omitempty"` - // Additional video context and/or feature-specific parameters. - VideoContext *VideoContext `protobuf:"bytes,3,opt,name=video_context,json=videoContext" json:"video_context,omitempty"` - // Optional location where the output (in JSON format) should be stored. - // Currently, only [Google Cloud Storage](https://cloud.google.com/storage/) - // URIs are supported, which must be specified in the following format: - // `gs://bucket-id/object-id` (other URI formats return - // [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see - // [Request URIs](/storage/docs/reference-uris). - OutputUri string `protobuf:"bytes,4,opt,name=output_uri,json=outputUri" json:"output_uri,omitempty"` - // Optional cloud region where annotation should take place. Supported cloud - // regions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region - // is specified, a region will be determined based on video file location. - LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId" json:"location_id,omitempty"` -} - -func (m *AnnotateVideoRequest) Reset() { *m = AnnotateVideoRequest{} } -func (m *AnnotateVideoRequest) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoRequest) ProtoMessage() {} -func (*AnnotateVideoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *AnnotateVideoRequest) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *AnnotateVideoRequest) GetInputContent() []byte { - if m != nil { - return m.InputContent - } - return nil -} - -func (m *AnnotateVideoRequest) GetFeatures() []Feature { - if m != nil { - return m.Features - } - return nil -} - -func (m *AnnotateVideoRequest) GetVideoContext() *VideoContext { - if m != nil { - return m.VideoContext - } - return nil -} - -func (m *AnnotateVideoRequest) GetOutputUri() string { - if m != nil { - return m.OutputUri - } - return "" -} - -func (m *AnnotateVideoRequest) GetLocationId() string { - if m != nil { - return m.LocationId - } - return "" -} - -// Video context and/or feature-specific parameters. -type VideoContext struct { - // Video segments to annotate. The segments may overlap and are not required - // to be contiguous or span the whole video. If unspecified, each video - // is treated as a single segment. - Segments []*VideoSegment `protobuf:"bytes,1,rep,name=segments" json:"segments,omitempty"` - // Config for LABEL_DETECTION. - LabelDetectionConfig *LabelDetectionConfig `protobuf:"bytes,2,opt,name=label_detection_config,json=labelDetectionConfig" json:"label_detection_config,omitempty"` - // Config for SHOT_CHANGE_DETECTION. - ShotChangeDetectionConfig *ShotChangeDetectionConfig `protobuf:"bytes,3,opt,name=shot_change_detection_config,json=shotChangeDetectionConfig" json:"shot_change_detection_config,omitempty"` - // Config for EXPLICIT_CONTENT_DETECTION. - ExplicitContentDetectionConfig *ExplicitContentDetectionConfig `protobuf:"bytes,4,opt,name=explicit_content_detection_config,json=explicitContentDetectionConfig" json:"explicit_content_detection_config,omitempty"` - // Config for FACE_DETECTION. - FaceDetectionConfig *FaceDetectionConfig `protobuf:"bytes,5,opt,name=face_detection_config,json=faceDetectionConfig" json:"face_detection_config,omitempty"` -} - -func (m *VideoContext) Reset() { *m = VideoContext{} } -func (m *VideoContext) String() string { return proto.CompactTextString(m) } -func (*VideoContext) ProtoMessage() {} -func (*VideoContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *VideoContext) GetSegments() []*VideoSegment { - if m != nil { - return m.Segments - } - return nil -} - -func (m *VideoContext) GetLabelDetectionConfig() *LabelDetectionConfig { - if m != nil { - return m.LabelDetectionConfig - } - return nil -} - -func (m *VideoContext) GetShotChangeDetectionConfig() *ShotChangeDetectionConfig { - if m != nil { - return m.ShotChangeDetectionConfig - } - return nil -} - -func (m *VideoContext) GetExplicitContentDetectionConfig() *ExplicitContentDetectionConfig { - if m != nil { - return m.ExplicitContentDetectionConfig - } - return nil -} - -func (m *VideoContext) GetFaceDetectionConfig() *FaceDetectionConfig { - if m != nil { - return m.FaceDetectionConfig - } - return nil -} - -// Config for LABEL_DETECTION. -type LabelDetectionConfig struct { - // What labels should be detected with LABEL_DETECTION, in addition to - // video-level labels or segment-level labels. - // If unspecified, defaults to `SHOT_MODE`. - LabelDetectionMode LabelDetectionMode `protobuf:"varint,1,opt,name=label_detection_mode,json=labelDetectionMode,enum=google.cloud.videointelligence.v1.LabelDetectionMode" json:"label_detection_mode,omitempty"` - // Whether the video has been shot from a stationary (i.e. non-moving) camera. - // When set to true, might improve detection accuracy for moving objects. - // Should be used with `SHOT_AND_FRAME_MODE` enabled. - StationaryCamera bool `protobuf:"varint,2,opt,name=stationary_camera,json=stationaryCamera" json:"stationary_camera,omitempty"` - // Model to use for label detection. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,3,opt,name=model" json:"model,omitempty"` -} - -func (m *LabelDetectionConfig) Reset() { *m = LabelDetectionConfig{} } -func (m *LabelDetectionConfig) String() string { return proto.CompactTextString(m) } -func (*LabelDetectionConfig) ProtoMessage() {} -func (*LabelDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *LabelDetectionConfig) GetLabelDetectionMode() LabelDetectionMode { - if m != nil { - return m.LabelDetectionMode - } - return LabelDetectionMode_LABEL_DETECTION_MODE_UNSPECIFIED -} - -func (m *LabelDetectionConfig) GetStationaryCamera() bool { - if m != nil { - return m.StationaryCamera - } - return false -} - -func (m *LabelDetectionConfig) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -// Config for SHOT_CHANGE_DETECTION. -type ShotChangeDetectionConfig struct { - // Model to use for shot change detection. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` -} - -func (m *ShotChangeDetectionConfig) Reset() { *m = ShotChangeDetectionConfig{} } -func (m *ShotChangeDetectionConfig) String() string { return proto.CompactTextString(m) } -func (*ShotChangeDetectionConfig) ProtoMessage() {} -func (*ShotChangeDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ShotChangeDetectionConfig) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -// Config for EXPLICIT_CONTENT_DETECTION. -type ExplicitContentDetectionConfig struct { - // Model to use for explicit content detection. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` -} - -func (m *ExplicitContentDetectionConfig) Reset() { *m = ExplicitContentDetectionConfig{} } -func (m *ExplicitContentDetectionConfig) String() string { return proto.CompactTextString(m) } -func (*ExplicitContentDetectionConfig) ProtoMessage() {} -func (*ExplicitContentDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ExplicitContentDetectionConfig) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -// Config for FACE_DETECTION. -type FaceDetectionConfig struct { - // Model to use for face detection. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` - // Whether bounding boxes be included in the face annotation output. - IncludeBoundingBoxes bool `protobuf:"varint,2,opt,name=include_bounding_boxes,json=includeBoundingBoxes" json:"include_bounding_boxes,omitempty"` -} - -func (m *FaceDetectionConfig) Reset() { *m = FaceDetectionConfig{} } -func (m *FaceDetectionConfig) String() string { return proto.CompactTextString(m) } -func (*FaceDetectionConfig) ProtoMessage() {} -func (*FaceDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *FaceDetectionConfig) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -func (m *FaceDetectionConfig) GetIncludeBoundingBoxes() bool { - if m != nil { - return m.IncludeBoundingBoxes - } - return false -} - -// Video segment. -type VideoSegment struct { - // Time-offset, relative to the beginning of the video, - // corresponding to the start of the segment (inclusive). - StartTimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=start_time_offset,json=startTimeOffset" json:"start_time_offset,omitempty"` - // Time-offset, relative to the beginning of the video, - // corresponding to the end of the segment (inclusive). - EndTimeOffset *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=end_time_offset,json=endTimeOffset" json:"end_time_offset,omitempty"` -} - -func (m *VideoSegment) Reset() { *m = VideoSegment{} } -func (m *VideoSegment) String() string { return proto.CompactTextString(m) } -func (*VideoSegment) ProtoMessage() {} -func (*VideoSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *VideoSegment) GetStartTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.StartTimeOffset - } - return nil -} - -func (m *VideoSegment) GetEndTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.EndTimeOffset - } - return nil -} - -// Video segment level annotation results for label detection. -type LabelSegment struct { - // Video segment where a label was detected. - Segment *VideoSegment `protobuf:"bytes,1,opt,name=segment" json:"segment,omitempty"` - // Confidence that the label is accurate. Range: [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *LabelSegment) Reset() { *m = LabelSegment{} } -func (m *LabelSegment) String() string { return proto.CompactTextString(m) } -func (*LabelSegment) ProtoMessage() {} -func (*LabelSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *LabelSegment) GetSegment() *VideoSegment { - if m != nil { - return m.Segment - } - return nil -} - -func (m *LabelSegment) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Video frame level annotation results for label detection. -type LabelFrame struct { - // Time-offset, relative to the beginning of the video, corresponding to the - // video frame for this location. - TimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` - // Confidence that the label is accurate. Range: [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *LabelFrame) Reset() { *m = LabelFrame{} } -func (m *LabelFrame) String() string { return proto.CompactTextString(m) } -func (*LabelFrame) ProtoMessage() {} -func (*LabelFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *LabelFrame) GetTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.TimeOffset - } - return nil -} - -func (m *LabelFrame) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Detected entity from video analysis. -type Entity struct { - // Opaque entity ID. Some IDs may be available in - // [Google Knowledge Graph Search - // API](https://developers.google.com/knowledge-graph/). - EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` - // Textual description, e.g. `Fixed-gear bicycle`. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Language code for `description` in BCP-47 format. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *Entity) Reset() { *m = Entity{} } -func (m *Entity) String() string { return proto.CompactTextString(m) } -func (*Entity) ProtoMessage() {} -func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *Entity) GetEntityId() string { - if m != nil { - return m.EntityId - } - return "" -} - -func (m *Entity) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Entity) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// Label annotation. -type LabelAnnotation struct { - // Detected entity. - Entity *Entity `protobuf:"bytes,1,opt,name=entity" json:"entity,omitempty"` - // Common categories for the detected entity. - // E.g. when the label is `Terrier` the category is likely `dog`. And in some - // cases there might be more than one categories e.g. `Terrier` could also be - // a `pet`. - CategoryEntities []*Entity `protobuf:"bytes,2,rep,name=category_entities,json=categoryEntities" json:"category_entities,omitempty"` - // All video segments where a label was detected. - Segments []*LabelSegment `protobuf:"bytes,3,rep,name=segments" json:"segments,omitempty"` - // All video frames where a label was detected. - Frames []*LabelFrame `protobuf:"bytes,4,rep,name=frames" json:"frames,omitempty"` -} - -func (m *LabelAnnotation) Reset() { *m = LabelAnnotation{} } -func (m *LabelAnnotation) String() string { return proto.CompactTextString(m) } -func (*LabelAnnotation) ProtoMessage() {} -func (*LabelAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *LabelAnnotation) GetEntity() *Entity { - if m != nil { - return m.Entity - } - return nil -} - -func (m *LabelAnnotation) GetCategoryEntities() []*Entity { - if m != nil { - return m.CategoryEntities - } - return nil -} - -func (m *LabelAnnotation) GetSegments() []*LabelSegment { - if m != nil { - return m.Segments - } - return nil -} - -func (m *LabelAnnotation) GetFrames() []*LabelFrame { - if m != nil { - return m.Frames - } - return nil -} - -// Video frame level annotation results for explicit content. -type ExplicitContentFrame struct { - // Time-offset, relative to the beginning of the video, corresponding to the - // video frame for this location. - TimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` - // Likelihood of the pornography content.. - PornographyLikelihood Likelihood `protobuf:"varint,2,opt,name=pornography_likelihood,json=pornographyLikelihood,enum=google.cloud.videointelligence.v1.Likelihood" json:"pornography_likelihood,omitempty"` -} - -func (m *ExplicitContentFrame) Reset() { *m = ExplicitContentFrame{} } -func (m *ExplicitContentFrame) String() string { return proto.CompactTextString(m) } -func (*ExplicitContentFrame) ProtoMessage() {} -func (*ExplicitContentFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ExplicitContentFrame) GetTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.TimeOffset - } - return nil -} - -func (m *ExplicitContentFrame) GetPornographyLikelihood() Likelihood { - if m != nil { - return m.PornographyLikelihood - } - return Likelihood_LIKELIHOOD_UNSPECIFIED -} - -// Explicit content annotation (based on per-frame visual signals only). -// If no explicit content has been detected in a frame, no annotations are -// present for that frame. -type ExplicitContentAnnotation struct { - // All video frames where explicit content was detected. - Frames []*ExplicitContentFrame `protobuf:"bytes,1,rep,name=frames" json:"frames,omitempty"` -} - -func (m *ExplicitContentAnnotation) Reset() { *m = ExplicitContentAnnotation{} } -func (m *ExplicitContentAnnotation) String() string { return proto.CompactTextString(m) } -func (*ExplicitContentAnnotation) ProtoMessage() {} -func (*ExplicitContentAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *ExplicitContentAnnotation) GetFrames() []*ExplicitContentFrame { - if m != nil { - return m.Frames - } - return nil -} - -// Normalized bounding box. -// The normalized vertex coordinates are relative to the original image. -// Range: [0, 1]. -type NormalizedBoundingBox struct { - // Left X coordinate. - Left float32 `protobuf:"fixed32,1,opt,name=left" json:"left,omitempty"` - // Top Y coordinate. - Top float32 `protobuf:"fixed32,2,opt,name=top" json:"top,omitempty"` - // Right X coordinate. - Right float32 `protobuf:"fixed32,3,opt,name=right" json:"right,omitempty"` - // Bottom Y coordinate. - Bottom float32 `protobuf:"fixed32,4,opt,name=bottom" json:"bottom,omitempty"` -} - -func (m *NormalizedBoundingBox) Reset() { *m = NormalizedBoundingBox{} } -func (m *NormalizedBoundingBox) String() string { return proto.CompactTextString(m) } -func (*NormalizedBoundingBox) ProtoMessage() {} -func (*NormalizedBoundingBox) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *NormalizedBoundingBox) GetLeft() float32 { - if m != nil { - return m.Left - } - return 0 -} - -func (m *NormalizedBoundingBox) GetTop() float32 { - if m != nil { - return m.Top - } - return 0 -} - -func (m *NormalizedBoundingBox) GetRight() float32 { - if m != nil { - return m.Right - } - return 0 -} - -func (m *NormalizedBoundingBox) GetBottom() float32 { - if m != nil { - return m.Bottom - } - return 0 -} - -// Video segment level annotation results for face detection. -type FaceSegment struct { - // Video segment where a face was detected. - Segment *VideoSegment `protobuf:"bytes,1,opt,name=segment" json:"segment,omitempty"` -} - -func (m *FaceSegment) Reset() { *m = FaceSegment{} } -func (m *FaceSegment) String() string { return proto.CompactTextString(m) } -func (*FaceSegment) ProtoMessage() {} -func (*FaceSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *FaceSegment) GetSegment() *VideoSegment { - if m != nil { - return m.Segment - } - return nil -} - -// Video frame level annotation results for face detection. -type FaceFrame struct { - // Normalized Bounding boxes in a frame. - // There can be more than one boxes if the same face is detected in multiple - // locations within the current frame. - NormalizedBoundingBoxes []*NormalizedBoundingBox `protobuf:"bytes,1,rep,name=normalized_bounding_boxes,json=normalizedBoundingBoxes" json:"normalized_bounding_boxes,omitempty"` - // Time-offset, relative to the beginning of the video, - // corresponding to the video frame for this location. - TimeOffset *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` -} - -func (m *FaceFrame) Reset() { *m = FaceFrame{} } -func (m *FaceFrame) String() string { return proto.CompactTextString(m) } -func (*FaceFrame) ProtoMessage() {} -func (*FaceFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *FaceFrame) GetNormalizedBoundingBoxes() []*NormalizedBoundingBox { - if m != nil { - return m.NormalizedBoundingBoxes - } - return nil -} - -func (m *FaceFrame) GetTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.TimeOffset - } - return nil -} - -// Face annotation. -type FaceAnnotation struct { - // Thumbnail of a representative face view (in JPEG format). - Thumbnail []byte `protobuf:"bytes,1,opt,name=thumbnail,proto3" json:"thumbnail,omitempty"` - // All video segments where a face was detected. - Segments []*FaceSegment `protobuf:"bytes,2,rep,name=segments" json:"segments,omitempty"` - // All video frames where a face was detected. - Frames []*FaceFrame `protobuf:"bytes,3,rep,name=frames" json:"frames,omitempty"` -} - -func (m *FaceAnnotation) Reset() { *m = FaceAnnotation{} } -func (m *FaceAnnotation) String() string { return proto.CompactTextString(m) } -func (*FaceAnnotation) ProtoMessage() {} -func (*FaceAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *FaceAnnotation) GetThumbnail() []byte { - if m != nil { - return m.Thumbnail - } - return nil -} - -func (m *FaceAnnotation) GetSegments() []*FaceSegment { - if m != nil { - return m.Segments - } - return nil -} - -func (m *FaceAnnotation) GetFrames() []*FaceFrame { - if m != nil { - return m.Frames - } - return nil -} - -// Annotation results for a single video. -type VideoAnnotationResults struct { - // Video file location in - // [Google Cloud Storage](https://cloud.google.com/storage/). - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // Label annotations on video level or user specified segment level. - // There is exactly one element for each unique label. - SegmentLabelAnnotations []*LabelAnnotation `protobuf:"bytes,2,rep,name=segment_label_annotations,json=segmentLabelAnnotations" json:"segment_label_annotations,omitempty"` - // Label annotations on shot level. - // There is exactly one element for each unique label. - ShotLabelAnnotations []*LabelAnnotation `protobuf:"bytes,3,rep,name=shot_label_annotations,json=shotLabelAnnotations" json:"shot_label_annotations,omitempty"` - // Label annotations on frame level. - // There is exactly one element for each unique label. - FrameLabelAnnotations []*LabelAnnotation `protobuf:"bytes,4,rep,name=frame_label_annotations,json=frameLabelAnnotations" json:"frame_label_annotations,omitempty"` - // Face annotations. There is exactly one element for each unique face. - FaceAnnotations []*FaceAnnotation `protobuf:"bytes,5,rep,name=face_annotations,json=faceAnnotations" json:"face_annotations,omitempty"` - // Shot annotations. Each shot is represented as a video segment. - ShotAnnotations []*VideoSegment `protobuf:"bytes,6,rep,name=shot_annotations,json=shotAnnotations" json:"shot_annotations,omitempty"` - // Explicit content annotation. - ExplicitAnnotation *ExplicitContentAnnotation `protobuf:"bytes,7,opt,name=explicit_annotation,json=explicitAnnotation" json:"explicit_annotation,omitempty"` - // If set, indicates an error. Note that for a single `AnnotateVideoRequest` - // some videos may succeed and some may fail. - Error *google_rpc.Status `protobuf:"bytes,9,opt,name=error" json:"error,omitempty"` -} - -func (m *VideoAnnotationResults) Reset() { *m = VideoAnnotationResults{} } -func (m *VideoAnnotationResults) String() string { return proto.CompactTextString(m) } -func (*VideoAnnotationResults) ProtoMessage() {} -func (*VideoAnnotationResults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *VideoAnnotationResults) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *VideoAnnotationResults) GetSegmentLabelAnnotations() []*LabelAnnotation { - if m != nil { - return m.SegmentLabelAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetShotLabelAnnotations() []*LabelAnnotation { - if m != nil { - return m.ShotLabelAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetFrameLabelAnnotations() []*LabelAnnotation { - if m != nil { - return m.FrameLabelAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetFaceAnnotations() []*FaceAnnotation { - if m != nil { - return m.FaceAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetShotAnnotations() []*VideoSegment { - if m != nil { - return m.ShotAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetExplicitAnnotation() *ExplicitContentAnnotation { - if m != nil { - return m.ExplicitAnnotation - } - return nil -} - -func (m *VideoAnnotationResults) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -// Video annotation response. Included in the `response` -// field of the `Operation` returned by the `GetOperation` -// call of the `google::longrunning::Operations` service. -type AnnotateVideoResponse struct { - // Annotation results for all videos specified in `AnnotateVideoRequest`. - AnnotationResults []*VideoAnnotationResults `protobuf:"bytes,1,rep,name=annotation_results,json=annotationResults" json:"annotation_results,omitempty"` -} - -func (m *AnnotateVideoResponse) Reset() { *m = AnnotateVideoResponse{} } -func (m *AnnotateVideoResponse) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoResponse) ProtoMessage() {} -func (*AnnotateVideoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *AnnotateVideoResponse) GetAnnotationResults() []*VideoAnnotationResults { - if m != nil { - return m.AnnotationResults - } - return nil -} - -// Annotation progress for a single video. -type VideoAnnotationProgress struct { - // Video file location in - // [Google Cloud Storage](https://cloud.google.com/storage/). - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // Approximate percentage processed thus far. - // Guaranteed to be 100 when fully processed. - ProgressPercent int32 `protobuf:"varint,2,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"` - // Time when the request was received. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time of the most recent update. - UpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *VideoAnnotationProgress) Reset() { *m = VideoAnnotationProgress{} } -func (m *VideoAnnotationProgress) String() string { return proto.CompactTextString(m) } -func (*VideoAnnotationProgress) ProtoMessage() {} -func (*VideoAnnotationProgress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *VideoAnnotationProgress) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *VideoAnnotationProgress) GetProgressPercent() int32 { - if m != nil { - return m.ProgressPercent - } - return 0 -} - -func (m *VideoAnnotationProgress) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *VideoAnnotationProgress) GetUpdateTime() *google_protobuf4.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// Video annotation progress. Included in the `metadata` -// field of the `Operation` returned by the `GetOperation` -// call of the `google::longrunning::Operations` service. -type AnnotateVideoProgress struct { - // Progress metadata for all videos specified in `AnnotateVideoRequest`. - AnnotationProgress []*VideoAnnotationProgress `protobuf:"bytes,1,rep,name=annotation_progress,json=annotationProgress" json:"annotation_progress,omitempty"` -} - -func (m *AnnotateVideoProgress) Reset() { *m = AnnotateVideoProgress{} } -func (m *AnnotateVideoProgress) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoProgress) ProtoMessage() {} -func (*AnnotateVideoProgress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *AnnotateVideoProgress) GetAnnotationProgress() []*VideoAnnotationProgress { - if m != nil { - return m.AnnotationProgress - } - return nil -} - -func init() { - proto.RegisterType((*AnnotateVideoRequest)(nil), "google.cloud.videointelligence.v1.AnnotateVideoRequest") - proto.RegisterType((*VideoContext)(nil), "google.cloud.videointelligence.v1.VideoContext") - proto.RegisterType((*LabelDetectionConfig)(nil), "google.cloud.videointelligence.v1.LabelDetectionConfig") - proto.RegisterType((*ShotChangeDetectionConfig)(nil), "google.cloud.videointelligence.v1.ShotChangeDetectionConfig") - proto.RegisterType((*ExplicitContentDetectionConfig)(nil), "google.cloud.videointelligence.v1.ExplicitContentDetectionConfig") - proto.RegisterType((*FaceDetectionConfig)(nil), "google.cloud.videointelligence.v1.FaceDetectionConfig") - proto.RegisterType((*VideoSegment)(nil), "google.cloud.videointelligence.v1.VideoSegment") - proto.RegisterType((*LabelSegment)(nil), "google.cloud.videointelligence.v1.LabelSegment") - proto.RegisterType((*LabelFrame)(nil), "google.cloud.videointelligence.v1.LabelFrame") - proto.RegisterType((*Entity)(nil), "google.cloud.videointelligence.v1.Entity") - proto.RegisterType((*LabelAnnotation)(nil), "google.cloud.videointelligence.v1.LabelAnnotation") - proto.RegisterType((*ExplicitContentFrame)(nil), "google.cloud.videointelligence.v1.ExplicitContentFrame") - proto.RegisterType((*ExplicitContentAnnotation)(nil), "google.cloud.videointelligence.v1.ExplicitContentAnnotation") - proto.RegisterType((*NormalizedBoundingBox)(nil), "google.cloud.videointelligence.v1.NormalizedBoundingBox") - proto.RegisterType((*FaceSegment)(nil), "google.cloud.videointelligence.v1.FaceSegment") - proto.RegisterType((*FaceFrame)(nil), "google.cloud.videointelligence.v1.FaceFrame") - proto.RegisterType((*FaceAnnotation)(nil), "google.cloud.videointelligence.v1.FaceAnnotation") - proto.RegisterType((*VideoAnnotationResults)(nil), "google.cloud.videointelligence.v1.VideoAnnotationResults") - proto.RegisterType((*AnnotateVideoResponse)(nil), "google.cloud.videointelligence.v1.AnnotateVideoResponse") - proto.RegisterType((*VideoAnnotationProgress)(nil), "google.cloud.videointelligence.v1.VideoAnnotationProgress") - proto.RegisterType((*AnnotateVideoProgress)(nil), "google.cloud.videointelligence.v1.AnnotateVideoProgress") - proto.RegisterEnum("google.cloud.videointelligence.v1.Feature", Feature_name, Feature_value) - proto.RegisterEnum("google.cloud.videointelligence.v1.LabelDetectionMode", LabelDetectionMode_name, LabelDetectionMode_value) - proto.RegisterEnum("google.cloud.videointelligence.v1.Likelihood", Likelihood_name, Likelihood_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for VideoIntelligenceService service - -type VideoIntelligenceServiceClient interface { - // Performs asynchronous video annotation. Progress and results can be - // retrieved through the `google.longrunning.Operations` interface. - // `Operation.metadata` contains `AnnotateVideoProgress` (progress). - // `Operation.response` contains `AnnotateVideoResponse` (results). - AnnotateVideo(ctx context.Context, in *AnnotateVideoRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type videoIntelligenceServiceClient struct { - cc *grpc.ClientConn -} - -func NewVideoIntelligenceServiceClient(cc *grpc.ClientConn) VideoIntelligenceServiceClient { - return &videoIntelligenceServiceClient{cc} -} - -func (c *videoIntelligenceServiceClient) AnnotateVideo(ctx context.Context, in *AnnotateVideoRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.videointelligence.v1.VideoIntelligenceService/AnnotateVideo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for VideoIntelligenceService service - -type VideoIntelligenceServiceServer interface { - // Performs asynchronous video annotation. Progress and results can be - // retrieved through the `google.longrunning.Operations` interface. - // `Operation.metadata` contains `AnnotateVideoProgress` (progress). - // `Operation.response` contains `AnnotateVideoResponse` (results). - AnnotateVideo(context.Context, *AnnotateVideoRequest) (*google_longrunning.Operation, error) -} - -func RegisterVideoIntelligenceServiceServer(s *grpc.Server, srv VideoIntelligenceServiceServer) { - s.RegisterService(&_VideoIntelligenceService_serviceDesc, srv) -} - -func _VideoIntelligenceService_AnnotateVideo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnnotateVideoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VideoIntelligenceServiceServer).AnnotateVideo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.videointelligence.v1.VideoIntelligenceService/AnnotateVideo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VideoIntelligenceServiceServer).AnnotateVideo(ctx, req.(*AnnotateVideoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _VideoIntelligenceService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.videointelligence.v1.VideoIntelligenceService", - HandlerType: (*VideoIntelligenceServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AnnotateVideo", - Handler: _VideoIntelligenceService_AnnotateVideo_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/videointelligence/v1/video_intelligence.proto", -} - -func init() { - proto.RegisterFile("google/cloud/videointelligence/v1/video_intelligence.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 1705 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x73, 0xe3, 0x48, - 0x15, 0x47, 0xb6, 0x93, 0x89, 0x5f, 0xbe, 0x3c, 0x9d, 0x2f, 0x27, 0xcc, 0x64, 0x33, 0x5a, 0xa8, - 0xca, 0x06, 0xb0, 0x2b, 0x01, 0x76, 0xd9, 0x2c, 0x17, 0xc7, 0x51, 0x76, 0xcc, 0x66, 0xe2, 0x54, - 0xdb, 0x93, 0xda, 0xdd, 0x9a, 0x2a, 0x95, 0x22, 0xb5, 0x65, 0xed, 0xc8, 0x6a, 0x21, 0xb5, 0x52, - 0x13, 0xaa, 0x38, 0x40, 0x51, 0x70, 0xe1, 0xc6, 0x85, 0x3f, 0x80, 0x13, 0x7f, 0x00, 0xc5, 0x85, - 0xaa, 0x2d, 0x8a, 0x13, 0x07, 0x2e, 0x9c, 0xb8, 0xef, 0x1f, 0x42, 0xa9, 0xbb, 0x65, 0x2b, 0x92, - 0x33, 0x91, 0x07, 0x6e, 0xea, 0xf7, 0xf1, 0x7b, 0xaf, 0xdf, 0x57, 0x77, 0x0b, 0x8e, 0x6d, 0x4a, - 0x6d, 0x97, 0x34, 0x4d, 0x97, 0x46, 0x56, 0xf3, 0xc6, 0xb1, 0x08, 0x75, 0x3c, 0x46, 0x5c, 0xd7, - 0xb1, 0x89, 0x67, 0x92, 0xe6, 0xcd, 0xa1, 0x20, 0xea, 0x69, 0x6a, 0xc3, 0x0f, 0x28, 0xa3, 0xe8, - 0x99, 0xd0, 0x6d, 0x70, 0xdd, 0x46, 0x4e, 0xb7, 0x71, 0x73, 0xb8, 0xf3, 0x44, 0xc2, 0x1b, 0xbe, - 0xd3, 0x34, 0x3c, 0x8f, 0x32, 0x83, 0x39, 0xd4, 0x0b, 0x05, 0xc0, 0xce, 0xfb, 0x92, 0xeb, 0x52, - 0xcf, 0x0e, 0x22, 0xcf, 0x73, 0x3c, 0xbb, 0x49, 0x7d, 0x12, 0xdc, 0x11, 0xda, 0x95, 0x42, 0x7c, - 0x75, 0x1d, 0x0d, 0x9a, 0x56, 0x24, 0x04, 0x24, 0xff, 0xbd, 0x2c, 0x9f, 0x39, 0x23, 0x12, 0x32, - 0x63, 0xe4, 0x4b, 0x81, 0x2d, 0x29, 0x10, 0xf8, 0x66, 0x33, 0x64, 0x06, 0x8b, 0x24, 0xb2, 0xfa, - 0x97, 0x12, 0xac, 0xb7, 0x84, 0x53, 0xe4, 0x2a, 0xf6, 0x1e, 0x93, 0x9f, 0x47, 0x24, 0x64, 0xe8, - 0xdb, 0x50, 0x75, 0x3c, 0x3f, 0x62, 0x7a, 0x14, 0x38, 0x75, 0x65, 0x4f, 0xd9, 0xaf, 0xe2, 0x05, - 0x4e, 0x78, 0x19, 0x38, 0xe8, 0x7d, 0x58, 0x16, 0x4c, 0x93, 0x7a, 0x8c, 0x78, 0xac, 0x3e, 0xbf, - 0xa7, 0xec, 0x2f, 0xe1, 0x25, 0x4e, 0x6c, 0x0b, 0x1a, 0x3a, 0x83, 0x85, 0x01, 0x31, 0x58, 0x14, - 0x90, 0xb0, 0x5e, 0xda, 0x2b, 0xef, 0xaf, 0x1c, 0x1d, 0x34, 0x1e, 0x8c, 0x56, 0xe3, 0x4c, 0xa8, - 0xe0, 0xb1, 0x2e, 0xea, 0xc3, 0xb2, 0x08, 0x3f, 0x37, 0xf6, 0x86, 0xd5, 0xcb, 0x7b, 0xca, 0xfe, - 0xe2, 0x51, 0xb3, 0x00, 0x18, 0xdf, 0x51, 0x5b, 0xa8, 0xe1, 0xa5, 0x9b, 0xd4, 0x0a, 0x3d, 0x05, - 0xa0, 0x11, 0x4b, 0x36, 0x58, 0xe1, 0x1b, 0xac, 0x0a, 0x4a, 0xbc, 0xc3, 0xf7, 0x60, 0xd1, 0xa5, - 0x26, 0x8f, 0xb1, 0xee, 0x58, 0xf5, 0x39, 0xce, 0x87, 0x84, 0xd4, 0xb1, 0xd4, 0x7f, 0x54, 0x60, - 0x29, 0x0d, 0x8f, 0x3e, 0x83, 0x85, 0x90, 0xd8, 0x23, 0xe2, 0xb1, 0xb0, 0xae, 0xec, 0x95, 0x67, - 0xf1, 0xb0, 0x27, 0xf4, 0xf0, 0x18, 0x00, 0x8d, 0x60, 0xd3, 0x35, 0xae, 0x89, 0xab, 0x5b, 0x84, - 0x11, 0x93, 0x7b, 0x61, 0x52, 0x6f, 0xe0, 0xd8, 0xf5, 0x12, 0xdf, 0xfc, 0x47, 0x05, 0xa0, 0xcf, - 0x63, 0x80, 0xd3, 0x44, 0xbf, 0xcd, 0xd5, 0xf1, 0xba, 0x3b, 0x85, 0x8a, 0x7e, 0x09, 0x4f, 0xc2, - 0x21, 0x65, 0xba, 0x39, 0x34, 0x3c, 0x9b, 0xe4, 0x8d, 0x8a, 0x88, 0xff, 0xb4, 0x80, 0xd1, 0xde, - 0x90, 0xb2, 0x36, 0x47, 0xc9, 0x5a, 0xde, 0x0e, 0xef, 0x63, 0xa1, 0xdf, 0x2b, 0xf0, 0x8c, 0xbc, - 0xf1, 0x5d, 0xc7, 0x74, 0xc6, 0x25, 0x95, 0x77, 0xa2, 0xc2, 0x9d, 0x68, 0x15, 0x70, 0x42, 0x93, - 0x58, 0xb2, 0x12, 0xb3, 0x9e, 0xec, 0x92, 0xb7, 0xf2, 0xd1, 0x57, 0xb0, 0x31, 0x30, 0xcc, 0x29, - 0x61, 0x98, 0xe3, 0x1e, 0x7c, 0x58, 0xa4, 0x8a, 0x0d, 0x33, 0x17, 0x80, 0xb5, 0x41, 0x9e, 0xa8, - 0xfe, 0x5d, 0x81, 0xf5, 0x69, 0x89, 0x42, 0x36, 0xac, 0x67, 0x2b, 0x60, 0x44, 0x2d, 0xc2, 0x5b, - 0x71, 0xe5, 0xe8, 0xc7, 0x33, 0xe7, 0xff, 0x05, 0xb5, 0x08, 0x46, 0x6e, 0x8e, 0x86, 0xbe, 0x07, - 0x8f, 0x43, 0x31, 0x92, 0x8c, 0xe0, 0x56, 0x37, 0x8d, 0x11, 0x09, 0x0c, 0x5e, 0x65, 0x0b, 0xb8, - 0x36, 0x61, 0xb4, 0x39, 0x1d, 0xad, 0xc3, 0x5c, 0xec, 0x85, 0xcb, 0x2b, 0xa2, 0x8a, 0xc5, 0x42, - 0x3d, 0x84, 0xed, 0x7b, 0xf3, 0x3e, 0x51, 0x51, 0xd2, 0x2a, 0x1f, 0xc2, 0xee, 0xdb, 0xb3, 0x74, - 0x8f, 0x9e, 0x01, 0x6b, 0x53, 0x62, 0x3b, 0x5d, 0x18, 0xfd, 0x08, 0x36, 0x1d, 0xcf, 0x74, 0x23, - 0x8b, 0xe8, 0xd7, 0x34, 0xf2, 0x2c, 0xc7, 0xb3, 0xf5, 0x6b, 0xfa, 0x86, 0xcf, 0xa3, 0x78, 0x7f, - 0xeb, 0x92, 0x7b, 0x22, 0x99, 0x27, 0x31, 0x4f, 0xfd, 0xa3, 0x22, 0x3b, 0x5b, 0xb6, 0x25, 0xd2, - 0x78, 0x84, 0x02, 0xa6, 0xc7, 0x53, 0x55, 0xa7, 0x83, 0x41, 0x48, 0x18, 0x37, 0xb4, 0x78, 0xb4, - 0x9d, 0xe4, 0x21, 0x99, 0xbc, 0x8d, 0x53, 0x39, 0x99, 0xf1, 0x2a, 0xd7, 0xe9, 0x3b, 0x23, 0xd2, - 0xe5, 0x1a, 0xa8, 0x05, 0xab, 0xc4, 0xb3, 0xee, 0x80, 0x94, 0x1e, 0x02, 0x59, 0x26, 0x9e, 0x35, - 0x81, 0x50, 0x6f, 0x61, 0x89, 0x67, 0x35, 0xf1, 0xac, 0x03, 0x8f, 0xe4, 0xc8, 0x90, 0xfe, 0xcc, - 0x3c, 0x72, 0x12, 0x7d, 0xb4, 0x0b, 0xc0, 0xab, 0xdc, 0x8a, 0xc5, 0xb8, 0x63, 0x25, 0x9c, 0xa2, - 0xa8, 0x43, 0x00, 0x6e, 0xfa, 0x2c, 0x30, 0x46, 0x04, 0x1d, 0xc3, 0xe2, 0x4c, 0xc1, 0x00, 0x36, - 0x89, 0xc3, 0x43, 0x96, 0x5c, 0x98, 0xd7, 0x3c, 0xe6, 0xb0, 0xdb, 0xf8, 0x0c, 0x22, 0xfc, 0x2b, - 0x1e, 0xc1, 0xf2, 0x0c, 0x12, 0x84, 0x8e, 0x85, 0xf6, 0x60, 0xd1, 0x22, 0xa1, 0x19, 0x38, 0x7e, - 0x6c, 0x81, 0xe3, 0x54, 0x71, 0x9a, 0x14, 0x9f, 0x52, 0xae, 0xe1, 0xd9, 0x91, 0x61, 0x13, 0xdd, - 0x8c, 0x7b, 0x47, 0x14, 0xed, 0x52, 0x42, 0x6c, 0x53, 0x8b, 0xa8, 0x5f, 0x97, 0x60, 0x95, 0x6f, - 0xac, 0x35, 0x3e, 0x9a, 0x51, 0x0b, 0xe6, 0x85, 0x19, 0xb9, 0xb1, 0x0f, 0x8a, 0xcc, 0x1c, 0xae, - 0x80, 0xa5, 0x22, 0xba, 0x82, 0xc7, 0xa6, 0xc1, 0x88, 0x4d, 0x83, 0x5b, 0x9d, 0x93, 0x1c, 0x79, - 0x0a, 0xce, 0x84, 0x56, 0x4b, 0x30, 0x34, 0x09, 0x71, 0xe7, 0x94, 0x29, 0x17, 0x3e, 0x65, 0xd2, - 0x45, 0x93, 0x3a, 0x65, 0x34, 0x98, 0x1f, 0xc4, 0xe9, 0x0c, 0xeb, 0x15, 0x0e, 0xf5, 0x83, 0xa2, - 0x50, 0xbc, 0x08, 0xb0, 0x54, 0x56, 0xff, 0xaa, 0xc0, 0x7a, 0xa6, 0x99, 0xff, 0xf7, 0x2a, 0xb1, - 0x60, 0xd3, 0xa7, 0x81, 0x47, 0xed, 0xc0, 0xf0, 0x87, 0xb7, 0xba, 0xeb, 0xbc, 0x26, 0xae, 0x33, - 0xa4, 0xd4, 0xe2, 0x99, 0x5e, 0x29, 0xe6, 0xeb, 0x58, 0x09, 0x6f, 0xa4, 0xc0, 0x26, 0x64, 0xd5, - 0x85, 0xed, 0x8c, 0xe7, 0xa9, 0x32, 0xe8, 0x8e, 0xc3, 0x23, 0xce, 0xf3, 0x8f, 0x66, 0x3f, 0x7a, - 0xee, 0x06, 0xea, 0x35, 0x6c, 0x5c, 0xd0, 0x60, 0x64, 0xb8, 0xce, 0x2f, 0x88, 0x95, 0x1a, 0x3a, - 0x08, 0x41, 0xc5, 0x25, 0x03, 0x11, 0xa1, 0x12, 0xe6, 0xdf, 0xa8, 0x06, 0x65, 0x46, 0x7d, 0xd9, - 0x1f, 0xf1, 0x67, 0x3c, 0xe4, 0x02, 0xc7, 0x1e, 0x8a, 0x0b, 0x50, 0x09, 0x8b, 0x05, 0xda, 0x84, - 0xf9, 0x6b, 0xca, 0x18, 0x1d, 0xf1, 0x03, 0xb2, 0x84, 0xe5, 0x4a, 0xfd, 0x1c, 0x16, 0xe3, 0x49, - 0xf9, 0xff, 0x1f, 0x15, 0xea, 0xdf, 0x14, 0xa8, 0xc6, 0xd0, 0x22, 0xc9, 0x0c, 0xb6, 0xbd, 0xf1, - 0xa6, 0xb2, 0x73, 0x56, 0x04, 0xee, 0x27, 0x05, 0x4c, 0x4d, 0x0d, 0x0c, 0xde, 0xf2, 0xa6, 0x91, - 0x49, 0x98, 0x2d, 0xad, 0xd2, 0x0c, 0xa5, 0xa5, 0x7e, 0xad, 0xc0, 0x4a, 0xec, 0x7f, 0x2a, 0xd5, - 0x4f, 0xa0, 0xca, 0x86, 0xd1, 0xe8, 0xda, 0x33, 0x1c, 0x71, 0x86, 0x2c, 0xe1, 0x09, 0x01, 0xfd, - 0x2c, 0xd5, 0x74, 0xa2, 0x87, 0x1b, 0x05, 0xef, 0x00, 0xf9, 0x9e, 0x3b, 0x1d, 0x17, 0x95, 0x68, - 0xdf, 0xef, 0x17, 0x44, 0xba, 0x5b, 0x49, 0xff, 0x9a, 0x83, 0x4d, 0x9e, 0x9c, 0xc9, 0x1e, 0x30, - 0x09, 0x23, 0x97, 0x85, 0x6f, 0xbf, 0xb8, 0x7b, 0xb0, 0x2d, 0x3d, 0xd1, 0xc5, 0xed, 0x22, 0xf5, - 0x20, 0x91, 0x5b, 0x3b, 0x2a, 0x3a, 0x04, 0x52, 0xa6, 0xb7, 0x24, 0x68, 0x86, 0x1e, 0xa2, 0x21, - 0x6c, 0xf2, 0x8b, 0x65, 0xde, 0x58, 0xf9, 0x9d, 0x8d, 0xad, 0xc7, 0x88, 0x39, 0x4b, 0x5f, 0xc1, - 0x16, 0x8f, 0xcd, 0x14, 0x53, 0x95, 0x77, 0x36, 0xb5, 0xc1, 0x21, 0x73, 0xb6, 0x5e, 0x41, 0x8d, - 0x5f, 0x10, 0xd3, 0x46, 0xe6, 0xb8, 0x91, 0xc3, 0x82, 0xd9, 0x4c, 0xd9, 0x58, 0x1d, 0xdc, 0x59, - 0x87, 0xe8, 0x4b, 0xa8, 0xf1, 0x98, 0xa5, 0xd1, 0xe7, 0xdf, 0xed, 0x41, 0xb1, 0x1a, 0x03, 0xa5, - 0xb1, 0x47, 0xb0, 0x36, 0xbe, 0x68, 0x4f, 0xf0, 0xeb, 0x8f, 0x0a, 0xdf, 0xef, 0xef, 0x9d, 0x96, - 0x18, 0x25, 0xc0, 0xa9, 0xb6, 0xda, 0x87, 0x39, 0x12, 0x04, 0x34, 0xa8, 0x57, 0xb9, 0x01, 0x94, - 0x18, 0x08, 0x7c, 0xb3, 0xd1, 0xe3, 0xcf, 0x50, 0x2c, 0x04, 0xd4, 0x5f, 0x29, 0xb0, 0x91, 0x79, - 0x87, 0x86, 0x3e, 0xf5, 0x42, 0x82, 0x86, 0x80, 0x26, 0x9e, 0xea, 0x81, 0xa8, 0x72, 0x39, 0x58, - 0x3e, 0x2e, 0x1a, 0x90, 0x5c, 0x9b, 0xe0, 0xc7, 0x46, 0x96, 0xa4, 0xfe, 0x47, 0x81, 0xad, 0x8c, - 0xf4, 0x65, 0x40, 0xed, 0x80, 0x84, 0x0f, 0x74, 0xd5, 0x07, 0x50, 0xf3, 0xa5, 0xa0, 0xee, 0x93, - 0xc0, 0x8c, 0x87, 0x6c, 0x3c, 0x91, 0xe6, 0xf0, 0x6a, 0x42, 0xbf, 0x14, 0x64, 0xf4, 0x31, 0xc0, - 0xe4, 0x2e, 0x29, 0xdf, 0x55, 0x3b, 0xb9, 0xb1, 0xd5, 0x4f, 0x9e, 0xef, 0xb8, 0x3a, 0xbe, 0x45, - 0xa2, 0x4f, 0x60, 0x31, 0xf2, 0x2d, 0x83, 0x11, 0xa1, 0x5b, 0x79, 0x50, 0x17, 0x84, 0x78, 0x4c, - 0x50, 0x7f, 0x93, 0x8d, 0xef, 0x78, 0x67, 0xaf, 0x61, 0x2d, 0x15, 0xdf, 0xc4, 0x5f, 0x19, 0xe0, - 0xe3, 0xd9, 0x03, 0x9c, 0x00, 0xe3, 0x54, 0xda, 0x12, 0xda, 0xc1, 0x6f, 0x15, 0x78, 0x24, 0x5f, - 0xf8, 0x68, 0x0b, 0xd6, 0xce, 0xb4, 0x56, 0xff, 0x25, 0xd6, 0xf4, 0x97, 0x17, 0xbd, 0x4b, 0xad, - 0xdd, 0x39, 0xeb, 0x68, 0xa7, 0xb5, 0x6f, 0xa1, 0x35, 0x58, 0x3d, 0x6f, 0x9d, 0x68, 0xe7, 0xfa, - 0xa9, 0xd6, 0xd7, 0xda, 0xfd, 0x4e, 0xf7, 0xa2, 0xa6, 0xa0, 0x6d, 0xd8, 0xe8, 0x3d, 0xef, 0xf6, - 0xf5, 0xf6, 0xf3, 0xd6, 0xc5, 0xa7, 0x5a, 0x8a, 0x55, 0x42, 0xbb, 0xb0, 0xa3, 0x7d, 0x7e, 0x79, - 0xde, 0x69, 0x77, 0xfa, 0x7a, 0xbb, 0x7b, 0xd1, 0xd7, 0x2e, 0xfa, 0x29, 0x7e, 0x19, 0x21, 0x58, - 0x39, 0x6b, 0xb5, 0xd3, 0x3a, 0x95, 0x83, 0x00, 0x50, 0xfe, 0x7d, 0x84, 0xbe, 0x03, 0x7b, 0x19, - 0xcb, 0xfa, 0x8b, 0xee, 0x69, 0xd6, 0xbf, 0x65, 0xa8, 0x72, 0x57, 0x62, 0x56, 0x4d, 0x41, 0x2b, - 0x00, 0x67, 0xb8, 0xf5, 0x42, 0x13, 0xeb, 0x52, 0xbc, 0x2f, 0xce, 0x6e, 0x5d, 0x9c, 0xea, 0x29, - 0x46, 0xf9, 0x80, 0x01, 0x4c, 0xae, 0x1e, 0x68, 0x07, 0x36, 0xcf, 0x3b, 0x9f, 0x69, 0xe7, 0x9d, - 0xe7, 0xdd, 0xee, 0x69, 0xc6, 0xc2, 0x63, 0x58, 0xbe, 0xd2, 0xf0, 0x17, 0xfa, 0xcb, 0x0b, 0x2e, - 0xf2, 0x45, 0x4d, 0x41, 0x4b, 0xb0, 0x30, 0x5e, 0x95, 0xe2, 0xd5, 0x65, 0xb7, 0xd7, 0xeb, 0x9c, - 0x9c, 0x6b, 0xb5, 0x32, 0x02, 0x98, 0x97, 0x9c, 0x0a, 0x5a, 0x85, 0x45, 0xae, 0x2a, 0x09, 0x73, - 0x47, 0x7f, 0x52, 0xa0, 0xce, 0x53, 0xd4, 0x49, 0xe5, 0xad, 0x47, 0x82, 0x1b, 0xc7, 0x24, 0xe8, - 0x77, 0x0a, 0x2c, 0xdf, 0x29, 0x0b, 0x54, 0xe4, 0x92, 0x33, 0xed, 0x87, 0xd1, 0xce, 0xd3, 0x44, - 0x31, 0xf5, 0x27, 0xab, 0xd1, 0x4d, 0xfe, 0x64, 0xa9, 0xbb, 0xbf, 0xfe, 0xf7, 0x37, 0x7f, 0x28, - 0xd5, 0xd5, 0xb5, 0xf1, 0xef, 0xb4, 0xf0, 0x58, 0x16, 0x08, 0x39, 0x56, 0x0e, 0x4e, 0xbe, 0x51, - 0xe0, 0xbb, 0x26, 0x1d, 0x3d, 0x6c, 0xfd, 0xe4, 0xe9, 0x7d, 0xbb, 0xb9, 0x8c, 0x5b, 0xe0, 0x52, - 0xf9, 0x12, 0x4b, 0x0c, 0x9b, 0xc6, 0x37, 0xfd, 0x06, 0x0d, 0xec, 0xa6, 0x4d, 0x3c, 0xde, 0x20, - 0x4d, 0xc1, 0x32, 0x7c, 0x27, 0x7c, 0xcb, 0xef, 0xbe, 0x4f, 0x72, 0xc4, 0x3f, 0x97, 0x9e, 0x7d, - 0x2a, 0x40, 0xdb, 0xdc, 0xb1, 0x9c, 0x0b, 0x8d, 0xab, 0xc3, 0x7f, 0x26, 0x32, 0xaf, 0xb8, 0xcc, - 0xab, 0x9c, 0xcc, 0xab, 0xab, 0xc3, 0xeb, 0x79, 0xee, 0xc6, 0x0f, 0xff, 0x1b, 0x00, 0x00, 0xff, - 0xff, 0xa3, 0x97, 0x20, 0x48, 0x74, 0x14, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1/video_intelligence.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1/video_intelligence.pb.go deleted file mode 100644 index c9f821ff..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1/video_intelligence.pb.go +++ /dev/null @@ -1,990 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/videointelligence/v1beta1/video_intelligence.proto - -/* -Package videointelligence is a generated protocol buffer package. - -It is generated from these files: - google/cloud/videointelligence/v1beta1/video_intelligence.proto - -It has these top-level messages: - AnnotateVideoRequest - VideoContext - VideoSegment - LabelLocation - LabelAnnotation - SafeSearchAnnotation - BoundingBox - FaceLocation - FaceAnnotation - VideoAnnotationResults - AnnotateVideoResponse - VideoAnnotationProgress - AnnotateVideoProgress -*/ -package videointelligence - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Video annotation feature. -type Feature int32 - -const ( - // Unspecified. - Feature_FEATURE_UNSPECIFIED Feature = 0 - // Label detection. Detect objects, such as dog or flower. - Feature_LABEL_DETECTION Feature = 1 - // Human face detection and tracking. - Feature_FACE_DETECTION Feature = 2 - // Shot change detection. - Feature_SHOT_CHANGE_DETECTION Feature = 3 - // Safe search detection. - Feature_SAFE_SEARCH_DETECTION Feature = 4 -) - -var Feature_name = map[int32]string{ - 0: "FEATURE_UNSPECIFIED", - 1: "LABEL_DETECTION", - 2: "FACE_DETECTION", - 3: "SHOT_CHANGE_DETECTION", - 4: "SAFE_SEARCH_DETECTION", -} -var Feature_value = map[string]int32{ - "FEATURE_UNSPECIFIED": 0, - "LABEL_DETECTION": 1, - "FACE_DETECTION": 2, - "SHOT_CHANGE_DETECTION": 3, - "SAFE_SEARCH_DETECTION": 4, -} - -func (x Feature) String() string { - return proto.EnumName(Feature_name, int32(x)) -} -func (Feature) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Label level (scope). -type LabelLevel int32 - -const ( - // Unspecified. - LabelLevel_LABEL_LEVEL_UNSPECIFIED LabelLevel = 0 - // Video-level. Corresponds to the whole video. - LabelLevel_VIDEO_LEVEL LabelLevel = 1 - // Segment-level. Corresponds to one of `AnnotateSpec.segments`. - LabelLevel_SEGMENT_LEVEL LabelLevel = 2 - // Shot-level. Corresponds to a single shot (i.e. a series of frames - // without a major camera position or background change). - LabelLevel_SHOT_LEVEL LabelLevel = 3 - // Frame-level. Corresponds to a single video frame. - LabelLevel_FRAME_LEVEL LabelLevel = 4 -) - -var LabelLevel_name = map[int32]string{ - 0: "LABEL_LEVEL_UNSPECIFIED", - 1: "VIDEO_LEVEL", - 2: "SEGMENT_LEVEL", - 3: "SHOT_LEVEL", - 4: "FRAME_LEVEL", -} -var LabelLevel_value = map[string]int32{ - "LABEL_LEVEL_UNSPECIFIED": 0, - "VIDEO_LEVEL": 1, - "SEGMENT_LEVEL": 2, - "SHOT_LEVEL": 3, - "FRAME_LEVEL": 4, -} - -func (x LabelLevel) String() string { - return proto.EnumName(LabelLevel_name, int32(x)) -} -func (LabelLevel) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -// Label detection mode. -type LabelDetectionMode int32 - -const ( - // Unspecified. - LabelDetectionMode_LABEL_DETECTION_MODE_UNSPECIFIED LabelDetectionMode = 0 - // Detect shot-level labels. - LabelDetectionMode_SHOT_MODE LabelDetectionMode = 1 - // Detect frame-level labels. - LabelDetectionMode_FRAME_MODE LabelDetectionMode = 2 - // Detect both shot-level and frame-level labels. - LabelDetectionMode_SHOT_AND_FRAME_MODE LabelDetectionMode = 3 -) - -var LabelDetectionMode_name = map[int32]string{ - 0: "LABEL_DETECTION_MODE_UNSPECIFIED", - 1: "SHOT_MODE", - 2: "FRAME_MODE", - 3: "SHOT_AND_FRAME_MODE", -} -var LabelDetectionMode_value = map[string]int32{ - "LABEL_DETECTION_MODE_UNSPECIFIED": 0, - "SHOT_MODE": 1, - "FRAME_MODE": 2, - "SHOT_AND_FRAME_MODE": 3, -} - -func (x LabelDetectionMode) String() string { - return proto.EnumName(LabelDetectionMode_name, int32(x)) -} -func (LabelDetectionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -// Bucketized representation of likelihood. -type Likelihood int32 - -const ( - // Unknown likelihood. - Likelihood_UNKNOWN Likelihood = 0 - // Very unlikely. - Likelihood_VERY_UNLIKELY Likelihood = 1 - // Unlikely. - Likelihood_UNLIKELY Likelihood = 2 - // Possible. - Likelihood_POSSIBLE Likelihood = 3 - // Likely. - Likelihood_LIKELY Likelihood = 4 - // Very likely. - Likelihood_VERY_LIKELY Likelihood = 5 -) - -var Likelihood_name = map[int32]string{ - 0: "UNKNOWN", - 1: "VERY_UNLIKELY", - 2: "UNLIKELY", - 3: "POSSIBLE", - 4: "LIKELY", - 5: "VERY_LIKELY", -} -var Likelihood_value = map[string]int32{ - "UNKNOWN": 0, - "VERY_UNLIKELY": 1, - "UNLIKELY": 2, - "POSSIBLE": 3, - "LIKELY": 4, - "VERY_LIKELY": 5, -} - -func (x Likelihood) String() string { - return proto.EnumName(Likelihood_name, int32(x)) -} -func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -// Video annotation request. -type AnnotateVideoRequest struct { - // Input video location. Currently, only - // [Google Cloud Storage](https://cloud.google.com/storage/) URIs are - // supported, which must be specified in the following format: - // `gs://bucket-id/object-id` (other URI formats return - // [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see - // [Request URIs](/storage/docs/reference-uris). - // A video URI may include wildcards in `object-id`, and thus identify - // multiple videos. Supported wildcards: '*' to match 0 or more characters; - // '?' to match 1 character. If unset, the input video should be embedded - // in the request as `input_content`. If set, `input_content` should be unset. - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // The video data bytes. Encoding: base64. If unset, the input video(s) - // should be specified via `input_uri`. If set, `input_uri` should be unset. - InputContent string `protobuf:"bytes,6,opt,name=input_content,json=inputContent" json:"input_content,omitempty"` - // Requested video annotation features. - Features []Feature `protobuf:"varint,2,rep,packed,name=features,enum=google.cloud.videointelligence.v1beta1.Feature" json:"features,omitempty"` - // Additional video context and/or feature-specific parameters. - VideoContext *VideoContext `protobuf:"bytes,3,opt,name=video_context,json=videoContext" json:"video_context,omitempty"` - // Optional location where the output (in JSON format) should be stored. - // Currently, only [Google Cloud Storage](https://cloud.google.com/storage/) - // URIs are supported, which must be specified in the following format: - // `gs://bucket-id/object-id` (other URI formats return - // [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see - // [Request URIs](/storage/docs/reference-uris). - OutputUri string `protobuf:"bytes,4,opt,name=output_uri,json=outputUri" json:"output_uri,omitempty"` - // Optional cloud region where annotation should take place. Supported cloud - // regions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region - // is specified, a region will be determined based on video file location. - LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId" json:"location_id,omitempty"` -} - -func (m *AnnotateVideoRequest) Reset() { *m = AnnotateVideoRequest{} } -func (m *AnnotateVideoRequest) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoRequest) ProtoMessage() {} -func (*AnnotateVideoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *AnnotateVideoRequest) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *AnnotateVideoRequest) GetInputContent() string { - if m != nil { - return m.InputContent - } - return "" -} - -func (m *AnnotateVideoRequest) GetFeatures() []Feature { - if m != nil { - return m.Features - } - return nil -} - -func (m *AnnotateVideoRequest) GetVideoContext() *VideoContext { - if m != nil { - return m.VideoContext - } - return nil -} - -func (m *AnnotateVideoRequest) GetOutputUri() string { - if m != nil { - return m.OutputUri - } - return "" -} - -func (m *AnnotateVideoRequest) GetLocationId() string { - if m != nil { - return m.LocationId - } - return "" -} - -// Video context and/or feature-specific parameters. -type VideoContext struct { - // Video segments to annotate. The segments may overlap and are not required - // to be contiguous or span the whole video. If unspecified, each video - // is treated as a single segment. - Segments []*VideoSegment `protobuf:"bytes,1,rep,name=segments" json:"segments,omitempty"` - // If label detection has been requested, what labels should be detected - // in addition to video-level labels or segment-level labels. If unspecified, - // defaults to `SHOT_MODE`. - LabelDetectionMode LabelDetectionMode `protobuf:"varint,2,opt,name=label_detection_mode,json=labelDetectionMode,enum=google.cloud.videointelligence.v1beta1.LabelDetectionMode" json:"label_detection_mode,omitempty"` - // Whether the video has been shot from a stationary (i.e. non-moving) camera. - // When set to true, might improve detection accuracy for moving objects. - StationaryCamera bool `protobuf:"varint,3,opt,name=stationary_camera,json=stationaryCamera" json:"stationary_camera,omitempty"` - // Model to use for label detection. - // Supported values: "latest" and "stable" (the default). - LabelDetectionModel string `protobuf:"bytes,4,opt,name=label_detection_model,json=labelDetectionModel" json:"label_detection_model,omitempty"` - // Model to use for face detection. - // Supported values: "latest" and "stable" (the default). - FaceDetectionModel string `protobuf:"bytes,5,opt,name=face_detection_model,json=faceDetectionModel" json:"face_detection_model,omitempty"` - // Model to use for shot change detection. - // Supported values: "latest" and "stable" (the default). - ShotChangeDetectionModel string `protobuf:"bytes,6,opt,name=shot_change_detection_model,json=shotChangeDetectionModel" json:"shot_change_detection_model,omitempty"` - // Model to use for safe search detection. - // Supported values: "latest" and "stable" (the default). - SafeSearchDetectionModel string `protobuf:"bytes,7,opt,name=safe_search_detection_model,json=safeSearchDetectionModel" json:"safe_search_detection_model,omitempty"` -} - -func (m *VideoContext) Reset() { *m = VideoContext{} } -func (m *VideoContext) String() string { return proto.CompactTextString(m) } -func (*VideoContext) ProtoMessage() {} -func (*VideoContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *VideoContext) GetSegments() []*VideoSegment { - if m != nil { - return m.Segments - } - return nil -} - -func (m *VideoContext) GetLabelDetectionMode() LabelDetectionMode { - if m != nil { - return m.LabelDetectionMode - } - return LabelDetectionMode_LABEL_DETECTION_MODE_UNSPECIFIED -} - -func (m *VideoContext) GetStationaryCamera() bool { - if m != nil { - return m.StationaryCamera - } - return false -} - -func (m *VideoContext) GetLabelDetectionModel() string { - if m != nil { - return m.LabelDetectionModel - } - return "" -} - -func (m *VideoContext) GetFaceDetectionModel() string { - if m != nil { - return m.FaceDetectionModel - } - return "" -} - -func (m *VideoContext) GetShotChangeDetectionModel() string { - if m != nil { - return m.ShotChangeDetectionModel - } - return "" -} - -func (m *VideoContext) GetSafeSearchDetectionModel() string { - if m != nil { - return m.SafeSearchDetectionModel - } - return "" -} - -// Video segment. -type VideoSegment struct { - // Start offset in microseconds (inclusive). Unset means 0. - StartTimeOffset int64 `protobuf:"varint,1,opt,name=start_time_offset,json=startTimeOffset" json:"start_time_offset,omitempty"` - // End offset in microseconds (inclusive). Unset means 0. - EndTimeOffset int64 `protobuf:"varint,2,opt,name=end_time_offset,json=endTimeOffset" json:"end_time_offset,omitempty"` -} - -func (m *VideoSegment) Reset() { *m = VideoSegment{} } -func (m *VideoSegment) String() string { return proto.CompactTextString(m) } -func (*VideoSegment) ProtoMessage() {} -func (*VideoSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *VideoSegment) GetStartTimeOffset() int64 { - if m != nil { - return m.StartTimeOffset - } - return 0 -} - -func (m *VideoSegment) GetEndTimeOffset() int64 { - if m != nil { - return m.EndTimeOffset - } - return 0 -} - -// Label location. -type LabelLocation struct { - // Video segment. Set to [-1, -1] for video-level labels. - // Set to [timestamp, timestamp] for frame-level labels. - // Otherwise, corresponds to one of `AnnotateSpec.segments` - // (if specified) or to shot boundaries (if requested). - Segment *VideoSegment `protobuf:"bytes,1,opt,name=segment" json:"segment,omitempty"` - // Confidence that the label is accurate. Range: [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` - // Label level. - Level LabelLevel `protobuf:"varint,3,opt,name=level,enum=google.cloud.videointelligence.v1beta1.LabelLevel" json:"level,omitempty"` -} - -func (m *LabelLocation) Reset() { *m = LabelLocation{} } -func (m *LabelLocation) String() string { return proto.CompactTextString(m) } -func (*LabelLocation) ProtoMessage() {} -func (*LabelLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *LabelLocation) GetSegment() *VideoSegment { - if m != nil { - return m.Segment - } - return nil -} - -func (m *LabelLocation) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func (m *LabelLocation) GetLevel() LabelLevel { - if m != nil { - return m.Level - } - return LabelLevel_LABEL_LEVEL_UNSPECIFIED -} - -// Label annotation. -type LabelAnnotation struct { - // Textual description, e.g. `Fixed-gear bicycle`. - Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` - // Language code for `description` in BCP-47 format. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Where the label was detected and with what confidence. - Locations []*LabelLocation `protobuf:"bytes,3,rep,name=locations" json:"locations,omitempty"` -} - -func (m *LabelAnnotation) Reset() { *m = LabelAnnotation{} } -func (m *LabelAnnotation) String() string { return proto.CompactTextString(m) } -func (*LabelAnnotation) ProtoMessage() {} -func (*LabelAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *LabelAnnotation) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *LabelAnnotation) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *LabelAnnotation) GetLocations() []*LabelLocation { - if m != nil { - return m.Locations - } - return nil -} - -// Safe search annotation (based on per-frame visual signals only). -// If no unsafe content has been detected in a frame, no annotations -// are present for that frame. If only some types of unsafe content -// have been detected in a frame, the likelihood is set to `UNKNOWN` -// for all other types of unsafe content. -type SafeSearchAnnotation struct { - // Likelihood of adult content. - Adult Likelihood `protobuf:"varint,1,opt,name=adult,enum=google.cloud.videointelligence.v1beta1.Likelihood" json:"adult,omitempty"` - // Likelihood that an obvious modification was made to the original - // version to make it appear funny or offensive. - Spoof Likelihood `protobuf:"varint,2,opt,name=spoof,enum=google.cloud.videointelligence.v1beta1.Likelihood" json:"spoof,omitempty"` - // Likelihood of medical content. - Medical Likelihood `protobuf:"varint,3,opt,name=medical,enum=google.cloud.videointelligence.v1beta1.Likelihood" json:"medical,omitempty"` - // Likelihood of violent content. - Violent Likelihood `protobuf:"varint,4,opt,name=violent,enum=google.cloud.videointelligence.v1beta1.Likelihood" json:"violent,omitempty"` - // Likelihood of racy content. - Racy Likelihood `protobuf:"varint,5,opt,name=racy,enum=google.cloud.videointelligence.v1beta1.Likelihood" json:"racy,omitempty"` - // Video time offset in microseconds. - TimeOffset int64 `protobuf:"varint,6,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` -} - -func (m *SafeSearchAnnotation) Reset() { *m = SafeSearchAnnotation{} } -func (m *SafeSearchAnnotation) String() string { return proto.CompactTextString(m) } -func (*SafeSearchAnnotation) ProtoMessage() {} -func (*SafeSearchAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *SafeSearchAnnotation) GetAdult() Likelihood { - if m != nil { - return m.Adult - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetSpoof() Likelihood { - if m != nil { - return m.Spoof - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetMedical() Likelihood { - if m != nil { - return m.Medical - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetViolent() Likelihood { - if m != nil { - return m.Violent - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetRacy() Likelihood { - if m != nil { - return m.Racy - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetTimeOffset() int64 { - if m != nil { - return m.TimeOffset - } - return 0 -} - -// Bounding box. -type BoundingBox struct { - // Left X coordinate. - Left int32 `protobuf:"varint,1,opt,name=left" json:"left,omitempty"` - // Right X coordinate. - Right int32 `protobuf:"varint,2,opt,name=right" json:"right,omitempty"` - // Bottom Y coordinate. - Bottom int32 `protobuf:"varint,3,opt,name=bottom" json:"bottom,omitempty"` - // Top Y coordinate. - Top int32 `protobuf:"varint,4,opt,name=top" json:"top,omitempty"` -} - -func (m *BoundingBox) Reset() { *m = BoundingBox{} } -func (m *BoundingBox) String() string { return proto.CompactTextString(m) } -func (*BoundingBox) ProtoMessage() {} -func (*BoundingBox) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *BoundingBox) GetLeft() int32 { - if m != nil { - return m.Left - } - return 0 -} - -func (m *BoundingBox) GetRight() int32 { - if m != nil { - return m.Right - } - return 0 -} - -func (m *BoundingBox) GetBottom() int32 { - if m != nil { - return m.Bottom - } - return 0 -} - -func (m *BoundingBox) GetTop() int32 { - if m != nil { - return m.Top - } - return 0 -} - -// Face location. -type FaceLocation struct { - // Bounding box in a frame. - BoundingBox *BoundingBox `protobuf:"bytes,1,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // Video time offset in microseconds. - TimeOffset int64 `protobuf:"varint,2,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` -} - -func (m *FaceLocation) Reset() { *m = FaceLocation{} } -func (m *FaceLocation) String() string { return proto.CompactTextString(m) } -func (*FaceLocation) ProtoMessage() {} -func (*FaceLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *FaceLocation) GetBoundingBox() *BoundingBox { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *FaceLocation) GetTimeOffset() int64 { - if m != nil { - return m.TimeOffset - } - return 0 -} - -// Face annotation. -type FaceAnnotation struct { - // Thumbnail of a representative face view (in JPEG format). Encoding: base64. - Thumbnail string `protobuf:"bytes,1,opt,name=thumbnail" json:"thumbnail,omitempty"` - // All locations where a face was detected. - // Faces are detected and tracked on a per-video basis - // (as opposed to across multiple videos). - Segments []*VideoSegment `protobuf:"bytes,2,rep,name=segments" json:"segments,omitempty"` - // Face locations at one frame per second. - Locations []*FaceLocation `protobuf:"bytes,3,rep,name=locations" json:"locations,omitempty"` -} - -func (m *FaceAnnotation) Reset() { *m = FaceAnnotation{} } -func (m *FaceAnnotation) String() string { return proto.CompactTextString(m) } -func (*FaceAnnotation) ProtoMessage() {} -func (*FaceAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *FaceAnnotation) GetThumbnail() string { - if m != nil { - return m.Thumbnail - } - return "" -} - -func (m *FaceAnnotation) GetSegments() []*VideoSegment { - if m != nil { - return m.Segments - } - return nil -} - -func (m *FaceAnnotation) GetLocations() []*FaceLocation { - if m != nil { - return m.Locations - } - return nil -} - -// Annotation results for a single video. -type VideoAnnotationResults struct { - // Video file location in - // [Google Cloud Storage](https://cloud.google.com/storage/). - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // Label annotations. There is exactly one element for each unique label. - LabelAnnotations []*LabelAnnotation `protobuf:"bytes,2,rep,name=label_annotations,json=labelAnnotations" json:"label_annotations,omitempty"` - // Face annotations. There is exactly one element for each unique face. - FaceAnnotations []*FaceAnnotation `protobuf:"bytes,3,rep,name=face_annotations,json=faceAnnotations" json:"face_annotations,omitempty"` - // Shot annotations. Each shot is represented as a video segment. - ShotAnnotations []*VideoSegment `protobuf:"bytes,4,rep,name=shot_annotations,json=shotAnnotations" json:"shot_annotations,omitempty"` - // Safe search annotations. - SafeSearchAnnotations []*SafeSearchAnnotation `protobuf:"bytes,6,rep,name=safe_search_annotations,json=safeSearchAnnotations" json:"safe_search_annotations,omitempty"` - // If set, indicates an error. Note that for a single `AnnotateVideoRequest` - // some videos may succeed and some may fail. - Error *google_rpc.Status `protobuf:"bytes,5,opt,name=error" json:"error,omitempty"` -} - -func (m *VideoAnnotationResults) Reset() { *m = VideoAnnotationResults{} } -func (m *VideoAnnotationResults) String() string { return proto.CompactTextString(m) } -func (*VideoAnnotationResults) ProtoMessage() {} -func (*VideoAnnotationResults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *VideoAnnotationResults) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *VideoAnnotationResults) GetLabelAnnotations() []*LabelAnnotation { - if m != nil { - return m.LabelAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetFaceAnnotations() []*FaceAnnotation { - if m != nil { - return m.FaceAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetShotAnnotations() []*VideoSegment { - if m != nil { - return m.ShotAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetSafeSearchAnnotations() []*SafeSearchAnnotation { - if m != nil { - return m.SafeSearchAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -// Video annotation response. Included in the `response` -// field of the `Operation` returned by the `GetOperation` -// call of the `google::longrunning::Operations` service. -type AnnotateVideoResponse struct { - // Annotation results for all videos specified in `AnnotateVideoRequest`. - AnnotationResults []*VideoAnnotationResults `protobuf:"bytes,1,rep,name=annotation_results,json=annotationResults" json:"annotation_results,omitempty"` -} - -func (m *AnnotateVideoResponse) Reset() { *m = AnnotateVideoResponse{} } -func (m *AnnotateVideoResponse) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoResponse) ProtoMessage() {} -func (*AnnotateVideoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *AnnotateVideoResponse) GetAnnotationResults() []*VideoAnnotationResults { - if m != nil { - return m.AnnotationResults - } - return nil -} - -// Annotation progress for a single video. -type VideoAnnotationProgress struct { - // Video file location in - // [Google Cloud Storage](https://cloud.google.com/storage/). - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // Approximate percentage processed thus far. - // Guaranteed to be 100 when fully processed. - ProgressPercent int32 `protobuf:"varint,2,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"` - // Time when the request was received. - StartTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time of the most recent update. - UpdateTime *google_protobuf3.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *VideoAnnotationProgress) Reset() { *m = VideoAnnotationProgress{} } -func (m *VideoAnnotationProgress) String() string { return proto.CompactTextString(m) } -func (*VideoAnnotationProgress) ProtoMessage() {} -func (*VideoAnnotationProgress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *VideoAnnotationProgress) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *VideoAnnotationProgress) GetProgressPercent() int32 { - if m != nil { - return m.ProgressPercent - } - return 0 -} - -func (m *VideoAnnotationProgress) GetStartTime() *google_protobuf3.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *VideoAnnotationProgress) GetUpdateTime() *google_protobuf3.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// Video annotation progress. Included in the `metadata` -// field of the `Operation` returned by the `GetOperation` -// call of the `google::longrunning::Operations` service. -type AnnotateVideoProgress struct { - // Progress metadata for all videos specified in `AnnotateVideoRequest`. - AnnotationProgress []*VideoAnnotationProgress `protobuf:"bytes,1,rep,name=annotation_progress,json=annotationProgress" json:"annotation_progress,omitempty"` -} - -func (m *AnnotateVideoProgress) Reset() { *m = AnnotateVideoProgress{} } -func (m *AnnotateVideoProgress) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoProgress) ProtoMessage() {} -func (*AnnotateVideoProgress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *AnnotateVideoProgress) GetAnnotationProgress() []*VideoAnnotationProgress { - if m != nil { - return m.AnnotationProgress - } - return nil -} - -func init() { - proto.RegisterType((*AnnotateVideoRequest)(nil), "google.cloud.videointelligence.v1beta1.AnnotateVideoRequest") - proto.RegisterType((*VideoContext)(nil), "google.cloud.videointelligence.v1beta1.VideoContext") - proto.RegisterType((*VideoSegment)(nil), "google.cloud.videointelligence.v1beta1.VideoSegment") - proto.RegisterType((*LabelLocation)(nil), "google.cloud.videointelligence.v1beta1.LabelLocation") - proto.RegisterType((*LabelAnnotation)(nil), "google.cloud.videointelligence.v1beta1.LabelAnnotation") - proto.RegisterType((*SafeSearchAnnotation)(nil), "google.cloud.videointelligence.v1beta1.SafeSearchAnnotation") - proto.RegisterType((*BoundingBox)(nil), "google.cloud.videointelligence.v1beta1.BoundingBox") - proto.RegisterType((*FaceLocation)(nil), "google.cloud.videointelligence.v1beta1.FaceLocation") - proto.RegisterType((*FaceAnnotation)(nil), "google.cloud.videointelligence.v1beta1.FaceAnnotation") - proto.RegisterType((*VideoAnnotationResults)(nil), "google.cloud.videointelligence.v1beta1.VideoAnnotationResults") - proto.RegisterType((*AnnotateVideoResponse)(nil), "google.cloud.videointelligence.v1beta1.AnnotateVideoResponse") - proto.RegisterType((*VideoAnnotationProgress)(nil), "google.cloud.videointelligence.v1beta1.VideoAnnotationProgress") - proto.RegisterType((*AnnotateVideoProgress)(nil), "google.cloud.videointelligence.v1beta1.AnnotateVideoProgress") - proto.RegisterEnum("google.cloud.videointelligence.v1beta1.Feature", Feature_name, Feature_value) - proto.RegisterEnum("google.cloud.videointelligence.v1beta1.LabelLevel", LabelLevel_name, LabelLevel_value) - proto.RegisterEnum("google.cloud.videointelligence.v1beta1.LabelDetectionMode", LabelDetectionMode_name, LabelDetectionMode_value) - proto.RegisterEnum("google.cloud.videointelligence.v1beta1.Likelihood", Likelihood_name, Likelihood_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for VideoIntelligenceService service - -type VideoIntelligenceServiceClient interface { - // Performs asynchronous video annotation. Progress and results can be - // retrieved through the `google.longrunning.Operations` interface. - // `Operation.metadata` contains `AnnotateVideoProgress` (progress). - // `Operation.response` contains `AnnotateVideoResponse` (results). - AnnotateVideo(ctx context.Context, in *AnnotateVideoRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type videoIntelligenceServiceClient struct { - cc *grpc.ClientConn -} - -func NewVideoIntelligenceServiceClient(cc *grpc.ClientConn) VideoIntelligenceServiceClient { - return &videoIntelligenceServiceClient{cc} -} - -func (c *videoIntelligenceServiceClient) AnnotateVideo(ctx context.Context, in *AnnotateVideoRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.videointelligence.v1beta1.VideoIntelligenceService/AnnotateVideo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for VideoIntelligenceService service - -type VideoIntelligenceServiceServer interface { - // Performs asynchronous video annotation. Progress and results can be - // retrieved through the `google.longrunning.Operations` interface. - // `Operation.metadata` contains `AnnotateVideoProgress` (progress). - // `Operation.response` contains `AnnotateVideoResponse` (results). - AnnotateVideo(context.Context, *AnnotateVideoRequest) (*google_longrunning.Operation, error) -} - -func RegisterVideoIntelligenceServiceServer(s *grpc.Server, srv VideoIntelligenceServiceServer) { - s.RegisterService(&_VideoIntelligenceService_serviceDesc, srv) -} - -func _VideoIntelligenceService_AnnotateVideo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnnotateVideoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VideoIntelligenceServiceServer).AnnotateVideo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.videointelligence.v1beta1.VideoIntelligenceService/AnnotateVideo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VideoIntelligenceServiceServer).AnnotateVideo(ctx, req.(*AnnotateVideoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _VideoIntelligenceService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.videointelligence.v1beta1.VideoIntelligenceService", - HandlerType: (*VideoIntelligenceServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AnnotateVideo", - Handler: _VideoIntelligenceService_AnnotateVideo_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/videointelligence/v1beta1/video_intelligence.proto", -} - -func init() { - proto.RegisterFile("google/cloud/videointelligence/v1beta1/video_intelligence.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 1520 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcb, 0x6f, 0x1b, 0xd5, - 0x1a, 0xef, 0xf8, 0x91, 0xc4, 0x9f, 0x93, 0xd8, 0x39, 0x49, 0x1a, 0xdf, 0xb4, 0xb9, 0x8d, 0xdc, - 0xab, 0x2a, 0x37, 0x57, 0xb2, 0x6f, 0x5d, 0x1e, 0xa2, 0x05, 0x2a, 0xc7, 0x19, 0x37, 0x56, 0x1d, - 0x3b, 0x1a, 0x27, 0xa9, 0x8a, 0x2a, 0x8d, 0xc6, 0x33, 0xc7, 0xce, 0x88, 0xf1, 0x9c, 0x61, 0xe6, - 0x4c, 0xd4, 0x2e, 0x61, 0x01, 0x62, 0x89, 0xf8, 0x2f, 0x90, 0x80, 0x7f, 0x81, 0x2d, 0x6c, 0x61, - 0xc3, 0x8a, 0x0d, 0x7f, 0x04, 0x3b, 0xd0, 0x79, 0x8c, 0x3d, 0xb6, 0x03, 0xb5, 0x03, 0x3b, 0x9f, - 0xef, 0xf1, 0xfb, 0xde, 0xe7, 0x7c, 0x63, 0x78, 0xdc, 0x27, 0xa4, 0xef, 0xe0, 0xb2, 0xe9, 0x90, - 0xd0, 0x2a, 0x5f, 0xda, 0x16, 0x26, 0xb6, 0x4b, 0xb1, 0xe3, 0xd8, 0x7d, 0xec, 0x9a, 0xb8, 0x7c, - 0x79, 0xbf, 0x8b, 0xa9, 0x71, 0x5f, 0x70, 0xf4, 0x38, 0xab, 0xe4, 0xf9, 0x84, 0x12, 0x74, 0x4f, - 0x00, 0x94, 0x38, 0x40, 0x69, 0x0a, 0xa0, 0x24, 0x01, 0xb6, 0x6f, 0x4b, 0x43, 0x86, 0x67, 0x97, - 0x0d, 0xd7, 0x25, 0xd4, 0xa0, 0x36, 0x71, 0x03, 0x81, 0xb2, 0x7d, 0x57, 0x72, 0x1d, 0xe2, 0xf6, - 0xfd, 0xd0, 0x75, 0x6d, 0xb7, 0x5f, 0x26, 0x1e, 0xf6, 0xc7, 0x84, 0xee, 0x48, 0x21, 0x7e, 0xea, - 0x86, 0xbd, 0x32, 0xb5, 0x07, 0x38, 0xa0, 0xc6, 0xc0, 0x93, 0x02, 0x5b, 0x52, 0xc0, 0xf7, 0xcc, - 0x72, 0x40, 0x0d, 0x1a, 0x4a, 0xcd, 0xe2, 0x77, 0x09, 0xd8, 0xa8, 0x0a, 0xa3, 0xf8, 0x9c, 0xb9, - 0xa8, 0xe1, 0x8f, 0x42, 0x1c, 0x50, 0x74, 0x0b, 0x32, 0xb6, 0xeb, 0x85, 0x54, 0x0f, 0x7d, 0xbb, - 0xa0, 0xec, 0x2a, 0x7b, 0x19, 0x6d, 0x89, 0x13, 0xce, 0x7c, 0x1b, 0xdd, 0x85, 0x15, 0xc1, 0x34, - 0x89, 0x4b, 0xb1, 0x4b, 0x0b, 0x0b, 0x5c, 0x60, 0x99, 0x13, 0x6b, 0x82, 0x86, 0x9e, 0xc2, 0x52, - 0x0f, 0x1b, 0x34, 0xf4, 0x71, 0x50, 0x48, 0xec, 0x26, 0xf7, 0x56, 0x2b, 0xe5, 0xd2, 0x6c, 0x29, - 0x29, 0xd5, 0x85, 0x9e, 0x36, 0x04, 0x40, 0xcf, 0x61, 0x45, 0x24, 0x9a, 0x5b, 0x7c, 0x49, 0x0b, - 0xc9, 0x5d, 0x65, 0x2f, 0x5b, 0x79, 0x63, 0x56, 0x44, 0x1e, 0x5b, 0x4d, 0xe8, 0x6a, 0xcb, 0x97, - 0xb1, 0x13, 0xda, 0x01, 0x20, 0x21, 0x8d, 0x42, 0x4d, 0xf1, 0x48, 0x32, 0x82, 0xc2, 0x62, 0xbd, - 0x03, 0x59, 0x87, 0x98, 0x3c, 0xdd, 0xba, 0x6d, 0x15, 0xd2, 0x9c, 0x0f, 0x11, 0xa9, 0x61, 0x15, - 0x7f, 0x49, 0xc2, 0x72, 0x1c, 0x1e, 0x9d, 0xc0, 0x52, 0x80, 0xfb, 0x03, 0xec, 0xd2, 0xa0, 0xa0, - 0xec, 0x26, 0xe7, 0x76, 0xb3, 0x23, 0x94, 0xb5, 0x21, 0x0a, 0x72, 0x60, 0xc3, 0x31, 0xba, 0xd8, - 0xd1, 0x2d, 0x4c, 0xb1, 0xc9, 0x5d, 0x19, 0x10, 0x0b, 0x17, 0x12, 0xbb, 0xca, 0xde, 0x6a, 0xe5, - 0xe1, 0xac, 0xe8, 0x4d, 0x86, 0x71, 0x18, 0x41, 0x1c, 0x13, 0x0b, 0x6b, 0xc8, 0x99, 0xa2, 0xa1, - 0xff, 0xc1, 0x5a, 0x20, 0x9a, 0xd0, 0xf0, 0x5f, 0xe9, 0xa6, 0x31, 0xc0, 0xbe, 0xc1, 0xf3, 0xbd, - 0xa4, 0xe5, 0x47, 0x8c, 0x1a, 0xa7, 0xa3, 0x0a, 0x6c, 0x5e, 0xe5, 0x9a, 0x23, 0x13, 0xb9, 0x3e, - 0x8d, 0xef, 0xa0, 0xff, 0xc3, 0x46, 0xcf, 0x30, 0xf1, 0x94, 0x8a, 0xc8, 0x2d, 0x62, 0xbc, 0x09, - 0x8d, 0xf7, 0xe0, 0x56, 0x70, 0x41, 0xa8, 0x6e, 0x5e, 0x18, 0x6e, 0x7f, 0x5a, 0x51, 0xb4, 0x5f, - 0x81, 0x89, 0xd4, 0xb8, 0xc4, 0x15, 0xea, 0x46, 0x0f, 0xeb, 0x01, 0x36, 0x7c, 0xf3, 0x62, 0x4a, - 0x7d, 0x51, 0xaa, 0x1b, 0x3d, 0xdc, 0xe1, 0x12, 0xe3, 0xea, 0xc5, 0xae, 0x2c, 0xb0, 0x2c, 0x0c, - 0xda, 0xe7, 0x09, 0xf2, 0xa9, 0xce, 0xc6, 0x4c, 0x27, 0xbd, 0x5e, 0x80, 0x29, 0x9f, 0x91, 0xa4, - 0x96, 0xe3, 0x8c, 0x53, 0x7b, 0x80, 0xdb, 0x9c, 0x8c, 0xee, 0x41, 0x0e, 0xbb, 0xd6, 0x98, 0x64, - 0x82, 0x4b, 0xae, 0x60, 0xd7, 0x1a, 0xc9, 0x15, 0xbf, 0x57, 0x60, 0x85, 0xd7, 0xa7, 0x29, 0x3b, - 0x0b, 0xb5, 0x60, 0x51, 0x36, 0x00, 0xc7, 0xbe, 0x6e, 0x17, 0x45, 0x20, 0xe8, 0xdf, 0x00, 0x26, - 0x71, 0x7b, 0xb6, 0xc5, 0x64, 0xb9, 0x13, 0x09, 0x2d, 0x46, 0x41, 0x47, 0x90, 0x76, 0xf0, 0x25, - 0x76, 0x78, 0xa9, 0x57, 0x2b, 0x95, 0xb9, 0xba, 0xaa, 0xc9, 0x34, 0x35, 0x01, 0x50, 0xfc, 0x5a, - 0x81, 0x1c, 0xa7, 0x56, 0x87, 0xd7, 0x19, 0xda, 0x85, 0xac, 0x85, 0x03, 0xd3, 0xb7, 0x3d, 0x76, - 0x94, 0x37, 0x4a, 0x9c, 0xc4, 0x2e, 0x15, 0xc7, 0x70, 0xfb, 0xa1, 0xd1, 0xc7, 0xba, 0x19, 0x75, - 0x77, 0x46, 0x5b, 0x8e, 0x88, 0x35, 0xd6, 0x9b, 0x1d, 0xc8, 0x44, 0xa3, 0x17, 0x14, 0x92, 0x7c, - 0xb8, 0xde, 0x9c, 0xcf, 0x51, 0xa9, 0xad, 0x8d, 0x70, 0x8a, 0xdf, 0x26, 0x61, 0xa3, 0x33, 0x2c, - 0x7e, 0xcc, 0xe9, 0x23, 0x48, 0x1b, 0x56, 0xe8, 0x88, 0x02, 0xcc, 0x93, 0x12, 0xfb, 0x43, 0xec, - 0xd8, 0x17, 0x84, 0x58, 0x9a, 0x00, 0x60, 0x48, 0x81, 0x47, 0x48, 0x4f, 0x8e, 0xec, 0xb5, 0x90, - 0x38, 0x00, 0x6a, 0xc2, 0xe2, 0x00, 0x5b, 0xb6, 0x69, 0xcc, 0x5f, 0xa8, 0x11, 0x56, 0x04, 0xc1, - 0xd0, 0x2e, 0x6d, 0xe2, 0xb0, 0x26, 0x4b, 0x5d, 0x1f, 0x4d, 0x42, 0xa0, 0x3a, 0xa4, 0x7c, 0xc3, - 0x7c, 0xc5, 0x07, 0xf9, 0x7a, 0x50, 0x5c, 0x9f, 0xdd, 0xb9, 0xf1, 0x81, 0x59, 0xe0, 0x03, 0x03, - 0x74, 0x34, 0x2d, 0x06, 0x64, 0x0f, 0x48, 0xe8, 0x5a, 0xb6, 0xdb, 0x3f, 0x20, 0x2f, 0x11, 0x82, - 0x94, 0x83, 0x7b, 0xa2, 0x4c, 0x69, 0x8d, 0xff, 0x46, 0x1b, 0x90, 0xf6, 0xed, 0xfe, 0x85, 0x18, - 0xb7, 0xb4, 0x26, 0x0e, 0xe8, 0x26, 0x2c, 0x74, 0x09, 0xa5, 0x64, 0xc0, 0x93, 0x97, 0xd6, 0xe4, - 0x09, 0xe5, 0x21, 0x49, 0x89, 0xc7, 0x73, 0x90, 0xd6, 0xd8, 0xcf, 0xe2, 0x67, 0x0a, 0x2c, 0xd7, - 0x0d, 0x13, 0x0f, 0xe7, 0xf1, 0x1c, 0x96, 0xbb, 0xd2, 0xa6, 0xde, 0x25, 0x2f, 0xe5, 0x50, 0x3e, - 0x98, 0x35, 0xc8, 0x98, 0xbf, 0x5a, 0xb6, 0x1b, 0x73, 0x7e, 0x22, 0xd8, 0xc4, 0x54, 0xb0, 0x3f, - 0x29, 0xb0, 0xca, 0x3c, 0x89, 0x35, 0xe6, 0x6d, 0xc8, 0xd0, 0x8b, 0x70, 0xd0, 0x75, 0x0d, 0xdb, - 0x91, 0xb3, 0x34, 0x22, 0x8c, 0x3d, 0x40, 0x89, 0x7f, 0xe4, 0x01, 0xd2, 0xa6, 0xc7, 0x6e, 0x66, - 0xc8, 0x78, 0x12, 0xe3, 0x53, 0xf7, 0x7b, 0x12, 0x6e, 0x72, 0x73, 0xa3, 0xb8, 0x34, 0x1c, 0x84, - 0x0e, 0x0d, 0xfe, 0x7a, 0xf9, 0xb0, 0x60, 0x4d, 0xbc, 0x38, 0xb1, 0x65, 0x49, 0x86, 0xf9, 0xf6, - 0x5c, 0x57, 0x41, 0xcc, 0x6e, 0xde, 0x19, 0x27, 0x04, 0xc8, 0x80, 0x3c, 0x7f, 0xa3, 0xe2, 0x46, - 0x44, 0xe0, 0x6f, 0xcd, 0x13, 0x78, 0xcc, 0x46, 0xae, 0x37, 0x76, 0x0e, 0x90, 0x0e, 0x79, 0xfe, - 0xa8, 0xc5, 0x4d, 0xa4, 0xfe, 0x46, 0xb9, 0x72, 0x0c, 0x2d, 0x6e, 0x80, 0xc2, 0x56, 0xfc, 0xd9, - 0x8b, 0xdb, 0x59, 0xe0, 0x76, 0xde, 0x9d, 0xd5, 0xce, 0x55, 0xb7, 0xa3, 0xb6, 0x19, 0x5c, 0x41, - 0x0d, 0xd0, 0x1e, 0xa4, 0xb1, 0xef, 0x13, 0x9f, 0xdf, 0x02, 0xd9, 0x0a, 0x8a, 0x6c, 0xf8, 0x9e, - 0x59, 0xea, 0xf0, 0xdd, 0x53, 0x13, 0x02, 0xc5, 0x4f, 0x15, 0xd8, 0x9c, 0x58, 0x3e, 0x03, 0x8f, - 0xb8, 0x01, 0x46, 0x03, 0x40, 0x23, 0x6f, 0x75, 0x5f, 0xb4, 0x85, 0x5c, 0xa6, 0xde, 0x9f, 0x2b, - 0x39, 0x53, 0xcd, 0xa5, 0xad, 0x19, 0x93, 0xa4, 0xe2, 0xcf, 0x0a, 0x6c, 0x4d, 0x48, 0x9f, 0xf8, - 0xa4, 0xef, 0xe3, 0xe0, 0x35, 0xbd, 0xf8, 0x5f, 0xc8, 0x7b, 0x52, 0x50, 0xf7, 0xb0, 0x6f, 0xb2, - 0x7b, 0x54, 0xdc, 0x37, 0xb9, 0x88, 0x7e, 0x22, 0xc8, 0xe8, 0x1d, 0x80, 0xd1, 0xd2, 0x20, 0xd7, - 0xd7, 0xed, 0x28, 0x94, 0x68, 0x71, 0x2f, 0x9d, 0x46, 0x8b, 0xbb, 0x96, 0x19, 0x6e, 0x12, 0xe8, - 0x11, 0x64, 0x43, 0xcf, 0x32, 0x28, 0x16, 0xba, 0xa9, 0xd7, 0xea, 0x82, 0x10, 0x67, 0x84, 0xe2, - 0xe7, 0x93, 0x49, 0x1e, 0x46, 0xe6, 0xc1, 0x7a, 0x2c, 0xc9, 0x91, 0xbf, 0x32, 0xcb, 0x8f, 0xaf, - 0x99, 0xe5, 0x08, 0x5d, 0x8b, 0x15, 0x30, 0xa2, 0xed, 0x7f, 0xac, 0xc0, 0xa2, 0xdc, 0xed, 0xd1, - 0x16, 0xac, 0xd7, 0xd5, 0xea, 0xe9, 0x99, 0xa6, 0xea, 0x67, 0xad, 0xce, 0x89, 0x5a, 0x6b, 0xd4, - 0x1b, 0xea, 0x61, 0xfe, 0x06, 0x5a, 0x87, 0x5c, 0xb3, 0x7a, 0xa0, 0x36, 0xf5, 0x43, 0xf5, 0x54, - 0xad, 0x9d, 0x36, 0xda, 0xad, 0xbc, 0x82, 0x10, 0xac, 0xd6, 0xab, 0x35, 0x35, 0x46, 0x4b, 0xa0, - 0x7f, 0xc1, 0x66, 0xe7, 0xa8, 0x7d, 0xaa, 0xd7, 0x8e, 0xaa, 0xad, 0x27, 0x71, 0x56, 0x92, 0xb3, - 0xaa, 0x75, 0x55, 0xef, 0xa8, 0x55, 0xad, 0x76, 0x14, 0x63, 0xa5, 0xf6, 0x5d, 0x80, 0xd1, 0xc6, - 0x82, 0x6e, 0xc1, 0x96, 0x30, 0xd6, 0x54, 0xcf, 0xd5, 0xe6, 0x84, 0x27, 0x39, 0xc8, 0x9e, 0x37, - 0x0e, 0xd5, 0xb6, 0x60, 0xe6, 0x15, 0xb4, 0x06, 0x2b, 0x1d, 0xf5, 0xc9, 0xb1, 0xda, 0x3a, 0x95, - 0xa4, 0x04, 0x5a, 0x05, 0xe0, 0x4e, 0x88, 0x73, 0x92, 0xe9, 0xd4, 0xb5, 0xea, 0xb1, 0x2a, 0x09, - 0xa9, 0x7d, 0x1f, 0xd0, 0xf4, 0xde, 0x8d, 0xfe, 0x03, 0xbb, 0x13, 0x41, 0xea, 0xc7, 0xed, 0xc3, - 0xc9, 0x54, 0xac, 0x40, 0x86, 0x83, 0x33, 0x56, 0x5e, 0x61, 0xb6, 0x04, 0x36, 0x3f, 0x27, 0x58, - 0x0a, 0x39, 0xbb, 0xda, 0x3a, 0xd4, 0x63, 0x8c, 0xe4, 0x3e, 0x06, 0x18, 0xbd, 0xa9, 0x28, 0x0b, - 0x8b, 0x67, 0xad, 0xa7, 0xad, 0xf6, 0xb3, 0x56, 0xfe, 0x06, 0x0b, 0xe1, 0x5c, 0xd5, 0x9e, 0xeb, - 0x67, 0xad, 0x66, 0xe3, 0xa9, 0xda, 0x7c, 0x9e, 0x57, 0xd0, 0x32, 0x2c, 0x0d, 0x4f, 0x09, 0x76, - 0x3a, 0x69, 0x77, 0x3a, 0x8d, 0x83, 0xa6, 0x9a, 0x4f, 0x22, 0x80, 0x05, 0xc9, 0x49, 0xf1, 0x74, - 0x30, 0x55, 0x49, 0x48, 0x57, 0xbe, 0x51, 0xa0, 0xc0, 0xcb, 0xdf, 0x88, 0x35, 0x46, 0x07, 0xfb, - 0x97, 0xb6, 0x89, 0xd1, 0x17, 0x0a, 0xac, 0x8c, 0xf5, 0x1d, 0x9a, 0xf9, 0xb6, 0xb9, 0xea, 0x83, - 0x74, 0x7b, 0x27, 0xd2, 0x8e, 0x7d, 0x09, 0x97, 0xda, 0xd1, 0x97, 0x70, 0xf1, 0xee, 0x27, 0x3f, - 0xfe, 0xfa, 0x65, 0x62, 0xa7, 0x58, 0x18, 0xff, 0x30, 0x0f, 0x1e, 0xca, 0x36, 0xc4, 0x0f, 0x95, - 0xfd, 0x83, 0xdf, 0x14, 0xd8, 0x37, 0xc9, 0x60, 0x46, 0x3f, 0x0e, 0x76, 0xfe, 0x2c, 0xb8, 0x13, - 0x36, 0x72, 0x27, 0xca, 0x07, 0xcf, 0x24, 0x50, 0x9f, 0xb0, 0x25, 0xb5, 0x44, 0xfc, 0x7e, 0xb9, - 0x8f, 0x5d, 0x3e, 0x90, 0x65, 0xc1, 0x32, 0x3c, 0x3b, 0x78, 0xdd, 0x5f, 0x08, 0x8f, 0xa6, 0x38, - 0x5f, 0x25, 0xee, 0x3d, 0x11, 0xc8, 0x35, 0xee, 0xe2, 0x94, 0x1f, 0xa5, 0xf3, 0xfb, 0x07, 0x4c, - 0xf5, 0x87, 0x48, 0xf0, 0x05, 0x17, 0x7c, 0x31, 0x25, 0xf8, 0xe2, 0x5c, 0xd8, 0xe8, 0x2e, 0x70, - 0xaf, 0x1e, 0xfc, 0x11, 0x00, 0x00, 0xff, 0xff, 0xba, 0xc2, 0xb0, 0xa0, 0xd7, 0x10, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2/video_intelligence.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2/video_intelligence.pb.go deleted file mode 100644 index cf6b2222..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2/video_intelligence.pb.go +++ /dev/null @@ -1,1159 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/videointelligence/v1beta2/video_intelligence.proto - -/* -Package videointelligence is a generated protocol buffer package. - -It is generated from these files: - google/cloud/videointelligence/v1beta2/video_intelligence.proto - -It has these top-level messages: - AnnotateVideoRequest - VideoContext - LabelDetectionConfig - ShotChangeDetectionConfig - ExplicitContentDetectionConfig - FaceDetectionConfig - VideoSegment - LabelSegment - LabelFrame - Entity - LabelAnnotation - ExplicitContentFrame - ExplicitContentAnnotation - NormalizedBoundingBox - FaceSegment - FaceFrame - FaceAnnotation - VideoAnnotationResults - AnnotateVideoResponse - VideoAnnotationProgress - AnnotateVideoProgress -*/ -package videointelligence - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Video annotation feature. -type Feature int32 - -const ( - // Unspecified. - Feature_FEATURE_UNSPECIFIED Feature = 0 - // Label detection. Detect objects, such as dog or flower. - Feature_LABEL_DETECTION Feature = 1 - // Shot change detection. - Feature_SHOT_CHANGE_DETECTION Feature = 2 - // Explicit content detection. - Feature_EXPLICIT_CONTENT_DETECTION Feature = 3 - // Human face detection and tracking. - Feature_FACE_DETECTION Feature = 4 -) - -var Feature_name = map[int32]string{ - 0: "FEATURE_UNSPECIFIED", - 1: "LABEL_DETECTION", - 2: "SHOT_CHANGE_DETECTION", - 3: "EXPLICIT_CONTENT_DETECTION", - 4: "FACE_DETECTION", -} -var Feature_value = map[string]int32{ - "FEATURE_UNSPECIFIED": 0, - "LABEL_DETECTION": 1, - "SHOT_CHANGE_DETECTION": 2, - "EXPLICIT_CONTENT_DETECTION": 3, - "FACE_DETECTION": 4, -} - -func (x Feature) String() string { - return proto.EnumName(Feature_name, int32(x)) -} -func (Feature) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Label detection mode. -type LabelDetectionMode int32 - -const ( - // Unspecified. - LabelDetectionMode_LABEL_DETECTION_MODE_UNSPECIFIED LabelDetectionMode = 0 - // Detect shot-level labels. - LabelDetectionMode_SHOT_MODE LabelDetectionMode = 1 - // Detect frame-level labels. - LabelDetectionMode_FRAME_MODE LabelDetectionMode = 2 - // Detect both shot-level and frame-level labels. - LabelDetectionMode_SHOT_AND_FRAME_MODE LabelDetectionMode = 3 -) - -var LabelDetectionMode_name = map[int32]string{ - 0: "LABEL_DETECTION_MODE_UNSPECIFIED", - 1: "SHOT_MODE", - 2: "FRAME_MODE", - 3: "SHOT_AND_FRAME_MODE", -} -var LabelDetectionMode_value = map[string]int32{ - "LABEL_DETECTION_MODE_UNSPECIFIED": 0, - "SHOT_MODE": 1, - "FRAME_MODE": 2, - "SHOT_AND_FRAME_MODE": 3, -} - -func (x LabelDetectionMode) String() string { - return proto.EnumName(LabelDetectionMode_name, int32(x)) -} -func (LabelDetectionMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -// Bucketized representation of likelihood. -type Likelihood int32 - -const ( - // Unspecified likelihood. - Likelihood_LIKELIHOOD_UNSPECIFIED Likelihood = 0 - // Very unlikely. - Likelihood_VERY_UNLIKELY Likelihood = 1 - // Unlikely. - Likelihood_UNLIKELY Likelihood = 2 - // Possible. - Likelihood_POSSIBLE Likelihood = 3 - // Likely. - Likelihood_LIKELY Likelihood = 4 - // Very likely. - Likelihood_VERY_LIKELY Likelihood = 5 -) - -var Likelihood_name = map[int32]string{ - 0: "LIKELIHOOD_UNSPECIFIED", - 1: "VERY_UNLIKELY", - 2: "UNLIKELY", - 3: "POSSIBLE", - 4: "LIKELY", - 5: "VERY_LIKELY", -} -var Likelihood_value = map[string]int32{ - "LIKELIHOOD_UNSPECIFIED": 0, - "VERY_UNLIKELY": 1, - "UNLIKELY": 2, - "POSSIBLE": 3, - "LIKELY": 4, - "VERY_LIKELY": 5, -} - -func (x Likelihood) String() string { - return proto.EnumName(Likelihood_name, int32(x)) -} -func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -// Video annotation request. -type AnnotateVideoRequest struct { - // Input video location. Currently, only - // [Google Cloud Storage](https://cloud.google.com/storage/) URIs are - // supported, which must be specified in the following format: - // `gs://bucket-id/object-id` (other URI formats return - // [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see - // [Request URIs](/storage/docs/reference-uris). - // A video URI may include wildcards in `object-id`, and thus identify - // multiple videos. Supported wildcards: '*' to match 0 or more characters; - // '?' to match 1 character. If unset, the input video should be embedded - // in the request as `input_content`. If set, `input_content` should be unset. - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // The video data bytes. - // If unset, the input video(s) should be specified via `input_uri`. - // If set, `input_uri` should be unset. - InputContent []byte `protobuf:"bytes,6,opt,name=input_content,json=inputContent,proto3" json:"input_content,omitempty"` - // Requested video annotation features. - Features []Feature `protobuf:"varint,2,rep,packed,name=features,enum=google.cloud.videointelligence.v1beta2.Feature" json:"features,omitempty"` - // Additional video context and/or feature-specific parameters. - VideoContext *VideoContext `protobuf:"bytes,3,opt,name=video_context,json=videoContext" json:"video_context,omitempty"` - // Optional location where the output (in JSON format) should be stored. - // Currently, only [Google Cloud Storage](https://cloud.google.com/storage/) - // URIs are supported, which must be specified in the following format: - // `gs://bucket-id/object-id` (other URI formats return - // [google.rpc.Code.INVALID_ARGUMENT][google.rpc.Code.INVALID_ARGUMENT]). For more information, see - // [Request URIs](/storage/docs/reference-uris). - OutputUri string `protobuf:"bytes,4,opt,name=output_uri,json=outputUri" json:"output_uri,omitempty"` - // Optional cloud region where annotation should take place. Supported cloud - // regions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region - // is specified, a region will be determined based on video file location. - LocationId string `protobuf:"bytes,5,opt,name=location_id,json=locationId" json:"location_id,omitempty"` -} - -func (m *AnnotateVideoRequest) Reset() { *m = AnnotateVideoRequest{} } -func (m *AnnotateVideoRequest) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoRequest) ProtoMessage() {} -func (*AnnotateVideoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *AnnotateVideoRequest) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *AnnotateVideoRequest) GetInputContent() []byte { - if m != nil { - return m.InputContent - } - return nil -} - -func (m *AnnotateVideoRequest) GetFeatures() []Feature { - if m != nil { - return m.Features - } - return nil -} - -func (m *AnnotateVideoRequest) GetVideoContext() *VideoContext { - if m != nil { - return m.VideoContext - } - return nil -} - -func (m *AnnotateVideoRequest) GetOutputUri() string { - if m != nil { - return m.OutputUri - } - return "" -} - -func (m *AnnotateVideoRequest) GetLocationId() string { - if m != nil { - return m.LocationId - } - return "" -} - -// Video context and/or feature-specific parameters. -type VideoContext struct { - // Video segments to annotate. The segments may overlap and are not required - // to be contiguous or span the whole video. If unspecified, each video - // is treated as a single segment. - Segments []*VideoSegment `protobuf:"bytes,1,rep,name=segments" json:"segments,omitempty"` - // Config for LABEL_DETECTION. - LabelDetectionConfig *LabelDetectionConfig `protobuf:"bytes,2,opt,name=label_detection_config,json=labelDetectionConfig" json:"label_detection_config,omitempty"` - // Config for SHOT_CHANGE_DETECTION. - ShotChangeDetectionConfig *ShotChangeDetectionConfig `protobuf:"bytes,3,opt,name=shot_change_detection_config,json=shotChangeDetectionConfig" json:"shot_change_detection_config,omitempty"` - // Config for EXPLICIT_CONTENT_DETECTION. - ExplicitContentDetectionConfig *ExplicitContentDetectionConfig `protobuf:"bytes,4,opt,name=explicit_content_detection_config,json=explicitContentDetectionConfig" json:"explicit_content_detection_config,omitempty"` - // Config for FACE_DETECTION. - FaceDetectionConfig *FaceDetectionConfig `protobuf:"bytes,5,opt,name=face_detection_config,json=faceDetectionConfig" json:"face_detection_config,omitempty"` -} - -func (m *VideoContext) Reset() { *m = VideoContext{} } -func (m *VideoContext) String() string { return proto.CompactTextString(m) } -func (*VideoContext) ProtoMessage() {} -func (*VideoContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *VideoContext) GetSegments() []*VideoSegment { - if m != nil { - return m.Segments - } - return nil -} - -func (m *VideoContext) GetLabelDetectionConfig() *LabelDetectionConfig { - if m != nil { - return m.LabelDetectionConfig - } - return nil -} - -func (m *VideoContext) GetShotChangeDetectionConfig() *ShotChangeDetectionConfig { - if m != nil { - return m.ShotChangeDetectionConfig - } - return nil -} - -func (m *VideoContext) GetExplicitContentDetectionConfig() *ExplicitContentDetectionConfig { - if m != nil { - return m.ExplicitContentDetectionConfig - } - return nil -} - -func (m *VideoContext) GetFaceDetectionConfig() *FaceDetectionConfig { - if m != nil { - return m.FaceDetectionConfig - } - return nil -} - -// Config for LABEL_DETECTION. -type LabelDetectionConfig struct { - // What labels should be detected with LABEL_DETECTION, in addition to - // video-level labels or segment-level labels. - // If unspecified, defaults to `SHOT_MODE`. - LabelDetectionMode LabelDetectionMode `protobuf:"varint,1,opt,name=label_detection_mode,json=labelDetectionMode,enum=google.cloud.videointelligence.v1beta2.LabelDetectionMode" json:"label_detection_mode,omitempty"` - // Whether the video has been shot from a stationary (i.e. non-moving) camera. - // When set to true, might improve detection accuracy for moving objects. - // Should be used with `SHOT_AND_FRAME_MODE` enabled. - StationaryCamera bool `protobuf:"varint,2,opt,name=stationary_camera,json=stationaryCamera" json:"stationary_camera,omitempty"` - // Model to use for label detection. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,3,opt,name=model" json:"model,omitempty"` -} - -func (m *LabelDetectionConfig) Reset() { *m = LabelDetectionConfig{} } -func (m *LabelDetectionConfig) String() string { return proto.CompactTextString(m) } -func (*LabelDetectionConfig) ProtoMessage() {} -func (*LabelDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *LabelDetectionConfig) GetLabelDetectionMode() LabelDetectionMode { - if m != nil { - return m.LabelDetectionMode - } - return LabelDetectionMode_LABEL_DETECTION_MODE_UNSPECIFIED -} - -func (m *LabelDetectionConfig) GetStationaryCamera() bool { - if m != nil { - return m.StationaryCamera - } - return false -} - -func (m *LabelDetectionConfig) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -// Config for SHOT_CHANGE_DETECTION. -type ShotChangeDetectionConfig struct { - // Model to use for shot change detection. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` -} - -func (m *ShotChangeDetectionConfig) Reset() { *m = ShotChangeDetectionConfig{} } -func (m *ShotChangeDetectionConfig) String() string { return proto.CompactTextString(m) } -func (*ShotChangeDetectionConfig) ProtoMessage() {} -func (*ShotChangeDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ShotChangeDetectionConfig) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -// Config for EXPLICIT_CONTENT_DETECTION. -type ExplicitContentDetectionConfig struct { - // Model to use for explicit content detection. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` -} - -func (m *ExplicitContentDetectionConfig) Reset() { *m = ExplicitContentDetectionConfig{} } -func (m *ExplicitContentDetectionConfig) String() string { return proto.CompactTextString(m) } -func (*ExplicitContentDetectionConfig) ProtoMessage() {} -func (*ExplicitContentDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ExplicitContentDetectionConfig) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -// Config for FACE_DETECTION. -type FaceDetectionConfig struct { - // Model to use for face detection. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` - // Whether bounding boxes be included in the face annotation output. - IncludeBoundingBoxes bool `protobuf:"varint,2,opt,name=include_bounding_boxes,json=includeBoundingBoxes" json:"include_bounding_boxes,omitempty"` -} - -func (m *FaceDetectionConfig) Reset() { *m = FaceDetectionConfig{} } -func (m *FaceDetectionConfig) String() string { return proto.CompactTextString(m) } -func (*FaceDetectionConfig) ProtoMessage() {} -func (*FaceDetectionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *FaceDetectionConfig) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -func (m *FaceDetectionConfig) GetIncludeBoundingBoxes() bool { - if m != nil { - return m.IncludeBoundingBoxes - } - return false -} - -// Video segment. -type VideoSegment struct { - // Time-offset, relative to the beginning of the video, - // corresponding to the start of the segment (inclusive). - StartTimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=start_time_offset,json=startTimeOffset" json:"start_time_offset,omitempty"` - // Time-offset, relative to the beginning of the video, - // corresponding to the end of the segment (inclusive). - EndTimeOffset *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=end_time_offset,json=endTimeOffset" json:"end_time_offset,omitempty"` -} - -func (m *VideoSegment) Reset() { *m = VideoSegment{} } -func (m *VideoSegment) String() string { return proto.CompactTextString(m) } -func (*VideoSegment) ProtoMessage() {} -func (*VideoSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *VideoSegment) GetStartTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.StartTimeOffset - } - return nil -} - -func (m *VideoSegment) GetEndTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.EndTimeOffset - } - return nil -} - -// Video segment level annotation results for label detection. -type LabelSegment struct { - // Video segment where a label was detected. - Segment *VideoSegment `protobuf:"bytes,1,opt,name=segment" json:"segment,omitempty"` - // Confidence that the label is accurate. Range: [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *LabelSegment) Reset() { *m = LabelSegment{} } -func (m *LabelSegment) String() string { return proto.CompactTextString(m) } -func (*LabelSegment) ProtoMessage() {} -func (*LabelSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *LabelSegment) GetSegment() *VideoSegment { - if m != nil { - return m.Segment - } - return nil -} - -func (m *LabelSegment) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Video frame level annotation results for label detection. -type LabelFrame struct { - // Time-offset, relative to the beginning of the video, corresponding to the - // video frame for this location. - TimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` - // Confidence that the label is accurate. Range: [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *LabelFrame) Reset() { *m = LabelFrame{} } -func (m *LabelFrame) String() string { return proto.CompactTextString(m) } -func (*LabelFrame) ProtoMessage() {} -func (*LabelFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *LabelFrame) GetTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.TimeOffset - } - return nil -} - -func (m *LabelFrame) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Detected entity from video analysis. -type Entity struct { - // Opaque entity ID. Some IDs may be available in - // [Google Knowledge Graph Search - // API](https://developers.google.com/knowledge-graph/). - EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` - // Textual description, e.g. `Fixed-gear bicycle`. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Language code for `description` in BCP-47 format. - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *Entity) Reset() { *m = Entity{} } -func (m *Entity) String() string { return proto.CompactTextString(m) } -func (*Entity) ProtoMessage() {} -func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *Entity) GetEntityId() string { - if m != nil { - return m.EntityId - } - return "" -} - -func (m *Entity) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Entity) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// Label annotation. -type LabelAnnotation struct { - // Detected entity. - Entity *Entity `protobuf:"bytes,1,opt,name=entity" json:"entity,omitempty"` - // Common categories for the detected entity. - // E.g. when the label is `Terrier` the category is likely `dog`. And in some - // cases there might be more than one categories e.g. `Terrier` could also be - // a `pet`. - CategoryEntities []*Entity `protobuf:"bytes,2,rep,name=category_entities,json=categoryEntities" json:"category_entities,omitempty"` - // All video segments where a label was detected. - Segments []*LabelSegment `protobuf:"bytes,3,rep,name=segments" json:"segments,omitempty"` - // All video frames where a label was detected. - Frames []*LabelFrame `protobuf:"bytes,4,rep,name=frames" json:"frames,omitempty"` -} - -func (m *LabelAnnotation) Reset() { *m = LabelAnnotation{} } -func (m *LabelAnnotation) String() string { return proto.CompactTextString(m) } -func (*LabelAnnotation) ProtoMessage() {} -func (*LabelAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *LabelAnnotation) GetEntity() *Entity { - if m != nil { - return m.Entity - } - return nil -} - -func (m *LabelAnnotation) GetCategoryEntities() []*Entity { - if m != nil { - return m.CategoryEntities - } - return nil -} - -func (m *LabelAnnotation) GetSegments() []*LabelSegment { - if m != nil { - return m.Segments - } - return nil -} - -func (m *LabelAnnotation) GetFrames() []*LabelFrame { - if m != nil { - return m.Frames - } - return nil -} - -// Video frame level annotation results for explicit content. -type ExplicitContentFrame struct { - // Time-offset, relative to the beginning of the video, corresponding to the - // video frame for this location. - TimeOffset *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` - // Likelihood of the pornography content.. - PornographyLikelihood Likelihood `protobuf:"varint,2,opt,name=pornography_likelihood,json=pornographyLikelihood,enum=google.cloud.videointelligence.v1beta2.Likelihood" json:"pornography_likelihood,omitempty"` -} - -func (m *ExplicitContentFrame) Reset() { *m = ExplicitContentFrame{} } -func (m *ExplicitContentFrame) String() string { return proto.CompactTextString(m) } -func (*ExplicitContentFrame) ProtoMessage() {} -func (*ExplicitContentFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ExplicitContentFrame) GetTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.TimeOffset - } - return nil -} - -func (m *ExplicitContentFrame) GetPornographyLikelihood() Likelihood { - if m != nil { - return m.PornographyLikelihood - } - return Likelihood_LIKELIHOOD_UNSPECIFIED -} - -// Explicit content annotation (based on per-frame visual signals only). -// If no explicit content has been detected in a frame, no annotations are -// present for that frame. -type ExplicitContentAnnotation struct { - // All video frames where explicit content was detected. - Frames []*ExplicitContentFrame `protobuf:"bytes,1,rep,name=frames" json:"frames,omitempty"` -} - -func (m *ExplicitContentAnnotation) Reset() { *m = ExplicitContentAnnotation{} } -func (m *ExplicitContentAnnotation) String() string { return proto.CompactTextString(m) } -func (*ExplicitContentAnnotation) ProtoMessage() {} -func (*ExplicitContentAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *ExplicitContentAnnotation) GetFrames() []*ExplicitContentFrame { - if m != nil { - return m.Frames - } - return nil -} - -// Normalized bounding box. -// The normalized vertex coordinates are relative to the original image. -// Range: [0, 1]. -type NormalizedBoundingBox struct { - // Left X coordinate. - Left float32 `protobuf:"fixed32,1,opt,name=left" json:"left,omitempty"` - // Top Y coordinate. - Top float32 `protobuf:"fixed32,2,opt,name=top" json:"top,omitempty"` - // Right X coordinate. - Right float32 `protobuf:"fixed32,3,opt,name=right" json:"right,omitempty"` - // Bottom Y coordinate. - Bottom float32 `protobuf:"fixed32,4,opt,name=bottom" json:"bottom,omitempty"` -} - -func (m *NormalizedBoundingBox) Reset() { *m = NormalizedBoundingBox{} } -func (m *NormalizedBoundingBox) String() string { return proto.CompactTextString(m) } -func (*NormalizedBoundingBox) ProtoMessage() {} -func (*NormalizedBoundingBox) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *NormalizedBoundingBox) GetLeft() float32 { - if m != nil { - return m.Left - } - return 0 -} - -func (m *NormalizedBoundingBox) GetTop() float32 { - if m != nil { - return m.Top - } - return 0 -} - -func (m *NormalizedBoundingBox) GetRight() float32 { - if m != nil { - return m.Right - } - return 0 -} - -func (m *NormalizedBoundingBox) GetBottom() float32 { - if m != nil { - return m.Bottom - } - return 0 -} - -// Video segment level annotation results for face detection. -type FaceSegment struct { - // Video segment where a face was detected. - Segment *VideoSegment `protobuf:"bytes,1,opt,name=segment" json:"segment,omitempty"` -} - -func (m *FaceSegment) Reset() { *m = FaceSegment{} } -func (m *FaceSegment) String() string { return proto.CompactTextString(m) } -func (*FaceSegment) ProtoMessage() {} -func (*FaceSegment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *FaceSegment) GetSegment() *VideoSegment { - if m != nil { - return m.Segment - } - return nil -} - -// Video frame level annotation results for face detection. -type FaceFrame struct { - // Normalized Bounding boxes in a frame. - // There can be more than one boxes if the same face is detected in multiple - // locations within the current frame. - NormalizedBoundingBoxes []*NormalizedBoundingBox `protobuf:"bytes,1,rep,name=normalized_bounding_boxes,json=normalizedBoundingBoxes" json:"normalized_bounding_boxes,omitempty"` - // Time-offset, relative to the beginning of the video, - // corresponding to the video frame for this location. - TimeOffset *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=time_offset,json=timeOffset" json:"time_offset,omitempty"` -} - -func (m *FaceFrame) Reset() { *m = FaceFrame{} } -func (m *FaceFrame) String() string { return proto.CompactTextString(m) } -func (*FaceFrame) ProtoMessage() {} -func (*FaceFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *FaceFrame) GetNormalizedBoundingBoxes() []*NormalizedBoundingBox { - if m != nil { - return m.NormalizedBoundingBoxes - } - return nil -} - -func (m *FaceFrame) GetTimeOffset() *google_protobuf3.Duration { - if m != nil { - return m.TimeOffset - } - return nil -} - -// Face annotation. -type FaceAnnotation struct { - // Thumbnail of a representative face view (in JPEG format). - Thumbnail []byte `protobuf:"bytes,1,opt,name=thumbnail,proto3" json:"thumbnail,omitempty"` - // All video segments where a face was detected. - Segments []*FaceSegment `protobuf:"bytes,2,rep,name=segments" json:"segments,omitempty"` - // All video frames where a face was detected. - Frames []*FaceFrame `protobuf:"bytes,3,rep,name=frames" json:"frames,omitempty"` -} - -func (m *FaceAnnotation) Reset() { *m = FaceAnnotation{} } -func (m *FaceAnnotation) String() string { return proto.CompactTextString(m) } -func (*FaceAnnotation) ProtoMessage() {} -func (*FaceAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *FaceAnnotation) GetThumbnail() []byte { - if m != nil { - return m.Thumbnail - } - return nil -} - -func (m *FaceAnnotation) GetSegments() []*FaceSegment { - if m != nil { - return m.Segments - } - return nil -} - -func (m *FaceAnnotation) GetFrames() []*FaceFrame { - if m != nil { - return m.Frames - } - return nil -} - -// Annotation results for a single video. -type VideoAnnotationResults struct { - // Video file location in - // [Google Cloud Storage](https://cloud.google.com/storage/). - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // Label annotations on video level or user specified segment level. - // There is exactly one element for each unique label. - SegmentLabelAnnotations []*LabelAnnotation `protobuf:"bytes,2,rep,name=segment_label_annotations,json=segmentLabelAnnotations" json:"segment_label_annotations,omitempty"` - // Label annotations on shot level. - // There is exactly one element for each unique label. - ShotLabelAnnotations []*LabelAnnotation `protobuf:"bytes,3,rep,name=shot_label_annotations,json=shotLabelAnnotations" json:"shot_label_annotations,omitempty"` - // Label annotations on frame level. - // There is exactly one element for each unique label. - FrameLabelAnnotations []*LabelAnnotation `protobuf:"bytes,4,rep,name=frame_label_annotations,json=frameLabelAnnotations" json:"frame_label_annotations,omitempty"` - // Face annotations. There is exactly one element for each unique face. - FaceAnnotations []*FaceAnnotation `protobuf:"bytes,5,rep,name=face_annotations,json=faceAnnotations" json:"face_annotations,omitempty"` - // Shot annotations. Each shot is represented as a video segment. - ShotAnnotations []*VideoSegment `protobuf:"bytes,6,rep,name=shot_annotations,json=shotAnnotations" json:"shot_annotations,omitempty"` - // Explicit content annotation. - ExplicitAnnotation *ExplicitContentAnnotation `protobuf:"bytes,7,opt,name=explicit_annotation,json=explicitAnnotation" json:"explicit_annotation,omitempty"` - // If set, indicates an error. Note that for a single `AnnotateVideoRequest` - // some videos may succeed and some may fail. - Error *google_rpc.Status `protobuf:"bytes,9,opt,name=error" json:"error,omitempty"` -} - -func (m *VideoAnnotationResults) Reset() { *m = VideoAnnotationResults{} } -func (m *VideoAnnotationResults) String() string { return proto.CompactTextString(m) } -func (*VideoAnnotationResults) ProtoMessage() {} -func (*VideoAnnotationResults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *VideoAnnotationResults) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *VideoAnnotationResults) GetSegmentLabelAnnotations() []*LabelAnnotation { - if m != nil { - return m.SegmentLabelAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetShotLabelAnnotations() []*LabelAnnotation { - if m != nil { - return m.ShotLabelAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetFrameLabelAnnotations() []*LabelAnnotation { - if m != nil { - return m.FrameLabelAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetFaceAnnotations() []*FaceAnnotation { - if m != nil { - return m.FaceAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetShotAnnotations() []*VideoSegment { - if m != nil { - return m.ShotAnnotations - } - return nil -} - -func (m *VideoAnnotationResults) GetExplicitAnnotation() *ExplicitContentAnnotation { - if m != nil { - return m.ExplicitAnnotation - } - return nil -} - -func (m *VideoAnnotationResults) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -// Video annotation response. Included in the `response` -// field of the `Operation` returned by the `GetOperation` -// call of the `google::longrunning::Operations` service. -type AnnotateVideoResponse struct { - // Annotation results for all videos specified in `AnnotateVideoRequest`. - AnnotationResults []*VideoAnnotationResults `protobuf:"bytes,1,rep,name=annotation_results,json=annotationResults" json:"annotation_results,omitempty"` -} - -func (m *AnnotateVideoResponse) Reset() { *m = AnnotateVideoResponse{} } -func (m *AnnotateVideoResponse) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoResponse) ProtoMessage() {} -func (*AnnotateVideoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *AnnotateVideoResponse) GetAnnotationResults() []*VideoAnnotationResults { - if m != nil { - return m.AnnotationResults - } - return nil -} - -// Annotation progress for a single video. -type VideoAnnotationProgress struct { - // Video file location in - // [Google Cloud Storage](https://cloud.google.com/storage/). - InputUri string `protobuf:"bytes,1,opt,name=input_uri,json=inputUri" json:"input_uri,omitempty"` - // Approximate percentage processed thus far. - // Guaranteed to be 100 when fully processed. - ProgressPercent int32 `protobuf:"varint,2,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"` - // Time when the request was received. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time of the most recent update. - UpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *VideoAnnotationProgress) Reset() { *m = VideoAnnotationProgress{} } -func (m *VideoAnnotationProgress) String() string { return proto.CompactTextString(m) } -func (*VideoAnnotationProgress) ProtoMessage() {} -func (*VideoAnnotationProgress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *VideoAnnotationProgress) GetInputUri() string { - if m != nil { - return m.InputUri - } - return "" -} - -func (m *VideoAnnotationProgress) GetProgressPercent() int32 { - if m != nil { - return m.ProgressPercent - } - return 0 -} - -func (m *VideoAnnotationProgress) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *VideoAnnotationProgress) GetUpdateTime() *google_protobuf4.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// Video annotation progress. Included in the `metadata` -// field of the `Operation` returned by the `GetOperation` -// call of the `google::longrunning::Operations` service. -type AnnotateVideoProgress struct { - // Progress metadata for all videos specified in `AnnotateVideoRequest`. - AnnotationProgress []*VideoAnnotationProgress `protobuf:"bytes,1,rep,name=annotation_progress,json=annotationProgress" json:"annotation_progress,omitempty"` -} - -func (m *AnnotateVideoProgress) Reset() { *m = AnnotateVideoProgress{} } -func (m *AnnotateVideoProgress) String() string { return proto.CompactTextString(m) } -func (*AnnotateVideoProgress) ProtoMessage() {} -func (*AnnotateVideoProgress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *AnnotateVideoProgress) GetAnnotationProgress() []*VideoAnnotationProgress { - if m != nil { - return m.AnnotationProgress - } - return nil -} - -func init() { - proto.RegisterType((*AnnotateVideoRequest)(nil), "google.cloud.videointelligence.v1beta2.AnnotateVideoRequest") - proto.RegisterType((*VideoContext)(nil), "google.cloud.videointelligence.v1beta2.VideoContext") - proto.RegisterType((*LabelDetectionConfig)(nil), "google.cloud.videointelligence.v1beta2.LabelDetectionConfig") - proto.RegisterType((*ShotChangeDetectionConfig)(nil), "google.cloud.videointelligence.v1beta2.ShotChangeDetectionConfig") - proto.RegisterType((*ExplicitContentDetectionConfig)(nil), "google.cloud.videointelligence.v1beta2.ExplicitContentDetectionConfig") - proto.RegisterType((*FaceDetectionConfig)(nil), "google.cloud.videointelligence.v1beta2.FaceDetectionConfig") - proto.RegisterType((*VideoSegment)(nil), "google.cloud.videointelligence.v1beta2.VideoSegment") - proto.RegisterType((*LabelSegment)(nil), "google.cloud.videointelligence.v1beta2.LabelSegment") - proto.RegisterType((*LabelFrame)(nil), "google.cloud.videointelligence.v1beta2.LabelFrame") - proto.RegisterType((*Entity)(nil), "google.cloud.videointelligence.v1beta2.Entity") - proto.RegisterType((*LabelAnnotation)(nil), "google.cloud.videointelligence.v1beta2.LabelAnnotation") - proto.RegisterType((*ExplicitContentFrame)(nil), "google.cloud.videointelligence.v1beta2.ExplicitContentFrame") - proto.RegisterType((*ExplicitContentAnnotation)(nil), "google.cloud.videointelligence.v1beta2.ExplicitContentAnnotation") - proto.RegisterType((*NormalizedBoundingBox)(nil), "google.cloud.videointelligence.v1beta2.NormalizedBoundingBox") - proto.RegisterType((*FaceSegment)(nil), "google.cloud.videointelligence.v1beta2.FaceSegment") - proto.RegisterType((*FaceFrame)(nil), "google.cloud.videointelligence.v1beta2.FaceFrame") - proto.RegisterType((*FaceAnnotation)(nil), "google.cloud.videointelligence.v1beta2.FaceAnnotation") - proto.RegisterType((*VideoAnnotationResults)(nil), "google.cloud.videointelligence.v1beta2.VideoAnnotationResults") - proto.RegisterType((*AnnotateVideoResponse)(nil), "google.cloud.videointelligence.v1beta2.AnnotateVideoResponse") - proto.RegisterType((*VideoAnnotationProgress)(nil), "google.cloud.videointelligence.v1beta2.VideoAnnotationProgress") - proto.RegisterType((*AnnotateVideoProgress)(nil), "google.cloud.videointelligence.v1beta2.AnnotateVideoProgress") - proto.RegisterEnum("google.cloud.videointelligence.v1beta2.Feature", Feature_name, Feature_value) - proto.RegisterEnum("google.cloud.videointelligence.v1beta2.LabelDetectionMode", LabelDetectionMode_name, LabelDetectionMode_value) - proto.RegisterEnum("google.cloud.videointelligence.v1beta2.Likelihood", Likelihood_name, Likelihood_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for VideoIntelligenceService service - -type VideoIntelligenceServiceClient interface { - // Performs asynchronous video annotation. Progress and results can be - // retrieved through the `google.longrunning.Operations` interface. - // `Operation.metadata` contains `AnnotateVideoProgress` (progress). - // `Operation.response` contains `AnnotateVideoResponse` (results). - AnnotateVideo(ctx context.Context, in *AnnotateVideoRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type videoIntelligenceServiceClient struct { - cc *grpc.ClientConn -} - -func NewVideoIntelligenceServiceClient(cc *grpc.ClientConn) VideoIntelligenceServiceClient { - return &videoIntelligenceServiceClient{cc} -} - -func (c *videoIntelligenceServiceClient) AnnotateVideo(ctx context.Context, in *AnnotateVideoRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.cloud.videointelligence.v1beta2.VideoIntelligenceService/AnnotateVideo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for VideoIntelligenceService service - -type VideoIntelligenceServiceServer interface { - // Performs asynchronous video annotation. Progress and results can be - // retrieved through the `google.longrunning.Operations` interface. - // `Operation.metadata` contains `AnnotateVideoProgress` (progress). - // `Operation.response` contains `AnnotateVideoResponse` (results). - AnnotateVideo(context.Context, *AnnotateVideoRequest) (*google_longrunning.Operation, error) -} - -func RegisterVideoIntelligenceServiceServer(s *grpc.Server, srv VideoIntelligenceServiceServer) { - s.RegisterService(&_VideoIntelligenceService_serviceDesc, srv) -} - -func _VideoIntelligenceService_AnnotateVideo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnnotateVideoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VideoIntelligenceServiceServer).AnnotateVideo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.videointelligence.v1beta2.VideoIntelligenceService/AnnotateVideo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VideoIntelligenceServiceServer).AnnotateVideo(ctx, req.(*AnnotateVideoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _VideoIntelligenceService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.videointelligence.v1beta2.VideoIntelligenceService", - HandlerType: (*VideoIntelligenceServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AnnotateVideo", - Handler: _VideoIntelligenceService_AnnotateVideo_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/videointelligence/v1beta2/video_intelligence.proto", -} - -func init() { - proto.RegisterFile("google/cloud/videointelligence/v1beta2/video_intelligence.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 1718 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x6f, 0xdb, 0xc8, - 0x15, 0x2f, 0x25, 0xd9, 0xb1, 0x9e, 0xff, 0x48, 0x19, 0xcb, 0xb6, 0xec, 0x26, 0x5e, 0x97, 0x29, - 0x16, 0xae, 0x0b, 0x48, 0x88, 0x77, 0xb1, 0x45, 0x93, 0x6d, 0x17, 0xb2, 0x4c, 0x6d, 0xd4, 0x75, - 0x24, 0x81, 0x52, 0xd2, 0xa6, 0x4d, 0x41, 0x50, 0xe4, 0x88, 0x22, 0x96, 0xe2, 0x70, 0xc9, 0x61, - 0x10, 0xf7, 0xd0, 0xc3, 0x1e, 0x16, 0xe8, 0xb1, 0xe8, 0xa5, 0x9f, 0xa1, 0x87, 0x7e, 0x83, 0x02, - 0x45, 0x2f, 0x05, 0x72, 0x6d, 0x2f, 0xbd, 0xf4, 0xd4, 0x63, 0x3f, 0x40, 0x8f, 0x05, 0x67, 0x86, - 0x12, 0x45, 0xca, 0xb1, 0x94, 0x60, 0x6f, 0x9c, 0xf7, 0xe6, 0xfd, 0xde, 0xff, 0x37, 0x33, 0x84, - 0xcf, 0x2c, 0x42, 0x2c, 0x07, 0xd7, 0x0d, 0x87, 0x84, 0x66, 0xfd, 0x95, 0x6d, 0x62, 0x62, 0xbb, - 0x14, 0x3b, 0x8e, 0x6d, 0x61, 0xd7, 0xc0, 0xf5, 0x57, 0x0f, 0x87, 0x98, 0xea, 0xe7, 0x9c, 0xa3, - 0x25, 0x59, 0x35, 0xcf, 0x27, 0x94, 0xa0, 0x0f, 0x39, 0x40, 0x8d, 0x01, 0xd4, 0x32, 0x00, 0x35, - 0x01, 0x70, 0x74, 0x4f, 0x28, 0xd2, 0x3d, 0xbb, 0xae, 0xbb, 0x2e, 0xa1, 0x3a, 0xb5, 0x89, 0x1b, - 0x70, 0x94, 0xa3, 0x07, 0x82, 0xeb, 0x10, 0xd7, 0xf2, 0x43, 0xd7, 0xb5, 0x5d, 0xab, 0x4e, 0x3c, - 0xec, 0xcf, 0x6d, 0x3a, 0x16, 0x9b, 0xd8, 0x6a, 0x18, 0x8e, 0xea, 0x66, 0xc8, 0x37, 0x08, 0xfe, - 0x07, 0x69, 0x3e, 0xb5, 0x27, 0x38, 0xa0, 0xfa, 0xc4, 0x13, 0x1b, 0x0e, 0xc4, 0x06, 0xdf, 0x33, - 0xea, 0x01, 0xd5, 0x69, 0x28, 0x90, 0xe5, 0xbf, 0xe6, 0xa0, 0xd2, 0xe0, 0x46, 0xe1, 0xe7, 0x91, - 0x0b, 0x2a, 0xfe, 0x2a, 0xc4, 0x01, 0x45, 0xdf, 0x85, 0xa2, 0xed, 0x7a, 0x21, 0xd5, 0x42, 0xdf, - 0xae, 0x4a, 0x27, 0xd2, 0x69, 0x51, 0xdd, 0x60, 0x84, 0x67, 0xbe, 0x8d, 0x1e, 0xc0, 0x36, 0x67, - 0x1a, 0xc4, 0xa5, 0xd8, 0xa5, 0xd5, 0xf5, 0x13, 0xe9, 0x74, 0x4b, 0xdd, 0x62, 0xc4, 0x26, 0xa7, - 0xa1, 0x2f, 0x60, 0x63, 0x84, 0x75, 0x1a, 0xfa, 0x38, 0xa8, 0xe6, 0x4e, 0xf2, 0xa7, 0x3b, 0xe7, - 0xf5, 0xda, 0x72, 0x21, 0xab, 0xb5, 0xb8, 0x9c, 0x3a, 0x05, 0x40, 0x2f, 0x60, 0x9b, 0x27, 0x82, - 0x69, 0x7c, 0x4d, 0xab, 0xf9, 0x13, 0xe9, 0x74, 0xf3, 0xfc, 0xe3, 0x65, 0x11, 0x99, 0x6f, 0x4d, - 0x2e, 0xab, 0x6e, 0xbd, 0x4a, 0xac, 0xd0, 0x7d, 0x00, 0x12, 0xd2, 0xd8, 0xd5, 0x02, 0x73, 0xb5, - 0xc8, 0x29, 0x91, 0xaf, 0x1f, 0xc0, 0xa6, 0x43, 0x0c, 0x16, 0x6d, 0xcd, 0x36, 0xab, 0x6b, 0x8c, - 0x0f, 0x31, 0xa9, 0x6d, 0xca, 0xff, 0x2e, 0xc0, 0x56, 0x12, 0x1e, 0xf5, 0x60, 0x23, 0xc0, 0xd6, - 0x04, 0xbb, 0x34, 0xa8, 0x4a, 0x27, 0xf9, 0x95, 0xcd, 0xec, 0x73, 0x61, 0x75, 0x8a, 0x82, 0x7c, - 0xd8, 0x77, 0xf4, 0x21, 0x76, 0x34, 0x13, 0x53, 0x6c, 0x30, 0x53, 0x0c, 0xe2, 0x8e, 0x6c, 0xab, - 0x9a, 0x63, 0x61, 0xf8, 0x74, 0x59, 0xfc, 0xab, 0x08, 0xe5, 0x32, 0x06, 0x69, 0x32, 0x0c, 0xb5, - 0xe2, 0x2c, 0xa0, 0xa2, 0xaf, 0x25, 0xb8, 0x17, 0x8c, 0x09, 0xd5, 0x8c, 0xb1, 0xee, 0x5a, 0x38, - 0xab, 0x9a, 0x67, 0xa0, 0xb1, 0xac, 0xea, 0xfe, 0x98, 0xd0, 0x26, 0x83, 0x4a, 0xeb, 0x3f, 0x0c, - 0x6e, 0x62, 0xa1, 0xdf, 0x4b, 0xf0, 0x3d, 0xfc, 0xda, 0x73, 0x6c, 0xc3, 0x9e, 0x16, 0x5b, 0xd6, - 0x92, 0x02, 0xb3, 0xa4, 0xb5, 0xac, 0x25, 0x8a, 0x00, 0x14, 0x85, 0x9a, 0x36, 0xe7, 0x18, 0xbf, - 0x95, 0x8f, 0x08, 0xec, 0x8d, 0x74, 0x63, 0x41, 0x40, 0xd6, 0x98, 0x19, 0x8f, 0x97, 0x2e, 0x72, - 0xdd, 0xc8, 0x84, 0x62, 0x77, 0x94, 0x25, 0xca, 0x7f, 0x97, 0xa0, 0xb2, 0x28, 0x71, 0xc8, 0x81, - 0x4a, 0xba, 0x2c, 0x26, 0xc4, 0xc4, 0xac, 0x5d, 0x77, 0xce, 0x1f, 0xbd, 0x5b, 0x51, 0x3c, 0x25, - 0x26, 0x56, 0x91, 0x93, 0xa1, 0xa1, 0x1f, 0xc2, 0xdd, 0x80, 0xcf, 0x2e, 0xdd, 0xbf, 0xd6, 0x0c, - 0x7d, 0x82, 0x7d, 0x9d, 0xd5, 0xdf, 0x86, 0x5a, 0x9e, 0x31, 0x9a, 0x8c, 0x8e, 0x2a, 0xb0, 0x16, - 0x99, 0xe2, 0xb0, 0x2a, 0x29, 0xaa, 0x7c, 0x21, 0x3f, 0x84, 0xc3, 0x1b, 0xcb, 0x60, 0x26, 0x22, - 0x25, 0x45, 0x3e, 0x81, 0xe3, 0xb7, 0xe7, 0xeb, 0x06, 0x39, 0x1d, 0x76, 0x17, 0x04, 0x78, 0xf1, - 0x66, 0xf4, 0x31, 0xec, 0xdb, 0xae, 0xe1, 0x84, 0x26, 0xd6, 0x86, 0x24, 0x74, 0x4d, 0xdb, 0xb5, - 0xb4, 0x21, 0x79, 0xcd, 0x06, 0x57, 0xe4, 0x5f, 0x45, 0x70, 0x2f, 0x04, 0xf3, 0x22, 0xe2, 0xc9, - 0x7f, 0x94, 0x44, 0xe3, 0x8b, 0x86, 0x45, 0x0a, 0x8b, 0x90, 0x4f, 0xb5, 0x68, 0xfc, 0x6a, 0x64, - 0x34, 0x0a, 0x30, 0x65, 0x8a, 0x36, 0xcf, 0x0f, 0xe3, 0x64, 0xc4, 0x23, 0xba, 0x76, 0x29, 0x46, - 0xb8, 0x5a, 0x62, 0x32, 0x03, 0x7b, 0x82, 0xbb, 0x4c, 0x02, 0x35, 0xa0, 0x84, 0x5d, 0x73, 0x0e, - 0x24, 0x77, 0x1b, 0xc8, 0x36, 0x76, 0xcd, 0x19, 0x84, 0xfc, 0x5b, 0xd8, 0x62, 0x59, 0x8d, 0x2d, - 0xeb, 0xc0, 0x1d, 0x31, 0x4c, 0x84, 0x3d, 0xef, 0x36, 0x91, 0x62, 0x10, 0x74, 0x0c, 0xc0, 0x8a, - 0xde, 0x8c, 0xf6, 0x32, 0xeb, 0x72, 0x6a, 0x82, 0x22, 0x8f, 0x01, 0x98, 0xfe, 0x96, 0xaf, 0x4f, - 0x30, 0x7a, 0x04, 0x9b, 0x2b, 0x45, 0x04, 0xe8, 0x2c, 0x18, 0xb7, 0x69, 0x72, 0x60, 0x5d, 0x71, - 0xa9, 0x4d, 0xaf, 0xa3, 0x13, 0x0b, 0xb3, 0xaf, 0x68, 0x4c, 0x8b, 0x13, 0x8b, 0x13, 0xda, 0x26, - 0x3a, 0x81, 0x4d, 0x13, 0x07, 0x86, 0x6f, 0x7b, 0x91, 0x06, 0x86, 0x53, 0x54, 0x93, 0xa4, 0xe8, - 0x4c, 0x73, 0x74, 0xd7, 0x0a, 0x75, 0x0b, 0x6b, 0x46, 0xd4, 0x45, 0xbc, 0x72, 0xb7, 0x62, 0x62, - 0x93, 0x98, 0x58, 0xfe, 0x67, 0x0e, 0x4a, 0xcc, 0xb1, 0xc6, 0xf4, 0x20, 0x47, 0x2d, 0x58, 0xe7, - 0x6a, 0x84, 0x63, 0xb5, 0xa5, 0xe7, 0x10, 0x93, 0x52, 0x85, 0x34, 0xfa, 0x15, 0xdc, 0x35, 0x74, - 0x8a, 0x2d, 0xe2, 0x5f, 0x6b, 0x8c, 0x64, 0x8b, 0x83, 0x73, 0x75, 0xc8, 0x72, 0x0c, 0xa4, 0x08, - 0x9c, 0xb9, 0x33, 0x29, 0xbf, 0xda, 0x99, 0x94, 0x2c, 0xa4, 0xc4, 0x99, 0xf4, 0x33, 0x58, 0x1f, - 0x45, 0xd9, 0x0d, 0xaa, 0x05, 0x86, 0x77, 0xbe, 0x12, 0x1e, 0x2b, 0x0c, 0x55, 0x20, 0xc8, 0x7f, - 0x91, 0xa0, 0x92, 0xea, 0xf2, 0xf7, 0xaf, 0x1c, 0x1b, 0xf6, 0x3d, 0xe2, 0xbb, 0xc4, 0xf2, 0x75, - 0x6f, 0x7c, 0xad, 0x39, 0xf6, 0x97, 0xd8, 0xb1, 0xc7, 0x84, 0x98, 0x2c, 0xfb, 0x3b, 0x2b, 0x18, - 0x3c, 0x95, 0x54, 0xf7, 0x12, 0x88, 0x33, 0xb2, 0xfc, 0x15, 0x1c, 0xa6, 0xcc, 0x4f, 0xd4, 0xc7, - 0x60, 0x1a, 0x28, 0x7e, 0x19, 0xf8, 0xf4, 0x1d, 0xcf, 0xa9, 0xf9, 0x90, 0x7d, 0x09, 0x7b, 0x1d, - 0xe2, 0x4f, 0x74, 0xc7, 0xfe, 0x0d, 0x36, 0x13, 0x73, 0x09, 0x21, 0x28, 0x38, 0x78, 0xc4, 0x63, - 0x95, 0x53, 0xd9, 0x37, 0x2a, 0x43, 0x9e, 0x12, 0x4f, 0x74, 0x4f, 0xf4, 0x19, 0xcd, 0x41, 0xdf, - 0xb6, 0xc6, 0xfc, 0x1e, 0x95, 0x53, 0xf9, 0x02, 0xed, 0xc3, 0xfa, 0x90, 0x50, 0x4a, 0x26, 0xec, - 0x48, 0xcd, 0xa9, 0x62, 0x25, 0xff, 0x1a, 0x36, 0xa3, 0x61, 0xfa, 0x2d, 0x4d, 0x13, 0xf9, 0x6f, - 0x12, 0x14, 0x23, 0x7c, 0x9e, 0xf3, 0x6b, 0x38, 0x74, 0xa7, 0x9e, 0xa5, 0xe7, 0x31, 0x0f, 0xe1, - 0x4f, 0x96, 0xd5, 0xb7, 0x30, 0x44, 0xea, 0x81, 0xbb, 0x88, 0x8c, 0x83, 0x74, 0xb9, 0xe5, 0x56, - 0x28, 0x37, 0xf9, 0x8d, 0x04, 0x3b, 0x91, 0x13, 0x89, 0xcc, 0xdf, 0x83, 0x22, 0x1d, 0x87, 0x93, - 0xa1, 0xab, 0xdb, 0xfc, 0xc0, 0xd9, 0x52, 0x67, 0x04, 0xd4, 0x4d, 0xb4, 0x24, 0x6f, 0xf3, 0x8f, - 0x56, 0xb9, 0x3a, 0x64, 0x3b, 0xb2, 0x3d, 0x2d, 0x34, 0xde, 0xe1, 0x0f, 0x57, 0x81, 0x9b, 0xaf, - 0xae, 0xff, 0xae, 0xc1, 0x3e, 0xcb, 0xd5, 0xcc, 0x1b, 0x15, 0x07, 0xa1, 0x43, 0x83, 0xb7, 0x3f, - 0x0c, 0x02, 0x38, 0x14, 0xe6, 0x68, 0xfc, 0x66, 0x92, 0x78, 0xf0, 0x08, 0x27, 0x7f, 0xb4, 0xd2, - 0x9c, 0x48, 0xe8, 0x3f, 0x10, 0xc8, 0x29, 0x7a, 0x80, 0x26, 0xb0, 0xcf, 0x2e, 0xaa, 0x59, 0x8d, - 0xf9, 0xf7, 0xd3, 0x58, 0x89, 0x60, 0x33, 0xea, 0x08, 0x1c, 0xb0, 0x28, 0x2d, 0xd0, 0x57, 0x78, - 0x3f, 0x7d, 0x7b, 0x0c, 0x37, 0xa3, 0x50, 0x87, 0x32, 0xbb, 0x70, 0x26, 0x35, 0xad, 0x31, 0x4d, - 0x9f, 0xac, 0x92, 0xe1, 0x84, 0xa2, 0xd2, 0x68, 0x6e, 0x1d, 0x20, 0x0d, 0xca, 0x2c, 0x84, 0x49, - 0x15, 0xeb, 0xef, 0xf1, 0x74, 0x29, 0x45, 0x68, 0x49, 0x05, 0x3e, 0xec, 0x4e, 0xef, 0xf1, 0x33, - 0x25, 0xd5, 0x3b, 0xab, 0xbd, 0x21, 0x6e, 0x1c, 0xb2, 0x2a, 0x8a, 0xd1, 0x13, 0xed, 0x77, 0x0a, - 0x6b, 0xd8, 0xf7, 0x89, 0x5f, 0x2d, 0x32, 0x2d, 0x28, 0xd6, 0xe2, 0x7b, 0x46, 0xad, 0xcf, 0x1e, - 0xc1, 0x2a, 0xdf, 0x20, 0x7f, 0x23, 0xc1, 0x5e, 0xea, 0x15, 0x1c, 0x78, 0xc4, 0x0d, 0x30, 0x9a, - 0x00, 0x9a, 0x99, 0xab, 0xf9, 0xbc, 0x07, 0xc4, 0x14, 0xfa, 0xe9, 0x4a, 0xa1, 0xc9, 0x74, 0x92, - 0x7a, 0x57, 0x4f, 0x93, 0xe4, 0x7f, 0x49, 0x70, 0x90, 0xda, 0xdd, 0xf3, 0x89, 0xe5, 0xe3, 0xe0, - 0x96, 0xc6, 0xfb, 0x01, 0x94, 0x3d, 0xb1, 0x51, 0xf3, 0xb0, 0x6f, 0x44, 0xb3, 0x39, 0x1a, 0x5f, - 0x6b, 0x6a, 0x29, 0xa6, 0xf7, 0x38, 0x19, 0xfd, 0x18, 0x60, 0x76, 0x4b, 0x15, 0xaf, 0xb8, 0xa3, - 0xcc, 0x8c, 0x1b, 0xc4, 0x7f, 0x10, 0xd4, 0xe2, 0xf4, 0x7e, 0x8a, 0x1e, 0xc3, 0x66, 0xe8, 0x99, - 0x3a, 0xc5, 0x5c, 0xb6, 0x70, 0xab, 0x2c, 0xf0, 0xed, 0x11, 0x41, 0xfe, 0x5d, 0x3a, 0xc8, 0x53, - 0xcf, 0x3c, 0xd8, 0x4d, 0x04, 0x39, 0xb6, 0x57, 0x44, 0xf9, 0xb3, 0x77, 0x8c, 0x72, 0x8c, 0xae, - 0x26, 0x12, 0x18, 0xd3, 0xce, 0xbe, 0x91, 0xe0, 0x8e, 0xf8, 0xc9, 0x80, 0x0e, 0x60, 0xb7, 0xa5, - 0x34, 0x06, 0xcf, 0x54, 0x45, 0x7b, 0xd6, 0xe9, 0xf7, 0x94, 0x66, 0xbb, 0xd5, 0x56, 0x2e, 0xcb, - 0xdf, 0x41, 0xbb, 0x50, 0xba, 0x6a, 0x5c, 0x28, 0x57, 0xda, 0xa5, 0x32, 0x50, 0x9a, 0x83, 0x76, - 0xb7, 0x53, 0x96, 0xd0, 0x21, 0xec, 0xf5, 0x9f, 0x74, 0x07, 0x5a, 0xf3, 0x49, 0xa3, 0xf3, 0xb9, - 0x92, 0x60, 0xe5, 0xd0, 0x31, 0x1c, 0x29, 0xbf, 0xe8, 0x5d, 0xb5, 0x9b, 0xed, 0x81, 0xd6, 0xec, - 0x76, 0x06, 0x4a, 0x67, 0x90, 0xe0, 0xe7, 0x11, 0x82, 0x9d, 0x56, 0xa3, 0x99, 0x94, 0x29, 0x9c, - 0xf9, 0x80, 0xb2, 0xcf, 0x2f, 0xf4, 0x7d, 0x38, 0x49, 0x69, 0xd6, 0x9e, 0x76, 0x2f, 0xd3, 0xf6, - 0x6d, 0x43, 0x91, 0x99, 0x12, 0xb1, 0xca, 0x12, 0xda, 0x01, 0x68, 0xa9, 0x8d, 0xa7, 0x0a, 0x5f, - 0xe7, 0x22, 0xbf, 0x18, 0xbb, 0xd1, 0xb9, 0xd4, 0x12, 0x8c, 0xfc, 0x19, 0x05, 0x98, 0xdd, 0x5d, - 0xd0, 0x11, 0xec, 0x5f, 0xb5, 0xbf, 0x50, 0xae, 0xda, 0x4f, 0xba, 0xdd, 0xcb, 0x94, 0x86, 0xbb, - 0xb0, 0xfd, 0x5c, 0x51, 0x5f, 0x68, 0xcf, 0x3a, 0x6c, 0xcb, 0x8b, 0xb2, 0x84, 0xb6, 0x60, 0x63, - 0xba, 0xca, 0x45, 0xab, 0x5e, 0xb7, 0xdf, 0x6f, 0x5f, 0x5c, 0x29, 0xe5, 0x3c, 0x02, 0x58, 0x17, - 0x9c, 0x02, 0x2a, 0xc1, 0x26, 0x13, 0x15, 0x84, 0xb5, 0xf3, 0x3f, 0x4b, 0x50, 0x65, 0x29, 0x6a, - 0x27, 0x92, 0xd7, 0xc7, 0xfe, 0x2b, 0xdb, 0xc0, 0xd1, 0x3b, 0x7f, 0x7b, 0xae, 0x36, 0xd0, 0xd2, - 0xb7, 0xa4, 0x45, 0x7f, 0xaf, 0x8e, 0xee, 0xc7, 0xd2, 0x89, 0xdf, 0x6a, 0xb5, 0x6e, 0xfc, 0x5b, - 0x4d, 0x7e, 0xf0, 0xf5, 0x3f, 0xfe, 0xf3, 0x87, 0xdc, 0x7d, 0xb9, 0x3a, 0xff, 0x97, 0x2f, 0x78, - 0x24, 0x4a, 0x05, 0x3f, 0x92, 0xce, 0x2e, 0xfe, 0x27, 0xc1, 0x99, 0x41, 0x26, 0x4b, 0xda, 0x71, - 0x71, 0xff, 0x26, 0xe7, 0x7a, 0x51, 0x5b, 0xf4, 0xa4, 0x5f, 0xfe, 0x5c, 0x00, 0x59, 0x24, 0x7a, - 0x52, 0xd4, 0x88, 0x6f, 0xd5, 0x2d, 0xec, 0xb2, 0xa6, 0xa9, 0x73, 0x96, 0xee, 0xd9, 0xc1, 0x6d, - 0xff, 0x23, 0x1f, 0x67, 0x38, 0x7f, 0xca, 0x7d, 0xf8, 0x39, 0x47, 0x6e, 0x32, 0x13, 0x33, 0x76, - 0xd4, 0x9e, 0x3f, 0xbc, 0x88, 0x44, 0xdf, 0xc4, 0x1b, 0x5f, 0xb2, 0x8d, 0x2f, 0x33, 0x1b, 0x5f, - 0x3e, 0xe7, 0x3a, 0x86, 0xeb, 0xcc, 0xaa, 0x8f, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x8a, - 0xa0, 0x1c, 0x24, 0x15, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/geometry.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/geometry.pb.go deleted file mode 100644 index f6812d95..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/geometry.pb.go +++ /dev/null @@ -1,172 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/vision/v1/geometry.proto - -/* -Package vision is a generated protocol buffer package. - -It is generated from these files: - google/cloud/vision/v1/geometry.proto - google/cloud/vision/v1/image_annotator.proto - google/cloud/vision/v1/text_annotation.proto - google/cloud/vision/v1/web_detection.proto - -It has these top-level messages: - Vertex - BoundingPoly - Position - Feature - ImageSource - Image - FaceAnnotation - LocationInfo - Property - EntityAnnotation - SafeSearchAnnotation - LatLongRect - ColorInfo - DominantColorsAnnotation - ImageProperties - CropHint - CropHintsAnnotation - CropHintsParams - WebDetectionParams - ImageContext - AnnotateImageRequest - AnnotateImageResponse - BatchAnnotateImagesRequest - BatchAnnotateImagesResponse - TextAnnotation - Page - Block - Paragraph - Word - Symbol - WebDetection -*/ -package vision - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A vertex represents a 2D point in the image. -// NOTE: the vertex coordinates are in the same scale as the original image. -type Vertex struct { - // X coordinate. - X int32 `protobuf:"varint,1,opt,name=x" json:"x,omitempty"` - // Y coordinate. - Y int32 `protobuf:"varint,2,opt,name=y" json:"y,omitempty"` -} - -func (m *Vertex) Reset() { *m = Vertex{} } -func (m *Vertex) String() string { return proto.CompactTextString(m) } -func (*Vertex) ProtoMessage() {} -func (*Vertex) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Vertex) GetX() int32 { - if m != nil { - return m.X - } - return 0 -} - -func (m *Vertex) GetY() int32 { - if m != nil { - return m.Y - } - return 0 -} - -// A bounding polygon for the detected image annotation. -type BoundingPoly struct { - // The bounding polygon vertices. - Vertices []*Vertex `protobuf:"bytes,1,rep,name=vertices" json:"vertices,omitempty"` -} - -func (m *BoundingPoly) Reset() { *m = BoundingPoly{} } -func (m *BoundingPoly) String() string { return proto.CompactTextString(m) } -func (*BoundingPoly) ProtoMessage() {} -func (*BoundingPoly) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *BoundingPoly) GetVertices() []*Vertex { - if m != nil { - return m.Vertices - } - return nil -} - -// A 3D position in the image, used primarily for Face detection landmarks. -// A valid Position must have both x and y coordinates. -// The position coordinates are in the same scale as the original image. -type Position struct { - // X coordinate. - X float32 `protobuf:"fixed32,1,opt,name=x" json:"x,omitempty"` - // Y coordinate. - Y float32 `protobuf:"fixed32,2,opt,name=y" json:"y,omitempty"` - // Z coordinate (or depth). - Z float32 `protobuf:"fixed32,3,opt,name=z" json:"z,omitempty"` -} - -func (m *Position) Reset() { *m = Position{} } -func (m *Position) String() string { return proto.CompactTextString(m) } -func (*Position) ProtoMessage() {} -func (*Position) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Position) GetX() float32 { - if m != nil { - return m.X - } - return 0 -} - -func (m *Position) GetY() float32 { - if m != nil { - return m.Y - } - return 0 -} - -func (m *Position) GetZ() float32 { - if m != nil { - return m.Z - } - return 0 -} - -func init() { - proto.RegisterType((*Vertex)(nil), "google.cloud.vision.v1.Vertex") - proto.RegisterType((*BoundingPoly)(nil), "google.cloud.vision.v1.BoundingPoly") - proto.RegisterType((*Position)(nil), "google.cloud.vision.v1.Position") -} - -func init() { proto.RegisterFile("google/cloud/vision/v1/geometry.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 237 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0x31, 0x4b, 0x03, 0x31, - 0x14, 0x80, 0x79, 0x57, 0x2c, 0x25, 0xd6, 0xe5, 0x06, 0x39, 0x1c, 0xa4, 0x1c, 0x0a, 0x9d, 0x12, - 0xaa, 0x4e, 0xea, 0x74, 0x8b, 0xe0, 0x74, 0xdc, 0xe0, 0xe0, 0x56, 0xaf, 0x8f, 0x47, 0xe0, 0x9a, - 0x57, 0x92, 0x34, 0x34, 0xfd, 0xe5, 0x8e, 0xd2, 0xa4, 0x28, 0x8a, 0xdd, 0xf2, 0x91, 0x8f, 0xf7, - 0xf1, 0x9e, 0xb8, 0x25, 0x66, 0x1a, 0x50, 0xf5, 0x03, 0x6f, 0x57, 0x2a, 0x68, 0xa7, 0xd9, 0xa8, - 0xb0, 0x50, 0x84, 0xbc, 0x46, 0x6f, 0xa3, 0xdc, 0x58, 0xf6, 0x5c, 0x5e, 0x66, 0x4d, 0x26, 0x4d, - 0x66, 0x4d, 0x86, 0x45, 0x7d, 0x23, 0xc6, 0x6f, 0x68, 0x3d, 0xee, 0xca, 0xa9, 0x80, 0x5d, 0x05, - 0x33, 0x98, 0x9f, 0x75, 0x90, 0x28, 0x56, 0x45, 0xa6, 0x58, 0xbf, 0x8a, 0x69, 0xc3, 0x5b, 0xb3, - 0xd2, 0x86, 0x5a, 0x1e, 0x62, 0xf9, 0x28, 0x26, 0x01, 0xad, 0xd7, 0x3d, 0xba, 0x0a, 0x66, 0xa3, - 0xf9, 0xf9, 0xdd, 0xb5, 0xfc, 0x3f, 0x20, 0xf3, 0xf4, 0xee, 0xdb, 0xaf, 0x1f, 0xc4, 0xa4, 0x65, - 0xa7, 0xbd, 0x66, 0xf3, 0xd3, 0x2c, 0x7e, 0x35, 0x8b, 0x0e, 0xe2, 0x81, 0xf6, 0xd5, 0x28, 0xd3, - 0xbe, 0x31, 0xe2, 0xaa, 0xe7, 0xf5, 0x89, 0x48, 0x73, 0xf1, 0x72, 0xdc, 0xb6, 0x3d, 0x2c, 0xdb, - 0xc2, 0xfb, 0xf3, 0x51, 0x24, 0x1e, 0x96, 0x86, 0x24, 0x5b, 0x52, 0x84, 0x26, 0x9d, 0x42, 0xe5, - 0xaf, 0xe5, 0x46, 0xbb, 0xbf, 0x47, 0x7b, 0xca, 0xaf, 0x4f, 0x80, 0x8f, 0x71, 0x72, 0xef, 0xbf, - 0x02, 0x00, 0x00, 0xff, 0xff, 0xd0, 0x04, 0x38, 0x95, 0x5f, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/image_annotator.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/image_annotator.pb.go deleted file mode 100644 index 231ac66d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/image_annotator.pb.go +++ /dev/null @@ -1,1513 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/vision/v1/image_annotator.proto - -package vision - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" -import google_type "google.golang.org/genproto/googleapis/type/color" -import google_type1 "google.golang.org/genproto/googleapis/type/latlng" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A bucketized representation of likelihood, which is intended to give clients -// highly stable results across model upgrades. -type Likelihood int32 - -const ( - // Unknown likelihood. - Likelihood_UNKNOWN Likelihood = 0 - // It is very unlikely that the image belongs to the specified vertical. - Likelihood_VERY_UNLIKELY Likelihood = 1 - // It is unlikely that the image belongs to the specified vertical. - Likelihood_UNLIKELY Likelihood = 2 - // It is possible that the image belongs to the specified vertical. - Likelihood_POSSIBLE Likelihood = 3 - // It is likely that the image belongs to the specified vertical. - Likelihood_LIKELY Likelihood = 4 - // It is very likely that the image belongs to the specified vertical. - Likelihood_VERY_LIKELY Likelihood = 5 -) - -var Likelihood_name = map[int32]string{ - 0: "UNKNOWN", - 1: "VERY_UNLIKELY", - 2: "UNLIKELY", - 3: "POSSIBLE", - 4: "LIKELY", - 5: "VERY_LIKELY", -} -var Likelihood_value = map[string]int32{ - "UNKNOWN": 0, - "VERY_UNLIKELY": 1, - "UNLIKELY": 2, - "POSSIBLE": 3, - "LIKELY": 4, - "VERY_LIKELY": 5, -} - -func (x Likelihood) String() string { - return proto.EnumName(Likelihood_name, int32(x)) -} -func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Type of Google Cloud Vision API feature to be extracted. -type Feature_Type int32 - -const ( - // Unspecified feature type. - Feature_TYPE_UNSPECIFIED Feature_Type = 0 - // Run face detection. - Feature_FACE_DETECTION Feature_Type = 1 - // Run landmark detection. - Feature_LANDMARK_DETECTION Feature_Type = 2 - // Run logo detection. - Feature_LOGO_DETECTION Feature_Type = 3 - // Run label detection. - Feature_LABEL_DETECTION Feature_Type = 4 - // Run text detection / optical character recognition (OCR). Text detection - // is optimized for areas of text within a larger image; if the image is - // a document, use `DOCUMENT_TEXT_DETECTION` instead. - Feature_TEXT_DETECTION Feature_Type = 5 - // Run dense text document OCR. Takes precedence when both - // `DOCUMENT_TEXT_DETECTION` and `TEXT_DETECTION` are present. - Feature_DOCUMENT_TEXT_DETECTION Feature_Type = 11 - // Run Safe Search to detect potentially unsafe - // or undesirable content. - Feature_SAFE_SEARCH_DETECTION Feature_Type = 6 - // Compute a set of image properties, such as the - // image's dominant colors. - Feature_IMAGE_PROPERTIES Feature_Type = 7 - // Run crop hints. - Feature_CROP_HINTS Feature_Type = 9 - // Run web detection. - Feature_WEB_DETECTION Feature_Type = 10 -) - -var Feature_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "FACE_DETECTION", - 2: "LANDMARK_DETECTION", - 3: "LOGO_DETECTION", - 4: "LABEL_DETECTION", - 5: "TEXT_DETECTION", - 11: "DOCUMENT_TEXT_DETECTION", - 6: "SAFE_SEARCH_DETECTION", - 7: "IMAGE_PROPERTIES", - 9: "CROP_HINTS", - 10: "WEB_DETECTION", -} -var Feature_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "FACE_DETECTION": 1, - "LANDMARK_DETECTION": 2, - "LOGO_DETECTION": 3, - "LABEL_DETECTION": 4, - "TEXT_DETECTION": 5, - "DOCUMENT_TEXT_DETECTION": 11, - "SAFE_SEARCH_DETECTION": 6, - "IMAGE_PROPERTIES": 7, - "CROP_HINTS": 9, - "WEB_DETECTION": 10, -} - -func (x Feature_Type) String() string { - return proto.EnumName(Feature_Type_name, int32(x)) -} -func (Feature_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -// Face landmark (feature) type. -// Left and right are defined from the vantage of the viewer of the image -// without considering mirror projections typical of photos. So, `LEFT_EYE`, -// typically, is the person's right eye. -type FaceAnnotation_Landmark_Type int32 - -const ( - // Unknown face landmark detected. Should not be filled. - FaceAnnotation_Landmark_UNKNOWN_LANDMARK FaceAnnotation_Landmark_Type = 0 - // Left eye. - FaceAnnotation_Landmark_LEFT_EYE FaceAnnotation_Landmark_Type = 1 - // Right eye. - FaceAnnotation_Landmark_RIGHT_EYE FaceAnnotation_Landmark_Type = 2 - // Left of left eyebrow. - FaceAnnotation_Landmark_LEFT_OF_LEFT_EYEBROW FaceAnnotation_Landmark_Type = 3 - // Right of left eyebrow. - FaceAnnotation_Landmark_RIGHT_OF_LEFT_EYEBROW FaceAnnotation_Landmark_Type = 4 - // Left of right eyebrow. - FaceAnnotation_Landmark_LEFT_OF_RIGHT_EYEBROW FaceAnnotation_Landmark_Type = 5 - // Right of right eyebrow. - FaceAnnotation_Landmark_RIGHT_OF_RIGHT_EYEBROW FaceAnnotation_Landmark_Type = 6 - // Midpoint between eyes. - FaceAnnotation_Landmark_MIDPOINT_BETWEEN_EYES FaceAnnotation_Landmark_Type = 7 - // Nose tip. - FaceAnnotation_Landmark_NOSE_TIP FaceAnnotation_Landmark_Type = 8 - // Upper lip. - FaceAnnotation_Landmark_UPPER_LIP FaceAnnotation_Landmark_Type = 9 - // Lower lip. - FaceAnnotation_Landmark_LOWER_LIP FaceAnnotation_Landmark_Type = 10 - // Mouth left. - FaceAnnotation_Landmark_MOUTH_LEFT FaceAnnotation_Landmark_Type = 11 - // Mouth right. - FaceAnnotation_Landmark_MOUTH_RIGHT FaceAnnotation_Landmark_Type = 12 - // Mouth center. - FaceAnnotation_Landmark_MOUTH_CENTER FaceAnnotation_Landmark_Type = 13 - // Nose, bottom right. - FaceAnnotation_Landmark_NOSE_BOTTOM_RIGHT FaceAnnotation_Landmark_Type = 14 - // Nose, bottom left. - FaceAnnotation_Landmark_NOSE_BOTTOM_LEFT FaceAnnotation_Landmark_Type = 15 - // Nose, bottom center. - FaceAnnotation_Landmark_NOSE_BOTTOM_CENTER FaceAnnotation_Landmark_Type = 16 - // Left eye, top boundary. - FaceAnnotation_Landmark_LEFT_EYE_TOP_BOUNDARY FaceAnnotation_Landmark_Type = 17 - // Left eye, right corner. - FaceAnnotation_Landmark_LEFT_EYE_RIGHT_CORNER FaceAnnotation_Landmark_Type = 18 - // Left eye, bottom boundary. - FaceAnnotation_Landmark_LEFT_EYE_BOTTOM_BOUNDARY FaceAnnotation_Landmark_Type = 19 - // Left eye, left corner. - FaceAnnotation_Landmark_LEFT_EYE_LEFT_CORNER FaceAnnotation_Landmark_Type = 20 - // Right eye, top boundary. - FaceAnnotation_Landmark_RIGHT_EYE_TOP_BOUNDARY FaceAnnotation_Landmark_Type = 21 - // Right eye, right corner. - FaceAnnotation_Landmark_RIGHT_EYE_RIGHT_CORNER FaceAnnotation_Landmark_Type = 22 - // Right eye, bottom boundary. - FaceAnnotation_Landmark_RIGHT_EYE_BOTTOM_BOUNDARY FaceAnnotation_Landmark_Type = 23 - // Right eye, left corner. - FaceAnnotation_Landmark_RIGHT_EYE_LEFT_CORNER FaceAnnotation_Landmark_Type = 24 - // Left eyebrow, upper midpoint. - FaceAnnotation_Landmark_LEFT_EYEBROW_UPPER_MIDPOINT FaceAnnotation_Landmark_Type = 25 - // Right eyebrow, upper midpoint. - FaceAnnotation_Landmark_RIGHT_EYEBROW_UPPER_MIDPOINT FaceAnnotation_Landmark_Type = 26 - // Left ear tragion. - FaceAnnotation_Landmark_LEFT_EAR_TRAGION FaceAnnotation_Landmark_Type = 27 - // Right ear tragion. - FaceAnnotation_Landmark_RIGHT_EAR_TRAGION FaceAnnotation_Landmark_Type = 28 - // Left eye pupil. - FaceAnnotation_Landmark_LEFT_EYE_PUPIL FaceAnnotation_Landmark_Type = 29 - // Right eye pupil. - FaceAnnotation_Landmark_RIGHT_EYE_PUPIL FaceAnnotation_Landmark_Type = 30 - // Forehead glabella. - FaceAnnotation_Landmark_FOREHEAD_GLABELLA FaceAnnotation_Landmark_Type = 31 - // Chin gnathion. - FaceAnnotation_Landmark_CHIN_GNATHION FaceAnnotation_Landmark_Type = 32 - // Chin left gonion. - FaceAnnotation_Landmark_CHIN_LEFT_GONION FaceAnnotation_Landmark_Type = 33 - // Chin right gonion. - FaceAnnotation_Landmark_CHIN_RIGHT_GONION FaceAnnotation_Landmark_Type = 34 -) - -var FaceAnnotation_Landmark_Type_name = map[int32]string{ - 0: "UNKNOWN_LANDMARK", - 1: "LEFT_EYE", - 2: "RIGHT_EYE", - 3: "LEFT_OF_LEFT_EYEBROW", - 4: "RIGHT_OF_LEFT_EYEBROW", - 5: "LEFT_OF_RIGHT_EYEBROW", - 6: "RIGHT_OF_RIGHT_EYEBROW", - 7: "MIDPOINT_BETWEEN_EYES", - 8: "NOSE_TIP", - 9: "UPPER_LIP", - 10: "LOWER_LIP", - 11: "MOUTH_LEFT", - 12: "MOUTH_RIGHT", - 13: "MOUTH_CENTER", - 14: "NOSE_BOTTOM_RIGHT", - 15: "NOSE_BOTTOM_LEFT", - 16: "NOSE_BOTTOM_CENTER", - 17: "LEFT_EYE_TOP_BOUNDARY", - 18: "LEFT_EYE_RIGHT_CORNER", - 19: "LEFT_EYE_BOTTOM_BOUNDARY", - 20: "LEFT_EYE_LEFT_CORNER", - 21: "RIGHT_EYE_TOP_BOUNDARY", - 22: "RIGHT_EYE_RIGHT_CORNER", - 23: "RIGHT_EYE_BOTTOM_BOUNDARY", - 24: "RIGHT_EYE_LEFT_CORNER", - 25: "LEFT_EYEBROW_UPPER_MIDPOINT", - 26: "RIGHT_EYEBROW_UPPER_MIDPOINT", - 27: "LEFT_EAR_TRAGION", - 28: "RIGHT_EAR_TRAGION", - 29: "LEFT_EYE_PUPIL", - 30: "RIGHT_EYE_PUPIL", - 31: "FOREHEAD_GLABELLA", - 32: "CHIN_GNATHION", - 33: "CHIN_LEFT_GONION", - 34: "CHIN_RIGHT_GONION", -} -var FaceAnnotation_Landmark_Type_value = map[string]int32{ - "UNKNOWN_LANDMARK": 0, - "LEFT_EYE": 1, - "RIGHT_EYE": 2, - "LEFT_OF_LEFT_EYEBROW": 3, - "RIGHT_OF_LEFT_EYEBROW": 4, - "LEFT_OF_RIGHT_EYEBROW": 5, - "RIGHT_OF_RIGHT_EYEBROW": 6, - "MIDPOINT_BETWEEN_EYES": 7, - "NOSE_TIP": 8, - "UPPER_LIP": 9, - "LOWER_LIP": 10, - "MOUTH_LEFT": 11, - "MOUTH_RIGHT": 12, - "MOUTH_CENTER": 13, - "NOSE_BOTTOM_RIGHT": 14, - "NOSE_BOTTOM_LEFT": 15, - "NOSE_BOTTOM_CENTER": 16, - "LEFT_EYE_TOP_BOUNDARY": 17, - "LEFT_EYE_RIGHT_CORNER": 18, - "LEFT_EYE_BOTTOM_BOUNDARY": 19, - "LEFT_EYE_LEFT_CORNER": 20, - "RIGHT_EYE_TOP_BOUNDARY": 21, - "RIGHT_EYE_RIGHT_CORNER": 22, - "RIGHT_EYE_BOTTOM_BOUNDARY": 23, - "RIGHT_EYE_LEFT_CORNER": 24, - "LEFT_EYEBROW_UPPER_MIDPOINT": 25, - "RIGHT_EYEBROW_UPPER_MIDPOINT": 26, - "LEFT_EAR_TRAGION": 27, - "RIGHT_EAR_TRAGION": 28, - "LEFT_EYE_PUPIL": 29, - "RIGHT_EYE_PUPIL": 30, - "FOREHEAD_GLABELLA": 31, - "CHIN_GNATHION": 32, - "CHIN_LEFT_GONION": 33, - "CHIN_RIGHT_GONION": 34, -} - -func (x FaceAnnotation_Landmark_Type) String() string { - return proto.EnumName(FaceAnnotation_Landmark_Type_name, int32(x)) -} -func (FaceAnnotation_Landmark_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor1, []int{3, 0, 0} -} - -// The type of Google Cloud Vision API detection to perform, and the maximum -// number of results to return for that type. Multiple `Feature` objects can -// be specified in the `features` list. -type Feature struct { - // The feature type. - Type Feature_Type `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1.Feature_Type" json:"type,omitempty"` - // Maximum number of results of this type. Does not apply to - // `TEXT_DETECTION`, `DOCUMENT_TEXT_DETECTION`, or `CROP_HINTS`. - MaxResults int32 `protobuf:"varint,2,opt,name=max_results,json=maxResults" json:"max_results,omitempty"` - // Model to use for the feature. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,3,opt,name=model" json:"model,omitempty"` -} - -func (m *Feature) Reset() { *m = Feature{} } -func (m *Feature) String() string { return proto.CompactTextString(m) } -func (*Feature) ProtoMessage() {} -func (*Feature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Feature) GetType() Feature_Type { - if m != nil { - return m.Type - } - return Feature_TYPE_UNSPECIFIED -} - -func (m *Feature) GetMaxResults() int32 { - if m != nil { - return m.MaxResults - } - return 0 -} - -func (m *Feature) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -// External image source (Google Cloud Storage or web URL image location). -type ImageSource struct { - // **Use `image_uri` instead.** - // - // The Google Cloud Storage URI of the form - // `gs://bucket_name/object_name`. Object versioning is not supported. See - // [Google Cloud Storage Request - // URIs](https://cloud.google.com/storage/docs/reference-uris) for more info. - GcsImageUri string `protobuf:"bytes,1,opt,name=gcs_image_uri,json=gcsImageUri" json:"gcs_image_uri,omitempty"` - // The URI of the source image. Can be either: - // - // 1. A Google Cloud Storage URI of the form - // `gs://bucket_name/object_name`. Object versioning is not supported. See - // [Google Cloud Storage Request - // URIs](https://cloud.google.com/storage/docs/reference-uris) for more - // info. - // - // 2. A publicly-accessible image HTTP/HTTPS URL. When fetching images from - // HTTP/HTTPS URLs, Google cannot guarantee that the request will be - // completed. Your request may fail if the specified host denies the - // request (e.g. due to request throttling or DOS prevention), or if Google - // throttles requests to the site for abuse prevention. You should not - // depend on externally-hosted images for production applications. - // - // When both `gcs_image_uri` and `image_uri` are specified, `image_uri` takes - // precedence. - ImageUri string `protobuf:"bytes,2,opt,name=image_uri,json=imageUri" json:"image_uri,omitempty"` -} - -func (m *ImageSource) Reset() { *m = ImageSource{} } -func (m *ImageSource) String() string { return proto.CompactTextString(m) } -func (*ImageSource) ProtoMessage() {} -func (*ImageSource) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *ImageSource) GetGcsImageUri() string { - if m != nil { - return m.GcsImageUri - } - return "" -} - -func (m *ImageSource) GetImageUri() string { - if m != nil { - return m.ImageUri - } - return "" -} - -// Client image to perform Google Cloud Vision API tasks over. -type Image struct { - // Image content, represented as a stream of bytes. - // Note: As with all `bytes` fields, protobuffers use a pure binary - // representation, whereas JSON representations use base64. - Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - // Google Cloud Storage image location, or publicly-accessible image - // URL. If both `content` and `source` are provided for an image, `content` - // takes precedence and is used to perform the image annotation request. - Source *ImageSource `protobuf:"bytes,2,opt,name=source" json:"source,omitempty"` -} - -func (m *Image) Reset() { *m = Image{} } -func (m *Image) String() string { return proto.CompactTextString(m) } -func (*Image) ProtoMessage() {} -func (*Image) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *Image) GetContent() []byte { - if m != nil { - return m.Content - } - return nil -} - -func (m *Image) GetSource() *ImageSource { - if m != nil { - return m.Source - } - return nil -} - -// A face annotation object contains the results of face detection. -type FaceAnnotation struct { - // The bounding polygon around the face. The coordinates of the bounding box - // are in the original image's scale, as returned in `ImageParams`. - // The bounding box is computed to "frame" the face in accordance with human - // expectations. It is based on the landmarker results. - // Note that one or more x and/or y coordinates may not be generated in the - // `BoundingPoly` (the polygon will be unbounded) if only a partial face - // appears in the image to be annotated. - BoundingPoly *BoundingPoly `protobuf:"bytes,1,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"` - // The `fd_bounding_poly` bounding polygon is tighter than the - // `boundingPoly`, and encloses only the skin part of the face. Typically, it - // is used to eliminate the face from any image analysis that detects the - // "amount of skin" visible in an image. It is not based on the - // landmarker results, only on the initial face detection, hence - // the <code>fd</code> (face detection) prefix. - FdBoundingPoly *BoundingPoly `protobuf:"bytes,2,opt,name=fd_bounding_poly,json=fdBoundingPoly" json:"fd_bounding_poly,omitempty"` - // Detected face landmarks. - Landmarks []*FaceAnnotation_Landmark `protobuf:"bytes,3,rep,name=landmarks" json:"landmarks,omitempty"` - // Roll angle, which indicates the amount of clockwise/anti-clockwise rotation - // of the face relative to the image vertical about the axis perpendicular to - // the face. Range [-180,180]. - RollAngle float32 `protobuf:"fixed32,4,opt,name=roll_angle,json=rollAngle" json:"roll_angle,omitempty"` - // Yaw angle, which indicates the leftward/rightward angle that the face is - // pointing relative to the vertical plane perpendicular to the image. Range - // [-180,180]. - PanAngle float32 `protobuf:"fixed32,5,opt,name=pan_angle,json=panAngle" json:"pan_angle,omitempty"` - // Pitch angle, which indicates the upwards/downwards angle that the face is - // pointing relative to the image's horizontal plane. Range [-180,180]. - TiltAngle float32 `protobuf:"fixed32,6,opt,name=tilt_angle,json=tiltAngle" json:"tilt_angle,omitempty"` - // Detection confidence. Range [0, 1]. - DetectionConfidence float32 `protobuf:"fixed32,7,opt,name=detection_confidence,json=detectionConfidence" json:"detection_confidence,omitempty"` - // Face landmarking confidence. Range [0, 1]. - LandmarkingConfidence float32 `protobuf:"fixed32,8,opt,name=landmarking_confidence,json=landmarkingConfidence" json:"landmarking_confidence,omitempty"` - // Joy likelihood. - JoyLikelihood Likelihood `protobuf:"varint,9,opt,name=joy_likelihood,json=joyLikelihood,enum=google.cloud.vision.v1.Likelihood" json:"joy_likelihood,omitempty"` - // Sorrow likelihood. - SorrowLikelihood Likelihood `protobuf:"varint,10,opt,name=sorrow_likelihood,json=sorrowLikelihood,enum=google.cloud.vision.v1.Likelihood" json:"sorrow_likelihood,omitempty"` - // Anger likelihood. - AngerLikelihood Likelihood `protobuf:"varint,11,opt,name=anger_likelihood,json=angerLikelihood,enum=google.cloud.vision.v1.Likelihood" json:"anger_likelihood,omitempty"` - // Surprise likelihood. - SurpriseLikelihood Likelihood `protobuf:"varint,12,opt,name=surprise_likelihood,json=surpriseLikelihood,enum=google.cloud.vision.v1.Likelihood" json:"surprise_likelihood,omitempty"` - // Under-exposed likelihood. - UnderExposedLikelihood Likelihood `protobuf:"varint,13,opt,name=under_exposed_likelihood,json=underExposedLikelihood,enum=google.cloud.vision.v1.Likelihood" json:"under_exposed_likelihood,omitempty"` - // Blurred likelihood. - BlurredLikelihood Likelihood `protobuf:"varint,14,opt,name=blurred_likelihood,json=blurredLikelihood,enum=google.cloud.vision.v1.Likelihood" json:"blurred_likelihood,omitempty"` - // Headwear likelihood. - HeadwearLikelihood Likelihood `protobuf:"varint,15,opt,name=headwear_likelihood,json=headwearLikelihood,enum=google.cloud.vision.v1.Likelihood" json:"headwear_likelihood,omitempty"` -} - -func (m *FaceAnnotation) Reset() { *m = FaceAnnotation{} } -func (m *FaceAnnotation) String() string { return proto.CompactTextString(m) } -func (*FaceAnnotation) ProtoMessage() {} -func (*FaceAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *FaceAnnotation) GetBoundingPoly() *BoundingPoly { - if m != nil { - return m.BoundingPoly - } - return nil -} - -func (m *FaceAnnotation) GetFdBoundingPoly() *BoundingPoly { - if m != nil { - return m.FdBoundingPoly - } - return nil -} - -func (m *FaceAnnotation) GetLandmarks() []*FaceAnnotation_Landmark { - if m != nil { - return m.Landmarks - } - return nil -} - -func (m *FaceAnnotation) GetRollAngle() float32 { - if m != nil { - return m.RollAngle - } - return 0 -} - -func (m *FaceAnnotation) GetPanAngle() float32 { - if m != nil { - return m.PanAngle - } - return 0 -} - -func (m *FaceAnnotation) GetTiltAngle() float32 { - if m != nil { - return m.TiltAngle - } - return 0 -} - -func (m *FaceAnnotation) GetDetectionConfidence() float32 { - if m != nil { - return m.DetectionConfidence - } - return 0 -} - -func (m *FaceAnnotation) GetLandmarkingConfidence() float32 { - if m != nil { - return m.LandmarkingConfidence - } - return 0 -} - -func (m *FaceAnnotation) GetJoyLikelihood() Likelihood { - if m != nil { - return m.JoyLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetSorrowLikelihood() Likelihood { - if m != nil { - return m.SorrowLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetAngerLikelihood() Likelihood { - if m != nil { - return m.AngerLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetSurpriseLikelihood() Likelihood { - if m != nil { - return m.SurpriseLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetUnderExposedLikelihood() Likelihood { - if m != nil { - return m.UnderExposedLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetBlurredLikelihood() Likelihood { - if m != nil { - return m.BlurredLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetHeadwearLikelihood() Likelihood { - if m != nil { - return m.HeadwearLikelihood - } - return Likelihood_UNKNOWN -} - -// A face-specific landmark (for example, a face feature). -type FaceAnnotation_Landmark struct { - // Face landmark type. - Type FaceAnnotation_Landmark_Type `protobuf:"varint,3,opt,name=type,enum=google.cloud.vision.v1.FaceAnnotation_Landmark_Type" json:"type,omitempty"` - // Face landmark position. - Position *Position `protobuf:"bytes,4,opt,name=position" json:"position,omitempty"` -} - -func (m *FaceAnnotation_Landmark) Reset() { *m = FaceAnnotation_Landmark{} } -func (m *FaceAnnotation_Landmark) String() string { return proto.CompactTextString(m) } -func (*FaceAnnotation_Landmark) ProtoMessage() {} -func (*FaceAnnotation_Landmark) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} } - -func (m *FaceAnnotation_Landmark) GetType() FaceAnnotation_Landmark_Type { - if m != nil { - return m.Type - } - return FaceAnnotation_Landmark_UNKNOWN_LANDMARK -} - -func (m *FaceAnnotation_Landmark) GetPosition() *Position { - if m != nil { - return m.Position - } - return nil -} - -// Detected entity location information. -type LocationInfo struct { - // lat/long location coordinates. - LatLng *google_type1.LatLng `protobuf:"bytes,1,opt,name=lat_lng,json=latLng" json:"lat_lng,omitempty"` -} - -func (m *LocationInfo) Reset() { *m = LocationInfo{} } -func (m *LocationInfo) String() string { return proto.CompactTextString(m) } -func (*LocationInfo) ProtoMessage() {} -func (*LocationInfo) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *LocationInfo) GetLatLng() *google_type1.LatLng { - if m != nil { - return m.LatLng - } - return nil -} - -// A `Property` consists of a user-supplied name/value pair. -type Property struct { - // Name of the property. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Value of the property. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - // Value of numeric properties. - Uint64Value uint64 `protobuf:"varint,3,opt,name=uint64_value,json=uint64Value" json:"uint64_value,omitempty"` -} - -func (m *Property) Reset() { *m = Property{} } -func (m *Property) String() string { return proto.CompactTextString(m) } -func (*Property) ProtoMessage() {} -func (*Property) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *Property) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Property) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *Property) GetUint64Value() uint64 { - if m != nil { - return m.Uint64Value - } - return 0 -} - -// Set of detected entity features. -type EntityAnnotation struct { - // Opaque entity ID. Some IDs may be available in - // [Google Knowledge Graph Search - // API](https://developers.google.com/knowledge-graph/). - Mid string `protobuf:"bytes,1,opt,name=mid" json:"mid,omitempty"` - // The language code for the locale in which the entity textual - // `description` is expressed. - Locale string `protobuf:"bytes,2,opt,name=locale" json:"locale,omitempty"` - // Entity textual description, expressed in its `locale` language. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // Overall score of the result. Range [0, 1]. - Score float32 `protobuf:"fixed32,4,opt,name=score" json:"score,omitempty"` - // **Deprecated. Use `score` instead.** - // The accuracy of the entity detection in an image. - // For example, for an image in which the "Eiffel Tower" entity is detected, - // this field represents the confidence that there is a tower in the query - // image. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"` - // The relevancy of the ICA (Image Content Annotation) label to the - // image. For example, the relevancy of "tower" is likely higher to an image - // containing the detected "Eiffel Tower" than to an image containing a - // detected distant towering building, even though the confidence that - // there is a tower in each image may be the same. Range [0, 1]. - Topicality float32 `protobuf:"fixed32,6,opt,name=topicality" json:"topicality,omitempty"` - // Image region to which this entity belongs. Not produced - // for `LABEL_DETECTION` features. - BoundingPoly *BoundingPoly `protobuf:"bytes,7,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"` - // The location information for the detected entity. Multiple - // `LocationInfo` elements can be present because one location may - // indicate the location of the scene in the image, and another location - // may indicate the location of the place where the image was taken. - // Location information is usually present for landmarks. - Locations []*LocationInfo `protobuf:"bytes,8,rep,name=locations" json:"locations,omitempty"` - // Some entities may have optional user-supplied `Property` (name/value) - // fields, such a score or string that qualifies the entity. - Properties []*Property `protobuf:"bytes,9,rep,name=properties" json:"properties,omitempty"` -} - -func (m *EntityAnnotation) Reset() { *m = EntityAnnotation{} } -func (m *EntityAnnotation) String() string { return proto.CompactTextString(m) } -func (*EntityAnnotation) ProtoMessage() {} -func (*EntityAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *EntityAnnotation) GetMid() string { - if m != nil { - return m.Mid - } - return "" -} - -func (m *EntityAnnotation) GetLocale() string { - if m != nil { - return m.Locale - } - return "" -} - -func (m *EntityAnnotation) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *EntityAnnotation) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *EntityAnnotation) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func (m *EntityAnnotation) GetTopicality() float32 { - if m != nil { - return m.Topicality - } - return 0 -} - -func (m *EntityAnnotation) GetBoundingPoly() *BoundingPoly { - if m != nil { - return m.BoundingPoly - } - return nil -} - -func (m *EntityAnnotation) GetLocations() []*LocationInfo { - if m != nil { - return m.Locations - } - return nil -} - -func (m *EntityAnnotation) GetProperties() []*Property { - if m != nil { - return m.Properties - } - return nil -} - -// Set of features pertaining to the image, computed by computer vision -// methods over safe-search verticals (for example, adult, spoof, medical, -// violence). -type SafeSearchAnnotation struct { - // Represents the adult content likelihood for the image. Adult content may - // contain elements such as nudity, pornographic images or cartoons, or - // sexual activities. - Adult Likelihood `protobuf:"varint,1,opt,name=adult,enum=google.cloud.vision.v1.Likelihood" json:"adult,omitempty"` - // Spoof likelihood. The likelihood that an modification - // was made to the image's canonical version to make it appear - // funny or offensive. - Spoof Likelihood `protobuf:"varint,2,opt,name=spoof,enum=google.cloud.vision.v1.Likelihood" json:"spoof,omitempty"` - // Likelihood that this is a medical image. - Medical Likelihood `protobuf:"varint,3,opt,name=medical,enum=google.cloud.vision.v1.Likelihood" json:"medical,omitempty"` - // Likelihood that this image contains violent content. - Violence Likelihood `protobuf:"varint,4,opt,name=violence,enum=google.cloud.vision.v1.Likelihood" json:"violence,omitempty"` - // Likelihood that the request image contains racy content. Racy content may - // include (but is not limited to) skimpy or sheer clothing, strategically - // covered nudity, lewd or provocative poses, or close-ups of sensitive - // body areas. - Racy Likelihood `protobuf:"varint,9,opt,name=racy,enum=google.cloud.vision.v1.Likelihood" json:"racy,omitempty"` -} - -func (m *SafeSearchAnnotation) Reset() { *m = SafeSearchAnnotation{} } -func (m *SafeSearchAnnotation) String() string { return proto.CompactTextString(m) } -func (*SafeSearchAnnotation) ProtoMessage() {} -func (*SafeSearchAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *SafeSearchAnnotation) GetAdult() Likelihood { - if m != nil { - return m.Adult - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetSpoof() Likelihood { - if m != nil { - return m.Spoof - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetMedical() Likelihood { - if m != nil { - return m.Medical - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetViolence() Likelihood { - if m != nil { - return m.Violence - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetRacy() Likelihood { - if m != nil { - return m.Racy - } - return Likelihood_UNKNOWN -} - -// Rectangle determined by min and max `LatLng` pairs. -type LatLongRect struct { - // Min lat/long pair. - MinLatLng *google_type1.LatLng `protobuf:"bytes,1,opt,name=min_lat_lng,json=minLatLng" json:"min_lat_lng,omitempty"` - // Max lat/long pair. - MaxLatLng *google_type1.LatLng `protobuf:"bytes,2,opt,name=max_lat_lng,json=maxLatLng" json:"max_lat_lng,omitempty"` -} - -func (m *LatLongRect) Reset() { *m = LatLongRect{} } -func (m *LatLongRect) String() string { return proto.CompactTextString(m) } -func (*LatLongRect) ProtoMessage() {} -func (*LatLongRect) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *LatLongRect) GetMinLatLng() *google_type1.LatLng { - if m != nil { - return m.MinLatLng - } - return nil -} - -func (m *LatLongRect) GetMaxLatLng() *google_type1.LatLng { - if m != nil { - return m.MaxLatLng - } - return nil -} - -// Color information consists of RGB channels, score, and the fraction of -// the image that the color occupies in the image. -type ColorInfo struct { - // RGB components of the color. - Color *google_type.Color `protobuf:"bytes,1,opt,name=color" json:"color,omitempty"` - // Image-specific score for this color. Value in range [0, 1]. - Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` - // The fraction of pixels the color occupies in the image. - // Value in range [0, 1]. - PixelFraction float32 `protobuf:"fixed32,3,opt,name=pixel_fraction,json=pixelFraction" json:"pixel_fraction,omitempty"` -} - -func (m *ColorInfo) Reset() { *m = ColorInfo{} } -func (m *ColorInfo) String() string { return proto.CompactTextString(m) } -func (*ColorInfo) ProtoMessage() {} -func (*ColorInfo) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *ColorInfo) GetColor() *google_type.Color { - if m != nil { - return m.Color - } - return nil -} - -func (m *ColorInfo) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *ColorInfo) GetPixelFraction() float32 { - if m != nil { - return m.PixelFraction - } - return 0 -} - -// Set of dominant colors and their corresponding scores. -type DominantColorsAnnotation struct { - // RGB color values with their score and pixel fraction. - Colors []*ColorInfo `protobuf:"bytes,1,rep,name=colors" json:"colors,omitempty"` -} - -func (m *DominantColorsAnnotation) Reset() { *m = DominantColorsAnnotation{} } -func (m *DominantColorsAnnotation) String() string { return proto.CompactTextString(m) } -func (*DominantColorsAnnotation) ProtoMessage() {} -func (*DominantColorsAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *DominantColorsAnnotation) GetColors() []*ColorInfo { - if m != nil { - return m.Colors - } - return nil -} - -// Stores image properties, such as dominant colors. -type ImageProperties struct { - // If present, dominant colors completed successfully. - DominantColors *DominantColorsAnnotation `protobuf:"bytes,1,opt,name=dominant_colors,json=dominantColors" json:"dominant_colors,omitempty"` -} - -func (m *ImageProperties) Reset() { *m = ImageProperties{} } -func (m *ImageProperties) String() string { return proto.CompactTextString(m) } -func (*ImageProperties) ProtoMessage() {} -func (*ImageProperties) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *ImageProperties) GetDominantColors() *DominantColorsAnnotation { - if m != nil { - return m.DominantColors - } - return nil -} - -// Single crop hint that is used to generate a new crop when serving an image. -type CropHint struct { - // The bounding polygon for the crop region. The coordinates of the bounding - // box are in the original image's scale, as returned in `ImageParams`. - BoundingPoly *BoundingPoly `protobuf:"bytes,1,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"` - // Confidence of this being a salient region. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` - // Fraction of importance of this salient region with respect to the original - // image. - ImportanceFraction float32 `protobuf:"fixed32,3,opt,name=importance_fraction,json=importanceFraction" json:"importance_fraction,omitempty"` -} - -func (m *CropHint) Reset() { *m = CropHint{} } -func (m *CropHint) String() string { return proto.CompactTextString(m) } -func (*CropHint) ProtoMessage() {} -func (*CropHint) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *CropHint) GetBoundingPoly() *BoundingPoly { - if m != nil { - return m.BoundingPoly - } - return nil -} - -func (m *CropHint) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func (m *CropHint) GetImportanceFraction() float32 { - if m != nil { - return m.ImportanceFraction - } - return 0 -} - -// Set of crop hints that are used to generate new crops when serving images. -type CropHintsAnnotation struct { - // Crop hint results. - CropHints []*CropHint `protobuf:"bytes,1,rep,name=crop_hints,json=cropHints" json:"crop_hints,omitempty"` -} - -func (m *CropHintsAnnotation) Reset() { *m = CropHintsAnnotation{} } -func (m *CropHintsAnnotation) String() string { return proto.CompactTextString(m) } -func (*CropHintsAnnotation) ProtoMessage() {} -func (*CropHintsAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *CropHintsAnnotation) GetCropHints() []*CropHint { - if m != nil { - return m.CropHints - } - return nil -} - -// Parameters for crop hints annotation request. -type CropHintsParams struct { - // Aspect ratios in floats, representing the ratio of the width to the height - // of the image. For example, if the desired aspect ratio is 4/3, the - // corresponding float value should be 1.33333. If not specified, the - // best possible crop is returned. The number of provided aspect ratios is - // limited to a maximum of 16; any aspect ratios provided after the 16th are - // ignored. - AspectRatios []float32 `protobuf:"fixed32,1,rep,packed,name=aspect_ratios,json=aspectRatios" json:"aspect_ratios,omitempty"` -} - -func (m *CropHintsParams) Reset() { *m = CropHintsParams{} } -func (m *CropHintsParams) String() string { return proto.CompactTextString(m) } -func (*CropHintsParams) ProtoMessage() {} -func (*CropHintsParams) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *CropHintsParams) GetAspectRatios() []float32 { - if m != nil { - return m.AspectRatios - } - return nil -} - -// Parameters for web detection request. -type WebDetectionParams struct { - // Whether to include results derived from the geo information in the image. - IncludeGeoResults bool `protobuf:"varint,2,opt,name=include_geo_results,json=includeGeoResults" json:"include_geo_results,omitempty"` -} - -func (m *WebDetectionParams) Reset() { *m = WebDetectionParams{} } -func (m *WebDetectionParams) String() string { return proto.CompactTextString(m) } -func (*WebDetectionParams) ProtoMessage() {} -func (*WebDetectionParams) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *WebDetectionParams) GetIncludeGeoResults() bool { - if m != nil { - return m.IncludeGeoResults - } - return false -} - -// Image context and/or feature-specific parameters. -type ImageContext struct { - // lat/long rectangle that specifies the location of the image. - LatLongRect *LatLongRect `protobuf:"bytes,1,opt,name=lat_long_rect,json=latLongRect" json:"lat_long_rect,omitempty"` - // List of languages to use for TEXT_DETECTION. In most cases, an empty value - // yields the best results since it enables automatic language detection. For - // languages based on the Latin alphabet, setting `language_hints` is not - // needed. In rare cases, when the language of the text in the image is known, - // setting a hint will help get better results (although it will be a - // significant hindrance if the hint is wrong). Text detection returns an - // error if one or more of the specified languages is not one of the - // [supported languages](/vision/docs/languages). - LanguageHints []string `protobuf:"bytes,2,rep,name=language_hints,json=languageHints" json:"language_hints,omitempty"` - // Parameters for crop hints annotation request. - CropHintsParams *CropHintsParams `protobuf:"bytes,4,opt,name=crop_hints_params,json=cropHintsParams" json:"crop_hints_params,omitempty"` - // Parameters for web detection. - WebDetectionParams *WebDetectionParams `protobuf:"bytes,6,opt,name=web_detection_params,json=webDetectionParams" json:"web_detection_params,omitempty"` -} - -func (m *ImageContext) Reset() { *m = ImageContext{} } -func (m *ImageContext) String() string { return proto.CompactTextString(m) } -func (*ImageContext) ProtoMessage() {} -func (*ImageContext) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *ImageContext) GetLatLongRect() *LatLongRect { - if m != nil { - return m.LatLongRect - } - return nil -} - -func (m *ImageContext) GetLanguageHints() []string { - if m != nil { - return m.LanguageHints - } - return nil -} - -func (m *ImageContext) GetCropHintsParams() *CropHintsParams { - if m != nil { - return m.CropHintsParams - } - return nil -} - -func (m *ImageContext) GetWebDetectionParams() *WebDetectionParams { - if m != nil { - return m.WebDetectionParams - } - return nil -} - -// Request for performing Google Cloud Vision API tasks over a user-provided -// image, with user-requested features. -type AnnotateImageRequest struct { - // The image to be processed. - Image *Image `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"` - // Requested features. - Features []*Feature `protobuf:"bytes,2,rep,name=features" json:"features,omitempty"` - // Additional context that may accompany the image. - ImageContext *ImageContext `protobuf:"bytes,3,opt,name=image_context,json=imageContext" json:"image_context,omitempty"` -} - -func (m *AnnotateImageRequest) Reset() { *m = AnnotateImageRequest{} } -func (m *AnnotateImageRequest) String() string { return proto.CompactTextString(m) } -func (*AnnotateImageRequest) ProtoMessage() {} -func (*AnnotateImageRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *AnnotateImageRequest) GetImage() *Image { - if m != nil { - return m.Image - } - return nil -} - -func (m *AnnotateImageRequest) GetFeatures() []*Feature { - if m != nil { - return m.Features - } - return nil -} - -func (m *AnnotateImageRequest) GetImageContext() *ImageContext { - if m != nil { - return m.ImageContext - } - return nil -} - -// Response to an image annotation request. -type AnnotateImageResponse struct { - // If present, face detection has completed successfully. - FaceAnnotations []*FaceAnnotation `protobuf:"bytes,1,rep,name=face_annotations,json=faceAnnotations" json:"face_annotations,omitempty"` - // If present, landmark detection has completed successfully. - LandmarkAnnotations []*EntityAnnotation `protobuf:"bytes,2,rep,name=landmark_annotations,json=landmarkAnnotations" json:"landmark_annotations,omitempty"` - // If present, logo detection has completed successfully. - LogoAnnotations []*EntityAnnotation `protobuf:"bytes,3,rep,name=logo_annotations,json=logoAnnotations" json:"logo_annotations,omitempty"` - // If present, label detection has completed successfully. - LabelAnnotations []*EntityAnnotation `protobuf:"bytes,4,rep,name=label_annotations,json=labelAnnotations" json:"label_annotations,omitempty"` - // If present, text (OCR) detection has completed successfully. - TextAnnotations []*EntityAnnotation `protobuf:"bytes,5,rep,name=text_annotations,json=textAnnotations" json:"text_annotations,omitempty"` - // If present, text (OCR) detection or document (OCR) text detection has - // completed successfully. - // This annotation provides the structural hierarchy for the OCR detected - // text. - FullTextAnnotation *TextAnnotation `protobuf:"bytes,12,opt,name=full_text_annotation,json=fullTextAnnotation" json:"full_text_annotation,omitempty"` - // If present, safe-search annotation has completed successfully. - SafeSearchAnnotation *SafeSearchAnnotation `protobuf:"bytes,6,opt,name=safe_search_annotation,json=safeSearchAnnotation" json:"safe_search_annotation,omitempty"` - // If present, image properties were extracted successfully. - ImagePropertiesAnnotation *ImageProperties `protobuf:"bytes,8,opt,name=image_properties_annotation,json=imagePropertiesAnnotation" json:"image_properties_annotation,omitempty"` - // If present, crop hints have completed successfully. - CropHintsAnnotation *CropHintsAnnotation `protobuf:"bytes,11,opt,name=crop_hints_annotation,json=cropHintsAnnotation" json:"crop_hints_annotation,omitempty"` - // If present, web detection has completed successfully. - WebDetection *WebDetection `protobuf:"bytes,13,opt,name=web_detection,json=webDetection" json:"web_detection,omitempty"` - // If set, represents the error message for the operation. - // Note that filled-in image annotations are guaranteed to be - // correct, even when `error` is set. - Error *google_rpc.Status `protobuf:"bytes,9,opt,name=error" json:"error,omitempty"` -} - -func (m *AnnotateImageResponse) Reset() { *m = AnnotateImageResponse{} } -func (m *AnnotateImageResponse) String() string { return proto.CompactTextString(m) } -func (*AnnotateImageResponse) ProtoMessage() {} -func (*AnnotateImageResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } - -func (m *AnnotateImageResponse) GetFaceAnnotations() []*FaceAnnotation { - if m != nil { - return m.FaceAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetLandmarkAnnotations() []*EntityAnnotation { - if m != nil { - return m.LandmarkAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetLogoAnnotations() []*EntityAnnotation { - if m != nil { - return m.LogoAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetLabelAnnotations() []*EntityAnnotation { - if m != nil { - return m.LabelAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetTextAnnotations() []*EntityAnnotation { - if m != nil { - return m.TextAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetFullTextAnnotation() *TextAnnotation { - if m != nil { - return m.FullTextAnnotation - } - return nil -} - -func (m *AnnotateImageResponse) GetSafeSearchAnnotation() *SafeSearchAnnotation { - if m != nil { - return m.SafeSearchAnnotation - } - return nil -} - -func (m *AnnotateImageResponse) GetImagePropertiesAnnotation() *ImageProperties { - if m != nil { - return m.ImagePropertiesAnnotation - } - return nil -} - -func (m *AnnotateImageResponse) GetCropHintsAnnotation() *CropHintsAnnotation { - if m != nil { - return m.CropHintsAnnotation - } - return nil -} - -func (m *AnnotateImageResponse) GetWebDetection() *WebDetection { - if m != nil { - return m.WebDetection - } - return nil -} - -func (m *AnnotateImageResponse) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -// Multiple image annotation requests are batched into a single service call. -type BatchAnnotateImagesRequest struct { - // Individual image annotation requests for this batch. - Requests []*AnnotateImageRequest `protobuf:"bytes,1,rep,name=requests" json:"requests,omitempty"` -} - -func (m *BatchAnnotateImagesRequest) Reset() { *m = BatchAnnotateImagesRequest{} } -func (m *BatchAnnotateImagesRequest) String() string { return proto.CompactTextString(m) } -func (*BatchAnnotateImagesRequest) ProtoMessage() {} -func (*BatchAnnotateImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } - -func (m *BatchAnnotateImagesRequest) GetRequests() []*AnnotateImageRequest { - if m != nil { - return m.Requests - } - return nil -} - -// Response to a batch image annotation request. -type BatchAnnotateImagesResponse struct { - // Individual responses to image annotation requests within the batch. - Responses []*AnnotateImageResponse `protobuf:"bytes,1,rep,name=responses" json:"responses,omitempty"` -} - -func (m *BatchAnnotateImagesResponse) Reset() { *m = BatchAnnotateImagesResponse{} } -func (m *BatchAnnotateImagesResponse) String() string { return proto.CompactTextString(m) } -func (*BatchAnnotateImagesResponse) ProtoMessage() {} -func (*BatchAnnotateImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } - -func (m *BatchAnnotateImagesResponse) GetResponses() []*AnnotateImageResponse { - if m != nil { - return m.Responses - } - return nil -} - -func init() { - proto.RegisterType((*Feature)(nil), "google.cloud.vision.v1.Feature") - proto.RegisterType((*ImageSource)(nil), "google.cloud.vision.v1.ImageSource") - proto.RegisterType((*Image)(nil), "google.cloud.vision.v1.Image") - proto.RegisterType((*FaceAnnotation)(nil), "google.cloud.vision.v1.FaceAnnotation") - proto.RegisterType((*FaceAnnotation_Landmark)(nil), "google.cloud.vision.v1.FaceAnnotation.Landmark") - proto.RegisterType((*LocationInfo)(nil), "google.cloud.vision.v1.LocationInfo") - proto.RegisterType((*Property)(nil), "google.cloud.vision.v1.Property") - proto.RegisterType((*EntityAnnotation)(nil), "google.cloud.vision.v1.EntityAnnotation") - proto.RegisterType((*SafeSearchAnnotation)(nil), "google.cloud.vision.v1.SafeSearchAnnotation") - proto.RegisterType((*LatLongRect)(nil), "google.cloud.vision.v1.LatLongRect") - proto.RegisterType((*ColorInfo)(nil), "google.cloud.vision.v1.ColorInfo") - proto.RegisterType((*DominantColorsAnnotation)(nil), "google.cloud.vision.v1.DominantColorsAnnotation") - proto.RegisterType((*ImageProperties)(nil), "google.cloud.vision.v1.ImageProperties") - proto.RegisterType((*CropHint)(nil), "google.cloud.vision.v1.CropHint") - proto.RegisterType((*CropHintsAnnotation)(nil), "google.cloud.vision.v1.CropHintsAnnotation") - proto.RegisterType((*CropHintsParams)(nil), "google.cloud.vision.v1.CropHintsParams") - proto.RegisterType((*WebDetectionParams)(nil), "google.cloud.vision.v1.WebDetectionParams") - proto.RegisterType((*ImageContext)(nil), "google.cloud.vision.v1.ImageContext") - proto.RegisterType((*AnnotateImageRequest)(nil), "google.cloud.vision.v1.AnnotateImageRequest") - proto.RegisterType((*AnnotateImageResponse)(nil), "google.cloud.vision.v1.AnnotateImageResponse") - proto.RegisterType((*BatchAnnotateImagesRequest)(nil), "google.cloud.vision.v1.BatchAnnotateImagesRequest") - proto.RegisterType((*BatchAnnotateImagesResponse)(nil), "google.cloud.vision.v1.BatchAnnotateImagesResponse") - proto.RegisterEnum("google.cloud.vision.v1.Likelihood", Likelihood_name, Likelihood_value) - proto.RegisterEnum("google.cloud.vision.v1.Feature_Type", Feature_Type_name, Feature_Type_value) - proto.RegisterEnum("google.cloud.vision.v1.FaceAnnotation_Landmark_Type", FaceAnnotation_Landmark_Type_name, FaceAnnotation_Landmark_Type_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ImageAnnotator service - -type ImageAnnotatorClient interface { - // Run image detection and annotation for a batch of images. - BatchAnnotateImages(ctx context.Context, in *BatchAnnotateImagesRequest, opts ...grpc.CallOption) (*BatchAnnotateImagesResponse, error) -} - -type imageAnnotatorClient struct { - cc *grpc.ClientConn -} - -func NewImageAnnotatorClient(cc *grpc.ClientConn) ImageAnnotatorClient { - return &imageAnnotatorClient{cc} -} - -func (c *imageAnnotatorClient) BatchAnnotateImages(ctx context.Context, in *BatchAnnotateImagesRequest, opts ...grpc.CallOption) (*BatchAnnotateImagesResponse, error) { - out := new(BatchAnnotateImagesResponse) - err := grpc.Invoke(ctx, "/google.cloud.vision.v1.ImageAnnotator/BatchAnnotateImages", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ImageAnnotator service - -type ImageAnnotatorServer interface { - // Run image detection and annotation for a batch of images. - BatchAnnotateImages(context.Context, *BatchAnnotateImagesRequest) (*BatchAnnotateImagesResponse, error) -} - -func RegisterImageAnnotatorServer(s *grpc.Server, srv ImageAnnotatorServer) { - s.RegisterService(&_ImageAnnotator_serviceDesc, srv) -} - -func _ImageAnnotator_BatchAnnotateImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchAnnotateImagesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ImageAnnotatorServer).BatchAnnotateImages(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.vision.v1.ImageAnnotator/BatchAnnotateImages", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ImageAnnotatorServer).BatchAnnotateImages(ctx, req.(*BatchAnnotateImagesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ImageAnnotator_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.vision.v1.ImageAnnotator", - HandlerType: (*ImageAnnotatorServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "BatchAnnotateImages", - Handler: _ImageAnnotator_BatchAnnotateImages_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/vision/v1/image_annotator.proto", -} - -func init() { proto.RegisterFile("google/cloud/vision/v1/image_annotator.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 2382 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4f, 0x6f, 0xe3, 0xc6, - 0x15, 0x8f, 0xe4, 0x7f, 0xd2, 0x93, 0x2c, 0xd1, 0x23, 0xaf, 0xa3, 0xf5, 0xee, 0x66, 0x1d, 0xa6, - 0x69, 0x8d, 0x6d, 0x2a, 0x37, 0x4e, 0x1a, 0xa4, 0xc9, 0xa2, 0xad, 0x24, 0xd3, 0xb6, 0xb0, 0xb2, - 0xa4, 0x8c, 0xe4, 0x38, 0x6e, 0x83, 0x12, 0x34, 0x35, 0xd2, 0x32, 0xa1, 0x38, 0x2c, 0x49, 0xed, - 0xda, 0xd7, 0x02, 0xfd, 0x04, 0xbd, 0xf7, 0xd8, 0x7b, 0x80, 0x7e, 0x80, 0x5e, 0x7a, 0xe8, 0xb1, - 0xc8, 0x57, 0xe8, 0x37, 0x28, 0x50, 0xf4, 0x58, 0xcc, 0x1f, 0x52, 0x43, 0xad, 0xb5, 0x2b, 0x17, - 0x3d, 0x89, 0xf3, 0xde, 0xfb, 0xfd, 0xde, 0xcc, 0x9b, 0x79, 0x33, 0x6f, 0x46, 0xf0, 0xc1, 0x98, - 0xd2, 0xb1, 0x4b, 0x0e, 0x6c, 0x97, 0x4e, 0x87, 0x07, 0x2f, 0x9c, 0xd0, 0xa1, 0xde, 0xc1, 0x8b, - 0x0f, 0x0f, 0x9c, 0x89, 0x35, 0x26, 0xa6, 0xe5, 0x79, 0x34, 0xb2, 0x22, 0x1a, 0xd4, 0xfc, 0x80, - 0x46, 0x14, 0xed, 0x08, 0xeb, 0x1a, 0xb7, 0xae, 0x09, 0xeb, 0xda, 0x8b, 0x0f, 0x77, 0x1f, 0x4a, - 0x16, 0xcb, 0x77, 0x0e, 0x24, 0xc6, 0xa1, 0x5e, 0x28, 0x50, 0xbb, 0xef, 0x2f, 0xf0, 0x31, 0x26, - 0x74, 0x42, 0xa2, 0xe0, 0x46, 0x9a, 0x2d, 0xea, 0x4a, 0x44, 0xae, 0x23, 0x73, 0xc6, 0x2a, 0xad, - 0x9f, 0x2c, 0xb0, 0x7e, 0x49, 0xae, 0xcc, 0x21, 0x89, 0x88, 0xad, 0xd8, 0xbe, 0x2d, 0x6d, 0x03, - 0xdf, 0x3e, 0x08, 0x23, 0x2b, 0x9a, 0x86, 0x73, 0x8a, 0xe8, 0xc6, 0x27, 0x07, 0x36, 0x75, 0xe3, - 0x81, 0xee, 0x56, 0x55, 0x85, 0x6b, 0x45, 0xae, 0x37, 0x16, 0x1a, 0xfd, 0x5f, 0x59, 0xd8, 0x38, - 0x26, 0x56, 0x34, 0x0d, 0x08, 0xfa, 0x14, 0x56, 0x99, 0x41, 0x35, 0xb3, 0x97, 0xd9, 0x2f, 0x1d, - 0xfe, 0xa0, 0x76, 0x7b, 0x74, 0x6a, 0xd2, 0xbc, 0x36, 0xb8, 0xf1, 0x09, 0xe6, 0x08, 0xf4, 0x18, - 0x0a, 0x13, 0xeb, 0xda, 0x0c, 0x48, 0x38, 0x75, 0xa3, 0xb0, 0x9a, 0xdd, 0xcb, 0xec, 0xaf, 0x61, - 0x98, 0x58, 0xd7, 0x58, 0x48, 0xd0, 0x36, 0xac, 0x4d, 0xe8, 0x90, 0xb8, 0xd5, 0x95, 0xbd, 0xcc, - 0x7e, 0x1e, 0x8b, 0x86, 0xfe, 0xef, 0x0c, 0xac, 0x32, 0x16, 0xb4, 0x0d, 0xda, 0xe0, 0xb2, 0x67, - 0x98, 0xe7, 0x9d, 0x7e, 0xcf, 0x68, 0xb6, 0x8e, 0x5b, 0xc6, 0x91, 0xf6, 0x16, 0x42, 0x50, 0x3a, - 0xae, 0x37, 0x0d, 0xf3, 0xc8, 0x18, 0x18, 0xcd, 0x41, 0xab, 0xdb, 0xd1, 0x32, 0x68, 0x07, 0x50, - 0xbb, 0xde, 0x39, 0x3a, 0xab, 0xe3, 0x67, 0x8a, 0x3c, 0xcb, 0x6c, 0xdb, 0xdd, 0x93, 0xae, 0x22, - 0x5b, 0x41, 0x15, 0x28, 0xb7, 0xeb, 0x0d, 0xa3, 0xad, 0x08, 0x57, 0x99, 0xe1, 0xc0, 0xf8, 0x6a, - 0xa0, 0xc8, 0xd6, 0xd0, 0x03, 0x78, 0xfb, 0xa8, 0xdb, 0x3c, 0x3f, 0x33, 0x3a, 0x03, 0x73, 0x4e, - 0x59, 0x40, 0xf7, 0xe1, 0x5e, 0xbf, 0x7e, 0x6c, 0x98, 0x7d, 0xa3, 0x8e, 0x9b, 0xa7, 0x8a, 0x6a, - 0x9d, 0x75, 0xbb, 0x75, 0x56, 0x3f, 0x31, 0xcc, 0x1e, 0xee, 0xf6, 0x0c, 0x3c, 0x68, 0x19, 0x7d, - 0x6d, 0x03, 0x95, 0x00, 0x9a, 0xb8, 0xdb, 0x33, 0x4f, 0x5b, 0x9d, 0x41, 0x5f, 0xcb, 0xa3, 0x2d, - 0xd8, 0xbc, 0x30, 0x1a, 0x0a, 0x10, 0xf4, 0x0e, 0x14, 0x5a, 0x6c, 0x45, 0xf6, 0xe9, 0x34, 0xb0, - 0x09, 0xd2, 0x61, 0x73, 0x6c, 0x87, 0xa6, 0x58, 0xa4, 0xd3, 0xc0, 0xe1, 0x33, 0x90, 0xc7, 0x85, - 0xb1, 0x1d, 0x72, 0xb3, 0xf3, 0xc0, 0x41, 0x0f, 0x20, 0x3f, 0xd3, 0x67, 0xb9, 0x3e, 0xe7, 0x48, - 0xa5, 0xfe, 0x5b, 0x58, 0xe3, 0x86, 0xa8, 0x0a, 0x1b, 0x36, 0xf5, 0x22, 0xe2, 0x45, 0x9c, 0xa3, - 0x88, 0xe3, 0x26, 0xfa, 0x1c, 0xd6, 0x43, 0xee, 0x8d, 0x83, 0x0b, 0x87, 0xef, 0x2d, 0x9a, 0x5e, - 0xa5, 0x63, 0x58, 0x42, 0xf4, 0x7f, 0x94, 0xa1, 0x74, 0x6c, 0xd9, 0xa4, 0x9e, 0x2c, 0x5b, 0xd4, - 0x82, 0xcd, 0x2b, 0x3a, 0xf5, 0x86, 0x8e, 0x37, 0x36, 0x7d, 0xea, 0xde, 0x70, 0x7f, 0x85, 0xc5, - 0xab, 0xa6, 0x21, 0x8d, 0x7b, 0xd4, 0xbd, 0xc1, 0xc5, 0x2b, 0xa5, 0x85, 0x3a, 0xa0, 0x8d, 0x86, - 0x66, 0x9a, 0x2d, 0x7b, 0x07, 0xb6, 0xd2, 0x68, 0xa8, 0xb6, 0xd1, 0x19, 0xe4, 0x5d, 0xcb, 0x1b, - 0x4e, 0xac, 0xe0, 0xdb, 0xb0, 0xba, 0xb2, 0xb7, 0xb2, 0x5f, 0x38, 0x3c, 0x58, 0xb8, 0x98, 0x53, - 0xa3, 0xaa, 0xb5, 0x25, 0x0e, 0xcf, 0x18, 0xd0, 0x23, 0x80, 0x80, 0xba, 0xae, 0x69, 0x79, 0x63, - 0x97, 0x54, 0x57, 0xf7, 0x32, 0xfb, 0x59, 0x9c, 0x67, 0x92, 0x3a, 0x13, 0xb0, 0x89, 0xf1, 0x2d, - 0x4f, 0x6a, 0xd7, 0xb8, 0x36, 0xe7, 0x5b, 0x9e, 0x50, 0x3e, 0x02, 0x88, 0x1c, 0x37, 0x92, 0xda, - 0x75, 0x81, 0x65, 0x12, 0xa1, 0xfe, 0x10, 0xb6, 0x93, 0xe4, 0x36, 0x6d, 0xea, 0x8d, 0x9c, 0x21, - 0xf1, 0x6c, 0x52, 0xdd, 0xe0, 0x86, 0x95, 0x44, 0xd7, 0x4c, 0x54, 0xe8, 0x67, 0xb0, 0x13, 0x77, - 0x8d, 0x05, 0x4b, 0x01, 0xe5, 0x38, 0xe8, 0x9e, 0xa2, 0x55, 0x60, 0x2d, 0x28, 0x7d, 0x43, 0x6f, - 0x4c, 0xd7, 0xf9, 0x96, 0xb8, 0xce, 0x73, 0x4a, 0x87, 0xd5, 0x3c, 0xcf, 0x72, 0x7d, 0x51, 0x60, - 0xda, 0x89, 0x25, 0xde, 0xfc, 0x86, 0xde, 0xcc, 0x9a, 0xa8, 0x0b, 0x5b, 0x21, 0x0d, 0x02, 0xfa, - 0x52, 0x65, 0x83, 0xa5, 0xd9, 0x34, 0x01, 0x56, 0x08, 0xcf, 0x40, 0xb3, 0xbc, 0x31, 0x09, 0x54, - 0xbe, 0xc2, 0xd2, 0x7c, 0x65, 0x8e, 0x55, 0xe8, 0xfa, 0x50, 0x09, 0xa7, 0x81, 0x1f, 0x38, 0x21, - 0x51, 0x19, 0x8b, 0x4b, 0x33, 0xa2, 0x18, 0xae, 0x90, 0x7e, 0x0d, 0xd5, 0xa9, 0x37, 0x24, 0x81, - 0x49, 0xae, 0x7d, 0x1a, 0x92, 0xa1, 0xca, 0xbc, 0xb9, 0x34, 0xf3, 0x0e, 0xe7, 0x30, 0x04, 0x85, - 0xc2, 0xfe, 0x05, 0xa0, 0x2b, 0x77, 0x1a, 0x04, 0x69, 0xde, 0xd2, 0xd2, 0xbc, 0x5b, 0x12, 0x9d, - 0x8e, 0xc2, 0x73, 0x62, 0x0d, 0x5f, 0x12, 0x2b, 0x15, 0xd7, 0xf2, 0xf2, 0x51, 0x88, 0xe1, 0x33, - 0xd9, 0xee, 0xdf, 0x37, 0x20, 0x17, 0xa7, 0x08, 0x3a, 0x95, 0xc7, 0xc5, 0x0a, 0xa7, 0xfc, 0xf8, - 0x8e, 0x19, 0xa6, 0x1e, 0x1f, 0x4f, 0x21, 0xe7, 0xd3, 0xd0, 0x61, 0x7a, 0x9e, 0x5f, 0x85, 0xc3, - 0xbd, 0x45, 0x6c, 0x3d, 0x69, 0x87, 0x13, 0x84, 0xfe, 0x97, 0xf5, 0xd9, 0x29, 0x72, 0xde, 0x79, - 0xd6, 0xe9, 0x5e, 0x74, 0xcc, 0xf8, 0x8c, 0xd0, 0xde, 0x42, 0x45, 0xc8, 0xb5, 0x8d, 0xe3, 0x81, - 0x69, 0x5c, 0x1a, 0x5a, 0x06, 0x6d, 0x42, 0x1e, 0xb7, 0x4e, 0x4e, 0x45, 0x33, 0x8b, 0xaa, 0xb0, - 0xcd, 0x95, 0xdd, 0x63, 0x33, 0x36, 0x6a, 0xe0, 0xee, 0x85, 0xb6, 0xc2, 0xb6, 0x7d, 0x61, 0x38, - 0xaf, 0x5a, 0x65, 0xaa, 0x18, 0x94, 0x70, 0x71, 0xd5, 0x1a, 0xda, 0x85, 0x9d, 0x04, 0x95, 0xd6, - 0xad, 0x33, 0xd8, 0x59, 0xeb, 0xa8, 0xd7, 0x6d, 0x75, 0x06, 0x66, 0xc3, 0x18, 0x5c, 0x18, 0x46, - 0x87, 0x69, 0xd9, 0x91, 0x51, 0x84, 0x5c, 0xa7, 0xdb, 0x37, 0xcc, 0x41, 0xab, 0xa7, 0xe5, 0x58, - 0x1f, 0xcf, 0x7b, 0x3d, 0x03, 0x9b, 0xed, 0x56, 0x4f, 0xcb, 0xb3, 0x66, 0xbb, 0x7b, 0x21, 0x9b, - 0xc0, 0x8e, 0x97, 0xb3, 0xee, 0xf9, 0xe0, 0x94, 0xf7, 0x4a, 0x2b, 0xa0, 0x32, 0x14, 0x44, 0x9b, - 0xfb, 0xd3, 0x8a, 0x48, 0x83, 0xa2, 0x10, 0x34, 0x8d, 0xce, 0xc0, 0xc0, 0xda, 0x26, 0xba, 0x07, - 0x5b, 0x9c, 0xbe, 0xd1, 0x1d, 0x0c, 0xba, 0x67, 0xd2, 0xb0, 0xc4, 0xe2, 0xa5, 0x8a, 0x39, 0x5f, - 0x99, 0x9d, 0xb0, 0xaa, 0x54, 0x92, 0x68, 0xc9, 0xa8, 0x8d, 0x4b, 0xc3, 0x1c, 0x74, 0x7b, 0x66, - 0xa3, 0x7b, 0xde, 0x39, 0xaa, 0xe3, 0x4b, 0x6d, 0x2b, 0xa5, 0x12, 0xa3, 0x6e, 0x76, 0x71, 0xc7, - 0xc0, 0x1a, 0x42, 0x0f, 0xa1, 0x9a, 0xa8, 0x24, 0x63, 0x02, 0xac, 0x24, 0xe1, 0x67, 0x5a, 0xfe, - 0x21, 0x71, 0xdb, 0xb3, 0x40, 0xbe, 0xe2, 0xee, 0x5e, 0x5a, 0x97, 0xf2, 0xb7, 0x83, 0x1e, 0xc1, - 0xfd, 0x99, 0x6e, 0xde, 0xe1, 0xdb, 0xb3, 0x59, 0x9d, 0xf7, 0x58, 0x45, 0x8f, 0xe1, 0x81, 0x3a, - 0xcf, 0xa6, 0x98, 0x82, 0x78, 0xc6, 0xb4, 0xfb, 0x68, 0x0f, 0x1e, 0xa6, 0xa6, 0x74, 0xde, 0x62, - 0x97, 0x05, 0x54, 0x50, 0xd4, 0xb1, 0x39, 0xc0, 0xf5, 0x13, 0x76, 0xd8, 0x3f, 0x60, 0xd1, 0x97, - 0x38, 0x45, 0xfc, 0x90, 0x57, 0x2c, 0xf1, 0xd8, 0x7b, 0xe7, 0xbd, 0x56, 0x5b, 0x7b, 0xc4, 0x2a, - 0x96, 0x59, 0xf7, 0x84, 0xf0, 0x1d, 0x86, 0x3f, 0xee, 0x62, 0xe3, 0xd4, 0xa8, 0x1f, 0x99, 0x27, - 0xbc, 0xa0, 0x69, 0xd7, 0xb5, 0xc7, 0xac, 0xac, 0x68, 0x9e, 0xb6, 0x3a, 0xe6, 0x49, 0xa7, 0x3e, - 0x38, 0x65, 0x94, 0x7b, 0xcc, 0x3f, 0x17, 0x71, 0xde, 0x93, 0x6e, 0x87, 0x49, 0xdf, 0x65, 0x78, - 0x2e, 0x15, 0xcc, 0x52, 0xac, 0xeb, 0x4f, 0xa1, 0xd8, 0xa6, 0x36, 0x4f, 0xca, 0x96, 0x37, 0xa2, - 0xe8, 0x03, 0xd8, 0x70, 0xad, 0xc8, 0x74, 0xbd, 0xb1, 0x3c, 0xca, 0x2b, 0x71, 0x0e, 0xb2, 0x1c, - 0xad, 0xb5, 0xad, 0xa8, 0xed, 0x8d, 0xf1, 0xba, 0xcb, 0x7f, 0xf5, 0x0b, 0xc8, 0xf5, 0x02, 0xea, - 0x93, 0x20, 0xba, 0x41, 0x08, 0x56, 0x3d, 0x6b, 0x42, 0x64, 0xd5, 0xc2, 0xbf, 0x59, 0xc1, 0xf7, - 0xc2, 0x72, 0xa7, 0x44, 0x96, 0x2a, 0xa2, 0x81, 0xde, 0x85, 0xe2, 0xd4, 0xf1, 0xa2, 0x4f, 0x3e, - 0x36, 0x85, 0x92, 0x6d, 0x1d, 0xab, 0xb8, 0x20, 0x64, 0x5f, 0x32, 0x91, 0xfe, 0x87, 0x15, 0xd0, - 0x0c, 0x2f, 0x72, 0xa2, 0x1b, 0xa5, 0xd8, 0xd0, 0x60, 0x65, 0xe2, 0x0c, 0xa5, 0x03, 0xf6, 0x89, - 0x76, 0x60, 0xdd, 0xa5, 0xb6, 0xe5, 0xc6, 0x0e, 0x64, 0x0b, 0xed, 0x41, 0x61, 0x48, 0x42, 0x3b, - 0x70, 0x7c, 0xbe, 0x9b, 0x88, 0x72, 0x53, 0x15, 0xb1, 0x9e, 0x85, 0x36, 0x0d, 0xe2, 0x93, 0x5c, - 0x34, 0xd0, 0x3b, 0x00, 0xca, 0x51, 0x2a, 0x8e, 0x71, 0x45, 0xc2, 0xf4, 0x11, 0xf5, 0x1d, 0xdb, - 0x72, 0x9d, 0xe8, 0x46, 0x1e, 0xe4, 0x8a, 0xe4, 0xd5, 0x72, 0x68, 0xe3, 0x7f, 0x2e, 0x87, 0x1a, - 0x90, 0x77, 0xe5, 0xc4, 0x84, 0xd5, 0x1c, 0x2f, 0x5f, 0x16, 0xd2, 0xa8, 0x33, 0x88, 0x67, 0x30, - 0xf4, 0x2b, 0x00, 0x5f, 0x4c, 0x8f, 0x43, 0xc2, 0x6a, 0x9e, 0x93, 0x2c, 0xde, 0x53, 0xe5, 0x44, - 0x62, 0x05, 0xa3, 0xff, 0x35, 0x0b, 0xdb, 0x7d, 0x6b, 0x44, 0xfa, 0xc4, 0x0a, 0xec, 0xe7, 0xca, - 0x5c, 0x7c, 0x0a, 0x6b, 0xd6, 0x70, 0xea, 0x46, 0xf2, 0x9a, 0xb0, 0xcc, 0x51, 0x22, 0x00, 0x0c, - 0x19, 0xfa, 0x94, 0x8e, 0xf8, 0x94, 0x2d, 0x89, 0xe4, 0x00, 0xf4, 0x14, 0x36, 0x26, 0x64, 0xc8, - 0x62, 0x2d, 0x4f, 0x9b, 0x65, 0xb0, 0x31, 0x04, 0xfd, 0x02, 0x72, 0x2f, 0x1c, 0xea, 0xf2, 0x99, - 0x5d, 0x5d, 0x1a, 0x9e, 0x60, 0xd0, 0x27, 0xb0, 0x1a, 0x58, 0xf6, 0xcd, 0x1d, 0x2a, 0x26, 0x6e, - 0xaf, 0xbf, 0x84, 0x02, 0xcb, 0x1a, 0xea, 0x8d, 0x31, 0xb1, 0x23, 0xf4, 0x11, 0x14, 0x26, 0x8e, - 0x67, 0x2e, 0x91, 0x64, 0xf9, 0x89, 0xe3, 0x89, 0x4f, 0x0e, 0xb2, 0xae, 0x13, 0x50, 0xf6, 0x75, - 0x20, 0xeb, 0x5a, 0x7c, 0xea, 0x01, 0xe4, 0x9b, 0xec, 0xf6, 0xc7, 0xf3, 0x7a, 0x1f, 0xd6, 0xf8, - 0x55, 0x50, 0x3a, 0x44, 0x29, 0x2c, 0x37, 0xc3, 0xc2, 0x60, 0x96, 0x19, 0x59, 0x35, 0x33, 0xde, - 0x87, 0x92, 0xef, 0x5c, 0x13, 0xd7, 0x1c, 0x05, 0x96, 0x9d, 0x24, 0x55, 0x16, 0x6f, 0x72, 0xe9, - 0xb1, 0x14, 0xea, 0xe7, 0x50, 0x3d, 0xa2, 0x13, 0xc7, 0xb3, 0xbc, 0x88, 0x93, 0x86, 0xca, 0x92, - 0xf9, 0x39, 0xac, 0x73, 0x0f, 0x61, 0x35, 0xc3, 0x57, 0xe2, 0xbb, 0x8b, 0x42, 0x98, 0xf4, 0x1a, - 0x4b, 0x80, 0xee, 0x42, 0x99, 0x5f, 0x48, 0x7a, 0xc9, 0xca, 0x44, 0x97, 0x50, 0x1e, 0x4a, 0x4f, - 0x66, 0x42, 0xcb, 0x86, 0xf6, 0xd3, 0x45, 0xb4, 0x8b, 0x3a, 0x86, 0x4b, 0xc3, 0x94, 0x46, 0xff, - 0x73, 0x06, 0x72, 0xcd, 0x80, 0xfa, 0xa7, 0x8e, 0x17, 0xfd, 0x3f, 0x6f, 0x38, 0xe9, 0xdd, 0x25, - 0xfb, 0xca, 0xee, 0x72, 0x00, 0x15, 0x67, 0xe2, 0xd3, 0x20, 0xb2, 0x3c, 0x9b, 0xcc, 0x07, 0x1a, - 0xcd, 0x54, 0x49, 0xb4, 0xbf, 0x84, 0x4a, 0xdc, 0x4f, 0x35, 0xd0, 0xbf, 0x04, 0xb0, 0x03, 0xea, - 0x9b, 0xcf, 0x99, 0x5c, 0x06, 0x7b, 0x61, 0xda, 0xc7, 0x04, 0x38, 0x6f, 0xc7, 0x54, 0xfa, 0x27, - 0x50, 0x4e, 0x78, 0x7b, 0x56, 0x60, 0x4d, 0x42, 0xf4, 0x1e, 0x6c, 0x5a, 0xa1, 0x4f, 0xec, 0xc8, - 0x0c, 0x98, 0x13, 0x41, 0x9b, 0xc5, 0x45, 0x21, 0xc4, 0x5c, 0xa6, 0x1f, 0x01, 0xba, 0x20, 0x57, - 0x47, 0xf1, 0x7d, 0x45, 0x42, 0x6b, 0x50, 0x71, 0x3c, 0xdb, 0x9d, 0x0e, 0x89, 0x39, 0x26, 0x34, - 0xf5, 0x3c, 0x90, 0xc3, 0x5b, 0x52, 0x75, 0x42, 0xa8, 0x7c, 0x25, 0xd0, 0xbf, 0xcb, 0x42, 0x91, - 0xcf, 0x76, 0x93, 0x5d, 0x5a, 0xaf, 0x23, 0x74, 0x02, 0x9b, 0x7c, 0xe5, 0x53, 0x6f, 0x6c, 0x06, - 0xc4, 0x8e, 0xe4, 0x14, 0x2c, 0xbc, 0xbb, 0x2a, 0xe9, 0x86, 0x0b, 0xae, 0x92, 0x7b, 0xef, 0x43, - 0xc9, 0xb5, 0xbc, 0xf1, 0x94, 0x5d, 0xa0, 0x45, 0x70, 0xb2, 0x7b, 0x2b, 0xfb, 0x79, 0xbc, 0x19, - 0x4b, 0xf9, 0x88, 0x51, 0x1f, 0xb6, 0x66, 0xf1, 0x33, 0x7d, 0x3e, 0x0a, 0x59, 0x91, 0xfe, 0xe8, - 0x4d, 0x61, 0x94, 0xf1, 0xc2, 0x65, 0x7b, 0x2e, 0x80, 0x5f, 0xc3, 0x76, 0xea, 0x15, 0x27, 0xe6, - 0x5d, 0xe7, 0xbc, 0x4f, 0x16, 0xf1, 0xbe, 0x1a, 0x4f, 0x8c, 0x5e, 0xbe, 0x22, 0xd3, 0xbf, 0xcf, - 0xc0, 0xb6, 0x5c, 0x01, 0x84, 0xc7, 0x0e, 0x93, 0xdf, 0x4d, 0x49, 0xc8, 0xb6, 0x9b, 0x35, 0xfe, - 0x3e, 0x20, 0x63, 0xf6, 0xe8, 0xb5, 0xf7, 0x7d, 0x2c, 0x6c, 0xd1, 0xe7, 0x90, 0x1b, 0x89, 0xe7, - 0x1d, 0x11, 0xa1, 0xc2, 0xe1, 0xe3, 0x37, 0x3c, 0x03, 0xe1, 0x04, 0xc0, 0x12, 0x46, 0x3c, 0x51, - 0xd8, 0x62, 0xfa, 0xf8, 0xfa, 0x7d, 0x4d, 0xc2, 0xa8, 0x53, 0x8d, 0x8b, 0x8e, 0xd2, 0xd2, 0xff, - 0xb6, 0x01, 0xf7, 0xe6, 0x46, 0x15, 0xfa, 0xd4, 0x0b, 0x09, 0xfa, 0x02, 0xb4, 0x91, 0x65, 0x13, - 0xe5, 0x05, 0x2d, 0x5e, 0xe8, 0x3f, 0x5c, 0xee, 0x06, 0x82, 0xcb, 0xa3, 0x54, 0x3b, 0x44, 0xbf, - 0x81, 0xed, 0xf8, 0xd2, 0x9c, 0xa2, 0x15, 0x01, 0xd8, 0x5f, 0x44, 0x3b, 0x5f, 0xa5, 0xe0, 0x4a, - 0xcc, 0xa2, 0x92, 0xf7, 0x41, 0x73, 0xe9, 0x98, 0xa6, 0x88, 0x57, 0xee, 0x48, 0x5c, 0x66, 0x0c, - 0x2a, 0xe9, 0x39, 0x6c, 0xb9, 0xd6, 0x15, 0x71, 0x53, 0xac, 0xab, 0x77, 0x64, 0xd5, 0x38, 0xc5, - 0x5c, 0x5f, 0xe7, 0x5e, 0x27, 0xc3, 0xea, 0xda, 0x5d, 0xfb, 0xca, 0x18, 0x54, 0xd2, 0xaf, 0x60, - 0x7b, 0x34, 0x75, 0x5d, 0x73, 0x8e, 0x99, 0xdf, 0xc7, 0x5f, 0x33, 0x69, 0x83, 0x14, 0x0d, 0x46, - 0x8c, 0x23, 0x2d, 0x43, 0x57, 0xb0, 0x13, 0x5a, 0x23, 0x62, 0x86, 0xbc, 0x44, 0x51, 0xb9, 0x45, - 0x6a, 0x7d, 0xb0, 0x88, 0xfb, 0xb6, 0xba, 0x06, 0x6f, 0x87, 0xb7, 0x55, 0x3b, 0x63, 0x78, 0x20, - 0xd6, 0xf4, 0xac, 0x34, 0x52, 0x1d, 0xe5, 0x5e, 0xbf, 0x37, 0xcc, 0x1d, 0x5d, 0xf8, 0xbe, 0x93, - 0x16, 0x28, 0x8e, 0x4c, 0xb8, 0xa7, 0x6c, 0x3d, 0x8a, 0x8b, 0x02, 0x77, 0xf1, 0xe3, 0x37, 0x6e, - 0x3f, 0xea, 0x42, 0xb4, 0x6f, 0x39, 0x1b, 0x5a, 0xb0, 0x99, 0xda, 0x86, 0xf8, 0xb3, 0xc5, 0x6b, - 0xb2, 0x53, 0xdd, 0x7f, 0x70, 0x51, 0xdd, 0x79, 0x58, 0x49, 0x41, 0x82, 0x80, 0x06, 0xbc, 0x22, - 0x52, 0x4a, 0x8a, 0xc0, 0xb7, 0x6b, 0x7d, 0xfe, 0x20, 0x8d, 0x85, 0x81, 0x3e, 0x82, 0xdd, 0x86, - 0x15, 0x25, 0x11, 0x15, 0xb9, 0x1c, 0xc6, 0x5b, 0xd4, 0x29, 0xe4, 0x02, 0xf1, 0x19, 0xe7, 0xf0, - 0xc2, 0x29, 0xbb, 0x6d, 0x8b, 0xc3, 0x09, 0x5a, 0xff, 0x06, 0x1e, 0xdc, 0xea, 0x47, 0x6e, 0x1a, - 0xcf, 0x20, 0x1f, 0xc8, 0xef, 0xd8, 0xd3, 0x4f, 0x96, 0xf4, 0x24, 0x50, 0x78, 0x86, 0x7f, 0x42, - 0x00, 0x94, 0x77, 0x96, 0x02, 0x6c, 0xc8, 0x47, 0x07, 0xed, 0x2d, 0x76, 0x27, 0xfb, 0xd2, 0xc0, - 0x97, 0xe6, 0x79, 0xa7, 0xdd, 0x7a, 0x66, 0xb4, 0x2f, 0xb5, 0x0c, 0xbb, 0xda, 0x27, 0xad, 0x2c, - 0x6b, 0xf5, 0xba, 0xfd, 0x7e, 0xab, 0xd1, 0x36, 0xb4, 0x15, 0x04, 0xb0, 0x2e, 0x35, 0xab, 0xec, - 0x1a, 0xcf, 0xa1, 0x52, 0xb0, 0x76, 0xf8, 0x5d, 0x06, 0x4a, 0xbc, 0x0f, 0xf5, 0xf8, 0x5f, 0x0b, - 0xf4, 0xa7, 0x0c, 0x54, 0x6e, 0x19, 0x26, 0x3a, 0x5c, 0x58, 0x92, 0x2c, 0x8c, 0xfd, 0xee, 0x47, - 0x77, 0xc2, 0x88, 0xb1, 0xeb, 0xef, 0xfc, 0xfe, 0xfb, 0x7f, 0xfe, 0x31, 0x5b, 0xd5, 0x2b, 0xc9, - 0x7f, 0x2a, 0xe1, 0x67, 0x72, 0xa9, 0x92, 0xcf, 0x32, 0x4f, 0x1a, 0x11, 0xec, 0xda, 0x74, 0xb2, - 0x80, 0xb9, 0x51, 0x49, 0x0f, 0xa7, 0x17, 0xd0, 0x88, 0xf6, 0x32, 0xbf, 0x7e, 0x2a, 0xcd, 0xc7, - 0x94, 0x1d, 0xc6, 0x35, 0x1a, 0x8c, 0x0f, 0xc6, 0xc4, 0xe3, 0x7f, 0x4f, 0x1c, 0x08, 0x95, 0xe5, - 0x3b, 0xe1, 0xfc, 0x3f, 0x23, 0x9f, 0x8b, 0xaf, 0xff, 0x64, 0x32, 0x57, 0xeb, 0xdc, 0xf6, 0xa3, - 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xf4, 0xbf, 0x21, 0x35, 0xfd, 0x19, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/text_annotation.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/text_annotation.pb.go deleted file mode 100644 index ebe52488..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/text_annotation.pb.go +++ /dev/null @@ -1,588 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/vision/v1/text_annotation.proto - -package vision - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Enum to denote the type of break found. New line, space etc. -type TextAnnotation_DetectedBreak_BreakType int32 - -const ( - // Unknown break label type. - TextAnnotation_DetectedBreak_UNKNOWN TextAnnotation_DetectedBreak_BreakType = 0 - // Regular space. - TextAnnotation_DetectedBreak_SPACE TextAnnotation_DetectedBreak_BreakType = 1 - // Sure space (very wide). - TextAnnotation_DetectedBreak_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 2 - // Line-wrapping break. - TextAnnotation_DetectedBreak_EOL_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 3 - // End-line hyphen that is not present in text; does not co-occur with - // `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`. - TextAnnotation_DetectedBreak_HYPHEN TextAnnotation_DetectedBreak_BreakType = 4 - // Line break that ends a paragraph. - TextAnnotation_DetectedBreak_LINE_BREAK TextAnnotation_DetectedBreak_BreakType = 5 -) - -var TextAnnotation_DetectedBreak_BreakType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "SPACE", - 2: "SURE_SPACE", - 3: "EOL_SURE_SPACE", - 4: "HYPHEN", - 5: "LINE_BREAK", -} -var TextAnnotation_DetectedBreak_BreakType_value = map[string]int32{ - "UNKNOWN": 0, - "SPACE": 1, - "SURE_SPACE": 2, - "EOL_SURE_SPACE": 3, - "HYPHEN": 4, - "LINE_BREAK": 5, -} - -func (x TextAnnotation_DetectedBreak_BreakType) String() string { - return proto.EnumName(TextAnnotation_DetectedBreak_BreakType_name, int32(x)) -} -func (TextAnnotation_DetectedBreak_BreakType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 1, 0} -} - -// Type of a block (text, image etc) as identified by OCR. -type Block_BlockType int32 - -const ( - // Unknown block type. - Block_UNKNOWN Block_BlockType = 0 - // Regular text block. - Block_TEXT Block_BlockType = 1 - // Table block. - Block_TABLE Block_BlockType = 2 - // Image block. - Block_PICTURE Block_BlockType = 3 - // Horizontal/vertical line box. - Block_RULER Block_BlockType = 4 - // Barcode block. - Block_BARCODE Block_BlockType = 5 -) - -var Block_BlockType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "TEXT", - 2: "TABLE", - 3: "PICTURE", - 4: "RULER", - 5: "BARCODE", -} -var Block_BlockType_value = map[string]int32{ - "UNKNOWN": 0, - "TEXT": 1, - "TABLE": 2, - "PICTURE": 3, - "RULER": 4, - "BARCODE": 5, -} - -func (x Block_BlockType) String() string { - return proto.EnumName(Block_BlockType_name, int32(x)) -} -func (Block_BlockType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 0} } - -// TextAnnotation contains a structured representation of OCR extracted text. -// The hierarchy of an OCR extracted text structure is like this: -// TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol -// Each structural component, starting from Page, may further have their own -// properties. Properties describe detected languages, breaks etc.. Please refer -// to the [TextAnnotation.TextProperty][google.cloud.vision.v1.TextAnnotation.TextProperty] message definition below for more -// detail. -type TextAnnotation struct { - // List of pages detected by OCR. - Pages []*Page `protobuf:"bytes,1,rep,name=pages" json:"pages,omitempty"` - // UTF-8 text detected on the pages. - Text string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"` -} - -func (m *TextAnnotation) Reset() { *m = TextAnnotation{} } -func (m *TextAnnotation) String() string { return proto.CompactTextString(m) } -func (*TextAnnotation) ProtoMessage() {} -func (*TextAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *TextAnnotation) GetPages() []*Page { - if m != nil { - return m.Pages - } - return nil -} - -func (m *TextAnnotation) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -// Detected language for a structural component. -type TextAnnotation_DetectedLanguage struct { - // The BCP-47 language code, such as "en-US" or "sr-Latn". For more - // information, see - // http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. - LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Confidence of detected language. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *TextAnnotation_DetectedLanguage) Reset() { *m = TextAnnotation_DetectedLanguage{} } -func (m *TextAnnotation_DetectedLanguage) String() string { return proto.CompactTextString(m) } -func (*TextAnnotation_DetectedLanguage) ProtoMessage() {} -func (*TextAnnotation_DetectedLanguage) Descriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 0} -} - -func (m *TextAnnotation_DetectedLanguage) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *TextAnnotation_DetectedLanguage) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Detected start or end of a structural component. -type TextAnnotation_DetectedBreak struct { - // Detected break type. - Type TextAnnotation_DetectedBreak_BreakType `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1.TextAnnotation_DetectedBreak_BreakType" json:"type,omitempty"` - // True if break prepends the element. - IsPrefix bool `protobuf:"varint,2,opt,name=is_prefix,json=isPrefix" json:"is_prefix,omitempty"` -} - -func (m *TextAnnotation_DetectedBreak) Reset() { *m = TextAnnotation_DetectedBreak{} } -func (m *TextAnnotation_DetectedBreak) String() string { return proto.CompactTextString(m) } -func (*TextAnnotation_DetectedBreak) ProtoMessage() {} -func (*TextAnnotation_DetectedBreak) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 1} } - -func (m *TextAnnotation_DetectedBreak) GetType() TextAnnotation_DetectedBreak_BreakType { - if m != nil { - return m.Type - } - return TextAnnotation_DetectedBreak_UNKNOWN -} - -func (m *TextAnnotation_DetectedBreak) GetIsPrefix() bool { - if m != nil { - return m.IsPrefix - } - return false -} - -// Additional information detected on the structural component. -type TextAnnotation_TextProperty struct { - // A list of detected languages together with confidence. - DetectedLanguages []*TextAnnotation_DetectedLanguage `protobuf:"bytes,1,rep,name=detected_languages,json=detectedLanguages" json:"detected_languages,omitempty"` - // Detected start or end of a text segment. - DetectedBreak *TextAnnotation_DetectedBreak `protobuf:"bytes,2,opt,name=detected_break,json=detectedBreak" json:"detected_break,omitempty"` -} - -func (m *TextAnnotation_TextProperty) Reset() { *m = TextAnnotation_TextProperty{} } -func (m *TextAnnotation_TextProperty) String() string { return proto.CompactTextString(m) } -func (*TextAnnotation_TextProperty) ProtoMessage() {} -func (*TextAnnotation_TextProperty) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 2} } - -func (m *TextAnnotation_TextProperty) GetDetectedLanguages() []*TextAnnotation_DetectedLanguage { - if m != nil { - return m.DetectedLanguages - } - return nil -} - -func (m *TextAnnotation_TextProperty) GetDetectedBreak() *TextAnnotation_DetectedBreak { - if m != nil { - return m.DetectedBreak - } - return nil -} - -// Detected page from OCR. -type Page struct { - // Additional information detected on the page. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // Page width in pixels. - Width int32 `protobuf:"varint,2,opt,name=width" json:"width,omitempty"` - // Page height in pixels. - Height int32 `protobuf:"varint,3,opt,name=height" json:"height,omitempty"` - // List of blocks of text, images etc on this page. - Blocks []*Block `protobuf:"bytes,4,rep,name=blocks" json:"blocks,omitempty"` - // Confidence of the OCR results on the page. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Page) Reset() { *m = Page{} } -func (m *Page) String() string { return proto.CompactTextString(m) } -func (*Page) ProtoMessage() {} -func (*Page) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *Page) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Page) GetWidth() int32 { - if m != nil { - return m.Width - } - return 0 -} - -func (m *Page) GetHeight() int32 { - if m != nil { - return m.Height - } - return 0 -} - -func (m *Page) GetBlocks() []*Block { - if m != nil { - return m.Blocks - } - return nil -} - -func (m *Page) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Logical element on the page. -type Block struct { - // Additional information detected for the block. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The bounding box for the block. - // The vertices are in the order of top-left, top-right, bottom-right, - // bottom-left. When a rotation of the bounding box is detected the rotation - // is represented as around the top-left corner as defined when the text is - // read in the 'natural' orientation. - // For example: - // - // * when the text is horizontal it might look like: - // - // 0----1 - // | | - // 3----2 - // - // * when it's rotated 180 degrees around the top-left corner it becomes: - // - // 2----3 - // | | - // 1----0 - // - // and the vertice order will still be (0, 1, 2, 3). - BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // List of paragraphs in this block (if this blocks is of type text). - Paragraphs []*Paragraph `protobuf:"bytes,3,rep,name=paragraphs" json:"paragraphs,omitempty"` - // Detected block type (text, image etc) for this block. - BlockType Block_BlockType `protobuf:"varint,4,opt,name=block_type,json=blockType,enum=google.cloud.vision.v1.Block_BlockType" json:"block_type,omitempty"` - // Confidence of the OCR results on the block. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Block) Reset() { *m = Block{} } -func (m *Block) String() string { return proto.CompactTextString(m) } -func (*Block) ProtoMessage() {} -func (*Block) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *Block) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Block) GetBoundingBox() *BoundingPoly { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *Block) GetParagraphs() []*Paragraph { - if m != nil { - return m.Paragraphs - } - return nil -} - -func (m *Block) GetBlockType() Block_BlockType { - if m != nil { - return m.BlockType - } - return Block_UNKNOWN -} - -func (m *Block) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Structural unit of text representing a number of words in certain order. -type Paragraph struct { - // Additional information detected for the paragraph. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The bounding box for the paragraph. - // The vertices are in the order of top-left, top-right, bottom-right, - // bottom-left. When a rotation of the bounding box is detected the rotation - // is represented as around the top-left corner as defined when the text is - // read in the 'natural' orientation. - // For example: - // * when the text is horizontal it might look like: - // 0----1 - // | | - // 3----2 - // * when it's rotated 180 degrees around the top-left corner it becomes: - // 2----3 - // | | - // 1----0 - // and the vertice order will still be (0, 1, 2, 3). - BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // List of words in this paragraph. - Words []*Word `protobuf:"bytes,3,rep,name=words" json:"words,omitempty"` - // Confidence of the OCR results for the paragraph. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Paragraph) Reset() { *m = Paragraph{} } -func (m *Paragraph) String() string { return proto.CompactTextString(m) } -func (*Paragraph) ProtoMessage() {} -func (*Paragraph) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *Paragraph) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Paragraph) GetBoundingBox() *BoundingPoly { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *Paragraph) GetWords() []*Word { - if m != nil { - return m.Words - } - return nil -} - -func (m *Paragraph) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// A word representation. -type Word struct { - // Additional information detected for the word. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The bounding box for the word. - // The vertices are in the order of top-left, top-right, bottom-right, - // bottom-left. When a rotation of the bounding box is detected the rotation - // is represented as around the top-left corner as defined when the text is - // read in the 'natural' orientation. - // For example: - // * when the text is horizontal it might look like: - // 0----1 - // | | - // 3----2 - // * when it's rotated 180 degrees around the top-left corner it becomes: - // 2----3 - // | | - // 1----0 - // and the vertice order will still be (0, 1, 2, 3). - BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // List of symbols in the word. - // The order of the symbols follows the natural reading order. - Symbols []*Symbol `protobuf:"bytes,3,rep,name=symbols" json:"symbols,omitempty"` - // Confidence of the OCR results for the word. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Word) Reset() { *m = Word{} } -func (m *Word) String() string { return proto.CompactTextString(m) } -func (*Word) ProtoMessage() {} -func (*Word) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *Word) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Word) GetBoundingBox() *BoundingPoly { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *Word) GetSymbols() []*Symbol { - if m != nil { - return m.Symbols - } - return nil -} - -func (m *Word) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// A single symbol representation. -type Symbol struct { - // Additional information detected for the symbol. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The bounding box for the symbol. - // The vertices are in the order of top-left, top-right, bottom-right, - // bottom-left. When a rotation of the bounding box is detected the rotation - // is represented as around the top-left corner as defined when the text is - // read in the 'natural' orientation. - // For example: - // * when the text is horizontal it might look like: - // 0----1 - // | | - // 3----2 - // * when it's rotated 180 degrees around the top-left corner it becomes: - // 2----3 - // | | - // 1----0 - // and the vertice order will still be (0, 1, 2, 3). - BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // The actual UTF-8 representation of the symbol. - Text string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"` - // Confidence of the OCR results for the symbol. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Symbol) Reset() { *m = Symbol{} } -func (m *Symbol) String() string { return proto.CompactTextString(m) } -func (*Symbol) ProtoMessage() {} -func (*Symbol) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *Symbol) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Symbol) GetBoundingBox() *BoundingPoly { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *Symbol) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -func (m *Symbol) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func init() { - proto.RegisterType((*TextAnnotation)(nil), "google.cloud.vision.v1.TextAnnotation") - proto.RegisterType((*TextAnnotation_DetectedLanguage)(nil), "google.cloud.vision.v1.TextAnnotation.DetectedLanguage") - proto.RegisterType((*TextAnnotation_DetectedBreak)(nil), "google.cloud.vision.v1.TextAnnotation.DetectedBreak") - proto.RegisterType((*TextAnnotation_TextProperty)(nil), "google.cloud.vision.v1.TextAnnotation.TextProperty") - proto.RegisterType((*Page)(nil), "google.cloud.vision.v1.Page") - proto.RegisterType((*Block)(nil), "google.cloud.vision.v1.Block") - proto.RegisterType((*Paragraph)(nil), "google.cloud.vision.v1.Paragraph") - proto.RegisterType((*Word)(nil), "google.cloud.vision.v1.Word") - proto.RegisterType((*Symbol)(nil), "google.cloud.vision.v1.Symbol") - proto.RegisterEnum("google.cloud.vision.v1.TextAnnotation_DetectedBreak_BreakType", TextAnnotation_DetectedBreak_BreakType_name, TextAnnotation_DetectedBreak_BreakType_value) - proto.RegisterEnum("google.cloud.vision.v1.Block_BlockType", Block_BlockType_name, Block_BlockType_value) -} - -func init() { proto.RegisterFile("google/cloud/vision/v1/text_annotation.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 763 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcf, 0x6f, 0xd3, 0x4a, - 0x10, 0x7e, 0x6e, 0xec, 0x34, 0x9e, 0xb4, 0x91, 0xdf, 0xbe, 0xa7, 0x2a, 0x0a, 0xa5, 0x2a, 0x01, - 0x44, 0x0f, 0xc8, 0x51, 0x53, 0x10, 0x48, 0x20, 0xa4, 0x38, 0x35, 0xb4, 0x6a, 0x94, 0x58, 0xdb, - 0x44, 0xe5, 0xc7, 0xc1, 0xf2, 0x8f, 0xad, 0x63, 0x35, 0xf5, 0x5a, 0xb6, 0xdb, 0x26, 0xff, 0x0d, - 0xff, 0x13, 0x12, 0x27, 0xae, 0x9c, 0xb9, 0x02, 0x27, 0xe4, 0xb5, 0x9d, 0x26, 0x01, 0x53, 0x40, - 0x1c, 0x7a, 0xb1, 0x76, 0x26, 0xdf, 0x7c, 0x33, 0xdf, 0x8c, 0x27, 0x6b, 0xb8, 0xef, 0x50, 0xea, - 0x8c, 0x48, 0xc3, 0x1a, 0xd1, 0x33, 0xbb, 0x71, 0xee, 0x86, 0x2e, 0xf5, 0x1a, 0xe7, 0xdb, 0x8d, - 0x88, 0x8c, 0x23, 0xdd, 0xf0, 0x3c, 0x1a, 0x19, 0x91, 0x4b, 0x3d, 0xd9, 0x0f, 0x68, 0x44, 0xd1, - 0x5a, 0x82, 0x96, 0x19, 0x5a, 0x4e, 0xd0, 0xf2, 0xf9, 0x76, 0x6d, 0x3d, 0x65, 0x31, 0x7c, 0xb7, - 0x71, 0x19, 0x14, 0x26, 0x51, 0xb5, 0xbb, 0x39, 0x39, 0x1c, 0x42, 0x4f, 0x49, 0x14, 0x4c, 0x12, - 0x58, 0xfd, 0x13, 0x0f, 0x95, 0x3e, 0x19, 0x47, 0xad, 0x29, 0x01, 0x6a, 0x82, 0xe0, 0x1b, 0x0e, - 0x09, 0xab, 0xdc, 0x66, 0x61, 0xab, 0xdc, 0x5c, 0x97, 0x7f, 0x9c, 0x5f, 0xd6, 0x0c, 0x87, 0xe0, - 0x04, 0x8a, 0x10, 0xf0, 0x71, 0xf1, 0xd5, 0xa5, 0x4d, 0x6e, 0x4b, 0xc4, 0xec, 0x5c, 0x3b, 0x02, - 0x69, 0x97, 0x44, 0xc4, 0x8a, 0x88, 0xdd, 0x31, 0x3c, 0xe7, 0xcc, 0x70, 0x08, 0xba, 0x0d, 0xab, - 0xa3, 0xf4, 0xac, 0x5b, 0xd4, 0x26, 0x55, 0x8e, 0x05, 0xac, 0x64, 0xce, 0x36, 0xb5, 0x09, 0xda, - 0x00, 0xb0, 0xa8, 0x77, 0xec, 0xda, 0xc4, 0xb3, 0x08, 0xa3, 0x5c, 0xc2, 0x33, 0x9e, 0xda, 0x47, - 0x0e, 0x56, 0x33, 0x66, 0x25, 0x20, 0xc6, 0x09, 0xc2, 0xc0, 0x47, 0x13, 0x3f, 0x61, 0xab, 0x34, - 0x9f, 0xe5, 0x55, 0x3c, 0x2f, 0x54, 0x9e, 0xe3, 0x90, 0xd9, 0xb3, 0x3f, 0xf1, 0x09, 0x66, 0x5c, - 0xe8, 0x06, 0x88, 0x6e, 0xa8, 0xfb, 0x01, 0x39, 0x76, 0xc7, 0xac, 0x88, 0x12, 0x2e, 0xb9, 0xa1, - 0xc6, 0xec, 0xba, 0x05, 0xe2, 0x14, 0x8f, 0xca, 0xb0, 0x3c, 0xe8, 0x1e, 0x74, 0x7b, 0x47, 0x5d, - 0xe9, 0x1f, 0x24, 0x82, 0x70, 0xa8, 0xb5, 0xda, 0xaa, 0xc4, 0xa1, 0x0a, 0xc0, 0xe1, 0x00, 0xab, - 0x7a, 0x62, 0x2f, 0x21, 0x04, 0x15, 0xb5, 0xd7, 0xd1, 0x67, 0x7c, 0x05, 0x04, 0x50, 0xdc, 0x7b, - 0xa5, 0xed, 0xa9, 0x5d, 0x89, 0x8f, 0xf1, 0x9d, 0xfd, 0xae, 0xaa, 0x2b, 0x58, 0x6d, 0x1d, 0x48, - 0x42, 0xed, 0x1d, 0x07, 0x2b, 0x71, 0xc9, 0x5a, 0x40, 0x7d, 0x12, 0x44, 0x13, 0x74, 0x0c, 0xc8, - 0x4e, 0x6b, 0xd6, 0xb3, 0x8e, 0x65, 0x63, 0x7a, 0xf4, 0x9b, 0xa2, 0xb3, 0x91, 0xe0, 0x7f, 0xed, - 0x05, 0x4f, 0x88, 0xde, 0x40, 0x65, 0x9a, 0xc7, 0x8c, 0x65, 0x32, 0xfd, 0xe5, 0xe6, 0x83, 0x3f, - 0x69, 0x2c, 0x5e, 0xb5, 0x67, 0xcd, 0xfa, 0x07, 0x0e, 0xf8, 0xf8, 0xd5, 0x41, 0x3d, 0x28, 0xf9, - 0xa9, 0x32, 0x36, 0xb8, 0x72, 0x73, 0xe7, 0x17, 0xf9, 0x67, 0x9b, 0x82, 0xa7, 0x24, 0xe8, 0x7f, - 0x10, 0x2e, 0x5c, 0x3b, 0x1a, 0xb2, 0x6a, 0x05, 0x9c, 0x18, 0x68, 0x0d, 0x8a, 0x43, 0xe2, 0x3a, - 0xc3, 0xa8, 0x5a, 0x60, 0xee, 0xd4, 0x42, 0x0f, 0xa1, 0x68, 0x8e, 0xa8, 0x75, 0x12, 0x56, 0x79, - 0xd6, 0xc0, 0x9b, 0x79, 0xc9, 0x95, 0x18, 0x85, 0x53, 0xf0, 0xc2, 0xcb, 0x29, 0x2c, 0xbe, 0x9c, - 0xf5, 0xb7, 0x05, 0x10, 0x58, 0xc4, 0xdf, 0xd7, 0xf7, 0x02, 0x56, 0x4c, 0x7a, 0xe6, 0xd9, 0xae, - 0xe7, 0xe8, 0x26, 0x1d, 0xa7, 0x43, 0xb9, 0x93, 0x5b, 0x77, 0x8a, 0xd5, 0xe8, 0x68, 0x82, 0xcb, - 0x59, 0xa4, 0x42, 0xc7, 0xa8, 0x05, 0xe0, 0x1b, 0x81, 0xe1, 0x04, 0x86, 0x3f, 0x0c, 0xab, 0x05, - 0x26, 0xff, 0x56, 0xfe, 0x9a, 0xa7, 0x48, 0x3c, 0x13, 0x84, 0x9e, 0x03, 0xb0, 0x86, 0xe8, 0x6c, - 0xef, 0x78, 0xb6, 0x77, 0xf7, 0x7e, 0xda, 0xc1, 0xe4, 0xc9, 0x16, 0x4c, 0x34, 0xb3, 0xe3, 0x95, - 0xed, 0xc4, 0x20, 0x4e, 0xe3, 0xe6, 0x17, 0xad, 0x04, 0x7c, 0x5f, 0x7d, 0xd9, 0x97, 0xb8, 0x78, - 0xe5, 0xfa, 0x2d, 0xa5, 0x13, 0xaf, 0x58, 0x19, 0x96, 0xb5, 0xfd, 0x76, 0x7f, 0x80, 0xe3, 0xdd, - 0x12, 0x41, 0xc0, 0x83, 0x8e, 0x8a, 0x25, 0x3e, 0xf6, 0x2b, 0x2d, 0xdc, 0xee, 0xed, 0xaa, 0x92, - 0x50, 0xff, 0xc2, 0x81, 0x38, 0x55, 0x75, 0x8d, 0xc7, 0xd4, 0x04, 0xe1, 0x82, 0x06, 0x76, 0x36, - 0xa1, 0xdc, 0x3f, 0xe2, 0x23, 0x1a, 0xd8, 0x38, 0x81, 0x2e, 0xf4, 0x93, 0xff, 0xae, 0x9f, 0x5f, - 0x39, 0xe0, 0x63, 0xfc, 0x35, 0x96, 0xfd, 0x18, 0x96, 0xc3, 0xc9, 0xa9, 0x49, 0x47, 0x99, 0xf0, - 0x8d, 0x3c, 0x8e, 0x43, 0x06, 0xc3, 0x19, 0xfc, 0x4a, 0xf1, 0xef, 0x39, 0x28, 0x26, 0x31, 0xd7, - 0x58, 0x7e, 0x76, 0x95, 0x16, 0x2e, 0xaf, 0xd2, 0xab, 0x84, 0x29, 0x11, 0xd4, 0x2c, 0x7a, 0x9a, - 0x93, 0x4b, 0xf9, 0x6f, 0x5e, 0x81, 0x16, 0x5f, 0xfc, 0x1a, 0xf7, 0xfa, 0x69, 0x0a, 0x77, 0x68, - 0x7c, 0x97, 0xc8, 0x34, 0x70, 0x1a, 0x0e, 0xf1, 0xd8, 0x67, 0x41, 0x23, 0xf9, 0xc9, 0xf0, 0xdd, - 0x70, 0xf1, 0x03, 0xe2, 0x49, 0x72, 0xfa, 0xcc, 0x71, 0x66, 0x91, 0x61, 0x77, 0xbe, 0x05, 0x00, - 0x00, 0xff, 0xff, 0x3f, 0x4a, 0xe7, 0xb0, 0xcf, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/web_detection.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/web_detection.pb.go deleted file mode 100644 index 921ce4a9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1/web_detection.pb.go +++ /dev/null @@ -1,277 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/vision/v1/web_detection.proto - -package vision - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Relevant information for the image from the Internet. -type WebDetection struct { - // Deduced entities from similar images on the Internet. - WebEntities []*WebDetection_WebEntity `protobuf:"bytes,1,rep,name=web_entities,json=webEntities" json:"web_entities,omitempty"` - // Fully matching images from the Internet. - // Can include resized copies of the query image. - FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,2,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"` - // Partial matching images from the Internet. - // Those images are similar enough to share some key-point features. For - // example an original image will likely have partial matching for its crops. - PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,3,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"` - // Web pages containing the matching images from the Internet. - PagesWithMatchingImages []*WebDetection_WebPage `protobuf:"bytes,4,rep,name=pages_with_matching_images,json=pagesWithMatchingImages" json:"pages_with_matching_images,omitempty"` - // The visually similar image results. - VisuallySimilarImages []*WebDetection_WebImage `protobuf:"bytes,6,rep,name=visually_similar_images,json=visuallySimilarImages" json:"visually_similar_images,omitempty"` - // Best guess text labels for the request image. - BestGuessLabels []*WebDetection_WebLabel `protobuf:"bytes,8,rep,name=best_guess_labels,json=bestGuessLabels" json:"best_guess_labels,omitempty"` -} - -func (m *WebDetection) Reset() { *m = WebDetection{} } -func (m *WebDetection) String() string { return proto.CompactTextString(m) } -func (*WebDetection) ProtoMessage() {} -func (*WebDetection) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *WebDetection) GetWebEntities() []*WebDetection_WebEntity { - if m != nil { - return m.WebEntities - } - return nil -} - -func (m *WebDetection) GetFullMatchingImages() []*WebDetection_WebImage { - if m != nil { - return m.FullMatchingImages - } - return nil -} - -func (m *WebDetection) GetPartialMatchingImages() []*WebDetection_WebImage { - if m != nil { - return m.PartialMatchingImages - } - return nil -} - -func (m *WebDetection) GetPagesWithMatchingImages() []*WebDetection_WebPage { - if m != nil { - return m.PagesWithMatchingImages - } - return nil -} - -func (m *WebDetection) GetVisuallySimilarImages() []*WebDetection_WebImage { - if m != nil { - return m.VisuallySimilarImages - } - return nil -} - -func (m *WebDetection) GetBestGuessLabels() []*WebDetection_WebLabel { - if m != nil { - return m.BestGuessLabels - } - return nil -} - -// Entity deduced from similar images on the Internet. -type WebDetection_WebEntity struct { - // Opaque entity ID. - EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` - // Overall relevancy score for the entity. - // Not normalized and not comparable across different image queries. - Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` - // Canonical description of the entity, in English. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (m *WebDetection_WebEntity) Reset() { *m = WebDetection_WebEntity{} } -func (m *WebDetection_WebEntity) String() string { return proto.CompactTextString(m) } -func (*WebDetection_WebEntity) ProtoMessage() {} -func (*WebDetection_WebEntity) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -func (m *WebDetection_WebEntity) GetEntityId() string { - if m != nil { - return m.EntityId - } - return "" -} - -func (m *WebDetection_WebEntity) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *WebDetection_WebEntity) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// Metadata for online images. -type WebDetection_WebImage struct { - // The result image URL. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // (Deprecated) Overall relevancy score for the image. - Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` -} - -func (m *WebDetection_WebImage) Reset() { *m = WebDetection_WebImage{} } -func (m *WebDetection_WebImage) String() string { return proto.CompactTextString(m) } -func (*WebDetection_WebImage) ProtoMessage() {} -func (*WebDetection_WebImage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} } - -func (m *WebDetection_WebImage) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *WebDetection_WebImage) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -// Metadata for web pages. -type WebDetection_WebPage struct { - // The result web page URL. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // (Deprecated) Overall relevancy score for the web page. - Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` - // Title for the web page, may contain HTML markups. - PageTitle string `protobuf:"bytes,3,opt,name=page_title,json=pageTitle" json:"page_title,omitempty"` - // Fully matching images on the page. - // Can include resized copies of the query image. - FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,4,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"` - // Partial matching images on the page. - // Those images are similar enough to share some key-point features. For - // example an original image will likely have partial matching for its - // crops. - PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,5,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"` -} - -func (m *WebDetection_WebPage) Reset() { *m = WebDetection_WebPage{} } -func (m *WebDetection_WebPage) String() string { return proto.CompactTextString(m) } -func (*WebDetection_WebPage) ProtoMessage() {} -func (*WebDetection_WebPage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2} } - -func (m *WebDetection_WebPage) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *WebDetection_WebPage) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *WebDetection_WebPage) GetPageTitle() string { - if m != nil { - return m.PageTitle - } - return "" -} - -func (m *WebDetection_WebPage) GetFullMatchingImages() []*WebDetection_WebImage { - if m != nil { - return m.FullMatchingImages - } - return nil -} - -func (m *WebDetection_WebPage) GetPartialMatchingImages() []*WebDetection_WebImage { - if m != nil { - return m.PartialMatchingImages - } - return nil -} - -// Label to provide extra metadata for the web detection. -type WebDetection_WebLabel struct { - // Label for extra metadata. - Label string `protobuf:"bytes,1,opt,name=label" json:"label,omitempty"` - // The BCP-47 language code for `label`, such as "en-US" or "sr-Latn". - // For more information, see - // http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *WebDetection_WebLabel) Reset() { *m = WebDetection_WebLabel{} } -func (m *WebDetection_WebLabel) String() string { return proto.CompactTextString(m) } -func (*WebDetection_WebLabel) ProtoMessage() {} -func (*WebDetection_WebLabel) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 3} } - -func (m *WebDetection_WebLabel) GetLabel() string { - if m != nil { - return m.Label - } - return "" -} - -func (m *WebDetection_WebLabel) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func init() { - proto.RegisterType((*WebDetection)(nil), "google.cloud.vision.v1.WebDetection") - proto.RegisterType((*WebDetection_WebEntity)(nil), "google.cloud.vision.v1.WebDetection.WebEntity") - proto.RegisterType((*WebDetection_WebImage)(nil), "google.cloud.vision.v1.WebDetection.WebImage") - proto.RegisterType((*WebDetection_WebPage)(nil), "google.cloud.vision.v1.WebDetection.WebPage") - proto.RegisterType((*WebDetection_WebLabel)(nil), "google.cloud.vision.v1.WebDetection.WebLabel") -} - -func init() { proto.RegisterFile("google/cloud/vision/v1/web_detection.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 505 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0xd1, 0x8b, 0xd3, 0x4e, - 0x10, 0xc7, 0x49, 0x7b, 0x77, 0xbf, 0x76, 0xdb, 0x1f, 0x7a, 0xcb, 0xe9, 0x85, 0xa8, 0x50, 0xf4, - 0xa5, 0x88, 0x26, 0xdc, 0xf9, 0xa8, 0x4f, 0xa7, 0x87, 0x1c, 0x28, 0xd4, 0x28, 0x1c, 0xfa, 0xb2, - 0x6e, 0x92, 0x35, 0x1d, 0xd8, 0x66, 0x43, 0x76, 0xd3, 0xd2, 0xff, 0xc4, 0xbf, 0xca, 0xbf, 0xc7, - 0x47, 0x99, 0xdd, 0x8d, 0x94, 0xeb, 0x1d, 0xd4, 0x43, 0x7c, 0x9b, 0x99, 0xcc, 0xf7, 0xf3, 0xdd, - 0x9d, 0x0c, 0x4b, 0x9e, 0x96, 0x4a, 0x95, 0x52, 0x24, 0xb9, 0x54, 0x6d, 0x91, 0x2c, 0x41, 0x83, - 0xaa, 0x92, 0xe5, 0x49, 0xb2, 0x12, 0x19, 0x2b, 0x84, 0x11, 0xb9, 0x01, 0x55, 0xc5, 0x75, 0xa3, - 0x8c, 0xa2, 0xf7, 0x5d, 0x6f, 0x6c, 0x7b, 0x63, 0xd7, 0x1b, 0x2f, 0x4f, 0xa2, 0x87, 0x9e, 0xc1, - 0x6b, 0x48, 0x78, 0x55, 0x29, 0xc3, 0x51, 0xa4, 0x9d, 0xea, 0xf1, 0x8f, 0x01, 0x19, 0x5f, 0x8a, - 0xec, 0x4d, 0x07, 0xa3, 0x1f, 0xc8, 0x18, 0xe9, 0xa2, 0x32, 0x60, 0x40, 0xe8, 0x30, 0x98, 0xf4, - 0xa7, 0xa3, 0xd3, 0x38, 0xbe, 0x9e, 0x1e, 0x6f, 0x6a, 0x31, 0x39, 0x47, 0xdd, 0x3a, 0x1d, 0xad, - 0x7c, 0x08, 0x42, 0x53, 0x46, 0x8e, 0xbe, 0xb5, 0x52, 0xb2, 0x05, 0x37, 0xf9, 0x1c, 0xaa, 0x92, - 0xc1, 0x82, 0x97, 0x42, 0x87, 0x3d, 0x8b, 0x7e, 0xbe, 0x2b, 0xfa, 0x02, 0x55, 0x29, 0x45, 0xd4, - 0x7b, 0x4f, 0xb2, 0x25, 0x4d, 0x05, 0x39, 0xae, 0x79, 0x63, 0x80, 0x6f, 0x7b, 0xf4, 0x6f, 0xe3, - 0x71, 0xcf, 0xd3, 0xae, 0xd8, 0x00, 0x89, 0x6a, 0x0c, 0xd8, 0x0a, 0xcc, 0x7c, 0xcb, 0x69, 0xcf, - 0x3a, 0x3d, 0xdb, 0xd5, 0x69, 0x86, 0x46, 0xc7, 0x96, 0x77, 0x09, 0x66, 0xbe, 0x7d, 0xa3, 0x25, - 0xe8, 0x96, 0x4b, 0xb9, 0x66, 0x1a, 0x16, 0x20, 0x79, 0xd3, 0xf9, 0x1c, 0xdc, 0xea, 0x46, 0x1d, - 0xed, 0xa3, 0x83, 0x79, 0x9b, 0xcf, 0xe4, 0x30, 0x13, 0xda, 0xb0, 0xb2, 0x15, 0x5a, 0x33, 0xc9, - 0x33, 0x21, 0x75, 0x38, 0xf8, 0x33, 0x83, 0x77, 0xa8, 0x4a, 0xef, 0x20, 0xe7, 0x2d, 0x62, 0x6c, - 0xae, 0xa3, 0xaf, 0x64, 0xf8, 0x7b, 0x1d, 0xe8, 0x03, 0x32, 0xb4, 0x0b, 0xb5, 0x66, 0x50, 0x84, - 0xc1, 0x24, 0x98, 0x0e, 0xd3, 0x81, 0x2b, 0x5c, 0x14, 0xf4, 0x88, 0xec, 0xeb, 0x5c, 0x35, 0x22, - 0xec, 0x4d, 0x82, 0x69, 0x2f, 0x75, 0x09, 0x9d, 0x90, 0x51, 0x21, 0x74, 0xde, 0x40, 0x8d, 0x46, - 0x61, 0xdf, 0x8a, 0x36, 0x4b, 0xd1, 0x29, 0x19, 0x74, 0xf7, 0xa3, 0x77, 0x49, 0xbf, 0x6d, 0xa4, - 0x47, 0x63, 0x78, 0x3d, 0x35, 0xfa, 0xde, 0x23, 0xff, 0xf9, 0xe1, 0xef, 0xaa, 0xa1, 0x8f, 0x08, - 0xc1, 0xdf, 0xc4, 0x0c, 0x18, 0x29, 0xfc, 0x41, 0x86, 0x58, 0xf9, 0x84, 0x85, 0x1b, 0xb7, 0x7b, - 0xef, 0x1f, 0x6c, 0xf7, 0xfe, 0xdf, 0xdb, 0xee, 0xe8, 0xdc, 0x8e, 0xd3, 0xfe, 0x3d, 0x1c, 0x84, - 0x5d, 0x06, 0x3f, 0x1c, 0x97, 0xd0, 0x27, 0xe4, 0x7f, 0xc9, 0xab, 0xb2, 0xc5, 0x61, 0xe4, 0xaa, - 0x70, 0x63, 0x1a, 0xa6, 0xe3, 0xae, 0xf8, 0x5a, 0x15, 0xe2, 0xac, 0x21, 0x51, 0xae, 0x16, 0x37, - 0x9c, 0xe8, 0xec, 0x70, 0xf3, 0x48, 0x33, 0x7c, 0x81, 0x66, 0xc1, 0x97, 0x57, 0xbe, 0xb9, 0x54, - 0x48, 0x8a, 0x55, 0x53, 0x26, 0xa5, 0xa8, 0xec, 0xfb, 0x94, 0xb8, 0x4f, 0xbc, 0x06, 0x7d, 0xf5, - 0x11, 0x7c, 0xe9, 0xa2, 0x9f, 0x41, 0x90, 0x1d, 0xd8, 0xde, 0x17, 0xbf, 0x02, 0x00, 0x00, 0xff, - 0xff, 0x1c, 0xe5, 0x3e, 0x5b, 0x2f, 0x05, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/geometry.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/geometry.pb.go deleted file mode 100644 index c04a32ad..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/geometry.pb.go +++ /dev/null @@ -1,173 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/vision/v1p1beta1/geometry.proto - -/* -Package vision is a generated protocol buffer package. - -It is generated from these files: - google/cloud/vision/v1p1beta1/geometry.proto - google/cloud/vision/v1p1beta1/image_annotator.proto - google/cloud/vision/v1p1beta1/text_annotation.proto - google/cloud/vision/v1p1beta1/web_detection.proto - -It has these top-level messages: - Vertex - BoundingPoly - Position - Feature - ImageSource - Image - FaceAnnotation - LocationInfo - Property - EntityAnnotation - SafeSearchAnnotation - LatLongRect - ColorInfo - DominantColorsAnnotation - ImageProperties - CropHint - CropHintsAnnotation - CropHintsParams - WebDetectionParams - ImageContext - AnnotateImageRequest - AnnotateImageResponse - BatchAnnotateImagesRequest - BatchAnnotateImagesResponse - TextAnnotation - Page - Block - Paragraph - Word - Symbol - WebDetection -*/ -package vision - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A vertex represents a 2D point in the image. -// NOTE: the vertex coordinates are in the same scale as the original image. -type Vertex struct { - // X coordinate. - X int32 `protobuf:"varint,1,opt,name=x" json:"x,omitempty"` - // Y coordinate. - Y int32 `protobuf:"varint,2,opt,name=y" json:"y,omitempty"` -} - -func (m *Vertex) Reset() { *m = Vertex{} } -func (m *Vertex) String() string { return proto.CompactTextString(m) } -func (*Vertex) ProtoMessage() {} -func (*Vertex) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Vertex) GetX() int32 { - if m != nil { - return m.X - } - return 0 -} - -func (m *Vertex) GetY() int32 { - if m != nil { - return m.Y - } - return 0 -} - -// A bounding polygon for the detected image annotation. -type BoundingPoly struct { - // The bounding polygon vertices. - Vertices []*Vertex `protobuf:"bytes,1,rep,name=vertices" json:"vertices,omitempty"` -} - -func (m *BoundingPoly) Reset() { *m = BoundingPoly{} } -func (m *BoundingPoly) String() string { return proto.CompactTextString(m) } -func (*BoundingPoly) ProtoMessage() {} -func (*BoundingPoly) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *BoundingPoly) GetVertices() []*Vertex { - if m != nil { - return m.Vertices - } - return nil -} - -// A 3D position in the image, used primarily for Face detection landmarks. -// A valid Position must have both x and y coordinates. -// The position coordinates are in the same scale as the original image. -type Position struct { - // X coordinate. - X float32 `protobuf:"fixed32,1,opt,name=x" json:"x,omitempty"` - // Y coordinate. - Y float32 `protobuf:"fixed32,2,opt,name=y" json:"y,omitempty"` - // Z coordinate (or depth). - Z float32 `protobuf:"fixed32,3,opt,name=z" json:"z,omitempty"` -} - -func (m *Position) Reset() { *m = Position{} } -func (m *Position) String() string { return proto.CompactTextString(m) } -func (*Position) ProtoMessage() {} -func (*Position) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Position) GetX() float32 { - if m != nil { - return m.X - } - return 0 -} - -func (m *Position) GetY() float32 { - if m != nil { - return m.Y - } - return 0 -} - -func (m *Position) GetZ() float32 { - if m != nil { - return m.Z - } - return 0 -} - -func init() { - proto.RegisterType((*Vertex)(nil), "google.cloud.vision.v1p1beta1.Vertex") - proto.RegisterType((*BoundingPoly)(nil), "google.cloud.vision.v1p1beta1.BoundingPoly") - proto.RegisterType((*Position)(nil), "google.cloud.vision.v1p1beta1.Position") -} - -func init() { proto.RegisterFile("google/cloud/vision/v1p1beta1/geometry.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 243 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0xb1, 0x4b, 0xc3, 0x40, - 0x14, 0x87, 0x79, 0x29, 0x96, 0x72, 0xd6, 0x25, 0x53, 0x16, 0xa1, 0x06, 0x85, 0x0e, 0x72, 0x47, - 0xd4, 0xcd, 0xc9, 0x38, 0xb8, 0xc6, 0x0c, 0x0e, 0x6e, 0x69, 0xfa, 0x78, 0x1c, 0xa4, 0xf7, 0xc2, - 0xe5, 0x1a, 0x7a, 0xc5, 0x3f, 0xdc, 0x51, 0x7a, 0x57, 0x2a, 0x0e, 0x76, 0xfc, 0xdd, 0x7d, 0x8f, - 0x0f, 0x3e, 0x71, 0x4f, 0xcc, 0xd4, 0xa1, 0x6a, 0x3b, 0xde, 0xae, 0xd5, 0xa8, 0x07, 0xcd, 0x46, - 0x8d, 0x45, 0x5f, 0xac, 0xd0, 0x35, 0x85, 0x22, 0xe4, 0x0d, 0x3a, 0xeb, 0x65, 0x6f, 0xd9, 0x71, - 0x7a, 0x1d, 0x69, 0x19, 0x68, 0x19, 0x69, 0x79, 0xa2, 0xf3, 0x5b, 0x31, 0xfd, 0x40, 0xeb, 0x70, - 0x97, 0xce, 0x05, 0xec, 0x32, 0x58, 0xc0, 0xf2, 0xa2, 0x86, 0xb0, 0x7c, 0x96, 0xc4, 0xe5, 0xf3, - 0x77, 0x31, 0x2f, 0x79, 0x6b, 0xd6, 0xda, 0x50, 0xc5, 0x9d, 0x4f, 0x5f, 0xc4, 0x6c, 0x44, 0xeb, - 0x74, 0x8b, 0x43, 0x06, 0x8b, 0xc9, 0xf2, 0xf2, 0xe1, 0x4e, 0x9e, 0xf5, 0xc8, 0x28, 0xa9, 0x4f, - 0x67, 0xf9, 0x93, 0x98, 0x55, 0x3c, 0x68, 0xa7, 0xd9, 0xfc, 0xaa, 0x93, 0x3f, 0xea, 0xa4, 0x06, - 0x7f, 0x58, 0xfb, 0x6c, 0x12, 0xd7, 0xbe, 0xfc, 0x12, 0x37, 0x2d, 0x6f, 0xce, 0xbb, 0xca, 0xab, - 0xb7, 0x63, 0x82, 0xea, 0x50, 0xa0, 0x82, 0xcf, 0xd7, 0x23, 0x4f, 0xdc, 0x35, 0x86, 0x24, 0x5b, - 0x52, 0x84, 0x26, 0xf4, 0x51, 0xf1, 0xab, 0xe9, 0xf5, 0xf0, 0x4f, 0xd0, 0xe7, 0xf8, 0xf0, 0x0d, - 0xb0, 0x9a, 0x86, 0x93, 0xc7, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x91, 0xa5, 0x86, 0xce, 0x82, - 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/image_annotator.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/image_annotator.pb.go deleted file mode 100644 index 0d2b5b65..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/image_annotator.pb.go +++ /dev/null @@ -1,1503 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/vision/v1p1beta1/image_annotator.proto - -package vision - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" -import google_type "google.golang.org/genproto/googleapis/type/color" -import google_type1 "google.golang.org/genproto/googleapis/type/latlng" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A bucketized representation of likelihood, which is intended to give clients -// highly stable results across model upgrades. -type Likelihood int32 - -const ( - // Unknown likelihood. - Likelihood_UNKNOWN Likelihood = 0 - // It is very unlikely that the image belongs to the specified vertical. - Likelihood_VERY_UNLIKELY Likelihood = 1 - // It is unlikely that the image belongs to the specified vertical. - Likelihood_UNLIKELY Likelihood = 2 - // It is possible that the image belongs to the specified vertical. - Likelihood_POSSIBLE Likelihood = 3 - // It is likely that the image belongs to the specified vertical. - Likelihood_LIKELY Likelihood = 4 - // It is very likely that the image belongs to the specified vertical. - Likelihood_VERY_LIKELY Likelihood = 5 -) - -var Likelihood_name = map[int32]string{ - 0: "UNKNOWN", - 1: "VERY_UNLIKELY", - 2: "UNLIKELY", - 3: "POSSIBLE", - 4: "LIKELY", - 5: "VERY_LIKELY", -} -var Likelihood_value = map[string]int32{ - "UNKNOWN": 0, - "VERY_UNLIKELY": 1, - "UNLIKELY": 2, - "POSSIBLE": 3, - "LIKELY": 4, - "VERY_LIKELY": 5, -} - -func (x Likelihood) String() string { - return proto.EnumName(Likelihood_name, int32(x)) -} -func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Type of image feature. -type Feature_Type int32 - -const ( - // Unspecified feature type. - Feature_TYPE_UNSPECIFIED Feature_Type = 0 - // Run face detection. - Feature_FACE_DETECTION Feature_Type = 1 - // Run landmark detection. - Feature_LANDMARK_DETECTION Feature_Type = 2 - // Run logo detection. - Feature_LOGO_DETECTION Feature_Type = 3 - // Run label detection. - Feature_LABEL_DETECTION Feature_Type = 4 - // Run OCR. - Feature_TEXT_DETECTION Feature_Type = 5 - // Run dense text document OCR. Takes precedence when both - // DOCUMENT_TEXT_DETECTION and TEXT_DETECTION are present. - Feature_DOCUMENT_TEXT_DETECTION Feature_Type = 11 - // Run computer vision models to compute image safe-search properties. - Feature_SAFE_SEARCH_DETECTION Feature_Type = 6 - // Compute a set of image properties, such as the image's dominant colors. - Feature_IMAGE_PROPERTIES Feature_Type = 7 - // Run crop hints. - Feature_CROP_HINTS Feature_Type = 9 - // Run web detection. - Feature_WEB_DETECTION Feature_Type = 10 -) - -var Feature_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "FACE_DETECTION", - 2: "LANDMARK_DETECTION", - 3: "LOGO_DETECTION", - 4: "LABEL_DETECTION", - 5: "TEXT_DETECTION", - 11: "DOCUMENT_TEXT_DETECTION", - 6: "SAFE_SEARCH_DETECTION", - 7: "IMAGE_PROPERTIES", - 9: "CROP_HINTS", - 10: "WEB_DETECTION", -} -var Feature_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "FACE_DETECTION": 1, - "LANDMARK_DETECTION": 2, - "LOGO_DETECTION": 3, - "LABEL_DETECTION": 4, - "TEXT_DETECTION": 5, - "DOCUMENT_TEXT_DETECTION": 11, - "SAFE_SEARCH_DETECTION": 6, - "IMAGE_PROPERTIES": 7, - "CROP_HINTS": 9, - "WEB_DETECTION": 10, -} - -func (x Feature_Type) String() string { - return proto.EnumName(Feature_Type_name, int32(x)) -} -func (Feature_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -// Face landmark (feature) type. -// Left and right are defined from the vantage of the viewer of the image -// without considering mirror projections typical of photos. So, `LEFT_EYE`, -// typically, is the person's right eye. -type FaceAnnotation_Landmark_Type int32 - -const ( - // Unknown face landmark detected. Should not be filled. - FaceAnnotation_Landmark_UNKNOWN_LANDMARK FaceAnnotation_Landmark_Type = 0 - // Left eye. - FaceAnnotation_Landmark_LEFT_EYE FaceAnnotation_Landmark_Type = 1 - // Right eye. - FaceAnnotation_Landmark_RIGHT_EYE FaceAnnotation_Landmark_Type = 2 - // Left of left eyebrow. - FaceAnnotation_Landmark_LEFT_OF_LEFT_EYEBROW FaceAnnotation_Landmark_Type = 3 - // Right of left eyebrow. - FaceAnnotation_Landmark_RIGHT_OF_LEFT_EYEBROW FaceAnnotation_Landmark_Type = 4 - // Left of right eyebrow. - FaceAnnotation_Landmark_LEFT_OF_RIGHT_EYEBROW FaceAnnotation_Landmark_Type = 5 - // Right of right eyebrow. - FaceAnnotation_Landmark_RIGHT_OF_RIGHT_EYEBROW FaceAnnotation_Landmark_Type = 6 - // Midpoint between eyes. - FaceAnnotation_Landmark_MIDPOINT_BETWEEN_EYES FaceAnnotation_Landmark_Type = 7 - // Nose tip. - FaceAnnotation_Landmark_NOSE_TIP FaceAnnotation_Landmark_Type = 8 - // Upper lip. - FaceAnnotation_Landmark_UPPER_LIP FaceAnnotation_Landmark_Type = 9 - // Lower lip. - FaceAnnotation_Landmark_LOWER_LIP FaceAnnotation_Landmark_Type = 10 - // Mouth left. - FaceAnnotation_Landmark_MOUTH_LEFT FaceAnnotation_Landmark_Type = 11 - // Mouth right. - FaceAnnotation_Landmark_MOUTH_RIGHT FaceAnnotation_Landmark_Type = 12 - // Mouth center. - FaceAnnotation_Landmark_MOUTH_CENTER FaceAnnotation_Landmark_Type = 13 - // Nose, bottom right. - FaceAnnotation_Landmark_NOSE_BOTTOM_RIGHT FaceAnnotation_Landmark_Type = 14 - // Nose, bottom left. - FaceAnnotation_Landmark_NOSE_BOTTOM_LEFT FaceAnnotation_Landmark_Type = 15 - // Nose, bottom center. - FaceAnnotation_Landmark_NOSE_BOTTOM_CENTER FaceAnnotation_Landmark_Type = 16 - // Left eye, top boundary. - FaceAnnotation_Landmark_LEFT_EYE_TOP_BOUNDARY FaceAnnotation_Landmark_Type = 17 - // Left eye, right corner. - FaceAnnotation_Landmark_LEFT_EYE_RIGHT_CORNER FaceAnnotation_Landmark_Type = 18 - // Left eye, bottom boundary. - FaceAnnotation_Landmark_LEFT_EYE_BOTTOM_BOUNDARY FaceAnnotation_Landmark_Type = 19 - // Left eye, left corner. - FaceAnnotation_Landmark_LEFT_EYE_LEFT_CORNER FaceAnnotation_Landmark_Type = 20 - // Right eye, top boundary. - FaceAnnotation_Landmark_RIGHT_EYE_TOP_BOUNDARY FaceAnnotation_Landmark_Type = 21 - // Right eye, right corner. - FaceAnnotation_Landmark_RIGHT_EYE_RIGHT_CORNER FaceAnnotation_Landmark_Type = 22 - // Right eye, bottom boundary. - FaceAnnotation_Landmark_RIGHT_EYE_BOTTOM_BOUNDARY FaceAnnotation_Landmark_Type = 23 - // Right eye, left corner. - FaceAnnotation_Landmark_RIGHT_EYE_LEFT_CORNER FaceAnnotation_Landmark_Type = 24 - // Left eyebrow, upper midpoint. - FaceAnnotation_Landmark_LEFT_EYEBROW_UPPER_MIDPOINT FaceAnnotation_Landmark_Type = 25 - // Right eyebrow, upper midpoint. - FaceAnnotation_Landmark_RIGHT_EYEBROW_UPPER_MIDPOINT FaceAnnotation_Landmark_Type = 26 - // Left ear tragion. - FaceAnnotation_Landmark_LEFT_EAR_TRAGION FaceAnnotation_Landmark_Type = 27 - // Right ear tragion. - FaceAnnotation_Landmark_RIGHT_EAR_TRAGION FaceAnnotation_Landmark_Type = 28 - // Left eye pupil. - FaceAnnotation_Landmark_LEFT_EYE_PUPIL FaceAnnotation_Landmark_Type = 29 - // Right eye pupil. - FaceAnnotation_Landmark_RIGHT_EYE_PUPIL FaceAnnotation_Landmark_Type = 30 - // Forehead glabella. - FaceAnnotation_Landmark_FOREHEAD_GLABELLA FaceAnnotation_Landmark_Type = 31 - // Chin gnathion. - FaceAnnotation_Landmark_CHIN_GNATHION FaceAnnotation_Landmark_Type = 32 - // Chin left gonion. - FaceAnnotation_Landmark_CHIN_LEFT_GONION FaceAnnotation_Landmark_Type = 33 - // Chin right gonion. - FaceAnnotation_Landmark_CHIN_RIGHT_GONION FaceAnnotation_Landmark_Type = 34 -) - -var FaceAnnotation_Landmark_Type_name = map[int32]string{ - 0: "UNKNOWN_LANDMARK", - 1: "LEFT_EYE", - 2: "RIGHT_EYE", - 3: "LEFT_OF_LEFT_EYEBROW", - 4: "RIGHT_OF_LEFT_EYEBROW", - 5: "LEFT_OF_RIGHT_EYEBROW", - 6: "RIGHT_OF_RIGHT_EYEBROW", - 7: "MIDPOINT_BETWEEN_EYES", - 8: "NOSE_TIP", - 9: "UPPER_LIP", - 10: "LOWER_LIP", - 11: "MOUTH_LEFT", - 12: "MOUTH_RIGHT", - 13: "MOUTH_CENTER", - 14: "NOSE_BOTTOM_RIGHT", - 15: "NOSE_BOTTOM_LEFT", - 16: "NOSE_BOTTOM_CENTER", - 17: "LEFT_EYE_TOP_BOUNDARY", - 18: "LEFT_EYE_RIGHT_CORNER", - 19: "LEFT_EYE_BOTTOM_BOUNDARY", - 20: "LEFT_EYE_LEFT_CORNER", - 21: "RIGHT_EYE_TOP_BOUNDARY", - 22: "RIGHT_EYE_RIGHT_CORNER", - 23: "RIGHT_EYE_BOTTOM_BOUNDARY", - 24: "RIGHT_EYE_LEFT_CORNER", - 25: "LEFT_EYEBROW_UPPER_MIDPOINT", - 26: "RIGHT_EYEBROW_UPPER_MIDPOINT", - 27: "LEFT_EAR_TRAGION", - 28: "RIGHT_EAR_TRAGION", - 29: "LEFT_EYE_PUPIL", - 30: "RIGHT_EYE_PUPIL", - 31: "FOREHEAD_GLABELLA", - 32: "CHIN_GNATHION", - 33: "CHIN_LEFT_GONION", - 34: "CHIN_RIGHT_GONION", -} -var FaceAnnotation_Landmark_Type_value = map[string]int32{ - "UNKNOWN_LANDMARK": 0, - "LEFT_EYE": 1, - "RIGHT_EYE": 2, - "LEFT_OF_LEFT_EYEBROW": 3, - "RIGHT_OF_LEFT_EYEBROW": 4, - "LEFT_OF_RIGHT_EYEBROW": 5, - "RIGHT_OF_RIGHT_EYEBROW": 6, - "MIDPOINT_BETWEEN_EYES": 7, - "NOSE_TIP": 8, - "UPPER_LIP": 9, - "LOWER_LIP": 10, - "MOUTH_LEFT": 11, - "MOUTH_RIGHT": 12, - "MOUTH_CENTER": 13, - "NOSE_BOTTOM_RIGHT": 14, - "NOSE_BOTTOM_LEFT": 15, - "NOSE_BOTTOM_CENTER": 16, - "LEFT_EYE_TOP_BOUNDARY": 17, - "LEFT_EYE_RIGHT_CORNER": 18, - "LEFT_EYE_BOTTOM_BOUNDARY": 19, - "LEFT_EYE_LEFT_CORNER": 20, - "RIGHT_EYE_TOP_BOUNDARY": 21, - "RIGHT_EYE_RIGHT_CORNER": 22, - "RIGHT_EYE_BOTTOM_BOUNDARY": 23, - "RIGHT_EYE_LEFT_CORNER": 24, - "LEFT_EYEBROW_UPPER_MIDPOINT": 25, - "RIGHT_EYEBROW_UPPER_MIDPOINT": 26, - "LEFT_EAR_TRAGION": 27, - "RIGHT_EAR_TRAGION": 28, - "LEFT_EYE_PUPIL": 29, - "RIGHT_EYE_PUPIL": 30, - "FOREHEAD_GLABELLA": 31, - "CHIN_GNATHION": 32, - "CHIN_LEFT_GONION": 33, - "CHIN_RIGHT_GONION": 34, -} - -func (x FaceAnnotation_Landmark_Type) String() string { - return proto.EnumName(FaceAnnotation_Landmark_Type_name, int32(x)) -} -func (FaceAnnotation_Landmark_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor1, []int{3, 0, 0} -} - -// Users describe the type of Google Cloud Vision API tasks to perform over -// images by using *Feature*s. Each Feature indicates a type of image -// detection task to perform. Features encode the Cloud Vision API -// vertical to operate on and the number of top-scoring results to return. -type Feature struct { - // The feature type. - Type Feature_Type `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1p1beta1.Feature_Type" json:"type,omitempty"` - // Maximum number of results of this type. - MaxResults int32 `protobuf:"varint,2,opt,name=max_results,json=maxResults" json:"max_results,omitempty"` - // Model to use for the feature. - // Supported values: "builtin/stable" (the default if unset) and - // "builtin/latest". - Model string `protobuf:"bytes,3,opt,name=model" json:"model,omitempty"` -} - -func (m *Feature) Reset() { *m = Feature{} } -func (m *Feature) String() string { return proto.CompactTextString(m) } -func (*Feature) ProtoMessage() {} -func (*Feature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Feature) GetType() Feature_Type { - if m != nil { - return m.Type - } - return Feature_TYPE_UNSPECIFIED -} - -func (m *Feature) GetMaxResults() int32 { - if m != nil { - return m.MaxResults - } - return 0 -} - -func (m *Feature) GetModel() string { - if m != nil { - return m.Model - } - return "" -} - -// External image source (Google Cloud Storage image location). -type ImageSource struct { - // NOTE: For new code `image_uri` below is preferred. - // Google Cloud Storage image URI, which must be in the following form: - // `gs://bucket_name/object_name` (for details, see - // [Google Cloud Storage Request - // URIs](https://cloud.google.com/storage/docs/reference-uris)). - // NOTE: Cloud Storage object versioning is not supported. - GcsImageUri string `protobuf:"bytes,1,opt,name=gcs_image_uri,json=gcsImageUri" json:"gcs_image_uri,omitempty"` - // Image URI which supports: - // 1) Google Cloud Storage image URI, which must be in the following form: - // `gs://bucket_name/object_name` (for details, see - // [Google Cloud Storage Request - // URIs](https://cloud.google.com/storage/docs/reference-uris)). - // NOTE: Cloud Storage object versioning is not supported. - // 2) Publicly accessible image HTTP/HTTPS URL. - // This is preferred over the legacy `gcs_image_uri` above. When both - // `gcs_image_uri` and `image_uri` are specified, `image_uri` takes - // precedence. - ImageUri string `protobuf:"bytes,2,opt,name=image_uri,json=imageUri" json:"image_uri,omitempty"` -} - -func (m *ImageSource) Reset() { *m = ImageSource{} } -func (m *ImageSource) String() string { return proto.CompactTextString(m) } -func (*ImageSource) ProtoMessage() {} -func (*ImageSource) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *ImageSource) GetGcsImageUri() string { - if m != nil { - return m.GcsImageUri - } - return "" -} - -func (m *ImageSource) GetImageUri() string { - if m != nil { - return m.ImageUri - } - return "" -} - -// Client image to perform Google Cloud Vision API tasks over. -type Image struct { - // Image content, represented as a stream of bytes. - // Note: as with all `bytes` fields, protobuffers use a pure binary - // representation, whereas JSON representations use base64. - Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - // Google Cloud Storage image location. If both `content` and `source` - // are provided for an image, `content` takes precedence and is - // used to perform the image annotation request. - Source *ImageSource `protobuf:"bytes,2,opt,name=source" json:"source,omitempty"` -} - -func (m *Image) Reset() { *m = Image{} } -func (m *Image) String() string { return proto.CompactTextString(m) } -func (*Image) ProtoMessage() {} -func (*Image) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *Image) GetContent() []byte { - if m != nil { - return m.Content - } - return nil -} - -func (m *Image) GetSource() *ImageSource { - if m != nil { - return m.Source - } - return nil -} - -// A face annotation object contains the results of face detection. -type FaceAnnotation struct { - // The bounding polygon around the face. The coordinates of the bounding box - // are in the original image's scale, as returned in `ImageParams`. - // The bounding box is computed to "frame" the face in accordance with human - // expectations. It is based on the landmarker results. - // Note that one or more x and/or y coordinates may not be generated in the - // `BoundingPoly` (the polygon will be unbounded) if only a partial face - // appears in the image to be annotated. - BoundingPoly *BoundingPoly `protobuf:"bytes,1,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"` - // The `fd_bounding_poly` bounding polygon is tighter than the - // `boundingPoly`, and encloses only the skin part of the face. Typically, it - // is used to eliminate the face from any image analysis that detects the - // "amount of skin" visible in an image. It is not based on the - // landmarker results, only on the initial face detection, hence - // the <code>fd</code> (face detection) prefix. - FdBoundingPoly *BoundingPoly `protobuf:"bytes,2,opt,name=fd_bounding_poly,json=fdBoundingPoly" json:"fd_bounding_poly,omitempty"` - // Detected face landmarks. - Landmarks []*FaceAnnotation_Landmark `protobuf:"bytes,3,rep,name=landmarks" json:"landmarks,omitempty"` - // Roll angle, which indicates the amount of clockwise/anti-clockwise rotation - // of the face relative to the image vertical about the axis perpendicular to - // the face. Range [-180,180]. - RollAngle float32 `protobuf:"fixed32,4,opt,name=roll_angle,json=rollAngle" json:"roll_angle,omitempty"` - // Yaw angle, which indicates the leftward/rightward angle that the face is - // pointing relative to the vertical plane perpendicular to the image. Range - // [-180,180]. - PanAngle float32 `protobuf:"fixed32,5,opt,name=pan_angle,json=panAngle" json:"pan_angle,omitempty"` - // Pitch angle, which indicates the upwards/downwards angle that the face is - // pointing relative to the image's horizontal plane. Range [-180,180]. - TiltAngle float32 `protobuf:"fixed32,6,opt,name=tilt_angle,json=tiltAngle" json:"tilt_angle,omitempty"` - // Detection confidence. Range [0, 1]. - DetectionConfidence float32 `protobuf:"fixed32,7,opt,name=detection_confidence,json=detectionConfidence" json:"detection_confidence,omitempty"` - // Face landmarking confidence. Range [0, 1]. - LandmarkingConfidence float32 `protobuf:"fixed32,8,opt,name=landmarking_confidence,json=landmarkingConfidence" json:"landmarking_confidence,omitempty"` - // Joy likelihood. - JoyLikelihood Likelihood `protobuf:"varint,9,opt,name=joy_likelihood,json=joyLikelihood,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"joy_likelihood,omitempty"` - // Sorrow likelihood. - SorrowLikelihood Likelihood `protobuf:"varint,10,opt,name=sorrow_likelihood,json=sorrowLikelihood,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"sorrow_likelihood,omitempty"` - // Anger likelihood. - AngerLikelihood Likelihood `protobuf:"varint,11,opt,name=anger_likelihood,json=angerLikelihood,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"anger_likelihood,omitempty"` - // Surprise likelihood. - SurpriseLikelihood Likelihood `protobuf:"varint,12,opt,name=surprise_likelihood,json=surpriseLikelihood,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"surprise_likelihood,omitempty"` - // Under-exposed likelihood. - UnderExposedLikelihood Likelihood `protobuf:"varint,13,opt,name=under_exposed_likelihood,json=underExposedLikelihood,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"under_exposed_likelihood,omitempty"` - // Blurred likelihood. - BlurredLikelihood Likelihood `protobuf:"varint,14,opt,name=blurred_likelihood,json=blurredLikelihood,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"blurred_likelihood,omitempty"` - // Headwear likelihood. - HeadwearLikelihood Likelihood `protobuf:"varint,15,opt,name=headwear_likelihood,json=headwearLikelihood,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"headwear_likelihood,omitempty"` -} - -func (m *FaceAnnotation) Reset() { *m = FaceAnnotation{} } -func (m *FaceAnnotation) String() string { return proto.CompactTextString(m) } -func (*FaceAnnotation) ProtoMessage() {} -func (*FaceAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *FaceAnnotation) GetBoundingPoly() *BoundingPoly { - if m != nil { - return m.BoundingPoly - } - return nil -} - -func (m *FaceAnnotation) GetFdBoundingPoly() *BoundingPoly { - if m != nil { - return m.FdBoundingPoly - } - return nil -} - -func (m *FaceAnnotation) GetLandmarks() []*FaceAnnotation_Landmark { - if m != nil { - return m.Landmarks - } - return nil -} - -func (m *FaceAnnotation) GetRollAngle() float32 { - if m != nil { - return m.RollAngle - } - return 0 -} - -func (m *FaceAnnotation) GetPanAngle() float32 { - if m != nil { - return m.PanAngle - } - return 0 -} - -func (m *FaceAnnotation) GetTiltAngle() float32 { - if m != nil { - return m.TiltAngle - } - return 0 -} - -func (m *FaceAnnotation) GetDetectionConfidence() float32 { - if m != nil { - return m.DetectionConfidence - } - return 0 -} - -func (m *FaceAnnotation) GetLandmarkingConfidence() float32 { - if m != nil { - return m.LandmarkingConfidence - } - return 0 -} - -func (m *FaceAnnotation) GetJoyLikelihood() Likelihood { - if m != nil { - return m.JoyLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetSorrowLikelihood() Likelihood { - if m != nil { - return m.SorrowLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetAngerLikelihood() Likelihood { - if m != nil { - return m.AngerLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetSurpriseLikelihood() Likelihood { - if m != nil { - return m.SurpriseLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetUnderExposedLikelihood() Likelihood { - if m != nil { - return m.UnderExposedLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetBlurredLikelihood() Likelihood { - if m != nil { - return m.BlurredLikelihood - } - return Likelihood_UNKNOWN -} - -func (m *FaceAnnotation) GetHeadwearLikelihood() Likelihood { - if m != nil { - return m.HeadwearLikelihood - } - return Likelihood_UNKNOWN -} - -// A face-specific landmark (for example, a face feature). -type FaceAnnotation_Landmark struct { - // Face landmark type. - Type FaceAnnotation_Landmark_Type `protobuf:"varint,3,opt,name=type,enum=google.cloud.vision.v1p1beta1.FaceAnnotation_Landmark_Type" json:"type,omitempty"` - // Face landmark position. - Position *Position `protobuf:"bytes,4,opt,name=position" json:"position,omitempty"` -} - -func (m *FaceAnnotation_Landmark) Reset() { *m = FaceAnnotation_Landmark{} } -func (m *FaceAnnotation_Landmark) String() string { return proto.CompactTextString(m) } -func (*FaceAnnotation_Landmark) ProtoMessage() {} -func (*FaceAnnotation_Landmark) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} } - -func (m *FaceAnnotation_Landmark) GetType() FaceAnnotation_Landmark_Type { - if m != nil { - return m.Type - } - return FaceAnnotation_Landmark_UNKNOWN_LANDMARK -} - -func (m *FaceAnnotation_Landmark) GetPosition() *Position { - if m != nil { - return m.Position - } - return nil -} - -// Detected entity location information. -type LocationInfo struct { - // lat/long location coordinates. - LatLng *google_type1.LatLng `protobuf:"bytes,1,opt,name=lat_lng,json=latLng" json:"lat_lng,omitempty"` -} - -func (m *LocationInfo) Reset() { *m = LocationInfo{} } -func (m *LocationInfo) String() string { return proto.CompactTextString(m) } -func (*LocationInfo) ProtoMessage() {} -func (*LocationInfo) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *LocationInfo) GetLatLng() *google_type1.LatLng { - if m != nil { - return m.LatLng - } - return nil -} - -// A `Property` consists of a user-supplied name/value pair. -type Property struct { - // Name of the property. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Value of the property. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - // Value of numeric properties. - Uint64Value uint64 `protobuf:"varint,3,opt,name=uint64_value,json=uint64Value" json:"uint64_value,omitempty"` -} - -func (m *Property) Reset() { *m = Property{} } -func (m *Property) String() string { return proto.CompactTextString(m) } -func (*Property) ProtoMessage() {} -func (*Property) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *Property) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Property) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *Property) GetUint64Value() uint64 { - if m != nil { - return m.Uint64Value - } - return 0 -} - -// Set of detected entity features. -type EntityAnnotation struct { - // Opaque entity ID. Some IDs may be available in - // [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/). - Mid string `protobuf:"bytes,1,opt,name=mid" json:"mid,omitempty"` - // The language code for the locale in which the entity textual - // `description` is expressed. - Locale string `protobuf:"bytes,2,opt,name=locale" json:"locale,omitempty"` - // Entity textual description, expressed in its `locale` language. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // Overall score of the result. Range [0, 1]. - Score float32 `protobuf:"fixed32,4,opt,name=score" json:"score,omitempty"` - // The accuracy of the entity detection in an image. - // For example, for an image in which the "Eiffel Tower" entity is detected, - // this field represents the confidence that there is a tower in the query - // image. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"` - // The relevancy of the ICA (Image Content Annotation) label to the - // image. For example, the relevancy of "tower" is likely higher to an image - // containing the detected "Eiffel Tower" than to an image containing a - // detected distant towering building, even though the confidence that - // there is a tower in each image may be the same. Range [0, 1]. - Topicality float32 `protobuf:"fixed32,6,opt,name=topicality" json:"topicality,omitempty"` - // Image region to which this entity belongs. Not produced - // for `LABEL_DETECTION` features. - BoundingPoly *BoundingPoly `protobuf:"bytes,7,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"` - // The location information for the detected entity. Multiple - // `LocationInfo` elements can be present because one location may - // indicate the location of the scene in the image, and another location - // may indicate the location of the place where the image was taken. - // Location information is usually present for landmarks. - Locations []*LocationInfo `protobuf:"bytes,8,rep,name=locations" json:"locations,omitempty"` - // Some entities may have optional user-supplied `Property` (name/value) - // fields, such a score or string that qualifies the entity. - Properties []*Property `protobuf:"bytes,9,rep,name=properties" json:"properties,omitempty"` -} - -func (m *EntityAnnotation) Reset() { *m = EntityAnnotation{} } -func (m *EntityAnnotation) String() string { return proto.CompactTextString(m) } -func (*EntityAnnotation) ProtoMessage() {} -func (*EntityAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *EntityAnnotation) GetMid() string { - if m != nil { - return m.Mid - } - return "" -} - -func (m *EntityAnnotation) GetLocale() string { - if m != nil { - return m.Locale - } - return "" -} - -func (m *EntityAnnotation) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *EntityAnnotation) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *EntityAnnotation) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func (m *EntityAnnotation) GetTopicality() float32 { - if m != nil { - return m.Topicality - } - return 0 -} - -func (m *EntityAnnotation) GetBoundingPoly() *BoundingPoly { - if m != nil { - return m.BoundingPoly - } - return nil -} - -func (m *EntityAnnotation) GetLocations() []*LocationInfo { - if m != nil { - return m.Locations - } - return nil -} - -func (m *EntityAnnotation) GetProperties() []*Property { - if m != nil { - return m.Properties - } - return nil -} - -// Set of features pertaining to the image, computed by computer vision -// methods over safe-search verticals (for example, adult, spoof, medical, -// violence). -type SafeSearchAnnotation struct { - // Represents the adult content likelihood for the image. Adult content may - // contain elements such as nudity, pornographic images or cartoons, or - // sexual activities. - Adult Likelihood `protobuf:"varint,1,opt,name=adult,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"adult,omitempty"` - // Spoof likelihood. The likelihood that an modification - // was made to the image's canonical version to make it appear - // funny or offensive. - Spoof Likelihood `protobuf:"varint,2,opt,name=spoof,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"spoof,omitempty"` - // Likelihood that this is a medical image. - Medical Likelihood `protobuf:"varint,3,opt,name=medical,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"medical,omitempty"` - // Likelihood that this image contains violent content. - Violence Likelihood `protobuf:"varint,4,opt,name=violence,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"violence,omitempty"` - // Likelihood that the request image contains racy content. Racy content may - // include (but is not limited to) skimpy or sheer clothing, strategically - // covered nudity, lewd or provocative poses, or close-ups of sensitive - // body areas. - Racy Likelihood `protobuf:"varint,9,opt,name=racy,enum=google.cloud.vision.v1p1beta1.Likelihood" json:"racy,omitempty"` -} - -func (m *SafeSearchAnnotation) Reset() { *m = SafeSearchAnnotation{} } -func (m *SafeSearchAnnotation) String() string { return proto.CompactTextString(m) } -func (*SafeSearchAnnotation) ProtoMessage() {} -func (*SafeSearchAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *SafeSearchAnnotation) GetAdult() Likelihood { - if m != nil { - return m.Adult - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetSpoof() Likelihood { - if m != nil { - return m.Spoof - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetMedical() Likelihood { - if m != nil { - return m.Medical - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetViolence() Likelihood { - if m != nil { - return m.Violence - } - return Likelihood_UNKNOWN -} - -func (m *SafeSearchAnnotation) GetRacy() Likelihood { - if m != nil { - return m.Racy - } - return Likelihood_UNKNOWN -} - -// Rectangle determined by min and max `LatLng` pairs. -type LatLongRect struct { - // Min lat/long pair. - MinLatLng *google_type1.LatLng `protobuf:"bytes,1,opt,name=min_lat_lng,json=minLatLng" json:"min_lat_lng,omitempty"` - // Max lat/long pair. - MaxLatLng *google_type1.LatLng `protobuf:"bytes,2,opt,name=max_lat_lng,json=maxLatLng" json:"max_lat_lng,omitempty"` -} - -func (m *LatLongRect) Reset() { *m = LatLongRect{} } -func (m *LatLongRect) String() string { return proto.CompactTextString(m) } -func (*LatLongRect) ProtoMessage() {} -func (*LatLongRect) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *LatLongRect) GetMinLatLng() *google_type1.LatLng { - if m != nil { - return m.MinLatLng - } - return nil -} - -func (m *LatLongRect) GetMaxLatLng() *google_type1.LatLng { - if m != nil { - return m.MaxLatLng - } - return nil -} - -// Color information consists of RGB channels, score, and the fraction of -// the image that the color occupies in the image. -type ColorInfo struct { - // RGB components of the color. - Color *google_type.Color `protobuf:"bytes,1,opt,name=color" json:"color,omitempty"` - // Image-specific score for this color. Value in range [0, 1]. - Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` - // The fraction of pixels the color occupies in the image. - // Value in range [0, 1]. - PixelFraction float32 `protobuf:"fixed32,3,opt,name=pixel_fraction,json=pixelFraction" json:"pixel_fraction,omitempty"` -} - -func (m *ColorInfo) Reset() { *m = ColorInfo{} } -func (m *ColorInfo) String() string { return proto.CompactTextString(m) } -func (*ColorInfo) ProtoMessage() {} -func (*ColorInfo) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *ColorInfo) GetColor() *google_type.Color { - if m != nil { - return m.Color - } - return nil -} - -func (m *ColorInfo) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *ColorInfo) GetPixelFraction() float32 { - if m != nil { - return m.PixelFraction - } - return 0 -} - -// Set of dominant colors and their corresponding scores. -type DominantColorsAnnotation struct { - // RGB color values with their score and pixel fraction. - Colors []*ColorInfo `protobuf:"bytes,1,rep,name=colors" json:"colors,omitempty"` -} - -func (m *DominantColorsAnnotation) Reset() { *m = DominantColorsAnnotation{} } -func (m *DominantColorsAnnotation) String() string { return proto.CompactTextString(m) } -func (*DominantColorsAnnotation) ProtoMessage() {} -func (*DominantColorsAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *DominantColorsAnnotation) GetColors() []*ColorInfo { - if m != nil { - return m.Colors - } - return nil -} - -// Stores image properties, such as dominant colors. -type ImageProperties struct { - // If present, dominant colors completed successfully. - DominantColors *DominantColorsAnnotation `protobuf:"bytes,1,opt,name=dominant_colors,json=dominantColors" json:"dominant_colors,omitempty"` -} - -func (m *ImageProperties) Reset() { *m = ImageProperties{} } -func (m *ImageProperties) String() string { return proto.CompactTextString(m) } -func (*ImageProperties) ProtoMessage() {} -func (*ImageProperties) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *ImageProperties) GetDominantColors() *DominantColorsAnnotation { - if m != nil { - return m.DominantColors - } - return nil -} - -// Single crop hint that is used to generate a new crop when serving an image. -type CropHint struct { - // The bounding polygon for the crop region. The coordinates of the bounding - // box are in the original image's scale, as returned in `ImageParams`. - BoundingPoly *BoundingPoly `protobuf:"bytes,1,opt,name=bounding_poly,json=boundingPoly" json:"bounding_poly,omitempty"` - // Confidence of this being a salient region. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` - // Fraction of importance of this salient region with respect to the original - // image. - ImportanceFraction float32 `protobuf:"fixed32,3,opt,name=importance_fraction,json=importanceFraction" json:"importance_fraction,omitempty"` -} - -func (m *CropHint) Reset() { *m = CropHint{} } -func (m *CropHint) String() string { return proto.CompactTextString(m) } -func (*CropHint) ProtoMessage() {} -func (*CropHint) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *CropHint) GetBoundingPoly() *BoundingPoly { - if m != nil { - return m.BoundingPoly - } - return nil -} - -func (m *CropHint) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func (m *CropHint) GetImportanceFraction() float32 { - if m != nil { - return m.ImportanceFraction - } - return 0 -} - -// Set of crop hints that are used to generate new crops when serving images. -type CropHintsAnnotation struct { - // Crop hint results. - CropHints []*CropHint `protobuf:"bytes,1,rep,name=crop_hints,json=cropHints" json:"crop_hints,omitempty"` -} - -func (m *CropHintsAnnotation) Reset() { *m = CropHintsAnnotation{} } -func (m *CropHintsAnnotation) String() string { return proto.CompactTextString(m) } -func (*CropHintsAnnotation) ProtoMessage() {} -func (*CropHintsAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *CropHintsAnnotation) GetCropHints() []*CropHint { - if m != nil { - return m.CropHints - } - return nil -} - -// Parameters for crop hints annotation request. -type CropHintsParams struct { - // Aspect ratios in floats, representing the ratio of the width to the height - // of the image. For example, if the desired aspect ratio is 4/3, the - // corresponding float value should be 1.33333. If not specified, the - // best possible crop is returned. The number of provided aspect ratios is - // limited to a maximum of 16; any aspect ratios provided after the 16th are - // ignored. - AspectRatios []float32 `protobuf:"fixed32,1,rep,packed,name=aspect_ratios,json=aspectRatios" json:"aspect_ratios,omitempty"` -} - -func (m *CropHintsParams) Reset() { *m = CropHintsParams{} } -func (m *CropHintsParams) String() string { return proto.CompactTextString(m) } -func (*CropHintsParams) ProtoMessage() {} -func (*CropHintsParams) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *CropHintsParams) GetAspectRatios() []float32 { - if m != nil { - return m.AspectRatios - } - return nil -} - -// Parameters for web detection request. -type WebDetectionParams struct { - // Whether to include results derived from the geo information in the image. - IncludeGeoResults bool `protobuf:"varint,2,opt,name=include_geo_results,json=includeGeoResults" json:"include_geo_results,omitempty"` -} - -func (m *WebDetectionParams) Reset() { *m = WebDetectionParams{} } -func (m *WebDetectionParams) String() string { return proto.CompactTextString(m) } -func (*WebDetectionParams) ProtoMessage() {} -func (*WebDetectionParams) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *WebDetectionParams) GetIncludeGeoResults() bool { - if m != nil { - return m.IncludeGeoResults - } - return false -} - -// Image context and/or feature-specific parameters. -type ImageContext struct { - // lat/long rectangle that specifies the location of the image. - LatLongRect *LatLongRect `protobuf:"bytes,1,opt,name=lat_long_rect,json=latLongRect" json:"lat_long_rect,omitempty"` - // List of languages to use for TEXT_DETECTION. In most cases, an empty value - // yields the best results since it enables automatic language detection. For - // languages based on the Latin alphabet, setting `language_hints` is not - // needed. In rare cases, when the language of the text in the image is known, - // setting a hint will help get better results (although it will be a - // significant hindrance if the hint is wrong). Text detection returns an - // error if one or more of the specified languages is not one of the - // [supported languages](/vision/docs/languages). - LanguageHints []string `protobuf:"bytes,2,rep,name=language_hints,json=languageHints" json:"language_hints,omitempty"` - // Parameters for crop hints annotation request. - CropHintsParams *CropHintsParams `protobuf:"bytes,4,opt,name=crop_hints_params,json=cropHintsParams" json:"crop_hints_params,omitempty"` - // Parameters for web detection. - WebDetectionParams *WebDetectionParams `protobuf:"bytes,6,opt,name=web_detection_params,json=webDetectionParams" json:"web_detection_params,omitempty"` -} - -func (m *ImageContext) Reset() { *m = ImageContext{} } -func (m *ImageContext) String() string { return proto.CompactTextString(m) } -func (*ImageContext) ProtoMessage() {} -func (*ImageContext) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *ImageContext) GetLatLongRect() *LatLongRect { - if m != nil { - return m.LatLongRect - } - return nil -} - -func (m *ImageContext) GetLanguageHints() []string { - if m != nil { - return m.LanguageHints - } - return nil -} - -func (m *ImageContext) GetCropHintsParams() *CropHintsParams { - if m != nil { - return m.CropHintsParams - } - return nil -} - -func (m *ImageContext) GetWebDetectionParams() *WebDetectionParams { - if m != nil { - return m.WebDetectionParams - } - return nil -} - -// Request for performing Google Cloud Vision API tasks over a user-provided -// image, with user-requested features. -type AnnotateImageRequest struct { - // The image to be processed. - Image *Image `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"` - // Requested features. - Features []*Feature `protobuf:"bytes,2,rep,name=features" json:"features,omitempty"` - // Additional context that may accompany the image. - ImageContext *ImageContext `protobuf:"bytes,3,opt,name=image_context,json=imageContext" json:"image_context,omitempty"` -} - -func (m *AnnotateImageRequest) Reset() { *m = AnnotateImageRequest{} } -func (m *AnnotateImageRequest) String() string { return proto.CompactTextString(m) } -func (*AnnotateImageRequest) ProtoMessage() {} -func (*AnnotateImageRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *AnnotateImageRequest) GetImage() *Image { - if m != nil { - return m.Image - } - return nil -} - -func (m *AnnotateImageRequest) GetFeatures() []*Feature { - if m != nil { - return m.Features - } - return nil -} - -func (m *AnnotateImageRequest) GetImageContext() *ImageContext { - if m != nil { - return m.ImageContext - } - return nil -} - -// Response to an image annotation request. -type AnnotateImageResponse struct { - // If present, face detection has completed successfully. - FaceAnnotations []*FaceAnnotation `protobuf:"bytes,1,rep,name=face_annotations,json=faceAnnotations" json:"face_annotations,omitempty"` - // If present, landmark detection has completed successfully. - LandmarkAnnotations []*EntityAnnotation `protobuf:"bytes,2,rep,name=landmark_annotations,json=landmarkAnnotations" json:"landmark_annotations,omitempty"` - // If present, logo detection has completed successfully. - LogoAnnotations []*EntityAnnotation `protobuf:"bytes,3,rep,name=logo_annotations,json=logoAnnotations" json:"logo_annotations,omitempty"` - // If present, label detection has completed successfully. - LabelAnnotations []*EntityAnnotation `protobuf:"bytes,4,rep,name=label_annotations,json=labelAnnotations" json:"label_annotations,omitempty"` - // If present, text (OCR) detection has completed successfully. - TextAnnotations []*EntityAnnotation `protobuf:"bytes,5,rep,name=text_annotations,json=textAnnotations" json:"text_annotations,omitempty"` - // If present, text (OCR) detection or document (OCR) text detection has - // completed successfully. - // This annotation provides the structural hierarchy for the OCR detected - // text. - FullTextAnnotation *TextAnnotation `protobuf:"bytes,12,opt,name=full_text_annotation,json=fullTextAnnotation" json:"full_text_annotation,omitempty"` - // If present, safe-search annotation has completed successfully. - SafeSearchAnnotation *SafeSearchAnnotation `protobuf:"bytes,6,opt,name=safe_search_annotation,json=safeSearchAnnotation" json:"safe_search_annotation,omitempty"` - // If present, image properties were extracted successfully. - ImagePropertiesAnnotation *ImageProperties `protobuf:"bytes,8,opt,name=image_properties_annotation,json=imagePropertiesAnnotation" json:"image_properties_annotation,omitempty"` - // If present, crop hints have completed successfully. - CropHintsAnnotation *CropHintsAnnotation `protobuf:"bytes,11,opt,name=crop_hints_annotation,json=cropHintsAnnotation" json:"crop_hints_annotation,omitempty"` - // If present, web detection has completed successfully. - WebDetection *WebDetection `protobuf:"bytes,13,opt,name=web_detection,json=webDetection" json:"web_detection,omitempty"` - // If set, represents the error message for the operation. - // Note that filled-in image annotations are guaranteed to be - // correct, even when `error` is set. - Error *google_rpc.Status `protobuf:"bytes,9,opt,name=error" json:"error,omitempty"` -} - -func (m *AnnotateImageResponse) Reset() { *m = AnnotateImageResponse{} } -func (m *AnnotateImageResponse) String() string { return proto.CompactTextString(m) } -func (*AnnotateImageResponse) ProtoMessage() {} -func (*AnnotateImageResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } - -func (m *AnnotateImageResponse) GetFaceAnnotations() []*FaceAnnotation { - if m != nil { - return m.FaceAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetLandmarkAnnotations() []*EntityAnnotation { - if m != nil { - return m.LandmarkAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetLogoAnnotations() []*EntityAnnotation { - if m != nil { - return m.LogoAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetLabelAnnotations() []*EntityAnnotation { - if m != nil { - return m.LabelAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetTextAnnotations() []*EntityAnnotation { - if m != nil { - return m.TextAnnotations - } - return nil -} - -func (m *AnnotateImageResponse) GetFullTextAnnotation() *TextAnnotation { - if m != nil { - return m.FullTextAnnotation - } - return nil -} - -func (m *AnnotateImageResponse) GetSafeSearchAnnotation() *SafeSearchAnnotation { - if m != nil { - return m.SafeSearchAnnotation - } - return nil -} - -func (m *AnnotateImageResponse) GetImagePropertiesAnnotation() *ImageProperties { - if m != nil { - return m.ImagePropertiesAnnotation - } - return nil -} - -func (m *AnnotateImageResponse) GetCropHintsAnnotation() *CropHintsAnnotation { - if m != nil { - return m.CropHintsAnnotation - } - return nil -} - -func (m *AnnotateImageResponse) GetWebDetection() *WebDetection { - if m != nil { - return m.WebDetection - } - return nil -} - -func (m *AnnotateImageResponse) GetError() *google_rpc.Status { - if m != nil { - return m.Error - } - return nil -} - -// Multiple image annotation requests are batched into a single service call. -type BatchAnnotateImagesRequest struct { - // Individual image annotation requests for this batch. - Requests []*AnnotateImageRequest `protobuf:"bytes,1,rep,name=requests" json:"requests,omitempty"` -} - -func (m *BatchAnnotateImagesRequest) Reset() { *m = BatchAnnotateImagesRequest{} } -func (m *BatchAnnotateImagesRequest) String() string { return proto.CompactTextString(m) } -func (*BatchAnnotateImagesRequest) ProtoMessage() {} -func (*BatchAnnotateImagesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } - -func (m *BatchAnnotateImagesRequest) GetRequests() []*AnnotateImageRequest { - if m != nil { - return m.Requests - } - return nil -} - -// Response to a batch image annotation request. -type BatchAnnotateImagesResponse struct { - // Individual responses to image annotation requests within the batch. - Responses []*AnnotateImageResponse `protobuf:"bytes,1,rep,name=responses" json:"responses,omitempty"` -} - -func (m *BatchAnnotateImagesResponse) Reset() { *m = BatchAnnotateImagesResponse{} } -func (m *BatchAnnotateImagesResponse) String() string { return proto.CompactTextString(m) } -func (*BatchAnnotateImagesResponse) ProtoMessage() {} -func (*BatchAnnotateImagesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } - -func (m *BatchAnnotateImagesResponse) GetResponses() []*AnnotateImageResponse { - if m != nil { - return m.Responses - } - return nil -} - -func init() { - proto.RegisterType((*Feature)(nil), "google.cloud.vision.v1p1beta1.Feature") - proto.RegisterType((*ImageSource)(nil), "google.cloud.vision.v1p1beta1.ImageSource") - proto.RegisterType((*Image)(nil), "google.cloud.vision.v1p1beta1.Image") - proto.RegisterType((*FaceAnnotation)(nil), "google.cloud.vision.v1p1beta1.FaceAnnotation") - proto.RegisterType((*FaceAnnotation_Landmark)(nil), "google.cloud.vision.v1p1beta1.FaceAnnotation.Landmark") - proto.RegisterType((*LocationInfo)(nil), "google.cloud.vision.v1p1beta1.LocationInfo") - proto.RegisterType((*Property)(nil), "google.cloud.vision.v1p1beta1.Property") - proto.RegisterType((*EntityAnnotation)(nil), "google.cloud.vision.v1p1beta1.EntityAnnotation") - proto.RegisterType((*SafeSearchAnnotation)(nil), "google.cloud.vision.v1p1beta1.SafeSearchAnnotation") - proto.RegisterType((*LatLongRect)(nil), "google.cloud.vision.v1p1beta1.LatLongRect") - proto.RegisterType((*ColorInfo)(nil), "google.cloud.vision.v1p1beta1.ColorInfo") - proto.RegisterType((*DominantColorsAnnotation)(nil), "google.cloud.vision.v1p1beta1.DominantColorsAnnotation") - proto.RegisterType((*ImageProperties)(nil), "google.cloud.vision.v1p1beta1.ImageProperties") - proto.RegisterType((*CropHint)(nil), "google.cloud.vision.v1p1beta1.CropHint") - proto.RegisterType((*CropHintsAnnotation)(nil), "google.cloud.vision.v1p1beta1.CropHintsAnnotation") - proto.RegisterType((*CropHintsParams)(nil), "google.cloud.vision.v1p1beta1.CropHintsParams") - proto.RegisterType((*WebDetectionParams)(nil), "google.cloud.vision.v1p1beta1.WebDetectionParams") - proto.RegisterType((*ImageContext)(nil), "google.cloud.vision.v1p1beta1.ImageContext") - proto.RegisterType((*AnnotateImageRequest)(nil), "google.cloud.vision.v1p1beta1.AnnotateImageRequest") - proto.RegisterType((*AnnotateImageResponse)(nil), "google.cloud.vision.v1p1beta1.AnnotateImageResponse") - proto.RegisterType((*BatchAnnotateImagesRequest)(nil), "google.cloud.vision.v1p1beta1.BatchAnnotateImagesRequest") - proto.RegisterType((*BatchAnnotateImagesResponse)(nil), "google.cloud.vision.v1p1beta1.BatchAnnotateImagesResponse") - proto.RegisterEnum("google.cloud.vision.v1p1beta1.Likelihood", Likelihood_name, Likelihood_value) - proto.RegisterEnum("google.cloud.vision.v1p1beta1.Feature_Type", Feature_Type_name, Feature_Type_value) - proto.RegisterEnum("google.cloud.vision.v1p1beta1.FaceAnnotation_Landmark_Type", FaceAnnotation_Landmark_Type_name, FaceAnnotation_Landmark_Type_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ImageAnnotator service - -type ImageAnnotatorClient interface { - // Run image detection and annotation for a batch of images. - BatchAnnotateImages(ctx context.Context, in *BatchAnnotateImagesRequest, opts ...grpc.CallOption) (*BatchAnnotateImagesResponse, error) -} - -type imageAnnotatorClient struct { - cc *grpc.ClientConn -} - -func NewImageAnnotatorClient(cc *grpc.ClientConn) ImageAnnotatorClient { - return &imageAnnotatorClient{cc} -} - -func (c *imageAnnotatorClient) BatchAnnotateImages(ctx context.Context, in *BatchAnnotateImagesRequest, opts ...grpc.CallOption) (*BatchAnnotateImagesResponse, error) { - out := new(BatchAnnotateImagesResponse) - err := grpc.Invoke(ctx, "/google.cloud.vision.v1p1beta1.ImageAnnotator/BatchAnnotateImages", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ImageAnnotator service - -type ImageAnnotatorServer interface { - // Run image detection and annotation for a batch of images. - BatchAnnotateImages(context.Context, *BatchAnnotateImagesRequest) (*BatchAnnotateImagesResponse, error) -} - -func RegisterImageAnnotatorServer(s *grpc.Server, srv ImageAnnotatorServer) { - s.RegisterService(&_ImageAnnotator_serviceDesc, srv) -} - -func _ImageAnnotator_BatchAnnotateImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchAnnotateImagesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ImageAnnotatorServer).BatchAnnotateImages(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.cloud.vision.v1p1beta1.ImageAnnotator/BatchAnnotateImages", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ImageAnnotatorServer).BatchAnnotateImages(ctx, req.(*BatchAnnotateImagesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ImageAnnotator_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.cloud.vision.v1p1beta1.ImageAnnotator", - HandlerType: (*ImageAnnotatorServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "BatchAnnotateImages", - Handler: _ImageAnnotator_BatchAnnotateImages_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/cloud/vision/v1p1beta1/image_annotator.proto", -} - -func init() { - proto.RegisterFile("google/cloud/vision/v1p1beta1/image_annotator.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 2392 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0xcd, 0x72, 0xe3, 0xc6, - 0xf1, 0x37, 0xa9, 0x2f, 0xb2, 0x49, 0x91, 0xd0, 0x48, 0x2b, 0x73, 0xb5, 0xbb, 0x5e, 0x19, 0xff, - 0xbf, 0x13, 0xc5, 0x71, 0xa8, 0x5a, 0xad, 0xe3, 0x54, 0xd6, 0x49, 0x39, 0x24, 0x05, 0x49, 0x2c, - 0x73, 0x49, 0xd4, 0x90, 0xb2, 0xbc, 0x5b, 0x4e, 0x21, 0x10, 0x38, 0xe4, 0xc2, 0x06, 0x31, 0x30, - 0x00, 0xee, 0x4a, 0x57, 0x5f, 0x73, 0xcc, 0x2d, 0xf7, 0x1c, 0x73, 0x4a, 0x9e, 0xc1, 0x2f, 0x90, - 0x43, 0x1e, 0x20, 0x39, 0xe4, 0x09, 0x52, 0xa9, 0x9c, 0x52, 0xf3, 0x01, 0x70, 0xc0, 0xfd, 0xa0, - 0xb8, 0xa9, 0x9c, 0x88, 0xe9, 0x9e, 0xdf, 0xaf, 0x67, 0xba, 0xa7, 0x67, 0x7a, 0x86, 0xf0, 0x70, - 0x4c, 0xe9, 0xd8, 0x23, 0x87, 0x8e, 0x47, 0xa7, 0xc3, 0xc3, 0xe7, 0x6e, 0xe4, 0x52, 0xff, 0xf0, - 0xf9, 0x83, 0xe0, 0xc1, 0x25, 0x89, 0xed, 0x07, 0x87, 0xee, 0xc4, 0x1e, 0x13, 0xcb, 0xf6, 0x7d, - 0x1a, 0xdb, 0x31, 0x0d, 0xeb, 0x41, 0x48, 0x63, 0x8a, 0xee, 0x09, 0x50, 0x9d, 0x83, 0xea, 0x02, - 0x54, 0x4f, 0x41, 0x7b, 0x77, 0x25, 0xa7, 0x1d, 0xb8, 0x87, 0x12, 0xea, 0x52, 0x3f, 0x12, 0xe0, - 0xbd, 0x8f, 0xde, 0x6c, 0x71, 0x4c, 0xe8, 0x84, 0xc4, 0xe1, 0xb5, 0xec, 0xbd, 0x60, 0x7c, 0x31, - 0xb9, 0x8a, 0xad, 0x99, 0x0d, 0x09, 0x7a, 0xf0, 0x66, 0xd0, 0x0b, 0x72, 0x69, 0x0d, 0x49, 0x4c, - 0x1c, 0x05, 0xf2, 0xae, 0x84, 0x84, 0x81, 0x73, 0x18, 0xc5, 0x76, 0x3c, 0x8d, 0xe6, 0x14, 0xf1, - 0x75, 0x40, 0x0e, 0x1d, 0xea, 0x25, 0x4e, 0xd8, 0xab, 0xa9, 0x0a, 0xcf, 0x8e, 0x3d, 0x7f, 0x2c, - 0x34, 0xfa, 0xbf, 0xf3, 0xb0, 0x71, 0x42, 0xec, 0x78, 0x1a, 0x12, 0xf4, 0x19, 0xac, 0xb2, 0x0e, - 0xb5, 0xdc, 0x7e, 0xee, 0xa0, 0x72, 0xf4, 0xe3, 0xfa, 0x1b, 0x3d, 0x57, 0x97, 0xa8, 0xfa, 0xe0, - 0x3a, 0x20, 0x98, 0x03, 0xd1, 0x7d, 0x28, 0x4d, 0xec, 0x2b, 0x2b, 0x24, 0xd1, 0xd4, 0x8b, 0xa3, - 0x5a, 0x7e, 0x3f, 0x77, 0xb0, 0x86, 0x61, 0x62, 0x5f, 0x61, 0x21, 0x41, 0x3b, 0xb0, 0x36, 0xa1, - 0x43, 0xe2, 0xd5, 0x56, 0xf6, 0x73, 0x07, 0x45, 0x2c, 0x1a, 0xfa, 0x3f, 0x73, 0xb0, 0xca, 0x58, - 0xd0, 0x0e, 0x68, 0x83, 0x27, 0xa6, 0x61, 0x9d, 0x77, 0xfb, 0xa6, 0xd1, 0x6a, 0x9f, 0xb4, 0x8d, - 0x63, 0xed, 0x1d, 0x84, 0xa0, 0x72, 0xd2, 0x68, 0x19, 0xd6, 0xb1, 0x31, 0x30, 0x5a, 0x83, 0x76, - 0xaf, 0xab, 0xe5, 0xd0, 0x2e, 0xa0, 0x4e, 0xa3, 0x7b, 0xfc, 0xb8, 0x81, 0x3f, 0x57, 0xe4, 0x79, - 0xd6, 0xb7, 0xd3, 0x3b, 0xed, 0x29, 0xb2, 0x15, 0xb4, 0x0d, 0xd5, 0x4e, 0xa3, 0x69, 0x74, 0x14, - 0xe1, 0x2a, 0xeb, 0x38, 0x30, 0xbe, 0x1c, 0x28, 0xb2, 0x35, 0x74, 0x07, 0xde, 0x3d, 0xee, 0xb5, - 0xce, 0x1f, 0x1b, 0xdd, 0x81, 0x35, 0xa7, 0x2c, 0xa1, 0xdb, 0x70, 0xab, 0xdf, 0x38, 0x31, 0xac, - 0xbe, 0xd1, 0xc0, 0xad, 0x33, 0x45, 0xb5, 0xce, 0x86, 0xdd, 0x7e, 0xdc, 0x38, 0x35, 0x2c, 0x13, - 0xf7, 0x4c, 0x03, 0x0f, 0xda, 0x46, 0x5f, 0xdb, 0x40, 0x15, 0x80, 0x16, 0xee, 0x99, 0xd6, 0x59, - 0xbb, 0x3b, 0xe8, 0x6b, 0x45, 0xb4, 0x05, 0x9b, 0x17, 0x46, 0x53, 0x01, 0x82, 0xde, 0x85, 0x52, - 0x9b, 0x2d, 0xda, 0x3e, 0x9d, 0x86, 0x0e, 0x41, 0x3a, 0x6c, 0x8e, 0x9d, 0xc8, 0x12, 0xeb, 0x78, - 0x1a, 0xba, 0x3c, 0x10, 0x45, 0x5c, 0x1a, 0x3b, 0x11, 0xef, 0x76, 0x1e, 0xba, 0xe8, 0x0e, 0x14, - 0x67, 0xfa, 0x3c, 0xd7, 0x17, 0x5c, 0xa9, 0xd4, 0x09, 0xac, 0xf1, 0x8e, 0xa8, 0x06, 0x1b, 0x0e, - 0xf5, 0x63, 0xe2, 0xc7, 0x9c, 0xa3, 0x8c, 0x93, 0x26, 0x6a, 0xc2, 0x7a, 0xc4, 0xad, 0x71, 0x70, - 0xe9, 0xe8, 0xc3, 0x05, 0x51, 0x56, 0xc6, 0x87, 0x25, 0x52, 0xff, 0x83, 0x06, 0x95, 0x13, 0xdb, - 0x21, 0x8d, 0x74, 0x2d, 0x23, 0x13, 0x36, 0x2f, 0xe9, 0xd4, 0x1f, 0xba, 0xfe, 0xd8, 0x0a, 0xa8, - 0x77, 0xcd, 0xcd, 0x96, 0x16, 0xae, 0xa1, 0xa6, 0xc4, 0x98, 0xd4, 0xbb, 0xc6, 0xe5, 0x4b, 0xa5, - 0x85, 0xce, 0x41, 0x1b, 0x0d, 0xad, 0x2c, 0x69, 0x7e, 0x79, 0xd2, 0xca, 0x68, 0xa8, 0xb6, 0xd1, - 0x00, 0x8a, 0x9e, 0xed, 0x0f, 0x27, 0x76, 0xf8, 0x4d, 0x54, 0x5b, 0xd9, 0x5f, 0x39, 0x28, 0x1d, - 0x7d, 0xb2, 0x68, 0xa1, 0x67, 0xa6, 0x5a, 0xef, 0x48, 0x38, 0x9e, 0x11, 0xa1, 0x7b, 0x00, 0x21, - 0xf5, 0x3c, 0xcb, 0xf6, 0xc7, 0x1e, 0xa9, 0xad, 0xee, 0xe7, 0x0e, 0xf2, 0xb8, 0xc8, 0x24, 0x0d, - 0x26, 0x60, 0x41, 0x0b, 0x6c, 0x5f, 0x6a, 0xd7, 0xb8, 0xb6, 0x10, 0xd8, 0xbe, 0x50, 0xde, 0x03, - 0x88, 0x5d, 0x2f, 0x96, 0xda, 0x75, 0x81, 0x65, 0x12, 0xa1, 0x7e, 0x00, 0x3b, 0x69, 0xfe, 0x5b, - 0x0e, 0xf5, 0x47, 0xee, 0x90, 0xf8, 0x0e, 0xa9, 0x6d, 0xf0, 0x8e, 0xdb, 0xa9, 0xae, 0x95, 0xaa, - 0xd0, 0x4f, 0x61, 0x37, 0x19, 0x1a, 0x73, 0x9d, 0x02, 0x2a, 0x70, 0xd0, 0x2d, 0x45, 0xab, 0xc0, - 0x4c, 0xa8, 0x7c, 0x4d, 0xaf, 0x2d, 0xcf, 0xfd, 0x86, 0x78, 0xee, 0x33, 0x4a, 0x87, 0xb5, 0x22, - 0xdf, 0x08, 0x7e, 0xb4, 0xc0, 0x3f, 0x9d, 0x14, 0x80, 0x37, 0xbf, 0xa6, 0xd7, 0xb3, 0x26, 0xfa, - 0x02, 0xb6, 0x22, 0x1a, 0x86, 0xf4, 0x85, 0x4a, 0x0a, 0xcb, 0x92, 0x6a, 0x82, 0x43, 0xe1, 0x1d, - 0x80, 0x66, 0xfb, 0x63, 0x12, 0xaa, 0xb4, 0xa5, 0x65, 0x69, 0xab, 0x9c, 0x42, 0x61, 0x7d, 0x0a, - 0xdb, 0xd1, 0x34, 0x0c, 0x42, 0x37, 0x22, 0x2a, 0x71, 0x79, 0x59, 0x62, 0x94, 0xb0, 0x28, 0xdc, - 0x0e, 0xd4, 0xa6, 0xfe, 0x90, 0x84, 0x16, 0xb9, 0x0a, 0x68, 0x44, 0x86, 0xaa, 0x81, 0xcd, 0x65, - 0x0d, 0xec, 0x72, 0x2a, 0x43, 0x30, 0x29, 0x46, 0xbe, 0x04, 0x74, 0xe9, 0x4d, 0xc3, 0x30, 0x4b, - 0x5f, 0x59, 0x96, 0x7e, 0x4b, 0x92, 0x64, 0x5d, 0xf3, 0x8c, 0xd8, 0xc3, 0x17, 0xc4, 0xce, 0xf8, - 0xbc, 0xba, 0xb4, 0x6b, 0x12, 0x96, 0x99, 0x6c, 0xef, 0xaf, 0x1b, 0x50, 0x48, 0x72, 0x0a, 0xf5, - 0xe4, 0x11, 0xb4, 0xc2, 0x99, 0x3f, 0x7d, 0xbb, 0xcc, 0x54, 0x8f, 0xa4, 0x16, 0x14, 0x02, 0x1a, - 0xb9, 0x4c, 0xcf, 0xf3, 0xb2, 0x74, 0xf4, 0xc3, 0x05, 0xa4, 0xa6, 0xec, 0x8e, 0x53, 0xa0, 0xfe, - 0xe7, 0xf5, 0xd9, 0x01, 0x75, 0xde, 0xfd, 0xbc, 0xdb, 0xbb, 0xe8, 0x5a, 0xc9, 0xf1, 0xa3, 0xbd, - 0x83, 0xca, 0x50, 0xe8, 0x18, 0x27, 0x03, 0xcb, 0x78, 0x62, 0x68, 0x39, 0xb4, 0x09, 0x45, 0xdc, - 0x3e, 0x3d, 0x13, 0xcd, 0x3c, 0xaa, 0xc1, 0x0e, 0x57, 0xf6, 0x4e, 0xac, 0xa4, 0x53, 0x13, 0xf7, - 0x2e, 0xb4, 0x15, 0x76, 0xa2, 0x88, 0x8e, 0xf3, 0xaa, 0x55, 0xa6, 0x4a, 0x40, 0x29, 0x17, 0x57, - 0xad, 0xa1, 0x3d, 0xd8, 0x4d, 0x51, 0x59, 0xdd, 0x3a, 0x83, 0x3d, 0x6e, 0x1f, 0x9b, 0xbd, 0x76, - 0x77, 0x60, 0x35, 0x8d, 0xc1, 0x85, 0x61, 0x74, 0x99, 0x96, 0x9d, 0x46, 0x65, 0x28, 0x74, 0x7b, - 0x7d, 0xc3, 0x1a, 0xb4, 0x4d, 0xad, 0xc0, 0xc6, 0x78, 0x6e, 0x9a, 0x06, 0xb6, 0x3a, 0x6d, 0x53, - 0x2b, 0xb2, 0x66, 0xa7, 0x77, 0x21, 0x9b, 0xc0, 0x4e, 0xae, 0xc7, 0xbd, 0xf3, 0xc1, 0x19, 0x1f, - 0x95, 0x56, 0x42, 0x55, 0x28, 0x89, 0x36, 0xb7, 0xa7, 0x95, 0x91, 0x06, 0x65, 0x21, 0x68, 0x19, - 0xdd, 0x81, 0x81, 0xb5, 0x4d, 0x74, 0x0b, 0xb6, 0x38, 0x7d, 0xb3, 0x37, 0x18, 0xf4, 0x1e, 0xcb, - 0x8e, 0x15, 0xe6, 0x2f, 0x55, 0xcc, 0xf9, 0xaa, 0xec, 0xf0, 0x56, 0xa5, 0x92, 0x44, 0x4b, 0x67, - 0x6d, 0x3c, 0x31, 0xac, 0x41, 0xcf, 0xb4, 0x9a, 0xbd, 0xf3, 0xee, 0x71, 0x03, 0x3f, 0xd1, 0xb6, - 0x32, 0x2a, 0x31, 0xeb, 0x56, 0x0f, 0x77, 0x0d, 0xac, 0x21, 0x74, 0x17, 0x6a, 0xa9, 0x4a, 0x32, - 0xa6, 0xc0, 0xed, 0xd4, 0xfd, 0x4c, 0xcb, 0x3f, 0x24, 0x6e, 0x67, 0xe6, 0xc8, 0x97, 0xcc, 0xdd, - 0xca, 0xea, 0x32, 0xf6, 0x76, 0xd1, 0x3d, 0xb8, 0x3d, 0xd3, 0xcd, 0x1b, 0x7c, 0x77, 0x16, 0xd5, - 0x79, 0x8b, 0x35, 0x74, 0x1f, 0xee, 0xa8, 0x71, 0xb6, 0x44, 0x08, 0x92, 0x88, 0x69, 0xb7, 0xd1, - 0x3e, 0xdc, 0xcd, 0x84, 0x74, 0xbe, 0xc7, 0x1e, 0x73, 0xa8, 0xa0, 0x68, 0x60, 0x6b, 0x80, 0x1b, - 0xa7, 0xac, 0x8e, 0xb8, 0xc3, 0xbc, 0x2f, 0x71, 0x8a, 0xf8, 0x2e, 0x2f, 0x86, 0x92, 0xb9, 0x9b, - 0xe7, 0x66, 0xbb, 0xa3, 0xdd, 0x63, 0xc5, 0xd0, 0x6c, 0x78, 0x42, 0xf8, 0x1e, 0xc3, 0x9f, 0xf4, - 0xb0, 0x71, 0x66, 0x34, 0x8e, 0xad, 0x53, 0x5e, 0x2b, 0x75, 0x1a, 0xda, 0x7d, 0x56, 0xb1, 0xb4, - 0xce, 0xda, 0x5d, 0xeb, 0xb4, 0xdb, 0x18, 0x9c, 0x31, 0xca, 0x7d, 0x66, 0x9f, 0x8b, 0x38, 0xef, - 0x69, 0xaf, 0xcb, 0xa4, 0xef, 0x33, 0x3c, 0x97, 0x0a, 0x66, 0x29, 0xd6, 0xf5, 0x5f, 0x40, 0xb9, - 0x43, 0x1d, 0x9e, 0x9b, 0x6d, 0x7f, 0x44, 0xd1, 0x47, 0xb0, 0xe1, 0xd9, 0xb1, 0xe5, 0xf9, 0x63, - 0x59, 0x1e, 0x6c, 0x27, 0xa9, 0xc8, 0x52, 0xb5, 0xde, 0xb1, 0xe3, 0x8e, 0x3f, 0xc6, 0xeb, 0x1e, - 0xff, 0xd5, 0x2f, 0xa0, 0x60, 0x86, 0x34, 0x20, 0x61, 0x7c, 0x8d, 0x10, 0xac, 0xfa, 0xf6, 0x84, - 0xc8, 0x82, 0x88, 0x7f, 0xb3, 0x5a, 0xf2, 0xb9, 0xed, 0x4d, 0x89, 0xac, 0x82, 0x44, 0x03, 0xbd, - 0x0f, 0xe5, 0xa9, 0xeb, 0xc7, 0x9f, 0x7c, 0x6c, 0x09, 0x25, 0xdb, 0x48, 0x56, 0x71, 0x49, 0xc8, - 0xbe, 0x60, 0x22, 0xfd, 0xf7, 0x2b, 0xa0, 0x19, 0x7e, 0xec, 0xc6, 0xd7, 0x4a, 0x01, 0xa3, 0xc1, - 0xca, 0xc4, 0x1d, 0x4a, 0x03, 0xec, 0x13, 0xed, 0xc2, 0xba, 0x47, 0x1d, 0xdb, 0x4b, 0x0c, 0xc8, - 0x16, 0xda, 0x87, 0xd2, 0x90, 0x44, 0x4e, 0xe8, 0x06, 0x7c, 0x53, 0x11, 0x95, 0xac, 0x2a, 0x62, - 0x23, 0x8b, 0x1c, 0x1a, 0x26, 0x85, 0x80, 0x68, 0xa0, 0xf7, 0x00, 0x94, 0x93, 0x58, 0x54, 0x01, - 0x8a, 0x84, 0xe9, 0x63, 0x1a, 0xb8, 0x8e, 0xed, 0xb9, 0xf1, 0xb5, 0xac, 0x03, 0x14, 0xc9, 0xcb, - 0x25, 0xd6, 0xc6, 0x7f, 0x5b, 0x62, 0xb5, 0xa1, 0xe8, 0xc9, 0xf8, 0x44, 0xb5, 0x02, 0xaf, 0x85, - 0x16, 0xb1, 0xa9, 0xf1, 0xc4, 0x33, 0x34, 0x3a, 0x05, 0x08, 0x44, 0xb0, 0x5c, 0x12, 0xd5, 0x8a, - 0x9c, 0x6b, 0xe1, 0x46, 0x2b, 0xa3, 0x8b, 0x15, 0xa8, 0xfe, 0xb7, 0x3c, 0xec, 0xf4, 0xed, 0x11, - 0xe9, 0x13, 0x3b, 0x74, 0x9e, 0x29, 0x01, 0xfa, 0x0c, 0xd6, 0xec, 0xe1, 0xd4, 0x8b, 0xe5, 0xed, - 0x64, 0x89, 0x43, 0x47, 0xe0, 0x18, 0x41, 0x14, 0x50, 0x3a, 0xe2, 0xe1, 0x5c, 0x8e, 0x80, 0xe3, - 0x50, 0x0b, 0x36, 0x26, 0x64, 0xc8, 0xc2, 0x21, 0x8f, 0xa7, 0x25, 0x28, 0x12, 0x24, 0x32, 0xa0, - 0xf0, 0xdc, 0xa5, 0x1e, 0x5f, 0x03, 0xab, 0xcb, 0xb2, 0xa4, 0x50, 0xf4, 0x4b, 0x58, 0x0d, 0x6d, - 0xe7, 0x7a, 0xf9, 0x0a, 0x8d, 0xc3, 0xf4, 0x17, 0x50, 0x62, 0xd9, 0x46, 0xfd, 0x31, 0x26, 0x4e, - 0x8c, 0x1e, 0x42, 0x69, 0xe2, 0xfa, 0xd6, 0x0d, 0x92, 0xb3, 0x38, 0x71, 0x7d, 0xf1, 0xc9, 0x41, - 0xf6, 0x55, 0x0a, 0xca, 0xbf, 0x09, 0x64, 0x5f, 0x89, 0x4f, 0x3d, 0x84, 0x62, 0x8b, 0xdd, 0x4b, - 0xf9, 0x7e, 0x70, 0x00, 0x6b, 0xfc, 0x92, 0x2a, 0x0d, 0xa2, 0x0c, 0x96, 0x77, 0xc3, 0xa2, 0xc3, - 0x2c, 0xa3, 0xf2, 0x6a, 0x46, 0x7d, 0x00, 0x95, 0xc0, 0xbd, 0x22, 0x9e, 0x35, 0x0a, 0x6d, 0x27, - 0x4d, 0xc6, 0x3c, 0xde, 0xe4, 0xd2, 0x13, 0x29, 0xd4, 0xbf, 0x82, 0xda, 0x31, 0x9d, 0xb8, 0xbe, - 0xed, 0xc7, 0x9c, 0x34, 0x52, 0x56, 0xd5, 0xaf, 0x60, 0x9d, 0x5b, 0x88, 0x6a, 0x39, 0xbe, 0x66, - 0x0f, 0x16, 0x78, 0x32, 0x1d, 0x3c, 0x96, 0x38, 0x3d, 0x82, 0x2a, 0xbf, 0x23, 0x99, 0xe9, 0x1a, - 0x46, 0xbf, 0x81, 0xea, 0x50, 0x1a, 0xb4, 0x52, 0x76, 0x36, 0xc3, 0x9f, 0x2d, 0x60, 0x7f, 0xdd, - 0x30, 0x71, 0x65, 0x98, 0xd1, 0xe8, 0x7f, 0xcc, 0x41, 0xa1, 0x15, 0xd2, 0xe0, 0xcc, 0xf5, 0xe3, - 0xff, 0xc1, 0xdd, 0x2b, 0xbb, 0x55, 0xe5, 0x5f, 0xda, 0xaa, 0x0e, 0x61, 0xdb, 0x9d, 0x04, 0x34, - 0x8c, 0x6d, 0xdf, 0x21, 0xf3, 0xde, 0x47, 0x33, 0x55, 0x1a, 0x82, 0x5f, 0xc3, 0x76, 0x32, 0x5c, - 0xd5, 0xfb, 0x27, 0x00, 0x4e, 0x48, 0x03, 0xeb, 0x19, 0x93, 0xcb, 0x08, 0x2c, 0xda, 0x35, 0x12, - 0x1e, 0x5c, 0x74, 0x12, 0x46, 0xfd, 0x13, 0xa8, 0xa6, 0xf4, 0xa6, 0x1d, 0xda, 0x93, 0x08, 0xfd, - 0x1f, 0x6c, 0xda, 0x51, 0x40, 0x9c, 0xd8, 0x0a, 0x99, 0x2d, 0xc1, 0x9e, 0xc7, 0x65, 0x21, 0xc4, - 0x5c, 0xa6, 0x1f, 0x03, 0xba, 0x20, 0x97, 0xc7, 0xc9, 0x15, 0x4a, 0x42, 0xeb, 0xb0, 0xed, 0xfa, - 0x8e, 0x37, 0x1d, 0x12, 0x6b, 0x4c, 0x68, 0xe6, 0x35, 0xa3, 0x80, 0xb7, 0xa4, 0xea, 0x94, 0x50, - 0xf9, 0xa8, 0xa1, 0x7f, 0x9f, 0x87, 0x32, 0x5f, 0x02, 0x2d, 0x76, 0xc7, 0xbe, 0x8a, 0x51, 0x17, - 0x36, 0x79, 0x56, 0x50, 0x7f, 0x6c, 0x85, 0xc4, 0x89, 0x65, 0x40, 0x16, 0x5d, 0xb5, 0x95, 0x8c, - 0xc4, 0x25, 0x4f, 0x49, 0xcf, 0x0f, 0xa0, 0xe2, 0xd9, 0xfe, 0x78, 0xca, 0xae, 0xfd, 0xc2, 0x55, - 0xf9, 0xfd, 0x95, 0x83, 0x22, 0xde, 0x4c, 0xa4, 0x7c, 0xe2, 0xe8, 0x29, 0x6c, 0xcd, 0xbc, 0x69, - 0x05, 0x7c, 0x32, 0xb2, 0xe6, 0xad, 0xdf, 0xd0, 0xa9, 0xd2, 0x7b, 0xb8, 0xea, 0xcc, 0xb9, 0xd3, - 0x81, 0x9d, 0xcc, 0x4b, 0x54, 0x42, 0xbf, 0xce, 0xe9, 0x1f, 0x2c, 0xa0, 0x7f, 0xd9, 0xc9, 0x18, - 0xbd, 0x78, 0x49, 0xa6, 0xff, 0x23, 0x07, 0x3b, 0x72, 0x75, 0x10, 0xee, 0x50, 0x4c, 0xbe, 0x9d, - 0x92, 0x28, 0x46, 0x8f, 0x60, 0x8d, 0xbf, 0x71, 0x48, 0x47, 0xfe, 0xff, 0x4d, 0xde, 0x2c, 0xb0, - 0x80, 0xa0, 0x26, 0x14, 0x46, 0xe2, 0xa5, 0x4a, 0xb8, 0xad, 0x74, 0xf4, 0x83, 0x9b, 0x3d, 0x6c, - 0xe1, 0x14, 0xc7, 0x32, 0x4c, 0x3c, 0xba, 0x38, 0x22, 0xc2, 0x7c, 0xa5, 0x2f, 0xce, 0x30, 0x75, - 0x51, 0xe0, 0xb2, 0xab, 0xb4, 0xf4, 0xdf, 0x16, 0xe0, 0xd6, 0xdc, 0x54, 0xa3, 0x80, 0xfa, 0x11, - 0x41, 0x5f, 0x82, 0x36, 0xb2, 0x1d, 0xa2, 0x3c, 0x14, 0x26, 0x99, 0xf1, 0x93, 0xa5, 0x6e, 0x43, - 0xb8, 0x3a, 0xca, 0xb4, 0x23, 0x74, 0x09, 0x3b, 0xc9, 0xc5, 0x3f, 0xc3, 0x2e, 0xbc, 0x72, 0xb8, - 0x80, 0x7d, 0xbe, 0x62, 0xc2, 0xdb, 0x09, 0x99, 0x6a, 0xe3, 0x29, 0x68, 0x1e, 0x1d, 0xd3, 0x0c, - 0xff, 0xca, 0xdb, 0xf1, 0x57, 0x19, 0x91, 0xca, 0xfd, 0x15, 0x6c, 0x79, 0xf6, 0x25, 0xf1, 0x32, - 0xe4, 0xab, 0x6f, 0x47, 0xae, 0x71, 0xa6, 0xb9, 0x91, 0xcf, 0x3d, 0xd0, 0x46, 0xb5, 0xb5, 0xb7, - 0x1c, 0x39, 0x23, 0x52, 0xb9, 0x2d, 0xd8, 0x19, 0x4d, 0x3d, 0xcf, 0x9a, 0x33, 0xc0, 0x9f, 0x16, - 0x16, 0xc7, 0x75, 0x90, 0x61, 0xc3, 0x88, 0x51, 0x65, 0x65, 0xc8, 0x85, 0xdd, 0xc8, 0x1e, 0x11, - 0x2b, 0xe2, 0x55, 0x93, 0x6a, 0x42, 0x24, 0xe8, 0xc3, 0x05, 0x26, 0x5e, 0x55, 0x71, 0xe1, 0x9d, - 0xe8, 0x55, 0x75, 0x98, 0x0f, 0x77, 0x44, 0x2e, 0xcc, 0x8a, 0x36, 0xd5, 0x5e, 0xe1, 0x46, 0xfb, - 0xcd, 0xdc, 0x89, 0x89, 0x6f, 0xbb, 0x59, 0x81, 0x62, 0x6f, 0x04, 0xb7, 0x94, 0x5d, 0x4d, 0xb1, - 0x54, 0xe2, 0x96, 0x8e, 0x6e, 0xba, 0xb3, 0xa9, 0x2b, 0xd7, 0x79, 0xc5, 0x59, 0x64, 0xc2, 0x66, - 0x66, 0x87, 0xe3, 0xcf, 0x32, 0x8b, 0x73, 0x5c, 0xdd, 0xda, 0x70, 0x59, 0xdd, 0xd4, 0x58, 0x79, - 0x43, 0xc2, 0x90, 0x86, 0xbc, 0x48, 0x53, 0xca, 0x9b, 0x30, 0x70, 0xea, 0x7d, 0xfe, 0x6c, 0x8f, - 0x45, 0x07, 0x7d, 0x02, 0x7b, 0x4d, 0x3b, 0x4e, 0xdd, 0x2c, 0x76, 0x84, 0x28, 0xd9, 0xfd, 0x7a, - 0x50, 0x08, 0xc5, 0x67, 0xb2, 0x13, 0x2c, 0x0a, 0xe7, 0xab, 0x36, 0x51, 0x9c, 0x92, 0xe8, 0xdf, - 0xc2, 0x9d, 0x57, 0x9a, 0x93, 0x3b, 0x10, 0x86, 0x62, 0x28, 0xbf, 0x13, 0x83, 0x1f, 0x2f, 0x67, - 0x50, 0x80, 0xf1, 0x8c, 0xe6, 0x43, 0x02, 0xa0, 0x3c, 0x27, 0x95, 0x60, 0x43, 0x3e, 0xa3, 0x68, - 0xef, 0xb0, 0x5b, 0xe6, 0x17, 0x06, 0x7e, 0x62, 0x9d, 0x77, 0x3b, 0xed, 0xcf, 0x8d, 0xce, 0x13, - 0x2d, 0x87, 0xca, 0x50, 0x48, 0x5b, 0x79, 0xd6, 0x32, 0x7b, 0xfd, 0x7e, 0xbb, 0xd9, 0x31, 0xb4, - 0x15, 0x04, 0xb0, 0x2e, 0x35, 0xab, 0xa8, 0x0a, 0x25, 0x0e, 0x95, 0x82, 0xb5, 0xa3, 0xef, 0x73, - 0x50, 0xe1, 0x63, 0x68, 0x24, 0xff, 0x02, 0xa1, 0x3f, 0xe5, 0x60, 0xfb, 0x15, 0xb3, 0x45, 0x3f, - 0x5f, 0x54, 0x1e, 0xbd, 0x36, 0x20, 0x7b, 0x8f, 0xde, 0x06, 0x2a, 0x3c, 0xa1, 0x7f, 0xf0, 0xdd, - 0x5f, 0xfe, 0xfe, 0xbb, 0xfc, 0x7d, 0x7d, 0x6f, 0xfe, 0x8f, 0xab, 0xe8, 0x91, 0x5c, 0xdb, 0xe4, - 0x51, 0xee, 0xc3, 0xe6, 0x77, 0x39, 0x78, 0xdf, 0xa1, 0x93, 0x37, 0x1b, 0x6a, 0x6e, 0x67, 0xe7, - 0x6a, 0x86, 0x34, 0xa6, 0x66, 0xee, 0x69, 0x4b, 0xa2, 0xc6, 0x94, 0x15, 0x08, 0x75, 0x1a, 0x8e, - 0x0f, 0xc7, 0xc4, 0xe7, 0xff, 0xf7, 0x1c, 0x0a, 0x95, 0x1d, 0xb8, 0xd1, 0x6b, 0xfe, 0x71, 0xfa, - 0x54, 0x08, 0xfe, 0x95, 0xcb, 0x5d, 0xae, 0x73, 0xc8, 0xc3, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, - 0xb8, 0x10, 0xf5, 0x85, 0x78, 0x1b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/text_annotation.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/text_annotation.pb.go deleted file mode 100644 index 6143b452..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/text_annotation.pb.go +++ /dev/null @@ -1,587 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/vision/v1p1beta1/text_annotation.proto - -package vision - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Enum to denote the type of break found. New line, space etc. -type TextAnnotation_DetectedBreak_BreakType int32 - -const ( - // Unknown break label type. - TextAnnotation_DetectedBreak_UNKNOWN TextAnnotation_DetectedBreak_BreakType = 0 - // Regular space. - TextAnnotation_DetectedBreak_SPACE TextAnnotation_DetectedBreak_BreakType = 1 - // Sure space (very wide). - TextAnnotation_DetectedBreak_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 2 - // Line-wrapping break. - TextAnnotation_DetectedBreak_EOL_SURE_SPACE TextAnnotation_DetectedBreak_BreakType = 3 - // End-line hyphen that is not present in text; does not co-occur with - // `SPACE`, `LEADER_SPACE`, or `LINE_BREAK`. - TextAnnotation_DetectedBreak_HYPHEN TextAnnotation_DetectedBreak_BreakType = 4 - // Line break that ends a paragraph. - TextAnnotation_DetectedBreak_LINE_BREAK TextAnnotation_DetectedBreak_BreakType = 5 -) - -var TextAnnotation_DetectedBreak_BreakType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "SPACE", - 2: "SURE_SPACE", - 3: "EOL_SURE_SPACE", - 4: "HYPHEN", - 5: "LINE_BREAK", -} -var TextAnnotation_DetectedBreak_BreakType_value = map[string]int32{ - "UNKNOWN": 0, - "SPACE": 1, - "SURE_SPACE": 2, - "EOL_SURE_SPACE": 3, - "HYPHEN": 4, - "LINE_BREAK": 5, -} - -func (x TextAnnotation_DetectedBreak_BreakType) String() string { - return proto.EnumName(TextAnnotation_DetectedBreak_BreakType_name, int32(x)) -} -func (TextAnnotation_DetectedBreak_BreakType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 1, 0} -} - -// Type of a block (text, image etc) as identified by OCR. -type Block_BlockType int32 - -const ( - // Unknown block type. - Block_UNKNOWN Block_BlockType = 0 - // Regular text block. - Block_TEXT Block_BlockType = 1 - // Table block. - Block_TABLE Block_BlockType = 2 - // Image block. - Block_PICTURE Block_BlockType = 3 - // Horizontal/vertical line box. - Block_RULER Block_BlockType = 4 - // Barcode block. - Block_BARCODE Block_BlockType = 5 -) - -var Block_BlockType_name = map[int32]string{ - 0: "UNKNOWN", - 1: "TEXT", - 2: "TABLE", - 3: "PICTURE", - 4: "RULER", - 5: "BARCODE", -} -var Block_BlockType_value = map[string]int32{ - "UNKNOWN": 0, - "TEXT": 1, - "TABLE": 2, - "PICTURE": 3, - "RULER": 4, - "BARCODE": 5, -} - -func (x Block_BlockType) String() string { - return proto.EnumName(Block_BlockType_name, int32(x)) -} -func (Block_BlockType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{2, 0} } - -// TextAnnotation contains a structured representation of OCR extracted text. -// The hierarchy of an OCR extracted text structure is like this: -// TextAnnotation -> Page -> Block -> Paragraph -> Word -> Symbol -// Each structural component, starting from Page, may further have their own -// properties. Properties describe detected languages, breaks etc.. Please refer -// to the -// [TextAnnotation.TextProperty][google.cloud.vision.v1p1beta1.TextAnnotation.TextProperty] -// message definition below for more detail. -type TextAnnotation struct { - // List of pages detected by OCR. - Pages []*Page `protobuf:"bytes,1,rep,name=pages" json:"pages,omitempty"` - // UTF-8 text detected on the pages. - Text string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"` -} - -func (m *TextAnnotation) Reset() { *m = TextAnnotation{} } -func (m *TextAnnotation) String() string { return proto.CompactTextString(m) } -func (*TextAnnotation) ProtoMessage() {} -func (*TextAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *TextAnnotation) GetPages() []*Page { - if m != nil { - return m.Pages - } - return nil -} - -func (m *TextAnnotation) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -// Detected language for a structural component. -type TextAnnotation_DetectedLanguage struct { - // The BCP-47 language code, such as "en-US" or "sr-Latn". For more - // information, see - // http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. - LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Confidence of detected language. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *TextAnnotation_DetectedLanguage) Reset() { *m = TextAnnotation_DetectedLanguage{} } -func (m *TextAnnotation_DetectedLanguage) String() string { return proto.CompactTextString(m) } -func (*TextAnnotation_DetectedLanguage) ProtoMessage() {} -func (*TextAnnotation_DetectedLanguage) Descriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 0} -} - -func (m *TextAnnotation_DetectedLanguage) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *TextAnnotation_DetectedLanguage) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Detected start or end of a structural component. -type TextAnnotation_DetectedBreak struct { - // Detected break type. - Type TextAnnotation_DetectedBreak_BreakType `protobuf:"varint,1,opt,name=type,enum=google.cloud.vision.v1p1beta1.TextAnnotation_DetectedBreak_BreakType" json:"type,omitempty"` - // True if break prepends the element. - IsPrefix bool `protobuf:"varint,2,opt,name=is_prefix,json=isPrefix" json:"is_prefix,omitempty"` -} - -func (m *TextAnnotation_DetectedBreak) Reset() { *m = TextAnnotation_DetectedBreak{} } -func (m *TextAnnotation_DetectedBreak) String() string { return proto.CompactTextString(m) } -func (*TextAnnotation_DetectedBreak) ProtoMessage() {} -func (*TextAnnotation_DetectedBreak) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 1} } - -func (m *TextAnnotation_DetectedBreak) GetType() TextAnnotation_DetectedBreak_BreakType { - if m != nil { - return m.Type - } - return TextAnnotation_DetectedBreak_UNKNOWN -} - -func (m *TextAnnotation_DetectedBreak) GetIsPrefix() bool { - if m != nil { - return m.IsPrefix - } - return false -} - -// Additional information detected on the structural component. -type TextAnnotation_TextProperty struct { - // A list of detected languages together with confidence. - DetectedLanguages []*TextAnnotation_DetectedLanguage `protobuf:"bytes,1,rep,name=detected_languages,json=detectedLanguages" json:"detected_languages,omitempty"` - // Detected start or end of a text segment. - DetectedBreak *TextAnnotation_DetectedBreak `protobuf:"bytes,2,opt,name=detected_break,json=detectedBreak" json:"detected_break,omitempty"` -} - -func (m *TextAnnotation_TextProperty) Reset() { *m = TextAnnotation_TextProperty{} } -func (m *TextAnnotation_TextProperty) String() string { return proto.CompactTextString(m) } -func (*TextAnnotation_TextProperty) ProtoMessage() {} -func (*TextAnnotation_TextProperty) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 2} } - -func (m *TextAnnotation_TextProperty) GetDetectedLanguages() []*TextAnnotation_DetectedLanguage { - if m != nil { - return m.DetectedLanguages - } - return nil -} - -func (m *TextAnnotation_TextProperty) GetDetectedBreak() *TextAnnotation_DetectedBreak { - if m != nil { - return m.DetectedBreak - } - return nil -} - -// Detected page from OCR. -type Page struct { - // Additional information detected on the page. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // Page width in pixels. - Width int32 `protobuf:"varint,2,opt,name=width" json:"width,omitempty"` - // Page height in pixels. - Height int32 `protobuf:"varint,3,opt,name=height" json:"height,omitempty"` - // List of blocks of text, images etc on this page. - Blocks []*Block `protobuf:"bytes,4,rep,name=blocks" json:"blocks,omitempty"` - // Confidence of the OCR results on the page. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Page) Reset() { *m = Page{} } -func (m *Page) String() string { return proto.CompactTextString(m) } -func (*Page) ProtoMessage() {} -func (*Page) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *Page) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Page) GetWidth() int32 { - if m != nil { - return m.Width - } - return 0 -} - -func (m *Page) GetHeight() int32 { - if m != nil { - return m.Height - } - return 0 -} - -func (m *Page) GetBlocks() []*Block { - if m != nil { - return m.Blocks - } - return nil -} - -func (m *Page) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Logical element on the page. -type Block struct { - // Additional information detected for the block. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The bounding box for the block. - // The vertices are in the order of top-left, top-right, bottom-right, - // bottom-left. When a rotation of the bounding box is detected the rotation - // is represented as around the top-left corner as defined when the text is - // read in the 'natural' orientation. - // For example: - // * when the text is horizontal it might look like: - // 0----1 - // | | - // 3----2 - // * when it's rotated 180 degrees around the top-left corner it becomes: - // 2----3 - // | | - // 1----0 - // and the vertice order will still be (0, 1, 2, 3). - BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // List of paragraphs in this block (if this blocks is of type text). - Paragraphs []*Paragraph `protobuf:"bytes,3,rep,name=paragraphs" json:"paragraphs,omitempty"` - // Detected block type (text, image etc) for this block. - BlockType Block_BlockType `protobuf:"varint,4,opt,name=block_type,json=blockType,enum=google.cloud.vision.v1p1beta1.Block_BlockType" json:"block_type,omitempty"` - // Confidence of the OCR results on the block. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,5,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Block) Reset() { *m = Block{} } -func (m *Block) String() string { return proto.CompactTextString(m) } -func (*Block) ProtoMessage() {} -func (*Block) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *Block) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Block) GetBoundingBox() *BoundingPoly { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *Block) GetParagraphs() []*Paragraph { - if m != nil { - return m.Paragraphs - } - return nil -} - -func (m *Block) GetBlockType() Block_BlockType { - if m != nil { - return m.BlockType - } - return Block_UNKNOWN -} - -func (m *Block) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// Structural unit of text representing a number of words in certain order. -type Paragraph struct { - // Additional information detected for the paragraph. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The bounding box for the paragraph. - // The vertices are in the order of top-left, top-right, bottom-right, - // bottom-left. When a rotation of the bounding box is detected the rotation - // is represented as around the top-left corner as defined when the text is - // read in the 'natural' orientation. - // For example: - // * when the text is horizontal it might look like: - // 0----1 - // | | - // 3----2 - // * when it's rotated 180 degrees around the top-left corner it becomes: - // 2----3 - // | | - // 1----0 - // and the vertice order will still be (0, 1, 2, 3). - BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // List of words in this paragraph. - Words []*Word `protobuf:"bytes,3,rep,name=words" json:"words,omitempty"` - // Confidence of the OCR results for the paragraph. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Paragraph) Reset() { *m = Paragraph{} } -func (m *Paragraph) String() string { return proto.CompactTextString(m) } -func (*Paragraph) ProtoMessage() {} -func (*Paragraph) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *Paragraph) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Paragraph) GetBoundingBox() *BoundingPoly { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *Paragraph) GetWords() []*Word { - if m != nil { - return m.Words - } - return nil -} - -func (m *Paragraph) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// A word representation. -type Word struct { - // Additional information detected for the word. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The bounding box for the word. - // The vertices are in the order of top-left, top-right, bottom-right, - // bottom-left. When a rotation of the bounding box is detected the rotation - // is represented as around the top-left corner as defined when the text is - // read in the 'natural' orientation. - // For example: - // * when the text is horizontal it might look like: - // 0----1 - // | | - // 3----2 - // * when it's rotated 180 degrees around the top-left corner it becomes: - // 2----3 - // | | - // 1----0 - // and the vertice order will still be (0, 1, 2, 3). - BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // List of symbols in the word. - // The order of the symbols follows the natural reading order. - Symbols []*Symbol `protobuf:"bytes,3,rep,name=symbols" json:"symbols,omitempty"` - // Confidence of the OCR results for the word. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Word) Reset() { *m = Word{} } -func (m *Word) String() string { return proto.CompactTextString(m) } -func (*Word) ProtoMessage() {} -func (*Word) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *Word) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Word) GetBoundingBox() *BoundingPoly { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *Word) GetSymbols() []*Symbol { - if m != nil { - return m.Symbols - } - return nil -} - -func (m *Word) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -// A single symbol representation. -type Symbol struct { - // Additional information detected for the symbol. - Property *TextAnnotation_TextProperty `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The bounding box for the symbol. - // The vertices are in the order of top-left, top-right, bottom-right, - // bottom-left. When a rotation of the bounding box is detected the rotation - // is represented as around the top-left corner as defined when the text is - // read in the 'natural' orientation. - // For example: - // * when the text is horizontal it might look like: - // 0----1 - // | | - // 3----2 - // * when it's rotated 180 degrees around the top-left corner it becomes: - // 2----3 - // | | - // 1----0 - // and the vertice order will still be (0, 1, 2, 3). - BoundingBox *BoundingPoly `protobuf:"bytes,2,opt,name=bounding_box,json=boundingBox" json:"bounding_box,omitempty"` - // The actual UTF-8 representation of the symbol. - Text string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"` - // Confidence of the OCR results for the symbol. Range [0, 1]. - Confidence float32 `protobuf:"fixed32,4,opt,name=confidence" json:"confidence,omitempty"` -} - -func (m *Symbol) Reset() { *m = Symbol{} } -func (m *Symbol) String() string { return proto.CompactTextString(m) } -func (*Symbol) ProtoMessage() {} -func (*Symbol) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *Symbol) GetProperty() *TextAnnotation_TextProperty { - if m != nil { - return m.Property - } - return nil -} - -func (m *Symbol) GetBoundingBox() *BoundingPoly { - if m != nil { - return m.BoundingBox - } - return nil -} - -func (m *Symbol) GetText() string { - if m != nil { - return m.Text - } - return "" -} - -func (m *Symbol) GetConfidence() float32 { - if m != nil { - return m.Confidence - } - return 0 -} - -func init() { - proto.RegisterType((*TextAnnotation)(nil), "google.cloud.vision.v1p1beta1.TextAnnotation") - proto.RegisterType((*TextAnnotation_DetectedLanguage)(nil), "google.cloud.vision.v1p1beta1.TextAnnotation.DetectedLanguage") - proto.RegisterType((*TextAnnotation_DetectedBreak)(nil), "google.cloud.vision.v1p1beta1.TextAnnotation.DetectedBreak") - proto.RegisterType((*TextAnnotation_TextProperty)(nil), "google.cloud.vision.v1p1beta1.TextAnnotation.TextProperty") - proto.RegisterType((*Page)(nil), "google.cloud.vision.v1p1beta1.Page") - proto.RegisterType((*Block)(nil), "google.cloud.vision.v1p1beta1.Block") - proto.RegisterType((*Paragraph)(nil), "google.cloud.vision.v1p1beta1.Paragraph") - proto.RegisterType((*Word)(nil), "google.cloud.vision.v1p1beta1.Word") - proto.RegisterType((*Symbol)(nil), "google.cloud.vision.v1p1beta1.Symbol") - proto.RegisterEnum("google.cloud.vision.v1p1beta1.TextAnnotation_DetectedBreak_BreakType", TextAnnotation_DetectedBreak_BreakType_name, TextAnnotation_DetectedBreak_BreakType_value) - proto.RegisterEnum("google.cloud.vision.v1p1beta1.Block_BlockType", Block_BlockType_name, Block_BlockType_value) -} - -func init() { - proto.RegisterFile("google/cloud/vision/v1p1beta1/text_annotation.proto", fileDescriptor2) -} - -var fileDescriptor2 = []byte{ - // 775 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x4f, 0x6f, 0xd3, 0x48, - 0x14, 0x5f, 0x27, 0x76, 0x1a, 0xbf, 0xb4, 0x91, 0x77, 0x76, 0xb5, 0x8a, 0xb2, 0xbb, 0xa8, 0xa4, - 0x20, 0x55, 0x02, 0x39, 0x6a, 0x7a, 0x2a, 0x45, 0xa0, 0x38, 0xb5, 0xd4, 0xaa, 0x21, 0xb5, 0xa6, - 0x09, 0xa5, 0x5c, 0x2c, 0xff, 0x99, 0x3a, 0x56, 0x13, 0x8f, 0x65, 0xbb, 0x6d, 0x72, 0xe5, 0x8a, - 0x04, 0x5f, 0x88, 0x2f, 0x83, 0xc4, 0x09, 0xf1, 0x01, 0x38, 0x22, 0x8f, 0xed, 0x34, 0x09, 0xa2, - 0xe6, 0x8f, 0x38, 0xf4, 0x12, 0xcd, 0x7b, 0x79, 0xbf, 0x37, 0xef, 0xf7, 0x7b, 0xf3, 0x3c, 0x03, - 0xdb, 0x0e, 0xa5, 0xce, 0x88, 0x34, 0xad, 0x11, 0xbd, 0xb0, 0x9b, 0x97, 0x6e, 0xe8, 0x52, 0xaf, - 0x79, 0xb9, 0xe5, 0x6f, 0x99, 0x24, 0x32, 0xb6, 0x9a, 0x11, 0x99, 0x44, 0xba, 0xe1, 0x79, 0x34, - 0x32, 0x22, 0x97, 0x7a, 0xb2, 0x1f, 0xd0, 0x88, 0xa2, 0xff, 0x13, 0x90, 0xcc, 0x40, 0x72, 0x02, - 0x92, 0x67, 0xa0, 0xfa, 0x7f, 0x69, 0x4e, 0xc3, 0x77, 0x9b, 0xd7, 0xd8, 0x30, 0x01, 0xd7, 0x1f, - 0xde, 0xbc, 0xa3, 0x43, 0xe8, 0x98, 0x44, 0xc1, 0x34, 0x89, 0x6e, 0xbc, 0x16, 0xa0, 0xda, 0x27, - 0x93, 0xa8, 0x3d, 0xcb, 0x83, 0x76, 0x40, 0xf0, 0x0d, 0x87, 0x84, 0x35, 0x6e, 0xbd, 0xb8, 0x59, - 0x69, 0x6d, 0xc8, 0x37, 0x56, 0x23, 0x6b, 0x86, 0x43, 0x70, 0x82, 0x40, 0x08, 0xf8, 0x98, 0x51, - 0xad, 0xb0, 0xce, 0x6d, 0x8a, 0x98, 0xad, 0xeb, 0x27, 0x20, 0xed, 0x91, 0x88, 0x58, 0x11, 0xb1, - 0xbb, 0x86, 0xe7, 0x5c, 0x18, 0x0e, 0x41, 0x1b, 0xb0, 0x36, 0x4a, 0xd7, 0xba, 0x45, 0x6d, 0x52, - 0xe3, 0x18, 0x60, 0x35, 0x73, 0x76, 0xa8, 0x4d, 0xd0, 0x1d, 0x00, 0x8b, 0x7a, 0x67, 0xae, 0x4d, - 0x3c, 0x8b, 0xb0, 0x94, 0x05, 0x3c, 0xe7, 0xa9, 0x7f, 0xe2, 0x60, 0x2d, 0xcb, 0xac, 0x04, 0xc4, - 0x38, 0x47, 0xa7, 0xc0, 0x47, 0x53, 0x3f, 0xc9, 0x56, 0x6d, 0xa9, 0x39, 0x85, 0x2f, 0xd2, 0x96, - 0x17, 0x52, 0xc9, 0xec, 0xb7, 0x3f, 0xf5, 0x09, 0x66, 0x29, 0xd1, 0xbf, 0x20, 0xba, 0xa1, 0xee, - 0x07, 0xe4, 0xcc, 0x9d, 0xb0, 0x5a, 0xca, 0xb8, 0xec, 0x86, 0x1a, 0xb3, 0x1b, 0x16, 0x88, 0xb3, - 0x78, 0x54, 0x81, 0x95, 0x41, 0xef, 0xb0, 0x77, 0x74, 0xd2, 0x93, 0xfe, 0x40, 0x22, 0x08, 0xc7, - 0x5a, 0xbb, 0xa3, 0x4a, 0x1c, 0xaa, 0x02, 0x1c, 0x0f, 0xb0, 0xaa, 0x27, 0x76, 0x01, 0x21, 0xa8, - 0xaa, 0x47, 0x5d, 0x7d, 0xce, 0x57, 0x44, 0x00, 0xa5, 0xfd, 0x53, 0x6d, 0x5f, 0xed, 0x49, 0x7c, - 0x1c, 0xdf, 0x3d, 0xe8, 0xa9, 0xba, 0x82, 0xd5, 0xf6, 0xa1, 0x24, 0xd4, 0xdf, 0x73, 0xb0, 0x1a, - 0x97, 0xac, 0x05, 0xd4, 0x27, 0x41, 0x34, 0x45, 0x63, 0x40, 0x76, 0x5a, 0xb3, 0x9e, 0x09, 0x97, - 0x35, 0xed, 0xc9, 0xcf, 0x71, 0xcf, 0x1a, 0x84, 0xff, 0xb4, 0x97, 0x3c, 0x21, 0x32, 0xa1, 0x3a, - 0xdb, 0xce, 0x8c, 0xd9, 0x32, 0x19, 0x2a, 0xad, 0xdd, 0x5f, 0x90, 0x19, 0xaf, 0xd9, 0xf3, 0x66, - 0xe3, 0x23, 0x07, 0x7c, 0x7c, 0x9e, 0xd0, 0x73, 0x28, 0xfb, 0x29, 0x4f, 0xd6, 0xcd, 0x4a, 0xeb, - 0xd1, 0x8f, 0x6d, 0x33, 0xaf, 0x14, 0x9e, 0xe5, 0x42, 0x7f, 0x83, 0x70, 0xe5, 0xda, 0xd1, 0x90, - 0xd5, 0x2e, 0xe0, 0xc4, 0x40, 0xff, 0x40, 0x69, 0x48, 0x5c, 0x67, 0x18, 0xd5, 0x8a, 0xcc, 0x9d, - 0x5a, 0xe8, 0x31, 0x94, 0xcc, 0x11, 0xb5, 0xce, 0xc3, 0x1a, 0xcf, 0x54, 0xbd, 0x97, 0x53, 0x83, - 0x12, 0x07, 0xe3, 0x14, 0xb3, 0x74, 0x7e, 0x85, 0xe5, 0xf3, 0xdb, 0x78, 0x57, 0x04, 0x81, 0x21, - 0x7e, 0x1b, 0xdb, 0x1e, 0xac, 0x9a, 0xf4, 0xc2, 0xb3, 0x5d, 0xcf, 0xd1, 0x4d, 0x3a, 0x49, 0x1b, - 0xf6, 0x20, 0x8f, 0x45, 0x0a, 0xd1, 0xe8, 0x68, 0x8a, 0x2b, 0x59, 0x02, 0x85, 0x4e, 0xd0, 0x3e, - 0x80, 0x6f, 0x04, 0x86, 0x13, 0x18, 0xfe, 0x30, 0xac, 0x15, 0x99, 0x26, 0x9b, 0xb9, 0x9f, 0x87, - 0x14, 0x80, 0xe7, 0xb0, 0xe8, 0x19, 0x00, 0x53, 0x49, 0x67, 0xf3, 0xca, 0xb3, 0x79, 0x95, 0xbf, - 0x47, 0xdd, 0xe4, 0x97, 0x0d, 0xa6, 0x68, 0x66, 0xcb, 0x5c, 0xa9, 0x31, 0x88, 0x33, 0xdc, 0xe2, - 0x80, 0x96, 0x81, 0xef, 0xab, 0x2f, 0xfa, 0x12, 0x17, 0x8f, 0x6a, 0xbf, 0xad, 0x74, 0xe3, 0xd1, - 0xac, 0xc0, 0x8a, 0x76, 0xd0, 0xe9, 0x0f, 0x70, 0x3c, 0x93, 0x22, 0x08, 0x78, 0xd0, 0x55, 0xb1, - 0xc4, 0xc7, 0x7e, 0xa5, 0x8d, 0x3b, 0x47, 0x7b, 0xaa, 0x24, 0x34, 0xde, 0x14, 0x40, 0x9c, 0x91, - 0xbb, 0x35, 0x2d, 0xdc, 0x01, 0xe1, 0x8a, 0x06, 0x76, 0xd6, 0xbd, 0xbc, 0x8f, 0xfb, 0x09, 0x0d, - 0x6c, 0x9c, 0x20, 0x96, 0x44, 0xe6, 0xbf, 0x12, 0xf9, 0x6d, 0x01, 0xf8, 0x38, 0xfe, 0xd6, 0x68, - 0xf1, 0x14, 0x56, 0xc2, 0xe9, 0xd8, 0xa4, 0xa3, 0x4c, 0x8d, 0xfb, 0x39, 0xa9, 0x8e, 0x59, 0x34, - 0xce, 0x50, 0xb9, 0x8a, 0x7c, 0xe0, 0xa0, 0x94, 0x60, 0x6e, 0x8d, 0x26, 0xd9, 0x0d, 0x5e, 0xbc, - 0xbe, 0xc1, 0xf3, 0x68, 0x2a, 0xaf, 0x38, 0xb8, 0x6b, 0xd1, 0xf1, 0xcd, 0x7b, 0x2a, 0x7f, 0x2d, - 0x12, 0xd2, 0xe2, 0xe7, 0x87, 0xc6, 0xbd, 0xec, 0xa4, 0x28, 0x87, 0xc6, 0x77, 0x98, 0x4c, 0x03, - 0xa7, 0xe9, 0x10, 0x8f, 0x3d, 0x4e, 0x9a, 0xc9, 0x5f, 0x86, 0xef, 0x86, 0xdf, 0x78, 0xcd, 0xec, - 0x26, 0x8e, 0xcf, 0x1c, 0x67, 0x96, 0x18, 0x64, 0xfb, 0x4b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb1, - 0xa1, 0x02, 0xbb, 0x71, 0x09, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/web_detection.pb.go b/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/web_detection.pb.go deleted file mode 100644 index a66a4859..00000000 --- a/vendor/google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1/web_detection.pb.go +++ /dev/null @@ -1,277 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/cloud/vision/v1p1beta1/web_detection.proto - -package vision - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Relevant information for the image from the Internet. -type WebDetection struct { - // Deduced entities from similar images on the Internet. - WebEntities []*WebDetection_WebEntity `protobuf:"bytes,1,rep,name=web_entities,json=webEntities" json:"web_entities,omitempty"` - // Fully matching images from the Internet. - // Can include resized copies of the query image. - FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,2,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"` - // Partial matching images from the Internet. - // Those images are similar enough to share some key-point features. For - // example an original image will likely have partial matching for its crops. - PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,3,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"` - // Web pages containing the matching images from the Internet. - PagesWithMatchingImages []*WebDetection_WebPage `protobuf:"bytes,4,rep,name=pages_with_matching_images,json=pagesWithMatchingImages" json:"pages_with_matching_images,omitempty"` - // The visually similar image results. - VisuallySimilarImages []*WebDetection_WebImage `protobuf:"bytes,6,rep,name=visually_similar_images,json=visuallySimilarImages" json:"visually_similar_images,omitempty"` - // Best guess text labels for the request image. - BestGuessLabels []*WebDetection_WebLabel `protobuf:"bytes,8,rep,name=best_guess_labels,json=bestGuessLabels" json:"best_guess_labels,omitempty"` -} - -func (m *WebDetection) Reset() { *m = WebDetection{} } -func (m *WebDetection) String() string { return proto.CompactTextString(m) } -func (*WebDetection) ProtoMessage() {} -func (*WebDetection) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *WebDetection) GetWebEntities() []*WebDetection_WebEntity { - if m != nil { - return m.WebEntities - } - return nil -} - -func (m *WebDetection) GetFullMatchingImages() []*WebDetection_WebImage { - if m != nil { - return m.FullMatchingImages - } - return nil -} - -func (m *WebDetection) GetPartialMatchingImages() []*WebDetection_WebImage { - if m != nil { - return m.PartialMatchingImages - } - return nil -} - -func (m *WebDetection) GetPagesWithMatchingImages() []*WebDetection_WebPage { - if m != nil { - return m.PagesWithMatchingImages - } - return nil -} - -func (m *WebDetection) GetVisuallySimilarImages() []*WebDetection_WebImage { - if m != nil { - return m.VisuallySimilarImages - } - return nil -} - -func (m *WebDetection) GetBestGuessLabels() []*WebDetection_WebLabel { - if m != nil { - return m.BestGuessLabels - } - return nil -} - -// Entity deduced from similar images on the Internet. -type WebDetection_WebEntity struct { - // Opaque entity ID. - EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` - // Overall relevancy score for the entity. - // Not normalized and not comparable across different image queries. - Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` - // Canonical description of the entity, in English. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (m *WebDetection_WebEntity) Reset() { *m = WebDetection_WebEntity{} } -func (m *WebDetection_WebEntity) String() string { return proto.CompactTextString(m) } -func (*WebDetection_WebEntity) ProtoMessage() {} -func (*WebDetection_WebEntity) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -func (m *WebDetection_WebEntity) GetEntityId() string { - if m != nil { - return m.EntityId - } - return "" -} - -func (m *WebDetection_WebEntity) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *WebDetection_WebEntity) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// Metadata for online images. -type WebDetection_WebImage struct { - // The result image URL. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // (Deprecated) Overall relevancy score for the image. - Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` -} - -func (m *WebDetection_WebImage) Reset() { *m = WebDetection_WebImage{} } -func (m *WebDetection_WebImage) String() string { return proto.CompactTextString(m) } -func (*WebDetection_WebImage) ProtoMessage() {} -func (*WebDetection_WebImage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} } - -func (m *WebDetection_WebImage) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *WebDetection_WebImage) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -// Metadata for web pages. -type WebDetection_WebPage struct { - // The result web page URL. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // (Deprecated) Overall relevancy score for the web page. - Score float32 `protobuf:"fixed32,2,opt,name=score" json:"score,omitempty"` - // Title for the web page, may contain HTML markups. - PageTitle string `protobuf:"bytes,3,opt,name=page_title,json=pageTitle" json:"page_title,omitempty"` - // Fully matching images on the page. - // Can include resized copies of the query image. - FullMatchingImages []*WebDetection_WebImage `protobuf:"bytes,4,rep,name=full_matching_images,json=fullMatchingImages" json:"full_matching_images,omitempty"` - // Partial matching images on the page. - // Those images are similar enough to share some key-point features. For - // example an original image will likely have partial matching for its - // crops. - PartialMatchingImages []*WebDetection_WebImage `protobuf:"bytes,5,rep,name=partial_matching_images,json=partialMatchingImages" json:"partial_matching_images,omitempty"` -} - -func (m *WebDetection_WebPage) Reset() { *m = WebDetection_WebPage{} } -func (m *WebDetection_WebPage) String() string { return proto.CompactTextString(m) } -func (*WebDetection_WebPage) ProtoMessage() {} -func (*WebDetection_WebPage) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 2} } - -func (m *WebDetection_WebPage) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *WebDetection_WebPage) GetScore() float32 { - if m != nil { - return m.Score - } - return 0 -} - -func (m *WebDetection_WebPage) GetPageTitle() string { - if m != nil { - return m.PageTitle - } - return "" -} - -func (m *WebDetection_WebPage) GetFullMatchingImages() []*WebDetection_WebImage { - if m != nil { - return m.FullMatchingImages - } - return nil -} - -func (m *WebDetection_WebPage) GetPartialMatchingImages() []*WebDetection_WebImage { - if m != nil { - return m.PartialMatchingImages - } - return nil -} - -// Label to provide extra metadata for the web detection. -type WebDetection_WebLabel struct { - // Label for extra metadata. - Label string `protobuf:"bytes,1,opt,name=label" json:"label,omitempty"` - // The BCP-47 language code for `label`, such as "en-US" or "sr-Latn". - // For more information, see - // http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *WebDetection_WebLabel) Reset() { *m = WebDetection_WebLabel{} } -func (m *WebDetection_WebLabel) String() string { return proto.CompactTextString(m) } -func (*WebDetection_WebLabel) ProtoMessage() {} -func (*WebDetection_WebLabel) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 3} } - -func (m *WebDetection_WebLabel) GetLabel() string { - if m != nil { - return m.Label - } - return "" -} - -func (m *WebDetection_WebLabel) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func init() { - proto.RegisterType((*WebDetection)(nil), "google.cloud.vision.v1p1beta1.WebDetection") - proto.RegisterType((*WebDetection_WebEntity)(nil), "google.cloud.vision.v1p1beta1.WebDetection.WebEntity") - proto.RegisterType((*WebDetection_WebImage)(nil), "google.cloud.vision.v1p1beta1.WebDetection.WebImage") - proto.RegisterType((*WebDetection_WebPage)(nil), "google.cloud.vision.v1p1beta1.WebDetection.WebPage") - proto.RegisterType((*WebDetection_WebLabel)(nil), "google.cloud.vision.v1p1beta1.WebDetection.WebLabel") -} - -func init() { proto.RegisterFile("google/cloud/vision/v1p1beta1/web_detection.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 511 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0x95, 0x76, 0x1b, 0x8b, 0x5b, 0x04, 0xb3, 0x86, 0x16, 0x05, 0x26, 0x15, 0xb8, 0xf4, - 0x94, 0xa8, 0x1b, 0x9c, 0xb8, 0x6d, 0x4c, 0x68, 0x12, 0x48, 0x55, 0x40, 0x1a, 0xe2, 0x92, 0x39, - 0x89, 0x97, 0xbe, 0x92, 0x1b, 0x47, 0xb1, 0xd3, 0xaa, 0x37, 0x4e, 0x7c, 0x14, 0x3e, 0x23, 0x47, - 0xf4, 0xda, 0xce, 0x54, 0x51, 0x36, 0x31, 0x86, 0xb8, 0xf9, 0x7d, 0xac, 0xe7, 0xf9, 0xd9, 0xaf, - 0xff, 0x90, 0x49, 0x29, 0x65, 0x29, 0x78, 0x9c, 0x0b, 0xd9, 0x16, 0xf1, 0x02, 0x14, 0xc8, 0x2a, - 0x5e, 0x4c, 0xea, 0x49, 0xc6, 0x35, 0x9b, 0xc4, 0x4b, 0x9e, 0xa5, 0x05, 0xd7, 0x3c, 0xd7, 0x20, - 0xab, 0xa8, 0x6e, 0xa4, 0x96, 0xf4, 0xd0, 0x5a, 0x22, 0x63, 0x89, 0xac, 0x25, 0xba, 0xb6, 0x84, - 0xcf, 0x5c, 0x22, 0xab, 0x21, 0x66, 0x55, 0x25, 0x35, 0x43, 0xaf, 0xb2, 0xe6, 0x17, 0xdf, 0x7c, - 0x32, 0xbc, 0xe0, 0xd9, 0xdb, 0x2e, 0x93, 0x7e, 0x26, 0x43, 0x84, 0xf0, 0x4a, 0x83, 0x06, 0xae, - 0x02, 0x6f, 0xd4, 0x1f, 0x0f, 0x8e, 0x5e, 0x47, 0xb7, 0x42, 0xa2, 0xf5, 0x08, 0x2c, 0xce, 0xd0, - 0xbe, 0x4a, 0x06, 0x4b, 0x37, 0x04, 0xae, 0xe8, 0x15, 0xd9, 0xbf, 0x6a, 0x85, 0x48, 0xe7, 0x4c, - 0xe7, 0x33, 0xa8, 0xca, 0x14, 0xe6, 0xac, 0xe4, 0x2a, 0xe8, 0x19, 0xc2, 0xab, 0x3b, 0x12, 0xce, - 0xd1, 0x9c, 0x50, 0x4c, 0xfc, 0xe0, 0x02, 0x8d, 0xa4, 0xa8, 0x20, 0x07, 0x35, 0x6b, 0x34, 0xb0, - 0x4d, 0x54, 0xff, 0x1e, 0xa8, 0x27, 0x2e, 0xf4, 0x17, 0x5a, 0x4d, 0xc2, 0x1a, 0x07, 0xe9, 0x12, - 0xf4, 0x6c, 0x03, 0xb8, 0x65, 0x80, 0xc7, 0x77, 0x04, 0x4e, 0x91, 0x77, 0x60, 0x62, 0x2f, 0x40, - 0xcf, 0x36, 0xf7, 0xb7, 0x00, 0xd5, 0x32, 0x21, 0x56, 0xa9, 0x82, 0x39, 0x08, 0xd6, 0x74, 0xb8, - 0x9d, 0xfb, 0xec, 0xaf, 0x0b, 0xfd, 0x68, 0x33, 0x1d, 0xed, 0x92, 0xec, 0x65, 0x5c, 0xe9, 0xb4, - 0x6c, 0xb9, 0x52, 0xa9, 0x60, 0x19, 0x17, 0x2a, 0xd8, 0xfd, 0x2b, 0xce, 0x7b, 0x34, 0x27, 0x8f, - 0x30, 0xee, 0x1d, 0xa6, 0x99, 0x5a, 0x85, 0x97, 0xc4, 0xbf, 0xbe, 0x31, 0xf4, 0x29, 0xf1, 0xcd, - 0xd5, 0x5b, 0xa5, 0x50, 0x04, 0xde, 0xc8, 0x1b, 0xfb, 0xc9, 0xae, 0x15, 0xce, 0x0b, 0xba, 0x4f, - 0xb6, 0x55, 0x2e, 0x1b, 0x1e, 0xf4, 0x46, 0xde, 0xb8, 0x97, 0xd8, 0x82, 0x8e, 0xc8, 0xa0, 0xe0, - 0x2a, 0x6f, 0xa0, 0x46, 0x50, 0xd0, 0x37, 0xa6, 0x75, 0x29, 0x3c, 0x22, 0xbb, 0xdd, 0x36, 0xe9, - 0x63, 0xd2, 0x6f, 0x1b, 0xe1, 0xa2, 0x71, 0xf8, 0xfb, 0xd4, 0xf0, 0x7b, 0x8f, 0x3c, 0x70, 0x47, - 0xf1, 0xa7, 0x1e, 0x7a, 0x48, 0x08, 0x1e, 0x5a, 0xaa, 0x41, 0x0b, 0xee, 0x16, 0xe2, 0xa3, 0xf2, - 0x09, 0x85, 0x1b, 0x1f, 0xc0, 0xd6, 0xff, 0x7b, 0x00, 0xdb, 0xff, 0xfc, 0x01, 0x84, 0x67, 0xa6, - 0xb9, 0xe6, 0x2c, 0xb1, 0x2d, 0xe6, 0x86, 0xb8, 0x56, 0xd9, 0x82, 0xbe, 0x24, 0x0f, 0x05, 0xab, - 0xca, 0x16, 0x5b, 0x93, 0xcb, 0xc2, 0x36, 0xcd, 0x4f, 0x86, 0x9d, 0x78, 0x2a, 0x0b, 0x7e, 0xf2, - 0xd5, 0x23, 0xcf, 0x73, 0x39, 0xbf, 0x7d, 0x65, 0x27, 0x7b, 0xeb, 0x4b, 0x9b, 0xe2, 0x0f, 0x36, - 0xf5, 0xbe, 0x9c, 0x3a, 0x4f, 0x29, 0x31, 0x31, 0x92, 0x4d, 0x19, 0x97, 0xbc, 0x32, 0xff, 0x5b, - 0x6c, 0xa7, 0x58, 0x0d, 0xea, 0x86, 0x2f, 0xf5, 0x8d, 0x15, 0x7e, 0x78, 0x5e, 0xb6, 0x63, 0x2c, - 0xc7, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xa2, 0x19, 0xa7, 0x1d, 0x84, 0x05, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/container/v1/cluster_service.pb.go b/vendor/google.golang.org/genproto/googleapis/container/v1/cluster_service.pb.go deleted file mode 100644 index 15da6ae8..00000000 --- a/vendor/google.golang.org/genproto/googleapis/container/v1/cluster_service.pb.go +++ /dev/null @@ -1,5085 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/container/v1/cluster_service.proto - -/* -Package container is a generated protocol buffer package. - -It is generated from these files: - google/container/v1/cluster_service.proto - -It has these top-level messages: - NodeConfig - MasterAuth - ClientCertificateConfig - AddonsConfig - HttpLoadBalancing - HorizontalPodAutoscaling - KubernetesDashboard - NetworkPolicyConfig - MasterAuthorizedNetworksConfig - LegacyAbac - NetworkPolicy - IPAllocationPolicy - Cluster - ClusterUpdate - Operation - CreateClusterRequest - GetClusterRequest - UpdateClusterRequest - UpdateNodePoolRequest - SetNodePoolAutoscalingRequest - SetLoggingServiceRequest - SetMonitoringServiceRequest - SetAddonsConfigRequest - SetLocationsRequest - UpdateMasterRequest - SetMasterAuthRequest - DeleteClusterRequest - ListClustersRequest - ListClustersResponse - GetOperationRequest - ListOperationsRequest - CancelOperationRequest - ListOperationsResponse - GetServerConfigRequest - ServerConfig - CreateNodePoolRequest - DeleteNodePoolRequest - ListNodePoolsRequest - GetNodePoolRequest - NodePool - NodeManagement - AutoUpgradeOptions - MaintenancePolicy - MaintenanceWindow - DailyMaintenanceWindow - SetNodePoolManagementRequest - SetNodePoolSizeRequest - RollbackNodePoolUpgradeRequest - ListNodePoolsResponse - NodePoolAutoscaling - SetLabelsRequest - SetLegacyAbacRequest - StartIPRotationRequest - CompleteIPRotationRequest - AcceleratorConfig - SetNetworkPolicyRequest - SetMaintenancePolicyRequest -*/ -package container - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Allowed Network Policy providers. -type NetworkPolicy_Provider int32 - -const ( - // Not set - NetworkPolicy_PROVIDER_UNSPECIFIED NetworkPolicy_Provider = 0 - // Tigera (Calico Felix). - NetworkPolicy_CALICO NetworkPolicy_Provider = 1 -) - -var NetworkPolicy_Provider_name = map[int32]string{ - 0: "PROVIDER_UNSPECIFIED", - 1: "CALICO", -} -var NetworkPolicy_Provider_value = map[string]int32{ - "PROVIDER_UNSPECIFIED": 0, - "CALICO": 1, -} - -func (x NetworkPolicy_Provider) String() string { - return proto.EnumName(NetworkPolicy_Provider_name, int32(x)) -} -func (NetworkPolicy_Provider) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 0} } - -// The current status of the cluster. -type Cluster_Status int32 - -const ( - // Not set. - Cluster_STATUS_UNSPECIFIED Cluster_Status = 0 - // The PROVISIONING state indicates the cluster is being created. - Cluster_PROVISIONING Cluster_Status = 1 - // The RUNNING state indicates the cluster has been created and is fully - // usable. - Cluster_RUNNING Cluster_Status = 2 - // The RECONCILING state indicates that some work is actively being done on - // the cluster, such as upgrading the master or node software. Details can - // be found in the `statusMessage` field. - Cluster_RECONCILING Cluster_Status = 3 - // The STOPPING state indicates the cluster is being deleted. - Cluster_STOPPING Cluster_Status = 4 - // The ERROR state indicates the cluster may be unusable. Details - // can be found in the `statusMessage` field. - Cluster_ERROR Cluster_Status = 5 -) - -var Cluster_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PROVISIONING", - 2: "RUNNING", - 3: "RECONCILING", - 4: "STOPPING", - 5: "ERROR", -} -var Cluster_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PROVISIONING": 1, - "RUNNING": 2, - "RECONCILING": 3, - "STOPPING": 4, - "ERROR": 5, -} - -func (x Cluster_Status) String() string { - return proto.EnumName(Cluster_Status_name, int32(x)) -} -func (Cluster_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{12, 0} } - -// Current status of the operation. -type Operation_Status int32 - -const ( - // Not set. - Operation_STATUS_UNSPECIFIED Operation_Status = 0 - // The operation has been created. - Operation_PENDING Operation_Status = 1 - // The operation is currently running. - Operation_RUNNING Operation_Status = 2 - // The operation is done, either cancelled or completed. - Operation_DONE Operation_Status = 3 - // The operation is aborting. - Operation_ABORTING Operation_Status = 4 -) - -var Operation_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", - 4: "ABORTING", -} -var Operation_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, - "ABORTING": 4, -} - -func (x Operation_Status) String() string { - return proto.EnumName(Operation_Status_name, int32(x)) -} -func (Operation_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{14, 0} } - -// Operation type. -type Operation_Type int32 - -const ( - // Not set. - Operation_TYPE_UNSPECIFIED Operation_Type = 0 - // Cluster create. - Operation_CREATE_CLUSTER Operation_Type = 1 - // Cluster delete. - Operation_DELETE_CLUSTER Operation_Type = 2 - // A master upgrade. - Operation_UPGRADE_MASTER Operation_Type = 3 - // A node upgrade. - Operation_UPGRADE_NODES Operation_Type = 4 - // Cluster repair. - Operation_REPAIR_CLUSTER Operation_Type = 5 - // Cluster update. - Operation_UPDATE_CLUSTER Operation_Type = 6 - // Node pool create. - Operation_CREATE_NODE_POOL Operation_Type = 7 - // Node pool delete. - Operation_DELETE_NODE_POOL Operation_Type = 8 - // Set node pool management. - Operation_SET_NODE_POOL_MANAGEMENT Operation_Type = 9 - // Automatic node pool repair. - Operation_AUTO_REPAIR_NODES Operation_Type = 10 - // Automatic node upgrade. - Operation_AUTO_UPGRADE_NODES Operation_Type = 11 - // Set labels. - Operation_SET_LABELS Operation_Type = 12 - // Set/generate master auth materials - Operation_SET_MASTER_AUTH Operation_Type = 13 - // Set node pool size. - Operation_SET_NODE_POOL_SIZE Operation_Type = 14 - // Updates network policy for a cluster. - Operation_SET_NETWORK_POLICY Operation_Type = 15 - // Set the maintenance policy. - Operation_SET_MAINTENANCE_POLICY Operation_Type = 16 -) - -var Operation_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "CREATE_CLUSTER", - 2: "DELETE_CLUSTER", - 3: "UPGRADE_MASTER", - 4: "UPGRADE_NODES", - 5: "REPAIR_CLUSTER", - 6: "UPDATE_CLUSTER", - 7: "CREATE_NODE_POOL", - 8: "DELETE_NODE_POOL", - 9: "SET_NODE_POOL_MANAGEMENT", - 10: "AUTO_REPAIR_NODES", - 11: "AUTO_UPGRADE_NODES", - 12: "SET_LABELS", - 13: "SET_MASTER_AUTH", - 14: "SET_NODE_POOL_SIZE", - 15: "SET_NETWORK_POLICY", - 16: "SET_MAINTENANCE_POLICY", -} -var Operation_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "CREATE_CLUSTER": 1, - "DELETE_CLUSTER": 2, - "UPGRADE_MASTER": 3, - "UPGRADE_NODES": 4, - "REPAIR_CLUSTER": 5, - "UPDATE_CLUSTER": 6, - "CREATE_NODE_POOL": 7, - "DELETE_NODE_POOL": 8, - "SET_NODE_POOL_MANAGEMENT": 9, - "AUTO_REPAIR_NODES": 10, - "AUTO_UPGRADE_NODES": 11, - "SET_LABELS": 12, - "SET_MASTER_AUTH": 13, - "SET_NODE_POOL_SIZE": 14, - "SET_NETWORK_POLICY": 15, - "SET_MAINTENANCE_POLICY": 16, -} - -func (x Operation_Type) String() string { - return proto.EnumName(Operation_Type_name, int32(x)) -} -func (Operation_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{14, 1} } - -// Operation type: what type update to perform. -type SetMasterAuthRequest_Action int32 - -const ( - // Operation is unknown and will error out. - SetMasterAuthRequest_UNKNOWN SetMasterAuthRequest_Action = 0 - // Set the password to a user generated value. - SetMasterAuthRequest_SET_PASSWORD SetMasterAuthRequest_Action = 1 - // Generate a new password and set it to that. - SetMasterAuthRequest_GENERATE_PASSWORD SetMasterAuthRequest_Action = 2 - // Set the username. If an empty username is provided, basic authentication - // is disabled for the cluster. If a non-empty username is provided, basic - // authentication is enabled, with either a provided password or a generated - // one. - SetMasterAuthRequest_SET_USERNAME SetMasterAuthRequest_Action = 3 -) - -var SetMasterAuthRequest_Action_name = map[int32]string{ - 0: "UNKNOWN", - 1: "SET_PASSWORD", - 2: "GENERATE_PASSWORD", - 3: "SET_USERNAME", -} -var SetMasterAuthRequest_Action_value = map[string]int32{ - "UNKNOWN": 0, - "SET_PASSWORD": 1, - "GENERATE_PASSWORD": 2, - "SET_USERNAME": 3, -} - -func (x SetMasterAuthRequest_Action) String() string { - return proto.EnumName(SetMasterAuthRequest_Action_name, int32(x)) -} -func (SetMasterAuthRequest_Action) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{25, 0} -} - -// The current status of the node pool instance. -type NodePool_Status int32 - -const ( - // Not set. - NodePool_STATUS_UNSPECIFIED NodePool_Status = 0 - // The PROVISIONING state indicates the node pool is being created. - NodePool_PROVISIONING NodePool_Status = 1 - // The RUNNING state indicates the node pool has been created - // and is fully usable. - NodePool_RUNNING NodePool_Status = 2 - // The RUNNING_WITH_ERROR state indicates the node pool has been created - // and is partially usable. Some error state has occurred and some - // functionality may be impaired. Customer may need to reissue a request - // or trigger a new update. - NodePool_RUNNING_WITH_ERROR NodePool_Status = 3 - // The RECONCILING state indicates that some work is actively being done on - // the node pool, such as upgrading node software. Details can - // be found in the `statusMessage` field. - NodePool_RECONCILING NodePool_Status = 4 - // The STOPPING state indicates the node pool is being deleted. - NodePool_STOPPING NodePool_Status = 5 - // The ERROR state indicates the node pool may be unusable. Details - // can be found in the `statusMessage` field. - NodePool_ERROR NodePool_Status = 6 -) - -var NodePool_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PROVISIONING", - 2: "RUNNING", - 3: "RUNNING_WITH_ERROR", - 4: "RECONCILING", - 5: "STOPPING", - 6: "ERROR", -} -var NodePool_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PROVISIONING": 1, - "RUNNING": 2, - "RUNNING_WITH_ERROR": 3, - "RECONCILING": 4, - "STOPPING": 5, - "ERROR": 6, -} - -func (x NodePool_Status) String() string { - return proto.EnumName(NodePool_Status_name, int32(x)) -} -func (NodePool_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{39, 0} } - -// Parameters that describe the nodes in a cluster. -type NodeConfig struct { - // The name of a Google Compute Engine [machine - // type](/compute/docs/machine-types) (e.g. - // `n1-standard-1`). - // - // If unspecified, the default machine type is - // `n1-standard-1`. - MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType" json:"machine_type,omitempty"` - // Size of the disk attached to each node, specified in GB. - // The smallest allowed disk size is 10GB. - // - // If unspecified, the default disk size is 100GB. - DiskSizeGb int32 `protobuf:"varint,2,opt,name=disk_size_gb,json=diskSizeGb" json:"disk_size_gb,omitempty"` - // The set of Google API scopes to be made available on all of the - // node VMs under the "default" service account. - // - // The following scopes are recommended, but not required, and by default are - // not included: - // - // * `https://www.googleapis.com/auth/compute` is required for mounting - // persistent storage on your nodes. - // * `https://www.googleapis.com/auth/devstorage.read_only` is required for - // communicating with **gcr.io** - // (the [Google Container Registry](/container-registry/)). - // - // If unspecified, no scopes are added, unless Cloud Logging or Cloud - // Monitoring are enabled, in which case their required scopes will be added. - OauthScopes []string `protobuf:"bytes,3,rep,name=oauth_scopes,json=oauthScopes" json:"oauth_scopes,omitempty"` - // The Google Cloud Platform Service Account to be used by the node VMs. If - // no Service Account is specified, the "default" service account is used. - ServiceAccount string `protobuf:"bytes,9,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // The metadata key/value pairs assigned to instances in the cluster. - // - // Keys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes - // in length. These are reflected as part of a URL in the metadata server. - // Additionally, to avoid ambiguity, keys must not conflict with any other - // metadata keys for the project or be one of the four reserved keys: - // "instance-template", "kube-env", "startup-script", and "user-data" - // - // Values are free-form strings, and only have meaning as interpreted by - // the image running in the instance. The only restriction placed on them is - // that each value's size must be less than or equal to 32 KB. - // - // The total size of all keys and values must be less than 512 KB. - Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The image type to use for this node. Note that for a given image type, - // the latest version of it will be used. - ImageType string `protobuf:"bytes,5,opt,name=image_type,json=imageType" json:"image_type,omitempty"` - // The map of Kubernetes labels (key/value pairs) to be applied to each node. - // These will added in addition to any default label(s) that - // Kubernetes may apply to the node. - // In case of conflict in label keys, the applied set may differ depending on - // the Kubernetes version -- it's best to assume the behavior is undefined - // and conflicts should be avoided. - // For more information, including usage and the valid values, see: - // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ - Labels map[string]string `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The number of local SSD disks to be attached to the node. - // - // The limit for this value is dependant upon the maximum number of - // disks available on a machine per zone. See: - // https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits - // for more information. - LocalSsdCount int32 `protobuf:"varint,7,opt,name=local_ssd_count,json=localSsdCount" json:"local_ssd_count,omitempty"` - // The list of instance tags applied to all nodes. Tags are used to identify - // valid sources or targets for network firewalls and are specified by - // the client during cluster or node pool creation. Each tag within the list - // must comply with RFC1035. - Tags []string `protobuf:"bytes,8,rep,name=tags" json:"tags,omitempty"` - // Whether the nodes are created as preemptible VM instances. See: - // https://cloud.google.com/compute/docs/instances/preemptible for more - // information about preemptible VM instances. - Preemptible bool `protobuf:"varint,10,opt,name=preemptible" json:"preemptible,omitempty"` - // A list of hardware accelerators to be attached to each node. - // See https://cloud.google.com/compute/docs/gpus for more information about - // support for GPUs. - Accelerators []*AcceleratorConfig `protobuf:"bytes,11,rep,name=accelerators" json:"accelerators,omitempty"` - // Minimum CPU platform to be used by this instance. The instance may be - // scheduled on the specified or newer CPU platform. Applicable values are the - // friendly names of CPU platforms, such as - // <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or - // <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more - // information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) - MinCpuPlatform string `protobuf:"bytes,13,opt,name=min_cpu_platform,json=minCpuPlatform" json:"min_cpu_platform,omitempty"` -} - -func (m *NodeConfig) Reset() { *m = NodeConfig{} } -func (m *NodeConfig) String() string { return proto.CompactTextString(m) } -func (*NodeConfig) ProtoMessage() {} -func (*NodeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *NodeConfig) GetMachineType() string { - if m != nil { - return m.MachineType - } - return "" -} - -func (m *NodeConfig) GetDiskSizeGb() int32 { - if m != nil { - return m.DiskSizeGb - } - return 0 -} - -func (m *NodeConfig) GetOauthScopes() []string { - if m != nil { - return m.OauthScopes - } - return nil -} - -func (m *NodeConfig) GetServiceAccount() string { - if m != nil { - return m.ServiceAccount - } - return "" -} - -func (m *NodeConfig) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *NodeConfig) GetImageType() string { - if m != nil { - return m.ImageType - } - return "" -} - -func (m *NodeConfig) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *NodeConfig) GetLocalSsdCount() int32 { - if m != nil { - return m.LocalSsdCount - } - return 0 -} - -func (m *NodeConfig) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -func (m *NodeConfig) GetPreemptible() bool { - if m != nil { - return m.Preemptible - } - return false -} - -func (m *NodeConfig) GetAccelerators() []*AcceleratorConfig { - if m != nil { - return m.Accelerators - } - return nil -} - -func (m *NodeConfig) GetMinCpuPlatform() string { - if m != nil { - return m.MinCpuPlatform - } - return "" -} - -// The authentication information for accessing the master endpoint. -// Authentication can be done using HTTP basic auth or using client -// certificates. -type MasterAuth struct { - // The username to use for HTTP basic authentication to the master endpoint. - // For clusters v1.6.0 and later, you can disable basic authentication by - // providing an empty username. - Username string `protobuf:"bytes,1,opt,name=username" json:"username,omitempty"` - // The password to use for HTTP basic authentication to the master endpoint. - // Because the master endpoint is open to the Internet, you should create a - // strong password. If a password is provided for cluster creation, username - // must be non-empty. - Password string `protobuf:"bytes,2,opt,name=password" json:"password,omitempty"` - // Configuration for client certificate authentication on the cluster. If no - // configuration is specified, a client certificate is issued. - ClientCertificateConfig *ClientCertificateConfig `protobuf:"bytes,3,opt,name=client_certificate_config,json=clientCertificateConfig" json:"client_certificate_config,omitempty"` - // [Output only] Base64-encoded public certificate that is the root of - // trust for the cluster. - ClusterCaCertificate string `protobuf:"bytes,100,opt,name=cluster_ca_certificate,json=clusterCaCertificate" json:"cluster_ca_certificate,omitempty"` - // [Output only] Base64-encoded public certificate used by clients to - // authenticate to the cluster endpoint. - ClientCertificate string `protobuf:"bytes,101,opt,name=client_certificate,json=clientCertificate" json:"client_certificate,omitempty"` - // [Output only] Base64-encoded private key used by clients to authenticate - // to the cluster endpoint. - ClientKey string `protobuf:"bytes,102,opt,name=client_key,json=clientKey" json:"client_key,omitempty"` -} - -func (m *MasterAuth) Reset() { *m = MasterAuth{} } -func (m *MasterAuth) String() string { return proto.CompactTextString(m) } -func (*MasterAuth) ProtoMessage() {} -func (*MasterAuth) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *MasterAuth) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *MasterAuth) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -func (m *MasterAuth) GetClientCertificateConfig() *ClientCertificateConfig { - if m != nil { - return m.ClientCertificateConfig - } - return nil -} - -func (m *MasterAuth) GetClusterCaCertificate() string { - if m != nil { - return m.ClusterCaCertificate - } - return "" -} - -func (m *MasterAuth) GetClientCertificate() string { - if m != nil { - return m.ClientCertificate - } - return "" -} - -func (m *MasterAuth) GetClientKey() string { - if m != nil { - return m.ClientKey - } - return "" -} - -// Configuration for client certificates on the cluster. -type ClientCertificateConfig struct { - // Issue a client certificate. - IssueClientCertificate bool `protobuf:"varint,1,opt,name=issue_client_certificate,json=issueClientCertificate" json:"issue_client_certificate,omitempty"` -} - -func (m *ClientCertificateConfig) Reset() { *m = ClientCertificateConfig{} } -func (m *ClientCertificateConfig) String() string { return proto.CompactTextString(m) } -func (*ClientCertificateConfig) ProtoMessage() {} -func (*ClientCertificateConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ClientCertificateConfig) GetIssueClientCertificate() bool { - if m != nil { - return m.IssueClientCertificate - } - return false -} - -// Configuration for the addons that can be automatically spun up in the -// cluster, enabling additional functionality. -type AddonsConfig struct { - // Configuration for the HTTP (L7) load balancing controller addon, which - // makes it easy to set up HTTP load balancers for services in a cluster. - HttpLoadBalancing *HttpLoadBalancing `protobuf:"bytes,1,opt,name=http_load_balancing,json=httpLoadBalancing" json:"http_load_balancing,omitempty"` - // Configuration for the horizontal pod autoscaling feature, which - // increases or decreases the number of replica pods a replication controller - // has based on the resource usage of the existing pods. - HorizontalPodAutoscaling *HorizontalPodAutoscaling `protobuf:"bytes,2,opt,name=horizontal_pod_autoscaling,json=horizontalPodAutoscaling" json:"horizontal_pod_autoscaling,omitempty"` - // Configuration for the Kubernetes Dashboard. - KubernetesDashboard *KubernetesDashboard `protobuf:"bytes,3,opt,name=kubernetes_dashboard,json=kubernetesDashboard" json:"kubernetes_dashboard,omitempty"` - // Configuration for NetworkPolicy. This only tracks whether the addon - // is enabled or not on the Master, it does not track whether network policy - // is enabled for the nodes. - NetworkPolicyConfig *NetworkPolicyConfig `protobuf:"bytes,4,opt,name=network_policy_config,json=networkPolicyConfig" json:"network_policy_config,omitempty"` -} - -func (m *AddonsConfig) Reset() { *m = AddonsConfig{} } -func (m *AddonsConfig) String() string { return proto.CompactTextString(m) } -func (*AddonsConfig) ProtoMessage() {} -func (*AddonsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *AddonsConfig) GetHttpLoadBalancing() *HttpLoadBalancing { - if m != nil { - return m.HttpLoadBalancing - } - return nil -} - -func (m *AddonsConfig) GetHorizontalPodAutoscaling() *HorizontalPodAutoscaling { - if m != nil { - return m.HorizontalPodAutoscaling - } - return nil -} - -func (m *AddonsConfig) GetKubernetesDashboard() *KubernetesDashboard { - if m != nil { - return m.KubernetesDashboard - } - return nil -} - -func (m *AddonsConfig) GetNetworkPolicyConfig() *NetworkPolicyConfig { - if m != nil { - return m.NetworkPolicyConfig - } - return nil -} - -// Configuration options for the HTTP (L7) load balancing controller addon, -// which makes it easy to set up HTTP load balancers for services in a cluster. -type HttpLoadBalancing struct { - // Whether the HTTP Load Balancing controller is enabled in the cluster. - // When enabled, it runs a small pod in the cluster that manages the load - // balancers. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *HttpLoadBalancing) Reset() { *m = HttpLoadBalancing{} } -func (m *HttpLoadBalancing) String() string { return proto.CompactTextString(m) } -func (*HttpLoadBalancing) ProtoMessage() {} -func (*HttpLoadBalancing) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *HttpLoadBalancing) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration options for the horizontal pod autoscaling feature, which -// increases or decreases the number of replica pods a replication controller -// has based on the resource usage of the existing pods. -type HorizontalPodAutoscaling struct { - // Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. - // When enabled, it ensures that a Heapster pod is running in the cluster, - // which is also used by the Cloud Monitoring service. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *HorizontalPodAutoscaling) Reset() { *m = HorizontalPodAutoscaling{} } -func (m *HorizontalPodAutoscaling) String() string { return proto.CompactTextString(m) } -func (*HorizontalPodAutoscaling) ProtoMessage() {} -func (*HorizontalPodAutoscaling) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *HorizontalPodAutoscaling) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration for the Kubernetes Dashboard. -type KubernetesDashboard struct { - // Whether the Kubernetes Dashboard is enabled for this cluster. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *KubernetesDashboard) Reset() { *m = KubernetesDashboard{} } -func (m *KubernetesDashboard) String() string { return proto.CompactTextString(m) } -func (*KubernetesDashboard) ProtoMessage() {} -func (*KubernetesDashboard) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *KubernetesDashboard) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration for NetworkPolicy. This only tracks whether the addon -// is enabled or not on the Master, it does not track whether network policy -// is enabled for the nodes. -type NetworkPolicyConfig struct { - // Whether NetworkPolicy is enabled for this cluster. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *NetworkPolicyConfig) Reset() { *m = NetworkPolicyConfig{} } -func (m *NetworkPolicyConfig) String() string { return proto.CompactTextString(m) } -func (*NetworkPolicyConfig) ProtoMessage() {} -func (*NetworkPolicyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *NetworkPolicyConfig) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Master authorized networks is a Beta feature. -// Configuration options for the master authorized networks feature. Enabled -// master authorized networks will disallow all external traffic to access -// Kubernetes master through HTTPS except traffic from the given CIDR blocks, -// Google Compute Engine Public IPs and Google Prod IPs. -type MasterAuthorizedNetworksConfig struct { - // Whether or not master authorized networks is enabled. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` - // cidr_blocks define up to 10 external networks that could access - // Kubernetes master through HTTPS. - CidrBlocks []*MasterAuthorizedNetworksConfig_CidrBlock `protobuf:"bytes,2,rep,name=cidr_blocks,json=cidrBlocks" json:"cidr_blocks,omitempty"` -} - -func (m *MasterAuthorizedNetworksConfig) Reset() { *m = MasterAuthorizedNetworksConfig{} } -func (m *MasterAuthorizedNetworksConfig) String() string { return proto.CompactTextString(m) } -func (*MasterAuthorizedNetworksConfig) ProtoMessage() {} -func (*MasterAuthorizedNetworksConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *MasterAuthorizedNetworksConfig) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *MasterAuthorizedNetworksConfig) GetCidrBlocks() []*MasterAuthorizedNetworksConfig_CidrBlock { - if m != nil { - return m.CidrBlocks - } - return nil -} - -// CidrBlock contains an optional name and one CIDR block. -type MasterAuthorizedNetworksConfig_CidrBlock struct { - // display_name is an optional field for users to identify CIDR blocks. - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // cidr_block must be specified in CIDR notation. - CidrBlock string `protobuf:"bytes,2,opt,name=cidr_block,json=cidrBlock" json:"cidr_block,omitempty"` -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) Reset() { - *m = MasterAuthorizedNetworksConfig_CidrBlock{} -} -func (m *MasterAuthorizedNetworksConfig_CidrBlock) String() string { return proto.CompactTextString(m) } -func (*MasterAuthorizedNetworksConfig_CidrBlock) ProtoMessage() {} -func (*MasterAuthorizedNetworksConfig_CidrBlock) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{8, 0} -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) GetCidrBlock() string { - if m != nil { - return m.CidrBlock - } - return "" -} - -// Configuration for the legacy Attribute Based Access Control authorization -// mode. -type LegacyAbac struct { - // Whether the ABAC authorizer is enabled for this cluster. When enabled, - // identities in the system, including service accounts, nodes, and - // controllers, will have statically granted permissions beyond those - // provided by the RBAC configuration or IAM. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` -} - -func (m *LegacyAbac) Reset() { *m = LegacyAbac{} } -func (m *LegacyAbac) String() string { return proto.CompactTextString(m) } -func (*LegacyAbac) ProtoMessage() {} -func (*LegacyAbac) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *LegacyAbac) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -// Configuration options for the NetworkPolicy feature. -// https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ -type NetworkPolicy struct { - // The selected network policy provider. - Provider NetworkPolicy_Provider `protobuf:"varint,1,opt,name=provider,enum=google.container.v1.NetworkPolicy_Provider" json:"provider,omitempty"` - // Whether network policy is enabled on the cluster. - Enabled bool `protobuf:"varint,2,opt,name=enabled" json:"enabled,omitempty"` -} - -func (m *NetworkPolicy) Reset() { *m = NetworkPolicy{} } -func (m *NetworkPolicy) String() string { return proto.CompactTextString(m) } -func (*NetworkPolicy) ProtoMessage() {} -func (*NetworkPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *NetworkPolicy) GetProvider() NetworkPolicy_Provider { - if m != nil { - return m.Provider - } - return NetworkPolicy_PROVIDER_UNSPECIFIED -} - -func (m *NetworkPolicy) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -// Configuration for controlling how IPs are allocated in the cluster. -type IPAllocationPolicy struct { - // Whether alias IPs will be used for pod IPs in the cluster. - UseIpAliases bool `protobuf:"varint,1,opt,name=use_ip_aliases,json=useIpAliases" json:"use_ip_aliases,omitempty"` - // Whether a new subnetwork will be created automatically for the cluster. - // - // This field is only applicable when `use_ip_aliases` is true. - CreateSubnetwork bool `protobuf:"varint,2,opt,name=create_subnetwork,json=createSubnetwork" json:"create_subnetwork,omitempty"` - // A custom subnetwork name to be used if `create_subnetwork` is true. If - // this field is empty, then an automatic name will be chosen for the new - // subnetwork. - SubnetworkName string `protobuf:"bytes,3,opt,name=subnetwork_name,json=subnetworkName" json:"subnetwork_name,omitempty"` - // This field is deprecated, use cluster_ipv4_cidr_block. - ClusterIpv4Cidr string `protobuf:"bytes,4,opt,name=cluster_ipv4_cidr,json=clusterIpv4Cidr" json:"cluster_ipv4_cidr,omitempty"` - // This field is deprecated, use node_ipv4_cidr_block. - NodeIpv4Cidr string `protobuf:"bytes,5,opt,name=node_ipv4_cidr,json=nodeIpv4Cidr" json:"node_ipv4_cidr,omitempty"` - // This field is deprecated, use services_ipv4_cidr_block. - ServicesIpv4Cidr string `protobuf:"bytes,6,opt,name=services_ipv4_cidr,json=servicesIpv4Cidr" json:"services_ipv4_cidr,omitempty"` - // The name of the secondary range to be used for the cluster CIDR - // block. The secondary range will be used for pod IP - // addresses. This must be an existing secondary range associated - // with the cluster subnetwork. - // - // This field is only applicable with use_ip_aliases is true and - // create_subnetwork is false. - ClusterSecondaryRangeName string `protobuf:"bytes,7,opt,name=cluster_secondary_range_name,json=clusterSecondaryRangeName" json:"cluster_secondary_range_name,omitempty"` - // The name of the secondary range to be used as for the services - // CIDR block. The secondary range will be used for service - // ClusterIPs. This must be an existing secondary range associated - // with the cluster subnetwork. - // - // This field is only applicable with use_ip_aliases is true and - // create_subnetwork is false. - ServicesSecondaryRangeName string `protobuf:"bytes,8,opt,name=services_secondary_range_name,json=servicesSecondaryRangeName" json:"services_secondary_range_name,omitempty"` - // The IP address range for the cluster pod IPs. If this field is set, then - // `cluster.cluster_ipv4_cidr` must be left blank. - // - // This field is only applicable when `use_ip_aliases` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - ClusterIpv4CidrBlock string `protobuf:"bytes,9,opt,name=cluster_ipv4_cidr_block,json=clusterIpv4CidrBlock" json:"cluster_ipv4_cidr_block,omitempty"` - // The IP address range of the instance IPs in this cluster. - // - // This is applicable only if `create_subnetwork` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - NodeIpv4CidrBlock string `protobuf:"bytes,10,opt,name=node_ipv4_cidr_block,json=nodeIpv4CidrBlock" json:"node_ipv4_cidr_block,omitempty"` - // The IP address range of the services IPs in this cluster. If blank, a range - // will be automatically chosen with the default size. - // - // This field is only applicable when `use_ip_aliases` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - ServicesIpv4CidrBlock string `protobuf:"bytes,11,opt,name=services_ipv4_cidr_block,json=servicesIpv4CidrBlock" json:"services_ipv4_cidr_block,omitempty"` -} - -func (m *IPAllocationPolicy) Reset() { *m = IPAllocationPolicy{} } -func (m *IPAllocationPolicy) String() string { return proto.CompactTextString(m) } -func (*IPAllocationPolicy) ProtoMessage() {} -func (*IPAllocationPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *IPAllocationPolicy) GetUseIpAliases() bool { - if m != nil { - return m.UseIpAliases - } - return false -} - -func (m *IPAllocationPolicy) GetCreateSubnetwork() bool { - if m != nil { - return m.CreateSubnetwork - } - return false -} - -func (m *IPAllocationPolicy) GetSubnetworkName() string { - if m != nil { - return m.SubnetworkName - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterIpv4Cidr() string { - if m != nil { - return m.ClusterIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetNodeIpv4Cidr() string { - if m != nil { - return m.NodeIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesIpv4Cidr() string { - if m != nil { - return m.ServicesIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterSecondaryRangeName() string { - if m != nil { - return m.ClusterSecondaryRangeName - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesSecondaryRangeName() string { - if m != nil { - return m.ServicesSecondaryRangeName - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterIpv4CidrBlock() string { - if m != nil { - return m.ClusterIpv4CidrBlock - } - return "" -} - -func (m *IPAllocationPolicy) GetNodeIpv4CidrBlock() string { - if m != nil { - return m.NodeIpv4CidrBlock - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesIpv4CidrBlock() string { - if m != nil { - return m.ServicesIpv4CidrBlock - } - return "" -} - -// A Google Container Engine cluster. -type Cluster struct { - // The name of this cluster. The name must be unique within this project - // and zone, and can be up to 40 characters with the following restrictions: - // - // * Lowercase letters, numbers, and hyphens only. - // * Must start with a letter. - // * Must end with a number or a letter. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // An optional description of this cluster. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // The number of nodes to create in this cluster. You must ensure that your - // Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a> - // is sufficient for this number of instances. You must also have available - // firewall and routes quota. - // For requests, this field should only be used in lieu of a - // "node_pool" object, since this configuration (along with the - // "node_config") will be used to create a "NodePool" object with an - // auto-generated name. Do not use this and a node_pool at the same time. - InitialNodeCount int32 `protobuf:"varint,3,opt,name=initial_node_count,json=initialNodeCount" json:"initial_node_count,omitempty"` - // Parameters used in creating the cluster's nodes. - // See `nodeConfig` for the description of its properties. - // For requests, this field should only be used in lieu of a - // "node_pool" object, since this configuration (along with the - // "initial_node_count") will be used to create a "NodePool" object with an - // auto-generated name. Do not use this and a node_pool at the same time. - // For responses, this field will be populated with the node configuration of - // the first node pool. - // - // If unspecified, the defaults are used. - NodeConfig *NodeConfig `protobuf:"bytes,4,opt,name=node_config,json=nodeConfig" json:"node_config,omitempty"` - // The authentication information for accessing the master endpoint. - MasterAuth *MasterAuth `protobuf:"bytes,5,opt,name=master_auth,json=masterAuth" json:"master_auth,omitempty"` - // The logging service the cluster should use to write logs. - // Currently available options: - // - // * `logging.googleapis.com` - the Google Cloud Logging service. - // * `none` - no logs will be exported from the cluster. - // * if left as an empty string,`logging.googleapis.com` will be used. - LoggingService string `protobuf:"bytes,6,opt,name=logging_service,json=loggingService" json:"logging_service,omitempty"` - // The monitoring service the cluster should use to write metrics. - // Currently available options: - // - // * `monitoring.googleapis.com` - the Google Cloud Monitoring service. - // * `none` - no metrics will be exported from the cluster. - // * if left as an empty string, `monitoring.googleapis.com` will be used. - MonitoringService string `protobuf:"bytes,7,opt,name=monitoring_service,json=monitoringService" json:"monitoring_service,omitempty"` - // The name of the Google Compute Engine - // [network](/compute/docs/networks-and-firewalls#networks) to which the - // cluster is connected. If left unspecified, the `default` network - // will be used. - Network string `protobuf:"bytes,8,opt,name=network" json:"network,omitempty"` - // The IP address range of the container pods in this cluster, in - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`). Leave blank to have - // one automatically chosen or specify a `/14` block in `10.0.0.0/8`. - ClusterIpv4Cidr string `protobuf:"bytes,9,opt,name=cluster_ipv4_cidr,json=clusterIpv4Cidr" json:"cluster_ipv4_cidr,omitempty"` - // Configurations for the various addons available to run in the cluster. - AddonsConfig *AddonsConfig `protobuf:"bytes,10,opt,name=addons_config,json=addonsConfig" json:"addons_config,omitempty"` - // The name of the Google Compute Engine - // [subnetwork](/compute/docs/subnetworks) to which the - // cluster is connected. - Subnetwork string `protobuf:"bytes,11,opt,name=subnetwork" json:"subnetwork,omitempty"` - // The node pools associated with this cluster. - // This field should not be set if "node_config" or "initial_node_count" are - // specified. - NodePools []*NodePool `protobuf:"bytes,12,rep,name=node_pools,json=nodePools" json:"node_pools,omitempty"` - // The list of Google Compute Engine - // [locations](/compute/docs/zones#available) in which the cluster's nodes - // should be located. - Locations []string `protobuf:"bytes,13,rep,name=locations" json:"locations,omitempty"` - // Kubernetes alpha features are enabled on this cluster. This includes alpha - // API groups (e.g. v1alpha1) and features that may not be production ready in - // the kubernetes version of the master and nodes. - // The cluster has no SLA for uptime and master/node upgrades are disabled. - // Alpha enabled clusters are automatically deleted thirty days after - // creation. - EnableKubernetesAlpha bool `protobuf:"varint,14,opt,name=enable_kubernetes_alpha,json=enableKubernetesAlpha" json:"enable_kubernetes_alpha,omitempty"` - // The resource labels for the cluster to use to annotate any related - // Google Compute Engine resources. - ResourceLabels map[string]string `protobuf:"bytes,15,rep,name=resource_labels,json=resourceLabels" json:"resource_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The fingerprint of the set of labels for this cluster. - LabelFingerprint string `protobuf:"bytes,16,opt,name=label_fingerprint,json=labelFingerprint" json:"label_fingerprint,omitempty"` - // Configuration for the legacy ABAC authorization mode. - LegacyAbac *LegacyAbac `protobuf:"bytes,18,opt,name=legacy_abac,json=legacyAbac" json:"legacy_abac,omitempty"` - // Configuration options for the NetworkPolicy feature. - NetworkPolicy *NetworkPolicy `protobuf:"bytes,19,opt,name=network_policy,json=networkPolicy" json:"network_policy,omitempty"` - // Configuration for cluster IP allocation. - IpAllocationPolicy *IPAllocationPolicy `protobuf:"bytes,20,opt,name=ip_allocation_policy,json=ipAllocationPolicy" json:"ip_allocation_policy,omitempty"` - // Master authorized networks is a Beta feature. - // The configuration options for master authorized networks feature. - MasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfig `protobuf:"bytes,22,opt,name=master_authorized_networks_config,json=masterAuthorizedNetworksConfig" json:"master_authorized_networks_config,omitempty"` - // Configure the maintenance policy for this cluster. - MaintenancePolicy *MaintenancePolicy `protobuf:"bytes,23,opt,name=maintenance_policy,json=maintenancePolicy" json:"maintenance_policy,omitempty"` - // [Output only] Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,100,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // [Output only] The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,101,opt,name=zone" json:"zone,omitempty"` - // [Output only] The IP address of this cluster's master endpoint. - // The endpoint can be accessed from the internet at - // `https://username:password@endpoint/`. - // - // See the `masterAuth` property of this resource for username and - // password information. - Endpoint string `protobuf:"bytes,102,opt,name=endpoint" json:"endpoint,omitempty"` - // The initial Kubernetes version for this cluster. Valid versions are those - // found in validMasterVersions returned by getServerConfig. The version can - // be upgraded over time; such upgrades are reflected in - // currentMasterVersion and currentNodeVersion. - InitialClusterVersion string `protobuf:"bytes,103,opt,name=initial_cluster_version,json=initialClusterVersion" json:"initial_cluster_version,omitempty"` - // [Output only] The current software version of the master endpoint. - CurrentMasterVersion string `protobuf:"bytes,104,opt,name=current_master_version,json=currentMasterVersion" json:"current_master_version,omitempty"` - // [Output only] The current version of the node software components. - // If they are currently at multiple versions because they're in the process - // of being upgraded, this reflects the minimum version of all nodes. - CurrentNodeVersion string `protobuf:"bytes,105,opt,name=current_node_version,json=currentNodeVersion" json:"current_node_version,omitempty"` - // [Output only] The time the cluster was created, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - CreateTime string `protobuf:"bytes,106,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // [Output only] The current status of this cluster. - Status Cluster_Status `protobuf:"varint,107,opt,name=status,enum=google.container.v1.Cluster_Status" json:"status,omitempty"` - // [Output only] Additional information about the current status of this - // cluster, if available. - StatusMessage string `protobuf:"bytes,108,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` - // [Output only] The size of the address space on each node for hosting - // containers. This is provisioned from within the `container_ipv4_cidr` - // range. - NodeIpv4CidrSize int32 `protobuf:"varint,109,opt,name=node_ipv4_cidr_size,json=nodeIpv4CidrSize" json:"node_ipv4_cidr_size,omitempty"` - // [Output only] The IP address range of the Kubernetes services in - // this cluster, in - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `1.2.3.4/29`). Service addresses are - // typically put in the last `/16` from the container CIDR. - ServicesIpv4Cidr string `protobuf:"bytes,110,opt,name=services_ipv4_cidr,json=servicesIpv4Cidr" json:"services_ipv4_cidr,omitempty"` - // Deprecated. Use node_pools.instance_group_urls. - InstanceGroupUrls []string `protobuf:"bytes,111,rep,name=instance_group_urls,json=instanceGroupUrls" json:"instance_group_urls,omitempty"` - // [Output only] The number of nodes currently in the cluster. - CurrentNodeCount int32 `protobuf:"varint,112,opt,name=current_node_count,json=currentNodeCount" json:"current_node_count,omitempty"` - // [Output only] The time the cluster will be automatically - // deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - ExpireTime string `protobuf:"bytes,113,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` -} - -func (m *Cluster) Reset() { *m = Cluster{} } -func (m *Cluster) String() string { return proto.CompactTextString(m) } -func (*Cluster) ProtoMessage() {} -func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *Cluster) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Cluster) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Cluster) GetInitialNodeCount() int32 { - if m != nil { - return m.InitialNodeCount - } - return 0 -} - -func (m *Cluster) GetNodeConfig() *NodeConfig { - if m != nil { - return m.NodeConfig - } - return nil -} - -func (m *Cluster) GetMasterAuth() *MasterAuth { - if m != nil { - return m.MasterAuth - } - return nil -} - -func (m *Cluster) GetLoggingService() string { - if m != nil { - return m.LoggingService - } - return "" -} - -func (m *Cluster) GetMonitoringService() string { - if m != nil { - return m.MonitoringService - } - return "" -} - -func (m *Cluster) GetNetwork() string { - if m != nil { - return m.Network - } - return "" -} - -func (m *Cluster) GetClusterIpv4Cidr() string { - if m != nil { - return m.ClusterIpv4Cidr - } - return "" -} - -func (m *Cluster) GetAddonsConfig() *AddonsConfig { - if m != nil { - return m.AddonsConfig - } - return nil -} - -func (m *Cluster) GetSubnetwork() string { - if m != nil { - return m.Subnetwork - } - return "" -} - -func (m *Cluster) GetNodePools() []*NodePool { - if m != nil { - return m.NodePools - } - return nil -} - -func (m *Cluster) GetLocations() []string { - if m != nil { - return m.Locations - } - return nil -} - -func (m *Cluster) GetEnableKubernetesAlpha() bool { - if m != nil { - return m.EnableKubernetesAlpha - } - return false -} - -func (m *Cluster) GetResourceLabels() map[string]string { - if m != nil { - return m.ResourceLabels - } - return nil -} - -func (m *Cluster) GetLabelFingerprint() string { - if m != nil { - return m.LabelFingerprint - } - return "" -} - -func (m *Cluster) GetLegacyAbac() *LegacyAbac { - if m != nil { - return m.LegacyAbac - } - return nil -} - -func (m *Cluster) GetNetworkPolicy() *NetworkPolicy { - if m != nil { - return m.NetworkPolicy - } - return nil -} - -func (m *Cluster) GetIpAllocationPolicy() *IPAllocationPolicy { - if m != nil { - return m.IpAllocationPolicy - } - return nil -} - -func (m *Cluster) GetMasterAuthorizedNetworksConfig() *MasterAuthorizedNetworksConfig { - if m != nil { - return m.MasterAuthorizedNetworksConfig - } - return nil -} - -func (m *Cluster) GetMaintenancePolicy() *MaintenancePolicy { - if m != nil { - return m.MaintenancePolicy - } - return nil -} - -func (m *Cluster) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *Cluster) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *Cluster) GetEndpoint() string { - if m != nil { - return m.Endpoint - } - return "" -} - -func (m *Cluster) GetInitialClusterVersion() string { - if m != nil { - return m.InitialClusterVersion - } - return "" -} - -func (m *Cluster) GetCurrentMasterVersion() string { - if m != nil { - return m.CurrentMasterVersion - } - return "" -} - -func (m *Cluster) GetCurrentNodeVersion() string { - if m != nil { - return m.CurrentNodeVersion - } - return "" -} - -func (m *Cluster) GetCreateTime() string { - if m != nil { - return m.CreateTime - } - return "" -} - -func (m *Cluster) GetStatus() Cluster_Status { - if m != nil { - return m.Status - } - return Cluster_STATUS_UNSPECIFIED -} - -func (m *Cluster) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -func (m *Cluster) GetNodeIpv4CidrSize() int32 { - if m != nil { - return m.NodeIpv4CidrSize - } - return 0 -} - -func (m *Cluster) GetServicesIpv4Cidr() string { - if m != nil { - return m.ServicesIpv4Cidr - } - return "" -} - -func (m *Cluster) GetInstanceGroupUrls() []string { - if m != nil { - return m.InstanceGroupUrls - } - return nil -} - -func (m *Cluster) GetCurrentNodeCount() int32 { - if m != nil { - return m.CurrentNodeCount - } - return 0 -} - -func (m *Cluster) GetExpireTime() string { - if m != nil { - return m.ExpireTime - } - return "" -} - -// ClusterUpdate describes an update to the cluster. Exactly one update can -// be applied to a cluster with each request, so at most one field can be -// provided. -type ClusterUpdate struct { - // The Kubernetes version to change the nodes to (typically an - // upgrade). Use `-` to upgrade to the latest version supported by - // the server. - DesiredNodeVersion string `protobuf:"bytes,4,opt,name=desired_node_version,json=desiredNodeVersion" json:"desired_node_version,omitempty"` - // The monitoring service the cluster should use to write metrics. - // Currently available options: - // - // * "monitoring.googleapis.com" - the Google Cloud Monitoring service - // * "none" - no metrics will be exported from the cluster - DesiredMonitoringService string `protobuf:"bytes,5,opt,name=desired_monitoring_service,json=desiredMonitoringService" json:"desired_monitoring_service,omitempty"` - // Configurations for the various addons available to run in the cluster. - DesiredAddonsConfig *AddonsConfig `protobuf:"bytes,6,opt,name=desired_addons_config,json=desiredAddonsConfig" json:"desired_addons_config,omitempty"` - // The node pool to be upgraded. This field is mandatory if - // "desired_node_version", "desired_image_family" or - // "desired_node_pool_autoscaling" is specified and there is more than one - // node pool on the cluster. - DesiredNodePoolId string `protobuf:"bytes,7,opt,name=desired_node_pool_id,json=desiredNodePoolId" json:"desired_node_pool_id,omitempty"` - // The desired image type for the node pool. - // NOTE: Set the "desired_node_pool" field as well. - DesiredImageType string `protobuf:"bytes,8,opt,name=desired_image_type,json=desiredImageType" json:"desired_image_type,omitempty"` - // Autoscaler configuration for the node pool specified in - // desired_node_pool_id. If there is only one pool in the - // cluster and desired_node_pool_id is not provided then - // the change applies to that single node pool. - DesiredNodePoolAutoscaling *NodePoolAutoscaling `protobuf:"bytes,9,opt,name=desired_node_pool_autoscaling,json=desiredNodePoolAutoscaling" json:"desired_node_pool_autoscaling,omitempty"` - // The desired list of Google Compute Engine - // [locations](/compute/docs/zones#available) in which the cluster's nodes - // should be located. Changing the locations a cluster is in will result - // in nodes being either created or removed from the cluster, depending on - // whether locations are being added or removed. - // - // This list must always include the cluster's primary zone. - DesiredLocations []string `protobuf:"bytes,10,rep,name=desired_locations,json=desiredLocations" json:"desired_locations,omitempty"` - // Master authorized networks is a Beta feature. - // The desired configuration options for master authorized networks feature. - DesiredMasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfig `protobuf:"bytes,12,opt,name=desired_master_authorized_networks_config,json=desiredMasterAuthorizedNetworksConfig" json:"desired_master_authorized_networks_config,omitempty"` - // The Kubernetes version to change the master to. The only valid value is the - // latest supported version. Use "-" to have the server automatically select - // the latest version. - DesiredMasterVersion string `protobuf:"bytes,100,opt,name=desired_master_version,json=desiredMasterVersion" json:"desired_master_version,omitempty"` -} - -func (m *ClusterUpdate) Reset() { *m = ClusterUpdate{} } -func (m *ClusterUpdate) String() string { return proto.CompactTextString(m) } -func (*ClusterUpdate) ProtoMessage() {} -func (*ClusterUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *ClusterUpdate) GetDesiredNodeVersion() string { - if m != nil { - return m.DesiredNodeVersion - } - return "" -} - -func (m *ClusterUpdate) GetDesiredMonitoringService() string { - if m != nil { - return m.DesiredMonitoringService - } - return "" -} - -func (m *ClusterUpdate) GetDesiredAddonsConfig() *AddonsConfig { - if m != nil { - return m.DesiredAddonsConfig - } - return nil -} - -func (m *ClusterUpdate) GetDesiredNodePoolId() string { - if m != nil { - return m.DesiredNodePoolId - } - return "" -} - -func (m *ClusterUpdate) GetDesiredImageType() string { - if m != nil { - return m.DesiredImageType - } - return "" -} - -func (m *ClusterUpdate) GetDesiredNodePoolAutoscaling() *NodePoolAutoscaling { - if m != nil { - return m.DesiredNodePoolAutoscaling - } - return nil -} - -func (m *ClusterUpdate) GetDesiredLocations() []string { - if m != nil { - return m.DesiredLocations - } - return nil -} - -func (m *ClusterUpdate) GetDesiredMasterAuthorizedNetworksConfig() *MasterAuthorizedNetworksConfig { - if m != nil { - return m.DesiredMasterAuthorizedNetworksConfig - } - return nil -} - -func (m *ClusterUpdate) GetDesiredMasterVersion() string { - if m != nil { - return m.DesiredMasterVersion - } - return "" -} - -// This operation resource represents operations that may have happened or are -// happening on the cluster. All fields are output only. -type Operation struct { - // The server-assigned ID for the operation. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the operation - // is taking place. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The operation type. - OperationType Operation_Type `protobuf:"varint,3,opt,name=operation_type,json=operationType,enum=google.container.v1.Operation_Type" json:"operation_type,omitempty"` - // The current status of the operation. - Status Operation_Status `protobuf:"varint,4,opt,name=status,enum=google.container.v1.Operation_Status" json:"status,omitempty"` - // Detailed operation progress, if available. - Detail string `protobuf:"bytes,8,opt,name=detail" json:"detail,omitempty"` - // If an error has occurred, a textual description of the error. - StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` - // Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,6,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // Server-defined URL for the target of the operation. - TargetLink string `protobuf:"bytes,7,opt,name=target_link,json=targetLink" json:"target_link,omitempty"` - // [Output only] The time the operation started, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - StartTime string `protobuf:"bytes,10,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // [Output only] The time the operation completed, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - EndTime string `protobuf:"bytes,11,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *Operation) Reset() { *m = Operation{} } -func (m *Operation) String() string { return proto.CompactTextString(m) } -func (*Operation) ProtoMessage() {} -func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *Operation) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Operation) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *Operation) GetOperationType() Operation_Type { - if m != nil { - return m.OperationType - } - return Operation_TYPE_UNSPECIFIED -} - -func (m *Operation) GetStatus() Operation_Status { - if m != nil { - return m.Status - } - return Operation_STATUS_UNSPECIFIED -} - -func (m *Operation) GetDetail() string { - if m != nil { - return m.Detail - } - return "" -} - -func (m *Operation) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -func (m *Operation) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *Operation) GetTargetLink() string { - if m != nil { - return m.TargetLink - } - return "" -} - -func (m *Operation) GetStartTime() string { - if m != nil { - return m.StartTime - } - return "" -} - -func (m *Operation) GetEndTime() string { - if m != nil { - return m.EndTime - } - return "" -} - -// CreateClusterRequest creates a cluster. -type CreateClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // A [cluster - // resource](/container-engine/reference/rest/v1/projects.zones.clusters) - Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"` -} - -func (m *CreateClusterRequest) Reset() { *m = CreateClusterRequest{} } -func (m *CreateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*CreateClusterRequest) ProtoMessage() {} -func (*CreateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *CreateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CreateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -// GetClusterRequest gets the settings of a cluster. -type GetClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to retrieve. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` -} - -func (m *GetClusterRequest) Reset() { *m = GetClusterRequest{} } -func (m *GetClusterRequest) String() string { return proto.CompactTextString(m) } -func (*GetClusterRequest) ProtoMessage() {} -func (*GetClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *GetClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -// UpdateClusterRequest updates the settings of a cluster. -type UpdateClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // A description of the update. - Update *ClusterUpdate `protobuf:"bytes,4,opt,name=update" json:"update,omitempty"` -} - -func (m *UpdateClusterRequest) Reset() { *m = UpdateClusterRequest{} } -func (m *UpdateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateClusterRequest) ProtoMessage() {} -func (*UpdateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *UpdateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *UpdateClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *UpdateClusterRequest) GetUpdate() *ClusterUpdate { - if m != nil { - return m.Update - } - return nil -} - -// UpdateNodePoolRequests update a node pool's image and/or version. -type UpdateNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to upgrade. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The Kubernetes version to change the nodes to (typically an - // upgrade). Use `-` to upgrade to the latest version supported by - // the server. - NodeVersion string `protobuf:"bytes,5,opt,name=node_version,json=nodeVersion" json:"node_version,omitempty"` - // The desired image type for the node pool. - ImageType string `protobuf:"bytes,6,opt,name=image_type,json=imageType" json:"image_type,omitempty"` -} - -func (m *UpdateNodePoolRequest) Reset() { *m = UpdateNodePoolRequest{} } -func (m *UpdateNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateNodePoolRequest) ProtoMessage() {} -func (*UpdateNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *UpdateNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *UpdateNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *UpdateNodePoolRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *UpdateNodePoolRequest) GetNodeVersion() string { - if m != nil { - return m.NodeVersion - } - return "" -} - -func (m *UpdateNodePoolRequest) GetImageType() string { - if m != nil { - return m.ImageType - } - return "" -} - -// SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool. -type SetNodePoolAutoscalingRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to upgrade. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // Autoscaling configuration for the node pool. - Autoscaling *NodePoolAutoscaling `protobuf:"bytes,5,opt,name=autoscaling" json:"autoscaling,omitempty"` -} - -func (m *SetNodePoolAutoscalingRequest) Reset() { *m = SetNodePoolAutoscalingRequest{} } -func (m *SetNodePoolAutoscalingRequest) String() string { return proto.CompactTextString(m) } -func (*SetNodePoolAutoscalingRequest) ProtoMessage() {} -func (*SetNodePoolAutoscalingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *SetNodePoolAutoscalingRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNodePoolAutoscalingRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNodePoolAutoscalingRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNodePoolAutoscalingRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *SetNodePoolAutoscalingRequest) GetAutoscaling() *NodePoolAutoscaling { - if m != nil { - return m.Autoscaling - } - return nil -} - -// SetLoggingServiceRequest sets the logging service of a cluster. -type SetLoggingServiceRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The logging service the cluster should use to write metrics. - // Currently available options: - // - // * "logging.googleapis.com" - the Google Cloud Logging service - // * "none" - no metrics will be exported from the cluster - LoggingService string `protobuf:"bytes,4,opt,name=logging_service,json=loggingService" json:"logging_service,omitempty"` -} - -func (m *SetLoggingServiceRequest) Reset() { *m = SetLoggingServiceRequest{} } -func (m *SetLoggingServiceRequest) String() string { return proto.CompactTextString(m) } -func (*SetLoggingServiceRequest) ProtoMessage() {} -func (*SetLoggingServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *SetLoggingServiceRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLoggingServiceRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLoggingServiceRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLoggingServiceRequest) GetLoggingService() string { - if m != nil { - return m.LoggingService - } - return "" -} - -// SetMonitoringServiceRequest sets the monitoring service of a cluster. -type SetMonitoringServiceRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The monitoring service the cluster should use to write metrics. - // Currently available options: - // - // * "monitoring.googleapis.com" - the Google Cloud Monitoring service - // * "none" - no metrics will be exported from the cluster - MonitoringService string `protobuf:"bytes,4,opt,name=monitoring_service,json=monitoringService" json:"monitoring_service,omitempty"` -} - -func (m *SetMonitoringServiceRequest) Reset() { *m = SetMonitoringServiceRequest{} } -func (m *SetMonitoringServiceRequest) String() string { return proto.CompactTextString(m) } -func (*SetMonitoringServiceRequest) ProtoMessage() {} -func (*SetMonitoringServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *SetMonitoringServiceRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetMonitoringServiceRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetMonitoringServiceRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetMonitoringServiceRequest) GetMonitoringService() string { - if m != nil { - return m.MonitoringService - } - return "" -} - -// SetAddonsConfigRequest sets the addons associated with the cluster. -type SetAddonsConfigRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The desired configurations for the various addons available to run in the - // cluster. - AddonsConfig *AddonsConfig `protobuf:"bytes,4,opt,name=addons_config,json=addonsConfig" json:"addons_config,omitempty"` -} - -func (m *SetAddonsConfigRequest) Reset() { *m = SetAddonsConfigRequest{} } -func (m *SetAddonsConfigRequest) String() string { return proto.CompactTextString(m) } -func (*SetAddonsConfigRequest) ProtoMessage() {} -func (*SetAddonsConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *SetAddonsConfigRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetAddonsConfigRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetAddonsConfigRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetAddonsConfigRequest) GetAddonsConfig() *AddonsConfig { - if m != nil { - return m.AddonsConfig - } - return nil -} - -// SetLocationsRequest sets the locations of the cluster. -type SetLocationsRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The desired list of Google Compute Engine - // [locations](/compute/docs/zones#available) in which the cluster's nodes - // should be located. Changing the locations a cluster is in will result - // in nodes being either created or removed from the cluster, depending on - // whether locations are being added or removed. - // - // This list must always include the cluster's primary zone. - Locations []string `protobuf:"bytes,4,rep,name=locations" json:"locations,omitempty"` -} - -func (m *SetLocationsRequest) Reset() { *m = SetLocationsRequest{} } -func (m *SetLocationsRequest) String() string { return proto.CompactTextString(m) } -func (*SetLocationsRequest) ProtoMessage() {} -func (*SetLocationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *SetLocationsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLocationsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLocationsRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLocationsRequest) GetLocations() []string { - if m != nil { - return m.Locations - } - return nil -} - -// UpdateMasterRequest updates the master of the cluster. -type UpdateMasterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The Kubernetes version to change the master to. The only valid value is the - // latest supported version. Use "-" to have the server automatically select - // the latest version. - MasterVersion string `protobuf:"bytes,4,opt,name=master_version,json=masterVersion" json:"master_version,omitempty"` -} - -func (m *UpdateMasterRequest) Reset() { *m = UpdateMasterRequest{} } -func (m *UpdateMasterRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateMasterRequest) ProtoMessage() {} -func (*UpdateMasterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *UpdateMasterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateMasterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *UpdateMasterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *UpdateMasterRequest) GetMasterVersion() string { - if m != nil { - return m.MasterVersion - } - return "" -} - -// SetMasterAuthRequest updates the admin password of a cluster. -type SetMasterAuthRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The exact form of action to be taken on the master auth. - Action SetMasterAuthRequest_Action `protobuf:"varint,4,opt,name=action,enum=google.container.v1.SetMasterAuthRequest_Action" json:"action,omitempty"` - // A description of the update. - Update *MasterAuth `protobuf:"bytes,5,opt,name=update" json:"update,omitempty"` -} - -func (m *SetMasterAuthRequest) Reset() { *m = SetMasterAuthRequest{} } -func (m *SetMasterAuthRequest) String() string { return proto.CompactTextString(m) } -func (*SetMasterAuthRequest) ProtoMessage() {} -func (*SetMasterAuthRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *SetMasterAuthRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetMasterAuthRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetMasterAuthRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetMasterAuthRequest) GetAction() SetMasterAuthRequest_Action { - if m != nil { - return m.Action - } - return SetMasterAuthRequest_UNKNOWN -} - -func (m *SetMasterAuthRequest) GetUpdate() *MasterAuth { - if m != nil { - return m.Update - } - return nil -} - -// DeleteClusterRequest deletes a cluster. -type DeleteClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to delete. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` -} - -func (m *DeleteClusterRequest) Reset() { *m = DeleteClusterRequest{} } -func (m *DeleteClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteClusterRequest) ProtoMessage() {} -func (*DeleteClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *DeleteClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *DeleteClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -// ListClustersRequest lists clusters. -type ListClustersRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides, or "-" for all zones. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` -} - -func (m *ListClustersRequest) Reset() { *m = ListClustersRequest{} } -func (m *ListClustersRequest) String() string { return proto.CompactTextString(m) } -func (*ListClustersRequest) ProtoMessage() {} -func (*ListClustersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *ListClustersRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListClustersRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -// ListClustersResponse is the result of ListClustersRequest. -type ListClustersResponse struct { - // A list of clusters in the project in the specified zone, or - // across all ones. - Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters" json:"clusters,omitempty"` - // If any zones are listed here, the list of clusters returned - // may be missing those zones. - MissingZones []string `protobuf:"bytes,2,rep,name=missing_zones,json=missingZones" json:"missing_zones,omitempty"` -} - -func (m *ListClustersResponse) Reset() { *m = ListClustersResponse{} } -func (m *ListClustersResponse) String() string { return proto.CompactTextString(m) } -func (*ListClustersResponse) ProtoMessage() {} -func (*ListClustersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *ListClustersResponse) GetClusters() []*Cluster { - if m != nil { - return m.Clusters - } - return nil -} - -func (m *ListClustersResponse) GetMissingZones() []string { - if m != nil { - return m.MissingZones - } - return nil -} - -// GetOperationRequest gets a single operation. -type GetOperationRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The server-assigned `name` of the operation. - OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` -} - -func (m *GetOperationRequest) Reset() { *m = GetOperationRequest{} } -func (m *GetOperationRequest) String() string { return proto.CompactTextString(m) } -func (*GetOperationRequest) ProtoMessage() {} -func (*GetOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -func (m *GetOperationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetOperationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetOperationRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -// ListOperationsRequest lists operations. -type ListOperationsRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine [zone](/compute/docs/zones#available) - // to return operations for, or `-` for all zones. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` -} - -func (m *ListOperationsRequest) Reset() { *m = ListOperationsRequest{} } -func (m *ListOperationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListOperationsRequest) ProtoMessage() {} -func (*ListOperationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -func (m *ListOperationsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListOperationsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -// CancelOperationRequest cancels a single operation. -type CancelOperationRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the operation resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The server-assigned `name` of the operation. - OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` -} - -func (m *CancelOperationRequest) Reset() { *m = CancelOperationRequest{} } -func (m *CancelOperationRequest) String() string { return proto.CompactTextString(m) } -func (*CancelOperationRequest) ProtoMessage() {} -func (*CancelOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } - -func (m *CancelOperationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CancelOperationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CancelOperationRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -// ListOperationsResponse is the result of ListOperationsRequest. -type ListOperationsResponse struct { - // A list of operations in the project in the specified zone. - Operations []*Operation `protobuf:"bytes,1,rep,name=operations" json:"operations,omitempty"` - // If any zones are listed here, the list of operations returned - // may be missing the operations from those zones. - MissingZones []string `protobuf:"bytes,2,rep,name=missing_zones,json=missingZones" json:"missing_zones,omitempty"` -} - -func (m *ListOperationsResponse) Reset() { *m = ListOperationsResponse{} } -func (m *ListOperationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListOperationsResponse) ProtoMessage() {} -func (*ListOperationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } - -func (m *ListOperationsResponse) GetOperations() []*Operation { - if m != nil { - return m.Operations - } - return nil -} - -func (m *ListOperationsResponse) GetMissingZones() []string { - if m != nil { - return m.MissingZones - } - return nil -} - -// Gets the current Container Engine service configuration. -type GetServerConfigRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine [zone](/compute/docs/zones#available) - // to return operations for. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` -} - -func (m *GetServerConfigRequest) Reset() { *m = GetServerConfigRequest{} } -func (m *GetServerConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetServerConfigRequest) ProtoMessage() {} -func (*GetServerConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } - -func (m *GetServerConfigRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetServerConfigRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -// Container Engine service configuration. -type ServerConfig struct { - // Version of Kubernetes the service deploys by default. - DefaultClusterVersion string `protobuf:"bytes,1,opt,name=default_cluster_version,json=defaultClusterVersion" json:"default_cluster_version,omitempty"` - // List of valid node upgrade target versions. - ValidNodeVersions []string `protobuf:"bytes,3,rep,name=valid_node_versions,json=validNodeVersions" json:"valid_node_versions,omitempty"` - // Default image type. - DefaultImageType string `protobuf:"bytes,4,opt,name=default_image_type,json=defaultImageType" json:"default_image_type,omitempty"` - // List of valid image types. - ValidImageTypes []string `protobuf:"bytes,5,rep,name=valid_image_types,json=validImageTypes" json:"valid_image_types,omitempty"` - // List of valid master versions. - ValidMasterVersions []string `protobuf:"bytes,6,rep,name=valid_master_versions,json=validMasterVersions" json:"valid_master_versions,omitempty"` -} - -func (m *ServerConfig) Reset() { *m = ServerConfig{} } -func (m *ServerConfig) String() string { return proto.CompactTextString(m) } -func (*ServerConfig) ProtoMessage() {} -func (*ServerConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } - -func (m *ServerConfig) GetDefaultClusterVersion() string { - if m != nil { - return m.DefaultClusterVersion - } - return "" -} - -func (m *ServerConfig) GetValidNodeVersions() []string { - if m != nil { - return m.ValidNodeVersions - } - return nil -} - -func (m *ServerConfig) GetDefaultImageType() string { - if m != nil { - return m.DefaultImageType - } - return "" -} - -func (m *ServerConfig) GetValidImageTypes() []string { - if m != nil { - return m.ValidImageTypes - } - return nil -} - -func (m *ServerConfig) GetValidMasterVersions() []string { - if m != nil { - return m.ValidMasterVersions - } - return nil -} - -// CreateNodePoolRequest creates a node pool for a cluster. -type CreateNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The node pool to create. - NodePool *NodePool `protobuf:"bytes,4,opt,name=node_pool,json=nodePool" json:"node_pool,omitempty"` -} - -func (m *CreateNodePoolRequest) Reset() { *m = CreateNodePoolRequest{} } -func (m *CreateNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*CreateNodePoolRequest) ProtoMessage() {} -func (*CreateNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } - -func (m *CreateNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CreateNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *CreateNodePoolRequest) GetNodePool() *NodePool { - if m != nil { - return m.NodePool - } - return nil -} - -// DeleteNodePoolRequest deletes a node pool for a cluster. -type DeleteNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to delete. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` -} - -func (m *DeleteNodePoolRequest) Reset() { *m = DeleteNodePoolRequest{} } -func (m *DeleteNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteNodePoolRequest) ProtoMessage() {} -func (*DeleteNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } - -func (m *DeleteNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *DeleteNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *DeleteNodePoolRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -// ListNodePoolsRequest lists the node pool(s) for a cluster. -type ListNodePoolsRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` -} - -func (m *ListNodePoolsRequest) Reset() { *m = ListNodePoolsRequest{} } -func (m *ListNodePoolsRequest) String() string { return proto.CompactTextString(m) } -func (*ListNodePoolsRequest) ProtoMessage() {} -func (*ListNodePoolsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } - -func (m *ListNodePoolsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListNodePoolsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ListNodePoolsRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -// GetNodePoolRequest retrieves a node pool for a cluster. -type GetNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` -} - -func (m *GetNodePoolRequest) Reset() { *m = GetNodePoolRequest{} } -func (m *GetNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*GetNodePoolRequest) ProtoMessage() {} -func (*GetNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } - -func (m *GetNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *GetNodePoolRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -// NodePool contains the name and configuration for a cluster's node pool. -// Node pools are a set of nodes (i.e. VM's), with a common configuration and -// specification, under the control of the cluster master. They may have a set -// of Kubernetes labels applied to them, which may be used to reference them -// during pod scheduling. They may also be resized up or down, to accommodate -// the workload. -type NodePool struct { - // The name of the node pool. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The node configuration of the pool. - Config *NodeConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"` - // The initial node count for the pool. You must ensure that your - // Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a> - // is sufficient for this number of instances. You must also have available - // firewall and routes quota. - InitialNodeCount int32 `protobuf:"varint,3,opt,name=initial_node_count,json=initialNodeCount" json:"initial_node_count,omitempty"` - // [Output only] Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,100,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // The version of the Kubernetes of this node. - Version string `protobuf:"bytes,101,opt,name=version" json:"version,omitempty"` - // [Output only] The resource URLs of the [managed instance - // groups](/compute/docs/instance-groups/creating-groups-of-managed-instances) - // associated with this node pool. - InstanceGroupUrls []string `protobuf:"bytes,102,rep,name=instance_group_urls,json=instanceGroupUrls" json:"instance_group_urls,omitempty"` - // [Output only] The status of the nodes in this pool instance. - Status NodePool_Status `protobuf:"varint,103,opt,name=status,enum=google.container.v1.NodePool_Status" json:"status,omitempty"` - // [Output only] Additional information about the current status of this - // node pool instance, if available. - StatusMessage string `protobuf:"bytes,104,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` - // Autoscaler configuration for this NodePool. Autoscaler is enabled - // only if a valid configuration is present. - Autoscaling *NodePoolAutoscaling `protobuf:"bytes,4,opt,name=autoscaling" json:"autoscaling,omitempty"` - // NodeManagement configuration for this NodePool. - Management *NodeManagement `protobuf:"bytes,5,opt,name=management" json:"management,omitempty"` -} - -func (m *NodePool) Reset() { *m = NodePool{} } -func (m *NodePool) String() string { return proto.CompactTextString(m) } -func (*NodePool) ProtoMessage() {} -func (*NodePool) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } - -func (m *NodePool) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *NodePool) GetConfig() *NodeConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *NodePool) GetInitialNodeCount() int32 { - if m != nil { - return m.InitialNodeCount - } - return 0 -} - -func (m *NodePool) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *NodePool) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func (m *NodePool) GetInstanceGroupUrls() []string { - if m != nil { - return m.InstanceGroupUrls - } - return nil -} - -func (m *NodePool) GetStatus() NodePool_Status { - if m != nil { - return m.Status - } - return NodePool_STATUS_UNSPECIFIED -} - -func (m *NodePool) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -func (m *NodePool) GetAutoscaling() *NodePoolAutoscaling { - if m != nil { - return m.Autoscaling - } - return nil -} - -func (m *NodePool) GetManagement() *NodeManagement { - if m != nil { - return m.Management - } - return nil -} - -// NodeManagement defines the set of node management services turned on for the -// node pool. -type NodeManagement struct { - // A flag that specifies whether node auto-upgrade is enabled for the node - // pool. If enabled, node auto-upgrade helps keep the nodes in your node pool - // up to date with the latest release version of Kubernetes. - AutoUpgrade bool `protobuf:"varint,1,opt,name=auto_upgrade,json=autoUpgrade" json:"auto_upgrade,omitempty"` - // A flag that specifies whether the node auto-repair is enabled for the node - // pool. If enabled, the nodes in this node pool will be monitored and, if - // they fail health checks too many times, an automatic repair action will be - // triggered. - AutoRepair bool `protobuf:"varint,2,opt,name=auto_repair,json=autoRepair" json:"auto_repair,omitempty"` - // Specifies the Auto Upgrade knobs for the node pool. - UpgradeOptions *AutoUpgradeOptions `protobuf:"bytes,10,opt,name=upgrade_options,json=upgradeOptions" json:"upgrade_options,omitempty"` -} - -func (m *NodeManagement) Reset() { *m = NodeManagement{} } -func (m *NodeManagement) String() string { return proto.CompactTextString(m) } -func (*NodeManagement) ProtoMessage() {} -func (*NodeManagement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } - -func (m *NodeManagement) GetAutoUpgrade() bool { - if m != nil { - return m.AutoUpgrade - } - return false -} - -func (m *NodeManagement) GetAutoRepair() bool { - if m != nil { - return m.AutoRepair - } - return false -} - -func (m *NodeManagement) GetUpgradeOptions() *AutoUpgradeOptions { - if m != nil { - return m.UpgradeOptions - } - return nil -} - -// AutoUpgradeOptions defines the set of options for the user to control how -// the Auto Upgrades will proceed. -type AutoUpgradeOptions struct { - // [Output only] This field is set when upgrades are about to commence - // with the approximate start time for the upgrades, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - AutoUpgradeStartTime string `protobuf:"bytes,1,opt,name=auto_upgrade_start_time,json=autoUpgradeStartTime" json:"auto_upgrade_start_time,omitempty"` - // [Output only] This field is set when upgrades are about to commence - // with the description of the upgrade. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *AutoUpgradeOptions) Reset() { *m = AutoUpgradeOptions{} } -func (m *AutoUpgradeOptions) String() string { return proto.CompactTextString(m) } -func (*AutoUpgradeOptions) ProtoMessage() {} -func (*AutoUpgradeOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } - -func (m *AutoUpgradeOptions) GetAutoUpgradeStartTime() string { - if m != nil { - return m.AutoUpgradeStartTime - } - return "" -} - -func (m *AutoUpgradeOptions) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// MaintenancePolicy defines the maintenance policy to be used for the cluster. -type MaintenancePolicy struct { - // Specifies the maintenance window in which maintenance may be performed. - Window *MaintenanceWindow `protobuf:"bytes,1,opt,name=window" json:"window,omitempty"` -} - -func (m *MaintenancePolicy) Reset() { *m = MaintenancePolicy{} } -func (m *MaintenancePolicy) String() string { return proto.CompactTextString(m) } -func (*MaintenancePolicy) ProtoMessage() {} -func (*MaintenancePolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } - -func (m *MaintenancePolicy) GetWindow() *MaintenanceWindow { - if m != nil { - return m.Window - } - return nil -} - -// MaintenanceWindow defines the maintenance window to be used for the cluster. -type MaintenanceWindow struct { - // Types that are valid to be assigned to Policy: - // *MaintenanceWindow_DailyMaintenanceWindow - Policy isMaintenanceWindow_Policy `protobuf_oneof:"policy"` -} - -func (m *MaintenanceWindow) Reset() { *m = MaintenanceWindow{} } -func (m *MaintenanceWindow) String() string { return proto.CompactTextString(m) } -func (*MaintenanceWindow) ProtoMessage() {} -func (*MaintenanceWindow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } - -type isMaintenanceWindow_Policy interface { - isMaintenanceWindow_Policy() -} - -type MaintenanceWindow_DailyMaintenanceWindow struct { - DailyMaintenanceWindow *DailyMaintenanceWindow `protobuf:"bytes,2,opt,name=daily_maintenance_window,json=dailyMaintenanceWindow,oneof"` -} - -func (*MaintenanceWindow_DailyMaintenanceWindow) isMaintenanceWindow_Policy() {} - -func (m *MaintenanceWindow) GetPolicy() isMaintenanceWindow_Policy { - if m != nil { - return m.Policy - } - return nil -} - -func (m *MaintenanceWindow) GetDailyMaintenanceWindow() *DailyMaintenanceWindow { - if x, ok := m.GetPolicy().(*MaintenanceWindow_DailyMaintenanceWindow); ok { - return x.DailyMaintenanceWindow - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*MaintenanceWindow) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _MaintenanceWindow_OneofMarshaler, _MaintenanceWindow_OneofUnmarshaler, _MaintenanceWindow_OneofSizer, []interface{}{ - (*MaintenanceWindow_DailyMaintenanceWindow)(nil), - } -} - -func _MaintenanceWindow_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*MaintenanceWindow) - // policy - switch x := m.Policy.(type) { - case *MaintenanceWindow_DailyMaintenanceWindow: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DailyMaintenanceWindow); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("MaintenanceWindow.Policy has unexpected type %T", x) - } - return nil -} - -func _MaintenanceWindow_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*MaintenanceWindow) - switch tag { - case 2: // policy.daily_maintenance_window - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DailyMaintenanceWindow) - err := b.DecodeMessage(msg) - m.Policy = &MaintenanceWindow_DailyMaintenanceWindow{msg} - return true, err - default: - return false, nil - } -} - -func _MaintenanceWindow_OneofSizer(msg proto.Message) (n int) { - m := msg.(*MaintenanceWindow) - // policy - switch x := m.Policy.(type) { - case *MaintenanceWindow_DailyMaintenanceWindow: - s := proto.Size(x.DailyMaintenanceWindow) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Time window specified for daily maintenance operations. -type DailyMaintenanceWindow struct { - // Time within the maintenance window to start the maintenance operations. - // Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) - // format "HH:MM”, where HH : [00-23] and MM : [00-59] GMT. - StartTime string `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // [Output only] Duration of the time window, automatically chosen to be - // smallest possible in the given scenario. - // Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) - // format "PTnHnMnS". - Duration string `protobuf:"bytes,3,opt,name=duration" json:"duration,omitempty"` -} - -func (m *DailyMaintenanceWindow) Reset() { *m = DailyMaintenanceWindow{} } -func (m *DailyMaintenanceWindow) String() string { return proto.CompactTextString(m) } -func (*DailyMaintenanceWindow) ProtoMessage() {} -func (*DailyMaintenanceWindow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } - -func (m *DailyMaintenanceWindow) GetStartTime() string { - if m != nil { - return m.StartTime - } - return "" -} - -func (m *DailyMaintenanceWindow) GetDuration() string { - if m != nil { - return m.Duration - } - return "" -} - -// SetNodePoolManagementRequest sets the node management properties of a node -// pool. -type SetNodePoolManagementRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to update. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // NodeManagement configuration for the node pool. - Management *NodeManagement `protobuf:"bytes,5,opt,name=management" json:"management,omitempty"` -} - -func (m *SetNodePoolManagementRequest) Reset() { *m = SetNodePoolManagementRequest{} } -func (m *SetNodePoolManagementRequest) String() string { return proto.CompactTextString(m) } -func (*SetNodePoolManagementRequest) ProtoMessage() {} -func (*SetNodePoolManagementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } - -func (m *SetNodePoolManagementRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetManagement() *NodeManagement { - if m != nil { - return m.Management - } - return nil -} - -// SetNodePoolSizeRequest sets the size a node -// pool. -type SetNodePoolSizeRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to update. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The desired node count for the pool. - NodeCount int32 `protobuf:"varint,5,opt,name=node_count,json=nodeCount" json:"node_count,omitempty"` -} - -func (m *SetNodePoolSizeRequest) Reset() { *m = SetNodePoolSizeRequest{} } -func (m *SetNodePoolSizeRequest) String() string { return proto.CompactTextString(m) } -func (*SetNodePoolSizeRequest) ProtoMessage() {} -func (*SetNodePoolSizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } - -func (m *SetNodePoolSizeRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNodePoolSizeRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNodePoolSizeRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNodePoolSizeRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *SetNodePoolSizeRequest) GetNodeCount() int32 { - if m != nil { - return m.NodeCount - } - return 0 -} - -// RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed -// NodePool upgrade. This will be an no-op if the last upgrade successfully -// completed. -type RollbackNodePoolUpgradeRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to rollback. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to rollback. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` -} - -func (m *RollbackNodePoolUpgradeRequest) Reset() { *m = RollbackNodePoolUpgradeRequest{} } -func (m *RollbackNodePoolUpgradeRequest) String() string { return proto.CompactTextString(m) } -func (*RollbackNodePoolUpgradeRequest) ProtoMessage() {} -func (*RollbackNodePoolUpgradeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } - -func (m *RollbackNodePoolUpgradeRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -// ListNodePoolsResponse is the result of ListNodePoolsRequest. -type ListNodePoolsResponse struct { - // A list of node pools for a cluster. - NodePools []*NodePool `protobuf:"bytes,1,rep,name=node_pools,json=nodePools" json:"node_pools,omitempty"` -} - -func (m *ListNodePoolsResponse) Reset() { *m = ListNodePoolsResponse{} } -func (m *ListNodePoolsResponse) String() string { return proto.CompactTextString(m) } -func (*ListNodePoolsResponse) ProtoMessage() {} -func (*ListNodePoolsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } - -func (m *ListNodePoolsResponse) GetNodePools() []*NodePool { - if m != nil { - return m.NodePools - } - return nil -} - -// NodePoolAutoscaling contains information required by cluster autoscaler to -// adjust the size of the node pool to the current cluster usage. -type NodePoolAutoscaling struct { - // Is autoscaling enabled for this node pool. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` - // Minimum number of nodes in the NodePool. Must be >= 1 and <= - // max_node_count. - MinNodeCount int32 `protobuf:"varint,2,opt,name=min_node_count,json=minNodeCount" json:"min_node_count,omitempty"` - // Maximum number of nodes in the NodePool. Must be >= min_node_count. There - // has to enough quota to scale up the cluster. - MaxNodeCount int32 `protobuf:"varint,3,opt,name=max_node_count,json=maxNodeCount" json:"max_node_count,omitempty"` -} - -func (m *NodePoolAutoscaling) Reset() { *m = NodePoolAutoscaling{} } -func (m *NodePoolAutoscaling) String() string { return proto.CompactTextString(m) } -func (*NodePoolAutoscaling) ProtoMessage() {} -func (*NodePoolAutoscaling) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } - -func (m *NodePoolAutoscaling) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *NodePoolAutoscaling) GetMinNodeCount() int32 { - if m != nil { - return m.MinNodeCount - } - return 0 -} - -func (m *NodePoolAutoscaling) GetMaxNodeCount() int32 { - if m != nil { - return m.MaxNodeCount - } - return 0 -} - -// SetLabelsRequest sets the Google Cloud Platform labels on a Google Container -// Engine cluster, which will in turn set them for Google Compute Engine -// resources used by that cluster -type SetLabelsRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The labels to set for that cluster. - ResourceLabels map[string]string `protobuf:"bytes,4,rep,name=resource_labels,json=resourceLabels" json:"resource_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The fingerprint of the previous set of labels for this resource, - // used to detect conflicts. The fingerprint is initially generated by - // Container Engine and changes after every request to modify or update - // labels. You must always provide an up-to-date fingerprint hash when - // updating or changing labels. Make a <code>get()</code> request to the - // resource to get the latest fingerprint. - LabelFingerprint string `protobuf:"bytes,5,opt,name=label_fingerprint,json=labelFingerprint" json:"label_fingerprint,omitempty"` -} - -func (m *SetLabelsRequest) Reset() { *m = SetLabelsRequest{} } -func (m *SetLabelsRequest) String() string { return proto.CompactTextString(m) } -func (*SetLabelsRequest) ProtoMessage() {} -func (*SetLabelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } - -func (m *SetLabelsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLabelsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLabelsRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLabelsRequest) GetResourceLabels() map[string]string { - if m != nil { - return m.ResourceLabels - } - return nil -} - -func (m *SetLabelsRequest) GetLabelFingerprint() string { - if m != nil { - return m.LabelFingerprint - } - return "" -} - -// SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for -// a cluster. -type SetLegacyAbacRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // Whether ABAC authorization will be enabled in the cluster. - Enabled bool `protobuf:"varint,4,opt,name=enabled" json:"enabled,omitempty"` -} - -func (m *SetLegacyAbacRequest) Reset() { *m = SetLegacyAbacRequest{} } -func (m *SetLegacyAbacRequest) String() string { return proto.CompactTextString(m) } -func (*SetLegacyAbacRequest) ProtoMessage() {} -func (*SetLegacyAbacRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } - -func (m *SetLegacyAbacRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLegacyAbacRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLegacyAbacRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLegacyAbacRequest) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -// StartIPRotationRequest creates a new IP for the cluster and then performs -// a node upgrade on each node pool to point to the new IP. -type StartIPRotationRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` -} - -func (m *StartIPRotationRequest) Reset() { *m = StartIPRotationRequest{} } -func (m *StartIPRotationRequest) String() string { return proto.CompactTextString(m) } -func (*StartIPRotationRequest) ProtoMessage() {} -func (*StartIPRotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } - -func (m *StartIPRotationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *StartIPRotationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *StartIPRotationRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -// CompleteIPRotationRequest moves the cluster master back into single-IP mode. -type CompleteIPRotationRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` -} - -func (m *CompleteIPRotationRequest) Reset() { *m = CompleteIPRotationRequest{} } -func (m *CompleteIPRotationRequest) String() string { return proto.CompactTextString(m) } -func (*CompleteIPRotationRequest) ProtoMessage() {} -func (*CompleteIPRotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } - -func (m *CompleteIPRotationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CompleteIPRotationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CompleteIPRotationRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -// AcceleratorConfig represents a Hardware Accelerator request. -type AcceleratorConfig struct { - // The number of the accelerator cards exposed to an instance. - AcceleratorCount int64 `protobuf:"varint,1,opt,name=accelerator_count,json=acceleratorCount" json:"accelerator_count,omitempty"` - // The accelerator type resource name. List of supported accelerators - // [here](/compute/docs/gpus/#Introduction) - AcceleratorType string `protobuf:"bytes,2,opt,name=accelerator_type,json=acceleratorType" json:"accelerator_type,omitempty"` -} - -func (m *AcceleratorConfig) Reset() { *m = AcceleratorConfig{} } -func (m *AcceleratorConfig) String() string { return proto.CompactTextString(m) } -func (*AcceleratorConfig) ProtoMessage() {} -func (*AcceleratorConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } - -func (m *AcceleratorConfig) GetAcceleratorCount() int64 { - if m != nil { - return m.AcceleratorCount - } - return 0 -} - -func (m *AcceleratorConfig) GetAcceleratorType() string { - if m != nil { - return m.AcceleratorType - } - return "" -} - -// SetNetworkPolicyRequest enables/disables network policy for a cluster. -type SetNetworkPolicyRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // Configuration options for the NetworkPolicy feature. - NetworkPolicy *NetworkPolicy `protobuf:"bytes,4,opt,name=network_policy,json=networkPolicy" json:"network_policy,omitempty"` -} - -func (m *SetNetworkPolicyRequest) Reset() { *m = SetNetworkPolicyRequest{} } -func (m *SetNetworkPolicyRequest) String() string { return proto.CompactTextString(m) } -func (*SetNetworkPolicyRequest) ProtoMessage() {} -func (*SetNetworkPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } - -func (m *SetNetworkPolicyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetNetworkPolicy() *NetworkPolicy { - if m != nil { - return m.NetworkPolicy - } - return nil -} - -// SetMaintenancePolicyRequest sets the maintenance policy for a cluster. -type SetMaintenancePolicyRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The maintenance policy to be set for the cluster. An empty field - // clears the existing maintenance policy. - MaintenancePolicy *MaintenancePolicy `protobuf:"bytes,4,opt,name=maintenance_policy,json=maintenancePolicy" json:"maintenance_policy,omitempty"` -} - -func (m *SetMaintenancePolicyRequest) Reset() { *m = SetMaintenancePolicyRequest{} } -func (m *SetMaintenancePolicyRequest) String() string { return proto.CompactTextString(m) } -func (*SetMaintenancePolicyRequest) ProtoMessage() {} -func (*SetMaintenancePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } - -func (m *SetMaintenancePolicyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetMaintenancePolicy() *MaintenancePolicy { - if m != nil { - return m.MaintenancePolicy - } - return nil -} - -func init() { - proto.RegisterType((*NodeConfig)(nil), "google.container.v1.NodeConfig") - proto.RegisterType((*MasterAuth)(nil), "google.container.v1.MasterAuth") - proto.RegisterType((*ClientCertificateConfig)(nil), "google.container.v1.ClientCertificateConfig") - proto.RegisterType((*AddonsConfig)(nil), "google.container.v1.AddonsConfig") - proto.RegisterType((*HttpLoadBalancing)(nil), "google.container.v1.HttpLoadBalancing") - proto.RegisterType((*HorizontalPodAutoscaling)(nil), "google.container.v1.HorizontalPodAutoscaling") - proto.RegisterType((*KubernetesDashboard)(nil), "google.container.v1.KubernetesDashboard") - proto.RegisterType((*NetworkPolicyConfig)(nil), "google.container.v1.NetworkPolicyConfig") - proto.RegisterType((*MasterAuthorizedNetworksConfig)(nil), "google.container.v1.MasterAuthorizedNetworksConfig") - proto.RegisterType((*MasterAuthorizedNetworksConfig_CidrBlock)(nil), "google.container.v1.MasterAuthorizedNetworksConfig.CidrBlock") - proto.RegisterType((*LegacyAbac)(nil), "google.container.v1.LegacyAbac") - proto.RegisterType((*NetworkPolicy)(nil), "google.container.v1.NetworkPolicy") - proto.RegisterType((*IPAllocationPolicy)(nil), "google.container.v1.IPAllocationPolicy") - proto.RegisterType((*Cluster)(nil), "google.container.v1.Cluster") - proto.RegisterType((*ClusterUpdate)(nil), "google.container.v1.ClusterUpdate") - proto.RegisterType((*Operation)(nil), "google.container.v1.Operation") - proto.RegisterType((*CreateClusterRequest)(nil), "google.container.v1.CreateClusterRequest") - proto.RegisterType((*GetClusterRequest)(nil), "google.container.v1.GetClusterRequest") - proto.RegisterType((*UpdateClusterRequest)(nil), "google.container.v1.UpdateClusterRequest") - proto.RegisterType((*UpdateNodePoolRequest)(nil), "google.container.v1.UpdateNodePoolRequest") - proto.RegisterType((*SetNodePoolAutoscalingRequest)(nil), "google.container.v1.SetNodePoolAutoscalingRequest") - proto.RegisterType((*SetLoggingServiceRequest)(nil), "google.container.v1.SetLoggingServiceRequest") - proto.RegisterType((*SetMonitoringServiceRequest)(nil), "google.container.v1.SetMonitoringServiceRequest") - proto.RegisterType((*SetAddonsConfigRequest)(nil), "google.container.v1.SetAddonsConfigRequest") - proto.RegisterType((*SetLocationsRequest)(nil), "google.container.v1.SetLocationsRequest") - proto.RegisterType((*UpdateMasterRequest)(nil), "google.container.v1.UpdateMasterRequest") - proto.RegisterType((*SetMasterAuthRequest)(nil), "google.container.v1.SetMasterAuthRequest") - proto.RegisterType((*DeleteClusterRequest)(nil), "google.container.v1.DeleteClusterRequest") - proto.RegisterType((*ListClustersRequest)(nil), "google.container.v1.ListClustersRequest") - proto.RegisterType((*ListClustersResponse)(nil), "google.container.v1.ListClustersResponse") - proto.RegisterType((*GetOperationRequest)(nil), "google.container.v1.GetOperationRequest") - proto.RegisterType((*ListOperationsRequest)(nil), "google.container.v1.ListOperationsRequest") - proto.RegisterType((*CancelOperationRequest)(nil), "google.container.v1.CancelOperationRequest") - proto.RegisterType((*ListOperationsResponse)(nil), "google.container.v1.ListOperationsResponse") - proto.RegisterType((*GetServerConfigRequest)(nil), "google.container.v1.GetServerConfigRequest") - proto.RegisterType((*ServerConfig)(nil), "google.container.v1.ServerConfig") - proto.RegisterType((*CreateNodePoolRequest)(nil), "google.container.v1.CreateNodePoolRequest") - proto.RegisterType((*DeleteNodePoolRequest)(nil), "google.container.v1.DeleteNodePoolRequest") - proto.RegisterType((*ListNodePoolsRequest)(nil), "google.container.v1.ListNodePoolsRequest") - proto.RegisterType((*GetNodePoolRequest)(nil), "google.container.v1.GetNodePoolRequest") - proto.RegisterType((*NodePool)(nil), "google.container.v1.NodePool") - proto.RegisterType((*NodeManagement)(nil), "google.container.v1.NodeManagement") - proto.RegisterType((*AutoUpgradeOptions)(nil), "google.container.v1.AutoUpgradeOptions") - proto.RegisterType((*MaintenancePolicy)(nil), "google.container.v1.MaintenancePolicy") - proto.RegisterType((*MaintenanceWindow)(nil), "google.container.v1.MaintenanceWindow") - proto.RegisterType((*DailyMaintenanceWindow)(nil), "google.container.v1.DailyMaintenanceWindow") - proto.RegisterType((*SetNodePoolManagementRequest)(nil), "google.container.v1.SetNodePoolManagementRequest") - proto.RegisterType((*SetNodePoolSizeRequest)(nil), "google.container.v1.SetNodePoolSizeRequest") - proto.RegisterType((*RollbackNodePoolUpgradeRequest)(nil), "google.container.v1.RollbackNodePoolUpgradeRequest") - proto.RegisterType((*ListNodePoolsResponse)(nil), "google.container.v1.ListNodePoolsResponse") - proto.RegisterType((*NodePoolAutoscaling)(nil), "google.container.v1.NodePoolAutoscaling") - proto.RegisterType((*SetLabelsRequest)(nil), "google.container.v1.SetLabelsRequest") - proto.RegisterType((*SetLegacyAbacRequest)(nil), "google.container.v1.SetLegacyAbacRequest") - proto.RegisterType((*StartIPRotationRequest)(nil), "google.container.v1.StartIPRotationRequest") - proto.RegisterType((*CompleteIPRotationRequest)(nil), "google.container.v1.CompleteIPRotationRequest") - proto.RegisterType((*AcceleratorConfig)(nil), "google.container.v1.AcceleratorConfig") - proto.RegisterType((*SetNetworkPolicyRequest)(nil), "google.container.v1.SetNetworkPolicyRequest") - proto.RegisterType((*SetMaintenancePolicyRequest)(nil), "google.container.v1.SetMaintenancePolicyRequest") - proto.RegisterEnum("google.container.v1.NetworkPolicy_Provider", NetworkPolicy_Provider_name, NetworkPolicy_Provider_value) - proto.RegisterEnum("google.container.v1.Cluster_Status", Cluster_Status_name, Cluster_Status_value) - proto.RegisterEnum("google.container.v1.Operation_Status", Operation_Status_name, Operation_Status_value) - proto.RegisterEnum("google.container.v1.Operation_Type", Operation_Type_name, Operation_Type_value) - proto.RegisterEnum("google.container.v1.SetMasterAuthRequest_Action", SetMasterAuthRequest_Action_name, SetMasterAuthRequest_Action_value) - proto.RegisterEnum("google.container.v1.NodePool_Status", NodePool_Status_name, NodePool_Status_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ClusterManager service - -type ClusterManagerClient interface { - // Lists all clusters owned by a project in either the specified zone or all - // zones. - ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) - // Gets the details of a specific cluster. - GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) - // Creates a cluster, consisting of the specified number and type of Google - // Compute Engine instances. - // - // By default, the cluster is created in the project's - // [default network](/compute/docs/networks-and-firewalls#networks). - // - // One firewall is added for the cluster. After cluster creation, - // the cluster creates routes for each node to allow the containers - // on that node to communicate with all other instances in the - // cluster. - // - // Finally, an entry is added to the project's global metadata indicating - // which CIDR range is being used by the cluster. - CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Updates the settings of a specific cluster. - UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Updates the version and/or image type of a specific node pool. - UpdateNodePool(ctx context.Context, in *UpdateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the autoscaling settings of a specific node pool. - SetNodePoolAutoscaling(ctx context.Context, in *SetNodePoolAutoscalingRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the logging service of a specific cluster. - SetLoggingService(ctx context.Context, in *SetLoggingServiceRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the monitoring service of a specific cluster. - SetMonitoringService(ctx context.Context, in *SetMonitoringServiceRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the addons of a specific cluster. - SetAddonsConfig(ctx context.Context, in *SetAddonsConfigRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the locations of a specific cluster. - SetLocations(ctx context.Context, in *SetLocationsRequest, opts ...grpc.CallOption) (*Operation, error) - // Updates the master of a specific cluster. - UpdateMaster(ctx context.Context, in *UpdateMasterRequest, opts ...grpc.CallOption) (*Operation, error) - // Used to set master auth materials. Currently supports :- - // Changing the admin password of a specific cluster. - // This can be either via password generation or explicitly set the password. - SetMasterAuth(ctx context.Context, in *SetMasterAuthRequest, opts ...grpc.CallOption) (*Operation, error) - // Deletes the cluster, including the Kubernetes endpoint and all worker - // nodes. - // - // Firewalls and routes that were configured during cluster creation - // are also deleted. - // - // Other Google Compute Engine resources that might be in use by the cluster - // (e.g. load balancer resources) will not be deleted if they weren't present - // at the initial create time. - DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Lists all operations in a project in a specific zone or all zones. - ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) - // Gets the specified operation. - GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) - // Cancels the specified operation. - CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Returns configuration info about the Container Engine service. - GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error) - // Lists the node pools for a cluster. - ListNodePools(ctx context.Context, in *ListNodePoolsRequest, opts ...grpc.CallOption) (*ListNodePoolsResponse, error) - // Retrieves the node pool requested. - GetNodePool(ctx context.Context, in *GetNodePoolRequest, opts ...grpc.CallOption) (*NodePool, error) - // Creates a node pool for a cluster. - CreateNodePool(ctx context.Context, in *CreateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) - // Deletes a node pool from a cluster. - DeleteNodePool(ctx context.Context, in *DeleteNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) - // Roll back the previously Aborted or Failed NodePool upgrade. - // This will be an no-op if the last upgrade successfully completed. - RollbackNodePoolUpgrade(ctx context.Context, in *RollbackNodePoolUpgradeRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the NodeManagement options for a node pool. - SetNodePoolManagement(ctx context.Context, in *SetNodePoolManagementRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets labels on a cluster. - SetLabels(ctx context.Context, in *SetLabelsRequest, opts ...grpc.CallOption) (*Operation, error) - // Enables or disables the ABAC authorization mechanism on a cluster. - SetLegacyAbac(ctx context.Context, in *SetLegacyAbacRequest, opts ...grpc.CallOption) (*Operation, error) - // Start master IP rotation. - StartIPRotation(ctx context.Context, in *StartIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) - // Completes master IP rotation. - CompleteIPRotation(ctx context.Context, in *CompleteIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the size of a specific node pool. - SetNodePoolSize(ctx context.Context, in *SetNodePoolSizeRequest, opts ...grpc.CallOption) (*Operation, error) - // Enables/Disables Network Policy for a cluster. - SetNetworkPolicy(ctx context.Context, in *SetNetworkPolicyRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the maintenance policy for a cluster. - SetMaintenancePolicy(ctx context.Context, in *SetMaintenancePolicyRequest, opts ...grpc.CallOption) (*Operation, error) -} - -type clusterManagerClient struct { - cc *grpc.ClientConn -} - -func NewClusterManagerClient(cc *grpc.ClientConn) ClusterManagerClient { - return &clusterManagerClient{cc} -} - -func (c *clusterManagerClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) { - out := new(ListClustersResponse) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/ListClusters", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/GetCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/CreateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/UpdateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) UpdateNodePool(ctx context.Context, in *UpdateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/UpdateNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNodePoolAutoscaling(ctx context.Context, in *SetNodePoolAutoscalingRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetNodePoolAutoscaling", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLoggingService(ctx context.Context, in *SetLoggingServiceRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetLoggingService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetMonitoringService(ctx context.Context, in *SetMonitoringServiceRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetMonitoringService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetAddonsConfig(ctx context.Context, in *SetAddonsConfigRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetAddonsConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLocations(ctx context.Context, in *SetLocationsRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetLocations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) UpdateMaster(ctx context.Context, in *UpdateMasterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/UpdateMaster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetMasterAuth(ctx context.Context, in *SetMasterAuthRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetMasterAuth", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/DeleteCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) { - out := new(ListOperationsResponse) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/ListOperations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/GetOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/CancelOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error) { - out := new(ServerConfig) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/GetServerConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) ListNodePools(ctx context.Context, in *ListNodePoolsRequest, opts ...grpc.CallOption) (*ListNodePoolsResponse, error) { - out := new(ListNodePoolsResponse) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/ListNodePools", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetNodePool(ctx context.Context, in *GetNodePoolRequest, opts ...grpc.CallOption) (*NodePool, error) { - out := new(NodePool) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/GetNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CreateNodePool(ctx context.Context, in *CreateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/CreateNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) DeleteNodePool(ctx context.Context, in *DeleteNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/DeleteNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) RollbackNodePoolUpgrade(ctx context.Context, in *RollbackNodePoolUpgradeRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/RollbackNodePoolUpgrade", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNodePoolManagement(ctx context.Context, in *SetNodePoolManagementRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetNodePoolManagement", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLabels(ctx context.Context, in *SetLabelsRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetLabels", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLegacyAbac(ctx context.Context, in *SetLegacyAbacRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetLegacyAbac", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) StartIPRotation(ctx context.Context, in *StartIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/StartIPRotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CompleteIPRotation(ctx context.Context, in *CompleteIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/CompleteIPRotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNodePoolSize(ctx context.Context, in *SetNodePoolSizeRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetNodePoolSize", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNetworkPolicy(ctx context.Context, in *SetNetworkPolicyRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetNetworkPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetMaintenancePolicy(ctx context.Context, in *SetMaintenancePolicyRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1.ClusterManager/SetMaintenancePolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ClusterManager service - -type ClusterManagerServer interface { - // Lists all clusters owned by a project in either the specified zone or all - // zones. - ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) - // Gets the details of a specific cluster. - GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) - // Creates a cluster, consisting of the specified number and type of Google - // Compute Engine instances. - // - // By default, the cluster is created in the project's - // [default network](/compute/docs/networks-and-firewalls#networks). - // - // One firewall is added for the cluster. After cluster creation, - // the cluster creates routes for each node to allow the containers - // on that node to communicate with all other instances in the - // cluster. - // - // Finally, an entry is added to the project's global metadata indicating - // which CIDR range is being used by the cluster. - CreateCluster(context.Context, *CreateClusterRequest) (*Operation, error) - // Updates the settings of a specific cluster. - UpdateCluster(context.Context, *UpdateClusterRequest) (*Operation, error) - // Updates the version and/or image type of a specific node pool. - UpdateNodePool(context.Context, *UpdateNodePoolRequest) (*Operation, error) - // Sets the autoscaling settings of a specific node pool. - SetNodePoolAutoscaling(context.Context, *SetNodePoolAutoscalingRequest) (*Operation, error) - // Sets the logging service of a specific cluster. - SetLoggingService(context.Context, *SetLoggingServiceRequest) (*Operation, error) - // Sets the monitoring service of a specific cluster. - SetMonitoringService(context.Context, *SetMonitoringServiceRequest) (*Operation, error) - // Sets the addons of a specific cluster. - SetAddonsConfig(context.Context, *SetAddonsConfigRequest) (*Operation, error) - // Sets the locations of a specific cluster. - SetLocations(context.Context, *SetLocationsRequest) (*Operation, error) - // Updates the master of a specific cluster. - UpdateMaster(context.Context, *UpdateMasterRequest) (*Operation, error) - // Used to set master auth materials. Currently supports :- - // Changing the admin password of a specific cluster. - // This can be either via password generation or explicitly set the password. - SetMasterAuth(context.Context, *SetMasterAuthRequest) (*Operation, error) - // Deletes the cluster, including the Kubernetes endpoint and all worker - // nodes. - // - // Firewalls and routes that were configured during cluster creation - // are also deleted. - // - // Other Google Compute Engine resources that might be in use by the cluster - // (e.g. load balancer resources) will not be deleted if they weren't present - // at the initial create time. - DeleteCluster(context.Context, *DeleteClusterRequest) (*Operation, error) - // Lists all operations in a project in a specific zone or all zones. - ListOperations(context.Context, *ListOperationsRequest) (*ListOperationsResponse, error) - // Gets the specified operation. - GetOperation(context.Context, *GetOperationRequest) (*Operation, error) - // Cancels the specified operation. - CancelOperation(context.Context, *CancelOperationRequest) (*google_protobuf1.Empty, error) - // Returns configuration info about the Container Engine service. - GetServerConfig(context.Context, *GetServerConfigRequest) (*ServerConfig, error) - // Lists the node pools for a cluster. - ListNodePools(context.Context, *ListNodePoolsRequest) (*ListNodePoolsResponse, error) - // Retrieves the node pool requested. - GetNodePool(context.Context, *GetNodePoolRequest) (*NodePool, error) - // Creates a node pool for a cluster. - CreateNodePool(context.Context, *CreateNodePoolRequest) (*Operation, error) - // Deletes a node pool from a cluster. - DeleteNodePool(context.Context, *DeleteNodePoolRequest) (*Operation, error) - // Roll back the previously Aborted or Failed NodePool upgrade. - // This will be an no-op if the last upgrade successfully completed. - RollbackNodePoolUpgrade(context.Context, *RollbackNodePoolUpgradeRequest) (*Operation, error) - // Sets the NodeManagement options for a node pool. - SetNodePoolManagement(context.Context, *SetNodePoolManagementRequest) (*Operation, error) - // Sets labels on a cluster. - SetLabels(context.Context, *SetLabelsRequest) (*Operation, error) - // Enables or disables the ABAC authorization mechanism on a cluster. - SetLegacyAbac(context.Context, *SetLegacyAbacRequest) (*Operation, error) - // Start master IP rotation. - StartIPRotation(context.Context, *StartIPRotationRequest) (*Operation, error) - // Completes master IP rotation. - CompleteIPRotation(context.Context, *CompleteIPRotationRequest) (*Operation, error) - // Sets the size of a specific node pool. - SetNodePoolSize(context.Context, *SetNodePoolSizeRequest) (*Operation, error) - // Enables/Disables Network Policy for a cluster. - SetNetworkPolicy(context.Context, *SetNetworkPolicyRequest) (*Operation, error) - // Sets the maintenance policy for a cluster. - SetMaintenancePolicy(context.Context, *SetMaintenancePolicyRequest) (*Operation, error) -} - -func RegisterClusterManagerServer(s *grpc.Server, srv ClusterManagerServer) { - s.RegisterService(&_ClusterManager_serviceDesc, srv) -} - -func _ClusterManager_ListClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClustersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListClusters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/ListClusters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListClusters(ctx, req.(*ListClustersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/GetCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetCluster(ctx, req.(*GetClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CreateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CreateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/CreateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CreateCluster(ctx, req.(*CreateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).UpdateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/UpdateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).UpdateCluster(ctx, req.(*UpdateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_UpdateNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).UpdateNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/UpdateNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).UpdateNodePool(ctx, req.(*UpdateNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNodePoolAutoscaling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNodePoolAutoscalingRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNodePoolAutoscaling(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetNodePoolAutoscaling", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNodePoolAutoscaling(ctx, req.(*SetNodePoolAutoscalingRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLoggingService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLoggingServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLoggingService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetLoggingService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLoggingService(ctx, req.(*SetLoggingServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetMonitoringService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMonitoringServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetMonitoringService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetMonitoringService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetMonitoringService(ctx, req.(*SetMonitoringServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetAddonsConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetAddonsConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetAddonsConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetAddonsConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetAddonsConfig(ctx, req.(*SetAddonsConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLocationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLocations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetLocations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLocations(ctx, req.(*SetLocationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_UpdateMaster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateMasterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).UpdateMaster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/UpdateMaster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).UpdateMaster(ctx, req.(*UpdateMasterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetMasterAuth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMasterAuthRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetMasterAuth(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetMasterAuth", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetMasterAuth(ctx, req.(*SetMasterAuthRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_DeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).DeleteCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/DeleteCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).DeleteCluster(ctx, req.(*DeleteClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_ListOperations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOperationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListOperations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/ListOperations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListOperations(ctx, req.(*ListOperationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/GetOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetOperation(ctx, req.(*GetOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CancelOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CancelOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/CancelOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CancelOperation(ctx, req.(*CancelOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetServerConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServerConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetServerConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/GetServerConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetServerConfig(ctx, req.(*GetServerConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_ListNodePools_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNodePoolsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListNodePools(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/ListNodePools", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListNodePools(ctx, req.(*ListNodePoolsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/GetNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetNodePool(ctx, req.(*GetNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CreateNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CreateNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/CreateNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CreateNodePool(ctx, req.(*CreateNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_DeleteNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).DeleteNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/DeleteNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).DeleteNodePool(ctx, req.(*DeleteNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_RollbackNodePoolUpgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RollbackNodePoolUpgradeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).RollbackNodePoolUpgrade(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/RollbackNodePoolUpgrade", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).RollbackNodePoolUpgrade(ctx, req.(*RollbackNodePoolUpgradeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNodePoolManagement_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNodePoolManagementRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNodePoolManagement(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetNodePoolManagement", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNodePoolManagement(ctx, req.(*SetNodePoolManagementRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLabels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLabelsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLabels(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetLabels", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLabels(ctx, req.(*SetLabelsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLegacyAbac_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLegacyAbacRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLegacyAbac(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetLegacyAbac", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLegacyAbac(ctx, req.(*SetLegacyAbacRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_StartIPRotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StartIPRotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).StartIPRotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/StartIPRotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).StartIPRotation(ctx, req.(*StartIPRotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CompleteIPRotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CompleteIPRotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CompleteIPRotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/CompleteIPRotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CompleteIPRotation(ctx, req.(*CompleteIPRotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNodePoolSize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNodePoolSizeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNodePoolSize(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetNodePoolSize", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNodePoolSize(ctx, req.(*SetNodePoolSizeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNetworkPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNetworkPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNetworkPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetNetworkPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNetworkPolicy(ctx, req.(*SetNetworkPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetMaintenancePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMaintenancePolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetMaintenancePolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1.ClusterManager/SetMaintenancePolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetMaintenancePolicy(ctx, req.(*SetMaintenancePolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ClusterManager_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.container.v1.ClusterManager", - HandlerType: (*ClusterManagerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListClusters", - Handler: _ClusterManager_ListClusters_Handler, - }, - { - MethodName: "GetCluster", - Handler: _ClusterManager_GetCluster_Handler, - }, - { - MethodName: "CreateCluster", - Handler: _ClusterManager_CreateCluster_Handler, - }, - { - MethodName: "UpdateCluster", - Handler: _ClusterManager_UpdateCluster_Handler, - }, - { - MethodName: "UpdateNodePool", - Handler: _ClusterManager_UpdateNodePool_Handler, - }, - { - MethodName: "SetNodePoolAutoscaling", - Handler: _ClusterManager_SetNodePoolAutoscaling_Handler, - }, - { - MethodName: "SetLoggingService", - Handler: _ClusterManager_SetLoggingService_Handler, - }, - { - MethodName: "SetMonitoringService", - Handler: _ClusterManager_SetMonitoringService_Handler, - }, - { - MethodName: "SetAddonsConfig", - Handler: _ClusterManager_SetAddonsConfig_Handler, - }, - { - MethodName: "SetLocations", - Handler: _ClusterManager_SetLocations_Handler, - }, - { - MethodName: "UpdateMaster", - Handler: _ClusterManager_UpdateMaster_Handler, - }, - { - MethodName: "SetMasterAuth", - Handler: _ClusterManager_SetMasterAuth_Handler, - }, - { - MethodName: "DeleteCluster", - Handler: _ClusterManager_DeleteCluster_Handler, - }, - { - MethodName: "ListOperations", - Handler: _ClusterManager_ListOperations_Handler, - }, - { - MethodName: "GetOperation", - Handler: _ClusterManager_GetOperation_Handler, - }, - { - MethodName: "CancelOperation", - Handler: _ClusterManager_CancelOperation_Handler, - }, - { - MethodName: "GetServerConfig", - Handler: _ClusterManager_GetServerConfig_Handler, - }, - { - MethodName: "ListNodePools", - Handler: _ClusterManager_ListNodePools_Handler, - }, - { - MethodName: "GetNodePool", - Handler: _ClusterManager_GetNodePool_Handler, - }, - { - MethodName: "CreateNodePool", - Handler: _ClusterManager_CreateNodePool_Handler, - }, - { - MethodName: "DeleteNodePool", - Handler: _ClusterManager_DeleteNodePool_Handler, - }, - { - MethodName: "RollbackNodePoolUpgrade", - Handler: _ClusterManager_RollbackNodePoolUpgrade_Handler, - }, - { - MethodName: "SetNodePoolManagement", - Handler: _ClusterManager_SetNodePoolManagement_Handler, - }, - { - MethodName: "SetLabels", - Handler: _ClusterManager_SetLabels_Handler, - }, - { - MethodName: "SetLegacyAbac", - Handler: _ClusterManager_SetLegacyAbac_Handler, - }, - { - MethodName: "StartIPRotation", - Handler: _ClusterManager_StartIPRotation_Handler, - }, - { - MethodName: "CompleteIPRotation", - Handler: _ClusterManager_CompleteIPRotation_Handler, - }, - { - MethodName: "SetNodePoolSize", - Handler: _ClusterManager_SetNodePoolSize_Handler, - }, - { - MethodName: "SetNetworkPolicy", - Handler: _ClusterManager_SetNetworkPolicy_Handler, - }, - { - MethodName: "SetMaintenancePolicy", - Handler: _ClusterManager_SetMaintenancePolicy_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/container/v1/cluster_service.proto", -} - -func init() { proto.RegisterFile("google/container/v1/cluster_service.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 4602 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5c, 0xdd, 0x8f, 0x23, 0x57, - 0x56, 0xdf, 0xea, 0x76, 0xbb, 0xdb, 0xc7, 0x1f, 0xed, 0xbe, 0xfd, 0xe5, 0x38, 0x33, 0xc9, 0x4c, - 0xe5, 0x6b, 0x32, 0x49, 0xda, 0x99, 0x7c, 0x67, 0x92, 0x0d, 0xf1, 0xb8, 0x9d, 0x1e, 0x67, 0xba, - 0x6d, 0xa7, 0xdc, 0x3d, 0x43, 0xc2, 0xec, 0x96, 0xaa, 0xab, 0x6e, 0xbb, 0x2b, 0x5d, 0xae, 0xaa, - 0xad, 0x2a, 0x77, 0xd2, 0x33, 0x1a, 0x24, 0x56, 0x80, 0x90, 0x10, 0xfb, 0x02, 0x8b, 0xf6, 0x01, - 0xad, 0x10, 0x2c, 0x2b, 0x94, 0x95, 0x40, 0x2c, 0xb0, 0x20, 0x3e, 0x24, 0x5e, 0x58, 0x01, 0x12, - 0xbc, 0xf0, 0x80, 0xe0, 0x85, 0x07, 0x10, 0x12, 0x7f, 0x04, 0x12, 0xba, 0x1f, 0x55, 0xae, 0xb2, - 0xab, 0xec, 0x9e, 0x38, 0x4e, 0xf6, 0x69, 0x5c, 0xe7, 0x9e, 0x73, 0xef, 0xef, 0x9c, 0xba, 0xf7, - 0x9c, 0x73, 0xcf, 0xa9, 0x1e, 0x78, 0xb6, 0x6b, 0x59, 0x5d, 0x03, 0x57, 0x54, 0xcb, 0xf4, 0x14, - 0xdd, 0xc4, 0x4e, 0xe5, 0xf4, 0x5a, 0x45, 0x35, 0xfa, 0xae, 0x87, 0x1d, 0xd9, 0xc5, 0xce, 0xa9, - 0xae, 0xe2, 0x2d, 0xdb, 0xb1, 0x3c, 0x0b, 0xad, 0x32, 0xd6, 0xad, 0x80, 0x75, 0xeb, 0xf4, 0x5a, - 0xf9, 0x02, 0x97, 0x57, 0x6c, 0xbd, 0xa2, 0x98, 0xa6, 0xe5, 0x29, 0x9e, 0x6e, 0x99, 0x2e, 0x13, - 0x29, 0x3f, 0xca, 0x47, 0xe9, 0xd3, 0x61, 0xff, 0xa8, 0x82, 0x7b, 0xb6, 0x77, 0xc6, 0x06, 0xc5, - 0xef, 0x2d, 0x00, 0x34, 0x2d, 0x0d, 0xd7, 0x2c, 0xf3, 0x48, 0xef, 0xa2, 0xcb, 0x90, 0xeb, 0x29, - 0xea, 0xb1, 0x6e, 0x62, 0xd9, 0x3b, 0xb3, 0x71, 0x49, 0xb8, 0x24, 0x5c, 0xc9, 0x48, 0x59, 0x4e, - 0xdb, 0x3f, 0xb3, 0x31, 0xba, 0x04, 0x39, 0x4d, 0x77, 0x4f, 0x64, 0x57, 0xbf, 0x87, 0xe5, 0xee, - 0x61, 0x69, 0xee, 0x92, 0x70, 0x65, 0x41, 0x02, 0x42, 0xeb, 0xe8, 0xf7, 0xf0, 0xce, 0x21, 0x99, - 0xc4, 0x52, 0xfa, 0xde, 0xb1, 0xec, 0xaa, 0x96, 0x8d, 0xdd, 0xd2, 0xfc, 0xa5, 0x79, 0x32, 0x09, - 0xa5, 0x75, 0x28, 0x09, 0x3d, 0x03, 0xcb, 0x5c, 0x2f, 0x59, 0x51, 0x55, 0xab, 0x6f, 0x7a, 0xa5, - 0x0c, 0x5d, 0xaa, 0xc0, 0xc9, 0x55, 0x46, 0x45, 0x0d, 0x58, 0xea, 0x61, 0x4f, 0xd1, 0x14, 0x4f, - 0x29, 0xa5, 0x2e, 0xcd, 0x5f, 0xc9, 0xbe, 0xf4, 0xc2, 0x56, 0x8c, 0x09, 0xb6, 0x06, 0x3a, 0x6c, - 0xed, 0x71, 0xfe, 0xba, 0xe9, 0x39, 0x67, 0x52, 0x20, 0x8e, 0x2e, 0x02, 0xe8, 0x3d, 0xa5, 0xcb, - 0x35, 0x5b, 0xa0, 0xcb, 0x65, 0x28, 0x85, 0xea, 0x55, 0x83, 0xb4, 0xa1, 0x1c, 0x62, 0xc3, 0x2d, - 0xa5, 0xe9, 0x3a, 0xcf, 0x4d, 0x5a, 0x67, 0x97, 0x72, 0xb3, 0x55, 0xb8, 0x28, 0x7a, 0x1a, 0x96, - 0x0d, 0x4b, 0x55, 0x0c, 0xd9, 0x75, 0x35, 0x99, 0xe9, 0xb5, 0x48, 0xed, 0x93, 0xa7, 0xe4, 0x8e, - 0xab, 0xd5, 0xa8, 0x5a, 0x08, 0x52, 0x9e, 0xd2, 0x75, 0x4b, 0x4b, 0xd4, 0x34, 0xf4, 0x37, 0xba, - 0x04, 0x59, 0xdb, 0xc1, 0xe4, 0xe5, 0xe8, 0x87, 0x06, 0x2e, 0xc1, 0x25, 0xe1, 0xca, 0x92, 0x14, - 0x26, 0xa1, 0xf7, 0x21, 0xa7, 0xa8, 0x2a, 0x36, 0xb0, 0xa3, 0x78, 0x96, 0xe3, 0x96, 0xb2, 0x14, - 0xe8, 0xd3, 0xb1, 0x40, 0xab, 0x03, 0x46, 0x86, 0x57, 0x8a, 0xc8, 0xa2, 0x2b, 0x50, 0xec, 0xe9, - 0xa6, 0xac, 0xda, 0x7d, 0xd9, 0x36, 0x14, 0xef, 0xc8, 0x72, 0x7a, 0xa5, 0x3c, 0x7b, 0x05, 0x3d, - 0xdd, 0xac, 0xd9, 0xfd, 0x36, 0xa7, 0x96, 0xdf, 0x82, 0x7c, 0xc4, 0xa4, 0xa8, 0x08, 0xf3, 0x27, - 0xf8, 0x8c, 0xef, 0x0d, 0xf2, 0x13, 0xad, 0xc1, 0xc2, 0xa9, 0x62, 0xf4, 0x31, 0xdd, 0x0c, 0x19, - 0x89, 0x3d, 0x5c, 0x9f, 0x7b, 0x43, 0x28, 0xbf, 0x09, 0xd9, 0x90, 0x9d, 0x1e, 0x46, 0x54, 0xfc, - 0xf1, 0x1c, 0xc0, 0x9e, 0x42, 0xce, 0x40, 0xb5, 0xef, 0x1d, 0xa3, 0x32, 0x2c, 0xf5, 0x5d, 0xec, - 0x98, 0x4a, 0xcf, 0xdf, 0x96, 0xc1, 0x33, 0x19, 0xb3, 0x15, 0xd7, 0xfd, 0xc4, 0x72, 0x34, 0x3e, - 0x4f, 0xf0, 0x8c, 0x8e, 0xe1, 0x11, 0xd5, 0xd0, 0xb1, 0xe9, 0xc9, 0x2a, 0x76, 0x3c, 0xfd, 0x48, - 0x57, 0x15, 0x0f, 0xcb, 0x2a, 0xb5, 0x49, 0x69, 0xfe, 0x92, 0x70, 0x25, 0xfb, 0xd2, 0xf3, 0xb1, - 0x16, 0xac, 0x51, 0xa9, 0xda, 0x40, 0x88, 0xdb, 0x71, 0x53, 0x8d, 0x1f, 0x40, 0xaf, 0xc0, 0x86, - 0x7f, 0x68, 0x55, 0x25, 0xbc, 0x5a, 0x49, 0xa3, 0x98, 0xd6, 0xf8, 0x68, 0x4d, 0x09, 0xc9, 0xa2, - 0x17, 0x00, 0x8d, 0xe2, 0x2b, 0x61, 0x2a, 0xb1, 0x32, 0xb2, 0x14, 0xd9, 0xc5, 0x9c, 0x9d, 0x18, - 0xf2, 0x88, 0xed, 0x62, 0x46, 0xb9, 0x85, 0xcf, 0xc4, 0x0e, 0x6c, 0x26, 0xe0, 0x46, 0x6f, 0x40, - 0x49, 0x77, 0xdd, 0x3e, 0x96, 0x63, 0x96, 0x13, 0xe8, 0x66, 0xdb, 0xa0, 0xe3, 0x23, 0xf2, 0xe2, - 0x77, 0xe6, 0x21, 0x57, 0xd5, 0x34, 0xcb, 0x74, 0xf9, 0x54, 0xb7, 0x61, 0xf5, 0xd8, 0xf3, 0x6c, - 0xd9, 0xb0, 0x14, 0x4d, 0x3e, 0x54, 0x0c, 0xc5, 0x54, 0x75, 0xb3, 0x4b, 0x67, 0x49, 0xda, 0x8f, - 0x37, 0x3d, 0xcf, 0xde, 0xb5, 0x14, 0xed, 0x86, 0xcf, 0x2d, 0xad, 0x1c, 0x0f, 0x93, 0xd0, 0x09, - 0x94, 0x8f, 0x2d, 0x47, 0xbf, 0x47, 0x04, 0x0d, 0xd9, 0xb6, 0x34, 0x59, 0xe9, 0x7b, 0x96, 0xab, - 0x2a, 0x06, 0x99, 0x7e, 0x8e, 0x4e, 0x1f, 0x7f, 0xfe, 0x6f, 0x06, 0x62, 0x6d, 0x4b, 0xab, 0x0e, - 0x84, 0xa4, 0xd2, 0x71, 0xc2, 0x08, 0xfa, 0x05, 0x58, 0x3b, 0xe9, 0x1f, 0x62, 0xc7, 0xc4, 0x1e, - 0x76, 0x65, 0x4d, 0x71, 0x8f, 0x0f, 0x2d, 0xc5, 0xd1, 0xf8, 0x9e, 0xb8, 0x12, 0xbb, 0xcc, 0xad, - 0x40, 0x60, 0xdb, 0xe7, 0x97, 0x56, 0x4f, 0x46, 0x89, 0xe8, 0x2e, 0xac, 0x9b, 0xd8, 0xfb, 0xc4, - 0x72, 0x4e, 0x64, 0xdb, 0x32, 0x74, 0xf5, 0xcc, 0xdf, 0x71, 0xa9, 0x31, 0xb3, 0x37, 0x99, 0x44, - 0x9b, 0x0a, 0xf0, 0xdd, 0xb6, 0x6a, 0x8e, 0x12, 0xc5, 0x0a, 0xac, 0x8c, 0xd8, 0x93, 0x1c, 0x02, - 0x4d, 0x77, 0x95, 0x43, 0x03, 0x6b, 0xfc, 0x7d, 0x06, 0xcf, 0xe2, 0x6b, 0x50, 0x4a, 0xb2, 0xd0, - 0x58, 0xb9, 0x6b, 0xb0, 0x1a, 0xa3, 0xf2, 0x24, 0x91, 0x18, 0x3d, 0xc6, 0x8a, 0xfc, 0xaf, 0x00, - 0x8f, 0x0d, 0x4e, 0x3a, 0xc1, 0x89, 0x35, 0x3e, 0x87, 0xbf, 0xe3, 0x4a, 0xb0, 0x88, 0xcd, 0xb0, - 0xb4, 0xff, 0x88, 0xbe, 0x09, 0x59, 0x55, 0xd7, 0x1c, 0xf9, 0xd0, 0xb0, 0xd4, 0x13, 0xb7, 0x34, - 0x47, 0x7d, 0xe2, 0xd7, 0x63, 0xed, 0x3b, 0x7e, 0x8d, 0xad, 0x9a, 0xae, 0x39, 0x37, 0xc8, 0x2c, - 0x12, 0xa8, 0xfe, 0x4f, 0xb7, 0xbc, 0x07, 0x99, 0x60, 0x80, 0x84, 0x36, 0x4d, 0x77, 0x6d, 0x43, - 0x39, 0x93, 0x43, 0x8e, 0x28, 0xcb, 0x69, 0x4d, 0xe2, 0x8b, 0xc8, 0x01, 0x0d, 0xf0, 0x70, 0x6f, - 0x94, 0x09, 0xe6, 0x13, 0x9f, 0x06, 0xd8, 0xc5, 0x5d, 0x45, 0x3d, 0xab, 0x1e, 0x2a, 0x6a, 0xb2, - 0x5a, 0xe2, 0x0f, 0x04, 0xc8, 0x47, 0xec, 0x88, 0x76, 0x60, 0xc9, 0x76, 0xac, 0x53, 0x5d, 0xc3, - 0x0e, 0x65, 0x2e, 0x24, 0x85, 0xa8, 0xb0, 0xd4, 0x56, 0x9b, 0x8b, 0x48, 0x81, 0x70, 0x78, 0xd1, - 0xb9, 0xe8, 0xa2, 0x2f, 0xc2, 0x52, 0x7b, 0xc0, 0xb5, 0xd6, 0x96, 0x5a, 0xb7, 0x1b, 0xdb, 0x75, - 0x49, 0x3e, 0x68, 0x76, 0xda, 0xf5, 0x5a, 0xe3, 0xbd, 0x46, 0x7d, 0xbb, 0xf8, 0x35, 0x04, 0x90, - 0xae, 0x55, 0x77, 0x1b, 0xb5, 0x56, 0x51, 0x10, 0xff, 0x3c, 0x05, 0xa8, 0xd1, 0xae, 0x1a, 0x24, - 0xbc, 0x91, 0xa4, 0x83, 0x63, 0x7d, 0x12, 0x0a, 0x7d, 0x17, 0xcb, 0xba, 0x2d, 0x2b, 0x86, 0xae, - 0xb8, 0xd8, 0xe5, 0xea, 0xe5, 0xfa, 0x2e, 0x6e, 0xd8, 0x55, 0x46, 0x43, 0xcf, 0xc1, 0x8a, 0xea, - 0x60, 0xe2, 0x8e, 0xdd, 0xfe, 0x21, 0xdf, 0xe7, 0x1c, 0x52, 0x91, 0x0d, 0x74, 0x02, 0x3a, 0x4d, - 0x19, 0x82, 0x27, 0x66, 0xfd, 0x79, 0x9e, 0x32, 0x04, 0x64, 0xfa, 0x02, 0xae, 0xc2, 0x8a, 0xef, - 0x86, 0x75, 0xfb, 0xf4, 0x15, 0x99, 0xd8, 0x9e, 0x1e, 0xbb, 0x8c, 0xb4, 0xcc, 0x07, 0x1a, 0xf6, - 0xe9, 0x2b, 0xe4, 0xa5, 0x12, 0x9c, 0xa6, 0xa5, 0xe1, 0x10, 0x23, 0xcb, 0x0b, 0x72, 0x84, 0x1a, - 0x70, 0x3d, 0x0f, 0x88, 0xa7, 0x25, 0x6e, 0x88, 0x33, 0x4d, 0x39, 0x8b, 0xfe, 0x48, 0xc0, 0xfd, - 0x73, 0x70, 0x61, 0x90, 0xbb, 0xa9, 0x96, 0xa9, 0x29, 0xce, 0x99, 0xec, 0x28, 0x66, 0x17, 0x33, - 0xd4, 0x8b, 0x54, 0xee, 0x11, 0xce, 0xd3, 0xf1, 0x59, 0x24, 0xc2, 0x41, 0x15, 0xa8, 0xc2, 0xc5, - 0x60, 0xb9, 0xd8, 0x19, 0x96, 0xe8, 0x0c, 0x65, 0x9f, 0x29, 0x66, 0x8a, 0x57, 0x61, 0x73, 0xc4, - 0x06, 0x7c, 0x47, 0x66, 0x22, 0xb1, 0xc8, 0x47, 0xcd, 0xb6, 0x77, 0x05, 0xd6, 0xa2, 0xe6, 0xe0, - 0x32, 0xc0, 0xa2, 0x51, 0xd8, 0x28, 0x4c, 0xe0, 0x75, 0x28, 0x8d, 0x5a, 0x86, 0x0b, 0x65, 0xa9, - 0xd0, 0xfa, 0xb0, 0x7d, 0xd8, 0x31, 0xf8, 0x97, 0x65, 0x58, 0xac, 0x31, 0x08, 0x24, 0x19, 0x0a, - 0x1d, 0x26, 0xfa, 0x9b, 0x24, 0x43, 0x1a, 0x76, 0x55, 0x47, 0xb7, 0xc9, 0xae, 0xe2, 0xc7, 0x28, - 0x4c, 0x22, 0x2f, 0x45, 0x37, 0x75, 0x4f, 0x57, 0x0c, 0x99, 0x62, 0x66, 0xd9, 0xd6, 0x3c, 0xcd, - 0xb6, 0x8a, 0x7c, 0x84, 0x65, 0x6b, 0x24, 0xe1, 0x7a, 0x17, 0xb2, 0x9c, 0x2b, 0xe4, 0x85, 0x1f, - 0x9f, 0x90, 0xe2, 0x49, 0x60, 0x0e, 0x52, 0xe3, 0x77, 0x21, 0xdb, 0xa3, 0xfe, 0x83, 0xc4, 0xa4, - 0x63, 0xba, 0x4f, 0x92, 0x66, 0x18, 0xf8, 0x19, 0x09, 0x7a, 0x83, 0x0c, 0xe6, 0x19, 0x92, 0x1c, - 0x76, 0xbb, 0xba, 0xd9, 0xf5, 0x93, 0x7a, 0xbe, 0x87, 0x0a, 0x9c, 0xdc, 0x61, 0x54, 0x92, 0x12, - 0xf4, 0x2c, 0x53, 0xf7, 0x2c, 0x27, 0xcc, 0xcb, 0xf6, 0xcd, 0xca, 0x60, 0xc4, 0x67, 0x2f, 0xc1, - 0xa2, 0x7f, 0x78, 0xd8, 0xce, 0xf0, 0x1f, 0xe3, 0x8f, 0x42, 0x26, 0xfe, 0x28, 0xbc, 0x07, 0x79, - 0x85, 0xc6, 0x78, 0xdf, 0x46, 0x40, 0x35, 0xbc, 0x1c, 0x9f, 0x5d, 0x86, 0xb2, 0x01, 0x29, 0xa7, - 0x84, 0x73, 0x83, 0xc7, 0x00, 0x42, 0xa7, 0x99, 0x6d, 0x82, 0x10, 0x05, 0xbd, 0x0d, 0xd4, 0xaa, - 0xb2, 0x6d, 0x59, 0x86, 0x5b, 0xca, 0x51, 0x77, 0x7d, 0x31, 0xf1, 0x45, 0xb4, 0x2d, 0xcb, 0x90, - 0x32, 0x26, 0xff, 0xe5, 0xa2, 0x0b, 0x90, 0xf1, 0x5d, 0x8d, 0x5b, 0xca, 0xd3, 0xec, 0x79, 0x40, - 0x40, 0xaf, 0xc1, 0x26, 0x73, 0x65, 0x72, 0x28, 0xb2, 0x2b, 0x86, 0x7d, 0xac, 0x94, 0x0a, 0xd4, - 0xad, 0xac, 0xb3, 0xe1, 0x41, 0x4c, 0xab, 0x92, 0x41, 0xf4, 0x21, 0x2c, 0x3b, 0xd8, 0xb5, 0xfa, - 0x8e, 0x8a, 0x65, 0x7e, 0x09, 0x58, 0xa6, 0xc0, 0x5e, 0x4c, 0xc8, 0x0c, 0xa9, 0xe9, 0xb6, 0x24, - 0x2e, 0x13, 0xbe, 0x09, 0x14, 0x9c, 0x08, 0x91, 0xf8, 0x38, 0x3a, 0xa3, 0x7c, 0xa4, 0x9b, 0x5d, - 0xec, 0xd8, 0x8e, 0x6e, 0x7a, 0xa5, 0x22, 0x73, 0x1d, 0x74, 0xe0, 0xbd, 0x01, 0x9d, 0xec, 0x31, - 0x83, 0x06, 0x07, 0x59, 0x39, 0x54, 0xd4, 0x12, 0x1a, 0xb3, 0xc7, 0x06, 0x41, 0x44, 0x02, 0x63, - 0x10, 0x50, 0x1a, 0x50, 0x88, 0xe6, 0x1d, 0xa5, 0x55, 0x3a, 0x89, 0x38, 0x39, 0x54, 0x48, 0xf9, - 0x48, 0xaa, 0x81, 0x3e, 0x84, 0x35, 0xea, 0xbf, 0x7d, 0xf3, 0xfa, 0x13, 0xae, 0xd1, 0x09, 0x9f, - 0x89, 0x9d, 0x70, 0x34, 0x14, 0x48, 0x48, 0xb7, 0x47, 0xc2, 0xc3, 0x2f, 0xc2, 0xe5, 0xd0, 0x59, - 0x62, 0xc1, 0x58, 0xe6, 0xab, 0x07, 0xfb, 0x6f, 0x83, 0xae, 0xf3, 0xf2, 0xe7, 0x88, 0xe4, 0xd2, - 0x63, 0xbd, 0xf1, 0xd9, 0xc4, 0x01, 0xa0, 0x9e, 0xa2, 0x9b, 0x1e, 0x36, 0x15, 0x53, 0xc5, 0xbe, - 0x62, 0x9b, 0x63, 0xd2, 0xd7, 0xbd, 0x01, 0x3b, 0xd7, 0x6b, 0xa5, 0x37, 0x4c, 0x42, 0x8f, 0x42, - 0xc6, 0xc5, 0xc6, 0x91, 0x6c, 0xe8, 0xe6, 0x09, 0xcf, 0xf9, 0x97, 0x08, 0x61, 0x57, 0x37, 0x4f, - 0x88, 0x97, 0xbb, 0x67, 0x99, 0x7e, 0x66, 0x4f, 0x7f, 0x93, 0xa4, 0x08, 0x9b, 0x9a, 0x6d, 0x91, - 0x3d, 0xc1, 0x52, 0xf9, 0xe0, 0x99, 0xec, 0x65, 0xdf, 0xbf, 0xf9, 0x67, 0xf8, 0x14, 0x3b, 0x2e, - 0xf1, 0x86, 0x5d, 0xe6, 0x59, 0xf9, 0x30, 0xdf, 0x8d, 0xb7, 0xd9, 0x20, 0xbd, 0x85, 0xf4, 0x1d, - 0x87, 0x64, 0xf8, 0xdc, 0xc6, 0xbe, 0xd8, 0x31, 0xf7, 0xfc, 0x6c, 0x94, 0x99, 0xd0, 0x97, 0x7a, - 0x11, 0x7c, 0x3a, 0xf3, 0xa6, 0xbe, 0x8c, 0x4e, 0x65, 0x10, 0x1f, 0x23, 0x27, 0xd2, 0x97, 0x78, - 0x1c, 0xb2, 0x3c, 0x78, 0x7b, 0x7a, 0x0f, 0x97, 0x3e, 0x66, 0x07, 0x9d, 0x91, 0xf6, 0xf5, 0x1e, - 0x46, 0x6f, 0x41, 0xda, 0xf5, 0x14, 0xaf, 0xef, 0x96, 0x4e, 0x68, 0xb6, 0xf2, 0xc4, 0xd8, 0xb3, - 0xd4, 0xa1, 0xac, 0x12, 0x17, 0x41, 0x4f, 0x41, 0x81, 0xfd, 0x92, 0x7b, 0xd8, 0x75, 0x95, 0x2e, - 0x2e, 0x19, 0x74, 0x81, 0x3c, 0xa3, 0xee, 0x31, 0x22, 0x7a, 0x01, 0x56, 0x87, 0x02, 0x96, 0xab, - 0xdf, 0xc3, 0xa5, 0x1e, 0x8b, 0x02, 0xe1, 0x78, 0xd5, 0xd1, 0xef, 0xe1, 0x84, 0x40, 0x6e, 0x26, - 0x04, 0xf2, 0x2d, 0x58, 0xd5, 0x4d, 0xd7, 0xa3, 0x5b, 0xa4, 0xeb, 0x58, 0x7d, 0x5b, 0xee, 0x3b, - 0x86, 0x5b, 0xb2, 0xa8, 0xd7, 0x59, 0xf1, 0x87, 0x76, 0xc8, 0xc8, 0x81, 0x63, 0xb8, 0x64, 0xf6, - 0x88, 0x0d, 0x59, 0x44, 0xb2, 0x19, 0x96, 0x90, 0x05, 0x59, 0x44, 0x7a, 0x1c, 0xb2, 0xf8, 0x53, - 0x5b, 0x77, 0xb8, 0xfd, 0xbe, 0xc5, 0xec, 0xc7, 0x48, 0xc4, 0x7e, 0xe5, 0x2a, 0xac, 0xc6, 0x38, - 0x98, 0x87, 0xba, 0x42, 0xeb, 0x90, 0x66, 0x76, 0x45, 0x1b, 0x80, 0x3a, 0xfb, 0xd5, 0xfd, 0x83, - 0xce, 0x50, 0x2e, 0x57, 0x84, 0x1c, 0xcd, 0xf2, 0x3a, 0x8d, 0x56, 0xb3, 0xd1, 0xdc, 0x29, 0x0a, - 0x28, 0x0b, 0x8b, 0xd2, 0x41, 0x93, 0x3e, 0xcc, 0xa1, 0x65, 0xc8, 0x4a, 0xf5, 0x5a, 0xab, 0x59, - 0x6b, 0xec, 0x12, 0xc2, 0x3c, 0xca, 0xc1, 0x52, 0x67, 0xbf, 0xd5, 0x6e, 0x93, 0xa7, 0x14, 0xca, - 0xc0, 0x42, 0x5d, 0x92, 0x5a, 0x52, 0x71, 0x41, 0xfc, 0xee, 0x02, 0xe4, 0xf9, 0xbb, 0x3c, 0xb0, - 0x35, 0x72, 0x53, 0x7d, 0x11, 0xd6, 0x34, 0xec, 0xea, 0x0e, 0x39, 0xda, 0xe1, 0x2d, 0xc5, 0x52, - 0x31, 0xc4, 0xc7, 0xc2, 0x5b, 0xea, 0x6d, 0x28, 0xfb, 0x12, 0x31, 0xf1, 0x8f, 0x65, 0x66, 0x25, - 0xce, 0xb1, 0x37, 0x12, 0x06, 0x0f, 0x60, 0xdd, 0x97, 0x8e, 0x06, 0xb2, 0xf4, 0x79, 0x03, 0xd9, - 0x2a, 0x97, 0x8f, 0xdc, 0x75, 0x2b, 0x43, 0x6a, 0x90, 0xb8, 0x25, 0xeb, 0x9a, 0x1f, 0x8e, 0x43, - 0x6a, 0x90, 0x08, 0xd5, 0xd0, 0xc8, 0x36, 0xf0, 0x05, 0x42, 0xf5, 0x26, 0x16, 0x99, 0x8b, 0x7c, - 0xa4, 0x11, 0x94, 0x9d, 0x4e, 0xe0, 0xe2, 0xe8, 0xf4, 0xe1, 0x5b, 0x6f, 0x66, 0xdc, 0x85, 0x91, - 0xaf, 0x1a, 0xbe, 0xf0, 0x96, 0x87, 0x10, 0x85, 0xaf, 0x7a, 0xcf, 0x81, 0x8f, 0x57, 0x1e, 0x44, - 0x51, 0xa0, 0xfb, 0xd9, 0x47, 0xb6, 0x1b, 0x04, 0xd3, 0xdf, 0x10, 0xe0, 0xd9, 0xe0, 0x75, 0x4c, - 0xf4, 0xd6, 0xb9, 0xcf, 0xef, 0xad, 0x9f, 0xf2, 0x5f, 0xe9, 0x78, 0xa7, 0xfd, 0x0a, 0x6c, 0x0c, - 0xc1, 0xf1, 0x77, 0x14, 0x2f, 0xaf, 0x44, 0xa6, 0xe1, 0x7b, 0x4a, 0xfc, 0xc7, 0x34, 0x64, 0x5a, - 0x36, 0x76, 0xa8, 0x52, 0xb1, 0xa9, 0xa6, 0xef, 0x98, 0xe7, 0x42, 0x8e, 0xf9, 0x7d, 0x28, 0x58, - 0xbe, 0x10, 0x7b, 0x7f, 0xf3, 0x63, 0x7c, 0x58, 0x30, 0xff, 0x16, 0x79, 0xa5, 0x52, 0x3e, 0x10, - 0xa5, 0x6f, 0xf8, 0xeb, 0x81, 0x1f, 0x4c, 0xd1, 0x39, 0x9e, 0x9a, 0x30, 0xc7, 0x90, 0x27, 0xdc, - 0x80, 0xb4, 0x86, 0x3d, 0x45, 0x37, 0xf8, 0x16, 0xe2, 0x4f, 0x31, 0x1e, 0x72, 0x21, 0xce, 0x43, - 0x46, 0x62, 0x52, 0x7a, 0x28, 0x26, 0x3d, 0x0e, 0x59, 0x4f, 0x71, 0xba, 0xd8, 0x63, 0xc3, 0x6c, - 0x4b, 0x03, 0x23, 0x51, 0x86, 0x8b, 0x00, 0xae, 0xa7, 0x38, 0x1e, 0xf3, 0x51, 0xec, 0x1a, 0x90, - 0xa1, 0x14, 0xea, 0xe2, 0x1f, 0xa1, 0xf1, 0x8b, 0x0d, 0xb2, 0x4c, 0x6f, 0x11, 0x9b, 0x1a, 0x19, - 0x12, 0xa5, 0x89, 0xae, 0x27, 0x0b, 0x8b, 0xed, 0x7a, 0x73, 0x3b, 0xc6, 0xeb, 0x2c, 0x41, 0x6a, - 0xbb, 0xd5, 0xac, 0x33, 0x77, 0x53, 0xbd, 0xd1, 0x92, 0xf6, 0xa9, 0xbb, 0x11, 0xff, 0x6f, 0x0e, - 0x52, 0xd4, 0xa4, 0x6b, 0x50, 0xdc, 0xff, 0xb0, 0x5d, 0x1f, 0x9a, 0x10, 0x41, 0xa1, 0x26, 0xd5, - 0xab, 0xfb, 0x75, 0xb9, 0xb6, 0x7b, 0xd0, 0xd9, 0xaf, 0x4b, 0x45, 0x81, 0xd0, 0xb6, 0xeb, 0xbb, - 0xf5, 0x10, 0x6d, 0x8e, 0xd0, 0x0e, 0xda, 0x3b, 0x52, 0x75, 0xbb, 0x2e, 0xef, 0x55, 0x29, 0x6d, - 0x1e, 0xad, 0x40, 0xde, 0xa7, 0x35, 0x5b, 0xdb, 0xf5, 0x4e, 0x31, 0x45, 0xd8, 0xa4, 0x7a, 0xbb, - 0xda, 0x90, 0x02, 0xd1, 0x05, 0x26, 0xba, 0x1d, 0x5e, 0x22, 0x4d, 0xc0, 0xf0, 0x65, 0x89, 0xa4, - 0xdc, 0x6e, 0xb5, 0x76, 0x8b, 0x8b, 0x84, 0xca, 0x17, 0x1e, 0x50, 0x97, 0xd0, 0x05, 0x28, 0x75, - 0xea, 0xfb, 0x03, 0x92, 0xbc, 0x57, 0x6d, 0x56, 0x77, 0xea, 0x7b, 0xf5, 0xe6, 0x7e, 0x31, 0x83, - 0xd6, 0x61, 0xa5, 0x7a, 0xb0, 0xdf, 0x92, 0xf9, 0xb2, 0x0c, 0x08, 0x10, 0x03, 0x52, 0x72, 0x14, - 0x60, 0x16, 0x15, 0x00, 0xc8, 0x64, 0xbb, 0xd5, 0x1b, 0xf5, 0xdd, 0x4e, 0x31, 0x87, 0x56, 0x61, - 0x99, 0x3c, 0x33, 0x9d, 0xe4, 0xea, 0xc1, 0xfe, 0xcd, 0x62, 0x9e, 0x5a, 0x3f, 0xb2, 0x62, 0xa7, - 0xf1, 0x51, 0xbd, 0x58, 0x08, 0xe8, 0xf5, 0xfd, 0x3b, 0x2d, 0xe9, 0x96, 0xdc, 0x6e, 0xed, 0x36, - 0x6a, 0x1f, 0x16, 0x97, 0x51, 0x19, 0x36, 0xd8, 0x24, 0x8d, 0xe6, 0x7e, 0xbd, 0x59, 0x6d, 0xd6, - 0xea, 0xfe, 0x58, 0x51, 0xfc, 0x25, 0x01, 0xd6, 0x6a, 0x34, 0xc0, 0x73, 0x4f, 0x2f, 0xe1, 0x6f, - 0xf5, 0xb1, 0xeb, 0x91, 0x6d, 0x62, 0x3b, 0xd6, 0xc7, 0x58, 0xf5, 0x88, 0x67, 0x64, 0x87, 0x2b, - 0xc3, 0x29, 0x0d, 0x2d, 0xf6, 0x84, 0xbd, 0x06, 0x8b, 0x3c, 0xad, 0xe1, 0x05, 0xb7, 0x0b, 0xe3, - 0xd2, 0x03, 0xc9, 0x67, 0x16, 0x31, 0xac, 0xec, 0x60, 0x6f, 0xfa, 0xf5, 0x69, 0x1d, 0x95, 0x5f, - 0x8d, 0x34, 0x5e, 0x49, 0xc8, 0xf8, 0x77, 0x22, 0x5a, 0x7e, 0x59, 0x63, 0x71, 0x6c, 0xd6, 0x4b, - 0xa1, 0xeb, 0x90, 0xee, 0xd3, 0x95, 0xf8, 0xad, 0x54, 0x1c, 0x67, 0x08, 0x86, 0x49, 0xe2, 0x12, - 0xe2, 0x3f, 0x0b, 0xb0, 0xce, 0x48, 0xc1, 0x65, 0x69, 0x66, 0x38, 0x2f, 0x41, 0x2e, 0x12, 0x00, - 0x59, 0x1c, 0x07, 0x73, 0x10, 0xf9, 0x2e, 0x73, 0x0e, 0xdf, 0x2f, 0x33, 0x87, 0x44, 0x2f, 0xde, - 0x7e, 0x88, 0x8f, 0x36, 0x61, 0xd2, 0x43, 0x4d, 0x18, 0xf1, 0x3f, 0x05, 0xb8, 0xd8, 0xc1, 0x5e, - 0x5c, 0x5c, 0xfb, 0x0a, 0xf5, 0x7a, 0x1f, 0xb2, 0xe1, 0x88, 0xbc, 0xf0, 0x90, 0x11, 0x39, 0x2c, - 0x2c, 0x7e, 0x57, 0x80, 0x52, 0x07, 0x7b, 0xbb, 0x91, 0x1b, 0xff, 0xec, 0x94, 0x8b, 0xa9, 0x39, - 0xa4, 0xe2, 0x6a, 0x0e, 0xe2, 0xf7, 0x05, 0x78, 0xb4, 0x83, 0xbd, 0x91, 0xb4, 0x6a, 0x76, 0xd0, - 0xe2, 0xab, 0x1c, 0xa9, 0x84, 0x2a, 0x87, 0xf8, 0x63, 0x01, 0x36, 0x3a, 0xd8, 0x8b, 0x24, 0x6c, - 0x33, 0xc3, 0x36, 0x52, 0x0c, 0x49, 0x7d, 0xae, 0x62, 0x88, 0xf8, 0x2b, 0x02, 0xac, 0xd2, 0xb7, - 0xcd, 0x93, 0xaa, 0xd9, 0x21, 0x8e, 0x14, 0x46, 0x52, 0x43, 0x85, 0x11, 0xf1, 0x3b, 0x02, 0xac, - 0x32, 0x3f, 0xc1, 0xb2, 0xa3, 0xd9, 0xe1, 0x78, 0x0a, 0x0a, 0x43, 0xd9, 0x19, 0x7b, 0xa3, 0xf9, - 0x5e, 0x24, 0x2d, 0xfb, 0xdb, 0x39, 0x58, 0x23, 0xdb, 0x6d, 0x50, 0x29, 0x9b, 0x19, 0xa2, 0x9b, - 0x90, 0x56, 0x54, 0xcf, 0x47, 0x52, 0x48, 0xa8, 0xe9, 0xc4, 0x81, 0xd9, 0xaa, 0x52, 0x39, 0x89, - 0xcb, 0xa3, 0xd7, 0x03, 0x4f, 0x7d, 0xce, 0xea, 0x9f, 0xef, 0xa6, 0xdb, 0x90, 0x66, 0x53, 0x91, - 0x3c, 0xe7, 0xa0, 0x79, 0xab, 0xd9, 0xba, 0xd3, 0x64, 0x97, 0x2f, 0x12, 0x6b, 0xdb, 0xd5, 0x4e, - 0xe7, 0x4e, 0x4b, 0xda, 0x2e, 0x0a, 0x24, 0x03, 0xd8, 0xa9, 0x37, 0xeb, 0x12, 0xc9, 0x26, 0x02, - 0xf2, 0x9c, 0xcf, 0x78, 0xd0, 0xa9, 0x4b, 0xcd, 0xea, 0x5e, 0xbd, 0x38, 0x2f, 0x1e, 0xc3, 0xda, - 0x36, 0x36, 0xf0, 0xec, 0xc3, 0x93, 0x78, 0x13, 0x56, 0x77, 0x75, 0xd7, 0x8f, 0xb8, 0x53, 0xec, - 0x60, 0xb1, 0x0f, 0x6b, 0xd1, 0x99, 0x5c, 0xdb, 0x32, 0x5d, 0x8c, 0xde, 0x80, 0x25, 0xbe, 0x9c, - 0x5b, 0x12, 0x68, 0xd9, 0x6d, 0x7c, 0x2e, 0x10, 0x70, 0xa3, 0x27, 0x20, 0xdf, 0xd3, 0x5d, 0x97, - 0xf8, 0x0f, 0xb2, 0x02, 0xeb, 0xfe, 0x64, 0xa4, 0x1c, 0x27, 0x7e, 0x44, 0x68, 0xe2, 0x09, 0xac, - 0xee, 0x60, 0x2f, 0xc8, 0xaf, 0xa7, 0xb0, 0xd4, 0x65, 0xc8, 0x0d, 0x6e, 0x05, 0x81, 0xad, 0xb2, - 0x01, 0xad, 0xa1, 0x89, 0xef, 0xc3, 0x3a, 0xd1, 0x31, 0x58, 0x6d, 0x1a, 0x7b, 0x99, 0xb0, 0x51, - 0x53, 0x4c, 0x15, 0x1b, 0x5f, 0x12, 0xf6, 0x07, 0xb0, 0x31, 0x8c, 0x9d, 0xbf, 0xa1, 0x77, 0x00, - 0x02, 0x46, 0xff, 0x1d, 0x3d, 0x36, 0xfe, 0x1a, 0x23, 0x85, 0x24, 0xce, 0xf7, 0x9e, 0x6e, 0xc1, - 0xc6, 0x0e, 0xf6, 0x88, 0xbb, 0xc7, 0xce, 0xb4, 0xfe, 0x5d, 0xfc, 0xe5, 0x39, 0xc8, 0x85, 0xa7, - 0x42, 0xaf, 0xc1, 0xa6, 0x86, 0x8f, 0x94, 0xbe, 0xe1, 0x8d, 0x94, 0xd3, 0xd8, 0x84, 0xeb, 0x7c, - 0x78, 0xa8, 0x9c, 0xb6, 0x05, 0xab, 0xa7, 0x8a, 0xa1, 0x47, 0x6b, 0x18, 0xfe, 0x37, 0x2d, 0x2b, - 0x74, 0x28, 0x54, 0xc2, 0x70, 0xd9, 0xed, 0x9f, 0xad, 0x13, 0x4a, 0x74, 0x52, 0xfe, 0xed, 0x9f, - 0x8e, 0x0c, 0x6e, 0xff, 0x57, 0x81, 0x4d, 0x11, 0xe2, 0x75, 0x4b, 0x0b, 0x74, 0xee, 0x65, 0x3a, - 0x10, 0xb0, 0xba, 0xe8, 0x25, 0x58, 0x67, 0xbc, 0x51, 0xff, 0xca, 0xbe, 0x57, 0xc9, 0x48, 0x0c, - 0x66, 0xe4, 0xf2, 0xeb, 0x8a, 0x7f, 0x20, 0xc0, 0x3a, 0xcb, 0xd8, 0x67, 0x9f, 0x1f, 0x5e, 0x87, - 0x4c, 0x90, 0x47, 0xf1, 0x78, 0x39, 0xa1, 0xae, 0xbf, 0xe4, 0xe7, 0x58, 0xe2, 0xaf, 0x0b, 0xb0, - 0xce, 0xfc, 0xd9, 0xcf, 0x40, 0x1e, 0x4b, 0x9c, 0x2b, 0x39, 0x08, 0x3e, 0x94, 0xd9, 0x45, 0x6d, - 0xf1, 0xd7, 0x04, 0x40, 0x3b, 0x83, 0x7c, 0xf7, 0xab, 0x54, 0xfa, 0x7f, 0x52, 0xb0, 0xe4, 0xe3, - 0x88, 0xad, 0x93, 0xbc, 0x0e, 0x69, 0x9e, 0x0c, 0xcd, 0x9d, 0xaf, 0x7b, 0xc6, 0xd9, 0x1f, 0xb2, - 0x53, 0x37, 0xb6, 0x88, 0x5e, 0x82, 0x45, 0xff, 0xd4, 0xb2, 0x3a, 0xba, 0xff, 0x98, 0x54, 0xac, - 0x3d, 0x4a, 0x2a, 0xd6, 0xbe, 0x1d, 0x54, 0x65, 0xba, 0x34, 0x2b, 0x78, 0x72, 0xec, 0x56, 0x9d, - 0x5c, 0x9e, 0x3e, 0x8e, 0x2b, 0xbe, 0x0c, 0x5d, 0x1c, 0x52, 0x53, 0x5c, 0x1c, 0x50, 0x0d, 0xa0, - 0xa7, 0x98, 0x4a, 0x17, 0xf7, 0xb0, 0xe9, 0xf1, 0x04, 0xe4, 0x89, 0xc4, 0xa9, 0xf6, 0x02, 0x56, - 0x29, 0x24, 0x46, 0x6e, 0xf0, 0x53, 0x56, 0x84, 0x37, 0x00, 0xf1, 0x07, 0xf9, 0x4e, 0x63, 0xff, - 0xa6, 0xcc, 0xea, 0xbf, 0xf3, 0xc3, 0x95, 0xe2, 0x54, 0xa4, 0x52, 0xbc, 0x30, 0xa8, 0x14, 0xa7, - 0xc5, 0x1f, 0x0a, 0x50, 0x88, 0x42, 0x24, 0xc1, 0x89, 0xa8, 0x2a, 0xf7, 0xed, 0xae, 0xa3, 0x68, - 0xfe, 0xe7, 0x48, 0x54, 0xfd, 0x03, 0x46, 0x42, 0x8f, 0x33, 0x53, 0xca, 0x0e, 0xb6, 0x15, 0xdd, - 0xe1, 0x5f, 0x09, 0x00, 0x21, 0x49, 0x94, 0x82, 0xda, 0xb0, 0xcc, 0xc5, 0x65, 0xcb, 0xf6, 0x2b, - 0x9b, 0xc9, 0x9d, 0xaa, 0xea, 0x60, 0xee, 0x16, 0x63, 0x97, 0x0a, 0xfd, 0xc8, 0xb3, 0xd8, 0x03, - 0x34, 0xca, 0x85, 0x5e, 0x85, 0xcd, 0x30, 0x56, 0x39, 0x54, 0x1f, 0x63, 0xa7, 0x65, 0x2d, 0x04, - 0xbb, 0x13, 0x94, 0xca, 0x26, 0x36, 0xb4, 0xc5, 0x0e, 0xac, 0x8c, 0x74, 0x99, 0xd0, 0x3b, 0x90, - 0xfe, 0x44, 0x37, 0x35, 0xeb, 0x93, 0xb1, 0x1f, 0x57, 0x85, 0xe4, 0xee, 0x50, 0x6e, 0x89, 0x4b, - 0x89, 0xbf, 0x2a, 0x44, 0x66, 0x65, 0xa3, 0xa8, 0x0b, 0x25, 0x4d, 0xd1, 0x8d, 0x33, 0x39, 0xdc, - 0x05, 0xe3, 0xeb, 0xb0, 0xc3, 0x1d, 0xff, 0x69, 0xc9, 0x36, 0x11, 0x1a, 0x99, 0xee, 0xe6, 0xd7, - 0xa4, 0x0d, 0x2d, 0x76, 0xe4, 0xc6, 0x12, 0xa4, 0x59, 0x73, 0x4d, 0xec, 0xc0, 0x46, 0xbc, 0xf4, - 0x50, 0x8d, 0x71, 0x6e, 0xb8, 0xc6, 0x58, 0x86, 0x25, 0xad, 0xcf, 0x12, 0x09, 0xee, 0xd6, 0x82, - 0x67, 0xf1, 0xdf, 0x04, 0xb8, 0x10, 0x2a, 0x17, 0x84, 0x36, 0xfd, 0x57, 0x58, 0x2d, 0xf8, 0x42, - 0x0e, 0xea, 0x8f, 0xd8, 0x6d, 0xd7, 0xd7, 0xac, 0xa3, 0xdf, 0xc3, 0x5f, 0xa5, 0x4e, 0x17, 0x79, - 0xd3, 0x9e, 0xb9, 0xee, 0x05, 0xea, 0xba, 0x33, 0xa6, 0xef, 0xb3, 0xc5, 0xdf, 0x12, 0xe0, 0x31, - 0xc9, 0x32, 0x8c, 0x43, 0x45, 0x3d, 0xf1, 0x21, 0xf3, 0x13, 0xf0, 0x55, 0x86, 0xb4, 0x03, 0x96, - 0x8c, 0x87, 0xe2, 0x38, 0xcf, 0x67, 0xa3, 0xdf, 0x20, 0x08, 0x0f, 0xf7, 0x0d, 0x82, 0x78, 0x1f, - 0x56, 0xe3, 0x9a, 0x2b, 0xc9, 0x9f, 0xa8, 0x3d, 0x09, 0x85, 0x9e, 0x6e, 0x86, 0x83, 0x1f, 0xfb, - 0x68, 0x3a, 0xd7, 0xd3, 0xcd, 0x41, 0xe0, 0x23, 0x5c, 0xca, 0xa7, 0xa3, 0x21, 0x32, 0xd7, 0x53, - 0x3e, 0x0d, 0xb8, 0xc4, 0xbf, 0x9c, 0x83, 0x62, 0x07, 0x7b, 0xac, 0x23, 0x38, 0x3b, 0xe3, 0x1e, - 0x8e, 0x7e, 0x11, 0xc1, 0x3e, 0xbf, 0x7e, 0x33, 0xe9, 0xf6, 0x1c, 0x41, 0xf4, 0xf9, 0x3f, 0x8d, - 0x58, 0x88, 0xff, 0x34, 0xe2, 0x8b, 0xe8, 0x86, 0x7e, 0x5b, 0xa0, 0x35, 0x87, 0xd0, 0x97, 0x13, - 0x33, 0x33, 0x5f, 0x68, 0x2f, 0xa4, 0xa2, 0x9f, 0xd8, 0x7d, 0x0c, 0x1b, 0x34, 0x28, 0x34, 0xda, - 0x12, 0xff, 0x4e, 0x7f, 0x76, 0xd9, 0x65, 0x0f, 0x1e, 0xa9, 0x59, 0x3d, 0x9b, 0xa4, 0xd5, 0x5f, - 0xc6, 0x72, 0x27, 0xb0, 0x32, 0xf2, 0xd5, 0x39, 0x79, 0xc9, 0xa1, 0xef, 0xce, 0xf9, 0xc6, 0x26, - 0xab, 0xcd, 0x4b, 0x45, 0x25, 0xcc, 0x4d, 0x8e, 0xc0, 0xb3, 0x10, 0xa6, 0xb1, 0xab, 0x13, 0x03, - 0xb0, 0x1c, 0xa2, 0xd3, 0x4a, 0xf1, 0x4f, 0x04, 0xd8, 0x24, 0x0e, 0x32, 0xf2, 0x05, 0xcb, 0xcc, - 0xde, 0xe7, 0xe8, 0x67, 0x35, 0xa9, 0xcf, 0xf9, 0x59, 0x8d, 0xf8, 0x53, 0x5e, 0x68, 0x1d, 0xf9, - 0xa0, 0x64, 0x66, 0xe0, 0xe3, 0xbf, 0x76, 0x49, 0x4d, 0xf9, 0xb5, 0xcb, 0x4b, 0xff, 0x75, 0x15, - 0x0a, 0xfc, 0xb2, 0xcc, 0x82, 0x98, 0x83, 0x7e, 0x47, 0x80, 0x5c, 0xb8, 0xc4, 0x83, 0xe2, 0x73, - 0xdd, 0x98, 0x7a, 0x52, 0xf9, 0xd9, 0x73, 0x70, 0x32, 0xef, 0x2d, 0xbe, 0xfe, 0xed, 0x7f, 0xfd, - 0xef, 0xdf, 0x9c, 0xbb, 0x86, 0x2a, 0x95, 0xd3, 0x6b, 0x15, 0x6e, 0x19, 0xb7, 0x72, 0x7f, 0x60, - 0xb5, 0x07, 0x15, 0x5a, 0x65, 0xa8, 0xdc, 0x27, 0xff, 0x3c, 0xa8, 0x04, 0xe5, 0xa2, 0xef, 0x09, - 0x00, 0x83, 0xe6, 0x11, 0x8a, 0xd7, 0x7d, 0xa4, 0xbb, 0x54, 0x1e, 0x5b, 0x8d, 0x12, 0xb7, 0x29, - 0x9a, 0x77, 0xd0, 0xdb, 0x0f, 0x89, 0xa6, 0x72, 0x7f, 0xf0, 0xce, 0x1e, 0xa0, 0xdf, 0x16, 0x20, - 0x1f, 0x69, 0xad, 0xa1, 0x78, 0x83, 0xc4, 0xb5, 0xdf, 0xca, 0x13, 0x4a, 0x31, 0xe2, 0x75, 0x0a, - 0xf1, 0x15, 0xf1, 0x61, 0x0d, 0x76, 0x5d, 0xb8, 0x8a, 0x7e, 0x5f, 0x80, 0x7c, 0xa4, 0x11, 0x96, - 0x00, 0x2c, 0xae, 0x59, 0x36, 0x11, 0xd8, 0x0e, 0x05, 0x56, 0x2d, 0x4f, 0x65, 0x3b, 0x82, 0xf2, - 0xef, 0x05, 0x28, 0x44, 0xfb, 0x60, 0xe8, 0xea, 0x18, 0x98, 0x43, 0xf7, 0xed, 0x89, 0x38, 0xbb, - 0x14, 0xa7, 0x22, 0xde, 0x9d, 0x06, 0x67, 0x25, 0xc8, 0x20, 0x2a, 0xf7, 0xc3, 0x89, 0xcb, 0x83, - 0x0a, 0xab, 0x12, 0x13, 0x3d, 0xfe, 0x23, 0x9a, 0xf6, 0x85, 0xd3, 0x8b, 0x97, 0x92, 0x02, 0x6f, - 0x72, 0xb3, 0x6c, 0xa2, 0x5e, 0x06, 0xd5, 0xeb, 0x48, 0x54, 0x66, 0xa3, 0x57, 0xe8, 0xfa, 0x4a, - 0x94, 0xfb, 0x53, 0x01, 0x56, 0x46, 0x5a, 0x5f, 0xe8, 0x85, 0xc4, 0x84, 0x22, 0xae, 0x45, 0x36, - 0x51, 0xa5, 0x16, 0x55, 0xa9, 0x21, 0x6e, 0x4f, 0xa5, 0x12, 0x6f, 0x8e, 0x11, 0xd4, 0x7f, 0xc3, - 0xb2, 0x86, 0xd1, 0xef, 0x8d, 0x92, 0xfb, 0x08, 0x09, 0x3d, 0xb4, 0x89, 0xd8, 0x25, 0x8a, 0x7d, - 0x57, 0xdc, 0x99, 0x0a, 0xfb, 0xa0, 0x75, 0x46, 0xe0, 0xff, 0x91, 0x00, 0xcb, 0x43, 0x6d, 0x33, - 0xf4, 0x5c, 0x12, 0xf2, 0x98, 0xe6, 0xda, 0x44, 0xd0, 0x4d, 0x0a, 0xfa, 0xa6, 0x58, 0x9b, 0x0a, - 0x34, 0xeb, 0x9a, 0x11, 0xc0, 0x3f, 0x12, 0x20, 0x17, 0x6e, 0x99, 0x25, 0xc4, 0x90, 0x98, 0xae, - 0xda, 0x44, 0xa8, 0x1f, 0x50, 0xa8, 0xb7, 0xc4, 0xf7, 0xa6, 0xdc, 0x1b, 0x7c, 0x59, 0x82, 0xf6, - 0x0f, 0x05, 0xc8, 0x85, 0x1b, 0x6b, 0x09, 0x68, 0x63, 0x7a, 0x6f, 0x5f, 0x92, 0x61, 0x59, 0xb1, - 0x98, 0x40, 0xfd, 0x13, 0x01, 0xf2, 0x91, 0x2e, 0x57, 0x82, 0x27, 0x8f, 0xeb, 0x84, 0x4d, 0x04, - 0x7b, 0x40, 0xc1, 0xb6, 0xc4, 0xf7, 0xa7, 0xf2, 0xe4, 0x6e, 0x78, 0x69, 0x82, 0xf9, 0x77, 0x05, - 0xc8, 0x47, 0xfa, 0x5c, 0x09, 0x98, 0xe3, 0x7a, 0x61, 0x13, 0x31, 0xf3, 0xc8, 0x7d, 0x75, 0xba, - 0xc8, 0xfd, 0x03, 0x01, 0x0a, 0xd1, 0xb6, 0x49, 0x42, 0xe8, 0x89, 0xed, 0x0b, 0x95, 0x9f, 0x3b, - 0x17, 0x2f, 0xcf, 0x7c, 0xde, 0xa4, 0x88, 0x5f, 0x46, 0xd7, 0xce, 0x89, 0x38, 0xd4, 0x82, 0xf9, - 0x3d, 0x01, 0x72, 0xe1, 0x36, 0x58, 0xc2, 0x46, 0x8d, 0xe9, 0x94, 0x4d, 0xb4, 0xe3, 0x4d, 0x8a, - 0xea, 0x06, 0x7a, 0xf7, 0xa1, 0x51, 0x55, 0xee, 0x87, 0x7b, 0x52, 0x0f, 0xd0, 0x67, 0x02, 0x2c, - 0x0f, 0xb5, 0xbc, 0x12, 0x9c, 0x55, 0x7c, 0x63, 0xac, 0xbc, 0xe1, 0x33, 0xfb, 0x7f, 0xec, 0xbc, - 0x55, 0xef, 0xd9, 0xde, 0xd9, 0x43, 0x7b, 0xd6, 0x44, 0x88, 0xd7, 0x55, 0xba, 0x30, 0xd9, 0x9b, - 0xdf, 0x17, 0x60, 0x79, 0xa8, 0x61, 0x95, 0x00, 0x36, 0xbe, 0xad, 0x55, 0xbe, 0x9c, 0x70, 0xfc, - 0x06, 0x9c, 0xe2, 0x5b, 0x14, 0xf7, 0xab, 0xe8, 0xe5, 0x73, 0xe2, 0x76, 0xa9, 0x30, 0xaf, 0xbb, - 0xff, 0x44, 0x80, 0x7c, 0xa4, 0xfe, 0x81, 0x92, 0x93, 0xec, 0xe1, 0x5e, 0x47, 0xf9, 0xea, 0x79, - 0x58, 0xf9, 0xb6, 0xe4, 0x9e, 0x0a, 0xbd, 0xf7, 0xc5, 0xa4, 0x11, 0xe8, 0xcf, 0x04, 0xc8, 0x86, - 0xba, 0x22, 0xe8, 0x99, 0x24, 0xab, 0x0e, 0xe7, 0x71, 0xe3, 0x6b, 0x38, 0xe2, 0x37, 0x28, 0xce, - 0x3b, 0xe8, 0x60, 0x26, 0xe9, 0x0e, 0xfa, 0x63, 0x01, 0x0a, 0xd1, 0x66, 0x5b, 0x82, 0x27, 0x88, - 0xed, 0xc8, 0x7d, 0x49, 0xd1, 0x2b, 0x40, 0x4f, 0xb6, 0xf0, 0x5f, 0x0b, 0x50, 0x88, 0xb6, 0xdd, - 0x12, 0x10, 0xc7, 0xf6, 0xe6, 0x26, 0x22, 0xe6, 0xf6, 0xbe, 0x3a, 0x23, 0x7b, 0xff, 0xbb, 0x00, - 0x9b, 0x09, 0x55, 0x47, 0x14, 0xff, 0x21, 0xf2, 0xf8, 0x1a, 0xe5, 0x44, 0x7d, 0x74, 0xaa, 0x8f, - 0x2a, 0x7e, 0x73, 0x26, 0xfa, 0x5c, 0x77, 0x38, 0x3a, 0x7e, 0x11, 0x58, 0x8f, 0xad, 0x6c, 0xa3, - 0x6b, 0x93, 0xee, 0x01, 0x23, 0x55, 0xf0, 0x89, 0x7a, 0x99, 0x54, 0xaf, 0x63, 0x51, 0x9d, 0xcd, - 0x35, 0x80, 0x46, 0x75, 0x1f, 0x13, 0x51, 0xee, 0x33, 0x01, 0x32, 0x41, 0xc5, 0x10, 0x3d, 0x75, - 0xae, 0x8a, 0xe2, 0x44, 0x25, 0x6e, 0x53, 0x25, 0xda, 0xe2, 0xad, 0xa9, 0x94, 0x88, 0x96, 0x28, - 0x79, 0x02, 0x9d, 0x8f, 0x54, 0x0d, 0x93, 0xd3, 0xa6, 0x91, 0xca, 0xe2, 0x97, 0x94, 0xf1, 0x0f, - 0xfe, 0xfe, 0x8b, 0x00, 0xfe, 0x0b, 0x92, 0xf1, 0x47, 0x4b, 0x8c, 0x49, 0x19, 0x7f, 0x6c, 0x21, - 0x72, 0x22, 0xe8, 0x3b, 0x14, 0xf4, 0x07, 0xe2, 0xee, 0x74, 0xb9, 0x1e, 0x5d, 0xdc, 0xf6, 0x17, - 0x27, 0xc8, 0xff, 0x4e, 0x00, 0x34, 0x5a, 0xb0, 0x44, 0x5b, 0xf1, 0x4e, 0x34, 0xa9, 0xb2, 0x39, - 0x11, 0xff, 0x47, 0x14, 0xff, 0xbe, 0xd8, 0x9a, 0x0a, 0xbf, 0xea, 0xaf, 0x1f, 0x51, 0xe1, 0x1f, - 0xd8, 0x75, 0x2b, 0xdc, 0xb7, 0x49, 0xbe, 0x6e, 0xc5, 0x74, 0x77, 0x26, 0x82, 0x3f, 0xa6, 0xe0, - 0x0f, 0xc5, 0x6f, 0xcc, 0xec, 0xac, 0x12, 0x34, 0x44, 0x95, 0xbf, 0x12, 0x68, 0xa7, 0x21, 0xfa, - 0x47, 0xe8, 0xcf, 0x27, 0xea, 0x12, 0x53, 0x88, 0x9d, 0xa8, 0xcc, 0xcf, 0x53, 0x65, 0x24, 0x71, - 0x6f, 0xda, 0x5b, 0x43, 0x64, 0x75, 0x02, 0xfe, 0xa7, 0xfc, 0xd6, 0x3e, 0xd2, 0x50, 0x1d, 0xf3, - 0xf5, 0x5f, 0x7c, 0x41, 0x76, 0xa2, 0x12, 0x77, 0xa9, 0x12, 0xb7, 0xc5, 0x0f, 0xa6, 0xbf, 0xfa, - 0x0c, 0x21, 0xb8, 0x2e, 0x5c, 0xbd, 0xf1, 0x43, 0x01, 0x36, 0x55, 0xab, 0x17, 0x87, 0xe1, 0xc6, - 0x6a, 0xcd, 0xff, 0x1b, 0x72, 0x5a, 0x66, 0x68, 0x93, 0x9c, 0xb7, 0x2d, 0x7c, 0xf4, 0x36, 0xe7, - 0xed, 0x5a, 0x86, 0x62, 0x76, 0xb7, 0x2c, 0xa7, 0x5b, 0xe9, 0x62, 0x93, 0x66, 0xc4, 0x15, 0x36, - 0xa4, 0xd8, 0xba, 0x1b, 0xf9, 0xdf, 0x86, 0xde, 0x0a, 0x1e, 0x3e, 0x9b, 0x7b, 0x64, 0x87, 0x89, - 0xd7, 0x0c, 0xab, 0xaf, 0x6d, 0xd5, 0x82, 0x05, 0x6f, 0x5f, 0xfb, 0x27, 0x7f, 0xec, 0x2e, 0x1d, - 0xbb, 0x1b, 0x8c, 0xdd, 0xbd, 0x7d, 0xed, 0x30, 0x4d, 0x17, 0x78, 0xf9, 0xff, 0x03, 0x00, 0x00, - 0xff, 0xff, 0x02, 0x2c, 0x64, 0x0b, 0xcd, 0x48, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/container/v1alpha1/cluster_service.pb.go b/vendor/google.golang.org/genproto/googleapis/container/v1alpha1/cluster_service.pb.go deleted file mode 100644 index ddf0e22d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/container/v1alpha1/cluster_service.pb.go +++ /dev/null @@ -1,5588 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/container/v1alpha1/cluster_service.proto - -/* -Package container is a generated protocol buffer package. - -It is generated from these files: - google/container/v1alpha1/cluster_service.proto - -It has these top-level messages: - NodeConfig - NodeTaint - MasterAuth - ClientCertificateConfig - AddonsConfig - HttpLoadBalancing - HorizontalPodAutoscaling - KubernetesDashboard - NetworkPolicyConfig - MasterAuthorizedNetworksConfig - NetworkPolicy - IPAllocationPolicy - PodSecurityPolicyConfig - Cluster - ClusterUpdate - Operation - CreateClusterRequest - GetClusterRequest - UpdateClusterRequest - UpdateNodePoolRequest - SetNodePoolAutoscalingRequest - SetLoggingServiceRequest - SetMonitoringServiceRequest - SetAddonsConfigRequest - SetLocationsRequest - UpdateMasterRequest - SetMasterAuthRequest - DeleteClusterRequest - ListClustersRequest - ListClustersResponse - GetOperationRequest - ListOperationsRequest - CancelOperationRequest - ListOperationsResponse - GetServerConfigRequest - ServerConfig - CreateNodePoolRequest - DeleteNodePoolRequest - ListNodePoolsRequest - GetNodePoolRequest - NodePool - NodeManagement - AutoUpgradeOptions - MaintenancePolicy - MaintenanceWindow - DailyMaintenanceWindow - SetNodePoolManagementRequest - SetNodePoolSizeRequest - RollbackNodePoolUpgradeRequest - ListNodePoolsResponse - NodePoolAutoscaling - SetLabelsRequest - SetLegacyAbacRequest - StartIPRotationRequest - CompleteIPRotationRequest - AcceleratorConfig - SetNetworkPolicyRequest - SetMaintenancePolicyRequest -*/ -package container - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Possible values for Effect in taint. -type NodeTaint_Effect int32 - -const ( - // Not set - NodeTaint_EFFECT_UNSPECIFIED NodeTaint_Effect = 0 - // NoSchedule - NodeTaint_NO_SCHEDULE NodeTaint_Effect = 1 - // PreferNoSchedule - NodeTaint_PREFER_NO_SCHEDULE NodeTaint_Effect = 2 - // NoExecute - NodeTaint_NO_EXECUTE NodeTaint_Effect = 3 -) - -var NodeTaint_Effect_name = map[int32]string{ - 0: "EFFECT_UNSPECIFIED", - 1: "NO_SCHEDULE", - 2: "PREFER_NO_SCHEDULE", - 3: "NO_EXECUTE", -} -var NodeTaint_Effect_value = map[string]int32{ - "EFFECT_UNSPECIFIED": 0, - "NO_SCHEDULE": 1, - "PREFER_NO_SCHEDULE": 2, - "NO_EXECUTE": 3, -} - -func (x NodeTaint_Effect) String() string { - return proto.EnumName(NodeTaint_Effect_name, int32(x)) -} -func (NodeTaint_Effect) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// Allowed Network Policy providers. -type NetworkPolicy_Provider int32 - -const ( - // Not set - NetworkPolicy_PROVIDER_UNSPECIFIED NetworkPolicy_Provider = 0 - // Tigera (Calico Felix). - NetworkPolicy_CALICO NetworkPolicy_Provider = 1 -) - -var NetworkPolicy_Provider_name = map[int32]string{ - 0: "PROVIDER_UNSPECIFIED", - 1: "CALICO", -} -var NetworkPolicy_Provider_value = map[string]int32{ - "PROVIDER_UNSPECIFIED": 0, - "CALICO": 1, -} - -func (x NetworkPolicy_Provider) String() string { - return proto.EnumName(NetworkPolicy_Provider_name, int32(x)) -} -func (NetworkPolicy_Provider) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 0} } - -// The current status of the cluster. -type Cluster_Status int32 - -const ( - // Not set. - Cluster_STATUS_UNSPECIFIED Cluster_Status = 0 - // The PROVISIONING state indicates the cluster is being created. - Cluster_PROVISIONING Cluster_Status = 1 - // The RUNNING state indicates the cluster has been created and is fully - // usable. - Cluster_RUNNING Cluster_Status = 2 - // The RECONCILING state indicates that some work is actively being done on - // the cluster, such as upgrading the master or node software. Details can - // be found in the `statusMessage` field. - Cluster_RECONCILING Cluster_Status = 3 - // The STOPPING state indicates the cluster is being deleted. - Cluster_STOPPING Cluster_Status = 4 - // The ERROR state indicates the cluster may be unusable. Details - // can be found in the `statusMessage` field. - Cluster_ERROR Cluster_Status = 5 -) - -var Cluster_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PROVISIONING", - 2: "RUNNING", - 3: "RECONCILING", - 4: "STOPPING", - 5: "ERROR", -} -var Cluster_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PROVISIONING": 1, - "RUNNING": 2, - "RECONCILING": 3, - "STOPPING": 4, - "ERROR": 5, -} - -func (x Cluster_Status) String() string { - return proto.EnumName(Cluster_Status_name, int32(x)) -} -func (Cluster_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} } - -// Current status of the operation. -type Operation_Status int32 - -const ( - // Not set. - Operation_STATUS_UNSPECIFIED Operation_Status = 0 - // The operation has been created. - Operation_PENDING Operation_Status = 1 - // The operation is currently running. - Operation_RUNNING Operation_Status = 2 - // The operation is done, either cancelled or completed. - Operation_DONE Operation_Status = 3 - // The operation is aborting. - Operation_ABORTING Operation_Status = 4 -) - -var Operation_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", - 4: "ABORTING", -} -var Operation_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, - "ABORTING": 4, -} - -func (x Operation_Status) String() string { - return proto.EnumName(Operation_Status_name, int32(x)) -} -func (Operation_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{15, 0} } - -// Operation type. -type Operation_Type int32 - -const ( - // Not set. - Operation_TYPE_UNSPECIFIED Operation_Type = 0 - // Cluster create. - Operation_CREATE_CLUSTER Operation_Type = 1 - // Cluster delete. - Operation_DELETE_CLUSTER Operation_Type = 2 - // A master upgrade. - Operation_UPGRADE_MASTER Operation_Type = 3 - // A node upgrade. - Operation_UPGRADE_NODES Operation_Type = 4 - // Cluster repair. - Operation_REPAIR_CLUSTER Operation_Type = 5 - // Cluster update. - Operation_UPDATE_CLUSTER Operation_Type = 6 - // Node pool create. - Operation_CREATE_NODE_POOL Operation_Type = 7 - // Node pool delete. - Operation_DELETE_NODE_POOL Operation_Type = 8 - // Set node pool management. - Operation_SET_NODE_POOL_MANAGEMENT Operation_Type = 9 - // Automatic node pool repair. - Operation_AUTO_REPAIR_NODES Operation_Type = 10 - // Automatic node upgrade. - Operation_AUTO_UPGRADE_NODES Operation_Type = 11 - // Set labels. - Operation_SET_LABELS Operation_Type = 12 - // Set/generate master auth materials - Operation_SET_MASTER_AUTH Operation_Type = 13 - // Set node pool size. - Operation_SET_NODE_POOL_SIZE Operation_Type = 14 - // Updates network policy for a cluster. - Operation_SET_NETWORK_POLICY Operation_Type = 15 - // Set the maintenance policy. - Operation_SET_MAINTENANCE_POLICY Operation_Type = 16 -) - -var Operation_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "CREATE_CLUSTER", - 2: "DELETE_CLUSTER", - 3: "UPGRADE_MASTER", - 4: "UPGRADE_NODES", - 5: "REPAIR_CLUSTER", - 6: "UPDATE_CLUSTER", - 7: "CREATE_NODE_POOL", - 8: "DELETE_NODE_POOL", - 9: "SET_NODE_POOL_MANAGEMENT", - 10: "AUTO_REPAIR_NODES", - 11: "AUTO_UPGRADE_NODES", - 12: "SET_LABELS", - 13: "SET_MASTER_AUTH", - 14: "SET_NODE_POOL_SIZE", - 15: "SET_NETWORK_POLICY", - 16: "SET_MAINTENANCE_POLICY", -} -var Operation_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "CREATE_CLUSTER": 1, - "DELETE_CLUSTER": 2, - "UPGRADE_MASTER": 3, - "UPGRADE_NODES": 4, - "REPAIR_CLUSTER": 5, - "UPDATE_CLUSTER": 6, - "CREATE_NODE_POOL": 7, - "DELETE_NODE_POOL": 8, - "SET_NODE_POOL_MANAGEMENT": 9, - "AUTO_REPAIR_NODES": 10, - "AUTO_UPGRADE_NODES": 11, - "SET_LABELS": 12, - "SET_MASTER_AUTH": 13, - "SET_NODE_POOL_SIZE": 14, - "SET_NETWORK_POLICY": 15, - "SET_MAINTENANCE_POLICY": 16, -} - -func (x Operation_Type) String() string { - return proto.EnumName(Operation_Type_name, int32(x)) -} -func (Operation_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{15, 1} } - -// Operation type: what type update to perform. -type SetMasterAuthRequest_Action int32 - -const ( - // Operation is unknown and will error out. - SetMasterAuthRequest_UNKNOWN SetMasterAuthRequest_Action = 0 - // Set the password to a user generated value. - SetMasterAuthRequest_SET_PASSWORD SetMasterAuthRequest_Action = 1 - // Generate a new password and set it to that. - SetMasterAuthRequest_GENERATE_PASSWORD SetMasterAuthRequest_Action = 2 - // Set the username. If an empty username is provided, basic authentication - // is disabled for the cluster. If a non-empty username is provided, basic - // authentication is enabled, with either a provided password or a generated - // one. - SetMasterAuthRequest_SET_USERNAME SetMasterAuthRequest_Action = 3 -) - -var SetMasterAuthRequest_Action_name = map[int32]string{ - 0: "UNKNOWN", - 1: "SET_PASSWORD", - 2: "GENERATE_PASSWORD", - 3: "SET_USERNAME", -} -var SetMasterAuthRequest_Action_value = map[string]int32{ - "UNKNOWN": 0, - "SET_PASSWORD": 1, - "GENERATE_PASSWORD": 2, - "SET_USERNAME": 3, -} - -func (x SetMasterAuthRequest_Action) String() string { - return proto.EnumName(SetMasterAuthRequest_Action_name, int32(x)) -} -func (SetMasterAuthRequest_Action) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{26, 0} -} - -// The current status of the node pool instance. -type NodePool_Status int32 - -const ( - // Not set. - NodePool_STATUS_UNSPECIFIED NodePool_Status = 0 - // The PROVISIONING state indicates the node pool is being created. - NodePool_PROVISIONING NodePool_Status = 1 - // The RUNNING state indicates the node pool has been created - // and is fully usable. - NodePool_RUNNING NodePool_Status = 2 - // The RUNNING_WITH_ERROR state indicates the node pool has been created - // and is partially usable. Some error state has occurred and some - // functionality may be impaired. Customer may need to reissue a request - // or trigger a new update. - NodePool_RUNNING_WITH_ERROR NodePool_Status = 3 - // The RECONCILING state indicates that some work is actively being done on - // the node pool, such as upgrading node software. Details can - // be found in the `statusMessage` field. - NodePool_RECONCILING NodePool_Status = 4 - // The STOPPING state indicates the node pool is being deleted. - NodePool_STOPPING NodePool_Status = 5 - // The ERROR state indicates the node pool may be unusable. Details - // can be found in the `statusMessage` field. - NodePool_ERROR NodePool_Status = 6 -) - -var NodePool_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PROVISIONING", - 2: "RUNNING", - 3: "RUNNING_WITH_ERROR", - 4: "RECONCILING", - 5: "STOPPING", - 6: "ERROR", -} -var NodePool_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PROVISIONING": 1, - "RUNNING": 2, - "RUNNING_WITH_ERROR": 3, - "RECONCILING": 4, - "STOPPING": 5, - "ERROR": 6, -} - -func (x NodePool_Status) String() string { - return proto.EnumName(NodePool_Status_name, int32(x)) -} -func (NodePool_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{40, 0} } - -// Parameters that describe the nodes in a cluster. -type NodeConfig struct { - // The name of a Google Compute Engine [machine - // type](/compute/docs/machine-types) (e.g. - // `n1-standard-1`). - // - // If unspecified, the default machine type is - // `n1-standard-1`. - MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType" json:"machine_type,omitempty"` - // Size of the disk attached to each node, specified in GB. - // The smallest allowed disk size is 10GB. - // - // If unspecified, the default disk size is 100GB. - DiskSizeGb int32 `protobuf:"varint,2,opt,name=disk_size_gb,json=diskSizeGb" json:"disk_size_gb,omitempty"` - // The set of Google API scopes to be made available on all of the - // node VMs under the "default" service account. - // - // The following scopes are recommended, but not required, and by default are - // not included: - // - // * `https://www.googleapis.com/auth/compute` is required for mounting - // persistent storage on your nodes. - // * `https://www.googleapis.com/auth/devstorage.read_only` is required for - // communicating with **gcr.io** - // (the [Google Container Registry](/container-registry/)). - // - // If unspecified, no scopes are added, unless Cloud Logging or Cloud - // Monitoring are enabled, in which case their required scopes will be added. - OauthScopes []string `protobuf:"bytes,3,rep,name=oauth_scopes,json=oauthScopes" json:"oauth_scopes,omitempty"` - // The Google Cloud Platform Service Account to be used by the node VMs. If - // no Service Account is specified, the "default" service account is used. - ServiceAccount string `protobuf:"bytes,9,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // The metadata key/value pairs assigned to instances in the cluster. - // - // Keys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes - // in length. These are reflected as part of a URL in the metadata server. - // Additionally, to avoid ambiguity, keys must not conflict with any other - // metadata keys for the project or be one of the four reserved keys: - // "instance-template", "kube-env", "startup-script", and "user-data" - // - // Values are free-form strings, and only have meaning as interpreted by - // the image running in the instance. The only restriction placed on them is - // that each value's size must be less than or equal to 32 KB. - // - // The total size of all keys and values must be less than 512 KB. - Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The image type to use for this node. Note that for a given image type, - // the latest version of it will be used. - ImageType string `protobuf:"bytes,5,opt,name=image_type,json=imageType" json:"image_type,omitempty"` - // The map of Kubernetes labels (key/value pairs) to be applied to each node. - // These will added in addition to any default label(s) that - // Kubernetes may apply to the node. - // In case of conflict in label keys, the applied set may differ depending on - // the Kubernetes version -- it's best to assume the behavior is undefined - // and conflicts should be avoided. - // For more information, including usage and the valid values, see: - // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ - Labels map[string]string `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The number of local SSD disks to be attached to the node. - // - // The limit for this value is dependant upon the maximum number of - // disks available on a machine per zone. See: - // https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits - // for more information. - LocalSsdCount int32 `protobuf:"varint,7,opt,name=local_ssd_count,json=localSsdCount" json:"local_ssd_count,omitempty"` - // The list of instance tags applied to all nodes. Tags are used to identify - // valid sources or targets for network firewalls and are specified by - // the client during cluster or node pool creation. Each tag within the list - // must comply with RFC1035. - Tags []string `protobuf:"bytes,8,rep,name=tags" json:"tags,omitempty"` - // Whether the nodes are created as preemptible VM instances. See: - // https://cloud.google.com/compute/docs/instances/preemptible for more - // inforamtion about preemptible VM instances. - Preemptible bool `protobuf:"varint,10,opt,name=preemptible" json:"preemptible,omitempty"` - // A list of hardware accelerators to be attached to each node. - // See https://cloud.google.com/compute/docs/gpus for more information about - // support for GPUs. - Accelerators []*AcceleratorConfig `protobuf:"bytes,11,rep,name=accelerators" json:"accelerators,omitempty"` - // Minimum CPU platform to be used by this instance. The instance may be - // scheduled on the specified or newer CPU platform. Applicable values are the - // friendly names of CPU platforms, such as - // <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or - // <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more - // information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) - MinCpuPlatform string `protobuf:"bytes,13,opt,name=min_cpu_platform,json=minCpuPlatform" json:"min_cpu_platform,omitempty"` - // List of kubernetes taints to be applied to each node. - // - // For more information, including usage and the valid values, see: - // https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - Taints []*NodeTaint `protobuf:"bytes,15,rep,name=taints" json:"taints,omitempty"` -} - -func (m *NodeConfig) Reset() { *m = NodeConfig{} } -func (m *NodeConfig) String() string { return proto.CompactTextString(m) } -func (*NodeConfig) ProtoMessage() {} -func (*NodeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *NodeConfig) GetMachineType() string { - if m != nil { - return m.MachineType - } - return "" -} - -func (m *NodeConfig) GetDiskSizeGb() int32 { - if m != nil { - return m.DiskSizeGb - } - return 0 -} - -func (m *NodeConfig) GetOauthScopes() []string { - if m != nil { - return m.OauthScopes - } - return nil -} - -func (m *NodeConfig) GetServiceAccount() string { - if m != nil { - return m.ServiceAccount - } - return "" -} - -func (m *NodeConfig) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *NodeConfig) GetImageType() string { - if m != nil { - return m.ImageType - } - return "" -} - -func (m *NodeConfig) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *NodeConfig) GetLocalSsdCount() int32 { - if m != nil { - return m.LocalSsdCount - } - return 0 -} - -func (m *NodeConfig) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -func (m *NodeConfig) GetPreemptible() bool { - if m != nil { - return m.Preemptible - } - return false -} - -func (m *NodeConfig) GetAccelerators() []*AcceleratorConfig { - if m != nil { - return m.Accelerators - } - return nil -} - -func (m *NodeConfig) GetMinCpuPlatform() string { - if m != nil { - return m.MinCpuPlatform - } - return "" -} - -func (m *NodeConfig) GetTaints() []*NodeTaint { - if m != nil { - return m.Taints - } - return nil -} - -// Kubernetes taint is comprised of three fields: key, value, and effect. Effect -// can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. -// -// For more information, including usage and the valid values, see: -// https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -type NodeTaint struct { - // Key for taint. - Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // Value for taint. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - // Effect for taint. - Effect NodeTaint_Effect `protobuf:"varint,3,opt,name=effect,enum=google.container.v1alpha1.NodeTaint_Effect" json:"effect,omitempty"` -} - -func (m *NodeTaint) Reset() { *m = NodeTaint{} } -func (m *NodeTaint) String() string { return proto.CompactTextString(m) } -func (*NodeTaint) ProtoMessage() {} -func (*NodeTaint) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *NodeTaint) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *NodeTaint) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *NodeTaint) GetEffect() NodeTaint_Effect { - if m != nil { - return m.Effect - } - return NodeTaint_EFFECT_UNSPECIFIED -} - -// The authentication information for accessing the master endpoint. -// Authentication can be done using HTTP basic auth or using client -// certificates. -type MasterAuth struct { - // The username to use for HTTP basic authentication to the master endpoint. - // For clusters v1.6.0 and later, you can disable basic authentication by - // providing an empty username. - Username string `protobuf:"bytes,1,opt,name=username" json:"username,omitempty"` - // The password to use for HTTP basic authentication to the master endpoint. - // Because the master endpoint is open to the Internet, you should create a - // strong password. If a password is provided for cluster creation, username - // must be non-empty. - Password string `protobuf:"bytes,2,opt,name=password" json:"password,omitempty"` - // Configuration for client certificate authentication on the cluster. If no - // configuration is specified, a client certificate is issued. - ClientCertificateConfig *ClientCertificateConfig `protobuf:"bytes,3,opt,name=client_certificate_config,json=clientCertificateConfig" json:"client_certificate_config,omitempty"` - // [Output only] Base64-encoded public certificate that is the root of - // trust for the cluster. - ClusterCaCertificate string `protobuf:"bytes,100,opt,name=cluster_ca_certificate,json=clusterCaCertificate" json:"cluster_ca_certificate,omitempty"` - // [Output only] Base64-encoded public certificate used by clients to - // authenticate to the cluster endpoint. - ClientCertificate string `protobuf:"bytes,101,opt,name=client_certificate,json=clientCertificate" json:"client_certificate,omitempty"` - // [Output only] Base64-encoded private key used by clients to authenticate - // to the cluster endpoint. - ClientKey string `protobuf:"bytes,102,opt,name=client_key,json=clientKey" json:"client_key,omitempty"` -} - -func (m *MasterAuth) Reset() { *m = MasterAuth{} } -func (m *MasterAuth) String() string { return proto.CompactTextString(m) } -func (*MasterAuth) ProtoMessage() {} -func (*MasterAuth) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *MasterAuth) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *MasterAuth) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -func (m *MasterAuth) GetClientCertificateConfig() *ClientCertificateConfig { - if m != nil { - return m.ClientCertificateConfig - } - return nil -} - -func (m *MasterAuth) GetClusterCaCertificate() string { - if m != nil { - return m.ClusterCaCertificate - } - return "" -} - -func (m *MasterAuth) GetClientCertificate() string { - if m != nil { - return m.ClientCertificate - } - return "" -} - -func (m *MasterAuth) GetClientKey() string { - if m != nil { - return m.ClientKey - } - return "" -} - -// Configuration for client certificates on the cluster. -type ClientCertificateConfig struct { - // Issue a client certificate. - IssueClientCertificate bool `protobuf:"varint,1,opt,name=issue_client_certificate,json=issueClientCertificate" json:"issue_client_certificate,omitempty"` -} - -func (m *ClientCertificateConfig) Reset() { *m = ClientCertificateConfig{} } -func (m *ClientCertificateConfig) String() string { return proto.CompactTextString(m) } -func (*ClientCertificateConfig) ProtoMessage() {} -func (*ClientCertificateConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ClientCertificateConfig) GetIssueClientCertificate() bool { - if m != nil { - return m.IssueClientCertificate - } - return false -} - -// Configuration for the addons that can be automatically spun up in the -// cluster, enabling additional functionality. -type AddonsConfig struct { - // Configuration for the HTTP (L7) load balancing controller addon, which - // makes it easy to set up HTTP load balancers for services in a cluster. - HttpLoadBalancing *HttpLoadBalancing `protobuf:"bytes,1,opt,name=http_load_balancing,json=httpLoadBalancing" json:"http_load_balancing,omitempty"` - // Configuration for the horizontal pod autoscaling feature, which - // increases or decreases the number of replica pods a replication controller - // has based on the resource usage of the existing pods. - HorizontalPodAutoscaling *HorizontalPodAutoscaling `protobuf:"bytes,2,opt,name=horizontal_pod_autoscaling,json=horizontalPodAutoscaling" json:"horizontal_pod_autoscaling,omitempty"` - // Configuration for the Kubernetes Dashboard. - KubernetesDashboard *KubernetesDashboard `protobuf:"bytes,3,opt,name=kubernetes_dashboard,json=kubernetesDashboard" json:"kubernetes_dashboard,omitempty"` - // Configuration for NetworkPolicy. This only tracks whether the addon - // is enabled or not on the Master, it does not track whether network policy - // is enabled for the nodes. - NetworkPolicyConfig *NetworkPolicyConfig `protobuf:"bytes,4,opt,name=network_policy_config,json=networkPolicyConfig" json:"network_policy_config,omitempty"` -} - -func (m *AddonsConfig) Reset() { *m = AddonsConfig{} } -func (m *AddonsConfig) String() string { return proto.CompactTextString(m) } -func (*AddonsConfig) ProtoMessage() {} -func (*AddonsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *AddonsConfig) GetHttpLoadBalancing() *HttpLoadBalancing { - if m != nil { - return m.HttpLoadBalancing - } - return nil -} - -func (m *AddonsConfig) GetHorizontalPodAutoscaling() *HorizontalPodAutoscaling { - if m != nil { - return m.HorizontalPodAutoscaling - } - return nil -} - -func (m *AddonsConfig) GetKubernetesDashboard() *KubernetesDashboard { - if m != nil { - return m.KubernetesDashboard - } - return nil -} - -func (m *AddonsConfig) GetNetworkPolicyConfig() *NetworkPolicyConfig { - if m != nil { - return m.NetworkPolicyConfig - } - return nil -} - -// Configuration options for the HTTP (L7) load balancing controller addon, -// which makes it easy to set up HTTP load balancers for services in a cluster. -type HttpLoadBalancing struct { - // Whether the HTTP Load Balancing controller is enabled in the cluster. - // When enabled, it runs a small pod in the cluster that manages the load - // balancers. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *HttpLoadBalancing) Reset() { *m = HttpLoadBalancing{} } -func (m *HttpLoadBalancing) String() string { return proto.CompactTextString(m) } -func (*HttpLoadBalancing) ProtoMessage() {} -func (*HttpLoadBalancing) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *HttpLoadBalancing) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration options for the horizontal pod autoscaling feature, which -// increases or decreases the number of replica pods a replication controller -// has based on the resource usage of the existing pods. -type HorizontalPodAutoscaling struct { - // Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. - // When enabled, it ensures that a Heapster pod is running in the cluster, - // which is also used by the Cloud Monitoring service. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *HorizontalPodAutoscaling) Reset() { *m = HorizontalPodAutoscaling{} } -func (m *HorizontalPodAutoscaling) String() string { return proto.CompactTextString(m) } -func (*HorizontalPodAutoscaling) ProtoMessage() {} -func (*HorizontalPodAutoscaling) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *HorizontalPodAutoscaling) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration for the Kubernetes Dashboard. -type KubernetesDashboard struct { - // Whether the Kubernetes Dashboard is enabled for this cluster. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *KubernetesDashboard) Reset() { *m = KubernetesDashboard{} } -func (m *KubernetesDashboard) String() string { return proto.CompactTextString(m) } -func (*KubernetesDashboard) ProtoMessage() {} -func (*KubernetesDashboard) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *KubernetesDashboard) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration for NetworkPolicy. This only tracks whether the addon -// is enabled or not on the Master, it does not track whether network policy -// is enabled for the nodes. -type NetworkPolicyConfig struct { - // Whether NetworkPolicy is enabled for this cluster. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *NetworkPolicyConfig) Reset() { *m = NetworkPolicyConfig{} } -func (m *NetworkPolicyConfig) String() string { return proto.CompactTextString(m) } -func (*NetworkPolicyConfig) ProtoMessage() {} -func (*NetworkPolicyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *NetworkPolicyConfig) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration options for the master authorized networks feature. Enabled -// master authorized networks will disallow all external traffic to access -// Kubernetes master through HTTPS except traffic from the given CIDR blocks, -// Google Compute Engine Public IPs and Google Prod IPs. -type MasterAuthorizedNetworksConfig struct { - // Whether or not master authorized networks is enabled. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` - // cidr_blocks define up to 10 external networks that could access - // Kubernetes master through HTTPS. - CidrBlocks []*MasterAuthorizedNetworksConfig_CidrBlock `protobuf:"bytes,2,rep,name=cidr_blocks,json=cidrBlocks" json:"cidr_blocks,omitempty"` -} - -func (m *MasterAuthorizedNetworksConfig) Reset() { *m = MasterAuthorizedNetworksConfig{} } -func (m *MasterAuthorizedNetworksConfig) String() string { return proto.CompactTextString(m) } -func (*MasterAuthorizedNetworksConfig) ProtoMessage() {} -func (*MasterAuthorizedNetworksConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *MasterAuthorizedNetworksConfig) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *MasterAuthorizedNetworksConfig) GetCidrBlocks() []*MasterAuthorizedNetworksConfig_CidrBlock { - if m != nil { - return m.CidrBlocks - } - return nil -} - -// CidrBlock contains an optional name and one CIDR block. -type MasterAuthorizedNetworksConfig_CidrBlock struct { - // display_name is an optional field for users to identify CIDR blocks. - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // cidr_block must be specified in CIDR notation. - CidrBlock string `protobuf:"bytes,2,opt,name=cidr_block,json=cidrBlock" json:"cidr_block,omitempty"` -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) Reset() { - *m = MasterAuthorizedNetworksConfig_CidrBlock{} -} -func (m *MasterAuthorizedNetworksConfig_CidrBlock) String() string { return proto.CompactTextString(m) } -func (*MasterAuthorizedNetworksConfig_CidrBlock) ProtoMessage() {} -func (*MasterAuthorizedNetworksConfig_CidrBlock) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{9, 0} -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) GetCidrBlock() string { - if m != nil { - return m.CidrBlock - } - return "" -} - -// Configuration options for the NetworkPolicy feature. -// https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ -type NetworkPolicy struct { - // The selected network policy provider. - Provider NetworkPolicy_Provider `protobuf:"varint,1,opt,name=provider,enum=google.container.v1alpha1.NetworkPolicy_Provider" json:"provider,omitempty"` - // Whether network policy is enabled on the cluster. - Enabled bool `protobuf:"varint,2,opt,name=enabled" json:"enabled,omitempty"` -} - -func (m *NetworkPolicy) Reset() { *m = NetworkPolicy{} } -func (m *NetworkPolicy) String() string { return proto.CompactTextString(m) } -func (*NetworkPolicy) ProtoMessage() {} -func (*NetworkPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *NetworkPolicy) GetProvider() NetworkPolicy_Provider { - if m != nil { - return m.Provider - } - return NetworkPolicy_PROVIDER_UNSPECIFIED -} - -func (m *NetworkPolicy) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -// Configuration for controlling how IPs are allocated in the cluster. -type IPAllocationPolicy struct { - // Whether alias IPs will be used for pod IPs in the cluster. - UseIpAliases bool `protobuf:"varint,1,opt,name=use_ip_aliases,json=useIpAliases" json:"use_ip_aliases,omitempty"` - // Whether a new subnetwork will be created automatically for the cluster. - // - // This field is only applicable when `use_ip_aliases` is true. - CreateSubnetwork bool `protobuf:"varint,2,opt,name=create_subnetwork,json=createSubnetwork" json:"create_subnetwork,omitempty"` - // A custom subnetwork name to be used if `create_subnetwork` is true. If - // this field is empty, then an automatic name will be chosen for the new - // subnetwork. - SubnetworkName string `protobuf:"bytes,3,opt,name=subnetwork_name,json=subnetworkName" json:"subnetwork_name,omitempty"` - // This field is deprecated, use cluster_ipv4_cidr_block. - ClusterIpv4Cidr string `protobuf:"bytes,4,opt,name=cluster_ipv4_cidr,json=clusterIpv4Cidr" json:"cluster_ipv4_cidr,omitempty"` - // This field is deprecated, use node_ipv4_cidr_block. - NodeIpv4Cidr string `protobuf:"bytes,5,opt,name=node_ipv4_cidr,json=nodeIpv4Cidr" json:"node_ipv4_cidr,omitempty"` - // This field is deprecated, use services_ipv4_cidr_block. - ServicesIpv4Cidr string `protobuf:"bytes,6,opt,name=services_ipv4_cidr,json=servicesIpv4Cidr" json:"services_ipv4_cidr,omitempty"` - // The name of the secondary range to be used for the cluster CIDR - // block. The secondary range will be used for pod IP - // addresses. This must be an existing secondary range associated - // with the cluster subnetwork. - // - // This field is only applicable if use_ip_aliases is true and - // create_subnetwork is false. - ClusterSecondaryRangeName string `protobuf:"bytes,7,opt,name=cluster_secondary_range_name,json=clusterSecondaryRangeName" json:"cluster_secondary_range_name,omitempty"` - // The name of the secondary range to be used as for the services - // CIDR block. The secondary range will be used for service - // ClusterIPs. This must be an existing secondary range associated - // with the cluster subnetwork. - // - // This field is only applicable with use_ip_aliases is true and - // create_subnetwork is false. - ServicesSecondaryRangeName string `protobuf:"bytes,8,opt,name=services_secondary_range_name,json=servicesSecondaryRangeName" json:"services_secondary_range_name,omitempty"` - // The IP address range for the cluster pod IPs. If this field is set, then - // `cluster.cluster_ipv4_cidr` must be left blank. - // - // This field is only applicable when `use_ip_aliases` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - ClusterIpv4CidrBlock string `protobuf:"bytes,9,opt,name=cluster_ipv4_cidr_block,json=clusterIpv4CidrBlock" json:"cluster_ipv4_cidr_block,omitempty"` - // The IP address range of the instance IPs in this cluster. - // - // This is applicable only if `create_subnetwork` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - NodeIpv4CidrBlock string `protobuf:"bytes,10,opt,name=node_ipv4_cidr_block,json=nodeIpv4CidrBlock" json:"node_ipv4_cidr_block,omitempty"` - // The IP address range of the services IPs in this cluster. If blank, a range - // will be automatically chosen with the default size. - // - // This field is only applicable when `use_ip_aliases` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - ServicesIpv4CidrBlock string `protobuf:"bytes,11,opt,name=services_ipv4_cidr_block,json=servicesIpv4CidrBlock" json:"services_ipv4_cidr_block,omitempty"` -} - -func (m *IPAllocationPolicy) Reset() { *m = IPAllocationPolicy{} } -func (m *IPAllocationPolicy) String() string { return proto.CompactTextString(m) } -func (*IPAllocationPolicy) ProtoMessage() {} -func (*IPAllocationPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *IPAllocationPolicy) GetUseIpAliases() bool { - if m != nil { - return m.UseIpAliases - } - return false -} - -func (m *IPAllocationPolicy) GetCreateSubnetwork() bool { - if m != nil { - return m.CreateSubnetwork - } - return false -} - -func (m *IPAllocationPolicy) GetSubnetworkName() string { - if m != nil { - return m.SubnetworkName - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterIpv4Cidr() string { - if m != nil { - return m.ClusterIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetNodeIpv4Cidr() string { - if m != nil { - return m.NodeIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesIpv4Cidr() string { - if m != nil { - return m.ServicesIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterSecondaryRangeName() string { - if m != nil { - return m.ClusterSecondaryRangeName - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesSecondaryRangeName() string { - if m != nil { - return m.ServicesSecondaryRangeName - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterIpv4CidrBlock() string { - if m != nil { - return m.ClusterIpv4CidrBlock - } - return "" -} - -func (m *IPAllocationPolicy) GetNodeIpv4CidrBlock() string { - if m != nil { - return m.NodeIpv4CidrBlock - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesIpv4CidrBlock() string { - if m != nil { - return m.ServicesIpv4CidrBlock - } - return "" -} - -// Configuration for the PodSecurityPolicy feature. -type PodSecurityPolicyConfig struct { - // Enable the PodSecurityPolicy controller for this cluster. If enabled, pods - // must be valid under a PodSecurityPolicy to be created. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` -} - -func (m *PodSecurityPolicyConfig) Reset() { *m = PodSecurityPolicyConfig{} } -func (m *PodSecurityPolicyConfig) String() string { return proto.CompactTextString(m) } -func (*PodSecurityPolicyConfig) ProtoMessage() {} -func (*PodSecurityPolicyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *PodSecurityPolicyConfig) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -// A Google Container Engine cluster. -type Cluster struct { - // The name of this cluster. The name must be unique within this project - // and zone, and can be up to 40 characters with the following restrictions: - // - // * Lowercase letters, numbers, and hyphens only. - // * Must start with a letter. - // * Must end with a number or a letter. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // An optional description of this cluster. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // The number of nodes to create in this cluster. You must ensure that your - // Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a> - // is sufficient for this number of instances. You must also have available - // firewall and routes quota. - // For requests, this field should only be used in lieu of a - // "node_pool" object, since this configuration (along with the - // "node_config") will be used to create a "NodePool" object with an - // auto-generated name. Do not use this and a node_pool at the same time. - InitialNodeCount int32 `protobuf:"varint,3,opt,name=initial_node_count,json=initialNodeCount" json:"initial_node_count,omitempty"` - // Parameters used in creating the cluster's nodes. - // See `nodeConfig` for the description of its properties. - // For requests, this field should only be used in lieu of a - // "node_pool" object, since this configuration (along with the - // "initial_node_count") will be used to create a "NodePool" object with an - // auto-generated name. Do not use this and a node_pool at the same time. - // For responses, this field will be populated with the node configuration of - // the first node pool. - // - // If unspecified, the defaults are used. - NodeConfig *NodeConfig `protobuf:"bytes,4,opt,name=node_config,json=nodeConfig" json:"node_config,omitempty"` - // The authentication information for accessing the master endpoint. - MasterAuth *MasterAuth `protobuf:"bytes,5,opt,name=master_auth,json=masterAuth" json:"master_auth,omitempty"` - // The logging service the cluster should use to write logs. - // Currently available options: - // - // * `logging.googleapis.com` - the Google Cloud Logging service. - // * `none` - no logs will be exported from the cluster. - // * if left as an empty string,`logging.googleapis.com` will be used. - LoggingService string `protobuf:"bytes,6,opt,name=logging_service,json=loggingService" json:"logging_service,omitempty"` - // The monitoring service the cluster should use to write metrics. - // Currently available options: - // - // * `monitoring.googleapis.com` - the Google Cloud Monitoring service. - // * `none` - no metrics will be exported from the cluster. - // * if left as an empty string, `monitoring.googleapis.com` will be used. - MonitoringService string `protobuf:"bytes,7,opt,name=monitoring_service,json=monitoringService" json:"monitoring_service,omitempty"` - // The name of the Google Compute Engine - // [network](/compute/docs/networks-and-firewalls#networks) to which the - // cluster is connected. If left unspecified, the `default` network - // will be used. - Network string `protobuf:"bytes,8,opt,name=network" json:"network,omitempty"` - // The IP address range of the container pods in this cluster, in - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`). Leave blank to have - // one automatically chosen or specify a `/14` block in `10.0.0.0/8`. - ClusterIpv4Cidr string `protobuf:"bytes,9,opt,name=cluster_ipv4_cidr,json=clusterIpv4Cidr" json:"cluster_ipv4_cidr,omitempty"` - // Configurations for the various addons available to run in the cluster. - AddonsConfig *AddonsConfig `protobuf:"bytes,10,opt,name=addons_config,json=addonsConfig" json:"addons_config,omitempty"` - // The name of the Google Compute Engine - // [subnetwork](/compute/docs/subnetworks) to which the - // cluster is connected. - Subnetwork string `protobuf:"bytes,11,opt,name=subnetwork" json:"subnetwork,omitempty"` - // The node pools associated with this cluster. - // This field should not be set if "node_config" or "initial_node_count" are - // specified. - NodePools []*NodePool `protobuf:"bytes,12,rep,name=node_pools,json=nodePools" json:"node_pools,omitempty"` - // The list of Google Compute Engine - // [locations](/compute/docs/zones#available) in which the cluster's nodes - // should be located. - Locations []string `protobuf:"bytes,13,rep,name=locations" json:"locations,omitempty"` - // Kubernetes alpha features are enabled on this cluster. This includes alpha - // API groups (e.g. v1alpha1) and features that may not be production ready in - // the kubernetes version of the master and nodes. - // The cluster has no SLA for uptime and master/node upgrades are disabled. - // Alpha enabled clusters are automatically deleted thirty days after - // creation. - EnableKubernetesAlpha bool `protobuf:"varint,14,opt,name=enable_kubernetes_alpha,json=enableKubernetesAlpha" json:"enable_kubernetes_alpha,omitempty"` - // Configuration options for the NetworkPolicy feature. - NetworkPolicy *NetworkPolicy `protobuf:"bytes,19,opt,name=network_policy,json=networkPolicy" json:"network_policy,omitempty"` - // Configuration for cluster IP allocation. - IpAllocationPolicy *IPAllocationPolicy `protobuf:"bytes,20,opt,name=ip_allocation_policy,json=ipAllocationPolicy" json:"ip_allocation_policy,omitempty"` - // The configuration options for master authorized networks feature. - MasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfig `protobuf:"bytes,22,opt,name=master_authorized_networks_config,json=masterAuthorizedNetworksConfig" json:"master_authorized_networks_config,omitempty"` - // Configure the maintenance policy for this cluster. - MaintenancePolicy *MaintenancePolicy `protobuf:"bytes,23,opt,name=maintenance_policy,json=maintenancePolicy" json:"maintenance_policy,omitempty"` - // Configuration for the PodSecurityPolicy feature. - PodSecurityPolicyConfig *PodSecurityPolicyConfig `protobuf:"bytes,25,opt,name=pod_security_policy_config,json=podSecurityPolicyConfig" json:"pod_security_policy_config,omitempty"` - // [Output only] Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,100,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // [Output only] The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use location instead. - Zone string `protobuf:"bytes,101,opt,name=zone" json:"zone,omitempty"` - // [Output only] The IP address of this cluster's master endpoint. - // The endpoint can be accessed from the internet at - // `https://username:password@endpoint/`. - // - // See the `masterAuth` property of this resource for username and - // password information. - Endpoint string `protobuf:"bytes,102,opt,name=endpoint" json:"endpoint,omitempty"` - // The initial Kubernetes version for this cluster. Valid versions are those - // found in validMasterVersions returned by getServerConfig. The version can - // be upgraded over time; such upgrades are reflected in - // currentMasterVersion and currentNodeVersion. - InitialClusterVersion string `protobuf:"bytes,103,opt,name=initial_cluster_version,json=initialClusterVersion" json:"initial_cluster_version,omitempty"` - // [Output only] The current software version of the master endpoint. - CurrentMasterVersion string `protobuf:"bytes,104,opt,name=current_master_version,json=currentMasterVersion" json:"current_master_version,omitempty"` - // [Output only] The current version of the node software components. - // If they are currently at multiple versions because they're in the process - // of being upgraded, this reflects the minimum version of all nodes. - CurrentNodeVersion string `protobuf:"bytes,105,opt,name=current_node_version,json=currentNodeVersion" json:"current_node_version,omitempty"` - // [Output only] The time the cluster was created, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - CreateTime string `protobuf:"bytes,106,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // [Output only] The current status of this cluster. - Status Cluster_Status `protobuf:"varint,107,opt,name=status,enum=google.container.v1alpha1.Cluster_Status" json:"status,omitempty"` - // [Output only] Additional information about the current status of this - // cluster, if available. - StatusMessage string `protobuf:"bytes,108,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` - // [Output only] The size of the address space on each node for hosting - // containers. This is provisioned from within the `container_ipv4_cidr` - // range. - NodeIpv4CidrSize int32 `protobuf:"varint,109,opt,name=node_ipv4_cidr_size,json=nodeIpv4CidrSize" json:"node_ipv4_cidr_size,omitempty"` - // [Output only] The IP address range of the Kubernetes services in - // this cluster, in - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `1.2.3.4/29`). Service addresses are - // typically put in the last `/16` from the container CIDR. - ServicesIpv4Cidr string `protobuf:"bytes,110,opt,name=services_ipv4_cidr,json=servicesIpv4Cidr" json:"services_ipv4_cidr,omitempty"` - // [Output only] The resource URLs of [instance - // groups](/compute/docs/instance-groups/) associated with this - // cluster. - InstanceGroupUrls []string `protobuf:"bytes,111,rep,name=instance_group_urls,json=instanceGroupUrls" json:"instance_group_urls,omitempty"` - // [Output only] The number of nodes currently in the cluster. - CurrentNodeCount int32 `protobuf:"varint,112,opt,name=current_node_count,json=currentNodeCount" json:"current_node_count,omitempty"` - // [Output only] The time the cluster will be automatically - // deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - ExpireTime string `protobuf:"bytes,113,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` - // [Output only] The name of the Google Compute Engine - // [zone](/compute/docs/regions-zones/regions-zones#available) or - // [region](/compute/docs/regions-zones/regions-zones#available) in which - // the cluster resides. - Location string `protobuf:"bytes,114,opt,name=location" json:"location,omitempty"` -} - -func (m *Cluster) Reset() { *m = Cluster{} } -func (m *Cluster) String() string { return proto.CompactTextString(m) } -func (*Cluster) ProtoMessage() {} -func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *Cluster) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Cluster) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Cluster) GetInitialNodeCount() int32 { - if m != nil { - return m.InitialNodeCount - } - return 0 -} - -func (m *Cluster) GetNodeConfig() *NodeConfig { - if m != nil { - return m.NodeConfig - } - return nil -} - -func (m *Cluster) GetMasterAuth() *MasterAuth { - if m != nil { - return m.MasterAuth - } - return nil -} - -func (m *Cluster) GetLoggingService() string { - if m != nil { - return m.LoggingService - } - return "" -} - -func (m *Cluster) GetMonitoringService() string { - if m != nil { - return m.MonitoringService - } - return "" -} - -func (m *Cluster) GetNetwork() string { - if m != nil { - return m.Network - } - return "" -} - -func (m *Cluster) GetClusterIpv4Cidr() string { - if m != nil { - return m.ClusterIpv4Cidr - } - return "" -} - -func (m *Cluster) GetAddonsConfig() *AddonsConfig { - if m != nil { - return m.AddonsConfig - } - return nil -} - -func (m *Cluster) GetSubnetwork() string { - if m != nil { - return m.Subnetwork - } - return "" -} - -func (m *Cluster) GetNodePools() []*NodePool { - if m != nil { - return m.NodePools - } - return nil -} - -func (m *Cluster) GetLocations() []string { - if m != nil { - return m.Locations - } - return nil -} - -func (m *Cluster) GetEnableKubernetesAlpha() bool { - if m != nil { - return m.EnableKubernetesAlpha - } - return false -} - -func (m *Cluster) GetNetworkPolicy() *NetworkPolicy { - if m != nil { - return m.NetworkPolicy - } - return nil -} - -func (m *Cluster) GetIpAllocationPolicy() *IPAllocationPolicy { - if m != nil { - return m.IpAllocationPolicy - } - return nil -} - -func (m *Cluster) GetMasterAuthorizedNetworksConfig() *MasterAuthorizedNetworksConfig { - if m != nil { - return m.MasterAuthorizedNetworksConfig - } - return nil -} - -func (m *Cluster) GetMaintenancePolicy() *MaintenancePolicy { - if m != nil { - return m.MaintenancePolicy - } - return nil -} - -func (m *Cluster) GetPodSecurityPolicyConfig() *PodSecurityPolicyConfig { - if m != nil { - return m.PodSecurityPolicyConfig - } - return nil -} - -func (m *Cluster) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *Cluster) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *Cluster) GetEndpoint() string { - if m != nil { - return m.Endpoint - } - return "" -} - -func (m *Cluster) GetInitialClusterVersion() string { - if m != nil { - return m.InitialClusterVersion - } - return "" -} - -func (m *Cluster) GetCurrentMasterVersion() string { - if m != nil { - return m.CurrentMasterVersion - } - return "" -} - -func (m *Cluster) GetCurrentNodeVersion() string { - if m != nil { - return m.CurrentNodeVersion - } - return "" -} - -func (m *Cluster) GetCreateTime() string { - if m != nil { - return m.CreateTime - } - return "" -} - -func (m *Cluster) GetStatus() Cluster_Status { - if m != nil { - return m.Status - } - return Cluster_STATUS_UNSPECIFIED -} - -func (m *Cluster) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -func (m *Cluster) GetNodeIpv4CidrSize() int32 { - if m != nil { - return m.NodeIpv4CidrSize - } - return 0 -} - -func (m *Cluster) GetServicesIpv4Cidr() string { - if m != nil { - return m.ServicesIpv4Cidr - } - return "" -} - -func (m *Cluster) GetInstanceGroupUrls() []string { - if m != nil { - return m.InstanceGroupUrls - } - return nil -} - -func (m *Cluster) GetCurrentNodeCount() int32 { - if m != nil { - return m.CurrentNodeCount - } - return 0 -} - -func (m *Cluster) GetExpireTime() string { - if m != nil { - return m.ExpireTime - } - return "" -} - -func (m *Cluster) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -// ClusterUpdate describes an update to the cluster. Exactly one update can -// be applied to a cluster with each request, so at most one field can be -// provided. -type ClusterUpdate struct { - // The Kubernetes version to change the nodes to (typically an - // upgrade). Use `-` to upgrade to the latest version supported by - // the server. - DesiredNodeVersion string `protobuf:"bytes,4,opt,name=desired_node_version,json=desiredNodeVersion" json:"desired_node_version,omitempty"` - // The monitoring service the cluster should use to write metrics. - // Currently available options: - // - // * "monitoring.googleapis.com" - the Google Cloud Monitoring service - // * "none" - no metrics will be exported from the cluster - DesiredMonitoringService string `protobuf:"bytes,5,opt,name=desired_monitoring_service,json=desiredMonitoringService" json:"desired_monitoring_service,omitempty"` - // Configurations for the various addons available to run in the cluster. - DesiredAddonsConfig *AddonsConfig `protobuf:"bytes,6,opt,name=desired_addons_config,json=desiredAddonsConfig" json:"desired_addons_config,omitempty"` - // The node pool to be upgraded. This field is mandatory if - // "desired_node_version", "desired_image_family" or - // "desired_node_pool_autoscaling" is specified and there is more than one - // node pool on the cluster. - DesiredNodePoolId string `protobuf:"bytes,7,opt,name=desired_node_pool_id,json=desiredNodePoolId" json:"desired_node_pool_id,omitempty"` - // The desired image type for the node pool. - // NOTE: Set the "desired_node_pool" field as well. - DesiredImageType string `protobuf:"bytes,8,opt,name=desired_image_type,json=desiredImageType" json:"desired_image_type,omitempty"` - // Autoscaler configuration for the node pool specified in - // desired_node_pool_id. If there is only one pool in the - // cluster and desired_node_pool_id is not provided then - // the change applies to that single node pool. - DesiredNodePoolAutoscaling *NodePoolAutoscaling `protobuf:"bytes,9,opt,name=desired_node_pool_autoscaling,json=desiredNodePoolAutoscaling" json:"desired_node_pool_autoscaling,omitempty"` - // The desired list of Google Compute Engine - // [locations](/compute/docs/zones#available) in which the cluster's nodes - // should be located. Changing the locations a cluster is in will result - // in nodes being either created or removed from the cluster, depending on - // whether locations are being added or removed. - // - // This list must always include the cluster's primary zone. - DesiredLocations []string `protobuf:"bytes,10,rep,name=desired_locations,json=desiredLocations" json:"desired_locations,omitempty"` - // The desired configuration options for master authorized networks feature. - DesiredMasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfig `protobuf:"bytes,12,opt,name=desired_master_authorized_networks_config,json=desiredMasterAuthorizedNetworksConfig" json:"desired_master_authorized_networks_config,omitempty"` - // The desired configuration options for the PodSecurityPolicy feature. - DesiredPodSecurityPolicyConfig *PodSecurityPolicyConfig `protobuf:"bytes,14,opt,name=desired_pod_security_policy_config,json=desiredPodSecurityPolicyConfig" json:"desired_pod_security_policy_config,omitempty"` - // The Kubernetes version to change the master to. The only valid value is the - // latest supported version. Use "-" to have the server automatically select - // the latest version. - DesiredMasterVersion string `protobuf:"bytes,100,opt,name=desired_master_version,json=desiredMasterVersion" json:"desired_master_version,omitempty"` -} - -func (m *ClusterUpdate) Reset() { *m = ClusterUpdate{} } -func (m *ClusterUpdate) String() string { return proto.CompactTextString(m) } -func (*ClusterUpdate) ProtoMessage() {} -func (*ClusterUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *ClusterUpdate) GetDesiredNodeVersion() string { - if m != nil { - return m.DesiredNodeVersion - } - return "" -} - -func (m *ClusterUpdate) GetDesiredMonitoringService() string { - if m != nil { - return m.DesiredMonitoringService - } - return "" -} - -func (m *ClusterUpdate) GetDesiredAddonsConfig() *AddonsConfig { - if m != nil { - return m.DesiredAddonsConfig - } - return nil -} - -func (m *ClusterUpdate) GetDesiredNodePoolId() string { - if m != nil { - return m.DesiredNodePoolId - } - return "" -} - -func (m *ClusterUpdate) GetDesiredImageType() string { - if m != nil { - return m.DesiredImageType - } - return "" -} - -func (m *ClusterUpdate) GetDesiredNodePoolAutoscaling() *NodePoolAutoscaling { - if m != nil { - return m.DesiredNodePoolAutoscaling - } - return nil -} - -func (m *ClusterUpdate) GetDesiredLocations() []string { - if m != nil { - return m.DesiredLocations - } - return nil -} - -func (m *ClusterUpdate) GetDesiredMasterAuthorizedNetworksConfig() *MasterAuthorizedNetworksConfig { - if m != nil { - return m.DesiredMasterAuthorizedNetworksConfig - } - return nil -} - -func (m *ClusterUpdate) GetDesiredPodSecurityPolicyConfig() *PodSecurityPolicyConfig { - if m != nil { - return m.DesiredPodSecurityPolicyConfig - } - return nil -} - -func (m *ClusterUpdate) GetDesiredMasterVersion() string { - if m != nil { - return m.DesiredMasterVersion - } - return "" -} - -// This operation resource represents operations that may have happened or are -// happening on the cluster. All fields are output only. -type Operation struct { - // The server-assigned ID for the operation. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the operation - // is taking place. - // This field is deprecated, use location instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The operation type. - OperationType Operation_Type `protobuf:"varint,3,opt,name=operation_type,json=operationType,enum=google.container.v1alpha1.Operation_Type" json:"operation_type,omitempty"` - // The current status of the operation. - Status Operation_Status `protobuf:"varint,4,opt,name=status,enum=google.container.v1alpha1.Operation_Status" json:"status,omitempty"` - // Detailed operation progress, if available. - Detail string `protobuf:"bytes,8,opt,name=detail" json:"detail,omitempty"` - // If an error has occurred, a textual description of the error. - StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` - // Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,6,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // Server-defined URL for the target of the operation. - TargetLink string `protobuf:"bytes,7,opt,name=target_link,json=targetLink" json:"target_link,omitempty"` - // [Output only] The name of the Google Compute Engine - // [zone](/compute/docs/regions-zones/regions-zones#available) or - // [region](/compute/docs/regions-zones/regions-zones#available) in which - // the cluster resides. - Location string `protobuf:"bytes,9,opt,name=location" json:"location,omitempty"` - // [Output only] The time the operation started, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - StartTime string `protobuf:"bytes,10,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // [Output only] The time the operation completed, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - EndTime string `protobuf:"bytes,11,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *Operation) Reset() { *m = Operation{} } -func (m *Operation) String() string { return proto.CompactTextString(m) } -func (*Operation) ProtoMessage() {} -func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *Operation) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Operation) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *Operation) GetOperationType() Operation_Type { - if m != nil { - return m.OperationType - } - return Operation_TYPE_UNSPECIFIED -} - -func (m *Operation) GetStatus() Operation_Status { - if m != nil { - return m.Status - } - return Operation_STATUS_UNSPECIFIED -} - -func (m *Operation) GetDetail() string { - if m != nil { - return m.Detail - } - return "" -} - -func (m *Operation) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -func (m *Operation) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *Operation) GetTargetLink() string { - if m != nil { - return m.TargetLink - } - return "" -} - -func (m *Operation) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -func (m *Operation) GetStartTime() string { - if m != nil { - return m.StartTime - } - return "" -} - -func (m *Operation) GetEndTime() string { - if m != nil { - return m.EndTime - } - return "" -} - -// CreateClusterRequest creates a cluster. -type CreateClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // A [cluster - // resource](/container-engine/reference/rest/v1alpha1/projects.zones.clusters) - Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"` - // The parent (project and location) where the cluster will be created. - // Specified in the format 'projects/*/locations/*'. - Parent string `protobuf:"bytes,5,opt,name=parent" json:"parent,omitempty"` -} - -func (m *CreateClusterRequest) Reset() { *m = CreateClusterRequest{} } -func (m *CreateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*CreateClusterRequest) ProtoMessage() {} -func (*CreateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *CreateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CreateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -func (m *CreateClusterRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// GetClusterRequest gets the settings of a cluster. -type GetClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to retrieve. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name (project, location, cluster) of the cluster to retrieve. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *GetClusterRequest) Reset() { *m = GetClusterRequest{} } -func (m *GetClusterRequest) String() string { return proto.CompactTextString(m) } -func (*GetClusterRequest) ProtoMessage() {} -func (*GetClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *GetClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *GetClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// UpdateClusterRequest updates the settings of a cluster. -type UpdateClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // A description of the update. - Update *ClusterUpdate `protobuf:"bytes,4,opt,name=update" json:"update,omitempty"` - // The name (project, location, cluster) of the cluster to update. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *UpdateClusterRequest) Reset() { *m = UpdateClusterRequest{} } -func (m *UpdateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateClusterRequest) ProtoMessage() {} -func (*UpdateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *UpdateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *UpdateClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *UpdateClusterRequest) GetUpdate() *ClusterUpdate { - if m != nil { - return m.Update - } - return nil -} - -func (m *UpdateClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetNodePoolVersionRequest updates the version of a node pool. -type UpdateNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to upgrade. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The Kubernetes version to change the nodes to (typically an - // upgrade). Use `-` to upgrade to the latest version supported by - // the server. - NodeVersion string `protobuf:"bytes,5,opt,name=node_version,json=nodeVersion" json:"node_version,omitempty"` - // The desired image type for the node pool. - ImageType string `protobuf:"bytes,6,opt,name=image_type,json=imageType" json:"image_type,omitempty"` - // The name (project, location, cluster, node pool) of the node pool to update. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,8,opt,name=name" json:"name,omitempty"` -} - -func (m *UpdateNodePoolRequest) Reset() { *m = UpdateNodePoolRequest{} } -func (m *UpdateNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateNodePoolRequest) ProtoMessage() {} -func (*UpdateNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *UpdateNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *UpdateNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *UpdateNodePoolRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *UpdateNodePoolRequest) GetNodeVersion() string { - if m != nil { - return m.NodeVersion - } - return "" -} - -func (m *UpdateNodePoolRequest) GetImageType() string { - if m != nil { - return m.ImageType - } - return "" -} - -func (m *UpdateNodePoolRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool. -type SetNodePoolAutoscalingRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to upgrade. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // Autoscaling configuration for the node pool. - Autoscaling *NodePoolAutoscaling `protobuf:"bytes,5,opt,name=autoscaling" json:"autoscaling,omitempty"` - // The name (project, location, cluster, node pool) of the node pool to set - // autoscaler settings. Specified in the format - // 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *SetNodePoolAutoscalingRequest) Reset() { *m = SetNodePoolAutoscalingRequest{} } -func (m *SetNodePoolAutoscalingRequest) String() string { return proto.CompactTextString(m) } -func (*SetNodePoolAutoscalingRequest) ProtoMessage() {} -func (*SetNodePoolAutoscalingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *SetNodePoolAutoscalingRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNodePoolAutoscalingRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNodePoolAutoscalingRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNodePoolAutoscalingRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *SetNodePoolAutoscalingRequest) GetAutoscaling() *NodePoolAutoscaling { - if m != nil { - return m.Autoscaling - } - return nil -} - -func (m *SetNodePoolAutoscalingRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetLoggingServiceRequest sets the logging service of a cluster. -type SetLoggingServiceRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The logging service the cluster should use to write metrics. - // Currently available options: - // - // * "logging.googleapis.com" - the Google Cloud Logging service - // * "none" - no metrics will be exported from the cluster - LoggingService string `protobuf:"bytes,4,opt,name=logging_service,json=loggingService" json:"logging_service,omitempty"` - // The name (project, location, cluster) of the cluster to set logging. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *SetLoggingServiceRequest) Reset() { *m = SetLoggingServiceRequest{} } -func (m *SetLoggingServiceRequest) String() string { return proto.CompactTextString(m) } -func (*SetLoggingServiceRequest) ProtoMessage() {} -func (*SetLoggingServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *SetLoggingServiceRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLoggingServiceRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLoggingServiceRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLoggingServiceRequest) GetLoggingService() string { - if m != nil { - return m.LoggingService - } - return "" -} - -func (m *SetLoggingServiceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetMonitoringServiceRequest sets the monitoring service of a cluster. -type SetMonitoringServiceRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The monitoring service the cluster should use to write metrics. - // Currently available options: - // - // * "monitoring.googleapis.com" - the Google Cloud Monitoring service - // * "none" - no metrics will be exported from the cluster - MonitoringService string `protobuf:"bytes,4,opt,name=monitoring_service,json=monitoringService" json:"monitoring_service,omitempty"` - // The name (project, location, cluster) of the cluster to set monitoring. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *SetMonitoringServiceRequest) Reset() { *m = SetMonitoringServiceRequest{} } -func (m *SetMonitoringServiceRequest) String() string { return proto.CompactTextString(m) } -func (*SetMonitoringServiceRequest) ProtoMessage() {} -func (*SetMonitoringServiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *SetMonitoringServiceRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetMonitoringServiceRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetMonitoringServiceRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetMonitoringServiceRequest) GetMonitoringService() string { - if m != nil { - return m.MonitoringService - } - return "" -} - -func (m *SetMonitoringServiceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetAddonsRequest sets the addons associated with the cluster. -type SetAddonsConfigRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The desired configurations for the various addons available to run in the - // cluster. - AddonsConfig *AddonsConfig `protobuf:"bytes,4,opt,name=addons_config,json=addonsConfig" json:"addons_config,omitempty"` - // The name (project, location, cluster) of the cluster to set addons. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *SetAddonsConfigRequest) Reset() { *m = SetAddonsConfigRequest{} } -func (m *SetAddonsConfigRequest) String() string { return proto.CompactTextString(m) } -func (*SetAddonsConfigRequest) ProtoMessage() {} -func (*SetAddonsConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *SetAddonsConfigRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetAddonsConfigRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetAddonsConfigRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetAddonsConfigRequest) GetAddonsConfig() *AddonsConfig { - if m != nil { - return m.AddonsConfig - } - return nil -} - -func (m *SetAddonsConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetLocationsRequest sets the locations of the cluster. -type SetLocationsRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The desired list of Google Compute Engine - // [locations](/compute/docs/zones#available) in which the cluster's nodes - // should be located. Changing the locations a cluster is in will result - // in nodes being either created or removed from the cluster, depending on - // whether locations are being added or removed. - // - // This list must always include the cluster's primary zone. - Locations []string `protobuf:"bytes,4,rep,name=locations" json:"locations,omitempty"` - // The name (project, location, cluster) of the cluster to set locations. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *SetLocationsRequest) Reset() { *m = SetLocationsRequest{} } -func (m *SetLocationsRequest) String() string { return proto.CompactTextString(m) } -func (*SetLocationsRequest) ProtoMessage() {} -func (*SetLocationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *SetLocationsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLocationsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLocationsRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLocationsRequest) GetLocations() []string { - if m != nil { - return m.Locations - } - return nil -} - -func (m *SetLocationsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// UpdateMasterRequest updates the master of the cluster. -type UpdateMasterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The Kubernetes version to change the master to. The only valid value is the - // latest supported version. Use "-" to have the server automatically select - // the latest version. - MasterVersion string `protobuf:"bytes,4,opt,name=master_version,json=masterVersion" json:"master_version,omitempty"` - // The name (project, location, cluster) of the cluster to update. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *UpdateMasterRequest) Reset() { *m = UpdateMasterRequest{} } -func (m *UpdateMasterRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateMasterRequest) ProtoMessage() {} -func (*UpdateMasterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *UpdateMasterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateMasterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *UpdateMasterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *UpdateMasterRequest) GetMasterVersion() string { - if m != nil { - return m.MasterVersion - } - return "" -} - -func (m *UpdateMasterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetMasterAuthRequest updates the admin password of a cluster. -type SetMasterAuthRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The exact form of action to be taken on the master auth. - Action SetMasterAuthRequest_Action `protobuf:"varint,4,opt,name=action,enum=google.container.v1alpha1.SetMasterAuthRequest_Action" json:"action,omitempty"` - // A description of the update. - Update *MasterAuth `protobuf:"bytes,5,opt,name=update" json:"update,omitempty"` - // The name (project, location, cluster) of the cluster to set auth. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *SetMasterAuthRequest) Reset() { *m = SetMasterAuthRequest{} } -func (m *SetMasterAuthRequest) String() string { return proto.CompactTextString(m) } -func (*SetMasterAuthRequest) ProtoMessage() {} -func (*SetMasterAuthRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *SetMasterAuthRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetMasterAuthRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetMasterAuthRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetMasterAuthRequest) GetAction() SetMasterAuthRequest_Action { - if m != nil { - return m.Action - } - return SetMasterAuthRequest_UNKNOWN -} - -func (m *SetMasterAuthRequest) GetUpdate() *MasterAuth { - if m != nil { - return m.Update - } - return nil -} - -func (m *SetMasterAuthRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// DeleteClusterRequest deletes a cluster. -type DeleteClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to delete. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name (project, location, cluster) of the cluster to delete. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteClusterRequest) Reset() { *m = DeleteClusterRequest{} } -func (m *DeleteClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteClusterRequest) ProtoMessage() {} -func (*DeleteClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *DeleteClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *DeleteClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *DeleteClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListClustersRequest lists clusters. -type ListClustersRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides, or "-" for all zones. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The parent (project and location) where the clusters will be listed. - // Specified in the format 'projects/*/locations/*'. - // Location "-" matches all zones and all regions. - Parent string `protobuf:"bytes,4,opt,name=parent" json:"parent,omitempty"` -} - -func (m *ListClustersRequest) Reset() { *m = ListClustersRequest{} } -func (m *ListClustersRequest) String() string { return proto.CompactTextString(m) } -func (*ListClustersRequest) ProtoMessage() {} -func (*ListClustersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *ListClustersRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListClustersRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ListClustersRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// ListClustersResponse is the result of ListClustersRequest. -type ListClustersResponse struct { - // A list of clusters in the project in the specified zone, or - // across all ones. - Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters" json:"clusters,omitempty"` - // If any zones are listed here, the list of clusters returned - // may be missing those zones. - MissingZones []string `protobuf:"bytes,2,rep,name=missing_zones,json=missingZones" json:"missing_zones,omitempty"` -} - -func (m *ListClustersResponse) Reset() { *m = ListClustersResponse{} } -func (m *ListClustersResponse) String() string { return proto.CompactTextString(m) } -func (*ListClustersResponse) ProtoMessage() {} -func (*ListClustersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -func (m *ListClustersResponse) GetClusters() []*Cluster { - if m != nil { - return m.Clusters - } - return nil -} - -func (m *ListClustersResponse) GetMissingZones() []string { - if m != nil { - return m.MissingZones - } - return nil -} - -// GetOperationRequest gets a single operation. -type GetOperationRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The server-assigned `name` of the operation. - // This field is deprecated, use name instead. - OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // The name (project, location, operation id) of the operation to get. - // Specified in the format 'projects/*/locations/*/operations/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *GetOperationRequest) Reset() { *m = GetOperationRequest{} } -func (m *GetOperationRequest) String() string { return proto.CompactTextString(m) } -func (*GetOperationRequest) ProtoMessage() {} -func (*GetOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -func (m *GetOperationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetOperationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetOperationRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *GetOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListOperationsRequest lists operations. -type ListOperationsRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine [zone](/compute/docs/zones#available) - // to return operations for, or `-` for all zones. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The parent (project and location) where the operations will be listed. - // Specified in the format 'projects/*/locations/*'. - // Location "-" matches all zones and all regions. - Parent string `protobuf:"bytes,4,opt,name=parent" json:"parent,omitempty"` -} - -func (m *ListOperationsRequest) Reset() { *m = ListOperationsRequest{} } -func (m *ListOperationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListOperationsRequest) ProtoMessage() {} -func (*ListOperationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } - -func (m *ListOperationsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListOperationsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ListOperationsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// CancelOperationRequest cancels a single operation. -type CancelOperationRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the operation resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The server-assigned `name` of the operation. - // This field is deprecated, use name instead. - OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // The name (project, location, operation id) of the operation to cancel. - // Specified in the format 'projects/*/locations/*/operations/*'. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` -} - -func (m *CancelOperationRequest) Reset() { *m = CancelOperationRequest{} } -func (m *CancelOperationRequest) String() string { return proto.CompactTextString(m) } -func (*CancelOperationRequest) ProtoMessage() {} -func (*CancelOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } - -func (m *CancelOperationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CancelOperationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CancelOperationRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *CancelOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListOperationsResponse is the result of ListOperationsRequest. -type ListOperationsResponse struct { - // A list of operations in the project in the specified zone. - Operations []*Operation `protobuf:"bytes,1,rep,name=operations" json:"operations,omitempty"` - // If any zones are listed here, the list of operations returned - // may be missing the operations from those zones. - MissingZones []string `protobuf:"bytes,2,rep,name=missing_zones,json=missingZones" json:"missing_zones,omitempty"` -} - -func (m *ListOperationsResponse) Reset() { *m = ListOperationsResponse{} } -func (m *ListOperationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListOperationsResponse) ProtoMessage() {} -func (*ListOperationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } - -func (m *ListOperationsResponse) GetOperations() []*Operation { - if m != nil { - return m.Operations - } - return nil -} - -func (m *ListOperationsResponse) GetMissingZones() []string { - if m != nil { - return m.MissingZones - } - return nil -} - -// Gets the current Container Engine service configuration. -type GetServerConfigRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine [zone](/compute/docs/zones#available) - // to return operations for. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name (project and location) of the server config to get - // Specified in the format 'projects/*/locations/*'. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` -} - -func (m *GetServerConfigRequest) Reset() { *m = GetServerConfigRequest{} } -func (m *GetServerConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetServerConfigRequest) ProtoMessage() {} -func (*GetServerConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } - -func (m *GetServerConfigRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetServerConfigRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetServerConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Container Engine service configuration. -type ServerConfig struct { - // Version of Kubernetes the service deploys by default. - DefaultClusterVersion string `protobuf:"bytes,1,opt,name=default_cluster_version,json=defaultClusterVersion" json:"default_cluster_version,omitempty"` - // List of valid node upgrade target versions. - ValidNodeVersions []string `protobuf:"bytes,3,rep,name=valid_node_versions,json=validNodeVersions" json:"valid_node_versions,omitempty"` - // Default image type. - DefaultImageType string `protobuf:"bytes,4,opt,name=default_image_type,json=defaultImageType" json:"default_image_type,omitempty"` - // List of valid image types. - ValidImageTypes []string `protobuf:"bytes,5,rep,name=valid_image_types,json=validImageTypes" json:"valid_image_types,omitempty"` - // List of valid master versions. - ValidMasterVersions []string `protobuf:"bytes,6,rep,name=valid_master_versions,json=validMasterVersions" json:"valid_master_versions,omitempty"` -} - -func (m *ServerConfig) Reset() { *m = ServerConfig{} } -func (m *ServerConfig) String() string { return proto.CompactTextString(m) } -func (*ServerConfig) ProtoMessage() {} -func (*ServerConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } - -func (m *ServerConfig) GetDefaultClusterVersion() string { - if m != nil { - return m.DefaultClusterVersion - } - return "" -} - -func (m *ServerConfig) GetValidNodeVersions() []string { - if m != nil { - return m.ValidNodeVersions - } - return nil -} - -func (m *ServerConfig) GetDefaultImageType() string { - if m != nil { - return m.DefaultImageType - } - return "" -} - -func (m *ServerConfig) GetValidImageTypes() []string { - if m != nil { - return m.ValidImageTypes - } - return nil -} - -func (m *ServerConfig) GetValidMasterVersions() []string { - if m != nil { - return m.ValidMasterVersions - } - return nil -} - -// CreateNodePoolRequest creates a node pool for a cluster. -type CreateNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use parent instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The node pool to create. - NodePool *NodePool `protobuf:"bytes,4,opt,name=node_pool,json=nodePool" json:"node_pool,omitempty"` - // The parent (project, location, cluster id) where the node pool will be created. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Parent string `protobuf:"bytes,6,opt,name=parent" json:"parent,omitempty"` -} - -func (m *CreateNodePoolRequest) Reset() { *m = CreateNodePoolRequest{} } -func (m *CreateNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*CreateNodePoolRequest) ProtoMessage() {} -func (*CreateNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } - -func (m *CreateNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CreateNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *CreateNodePoolRequest) GetNodePool() *NodePool { - if m != nil { - return m.NodePool - } - return nil -} - -func (m *CreateNodePoolRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// DeleteNodePoolRequest deletes a node pool for a cluster. -type DeleteNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to delete. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The name (project, location, cluster, node pool id) of the node pool to delete. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteNodePoolRequest) Reset() { *m = DeleteNodePoolRequest{} } -func (m *DeleteNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteNodePoolRequest) ProtoMessage() {} -func (*DeleteNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } - -func (m *DeleteNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *DeleteNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *DeleteNodePoolRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *DeleteNodePoolRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListNodePoolsRequest lists the node pool(s) for a cluster. -type ListNodePoolsRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use parent instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The parent (project, location, cluster id) where the node pools will be listed. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Parent string `protobuf:"bytes,5,opt,name=parent" json:"parent,omitempty"` -} - -func (m *ListNodePoolsRequest) Reset() { *m = ListNodePoolsRequest{} } -func (m *ListNodePoolsRequest) String() string { return proto.CompactTextString(m) } -func (*ListNodePoolsRequest) ProtoMessage() {} -func (*ListNodePoolsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } - -func (m *ListNodePoolsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListNodePoolsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ListNodePoolsRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *ListNodePoolsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// GetNodePoolRequest retrieves a node pool for a cluster. -type GetNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The name (project, location, cluster, node pool id) of the node pool to get. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *GetNodePoolRequest) Reset() { *m = GetNodePoolRequest{} } -func (m *GetNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*GetNodePoolRequest) ProtoMessage() {} -func (*GetNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } - -func (m *GetNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *GetNodePoolRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *GetNodePoolRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// NodePool contains the name and configuration for a cluster's node pool. -// Node pools are a set of nodes (i.e. VM's), with a common configuration and -// specification, under the control of the cluster master. They may have a set -// of Kubernetes labels applied to them, which may be used to reference them -// during pod scheduling. They may also be resized up or down, to accommodate -// the workload. -type NodePool struct { - // The name of the node pool. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The node configuration of the pool. - Config *NodeConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"` - // The initial node count for the pool. You must ensure that your - // Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a> - // is sufficient for this number of instances. You must also have available - // firewall and routes quota. - InitialNodeCount int32 `protobuf:"varint,3,opt,name=initial_node_count,json=initialNodeCount" json:"initial_node_count,omitempty"` - // Autoscaler configuration for this NodePool. Autoscaler is enabled - // only if a valid configuration is present. - Autoscaling *NodePoolAutoscaling `protobuf:"bytes,4,opt,name=autoscaling" json:"autoscaling,omitempty"` - // NodeManagement configuration for this NodePool. - Management *NodeManagement `protobuf:"bytes,5,opt,name=management" json:"management,omitempty"` - // [Output only] Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,100,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // [Output only] The version of the Kubernetes of this node. - Version string `protobuf:"bytes,101,opt,name=version" json:"version,omitempty"` - // [Output only] The resource URLs of [instance - // groups](/compute/docs/instance-groups/) associated with this - // node pool. - InstanceGroupUrls []string `protobuf:"bytes,102,rep,name=instance_group_urls,json=instanceGroupUrls" json:"instance_group_urls,omitempty"` - // [Output only] The status of the nodes in this pool instance. - Status NodePool_Status `protobuf:"varint,103,opt,name=status,enum=google.container.v1alpha1.NodePool_Status" json:"status,omitempty"` - // [Output only] Additional information about the current status of this - // node pool instance, if available. - StatusMessage string `protobuf:"bytes,104,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` -} - -func (m *NodePool) Reset() { *m = NodePool{} } -func (m *NodePool) String() string { return proto.CompactTextString(m) } -func (*NodePool) ProtoMessage() {} -func (*NodePool) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } - -func (m *NodePool) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *NodePool) GetConfig() *NodeConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *NodePool) GetInitialNodeCount() int32 { - if m != nil { - return m.InitialNodeCount - } - return 0 -} - -func (m *NodePool) GetAutoscaling() *NodePoolAutoscaling { - if m != nil { - return m.Autoscaling - } - return nil -} - -func (m *NodePool) GetManagement() *NodeManagement { - if m != nil { - return m.Management - } - return nil -} - -func (m *NodePool) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *NodePool) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func (m *NodePool) GetInstanceGroupUrls() []string { - if m != nil { - return m.InstanceGroupUrls - } - return nil -} - -func (m *NodePool) GetStatus() NodePool_Status { - if m != nil { - return m.Status - } - return NodePool_STATUS_UNSPECIFIED -} - -func (m *NodePool) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -// NodeManagement defines the set of node management services turned on for the -// node pool. -type NodeManagement struct { - // Whether the nodes will be automatically upgraded. - AutoUpgrade bool `protobuf:"varint,1,opt,name=auto_upgrade,json=autoUpgrade" json:"auto_upgrade,omitempty"` - // Whether the nodes will be automatically repaired. - AutoRepair bool `protobuf:"varint,2,opt,name=auto_repair,json=autoRepair" json:"auto_repair,omitempty"` - // Specifies the Auto Upgrade knobs for the node pool. - UpgradeOptions *AutoUpgradeOptions `protobuf:"bytes,10,opt,name=upgrade_options,json=upgradeOptions" json:"upgrade_options,omitempty"` -} - -func (m *NodeManagement) Reset() { *m = NodeManagement{} } -func (m *NodeManagement) String() string { return proto.CompactTextString(m) } -func (*NodeManagement) ProtoMessage() {} -func (*NodeManagement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } - -func (m *NodeManagement) GetAutoUpgrade() bool { - if m != nil { - return m.AutoUpgrade - } - return false -} - -func (m *NodeManagement) GetAutoRepair() bool { - if m != nil { - return m.AutoRepair - } - return false -} - -func (m *NodeManagement) GetUpgradeOptions() *AutoUpgradeOptions { - if m != nil { - return m.UpgradeOptions - } - return nil -} - -// AutoUpgradeOptions defines the set of options for the user to control how -// the Auto Upgrades will proceed. -type AutoUpgradeOptions struct { - // [Output only] This field is set when upgrades are about to commence - // with the approximate start time for the upgrades, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - AutoUpgradeStartTime string `protobuf:"bytes,1,opt,name=auto_upgrade_start_time,json=autoUpgradeStartTime" json:"auto_upgrade_start_time,omitempty"` - // [Output only] This field is set when upgrades are about to commence - // with the description of the upgrade. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *AutoUpgradeOptions) Reset() { *m = AutoUpgradeOptions{} } -func (m *AutoUpgradeOptions) String() string { return proto.CompactTextString(m) } -func (*AutoUpgradeOptions) ProtoMessage() {} -func (*AutoUpgradeOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } - -func (m *AutoUpgradeOptions) GetAutoUpgradeStartTime() string { - if m != nil { - return m.AutoUpgradeStartTime - } - return "" -} - -func (m *AutoUpgradeOptions) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// MaintenancePolicy defines the maintenance policy to be used for the cluster. -type MaintenancePolicy struct { - // Specifies the maintenance window in which maintenance may be performed. - Window *MaintenanceWindow `protobuf:"bytes,1,opt,name=window" json:"window,omitempty"` -} - -func (m *MaintenancePolicy) Reset() { *m = MaintenancePolicy{} } -func (m *MaintenancePolicy) String() string { return proto.CompactTextString(m) } -func (*MaintenancePolicy) ProtoMessage() {} -func (*MaintenancePolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } - -func (m *MaintenancePolicy) GetWindow() *MaintenanceWindow { - if m != nil { - return m.Window - } - return nil -} - -// MaintenanceWindow defines the maintenance window to be used for the cluster. -type MaintenanceWindow struct { - // Unimplemented, reserved for future use. - // HourlyMaintenanceWindow hourly_maintenance_window = 1; - // - // Types that are valid to be assigned to Policy: - // *MaintenanceWindow_DailyMaintenanceWindow - Policy isMaintenanceWindow_Policy `protobuf_oneof:"policy"` -} - -func (m *MaintenanceWindow) Reset() { *m = MaintenanceWindow{} } -func (m *MaintenanceWindow) String() string { return proto.CompactTextString(m) } -func (*MaintenanceWindow) ProtoMessage() {} -func (*MaintenanceWindow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } - -type isMaintenanceWindow_Policy interface { - isMaintenanceWindow_Policy() -} - -type MaintenanceWindow_DailyMaintenanceWindow struct { - DailyMaintenanceWindow *DailyMaintenanceWindow `protobuf:"bytes,2,opt,name=daily_maintenance_window,json=dailyMaintenanceWindow,oneof"` -} - -func (*MaintenanceWindow_DailyMaintenanceWindow) isMaintenanceWindow_Policy() {} - -func (m *MaintenanceWindow) GetPolicy() isMaintenanceWindow_Policy { - if m != nil { - return m.Policy - } - return nil -} - -func (m *MaintenanceWindow) GetDailyMaintenanceWindow() *DailyMaintenanceWindow { - if x, ok := m.GetPolicy().(*MaintenanceWindow_DailyMaintenanceWindow); ok { - return x.DailyMaintenanceWindow - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*MaintenanceWindow) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _MaintenanceWindow_OneofMarshaler, _MaintenanceWindow_OneofUnmarshaler, _MaintenanceWindow_OneofSizer, []interface{}{ - (*MaintenanceWindow_DailyMaintenanceWindow)(nil), - } -} - -func _MaintenanceWindow_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*MaintenanceWindow) - // policy - switch x := m.Policy.(type) { - case *MaintenanceWindow_DailyMaintenanceWindow: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DailyMaintenanceWindow); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("MaintenanceWindow.Policy has unexpected type %T", x) - } - return nil -} - -func _MaintenanceWindow_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*MaintenanceWindow) - switch tag { - case 2: // policy.daily_maintenance_window - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DailyMaintenanceWindow) - err := b.DecodeMessage(msg) - m.Policy = &MaintenanceWindow_DailyMaintenanceWindow{msg} - return true, err - default: - return false, nil - } -} - -func _MaintenanceWindow_OneofSizer(msg proto.Message) (n int) { - m := msg.(*MaintenanceWindow) - // policy - switch x := m.Policy.(type) { - case *MaintenanceWindow_DailyMaintenanceWindow: - s := proto.Size(x.DailyMaintenanceWindow) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Time window specified for daily maintenance operations. -type DailyMaintenanceWindow struct { - // Time within the maintenance window to start the maintenance operations. - // It must be in format "HH:MM”, where HH : [00-23] and MM : [00-59] GMT. - StartTime string `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // [Output only] Duration of the time window, automatically chosen to be - // smallest possible in the given scenario. - Duration string `protobuf:"bytes,3,opt,name=duration" json:"duration,omitempty"` -} - -func (m *DailyMaintenanceWindow) Reset() { *m = DailyMaintenanceWindow{} } -func (m *DailyMaintenanceWindow) String() string { return proto.CompactTextString(m) } -func (*DailyMaintenanceWindow) ProtoMessage() {} -func (*DailyMaintenanceWindow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } - -func (m *DailyMaintenanceWindow) GetStartTime() string { - if m != nil { - return m.StartTime - } - return "" -} - -func (m *DailyMaintenanceWindow) GetDuration() string { - if m != nil { - return m.Duration - } - return "" -} - -// SetNodePoolManagementRequest sets the node management properties of a node -// pool. -type SetNodePoolManagementRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to update. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // NodeManagement configuration for the node pool. - Management *NodeManagement `protobuf:"bytes,5,opt,name=management" json:"management,omitempty"` - // The name (project, location, cluster, node pool id) of the node pool to set - // management properties. Specified in the format - // 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *SetNodePoolManagementRequest) Reset() { *m = SetNodePoolManagementRequest{} } -func (m *SetNodePoolManagementRequest) String() string { return proto.CompactTextString(m) } -func (*SetNodePoolManagementRequest) ProtoMessage() {} -func (*SetNodePoolManagementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } - -func (m *SetNodePoolManagementRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetManagement() *NodeManagement { - if m != nil { - return m.Management - } - return nil -} - -func (m *SetNodePoolManagementRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetNodePoolSizeRequest sets the size a node -// pool. -type SetNodePoolSizeRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to update. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The desired node count for the pool. - NodeCount int32 `protobuf:"varint,5,opt,name=node_count,json=nodeCount" json:"node_count,omitempty"` - // The name (project, location, cluster, node pool id) of the node pool to set - // size. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *SetNodePoolSizeRequest) Reset() { *m = SetNodePoolSizeRequest{} } -func (m *SetNodePoolSizeRequest) String() string { return proto.CompactTextString(m) } -func (*SetNodePoolSizeRequest) ProtoMessage() {} -func (*SetNodePoolSizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } - -func (m *SetNodePoolSizeRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNodePoolSizeRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNodePoolSizeRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNodePoolSizeRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *SetNodePoolSizeRequest) GetNodeCount() int32 { - if m != nil { - return m.NodeCount - } - return 0 -} - -func (m *SetNodePoolSizeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed -// NodePool upgrade. This will be an no-op if the last upgrade successfully -// completed. -type RollbackNodePoolUpgradeRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to rollback. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to rollback. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The name (project, location, cluster, node pool id) of the node poll to - // rollback upgrade. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *RollbackNodePoolUpgradeRequest) Reset() { *m = RollbackNodePoolUpgradeRequest{} } -func (m *RollbackNodePoolUpgradeRequest) String() string { return proto.CompactTextString(m) } -func (*RollbackNodePoolUpgradeRequest) ProtoMessage() {} -func (*RollbackNodePoolUpgradeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } - -func (m *RollbackNodePoolUpgradeRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListNodePoolsResponse is the result of ListNodePoolsRequest. -type ListNodePoolsResponse struct { - // A list of node pools for a cluster. - NodePools []*NodePool `protobuf:"bytes,1,rep,name=node_pools,json=nodePools" json:"node_pools,omitempty"` -} - -func (m *ListNodePoolsResponse) Reset() { *m = ListNodePoolsResponse{} } -func (m *ListNodePoolsResponse) String() string { return proto.CompactTextString(m) } -func (*ListNodePoolsResponse) ProtoMessage() {} -func (*ListNodePoolsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } - -func (m *ListNodePoolsResponse) GetNodePools() []*NodePool { - if m != nil { - return m.NodePools - } - return nil -} - -// NodePoolAutoscaling contains information required by cluster autoscaler to -// adjust the size of the node pool to the current cluster usage. -type NodePoolAutoscaling struct { - // Is autoscaling enabled for this node pool. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` - // Minimum number of nodes in the NodePool. Must be >= 1 and <= - // max_node_count. - MinNodeCount int32 `protobuf:"varint,2,opt,name=min_node_count,json=minNodeCount" json:"min_node_count,omitempty"` - // Maximum number of nodes in the NodePool. Must be >= min_node_count. There - // has to enough quota to scale up the cluster. - MaxNodeCount int32 `protobuf:"varint,3,opt,name=max_node_count,json=maxNodeCount" json:"max_node_count,omitempty"` -} - -func (m *NodePoolAutoscaling) Reset() { *m = NodePoolAutoscaling{} } -func (m *NodePoolAutoscaling) String() string { return proto.CompactTextString(m) } -func (*NodePoolAutoscaling) ProtoMessage() {} -func (*NodePoolAutoscaling) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } - -func (m *NodePoolAutoscaling) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *NodePoolAutoscaling) GetMinNodeCount() int32 { - if m != nil { - return m.MinNodeCount - } - return 0 -} - -func (m *NodePoolAutoscaling) GetMaxNodeCount() int32 { - if m != nil { - return m.MaxNodeCount - } - return 0 -} - -// SetLabelsRequest sets the Google Cloud Platform labels on a Google Container -// Engine cluster, which will in turn set them for Google Compute Engine -// resources used by that cluster -type SetLabelsRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The labels to set for that cluster. - ResourceLabels map[string]string `protobuf:"bytes,4,rep,name=resource_labels,json=resourceLabels" json:"resource_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The fingerprint of the previous set of labels for this resource, - // used to detect conflicts. The fingerprint is initially generated by - // Container Engine and changes after every request to modify or update - // labels. You must always provide an up-to-date fingerprint hash when - // updating or changing labels. Make a <code>get()</code> request to the - // resource to get the latest fingerprint. - LabelFingerprint string `protobuf:"bytes,5,opt,name=label_fingerprint,json=labelFingerprint" json:"label_fingerprint,omitempty"` - // The name (project, location, cluster id) of the cluster to set labels. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *SetLabelsRequest) Reset() { *m = SetLabelsRequest{} } -func (m *SetLabelsRequest) String() string { return proto.CompactTextString(m) } -func (*SetLabelsRequest) ProtoMessage() {} -func (*SetLabelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } - -func (m *SetLabelsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLabelsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLabelsRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLabelsRequest) GetResourceLabels() map[string]string { - if m != nil { - return m.ResourceLabels - } - return nil -} - -func (m *SetLabelsRequest) GetLabelFingerprint() string { - if m != nil { - return m.LabelFingerprint - } - return "" -} - -func (m *SetLabelsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for -// a cluster. -type SetLegacyAbacRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // Whether ABAC authorization will be enabled in the cluster. - Enabled bool `protobuf:"varint,4,opt,name=enabled" json:"enabled,omitempty"` - // The name (project, location, cluster id) of the cluster to set legacy abac. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *SetLegacyAbacRequest) Reset() { *m = SetLegacyAbacRequest{} } -func (m *SetLegacyAbacRequest) String() string { return proto.CompactTextString(m) } -func (*SetLegacyAbacRequest) ProtoMessage() {} -func (*SetLegacyAbacRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } - -func (m *SetLegacyAbacRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLegacyAbacRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLegacyAbacRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLegacyAbacRequest) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *SetLegacyAbacRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// StartIPRotationRequest creates a new IP for the cluster and then performs -// a node upgrade on each node pool to point to the new IP. -type StartIPRotationRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name (project, location, cluster id) of the cluster to start IP rotation. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *StartIPRotationRequest) Reset() { *m = StartIPRotationRequest{} } -func (m *StartIPRotationRequest) String() string { return proto.CompactTextString(m) } -func (*StartIPRotationRequest) ProtoMessage() {} -func (*StartIPRotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } - -func (m *StartIPRotationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *StartIPRotationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *StartIPRotationRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *StartIPRotationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// CompleteIPRotationRequest moves the cluster master back into single-IP mode. -type CompleteIPRotationRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name (project, location, cluster id) of the cluster to complete IP rotation. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *CompleteIPRotationRequest) Reset() { *m = CompleteIPRotationRequest{} } -func (m *CompleteIPRotationRequest) String() string { return proto.CompactTextString(m) } -func (*CompleteIPRotationRequest) ProtoMessage() {} -func (*CompleteIPRotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } - -func (m *CompleteIPRotationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CompleteIPRotationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CompleteIPRotationRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *CompleteIPRotationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// AcceleratorConfig represents a Hardware Accelerator request. -type AcceleratorConfig struct { - // The number of the accelerator cards exposed to an instance. - AcceleratorCount int64 `protobuf:"varint,1,opt,name=accelerator_count,json=acceleratorCount" json:"accelerator_count,omitempty"` - // The accelerator type resource name. List of supported accelerators - // [here](/compute/docs/gpus/#Introduction) - AcceleratorType string `protobuf:"bytes,2,opt,name=accelerator_type,json=acceleratorType" json:"accelerator_type,omitempty"` -} - -func (m *AcceleratorConfig) Reset() { *m = AcceleratorConfig{} } -func (m *AcceleratorConfig) String() string { return proto.CompactTextString(m) } -func (*AcceleratorConfig) ProtoMessage() {} -func (*AcceleratorConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } - -func (m *AcceleratorConfig) GetAcceleratorCount() int64 { - if m != nil { - return m.AcceleratorCount - } - return 0 -} - -func (m *AcceleratorConfig) GetAcceleratorType() string { - if m != nil { - return m.AcceleratorType - } - return "" -} - -// SetNetworkPolicyRequest enables/disables network policy for a cluster. -type SetNetworkPolicyRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // Configuration options for the NetworkPolicy feature. - NetworkPolicy *NetworkPolicy `protobuf:"bytes,4,opt,name=network_policy,json=networkPolicy" json:"network_policy,omitempty"` - // The name (project, location, cluster id) of the cluster to set networking - // policy. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *SetNetworkPolicyRequest) Reset() { *m = SetNetworkPolicyRequest{} } -func (m *SetNetworkPolicyRequest) String() string { return proto.CompactTextString(m) } -func (*SetNetworkPolicyRequest) ProtoMessage() {} -func (*SetNetworkPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } - -func (m *SetNetworkPolicyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetNetworkPolicy() *NetworkPolicy { - if m != nil { - return m.NetworkPolicy - } - return nil -} - -func (m *SetNetworkPolicyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetMaintenancePolicyRequest sets the maintenance policy for a cluster. -type SetMaintenancePolicyRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The maintenance policy to be set for the cluster. An empty field - // clears the existing maintenance policy. - MaintenancePolicy *MaintenancePolicy `protobuf:"bytes,4,opt,name=maintenance_policy,json=maintenancePolicy" json:"maintenance_policy,omitempty"` - // The name (project, location, cluster id) of the cluster to set maintenance - // policy. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *SetMaintenancePolicyRequest) Reset() { *m = SetMaintenancePolicyRequest{} } -func (m *SetMaintenancePolicyRequest) String() string { return proto.CompactTextString(m) } -func (*SetMaintenancePolicyRequest) ProtoMessage() {} -func (*SetMaintenancePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } - -func (m *SetMaintenancePolicyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetMaintenancePolicy() *MaintenancePolicy { - if m != nil { - return m.MaintenancePolicy - } - return nil -} - -func (m *SetMaintenancePolicyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*NodeConfig)(nil), "google.container.v1alpha1.NodeConfig") - proto.RegisterType((*NodeTaint)(nil), "google.container.v1alpha1.NodeTaint") - proto.RegisterType((*MasterAuth)(nil), "google.container.v1alpha1.MasterAuth") - proto.RegisterType((*ClientCertificateConfig)(nil), "google.container.v1alpha1.ClientCertificateConfig") - proto.RegisterType((*AddonsConfig)(nil), "google.container.v1alpha1.AddonsConfig") - proto.RegisterType((*HttpLoadBalancing)(nil), "google.container.v1alpha1.HttpLoadBalancing") - proto.RegisterType((*HorizontalPodAutoscaling)(nil), "google.container.v1alpha1.HorizontalPodAutoscaling") - proto.RegisterType((*KubernetesDashboard)(nil), "google.container.v1alpha1.KubernetesDashboard") - proto.RegisterType((*NetworkPolicyConfig)(nil), "google.container.v1alpha1.NetworkPolicyConfig") - proto.RegisterType((*MasterAuthorizedNetworksConfig)(nil), "google.container.v1alpha1.MasterAuthorizedNetworksConfig") - proto.RegisterType((*MasterAuthorizedNetworksConfig_CidrBlock)(nil), "google.container.v1alpha1.MasterAuthorizedNetworksConfig.CidrBlock") - proto.RegisterType((*NetworkPolicy)(nil), "google.container.v1alpha1.NetworkPolicy") - proto.RegisterType((*IPAllocationPolicy)(nil), "google.container.v1alpha1.IPAllocationPolicy") - proto.RegisterType((*PodSecurityPolicyConfig)(nil), "google.container.v1alpha1.PodSecurityPolicyConfig") - proto.RegisterType((*Cluster)(nil), "google.container.v1alpha1.Cluster") - proto.RegisterType((*ClusterUpdate)(nil), "google.container.v1alpha1.ClusterUpdate") - proto.RegisterType((*Operation)(nil), "google.container.v1alpha1.Operation") - proto.RegisterType((*CreateClusterRequest)(nil), "google.container.v1alpha1.CreateClusterRequest") - proto.RegisterType((*GetClusterRequest)(nil), "google.container.v1alpha1.GetClusterRequest") - proto.RegisterType((*UpdateClusterRequest)(nil), "google.container.v1alpha1.UpdateClusterRequest") - proto.RegisterType((*UpdateNodePoolRequest)(nil), "google.container.v1alpha1.UpdateNodePoolRequest") - proto.RegisterType((*SetNodePoolAutoscalingRequest)(nil), "google.container.v1alpha1.SetNodePoolAutoscalingRequest") - proto.RegisterType((*SetLoggingServiceRequest)(nil), "google.container.v1alpha1.SetLoggingServiceRequest") - proto.RegisterType((*SetMonitoringServiceRequest)(nil), "google.container.v1alpha1.SetMonitoringServiceRequest") - proto.RegisterType((*SetAddonsConfigRequest)(nil), "google.container.v1alpha1.SetAddonsConfigRequest") - proto.RegisterType((*SetLocationsRequest)(nil), "google.container.v1alpha1.SetLocationsRequest") - proto.RegisterType((*UpdateMasterRequest)(nil), "google.container.v1alpha1.UpdateMasterRequest") - proto.RegisterType((*SetMasterAuthRequest)(nil), "google.container.v1alpha1.SetMasterAuthRequest") - proto.RegisterType((*DeleteClusterRequest)(nil), "google.container.v1alpha1.DeleteClusterRequest") - proto.RegisterType((*ListClustersRequest)(nil), "google.container.v1alpha1.ListClustersRequest") - proto.RegisterType((*ListClustersResponse)(nil), "google.container.v1alpha1.ListClustersResponse") - proto.RegisterType((*GetOperationRequest)(nil), "google.container.v1alpha1.GetOperationRequest") - proto.RegisterType((*ListOperationsRequest)(nil), "google.container.v1alpha1.ListOperationsRequest") - proto.RegisterType((*CancelOperationRequest)(nil), "google.container.v1alpha1.CancelOperationRequest") - proto.RegisterType((*ListOperationsResponse)(nil), "google.container.v1alpha1.ListOperationsResponse") - proto.RegisterType((*GetServerConfigRequest)(nil), "google.container.v1alpha1.GetServerConfigRequest") - proto.RegisterType((*ServerConfig)(nil), "google.container.v1alpha1.ServerConfig") - proto.RegisterType((*CreateNodePoolRequest)(nil), "google.container.v1alpha1.CreateNodePoolRequest") - proto.RegisterType((*DeleteNodePoolRequest)(nil), "google.container.v1alpha1.DeleteNodePoolRequest") - proto.RegisterType((*ListNodePoolsRequest)(nil), "google.container.v1alpha1.ListNodePoolsRequest") - proto.RegisterType((*GetNodePoolRequest)(nil), "google.container.v1alpha1.GetNodePoolRequest") - proto.RegisterType((*NodePool)(nil), "google.container.v1alpha1.NodePool") - proto.RegisterType((*NodeManagement)(nil), "google.container.v1alpha1.NodeManagement") - proto.RegisterType((*AutoUpgradeOptions)(nil), "google.container.v1alpha1.AutoUpgradeOptions") - proto.RegisterType((*MaintenancePolicy)(nil), "google.container.v1alpha1.MaintenancePolicy") - proto.RegisterType((*MaintenanceWindow)(nil), "google.container.v1alpha1.MaintenanceWindow") - proto.RegisterType((*DailyMaintenanceWindow)(nil), "google.container.v1alpha1.DailyMaintenanceWindow") - proto.RegisterType((*SetNodePoolManagementRequest)(nil), "google.container.v1alpha1.SetNodePoolManagementRequest") - proto.RegisterType((*SetNodePoolSizeRequest)(nil), "google.container.v1alpha1.SetNodePoolSizeRequest") - proto.RegisterType((*RollbackNodePoolUpgradeRequest)(nil), "google.container.v1alpha1.RollbackNodePoolUpgradeRequest") - proto.RegisterType((*ListNodePoolsResponse)(nil), "google.container.v1alpha1.ListNodePoolsResponse") - proto.RegisterType((*NodePoolAutoscaling)(nil), "google.container.v1alpha1.NodePoolAutoscaling") - proto.RegisterType((*SetLabelsRequest)(nil), "google.container.v1alpha1.SetLabelsRequest") - proto.RegisterType((*SetLegacyAbacRequest)(nil), "google.container.v1alpha1.SetLegacyAbacRequest") - proto.RegisterType((*StartIPRotationRequest)(nil), "google.container.v1alpha1.StartIPRotationRequest") - proto.RegisterType((*CompleteIPRotationRequest)(nil), "google.container.v1alpha1.CompleteIPRotationRequest") - proto.RegisterType((*AcceleratorConfig)(nil), "google.container.v1alpha1.AcceleratorConfig") - proto.RegisterType((*SetNetworkPolicyRequest)(nil), "google.container.v1alpha1.SetNetworkPolicyRequest") - proto.RegisterType((*SetMaintenancePolicyRequest)(nil), "google.container.v1alpha1.SetMaintenancePolicyRequest") - proto.RegisterEnum("google.container.v1alpha1.NodeTaint_Effect", NodeTaint_Effect_name, NodeTaint_Effect_value) - proto.RegisterEnum("google.container.v1alpha1.NetworkPolicy_Provider", NetworkPolicy_Provider_name, NetworkPolicy_Provider_value) - proto.RegisterEnum("google.container.v1alpha1.Cluster_Status", Cluster_Status_name, Cluster_Status_value) - proto.RegisterEnum("google.container.v1alpha1.Operation_Status", Operation_Status_name, Operation_Status_value) - proto.RegisterEnum("google.container.v1alpha1.Operation_Type", Operation_Type_name, Operation_Type_value) - proto.RegisterEnum("google.container.v1alpha1.SetMasterAuthRequest_Action", SetMasterAuthRequest_Action_name, SetMasterAuthRequest_Action_value) - proto.RegisterEnum("google.container.v1alpha1.NodePool_Status", NodePool_Status_name, NodePool_Status_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ClusterManager service - -type ClusterManagerClient interface { - // Lists all clusters owned by a project in either the specified zone or all - // zones. - ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) - // Gets the details of a specific cluster. - GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) - // Creates a cluster, consisting of the specified number and type of Google - // Compute Engine instances. - // - // By default, the cluster is created in the project's - // [default network](/compute/docs/networks-and-firewalls#networks). - // - // One firewall is added for the cluster. After cluster creation, - // the cluster creates routes for each node to allow the containers - // on that node to communicate with all other instances in the - // cluster. - // - // Finally, an entry is added to the project's global metadata indicating - // which CIDR range is being used by the cluster. - CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Updates the settings of a specific cluster. - UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Updates the version and/or iamge type of a specific node pool. - UpdateNodePool(ctx context.Context, in *UpdateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the autoscaling settings of a specific node pool. - SetNodePoolAutoscaling(ctx context.Context, in *SetNodePoolAutoscalingRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the logging service of a specific cluster. - SetLoggingService(ctx context.Context, in *SetLoggingServiceRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the monitoring service of a specific cluster. - SetMonitoringService(ctx context.Context, in *SetMonitoringServiceRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the addons of a specific cluster. - SetAddonsConfig(ctx context.Context, in *SetAddonsConfigRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the locations of a specific cluster. - SetLocations(ctx context.Context, in *SetLocationsRequest, opts ...grpc.CallOption) (*Operation, error) - // Updates the master of a specific cluster. - UpdateMaster(ctx context.Context, in *UpdateMasterRequest, opts ...grpc.CallOption) (*Operation, error) - // Used to set master auth materials. Currently supports :- - // Changing the admin password of a specific cluster. - // This can be either via password generation or explicitly set. - // Modify basic_auth.csv and reset the K8S API server. - SetMasterAuth(ctx context.Context, in *SetMasterAuthRequest, opts ...grpc.CallOption) (*Operation, error) - // Deletes the cluster, including the Kubernetes endpoint and all worker - // nodes. - // - // Firewalls and routes that were configured during cluster creation - // are also deleted. - // - // Other Google Compute Engine resources that might be in use by the cluster - // (e.g. load balancer resources) will not be deleted if they weren't present - // at the initial create time. - DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Lists all operations in a project in a specific zone or all zones. - ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) - // Gets the specified operation. - GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) - // Cancels the specified operation. - CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Returns configuration info about the Container Engine service. - GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error) - // Lists the node pools for a cluster. - ListNodePools(ctx context.Context, in *ListNodePoolsRequest, opts ...grpc.CallOption) (*ListNodePoolsResponse, error) - // Retrieves the node pool requested. - GetNodePool(ctx context.Context, in *GetNodePoolRequest, opts ...grpc.CallOption) (*NodePool, error) - // Creates a node pool for a cluster. - CreateNodePool(ctx context.Context, in *CreateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) - // Deletes a node pool from a cluster. - DeleteNodePool(ctx context.Context, in *DeleteNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) - // Roll back the previously Aborted or Failed NodePool upgrade. - // This will be an no-op if the last upgrade successfully completed. - RollbackNodePoolUpgrade(ctx context.Context, in *RollbackNodePoolUpgradeRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the NodeManagement options for a node pool. - SetNodePoolManagement(ctx context.Context, in *SetNodePoolManagementRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets labels on a cluster. - SetLabels(ctx context.Context, in *SetLabelsRequest, opts ...grpc.CallOption) (*Operation, error) - // Enables or disables the ABAC authorization mechanism on a cluster. - SetLegacyAbac(ctx context.Context, in *SetLegacyAbacRequest, opts ...grpc.CallOption) (*Operation, error) - // Start master IP rotation. - StartIPRotation(ctx context.Context, in *StartIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) - // Completes master IP rotation. - CompleteIPRotation(ctx context.Context, in *CompleteIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the size of a specific node pool. - SetNodePoolSize(ctx context.Context, in *SetNodePoolSizeRequest, opts ...grpc.CallOption) (*Operation, error) - // Enables/Disables Network Policy for a cluster. - SetNetworkPolicy(ctx context.Context, in *SetNetworkPolicyRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the maintenance policy for a cluster. - SetMaintenancePolicy(ctx context.Context, in *SetMaintenancePolicyRequest, opts ...grpc.CallOption) (*Operation, error) -} - -type clusterManagerClient struct { - cc *grpc.ClientConn -} - -func NewClusterManagerClient(cc *grpc.ClientConn) ClusterManagerClient { - return &clusterManagerClient{cc} -} - -func (c *clusterManagerClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) { - out := new(ListClustersResponse) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/ListClusters", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/GetCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/CreateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/UpdateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) UpdateNodePool(ctx context.Context, in *UpdateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/UpdateNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNodePoolAutoscaling(ctx context.Context, in *SetNodePoolAutoscalingRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetNodePoolAutoscaling", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLoggingService(ctx context.Context, in *SetLoggingServiceRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetLoggingService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetMonitoringService(ctx context.Context, in *SetMonitoringServiceRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetMonitoringService", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetAddonsConfig(ctx context.Context, in *SetAddonsConfigRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetAddonsConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLocations(ctx context.Context, in *SetLocationsRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetLocations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) UpdateMaster(ctx context.Context, in *UpdateMasterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/UpdateMaster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetMasterAuth(ctx context.Context, in *SetMasterAuthRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetMasterAuth", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/DeleteCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) { - out := new(ListOperationsResponse) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/ListOperations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/GetOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/CancelOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error) { - out := new(ServerConfig) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/GetServerConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) ListNodePools(ctx context.Context, in *ListNodePoolsRequest, opts ...grpc.CallOption) (*ListNodePoolsResponse, error) { - out := new(ListNodePoolsResponse) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/ListNodePools", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetNodePool(ctx context.Context, in *GetNodePoolRequest, opts ...grpc.CallOption) (*NodePool, error) { - out := new(NodePool) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/GetNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CreateNodePool(ctx context.Context, in *CreateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/CreateNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) DeleteNodePool(ctx context.Context, in *DeleteNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/DeleteNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) RollbackNodePoolUpgrade(ctx context.Context, in *RollbackNodePoolUpgradeRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/RollbackNodePoolUpgrade", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNodePoolManagement(ctx context.Context, in *SetNodePoolManagementRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetNodePoolManagement", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLabels(ctx context.Context, in *SetLabelsRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetLabels", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLegacyAbac(ctx context.Context, in *SetLegacyAbacRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetLegacyAbac", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) StartIPRotation(ctx context.Context, in *StartIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/StartIPRotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CompleteIPRotation(ctx context.Context, in *CompleteIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/CompleteIPRotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNodePoolSize(ctx context.Context, in *SetNodePoolSizeRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetNodePoolSize", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNetworkPolicy(ctx context.Context, in *SetNetworkPolicyRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetNetworkPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetMaintenancePolicy(ctx context.Context, in *SetMaintenancePolicyRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1alpha1.ClusterManager/SetMaintenancePolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ClusterManager service - -type ClusterManagerServer interface { - // Lists all clusters owned by a project in either the specified zone or all - // zones. - ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) - // Gets the details of a specific cluster. - GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) - // Creates a cluster, consisting of the specified number and type of Google - // Compute Engine instances. - // - // By default, the cluster is created in the project's - // [default network](/compute/docs/networks-and-firewalls#networks). - // - // One firewall is added for the cluster. After cluster creation, - // the cluster creates routes for each node to allow the containers - // on that node to communicate with all other instances in the - // cluster. - // - // Finally, an entry is added to the project's global metadata indicating - // which CIDR range is being used by the cluster. - CreateCluster(context.Context, *CreateClusterRequest) (*Operation, error) - // Updates the settings of a specific cluster. - UpdateCluster(context.Context, *UpdateClusterRequest) (*Operation, error) - // Updates the version and/or iamge type of a specific node pool. - UpdateNodePool(context.Context, *UpdateNodePoolRequest) (*Operation, error) - // Sets the autoscaling settings of a specific node pool. - SetNodePoolAutoscaling(context.Context, *SetNodePoolAutoscalingRequest) (*Operation, error) - // Sets the logging service of a specific cluster. - SetLoggingService(context.Context, *SetLoggingServiceRequest) (*Operation, error) - // Sets the monitoring service of a specific cluster. - SetMonitoringService(context.Context, *SetMonitoringServiceRequest) (*Operation, error) - // Sets the addons of a specific cluster. - SetAddonsConfig(context.Context, *SetAddonsConfigRequest) (*Operation, error) - // Sets the locations of a specific cluster. - SetLocations(context.Context, *SetLocationsRequest) (*Operation, error) - // Updates the master of a specific cluster. - UpdateMaster(context.Context, *UpdateMasterRequest) (*Operation, error) - // Used to set master auth materials. Currently supports :- - // Changing the admin password of a specific cluster. - // This can be either via password generation or explicitly set. - // Modify basic_auth.csv and reset the K8S API server. - SetMasterAuth(context.Context, *SetMasterAuthRequest) (*Operation, error) - // Deletes the cluster, including the Kubernetes endpoint and all worker - // nodes. - // - // Firewalls and routes that were configured during cluster creation - // are also deleted. - // - // Other Google Compute Engine resources that might be in use by the cluster - // (e.g. load balancer resources) will not be deleted if they weren't present - // at the initial create time. - DeleteCluster(context.Context, *DeleteClusterRequest) (*Operation, error) - // Lists all operations in a project in a specific zone or all zones. - ListOperations(context.Context, *ListOperationsRequest) (*ListOperationsResponse, error) - // Gets the specified operation. - GetOperation(context.Context, *GetOperationRequest) (*Operation, error) - // Cancels the specified operation. - CancelOperation(context.Context, *CancelOperationRequest) (*google_protobuf1.Empty, error) - // Returns configuration info about the Container Engine service. - GetServerConfig(context.Context, *GetServerConfigRequest) (*ServerConfig, error) - // Lists the node pools for a cluster. - ListNodePools(context.Context, *ListNodePoolsRequest) (*ListNodePoolsResponse, error) - // Retrieves the node pool requested. - GetNodePool(context.Context, *GetNodePoolRequest) (*NodePool, error) - // Creates a node pool for a cluster. - CreateNodePool(context.Context, *CreateNodePoolRequest) (*Operation, error) - // Deletes a node pool from a cluster. - DeleteNodePool(context.Context, *DeleteNodePoolRequest) (*Operation, error) - // Roll back the previously Aborted or Failed NodePool upgrade. - // This will be an no-op if the last upgrade successfully completed. - RollbackNodePoolUpgrade(context.Context, *RollbackNodePoolUpgradeRequest) (*Operation, error) - // Sets the NodeManagement options for a node pool. - SetNodePoolManagement(context.Context, *SetNodePoolManagementRequest) (*Operation, error) - // Sets labels on a cluster. - SetLabels(context.Context, *SetLabelsRequest) (*Operation, error) - // Enables or disables the ABAC authorization mechanism on a cluster. - SetLegacyAbac(context.Context, *SetLegacyAbacRequest) (*Operation, error) - // Start master IP rotation. - StartIPRotation(context.Context, *StartIPRotationRequest) (*Operation, error) - // Completes master IP rotation. - CompleteIPRotation(context.Context, *CompleteIPRotationRequest) (*Operation, error) - // Sets the size of a specific node pool. - SetNodePoolSize(context.Context, *SetNodePoolSizeRequest) (*Operation, error) - // Enables/Disables Network Policy for a cluster. - SetNetworkPolicy(context.Context, *SetNetworkPolicyRequest) (*Operation, error) - // Sets the maintenance policy for a cluster. - SetMaintenancePolicy(context.Context, *SetMaintenancePolicyRequest) (*Operation, error) -} - -func RegisterClusterManagerServer(s *grpc.Server, srv ClusterManagerServer) { - s.RegisterService(&_ClusterManager_serviceDesc, srv) -} - -func _ClusterManager_ListClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClustersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListClusters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/ListClusters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListClusters(ctx, req.(*ListClustersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/GetCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetCluster(ctx, req.(*GetClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CreateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CreateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/CreateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CreateCluster(ctx, req.(*CreateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).UpdateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/UpdateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).UpdateCluster(ctx, req.(*UpdateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_UpdateNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).UpdateNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/UpdateNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).UpdateNodePool(ctx, req.(*UpdateNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNodePoolAutoscaling_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNodePoolAutoscalingRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNodePoolAutoscaling(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetNodePoolAutoscaling", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNodePoolAutoscaling(ctx, req.(*SetNodePoolAutoscalingRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLoggingService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLoggingServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLoggingService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetLoggingService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLoggingService(ctx, req.(*SetLoggingServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetMonitoringService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMonitoringServiceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetMonitoringService(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetMonitoringService", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetMonitoringService(ctx, req.(*SetMonitoringServiceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetAddonsConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetAddonsConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetAddonsConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetAddonsConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetAddonsConfig(ctx, req.(*SetAddonsConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLocationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLocations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetLocations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLocations(ctx, req.(*SetLocationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_UpdateMaster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateMasterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).UpdateMaster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/UpdateMaster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).UpdateMaster(ctx, req.(*UpdateMasterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetMasterAuth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMasterAuthRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetMasterAuth(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetMasterAuth", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetMasterAuth(ctx, req.(*SetMasterAuthRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_DeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).DeleteCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/DeleteCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).DeleteCluster(ctx, req.(*DeleteClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_ListOperations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOperationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListOperations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/ListOperations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListOperations(ctx, req.(*ListOperationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/GetOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetOperation(ctx, req.(*GetOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CancelOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CancelOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/CancelOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CancelOperation(ctx, req.(*CancelOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetServerConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServerConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetServerConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/GetServerConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetServerConfig(ctx, req.(*GetServerConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_ListNodePools_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNodePoolsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListNodePools(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/ListNodePools", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListNodePools(ctx, req.(*ListNodePoolsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/GetNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetNodePool(ctx, req.(*GetNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CreateNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CreateNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/CreateNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CreateNodePool(ctx, req.(*CreateNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_DeleteNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).DeleteNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/DeleteNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).DeleteNodePool(ctx, req.(*DeleteNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_RollbackNodePoolUpgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RollbackNodePoolUpgradeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).RollbackNodePoolUpgrade(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/RollbackNodePoolUpgrade", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).RollbackNodePoolUpgrade(ctx, req.(*RollbackNodePoolUpgradeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNodePoolManagement_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNodePoolManagementRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNodePoolManagement(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetNodePoolManagement", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNodePoolManagement(ctx, req.(*SetNodePoolManagementRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLabels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLabelsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLabels(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetLabels", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLabels(ctx, req.(*SetLabelsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLegacyAbac_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLegacyAbacRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLegacyAbac(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetLegacyAbac", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLegacyAbac(ctx, req.(*SetLegacyAbacRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_StartIPRotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StartIPRotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).StartIPRotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/StartIPRotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).StartIPRotation(ctx, req.(*StartIPRotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CompleteIPRotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CompleteIPRotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CompleteIPRotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/CompleteIPRotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CompleteIPRotation(ctx, req.(*CompleteIPRotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNodePoolSize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNodePoolSizeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNodePoolSize(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetNodePoolSize", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNodePoolSize(ctx, req.(*SetNodePoolSizeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNetworkPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNetworkPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNetworkPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetNetworkPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNetworkPolicy(ctx, req.(*SetNetworkPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetMaintenancePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMaintenancePolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetMaintenancePolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1alpha1.ClusterManager/SetMaintenancePolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetMaintenancePolicy(ctx, req.(*SetMaintenancePolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ClusterManager_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.container.v1alpha1.ClusterManager", - HandlerType: (*ClusterManagerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListClusters", - Handler: _ClusterManager_ListClusters_Handler, - }, - { - MethodName: "GetCluster", - Handler: _ClusterManager_GetCluster_Handler, - }, - { - MethodName: "CreateCluster", - Handler: _ClusterManager_CreateCluster_Handler, - }, - { - MethodName: "UpdateCluster", - Handler: _ClusterManager_UpdateCluster_Handler, - }, - { - MethodName: "UpdateNodePool", - Handler: _ClusterManager_UpdateNodePool_Handler, - }, - { - MethodName: "SetNodePoolAutoscaling", - Handler: _ClusterManager_SetNodePoolAutoscaling_Handler, - }, - { - MethodName: "SetLoggingService", - Handler: _ClusterManager_SetLoggingService_Handler, - }, - { - MethodName: "SetMonitoringService", - Handler: _ClusterManager_SetMonitoringService_Handler, - }, - { - MethodName: "SetAddonsConfig", - Handler: _ClusterManager_SetAddonsConfig_Handler, - }, - { - MethodName: "SetLocations", - Handler: _ClusterManager_SetLocations_Handler, - }, - { - MethodName: "UpdateMaster", - Handler: _ClusterManager_UpdateMaster_Handler, - }, - { - MethodName: "SetMasterAuth", - Handler: _ClusterManager_SetMasterAuth_Handler, - }, - { - MethodName: "DeleteCluster", - Handler: _ClusterManager_DeleteCluster_Handler, - }, - { - MethodName: "ListOperations", - Handler: _ClusterManager_ListOperations_Handler, - }, - { - MethodName: "GetOperation", - Handler: _ClusterManager_GetOperation_Handler, - }, - { - MethodName: "CancelOperation", - Handler: _ClusterManager_CancelOperation_Handler, - }, - { - MethodName: "GetServerConfig", - Handler: _ClusterManager_GetServerConfig_Handler, - }, - { - MethodName: "ListNodePools", - Handler: _ClusterManager_ListNodePools_Handler, - }, - { - MethodName: "GetNodePool", - Handler: _ClusterManager_GetNodePool_Handler, - }, - { - MethodName: "CreateNodePool", - Handler: _ClusterManager_CreateNodePool_Handler, - }, - { - MethodName: "DeleteNodePool", - Handler: _ClusterManager_DeleteNodePool_Handler, - }, - { - MethodName: "RollbackNodePoolUpgrade", - Handler: _ClusterManager_RollbackNodePoolUpgrade_Handler, - }, - { - MethodName: "SetNodePoolManagement", - Handler: _ClusterManager_SetNodePoolManagement_Handler, - }, - { - MethodName: "SetLabels", - Handler: _ClusterManager_SetLabels_Handler, - }, - { - MethodName: "SetLegacyAbac", - Handler: _ClusterManager_SetLegacyAbac_Handler, - }, - { - MethodName: "StartIPRotation", - Handler: _ClusterManager_StartIPRotation_Handler, - }, - { - MethodName: "CompleteIPRotation", - Handler: _ClusterManager_CompleteIPRotation_Handler, - }, - { - MethodName: "SetNodePoolSize", - Handler: _ClusterManager_SetNodePoolSize_Handler, - }, - { - MethodName: "SetNetworkPolicy", - Handler: _ClusterManager_SetNetworkPolicy_Handler, - }, - { - MethodName: "SetMaintenancePolicy", - Handler: _ClusterManager_SetMaintenancePolicy_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/container/v1alpha1/cluster_service.proto", -} - -func init() { proto.RegisterFile("google/container/v1alpha1/cluster_service.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 4786 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0x7f, 0x46, 0xa2, 0x28, 0xf1, 0x90, 0xa2, 0xa8, 0xab, 0x2f, 0x2e, 0xed, 0xb5, 0xd7, 0x13, - 0xfb, 0xef, 0xf5, 0x6e, 0x2c, 0x79, 0xd7, 0x1b, 0xdb, 0xf1, 0x37, 0x45, 0xcd, 0x6a, 0x99, 0x95, - 0x48, 0x66, 0x28, 0xed, 0xc6, 0x1f, 0xc0, 0xfc, 0x47, 0x9c, 0x2b, 0x6a, 0x22, 0x72, 0x66, 0x3c, - 0x33, 0x5c, 0x5b, 0xeb, 0x3a, 0x6d, 0x52, 0xf7, 0xad, 0x6f, 0x01, 0x0a, 0xb4, 0x28, 0x10, 0xc0, - 0xe8, 0x57, 0x92, 0x02, 0x2d, 0x5a, 0x14, 0x48, 0x8b, 0x36, 0x45, 0xdb, 0x97, 0xa2, 0x28, 0xda, - 0x22, 0x79, 0x2e, 0xd0, 0x02, 0x7d, 0xe8, 0x5b, 0x91, 0xc7, 0x3e, 0xb4, 0x28, 0xee, 0xc7, 0x0c, - 0xef, 0x90, 0xc3, 0x21, 0x25, 0x45, 0x6b, 0xbf, 0x69, 0xce, 0xbd, 0xe7, 0xde, 0xdf, 0x39, 0x73, - 0xee, 0x39, 0xe7, 0x9e, 0x33, 0x14, 0x6c, 0xb4, 0x6d, 0xbb, 0xdd, 0xc1, 0x1b, 0x2d, 0xdb, 0xf2, - 0x75, 0xd3, 0xc2, 0xee, 0xc6, 0x83, 0x1b, 0x7a, 0xc7, 0x39, 0xd2, 0x6f, 0x6c, 0xb4, 0x3a, 0x3d, - 0xcf, 0xc7, 0xae, 0xe6, 0x61, 0xf7, 0x81, 0xd9, 0xc2, 0xeb, 0x8e, 0x6b, 0xfb, 0x36, 0xba, 0xc4, - 0x18, 0xd6, 0x43, 0x86, 0xf5, 0x80, 0xa1, 0xf4, 0x38, 0x5f, 0x4b, 0x77, 0xcc, 0x0d, 0xdd, 0xb2, - 0x6c, 0x5f, 0xf7, 0x4d, 0xdb, 0xf2, 0x18, 0x63, 0xe9, 0x31, 0x3e, 0x4a, 0x9f, 0x0e, 0x7a, 0x87, - 0x1b, 0xb8, 0xeb, 0xf8, 0x27, 0x6c, 0x50, 0xfe, 0xcf, 0x19, 0x80, 0x9a, 0x6d, 0xe0, 0x8a, 0x6d, - 0x1d, 0x9a, 0x6d, 0xf4, 0x14, 0xe4, 0xba, 0x7a, 0xeb, 0xc8, 0xb4, 0xb0, 0xe6, 0x9f, 0x38, 0xb8, - 0x28, 0x5d, 0x91, 0xae, 0x66, 0xd4, 0x2c, 0xa7, 0xed, 0x9d, 0x38, 0x18, 0x5d, 0x81, 0x9c, 0x61, - 0x7a, 0xc7, 0x9a, 0x67, 0x3e, 0xc4, 0x5a, 0xfb, 0xa0, 0x38, 0x75, 0x45, 0xba, 0x3a, 0xa3, 0x02, - 0xa1, 0x35, 0xcd, 0x87, 0x78, 0xfb, 0x80, 0x2c, 0x62, 0xeb, 0x3d, 0xff, 0x48, 0xf3, 0x5a, 0xb6, - 0x83, 0xbd, 0xe2, 0xf4, 0x95, 0x69, 0xb2, 0x08, 0xa5, 0x35, 0x29, 0x09, 0x3d, 0x0b, 0x0b, 0x5c, - 0x3a, 0x4d, 0x6f, 0xb5, 0xec, 0x9e, 0xe5, 0x17, 0x33, 0x74, 0xab, 0x3c, 0x27, 0x97, 0x19, 0x15, - 0xd5, 0x61, 0xae, 0x8b, 0x7d, 0xdd, 0xd0, 0x7d, 0xbd, 0x98, 0xba, 0x32, 0x7d, 0x35, 0x7b, 0xf3, - 0xc5, 0xf5, 0x91, 0x8a, 0x58, 0xef, 0x4b, 0xb2, 0xbe, 0xcb, 0xb9, 0x14, 0xcb, 0x77, 0x4f, 0xd4, - 0x70, 0x11, 0x74, 0x19, 0xc0, 0xec, 0xea, 0x6d, 0x2e, 0xdf, 0x0c, 0xdd, 0x34, 0x43, 0x29, 0x54, - 0xba, 0x2a, 0xa4, 0x3b, 0xfa, 0x01, 0xee, 0x78, 0xc5, 0x34, 0xdd, 0xed, 0xc6, 0x64, 0xbb, 0xed, - 0x50, 0x1e, 0xb6, 0x17, 0x5f, 0x00, 0xfd, 0x3f, 0x58, 0xe8, 0xd8, 0x2d, 0xbd, 0xa3, 0x79, 0x9e, - 0xa1, 0x31, 0x19, 0x67, 0xa9, 0xae, 0xe6, 0x29, 0xb9, 0xe9, 0x19, 0x15, 0x2a, 0x22, 0x82, 0x94, - 0xaf, 0xb7, 0xbd, 0xe2, 0x1c, 0x55, 0x13, 0xfd, 0x1b, 0x5d, 0x81, 0xac, 0xe3, 0x62, 0xf2, 0xa2, - 0xcc, 0x83, 0x0e, 0x2e, 0xc2, 0x15, 0xe9, 0xea, 0x9c, 0x2a, 0x92, 0x50, 0x03, 0x72, 0x7a, 0xab, - 0x85, 0x3b, 0xd8, 0xd5, 0x7d, 0xdb, 0xf5, 0x8a, 0x59, 0x0a, 0xf7, 0x2b, 0x09, 0x70, 0xcb, 0xfd, - 0xe9, 0x0c, 0xb5, 0x1a, 0x59, 0x01, 0x5d, 0x85, 0x42, 0xd7, 0xb4, 0xb4, 0x96, 0xd3, 0xd3, 0x9c, - 0x8e, 0xee, 0x1f, 0xda, 0x6e, 0xb7, 0x38, 0xcf, 0x5e, 0x4a, 0xd7, 0xb4, 0x2a, 0x4e, 0xaf, 0xc1, - 0xa9, 0xe8, 0x75, 0x48, 0x93, 0xc5, 0x7d, 0xaf, 0xb8, 0x40, 0x77, 0x7d, 0x7a, 0x8c, 0x92, 0xf6, - 0xc8, 0x64, 0x95, 0xf3, 0x94, 0x5e, 0x83, 0xf9, 0xc8, 0xcb, 0x41, 0x05, 0x98, 0x3e, 0xc6, 0x27, - 0xdc, 0xd6, 0xc8, 0x9f, 0x68, 0x19, 0x66, 0x1e, 0xe8, 0x9d, 0x1e, 0xa6, 0xc6, 0x95, 0x51, 0xd9, - 0xc3, 0xab, 0x53, 0xaf, 0x48, 0xa5, 0xaf, 0x41, 0x56, 0xd0, 0xf5, 0x69, 0x58, 0xe5, 0x9f, 0x49, - 0x90, 0x09, 0xd1, 0x4c, 0xca, 0x89, 0x2a, 0x90, 0xc6, 0x87, 0x87, 0xb8, 0xe5, 0x17, 0xa7, 0xaf, - 0x48, 0x57, 0xf3, 0x37, 0xaf, 0x4f, 0x22, 0xeb, 0xba, 0x42, 0x59, 0x54, 0xce, 0x2a, 0xbf, 0x03, - 0x69, 0x46, 0x41, 0xab, 0x80, 0x94, 0xdb, 0xb7, 0x95, 0xca, 0x9e, 0xb6, 0x5f, 0x6b, 0x36, 0x94, - 0x4a, 0xf5, 0x76, 0x55, 0xd9, 0x2a, 0x7c, 0x09, 0x2d, 0x40, 0xb6, 0x56, 0xd7, 0x9a, 0x95, 0x3b, - 0xca, 0xd6, 0xfe, 0x8e, 0x52, 0x90, 0xc8, 0xc4, 0x86, 0xaa, 0xdc, 0x56, 0x54, 0x4d, 0xa4, 0x4f, - 0xa1, 0x3c, 0x40, 0xad, 0xae, 0x29, 0xdf, 0x54, 0x2a, 0xfb, 0x7b, 0x4a, 0x61, 0x5a, 0xfe, 0xf1, - 0x14, 0xc0, 0xae, 0x4e, 0xfc, 0x45, 0xb9, 0xe7, 0x1f, 0xa1, 0x12, 0xcc, 0xf5, 0x3c, 0xec, 0x5a, - 0x7a, 0x37, 0x38, 0xbc, 0xe1, 0x33, 0x19, 0x73, 0x74, 0xcf, 0xfb, 0xd0, 0x76, 0x0d, 0x2e, 0x63, - 0xf8, 0x8c, 0x2c, 0xb8, 0xd4, 0xea, 0x98, 0xd8, 0xf2, 0xb5, 0x16, 0x76, 0x7d, 0xf3, 0xd0, 0x6c, - 0xe9, 0x3e, 0xd6, 0x5a, 0xd4, 0x4e, 0xa8, 0xe4, 0xd9, 0x9b, 0x37, 0x13, 0x24, 0xaf, 0x50, 0xde, - 0x4a, 0x9f, 0x95, 0x5b, 0xd8, 0x5a, 0x2b, 0x7e, 0x00, 0xdd, 0x82, 0xd5, 0xc0, 0xcd, 0xb5, 0x74, - 0x71, 0xcf, 0xa2, 0x41, 0x91, 0x2d, 0xf3, 0xd1, 0x8a, 0x2e, 0xf0, 0xa2, 0xe7, 0x01, 0x0d, 0xa3, - 0x2c, 0x62, 0xca, 0xb1, 0x38, 0xb4, 0x15, 0x39, 0xeb, 0x7c, 0x3a, 0x79, 0xd5, 0x87, 0xec, 0xac, - 0x33, 0xca, 0x5d, 0x7c, 0x22, 0x37, 0x61, 0x6d, 0x04, 0x6e, 0xf4, 0x0a, 0x14, 0x4d, 0xcf, 0xeb, - 0x61, 0x2d, 0x66, 0x3b, 0x89, 0x1e, 0xc6, 0x55, 0x3a, 0x3e, 0xc4, 0x2f, 0xff, 0xde, 0x34, 0xe4, - 0xca, 0x86, 0x61, 0x5b, 0x1e, 0x5f, 0xea, 0x7d, 0x58, 0x3a, 0xf2, 0x7d, 0x47, 0xeb, 0xd8, 0xba, - 0xa1, 0x1d, 0xe8, 0x1d, 0xdd, 0x6a, 0x99, 0x56, 0x9b, 0xae, 0x92, 0x7c, 0x5e, 0xef, 0xf8, 0xbe, - 0xb3, 0x63, 0xeb, 0xc6, 0x66, 0xc0, 0xa3, 0x2e, 0x1e, 0x0d, 0x92, 0xd0, 0x07, 0x50, 0x3a, 0xb2, - 0x5d, 0xf3, 0x21, 0x61, 0xef, 0x68, 0x8e, 0x6d, 0x68, 0x7a, 0xcf, 0xb7, 0xbd, 0x96, 0xde, 0x21, - 0x9b, 0x4c, 0xd1, 0x4d, 0x92, 0x3c, 0xe6, 0x9d, 0x90, 0xb9, 0x61, 0x1b, 0xe5, 0x3e, 0xab, 0x5a, - 0x3c, 0x1a, 0x31, 0x82, 0x74, 0x58, 0x3e, 0xee, 0x1d, 0x60, 0xd7, 0xc2, 0x3e, 0xf6, 0x34, 0x43, - 0xf7, 0x8e, 0x0e, 0x6c, 0xdd, 0x35, 0xb8, 0x95, 0xac, 0x27, 0x6c, 0x76, 0x37, 0x64, 0xdb, 0x0a, - 0xb8, 0xd4, 0xa5, 0xe3, 0x61, 0x22, 0x3a, 0x80, 0x15, 0x0b, 0xfb, 0x1f, 0xda, 0xee, 0xb1, 0xe6, - 0xd8, 0x1d, 0xb3, 0x75, 0x12, 0x58, 0x62, 0x6a, 0xec, 0x1e, 0x35, 0xc6, 0xd7, 0xa0, 0x6c, 0xdc, - 0x0a, 0x97, 0xac, 0x61, 0xa2, 0xbc, 0x01, 0x8b, 0x43, 0x1a, 0x26, 0x47, 0xc4, 0x30, 0x3d, 0xfd, - 0xa0, 0x83, 0x0d, 0xfe, 0x9e, 0xc3, 0x67, 0xf9, 0x25, 0x28, 0x8e, 0xd2, 0x56, 0x22, 0xdf, 0x0d, - 0x58, 0x8a, 0x11, 0x7c, 0x1c, 0x4b, 0x8c, 0x1c, 0x89, 0x2c, 0xff, 0x25, 0xc1, 0x13, 0x7d, 0x3f, - 0x40, 0x70, 0x62, 0x83, 0xaf, 0x11, 0x58, 0x62, 0x11, 0x66, 0xb1, 0x25, 0x72, 0x07, 0x8f, 0xc8, - 0x80, 0x6c, 0xcb, 0x34, 0x5c, 0xed, 0xa0, 0x63, 0xb7, 0x8e, 0xbd, 0xe2, 0x14, 0xf5, 0xea, 0x95, - 0x04, 0x2d, 0x27, 0xef, 0xb4, 0x5e, 0x31, 0x0d, 0x77, 0x93, 0xac, 0xa5, 0x42, 0x2b, 0xf8, 0xd3, - 0x2b, 0xed, 0x42, 0x26, 0x1c, 0x20, 0x49, 0x82, 0x61, 0x7a, 0x4e, 0x47, 0x3f, 0xd1, 0x04, 0x67, - 0x95, 0xe5, 0xb4, 0x1a, 0xf1, 0x57, 0xe4, 0xf8, 0x86, 0xa8, 0xb8, 0xc7, 0xca, 0x84, 0xeb, 0xc9, - 0x3f, 0x94, 0x60, 0x3e, 0xa2, 0x25, 0xb4, 0x0b, 0x73, 0x8e, 0x6b, 0x3f, 0x30, 0x0d, 0xec, 0xd2, - 0xf5, 0xf2, 0xc9, 0xe1, 0x5b, 0xe4, 0x5d, 0x6f, 0x70, 0x46, 0x35, 0x5c, 0x42, 0xd4, 0xd7, 0x54, - 0x44, 0x5f, 0xf2, 0x0b, 0x30, 0xd7, 0xe8, 0xcf, 0x5a, 0x6e, 0xa8, 0xf5, 0x7b, 0xd5, 0x2d, 0x45, - 0x1d, 0xf0, 0xe9, 0x00, 0xe9, 0x4a, 0x79, 0xa7, 0x5a, 0xa9, 0x17, 0x24, 0xf9, 0xcf, 0x52, 0x80, - 0xaa, 0x8d, 0x72, 0x87, 0x84, 0x7e, 0x92, 0x9c, 0x71, 0xc4, 0x4f, 0x43, 0xbe, 0xe7, 0x61, 0xcd, - 0x74, 0x34, 0xbd, 0x63, 0xea, 0x1e, 0xf6, 0xf8, 0x9b, 0xc9, 0xf5, 0x3c, 0x5c, 0x75, 0xca, 0x8c, - 0x86, 0xae, 0xc3, 0x62, 0xcb, 0xc5, 0xc4, 0x21, 0x7b, 0xbd, 0x03, 0x6e, 0xcb, 0x1c, 0x52, 0x81, - 0x0d, 0x34, 0x43, 0x3a, 0x4d, 0xad, 0xc2, 0x27, 0xa6, 0xdb, 0x69, 0x9e, 0x5a, 0x85, 0x64, 0xaa, - 0xde, 0x6b, 0xb0, 0x18, 0xb8, 0x60, 0xd3, 0x79, 0x70, 0x4b, 0x23, 0x9a, 0xa5, 0x07, 0x2c, 0xa3, - 0x2e, 0xf0, 0x81, 0xaa, 0xf3, 0xe0, 0x16, 0x79, 0x65, 0x04, 0xa7, 0x65, 0x1b, 0x58, 0x98, 0xc8, - 0x32, 0xa7, 0x1c, 0xa1, 0x86, 0xb3, 0xbe, 0x02, 0x88, 0xa7, 0x6f, 0x9e, 0x30, 0x33, 0x4d, 0x67, - 0x16, 0x82, 0x91, 0x70, 0xf6, 0x5b, 0xf0, 0x78, 0x3f, 0xd3, 0x6d, 0xd9, 0x96, 0xa1, 0xbb, 0x27, - 0x9a, 0xab, 0x5b, 0x6d, 0xcc, 0x50, 0xcf, 0x52, 0xbe, 0x4b, 0x7c, 0x4e, 0x33, 0x98, 0xa2, 0x92, - 0x19, 0x54, 0x80, 0x32, 0x5c, 0x0e, 0xb7, 0x8b, 0x5d, 0x61, 0x8e, 0xae, 0x50, 0x0a, 0x26, 0xc5, - 0x2c, 0xf1, 0x55, 0x58, 0x1b, 0xd2, 0x01, 0xb7, 0xb7, 0x4c, 0x24, 0x0e, 0x05, 0xa8, 0x99, 0xf1, - 0x6e, 0xc0, 0x72, 0x54, 0x1d, 0x9c, 0x07, 0x58, 0x24, 0x12, 0x95, 0xc2, 0x18, 0x5e, 0x86, 0xe2, - 0xb0, 0x66, 0x38, 0x53, 0x96, 0x32, 0xad, 0x0c, 0xea, 0x87, 0x19, 0xf9, 0x8b, 0xb0, 0xd6, 0xb0, - 0x8d, 0x26, 0x6e, 0xf5, 0x5c, 0xd3, 0x3f, 0x89, 0x78, 0x83, 0x91, 0xc7, 0x59, 0xfe, 0xb5, 0x05, - 0x98, 0xad, 0x30, 0xdc, 0x24, 0xbb, 0x14, 0xce, 0x17, 0xfd, 0x9b, 0x64, 0x97, 0x06, 0xf6, 0x5a, - 0xae, 0xe9, 0x10, 0x53, 0xe4, 0x27, 0x4b, 0x24, 0x91, 0x37, 0x69, 0x5a, 0xa6, 0x6f, 0xea, 0x1d, - 0x8d, 0x0a, 0xca, 0xd2, 0xd7, 0x69, 0x9a, 0xbe, 0x16, 0xf8, 0x08, 0x4b, 0x7f, 0x49, 0x06, 0x7b, - 0x1b, 0xb2, 0x7c, 0x96, 0xe0, 0xa4, 0x9f, 0x99, 0x28, 0x73, 0x56, 0xc1, 0xea, 0xdf, 0x3e, 0x6e, - 0x43, 0xb6, 0x4b, 0x1d, 0x0b, 0x09, 0x62, 0x47, 0xd4, 0xc4, 0x92, 0xd7, 0xe9, 0xbb, 0x21, 0x15, - 0xba, 0xfd, 0x24, 0xe8, 0x59, 0x92, 0x79, 0xb7, 0xdb, 0xa6, 0xd5, 0x0e, 0xee, 0x50, 0xdc, 0x08, - 0xf3, 0x9c, 0xdc, 0x64, 0x54, 0x92, 0x4f, 0x74, 0x6d, 0xcb, 0xf4, 0x6d, 0x57, 0x9c, 0xcb, 0x0c, - 0x6f, 0xb1, 0x3f, 0x12, 0x4c, 0x2f, 0xc2, 0x6c, 0x70, 0xfa, 0x98, 0x69, 0x05, 0x8f, 0xf1, 0x67, - 0x29, 0x13, 0x7f, 0x96, 0x76, 0x60, 0x5e, 0xa7, 0x09, 0x42, 0xa0, 0x2f, 0xa0, 0x72, 0x3e, 0x9b, - 0x94, 0xba, 0x0b, 0x09, 0x85, 0x9a, 0xd3, 0xc5, 0xf4, 0xe2, 0x09, 0x00, 0xc1, 0x29, 0x30, 0x5b, - 0x12, 0x28, 0x68, 0x13, 0xa8, 0x86, 0x35, 0xc7, 0xb6, 0x3b, 0x5e, 0x31, 0x47, 0x3d, 0xfb, 0x97, - 0xc7, 0xbc, 0x9a, 0x86, 0x6d, 0x77, 0xd4, 0x8c, 0xc5, 0xff, 0xf2, 0xd0, 0xe3, 0x90, 0x09, 0xfc, - 0x96, 0x57, 0x9c, 0xa7, 0xd7, 0x94, 0x3e, 0x01, 0xbd, 0x04, 0x6b, 0xcc, 0xf0, 0x34, 0x21, 0x2d, - 0xa0, 0xab, 0x15, 0xf3, 0xd4, 0x2e, 0x57, 0xd8, 0x70, 0x3f, 0x08, 0x96, 0xc9, 0x20, 0xaa, 0x43, - 0x3e, 0x1a, 0xe4, 0x8b, 0x4b, 0x54, 0x11, 0x57, 0x27, 0xf5, 0xd9, 0xea, 0x7c, 0x24, 0xae, 0x23, - 0x0d, 0x96, 0xa9, 0x23, 0x0d, 0xa0, 0x05, 0xcb, 0x2e, 0xd3, 0x65, 0x9f, 0x4f, 0x58, 0x76, 0xd8, - 0x33, 0xab, 0xc8, 0x74, 0x86, 0xbc, 0xf5, 0xa7, 0x12, 0x3c, 0x25, 0x18, 0x28, 0x0b, 0x7d, 0x1a, - 0x07, 0x11, 0xbe, 0xce, 0x55, 0xba, 0xdd, 0xd7, 0xce, 0x1c, 0x3d, 0xd5, 0x27, 0xba, 0xc9, 0x71, - 0xfc, 0x3d, 0x40, 0x5d, 0x72, 0xcb, 0xc0, 0x96, 0x6e, 0xb5, 0x70, 0x20, 0xe5, 0xda, 0xd8, 0x84, - 0x72, 0xb7, 0xcf, 0xc4, 0x85, 0x5c, 0xec, 0x0e, 0x92, 0x90, 0x0d, 0x25, 0x92, 0x45, 0x7a, 0xdc, - 0xe3, 0x0c, 0xe4, 0x5f, 0x97, 0xc6, 0xde, 0x04, 0x46, 0x78, 0x2b, 0x75, 0xcd, 0x19, 0xe1, 0xc6, - 0x1e, 0x83, 0x8c, 0x87, 0x3b, 0x87, 0x5a, 0xc7, 0xb4, 0x8e, 0x79, 0xf2, 0x3f, 0x47, 0x08, 0x3b, - 0xa6, 0x75, 0x4c, 0xbc, 0xd7, 0x43, 0xdb, 0x0a, 0x52, 0x7c, 0xfa, 0x37, 0xc9, 0x82, 0xb0, 0x65, - 0x38, 0xb6, 0x69, 0xf9, 0x3c, 0xa7, 0x0f, 0x9f, 0x89, 0x2d, 0x06, 0x7e, 0x2b, 0x38, 0x8f, 0x0f, - 0xb0, 0xeb, 0x11, 0x2f, 0xd7, 0x66, 0x6e, 0x96, 0x0f, 0x73, 0xf7, 0x78, 0x8f, 0x0d, 0xd2, 0xeb, - 0x48, 0xcf, 0x75, 0x49, 0xaa, 0xcf, 0x5f, 0x70, 0xc0, 0x76, 0xc4, 0xc3, 0x00, 0x1b, 0x65, 0x6f, - 0x2e, 0xe0, 0x7a, 0x01, 0x02, 0x3a, 0xf3, 0x92, 0x01, 0x8f, 0x49, 0x79, 0x10, 0x1f, 0x23, 0x27, - 0x2a, 0xe0, 0x78, 0x12, 0xb2, 0x3c, 0x92, 0xfb, 0x66, 0x17, 0x17, 0xbf, 0xc5, 0x8e, 0x2b, 0x23, - 0xed, 0x99, 0x34, 0xa6, 0xa5, 0x3d, 0x5f, 0xf7, 0x7b, 0x5e, 0xf1, 0x98, 0x26, 0x30, 0xcf, 0x25, - 0x5e, 0xba, 0xa8, 0x0c, 0xeb, 0x4d, 0xca, 0xa0, 0x72, 0x46, 0xf4, 0x0c, 0xe4, 0xd9, 0x5f, 0x5a, - 0x17, 0x7b, 0x9e, 0xde, 0xc6, 0xc5, 0x0e, 0xdd, 0x66, 0x9e, 0x51, 0x77, 0x19, 0x11, 0x3d, 0x0f, - 0x4b, 0x03, 0x31, 0xcc, 0x33, 0x1f, 0xe2, 0x62, 0x97, 0xf9, 0x78, 0x31, 0x84, 0x35, 0xcd, 0x87, - 0x78, 0x44, 0x6c, 0xb7, 0x46, 0xc4, 0xf6, 0x75, 0x58, 0x32, 0x2d, 0xcf, 0xa7, 0xf6, 0xd9, 0x76, - 0xed, 0x9e, 0xa3, 0xf5, 0xdc, 0x8e, 0x57, 0xb4, 0xa9, 0xef, 0x58, 0x0c, 0x86, 0xb6, 0xc9, 0xc8, - 0xbe, 0xdb, 0xf1, 0xc8, 0xea, 0x11, 0x4d, 0xb2, 0x78, 0xe3, 0x30, 0x2c, 0x82, 0x1e, 0x59, 0xbc, - 0x79, 0x12, 0xb2, 0xf8, 0x23, 0xc7, 0x74, 0xb9, 0x16, 0x3f, 0x60, 0x5a, 0x64, 0x24, 0xaa, 0xc5, - 0x12, 0xcc, 0x05, 0x47, 0xb7, 0xe8, 0x32, 0x13, 0x09, 0x9e, 0x65, 0x13, 0xd2, 0x4c, 0x61, 0xe4, - 0x8a, 0xdd, 0xdc, 0x2b, 0xef, 0xed, 0x37, 0x07, 0xf2, 0xb6, 0x02, 0xe4, 0x68, 0x46, 0xd7, 0xac, - 0xd6, 0x6b, 0xd5, 0xda, 0x76, 0x41, 0x42, 0x59, 0x98, 0x55, 0xf7, 0x6b, 0xf4, 0x61, 0x8a, 0x5c, - 0xd5, 0x55, 0xa5, 0x52, 0xaf, 0x55, 0xaa, 0x3b, 0x84, 0x30, 0x8d, 0x72, 0x30, 0xd7, 0xdc, 0xab, - 0x37, 0x1a, 0xe4, 0x29, 0x85, 0x32, 0x30, 0xa3, 0xa8, 0x6a, 0x5d, 0x2d, 0xcc, 0xc8, 0xbf, 0x9f, - 0x86, 0x79, 0xfe, 0x92, 0xf6, 0x1d, 0x83, 0xdc, 0x48, 0x5f, 0x80, 0x65, 0x03, 0x7b, 0xa6, 0x4b, - 0xdc, 0x86, 0x68, 0x31, 0x2c, 0xed, 0x42, 0x7c, 0x4c, 0xb4, 0x98, 0xd7, 0xa1, 0x14, 0x70, 0xc4, - 0x84, 0x2a, 0x96, 0x85, 0x15, 0xf9, 0x8c, 0xdd, 0xa1, 0x88, 0xf5, 0x1e, 0xac, 0x04, 0xdc, 0xd1, - 0x98, 0x93, 0x3e, 0x5d, 0xcc, 0x59, 0xe2, 0xab, 0x44, 0x6e, 0xb6, 0x1b, 0x03, 0xc2, 0x90, 0x10, - 0xa3, 0x99, 0x46, 0x10, 0x3f, 0x05, 0x61, 0x48, 0x18, 0xa9, 0x1a, 0xe4, 0x2d, 0x07, 0x0c, 0x42, - 0x0d, 0x8e, 0x85, 0xd2, 0x02, 0x1f, 0xa9, 0x86, 0xa5, 0xb8, 0x0f, 0xe0, 0xf2, 0xf0, 0xf2, 0xe2, - 0xed, 0x36, 0x33, 0xfe, 0x32, 0xc8, 0xf7, 0x16, 0x2f, 0xb6, 0xa5, 0x01, 0x5c, 0xe2, 0x35, 0xee, - 0x3a, 0x04, 0xa8, 0xb5, 0x7e, 0xc0, 0x03, 0x6a, 0xb4, 0x01, 0xbe, 0x9d, 0x30, 0xee, 0x7d, 0x4f, - 0x82, 0xe7, 0xc2, 0x57, 0x33, 0x36, 0x2a, 0xe4, 0xce, 0x1b, 0x15, 0x9e, 0x09, 0x5e, 0x72, 0x72, - 0x70, 0xf8, 0x36, 0xc8, 0x01, 0xa8, 0x04, 0x3f, 0x9e, 0x3f, 0xb3, 0x1f, 0x7f, 0x82, 0xaf, 0x3e, - 0x2a, 0x2b, 0xbd, 0x05, 0xab, 0x03, 0x4a, 0x09, 0x6c, 0x9c, 0x17, 0x76, 0x22, 0x62, 0x70, 0x2b, - 0x97, 0x7f, 0x9e, 0x86, 0x4c, 0xdd, 0xc1, 0x2e, 0x55, 0x6d, 0x6c, 0xce, 0x1a, 0x44, 0x82, 0x29, - 0x21, 0x12, 0x34, 0x20, 0x6f, 0x07, 0x4c, 0xcc, 0x96, 0xa6, 0xc7, 0x3a, 0xcd, 0x70, 0x97, 0x75, - 0x62, 0x64, 0xea, 0x7c, 0xb8, 0x00, 0xb5, 0xb9, 0x4a, 0xe8, 0x7e, 0x53, 0x63, 0xab, 0x7d, 0xfd, - 0x95, 0x06, 0x1c, 0xf0, 0x2a, 0xa4, 0x0d, 0xec, 0xeb, 0x66, 0x87, 0x9b, 0x36, 0x7f, 0x8a, 0x71, - 0xcc, 0x33, 0x71, 0x8e, 0x39, 0x12, 0x10, 0xd3, 0x03, 0x01, 0xf1, 0x49, 0xc8, 0xfa, 0xba, 0xdb, - 0xc6, 0x3e, 0x1b, 0x66, 0x47, 0x0d, 0x18, 0x89, 0x4e, 0x10, 0x5d, 0x5f, 0x26, 0xea, 0xfa, 0xc8, - 0x85, 0xda, 0xf3, 0x75, 0xd7, 0x67, 0x6e, 0x93, 0x5d, 0x56, 0x32, 0x94, 0x42, 0xbd, 0xe6, 0x25, - 0x1a, 0x58, 0xd9, 0x20, 0x4b, 0x24, 0x67, 0xb1, 0x65, 0x90, 0x21, 0x59, 0x1d, 0xeb, 0x34, 0xb3, - 0x30, 0xdb, 0x50, 0x6a, 0x5b, 0x31, 0xfe, 0x72, 0x0e, 0x52, 0x5b, 0xf5, 0x9a, 0xc2, 0x1c, 0x65, - 0x79, 0xb3, 0xae, 0xee, 0x51, 0x47, 0x29, 0xff, 0xcf, 0x14, 0xa4, 0xa8, 0xd2, 0x97, 0xa1, 0xb0, - 0xf7, 0x4e, 0x43, 0x19, 0x58, 0x10, 0x41, 0xbe, 0xa2, 0x2a, 0xe5, 0x3d, 0x45, 0xab, 0xec, 0xec, - 0x37, 0xf7, 0x14, 0xb5, 0x20, 0x11, 0xda, 0x96, 0xb2, 0xa3, 0x08, 0xb4, 0x29, 0x42, 0xdb, 0x6f, - 0x6c, 0xab, 0xe5, 0x2d, 0x45, 0xdb, 0x2d, 0x53, 0xda, 0x34, 0x5a, 0x84, 0xf9, 0x80, 0x56, 0xab, - 0x6f, 0x29, 0xcd, 0x42, 0x8a, 0x4c, 0x53, 0x95, 0x46, 0xb9, 0xaa, 0x86, 0xac, 0x33, 0x8c, 0x75, - 0x4b, 0xdc, 0x22, 0x4d, 0xc0, 0xf0, 0x6d, 0x09, 0xa7, 0xd6, 0xa8, 0xd7, 0x77, 0x0a, 0xb3, 0x84, - 0xca, 0x37, 0xee, 0x53, 0xe7, 0xd0, 0xe3, 0x50, 0x6c, 0x2a, 0x7b, 0x7d, 0x92, 0xb6, 0x5b, 0xae, - 0x95, 0xb7, 0x95, 0x5d, 0xa5, 0xb6, 0x57, 0xc8, 0xa0, 0x15, 0x58, 0x2c, 0xef, 0xef, 0xd5, 0x35, - 0xbe, 0x2d, 0x03, 0x02, 0x44, 0x81, 0x94, 0x1c, 0x05, 0x98, 0x45, 0x79, 0x00, 0xb2, 0xd8, 0x4e, - 0x79, 0x53, 0xd9, 0x69, 0x16, 0x72, 0x68, 0x09, 0x16, 0xc8, 0x33, 0x93, 0x49, 0x2b, 0xef, 0xef, - 0xdd, 0x29, 0xcc, 0x53, 0xed, 0x47, 0x76, 0x6c, 0x56, 0xdf, 0x55, 0x0a, 0xf9, 0x90, 0xae, 0xec, - 0xdd, 0xaf, 0xab, 0x77, 0xb5, 0x46, 0x7d, 0xa7, 0x5a, 0x79, 0xa7, 0xb0, 0x80, 0x4a, 0xb0, 0xca, - 0x16, 0xa9, 0xd6, 0xf6, 0x94, 0x5a, 0xb9, 0x56, 0x51, 0x82, 0xb1, 0x82, 0xfc, 0x7d, 0x09, 0x96, - 0x2b, 0x34, 0xf3, 0xe0, 0x31, 0x4a, 0xc5, 0x1f, 0xf4, 0xb0, 0xe7, 0x13, 0x33, 0x71, 0x5c, 0xfb, - 0x5b, 0xb8, 0xe5, 0x13, 0x6f, 0xce, 0x0e, 0x61, 0x86, 0x53, 0xaa, 0x46, 0xec, 0x49, 0x7c, 0x1d, - 0x66, 0x79, 0xbe, 0xc5, 0xcb, 0x80, 0xf2, 0xf8, 0xbc, 0x45, 0x0d, 0x58, 0xc8, 0x81, 0x71, 0x74, - 0x12, 0xe2, 0xf9, 0x81, 0xe0, 0x4f, 0xf2, 0x09, 0x2c, 0x6e, 0x63, 0xff, 0xfc, 0xe8, 0x68, 0x1d, - 0x98, 0xdf, 0xce, 0x0c, 0x5e, 0x0d, 0xc9, 0x04, 0xd7, 0x32, 0x23, 0x74, 0x37, 0x33, 0x7d, 0x77, - 0x23, 0xff, 0x44, 0x82, 0x65, 0x16, 0xb3, 0x2f, 0x7c, 0xfb, 0xb7, 0x21, 0xdd, 0xa3, 0x3b, 0xf1, - 0x8b, 0xf3, 0xd5, 0xf1, 0xaa, 0x63, 0xc8, 0x54, 0xce, 0x17, 0x2b, 0xc0, 0xbf, 0x4b, 0xb0, 0xc2, - 0xa6, 0x85, 0x37, 0xba, 0x0b, 0x93, 0xe0, 0x0a, 0xe4, 0x22, 0x09, 0x00, 0xcb, 0x66, 0xc0, 0xea, - 0x47, 0xfe, 0xa7, 0xf8, 0x8c, 0x20, 0x16, 0x30, 0xa4, 0xb4, 0x6a, 0x10, 0x24, 0x3a, 0xd1, 0xc6, - 0x5c, 0x7a, 0xb0, 0x31, 0x17, 0xc8, 0x38, 0x27, 0xc8, 0xf8, 0xdf, 0x12, 0x5c, 0x6e, 0x62, 0x3f, - 0x2e, 0xca, 0x7f, 0x8e, 0xb2, 0x36, 0x20, 0x2b, 0x66, 0x29, 0x33, 0x67, 0xca, 0x52, 0xc4, 0x25, - 0x42, 0xd9, 0xd3, 0x82, 0xec, 0x3f, 0x90, 0xa0, 0xd8, 0xc4, 0xfe, 0x4e, 0xa4, 0xa0, 0x71, 0x71, - 0x62, 0xc7, 0x94, 0x54, 0x52, 0xb1, 0x25, 0x95, 0x38, 0x5b, 0xfc, 0x13, 0x09, 0x1e, 0x6b, 0x62, - 0x7f, 0x28, 0x3d, 0xbd, 0x38, 0xb8, 0xf1, 0x85, 0x9d, 0xd4, 0xa8, 0xc2, 0x4e, 0x9c, 0x82, 0xff, - 0x51, 0x82, 0xd5, 0x26, 0xf6, 0x23, 0x69, 0xf0, 0x85, 0xe1, 0x1d, 0xaa, 0x09, 0xa5, 0xce, 0x53, - 0x13, 0x8a, 0x13, 0xe7, 0x37, 0x25, 0x58, 0xa2, 0xf6, 0xc2, 0xd3, 0xd7, 0x8b, 0x93, 0x25, 0x52, - 0x2d, 0x4a, 0x0d, 0x56, 0x8b, 0xe2, 0xb0, 0x7d, 0x26, 0xc1, 0x12, 0xf3, 0x55, 0x2c, 0x2b, 0xbc, - 0x38, 0x6c, 0xcf, 0x40, 0x7e, 0x20, 0x2b, 0x65, 0x36, 0x31, 0xdf, 0x8d, 0x5c, 0xec, 0x03, 0x90, - 0xb3, 0x02, 0xc8, 0x7f, 0x9d, 0x82, 0x65, 0x62, 0xc4, 0xfd, 0x92, 0xe3, 0x85, 0xa1, 0xac, 0x41, - 0x5a, 0x6f, 0xf9, 0x01, 0xba, 0xfc, 0xcd, 0x97, 0x12, 0xcc, 0x20, 0x0e, 0xd2, 0x7a, 0x99, 0x72, - 0xab, 0x7c, 0x15, 0xf4, 0x46, 0x18, 0x61, 0x4e, 0x55, 0x52, 0x1d, 0x0c, 0x2f, 0xa2, 0x36, 0x1a, - 0x90, 0x66, 0x9b, 0x90, 0x5c, 0x6f, 0xbf, 0x76, 0xb7, 0x56, 0xbf, 0x5f, 0x63, 0x57, 0x67, 0x92, - 0x6f, 0x34, 0xca, 0xcd, 0xe6, 0xfd, 0xba, 0xba, 0x55, 0x90, 0x48, 0x16, 0xb4, 0xad, 0xd4, 0x14, - 0x95, 0x64, 0x54, 0x21, 0x79, 0x2a, 0x98, 0xb8, 0xdf, 0x54, 0xd4, 0x5a, 0x79, 0x57, 0x29, 0x4c, - 0xcb, 0xbf, 0x04, 0xcb, 0x5b, 0xb8, 0x83, 0x1f, 0x41, 0xc0, 0x0d, 0xe4, 0x49, 0x09, 0xf2, 0xfc, - 0x7f, 0x58, 0xda, 0x31, 0xbd, 0x20, 0xd7, 0x38, 0xcf, 0xe9, 0xe8, 0x27, 0x33, 0xa9, 0x48, 0x32, - 0xf3, 0x31, 0x2c, 0x47, 0x77, 0xf0, 0x1c, 0xdb, 0xf2, 0x30, 0x7a, 0x13, 0xe6, 0x38, 0x34, 0xaf, - 0x28, 0xd1, 0xf2, 0xec, 0x24, 0xb9, 0x53, 0xc8, 0x83, 0xbe, 0x0c, 0xf3, 0x5d, 0xd3, 0xf3, 0x88, - 0x9f, 0x23, 0xfb, 0xb3, 0xee, 0x5d, 0x46, 0xcd, 0x71, 0xe2, 0xbb, 0x84, 0x26, 0xff, 0x32, 0x2c, - 0x6d, 0x63, 0x3f, 0xbc, 0xb1, 0x9c, 0x43, 0xbc, 0xa7, 0x20, 0xd7, 0xbf, 0x73, 0x85, 0xda, 0xcd, - 0x86, 0xb4, 0x11, 0xf9, 0xd4, 0x01, 0xac, 0x10, 0xe9, 0x43, 0x04, 0x17, 0xa1, 0xe1, 0xef, 0x4a, - 0xb0, 0x5a, 0xd1, 0xad, 0x16, 0xee, 0x3c, 0x62, 0x41, 0x45, 0x43, 0xfa, 0x55, 0x09, 0x56, 0x07, - 0x25, 0xe5, 0x6f, 0x7a, 0x0b, 0x20, 0xe4, 0x0e, 0xde, 0xf5, 0xd3, 0x93, 0x5c, 0x30, 0x55, 0x81, - 0x6f, 0xb2, 0xf7, 0xad, 0xc1, 0xea, 0x36, 0xf6, 0x49, 0x78, 0xc3, 0xee, 0xb9, 0x63, 0x57, 0x9c, - 0x98, 0x9f, 0x4e, 0x41, 0x4e, 0x5c, 0x1e, 0xbd, 0x04, 0x6b, 0x06, 0x3e, 0xd4, 0x7b, 0x1d, 0x7f, - 0xa8, 0xf2, 0xca, 0x36, 0x59, 0xe1, 0xc3, 0x03, 0x95, 0xd7, 0x75, 0x58, 0x7a, 0xa0, 0x77, 0xcc, - 0x68, 0x3d, 0x2c, 0xf8, 0x66, 0x6c, 0x91, 0x0e, 0x09, 0xe5, 0x30, 0x8f, 0xd5, 0x90, 0xd8, 0x3e, - 0x42, 0xba, 0x98, 0x0a, 0x6a, 0x48, 0x74, 0xa4, 0x5f, 0x43, 0xba, 0x06, 0x6c, 0x09, 0x61, 0xae, - 0x57, 0x9c, 0xa1, 0x6b, 0x2f, 0xd0, 0x81, 0x70, 0xaa, 0x87, 0x6e, 0xc2, 0x0a, 0x9b, 0x1b, 0x8d, - 0x10, 0xec, 0x4b, 0xb0, 0x8c, 0xca, 0x60, 0x46, 0xca, 0x16, 0x9e, 0xfc, 0x77, 0x12, 0xac, 0xb0, - 0x3b, 0xd4, 0xc5, 0x67, 0xd9, 0x6f, 0x43, 0x26, 0xcc, 0x3c, 0x79, 0x7e, 0x30, 0x51, 0x23, 0x67, - 0x2e, 0xc8, 0x4d, 0x85, 0x83, 0x93, 0x8e, 0x1c, 0x9c, 0xef, 0x4b, 0xb0, 0xc2, 0x7c, 0xef, 0x17, - 0xe1, 0xae, 0x10, 0x97, 0x21, 0xfc, 0x8a, 0xc4, 0xbc, 0x67, 0x80, 0xef, 0x02, 0xd3, 0x97, 0x51, - 0x97, 0xd1, 0xdf, 0x96, 0x00, 0x6d, 0xf7, 0x2f, 0x1b, 0x5f, 0x34, 0x0d, 0xfd, 0x6f, 0x0a, 0xe6, - 0x02, 0x6c, 0xb1, 0x05, 0xb4, 0x37, 0x20, 0xcd, 0x73, 0xcb, 0xa9, 0xd3, 0xf4, 0x67, 0x39, 0xd3, - 0x29, 0x3b, 0xc2, 0x03, 0x77, 0xa0, 0xd4, 0xf9, 0xef, 0x40, 0x55, 0x80, 0xae, 0x6e, 0xe9, 0x6d, - 0xdc, 0x0d, 0x5e, 0x4d, 0x36, 0xb1, 0xce, 0x47, 0x16, 0xdc, 0x0d, 0x19, 0x54, 0x81, 0x39, 0xb9, - 0xe3, 0x54, 0x84, 0xd9, 0xc0, 0x6f, 0xb1, 0xa6, 0x53, 0xf0, 0x38, 0xaa, 0xa7, 0x71, 0x38, 0xaa, - 0xa7, 0xb1, 0x19, 0xd6, 0x12, 0xdb, 0x34, 0x8b, 0xbb, 0x36, 0x81, 0xf8, 0xe3, 0x7b, 0x39, 0x47, - 0x31, 0x25, 0x43, 0xf9, 0x3b, 0xd2, 0x79, 0x9b, 0x1a, 0xab, 0x80, 0xf8, 0x83, 0x76, 0xbf, 0xba, - 0x77, 0x47, 0x63, 0x2d, 0x8c, 0xe9, 0xc1, 0x66, 0x47, 0x2a, 0xd2, 0xec, 0x98, 0xe9, 0x37, 0x3b, - 0xd2, 0xf2, 0x1f, 0x4a, 0x90, 0x8f, 0x2a, 0x9d, 0x84, 0x50, 0xf2, 0x0a, 0xb5, 0x9e, 0xd3, 0x76, - 0x75, 0x23, 0xf8, 0x72, 0x8e, 0xbe, 0xd6, 0x7d, 0x46, 0x42, 0x4f, 0x32, 0x43, 0xd1, 0x5c, 0xec, - 0xe8, 0xa6, 0xcb, 0x3f, 0x6a, 0x01, 0x42, 0x52, 0x29, 0x05, 0xdd, 0x83, 0x05, 0xce, 0xae, 0xd9, - 0x4e, 0x50, 0x90, 0x1f, 0xd7, 0xcf, 0x2d, 0xf7, 0x77, 0xa8, 0x33, 0x26, 0x35, 0xdf, 0x8b, 0x3c, - 0xcb, 0x5d, 0x40, 0xc3, 0xb3, 0xd0, 0x57, 0x61, 0x4d, 0x44, 0xac, 0x09, 0xe5, 0x52, 0x76, 0x96, - 0x96, 0x05, 0xf0, 0xcd, 0xb0, 0x72, 0x3a, 0xf6, 0x83, 0x0a, 0xf9, 0x1d, 0x58, 0x1c, 0x6a, 0xbf, - 0xa2, 0x2d, 0x48, 0x7f, 0x68, 0x5a, 0x86, 0xfd, 0xe1, 0x04, 0x5f, 0x03, 0x0a, 0xdc, 0xf7, 0x29, - 0x8f, 0xca, 0x79, 0xe5, 0x5f, 0x97, 0x22, 0x6b, 0xb3, 0x51, 0xd4, 0x85, 0xa2, 0xa1, 0x9b, 0x9d, - 0x13, 0x4d, 0x6c, 0x15, 0xf3, 0xdd, 0x98, 0x03, 0x48, 0xfa, 0x36, 0x6a, 0x8b, 0xb0, 0x0e, 0x2d, - 0x7a, 0xe7, 0x4b, 0xea, 0xaa, 0x11, 0x3b, 0xb2, 0x39, 0x07, 0x69, 0xd6, 0x61, 0x90, 0x9b, 0xb0, - 0x1a, 0xcf, 0x3d, 0x50, 0x7e, 0x9e, 0x1a, 0x2c, 0x3f, 0x97, 0x60, 0xce, 0xe8, 0xb1, 0x2c, 0x87, - 0x3b, 0xc5, 0xf0, 0x59, 0xfe, 0xb9, 0x04, 0x8f, 0x0b, 0x95, 0x1e, 0xe1, 0x60, 0x7f, 0x8e, 0x6e, - 0xf8, 0x17, 0xe8, 0x92, 0xe2, 0xae, 0x58, 0x7f, 0xcd, 0x0a, 0x10, 0x81, 0xcc, 0x4d, 0xf3, 0x21, - 0xfe, 0x3c, 0xa5, 0xbd, 0xcc, 0x3f, 0x24, 0x61, 0x8e, 0x7f, 0x86, 0x3a, 0xfe, 0x8c, 0x15, 0x7a, - 0xfc, 0x38, 0x09, 0xfe, 0x40, 0x82, 0x27, 0x54, 0xbb, 0xd3, 0x39, 0xd0, 0x5b, 0xc7, 0x81, 0x18, - 0xfc, 0xec, 0x7c, 0xd1, 0xc2, 0xe7, 0x7b, 0xec, 0x7e, 0x22, 0xe4, 0x17, 0x3c, 0x69, 0x8f, 0x7e, - 0x3f, 0x23, 0x9d, 0xe5, 0xfb, 0x19, 0xf9, 0x63, 0x58, 0x8a, 0xeb, 0x36, 0x8e, 0xfe, 0x1e, 0xf3, - 0x69, 0xc8, 0x77, 0x4d, 0x4b, 0x0c, 0xb4, 0xec, 0x57, 0x16, 0xb9, 0xae, 0x69, 0xf5, 0x83, 0x2c, - 0x99, 0xa5, 0x7f, 0x34, 0x1c, 0x8e, 0x73, 0x5d, 0xfd, 0xa3, 0x70, 0x96, 0xfc, 0xd3, 0x29, 0x28, - 0x34, 0xb1, 0xcf, 0xbe, 0x9a, 0xbf, 0x38, 0xb5, 0x1f, 0xc1, 0x82, 0x8b, 0x3d, 0xbb, 0xe7, 0xb6, - 0xb0, 0xc6, 0x7f, 0x41, 0xc1, 0x7e, 0xaf, 0xf1, 0x56, 0x72, 0xf1, 0x22, 0x82, 0x6b, 0x5d, 0xe5, - 0x4b, 0x88, 0xbf, 0xa7, 0xc8, 0xbb, 0x11, 0x22, 0xba, 0x0e, 0x8b, 0x74, 0x03, 0xed, 0xd0, 0xb4, - 0xda, 0xd8, 0x75, 0x5c, 0x33, 0xcc, 0xd5, 0x0a, 0x74, 0xe0, 0x76, 0x9f, 0x1e, 0x67, 0x96, 0xa5, - 0x32, 0x2c, 0xc5, 0xec, 0x73, 0xaa, 0xdf, 0x12, 0xfc, 0x86, 0x44, 0x8b, 0x41, 0x3b, 0xb8, 0xad, - 0xb7, 0x4e, 0xca, 0x07, 0x7a, 0xeb, 0xe2, 0x14, 0x2b, 0x58, 0x49, 0x2a, 0x6a, 0x25, 0x71, 0x76, - 0xfc, 0x6d, 0x58, 0xa5, 0x61, 0xa9, 0xda, 0x50, 0xf9, 0xcf, 0x80, 0x2e, 0xbe, 0x8e, 0x22, 0xee, - 0xff, 0x1d, 0x09, 0x2e, 0x55, 0xec, 0xae, 0x43, 0x2e, 0x13, 0x8f, 0x12, 0x83, 0xe8, 0x76, 0x8e, - 0x61, 0x71, 0xe8, 0xb7, 0x2e, 0xc4, 0x6a, 0x84, 0x5f, 0xbb, 0xf0, 0xf3, 0x42, 0x10, 0x4c, 0xab, - 0x05, 0x5d, 0x9c, 0x4d, 0x4e, 0xd6, 0x73, 0x20, 0xd2, 0xd8, 0x15, 0x93, 0x81, 0x5a, 0x10, 0xe8, - 0xe4, 0xda, 0x28, 0xff, 0x8b, 0x04, 0x6b, 0xc4, 0x4b, 0x47, 0x3e, 0x4c, 0xbb, 0x30, 0x71, 0x87, - 0xbf, 0x99, 0x4b, 0x9d, 0xef, 0x9b, 0xb9, 0xb8, 0x77, 0xf8, 0x6f, 0xbc, 0x5c, 0x3f, 0xf4, 0xb9, - 0xd8, 0x85, 0x89, 0x15, 0xff, 0x45, 0x5b, 0xea, 0x17, 0xf3, 0x45, 0x5b, 0x4c, 0x39, 0xea, 0xe6, - 0xa7, 0xd7, 0x21, 0xcf, 0x0b, 0x11, 0x2c, 0x22, 0xbb, 0xe8, 0x47, 0x12, 0xe4, 0xc4, 0x02, 0x1d, - 0x4a, 0xba, 0xae, 0xc4, 0xd4, 0x0a, 0x4b, 0x1b, 0x13, 0xcf, 0x67, 0xa1, 0x45, 0x7e, 0xf5, 0xbb, - 0x3f, 0xfb, 0x8f, 0xef, 0x4d, 0xdd, 0x42, 0x37, 0xfb, 0x3f, 0xfd, 0xfb, 0x98, 0x5d, 0x36, 0xdf, - 0xe0, 0xda, 0xf4, 0x36, 0xae, 0x6d, 0x84, 0xa5, 0xf3, 0x8d, 0x6b, 0x9f, 0x6c, 0x84, 0x55, 0xbf, - 0xdf, 0x92, 0x00, 0xfa, 0xbd, 0x51, 0x94, 0xa4, 0xa4, 0xa1, 0x16, 0x6a, 0x69, 0x82, 0x02, 0x63, - 0x2c, 0x38, 0xa2, 0xba, 0x11, 0xd0, 0x42, 0x64, 0x1b, 0xd7, 0x3e, 0x41, 0xbf, 0x2b, 0xc1, 0x7c, - 0xa4, 0xb3, 0x8c, 0x92, 0x74, 0x13, 0xd7, 0x83, 0x2e, 0x4d, 0x54, 0x17, 0x93, 0xdf, 0xa0, 0x20, - 0x5f, 0x96, 0xcf, 0xa0, 0xc1, 0x57, 0xa5, 0x6b, 0x14, 0x67, 0xa4, 0xc9, 0x9b, 0x88, 0x33, 0xae, - 0x1d, 0x7c, 0x3a, 0x9c, 0xa5, 0x33, 0x28, 0x93, 0xe0, 0xfc, 0x53, 0x09, 0xf2, 0xd1, 0x5e, 0x2e, - 0x7a, 0x61, 0x2c, 0xd0, 0x81, 0x42, 0xc5, 0x84, 0x48, 0xab, 0x14, 0x69, 0xa5, 0xf4, 0xe6, 0xa9, - 0x91, 0x6e, 0x84, 0xf9, 0x0e, 0x47, 0xfd, 0xd3, 0x68, 0xfe, 0x2a, 0x66, 0x3e, 0xaf, 0x24, 0xe7, - 0x04, 0xa3, 0x1b, 0xba, 0x13, 0x4a, 0xf1, 0x4d, 0x2a, 0x85, 0x2a, 0xef, 0x9e, 0x53, 0x0a, 0x0f, - 0xfb, 0x02, 0x06, 0x22, 0xd4, 0x8f, 0x25, 0x58, 0x1c, 0x6a, 0xbb, 0xa2, 0x17, 0xc7, 0xe4, 0x38, - 0x71, 0x4d, 0xda, 0x09, 0x45, 0xb9, 0x43, 0x45, 0xd9, 0x94, 0xdf, 0x38, 0x83, 0xe9, 0x78, 0xe1, - 0xd6, 0x04, 0xfa, 0xdf, 0xb0, 0x9c, 0x65, 0xf8, 0x23, 0xc1, 0x71, 0xed, 0xa5, 0x11, 0x6d, 0xdb, - 0x09, 0x05, 0xb8, 0x4b, 0x05, 0x50, 0xe4, 0xb7, 0xcf, 0x26, 0x40, 0x7f, 0x77, 0x7e, 0x12, 0x16, - 0x06, 0x9a, 0xb2, 0xe8, 0x46, 0x32, 0xfc, 0x98, 0x06, 0xee, 0x84, 0xc8, 0xb7, 0x29, 0xf2, 0xb2, - 0xfc, 0xfa, 0xd9, 0x90, 0xb3, 0x8d, 0x09, 0xea, 0x3f, 0x96, 0x20, 0x27, 0xf6, 0x5e, 0x13, 0x43, - 0x4b, 0x4c, 0x93, 0x76, 0x42, 0xbc, 0x5f, 0xa7, 0x78, 0xb7, 0xe4, 0xb7, 0xce, 0x6a, 0x2a, 0x7c, - 0x28, 0x80, 0x2c, 0xb6, 0x64, 0x13, 0x21, 0xc7, 0xf4, 0x6e, 0x1f, 0x01, 0xe4, 0x9e, 0xb0, 0x2b, - 0xb7, 0x8d, 0xf9, 0x48, 0x37, 0x34, 0xd1, 0x9b, 0xc7, 0xf5, 0x4d, 0x1f, 0x91, 0x45, 0x87, 0xdb, - 0x12, 0xd4, 0x9f, 0x49, 0x30, 0x1f, 0xe9, 0x7b, 0x26, 0xa2, 0x8e, 0xeb, 0x90, 0x4e, 0x88, 0x9a, - 0x07, 0xf4, 0x6b, 0x67, 0x09, 0xe8, 0x24, 0x00, 0x45, 0x9b, 0x5a, 0x89, 0x01, 0x28, 0xb6, 0xd3, - 0x57, 0xba, 0x71, 0x0a, 0x0e, 0x9e, 0x21, 0xbd, 0x4e, 0x31, 0xbf, 0x84, 0x6e, 0x4d, 0x1e, 0xdf, - 0x85, 0x4e, 0xd9, 0x67, 0x12, 0xe4, 0xc4, 0xae, 0x67, 0xa2, 0x0d, 0xc7, 0xb4, 0x47, 0x27, 0x54, - 0x6c, 0x1c, 0xc8, 0x24, 0xc5, 0xf6, 0x11, 0x12, 0xd5, 0xfe, 0x8e, 0x04, 0x0b, 0x03, 0x4d, 0xcb, - 0x44, 0x8f, 0x16, 0xdf, 0xe0, 0x2c, 0xad, 0x06, 0x2c, 0xc1, 0x7f, 0x79, 0x58, 0x57, 0xba, 0x8e, - 0x7f, 0x22, 0xdf, 0xa6, 0xe0, 0xde, 0x96, 0x5f, 0x3b, 0x0b, 0xb8, 0x57, 0x5b, 0x74, 0x33, 0x62, - 0xa6, 0x3f, 0x92, 0x60, 0x61, 0xa0, 0xa3, 0x98, 0x08, 0x33, 0xbe, 0xfb, 0x58, 0x7a, 0x36, 0xf1, - 0x44, 0xf6, 0xe7, 0x9f, 0x56, 0xa9, 0x9f, 0x6c, 0x78, 0x22, 0xb2, 0xbf, 0x90, 0x60, 0x3e, 0x52, - 0xce, 0x41, 0xe3, 0x92, 0xf3, 0xc1, 0xc6, 0x52, 0xe9, 0x85, 0xc9, 0x19, 0xb8, 0xb1, 0x72, 0x55, - 0xa3, 0x37, 0x27, 0x35, 0x56, 0xf1, 0x88, 0xf5, 0xf3, 0x0e, 0xf4, 0x03, 0x09, 0xb2, 0x42, 0xa3, - 0x09, 0x3d, 0x9f, 0xac, 0xe6, 0xc1, 0x3c, 0x6f, 0x92, 0xe2, 0x54, 0x2c, 0xd6, 0x33, 0x24, 0x48, - 0xd4, 0x31, 0x44, 0xfb, 0x9f, 0x89, 0x8e, 0x21, 0xb6, 0x55, 0x7a, 0xba, 0xcc, 0x54, 0x3e, 0xa7, - 0x7a, 0x79, 0x70, 0xcb, 0x47, 0xfb, 0x9d, 0x89, 0xa8, 0x63, 0x5b, 0xa3, 0x13, 0xa2, 0xe6, 0x8a, - 0xbe, 0x76, 0x5e, 0x45, 0xff, 0x93, 0x04, 0x6b, 0x23, 0x4a, 0xa9, 0x28, 0xe9, 0x47, 0x05, 0xc9, - 0xe5, 0xd7, 0x09, 0x85, 0x50, 0xa9, 0x10, 0x3b, 0xf2, 0xf6, 0x39, 0xd3, 0x69, 0x97, 0x83, 0x21, - 0xef, 0xe0, 0x9f, 0x25, 0x58, 0x89, 0xad, 0xe8, 0xa3, 0x97, 0x27, 0xbb, 0x1c, 0x0c, 0xf5, 0x00, - 0x26, 0x14, 0xe6, 0x3e, 0x15, 0xe6, 0x1b, 0xf2, 0xce, 0xf9, 0xef, 0x06, 0x7d, 0x08, 0x44, 0xa2, - 0x3f, 0x92, 0x20, 0x13, 0x16, 0x34, 0xd1, 0xf5, 0x53, 0x94, 0x3d, 0x27, 0x44, 0x5e, 0xa7, 0xc8, - 0xab, 0xf2, 0xd6, 0xd9, 0xf2, 0x8e, 0x68, 0xcd, 0x53, 0xc8, 0x98, 0xfa, 0x55, 0xcc, 0x71, 0x19, - 0xd3, 0x50, 0xbd, 0xf3, 0xd1, 0x64, 0x4c, 0xfd, 0x6d, 0x09, 0xea, 0x3f, 0x27, 0x77, 0x80, 0x68, - 0x8d, 0x33, 0xf9, 0x0e, 0x10, 0x5b, 0x0f, 0x9d, 0x10, 0xf9, 0x2e, 0x45, 0xbe, 0x2d, 0x6f, 0x9e, - 0x05, 0x39, 0xdd, 0xd8, 0x09, 0x36, 0x26, 0xd8, 0xff, 0x56, 0x02, 0x34, 0x5c, 0x1e, 0x45, 0xb7, - 0x92, 0x7c, 0xe6, 0xa8, 0x6a, 0xea, 0x84, 0x12, 0x34, 0xa8, 0x04, 0x5f, 0x97, 0x95, 0x33, 0x48, - 0xd0, 0x0a, 0xf6, 0x8e, 0x08, 0xf1, 0x57, 0xec, 0x12, 0x26, 0x36, 0xa6, 0xc6, 0x5d, 0xc2, 0x62, - 0x9a, 0x58, 0x13, 0xc2, 0xff, 0x06, 0x85, 0x7f, 0x57, 0xbe, 0x7d, 0xfe, 0xe3, 0x4a, 0x36, 0x27, - 0xf8, 0xff, 0x52, 0xa2, 0x1d, 0x91, 0xe8, 0xff, 0x8e, 0xb8, 0x39, 0x46, 0x80, 0x98, 0xfa, 0xee, - 0x84, 0x12, 0xd4, 0xa8, 0x04, 0x77, 0xe4, 0xca, 0xd9, 0x8c, 0x3f, 0xb2, 0x33, 0x81, 0xff, 0xf7, - 0xfc, 0x1e, 0x3f, 0x54, 0xe8, 0x1c, 0xfb, 0x99, 0x68, 0x7c, 0x3d, 0xf7, 0xc2, 0x83, 0x00, 0xf7, - 0x95, 0x03, 0xbb, 0xbf, 0x2a, 0x5d, 0xdb, 0xfc, 0x89, 0x04, 0x97, 0x5b, 0x76, 0x77, 0xf4, 0xfe, - 0x9b, 0x4b, 0x95, 0xe0, 0xdf, 0x3f, 0xd0, 0xd2, 0x43, 0x83, 0x64, 0xb7, 0x0d, 0xe9, 0xdd, 0x4d, - 0xce, 0xd1, 0xb6, 0x3b, 0xba, 0xd5, 0x5e, 0xb7, 0xdd, 0xf6, 0x46, 0x1b, 0x5b, 0x34, 0xf7, 0xe5, - 0xff, 0x58, 0x4d, 0x77, 0x4c, 0x2f, 0xe6, 0x9f, 0xab, 0xbd, 0x16, 0x92, 0x7e, 0x38, 0xf5, 0xe4, - 0x36, 0x5b, 0xa4, 0xd2, 0xb1, 0x7b, 0xc6, 0x7a, 0x25, 0xdc, 0xfc, 0xde, 0x0d, 0xfa, 0x03, 0xf5, - 0x1b, 0xff, 0x10, 0xcc, 0x78, 0x9f, 0xce, 0x78, 0x3f, 0x9c, 0xf1, 0xfe, 0x3d, 0xbe, 0xda, 0x41, - 0x9a, 0x6e, 0xf9, 0xe2, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xec, 0x17, 0x6d, 0x5d, 0xce, 0x4d, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/container/v1beta1/cluster_service.pb.go b/vendor/google.golang.org/genproto/googleapis/container/v1beta1/cluster_service.pb.go deleted file mode 100644 index 9fb21a43..00000000 --- a/vendor/google.golang.org/genproto/googleapis/container/v1beta1/cluster_service.pb.go +++ /dev/null @@ -1,4719 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/container/v1beta1/cluster_service.proto - -/* -Package container is a generated protocol buffer package. - -It is generated from these files: - google/container/v1beta1/cluster_service.proto - -It has these top-level messages: - NodeConfig - NodeTaint - MasterAuth - ClientCertificateConfig - AddonsConfig - HttpLoadBalancing - HorizontalPodAutoscaling - KubernetesDashboard - NetworkPolicyConfig - MasterAuthorizedNetworksConfig - NetworkPolicy - IPAllocationPolicy - PodSecurityPolicyConfig - Cluster - ClusterUpdate - Operation - CreateClusterRequest - GetClusterRequest - UpdateClusterRequest - SetMasterAuthRequest - DeleteClusterRequest - ListClustersRequest - ListClustersResponse - GetOperationRequest - ListOperationsRequest - CancelOperationRequest - ListOperationsResponse - GetServerConfigRequest - ServerConfig - CreateNodePoolRequest - DeleteNodePoolRequest - ListNodePoolsRequest - GetNodePoolRequest - NodePool - NodeManagement - AutoUpgradeOptions - MaintenancePolicy - MaintenanceWindow - DailyMaintenanceWindow - SetNodePoolManagementRequest - RollbackNodePoolUpgradeRequest - ListNodePoolsResponse - NodePoolAutoscaling - SetLabelsRequest - SetLegacyAbacRequest - StartIPRotationRequest - CompleteIPRotationRequest - AcceleratorConfig - SetNetworkPolicyRequest - SetMaintenancePolicyRequest -*/ -package container - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Possible values for Effect in taint. -type NodeTaint_Effect int32 - -const ( - // Not set - NodeTaint_EFFECT_UNSPECIFIED NodeTaint_Effect = 0 - // NoSchedule - NodeTaint_NO_SCHEDULE NodeTaint_Effect = 1 - // PreferNoSchedule - NodeTaint_PREFER_NO_SCHEDULE NodeTaint_Effect = 2 - // NoExecute - NodeTaint_NO_EXECUTE NodeTaint_Effect = 3 -) - -var NodeTaint_Effect_name = map[int32]string{ - 0: "EFFECT_UNSPECIFIED", - 1: "NO_SCHEDULE", - 2: "PREFER_NO_SCHEDULE", - 3: "NO_EXECUTE", -} -var NodeTaint_Effect_value = map[string]int32{ - "EFFECT_UNSPECIFIED": 0, - "NO_SCHEDULE": 1, - "PREFER_NO_SCHEDULE": 2, - "NO_EXECUTE": 3, -} - -func (x NodeTaint_Effect) String() string { - return proto.EnumName(NodeTaint_Effect_name, int32(x)) -} -func (NodeTaint_Effect) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// Allowed Network Policy providers. -type NetworkPolicy_Provider int32 - -const ( - // Not set - NetworkPolicy_PROVIDER_UNSPECIFIED NetworkPolicy_Provider = 0 - // Tigera (Calico Felix). - NetworkPolicy_CALICO NetworkPolicy_Provider = 1 -) - -var NetworkPolicy_Provider_name = map[int32]string{ - 0: "PROVIDER_UNSPECIFIED", - 1: "CALICO", -} -var NetworkPolicy_Provider_value = map[string]int32{ - "PROVIDER_UNSPECIFIED": 0, - "CALICO": 1, -} - -func (x NetworkPolicy_Provider) String() string { - return proto.EnumName(NetworkPolicy_Provider_name, int32(x)) -} -func (NetworkPolicy_Provider) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 0} } - -// The current status of the cluster. -type Cluster_Status int32 - -const ( - // Not set. - Cluster_STATUS_UNSPECIFIED Cluster_Status = 0 - // The PROVISIONING state indicates the cluster is being created. - Cluster_PROVISIONING Cluster_Status = 1 - // The RUNNING state indicates the cluster has been created and is fully - // usable. - Cluster_RUNNING Cluster_Status = 2 - // The RECONCILING state indicates that some work is actively being done on - // the cluster, such as upgrading the master or node software. Details can - // be found in the `statusMessage` field. - Cluster_RECONCILING Cluster_Status = 3 - // The STOPPING state indicates the cluster is being deleted. - Cluster_STOPPING Cluster_Status = 4 - // The ERROR state indicates the cluster may be unusable. Details - // can be found in the `statusMessage` field. - Cluster_ERROR Cluster_Status = 5 -) - -var Cluster_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PROVISIONING", - 2: "RUNNING", - 3: "RECONCILING", - 4: "STOPPING", - 5: "ERROR", -} -var Cluster_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PROVISIONING": 1, - "RUNNING": 2, - "RECONCILING": 3, - "STOPPING": 4, - "ERROR": 5, -} - -func (x Cluster_Status) String() string { - return proto.EnumName(Cluster_Status_name, int32(x)) -} -func (Cluster_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{13, 0} } - -// Current status of the operation. -type Operation_Status int32 - -const ( - // Not set. - Operation_STATUS_UNSPECIFIED Operation_Status = 0 - // The operation has been created. - Operation_PENDING Operation_Status = 1 - // The operation is currently running. - Operation_RUNNING Operation_Status = 2 - // The operation is done, either cancelled or completed. - Operation_DONE Operation_Status = 3 - // The operation is aborting. - Operation_ABORTING Operation_Status = 4 -) - -var Operation_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", - 4: "ABORTING", -} -var Operation_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, - "ABORTING": 4, -} - -func (x Operation_Status) String() string { - return proto.EnumName(Operation_Status_name, int32(x)) -} -func (Operation_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{15, 0} } - -// Operation type. -type Operation_Type int32 - -const ( - // Not set. - Operation_TYPE_UNSPECIFIED Operation_Type = 0 - // Cluster create. - Operation_CREATE_CLUSTER Operation_Type = 1 - // Cluster delete. - Operation_DELETE_CLUSTER Operation_Type = 2 - // A master upgrade. - Operation_UPGRADE_MASTER Operation_Type = 3 - // A node upgrade. - Operation_UPGRADE_NODES Operation_Type = 4 - // Cluster repair. - Operation_REPAIR_CLUSTER Operation_Type = 5 - // Cluster update. - Operation_UPDATE_CLUSTER Operation_Type = 6 - // Node pool create. - Operation_CREATE_NODE_POOL Operation_Type = 7 - // Node pool delete. - Operation_DELETE_NODE_POOL Operation_Type = 8 - // Set node pool management. - Operation_SET_NODE_POOL_MANAGEMENT Operation_Type = 9 - // Automatic node pool repair. - Operation_AUTO_REPAIR_NODES Operation_Type = 10 - // Automatic node upgrade. - Operation_AUTO_UPGRADE_NODES Operation_Type = 11 - // Set labels. - Operation_SET_LABELS Operation_Type = 12 - // Set/generate master auth materials - Operation_SET_MASTER_AUTH Operation_Type = 13 - // Set node pool size. - Operation_SET_NODE_POOL_SIZE Operation_Type = 14 - // Updates network policy for a cluster. - Operation_SET_NETWORK_POLICY Operation_Type = 15 - // Set the maintenance policy. - Operation_SET_MAINTENANCE_POLICY Operation_Type = 16 -) - -var Operation_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "CREATE_CLUSTER", - 2: "DELETE_CLUSTER", - 3: "UPGRADE_MASTER", - 4: "UPGRADE_NODES", - 5: "REPAIR_CLUSTER", - 6: "UPDATE_CLUSTER", - 7: "CREATE_NODE_POOL", - 8: "DELETE_NODE_POOL", - 9: "SET_NODE_POOL_MANAGEMENT", - 10: "AUTO_REPAIR_NODES", - 11: "AUTO_UPGRADE_NODES", - 12: "SET_LABELS", - 13: "SET_MASTER_AUTH", - 14: "SET_NODE_POOL_SIZE", - 15: "SET_NETWORK_POLICY", - 16: "SET_MAINTENANCE_POLICY", -} -var Operation_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "CREATE_CLUSTER": 1, - "DELETE_CLUSTER": 2, - "UPGRADE_MASTER": 3, - "UPGRADE_NODES": 4, - "REPAIR_CLUSTER": 5, - "UPDATE_CLUSTER": 6, - "CREATE_NODE_POOL": 7, - "DELETE_NODE_POOL": 8, - "SET_NODE_POOL_MANAGEMENT": 9, - "AUTO_REPAIR_NODES": 10, - "AUTO_UPGRADE_NODES": 11, - "SET_LABELS": 12, - "SET_MASTER_AUTH": 13, - "SET_NODE_POOL_SIZE": 14, - "SET_NETWORK_POLICY": 15, - "SET_MAINTENANCE_POLICY": 16, -} - -func (x Operation_Type) String() string { - return proto.EnumName(Operation_Type_name, int32(x)) -} -func (Operation_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{15, 1} } - -// Operation type: what type update to perform. -type SetMasterAuthRequest_Action int32 - -const ( - // Operation is unknown and will error out. - SetMasterAuthRequest_UNKNOWN SetMasterAuthRequest_Action = 0 - // Set the password to a user generated value. - SetMasterAuthRequest_SET_PASSWORD SetMasterAuthRequest_Action = 1 - // Generate a new password and set it to that. - SetMasterAuthRequest_GENERATE_PASSWORD SetMasterAuthRequest_Action = 2 - // Set the username. If an empty username is provided, basic authentication - // is disabled for the cluster. If a non-empty username is provided, basic - // authentication is enabled, with either a provided password or a generated - // one. - SetMasterAuthRequest_SET_USERNAME SetMasterAuthRequest_Action = 3 -) - -var SetMasterAuthRequest_Action_name = map[int32]string{ - 0: "UNKNOWN", - 1: "SET_PASSWORD", - 2: "GENERATE_PASSWORD", - 3: "SET_USERNAME", -} -var SetMasterAuthRequest_Action_value = map[string]int32{ - "UNKNOWN": 0, - "SET_PASSWORD": 1, - "GENERATE_PASSWORD": 2, - "SET_USERNAME": 3, -} - -func (x SetMasterAuthRequest_Action) String() string { - return proto.EnumName(SetMasterAuthRequest_Action_name, int32(x)) -} -func (SetMasterAuthRequest_Action) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{19, 0} -} - -// The current status of the node pool instance. -type NodePool_Status int32 - -const ( - // Not set. - NodePool_STATUS_UNSPECIFIED NodePool_Status = 0 - // The PROVISIONING state indicates the node pool is being created. - NodePool_PROVISIONING NodePool_Status = 1 - // The RUNNING state indicates the node pool has been created - // and is fully usable. - NodePool_RUNNING NodePool_Status = 2 - // The RUNNING_WITH_ERROR state indicates the node pool has been created - // and is partially usable. Some error state has occurred and some - // functionality may be impaired. Customer may need to reissue a request - // or trigger a new update. - NodePool_RUNNING_WITH_ERROR NodePool_Status = 3 - // The RECONCILING state indicates that some work is actively being done on - // the node pool, such as upgrading node software. Details can - // be found in the `statusMessage` field. - NodePool_RECONCILING NodePool_Status = 4 - // The STOPPING state indicates the node pool is being deleted. - NodePool_STOPPING NodePool_Status = 5 - // The ERROR state indicates the node pool may be unusable. Details - // can be found in the `statusMessage` field. - NodePool_ERROR NodePool_Status = 6 -) - -var NodePool_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "PROVISIONING", - 2: "RUNNING", - 3: "RUNNING_WITH_ERROR", - 4: "RECONCILING", - 5: "STOPPING", - 6: "ERROR", -} -var NodePool_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "PROVISIONING": 1, - "RUNNING": 2, - "RUNNING_WITH_ERROR": 3, - "RECONCILING": 4, - "STOPPING": 5, - "ERROR": 6, -} - -func (x NodePool_Status) String() string { - return proto.EnumName(NodePool_Status_name, int32(x)) -} -func (NodePool_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{33, 0} } - -// Parameters that describe the nodes in a cluster. -type NodeConfig struct { - // The name of a Google Compute Engine [machine - // type](/compute/docs/machine-types) (e.g. - // `n1-standard-1`). - // - // If unspecified, the default machine type is - // `n1-standard-1`. - MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType" json:"machine_type,omitempty"` - // Size of the disk attached to each node, specified in GB. - // The smallest allowed disk size is 10GB. - // - // If unspecified, the default disk size is 100GB. - DiskSizeGb int32 `protobuf:"varint,2,opt,name=disk_size_gb,json=diskSizeGb" json:"disk_size_gb,omitempty"` - // The set of Google API scopes to be made available on all of the - // node VMs under the "default" service account. - // - // The following scopes are recommended, but not required, and by default are - // not included: - // - // * `https://www.googleapis.com/auth/compute` is required for mounting - // persistent storage on your nodes. - // * `https://www.googleapis.com/auth/devstorage.read_only` is required for - // communicating with **gcr.io** - // (the [Google Container Registry](/container-registry/)). - // - // If unspecified, no scopes are added, unless Cloud Logging or Cloud - // Monitoring are enabled, in which case their required scopes will be added. - OauthScopes []string `protobuf:"bytes,3,rep,name=oauth_scopes,json=oauthScopes" json:"oauth_scopes,omitempty"` - // The Google Cloud Platform Service Account to be used by the node VMs. If - // no Service Account is specified, the "default" service account is used. - ServiceAccount string `protobuf:"bytes,9,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // The metadata key/value pairs assigned to instances in the cluster. - // - // Keys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes - // in length. These are reflected as part of a URL in the metadata server. - // Additionally, to avoid ambiguity, keys must not conflict with any other - // metadata keys for the project or be one of the four reserved keys: - // "instance-template", "kube-env", "startup-script", and "user-data" - // - // Values are free-form strings, and only have meaning as interpreted by - // the image running in the instance. The only restriction placed on them is - // that each value's size must be less than or equal to 32 KB. - // - // The total size of all keys and values must be less than 512 KB. - Metadata map[string]string `protobuf:"bytes,4,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The image type to use for this node. Note that for a given image type, - // the latest version of it will be used. - ImageType string `protobuf:"bytes,5,opt,name=image_type,json=imageType" json:"image_type,omitempty"` - // The map of Kubernetes labels (key/value pairs) to be applied to each node. - // These will added in addition to any default label(s) that - // Kubernetes may apply to the node. - // In case of conflict in label keys, the applied set may differ depending on - // the Kubernetes version -- it's best to assume the behavior is undefined - // and conflicts should be avoided. - // For more information, including usage and the valid values, see: - // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ - Labels map[string]string `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The number of local SSD disks to be attached to the node. - // - // The limit for this value is dependant upon the maximum number of - // disks available on a machine per zone. See: - // https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits - // for more information. - LocalSsdCount int32 `protobuf:"varint,7,opt,name=local_ssd_count,json=localSsdCount" json:"local_ssd_count,omitempty"` - // The list of instance tags applied to all nodes. Tags are used to identify - // valid sources or targets for network firewalls and are specified by - // the client during cluster or node pool creation. Each tag within the list - // must comply with RFC1035. - Tags []string `protobuf:"bytes,8,rep,name=tags" json:"tags,omitempty"` - // Whether the nodes are created as preemptible VM instances. See: - // https://cloud.google.com/compute/docs/instances/preemptible for more - // inforamtion about preemptible VM instances. - Preemptible bool `protobuf:"varint,10,opt,name=preemptible" json:"preemptible,omitempty"` - // A list of hardware accelerators to be attached to each node. - // See https://cloud.google.com/compute/docs/gpus for more information about - // support for GPUs. - Accelerators []*AcceleratorConfig `protobuf:"bytes,11,rep,name=accelerators" json:"accelerators,omitempty"` - // Minimum CPU platform to be used by this instance. The instance may be - // scheduled on the specified or newer CPU platform. Applicable values are the - // friendly names of CPU platforms, such as - // <code>minCpuPlatform: &quot;Intel Haswell&quot;</code> or - // <code>minCpuPlatform: &quot;Intel Sandy Bridge&quot;</code>. For more - // information, read [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform) - MinCpuPlatform string `protobuf:"bytes,13,opt,name=min_cpu_platform,json=minCpuPlatform" json:"min_cpu_platform,omitempty"` - // List of kubernetes taints to be applied to each node. - // - // For more information, including usage and the valid values, see: - // https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - Taints []*NodeTaint `protobuf:"bytes,15,rep,name=taints" json:"taints,omitempty"` -} - -func (m *NodeConfig) Reset() { *m = NodeConfig{} } -func (m *NodeConfig) String() string { return proto.CompactTextString(m) } -func (*NodeConfig) ProtoMessage() {} -func (*NodeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *NodeConfig) GetMachineType() string { - if m != nil { - return m.MachineType - } - return "" -} - -func (m *NodeConfig) GetDiskSizeGb() int32 { - if m != nil { - return m.DiskSizeGb - } - return 0 -} - -func (m *NodeConfig) GetOauthScopes() []string { - if m != nil { - return m.OauthScopes - } - return nil -} - -func (m *NodeConfig) GetServiceAccount() string { - if m != nil { - return m.ServiceAccount - } - return "" -} - -func (m *NodeConfig) GetMetadata() map[string]string { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *NodeConfig) GetImageType() string { - if m != nil { - return m.ImageType - } - return "" -} - -func (m *NodeConfig) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *NodeConfig) GetLocalSsdCount() int32 { - if m != nil { - return m.LocalSsdCount - } - return 0 -} - -func (m *NodeConfig) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -func (m *NodeConfig) GetPreemptible() bool { - if m != nil { - return m.Preemptible - } - return false -} - -func (m *NodeConfig) GetAccelerators() []*AcceleratorConfig { - if m != nil { - return m.Accelerators - } - return nil -} - -func (m *NodeConfig) GetMinCpuPlatform() string { - if m != nil { - return m.MinCpuPlatform - } - return "" -} - -func (m *NodeConfig) GetTaints() []*NodeTaint { - if m != nil { - return m.Taints - } - return nil -} - -// Kubernetes taint is comprised of three fields: key, value, and effect. Effect -// can only be one of three types: NoSchedule, PreferNoSchedule or NoExecute. -// -// For more information, including usage and the valid values, see: -// https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -type NodeTaint struct { - // Key for taint. - Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // Value for taint. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - // Effect for taint. - Effect NodeTaint_Effect `protobuf:"varint,3,opt,name=effect,enum=google.container.v1beta1.NodeTaint_Effect" json:"effect,omitempty"` -} - -func (m *NodeTaint) Reset() { *m = NodeTaint{} } -func (m *NodeTaint) String() string { return proto.CompactTextString(m) } -func (*NodeTaint) ProtoMessage() {} -func (*NodeTaint) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *NodeTaint) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *NodeTaint) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *NodeTaint) GetEffect() NodeTaint_Effect { - if m != nil { - return m.Effect - } - return NodeTaint_EFFECT_UNSPECIFIED -} - -// The authentication information for accessing the master endpoint. -// Authentication can be done using HTTP basic auth or using client -// certificates. -type MasterAuth struct { - // The username to use for HTTP basic authentication to the master endpoint. - // For clusters v1.6.0 and later, you can disable basic authentication by - // providing an empty username. - Username string `protobuf:"bytes,1,opt,name=username" json:"username,omitempty"` - // The password to use for HTTP basic authentication to the master endpoint. - // Because the master endpoint is open to the Internet, you should create a - // strong password. If a password is provided for cluster creation, username - // must be non-empty. - Password string `protobuf:"bytes,2,opt,name=password" json:"password,omitempty"` - // Configuration for client certificate authentication on the cluster. If no - // configuration is specified, a client certificate is issued. - ClientCertificateConfig *ClientCertificateConfig `protobuf:"bytes,3,opt,name=client_certificate_config,json=clientCertificateConfig" json:"client_certificate_config,omitempty"` - // [Output only] Base64-encoded public certificate that is the root of - // trust for the cluster. - ClusterCaCertificate string `protobuf:"bytes,100,opt,name=cluster_ca_certificate,json=clusterCaCertificate" json:"cluster_ca_certificate,omitempty"` - // [Output only] Base64-encoded public certificate used by clients to - // authenticate to the cluster endpoint. - ClientCertificate string `protobuf:"bytes,101,opt,name=client_certificate,json=clientCertificate" json:"client_certificate,omitempty"` - // [Output only] Base64-encoded private key used by clients to authenticate - // to the cluster endpoint. - ClientKey string `protobuf:"bytes,102,opt,name=client_key,json=clientKey" json:"client_key,omitempty"` -} - -func (m *MasterAuth) Reset() { *m = MasterAuth{} } -func (m *MasterAuth) String() string { return proto.CompactTextString(m) } -func (*MasterAuth) ProtoMessage() {} -func (*MasterAuth) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *MasterAuth) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *MasterAuth) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -func (m *MasterAuth) GetClientCertificateConfig() *ClientCertificateConfig { - if m != nil { - return m.ClientCertificateConfig - } - return nil -} - -func (m *MasterAuth) GetClusterCaCertificate() string { - if m != nil { - return m.ClusterCaCertificate - } - return "" -} - -func (m *MasterAuth) GetClientCertificate() string { - if m != nil { - return m.ClientCertificate - } - return "" -} - -func (m *MasterAuth) GetClientKey() string { - if m != nil { - return m.ClientKey - } - return "" -} - -// Configuration for client certificates on the cluster. -type ClientCertificateConfig struct { - // Issue a client certificate. - IssueClientCertificate bool `protobuf:"varint,1,opt,name=issue_client_certificate,json=issueClientCertificate" json:"issue_client_certificate,omitempty"` -} - -func (m *ClientCertificateConfig) Reset() { *m = ClientCertificateConfig{} } -func (m *ClientCertificateConfig) String() string { return proto.CompactTextString(m) } -func (*ClientCertificateConfig) ProtoMessage() {} -func (*ClientCertificateConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ClientCertificateConfig) GetIssueClientCertificate() bool { - if m != nil { - return m.IssueClientCertificate - } - return false -} - -// Configuration for the addons that can be automatically spun up in the -// cluster, enabling additional functionality. -type AddonsConfig struct { - // Configuration for the HTTP (L7) load balancing controller addon, which - // makes it easy to set up HTTP load balancers for services in a cluster. - HttpLoadBalancing *HttpLoadBalancing `protobuf:"bytes,1,opt,name=http_load_balancing,json=httpLoadBalancing" json:"http_load_balancing,omitempty"` - // Configuration for the horizontal pod autoscaling feature, which - // increases or decreases the number of replica pods a replication controller - // has based on the resource usage of the existing pods. - HorizontalPodAutoscaling *HorizontalPodAutoscaling `protobuf:"bytes,2,opt,name=horizontal_pod_autoscaling,json=horizontalPodAutoscaling" json:"horizontal_pod_autoscaling,omitempty"` - // Configuration for the Kubernetes Dashboard. - KubernetesDashboard *KubernetesDashboard `protobuf:"bytes,3,opt,name=kubernetes_dashboard,json=kubernetesDashboard" json:"kubernetes_dashboard,omitempty"` - // Configuration for NetworkPolicy. This only tracks whether the addon - // is enabled or not on the Master, it does not track whether network policy - // is enabled for the nodes. - NetworkPolicyConfig *NetworkPolicyConfig `protobuf:"bytes,4,opt,name=network_policy_config,json=networkPolicyConfig" json:"network_policy_config,omitempty"` -} - -func (m *AddonsConfig) Reset() { *m = AddonsConfig{} } -func (m *AddonsConfig) String() string { return proto.CompactTextString(m) } -func (*AddonsConfig) ProtoMessage() {} -func (*AddonsConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *AddonsConfig) GetHttpLoadBalancing() *HttpLoadBalancing { - if m != nil { - return m.HttpLoadBalancing - } - return nil -} - -func (m *AddonsConfig) GetHorizontalPodAutoscaling() *HorizontalPodAutoscaling { - if m != nil { - return m.HorizontalPodAutoscaling - } - return nil -} - -func (m *AddonsConfig) GetKubernetesDashboard() *KubernetesDashboard { - if m != nil { - return m.KubernetesDashboard - } - return nil -} - -func (m *AddonsConfig) GetNetworkPolicyConfig() *NetworkPolicyConfig { - if m != nil { - return m.NetworkPolicyConfig - } - return nil -} - -// Configuration options for the HTTP (L7) load balancing controller addon, -// which makes it easy to set up HTTP load balancers for services in a cluster. -type HttpLoadBalancing struct { - // Whether the HTTP Load Balancing controller is enabled in the cluster. - // When enabled, it runs a small pod in the cluster that manages the load - // balancers. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *HttpLoadBalancing) Reset() { *m = HttpLoadBalancing{} } -func (m *HttpLoadBalancing) String() string { return proto.CompactTextString(m) } -func (*HttpLoadBalancing) ProtoMessage() {} -func (*HttpLoadBalancing) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *HttpLoadBalancing) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration options for the horizontal pod autoscaling feature, which -// increases or decreases the number of replica pods a replication controller -// has based on the resource usage of the existing pods. -type HorizontalPodAutoscaling struct { - // Whether the Horizontal Pod Autoscaling feature is enabled in the cluster. - // When enabled, it ensures that a Heapster pod is running in the cluster, - // which is also used by the Cloud Monitoring service. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *HorizontalPodAutoscaling) Reset() { *m = HorizontalPodAutoscaling{} } -func (m *HorizontalPodAutoscaling) String() string { return proto.CompactTextString(m) } -func (*HorizontalPodAutoscaling) ProtoMessage() {} -func (*HorizontalPodAutoscaling) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *HorizontalPodAutoscaling) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration for the Kubernetes Dashboard. -type KubernetesDashboard struct { - // Whether the Kubernetes Dashboard is enabled for this cluster. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *KubernetesDashboard) Reset() { *m = KubernetesDashboard{} } -func (m *KubernetesDashboard) String() string { return proto.CompactTextString(m) } -func (*KubernetesDashboard) ProtoMessage() {} -func (*KubernetesDashboard) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *KubernetesDashboard) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration for NetworkPolicy. This only tracks whether the addon -// is enabled or not on the Master, it does not track whether network policy -// is enabled for the nodes. -type NetworkPolicyConfig struct { - // Whether NetworkPolicy is enabled for this cluster. - Disabled bool `protobuf:"varint,1,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *NetworkPolicyConfig) Reset() { *m = NetworkPolicyConfig{} } -func (m *NetworkPolicyConfig) String() string { return proto.CompactTextString(m) } -func (*NetworkPolicyConfig) ProtoMessage() {} -func (*NetworkPolicyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *NetworkPolicyConfig) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// Configuration options for the master authorized networks feature. Enabled -// master authorized networks will disallow all external traffic to access -// Kubernetes master through HTTPS except traffic from the given CIDR blocks, -// Google Compute Engine Public IPs and Google Prod IPs. -type MasterAuthorizedNetworksConfig struct { - // Whether or not master authorized networks is enabled. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` - // cidr_blocks define up to 10 external networks that could access - // Kubernetes master through HTTPS. - CidrBlocks []*MasterAuthorizedNetworksConfig_CidrBlock `protobuf:"bytes,2,rep,name=cidr_blocks,json=cidrBlocks" json:"cidr_blocks,omitempty"` -} - -func (m *MasterAuthorizedNetworksConfig) Reset() { *m = MasterAuthorizedNetworksConfig{} } -func (m *MasterAuthorizedNetworksConfig) String() string { return proto.CompactTextString(m) } -func (*MasterAuthorizedNetworksConfig) ProtoMessage() {} -func (*MasterAuthorizedNetworksConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *MasterAuthorizedNetworksConfig) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *MasterAuthorizedNetworksConfig) GetCidrBlocks() []*MasterAuthorizedNetworksConfig_CidrBlock { - if m != nil { - return m.CidrBlocks - } - return nil -} - -// CidrBlock contains an optional name and one CIDR block. -type MasterAuthorizedNetworksConfig_CidrBlock struct { - // display_name is an optional field for users to identify CIDR blocks. - DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // cidr_block must be specified in CIDR notation. - CidrBlock string `protobuf:"bytes,2,opt,name=cidr_block,json=cidrBlock" json:"cidr_block,omitempty"` -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) Reset() { - *m = MasterAuthorizedNetworksConfig_CidrBlock{} -} -func (m *MasterAuthorizedNetworksConfig_CidrBlock) String() string { return proto.CompactTextString(m) } -func (*MasterAuthorizedNetworksConfig_CidrBlock) ProtoMessage() {} -func (*MasterAuthorizedNetworksConfig_CidrBlock) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{9, 0} -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *MasterAuthorizedNetworksConfig_CidrBlock) GetCidrBlock() string { - if m != nil { - return m.CidrBlock - } - return "" -} - -// Configuration options for the NetworkPolicy feature. -// https://kubernetes.io/docs/concepts/services-networking/networkpolicies/ -type NetworkPolicy struct { - // The selected network policy provider. - Provider NetworkPolicy_Provider `protobuf:"varint,1,opt,name=provider,enum=google.container.v1beta1.NetworkPolicy_Provider" json:"provider,omitempty"` - // Whether network policy is enabled on the cluster. - Enabled bool `protobuf:"varint,2,opt,name=enabled" json:"enabled,omitempty"` -} - -func (m *NetworkPolicy) Reset() { *m = NetworkPolicy{} } -func (m *NetworkPolicy) String() string { return proto.CompactTextString(m) } -func (*NetworkPolicy) ProtoMessage() {} -func (*NetworkPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *NetworkPolicy) GetProvider() NetworkPolicy_Provider { - if m != nil { - return m.Provider - } - return NetworkPolicy_PROVIDER_UNSPECIFIED -} - -func (m *NetworkPolicy) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -// Configuration for controlling how IPs are allocated in the cluster. -type IPAllocationPolicy struct { - // Whether alias IPs will be used for pod IPs in the cluster. - UseIpAliases bool `protobuf:"varint,1,opt,name=use_ip_aliases,json=useIpAliases" json:"use_ip_aliases,omitempty"` - // Whether a new subnetwork will be created automatically for the cluster. - // - // This field is only applicable when `use_ip_aliases` is true. - CreateSubnetwork bool `protobuf:"varint,2,opt,name=create_subnetwork,json=createSubnetwork" json:"create_subnetwork,omitempty"` - // A custom subnetwork name to be used if `create_subnetwork` is true. If - // this field is empty, then an automatic name will be chosen for the new - // subnetwork. - SubnetworkName string `protobuf:"bytes,3,opt,name=subnetwork_name,json=subnetworkName" json:"subnetwork_name,omitempty"` - // This field is deprecated, use cluster_ipv4_cidr_block. - ClusterIpv4Cidr string `protobuf:"bytes,4,opt,name=cluster_ipv4_cidr,json=clusterIpv4Cidr" json:"cluster_ipv4_cidr,omitempty"` - // This field is deprecated, use node_ipv4_cidr_block. - NodeIpv4Cidr string `protobuf:"bytes,5,opt,name=node_ipv4_cidr,json=nodeIpv4Cidr" json:"node_ipv4_cidr,omitempty"` - // This field is deprecated, use services_ipv4_cidr_block. - ServicesIpv4Cidr string `protobuf:"bytes,6,opt,name=services_ipv4_cidr,json=servicesIpv4Cidr" json:"services_ipv4_cidr,omitempty"` - // The name of the secondary range to be used for the cluster CIDR - // block. The secondary range will be used for pod IP - // addresses. This must be an existing secondary range associated - // with the cluster subnetwork. - // - // This field is only applicable with use_ip_aliases and - // create_subnetwork is false. - ClusterSecondaryRangeName string `protobuf:"bytes,7,opt,name=cluster_secondary_range_name,json=clusterSecondaryRangeName" json:"cluster_secondary_range_name,omitempty"` - // The name of the secondary range to be used as for the services - // CIDR block. The secondary range will be used for service - // ClusterIPs. This must be an existing secondary range associated - // with the cluster subnetwork. - // - // This field is only applicable with use_ip_aliases and - // create_subnetwork is false. - ServicesSecondaryRangeName string `protobuf:"bytes,8,opt,name=services_secondary_range_name,json=servicesSecondaryRangeName" json:"services_secondary_range_name,omitempty"` - // The IP address range for the cluster pod IPs. If this field is set, then - // `cluster.cluster_ipv4_cidr` must be left blank. - // - // This field is only applicable when `use_ip_aliases` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - ClusterIpv4CidrBlock string `protobuf:"bytes,9,opt,name=cluster_ipv4_cidr_block,json=clusterIpv4CidrBlock" json:"cluster_ipv4_cidr_block,omitempty"` - // The IP address range of the instance IPs in this cluster. - // - // This is applicable only if `create_subnetwork` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - NodeIpv4CidrBlock string `protobuf:"bytes,10,opt,name=node_ipv4_cidr_block,json=nodeIpv4CidrBlock" json:"node_ipv4_cidr_block,omitempty"` - // The IP address range of the services IPs in this cluster. If blank, a range - // will be automatically chosen with the default size. - // - // This field is only applicable when `use_ip_aliases` is true. - // - // Set to blank to have a range chosen with the default size. - // - // Set to /netmask (e.g. `/14`) to have a range chosen with a specific - // netmask. - // - // Set to a - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g. - // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range - // to use. - ServicesIpv4CidrBlock string `protobuf:"bytes,11,opt,name=services_ipv4_cidr_block,json=servicesIpv4CidrBlock" json:"services_ipv4_cidr_block,omitempty"` -} - -func (m *IPAllocationPolicy) Reset() { *m = IPAllocationPolicy{} } -func (m *IPAllocationPolicy) String() string { return proto.CompactTextString(m) } -func (*IPAllocationPolicy) ProtoMessage() {} -func (*IPAllocationPolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *IPAllocationPolicy) GetUseIpAliases() bool { - if m != nil { - return m.UseIpAliases - } - return false -} - -func (m *IPAllocationPolicy) GetCreateSubnetwork() bool { - if m != nil { - return m.CreateSubnetwork - } - return false -} - -func (m *IPAllocationPolicy) GetSubnetworkName() string { - if m != nil { - return m.SubnetworkName - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterIpv4Cidr() string { - if m != nil { - return m.ClusterIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetNodeIpv4Cidr() string { - if m != nil { - return m.NodeIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesIpv4Cidr() string { - if m != nil { - return m.ServicesIpv4Cidr - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterSecondaryRangeName() string { - if m != nil { - return m.ClusterSecondaryRangeName - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesSecondaryRangeName() string { - if m != nil { - return m.ServicesSecondaryRangeName - } - return "" -} - -func (m *IPAllocationPolicy) GetClusterIpv4CidrBlock() string { - if m != nil { - return m.ClusterIpv4CidrBlock - } - return "" -} - -func (m *IPAllocationPolicy) GetNodeIpv4CidrBlock() string { - if m != nil { - return m.NodeIpv4CidrBlock - } - return "" -} - -func (m *IPAllocationPolicy) GetServicesIpv4CidrBlock() string { - if m != nil { - return m.ServicesIpv4CidrBlock - } - return "" -} - -// Configuration for the PodSecurityPolicy feature. -type PodSecurityPolicyConfig struct { - // Enable the PodSecurityPolicy controller for this cluster. If enabled, pods - // must be valid under a PodSecurityPolicy to be created. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` -} - -func (m *PodSecurityPolicyConfig) Reset() { *m = PodSecurityPolicyConfig{} } -func (m *PodSecurityPolicyConfig) String() string { return proto.CompactTextString(m) } -func (*PodSecurityPolicyConfig) ProtoMessage() {} -func (*PodSecurityPolicyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *PodSecurityPolicyConfig) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -// A Google Container Engine cluster. -type Cluster struct { - // The name of this cluster. The name must be unique within this project - // and zone, and can be up to 40 characters with the following restrictions: - // - // * Lowercase letters, numbers, and hyphens only. - // * Must start with a letter. - // * Must end with a number or a letter. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // An optional description of this cluster. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // The number of nodes to create in this cluster. You must ensure that your - // Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a> - // is sufficient for this number of instances. You must also have available - // firewall and routes quota. - // For requests, this field should only be used in lieu of a - // "node_pool" object, since this configuration (along with the - // "node_config") will be used to create a "NodePool" object with an - // auto-generated name. Do not use this and a node_pool at the same time. - InitialNodeCount int32 `protobuf:"varint,3,opt,name=initial_node_count,json=initialNodeCount" json:"initial_node_count,omitempty"` - // Parameters used in creating the cluster's nodes. - // See `nodeConfig` for the description of its properties. - // For requests, this field should only be used in lieu of a - // "node_pool" object, since this configuration (along with the - // "initial_node_count") will be used to create a "NodePool" object with an - // auto-generated name. Do not use this and a node_pool at the same time. - // For responses, this field will be populated with the node configuration of - // the first node pool. - // - // If unspecified, the defaults are used. - NodeConfig *NodeConfig `protobuf:"bytes,4,opt,name=node_config,json=nodeConfig" json:"node_config,omitempty"` - // The authentication information for accessing the master endpoint. - MasterAuth *MasterAuth `protobuf:"bytes,5,opt,name=master_auth,json=masterAuth" json:"master_auth,omitempty"` - // The logging service the cluster should use to write logs. - // Currently available options: - // - // * `logging.googleapis.com` - the Google Cloud Logging service. - // * `none` - no logs will be exported from the cluster. - // * if left as an empty string,`logging.googleapis.com` will be used. - LoggingService string `protobuf:"bytes,6,opt,name=logging_service,json=loggingService" json:"logging_service,omitempty"` - // The monitoring service the cluster should use to write metrics. - // Currently available options: - // - // * `monitoring.googleapis.com` - the Google Cloud Monitoring service. - // * `none` - no metrics will be exported from the cluster. - // * if left as an empty string, `monitoring.googleapis.com` will be used. - MonitoringService string `protobuf:"bytes,7,opt,name=monitoring_service,json=monitoringService" json:"monitoring_service,omitempty"` - // The name of the Google Compute Engine - // [network](/compute/docs/networks-and-firewalls#networks) to which the - // cluster is connected. If left unspecified, the `default` network - // will be used. - Network string `protobuf:"bytes,8,opt,name=network" json:"network,omitempty"` - // The IP address range of the container pods in this cluster, in - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `10.96.0.0/14`). Leave blank to have - // one automatically chosen or specify a `/14` block in `10.0.0.0/8`. - ClusterIpv4Cidr string `protobuf:"bytes,9,opt,name=cluster_ipv4_cidr,json=clusterIpv4Cidr" json:"cluster_ipv4_cidr,omitempty"` - // Configurations for the various addons available to run in the cluster. - AddonsConfig *AddonsConfig `protobuf:"bytes,10,opt,name=addons_config,json=addonsConfig" json:"addons_config,omitempty"` - // The name of the Google Compute Engine - // [subnetwork](/compute/docs/subnetworks) to which the - // cluster is connected. - Subnetwork string `protobuf:"bytes,11,opt,name=subnetwork" json:"subnetwork,omitempty"` - // The node pools associated with this cluster. - // This field should not be set if "node_config" or "initial_node_count" are - // specified. - NodePools []*NodePool `protobuf:"bytes,12,rep,name=node_pools,json=nodePools" json:"node_pools,omitempty"` - // The list of Google Compute Engine - // [locations](/compute/docs/zones#available) in which the cluster's nodes - // should be located. - Locations []string `protobuf:"bytes,13,rep,name=locations" json:"locations,omitempty"` - // Kubernetes alpha features are enabled on this cluster. This includes alpha - // API groups (e.g. v1beta1) and features that may not be production ready in - // the kubernetes version of the master and nodes. - // The cluster has no SLA for uptime and master/node upgrades are disabled. - // Alpha enabled clusters are automatically deleted thirty days after - // creation. - EnableKubernetesAlpha bool `protobuf:"varint,14,opt,name=enable_kubernetes_alpha,json=enableKubernetesAlpha" json:"enable_kubernetes_alpha,omitempty"` - // Configuration options for the NetworkPolicy feature. - NetworkPolicy *NetworkPolicy `protobuf:"bytes,19,opt,name=network_policy,json=networkPolicy" json:"network_policy,omitempty"` - // Configuration for cluster IP allocation. - IpAllocationPolicy *IPAllocationPolicy `protobuf:"bytes,20,opt,name=ip_allocation_policy,json=ipAllocationPolicy" json:"ip_allocation_policy,omitempty"` - // The configuration options for master authorized networks feature. - MasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfig `protobuf:"bytes,22,opt,name=master_authorized_networks_config,json=masterAuthorizedNetworksConfig" json:"master_authorized_networks_config,omitempty"` - // Configure the maintenance policy for this cluster. - MaintenancePolicy *MaintenancePolicy `protobuf:"bytes,23,opt,name=maintenance_policy,json=maintenancePolicy" json:"maintenance_policy,omitempty"` - // Configuration for the PodSecurityPolicy feature. - PodSecurityPolicyConfig *PodSecurityPolicyConfig `protobuf:"bytes,25,opt,name=pod_security_policy_config,json=podSecurityPolicyConfig" json:"pod_security_policy_config,omitempty"` - // [Output only] Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,100,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // [Output only] The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use location instead. - Zone string `protobuf:"bytes,101,opt,name=zone" json:"zone,omitempty"` - // [Output only] The IP address of this cluster's master endpoint. - // The endpoint can be accessed from the internet at - // `https://username:password@endpoint/`. - // - // See the `masterAuth` property of this resource for username and - // password information. - Endpoint string `protobuf:"bytes,102,opt,name=endpoint" json:"endpoint,omitempty"` - // The initial Kubernetes version for this cluster. Valid versions are those - // found in validMasterVersions returned by getServerConfig. The version can - // be upgraded over time; such upgrades are reflected in - // currentMasterVersion and currentNodeVersion. - InitialClusterVersion string `protobuf:"bytes,103,opt,name=initial_cluster_version,json=initialClusterVersion" json:"initial_cluster_version,omitempty"` - // [Output only] The current software version of the master endpoint. - CurrentMasterVersion string `protobuf:"bytes,104,opt,name=current_master_version,json=currentMasterVersion" json:"current_master_version,omitempty"` - // [Output only] The current version of the node software components. - // If they are currently at multiple versions because they're in the process - // of being upgraded, this reflects the minimum version of all nodes. - CurrentNodeVersion string `protobuf:"bytes,105,opt,name=current_node_version,json=currentNodeVersion" json:"current_node_version,omitempty"` - // [Output only] The time the cluster was created, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - CreateTime string `protobuf:"bytes,106,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // [Output only] The current status of this cluster. - Status Cluster_Status `protobuf:"varint,107,opt,name=status,enum=google.container.v1beta1.Cluster_Status" json:"status,omitempty"` - // [Output only] Additional information about the current status of this - // cluster, if available. - StatusMessage string `protobuf:"bytes,108,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` - // [Output only] The size of the address space on each node for hosting - // containers. This is provisioned from within the `container_ipv4_cidr` - // range. - NodeIpv4CidrSize int32 `protobuf:"varint,109,opt,name=node_ipv4_cidr_size,json=nodeIpv4CidrSize" json:"node_ipv4_cidr_size,omitempty"` - // [Output only] The IP address range of the Kubernetes services in - // this cluster, in - // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // notation (e.g. `1.2.3.4/29`). Service addresses are - // typically put in the last `/16` from the container CIDR. - ServicesIpv4Cidr string `protobuf:"bytes,110,opt,name=services_ipv4_cidr,json=servicesIpv4Cidr" json:"services_ipv4_cidr,omitempty"` - // [Output only] The resource URLs of [instance - // groups](/compute/docs/instance-groups/) associated with this - // cluster. - InstanceGroupUrls []string `protobuf:"bytes,111,rep,name=instance_group_urls,json=instanceGroupUrls" json:"instance_group_urls,omitempty"` - // [Output only] The number of nodes currently in the cluster. - CurrentNodeCount int32 `protobuf:"varint,112,opt,name=current_node_count,json=currentNodeCount" json:"current_node_count,omitempty"` - // [Output only] The time the cluster will be automatically - // deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - ExpireTime string `protobuf:"bytes,113,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` - // [Output only] The name of the Google Compute Engine - // [zone](/compute/docs/regions-zones/regions-zones#available) or - // [region](/compute/docs/regions-zones/regions-zones#available) in which - // the cluster resides. - Location string `protobuf:"bytes,114,opt,name=location" json:"location,omitempty"` -} - -func (m *Cluster) Reset() { *m = Cluster{} } -func (m *Cluster) String() string { return proto.CompactTextString(m) } -func (*Cluster) ProtoMessage() {} -func (*Cluster) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *Cluster) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Cluster) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Cluster) GetInitialNodeCount() int32 { - if m != nil { - return m.InitialNodeCount - } - return 0 -} - -func (m *Cluster) GetNodeConfig() *NodeConfig { - if m != nil { - return m.NodeConfig - } - return nil -} - -func (m *Cluster) GetMasterAuth() *MasterAuth { - if m != nil { - return m.MasterAuth - } - return nil -} - -func (m *Cluster) GetLoggingService() string { - if m != nil { - return m.LoggingService - } - return "" -} - -func (m *Cluster) GetMonitoringService() string { - if m != nil { - return m.MonitoringService - } - return "" -} - -func (m *Cluster) GetNetwork() string { - if m != nil { - return m.Network - } - return "" -} - -func (m *Cluster) GetClusterIpv4Cidr() string { - if m != nil { - return m.ClusterIpv4Cidr - } - return "" -} - -func (m *Cluster) GetAddonsConfig() *AddonsConfig { - if m != nil { - return m.AddonsConfig - } - return nil -} - -func (m *Cluster) GetSubnetwork() string { - if m != nil { - return m.Subnetwork - } - return "" -} - -func (m *Cluster) GetNodePools() []*NodePool { - if m != nil { - return m.NodePools - } - return nil -} - -func (m *Cluster) GetLocations() []string { - if m != nil { - return m.Locations - } - return nil -} - -func (m *Cluster) GetEnableKubernetesAlpha() bool { - if m != nil { - return m.EnableKubernetesAlpha - } - return false -} - -func (m *Cluster) GetNetworkPolicy() *NetworkPolicy { - if m != nil { - return m.NetworkPolicy - } - return nil -} - -func (m *Cluster) GetIpAllocationPolicy() *IPAllocationPolicy { - if m != nil { - return m.IpAllocationPolicy - } - return nil -} - -func (m *Cluster) GetMasterAuthorizedNetworksConfig() *MasterAuthorizedNetworksConfig { - if m != nil { - return m.MasterAuthorizedNetworksConfig - } - return nil -} - -func (m *Cluster) GetMaintenancePolicy() *MaintenancePolicy { - if m != nil { - return m.MaintenancePolicy - } - return nil -} - -func (m *Cluster) GetPodSecurityPolicyConfig() *PodSecurityPolicyConfig { - if m != nil { - return m.PodSecurityPolicyConfig - } - return nil -} - -func (m *Cluster) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *Cluster) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *Cluster) GetEndpoint() string { - if m != nil { - return m.Endpoint - } - return "" -} - -func (m *Cluster) GetInitialClusterVersion() string { - if m != nil { - return m.InitialClusterVersion - } - return "" -} - -func (m *Cluster) GetCurrentMasterVersion() string { - if m != nil { - return m.CurrentMasterVersion - } - return "" -} - -func (m *Cluster) GetCurrentNodeVersion() string { - if m != nil { - return m.CurrentNodeVersion - } - return "" -} - -func (m *Cluster) GetCreateTime() string { - if m != nil { - return m.CreateTime - } - return "" -} - -func (m *Cluster) GetStatus() Cluster_Status { - if m != nil { - return m.Status - } - return Cluster_STATUS_UNSPECIFIED -} - -func (m *Cluster) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -func (m *Cluster) GetNodeIpv4CidrSize() int32 { - if m != nil { - return m.NodeIpv4CidrSize - } - return 0 -} - -func (m *Cluster) GetServicesIpv4Cidr() string { - if m != nil { - return m.ServicesIpv4Cidr - } - return "" -} - -func (m *Cluster) GetInstanceGroupUrls() []string { - if m != nil { - return m.InstanceGroupUrls - } - return nil -} - -func (m *Cluster) GetCurrentNodeCount() int32 { - if m != nil { - return m.CurrentNodeCount - } - return 0 -} - -func (m *Cluster) GetExpireTime() string { - if m != nil { - return m.ExpireTime - } - return "" -} - -func (m *Cluster) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -// ClusterUpdate describes an update to the cluster. Exactly one update can -// be applied to a cluster with each request, so at most one field can be -// provided. -type ClusterUpdate struct { - // The Kubernetes version to change the nodes to (typically an - // upgrade). Use `-` to upgrade to the latest version supported by - // the server. - DesiredNodeVersion string `protobuf:"bytes,4,opt,name=desired_node_version,json=desiredNodeVersion" json:"desired_node_version,omitempty"` - // The monitoring service the cluster should use to write metrics. - // Currently available options: - // - // * "monitoring.googleapis.com" - the Google Cloud Monitoring service - // * "none" - no metrics will be exported from the cluster - DesiredMonitoringService string `protobuf:"bytes,5,opt,name=desired_monitoring_service,json=desiredMonitoringService" json:"desired_monitoring_service,omitempty"` - // Configurations for the various addons available to run in the cluster. - DesiredAddonsConfig *AddonsConfig `protobuf:"bytes,6,opt,name=desired_addons_config,json=desiredAddonsConfig" json:"desired_addons_config,omitempty"` - // The node pool to be upgraded. This field is mandatory if - // "desired_node_version", "desired_image_family" or - // "desired_node_pool_autoscaling" is specified and there is more than one - // node pool on the cluster. - DesiredNodePoolId string `protobuf:"bytes,7,opt,name=desired_node_pool_id,json=desiredNodePoolId" json:"desired_node_pool_id,omitempty"` - // The desired image type for the node pool. - // NOTE: Set the "desired_node_pool" field as well. - DesiredImageType string `protobuf:"bytes,8,opt,name=desired_image_type,json=desiredImageType" json:"desired_image_type,omitempty"` - // Autoscaler configuration for the node pool specified in - // desired_node_pool_id. If there is only one pool in the - // cluster and desired_node_pool_id is not provided then - // the change applies to that single node pool. - DesiredNodePoolAutoscaling *NodePoolAutoscaling `protobuf:"bytes,9,opt,name=desired_node_pool_autoscaling,json=desiredNodePoolAutoscaling" json:"desired_node_pool_autoscaling,omitempty"` - // The desired list of Google Compute Engine - // [locations](/compute/docs/zones#available) in which the cluster's nodes - // should be located. Changing the locations a cluster is in will result - // in nodes being either created or removed from the cluster, depending on - // whether locations are being added or removed. - // - // This list must always include the cluster's primary zone. - DesiredLocations []string `protobuf:"bytes,10,rep,name=desired_locations,json=desiredLocations" json:"desired_locations,omitempty"` - // The desired configuration options for master authorized networks feature. - DesiredMasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfig `protobuf:"bytes,12,opt,name=desired_master_authorized_networks_config,json=desiredMasterAuthorizedNetworksConfig" json:"desired_master_authorized_networks_config,omitempty"` - // The desired configuration options for the PodSecurityPolicy feature. - DesiredPodSecurityPolicyConfig *PodSecurityPolicyConfig `protobuf:"bytes,14,opt,name=desired_pod_security_policy_config,json=desiredPodSecurityPolicyConfig" json:"desired_pod_security_policy_config,omitempty"` - // The Kubernetes version to change the master to. The only valid value is the - // latest supported version. Use "-" to have the server automatically select - // the latest version. - DesiredMasterVersion string `protobuf:"bytes,100,opt,name=desired_master_version,json=desiredMasterVersion" json:"desired_master_version,omitempty"` -} - -func (m *ClusterUpdate) Reset() { *m = ClusterUpdate{} } -func (m *ClusterUpdate) String() string { return proto.CompactTextString(m) } -func (*ClusterUpdate) ProtoMessage() {} -func (*ClusterUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *ClusterUpdate) GetDesiredNodeVersion() string { - if m != nil { - return m.DesiredNodeVersion - } - return "" -} - -func (m *ClusterUpdate) GetDesiredMonitoringService() string { - if m != nil { - return m.DesiredMonitoringService - } - return "" -} - -func (m *ClusterUpdate) GetDesiredAddonsConfig() *AddonsConfig { - if m != nil { - return m.DesiredAddonsConfig - } - return nil -} - -func (m *ClusterUpdate) GetDesiredNodePoolId() string { - if m != nil { - return m.DesiredNodePoolId - } - return "" -} - -func (m *ClusterUpdate) GetDesiredImageType() string { - if m != nil { - return m.DesiredImageType - } - return "" -} - -func (m *ClusterUpdate) GetDesiredNodePoolAutoscaling() *NodePoolAutoscaling { - if m != nil { - return m.DesiredNodePoolAutoscaling - } - return nil -} - -func (m *ClusterUpdate) GetDesiredLocations() []string { - if m != nil { - return m.DesiredLocations - } - return nil -} - -func (m *ClusterUpdate) GetDesiredMasterAuthorizedNetworksConfig() *MasterAuthorizedNetworksConfig { - if m != nil { - return m.DesiredMasterAuthorizedNetworksConfig - } - return nil -} - -func (m *ClusterUpdate) GetDesiredPodSecurityPolicyConfig() *PodSecurityPolicyConfig { - if m != nil { - return m.DesiredPodSecurityPolicyConfig - } - return nil -} - -func (m *ClusterUpdate) GetDesiredMasterVersion() string { - if m != nil { - return m.DesiredMasterVersion - } - return "" -} - -// This operation resource represents operations that may have happened or are -// happening on the cluster. All fields are output only. -type Operation struct { - // The server-assigned ID for the operation. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the operation - // is taking place. - // This field is deprecated, use location instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The operation type. - OperationType Operation_Type `protobuf:"varint,3,opt,name=operation_type,json=operationType,enum=google.container.v1beta1.Operation_Type" json:"operation_type,omitempty"` - // The current status of the operation. - Status Operation_Status `protobuf:"varint,4,opt,name=status,enum=google.container.v1beta1.Operation_Status" json:"status,omitempty"` - // Detailed operation progress, if available. - Detail string `protobuf:"bytes,8,opt,name=detail" json:"detail,omitempty"` - // If an error has occurred, a textual description of the error. - StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` - // Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,6,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // Server-defined URL for the target of the operation. - TargetLink string `protobuf:"bytes,7,opt,name=target_link,json=targetLink" json:"target_link,omitempty"` - // [Output only] The name of the Google Compute Engine - // [zone](/compute/docs/regions-zones/regions-zones#available) or - // [region](/compute/docs/regions-zones/regions-zones#available) in which - // the cluster resides. - Location string `protobuf:"bytes,9,opt,name=location" json:"location,omitempty"` - // [Output only] The time the operation started, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - StartTime string `protobuf:"bytes,10,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // [Output only] The time the operation completed, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - EndTime string `protobuf:"bytes,11,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *Operation) Reset() { *m = Operation{} } -func (m *Operation) String() string { return proto.CompactTextString(m) } -func (*Operation) ProtoMessage() {} -func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *Operation) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Operation) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *Operation) GetOperationType() Operation_Type { - if m != nil { - return m.OperationType - } - return Operation_TYPE_UNSPECIFIED -} - -func (m *Operation) GetStatus() Operation_Status { - if m != nil { - return m.Status - } - return Operation_STATUS_UNSPECIFIED -} - -func (m *Operation) GetDetail() string { - if m != nil { - return m.Detail - } - return "" -} - -func (m *Operation) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -func (m *Operation) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *Operation) GetTargetLink() string { - if m != nil { - return m.TargetLink - } - return "" -} - -func (m *Operation) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -func (m *Operation) GetStartTime() string { - if m != nil { - return m.StartTime - } - return "" -} - -func (m *Operation) GetEndTime() string { - if m != nil { - return m.EndTime - } - return "" -} - -// CreateClusterRequest creates a cluster. -type CreateClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // A [cluster - // resource](/container-engine/reference/rest/v1beta1/projects.zones.clusters) - Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster" json:"cluster,omitempty"` - // The parent (project and location) where the cluster will be created. - // Specified in the format 'projects/*/locations/*'. - Parent string `protobuf:"bytes,5,opt,name=parent" json:"parent,omitempty"` -} - -func (m *CreateClusterRequest) Reset() { *m = CreateClusterRequest{} } -func (m *CreateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*CreateClusterRequest) ProtoMessage() {} -func (*CreateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *CreateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CreateClusterRequest) GetCluster() *Cluster { - if m != nil { - return m.Cluster - } - return nil -} - -func (m *CreateClusterRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// GetClusterRequest gets the settings of a cluster. -type GetClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to retrieve. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name (project, location, cluster) of the cluster to retrieve. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *GetClusterRequest) Reset() { *m = GetClusterRequest{} } -func (m *GetClusterRequest) String() string { return proto.CompactTextString(m) } -func (*GetClusterRequest) ProtoMessage() {} -func (*GetClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *GetClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *GetClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// UpdateClusterRequest updates the settings of a cluster. -type UpdateClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // A description of the update. - Update *ClusterUpdate `protobuf:"bytes,4,opt,name=update" json:"update,omitempty"` - // The name (project, location, cluster) of the cluster to update. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *UpdateClusterRequest) Reset() { *m = UpdateClusterRequest{} } -func (m *UpdateClusterRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateClusterRequest) ProtoMessage() {} -func (*UpdateClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *UpdateClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *UpdateClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *UpdateClusterRequest) GetUpdate() *ClusterUpdate { - if m != nil { - return m.Update - } - return nil -} - -func (m *UpdateClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetMasterAuthRequest updates the admin password of a cluster. -type SetMasterAuthRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to upgrade. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The exact form of action to be taken on the master auth. - Action SetMasterAuthRequest_Action `protobuf:"varint,4,opt,name=action,enum=google.container.v1beta1.SetMasterAuthRequest_Action" json:"action,omitempty"` - // A description of the update. - Update *MasterAuth `protobuf:"bytes,5,opt,name=update" json:"update,omitempty"` - // The name (project, location, cluster) of the cluster to set auth. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *SetMasterAuthRequest) Reset() { *m = SetMasterAuthRequest{} } -func (m *SetMasterAuthRequest) String() string { return proto.CompactTextString(m) } -func (*SetMasterAuthRequest) ProtoMessage() {} -func (*SetMasterAuthRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *SetMasterAuthRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetMasterAuthRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetMasterAuthRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetMasterAuthRequest) GetAction() SetMasterAuthRequest_Action { - if m != nil { - return m.Action - } - return SetMasterAuthRequest_UNKNOWN -} - -func (m *SetMasterAuthRequest) GetUpdate() *MasterAuth { - if m != nil { - return m.Update - } - return nil -} - -func (m *SetMasterAuthRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// DeleteClusterRequest deletes a cluster. -type DeleteClusterRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to delete. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name (project, location, cluster) of the cluster to delete. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteClusterRequest) Reset() { *m = DeleteClusterRequest{} } -func (m *DeleteClusterRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteClusterRequest) ProtoMessage() {} -func (*DeleteClusterRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *DeleteClusterRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteClusterRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *DeleteClusterRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *DeleteClusterRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListClustersRequest lists clusters. -type ListClustersRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides, or "-" for all zones. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The parent (project and location) where the clusters will be listed. - // Specified in the format 'projects/*/locations/*'. - // Location "-" matches all zones and all regions. - Parent string `protobuf:"bytes,4,opt,name=parent" json:"parent,omitempty"` -} - -func (m *ListClustersRequest) Reset() { *m = ListClustersRequest{} } -func (m *ListClustersRequest) String() string { return proto.CompactTextString(m) } -func (*ListClustersRequest) ProtoMessage() {} -func (*ListClustersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *ListClustersRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListClustersRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ListClustersRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// ListClustersResponse is the result of ListClustersRequest. -type ListClustersResponse struct { - // A list of clusters in the project in the specified zone, or - // across all ones. - Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters" json:"clusters,omitempty"` - // If any zones are listed here, the list of clusters returned - // may be missing those zones. - MissingZones []string `protobuf:"bytes,2,rep,name=missing_zones,json=missingZones" json:"missing_zones,omitempty"` -} - -func (m *ListClustersResponse) Reset() { *m = ListClustersResponse{} } -func (m *ListClustersResponse) String() string { return proto.CompactTextString(m) } -func (*ListClustersResponse) ProtoMessage() {} -func (*ListClustersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *ListClustersResponse) GetClusters() []*Cluster { - if m != nil { - return m.Clusters - } - return nil -} - -func (m *ListClustersResponse) GetMissingZones() []string { - if m != nil { - return m.MissingZones - } - return nil -} - -// GetOperationRequest gets a single operation. -type GetOperationRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The server-assigned `name` of the operation. - // This field is deprecated, use name instead. - OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // The name (project, location, operation id) of the operation to get. - // Specified in the format 'projects/*/locations/*/operations/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *GetOperationRequest) Reset() { *m = GetOperationRequest{} } -func (m *GetOperationRequest) String() string { return proto.CompactTextString(m) } -func (*GetOperationRequest) ProtoMessage() {} -func (*GetOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *GetOperationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetOperationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetOperationRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *GetOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListOperationsRequest lists operations. -type ListOperationsRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine [zone](/compute/docs/zones#available) - // to return operations for, or `-` for all zones. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The parent (project and location) where the operations will be listed. - // Specified in the format 'projects/*/locations/*'. - // Location "-" matches all zones and all regions. - Parent string `protobuf:"bytes,4,opt,name=parent" json:"parent,omitempty"` -} - -func (m *ListOperationsRequest) Reset() { *m = ListOperationsRequest{} } -func (m *ListOperationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListOperationsRequest) ProtoMessage() {} -func (*ListOperationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *ListOperationsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListOperationsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ListOperationsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// CancelOperationRequest cancels a single operation. -type CancelOperationRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the operation resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The server-assigned `name` of the operation. - // This field is deprecated, use name instead. - OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - // The name (project, location, operation id) of the operation to cancel. - // Specified in the format 'projects/*/locations/*/operations/*'. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` -} - -func (m *CancelOperationRequest) Reset() { *m = CancelOperationRequest{} } -func (m *CancelOperationRequest) String() string { return proto.CompactTextString(m) } -func (*CancelOperationRequest) ProtoMessage() {} -func (*CancelOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *CancelOperationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CancelOperationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CancelOperationRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *CancelOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListOperationsResponse is the result of ListOperationsRequest. -type ListOperationsResponse struct { - // A list of operations in the project in the specified zone. - Operations []*Operation `protobuf:"bytes,1,rep,name=operations" json:"operations,omitempty"` - // If any zones are listed here, the list of operations returned - // may be missing the operations from those zones. - MissingZones []string `protobuf:"bytes,2,rep,name=missing_zones,json=missingZones" json:"missing_zones,omitempty"` -} - -func (m *ListOperationsResponse) Reset() { *m = ListOperationsResponse{} } -func (m *ListOperationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListOperationsResponse) ProtoMessage() {} -func (*ListOperationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *ListOperationsResponse) GetOperations() []*Operation { - if m != nil { - return m.Operations - } - return nil -} - -func (m *ListOperationsResponse) GetMissingZones() []string { - if m != nil { - return m.MissingZones - } - return nil -} - -// Gets the current Container Engine service configuration. -type GetServerConfigRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine [zone](/compute/docs/zones#available) - // to return operations for. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name (project and location) of the server config to get - // Specified in the format 'projects/*/locations/*'. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` -} - -func (m *GetServerConfigRequest) Reset() { *m = GetServerConfigRequest{} } -func (m *GetServerConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetServerConfigRequest) ProtoMessage() {} -func (*GetServerConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *GetServerConfigRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetServerConfigRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetServerConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Container Engine service configuration. -type ServerConfig struct { - // Version of Kubernetes the service deploys by default. - DefaultClusterVersion string `protobuf:"bytes,1,opt,name=default_cluster_version,json=defaultClusterVersion" json:"default_cluster_version,omitempty"` - // List of valid node upgrade target versions. - ValidNodeVersions []string `protobuf:"bytes,3,rep,name=valid_node_versions,json=validNodeVersions" json:"valid_node_versions,omitempty"` - // Default image type. - DefaultImageType string `protobuf:"bytes,4,opt,name=default_image_type,json=defaultImageType" json:"default_image_type,omitempty"` - // List of valid image types. - ValidImageTypes []string `protobuf:"bytes,5,rep,name=valid_image_types,json=validImageTypes" json:"valid_image_types,omitempty"` - // List of valid master versions. - ValidMasterVersions []string `protobuf:"bytes,6,rep,name=valid_master_versions,json=validMasterVersions" json:"valid_master_versions,omitempty"` -} - -func (m *ServerConfig) Reset() { *m = ServerConfig{} } -func (m *ServerConfig) String() string { return proto.CompactTextString(m) } -func (*ServerConfig) ProtoMessage() {} -func (*ServerConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *ServerConfig) GetDefaultClusterVersion() string { - if m != nil { - return m.DefaultClusterVersion - } - return "" -} - -func (m *ServerConfig) GetValidNodeVersions() []string { - if m != nil { - return m.ValidNodeVersions - } - return nil -} - -func (m *ServerConfig) GetDefaultImageType() string { - if m != nil { - return m.DefaultImageType - } - return "" -} - -func (m *ServerConfig) GetValidImageTypes() []string { - if m != nil { - return m.ValidImageTypes - } - return nil -} - -func (m *ServerConfig) GetValidMasterVersions() []string { - if m != nil { - return m.ValidMasterVersions - } - return nil -} - -// CreateNodePoolRequest creates a node pool for a cluster. -type CreateNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use parent instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The node pool to create. - NodePool *NodePool `protobuf:"bytes,4,opt,name=node_pool,json=nodePool" json:"node_pool,omitempty"` - // The parent (project, location, cluster id) where the node pool will be created. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Parent string `protobuf:"bytes,6,opt,name=parent" json:"parent,omitempty"` -} - -func (m *CreateNodePoolRequest) Reset() { *m = CreateNodePoolRequest{} } -func (m *CreateNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*CreateNodePoolRequest) ProtoMessage() {} -func (*CreateNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -func (m *CreateNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CreateNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *CreateNodePoolRequest) GetNodePool() *NodePool { - if m != nil { - return m.NodePool - } - return nil -} - -func (m *CreateNodePoolRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// DeleteNodePoolRequest deletes a node pool for a cluster. -type DeleteNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to delete. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The name (project, location, cluster, node pool id) of the node pool to delete. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteNodePoolRequest) Reset() { *m = DeleteNodePoolRequest{} } -func (m *DeleteNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteNodePoolRequest) ProtoMessage() {} -func (*DeleteNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -func (m *DeleteNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *DeleteNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *DeleteNodePoolRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *DeleteNodePoolRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListNodePoolsRequest lists the node pool(s) for a cluster. -type ListNodePoolsRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use parent instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use parent instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use parent instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The parent (project, location, cluster id) where the node pools will be listed. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Parent string `protobuf:"bytes,5,opt,name=parent" json:"parent,omitempty"` -} - -func (m *ListNodePoolsRequest) Reset() { *m = ListNodePoolsRequest{} } -func (m *ListNodePoolsRequest) String() string { return proto.CompactTextString(m) } -func (*ListNodePoolsRequest) ProtoMessage() {} -func (*ListNodePoolsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } - -func (m *ListNodePoolsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListNodePoolsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ListNodePoolsRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *ListNodePoolsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -// GetNodePoolRequest retrieves a node pool for a cluster. -type GetNodePoolRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The name (project, location, cluster, node pool id) of the node pool to get. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *GetNodePoolRequest) Reset() { *m = GetNodePoolRequest{} } -func (m *GetNodePoolRequest) String() string { return proto.CompactTextString(m) } -func (*GetNodePoolRequest) ProtoMessage() {} -func (*GetNodePoolRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } - -func (m *GetNodePoolRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetNodePoolRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *GetNodePoolRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *GetNodePoolRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *GetNodePoolRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// NodePool contains the name and configuration for a cluster's node pool. -// Node pools are a set of nodes (i.e. VM's), with a common configuration and -// specification, under the control of the cluster master. They may have a set -// of Kubernetes labels applied to them, which may be used to reference them -// during pod scheduling. They may also be resized up or down, to accommodate -// the workload. -type NodePool struct { - // The name of the node pool. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The node configuration of the pool. - Config *NodeConfig `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"` - // The initial node count for the pool. You must ensure that your - // Compute Engine <a href="/compute/docs/resource-quotas">resource quota</a> - // is sufficient for this number of instances. You must also have available - // firewall and routes quota. - InitialNodeCount int32 `protobuf:"varint,3,opt,name=initial_node_count,json=initialNodeCount" json:"initial_node_count,omitempty"` - // [Output only] Server-defined URL for the resource. - SelfLink string `protobuf:"bytes,100,opt,name=self_link,json=selfLink" json:"self_link,omitempty"` - // [Output only] The version of the Kubernetes of this node. - Version string `protobuf:"bytes,101,opt,name=version" json:"version,omitempty"` - // [Output only] The resource URLs of [instance - // groups](/compute/docs/instance-groups/) associated with this - // node pool. - InstanceGroupUrls []string `protobuf:"bytes,102,rep,name=instance_group_urls,json=instanceGroupUrls" json:"instance_group_urls,omitempty"` - // [Output only] The status of the nodes in this pool instance. - Status NodePool_Status `protobuf:"varint,103,opt,name=status,enum=google.container.v1beta1.NodePool_Status" json:"status,omitempty"` - // [Output only] Additional information about the current status of this - // node pool instance, if available. - StatusMessage string `protobuf:"bytes,104,opt,name=status_message,json=statusMessage" json:"status_message,omitempty"` - // Autoscaler configuration for this NodePool. Autoscaler is enabled - // only if a valid configuration is present. - Autoscaling *NodePoolAutoscaling `protobuf:"bytes,4,opt,name=autoscaling" json:"autoscaling,omitempty"` - // NodeManagement configuration for this NodePool. - Management *NodeManagement `protobuf:"bytes,5,opt,name=management" json:"management,omitempty"` -} - -func (m *NodePool) Reset() { *m = NodePool{} } -func (m *NodePool) String() string { return proto.CompactTextString(m) } -func (*NodePool) ProtoMessage() {} -func (*NodePool) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } - -func (m *NodePool) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *NodePool) GetConfig() *NodeConfig { - if m != nil { - return m.Config - } - return nil -} - -func (m *NodePool) GetInitialNodeCount() int32 { - if m != nil { - return m.InitialNodeCount - } - return 0 -} - -func (m *NodePool) GetSelfLink() string { - if m != nil { - return m.SelfLink - } - return "" -} - -func (m *NodePool) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func (m *NodePool) GetInstanceGroupUrls() []string { - if m != nil { - return m.InstanceGroupUrls - } - return nil -} - -func (m *NodePool) GetStatus() NodePool_Status { - if m != nil { - return m.Status - } - return NodePool_STATUS_UNSPECIFIED -} - -func (m *NodePool) GetStatusMessage() string { - if m != nil { - return m.StatusMessage - } - return "" -} - -func (m *NodePool) GetAutoscaling() *NodePoolAutoscaling { - if m != nil { - return m.Autoscaling - } - return nil -} - -func (m *NodePool) GetManagement() *NodeManagement { - if m != nil { - return m.Management - } - return nil -} - -// NodeManagement defines the set of node management services turned on for the -// node pool. -type NodeManagement struct { - // Whether the nodes will be automatically upgraded. - AutoUpgrade bool `protobuf:"varint,1,opt,name=auto_upgrade,json=autoUpgrade" json:"auto_upgrade,omitempty"` - // Whether the nodes will be automatically repaired. - AutoRepair bool `protobuf:"varint,2,opt,name=auto_repair,json=autoRepair" json:"auto_repair,omitempty"` - // Specifies the Auto Upgrade knobs for the node pool. - UpgradeOptions *AutoUpgradeOptions `protobuf:"bytes,10,opt,name=upgrade_options,json=upgradeOptions" json:"upgrade_options,omitempty"` -} - -func (m *NodeManagement) Reset() { *m = NodeManagement{} } -func (m *NodeManagement) String() string { return proto.CompactTextString(m) } -func (*NodeManagement) ProtoMessage() {} -func (*NodeManagement) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } - -func (m *NodeManagement) GetAutoUpgrade() bool { - if m != nil { - return m.AutoUpgrade - } - return false -} - -func (m *NodeManagement) GetAutoRepair() bool { - if m != nil { - return m.AutoRepair - } - return false -} - -func (m *NodeManagement) GetUpgradeOptions() *AutoUpgradeOptions { - if m != nil { - return m.UpgradeOptions - } - return nil -} - -// AutoUpgradeOptions defines the set of options for the user to control how -// the Auto Upgrades will proceed. -type AutoUpgradeOptions struct { - // [Output only] This field is set when upgrades are about to commence - // with the approximate start time for the upgrades, in - // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. - AutoUpgradeStartTime string `protobuf:"bytes,1,opt,name=auto_upgrade_start_time,json=autoUpgradeStartTime" json:"auto_upgrade_start_time,omitempty"` - // [Output only] This field is set when upgrades are about to commence - // with the description of the upgrade. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *AutoUpgradeOptions) Reset() { *m = AutoUpgradeOptions{} } -func (m *AutoUpgradeOptions) String() string { return proto.CompactTextString(m) } -func (*AutoUpgradeOptions) ProtoMessage() {} -func (*AutoUpgradeOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } - -func (m *AutoUpgradeOptions) GetAutoUpgradeStartTime() string { - if m != nil { - return m.AutoUpgradeStartTime - } - return "" -} - -func (m *AutoUpgradeOptions) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// MaintenancePolicy defines the maintenance policy to be used for the cluster. -type MaintenancePolicy struct { - // Specifies the maintenance window in which maintenance may be performed. - Window *MaintenanceWindow `protobuf:"bytes,1,opt,name=window" json:"window,omitempty"` -} - -func (m *MaintenancePolicy) Reset() { *m = MaintenancePolicy{} } -func (m *MaintenancePolicy) String() string { return proto.CompactTextString(m) } -func (*MaintenancePolicy) ProtoMessage() {} -func (*MaintenancePolicy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } - -func (m *MaintenancePolicy) GetWindow() *MaintenanceWindow { - if m != nil { - return m.Window - } - return nil -} - -// MaintenanceWindow defines the maintenance window to be used for the cluster. -type MaintenanceWindow struct { - // Unimplemented, reserved for future use. - // HourlyMaintenanceWindow hourly_maintenance_window = 1; - // - // Types that are valid to be assigned to Policy: - // *MaintenanceWindow_DailyMaintenanceWindow - Policy isMaintenanceWindow_Policy `protobuf_oneof:"policy"` -} - -func (m *MaintenanceWindow) Reset() { *m = MaintenanceWindow{} } -func (m *MaintenanceWindow) String() string { return proto.CompactTextString(m) } -func (*MaintenanceWindow) ProtoMessage() {} -func (*MaintenanceWindow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } - -type isMaintenanceWindow_Policy interface { - isMaintenanceWindow_Policy() -} - -type MaintenanceWindow_DailyMaintenanceWindow struct { - DailyMaintenanceWindow *DailyMaintenanceWindow `protobuf:"bytes,2,opt,name=daily_maintenance_window,json=dailyMaintenanceWindow,oneof"` -} - -func (*MaintenanceWindow_DailyMaintenanceWindow) isMaintenanceWindow_Policy() {} - -func (m *MaintenanceWindow) GetPolicy() isMaintenanceWindow_Policy { - if m != nil { - return m.Policy - } - return nil -} - -func (m *MaintenanceWindow) GetDailyMaintenanceWindow() *DailyMaintenanceWindow { - if x, ok := m.GetPolicy().(*MaintenanceWindow_DailyMaintenanceWindow); ok { - return x.DailyMaintenanceWindow - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*MaintenanceWindow) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _MaintenanceWindow_OneofMarshaler, _MaintenanceWindow_OneofUnmarshaler, _MaintenanceWindow_OneofSizer, []interface{}{ - (*MaintenanceWindow_DailyMaintenanceWindow)(nil), - } -} - -func _MaintenanceWindow_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*MaintenanceWindow) - // policy - switch x := m.Policy.(type) { - case *MaintenanceWindow_DailyMaintenanceWindow: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DailyMaintenanceWindow); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("MaintenanceWindow.Policy has unexpected type %T", x) - } - return nil -} - -func _MaintenanceWindow_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*MaintenanceWindow) - switch tag { - case 2: // policy.daily_maintenance_window - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DailyMaintenanceWindow) - err := b.DecodeMessage(msg) - m.Policy = &MaintenanceWindow_DailyMaintenanceWindow{msg} - return true, err - default: - return false, nil - } -} - -func _MaintenanceWindow_OneofSizer(msg proto.Message) (n int) { - m := msg.(*MaintenanceWindow) - // policy - switch x := m.Policy.(type) { - case *MaintenanceWindow_DailyMaintenanceWindow: - s := proto.Size(x.DailyMaintenanceWindow) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Time window specified for daily maintenance operations. -type DailyMaintenanceWindow struct { - // Time within the maintenance window to start the maintenance operations. - // It must be in format "HH:MM”, where HH : [00-23] and MM : [00-59] GMT. - StartTime string `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // [Output only] Duration of the time window, automatically chosen to be - // smallest possible in the given scenario. - Duration string `protobuf:"bytes,3,opt,name=duration" json:"duration,omitempty"` -} - -func (m *DailyMaintenanceWindow) Reset() { *m = DailyMaintenanceWindow{} } -func (m *DailyMaintenanceWindow) String() string { return proto.CompactTextString(m) } -func (*DailyMaintenanceWindow) ProtoMessage() {} -func (*DailyMaintenanceWindow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } - -func (m *DailyMaintenanceWindow) GetStartTime() string { - if m != nil { - return m.StartTime - } - return "" -} - -func (m *DailyMaintenanceWindow) GetDuration() string { - if m != nil { - return m.Duration - } - return "" -} - -// SetNodePoolManagementRequest sets the node management properties of a node -// pool. -type SetNodePoolManagementRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to update. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // NodeManagement configuration for the node pool. - Management *NodeManagement `protobuf:"bytes,5,opt,name=management" json:"management,omitempty"` - // The name (project, location, cluster, node pool id) of the node pool to set - // management properties. Specified in the format - // 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *SetNodePoolManagementRequest) Reset() { *m = SetNodePoolManagementRequest{} } -func (m *SetNodePoolManagementRequest) String() string { return proto.CompactTextString(m) } -func (*SetNodePoolManagementRequest) ProtoMessage() {} -func (*SetNodePoolManagementRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } - -func (m *SetNodePoolManagementRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *SetNodePoolManagementRequest) GetManagement() *NodeManagement { - if m != nil { - return m.Management - } - return nil -} - -func (m *SetNodePoolManagementRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed -// NodePool upgrade. This will be an no-op if the last upgrade successfully -// completed. -type RollbackNodePoolUpgradeRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to rollback. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name of the node pool to rollback. - // This field is deprecated, use name instead. - NodePoolId string `protobuf:"bytes,4,opt,name=node_pool_id,json=nodePoolId" json:"node_pool_id,omitempty"` - // The name (project, location, cluster, node pool id) of the node poll to - // rollback upgrade. - // Specified in the format 'projects/*/locations/*/clusters/*/nodePools/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *RollbackNodePoolUpgradeRequest) Reset() { *m = RollbackNodePoolUpgradeRequest{} } -func (m *RollbackNodePoolUpgradeRequest) String() string { return proto.CompactTextString(m) } -func (*RollbackNodePoolUpgradeRequest) ProtoMessage() {} -func (*RollbackNodePoolUpgradeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } - -func (m *RollbackNodePoolUpgradeRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetNodePoolId() string { - if m != nil { - return m.NodePoolId - } - return "" -} - -func (m *RollbackNodePoolUpgradeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// ListNodePoolsResponse is the result of ListNodePoolsRequest. -type ListNodePoolsResponse struct { - // A list of node pools for a cluster. - NodePools []*NodePool `protobuf:"bytes,1,rep,name=node_pools,json=nodePools" json:"node_pools,omitempty"` -} - -func (m *ListNodePoolsResponse) Reset() { *m = ListNodePoolsResponse{} } -func (m *ListNodePoolsResponse) String() string { return proto.CompactTextString(m) } -func (*ListNodePoolsResponse) ProtoMessage() {} -func (*ListNodePoolsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } - -func (m *ListNodePoolsResponse) GetNodePools() []*NodePool { - if m != nil { - return m.NodePools - } - return nil -} - -// NodePoolAutoscaling contains information required by cluster autoscaler to -// adjust the size of the node pool to the current cluster usage. -type NodePoolAutoscaling struct { - // Is autoscaling enabled for this node pool. - Enabled bool `protobuf:"varint,1,opt,name=enabled" json:"enabled,omitempty"` - // Minimum number of nodes in the NodePool. Must be >= 1 and <= - // max_node_count. - MinNodeCount int32 `protobuf:"varint,2,opt,name=min_node_count,json=minNodeCount" json:"min_node_count,omitempty"` - // Maximum number of nodes in the NodePool. Must be >= min_node_count. There - // has to enough quota to scale up the cluster. - MaxNodeCount int32 `protobuf:"varint,3,opt,name=max_node_count,json=maxNodeCount" json:"max_node_count,omitempty"` -} - -func (m *NodePoolAutoscaling) Reset() { *m = NodePoolAutoscaling{} } -func (m *NodePoolAutoscaling) String() string { return proto.CompactTextString(m) } -func (*NodePoolAutoscaling) ProtoMessage() {} -func (*NodePoolAutoscaling) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } - -func (m *NodePoolAutoscaling) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *NodePoolAutoscaling) GetMinNodeCount() int32 { - if m != nil { - return m.MinNodeCount - } - return 0 -} - -func (m *NodePoolAutoscaling) GetMaxNodeCount() int32 { - if m != nil { - return m.MaxNodeCount - } - return 0 -} - -// SetLabelsRequest sets the Google Cloud Platform labels on a Google Container -// Engine cluster, which will in turn set them for Google Compute Engine -// resources used by that cluster -type SetLabelsRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The labels to set for that cluster. - ResourceLabels map[string]string `protobuf:"bytes,4,rep,name=resource_labels,json=resourceLabels" json:"resource_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The fingerprint of the previous set of labels for this resource, - // used to detect conflicts. The fingerprint is initially generated by - // Container Engine and changes after every request to modify or update - // labels. You must always provide an up-to-date fingerprint hash when - // updating or changing labels. Make a <code>get()</code> request to the - // resource to get the latest fingerprint. - LabelFingerprint string `protobuf:"bytes,5,opt,name=label_fingerprint,json=labelFingerprint" json:"label_fingerprint,omitempty"` - // The name (project, location, cluster id) of the cluster to set labels. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *SetLabelsRequest) Reset() { *m = SetLabelsRequest{} } -func (m *SetLabelsRequest) String() string { return proto.CompactTextString(m) } -func (*SetLabelsRequest) ProtoMessage() {} -func (*SetLabelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } - -func (m *SetLabelsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLabelsRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLabelsRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLabelsRequest) GetResourceLabels() map[string]string { - if m != nil { - return m.ResourceLabels - } - return nil -} - -func (m *SetLabelsRequest) GetLabelFingerprint() string { - if m != nil { - return m.LabelFingerprint - } - return "" -} - -func (m *SetLabelsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for -// a cluster. -type SetLegacyAbacRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // Whether ABAC authorization will be enabled in the cluster. - Enabled bool `protobuf:"varint,4,opt,name=enabled" json:"enabled,omitempty"` - // The name (project, location, cluster id) of the cluster to set legacy abac. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *SetLegacyAbacRequest) Reset() { *m = SetLegacyAbacRequest{} } -func (m *SetLegacyAbacRequest) String() string { return proto.CompactTextString(m) } -func (*SetLegacyAbacRequest) ProtoMessage() {} -func (*SetLegacyAbacRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } - -func (m *SetLegacyAbacRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetLegacyAbacRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetLegacyAbacRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetLegacyAbacRequest) GetEnabled() bool { - if m != nil { - return m.Enabled - } - return false -} - -func (m *SetLegacyAbacRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// StartIPRotationRequest creates a new IP for the cluster and then performs -// a node upgrade on each node pool to point to the new IP. -type StartIPRotationRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name (project, location, cluster id) of the cluster to start IP rotation. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *StartIPRotationRequest) Reset() { *m = StartIPRotationRequest{} } -func (m *StartIPRotationRequest) String() string { return proto.CompactTextString(m) } -func (*StartIPRotationRequest) ProtoMessage() {} -func (*StartIPRotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } - -func (m *StartIPRotationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *StartIPRotationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *StartIPRotationRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *StartIPRotationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// CompleteIPRotationRequest moves the cluster master back into single-IP mode. -type CompleteIPRotationRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The name (project, location, cluster id) of the cluster to complete IP rotation. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` -} - -func (m *CompleteIPRotationRequest) Reset() { *m = CompleteIPRotationRequest{} } -func (m *CompleteIPRotationRequest) String() string { return proto.CompactTextString(m) } -func (*CompleteIPRotationRequest) ProtoMessage() {} -func (*CompleteIPRotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } - -func (m *CompleteIPRotationRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CompleteIPRotationRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *CompleteIPRotationRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *CompleteIPRotationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// AcceleratorConfig represents a Hardware Accelerator request. -type AcceleratorConfig struct { - // The number of the accelerator cards exposed to an instance. - AcceleratorCount int64 `protobuf:"varint,1,opt,name=accelerator_count,json=acceleratorCount" json:"accelerator_count,omitempty"` - // The accelerator type resource name. List of supported accelerators - // [here](/compute/docs/gpus/#Introduction) - AcceleratorType string `protobuf:"bytes,2,opt,name=accelerator_type,json=acceleratorType" json:"accelerator_type,omitempty"` -} - -func (m *AcceleratorConfig) Reset() { *m = AcceleratorConfig{} } -func (m *AcceleratorConfig) String() string { return proto.CompactTextString(m) } -func (*AcceleratorConfig) ProtoMessage() {} -func (*AcceleratorConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } - -func (m *AcceleratorConfig) GetAcceleratorCount() int64 { - if m != nil { - return m.AcceleratorCount - } - return 0 -} - -func (m *AcceleratorConfig) GetAcceleratorType() string { - if m != nil { - return m.AcceleratorType - } - return "" -} - -// SetNetworkPolicyRequest enables/disables network policy for a cluster. -type SetNetworkPolicyRequest struct { - // The Google Developers Console [project ID or project - // number](https://developers.google.com/console/help/new/#projectnumber). - // This field is deprecated, use name instead. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - // This field is deprecated, use name instead. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster. - // This field is deprecated, use name instead. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // Configuration options for the NetworkPolicy feature. - NetworkPolicy *NetworkPolicy `protobuf:"bytes,4,opt,name=network_policy,json=networkPolicy" json:"network_policy,omitempty"` - // The name (project, location, cluster id) of the cluster to set networking policy. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"` -} - -func (m *SetNetworkPolicyRequest) Reset() { *m = SetNetworkPolicyRequest{} } -func (m *SetNetworkPolicyRequest) String() string { return proto.CompactTextString(m) } -func (*SetNetworkPolicyRequest) ProtoMessage() {} -func (*SetNetworkPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } - -func (m *SetNetworkPolicyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetNetworkPolicyRequest) GetNetworkPolicy() *NetworkPolicy { - if m != nil { - return m.NetworkPolicy - } - return nil -} - -func (m *SetNetworkPolicyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// SetMaintenancePolicyRequest sets the maintenance policy for a cluster. -type SetMaintenancePolicyRequest struct { - // The Google Developers Console [project ID or project - // number](https://support.google.com/cloud/answer/6158840). - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the Google Compute Engine - // [zone](/compute/docs/zones#available) in which the cluster - // resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The name of the cluster to update. - ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId" json:"cluster_id,omitempty"` - // The maintenance policy to be set for the cluster. An empty field - // clears the existing maintenance policy. - MaintenancePolicy *MaintenancePolicy `protobuf:"bytes,4,opt,name=maintenance_policy,json=maintenancePolicy" json:"maintenance_policy,omitempty"` - // The name (project, location, cluster id) of the cluster to set maintenance - // policy. - // Specified in the format 'projects/*/locations/*/clusters/*'. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` -} - -func (m *SetMaintenancePolicyRequest) Reset() { *m = SetMaintenancePolicyRequest{} } -func (m *SetMaintenancePolicyRequest) String() string { return proto.CompactTextString(m) } -func (*SetMaintenancePolicyRequest) ProtoMessage() {} -func (*SetMaintenancePolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } - -func (m *SetMaintenancePolicyRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetClusterId() string { - if m != nil { - return m.ClusterId - } - return "" -} - -func (m *SetMaintenancePolicyRequest) GetMaintenancePolicy() *MaintenancePolicy { - if m != nil { - return m.MaintenancePolicy - } - return nil -} - -func (m *SetMaintenancePolicyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*NodeConfig)(nil), "google.container.v1beta1.NodeConfig") - proto.RegisterType((*NodeTaint)(nil), "google.container.v1beta1.NodeTaint") - proto.RegisterType((*MasterAuth)(nil), "google.container.v1beta1.MasterAuth") - proto.RegisterType((*ClientCertificateConfig)(nil), "google.container.v1beta1.ClientCertificateConfig") - proto.RegisterType((*AddonsConfig)(nil), "google.container.v1beta1.AddonsConfig") - proto.RegisterType((*HttpLoadBalancing)(nil), "google.container.v1beta1.HttpLoadBalancing") - proto.RegisterType((*HorizontalPodAutoscaling)(nil), "google.container.v1beta1.HorizontalPodAutoscaling") - proto.RegisterType((*KubernetesDashboard)(nil), "google.container.v1beta1.KubernetesDashboard") - proto.RegisterType((*NetworkPolicyConfig)(nil), "google.container.v1beta1.NetworkPolicyConfig") - proto.RegisterType((*MasterAuthorizedNetworksConfig)(nil), "google.container.v1beta1.MasterAuthorizedNetworksConfig") - proto.RegisterType((*MasterAuthorizedNetworksConfig_CidrBlock)(nil), "google.container.v1beta1.MasterAuthorizedNetworksConfig.CidrBlock") - proto.RegisterType((*NetworkPolicy)(nil), "google.container.v1beta1.NetworkPolicy") - proto.RegisterType((*IPAllocationPolicy)(nil), "google.container.v1beta1.IPAllocationPolicy") - proto.RegisterType((*PodSecurityPolicyConfig)(nil), "google.container.v1beta1.PodSecurityPolicyConfig") - proto.RegisterType((*Cluster)(nil), "google.container.v1beta1.Cluster") - proto.RegisterType((*ClusterUpdate)(nil), "google.container.v1beta1.ClusterUpdate") - proto.RegisterType((*Operation)(nil), "google.container.v1beta1.Operation") - proto.RegisterType((*CreateClusterRequest)(nil), "google.container.v1beta1.CreateClusterRequest") - proto.RegisterType((*GetClusterRequest)(nil), "google.container.v1beta1.GetClusterRequest") - proto.RegisterType((*UpdateClusterRequest)(nil), "google.container.v1beta1.UpdateClusterRequest") - proto.RegisterType((*SetMasterAuthRequest)(nil), "google.container.v1beta1.SetMasterAuthRequest") - proto.RegisterType((*DeleteClusterRequest)(nil), "google.container.v1beta1.DeleteClusterRequest") - proto.RegisterType((*ListClustersRequest)(nil), "google.container.v1beta1.ListClustersRequest") - proto.RegisterType((*ListClustersResponse)(nil), "google.container.v1beta1.ListClustersResponse") - proto.RegisterType((*GetOperationRequest)(nil), "google.container.v1beta1.GetOperationRequest") - proto.RegisterType((*ListOperationsRequest)(nil), "google.container.v1beta1.ListOperationsRequest") - proto.RegisterType((*CancelOperationRequest)(nil), "google.container.v1beta1.CancelOperationRequest") - proto.RegisterType((*ListOperationsResponse)(nil), "google.container.v1beta1.ListOperationsResponse") - proto.RegisterType((*GetServerConfigRequest)(nil), "google.container.v1beta1.GetServerConfigRequest") - proto.RegisterType((*ServerConfig)(nil), "google.container.v1beta1.ServerConfig") - proto.RegisterType((*CreateNodePoolRequest)(nil), "google.container.v1beta1.CreateNodePoolRequest") - proto.RegisterType((*DeleteNodePoolRequest)(nil), "google.container.v1beta1.DeleteNodePoolRequest") - proto.RegisterType((*ListNodePoolsRequest)(nil), "google.container.v1beta1.ListNodePoolsRequest") - proto.RegisterType((*GetNodePoolRequest)(nil), "google.container.v1beta1.GetNodePoolRequest") - proto.RegisterType((*NodePool)(nil), "google.container.v1beta1.NodePool") - proto.RegisterType((*NodeManagement)(nil), "google.container.v1beta1.NodeManagement") - proto.RegisterType((*AutoUpgradeOptions)(nil), "google.container.v1beta1.AutoUpgradeOptions") - proto.RegisterType((*MaintenancePolicy)(nil), "google.container.v1beta1.MaintenancePolicy") - proto.RegisterType((*MaintenanceWindow)(nil), "google.container.v1beta1.MaintenanceWindow") - proto.RegisterType((*DailyMaintenanceWindow)(nil), "google.container.v1beta1.DailyMaintenanceWindow") - proto.RegisterType((*SetNodePoolManagementRequest)(nil), "google.container.v1beta1.SetNodePoolManagementRequest") - proto.RegisterType((*RollbackNodePoolUpgradeRequest)(nil), "google.container.v1beta1.RollbackNodePoolUpgradeRequest") - proto.RegisterType((*ListNodePoolsResponse)(nil), "google.container.v1beta1.ListNodePoolsResponse") - proto.RegisterType((*NodePoolAutoscaling)(nil), "google.container.v1beta1.NodePoolAutoscaling") - proto.RegisterType((*SetLabelsRequest)(nil), "google.container.v1beta1.SetLabelsRequest") - proto.RegisterType((*SetLegacyAbacRequest)(nil), "google.container.v1beta1.SetLegacyAbacRequest") - proto.RegisterType((*StartIPRotationRequest)(nil), "google.container.v1beta1.StartIPRotationRequest") - proto.RegisterType((*CompleteIPRotationRequest)(nil), "google.container.v1beta1.CompleteIPRotationRequest") - proto.RegisterType((*AcceleratorConfig)(nil), "google.container.v1beta1.AcceleratorConfig") - proto.RegisterType((*SetNetworkPolicyRequest)(nil), "google.container.v1beta1.SetNetworkPolicyRequest") - proto.RegisterType((*SetMaintenancePolicyRequest)(nil), "google.container.v1beta1.SetMaintenancePolicyRequest") - proto.RegisterEnum("google.container.v1beta1.NodeTaint_Effect", NodeTaint_Effect_name, NodeTaint_Effect_value) - proto.RegisterEnum("google.container.v1beta1.NetworkPolicy_Provider", NetworkPolicy_Provider_name, NetworkPolicy_Provider_value) - proto.RegisterEnum("google.container.v1beta1.Cluster_Status", Cluster_Status_name, Cluster_Status_value) - proto.RegisterEnum("google.container.v1beta1.Operation_Status", Operation_Status_name, Operation_Status_value) - proto.RegisterEnum("google.container.v1beta1.Operation_Type", Operation_Type_name, Operation_Type_value) - proto.RegisterEnum("google.container.v1beta1.SetMasterAuthRequest_Action", SetMasterAuthRequest_Action_name, SetMasterAuthRequest_Action_value) - proto.RegisterEnum("google.container.v1beta1.NodePool_Status", NodePool_Status_name, NodePool_Status_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ClusterManager service - -type ClusterManagerClient interface { - // Lists all clusters owned by a project in either the specified zone or all - // zones. - ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) - // Gets the details of a specific cluster. - GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) - // Creates a cluster, consisting of the specified number and type of Google - // Compute Engine instances. - // - // By default, the cluster is created in the project's - // [default network](/compute/docs/networks-and-firewalls#networks). - // - // One firewall is added for the cluster. After cluster creation, - // the cluster creates routes for each node to allow the containers - // on that node to communicate with all other instances in the - // cluster. - // - // Finally, an entry is added to the project's global metadata indicating - // which CIDR range is being used by the cluster. - CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Updates the settings of a specific cluster. - UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Used to set master auth materials. Currently supports :- - // Changing the admin password of a specific cluster. - // This can be either via password generation or explicitly set. - // Modify basic_auth.csv and reset the K8S API server. - SetMasterAuth(ctx context.Context, in *SetMasterAuthRequest, opts ...grpc.CallOption) (*Operation, error) - // Deletes the cluster, including the Kubernetes endpoint and all worker - // nodes. - // - // Firewalls and routes that were configured during cluster creation - // are also deleted. - // - // Other Google Compute Engine resources that might be in use by the cluster - // (e.g. load balancer resources) will not be deleted if they weren't present - // at the initial create time. - DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error) - // Lists all operations in a project in a specific zone or all zones. - ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) - // Gets the specified operation. - GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) - // Cancels the specified operation. - CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Returns configuration info about the Container Engine service. - GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error) - // Lists the node pools for a cluster. - ListNodePools(ctx context.Context, in *ListNodePoolsRequest, opts ...grpc.CallOption) (*ListNodePoolsResponse, error) - // Retrieves the node pool requested. - GetNodePool(ctx context.Context, in *GetNodePoolRequest, opts ...grpc.CallOption) (*NodePool, error) - // Creates a node pool for a cluster. - CreateNodePool(ctx context.Context, in *CreateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) - // Deletes a node pool from a cluster. - DeleteNodePool(ctx context.Context, in *DeleteNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) - // Roll back the previously Aborted or Failed NodePool upgrade. - // This will be an no-op if the last upgrade successfully completed. - RollbackNodePoolUpgrade(ctx context.Context, in *RollbackNodePoolUpgradeRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the NodeManagement options for a node pool. - SetNodePoolManagement(ctx context.Context, in *SetNodePoolManagementRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets labels on a cluster. - SetLabels(ctx context.Context, in *SetLabelsRequest, opts ...grpc.CallOption) (*Operation, error) - // Enables or disables the ABAC authorization mechanism on a cluster. - SetLegacyAbac(ctx context.Context, in *SetLegacyAbacRequest, opts ...grpc.CallOption) (*Operation, error) - // Start master IP rotation. - StartIPRotation(ctx context.Context, in *StartIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) - // Completes master IP rotation. - CompleteIPRotation(ctx context.Context, in *CompleteIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) - // Enables/Disables Network Policy for a cluster. - SetNetworkPolicy(ctx context.Context, in *SetNetworkPolicyRequest, opts ...grpc.CallOption) (*Operation, error) - // Sets the maintenance policy for a cluster. - SetMaintenancePolicy(ctx context.Context, in *SetMaintenancePolicyRequest, opts ...grpc.CallOption) (*Operation, error) -} - -type clusterManagerClient struct { - cc *grpc.ClientConn -} - -func NewClusterManagerClient(cc *grpc.ClientConn) ClusterManagerClient { - return &clusterManagerClient{cc} -} - -func (c *clusterManagerClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) { - out := new(ListClustersResponse) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/ListClusters", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { - out := new(Cluster) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/GetCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/CreateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/UpdateCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetMasterAuth(ctx context.Context, in *SetMasterAuthRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/SetMasterAuth", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/DeleteCluster", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) { - out := new(ListOperationsResponse) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/ListOperations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/GetOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/CancelOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetServerConfig(ctx context.Context, in *GetServerConfigRequest, opts ...grpc.CallOption) (*ServerConfig, error) { - out := new(ServerConfig) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/GetServerConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) ListNodePools(ctx context.Context, in *ListNodePoolsRequest, opts ...grpc.CallOption) (*ListNodePoolsResponse, error) { - out := new(ListNodePoolsResponse) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/ListNodePools", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) GetNodePool(ctx context.Context, in *GetNodePoolRequest, opts ...grpc.CallOption) (*NodePool, error) { - out := new(NodePool) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/GetNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CreateNodePool(ctx context.Context, in *CreateNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/CreateNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) DeleteNodePool(ctx context.Context, in *DeleteNodePoolRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/DeleteNodePool", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) RollbackNodePoolUpgrade(ctx context.Context, in *RollbackNodePoolUpgradeRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/RollbackNodePoolUpgrade", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNodePoolManagement(ctx context.Context, in *SetNodePoolManagementRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/SetNodePoolManagement", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLabels(ctx context.Context, in *SetLabelsRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/SetLabels", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetLegacyAbac(ctx context.Context, in *SetLegacyAbacRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/SetLegacyAbac", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) StartIPRotation(ctx context.Context, in *StartIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/StartIPRotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) CompleteIPRotation(ctx context.Context, in *CompleteIPRotationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/CompleteIPRotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetNetworkPolicy(ctx context.Context, in *SetNetworkPolicyRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/SetNetworkPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *clusterManagerClient) SetMaintenancePolicy(ctx context.Context, in *SetMaintenancePolicyRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.container.v1beta1.ClusterManager/SetMaintenancePolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ClusterManager service - -type ClusterManagerServer interface { - // Lists all clusters owned by a project in either the specified zone or all - // zones. - ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) - // Gets the details of a specific cluster. - GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) - // Creates a cluster, consisting of the specified number and type of Google - // Compute Engine instances. - // - // By default, the cluster is created in the project's - // [default network](/compute/docs/networks-and-firewalls#networks). - // - // One firewall is added for the cluster. After cluster creation, - // the cluster creates routes for each node to allow the containers - // on that node to communicate with all other instances in the - // cluster. - // - // Finally, an entry is added to the project's global metadata indicating - // which CIDR range is being used by the cluster. - CreateCluster(context.Context, *CreateClusterRequest) (*Operation, error) - // Updates the settings of a specific cluster. - UpdateCluster(context.Context, *UpdateClusterRequest) (*Operation, error) - // Used to set master auth materials. Currently supports :- - // Changing the admin password of a specific cluster. - // This can be either via password generation or explicitly set. - // Modify basic_auth.csv and reset the K8S API server. - SetMasterAuth(context.Context, *SetMasterAuthRequest) (*Operation, error) - // Deletes the cluster, including the Kubernetes endpoint and all worker - // nodes. - // - // Firewalls and routes that were configured during cluster creation - // are also deleted. - // - // Other Google Compute Engine resources that might be in use by the cluster - // (e.g. load balancer resources) will not be deleted if they weren't present - // at the initial create time. - DeleteCluster(context.Context, *DeleteClusterRequest) (*Operation, error) - // Lists all operations in a project in a specific zone or all zones. - ListOperations(context.Context, *ListOperationsRequest) (*ListOperationsResponse, error) - // Gets the specified operation. - GetOperation(context.Context, *GetOperationRequest) (*Operation, error) - // Cancels the specified operation. - CancelOperation(context.Context, *CancelOperationRequest) (*google_protobuf1.Empty, error) - // Returns configuration info about the Container Engine service. - GetServerConfig(context.Context, *GetServerConfigRequest) (*ServerConfig, error) - // Lists the node pools for a cluster. - ListNodePools(context.Context, *ListNodePoolsRequest) (*ListNodePoolsResponse, error) - // Retrieves the node pool requested. - GetNodePool(context.Context, *GetNodePoolRequest) (*NodePool, error) - // Creates a node pool for a cluster. - CreateNodePool(context.Context, *CreateNodePoolRequest) (*Operation, error) - // Deletes a node pool from a cluster. - DeleteNodePool(context.Context, *DeleteNodePoolRequest) (*Operation, error) - // Roll back the previously Aborted or Failed NodePool upgrade. - // This will be an no-op if the last upgrade successfully completed. - RollbackNodePoolUpgrade(context.Context, *RollbackNodePoolUpgradeRequest) (*Operation, error) - // Sets the NodeManagement options for a node pool. - SetNodePoolManagement(context.Context, *SetNodePoolManagementRequest) (*Operation, error) - // Sets labels on a cluster. - SetLabels(context.Context, *SetLabelsRequest) (*Operation, error) - // Enables or disables the ABAC authorization mechanism on a cluster. - SetLegacyAbac(context.Context, *SetLegacyAbacRequest) (*Operation, error) - // Start master IP rotation. - StartIPRotation(context.Context, *StartIPRotationRequest) (*Operation, error) - // Completes master IP rotation. - CompleteIPRotation(context.Context, *CompleteIPRotationRequest) (*Operation, error) - // Enables/Disables Network Policy for a cluster. - SetNetworkPolicy(context.Context, *SetNetworkPolicyRequest) (*Operation, error) - // Sets the maintenance policy for a cluster. - SetMaintenancePolicy(context.Context, *SetMaintenancePolicyRequest) (*Operation, error) -} - -func RegisterClusterManagerServer(s *grpc.Server, srv ClusterManagerServer) { - s.RegisterService(&_ClusterManager_serviceDesc, srv) -} - -func _ClusterManager_ListClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListClustersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListClusters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/ListClusters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListClusters(ctx, req.(*ListClustersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/GetCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetCluster(ctx, req.(*GetClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CreateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CreateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/CreateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CreateCluster(ctx, req.(*CreateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).UpdateCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/UpdateCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).UpdateCluster(ctx, req.(*UpdateClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetMasterAuth_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMasterAuthRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetMasterAuth(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/SetMasterAuth", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetMasterAuth(ctx, req.(*SetMasterAuthRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_DeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteClusterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).DeleteCluster(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/DeleteCluster", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).DeleteCluster(ctx, req.(*DeleteClusterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_ListOperations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOperationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListOperations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/ListOperations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListOperations(ctx, req.(*ListOperationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/GetOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetOperation(ctx, req.(*GetOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CancelOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CancelOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/CancelOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CancelOperation(ctx, req.(*CancelOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetServerConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServerConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetServerConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/GetServerConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetServerConfig(ctx, req.(*GetServerConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_ListNodePools_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNodePoolsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).ListNodePools(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/ListNodePools", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).ListNodePools(ctx, req.(*ListNodePoolsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_GetNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).GetNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/GetNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).GetNodePool(ctx, req.(*GetNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CreateNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CreateNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/CreateNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CreateNodePool(ctx, req.(*CreateNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_DeleteNodePool_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteNodePoolRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).DeleteNodePool(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/DeleteNodePool", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).DeleteNodePool(ctx, req.(*DeleteNodePoolRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_RollbackNodePoolUpgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RollbackNodePoolUpgradeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).RollbackNodePoolUpgrade(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/RollbackNodePoolUpgrade", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).RollbackNodePoolUpgrade(ctx, req.(*RollbackNodePoolUpgradeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNodePoolManagement_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNodePoolManagementRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNodePoolManagement(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/SetNodePoolManagement", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNodePoolManagement(ctx, req.(*SetNodePoolManagementRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLabels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLabelsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLabels(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/SetLabels", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLabels(ctx, req.(*SetLabelsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetLegacyAbac_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetLegacyAbacRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetLegacyAbac(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/SetLegacyAbac", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetLegacyAbac(ctx, req.(*SetLegacyAbacRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_StartIPRotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StartIPRotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).StartIPRotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/StartIPRotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).StartIPRotation(ctx, req.(*StartIPRotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_CompleteIPRotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CompleteIPRotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).CompleteIPRotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/CompleteIPRotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).CompleteIPRotation(ctx, req.(*CompleteIPRotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetNetworkPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetNetworkPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetNetworkPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/SetNetworkPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetNetworkPolicy(ctx, req.(*SetNetworkPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ClusterManager_SetMaintenancePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMaintenancePolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ClusterManagerServer).SetMaintenancePolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.container.v1beta1.ClusterManager/SetMaintenancePolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ClusterManagerServer).SetMaintenancePolicy(ctx, req.(*SetMaintenancePolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ClusterManager_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.container.v1beta1.ClusterManager", - HandlerType: (*ClusterManagerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListClusters", - Handler: _ClusterManager_ListClusters_Handler, - }, - { - MethodName: "GetCluster", - Handler: _ClusterManager_GetCluster_Handler, - }, - { - MethodName: "CreateCluster", - Handler: _ClusterManager_CreateCluster_Handler, - }, - { - MethodName: "UpdateCluster", - Handler: _ClusterManager_UpdateCluster_Handler, - }, - { - MethodName: "SetMasterAuth", - Handler: _ClusterManager_SetMasterAuth_Handler, - }, - { - MethodName: "DeleteCluster", - Handler: _ClusterManager_DeleteCluster_Handler, - }, - { - MethodName: "ListOperations", - Handler: _ClusterManager_ListOperations_Handler, - }, - { - MethodName: "GetOperation", - Handler: _ClusterManager_GetOperation_Handler, - }, - { - MethodName: "CancelOperation", - Handler: _ClusterManager_CancelOperation_Handler, - }, - { - MethodName: "GetServerConfig", - Handler: _ClusterManager_GetServerConfig_Handler, - }, - { - MethodName: "ListNodePools", - Handler: _ClusterManager_ListNodePools_Handler, - }, - { - MethodName: "GetNodePool", - Handler: _ClusterManager_GetNodePool_Handler, - }, - { - MethodName: "CreateNodePool", - Handler: _ClusterManager_CreateNodePool_Handler, - }, - { - MethodName: "DeleteNodePool", - Handler: _ClusterManager_DeleteNodePool_Handler, - }, - { - MethodName: "RollbackNodePoolUpgrade", - Handler: _ClusterManager_RollbackNodePoolUpgrade_Handler, - }, - { - MethodName: "SetNodePoolManagement", - Handler: _ClusterManager_SetNodePoolManagement_Handler, - }, - { - MethodName: "SetLabels", - Handler: _ClusterManager_SetLabels_Handler, - }, - { - MethodName: "SetLegacyAbac", - Handler: _ClusterManager_SetLegacyAbac_Handler, - }, - { - MethodName: "StartIPRotation", - Handler: _ClusterManager_StartIPRotation_Handler, - }, - { - MethodName: "CompleteIPRotation", - Handler: _ClusterManager_CompleteIPRotation_Handler, - }, - { - MethodName: "SetNetworkPolicy", - Handler: _ClusterManager_SetNetworkPolicy_Handler, - }, - { - MethodName: "SetMaintenancePolicy", - Handler: _ClusterManager_SetMaintenancePolicy_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/container/v1beta1/cluster_service.proto", -} - -func init() { proto.RegisterFile("google/container/v1beta1/cluster_service.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 4381 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x5b, 0x6c, 0xe3, 0x56, - 0x7a, 0xf0, 0xd2, 0x17, 0xd9, 0xfa, 0x24, 0xcb, 0xf2, 0xf1, 0x4d, 0x51, 0x26, 0x93, 0x09, 0x93, - 0x4d, 0x26, 0x4e, 0x22, 0xcf, 0x25, 0x99, 0x3f, 0x3b, 0x93, 0xfc, 0xa9, 0x2c, 0x73, 0x6c, 0x75, - 0x6c, 0x49, 0xa5, 0xec, 0x99, 0xcd, 0x34, 0x28, 0x97, 0x26, 0x8f, 0x65, 0xae, 0x29, 0x92, 0x4b, - 0x52, 0x93, 0x78, 0xb6, 0x69, 0xbb, 0xdb, 0xbe, 0xf5, 0xad, 0x05, 0xda, 0x97, 0xa2, 0x01, 0xb6, - 0x40, 0x91, 0xde, 0x80, 0x7d, 0x69, 0x17, 0x2d, 0x50, 0x14, 0x28, 0xd0, 0x97, 0xb6, 0x40, 0xd1, - 0xf6, 0xb1, 0x28, 0xfa, 0xb2, 0xcf, 0x6d, 0x9f, 0x5b, 0x14, 0x28, 0xce, 0x85, 0x14, 0x29, 0x51, - 0x94, 0x6c, 0xaf, 0xd3, 0x7d, 0x13, 0xbf, 0x73, 0xbe, 0xf3, 0x5d, 0xf8, 0xdd, 0x79, 0x6c, 0xa8, - 0x74, 0x6c, 0xbb, 0x63, 0xe2, 0x4d, 0xcd, 0xb6, 0x7c, 0xd5, 0xb0, 0xb0, 0xbb, 0xf9, 0xec, 0xf6, - 0x11, 0xf6, 0xd5, 0xdb, 0x9b, 0x9a, 0xd9, 0xf3, 0x7c, 0xec, 0x2a, 0x1e, 0x76, 0x9f, 0x19, 0x1a, - 0xae, 0x38, 0xae, 0xed, 0xdb, 0xa8, 0xc4, 0xf6, 0x57, 0xc2, 0xfd, 0x15, 0xbe, 0xbf, 0x7c, 0x8d, - 0x9f, 0xa4, 0x3a, 0xc6, 0xa6, 0x6a, 0x59, 0xb6, 0xaf, 0xfa, 0x86, 0x6d, 0x79, 0x0c, 0xaf, 0xfc, - 0x22, 0x5f, 0xa5, 0x4f, 0x47, 0xbd, 0xe3, 0x4d, 0xdc, 0x75, 0xfc, 0x33, 0xb6, 0x28, 0xfe, 0x78, - 0x16, 0xa0, 0x61, 0xeb, 0xb8, 0x66, 0x5b, 0xc7, 0x46, 0x07, 0xbd, 0x02, 0xf9, 0xae, 0xaa, 0x9d, - 0x18, 0x16, 0x56, 0xfc, 0x33, 0x07, 0x97, 0x84, 0x1b, 0xc2, 0xcd, 0xac, 0x9c, 0xe3, 0xb0, 0x83, - 0x33, 0x07, 0xa3, 0x1b, 0x90, 0xd7, 0x0d, 0xef, 0x54, 0xf1, 0x8c, 0xe7, 0x58, 0xe9, 0x1c, 0x95, - 0xa6, 0x6e, 0x08, 0x37, 0x67, 0x65, 0x20, 0xb0, 0xb6, 0xf1, 0x1c, 0xef, 0x1c, 0x91, 0x43, 0x6c, - 0xb5, 0xe7, 0x9f, 0x28, 0x9e, 0x66, 0x3b, 0xd8, 0x2b, 0x4d, 0xdf, 0x98, 0x26, 0x87, 0x50, 0x58, - 0x9b, 0x82, 0xd0, 0x1b, 0xb0, 0xc8, 0x85, 0x53, 0x54, 0x4d, 0xb3, 0x7b, 0x96, 0x5f, 0xca, 0x52, - 0x52, 0x05, 0x0e, 0xae, 0x32, 0x28, 0x6a, 0xc0, 0x7c, 0x17, 0xfb, 0xaa, 0xae, 0xfa, 0x6a, 0x69, - 0xe6, 0xc6, 0xf4, 0xcd, 0xdc, 0x9d, 0x3b, 0x95, 0x51, 0x7a, 0xa8, 0xf4, 0x05, 0xa9, 0xec, 0x73, - 0x24, 0xc9, 0xf2, 0xdd, 0x33, 0x39, 0x3c, 0x03, 0xbd, 0x04, 0x60, 0x74, 0xd5, 0x0e, 0x17, 0x6f, - 0x96, 0xd2, 0xcc, 0x52, 0x08, 0x15, 0x6e, 0x17, 0x32, 0xa6, 0x7a, 0x84, 0x4d, 0xaf, 0x94, 0xa1, - 0xc4, 0x6e, 0x4d, 0x44, 0x6c, 0x8f, 0xa2, 0x30, 0x52, 0x1c, 0x1f, 0xbd, 0x0e, 0x8b, 0xa6, 0xad, - 0xa9, 0xa6, 0xe2, 0x79, 0xba, 0xc2, 0x24, 0x9c, 0xa3, 0x9a, 0x5a, 0xa0, 0xe0, 0xb6, 0xa7, 0xd7, - 0xa8, 0x80, 0x08, 0x66, 0x7c, 0xb5, 0xe3, 0x95, 0xe6, 0xa9, 0x92, 0xe8, 0x6f, 0x74, 0x03, 0x72, - 0x8e, 0x8b, 0xc9, 0x6b, 0x32, 0x8e, 0x4c, 0x5c, 0x82, 0x1b, 0xc2, 0xcd, 0x79, 0x39, 0x0a, 0x42, - 0x4d, 0xc8, 0xab, 0x9a, 0x86, 0x4d, 0xec, 0xaa, 0xbe, 0xed, 0x7a, 0xa5, 0x1c, 0xe5, 0xf6, 0xad, - 0xd1, 0xdc, 0x56, 0xfb, 0xbb, 0x19, 0xd3, 0x72, 0xec, 0x00, 0x74, 0x13, 0x8a, 0x5d, 0xc3, 0x52, - 0x34, 0xa7, 0xa7, 0x38, 0xa6, 0xea, 0x1f, 0xdb, 0x6e, 0xb7, 0xb4, 0xc0, 0xde, 0x48, 0xd7, 0xb0, - 0x6a, 0x4e, 0xaf, 0xc5, 0xa1, 0xe8, 0x01, 0x64, 0xc8, 0xd9, 0xbe, 0x57, 0x5a, 0xa4, 0x44, 0x5f, - 0x4d, 0x57, 0xd1, 0x01, 0xd9, 0x2b, 0x73, 0x94, 0xf2, 0x03, 0x58, 0x88, 0xbd, 0x19, 0x54, 0x84, - 0xe9, 0x53, 0x7c, 0xc6, 0xed, 0x8c, 0xfc, 0x44, 0x2b, 0x30, 0xfb, 0x4c, 0x35, 0x7b, 0x98, 0x1a, - 0x56, 0x56, 0x66, 0x0f, 0xf7, 0xa7, 0xde, 0x17, 0xca, 0xdf, 0x80, 0x5c, 0x44, 0xd3, 0xe7, 0x41, - 0x15, 0xff, 0x49, 0x80, 0x6c, 0xc8, 0xcd, 0xa4, 0x98, 0x68, 0x0b, 0x32, 0xf8, 0xf8, 0x18, 0x6b, - 0x7e, 0x69, 0xfa, 0x86, 0x70, 0xb3, 0x70, 0x67, 0x63, 0x02, 0x51, 0x2b, 0x12, 0xc5, 0x90, 0x39, - 0xa6, 0xf8, 0x31, 0x64, 0x18, 0x04, 0xad, 0x01, 0x92, 0x1e, 0x3e, 0x94, 0x6a, 0x07, 0xca, 0x61, - 0xa3, 0xdd, 0x92, 0x6a, 0xf5, 0x87, 0x75, 0x69, 0xbb, 0xf8, 0x35, 0xb4, 0x08, 0xb9, 0x46, 0x53, - 0x69, 0xd7, 0x76, 0xa5, 0xed, 0xc3, 0x3d, 0xa9, 0x28, 0x90, 0x8d, 0x2d, 0x59, 0x7a, 0x28, 0xc9, - 0x4a, 0x14, 0x3e, 0x85, 0x0a, 0x00, 0x8d, 0xa6, 0x22, 0x7d, 0x53, 0xaa, 0x1d, 0x1e, 0x48, 0xc5, - 0x69, 0xf1, 0x47, 0x53, 0x00, 0xfb, 0x2a, 0x89, 0x14, 0xd5, 0x9e, 0x7f, 0x82, 0xca, 0x30, 0xdf, - 0xf3, 0xb0, 0x6b, 0xa9, 0xdd, 0xc0, 0x6f, 0xc3, 0x67, 0xb2, 0xe6, 0xa8, 0x9e, 0xf7, 0xa9, 0xed, - 0xea, 0x5c, 0xc4, 0xf0, 0x19, 0x75, 0xe1, 0x05, 0xcd, 0x34, 0xb0, 0xe5, 0x2b, 0x1a, 0x76, 0x7d, - 0xe3, 0xd8, 0xd0, 0x54, 0x1f, 0x2b, 0x1a, 0xb5, 0x12, 0x2a, 0x78, 0xee, 0xce, 0xed, 0xd1, 0x82, - 0xd7, 0x28, 0x6a, 0xad, 0x8f, 0xc9, 0xcd, 0x6b, 0x5d, 0x4b, 0x5e, 0x40, 0xef, 0xc2, 0x5a, 0x10, - 0xdf, 0x34, 0x35, 0x4a, 0xb2, 0xa4, 0x53, 0xc6, 0x56, 0xf8, 0x6a, 0x4d, 0x8d, 0xe0, 0xa2, 0x77, - 0x00, 0x0d, 0x33, 0x59, 0xc2, 0x14, 0x63, 0x69, 0x88, 0x14, 0x71, 0x73, 0xbe, 0x9d, 0xbc, 0xe8, - 0x63, 0xe6, 0xe6, 0x0c, 0xf2, 0x08, 0x9f, 0x89, 0x6d, 0x58, 0x1f, 0xc1, 0x37, 0x7a, 0x1f, 0x4a, - 0x86, 0xe7, 0xf5, 0xb0, 0x92, 0x40, 0x4e, 0xa0, 0x8e, 0xb8, 0x46, 0xd7, 0x87, 0xf0, 0xc5, 0x1f, - 0x4c, 0x43, 0xbe, 0xaa, 0xeb, 0xb6, 0xe5, 0xf1, 0xa3, 0x7e, 0x1e, 0x96, 0x4f, 0x7c, 0xdf, 0x51, - 0x4c, 0x5b, 0xd5, 0x95, 0x23, 0xd5, 0x54, 0x2d, 0xcd, 0xb0, 0x3a, 0xf4, 0x94, 0x54, 0x5f, 0xdd, - 0xf5, 0x7d, 0x67, 0xcf, 0x56, 0xf5, 0xad, 0x00, 0x45, 0x5e, 0x3a, 0x19, 0x04, 0x21, 0x07, 0xca, - 0x27, 0xb6, 0x6b, 0x3c, 0x27, 0xd8, 0xa6, 0xe2, 0xd8, 0xba, 0xa2, 0xf6, 0x7c, 0xdb, 0xd3, 0x54, - 0x93, 0xd0, 0x98, 0xa2, 0x34, 0x52, 0x42, 0xe5, 0x6e, 0x88, 0xdb, 0xb2, 0xf5, 0x6a, 0x1f, 0x53, - 0x2e, 0x9d, 0x8c, 0x58, 0x41, 0xdf, 0x82, 0x95, 0xd3, 0xde, 0x11, 0x76, 0x2d, 0xec, 0x63, 0x4f, - 0xd1, 0x55, 0xef, 0xe4, 0xc8, 0x56, 0x5d, 0x9d, 0x9b, 0xc8, 0x3b, 0xa3, 0x69, 0x3d, 0x0a, 0xb1, - 0xb6, 0x03, 0x24, 0x79, 0xf9, 0x74, 0x18, 0x88, 0x54, 0x58, 0xb5, 0xb0, 0xff, 0xa9, 0xed, 0x9e, - 0x2a, 0x8e, 0x6d, 0x1a, 0xda, 0x59, 0x60, 0x85, 0x33, 0xe3, 0x48, 0x34, 0x18, 0x5a, 0x8b, 0x62, - 0x71, 0x0b, 0x5c, 0xb6, 0x86, 0x81, 0xe2, 0x26, 0x2c, 0x0d, 0xa9, 0x97, 0x78, 0x87, 0x6e, 0x78, - 0xea, 0x91, 0x89, 0x75, 0xfe, 0x8e, 0xc3, 0x67, 0xf1, 0x1e, 0x94, 0x46, 0xe9, 0x2a, 0x15, 0xef, - 0x36, 0x2c, 0x27, 0xc8, 0x3d, 0x0e, 0x25, 0x41, 0x8e, 0x54, 0x94, 0x7f, 0x17, 0xe0, 0x7a, 0x3f, - 0x04, 0x10, 0x3e, 0xb1, 0xce, 0xcf, 0x08, 0xac, 0xb0, 0x04, 0x73, 0xd8, 0x8a, 0x62, 0x07, 0x8f, - 0x48, 0x83, 0x9c, 0x66, 0xe8, 0xae, 0x72, 0x64, 0xda, 0xda, 0xa9, 0x57, 0x9a, 0xa2, 0xe1, 0x7c, - 0x6b, 0xb4, 0x92, 0xd3, 0x09, 0x55, 0x6a, 0x86, 0xee, 0x6e, 0x91, 0xa3, 0x64, 0xd0, 0x82, 0x9f, - 0x5e, 0x79, 0x1f, 0xb2, 0xe1, 0x02, 0xa9, 0x0c, 0x74, 0xc3, 0x73, 0x4c, 0xf5, 0x4c, 0x89, 0x84, - 0xa9, 0x1c, 0x87, 0x35, 0x48, 0xa4, 0x22, 0x9e, 0x1b, 0x32, 0xc5, 0x63, 0x55, 0x36, 0x3c, 0x4f, - 0xfc, 0x03, 0x01, 0x16, 0x62, 0x4a, 0x42, 0x7b, 0x30, 0xef, 0xb8, 0xf6, 0x33, 0x43, 0xc7, 0x2e, - 0x3d, 0xaf, 0x90, 0x9a, 0xb4, 0xa3, 0xa8, 0x95, 0x16, 0xc7, 0x93, 0xc3, 0x13, 0xa2, 0xda, 0x9a, - 0x8a, 0x69, 0x4b, 0xbc, 0x05, 0xf3, 0xad, 0xfe, 0xae, 0x95, 0x96, 0xdc, 0x7c, 0x5c, 0xdf, 0x96, - 0xe4, 0x81, 0x60, 0x0e, 0x90, 0xa9, 0x55, 0xf7, 0xea, 0xb5, 0x66, 0x51, 0x10, 0xff, 0x74, 0x06, - 0x50, 0xbd, 0x55, 0x35, 0x49, 0xc2, 0x27, 0x05, 0x19, 0x67, 0xf8, 0x35, 0x28, 0xf4, 0x3c, 0xac, - 0x18, 0x8e, 0xa2, 0x9a, 0x86, 0xea, 0x61, 0x8f, 0xbf, 0x97, 0x7c, 0xcf, 0xc3, 0x75, 0xa7, 0xca, - 0x60, 0xe8, 0x2d, 0x58, 0xd2, 0x5c, 0x4c, 0x22, 0xb1, 0xd7, 0x3b, 0xe2, 0x96, 0xcc, 0x59, 0x2a, - 0xb2, 0x85, 0x76, 0x08, 0xa7, 0xe5, 0x54, 0xf8, 0xc4, 0x54, 0x3b, 0xcd, 0xcb, 0xa9, 0x10, 0x4c, - 0xb5, 0xbb, 0x01, 0x4b, 0x41, 0xf0, 0x35, 0x9c, 0x67, 0xef, 0x2a, 0x44, 0xb1, 0xd4, 0xbb, 0xb2, - 0xf2, 0x22, 0x5f, 0xa8, 0x3b, 0xcf, 0xde, 0x25, 0x6f, 0x8c, 0xf0, 0x69, 0xd9, 0x3a, 0x8e, 0x6c, - 0x64, 0xe5, 0x52, 0x9e, 0x40, 0xc3, 0x5d, 0x6f, 0x03, 0xe2, 0x25, 0x9b, 0x17, 0xd9, 0x99, 0xa1, - 0x3b, 0x8b, 0xc1, 0x4a, 0xb8, 0xfb, 0x23, 0xb8, 0xd6, 0x2f, 0x6e, 0x35, 0xdb, 0xd2, 0x55, 0xf7, - 0x4c, 0x71, 0x55, 0xab, 0x83, 0x19, 0xd7, 0x73, 0x14, 0xef, 0x05, 0xbe, 0xa7, 0x1d, 0x6c, 0x91, - 0xc9, 0x0e, 0x2a, 0x40, 0x15, 0x5e, 0x0a, 0xc9, 0x25, 0x9e, 0x30, 0x4f, 0x4f, 0x28, 0x07, 0x9b, - 0x12, 0x8e, 0x78, 0x0f, 0xd6, 0x87, 0x74, 0xc0, 0xcd, 0x2d, 0x1b, 0xcb, 0x40, 0x01, 0xd7, 0xcc, - 0x76, 0x37, 0x61, 0x25, 0xae, 0x0e, 0x8e, 0x03, 0x2c, 0x07, 0x45, 0x95, 0xc2, 0x10, 0xfe, 0x1f, - 0x94, 0x86, 0x35, 0xc3, 0x91, 0x72, 0x14, 0x69, 0x75, 0x50, 0x3f, 0xcc, 0xc6, 0xef, 0xc2, 0x7a, - 0xcb, 0xd6, 0xdb, 0x58, 0xeb, 0xb9, 0x86, 0x7f, 0x16, 0x8b, 0x05, 0x23, 0x9d, 0x59, 0xfc, 0xef, - 0x02, 0xcc, 0xd5, 0x18, 0xdf, 0xa4, 0xa6, 0x8c, 0xb8, 0x17, 0xfd, 0x4d, 0x6a, 0x4a, 0x1d, 0x7b, - 0x9a, 0x6b, 0x38, 0xc4, 0x14, 0xb9, 0x63, 0x45, 0x41, 0xe4, 0x4d, 0x1a, 0x96, 0xe1, 0x1b, 0xaa, - 0xa9, 0x50, 0x41, 0x59, 0xd1, 0x3a, 0x4d, 0x8b, 0xd6, 0x22, 0x5f, 0x61, 0x45, 0x2f, 0xa9, 0x5b, - 0x25, 0xc8, 0xf1, 0x5d, 0x91, 0x08, 0xfd, 0xda, 0x24, 0xe5, 0xb2, 0x0c, 0x56, 0xbf, 0xe1, 0x90, - 0x20, 0xd7, 0xa5, 0x61, 0x85, 0xa4, 0xaf, 0x13, 0x6a, 0x61, 0xa9, 0xc7, 0xf4, 0x63, 0x90, 0x0c, - 0xdd, 0x7e, 0xed, 0xf3, 0x06, 0xa9, 0xb6, 0x3b, 0x1d, 0xc3, 0xea, 0x04, 0x4d, 0x13, 0x37, 0xc1, - 0x02, 0x07, 0xb7, 0x19, 0x94, 0xd4, 0x11, 0x5d, 0xdb, 0x32, 0x7c, 0xdb, 0x8d, 0xee, 0x65, 0x66, - 0xb7, 0xd4, 0x5f, 0x09, 0xb6, 0x97, 0x60, 0x2e, 0xf0, 0x3d, 0x66, 0x58, 0xc1, 0x63, 0xb2, 0x27, - 0x65, 0x93, 0x3d, 0xe9, 0x11, 0x2c, 0xa8, 0xb4, 0x30, 0x08, 0xb4, 0x05, 0x54, 0xcc, 0xd7, 0x53, - 0xca, 0xf5, 0x48, 0x1d, 0x21, 0xe7, 0xd5, 0x68, 0x55, 0x71, 0x1d, 0x20, 0x12, 0x11, 0x98, 0x21, - 0x45, 0x20, 0xa8, 0x0a, 0x54, 0xbf, 0x8a, 0x63, 0xdb, 0xa6, 0x57, 0xca, 0xd3, 0xa0, 0x2e, 0xa6, - 0xbf, 0x97, 0x96, 0x6d, 0x9b, 0x72, 0xd6, 0xe2, 0xbf, 0x3c, 0x74, 0x0d, 0xb2, 0x41, 0xcc, 0xf2, - 0x4a, 0x0b, 0xb4, 0x31, 0xe9, 0x03, 0xd0, 0x3d, 0x58, 0x67, 0x46, 0xa7, 0x44, 0xca, 0x01, 0xd5, - 0x74, 0x4e, 0xd4, 0x52, 0x81, 0xda, 0xe4, 0x2a, 0x5b, 0xee, 0xa7, 0xbf, 0x2a, 0x59, 0x44, 0x0d, - 0x28, 0xc4, 0xb3, 0x7b, 0x69, 0x99, 0xaa, 0xe1, 0x8d, 0x09, 0xc3, 0xb5, 0xbc, 0x10, 0x4b, 0xe8, - 0xe8, 0x17, 0x60, 0x85, 0xc6, 0xd0, 0x80, 0xb3, 0xe0, 0xd4, 0x15, 0x7a, 0xea, 0xdb, 0xa3, 0x4f, - 0x1d, 0x8e, 0xc9, 0x32, 0x32, 0x9c, 0xa1, 0x38, 0xfd, 0xab, 0x02, 0xbc, 0x12, 0xb1, 0x4d, 0x96, - 0xf3, 0x14, 0xce, 0x43, 0xf8, 0x2a, 0xd7, 0x28, 0xb5, 0xf7, 0x2f, 0x9a, 0x35, 0xe5, 0xeb, 0xdd, - 0xf4, 0xf4, 0xfd, 0x14, 0x50, 0x97, 0xf4, 0x15, 0xd8, 0x52, 0x2d, 0x0d, 0x07, 0x32, 0xae, 0x8f, - 0xab, 0x21, 0xf7, 0xfb, 0x38, 0x5c, 0xc4, 0xa5, 0xee, 0x20, 0x08, 0x59, 0x50, 0x26, 0x85, 0xa3, - 0xc7, 0x23, 0xcd, 0x40, 0xd1, 0xf5, 0xc2, 0xb8, 0xd2, 0x7f, 0x44, 0x90, 0x92, 0xd7, 0x9d, 0x11, - 0xd1, 0xeb, 0x45, 0xc8, 0x7a, 0xd8, 0x3c, 0x56, 0x4c, 0xc3, 0x3a, 0xe5, 0xd5, 0xfe, 0x3c, 0x01, - 0xec, 0x19, 0xd6, 0x29, 0x09, 0x5a, 0xcf, 0x6d, 0x2b, 0xa8, 0xe9, 0xe9, 0x6f, 0x52, 0xfa, 0x60, - 0x4b, 0x77, 0x6c, 0xc3, 0xf2, 0x79, 0x11, 0x1f, 0x3e, 0x13, 0x33, 0x0c, 0xc2, 0x55, 0xe0, 0x88, - 0xcf, 0xb0, 0xeb, 0x91, 0xe0, 0xd6, 0x61, 0xd1, 0x95, 0x2f, 0xf3, 0xa8, 0xf8, 0x98, 0x2d, 0xd2, - 0xfe, 0xa3, 0xe7, 0xba, 0xa4, 0xb6, 0xe7, 0x6f, 0x37, 0x40, 0x3b, 0xe1, 0xd1, 0x9f, 0xad, 0xb2, - 0xf7, 0x16, 0x60, 0xdd, 0x82, 0x00, 0xce, 0x82, 0x63, 0x80, 0x63, 0x50, 0x1c, 0xc4, 0xd7, 0x88, - 0x33, 0x05, 0x18, 0x2f, 0x43, 0x8e, 0x27, 0x70, 0xdf, 0xe8, 0xe2, 0xd2, 0xb7, 0x99, 0xa3, 0x32, - 0xd0, 0x81, 0xd1, 0xc5, 0xe8, 0x67, 0x20, 0xe3, 0xf9, 0xaa, 0xdf, 0xf3, 0x4a, 0xa7, 0xb4, 0x6c, - 0xb9, 0x99, 0xd6, 0x64, 0x51, 0x11, 0x2a, 0x6d, 0xba, 0x5f, 0xe6, 0x78, 0xe8, 0xeb, 0x50, 0x60, - 0xbf, 0x94, 0x2e, 0xf6, 0x3c, 0xb5, 0x83, 0x4b, 0x26, 0xa5, 0xb2, 0xc0, 0xa0, 0xfb, 0x0c, 0x88, - 0xde, 0x81, 0xe5, 0x81, 0xcc, 0xe5, 0x19, 0xcf, 0x71, 0xa9, 0xcb, 0x22, 0x7b, 0x34, 0x71, 0xb5, - 0x8d, 0xe7, 0x78, 0x44, 0x46, 0xb7, 0x46, 0x64, 0xf4, 0x0a, 0x2c, 0x1b, 0x96, 0xe7, 0x53, 0xe3, - 0xec, 0xb8, 0x76, 0xcf, 0x51, 0x7a, 0xae, 0xe9, 0x95, 0x6c, 0x1a, 0x35, 0x96, 0x82, 0xa5, 0x1d, - 0xb2, 0x72, 0xe8, 0x9a, 0x1e, 0x39, 0x3d, 0xa6, 0x48, 0x96, 0x65, 0x1c, 0xc6, 0x4b, 0x44, 0x8d, - 0x2c, 0xcb, 0xbc, 0x0c, 0x39, 0xfc, 0x99, 0x63, 0xb8, 0x5c, 0x89, 0xdf, 0x61, 0x4a, 0x64, 0x20, - 0xaa, 0xc4, 0x32, 0xcc, 0x07, 0x6e, 0x5b, 0x72, 0x99, 0x85, 0x04, 0xcf, 0xa2, 0x01, 0x19, 0xa6, - 0x30, 0xd2, 0x51, 0xb7, 0x0f, 0xaa, 0x07, 0x87, 0xed, 0x81, 0x6a, 0xad, 0x08, 0x79, 0x5a, 0xc7, - 0xb5, 0xeb, 0xcd, 0x46, 0xbd, 0xb1, 0x53, 0x14, 0x50, 0x0e, 0xe6, 0xe4, 0xc3, 0x06, 0x7d, 0x98, - 0x22, 0x9d, 0xb9, 0x2c, 0xd5, 0x9a, 0x8d, 0x5a, 0x7d, 0x8f, 0x00, 0xa6, 0x51, 0x1e, 0xe6, 0xdb, - 0x07, 0xcd, 0x56, 0x8b, 0x3c, 0xcd, 0xa0, 0x2c, 0xcc, 0x4a, 0xb2, 0xdc, 0x94, 0x8b, 0xb3, 0xe2, - 0xef, 0x65, 0x60, 0x81, 0xbf, 0xa4, 0x43, 0x47, 0x27, 0x1d, 0xe8, 0x2d, 0x58, 0xd1, 0xb1, 0x67, - 0xb8, 0x24, 0x64, 0x44, 0x0d, 0x86, 0x15, 0x5b, 0x88, 0xaf, 0x45, 0x0d, 0xe6, 0x03, 0x28, 0x07, - 0x18, 0x09, 0x29, 0x8a, 0xd5, 0x5e, 0x25, 0xbe, 0x63, 0x7f, 0x28, 0x53, 0x3d, 0x85, 0xd5, 0x00, - 0x3b, 0x9e, 0x6b, 0x32, 0xe7, 0xca, 0x35, 0xcb, 0xfc, 0x90, 0x58, 0x23, 0xbb, 0x39, 0x20, 0x0b, - 0x49, 0x2d, 0x8a, 0xa1, 0x07, 0x69, 0x33, 0x22, 0x0b, 0xc9, 0x1f, 0x75, 0x9d, 0xbc, 0xe4, 0x00, - 0x21, 0x32, 0x6d, 0x63, 0x19, 0xb4, 0xc8, 0x57, 0xea, 0xe1, 0xd0, 0xcd, 0x81, 0x97, 0x86, 0x8f, - 0x8f, 0x76, 0xb3, 0xd9, 0xb1, 0xed, 0x1f, 0x27, 0x1d, 0x6d, 0x64, 0xcb, 0x03, 0x6c, 0x45, 0x1b, - 0xb7, 0xb7, 0x20, 0x60, 0x5a, 0xe9, 0x27, 0x3a, 0xa0, 0x26, 0x1b, 0xb0, 0xb7, 0x17, 0xe6, 0xbb, - 0xdf, 0x10, 0xe0, 0xcd, 0xf0, 0xc5, 0x8c, 0xcd, 0x07, 0xf9, 0x4b, 0xe6, 0x83, 0xaf, 0x07, 0x6f, - 0x38, 0x3d, 0x2d, 0x7c, 0x0e, 0x62, 0xc0, 0x53, 0x4a, 0x08, 0x2f, 0x5c, 0x34, 0x84, 0x5f, 0xe7, - 0x87, 0x8f, 0xaa, 0x43, 0xdf, 0x85, 0xb5, 0x01, 0x95, 0x04, 0xf6, 0xcd, 0x87, 0x38, 0x31, 0x29, - 0xb8, 0x85, 0x8b, 0xff, 0x91, 0x81, 0x6c, 0xd3, 0xc1, 0x2e, 0x55, 0x6c, 0x62, 0x95, 0x1a, 0x24, - 0x81, 0xa9, 0x48, 0x12, 0x68, 0x42, 0xc1, 0x0e, 0x90, 0x98, 0x21, 0x4d, 0x8f, 0x8b, 0x97, 0x21, - 0x91, 0x0a, 0x31, 0x30, 0x79, 0x21, 0xc4, 0xa7, 0xf6, 0xb6, 0x15, 0x06, 0xde, 0x99, 0x71, 0x63, - 0xbd, 0xfe, 0x41, 0x03, 0xa1, 0x77, 0x0d, 0x32, 0x3a, 0xf6, 0x55, 0xc3, 0xe4, 0x56, 0xcd, 0x9f, - 0x12, 0x42, 0xf2, 0x6c, 0x52, 0x48, 0x8e, 0x65, 0xc2, 0xcc, 0x40, 0x26, 0x7c, 0x19, 0x72, 0xbe, - 0xea, 0x76, 0xb0, 0xcf, 0x96, 0x99, 0x97, 0x01, 0x03, 0xd1, 0x0d, 0xd1, 0xa0, 0x97, 0x8d, 0x07, - 0x3d, 0xd2, 0x3f, 0x7b, 0xbe, 0xea, 0xfa, 0x2c, 0x60, 0xb2, 0xe6, 0x24, 0x4b, 0x21, 0x34, 0x5e, - 0xbe, 0x40, 0x33, 0x2a, 0x5b, 0x64, 0xb5, 0xe3, 0x1c, 0xb6, 0x74, 0xb2, 0x24, 0xca, 0x63, 0xc3, - 0x65, 0x0e, 0xe6, 0x5a, 0x52, 0x63, 0x3b, 0x21, 0x52, 0xce, 0xc3, 0xcc, 0x76, 0xb3, 0x21, 0xb1, - 0x10, 0x59, 0xdd, 0x6a, 0xca, 0x07, 0x34, 0x44, 0x8a, 0xff, 0x33, 0x05, 0x33, 0x54, 0xe7, 0x2b, - 0x50, 0x3c, 0xf8, 0xb8, 0x25, 0x0d, 0x1c, 0x88, 0xa0, 0x50, 0x93, 0xa5, 0xea, 0x81, 0xa4, 0xd4, - 0xf6, 0x0e, 0xdb, 0x07, 0x92, 0x5c, 0x14, 0x08, 0x6c, 0x5b, 0xda, 0x93, 0x22, 0xb0, 0x29, 0x02, - 0x3b, 0x6c, 0xed, 0xc8, 0xd5, 0x6d, 0x49, 0xd9, 0xaf, 0x52, 0xd8, 0x34, 0x5a, 0x82, 0x85, 0x00, - 0xd6, 0x68, 0x6e, 0x4b, 0xed, 0xe2, 0x0c, 0xd9, 0x26, 0x4b, 0xad, 0x6a, 0x5d, 0x0e, 0x51, 0x67, - 0x19, 0xea, 0x76, 0x94, 0x44, 0x86, 0x30, 0xc3, 0xc9, 0x12, 0x4c, 0xa5, 0xd5, 0x6c, 0xee, 0x15, - 0xe7, 0x08, 0x94, 0x13, 0xee, 0x43, 0xe7, 0xd1, 0x35, 0x28, 0xb5, 0xa5, 0x83, 0x3e, 0x48, 0xd9, - 0xaf, 0x36, 0xaa, 0x3b, 0xd2, 0xbe, 0xd4, 0x38, 0x28, 0x66, 0xd1, 0x2a, 0x2c, 0x55, 0x0f, 0x0f, - 0x9a, 0x0a, 0x27, 0xcb, 0x18, 0x01, 0xa2, 0x40, 0x0a, 0x8e, 0x33, 0x98, 0x43, 0x05, 0x00, 0x72, - 0xd8, 0x5e, 0x75, 0x4b, 0xda, 0x6b, 0x17, 0xf3, 0x68, 0x19, 0x16, 0xc9, 0x33, 0x93, 0x49, 0xa9, - 0x1e, 0x1e, 0xec, 0x16, 0x17, 0xa8, 0xf6, 0x63, 0x14, 0xdb, 0xf5, 0xa7, 0x52, 0xb1, 0x10, 0xc2, - 0xa5, 0x83, 0x27, 0x4d, 0xf9, 0x91, 0xd2, 0x6a, 0xee, 0xd5, 0x6b, 0x1f, 0x17, 0x17, 0x51, 0x19, - 0xd6, 0xd8, 0x21, 0xf5, 0xc6, 0x81, 0xd4, 0xa8, 0x36, 0x6a, 0x52, 0xb0, 0x56, 0x14, 0x7f, 0x57, - 0x80, 0x95, 0x1a, 0x2d, 0x39, 0x78, 0x76, 0x92, 0xf1, 0x77, 0x7a, 0xd8, 0xf3, 0x89, 0x99, 0x38, - 0xae, 0xfd, 0x6d, 0xac, 0xf9, 0x24, 0x90, 0x33, 0x17, 0xcc, 0x72, 0x48, 0x5d, 0x4f, 0xf4, 0xc3, - 0x07, 0x30, 0xc7, 0x0b, 0x2d, 0x3e, 0xf2, 0x7b, 0x65, 0x6c, 0xc1, 0x22, 0x07, 0x18, 0xc4, 0x5f, - 0x1c, 0x95, 0xe4, 0x76, 0xee, 0x0f, 0xfc, 0x49, 0x3c, 0x83, 0xa5, 0x1d, 0xec, 0x5f, 0x9e, 0x39, - 0x3a, 0xf0, 0xe5, 0xed, 0x98, 0xce, 0x87, 0x1f, 0xd9, 0xa0, 0x0f, 0xd3, 0xc3, 0x58, 0x33, 0xdb, - 0x8f, 0x35, 0xe2, 0x5f, 0x0a, 0xb0, 0xc2, 0x92, 0xf5, 0x95, 0x93, 0xff, 0x08, 0x32, 0x3d, 0x4a, - 0x89, 0xf7, 0xc9, 0x6f, 0x8c, 0xd5, 0x1c, 0x63, 0x4c, 0xe6, 0x68, 0x89, 0xfc, 0xff, 0xcb, 0x14, - 0xac, 0xb4, 0xb1, 0x1f, 0xe9, 0x88, 0xaf, 0x8c, 0xff, 0x7d, 0xc8, 0xa8, 0x9a, 0x1f, 0x94, 0x2f, - 0x85, 0x3b, 0xef, 0x8d, 0xe6, 0x3f, 0x89, 0xa3, 0x4a, 0x95, 0x22, 0xcb, 0xfc, 0x10, 0xf4, 0x41, - 0xa8, 0x8e, 0xf3, 0xf4, 0xfb, 0x83, 0xba, 0x98, 0x8b, 0xe8, 0xa2, 0x05, 0x19, 0x46, 0x83, 0x84, - 0xa5, 0xc3, 0xc6, 0xa3, 0x46, 0xf3, 0x49, 0x83, 0xd5, 0x77, 0xc4, 0x35, 0x5a, 0xd5, 0x76, 0xfb, - 0x49, 0x53, 0xde, 0x2e, 0x0a, 0xc4, 0x61, 0x77, 0xa4, 0x86, 0x24, 0x13, 0xe7, 0x0f, 0xc1, 0x53, - 0xc1, 0xc6, 0xc3, 0xb6, 0x24, 0x37, 0xaa, 0xfb, 0x52, 0x71, 0x5a, 0xfc, 0x45, 0x58, 0xd9, 0xc6, - 0x26, 0xfe, 0x0a, 0x8c, 0x23, 0x90, 0x67, 0x26, 0x22, 0xcf, 0xb7, 0x60, 0x79, 0xcf, 0xf0, 0x02, - 0xbf, 0xf0, 0x2e, 0x41, 0xbc, 0xef, 0x78, 0x33, 0x31, 0xc7, 0x7b, 0x0e, 0x2b, 0x71, 0x0a, 0x9e, - 0x63, 0x5b, 0x1e, 0x46, 0x1f, 0xc2, 0x3c, 0x67, 0xcd, 0x2b, 0x09, 0x74, 0x78, 0x30, 0x81, 0x9b, - 0x87, 0x28, 0xe8, 0x55, 0x58, 0xe8, 0x1a, 0x9e, 0x47, 0x2a, 0x57, 0x42, 0x9e, 0x4d, 0x95, 0xb3, - 0x72, 0x9e, 0x03, 0x9f, 0x12, 0x98, 0xf8, 0xcb, 0xb0, 0xbc, 0x83, 0xfd, 0x30, 0xb7, 0x5e, 0x42, - 0xba, 0x57, 0x20, 0xdf, 0xaf, 0x0d, 0x42, 0xe5, 0xe6, 0x42, 0xd8, 0x08, 0xd7, 0x3f, 0x82, 0x55, - 0x22, 0x7c, 0xc8, 0xc1, 0x55, 0x28, 0xf8, 0xfb, 0x02, 0xac, 0xd5, 0x48, 0xef, 0x63, 0x7e, 0xc5, - 0x82, 0x46, 0xed, 0x88, 0x30, 0x31, 0x28, 0x29, 0x7f, 0xd1, 0x35, 0x80, 0x10, 0x3b, 0x78, 0xd5, - 0xaf, 0x4e, 0x50, 0x09, 0xc9, 0x11, 0xb4, 0xc9, 0x5e, 0xb7, 0x02, 0x6b, 0x3b, 0xd8, 0x27, 0x8d, - 0x0a, 0x0e, 0x3e, 0x3e, 0x5f, 0x5c, 0x11, 0x49, 0x52, 0xfe, 0xda, 0x14, 0xe4, 0xa3, 0xc7, 0xa3, - 0x7b, 0xb0, 0xae, 0xe3, 0x63, 0xb5, 0x67, 0xfa, 0x43, 0xb3, 0x01, 0x46, 0x64, 0x95, 0x2f, 0x0f, - 0xcc, 0x06, 0x2a, 0xb0, 0xfc, 0x4c, 0x35, 0x8d, 0x78, 0xcb, 0x16, 0x5c, 0x60, 0x58, 0xa2, 0x4b, - 0x91, 0x8e, 0xcd, 0x63, 0x7d, 0x0e, 0xa3, 0x13, 0xe9, 0x73, 0x66, 0x82, 0x3e, 0x87, 0xae, 0xf4, - 0xfb, 0x9c, 0x0d, 0x60, 0x47, 0x44, 0xf6, 0x7a, 0xa5, 0x59, 0x7a, 0xf6, 0x22, 0x5d, 0x08, 0xb7, - 0x7a, 0xe8, 0x0e, 0xac, 0xb2, 0xbd, 0xf1, 0xf2, 0x9a, 0xdd, 0x4b, 0xc8, 0xca, 0x8c, 0xcd, 0x58, - 0x75, 0xed, 0x89, 0x7f, 0x2d, 0xc0, 0x2a, 0x4b, 0xf6, 0xe1, 0x50, 0xef, 0x0a, 0x33, 0x5a, 0x36, - 0xec, 0xd5, 0x78, 0x52, 0x9b, 0x64, 0xc8, 0x38, 0x1f, 0x0c, 0x19, 0x23, 0x6e, 0x93, 0x89, 0xb9, - 0xcd, 0x17, 0x02, 0xac, 0xb2, 0xc0, 0x7b, 0xf5, 0x42, 0xdc, 0x80, 0x7c, 0xac, 0x9f, 0x65, 0x2f, - 0x0e, 0xac, 0x7e, 0x23, 0x1b, 0x58, 0x5b, 0x26, 0x62, 0x6d, 0xbf, 0x22, 0xb0, 0xd0, 0x19, 0xf0, - 0xe7, 0x5d, 0x1d, 0x83, 0xa3, 0xaa, 0xa6, 0xdf, 0x11, 0x00, 0xed, 0x60, 0xff, 0xa7, 0x55, 0x43, - 0xff, 0x35, 0x03, 0xf3, 0x01, 0x6f, 0x89, 0x6d, 0xde, 0x07, 0x90, 0xe1, 0x1d, 0xea, 0xd4, 0x39, - 0xbe, 0x1b, 0x70, 0x9c, 0x73, 0x7e, 0xa8, 0x48, 0x1d, 0x3a, 0x96, 0x60, 0x2e, 0x08, 0x0c, 0x6c, - 0xee, 0x18, 0x3c, 0x8e, 0x9a, 0x6b, 0x1d, 0x8f, 0x9a, 0x6b, 0x55, 0xc3, 0xa6, 0xb2, 0x43, 0x4b, - 0xa4, 0x37, 0xc7, 0x7b, 0xc3, 0xf8, 0x71, 0xde, 0x49, 0x52, 0xef, 0xd8, 0x84, 0x5c, 0x74, 0x38, - 0x32, 0x73, 0x91, 0xe1, 0x48, 0xf4, 0x04, 0xb4, 0x0b, 0xd0, 0x55, 0x2d, 0xb5, 0x83, 0xbb, 0x81, - 0xa5, 0xe5, 0xd2, 0x9a, 0x6b, 0x72, 0xde, 0x7e, 0xb8, 0x5f, 0x8e, 0xe0, 0x8a, 0xdf, 0x13, 0x2e, - 0x3b, 0x72, 0x5b, 0x03, 0xc4, 0x1f, 0x94, 0x27, 0xf5, 0x83, 0x5d, 0x85, 0x0d, 0xd8, 0xa6, 0x07, - 0x47, 0x71, 0x33, 0xb1, 0x51, 0xdc, 0x6c, 0x7f, 0x14, 0x97, 0x11, 0xff, 0x48, 0x80, 0x42, 0x9c, - 0x45, 0x92, 0x3c, 0x89, 0xbc, 0x4a, 0xcf, 0xe9, 0xb8, 0xaa, 0x1e, 0xdc, 0xe3, 0xa0, 0x3a, 0x38, - 0x64, 0x20, 0xd2, 0x73, 0xd3, 0x2d, 0x2e, 0x76, 0x54, 0xc3, 0xe5, 0x1f, 0x5a, 0x81, 0x80, 0x64, - 0x0a, 0x41, 0x87, 0xb0, 0xc8, 0xd1, 0x15, 0xdb, 0x09, 0x06, 0x46, 0x63, 0x3e, 0x34, 0x54, 0xfb, - 0x04, 0x9a, 0x0c, 0x47, 0x2e, 0xf4, 0x62, 0xcf, 0x62, 0x17, 0xd0, 0xf0, 0x2e, 0xf4, 0x1e, 0xac, - 0x47, 0x19, 0x56, 0x22, 0x1d, 0x3d, 0x73, 0xa3, 0x95, 0x08, 0xef, 0xed, 0xb0, 0xb9, 0x1f, 0xfb, - 0x8d, 0x4f, 0xfc, 0x26, 0x2c, 0x0d, 0x7d, 0x19, 0x40, 0x35, 0xc8, 0x7c, 0x6a, 0x58, 0xba, 0xfd, - 0xe9, 0xf8, 0xab, 0x29, 0x11, 0xe4, 0x27, 0x14, 0x45, 0xe6, 0xa8, 0xe2, 0xaf, 0x0b, 0xb1, 0xa3, - 0xd9, 0x2a, 0x32, 0xa1, 0xa4, 0xab, 0x86, 0x79, 0xa6, 0x44, 0xbf, 0x61, 0x70, 0x62, 0xcc, 0xf5, - 0x53, 0x3e, 0xd6, 0x6f, 0x13, 0xcc, 0xa1, 0x33, 0x77, 0xbf, 0x26, 0xaf, 0xe9, 0x89, 0x2b, 0x5b, - 0xf3, 0x90, 0x61, 0xf3, 0x2f, 0xb1, 0x0d, 0x6b, 0xc9, 0xd8, 0x03, 0xf3, 0x91, 0xa9, 0xc1, 0xf9, - 0x48, 0x19, 0xe6, 0xf5, 0x1e, 0xab, 0x6e, 0x78, 0x34, 0x0c, 0x9f, 0xc5, 0xff, 0x14, 0xe0, 0x5a, - 0xbb, 0x1f, 0x75, 0x23, 0x3e, 0xf0, 0x7f, 0x18, 0x7f, 0x7f, 0x62, 0xce, 0x9b, 0xd8, 0x57, 0x7d, - 0x29, 0xc0, 0x75, 0xd9, 0x36, 0xcd, 0x23, 0x55, 0x3b, 0x0d, 0xe4, 0xe6, 0x66, 0xf7, 0xd3, 0x96, - 0x74, 0x9e, 0xb2, 0x9a, 0x3e, 0x92, 0x95, 0x79, 0xa1, 0x1b, 0xff, 0x20, 0x2a, 0x5c, 0xe0, 0x83, - 0xa8, 0xf8, 0x5d, 0x58, 0x4e, 0x1a, 0x23, 0x8f, 0xbe, 0x5a, 0xf3, 0x1a, 0x14, 0xba, 0x86, 0x15, - 0x4d, 0x4f, 0xec, 0x9a, 0x6c, 0xbe, 0x6b, 0x58, 0xfd, 0xd4, 0x44, 0x76, 0xa9, 0x9f, 0x0d, 0x27, - 0xb1, 0x7c, 0x57, 0xfd, 0x2c, 0xdc, 0x25, 0xfe, 0xe3, 0x14, 0x14, 0xdb, 0xd8, 0x67, 0x57, 0x1f, - 0xaf, 0x4e, 0xeb, 0x1d, 0x58, 0x74, 0xb1, 0x67, 0xf7, 0x5c, 0x0d, 0x2b, 0xfc, 0x0e, 0x2c, 0xbb, - 0x70, 0xfb, 0xff, 0x53, 0x9b, 0xfd, 0x18, 0x5b, 0x15, 0x99, 0x9f, 0x10, 0xbd, 0x11, 0x5b, 0x70, - 0x63, 0x40, 0xf4, 0x16, 0x2c, 0xd1, 0xf3, 0x95, 0x63, 0xc3, 0xea, 0x60, 0xd7, 0x71, 0x8d, 0xb0, - 0xbe, 0x29, 0xd2, 0x85, 0x87, 0x7d, 0x78, 0x92, 0x51, 0x96, 0xab, 0xb0, 0x9c, 0x40, 0xe7, 0x5c, - 0xf7, 0x41, 0x7f, 0x4b, 0xa0, 0xb3, 0x93, 0x3d, 0xdc, 0x51, 0xb5, 0xb3, 0xea, 0x91, 0xaa, 0x5d, - 0x9d, 0x5e, 0x23, 0x46, 0x32, 0x13, 0x37, 0x92, 0x24, 0x2b, 0xfe, 0x25, 0x58, 0xa3, 0xf1, 0xbc, - 0xde, 0x92, 0xf9, 0x35, 0xee, 0xab, 0x1f, 0x3c, 0x44, 0xe9, 0x7f, 0x4f, 0x80, 0x17, 0x6a, 0x76, - 0xd7, 0x21, 0x05, 0xf8, 0x57, 0xc9, 0x43, 0x34, 0xe8, 0x9c, 0xc2, 0xd2, 0xd0, 0x75, 0x65, 0x62, - 0x35, 0x91, 0x0b, 0xcb, 0xdc, 0x5d, 0x08, 0x07, 0xd3, 0x72, 0x51, 0x8d, 0xee, 0x26, 0x8e, 0xf5, - 0x26, 0x44, 0x61, 0xac, 0x2b, 0x63, 0x4c, 0x2d, 0x46, 0xe0, 0xa4, 0xd3, 0x12, 0xff, 0x41, 0x80, - 0x75, 0x12, 0xd4, 0x63, 0x37, 0x0d, 0xae, 0x4c, 0xdc, 0xe1, 0x3b, 0x10, 0x33, 0x97, 0xba, 0x03, - 0x91, 0xf4, 0x0a, 0xff, 0x4d, 0x80, 0x17, 0xe9, 0x14, 0x6e, 0xf0, 0x06, 0xc0, 0x95, 0x49, 0x95, - 0x7c, 0x47, 0x61, 0xe6, 0x27, 0x72, 0x47, 0x21, 0x61, 0x7c, 0x73, 0xe7, 0x5f, 0xaf, 0x43, 0x81, - 0x77, 0xee, 0x2c, 0x97, 0xb9, 0xe8, 0x4b, 0x01, 0xf2, 0xd1, 0x79, 0x16, 0x4a, 0x29, 0x88, 0x13, - 0x26, 0x6b, 0xe5, 0xca, 0xa4, 0xdb, 0x59, 0x52, 0x11, 0xbf, 0xf1, 0xfd, 0x7f, 0xfe, 0xf1, 0x6f, - 0x4e, 0xdd, 0x45, 0xb7, 0xc3, 0x3f, 0xda, 0xf8, 0x2e, 0xeb, 0xcd, 0x3e, 0xe4, 0x9a, 0xf4, 0x36, - 0x37, 0x36, 0xc3, 0x6f, 0x8b, 0x9b, 0x1b, 0x9f, 0x6f, 0x86, 0x23, 0xb2, 0xdf, 0x16, 0x00, 0xfa, - 0x33, 0x6f, 0x94, 0xa2, 0xa0, 0xa1, 0xc9, 0x78, 0x79, 0xfc, 0x2c, 0x2e, 0x89, 0x33, 0xa2, 0xb4, - 0x11, 0x7c, 0x85, 0x6c, 0x6d, 0x6e, 0x7c, 0x8e, 0x7e, 0x20, 0xc0, 0x42, 0xec, 0x6b, 0x01, 0x4a, - 0x51, 0x4b, 0xd2, 0x67, 0x85, 0xf2, 0x24, 0x03, 0x24, 0xf1, 0x03, 0xca, 0xe1, 0x3d, 0xf1, 0xfc, - 0xba, 0xbb, 0x2f, 0x6c, 0x50, 0x26, 0x63, 0x63, 0xfb, 0x34, 0x26, 0x93, 0xe6, 0xfb, 0xe7, 0x62, - 0xb2, 0x7c, 0x7e, 0x35, 0x12, 0x26, 0x7f, 0x28, 0xc0, 0x42, 0x6c, 0x12, 0x9e, 0xc6, 0x64, 0xd2, - 0xc8, 0x7c, 0x32, 0x26, 0x7f, 0x96, 0x32, 0xb9, 0x2d, 0x7e, 0x74, 0x7e, 0x26, 0xbd, 0x28, 0x51, - 0xc2, 0xf2, 0x17, 0x02, 0x2c, 0xc4, 0x26, 0xde, 0x69, 0x2c, 0x27, 0x8d, 0xc6, 0x27, 0x63, 0x99, - 0x9b, 0xe7, 0xc6, 0x05, 0xcc, 0xf3, 0x87, 0x02, 0x14, 0xe2, 0xc3, 0x4c, 0xb4, 0x99, 0xee, 0xb6, - 0x43, 0x03, 0xde, 0xf2, 0xad, 0xc9, 0x11, 0xb8, 0xa7, 0x3f, 0xa0, 0x0c, 0xbf, 0x87, 0xee, 0x4e, - 0x6c, 0xad, 0x91, 0xf9, 0xe8, 0x17, 0x02, 0xe4, 0xa3, 0xa3, 0xee, 0xb4, 0xb0, 0x94, 0x30, 0x12, - 0x9f, 0x4c, 0xa5, 0x09, 0x1c, 0xa6, 0xa9, 0xb4, 0xcf, 0x1e, 0xf7, 0xf9, 0xc5, 0x81, 0x31, 0x35, - 0x4a, 0x51, 0x52, 0xf2, 0x44, 0xbb, 0xbc, 0x16, 0x60, 0x04, 0x7f, 0x64, 0x56, 0x91, 0xba, 0x8e, - 0x7f, 0x26, 0x4a, 0x94, 0xb5, 0x8f, 0xc4, 0xfb, 0x17, 0x60, 0xed, 0xbe, 0x46, 0x69, 0x11, 0xdb, - 0xfc, 0x52, 0x80, 0xc5, 0x81, 0x11, 0x72, 0x1a, 0x93, 0xc9, 0xd3, 0xe6, 0xf2, 0xeb, 0x69, 0x2e, - 0xd8, 0xdf, 0x7e, 0x4e, 0x7d, 0x7e, 0xbe, 0xe9, 0x45, 0xd9, 0xfa, 0x91, 0x00, 0x0b, 0xb1, 0x3e, - 0x04, 0x8d, 0x49, 0x2d, 0x83, 0x63, 0xc4, 0xf2, 0xe6, 0xc4, 0xfb, 0xb9, 0x85, 0x72, 0x25, 0xa3, - 0x0f, 0x27, 0xb4, 0xd0, 0xa8, 0x53, 0x6d, 0xf6, 0x6f, 0x7d, 0xfe, 0xbe, 0x00, 0xb9, 0xc8, 0x50, - 0x11, 0xbd, 0x9d, 0xaa, 0xe0, 0x81, 0xd9, 0x63, 0x79, 0x82, 0x8e, 0x2a, 0x89, 0xd1, 0xc9, 0x7c, - 0xbf, 0xcf, 0x65, 0x10, 0x07, 0xe2, 0x73, 0xee, 0xb4, 0x38, 0x90, 0x38, 0x11, 0x9f, 0xcc, 0xb1, - 0x76, 0x29, 0xbf, 0x5b, 0xe2, 0xe5, 0x14, 0x4b, 0x0c, 0xf8, 0x4f, 0x04, 0x28, 0xc4, 0xa7, 0xda, - 0x69, 0x2c, 0x27, 0xce, 0xbf, 0x27, 0x63, 0x99, 0xab, 0x78, 0xe3, 0x92, 0x2a, 0xfe, 0x3b, 0x01, - 0xd6, 0x47, 0xf4, 0xfd, 0x28, 0xe5, 0x6e, 0x53, 0xfa, 0xa8, 0x60, 0x32, 0x09, 0x7e, 0x8e, 0x4a, - 0xf0, 0x48, 0x7c, 0x78, 0x29, 0x09, 0xee, 0xbb, 0x9c, 0x15, 0xa2, 0xfd, 0xbf, 0x17, 0x60, 0x35, - 0x71, 0x70, 0x83, 0xee, 0xa5, 0x66, 0xe5, 0x91, 0x93, 0x9e, 0xc9, 0x24, 0x79, 0x4c, 0x25, 0x69, - 0x89, 0x8f, 0x2e, 0x27, 0x09, 0xcd, 0xd4, 0x01, 0x03, 0x44, 0x9c, 0x3f, 0x16, 0x20, 0x1b, 0x76, - 0xde, 0x68, 0x63, 0xf2, 0xf6, 0x7c, 0x32, 0xb6, 0x1b, 0x94, 0xed, 0x5d, 0xb1, 0x76, 0xa1, 0xa2, - 0x22, 0xde, 0x99, 0x47, 0x6a, 0xa1, 0x7e, 0xaf, 0x3d, 0xa6, 0x16, 0x1a, 0x6a, 0xca, 0xbf, 0x8a, - 0x5a, 0xa8, 0x4f, 0x94, 0xb0, 0xfc, 0x67, 0x02, 0x2c, 0x0e, 0xb4, 0xe1, 0x69, 0xf9, 0x26, 0xb9, - 0x63, 0x9f, 0x8c, 0xed, 0x3d, 0xca, 0xf6, 0x43, 0xb1, 0x7a, 0x01, 0xb6, 0x29, 0x59, 0x27, 0x20, - 0x4b, 0x18, 0xff, 0x2b, 0x01, 0xd0, 0x70, 0xfb, 0x8e, 0xee, 0xa6, 0x84, 0xc7, 0x51, 0xcd, 0xfe, - 0x64, 0xec, 0x37, 0x29, 0xfb, 0x75, 0x71, 0xfb, 0xfc, 0xec, 0x6b, 0x01, 0xe5, 0x98, 0x04, 0x7f, - 0x2e, 0xd0, 0x69, 0x57, 0xfc, 0x6f, 0xbc, 0x6e, 0xa7, 0xbb, 0x69, 0x42, 0xef, 0x3e, 0x19, 0xf7, - 0xfb, 0x94, 0xfb, 0x1d, 0x71, 0xeb, 0x42, 0x36, 0x13, 0xa3, 0x4b, 0x78, 0xff, 0x1b, 0x81, 0xdf, - 0xc8, 0x19, 0x6c, 0x62, 0xc7, 0xdd, 0x97, 0x49, 0xee, 0xd4, 0xaf, 0x38, 0x5e, 0xf2, 0xc8, 0x32, - 0x40, 0xfb, 0xbe, 0xb0, 0xb1, 0xf5, 0x17, 0x02, 0x5c, 0xd3, 0xec, 0xee, 0x48, 0xea, 0x5b, 0xcb, - 0xb5, 0xe0, 0x0f, 0xb4, 0xe8, 0xe5, 0xe3, 0x16, 0x29, 0xfa, 0x5a, 0xc2, 0xd3, 0x2a, 0x47, 0xe8, - 0xd8, 0xa6, 0x6a, 0x75, 0x2a, 0xb6, 0xdb, 0xd9, 0xec, 0x60, 0x8b, 0x96, 0x84, 0x9b, 0x6c, 0x49, - 0x75, 0x0c, 0x6f, 0xf8, 0x1f, 0x1e, 0x3c, 0x08, 0x21, 0x7f, 0x38, 0x75, 0x7d, 0x87, 0x9d, 0x51, - 0x33, 0xed, 0x9e, 0x5e, 0xa9, 0x85, 0xa4, 0x1f, 0xdf, 0xde, 0x22, 0x5b, 0xff, 0x36, 0xd8, 0xf0, - 0x09, 0xdd, 0xf0, 0x49, 0xb8, 0xe1, 0x93, 0xc7, 0xec, 0xac, 0xa3, 0x0c, 0xa5, 0x77, 0xf7, 0x7f, - 0x03, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x57, 0xdd, 0xd1, 0x5f, 0x41, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/datastore/admin/v1beta1/datastore_admin.pb.go b/vendor/google.golang.org/genproto/googleapis/datastore/admin/v1beta1/datastore_admin.pb.go deleted file mode 100644 index e9f3136d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/datastore/admin/v1beta1/datastore_admin.pb.go +++ /dev/null @@ -1,732 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/datastore/admin/v1beta1/datastore_admin.proto - -/* -Package admin is a generated protocol buffer package. - -It is generated from these files: - google/datastore/admin/v1beta1/datastore_admin.proto - -It has these top-level messages: - CommonMetadata - Progress - ExportEntitiesRequest - ImportEntitiesRequest - ExportEntitiesResponse - ExportEntitiesMetadata - ImportEntitiesMetadata - EntityFilter -*/ -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Operation types. -type OperationType int32 - -const ( - // Unspecified. - OperationType_OPERATION_TYPE_UNSPECIFIED OperationType = 0 - // ExportEntities. - OperationType_EXPORT_ENTITIES OperationType = 1 - // ImportEntities. - OperationType_IMPORT_ENTITIES OperationType = 2 -) - -var OperationType_name = map[int32]string{ - 0: "OPERATION_TYPE_UNSPECIFIED", - 1: "EXPORT_ENTITIES", - 2: "IMPORT_ENTITIES", -} -var OperationType_value = map[string]int32{ - "OPERATION_TYPE_UNSPECIFIED": 0, - "EXPORT_ENTITIES": 1, - "IMPORT_ENTITIES": 2, -} - -func (x OperationType) String() string { - return proto.EnumName(OperationType_name, int32(x)) -} -func (OperationType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// The various possible states for an ongoing Operation. -type CommonMetadata_State int32 - -const ( - // Unspecified. - CommonMetadata_STATE_UNSPECIFIED CommonMetadata_State = 0 - // Request is being prepared for processing. - CommonMetadata_INITIALIZING CommonMetadata_State = 1 - // Request is actively being processed. - CommonMetadata_PROCESSING CommonMetadata_State = 2 - // Request is in the process of being cancelled after user called - // google.longrunning.Operations.CancelOperation on the operation. - CommonMetadata_CANCELLING CommonMetadata_State = 3 - // Request has been processed and is in its finalization stage. - CommonMetadata_FINALIZING CommonMetadata_State = 4 - // Request has completed successfully. - CommonMetadata_SUCCESSFUL CommonMetadata_State = 5 - // Request has finished being processed, but encountered an error. - CommonMetadata_FAILED CommonMetadata_State = 6 - // Request has finished being cancelled after user called - // google.longrunning.Operations.CancelOperation. - CommonMetadata_CANCELLED CommonMetadata_State = 7 -) - -var CommonMetadata_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "INITIALIZING", - 2: "PROCESSING", - 3: "CANCELLING", - 4: "FINALIZING", - 5: "SUCCESSFUL", - 6: "FAILED", - 7: "CANCELLED", -} -var CommonMetadata_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "INITIALIZING": 1, - "PROCESSING": 2, - "CANCELLING": 3, - "FINALIZING": 4, - "SUCCESSFUL": 5, - "FAILED": 6, - "CANCELLED": 7, -} - -func (x CommonMetadata_State) String() string { - return proto.EnumName(CommonMetadata_State_name, int32(x)) -} -func (CommonMetadata_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// Metadata common to all Datastore Admin operations. -type CommonMetadata struct { - // The time that work began on the operation. - StartTime *google_protobuf3.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The time the operation ended, either successfully or otherwise. - EndTime *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // The type of the operation. Can be used as a filter in - // ListOperationsRequest. - OperationType OperationType `protobuf:"varint,3,opt,name=operation_type,json=operationType,enum=google.datastore.admin.v1beta1.OperationType" json:"operation_type,omitempty"` - // The client-assigned labels which were provided when the operation was - // created. May also include additional labels. - Labels map[string]string `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The current state of the Operation. - State CommonMetadata_State `protobuf:"varint,5,opt,name=state,enum=google.datastore.admin.v1beta1.CommonMetadata_State" json:"state,omitempty"` -} - -func (m *CommonMetadata) Reset() { *m = CommonMetadata{} } -func (m *CommonMetadata) String() string { return proto.CompactTextString(m) } -func (*CommonMetadata) ProtoMessage() {} -func (*CommonMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *CommonMetadata) GetStartTime() *google_protobuf3.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *CommonMetadata) GetEndTime() *google_protobuf3.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *CommonMetadata) GetOperationType() OperationType { - if m != nil { - return m.OperationType - } - return OperationType_OPERATION_TYPE_UNSPECIFIED -} - -func (m *CommonMetadata) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *CommonMetadata) GetState() CommonMetadata_State { - if m != nil { - return m.State - } - return CommonMetadata_STATE_UNSPECIFIED -} - -// Measures the progress of a particular metric. -type Progress struct { - // The amount of work that has been completed. Note that this may be greater - // than work_estimated. - WorkCompleted int64 `protobuf:"varint,1,opt,name=work_completed,json=workCompleted" json:"work_completed,omitempty"` - // An estimate of how much work needs to be performed. May be zero if the - // work estimate is unavailable. - WorkEstimated int64 `protobuf:"varint,2,opt,name=work_estimated,json=workEstimated" json:"work_estimated,omitempty"` -} - -func (m *Progress) Reset() { *m = Progress{} } -func (m *Progress) String() string { return proto.CompactTextString(m) } -func (*Progress) ProtoMessage() {} -func (*Progress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Progress) GetWorkCompleted() int64 { - if m != nil { - return m.WorkCompleted - } - return 0 -} - -func (m *Progress) GetWorkEstimated() int64 { - if m != nil { - return m.WorkEstimated - } - return 0 -} - -// The request for -// [google.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities][google.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities]. -type ExportEntitiesRequest struct { - // Project ID against which to make the request. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Client-assigned labels. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Description of what data from the project is included in the export. - EntityFilter *EntityFilter `protobuf:"bytes,3,opt,name=entity_filter,json=entityFilter" json:"entity_filter,omitempty"` - // Location for the export metadata and data files. - // - // The full resource URL of the external storage location. Currently, only - // Google Cloud Storage is supported. So output_url_prefix should be of the - // form: `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is the - // name of the Cloud Storage bucket and `NAMESPACE_PATH` is an optional Cloud - // Storage namespace path (this is not a Cloud Datastore namespace). For more - // information about Cloud Storage namespace paths, see - // [Object name - // considerations](https://cloud.google.com/storage/docs/naming#object-considerations). - // - // The resulting files will be nested deeper than the specified URL prefix. - // The final output URL will be provided in the - // [google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url][google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url] - // field. That value should be used for subsequent ImportEntities operations. - // - // By nesting the data files deeper, the same Cloud Storage bucket can be used - // in multiple ExportEntities operations without conflict. - OutputUrlPrefix string `protobuf:"bytes,4,opt,name=output_url_prefix,json=outputUrlPrefix" json:"output_url_prefix,omitempty"` -} - -func (m *ExportEntitiesRequest) Reset() { *m = ExportEntitiesRequest{} } -func (m *ExportEntitiesRequest) String() string { return proto.CompactTextString(m) } -func (*ExportEntitiesRequest) ProtoMessage() {} -func (*ExportEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ExportEntitiesRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ExportEntitiesRequest) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *ExportEntitiesRequest) GetEntityFilter() *EntityFilter { - if m != nil { - return m.EntityFilter - } - return nil -} - -func (m *ExportEntitiesRequest) GetOutputUrlPrefix() string { - if m != nil { - return m.OutputUrlPrefix - } - return "" -} - -// The request for -// [google.datastore.admin.v1beta1.DatastoreAdmin.ImportEntities][google.datastore.admin.v1beta1.DatastoreAdmin.ImportEntities]. -type ImportEntitiesRequest struct { - // Project ID against which to make the request. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Client-assigned labels. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The full resource URL of the external storage location. Currently, only - // Google Cloud Storage is supported. So input_url should be of the form: - // `gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE`, where - // `BUCKET_NAME` is the name of the Cloud Storage bucket, `NAMESPACE_PATH` is - // an optional Cloud Storage namespace path (this is not a Cloud Datastore - // namespace), and `OVERALL_EXPORT_METADATA_FILE` is the metadata file written - // by the ExportEntities operation. For more information about Cloud Storage - // namespace paths, see - // [Object name - // considerations](https://cloud.google.com/storage/docs/naming#object-considerations). - // - // For more information, see - // [google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url][google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url]. - InputUrl string `protobuf:"bytes,3,opt,name=input_url,json=inputUrl" json:"input_url,omitempty"` - // Optionally specify which kinds/namespaces are to be imported. If provided, - // the list must be a subset of the EntityFilter used in creating the export, - // otherwise a FAILED_PRECONDITION error will be returned. If no filter is - // specified then all entities from the export are imported. - EntityFilter *EntityFilter `protobuf:"bytes,4,opt,name=entity_filter,json=entityFilter" json:"entity_filter,omitempty"` -} - -func (m *ImportEntitiesRequest) Reset() { *m = ImportEntitiesRequest{} } -func (m *ImportEntitiesRequest) String() string { return proto.CompactTextString(m) } -func (*ImportEntitiesRequest) ProtoMessage() {} -func (*ImportEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ImportEntitiesRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ImportEntitiesRequest) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *ImportEntitiesRequest) GetInputUrl() string { - if m != nil { - return m.InputUrl - } - return "" -} - -func (m *ImportEntitiesRequest) GetEntityFilter() *EntityFilter { - if m != nil { - return m.EntityFilter - } - return nil -} - -// The response for -// [google.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities][google.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities]. -type ExportEntitiesResponse struct { - // Location of the output metadata file. This can be used to begin an import - // into Cloud Datastore (this project or another project). See - // [google.datastore.admin.v1beta1.ImportEntitiesRequest.input_url][google.datastore.admin.v1beta1.ImportEntitiesRequest.input_url]. - // Only present if the operation completed successfully. - OutputUrl string `protobuf:"bytes,1,opt,name=output_url,json=outputUrl" json:"output_url,omitempty"` -} - -func (m *ExportEntitiesResponse) Reset() { *m = ExportEntitiesResponse{} } -func (m *ExportEntitiesResponse) String() string { return proto.CompactTextString(m) } -func (*ExportEntitiesResponse) ProtoMessage() {} -func (*ExportEntitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ExportEntitiesResponse) GetOutputUrl() string { - if m != nil { - return m.OutputUrl - } - return "" -} - -// Metadata for ExportEntities operations. -type ExportEntitiesMetadata struct { - // Metadata common to all Datastore Admin operations. - Common *CommonMetadata `protobuf:"bytes,1,opt,name=common" json:"common,omitempty"` - // An estimate of the number of entities processed. - ProgressEntities *Progress `protobuf:"bytes,2,opt,name=progress_entities,json=progressEntities" json:"progress_entities,omitempty"` - // An estimate of the number of bytes processed. - ProgressBytes *Progress `protobuf:"bytes,3,opt,name=progress_bytes,json=progressBytes" json:"progress_bytes,omitempty"` - // Description of which entities are being exported. - EntityFilter *EntityFilter `protobuf:"bytes,4,opt,name=entity_filter,json=entityFilter" json:"entity_filter,omitempty"` - // Location for the export metadata and data files. This will be the same - // value as the - // [google.datastore.admin.v1beta1.ExportEntitiesRequest.output_url_prefix][google.datastore.admin.v1beta1.ExportEntitiesRequest.output_url_prefix] - // field. The final output location is provided in - // [google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url][google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url]. - OutputUrlPrefix string `protobuf:"bytes,5,opt,name=output_url_prefix,json=outputUrlPrefix" json:"output_url_prefix,omitempty"` -} - -func (m *ExportEntitiesMetadata) Reset() { *m = ExportEntitiesMetadata{} } -func (m *ExportEntitiesMetadata) String() string { return proto.CompactTextString(m) } -func (*ExportEntitiesMetadata) ProtoMessage() {} -func (*ExportEntitiesMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ExportEntitiesMetadata) GetCommon() *CommonMetadata { - if m != nil { - return m.Common - } - return nil -} - -func (m *ExportEntitiesMetadata) GetProgressEntities() *Progress { - if m != nil { - return m.ProgressEntities - } - return nil -} - -func (m *ExportEntitiesMetadata) GetProgressBytes() *Progress { - if m != nil { - return m.ProgressBytes - } - return nil -} - -func (m *ExportEntitiesMetadata) GetEntityFilter() *EntityFilter { - if m != nil { - return m.EntityFilter - } - return nil -} - -func (m *ExportEntitiesMetadata) GetOutputUrlPrefix() string { - if m != nil { - return m.OutputUrlPrefix - } - return "" -} - -// Metadata for ImportEntities operations. -type ImportEntitiesMetadata struct { - // Metadata common to all Datastore Admin operations. - Common *CommonMetadata `protobuf:"bytes,1,opt,name=common" json:"common,omitempty"` - // An estimate of the number of entities processed. - ProgressEntities *Progress `protobuf:"bytes,2,opt,name=progress_entities,json=progressEntities" json:"progress_entities,omitempty"` - // An estimate of the number of bytes processed. - ProgressBytes *Progress `protobuf:"bytes,3,opt,name=progress_bytes,json=progressBytes" json:"progress_bytes,omitempty"` - // Description of which entities are being imported. - EntityFilter *EntityFilter `protobuf:"bytes,4,opt,name=entity_filter,json=entityFilter" json:"entity_filter,omitempty"` - // The location of the import metadata file. This will be the same value as - // the [google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url][google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url] - // field. - InputUrl string `protobuf:"bytes,5,opt,name=input_url,json=inputUrl" json:"input_url,omitempty"` -} - -func (m *ImportEntitiesMetadata) Reset() { *m = ImportEntitiesMetadata{} } -func (m *ImportEntitiesMetadata) String() string { return proto.CompactTextString(m) } -func (*ImportEntitiesMetadata) ProtoMessage() {} -func (*ImportEntitiesMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ImportEntitiesMetadata) GetCommon() *CommonMetadata { - if m != nil { - return m.Common - } - return nil -} - -func (m *ImportEntitiesMetadata) GetProgressEntities() *Progress { - if m != nil { - return m.ProgressEntities - } - return nil -} - -func (m *ImportEntitiesMetadata) GetProgressBytes() *Progress { - if m != nil { - return m.ProgressBytes - } - return nil -} - -func (m *ImportEntitiesMetadata) GetEntityFilter() *EntityFilter { - if m != nil { - return m.EntityFilter - } - return nil -} - -func (m *ImportEntitiesMetadata) GetInputUrl() string { - if m != nil { - return m.InputUrl - } - return "" -} - -// Identifies a subset of entities in a project. This is specified as -// combinations of kinds and namespaces (either or both of which may be all, as -// described in the following examples). -// Example usage: -// -// Entire project: -// kinds=[], namespace_ids=[] -// -// Kinds Foo and Bar in all namespaces: -// kinds=['Foo', 'Bar'], namespace_ids=[] -// -// Kinds Foo and Bar only in the default namespace: -// kinds=['Foo', 'Bar'], namespace_ids=[''] -// -// Kinds Foo and Bar in both the default and Baz namespaces: -// kinds=['Foo', 'Bar'], namespace_ids=['', 'Baz'] -// -// The entire Baz namespace: -// kinds=[], namespace_ids=['Baz'] -type EntityFilter struct { - // If empty, then this represents all kinds. - Kinds []string `protobuf:"bytes,1,rep,name=kinds" json:"kinds,omitempty"` - // An empty list represents all namespaces. This is the preferred - // usage for projects that don't use namespaces. - // - // An empty string element represents the default namespace. This should be - // used if the project has data in non-default namespaces, but doesn't want to - // include them. - // Each namespace in this list must be unique. - NamespaceIds []string `protobuf:"bytes,2,rep,name=namespace_ids,json=namespaceIds" json:"namespace_ids,omitempty"` -} - -func (m *EntityFilter) Reset() { *m = EntityFilter{} } -func (m *EntityFilter) String() string { return proto.CompactTextString(m) } -func (*EntityFilter) ProtoMessage() {} -func (*EntityFilter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *EntityFilter) GetKinds() []string { - if m != nil { - return m.Kinds - } - return nil -} - -func (m *EntityFilter) GetNamespaceIds() []string { - if m != nil { - return m.NamespaceIds - } - return nil -} - -func init() { - proto.RegisterType((*CommonMetadata)(nil), "google.datastore.admin.v1beta1.CommonMetadata") - proto.RegisterType((*Progress)(nil), "google.datastore.admin.v1beta1.Progress") - proto.RegisterType((*ExportEntitiesRequest)(nil), "google.datastore.admin.v1beta1.ExportEntitiesRequest") - proto.RegisterType((*ImportEntitiesRequest)(nil), "google.datastore.admin.v1beta1.ImportEntitiesRequest") - proto.RegisterType((*ExportEntitiesResponse)(nil), "google.datastore.admin.v1beta1.ExportEntitiesResponse") - proto.RegisterType((*ExportEntitiesMetadata)(nil), "google.datastore.admin.v1beta1.ExportEntitiesMetadata") - proto.RegisterType((*ImportEntitiesMetadata)(nil), "google.datastore.admin.v1beta1.ImportEntitiesMetadata") - proto.RegisterType((*EntityFilter)(nil), "google.datastore.admin.v1beta1.EntityFilter") - proto.RegisterEnum("google.datastore.admin.v1beta1.OperationType", OperationType_name, OperationType_value) - proto.RegisterEnum("google.datastore.admin.v1beta1.CommonMetadata_State", CommonMetadata_State_name, CommonMetadata_State_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for DatastoreAdmin service - -type DatastoreAdminClient interface { - // Exports a copy of all or a subset of entities from Google Cloud Datastore - // to another storage system, such as Google Cloud Storage. Recent updates to - // entities may not be reflected in the export. The export occurs in the - // background and its progress can be monitored and managed via the - // Operation resource that is created. The output of an export may only be - // used once the associated operation is done. If an export operation is - // cancelled before completion it may leave partial data behind in Google - // Cloud Storage. - ExportEntities(ctx context.Context, in *ExportEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Imports entities into Google Cloud Datastore. Existing entities with the - // same key are overwritten. The import occurs in the background and its - // progress can be monitored and managed via the Operation resource that is - // created. If an ImportEntities operation is cancelled, it is possible - // that a subset of the data has already been imported to Cloud Datastore. - ImportEntities(ctx context.Context, in *ImportEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type datastoreAdminClient struct { - cc *grpc.ClientConn -} - -func NewDatastoreAdminClient(cc *grpc.ClientConn) DatastoreAdminClient { - return &datastoreAdminClient{cc} -} - -func (c *datastoreAdminClient) ExportEntities(ctx context.Context, in *ExportEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.datastore.admin.v1beta1.DatastoreAdmin/ExportEntities", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreAdminClient) ImportEntities(ctx context.Context, in *ImportEntitiesRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.datastore.admin.v1beta1.DatastoreAdmin/ImportEntities", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for DatastoreAdmin service - -type DatastoreAdminServer interface { - // Exports a copy of all or a subset of entities from Google Cloud Datastore - // to another storage system, such as Google Cloud Storage. Recent updates to - // entities may not be reflected in the export. The export occurs in the - // background and its progress can be monitored and managed via the - // Operation resource that is created. The output of an export may only be - // used once the associated operation is done. If an export operation is - // cancelled before completion it may leave partial data behind in Google - // Cloud Storage. - ExportEntities(context.Context, *ExportEntitiesRequest) (*google_longrunning.Operation, error) - // Imports entities into Google Cloud Datastore. Existing entities with the - // same key are overwritten. The import occurs in the background and its - // progress can be monitored and managed via the Operation resource that is - // created. If an ImportEntities operation is cancelled, it is possible - // that a subset of the data has already been imported to Cloud Datastore. - ImportEntities(context.Context, *ImportEntitiesRequest) (*google_longrunning.Operation, error) -} - -func RegisterDatastoreAdminServer(s *grpc.Server, srv DatastoreAdminServer) { - s.RegisterService(&_DatastoreAdmin_serviceDesc, srv) -} - -func _DatastoreAdmin_ExportEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExportEntitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreAdminServer).ExportEntities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.admin.v1beta1.DatastoreAdmin/ExportEntities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreAdminServer).ExportEntities(ctx, req.(*ExportEntitiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatastoreAdmin_ImportEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ImportEntitiesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreAdminServer).ImportEntities(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.admin.v1beta1.DatastoreAdmin/ImportEntities", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreAdminServer).ImportEntities(ctx, req.(*ImportEntitiesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _DatastoreAdmin_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.datastore.admin.v1beta1.DatastoreAdmin", - HandlerType: (*DatastoreAdminServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ExportEntities", - Handler: _DatastoreAdmin_ExportEntities_Handler, - }, - { - MethodName: "ImportEntities", - Handler: _DatastoreAdmin_ImportEntities_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/datastore/admin/v1beta1/datastore_admin.proto", -} - -func init() { - proto.RegisterFile("google/datastore/admin/v1beta1/datastore_admin.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 996 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x41, 0x8f, 0xdb, 0x44, - 0x14, 0xc6, 0xce, 0x26, 0x6d, 0xde, 0x6e, 0xd2, 0xec, 0x94, 0xad, 0xa2, 0x40, 0xcb, 0xca, 0xa5, - 0xd2, 0x6a, 0x05, 0x0e, 0x1b, 0x5a, 0x41, 0x97, 0x53, 0x36, 0xeb, 0x54, 0x46, 0x69, 0x12, 0x1c, - 0x07, 0x75, 0x7b, 0xb1, 0x9c, 0x78, 0x36, 0x32, 0x6b, 0x7b, 0x8c, 0x3d, 0x29, 0x8d, 0x10, 0x17, - 0x2e, 0x1c, 0x38, 0x72, 0xe1, 0x1f, 0x20, 0xf1, 0x1b, 0xb8, 0x70, 0xe1, 0xc2, 0x91, 0xbf, 0xc0, - 0x8f, 0xe0, 0x88, 0x66, 0x3c, 0x76, 0xe2, 0x25, 0x10, 0xca, 0x16, 0x4e, 0xdc, 0xfc, 0xde, 0xbc, - 0xef, 0x9b, 0x37, 0xdf, 0x9b, 0xf7, 0x3c, 0x70, 0x7f, 0x46, 0xc8, 0xcc, 0xc3, 0x4d, 0xc7, 0xa6, - 0x76, 0x4c, 0x49, 0x84, 0x9b, 0xb6, 0xe3, 0xbb, 0x41, 0xf3, 0xd9, 0xd1, 0x04, 0x53, 0xfb, 0x68, - 0xe9, 0xb7, 0xb8, 0x5f, 0x0d, 0x23, 0x42, 0x09, 0xba, 0x93, 0xa0, 0xd4, 0x6c, 0x55, 0x4d, 0x56, - 0x05, 0xaa, 0xf1, 0xba, 0x60, 0xb5, 0x43, 0xb7, 0x69, 0x07, 0x01, 0xa1, 0x36, 0x75, 0x49, 0x10, - 0x27, 0xe8, 0xc6, 0x5d, 0xb1, 0xea, 0x91, 0x60, 0x16, 0xcd, 0x83, 0xc0, 0x0d, 0x66, 0x4d, 0x12, - 0xe2, 0x28, 0x17, 0xf4, 0x86, 0x08, 0xe2, 0xd6, 0x64, 0x7e, 0xde, 0xa4, 0xae, 0x8f, 0x63, 0x6a, - 0xfb, 0x61, 0x12, 0xa0, 0xfc, 0xb8, 0x05, 0xd5, 0x0e, 0xf1, 0x7d, 0x12, 0x3c, 0xc6, 0xd4, 0x66, - 0x99, 0xa0, 0x87, 0x00, 0x31, 0xb5, 0x23, 0x6a, 0xb1, 0xd8, 0xba, 0xb4, 0x2f, 0x1d, 0x6c, 0xb7, - 0x1a, 0xaa, 0xc8, 0x35, 0x25, 0x52, 0xcd, 0x94, 0xc8, 0x28, 0xf3, 0x68, 0x66, 0xa3, 0x07, 0x70, - 0x1d, 0x07, 0x4e, 0x02, 0x94, 0x37, 0x02, 0xaf, 0xe1, 0xc0, 0xe1, 0x30, 0x13, 0xaa, 0x59, 0xe6, - 0x16, 0x5d, 0x84, 0xb8, 0x5e, 0xd8, 0x97, 0x0e, 0xaa, 0xad, 0xb7, 0xd5, 0xbf, 0x56, 0x48, 0x1d, - 0xa4, 0x28, 0x73, 0x11, 0x62, 0xa3, 0x42, 0x56, 0x4d, 0x64, 0x40, 0xc9, 0xb3, 0x27, 0xd8, 0x8b, - 0xeb, 0x5b, 0xfb, 0x85, 0x83, 0xed, 0xd6, 0xf1, 0x26, 0xb6, 0xbc, 0x0e, 0x6a, 0x8f, 0x83, 0xb5, - 0x80, 0x46, 0x0b, 0x43, 0x30, 0xa1, 0x0f, 0xa1, 0x18, 0x53, 0x9b, 0xe2, 0x7a, 0x91, 0x27, 0x78, - 0xff, 0x05, 0x29, 0x47, 0x0c, 0x6b, 0x24, 0x14, 0x8d, 0x87, 0xb0, 0xbd, 0xb2, 0x05, 0xaa, 0x41, - 0xe1, 0x02, 0x2f, 0xb8, 0xde, 0x65, 0x83, 0x7d, 0xa2, 0x57, 0xa1, 0xf8, 0xcc, 0xf6, 0xe6, 0x89, - 0x94, 0x65, 0x23, 0x31, 0x8e, 0xe5, 0xf7, 0x25, 0xe5, 0x6b, 0x09, 0x8a, 0x9c, 0x0b, 0xed, 0xc1, - 0xee, 0xc8, 0x6c, 0x9b, 0x9a, 0x35, 0xee, 0x8f, 0x86, 0x5a, 0x47, 0xef, 0xea, 0xda, 0x69, 0xed, - 0x15, 0x54, 0x83, 0x1d, 0xbd, 0xaf, 0x9b, 0x7a, 0xbb, 0xa7, 0x3f, 0xd5, 0xfb, 0x8f, 0x6a, 0x12, - 0xaa, 0x02, 0x0c, 0x8d, 0x41, 0x47, 0x1b, 0x8d, 0x98, 0x2d, 0x33, 0xbb, 0xd3, 0xee, 0x77, 0xb4, - 0x5e, 0x8f, 0xd9, 0x05, 0x66, 0x77, 0xf5, 0x7e, 0x1a, 0xbf, 0xc5, 0xec, 0xd1, 0xb8, 0xc3, 0xe2, - 0xbb, 0xe3, 0x5e, 0xad, 0x88, 0x00, 0x4a, 0xdd, 0xb6, 0xde, 0xd3, 0x4e, 0x6b, 0x25, 0x54, 0x81, - 0xb2, 0xc0, 0x6a, 0xa7, 0xb5, 0x6b, 0xca, 0x13, 0xb8, 0x3e, 0x8c, 0xc8, 0x2c, 0xc2, 0x71, 0x8c, - 0xee, 0x41, 0xf5, 0x33, 0x12, 0x5d, 0x58, 0x53, 0xe2, 0x87, 0x1e, 0xa6, 0xd8, 0xe1, 0x07, 0x2a, - 0x18, 0x15, 0xe6, 0xed, 0xa4, 0xce, 0x2c, 0x0c, 0xc7, 0xd4, 0xf5, 0x6d, 0x16, 0x26, 0x2f, 0xc3, - 0xb4, 0xd4, 0xa9, 0xfc, 0x2c, 0xc3, 0x9e, 0xf6, 0x3c, 0x24, 0x11, 0xd5, 0x02, 0xea, 0x52, 0x17, - 0xc7, 0x06, 0xfe, 0x74, 0x8e, 0x63, 0x8a, 0x6e, 0x03, 0x84, 0x11, 0xf9, 0x04, 0x4f, 0xa9, 0xe5, - 0x3a, 0x42, 0xb4, 0xb2, 0xf0, 0xe8, 0x0e, 0x3a, 0xcb, 0x6a, 0x2f, 0xf3, 0xda, 0xb7, 0x37, 0x15, - 0x6a, 0xed, 0x2e, 0x6b, 0xaf, 0xc0, 0x47, 0x50, 0xc1, 0x2c, 0x6c, 0x61, 0x9d, 0xbb, 0x1e, 0xc5, - 0x11, 0xbf, 0xab, 0xdb, 0xad, 0xb7, 0x36, 0xee, 0xc0, 0x41, 0x5d, 0x8e, 0x31, 0x76, 0xf0, 0x8a, - 0x85, 0x0e, 0x61, 0x97, 0xcc, 0x69, 0x38, 0xa7, 0xd6, 0x3c, 0xf2, 0xac, 0x30, 0xc2, 0xe7, 0xee, - 0xf3, 0xfa, 0x16, 0x3f, 0xd3, 0x8d, 0x64, 0x61, 0x1c, 0x79, 0x43, 0xee, 0xbe, 0xca, 0xad, 0xf9, - 0x41, 0x86, 0x3d, 0xdd, 0xff, 0x2f, 0xd4, 0x5c, 0xbb, 0xcb, 0x5a, 0x35, 0x5f, 0x83, 0xb2, 0x1b, - 0x88, 0x93, 0x73, 0x25, 0xcb, 0xc6, 0x75, 0xee, 0x18, 0x47, 0xde, 0x1f, 0xa5, 0xde, 0xba, 0xaa, - 0xd4, 0x57, 0x91, 0xef, 0x3d, 0xb8, 0x75, 0xf9, 0x96, 0xc4, 0x21, 0x09, 0x62, 0xcc, 0xe4, 0x5b, - 0xd6, 0x2f, 0x95, 0x2f, 0x2b, 0x9c, 0xf2, 0x55, 0xe1, 0x32, 0x32, 0x9b, 0xb5, 0x5d, 0x28, 0x4d, - 0xf9, 0x88, 0x10, 0x73, 0x56, 0x7d, 0xb1, 0x81, 0x62, 0x08, 0x34, 0x1a, 0xc3, 0x6e, 0x28, 0x5a, - 0xd0, 0xc2, 0x62, 0x13, 0x31, 0x81, 0x0f, 0x36, 0x51, 0xa6, 0xbd, 0x6b, 0xd4, 0x52, 0x8a, 0x34, - 0x4d, 0x34, 0x80, 0x6a, 0x46, 0x3b, 0x59, 0x50, 0x1c, 0x8b, 0xcb, 0xfe, 0xf7, 0x39, 0x2b, 0x29, - 0xfe, 0x84, 0xc1, 0xff, 0x85, 0x8a, 0xae, 0x6f, 0x9e, 0xe2, 0xda, 0xe6, 0x51, 0x7e, 0x93, 0xe1, - 0x56, 0xfe, 0x6e, 0xfe, 0x5f, 0x89, 0x97, 0x57, 0x89, 0x5c, 0x2f, 0x17, 0xf3, 0xbd, 0xac, 0xe8, - 0xb0, 0xb3, 0x0a, 0x65, 0x7d, 0x76, 0xe1, 0x06, 0x4e, 0x5c, 0x97, 0xf6, 0x0b, 0xac, 0xcf, 0xb8, - 0x81, 0xee, 0x42, 0x25, 0xb0, 0x7d, 0x1c, 0x87, 0xf6, 0x14, 0x5b, 0xae, 0x93, 0x0c, 0x9c, 0xb2, - 0xb1, 0x93, 0x39, 0x75, 0x27, 0x3e, 0x3c, 0x83, 0x4a, 0xee, 0xc7, 0x8f, 0xee, 0x40, 0x63, 0x30, - 0xd4, 0x8c, 0xb6, 0xa9, 0x0f, 0xfa, 0x96, 0x79, 0x36, 0xbc, 0xfc, 0x37, 0xbc, 0x09, 0x37, 0xb4, - 0x27, 0xc3, 0x81, 0x61, 0x5a, 0x5a, 0xdf, 0xd4, 0x4d, 0x5d, 0x1b, 0xd5, 0x24, 0xe6, 0xd4, 0x1f, - 0xe7, 0x9d, 0x72, 0xeb, 0x27, 0x19, 0xaa, 0xa7, 0xe9, 0xc9, 0xdb, 0xec, 0xe0, 0xe8, 0x5b, 0x09, - 0xaa, 0xf9, 0xee, 0x45, 0x0f, 0xfe, 0xd1, 0xdf, 0xa4, 0x71, 0x3b, 0x85, 0xad, 0x3c, 0xd9, 0x96, - 0x4f, 0x18, 0xe5, 0x9d, 0x2f, 0x7f, 0xf9, 0xf5, 0x1b, 0xf9, 0x50, 0xb9, 0x97, 0x3d, 0x1b, 0xc5, - 0x04, 0x8e, 0x9b, 0x9f, 0x2f, 0xa7, 0xf3, 0x17, 0xc7, 0x98, 0x93, 0x1f, 0x4b, 0x87, 0x3c, 0xb5, - 0xfc, 0x75, 0xde, 0x9c, 0xda, 0xda, 0xd1, 0xfc, 0xb2, 0x52, 0x73, 0x7d, 0x91, 0xda, 0xc9, 0x77, - 0x12, 0x28, 0x53, 0xe2, 0x6f, 0xc8, 0xe6, 0xe4, 0x66, 0x5e, 0xec, 0x21, 0x7b, 0x24, 0x0e, 0xa5, - 0xa7, 0x1d, 0x01, 0x9b, 0x11, 0xcf, 0x0e, 0x66, 0x2a, 0x89, 0x66, 0xcd, 0x19, 0x0e, 0xf8, 0x13, - 0xb2, 0x99, 0x2c, 0xd9, 0xa1, 0x1b, 0xff, 0xd9, 0x73, 0xfb, 0x03, 0x6e, 0x7d, 0x2f, 0xbf, 0xf9, - 0x28, 0x61, 0xe9, 0x78, 0x64, 0xee, 0xa8, 0xd9, 0x4e, 0x2a, 0xdf, 0x4a, 0xfd, 0xf8, 0xe8, 0x84, - 0x05, 0x4f, 0x4a, 0x9c, 0xf6, 0xdd, 0xdf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x77, 0x71, 0x2d, 0x88, - 0xc4, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/datastore/v1/datastore.pb.go b/vendor/google.golang.org/genproto/googleapis/datastore/v1/datastore.pb.go deleted file mode 100644 index a62c12ea..00000000 --- a/vendor/google.golang.org/genproto/googleapis/datastore/v1/datastore.pb.go +++ /dev/null @@ -1,1692 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/datastore/v1/datastore.proto - -/* -Package datastore is a generated protocol buffer package. - -It is generated from these files: - google/datastore/v1/datastore.proto - google/datastore/v1/entity.proto - google/datastore/v1/query.proto - -It has these top-level messages: - LookupRequest - LookupResponse - RunQueryRequest - RunQueryResponse - BeginTransactionRequest - BeginTransactionResponse - RollbackRequest - RollbackResponse - CommitRequest - CommitResponse - AllocateIdsRequest - AllocateIdsResponse - ReserveIdsRequest - ReserveIdsResponse - Mutation - MutationResult - ReadOptions - TransactionOptions - PartitionId - Key - ArrayValue - Value - Entity - EntityResult - Query - KindExpression - PropertyReference - Projection - PropertyOrder - Filter - CompositeFilter - PropertyFilter - GqlQuery - GqlQueryParameter - QueryResultBatch -*/ -package datastore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The modes available for commits. -type CommitRequest_Mode int32 - -const ( - // Unspecified. This value must not be used. - CommitRequest_MODE_UNSPECIFIED CommitRequest_Mode = 0 - // Transactional: The mutations are either all applied, or none are applied. - // Learn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions). - CommitRequest_TRANSACTIONAL CommitRequest_Mode = 1 - // Non-transactional: The mutations may not apply as all or none. - CommitRequest_NON_TRANSACTIONAL CommitRequest_Mode = 2 -) - -var CommitRequest_Mode_name = map[int32]string{ - 0: "MODE_UNSPECIFIED", - 1: "TRANSACTIONAL", - 2: "NON_TRANSACTIONAL", -} -var CommitRequest_Mode_value = map[string]int32{ - "MODE_UNSPECIFIED": 0, - "TRANSACTIONAL": 1, - "NON_TRANSACTIONAL": 2, -} - -func (x CommitRequest_Mode) String() string { - return proto.EnumName(CommitRequest_Mode_name, int32(x)) -} -func (CommitRequest_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8, 0} } - -// The possible values for read consistencies. -type ReadOptions_ReadConsistency int32 - -const ( - // Unspecified. This value must not be used. - ReadOptions_READ_CONSISTENCY_UNSPECIFIED ReadOptions_ReadConsistency = 0 - // Strong consistency. - ReadOptions_STRONG ReadOptions_ReadConsistency = 1 - // Eventual consistency. - ReadOptions_EVENTUAL ReadOptions_ReadConsistency = 2 -) - -var ReadOptions_ReadConsistency_name = map[int32]string{ - 0: "READ_CONSISTENCY_UNSPECIFIED", - 1: "STRONG", - 2: "EVENTUAL", -} -var ReadOptions_ReadConsistency_value = map[string]int32{ - "READ_CONSISTENCY_UNSPECIFIED": 0, - "STRONG": 1, - "EVENTUAL": 2, -} - -func (x ReadOptions_ReadConsistency) String() string { - return proto.EnumName(ReadOptions_ReadConsistency_name, int32(x)) -} -func (ReadOptions_ReadConsistency) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{16, 0} -} - -// The request for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. -type LookupRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The options for this lookup request. - ReadOptions *ReadOptions `protobuf:"bytes,1,opt,name=read_options,json=readOptions" json:"read_options,omitempty"` - // Keys of entities to look up. - Keys []*Key `protobuf:"bytes,3,rep,name=keys" json:"keys,omitempty"` -} - -func (m *LookupRequest) Reset() { *m = LookupRequest{} } -func (m *LookupRequest) String() string { return proto.CompactTextString(m) } -func (*LookupRequest) ProtoMessage() {} -func (*LookupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *LookupRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *LookupRequest) GetReadOptions() *ReadOptions { - if m != nil { - return m.ReadOptions - } - return nil -} - -func (m *LookupRequest) GetKeys() []*Key { - if m != nil { - return m.Keys - } - return nil -} - -// The response for [Datastore.Lookup][google.datastore.v1.Datastore.Lookup]. -type LookupResponse struct { - // Entities found as `ResultType.FULL` entities. The order of results in this - // field is undefined and has no relation to the order of the keys in the - // input. - Found []*EntityResult `protobuf:"bytes,1,rep,name=found" json:"found,omitempty"` - // Entities not found as `ResultType.KEY_ONLY` entities. The order of results - // in this field is undefined and has no relation to the order of the keys - // in the input. - Missing []*EntityResult `protobuf:"bytes,2,rep,name=missing" json:"missing,omitempty"` - // A list of keys that were not looked up due to resource constraints. The - // order of results in this field is undefined and has no relation to the - // order of the keys in the input. - Deferred []*Key `protobuf:"bytes,3,rep,name=deferred" json:"deferred,omitempty"` -} - -func (m *LookupResponse) Reset() { *m = LookupResponse{} } -func (m *LookupResponse) String() string { return proto.CompactTextString(m) } -func (*LookupResponse) ProtoMessage() {} -func (*LookupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *LookupResponse) GetFound() []*EntityResult { - if m != nil { - return m.Found - } - return nil -} - -func (m *LookupResponse) GetMissing() []*EntityResult { - if m != nil { - return m.Missing - } - return nil -} - -func (m *LookupResponse) GetDeferred() []*Key { - if m != nil { - return m.Deferred - } - return nil -} - -// The request for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. -type RunQueryRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Entities are partitioned into subsets, identified by a partition ID. - // Queries are scoped to a single partition. - // This partition ID is normalized with the standard default context - // partition ID. - PartitionId *PartitionId `protobuf:"bytes,2,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` - // The options for this query. - ReadOptions *ReadOptions `protobuf:"bytes,1,opt,name=read_options,json=readOptions" json:"read_options,omitempty"` - // The type of query. - // - // Types that are valid to be assigned to QueryType: - // *RunQueryRequest_Query - // *RunQueryRequest_GqlQuery - QueryType isRunQueryRequest_QueryType `protobuf_oneof:"query_type"` -} - -func (m *RunQueryRequest) Reset() { *m = RunQueryRequest{} } -func (m *RunQueryRequest) String() string { return proto.CompactTextString(m) } -func (*RunQueryRequest) ProtoMessage() {} -func (*RunQueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isRunQueryRequest_QueryType interface { - isRunQueryRequest_QueryType() -} - -type RunQueryRequest_Query struct { - Query *Query `protobuf:"bytes,3,opt,name=query,oneof"` -} -type RunQueryRequest_GqlQuery struct { - GqlQuery *GqlQuery `protobuf:"bytes,7,opt,name=gql_query,json=gqlQuery,oneof"` -} - -func (*RunQueryRequest_Query) isRunQueryRequest_QueryType() {} -func (*RunQueryRequest_GqlQuery) isRunQueryRequest_QueryType() {} - -func (m *RunQueryRequest) GetQueryType() isRunQueryRequest_QueryType { - if m != nil { - return m.QueryType - } - return nil -} - -func (m *RunQueryRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RunQueryRequest) GetPartitionId() *PartitionId { - if m != nil { - return m.PartitionId - } - return nil -} - -func (m *RunQueryRequest) GetReadOptions() *ReadOptions { - if m != nil { - return m.ReadOptions - } - return nil -} - -func (m *RunQueryRequest) GetQuery() *Query { - if x, ok := m.GetQueryType().(*RunQueryRequest_Query); ok { - return x.Query - } - return nil -} - -func (m *RunQueryRequest) GetGqlQuery() *GqlQuery { - if x, ok := m.GetQueryType().(*RunQueryRequest_GqlQuery); ok { - return x.GqlQuery - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RunQueryRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RunQueryRequest_OneofMarshaler, _RunQueryRequest_OneofUnmarshaler, _RunQueryRequest_OneofSizer, []interface{}{ - (*RunQueryRequest_Query)(nil), - (*RunQueryRequest_GqlQuery)(nil), - } -} - -func _RunQueryRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RunQueryRequest) - // query_type - switch x := m.QueryType.(type) { - case *RunQueryRequest_Query: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Query); err != nil { - return err - } - case *RunQueryRequest_GqlQuery: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.GqlQuery); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RunQueryRequest.QueryType has unexpected type %T", x) - } - return nil -} - -func _RunQueryRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RunQueryRequest) - switch tag { - case 3: // query_type.query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Query) - err := b.DecodeMessage(msg) - m.QueryType = &RunQueryRequest_Query{msg} - return true, err - case 7: // query_type.gql_query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GqlQuery) - err := b.DecodeMessage(msg) - m.QueryType = &RunQueryRequest_GqlQuery{msg} - return true, err - default: - return false, nil - } -} - -func _RunQueryRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RunQueryRequest) - // query_type - switch x := m.QueryType.(type) { - case *RunQueryRequest_Query: - s := proto.Size(x.Query) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RunQueryRequest_GqlQuery: - s := proto.Size(x.GqlQuery) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response for [Datastore.RunQuery][google.datastore.v1.Datastore.RunQuery]. -type RunQueryResponse struct { - // A batch of query results (always present). - Batch *QueryResultBatch `protobuf:"bytes,1,opt,name=batch" json:"batch,omitempty"` - // The parsed form of the `GqlQuery` from the request, if it was set. - Query *Query `protobuf:"bytes,2,opt,name=query" json:"query,omitempty"` -} - -func (m *RunQueryResponse) Reset() { *m = RunQueryResponse{} } -func (m *RunQueryResponse) String() string { return proto.CompactTextString(m) } -func (*RunQueryResponse) ProtoMessage() {} -func (*RunQueryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *RunQueryResponse) GetBatch() *QueryResultBatch { - if m != nil { - return m.Batch - } - return nil -} - -func (m *RunQueryResponse) GetQuery() *Query { - if m != nil { - return m.Query - } - return nil -} - -// The request for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. -type BeginTransactionRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Options for a new transaction. - TransactionOptions *TransactionOptions `protobuf:"bytes,10,opt,name=transaction_options,json=transactionOptions" json:"transaction_options,omitempty"` -} - -func (m *BeginTransactionRequest) Reset() { *m = BeginTransactionRequest{} } -func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) } -func (*BeginTransactionRequest) ProtoMessage() {} -func (*BeginTransactionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *BeginTransactionRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *BeginTransactionRequest) GetTransactionOptions() *TransactionOptions { - if m != nil { - return m.TransactionOptions - } - return nil -} - -// The response for [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. -type BeginTransactionResponse struct { - // The transaction identifier (always present). - Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` -} - -func (m *BeginTransactionResponse) Reset() { *m = BeginTransactionResponse{} } -func (m *BeginTransactionResponse) String() string { return proto.CompactTextString(m) } -func (*BeginTransactionResponse) ProtoMessage() {} -func (*BeginTransactionResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *BeginTransactionResponse) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -// The request for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. -type RollbackRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The transaction identifier, returned by a call to - // [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction]. - Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` -} - -func (m *RollbackRequest) Reset() { *m = RollbackRequest{} } -func (m *RollbackRequest) String() string { return proto.CompactTextString(m) } -func (*RollbackRequest) ProtoMessage() {} -func (*RollbackRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *RollbackRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RollbackRequest) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -// The response for [Datastore.Rollback][google.datastore.v1.Datastore.Rollback]. -// (an empty message). -type RollbackResponse struct { -} - -func (m *RollbackResponse) Reset() { *m = RollbackResponse{} } -func (m *RollbackResponse) String() string { return proto.CompactTextString(m) } -func (*RollbackResponse) ProtoMessage() {} -func (*RollbackResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -// The request for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. -type CommitRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The type of commit to perform. Defaults to `TRANSACTIONAL`. - Mode CommitRequest_Mode `protobuf:"varint,5,opt,name=mode,enum=google.datastore.v1.CommitRequest_Mode" json:"mode,omitempty"` - // Must be set when mode is `TRANSACTIONAL`. - // - // Types that are valid to be assigned to TransactionSelector: - // *CommitRequest_Transaction - TransactionSelector isCommitRequest_TransactionSelector `protobuf_oneof:"transaction_selector"` - // The mutations to perform. - // - // When mode is `TRANSACTIONAL`, mutations affecting a single entity are - // applied in order. The following sequences of mutations affecting a single - // entity are not permitted in a single `Commit` request: - // - // - `insert` followed by `insert` - // - `update` followed by `insert` - // - `upsert` followed by `insert` - // - `delete` followed by `update` - // - // When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single - // entity. - Mutations []*Mutation `protobuf:"bytes,6,rep,name=mutations" json:"mutations,omitempty"` -} - -func (m *CommitRequest) Reset() { *m = CommitRequest{} } -func (m *CommitRequest) String() string { return proto.CompactTextString(m) } -func (*CommitRequest) ProtoMessage() {} -func (*CommitRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -type isCommitRequest_TransactionSelector interface { - isCommitRequest_TransactionSelector() -} - -type CommitRequest_Transaction struct { - Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3,oneof"` -} - -func (*CommitRequest_Transaction) isCommitRequest_TransactionSelector() {} - -func (m *CommitRequest) GetTransactionSelector() isCommitRequest_TransactionSelector { - if m != nil { - return m.TransactionSelector - } - return nil -} - -func (m *CommitRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CommitRequest) GetMode() CommitRequest_Mode { - if m != nil { - return m.Mode - } - return CommitRequest_MODE_UNSPECIFIED -} - -func (m *CommitRequest) GetTransaction() []byte { - if x, ok := m.GetTransactionSelector().(*CommitRequest_Transaction); ok { - return x.Transaction - } - return nil -} - -func (m *CommitRequest) GetMutations() []*Mutation { - if m != nil { - return m.Mutations - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CommitRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CommitRequest_OneofMarshaler, _CommitRequest_OneofUnmarshaler, _CommitRequest_OneofSizer, []interface{}{ - (*CommitRequest_Transaction)(nil), - } -} - -func _CommitRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CommitRequest) - // transaction_selector - switch x := m.TransactionSelector.(type) { - case *CommitRequest_Transaction: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Transaction) - case nil: - default: - return fmt.Errorf("CommitRequest.TransactionSelector has unexpected type %T", x) - } - return nil -} - -func _CommitRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CommitRequest) - switch tag { - case 1: // transaction_selector.transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.TransactionSelector = &CommitRequest_Transaction{x} - return true, err - default: - return false, nil - } -} - -func _CommitRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CommitRequest) - // transaction_selector - switch x := m.TransactionSelector.(type) { - case *CommitRequest_Transaction: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Transaction))) - n += len(x.Transaction) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response for [Datastore.Commit][google.datastore.v1.Datastore.Commit]. -type CommitResponse struct { - // The result of performing the mutations. - // The i-th mutation result corresponds to the i-th mutation in the request. - MutationResults []*MutationResult `protobuf:"bytes,3,rep,name=mutation_results,json=mutationResults" json:"mutation_results,omitempty"` - // The number of index entries updated during the commit, or zero if none were - // updated. - IndexUpdates int32 `protobuf:"varint,4,opt,name=index_updates,json=indexUpdates" json:"index_updates,omitempty"` -} - -func (m *CommitResponse) Reset() { *m = CommitResponse{} } -func (m *CommitResponse) String() string { return proto.CompactTextString(m) } -func (*CommitResponse) ProtoMessage() {} -func (*CommitResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *CommitResponse) GetMutationResults() []*MutationResult { - if m != nil { - return m.MutationResults - } - return nil -} - -func (m *CommitResponse) GetIndexUpdates() int32 { - if m != nil { - return m.IndexUpdates - } - return 0 -} - -// The request for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. -type AllocateIdsRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // A list of keys with incomplete key paths for which to allocate IDs. - // No key may be reserved/read-only. - Keys []*Key `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` -} - -func (m *AllocateIdsRequest) Reset() { *m = AllocateIdsRequest{} } -func (m *AllocateIdsRequest) String() string { return proto.CompactTextString(m) } -func (*AllocateIdsRequest) ProtoMessage() {} -func (*AllocateIdsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *AllocateIdsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *AllocateIdsRequest) GetKeys() []*Key { - if m != nil { - return m.Keys - } - return nil -} - -// The response for [Datastore.AllocateIds][google.datastore.v1.Datastore.AllocateIds]. -type AllocateIdsResponse struct { - // The keys specified in the request (in the same order), each with - // its key path completed with a newly allocated ID. - Keys []*Key `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` -} - -func (m *AllocateIdsResponse) Reset() { *m = AllocateIdsResponse{} } -func (m *AllocateIdsResponse) String() string { return proto.CompactTextString(m) } -func (*AllocateIdsResponse) ProtoMessage() {} -func (*AllocateIdsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *AllocateIdsResponse) GetKeys() []*Key { - if m != nil { - return m.Keys - } - return nil -} - -// The request for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. -type ReserveIdsRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // If not empty, the ID of the database against which to make the request. - DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId" json:"database_id,omitempty"` - // A list of keys with complete key paths whose numeric IDs should not be - // auto-allocated. - Keys []*Key `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` -} - -func (m *ReserveIdsRequest) Reset() { *m = ReserveIdsRequest{} } -func (m *ReserveIdsRequest) String() string { return proto.CompactTextString(m) } -func (*ReserveIdsRequest) ProtoMessage() {} -func (*ReserveIdsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *ReserveIdsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ReserveIdsRequest) GetDatabaseId() string { - if m != nil { - return m.DatabaseId - } - return "" -} - -func (m *ReserveIdsRequest) GetKeys() []*Key { - if m != nil { - return m.Keys - } - return nil -} - -// The response for [Datastore.ReserveIds][google.datastore.v1.Datastore.ReserveIds]. -type ReserveIdsResponse struct { -} - -func (m *ReserveIdsResponse) Reset() { *m = ReserveIdsResponse{} } -func (m *ReserveIdsResponse) String() string { return proto.CompactTextString(m) } -func (*ReserveIdsResponse) ProtoMessage() {} -func (*ReserveIdsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -// A mutation to apply to an entity. -type Mutation struct { - // The mutation operation. - // - // For `insert`, `update`, and `upsert`: - // - The entity's key must not be reserved/read-only. - // - No property in the entity may have a reserved name, - // not even a property in an entity in a value. - // - No value in the entity may have meaning 18, - // not even a value in an entity in another value. - // - // Types that are valid to be assigned to Operation: - // *Mutation_Insert - // *Mutation_Update - // *Mutation_Upsert - // *Mutation_Delete - Operation isMutation_Operation `protobuf_oneof:"operation"` - // When set, the server will detect whether or not this mutation conflicts - // with the current version of the entity on the server. Conflicting mutations - // are not applied, and are marked as such in MutationResult. - // - // Types that are valid to be assigned to ConflictDetectionStrategy: - // *Mutation_BaseVersion - ConflictDetectionStrategy isMutation_ConflictDetectionStrategy `protobuf_oneof:"conflict_detection_strategy"` -} - -func (m *Mutation) Reset() { *m = Mutation{} } -func (m *Mutation) String() string { return proto.CompactTextString(m) } -func (*Mutation) ProtoMessage() {} -func (*Mutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -type isMutation_Operation interface { - isMutation_Operation() -} -type isMutation_ConflictDetectionStrategy interface { - isMutation_ConflictDetectionStrategy() -} - -type Mutation_Insert struct { - Insert *Entity `protobuf:"bytes,4,opt,name=insert,oneof"` -} -type Mutation_Update struct { - Update *Entity `protobuf:"bytes,5,opt,name=update,oneof"` -} -type Mutation_Upsert struct { - Upsert *Entity `protobuf:"bytes,6,opt,name=upsert,oneof"` -} -type Mutation_Delete struct { - Delete *Key `protobuf:"bytes,7,opt,name=delete,oneof"` -} -type Mutation_BaseVersion struct { - BaseVersion int64 `protobuf:"varint,8,opt,name=base_version,json=baseVersion,oneof"` -} - -func (*Mutation_Insert) isMutation_Operation() {} -func (*Mutation_Update) isMutation_Operation() {} -func (*Mutation_Upsert) isMutation_Operation() {} -func (*Mutation_Delete) isMutation_Operation() {} -func (*Mutation_BaseVersion) isMutation_ConflictDetectionStrategy() {} - -func (m *Mutation) GetOperation() isMutation_Operation { - if m != nil { - return m.Operation - } - return nil -} -func (m *Mutation) GetConflictDetectionStrategy() isMutation_ConflictDetectionStrategy { - if m != nil { - return m.ConflictDetectionStrategy - } - return nil -} - -func (m *Mutation) GetInsert() *Entity { - if x, ok := m.GetOperation().(*Mutation_Insert); ok { - return x.Insert - } - return nil -} - -func (m *Mutation) GetUpdate() *Entity { - if x, ok := m.GetOperation().(*Mutation_Update); ok { - return x.Update - } - return nil -} - -func (m *Mutation) GetUpsert() *Entity { - if x, ok := m.GetOperation().(*Mutation_Upsert); ok { - return x.Upsert - } - return nil -} - -func (m *Mutation) GetDelete() *Key { - if x, ok := m.GetOperation().(*Mutation_Delete); ok { - return x.Delete - } - return nil -} - -func (m *Mutation) GetBaseVersion() int64 { - if x, ok := m.GetConflictDetectionStrategy().(*Mutation_BaseVersion); ok { - return x.BaseVersion - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Mutation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Mutation_OneofMarshaler, _Mutation_OneofUnmarshaler, _Mutation_OneofSizer, []interface{}{ - (*Mutation_Insert)(nil), - (*Mutation_Update)(nil), - (*Mutation_Upsert)(nil), - (*Mutation_Delete)(nil), - (*Mutation_BaseVersion)(nil), - } -} - -func _Mutation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Mutation) - // operation - switch x := m.Operation.(type) { - case *Mutation_Insert: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Insert); err != nil { - return err - } - case *Mutation_Update: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Update); err != nil { - return err - } - case *Mutation_Upsert: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Upsert); err != nil { - return err - } - case *Mutation_Delete: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Delete); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Mutation.Operation has unexpected type %T", x) - } - // conflict_detection_strategy - switch x := m.ConflictDetectionStrategy.(type) { - case *Mutation_BaseVersion: - b.EncodeVarint(8<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.BaseVersion)) - case nil: - default: - return fmt.Errorf("Mutation.ConflictDetectionStrategy has unexpected type %T", x) - } - return nil -} - -func _Mutation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Mutation) - switch tag { - case 4: // operation.insert - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Entity) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Insert{msg} - return true, err - case 5: // operation.update - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Entity) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Update{msg} - return true, err - case 6: // operation.upsert - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Entity) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Upsert{msg} - return true, err - case 7: // operation.delete - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Key) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Delete{msg} - return true, err - case 8: // conflict_detection_strategy.base_version - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ConflictDetectionStrategy = &Mutation_BaseVersion{int64(x)} - return true, err - default: - return false, nil - } -} - -func _Mutation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Mutation) - // operation - switch x := m.Operation.(type) { - case *Mutation_Insert: - s := proto.Size(x.Insert) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Update: - s := proto.Size(x.Update) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Upsert: - s := proto.Size(x.Upsert) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Delete: - s := proto.Size(x.Delete) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // conflict_detection_strategy - switch x := m.ConflictDetectionStrategy.(type) { - case *Mutation_BaseVersion: - n += proto.SizeVarint(8<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.BaseVersion)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The result of applying a mutation. -type MutationResult struct { - // The automatically allocated key. - // Set only when the mutation allocated a key. - Key *Key `protobuf:"bytes,3,opt,name=key" json:"key,omitempty"` - // The version of the entity on the server after processing the mutation. If - // the mutation doesn't change anything on the server, then the version will - // be the version of the current entity or, if no entity is present, a version - // that is strictly greater than the version of any previous entity and less - // than the version of any possible future entity. - Version int64 `protobuf:"varint,4,opt,name=version" json:"version,omitempty"` - // Whether a conflict was detected for this mutation. Always false when a - // conflict detection strategy field is not set in the mutation. - ConflictDetected bool `protobuf:"varint,5,opt,name=conflict_detected,json=conflictDetected" json:"conflict_detected,omitempty"` -} - -func (m *MutationResult) Reset() { *m = MutationResult{} } -func (m *MutationResult) String() string { return proto.CompactTextString(m) } -func (*MutationResult) ProtoMessage() {} -func (*MutationResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *MutationResult) GetKey() *Key { - if m != nil { - return m.Key - } - return nil -} - -func (m *MutationResult) GetVersion() int64 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *MutationResult) GetConflictDetected() bool { - if m != nil { - return m.ConflictDetected - } - return false -} - -// The options shared by read requests. -type ReadOptions struct { - // If not specified, lookups and ancestor queries default to - // `read_consistency`=`STRONG`, global queries default to - // `read_consistency`=`EVENTUAL`. - // - // Types that are valid to be assigned to ConsistencyType: - // *ReadOptions_ReadConsistency_ - // *ReadOptions_Transaction - ConsistencyType isReadOptions_ConsistencyType `protobuf_oneof:"consistency_type"` -} - -func (m *ReadOptions) Reset() { *m = ReadOptions{} } -func (m *ReadOptions) String() string { return proto.CompactTextString(m) } -func (*ReadOptions) ProtoMessage() {} -func (*ReadOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -type isReadOptions_ConsistencyType interface { - isReadOptions_ConsistencyType() -} - -type ReadOptions_ReadConsistency_ struct { - ReadConsistency ReadOptions_ReadConsistency `protobuf:"varint,1,opt,name=read_consistency,json=readConsistency,enum=google.datastore.v1.ReadOptions_ReadConsistency,oneof"` -} -type ReadOptions_Transaction struct { - Transaction []byte `protobuf:"bytes,2,opt,name=transaction,proto3,oneof"` -} - -func (*ReadOptions_ReadConsistency_) isReadOptions_ConsistencyType() {} -func (*ReadOptions_Transaction) isReadOptions_ConsistencyType() {} - -func (m *ReadOptions) GetConsistencyType() isReadOptions_ConsistencyType { - if m != nil { - return m.ConsistencyType - } - return nil -} - -func (m *ReadOptions) GetReadConsistency() ReadOptions_ReadConsistency { - if x, ok := m.GetConsistencyType().(*ReadOptions_ReadConsistency_); ok { - return x.ReadConsistency - } - return ReadOptions_READ_CONSISTENCY_UNSPECIFIED -} - -func (m *ReadOptions) GetTransaction() []byte { - if x, ok := m.GetConsistencyType().(*ReadOptions_Transaction); ok { - return x.Transaction - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ReadOptions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ReadOptions_OneofMarshaler, _ReadOptions_OneofUnmarshaler, _ReadOptions_OneofSizer, []interface{}{ - (*ReadOptions_ReadConsistency_)(nil), - (*ReadOptions_Transaction)(nil), - } -} - -func _ReadOptions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ReadOptions) - // consistency_type - switch x := m.ConsistencyType.(type) { - case *ReadOptions_ReadConsistency_: - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.ReadConsistency)) - case *ReadOptions_Transaction: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Transaction) - case nil: - default: - return fmt.Errorf("ReadOptions.ConsistencyType has unexpected type %T", x) - } - return nil -} - -func _ReadOptions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ReadOptions) - switch tag { - case 1: // consistency_type.read_consistency - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ConsistencyType = &ReadOptions_ReadConsistency_{ReadOptions_ReadConsistency(x)} - return true, err - case 2: // consistency_type.transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ConsistencyType = &ReadOptions_Transaction{x} - return true, err - default: - return false, nil - } -} - -func _ReadOptions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ReadOptions) - // consistency_type - switch x := m.ConsistencyType.(type) { - case *ReadOptions_ReadConsistency_: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.ReadConsistency)) - case *ReadOptions_Transaction: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Transaction))) - n += len(x.Transaction) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Options for beginning a new transaction. -// -// Transactions can be created explicitly with calls to -// [Datastore.BeginTransaction][google.datastore.v1.Datastore.BeginTransaction] or implicitly by setting -// [ReadOptions.new_transaction][google.datastore.v1.ReadOptions.new_transaction] in read requests. -type TransactionOptions struct { - // The `mode` of the transaction, indicating whether write operations are - // supported. - // - // Types that are valid to be assigned to Mode: - // *TransactionOptions_ReadWrite_ - // *TransactionOptions_ReadOnly_ - Mode isTransactionOptions_Mode `protobuf_oneof:"mode"` -} - -func (m *TransactionOptions) Reset() { *m = TransactionOptions{} } -func (m *TransactionOptions) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions) ProtoMessage() {} -func (*TransactionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -type isTransactionOptions_Mode interface { - isTransactionOptions_Mode() -} - -type TransactionOptions_ReadWrite_ struct { - ReadWrite *TransactionOptions_ReadWrite `protobuf:"bytes,1,opt,name=read_write,json=readWrite,oneof"` -} -type TransactionOptions_ReadOnly_ struct { - ReadOnly *TransactionOptions_ReadOnly `protobuf:"bytes,2,opt,name=read_only,json=readOnly,oneof"` -} - -func (*TransactionOptions_ReadWrite_) isTransactionOptions_Mode() {} -func (*TransactionOptions_ReadOnly_) isTransactionOptions_Mode() {} - -func (m *TransactionOptions) GetMode() isTransactionOptions_Mode { - if m != nil { - return m.Mode - } - return nil -} - -func (m *TransactionOptions) GetReadWrite() *TransactionOptions_ReadWrite { - if x, ok := m.GetMode().(*TransactionOptions_ReadWrite_); ok { - return x.ReadWrite - } - return nil -} - -func (m *TransactionOptions) GetReadOnly() *TransactionOptions_ReadOnly { - if x, ok := m.GetMode().(*TransactionOptions_ReadOnly_); ok { - return x.ReadOnly - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TransactionOptions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TransactionOptions_OneofMarshaler, _TransactionOptions_OneofUnmarshaler, _TransactionOptions_OneofSizer, []interface{}{ - (*TransactionOptions_ReadWrite_)(nil), - (*TransactionOptions_ReadOnly_)(nil), - } -} - -func _TransactionOptions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TransactionOptions) - // mode - switch x := m.Mode.(type) { - case *TransactionOptions_ReadWrite_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadWrite); err != nil { - return err - } - case *TransactionOptions_ReadOnly_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadOnly); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransactionOptions.Mode has unexpected type %T", x) - } - return nil -} - -func _TransactionOptions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TransactionOptions) - switch tag { - case 1: // mode.read_write - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions_ReadWrite) - err := b.DecodeMessage(msg) - m.Mode = &TransactionOptions_ReadWrite_{msg} - return true, err - case 2: // mode.read_only - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions_ReadOnly) - err := b.DecodeMessage(msg) - m.Mode = &TransactionOptions_ReadOnly_{msg} - return true, err - default: - return false, nil - } -} - -func _TransactionOptions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TransactionOptions) - // mode - switch x := m.Mode.(type) { - case *TransactionOptions_ReadWrite_: - s := proto.Size(x.ReadWrite) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransactionOptions_ReadOnly_: - s := proto.Size(x.ReadOnly) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Options specific to read / write transactions. -type TransactionOptions_ReadWrite struct { - // The transaction identifier of the transaction being retried. - PreviousTransaction []byte `protobuf:"bytes,1,opt,name=previous_transaction,json=previousTransaction,proto3" json:"previous_transaction,omitempty"` -} - -func (m *TransactionOptions_ReadWrite) Reset() { *m = TransactionOptions_ReadWrite{} } -func (m *TransactionOptions_ReadWrite) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions_ReadWrite) ProtoMessage() {} -func (*TransactionOptions_ReadWrite) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{17, 0} -} - -func (m *TransactionOptions_ReadWrite) GetPreviousTransaction() []byte { - if m != nil { - return m.PreviousTransaction - } - return nil -} - -// Options specific to read-only transactions. -type TransactionOptions_ReadOnly struct { -} - -func (m *TransactionOptions_ReadOnly) Reset() { *m = TransactionOptions_ReadOnly{} } -func (m *TransactionOptions_ReadOnly) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions_ReadOnly) ProtoMessage() {} -func (*TransactionOptions_ReadOnly) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17, 1} } - -func init() { - proto.RegisterType((*LookupRequest)(nil), "google.datastore.v1.LookupRequest") - proto.RegisterType((*LookupResponse)(nil), "google.datastore.v1.LookupResponse") - proto.RegisterType((*RunQueryRequest)(nil), "google.datastore.v1.RunQueryRequest") - proto.RegisterType((*RunQueryResponse)(nil), "google.datastore.v1.RunQueryResponse") - proto.RegisterType((*BeginTransactionRequest)(nil), "google.datastore.v1.BeginTransactionRequest") - proto.RegisterType((*BeginTransactionResponse)(nil), "google.datastore.v1.BeginTransactionResponse") - proto.RegisterType((*RollbackRequest)(nil), "google.datastore.v1.RollbackRequest") - proto.RegisterType((*RollbackResponse)(nil), "google.datastore.v1.RollbackResponse") - proto.RegisterType((*CommitRequest)(nil), "google.datastore.v1.CommitRequest") - proto.RegisterType((*CommitResponse)(nil), "google.datastore.v1.CommitResponse") - proto.RegisterType((*AllocateIdsRequest)(nil), "google.datastore.v1.AllocateIdsRequest") - proto.RegisterType((*AllocateIdsResponse)(nil), "google.datastore.v1.AllocateIdsResponse") - proto.RegisterType((*ReserveIdsRequest)(nil), "google.datastore.v1.ReserveIdsRequest") - proto.RegisterType((*ReserveIdsResponse)(nil), "google.datastore.v1.ReserveIdsResponse") - proto.RegisterType((*Mutation)(nil), "google.datastore.v1.Mutation") - proto.RegisterType((*MutationResult)(nil), "google.datastore.v1.MutationResult") - proto.RegisterType((*ReadOptions)(nil), "google.datastore.v1.ReadOptions") - proto.RegisterType((*TransactionOptions)(nil), "google.datastore.v1.TransactionOptions") - proto.RegisterType((*TransactionOptions_ReadWrite)(nil), "google.datastore.v1.TransactionOptions.ReadWrite") - proto.RegisterType((*TransactionOptions_ReadOnly)(nil), "google.datastore.v1.TransactionOptions.ReadOnly") - proto.RegisterEnum("google.datastore.v1.CommitRequest_Mode", CommitRequest_Mode_name, CommitRequest_Mode_value) - proto.RegisterEnum("google.datastore.v1.ReadOptions_ReadConsistency", ReadOptions_ReadConsistency_name, ReadOptions_ReadConsistency_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Datastore service - -type DatastoreClient interface { - // Looks up entities by key. - Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*LookupResponse, error) - // Queries for entities. - RunQuery(ctx context.Context, in *RunQueryRequest, opts ...grpc.CallOption) (*RunQueryResponse, error) - // Begins a new transaction. - BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) - // Commits a transaction, optionally creating, deleting or modifying some - // entities. - Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) - // Rolls back a transaction. - Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*RollbackResponse, error) - // Allocates IDs for the given keys, which is useful for referencing an entity - // before it is inserted. - AllocateIds(ctx context.Context, in *AllocateIdsRequest, opts ...grpc.CallOption) (*AllocateIdsResponse, error) - // Prevents the supplied keys' IDs from being auto-allocated by Cloud - // Datastore. - ReserveIds(ctx context.Context, in *ReserveIdsRequest, opts ...grpc.CallOption) (*ReserveIdsResponse, error) -} - -type datastoreClient struct { - cc *grpc.ClientConn -} - -func NewDatastoreClient(cc *grpc.ClientConn) DatastoreClient { - return &datastoreClient{cc} -} - -func (c *datastoreClient) Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*LookupResponse, error) { - out := new(LookupResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1.Datastore/Lookup", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) RunQuery(ctx context.Context, in *RunQueryRequest, opts ...grpc.CallOption) (*RunQueryResponse, error) { - out := new(RunQueryResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1.Datastore/RunQuery", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) { - out := new(BeginTransactionResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1.Datastore/BeginTransaction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) { - out := new(CommitResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1.Datastore/Commit", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*RollbackResponse, error) { - out := new(RollbackResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1.Datastore/Rollback", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) AllocateIds(ctx context.Context, in *AllocateIdsRequest, opts ...grpc.CallOption) (*AllocateIdsResponse, error) { - out := new(AllocateIdsResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1.Datastore/AllocateIds", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) ReserveIds(ctx context.Context, in *ReserveIdsRequest, opts ...grpc.CallOption) (*ReserveIdsResponse, error) { - out := new(ReserveIdsResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1.Datastore/ReserveIds", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Datastore service - -type DatastoreServer interface { - // Looks up entities by key. - Lookup(context.Context, *LookupRequest) (*LookupResponse, error) - // Queries for entities. - RunQuery(context.Context, *RunQueryRequest) (*RunQueryResponse, error) - // Begins a new transaction. - BeginTransaction(context.Context, *BeginTransactionRequest) (*BeginTransactionResponse, error) - // Commits a transaction, optionally creating, deleting or modifying some - // entities. - Commit(context.Context, *CommitRequest) (*CommitResponse, error) - // Rolls back a transaction. - Rollback(context.Context, *RollbackRequest) (*RollbackResponse, error) - // Allocates IDs for the given keys, which is useful for referencing an entity - // before it is inserted. - AllocateIds(context.Context, *AllocateIdsRequest) (*AllocateIdsResponse, error) - // Prevents the supplied keys' IDs from being auto-allocated by Cloud - // Datastore. - ReserveIds(context.Context, *ReserveIdsRequest) (*ReserveIdsResponse, error) -} - -func RegisterDatastoreServer(s *grpc.Server, srv DatastoreServer) { - s.RegisterService(&_Datastore_serviceDesc, srv) -} - -func _Datastore_Lookup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LookupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).Lookup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1.Datastore/Lookup", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).Lookup(ctx, req.(*LookupRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_RunQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RunQueryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).RunQuery(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1.Datastore/RunQuery", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).RunQuery(ctx, req.(*RunQueryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_BeginTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BeginTransactionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).BeginTransaction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1.Datastore/BeginTransaction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).BeginTransaction(ctx, req.(*BeginTransactionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_Commit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommitRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).Commit(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1.Datastore/Commit", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).Commit(ctx, req.(*CommitRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_Rollback_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RollbackRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).Rollback(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1.Datastore/Rollback", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).Rollback(ctx, req.(*RollbackRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_AllocateIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AllocateIdsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).AllocateIds(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1.Datastore/AllocateIds", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).AllocateIds(ctx, req.(*AllocateIdsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_ReserveIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReserveIdsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).ReserveIds(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1.Datastore/ReserveIds", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).ReserveIds(ctx, req.(*ReserveIdsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Datastore_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.datastore.v1.Datastore", - HandlerType: (*DatastoreServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Lookup", - Handler: _Datastore_Lookup_Handler, - }, - { - MethodName: "RunQuery", - Handler: _Datastore_RunQuery_Handler, - }, - { - MethodName: "BeginTransaction", - Handler: _Datastore_BeginTransaction_Handler, - }, - { - MethodName: "Commit", - Handler: _Datastore_Commit_Handler, - }, - { - MethodName: "Rollback", - Handler: _Datastore_Rollback_Handler, - }, - { - MethodName: "AllocateIds", - Handler: _Datastore_AllocateIds_Handler, - }, - { - MethodName: "ReserveIds", - Handler: _Datastore_ReserveIds_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/datastore/v1/datastore.proto", -} - -func init() { proto.RegisterFile("google/datastore/v1/datastore.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1390 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdf, 0x6f, 0x1b, 0xc5, - 0x13, 0xcf, 0x3a, 0x89, 0x63, 0x8f, 0xf3, 0xc3, 0xd9, 0xe4, 0xfb, 0xad, 0x71, 0x5b, 0xd5, 0x5c, - 0x1a, 0x1a, 0xd2, 0xd6, 0x4e, 0x0c, 0x15, 0x52, 0x53, 0x21, 0xc5, 0x8e, 0xdb, 0x58, 0x34, 0x76, - 0xd8, 0xa4, 0xe1, 0x87, 0x8a, 0xac, 0x8b, 0x6f, 0x6b, 0x8e, 0x9c, 0x6f, 0x2f, 0x77, 0xeb, 0x80, - 0x85, 0xa8, 0x54, 0x10, 0xbc, 0xc1, 0x43, 0xf9, 0x0b, 0xfa, 0xc2, 0x03, 0xe2, 0x91, 0x27, 0xc4, - 0x5f, 0xc0, 0x2b, 0xff, 0x02, 0x8f, 0xbc, 0xf1, 0x0f, 0xa0, 0xdb, 0xdb, 0xb3, 0x7d, 0xce, 0x5d, - 0xec, 0x48, 0xbc, 0x79, 0x67, 0xe7, 0x33, 0xf3, 0x99, 0x99, 0xbd, 0x99, 0x31, 0xac, 0xb4, 0x18, - 0x6b, 0x19, 0xb4, 0xa0, 0xa9, 0x5c, 0x75, 0x38, 0xb3, 0x69, 0xe1, 0x6c, 0xb3, 0x7f, 0xc8, 0x5b, - 0x36, 0xe3, 0x0c, 0x2f, 0x79, 0x4a, 0xf9, 0xbe, 0xfc, 0x6c, 0x33, 0x7b, 0x4d, 0x22, 0x55, 0x4b, - 0x2f, 0xa8, 0xa6, 0xc9, 0xb8, 0xca, 0x75, 0x66, 0x3a, 0x1e, 0x24, 0x9b, 0x0b, 0xb3, 0x4b, 0x4d, - 0xae, 0xf3, 0xae, 0xd4, 0xb8, 0x11, 0xa6, 0x71, 0xda, 0xa1, 0xb6, 0x54, 0x50, 0x5e, 0x21, 0x98, - 0x7b, 0xcc, 0xd8, 0x49, 0xc7, 0x22, 0xf4, 0xb4, 0x43, 0x1d, 0x8e, 0xaf, 0x03, 0x58, 0x36, 0xfb, - 0x8c, 0x36, 0x79, 0x43, 0xd7, 0x32, 0x89, 0x1c, 0x5a, 0x4b, 0x92, 0xa4, 0x94, 0x54, 0x35, 0x5c, - 0x86, 0x59, 0x9b, 0xaa, 0x5a, 0x83, 0x59, 0x82, 0x49, 0x06, 0xe5, 0xd0, 0x5a, 0xaa, 0x98, 0xcb, - 0x87, 0xb0, 0xcf, 0x13, 0xaa, 0x6a, 0x75, 0x4f, 0x8f, 0xa4, 0xec, 0xfe, 0x01, 0xdf, 0x81, 0xa9, - 0x13, 0xda, 0x75, 0x32, 0x93, 0xb9, 0xc9, 0xb5, 0x54, 0x31, 0x13, 0x0a, 0x7e, 0x8f, 0x76, 0x89, - 0xd0, 0x52, 0x7e, 0x47, 0x30, 0xef, 0x73, 0x74, 0x2c, 0x66, 0x3a, 0x14, 0xbf, 0x03, 0xd3, 0xcf, - 0x58, 0xc7, 0xd4, 0x32, 0x48, 0x58, 0x78, 0x3d, 0xd4, 0x42, 0x45, 0x64, 0x82, 0x50, 0xa7, 0x63, - 0x70, 0xe2, 0xe9, 0xe3, 0x2d, 0x98, 0x69, 0xeb, 0x8e, 0xa3, 0x9b, 0xad, 0x4c, 0x6c, 0x5c, 0xa8, - 0x8f, 0xc0, 0x6f, 0x43, 0x42, 0xa3, 0xcf, 0xa8, 0x6d, 0x53, 0x6d, 0x24, 0xf5, 0x9e, 0xa6, 0xf2, - 0x5b, 0x0c, 0x16, 0x48, 0xc7, 0x7c, 0xdf, 0xcd, 0xfa, 0xf8, 0x49, 0xb6, 0x54, 0x9b, 0xeb, 0x6e, - 0xb6, 0x5c, 0x85, 0xd8, 0x05, 0x49, 0xde, 0xf7, 0x15, 0xab, 0x1a, 0x49, 0x59, 0xfd, 0xc3, 0x7f, - 0x53, 0xa9, 0x22, 0x4c, 0x8b, 0xe7, 0x92, 0x99, 0x14, 0xe8, 0x6c, 0x28, 0x5a, 0x84, 0xb6, 0x3b, - 0x41, 0x3c, 0x55, 0xfc, 0x00, 0x92, 0xad, 0x53, 0xa3, 0xe1, 0xe1, 0x66, 0x04, 0xee, 0x7a, 0x28, - 0xee, 0xd1, 0xa9, 0xe1, 0x43, 0x13, 0x2d, 0xf9, 0xbb, 0x34, 0x0b, 0x20, 0x90, 0x0d, 0xde, 0xb5, - 0xa8, 0xf2, 0x02, 0x41, 0xba, 0x9f, 0x3c, 0x59, 0xfd, 0x2d, 0x98, 0x3e, 0x56, 0x79, 0xf3, 0x53, - 0x19, 0xd2, 0x6a, 0x34, 0x29, 0xaf, 0x82, 0x25, 0x57, 0x99, 0x78, 0x18, 0xbc, 0xe1, 0x47, 0x14, - 0x1b, 0x15, 0x91, 0x8c, 0x47, 0x79, 0x89, 0xe0, 0x4a, 0x89, 0xb6, 0x74, 0xf3, 0xd0, 0x56, 0x4d, - 0x47, 0x6d, 0xba, 0x99, 0x19, 0xb3, 0x90, 0x1f, 0xc2, 0x12, 0xef, 0x83, 0x7a, 0xa5, 0x00, 0xe1, - 0xfa, 0x56, 0xa8, 0xeb, 0x01, 0x27, 0x7e, 0x45, 0x30, 0x3f, 0x27, 0x53, 0x1e, 0x40, 0xe6, 0x3c, - 0x27, 0x99, 0x9f, 0x1c, 0xa4, 0x06, 0x10, 0x22, 0x4b, 0xb3, 0x64, 0x50, 0xa4, 0x10, 0x58, 0x20, - 0xcc, 0x30, 0x8e, 0xd5, 0xe6, 0xc9, 0x98, 0x91, 0x8c, 0xb6, 0x89, 0x21, 0xdd, 0xb7, 0xe9, 0x31, - 0x51, 0x7e, 0x89, 0xc1, 0x5c, 0x99, 0xb5, 0xdb, 0x3a, 0x1f, 0xd3, 0xcd, 0x16, 0x4c, 0xb5, 0x99, - 0x46, 0x33, 0xd3, 0x39, 0xb4, 0x36, 0x1f, 0x91, 0xa1, 0x80, 0xc1, 0xfc, 0x1e, 0xd3, 0x28, 0x11, - 0x20, 0xac, 0x84, 0x70, 0xdc, 0x9d, 0x08, 0xb0, 0xc4, 0x5b, 0x90, 0x6c, 0x77, 0x64, 0x1b, 0xcd, - 0xc4, 0xc5, 0x47, 0x1c, 0xfe, 0x38, 0xf7, 0xa4, 0x16, 0xe9, 0xeb, 0x2b, 0x0f, 0x61, 0xca, 0x75, - 0x87, 0x97, 0x21, 0xbd, 0x57, 0xdf, 0xa9, 0x34, 0x9e, 0xd4, 0x0e, 0xf6, 0x2b, 0xe5, 0xea, 0xc3, - 0x6a, 0x65, 0x27, 0x3d, 0x81, 0x17, 0x61, 0xee, 0x90, 0x6c, 0xd7, 0x0e, 0xb6, 0xcb, 0x87, 0xd5, - 0x7a, 0x6d, 0xfb, 0x71, 0x1a, 0xe1, 0xff, 0xc1, 0x62, 0xad, 0x5e, 0x6b, 0x04, 0xc5, 0xb1, 0xd2, - 0xff, 0x61, 0x79, 0xf0, 0x59, 0x38, 0xd4, 0xa0, 0x4d, 0xce, 0x6c, 0xe5, 0x5b, 0x04, 0xf3, 0x7e, - 0x74, 0xb2, 0x96, 0x35, 0x48, 0xfb, 0xfe, 0x1b, 0xb6, 0x78, 0xcd, 0x7e, 0xdb, 0x5c, 0xb9, 0x98, - 0xb6, 0xd7, 0xbb, 0x16, 0xda, 0x81, 0xb3, 0x83, 0x57, 0x60, 0x4e, 0x37, 0x35, 0xfa, 0x45, 0xa3, - 0x63, 0x69, 0x2a, 0xa7, 0x4e, 0x66, 0x2a, 0x87, 0xd6, 0xa6, 0xc9, 0xac, 0x10, 0x3e, 0xf1, 0x64, - 0x8a, 0x0a, 0x78, 0xdb, 0x30, 0x58, 0x53, 0xe5, 0xb4, 0xaa, 0x39, 0x63, 0x96, 0xce, 0x6f, 0xea, - 0x68, 0xac, 0xa6, 0x5e, 0x86, 0xa5, 0x80, 0x0b, 0x19, 0xee, 0xe5, 0x8c, 0xbc, 0x40, 0xb0, 0x48, - 0xa8, 0x43, 0xed, 0xb3, 0x4b, 0xf0, 0xbc, 0x01, 0x29, 0xd7, 0xdc, 0xb1, 0xea, 0x50, 0xf7, 0x3e, - 0x29, 0xee, 0xc1, 0x17, 0x5d, 0x3a, 0x90, 0x65, 0xc0, 0x83, 0x14, 0xe4, 0xc3, 0xff, 0x35, 0x06, - 0x09, 0xbf, 0x14, 0xf8, 0x1e, 0xc4, 0x75, 0xd3, 0xa1, 0x36, 0x17, 0xc9, 0x4e, 0x15, 0xaf, 0x5e, - 0x30, 0x73, 0x76, 0x27, 0x88, 0x54, 0x76, 0x61, 0x5e, 0x91, 0xc4, 0xd7, 0x30, 0x1a, 0xe6, 0x29, - 0x7b, 0x30, 0xe1, 0x2d, 0x3e, 0x26, 0x4c, 0x78, 0x2b, 0x42, 0x5c, 0xa3, 0x06, 0xe5, 0x54, 0xb6, - 0xec, 0xc8, 0xb8, 0x5d, 0x8c, 0xa7, 0x89, 0x57, 0x60, 0x56, 0xa4, 0xf1, 0x8c, 0xda, 0x8e, 0xfb, - 0xc5, 0xb9, 0xb9, 0x9e, 0xdc, 0x45, 0x24, 0xe5, 0x4a, 0x8f, 0x3c, 0x61, 0x29, 0x05, 0x49, 0x66, - 0x51, 0x5b, 0xa4, 0xa2, 0x74, 0x1d, 0xae, 0x36, 0x99, 0xf9, 0xcc, 0xd0, 0x9b, 0xbc, 0xa1, 0x51, - 0x4e, 0xe5, 0x07, 0xc0, 0x6d, 0x95, 0xd3, 0x56, 0x57, 0xf9, 0x06, 0xc1, 0x7c, 0xf0, 0x05, 0xe3, - 0x75, 0x98, 0x3c, 0xa1, 0xfe, 0xfc, 0x89, 0x2e, 0x86, 0xab, 0x84, 0x33, 0x30, 0xe3, 0x53, 0x71, - 0x33, 0x3d, 0x49, 0xfc, 0x23, 0xbe, 0x0d, 0x8b, 0x43, 0x7e, 0xa9, 0x26, 0xd2, 0x9a, 0x20, 0x69, - 0xff, 0x62, 0x47, 0xca, 0x95, 0x7f, 0x10, 0xa4, 0x06, 0x26, 0x22, 0xfe, 0x04, 0xd2, 0x62, 0x92, - 0x36, 0x99, 0xe9, 0xe8, 0x0e, 0xa7, 0x66, 0xb3, 0x2b, 0x9a, 0xcb, 0x7c, 0x71, 0x63, 0xd4, 0x34, - 0x15, 0xbf, 0xcb, 0x7d, 0xdc, 0xee, 0x04, 0x59, 0xb0, 0x83, 0xa2, 0xe1, 0xb6, 0x15, 0x0b, 0x69, - 0x5b, 0xca, 0x1e, 0x2c, 0x0c, 0x59, 0xc2, 0x39, 0xb8, 0x46, 0x2a, 0xdb, 0x3b, 0x8d, 0x72, 0xbd, - 0x76, 0x50, 0x3d, 0x38, 0xac, 0xd4, 0xca, 0x1f, 0x0d, 0x35, 0x24, 0x80, 0xf8, 0xc1, 0x21, 0xa9, - 0xd7, 0x1e, 0xa5, 0x11, 0x9e, 0x85, 0x44, 0xe5, 0xa8, 0x52, 0x3b, 0x7c, 0x22, 0x1a, 0x10, 0x86, - 0xf4, 0x40, 0x30, 0xde, 0xa8, 0xfd, 0x3e, 0x06, 0xf8, 0xfc, 0xf0, 0xc1, 0x04, 0x40, 0x04, 0xff, - 0xb9, 0xad, 0x73, 0x2a, 0x27, 0xee, 0xe6, 0x98, 0x93, 0x4b, 0x44, 0xff, 0x81, 0x0b, 0xdc, 0x9d, - 0x20, 0x49, 0xdb, 0x3f, 0xe0, 0x3a, 0x24, 0xbd, 0xd5, 0xc4, 0x34, 0xfc, 0x39, 0xbc, 0x71, 0x19, - 0x93, 0x75, 0xd3, 0x10, 0x4b, 0x83, 0x2d, 0x7f, 0x67, 0xdf, 0x85, 0x64, 0xcf, 0x15, 0xde, 0x84, - 0x65, 0xcb, 0xa6, 0x67, 0x3a, 0xeb, 0x38, 0x8d, 0xf3, 0x33, 0x6b, 0xc9, 0xbf, 0x1b, 0xb0, 0x9d, - 0x05, 0x48, 0xf8, 0x76, 0x4b, 0x71, 0x6f, 0x04, 0x15, 0xff, 0x9e, 0x81, 0xe4, 0x8e, 0x4f, 0x06, - 0x3f, 0x87, 0xb8, 0xb7, 0x83, 0x62, 0x25, 0x94, 0x69, 0x60, 0x89, 0xce, 0xae, 0x5c, 0xa8, 0x23, - 0x7b, 0xc4, 0xed, 0xaf, 0xff, 0xfc, 0xeb, 0xc7, 0xd8, 0xaa, 0x92, 0x73, 0x97, 0x72, 0xd9, 0x9f, - 0x9c, 0xc2, 0x97, 0xfd, 0xde, 0xf5, 0xd5, 0x7d, 0x43, 0x20, 0xee, 0xa3, 0x75, 0xfc, 0x1d, 0x82, - 0x84, 0xbf, 0x08, 0xe1, 0x9b, 0xe1, 0xcf, 0x2e, 0xb8, 0x64, 0x66, 0x57, 0x47, 0x68, 0x49, 0x1a, - 0x77, 0x05, 0x8d, 0x5b, 0x8a, 0x12, 0x4d, 0xc3, 0x96, 0x18, 0x97, 0xc8, 0x4f, 0x08, 0xd2, 0xc3, - 0x9b, 0x07, 0xbe, 0x13, 0xea, 0x2a, 0x62, 0x69, 0xca, 0xde, 0x1d, 0x53, 0x5b, 0x12, 0xbc, 0x27, - 0x08, 0x16, 0x94, 0xf5, 0x68, 0x82, 0xc7, 0x43, 0x58, 0x97, 0xe8, 0x73, 0x88, 0x7b, 0xb3, 0x34, - 0xa2, 0x62, 0x81, 0x35, 0x22, 0xa2, 0x62, 0xc1, 0x61, 0x3c, 0x4e, 0xc5, 0x9a, 0x02, 0xd1, 0xab, - 0x98, 0x5c, 0x88, 0xa2, 0x2a, 0x16, 0xdc, 0xc1, 0xa2, 0x2a, 0x36, 0xbc, 0x55, 0x8d, 0x53, 0x31, - 0x89, 0x71, 0x89, 0xbc, 0x44, 0x90, 0x1a, 0x98, 0xb5, 0x38, 0x7c, 0xab, 0x3a, 0x3f, 0xf0, 0xb3, - 0x6b, 0xa3, 0x15, 0x25, 0xa3, 0x0d, 0xc1, 0x68, 0x5d, 0x59, 0x8d, 0x66, 0xa4, 0xf6, 0x61, 0x2e, - 0xa9, 0x1f, 0x10, 0x40, 0x7f, 0x6e, 0xe2, 0x37, 0x22, 0x1a, 0xe9, 0xd0, 0x6c, 0xcf, 0xde, 0x1a, - 0xa9, 0x27, 0x19, 0x15, 0x04, 0xa3, 0x37, 0x95, 0x9b, 0x17, 0xe4, 0xa8, 0x87, 0xba, 0x8f, 0xd6, - 0x4b, 0xaf, 0x10, 0x5c, 0x69, 0xb2, 0x76, 0x98, 0xfd, 0xd2, 0x7c, 0xaf, 0x0f, 0xec, 0xbb, 0xff, - 0x9a, 0xf7, 0xd1, 0xc7, 0x0f, 0xa4, 0x5a, 0x8b, 0x19, 0xaa, 0xd9, 0xca, 0x33, 0xbb, 0x55, 0x68, - 0x51, 0x53, 0xfc, 0xa7, 0x2e, 0x78, 0x57, 0xaa, 0xa5, 0x3b, 0x81, 0xff, 0xdd, 0x5b, 0xbd, 0xc3, - 0xcf, 0xb1, 0xd7, 0x1e, 0x79, 0xf0, 0xb2, 0xc1, 0x3a, 0x5a, 0xbe, 0x67, 0x3d, 0x7f, 0xb4, 0xf9, - 0x87, 0x7f, 0xf7, 0x54, 0xdc, 0x3d, 0xed, 0xdd, 0x3d, 0x3d, 0xda, 0x3c, 0x8e, 0x0b, 0x07, 0x6f, - 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x25, 0x27, 0xe9, 0x95, 0x51, 0x10, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/datastore/v1/entity.pb.go b/vendor/google.golang.org/genproto/googleapis/datastore/v1/entity.pb.go deleted file mode 100644 index d1d078db..00000000 --- a/vendor/google.golang.org/genproto/googleapis/datastore/v1/entity.pb.go +++ /dev/null @@ -1,763 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/datastore/v1/entity.proto - -package datastore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" -import google_type "google.golang.org/genproto/googleapis/type/latlng" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A partition ID identifies a grouping of entities. The grouping is always -// by project and namespace, however the namespace ID may be empty. -// -// A partition ID contains several dimensions: -// project ID and namespace ID. -// -// Partition dimensions: -// -// - May be `""`. -// - Must be valid UTF-8 bytes. -// - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` -// If the value of any dimension matches regex `__.*__`, the partition is -// reserved/read-only. -// A reserved/read-only partition ID is forbidden in certain documented -// contexts. -// -// Foreign partition IDs (in which the project ID does -// not match the context project ID ) are discouraged. -// Reads and writes of foreign partition IDs may fail if the project is not in an active state. -type PartitionId struct { - // The ID of the project to which the entities belong. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // If not empty, the ID of the namespace to which the entities belong. - NamespaceId string `protobuf:"bytes,4,opt,name=namespace_id,json=namespaceId" json:"namespace_id,omitempty"` -} - -func (m *PartitionId) Reset() { *m = PartitionId{} } -func (m *PartitionId) String() string { return proto.CompactTextString(m) } -func (*PartitionId) ProtoMessage() {} -func (*PartitionId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *PartitionId) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *PartitionId) GetNamespaceId() string { - if m != nil { - return m.NamespaceId - } - return "" -} - -// A unique identifier for an entity. -// If a key's partition ID or any of its path kinds or names are -// reserved/read-only, the key is reserved/read-only. -// A reserved/read-only key is forbidden in certain documented contexts. -type Key struct { - // Entities are partitioned into subsets, currently identified by a project - // ID and namespace ID. - // Queries are scoped to a single partition. - PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` - // The entity path. - // An entity path consists of one or more elements composed of a kind and a - // string or numerical identifier, which identify entities. The first - // element identifies a _root entity_, the second element identifies - // a _child_ of the root entity, the third element identifies a child of the - // second entity, and so forth. The entities identified by all prefixes of - // the path are called the element's _ancestors_. - // - // An entity path is always fully complete: *all* of the entity's ancestors - // are required to be in the path along with the entity identifier itself. - // The only exception is that in some documented cases, the identifier in the - // last path element (for the entity) itself may be omitted. For example, - // the last path element of the key of `Mutation.insert` may have no - // identifier. - // - // A path can never be empty, and a path can have at most 100 elements. - Path []*Key_PathElement `protobuf:"bytes,2,rep,name=path" json:"path,omitempty"` -} - -func (m *Key) Reset() { *m = Key{} } -func (m *Key) String() string { return proto.CompactTextString(m) } -func (*Key) ProtoMessage() {} -func (*Key) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *Key) GetPartitionId() *PartitionId { - if m != nil { - return m.PartitionId - } - return nil -} - -func (m *Key) GetPath() []*Key_PathElement { - if m != nil { - return m.Path - } - return nil -} - -// A (kind, ID/name) pair used to construct a key path. -// -// If either name or ID is set, the element is complete. -// If neither is set, the element is incomplete. -type Key_PathElement struct { - // The kind of the entity. - // A kind matching regex `__.*__` is reserved/read-only. - // A kind must not contain more than 1500 bytes when UTF-8 encoded. - // Cannot be `""`. - Kind string `protobuf:"bytes,1,opt,name=kind" json:"kind,omitempty"` - // The type of ID. - // - // Types that are valid to be assigned to IdType: - // *Key_PathElement_Id - // *Key_PathElement_Name - IdType isKey_PathElement_IdType `protobuf_oneof:"id_type"` -} - -func (m *Key_PathElement) Reset() { *m = Key_PathElement{} } -func (m *Key_PathElement) String() string { return proto.CompactTextString(m) } -func (*Key_PathElement) ProtoMessage() {} -func (*Key_PathElement) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } - -type isKey_PathElement_IdType interface { - isKey_PathElement_IdType() -} - -type Key_PathElement_Id struct { - Id int64 `protobuf:"varint,2,opt,name=id,oneof"` -} -type Key_PathElement_Name struct { - Name string `protobuf:"bytes,3,opt,name=name,oneof"` -} - -func (*Key_PathElement_Id) isKey_PathElement_IdType() {} -func (*Key_PathElement_Name) isKey_PathElement_IdType() {} - -func (m *Key_PathElement) GetIdType() isKey_PathElement_IdType { - if m != nil { - return m.IdType - } - return nil -} - -func (m *Key_PathElement) GetKind() string { - if m != nil { - return m.Kind - } - return "" -} - -func (m *Key_PathElement) GetId() int64 { - if x, ok := m.GetIdType().(*Key_PathElement_Id); ok { - return x.Id - } - return 0 -} - -func (m *Key_PathElement) GetName() string { - if x, ok := m.GetIdType().(*Key_PathElement_Name); ok { - return x.Name - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Key_PathElement) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Key_PathElement_OneofMarshaler, _Key_PathElement_OneofUnmarshaler, _Key_PathElement_OneofSizer, []interface{}{ - (*Key_PathElement_Id)(nil), - (*Key_PathElement_Name)(nil), - } -} - -func _Key_PathElement_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Key_PathElement) - // id_type - switch x := m.IdType.(type) { - case *Key_PathElement_Id: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Id)) - case *Key_PathElement_Name: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Name) - case nil: - default: - return fmt.Errorf("Key_PathElement.IdType has unexpected type %T", x) - } - return nil -} - -func _Key_PathElement_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Key_PathElement) - switch tag { - case 2: // id_type.id - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.IdType = &Key_PathElement_Id{int64(x)} - return true, err - case 3: // id_type.name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.IdType = &Key_PathElement_Name{x} - return true, err - default: - return false, nil - } -} - -func _Key_PathElement_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Key_PathElement) - // id_type - switch x := m.IdType.(type) { - case *Key_PathElement_Id: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Id)) - case *Key_PathElement_Name: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Name))) - n += len(x.Name) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// An array value. -type ArrayValue struct { - // Values in the array. - // The order of this array may not be preserved if it contains a mix of - // indexed and unindexed values. - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` -} - -func (m *ArrayValue) Reset() { *m = ArrayValue{} } -func (m *ArrayValue) String() string { return proto.CompactTextString(m) } -func (*ArrayValue) ProtoMessage() {} -func (*ArrayValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *ArrayValue) GetValues() []*Value { - if m != nil { - return m.Values - } - return nil -} - -// A message that can hold any of the supported value types and associated -// metadata. -type Value struct { - // Must have a value set. - // - // Types that are valid to be assigned to ValueType: - // *Value_NullValue - // *Value_BooleanValue - // *Value_IntegerValue - // *Value_DoubleValue - // *Value_TimestampValue - // *Value_KeyValue - // *Value_StringValue - // *Value_BlobValue - // *Value_GeoPointValue - // *Value_EntityValue - // *Value_ArrayValue - ValueType isValue_ValueType `protobuf_oneof:"value_type"` - // The `meaning` field should only be populated for backwards compatibility. - Meaning int32 `protobuf:"varint,14,opt,name=meaning" json:"meaning,omitempty"` - // If the value should be excluded from all indexes including those defined - // explicitly. - ExcludeFromIndexes bool `protobuf:"varint,19,opt,name=exclude_from_indexes,json=excludeFromIndexes" json:"exclude_from_indexes,omitempty"` -} - -func (m *Value) Reset() { *m = Value{} } -func (m *Value) String() string { return proto.CompactTextString(m) } -func (*Value) ProtoMessage() {} -func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -type isValue_ValueType interface { - isValue_ValueType() -} - -type Value_NullValue struct { - NullValue google_protobuf1.NullValue `protobuf:"varint,11,opt,name=null_value,json=nullValue,enum=google.protobuf.NullValue,oneof"` -} -type Value_BooleanValue struct { - BooleanValue bool `protobuf:"varint,1,opt,name=boolean_value,json=booleanValue,oneof"` -} -type Value_IntegerValue struct { - IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,oneof"` -} -type Value_DoubleValue struct { - DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,oneof"` -} -type Value_TimestampValue struct { - TimestampValue *google_protobuf2.Timestamp `protobuf:"bytes,10,opt,name=timestamp_value,json=timestampValue,oneof"` -} -type Value_KeyValue struct { - KeyValue *Key `protobuf:"bytes,5,opt,name=key_value,json=keyValue,oneof"` -} -type Value_StringValue struct { - StringValue string `protobuf:"bytes,17,opt,name=string_value,json=stringValue,oneof"` -} -type Value_BlobValue struct { - BlobValue []byte `protobuf:"bytes,18,opt,name=blob_value,json=blobValue,proto3,oneof"` -} -type Value_GeoPointValue struct { - GeoPointValue *google_type.LatLng `protobuf:"bytes,8,opt,name=geo_point_value,json=geoPointValue,oneof"` -} -type Value_EntityValue struct { - EntityValue *Entity `protobuf:"bytes,6,opt,name=entity_value,json=entityValue,oneof"` -} -type Value_ArrayValue struct { - ArrayValue *ArrayValue `protobuf:"bytes,9,opt,name=array_value,json=arrayValue,oneof"` -} - -func (*Value_NullValue) isValue_ValueType() {} -func (*Value_BooleanValue) isValue_ValueType() {} -func (*Value_IntegerValue) isValue_ValueType() {} -func (*Value_DoubleValue) isValue_ValueType() {} -func (*Value_TimestampValue) isValue_ValueType() {} -func (*Value_KeyValue) isValue_ValueType() {} -func (*Value_StringValue) isValue_ValueType() {} -func (*Value_BlobValue) isValue_ValueType() {} -func (*Value_GeoPointValue) isValue_ValueType() {} -func (*Value_EntityValue) isValue_ValueType() {} -func (*Value_ArrayValue) isValue_ValueType() {} - -func (m *Value) GetValueType() isValue_ValueType { - if m != nil { - return m.ValueType - } - return nil -} - -func (m *Value) GetNullValue() google_protobuf1.NullValue { - if x, ok := m.GetValueType().(*Value_NullValue); ok { - return x.NullValue - } - return google_protobuf1.NullValue_NULL_VALUE -} - -func (m *Value) GetBooleanValue() bool { - if x, ok := m.GetValueType().(*Value_BooleanValue); ok { - return x.BooleanValue - } - return false -} - -func (m *Value) GetIntegerValue() int64 { - if x, ok := m.GetValueType().(*Value_IntegerValue); ok { - return x.IntegerValue - } - return 0 -} - -func (m *Value) GetDoubleValue() float64 { - if x, ok := m.GetValueType().(*Value_DoubleValue); ok { - return x.DoubleValue - } - return 0 -} - -func (m *Value) GetTimestampValue() *google_protobuf2.Timestamp { - if x, ok := m.GetValueType().(*Value_TimestampValue); ok { - return x.TimestampValue - } - return nil -} - -func (m *Value) GetKeyValue() *Key { - if x, ok := m.GetValueType().(*Value_KeyValue); ok { - return x.KeyValue - } - return nil -} - -func (m *Value) GetStringValue() string { - if x, ok := m.GetValueType().(*Value_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *Value) GetBlobValue() []byte { - if x, ok := m.GetValueType().(*Value_BlobValue); ok { - return x.BlobValue - } - return nil -} - -func (m *Value) GetGeoPointValue() *google_type.LatLng { - if x, ok := m.GetValueType().(*Value_GeoPointValue); ok { - return x.GeoPointValue - } - return nil -} - -func (m *Value) GetEntityValue() *Entity { - if x, ok := m.GetValueType().(*Value_EntityValue); ok { - return x.EntityValue - } - return nil -} - -func (m *Value) GetArrayValue() *ArrayValue { - if x, ok := m.GetValueType().(*Value_ArrayValue); ok { - return x.ArrayValue - } - return nil -} - -func (m *Value) GetMeaning() int32 { - if m != nil { - return m.Meaning - } - return 0 -} - -func (m *Value) GetExcludeFromIndexes() bool { - if m != nil { - return m.ExcludeFromIndexes - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Value) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Value_OneofMarshaler, _Value_OneofUnmarshaler, _Value_OneofSizer, []interface{}{ - (*Value_NullValue)(nil), - (*Value_BooleanValue)(nil), - (*Value_IntegerValue)(nil), - (*Value_DoubleValue)(nil), - (*Value_TimestampValue)(nil), - (*Value_KeyValue)(nil), - (*Value_StringValue)(nil), - (*Value_BlobValue)(nil), - (*Value_GeoPointValue)(nil), - (*Value_EntityValue)(nil), - (*Value_ArrayValue)(nil), - } -} - -func _Value_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Value) - // value_type - switch x := m.ValueType.(type) { - case *Value_NullValue: - b.EncodeVarint(11<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.NullValue)) - case *Value_BooleanValue: - t := uint64(0) - if x.BooleanValue { - t = 1 - } - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Value_IntegerValue: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IntegerValue)) - case *Value_DoubleValue: - b.EncodeVarint(3<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.DoubleValue)) - case *Value_TimestampValue: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimestampValue); err != nil { - return err - } - case *Value_KeyValue: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KeyValue); err != nil { - return err - } - case *Value_StringValue: - b.EncodeVarint(17<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *Value_BlobValue: - b.EncodeVarint(18<<3 | proto.WireBytes) - b.EncodeRawBytes(x.BlobValue) - case *Value_GeoPointValue: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.GeoPointValue); err != nil { - return err - } - case *Value_EntityValue: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.EntityValue); err != nil { - return err - } - case *Value_ArrayValue: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ArrayValue); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Value.ValueType has unexpected type %T", x) - } - return nil -} - -func _Value_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Value) - switch tag { - case 11: // value_type.null_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_NullValue{google_protobuf1.NullValue(x)} - return true, err - case 1: // value_type.boolean_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_BooleanValue{x != 0} - return true, err - case 2: // value_type.integer_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_IntegerValue{int64(x)} - return true, err - case 3: // value_type.double_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.ValueType = &Value_DoubleValue{math.Float64frombits(x)} - return true, err - case 10: // value_type.timestamp_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf2.Timestamp) - err := b.DecodeMessage(msg) - m.ValueType = &Value_TimestampValue{msg} - return true, err - case 5: // value_type.key_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Key) - err := b.DecodeMessage(msg) - m.ValueType = &Value_KeyValue{msg} - return true, err - case 17: // value_type.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ValueType = &Value_StringValue{x} - return true, err - case 18: // value_type.blob_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ValueType = &Value_BlobValue{x} - return true, err - case 8: // value_type.geo_point_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_type.LatLng) - err := b.DecodeMessage(msg) - m.ValueType = &Value_GeoPointValue{msg} - return true, err - case 6: // value_type.entity_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Entity) - err := b.DecodeMessage(msg) - m.ValueType = &Value_EntityValue{msg} - return true, err - case 9: // value_type.array_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ArrayValue) - err := b.DecodeMessage(msg) - m.ValueType = &Value_ArrayValue{msg} - return true, err - default: - return false, nil - } -} - -func _Value_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Value) - // value_type - switch x := m.ValueType.(type) { - case *Value_NullValue: - n += proto.SizeVarint(11<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.NullValue)) - case *Value_BooleanValue: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += 1 - case *Value_IntegerValue: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IntegerValue)) - case *Value_DoubleValue: - n += proto.SizeVarint(3<<3 | proto.WireFixed64) - n += 8 - case *Value_TimestampValue: - s := proto.Size(x.TimestampValue) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_KeyValue: - s := proto.Size(x.KeyValue) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_StringValue: - n += proto.SizeVarint(17<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *Value_BlobValue: - n += proto.SizeVarint(18<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.BlobValue))) - n += len(x.BlobValue) - case *Value_GeoPointValue: - s := proto.Size(x.GeoPointValue) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_EntityValue: - s := proto.Size(x.EntityValue) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_ArrayValue: - s := proto.Size(x.ArrayValue) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Datastore data object. -// -// An entity is limited to 1 megabyte when stored. That _roughly_ -// corresponds to a limit of 1 megabyte for the serialized form of this -// message. -type Entity struct { - // The entity's key. - // - // An entity must have a key, unless otherwise documented (for example, - // an entity in `Value.entity_value` may have no key). - // An entity's kind is its key path's last element's kind, - // or null if it has no key. - Key *Key `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // The entity's properties. - // The map's keys are property names. - // A property name matching regex `__.*__` is reserved. - // A reserved property name is forbidden in certain documented contexts. - // The name must not contain more than 500 characters. - // The name cannot be `""`. - Properties map[string]*Value `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Entity) Reset() { *m = Entity{} } -func (m *Entity) String() string { return proto.CompactTextString(m) } -func (*Entity) ProtoMessage() {} -func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *Entity) GetKey() *Key { - if m != nil { - return m.Key - } - return nil -} - -func (m *Entity) GetProperties() map[string]*Value { - if m != nil { - return m.Properties - } - return nil -} - -func init() { - proto.RegisterType((*PartitionId)(nil), "google.datastore.v1.PartitionId") - proto.RegisterType((*Key)(nil), "google.datastore.v1.Key") - proto.RegisterType((*Key_PathElement)(nil), "google.datastore.v1.Key.PathElement") - proto.RegisterType((*ArrayValue)(nil), "google.datastore.v1.ArrayValue") - proto.RegisterType((*Value)(nil), "google.datastore.v1.Value") - proto.RegisterType((*Entity)(nil), "google.datastore.v1.Entity") -} - -func init() { proto.RegisterFile("google/datastore/v1/entity.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 780 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0xff, 0x6e, 0xdc, 0x44, - 0x10, 0xc7, 0xed, 0xbb, 0x5c, 0x1a, 0x8f, 0xdd, 0xa4, 0x6c, 0x2a, 0x61, 0x02, 0x28, 0x26, 0x80, - 0x74, 0x02, 0xc9, 0x6e, 0xc2, 0x1f, 0x54, 0x14, 0xa4, 0x72, 0x25, 0xe0, 0x28, 0x15, 0x9c, 0x56, - 0x55, 0x24, 0x50, 0xa4, 0xd3, 0xde, 0x79, 0xeb, 0x2e, 0x67, 0xef, 0x5a, 0xf6, 0x3a, 0xaa, 0xdf, - 0x05, 0xf1, 0x00, 0x3c, 0x0a, 0x8f, 0x80, 0x78, 0x18, 0xb4, 0x3f, 0xec, 0x0b, 0xed, 0x35, 0xff, - 0x79, 0x67, 0x3e, 0xdf, 0xd9, 0xef, 0xec, 0xce, 0x1a, 0xa2, 0x5c, 0x88, 0xbc, 0xa0, 0x49, 0x46, - 0x24, 0x69, 0xa4, 0xa8, 0x69, 0x72, 0x73, 0x9a, 0x50, 0x2e, 0x99, 0xec, 0xe2, 0xaa, 0x16, 0x52, - 0xa0, 0x43, 0x43, 0xc4, 0x03, 0x11, 0xdf, 0x9c, 0x1e, 0x7d, 0x64, 0x65, 0xa4, 0x62, 0x09, 0xe1, - 0x5c, 0x48, 0x22, 0x99, 0xe0, 0x8d, 0x91, 0x0c, 0x59, 0xbd, 0x5a, 0xb6, 0x2f, 0x93, 0x46, 0xd6, - 0xed, 0x4a, 0xda, 0xec, 0xf1, 0x9b, 0x59, 0xc9, 0x4a, 0xda, 0x48, 0x52, 0x56, 0x16, 0x08, 0x2d, - 0x20, 0xbb, 0x8a, 0x26, 0x05, 0x91, 0x05, 0xcf, 0x4d, 0xe6, 0xe4, 0x17, 0xf0, 0xe7, 0xa4, 0x96, - 0x4c, 0x6d, 0x76, 0x91, 0xa1, 0x8f, 0x01, 0xaa, 0x5a, 0xfc, 0x4e, 0x57, 0x72, 0xc1, 0xb2, 0x70, - 0x14, 0xb9, 0x53, 0x0f, 0x7b, 0x36, 0x72, 0x91, 0xa1, 0x4f, 0x20, 0xe0, 0xa4, 0xa4, 0x4d, 0x45, - 0x56, 0x54, 0x01, 0x3b, 0x1a, 0xf0, 0x87, 0xd8, 0x45, 0x76, 0xf2, 0x8f, 0x0b, 0xe3, 0x4b, 0xda, - 0xa1, 0x67, 0x10, 0x54, 0x7d, 0x61, 0x85, 0xba, 0x91, 0x3b, 0xf5, 0xcf, 0xa2, 0x78, 0x4b, 0xef, - 0xf1, 0x2d, 0x07, 0xd8, 0xaf, 0x6e, 0xd9, 0x79, 0x0c, 0x3b, 0x15, 0x91, 0xaf, 0xc2, 0x51, 0x34, - 0x9e, 0xfa, 0x67, 0x9f, 0x6d, 0x15, 0x5f, 0xd2, 0x2e, 0x9e, 0x13, 0xf9, 0xea, 0xbc, 0xa0, 0x25, - 0xe5, 0x12, 0x6b, 0xc5, 0xd1, 0x0b, 0xd5, 0xd7, 0x10, 0x44, 0x08, 0x76, 0xd6, 0x8c, 0x1b, 0x17, - 0x1e, 0xd6, 0xdf, 0xe8, 0x01, 0x8c, 0x6c, 0x8f, 0xe3, 0xd4, 0xc1, 0x23, 0x96, 0xa1, 0x87, 0xb0, - 0xa3, 0x5a, 0x09, 0xc7, 0x8a, 0x4a, 0x1d, 0xac, 0x57, 0x33, 0x0f, 0xee, 0xb1, 0x6c, 0xa1, 0x8e, - 0xee, 0xe4, 0x29, 0xc0, 0xf7, 0x75, 0x4d, 0xba, 0x2b, 0x52, 0xb4, 0x14, 0x9d, 0xc1, 0xee, 0x8d, - 0xfa, 0x68, 0x42, 0x57, 0xfb, 0x3b, 0xda, 0xea, 0x4f, 0xb3, 0xd8, 0x92, 0x27, 0x7f, 0x4c, 0x60, - 0x62, 0xd4, 0x4f, 0x00, 0x78, 0x5b, 0x14, 0x0b, 0x9d, 0x08, 0xfd, 0xc8, 0x9d, 0xee, 0x6f, 0x2a, - 0xf4, 0x37, 0x19, 0xff, 0xdc, 0x16, 0x85, 0xe6, 0x53, 0x07, 0x7b, 0xbc, 0x5f, 0xa0, 0xcf, 0xe1, - 0xfe, 0x52, 0x88, 0x82, 0x12, 0x6e, 0xf5, 0xaa, 0xb1, 0xbd, 0xd4, 0xc1, 0x81, 0x0d, 0x0f, 0x18, - 0xe3, 0x92, 0xe6, 0xb4, 0xb6, 0x58, 0xdf, 0x6d, 0x60, 0xc3, 0x06, 0xfb, 0x14, 0x82, 0x4c, 0xb4, - 0xcb, 0x82, 0x5a, 0x4a, 0xf5, 0xef, 0xa6, 0x0e, 0xf6, 0x4d, 0xd4, 0x40, 0xe7, 0x70, 0x30, 0x8c, - 0x95, 0xe5, 0x40, 0xdf, 0xe9, 0xdb, 0xa6, 0x5f, 0xf4, 0x5c, 0xea, 0xe0, 0xfd, 0x41, 0x64, 0xca, - 0x7c, 0x0d, 0xde, 0x9a, 0x76, 0xb6, 0xc0, 0x44, 0x17, 0x08, 0xdf, 0x75, 0xaf, 0xa9, 0x83, 0xf7, - 0xd6, 0xb4, 0x1b, 0x4c, 0x36, 0xb2, 0x66, 0x3c, 0xb7, 0xda, 0xf7, 0xec, 0x25, 0xf9, 0x26, 0x6a, - 0xa0, 0x63, 0x80, 0x65, 0x21, 0x96, 0x16, 0x41, 0x91, 0x3b, 0x0d, 0xd4, 0xc1, 0xa9, 0x98, 0x01, - 0xbe, 0x83, 0x83, 0x9c, 0x8a, 0x45, 0x25, 0x18, 0x97, 0x96, 0xda, 0xd3, 0x26, 0x0e, 0x7b, 0x13, - 0xea, 0xa2, 0xe3, 0xe7, 0x44, 0x3e, 0xe7, 0x79, 0xea, 0xe0, 0xfb, 0x39, 0x15, 0x73, 0x05, 0x1b, - 0xf9, 0x53, 0x08, 0xcc, 0x53, 0xb6, 0xda, 0x5d, 0xad, 0xfd, 0x70, 0x6b, 0x03, 0xe7, 0x1a, 0x54, - 0x0e, 0x8d, 0xc4, 0x54, 0x98, 0x81, 0x4f, 0xd4, 0x08, 0xd9, 0x02, 0x9e, 0x2e, 0x70, 0xbc, 0xb5, - 0xc0, 0x66, 0xd4, 0x52, 0x07, 0x03, 0xd9, 0x0c, 0x5e, 0x08, 0xf7, 0x4a, 0x4a, 0x38, 0xe3, 0x79, - 0xb8, 0x1f, 0xb9, 0xd3, 0x09, 0xee, 0x97, 0xe8, 0x11, 0x3c, 0xa4, 0xaf, 0x57, 0x45, 0x9b, 0xd1, - 0xc5, 0xcb, 0x5a, 0x94, 0x0b, 0xc6, 0x33, 0xfa, 0x9a, 0x36, 0xe1, 0xa1, 0x1a, 0x0f, 0x8c, 0x6c, - 0xee, 0xc7, 0x5a, 0x94, 0x17, 0x26, 0x33, 0x0b, 0x00, 0xb4, 0x13, 0x33, 0xe0, 0xff, 0xba, 0xb0, - 0x6b, 0x7c, 0xa3, 0x2f, 0x60, 0xbc, 0xa6, 0x9d, 0x7d, 0xb7, 0xef, 0xbc, 0x22, 0xac, 0x20, 0x74, - 0xa9, 0x7f, 0x1b, 0x15, 0xad, 0x25, 0xa3, 0x4d, 0x38, 0xd6, 0xaf, 0xe1, 0xcb, 0x3b, 0x0e, 0x25, - 0x9e, 0x0f, 0xf4, 0x39, 0x97, 0x75, 0x87, 0x6f, 0xc9, 0x8f, 0x7e, 0x85, 0x83, 0x37, 0xd2, 0xe8, - 0xc1, 0xc6, 0x8b, 0x67, 0x76, 0x7c, 0x04, 0x93, 0xcd, 0x44, 0xdf, 0xfd, 0xf4, 0x0c, 0xf8, 0xcd, - 0xe8, 0xb1, 0x3b, 0xfb, 0xd3, 0x85, 0xf7, 0x57, 0xa2, 0xdc, 0x06, 0xcf, 0x7c, 0x63, 0x6d, 0xae, - 0x86, 0x78, 0xee, 0xfe, 0xf6, 0xad, 0x65, 0x72, 0x51, 0x10, 0x9e, 0xc7, 0xa2, 0xce, 0x93, 0x9c, - 0x72, 0x3d, 0xe2, 0x89, 0x49, 0x91, 0x8a, 0x35, 0xff, 0xfb, 0xcb, 0x3f, 0x19, 0x16, 0x7f, 0x8d, - 0x3e, 0xf8, 0xc9, 0xc8, 0x9f, 0x15, 0xa2, 0xcd, 0xe2, 0x1f, 0x86, 0x8d, 0xae, 0x4e, 0xff, 0xee, - 0x73, 0xd7, 0x3a, 0x77, 0x3d, 0xe4, 0xae, 0xaf, 0x4e, 0x97, 0xbb, 0x7a, 0x83, 0xaf, 0xfe, 0x0b, - 0x00, 0x00, 0xff, 0xff, 0xf3, 0xdd, 0x11, 0x96, 0x45, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/datastore/v1/query.pb.go b/vendor/google.golang.org/genproto/googleapis/datastore/v1/query.pb.go deleted file mode 100644 index bdfcc174..00000000 --- a/vendor/google.golang.org/genproto/googleapis/datastore/v1/query.pb.go +++ /dev/null @@ -1,970 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/datastore/v1/query.proto - -package datastore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/wrappers" -import _ "google.golang.org/genproto/googleapis/type/latlng" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Specifies what data the 'entity' field contains. -// A `ResultType` is either implied (for example, in `LookupResponse.missing` -// from `datastore.proto`, it is always `KEY_ONLY`) or specified by context -// (for example, in message `QueryResultBatch`, field `entity_result_type` -// specifies a `ResultType` for all the values in field `entity_results`). -type EntityResult_ResultType int32 - -const ( - // Unspecified. This value is never used. - EntityResult_RESULT_TYPE_UNSPECIFIED EntityResult_ResultType = 0 - // The key and properties. - EntityResult_FULL EntityResult_ResultType = 1 - // A projected subset of properties. The entity may have no key. - EntityResult_PROJECTION EntityResult_ResultType = 2 - // Only the key. - EntityResult_KEY_ONLY EntityResult_ResultType = 3 -) - -var EntityResult_ResultType_name = map[int32]string{ - 0: "RESULT_TYPE_UNSPECIFIED", - 1: "FULL", - 2: "PROJECTION", - 3: "KEY_ONLY", -} -var EntityResult_ResultType_value = map[string]int32{ - "RESULT_TYPE_UNSPECIFIED": 0, - "FULL": 1, - "PROJECTION": 2, - "KEY_ONLY": 3, -} - -func (x EntityResult_ResultType) String() string { - return proto.EnumName(EntityResult_ResultType_name, int32(x)) -} -func (EntityResult_ResultType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -// The sort direction. -type PropertyOrder_Direction int32 - -const ( - // Unspecified. This value must not be used. - PropertyOrder_DIRECTION_UNSPECIFIED PropertyOrder_Direction = 0 - // Ascending. - PropertyOrder_ASCENDING PropertyOrder_Direction = 1 - // Descending. - PropertyOrder_DESCENDING PropertyOrder_Direction = 2 -) - -var PropertyOrder_Direction_name = map[int32]string{ - 0: "DIRECTION_UNSPECIFIED", - 1: "ASCENDING", - 2: "DESCENDING", -} -var PropertyOrder_Direction_value = map[string]int32{ - "DIRECTION_UNSPECIFIED": 0, - "ASCENDING": 1, - "DESCENDING": 2, -} - -func (x PropertyOrder_Direction) String() string { - return proto.EnumName(PropertyOrder_Direction_name, int32(x)) -} -func (PropertyOrder_Direction) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{5, 0} } - -// A composite filter operator. -type CompositeFilter_Operator int32 - -const ( - // Unspecified. This value must not be used. - CompositeFilter_OPERATOR_UNSPECIFIED CompositeFilter_Operator = 0 - // The results are required to satisfy each of the combined filters. - CompositeFilter_AND CompositeFilter_Operator = 1 -) - -var CompositeFilter_Operator_name = map[int32]string{ - 0: "OPERATOR_UNSPECIFIED", - 1: "AND", -} -var CompositeFilter_Operator_value = map[string]int32{ - "OPERATOR_UNSPECIFIED": 0, - "AND": 1, -} - -func (x CompositeFilter_Operator) String() string { - return proto.EnumName(CompositeFilter_Operator_name, int32(x)) -} -func (CompositeFilter_Operator) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{7, 0} } - -// A property filter operator. -type PropertyFilter_Operator int32 - -const ( - // Unspecified. This value must not be used. - PropertyFilter_OPERATOR_UNSPECIFIED PropertyFilter_Operator = 0 - // Less than. - PropertyFilter_LESS_THAN PropertyFilter_Operator = 1 - // Less than or equal. - PropertyFilter_LESS_THAN_OR_EQUAL PropertyFilter_Operator = 2 - // Greater than. - PropertyFilter_GREATER_THAN PropertyFilter_Operator = 3 - // Greater than or equal. - PropertyFilter_GREATER_THAN_OR_EQUAL PropertyFilter_Operator = 4 - // Equal. - PropertyFilter_EQUAL PropertyFilter_Operator = 5 - // Has ancestor. - PropertyFilter_HAS_ANCESTOR PropertyFilter_Operator = 11 -) - -var PropertyFilter_Operator_name = map[int32]string{ - 0: "OPERATOR_UNSPECIFIED", - 1: "LESS_THAN", - 2: "LESS_THAN_OR_EQUAL", - 3: "GREATER_THAN", - 4: "GREATER_THAN_OR_EQUAL", - 5: "EQUAL", - 11: "HAS_ANCESTOR", -} -var PropertyFilter_Operator_value = map[string]int32{ - "OPERATOR_UNSPECIFIED": 0, - "LESS_THAN": 1, - "LESS_THAN_OR_EQUAL": 2, - "GREATER_THAN": 3, - "GREATER_THAN_OR_EQUAL": 4, - "EQUAL": 5, - "HAS_ANCESTOR": 11, -} - -func (x PropertyFilter_Operator) String() string { - return proto.EnumName(PropertyFilter_Operator_name, int32(x)) -} -func (PropertyFilter_Operator) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{8, 0} } - -// The possible values for the `more_results` field. -type QueryResultBatch_MoreResultsType int32 - -const ( - // Unspecified. This value is never used. - QueryResultBatch_MORE_RESULTS_TYPE_UNSPECIFIED QueryResultBatch_MoreResultsType = 0 - // There may be additional batches to fetch from this query. - QueryResultBatch_NOT_FINISHED QueryResultBatch_MoreResultsType = 1 - // The query is finished, but there may be more results after the limit. - QueryResultBatch_MORE_RESULTS_AFTER_LIMIT QueryResultBatch_MoreResultsType = 2 - // The query is finished, but there may be more results after the end - // cursor. - QueryResultBatch_MORE_RESULTS_AFTER_CURSOR QueryResultBatch_MoreResultsType = 4 - // The query is finished, and there are no more results. - QueryResultBatch_NO_MORE_RESULTS QueryResultBatch_MoreResultsType = 3 -) - -var QueryResultBatch_MoreResultsType_name = map[int32]string{ - 0: "MORE_RESULTS_TYPE_UNSPECIFIED", - 1: "NOT_FINISHED", - 2: "MORE_RESULTS_AFTER_LIMIT", - 4: "MORE_RESULTS_AFTER_CURSOR", - 3: "NO_MORE_RESULTS", -} -var QueryResultBatch_MoreResultsType_value = map[string]int32{ - "MORE_RESULTS_TYPE_UNSPECIFIED": 0, - "NOT_FINISHED": 1, - "MORE_RESULTS_AFTER_LIMIT": 2, - "MORE_RESULTS_AFTER_CURSOR": 4, - "NO_MORE_RESULTS": 3, -} - -func (x QueryResultBatch_MoreResultsType) String() string { - return proto.EnumName(QueryResultBatch_MoreResultsType_name, int32(x)) -} -func (QueryResultBatch_MoreResultsType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{11, 0} -} - -// The result of fetching an entity from Datastore. -type EntityResult struct { - // The resulting entity. - Entity *Entity `protobuf:"bytes,1,opt,name=entity" json:"entity,omitempty"` - // The version of the entity, a strictly positive number that monotonically - // increases with changes to the entity. - // - // This field is set for [`FULL`][google.datastore.v1.EntityResult.ResultType.FULL] entity - // results. - // - // For [missing][google.datastore.v1.LookupResponse.missing] entities in `LookupResponse`, this - // is the version of the snapshot that was used to look up the entity, and it - // is always set except for eventually consistent reads. - Version int64 `protobuf:"varint,4,opt,name=version" json:"version,omitempty"` - // A cursor that points to the position after the result entity. - // Set only when the `EntityResult` is part of a `QueryResultBatch` message. - Cursor []byte `protobuf:"bytes,3,opt,name=cursor,proto3" json:"cursor,omitempty"` -} - -func (m *EntityResult) Reset() { *m = EntityResult{} } -func (m *EntityResult) String() string { return proto.CompactTextString(m) } -func (*EntityResult) ProtoMessage() {} -func (*EntityResult) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *EntityResult) GetEntity() *Entity { - if m != nil { - return m.Entity - } - return nil -} - -func (m *EntityResult) GetVersion() int64 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *EntityResult) GetCursor() []byte { - if m != nil { - return m.Cursor - } - return nil -} - -// A query for entities. -type Query struct { - // The projection to return. Defaults to returning all properties. - Projection []*Projection `protobuf:"bytes,2,rep,name=projection" json:"projection,omitempty"` - // The kinds to query (if empty, returns entities of all kinds). - // Currently at most 1 kind may be specified. - Kind []*KindExpression `protobuf:"bytes,3,rep,name=kind" json:"kind,omitempty"` - // The filter to apply. - Filter *Filter `protobuf:"bytes,4,opt,name=filter" json:"filter,omitempty"` - // The order to apply to the query results (if empty, order is unspecified). - Order []*PropertyOrder `protobuf:"bytes,5,rep,name=order" json:"order,omitempty"` - // The properties to make distinct. The query results will contain the first - // result for each distinct combination of values for the given properties - // (if empty, all results are returned). - DistinctOn []*PropertyReference `protobuf:"bytes,6,rep,name=distinct_on,json=distinctOn" json:"distinct_on,omitempty"` - // A starting point for the query results. Query cursors are - // returned in query result batches and - // [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). - StartCursor []byte `protobuf:"bytes,7,opt,name=start_cursor,json=startCursor,proto3" json:"start_cursor,omitempty"` - // An ending point for the query results. Query cursors are - // returned in query result batches and - // [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). - EndCursor []byte `protobuf:"bytes,8,opt,name=end_cursor,json=endCursor,proto3" json:"end_cursor,omitempty"` - // The number of results to skip. Applies before limit, but after all other - // constraints. Optional. Must be >= 0 if specified. - Offset int32 `protobuf:"varint,10,opt,name=offset" json:"offset,omitempty"` - // The maximum number of results to return. Applies after all other - // constraints. Optional. - // Unspecified is interpreted as no limit. - // Must be >= 0 if specified. - Limit *google_protobuf3.Int32Value `protobuf:"bytes,12,opt,name=limit" json:"limit,omitempty"` -} - -func (m *Query) Reset() { *m = Query{} } -func (m *Query) String() string { return proto.CompactTextString(m) } -func (*Query) ProtoMessage() {} -func (*Query) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *Query) GetProjection() []*Projection { - if m != nil { - return m.Projection - } - return nil -} - -func (m *Query) GetKind() []*KindExpression { - if m != nil { - return m.Kind - } - return nil -} - -func (m *Query) GetFilter() *Filter { - if m != nil { - return m.Filter - } - return nil -} - -func (m *Query) GetOrder() []*PropertyOrder { - if m != nil { - return m.Order - } - return nil -} - -func (m *Query) GetDistinctOn() []*PropertyReference { - if m != nil { - return m.DistinctOn - } - return nil -} - -func (m *Query) GetStartCursor() []byte { - if m != nil { - return m.StartCursor - } - return nil -} - -func (m *Query) GetEndCursor() []byte { - if m != nil { - return m.EndCursor - } - return nil -} - -func (m *Query) GetOffset() int32 { - if m != nil { - return m.Offset - } - return 0 -} - -func (m *Query) GetLimit() *google_protobuf3.Int32Value { - if m != nil { - return m.Limit - } - return nil -} - -// A representation of a kind. -type KindExpression struct { - // The name of the kind. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *KindExpression) Reset() { *m = KindExpression{} } -func (m *KindExpression) String() string { return proto.CompactTextString(m) } -func (*KindExpression) ProtoMessage() {} -func (*KindExpression) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *KindExpression) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A reference to a property relative to the kind expressions. -type PropertyReference struct { - // The name of the property. - // If name includes "."s, it may be interpreted as a property name path. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *PropertyReference) Reset() { *m = PropertyReference{} } -func (m *PropertyReference) String() string { return proto.CompactTextString(m) } -func (*PropertyReference) ProtoMessage() {} -func (*PropertyReference) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *PropertyReference) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A representation of a property in a projection. -type Projection struct { - // The property to project. - Property *PropertyReference `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` -} - -func (m *Projection) Reset() { *m = Projection{} } -func (m *Projection) String() string { return proto.CompactTextString(m) } -func (*Projection) ProtoMessage() {} -func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *Projection) GetProperty() *PropertyReference { - if m != nil { - return m.Property - } - return nil -} - -// The desired order for a specific property. -type PropertyOrder struct { - // The property to order by. - Property *PropertyReference `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The direction to order by. Defaults to `ASCENDING`. - Direction PropertyOrder_Direction `protobuf:"varint,2,opt,name=direction,enum=google.datastore.v1.PropertyOrder_Direction" json:"direction,omitempty"` -} - -func (m *PropertyOrder) Reset() { *m = PropertyOrder{} } -func (m *PropertyOrder) String() string { return proto.CompactTextString(m) } -func (*PropertyOrder) ProtoMessage() {} -func (*PropertyOrder) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *PropertyOrder) GetProperty() *PropertyReference { - if m != nil { - return m.Property - } - return nil -} - -func (m *PropertyOrder) GetDirection() PropertyOrder_Direction { - if m != nil { - return m.Direction - } - return PropertyOrder_DIRECTION_UNSPECIFIED -} - -// A holder for any type of filter. -type Filter struct { - // The type of filter. - // - // Types that are valid to be assigned to FilterType: - // *Filter_CompositeFilter - // *Filter_PropertyFilter - FilterType isFilter_FilterType `protobuf_oneof:"filter_type"` -} - -func (m *Filter) Reset() { *m = Filter{} } -func (m *Filter) String() string { return proto.CompactTextString(m) } -func (*Filter) ProtoMessage() {} -func (*Filter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -type isFilter_FilterType interface { - isFilter_FilterType() -} - -type Filter_CompositeFilter struct { - CompositeFilter *CompositeFilter `protobuf:"bytes,1,opt,name=composite_filter,json=compositeFilter,oneof"` -} -type Filter_PropertyFilter struct { - PropertyFilter *PropertyFilter `protobuf:"bytes,2,opt,name=property_filter,json=propertyFilter,oneof"` -} - -func (*Filter_CompositeFilter) isFilter_FilterType() {} -func (*Filter_PropertyFilter) isFilter_FilterType() {} - -func (m *Filter) GetFilterType() isFilter_FilterType { - if m != nil { - return m.FilterType - } - return nil -} - -func (m *Filter) GetCompositeFilter() *CompositeFilter { - if x, ok := m.GetFilterType().(*Filter_CompositeFilter); ok { - return x.CompositeFilter - } - return nil -} - -func (m *Filter) GetPropertyFilter() *PropertyFilter { - if x, ok := m.GetFilterType().(*Filter_PropertyFilter); ok { - return x.PropertyFilter - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Filter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Filter_OneofMarshaler, _Filter_OneofUnmarshaler, _Filter_OneofSizer, []interface{}{ - (*Filter_CompositeFilter)(nil), - (*Filter_PropertyFilter)(nil), - } -} - -func _Filter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Filter) - // filter_type - switch x := m.FilterType.(type) { - case *Filter_CompositeFilter: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CompositeFilter); err != nil { - return err - } - case *Filter_PropertyFilter: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PropertyFilter); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Filter.FilterType has unexpected type %T", x) - } - return nil -} - -func _Filter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Filter) - switch tag { - case 1: // filter_type.composite_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CompositeFilter) - err := b.DecodeMessage(msg) - m.FilterType = &Filter_CompositeFilter{msg} - return true, err - case 2: // filter_type.property_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PropertyFilter) - err := b.DecodeMessage(msg) - m.FilterType = &Filter_PropertyFilter{msg} - return true, err - default: - return false, nil - } -} - -func _Filter_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Filter) - // filter_type - switch x := m.FilterType.(type) { - case *Filter_CompositeFilter: - s := proto.Size(x.CompositeFilter) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Filter_PropertyFilter: - s := proto.Size(x.PropertyFilter) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A filter that merges multiple other filters using the given operator. -type CompositeFilter struct { - // The operator for combining multiple filters. - Op CompositeFilter_Operator `protobuf:"varint,1,opt,name=op,enum=google.datastore.v1.CompositeFilter_Operator" json:"op,omitempty"` - // The list of filters to combine. - // Must contain at least one filter. - Filters []*Filter `protobuf:"bytes,2,rep,name=filters" json:"filters,omitempty"` -} - -func (m *CompositeFilter) Reset() { *m = CompositeFilter{} } -func (m *CompositeFilter) String() string { return proto.CompactTextString(m) } -func (*CompositeFilter) ProtoMessage() {} -func (*CompositeFilter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *CompositeFilter) GetOp() CompositeFilter_Operator { - if m != nil { - return m.Op - } - return CompositeFilter_OPERATOR_UNSPECIFIED -} - -func (m *CompositeFilter) GetFilters() []*Filter { - if m != nil { - return m.Filters - } - return nil -} - -// A filter on a specific property. -type PropertyFilter struct { - // The property to filter by. - Property *PropertyReference `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The operator to filter by. - Op PropertyFilter_Operator `protobuf:"varint,2,opt,name=op,enum=google.datastore.v1.PropertyFilter_Operator" json:"op,omitempty"` - // The value to compare the property to. - Value *Value `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` -} - -func (m *PropertyFilter) Reset() { *m = PropertyFilter{} } -func (m *PropertyFilter) String() string { return proto.CompactTextString(m) } -func (*PropertyFilter) ProtoMessage() {} -func (*PropertyFilter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *PropertyFilter) GetProperty() *PropertyReference { - if m != nil { - return m.Property - } - return nil -} - -func (m *PropertyFilter) GetOp() PropertyFilter_Operator { - if m != nil { - return m.Op - } - return PropertyFilter_OPERATOR_UNSPECIFIED -} - -func (m *PropertyFilter) GetValue() *Value { - if m != nil { - return m.Value - } - return nil -} - -// A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). -type GqlQuery struct { - // A string of the format described - // [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). - QueryString string `protobuf:"bytes,1,opt,name=query_string,json=queryString" json:"query_string,omitempty"` - // When false, the query string must not contain any literals and instead must - // bind all values. For example, - // `SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while - // `SELECT * FROM Kind WHERE a = @value` is. - AllowLiterals bool `protobuf:"varint,2,opt,name=allow_literals,json=allowLiterals" json:"allow_literals,omitempty"` - // For each non-reserved named binding site in the query string, there must be - // a named parameter with that name, but not necessarily the inverse. - // - // Key must match regex `[A-Za-z_$][A-Za-z_$0-9]*`, must not match regex - // `__.*__`, and must not be `""`. - NamedBindings map[string]*GqlQueryParameter `protobuf:"bytes,5,rep,name=named_bindings,json=namedBindings" json:"named_bindings,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Numbered binding site @1 references the first numbered parameter, - // effectively using 1-based indexing, rather than the usual 0. - // - // For each binding site numbered i in `query_string`, there must be an i-th - // numbered parameter. The inverse must also be true. - PositionalBindings []*GqlQueryParameter `protobuf:"bytes,4,rep,name=positional_bindings,json=positionalBindings" json:"positional_bindings,omitempty"` -} - -func (m *GqlQuery) Reset() { *m = GqlQuery{} } -func (m *GqlQuery) String() string { return proto.CompactTextString(m) } -func (*GqlQuery) ProtoMessage() {} -func (*GqlQuery) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{9} } - -func (m *GqlQuery) GetQueryString() string { - if m != nil { - return m.QueryString - } - return "" -} - -func (m *GqlQuery) GetAllowLiterals() bool { - if m != nil { - return m.AllowLiterals - } - return false -} - -func (m *GqlQuery) GetNamedBindings() map[string]*GqlQueryParameter { - if m != nil { - return m.NamedBindings - } - return nil -} - -func (m *GqlQuery) GetPositionalBindings() []*GqlQueryParameter { - if m != nil { - return m.PositionalBindings - } - return nil -} - -// A binding parameter for a GQL query. -type GqlQueryParameter struct { - // The type of parameter. - // - // Types that are valid to be assigned to ParameterType: - // *GqlQueryParameter_Value - // *GqlQueryParameter_Cursor - ParameterType isGqlQueryParameter_ParameterType `protobuf_oneof:"parameter_type"` -} - -func (m *GqlQueryParameter) Reset() { *m = GqlQueryParameter{} } -func (m *GqlQueryParameter) String() string { return proto.CompactTextString(m) } -func (*GqlQueryParameter) ProtoMessage() {} -func (*GqlQueryParameter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{10} } - -type isGqlQueryParameter_ParameterType interface { - isGqlQueryParameter_ParameterType() -} - -type GqlQueryParameter_Value struct { - Value *Value `protobuf:"bytes,2,opt,name=value,oneof"` -} -type GqlQueryParameter_Cursor struct { - Cursor []byte `protobuf:"bytes,3,opt,name=cursor,proto3,oneof"` -} - -func (*GqlQueryParameter_Value) isGqlQueryParameter_ParameterType() {} -func (*GqlQueryParameter_Cursor) isGqlQueryParameter_ParameterType() {} - -func (m *GqlQueryParameter) GetParameterType() isGqlQueryParameter_ParameterType { - if m != nil { - return m.ParameterType - } - return nil -} - -func (m *GqlQueryParameter) GetValue() *Value { - if x, ok := m.GetParameterType().(*GqlQueryParameter_Value); ok { - return x.Value - } - return nil -} - -func (m *GqlQueryParameter) GetCursor() []byte { - if x, ok := m.GetParameterType().(*GqlQueryParameter_Cursor); ok { - return x.Cursor - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*GqlQueryParameter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _GqlQueryParameter_OneofMarshaler, _GqlQueryParameter_OneofUnmarshaler, _GqlQueryParameter_OneofSizer, []interface{}{ - (*GqlQueryParameter_Value)(nil), - (*GqlQueryParameter_Cursor)(nil), - } -} - -func _GqlQueryParameter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*GqlQueryParameter) - // parameter_type - switch x := m.ParameterType.(type) { - case *GqlQueryParameter_Value: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Value); err != nil { - return err - } - case *GqlQueryParameter_Cursor: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Cursor) - case nil: - default: - return fmt.Errorf("GqlQueryParameter.ParameterType has unexpected type %T", x) - } - return nil -} - -func _GqlQueryParameter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*GqlQueryParameter) - switch tag { - case 2: // parameter_type.value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Value) - err := b.DecodeMessage(msg) - m.ParameterType = &GqlQueryParameter_Value{msg} - return true, err - case 3: // parameter_type.cursor - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ParameterType = &GqlQueryParameter_Cursor{x} - return true, err - default: - return false, nil - } -} - -func _GqlQueryParameter_OneofSizer(msg proto.Message) (n int) { - m := msg.(*GqlQueryParameter) - // parameter_type - switch x := m.ParameterType.(type) { - case *GqlQueryParameter_Value: - s := proto.Size(x.Value) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *GqlQueryParameter_Cursor: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Cursor))) - n += len(x.Cursor) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A batch of results produced by a query. -type QueryResultBatch struct { - // The number of results skipped, typically because of an offset. - SkippedResults int32 `protobuf:"varint,6,opt,name=skipped_results,json=skippedResults" json:"skipped_results,omitempty"` - // A cursor that points to the position after the last skipped result. - // Will be set when `skipped_results` != 0. - SkippedCursor []byte `protobuf:"bytes,3,opt,name=skipped_cursor,json=skippedCursor,proto3" json:"skipped_cursor,omitempty"` - // The result type for every entity in `entity_results`. - EntityResultType EntityResult_ResultType `protobuf:"varint,1,opt,name=entity_result_type,json=entityResultType,enum=google.datastore.v1.EntityResult_ResultType" json:"entity_result_type,omitempty"` - // The results for this batch. - EntityResults []*EntityResult `protobuf:"bytes,2,rep,name=entity_results,json=entityResults" json:"entity_results,omitempty"` - // A cursor that points to the position after the last result in the batch. - EndCursor []byte `protobuf:"bytes,4,opt,name=end_cursor,json=endCursor,proto3" json:"end_cursor,omitempty"` - // The state of the query after the current batch. - MoreResults QueryResultBatch_MoreResultsType `protobuf:"varint,5,opt,name=more_results,json=moreResults,enum=google.datastore.v1.QueryResultBatch_MoreResultsType" json:"more_results,omitempty"` - // The version number of the snapshot this batch was returned from. - // This applies to the range of results from the query's `start_cursor` (or - // the beginning of the query if no cursor was given) to this batch's - // `end_cursor` (not the query's `end_cursor`). - // - // In a single transaction, subsequent query result batches for the same query - // can have a greater snapshot version number. Each batch's snapshot version - // is valid for all preceding batches. - // The value will be zero for eventually consistent queries. - SnapshotVersion int64 `protobuf:"varint,7,opt,name=snapshot_version,json=snapshotVersion" json:"snapshot_version,omitempty"` -} - -func (m *QueryResultBatch) Reset() { *m = QueryResultBatch{} } -func (m *QueryResultBatch) String() string { return proto.CompactTextString(m) } -func (*QueryResultBatch) ProtoMessage() {} -func (*QueryResultBatch) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{11} } - -func (m *QueryResultBatch) GetSkippedResults() int32 { - if m != nil { - return m.SkippedResults - } - return 0 -} - -func (m *QueryResultBatch) GetSkippedCursor() []byte { - if m != nil { - return m.SkippedCursor - } - return nil -} - -func (m *QueryResultBatch) GetEntityResultType() EntityResult_ResultType { - if m != nil { - return m.EntityResultType - } - return EntityResult_RESULT_TYPE_UNSPECIFIED -} - -func (m *QueryResultBatch) GetEntityResults() []*EntityResult { - if m != nil { - return m.EntityResults - } - return nil -} - -func (m *QueryResultBatch) GetEndCursor() []byte { - if m != nil { - return m.EndCursor - } - return nil -} - -func (m *QueryResultBatch) GetMoreResults() QueryResultBatch_MoreResultsType { - if m != nil { - return m.MoreResults - } - return QueryResultBatch_MORE_RESULTS_TYPE_UNSPECIFIED -} - -func (m *QueryResultBatch) GetSnapshotVersion() int64 { - if m != nil { - return m.SnapshotVersion - } - return 0 -} - -func init() { - proto.RegisterType((*EntityResult)(nil), "google.datastore.v1.EntityResult") - proto.RegisterType((*Query)(nil), "google.datastore.v1.Query") - proto.RegisterType((*KindExpression)(nil), "google.datastore.v1.KindExpression") - proto.RegisterType((*PropertyReference)(nil), "google.datastore.v1.PropertyReference") - proto.RegisterType((*Projection)(nil), "google.datastore.v1.Projection") - proto.RegisterType((*PropertyOrder)(nil), "google.datastore.v1.PropertyOrder") - proto.RegisterType((*Filter)(nil), "google.datastore.v1.Filter") - proto.RegisterType((*CompositeFilter)(nil), "google.datastore.v1.CompositeFilter") - proto.RegisterType((*PropertyFilter)(nil), "google.datastore.v1.PropertyFilter") - proto.RegisterType((*GqlQuery)(nil), "google.datastore.v1.GqlQuery") - proto.RegisterType((*GqlQueryParameter)(nil), "google.datastore.v1.GqlQueryParameter") - proto.RegisterType((*QueryResultBatch)(nil), "google.datastore.v1.QueryResultBatch") - proto.RegisterEnum("google.datastore.v1.EntityResult_ResultType", EntityResult_ResultType_name, EntityResult_ResultType_value) - proto.RegisterEnum("google.datastore.v1.PropertyOrder_Direction", PropertyOrder_Direction_name, PropertyOrder_Direction_value) - proto.RegisterEnum("google.datastore.v1.CompositeFilter_Operator", CompositeFilter_Operator_name, CompositeFilter_Operator_value) - proto.RegisterEnum("google.datastore.v1.PropertyFilter_Operator", PropertyFilter_Operator_name, PropertyFilter_Operator_value) - proto.RegisterEnum("google.datastore.v1.QueryResultBatch_MoreResultsType", QueryResultBatch_MoreResultsType_name, QueryResultBatch_MoreResultsType_value) -} - -func init() { proto.RegisterFile("google/datastore/v1/query.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 1313 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdd, 0x72, 0xd3, 0x46, - 0x14, 0x8e, 0x64, 0x3b, 0x89, 0x8f, 0xff, 0xc4, 0xd2, 0x82, 0x08, 0x50, 0x12, 0x41, 0x4b, 0x3a, - 0x03, 0x36, 0x31, 0xc3, 0x94, 0x69, 0xe9, 0x74, 0xfc, 0xa3, 0xc4, 0x06, 0x63, 0x39, 0x6b, 0x27, - 0x14, 0x86, 0x19, 0x8d, 0xb0, 0x37, 0x46, 0x45, 0x96, 0xc4, 0x4a, 0x09, 0xcd, 0x83, 0x74, 0xa6, - 0x37, 0x7d, 0x81, 0x3e, 0x40, 0x2f, 0xfa, 0x00, 0x6d, 0xa7, 0xcf, 0xd0, 0xeb, 0x5e, 0xf7, 0x11, - 0x3a, 0xda, 0x5d, 0xf9, 0x2f, 0xc6, 0xe4, 0x82, 0x3b, 0xed, 0xd9, 0xef, 0xfb, 0xce, 0x9e, 0xb3, - 0x67, 0x8f, 0x0e, 0xdc, 0x18, 0x7a, 0xde, 0xd0, 0x21, 0xa5, 0x81, 0x15, 0x5a, 0x41, 0xe8, 0x51, - 0x52, 0x3a, 0xd9, 0x29, 0xbd, 0x3d, 0x26, 0xf4, 0xb4, 0xe8, 0x53, 0x2f, 0xf4, 0xd0, 0x45, 0x0e, - 0x28, 0x8e, 0x01, 0xc5, 0x93, 0x9d, 0x8d, 0x6b, 0x82, 0x65, 0xf9, 0x76, 0xc9, 0x72, 0x5d, 0x2f, - 0xb4, 0x42, 0xdb, 0x73, 0x03, 0x4e, 0xd9, 0xd8, 0x5c, 0xa4, 0x49, 0xdc, 0xd0, 0x0e, 0x85, 0xe8, - 0xc6, 0x67, 0x02, 0xc1, 0x56, 0xaf, 0x8e, 0x8f, 0x4a, 0xef, 0xa8, 0xe5, 0xfb, 0x84, 0xc6, 0x0a, - 0xaa, 0xd8, 0x0f, 0x4f, 0x7d, 0x52, 0x72, 0xac, 0xd0, 0x71, 0x87, 0x7c, 0x47, 0xfb, 0x4b, 0x82, - 0xac, 0xce, 0xa4, 0x30, 0x09, 0x8e, 0x9d, 0x10, 0xdd, 0x87, 0x55, 0x2e, 0xad, 0x4a, 0x9b, 0xd2, - 0x76, 0xa6, 0x7c, 0xb5, 0xb8, 0xe0, 0xc0, 0x45, 0x41, 0x11, 0x50, 0xa4, 0xc2, 0xda, 0x09, 0xa1, - 0x81, 0xed, 0xb9, 0x6a, 0x72, 0x53, 0xda, 0x4e, 0xe0, 0x78, 0x89, 0x2e, 0xc1, 0x6a, 0xff, 0x98, - 0x06, 0x1e, 0x55, 0x13, 0x9b, 0xd2, 0x76, 0x16, 0x8b, 0x95, 0xb6, 0x0f, 0xc0, 0x1d, 0xf6, 0x4e, - 0x7d, 0x82, 0xae, 0xc2, 0x65, 0xac, 0x77, 0x0f, 0x5a, 0x3d, 0xb3, 0xf7, 0xbc, 0xa3, 0x9b, 0x07, - 0xed, 0x6e, 0x47, 0xaf, 0x35, 0x77, 0x9b, 0x7a, 0x5d, 0x59, 0x41, 0xeb, 0x90, 0xdc, 0x3d, 0x68, - 0xb5, 0x14, 0x09, 0xe5, 0x01, 0x3a, 0xd8, 0x78, 0xac, 0xd7, 0x7a, 0x4d, 0xa3, 0xad, 0xc8, 0x28, - 0x0b, 0xeb, 0x4f, 0xf4, 0xe7, 0xa6, 0xd1, 0x6e, 0x3d, 0x57, 0x12, 0xda, 0x1f, 0x09, 0x48, 0xed, - 0x47, 0x99, 0x46, 0xdf, 0x01, 0xf8, 0xd4, 0xfb, 0x81, 0xf4, 0xa3, 0x2c, 0xaa, 0xf2, 0x66, 0x62, - 0x3b, 0x53, 0xbe, 0xb1, 0x30, 0x8e, 0xce, 0x18, 0x86, 0xa7, 0x28, 0xe8, 0x2b, 0x48, 0xbe, 0xb1, - 0xdd, 0x81, 0x9a, 0x60, 0xd4, 0x9b, 0x0b, 0xa9, 0x4f, 0x6c, 0x77, 0xa0, 0xff, 0xe8, 0x53, 0x12, - 0x44, 0x81, 0x62, 0x46, 0x88, 0xb2, 0x77, 0x64, 0x3b, 0x21, 0xa1, 0x2c, 0x0f, 0xef, 0xcb, 0xde, - 0x2e, 0x83, 0x60, 0x01, 0x45, 0x0f, 0x21, 0xe5, 0xd1, 0x01, 0xa1, 0x6a, 0x8a, 0xb9, 0xd3, 0xde, - 0x77, 0x52, 0x9f, 0xd0, 0xf0, 0xd4, 0x88, 0x90, 0x98, 0x13, 0xd0, 0x1e, 0x64, 0x06, 0x76, 0x10, - 0xda, 0x6e, 0x3f, 0x34, 0x3d, 0x57, 0x5d, 0x65, 0xfc, 0x2f, 0x96, 0xf2, 0x31, 0x39, 0x22, 0x94, - 0xb8, 0x7d, 0x82, 0x21, 0xa6, 0x1a, 0x2e, 0xda, 0x82, 0x6c, 0x10, 0x5a, 0x34, 0x34, 0xc5, 0x65, - 0xad, 0xb1, 0xcb, 0xca, 0x30, 0x5b, 0x8d, 0x99, 0xd0, 0x75, 0x00, 0xe2, 0x0e, 0x62, 0xc0, 0x3a, - 0x03, 0xa4, 0x89, 0x3b, 0x10, 0xdb, 0x97, 0x60, 0xd5, 0x3b, 0x3a, 0x0a, 0x48, 0xa8, 0xc2, 0xa6, - 0xb4, 0x9d, 0xc2, 0x62, 0x85, 0x76, 0x20, 0xe5, 0xd8, 0x23, 0x3b, 0x54, 0xb3, 0xb3, 0x09, 0x89, - 0x4b, 0xb5, 0xd8, 0x74, 0xc3, 0xfb, 0xe5, 0x43, 0xcb, 0x39, 0x26, 0x98, 0x23, 0xb5, 0x5b, 0x90, - 0x9f, 0x4d, 0x2e, 0x42, 0x90, 0x74, 0xad, 0x11, 0x61, 0x25, 0x99, 0xc6, 0xec, 0x5b, 0xbb, 0x0d, - 0x17, 0xce, 0xc4, 0x34, 0x06, 0xca, 0x53, 0xc0, 0x0e, 0xc0, 0xe4, 0x9a, 0x51, 0x15, 0xd6, 0x7d, - 0x41, 0x13, 0x15, 0x7e, 0xde, 0x7c, 0x8d, 0x79, 0xda, 0xbf, 0x12, 0xe4, 0x66, 0xee, 0xe3, 0x63, - 0xa8, 0xa2, 0xc7, 0x90, 0x1e, 0xd8, 0x74, 0x5c, 0xb4, 0xd2, 0x76, 0xbe, 0x7c, 0xe7, 0xc3, 0xa5, - 0x50, 0xac, 0xc7, 0x1c, 0x3c, 0xa1, 0x6b, 0x3a, 0xa4, 0xc7, 0x76, 0x74, 0x05, 0x3e, 0xad, 0x37, - 0x31, 0x7f, 0x35, 0x73, 0x6f, 0x2b, 0x07, 0xe9, 0x4a, 0xb7, 0xa6, 0xb7, 0xeb, 0xcd, 0xf6, 0x1e, - 0x7f, 0x60, 0x75, 0x7d, 0xbc, 0x96, 0xb5, 0xdf, 0x25, 0x58, 0xe5, 0xc5, 0x8a, 0xf6, 0x41, 0xe9, - 0x7b, 0x23, 0xdf, 0x0b, 0xec, 0x90, 0x98, 0xa2, 0xc6, 0x79, 0xa4, 0xb7, 0x16, 0x1e, 0xb2, 0x16, - 0x83, 0x39, 0xbf, 0xb1, 0x82, 0x0b, 0xfd, 0x59, 0x13, 0x6a, 0x43, 0x21, 0x0e, 0x3e, 0x56, 0x94, - 0x99, 0xe2, 0xcd, 0xa5, 0x61, 0x8f, 0x05, 0xf3, 0xfe, 0x8c, 0xa5, 0x9a, 0x83, 0x0c, 0x97, 0x31, - 0xa3, 0x3e, 0xa7, 0xfd, 0x26, 0x41, 0x61, 0xee, 0x14, 0xe8, 0x5b, 0x90, 0x3d, 0x9f, 0x9d, 0x3b, - 0x5f, 0xbe, 0x7b, 0x9e, 0x73, 0x17, 0x0d, 0x9f, 0x50, 0x2b, 0xf4, 0x28, 0x96, 0x3d, 0x1f, 0x3d, - 0x80, 0x35, 0xee, 0x21, 0x10, 0x5d, 0x65, 0xe9, 0xfb, 0x8e, 0xb1, 0xda, 0x5d, 0x58, 0x8f, 0x65, - 0x90, 0x0a, 0x9f, 0x18, 0x1d, 0x1d, 0x57, 0x7a, 0x06, 0x9e, 0xbb, 0x8b, 0x35, 0x48, 0x54, 0xda, - 0x75, 0x45, 0xd2, 0xfe, 0x91, 0x21, 0x3f, 0x1b, 0xec, 0x47, 0xa9, 0xaf, 0x47, 0x2c, 0xf6, 0xf3, - 0x14, 0xd6, 0xa2, 0xd0, 0xef, 0x41, 0xea, 0x24, 0x7a, 0xa4, 0xac, 0x8f, 0x67, 0xca, 0x1b, 0x0b, - 0x05, 0xc4, 0x33, 0x66, 0x40, 0xed, 0x27, 0xe9, 0x5c, 0x61, 0xe7, 0x20, 0xdd, 0xd2, 0xbb, 0x5d, - 0xb3, 0xd7, 0xa8, 0xb4, 0x15, 0x09, 0x5d, 0x02, 0x34, 0x5e, 0x9a, 0x06, 0x36, 0xf5, 0xfd, 0x83, - 0x4a, 0x4b, 0x91, 0x91, 0x02, 0xd9, 0x3d, 0xac, 0x57, 0x7a, 0x3a, 0xe6, 0xc8, 0x44, 0x54, 0xd6, - 0xd3, 0x96, 0x09, 0x38, 0x89, 0xd2, 0x90, 0xe2, 0x9f, 0xa9, 0x88, 0xd7, 0xa8, 0x74, 0xcd, 0x4a, - 0xbb, 0xa6, 0x77, 0x7b, 0x06, 0x56, 0x32, 0xda, 0x7f, 0x32, 0xac, 0xef, 0xbd, 0x75, 0xf8, 0xaf, - 0x62, 0x0b, 0xb2, 0xec, 0xef, 0x6c, 0x06, 0x21, 0xb5, 0xdd, 0xa1, 0xe8, 0x30, 0x19, 0x66, 0xeb, - 0x32, 0x13, 0xfa, 0x1c, 0xf2, 0x96, 0xe3, 0x78, 0xef, 0x4c, 0xc7, 0x0e, 0x09, 0xb5, 0x9c, 0x80, - 0xe5, 0x70, 0x1d, 0xe7, 0x98, 0xb5, 0x25, 0x8c, 0xe8, 0x19, 0xe4, 0xa3, 0x76, 0x33, 0x30, 0x5f, - 0xd9, 0xee, 0xc0, 0x76, 0x87, 0x81, 0x68, 0xe7, 0xf7, 0x16, 0x66, 0x2a, 0x3e, 0x40, 0xb1, 0x1d, - 0x71, 0xaa, 0x82, 0xa2, 0xbb, 0x21, 0x3d, 0xc5, 0x39, 0x77, 0xda, 0x86, 0x9e, 0xc1, 0x45, 0x56, - 0x91, 0xb6, 0xe7, 0x5a, 0xce, 0x44, 0x3d, 0xb9, 0xa4, 0xd9, 0xc7, 0xea, 0x1d, 0x8b, 0x5a, 0x23, - 0x12, 0xd5, 0x22, 0x9a, 0x48, 0xc4, 0xc2, 0x1b, 0xaf, 0x01, 0x9d, 0xf5, 0x8e, 0x14, 0x48, 0xbc, - 0x21, 0xa7, 0x22, 0x11, 0xd1, 0x27, 0x7a, 0x14, 0x5f, 0xbd, 0xbc, 0xa4, 0xf2, 0xce, 0xba, 0xe4, - 0xa4, 0xaf, 0xe5, 0x87, 0x92, 0x16, 0xc0, 0x85, 0x33, 0xfb, 0xa8, 0x3c, 0x2b, 0xbb, 0xa4, 0xa2, - 0x1a, 0x2b, 0x42, 0x0c, 0xa9, 0xb3, 0xe3, 0x44, 0x63, 0x25, 0x1e, 0x28, 0xaa, 0x0a, 0xe4, 0xfd, - 0x58, 0x9a, 0xbf, 0xff, 0x3f, 0x93, 0xa0, 0x30, 0x97, 0x7c, 0xd0, 0xa8, 0x5a, 0x61, 0xff, 0x35, - 0xba, 0x0d, 0x85, 0xe0, 0x8d, 0xed, 0xfb, 0x64, 0x60, 0x52, 0x66, 0x0e, 0xd4, 0x55, 0xf6, 0xbf, - 0xca, 0x0b, 0x33, 0x07, 0x07, 0xd1, 0xad, 0xc7, 0xc0, 0x99, 0x01, 0x26, 0x27, 0xac, 0xe2, 0xb7, - 0xf7, 0x02, 0x10, 0x9f, 0x81, 0x84, 0x1c, 0x73, 0x2d, 0x1a, 0xcc, 0x9d, 0x65, 0xa3, 0x13, 0x43, - 0x17, 0x27, 0x33, 0x10, 0x56, 0xc8, 0xd4, 0x06, 0x9b, 0x8a, 0x1a, 0x90, 0x9f, 0xd1, 0x8e, 0x9b, - 0xce, 0xd6, 0x07, 0x75, 0x71, 0x6e, 0x5a, 0x2c, 0x98, 0xfb, 0x77, 0x27, 0xe7, 0xff, 0xdd, 0xdf, - 0x43, 0x76, 0xe4, 0x51, 0x32, 0x76, 0x93, 0x62, 0xc7, 0x7f, 0xb0, 0xd0, 0xcd, 0x7c, 0x46, 0x8b, - 0x4f, 0x3d, 0x4a, 0x84, 0x1f, 0x16, 0x47, 0x66, 0x34, 0x31, 0xa0, 0x2f, 0x41, 0x09, 0x5c, 0xcb, - 0x0f, 0x5e, 0x7b, 0xa1, 0x19, 0x4f, 0x88, 0x6b, 0x6c, 0x42, 0x2c, 0xc4, 0xf6, 0x43, 0x6e, 0xd6, - 0x7e, 0x96, 0xa0, 0x30, 0xa7, 0x85, 0xb6, 0xe0, 0xfa, 0x53, 0x03, 0xeb, 0x26, 0x1f, 0x0e, 0xbb, - 0x8b, 0xa6, 0x43, 0x05, 0xb2, 0x6d, 0xa3, 0x67, 0xee, 0x36, 0xdb, 0xcd, 0x6e, 0x43, 0xaf, 0x2b, - 0x12, 0xba, 0x06, 0xea, 0x0c, 0xa9, 0xb2, 0x1b, 0xb5, 0x88, 0x56, 0xf3, 0x69, 0xb3, 0xa7, 0xc8, - 0xe8, 0x3a, 0x5c, 0x59, 0xb0, 0x5b, 0x3b, 0xc0, 0x5d, 0x03, 0x2b, 0x49, 0x74, 0x11, 0x0a, 0x6d, - 0xc3, 0x9c, 0x46, 0x28, 0x89, 0xea, 0x2f, 0x12, 0x5c, 0xee, 0x7b, 0xa3, 0x45, 0xf9, 0xa8, 0x02, - 0xaf, 0xea, 0x68, 0x9a, 0xe9, 0x48, 0x2f, 0x1e, 0x09, 0xc8, 0xd0, 0x73, 0x2c, 0x77, 0x58, 0xf4, - 0xe8, 0xb0, 0x34, 0x24, 0x2e, 0x9b, 0x75, 0x4a, 0x7c, 0xcb, 0xf2, 0xed, 0x60, 0x66, 0x92, 0xff, - 0x66, 0xbc, 0xf8, 0x55, 0xbe, 0xb2, 0xc7, 0xe9, 0x35, 0xc7, 0x3b, 0x1e, 0x14, 0xeb, 0x63, 0x3f, - 0x87, 0x3b, 0x7f, 0xc7, 0x7b, 0x2f, 0xd9, 0xde, 0xcb, 0xf1, 0xde, 0xcb, 0xc3, 0x9d, 0x57, 0xab, - 0xcc, 0xc1, 0xfd, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xcd, 0x38, 0x05, 0xaa, 0x7d, 0x0c, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/datastore.pb.go b/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/datastore.pb.go deleted file mode 100644 index 4330f528..00000000 --- a/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/datastore.pb.go +++ /dev/null @@ -1,1693 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/datastore/v1beta3/datastore.proto - -/* -Package datastore is a generated protocol buffer package. - -It is generated from these files: - google/datastore/v1beta3/datastore.proto - google/datastore/v1beta3/entity.proto - google/datastore/v1beta3/query.proto - -It has these top-level messages: - LookupRequest - LookupResponse - RunQueryRequest - RunQueryResponse - BeginTransactionRequest - BeginTransactionResponse - RollbackRequest - RollbackResponse - CommitRequest - CommitResponse - AllocateIdsRequest - AllocateIdsResponse - ReserveIdsRequest - ReserveIdsResponse - Mutation - MutationResult - ReadOptions - TransactionOptions - PartitionId - Key - ArrayValue - Value - Entity - EntityResult - Query - KindExpression - PropertyReference - Projection - PropertyOrder - Filter - CompositeFilter - PropertyFilter - GqlQuery - GqlQueryParameter - QueryResultBatch -*/ -package datastore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The modes available for commits. -type CommitRequest_Mode int32 - -const ( - // Unspecified. This value must not be used. - CommitRequest_MODE_UNSPECIFIED CommitRequest_Mode = 0 - // Transactional: The mutations are either all applied, or none are applied. - // Learn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions). - CommitRequest_TRANSACTIONAL CommitRequest_Mode = 1 - // Non-transactional: The mutations may not apply as all or none. - CommitRequest_NON_TRANSACTIONAL CommitRequest_Mode = 2 -) - -var CommitRequest_Mode_name = map[int32]string{ - 0: "MODE_UNSPECIFIED", - 1: "TRANSACTIONAL", - 2: "NON_TRANSACTIONAL", -} -var CommitRequest_Mode_value = map[string]int32{ - "MODE_UNSPECIFIED": 0, - "TRANSACTIONAL": 1, - "NON_TRANSACTIONAL": 2, -} - -func (x CommitRequest_Mode) String() string { - return proto.EnumName(CommitRequest_Mode_name, int32(x)) -} -func (CommitRequest_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8, 0} } - -// The possible values for read consistencies. -type ReadOptions_ReadConsistency int32 - -const ( - // Unspecified. This value must not be used. - ReadOptions_READ_CONSISTENCY_UNSPECIFIED ReadOptions_ReadConsistency = 0 - // Strong consistency. - ReadOptions_STRONG ReadOptions_ReadConsistency = 1 - // Eventual consistency. - ReadOptions_EVENTUAL ReadOptions_ReadConsistency = 2 -) - -var ReadOptions_ReadConsistency_name = map[int32]string{ - 0: "READ_CONSISTENCY_UNSPECIFIED", - 1: "STRONG", - 2: "EVENTUAL", -} -var ReadOptions_ReadConsistency_value = map[string]int32{ - "READ_CONSISTENCY_UNSPECIFIED": 0, - "STRONG": 1, - "EVENTUAL": 2, -} - -func (x ReadOptions_ReadConsistency) String() string { - return proto.EnumName(ReadOptions_ReadConsistency_name, int32(x)) -} -func (ReadOptions_ReadConsistency) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{16, 0} -} - -// The request for [Datastore.Lookup][google.datastore.v1beta3.Datastore.Lookup]. -type LookupRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The options for this lookup request. - ReadOptions *ReadOptions `protobuf:"bytes,1,opt,name=read_options,json=readOptions" json:"read_options,omitempty"` - // Keys of entities to look up. - Keys []*Key `protobuf:"bytes,3,rep,name=keys" json:"keys,omitempty"` -} - -func (m *LookupRequest) Reset() { *m = LookupRequest{} } -func (m *LookupRequest) String() string { return proto.CompactTextString(m) } -func (*LookupRequest) ProtoMessage() {} -func (*LookupRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *LookupRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *LookupRequest) GetReadOptions() *ReadOptions { - if m != nil { - return m.ReadOptions - } - return nil -} - -func (m *LookupRequest) GetKeys() []*Key { - if m != nil { - return m.Keys - } - return nil -} - -// The response for [Datastore.Lookup][google.datastore.v1beta3.Datastore.Lookup]. -type LookupResponse struct { - // Entities found as `ResultType.FULL` entities. The order of results in this - // field is undefined and has no relation to the order of the keys in the - // input. - Found []*EntityResult `protobuf:"bytes,1,rep,name=found" json:"found,omitempty"` - // Entities not found as `ResultType.KEY_ONLY` entities. The order of results - // in this field is undefined and has no relation to the order of the keys - // in the input. - Missing []*EntityResult `protobuf:"bytes,2,rep,name=missing" json:"missing,omitempty"` - // A list of keys that were not looked up due to resource constraints. The - // order of results in this field is undefined and has no relation to the - // order of the keys in the input. - Deferred []*Key `protobuf:"bytes,3,rep,name=deferred" json:"deferred,omitempty"` -} - -func (m *LookupResponse) Reset() { *m = LookupResponse{} } -func (m *LookupResponse) String() string { return proto.CompactTextString(m) } -func (*LookupResponse) ProtoMessage() {} -func (*LookupResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *LookupResponse) GetFound() []*EntityResult { - if m != nil { - return m.Found - } - return nil -} - -func (m *LookupResponse) GetMissing() []*EntityResult { - if m != nil { - return m.Missing - } - return nil -} - -func (m *LookupResponse) GetDeferred() []*Key { - if m != nil { - return m.Deferred - } - return nil -} - -// The request for [Datastore.RunQuery][google.datastore.v1beta3.Datastore.RunQuery]. -type RunQueryRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Entities are partitioned into subsets, identified by a partition ID. - // Queries are scoped to a single partition. - // This partition ID is normalized with the standard default context - // partition ID. - PartitionId *PartitionId `protobuf:"bytes,2,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` - // The options for this query. - ReadOptions *ReadOptions `protobuf:"bytes,1,opt,name=read_options,json=readOptions" json:"read_options,omitempty"` - // The type of query. - // - // Types that are valid to be assigned to QueryType: - // *RunQueryRequest_Query - // *RunQueryRequest_GqlQuery - QueryType isRunQueryRequest_QueryType `protobuf_oneof:"query_type"` -} - -func (m *RunQueryRequest) Reset() { *m = RunQueryRequest{} } -func (m *RunQueryRequest) String() string { return proto.CompactTextString(m) } -func (*RunQueryRequest) ProtoMessage() {} -func (*RunQueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isRunQueryRequest_QueryType interface { - isRunQueryRequest_QueryType() -} - -type RunQueryRequest_Query struct { - Query *Query `protobuf:"bytes,3,opt,name=query,oneof"` -} -type RunQueryRequest_GqlQuery struct { - GqlQuery *GqlQuery `protobuf:"bytes,7,opt,name=gql_query,json=gqlQuery,oneof"` -} - -func (*RunQueryRequest_Query) isRunQueryRequest_QueryType() {} -func (*RunQueryRequest_GqlQuery) isRunQueryRequest_QueryType() {} - -func (m *RunQueryRequest) GetQueryType() isRunQueryRequest_QueryType { - if m != nil { - return m.QueryType - } - return nil -} - -func (m *RunQueryRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RunQueryRequest) GetPartitionId() *PartitionId { - if m != nil { - return m.PartitionId - } - return nil -} - -func (m *RunQueryRequest) GetReadOptions() *ReadOptions { - if m != nil { - return m.ReadOptions - } - return nil -} - -func (m *RunQueryRequest) GetQuery() *Query { - if x, ok := m.GetQueryType().(*RunQueryRequest_Query); ok { - return x.Query - } - return nil -} - -func (m *RunQueryRequest) GetGqlQuery() *GqlQuery { - if x, ok := m.GetQueryType().(*RunQueryRequest_GqlQuery); ok { - return x.GqlQuery - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RunQueryRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RunQueryRequest_OneofMarshaler, _RunQueryRequest_OneofUnmarshaler, _RunQueryRequest_OneofSizer, []interface{}{ - (*RunQueryRequest_Query)(nil), - (*RunQueryRequest_GqlQuery)(nil), - } -} - -func _RunQueryRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RunQueryRequest) - // query_type - switch x := m.QueryType.(type) { - case *RunQueryRequest_Query: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Query); err != nil { - return err - } - case *RunQueryRequest_GqlQuery: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.GqlQuery); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RunQueryRequest.QueryType has unexpected type %T", x) - } - return nil -} - -func _RunQueryRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RunQueryRequest) - switch tag { - case 3: // query_type.query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Query) - err := b.DecodeMessage(msg) - m.QueryType = &RunQueryRequest_Query{msg} - return true, err - case 7: // query_type.gql_query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GqlQuery) - err := b.DecodeMessage(msg) - m.QueryType = &RunQueryRequest_GqlQuery{msg} - return true, err - default: - return false, nil - } -} - -func _RunQueryRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RunQueryRequest) - // query_type - switch x := m.QueryType.(type) { - case *RunQueryRequest_Query: - s := proto.Size(x.Query) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RunQueryRequest_GqlQuery: - s := proto.Size(x.GqlQuery) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response for [Datastore.RunQuery][google.datastore.v1beta3.Datastore.RunQuery]. -type RunQueryResponse struct { - // A batch of query results (always present). - Batch *QueryResultBatch `protobuf:"bytes,1,opt,name=batch" json:"batch,omitempty"` - // The parsed form of the `GqlQuery` from the request, if it was set. - Query *Query `protobuf:"bytes,2,opt,name=query" json:"query,omitempty"` -} - -func (m *RunQueryResponse) Reset() { *m = RunQueryResponse{} } -func (m *RunQueryResponse) String() string { return proto.CompactTextString(m) } -func (*RunQueryResponse) ProtoMessage() {} -func (*RunQueryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *RunQueryResponse) GetBatch() *QueryResultBatch { - if m != nil { - return m.Batch - } - return nil -} - -func (m *RunQueryResponse) GetQuery() *Query { - if m != nil { - return m.Query - } - return nil -} - -// The request for [Datastore.BeginTransaction][google.datastore.v1beta3.Datastore.BeginTransaction]. -type BeginTransactionRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Options for a new transaction. - TransactionOptions *TransactionOptions `protobuf:"bytes,10,opt,name=transaction_options,json=transactionOptions" json:"transaction_options,omitempty"` -} - -func (m *BeginTransactionRequest) Reset() { *m = BeginTransactionRequest{} } -func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) } -func (*BeginTransactionRequest) ProtoMessage() {} -func (*BeginTransactionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *BeginTransactionRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *BeginTransactionRequest) GetTransactionOptions() *TransactionOptions { - if m != nil { - return m.TransactionOptions - } - return nil -} - -// The response for [Datastore.BeginTransaction][google.datastore.v1beta3.Datastore.BeginTransaction]. -type BeginTransactionResponse struct { - // The transaction identifier (always present). - Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` -} - -func (m *BeginTransactionResponse) Reset() { *m = BeginTransactionResponse{} } -func (m *BeginTransactionResponse) String() string { return proto.CompactTextString(m) } -func (*BeginTransactionResponse) ProtoMessage() {} -func (*BeginTransactionResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *BeginTransactionResponse) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -// The request for [Datastore.Rollback][google.datastore.v1beta3.Datastore.Rollback]. -type RollbackRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The transaction identifier, returned by a call to - // [Datastore.BeginTransaction][google.datastore.v1beta3.Datastore.BeginTransaction]. - Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` -} - -func (m *RollbackRequest) Reset() { *m = RollbackRequest{} } -func (m *RollbackRequest) String() string { return proto.CompactTextString(m) } -func (*RollbackRequest) ProtoMessage() {} -func (*RollbackRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *RollbackRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RollbackRequest) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -// The response for [Datastore.Rollback][google.datastore.v1beta3.Datastore.Rollback]. -// (an empty message). -type RollbackResponse struct { -} - -func (m *RollbackResponse) Reset() { *m = RollbackResponse{} } -func (m *RollbackResponse) String() string { return proto.CompactTextString(m) } -func (*RollbackResponse) ProtoMessage() {} -func (*RollbackResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -// The request for [Datastore.Commit][google.datastore.v1beta3.Datastore.Commit]. -type CommitRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The type of commit to perform. Defaults to `TRANSACTIONAL`. - Mode CommitRequest_Mode `protobuf:"varint,5,opt,name=mode,enum=google.datastore.v1beta3.CommitRequest_Mode" json:"mode,omitempty"` - // Must be set when mode is `TRANSACTIONAL`. - // - // Types that are valid to be assigned to TransactionSelector: - // *CommitRequest_Transaction - TransactionSelector isCommitRequest_TransactionSelector `protobuf_oneof:"transaction_selector"` - // The mutations to perform. - // - // When mode is `TRANSACTIONAL`, mutations affecting a single entity are - // applied in order. The following sequences of mutations affecting a single - // entity are not permitted in a single `Commit` request: - // - // - `insert` followed by `insert` - // - `update` followed by `insert` - // - `upsert` followed by `insert` - // - `delete` followed by `update` - // - // When mode is `NON_TRANSACTIONAL`, no two mutations may affect a single - // entity. - Mutations []*Mutation `protobuf:"bytes,6,rep,name=mutations" json:"mutations,omitempty"` -} - -func (m *CommitRequest) Reset() { *m = CommitRequest{} } -func (m *CommitRequest) String() string { return proto.CompactTextString(m) } -func (*CommitRequest) ProtoMessage() {} -func (*CommitRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -type isCommitRequest_TransactionSelector interface { - isCommitRequest_TransactionSelector() -} - -type CommitRequest_Transaction struct { - Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3,oneof"` -} - -func (*CommitRequest_Transaction) isCommitRequest_TransactionSelector() {} - -func (m *CommitRequest) GetTransactionSelector() isCommitRequest_TransactionSelector { - if m != nil { - return m.TransactionSelector - } - return nil -} - -func (m *CommitRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CommitRequest) GetMode() CommitRequest_Mode { - if m != nil { - return m.Mode - } - return CommitRequest_MODE_UNSPECIFIED -} - -func (m *CommitRequest) GetTransaction() []byte { - if x, ok := m.GetTransactionSelector().(*CommitRequest_Transaction); ok { - return x.Transaction - } - return nil -} - -func (m *CommitRequest) GetMutations() []*Mutation { - if m != nil { - return m.Mutations - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CommitRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CommitRequest_OneofMarshaler, _CommitRequest_OneofUnmarshaler, _CommitRequest_OneofSizer, []interface{}{ - (*CommitRequest_Transaction)(nil), - } -} - -func _CommitRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CommitRequest) - // transaction_selector - switch x := m.TransactionSelector.(type) { - case *CommitRequest_Transaction: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Transaction) - case nil: - default: - return fmt.Errorf("CommitRequest.TransactionSelector has unexpected type %T", x) - } - return nil -} - -func _CommitRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CommitRequest) - switch tag { - case 1: // transaction_selector.transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.TransactionSelector = &CommitRequest_Transaction{x} - return true, err - default: - return false, nil - } -} - -func _CommitRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CommitRequest) - // transaction_selector - switch x := m.TransactionSelector.(type) { - case *CommitRequest_Transaction: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Transaction))) - n += len(x.Transaction) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response for [Datastore.Commit][google.datastore.v1beta3.Datastore.Commit]. -type CommitResponse struct { - // The result of performing the mutations. - // The i-th mutation result corresponds to the i-th mutation in the request. - MutationResults []*MutationResult `protobuf:"bytes,3,rep,name=mutation_results,json=mutationResults" json:"mutation_results,omitempty"` - // The number of index entries updated during the commit, or zero if none were - // updated. - IndexUpdates int32 `protobuf:"varint,4,opt,name=index_updates,json=indexUpdates" json:"index_updates,omitempty"` -} - -func (m *CommitResponse) Reset() { *m = CommitResponse{} } -func (m *CommitResponse) String() string { return proto.CompactTextString(m) } -func (*CommitResponse) ProtoMessage() {} -func (*CommitResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *CommitResponse) GetMutationResults() []*MutationResult { - if m != nil { - return m.MutationResults - } - return nil -} - -func (m *CommitResponse) GetIndexUpdates() int32 { - if m != nil { - return m.IndexUpdates - } - return 0 -} - -// The request for [Datastore.AllocateIds][google.datastore.v1beta3.Datastore.AllocateIds]. -type AllocateIdsRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // A list of keys with incomplete key paths for which to allocate IDs. - // No key may be reserved/read-only. - Keys []*Key `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` -} - -func (m *AllocateIdsRequest) Reset() { *m = AllocateIdsRequest{} } -func (m *AllocateIdsRequest) String() string { return proto.CompactTextString(m) } -func (*AllocateIdsRequest) ProtoMessage() {} -func (*AllocateIdsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *AllocateIdsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *AllocateIdsRequest) GetKeys() []*Key { - if m != nil { - return m.Keys - } - return nil -} - -// The response for [Datastore.AllocateIds][google.datastore.v1beta3.Datastore.AllocateIds]. -type AllocateIdsResponse struct { - // The keys specified in the request (in the same order), each with - // its key path completed with a newly allocated ID. - Keys []*Key `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` -} - -func (m *AllocateIdsResponse) Reset() { *m = AllocateIdsResponse{} } -func (m *AllocateIdsResponse) String() string { return proto.CompactTextString(m) } -func (*AllocateIdsResponse) ProtoMessage() {} -func (*AllocateIdsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *AllocateIdsResponse) GetKeys() []*Key { - if m != nil { - return m.Keys - } - return nil -} - -// The request for [Datastore.ReserveIds][google.datastore.v1beta3.Datastore.ReserveIds]. -type ReserveIdsRequest struct { - // The ID of the project against which to make the request. - ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // If not empty, the ID of the database against which to make the request. - DatabaseId string `protobuf:"bytes,9,opt,name=database_id,json=databaseId" json:"database_id,omitempty"` - // A list of keys with complete key paths whose numeric IDs should not be - // auto-allocated. - Keys []*Key `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` -} - -func (m *ReserveIdsRequest) Reset() { *m = ReserveIdsRequest{} } -func (m *ReserveIdsRequest) String() string { return proto.CompactTextString(m) } -func (*ReserveIdsRequest) ProtoMessage() {} -func (*ReserveIdsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *ReserveIdsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ReserveIdsRequest) GetDatabaseId() string { - if m != nil { - return m.DatabaseId - } - return "" -} - -func (m *ReserveIdsRequest) GetKeys() []*Key { - if m != nil { - return m.Keys - } - return nil -} - -// The response for [Datastore.ReserveIds][google.datastore.v1beta3.Datastore.ReserveIds]. -type ReserveIdsResponse struct { -} - -func (m *ReserveIdsResponse) Reset() { *m = ReserveIdsResponse{} } -func (m *ReserveIdsResponse) String() string { return proto.CompactTextString(m) } -func (*ReserveIdsResponse) ProtoMessage() {} -func (*ReserveIdsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -// A mutation to apply to an entity. -type Mutation struct { - // The mutation operation. - // - // For `insert`, `update`, and `upsert`: - // - The entity's key must not be reserved/read-only. - // - No property in the entity may have a reserved name, - // not even a property in an entity in a value. - // - No value in the entity may have meaning 18, - // not even a value in an entity in another value. - // - // Types that are valid to be assigned to Operation: - // *Mutation_Insert - // *Mutation_Update - // *Mutation_Upsert - // *Mutation_Delete - Operation isMutation_Operation `protobuf_oneof:"operation"` - // When set, the server will detect whether or not this mutation conflicts - // with the current version of the entity on the server. Conflicting mutations - // are not applied, and are marked as such in MutationResult. - // - // Types that are valid to be assigned to ConflictDetectionStrategy: - // *Mutation_BaseVersion - ConflictDetectionStrategy isMutation_ConflictDetectionStrategy `protobuf_oneof:"conflict_detection_strategy"` -} - -func (m *Mutation) Reset() { *m = Mutation{} } -func (m *Mutation) String() string { return proto.CompactTextString(m) } -func (*Mutation) ProtoMessage() {} -func (*Mutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -type isMutation_Operation interface { - isMutation_Operation() -} -type isMutation_ConflictDetectionStrategy interface { - isMutation_ConflictDetectionStrategy() -} - -type Mutation_Insert struct { - Insert *Entity `protobuf:"bytes,4,opt,name=insert,oneof"` -} -type Mutation_Update struct { - Update *Entity `protobuf:"bytes,5,opt,name=update,oneof"` -} -type Mutation_Upsert struct { - Upsert *Entity `protobuf:"bytes,6,opt,name=upsert,oneof"` -} -type Mutation_Delete struct { - Delete *Key `protobuf:"bytes,7,opt,name=delete,oneof"` -} -type Mutation_BaseVersion struct { - BaseVersion int64 `protobuf:"varint,8,opt,name=base_version,json=baseVersion,oneof"` -} - -func (*Mutation_Insert) isMutation_Operation() {} -func (*Mutation_Update) isMutation_Operation() {} -func (*Mutation_Upsert) isMutation_Operation() {} -func (*Mutation_Delete) isMutation_Operation() {} -func (*Mutation_BaseVersion) isMutation_ConflictDetectionStrategy() {} - -func (m *Mutation) GetOperation() isMutation_Operation { - if m != nil { - return m.Operation - } - return nil -} -func (m *Mutation) GetConflictDetectionStrategy() isMutation_ConflictDetectionStrategy { - if m != nil { - return m.ConflictDetectionStrategy - } - return nil -} - -func (m *Mutation) GetInsert() *Entity { - if x, ok := m.GetOperation().(*Mutation_Insert); ok { - return x.Insert - } - return nil -} - -func (m *Mutation) GetUpdate() *Entity { - if x, ok := m.GetOperation().(*Mutation_Update); ok { - return x.Update - } - return nil -} - -func (m *Mutation) GetUpsert() *Entity { - if x, ok := m.GetOperation().(*Mutation_Upsert); ok { - return x.Upsert - } - return nil -} - -func (m *Mutation) GetDelete() *Key { - if x, ok := m.GetOperation().(*Mutation_Delete); ok { - return x.Delete - } - return nil -} - -func (m *Mutation) GetBaseVersion() int64 { - if x, ok := m.GetConflictDetectionStrategy().(*Mutation_BaseVersion); ok { - return x.BaseVersion - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Mutation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Mutation_OneofMarshaler, _Mutation_OneofUnmarshaler, _Mutation_OneofSizer, []interface{}{ - (*Mutation_Insert)(nil), - (*Mutation_Update)(nil), - (*Mutation_Upsert)(nil), - (*Mutation_Delete)(nil), - (*Mutation_BaseVersion)(nil), - } -} - -func _Mutation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Mutation) - // operation - switch x := m.Operation.(type) { - case *Mutation_Insert: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Insert); err != nil { - return err - } - case *Mutation_Update: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Update); err != nil { - return err - } - case *Mutation_Upsert: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Upsert); err != nil { - return err - } - case *Mutation_Delete: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Delete); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Mutation.Operation has unexpected type %T", x) - } - // conflict_detection_strategy - switch x := m.ConflictDetectionStrategy.(type) { - case *Mutation_BaseVersion: - b.EncodeVarint(8<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.BaseVersion)) - case nil: - default: - return fmt.Errorf("Mutation.ConflictDetectionStrategy has unexpected type %T", x) - } - return nil -} - -func _Mutation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Mutation) - switch tag { - case 4: // operation.insert - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Entity) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Insert{msg} - return true, err - case 5: // operation.update - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Entity) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Update{msg} - return true, err - case 6: // operation.upsert - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Entity) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Upsert{msg} - return true, err - case 7: // operation.delete - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Key) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Delete{msg} - return true, err - case 8: // conflict_detection_strategy.base_version - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ConflictDetectionStrategy = &Mutation_BaseVersion{int64(x)} - return true, err - default: - return false, nil - } -} - -func _Mutation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Mutation) - // operation - switch x := m.Operation.(type) { - case *Mutation_Insert: - s := proto.Size(x.Insert) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Update: - s := proto.Size(x.Update) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Upsert: - s := proto.Size(x.Upsert) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Delete: - s := proto.Size(x.Delete) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // conflict_detection_strategy - switch x := m.ConflictDetectionStrategy.(type) { - case *Mutation_BaseVersion: - n += proto.SizeVarint(8<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.BaseVersion)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The result of applying a mutation. -type MutationResult struct { - // The automatically allocated key. - // Set only when the mutation allocated a key. - Key *Key `protobuf:"bytes,3,opt,name=key" json:"key,omitempty"` - // The version of the entity on the server after processing the mutation. If - // the mutation doesn't change anything on the server, then the version will - // be the version of the current entity or, if no entity is present, a version - // that is strictly greater than the version of any previous entity and less - // than the version of any possible future entity. - Version int64 `protobuf:"varint,4,opt,name=version" json:"version,omitempty"` - // Whether a conflict was detected for this mutation. Always false when a - // conflict detection strategy field is not set in the mutation. - ConflictDetected bool `protobuf:"varint,5,opt,name=conflict_detected,json=conflictDetected" json:"conflict_detected,omitempty"` -} - -func (m *MutationResult) Reset() { *m = MutationResult{} } -func (m *MutationResult) String() string { return proto.CompactTextString(m) } -func (*MutationResult) ProtoMessage() {} -func (*MutationResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *MutationResult) GetKey() *Key { - if m != nil { - return m.Key - } - return nil -} - -func (m *MutationResult) GetVersion() int64 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *MutationResult) GetConflictDetected() bool { - if m != nil { - return m.ConflictDetected - } - return false -} - -// The options shared by read requests. -type ReadOptions struct { - // If not specified, lookups and ancestor queries default to - // `read_consistency`=`STRONG`, global queries default to - // `read_consistency`=`EVENTUAL`. - // - // Types that are valid to be assigned to ConsistencyType: - // *ReadOptions_ReadConsistency_ - // *ReadOptions_Transaction - ConsistencyType isReadOptions_ConsistencyType `protobuf_oneof:"consistency_type"` -} - -func (m *ReadOptions) Reset() { *m = ReadOptions{} } -func (m *ReadOptions) String() string { return proto.CompactTextString(m) } -func (*ReadOptions) ProtoMessage() {} -func (*ReadOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -type isReadOptions_ConsistencyType interface { - isReadOptions_ConsistencyType() -} - -type ReadOptions_ReadConsistency_ struct { - ReadConsistency ReadOptions_ReadConsistency `protobuf:"varint,1,opt,name=read_consistency,json=readConsistency,enum=google.datastore.v1beta3.ReadOptions_ReadConsistency,oneof"` -} -type ReadOptions_Transaction struct { - Transaction []byte `protobuf:"bytes,2,opt,name=transaction,proto3,oneof"` -} - -func (*ReadOptions_ReadConsistency_) isReadOptions_ConsistencyType() {} -func (*ReadOptions_Transaction) isReadOptions_ConsistencyType() {} - -func (m *ReadOptions) GetConsistencyType() isReadOptions_ConsistencyType { - if m != nil { - return m.ConsistencyType - } - return nil -} - -func (m *ReadOptions) GetReadConsistency() ReadOptions_ReadConsistency { - if x, ok := m.GetConsistencyType().(*ReadOptions_ReadConsistency_); ok { - return x.ReadConsistency - } - return ReadOptions_READ_CONSISTENCY_UNSPECIFIED -} - -func (m *ReadOptions) GetTransaction() []byte { - if x, ok := m.GetConsistencyType().(*ReadOptions_Transaction); ok { - return x.Transaction - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ReadOptions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ReadOptions_OneofMarshaler, _ReadOptions_OneofUnmarshaler, _ReadOptions_OneofSizer, []interface{}{ - (*ReadOptions_ReadConsistency_)(nil), - (*ReadOptions_Transaction)(nil), - } -} - -func _ReadOptions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ReadOptions) - // consistency_type - switch x := m.ConsistencyType.(type) { - case *ReadOptions_ReadConsistency_: - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.ReadConsistency)) - case *ReadOptions_Transaction: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Transaction) - case nil: - default: - return fmt.Errorf("ReadOptions.ConsistencyType has unexpected type %T", x) - } - return nil -} - -func _ReadOptions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ReadOptions) - switch tag { - case 1: // consistency_type.read_consistency - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ConsistencyType = &ReadOptions_ReadConsistency_{ReadOptions_ReadConsistency(x)} - return true, err - case 2: // consistency_type.transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ConsistencyType = &ReadOptions_Transaction{x} - return true, err - default: - return false, nil - } -} - -func _ReadOptions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ReadOptions) - // consistency_type - switch x := m.ConsistencyType.(type) { - case *ReadOptions_ReadConsistency_: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.ReadConsistency)) - case *ReadOptions_Transaction: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Transaction))) - n += len(x.Transaction) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Options for beginning a new transaction. -// -// Transactions can be created explicitly with calls to -// [Datastore.BeginTransaction][google.datastore.v1beta3.Datastore.BeginTransaction] or implicitly by setting -// [ReadOptions.new_transaction][google.datastore.v1beta3.ReadOptions.new_transaction] in read requests. -type TransactionOptions struct { - // The `mode` of the transaction, indicating whether write operations are - // supported. - // - // Types that are valid to be assigned to Mode: - // *TransactionOptions_ReadWrite_ - // *TransactionOptions_ReadOnly_ - Mode isTransactionOptions_Mode `protobuf_oneof:"mode"` -} - -func (m *TransactionOptions) Reset() { *m = TransactionOptions{} } -func (m *TransactionOptions) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions) ProtoMessage() {} -func (*TransactionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -type isTransactionOptions_Mode interface { - isTransactionOptions_Mode() -} - -type TransactionOptions_ReadWrite_ struct { - ReadWrite *TransactionOptions_ReadWrite `protobuf:"bytes,1,opt,name=read_write,json=readWrite,oneof"` -} -type TransactionOptions_ReadOnly_ struct { - ReadOnly *TransactionOptions_ReadOnly `protobuf:"bytes,2,opt,name=read_only,json=readOnly,oneof"` -} - -func (*TransactionOptions_ReadWrite_) isTransactionOptions_Mode() {} -func (*TransactionOptions_ReadOnly_) isTransactionOptions_Mode() {} - -func (m *TransactionOptions) GetMode() isTransactionOptions_Mode { - if m != nil { - return m.Mode - } - return nil -} - -func (m *TransactionOptions) GetReadWrite() *TransactionOptions_ReadWrite { - if x, ok := m.GetMode().(*TransactionOptions_ReadWrite_); ok { - return x.ReadWrite - } - return nil -} - -func (m *TransactionOptions) GetReadOnly() *TransactionOptions_ReadOnly { - if x, ok := m.GetMode().(*TransactionOptions_ReadOnly_); ok { - return x.ReadOnly - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TransactionOptions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TransactionOptions_OneofMarshaler, _TransactionOptions_OneofUnmarshaler, _TransactionOptions_OneofSizer, []interface{}{ - (*TransactionOptions_ReadWrite_)(nil), - (*TransactionOptions_ReadOnly_)(nil), - } -} - -func _TransactionOptions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TransactionOptions) - // mode - switch x := m.Mode.(type) { - case *TransactionOptions_ReadWrite_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadWrite); err != nil { - return err - } - case *TransactionOptions_ReadOnly_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadOnly); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransactionOptions.Mode has unexpected type %T", x) - } - return nil -} - -func _TransactionOptions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TransactionOptions) - switch tag { - case 1: // mode.read_write - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions_ReadWrite) - err := b.DecodeMessage(msg) - m.Mode = &TransactionOptions_ReadWrite_{msg} - return true, err - case 2: // mode.read_only - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions_ReadOnly) - err := b.DecodeMessage(msg) - m.Mode = &TransactionOptions_ReadOnly_{msg} - return true, err - default: - return false, nil - } -} - -func _TransactionOptions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TransactionOptions) - // mode - switch x := m.Mode.(type) { - case *TransactionOptions_ReadWrite_: - s := proto.Size(x.ReadWrite) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransactionOptions_ReadOnly_: - s := proto.Size(x.ReadOnly) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Options specific to read / write transactions. -type TransactionOptions_ReadWrite struct { - // The transaction identifier of the transaction being retried. - PreviousTransaction []byte `protobuf:"bytes,1,opt,name=previous_transaction,json=previousTransaction,proto3" json:"previous_transaction,omitempty"` -} - -func (m *TransactionOptions_ReadWrite) Reset() { *m = TransactionOptions_ReadWrite{} } -func (m *TransactionOptions_ReadWrite) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions_ReadWrite) ProtoMessage() {} -func (*TransactionOptions_ReadWrite) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{17, 0} -} - -func (m *TransactionOptions_ReadWrite) GetPreviousTransaction() []byte { - if m != nil { - return m.PreviousTransaction - } - return nil -} - -// Options specific to read-only transactions. -type TransactionOptions_ReadOnly struct { -} - -func (m *TransactionOptions_ReadOnly) Reset() { *m = TransactionOptions_ReadOnly{} } -func (m *TransactionOptions_ReadOnly) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions_ReadOnly) ProtoMessage() {} -func (*TransactionOptions_ReadOnly) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17, 1} } - -func init() { - proto.RegisterType((*LookupRequest)(nil), "google.datastore.v1beta3.LookupRequest") - proto.RegisterType((*LookupResponse)(nil), "google.datastore.v1beta3.LookupResponse") - proto.RegisterType((*RunQueryRequest)(nil), "google.datastore.v1beta3.RunQueryRequest") - proto.RegisterType((*RunQueryResponse)(nil), "google.datastore.v1beta3.RunQueryResponse") - proto.RegisterType((*BeginTransactionRequest)(nil), "google.datastore.v1beta3.BeginTransactionRequest") - proto.RegisterType((*BeginTransactionResponse)(nil), "google.datastore.v1beta3.BeginTransactionResponse") - proto.RegisterType((*RollbackRequest)(nil), "google.datastore.v1beta3.RollbackRequest") - proto.RegisterType((*RollbackResponse)(nil), "google.datastore.v1beta3.RollbackResponse") - proto.RegisterType((*CommitRequest)(nil), "google.datastore.v1beta3.CommitRequest") - proto.RegisterType((*CommitResponse)(nil), "google.datastore.v1beta3.CommitResponse") - proto.RegisterType((*AllocateIdsRequest)(nil), "google.datastore.v1beta3.AllocateIdsRequest") - proto.RegisterType((*AllocateIdsResponse)(nil), "google.datastore.v1beta3.AllocateIdsResponse") - proto.RegisterType((*ReserveIdsRequest)(nil), "google.datastore.v1beta3.ReserveIdsRequest") - proto.RegisterType((*ReserveIdsResponse)(nil), "google.datastore.v1beta3.ReserveIdsResponse") - proto.RegisterType((*Mutation)(nil), "google.datastore.v1beta3.Mutation") - proto.RegisterType((*MutationResult)(nil), "google.datastore.v1beta3.MutationResult") - proto.RegisterType((*ReadOptions)(nil), "google.datastore.v1beta3.ReadOptions") - proto.RegisterType((*TransactionOptions)(nil), "google.datastore.v1beta3.TransactionOptions") - proto.RegisterType((*TransactionOptions_ReadWrite)(nil), "google.datastore.v1beta3.TransactionOptions.ReadWrite") - proto.RegisterType((*TransactionOptions_ReadOnly)(nil), "google.datastore.v1beta3.TransactionOptions.ReadOnly") - proto.RegisterEnum("google.datastore.v1beta3.CommitRequest_Mode", CommitRequest_Mode_name, CommitRequest_Mode_value) - proto.RegisterEnum("google.datastore.v1beta3.ReadOptions_ReadConsistency", ReadOptions_ReadConsistency_name, ReadOptions_ReadConsistency_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Datastore service - -type DatastoreClient interface { - // Looks up entities by key. - Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*LookupResponse, error) - // Queries for entities. - RunQuery(ctx context.Context, in *RunQueryRequest, opts ...grpc.CallOption) (*RunQueryResponse, error) - // Begins a new transaction. - BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) - // Commits a transaction, optionally creating, deleting or modifying some - // entities. - Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) - // Rolls back a transaction. - Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*RollbackResponse, error) - // Allocates IDs for the given keys, which is useful for referencing an entity - // before it is inserted. - AllocateIds(ctx context.Context, in *AllocateIdsRequest, opts ...grpc.CallOption) (*AllocateIdsResponse, error) - // Prevents the supplied keys' IDs from being auto-allocated by Cloud - // Datastore. - ReserveIds(ctx context.Context, in *ReserveIdsRequest, opts ...grpc.CallOption) (*ReserveIdsResponse, error) -} - -type datastoreClient struct { - cc *grpc.ClientConn -} - -func NewDatastoreClient(cc *grpc.ClientConn) DatastoreClient { - return &datastoreClient{cc} -} - -func (c *datastoreClient) Lookup(ctx context.Context, in *LookupRequest, opts ...grpc.CallOption) (*LookupResponse, error) { - out := new(LookupResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1beta3.Datastore/Lookup", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) RunQuery(ctx context.Context, in *RunQueryRequest, opts ...grpc.CallOption) (*RunQueryResponse, error) { - out := new(RunQueryResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1beta3.Datastore/RunQuery", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) { - out := new(BeginTransactionResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1beta3.Datastore/BeginTransaction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) { - out := new(CommitResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1beta3.Datastore/Commit", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*RollbackResponse, error) { - out := new(RollbackResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1beta3.Datastore/Rollback", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) AllocateIds(ctx context.Context, in *AllocateIdsRequest, opts ...grpc.CallOption) (*AllocateIdsResponse, error) { - out := new(AllocateIdsResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1beta3.Datastore/AllocateIds", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datastoreClient) ReserveIds(ctx context.Context, in *ReserveIdsRequest, opts ...grpc.CallOption) (*ReserveIdsResponse, error) { - out := new(ReserveIdsResponse) - err := grpc.Invoke(ctx, "/google.datastore.v1beta3.Datastore/ReserveIds", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Datastore service - -type DatastoreServer interface { - // Looks up entities by key. - Lookup(context.Context, *LookupRequest) (*LookupResponse, error) - // Queries for entities. - RunQuery(context.Context, *RunQueryRequest) (*RunQueryResponse, error) - // Begins a new transaction. - BeginTransaction(context.Context, *BeginTransactionRequest) (*BeginTransactionResponse, error) - // Commits a transaction, optionally creating, deleting or modifying some - // entities. - Commit(context.Context, *CommitRequest) (*CommitResponse, error) - // Rolls back a transaction. - Rollback(context.Context, *RollbackRequest) (*RollbackResponse, error) - // Allocates IDs for the given keys, which is useful for referencing an entity - // before it is inserted. - AllocateIds(context.Context, *AllocateIdsRequest) (*AllocateIdsResponse, error) - // Prevents the supplied keys' IDs from being auto-allocated by Cloud - // Datastore. - ReserveIds(context.Context, *ReserveIdsRequest) (*ReserveIdsResponse, error) -} - -func RegisterDatastoreServer(s *grpc.Server, srv DatastoreServer) { - s.RegisterService(&_Datastore_serviceDesc, srv) -} - -func _Datastore_Lookup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LookupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).Lookup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1beta3.Datastore/Lookup", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).Lookup(ctx, req.(*LookupRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_RunQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RunQueryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).RunQuery(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1beta3.Datastore/RunQuery", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).RunQuery(ctx, req.(*RunQueryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_BeginTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BeginTransactionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).BeginTransaction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1beta3.Datastore/BeginTransaction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).BeginTransaction(ctx, req.(*BeginTransactionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_Commit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommitRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).Commit(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1beta3.Datastore/Commit", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).Commit(ctx, req.(*CommitRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_Rollback_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RollbackRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).Rollback(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1beta3.Datastore/Rollback", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).Rollback(ctx, req.(*RollbackRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_AllocateIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AllocateIdsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).AllocateIds(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1beta3.Datastore/AllocateIds", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).AllocateIds(ctx, req.(*AllocateIdsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Datastore_ReserveIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReserveIdsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatastoreServer).ReserveIds(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.datastore.v1beta3.Datastore/ReserveIds", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatastoreServer).ReserveIds(ctx, req.(*ReserveIdsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Datastore_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.datastore.v1beta3.Datastore", - HandlerType: (*DatastoreServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Lookup", - Handler: _Datastore_Lookup_Handler, - }, - { - MethodName: "RunQuery", - Handler: _Datastore_RunQuery_Handler, - }, - { - MethodName: "BeginTransaction", - Handler: _Datastore_BeginTransaction_Handler, - }, - { - MethodName: "Commit", - Handler: _Datastore_Commit_Handler, - }, - { - MethodName: "Rollback", - Handler: _Datastore_Rollback_Handler, - }, - { - MethodName: "AllocateIds", - Handler: _Datastore_AllocateIds_Handler, - }, - { - MethodName: "ReserveIds", - Handler: _Datastore_ReserveIds_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/datastore/v1beta3/datastore.proto", -} - -func init() { proto.RegisterFile("google/datastore/v1beta3/datastore.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1403 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xcf, 0x38, 0x89, 0x6b, 0x3f, 0xe7, 0x87, 0x33, 0xcd, 0xf7, 0x8b, 0x65, 0x5a, 0x6a, 0x6d, - 0x29, 0x75, 0xd3, 0x62, 0x13, 0xb7, 0xa1, 0x22, 0x54, 0x28, 0xb6, 0xe3, 0xd6, 0x16, 0x8d, 0x1d, - 0x26, 0x6e, 0x2a, 0x50, 0x91, 0xb5, 0xf6, 0x4e, 0xcc, 0x92, 0xf5, 0xce, 0x66, 0x77, 0x1c, 0x88, - 0x10, 0x17, 0x0e, 0x08, 0x81, 0x38, 0x21, 0xd4, 0x13, 0x07, 0xae, 0x70, 0x2e, 0x7f, 0x03, 0x02, - 0x89, 0x0b, 0x07, 0xfe, 0x01, 0xfe, 0x08, 0x8e, 0x68, 0x67, 0x67, 0xfd, 0x2b, 0xb5, 0xbd, 0xae, - 0xb8, 0x79, 0xdf, 0x7e, 0x3e, 0xef, 0x7d, 0xe6, 0xbd, 0xd9, 0xf7, 0x5e, 0x02, 0xe9, 0x36, 0x63, - 0x6d, 0x83, 0x66, 0x35, 0x95, 0xab, 0x0e, 0x67, 0x36, 0xcd, 0x9e, 0x6e, 0x36, 0x29, 0x57, 0x6f, - 0xf7, 0x2d, 0x19, 0xcb, 0x66, 0x9c, 0xe1, 0x84, 0x87, 0xcc, 0xf4, 0xed, 0x12, 0x99, 0xbc, 0x24, - 0x7d, 0xa8, 0x96, 0x9e, 0x55, 0x4d, 0x93, 0x71, 0x95, 0xeb, 0xcc, 0x74, 0x3c, 0x5e, 0xf2, 0xda, - 0xd8, 0x08, 0xd4, 0xe4, 0x3a, 0x3f, 0x93, 0xb0, 0x57, 0xc7, 0xc2, 0x4e, 0xba, 0xd4, 0x96, 0x28, - 0xe5, 0x67, 0x04, 0xcb, 0x0f, 0x19, 0x3b, 0xee, 0x5a, 0x84, 0x9e, 0x74, 0xa9, 0xc3, 0xf1, 0x65, - 0x00, 0xcb, 0x66, 0x1f, 0xd3, 0x16, 0x6f, 0xe8, 0x5a, 0x22, 0x92, 0x42, 0xe9, 0x28, 0x89, 0x4a, - 0x4b, 0x45, 0xc3, 0x65, 0x58, 0xb2, 0xa9, 0xaa, 0x35, 0x98, 0x25, 0x34, 0x25, 0x50, 0x0a, 0xa5, - 0x63, 0xb9, 0x6b, 0x99, 0x71, 0x87, 0xc9, 0x10, 0xaa, 0x6a, 0x35, 0x0f, 0x4c, 0x62, 0x76, 0xff, - 0x01, 0x6f, 0xc2, 0xc2, 0x31, 0x3d, 0x73, 0x12, 0xf3, 0xa9, 0xf9, 0x74, 0x2c, 0x77, 0x79, 0xbc, - 0x87, 0x77, 0xe9, 0x19, 0x11, 0x50, 0xe5, 0x77, 0x04, 0x2b, 0xbe, 0x5a, 0xc7, 0x62, 0xa6, 0x43, - 0xf1, 0x3d, 0x58, 0x3c, 0x62, 0x5d, 0x53, 0x4b, 0x20, 0xe1, 0xe6, 0xb5, 0xf1, 0x6e, 0x4a, 0x22, - 0x3b, 0x84, 0x3a, 0x5d, 0x83, 0x13, 0x8f, 0x84, 0x77, 0xe0, 0x42, 0x47, 0x77, 0x1c, 0xdd, 0x6c, - 0x27, 0x42, 0x33, 0xf1, 0x7d, 0x1a, 0x7e, 0x0b, 0x22, 0x1a, 0x3d, 0xa2, 0xb6, 0x4d, 0xb5, 0x60, - 0x27, 0xe9, 0xc1, 0x95, 0x3f, 0x42, 0xb0, 0x4a, 0xba, 0xe6, 0x7b, 0x6e, 0x39, 0x82, 0x67, 0xdf, - 0x52, 0x6d, 0xae, 0xbb, 0x19, 0x74, 0x01, 0xa1, 0x69, 0xd9, 0xdf, 0xf7, 0xd1, 0x15, 0x8d, 0xc4, - 0xac, 0xfe, 0xc3, 0x7f, 0x58, 0xc7, 0xbb, 0xb0, 0x28, 0x6e, 0x54, 0x62, 0x5e, 0xb8, 0xb8, 0x32, - 0xde, 0x85, 0x38, 0x69, 0x79, 0x8e, 0x78, 0x78, 0x9c, 0x87, 0x68, 0xfb, 0xc4, 0x68, 0x78, 0xe4, - 0x0b, 0x82, 0xac, 0x8c, 0x27, 0x3f, 0x38, 0x31, 0x7c, 0x7e, 0xa4, 0x2d, 0x7f, 0x17, 0x96, 0x00, - 0x04, 0xbd, 0xc1, 0xcf, 0x2c, 0xaa, 0x7c, 0x83, 0x20, 0xde, 0x4f, 0xa8, 0xbc, 0x20, 0x3b, 0xb0, - 0xd8, 0x54, 0x79, 0xeb, 0x23, 0x79, 0xc2, 0x8d, 0x29, 0xf2, 0xbc, 0xfa, 0x16, 0x5c, 0x06, 0xf1, - 0x88, 0x78, 0xcb, 0x3f, 0x60, 0x28, 0xd0, 0x01, 0xe5, 0xf1, 0x94, 0xa7, 0x08, 0x5e, 0x2a, 0xd0, - 0xb6, 0x6e, 0xd6, 0x6d, 0xd5, 0x74, 0xd4, 0x96, 0x9b, 0xad, 0x80, 0x65, 0xfe, 0x10, 0x2e, 0xf2, - 0x3e, 0xa9, 0x57, 0x23, 0x10, 0xf1, 0x6f, 0x8d, 0x8f, 0x3f, 0x10, 0xc9, 0x2f, 0x15, 0xe6, 0xe7, - 0x6c, 0xca, 0x3d, 0x48, 0x9c, 0x17, 0x26, 0xd3, 0x95, 0x82, 0xd8, 0x00, 0x43, 0x24, 0x6d, 0x89, - 0x0c, 0x9a, 0x14, 0x02, 0xab, 0x84, 0x19, 0x46, 0x53, 0x6d, 0x1d, 0x07, 0x3c, 0xce, 0x74, 0x9f, - 0x18, 0xe2, 0x7d, 0x9f, 0x9e, 0x12, 0xe5, 0x97, 0x10, 0x2c, 0x17, 0x59, 0xa7, 0xa3, 0xf3, 0x80, - 0x61, 0x76, 0x60, 0xa1, 0xc3, 0x34, 0x9a, 0x58, 0x4c, 0xa1, 0xf4, 0xca, 0xa4, 0x34, 0x0d, 0x79, - 0xcd, 0xec, 0x31, 0x8d, 0x12, 0xc1, 0xc4, 0xca, 0x73, 0x84, 0x96, 0xe7, 0x86, 0xa4, 0xe2, 0x1d, - 0x88, 0x76, 0xba, 0xb2, 0x23, 0x27, 0xc2, 0xe2, 0x8b, 0x9f, 0x70, 0x6b, 0xf7, 0x24, 0x94, 0xf4, - 0x49, 0xca, 0x7d, 0x58, 0x70, 0x63, 0xe2, 0x75, 0x88, 0xef, 0xd5, 0x76, 0x4b, 0x8d, 0x47, 0xd5, - 0x83, 0xfd, 0x52, 0xb1, 0x72, 0xbf, 0x52, 0xda, 0x8d, 0xcf, 0xe1, 0x35, 0x58, 0xae, 0x93, 0x7c, - 0xf5, 0x20, 0x5f, 0xac, 0x57, 0x6a, 0xd5, 0xfc, 0xc3, 0x38, 0xc2, 0xff, 0x83, 0xb5, 0x6a, 0xad, - 0xda, 0x18, 0x36, 0x87, 0x0a, 0xff, 0x87, 0xf5, 0xc1, 0x5b, 0xe2, 0x50, 0x83, 0xb6, 0x38, 0xb3, - 0x95, 0xaf, 0x11, 0xac, 0xf8, 0x47, 0x94, 0x55, 0x3d, 0x80, 0xb8, 0x1f, 0xbf, 0x61, 0x8b, 0x1b, - 0xee, 0xf7, 0xdd, 0x74, 0x00, 0xed, 0x5e, 0xcb, 0x5b, 0xed, 0x0c, 0x3d, 0x3b, 0xf8, 0x2a, 0x2c, - 0xeb, 0xa6, 0x46, 0x3f, 0x6d, 0x74, 0x2d, 0x4d, 0xe5, 0xd4, 0x49, 0x2c, 0xa4, 0x50, 0x7a, 0x91, - 0x2c, 0x09, 0xe3, 0x23, 0xcf, 0xa6, 0x1c, 0x01, 0xce, 0x1b, 0x06, 0x6b, 0xa9, 0x9c, 0x56, 0x34, - 0x27, 0x60, 0x25, 0xfd, 0xd1, 0x80, 0x82, 0x8f, 0x86, 0x32, 0x5c, 0x1c, 0x8a, 0x23, 0x0f, 0xfe, - 0x02, 0x9e, 0xbe, 0x44, 0xb0, 0x46, 0xa8, 0x43, 0xed, 0xd3, 0x19, 0x14, 0x5f, 0x81, 0x98, 0xeb, - 0xb3, 0xa9, 0x3a, 0xd4, 0x7d, 0x1f, 0x15, 0xef, 0xc1, 0x37, 0xbd, 0xd8, 0x91, 0xd6, 0x01, 0x0f, - 0xea, 0x90, 0x9f, 0xc5, 0xaf, 0x21, 0x88, 0xf8, 0x95, 0xc1, 0xdb, 0x10, 0xd6, 0x4d, 0x87, 0xda, - 0x5c, 0xe4, 0x3e, 0x96, 0x4b, 0x4d, 0x1b, 0x5f, 0xe5, 0x39, 0x22, 0x19, 0x2e, 0xd7, 0x2b, 0x9c, - 0xf8, 0x60, 0x02, 0x72, 0x3d, 0x86, 0xc7, 0x15, 0x71, 0xc3, 0xb3, 0x70, 0x45, 0xdc, 0xbb, 0x10, - 0xd6, 0xa8, 0x41, 0x39, 0x95, 0x3d, 0x7f, 0x72, 0x2e, 0x5c, 0xa2, 0x07, 0xc7, 0x57, 0x61, 0x49, - 0xe4, 0xf7, 0x94, 0xda, 0x8e, 0xfb, 0x79, 0xba, 0x45, 0x98, 0x2f, 0x23, 0x12, 0x73, 0xad, 0x87, - 0x9e, 0xb1, 0x10, 0x83, 0x28, 0xb3, 0xa8, 0x2d, 0xd2, 0x53, 0xb8, 0x0c, 0x2f, 0xb7, 0x98, 0x79, - 0x64, 0xe8, 0x2d, 0xde, 0xd0, 0x28, 0xa7, 0xf2, 0x43, 0xe1, 0xb6, 0xca, 0x69, 0xfb, 0x4c, 0xf9, - 0x0a, 0xc1, 0xca, 0xf0, 0x25, 0xc7, 0x59, 0x98, 0x3f, 0xa6, 0xfe, 0x28, 0x9b, 0x52, 0x25, 0x17, - 0x89, 0x13, 0x70, 0xc1, 0xd7, 0xe3, 0x96, 0x60, 0x9e, 0xf8, 0x8f, 0xf8, 0x26, 0xac, 0x8d, 0x04, - 0xa7, 0x9a, 0x48, 0x75, 0x84, 0xc4, 0xfd, 0x17, 0xbb, 0xd2, 0xae, 0xfc, 0x83, 0x20, 0x36, 0x30, - 0x61, 0x71, 0x13, 0xe2, 0x62, 0x3c, 0xb7, 0x98, 0xe9, 0xe8, 0x0e, 0xa7, 0x66, 0xeb, 0x4c, 0xb4, - 0xa3, 0x95, 0xdc, 0x56, 0xa0, 0x11, 0x2d, 0x7e, 0x17, 0xfb, 0xe4, 0xf2, 0x1c, 0x59, 0xb5, 0x87, - 0x4d, 0xa3, 0xdd, 0x2e, 0xf4, 0x9c, 0x6e, 0xa7, 0xec, 0xc1, 0xea, 0x88, 0x27, 0x9c, 0x82, 0x4b, - 0xa4, 0x94, 0xdf, 0x6d, 0x14, 0x6b, 0xd5, 0x83, 0xca, 0x41, 0xbd, 0x54, 0x2d, 0xbe, 0x3f, 0xd2, - 0xc2, 0x00, 0xc2, 0x07, 0x75, 0x52, 0xab, 0x3e, 0x88, 0x23, 0xbc, 0x04, 0x91, 0xd2, 0x61, 0xa9, - 0x5a, 0x7f, 0x24, 0x5a, 0x16, 0x86, 0xf8, 0xc0, 0x89, 0xbc, 0xa9, 0xfd, 0x34, 0x04, 0xf8, 0xfc, - 0xe0, 0xc2, 0x8f, 0x01, 0x44, 0x06, 0x3e, 0xb1, 0x75, 0x4e, 0xe5, 0xf0, 0x7e, 0x73, 0x96, 0xd1, - 0x27, 0x52, 0xf0, 0xd8, 0x65, 0x97, 0xe7, 0x48, 0xd4, 0xf6, 0x1f, 0x70, 0x1d, 0xa2, 0xde, 0xe6, - 0x63, 0x1a, 0xfe, 0x48, 0xdf, 0x9a, 0xd9, 0x6f, 0xcd, 0x34, 0xc4, 0x26, 0x62, 0xcb, 0xdf, 0xc9, - 0x77, 0x20, 0xda, 0x8b, 0x87, 0x37, 0x61, 0xdd, 0xb2, 0xe9, 0xa9, 0xce, 0xba, 0x4e, 0xe3, 0xfc, - 0xe4, 0xbb, 0xe8, 0xbf, 0x1b, 0xf0, 0x9d, 0x04, 0x88, 0xf8, 0x7e, 0x0b, 0x61, 0x6f, 0x90, 0xe5, - 0xfe, 0x8a, 0x40, 0x74, 0xd7, 0x57, 0x84, 0xbf, 0x45, 0x10, 0xf6, 0x96, 0x5f, 0x7c, 0x7d, 0xbc, - 0xde, 0xa1, 0x65, 0x3e, 0x99, 0x9e, 0x0e, 0x94, 0x6d, 0xe5, 0x8d, 0x2f, 0xfe, 0xfc, 0xfb, 0xbb, - 0xd0, 0x86, 0x72, 0xad, 0xf7, 0x67, 0x82, 0x6c, 0x6e, 0x4e, 0xf6, 0xb3, 0x7e, 0xe3, 0xfb, 0x7c, - 0xdb, 0x10, 0xb4, 0x6d, 0xb4, 0x81, 0xbf, 0x47, 0x10, 0xf1, 0xb7, 0x2d, 0x7c, 0x63, 0xc2, 0xad, - 0x1c, 0x5e, 0x71, 0x93, 0x1b, 0x41, 0xa0, 0x52, 0x55, 0x4e, 0xa8, 0xba, 0xa5, 0x5c, 0x9f, 0xa2, - 0xca, 0x96, 0x44, 0x57, 0xd7, 0x33, 0x04, 0xf1, 0xd1, 0xf5, 0x06, 0x6f, 0x8e, 0x0f, 0x3a, 0x66, - 0x47, 0x4b, 0xe6, 0x66, 0xa1, 0x48, 0xbd, 0xdb, 0x42, 0xef, 0x1d, 0x25, 0x3b, 0x45, 0x6f, 0x73, - 0xc4, 0x81, 0xab, 0xdb, 0xad, 0xaf, 0x37, 0xb6, 0x27, 0xd5, 0x77, 0x68, 0x77, 0x99, 0x54, 0xdf, - 0xe1, 0x0d, 0x20, 0x70, 0x7d, 0x5b, 0x82, 0xd6, 0xab, 0xaf, 0x5c, 0xca, 0x26, 0xd6, 0x77, 0x78, - 0x19, 0x9c, 0x58, 0xdf, 0xd1, 0x1d, 0x2f, 0x70, 0x7d, 0x25, 0xd1, 0xd5, 0xf5, 0x23, 0x82, 0xd8, - 0xc0, 0xa8, 0xc7, 0x13, 0x16, 0xbd, 0xf3, 0x9b, 0x47, 0xf2, 0xf5, 0x80, 0x68, 0x29, 0x70, 0x4b, - 0x08, 0xcc, 0x2a, 0x1b, 0x53, 0x04, 0xaa, 0x7d, 0xae, 0xab, 0xf1, 0x07, 0x04, 0xd0, 0x9f, 0xdd, - 0xf8, 0xe6, 0xa4, 0x9e, 0x3d, 0xb2, 0x69, 0x24, 0x6f, 0x05, 0x03, 0x4b, 0x81, 0x77, 0x84, 0xc0, - 0x8c, 0x72, 0x63, 0x5a, 0x06, 0x7b, 0xd4, 0x6d, 0xb4, 0x51, 0x78, 0x86, 0xe0, 0x52, 0x8b, 0x75, - 0xc6, 0x46, 0x2a, 0xac, 0xf4, 0xfa, 0xce, 0xbe, 0xcd, 0x38, 0xdb, 0x47, 0x1f, 0xe4, 0x25, 0xb6, - 0xcd, 0x0c, 0xd5, 0x6c, 0x67, 0x98, 0xdd, 0xce, 0xb6, 0xa9, 0x29, 0xfe, 0x8b, 0x90, 0xf5, 0x5e, - 0xa9, 0x96, 0xee, 0x9c, 0xff, 0x77, 0xc3, 0xdb, 0x3d, 0xcb, 0x4f, 0xa1, 0x57, 0x1e, 0x78, 0x3e, - 0x8a, 0x06, 0xeb, 0x6a, 0x99, 0x5e, 0x88, 0xcc, 0xe1, 0x66, 0xc1, 0x85, 0xfe, 0xe6, 0x03, 0x9e, - 0x08, 0xc0, 0x93, 0x1e, 0xe0, 0xc9, 0xa1, 0xe7, 0xab, 0x19, 0x16, 0xf1, 0x6e, 0xff, 0x1b, 0x00, - 0x00, 0xff, 0xff, 0x6a, 0xaa, 0xbe, 0x57, 0x66, 0x11, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/entity.pb.go b/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/entity.pb.go deleted file mode 100644 index 390ca207..00000000 --- a/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/entity.pb.go +++ /dev/null @@ -1,764 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/datastore/v1beta3/entity.proto - -package datastore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" -import google_type "google.golang.org/genproto/googleapis/type/latlng" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A partition ID identifies a grouping of entities. The grouping is always -// by project and namespace, however the namespace ID may be empty. -// -// A partition ID contains several dimensions: -// project ID and namespace ID. -// -// Partition dimensions: -// -// - May be `""`. -// - Must be valid UTF-8 bytes. -// - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` -// If the value of any dimension matches regex `__.*__`, the partition is -// reserved/read-only. -// A reserved/read-only partition ID is forbidden in certain documented -// contexts. -// -// Foreign partition IDs (in which the project ID does -// not match the context project ID ) are discouraged. -// Reads and writes of foreign partition IDs may fail if the project is not in an active state. -type PartitionId struct { - // The ID of the project to which the entities belong. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // If not empty, the ID of the namespace to which the entities belong. - NamespaceId string `protobuf:"bytes,4,opt,name=namespace_id,json=namespaceId" json:"namespace_id,omitempty"` -} - -func (m *PartitionId) Reset() { *m = PartitionId{} } -func (m *PartitionId) String() string { return proto.CompactTextString(m) } -func (*PartitionId) ProtoMessage() {} -func (*PartitionId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *PartitionId) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *PartitionId) GetNamespaceId() string { - if m != nil { - return m.NamespaceId - } - return "" -} - -// A unique identifier for an entity. -// If a key's partition ID or any of its path kinds or names are -// reserved/read-only, the key is reserved/read-only. -// A reserved/read-only key is forbidden in certain documented contexts. -type Key struct { - // Entities are partitioned into subsets, currently identified by a project - // ID and namespace ID. - // Queries are scoped to a single partition. - PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` - // The entity path. - // An entity path consists of one or more elements composed of a kind and a - // string or numerical identifier, which identify entities. The first - // element identifies a _root entity_, the second element identifies - // a _child_ of the root entity, the third element identifies a child of the - // second entity, and so forth. The entities identified by all prefixes of - // the path are called the element's _ancestors_. - // - // An entity path is always fully complete: *all* of the entity's ancestors - // are required to be in the path along with the entity identifier itself. - // The only exception is that in some documented cases, the identifier in the - // last path element (for the entity) itself may be omitted. For example, - // the last path element of the key of `Mutation.insert` may have no - // identifier. - // - // A path can never be empty, and a path can have at most 100 elements. - Path []*Key_PathElement `protobuf:"bytes,2,rep,name=path" json:"path,omitempty"` -} - -func (m *Key) Reset() { *m = Key{} } -func (m *Key) String() string { return proto.CompactTextString(m) } -func (*Key) ProtoMessage() {} -func (*Key) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *Key) GetPartitionId() *PartitionId { - if m != nil { - return m.PartitionId - } - return nil -} - -func (m *Key) GetPath() []*Key_PathElement { - if m != nil { - return m.Path - } - return nil -} - -// A (kind, ID/name) pair used to construct a key path. -// -// If either name or ID is set, the element is complete. -// If neither is set, the element is incomplete. -type Key_PathElement struct { - // The kind of the entity. - // A kind matching regex `__.*__` is reserved/read-only. - // A kind must not contain more than 1500 bytes when UTF-8 encoded. - // Cannot be `""`. - Kind string `protobuf:"bytes,1,opt,name=kind" json:"kind,omitempty"` - // The type of ID. - // - // Types that are valid to be assigned to IdType: - // *Key_PathElement_Id - // *Key_PathElement_Name - IdType isKey_PathElement_IdType `protobuf_oneof:"id_type"` -} - -func (m *Key_PathElement) Reset() { *m = Key_PathElement{} } -func (m *Key_PathElement) String() string { return proto.CompactTextString(m) } -func (*Key_PathElement) ProtoMessage() {} -func (*Key_PathElement) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } - -type isKey_PathElement_IdType interface { - isKey_PathElement_IdType() -} - -type Key_PathElement_Id struct { - Id int64 `protobuf:"varint,2,opt,name=id,oneof"` -} -type Key_PathElement_Name struct { - Name string `protobuf:"bytes,3,opt,name=name,oneof"` -} - -func (*Key_PathElement_Id) isKey_PathElement_IdType() {} -func (*Key_PathElement_Name) isKey_PathElement_IdType() {} - -func (m *Key_PathElement) GetIdType() isKey_PathElement_IdType { - if m != nil { - return m.IdType - } - return nil -} - -func (m *Key_PathElement) GetKind() string { - if m != nil { - return m.Kind - } - return "" -} - -func (m *Key_PathElement) GetId() int64 { - if x, ok := m.GetIdType().(*Key_PathElement_Id); ok { - return x.Id - } - return 0 -} - -func (m *Key_PathElement) GetName() string { - if x, ok := m.GetIdType().(*Key_PathElement_Name); ok { - return x.Name - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Key_PathElement) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Key_PathElement_OneofMarshaler, _Key_PathElement_OneofUnmarshaler, _Key_PathElement_OneofSizer, []interface{}{ - (*Key_PathElement_Id)(nil), - (*Key_PathElement_Name)(nil), - } -} - -func _Key_PathElement_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Key_PathElement) - // id_type - switch x := m.IdType.(type) { - case *Key_PathElement_Id: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Id)) - case *Key_PathElement_Name: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Name) - case nil: - default: - return fmt.Errorf("Key_PathElement.IdType has unexpected type %T", x) - } - return nil -} - -func _Key_PathElement_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Key_PathElement) - switch tag { - case 2: // id_type.id - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.IdType = &Key_PathElement_Id{int64(x)} - return true, err - case 3: // id_type.name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.IdType = &Key_PathElement_Name{x} - return true, err - default: - return false, nil - } -} - -func _Key_PathElement_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Key_PathElement) - // id_type - switch x := m.IdType.(type) { - case *Key_PathElement_Id: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Id)) - case *Key_PathElement_Name: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Name))) - n += len(x.Name) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// An array value. -type ArrayValue struct { - // Values in the array. - // The order of this array may not be preserved if it contains a mix of - // indexed and unindexed values. - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` -} - -func (m *ArrayValue) Reset() { *m = ArrayValue{} } -func (m *ArrayValue) String() string { return proto.CompactTextString(m) } -func (*ArrayValue) ProtoMessage() {} -func (*ArrayValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *ArrayValue) GetValues() []*Value { - if m != nil { - return m.Values - } - return nil -} - -// A message that can hold any of the supported value types and associated -// metadata. -type Value struct { - // Must have a value set. - // - // Types that are valid to be assigned to ValueType: - // *Value_NullValue - // *Value_BooleanValue - // *Value_IntegerValue - // *Value_DoubleValue - // *Value_TimestampValue - // *Value_KeyValue - // *Value_StringValue - // *Value_BlobValue - // *Value_GeoPointValue - // *Value_EntityValue - // *Value_ArrayValue - ValueType isValue_ValueType `protobuf_oneof:"value_type"` - // The `meaning` field should only be populated for backwards compatibility. - Meaning int32 `protobuf:"varint,14,opt,name=meaning" json:"meaning,omitempty"` - // If the value should be excluded from all indexes including those defined - // explicitly. - ExcludeFromIndexes bool `protobuf:"varint,19,opt,name=exclude_from_indexes,json=excludeFromIndexes" json:"exclude_from_indexes,omitempty"` -} - -func (m *Value) Reset() { *m = Value{} } -func (m *Value) String() string { return proto.CompactTextString(m) } -func (*Value) ProtoMessage() {} -func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -type isValue_ValueType interface { - isValue_ValueType() -} - -type Value_NullValue struct { - NullValue google_protobuf1.NullValue `protobuf:"varint,11,opt,name=null_value,json=nullValue,enum=google.protobuf.NullValue,oneof"` -} -type Value_BooleanValue struct { - BooleanValue bool `protobuf:"varint,1,opt,name=boolean_value,json=booleanValue,oneof"` -} -type Value_IntegerValue struct { - IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,oneof"` -} -type Value_DoubleValue struct { - DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,oneof"` -} -type Value_TimestampValue struct { - TimestampValue *google_protobuf2.Timestamp `protobuf:"bytes,10,opt,name=timestamp_value,json=timestampValue,oneof"` -} -type Value_KeyValue struct { - KeyValue *Key `protobuf:"bytes,5,opt,name=key_value,json=keyValue,oneof"` -} -type Value_StringValue struct { - StringValue string `protobuf:"bytes,17,opt,name=string_value,json=stringValue,oneof"` -} -type Value_BlobValue struct { - BlobValue []byte `protobuf:"bytes,18,opt,name=blob_value,json=blobValue,proto3,oneof"` -} -type Value_GeoPointValue struct { - GeoPointValue *google_type.LatLng `protobuf:"bytes,8,opt,name=geo_point_value,json=geoPointValue,oneof"` -} -type Value_EntityValue struct { - EntityValue *Entity `protobuf:"bytes,6,opt,name=entity_value,json=entityValue,oneof"` -} -type Value_ArrayValue struct { - ArrayValue *ArrayValue `protobuf:"bytes,9,opt,name=array_value,json=arrayValue,oneof"` -} - -func (*Value_NullValue) isValue_ValueType() {} -func (*Value_BooleanValue) isValue_ValueType() {} -func (*Value_IntegerValue) isValue_ValueType() {} -func (*Value_DoubleValue) isValue_ValueType() {} -func (*Value_TimestampValue) isValue_ValueType() {} -func (*Value_KeyValue) isValue_ValueType() {} -func (*Value_StringValue) isValue_ValueType() {} -func (*Value_BlobValue) isValue_ValueType() {} -func (*Value_GeoPointValue) isValue_ValueType() {} -func (*Value_EntityValue) isValue_ValueType() {} -func (*Value_ArrayValue) isValue_ValueType() {} - -func (m *Value) GetValueType() isValue_ValueType { - if m != nil { - return m.ValueType - } - return nil -} - -func (m *Value) GetNullValue() google_protobuf1.NullValue { - if x, ok := m.GetValueType().(*Value_NullValue); ok { - return x.NullValue - } - return google_protobuf1.NullValue_NULL_VALUE -} - -func (m *Value) GetBooleanValue() bool { - if x, ok := m.GetValueType().(*Value_BooleanValue); ok { - return x.BooleanValue - } - return false -} - -func (m *Value) GetIntegerValue() int64 { - if x, ok := m.GetValueType().(*Value_IntegerValue); ok { - return x.IntegerValue - } - return 0 -} - -func (m *Value) GetDoubleValue() float64 { - if x, ok := m.GetValueType().(*Value_DoubleValue); ok { - return x.DoubleValue - } - return 0 -} - -func (m *Value) GetTimestampValue() *google_protobuf2.Timestamp { - if x, ok := m.GetValueType().(*Value_TimestampValue); ok { - return x.TimestampValue - } - return nil -} - -func (m *Value) GetKeyValue() *Key { - if x, ok := m.GetValueType().(*Value_KeyValue); ok { - return x.KeyValue - } - return nil -} - -func (m *Value) GetStringValue() string { - if x, ok := m.GetValueType().(*Value_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *Value) GetBlobValue() []byte { - if x, ok := m.GetValueType().(*Value_BlobValue); ok { - return x.BlobValue - } - return nil -} - -func (m *Value) GetGeoPointValue() *google_type.LatLng { - if x, ok := m.GetValueType().(*Value_GeoPointValue); ok { - return x.GeoPointValue - } - return nil -} - -func (m *Value) GetEntityValue() *Entity { - if x, ok := m.GetValueType().(*Value_EntityValue); ok { - return x.EntityValue - } - return nil -} - -func (m *Value) GetArrayValue() *ArrayValue { - if x, ok := m.GetValueType().(*Value_ArrayValue); ok { - return x.ArrayValue - } - return nil -} - -func (m *Value) GetMeaning() int32 { - if m != nil { - return m.Meaning - } - return 0 -} - -func (m *Value) GetExcludeFromIndexes() bool { - if m != nil { - return m.ExcludeFromIndexes - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Value) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Value_OneofMarshaler, _Value_OneofUnmarshaler, _Value_OneofSizer, []interface{}{ - (*Value_NullValue)(nil), - (*Value_BooleanValue)(nil), - (*Value_IntegerValue)(nil), - (*Value_DoubleValue)(nil), - (*Value_TimestampValue)(nil), - (*Value_KeyValue)(nil), - (*Value_StringValue)(nil), - (*Value_BlobValue)(nil), - (*Value_GeoPointValue)(nil), - (*Value_EntityValue)(nil), - (*Value_ArrayValue)(nil), - } -} - -func _Value_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Value) - // value_type - switch x := m.ValueType.(type) { - case *Value_NullValue: - b.EncodeVarint(11<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.NullValue)) - case *Value_BooleanValue: - t := uint64(0) - if x.BooleanValue { - t = 1 - } - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Value_IntegerValue: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IntegerValue)) - case *Value_DoubleValue: - b.EncodeVarint(3<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.DoubleValue)) - case *Value_TimestampValue: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimestampValue); err != nil { - return err - } - case *Value_KeyValue: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KeyValue); err != nil { - return err - } - case *Value_StringValue: - b.EncodeVarint(17<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *Value_BlobValue: - b.EncodeVarint(18<<3 | proto.WireBytes) - b.EncodeRawBytes(x.BlobValue) - case *Value_GeoPointValue: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.GeoPointValue); err != nil { - return err - } - case *Value_EntityValue: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.EntityValue); err != nil { - return err - } - case *Value_ArrayValue: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ArrayValue); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Value.ValueType has unexpected type %T", x) - } - return nil -} - -func _Value_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Value) - switch tag { - case 11: // value_type.null_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_NullValue{google_protobuf1.NullValue(x)} - return true, err - case 1: // value_type.boolean_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_BooleanValue{x != 0} - return true, err - case 2: // value_type.integer_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_IntegerValue{int64(x)} - return true, err - case 3: // value_type.double_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.ValueType = &Value_DoubleValue{math.Float64frombits(x)} - return true, err - case 10: // value_type.timestamp_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf2.Timestamp) - err := b.DecodeMessage(msg) - m.ValueType = &Value_TimestampValue{msg} - return true, err - case 5: // value_type.key_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Key) - err := b.DecodeMessage(msg) - m.ValueType = &Value_KeyValue{msg} - return true, err - case 17: // value_type.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ValueType = &Value_StringValue{x} - return true, err - case 18: // value_type.blob_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ValueType = &Value_BlobValue{x} - return true, err - case 8: // value_type.geo_point_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_type.LatLng) - err := b.DecodeMessage(msg) - m.ValueType = &Value_GeoPointValue{msg} - return true, err - case 6: // value_type.entity_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Entity) - err := b.DecodeMessage(msg) - m.ValueType = &Value_EntityValue{msg} - return true, err - case 9: // value_type.array_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ArrayValue) - err := b.DecodeMessage(msg) - m.ValueType = &Value_ArrayValue{msg} - return true, err - default: - return false, nil - } -} - -func _Value_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Value) - // value_type - switch x := m.ValueType.(type) { - case *Value_NullValue: - n += proto.SizeVarint(11<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.NullValue)) - case *Value_BooleanValue: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += 1 - case *Value_IntegerValue: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IntegerValue)) - case *Value_DoubleValue: - n += proto.SizeVarint(3<<3 | proto.WireFixed64) - n += 8 - case *Value_TimestampValue: - s := proto.Size(x.TimestampValue) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_KeyValue: - s := proto.Size(x.KeyValue) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_StringValue: - n += proto.SizeVarint(17<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *Value_BlobValue: - n += proto.SizeVarint(18<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.BlobValue))) - n += len(x.BlobValue) - case *Value_GeoPointValue: - s := proto.Size(x.GeoPointValue) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_EntityValue: - s := proto.Size(x.EntityValue) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_ArrayValue: - s := proto.Size(x.ArrayValue) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A Datastore data object. -// -// An entity is limited to 1 megabyte when stored. That _roughly_ -// corresponds to a limit of 1 megabyte for the serialized form of this -// message. -type Entity struct { - // The entity's key. - // - // An entity must have a key, unless otherwise documented (for example, - // an entity in `Value.entity_value` may have no key). - // An entity's kind is its key path's last element's kind, - // or null if it has no key. - Key *Key `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // The entity's properties. - // The map's keys are property names. - // A property name matching regex `__.*__` is reserved. - // A reserved property name is forbidden in certain documented contexts. - // The name must not contain more than 500 characters. - // The name cannot be `""`. - Properties map[string]*Value `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Entity) Reset() { *m = Entity{} } -func (m *Entity) String() string { return proto.CompactTextString(m) } -func (*Entity) ProtoMessage() {} -func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *Entity) GetKey() *Key { - if m != nil { - return m.Key - } - return nil -} - -func (m *Entity) GetProperties() map[string]*Value { - if m != nil { - return m.Properties - } - return nil -} - -func init() { - proto.RegisterType((*PartitionId)(nil), "google.datastore.v1beta3.PartitionId") - proto.RegisterType((*Key)(nil), "google.datastore.v1beta3.Key") - proto.RegisterType((*Key_PathElement)(nil), "google.datastore.v1beta3.Key.PathElement") - proto.RegisterType((*ArrayValue)(nil), "google.datastore.v1beta3.ArrayValue") - proto.RegisterType((*Value)(nil), "google.datastore.v1beta3.Value") - proto.RegisterType((*Entity)(nil), "google.datastore.v1beta3.Entity") -} - -func init() { proto.RegisterFile("google/datastore/v1beta3/entity.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 789 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x95, 0xdf, 0x8e, 0xdb, 0x44, - 0x14, 0xc6, 0xed, 0x64, 0xb3, 0x5d, 0x1f, 0xbb, 0xbb, 0x65, 0xda, 0x0b, 0x2b, 0x6a, 0xd9, 0x10, - 0x58, 0x29, 0xdc, 0xd8, 0xed, 0x56, 0x08, 0x44, 0xe9, 0x45, 0x03, 0xa1, 0x8e, 0x5a, 0x41, 0x34, - 0xaa, 0xf6, 0x02, 0xad, 0x88, 0x26, 0xf1, 0xd4, 0x1d, 0x62, 0xcf, 0x58, 0xf6, 0xb8, 0xaa, 0x5f, - 0x09, 0xee, 0x78, 0x0c, 0x9e, 0x83, 0x3b, 0x5e, 0x02, 0xcd, 0x1f, 0x3b, 0xab, 0x56, 0x29, 0xdc, - 0x79, 0xce, 0xf9, 0x9d, 0x6f, 0xbe, 0x99, 0x73, 0x26, 0x81, 0x8b, 0x4c, 0x88, 0x2c, 0xa7, 0x71, - 0x4a, 0x24, 0xa9, 0xa5, 0xa8, 0x68, 0xfc, 0xf6, 0xd1, 0x86, 0x4a, 0xf2, 0x38, 0xa6, 0x5c, 0x32, - 0xd9, 0x46, 0x65, 0x25, 0xa4, 0x40, 0xa1, 0xc1, 0xa2, 0x1e, 0x8b, 0x2c, 0x36, 0xbe, 0x6f, 0x05, - 0x48, 0xc9, 0x62, 0xc2, 0xb9, 0x90, 0x44, 0x32, 0xc1, 0x6b, 0x53, 0xd7, 0x67, 0xf5, 0x6a, 0xd3, - 0xbc, 0x8e, 0x6b, 0x59, 0x35, 0x5b, 0x69, 0xb3, 0xe7, 0xef, 0x67, 0x25, 0x2b, 0x68, 0x2d, 0x49, - 0x51, 0x5a, 0xc0, 0x6e, 0x1b, 0xcb, 0xb6, 0xa4, 0x71, 0x4e, 0x64, 0xce, 0x33, 0x93, 0x99, 0xfe, - 0x0c, 0xfe, 0x8a, 0x54, 0x92, 0xa9, 0xcd, 0x96, 0x29, 0x7a, 0x00, 0x50, 0x56, 0xe2, 0x37, 0xba, - 0x95, 0x6b, 0x96, 0x86, 0x83, 0x89, 0x3b, 0xf3, 0xb0, 0x67, 0x23, 0xcb, 0x14, 0x7d, 0x06, 0x01, - 0x27, 0x05, 0xad, 0x4b, 0xb2, 0xa5, 0x0a, 0x38, 0xd2, 0x80, 0xdf, 0xc7, 0x96, 0xe9, 0xf4, 0x6f, - 0x17, 0x86, 0x2f, 0x68, 0x8b, 0x12, 0x08, 0xca, 0x4e, 0x58, 0xa1, 0xee, 0xc4, 0x9d, 0xf9, 0x97, - 0x17, 0xd1, 0xa1, 0x0b, 0x88, 0x6e, 0xd8, 0xc0, 0x7e, 0x79, 0xc3, 0xd3, 0x53, 0x38, 0x2a, 0x89, - 0x7c, 0x13, 0x0e, 0x26, 0xc3, 0x99, 0x7f, 0xf9, 0xe5, 0x61, 0x85, 0x17, 0xb4, 0x8d, 0x56, 0x44, - 0xbe, 0x59, 0xe4, 0xb4, 0xa0, 0x5c, 0x62, 0x5d, 0x36, 0x7e, 0xa5, 0x4e, 0xd8, 0x07, 0x11, 0x82, - 0xa3, 0x1d, 0xe3, 0xc6, 0x8f, 0x87, 0xf5, 0x37, 0xba, 0x03, 0x03, 0x7b, 0xda, 0x61, 0xe2, 0xe0, - 0x01, 0x4b, 0xd1, 0x3d, 0x38, 0x52, 0x87, 0x0a, 0x87, 0x8a, 0x4a, 0x1c, 0xac, 0x57, 0x73, 0x0f, - 0x6e, 0xb1, 0x74, 0xad, 0x2e, 0x71, 0xba, 0x00, 0x78, 0x56, 0x55, 0xa4, 0xbd, 0x22, 0x79, 0x43, - 0xd1, 0xd7, 0x70, 0xfc, 0x56, 0x7d, 0xd4, 0xa1, 0xab, 0x4d, 0x9e, 0x1f, 0x36, 0xa9, 0x0b, 0xb0, - 0xc5, 0xa7, 0x7f, 0x8c, 0x60, 0x64, 0x24, 0x9e, 0x00, 0xf0, 0x26, 0xcf, 0xd7, 0x3a, 0x11, 0xfa, - 0x13, 0x77, 0x76, 0x7a, 0x39, 0xee, 0x64, 0xba, 0xc6, 0x46, 0x3f, 0x35, 0x79, 0xae, 0xf9, 0xc4, - 0xc1, 0x1e, 0xef, 0x16, 0xe8, 0x02, 0x6e, 0x6f, 0x84, 0xc8, 0x29, 0xe1, 0xb6, 0x5e, 0x9d, 0xee, - 0x24, 0x71, 0x70, 0x60, 0xc3, 0x3d, 0xc6, 0xb8, 0xa4, 0x19, 0xad, 0x2c, 0xd6, 0x1d, 0x39, 0xb0, - 0x61, 0x83, 0x7d, 0x0e, 0x41, 0x2a, 0x9a, 0x4d, 0x4e, 0x2d, 0xa5, 0x2e, 0xc1, 0x4d, 0x1c, 0xec, - 0x9b, 0xa8, 0x81, 0x16, 0x70, 0xd6, 0x4f, 0x99, 0xe5, 0x40, 0xb7, 0xf8, 0x43, 0xd3, 0xaf, 0x3a, - 0x2e, 0x71, 0xf0, 0x69, 0x5f, 0x64, 0x64, 0xbe, 0x03, 0x6f, 0x47, 0x5b, 0x2b, 0x30, 0xd2, 0x02, - 0x0f, 0x3e, 0xda, 0xe1, 0xc4, 0xc1, 0x27, 0x3b, 0xda, 0xf6, 0x4e, 0x6b, 0x59, 0x31, 0x9e, 0x59, - 0x81, 0x4f, 0x6c, 0xbb, 0x7c, 0x13, 0x35, 0xd0, 0x39, 0xc0, 0x26, 0x17, 0x1b, 0x8b, 0xa0, 0x89, - 0x3b, 0x0b, 0xd4, 0xed, 0xa9, 0x98, 0x01, 0x9e, 0xc2, 0x59, 0x46, 0xc5, 0xba, 0x14, 0x8c, 0x4b, - 0x4b, 0x9d, 0x68, 0x27, 0x77, 0x3b, 0x27, 0xaa, 0xe5, 0xd1, 0x4b, 0x22, 0x5f, 0xf2, 0x2c, 0x71, - 0xf0, 0xed, 0x8c, 0x8a, 0x95, 0x82, 0xbb, 0x9b, 0x08, 0xcc, 0x1b, 0xb7, 0xb5, 0xc7, 0xba, 0x76, - 0x72, 0xf8, 0x14, 0x0b, 0x4d, 0x2b, 0x9b, 0xa6, 0xce, 0xc8, 0x3c, 0x07, 0x9f, 0xa8, 0x89, 0xb2, - 0x2a, 0x9e, 0x56, 0xf9, 0xe2, 0xb0, 0xca, 0x7e, 0xfc, 0x12, 0x07, 0x03, 0xd9, 0x0f, 0x63, 0x08, - 0xb7, 0x0a, 0x4a, 0x38, 0xe3, 0x59, 0x78, 0x3a, 0x71, 0x67, 0x23, 0xdc, 0x2d, 0xd1, 0x43, 0xb8, - 0x47, 0xdf, 0x6d, 0xf3, 0x26, 0xa5, 0xeb, 0xd7, 0x95, 0x28, 0xd6, 0x8c, 0xa7, 0xf4, 0x1d, 0xad, - 0xc3, 0xbb, 0x6a, 0x5a, 0x30, 0xb2, 0xb9, 0x1f, 0x2b, 0x51, 0x2c, 0x4d, 0x66, 0x1e, 0x00, 0x68, - 0x3b, 0x66, 0xe8, 0xff, 0x71, 0xe1, 0xd8, 0x98, 0x47, 0x31, 0x0c, 0x77, 0xb4, 0xb5, 0xaf, 0xfa, - 0xe3, 0x1d, 0xc3, 0x8a, 0x44, 0x2b, 0xfd, 0xcb, 0x52, 0xd2, 0x4a, 0x32, 0x5a, 0x87, 0x43, 0xfd, - 0x4c, 0x1e, 0xfe, 0xd7, 0x1d, 0x45, 0xab, 0xbe, 0x64, 0xc1, 0x65, 0xd5, 0xe2, 0x1b, 0x1a, 0xe3, - 0x5f, 0xe1, 0xec, 0xbd, 0x34, 0xba, 0xb3, 0x77, 0xe5, 0x99, 0x6d, 0xbf, 0x82, 0xd1, 0x7e, 0xd4, - 0xff, 0xc7, 0xc3, 0x34, 0xf4, 0xb7, 0x83, 0x6f, 0xdc, 0xf9, 0x9f, 0x2e, 0xdc, 0xdf, 0x8a, 0xe2, - 0x60, 0xc5, 0xdc, 0x37, 0x26, 0x57, 0x6a, 0xce, 0x57, 0xee, 0x2f, 0xcf, 0x2c, 0x98, 0x89, 0x9c, - 0xf0, 0x2c, 0x12, 0x55, 0x16, 0x67, 0x94, 0xeb, 0x57, 0x10, 0x9b, 0x14, 0x29, 0x59, 0xfd, 0xe1, - 0x3f, 0xc4, 0x93, 0x3e, 0xf2, 0xfb, 0xe0, 0xd3, 0xe7, 0x46, 0xe3, 0xfb, 0x5c, 0x34, 0x69, 0xf4, - 0x43, 0xbf, 0xe5, 0xd5, 0xa3, 0xb9, 0x42, 0xff, 0xea, 0x80, 0x6b, 0x0d, 0x5c, 0xf7, 0xc0, 0xf5, - 0x95, 0xd1, 0xda, 0x1c, 0xeb, 0xfd, 0x1e, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x2c, 0x6d, 0x30, - 0xe2, 0x90, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/query.pb.go b/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/query.pb.go deleted file mode 100644 index b2f2ce01..00000000 --- a/vendor/google.golang.org/genproto/googleapis/datastore/v1beta3/query.pb.go +++ /dev/null @@ -1,970 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/datastore/v1beta3/query.proto - -package datastore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/wrappers" -import _ "google.golang.org/genproto/googleapis/type/latlng" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Specifies what data the 'entity' field contains. -// A `ResultType` is either implied (for example, in `LookupResponse.missing` -// from `datastore.proto`, it is always `KEY_ONLY`) or specified by context -// (for example, in message `QueryResultBatch`, field `entity_result_type` -// specifies a `ResultType` for all the values in field `entity_results`). -type EntityResult_ResultType int32 - -const ( - // Unspecified. This value is never used. - EntityResult_RESULT_TYPE_UNSPECIFIED EntityResult_ResultType = 0 - // The key and properties. - EntityResult_FULL EntityResult_ResultType = 1 - // A projected subset of properties. The entity may have no key. - EntityResult_PROJECTION EntityResult_ResultType = 2 - // Only the key. - EntityResult_KEY_ONLY EntityResult_ResultType = 3 -) - -var EntityResult_ResultType_name = map[int32]string{ - 0: "RESULT_TYPE_UNSPECIFIED", - 1: "FULL", - 2: "PROJECTION", - 3: "KEY_ONLY", -} -var EntityResult_ResultType_value = map[string]int32{ - "RESULT_TYPE_UNSPECIFIED": 0, - "FULL": 1, - "PROJECTION": 2, - "KEY_ONLY": 3, -} - -func (x EntityResult_ResultType) String() string { - return proto.EnumName(EntityResult_ResultType_name, int32(x)) -} -func (EntityResult_ResultType) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -// The sort direction. -type PropertyOrder_Direction int32 - -const ( - // Unspecified. This value must not be used. - PropertyOrder_DIRECTION_UNSPECIFIED PropertyOrder_Direction = 0 - // Ascending. - PropertyOrder_ASCENDING PropertyOrder_Direction = 1 - // Descending. - PropertyOrder_DESCENDING PropertyOrder_Direction = 2 -) - -var PropertyOrder_Direction_name = map[int32]string{ - 0: "DIRECTION_UNSPECIFIED", - 1: "ASCENDING", - 2: "DESCENDING", -} -var PropertyOrder_Direction_value = map[string]int32{ - "DIRECTION_UNSPECIFIED": 0, - "ASCENDING": 1, - "DESCENDING": 2, -} - -func (x PropertyOrder_Direction) String() string { - return proto.EnumName(PropertyOrder_Direction_name, int32(x)) -} -func (PropertyOrder_Direction) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{5, 0} } - -// A composite filter operator. -type CompositeFilter_Operator int32 - -const ( - // Unspecified. This value must not be used. - CompositeFilter_OPERATOR_UNSPECIFIED CompositeFilter_Operator = 0 - // The results are required to satisfy each of the combined filters. - CompositeFilter_AND CompositeFilter_Operator = 1 -) - -var CompositeFilter_Operator_name = map[int32]string{ - 0: "OPERATOR_UNSPECIFIED", - 1: "AND", -} -var CompositeFilter_Operator_value = map[string]int32{ - "OPERATOR_UNSPECIFIED": 0, - "AND": 1, -} - -func (x CompositeFilter_Operator) String() string { - return proto.EnumName(CompositeFilter_Operator_name, int32(x)) -} -func (CompositeFilter_Operator) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{7, 0} } - -// A property filter operator. -type PropertyFilter_Operator int32 - -const ( - // Unspecified. This value must not be used. - PropertyFilter_OPERATOR_UNSPECIFIED PropertyFilter_Operator = 0 - // Less than. - PropertyFilter_LESS_THAN PropertyFilter_Operator = 1 - // Less than or equal. - PropertyFilter_LESS_THAN_OR_EQUAL PropertyFilter_Operator = 2 - // Greater than. - PropertyFilter_GREATER_THAN PropertyFilter_Operator = 3 - // Greater than or equal. - PropertyFilter_GREATER_THAN_OR_EQUAL PropertyFilter_Operator = 4 - // Equal. - PropertyFilter_EQUAL PropertyFilter_Operator = 5 - // Has ancestor. - PropertyFilter_HAS_ANCESTOR PropertyFilter_Operator = 11 -) - -var PropertyFilter_Operator_name = map[int32]string{ - 0: "OPERATOR_UNSPECIFIED", - 1: "LESS_THAN", - 2: "LESS_THAN_OR_EQUAL", - 3: "GREATER_THAN", - 4: "GREATER_THAN_OR_EQUAL", - 5: "EQUAL", - 11: "HAS_ANCESTOR", -} -var PropertyFilter_Operator_value = map[string]int32{ - "OPERATOR_UNSPECIFIED": 0, - "LESS_THAN": 1, - "LESS_THAN_OR_EQUAL": 2, - "GREATER_THAN": 3, - "GREATER_THAN_OR_EQUAL": 4, - "EQUAL": 5, - "HAS_ANCESTOR": 11, -} - -func (x PropertyFilter_Operator) String() string { - return proto.EnumName(PropertyFilter_Operator_name, int32(x)) -} -func (PropertyFilter_Operator) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{8, 0} } - -// The possible values for the `more_results` field. -type QueryResultBatch_MoreResultsType int32 - -const ( - // Unspecified. This value is never used. - QueryResultBatch_MORE_RESULTS_TYPE_UNSPECIFIED QueryResultBatch_MoreResultsType = 0 - // There may be additional batches to fetch from this query. - QueryResultBatch_NOT_FINISHED QueryResultBatch_MoreResultsType = 1 - // The query is finished, but there may be more results after the limit. - QueryResultBatch_MORE_RESULTS_AFTER_LIMIT QueryResultBatch_MoreResultsType = 2 - // The query is finished, but there may be more results after the end - // cursor. - QueryResultBatch_MORE_RESULTS_AFTER_CURSOR QueryResultBatch_MoreResultsType = 4 - // The query is finished, and there are no more results. - QueryResultBatch_NO_MORE_RESULTS QueryResultBatch_MoreResultsType = 3 -) - -var QueryResultBatch_MoreResultsType_name = map[int32]string{ - 0: "MORE_RESULTS_TYPE_UNSPECIFIED", - 1: "NOT_FINISHED", - 2: "MORE_RESULTS_AFTER_LIMIT", - 4: "MORE_RESULTS_AFTER_CURSOR", - 3: "NO_MORE_RESULTS", -} -var QueryResultBatch_MoreResultsType_value = map[string]int32{ - "MORE_RESULTS_TYPE_UNSPECIFIED": 0, - "NOT_FINISHED": 1, - "MORE_RESULTS_AFTER_LIMIT": 2, - "MORE_RESULTS_AFTER_CURSOR": 4, - "NO_MORE_RESULTS": 3, -} - -func (x QueryResultBatch_MoreResultsType) String() string { - return proto.EnumName(QueryResultBatch_MoreResultsType_name, int32(x)) -} -func (QueryResultBatch_MoreResultsType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{11, 0} -} - -// The result of fetching an entity from Datastore. -type EntityResult struct { - // The resulting entity. - Entity *Entity `protobuf:"bytes,1,opt,name=entity" json:"entity,omitempty"` - // The version of the entity, a strictly positive number that monotonically - // increases with changes to the entity. - // - // This field is set for [`FULL`][google.datastore.v1beta3.EntityResult.ResultType.FULL] entity - // results. - // - // For [missing][google.datastore.v1beta3.LookupResponse.missing] entities in `LookupResponse`, this - // is the version of the snapshot that was used to look up the entity, and it - // is always set except for eventually consistent reads. - Version int64 `protobuf:"varint,4,opt,name=version" json:"version,omitempty"` - // A cursor that points to the position after the result entity. - // Set only when the `EntityResult` is part of a `QueryResultBatch` message. - Cursor []byte `protobuf:"bytes,3,opt,name=cursor,proto3" json:"cursor,omitempty"` -} - -func (m *EntityResult) Reset() { *m = EntityResult{} } -func (m *EntityResult) String() string { return proto.CompactTextString(m) } -func (*EntityResult) ProtoMessage() {} -func (*EntityResult) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *EntityResult) GetEntity() *Entity { - if m != nil { - return m.Entity - } - return nil -} - -func (m *EntityResult) GetVersion() int64 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *EntityResult) GetCursor() []byte { - if m != nil { - return m.Cursor - } - return nil -} - -// A query for entities. -type Query struct { - // The projection to return. Defaults to returning all properties. - Projection []*Projection `protobuf:"bytes,2,rep,name=projection" json:"projection,omitempty"` - // The kinds to query (if empty, returns entities of all kinds). - // Currently at most 1 kind may be specified. - Kind []*KindExpression `protobuf:"bytes,3,rep,name=kind" json:"kind,omitempty"` - // The filter to apply. - Filter *Filter `protobuf:"bytes,4,opt,name=filter" json:"filter,omitempty"` - // The order to apply to the query results (if empty, order is unspecified). - Order []*PropertyOrder `protobuf:"bytes,5,rep,name=order" json:"order,omitempty"` - // The properties to make distinct. The query results will contain the first - // result for each distinct combination of values for the given properties - // (if empty, all results are returned). - DistinctOn []*PropertyReference `protobuf:"bytes,6,rep,name=distinct_on,json=distinctOn" json:"distinct_on,omitempty"` - // A starting point for the query results. Query cursors are - // returned in query result batches and - // [can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). - StartCursor []byte `protobuf:"bytes,7,opt,name=start_cursor,json=startCursor,proto3" json:"start_cursor,omitempty"` - // An ending point for the query results. Query cursors are - // returned in query result batches and - // [can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets). - EndCursor []byte `protobuf:"bytes,8,opt,name=end_cursor,json=endCursor,proto3" json:"end_cursor,omitempty"` - // The number of results to skip. Applies before limit, but after all other - // constraints. Optional. Must be >= 0 if specified. - Offset int32 `protobuf:"varint,10,opt,name=offset" json:"offset,omitempty"` - // The maximum number of results to return. Applies after all other - // constraints. Optional. - // Unspecified is interpreted as no limit. - // Must be >= 0 if specified. - Limit *google_protobuf3.Int32Value `protobuf:"bytes,12,opt,name=limit" json:"limit,omitempty"` -} - -func (m *Query) Reset() { *m = Query{} } -func (m *Query) String() string { return proto.CompactTextString(m) } -func (*Query) ProtoMessage() {} -func (*Query) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *Query) GetProjection() []*Projection { - if m != nil { - return m.Projection - } - return nil -} - -func (m *Query) GetKind() []*KindExpression { - if m != nil { - return m.Kind - } - return nil -} - -func (m *Query) GetFilter() *Filter { - if m != nil { - return m.Filter - } - return nil -} - -func (m *Query) GetOrder() []*PropertyOrder { - if m != nil { - return m.Order - } - return nil -} - -func (m *Query) GetDistinctOn() []*PropertyReference { - if m != nil { - return m.DistinctOn - } - return nil -} - -func (m *Query) GetStartCursor() []byte { - if m != nil { - return m.StartCursor - } - return nil -} - -func (m *Query) GetEndCursor() []byte { - if m != nil { - return m.EndCursor - } - return nil -} - -func (m *Query) GetOffset() int32 { - if m != nil { - return m.Offset - } - return 0 -} - -func (m *Query) GetLimit() *google_protobuf3.Int32Value { - if m != nil { - return m.Limit - } - return nil -} - -// A representation of a kind. -type KindExpression struct { - // The name of the kind. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *KindExpression) Reset() { *m = KindExpression{} } -func (m *KindExpression) String() string { return proto.CompactTextString(m) } -func (*KindExpression) ProtoMessage() {} -func (*KindExpression) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *KindExpression) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A reference to a property relative to the kind expressions. -type PropertyReference struct { - // The name of the property. - // If name includes "."s, it may be interpreted as a property name path. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *PropertyReference) Reset() { *m = PropertyReference{} } -func (m *PropertyReference) String() string { return proto.CompactTextString(m) } -func (*PropertyReference) ProtoMessage() {} -func (*PropertyReference) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *PropertyReference) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A representation of a property in a projection. -type Projection struct { - // The property to project. - Property *PropertyReference `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` -} - -func (m *Projection) Reset() { *m = Projection{} } -func (m *Projection) String() string { return proto.CompactTextString(m) } -func (*Projection) ProtoMessage() {} -func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *Projection) GetProperty() *PropertyReference { - if m != nil { - return m.Property - } - return nil -} - -// The desired order for a specific property. -type PropertyOrder struct { - // The property to order by. - Property *PropertyReference `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The direction to order by. Defaults to `ASCENDING`. - Direction PropertyOrder_Direction `protobuf:"varint,2,opt,name=direction,enum=google.datastore.v1beta3.PropertyOrder_Direction" json:"direction,omitempty"` -} - -func (m *PropertyOrder) Reset() { *m = PropertyOrder{} } -func (m *PropertyOrder) String() string { return proto.CompactTextString(m) } -func (*PropertyOrder) ProtoMessage() {} -func (*PropertyOrder) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *PropertyOrder) GetProperty() *PropertyReference { - if m != nil { - return m.Property - } - return nil -} - -func (m *PropertyOrder) GetDirection() PropertyOrder_Direction { - if m != nil { - return m.Direction - } - return PropertyOrder_DIRECTION_UNSPECIFIED -} - -// A holder for any type of filter. -type Filter struct { - // The type of filter. - // - // Types that are valid to be assigned to FilterType: - // *Filter_CompositeFilter - // *Filter_PropertyFilter - FilterType isFilter_FilterType `protobuf_oneof:"filter_type"` -} - -func (m *Filter) Reset() { *m = Filter{} } -func (m *Filter) String() string { return proto.CompactTextString(m) } -func (*Filter) ProtoMessage() {} -func (*Filter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -type isFilter_FilterType interface { - isFilter_FilterType() -} - -type Filter_CompositeFilter struct { - CompositeFilter *CompositeFilter `protobuf:"bytes,1,opt,name=composite_filter,json=compositeFilter,oneof"` -} -type Filter_PropertyFilter struct { - PropertyFilter *PropertyFilter `protobuf:"bytes,2,opt,name=property_filter,json=propertyFilter,oneof"` -} - -func (*Filter_CompositeFilter) isFilter_FilterType() {} -func (*Filter_PropertyFilter) isFilter_FilterType() {} - -func (m *Filter) GetFilterType() isFilter_FilterType { - if m != nil { - return m.FilterType - } - return nil -} - -func (m *Filter) GetCompositeFilter() *CompositeFilter { - if x, ok := m.GetFilterType().(*Filter_CompositeFilter); ok { - return x.CompositeFilter - } - return nil -} - -func (m *Filter) GetPropertyFilter() *PropertyFilter { - if x, ok := m.GetFilterType().(*Filter_PropertyFilter); ok { - return x.PropertyFilter - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Filter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Filter_OneofMarshaler, _Filter_OneofUnmarshaler, _Filter_OneofSizer, []interface{}{ - (*Filter_CompositeFilter)(nil), - (*Filter_PropertyFilter)(nil), - } -} - -func _Filter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Filter) - // filter_type - switch x := m.FilterType.(type) { - case *Filter_CompositeFilter: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CompositeFilter); err != nil { - return err - } - case *Filter_PropertyFilter: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PropertyFilter); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Filter.FilterType has unexpected type %T", x) - } - return nil -} - -func _Filter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Filter) - switch tag { - case 1: // filter_type.composite_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CompositeFilter) - err := b.DecodeMessage(msg) - m.FilterType = &Filter_CompositeFilter{msg} - return true, err - case 2: // filter_type.property_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PropertyFilter) - err := b.DecodeMessage(msg) - m.FilterType = &Filter_PropertyFilter{msg} - return true, err - default: - return false, nil - } -} - -func _Filter_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Filter) - // filter_type - switch x := m.FilterType.(type) { - case *Filter_CompositeFilter: - s := proto.Size(x.CompositeFilter) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Filter_PropertyFilter: - s := proto.Size(x.PropertyFilter) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A filter that merges multiple other filters using the given operator. -type CompositeFilter struct { - // The operator for combining multiple filters. - Op CompositeFilter_Operator `protobuf:"varint,1,opt,name=op,enum=google.datastore.v1beta3.CompositeFilter_Operator" json:"op,omitempty"` - // The list of filters to combine. - // Must contain at least one filter. - Filters []*Filter `protobuf:"bytes,2,rep,name=filters" json:"filters,omitempty"` -} - -func (m *CompositeFilter) Reset() { *m = CompositeFilter{} } -func (m *CompositeFilter) String() string { return proto.CompactTextString(m) } -func (*CompositeFilter) ProtoMessage() {} -func (*CompositeFilter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *CompositeFilter) GetOp() CompositeFilter_Operator { - if m != nil { - return m.Op - } - return CompositeFilter_OPERATOR_UNSPECIFIED -} - -func (m *CompositeFilter) GetFilters() []*Filter { - if m != nil { - return m.Filters - } - return nil -} - -// A filter on a specific property. -type PropertyFilter struct { - // The property to filter by. - Property *PropertyReference `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` - // The operator to filter by. - Op PropertyFilter_Operator `protobuf:"varint,2,opt,name=op,enum=google.datastore.v1beta3.PropertyFilter_Operator" json:"op,omitempty"` - // The value to compare the property to. - Value *Value `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` -} - -func (m *PropertyFilter) Reset() { *m = PropertyFilter{} } -func (m *PropertyFilter) String() string { return proto.CompactTextString(m) } -func (*PropertyFilter) ProtoMessage() {} -func (*PropertyFilter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *PropertyFilter) GetProperty() *PropertyReference { - if m != nil { - return m.Property - } - return nil -} - -func (m *PropertyFilter) GetOp() PropertyFilter_Operator { - if m != nil { - return m.Op - } - return PropertyFilter_OPERATOR_UNSPECIFIED -} - -func (m *PropertyFilter) GetValue() *Value { - if m != nil { - return m.Value - } - return nil -} - -// A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). -type GqlQuery struct { - // A string of the format described - // [here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference). - QueryString string `protobuf:"bytes,1,opt,name=query_string,json=queryString" json:"query_string,omitempty"` - // When false, the query string must not contain any literals and instead must - // bind all values. For example, - // `SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while - // `SELECT * FROM Kind WHERE a = @value` is. - AllowLiterals bool `protobuf:"varint,2,opt,name=allow_literals,json=allowLiterals" json:"allow_literals,omitempty"` - // For each non-reserved named binding site in the query string, there must be - // a named parameter with that name, but not necessarily the inverse. - // - // Key must match regex `[A-Za-z_$][A-Za-z_$0-9]*`, must not match regex - // `__.*__`, and must not be `""`. - NamedBindings map[string]*GqlQueryParameter `protobuf:"bytes,5,rep,name=named_bindings,json=namedBindings" json:"named_bindings,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Numbered binding site @1 references the first numbered parameter, - // effectively using 1-based indexing, rather than the usual 0. - // - // For each binding site numbered i in `query_string`, there must be an i-th - // numbered parameter. The inverse must also be true. - PositionalBindings []*GqlQueryParameter `protobuf:"bytes,4,rep,name=positional_bindings,json=positionalBindings" json:"positional_bindings,omitempty"` -} - -func (m *GqlQuery) Reset() { *m = GqlQuery{} } -func (m *GqlQuery) String() string { return proto.CompactTextString(m) } -func (*GqlQuery) ProtoMessage() {} -func (*GqlQuery) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{9} } - -func (m *GqlQuery) GetQueryString() string { - if m != nil { - return m.QueryString - } - return "" -} - -func (m *GqlQuery) GetAllowLiterals() bool { - if m != nil { - return m.AllowLiterals - } - return false -} - -func (m *GqlQuery) GetNamedBindings() map[string]*GqlQueryParameter { - if m != nil { - return m.NamedBindings - } - return nil -} - -func (m *GqlQuery) GetPositionalBindings() []*GqlQueryParameter { - if m != nil { - return m.PositionalBindings - } - return nil -} - -// A binding parameter for a GQL query. -type GqlQueryParameter struct { - // The type of parameter. - // - // Types that are valid to be assigned to ParameterType: - // *GqlQueryParameter_Value - // *GqlQueryParameter_Cursor - ParameterType isGqlQueryParameter_ParameterType `protobuf_oneof:"parameter_type"` -} - -func (m *GqlQueryParameter) Reset() { *m = GqlQueryParameter{} } -func (m *GqlQueryParameter) String() string { return proto.CompactTextString(m) } -func (*GqlQueryParameter) ProtoMessage() {} -func (*GqlQueryParameter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{10} } - -type isGqlQueryParameter_ParameterType interface { - isGqlQueryParameter_ParameterType() -} - -type GqlQueryParameter_Value struct { - Value *Value `protobuf:"bytes,2,opt,name=value,oneof"` -} -type GqlQueryParameter_Cursor struct { - Cursor []byte `protobuf:"bytes,3,opt,name=cursor,proto3,oneof"` -} - -func (*GqlQueryParameter_Value) isGqlQueryParameter_ParameterType() {} -func (*GqlQueryParameter_Cursor) isGqlQueryParameter_ParameterType() {} - -func (m *GqlQueryParameter) GetParameterType() isGqlQueryParameter_ParameterType { - if m != nil { - return m.ParameterType - } - return nil -} - -func (m *GqlQueryParameter) GetValue() *Value { - if x, ok := m.GetParameterType().(*GqlQueryParameter_Value); ok { - return x.Value - } - return nil -} - -func (m *GqlQueryParameter) GetCursor() []byte { - if x, ok := m.GetParameterType().(*GqlQueryParameter_Cursor); ok { - return x.Cursor - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*GqlQueryParameter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _GqlQueryParameter_OneofMarshaler, _GqlQueryParameter_OneofUnmarshaler, _GqlQueryParameter_OneofSizer, []interface{}{ - (*GqlQueryParameter_Value)(nil), - (*GqlQueryParameter_Cursor)(nil), - } -} - -func _GqlQueryParameter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*GqlQueryParameter) - // parameter_type - switch x := m.ParameterType.(type) { - case *GqlQueryParameter_Value: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Value); err != nil { - return err - } - case *GqlQueryParameter_Cursor: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Cursor) - case nil: - default: - return fmt.Errorf("GqlQueryParameter.ParameterType has unexpected type %T", x) - } - return nil -} - -func _GqlQueryParameter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*GqlQueryParameter) - switch tag { - case 2: // parameter_type.value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Value) - err := b.DecodeMessage(msg) - m.ParameterType = &GqlQueryParameter_Value{msg} - return true, err - case 3: // parameter_type.cursor - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ParameterType = &GqlQueryParameter_Cursor{x} - return true, err - default: - return false, nil - } -} - -func _GqlQueryParameter_OneofSizer(msg proto.Message) (n int) { - m := msg.(*GqlQueryParameter) - // parameter_type - switch x := m.ParameterType.(type) { - case *GqlQueryParameter_Value: - s := proto.Size(x.Value) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *GqlQueryParameter_Cursor: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Cursor))) - n += len(x.Cursor) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A batch of results produced by a query. -type QueryResultBatch struct { - // The number of results skipped, typically because of an offset. - SkippedResults int32 `protobuf:"varint,6,opt,name=skipped_results,json=skippedResults" json:"skipped_results,omitempty"` - // A cursor that points to the position after the last skipped result. - // Will be set when `skipped_results` != 0. - SkippedCursor []byte `protobuf:"bytes,3,opt,name=skipped_cursor,json=skippedCursor,proto3" json:"skipped_cursor,omitempty"` - // The result type for every entity in `entity_results`. - EntityResultType EntityResult_ResultType `protobuf:"varint,1,opt,name=entity_result_type,json=entityResultType,enum=google.datastore.v1beta3.EntityResult_ResultType" json:"entity_result_type,omitempty"` - // The results for this batch. - EntityResults []*EntityResult `protobuf:"bytes,2,rep,name=entity_results,json=entityResults" json:"entity_results,omitempty"` - // A cursor that points to the position after the last result in the batch. - EndCursor []byte `protobuf:"bytes,4,opt,name=end_cursor,json=endCursor,proto3" json:"end_cursor,omitempty"` - // The state of the query after the current batch. - MoreResults QueryResultBatch_MoreResultsType `protobuf:"varint,5,opt,name=more_results,json=moreResults,enum=google.datastore.v1beta3.QueryResultBatch_MoreResultsType" json:"more_results,omitempty"` - // The version number of the snapshot this batch was returned from. - // This applies to the range of results from the query's `start_cursor` (or - // the beginning of the query if no cursor was given) to this batch's - // `end_cursor` (not the query's `end_cursor`). - // - // In a single transaction, subsequent query result batches for the same query - // can have a greater snapshot version number. Each batch's snapshot version - // is valid for all preceding batches. - // The value will be zero for eventually consistent queries. - SnapshotVersion int64 `protobuf:"varint,7,opt,name=snapshot_version,json=snapshotVersion" json:"snapshot_version,omitempty"` -} - -func (m *QueryResultBatch) Reset() { *m = QueryResultBatch{} } -func (m *QueryResultBatch) String() string { return proto.CompactTextString(m) } -func (*QueryResultBatch) ProtoMessage() {} -func (*QueryResultBatch) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{11} } - -func (m *QueryResultBatch) GetSkippedResults() int32 { - if m != nil { - return m.SkippedResults - } - return 0 -} - -func (m *QueryResultBatch) GetSkippedCursor() []byte { - if m != nil { - return m.SkippedCursor - } - return nil -} - -func (m *QueryResultBatch) GetEntityResultType() EntityResult_ResultType { - if m != nil { - return m.EntityResultType - } - return EntityResult_RESULT_TYPE_UNSPECIFIED -} - -func (m *QueryResultBatch) GetEntityResults() []*EntityResult { - if m != nil { - return m.EntityResults - } - return nil -} - -func (m *QueryResultBatch) GetEndCursor() []byte { - if m != nil { - return m.EndCursor - } - return nil -} - -func (m *QueryResultBatch) GetMoreResults() QueryResultBatch_MoreResultsType { - if m != nil { - return m.MoreResults - } - return QueryResultBatch_MORE_RESULTS_TYPE_UNSPECIFIED -} - -func (m *QueryResultBatch) GetSnapshotVersion() int64 { - if m != nil { - return m.SnapshotVersion - } - return 0 -} - -func init() { - proto.RegisterType((*EntityResult)(nil), "google.datastore.v1beta3.EntityResult") - proto.RegisterType((*Query)(nil), "google.datastore.v1beta3.Query") - proto.RegisterType((*KindExpression)(nil), "google.datastore.v1beta3.KindExpression") - proto.RegisterType((*PropertyReference)(nil), "google.datastore.v1beta3.PropertyReference") - proto.RegisterType((*Projection)(nil), "google.datastore.v1beta3.Projection") - proto.RegisterType((*PropertyOrder)(nil), "google.datastore.v1beta3.PropertyOrder") - proto.RegisterType((*Filter)(nil), "google.datastore.v1beta3.Filter") - proto.RegisterType((*CompositeFilter)(nil), "google.datastore.v1beta3.CompositeFilter") - proto.RegisterType((*PropertyFilter)(nil), "google.datastore.v1beta3.PropertyFilter") - proto.RegisterType((*GqlQuery)(nil), "google.datastore.v1beta3.GqlQuery") - proto.RegisterType((*GqlQueryParameter)(nil), "google.datastore.v1beta3.GqlQueryParameter") - proto.RegisterType((*QueryResultBatch)(nil), "google.datastore.v1beta3.QueryResultBatch") - proto.RegisterEnum("google.datastore.v1beta3.EntityResult_ResultType", EntityResult_ResultType_name, EntityResult_ResultType_value) - proto.RegisterEnum("google.datastore.v1beta3.PropertyOrder_Direction", PropertyOrder_Direction_name, PropertyOrder_Direction_value) - proto.RegisterEnum("google.datastore.v1beta3.CompositeFilter_Operator", CompositeFilter_Operator_name, CompositeFilter_Operator_value) - proto.RegisterEnum("google.datastore.v1beta3.PropertyFilter_Operator", PropertyFilter_Operator_name, PropertyFilter_Operator_value) - proto.RegisterEnum("google.datastore.v1beta3.QueryResultBatch_MoreResultsType", QueryResultBatch_MoreResultsType_name, QueryResultBatch_MoreResultsType_value) -} - -func init() { proto.RegisterFile("google/datastore/v1beta3/query.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 1323 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcb, 0x6e, 0xdb, 0x46, - 0x14, 0x35, 0xa9, 0x87, 0xa5, 0xab, 0x17, 0x33, 0x69, 0x53, 0xc6, 0x79, 0xd4, 0x21, 0x92, 0x46, - 0x41, 0x51, 0x09, 0x56, 0x10, 0x34, 0x48, 0xdb, 0x85, 0x1e, 0xb4, 0xad, 0x46, 0x16, 0x95, 0x91, - 0x6c, 0x20, 0x85, 0x0b, 0x82, 0x96, 0xc6, 0x0a, 0x1b, 0x8a, 0x64, 0xc8, 0x71, 0x12, 0x7f, 0x48, - 0x81, 0x7e, 0x43, 0x77, 0xfd, 0x83, 0x2e, 0xba, 0x2a, 0xd0, 0x6d, 0xb7, 0xfd, 0x80, 0x6e, 0xfa, - 0x07, 0x2d, 0x38, 0x33, 0xd4, 0xcb, 0x51, 0xe4, 0x02, 0xd9, 0x69, 0xee, 0x9c, 0x73, 0xee, 0xcc, - 0xe1, 0x9d, 0x99, 0x2b, 0xb8, 0x3b, 0xf6, 0xbc, 0xb1, 0x43, 0xaa, 0x23, 0x8b, 0x5a, 0x21, 0xf5, - 0x02, 0x52, 0x7d, 0xbd, 0x73, 0x42, 0xa8, 0xf5, 0xb0, 0xfa, 0xea, 0x8c, 0x04, 0xe7, 0x15, 0x3f, - 0xf0, 0xa8, 0x87, 0x54, 0x8e, 0xaa, 0x4c, 0x51, 0x15, 0x81, 0xda, 0xba, 0x29, 0xf8, 0x96, 0x6f, - 0x57, 0x2d, 0xd7, 0xf5, 0xa8, 0x45, 0x6d, 0xcf, 0x0d, 0x39, 0x6f, 0xeb, 0xde, 0x4a, 0x75, 0xe2, - 0x52, 0x9b, 0x0a, 0xf9, 0xad, 0xdb, 0x02, 0xc6, 0x46, 0x27, 0x67, 0xa7, 0xd5, 0x37, 0x81, 0xe5, - 0xfb, 0x24, 0x88, 0x65, 0x44, 0xfa, 0x2a, 0x3d, 0xf7, 0x49, 0xd5, 0xb1, 0xa8, 0xe3, 0x8e, 0xf9, - 0x8c, 0xf6, 0x87, 0x04, 0x79, 0x9d, 0x49, 0x61, 0x12, 0x9e, 0x39, 0x14, 0x3d, 0x86, 0x34, 0x97, - 0x56, 0xa5, 0x6d, 0xa9, 0x9c, 0xab, 0x6d, 0x57, 0x56, 0x2d, 0xbd, 0x22, 0x78, 0x02, 0x8f, 0x54, - 0xd8, 0x7c, 0x4d, 0x82, 0xd0, 0xf6, 0x5c, 0x35, 0xb9, 0x2d, 0x95, 0x13, 0x38, 0x1e, 0xa2, 0x6b, - 0x90, 0x1e, 0x9e, 0x05, 0xa1, 0x17, 0xa8, 0x89, 0x6d, 0xa9, 0x9c, 0xc7, 0x62, 0xa4, 0x3d, 0x03, - 0xe0, 0x59, 0x07, 0xe7, 0x3e, 0x41, 0x37, 0xe0, 0x13, 0xac, 0xf7, 0x0f, 0x3b, 0x03, 0x73, 0xf0, - 0xbc, 0xa7, 0x9b, 0x87, 0xdd, 0x7e, 0x4f, 0x6f, 0xb6, 0x77, 0xdb, 0x7a, 0x4b, 0xd9, 0x40, 0x19, - 0x48, 0xee, 0x1e, 0x76, 0x3a, 0x8a, 0x84, 0x8a, 0x00, 0x3d, 0x6c, 0x7c, 0xab, 0x37, 0x07, 0x6d, - 0xa3, 0xab, 0xc8, 0x28, 0x0f, 0x99, 0xa7, 0xfa, 0x73, 0xd3, 0xe8, 0x76, 0x9e, 0x2b, 0x09, 0xed, - 0xaf, 0x04, 0xa4, 0x9e, 0x45, 0xc6, 0xa3, 0x16, 0x80, 0x1f, 0x78, 0x3f, 0x90, 0x61, 0xe4, 0xa7, - 0x2a, 0x6f, 0x27, 0xca, 0xb9, 0xda, 0xdd, 0xd5, 0x9b, 0xe9, 0x4d, 0xb1, 0x78, 0x8e, 0x87, 0xbe, - 0x86, 0xe4, 0x4b, 0xdb, 0x1d, 0xa9, 0x09, 0xc6, 0x2f, 0xaf, 0xe6, 0x3f, 0xb5, 0xdd, 0x91, 0xfe, - 0xd6, 0x0f, 0x48, 0x18, 0x6d, 0x19, 0x33, 0x56, 0x64, 0xe6, 0xa9, 0xed, 0x50, 0x12, 0x30, 0x47, - 0xde, 0x6b, 0xe6, 0x2e, 0xc3, 0x61, 0x81, 0x47, 0xdf, 0x40, 0xca, 0x0b, 0x46, 0x24, 0x50, 0x53, - 0x2c, 0xf1, 0xfd, 0xf7, 0x2e, 0xdc, 0x27, 0x01, 0x3d, 0x37, 0x22, 0x38, 0xe6, 0x2c, 0xd4, 0x81, - 0xdc, 0xc8, 0x0e, 0xa9, 0xed, 0x0e, 0xa9, 0xe9, 0xb9, 0x6a, 0x9a, 0x89, 0x7c, 0xbe, 0x5e, 0x04, - 0x93, 0x53, 0x12, 0x10, 0x77, 0x48, 0x30, 0xc4, 0x7c, 0xc3, 0x45, 0x77, 0x20, 0x1f, 0x52, 0x2b, - 0xa0, 0xa6, 0xf8, 0x8a, 0x9b, 0xec, 0x2b, 0xe6, 0x58, 0xac, 0xc9, 0x42, 0xe8, 0x16, 0x00, 0x71, - 0x47, 0x31, 0x20, 0xc3, 0x00, 0x59, 0xe2, 0x8e, 0xc4, 0xf4, 0x35, 0x48, 0x7b, 0xa7, 0xa7, 0x21, - 0xa1, 0x2a, 0x6c, 0x4b, 0xe5, 0x14, 0x16, 0x23, 0xb4, 0x03, 0x29, 0xc7, 0x9e, 0xd8, 0x54, 0xcd, - 0x33, 0x7f, 0x6e, 0xc4, 0x2b, 0x8c, 0x0b, 0xb9, 0xd2, 0x76, 0xe9, 0xc3, 0xda, 0x91, 0xe5, 0x9c, - 0x11, 0xcc, 0x91, 0xda, 0x5d, 0x28, 0x2e, 0x7a, 0x8d, 0x10, 0x24, 0x5d, 0x6b, 0x42, 0x58, 0xc1, - 0x66, 0x31, 0xfb, 0xad, 0xdd, 0x87, 0x2b, 0x17, 0xf6, 0x34, 0x05, 0xca, 0x73, 0xc0, 0x43, 0x80, - 0xd9, 0xa7, 0x47, 0x7b, 0x90, 0xf1, 0x05, 0x4d, 0xd4, 0xff, 0xff, 0x32, 0x6d, 0x4a, 0xd6, 0xfe, - 0x91, 0xa0, 0xb0, 0xf0, 0x65, 0x3e, 0x98, 0x34, 0x32, 0x20, 0x3b, 0xb2, 0x83, 0x69, 0x5d, 0x4b, - 0xe5, 0x62, 0x6d, 0xe7, 0x92, 0xe5, 0x51, 0x69, 0xc5, 0x44, 0x3c, 0xd3, 0xd0, 0x74, 0xc8, 0x4e, - 0xe3, 0xe8, 0x3a, 0x7c, 0xdc, 0x6a, 0x63, 0x7e, 0xba, 0x96, 0xce, 0x60, 0x01, 0xb2, 0xf5, 0x7e, - 0x53, 0xef, 0xb6, 0xda, 0xdd, 0x3d, 0x7e, 0x10, 0x5b, 0xfa, 0x74, 0x2c, 0x6b, 0xbf, 0x49, 0x90, - 0xe6, 0x55, 0x8c, 0x8e, 0x40, 0x19, 0x7a, 0x13, 0xdf, 0x0b, 0x6d, 0x4a, 0x4c, 0x71, 0x02, 0xf8, - 0x9e, 0x1f, 0xac, 0x5e, 0x69, 0x33, 0x66, 0x70, 0x91, 0xfd, 0x0d, 0x5c, 0x1a, 0x2e, 0x86, 0x50, - 0x1f, 0x4a, 0xb1, 0x0d, 0xb1, 0xac, 0xcc, 0x64, 0xcb, 0xeb, 0x0d, 0x98, 0xaa, 0x16, 0xfd, 0x85, - 0x48, 0xa3, 0x00, 0x39, 0xae, 0x65, 0x46, 0xd7, 0xa3, 0xf6, 0xab, 0x04, 0xa5, 0xa5, 0xa5, 0xa0, - 0x06, 0xc8, 0x9e, 0xcf, 0x76, 0x50, 0xac, 0xd5, 0x2e, 0xbd, 0x83, 0x8a, 0xe1, 0x93, 0xc0, 0xa2, - 0x5e, 0x80, 0x65, 0xcf, 0x47, 0x4f, 0x60, 0x93, 0xa7, 0x09, 0xc5, 0x65, 0xb4, 0xfe, 0x32, 0x88, - 0x09, 0xda, 0x17, 0x90, 0x89, 0xb5, 0x90, 0x0a, 0x1f, 0x19, 0x3d, 0x1d, 0xd7, 0x07, 0x06, 0x5e, - 0xfa, 0x3e, 0x9b, 0x90, 0xa8, 0x77, 0x5b, 0x8a, 0xa4, 0xfd, 0x2d, 0x43, 0x71, 0x71, 0xdb, 0x1f, - 0xae, 0xfa, 0xea, 0xcc, 0x8a, 0x4b, 0x97, 0xdd, 0xbb, 0x9c, 0x78, 0x04, 0xa9, 0xd7, 0xd1, 0x89, - 0x66, 0xaf, 0x41, 0xae, 0xf6, 0xe9, 0x6a, 0x15, 0x71, 0xf0, 0x19, 0x5a, 0xfb, 0x51, 0xba, 0x94, - 0x0b, 0x05, 0xc8, 0x76, 0xf4, 0x7e, 0xdf, 0x1c, 0xec, 0xd7, 0xbb, 0x8a, 0x84, 0xae, 0x01, 0x9a, - 0x0e, 0x4d, 0x03, 0x9b, 0xfa, 0xb3, 0xc3, 0x7a, 0x47, 0x91, 0x91, 0x02, 0xf9, 0x3d, 0xac, 0xd7, - 0x07, 0x3a, 0xe6, 0xc8, 0x44, 0x54, 0xf9, 0xf3, 0x91, 0x19, 0x38, 0x89, 0xb2, 0x90, 0xe2, 0x3f, - 0x53, 0x11, 0x6f, 0xbf, 0xde, 0x37, 0xeb, 0xdd, 0xa6, 0xde, 0x1f, 0x18, 0x58, 0xc9, 0x69, 0xff, - 0xca, 0x90, 0xd9, 0x7b, 0xe5, 0xf0, 0x57, 0xe7, 0x0e, 0xe4, 0xd9, 0xbb, 0x6f, 0x86, 0x34, 0xb0, - 0xdd, 0xb1, 0xb8, 0x93, 0x72, 0x2c, 0xd6, 0x67, 0x21, 0x74, 0x0f, 0x8a, 0x96, 0xe3, 0x78, 0x6f, - 0x4c, 0xc7, 0xa6, 0x24, 0xb0, 0x9c, 0x90, 0xb9, 0x99, 0xc1, 0x05, 0x16, 0xed, 0x88, 0x20, 0x3a, - 0x86, 0x62, 0x74, 0x41, 0x8d, 0xcc, 0x13, 0xdb, 0x1d, 0xd9, 0xee, 0x38, 0x14, 0x4f, 0xc1, 0xa3, - 0xd5, 0x76, 0xc5, 0xab, 0xa8, 0x74, 0x23, 0x62, 0x43, 0xf0, 0x74, 0x97, 0x06, 0xe7, 0xb8, 0xe0, - 0xce, 0xc7, 0xd0, 0x31, 0x5c, 0x65, 0xa5, 0x6a, 0x7b, 0xae, 0xe5, 0xcc, 0x52, 0x24, 0xd7, 0x3d, - 0x14, 0x71, 0x8a, 0x9e, 0x15, 0x58, 0x13, 0x12, 0x15, 0x29, 0x9a, 0xe9, 0xc4, 0xea, 0x5b, 0x13, - 0x40, 0x17, 0x97, 0x80, 0x14, 0x48, 0xbc, 0x24, 0xe7, 0xc2, 0x92, 0xe8, 0x27, 0xaa, 0xc7, 0x95, - 0x20, 0xaf, 0x2b, 0xc9, 0x8b, 0x79, 0x39, 0xf3, 0x89, 0xfc, 0x58, 0xd2, 0xde, 0xc2, 0x95, 0x0b, - 0xf3, 0xe8, 0xcb, 0x45, 0xed, 0x75, 0x55, 0xb6, 0xbf, 0x21, 0x14, 0x91, 0xba, 0xd8, 0xad, 0xec, - 0x6f, 0xc4, 0xfd, 0x4a, 0x43, 0x81, 0xa2, 0x1f, 0xeb, 0xf3, 0xcb, 0xe2, 0xcf, 0x24, 0x28, 0x2c, - 0x2f, 0xef, 0x63, 0x1a, 0x16, 0x1d, 0xbe, 0x40, 0xf7, 0xa1, 0x14, 0xbe, 0xb4, 0x7d, 0x9f, 0x8c, - 0xcc, 0x80, 0x85, 0x43, 0x35, 0xcd, 0x5e, 0xbd, 0xa2, 0x08, 0x73, 0x70, 0x18, 0x55, 0x42, 0x0c, - 0x5c, 0xe8, 0x8f, 0x0a, 0x22, 0x2a, 0x1e, 0x4f, 0x13, 0x10, 0x6f, 0xb1, 0x84, 0x1c, 0x4b, 0x2d, - 0x6e, 0xa3, 0x9d, 0xb5, 0xed, 0x19, 0xa3, 0x54, 0x66, 0x7d, 0x16, 0x56, 0xc8, 0xdc, 0x04, 0xeb, - 0xbc, 0x0e, 0xa0, 0xb8, 0x90, 0x20, 0xbe, 0xa1, 0x3e, 0xbb, 0x9c, 0x38, 0x2e, 0xcc, 0x2b, 0x86, - 0x4b, 0xbd, 0x40, 0x72, 0xb9, 0x17, 0xf8, 0x1e, 0xf2, 0x13, 0x2f, 0x20, 0xd3, 0x5c, 0x29, 0xb6, - 0x91, 0x27, 0xab, 0x73, 0x2d, 0x1b, 0x5c, 0x39, 0xf0, 0x02, 0x22, 0x92, 0xb1, 0x1d, 0xe5, 0x26, - 0xb3, 0x00, 0x7a, 0x00, 0x4a, 0xe8, 0x5a, 0x7e, 0xf8, 0xc2, 0xa3, 0x66, 0xdc, 0x8f, 0x6e, 0xb2, - 0x7e, 0xb4, 0x14, 0xc7, 0x8f, 0x78, 0x58, 0xfb, 0x49, 0x82, 0xd2, 0x92, 0x16, 0xba, 0x03, 0xb7, - 0x0e, 0x0c, 0xac, 0x9b, 0xbc, 0x15, 0xed, 0xbf, 0xab, 0x17, 0x55, 0x20, 0xdf, 0x35, 0x06, 0xe6, - 0x6e, 0xbb, 0xdb, 0xee, 0xef, 0xeb, 0x2d, 0x45, 0x42, 0x37, 0x41, 0x5d, 0x20, 0xd5, 0x77, 0xa3, - 0x5b, 0xa4, 0xd3, 0x3e, 0x68, 0x0f, 0x14, 0x19, 0xdd, 0x82, 0xeb, 0xef, 0x98, 0x6d, 0x1e, 0xe2, - 0xbe, 0x81, 0x95, 0x24, 0xba, 0x0a, 0xa5, 0xae, 0x61, 0xce, 0x23, 0x94, 0x44, 0xe3, 0x17, 0x09, - 0x6e, 0x0e, 0xbd, 0xc9, 0x4a, 0x53, 0x1a, 0xc0, 0xcb, 0x3d, 0xea, 0x93, 0x7a, 0xd2, 0x77, 0x75, - 0x81, 0x1b, 0x7b, 0x8e, 0xe5, 0x8e, 0x2b, 0x5e, 0x30, 0xae, 0x8e, 0x89, 0xcb, 0xba, 0xa8, 0x2a, - 0x9f, 0xb2, 0x7c, 0x3b, 0xbc, 0xf8, 0x37, 0xe2, 0xab, 0x69, 0xe4, 0x67, 0xf9, 0xf6, 0x1e, 0xd7, - 0x68, 0x3a, 0xde, 0xd9, 0xa8, 0xd2, 0x9a, 0x66, 0x3c, 0xda, 0x69, 0x44, 0xd0, 0xdf, 0x63, 0xc0, - 0x31, 0x03, 0x1c, 0x4f, 0x01, 0xc7, 0x47, 0x5c, 0xeb, 0x24, 0xcd, 0xf2, 0x3d, 0xfc, 0x2f, 0x00, - 0x00, 0xff, 0xff, 0x61, 0xdf, 0x90, 0xd9, 0x13, 0x0d, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/build_events.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/build_events.pb.go deleted file mode 100644 index dc5d7a50..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/build_events.pb.go +++ /dev/null @@ -1,834 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/build/v1/build_events.proto - -/* -Package build is a generated protocol buffer package. - -It is generated from these files: - google/devtools/build/v1/build_events.proto - google/devtools/build/v1/build_status.proto - google/devtools/build/v1/publish_build_event.proto - -It has these top-level messages: - BuildEvent - StreamId - BuildStatus - PublishLifecycleEventRequest - PublishBuildToolEventStreamResponse - OrderedBuildEvent - PublishBuildToolEventStreamRequest -*/ -package build - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" -import google_protobuf3 "github.com/golang/protobuf/ptypes/wrappers" -import _ "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The type of console output stream. -type ConsoleOutputStream int32 - -const ( - // Unspecified or unknown. - ConsoleOutputStream_UNKNOWN ConsoleOutputStream = 0 - // Normal output stream. - ConsoleOutputStream_STDOUT ConsoleOutputStream = 1 - // Error output stream. - ConsoleOutputStream_STDERR ConsoleOutputStream = 2 -) - -var ConsoleOutputStream_name = map[int32]string{ - 0: "UNKNOWN", - 1: "STDOUT", - 2: "STDERR", -} -var ConsoleOutputStream_value = map[string]int32{ - "UNKNOWN": 0, - "STDOUT": 1, - "STDERR": 2, -} - -func (x ConsoleOutputStream) String() string { - return proto.EnumName(ConsoleOutputStream_name, int32(x)) -} -func (ConsoleOutputStream) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// How did the event stream finish. -type BuildEvent_BuildComponentStreamFinished_FinishType int32 - -const ( - // Unknown or unspecified; callers should never set this value. - BuildEvent_BuildComponentStreamFinished_FINISH_TYPE_UNSPECIFIED BuildEvent_BuildComponentStreamFinished_FinishType = 0 - // Set by the event publisher to indicate a build event stream is - // finished. - BuildEvent_BuildComponentStreamFinished_FINISHED BuildEvent_BuildComponentStreamFinished_FinishType = 1 - // Set by the WatchBuild RPC server when the publisher of a build event - // stream stops publishing events without publishing a - // BuildComponentStreamFinished event whose type equals FINISHED. - BuildEvent_BuildComponentStreamFinished_EXPIRED BuildEvent_BuildComponentStreamFinished_FinishType = 2 -) - -var BuildEvent_BuildComponentStreamFinished_FinishType_name = map[int32]string{ - 0: "FINISH_TYPE_UNSPECIFIED", - 1: "FINISHED", - 2: "EXPIRED", -} -var BuildEvent_BuildComponentStreamFinished_FinishType_value = map[string]int32{ - "FINISH_TYPE_UNSPECIFIED": 0, - "FINISHED": 1, - "EXPIRED": 2, -} - -func (x BuildEvent_BuildComponentStreamFinished_FinishType) String() string { - return proto.EnumName(BuildEvent_BuildComponentStreamFinished_FinishType_name, int32(x)) -} -func (BuildEvent_BuildComponentStreamFinished_FinishType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 5, 0} -} - -// Which build component generates this event stream. Each build component -// may generate one event stream. -type StreamId_BuildComponent int32 - -const ( - // Unknown or unspecified; callers should never set this value. - StreamId_UNKNOWN_COMPONENT StreamId_BuildComponent = 0 - // A component that coordinates builds. - StreamId_CONTROLLER StreamId_BuildComponent = 1 - // A component that runs executables needed to complete a build. - StreamId_WORKER StreamId_BuildComponent = 2 - // A component that builds something. - StreamId_TOOL StreamId_BuildComponent = 3 -) - -var StreamId_BuildComponent_name = map[int32]string{ - 0: "UNKNOWN_COMPONENT", - 1: "CONTROLLER", - 2: "WORKER", - 3: "TOOL", -} -var StreamId_BuildComponent_value = map[string]int32{ - "UNKNOWN_COMPONENT": 0, - "CONTROLLER": 1, - "WORKER": 2, - "TOOL": 3, -} - -func (x StreamId_BuildComponent) String() string { - return proto.EnumName(StreamId_BuildComponent_name, int32(x)) -} -func (StreamId_BuildComponent) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// An event representing some state change that occured in the build. This -// message does not include field for uniquely identifying an event. -type BuildEvent struct { - // The timestamp of this event. - EventTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=event_time,json=eventTime" json:"event_time,omitempty"` - // ////////////////////////////////////////////////////////////////////////// - // Events that indicate a state change of a build request in the build - // queue. - // - // Types that are valid to be assigned to Event: - // *BuildEvent_InvocationAttemptStarted_ - // *BuildEvent_InvocationAttemptFinished_ - // *BuildEvent_BuildEnqueued_ - // *BuildEvent_BuildFinished_ - // *BuildEvent_ConsoleOutput_ - // *BuildEvent_ComponentStreamFinished - // *BuildEvent_BazelEvent - // *BuildEvent_BuildExecutionEvent - // *BuildEvent_SourceFetchEvent - Event isBuildEvent_Event `protobuf_oneof:"event"` -} - -func (m *BuildEvent) Reset() { *m = BuildEvent{} } -func (m *BuildEvent) String() string { return proto.CompactTextString(m) } -func (*BuildEvent) ProtoMessage() {} -func (*BuildEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isBuildEvent_Event interface { - isBuildEvent_Event() -} - -type BuildEvent_InvocationAttemptStarted_ struct { - InvocationAttemptStarted *BuildEvent_InvocationAttemptStarted `protobuf:"bytes,51,opt,name=invocation_attempt_started,json=invocationAttemptStarted,oneof"` -} -type BuildEvent_InvocationAttemptFinished_ struct { - InvocationAttemptFinished *BuildEvent_InvocationAttemptFinished `protobuf:"bytes,52,opt,name=invocation_attempt_finished,json=invocationAttemptFinished,oneof"` -} -type BuildEvent_BuildEnqueued_ struct { - BuildEnqueued *BuildEvent_BuildEnqueued `protobuf:"bytes,53,opt,name=build_enqueued,json=buildEnqueued,oneof"` -} -type BuildEvent_BuildFinished_ struct { - BuildFinished *BuildEvent_BuildFinished `protobuf:"bytes,55,opt,name=build_finished,json=buildFinished,oneof"` -} -type BuildEvent_ConsoleOutput_ struct { - ConsoleOutput *BuildEvent_ConsoleOutput `protobuf:"bytes,56,opt,name=console_output,json=consoleOutput,oneof"` -} -type BuildEvent_ComponentStreamFinished struct { - ComponentStreamFinished *BuildEvent_BuildComponentStreamFinished `protobuf:"bytes,59,opt,name=component_stream_finished,json=componentStreamFinished,oneof"` -} -type BuildEvent_BazelEvent struct { - BazelEvent *google_protobuf1.Any `protobuf:"bytes,60,opt,name=bazel_event,json=bazelEvent,oneof"` -} -type BuildEvent_BuildExecutionEvent struct { - BuildExecutionEvent *google_protobuf1.Any `protobuf:"bytes,61,opt,name=build_execution_event,json=buildExecutionEvent,oneof"` -} -type BuildEvent_SourceFetchEvent struct { - SourceFetchEvent *google_protobuf1.Any `protobuf:"bytes,62,opt,name=source_fetch_event,json=sourceFetchEvent,oneof"` -} - -func (*BuildEvent_InvocationAttemptStarted_) isBuildEvent_Event() {} -func (*BuildEvent_InvocationAttemptFinished_) isBuildEvent_Event() {} -func (*BuildEvent_BuildEnqueued_) isBuildEvent_Event() {} -func (*BuildEvent_BuildFinished_) isBuildEvent_Event() {} -func (*BuildEvent_ConsoleOutput_) isBuildEvent_Event() {} -func (*BuildEvent_ComponentStreamFinished) isBuildEvent_Event() {} -func (*BuildEvent_BazelEvent) isBuildEvent_Event() {} -func (*BuildEvent_BuildExecutionEvent) isBuildEvent_Event() {} -func (*BuildEvent_SourceFetchEvent) isBuildEvent_Event() {} - -func (m *BuildEvent) GetEvent() isBuildEvent_Event { - if m != nil { - return m.Event - } - return nil -} - -func (m *BuildEvent) GetEventTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EventTime - } - return nil -} - -func (m *BuildEvent) GetInvocationAttemptStarted() *BuildEvent_InvocationAttemptStarted { - if x, ok := m.GetEvent().(*BuildEvent_InvocationAttemptStarted_); ok { - return x.InvocationAttemptStarted - } - return nil -} - -func (m *BuildEvent) GetInvocationAttemptFinished() *BuildEvent_InvocationAttemptFinished { - if x, ok := m.GetEvent().(*BuildEvent_InvocationAttemptFinished_); ok { - return x.InvocationAttemptFinished - } - return nil -} - -func (m *BuildEvent) GetBuildEnqueued() *BuildEvent_BuildEnqueued { - if x, ok := m.GetEvent().(*BuildEvent_BuildEnqueued_); ok { - return x.BuildEnqueued - } - return nil -} - -func (m *BuildEvent) GetBuildFinished() *BuildEvent_BuildFinished { - if x, ok := m.GetEvent().(*BuildEvent_BuildFinished_); ok { - return x.BuildFinished - } - return nil -} - -func (m *BuildEvent) GetConsoleOutput() *BuildEvent_ConsoleOutput { - if x, ok := m.GetEvent().(*BuildEvent_ConsoleOutput_); ok { - return x.ConsoleOutput - } - return nil -} - -func (m *BuildEvent) GetComponentStreamFinished() *BuildEvent_BuildComponentStreamFinished { - if x, ok := m.GetEvent().(*BuildEvent_ComponentStreamFinished); ok { - return x.ComponentStreamFinished - } - return nil -} - -func (m *BuildEvent) GetBazelEvent() *google_protobuf1.Any { - if x, ok := m.GetEvent().(*BuildEvent_BazelEvent); ok { - return x.BazelEvent - } - return nil -} - -func (m *BuildEvent) GetBuildExecutionEvent() *google_protobuf1.Any { - if x, ok := m.GetEvent().(*BuildEvent_BuildExecutionEvent); ok { - return x.BuildExecutionEvent - } - return nil -} - -func (m *BuildEvent) GetSourceFetchEvent() *google_protobuf1.Any { - if x, ok := m.GetEvent().(*BuildEvent_SourceFetchEvent); ok { - return x.SourceFetchEvent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*BuildEvent) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _BuildEvent_OneofMarshaler, _BuildEvent_OneofUnmarshaler, _BuildEvent_OneofSizer, []interface{}{ - (*BuildEvent_InvocationAttemptStarted_)(nil), - (*BuildEvent_InvocationAttemptFinished_)(nil), - (*BuildEvent_BuildEnqueued_)(nil), - (*BuildEvent_BuildFinished_)(nil), - (*BuildEvent_ConsoleOutput_)(nil), - (*BuildEvent_ComponentStreamFinished)(nil), - (*BuildEvent_BazelEvent)(nil), - (*BuildEvent_BuildExecutionEvent)(nil), - (*BuildEvent_SourceFetchEvent)(nil), - } -} - -func _BuildEvent_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*BuildEvent) - // event - switch x := m.Event.(type) { - case *BuildEvent_InvocationAttemptStarted_: - b.EncodeVarint(51<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InvocationAttemptStarted); err != nil { - return err - } - case *BuildEvent_InvocationAttemptFinished_: - b.EncodeVarint(52<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InvocationAttemptFinished); err != nil { - return err - } - case *BuildEvent_BuildEnqueued_: - b.EncodeVarint(53<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BuildEnqueued); err != nil { - return err - } - case *BuildEvent_BuildFinished_: - b.EncodeVarint(55<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BuildFinished); err != nil { - return err - } - case *BuildEvent_ConsoleOutput_: - b.EncodeVarint(56<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ConsoleOutput); err != nil { - return err - } - case *BuildEvent_ComponentStreamFinished: - b.EncodeVarint(59<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ComponentStreamFinished); err != nil { - return err - } - case *BuildEvent_BazelEvent: - b.EncodeVarint(60<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BazelEvent); err != nil { - return err - } - case *BuildEvent_BuildExecutionEvent: - b.EncodeVarint(61<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BuildExecutionEvent); err != nil { - return err - } - case *BuildEvent_SourceFetchEvent: - b.EncodeVarint(62<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SourceFetchEvent); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("BuildEvent.Event has unexpected type %T", x) - } - return nil -} - -func _BuildEvent_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*BuildEvent) - switch tag { - case 51: // event.invocation_attempt_started - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BuildEvent_InvocationAttemptStarted) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_InvocationAttemptStarted_{msg} - return true, err - case 52: // event.invocation_attempt_finished - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BuildEvent_InvocationAttemptFinished) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_InvocationAttemptFinished_{msg} - return true, err - case 53: // event.build_enqueued - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BuildEvent_BuildEnqueued) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_BuildEnqueued_{msg} - return true, err - case 55: // event.build_finished - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BuildEvent_BuildFinished) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_BuildFinished_{msg} - return true, err - case 56: // event.console_output - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BuildEvent_ConsoleOutput) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_ConsoleOutput_{msg} - return true, err - case 59: // event.component_stream_finished - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BuildEvent_BuildComponentStreamFinished) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_ComponentStreamFinished{msg} - return true, err - case 60: // event.bazel_event - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Any) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_BazelEvent{msg} - return true, err - case 61: // event.build_execution_event - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Any) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_BuildExecutionEvent{msg} - return true, err - case 62: // event.source_fetch_event - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Any) - err := b.DecodeMessage(msg) - m.Event = &BuildEvent_SourceFetchEvent{msg} - return true, err - default: - return false, nil - } -} - -func _BuildEvent_OneofSizer(msg proto.Message) (n int) { - m := msg.(*BuildEvent) - // event - switch x := m.Event.(type) { - case *BuildEvent_InvocationAttemptStarted_: - s := proto.Size(x.InvocationAttemptStarted) - n += proto.SizeVarint(51<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildEvent_InvocationAttemptFinished_: - s := proto.Size(x.InvocationAttemptFinished) - n += proto.SizeVarint(52<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildEvent_BuildEnqueued_: - s := proto.Size(x.BuildEnqueued) - n += proto.SizeVarint(53<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildEvent_BuildFinished_: - s := proto.Size(x.BuildFinished) - n += proto.SizeVarint(55<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildEvent_ConsoleOutput_: - s := proto.Size(x.ConsoleOutput) - n += proto.SizeVarint(56<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildEvent_ComponentStreamFinished: - s := proto.Size(x.ComponentStreamFinished) - n += proto.SizeVarint(59<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildEvent_BazelEvent: - s := proto.Size(x.BazelEvent) - n += proto.SizeVarint(60<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildEvent_BuildExecutionEvent: - s := proto.Size(x.BuildExecutionEvent) - n += proto.SizeVarint(61<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildEvent_SourceFetchEvent: - s := proto.Size(x.SourceFetchEvent) - n += proto.SizeVarint(62<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Notification that the build system has attempted to run the build tool. -type BuildEvent_InvocationAttemptStarted struct { - // The number of the invocation attempt, starting at 1 and increasing by 1 - // for each new attempt. Can be used to determine if there is a later - // invocation attempt replacing the current one a client is processing. - AttemptNumber int64 `protobuf:"varint,1,opt,name=attempt_number,json=attemptNumber" json:"attempt_number,omitempty"` -} - -func (m *BuildEvent_InvocationAttemptStarted) Reset() { *m = BuildEvent_InvocationAttemptStarted{} } -func (m *BuildEvent_InvocationAttemptStarted) String() string { return proto.CompactTextString(m) } -func (*BuildEvent_InvocationAttemptStarted) ProtoMessage() {} -func (*BuildEvent_InvocationAttemptStarted) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 0} -} - -func (m *BuildEvent_InvocationAttemptStarted) GetAttemptNumber() int64 { - if m != nil { - return m.AttemptNumber - } - return 0 -} - -// Notification that an invocation attempt has finished. -type BuildEvent_InvocationAttemptFinished struct { - // The exit code of the build tool. - ExitCode *google_protobuf3.Int32Value `protobuf:"bytes,2,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"` - // Final status of the invocation. - InvocationStatus *BuildStatus `protobuf:"bytes,3,opt,name=invocation_status,json=invocationStatus" json:"invocation_status,omitempty"` -} - -func (m *BuildEvent_InvocationAttemptFinished) Reset() { *m = BuildEvent_InvocationAttemptFinished{} } -func (m *BuildEvent_InvocationAttemptFinished) String() string { return proto.CompactTextString(m) } -func (*BuildEvent_InvocationAttemptFinished) ProtoMessage() {} -func (*BuildEvent_InvocationAttemptFinished) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 1} -} - -func (m *BuildEvent_InvocationAttemptFinished) GetExitCode() *google_protobuf3.Int32Value { - if m != nil { - return m.ExitCode - } - return nil -} - -func (m *BuildEvent_InvocationAttemptFinished) GetInvocationStatus() *BuildStatus { - if m != nil { - return m.InvocationStatus - } - return nil -} - -// Notification that the build request is enqueued. It could happen when -// a new build request is inserted into the build queue, or when a -// build request is put back into the build queue due to a previous build -// failure. -type BuildEvent_BuildEnqueued struct { -} - -func (m *BuildEvent_BuildEnqueued) Reset() { *m = BuildEvent_BuildEnqueued{} } -func (m *BuildEvent_BuildEnqueued) String() string { return proto.CompactTextString(m) } -func (*BuildEvent_BuildEnqueued) ProtoMessage() {} -func (*BuildEvent_BuildEnqueued) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 2} } - -// Notification that the build request has finished, and no further -// invocations will occur. Note that this applies to the entire Build. -// Individual invocations trigger InvocationFinished when they finish. -type BuildEvent_BuildFinished struct { - // Final status of the build. - Status *BuildStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` -} - -func (m *BuildEvent_BuildFinished) Reset() { *m = BuildEvent_BuildFinished{} } -func (m *BuildEvent_BuildFinished) String() string { return proto.CompactTextString(m) } -func (*BuildEvent_BuildFinished) ProtoMessage() {} -func (*BuildEvent_BuildFinished) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 3} } - -func (m *BuildEvent_BuildFinished) GetStatus() *BuildStatus { - if m != nil { - return m.Status - } - return nil -} - -// Textual output written to standard output or standard error. -type BuildEvent_ConsoleOutput struct { - // The output stream type. - Type ConsoleOutputStream `protobuf:"varint,1,opt,name=type,enum=google.devtools.build.v1.ConsoleOutputStream" json:"type,omitempty"` - // The output stream content. - // - // Types that are valid to be assigned to Output: - // *BuildEvent_ConsoleOutput_TextOutput - // *BuildEvent_ConsoleOutput_BinaryOutput - Output isBuildEvent_ConsoleOutput_Output `protobuf_oneof:"output"` -} - -func (m *BuildEvent_ConsoleOutput) Reset() { *m = BuildEvent_ConsoleOutput{} } -func (m *BuildEvent_ConsoleOutput) String() string { return proto.CompactTextString(m) } -func (*BuildEvent_ConsoleOutput) ProtoMessage() {} -func (*BuildEvent_ConsoleOutput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 4} } - -type isBuildEvent_ConsoleOutput_Output interface { - isBuildEvent_ConsoleOutput_Output() -} - -type BuildEvent_ConsoleOutput_TextOutput struct { - TextOutput string `protobuf:"bytes,2,opt,name=text_output,json=textOutput,oneof"` -} -type BuildEvent_ConsoleOutput_BinaryOutput struct { - BinaryOutput []byte `protobuf:"bytes,3,opt,name=binary_output,json=binaryOutput,proto3,oneof"` -} - -func (*BuildEvent_ConsoleOutput_TextOutput) isBuildEvent_ConsoleOutput_Output() {} -func (*BuildEvent_ConsoleOutput_BinaryOutput) isBuildEvent_ConsoleOutput_Output() {} - -func (m *BuildEvent_ConsoleOutput) GetOutput() isBuildEvent_ConsoleOutput_Output { - if m != nil { - return m.Output - } - return nil -} - -func (m *BuildEvent_ConsoleOutput) GetType() ConsoleOutputStream { - if m != nil { - return m.Type - } - return ConsoleOutputStream_UNKNOWN -} - -func (m *BuildEvent_ConsoleOutput) GetTextOutput() string { - if x, ok := m.GetOutput().(*BuildEvent_ConsoleOutput_TextOutput); ok { - return x.TextOutput - } - return "" -} - -func (m *BuildEvent_ConsoleOutput) GetBinaryOutput() []byte { - if x, ok := m.GetOutput().(*BuildEvent_ConsoleOutput_BinaryOutput); ok { - return x.BinaryOutput - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*BuildEvent_ConsoleOutput) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _BuildEvent_ConsoleOutput_OneofMarshaler, _BuildEvent_ConsoleOutput_OneofUnmarshaler, _BuildEvent_ConsoleOutput_OneofSizer, []interface{}{ - (*BuildEvent_ConsoleOutput_TextOutput)(nil), - (*BuildEvent_ConsoleOutput_BinaryOutput)(nil), - } -} - -func _BuildEvent_ConsoleOutput_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*BuildEvent_ConsoleOutput) - // output - switch x := m.Output.(type) { - case *BuildEvent_ConsoleOutput_TextOutput: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.TextOutput) - case *BuildEvent_ConsoleOutput_BinaryOutput: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.BinaryOutput) - case nil: - default: - return fmt.Errorf("BuildEvent_ConsoleOutput.Output has unexpected type %T", x) - } - return nil -} - -func _BuildEvent_ConsoleOutput_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*BuildEvent_ConsoleOutput) - switch tag { - case 2: // output.text_output - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Output = &BuildEvent_ConsoleOutput_TextOutput{x} - return true, err - case 3: // output.binary_output - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Output = &BuildEvent_ConsoleOutput_BinaryOutput{x} - return true, err - default: - return false, nil - } -} - -func _BuildEvent_ConsoleOutput_OneofSizer(msg proto.Message) (n int) { - m := msg.(*BuildEvent_ConsoleOutput) - // output - switch x := m.Output.(type) { - case *BuildEvent_ConsoleOutput_TextOutput: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.TextOutput))) - n += len(x.TextOutput) - case *BuildEvent_ConsoleOutput_BinaryOutput: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.BinaryOutput))) - n += len(x.BinaryOutput) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Notification of the end of a build event stream published by a build -// component other than CONTROLLER (See StreamId.BuildComponents). -type BuildEvent_BuildComponentStreamFinished struct { - // How the event stream finished. - Type BuildEvent_BuildComponentStreamFinished_FinishType `protobuf:"varint,1,opt,name=type,enum=google.devtools.build.v1.BuildEvent_BuildComponentStreamFinished_FinishType" json:"type,omitempty"` -} - -func (m *BuildEvent_BuildComponentStreamFinished) Reset() { - *m = BuildEvent_BuildComponentStreamFinished{} -} -func (m *BuildEvent_BuildComponentStreamFinished) String() string { return proto.CompactTextString(m) } -func (*BuildEvent_BuildComponentStreamFinished) ProtoMessage() {} -func (*BuildEvent_BuildComponentStreamFinished) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 5} -} - -func (m *BuildEvent_BuildComponentStreamFinished) GetType() BuildEvent_BuildComponentStreamFinished_FinishType { - if m != nil { - return m.Type - } - return BuildEvent_BuildComponentStreamFinished_FINISH_TYPE_UNSPECIFIED -} - -// Unique identifier for a build event stream. -type StreamId struct { - // The id of a Build message. - BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId" json:"build_id,omitempty"` - // The unique invocation ID within this build. - // It should be the same as {invocation} (below) during the migration. - InvocationId string `protobuf:"bytes,6,opt,name=invocation_id,json=invocationId" json:"invocation_id,omitempty"` - // The component that emitted this event. - Component StreamId_BuildComponent `protobuf:"varint,3,opt,name=component,enum=google.devtools.build.v1.StreamId_BuildComponent" json:"component,omitempty"` -} - -func (m *StreamId) Reset() { *m = StreamId{} } -func (m *StreamId) String() string { return proto.CompactTextString(m) } -func (*StreamId) ProtoMessage() {} -func (*StreamId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *StreamId) GetBuildId() string { - if m != nil { - return m.BuildId - } - return "" -} - -func (m *StreamId) GetInvocationId() string { - if m != nil { - return m.InvocationId - } - return "" -} - -func (m *StreamId) GetComponent() StreamId_BuildComponent { - if m != nil { - return m.Component - } - return StreamId_UNKNOWN_COMPONENT -} - -func init() { - proto.RegisterType((*BuildEvent)(nil), "google.devtools.build.v1.BuildEvent") - proto.RegisterType((*BuildEvent_InvocationAttemptStarted)(nil), "google.devtools.build.v1.BuildEvent.InvocationAttemptStarted") - proto.RegisterType((*BuildEvent_InvocationAttemptFinished)(nil), "google.devtools.build.v1.BuildEvent.InvocationAttemptFinished") - proto.RegisterType((*BuildEvent_BuildEnqueued)(nil), "google.devtools.build.v1.BuildEvent.BuildEnqueued") - proto.RegisterType((*BuildEvent_BuildFinished)(nil), "google.devtools.build.v1.BuildEvent.BuildFinished") - proto.RegisterType((*BuildEvent_ConsoleOutput)(nil), "google.devtools.build.v1.BuildEvent.ConsoleOutput") - proto.RegisterType((*BuildEvent_BuildComponentStreamFinished)(nil), "google.devtools.build.v1.BuildEvent.BuildComponentStreamFinished") - proto.RegisterType((*StreamId)(nil), "google.devtools.build.v1.StreamId") - proto.RegisterEnum("google.devtools.build.v1.ConsoleOutputStream", ConsoleOutputStream_name, ConsoleOutputStream_value) - proto.RegisterEnum("google.devtools.build.v1.BuildEvent_BuildComponentStreamFinished_FinishType", BuildEvent_BuildComponentStreamFinished_FinishType_name, BuildEvent_BuildComponentStreamFinished_FinishType_value) - proto.RegisterEnum("google.devtools.build.v1.StreamId_BuildComponent", StreamId_BuildComponent_name, StreamId_BuildComponent_value) -} - -func init() { proto.RegisterFile("google/devtools/build/v1/build_events.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 927 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x6d, 0x6f, 0xe3, 0x44, - 0x10, 0x8e, 0xdb, 0xa3, 0x4d, 0xa7, 0x49, 0xce, 0xb7, 0xc7, 0xa9, 0x8e, 0x5b, 0xf1, 0x52, 0x54, - 0x09, 0x81, 0x70, 0xd4, 0x14, 0x74, 0x07, 0x47, 0x4f, 0xca, 0x8b, 0xab, 0x98, 0xeb, 0xd9, 0xd1, - 0x26, 0xe5, 0x78, 0xf9, 0x10, 0x1c, 0x7b, 0x9b, 0xb3, 0x94, 0x78, 0x8d, 0xbd, 0x0e, 0x0d, 0x12, - 0x82, 0x5f, 0x83, 0xc4, 0x1f, 0xe1, 0xc7, 0xf0, 0x07, 0xe0, 0x23, 0xf2, 0xee, 0xba, 0x49, 0xda, - 0xa6, 0x77, 0x85, 0x6f, 0xbb, 0x33, 0xcf, 0x3c, 0xcf, 0xcc, 0xec, 0x8c, 0x65, 0xf8, 0x78, 0x44, - 0xe9, 0x68, 0x4c, 0x6a, 0x3e, 0x99, 0x32, 0x4a, 0xc7, 0x49, 0x6d, 0x98, 0x06, 0x63, 0xbf, 0x36, - 0x3d, 0x14, 0x87, 0x01, 0x99, 0x92, 0x90, 0x25, 0x46, 0x14, 0x53, 0x46, 0x91, 0x26, 0xc0, 0x46, - 0x0e, 0x36, 0x38, 0xc6, 0x98, 0x1e, 0xea, 0x7b, 0x92, 0xc6, 0x8d, 0x82, 0x9a, 0x1b, 0x86, 0x94, - 0xb9, 0x2c, 0xa0, 0xa1, 0x8c, 0xd3, 0x5f, 0x27, 0x92, 0x30, 0x97, 0xa5, 0x39, 0xb8, 0x2a, 0xc1, - 0xfc, 0x36, 0x4c, 0xcf, 0x6b, 0x6e, 0x38, 0x93, 0xae, 0x77, 0xaf, 0xba, 0x58, 0x30, 0x21, 0x09, - 0x73, 0x27, 0x91, 0x04, 0xbc, 0x73, 0x15, 0xf0, 0x53, 0xec, 0x46, 0x11, 0x89, 0x73, 0xee, 0x1d, - 0xe9, 0x8f, 0x23, 0xaf, 0xb6, 0x28, 0xba, 0xff, 0x77, 0x09, 0xa0, 0x99, 0xe5, 0x62, 0x66, 0xf5, - 0xa2, 0xcf, 0x01, 0x78, 0xe1, 0x83, 0x4c, 0x40, 0x53, 0xde, 0x53, 0x3e, 0xdc, 0xae, 0xeb, 0x86, - 0xac, 0x3e, 0x27, 0x37, 0xfa, 0xb9, 0x3a, 0xde, 0xe2, 0xe8, 0xec, 0x8e, 0x7e, 0x01, 0x3d, 0x08, - 0xa7, 0xd4, 0xe3, 0x0d, 0x18, 0xb8, 0x8c, 0x91, 0x49, 0xc4, 0xb2, 0x0a, 0x63, 0x46, 0x7c, 0xed, - 0x88, 0x53, 0x1d, 0x1b, 0xab, 0x1a, 0x69, 0xcc, 0x93, 0x30, 0xac, 0x4b, 0x9a, 0x86, 0x60, 0xe9, - 0x09, 0x92, 0x4e, 0x01, 0x6b, 0xc1, 0x0a, 0x1f, 0xfa, 0x4d, 0x81, 0xdd, 0x1b, 0xf4, 0xcf, 0x83, - 0x30, 0x48, 0x5e, 0x11, 0x5f, 0xfb, 0x94, 0x27, 0xf0, 0xec, 0xbf, 0x25, 0x70, 0x22, 0x59, 0x3a, - 0x05, 0x5c, 0x0d, 0x56, 0x39, 0xd1, 0xf7, 0x50, 0x91, 0xb3, 0x13, 0xfe, 0x98, 0x92, 0x94, 0xf8, - 0xda, 0x67, 0x5c, 0xb4, 0xfe, 0x46, 0xa2, 0xe2, 0x28, 0x23, 0x3b, 0x05, 0x5c, 0x1e, 0x2e, 0x1a, - 0xe6, 0xe4, 0x97, 0x15, 0x3d, 0xbe, 0x2b, 0xf9, 0x42, 0x15, 0x82, 0x7c, 0x31, 0x73, 0x8f, 0x86, - 0x09, 0x1d, 0x93, 0x01, 0x4d, 0x59, 0x94, 0x32, 0xed, 0xc9, 0x1d, 0xc8, 0x5b, 0x22, 0xd4, 0xe1, - 0x91, 0x19, 0xb9, 0xb7, 0x68, 0x40, 0xbf, 0x42, 0xd5, 0xa3, 0x93, 0x88, 0x86, 0xd9, 0x5c, 0x25, - 0x2c, 0x26, 0xee, 0x64, 0x5e, 0xc4, 0x53, 0xae, 0xd3, 0x78, 0xf3, 0x22, 0x5a, 0x39, 0x55, 0x8f, - 0x33, 0x2d, 0xd4, 0xb4, 0xe3, 0xdd, 0xec, 0x42, 0x8f, 0x61, 0x7b, 0xe8, 0xfe, 0x4c, 0xc6, 0x62, - 0xa7, 0xb5, 0x2f, 0xb9, 0xe4, 0xdb, 0xd7, 0xa6, 0xba, 0x11, 0xce, 0x3a, 0x05, 0x0c, 0x1c, 0x2a, - 0xb6, 0xe1, 0x2b, 0x78, 0x24, 0x1f, 0xf4, 0x82, 0x78, 0x29, 0x9f, 0x2b, 0x41, 0x71, 0x7c, 0x2b, - 0xc5, 0x43, 0xf1, 0x72, 0x79, 0x8c, 0xe0, 0x6a, 0x03, 0x4a, 0x68, 0x1a, 0x7b, 0x64, 0x70, 0x4e, - 0x98, 0xf7, 0x4a, 0x12, 0x3d, 0xbb, 0x95, 0x48, 0x15, 0x11, 0x27, 0x59, 0x00, 0x67, 0xd1, 0x1b, - 0xa0, 0xad, 0xda, 0x0e, 0x74, 0x00, 0x95, 0x7c, 0xea, 0xc3, 0x74, 0x32, 0x24, 0x31, 0xdf, 0xdf, - 0x75, 0x5c, 0x96, 0x56, 0x9b, 0x1b, 0xf5, 0x3f, 0x14, 0xa8, 0xae, 0x1c, 0x70, 0xf4, 0x04, 0xb6, - 0xc8, 0x45, 0xc0, 0x06, 0x1e, 0xf5, 0x89, 0xb6, 0xc6, 0xb3, 0xdb, 0xbd, 0x96, 0x9d, 0x15, 0xb2, - 0xa3, 0xfa, 0xd7, 0xee, 0x38, 0x25, 0xb8, 0x98, 0xa1, 0x5b, 0xd4, 0x27, 0x08, 0xc3, 0x83, 0x85, - 0xfd, 0x13, 0x1f, 0x19, 0x6d, 0x9d, 0x33, 0x1c, 0xbc, 0xe6, 0x79, 0x7b, 0x1c, 0x8c, 0xd5, 0x79, - 0xbc, 0xb0, 0xe8, 0xf7, 0xa1, 0xbc, 0xb4, 0x16, 0xba, 0x2d, 0x0d, 0x97, 0xf9, 0x1e, 0xc3, 0x86, - 0x94, 0x52, 0xee, 0x22, 0x25, 0x83, 0xf4, 0xdf, 0x15, 0x28, 0x2f, 0x8d, 0x2f, 0x6a, 0xc0, 0x3d, - 0x36, 0x8b, 0xc4, 0xb7, 0xaf, 0x52, 0xff, 0x64, 0x35, 0xdd, 0x52, 0x98, 0x98, 0x38, 0xcc, 0x43, - 0xd1, 0xfb, 0xb0, 0xcd, 0xc8, 0x05, 0xcb, 0x57, 0x29, 0xeb, 0xe2, 0x56, 0x36, 0x59, 0x99, 0x51, - 0xaa, 0x1c, 0x40, 0x79, 0x18, 0x84, 0x6e, 0x3c, 0xcb, 0x41, 0x59, 0xa3, 0x4a, 0x9d, 0x02, 0x2e, - 0x09, 0xb3, 0x80, 0x35, 0x8b, 0xb0, 0x21, 0xfc, 0xfa, 0x9f, 0x0a, 0xec, 0xdd, 0x36, 0xff, 0xe8, - 0x87, 0xa5, 0xbc, 0x4f, 0xff, 0xf7, 0x42, 0x19, 0xe2, 0xd0, 0x9f, 0x45, 0x44, 0x94, 0xb5, 0xdf, - 0x06, 0x98, 0xdb, 0xd0, 0x2e, 0xec, 0x9c, 0x58, 0xb6, 0xd5, 0xeb, 0x0c, 0xfa, 0xdf, 0x76, 0xcd, - 0xc1, 0x99, 0xdd, 0xeb, 0x9a, 0x2d, 0xeb, 0xc4, 0x32, 0xdb, 0x6a, 0x01, 0x95, 0xa0, 0x28, 0x9c, - 0x66, 0x5b, 0x55, 0xd0, 0x36, 0x6c, 0x9a, 0xdf, 0x74, 0x2d, 0x6c, 0xb6, 0xd5, 0xb5, 0xe6, 0x26, - 0xbc, 0xc5, 0x47, 0x7f, 0xff, 0x2f, 0x05, 0x8a, 0x42, 0xd2, 0xf2, 0x51, 0x15, 0x8a, 0x62, 0xd3, - 0x02, 0x9f, 0x57, 0xb0, 0x85, 0x37, 0xf9, 0xdd, 0xf2, 0xd1, 0x07, 0x50, 0x5e, 0x98, 0xab, 0xc0, - 0xd7, 0x36, 0xb8, 0xbf, 0x34, 0x37, 0x5a, 0x3e, 0x72, 0x60, 0xeb, 0x72, 0xfb, 0x79, 0x2f, 0x2b, - 0xf5, 0xc3, 0xd5, 0x2d, 0xc8, 0x65, 0xaf, 0x34, 0x00, 0xcf, 0x39, 0xf6, 0x5f, 0x40, 0x65, 0xd9, - 0x89, 0x1e, 0xc1, 0x83, 0x33, 0xfb, 0xb9, 0xed, 0xbc, 0xb4, 0x07, 0x2d, 0xe7, 0x45, 0xd7, 0xb1, - 0x4d, 0xbb, 0xaf, 0x16, 0x50, 0x05, 0xa0, 0xe5, 0xd8, 0x7d, 0xec, 0x9c, 0x9e, 0x9a, 0x58, 0x55, - 0x10, 0xc0, 0xc6, 0x4b, 0x07, 0x3f, 0x37, 0xb1, 0xba, 0x86, 0x8a, 0x70, 0xaf, 0xef, 0x38, 0xa7, - 0xea, 0xfa, 0x47, 0x5f, 0xc0, 0xc3, 0x1b, 0xe6, 0x25, 0xeb, 0x8c, 0xe4, 0x54, 0x0b, 0x59, 0x64, - 0xaf, 0xdf, 0x76, 0xce, 0xfa, 0x82, 0xa5, 0xd7, 0x6f, 0x9b, 0x18, 0xab, 0x6b, 0xcd, 0x04, 0xf6, - 0x3c, 0x3a, 0x59, 0x59, 0x4d, 0xf3, 0xfe, 0xfc, 0x45, 0xbb, 0xd9, 0x86, 0x76, 0x95, 0xef, 0x8e, - 0x25, 0x78, 0x44, 0xc7, 0x6e, 0x38, 0x32, 0x68, 0x3c, 0xaa, 0x8d, 0x48, 0xc8, 0xf7, 0xb7, 0x26, - 0x5c, 0x6e, 0x14, 0x24, 0xd7, 0x7f, 0x4b, 0x9e, 0xf2, 0xc3, 0x3f, 0x8a, 0x32, 0xdc, 0xe0, 0xe0, - 0xa3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x84, 0x0f, 0x0f, 0xdf, 0x27, 0x09, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/build_status.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/build_status.pb.go deleted file mode 100644 index 940ddd69..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/build_status.pb.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/build/v1/build_status.proto - -package build - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The end result of the Build. -type BuildStatus_Result int32 - -const ( - // Unspecified or unknown. - BuildStatus_UNKNOWN_STATUS BuildStatus_Result = 0 - // Build was successful and tests (if requested) all pass. - BuildStatus_COMMAND_SUCCEEDED BuildStatus_Result = 1 - // Build error and/or test failure. - BuildStatus_COMMAND_FAILED BuildStatus_Result = 2 - // Unable to obtain a result due to input provided by the user. - BuildStatus_USER_ERROR BuildStatus_Result = 3 - // Unable to obtain a result due to a failure within the build system. - BuildStatus_SYSTEM_ERROR BuildStatus_Result = 4 - // Build required too many resources, such as build tool RAM. - BuildStatus_RESOURCE_EXHAUSTED BuildStatus_Result = 5 - // An invocation attempt time exceeded its deadline. - BuildStatus_INVOCATION_DEADLINE_EXCEEDED BuildStatus_Result = 6 - // Build request time exceeded the request_deadline - BuildStatus_REQUEST_DEADLINE_EXCEEDED BuildStatus_Result = 8 - // The build was cancelled by a call to CancelBuild. - BuildStatus_CANCELLED BuildStatus_Result = 7 -) - -var BuildStatus_Result_name = map[int32]string{ - 0: "UNKNOWN_STATUS", - 1: "COMMAND_SUCCEEDED", - 2: "COMMAND_FAILED", - 3: "USER_ERROR", - 4: "SYSTEM_ERROR", - 5: "RESOURCE_EXHAUSTED", - 6: "INVOCATION_DEADLINE_EXCEEDED", - 8: "REQUEST_DEADLINE_EXCEEDED", - 7: "CANCELLED", -} -var BuildStatus_Result_value = map[string]int32{ - "UNKNOWN_STATUS": 0, - "COMMAND_SUCCEEDED": 1, - "COMMAND_FAILED": 2, - "USER_ERROR": 3, - "SYSTEM_ERROR": 4, - "RESOURCE_EXHAUSTED": 5, - "INVOCATION_DEADLINE_EXCEEDED": 6, - "REQUEST_DEADLINE_EXCEEDED": 8, - "CANCELLED": 7, -} - -func (x BuildStatus_Result) String() string { - return proto.EnumName(BuildStatus_Result_name, int32(x)) -} -func (BuildStatus_Result) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -// Status used for both invocation attempt and overall build completion. -type BuildStatus struct { - // The end result. - Result BuildStatus_Result `protobuf:"varint,1,opt,name=result,enum=google.devtools.build.v1.BuildStatus_Result" json:"result,omitempty"` - // Fine-grained diagnostic information to complement the status. - Details *google_protobuf1.Any `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"` -} - -func (m *BuildStatus) Reset() { *m = BuildStatus{} } -func (m *BuildStatus) String() string { return proto.CompactTextString(m) } -func (*BuildStatus) ProtoMessage() {} -func (*BuildStatus) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *BuildStatus) GetResult() BuildStatus_Result { - if m != nil { - return m.Result - } - return BuildStatus_UNKNOWN_STATUS -} - -func (m *BuildStatus) GetDetails() *google_protobuf1.Any { - if m != nil { - return m.Details - } - return nil -} - -func init() { - proto.RegisterType((*BuildStatus)(nil), "google.devtools.build.v1.BuildStatus") - proto.RegisterEnum("google.devtools.build.v1.BuildStatus_Result", BuildStatus_Result_name, BuildStatus_Result_value) -} - -func init() { proto.RegisterFile("google/devtools/build/v1/build_status.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 390 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x4f, 0x0b, 0xd3, 0x30, - 0x18, 0xc6, 0xcd, 0xd4, 0x4e, 0x33, 0x1d, 0x35, 0xa8, 0x6c, 0x63, 0xc2, 0xd8, 0x69, 0xa0, 0xa4, - 0x6c, 0x1e, 0xc5, 0x43, 0xd6, 0x44, 0x2c, 0x6e, 0xe9, 0x4c, 0x5a, 0xff, 0x5d, 0x4a, 0xe6, 0x6a, - 0x29, 0xd4, 0x66, 0xac, 0xe9, 0x60, 0x1f, 0xd3, 0x93, 0x5f, 0xc5, 0xa3, 0xf4, 0x1f, 0x0c, 0x74, - 0xb7, 0xf4, 0x7d, 0x7e, 0xcf, 0xf3, 0xbe, 0x3c, 0x14, 0xbe, 0x4c, 0xb4, 0x4e, 0xb2, 0xd8, 0x39, - 0xc4, 0x67, 0xa3, 0x75, 0x56, 0x38, 0xfb, 0x32, 0xcd, 0x0e, 0xce, 0x79, 0xd9, 0x3c, 0xa2, 0xc2, - 0x28, 0x53, 0x16, 0xf8, 0x78, 0xd2, 0x46, 0xa3, 0x51, 0x03, 0xe3, 0x0e, 0xc6, 0x35, 0x83, 0xcf, - 0xcb, 0xc9, 0xb4, 0x8d, 0x51, 0xc7, 0xd4, 0x51, 0x79, 0xae, 0x8d, 0x32, 0xa9, 0xce, 0x5b, 0xdf, - 0x64, 0xdc, 0xaa, 0xf5, 0xd7, 0xbe, 0xfc, 0xe1, 0xa8, 0xfc, 0xd2, 0x48, 0xf3, 0xdf, 0x3d, 0x38, - 0x58, 0x57, 0x29, 0xb2, 0x5e, 0x84, 0x28, 0xb4, 0x4e, 0x71, 0x51, 0x66, 0x66, 0x04, 0x66, 0x60, - 0x31, 0x5c, 0xbd, 0xc2, 0xb7, 0x76, 0xe2, 0x2b, 0x1b, 0x16, 0xb5, 0x47, 0xb4, 0x5e, 0x84, 0x61, - 0xff, 0x10, 0x1b, 0x95, 0x66, 0xc5, 0xa8, 0x37, 0x03, 0x8b, 0xc1, 0xea, 0x69, 0x17, 0xd3, 0x9d, - 0x80, 0x49, 0x7e, 0x11, 0x1d, 0x34, 0xff, 0x05, 0xa0, 0xd5, 0x44, 0x20, 0x04, 0x87, 0x21, 0xff, - 0xc0, 0xfd, 0xcf, 0x3c, 0x92, 0x01, 0x09, 0x42, 0x69, 0xdf, 0x41, 0xcf, 0xe0, 0x13, 0xd7, 0xdf, - 0x6e, 0x09, 0xa7, 0x91, 0x0c, 0x5d, 0x97, 0x31, 0xca, 0xa8, 0x0d, 0x2a, 0xb4, 0x1b, 0xbf, 0x23, - 0xde, 0x86, 0x51, 0xbb, 0x87, 0x86, 0x10, 0x86, 0x92, 0x89, 0x88, 0x09, 0xe1, 0x0b, 0xfb, 0x2e, - 0xb2, 0xe1, 0x23, 0xf9, 0x55, 0x06, 0x6c, 0xdb, 0x4e, 0xee, 0xa1, 0xe7, 0x10, 0x09, 0x26, 0xfd, - 0x50, 0xb8, 0x2c, 0x62, 0x5f, 0xde, 0x93, 0x50, 0x06, 0x8c, 0xda, 0xf7, 0xd1, 0x0c, 0x4e, 0x3d, - 0xfe, 0xc9, 0x77, 0x49, 0xe0, 0xf9, 0x3c, 0xa2, 0x8c, 0xd0, 0x8d, 0xc7, 0x2b, 0xa4, 0xdd, 0x67, - 0xa1, 0x17, 0x70, 0x2c, 0xd8, 0xc7, 0x90, 0xc9, 0xe0, 0x3f, 0xf2, 0x03, 0xf4, 0x18, 0x3e, 0x74, - 0x09, 0x77, 0xd9, 0xa6, 0xba, 0xa4, 0xbf, 0x36, 0x70, 0xfa, 0x5d, 0xff, 0xbc, 0x59, 0xdf, 0xda, - 0xbe, 0xea, 0x6f, 0x57, 0xb5, 0xb2, 0x03, 0xdf, 0xde, 0xb6, 0x74, 0xa2, 0x33, 0x95, 0x27, 0x58, - 0x9f, 0x12, 0x27, 0x89, 0xf3, 0xba, 0x33, 0xa7, 0x91, 0xd4, 0x31, 0x2d, 0xfe, 0xfd, 0x59, 0xde, - 0xd4, 0x8f, 0x3f, 0x00, 0xec, 0xad, 0x1a, 0x7e, 0xfd, 0x37, 0x00, 0x00, 0xff, 0xff, 0xd6, 0x3d, - 0xf5, 0x87, 0x58, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/publish_build_event.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/publish_build_event.pb.go deleted file mode 100644 index ee9fd227..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/build/v1/publish_build_event.pb.go +++ /dev/null @@ -1,465 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/build/v1/publish_build_event.proto - -package build - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf5 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The service level of the build request. Backends only uses this value when -// the BuildEnqueued event is published to determine what level of service -// this build should receive. -type PublishLifecycleEventRequest_ServiceLevel int32 - -const ( - // Non-interactive builds can tolerate longer event latencies. This is the - // default ServiceLevel if callers do not specify one. - PublishLifecycleEventRequest_NONINTERACTIVE PublishLifecycleEventRequest_ServiceLevel = 0 - // The events of an interactive build should be delivered with low latency. - PublishLifecycleEventRequest_INTERACTIVE PublishLifecycleEventRequest_ServiceLevel = 1 -) - -var PublishLifecycleEventRequest_ServiceLevel_name = map[int32]string{ - 0: "NONINTERACTIVE", - 1: "INTERACTIVE", -} -var PublishLifecycleEventRequest_ServiceLevel_value = map[string]int32{ - "NONINTERACTIVE": 0, - "INTERACTIVE": 1, -} - -func (x PublishLifecycleEventRequest_ServiceLevel) String() string { - return proto.EnumName(PublishLifecycleEventRequest_ServiceLevel_name, int32(x)) -} -func (PublishLifecycleEventRequest_ServiceLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 0} -} - -// Publishes 'lifecycle events' that update the high-level state of a build: -// - BuildEnqueued: When a build is scheduled. -// - InvocationAttemptStarted: When work for a build starts; there can be -// multiple invocations for a build (e.g. retries). -// - InvocationAttemptCompleted: When work for a build finishes. -// - BuildFinished: When a build is finished. -type PublishLifecycleEventRequest struct { - // The interactivity of this build. - ServiceLevel PublishLifecycleEventRequest_ServiceLevel `protobuf:"varint,1,opt,name=service_level,json=serviceLevel,enum=google.devtools.build.v1.PublishLifecycleEventRequest_ServiceLevel" json:"service_level,omitempty"` - // The lifecycle build event. If this is a build tool event, the RPC will fail - // with INVALID_REQUEST. - BuildEvent *OrderedBuildEvent `protobuf:"bytes,2,opt,name=build_event,json=buildEvent" json:"build_event,omitempty"` - // If the next event for this build or invocation (depending on the event - // type) hasn't been published after this duration from when {build_event} - // is written to BES, consider this stream expired. If this field is not set, - // BES backend will use its own default value. - StreamTimeout *google_protobuf4.Duration `protobuf:"bytes,3,opt,name=stream_timeout,json=streamTimeout" json:"stream_timeout,omitempty"` - // Additional information about a build request. These are define by the event - // publishers, and the Build Event Service does not validate or interpret - // them. They are used while notifying internal systems of new builds and - // invocations if the OrderedBuildEvent.event type is - // BuildEnqueued/InvocationAttemptStarted. - NotificationKeywords []string `protobuf:"bytes,4,rep,name=notification_keywords,json=notificationKeywords" json:"notification_keywords,omitempty"` - // This field identifies which project (if any) the build is associated with. - ProjectId string `protobuf:"bytes,6,opt,name=project_id,json=projectId" json:"project_id,omitempty"` -} - -func (m *PublishLifecycleEventRequest) Reset() { *m = PublishLifecycleEventRequest{} } -func (m *PublishLifecycleEventRequest) String() string { return proto.CompactTextString(m) } -func (*PublishLifecycleEventRequest) ProtoMessage() {} -func (*PublishLifecycleEventRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *PublishLifecycleEventRequest) GetServiceLevel() PublishLifecycleEventRequest_ServiceLevel { - if m != nil { - return m.ServiceLevel - } - return PublishLifecycleEventRequest_NONINTERACTIVE -} - -func (m *PublishLifecycleEventRequest) GetBuildEvent() *OrderedBuildEvent { - if m != nil { - return m.BuildEvent - } - return nil -} - -func (m *PublishLifecycleEventRequest) GetStreamTimeout() *google_protobuf4.Duration { - if m != nil { - return m.StreamTimeout - } - return nil -} - -func (m *PublishLifecycleEventRequest) GetNotificationKeywords() []string { - if m != nil { - return m.NotificationKeywords - } - return nil -} - -func (m *PublishLifecycleEventRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -// States which event has been committed. Any failure to commit will cause -// RPC errors, hence not recorded by this proto. -type PublishBuildToolEventStreamResponse struct { - // The stream that contains this event. - StreamId *StreamId `protobuf:"bytes,1,opt,name=stream_id,json=streamId" json:"stream_id,omitempty"` - // The sequence number of this event that has been committed. - SequenceNumber int64 `protobuf:"varint,2,opt,name=sequence_number,json=sequenceNumber" json:"sequence_number,omitempty"` -} - -func (m *PublishBuildToolEventStreamResponse) Reset() { *m = PublishBuildToolEventStreamResponse{} } -func (m *PublishBuildToolEventStreamResponse) String() string { return proto.CompactTextString(m) } -func (*PublishBuildToolEventStreamResponse) ProtoMessage() {} -func (*PublishBuildToolEventStreamResponse) Descriptor() ([]byte, []int) { - return fileDescriptor2, []int{1} -} - -func (m *PublishBuildToolEventStreamResponse) GetStreamId() *StreamId { - if m != nil { - return m.StreamId - } - return nil -} - -func (m *PublishBuildToolEventStreamResponse) GetSequenceNumber() int64 { - if m != nil { - return m.SequenceNumber - } - return 0 -} - -// Build event with contextual information about the stream it belongs to and -// its position in that stream. -type OrderedBuildEvent struct { - // Which build event stream this event belongs to. - StreamId *StreamId `protobuf:"bytes,1,opt,name=stream_id,json=streamId" json:"stream_id,omitempty"` - // The position of this event in the stream. The sequence numbers for a build - // event stream should be a sequence of consecutive natural numbers starting - // from one. (1, 2, 3, ...) - SequenceNumber int64 `protobuf:"varint,2,opt,name=sequence_number,json=sequenceNumber" json:"sequence_number,omitempty"` - // The actual event. - Event *BuildEvent `protobuf:"bytes,3,opt,name=event" json:"event,omitempty"` -} - -func (m *OrderedBuildEvent) Reset() { *m = OrderedBuildEvent{} } -func (m *OrderedBuildEvent) String() string { return proto.CompactTextString(m) } -func (*OrderedBuildEvent) ProtoMessage() {} -func (*OrderedBuildEvent) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *OrderedBuildEvent) GetStreamId() *StreamId { - if m != nil { - return m.StreamId - } - return nil -} - -func (m *OrderedBuildEvent) GetSequenceNumber() int64 { - if m != nil { - return m.SequenceNumber - } - return 0 -} - -func (m *OrderedBuildEvent) GetEvent() *BuildEvent { - if m != nil { - return m.Event - } - return nil -} - -type PublishBuildToolEventStreamRequest struct { - // Which build event stream this event belongs to. - StreamId *StreamId `protobuf:"bytes,1,opt,name=stream_id,json=streamId" json:"stream_id,omitempty"` - // The position of this event in the stream. The sequence numbers for a build - // event stream should be a sequence of consecutive natural numbers starting - // from one. (1, 2, 3, ...) - SequenceNumber int64 `protobuf:"varint,2,opt,name=sequence_number,json=sequenceNumber" json:"sequence_number,omitempty"` - // The actual event. - Event *BuildEvent `protobuf:"bytes,3,opt,name=event" json:"event,omitempty"` - // The build event with position info. - // New publishing clients should use this field rather than the 3 above. - OrderedBuildEvent *OrderedBuildEvent `protobuf:"bytes,4,opt,name=ordered_build_event,json=orderedBuildEvent" json:"ordered_build_event,omitempty"` - // The keywords to be attached to the notification which notifies the start - // of a new build event stream. BES only reads this field when sequence_number - // or ordered_build_event.sequence_number is 1 in this message. If this field - // is empty, BES will not publish notification messages for this stream. - NotificationKeywords []string `protobuf:"bytes,5,rep,name=notification_keywords,json=notificationKeywords" json:"notification_keywords,omitempty"` -} - -func (m *PublishBuildToolEventStreamRequest) Reset() { *m = PublishBuildToolEventStreamRequest{} } -func (m *PublishBuildToolEventStreamRequest) String() string { return proto.CompactTextString(m) } -func (*PublishBuildToolEventStreamRequest) ProtoMessage() {} -func (*PublishBuildToolEventStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor2, []int{3} -} - -func (m *PublishBuildToolEventStreamRequest) GetStreamId() *StreamId { - if m != nil { - return m.StreamId - } - return nil -} - -func (m *PublishBuildToolEventStreamRequest) GetSequenceNumber() int64 { - if m != nil { - return m.SequenceNumber - } - return 0 -} - -func (m *PublishBuildToolEventStreamRequest) GetEvent() *BuildEvent { - if m != nil { - return m.Event - } - return nil -} - -func (m *PublishBuildToolEventStreamRequest) GetOrderedBuildEvent() *OrderedBuildEvent { - if m != nil { - return m.OrderedBuildEvent - } - return nil -} - -func (m *PublishBuildToolEventStreamRequest) GetNotificationKeywords() []string { - if m != nil { - return m.NotificationKeywords - } - return nil -} - -func init() { - proto.RegisterType((*PublishLifecycleEventRequest)(nil), "google.devtools.build.v1.PublishLifecycleEventRequest") - proto.RegisterType((*PublishBuildToolEventStreamResponse)(nil), "google.devtools.build.v1.PublishBuildToolEventStreamResponse") - proto.RegisterType((*OrderedBuildEvent)(nil), "google.devtools.build.v1.OrderedBuildEvent") - proto.RegisterType((*PublishBuildToolEventStreamRequest)(nil), "google.devtools.build.v1.PublishBuildToolEventStreamRequest") - proto.RegisterEnum("google.devtools.build.v1.PublishLifecycleEventRequest_ServiceLevel", PublishLifecycleEventRequest_ServiceLevel_name, PublishLifecycleEventRequest_ServiceLevel_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for PublishBuildEvent service - -type PublishBuildEventClient interface { - // Publish a build event stating the new state of a build (typically from the - // build queue). If the event is a BuildEnqueued event, also register the new - // build request ID and its build type to BES. - // - // The backend will persist the event and deliver it to registered frontend - // jobs immediately without batching. - // - // The commit status of the request is reported by the RPC's util_status() - // function. The error code is the canoncial error code defined in - // //util/task/codes.proto. - PublishLifecycleEvent(ctx context.Context, in *PublishLifecycleEventRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) - // Publish build tool events belonging to the same stream to a backend job - // using bidirectional streaming. - PublishBuildToolEventStream(ctx context.Context, opts ...grpc.CallOption) (PublishBuildEvent_PublishBuildToolEventStreamClient, error) -} - -type publishBuildEventClient struct { - cc *grpc.ClientConn -} - -func NewPublishBuildEventClient(cc *grpc.ClientConn) PublishBuildEventClient { - return &publishBuildEventClient{cc} -} - -func (c *publishBuildEventClient) PublishLifecycleEvent(ctx context.Context, in *PublishLifecycleEventRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) { - out := new(google_protobuf5.Empty) - err := grpc.Invoke(ctx, "/google.devtools.build.v1.PublishBuildEvent/PublishLifecycleEvent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publishBuildEventClient) PublishBuildToolEventStream(ctx context.Context, opts ...grpc.CallOption) (PublishBuildEvent_PublishBuildToolEventStreamClient, error) { - stream, err := grpc.NewClientStream(ctx, &_PublishBuildEvent_serviceDesc.Streams[0], c.cc, "/google.devtools.build.v1.PublishBuildEvent/PublishBuildToolEventStream", opts...) - if err != nil { - return nil, err - } - x := &publishBuildEventPublishBuildToolEventStreamClient{stream} - return x, nil -} - -type PublishBuildEvent_PublishBuildToolEventStreamClient interface { - Send(*OrderedBuildEvent) error - Recv() (*PublishBuildToolEventStreamResponse, error) - grpc.ClientStream -} - -type publishBuildEventPublishBuildToolEventStreamClient struct { - grpc.ClientStream -} - -func (x *publishBuildEventPublishBuildToolEventStreamClient) Send(m *OrderedBuildEvent) error { - return x.ClientStream.SendMsg(m) -} - -func (x *publishBuildEventPublishBuildToolEventStreamClient) Recv() (*PublishBuildToolEventStreamResponse, error) { - m := new(PublishBuildToolEventStreamResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for PublishBuildEvent service - -type PublishBuildEventServer interface { - // Publish a build event stating the new state of a build (typically from the - // build queue). If the event is a BuildEnqueued event, also register the new - // build request ID and its build type to BES. - // - // The backend will persist the event and deliver it to registered frontend - // jobs immediately without batching. - // - // The commit status of the request is reported by the RPC's util_status() - // function. The error code is the canoncial error code defined in - // //util/task/codes.proto. - PublishLifecycleEvent(context.Context, *PublishLifecycleEventRequest) (*google_protobuf5.Empty, error) - // Publish build tool events belonging to the same stream to a backend job - // using bidirectional streaming. - PublishBuildToolEventStream(PublishBuildEvent_PublishBuildToolEventStreamServer) error -} - -func RegisterPublishBuildEventServer(s *grpc.Server, srv PublishBuildEventServer) { - s.RegisterService(&_PublishBuildEvent_serviceDesc, srv) -} - -func _PublishBuildEvent_PublishLifecycleEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PublishLifecycleEventRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublishBuildEventServer).PublishLifecycleEvent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.build.v1.PublishBuildEvent/PublishLifecycleEvent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublishBuildEventServer).PublishLifecycleEvent(ctx, req.(*PublishLifecycleEventRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _PublishBuildEvent_PublishBuildToolEventStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(PublishBuildEventServer).PublishBuildToolEventStream(&publishBuildEventPublishBuildToolEventStreamServer{stream}) -} - -type PublishBuildEvent_PublishBuildToolEventStreamServer interface { - Send(*PublishBuildToolEventStreamResponse) error - Recv() (*OrderedBuildEvent, error) - grpc.ServerStream -} - -type publishBuildEventPublishBuildToolEventStreamServer struct { - grpc.ServerStream -} - -func (x *publishBuildEventPublishBuildToolEventStreamServer) Send(m *PublishBuildToolEventStreamResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *publishBuildEventPublishBuildToolEventStreamServer) Recv() (*OrderedBuildEvent, error) { - m := new(OrderedBuildEvent) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _PublishBuildEvent_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.build.v1.PublishBuildEvent", - HandlerType: (*PublishBuildEventServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "PublishLifecycleEvent", - Handler: _PublishBuildEvent_PublishLifecycleEvent_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "PublishBuildToolEventStream", - Handler: _PublishBuildEvent_PublishBuildToolEventStream_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/devtools/build/v1/publish_build_event.proto", -} - -func init() { proto.RegisterFile("google/devtools/build/v1/publish_build_event.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 666 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x6e, 0xd3, 0x4e, - 0x10, 0xfe, 0x6d, 0xd2, 0x56, 0xbf, 0x6c, 0xda, 0x94, 0x2e, 0x14, 0x4c, 0xda, 0xa2, 0xc8, 0x20, - 0x88, 0xa8, 0x64, 0xd3, 0x54, 0xe2, 0x50, 0x54, 0xfe, 0xa4, 0xe4, 0x10, 0x51, 0xa5, 0x95, 0x1b, - 0x71, 0x80, 0x83, 0xe5, 0xd8, 0xd3, 0x74, 0xa9, 0xe3, 0x35, 0xde, 0xb5, 0x51, 0xaf, 0xbc, 0x40, - 0x0f, 0x3c, 0x01, 0x77, 0x5e, 0x80, 0xe7, 0x80, 0x47, 0xe0, 0xc0, 0x23, 0x70, 0x44, 0xde, 0x75, - 0x90, 0x69, 0x70, 0x50, 0x73, 0xe0, 0xe6, 0xdd, 0x99, 0xf9, 0x66, 0xbe, 0x6f, 0x76, 0xc6, 0xb8, - 0x35, 0x64, 0x6c, 0xe8, 0x83, 0xe9, 0x41, 0x22, 0x18, 0xf3, 0xb9, 0x39, 0x88, 0xa9, 0xef, 0x99, - 0xc9, 0x96, 0x19, 0xc6, 0x03, 0x9f, 0xf2, 0x13, 0x5b, 0x5e, 0xd8, 0x90, 0x40, 0x20, 0x8c, 0x30, - 0x62, 0x82, 0x11, 0x4d, 0xc5, 0x18, 0xe3, 0x18, 0x43, 0xba, 0x18, 0xc9, 0x56, 0x7d, 0x3d, 0x43, - 0x73, 0x42, 0x6a, 0x3a, 0x41, 0xc0, 0x84, 0x23, 0x28, 0x0b, 0xb8, 0x8a, 0xab, 0x6f, 0x16, 0xe6, - 0xca, 0xe5, 0x18, 0x3b, 0xdf, 0xca, 0x9c, 0xe5, 0x69, 0x10, 0x1f, 0x9b, 0x5e, 0x1c, 0x49, 0xb4, - 0xcc, 0xbe, 0x76, 0xd1, 0x0e, 0xa3, 0x50, 0x9c, 0x29, 0xa3, 0xfe, 0xb1, 0x8c, 0xd7, 0x0f, 0x55, - 0xfd, 0xfb, 0xf4, 0x18, 0xdc, 0x33, 0xd7, 0x87, 0x4e, 0x8a, 0x6e, 0xc1, 0xdb, 0x18, 0xb8, 0x20, - 0x27, 0x78, 0x89, 0x43, 0x94, 0x50, 0x17, 0x6c, 0x1f, 0x12, 0xf0, 0x35, 0xd4, 0x40, 0xcd, 0x5a, - 0x6b, 0xcf, 0x28, 0xa2, 0x66, 0x4c, 0x83, 0x33, 0x8e, 0x14, 0xd6, 0x7e, 0x0a, 0x65, 0x2d, 0xf2, - 0xdc, 0x89, 0xec, 0xe3, 0x6a, 0x8e, 0x9d, 0x56, 0x6a, 0xa0, 0x66, 0xb5, 0xb5, 0x59, 0x9c, 0xe7, - 0x20, 0xf2, 0x20, 0x02, 0xaf, 0x9d, 0x9e, 0x55, 0x0e, 0x3c, 0xf8, 0xf5, 0x4d, 0x9e, 0xe2, 0x1a, - 0x17, 0x11, 0x38, 0x23, 0x5b, 0xd0, 0x11, 0xb0, 0x58, 0x68, 0x65, 0x09, 0x78, 0x73, 0x0c, 0x38, - 0x96, 0xc3, 0x78, 0x9e, 0xc9, 0x65, 0x2d, 0xa9, 0x80, 0xbe, 0xf2, 0x27, 0xdb, 0x78, 0x35, 0x60, - 0x82, 0x1e, 0x53, 0x57, 0x9a, 0xed, 0x53, 0x38, 0x7b, 0xc7, 0x22, 0x8f, 0x6b, 0x73, 0x8d, 0x72, - 0xb3, 0x62, 0x5d, 0xcb, 0x1b, 0x5f, 0x64, 0x36, 0xb2, 0x81, 0x71, 0x18, 0xb1, 0x37, 0xe0, 0x0a, - 0x9b, 0x7a, 0xda, 0x42, 0x03, 0x35, 0x2b, 0x56, 0x25, 0xbb, 0xe9, 0x7a, 0xfa, 0x36, 0x5e, 0xcc, - 0x2b, 0x40, 0x08, 0xae, 0xf5, 0x0e, 0x7a, 0xdd, 0x5e, 0xbf, 0x63, 0x3d, 0xdb, 0xeb, 0x77, 0x5f, - 0x76, 0xae, 0xfc, 0x47, 0x96, 0x71, 0x35, 0x7f, 0x81, 0xf4, 0x73, 0x84, 0x6f, 0x67, 0xa2, 0x4a, - 0xb2, 0x7d, 0xc6, 0x7c, 0x49, 0xf2, 0x48, 0xd6, 0x6b, 0x01, 0x0f, 0x59, 0xc0, 0x81, 0x3c, 0xc1, - 0x95, 0x8c, 0x32, 0xf5, 0x64, 0x9b, 0xaa, 0x2d, 0xbd, 0x58, 0x3e, 0x15, 0xdc, 0xf5, 0xac, 0xff, - 0x79, 0xf6, 0x45, 0xee, 0xe1, 0x65, 0x9e, 0xf6, 0x29, 0x70, 0xc1, 0x0e, 0xe2, 0xd1, 0x00, 0x22, - 0xd9, 0x85, 0xb2, 0x55, 0x1b, 0x5f, 0xf7, 0xe4, 0xad, 0xfe, 0x19, 0xe1, 0x95, 0x09, 0xf9, 0xff, - 0x5d, 0x7e, 0xb2, 0x83, 0xe7, 0xd5, 0x23, 0x51, 0x3d, 0xbd, 0x53, 0x9c, 0x25, 0xf7, 0x3a, 0x54, - 0x88, 0xfe, 0xbd, 0x84, 0xf5, 0xa9, 0x6a, 0xaa, 0x77, 0xbf, 0x37, 0x13, 0x99, 0x76, 0x49, 0x43, - 0x39, 0x42, 0x9b, 0x05, 0x84, 0xa4, 0xdb, 0x45, 0x52, 0x8f, 0x67, 0x20, 0x25, 0x81, 0x54, 0x18, - 0x79, 0x8d, 0xaf, 0x32, 0xd5, 0x93, 0xfc, 0x26, 0xd2, 0xe6, 0x2e, 0x3f, 0x47, 0x2b, 0x6c, 0xa2, - 0xb7, 0x85, 0xc3, 0x30, 0x5f, 0x3c, 0x0c, 0xad, 0xaf, 0x25, 0xbc, 0x92, 0x97, 0x5a, 0x41, 0x9d, - 0x23, 0xbc, 0xfa, 0xc7, 0x1d, 0x41, 0x1e, 0xce, 0xb6, 0x54, 0xea, 0xd7, 0x27, 0x66, 0xba, 0x93, - 0xae, 0x38, 0xfd, 0xee, 0xfb, 0x2f, 0xdf, 0x3e, 0x94, 0x1a, 0xfa, 0x5a, 0xba, 0x39, 0xfd, 0xdf, - 0x42, 0xf9, 0x4e, 0xb6, 0xb5, 0x77, 0xd0, 0x7d, 0xf2, 0x09, 0xe1, 0xb5, 0x29, 0x4f, 0x82, 0x5c, - 0x46, 0xbc, 0xfa, 0xee, 0x5f, 0x49, 0x4c, 0x1b, 0x62, 0x7d, 0x43, 0xd6, 0x7c, 0x43, 0x27, 0x69, - 0xcd, 0x70, 0xb1, 0xd4, 0x26, 0x7a, 0x80, 0xda, 0x21, 0x5e, 0x77, 0xd9, 0xa8, 0x30, 0x4d, 0x7b, - 0xb1, 0xed, 0xb8, 0xa7, 0x10, 0x78, 0x87, 0xa9, 0x1a, 0x87, 0xe8, 0xd5, 0x6e, 0xe6, 0x39, 0x64, - 0xbe, 0x13, 0x0c, 0x0d, 0x16, 0x0d, 0xcd, 0x21, 0x04, 0x52, 0x2b, 0x53, 0x99, 0x9c, 0x90, 0xf2, - 0xc9, 0x9f, 0xcd, 0x23, 0xf9, 0xf1, 0x03, 0xa1, 0xc1, 0x82, 0x74, 0xde, 0xfe, 0x19, 0x00, 0x00, - 0xff, 0xff, 0x85, 0x4c, 0x16, 0x72, 0x04, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/cloudbuild/v1/cloudbuild.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/cloudbuild/v1/cloudbuild.pb.go deleted file mode 100644 index 0b62fd0d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/cloudbuild/v1/cloudbuild.pb.go +++ /dev/null @@ -1,2592 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/cloudbuild/v1/cloudbuild.proto - -/* -Package cloudbuild is a generated protocol buffer package. - -It is generated from these files: - google/devtools/cloudbuild/v1/cloudbuild.proto - -It has these top-level messages: - RetryBuildRequest - RunBuildTriggerRequest - StorageSource - RepoSource - Source - BuiltImage - BuildStep - Volume - Results - Build - TimeSpan - BuildOperationMetadata - SourceProvenance - FileHashes - Hash - Secret - CreateBuildRequest - GetBuildRequest - ListBuildsRequest - ListBuildsResponse - CancelBuildRequest - BuildTrigger - CreateBuildTriggerRequest - GetBuildTriggerRequest - ListBuildTriggersRequest - ListBuildTriggersResponse - DeleteBuildTriggerRequest - UpdateBuildTriggerRequest - BuildOptions -*/ -package cloudbuild - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/cloud/audit" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf4 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf3 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf5 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Possible status of a build. -type Build_Status int32 - -const ( - // Status of the build is unknown. - Build_STATUS_UNKNOWN Build_Status = 0 - // Build is queued; work has not yet begun. - Build_QUEUED Build_Status = 1 - // Build is being executed. - Build_WORKING Build_Status = 2 - // Build finished successfully. - Build_SUCCESS Build_Status = 3 - // Build failed to complete successfully. - Build_FAILURE Build_Status = 4 - // Build failed due to an internal cause. - Build_INTERNAL_ERROR Build_Status = 5 - // Build took longer than was allowed. - Build_TIMEOUT Build_Status = 6 - // Build was canceled by a user. - Build_CANCELLED Build_Status = 7 -) - -var Build_Status_name = map[int32]string{ - 0: "STATUS_UNKNOWN", - 1: "QUEUED", - 2: "WORKING", - 3: "SUCCESS", - 4: "FAILURE", - 5: "INTERNAL_ERROR", - 6: "TIMEOUT", - 7: "CANCELLED", -} -var Build_Status_value = map[string]int32{ - "STATUS_UNKNOWN": 0, - "QUEUED": 1, - "WORKING": 2, - "SUCCESS": 3, - "FAILURE": 4, - "INTERNAL_ERROR": 5, - "TIMEOUT": 6, - "CANCELLED": 7, -} - -func (x Build_Status) String() string { - return proto.EnumName(Build_Status_name, int32(x)) -} -func (Build_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 0} } - -// Specifies the hash algorithm, if any. -type Hash_HashType int32 - -const ( - // No hash requested. - Hash_NONE Hash_HashType = 0 - // Use a sha256 hash. - Hash_SHA256 Hash_HashType = 1 -) - -var Hash_HashType_name = map[int32]string{ - 0: "NONE", - 1: "SHA256", -} -var Hash_HashType_value = map[string]int32{ - "NONE": 0, - "SHA256": 1, -} - -func (x Hash_HashType) String() string { - return proto.EnumName(Hash_HashType_name, int32(x)) -} -func (Hash_HashType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{14, 0} } - -// Specifies the manner in which the build should be verified, if at all. -type BuildOptions_VerifyOption int32 - -const ( - // Not a verifiable build. (default) - BuildOptions_NOT_VERIFIED BuildOptions_VerifyOption = 0 - // Verified build. - BuildOptions_VERIFIED BuildOptions_VerifyOption = 1 -) - -var BuildOptions_VerifyOption_name = map[int32]string{ - 0: "NOT_VERIFIED", - 1: "VERIFIED", -} -var BuildOptions_VerifyOption_value = map[string]int32{ - "NOT_VERIFIED": 0, - "VERIFIED": 1, -} - -func (x BuildOptions_VerifyOption) String() string { - return proto.EnumName(BuildOptions_VerifyOption_name, int32(x)) -} -func (BuildOptions_VerifyOption) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 0} -} - -// Supported VM sizes. -type BuildOptions_MachineType int32 - -const ( - // Standard machine type. - BuildOptions_UNSPECIFIED BuildOptions_MachineType = 0 - // Highcpu machine with 8 CPUs. - BuildOptions_N1_HIGHCPU_8 BuildOptions_MachineType = 1 - // Highcpu machine with 32 CPUs. - BuildOptions_N1_HIGHCPU_32 BuildOptions_MachineType = 2 -) - -var BuildOptions_MachineType_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "N1_HIGHCPU_8", - 2: "N1_HIGHCPU_32", -} -var BuildOptions_MachineType_value = map[string]int32{ - "UNSPECIFIED": 0, - "N1_HIGHCPU_8": 1, - "N1_HIGHCPU_32": 2, -} - -func (x BuildOptions_MachineType) String() string { - return proto.EnumName(BuildOptions_MachineType_name, int32(x)) -} -func (BuildOptions_MachineType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{28, 1} } - -// Specifies the behavior when there is an error in the substitution checks. -type BuildOptions_SubstitutionOption int32 - -const ( - // Fails the build if error in substitutions checks, like missing - // a substitution in the template or in the map. - BuildOptions_MUST_MATCH BuildOptions_SubstitutionOption = 0 - // Do not fail the build if error in substitutions checks. - BuildOptions_ALLOW_LOOSE BuildOptions_SubstitutionOption = 1 -) - -var BuildOptions_SubstitutionOption_name = map[int32]string{ - 0: "MUST_MATCH", - 1: "ALLOW_LOOSE", -} -var BuildOptions_SubstitutionOption_value = map[string]int32{ - "MUST_MATCH": 0, - "ALLOW_LOOSE": 1, -} - -func (x BuildOptions_SubstitutionOption) String() string { - return proto.EnumName(BuildOptions_SubstitutionOption_name, int32(x)) -} -func (BuildOptions_SubstitutionOption) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 2} -} - -// Specifies the behavior when writing build logs to Google Cloud Storage. -type BuildOptions_LogStreamingOption int32 - -const ( - // Service may automatically determine build log streaming behavior. - BuildOptions_STREAM_DEFAULT BuildOptions_LogStreamingOption = 0 - // Build logs should be streamed to Google Cloud Storage. - BuildOptions_STREAM_ON BuildOptions_LogStreamingOption = 1 - // Build logs should not be streamed to Google Cloud Storage; they will be - // written when the build is completed. - BuildOptions_STREAM_OFF BuildOptions_LogStreamingOption = 2 -) - -var BuildOptions_LogStreamingOption_name = map[int32]string{ - 0: "STREAM_DEFAULT", - 1: "STREAM_ON", - 2: "STREAM_OFF", -} -var BuildOptions_LogStreamingOption_value = map[string]int32{ - "STREAM_DEFAULT": 0, - "STREAM_ON": 1, - "STREAM_OFF": 2, -} - -func (x BuildOptions_LogStreamingOption) String() string { - return proto.EnumName(BuildOptions_LogStreamingOption_name, int32(x)) -} -func (BuildOptions_LogStreamingOption) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 3} -} - -// RetryBuildRequest specifies a build to retry. -type RetryBuildRequest struct { - // ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Build ID of the original build. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` -} - -func (m *RetryBuildRequest) Reset() { *m = RetryBuildRequest{} } -func (m *RetryBuildRequest) String() string { return proto.CompactTextString(m) } -func (*RetryBuildRequest) ProtoMessage() {} -func (*RetryBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *RetryBuildRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RetryBuildRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -// RunBuildTriggerRequest specifies a build trigger to run and the source to -// use. -type RunBuildTriggerRequest struct { - // ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // ID of the trigger. - TriggerId string `protobuf:"bytes,2,opt,name=trigger_id,json=triggerId" json:"trigger_id,omitempty"` - // Source to build against this trigger. - Source *RepoSource `protobuf:"bytes,3,opt,name=source" json:"source,omitempty"` -} - -func (m *RunBuildTriggerRequest) Reset() { *m = RunBuildTriggerRequest{} } -func (m *RunBuildTriggerRequest) String() string { return proto.CompactTextString(m) } -func (*RunBuildTriggerRequest) ProtoMessage() {} -func (*RunBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *RunBuildTriggerRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RunBuildTriggerRequest) GetTriggerId() string { - if m != nil { - return m.TriggerId - } - return "" -} - -func (m *RunBuildTriggerRequest) GetSource() *RepoSource { - if m != nil { - return m.Source - } - return nil -} - -// StorageSource describes the location of the source in an archive file in -// Google Cloud Storage. -type StorageSource struct { - // Google Cloud Storage bucket containing source (see - // [Bucket Name - // Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). - Bucket string `protobuf:"bytes,1,opt,name=bucket" json:"bucket,omitempty"` - // Google Cloud Storage object containing source. - // - // This object must be a gzipped archive file (.tar.gz) containing source to - // build. - Object string `protobuf:"bytes,2,opt,name=object" json:"object,omitempty"` - // Google Cloud Storage generation for the object. If the generation is - // omitted, the latest generation will be used. - Generation int64 `protobuf:"varint,3,opt,name=generation" json:"generation,omitempty"` -} - -func (m *StorageSource) Reset() { *m = StorageSource{} } -func (m *StorageSource) String() string { return proto.CompactTextString(m) } -func (*StorageSource) ProtoMessage() {} -func (*StorageSource) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *StorageSource) GetBucket() string { - if m != nil { - return m.Bucket - } - return "" -} - -func (m *StorageSource) GetObject() string { - if m != nil { - return m.Object - } - return "" -} - -func (m *StorageSource) GetGeneration() int64 { - if m != nil { - return m.Generation - } - return 0 -} - -// RepoSource describes the location of the source in a Google Cloud Source -// Repository. -type RepoSource struct { - // ID of the project that owns the repo. If omitted, the project ID requesting - // the build is assumed. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Name of the repo. If omitted, the name "default" is assumed. - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName" json:"repo_name,omitempty"` - // A revision within the source repository must be specified in - // one of these ways. - // - // Types that are valid to be assigned to Revision: - // *RepoSource_BranchName - // *RepoSource_TagName - // *RepoSource_CommitSha - Revision isRepoSource_Revision `protobuf_oneof:"revision"` - // Directory, relative to the source root, in which to run the build. - Dir string `protobuf:"bytes,7,opt,name=dir" json:"dir,omitempty"` -} - -func (m *RepoSource) Reset() { *m = RepoSource{} } -func (m *RepoSource) String() string { return proto.CompactTextString(m) } -func (*RepoSource) ProtoMessage() {} -func (*RepoSource) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -type isRepoSource_Revision interface { - isRepoSource_Revision() -} - -type RepoSource_BranchName struct { - BranchName string `protobuf:"bytes,3,opt,name=branch_name,json=branchName,oneof"` -} -type RepoSource_TagName struct { - TagName string `protobuf:"bytes,4,opt,name=tag_name,json=tagName,oneof"` -} -type RepoSource_CommitSha struct { - CommitSha string `protobuf:"bytes,5,opt,name=commit_sha,json=commitSha,oneof"` -} - -func (*RepoSource_BranchName) isRepoSource_Revision() {} -func (*RepoSource_TagName) isRepoSource_Revision() {} -func (*RepoSource_CommitSha) isRepoSource_Revision() {} - -func (m *RepoSource) GetRevision() isRepoSource_Revision { - if m != nil { - return m.Revision - } - return nil -} - -func (m *RepoSource) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RepoSource) GetRepoName() string { - if m != nil { - return m.RepoName - } - return "" -} - -func (m *RepoSource) GetBranchName() string { - if x, ok := m.GetRevision().(*RepoSource_BranchName); ok { - return x.BranchName - } - return "" -} - -func (m *RepoSource) GetTagName() string { - if x, ok := m.GetRevision().(*RepoSource_TagName); ok { - return x.TagName - } - return "" -} - -func (m *RepoSource) GetCommitSha() string { - if x, ok := m.GetRevision().(*RepoSource_CommitSha); ok { - return x.CommitSha - } - return "" -} - -func (m *RepoSource) GetDir() string { - if m != nil { - return m.Dir - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RepoSource) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RepoSource_OneofMarshaler, _RepoSource_OneofUnmarshaler, _RepoSource_OneofSizer, []interface{}{ - (*RepoSource_BranchName)(nil), - (*RepoSource_TagName)(nil), - (*RepoSource_CommitSha)(nil), - } -} - -func _RepoSource_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RepoSource) - // revision - switch x := m.Revision.(type) { - case *RepoSource_BranchName: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.BranchName) - case *RepoSource_TagName: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.TagName) - case *RepoSource_CommitSha: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.CommitSha) - case nil: - default: - return fmt.Errorf("RepoSource.Revision has unexpected type %T", x) - } - return nil -} - -func _RepoSource_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RepoSource) - switch tag { - case 3: // revision.branch_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &RepoSource_BranchName{x} - return true, err - case 4: // revision.tag_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &RepoSource_TagName{x} - return true, err - case 5: // revision.commit_sha - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &RepoSource_CommitSha{x} - return true, err - default: - return false, nil - } -} - -func _RepoSource_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RepoSource) - // revision - switch x := m.Revision.(type) { - case *RepoSource_BranchName: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.BranchName))) - n += len(x.BranchName) - case *RepoSource_TagName: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.TagName))) - n += len(x.TagName) - case *RepoSource_CommitSha: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.CommitSha))) - n += len(x.CommitSha) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Source describes the location of the source in a supported storage -// service. -type Source struct { - // Describes location of source. - // - // Types that are valid to be assigned to Source: - // *Source_StorageSource - // *Source_RepoSource - Source isSource_Source `protobuf_oneof:"source"` -} - -func (m *Source) Reset() { *m = Source{} } -func (m *Source) String() string { return proto.CompactTextString(m) } -func (*Source) ProtoMessage() {} -func (*Source) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -type isSource_Source interface { - isSource_Source() -} - -type Source_StorageSource struct { - StorageSource *StorageSource `protobuf:"bytes,2,opt,name=storage_source,json=storageSource,oneof"` -} -type Source_RepoSource struct { - RepoSource *RepoSource `protobuf:"bytes,3,opt,name=repo_source,json=repoSource,oneof"` -} - -func (*Source_StorageSource) isSource_Source() {} -func (*Source_RepoSource) isSource_Source() {} - -func (m *Source) GetSource() isSource_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *Source) GetStorageSource() *StorageSource { - if x, ok := m.GetSource().(*Source_StorageSource); ok { - return x.StorageSource - } - return nil -} - -func (m *Source) GetRepoSource() *RepoSource { - if x, ok := m.GetSource().(*Source_RepoSource); ok { - return x.RepoSource - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Source) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Source_OneofMarshaler, _Source_OneofUnmarshaler, _Source_OneofSizer, []interface{}{ - (*Source_StorageSource)(nil), - (*Source_RepoSource)(nil), - } -} - -func _Source_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Source) - // source - switch x := m.Source.(type) { - case *Source_StorageSource: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StorageSource); err != nil { - return err - } - case *Source_RepoSource: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RepoSource); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Source.Source has unexpected type %T", x) - } - return nil -} - -func _Source_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Source) - switch tag { - case 2: // source.storage_source - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StorageSource) - err := b.DecodeMessage(msg) - m.Source = &Source_StorageSource{msg} - return true, err - case 3: // source.repo_source - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RepoSource) - err := b.DecodeMessage(msg) - m.Source = &Source_RepoSource{msg} - return true, err - default: - return false, nil - } -} - -func _Source_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Source) - // source - switch x := m.Source.(type) { - case *Source_StorageSource: - s := proto.Size(x.StorageSource) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Source_RepoSource: - s := proto.Size(x.RepoSource) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// BuiltImage describes an image built by the pipeline. -type BuiltImage struct { - // Name used to push the container image to Google Container Registry, as - // presented to `docker push`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Docker Registry 2.0 digest. - Digest string `protobuf:"bytes,3,opt,name=digest" json:"digest,omitempty"` - // Stores timing information for pushing the specified image. - PushTiming *TimeSpan `protobuf:"bytes,4,opt,name=push_timing,json=pushTiming" json:"push_timing,omitempty"` -} - -func (m *BuiltImage) Reset() { *m = BuiltImage{} } -func (m *BuiltImage) String() string { return proto.CompactTextString(m) } -func (*BuiltImage) ProtoMessage() {} -func (*BuiltImage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *BuiltImage) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *BuiltImage) GetDigest() string { - if m != nil { - return m.Digest - } - return "" -} - -func (m *BuiltImage) GetPushTiming() *TimeSpan { - if m != nil { - return m.PushTiming - } - return nil -} - -// BuildStep describes a step to perform in the build pipeline. -type BuildStep struct { - // The name of the container image that will run this particular build step. - // - // If the image is already available in the host's Docker daemon's cache, it - // will be run directly. If not, the host will attempt to pull the image - // first, using the builder service account's credentials if necessary. - // - // The Docker daemon's cache will already have the latest versions of all of - // the officially supported build steps - // ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). - // The Docker daemon will also have cached many of the layers for some popular - // images, like "ubuntu", "debian", but they will be refreshed at the time you - // attempt to use them. - // - // If you built an image in a previous build step, it will be stored in the - // host's Docker daemon's cache and is available to use as the name for a - // later build step. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A list of environment variable definitions to be used when running a step. - // - // The elements are of the form "KEY=VALUE" for the environment variable "KEY" - // being given the value "VALUE". - Env []string `protobuf:"bytes,2,rep,name=env" json:"env,omitempty"` - // A list of arguments that will be presented to the step when it is started. - // - // If the image used to run the step's container has an entrypoint, these args - // will be used as arguments to that entrypoint. If the image does not define - // an entrypoint, the first element in args will be used as the entrypoint, - // and the remainder will be used as arguments. - Args []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"` - // Working directory (relative to project source root) to use when running - // this operation's container. - Dir string `protobuf:"bytes,4,opt,name=dir" json:"dir,omitempty"` - // Optional unique identifier for this build step, used in wait_for to - // reference this build step as a dependency. - Id string `protobuf:"bytes,5,opt,name=id" json:"id,omitempty"` - // The ID(s) of the step(s) that this build step depends on. - // This build step will not start until all the build steps in wait_for - // have completed successfully. If wait_for is empty, this build step will - // start when all previous build steps in the Build.Steps list have completed - // successfully. - WaitFor []string `protobuf:"bytes,6,rep,name=wait_for,json=waitFor" json:"wait_for,omitempty"` - // Optional entrypoint to be used instead of the build step image's default - // If unset, the image's default will be used. - Entrypoint string `protobuf:"bytes,7,opt,name=entrypoint" json:"entrypoint,omitempty"` - // A list of environment variables which are encrypted using a Cloud KMS - // crypto key. These values must be specified in the build's secrets. - SecretEnv []string `protobuf:"bytes,8,rep,name=secret_env,json=secretEnv" json:"secret_env,omitempty"` - // List of volumes to mount into the build step. - // - // Each volume will be created as an empty volume prior to execution of the - // build step. Upon completion of the build, volumes and their contents will - // be discarded. - // - // Using a named volume in only one step is not valid as it is indicative - // of a mis-configured build request. - Volumes []*Volume `protobuf:"bytes,9,rep,name=volumes" json:"volumes,omitempty"` - // Stores timing information for executing this build step. - Timing *TimeSpan `protobuf:"bytes,10,opt,name=timing" json:"timing,omitempty"` -} - -func (m *BuildStep) Reset() { *m = BuildStep{} } -func (m *BuildStep) String() string { return proto.CompactTextString(m) } -func (*BuildStep) ProtoMessage() {} -func (*BuildStep) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *BuildStep) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *BuildStep) GetEnv() []string { - if m != nil { - return m.Env - } - return nil -} - -func (m *BuildStep) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *BuildStep) GetDir() string { - if m != nil { - return m.Dir - } - return "" -} - -func (m *BuildStep) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *BuildStep) GetWaitFor() []string { - if m != nil { - return m.WaitFor - } - return nil -} - -func (m *BuildStep) GetEntrypoint() string { - if m != nil { - return m.Entrypoint - } - return "" -} - -func (m *BuildStep) GetSecretEnv() []string { - if m != nil { - return m.SecretEnv - } - return nil -} - -func (m *BuildStep) GetVolumes() []*Volume { - if m != nil { - return m.Volumes - } - return nil -} - -func (m *BuildStep) GetTiming() *TimeSpan { - if m != nil { - return m.Timing - } - return nil -} - -// Volume describes a Docker container volume which is mounted into build steps -// in order to persist files across build step execution. -type Volume struct { - // Name of the volume to mount. - // - // Volume names must be unique per build step and must be valid names for - // Docker volumes. Each named volume must be used by at least two build steps. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Path at which to mount the volume. - // - // Paths must be absolute and cannot conflict with other volume paths on the - // same build step or with certain reserved volume paths. - Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` -} - -func (m *Volume) Reset() { *m = Volume{} } -func (m *Volume) String() string { return proto.CompactTextString(m) } -func (*Volume) ProtoMessage() {} -func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *Volume) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Volume) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -// Results describes the artifacts created by the build pipeline. -type Results struct { - // Images that were built as a part of the build. - Images []*BuiltImage `protobuf:"bytes,2,rep,name=images" json:"images,omitempty"` - // List of build step digests, in order corresponding to build step indices. - BuildStepImages []string `protobuf:"bytes,3,rep,name=build_step_images,json=buildStepImages" json:"build_step_images,omitempty"` -} - -func (m *Results) Reset() { *m = Results{} } -func (m *Results) String() string { return proto.CompactTextString(m) } -func (*Results) ProtoMessage() {} -func (*Results) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *Results) GetImages() []*BuiltImage { - if m != nil { - return m.Images - } - return nil -} - -func (m *Results) GetBuildStepImages() []string { - if m != nil { - return m.BuildStepImages - } - return nil -} - -// A build resource in the Container Builder API. -// -// At a high level, a Build describes where to find source code, how to build -// it (for example, the builder image to run on the source), and what tag to -// apply to the built image when it is pushed to Google Container Registry. -// -// Fields can include the following variables which will be expanded when the -// build is created: -// -// - $PROJECT_ID: the project ID of the build. -// - $BUILD_ID: the autogenerated ID of the build. -// - $REPO_NAME: the source repository name specified by RepoSource. -// - $BRANCH_NAME: the branch name specified by RepoSource. -// - $TAG_NAME: the tag name specified by RepoSource. -// - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or -// resolved from the specified branch or tag. -// - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA. -type Build struct { - // Unique identifier of the build. - // @OutputOnly - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // ID of the project. - // @OutputOnly. - ProjectId string `protobuf:"bytes,16,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Status of the build. - // @OutputOnly - Status Build_Status `protobuf:"varint,2,opt,name=status,enum=google.devtools.cloudbuild.v1.Build_Status" json:"status,omitempty"` - // Customer-readable message about the current status. - // @OutputOnly - StatusDetail string `protobuf:"bytes,24,opt,name=status_detail,json=statusDetail" json:"status_detail,omitempty"` - // Describes where to find the source files to build. - Source *Source `protobuf:"bytes,3,opt,name=source" json:"source,omitempty"` - // Describes the operations to be performed on the workspace. - Steps []*BuildStep `protobuf:"bytes,11,rep,name=steps" json:"steps,omitempty"` - // Results of the build. - // @OutputOnly - Results *Results `protobuf:"bytes,10,opt,name=results" json:"results,omitempty"` - // Time at which the request to create the build was received. - // @OutputOnly - CreateTime *google_protobuf5.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Time at which execution of the build was started. - // @OutputOnly - StartTime *google_protobuf5.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time at which execution of the build was finished. - // - // The difference between finish_time and start_time is the duration of the - // build's execution. - // @OutputOnly - FinishTime *google_protobuf5.Timestamp `protobuf:"bytes,8,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` - // Amount of time that this build should be allowed to run, to second - // granularity. If this amount of time elapses, work on the build will cease - // and the build status will be TIMEOUT. - // - // Default time is ten minutes. - Timeout *google_protobuf4.Duration `protobuf:"bytes,12,opt,name=timeout" json:"timeout,omitempty"` - // A list of images to be pushed upon the successful completion of all build - // steps. - // - // The images will be pushed using the builder service account's credentials. - // - // The digests of the pushed images will be stored in the Build resource's - // results field. - // - // If any of the images fail to be pushed, the build is marked FAILURE. - Images []string `protobuf:"bytes,13,rep,name=images" json:"images,omitempty"` - // Google Cloud Storage bucket where logs should be written (see - // [Bucket Name - // Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). - // Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`. - LogsBucket string `protobuf:"bytes,19,opt,name=logs_bucket,json=logsBucket" json:"logs_bucket,omitempty"` - // A permanent fixed identifier for source. - // @OutputOnly - SourceProvenance *SourceProvenance `protobuf:"bytes,21,opt,name=source_provenance,json=sourceProvenance" json:"source_provenance,omitempty"` - // The ID of the BuildTrigger that triggered this build, if it was - // triggered automatically. - // @OutputOnly - BuildTriggerId string `protobuf:"bytes,22,opt,name=build_trigger_id,json=buildTriggerId" json:"build_trigger_id,omitempty"` - // Special options for this build. - Options *BuildOptions `protobuf:"bytes,23,opt,name=options" json:"options,omitempty"` - // URL to logs for this build in Google Cloud Logging. - // @OutputOnly - LogUrl string `protobuf:"bytes,25,opt,name=log_url,json=logUrl" json:"log_url,omitempty"` - // Substitutions data for Build resource. - Substitutions map[string]string `protobuf:"bytes,29,rep,name=substitutions" json:"substitutions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Tags for annotation of a Build. These are not docker tags. - Tags []string `protobuf:"bytes,31,rep,name=tags" json:"tags,omitempty"` - // Secrets to decrypt using Cloud KMS. - Secrets []*Secret `protobuf:"bytes,32,rep,name=secrets" json:"secrets,omitempty"` - // Stores timing information for phases of the build. - // Valid keys are: - // - BUILD: time to execute all build steps - // - PUSH: time to push all specified images. - // - FETCHSOURCE: time to fetch source. - // If the build does not specify source, or does not specify images, - // these keys will not be included. - Timing map[string]*TimeSpan `protobuf:"bytes,33,rep,name=timing" json:"timing,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Build) Reset() { *m = Build{} } -func (m *Build) String() string { return proto.CompactTextString(m) } -func (*Build) ProtoMessage() {} -func (*Build) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *Build) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Build) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *Build) GetStatus() Build_Status { - if m != nil { - return m.Status - } - return Build_STATUS_UNKNOWN -} - -func (m *Build) GetStatusDetail() string { - if m != nil { - return m.StatusDetail - } - return "" -} - -func (m *Build) GetSource() *Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *Build) GetSteps() []*BuildStep { - if m != nil { - return m.Steps - } - return nil -} - -func (m *Build) GetResults() *Results { - if m != nil { - return m.Results - } - return nil -} - -func (m *Build) GetCreateTime() *google_protobuf5.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Build) GetStartTime() *google_protobuf5.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *Build) GetFinishTime() *google_protobuf5.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -func (m *Build) GetTimeout() *google_protobuf4.Duration { - if m != nil { - return m.Timeout - } - return nil -} - -func (m *Build) GetImages() []string { - if m != nil { - return m.Images - } - return nil -} - -func (m *Build) GetLogsBucket() string { - if m != nil { - return m.LogsBucket - } - return "" -} - -func (m *Build) GetSourceProvenance() *SourceProvenance { - if m != nil { - return m.SourceProvenance - } - return nil -} - -func (m *Build) GetBuildTriggerId() string { - if m != nil { - return m.BuildTriggerId - } - return "" -} - -func (m *Build) GetOptions() *BuildOptions { - if m != nil { - return m.Options - } - return nil -} - -func (m *Build) GetLogUrl() string { - if m != nil { - return m.LogUrl - } - return "" -} - -func (m *Build) GetSubstitutions() map[string]string { - if m != nil { - return m.Substitutions - } - return nil -} - -func (m *Build) GetTags() []string { - if m != nil { - return m.Tags - } - return nil -} - -func (m *Build) GetSecrets() []*Secret { - if m != nil { - return m.Secrets - } - return nil -} - -func (m *Build) GetTiming() map[string]*TimeSpan { - if m != nil { - return m.Timing - } - return nil -} - -// Stores start and end times for a build execution phase. -type TimeSpan struct { - // Start of time span. - StartTime *google_protobuf5.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // End of time span. - EndTime *google_protobuf5.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *TimeSpan) Reset() { *m = TimeSpan{} } -func (m *TimeSpan) String() string { return proto.CompactTextString(m) } -func (*TimeSpan) ProtoMessage() {} -func (*TimeSpan) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *TimeSpan) GetStartTime() *google_protobuf5.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *TimeSpan) GetEndTime() *google_protobuf5.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -// Metadata for build operations. -type BuildOperationMetadata struct { - // The build that the operation is tracking. - Build *Build `protobuf:"bytes,1,opt,name=build" json:"build,omitempty"` -} - -func (m *BuildOperationMetadata) Reset() { *m = BuildOperationMetadata{} } -func (m *BuildOperationMetadata) String() string { return proto.CompactTextString(m) } -func (*BuildOperationMetadata) ProtoMessage() {} -func (*BuildOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *BuildOperationMetadata) GetBuild() *Build { - if m != nil { - return m.Build - } - return nil -} - -// Provenance of the source. Ways to find the original source, or verify that -// some source was used for this build. -type SourceProvenance struct { - // A copy of the build's source.storage_source, if exists, with any - // generations resolved. - ResolvedStorageSource *StorageSource `protobuf:"bytes,3,opt,name=resolved_storage_source,json=resolvedStorageSource" json:"resolved_storage_source,omitempty"` - // A copy of the build's source.repo_source, if exists, with any - // revisions resolved. - ResolvedRepoSource *RepoSource `protobuf:"bytes,6,opt,name=resolved_repo_source,json=resolvedRepoSource" json:"resolved_repo_source,omitempty"` - // Hash(es) of the build source, which can be used to verify that the original - // source integrity was maintained in the build. Note that FileHashes will - // only be populated if BuildOptions has requested a SourceProvenanceHash. - // - // The keys to this map are file paths used as build source and the values - // contain the hash values for those files. - // - // If the build source came in a single package such as a gzipped tarfile - // (.tar.gz), the FileHash will be for the single path to that file. - // @OutputOnly - FileHashes map[string]*FileHashes `protobuf:"bytes,4,rep,name=file_hashes,json=fileHashes" json:"file_hashes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *SourceProvenance) Reset() { *m = SourceProvenance{} } -func (m *SourceProvenance) String() string { return proto.CompactTextString(m) } -func (*SourceProvenance) ProtoMessage() {} -func (*SourceProvenance) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *SourceProvenance) GetResolvedStorageSource() *StorageSource { - if m != nil { - return m.ResolvedStorageSource - } - return nil -} - -func (m *SourceProvenance) GetResolvedRepoSource() *RepoSource { - if m != nil { - return m.ResolvedRepoSource - } - return nil -} - -func (m *SourceProvenance) GetFileHashes() map[string]*FileHashes { - if m != nil { - return m.FileHashes - } - return nil -} - -// Container message for hashes of byte content of files, used in -// SourceProvenance messages to verify integrity of source input to the build. -type FileHashes struct { - // Collection of file hashes. - FileHash []*Hash `protobuf:"bytes,1,rep,name=file_hash,json=fileHash" json:"file_hash,omitempty"` -} - -func (m *FileHashes) Reset() { *m = FileHashes{} } -func (m *FileHashes) String() string { return proto.CompactTextString(m) } -func (*FileHashes) ProtoMessage() {} -func (*FileHashes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *FileHashes) GetFileHash() []*Hash { - if m != nil { - return m.FileHash - } - return nil -} - -// Container message for hash values. -type Hash struct { - // The type of hash that was performed. - Type Hash_HashType `protobuf:"varint,1,opt,name=type,enum=google.devtools.cloudbuild.v1.Hash_HashType" json:"type,omitempty"` - // The hash value. - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *Hash) Reset() { *m = Hash{} } -func (m *Hash) String() string { return proto.CompactTextString(m) } -func (*Hash) ProtoMessage() {} -func (*Hash) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *Hash) GetType() Hash_HashType { - if m != nil { - return m.Type - } - return Hash_NONE -} - -func (m *Hash) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -// Secret pairs a set of secret environment variables containing encrypted -// values with the Cloud KMS key to use to decrypt the value. -type Secret struct { - // Cloud KMS key name to use to decrypt these envs. - KmsKeyName string `protobuf:"bytes,1,opt,name=kms_key_name,json=kmsKeyName" json:"kms_key_name,omitempty"` - // Map of environment variable name to its encrypted value. - // - // Secret environment variables must be unique across all of a build's - // secrets, and must be used by at least one build step. Values can be at most - // 1 KB in size. There can be at most ten secret values across all of a - // build's secrets. - SecretEnv map[string][]byte `protobuf:"bytes,3,rep,name=secret_env,json=secretEnv" json:"secret_env,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (m *Secret) Reset() { *m = Secret{} } -func (m *Secret) String() string { return proto.CompactTextString(m) } -func (*Secret) ProtoMessage() {} -func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *Secret) GetKmsKeyName() string { - if m != nil { - return m.KmsKeyName - } - return "" -} - -func (m *Secret) GetSecretEnv() map[string][]byte { - if m != nil { - return m.SecretEnv - } - return nil -} - -// Request to create a new build. -type CreateBuildRequest struct { - // ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Build resource to create. - Build *Build `protobuf:"bytes,2,opt,name=build" json:"build,omitempty"` -} - -func (m *CreateBuildRequest) Reset() { *m = CreateBuildRequest{} } -func (m *CreateBuildRequest) String() string { return proto.CompactTextString(m) } -func (*CreateBuildRequest) ProtoMessage() {} -func (*CreateBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *CreateBuildRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateBuildRequest) GetBuild() *Build { - if m != nil { - return m.Build - } - return nil -} - -// Request to get a build. -type GetBuildRequest struct { - // ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // ID of the build. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` -} - -func (m *GetBuildRequest) Reset() { *m = GetBuildRequest{} } -func (m *GetBuildRequest) String() string { return proto.CompactTextString(m) } -func (*GetBuildRequest) ProtoMessage() {} -func (*GetBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *GetBuildRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetBuildRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -// Request to list builds. -type ListBuildsRequest struct { - // ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Number of results to return in the list. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Token to provide to skip to a particular spot in the list. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The raw filter text to constrain the results. - Filter string `protobuf:"bytes,8,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListBuildsRequest) Reset() { *m = ListBuildsRequest{} } -func (m *ListBuildsRequest) String() string { return proto.CompactTextString(m) } -func (*ListBuildsRequest) ProtoMessage() {} -func (*ListBuildsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *ListBuildsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListBuildsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListBuildsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListBuildsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// Response including listed builds. -type ListBuildsResponse struct { - // Builds will be sorted by create_time, descending. - Builds []*Build `protobuf:"bytes,1,rep,name=builds" json:"builds,omitempty"` - // Token to receive the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListBuildsResponse) Reset() { *m = ListBuildsResponse{} } -func (m *ListBuildsResponse) String() string { return proto.CompactTextString(m) } -func (*ListBuildsResponse) ProtoMessage() {} -func (*ListBuildsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *ListBuildsResponse) GetBuilds() []*Build { - if m != nil { - return m.Builds - } - return nil -} - -func (m *ListBuildsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request to cancel an ongoing build. -type CancelBuildRequest struct { - // ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // ID of the build. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` -} - -func (m *CancelBuildRequest) Reset() { *m = CancelBuildRequest{} } -func (m *CancelBuildRequest) String() string { return proto.CompactTextString(m) } -func (*CancelBuildRequest) ProtoMessage() {} -func (*CancelBuildRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *CancelBuildRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CancelBuildRequest) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -// Configuration for an automated build in response to source repository -// changes. -type BuildTrigger struct { - // Unique identifier of the trigger. - // - // @OutputOnly - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // Human-readable description of this trigger. - Description string `protobuf:"bytes,10,opt,name=description" json:"description,omitempty"` - // Template describing the types of source changes to trigger a build. - // - // Branch and tag names in trigger templates are interpreted as regular - // expressions. Any branch or tag change that matches that regular expression - // will trigger a build. - TriggerTemplate *RepoSource `protobuf:"bytes,7,opt,name=trigger_template,json=triggerTemplate" json:"trigger_template,omitempty"` - // Template describing the Build request to make when the trigger is matched. - // - // Types that are valid to be assigned to BuildTemplate: - // *BuildTrigger_Build - // *BuildTrigger_Filename - BuildTemplate isBuildTrigger_BuildTemplate `protobuf_oneof:"build_template"` - // Time when the trigger was created. - // - // @OutputOnly - CreateTime *google_protobuf5.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // If true, the trigger will never result in a build. - Disabled bool `protobuf:"varint,9,opt,name=disabled" json:"disabled,omitempty"` - // Substitutions data for Build resource. - Substitutions map[string]string `protobuf:"bytes,11,rep,name=substitutions" json:"substitutions,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *BuildTrigger) Reset() { *m = BuildTrigger{} } -func (m *BuildTrigger) String() string { return proto.CompactTextString(m) } -func (*BuildTrigger) ProtoMessage() {} -func (*BuildTrigger) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -type isBuildTrigger_BuildTemplate interface { - isBuildTrigger_BuildTemplate() -} - -type BuildTrigger_Build struct { - Build *Build `protobuf:"bytes,4,opt,name=build,oneof"` -} -type BuildTrigger_Filename struct { - Filename string `protobuf:"bytes,8,opt,name=filename,oneof"` -} - -func (*BuildTrigger_Build) isBuildTrigger_BuildTemplate() {} -func (*BuildTrigger_Filename) isBuildTrigger_BuildTemplate() {} - -func (m *BuildTrigger) GetBuildTemplate() isBuildTrigger_BuildTemplate { - if m != nil { - return m.BuildTemplate - } - return nil -} - -func (m *BuildTrigger) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *BuildTrigger) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *BuildTrigger) GetTriggerTemplate() *RepoSource { - if m != nil { - return m.TriggerTemplate - } - return nil -} - -func (m *BuildTrigger) GetBuild() *Build { - if x, ok := m.GetBuildTemplate().(*BuildTrigger_Build); ok { - return x.Build - } - return nil -} - -func (m *BuildTrigger) GetFilename() string { - if x, ok := m.GetBuildTemplate().(*BuildTrigger_Filename); ok { - return x.Filename - } - return "" -} - -func (m *BuildTrigger) GetCreateTime() *google_protobuf5.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *BuildTrigger) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -func (m *BuildTrigger) GetSubstitutions() map[string]string { - if m != nil { - return m.Substitutions - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*BuildTrigger) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _BuildTrigger_OneofMarshaler, _BuildTrigger_OneofUnmarshaler, _BuildTrigger_OneofSizer, []interface{}{ - (*BuildTrigger_Build)(nil), - (*BuildTrigger_Filename)(nil), - } -} - -func _BuildTrigger_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*BuildTrigger) - // build_template - switch x := m.BuildTemplate.(type) { - case *BuildTrigger_Build: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Build); err != nil { - return err - } - case *BuildTrigger_Filename: - b.EncodeVarint(8<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Filename) - case nil: - default: - return fmt.Errorf("BuildTrigger.BuildTemplate has unexpected type %T", x) - } - return nil -} - -func _BuildTrigger_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*BuildTrigger) - switch tag { - case 4: // build_template.build - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Build) - err := b.DecodeMessage(msg) - m.BuildTemplate = &BuildTrigger_Build{msg} - return true, err - case 8: // build_template.filename - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.BuildTemplate = &BuildTrigger_Filename{x} - return true, err - default: - return false, nil - } -} - -func _BuildTrigger_OneofSizer(msg proto.Message) (n int) { - m := msg.(*BuildTrigger) - // build_template - switch x := m.BuildTemplate.(type) { - case *BuildTrigger_Build: - s := proto.Size(x.Build) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BuildTrigger_Filename: - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Filename))) - n += len(x.Filename) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Request to create a new BuildTrigger. -type CreateBuildTriggerRequest struct { - // ID of the project for which to configure automatic builds. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // BuildTrigger to create. - Trigger *BuildTrigger `protobuf:"bytes,2,opt,name=trigger" json:"trigger,omitempty"` -} - -func (m *CreateBuildTriggerRequest) Reset() { *m = CreateBuildTriggerRequest{} } -func (m *CreateBuildTriggerRequest) String() string { return proto.CompactTextString(m) } -func (*CreateBuildTriggerRequest) ProtoMessage() {} -func (*CreateBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *CreateBuildTriggerRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *CreateBuildTriggerRequest) GetTrigger() *BuildTrigger { - if m != nil { - return m.Trigger - } - return nil -} - -// Returns the BuildTrigger with the specified ID. -type GetBuildTriggerRequest struct { - // ID of the project that owns the trigger. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // ID of the BuildTrigger to get. - TriggerId string `protobuf:"bytes,2,opt,name=trigger_id,json=triggerId" json:"trigger_id,omitempty"` -} - -func (m *GetBuildTriggerRequest) Reset() { *m = GetBuildTriggerRequest{} } -func (m *GetBuildTriggerRequest) String() string { return proto.CompactTextString(m) } -func (*GetBuildTriggerRequest) ProtoMessage() {} -func (*GetBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *GetBuildTriggerRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetBuildTriggerRequest) GetTriggerId() string { - if m != nil { - return m.TriggerId - } - return "" -} - -// Request to list existing BuildTriggers. -type ListBuildTriggersRequest struct { - // ID of the project for which to list BuildTriggers. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` -} - -func (m *ListBuildTriggersRequest) Reset() { *m = ListBuildTriggersRequest{} } -func (m *ListBuildTriggersRequest) String() string { return proto.CompactTextString(m) } -func (*ListBuildTriggersRequest) ProtoMessage() {} -func (*ListBuildTriggersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *ListBuildTriggersRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -// Response containing existing BuildTriggers. -type ListBuildTriggersResponse struct { - // BuildTriggers for the project, sorted by create_time descending. - Triggers []*BuildTrigger `protobuf:"bytes,1,rep,name=triggers" json:"triggers,omitempty"` -} - -func (m *ListBuildTriggersResponse) Reset() { *m = ListBuildTriggersResponse{} } -func (m *ListBuildTriggersResponse) String() string { return proto.CompactTextString(m) } -func (*ListBuildTriggersResponse) ProtoMessage() {} -func (*ListBuildTriggersResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *ListBuildTriggersResponse) GetTriggers() []*BuildTrigger { - if m != nil { - return m.Triggers - } - return nil -} - -// Request to delete a BuildTrigger. -type DeleteBuildTriggerRequest struct { - // ID of the project that owns the trigger. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // ID of the BuildTrigger to delete. - TriggerId string `protobuf:"bytes,2,opt,name=trigger_id,json=triggerId" json:"trigger_id,omitempty"` -} - -func (m *DeleteBuildTriggerRequest) Reset() { *m = DeleteBuildTriggerRequest{} } -func (m *DeleteBuildTriggerRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteBuildTriggerRequest) ProtoMessage() {} -func (*DeleteBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *DeleteBuildTriggerRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *DeleteBuildTriggerRequest) GetTriggerId() string { - if m != nil { - return m.TriggerId - } - return "" -} - -// Request to update an existing BuildTrigger. -type UpdateBuildTriggerRequest struct { - // ID of the project that owns the trigger. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // ID of the BuildTrigger to update. - TriggerId string `protobuf:"bytes,2,opt,name=trigger_id,json=triggerId" json:"trigger_id,omitempty"` - // BuildTrigger to update. - Trigger *BuildTrigger `protobuf:"bytes,3,opt,name=trigger" json:"trigger,omitempty"` -} - -func (m *UpdateBuildTriggerRequest) Reset() { *m = UpdateBuildTriggerRequest{} } -func (m *UpdateBuildTriggerRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateBuildTriggerRequest) ProtoMessage() {} -func (*UpdateBuildTriggerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *UpdateBuildTriggerRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateBuildTriggerRequest) GetTriggerId() string { - if m != nil { - return m.TriggerId - } - return "" -} - -func (m *UpdateBuildTriggerRequest) GetTrigger() *BuildTrigger { - if m != nil { - return m.Trigger - } - return nil -} - -// Optional arguments to enable specific features of builds. -type BuildOptions struct { - // Requested hash for SourceProvenance. - SourceProvenanceHash []Hash_HashType `protobuf:"varint,1,rep,packed,name=source_provenance_hash,json=sourceProvenanceHash,enum=google.devtools.cloudbuild.v1.Hash_HashType" json:"source_provenance_hash,omitempty"` - // Requested verifiability options. - RequestedVerifyOption BuildOptions_VerifyOption `protobuf:"varint,2,opt,name=requested_verify_option,json=requestedVerifyOption,enum=google.devtools.cloudbuild.v1.BuildOptions_VerifyOption" json:"requested_verify_option,omitempty"` - // GCE VM size to run the build on. - MachineType BuildOptions_MachineType `protobuf:"varint,3,opt,name=machine_type,json=machineType,enum=google.devtools.cloudbuild.v1.BuildOptions_MachineType" json:"machine_type,omitempty"` - // Requested disk size for the VM that runs the build. Note that this is *NOT* - // "disk free"; some of the space will be used by the operating system and - // build utilities. Also note that this is the minimum disk size that will be - // allocated for the build -- the build may run with a larger disk than - // requested. At present, the maximum disk size is 1000GB; builds that request - // more than the maximum are rejected with an error. - DiskSizeGb int64 `protobuf:"varint,6,opt,name=disk_size_gb,json=diskSizeGb" json:"disk_size_gb,omitempty"` - // SubstitutionOption to allow unmatch substitutions. - SubstitutionOption BuildOptions_SubstitutionOption `protobuf:"varint,4,opt,name=substitution_option,json=substitutionOption,enum=google.devtools.cloudbuild.v1.BuildOptions_SubstitutionOption" json:"substitution_option,omitempty"` - // LogStreamingOption to define build log streaming behavior to Google Cloud - // Storage. - LogStreamingOption BuildOptions_LogStreamingOption `protobuf:"varint,5,opt,name=log_streaming_option,json=logStreamingOption,enum=google.devtools.cloudbuild.v1.BuildOptions_LogStreamingOption" json:"log_streaming_option,omitempty"` -} - -func (m *BuildOptions) Reset() { *m = BuildOptions{} } -func (m *BuildOptions) String() string { return proto.CompactTextString(m) } -func (*BuildOptions) ProtoMessage() {} -func (*BuildOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *BuildOptions) GetSourceProvenanceHash() []Hash_HashType { - if m != nil { - return m.SourceProvenanceHash - } - return nil -} - -func (m *BuildOptions) GetRequestedVerifyOption() BuildOptions_VerifyOption { - if m != nil { - return m.RequestedVerifyOption - } - return BuildOptions_NOT_VERIFIED -} - -func (m *BuildOptions) GetMachineType() BuildOptions_MachineType { - if m != nil { - return m.MachineType - } - return BuildOptions_UNSPECIFIED -} - -func (m *BuildOptions) GetDiskSizeGb() int64 { - if m != nil { - return m.DiskSizeGb - } - return 0 -} - -func (m *BuildOptions) GetSubstitutionOption() BuildOptions_SubstitutionOption { - if m != nil { - return m.SubstitutionOption - } - return BuildOptions_MUST_MATCH -} - -func (m *BuildOptions) GetLogStreamingOption() BuildOptions_LogStreamingOption { - if m != nil { - return m.LogStreamingOption - } - return BuildOptions_STREAM_DEFAULT -} - -func init() { - proto.RegisterType((*RetryBuildRequest)(nil), "google.devtools.cloudbuild.v1.RetryBuildRequest") - proto.RegisterType((*RunBuildTriggerRequest)(nil), "google.devtools.cloudbuild.v1.RunBuildTriggerRequest") - proto.RegisterType((*StorageSource)(nil), "google.devtools.cloudbuild.v1.StorageSource") - proto.RegisterType((*RepoSource)(nil), "google.devtools.cloudbuild.v1.RepoSource") - proto.RegisterType((*Source)(nil), "google.devtools.cloudbuild.v1.Source") - proto.RegisterType((*BuiltImage)(nil), "google.devtools.cloudbuild.v1.BuiltImage") - proto.RegisterType((*BuildStep)(nil), "google.devtools.cloudbuild.v1.BuildStep") - proto.RegisterType((*Volume)(nil), "google.devtools.cloudbuild.v1.Volume") - proto.RegisterType((*Results)(nil), "google.devtools.cloudbuild.v1.Results") - proto.RegisterType((*Build)(nil), "google.devtools.cloudbuild.v1.Build") - proto.RegisterType((*TimeSpan)(nil), "google.devtools.cloudbuild.v1.TimeSpan") - proto.RegisterType((*BuildOperationMetadata)(nil), "google.devtools.cloudbuild.v1.BuildOperationMetadata") - proto.RegisterType((*SourceProvenance)(nil), "google.devtools.cloudbuild.v1.SourceProvenance") - proto.RegisterType((*FileHashes)(nil), "google.devtools.cloudbuild.v1.FileHashes") - proto.RegisterType((*Hash)(nil), "google.devtools.cloudbuild.v1.Hash") - proto.RegisterType((*Secret)(nil), "google.devtools.cloudbuild.v1.Secret") - proto.RegisterType((*CreateBuildRequest)(nil), "google.devtools.cloudbuild.v1.CreateBuildRequest") - proto.RegisterType((*GetBuildRequest)(nil), "google.devtools.cloudbuild.v1.GetBuildRequest") - proto.RegisterType((*ListBuildsRequest)(nil), "google.devtools.cloudbuild.v1.ListBuildsRequest") - proto.RegisterType((*ListBuildsResponse)(nil), "google.devtools.cloudbuild.v1.ListBuildsResponse") - proto.RegisterType((*CancelBuildRequest)(nil), "google.devtools.cloudbuild.v1.CancelBuildRequest") - proto.RegisterType((*BuildTrigger)(nil), "google.devtools.cloudbuild.v1.BuildTrigger") - proto.RegisterType((*CreateBuildTriggerRequest)(nil), "google.devtools.cloudbuild.v1.CreateBuildTriggerRequest") - proto.RegisterType((*GetBuildTriggerRequest)(nil), "google.devtools.cloudbuild.v1.GetBuildTriggerRequest") - proto.RegisterType((*ListBuildTriggersRequest)(nil), "google.devtools.cloudbuild.v1.ListBuildTriggersRequest") - proto.RegisterType((*ListBuildTriggersResponse)(nil), "google.devtools.cloudbuild.v1.ListBuildTriggersResponse") - proto.RegisterType((*DeleteBuildTriggerRequest)(nil), "google.devtools.cloudbuild.v1.DeleteBuildTriggerRequest") - proto.RegisterType((*UpdateBuildTriggerRequest)(nil), "google.devtools.cloudbuild.v1.UpdateBuildTriggerRequest") - proto.RegisterType((*BuildOptions)(nil), "google.devtools.cloudbuild.v1.BuildOptions") - proto.RegisterEnum("google.devtools.cloudbuild.v1.Build_Status", Build_Status_name, Build_Status_value) - proto.RegisterEnum("google.devtools.cloudbuild.v1.Hash_HashType", Hash_HashType_name, Hash_HashType_value) - proto.RegisterEnum("google.devtools.cloudbuild.v1.BuildOptions_VerifyOption", BuildOptions_VerifyOption_name, BuildOptions_VerifyOption_value) - proto.RegisterEnum("google.devtools.cloudbuild.v1.BuildOptions_MachineType", BuildOptions_MachineType_name, BuildOptions_MachineType_value) - proto.RegisterEnum("google.devtools.cloudbuild.v1.BuildOptions_SubstitutionOption", BuildOptions_SubstitutionOption_name, BuildOptions_SubstitutionOption_value) - proto.RegisterEnum("google.devtools.cloudbuild.v1.BuildOptions_LogStreamingOption", BuildOptions_LogStreamingOption_name, BuildOptions_LogStreamingOption_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for CloudBuild service - -type CloudBuildClient interface { - // Starts a build with the specified configuration. - // - // The long-running Operation returned by this method will include the ID of - // the build, which can be passed to GetBuild to determine its status (e.g., - // success or failure). - CreateBuild(ctx context.Context, in *CreateBuildRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Returns information about a previously requested build. - // - // The Build that is returned includes its status (e.g., success or failure, - // or in-progress), and timing information. - GetBuild(ctx context.Context, in *GetBuildRequest, opts ...grpc.CallOption) (*Build, error) - // Lists previously requested builds. - // - // Previously requested builds may still be in-progress, or may have finished - // successfully or unsuccessfully. - ListBuilds(ctx context.Context, in *ListBuildsRequest, opts ...grpc.CallOption) (*ListBuildsResponse, error) - // Cancels a requested build in progress. - CancelBuild(ctx context.Context, in *CancelBuildRequest, opts ...grpc.CallOption) (*Build, error) - // Creates a new build based on the given build. - // - // This API creates a new build using the original build request, which may - // or may not result in an identical build. - // - // For triggered builds: - // - // * Triggered builds resolve to a precise revision, so a retry of a triggered - // build will result in a build that uses the same revision. - // - // For non-triggered builds that specify RepoSource: - // - // * If the original build built from the tip of a branch, the retried build - // will build from the tip of that branch, which may not be the same revision - // as the original build. - // * If the original build specified a commit sha or revision ID, the retried - // build will use the identical source. - // - // For builds that specify StorageSource: - // - // * If the original build pulled source from Cloud Storage without specifying - // the generation of the object, the new build will use the current object, - // which may be different from the original build source. - // * If the original build pulled source from Cloud Storage and specified the - // generation of the object, the new build will attempt to use the same - // object, which may or may not be available depending on the bucket's - // lifecycle management settings. - RetryBuild(ctx context.Context, in *RetryBuildRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Creates a new BuildTrigger. - // - // This API is experimental. - CreateBuildTrigger(ctx context.Context, in *CreateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error) - // Gets information about a BuildTrigger. - // - // This API is experimental. - GetBuildTrigger(ctx context.Context, in *GetBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error) - // Lists existing BuildTrigger. - // - // This API is experimental. - ListBuildTriggers(ctx context.Context, in *ListBuildTriggersRequest, opts ...grpc.CallOption) (*ListBuildTriggersResponse, error) - // Deletes an BuildTrigger by its project ID and trigger ID. - // - // This API is experimental. - DeleteBuildTrigger(ctx context.Context, in *DeleteBuildTriggerRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Updates an BuildTrigger by its project ID and trigger ID. - // - // This API is experimental. - UpdateBuildTrigger(ctx context.Context, in *UpdateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error) - // Runs a BuildTrigger at a particular source revision. - RunBuildTrigger(ctx context.Context, in *RunBuildTriggerRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type cloudBuildClient struct { - cc *grpc.ClientConn -} - -func NewCloudBuildClient(cc *grpc.ClientConn) CloudBuildClient { - return &cloudBuildClient{cc} -} - -func (c *cloudBuildClient) CreateBuild(ctx context.Context, in *CreateBuildRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/CreateBuild", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) GetBuild(ctx context.Context, in *GetBuildRequest, opts ...grpc.CallOption) (*Build, error) { - out := new(Build) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/GetBuild", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) ListBuilds(ctx context.Context, in *ListBuildsRequest, opts ...grpc.CallOption) (*ListBuildsResponse, error) { - out := new(ListBuildsResponse) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/ListBuilds", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) CancelBuild(ctx context.Context, in *CancelBuildRequest, opts ...grpc.CallOption) (*Build, error) { - out := new(Build) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/CancelBuild", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) RetryBuild(ctx context.Context, in *RetryBuildRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/RetryBuild", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) CreateBuildTrigger(ctx context.Context, in *CreateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error) { - out := new(BuildTrigger) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/CreateBuildTrigger", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) GetBuildTrigger(ctx context.Context, in *GetBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error) { - out := new(BuildTrigger) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/GetBuildTrigger", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) ListBuildTriggers(ctx context.Context, in *ListBuildTriggersRequest, opts ...grpc.CallOption) (*ListBuildTriggersResponse, error) { - out := new(ListBuildTriggersResponse) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/ListBuildTriggers", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) DeleteBuildTrigger(ctx context.Context, in *DeleteBuildTriggerRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/DeleteBuildTrigger", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) UpdateBuildTrigger(ctx context.Context, in *UpdateBuildTriggerRequest, opts ...grpc.CallOption) (*BuildTrigger, error) { - out := new(BuildTrigger) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/UpdateBuildTrigger", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *cloudBuildClient) RunBuildTrigger(ctx context.Context, in *RunBuildTriggerRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.devtools.cloudbuild.v1.CloudBuild/RunBuildTrigger", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for CloudBuild service - -type CloudBuildServer interface { - // Starts a build with the specified configuration. - // - // The long-running Operation returned by this method will include the ID of - // the build, which can be passed to GetBuild to determine its status (e.g., - // success or failure). - CreateBuild(context.Context, *CreateBuildRequest) (*google_longrunning.Operation, error) - // Returns information about a previously requested build. - // - // The Build that is returned includes its status (e.g., success or failure, - // or in-progress), and timing information. - GetBuild(context.Context, *GetBuildRequest) (*Build, error) - // Lists previously requested builds. - // - // Previously requested builds may still be in-progress, or may have finished - // successfully or unsuccessfully. - ListBuilds(context.Context, *ListBuildsRequest) (*ListBuildsResponse, error) - // Cancels a requested build in progress. - CancelBuild(context.Context, *CancelBuildRequest) (*Build, error) - // Creates a new build based on the given build. - // - // This API creates a new build using the original build request, which may - // or may not result in an identical build. - // - // For triggered builds: - // - // * Triggered builds resolve to a precise revision, so a retry of a triggered - // build will result in a build that uses the same revision. - // - // For non-triggered builds that specify RepoSource: - // - // * If the original build built from the tip of a branch, the retried build - // will build from the tip of that branch, which may not be the same revision - // as the original build. - // * If the original build specified a commit sha or revision ID, the retried - // build will use the identical source. - // - // For builds that specify StorageSource: - // - // * If the original build pulled source from Cloud Storage without specifying - // the generation of the object, the new build will use the current object, - // which may be different from the original build source. - // * If the original build pulled source from Cloud Storage and specified the - // generation of the object, the new build will attempt to use the same - // object, which may or may not be available depending on the bucket's - // lifecycle management settings. - RetryBuild(context.Context, *RetryBuildRequest) (*google_longrunning.Operation, error) - // Creates a new BuildTrigger. - // - // This API is experimental. - CreateBuildTrigger(context.Context, *CreateBuildTriggerRequest) (*BuildTrigger, error) - // Gets information about a BuildTrigger. - // - // This API is experimental. - GetBuildTrigger(context.Context, *GetBuildTriggerRequest) (*BuildTrigger, error) - // Lists existing BuildTrigger. - // - // This API is experimental. - ListBuildTriggers(context.Context, *ListBuildTriggersRequest) (*ListBuildTriggersResponse, error) - // Deletes an BuildTrigger by its project ID and trigger ID. - // - // This API is experimental. - DeleteBuildTrigger(context.Context, *DeleteBuildTriggerRequest) (*google_protobuf3.Empty, error) - // Updates an BuildTrigger by its project ID and trigger ID. - // - // This API is experimental. - UpdateBuildTrigger(context.Context, *UpdateBuildTriggerRequest) (*BuildTrigger, error) - // Runs a BuildTrigger at a particular source revision. - RunBuildTrigger(context.Context, *RunBuildTriggerRequest) (*google_longrunning.Operation, error) -} - -func RegisterCloudBuildServer(s *grpc.Server, srv CloudBuildServer) { - s.RegisterService(&_CloudBuild_serviceDesc, srv) -} - -func _CloudBuild_CreateBuild_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateBuildRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).CreateBuild(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/CreateBuild", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).CreateBuild(ctx, req.(*CreateBuildRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_GetBuild_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetBuildRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).GetBuild(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/GetBuild", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).GetBuild(ctx, req.(*GetBuildRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_ListBuilds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListBuildsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).ListBuilds(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/ListBuilds", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).ListBuilds(ctx, req.(*ListBuildsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_CancelBuild_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelBuildRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).CancelBuild(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/CancelBuild", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).CancelBuild(ctx, req.(*CancelBuildRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_RetryBuild_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RetryBuildRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).RetryBuild(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/RetryBuild", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).RetryBuild(ctx, req.(*RetryBuildRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_CreateBuildTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateBuildTriggerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).CreateBuildTrigger(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/CreateBuildTrigger", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).CreateBuildTrigger(ctx, req.(*CreateBuildTriggerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_GetBuildTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetBuildTriggerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).GetBuildTrigger(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/GetBuildTrigger", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).GetBuildTrigger(ctx, req.(*GetBuildTriggerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_ListBuildTriggers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListBuildTriggersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).ListBuildTriggers(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/ListBuildTriggers", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).ListBuildTriggers(ctx, req.(*ListBuildTriggersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_DeleteBuildTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteBuildTriggerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).DeleteBuildTrigger(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/DeleteBuildTrigger", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).DeleteBuildTrigger(ctx, req.(*DeleteBuildTriggerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_UpdateBuildTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateBuildTriggerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).UpdateBuildTrigger(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/UpdateBuildTrigger", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).UpdateBuildTrigger(ctx, req.(*UpdateBuildTriggerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _CloudBuild_RunBuildTrigger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RunBuildTriggerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CloudBuildServer).RunBuildTrigger(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudbuild.v1.CloudBuild/RunBuildTrigger", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CloudBuildServer).RunBuildTrigger(ctx, req.(*RunBuildTriggerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _CloudBuild_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.cloudbuild.v1.CloudBuild", - HandlerType: (*CloudBuildServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateBuild", - Handler: _CloudBuild_CreateBuild_Handler, - }, - { - MethodName: "GetBuild", - Handler: _CloudBuild_GetBuild_Handler, - }, - { - MethodName: "ListBuilds", - Handler: _CloudBuild_ListBuilds_Handler, - }, - { - MethodName: "CancelBuild", - Handler: _CloudBuild_CancelBuild_Handler, - }, - { - MethodName: "RetryBuild", - Handler: _CloudBuild_RetryBuild_Handler, - }, - { - MethodName: "CreateBuildTrigger", - Handler: _CloudBuild_CreateBuildTrigger_Handler, - }, - { - MethodName: "GetBuildTrigger", - Handler: _CloudBuild_GetBuildTrigger_Handler, - }, - { - MethodName: "ListBuildTriggers", - Handler: _CloudBuild_ListBuildTriggers_Handler, - }, - { - MethodName: "DeleteBuildTrigger", - Handler: _CloudBuild_DeleteBuildTrigger_Handler, - }, - { - MethodName: "UpdateBuildTrigger", - Handler: _CloudBuild_UpdateBuildTrigger_Handler, - }, - { - MethodName: "RunBuildTrigger", - Handler: _CloudBuild_RunBuildTrigger_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/cloudbuild/v1/cloudbuild.proto", -} - -func init() { proto.RegisterFile("google/devtools/cloudbuild/v1/cloudbuild.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5a, 0x5b, 0x73, 0xdb, 0xc6, - 0x15, 0x16, 0x48, 0x8a, 0x97, 0x43, 0x5d, 0xe0, 0x8d, 0xa3, 0x40, 0x74, 0x1c, 0x2b, 0xc8, 0x4d, - 0x71, 0x12, 0x32, 0x92, 0xeb, 0xd8, 0x51, 0x2e, 0xb6, 0x44, 0x51, 0x97, 0x89, 0x4c, 0xb9, 0x20, - 0xe9, 0x4c, 0xd3, 0x76, 0x50, 0x90, 0x58, 0x43, 0xa8, 0x40, 0x00, 0x05, 0x96, 0x6c, 0x94, 0xd4, - 0xd3, 0x36, 0x33, 0xed, 0x6b, 0xdb, 0xe9, 0xf4, 0xa1, 0xd3, 0x87, 0x5e, 0x9e, 0x3b, 0x9d, 0x4e, - 0xfb, 0xd0, 0x99, 0xce, 0xe4, 0xa9, 0x0f, 0xfd, 0x01, 0xfd, 0x0b, 0xfd, 0x21, 0x9d, 0xbd, 0x80, - 0x04, 0x49, 0xbb, 0x20, 0xe2, 0xf6, 0x45, 0xe6, 0x9e, 0xdd, 0xef, 0xec, 0xd9, 0x73, 0xdb, 0x6f, - 0x49, 0x43, 0xd5, 0xf2, 0x3c, 0xcb, 0xc1, 0x35, 0x13, 0x0f, 0x89, 0xe7, 0x39, 0x61, 0xad, 0xe7, - 0x78, 0x03, 0xb3, 0x3b, 0xb0, 0x1d, 0xb3, 0x36, 0xdc, 0x8a, 0x8d, 0xaa, 0x7e, 0xe0, 0x11, 0x0f, - 0x5d, 0xe5, 0xeb, 0xab, 0xd1, 0xfa, 0x6a, 0x6c, 0xc5, 0x70, 0xab, 0xf2, 0xbc, 0x50, 0x67, 0xf8, - 0x76, 0xcd, 0x70, 0x5d, 0x8f, 0x18, 0xc4, 0xf6, 0xdc, 0x90, 0x83, 0x2b, 0xaa, 0x98, 0x65, 0x98, - 0x9a, 0x31, 0x30, 0x6d, 0xc2, 0xff, 0xea, 0x8e, 0x67, 0x89, 0x35, 0x2f, 0x89, 0x35, 0x8e, 0xe7, - 0x5a, 0xc1, 0xc0, 0x75, 0x6d, 0xd7, 0xaa, 0x79, 0x3e, 0x0e, 0x26, 0x14, 0xbd, 0x20, 0x16, 0xb1, - 0x51, 0x77, 0xf0, 0xb0, 0x66, 0x0e, 0xf8, 0x02, 0x31, 0x7f, 0x65, 0x7a, 0x1e, 0xf7, 0x7d, 0x72, - 0x21, 0x26, 0xaf, 0x4d, 0x4f, 0x12, 0xbb, 0x8f, 0x43, 0x62, 0xf4, 0x7d, 0xbe, 0x40, 0xdd, 0x83, - 0x4b, 0x1a, 0x26, 0xc1, 0xc5, 0x1e, 0x3d, 0x95, 0x86, 0xbf, 0x37, 0xc0, 0x21, 0x41, 0x57, 0x01, - 0xfc, 0xc0, 0xfb, 0x2e, 0xee, 0x11, 0xdd, 0x36, 0x15, 0x69, 0x43, 0xda, 0x2c, 0x69, 0x25, 0x21, - 0x39, 0x36, 0xd1, 0x0a, 0x64, 0x6c, 0x53, 0xc9, 0x30, 0x71, 0xc6, 0x36, 0xd5, 0x5f, 0x4b, 0xb0, - 0xa6, 0x0d, 0x5c, 0xa6, 0xa2, 0x1d, 0xd8, 0x96, 0x85, 0x83, 0x39, 0x35, 0x5d, 0x05, 0x20, 0x1c, - 0xa0, 0x8f, 0x34, 0x96, 0x84, 0xe4, 0xd8, 0x44, 0xbb, 0x90, 0x0f, 0xbd, 0x41, 0xd0, 0xc3, 0x4a, - 0x76, 0x43, 0xda, 0x2c, 0x6f, 0xbf, 0x5e, 0xfd, 0xaf, 0x11, 0xa9, 0x6a, 0xd8, 0xf7, 0x5a, 0x0c, - 0xa0, 0x09, 0xa0, 0xaa, 0xc3, 0x72, 0x8b, 0x78, 0x81, 0x61, 0x61, 0x3e, 0x81, 0xd6, 0x20, 0xdf, - 0x1d, 0xf4, 0xce, 0x31, 0x11, 0xd6, 0x88, 0x11, 0x95, 0x7b, 0x5d, 0x6a, 0x96, 0x30, 0x43, 0x8c, - 0xd0, 0x0b, 0x00, 0x16, 0x76, 0x45, 0x4c, 0x98, 0x1d, 0x59, 0x2d, 0x26, 0x51, 0xff, 0x29, 0x01, - 0x8c, 0xf7, 0x4d, 0x3a, 0xf0, 0x15, 0x28, 0x05, 0xd8, 0xf7, 0x74, 0xd7, 0xe8, 0x63, 0xb1, 0x51, - 0x91, 0x0a, 0x9a, 0x46, 0x1f, 0xa3, 0x17, 0xa1, 0xdc, 0x0d, 0x0c, 0xb7, 0x77, 0xc6, 0xa7, 0xe9, - 0x5e, 0xa5, 0xa3, 0x05, 0x0d, 0xb8, 0x90, 0x2d, 0xb9, 0x02, 0x45, 0x62, 0x58, 0x7c, 0x3e, 0x27, - 0xe6, 0x0b, 0xc4, 0xb0, 0xd8, 0xe4, 0x35, 0x80, 0x9e, 0xd7, 0xef, 0xdb, 0x44, 0x0f, 0xcf, 0x0c, - 0x65, 0x51, 0x4c, 0x97, 0xb8, 0xac, 0x75, 0x66, 0x20, 0x19, 0xb2, 0xa6, 0x1d, 0x28, 0x05, 0xb6, - 0x2f, 0xfd, 0xb8, 0x07, 0x50, 0x0c, 0xf0, 0xd0, 0x0e, 0xe9, 0x49, 0xfe, 0x26, 0x41, 0x5e, 0x9c, - 0xa2, 0x03, 0x2b, 0x21, 0xf7, 0x9a, 0x2e, 0x02, 0x90, 0x61, 0x01, 0x78, 0x33, 0x21, 0x00, 0x13, - 0xae, 0x3e, 0x5a, 0xd0, 0x96, 0xc3, 0x09, 0xdf, 0x9f, 0x40, 0x99, 0x9d, 0xfe, 0x2b, 0x06, 0x95, - 0xfa, 0x22, 0x18, 0x8d, 0xf6, 0x8a, 0x51, 0x76, 0xa8, 0x5f, 0x48, 0x00, 0x34, 0xfb, 0xc8, 0x71, - 0xdf, 0xb0, 0x30, 0x42, 0x90, 0x63, 0x0e, 0xe2, 0xde, 0x67, 0x9f, 0x69, 0x78, 0x4d, 0xdb, 0xc2, - 0x21, 0xe1, 0x6e, 0xd5, 0xc4, 0x08, 0x1d, 0x41, 0xd9, 0x1f, 0x84, 0x67, 0x3a, 0xb1, 0xfb, 0xb6, - 0x6b, 0x31, 0x9f, 0x96, 0xb7, 0x5f, 0x4b, 0x30, 0xa9, 0x6d, 0xf7, 0x71, 0xcb, 0x37, 0x5c, 0x0d, - 0x28, 0xb6, 0xcd, 0xa0, 0xea, 0x3f, 0x32, 0x50, 0x62, 0x25, 0xd0, 0x22, 0xd8, 0x7f, 0xac, 0x0d, - 0x32, 0x64, 0xb1, 0x3b, 0x54, 0x32, 0x1b, 0x59, 0xea, 0x7e, 0xec, 0x0e, 0xe9, 0x2a, 0x23, 0xb0, - 0x42, 0x25, 0xcb, 0x44, 0xec, 0x73, 0x14, 0xa4, 0xdc, 0x28, 0x48, 0xa2, 0xde, 0x16, 0xa3, 0x7a, - 0x43, 0xeb, 0x50, 0xfc, 0xbe, 0x61, 0x13, 0xfd, 0xa1, 0x17, 0x28, 0x79, 0x86, 0x2c, 0xd0, 0xf1, - 0x81, 0x17, 0xd0, 0x6c, 0xc5, 0x2e, 0x09, 0x2e, 0x7c, 0xcf, 0x76, 0x89, 0x08, 0x74, 0x4c, 0x42, - 0xd3, 0x33, 0xc4, 0xbd, 0x00, 0x13, 0x9d, 0x5a, 0x52, 0x64, 0xe0, 0x12, 0x97, 0x34, 0xdc, 0x21, - 0xba, 0x03, 0x85, 0xa1, 0xe7, 0x0c, 0xfa, 0x38, 0x54, 0x4a, 0x1b, 0xd9, 0xcd, 0xf2, 0xf6, 0x2b, - 0x09, 0x9e, 0x78, 0xc0, 0x56, 0x6b, 0x11, 0x0a, 0xdd, 0x81, 0xbc, 0xf0, 0x24, 0xa4, 0xf3, 0xa4, - 0x80, 0xa9, 0x6f, 0x43, 0x9e, 0xeb, 0x7c, 0xac, 0x07, 0x11, 0xe4, 0x7c, 0x83, 0x9c, 0x89, 0xca, - 0x61, 0x9f, 0xd5, 0x4f, 0xa1, 0xa0, 0xe1, 0x70, 0xe0, 0x90, 0x90, 0xf6, 0x0b, 0x9b, 0x66, 0x40, - 0xc8, 0x7c, 0x9c, 0x9c, 0x5a, 0xe3, 0x9c, 0xd1, 0x04, 0x10, 0x5d, 0x87, 0x4b, 0x6c, 0x5a, 0x0f, - 0x09, 0xf6, 0x75, 0xa1, 0x8d, 0x87, 0x67, 0xb5, 0x1b, 0x45, 0x97, 0x41, 0x42, 0xf5, 0x17, 0x65, - 0x58, 0x64, 0x11, 0x17, 0x11, 0x92, 0x46, 0x11, 0x9a, 0xec, 0x02, 0xf2, 0x74, 0x17, 0xa8, 0x43, - 0x3e, 0x24, 0x06, 0x19, 0x84, 0xec, 0x20, 0x2b, 0xdb, 0x6f, 0xcc, 0x61, 0xa7, 0x59, 0x6d, 0x31, - 0x88, 0x26, 0xa0, 0xe8, 0x25, 0x58, 0xe6, 0x9f, 0x74, 0x13, 0x13, 0xc3, 0x76, 0x14, 0x85, 0x6d, - 0xb3, 0xc4, 0x85, 0xfb, 0x4c, 0x86, 0x3e, 0x98, 0xea, 0xa0, 0x49, 0xf1, 0x9c, 0xec, 0x9e, 0xe8, - 0x43, 0x58, 0xa4, 0x7e, 0x08, 0x95, 0x32, 0xf3, 0xe7, 0xe6, 0x3c, 0x76, 0x52, 0x07, 0x69, 0x1c, - 0x86, 0xee, 0x42, 0x21, 0xe0, 0xb1, 0x11, 0xf9, 0xf0, 0x6a, 0x62, 0xb1, 0xb3, 0xd5, 0x5a, 0x04, - 0x43, 0xef, 0x41, 0xb9, 0x17, 0x60, 0x83, 0x60, 0x5a, 0xa1, 0x58, 0xc9, 0x33, 0x2d, 0x95, 0x48, - 0x4b, 0x74, 0xad, 0xb1, 0x3c, 0x62, 0xd7, 0x9a, 0x06, 0x7c, 0x39, 0x15, 0xa0, 0x77, 0x01, 0x42, - 0x62, 0x04, 0x84, 0x63, 0x0b, 0x89, 0xd8, 0x12, 0x5b, 0xcd, 0xa0, 0xef, 0x41, 0xf9, 0xa1, 0xed, - 0xda, 0xbc, 0x33, 0x60, 0xa5, 0x98, 0xbc, 0x2f, 0x5f, 0xce, 0xc0, 0x37, 0xa0, 0x40, 0x51, 0xde, - 0x80, 0x28, 0x4b, 0x0c, 0xb8, 0x3e, 0x03, 0xdc, 0x17, 0x97, 0xb8, 0x16, 0xad, 0xa4, 0x1d, 0x4a, - 0xa4, 0xdb, 0x32, 0x4b, 0xb7, 0x28, 0x23, 0xaf, 0x41, 0xd9, 0xf1, 0xac, 0x50, 0x17, 0xb7, 0xd6, - 0x33, 0xbc, 0xa6, 0xa9, 0x68, 0x8f, 0xdf, 0x5c, 0xdf, 0x82, 0x4b, 0x3c, 0x5c, 0xba, 0x1f, 0x78, - 0x43, 0xec, 0x1a, 0x6e, 0x0f, 0x2b, 0xcf, 0xb2, 0x7d, 0x6b, 0x73, 0x85, 0xfb, 0xfe, 0x08, 0xa6, - 0xc9, 0xe1, 0x94, 0x04, 0x6d, 0x82, 0xcc, 0x0b, 0x22, 0x76, 0x51, 0xaf, 0x31, 0x1b, 0x56, 0xba, - 0xb1, 0x0b, 0xff, 0xd8, 0x44, 0x0d, 0x28, 0x78, 0x3e, 0x63, 0x2e, 0xca, 0x73, 0x6c, 0xf7, 0xb9, - 0xd2, 0xfa, 0x94, 0x43, 0xb4, 0x08, 0x8b, 0x9e, 0x83, 0x82, 0xe3, 0x59, 0xfa, 0x20, 0x70, 0x94, - 0x75, 0xde, 0xaa, 0x1d, 0xcf, 0xea, 0x04, 0x0e, 0xfa, 0x36, 0x2c, 0x87, 0x83, 0x6e, 0x48, 0x6c, - 0x32, 0xe0, 0xbb, 0x5c, 0x65, 0x49, 0x79, 0x6b, 0xbe, 0xe2, 0x89, 0x23, 0x1b, 0xb4, 0x21, 0x6a, - 0x93, 0xda, 0x68, 0x6f, 0x21, 0x86, 0x15, 0x2a, 0xd7, 0x78, 0x2f, 0xa6, 0x9f, 0x69, 0x3f, 0xe4, - 0xcd, 0x31, 0x54, 0x36, 0xe6, 0xea, 0x87, 0x2d, 0xb6, 0x5a, 0x8b, 0x50, 0xe8, 0x68, 0xd4, 0x0f, - 0x5f, 0x64, 0xf8, 0xb7, 0xe7, 0x32, 0x96, 0xdf, 0x28, 0xdc, 0x4a, 0x81, 0xaf, 0xdc, 0x05, 0x34, - 0x7b, 0x06, 0x7a, 0x59, 0x9c, 0xe3, 0x0b, 0xd1, 0x79, 0xe8, 0x47, 0x74, 0x19, 0x16, 0x87, 0x86, - 0x33, 0x88, 0xd8, 0x05, 0x1f, 0xec, 0x64, 0x6e, 0x4b, 0x95, 0x2e, 0x94, 0x63, 0x8a, 0x1f, 0x03, - 0xfd, 0x20, 0x0e, 0x4d, 0xd1, 0xbb, 0xc7, 0x7b, 0xa8, 0x3f, 0x84, 0x3c, 0x6f, 0x53, 0x08, 0xc1, - 0x4a, 0xab, 0xbd, 0xdb, 0xee, 0xb4, 0xf4, 0x4e, 0xf3, 0xa3, 0xe6, 0xe9, 0xc7, 0x4d, 0x79, 0x01, - 0x01, 0xe4, 0xbf, 0xde, 0x69, 0x74, 0x1a, 0xfb, 0xb2, 0x84, 0xca, 0x50, 0xf8, 0xf8, 0x54, 0xfb, - 0xe8, 0xb8, 0x79, 0x28, 0x67, 0xe8, 0xa0, 0xd5, 0xa9, 0xd7, 0x1b, 0xad, 0x96, 0x9c, 0xa5, 0x83, - 0x83, 0xdd, 0xe3, 0x93, 0x8e, 0xd6, 0x90, 0x73, 0x54, 0xcd, 0x71, 0xb3, 0xdd, 0xd0, 0x9a, 0xbb, - 0x27, 0x7a, 0x43, 0xd3, 0x4e, 0x35, 0x79, 0x91, 0x2e, 0x68, 0x1f, 0xdf, 0x6b, 0x9c, 0x76, 0xda, - 0x72, 0x1e, 0x2d, 0x43, 0xa9, 0xbe, 0xdb, 0xac, 0x37, 0x4e, 0x4e, 0x1a, 0xfb, 0x72, 0x41, 0xfd, - 0x01, 0x14, 0x23, 0xbb, 0xa6, 0xca, 0x5f, 0x4a, 0x53, 0xfe, 0x37, 0xa1, 0x88, 0x5d, 0x93, 0x03, - 0x33, 0x89, 0xc0, 0x02, 0x76, 0x4d, 0x3a, 0x52, 0xdb, 0xb0, 0x26, 0x92, 0x5a, 0xd0, 0xc3, 0x7b, - 0x98, 0x18, 0xa6, 0x41, 0x0c, 0xb4, 0x03, 0x8b, 0xcc, 0x71, 0xc2, 0x8c, 0x97, 0xe7, 0xc9, 0x03, - 0x8d, 0x43, 0xd4, 0xdf, 0x67, 0x41, 0x9e, 0xae, 0x54, 0x64, 0xc2, 0x73, 0x01, 0x0e, 0x3d, 0x67, - 0x88, 0xe9, 0x5d, 0x35, 0xc1, 0xd5, 0xb2, 0xe9, 0xb9, 0x9a, 0xf6, 0x6c, 0xa4, 0x6c, 0x92, 0x2d, - 0x7f, 0x13, 0x2e, 0x8f, 0x76, 0x89, 0x53, 0xb7, 0x7c, 0x5a, 0x3e, 0x8e, 0x22, 0x35, 0x31, 0xae, - 0xfc, 0x1d, 0xda, 0x63, 0x1d, 0xac, 0x9f, 0x19, 0xe1, 0x19, 0x0e, 0x95, 0x1c, 0xab, 0x90, 0x3b, - 0x29, 0x5b, 0x56, 0xf5, 0xc0, 0x76, 0xf0, 0x11, 0xd3, 0xc0, 0x0b, 0x06, 0x1e, 0x8e, 0x04, 0x95, - 0x33, 0x58, 0x9d, 0x9a, 0x7e, 0x4c, 0xda, 0xdf, 0x99, 0x4c, 0xfb, 0xa4, 0x43, 0x8d, 0x15, 0xc6, - 0x13, 0xbf, 0x09, 0x30, 0x9e, 0x40, 0x77, 0xa1, 0x34, 0x3a, 0x99, 0x22, 0xb1, 0x73, 0xbd, 0x94, - 0xa0, 0x96, 0x22, 0xb5, 0x62, 0x64, 0xbb, 0xfa, 0x23, 0x09, 0x72, 0xf4, 0x03, 0xba, 0x0b, 0x39, - 0x72, 0xe1, 0xf3, 0xf4, 0x5d, 0x49, 0x0c, 0x2a, 0x85, 0xb0, 0x3f, 0xed, 0x0b, 0x1f, 0x6b, 0x0c, - 0x39, 0xd9, 0x11, 0x96, 0x84, 0xd1, 0xea, 0x06, 0x14, 0xa3, 0x75, 0xa8, 0x08, 0xb9, 0xe6, 0x69, - 0xb3, 0xc1, 0x2b, 0xb4, 0x75, 0xb4, 0xbb, 0x7d, 0xf3, 0x1d, 0x59, 0x52, 0xbf, 0xa4, 0xef, 0x01, - 0xd6, 0xc7, 0xd0, 0x06, 0x2c, 0x9d, 0xf7, 0x43, 0xfd, 0x1c, 0x5f, 0xe8, 0x31, 0x4e, 0x06, 0xe7, - 0xfd, 0xf0, 0x23, 0x7c, 0xc1, 0xde, 0x1e, 0xad, 0x09, 0x62, 0x99, 0x65, 0x47, 0xfe, 0xda, 0x5c, - 0xcd, 0x52, 0xfc, 0xd3, 0x70, 0x87, 0x3c, 0x7e, 0x63, 0x3a, 0x5a, 0x79, 0x1f, 0x56, 0x26, 0x27, - 0x93, 0xfa, 0xdd, 0x52, 0x3c, 0x24, 0x1e, 0xa0, 0x3a, 0xe3, 0x02, 0x69, 0xde, 0xb6, 0xa3, 0x3a, - 0xcd, 0xa4, 0xaf, 0xd3, 0xbb, 0xb0, 0x7a, 0x88, 0xc9, 0xd3, 0xbc, 0xa4, 0x7f, 0x2a, 0xc1, 0xa5, - 0x13, 0x3b, 0xe4, 0x3a, 0xc2, 0x39, 0x95, 0x5c, 0x81, 0x92, 0xcf, 0xaa, 0xdf, 0xfe, 0x8c, 0x7b, - 0x61, 0x51, 0x2b, 0x52, 0x41, 0xcb, 0xfe, 0x8c, 0xbf, 0x47, 0xe9, 0x24, 0xf1, 0xce, 0xb1, 0x2b, - 0xde, 0x3e, 0x6c, 0x79, 0x9b, 0x0a, 0x28, 0xe9, 0x78, 0x68, 0x3b, 0x04, 0x07, 0x8c, 0xe1, 0x94, - 0x34, 0x31, 0x52, 0x3f, 0x03, 0x14, 0xb7, 0x23, 0xf4, 0x3d, 0x37, 0xc4, 0xe8, 0x7d, 0xfa, 0x76, - 0xa6, 0x12, 0x91, 0xd3, 0xf3, 0x79, 0x47, 0x60, 0xd0, 0xab, 0xb0, 0xea, 0xe2, 0x4f, 0x89, 0x1e, - 0xb3, 0x87, 0x9f, 0x7c, 0x99, 0x8a, 0xef, 0x47, 0x36, 0xa9, 0x75, 0x40, 0x75, 0x5a, 0xd9, 0xce, - 0xd3, 0x78, 0xf2, 0x27, 0x39, 0x58, 0x8a, 0x7f, 0x21, 0x31, 0x43, 0xd1, 0x37, 0xa0, 0x6c, 0xe2, - 0xb0, 0x17, 0xd8, 0x8c, 0x76, 0x30, 0x7a, 0x5a, 0xd2, 0xe2, 0x22, 0xd4, 0x06, 0x39, 0xe2, 0x3c, - 0x04, 0xf7, 0x7d, 0xc7, 0x20, 0x11, 0x87, 0x4c, 0xd1, 0xf7, 0x56, 0x85, 0x8a, 0xb6, 0xd0, 0x80, - 0xde, 0x8f, 0x12, 0x2c, 0x37, 0x7f, 0x82, 0x1d, 0x2d, 0x88, 0x14, 0x43, 0xcf, 0x03, 0x6b, 0x11, - 0xac, 0x08, 0x8b, 0xe2, 0x81, 0x3f, 0x92, 0x4c, 0x93, 0xe5, 0xc5, 0x54, 0x64, 0xb9, 0x02, 0x45, - 0xd3, 0x0e, 0x8d, 0xae, 0x83, 0x4d, 0xa5, 0xb4, 0x21, 0x6d, 0x16, 0xb5, 0xd1, 0x18, 0x99, 0xd3, - 0xd4, 0x8b, 0xbf, 0x07, 0x3e, 0x9c, 0xc7, 0x78, 0x11, 0x80, 0x64, 0x06, 0xf6, 0xf4, 0x14, 0x67, - 0x4f, 0x86, 0x15, 0x41, 0x56, 0x85, 0xbb, 0xd5, 0x1f, 0x4b, 0xb0, 0x1e, 0xeb, 0x02, 0xe9, 0xbe, - 0x9e, 0x6a, 0x40, 0x41, 0x84, 0x4f, 0xb4, 0x83, 0x37, 0x52, 0x1c, 0x58, 0x8b, 0xb0, 0xea, 0x03, - 0x58, 0x8b, 0xfa, 0xc2, 0xff, 0xf2, 0xeb, 0x31, 0xf5, 0x5d, 0x50, 0x46, 0x45, 0x2a, 0x14, 0xcf, - 0xd9, 0x33, 0x54, 0x13, 0xd6, 0x1f, 0x03, 0x15, 0x65, 0x7e, 0x08, 0x45, 0xb1, 0x49, 0x54, 0xe8, - 0xa9, 0xce, 0x3d, 0x02, 0xab, 0xdf, 0x80, 0xf5, 0x7d, 0xec, 0xe0, 0xaf, 0xe4, 0xfb, 0x84, 0xb3, - 0xff, 0x4e, 0x82, 0xf5, 0x8e, 0x6f, 0x1a, 0xff, 0x07, 0xdd, 0xf1, 0xb0, 0x67, 0x9f, 0x22, 0xec, - 0x7f, 0xcf, 0x8b, 0x16, 0x24, 0x9e, 0x38, 0xa8, 0x0b, 0x6b, 0x33, 0x0f, 0xb5, 0x31, 0x45, 0x48, - 0x7b, 0xb9, 0x5f, 0x9e, 0x7e, 0xaa, 0x31, 0xba, 0xe0, 0x53, 0x5a, 0xc8, 0x9c, 0x80, 0x4d, 0x7d, - 0x88, 0x03, 0xfb, 0xe1, 0x85, 0xce, 0x5f, 0x56, 0xe2, 0xbb, 0x86, 0xdb, 0x29, 0x1e, 0x65, 0xd5, - 0x07, 0x4c, 0x01, 0x1f, 0x51, 0x8a, 0x28, 0x14, 0xc7, 0xc5, 0xe8, 0x13, 0x58, 0xea, 0x1b, 0xbd, - 0x33, 0xdb, 0xc5, 0x3a, 0x23, 0x2a, 0x59, 0xb6, 0xcd, 0xad, 0x34, 0xdb, 0xdc, 0xe3, 0x78, 0x76, - 0xac, 0x72, 0x7f, 0x3c, 0xa0, 0xbc, 0xc3, 0xb4, 0xc3, 0x73, 0x76, 0xb5, 0xe9, 0x56, 0x97, 0xd1, - 0xce, 0xac, 0x06, 0x54, 0x46, 0x6f, 0xb7, 0xc3, 0x2e, 0xf2, 0xe0, 0x99, 0x78, 0x13, 0x89, 0xce, - 0x9a, 0x63, 0x46, 0x7c, 0x98, 0xc6, 0x88, 0x78, 0xeb, 0x11, 0x27, 0x46, 0xe1, 0x8c, 0x0c, 0xf9, - 0x70, 0x99, 0x3e, 0x4f, 0x43, 0x12, 0x60, 0x83, 0x3e, 0xa6, 0xa2, 0x1d, 0x17, 0xd3, 0xef, 0x78, - 0xe2, 0x59, 0xad, 0x48, 0x4d, 0xb4, 0xa3, 0x33, 0x23, 0x53, 0xab, 0xb0, 0x34, 0xe1, 0x70, 0x19, - 0x96, 0x9a, 0xa7, 0x6d, 0xfd, 0x41, 0x43, 0x3b, 0x3e, 0x38, 0x6e, 0xec, 0xcb, 0x0b, 0x68, 0x09, - 0x8a, 0xa3, 0x91, 0xa4, 0xd6, 0xa1, 0x1c, 0x73, 0x28, 0x5a, 0x85, 0x72, 0xa7, 0xd9, 0xba, 0xdf, - 0xa8, 0x47, 0xab, 0x29, 0x7e, 0x4b, 0x3f, 0x3a, 0x3e, 0x3c, 0xaa, 0xdf, 0xef, 0xe8, 0xb7, 0x65, - 0x09, 0x5d, 0x82, 0xe5, 0x98, 0xe4, 0xc6, 0xb6, 0x9c, 0x51, 0x6f, 0x4e, 0xf6, 0x62, 0xb1, 0xf5, - 0x0a, 0xc0, 0xbd, 0x4e, 0xab, 0xad, 0xdf, 0xdb, 0x6d, 0xd7, 0x8f, 0xe4, 0x05, 0xaa, 0x7b, 0xf7, - 0xe4, 0xe4, 0xf4, 0x63, 0xfd, 0xe4, 0xf4, 0xb4, 0xd5, 0x90, 0x25, 0xf5, 0x10, 0xd0, 0xec, 0xa9, - 0xf8, 0x5b, 0x50, 0x6b, 0xec, 0xde, 0xd3, 0xf7, 0x1b, 0x07, 0xbb, 0x9d, 0x93, 0xb6, 0xbc, 0x40, - 0xdf, 0x6d, 0x42, 0x76, 0xda, 0x94, 0x25, 0xaa, 0x39, 0x1a, 0x1e, 0x1c, 0xc8, 0x99, 0xed, 0xbf, - 0xae, 0x00, 0xd4, 0xa9, 0xeb, 0xf8, 0x17, 0x6c, 0x3f, 0x97, 0xa0, 0x1c, 0x6b, 0xe3, 0x68, 0x2b, - 0xc1, 0xcf, 0xb3, 0xc4, 0xaf, 0x72, 0x35, 0x82, 0xc4, 0x7e, 0x6d, 0xa9, 0x8e, 0x1e, 0x6a, 0x6a, - 0xed, 0x8b, 0x7f, 0xfd, 0xfb, 0x97, 0x99, 0xd7, 0xd5, 0x8d, 0xda, 0x70, 0xab, 0x26, 0x5a, 0x45, - 0x58, 0xfb, 0x7c, 0xdc, 0x46, 0x1e, 0xd5, 0x38, 0x8f, 0xd9, 0x11, 0x57, 0xf1, 0xcf, 0x24, 0x28, - 0x46, 0x6d, 0x1d, 0x55, 0x13, 0xec, 0x99, 0xe2, 0x85, 0x95, 0xb9, 0xae, 0x7d, 0xf5, 0x2d, 0x66, - 0xd3, 0x6b, 0xe8, 0x95, 0x24, 0x9b, 0x6a, 0x9f, 0xdb, 0xe6, 0x23, 0xf4, 0x1b, 0x09, 0x60, 0xcc, - 0xda, 0x50, 0xd2, 0x77, 0x0d, 0x33, 0x44, 0xb3, 0xb2, 0x95, 0x02, 0xc1, 0xef, 0x0a, 0x75, 0x93, - 0x99, 0xa8, 0xa2, 0x44, 0xb7, 0xa1, 0xdf, 0xd2, 0x10, 0x8e, 0x79, 0x5d, 0x72, 0x08, 0x67, 0x38, - 0xe0, 0x9c, 0x5e, 0xbb, 0xc5, 0x4c, 0xda, 0x52, 0xdf, 0x9c, 0xcb, 0x6b, 0x3b, 0x3d, 0xb6, 0xcf, - 0x8e, 0x74, 0x1d, 0xfd, 0x8a, 0xfd, 0x94, 0x13, 0xfd, 0x18, 0x96, 0xe8, 0xbf, 0x99, 0xdf, 0xcd, - 0x92, 0x52, 0xec, 0x1d, 0x66, 0xd8, 0xdb, 0xea, 0x1b, 0xf3, 0x19, 0x16, 0x50, 0xfd, 0xd4, 0xae, - 0x3f, 0x4b, 0x13, 0x2f, 0x99, 0x88, 0xd1, 0xde, 0x9e, 0xbf, 0x06, 0x26, 0xaf, 0xc7, 0x4a, 0x9a, - 0xfb, 0x4c, 0xbd, 0xc1, 0xac, 0x7e, 0x4b, 0x55, 0x9f, 0x6c, 0x75, 0x74, 0xe1, 0xef, 0x44, 0x77, - 0x1f, 0xfa, 0x93, 0x34, 0x7e, 0x0b, 0x45, 0xf6, 0xde, 0x9c, 0xb3, 0x46, 0x9e, 0xc6, 0x58, 0x11, - 0x7b, 0x54, 0x4b, 0x36, 0xb6, 0xf6, 0xf9, 0x98, 0x03, 0x3c, 0x42, 0x7f, 0x89, 0xbf, 0xbc, 0x22, - 0x46, 0x84, 0x6e, 0xcd, 0x5b, 0x10, 0x53, 0xf4, 0xab, 0x72, 0x3b, 0x3d, 0x50, 0x14, 0xd4, 0x75, - 0x76, 0x82, 0x97, 0xd1, 0x1c, 0xee, 0xa6, 0x25, 0x85, 0x66, 0x09, 0x56, 0x62, 0x62, 0x3c, 0x91, - 0x93, 0x55, 0xd6, 0x66, 0xde, 0x0a, 0x8d, 0xbe, 0x4f, 0x2e, 0x22, 0xb7, 0x5e, 0x4f, 0xed, 0xd6, - 0x2f, 0x25, 0x40, 0xb3, 0x34, 0x2d, 0xd1, 0xc2, 0x27, 0x32, 0xbb, 0x74, 0xd9, 0x70, 0x97, 0x99, - 0xbd, 0xb3, 0x9d, 0xd6, 0xec, 0x71, 0x1e, 0xff, 0x51, 0x82, 0xd5, 0xa9, 0x9f, 0xb6, 0x13, 0xf3, - 0xf8, 0xf1, 0x3f, 0x85, 0x27, 0x35, 0x87, 0x3a, 0xb3, 0xf5, 0x03, 0xf5, 0x46, 0x5a, 0x5b, 0x83, - 0x81, 0xbb, 0x23, 0x7e, 0xaf, 0xd9, 0x3b, 0x07, 0xa5, 0xe7, 0xf5, 0xa3, 0x8d, 0x26, 0xcc, 0xba, - 0x2f, 0x7d, 0x72, 0x28, 0xe4, 0x96, 0xe7, 0x18, 0xae, 0x55, 0xf5, 0x02, 0xab, 0x66, 0x61, 0x97, - 0x85, 0xba, 0xc6, 0xa7, 0x0c, 0xdf, 0x0e, 0x9f, 0xf0, 0xdf, 0x23, 0xde, 0x1b, 0x8f, 0xfe, 0x90, - 0xc9, 0x1e, 0xd6, 0xf7, 0xba, 0x79, 0x86, 0xbc, 0xf1, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x17, - 0x08, 0x55, 0x51, 0x57, 0x21, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/controller.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/controller.pb.go deleted file mode 100644 index 558f6fb4..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/controller.pb.go +++ /dev/null @@ -1,476 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/clouddebugger/v2/controller.proto - -/* -Package clouddebugger is a generated protocol buffer package. - -It is generated from these files: - google/devtools/clouddebugger/v2/controller.proto - google/devtools/clouddebugger/v2/data.proto - google/devtools/clouddebugger/v2/debugger.proto - -It has these top-level messages: - RegisterDebuggeeRequest - RegisterDebuggeeResponse - ListActiveBreakpointsRequest - ListActiveBreakpointsResponse - UpdateActiveBreakpointRequest - UpdateActiveBreakpointResponse - FormatMessage - StatusMessage - SourceLocation - Variable - StackFrame - Breakpoint - Debuggee - SetBreakpointRequest - SetBreakpointResponse - GetBreakpointRequest - GetBreakpointResponse - DeleteBreakpointRequest - ListBreakpointsRequest - ListBreakpointsResponse - ListDebuggeesRequest - ListDebuggeesResponse -*/ -package clouddebugger - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Request to register a debuggee. -type RegisterDebuggeeRequest struct { - // Debuggee information to register. - // The fields `project`, `uniquifier`, `description` and `agent_version` - // of the debuggee must be set. - Debuggee *Debuggee `protobuf:"bytes,1,opt,name=debuggee" json:"debuggee,omitempty"` -} - -func (m *RegisterDebuggeeRequest) Reset() { *m = RegisterDebuggeeRequest{} } -func (m *RegisterDebuggeeRequest) String() string { return proto.CompactTextString(m) } -func (*RegisterDebuggeeRequest) ProtoMessage() {} -func (*RegisterDebuggeeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *RegisterDebuggeeRequest) GetDebuggee() *Debuggee { - if m != nil { - return m.Debuggee - } - return nil -} - -// Response for registering a debuggee. -type RegisterDebuggeeResponse struct { - // Debuggee resource. - // The field `id` is guranteed to be set (in addition to the echoed fields). - // If the field `is_disabled` is set to `true`, the agent should disable - // itself by removing all breakpoints and detaching from the application. - // It should however continue to poll `RegisterDebuggee` until reenabled. - Debuggee *Debuggee `protobuf:"bytes,1,opt,name=debuggee" json:"debuggee,omitempty"` -} - -func (m *RegisterDebuggeeResponse) Reset() { *m = RegisterDebuggeeResponse{} } -func (m *RegisterDebuggeeResponse) String() string { return proto.CompactTextString(m) } -func (*RegisterDebuggeeResponse) ProtoMessage() {} -func (*RegisterDebuggeeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *RegisterDebuggeeResponse) GetDebuggee() *Debuggee { - if m != nil { - return m.Debuggee - } - return nil -} - -// Request to list active breakpoints. -type ListActiveBreakpointsRequest struct { - // Identifies the debuggee. - DebuggeeId string `protobuf:"bytes,1,opt,name=debuggee_id,json=debuggeeId" json:"debuggee_id,omitempty"` - // A token that, if specified, blocks the method call until the list - // of active breakpoints has changed, or a server-selected timeout has - // expired. The value should be set from the `next_wait_token` field in - // the last response. The initial value should be set to `"init"`. - WaitToken string `protobuf:"bytes,2,opt,name=wait_token,json=waitToken" json:"wait_token,omitempty"` - // If set to `true` (recommended), returns `google.rpc.Code.OK` status and - // sets the `wait_expired` response field to `true` when the server-selected - // timeout has expired. - // - // If set to `false` (deprecated), returns `google.rpc.Code.ABORTED` status - // when the server-selected timeout has expired. - SuccessOnTimeout bool `protobuf:"varint,3,opt,name=success_on_timeout,json=successOnTimeout" json:"success_on_timeout,omitempty"` -} - -func (m *ListActiveBreakpointsRequest) Reset() { *m = ListActiveBreakpointsRequest{} } -func (m *ListActiveBreakpointsRequest) String() string { return proto.CompactTextString(m) } -func (*ListActiveBreakpointsRequest) ProtoMessage() {} -func (*ListActiveBreakpointsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ListActiveBreakpointsRequest) GetDebuggeeId() string { - if m != nil { - return m.DebuggeeId - } - return "" -} - -func (m *ListActiveBreakpointsRequest) GetWaitToken() string { - if m != nil { - return m.WaitToken - } - return "" -} - -func (m *ListActiveBreakpointsRequest) GetSuccessOnTimeout() bool { - if m != nil { - return m.SuccessOnTimeout - } - return false -} - -// Response for listing active breakpoints. -type ListActiveBreakpointsResponse struct { - // List of all active breakpoints. - // The fields `id` and `location` are guaranteed to be set on each breakpoint. - Breakpoints []*Breakpoint `protobuf:"bytes,1,rep,name=breakpoints" json:"breakpoints,omitempty"` - // A token that can be used in the next method call to block until - // the list of breakpoints changes. - NextWaitToken string `protobuf:"bytes,2,opt,name=next_wait_token,json=nextWaitToken" json:"next_wait_token,omitempty"` - // If set to `true`, indicates that there is no change to the - // list of active breakpoints and the server-selected timeout has expired. - // The `breakpoints` field would be empty and should be ignored. - WaitExpired bool `protobuf:"varint,3,opt,name=wait_expired,json=waitExpired" json:"wait_expired,omitempty"` -} - -func (m *ListActiveBreakpointsResponse) Reset() { *m = ListActiveBreakpointsResponse{} } -func (m *ListActiveBreakpointsResponse) String() string { return proto.CompactTextString(m) } -func (*ListActiveBreakpointsResponse) ProtoMessage() {} -func (*ListActiveBreakpointsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListActiveBreakpointsResponse) GetBreakpoints() []*Breakpoint { - if m != nil { - return m.Breakpoints - } - return nil -} - -func (m *ListActiveBreakpointsResponse) GetNextWaitToken() string { - if m != nil { - return m.NextWaitToken - } - return "" -} - -func (m *ListActiveBreakpointsResponse) GetWaitExpired() bool { - if m != nil { - return m.WaitExpired - } - return false -} - -// Request to update an active breakpoint. -type UpdateActiveBreakpointRequest struct { - // Identifies the debuggee being debugged. - DebuggeeId string `protobuf:"bytes,1,opt,name=debuggee_id,json=debuggeeId" json:"debuggee_id,omitempty"` - // Updated breakpoint information. - // The field `id` must be set. - // The agent must echo all Breakpoint specification fields in the update. - Breakpoint *Breakpoint `protobuf:"bytes,2,opt,name=breakpoint" json:"breakpoint,omitempty"` -} - -func (m *UpdateActiveBreakpointRequest) Reset() { *m = UpdateActiveBreakpointRequest{} } -func (m *UpdateActiveBreakpointRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateActiveBreakpointRequest) ProtoMessage() {} -func (*UpdateActiveBreakpointRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *UpdateActiveBreakpointRequest) GetDebuggeeId() string { - if m != nil { - return m.DebuggeeId - } - return "" -} - -func (m *UpdateActiveBreakpointRequest) GetBreakpoint() *Breakpoint { - if m != nil { - return m.Breakpoint - } - return nil -} - -// Response for updating an active breakpoint. -// The message is defined to allow future extensions. -type UpdateActiveBreakpointResponse struct { -} - -func (m *UpdateActiveBreakpointResponse) Reset() { *m = UpdateActiveBreakpointResponse{} } -func (m *UpdateActiveBreakpointResponse) String() string { return proto.CompactTextString(m) } -func (*UpdateActiveBreakpointResponse) ProtoMessage() {} -func (*UpdateActiveBreakpointResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func init() { - proto.RegisterType((*RegisterDebuggeeRequest)(nil), "google.devtools.clouddebugger.v2.RegisterDebuggeeRequest") - proto.RegisterType((*RegisterDebuggeeResponse)(nil), "google.devtools.clouddebugger.v2.RegisterDebuggeeResponse") - proto.RegisterType((*ListActiveBreakpointsRequest)(nil), "google.devtools.clouddebugger.v2.ListActiveBreakpointsRequest") - proto.RegisterType((*ListActiveBreakpointsResponse)(nil), "google.devtools.clouddebugger.v2.ListActiveBreakpointsResponse") - proto.RegisterType((*UpdateActiveBreakpointRequest)(nil), "google.devtools.clouddebugger.v2.UpdateActiveBreakpointRequest") - proto.RegisterType((*UpdateActiveBreakpointResponse)(nil), "google.devtools.clouddebugger.v2.UpdateActiveBreakpointResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Controller2 service - -type Controller2Client interface { - // Registers the debuggee with the controller service. - // - // All agents attached to the same application must call this method with - // exactly the same request content to get back the same stable `debuggee_id`. - // Agents should call this method again whenever `google.rpc.Code.NOT_FOUND` - // is returned from any controller method. - // - // This protocol allows the controller service to disable debuggees, recover - // from data loss, or change the `debuggee_id` format. Agents must handle - // `debuggee_id` value changing upon re-registration. - RegisterDebuggee(ctx context.Context, in *RegisterDebuggeeRequest, opts ...grpc.CallOption) (*RegisterDebuggeeResponse, error) - // Returns the list of all active breakpoints for the debuggee. - // - // The breakpoint specification (`location`, `condition`, and `expressions` - // fields) is semantically immutable, although the field values may - // change. For example, an agent may update the location line number - // to reflect the actual line where the breakpoint was set, but this - // doesn't change the breakpoint semantics. - // - // This means that an agent does not need to check if a breakpoint has changed - // when it encounters the same breakpoint on a successive call. - // Moreover, an agent should remember the breakpoints that are completed - // until the controller removes them from the active list to avoid - // setting those breakpoints again. - ListActiveBreakpoints(ctx context.Context, in *ListActiveBreakpointsRequest, opts ...grpc.CallOption) (*ListActiveBreakpointsResponse, error) - // Updates the breakpoint state or mutable fields. - // The entire Breakpoint message must be sent back to the controller service. - // - // Updates to active breakpoint fields are only allowed if the new value - // does not change the breakpoint specification. Updates to the `location`, - // `condition` and `expressions` fields should not alter the breakpoint - // semantics. These may only make changes such as canonicalizing a value - // or snapping the location to the correct line of code. - UpdateActiveBreakpoint(ctx context.Context, in *UpdateActiveBreakpointRequest, opts ...grpc.CallOption) (*UpdateActiveBreakpointResponse, error) -} - -type controller2Client struct { - cc *grpc.ClientConn -} - -func NewController2Client(cc *grpc.ClientConn) Controller2Client { - return &controller2Client{cc} -} - -func (c *controller2Client) RegisterDebuggee(ctx context.Context, in *RegisterDebuggeeRequest, opts ...grpc.CallOption) (*RegisterDebuggeeResponse, error) { - out := new(RegisterDebuggeeResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouddebugger.v2.Controller2/RegisterDebuggee", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *controller2Client) ListActiveBreakpoints(ctx context.Context, in *ListActiveBreakpointsRequest, opts ...grpc.CallOption) (*ListActiveBreakpointsResponse, error) { - out := new(ListActiveBreakpointsResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouddebugger.v2.Controller2/ListActiveBreakpoints", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *controller2Client) UpdateActiveBreakpoint(ctx context.Context, in *UpdateActiveBreakpointRequest, opts ...grpc.CallOption) (*UpdateActiveBreakpointResponse, error) { - out := new(UpdateActiveBreakpointResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouddebugger.v2.Controller2/UpdateActiveBreakpoint", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Controller2 service - -type Controller2Server interface { - // Registers the debuggee with the controller service. - // - // All agents attached to the same application must call this method with - // exactly the same request content to get back the same stable `debuggee_id`. - // Agents should call this method again whenever `google.rpc.Code.NOT_FOUND` - // is returned from any controller method. - // - // This protocol allows the controller service to disable debuggees, recover - // from data loss, or change the `debuggee_id` format. Agents must handle - // `debuggee_id` value changing upon re-registration. - RegisterDebuggee(context.Context, *RegisterDebuggeeRequest) (*RegisterDebuggeeResponse, error) - // Returns the list of all active breakpoints for the debuggee. - // - // The breakpoint specification (`location`, `condition`, and `expressions` - // fields) is semantically immutable, although the field values may - // change. For example, an agent may update the location line number - // to reflect the actual line where the breakpoint was set, but this - // doesn't change the breakpoint semantics. - // - // This means that an agent does not need to check if a breakpoint has changed - // when it encounters the same breakpoint on a successive call. - // Moreover, an agent should remember the breakpoints that are completed - // until the controller removes them from the active list to avoid - // setting those breakpoints again. - ListActiveBreakpoints(context.Context, *ListActiveBreakpointsRequest) (*ListActiveBreakpointsResponse, error) - // Updates the breakpoint state or mutable fields. - // The entire Breakpoint message must be sent back to the controller service. - // - // Updates to active breakpoint fields are only allowed if the new value - // does not change the breakpoint specification. Updates to the `location`, - // `condition` and `expressions` fields should not alter the breakpoint - // semantics. These may only make changes such as canonicalizing a value - // or snapping the location to the correct line of code. - UpdateActiveBreakpoint(context.Context, *UpdateActiveBreakpointRequest) (*UpdateActiveBreakpointResponse, error) -} - -func RegisterController2Server(s *grpc.Server, srv Controller2Server) { - s.RegisterService(&_Controller2_serviceDesc, srv) -} - -func _Controller2_RegisterDebuggee_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RegisterDebuggeeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(Controller2Server).RegisterDebuggee(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouddebugger.v2.Controller2/RegisterDebuggee", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(Controller2Server).RegisterDebuggee(ctx, req.(*RegisterDebuggeeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Controller2_ListActiveBreakpoints_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListActiveBreakpointsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(Controller2Server).ListActiveBreakpoints(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouddebugger.v2.Controller2/ListActiveBreakpoints", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(Controller2Server).ListActiveBreakpoints(ctx, req.(*ListActiveBreakpointsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Controller2_UpdateActiveBreakpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateActiveBreakpointRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(Controller2Server).UpdateActiveBreakpoint(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouddebugger.v2.Controller2/UpdateActiveBreakpoint", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(Controller2Server).UpdateActiveBreakpoint(ctx, req.(*UpdateActiveBreakpointRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Controller2_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.clouddebugger.v2.Controller2", - HandlerType: (*Controller2Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "RegisterDebuggee", - Handler: _Controller2_RegisterDebuggee_Handler, - }, - { - MethodName: "ListActiveBreakpoints", - Handler: _Controller2_ListActiveBreakpoints_Handler, - }, - { - MethodName: "UpdateActiveBreakpoint", - Handler: _Controller2_UpdateActiveBreakpoint_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/clouddebugger/v2/controller.proto", -} - -func init() { proto.RegisterFile("google/devtools/clouddebugger/v2/controller.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 602 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xdd, 0x6a, 0xd4, 0x40, - 0x14, 0x66, 0x5a, 0x94, 0x76, 0xa2, 0xb4, 0x0c, 0xa8, 0x21, 0xb6, 0xba, 0x0d, 0x52, 0x96, 0x75, - 0xc9, 0x60, 0xf4, 0xc6, 0x15, 0xfc, 0xd9, 0xaa, 0x45, 0x68, 0xb5, 0x2c, 0xb5, 0x82, 0x2c, 0x2c, - 0xd9, 0xe4, 0x18, 0x86, 0x66, 0x67, 0x62, 0x66, 0xb2, 0x56, 0x4a, 0x6f, 0xbc, 0x55, 0xbc, 0xf1, - 0x2d, 0x7c, 0x01, 0xc1, 0x0b, 0x1f, 0xc0, 0x5b, 0x7d, 0x04, 0xaf, 0x7c, 0x0a, 0xc9, 0xdf, 0xfe, - 0xb4, 0xdd, 0xa6, 0x5d, 0xbc, 0xcc, 0x77, 0xe6, 0xfb, 0xce, 0xf7, 0x4d, 0xce, 0x1c, 0x7c, 0xcb, - 0x17, 0xc2, 0x0f, 0x80, 0x7a, 0xd0, 0x57, 0x42, 0x04, 0x92, 0xba, 0x81, 0x88, 0x3d, 0x0f, 0xba, - 0xb1, 0xef, 0x43, 0x44, 0xfb, 0x36, 0x75, 0x05, 0x57, 0x91, 0x08, 0x02, 0x88, 0xac, 0x30, 0x12, - 0x4a, 0x90, 0x4a, 0x46, 0xb1, 0x0a, 0x8a, 0x35, 0x46, 0xb1, 0xfa, 0xb6, 0xb1, 0x94, 0x8b, 0x3a, - 0x21, 0xa3, 0x0e, 0xe7, 0x42, 0x39, 0x8a, 0x09, 0x2e, 0x33, 0xbe, 0x71, 0xb3, 0xb4, 0xa5, 0xe7, - 0x28, 0x27, 0x3f, 0x7c, 0x35, 0x3f, 0x9c, 0x7e, 0x75, 0xe3, 0x37, 0x14, 0x7a, 0xa1, 0x7a, 0x9f, - 0x15, 0x4d, 0x07, 0x5f, 0x69, 0x81, 0xcf, 0xa4, 0x82, 0xe8, 0x71, 0x46, 0x87, 0x16, 0xbc, 0x8d, - 0x41, 0x2a, 0xf2, 0x14, 0xcf, 0xe5, 0x8a, 0xa0, 0xa3, 0x0a, 0xaa, 0x6a, 0x76, 0xcd, 0x2a, 0xf3, - 0x6d, 0x0d, 0x44, 0x06, 0x5c, 0xb3, 0x8b, 0xf5, 0xa3, 0x2d, 0x64, 0x28, 0xb8, 0x84, 0xff, 0xd6, - 0xe3, 0x13, 0xc2, 0x4b, 0x1b, 0x4c, 0xaa, 0x47, 0xae, 0x62, 0x7d, 0x68, 0x46, 0xe0, 0xec, 0x86, - 0x82, 0x71, 0x25, 0x8b, 0x30, 0xd7, 0xb1, 0x56, 0x1c, 0xee, 0x30, 0x2f, 0xed, 0x35, 0xdf, 0xc2, - 0x05, 0xf4, 0xcc, 0x23, 0xcb, 0x18, 0xbf, 0x73, 0x98, 0xea, 0x28, 0xb1, 0x0b, 0x5c, 0x9f, 0x49, - 0xeb, 0xf3, 0x09, 0xb2, 0x9d, 0x00, 0xa4, 0x8e, 0x89, 0x8c, 0x5d, 0x17, 0xa4, 0xec, 0x08, 0xde, - 0x51, 0xac, 0x07, 0x22, 0x56, 0xfa, 0x6c, 0x05, 0x55, 0xe7, 0x5a, 0x8b, 0x79, 0xe5, 0x05, 0xdf, - 0xce, 0x70, 0xf3, 0x3b, 0xc2, 0xcb, 0x13, 0xec, 0xe4, 0xc1, 0x9f, 0x63, 0xad, 0x3b, 0x84, 0x75, - 0x54, 0x99, 0xad, 0x6a, 0x76, 0xbd, 0x3c, 0xfb, 0x50, 0xab, 0x35, 0x2a, 0x40, 0x56, 0xf1, 0x02, - 0x87, 0x3d, 0xd5, 0x39, 0x92, 0xe1, 0x62, 0x02, 0xbf, 0x1a, 0xe4, 0x58, 0xc1, 0x17, 0xd2, 0x23, - 0xb0, 0x17, 0xb2, 0x08, 0xbc, 0x3c, 0x81, 0x96, 0x60, 0x4f, 0x32, 0xc8, 0xfc, 0x8c, 0xf0, 0xf2, - 0xcb, 0xd0, 0x73, 0x14, 0x1c, 0xb6, 0x7f, 0xea, 0xcb, 0xdc, 0xc0, 0x78, 0x68, 0x2e, 0x35, 0x72, - 0xd6, 0x70, 0x23, 0x7c, 0xb3, 0x82, 0xaf, 0x4d, 0xf2, 0x93, 0xdd, 0xa6, 0xfd, 0xf1, 0x1c, 0xd6, - 0xd6, 0x06, 0x8f, 0xcc, 0x26, 0xdf, 0x10, 0x5e, 0x3c, 0x3c, 0x73, 0xe4, 0x6e, 0xb9, 0x81, 0x09, - 0x4f, 0xc1, 0x68, 0x4c, 0x43, 0xcd, 0xbc, 0x99, 0xf5, 0x0f, 0xbf, 0xfe, 0x7c, 0x99, 0x59, 0x35, - 0x57, 0xc6, 0x37, 0x01, 0x2d, 0xae, 0x4b, 0xd2, 0x28, 0xa7, 0x36, 0x50, 0x8d, 0xfc, 0x46, 0xf8, - 0xd2, 0xb1, 0x93, 0x43, 0xee, 0x97, 0x7b, 0x38, 0xe9, 0x05, 0x18, 0x0f, 0xa6, 0xe6, 0xe7, 0x41, - 0x1a, 0x69, 0x90, 0x3b, 0xc4, 0x9e, 0x18, 0x64, 0x7f, 0x64, 0x2a, 0x0e, 0xe8, 0xe8, 0x78, 0xfe, - 0x45, 0xf8, 0xf2, 0xf1, 0xff, 0x90, 0x9c, 0xc2, 0xd7, 0x89, 0xd3, 0x68, 0x3c, 0x9c, 0x5e, 0x20, - 0x4f, 0xb6, 0x99, 0x26, 0x5b, 0x37, 0x9a, 0x67, 0x4f, 0x46, 0xf7, 0x87, 0x1f, 0x16, 0xf3, 0x0e, - 0x1a, 0xa8, 0xd6, 0xfc, 0x81, 0xf0, 0x0d, 0x57, 0xf4, 0x4a, 0x6d, 0x35, 0x17, 0x86, 0x33, 0xbb, - 0x95, 0x6c, 0xe3, 0x2d, 0xf4, 0x7a, 0x33, 0x27, 0xf9, 0x22, 0x70, 0xb8, 0x6f, 0x89, 0xc8, 0xa7, - 0x3e, 0xf0, 0x74, 0x57, 0xd3, 0xac, 0xe4, 0x84, 0x4c, 0x4e, 0x5e, 0xfc, 0xf7, 0xc6, 0x80, 0xaf, - 0x33, 0xfa, 0x7a, 0xa6, 0xb7, 0x96, 0xc0, 0xc5, 0xe6, 0x8c, 0xac, 0x1d, 0xfb, 0x67, 0x51, 0x6a, - 0xa7, 0xa5, 0x76, 0x51, 0x6a, 0xef, 0xd8, 0xdd, 0xf3, 0x69, 0xbf, 0xdb, 0xff, 0x02, 0x00, 0x00, - 0xff, 0xff, 0x54, 0xe1, 0x5c, 0x2a, 0xda, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/data.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/data.pb.go deleted file mode 100644 index b280628d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/data.pb.go +++ /dev/null @@ -1,890 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/clouddebugger/v2/data.proto - -package clouddebugger - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_devtools_source_v1 "google.golang.org/genproto/googleapis/devtools/source/v1" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" -import google_protobuf2 "github.com/golang/protobuf/ptypes/wrappers" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Enumerates references to which the message applies. -type StatusMessage_Reference int32 - -const ( - // Status doesn't refer to any particular input. - StatusMessage_UNSPECIFIED StatusMessage_Reference = 0 - // Status applies to the breakpoint and is related to its location. - StatusMessage_BREAKPOINT_SOURCE_LOCATION StatusMessage_Reference = 3 - // Status applies to the breakpoint and is related to its condition. - StatusMessage_BREAKPOINT_CONDITION StatusMessage_Reference = 4 - // Status applies to the breakpoint and is related to its expressions. - StatusMessage_BREAKPOINT_EXPRESSION StatusMessage_Reference = 7 - // Status applies to the breakpoint and is related to its age. - StatusMessage_BREAKPOINT_AGE StatusMessage_Reference = 8 - // Status applies to the entire variable. - StatusMessage_VARIABLE_NAME StatusMessage_Reference = 5 - // Status applies to variable value (variable name is valid). - StatusMessage_VARIABLE_VALUE StatusMessage_Reference = 6 -) - -var StatusMessage_Reference_name = map[int32]string{ - 0: "UNSPECIFIED", - 3: "BREAKPOINT_SOURCE_LOCATION", - 4: "BREAKPOINT_CONDITION", - 7: "BREAKPOINT_EXPRESSION", - 8: "BREAKPOINT_AGE", - 5: "VARIABLE_NAME", - 6: "VARIABLE_VALUE", -} -var StatusMessage_Reference_value = map[string]int32{ - "UNSPECIFIED": 0, - "BREAKPOINT_SOURCE_LOCATION": 3, - "BREAKPOINT_CONDITION": 4, - "BREAKPOINT_EXPRESSION": 7, - "BREAKPOINT_AGE": 8, - "VARIABLE_NAME": 5, - "VARIABLE_VALUE": 6, -} - -func (x StatusMessage_Reference) String() string { - return proto.EnumName(StatusMessage_Reference_name, int32(x)) -} -func (StatusMessage_Reference) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } - -// Actions that can be taken when a breakpoint hits. -// Agents should reject breakpoints with unsupported or unknown action values. -type Breakpoint_Action int32 - -const ( - // Capture stack frame and variables and update the breakpoint. - // The data is only captured once. After that the breakpoint is set - // in a final state. - Breakpoint_CAPTURE Breakpoint_Action = 0 - // Log each breakpoint hit. The breakpoint remains active until - // deleted or expired. - Breakpoint_LOG Breakpoint_Action = 1 -) - -var Breakpoint_Action_name = map[int32]string{ - 0: "CAPTURE", - 1: "LOG", -} -var Breakpoint_Action_value = map[string]int32{ - "CAPTURE": 0, - "LOG": 1, -} - -func (x Breakpoint_Action) String() string { - return proto.EnumName(Breakpoint_Action_name, int32(x)) -} -func (Breakpoint_Action) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{5, 0} } - -// Log severity levels. -type Breakpoint_LogLevel int32 - -const ( - // Information log message. - Breakpoint_INFO Breakpoint_LogLevel = 0 - // Warning log message. - Breakpoint_WARNING Breakpoint_LogLevel = 1 - // Error log message. - Breakpoint_ERROR Breakpoint_LogLevel = 2 -) - -var Breakpoint_LogLevel_name = map[int32]string{ - 0: "INFO", - 1: "WARNING", - 2: "ERROR", -} -var Breakpoint_LogLevel_value = map[string]int32{ - "INFO": 0, - "WARNING": 1, - "ERROR": 2, -} - -func (x Breakpoint_LogLevel) String() string { - return proto.EnumName(Breakpoint_LogLevel_name, int32(x)) -} -func (Breakpoint_LogLevel) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{5, 1} } - -// Represents a message with parameters. -type FormatMessage struct { - // Format template for the message. The `format` uses placeholders `$0`, - // `$1`, etc. to reference parameters. `$$` can be used to denote the `$` - // character. - // - // Examples: - // - // * `Failed to load '$0' which helps debug $1 the first time it - // is loaded. Again, $0 is very important.` - // * `Please pay $$10 to use $0 instead of $1.` - Format string `protobuf:"bytes,1,opt,name=format" json:"format,omitempty"` - // Optional parameters to be embedded into the message. - Parameters []string `protobuf:"bytes,2,rep,name=parameters" json:"parameters,omitempty"` -} - -func (m *FormatMessage) Reset() { *m = FormatMessage{} } -func (m *FormatMessage) String() string { return proto.CompactTextString(m) } -func (*FormatMessage) ProtoMessage() {} -func (*FormatMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *FormatMessage) GetFormat() string { - if m != nil { - return m.Format - } - return "" -} - -func (m *FormatMessage) GetParameters() []string { - if m != nil { - return m.Parameters - } - return nil -} - -// Represents a contextual status message. -// The message can indicate an error or informational status, and refer to -// specific parts of the containing object. -// For example, the `Breakpoint.status` field can indicate an error referring -// to the `BREAKPOINT_SOURCE_LOCATION` with the message `Location not found`. -type StatusMessage struct { - // Distinguishes errors from informational messages. - IsError bool `protobuf:"varint,1,opt,name=is_error,json=isError" json:"is_error,omitempty"` - // Reference to which the message applies. - RefersTo StatusMessage_Reference `protobuf:"varint,2,opt,name=refers_to,json=refersTo,enum=google.devtools.clouddebugger.v2.StatusMessage_Reference" json:"refers_to,omitempty"` - // Status message text. - Description *FormatMessage `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (m *StatusMessage) Reset() { *m = StatusMessage{} } -func (m *StatusMessage) String() string { return proto.CompactTextString(m) } -func (*StatusMessage) ProtoMessage() {} -func (*StatusMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *StatusMessage) GetIsError() bool { - if m != nil { - return m.IsError - } - return false -} - -func (m *StatusMessage) GetRefersTo() StatusMessage_Reference { - if m != nil { - return m.RefersTo - } - return StatusMessage_UNSPECIFIED -} - -func (m *StatusMessage) GetDescription() *FormatMessage { - if m != nil { - return m.Description - } - return nil -} - -// Represents a location in the source code. -type SourceLocation struct { - // Path to the source file within the source context of the target binary. - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` - // Line inside the file. The first line in the file has the value `1`. - Line int32 `protobuf:"varint,2,opt,name=line" json:"line,omitempty"` -} - -func (m *SourceLocation) Reset() { *m = SourceLocation{} } -func (m *SourceLocation) String() string { return proto.CompactTextString(m) } -func (*SourceLocation) ProtoMessage() {} -func (*SourceLocation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *SourceLocation) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *SourceLocation) GetLine() int32 { - if m != nil { - return m.Line - } - return 0 -} - -// Represents a variable or an argument possibly of a compound object type. -// Note how the following variables are represented: -// -// 1) A simple variable: -// -// int x = 5 -// -// { name: "x", value: "5", type: "int" } // Captured variable -// -// 2) A compound object: -// -// struct T { -// int m1; -// int m2; -// }; -// T x = { 3, 7 }; -// -// { // Captured variable -// name: "x", -// type: "T", -// members { name: "m1", value: "3", type: "int" }, -// members { name: "m2", value: "7", type: "int" } -// } -// -// 3) A pointer where the pointee was captured: -// -// T x = { 3, 7 }; -// T* p = &x; -// -// { // Captured variable -// name: "p", -// type: "T*", -// value: "0x00500500", -// members { name: "m1", value: "3", type: "int" }, -// members { name: "m2", value: "7", type: "int" } -// } -// -// 4) A pointer where the pointee was not captured: -// -// T* p = new T; -// -// { // Captured variable -// name: "p", -// type: "T*", -// value: "0x00400400" -// status { is_error: true, description { format: "unavailable" } } -// } -// -// The status should describe the reason for the missing value, -// such as `<optimized out>`, `<inaccessible>`, `<pointers limit reached>`. -// -// Note that a null pointer should not have members. -// -// 5) An unnamed value: -// -// int* p = new int(7); -// -// { // Captured variable -// name: "p", -// value: "0x00500500", -// type: "int*", -// members { value: "7", type: "int" } } -// -// 6) An unnamed pointer where the pointee was not captured: -// -// int* p = new int(7); -// int** pp = &p; -// -// { // Captured variable -// name: "pp", -// value: "0x00500500", -// type: "int**", -// members { -// value: "0x00400400", -// type: "int*" -// status { -// is_error: true, -// description: { format: "unavailable" } } -// } -// } -// } -// -// To optimize computation, memory and network traffic, variables that -// repeat in the output multiple times can be stored once in a shared -// variable table and be referenced using the `var_table_index` field. The -// variables stored in the shared table are nameless and are essentially -// a partition of the complete variable. To reconstruct the complete -// variable, merge the referencing variable with the referenced variable. -// -// When using the shared variable table, the following variables: -// -// T x = { 3, 7 }; -// T* p = &x; -// T& r = x; -// -// { name: "x", var_table_index: 3, type: "T" } // Captured variables -// { name: "p", value "0x00500500", type="T*", var_table_index: 3 } -// { name: "r", type="T&", var_table_index: 3 } -// -// { // Shared variable table entry #3: -// members { name: "m1", value: "3", type: "int" }, -// members { name: "m2", value: "7", type: "int" } -// } -// -// Note that the pointer address is stored with the referencing variable -// and not with the referenced variable. This allows the referenced variable -// to be shared between pointers and references. -// -// The type field is optional. The debugger agent may or may not support it. -type Variable struct { - // Name of the variable, if any. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Simple value of the variable. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - // Variable type (e.g. `MyClass`). If the variable is split with - // `var_table_index`, `type` goes next to `value`. The interpretation of - // a type is agent specific. It is recommended to include the dynamic type - // rather than a static type of an object. - Type string `protobuf:"bytes,6,opt,name=type" json:"type,omitempty"` - // Members contained or pointed to by the variable. - Members []*Variable `protobuf:"bytes,3,rep,name=members" json:"members,omitempty"` - // Reference to a variable in the shared variable table. More than - // one variable can reference the same variable in the table. The - // `var_table_index` field is an index into `variable_table` in Breakpoint. - VarTableIndex *google_protobuf2.Int32Value `protobuf:"bytes,4,opt,name=var_table_index,json=varTableIndex" json:"var_table_index,omitempty"` - // Status associated with the variable. This field will usually stay - // unset. A status of a single variable only applies to that variable or - // expression. The rest of breakpoint data still remains valid. Variables - // might be reported in error state even when breakpoint is not in final - // state. - // - // The message may refer to variable name with `refers_to` set to - // `VARIABLE_NAME`. Alternatively `refers_to` will be set to `VARIABLE_VALUE`. - // In either case variable value and members will be unset. - // - // Example of error message applied to name: `Invalid expression syntax`. - // - // Example of information message applied to value: `Not captured`. - // - // Examples of error message applied to value: - // - // * `Malformed string`, - // * `Field f not found in class C` - // * `Null pointer dereference` - Status *StatusMessage `protobuf:"bytes,5,opt,name=status" json:"status,omitempty"` -} - -func (m *Variable) Reset() { *m = Variable{} } -func (m *Variable) String() string { return proto.CompactTextString(m) } -func (*Variable) ProtoMessage() {} -func (*Variable) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *Variable) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Variable) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *Variable) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *Variable) GetMembers() []*Variable { - if m != nil { - return m.Members - } - return nil -} - -func (m *Variable) GetVarTableIndex() *google_protobuf2.Int32Value { - if m != nil { - return m.VarTableIndex - } - return nil -} - -func (m *Variable) GetStatus() *StatusMessage { - if m != nil { - return m.Status - } - return nil -} - -// Represents a stack frame context. -type StackFrame struct { - // Demangled function name at the call site. - Function string `protobuf:"bytes,1,opt,name=function" json:"function,omitempty"` - // Source location of the call site. - Location *SourceLocation `protobuf:"bytes,2,opt,name=location" json:"location,omitempty"` - // Set of arguments passed to this function. - // Note that this might not be populated for all stack frames. - Arguments []*Variable `protobuf:"bytes,3,rep,name=arguments" json:"arguments,omitempty"` - // Set of local variables at the stack frame location. - // Note that this might not be populated for all stack frames. - Locals []*Variable `protobuf:"bytes,4,rep,name=locals" json:"locals,omitempty"` -} - -func (m *StackFrame) Reset() { *m = StackFrame{} } -func (m *StackFrame) String() string { return proto.CompactTextString(m) } -func (*StackFrame) ProtoMessage() {} -func (*StackFrame) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *StackFrame) GetFunction() string { - if m != nil { - return m.Function - } - return "" -} - -func (m *StackFrame) GetLocation() *SourceLocation { - if m != nil { - return m.Location - } - return nil -} - -func (m *StackFrame) GetArguments() []*Variable { - if m != nil { - return m.Arguments - } - return nil -} - -func (m *StackFrame) GetLocals() []*Variable { - if m != nil { - return m.Locals - } - return nil -} - -// Represents the breakpoint specification, status and results. -type Breakpoint struct { - // Breakpoint identifier, unique in the scope of the debuggee. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // Action that the agent should perform when the code at the - // breakpoint location is hit. - Action Breakpoint_Action `protobuf:"varint,13,opt,name=action,enum=google.devtools.clouddebugger.v2.Breakpoint_Action" json:"action,omitempty"` - // Breakpoint source location. - Location *SourceLocation `protobuf:"bytes,2,opt,name=location" json:"location,omitempty"` - // Condition that triggers the breakpoint. - // The condition is a compound boolean expression composed using expressions - // in a programming language at the source location. - Condition string `protobuf:"bytes,3,opt,name=condition" json:"condition,omitempty"` - // List of read-only expressions to evaluate at the breakpoint location. - // The expressions are composed using expressions in the programming language - // at the source location. If the breakpoint action is `LOG`, the evaluated - // expressions are included in log statements. - Expressions []string `protobuf:"bytes,4,rep,name=expressions" json:"expressions,omitempty"` - // Only relevant when action is `LOG`. Defines the message to log when - // the breakpoint hits. The message may include parameter placeholders `$0`, - // `$1`, etc. These placeholders are replaced with the evaluated value - // of the appropriate expression. Expressions not referenced in - // `log_message_format` are not logged. - // - // Example: `Message received, id = $0, count = $1` with - // `expressions` = `[ message.id, message.count ]`. - LogMessageFormat string `protobuf:"bytes,14,opt,name=log_message_format,json=logMessageFormat" json:"log_message_format,omitempty"` - // Indicates the severity of the log. Only relevant when action is `LOG`. - LogLevel Breakpoint_LogLevel `protobuf:"varint,15,opt,name=log_level,json=logLevel,enum=google.devtools.clouddebugger.v2.Breakpoint_LogLevel" json:"log_level,omitempty"` - // When true, indicates that this is a final result and the - // breakpoint state will not change from here on. - IsFinalState bool `protobuf:"varint,5,opt,name=is_final_state,json=isFinalState" json:"is_final_state,omitempty"` - // Time this breakpoint was created by the server in seconds resolution. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,11,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Time this breakpoint was finalized as seen by the server in seconds - // resolution. - FinalTime *google_protobuf1.Timestamp `protobuf:"bytes,12,opt,name=final_time,json=finalTime" json:"final_time,omitempty"` - // E-mail address of the user that created this breakpoint - UserEmail string `protobuf:"bytes,16,opt,name=user_email,json=userEmail" json:"user_email,omitempty"` - // Breakpoint status. - // - // The status includes an error flag and a human readable message. - // This field is usually unset. The message can be either - // informational or an error message. Regardless, clients should always - // display the text message back to the user. - // - // Error status indicates complete failure of the breakpoint. - // - // Example (non-final state): `Still loading symbols...` - // - // Examples (final state): - // - // * `Invalid line number` referring to location - // * `Field f not found in class C` referring to condition - Status *StatusMessage `protobuf:"bytes,10,opt,name=status" json:"status,omitempty"` - // The stack at breakpoint time. - StackFrames []*StackFrame `protobuf:"bytes,7,rep,name=stack_frames,json=stackFrames" json:"stack_frames,omitempty"` - // Values of evaluated expressions at breakpoint time. - // The evaluated expressions appear in exactly the same order they - // are listed in the `expressions` field. - // The `name` field holds the original expression text, the `value` or - // `members` field holds the result of the evaluated expression. - // If the expression cannot be evaluated, the `status` inside the `Variable` - // will indicate an error and contain the error text. - EvaluatedExpressions []*Variable `protobuf:"bytes,8,rep,name=evaluated_expressions,json=evaluatedExpressions" json:"evaluated_expressions,omitempty"` - // The `variable_table` exists to aid with computation, memory and network - // traffic optimization. It enables storing a variable once and reference - // it from multiple variables, including variables stored in the - // `variable_table` itself. - // For example, the same `this` object, which may appear at many levels of - // the stack, can have all of its data stored once in this table. The - // stack frame variables then would hold only a reference to it. - // - // The variable `var_table_index` field is an index into this repeated field. - // The stored objects are nameless and get their name from the referencing - // variable. The effective variable is a merge of the referencing variable - // and the referenced variable. - VariableTable []*Variable `protobuf:"bytes,9,rep,name=variable_table,json=variableTable" json:"variable_table,omitempty"` - // A set of custom breakpoint properties, populated by the agent, to be - // displayed to the user. - Labels map[string]string `protobuf:"bytes,17,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Breakpoint) Reset() { *m = Breakpoint{} } -func (m *Breakpoint) String() string { return proto.CompactTextString(m) } -func (*Breakpoint) ProtoMessage() {} -func (*Breakpoint) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *Breakpoint) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Breakpoint) GetAction() Breakpoint_Action { - if m != nil { - return m.Action - } - return Breakpoint_CAPTURE -} - -func (m *Breakpoint) GetLocation() *SourceLocation { - if m != nil { - return m.Location - } - return nil -} - -func (m *Breakpoint) GetCondition() string { - if m != nil { - return m.Condition - } - return "" -} - -func (m *Breakpoint) GetExpressions() []string { - if m != nil { - return m.Expressions - } - return nil -} - -func (m *Breakpoint) GetLogMessageFormat() string { - if m != nil { - return m.LogMessageFormat - } - return "" -} - -func (m *Breakpoint) GetLogLevel() Breakpoint_LogLevel { - if m != nil { - return m.LogLevel - } - return Breakpoint_INFO -} - -func (m *Breakpoint) GetIsFinalState() bool { - if m != nil { - return m.IsFinalState - } - return false -} - -func (m *Breakpoint) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Breakpoint) GetFinalTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FinalTime - } - return nil -} - -func (m *Breakpoint) GetUserEmail() string { - if m != nil { - return m.UserEmail - } - return "" -} - -func (m *Breakpoint) GetStatus() *StatusMessage { - if m != nil { - return m.Status - } - return nil -} - -func (m *Breakpoint) GetStackFrames() []*StackFrame { - if m != nil { - return m.StackFrames - } - return nil -} - -func (m *Breakpoint) GetEvaluatedExpressions() []*Variable { - if m != nil { - return m.EvaluatedExpressions - } - return nil -} - -func (m *Breakpoint) GetVariableTable() []*Variable { - if m != nil { - return m.VariableTable - } - return nil -} - -func (m *Breakpoint) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// Represents the debugged application. The application may include one or more -// replicated processes executing the same code. Each of these processes is -// attached with a debugger agent, carrying out the debugging commands. -// Agents attached to the same debuggee identify themselves as such by using -// exactly the same Debuggee message value when registering. -type Debuggee struct { - // Unique identifier for the debuggee generated by the controller service. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // Project the debuggee is associated with. - // Use project number or id when registering a Google Cloud Platform project. - Project string `protobuf:"bytes,2,opt,name=project" json:"project,omitempty"` - // Uniquifier to further distiguish the application. - // It is possible that different applications might have identical values in - // the debuggee message, thus, incorrectly identified as a single application - // by the Controller service. This field adds salt to further distiguish the - // application. Agents should consider seeding this field with value that - // identifies the code, binary, configuration and environment. - Uniquifier string `protobuf:"bytes,3,opt,name=uniquifier" json:"uniquifier,omitempty"` - // Human readable description of the debuggee. - // Including a human-readable project name, environment name and version - // information is recommended. - Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"` - // If set to `true`, indicates that Controller service does not detect any - // activity from the debuggee agents and the application is possibly stopped. - IsInactive bool `protobuf:"varint,5,opt,name=is_inactive,json=isInactive" json:"is_inactive,omitempty"` - // Version ID of the agent. - // Schema: `domain/language-platform/vmajor.minor` (for example - // `google.com/java-gcp/v1.1`). - AgentVersion string `protobuf:"bytes,6,opt,name=agent_version,json=agentVersion" json:"agent_version,omitempty"` - // If set to `true`, indicates that the agent should disable itself and - // detach from the debuggee. - IsDisabled bool `protobuf:"varint,7,opt,name=is_disabled,json=isDisabled" json:"is_disabled,omitempty"` - // Human readable message to be displayed to the user about this debuggee. - // Absence of this field indicates no status. The message can be either - // informational or an error status. - Status *StatusMessage `protobuf:"bytes,8,opt,name=status" json:"status,omitempty"` - // References to the locations and revisions of the source code used in the - // deployed application. - SourceContexts []*google_devtools_source_v1.SourceContext `protobuf:"bytes,9,rep,name=source_contexts,json=sourceContexts" json:"source_contexts,omitempty"` - // References to the locations and revisions of the source code used in the - // deployed application. - // - // NOTE: this field is experimental and can be ignored. - ExtSourceContexts []*google_devtools_source_v1.ExtendedSourceContext `protobuf:"bytes,13,rep,name=ext_source_contexts,json=extSourceContexts" json:"ext_source_contexts,omitempty"` - // A set of custom debuggee properties, populated by the agent, to be - // displayed to the user. - Labels map[string]string `protobuf:"bytes,11,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Debuggee) Reset() { *m = Debuggee{} } -func (m *Debuggee) String() string { return proto.CompactTextString(m) } -func (*Debuggee) ProtoMessage() {} -func (*Debuggee) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *Debuggee) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Debuggee) GetProject() string { - if m != nil { - return m.Project - } - return "" -} - -func (m *Debuggee) GetUniquifier() string { - if m != nil { - return m.Uniquifier - } - return "" -} - -func (m *Debuggee) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Debuggee) GetIsInactive() bool { - if m != nil { - return m.IsInactive - } - return false -} - -func (m *Debuggee) GetAgentVersion() string { - if m != nil { - return m.AgentVersion - } - return "" -} - -func (m *Debuggee) GetIsDisabled() bool { - if m != nil { - return m.IsDisabled - } - return false -} - -func (m *Debuggee) GetStatus() *StatusMessage { - if m != nil { - return m.Status - } - return nil -} - -func (m *Debuggee) GetSourceContexts() []*google_devtools_source_v1.SourceContext { - if m != nil { - return m.SourceContexts - } - return nil -} - -func (m *Debuggee) GetExtSourceContexts() []*google_devtools_source_v1.ExtendedSourceContext { - if m != nil { - return m.ExtSourceContexts - } - return nil -} - -func (m *Debuggee) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func init() { - proto.RegisterType((*FormatMessage)(nil), "google.devtools.clouddebugger.v2.FormatMessage") - proto.RegisterType((*StatusMessage)(nil), "google.devtools.clouddebugger.v2.StatusMessage") - proto.RegisterType((*SourceLocation)(nil), "google.devtools.clouddebugger.v2.SourceLocation") - proto.RegisterType((*Variable)(nil), "google.devtools.clouddebugger.v2.Variable") - proto.RegisterType((*StackFrame)(nil), "google.devtools.clouddebugger.v2.StackFrame") - proto.RegisterType((*Breakpoint)(nil), "google.devtools.clouddebugger.v2.Breakpoint") - proto.RegisterType((*Debuggee)(nil), "google.devtools.clouddebugger.v2.Debuggee") - proto.RegisterEnum("google.devtools.clouddebugger.v2.StatusMessage_Reference", StatusMessage_Reference_name, StatusMessage_Reference_value) - proto.RegisterEnum("google.devtools.clouddebugger.v2.Breakpoint_Action", Breakpoint_Action_name, Breakpoint_Action_value) - proto.RegisterEnum("google.devtools.clouddebugger.v2.Breakpoint_LogLevel", Breakpoint_LogLevel_name, Breakpoint_LogLevel_value) -} - -func init() { proto.RegisterFile("google/devtools/clouddebugger/v2/data.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1270 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x5d, 0x92, 0xda, 0xc6, - 0x16, 0x36, 0x3f, 0x03, 0xd2, 0x61, 0x60, 0x70, 0x5f, 0xfb, 0x96, 0x3c, 0xd7, 0x77, 0x4c, 0x71, - 0xfd, 0x30, 0x75, 0xe3, 0x02, 0x1b, 0x57, 0x52, 0x76, 0xfc, 0xc4, 0x30, 0x9a, 0x09, 0x65, 0x0c, - 0xb8, 0x99, 0x21, 0xa9, 0x94, 0xab, 0x94, 0x1e, 0xd4, 0x28, 0x8a, 0x85, 0xa4, 0x74, 0x37, 0x64, - 0xfc, 0xee, 0x65, 0x64, 0x05, 0xa9, 0x2c, 0x20, 0x6b, 0xc8, 0x26, 0xf2, 0x96, 0x75, 0xa4, 0xba, - 0xd5, 0xc2, 0xc2, 0x4e, 0x82, 0x27, 0xf6, 0x5b, 0xf7, 0x77, 0xbe, 0xf3, 0xb5, 0x38, 0xfd, 0x9d, - 0x23, 0x01, 0x9f, 0x78, 0x51, 0xe4, 0x05, 0xb4, 0xed, 0xd2, 0x95, 0x88, 0xa2, 0x80, 0xb7, 0x67, - 0x41, 0xb4, 0x74, 0x5d, 0x7a, 0xb1, 0xf4, 0x3c, 0xca, 0xda, 0xab, 0x4e, 0xdb, 0x25, 0x82, 0xb4, - 0x62, 0x16, 0x89, 0x08, 0x35, 0x12, 0x72, 0x2b, 0x25, 0xb7, 0x36, 0xc8, 0xad, 0x55, 0x67, 0xff, - 0xb6, 0x96, 0x23, 0xb1, 0xdf, 0x26, 0x61, 0x18, 0x09, 0x22, 0xfc, 0x28, 0xe4, 0x49, 0xfe, 0x7e, - 0xeb, 0xed, 0xc3, 0x78, 0xb4, 0x64, 0x33, 0xda, 0x5e, 0x3d, 0xd0, 0x2b, 0x67, 0x16, 0x85, 0x82, - 0x5e, 0x0a, 0xcd, 0xbf, 0xa3, 0xf9, 0x6a, 0x77, 0xb1, 0x9c, 0xb7, 0x85, 0xbf, 0xa0, 0x5c, 0x90, - 0x45, 0xac, 0x09, 0x07, 0x6f, 0x13, 0x7e, 0x60, 0x24, 0x8e, 0x29, 0xd3, 0x07, 0x36, 0x4f, 0xa1, - 0x7a, 0x12, 0xb1, 0x05, 0x11, 0xcf, 0x28, 0xe7, 0xc4, 0xa3, 0xe8, 0xdf, 0x50, 0x9a, 0x2b, 0xc0, - 0xca, 0x35, 0x72, 0x87, 0x26, 0xd6, 0x3b, 0x74, 0x00, 0x10, 0x13, 0x46, 0x16, 0x54, 0x50, 0xc6, - 0xad, 0x7c, 0xa3, 0x70, 0x68, 0xe2, 0x0c, 0xd2, 0x7c, 0x5d, 0x80, 0xea, 0x44, 0x10, 0xb1, 0xe4, - 0xa9, 0xd2, 0x2d, 0x30, 0x7c, 0xee, 0x50, 0xc6, 0x22, 0xa6, 0xb4, 0x0c, 0x5c, 0xf6, 0xb9, 0x2d, - 0xb7, 0x68, 0x0a, 0x26, 0xa3, 0x73, 0xca, 0xb8, 0x23, 0x22, 0x2b, 0xdf, 0xc8, 0x1d, 0xd6, 0x3a, - 0x8f, 0x5b, 0xdb, 0x4a, 0xd7, 0xda, 0x90, 0x6f, 0x61, 0x29, 0x40, 0xc3, 0x19, 0xc5, 0x46, 0xa2, - 0x75, 0x16, 0xa1, 0xe7, 0x50, 0x71, 0x29, 0x9f, 0x31, 0x3f, 0x96, 0x45, 0xb5, 0x0a, 0x8d, 0xdc, - 0x61, 0xa5, 0xd3, 0xde, 0xae, 0xbc, 0x51, 0x02, 0x9c, 0xd5, 0x68, 0xfe, 0x9c, 0x03, 0x73, 0x7d, - 0x14, 0xda, 0x83, 0xca, 0xf9, 0x70, 0x32, 0xb6, 0x7b, 0xfd, 0x93, 0xbe, 0x7d, 0x5c, 0xbf, 0x86, - 0x0e, 0x60, 0xff, 0x08, 0xdb, 0xdd, 0xa7, 0xe3, 0x51, 0x7f, 0x78, 0xe6, 0x4c, 0x46, 0xe7, 0xb8, - 0x67, 0x3b, 0x83, 0x51, 0xaf, 0x7b, 0xd6, 0x1f, 0x0d, 0xeb, 0x05, 0x64, 0xc1, 0x8d, 0x4c, 0xbc, - 0x37, 0x1a, 0x1e, 0xf7, 0x55, 0xa4, 0x88, 0x6e, 0xc1, 0xcd, 0x4c, 0xc4, 0xfe, 0x6a, 0x8c, 0xed, - 0xc9, 0x44, 0x86, 0xca, 0x08, 0x41, 0x2d, 0x13, 0xea, 0x9e, 0xda, 0x75, 0x03, 0x5d, 0x87, 0xea, - 0xb4, 0x8b, 0xfb, 0xdd, 0xa3, 0x81, 0xed, 0x0c, 0xbb, 0xcf, 0xec, 0xfa, 0x8e, 0xa4, 0xad, 0xa1, - 0x69, 0x77, 0x70, 0x6e, 0xd7, 0x4b, 0xcd, 0x47, 0x50, 0x9b, 0x28, 0xa3, 0x0c, 0xa2, 0x99, 0x72, - 0x16, 0x42, 0x50, 0x8c, 0x89, 0xf8, 0x56, 0x5f, 0xa7, 0x5a, 0x4b, 0x2c, 0xf0, 0x43, 0xaa, 0x4a, - 0xbf, 0x83, 0xd5, 0xba, 0xf9, 0x63, 0x1e, 0x8c, 0x29, 0x61, 0x3e, 0xb9, 0x08, 0xa8, 0x24, 0x84, - 0x64, 0x41, 0xd3, 0x24, 0xb9, 0x46, 0x37, 0x60, 0x67, 0x45, 0x82, 0x65, 0x92, 0x65, 0xe2, 0x64, - 0x23, 0x99, 0xe2, 0x55, 0x4c, 0xad, 0x52, 0xc2, 0x94, 0x6b, 0x74, 0x0c, 0xe5, 0x05, 0x5d, 0x5c, - 0x48, 0xa3, 0x14, 0x1a, 0x85, 0xc3, 0x4a, 0xe7, 0xff, 0xdb, 0xaf, 0x20, 0x3d, 0x1a, 0xa7, 0xa9, - 0xa8, 0x07, 0x7b, 0x2b, 0xc2, 0x1c, 0x21, 0x51, 0xc7, 0x0f, 0x5d, 0x7a, 0x69, 0x15, 0xd5, 0x85, - 0xfe, 0x27, 0x55, 0x4b, 0x4d, 0xdd, 0xea, 0x87, 0xe2, 0x61, 0x67, 0x2a, 0x9f, 0x07, 0x57, 0x57, - 0x84, 0x9d, 0xc9, 0x94, 0xbe, 0xcc, 0x40, 0xa7, 0x50, 0xe2, 0xca, 0x36, 0xd6, 0xce, 0xfb, 0x9a, - 0x61, 0xc3, 0x66, 0x58, 0xa7, 0x37, 0x5f, 0xe7, 0x01, 0x26, 0x82, 0xcc, 0x5e, 0x9e, 0x48, 0xcb, - 0xa3, 0x7d, 0x30, 0xe6, 0xcb, 0x70, 0xa6, 0x6c, 0x96, 0x14, 0x69, 0xbd, 0x47, 0x03, 0x30, 0x02, - 0x5d, 0x7d, 0x55, 0xab, 0x4a, 0xe7, 0xfe, 0x7b, 0x9c, 0xba, 0x71, 0x6b, 0x78, 0xad, 0x80, 0xbe, - 0x00, 0x93, 0x30, 0x6f, 0xb9, 0xa0, 0xa1, 0xf8, 0x27, 0xe5, 0x7c, 0x93, 0x8c, 0x8e, 0xa0, 0x24, - 0x55, 0x03, 0x6e, 0x15, 0xaf, 0x2c, 0xa3, 0x33, 0x9b, 0xbf, 0x19, 0x00, 0x47, 0x8c, 0x92, 0x97, - 0x71, 0xe4, 0x87, 0x02, 0xd5, 0x20, 0xef, 0xbb, 0xba, 0x00, 0x79, 0xdf, 0x45, 0x4f, 0xa1, 0x44, - 0x92, 0xa2, 0x54, 0x55, 0x57, 0x3f, 0xdc, 0x7e, 0xc4, 0x1b, 0xb5, 0x56, 0x57, 0xa5, 0x62, 0x2d, - 0xf1, 0x91, 0xeb, 0x78, 0x1b, 0xcc, 0x59, 0x14, 0xba, 0xfe, 0x7a, 0x32, 0x98, 0xf8, 0x0d, 0x80, - 0x1a, 0x50, 0xa1, 0x97, 0x31, 0xa3, 0x9c, 0xcb, 0x69, 0xac, 0x0a, 0x64, 0xe2, 0x2c, 0x84, 0xee, - 0x01, 0x0a, 0x22, 0xcf, 0x59, 0x24, 0xbe, 0x70, 0xf4, 0x90, 0xac, 0x29, 0xa1, 0x7a, 0x10, 0x79, - 0xda, 0x30, 0xc9, 0x28, 0x41, 0x18, 0x4c, 0xc9, 0x0e, 0xe8, 0x8a, 0x06, 0xd6, 0x9e, 0xaa, 0xc5, - 0xa7, 0x57, 0xaa, 0xc5, 0x20, 0xf2, 0x06, 0x32, 0x59, 0xfe, 0x82, 0x64, 0x85, 0xee, 0x42, 0xcd, - 0xe7, 0xce, 0xdc, 0x0f, 0x49, 0xe0, 0x48, 0x57, 0x52, 0xe5, 0x69, 0x03, 0xef, 0xfa, 0xfc, 0x44, - 0x82, 0xd2, 0xb8, 0x14, 0x3d, 0x81, 0xca, 0x8c, 0x51, 0x22, 0xa8, 0x23, 0xdf, 0x05, 0x56, 0x45, - 0x15, 0x6e, 0xff, 0x9d, 0x96, 0x39, 0x4b, 0x5f, 0x14, 0x18, 0x12, 0xba, 0x04, 0xd0, 0x63, 0x80, - 0x44, 0x5f, 0xe5, 0xee, 0x6e, 0xcd, 0x35, 0x15, 0x5b, 0xa5, 0xfe, 0x17, 0x60, 0xc9, 0x29, 0x73, - 0xe8, 0x82, 0xf8, 0x81, 0x55, 0x4f, 0x0a, 0x2c, 0x11, 0x5b, 0x02, 0x99, 0x46, 0x84, 0x0f, 0x6a, - 0x44, 0x34, 0x82, 0x5d, 0x2e, 0xfb, 0xd0, 0x99, 0xcb, 0x46, 0xe4, 0x56, 0x59, 0x79, 0xf9, 0xde, - 0x7b, 0xc9, 0xe9, 0xee, 0xc5, 0x15, 0xbe, 0x5e, 0x73, 0xe4, 0xc0, 0x4d, 0x2a, 0x67, 0x19, 0x11, - 0xd4, 0x75, 0xb2, 0x26, 0x30, 0xae, 0xdc, 0x25, 0x37, 0xd6, 0x42, 0x76, 0xc6, 0x39, 0xcf, 0xa1, - 0xb6, 0xd2, 0x8c, 0x64, 0x9a, 0x59, 0xe6, 0x95, 0x95, 0xab, 0xa9, 0x82, 0x9a, 0x6d, 0x68, 0x0c, - 0xa5, 0x80, 0x5c, 0xd0, 0x80, 0x5b, 0xd7, 0x95, 0xd4, 0xa3, 0xab, 0x79, 0x4b, 0xa5, 0xda, 0xa1, - 0x60, 0xaf, 0xb0, 0xd6, 0xd9, 0x7f, 0x0c, 0x95, 0x0c, 0x8c, 0xea, 0x50, 0x78, 0x49, 0x5f, 0xe9, - 0xce, 0x96, 0xcb, 0x3f, 0x1f, 0xff, 0x9f, 0xe7, 0x1f, 0xe5, 0x9a, 0x07, 0x50, 0x4a, 0x3a, 0x17, - 0x55, 0xa0, 0xdc, 0xeb, 0x8e, 0xcf, 0xce, 0xb1, 0x5d, 0xbf, 0x86, 0xca, 0x50, 0x18, 0x8c, 0x4e, - 0xeb, 0xb9, 0xe6, 0x3d, 0x30, 0x52, 0x37, 0x23, 0x03, 0x8a, 0xfd, 0xe1, 0xc9, 0xa8, 0x7e, 0x4d, - 0x72, 0xbf, 0xec, 0xe2, 0x61, 0x7f, 0x78, 0x5a, 0xcf, 0x21, 0x13, 0x76, 0x6c, 0x8c, 0x47, 0xb8, - 0x9e, 0x6f, 0xfe, 0x5e, 0x04, 0xe3, 0x38, 0x79, 0x6e, 0xfa, 0xce, 0x7c, 0xb1, 0xa0, 0x1c, 0xb3, - 0xe8, 0x3b, 0x3a, 0x13, 0xfa, 0x31, 0xd2, 0xad, 0xfc, 0x3e, 0x59, 0x86, 0xfe, 0xf7, 0x4b, 0x7f, - 0xee, 0x53, 0xa6, 0xfb, 0x3b, 0x83, 0xc8, 0x06, 0xcf, 0x7e, 0x1a, 0x14, 0x15, 0x21, 0x0b, 0xa1, - 0x3b, 0x50, 0xf1, 0xb9, 0xe3, 0x87, 0x72, 0xfa, 0xac, 0xd2, 0xde, 0x02, 0x9f, 0xf7, 0x35, 0x82, - 0xfe, 0x07, 0x55, 0xe2, 0xd1, 0x50, 0x38, 0x2b, 0xca, 0xe4, 0xcd, 0xea, 0x77, 0xde, 0xae, 0x02, - 0xa7, 0x09, 0xa6, 0x55, 0x5c, 0x9f, 0xcb, 0x7b, 0x72, 0xad, 0x72, 0xaa, 0x72, 0xac, 0x91, 0x4c, - 0x23, 0x18, 0x1f, 0xd6, 0x08, 0xcf, 0x61, 0x6f, 0xf3, 0x9b, 0x90, 0x6b, 0x5f, 0x1d, 0xbe, 0xa3, - 0x98, 0xf0, 0x5a, 0xab, 0x07, 0x7a, 0x3c, 0xf6, 0x92, 0x04, 0x5c, 0xe3, 0xd9, 0x2d, 0x47, 0xdf, - 0xc0, 0xbf, 0xe8, 0xa5, 0x70, 0xde, 0x96, 0xad, 0x2a, 0xd9, 0xfb, 0x7f, 0x23, 0x6b, 0x5f, 0x0a, - 0x1a, 0xba, 0xd4, 0xdd, 0x94, 0xbf, 0x4e, 0x2f, 0xc5, 0x64, 0xf3, 0x84, 0xe1, 0xda, 0xb8, 0x15, - 0x25, 0xfa, 0xd9, 0xf6, 0x5f, 0x9f, 0x9a, 0xe1, 0x23, 0xdb, 0xf6, 0xe8, 0x97, 0x1c, 0xdc, 0x9d, - 0x45, 0x8b, 0xad, 0x0f, 0x70, 0x64, 0x1e, 0x13, 0x41, 0xc6, 0x72, 0xf8, 0x8d, 0x73, 0x5f, 0x3f, - 0xd3, 0x74, 0x2f, 0x0a, 0x48, 0xe8, 0xb5, 0x22, 0xe6, 0xb5, 0x3d, 0x1a, 0xaa, 0xd1, 0xd8, 0x4e, - 0x42, 0x24, 0xf6, 0xf9, 0x5f, 0xff, 0x5b, 0x78, 0xb2, 0x01, 0xfc, 0x94, 0xb7, 0x4e, 0x13, 0xbd, - 0x9e, 0x84, 0xd3, 0xdf, 0xca, 0x5a, 0xd3, 0xce, 0xaf, 0x69, 0xe8, 0x85, 0x0a, 0xbd, 0x48, 0x43, - 0x2f, 0xa6, 0x9d, 0x8b, 0x92, 0x3a, 0xef, 0xe1, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x75, 0x2e, - 0xfe, 0xb1, 0x9c, 0x0c, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/debugger.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/debugger.pb.go deleted file mode 100644 index 40bf0efe..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/clouddebugger/v2/debugger.pb.go +++ /dev/null @@ -1,648 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/clouddebugger/v2/debugger.proto - -package clouddebugger - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Request to set a breakpoint -type SetBreakpointRequest struct { - // ID of the debuggee where the breakpoint is to be set. - DebuggeeId string `protobuf:"bytes,1,opt,name=debuggee_id,json=debuggeeId" json:"debuggee_id,omitempty"` - // Breakpoint specification to set. - // The field `location` of the breakpoint must be set. - Breakpoint *Breakpoint `protobuf:"bytes,2,opt,name=breakpoint" json:"breakpoint,omitempty"` - // The client version making the call. - // Schema: `domain/type/version` (e.g., `google.com/intellij/v1`). - ClientVersion string `protobuf:"bytes,4,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` -} - -func (m *SetBreakpointRequest) Reset() { *m = SetBreakpointRequest{} } -func (m *SetBreakpointRequest) String() string { return proto.CompactTextString(m) } -func (*SetBreakpointRequest) ProtoMessage() {} -func (*SetBreakpointRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *SetBreakpointRequest) GetDebuggeeId() string { - if m != nil { - return m.DebuggeeId - } - return "" -} - -func (m *SetBreakpointRequest) GetBreakpoint() *Breakpoint { - if m != nil { - return m.Breakpoint - } - return nil -} - -func (m *SetBreakpointRequest) GetClientVersion() string { - if m != nil { - return m.ClientVersion - } - return "" -} - -// Response for setting a breakpoint. -type SetBreakpointResponse struct { - // Breakpoint resource. - // The field `id` is guaranteed to be set (in addition to the echoed fileds). - Breakpoint *Breakpoint `protobuf:"bytes,1,opt,name=breakpoint" json:"breakpoint,omitempty"` -} - -func (m *SetBreakpointResponse) Reset() { *m = SetBreakpointResponse{} } -func (m *SetBreakpointResponse) String() string { return proto.CompactTextString(m) } -func (*SetBreakpointResponse) ProtoMessage() {} -func (*SetBreakpointResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *SetBreakpointResponse) GetBreakpoint() *Breakpoint { - if m != nil { - return m.Breakpoint - } - return nil -} - -// Request to get breakpoint information. -type GetBreakpointRequest struct { - // ID of the debuggee whose breakpoint to get. - DebuggeeId string `protobuf:"bytes,1,opt,name=debuggee_id,json=debuggeeId" json:"debuggee_id,omitempty"` - // ID of the breakpoint to get. - BreakpointId string `protobuf:"bytes,2,opt,name=breakpoint_id,json=breakpointId" json:"breakpoint_id,omitempty"` - // The client version making the call. - // Schema: `domain/type/version` (e.g., `google.com/intellij/v1`). - ClientVersion string `protobuf:"bytes,4,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` -} - -func (m *GetBreakpointRequest) Reset() { *m = GetBreakpointRequest{} } -func (m *GetBreakpointRequest) String() string { return proto.CompactTextString(m) } -func (*GetBreakpointRequest) ProtoMessage() {} -func (*GetBreakpointRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *GetBreakpointRequest) GetDebuggeeId() string { - if m != nil { - return m.DebuggeeId - } - return "" -} - -func (m *GetBreakpointRequest) GetBreakpointId() string { - if m != nil { - return m.BreakpointId - } - return "" -} - -func (m *GetBreakpointRequest) GetClientVersion() string { - if m != nil { - return m.ClientVersion - } - return "" -} - -// Response for getting breakpoint information. -type GetBreakpointResponse struct { - // Complete breakpoint state. - // The fields `id` and `location` are guaranteed to be set. - Breakpoint *Breakpoint `protobuf:"bytes,1,opt,name=breakpoint" json:"breakpoint,omitempty"` -} - -func (m *GetBreakpointResponse) Reset() { *m = GetBreakpointResponse{} } -func (m *GetBreakpointResponse) String() string { return proto.CompactTextString(m) } -func (*GetBreakpointResponse) ProtoMessage() {} -func (*GetBreakpointResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *GetBreakpointResponse) GetBreakpoint() *Breakpoint { - if m != nil { - return m.Breakpoint - } - return nil -} - -// Request to delete a breakpoint. -type DeleteBreakpointRequest struct { - // ID of the debuggee whose breakpoint to delete. - DebuggeeId string `protobuf:"bytes,1,opt,name=debuggee_id,json=debuggeeId" json:"debuggee_id,omitempty"` - // ID of the breakpoint to delete. - BreakpointId string `protobuf:"bytes,2,opt,name=breakpoint_id,json=breakpointId" json:"breakpoint_id,omitempty"` - // The client version making the call. - // Schema: `domain/type/version` (e.g., `google.com/intellij/v1`). - ClientVersion string `protobuf:"bytes,3,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` -} - -func (m *DeleteBreakpointRequest) Reset() { *m = DeleteBreakpointRequest{} } -func (m *DeleteBreakpointRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteBreakpointRequest) ProtoMessage() {} -func (*DeleteBreakpointRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *DeleteBreakpointRequest) GetDebuggeeId() string { - if m != nil { - return m.DebuggeeId - } - return "" -} - -func (m *DeleteBreakpointRequest) GetBreakpointId() string { - if m != nil { - return m.BreakpointId - } - return "" -} - -func (m *DeleteBreakpointRequest) GetClientVersion() string { - if m != nil { - return m.ClientVersion - } - return "" -} - -// Request to list breakpoints. -type ListBreakpointsRequest struct { - // ID of the debuggee whose breakpoints to list. - DebuggeeId string `protobuf:"bytes,1,opt,name=debuggee_id,json=debuggeeId" json:"debuggee_id,omitempty"` - // When set to `true`, the response includes the list of breakpoints set by - // any user. Otherwise, it includes only breakpoints set by the caller. - IncludeAllUsers bool `protobuf:"varint,2,opt,name=include_all_users,json=includeAllUsers" json:"include_all_users,omitempty"` - // When set to `true`, the response includes active and inactive - // breakpoints. Otherwise, it includes only active breakpoints. - IncludeInactive bool `protobuf:"varint,3,opt,name=include_inactive,json=includeInactive" json:"include_inactive,omitempty"` - // When set, the response includes only breakpoints with the specified action. - Action *ListBreakpointsRequest_BreakpointActionValue `protobuf:"bytes,4,opt,name=action" json:"action,omitempty"` - // This field is deprecated. The following fields are always stripped out of - // the result: `stack_frames`, `evaluated_expressions` and `variable_table`. - StripResults bool `protobuf:"varint,5,opt,name=strip_results,json=stripResults" json:"strip_results,omitempty"` - // A wait token that, if specified, blocks the call until the breakpoints - // list has changed, or a server selected timeout has expired. The value - // should be set from the last response. The error code - // `google.rpc.Code.ABORTED` (RPC) is returned on wait timeout, which - // should be called again with the same `wait_token`. - WaitToken string `protobuf:"bytes,6,opt,name=wait_token,json=waitToken" json:"wait_token,omitempty"` - // The client version making the call. - // Schema: `domain/type/version` (e.g., `google.com/intellij/v1`). - ClientVersion string `protobuf:"bytes,8,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` -} - -func (m *ListBreakpointsRequest) Reset() { *m = ListBreakpointsRequest{} } -func (m *ListBreakpointsRequest) String() string { return proto.CompactTextString(m) } -func (*ListBreakpointsRequest) ProtoMessage() {} -func (*ListBreakpointsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *ListBreakpointsRequest) GetDebuggeeId() string { - if m != nil { - return m.DebuggeeId - } - return "" -} - -func (m *ListBreakpointsRequest) GetIncludeAllUsers() bool { - if m != nil { - return m.IncludeAllUsers - } - return false -} - -func (m *ListBreakpointsRequest) GetIncludeInactive() bool { - if m != nil { - return m.IncludeInactive - } - return false -} - -func (m *ListBreakpointsRequest) GetAction() *ListBreakpointsRequest_BreakpointActionValue { - if m != nil { - return m.Action - } - return nil -} - -func (m *ListBreakpointsRequest) GetStripResults() bool { - if m != nil { - return m.StripResults - } - return false -} - -func (m *ListBreakpointsRequest) GetWaitToken() string { - if m != nil { - return m.WaitToken - } - return "" -} - -func (m *ListBreakpointsRequest) GetClientVersion() string { - if m != nil { - return m.ClientVersion - } - return "" -} - -// Wrapper message for `Breakpoint.Action`. Defines a filter on the action -// field of breakpoints. -type ListBreakpointsRequest_BreakpointActionValue struct { - // Only breakpoints with the specified action will pass the filter. - Value Breakpoint_Action `protobuf:"varint,1,opt,name=value,enum=google.devtools.clouddebugger.v2.Breakpoint_Action" json:"value,omitempty"` -} - -func (m *ListBreakpointsRequest_BreakpointActionValue) Reset() { - *m = ListBreakpointsRequest_BreakpointActionValue{} -} -func (m *ListBreakpointsRequest_BreakpointActionValue) String() string { - return proto.CompactTextString(m) -} -func (*ListBreakpointsRequest_BreakpointActionValue) ProtoMessage() {} -func (*ListBreakpointsRequest_BreakpointActionValue) Descriptor() ([]byte, []int) { - return fileDescriptor2, []int{5, 0} -} - -func (m *ListBreakpointsRequest_BreakpointActionValue) GetValue() Breakpoint_Action { - if m != nil { - return m.Value - } - return Breakpoint_CAPTURE -} - -// Response for listing breakpoints. -type ListBreakpointsResponse struct { - // List of breakpoints matching the request. - // The fields `id` and `location` are guaranteed to be set on each breakpoint. - // The fields: `stack_frames`, `evaluated_expressions` and `variable_table` - // are cleared on each breakpoint regardless of its status. - Breakpoints []*Breakpoint `protobuf:"bytes,1,rep,name=breakpoints" json:"breakpoints,omitempty"` - // A wait token that can be used in the next call to `list` (REST) or - // `ListBreakpoints` (RPC) to block until the list of breakpoints has changes. - NextWaitToken string `protobuf:"bytes,2,opt,name=next_wait_token,json=nextWaitToken" json:"next_wait_token,omitempty"` -} - -func (m *ListBreakpointsResponse) Reset() { *m = ListBreakpointsResponse{} } -func (m *ListBreakpointsResponse) String() string { return proto.CompactTextString(m) } -func (*ListBreakpointsResponse) ProtoMessage() {} -func (*ListBreakpointsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *ListBreakpointsResponse) GetBreakpoints() []*Breakpoint { - if m != nil { - return m.Breakpoints - } - return nil -} - -func (m *ListBreakpointsResponse) GetNextWaitToken() string { - if m != nil { - return m.NextWaitToken - } - return "" -} - -// Request to list debuggees. -type ListDebuggeesRequest struct { - // Project number of a Google Cloud project whose debuggees to list. - Project string `protobuf:"bytes,2,opt,name=project" json:"project,omitempty"` - // When set to `true`, the result includes all debuggees. Otherwise, the - // result includes only debuggees that are active. - IncludeInactive bool `protobuf:"varint,3,opt,name=include_inactive,json=includeInactive" json:"include_inactive,omitempty"` - // The client version making the call. - // Schema: `domain/type/version` (e.g., `google.com/intellij/v1`). - ClientVersion string `protobuf:"bytes,4,opt,name=client_version,json=clientVersion" json:"client_version,omitempty"` -} - -func (m *ListDebuggeesRequest) Reset() { *m = ListDebuggeesRequest{} } -func (m *ListDebuggeesRequest) String() string { return proto.CompactTextString(m) } -func (*ListDebuggeesRequest) ProtoMessage() {} -func (*ListDebuggeesRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *ListDebuggeesRequest) GetProject() string { - if m != nil { - return m.Project - } - return "" -} - -func (m *ListDebuggeesRequest) GetIncludeInactive() bool { - if m != nil { - return m.IncludeInactive - } - return false -} - -func (m *ListDebuggeesRequest) GetClientVersion() string { - if m != nil { - return m.ClientVersion - } - return "" -} - -// Response for listing debuggees. -type ListDebuggeesResponse struct { - // List of debuggees accessible to the calling user. - // The fields `debuggee.id` and `description` are guaranteed to be set. - // The `description` field is a human readable field provided by agents and - // can be displayed to users. - Debuggees []*Debuggee `protobuf:"bytes,1,rep,name=debuggees" json:"debuggees,omitempty"` -} - -func (m *ListDebuggeesResponse) Reset() { *m = ListDebuggeesResponse{} } -func (m *ListDebuggeesResponse) String() string { return proto.CompactTextString(m) } -func (*ListDebuggeesResponse) ProtoMessage() {} -func (*ListDebuggeesResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *ListDebuggeesResponse) GetDebuggees() []*Debuggee { - if m != nil { - return m.Debuggees - } - return nil -} - -func init() { - proto.RegisterType((*SetBreakpointRequest)(nil), "google.devtools.clouddebugger.v2.SetBreakpointRequest") - proto.RegisterType((*SetBreakpointResponse)(nil), "google.devtools.clouddebugger.v2.SetBreakpointResponse") - proto.RegisterType((*GetBreakpointRequest)(nil), "google.devtools.clouddebugger.v2.GetBreakpointRequest") - proto.RegisterType((*GetBreakpointResponse)(nil), "google.devtools.clouddebugger.v2.GetBreakpointResponse") - proto.RegisterType((*DeleteBreakpointRequest)(nil), "google.devtools.clouddebugger.v2.DeleteBreakpointRequest") - proto.RegisterType((*ListBreakpointsRequest)(nil), "google.devtools.clouddebugger.v2.ListBreakpointsRequest") - proto.RegisterType((*ListBreakpointsRequest_BreakpointActionValue)(nil), "google.devtools.clouddebugger.v2.ListBreakpointsRequest.BreakpointActionValue") - proto.RegisterType((*ListBreakpointsResponse)(nil), "google.devtools.clouddebugger.v2.ListBreakpointsResponse") - proto.RegisterType((*ListDebuggeesRequest)(nil), "google.devtools.clouddebugger.v2.ListDebuggeesRequest") - proto.RegisterType((*ListDebuggeesResponse)(nil), "google.devtools.clouddebugger.v2.ListDebuggeesResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Debugger2 service - -type Debugger2Client interface { - // Sets the breakpoint to the debuggee. - SetBreakpoint(ctx context.Context, in *SetBreakpointRequest, opts ...grpc.CallOption) (*SetBreakpointResponse, error) - // Gets breakpoint information. - GetBreakpoint(ctx context.Context, in *GetBreakpointRequest, opts ...grpc.CallOption) (*GetBreakpointResponse, error) - // Deletes the breakpoint from the debuggee. - DeleteBreakpoint(ctx context.Context, in *DeleteBreakpointRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Lists all breakpoints for the debuggee. - ListBreakpoints(ctx context.Context, in *ListBreakpointsRequest, opts ...grpc.CallOption) (*ListBreakpointsResponse, error) - // Lists all the debuggees that the user has access to. - ListDebuggees(ctx context.Context, in *ListDebuggeesRequest, opts ...grpc.CallOption) (*ListDebuggeesResponse, error) -} - -type debugger2Client struct { - cc *grpc.ClientConn -} - -func NewDebugger2Client(cc *grpc.ClientConn) Debugger2Client { - return &debugger2Client{cc} -} - -func (c *debugger2Client) SetBreakpoint(ctx context.Context, in *SetBreakpointRequest, opts ...grpc.CallOption) (*SetBreakpointResponse, error) { - out := new(SetBreakpointResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouddebugger.v2.Debugger2/SetBreakpoint", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *debugger2Client) GetBreakpoint(ctx context.Context, in *GetBreakpointRequest, opts ...grpc.CallOption) (*GetBreakpointResponse, error) { - out := new(GetBreakpointResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouddebugger.v2.Debugger2/GetBreakpoint", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *debugger2Client) DeleteBreakpoint(ctx context.Context, in *DeleteBreakpointRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.devtools.clouddebugger.v2.Debugger2/DeleteBreakpoint", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *debugger2Client) ListBreakpoints(ctx context.Context, in *ListBreakpointsRequest, opts ...grpc.CallOption) (*ListBreakpointsResponse, error) { - out := new(ListBreakpointsResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouddebugger.v2.Debugger2/ListBreakpoints", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *debugger2Client) ListDebuggees(ctx context.Context, in *ListDebuggeesRequest, opts ...grpc.CallOption) (*ListDebuggeesResponse, error) { - out := new(ListDebuggeesResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouddebugger.v2.Debugger2/ListDebuggees", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Debugger2 service - -type Debugger2Server interface { - // Sets the breakpoint to the debuggee. - SetBreakpoint(context.Context, *SetBreakpointRequest) (*SetBreakpointResponse, error) - // Gets breakpoint information. - GetBreakpoint(context.Context, *GetBreakpointRequest) (*GetBreakpointResponse, error) - // Deletes the breakpoint from the debuggee. - DeleteBreakpoint(context.Context, *DeleteBreakpointRequest) (*google_protobuf3.Empty, error) - // Lists all breakpoints for the debuggee. - ListBreakpoints(context.Context, *ListBreakpointsRequest) (*ListBreakpointsResponse, error) - // Lists all the debuggees that the user has access to. - ListDebuggees(context.Context, *ListDebuggeesRequest) (*ListDebuggeesResponse, error) -} - -func RegisterDebugger2Server(s *grpc.Server, srv Debugger2Server) { - s.RegisterService(&_Debugger2_serviceDesc, srv) -} - -func _Debugger2_SetBreakpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetBreakpointRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(Debugger2Server).SetBreakpoint(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouddebugger.v2.Debugger2/SetBreakpoint", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(Debugger2Server).SetBreakpoint(ctx, req.(*SetBreakpointRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Debugger2_GetBreakpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetBreakpointRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(Debugger2Server).GetBreakpoint(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouddebugger.v2.Debugger2/GetBreakpoint", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(Debugger2Server).GetBreakpoint(ctx, req.(*GetBreakpointRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Debugger2_DeleteBreakpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteBreakpointRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(Debugger2Server).DeleteBreakpoint(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouddebugger.v2.Debugger2/DeleteBreakpoint", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(Debugger2Server).DeleteBreakpoint(ctx, req.(*DeleteBreakpointRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Debugger2_ListBreakpoints_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListBreakpointsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(Debugger2Server).ListBreakpoints(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouddebugger.v2.Debugger2/ListBreakpoints", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(Debugger2Server).ListBreakpoints(ctx, req.(*ListBreakpointsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Debugger2_ListDebuggees_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDebuggeesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(Debugger2Server).ListDebuggees(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouddebugger.v2.Debugger2/ListDebuggees", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(Debugger2Server).ListDebuggees(ctx, req.(*ListDebuggeesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Debugger2_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.clouddebugger.v2.Debugger2", - HandlerType: (*Debugger2Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SetBreakpoint", - Handler: _Debugger2_SetBreakpoint_Handler, - }, - { - MethodName: "GetBreakpoint", - Handler: _Debugger2_GetBreakpoint_Handler, - }, - { - MethodName: "DeleteBreakpoint", - Handler: _Debugger2_DeleteBreakpoint_Handler, - }, - { - MethodName: "ListBreakpoints", - Handler: _Debugger2_ListBreakpoints_Handler, - }, - { - MethodName: "ListDebuggees", - Handler: _Debugger2_ListDebuggees_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/clouddebugger/v2/debugger.proto", -} - -func init() { proto.RegisterFile("google/devtools/clouddebugger/v2/debugger.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 797 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xdd, 0x6a, 0xdb, 0x48, - 0x14, 0x66, 0x9c, 0xcd, 0x8f, 0x8f, 0xe3, 0x24, 0x3b, 0xe4, 0x47, 0x78, 0xff, 0x8c, 0xf6, 0x87, - 0x6c, 0x76, 0x91, 0x16, 0x65, 0xd9, 0x4d, 0x76, 0x6f, 0x1a, 0x37, 0xc5, 0x31, 0xa4, 0x21, 0xb8, - 0xad, 0x0b, 0x25, 0x60, 0x64, 0x7b, 0x22, 0xd4, 0x28, 0x1a, 0x55, 0x33, 0x72, 0x5b, 0x42, 0x6e, - 0x52, 0xe8, 0x7d, 0xe9, 0x0b, 0xf4, 0xba, 0x14, 0xfa, 0x02, 0x2d, 0xf4, 0xae, 0x90, 0xdb, 0xbe, - 0x42, 0x1f, 0xa4, 0x48, 0x9a, 0x89, 0x65, 0x57, 0xad, 0x2d, 0x07, 0x72, 0x37, 0xfa, 0x66, 0xce, - 0x99, 0xef, 0xfb, 0xe6, 0xcc, 0x19, 0x81, 0x6e, 0x51, 0x6a, 0x39, 0x44, 0xef, 0x90, 0x2e, 0xa7, - 0xd4, 0x61, 0x7a, 0xdb, 0xa1, 0x41, 0xa7, 0x43, 0x5a, 0x81, 0x65, 0x11, 0x5f, 0xef, 0x1a, 0xba, - 0x1c, 0x6b, 0x9e, 0x4f, 0x39, 0xc5, 0xe5, 0x38, 0x40, 0x93, 0x01, 0x5a, 0x5f, 0x80, 0xd6, 0x35, - 0x4a, 0xdf, 0x8b, 0x94, 0xa6, 0x67, 0xeb, 0xa6, 0xeb, 0x52, 0x6e, 0x72, 0x9b, 0xba, 0x2c, 0x8e, - 0x2f, 0xfd, 0x31, 0x7c, 0x43, 0x93, 0x9b, 0x62, 0xf1, 0x77, 0x62, 0x71, 0xf4, 0xd5, 0x0a, 0x0e, - 0x75, 0x72, 0xec, 0xf1, 0xc7, 0xf1, 0xa4, 0xfa, 0x0a, 0xc1, 0xe2, 0x2d, 0xc2, 0x2b, 0x3e, 0x31, - 0x8f, 0x3c, 0x6a, 0xbb, 0xbc, 0x4e, 0x1e, 0x04, 0x84, 0x71, 0xfc, 0x13, 0x14, 0x44, 0x3e, 0xd2, - 0xb4, 0x3b, 0x0a, 0x2a, 0xa3, 0xd5, 0x7c, 0x1d, 0x24, 0x54, 0xeb, 0xe0, 0x5d, 0x80, 0xd6, 0x45, - 0x94, 0x92, 0x2b, 0xa3, 0xd5, 0x82, 0xf1, 0xa7, 0x36, 0x4c, 0x98, 0x96, 0xd8, 0x29, 0x11, 0x8f, - 0x7f, 0x85, 0xb9, 0xb6, 0x63, 0x13, 0x97, 0x37, 0xbb, 0xc4, 0x67, 0x36, 0x75, 0x95, 0x6f, 0xa2, - 0x1d, 0x8b, 0x31, 0xda, 0x88, 0x41, 0x95, 0xc0, 0xd2, 0x00, 0x5b, 0xe6, 0x51, 0x97, 0x91, 0x01, - 0x36, 0xe8, 0x72, 0x6c, 0xd4, 0x27, 0x08, 0x16, 0xab, 0x63, 0xb9, 0xf2, 0x33, 0x14, 0x7b, 0x79, - 0xc2, 0x25, 0xb9, 0x68, 0xc9, 0x6c, 0x0f, 0xac, 0x75, 0x32, 0x88, 0xad, 0x5e, 0x81, 0xd8, 0xa7, - 0x08, 0x56, 0xb6, 0x89, 0x43, 0x38, 0xb9, 0x3a, 0xbd, 0x13, 0x69, 0x7a, 0xdf, 0x4f, 0xc0, 0xf2, - 0xae, 0xcd, 0x12, 0x8a, 0xd9, 0xc8, 0x3c, 0xd6, 0xe0, 0x5b, 0xdb, 0x6d, 0x3b, 0x41, 0x87, 0x34, - 0x4d, 0xc7, 0x69, 0x06, 0x8c, 0xf8, 0x2c, 0xe2, 0x32, 0x53, 0x9f, 0x17, 0x13, 0x5b, 0x8e, 0x73, - 0x27, 0x84, 0xf1, 0xef, 0xb0, 0x20, 0xd7, 0xda, 0xae, 0xd9, 0xe6, 0x76, 0x97, 0x44, 0x84, 0x7a, - 0x4b, 0x6b, 0x02, 0xc6, 0x87, 0x30, 0x15, 0x8e, 0xc4, 0x09, 0x15, 0x8c, 0xbd, 0xe1, 0x2e, 0xa7, - 0x2b, 0x48, 0x98, 0xbf, 0x15, 0x25, 0x6c, 0x98, 0x4e, 0x40, 0xea, 0x22, 0x7b, 0x68, 0x23, 0xe3, - 0xbe, 0xed, 0x35, 0x7d, 0xc2, 0x02, 0x87, 0x33, 0x65, 0x32, 0xe2, 0x33, 0x1b, 0x81, 0xf5, 0x18, - 0xc3, 0x3f, 0x00, 0x3c, 0x34, 0x6d, 0xde, 0xe4, 0xf4, 0x88, 0xb8, 0xca, 0x54, 0xe4, 0x41, 0x3e, - 0x44, 0x6e, 0x87, 0x40, 0x8a, 0xcb, 0x33, 0x29, 0x2e, 0x97, 0x5a, 0xb0, 0x94, 0xca, 0x05, 0xd7, - 0x60, 0xb2, 0x1b, 0x0e, 0x22, 0x77, 0xe7, 0x8c, 0xf5, 0x2c, 0x05, 0xa5, 0xc5, 0x89, 0xea, 0x71, - 0x06, 0xf5, 0x19, 0x82, 0x95, 0xcf, 0x7c, 0x10, 0xc5, 0xbb, 0x07, 0x85, 0x5e, 0x71, 0x30, 0x05, - 0x95, 0x27, 0x32, 0x57, 0x6f, 0x32, 0x01, 0xfe, 0x0d, 0xe6, 0x5d, 0xf2, 0x88, 0x37, 0x13, 0xd6, - 0xc4, 0x35, 0x58, 0x0c, 0xe1, 0xbb, 0xd2, 0x1e, 0xf5, 0x0c, 0xc1, 0x62, 0xc8, 0x69, 0x5b, 0x14, - 0xcd, 0x45, 0x6d, 0x29, 0x30, 0xed, 0xf9, 0xf4, 0x3e, 0x69, 0x73, 0x11, 0x28, 0x3f, 0xb3, 0x14, - 0xca, 0x88, 0x57, 0xda, 0x84, 0xa5, 0x01, 0x0e, 0xc2, 0x95, 0x1d, 0xc8, 0xcb, 0x6a, 0x96, 0x9e, - 0xac, 0x0d, 0xf7, 0x44, 0xe6, 0xa9, 0xf7, 0x82, 0x8d, 0xb7, 0xd3, 0x90, 0x17, 0xb8, 0x6f, 0xe0, - 0x73, 0x04, 0xc5, 0xbe, 0x8e, 0x89, 0xff, 0x19, 0x9e, 0x36, 0xed, 0x41, 0x28, 0xfd, 0x9b, 0x39, - 0x2e, 0x96, 0xa6, 0xee, 0x9c, 0x7d, 0xf8, 0xf8, 0x3c, 0x57, 0x51, 0xff, 0x4e, 0x3e, 0x84, 0xfa, - 0x05, 0x61, 0xfd, 0x24, 0x71, 0xb3, 0x4f, 0xf5, 0xc4, 0xd1, 0xea, 0x8c, 0xf0, 0xff, 0x92, 0x8f, - 0x44, 0x28, 0xa6, 0x9a, 0x55, 0x4c, 0x75, 0x4c, 0x31, 0xd5, 0xaf, 0x89, 0xc1, 0xd7, 0x32, 0x8b, - 0x39, 0xe9, 0xeb, 0x93, 0xa7, 0xf8, 0x35, 0x82, 0x85, 0xc1, 0xb6, 0x8b, 0x37, 0x47, 0x39, 0xf3, - 0xd4, 0x56, 0x5d, 0x5a, 0x96, 0xa1, 0xf2, 0x9d, 0xd7, 0x6e, 0x84, 0xef, 0xbc, 0x64, 0xbc, 0x76, - 0x79, 0xc6, 0xef, 0x10, 0xcc, 0x0f, 0xdc, 0x6a, 0xbc, 0x31, 0x6e, 0x43, 0x2c, 0x6d, 0x8e, 0x11, - 0x29, 0x0e, 0x61, 0x23, 0x92, 0x64, 0xe0, 0xbf, 0xb2, 0x4a, 0xc2, 0x2f, 0x10, 0x14, 0xfb, 0x2e, - 0xe0, 0x28, 0x15, 0x94, 0xd6, 0x35, 0x46, 0xa9, 0xa0, 0xd4, 0x9b, 0xae, 0xfe, 0x18, 0x91, 0x57, - 0xf0, 0x72, 0x3a, 0xf9, 0xca, 0x1b, 0x04, 0xbf, 0xb4, 0xe9, 0xf1, 0xd0, 0xf4, 0x95, 0xa2, 0xbc, - 0xe5, 0xfb, 0xe1, 0x81, 0xef, 0xa3, 0x7b, 0x37, 0x45, 0x88, 0x45, 0x1d, 0xd3, 0xb5, 0x34, 0xea, - 0x5b, 0xba, 0x45, 0xdc, 0xa8, 0x1c, 0xc4, 0x1f, 0xaa, 0xe9, 0xd9, 0xec, 0xcb, 0x3f, 0x8d, 0xff, - 0xf7, 0x01, 0x2f, 0x73, 0x4a, 0x35, 0xce, 0x77, 0x3d, 0x84, 0x65, 0xaf, 0xf1, 0xb5, 0x86, 0x71, - 0x2e, 0xa7, 0x0e, 0xa2, 0xa9, 0x03, 0x39, 0x75, 0xd0, 0x30, 0x5a, 0x53, 0xd1, 0x7e, 0xeb, 0x9f, - 0x02, 0x00, 0x00, 0xff, 0xff, 0x52, 0x23, 0xb7, 0x95, 0x14, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/common.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/common.pb.go deleted file mode 100644 index 2d4317dc..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/common.pb.go +++ /dev/null @@ -1,434 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/clouderrorreporting/v1beta1/common.proto - -/* -Package clouderrorreporting is a generated protocol buffer package. - -It is generated from these files: - google/devtools/clouderrorreporting/v1beta1/common.proto - google/devtools/clouderrorreporting/v1beta1/error_group_service.proto - google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto - google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto - -It has these top-level messages: - ErrorGroup - TrackingIssue - ErrorEvent - ServiceContext - ErrorContext - HttpRequestContext - SourceLocation - GetGroupRequest - UpdateGroupRequest - ListGroupStatsRequest - ListGroupStatsResponse - ErrorGroupStats - TimedCount - ListEventsRequest - ListEventsResponse - QueryTimeRange - ServiceContextFilter - DeleteEventsRequest - DeleteEventsResponse - ReportErrorEventRequest - ReportErrorEventResponse - ReportedErrorEvent -*/ -package clouderrorreporting - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "google.golang.org/genproto/googleapis/api/monitoredres" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Description of a group of similar error events. -type ErrorGroup struct { - // The group resource name. - // Example: <code>projects/my-project-123/groups/my-groupid</code> - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Group IDs are unique for a given project. If the same kind of error - // occurs in different service contexts, it will receive the same group ID. - GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId" json:"group_id,omitempty"` - // Associated tracking issues. - TrackingIssues []*TrackingIssue `protobuf:"bytes,3,rep,name=tracking_issues,json=trackingIssues" json:"tracking_issues,omitempty"` -} - -func (m *ErrorGroup) Reset() { *m = ErrorGroup{} } -func (m *ErrorGroup) String() string { return proto.CompactTextString(m) } -func (*ErrorGroup) ProtoMessage() {} -func (*ErrorGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ErrorGroup) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ErrorGroup) GetGroupId() string { - if m != nil { - return m.GroupId - } - return "" -} - -func (m *ErrorGroup) GetTrackingIssues() []*TrackingIssue { - if m != nil { - return m.TrackingIssues - } - return nil -} - -// Information related to tracking the progress on resolving the error. -type TrackingIssue struct { - // A URL pointing to a related entry in an issue tracking system. - // Example: https://github.com/user/project/issues/4 - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` -} - -func (m *TrackingIssue) Reset() { *m = TrackingIssue{} } -func (m *TrackingIssue) String() string { return proto.CompactTextString(m) } -func (*TrackingIssue) ProtoMessage() {} -func (*TrackingIssue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *TrackingIssue) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -// An error event which is returned by the Error Reporting system. -type ErrorEvent struct { - // Time when the event occurred as provided in the error report. - // If the report did not contain a timestamp, the time the error was received - // by the Error Reporting system is used. - EventTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=event_time,json=eventTime" json:"event_time,omitempty"` - // The `ServiceContext` for which this error was reported. - ServiceContext *ServiceContext `protobuf:"bytes,2,opt,name=service_context,json=serviceContext" json:"service_context,omitempty"` - // The stack trace that was reported or logged by the service. - Message string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` - // Data about the context in which the error occurred. - Context *ErrorContext `protobuf:"bytes,5,opt,name=context" json:"context,omitempty"` -} - -func (m *ErrorEvent) Reset() { *m = ErrorEvent{} } -func (m *ErrorEvent) String() string { return proto.CompactTextString(m) } -func (*ErrorEvent) ProtoMessage() {} -func (*ErrorEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ErrorEvent) GetEventTime() *google_protobuf1.Timestamp { - if m != nil { - return m.EventTime - } - return nil -} - -func (m *ErrorEvent) GetServiceContext() *ServiceContext { - if m != nil { - return m.ServiceContext - } - return nil -} - -func (m *ErrorEvent) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -func (m *ErrorEvent) GetContext() *ErrorContext { - if m != nil { - return m.Context - } - return nil -} - -// Describes a running service that sends errors. -// Its version changes over time and multiple versions can run in parallel. -type ServiceContext struct { - // An identifier of the service, such as the name of the - // executable, job, or Google App Engine service name. This field is expected - // to have a low number of values that are relatively stable over time, as - // opposed to `version`, which can be changed whenever new code is deployed. - // - // Contains the service name for error reports extracted from Google - // App Engine logs or `default` if the App Engine default service is used. - Service string `protobuf:"bytes,2,opt,name=service" json:"service,omitempty"` - // Represents the source code version that the developer provided, - // which could represent a version label or a Git SHA-1 hash, for example. - Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` - // Type of the MonitoredResource. List of possible values: - // https://cloud.google.com/monitoring/api/resources - // - // Value is set automatically for incoming errors and must not be set when - // reporting errors. - ResourceType string `protobuf:"bytes,4,opt,name=resource_type,json=resourceType" json:"resource_type,omitempty"` -} - -func (m *ServiceContext) Reset() { *m = ServiceContext{} } -func (m *ServiceContext) String() string { return proto.CompactTextString(m) } -func (*ServiceContext) ProtoMessage() {} -func (*ServiceContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ServiceContext) GetService() string { - if m != nil { - return m.Service - } - return "" -} - -func (m *ServiceContext) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func (m *ServiceContext) GetResourceType() string { - if m != nil { - return m.ResourceType - } - return "" -} - -// A description of the context in which an error occurred. -// This data should be provided by the application when reporting an error, -// unless the -// error report has been generated automatically from Google App Engine logs. -type ErrorContext struct { - // The HTTP request which was processed when the error was - // triggered. - HttpRequest *HttpRequestContext `protobuf:"bytes,1,opt,name=http_request,json=httpRequest" json:"http_request,omitempty"` - // The user who caused or was affected by the crash. - // This can be a user ID, an email address, or an arbitrary token that - // uniquely identifies the user. - // When sending an error report, leave this field empty if the user was not - // logged in. In this case the - // Error Reporting system will use other data, such as remote IP address, to - // distinguish affected users. See `affected_users_count` in - // `ErrorGroupStats`. - User string `protobuf:"bytes,2,opt,name=user" json:"user,omitempty"` - // The location in the source code where the decision was made to - // report the error, usually the place where it was logged. - // For a logged exception this would be the source line where the - // exception is logged, usually close to the place where it was - // caught. This value is in contrast to `Exception.cause_location`, - // which describes the source line where the exception was thrown. - ReportLocation *SourceLocation `protobuf:"bytes,3,opt,name=report_location,json=reportLocation" json:"report_location,omitempty"` -} - -func (m *ErrorContext) Reset() { *m = ErrorContext{} } -func (m *ErrorContext) String() string { return proto.CompactTextString(m) } -func (*ErrorContext) ProtoMessage() {} -func (*ErrorContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ErrorContext) GetHttpRequest() *HttpRequestContext { - if m != nil { - return m.HttpRequest - } - return nil -} - -func (m *ErrorContext) GetUser() string { - if m != nil { - return m.User - } - return "" -} - -func (m *ErrorContext) GetReportLocation() *SourceLocation { - if m != nil { - return m.ReportLocation - } - return nil -} - -// HTTP request data that is related to a reported error. -// This data should be provided by the application when reporting an error, -// unless the -// error report has been generated automatically from Google App Engine logs. -type HttpRequestContext struct { - // The type of HTTP request, such as `GET`, `POST`, etc. - Method string `protobuf:"bytes,1,opt,name=method" json:"method,omitempty"` - // The URL of the request. - Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` - // The user agent information that is provided with the request. - UserAgent string `protobuf:"bytes,3,opt,name=user_agent,json=userAgent" json:"user_agent,omitempty"` - // The referrer information that is provided with the request. - Referrer string `protobuf:"bytes,4,opt,name=referrer" json:"referrer,omitempty"` - // The HTTP response status code for the request. - ResponseStatusCode int32 `protobuf:"varint,5,opt,name=response_status_code,json=responseStatusCode" json:"response_status_code,omitempty"` - // The IP address from which the request originated. - // This can be IPv4, IPv6, or a token which is derived from the - // IP address, depending on the data that has been provided - // in the error report. - RemoteIp string `protobuf:"bytes,6,opt,name=remote_ip,json=remoteIp" json:"remote_ip,omitempty"` -} - -func (m *HttpRequestContext) Reset() { *m = HttpRequestContext{} } -func (m *HttpRequestContext) String() string { return proto.CompactTextString(m) } -func (*HttpRequestContext) ProtoMessage() {} -func (*HttpRequestContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *HttpRequestContext) GetMethod() string { - if m != nil { - return m.Method - } - return "" -} - -func (m *HttpRequestContext) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *HttpRequestContext) GetUserAgent() string { - if m != nil { - return m.UserAgent - } - return "" -} - -func (m *HttpRequestContext) GetReferrer() string { - if m != nil { - return m.Referrer - } - return "" -} - -func (m *HttpRequestContext) GetResponseStatusCode() int32 { - if m != nil { - return m.ResponseStatusCode - } - return 0 -} - -func (m *HttpRequestContext) GetRemoteIp() string { - if m != nil { - return m.RemoteIp - } - return "" -} - -// Indicates a location in the source code of the service for which -// errors are reported. -// This data should be provided by the application when reporting an error, -// unless the error report has been generated automatically from Google App -// Engine logs. All fields are optional. -type SourceLocation struct { - // The source code filename, which can include a truncated relative - // path, or a full path from a production machine. - FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath" json:"file_path,omitempty"` - // 1-based. 0 indicates that the line number is unknown. - LineNumber int32 `protobuf:"varint,2,opt,name=line_number,json=lineNumber" json:"line_number,omitempty"` - // Human-readable name of a function or method. - // The value can include optional context like the class or package name. - // For example, `my.package.MyClass.method` in case of Java. - FunctionName string `protobuf:"bytes,4,opt,name=function_name,json=functionName" json:"function_name,omitempty"` -} - -func (m *SourceLocation) Reset() { *m = SourceLocation{} } -func (m *SourceLocation) String() string { return proto.CompactTextString(m) } -func (*SourceLocation) ProtoMessage() {} -func (*SourceLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *SourceLocation) GetFilePath() string { - if m != nil { - return m.FilePath - } - return "" -} - -func (m *SourceLocation) GetLineNumber() int32 { - if m != nil { - return m.LineNumber - } - return 0 -} - -func (m *SourceLocation) GetFunctionName() string { - if m != nil { - return m.FunctionName - } - return "" -} - -func init() { - proto.RegisterType((*ErrorGroup)(nil), "google.devtools.clouderrorreporting.v1beta1.ErrorGroup") - proto.RegisterType((*TrackingIssue)(nil), "google.devtools.clouderrorreporting.v1beta1.TrackingIssue") - proto.RegisterType((*ErrorEvent)(nil), "google.devtools.clouderrorreporting.v1beta1.ErrorEvent") - proto.RegisterType((*ServiceContext)(nil), "google.devtools.clouderrorreporting.v1beta1.ServiceContext") - proto.RegisterType((*ErrorContext)(nil), "google.devtools.clouderrorreporting.v1beta1.ErrorContext") - proto.RegisterType((*HttpRequestContext)(nil), "google.devtools.clouderrorreporting.v1beta1.HttpRequestContext") - proto.RegisterType((*SourceLocation)(nil), "google.devtools.clouderrorreporting.v1beta1.SourceLocation") -} - -func init() { - proto.RegisterFile("google/devtools/clouderrorreporting/v1beta1/common.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 705 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xcd, 0x6e, 0x13, 0x31, - 0x10, 0x56, 0x92, 0xfe, 0xc5, 0x69, 0x53, 0x64, 0x21, 0x14, 0x02, 0xa8, 0x25, 0xbd, 0x54, 0x42, - 0xda, 0xa5, 0xe5, 0x42, 0xe9, 0x01, 0xd1, 0xa8, 0x2a, 0x95, 0x50, 0x55, 0x6d, 0xaa, 0x1e, 0x50, - 0x85, 0xe5, 0xec, 0x4e, 0x36, 0x16, 0xbb, 0xb6, 0xb1, 0xbd, 0x11, 0x7d, 0x17, 0x0e, 0x9c, 0x79, - 0x12, 0xc4, 0xb3, 0xf4, 0x21, 0x90, 0xbd, 0x76, 0x69, 0xd4, 0x1e, 0xc8, 0xcd, 0x33, 0xf3, 0xcd, - 0x37, 0xf3, 0x8d, 0xc7, 0x46, 0x6f, 0x73, 0x21, 0xf2, 0x02, 0xe2, 0x0c, 0x66, 0x46, 0x88, 0x42, - 0xc7, 0x69, 0x21, 0xaa, 0x0c, 0x94, 0x12, 0x4a, 0x81, 0x14, 0xca, 0x30, 0x9e, 0xc7, 0xb3, 0xbd, - 0x31, 0x18, 0xba, 0x17, 0xa7, 0xa2, 0x2c, 0x05, 0x8f, 0xa4, 0x12, 0x46, 0xe0, 0x57, 0x75, 0x66, - 0x14, 0x32, 0xa3, 0x07, 0x32, 0x23, 0x9f, 0xd9, 0x7f, 0xee, 0xcb, 0x50, 0xc9, 0x62, 0xca, 0xb9, - 0x30, 0xd4, 0x30, 0xc1, 0x75, 0x4d, 0xd5, 0xdf, 0xb9, 0x13, 0x2d, 0x05, 0x67, 0x46, 0x28, 0xc8, - 0x88, 0x02, 0x2d, 0x2a, 0x95, 0x82, 0x07, 0x6d, 0x79, 0x90, 0xb3, 0xc6, 0xd5, 0x24, 0x36, 0xac, - 0x04, 0x6d, 0x68, 0x29, 0x6b, 0xc0, 0xe0, 0x67, 0x03, 0xa1, 0x63, 0x5b, 0xfe, 0x44, 0x89, 0x4a, - 0x62, 0x8c, 0x96, 0x38, 0x2d, 0xa1, 0xd7, 0xd8, 0x6e, 0xec, 0xb6, 0x13, 0x77, 0xc6, 0x4f, 0xd1, - 0x5a, 0x6e, 0x83, 0x84, 0x65, 0xbd, 0xa6, 0xf3, 0xaf, 0x3a, 0xfb, 0x34, 0xc3, 0x29, 0xda, 0x34, - 0x8a, 0xa6, 0x5f, 0x19, 0xcf, 0x09, 0xd3, 0xba, 0x02, 0xdd, 0x6b, 0x6d, 0xb7, 0x76, 0x3b, 0xfb, - 0xef, 0xa2, 0x05, 0x84, 0x46, 0x17, 0x9e, 0xe3, 0xd4, 0x52, 0x24, 0x5d, 0x73, 0xd7, 0xd4, 0x83, - 0x97, 0x68, 0x63, 0x0e, 0x80, 0x1f, 0xa1, 0x56, 0xa5, 0x0a, 0xdf, 0xa3, 0x3d, 0x0e, 0x7e, 0x34, - 0xbd, 0x8a, 0xe3, 0x19, 0x70, 0x83, 0x0f, 0x10, 0x02, 0x7b, 0x20, 0x56, 0xad, 0xc3, 0x75, 0xf6, - 0xfb, 0xa1, 0xa3, 0x30, 0x8a, 0xe8, 0x22, 0x8c, 0x22, 0x69, 0x3b, 0xb4, 0xb5, 0x71, 0x86, 0x36, - 0x35, 0xa8, 0x19, 0x4b, 0x81, 0xa4, 0x82, 0x1b, 0xf8, 0x6e, 0x9c, 0xe6, 0xce, 0xfe, 0xe1, 0x42, - 0x8a, 0x46, 0x35, 0xc7, 0xb0, 0xa6, 0x48, 0xba, 0x7a, 0xce, 0xc6, 0x3d, 0xb4, 0x5a, 0x82, 0xd6, - 0x34, 0x87, 0x5e, 0xab, 0x9e, 0xa8, 0x37, 0xf1, 0x08, 0xad, 0x86, 0xba, 0xcb, 0xae, 0xee, 0xc1, - 0x42, 0x75, 0xdd, 0x10, 0x42, 0xd5, 0xc0, 0x34, 0x60, 0xa8, 0x3b, 0xba, 0xd7, 0x80, 0x6f, 0x29, - 0x5c, 0xa9, 0x37, 0x6d, 0x64, 0x06, 0x4a, 0x33, 0xc1, 0x43, 0x6b, 0xde, 0xc4, 0x3b, 0x68, 0x23, - 0x6c, 0x17, 0x31, 0xd7, 0x12, 0x7a, 0x4b, 0x2e, 0xbe, 0x1e, 0x9c, 0x17, 0xd7, 0x12, 0x06, 0x37, - 0x0d, 0xb4, 0x7e, 0xb7, 0x09, 0x3c, 0x46, 0xeb, 0x53, 0x63, 0x24, 0x51, 0xf0, 0xad, 0x02, 0x6d, - 0xfc, 0x6d, 0xbc, 0x5f, 0x48, 0xd5, 0x47, 0x63, 0x64, 0x52, 0xe7, 0x07, 0x6d, 0x9d, 0xe9, 0x3f, - 0x9f, 0xdd, 0xda, 0x4a, 0x83, 0xf2, 0x52, 0xdc, 0xd9, 0x5e, 0x64, 0x4d, 0x44, 0x0a, 0x91, 0xba, - 0x87, 0xe3, 0xf4, 0x2c, 0x7c, 0x91, 0x4e, 0xda, 0x27, 0x4f, 0x91, 0x74, 0x6b, 0x44, 0xb0, 0x07, - 0xbf, 0x1b, 0x08, 0xdf, 0xef, 0x0e, 0x3f, 0x41, 0x2b, 0x25, 0x98, 0xa9, 0xc8, 0xfc, 0x92, 0x7a, - 0x2b, 0x6c, 0x6e, 0xf3, 0x76, 0x73, 0xf1, 0x0b, 0x84, 0x6c, 0xbb, 0x84, 0xe6, 0xc0, 0x8d, 0x9f, - 0x78, 0xdb, 0x7a, 0x3e, 0x58, 0x07, 0xee, 0xa3, 0x35, 0x05, 0x13, 0x50, 0x0a, 0x94, 0x1f, 0xf7, - 0xad, 0x8d, 0x5f, 0xa3, 0xc7, 0x0a, 0xb4, 0x14, 0x5c, 0x03, 0xd1, 0x86, 0x9a, 0x4a, 0x93, 0x54, - 0x64, 0xe0, 0xf6, 0x66, 0x39, 0xc1, 0x21, 0x36, 0x72, 0xa1, 0xa1, 0xc8, 0x00, 0x3f, 0x43, 0x6d, - 0x05, 0xa5, 0x30, 0x40, 0x98, 0xec, 0xad, 0x04, 0x3a, 0xeb, 0x38, 0x95, 0x03, 0x8d, 0xba, 0xf3, - 0x62, 0x2d, 0x7c, 0xc2, 0x0a, 0x20, 0x92, 0x9a, 0xa9, 0x17, 0xb2, 0x66, 0x1d, 0xe7, 0xd4, 0x4c, - 0xf1, 0x16, 0xea, 0x14, 0x8c, 0x03, 0xe1, 0x55, 0x39, 0xf6, 0xa3, 0x5f, 0x4e, 0x90, 0x75, 0x9d, - 0x39, 0x8f, 0x5d, 0x97, 0x49, 0xc5, 0x53, 0xcb, 0x44, 0xdc, 0x9f, 0xe2, 0xd7, 0x25, 0x38, 0xcf, - 0x68, 0x09, 0x47, 0x37, 0x0d, 0x64, 0x3f, 0xc8, 0x45, 0xae, 0xe4, 0xa8, 0x33, 0x74, 0x3f, 0xea, - 0xb9, 0x7d, 0xc7, 0xe7, 0x8d, 0xcf, 0x5f, 0x7c, 0x6e, 0x2e, 0x0a, 0xca, 0xf3, 0x48, 0xa8, 0x3c, - 0xce, 0x81, 0xbb, 0x57, 0x1e, 0xd7, 0x21, 0x2a, 0x99, 0xfe, 0xaf, 0xbf, 0xfa, 0xf0, 0x81, 0xd8, - 0xaf, 0xe6, 0xce, 0x49, 0x5d, 0x60, 0x68, 0x83, 0xf5, 0x0b, 0x4b, 0x6e, 0x9b, 0xba, 0xdc, 0x3b, - 0xb2, 0x99, 0x7f, 0x02, 0xea, 0xca, 0xa1, 0xae, 0xe6, 0x51, 0x57, 0x97, 0x35, 0xff, 0x78, 0xc5, - 0xb5, 0xf5, 0xe6, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x24, 0x65, 0x84, 0x33, 0x41, 0x06, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/error_group_service.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/error_group_service.pb.go deleted file mode 100644 index 3ac9e4d7..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/error_group_service.pb.go +++ /dev/null @@ -1,211 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/clouderrorreporting/v1beta1/error_group_service.proto - -package clouderrorreporting - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A request to return an individual group. -type GetGroupRequest struct { - // [Required] The group resource name. Written as - // <code>projects/<var>projectID</var>/groups/<var>group_name</var></code>. - // Call - // <a href="/error-reporting/reference/rest/v1beta1/projects.groupStats/list"> - // <code>groupStats.list</code></a> to return a list of groups belonging to - // this project. - // - // Example: <code>projects/my-project-123/groups/my-group</code> - GroupName string `protobuf:"bytes,1,opt,name=group_name,json=groupName" json:"group_name,omitempty"` -} - -func (m *GetGroupRequest) Reset() { *m = GetGroupRequest{} } -func (m *GetGroupRequest) String() string { return proto.CompactTextString(m) } -func (*GetGroupRequest) ProtoMessage() {} -func (*GetGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *GetGroupRequest) GetGroupName() string { - if m != nil { - return m.GroupName - } - return "" -} - -// A request to replace the existing data for the given group. -type UpdateGroupRequest struct { - // [Required] The group which replaces the resource on the server. - Group *ErrorGroup `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` -} - -func (m *UpdateGroupRequest) Reset() { *m = UpdateGroupRequest{} } -func (m *UpdateGroupRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateGroupRequest) ProtoMessage() {} -func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *UpdateGroupRequest) GetGroup() *ErrorGroup { - if m != nil { - return m.Group - } - return nil -} - -func init() { - proto.RegisterType((*GetGroupRequest)(nil), "google.devtools.clouderrorreporting.v1beta1.GetGroupRequest") - proto.RegisterType((*UpdateGroupRequest)(nil), "google.devtools.clouderrorreporting.v1beta1.UpdateGroupRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ErrorGroupService service - -type ErrorGroupServiceClient interface { - // Get the specified group. - GetGroup(ctx context.Context, in *GetGroupRequest, opts ...grpc.CallOption) (*ErrorGroup, error) - // Replace the data for the specified group. - // Fails if the group does not exist. - UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...grpc.CallOption) (*ErrorGroup, error) -} - -type errorGroupServiceClient struct { - cc *grpc.ClientConn -} - -func NewErrorGroupServiceClient(cc *grpc.ClientConn) ErrorGroupServiceClient { - return &errorGroupServiceClient{cc} -} - -func (c *errorGroupServiceClient) GetGroup(ctx context.Context, in *GetGroupRequest, opts ...grpc.CallOption) (*ErrorGroup, error) { - out := new(ErrorGroup) - err := grpc.Invoke(ctx, "/google.devtools.clouderrorreporting.v1beta1.ErrorGroupService/GetGroup", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *errorGroupServiceClient) UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...grpc.CallOption) (*ErrorGroup, error) { - out := new(ErrorGroup) - err := grpc.Invoke(ctx, "/google.devtools.clouderrorreporting.v1beta1.ErrorGroupService/UpdateGroup", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ErrorGroupService service - -type ErrorGroupServiceServer interface { - // Get the specified group. - GetGroup(context.Context, *GetGroupRequest) (*ErrorGroup, error) - // Replace the data for the specified group. - // Fails if the group does not exist. - UpdateGroup(context.Context, *UpdateGroupRequest) (*ErrorGroup, error) -} - -func RegisterErrorGroupServiceServer(s *grpc.Server, srv ErrorGroupServiceServer) { - s.RegisterService(&_ErrorGroupService_serviceDesc, srv) -} - -func _ErrorGroupService_GetGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGroupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ErrorGroupServiceServer).GetGroup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouderrorreporting.v1beta1.ErrorGroupService/GetGroup", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ErrorGroupServiceServer).GetGroup(ctx, req.(*GetGroupRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ErrorGroupService_UpdateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateGroupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ErrorGroupServiceServer).UpdateGroup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouderrorreporting.v1beta1.ErrorGroupService/UpdateGroup", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ErrorGroupServiceServer).UpdateGroup(ctx, req.(*UpdateGroupRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ErrorGroupService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.clouderrorreporting.v1beta1.ErrorGroupService", - HandlerType: (*ErrorGroupServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetGroup", - Handler: _ErrorGroupService_GetGroup_Handler, - }, - { - MethodName: "UpdateGroup", - Handler: _ErrorGroupService_UpdateGroup_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/clouderrorreporting/v1beta1/error_group_service.proto", -} - -func init() { - proto.RegisterFile("google/devtools/clouderrorreporting/v1beta1/error_group_service.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 398 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0xcb, 0x4a, 0x23, 0x41, - 0x14, 0x86, 0xe9, 0x0c, 0x33, 0x4c, 0x2a, 0x8b, 0x61, 0x6a, 0x31, 0x0c, 0xcd, 0x0c, 0x48, 0xdc, - 0x68, 0x02, 0x55, 0x76, 0x5c, 0x18, 0xbc, 0x20, 0x44, 0x42, 0x56, 0x4a, 0x88, 0x98, 0x85, 0x04, - 0x43, 0xa5, 0x53, 0x14, 0x2d, 0xdd, 0x75, 0xda, 0xea, 0x4a, 0x36, 0xe2, 0xc6, 0x07, 0x70, 0xe3, - 0x5b, 0xb8, 0xf6, 0x05, 0xdc, 0xba, 0xf5, 0x15, 0x7c, 0x07, 0xb7, 0xd2, 0x55, 0xb9, 0x98, 0x8b, - 0x60, 0x67, 0x7b, 0x2e, 0xff, 0xff, 0xd5, 0x5f, 0x07, 0xd5, 0x05, 0x80, 0x08, 0x39, 0xed, 0xf3, - 0xa1, 0x06, 0x08, 0x13, 0xea, 0x87, 0x30, 0xe8, 0x73, 0xa5, 0x40, 0x29, 0x1e, 0x83, 0xd2, 0x81, - 0x14, 0x74, 0xe8, 0xf5, 0xb8, 0x66, 0x1e, 0x35, 0xe5, 0xae, 0x50, 0x30, 0x88, 0xbb, 0x09, 0x57, - 0xc3, 0xc0, 0xe7, 0x24, 0x56, 0xa0, 0x01, 0x97, 0xad, 0x0c, 0x19, 0xcb, 0x90, 0x25, 0x32, 0x64, - 0x24, 0xe3, 0xfe, 0x1b, 0x79, 0xb2, 0x38, 0xa0, 0x4c, 0x4a, 0xd0, 0x4c, 0x07, 0x20, 0x13, 0x2b, - 0xe5, 0x56, 0xb3, 0x10, 0xf9, 0x10, 0x45, 0x20, 0xed, 0x66, 0x71, 0x0b, 0xfd, 0x6a, 0x70, 0xdd, - 0x48, 0xf1, 0x5a, 0xfc, 0x6a, 0xc0, 0x13, 0x8d, 0xff, 0x23, 0x64, 0x71, 0x25, 0x8b, 0xf8, 0x5f, - 0x67, 0xcd, 0xd9, 0xc8, 0xb7, 0xf2, 0xa6, 0x72, 0xc2, 0x22, 0x5e, 0xf4, 0x11, 0x3e, 0x8b, 0xfb, - 0x4c, 0xf3, 0x99, 0xa5, 0x63, 0xf4, 0xdd, 0x8c, 0x98, 0xf9, 0x42, 0x65, 0x87, 0x64, 0x78, 0x1c, - 0xa9, 0xa7, 0x65, 0x2b, 0x67, 0x55, 0x2a, 0x77, 0xdf, 0xd0, 0xef, 0x69, 0xf5, 0xd4, 0xe6, 0x86, - 0x1f, 0x1d, 0xf4, 0x73, 0x4c, 0x8b, 0xf7, 0x33, 0x59, 0xcc, 0x3d, 0xd2, 0x5d, 0x15, 0xb0, 0xe8, - 0xdd, 0xbe, 0xbc, 0xde, 0xe7, 0xca, 0x78, 0x73, 0x92, 0xe7, 0xf5, 0x34, 0xad, 0x83, 0x58, 0xc1, - 0x25, 0xf7, 0x75, 0x42, 0x4b, 0xd4, 0x54, 0x13, 0x5a, 0xba, 0xc1, 0x4f, 0x0e, 0x2a, 0x7c, 0x88, - 0x0c, 0x1f, 0x66, 0xf2, 0x5e, 0x0c, 0x7b, 0x75, 0xf8, 0xaa, 0x81, 0xaf, 0xb8, 0xf3, 0xf0, 0xe4, - 0x53, 0xf8, 0x5d, 0xfb, 0x21, 0xb5, 0x37, 0x07, 0xa5, 0x87, 0x93, 0xc5, 0xb8, 0xf6, 0x67, 0xe1, - 0x07, 0x9b, 0xe9, 0xcd, 0x35, 0x9d, 0xf3, 0x8b, 0x91, 0x8c, 0x80, 0x90, 0x49, 0x41, 0x40, 0x09, - 0x2a, 0xb8, 0x34, 0x17, 0x49, 0x6d, 0x8b, 0xc5, 0x41, 0xf2, 0xa5, 0x73, 0xde, 0x5b, 0xd2, 0x7b, - 0xc8, 0xad, 0x37, 0xac, 0xc1, 0x51, 0xda, 0xb4, 0x09, 0xb4, 0x26, 0x7c, 0x6d, 0xaf, 0x96, 0x6e, - 0x3e, 0x8f, 0xa7, 0x3a, 0x66, 0xaa, 0x33, 0x3b, 0xd5, 0x69, 0x5b, 0xfd, 0xde, 0x0f, 0x83, 0xb5, - 0xfd, 0x1e, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x0a, 0xfa, 0x93, 0xf6, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/error_stats_service.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/error_stats_service.pb.go deleted file mode 100644 index f1b2544d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/error_stats_service.pb.go +++ /dev/null @@ -1,910 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto - -package clouderrorreporting - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Specifies how the time periods of error group counts are aligned. -type TimedCountAlignment int32 - -const ( - // No alignment specified. - TimedCountAlignment_ERROR_COUNT_ALIGNMENT_UNSPECIFIED TimedCountAlignment = 0 - // The time periods shall be consecutive, have width equal to the - // requested duration, and be aligned at the `alignment_time` provided in - // the request. - // The `alignment_time` does not have to be inside the query period but - // even if it is outside, only time periods are returned which overlap - // with the query period. - // A rounded alignment will typically result in a - // different size of the first or the last time period. - TimedCountAlignment_ALIGNMENT_EQUAL_ROUNDED TimedCountAlignment = 1 - // The time periods shall be consecutive, have width equal to the - // requested duration, and be aligned at the end of the requested time - // period. This can result in a different size of the - // first time period. - TimedCountAlignment_ALIGNMENT_EQUAL_AT_END TimedCountAlignment = 2 -) - -var TimedCountAlignment_name = map[int32]string{ - 0: "ERROR_COUNT_ALIGNMENT_UNSPECIFIED", - 1: "ALIGNMENT_EQUAL_ROUNDED", - 2: "ALIGNMENT_EQUAL_AT_END", -} -var TimedCountAlignment_value = map[string]int32{ - "ERROR_COUNT_ALIGNMENT_UNSPECIFIED": 0, - "ALIGNMENT_EQUAL_ROUNDED": 1, - "ALIGNMENT_EQUAL_AT_END": 2, -} - -func (x TimedCountAlignment) String() string { - return proto.EnumName(TimedCountAlignment_name, int32(x)) -} -func (TimedCountAlignment) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -// A sorting order of error groups. -type ErrorGroupOrder int32 - -const ( - // No group order specified. - ErrorGroupOrder_GROUP_ORDER_UNSPECIFIED ErrorGroupOrder = 0 - // Total count of errors in the given time window in descending order. - ErrorGroupOrder_COUNT_DESC ErrorGroupOrder = 1 - // Timestamp when the group was last seen in the given time window - // in descending order. - ErrorGroupOrder_LAST_SEEN_DESC ErrorGroupOrder = 2 - // Timestamp when the group was created in descending order. - ErrorGroupOrder_CREATED_DESC ErrorGroupOrder = 3 - // Number of affected users in the given time window in descending order. - ErrorGroupOrder_AFFECTED_USERS_DESC ErrorGroupOrder = 4 -) - -var ErrorGroupOrder_name = map[int32]string{ - 0: "GROUP_ORDER_UNSPECIFIED", - 1: "COUNT_DESC", - 2: "LAST_SEEN_DESC", - 3: "CREATED_DESC", - 4: "AFFECTED_USERS_DESC", -} -var ErrorGroupOrder_value = map[string]int32{ - "GROUP_ORDER_UNSPECIFIED": 0, - "COUNT_DESC": 1, - "LAST_SEEN_DESC": 2, - "CREATED_DESC": 3, - "AFFECTED_USERS_DESC": 4, -} - -func (x ErrorGroupOrder) String() string { - return proto.EnumName(ErrorGroupOrder_name, int32(x)) -} -func (ErrorGroupOrder) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -// The supported time ranges. -type QueryTimeRange_Period int32 - -const ( - // Do not use. - QueryTimeRange_PERIOD_UNSPECIFIED QueryTimeRange_Period = 0 - // Retrieve data for the last hour. - // Recommended minimum timed count duration: 1 min. - QueryTimeRange_PERIOD_1_HOUR QueryTimeRange_Period = 1 - // Retrieve data for the last 6 hours. - // Recommended minimum timed count duration: 10 min. - QueryTimeRange_PERIOD_6_HOURS QueryTimeRange_Period = 2 - // Retrieve data for the last day. - // Recommended minimum timed count duration: 1 hour. - QueryTimeRange_PERIOD_1_DAY QueryTimeRange_Period = 3 - // Retrieve data for the last week. - // Recommended minimum timed count duration: 6 hours. - QueryTimeRange_PERIOD_1_WEEK QueryTimeRange_Period = 4 - // Retrieve data for the last 30 days. - // Recommended minimum timed count duration: 1 day. - QueryTimeRange_PERIOD_30_DAYS QueryTimeRange_Period = 5 -) - -var QueryTimeRange_Period_name = map[int32]string{ - 0: "PERIOD_UNSPECIFIED", - 1: "PERIOD_1_HOUR", - 2: "PERIOD_6_HOURS", - 3: "PERIOD_1_DAY", - 4: "PERIOD_1_WEEK", - 5: "PERIOD_30_DAYS", -} -var QueryTimeRange_Period_value = map[string]int32{ - "PERIOD_UNSPECIFIED": 0, - "PERIOD_1_HOUR": 1, - "PERIOD_6_HOURS": 2, - "PERIOD_1_DAY": 3, - "PERIOD_1_WEEK": 4, - "PERIOD_30_DAYS": 5, -} - -func (x QueryTimeRange_Period) String() string { - return proto.EnumName(QueryTimeRange_Period_name, int32(x)) -} -func (QueryTimeRange_Period) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{6, 0} } - -// Specifies a set of `ErrorGroupStats` to return. -type ListGroupStatsRequest struct { - // [Required] The resource name of the Google Cloud Platform project. Written - // as <code>projects/</code> plus the - // <a href="https://support.google.com/cloud/answer/6158840">Google Cloud - // Platform project ID</a>. - // - // Example: <code>projects/my-project-123</code>. - ProjectName string `protobuf:"bytes,1,opt,name=project_name,json=projectName" json:"project_name,omitempty"` - // [Optional] List all <code>ErrorGroupStats</code> with these IDs. - GroupId []string `protobuf:"bytes,2,rep,name=group_id,json=groupId" json:"group_id,omitempty"` - // [Optional] List only <code>ErrorGroupStats</code> which belong to a service - // context that matches the filter. - // Data for all service contexts is returned if this field is not specified. - ServiceFilter *ServiceContextFilter `protobuf:"bytes,3,opt,name=service_filter,json=serviceFilter" json:"service_filter,omitempty"` - // [Optional] List data for the given time range. - // If not set a default time range is used. The field time_range_begin - // in the response will specify the beginning of this time range. - // Only <code>ErrorGroupStats</code> with a non-zero count in the given time - // range are returned, unless the request contains an explicit group_id list. - // If a group_id list is given, also <code>ErrorGroupStats</code> with zero - // occurrences are returned. - TimeRange *QueryTimeRange `protobuf:"bytes,5,opt,name=time_range,json=timeRange" json:"time_range,omitempty"` - // [Optional] The preferred duration for a single returned `TimedCount`. - // If not set, no timed counts are returned. - TimedCountDuration *google_protobuf2.Duration `protobuf:"bytes,6,opt,name=timed_count_duration,json=timedCountDuration" json:"timed_count_duration,omitempty"` - // [Optional] The alignment of the timed counts to be returned. - // Default is `ALIGNMENT_EQUAL_AT_END`. - Alignment TimedCountAlignment `protobuf:"varint,7,opt,name=alignment,enum=google.devtools.clouderrorreporting.v1beta1.TimedCountAlignment" json:"alignment,omitempty"` - // [Optional] Time where the timed counts shall be aligned if rounded - // alignment is chosen. Default is 00:00 UTC. - AlignmentTime *google_protobuf1.Timestamp `protobuf:"bytes,8,opt,name=alignment_time,json=alignmentTime" json:"alignment_time,omitempty"` - // [Optional] The sort order in which the results are returned. - // Default is `COUNT_DESC`. - Order ErrorGroupOrder `protobuf:"varint,9,opt,name=order,enum=google.devtools.clouderrorreporting.v1beta1.ErrorGroupOrder" json:"order,omitempty"` - // [Optional] The maximum number of results to return per response. - // Default is 20. - PageSize int32 `protobuf:"varint,11,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // [Optional] A `next_page_token` provided by a previous response. To view - // additional results, pass this token along with the identical query - // parameters as the first request. - PageToken string `protobuf:"bytes,12,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListGroupStatsRequest) Reset() { *m = ListGroupStatsRequest{} } -func (m *ListGroupStatsRequest) String() string { return proto.CompactTextString(m) } -func (*ListGroupStatsRequest) ProtoMessage() {} -func (*ListGroupStatsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *ListGroupStatsRequest) GetProjectName() string { - if m != nil { - return m.ProjectName - } - return "" -} - -func (m *ListGroupStatsRequest) GetGroupId() []string { - if m != nil { - return m.GroupId - } - return nil -} - -func (m *ListGroupStatsRequest) GetServiceFilter() *ServiceContextFilter { - if m != nil { - return m.ServiceFilter - } - return nil -} - -func (m *ListGroupStatsRequest) GetTimeRange() *QueryTimeRange { - if m != nil { - return m.TimeRange - } - return nil -} - -func (m *ListGroupStatsRequest) GetTimedCountDuration() *google_protobuf2.Duration { - if m != nil { - return m.TimedCountDuration - } - return nil -} - -func (m *ListGroupStatsRequest) GetAlignment() TimedCountAlignment { - if m != nil { - return m.Alignment - } - return TimedCountAlignment_ERROR_COUNT_ALIGNMENT_UNSPECIFIED -} - -func (m *ListGroupStatsRequest) GetAlignmentTime() *google_protobuf1.Timestamp { - if m != nil { - return m.AlignmentTime - } - return nil -} - -func (m *ListGroupStatsRequest) GetOrder() ErrorGroupOrder { - if m != nil { - return m.Order - } - return ErrorGroupOrder_GROUP_ORDER_UNSPECIFIED -} - -func (m *ListGroupStatsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListGroupStatsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Contains a set of requested error group stats. -type ListGroupStatsResponse struct { - // The error group stats which match the given request. - ErrorGroupStats []*ErrorGroupStats `protobuf:"bytes,1,rep,name=error_group_stats,json=errorGroupStats" json:"error_group_stats,omitempty"` - // If non-empty, more results are available. - // Pass this token, along with the same query parameters as the first - // request, to view the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` - // The timestamp specifies the start time to which the request was restricted. - // The start time is set based on the requested time range. It may be adjusted - // to a later time if a project has exceeded the storage quota and older data - // has been deleted. - TimeRangeBegin *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=time_range_begin,json=timeRangeBegin" json:"time_range_begin,omitempty"` -} - -func (m *ListGroupStatsResponse) Reset() { *m = ListGroupStatsResponse{} } -func (m *ListGroupStatsResponse) String() string { return proto.CompactTextString(m) } -func (*ListGroupStatsResponse) ProtoMessage() {} -func (*ListGroupStatsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ListGroupStatsResponse) GetErrorGroupStats() []*ErrorGroupStats { - if m != nil { - return m.ErrorGroupStats - } - return nil -} - -func (m *ListGroupStatsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func (m *ListGroupStatsResponse) GetTimeRangeBegin() *google_protobuf1.Timestamp { - if m != nil { - return m.TimeRangeBegin - } - return nil -} - -// Data extracted for a specific group based on certain filter criteria, -// such as a given time period and/or service filter. -type ErrorGroupStats struct { - // Group data that is independent of the filter criteria. - Group *ErrorGroup `protobuf:"bytes,1,opt,name=group" json:"group,omitempty"` - // Approximate total number of events in the given group that match - // the filter criteria. - Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` - // Approximate number of affected users in the given group that - // match the filter criteria. - // Users are distinguished by data in the `ErrorContext` of the - // individual error events, such as their login name or their remote - // IP address in case of HTTP requests. - // The number of affected users can be zero even if the number of - // errors is non-zero if no data was provided from which the - // affected user could be deduced. - // Users are counted based on data in the request - // context that was provided in the error report. If more users are - // implicitly affected, such as due to a crash of the whole service, - // this is not reflected here. - AffectedUsersCount int64 `protobuf:"varint,3,opt,name=affected_users_count,json=affectedUsersCount" json:"affected_users_count,omitempty"` - // Approximate number of occurrences over time. - // Timed counts returned by ListGroups are guaranteed to be: - // - // - Inside the requested time interval - // - Non-overlapping, and - // - Ordered by ascending time. - TimedCounts []*TimedCount `protobuf:"bytes,4,rep,name=timed_counts,json=timedCounts" json:"timed_counts,omitempty"` - // Approximate first occurrence that was ever seen for this group - // and which matches the given filter criteria, ignoring the - // time_range that was specified in the request. - FirstSeenTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=first_seen_time,json=firstSeenTime" json:"first_seen_time,omitempty"` - // Approximate last occurrence that was ever seen for this group and - // which matches the given filter criteria, ignoring the time_range - // that was specified in the request. - LastSeenTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=last_seen_time,json=lastSeenTime" json:"last_seen_time,omitempty"` - // Service contexts with a non-zero error count for the given filter - // criteria. This list can be truncated if multiple services are affected. - // Refer to `num_affected_services` for the total count. - AffectedServices []*ServiceContext `protobuf:"bytes,7,rep,name=affected_services,json=affectedServices" json:"affected_services,omitempty"` - // The total number of services with a non-zero error count for the given - // filter criteria. - NumAffectedServices int32 `protobuf:"varint,8,opt,name=num_affected_services,json=numAffectedServices" json:"num_affected_services,omitempty"` - // An arbitrary event that is chosen as representative for the whole group. - // The representative event is intended to be used as a quick preview for - // the whole group. Events in the group are usually sufficiently similar - // to each other such that showing an arbitrary representative provides - // insight into the characteristics of the group as a whole. - Representative *ErrorEvent `protobuf:"bytes,9,opt,name=representative" json:"representative,omitempty"` -} - -func (m *ErrorGroupStats) Reset() { *m = ErrorGroupStats{} } -func (m *ErrorGroupStats) String() string { return proto.CompactTextString(m) } -func (*ErrorGroupStats) ProtoMessage() {} -func (*ErrorGroupStats) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *ErrorGroupStats) GetGroup() *ErrorGroup { - if m != nil { - return m.Group - } - return nil -} - -func (m *ErrorGroupStats) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -func (m *ErrorGroupStats) GetAffectedUsersCount() int64 { - if m != nil { - return m.AffectedUsersCount - } - return 0 -} - -func (m *ErrorGroupStats) GetTimedCounts() []*TimedCount { - if m != nil { - return m.TimedCounts - } - return nil -} - -func (m *ErrorGroupStats) GetFirstSeenTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FirstSeenTime - } - return nil -} - -func (m *ErrorGroupStats) GetLastSeenTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LastSeenTime - } - return nil -} - -func (m *ErrorGroupStats) GetAffectedServices() []*ServiceContext { - if m != nil { - return m.AffectedServices - } - return nil -} - -func (m *ErrorGroupStats) GetNumAffectedServices() int32 { - if m != nil { - return m.NumAffectedServices - } - return 0 -} - -func (m *ErrorGroupStats) GetRepresentative() *ErrorEvent { - if m != nil { - return m.Representative - } - return nil -} - -// The number of errors in a given time period. -// All numbers are approximate since the error events are sampled -// before counting them. -type TimedCount struct { - // Approximate number of occurrences in the given time period. - Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"` - // Start of the time period to which `count` refers (included). - StartTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // End of the time period to which `count` refers (excluded). - EndTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *TimedCount) Reset() { *m = TimedCount{} } -func (m *TimedCount) String() string { return proto.CompactTextString(m) } -func (*TimedCount) ProtoMessage() {} -func (*TimedCount) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *TimedCount) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -func (m *TimedCount) GetStartTime() *google_protobuf1.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *TimedCount) GetEndTime() *google_protobuf1.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -// Specifies a set of error events to return. -type ListEventsRequest struct { - // [Required] The resource name of the Google Cloud Platform project. Written - // as `projects/` plus the - // [Google Cloud Platform project - // ID](https://support.google.com/cloud/answer/6158840). - // Example: `projects/my-project-123`. - ProjectName string `protobuf:"bytes,1,opt,name=project_name,json=projectName" json:"project_name,omitempty"` - // [Required] The group for which events shall be returned. - GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId" json:"group_id,omitempty"` - // [Optional] List only ErrorGroups which belong to a service context that - // matches the filter. - // Data for all service contexts is returned if this field is not specified. - ServiceFilter *ServiceContextFilter `protobuf:"bytes,3,opt,name=service_filter,json=serviceFilter" json:"service_filter,omitempty"` - // [Optional] List only data for the given time range. - // If not set a default time range is used. The field time_range_begin - // in the response will specify the beginning of this time range. - TimeRange *QueryTimeRange `protobuf:"bytes,4,opt,name=time_range,json=timeRange" json:"time_range,omitempty"` - // [Optional] The maximum number of results to return per response. - PageSize int32 `protobuf:"varint,6,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // [Optional] A `next_page_token` provided by a previous response. - PageToken string `protobuf:"bytes,7,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListEventsRequest) Reset() { *m = ListEventsRequest{} } -func (m *ListEventsRequest) String() string { return proto.CompactTextString(m) } -func (*ListEventsRequest) ProtoMessage() {} -func (*ListEventsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *ListEventsRequest) GetProjectName() string { - if m != nil { - return m.ProjectName - } - return "" -} - -func (m *ListEventsRequest) GetGroupId() string { - if m != nil { - return m.GroupId - } - return "" -} - -func (m *ListEventsRequest) GetServiceFilter() *ServiceContextFilter { - if m != nil { - return m.ServiceFilter - } - return nil -} - -func (m *ListEventsRequest) GetTimeRange() *QueryTimeRange { - if m != nil { - return m.TimeRange - } - return nil -} - -func (m *ListEventsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListEventsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Contains a set of requested error events. -type ListEventsResponse struct { - // The error events which match the given request. - ErrorEvents []*ErrorEvent `protobuf:"bytes,1,rep,name=error_events,json=errorEvents" json:"error_events,omitempty"` - // If non-empty, more results are available. - // Pass this token, along with the same query parameters as the first - // request, to view the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` - // The timestamp specifies the start time to which the request was restricted. - TimeRangeBegin *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=time_range_begin,json=timeRangeBegin" json:"time_range_begin,omitempty"` -} - -func (m *ListEventsResponse) Reset() { *m = ListEventsResponse{} } -func (m *ListEventsResponse) String() string { return proto.CompactTextString(m) } -func (*ListEventsResponse) ProtoMessage() {} -func (*ListEventsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *ListEventsResponse) GetErrorEvents() []*ErrorEvent { - if m != nil { - return m.ErrorEvents - } - return nil -} - -func (m *ListEventsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func (m *ListEventsResponse) GetTimeRangeBegin() *google_protobuf1.Timestamp { - if m != nil { - return m.TimeRangeBegin - } - return nil -} - -// Requests might be rejected or the resulting timed count durations might be -// adjusted for lower durations. -type QueryTimeRange struct { - // Restricts the query to the specified time range. - Period QueryTimeRange_Period `protobuf:"varint,1,opt,name=period,enum=google.devtools.clouderrorreporting.v1beta1.QueryTimeRange_Period" json:"period,omitempty"` -} - -func (m *QueryTimeRange) Reset() { *m = QueryTimeRange{} } -func (m *QueryTimeRange) String() string { return proto.CompactTextString(m) } -func (*QueryTimeRange) ProtoMessage() {} -func (*QueryTimeRange) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *QueryTimeRange) GetPeriod() QueryTimeRange_Period { - if m != nil { - return m.Period - } - return QueryTimeRange_PERIOD_UNSPECIFIED -} - -// Specifies criteria for filtering a subset of service contexts. -// The fields in the filter correspond to the fields in `ServiceContext`. -// Only exact, case-sensitive matches are supported. -// If a field is unset or empty, it matches arbitrary values. -type ServiceContextFilter struct { - // [Optional] The exact value to match against - // [`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service). - Service string `protobuf:"bytes,2,opt,name=service" json:"service,omitempty"` - // [Optional] The exact value to match against - // [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version). - Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` - // [Optional] The exact value to match against - // [`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type). - ResourceType string `protobuf:"bytes,4,opt,name=resource_type,json=resourceType" json:"resource_type,omitempty"` -} - -func (m *ServiceContextFilter) Reset() { *m = ServiceContextFilter{} } -func (m *ServiceContextFilter) String() string { return proto.CompactTextString(m) } -func (*ServiceContextFilter) ProtoMessage() {} -func (*ServiceContextFilter) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *ServiceContextFilter) GetService() string { - if m != nil { - return m.Service - } - return "" -} - -func (m *ServiceContextFilter) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func (m *ServiceContextFilter) GetResourceType() string { - if m != nil { - return m.ResourceType - } - return "" -} - -// Deletes all events in the project. -type DeleteEventsRequest struct { - // [Required] The resource name of the Google Cloud Platform project. Written - // as `projects/` plus the - // [Google Cloud Platform project - // ID](https://support.google.com/cloud/answer/6158840). - // Example: `projects/my-project-123`. - ProjectName string `protobuf:"bytes,1,opt,name=project_name,json=projectName" json:"project_name,omitempty"` -} - -func (m *DeleteEventsRequest) Reset() { *m = DeleteEventsRequest{} } -func (m *DeleteEventsRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteEventsRequest) ProtoMessage() {} -func (*DeleteEventsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *DeleteEventsRequest) GetProjectName() string { - if m != nil { - return m.ProjectName - } - return "" -} - -// Response message for deleting error events. -type DeleteEventsResponse struct { -} - -func (m *DeleteEventsResponse) Reset() { *m = DeleteEventsResponse{} } -func (m *DeleteEventsResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteEventsResponse) ProtoMessage() {} -func (*DeleteEventsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{9} } - -func init() { - proto.RegisterType((*ListGroupStatsRequest)(nil), "google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest") - proto.RegisterType((*ListGroupStatsResponse)(nil), "google.devtools.clouderrorreporting.v1beta1.ListGroupStatsResponse") - proto.RegisterType((*ErrorGroupStats)(nil), "google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats") - proto.RegisterType((*TimedCount)(nil), "google.devtools.clouderrorreporting.v1beta1.TimedCount") - proto.RegisterType((*ListEventsRequest)(nil), "google.devtools.clouderrorreporting.v1beta1.ListEventsRequest") - proto.RegisterType((*ListEventsResponse)(nil), "google.devtools.clouderrorreporting.v1beta1.ListEventsResponse") - proto.RegisterType((*QueryTimeRange)(nil), "google.devtools.clouderrorreporting.v1beta1.QueryTimeRange") - proto.RegisterType((*ServiceContextFilter)(nil), "google.devtools.clouderrorreporting.v1beta1.ServiceContextFilter") - proto.RegisterType((*DeleteEventsRequest)(nil), "google.devtools.clouderrorreporting.v1beta1.DeleteEventsRequest") - proto.RegisterType((*DeleteEventsResponse)(nil), "google.devtools.clouderrorreporting.v1beta1.DeleteEventsResponse") - proto.RegisterEnum("google.devtools.clouderrorreporting.v1beta1.TimedCountAlignment", TimedCountAlignment_name, TimedCountAlignment_value) - proto.RegisterEnum("google.devtools.clouderrorreporting.v1beta1.ErrorGroupOrder", ErrorGroupOrder_name, ErrorGroupOrder_value) - proto.RegisterEnum("google.devtools.clouderrorreporting.v1beta1.QueryTimeRange_Period", QueryTimeRange_Period_name, QueryTimeRange_Period_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ErrorStatsService service - -type ErrorStatsServiceClient interface { - // Lists the specified groups. - ListGroupStats(ctx context.Context, in *ListGroupStatsRequest, opts ...grpc.CallOption) (*ListGroupStatsResponse, error) - // Lists the specified events. - ListEvents(ctx context.Context, in *ListEventsRequest, opts ...grpc.CallOption) (*ListEventsResponse, error) - // Deletes all error events of a given project. - DeleteEvents(ctx context.Context, in *DeleteEventsRequest, opts ...grpc.CallOption) (*DeleteEventsResponse, error) -} - -type errorStatsServiceClient struct { - cc *grpc.ClientConn -} - -func NewErrorStatsServiceClient(cc *grpc.ClientConn) ErrorStatsServiceClient { - return &errorStatsServiceClient{cc} -} - -func (c *errorStatsServiceClient) ListGroupStats(ctx context.Context, in *ListGroupStatsRequest, opts ...grpc.CallOption) (*ListGroupStatsResponse, error) { - out := new(ListGroupStatsResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/ListGroupStats", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *errorStatsServiceClient) ListEvents(ctx context.Context, in *ListEventsRequest, opts ...grpc.CallOption) (*ListEventsResponse, error) { - out := new(ListEventsResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/ListEvents", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *errorStatsServiceClient) DeleteEvents(ctx context.Context, in *DeleteEventsRequest, opts ...grpc.CallOption) (*DeleteEventsResponse, error) { - out := new(DeleteEventsResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/DeleteEvents", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ErrorStatsService service - -type ErrorStatsServiceServer interface { - // Lists the specified groups. - ListGroupStats(context.Context, *ListGroupStatsRequest) (*ListGroupStatsResponse, error) - // Lists the specified events. - ListEvents(context.Context, *ListEventsRequest) (*ListEventsResponse, error) - // Deletes all error events of a given project. - DeleteEvents(context.Context, *DeleteEventsRequest) (*DeleteEventsResponse, error) -} - -func RegisterErrorStatsServiceServer(s *grpc.Server, srv ErrorStatsServiceServer) { - s.RegisterService(&_ErrorStatsService_serviceDesc, srv) -} - -func _ErrorStatsService_ListGroupStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListGroupStatsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ErrorStatsServiceServer).ListGroupStats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/ListGroupStats", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ErrorStatsServiceServer).ListGroupStats(ctx, req.(*ListGroupStatsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ErrorStatsService_ListEvents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListEventsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ErrorStatsServiceServer).ListEvents(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/ListEvents", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ErrorStatsServiceServer).ListEvents(ctx, req.(*ListEventsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ErrorStatsService_DeleteEvents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteEventsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ErrorStatsServiceServer).DeleteEvents(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/DeleteEvents", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ErrorStatsServiceServer).DeleteEvents(ctx, req.(*DeleteEventsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ErrorStatsService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.clouderrorreporting.v1beta1.ErrorStatsService", - HandlerType: (*ErrorStatsServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListGroupStats", - Handler: _ErrorStatsService_ListGroupStats_Handler, - }, - { - MethodName: "ListEvents", - Handler: _ErrorStatsService_ListEvents_Handler, - }, - { - MethodName: "DeleteEvents", - Handler: _ErrorStatsService_DeleteEvents_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto", -} - -func init() { - proto.RegisterFile("google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto", fileDescriptor2) -} - -var fileDescriptor2 = []byte{ - // 1328 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xcd, 0x6f, 0x1b, 0x45, - 0x14, 0x67, 0xed, 0x38, 0x89, 0x9f, 0x1d, 0xc7, 0x99, 0xa4, 0xe9, 0xd6, 0xe5, 0x23, 0x75, 0x05, - 0x0a, 0xa9, 0xb0, 0x9b, 0x54, 0xa5, 0x45, 0xe5, 0xa3, 0x8e, 0xbd, 0x09, 0x51, 0x53, 0xdb, 0x1d, - 0xdb, 0x45, 0x44, 0x55, 0x57, 0x1b, 0xfb, 0xc5, 0x5d, 0xb0, 0x77, 0x97, 0xdd, 0x71, 0xd4, 0x16, - 0x55, 0x42, 0xdc, 0x38, 0xc3, 0x8d, 0xff, 0x80, 0xbf, 0x82, 0x13, 0x07, 0x4e, 0x48, 0xbd, 0x73, - 0xe2, 0x0e, 0xe2, 0xc2, 0x15, 0xcd, 0xc7, 0xfa, 0xab, 0x11, 0xa9, 0x1d, 0x84, 0xb8, 0xed, 0xbc, - 0x37, 0xef, 0xf7, 0x3e, 0xe6, 0xf7, 0xde, 0xcc, 0x82, 0xd1, 0x76, 0xdd, 0x76, 0x07, 0xf3, 0x2d, - 0x3c, 0x66, 0xae, 0xdb, 0x09, 0xf2, 0xcd, 0x8e, 0xdb, 0x6b, 0xa1, 0xef, 0xbb, 0xbe, 0x8f, 0x9e, - 0xeb, 0x33, 0xdb, 0x69, 0xe7, 0x8f, 0x37, 0x0f, 0x91, 0x59, 0x9b, 0x79, 0x21, 0x36, 0x03, 0x66, - 0xb1, 0xc0, 0x0c, 0xd0, 0x3f, 0xb6, 0x9b, 0x98, 0xf3, 0x7c, 0x97, 0xb9, 0xe4, 0x8a, 0x84, 0xc9, - 0x85, 0x30, 0xb9, 0x13, 0x60, 0x72, 0x0a, 0x26, 0xf3, 0xaa, 0xf2, 0x69, 0x79, 0x76, 0xde, 0x72, - 0x1c, 0x97, 0x59, 0xcc, 0x76, 0x9d, 0x40, 0x42, 0x65, 0x6e, 0x4e, 0x12, 0x51, 0xd3, 0xed, 0x76, - 0x5d, 0x47, 0x59, 0xbe, 0xae, 0x2c, 0xc5, 0xea, 0xb0, 0x77, 0x94, 0x6f, 0xf5, 0x7c, 0x01, 0xad, - 0xf4, 0x6f, 0x8c, 0xeb, 0x99, 0xdd, 0xc5, 0x80, 0x59, 0x5d, 0x4f, 0x6e, 0xc8, 0x7e, 0x1f, 0x83, - 0x73, 0xfb, 0x76, 0xc0, 0x76, 0x7d, 0xb7, 0xe7, 0xd5, 0x78, 0x9a, 0x14, 0xbf, 0xe8, 0x61, 0xc0, - 0xc8, 0x25, 0x48, 0x7a, 0xbe, 0xfb, 0x19, 0x36, 0x99, 0xe9, 0x58, 0x5d, 0xd4, 0xb5, 0x35, 0x6d, - 0x3d, 0x4e, 0x13, 0x4a, 0x56, 0xb6, 0xba, 0x48, 0x2e, 0xc0, 0x7c, 0x9b, 0xdb, 0x99, 0x76, 0x4b, - 0x8f, 0xac, 0x45, 0xd7, 0xe3, 0x74, 0x4e, 0xac, 0xf7, 0x5a, 0xe4, 0x11, 0xa4, 0x54, 0xb9, 0xcc, - 0x23, 0xbb, 0xc3, 0xd0, 0xd7, 0xa3, 0x6b, 0xda, 0x7a, 0x62, 0xab, 0x90, 0x9b, 0xa0, 0x6c, 0xb9, - 0x9a, 0x84, 0x28, 0xba, 0x0e, 0xc3, 0xc7, 0x6c, 0x47, 0x00, 0xd1, 0x05, 0x05, 0x2c, 0x97, 0xe4, - 0x00, 0x80, 0x27, 0x65, 0xfa, 0x96, 0xd3, 0x46, 0x3d, 0x26, 0xbc, 0xdc, 0x9a, 0xc8, 0xcb, 0xbd, - 0x1e, 0xfa, 0x4f, 0xea, 0x76, 0x17, 0x29, 0x87, 0xa0, 0x71, 0x16, 0x7e, 0x92, 0x3b, 0xb0, 0xc2, - 0x17, 0x2d, 0xb3, 0xe9, 0xf6, 0x1c, 0x66, 0x86, 0xc5, 0xd5, 0x67, 0x85, 0x97, 0x0b, 0xa1, 0x97, - 0xb0, 0xba, 0xb9, 0x92, 0xda, 0x40, 0x89, 0x30, 0x2b, 0x72, 0xab, 0x50, 0x46, 0x1e, 0x42, 0xdc, - 0xea, 0xd8, 0x6d, 0xa7, 0x8b, 0x0e, 0xd3, 0xe7, 0xd6, 0xb4, 0xf5, 0xd4, 0xd6, 0xed, 0x89, 0xe2, - 0xac, 0xf7, 0x31, 0x0b, 0x21, 0x0e, 0x1d, 0x40, 0x92, 0x02, 0xa4, 0xfa, 0x0b, 0x93, 0xfb, 0xd7, - 0xe7, 0x45, 0x98, 0x99, 0x17, 0xc2, 0xac, 0x87, 0x24, 0xa0, 0x0b, 0x7d, 0x0b, 0x2e, 0x23, 0x14, - 0x62, 0xae, 0xdf, 0x42, 0x5f, 0x8f, 0x8b, 0xf0, 0xde, 0x9f, 0x28, 0x3c, 0x83, 0x8b, 0x05, 0x8f, - 0x2a, 0x1c, 0x83, 0x4a, 0x28, 0x72, 0x11, 0xe2, 0x9e, 0xd5, 0x46, 0x33, 0xb0, 0x9f, 0xa2, 0x9e, - 0x58, 0xd3, 0xd6, 0x63, 0x74, 0x9e, 0x0b, 0x6a, 0xf6, 0x53, 0x24, 0xaf, 0x01, 0x08, 0x25, 0x73, - 0x3f, 0x47, 0x47, 0x4f, 0x0a, 0x8a, 0x89, 0xed, 0x75, 0x2e, 0xc8, 0xfe, 0xa1, 0xc1, 0xea, 0x38, - 0x3b, 0x03, 0xcf, 0x75, 0x02, 0x24, 0x8f, 0x60, 0x49, 0xf6, 0xa6, 0x64, 0xa0, 0xe8, 0x50, 0x5d, - 0x5b, 0x8b, 0xae, 0x27, 0xa6, 0x0e, 0x5b, 0x3a, 0x58, 0xc4, 0x51, 0x01, 0x79, 0x0b, 0x16, 0x1d, - 0x7c, 0xcc, 0xcc, 0xa1, 0x40, 0x23, 0x22, 0xd0, 0x05, 0x2e, 0xae, 0x86, 0xc1, 0x92, 0x12, 0xa4, - 0x07, 0x44, 0x34, 0x0f, 0xb1, 0x6d, 0x3b, 0xfa, 0xcc, 0xa9, 0x27, 0x90, 0xea, 0xb3, 0x6d, 0x9b, - 0x5b, 0x64, 0xbf, 0x89, 0xc1, 0xe2, 0x58, 0x48, 0xe4, 0x2e, 0xc4, 0x44, 0x96, 0xa2, 0x07, 0x13, - 0x5b, 0x37, 0xa6, 0xcc, 0x8f, 0x4a, 0x14, 0xb2, 0x02, 0x31, 0xc1, 0x67, 0x91, 0x46, 0x94, 0xca, - 0x05, 0xb9, 0x0a, 0x2b, 0xd6, 0xd1, 0x11, 0x36, 0x19, 0xb6, 0xcc, 0x5e, 0x80, 0x7e, 0x20, 0x49, - 0x2f, 0xfa, 0x36, 0x4a, 0x49, 0xa8, 0x6b, 0x70, 0x95, 0x20, 0x21, 0x39, 0x80, 0xe4, 0x50, 0x77, - 0x04, 0xfa, 0x8c, 0xa8, 0xfe, 0x8d, 0x29, 0x39, 0x4d, 0x13, 0x83, 0x9e, 0x09, 0xc8, 0x36, 0x2c, - 0x1e, 0xd9, 0x7e, 0xc0, 0xcc, 0x00, 0xd1, 0x91, 0x6c, 0x8e, 0x9d, 0xce, 0x66, 0x61, 0x52, 0x43, - 0x74, 0x04, 0x9b, 0x6f, 0x43, 0xaa, 0x63, 0x8d, 0x40, 0xcc, 0x9e, 0x0a, 0x91, 0xe4, 0x16, 0x7d, - 0x84, 0x47, 0xb0, 0xd4, 0xaf, 0x89, 0x9a, 0x3a, 0x81, 0x3e, 0x27, 0xd2, 0xbc, 0x75, 0x86, 0x41, - 0x46, 0xd3, 0x21, 0xaa, 0x92, 0x07, 0x64, 0x0b, 0xce, 0x39, 0xbd, 0xae, 0xf9, 0xa2, 0xb7, 0x79, - 0xd1, 0x31, 0xcb, 0x4e, 0xaf, 0x5b, 0x18, 0xb7, 0x31, 0x21, 0xe5, 0xa3, 0xe7, 0x63, 0x80, 0x0e, - 0xbf, 0x4f, 0x8e, 0x51, 0xb4, 0xed, 0x54, 0xfc, 0x30, 0x8e, 0xf9, 0x30, 0x19, 0x83, 0xcb, 0x7e, - 0xa7, 0x01, 0x0c, 0x0e, 0x68, 0xc0, 0x1b, 0x6d, 0x98, 0x37, 0xef, 0x01, 0x04, 0xcc, 0xf2, 0xd5, - 0xc8, 0x89, 0x9c, 0x5a, 0xe1, 0xb8, 0xd8, 0x2d, 0xca, 0x7b, 0x1d, 0xe6, 0xd1, 0x69, 0x49, 0xc3, - 0xe8, 0xa9, 0x86, 0x73, 0xe8, 0xb4, 0xf8, 0x2a, 0xfb, 0x3c, 0x02, 0x4b, 0x7c, 0x2a, 0x88, 0xa0, - 0xa7, 0xbf, 0xaf, 0xb4, 0xff, 0xc3, 0x7d, 0x35, 0xf3, 0xaf, 0xde, 0x57, 0x23, 0xb3, 0x76, 0xf6, - 0x1f, 0x67, 0xed, 0xdc, 0xf8, 0xac, 0xfd, 0x55, 0x03, 0x32, 0x5c, 0x55, 0x35, 0x67, 0x0f, 0x20, - 0x29, 0xe7, 0x2c, 0x0a, 0xb9, 0x1a, 0xb1, 0x53, 0x53, 0x2c, 0x81, 0xfd, 0xef, 0xff, 0x7a, 0xb2, - 0xfe, 0xae, 0x41, 0x6a, 0xb4, 0x74, 0xe4, 0x00, 0x66, 0x3d, 0xf4, 0x6d, 0xb7, 0x25, 0xd8, 0x92, - 0xda, 0xda, 0x3e, 0xc3, 0x39, 0xe4, 0xaa, 0x02, 0x89, 0x2a, 0xc4, 0xec, 0x57, 0x1a, 0xcc, 0x4a, - 0x11, 0x59, 0x05, 0x52, 0x35, 0xe8, 0x5e, 0xa5, 0x64, 0x36, 0xca, 0xb5, 0xaa, 0x51, 0xdc, 0xdb, - 0xd9, 0x33, 0x4a, 0xe9, 0x57, 0xc8, 0x12, 0x2c, 0x28, 0xf9, 0xa6, 0xf9, 0x71, 0xa5, 0x41, 0xd3, - 0x1a, 0x21, 0x90, 0x52, 0xa2, 0x77, 0x85, 0xa8, 0x96, 0x8e, 0x90, 0x34, 0x24, 0xfb, 0xdb, 0x4a, - 0x85, 0x4f, 0xd3, 0xd1, 0x11, 0xc3, 0x4f, 0x0c, 0xe3, 0x4e, 0x7a, 0x66, 0xc8, 0xf0, 0xda, 0x55, - 0xbe, 0xab, 0x96, 0x8e, 0x65, 0x5d, 0x58, 0x39, 0x89, 0x91, 0x44, 0x87, 0x39, 0xc5, 0xc9, 0xb0, - 0x0d, 0xd4, 0x92, 0x6b, 0x8e, 0xd1, 0x0f, 0xf8, 0x1b, 0x27, 0x2a, 0x35, 0x6a, 0x49, 0x2e, 0xc3, - 0x82, 0x8f, 0x81, 0xdb, 0xf3, 0x9b, 0x68, 0xb2, 0x27, 0x9e, 0x64, 0x6e, 0x9c, 0x26, 0x43, 0x61, - 0xfd, 0x89, 0x87, 0xd9, 0x9b, 0xb0, 0x5c, 0xc2, 0x0e, 0x32, 0x9c, 0xb4, 0x35, 0xb3, 0xab, 0xb0, - 0x32, 0x6a, 0x29, 0xe9, 0xb7, 0xd1, 0x83, 0xe5, 0x13, 0x9e, 0x3d, 0xe4, 0x4d, 0xb8, 0x64, 0x50, - 0x5a, 0xa1, 0x66, 0xb1, 0xd2, 0x28, 0xd7, 0xcd, 0xc2, 0xfe, 0xde, 0x6e, 0xf9, 0xae, 0x51, 0xae, - 0x8f, 0x15, 0xf8, 0x22, 0x9c, 0x1f, 0xa8, 0x8c, 0x7b, 0x8d, 0xc2, 0xbe, 0x49, 0x2b, 0x8d, 0x72, - 0xc9, 0x28, 0xa5, 0x35, 0x92, 0x81, 0xd5, 0x71, 0x65, 0xa1, 0x6e, 0x1a, 0xe5, 0x52, 0x3a, 0xb2, - 0xf1, 0x6c, 0xf8, 0x12, 0xae, 0xa8, 0x77, 0xcc, 0xf9, 0x5d, 0x5a, 0x69, 0x54, 0xcd, 0x0a, 0x2d, - 0x19, 0x74, 0xcc, 0x51, 0x0a, 0x40, 0x46, 0x52, 0x32, 0x6a, 0x45, 0x79, 0x8c, 0xfb, 0x85, 0x5a, - 0xdd, 0xac, 0x19, 0x46, 0x59, 0xca, 0xc4, 0x31, 0x16, 0xa9, 0x51, 0xa8, 0x1b, 0x25, 0x29, 0x89, - 0x92, 0xf3, 0xb0, 0x5c, 0xd8, 0xd9, 0x31, 0x8a, 0x5c, 0xd4, 0xa8, 0x19, 0xb4, 0x26, 0x15, 0x33, - 0x5b, 0x7f, 0xce, 0xc0, 0x92, 0xf0, 0x2f, 0xee, 0x7f, 0x75, 0x86, 0xe4, 0x17, 0x0d, 0x52, 0xa3, - 0xaf, 0x21, 0x32, 0x19, 0x61, 0x4f, 0x7c, 0xe8, 0x67, 0x8a, 0x67, 0xc2, 0x90, 0xe7, 0x94, 0xbd, - 0xfe, 0xf5, 0xf3, 0xdf, 0xbe, 0x8d, 0xe4, 0xc9, 0x3b, 0xfd, 0xff, 0x94, 0x2f, 0x87, 0x8f, 0xfc, - 0x03, 0xb5, 0x08, 0xf2, 0x1b, 0xcf, 0xf2, 0xed, 0x41, 0xfc, 0x3f, 0x6a, 0x00, 0x83, 0xa1, 0x43, - 0x3e, 0x9c, 0x38, 0x94, 0x11, 0xa2, 0x65, 0x3e, 0x9a, 0xda, 0x5e, 0xa5, 0xb1, 0x29, 0xd2, 0xb8, - 0x42, 0xde, 0x7e, 0x89, 0x34, 0xe4, 0x40, 0x24, 0x3f, 0x69, 0x90, 0x1c, 0xa6, 0x2e, 0x99, 0xec, - 0x51, 0x7f, 0x42, 0xbf, 0x64, 0x0a, 0x67, 0x40, 0x18, 0x4d, 0x64, 0xe3, 0xe5, 0x13, 0xd9, 0xfe, - 0x4b, 0x03, 0xfe, 0x73, 0x39, 0x89, 0xef, 0xed, 0xd5, 0x17, 0x58, 0x5a, 0xe5, 0x83, 0xb8, 0xaa, - 0x1d, 0x3c, 0x54, 0x30, 0x6d, 0xb7, 0x63, 0x39, 0xed, 0x9c, 0xeb, 0xb7, 0xf3, 0x6d, 0x74, 0xc4, - 0x98, 0xce, 0x4b, 0x95, 0xe5, 0xd9, 0xc1, 0x4b, 0xfd, 0xf2, 0xde, 0x3a, 0x41, 0xf7, 0x43, 0xe4, - 0xf2, 0xae, 0x74, 0x50, 0xe4, 0x4a, 0x79, 0xc5, 0xd0, 0x7e, 0x7c, 0xf7, 0x37, 0xb7, 0xb9, 0xe5, - 0xcf, 0xe1, 0xae, 0x07, 0x62, 0xd7, 0x83, 0xd1, 0x5d, 0x0f, 0xee, 0x4b, 0xfc, 0xc3, 0x59, 0x11, - 0xd6, 0xb5, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x90, 0xe3, 0x06, 0x1a, 0x10, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/report_errors_service.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/report_errors_service.pb.go deleted file mode 100644 index 326ee8f3..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1/report_errors_service.pb.go +++ /dev/null @@ -1,243 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto - -package clouderrorreporting - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A request for reporting an individual error event. -type ReportErrorEventRequest struct { - // [Required] The resource name of the Google Cloud Platform project. Written - // as `projects/` plus the - // [Google Cloud Platform project ID](https://support.google.com/cloud/answer/6158840). - // Example: `projects/my-project-123`. - ProjectName string `protobuf:"bytes,1,opt,name=project_name,json=projectName" json:"project_name,omitempty"` - // [Required] The error event to be reported. - Event *ReportedErrorEvent `protobuf:"bytes,2,opt,name=event" json:"event,omitempty"` -} - -func (m *ReportErrorEventRequest) Reset() { *m = ReportErrorEventRequest{} } -func (m *ReportErrorEventRequest) String() string { return proto.CompactTextString(m) } -func (*ReportErrorEventRequest) ProtoMessage() {} -func (*ReportErrorEventRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *ReportErrorEventRequest) GetProjectName() string { - if m != nil { - return m.ProjectName - } - return "" -} - -func (m *ReportErrorEventRequest) GetEvent() *ReportedErrorEvent { - if m != nil { - return m.Event - } - return nil -} - -// Response for reporting an individual error event. -// Data may be added to this message in the future. -type ReportErrorEventResponse struct { -} - -func (m *ReportErrorEventResponse) Reset() { *m = ReportErrorEventResponse{} } -func (m *ReportErrorEventResponse) String() string { return proto.CompactTextString(m) } -func (*ReportErrorEventResponse) ProtoMessage() {} -func (*ReportErrorEventResponse) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -// An error event which is reported to the Error Reporting system. -type ReportedErrorEvent struct { - // [Optional] Time when the event occurred. - // If not provided, the time when the event was received by the - // Error Reporting system will be used. - EventTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=event_time,json=eventTime" json:"event_time,omitempty"` - // [Required] The service context in which this error has occurred. - ServiceContext *ServiceContext `protobuf:"bytes,2,opt,name=service_context,json=serviceContext" json:"service_context,omitempty"` - // [Required] A message describing the error. The message can contain an - // exception stack in one of the supported programming languages and formats. - // In that case, the message is parsed and detailed exception information - // is returned when retrieving the error event again. - Message string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` - // [Optional] A description of the context in which the error occurred. - Context *ErrorContext `protobuf:"bytes,4,opt,name=context" json:"context,omitempty"` -} - -func (m *ReportedErrorEvent) Reset() { *m = ReportedErrorEvent{} } -func (m *ReportedErrorEvent) String() string { return proto.CompactTextString(m) } -func (*ReportedErrorEvent) ProtoMessage() {} -func (*ReportedErrorEvent) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } - -func (m *ReportedErrorEvent) GetEventTime() *google_protobuf1.Timestamp { - if m != nil { - return m.EventTime - } - return nil -} - -func (m *ReportedErrorEvent) GetServiceContext() *ServiceContext { - if m != nil { - return m.ServiceContext - } - return nil -} - -func (m *ReportedErrorEvent) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -func (m *ReportedErrorEvent) GetContext() *ErrorContext { - if m != nil { - return m.Context - } - return nil -} - -func init() { - proto.RegisterType((*ReportErrorEventRequest)(nil), "google.devtools.clouderrorreporting.v1beta1.ReportErrorEventRequest") - proto.RegisterType((*ReportErrorEventResponse)(nil), "google.devtools.clouderrorreporting.v1beta1.ReportErrorEventResponse") - proto.RegisterType((*ReportedErrorEvent)(nil), "google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ReportErrorsService service - -type ReportErrorsServiceClient interface { - // Report an individual error event. - // - // This endpoint accepts <strong>either</strong> an OAuth token, - // <strong>or</strong> an - // <a href="https://support.google.com/cloud/answer/6158862">API key</a> - // for authentication. To use an API key, append it to the URL as the value of - // a `key` parameter. For example: - // <pre>POST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456</pre> - ReportErrorEvent(ctx context.Context, in *ReportErrorEventRequest, opts ...grpc.CallOption) (*ReportErrorEventResponse, error) -} - -type reportErrorsServiceClient struct { - cc *grpc.ClientConn -} - -func NewReportErrorsServiceClient(cc *grpc.ClientConn) ReportErrorsServiceClient { - return &reportErrorsServiceClient{cc} -} - -func (c *reportErrorsServiceClient) ReportErrorEvent(ctx context.Context, in *ReportErrorEventRequest, opts ...grpc.CallOption) (*ReportErrorEventResponse, error) { - out := new(ReportErrorEventResponse) - err := grpc.Invoke(ctx, "/google.devtools.clouderrorreporting.v1beta1.ReportErrorsService/ReportErrorEvent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ReportErrorsService service - -type ReportErrorsServiceServer interface { - // Report an individual error event. - // - // This endpoint accepts <strong>either</strong> an OAuth token, - // <strong>or</strong> an - // <a href="https://support.google.com/cloud/answer/6158862">API key</a> - // for authentication. To use an API key, append it to the URL as the value of - // a `key` parameter. For example: - // <pre>POST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456</pre> - ReportErrorEvent(context.Context, *ReportErrorEventRequest) (*ReportErrorEventResponse, error) -} - -func RegisterReportErrorsServiceServer(s *grpc.Server, srv ReportErrorsServiceServer) { - s.RegisterService(&_ReportErrorsService_serviceDesc, srv) -} - -func _ReportErrorsService_ReportErrorEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReportErrorEventRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReportErrorsServiceServer).ReportErrorEvent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.clouderrorreporting.v1beta1.ReportErrorsService/ReportErrorEvent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReportErrorsServiceServer).ReportErrorEvent(ctx, req.(*ReportErrorEventRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ReportErrorsService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.clouderrorreporting.v1beta1.ReportErrorsService", - HandlerType: (*ReportErrorsServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ReportErrorEvent", - Handler: _ReportErrorsService_ReportErrorEvent_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto", -} - -func init() { - proto.RegisterFile("google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto", fileDescriptor3) -} - -var fileDescriptor3 = []byte{ - // 490 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0xcd, 0x8a, 0x13, 0x41, - 0x10, 0xc7, 0x99, 0xf8, 0xb1, 0x6c, 0x47, 0x54, 0xda, 0x83, 0xc3, 0x20, 0xb8, 0xc6, 0xcb, 0xa2, - 0x30, 0x6d, 0xe2, 0xc5, 0xec, 0x22, 0x0b, 0x59, 0xc3, 0xde, 0x64, 0x99, 0xd5, 0x3d, 0x48, 0x70, - 0xe8, 0x4c, 0xca, 0x61, 0x24, 0xd3, 0x35, 0x76, 0x77, 0x82, 0x20, 0x5e, 0x7c, 0x85, 0x7d, 0x05, - 0x4f, 0x3e, 0x8a, 0x57, 0x5f, 0xc0, 0x83, 0x0f, 0xa1, 0x37, 0xe9, 0xaf, 0x25, 0x6b, 0x72, 0x70, - 0xf4, 0x58, 0xd3, 0x55, 0xbf, 0xff, 0xbf, 0x3e, 0x86, 0x1c, 0x95, 0x88, 0xe5, 0x1c, 0xd8, 0x0c, - 0x96, 0x1a, 0x71, 0xae, 0x58, 0x31, 0xc7, 0xc5, 0x0c, 0xa4, 0x44, 0x29, 0xa1, 0x41, 0xa9, 0x2b, - 0x51, 0xb2, 0x65, 0x7f, 0x0a, 0x9a, 0xf7, 0x99, 0xfb, 0x92, 0xdb, 0x57, 0x95, 0x2b, 0x90, 0xcb, - 0xaa, 0x80, 0xb4, 0x91, 0xa8, 0x91, 0x3e, 0x74, 0xa0, 0x34, 0x80, 0xd2, 0x0d, 0xa0, 0xd4, 0x83, - 0x92, 0x3b, 0x5e, 0x95, 0x37, 0x15, 0xe3, 0x42, 0xa0, 0xe6, 0xba, 0x42, 0xa1, 0x1c, 0x2a, 0x79, - 0xd2, 0xc6, 0x53, 0x81, 0x75, 0x8d, 0xc2, 0x57, 0xde, 0xf5, 0x95, 0x36, 0x9a, 0x2e, 0xde, 0x30, - 0x5d, 0xd5, 0xa0, 0x34, 0xaf, 0x1b, 0x97, 0xd0, 0x3b, 0x8b, 0xc8, 0xed, 0xcc, 0x32, 0xc6, 0x06, - 0x37, 0x5e, 0x82, 0xd0, 0x19, 0xbc, 0x5b, 0x80, 0xd2, 0xf4, 0x1e, 0xb9, 0xd6, 0x48, 0x7c, 0x0b, - 0x85, 0xce, 0x05, 0xaf, 0x21, 0x8e, 0x76, 0xa2, 0xdd, 0xed, 0xac, 0xeb, 0xbf, 0x3d, 0xe7, 0x35, - 0xd0, 0x97, 0xe4, 0x0a, 0x98, 0x92, 0xb8, 0xb3, 0x13, 0xed, 0x76, 0x07, 0x07, 0x69, 0x8b, 0xa6, - 0x53, 0xa7, 0x0b, 0xb3, 0x15, 0x65, 0x47, 0xeb, 0x25, 0x24, 0x5e, 0x37, 0xa5, 0x1a, 0x14, 0x0a, - 0x7a, 0x9f, 0x3b, 0x84, 0xae, 0x57, 0xd2, 0x21, 0x21, 0xb6, 0x36, 0x37, 0x1d, 0x5a, 0xab, 0xdd, - 0x41, 0x12, 0xec, 0x84, 0xf6, 0xd3, 0x17, 0xa1, 0xfd, 0x6c, 0xdb, 0x66, 0x9b, 0x98, 0xce, 0xc8, - 0x0d, 0xbf, 0xba, 0xbc, 0x40, 0xa1, 0xe1, 0x7d, 0x68, 0x67, 0xbf, 0x55, 0x3b, 0x27, 0x8e, 0x71, - 0xe8, 0x10, 0xd9, 0x75, 0x75, 0x21, 0xa6, 0x31, 0xd9, 0xaa, 0x41, 0x29, 0x5e, 0x42, 0x7c, 0xc9, - 0x0e, 0x32, 0x84, 0xf4, 0x84, 0x6c, 0x05, 0xdd, 0xcb, 0x56, 0x77, 0xd8, 0x4a, 0xd7, 0x0e, 0x21, - 0xa8, 0x06, 0xd2, 0xe0, 0x67, 0x44, 0x6e, 0xad, 0xcc, 0x50, 0x79, 0x77, 0xf4, 0x7b, 0x44, 0x6e, - 0xfe, 0x39, 0x5b, 0xfa, 0xec, 0x1f, 0xf6, 0xb6, 0x76, 0x2f, 0xc9, 0xf8, 0x3f, 0x29, 0x7e, 0xc1, - 0x07, 0x9f, 0xbe, 0xfd, 0x38, 0xeb, 0x0c, 0x7b, 0x8f, 0xce, 0x4f, 0xfa, 0xc3, 0xea, 0x19, 0x3e, - 0xf5, 0x81, 0x62, 0x0f, 0x3e, 0x32, 0xbb, 0x44, 0xb5, 0xe7, 0xe8, 0x7b, 0xee, 0x7a, 0x46, 0xbf, - 0x22, 0x62, 0xfe, 0x82, 0x36, 0x6e, 0x46, 0xf1, 0x86, 0x59, 0x1d, 0x9b, 0xab, 0x39, 0x8e, 0x5e, - 0xbd, 0xf6, 0xa0, 0x12, 0xe7, 0x5c, 0x94, 0x29, 0xca, 0x92, 0x95, 0x20, 0xec, 0x4d, 0x31, 0xf7, - 0xc4, 0x9b, 0x4a, 0xfd, 0xd5, 0xdf, 0xb9, 0xbf, 0xe1, 0xed, 0x4b, 0xe7, 0xfe, 0x91, 0x13, 0x38, - 0x34, 0x8f, 0x6e, 0x9f, 0xd9, 0xb9, 0xc3, 0xd3, 0xfe, 0xc8, 0x54, 0x7e, 0x0d, 0x59, 0x13, 0x9b, - 0x35, 0xb9, 0x98, 0x35, 0x39, 0x75, 0xfc, 0xe9, 0x55, 0x6b, 0xeb, 0xf1, 0xef, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x2c, 0xd1, 0x8e, 0x76, 0xc7, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2/profiler.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2/profiler.pb.go deleted file mode 100644 index 01450fe7..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2/profiler.pb.go +++ /dev/null @@ -1,469 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/cloudprofiler/v2/profiler.proto - -/* -Package cloudprofiler is a generated protocol buffer package. - -It is generated from these files: - google/devtools/cloudprofiler/v2/profiler.proto - -It has these top-level messages: - CreateProfileRequest - UpdateProfileRequest - Profile - Deployment -*/ -package cloudprofiler - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" -import _ "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// ProfileType is type of profiling data. -// NOTE: the enumeration member names are used (in lowercase) as unique string -// identifiers of profile types, so they must not be renamed. -type ProfileType int32 - -const ( - // Unspecified profile type. - ProfileType_PROFILE_TYPE_UNSPECIFIED ProfileType = 0 - // Thread CPU time sampling. - ProfileType_CPU ProfileType = 1 - // Wallclock time sampling. More expensive as stops all threads. - ProfileType_WALL ProfileType = 2 - // Heap allocation sampling. - ProfileType_HEAP ProfileType = 3 - // Single-shot collection of all thread stacks. - ProfileType_THREADS ProfileType = 4 - // Synchronization contention profile. - ProfileType_CONTENTION ProfileType = 5 -) - -var ProfileType_name = map[int32]string{ - 0: "PROFILE_TYPE_UNSPECIFIED", - 1: "CPU", - 2: "WALL", - 3: "HEAP", - 4: "THREADS", - 5: "CONTENTION", -} -var ProfileType_value = map[string]int32{ - "PROFILE_TYPE_UNSPECIFIED": 0, - "CPU": 1, - "WALL": 2, - "HEAP": 3, - "THREADS": 4, - "CONTENTION": 5, -} - -func (x ProfileType) String() string { - return proto.EnumName(ProfileType_name, int32(x)) -} -func (ProfileType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// CreateProfileRequest describes a profile resource creation request. -// Deployment field must be populated for both online and offline modes. -// For the online mode, profile field is not set and the profile_type specifies -// the list of profile types supported by the agent. The creation call will hang -// until a profile of one of these types needs to be collected. For offline -// mode, profile field must be set, profile_type must be empty, and deployment -// field must be identical to the deployment in the profile. -type CreateProfileRequest struct { - // Deployment details. - Deployment *Deployment `protobuf:"bytes,1,opt,name=deployment" json:"deployment,omitempty"` - // Online mode: One or more profile types that the agent is capable of - // providing. - ProfileType []ProfileType `protobuf:"varint,2,rep,packed,name=profile_type,json=profileType,enum=google.devtools.cloudprofiler.v2.ProfileType" json:"profile_type,omitempty"` - // Offline mode: Contents of the profile to create. - Profile *Profile `protobuf:"bytes,3,opt,name=profile" json:"profile,omitempty"` -} - -func (m *CreateProfileRequest) Reset() { *m = CreateProfileRequest{} } -func (m *CreateProfileRequest) String() string { return proto.CompactTextString(m) } -func (*CreateProfileRequest) ProtoMessage() {} -func (*CreateProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *CreateProfileRequest) GetDeployment() *Deployment { - if m != nil { - return m.Deployment - } - return nil -} - -func (m *CreateProfileRequest) GetProfileType() []ProfileType { - if m != nil { - return m.ProfileType - } - return nil -} - -func (m *CreateProfileRequest) GetProfile() *Profile { - if m != nil { - return m.Profile - } - return nil -} - -// UpdateProfileRequest contains the profile to update. -type UpdateProfileRequest struct { - // Profile to update - Profile *Profile `protobuf:"bytes,1,opt,name=profile" json:"profile,omitempty"` -} - -func (m *UpdateProfileRequest) Reset() { *m = UpdateProfileRequest{} } -func (m *UpdateProfileRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateProfileRequest) ProtoMessage() {} -func (*UpdateProfileRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *UpdateProfileRequest) GetProfile() *Profile { - if m != nil { - return m.Profile - } - return nil -} - -// Profile resource. -type Profile struct { - // Opaque, server-assigned, unique ID for this profile. - // Output only. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Type of profile. - // Input (for the offline mode) or output (for the online mode). - ProfileType ProfileType `protobuf:"varint,2,opt,name=profile_type,json=profileType,enum=google.devtools.cloudprofiler.v2.ProfileType" json:"profile_type,omitempty"` - // Deployment this profile corresponds to. - Deployment *Deployment `protobuf:"bytes,3,opt,name=deployment" json:"deployment,omitempty"` - // Duration of the profiling session. - // Input (for the offline mode) or output (for the online mode). - // The field represents requested profiling duration. It may slightly differ - // from the effective profiling duration, which is recorded in the profile - // data, in case the profiling can't be stopped immediately (e.g. in case - // stopping the profiling is handled asynchronously). - Duration *google_protobuf1.Duration `protobuf:"bytes,4,opt,name=duration" json:"duration,omitempty"` - // Profile bytes, as a gzip compressed serialized proto, the format is - // https://github.com/google/pprof/blob/master/proto/profile.proto. - ProfileBytes []byte `protobuf:"bytes,5,opt,name=profile_bytes,json=profileBytes,proto3" json:"profile_bytes,omitempty"` - // Labels associated to this specific profile. These labels will get merged - // with the deployment labels for the final data set. - // See documentation on deployment labels for validation rules and limits. - // Input only, will not be populated on responses. - Labels map[string]string `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Profile) Reset() { *m = Profile{} } -func (m *Profile) String() string { return proto.CompactTextString(m) } -func (*Profile) ProtoMessage() {} -func (*Profile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Profile) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Profile) GetProfileType() ProfileType { - if m != nil { - return m.ProfileType - } - return ProfileType_PROFILE_TYPE_UNSPECIFIED -} - -func (m *Profile) GetDeployment() *Deployment { - if m != nil { - return m.Deployment - } - return nil -} - -func (m *Profile) GetDuration() *google_protobuf1.Duration { - if m != nil { - return m.Duration - } - return nil -} - -func (m *Profile) GetProfileBytes() []byte { - if m != nil { - return m.ProfileBytes - } - return nil -} - -func (m *Profile) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// Deployment contains the deployment identification information. -type Deployment struct { - // Project ID is the ID of a cloud project. - // Validation regex: `^[a-z][-a-z0-9:.]{4,61}[a-z0-9]$`. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Target is the service name used to group related deployments: - // * Service name for GAE Flex / Standard. - // * Cluster and container name for GKE. - // * User-specified string for direct GCE profiling (e.g. Java). - // * Job name for Dataflow. - // Validation regex: `^[a-z]([-a-z0-9_.]{0,253}[a-z0-9])?$`. - Target string `protobuf:"bytes,2,opt,name=target" json:"target,omitempty"` - // Labels identify the deployment within the user universe and same target. - // Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. - // Value for an individual label must be <= 512 bytes, the total - // size of all label names and values must be <= 1024 bytes. - // - // Label named "language" can be used to record the programming language of - // the profiled deployment. The standard choices for the value include "java", - // "go", "python", "ruby", "nodejs", "php", "dotnet". - // - // For deployments running on Google Cloud Platform, "zone" or "region" label - // should be present describing the deployment location. An example of a zone - // is "us-central1-a", an example of a region is "us-central1" or - // "us-central". - Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Deployment) Reset() { *m = Deployment{} } -func (m *Deployment) String() string { return proto.CompactTextString(m) } -func (*Deployment) ProtoMessage() {} -func (*Deployment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Deployment) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *Deployment) GetTarget() string { - if m != nil { - return m.Target - } - return "" -} - -func (m *Deployment) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func init() { - proto.RegisterType((*CreateProfileRequest)(nil), "google.devtools.cloudprofiler.v2.CreateProfileRequest") - proto.RegisterType((*UpdateProfileRequest)(nil), "google.devtools.cloudprofiler.v2.UpdateProfileRequest") - proto.RegisterType((*Profile)(nil), "google.devtools.cloudprofiler.v2.Profile") - proto.RegisterType((*Deployment)(nil), "google.devtools.cloudprofiler.v2.Deployment") - proto.RegisterEnum("google.devtools.cloudprofiler.v2.ProfileType", ProfileType_name, ProfileType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ProfilerService service - -type ProfilerServiceClient interface { - // CreateProfile creates a new profile resource. - // - // In the online creation mode: - // * The server ensures that the new profiles are created at a constant rate - // per deployment, so the creation request may hang for some time until the - // next profile session is available. - // * The request may fail with ABORTED error if the creation is not - // available within ~1m, the response will indicate the duration of the - // backoff the client should take before attempting creating a profile - // again. The backoff duration is returned in google.rpc.RetryInfo extension - // on the response status. To a gRPC client, the extension will be return as - // a binary-serialized proto in the trailing metadata item named - // "google.rpc.retryinfo-bin". - // - // In the offline creation mode: - // * The client provides the profile to create along with the profile bytes, - // the server records it. - CreateProfile(ctx context.Context, in *CreateProfileRequest, opts ...grpc.CallOption) (*Profile, error) - // UpdateProfile updates the profile bytes and labels on the profile resource - // created in the online mode. - UpdateProfile(ctx context.Context, in *UpdateProfileRequest, opts ...grpc.CallOption) (*Profile, error) -} - -type profilerServiceClient struct { - cc *grpc.ClientConn -} - -func NewProfilerServiceClient(cc *grpc.ClientConn) ProfilerServiceClient { - return &profilerServiceClient{cc} -} - -func (c *profilerServiceClient) CreateProfile(ctx context.Context, in *CreateProfileRequest, opts ...grpc.CallOption) (*Profile, error) { - out := new(Profile) - err := grpc.Invoke(ctx, "/google.devtools.cloudprofiler.v2.ProfilerService/CreateProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *profilerServiceClient) UpdateProfile(ctx context.Context, in *UpdateProfileRequest, opts ...grpc.CallOption) (*Profile, error) { - out := new(Profile) - err := grpc.Invoke(ctx, "/google.devtools.cloudprofiler.v2.ProfilerService/UpdateProfile", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ProfilerService service - -type ProfilerServiceServer interface { - // CreateProfile creates a new profile resource. - // - // In the online creation mode: - // * The server ensures that the new profiles are created at a constant rate - // per deployment, so the creation request may hang for some time until the - // next profile session is available. - // * The request may fail with ABORTED error if the creation is not - // available within ~1m, the response will indicate the duration of the - // backoff the client should take before attempting creating a profile - // again. The backoff duration is returned in google.rpc.RetryInfo extension - // on the response status. To a gRPC client, the extension will be return as - // a binary-serialized proto in the trailing metadata item named - // "google.rpc.retryinfo-bin". - // - // In the offline creation mode: - // * The client provides the profile to create along with the profile bytes, - // the server records it. - CreateProfile(context.Context, *CreateProfileRequest) (*Profile, error) - // UpdateProfile updates the profile bytes and labels on the profile resource - // created in the online mode. - UpdateProfile(context.Context, *UpdateProfileRequest) (*Profile, error) -} - -func RegisterProfilerServiceServer(s *grpc.Server, srv ProfilerServiceServer) { - s.RegisterService(&_ProfilerService_serviceDesc, srv) -} - -func _ProfilerService_CreateProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProfilerServiceServer).CreateProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudprofiler.v2.ProfilerService/CreateProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProfilerServiceServer).CreateProfile(ctx, req.(*CreateProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ProfilerService_UpdateProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateProfileRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProfilerServiceServer).UpdateProfile(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudprofiler.v2.ProfilerService/UpdateProfile", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProfilerServiceServer).UpdateProfile(ctx, req.(*UpdateProfileRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ProfilerService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.cloudprofiler.v2.ProfilerService", - HandlerType: (*ProfilerServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateProfile", - Handler: _ProfilerService_CreateProfile_Handler, - }, - { - MethodName: "UpdateProfile", - Handler: _ProfilerService_UpdateProfile_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/cloudprofiler/v2/profiler.proto", -} - -func init() { proto.RegisterFile("google/devtools/cloudprofiler/v2/profiler.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 661 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0x66, 0xe3, 0x34, 0x69, 0x27, 0x6d, 0xb1, 0x56, 0x15, 0x32, 0x51, 0x81, 0x28, 0x5c, 0x42, - 0x44, 0x6d, 0xc9, 0x55, 0x51, 0x5b, 0xc4, 0xa1, 0x4d, 0x5c, 0x35, 0x52, 0x9a, 0x58, 0x6e, 0x2a, - 0x04, 0x1c, 0x22, 0xa7, 0xde, 0x5a, 0x06, 0xc7, 0x6b, 0xec, 0x4d, 0xa4, 0xa8, 0xea, 0x85, 0x57, - 0xe0, 0x11, 0xb8, 0xc2, 0xbb, 0x20, 0xf1, 0x0a, 0x3c, 0x00, 0x77, 0x2e, 0xc8, 0xf6, 0x3a, 0x3f, - 0x50, 0x94, 0x94, 0x72, 0xdb, 0x99, 0x9d, 0xef, 0xdb, 0x6f, 0x66, 0xd7, 0x9f, 0x41, 0xb1, 0x29, - 0xb5, 0x5d, 0xa2, 0x58, 0x64, 0xc8, 0x28, 0x75, 0x43, 0xe5, 0xdc, 0xa5, 0x03, 0xcb, 0x0f, 0xe8, - 0x85, 0xe3, 0x92, 0x40, 0x19, 0xaa, 0x4a, 0xba, 0x96, 0xfd, 0x80, 0x32, 0x8a, 0x4b, 0x09, 0x40, - 0x4e, 0x01, 0xf2, 0x0c, 0x40, 0x1e, 0xaa, 0xc5, 0x4d, 0x4e, 0x69, 0xfa, 0x8e, 0x62, 0x7a, 0x1e, - 0x65, 0x26, 0x73, 0xa8, 0x17, 0x26, 0xf8, 0xe2, 0x43, 0xbe, 0x1b, 0x47, 0xbd, 0xc1, 0x85, 0x62, - 0x0d, 0x82, 0xb8, 0x80, 0xef, 0x3f, 0xfa, 0x7d, 0x9f, 0x39, 0x7d, 0x12, 0x32, 0xb3, 0xef, 0x27, - 0x05, 0xe5, 0x9f, 0x08, 0x36, 0x6a, 0x01, 0x31, 0x19, 0xd1, 0x93, 0x43, 0x0d, 0xf2, 0x7e, 0x40, - 0x42, 0x86, 0x9b, 0x00, 0x16, 0xf1, 0x5d, 0x3a, 0xea, 0x13, 0x8f, 0x49, 0xa8, 0x84, 0x2a, 0x05, - 0xf5, 0xa9, 0x3c, 0x4f, 0xae, 0x5c, 0x1f, 0x63, 0x8c, 0x29, 0x3c, 0xd6, 0x61, 0x95, 0x57, 0x75, - 0xd9, 0xc8, 0x27, 0x52, 0xa6, 0x24, 0x54, 0xd6, 0xd5, 0xad, 0xf9, 0x7c, 0x5c, 0x55, 0x67, 0xe4, - 0x13, 0xa3, 0xe0, 0x4f, 0x02, 0x5c, 0x83, 0x3c, 0x0f, 0x25, 0x21, 0x16, 0xf7, 0x64, 0x61, 0x32, - 0x23, 0x45, 0x96, 0xdf, 0xc0, 0xc6, 0x99, 0x6f, 0xfd, 0xd9, 0xfc, 0x14, 0x39, 0xfa, 0x67, 0xf2, - 0x4f, 0x02, 0xe4, 0x79, 0x12, 0x63, 0xc8, 0x7a, 0x66, 0x3f, 0x61, 0x5b, 0x31, 0xe2, 0xf5, 0x35, - 0x33, 0x41, 0xb7, 0x9c, 0xc9, 0xec, 0x9d, 0x09, 0xb7, 0xbc, 0xb3, 0x1d, 0x58, 0x4e, 0x5f, 0x93, - 0x94, 0x8d, 0xb9, 0xee, 0xa7, 0x5c, 0xe9, 0x73, 0x92, 0xeb, 0xbc, 0xc0, 0x18, 0x97, 0xe2, 0xc7, - 0xb0, 0x96, 0xb6, 0xd5, 0x1b, 0x31, 0x12, 0x4a, 0x4b, 0x25, 0x54, 0x59, 0x35, 0xd2, 0x5e, 0x0f, - 0xa3, 0x1c, 0x3e, 0x81, 0x9c, 0x6b, 0xf6, 0x88, 0x1b, 0x4a, 0xb9, 0x92, 0x50, 0x29, 0xa8, 0x3b, - 0x0b, 0x77, 0x2d, 0x37, 0x63, 0x9c, 0xe6, 0xb1, 0x60, 0x64, 0x70, 0x92, 0xe2, 0x1e, 0x14, 0xa6, - 0xd2, 0x58, 0x04, 0xe1, 0x1d, 0x19, 0xf1, 0x61, 0x47, 0x4b, 0xbc, 0x01, 0x4b, 0x43, 0xd3, 0x1d, - 0x24, 0x43, 0x5e, 0x31, 0x92, 0x60, 0x3f, 0xb3, 0x8b, 0xca, 0x5f, 0x11, 0xc0, 0x64, 0x00, 0xf8, - 0x01, 0x80, 0x1f, 0xd0, 0xb7, 0xe4, 0x9c, 0x75, 0x1d, 0x8b, 0x33, 0xac, 0xf0, 0x4c, 0xc3, 0xc2, - 0xf7, 0x20, 0xc7, 0xcc, 0xc0, 0x26, 0x8c, 0x13, 0xf1, 0x08, 0xeb, 0xe3, 0x7e, 0x84, 0xb8, 0x9f, - 0xdd, 0x9b, 0x4c, 0xfd, 0x3f, 0xb7, 0x54, 0x25, 0x50, 0x98, 0x7a, 0x22, 0x78, 0x13, 0x24, 0xdd, - 0x68, 0x1f, 0x35, 0x9a, 0x5a, 0xb7, 0xf3, 0x4a, 0xd7, 0xba, 0x67, 0xad, 0x53, 0x5d, 0xab, 0x35, - 0x8e, 0x1a, 0x5a, 0x5d, 0xbc, 0x83, 0xf3, 0x20, 0xd4, 0xf4, 0x33, 0x11, 0xe1, 0x65, 0xc8, 0xbe, - 0x3c, 0x68, 0x36, 0xc5, 0x4c, 0xb4, 0x3a, 0xd6, 0x0e, 0x74, 0x51, 0xc0, 0x05, 0xc8, 0x77, 0x8e, - 0x0d, 0xed, 0xa0, 0x7e, 0x2a, 0x66, 0xf1, 0x3a, 0x40, 0xad, 0xdd, 0xea, 0x68, 0xad, 0x4e, 0xa3, - 0xdd, 0x12, 0x97, 0xd4, 0x1f, 0x19, 0xb8, 0xcb, 0xcf, 0x09, 0x4e, 0x49, 0x30, 0x74, 0xce, 0x09, - 0xfe, 0x8c, 0x60, 0x6d, 0xc6, 0x4e, 0xf0, 0xb3, 0xf9, 0x93, 0xb8, 0xce, 0x7f, 0x8a, 0x8b, 0x7f, - 0x71, 0xe5, 0xdd, 0x0f, 0xdf, 0xbe, 0x7f, 0xcc, 0xa8, 0xe5, 0x2d, 0x6e, 0xb0, 0xd1, 0x5d, 0x85, - 0xca, 0xe5, 0xe4, 0x29, 0xcb, 0x93, 0x2b, 0xbd, 0x4a, 0x1d, 0x38, 0xdc, 0x47, 0x55, 0xfc, 0x05, - 0xc1, 0xda, 0x8c, 0x01, 0x2c, 0x22, 0xf7, 0x3a, 0xc7, 0xb8, 0x89, 0xdc, 0xbd, 0x58, 0xee, 0xb6, - 0x5a, 0x89, 0xe4, 0x5e, 0xf2, 0x0a, 0x39, 0xb2, 0x84, 0x17, 0x63, 0xf1, 0xd5, 0xb1, 0x4c, 0xa5, - 0x7a, 0xb5, 0x9f, 0x5a, 0xca, 0x61, 0xfb, 0xf5, 0x09, 0x3f, 0xc6, 0xa6, 0xae, 0xe9, 0xd9, 0x32, - 0x0d, 0x6c, 0xc5, 0x26, 0x5e, 0xfc, 0x3d, 0xf2, 0x9f, 0x8f, 0xe9, 0x3b, 0xe1, 0xdf, 0x7f, 0x40, - 0xcf, 0x67, 0x12, 0xbd, 0x5c, 0x8c, 0xdc, 0xfe, 0x15, 0x00, 0x00, 0xff, 0xff, 0x83, 0x3f, 0xa6, - 0xd9, 0xb9, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v1/trace.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v1/trace.pb.go deleted file mode 100644 index cc15feed..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v1/trace.pb.go +++ /dev/null @@ -1,724 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/cloudtrace/v1/trace.proto - -/* -Package cloudtrace is a generated protocol buffer package. - -It is generated from these files: - google/devtools/cloudtrace/v1/trace.proto - -It has these top-level messages: - Trace - Traces - TraceSpan - ListTracesRequest - ListTracesResponse - GetTraceRequest - PatchTracesRequest -*/ -package cloudtrace - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Type of span. Can be used to specify additional relationships between spans -// in addition to a parent/child relationship. -type TraceSpan_SpanKind int32 - -const ( - // Unspecified. - TraceSpan_SPAN_KIND_UNSPECIFIED TraceSpan_SpanKind = 0 - // Indicates that the span covers server-side handling of an RPC or other - // remote network request. - TraceSpan_RPC_SERVER TraceSpan_SpanKind = 1 - // Indicates that the span covers the client-side wrapper around an RPC or - // other remote request. - TraceSpan_RPC_CLIENT TraceSpan_SpanKind = 2 -) - -var TraceSpan_SpanKind_name = map[int32]string{ - 0: "SPAN_KIND_UNSPECIFIED", - 1: "RPC_SERVER", - 2: "RPC_CLIENT", -} -var TraceSpan_SpanKind_value = map[string]int32{ - "SPAN_KIND_UNSPECIFIED": 0, - "RPC_SERVER": 1, - "RPC_CLIENT": 2, -} - -func (x TraceSpan_SpanKind) String() string { - return proto.EnumName(TraceSpan_SpanKind_name, int32(x)) -} -func (TraceSpan_SpanKind) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// Type of data returned for traces in the list. -type ListTracesRequest_ViewType int32 - -const ( - // Default is `MINIMAL` if unspecified. - ListTracesRequest_VIEW_TYPE_UNSPECIFIED ListTracesRequest_ViewType = 0 - // Minimal view of the trace record that contains only the project - // and trace IDs. - ListTracesRequest_MINIMAL ListTracesRequest_ViewType = 1 - // Root span view of the trace record that returns the root spans along - // with the minimal trace data. - ListTracesRequest_ROOTSPAN ListTracesRequest_ViewType = 2 - // Complete view of the trace record that contains the actual trace data. - // This is equivalent to calling the REST `get` or RPC `GetTrace` method - // using the ID of each listed trace. - ListTracesRequest_COMPLETE ListTracesRequest_ViewType = 3 -) - -var ListTracesRequest_ViewType_name = map[int32]string{ - 0: "VIEW_TYPE_UNSPECIFIED", - 1: "MINIMAL", - 2: "ROOTSPAN", - 3: "COMPLETE", -} -var ListTracesRequest_ViewType_value = map[string]int32{ - "VIEW_TYPE_UNSPECIFIED": 0, - "MINIMAL": 1, - "ROOTSPAN": 2, - "COMPLETE": 3, -} - -func (x ListTracesRequest_ViewType) String() string { - return proto.EnumName(ListTracesRequest_ViewType_name, int32(x)) -} -func (ListTracesRequest_ViewType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{3, 0} -} - -// A trace describes how long it takes for an application to perform an -// operation. It consists of a set of spans, each of which represent a single -// timed event within the operation. -type Trace struct { - // Project ID of the Cloud project where the trace data is stored. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Globally unique identifier for the trace. This identifier is a 128-bit - // numeric value formatted as a 32-byte hex string. - TraceId string `protobuf:"bytes,2,opt,name=trace_id,json=traceId" json:"trace_id,omitempty"` - // Collection of spans in the trace. - Spans []*TraceSpan `protobuf:"bytes,3,rep,name=spans" json:"spans,omitempty"` -} - -func (m *Trace) Reset() { *m = Trace{} } -func (m *Trace) String() string { return proto.CompactTextString(m) } -func (*Trace) ProtoMessage() {} -func (*Trace) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Trace) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *Trace) GetTraceId() string { - if m != nil { - return m.TraceId - } - return "" -} - -func (m *Trace) GetSpans() []*TraceSpan { - if m != nil { - return m.Spans - } - return nil -} - -// List of new or updated traces. -type Traces struct { - // List of traces. - Traces []*Trace `protobuf:"bytes,1,rep,name=traces" json:"traces,omitempty"` -} - -func (m *Traces) Reset() { *m = Traces{} } -func (m *Traces) String() string { return proto.CompactTextString(m) } -func (*Traces) ProtoMessage() {} -func (*Traces) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Traces) GetTraces() []*Trace { - if m != nil { - return m.Traces - } - return nil -} - -// A span represents a single timed event within a trace. Spans can be nested -// and form a trace tree. Often, a trace contains a root span that describes the -// end-to-end latency of an operation and, optionally, one or more subspans for -// its suboperations. Spans do not need to be contiguous. There may be gaps -// between spans in a trace. -type TraceSpan struct { - // Identifier for the span. Must be a 64-bit integer other than 0 and - // unique within a trace. - SpanId uint64 `protobuf:"fixed64,1,opt,name=span_id,json=spanId" json:"span_id,omitempty"` - // Distinguishes between spans generated in a particular context. For example, - // two spans with the same name may be distinguished using `RPC_CLIENT` - // and `RPC_SERVER` to identify queueing latency associated with the span. - Kind TraceSpan_SpanKind `protobuf:"varint,2,opt,name=kind,enum=google.devtools.cloudtrace.v1.TraceSpan_SpanKind" json:"kind,omitempty"` - // Name of the span. Must be less than 128 bytes. The span name is sanitized - // and displayed in the Stackdriver Trace tool in the - // {% dynamic print site_values.console_name %}. - // The name may be a method name or some other per-call site name. - // For the same executable and the same call point, a best practice is - // to use a consistent name, which makes it easier to correlate - // cross-trace spans. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // Start time of the span in nanoseconds from the UNIX epoch. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // End time of the span in nanoseconds from the UNIX epoch. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // ID of the parent span, if any. Optional. - ParentSpanId uint64 `protobuf:"fixed64,6,opt,name=parent_span_id,json=parentSpanId" json:"parent_span_id,omitempty"` - // Collection of labels associated with the span. Label keys must be less than - // 128 bytes. Label values must be less than 16 kilobytes (10MB for - // `/stacktrace` values). - // - // Some predefined label keys exist, or you may create your own. When creating - // your own, we recommend the following formats: - // - // * `/category/product/key` for agents of well-known products (e.g. - // `/db/mongodb/read_size`). - // * `short_host/path/key` for domain-specific keys (e.g. - // `foo.com/myproduct/bar`) - // - // Predefined labels include: - // - // * `/agent` - // * `/component` - // * `/error/message` - // * `/error/name` - // * `/http/client_city` - // * `/http/client_country` - // * `/http/client_protocol` - // * `/http/client_region` - // * `/http/host` - // * `/http/method` - // * `/http/redirected_url` - // * `/http/request/size` - // * `/http/response/size` - // * `/http/status_code` - // * `/http/url` - // * `/http/user_agent` - // * `/pid` - // * `/stacktrace` - // * `/tid` - Labels map[string]string `protobuf:"bytes,7,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *TraceSpan) Reset() { *m = TraceSpan{} } -func (m *TraceSpan) String() string { return proto.CompactTextString(m) } -func (*TraceSpan) ProtoMessage() {} -func (*TraceSpan) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *TraceSpan) GetSpanId() uint64 { - if m != nil { - return m.SpanId - } - return 0 -} - -func (m *TraceSpan) GetKind() TraceSpan_SpanKind { - if m != nil { - return m.Kind - } - return TraceSpan_SPAN_KIND_UNSPECIFIED -} - -func (m *TraceSpan) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *TraceSpan) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *TraceSpan) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *TraceSpan) GetParentSpanId() uint64 { - if m != nil { - return m.ParentSpanId - } - return 0 -} - -func (m *TraceSpan) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// The request message for the `ListTraces` method. All fields are required -// unless specified. -type ListTracesRequest struct { - // ID of the Cloud project where the trace data is stored. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Type of data returned for traces in the list. Optional. Default is - // `MINIMAL`. - View ListTracesRequest_ViewType `protobuf:"varint,2,opt,name=view,enum=google.devtools.cloudtrace.v1.ListTracesRequest_ViewType" json:"view,omitempty"` - // Maximum number of traces to return. If not specified or <= 0, the - // implementation selects a reasonable value. The implementation may - // return fewer traces than the requested page size. Optional. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Token identifying the page of results to return. If provided, use the - // value of the `next_page_token` field from a previous request. Optional. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Start of the time interval (inclusive) during which the trace data was - // collected from the application. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // End of the time interval (inclusive) during which the trace data was - // collected from the application. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // An optional filter against labels for the request. - // - // By default, searches use prefix matching. To specify exact match, prepend - // a plus symbol (`+`) to the search term. - // Multiple terms are ANDed. Syntax: - // - // * `root:NAME_PREFIX` or `NAME_PREFIX`: Return traces where any root - // span starts with `NAME_PREFIX`. - // * `+root:NAME` or `+NAME`: Return traces where any root span's name is - // exactly `NAME`. - // * `span:NAME_PREFIX`: Return traces where any span starts with - // `NAME_PREFIX`. - // * `+span:NAME`: Return traces where any span's name is exactly - // `NAME`. - // * `latency:DURATION`: Return traces whose overall latency is - // greater or equal to than `DURATION`. Accepted units are nanoseconds - // (`ns`), milliseconds (`ms`), and seconds (`s`). Default is `ms`. For - // example, `latency:24ms` returns traces whose overall latency - // is greater than or equal to 24 milliseconds. - // * `label:LABEL_KEY`: Return all traces containing the specified - // label key (exact match, case-sensitive) regardless of the key:value - // pair's value (including empty values). - // * `LABEL_KEY:VALUE_PREFIX`: Return all traces containing the specified - // label key (exact match, case-sensitive) whose value starts with - // `VALUE_PREFIX`. Both a key and a value must be specified. - // * `+LABEL_KEY:VALUE`: Return all traces containing a key:value pair - // exactly matching the specified text. Both a key and a value must be - // specified. - // * `method:VALUE`: Equivalent to `/http/method:VALUE`. - // * `url:VALUE`: Equivalent to `/http/url:VALUE`. - Filter string `protobuf:"bytes,7,opt,name=filter" json:"filter,omitempty"` - // Field used to sort the returned traces. Optional. - // Can be one of the following: - // - // * `trace_id` - // * `name` (`name` field of root span in the trace) - // * `duration` (difference between `end_time` and `start_time` fields of - // the root span) - // * `start` (`start_time` field of the root span) - // - // Descending order can be specified by appending `desc` to the sort field - // (for example, `name desc`). - // - // Only one sort field is permitted. - OrderBy string `protobuf:"bytes,8,opt,name=order_by,json=orderBy" json:"order_by,omitempty"` -} - -func (m *ListTracesRequest) Reset() { *m = ListTracesRequest{} } -func (m *ListTracesRequest) String() string { return proto.CompactTextString(m) } -func (*ListTracesRequest) ProtoMessage() {} -func (*ListTracesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListTracesRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListTracesRequest) GetView() ListTracesRequest_ViewType { - if m != nil { - return m.View - } - return ListTracesRequest_VIEW_TYPE_UNSPECIFIED -} - -func (m *ListTracesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTracesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListTracesRequest) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *ListTracesRequest) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *ListTracesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListTracesRequest) GetOrderBy() string { - if m != nil { - return m.OrderBy - } - return "" -} - -// The response message for the `ListTraces` method. -type ListTracesResponse struct { - // List of trace records returned. - Traces []*Trace `protobuf:"bytes,1,rep,name=traces" json:"traces,omitempty"` - // If defined, indicates that there are more traces that match the request - // and that this value should be passed to the next request to continue - // retrieving additional traces. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTracesResponse) Reset() { *m = ListTracesResponse{} } -func (m *ListTracesResponse) String() string { return proto.CompactTextString(m) } -func (*ListTracesResponse) ProtoMessage() {} -func (*ListTracesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListTracesResponse) GetTraces() []*Trace { - if m != nil { - return m.Traces - } - return nil -} - -func (m *ListTracesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for the `GetTrace` method. -type GetTraceRequest struct { - // ID of the Cloud project where the trace data is stored. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // ID of the trace to return. - TraceId string `protobuf:"bytes,2,opt,name=trace_id,json=traceId" json:"trace_id,omitempty"` -} - -func (m *GetTraceRequest) Reset() { *m = GetTraceRequest{} } -func (m *GetTraceRequest) String() string { return proto.CompactTextString(m) } -func (*GetTraceRequest) ProtoMessage() {} -func (*GetTraceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *GetTraceRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *GetTraceRequest) GetTraceId() string { - if m != nil { - return m.TraceId - } - return "" -} - -// The request message for the `PatchTraces` method. -type PatchTracesRequest struct { - // ID of the Cloud project where the trace data is stored. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The body of the message. - Traces *Traces `protobuf:"bytes,2,opt,name=traces" json:"traces,omitempty"` -} - -func (m *PatchTracesRequest) Reset() { *m = PatchTracesRequest{} } -func (m *PatchTracesRequest) String() string { return proto.CompactTextString(m) } -func (*PatchTracesRequest) ProtoMessage() {} -func (*PatchTracesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *PatchTracesRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *PatchTracesRequest) GetTraces() *Traces { - if m != nil { - return m.Traces - } - return nil -} - -func init() { - proto.RegisterType((*Trace)(nil), "google.devtools.cloudtrace.v1.Trace") - proto.RegisterType((*Traces)(nil), "google.devtools.cloudtrace.v1.Traces") - proto.RegisterType((*TraceSpan)(nil), "google.devtools.cloudtrace.v1.TraceSpan") - proto.RegisterType((*ListTracesRequest)(nil), "google.devtools.cloudtrace.v1.ListTracesRequest") - proto.RegisterType((*ListTracesResponse)(nil), "google.devtools.cloudtrace.v1.ListTracesResponse") - proto.RegisterType((*GetTraceRequest)(nil), "google.devtools.cloudtrace.v1.GetTraceRequest") - proto.RegisterType((*PatchTracesRequest)(nil), "google.devtools.cloudtrace.v1.PatchTracesRequest") - proto.RegisterEnum("google.devtools.cloudtrace.v1.TraceSpan_SpanKind", TraceSpan_SpanKind_name, TraceSpan_SpanKind_value) - proto.RegisterEnum("google.devtools.cloudtrace.v1.ListTracesRequest_ViewType", ListTracesRequest_ViewType_name, ListTracesRequest_ViewType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for TraceService service - -type TraceServiceClient interface { - // Returns of a list of traces that match the specified filter conditions. - ListTraces(ctx context.Context, in *ListTracesRequest, opts ...grpc.CallOption) (*ListTracesResponse, error) - // Gets a single trace by its ID. - GetTrace(ctx context.Context, in *GetTraceRequest, opts ...grpc.CallOption) (*Trace, error) - // Sends new traces to Stackdriver Trace or updates existing traces. If the ID - // of a trace that you send matches that of an existing trace, any fields - // in the existing trace and its spans are overwritten by the provided values, - // and any new fields provided are merged with the existing trace data. If the - // ID does not match, a new trace is created. - PatchTraces(ctx context.Context, in *PatchTracesRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) -} - -type traceServiceClient struct { - cc *grpc.ClientConn -} - -func NewTraceServiceClient(cc *grpc.ClientConn) TraceServiceClient { - return &traceServiceClient{cc} -} - -func (c *traceServiceClient) ListTraces(ctx context.Context, in *ListTracesRequest, opts ...grpc.CallOption) (*ListTracesResponse, error) { - out := new(ListTracesResponse) - err := grpc.Invoke(ctx, "/google.devtools.cloudtrace.v1.TraceService/ListTraces", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *traceServiceClient) GetTrace(ctx context.Context, in *GetTraceRequest, opts ...grpc.CallOption) (*Trace, error) { - out := new(Trace) - err := grpc.Invoke(ctx, "/google.devtools.cloudtrace.v1.TraceService/GetTrace", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *traceServiceClient) PatchTraces(ctx context.Context, in *PatchTracesRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.devtools.cloudtrace.v1.TraceService/PatchTraces", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for TraceService service - -type TraceServiceServer interface { - // Returns of a list of traces that match the specified filter conditions. - ListTraces(context.Context, *ListTracesRequest) (*ListTracesResponse, error) - // Gets a single trace by its ID. - GetTrace(context.Context, *GetTraceRequest) (*Trace, error) - // Sends new traces to Stackdriver Trace or updates existing traces. If the ID - // of a trace that you send matches that of an existing trace, any fields - // in the existing trace and its spans are overwritten by the provided values, - // and any new fields provided are merged with the existing trace data. If the - // ID does not match, a new trace is created. - PatchTraces(context.Context, *PatchTracesRequest) (*google_protobuf1.Empty, error) -} - -func RegisterTraceServiceServer(s *grpc.Server, srv TraceServiceServer) { - s.RegisterService(&_TraceService_serviceDesc, srv) -} - -func _TraceService_ListTraces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTracesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TraceServiceServer).ListTraces(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudtrace.v1.TraceService/ListTraces", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TraceServiceServer).ListTraces(ctx, req.(*ListTracesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TraceService_GetTrace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTraceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TraceServiceServer).GetTrace(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudtrace.v1.TraceService/GetTrace", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TraceServiceServer).GetTrace(ctx, req.(*GetTraceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TraceService_PatchTraces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PatchTracesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TraceServiceServer).PatchTraces(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudtrace.v1.TraceService/PatchTraces", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TraceServiceServer).PatchTraces(ctx, req.(*PatchTracesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _TraceService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.cloudtrace.v1.TraceService", - HandlerType: (*TraceServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListTraces", - Handler: _TraceService_ListTraces_Handler, - }, - { - MethodName: "GetTrace", - Handler: _TraceService_GetTrace_Handler, - }, - { - MethodName: "PatchTraces", - Handler: _TraceService_PatchTraces_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/cloudtrace/v1/trace.proto", -} - -func init() { proto.RegisterFile("google/devtools/cloudtrace/v1/trace.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 898 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x6e, 0x1b, 0x45, - 0x14, 0x66, 0xed, 0x78, 0x6d, 0x1f, 0x87, 0xd4, 0x8c, 0x68, 0x71, 0x5d, 0x2a, 0xc2, 0xaa, 0x20, - 0x03, 0x62, 0xb7, 0x76, 0x41, 0x22, 0xe5, 0x47, 0x6a, 0xdc, 0x6d, 0xb4, 0x8a, 0xe3, 0xac, 0xd6, - 0xc6, 0x08, 0x14, 0x69, 0x35, 0xf1, 0x4e, 0xcd, 0x12, 0x7b, 0x66, 0xd9, 0x99, 0xb8, 0x38, 0x55, - 0x2f, 0xe0, 0x92, 0x5b, 0xc4, 0x15, 0x6f, 0xd0, 0x4b, 0x1e, 0x83, 0x3b, 0xc4, 0x2b, 0x20, 0xf1, - 0x1a, 0x68, 0x66, 0x76, 0x9b, 0x28, 0x51, 0x63, 0x07, 0x6e, 0xa2, 0x39, 0x67, 0xce, 0xef, 0xf7, - 0x7d, 0x93, 0x35, 0xbc, 0x37, 0x61, 0x6c, 0x32, 0x25, 0x4e, 0x44, 0xe6, 0x82, 0xb1, 0x29, 0x77, - 0xc6, 0x53, 0x76, 0x1c, 0x89, 0x14, 0x8f, 0x89, 0x33, 0x6f, 0x3b, 0xea, 0x60, 0x27, 0x29, 0x13, - 0x0c, 0xdd, 0xd6, 0xa1, 0x76, 0x1e, 0x6a, 0x9f, 0x86, 0xda, 0xf3, 0x76, 0xf3, 0xcd, 0xac, 0x12, - 0x4e, 0x62, 0x07, 0x53, 0xca, 0x04, 0x16, 0x31, 0xa3, 0x5c, 0x27, 0x37, 0x6f, 0x65, 0xb7, 0xca, - 0x3a, 0x3c, 0x7e, 0xec, 0x90, 0x59, 0x22, 0x16, 0xd9, 0xe5, 0x5b, 0xe7, 0x2f, 0x45, 0x3c, 0x23, - 0x5c, 0xe0, 0x59, 0xa2, 0x03, 0xac, 0x1f, 0x0d, 0x28, 0x0d, 0x65, 0x23, 0x74, 0x1b, 0x20, 0x49, - 0xd9, 0x77, 0x64, 0x2c, 0xc2, 0x38, 0x6a, 0x18, 0x9b, 0x46, 0xab, 0x1a, 0x54, 0x33, 0x8f, 0x17, - 0xa1, 0x9b, 0x50, 0x51, 0x03, 0xc9, 0xcb, 0x82, 0xba, 0x2c, 0x2b, 0xdb, 0x8b, 0xd0, 0x17, 0x50, - 0xe2, 0x09, 0xa6, 0xbc, 0x51, 0xdc, 0x2c, 0xb6, 0x6a, 0x9d, 0x96, 0x7d, 0xe9, 0x3a, 0xb6, 0x6a, - 0x37, 0x48, 0x30, 0x0d, 0x74, 0x9a, 0xf5, 0x08, 0x4c, 0xe5, 0xe3, 0xe8, 0x33, 0x30, 0x55, 0x18, - 0x6f, 0x18, 0xaa, 0xd4, 0x9d, 0x55, 0x4a, 0x05, 0x59, 0x8e, 0xf5, 0x4f, 0x11, 0xaa, 0x2f, 0x8a, - 0xa3, 0x37, 0xa0, 0x2c, 0xcb, 0xe7, 0xcb, 0x98, 0x81, 0x29, 0x4d, 0x2f, 0x42, 0x2e, 0xac, 0x1d, - 0xc5, 0x54, 0x6f, 0xb1, 0xd1, 0x69, 0xaf, 0x3a, 0xad, 0x2d, 0xff, 0xec, 0xc6, 0x34, 0x0a, 0x54, - 0x3a, 0x42, 0xb0, 0x46, 0xf1, 0x8c, 0x34, 0x8a, 0x0a, 0x0c, 0x75, 0x46, 0x5b, 0x00, 0x5c, 0xe0, - 0x54, 0x84, 0x12, 0xe6, 0xc6, 0xda, 0xa6, 0xd1, 0xaa, 0x75, 0x9a, 0x79, 0x83, 0x9c, 0x03, 0x7b, - 0x98, 0x73, 0x10, 0x54, 0x55, 0xb4, 0xb4, 0xd1, 0xc7, 0x50, 0x21, 0x34, 0xd2, 0x89, 0xa5, 0xa5, - 0x89, 0x65, 0x42, 0x23, 0x95, 0x76, 0x07, 0x36, 0x12, 0x9c, 0x12, 0x2a, 0xc2, 0x7c, 0x59, 0x53, - 0x2d, 0xbb, 0xae, 0xbd, 0x03, 0xbd, 0x72, 0x0f, 0xcc, 0x29, 0x3e, 0x24, 0x53, 0xde, 0x28, 0x2b, - 0x5c, 0x3f, 0x5a, 0x79, 0xe9, 0x9e, 0x4a, 0x73, 0xa9, 0x48, 0x17, 0x41, 0x56, 0xa3, 0xb9, 0x05, - 0xb5, 0x33, 0x6e, 0x54, 0x87, 0xe2, 0x11, 0x59, 0x64, 0x8a, 0x91, 0x47, 0xf4, 0x3a, 0x94, 0xe6, - 0x78, 0x7a, 0x4c, 0x32, 0xa1, 0x68, 0xe3, 0x7e, 0xe1, 0x13, 0xc3, 0x72, 0xa1, 0x92, 0xc3, 0x88, - 0x6e, 0xc2, 0xf5, 0x81, 0xff, 0xa0, 0x1f, 0xee, 0x7a, 0xfd, 0x87, 0xe1, 0x97, 0xfd, 0x81, 0xef, - 0x76, 0xbd, 0x47, 0x9e, 0xfb, 0xb0, 0xfe, 0x0a, 0xda, 0x00, 0x08, 0xfc, 0x6e, 0x38, 0x70, 0x83, - 0x91, 0x1b, 0xd4, 0x8d, 0xdc, 0xee, 0xf6, 0x3c, 0xb7, 0x3f, 0xac, 0x17, 0xac, 0xdf, 0x8b, 0xf0, - 0x5a, 0x2f, 0xe6, 0x42, 0xcb, 0x26, 0x20, 0xdf, 0x1f, 0x13, 0x2e, 0x96, 0x29, 0x78, 0x0f, 0xd6, - 0xe6, 0x31, 0x79, 0x92, 0xf1, 0xbe, 0xb5, 0x04, 0x82, 0x0b, 0xe5, 0xed, 0x51, 0x4c, 0x9e, 0x0c, - 0x17, 0x09, 0x09, 0x54, 0x19, 0x74, 0x0b, 0xaa, 0x09, 0x9e, 0x90, 0x90, 0xc7, 0x27, 0x5a, 0x04, - 0xa5, 0xa0, 0x22, 0x1d, 0x83, 0xf8, 0x44, 0x3f, 0x26, 0x79, 0x29, 0xd8, 0x11, 0xa1, 0x4a, 0x08, - 0x72, 0x14, 0x3c, 0x21, 0x43, 0xe9, 0x38, 0xa7, 0x93, 0xd2, 0x7f, 0xd5, 0x89, 0xb9, 0xba, 0x4e, - 0x6e, 0x80, 0xf9, 0x38, 0x9e, 0x0a, 0x92, 0x36, 0xca, 0x6a, 0x98, 0xcc, 0x92, 0xcf, 0x9a, 0xa5, - 0x11, 0x49, 0xc3, 0xc3, 0x45, 0xa3, 0xa2, 0x9f, 0xb5, 0xb2, 0xb7, 0x17, 0x56, 0x1f, 0x2a, 0xf9, - 0xca, 0x92, 0xab, 0x91, 0xe7, 0x7e, 0x15, 0x0e, 0xbf, 0xf6, 0xdd, 0x73, 0x5c, 0xd5, 0xa0, 0xbc, - 0xe7, 0xf5, 0xbd, 0xbd, 0x07, 0xbd, 0xba, 0x81, 0xd6, 0xa1, 0x12, 0xec, 0xef, 0x0f, 0x25, 0xaf, - 0xf5, 0x82, 0xb4, 0xba, 0xfb, 0x7b, 0x7e, 0xcf, 0x1d, 0xba, 0xf5, 0xa2, 0x75, 0x02, 0xe8, 0x2c, - 0xa8, 0x3c, 0x61, 0x94, 0x93, 0xff, 0xf7, 0xe4, 0xd1, 0xbb, 0x70, 0x8d, 0x92, 0x1f, 0x44, 0x78, - 0x06, 0x6c, 0xad, 0xb9, 0x57, 0xa5, 0xdb, 0xcf, 0x01, 0xb7, 0x76, 0xe1, 0xda, 0x0e, 0xd1, 0xad, - 0x57, 0x54, 0xcb, 0xcb, 0xff, 0xdf, 0x59, 0x29, 0x20, 0x1f, 0x8b, 0xf1, 0xb7, 0x57, 0x52, 0xdf, - 0xe7, 0x2f, 0xf6, 0x2c, 0x28, 0xd6, 0xde, 0x59, 0x65, 0x4f, 0x9e, 0x2f, 0xda, 0xf9, 0xb3, 0x08, - 0xeb, 0xfa, 0x55, 0x92, 0x74, 0x1e, 0x8f, 0x09, 0xfa, 0xcd, 0x00, 0x38, 0x85, 0x13, 0xdd, 0xbd, - 0xaa, 0x9c, 0x9b, 0xed, 0x2b, 0x64, 0x68, 0xae, 0xac, 0xd6, 0x4f, 0x7f, 0xfd, 0xfd, 0x4b, 0xc1, - 0x42, 0x9b, 0xf2, 0x03, 0x96, 0xad, 0xc6, 0x9d, 0xa7, 0xa7, 0x6b, 0x3f, 0x73, 0x32, 0x5e, 0x7e, - 0x35, 0xa0, 0x92, 0x03, 0x8e, 0xec, 0x25, 0x9d, 0xce, 0x31, 0xd3, 0x5c, 0x49, 0x02, 0xd6, 0x3d, - 0x35, 0xcc, 0x87, 0xe8, 0x83, 0x65, 0xc3, 0x38, 0x4f, 0x73, 0x22, 0x9f, 0xa1, 0x9f, 0x0d, 0xa8, - 0x9d, 0xe1, 0x0e, 0x2d, 0x03, 0xe1, 0x22, 0xcf, 0xcd, 0x1b, 0x17, 0x9e, 0x9b, 0x2b, 0x3f, 0xb8, - 0xd6, 0x5d, 0x35, 0xcf, 0xfb, 0x9d, 0xa5, 0xe0, 0xdc, 0xcf, 0x38, 0xdd, 0x7e, 0x6e, 0xc0, 0xdb, - 0x63, 0x36, 0xbb, 0x7c, 0x84, 0x6d, 0x50, 0xed, 0x7d, 0xd9, 0xcc, 0x37, 0xbe, 0xd9, 0xc9, 0x82, - 0x27, 0x6c, 0x8a, 0xe9, 0xc4, 0x66, 0xe9, 0xc4, 0x99, 0x10, 0xaa, 0x46, 0x71, 0xf4, 0x15, 0x4e, - 0x62, 0xfe, 0x92, 0x1f, 0x1d, 0x9f, 0x9e, 0x5a, 0xcf, 0x0b, 0xd7, 0x77, 0x74, 0xa5, 0xae, 0xf4, - 0x69, 0x4c, 0xed, 0x51, 0xfb, 0x8f, 0xdc, 0x7f, 0xa0, 0xfc, 0x07, 0xca, 0x7f, 0x30, 0x6a, 0x1f, - 0x9a, 0xaa, 0xc7, 0xbd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x08, 0xd9, 0xf5, 0xea, 0xd7, 0x08, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v2/trace.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v2/trace.pb.go deleted file mode 100644 index 21bb28dc..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v2/trace.pb.go +++ /dev/null @@ -1,1089 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/cloudtrace/v2/trace.proto - -/* -Package cloudtrace is a generated protocol buffer package. - -It is generated from these files: - google/devtools/cloudtrace/v2/trace.proto - google/devtools/cloudtrace/v2/tracing.proto - -It has these top-level messages: - Span - AttributeValue - StackTrace - Module - TruncatableString - BatchWriteSpansRequest -*/ -package cloudtrace - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" -import google_protobuf2 "github.com/golang/protobuf/ptypes/wrappers" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Indicates whether the message was sent or received. -type Span_TimeEvent_MessageEvent_Type int32 - -const ( - // Unknown event type. - Span_TimeEvent_MessageEvent_TYPE_UNSPECIFIED Span_TimeEvent_MessageEvent_Type = 0 - // Indicates a sent message. - Span_TimeEvent_MessageEvent_SENT Span_TimeEvent_MessageEvent_Type = 1 - // Indicates a received message. - Span_TimeEvent_MessageEvent_RECEIVED Span_TimeEvent_MessageEvent_Type = 2 -) - -var Span_TimeEvent_MessageEvent_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "SENT", - 2: "RECEIVED", -} -var Span_TimeEvent_MessageEvent_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "SENT": 1, - "RECEIVED": 2, -} - -func (x Span_TimeEvent_MessageEvent_Type) String() string { - return proto.EnumName(Span_TimeEvent_MessageEvent_Type_name, int32(x)) -} -func (Span_TimeEvent_MessageEvent_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 1, 1, 0} -} - -// The relationship of the current span relative to the linked span: child, -// parent, or unspecified. -type Span_Link_Type int32 - -const ( - // The relationship of the two spans is unknown. - Span_Link_TYPE_UNSPECIFIED Span_Link_Type = 0 - // The linked span is a child of the current span. - Span_Link_CHILD_LINKED_SPAN Span_Link_Type = 1 - // The linked span is a parent of the current span. - Span_Link_PARENT_LINKED_SPAN Span_Link_Type = 2 -) - -var Span_Link_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "CHILD_LINKED_SPAN", - 2: "PARENT_LINKED_SPAN", -} -var Span_Link_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "CHILD_LINKED_SPAN": 1, - "PARENT_LINKED_SPAN": 2, -} - -func (x Span_Link_Type) String() string { - return proto.EnumName(Span_Link_Type_name, int32(x)) -} -func (Span_Link_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 3, 0} } - -// A span represents a single operation within a trace. Spans can be -// nested to form a trace tree. Often, a trace contains a root span -// that describes the end-to-end latency, and one or more subspans for -// its sub-operations. A trace can also contain multiple root spans, -// or none at all. Spans do not need to be contiguous&mdash;there may be -// gaps or overlaps between spans in a trace. -type Span struct { - // The resource name of the span in the following format: - // - // projects/[PROJECT_ID]/traces/[TRACE_ID]/spans/[SPAN_ID] - // - // [TRACE_ID] is a unique identifier for a trace within a project; - // it is a 32-character hexadecimal encoding of a 16-byte array. - // - // [SPAN_ID] is a unique identifier for a span within a trace; it - // is a 16-character hexadecimal encoding of an 8-byte array. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The [SPAN_ID] portion of the span's resource name. - SpanId string `protobuf:"bytes,2,opt,name=span_id,json=spanId" json:"span_id,omitempty"` - // The [SPAN_ID] of this span's parent span. If this is a root span, - // then this field must be empty. - ParentSpanId string `protobuf:"bytes,3,opt,name=parent_span_id,json=parentSpanId" json:"parent_span_id,omitempty"` - // A description of the span's operation (up to 128 bytes). - // Stackdriver Trace displays the description in the - // {% dynamic print site_values.console_name %}. - // For example, the display name can be a qualified method name or a file name - // and a line number where the operation is called. A best practice is to use - // the same display name within an application and at the same call point. - // This makes it easier to correlate spans in different traces. - DisplayName *TruncatableString `protobuf:"bytes,4,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // The start time of the span. On the client side, this is the time kept by - // the local machine where the span execution starts. On the server side, this - // is the time when the server's application handler starts running. - StartTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The end time of the span. On the client side, this is the time kept by - // the local machine where the span execution ends. On the server side, this - // is the time when the server application handler stops running. - EndTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // A set of attributes on the span. You can have up to 32 attributes per - // span. - Attributes *Span_Attributes `protobuf:"bytes,7,opt,name=attributes" json:"attributes,omitempty"` - // Stack trace captured at the start of the span. - StackTrace *StackTrace `protobuf:"bytes,8,opt,name=stack_trace,json=stackTrace" json:"stack_trace,omitempty"` - // A set of time events. You can have up to 32 annotations and 128 message - // events per span. - TimeEvents *Span_TimeEvents `protobuf:"bytes,9,opt,name=time_events,json=timeEvents" json:"time_events,omitempty"` - // Links associated with the span. You can have up to 128 links per Span. - Links *Span_Links `protobuf:"bytes,10,opt,name=links" json:"links,omitempty"` - // An optional final status for this span. - Status *google_rpc.Status `protobuf:"bytes,11,opt,name=status" json:"status,omitempty"` - // (Optional) Set this parameter to indicate whether this span is in - // the same process as its parent. If you do not set this parameter, - // Stackdriver Trace is unable to take advantage of this helpful - // information. - SameProcessAsParentSpan *google_protobuf2.BoolValue `protobuf:"bytes,12,opt,name=same_process_as_parent_span,json=sameProcessAsParentSpan" json:"same_process_as_parent_span,omitempty"` - // An optional number of child spans that were generated while this span - // was active. If set, allows implementation to detect missing child spans. - ChildSpanCount *google_protobuf2.Int32Value `protobuf:"bytes,13,opt,name=child_span_count,json=childSpanCount" json:"child_span_count,omitempty"` -} - -func (m *Span) Reset() { *m = Span{} } -func (m *Span) String() string { return proto.CompactTextString(m) } -func (*Span) ProtoMessage() {} -func (*Span) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Span) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Span) GetSpanId() string { - if m != nil { - return m.SpanId - } - return "" -} - -func (m *Span) GetParentSpanId() string { - if m != nil { - return m.ParentSpanId - } - return "" -} - -func (m *Span) GetDisplayName() *TruncatableString { - if m != nil { - return m.DisplayName - } - return nil -} - -func (m *Span) GetStartTime() *google_protobuf1.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *Span) GetEndTime() *google_protobuf1.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *Span) GetAttributes() *Span_Attributes { - if m != nil { - return m.Attributes - } - return nil -} - -func (m *Span) GetStackTrace() *StackTrace { - if m != nil { - return m.StackTrace - } - return nil -} - -func (m *Span) GetTimeEvents() *Span_TimeEvents { - if m != nil { - return m.TimeEvents - } - return nil -} - -func (m *Span) GetLinks() *Span_Links { - if m != nil { - return m.Links - } - return nil -} - -func (m *Span) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func (m *Span) GetSameProcessAsParentSpan() *google_protobuf2.BoolValue { - if m != nil { - return m.SameProcessAsParentSpan - } - return nil -} - -func (m *Span) GetChildSpanCount() *google_protobuf2.Int32Value { - if m != nil { - return m.ChildSpanCount - } - return nil -} - -// A set of attributes, each in the format `[KEY]:[VALUE]`. -type Span_Attributes struct { - // The set of attributes. Each attribute's key can be up to 128 bytes - // long. The value can be a string up to 256 bytes, an integer, or the - // Boolean values `true` and `false`. For example: - // - // "/instance_id": "my-instance" - // "/http/user_agent": "" - // "/http/request_bytes": 300 - // "abc.com/myattribute": true - AttributeMap map[string]*AttributeValue `protobuf:"bytes,1,rep,name=attribute_map,json=attributeMap" json:"attribute_map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The number of attributes that were discarded. Attributes can be discarded - // because their keys are too long or because there are too many attributes. - // If this value is 0 then all attributes are valid. - DroppedAttributesCount int32 `protobuf:"varint,2,opt,name=dropped_attributes_count,json=droppedAttributesCount" json:"dropped_attributes_count,omitempty"` -} - -func (m *Span_Attributes) Reset() { *m = Span_Attributes{} } -func (m *Span_Attributes) String() string { return proto.CompactTextString(m) } -func (*Span_Attributes) ProtoMessage() {} -func (*Span_Attributes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -func (m *Span_Attributes) GetAttributeMap() map[string]*AttributeValue { - if m != nil { - return m.AttributeMap - } - return nil -} - -func (m *Span_Attributes) GetDroppedAttributesCount() int32 { - if m != nil { - return m.DroppedAttributesCount - } - return 0 -} - -// A time-stamped annotation or message event in the Span. -type Span_TimeEvent struct { - // The timestamp indicating the time the event occurred. - Time *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=time" json:"time,omitempty"` - // A `TimeEvent` can contain either an `Annotation` object or a - // `MessageEvent` object, but not both. - // - // Types that are valid to be assigned to Value: - // *Span_TimeEvent_Annotation_ - // *Span_TimeEvent_MessageEvent_ - Value isSpan_TimeEvent_Value `protobuf_oneof:"value"` -} - -func (m *Span_TimeEvent) Reset() { *m = Span_TimeEvent{} } -func (m *Span_TimeEvent) String() string { return proto.CompactTextString(m) } -func (*Span_TimeEvent) ProtoMessage() {} -func (*Span_TimeEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 1} } - -type isSpan_TimeEvent_Value interface { - isSpan_TimeEvent_Value() -} - -type Span_TimeEvent_Annotation_ struct { - Annotation *Span_TimeEvent_Annotation `protobuf:"bytes,2,opt,name=annotation,oneof"` -} -type Span_TimeEvent_MessageEvent_ struct { - MessageEvent *Span_TimeEvent_MessageEvent `protobuf:"bytes,3,opt,name=message_event,json=messageEvent,oneof"` -} - -func (*Span_TimeEvent_Annotation_) isSpan_TimeEvent_Value() {} -func (*Span_TimeEvent_MessageEvent_) isSpan_TimeEvent_Value() {} - -func (m *Span_TimeEvent) GetValue() isSpan_TimeEvent_Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *Span_TimeEvent) GetTime() *google_protobuf1.Timestamp { - if m != nil { - return m.Time - } - return nil -} - -func (m *Span_TimeEvent) GetAnnotation() *Span_TimeEvent_Annotation { - if x, ok := m.GetValue().(*Span_TimeEvent_Annotation_); ok { - return x.Annotation - } - return nil -} - -func (m *Span_TimeEvent) GetMessageEvent() *Span_TimeEvent_MessageEvent { - if x, ok := m.GetValue().(*Span_TimeEvent_MessageEvent_); ok { - return x.MessageEvent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Span_TimeEvent) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Span_TimeEvent_OneofMarshaler, _Span_TimeEvent_OneofUnmarshaler, _Span_TimeEvent_OneofSizer, []interface{}{ - (*Span_TimeEvent_Annotation_)(nil), - (*Span_TimeEvent_MessageEvent_)(nil), - } -} - -func _Span_TimeEvent_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Span_TimeEvent) - // value - switch x := m.Value.(type) { - case *Span_TimeEvent_Annotation_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Annotation); err != nil { - return err - } - case *Span_TimeEvent_MessageEvent_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.MessageEvent); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Span_TimeEvent.Value has unexpected type %T", x) - } - return nil -} - -func _Span_TimeEvent_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Span_TimeEvent) - switch tag { - case 2: // value.annotation - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Span_TimeEvent_Annotation) - err := b.DecodeMessage(msg) - m.Value = &Span_TimeEvent_Annotation_{msg} - return true, err - case 3: // value.message_event - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Span_TimeEvent_MessageEvent) - err := b.DecodeMessage(msg) - m.Value = &Span_TimeEvent_MessageEvent_{msg} - return true, err - default: - return false, nil - } -} - -func _Span_TimeEvent_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Span_TimeEvent) - // value - switch x := m.Value.(type) { - case *Span_TimeEvent_Annotation_: - s := proto.Size(x.Annotation) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Span_TimeEvent_MessageEvent_: - s := proto.Size(x.MessageEvent) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Text annotation with a set of attributes. -type Span_TimeEvent_Annotation struct { - // A user-supplied message describing the event. The maximum length for - // the description is 256 bytes. - Description *TruncatableString `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` - // A set of attributes on the annotation. You can have up to 4 attributes - // per Annotation. - Attributes *Span_Attributes `protobuf:"bytes,2,opt,name=attributes" json:"attributes,omitempty"` -} - -func (m *Span_TimeEvent_Annotation) Reset() { *m = Span_TimeEvent_Annotation{} } -func (m *Span_TimeEvent_Annotation) String() string { return proto.CompactTextString(m) } -func (*Span_TimeEvent_Annotation) ProtoMessage() {} -func (*Span_TimeEvent_Annotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 1, 0} } - -func (m *Span_TimeEvent_Annotation) GetDescription() *TruncatableString { - if m != nil { - return m.Description - } - return nil -} - -func (m *Span_TimeEvent_Annotation) GetAttributes() *Span_Attributes { - if m != nil { - return m.Attributes - } - return nil -} - -// An event describing a message sent/received between Spans. -type Span_TimeEvent_MessageEvent struct { - // Type of MessageEvent. Indicates whether the message was sent or - // received. - Type Span_TimeEvent_MessageEvent_Type `protobuf:"varint,1,opt,name=type,enum=google.devtools.cloudtrace.v2.Span_TimeEvent_MessageEvent_Type" json:"type,omitempty"` - // An identifier for the MessageEvent's message that can be used to match - // SENT and RECEIVED MessageEvents. It is recommended to be unique within - // a Span. - Id int64 `protobuf:"varint,2,opt,name=id" json:"id,omitempty"` - // The number of uncompressed bytes sent or received. - UncompressedSizeBytes int64 `protobuf:"varint,3,opt,name=uncompressed_size_bytes,json=uncompressedSizeBytes" json:"uncompressed_size_bytes,omitempty"` - // The number of compressed bytes sent or received. If missing assumed to - // be the same size as uncompressed. - CompressedSizeBytes int64 `protobuf:"varint,4,opt,name=compressed_size_bytes,json=compressedSizeBytes" json:"compressed_size_bytes,omitempty"` -} - -func (m *Span_TimeEvent_MessageEvent) Reset() { *m = Span_TimeEvent_MessageEvent{} } -func (m *Span_TimeEvent_MessageEvent) String() string { return proto.CompactTextString(m) } -func (*Span_TimeEvent_MessageEvent) ProtoMessage() {} -func (*Span_TimeEvent_MessageEvent) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 1, 1} -} - -func (m *Span_TimeEvent_MessageEvent) GetType() Span_TimeEvent_MessageEvent_Type { - if m != nil { - return m.Type - } - return Span_TimeEvent_MessageEvent_TYPE_UNSPECIFIED -} - -func (m *Span_TimeEvent_MessageEvent) GetId() int64 { - if m != nil { - return m.Id - } - return 0 -} - -func (m *Span_TimeEvent_MessageEvent) GetUncompressedSizeBytes() int64 { - if m != nil { - return m.UncompressedSizeBytes - } - return 0 -} - -func (m *Span_TimeEvent_MessageEvent) GetCompressedSizeBytes() int64 { - if m != nil { - return m.CompressedSizeBytes - } - return 0 -} - -// A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation -// on the span, consisting of either user-supplied key:value pairs, or -// details of a message sent/received between Spans. -type Span_TimeEvents struct { - // A collection of `TimeEvent`s. - TimeEvent []*Span_TimeEvent `protobuf:"bytes,1,rep,name=time_event,json=timeEvent" json:"time_event,omitempty"` - // The number of dropped annotations in all the included time events. - // If the value is 0, then no annotations were dropped. - DroppedAnnotationsCount int32 `protobuf:"varint,2,opt,name=dropped_annotations_count,json=droppedAnnotationsCount" json:"dropped_annotations_count,omitempty"` - // The number of dropped message events in all the included time events. - // If the value is 0, then no message events were dropped. - DroppedMessageEventsCount int32 `protobuf:"varint,3,opt,name=dropped_message_events_count,json=droppedMessageEventsCount" json:"dropped_message_events_count,omitempty"` -} - -func (m *Span_TimeEvents) Reset() { *m = Span_TimeEvents{} } -func (m *Span_TimeEvents) String() string { return proto.CompactTextString(m) } -func (*Span_TimeEvents) ProtoMessage() {} -func (*Span_TimeEvents) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 2} } - -func (m *Span_TimeEvents) GetTimeEvent() []*Span_TimeEvent { - if m != nil { - return m.TimeEvent - } - return nil -} - -func (m *Span_TimeEvents) GetDroppedAnnotationsCount() int32 { - if m != nil { - return m.DroppedAnnotationsCount - } - return 0 -} - -func (m *Span_TimeEvents) GetDroppedMessageEventsCount() int32 { - if m != nil { - return m.DroppedMessageEventsCount - } - return 0 -} - -// A pointer from the current span to another span in the same trace or in a -// different trace. For example, this can be used in batching operations, -// where a single batch handler processes multiple requests from different -// traces or when the handler receives a request from a different project. -type Span_Link struct { - // The [TRACE_ID] for a trace within a project. - TraceId string `protobuf:"bytes,1,opt,name=trace_id,json=traceId" json:"trace_id,omitempty"` - // The [SPAN_ID] for a span within a trace. - SpanId string `protobuf:"bytes,2,opt,name=span_id,json=spanId" json:"span_id,omitempty"` - // The relationship of the current span relative to the linked span. - Type Span_Link_Type `protobuf:"varint,3,opt,name=type,enum=google.devtools.cloudtrace.v2.Span_Link_Type" json:"type,omitempty"` - // A set of attributes on the link. You have have up to 32 attributes per - // link. - Attributes *Span_Attributes `protobuf:"bytes,4,opt,name=attributes" json:"attributes,omitempty"` -} - -func (m *Span_Link) Reset() { *m = Span_Link{} } -func (m *Span_Link) String() string { return proto.CompactTextString(m) } -func (*Span_Link) ProtoMessage() {} -func (*Span_Link) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 3} } - -func (m *Span_Link) GetTraceId() string { - if m != nil { - return m.TraceId - } - return "" -} - -func (m *Span_Link) GetSpanId() string { - if m != nil { - return m.SpanId - } - return "" -} - -func (m *Span_Link) GetType() Span_Link_Type { - if m != nil { - return m.Type - } - return Span_Link_TYPE_UNSPECIFIED -} - -func (m *Span_Link) GetAttributes() *Span_Attributes { - if m != nil { - return m.Attributes - } - return nil -} - -// A collection of links, which are references from this span to a span -// in the same or different trace. -type Span_Links struct { - // A collection of links. - Link []*Span_Link `protobuf:"bytes,1,rep,name=link" json:"link,omitempty"` - // The number of dropped links after the maximum size was enforced. If - // this value is 0, then no links were dropped. - DroppedLinksCount int32 `protobuf:"varint,2,opt,name=dropped_links_count,json=droppedLinksCount" json:"dropped_links_count,omitempty"` -} - -func (m *Span_Links) Reset() { *m = Span_Links{} } -func (m *Span_Links) String() string { return proto.CompactTextString(m) } -func (*Span_Links) ProtoMessage() {} -func (*Span_Links) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 4} } - -func (m *Span_Links) GetLink() []*Span_Link { - if m != nil { - return m.Link - } - return nil -} - -func (m *Span_Links) GetDroppedLinksCount() int32 { - if m != nil { - return m.DroppedLinksCount - } - return 0 -} - -// The allowed types for [VALUE] in a `[KEY]:[VALUE]` attribute. -type AttributeValue struct { - // The type of the value. - // - // Types that are valid to be assigned to Value: - // *AttributeValue_StringValue - // *AttributeValue_IntValue - // *AttributeValue_BoolValue - Value isAttributeValue_Value `protobuf_oneof:"value"` -} - -func (m *AttributeValue) Reset() { *m = AttributeValue{} } -func (m *AttributeValue) String() string { return proto.CompactTextString(m) } -func (*AttributeValue) ProtoMessage() {} -func (*AttributeValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type isAttributeValue_Value interface { - isAttributeValue_Value() -} - -type AttributeValue_StringValue struct { - StringValue *TruncatableString `protobuf:"bytes,1,opt,name=string_value,json=stringValue,oneof"` -} -type AttributeValue_IntValue struct { - IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,oneof"` -} -type AttributeValue_BoolValue struct { - BoolValue bool `protobuf:"varint,3,opt,name=bool_value,json=boolValue,oneof"` -} - -func (*AttributeValue_StringValue) isAttributeValue_Value() {} -func (*AttributeValue_IntValue) isAttributeValue_Value() {} -func (*AttributeValue_BoolValue) isAttributeValue_Value() {} - -func (m *AttributeValue) GetValue() isAttributeValue_Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *AttributeValue) GetStringValue() *TruncatableString { - if x, ok := m.GetValue().(*AttributeValue_StringValue); ok { - return x.StringValue - } - return nil -} - -func (m *AttributeValue) GetIntValue() int64 { - if x, ok := m.GetValue().(*AttributeValue_IntValue); ok { - return x.IntValue - } - return 0 -} - -func (m *AttributeValue) GetBoolValue() bool { - if x, ok := m.GetValue().(*AttributeValue_BoolValue); ok { - return x.BoolValue - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*AttributeValue) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _AttributeValue_OneofMarshaler, _AttributeValue_OneofUnmarshaler, _AttributeValue_OneofSizer, []interface{}{ - (*AttributeValue_StringValue)(nil), - (*AttributeValue_IntValue)(nil), - (*AttributeValue_BoolValue)(nil), - } -} - -func _AttributeValue_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*AttributeValue) - // value - switch x := m.Value.(type) { - case *AttributeValue_StringValue: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StringValue); err != nil { - return err - } - case *AttributeValue_IntValue: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IntValue)) - case *AttributeValue_BoolValue: - t := uint64(0) - if x.BoolValue { - t = 1 - } - b.EncodeVarint(3<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("AttributeValue.Value has unexpected type %T", x) - } - return nil -} - -func _AttributeValue_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*AttributeValue) - switch tag { - case 1: // value.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TruncatableString) - err := b.DecodeMessage(msg) - m.Value = &AttributeValue_StringValue{msg} - return true, err - case 2: // value.int_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &AttributeValue_IntValue{int64(x)} - return true, err - case 3: // value.bool_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &AttributeValue_BoolValue{x != 0} - return true, err - default: - return false, nil - } -} - -func _AttributeValue_OneofSizer(msg proto.Message) (n int) { - m := msg.(*AttributeValue) - // value - switch x := m.Value.(type) { - case *AttributeValue_StringValue: - s := proto.Size(x.StringValue) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AttributeValue_IntValue: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IntValue)) - case *AttributeValue_BoolValue: - n += proto.SizeVarint(3<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A call stack appearing in a trace. -type StackTrace struct { - // Stack frames in this stack trace. A maximum of 128 frames are allowed. - StackFrames *StackTrace_StackFrames `protobuf:"bytes,1,opt,name=stack_frames,json=stackFrames" json:"stack_frames,omitempty"` - // The hash ID is used to conserve network bandwidth for duplicate - // stack traces within a single trace. - // - // Often multiple spans will have identical stack traces. - // The first occurrence of a stack trace should contain both the - // `stackFrame` content and a value in `stackTraceHashId`. - // - // Subsequent spans within the same request can refer - // to that stack trace by only setting `stackTraceHashId`. - StackTraceHashId int64 `protobuf:"varint,2,opt,name=stack_trace_hash_id,json=stackTraceHashId" json:"stack_trace_hash_id,omitempty"` -} - -func (m *StackTrace) Reset() { *m = StackTrace{} } -func (m *StackTrace) String() string { return proto.CompactTextString(m) } -func (*StackTrace) ProtoMessage() {} -func (*StackTrace) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *StackTrace) GetStackFrames() *StackTrace_StackFrames { - if m != nil { - return m.StackFrames - } - return nil -} - -func (m *StackTrace) GetStackTraceHashId() int64 { - if m != nil { - return m.StackTraceHashId - } - return 0 -} - -// Represents a single stack frame in a stack trace. -type StackTrace_StackFrame struct { - // The fully-qualified name that uniquely identifies the function or - // method that is active in this frame (up to 1024 bytes). - FunctionName *TruncatableString `protobuf:"bytes,1,opt,name=function_name,json=functionName" json:"function_name,omitempty"` - // An un-mangled function name, if `function_name` is - // [mangled](http://www.avabodh.com/cxxin/namemangling.html). The name can - // be fully-qualified (up to 1024 bytes). - OriginalFunctionName *TruncatableString `protobuf:"bytes,2,opt,name=original_function_name,json=originalFunctionName" json:"original_function_name,omitempty"` - // The name of the source file where the function call appears (up to 256 - // bytes). - FileName *TruncatableString `protobuf:"bytes,3,opt,name=file_name,json=fileName" json:"file_name,omitempty"` - // The line number in `file_name` where the function call appears. - LineNumber int64 `protobuf:"varint,4,opt,name=line_number,json=lineNumber" json:"line_number,omitempty"` - // The column number where the function call appears, if available. - // This is important in JavaScript because of its anonymous functions. - ColumnNumber int64 `protobuf:"varint,5,opt,name=column_number,json=columnNumber" json:"column_number,omitempty"` - // The binary module from where the code was loaded. - LoadModule *Module `protobuf:"bytes,6,opt,name=load_module,json=loadModule" json:"load_module,omitempty"` - // The version of the deployed source code (up to 128 bytes). - SourceVersion *TruncatableString `protobuf:"bytes,7,opt,name=source_version,json=sourceVersion" json:"source_version,omitempty"` -} - -func (m *StackTrace_StackFrame) Reset() { *m = StackTrace_StackFrame{} } -func (m *StackTrace_StackFrame) String() string { return proto.CompactTextString(m) } -func (*StackTrace_StackFrame) ProtoMessage() {} -func (*StackTrace_StackFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *StackTrace_StackFrame) GetFunctionName() *TruncatableString { - if m != nil { - return m.FunctionName - } - return nil -} - -func (m *StackTrace_StackFrame) GetOriginalFunctionName() *TruncatableString { - if m != nil { - return m.OriginalFunctionName - } - return nil -} - -func (m *StackTrace_StackFrame) GetFileName() *TruncatableString { - if m != nil { - return m.FileName - } - return nil -} - -func (m *StackTrace_StackFrame) GetLineNumber() int64 { - if m != nil { - return m.LineNumber - } - return 0 -} - -func (m *StackTrace_StackFrame) GetColumnNumber() int64 { - if m != nil { - return m.ColumnNumber - } - return 0 -} - -func (m *StackTrace_StackFrame) GetLoadModule() *Module { - if m != nil { - return m.LoadModule - } - return nil -} - -func (m *StackTrace_StackFrame) GetSourceVersion() *TruncatableString { - if m != nil { - return m.SourceVersion - } - return nil -} - -// A collection of stack frames, which can be truncated. -type StackTrace_StackFrames struct { - // Stack frames in this call stack. - Frame []*StackTrace_StackFrame `protobuf:"bytes,1,rep,name=frame" json:"frame,omitempty"` - // The number of stack frames that were dropped because there - // were too many stack frames. - // If this value is 0, then no stack frames were dropped. - DroppedFramesCount int32 `protobuf:"varint,2,opt,name=dropped_frames_count,json=droppedFramesCount" json:"dropped_frames_count,omitempty"` -} - -func (m *StackTrace_StackFrames) Reset() { *m = StackTrace_StackFrames{} } -func (m *StackTrace_StackFrames) String() string { return proto.CompactTextString(m) } -func (*StackTrace_StackFrames) ProtoMessage() {} -func (*StackTrace_StackFrames) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} } - -func (m *StackTrace_StackFrames) GetFrame() []*StackTrace_StackFrame { - if m != nil { - return m.Frame - } - return nil -} - -func (m *StackTrace_StackFrames) GetDroppedFramesCount() int32 { - if m != nil { - return m.DroppedFramesCount - } - return 0 -} - -// Binary module. -type Module struct { - // For example: main binary, kernel modules, and dynamic libraries - // such as libc.so, sharedlib.so (up to 256 bytes). - Module *TruncatableString `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"` - // A unique identifier for the module, usually a hash of its - // contents (up to 128 bytes). - BuildId *TruncatableString `protobuf:"bytes,2,opt,name=build_id,json=buildId" json:"build_id,omitempty"` -} - -func (m *Module) Reset() { *m = Module{} } -func (m *Module) String() string { return proto.CompactTextString(m) } -func (*Module) ProtoMessage() {} -func (*Module) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Module) GetModule() *TruncatableString { - if m != nil { - return m.Module - } - return nil -} - -func (m *Module) GetBuildId() *TruncatableString { - if m != nil { - return m.BuildId - } - return nil -} - -// Represents a string that might be shortened to a specified length. -type TruncatableString struct { - // The shortened string. For example, if the original string is 500 - // bytes long and the limit of the string is 128 bytes, then - // `value` contains the first 128 bytes of the 500-byte string. - // - // Truncation always happens on a UTF8 character boundary. If there - // are multi-byte characters in the string, then the length of the - // shortened string might be less than the size limit. - Value string `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` - // The number of bytes removed from the original string. If this - // value is 0, then the string was not shortened. - TruncatedByteCount int32 `protobuf:"varint,2,opt,name=truncated_byte_count,json=truncatedByteCount" json:"truncated_byte_count,omitempty"` -} - -func (m *TruncatableString) Reset() { *m = TruncatableString{} } -func (m *TruncatableString) String() string { return proto.CompactTextString(m) } -func (*TruncatableString) ProtoMessage() {} -func (*TruncatableString) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *TruncatableString) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *TruncatableString) GetTruncatedByteCount() int32 { - if m != nil { - return m.TruncatedByteCount - } - return 0 -} - -func init() { - proto.RegisterType((*Span)(nil), "google.devtools.cloudtrace.v2.Span") - proto.RegisterType((*Span_Attributes)(nil), "google.devtools.cloudtrace.v2.Span.Attributes") - proto.RegisterType((*Span_TimeEvent)(nil), "google.devtools.cloudtrace.v2.Span.TimeEvent") - proto.RegisterType((*Span_TimeEvent_Annotation)(nil), "google.devtools.cloudtrace.v2.Span.TimeEvent.Annotation") - proto.RegisterType((*Span_TimeEvent_MessageEvent)(nil), "google.devtools.cloudtrace.v2.Span.TimeEvent.MessageEvent") - proto.RegisterType((*Span_TimeEvents)(nil), "google.devtools.cloudtrace.v2.Span.TimeEvents") - proto.RegisterType((*Span_Link)(nil), "google.devtools.cloudtrace.v2.Span.Link") - proto.RegisterType((*Span_Links)(nil), "google.devtools.cloudtrace.v2.Span.Links") - proto.RegisterType((*AttributeValue)(nil), "google.devtools.cloudtrace.v2.AttributeValue") - proto.RegisterType((*StackTrace)(nil), "google.devtools.cloudtrace.v2.StackTrace") - proto.RegisterType((*StackTrace_StackFrame)(nil), "google.devtools.cloudtrace.v2.StackTrace.StackFrame") - proto.RegisterType((*StackTrace_StackFrames)(nil), "google.devtools.cloudtrace.v2.StackTrace.StackFrames") - proto.RegisterType((*Module)(nil), "google.devtools.cloudtrace.v2.Module") - proto.RegisterType((*TruncatableString)(nil), "google.devtools.cloudtrace.v2.TruncatableString") - proto.RegisterEnum("google.devtools.cloudtrace.v2.Span_TimeEvent_MessageEvent_Type", Span_TimeEvent_MessageEvent_Type_name, Span_TimeEvent_MessageEvent_Type_value) - proto.RegisterEnum("google.devtools.cloudtrace.v2.Span_Link_Type", Span_Link_Type_name, Span_Link_Type_value) -} - -func init() { proto.RegisterFile("google/devtools/cloudtrace/v2/trace.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1425 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0x4b, 0x6f, 0xdb, 0xc6, - 0x16, 0x36, 0xf5, 0xd6, 0x91, 0x6c, 0xc8, 0x13, 0x3b, 0x56, 0x94, 0xe4, 0x26, 0xd7, 0xf7, 0x16, - 0x70, 0x0a, 0x98, 0x0a, 0x94, 0xa4, 0x48, 0xd3, 0x02, 0xa9, 0x1f, 0x72, 0xa4, 0xc4, 0x56, 0x05, - 0x4a, 0x71, 0xd3, 0x34, 0x00, 0x31, 0x22, 0xc7, 0x32, 0x11, 0x8a, 0x24, 0x38, 0x43, 0x17, 0xce, - 0xae, 0xeb, 0xae, 0xbb, 0x29, 0x50, 0x74, 0x59, 0x20, 0xab, 0xfc, 0x8e, 0x2e, 0xba, 0xed, 0x7f, - 0xe9, 0xaa, 0x98, 0x07, 0x49, 0x29, 0x2f, 0xdb, 0xca, 0x6e, 0x66, 0xce, 0xf9, 0x3e, 0x9e, 0x33, - 0x73, 0x5e, 0x84, 0x5b, 0x63, 0xdf, 0x1f, 0xbb, 0xa4, 0x69, 0x93, 0x13, 0xe6, 0xfb, 0x2e, 0x6d, - 0x5a, 0xae, 0x1f, 0xd9, 0x2c, 0xc4, 0x16, 0x69, 0x9e, 0xb4, 0x9a, 0x62, 0xa1, 0x07, 0xa1, 0xcf, - 0x7c, 0x74, 0x5d, 0xaa, 0xea, 0xb1, 0xaa, 0x9e, 0xaa, 0xea, 0x27, 0xad, 0xc6, 0x35, 0xc5, 0x84, - 0x03, 0xa7, 0x89, 0x3d, 0xcf, 0x67, 0x98, 0x39, 0xbe, 0x47, 0x25, 0xb8, 0x71, 0x43, 0x49, 0xc5, - 0x6e, 0x14, 0x1d, 0x35, 0x99, 0x33, 0x21, 0x94, 0xe1, 0x49, 0xa0, 0x14, 0xfe, 0xf3, 0xb6, 0xc2, - 0x8f, 0x21, 0x0e, 0x02, 0x12, 0xc6, 0x04, 0x6b, 0x4a, 0x1e, 0x06, 0x56, 0x93, 0x32, 0xcc, 0x22, - 0x25, 0x58, 0xff, 0x07, 0x41, 0x6e, 0x10, 0x60, 0x0f, 0x21, 0xc8, 0x79, 0x78, 0x42, 0xea, 0xda, - 0x4d, 0x6d, 0xa3, 0x6c, 0x88, 0x35, 0x5a, 0x83, 0x22, 0x0d, 0xb0, 0x67, 0x3a, 0x76, 0x3d, 0x23, - 0x8e, 0x0b, 0x7c, 0xdb, 0xb5, 0xd1, 0xff, 0x61, 0x29, 0xc0, 0x21, 0xf1, 0x98, 0x19, 0xcb, 0xb3, - 0x42, 0x5e, 0x95, 0xa7, 0x03, 0xa9, 0x35, 0x80, 0xaa, 0xed, 0xd0, 0xc0, 0xc5, 0xa7, 0xa6, 0xa0, - 0xce, 0xdd, 0xd4, 0x36, 0x2a, 0xad, 0xdb, 0xfa, 0x47, 0x6f, 0x42, 0x1f, 0x86, 0x91, 0x67, 0x61, - 0x86, 0x47, 0x2e, 0x19, 0xb0, 0xd0, 0xf1, 0xc6, 0x46, 0x45, 0xb1, 0xf4, 0xb8, 0x4d, 0x5f, 0x02, - 0x50, 0x86, 0x43, 0x66, 0xf2, 0x2b, 0xa8, 0xe7, 0x05, 0x65, 0x23, 0xa6, 0x8c, 0xdd, 0xd7, 0x87, - 0xf1, 0xfd, 0x18, 0x65, 0xa1, 0xcd, 0xf7, 0xe8, 0x1e, 0x94, 0x88, 0x67, 0x4b, 0x60, 0xe1, 0x4c, - 0x60, 0x91, 0x78, 0xb6, 0x80, 0xf5, 0x00, 0x30, 0x63, 0xa1, 0x33, 0x8a, 0x18, 0xa1, 0xf5, 0xa2, - 0x00, 0xea, 0x67, 0x38, 0xc1, 0x6f, 0x40, 0xdf, 0x4a, 0x50, 0xc6, 0x14, 0x03, 0x7a, 0x0c, 0x15, - 0xca, 0xb0, 0xf5, 0xd2, 0x14, 0xda, 0xf5, 0x92, 0x20, 0xbc, 0x75, 0x16, 0x21, 0x47, 0x0c, 0xf9, - 0xce, 0x00, 0x9a, 0xac, 0xd1, 0xb7, 0x50, 0xe1, 0xee, 0x98, 0xe4, 0x84, 0x78, 0x8c, 0xd6, 0xcb, - 0xe7, 0x37, 0x8e, 0xbb, 0xd6, 0x16, 0x28, 0x03, 0x58, 0xb2, 0x46, 0x0f, 0x21, 0xef, 0x3a, 0xde, - 0x4b, 0x5a, 0x87, 0xf3, 0x99, 0xc5, 0xa9, 0xf6, 0x39, 0xc0, 0x90, 0x38, 0xf4, 0x39, 0x14, 0x64, - 0x80, 0xd5, 0x2b, 0x82, 0x01, 0xc5, 0x0c, 0x61, 0x60, 0x71, 0x2f, 0x58, 0x44, 0x0d, 0xa5, 0x81, - 0x9e, 0xc1, 0x55, 0x8a, 0x27, 0xc4, 0x0c, 0x42, 0xdf, 0x22, 0x94, 0x9a, 0x98, 0x9a, 0x53, 0x61, - 0x55, 0xaf, 0x7e, 0xe0, 0x8d, 0xb6, 0x7d, 0xdf, 0x3d, 0xc4, 0x6e, 0x44, 0x8c, 0x35, 0x0e, 0xef, - 0x4b, 0xf4, 0x16, 0xed, 0x27, 0xc1, 0x87, 0xda, 0x50, 0xb3, 0x8e, 0x1d, 0xd7, 0x96, 0xf1, 0x69, - 0xf9, 0x91, 0xc7, 0xea, 0x8b, 0x82, 0xee, 0xea, 0x3b, 0x74, 0x5d, 0x8f, 0xdd, 0x69, 0x49, 0xbe, - 0x25, 0x01, 0xe2, 0x0c, 0x3b, 0x1c, 0xd2, 0xf8, 0x2d, 0x03, 0x90, 0xbe, 0x22, 0x22, 0xb0, 0x98, - 0xbc, 0xa3, 0x39, 0xc1, 0x41, 0x5d, 0xbb, 0x99, 0xdd, 0xa8, 0xb4, 0xbe, 0xb9, 0x58, 0x30, 0xa4, - 0xcb, 0x03, 0x1c, 0xb4, 0x3d, 0x16, 0x9e, 0x1a, 0x55, 0x3c, 0x75, 0x84, 0xee, 0x43, 0xdd, 0x0e, - 0xfd, 0x20, 0x20, 0xb6, 0x99, 0x86, 0x8d, 0x72, 0x82, 0xe7, 0x61, 0xde, 0xb8, 0xac, 0xe4, 0x29, - 0xa9, 0xb4, 0xd7, 0x83, 0xe5, 0x77, 0xc8, 0x51, 0x0d, 0xb2, 0x2f, 0xc9, 0xa9, 0x4a, 0x6c, 0xbe, - 0x44, 0x3b, 0x90, 0x3f, 0xe1, 0xfe, 0x0a, 0xb6, 0x4a, 0x6b, 0xf3, 0x0c, 0xfb, 0x13, 0x4a, 0x79, - 0x49, 0x12, 0xfb, 0x20, 0x73, 0x5f, 0x6b, 0xfc, 0x95, 0x87, 0x72, 0x12, 0x48, 0x48, 0x87, 0x9c, - 0xc8, 0x2d, 0xed, 0xcc, 0xdc, 0x12, 0x7a, 0xe8, 0x39, 0x40, 0x5a, 0xea, 0x94, 0x2d, 0xf7, 0x2f, - 0x14, 0xbb, 0xfa, 0x56, 0x82, 0xef, 0x2c, 0x18, 0x53, 0x6c, 0x08, 0xc3, 0xe2, 0x84, 0x50, 0x8a, - 0xc7, 0x2a, 0x37, 0x44, 0x81, 0xaa, 0xb4, 0x1e, 0x5c, 0x8c, 0xfe, 0x40, 0x52, 0x88, 0x4d, 0x67, - 0xc1, 0xa8, 0x4e, 0xa6, 0xf6, 0x8d, 0x37, 0x1a, 0x40, 0xfa, 0x7d, 0x64, 0x40, 0xc5, 0x26, 0xd4, - 0x0a, 0x9d, 0x40, 0xb8, 0xa3, 0xcd, 0x5d, 0xec, 0x52, 0x92, 0xb7, 0x4a, 0x4f, 0xe6, 0x53, 0x4b, - 0x4f, 0xe3, 0x97, 0x0c, 0x54, 0xa7, 0x7d, 0x42, 0x03, 0xc8, 0xb1, 0xd3, 0x40, 0x3e, 0xd9, 0x52, - 0xeb, 0xe1, 0xfc, 0xb7, 0xa3, 0x0f, 0x4f, 0x03, 0x62, 0x08, 0x32, 0xb4, 0x04, 0x19, 0xd5, 0x31, - 0xb2, 0x46, 0xc6, 0xb1, 0xd1, 0x17, 0xb0, 0x16, 0x79, 0x96, 0x3f, 0x09, 0x42, 0x42, 0x29, 0xb1, - 0x4d, 0xea, 0xbc, 0x22, 0xe6, 0xe8, 0x94, 0xbb, 0x94, 0x15, 0x4a, 0xab, 0xd3, 0xe2, 0x81, 0xf3, - 0x8a, 0x6c, 0x73, 0x21, 0x6a, 0xc1, 0xea, 0xfb, 0x51, 0x39, 0x81, 0xba, 0xf4, 0x1e, 0xcc, 0xfa, - 0x5d, 0xc8, 0x71, 0x4b, 0xd0, 0x0a, 0xd4, 0x86, 0xdf, 0xf7, 0xdb, 0xe6, 0xd3, 0xde, 0xa0, 0xdf, - 0xde, 0xe9, 0xee, 0x75, 0xdb, 0xbb, 0xb5, 0x05, 0x54, 0x82, 0xdc, 0xa0, 0xdd, 0x1b, 0xd6, 0x34, - 0x54, 0x85, 0x92, 0xd1, 0xde, 0x69, 0x77, 0x0f, 0xdb, 0xbb, 0xb5, 0xcc, 0x76, 0x51, 0x25, 0x44, - 0xe3, 0x6f, 0x0d, 0x20, 0xad, 0x8c, 0x68, 0x1f, 0x20, 0x2d, 0xaf, 0x2a, 0xdb, 0x37, 0x2f, 0x74, - 0x49, 0x46, 0x39, 0x29, 0xae, 0xe8, 0x01, 0x5c, 0x49, 0xf2, 0x3a, 0x6d, 0xf1, 0x33, 0x89, 0xbd, - 0x16, 0x27, 0x76, 0x2a, 0x17, 0x99, 0x8d, 0x1e, 0xc2, 0xb5, 0x18, 0x3b, 0x13, 0xd7, 0x31, 0x3c, - 0x2b, 0xe0, 0x31, 0xff, 0xf4, 0xcb, 0xa8, 0xd2, 0xf0, 0x6b, 0x06, 0x72, 0xbc, 0x50, 0xa3, 0x2b, - 0x50, 0x12, 0xb6, 0xf2, 0xae, 0x2d, 0x6b, 0x42, 0x51, 0xec, 0xbb, 0xf6, 0x87, 0xfb, 0xfd, 0x96, - 0x0a, 0x93, 0xac, 0x08, 0x93, 0xcd, 0xf3, 0x36, 0x85, 0xe9, 0xa0, 0x98, 0x0d, 0xe5, 0xdc, 0xa7, - 0x86, 0xf2, 0xfa, 0x93, 0x8f, 0x3e, 0xf4, 0x2a, 0x2c, 0xef, 0x74, 0xba, 0xfb, 0xbb, 0xe6, 0x7e, - 0xb7, 0xf7, 0xa4, 0xbd, 0x6b, 0x0e, 0xfa, 0x5b, 0xbd, 0x9a, 0x86, 0x2e, 0x03, 0xea, 0x6f, 0x19, - 0xed, 0xde, 0x70, 0xe6, 0x3c, 0xd3, 0x88, 0x20, 0x2f, 0x9a, 0x18, 0xfa, 0x1a, 0x72, 0xbc, 0x8d, - 0xa9, 0xa7, 0xde, 0x38, 0xaf, 0xa3, 0x86, 0x40, 0x21, 0x1d, 0x2e, 0xc5, 0x8f, 0x24, 0x9a, 0xe1, - 0xcc, 0xd3, 0x2e, 0x2b, 0x91, 0xf8, 0x90, 0x78, 0x93, 0xf5, 0x37, 0x1a, 0x2c, 0xcd, 0x16, 0x57, - 0xf4, 0x14, 0xaa, 0x54, 0x14, 0x02, 0x53, 0x56, 0xe8, 0x39, 0xcb, 0x48, 0x67, 0xc1, 0xa8, 0x48, - 0x1e, 0x49, 0x7b, 0x1d, 0xca, 0x8e, 0xc7, 0xcc, 0xb4, 0xea, 0x67, 0x3b, 0x0b, 0x46, 0xc9, 0xf1, - 0x98, 0x14, 0xdf, 0x00, 0x18, 0xf9, 0xbe, 0xab, 0xe4, 0xfc, 0x95, 0x4b, 0x9d, 0x05, 0xa3, 0x3c, - 0x8a, 0x1b, 0x6d, 0x92, 0x20, 0xeb, 0x7f, 0x14, 0x00, 0xd2, 0x59, 0x04, 0x3d, 0xe3, 0xe6, 0xf2, - 0x59, 0xe6, 0x28, 0xc4, 0x13, 0x42, 0x95, 0xb9, 0xf7, 0xce, 0x3d, 0xcc, 0xc8, 0xe5, 0x9e, 0x00, - 0x1b, 0x72, 0x2c, 0x92, 0x1b, 0xb4, 0x09, 0x97, 0xa6, 0xa6, 0x24, 0xf3, 0x18, 0xd3, 0x63, 0x33, - 0xa9, 0x2a, 0xb5, 0x74, 0x04, 0xea, 0x60, 0x7a, 0xdc, 0xb5, 0x1b, 0x3f, 0xe5, 0x94, 0x5d, 0x02, - 0x8e, 0x9e, 0xc2, 0xe2, 0x51, 0xe4, 0x59, 0x3c, 0x81, 0xcc, 0x64, 0xac, 0x9d, 0xa7, 0x1c, 0x57, - 0x63, 0x1a, 0x31, 0x7c, 0x1e, 0xc1, 0x65, 0x3f, 0x74, 0xc6, 0x8e, 0x87, 0x5d, 0x73, 0x96, 0x3f, - 0x33, 0x27, 0xff, 0x4a, 0xcc, 0xb7, 0x37, 0xfd, 0x9d, 0x03, 0x28, 0x1f, 0x39, 0x2e, 0x91, 0xd4, - 0xd9, 0x39, 0xa9, 0x4b, 0x9c, 0x42, 0xd0, 0xdd, 0x80, 0x8a, 0xeb, 0x78, 0xc4, 0xf4, 0xa2, 0xc9, - 0x88, 0x84, 0xaa, 0x7c, 0x02, 0x3f, 0xea, 0x89, 0x13, 0xf4, 0x3f, 0x58, 0xb4, 0x7c, 0x37, 0x9a, - 0x78, 0xb1, 0x4a, 0x5e, 0xa8, 0x54, 0xe5, 0xa1, 0x52, 0xda, 0x83, 0x8a, 0xeb, 0x63, 0xdb, 0x9c, - 0xf8, 0x76, 0xe4, 0xc6, 0x13, 0xf4, 0x67, 0x67, 0x98, 0x75, 0x20, 0x94, 0x0d, 0xe0, 0x48, 0xb9, - 0x46, 0xdf, 0xc1, 0x12, 0xf5, 0xa3, 0xd0, 0x22, 0xe6, 0x09, 0x09, 0x29, 0xef, 0x95, 0xc5, 0x39, - 0x3d, 0x5c, 0x94, 0x3c, 0x87, 0x92, 0xa6, 0xf1, 0xb3, 0x06, 0x95, 0xa9, 0x78, 0x42, 0x8f, 0x21, - 0x2f, 0xc2, 0x52, 0x65, 0xf3, 0xdd, 0x79, 0xa2, 0xd2, 0x90, 0x14, 0xe8, 0x36, 0xac, 0xc4, 0xa9, - 0x2d, 0x43, 0x7d, 0x26, 0xb7, 0x91, 0x92, 0xc9, 0x0f, 0xcb, 0xe4, 0xfe, 0x5d, 0x83, 0x82, 0xf2, - 0xb8, 0x03, 0x05, 0x75, 0x69, 0xf3, 0x86, 0xa1, 0xc2, 0xa3, 0x27, 0x50, 0x1a, 0x45, 0x7c, 0xae, - 0x55, 0xa9, 0x30, 0x0f, 0x57, 0x51, 0x30, 0x74, 0xed, 0xf5, 0x1f, 0x60, 0xf9, 0x1d, 0x29, 0x5a, - 0x89, 0x67, 0x43, 0xd9, 0x1b, 0xe4, 0x86, 0xbb, 0xcf, 0xa4, 0x2a, 0xb1, 0x45, 0x13, 0x9e, 0x75, - 0x3f, 0x91, 0xf1, 0x26, 0x2c, 0xdc, 0xdf, 0x7e, 0xad, 0xc1, 0x7f, 0x2d, 0x7f, 0xf2, 0x71, 0xeb, - 0xb6, 0x41, 0xdc, 0x77, 0x9f, 0x4f, 0x88, 0x7d, 0xed, 0xf9, 0x23, 0xa5, 0x3c, 0xf6, 0x5d, 0xec, - 0x8d, 0x75, 0x3f, 0x1c, 0x37, 0xc7, 0xc4, 0x13, 0xf3, 0x63, 0x53, 0x8a, 0x70, 0xe0, 0xd0, 0x0f, - 0xfc, 0x6d, 0x7f, 0x95, 0xee, 0x5e, 0x67, 0x56, 0x1f, 0x49, 0xa6, 0x1d, 0x7e, 0xa6, 0xcb, 0x47, - 0x3d, 0x6c, 0xfd, 0x19, 0x9f, 0xbf, 0x10, 0xe7, 0x2f, 0xc4, 0xf9, 0x8b, 0xc3, 0xd6, 0xa8, 0x20, - 0xbe, 0x71, 0xe7, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7b, 0x3c, 0x8a, 0x77, 0xd0, 0x0f, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v2/tracing.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v2/tracing.pb.go deleted file mode 100644 index 889400e3..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/cloudtrace/v2/tracing.pb.go +++ /dev/null @@ -1,197 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/cloudtrace/v2/tracing.proto - -package cloudtrace - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/empty" -import _ "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The request message for the `BatchWriteSpans` method. -type BatchWriteSpansRequest struct { - // Required. The name of the project where the spans belong. The format is - // `projects/[PROJECT_ID]`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A list of new spans. The span names must not match existing - // spans, or the results are undefined. - Spans []*Span `protobuf:"bytes,2,rep,name=spans" json:"spans,omitempty"` -} - -func (m *BatchWriteSpansRequest) Reset() { *m = BatchWriteSpansRequest{} } -func (m *BatchWriteSpansRequest) String() string { return proto.CompactTextString(m) } -func (*BatchWriteSpansRequest) ProtoMessage() {} -func (*BatchWriteSpansRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *BatchWriteSpansRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *BatchWriteSpansRequest) GetSpans() []*Span { - if m != nil { - return m.Spans - } - return nil -} - -func init() { - proto.RegisterType((*BatchWriteSpansRequest)(nil), "google.devtools.cloudtrace.v2.BatchWriteSpansRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for TraceService service - -type TraceServiceClient interface { - // Sends new spans to new or existing traces. You cannot update - // existing spans. - BatchWriteSpans(ctx context.Context, in *BatchWriteSpansRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Creates a new span. - CreateSpan(ctx context.Context, in *Span, opts ...grpc.CallOption) (*Span, error) -} - -type traceServiceClient struct { - cc *grpc.ClientConn -} - -func NewTraceServiceClient(cc *grpc.ClientConn) TraceServiceClient { - return &traceServiceClient{cc} -} - -func (c *traceServiceClient) BatchWriteSpans(ctx context.Context, in *BatchWriteSpansRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.devtools.cloudtrace.v2.TraceService/BatchWriteSpans", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *traceServiceClient) CreateSpan(ctx context.Context, in *Span, opts ...grpc.CallOption) (*Span, error) { - out := new(Span) - err := grpc.Invoke(ctx, "/google.devtools.cloudtrace.v2.TraceService/CreateSpan", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for TraceService service - -type TraceServiceServer interface { - // Sends new spans to new or existing traces. You cannot update - // existing spans. - BatchWriteSpans(context.Context, *BatchWriteSpansRequest) (*google_protobuf4.Empty, error) - // Creates a new span. - CreateSpan(context.Context, *Span) (*Span, error) -} - -func RegisterTraceServiceServer(s *grpc.Server, srv TraceServiceServer) { - s.RegisterService(&_TraceService_serviceDesc, srv) -} - -func _TraceService_BatchWriteSpans_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchWriteSpansRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TraceServiceServer).BatchWriteSpans(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudtrace.v2.TraceService/BatchWriteSpans", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TraceServiceServer).BatchWriteSpans(ctx, req.(*BatchWriteSpansRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TraceService_CreateSpan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Span) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TraceServiceServer).CreateSpan(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.cloudtrace.v2.TraceService/CreateSpan", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TraceServiceServer).CreateSpan(ctx, req.(*Span)) - } - return interceptor(ctx, in, info, handler) -} - -var _TraceService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.cloudtrace.v2.TraceService", - HandlerType: (*TraceServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "BatchWriteSpans", - Handler: _TraceService_BatchWriteSpans_Handler, - }, - { - MethodName: "CreateSpan", - Handler: _TraceService_CreateSpan_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/cloudtrace/v2/tracing.proto", -} - -func init() { proto.RegisterFile("google/devtools/cloudtrace/v2/tracing.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 404 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x52, 0xdd, 0x6a, 0xdb, 0x30, - 0x14, 0x46, 0xde, 0x0f, 0x4c, 0x1b, 0x0c, 0x04, 0x0b, 0xc1, 0xdb, 0x58, 0xe6, 0x0d, 0x96, 0x64, - 0x43, 0x02, 0x8f, 0x5d, 0x2c, 0x63, 0x37, 0x09, 0x23, 0xb7, 0x21, 0x19, 0x19, 0x8c, 0xdc, 0x28, - 0x8e, 0xa6, 0x69, 0xd8, 0x92, 0x67, 0x29, 0x86, 0x52, 0x7a, 0xd3, 0x9b, 0x3e, 0x40, 0xfb, 0x14, - 0xa5, 0xd0, 0xf7, 0xe8, 0x6d, 0x5f, 0xa1, 0x0f, 0x52, 0x24, 0xd9, 0x0d, 0x84, 0x34, 0xc9, 0x9d, - 0xce, 0x39, 0xdf, 0xf9, 0xce, 0xf7, 0x7d, 0x36, 0xfc, 0xc8, 0x95, 0xe2, 0x29, 0x23, 0x0b, 0x56, - 0x1a, 0xa5, 0x52, 0x4d, 0x92, 0x54, 0x2d, 0x17, 0xa6, 0xa0, 0x09, 0x23, 0x65, 0x4c, 0xec, 0x43, - 0x48, 0x8e, 0xf3, 0x42, 0x19, 0x85, 0x5e, 0x7b, 0x30, 0xae, 0xc1, 0x78, 0x05, 0xc6, 0x65, 0x1c, - 0xbe, 0xaa, 0xb8, 0x68, 0x2e, 0x08, 0x95, 0x52, 0x19, 0x6a, 0x84, 0x92, 0xda, 0x2f, 0x87, 0x9d, - 0xdd, 0x97, 0x58, 0x05, 0x7d, 0x59, 0x41, 0x5d, 0x35, 0x5f, 0xfe, 0x21, 0x2c, 0xcb, 0xcd, 0x41, - 0x35, 0x7c, 0xb3, 0x3e, 0x34, 0x22, 0x63, 0xda, 0xd0, 0x2c, 0xf7, 0x80, 0x88, 0xc3, 0x46, 0x9f, - 0x9a, 0xe4, 0xef, 0xaf, 0x42, 0x18, 0x36, 0xc9, 0xa9, 0xd4, 0x63, 0xf6, 0x7f, 0xc9, 0xb4, 0x41, - 0x08, 0x3e, 0x94, 0x34, 0x63, 0x4d, 0xd0, 0x02, 0xed, 0x27, 0x63, 0xf7, 0x46, 0x5f, 0xe1, 0x23, - 0x6d, 0x31, 0xcd, 0xa0, 0xf5, 0xa0, 0xfd, 0x34, 0x7e, 0x87, 0xb7, 0x7a, 0xc4, 0x96, 0x6f, 0xec, - 0x37, 0xe2, 0xcb, 0x00, 0x3e, 0xfb, 0x69, 0x07, 0x13, 0x56, 0x94, 0x22, 0x61, 0xe8, 0x0c, 0xc0, - 0xe7, 0x6b, 0xa7, 0xd1, 0x97, 0x1d, 0x84, 0x9b, 0xa5, 0x86, 0x8d, 0x7a, 0xad, 0xb6, 0x89, 0x7f, - 0xd8, 0x0c, 0xa2, 0xf8, 0xf8, 0xfa, 0xe6, 0x34, 0xf8, 0x14, 0x7d, 0xb0, 0x99, 0x1d, 0x5a, 0x07, - 0xdf, 0xf3, 0x42, 0xfd, 0x63, 0x89, 0xd1, 0xa4, 0x7b, 0xe4, 0x53, 0xd4, 0xbd, 0xf9, 0x1d, 0x69, - 0x0f, 0x74, 0xd1, 0x09, 0x80, 0x70, 0x50, 0x30, 0xea, 0x4f, 0xa0, 0x7d, 0x2c, 0x86, 0xfb, 0x80, - 0x22, 0xe2, 0xc4, 0x74, 0xa2, 0xf7, 0x9b, 0xc4, 0x54, 0x5a, 0xac, 0x2a, 0x17, 0x57, 0x0f, 0x74, - 0xfb, 0x17, 0x00, 0xbe, 0x4d, 0x54, 0xb6, 0x9d, 0xbb, 0xef, 0x42, 0x15, 0x92, 0x8f, 0xac, 0xf5, - 0x11, 0xf8, 0x3d, 0xac, 0xe0, 0x5c, 0xa5, 0x54, 0x72, 0xac, 0x0a, 0x4e, 0x38, 0x93, 0x2e, 0x18, - 0xe2, 0x47, 0x34, 0x17, 0xfa, 0x9e, 0x1f, 0xeb, 0xdb, 0xaa, 0x3a, 0x0f, 0x5e, 0x0c, 0x3d, 0xd3, - 0xc0, 0xf6, 0xb0, 0xfb, 0x76, 0x78, 0x1a, 0x5f, 0xd5, 0xfd, 0x99, 0xeb, 0xcf, 0x5c, 0x7f, 0x36, - 0x8d, 0xe7, 0x8f, 0xdd, 0x8d, 0xcf, 0xb7, 0x01, 0x00, 0x00, 0xff, 0xff, 0xbd, 0x94, 0x51, 0x1d, - 0x25, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/bill_of_materials.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/bill_of_materials.pb.go deleted file mode 100644 index 9773761d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/bill_of_materials.pb.go +++ /dev/null @@ -1,329 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto - -/* -Package containeranalysis is a generated protocol buffer package. - -It is generated from these files: - google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto - google/devtools/containeranalysis/v1alpha1/containeranalysis.proto - google/devtools/containeranalysis/v1alpha1/image_basis.proto - google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto - google/devtools/containeranalysis/v1alpha1/provenance.proto - google/devtools/containeranalysis/v1alpha1/source_context.proto - -It has these top-level messages: - PackageManager - Occurrence - Note - Deployable - Discovery - BuildType - BuildSignature - BuildDetails - GetOccurrenceRequest - ListOccurrencesRequest - ListOccurrencesResponse - DeleteOccurrenceRequest - CreateOccurrenceRequest - UpdateOccurrenceRequest - GetNoteRequest - GetOccurrenceNoteRequest - ListNotesRequest - ListNotesResponse - DeleteNoteRequest - CreateNoteRequest - UpdateNoteRequest - ListNoteOccurrencesRequest - ListNoteOccurrencesResponse - OperationMetadata - GetVulnzOccurrencesSummaryRequest - GetVulnzOccurrencesSummaryResponse - DockerImage - VulnerabilityType - BuildProvenance - Source - FileHashes - Hash - StorageSource - RepoSource - Command - Artifact - SourceContext - AliasContext - CloudRepoSourceContext - GerritSourceContext - GitSourceContext - RepoId - ProjectRepoId -*/ -package containeranalysis - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Instruction set architectures supported by various package managers. -type PackageManager_Architecture int32 - -const ( - // Unknown architecture - PackageManager_ARCHITECTURE_UNSPECIFIED PackageManager_Architecture = 0 - // X86 architecture - PackageManager_X86 PackageManager_Architecture = 1 - // X64 architecture - PackageManager_X64 PackageManager_Architecture = 2 -) - -var PackageManager_Architecture_name = map[int32]string{ - 0: "ARCHITECTURE_UNSPECIFIED", - 1: "X86", - 2: "X64", -} -var PackageManager_Architecture_value = map[string]int32{ - "ARCHITECTURE_UNSPECIFIED": 0, - "X86": 1, - "X64": 2, -} - -func (x PackageManager_Architecture) String() string { - return proto.EnumName(PackageManager_Architecture_name, int32(x)) -} -func (PackageManager_Architecture) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 0} -} - -// PackageManager provides metadata about available / installed packages. -type PackageManager struct { -} - -func (m *PackageManager) Reset() { *m = PackageManager{} } -func (m *PackageManager) String() string { return proto.CompactTextString(m) } -func (*PackageManager) ProtoMessage() {} -func (*PackageManager) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// This represents a particular channel of distribution for a given package. -// e.g. Debian's jessie-backports dpkg mirror -type PackageManager_Distribution struct { - // The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) - // denoting the package manager version distributing a package. - CpeUri string `protobuf:"bytes,1,opt,name=cpe_uri,json=cpeUri" json:"cpe_uri,omitempty"` - // The CPU architecture for which packages in this distribution - // channel were built - Architecture PackageManager_Architecture `protobuf:"varint,2,opt,name=architecture,enum=google.devtools.containeranalysis.v1alpha1.PackageManager_Architecture" json:"architecture,omitempty"` - // The latest available version of this package in - // this distribution channel. - LatestVersion *VulnerabilityType_Version `protobuf:"bytes,3,opt,name=latest_version,json=latestVersion" json:"latest_version,omitempty"` - // A freeform string denoting the maintainer of this package. - Maintainer string `protobuf:"bytes,4,opt,name=maintainer" json:"maintainer,omitempty"` - // The distribution channel-specific homepage for this package. - Url string `protobuf:"bytes,6,opt,name=url" json:"url,omitempty"` - // The distribution channel-specific description of this package. - Description string `protobuf:"bytes,7,opt,name=description" json:"description,omitempty"` -} - -func (m *PackageManager_Distribution) Reset() { *m = PackageManager_Distribution{} } -func (m *PackageManager_Distribution) String() string { return proto.CompactTextString(m) } -func (*PackageManager_Distribution) ProtoMessage() {} -func (*PackageManager_Distribution) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -func (m *PackageManager_Distribution) GetCpeUri() string { - if m != nil { - return m.CpeUri - } - return "" -} - -func (m *PackageManager_Distribution) GetArchitecture() PackageManager_Architecture { - if m != nil { - return m.Architecture - } - return PackageManager_ARCHITECTURE_UNSPECIFIED -} - -func (m *PackageManager_Distribution) GetLatestVersion() *VulnerabilityType_Version { - if m != nil { - return m.LatestVersion - } - return nil -} - -func (m *PackageManager_Distribution) GetMaintainer() string { - if m != nil { - return m.Maintainer - } - return "" -} - -func (m *PackageManager_Distribution) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *PackageManager_Distribution) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// An occurrence of a particular package installation found within a -// system's filesystem. -// e.g. glibc was found in /var/lib/dpkg/status -type PackageManager_Location struct { - // The cpe_uri in [cpe format](https://cpe.mitre.org/specification/) - // denoting the package manager version distributing a package. - CpeUri string `protobuf:"bytes,1,opt,name=cpe_uri,json=cpeUri" json:"cpe_uri,omitempty"` - // The version installed at this location. - Version *VulnerabilityType_Version `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` - // The path from which we gathered that this package/version is installed. - Path string `protobuf:"bytes,3,opt,name=path" json:"path,omitempty"` -} - -func (m *PackageManager_Location) Reset() { *m = PackageManager_Location{} } -func (m *PackageManager_Location) String() string { return proto.CompactTextString(m) } -func (*PackageManager_Location) ProtoMessage() {} -func (*PackageManager_Location) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 1} } - -func (m *PackageManager_Location) GetCpeUri() string { - if m != nil { - return m.CpeUri - } - return "" -} - -func (m *PackageManager_Location) GetVersion() *VulnerabilityType_Version { - if m != nil { - return m.Version - } - return nil -} - -func (m *PackageManager_Location) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -// This represents a particular package that is distributed over -// various channels. -// e.g. glibc (aka libc6) is distributed by many, at various versions. -type PackageManager_Package struct { - // The name of the package. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The various channels by which a package is distributed. - Distribution []*PackageManager_Distribution `protobuf:"bytes,10,rep,name=distribution" json:"distribution,omitempty"` -} - -func (m *PackageManager_Package) Reset() { *m = PackageManager_Package{} } -func (m *PackageManager_Package) String() string { return proto.CompactTextString(m) } -func (*PackageManager_Package) ProtoMessage() {} -func (*PackageManager_Package) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 2} } - -func (m *PackageManager_Package) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *PackageManager_Package) GetDistribution() []*PackageManager_Distribution { - if m != nil { - return m.Distribution - } - return nil -} - -// This represents how a particular software package may be installed on -// a system. -type PackageManager_Installation struct { - // Output only. The name of the installed package. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // All of the places within the filesystem versions of this package - // have been found. - Location []*PackageManager_Location `protobuf:"bytes,2,rep,name=location" json:"location,omitempty"` -} - -func (m *PackageManager_Installation) Reset() { *m = PackageManager_Installation{} } -func (m *PackageManager_Installation) String() string { return proto.CompactTextString(m) } -func (*PackageManager_Installation) ProtoMessage() {} -func (*PackageManager_Installation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 3} } - -func (m *PackageManager_Installation) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *PackageManager_Installation) GetLocation() []*PackageManager_Location { - if m != nil { - return m.Location - } - return nil -} - -func init() { - proto.RegisterType((*PackageManager)(nil), "google.devtools.containeranalysis.v1alpha1.PackageManager") - proto.RegisterType((*PackageManager_Distribution)(nil), "google.devtools.containeranalysis.v1alpha1.PackageManager.Distribution") - proto.RegisterType((*PackageManager_Location)(nil), "google.devtools.containeranalysis.v1alpha1.PackageManager.Location") - proto.RegisterType((*PackageManager_Package)(nil), "google.devtools.containeranalysis.v1alpha1.PackageManager.Package") - proto.RegisterType((*PackageManager_Installation)(nil), "google.devtools.containeranalysis.v1alpha1.PackageManager.Installation") - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.PackageManager_Architecture", PackageManager_Architecture_name, PackageManager_Architecture_value) -} - -func init() { - proto.RegisterFile("google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 522 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x93, 0xd1, 0x8a, 0xd3, 0x4e, - 0x14, 0xc6, 0xff, 0x49, 0x97, 0x76, 0xf7, 0xb4, 0xff, 0x52, 0xe6, 0xc6, 0x10, 0x16, 0x29, 0x0b, - 0x42, 0xf1, 0x22, 0x61, 0x57, 0x59, 0x04, 0x41, 0xe8, 0x76, 0xbb, 0x6b, 0x41, 0xa5, 0xc4, 0x76, - 0x11, 0xbd, 0x08, 0xa7, 0xe9, 0x98, 0x0e, 0x3b, 0x9d, 0x09, 0x93, 0x49, 0xa1, 0xd7, 0xde, 0x89, - 0x0f, 0xe0, 0xb5, 0x0f, 0xa5, 0xaf, 0x23, 0x99, 0x24, 0x92, 0xb2, 0x2a, 0xbb, 0xac, 0x77, 0x27, - 0xf3, 0x85, 0xdf, 0xf9, 0xce, 0x77, 0x66, 0xe0, 0x2c, 0x96, 0x32, 0xe6, 0xd4, 0x5f, 0xd2, 0x8d, - 0x96, 0x92, 0xa7, 0x7e, 0x24, 0x85, 0x46, 0x26, 0xa8, 0x42, 0x81, 0x7c, 0x9b, 0xb2, 0xd4, 0xdf, - 0x1c, 0x23, 0x4f, 0x56, 0x78, 0xec, 0x2f, 0x18, 0xe7, 0xa1, 0xfc, 0x18, 0xae, 0x51, 0x53, 0xc5, - 0x90, 0xa7, 0x5e, 0xa2, 0xa4, 0x96, 0xe4, 0x71, 0xc1, 0xf0, 0x2a, 0x86, 0x77, 0x83, 0xe1, 0x55, - 0x0c, 0xf7, 0xb0, 0xec, 0x87, 0x09, 0xf3, 0x51, 0x08, 0xa9, 0x51, 0x33, 0x29, 0x4a, 0x92, 0x7b, - 0x71, 0x07, 0x37, 0x09, 0x46, 0xd7, 0x18, 0xd3, 0x70, 0x93, 0xf1, 0x5c, 0x5f, 0x30, 0xce, 0xf4, - 0xb6, 0xe0, 0x1c, 0xfd, 0x68, 0x42, 0x77, 0x5a, 0xe8, 0xaf, 0x51, 0x60, 0x4c, 0x95, 0xfb, 0xdd, - 0x86, 0xce, 0x39, 0x4b, 0xb5, 0x62, 0x8b, 0x2c, 0x6f, 0x49, 0x1e, 0x40, 0x2b, 0x4a, 0x68, 0x98, - 0x29, 0xe6, 0x58, 0x7d, 0x6b, 0x70, 0x10, 0x34, 0xa3, 0x84, 0xce, 0x15, 0x23, 0xd7, 0xd0, 0x41, - 0x15, 0xad, 0x98, 0xa6, 0x91, 0xce, 0x14, 0x75, 0xec, 0xbe, 0x35, 0xe8, 0x9e, 0x5c, 0x7a, 0xb7, - 0x9f, 0xd2, 0xdb, 0xed, 0xed, 0x0d, 0x6b, 0xb8, 0x60, 0x07, 0x4e, 0x38, 0x74, 0x39, 0x6a, 0x9a, - 0xea, 0x70, 0x43, 0x55, 0xca, 0xa4, 0x70, 0x1a, 0x7d, 0x6b, 0xd0, 0x3e, 0x19, 0xdf, 0xa5, 0xdd, - 0x55, 0x3d, 0x82, 0xd9, 0x36, 0xa1, 0xde, 0x55, 0x01, 0x0b, 0xfe, 0x2f, 0xe0, 0xe5, 0x27, 0x79, - 0x08, 0xb0, 0x46, 0x56, 0x72, 0x9c, 0x3d, 0x33, 0x76, 0xed, 0x84, 0xf4, 0xa0, 0x91, 0x29, 0xee, - 0x34, 0x8d, 0x90, 0x97, 0xa4, 0x0f, 0xed, 0x25, 0x4d, 0x23, 0xc5, 0x92, 0x3c, 0x34, 0xa7, 0x65, - 0x94, 0xfa, 0x91, 0xfb, 0xd5, 0x82, 0xfd, 0x57, 0x32, 0xc2, 0xbf, 0x87, 0x1a, 0x42, 0xab, 0x1a, - 0xd0, 0xfe, 0x97, 0x03, 0x56, 0x54, 0x42, 0x60, 0x2f, 0x41, 0xbd, 0x32, 0xf1, 0x1d, 0x04, 0xa6, - 0x76, 0x3f, 0x5b, 0xd0, 0x2a, 0x57, 0x91, 0xeb, 0x02, 0xd7, 0xb4, 0xb4, 0x65, 0xea, 0x7c, 0xd3, - 0xcb, 0xda, 0x95, 0x70, 0xa0, 0xdf, 0x18, 0xb4, 0xef, 0xb5, 0xe9, 0xfa, 0x0d, 0x0b, 0x76, 0xe0, - 0xee, 0x27, 0x0b, 0x3a, 0x13, 0x91, 0x6a, 0xe4, 0xbc, 0xc8, 0xea, 0x77, 0x8e, 0x42, 0xd8, 0xe7, - 0x65, 0x96, 0x8e, 0x6d, 0xdc, 0x8c, 0xee, 0xe1, 0xa6, 0x5a, 0x4b, 0xf0, 0x0b, 0x7a, 0xf4, 0x02, - 0x3a, 0xf5, 0xdb, 0x48, 0x0e, 0xc1, 0x19, 0x06, 0xa3, 0x97, 0x93, 0xd9, 0x78, 0x34, 0x9b, 0x07, - 0xe3, 0x70, 0xfe, 0xe6, 0xed, 0x74, 0x3c, 0x9a, 0x5c, 0x4c, 0xc6, 0xe7, 0xbd, 0xff, 0x48, 0x0b, - 0x1a, 0xef, 0x9e, 0x9d, 0xf6, 0x2c, 0x53, 0x9c, 0x3e, 0xed, 0xd9, 0x67, 0x5f, 0x2c, 0x78, 0x14, - 0xc9, 0x75, 0x65, 0xea, 0xcf, 0x5e, 0xa6, 0xd6, 0xfb, 0x0f, 0xe5, 0x4f, 0xb1, 0xe4, 0x28, 0x62, - 0x4f, 0xaa, 0xd8, 0x8f, 0xa9, 0x30, 0x2f, 0xd4, 0x2f, 0x24, 0x4c, 0x58, 0x7a, 0x9b, 0xc7, 0xfe, - 0xfc, 0x86, 0xf4, 0xcd, 0x6e, 0x5c, 0x8e, 0x86, 0x8b, 0xa6, 0xa1, 0x3d, 0xf9, 0x19, 0x00, 0x00, - 0xff, 0xff, 0xfa, 0x4f, 0xa4, 0x56, 0xc7, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/containeranalysis.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/containeranalysis.pb.go deleted file mode 100644 index 5c051b34..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/containeranalysis.pb.go +++ /dev/null @@ -1,2526 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/containeranalysis/v1alpha1/containeranalysis.proto - -package containeranalysis - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/any" -import google_protobuf3 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf4 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This must be 1:1 with members of our oneofs, it can be used for filtering -// Note and Occurrence on their kind. -type Note_Kind int32 - -const ( - // Unknown - Note_KIND_UNSPECIFIED Note_Kind = 0 - // The note and occurrence represent a package vulnerability. - Note_PACKAGE_VULNERABILITY Note_Kind = 2 - // The note and occurrence assert build provenance. - Note_BUILD_DETAILS Note_Kind = 3 - // This represents an image basis relationship. - Note_IMAGE_BASIS Note_Kind = 4 - // This represents a package installed via a package manager. - Note_PACKAGE_MANAGER Note_Kind = 5 - // The note and occurrence track deployment events. - Note_DEPLOYABLE Note_Kind = 6 - // The note and occurrence track the initial discovery status of a resource. - Note_DISCOVERY Note_Kind = 7 -) - -var Note_Kind_name = map[int32]string{ - 0: "KIND_UNSPECIFIED", - 2: "PACKAGE_VULNERABILITY", - 3: "BUILD_DETAILS", - 4: "IMAGE_BASIS", - 5: "PACKAGE_MANAGER", - 6: "DEPLOYABLE", - 7: "DISCOVERY", -} -var Note_Kind_value = map[string]int32{ - "KIND_UNSPECIFIED": 0, - "PACKAGE_VULNERABILITY": 2, - "BUILD_DETAILS": 3, - "IMAGE_BASIS": 4, - "PACKAGE_MANAGER": 5, - "DEPLOYABLE": 6, - "DISCOVERY": 7, -} - -func (x Note_Kind) String() string { - return proto.EnumName(Note_Kind_name, int32(x)) -} -func (Note_Kind) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } - -// Types of platforms. -type Deployable_Deployment_Platform int32 - -const ( - // Unknown - Deployable_Deployment_PLATFORM_UNSPECIFIED Deployable_Deployment_Platform = 0 - // Google Container Engine - Deployable_Deployment_GKE Deployable_Deployment_Platform = 1 - // Google App Engine: Flexible Environment - Deployable_Deployment_FLEX Deployable_Deployment_Platform = 2 - // Custom user-defined platform - Deployable_Deployment_CUSTOM Deployable_Deployment_Platform = 3 -) - -var Deployable_Deployment_Platform_name = map[int32]string{ - 0: "PLATFORM_UNSPECIFIED", - 1: "GKE", - 2: "FLEX", - 3: "CUSTOM", -} -var Deployable_Deployment_Platform_value = map[string]int32{ - "PLATFORM_UNSPECIFIED": 0, - "GKE": 1, - "FLEX": 2, - "CUSTOM": 3, -} - -func (x Deployable_Deployment_Platform) String() string { - return proto.EnumName(Deployable_Deployment_Platform_name, int32(x)) -} -func (Deployable_Deployment_Platform) EnumDescriptor() ([]byte, []int) { - return fileDescriptor1, []int{2, 0, 0} -} - -// Public key formats -type BuildSignature_KeyType int32 - -const ( - // `KeyType` is not set. - BuildSignature_KEY_TYPE_UNSPECIFIED BuildSignature_KeyType = 0 - // `PGP ASCII Armored` public key. - BuildSignature_PGP_ASCII_ARMORED BuildSignature_KeyType = 1 - // `PKIX PEM` public key. - BuildSignature_PKIX_PEM BuildSignature_KeyType = 2 -) - -var BuildSignature_KeyType_name = map[int32]string{ - 0: "KEY_TYPE_UNSPECIFIED", - 1: "PGP_ASCII_ARMORED", - 2: "PKIX_PEM", -} -var BuildSignature_KeyType_value = map[string]int32{ - "KEY_TYPE_UNSPECIFIED": 0, - "PGP_ASCII_ARMORED": 1, - "PKIX_PEM": 2, -} - -func (x BuildSignature_KeyType) String() string { - return proto.EnumName(BuildSignature_KeyType_name, int32(x)) -} -func (BuildSignature_KeyType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{5, 0} } - -// `Occurrence` includes information about analysis occurrences for an image. -type Occurrence struct { - // Output only. The name of the `Occurrence` in the form - // "projects/{project_id}/occurrences/{OCCURRENCE_ID}" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The unique URL of the image or the container for which the `Occurrence` - // applies. For example, https://gcr.io/project/image@sha256:foo This field - // can be used as a filter in list requests. - ResourceUrl string `protobuf:"bytes,2,opt,name=resource_url,json=resourceUrl" json:"resource_url,omitempty"` - // An analysis note associated with this image, in the form - // "providers/{provider_id}/notes/{NOTE_ID}" - // This field can be used as a filter in list requests. - NoteName string `protobuf:"bytes,3,opt,name=note_name,json=noteName" json:"note_name,omitempty"` - // Output only. This explicitly denotes which of the `Occurrence` details are - // specified. This field can be used as a filter in list requests. - Kind Note_Kind `protobuf:"varint,6,opt,name=kind,enum=google.devtools.containeranalysis.v1alpha1.Note_Kind" json:"kind,omitempty"` - // Describes the details of the vulnerability `Note` found in this resource. - // - // Types that are valid to be assigned to Details: - // *Occurrence_VulnerabilityDetails - // *Occurrence_BuildDetails - // *Occurrence_DerivedImage - // *Occurrence_Installation - // *Occurrence_Deployment - // *Occurrence_Discovered - Details isOccurrence_Details `protobuf_oneof:"details"` - // A description of actions that can be taken to remedy the `Note` - Remediation string `protobuf:"bytes,5,opt,name=remediation" json:"remediation,omitempty"` - // Output only. The time this `Occurrence` was created. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,9,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. The time this `Occurrence` was last updated. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,10,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *Occurrence) Reset() { *m = Occurrence{} } -func (m *Occurrence) String() string { return proto.CompactTextString(m) } -func (*Occurrence) ProtoMessage() {} -func (*Occurrence) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -type isOccurrence_Details interface { - isOccurrence_Details() -} - -type Occurrence_VulnerabilityDetails struct { - VulnerabilityDetails *VulnerabilityType_VulnerabilityDetails `protobuf:"bytes,8,opt,name=vulnerability_details,json=vulnerabilityDetails,oneof"` -} -type Occurrence_BuildDetails struct { - BuildDetails *BuildDetails `protobuf:"bytes,7,opt,name=build_details,json=buildDetails,oneof"` -} -type Occurrence_DerivedImage struct { - DerivedImage *DockerImage_Derived `protobuf:"bytes,11,opt,name=derived_image,json=derivedImage,oneof"` -} -type Occurrence_Installation struct { - Installation *PackageManager_Installation `protobuf:"bytes,12,opt,name=installation,oneof"` -} -type Occurrence_Deployment struct { - Deployment *Deployable_Deployment `protobuf:"bytes,14,opt,name=deployment,oneof"` -} -type Occurrence_Discovered struct { - Discovered *Discovery_Discovered `protobuf:"bytes,15,opt,name=discovered,oneof"` -} - -func (*Occurrence_VulnerabilityDetails) isOccurrence_Details() {} -func (*Occurrence_BuildDetails) isOccurrence_Details() {} -func (*Occurrence_DerivedImage) isOccurrence_Details() {} -func (*Occurrence_Installation) isOccurrence_Details() {} -func (*Occurrence_Deployment) isOccurrence_Details() {} -func (*Occurrence_Discovered) isOccurrence_Details() {} - -func (m *Occurrence) GetDetails() isOccurrence_Details { - if m != nil { - return m.Details - } - return nil -} - -func (m *Occurrence) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Occurrence) GetResourceUrl() string { - if m != nil { - return m.ResourceUrl - } - return "" -} - -func (m *Occurrence) GetNoteName() string { - if m != nil { - return m.NoteName - } - return "" -} - -func (m *Occurrence) GetKind() Note_Kind { - if m != nil { - return m.Kind - } - return Note_KIND_UNSPECIFIED -} - -func (m *Occurrence) GetVulnerabilityDetails() *VulnerabilityType_VulnerabilityDetails { - if x, ok := m.GetDetails().(*Occurrence_VulnerabilityDetails); ok { - return x.VulnerabilityDetails - } - return nil -} - -func (m *Occurrence) GetBuildDetails() *BuildDetails { - if x, ok := m.GetDetails().(*Occurrence_BuildDetails); ok { - return x.BuildDetails - } - return nil -} - -func (m *Occurrence) GetDerivedImage() *DockerImage_Derived { - if x, ok := m.GetDetails().(*Occurrence_DerivedImage); ok { - return x.DerivedImage - } - return nil -} - -func (m *Occurrence) GetInstallation() *PackageManager_Installation { - if x, ok := m.GetDetails().(*Occurrence_Installation); ok { - return x.Installation - } - return nil -} - -func (m *Occurrence) GetDeployment() *Deployable_Deployment { - if x, ok := m.GetDetails().(*Occurrence_Deployment); ok { - return x.Deployment - } - return nil -} - -func (m *Occurrence) GetDiscovered() *Discovery_Discovered { - if x, ok := m.GetDetails().(*Occurrence_Discovered); ok { - return x.Discovered - } - return nil -} - -func (m *Occurrence) GetRemediation() string { - if m != nil { - return m.Remediation - } - return "" -} - -func (m *Occurrence) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Occurrence) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Occurrence) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Occurrence_OneofMarshaler, _Occurrence_OneofUnmarshaler, _Occurrence_OneofSizer, []interface{}{ - (*Occurrence_VulnerabilityDetails)(nil), - (*Occurrence_BuildDetails)(nil), - (*Occurrence_DerivedImage)(nil), - (*Occurrence_Installation)(nil), - (*Occurrence_Deployment)(nil), - (*Occurrence_Discovered)(nil), - } -} - -func _Occurrence_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Occurrence) - // details - switch x := m.Details.(type) { - case *Occurrence_VulnerabilityDetails: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.VulnerabilityDetails); err != nil { - return err - } - case *Occurrence_BuildDetails: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BuildDetails); err != nil { - return err - } - case *Occurrence_DerivedImage: - b.EncodeVarint(11<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DerivedImage); err != nil { - return err - } - case *Occurrence_Installation: - b.EncodeVarint(12<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Installation); err != nil { - return err - } - case *Occurrence_Deployment: - b.EncodeVarint(14<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Deployment); err != nil { - return err - } - case *Occurrence_Discovered: - b.EncodeVarint(15<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Discovered); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Occurrence.Details has unexpected type %T", x) - } - return nil -} - -func _Occurrence_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Occurrence) - switch tag { - case 8: // details.vulnerability_details - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(VulnerabilityType_VulnerabilityDetails) - err := b.DecodeMessage(msg) - m.Details = &Occurrence_VulnerabilityDetails{msg} - return true, err - case 7: // details.build_details - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BuildDetails) - err := b.DecodeMessage(msg) - m.Details = &Occurrence_BuildDetails{msg} - return true, err - case 11: // details.derived_image - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DockerImage_Derived) - err := b.DecodeMessage(msg) - m.Details = &Occurrence_DerivedImage{msg} - return true, err - case 12: // details.installation - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PackageManager_Installation) - err := b.DecodeMessage(msg) - m.Details = &Occurrence_Installation{msg} - return true, err - case 14: // details.deployment - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Deployable_Deployment) - err := b.DecodeMessage(msg) - m.Details = &Occurrence_Deployment{msg} - return true, err - case 15: // details.discovered - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Discovery_Discovered) - err := b.DecodeMessage(msg) - m.Details = &Occurrence_Discovered{msg} - return true, err - default: - return false, nil - } -} - -func _Occurrence_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Occurrence) - // details - switch x := m.Details.(type) { - case *Occurrence_VulnerabilityDetails: - s := proto.Size(x.VulnerabilityDetails) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Occurrence_BuildDetails: - s := proto.Size(x.BuildDetails) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Occurrence_DerivedImage: - s := proto.Size(x.DerivedImage) - n += proto.SizeVarint(11<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Occurrence_Installation: - s := proto.Size(x.Installation) - n += proto.SizeVarint(12<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Occurrence_Deployment: - s := proto.Size(x.Deployment) - n += proto.SizeVarint(14<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Occurrence_Discovered: - s := proto.Size(x.Discovered) - n += proto.SizeVarint(15<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Provides a detailed description of a `Note`. -type Note struct { - // The name of the note in the form - // "providers/{provider_id}/notes/{NOTE_ID}" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A one sentence description of this `Note`. - ShortDescription string `protobuf:"bytes,3,opt,name=short_description,json=shortDescription" json:"short_description,omitempty"` - // A detailed description of this `Note`. - LongDescription string `protobuf:"bytes,4,opt,name=long_description,json=longDescription" json:"long_description,omitempty"` - // Output only. This explicitly denotes which kind of note is specified. This - // field can be used as a filter in list requests. - Kind Note_Kind `protobuf:"varint,9,opt,name=kind,enum=google.devtools.containeranalysis.v1alpha1.Note_Kind" json:"kind,omitempty"` - // The type of note. - // - // Types that are valid to be assigned to NoteType: - // *Note_VulnerabilityType - // *Note_BuildType - // *Note_BaseImage - // *Note_Package - // *Note_Deployable - // *Note_Discovery - NoteType isNote_NoteType `protobuf_oneof:"note_type"` - // URLs associated with this note - RelatedUrl []*Note_RelatedUrl `protobuf:"bytes,7,rep,name=related_url,json=relatedUrl" json:"related_url,omitempty"` - // Time of expiration for this note, null if note does not expire. - ExpirationTime *google_protobuf1.Timestamp `protobuf:"bytes,10,opt,name=expiration_time,json=expirationTime" json:"expiration_time,omitempty"` - // Output only. The time this note was created. This field can be used as a - // filter in list requests. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,11,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. The time this note was last updated. This field can be used as - // a filter in list requests. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,12,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *Note) Reset() { *m = Note{} } -func (m *Note) String() string { return proto.CompactTextString(m) } -func (*Note) ProtoMessage() {} -func (*Note) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -type isNote_NoteType interface { - isNote_NoteType() -} - -type Note_VulnerabilityType struct { - VulnerabilityType *VulnerabilityType `protobuf:"bytes,6,opt,name=vulnerability_type,json=vulnerabilityType,oneof"` -} -type Note_BuildType struct { - BuildType *BuildType `protobuf:"bytes,8,opt,name=build_type,json=buildType,oneof"` -} -type Note_BaseImage struct { - BaseImage *DockerImage_Basis `protobuf:"bytes,13,opt,name=base_image,json=baseImage,oneof"` -} -type Note_Package struct { - Package *PackageManager_Package `protobuf:"bytes,14,opt,name=package,oneof"` -} -type Note_Deployable struct { - Deployable *Deployable `protobuf:"bytes,17,opt,name=deployable,oneof"` -} -type Note_Discovery struct { - Discovery *Discovery `protobuf:"bytes,18,opt,name=discovery,oneof"` -} - -func (*Note_VulnerabilityType) isNote_NoteType() {} -func (*Note_BuildType) isNote_NoteType() {} -func (*Note_BaseImage) isNote_NoteType() {} -func (*Note_Package) isNote_NoteType() {} -func (*Note_Deployable) isNote_NoteType() {} -func (*Note_Discovery) isNote_NoteType() {} - -func (m *Note) GetNoteType() isNote_NoteType { - if m != nil { - return m.NoteType - } - return nil -} - -func (m *Note) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Note) GetShortDescription() string { - if m != nil { - return m.ShortDescription - } - return "" -} - -func (m *Note) GetLongDescription() string { - if m != nil { - return m.LongDescription - } - return "" -} - -func (m *Note) GetKind() Note_Kind { - if m != nil { - return m.Kind - } - return Note_KIND_UNSPECIFIED -} - -func (m *Note) GetVulnerabilityType() *VulnerabilityType { - if x, ok := m.GetNoteType().(*Note_VulnerabilityType); ok { - return x.VulnerabilityType - } - return nil -} - -func (m *Note) GetBuildType() *BuildType { - if x, ok := m.GetNoteType().(*Note_BuildType); ok { - return x.BuildType - } - return nil -} - -func (m *Note) GetBaseImage() *DockerImage_Basis { - if x, ok := m.GetNoteType().(*Note_BaseImage); ok { - return x.BaseImage - } - return nil -} - -func (m *Note) GetPackage() *PackageManager_Package { - if x, ok := m.GetNoteType().(*Note_Package); ok { - return x.Package - } - return nil -} - -func (m *Note) GetDeployable() *Deployable { - if x, ok := m.GetNoteType().(*Note_Deployable); ok { - return x.Deployable - } - return nil -} - -func (m *Note) GetDiscovery() *Discovery { - if x, ok := m.GetNoteType().(*Note_Discovery); ok { - return x.Discovery - } - return nil -} - -func (m *Note) GetRelatedUrl() []*Note_RelatedUrl { - if m != nil { - return m.RelatedUrl - } - return nil -} - -func (m *Note) GetExpirationTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ExpirationTime - } - return nil -} - -func (m *Note) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Note) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Note) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Note_OneofMarshaler, _Note_OneofUnmarshaler, _Note_OneofSizer, []interface{}{ - (*Note_VulnerabilityType)(nil), - (*Note_BuildType)(nil), - (*Note_BaseImage)(nil), - (*Note_Package)(nil), - (*Note_Deployable)(nil), - (*Note_Discovery)(nil), - } -} - -func _Note_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Note) - // note_type - switch x := m.NoteType.(type) { - case *Note_VulnerabilityType: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.VulnerabilityType); err != nil { - return err - } - case *Note_BuildType: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BuildType); err != nil { - return err - } - case *Note_BaseImage: - b.EncodeVarint(13<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BaseImage); err != nil { - return err - } - case *Note_Package: - b.EncodeVarint(14<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Package); err != nil { - return err - } - case *Note_Deployable: - b.EncodeVarint(17<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Deployable); err != nil { - return err - } - case *Note_Discovery: - b.EncodeVarint(18<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Discovery); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Note.NoteType has unexpected type %T", x) - } - return nil -} - -func _Note_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Note) - switch tag { - case 6: // note_type.vulnerability_type - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(VulnerabilityType) - err := b.DecodeMessage(msg) - m.NoteType = &Note_VulnerabilityType{msg} - return true, err - case 8: // note_type.build_type - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BuildType) - err := b.DecodeMessage(msg) - m.NoteType = &Note_BuildType{msg} - return true, err - case 13: // note_type.base_image - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DockerImage_Basis) - err := b.DecodeMessage(msg) - m.NoteType = &Note_BaseImage{msg} - return true, err - case 14: // note_type.package - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PackageManager_Package) - err := b.DecodeMessage(msg) - m.NoteType = &Note_Package{msg} - return true, err - case 17: // note_type.deployable - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Deployable) - err := b.DecodeMessage(msg) - m.NoteType = &Note_Deployable{msg} - return true, err - case 18: // note_type.discovery - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Discovery) - err := b.DecodeMessage(msg) - m.NoteType = &Note_Discovery{msg} - return true, err - default: - return false, nil - } -} - -func _Note_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Note) - // note_type - switch x := m.NoteType.(type) { - case *Note_VulnerabilityType: - s := proto.Size(x.VulnerabilityType) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Note_BuildType: - s := proto.Size(x.BuildType) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Note_BaseImage: - s := proto.Size(x.BaseImage) - n += proto.SizeVarint(13<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Note_Package: - s := proto.Size(x.Package) - n += proto.SizeVarint(14<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Note_Deployable: - s := proto.Size(x.Deployable) - n += proto.SizeVarint(17<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Note_Discovery: - s := proto.Size(x.Discovery) - n += proto.SizeVarint(18<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Metadata for any related URL information -type Note_RelatedUrl struct { - // Specific URL to associate with the note - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // Label to describe usage of the URL - Label string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"` -} - -func (m *Note_RelatedUrl) Reset() { *m = Note_RelatedUrl{} } -func (m *Note_RelatedUrl) String() string { return proto.CompactTextString(m) } -func (*Note_RelatedUrl) ProtoMessage() {} -func (*Note_RelatedUrl) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } - -func (m *Note_RelatedUrl) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *Note_RelatedUrl) GetLabel() string { - if m != nil { - return m.Label - } - return "" -} - -// An artifact that can be deployed in some runtime. -type Deployable struct { - // Resource URI for the artifact being deployed. - ResourceUri []string `protobuf:"bytes,1,rep,name=resource_uri,json=resourceUri" json:"resource_uri,omitempty"` -} - -func (m *Deployable) Reset() { *m = Deployable{} } -func (m *Deployable) String() string { return proto.CompactTextString(m) } -func (*Deployable) ProtoMessage() {} -func (*Deployable) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *Deployable) GetResourceUri() []string { - if m != nil { - return m.ResourceUri - } - return nil -} - -// The period during which some deployable was active in a runtime. -type Deployable_Deployment struct { - // Identity of the user that triggered this deployment. - UserEmail string `protobuf:"bytes,1,opt,name=user_email,json=userEmail" json:"user_email,omitempty"` - // Beginning of the lifetime of this deployment. - DeployTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=deploy_time,json=deployTime" json:"deploy_time,omitempty"` - // End of the lifetime of this deployment. - UndeployTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=undeploy_time,json=undeployTime" json:"undeploy_time,omitempty"` - // Configuration used to create this deployment. - Config string `protobuf:"bytes,8,opt,name=config" json:"config,omitempty"` - // Address of the runtime element hosting this deployment. - Address string `protobuf:"bytes,5,opt,name=address" json:"address,omitempty"` - // Output only. Resource URI for the artifact being deployed taken from the - // deployable field with the same name. - ResourceUri []string `protobuf:"bytes,6,rep,name=resource_uri,json=resourceUri" json:"resource_uri,omitempty"` - // Platform hosting this deployment. - Platform Deployable_Deployment_Platform `protobuf:"varint,7,opt,name=platform,enum=google.devtools.containeranalysis.v1alpha1.Deployable_Deployment_Platform" json:"platform,omitempty"` -} - -func (m *Deployable_Deployment) Reset() { *m = Deployable_Deployment{} } -func (m *Deployable_Deployment) String() string { return proto.CompactTextString(m) } -func (*Deployable_Deployment) ProtoMessage() {} -func (*Deployable_Deployment) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2, 0} } - -func (m *Deployable_Deployment) GetUserEmail() string { - if m != nil { - return m.UserEmail - } - return "" -} - -func (m *Deployable_Deployment) GetDeployTime() *google_protobuf1.Timestamp { - if m != nil { - return m.DeployTime - } - return nil -} - -func (m *Deployable_Deployment) GetUndeployTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UndeployTime - } - return nil -} - -func (m *Deployable_Deployment) GetConfig() string { - if m != nil { - return m.Config - } - return "" -} - -func (m *Deployable_Deployment) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func (m *Deployable_Deployment) GetResourceUri() []string { - if m != nil { - return m.ResourceUri - } - return nil -} - -func (m *Deployable_Deployment) GetPlatform() Deployable_Deployment_Platform { - if m != nil { - return m.Platform - } - return Deployable_Deployment_PLATFORM_UNSPECIFIED -} - -// A note that indicates a type of analysis a provider would perform. This note -// exists in a provider's project. A `Discovery` occurrence is created in a -// consumer's project at the start of analysis. The occurrence's operation will -// indicate the status of the analysis. Absence of an occurrence linked to this -// note for a resource indicates that analysis hasn't started. -type Discovery struct { - // The kind of analysis that is handled by this discovery. - AnalysisKind Note_Kind `protobuf:"varint,1,opt,name=analysis_kind,json=analysisKind,enum=google.devtools.containeranalysis.v1alpha1.Note_Kind" json:"analysis_kind,omitempty"` -} - -func (m *Discovery) Reset() { *m = Discovery{} } -func (m *Discovery) String() string { return proto.CompactTextString(m) } -func (*Discovery) ProtoMessage() {} -func (*Discovery) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *Discovery) GetAnalysisKind() Note_Kind { - if m != nil { - return m.AnalysisKind - } - return Note_KIND_UNSPECIFIED -} - -// Provides information about the scan status of a discovered resource. -type Discovery_Discovered struct { - // Output only. An operation that indicates the status of the current scan. - Operation *google_longrunning.Operation `protobuf:"bytes,1,opt,name=operation" json:"operation,omitempty"` -} - -func (m *Discovery_Discovered) Reset() { *m = Discovery_Discovered{} } -func (m *Discovery_Discovered) String() string { return proto.CompactTextString(m) } -func (*Discovery_Discovered) ProtoMessage() {} -func (*Discovery_Discovered) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} } - -func (m *Discovery_Discovered) GetOperation() *google_longrunning.Operation { - if m != nil { - return m.Operation - } - return nil -} - -// Note holding the version of the provider's builder and the signature of -// the provenance message in linked BuildDetails. -type BuildType struct { - // Version of the builder which produced this Note. - BuilderVersion string `protobuf:"bytes,1,opt,name=builder_version,json=builderVersion" json:"builder_version,omitempty"` - // Signature of the build in Occurrences pointing to the Note containing this - // `BuilderDetails`. - Signature *BuildSignature `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` -} - -func (m *BuildType) Reset() { *m = BuildType{} } -func (m *BuildType) String() string { return proto.CompactTextString(m) } -func (*BuildType) ProtoMessage() {} -func (*BuildType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *BuildType) GetBuilderVersion() string { - if m != nil { - return m.BuilderVersion - } - return "" -} - -func (m *BuildType) GetSignature() *BuildSignature { - if m != nil { - return m.Signature - } - return nil -} - -// Message encapsulating the signature of the verified build. -type BuildSignature struct { - // Public key of the builder which can be used to verify that the related - // findings are valid and unchanged. If `key_type` is empty, this defaults - // to PEM encoded public keys. - // - // This field may be empty if `key_id` references an external key. - // - // For Cloud Container Builder based signatures, this is a PEM encoded public - // key. To verify the Cloud Container Builder signature, place the contents of - // this field into a file (public.pem). The signature field is base64-decoded - // into its binary representation in signature.bin, and the provenance bytes - // from `BuildDetails` are base64-decoded into a binary representation in - // signed.bin. OpenSSL can then verify the signature: - // `openssl sha256 -verify public.pem -signature signature.bin signed.bin` - PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey" json:"public_key,omitempty"` - // Signature of the related `BuildProvenance`, encoded in a base64 string. - Signature string `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` - // An Id for the key used to sign. This could be either an Id for the key - // stored in `public_key` (such as the Id or fingerprint for a PGP key, or the - // CN for a cert), or a reference to an external key (such as a reference to a - // key in Cloud Key Management Service). - KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId" json:"key_id,omitempty"` - // The type of the key, either stored in `public_key` or referenced in - // `key_id` - KeyType BuildSignature_KeyType `protobuf:"varint,4,opt,name=key_type,json=keyType,enum=google.devtools.containeranalysis.v1alpha1.BuildSignature_KeyType" json:"key_type,omitempty"` -} - -func (m *BuildSignature) Reset() { *m = BuildSignature{} } -func (m *BuildSignature) String() string { return proto.CompactTextString(m) } -func (*BuildSignature) ProtoMessage() {} -func (*BuildSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *BuildSignature) GetPublicKey() string { - if m != nil { - return m.PublicKey - } - return "" -} - -func (m *BuildSignature) GetSignature() string { - if m != nil { - return m.Signature - } - return "" -} - -func (m *BuildSignature) GetKeyId() string { - if m != nil { - return m.KeyId - } - return "" -} - -func (m *BuildSignature) GetKeyType() BuildSignature_KeyType { - if m != nil { - return m.KeyType - } - return BuildSignature_KEY_TYPE_UNSPECIFIED -} - -// Message encapsulating build provenance details. -type BuildDetails struct { - // The actual provenance - Provenance *BuildProvenance `protobuf:"bytes,1,opt,name=provenance" json:"provenance,omitempty"` - // Serialized JSON representation of the provenance, used in generating the - // `BuildSignature` in the corresponding Result. After verifying the - // signature, `provenance_bytes` can be unmarshalled and compared to the - // provenance to confirm that it is unchanged. A base64-encoded string - // representation of the provenance bytes is used for the signature in order - // to interoperate with openssl which expects this format for signature - // verification. - // - // The serialized form is captured both to avoid ambiguity in how the - // provenance is marshalled to json as well to prevent incompatibilities with - // future changes. - ProvenanceBytes string `protobuf:"bytes,2,opt,name=provenance_bytes,json=provenanceBytes" json:"provenance_bytes,omitempty"` -} - -func (m *BuildDetails) Reset() { *m = BuildDetails{} } -func (m *BuildDetails) String() string { return proto.CompactTextString(m) } -func (*BuildDetails) ProtoMessage() {} -func (*BuildDetails) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *BuildDetails) GetProvenance() *BuildProvenance { - if m != nil { - return m.Provenance - } - return nil -} - -func (m *BuildDetails) GetProvenanceBytes() string { - if m != nil { - return m.ProvenanceBytes - } - return "" -} - -// Request to get a Occurrence. -type GetOccurrenceRequest struct { - // The name of the occurrence of the form - // "projects/{project_id}/occurrences/{OCCURRENCE_ID}" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetOccurrenceRequest) Reset() { *m = GetOccurrenceRequest{} } -func (m *GetOccurrenceRequest) String() string { return proto.CompactTextString(m) } -func (*GetOccurrenceRequest) ProtoMessage() {} -func (*GetOccurrenceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *GetOccurrenceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request to list occurrences. -type ListOccurrencesRequest struct { - // The name field contains the project Id. For example: - // "projects/{project_id} - // @Deprecated - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // This contains the project Id for example: projects/{project_id}. - Parent string `protobuf:"bytes,5,opt,name=parent" json:"parent,omitempty"` - // The filter expression. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // Number of occurrences to return in the list. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Token to provide to skip to a particular spot in the list. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListOccurrencesRequest) Reset() { *m = ListOccurrencesRequest{} } -func (m *ListOccurrencesRequest) String() string { return proto.CompactTextString(m) } -func (*ListOccurrencesRequest) ProtoMessage() {} -func (*ListOccurrencesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *ListOccurrencesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListOccurrencesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListOccurrencesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListOccurrencesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListOccurrencesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response including listed active occurrences. -type ListOccurrencesResponse struct { - // The occurrences requested. - Occurrences []*Occurrence `protobuf:"bytes,1,rep,name=occurrences" json:"occurrences,omitempty"` - // The next pagination token in the list response. It should be used as - // `page_token` for the following request. An empty value means no more - // results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListOccurrencesResponse) Reset() { *m = ListOccurrencesResponse{} } -func (m *ListOccurrencesResponse) String() string { return proto.CompactTextString(m) } -func (*ListOccurrencesResponse) ProtoMessage() {} -func (*ListOccurrencesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *ListOccurrencesResponse) GetOccurrences() []*Occurrence { - if m != nil { - return m.Occurrences - } - return nil -} - -func (m *ListOccurrencesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request to delete a occurrence -type DeleteOccurrenceRequest struct { - // The name of the occurrence in the form of - // "projects/{project_id}/occurrences/{OCCURRENCE_ID}" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteOccurrenceRequest) Reset() { *m = DeleteOccurrenceRequest{} } -func (m *DeleteOccurrenceRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteOccurrenceRequest) ProtoMessage() {} -func (*DeleteOccurrenceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *DeleteOccurrenceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request to insert a new occurrence. -type CreateOccurrenceRequest struct { - // The name of the project. Should be of the form "projects/{project_id}". - // @Deprecated - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // This field contains the project Id for example: "projects/{project_id}" - Parent string `protobuf:"bytes,3,opt,name=parent" json:"parent,omitempty"` - // The occurrence to be inserted - Occurrence *Occurrence `protobuf:"bytes,2,opt,name=occurrence" json:"occurrence,omitempty"` -} - -func (m *CreateOccurrenceRequest) Reset() { *m = CreateOccurrenceRequest{} } -func (m *CreateOccurrenceRequest) String() string { return proto.CompactTextString(m) } -func (*CreateOccurrenceRequest) ProtoMessage() {} -func (*CreateOccurrenceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *CreateOccurrenceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateOccurrenceRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateOccurrenceRequest) GetOccurrence() *Occurrence { - if m != nil { - return m.Occurrence - } - return nil -} - -// Request to update an existing occurrence -type UpdateOccurrenceRequest struct { - // The name of the occurrence. - // Should be of the form "projects/{project_id}/occurrences/{OCCURRENCE_ID}". - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The updated occurrence. - Occurrence *Occurrence `protobuf:"bytes,2,opt,name=occurrence" json:"occurrence,omitempty"` - // The fields to update. - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateOccurrenceRequest) Reset() { *m = UpdateOccurrenceRequest{} } -func (m *UpdateOccurrenceRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateOccurrenceRequest) ProtoMessage() {} -func (*UpdateOccurrenceRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *UpdateOccurrenceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateOccurrenceRequest) GetOccurrence() *Occurrence { - if m != nil { - return m.Occurrence - } - return nil -} - -func (m *UpdateOccurrenceRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request to get a Note. -type GetNoteRequest struct { - // The name of the note in the form of - // "providers/{provider_id}/notes/{NOTE_ID}" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetNoteRequest) Reset() { *m = GetNoteRequest{} } -func (m *GetNoteRequest) String() string { return proto.CompactTextString(m) } -func (*GetNoteRequest) ProtoMessage() {} -func (*GetNoteRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *GetNoteRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request to get the note to which this occurrence is attached. -type GetOccurrenceNoteRequest struct { - // The name of the occurrence in the form - // "projects/{project_id}/occurrences/{OCCURRENCE_ID}" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetOccurrenceNoteRequest) Reset() { *m = GetOccurrenceNoteRequest{} } -func (m *GetOccurrenceNoteRequest) String() string { return proto.CompactTextString(m) } -func (*GetOccurrenceNoteRequest) ProtoMessage() {} -func (*GetOccurrenceNoteRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *GetOccurrenceNoteRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request to list notes. -type ListNotesRequest struct { - // The name field will contain the project Id for example: - // "providers/{provider_id} - // @Deprecated - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // This field contains the project Id for example: - // "project/{project_id} - Parent string `protobuf:"bytes,5,opt,name=parent" json:"parent,omitempty"` - // The filter expression. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // Number of notes to return in the list. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Token to provide to skip to a particular spot in the list. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListNotesRequest) Reset() { *m = ListNotesRequest{} } -func (m *ListNotesRequest) String() string { return proto.CompactTextString(m) } -func (*ListNotesRequest) ProtoMessage() {} -func (*ListNotesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -func (m *ListNotesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListNotesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListNotesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListNotesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListNotesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response including listed notes. -type ListNotesResponse struct { - // The occurrences requested - Notes []*Note `protobuf:"bytes,1,rep,name=notes" json:"notes,omitempty"` - // The next pagination token in the list response. It should be used as - // page_token for the following request. An empty value means no more result. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListNotesResponse) Reset() { *m = ListNotesResponse{} } -func (m *ListNotesResponse) String() string { return proto.CompactTextString(m) } -func (*ListNotesResponse) ProtoMessage() {} -func (*ListNotesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *ListNotesResponse) GetNotes() []*Note { - if m != nil { - return m.Notes - } - return nil -} - -func (m *ListNotesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request to delete a note -type DeleteNoteRequest struct { - // The name of the note in the form of - // "providers/{provider_id}/notes/{NOTE_ID}" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteNoteRequest) Reset() { *m = DeleteNoteRequest{} } -func (m *DeleteNoteRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteNoteRequest) ProtoMessage() {} -func (*DeleteNoteRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *DeleteNoteRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request to insert a new note -type CreateNoteRequest struct { - // The name of the project. - // Should be of the form "providers/{provider_id}". - // @Deprecated - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // This field contains the project Id for example: - // "project/{project_id} - Parent string `protobuf:"bytes,4,opt,name=parent" json:"parent,omitempty"` - // The ID to use for this note. - NoteId string `protobuf:"bytes,2,opt,name=note_id,json=noteId" json:"note_id,omitempty"` - // The Note to be inserted - Note *Note `protobuf:"bytes,3,opt,name=note" json:"note,omitempty"` -} - -func (m *CreateNoteRequest) Reset() { *m = CreateNoteRequest{} } -func (m *CreateNoteRequest) String() string { return proto.CompactTextString(m) } -func (*CreateNoteRequest) ProtoMessage() {} -func (*CreateNoteRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } - -func (m *CreateNoteRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateNoteRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateNoteRequest) GetNoteId() string { - if m != nil { - return m.NoteId - } - return "" -} - -func (m *CreateNoteRequest) GetNote() *Note { - if m != nil { - return m.Note - } - return nil -} - -// Request to update an existing note -type UpdateNoteRequest struct { - // The name of the note. - // Should be of the form "projects/{provider_id}/notes/{note_id}". - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The updated note. - Note *Note `protobuf:"bytes,2,opt,name=note" json:"note,omitempty"` - // The fields to update. - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateNoteRequest) Reset() { *m = UpdateNoteRequest{} } -func (m *UpdateNoteRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateNoteRequest) ProtoMessage() {} -func (*UpdateNoteRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } - -func (m *UpdateNoteRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateNoteRequest) GetNote() *Note { - if m != nil { - return m.Note - } - return nil -} - -func (m *UpdateNoteRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request to list occurrences. -type ListNoteOccurrencesRequest struct { - // The name field will contain the note name for example: - // "provider/{provider_id}/notes/{note_id}" - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The filter expression. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // Number of notes to return in the list. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Token to provide to skip to a particular spot in the list. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListNoteOccurrencesRequest) Reset() { *m = ListNoteOccurrencesRequest{} } -func (m *ListNoteOccurrencesRequest) String() string { return proto.CompactTextString(m) } -func (*ListNoteOccurrencesRequest) ProtoMessage() {} -func (*ListNoteOccurrencesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } - -func (m *ListNoteOccurrencesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListNoteOccurrencesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListNoteOccurrencesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListNoteOccurrencesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response including listed occurrences for a note. -type ListNoteOccurrencesResponse struct { - // The occurrences attached to the specified note. - Occurrences []*Occurrence `protobuf:"bytes,1,rep,name=occurrences" json:"occurrences,omitempty"` - // Token to receive the next page of notes. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListNoteOccurrencesResponse) Reset() { *m = ListNoteOccurrencesResponse{} } -func (m *ListNoteOccurrencesResponse) String() string { return proto.CompactTextString(m) } -func (*ListNoteOccurrencesResponse) ProtoMessage() {} -func (*ListNoteOccurrencesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{21} } - -func (m *ListNoteOccurrencesResponse) GetOccurrences() []*Occurrence { - if m != nil { - return m.Occurrences - } - return nil -} - -func (m *ListNoteOccurrencesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Metadata for all operations used and required for all operations -// that created by Container Analysis Providers -type OperationMetadata struct { - // Output only. The time this operation was created. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. The time that this operation was marked completed or failed. - EndTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *OperationMetadata) Reset() { *m = OperationMetadata{} } -func (m *OperationMetadata) String() string { return proto.CompactTextString(m) } -func (*OperationMetadata) ProtoMessage() {} -func (*OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{22} } - -func (m *OperationMetadata) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *OperationMetadata) GetEndTime() *google_protobuf1.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -// Request to get the vulnz summary for some set of vulnerability Occurrences. -type GetVulnzOccurrencesSummaryRequest struct { - // This contains the project Id for example: projects/{project_id} - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The filter expression. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` -} - -func (m *GetVulnzOccurrencesSummaryRequest) Reset() { *m = GetVulnzOccurrencesSummaryRequest{} } -func (m *GetVulnzOccurrencesSummaryRequest) String() string { return proto.CompactTextString(m) } -func (*GetVulnzOccurrencesSummaryRequest) ProtoMessage() {} -func (*GetVulnzOccurrencesSummaryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{23} -} - -func (m *GetVulnzOccurrencesSummaryRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *GetVulnzOccurrencesSummaryRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// A summary of how many vulnz occurrences there are per severity type. -// counts by groups, or if we should have different summary messages -// like this. -type GetVulnzOccurrencesSummaryResponse struct { - // A map of how many occurrences were found for each severity. - Counts []*GetVulnzOccurrencesSummaryResponse_SeverityCount `protobuf:"bytes,1,rep,name=counts" json:"counts,omitempty"` -} - -func (m *GetVulnzOccurrencesSummaryResponse) Reset() { *m = GetVulnzOccurrencesSummaryResponse{} } -func (m *GetVulnzOccurrencesSummaryResponse) String() string { return proto.CompactTextString(m) } -func (*GetVulnzOccurrencesSummaryResponse) ProtoMessage() {} -func (*GetVulnzOccurrencesSummaryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{24} -} - -func (m *GetVulnzOccurrencesSummaryResponse) GetCounts() []*GetVulnzOccurrencesSummaryResponse_SeverityCount { - if m != nil { - return m.Counts - } - return nil -} - -// The number of occurrences created for a specific severity. -type GetVulnzOccurrencesSummaryResponse_SeverityCount struct { - // The severity of the occurrences. - Severity VulnerabilityType_Severity `protobuf:"varint,1,opt,name=severity,enum=google.devtools.containeranalysis.v1alpha1.VulnerabilityType_Severity" json:"severity,omitempty"` - // The number of occurrences with the severity. - Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` -} - -func (m *GetVulnzOccurrencesSummaryResponse_SeverityCount) Reset() { - *m = GetVulnzOccurrencesSummaryResponse_SeverityCount{} -} -func (m *GetVulnzOccurrencesSummaryResponse_SeverityCount) String() string { - return proto.CompactTextString(m) -} -func (*GetVulnzOccurrencesSummaryResponse_SeverityCount) ProtoMessage() {} -func (*GetVulnzOccurrencesSummaryResponse_SeverityCount) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{24, 0} -} - -func (m *GetVulnzOccurrencesSummaryResponse_SeverityCount) GetSeverity() VulnerabilityType_Severity { - if m != nil { - return m.Severity - } - return VulnerabilityType_SEVERITY_UNSPECIFIED -} - -func (m *GetVulnzOccurrencesSummaryResponse_SeverityCount) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -func init() { - proto.RegisterType((*Occurrence)(nil), "google.devtools.containeranalysis.v1alpha1.Occurrence") - proto.RegisterType((*Note)(nil), "google.devtools.containeranalysis.v1alpha1.Note") - proto.RegisterType((*Note_RelatedUrl)(nil), "google.devtools.containeranalysis.v1alpha1.Note.RelatedUrl") - proto.RegisterType((*Deployable)(nil), "google.devtools.containeranalysis.v1alpha1.Deployable") - proto.RegisterType((*Deployable_Deployment)(nil), "google.devtools.containeranalysis.v1alpha1.Deployable.Deployment") - proto.RegisterType((*Discovery)(nil), "google.devtools.containeranalysis.v1alpha1.Discovery") - proto.RegisterType((*Discovery_Discovered)(nil), "google.devtools.containeranalysis.v1alpha1.Discovery.Discovered") - proto.RegisterType((*BuildType)(nil), "google.devtools.containeranalysis.v1alpha1.BuildType") - proto.RegisterType((*BuildSignature)(nil), "google.devtools.containeranalysis.v1alpha1.BuildSignature") - proto.RegisterType((*BuildDetails)(nil), "google.devtools.containeranalysis.v1alpha1.BuildDetails") - proto.RegisterType((*GetOccurrenceRequest)(nil), "google.devtools.containeranalysis.v1alpha1.GetOccurrenceRequest") - proto.RegisterType((*ListOccurrencesRequest)(nil), "google.devtools.containeranalysis.v1alpha1.ListOccurrencesRequest") - proto.RegisterType((*ListOccurrencesResponse)(nil), "google.devtools.containeranalysis.v1alpha1.ListOccurrencesResponse") - proto.RegisterType((*DeleteOccurrenceRequest)(nil), "google.devtools.containeranalysis.v1alpha1.DeleteOccurrenceRequest") - proto.RegisterType((*CreateOccurrenceRequest)(nil), "google.devtools.containeranalysis.v1alpha1.CreateOccurrenceRequest") - proto.RegisterType((*UpdateOccurrenceRequest)(nil), "google.devtools.containeranalysis.v1alpha1.UpdateOccurrenceRequest") - proto.RegisterType((*GetNoteRequest)(nil), "google.devtools.containeranalysis.v1alpha1.GetNoteRequest") - proto.RegisterType((*GetOccurrenceNoteRequest)(nil), "google.devtools.containeranalysis.v1alpha1.GetOccurrenceNoteRequest") - proto.RegisterType((*ListNotesRequest)(nil), "google.devtools.containeranalysis.v1alpha1.ListNotesRequest") - proto.RegisterType((*ListNotesResponse)(nil), "google.devtools.containeranalysis.v1alpha1.ListNotesResponse") - proto.RegisterType((*DeleteNoteRequest)(nil), "google.devtools.containeranalysis.v1alpha1.DeleteNoteRequest") - proto.RegisterType((*CreateNoteRequest)(nil), "google.devtools.containeranalysis.v1alpha1.CreateNoteRequest") - proto.RegisterType((*UpdateNoteRequest)(nil), "google.devtools.containeranalysis.v1alpha1.UpdateNoteRequest") - proto.RegisterType((*ListNoteOccurrencesRequest)(nil), "google.devtools.containeranalysis.v1alpha1.ListNoteOccurrencesRequest") - proto.RegisterType((*ListNoteOccurrencesResponse)(nil), "google.devtools.containeranalysis.v1alpha1.ListNoteOccurrencesResponse") - proto.RegisterType((*OperationMetadata)(nil), "google.devtools.containeranalysis.v1alpha1.OperationMetadata") - proto.RegisterType((*GetVulnzOccurrencesSummaryRequest)(nil), "google.devtools.containeranalysis.v1alpha1.GetVulnzOccurrencesSummaryRequest") - proto.RegisterType((*GetVulnzOccurrencesSummaryResponse)(nil), "google.devtools.containeranalysis.v1alpha1.GetVulnzOccurrencesSummaryResponse") - proto.RegisterType((*GetVulnzOccurrencesSummaryResponse_SeverityCount)(nil), "google.devtools.containeranalysis.v1alpha1.GetVulnzOccurrencesSummaryResponse.SeverityCount") - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.Note_Kind", Note_Kind_name, Note_Kind_value) - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.Deployable_Deployment_Platform", Deployable_Deployment_Platform_name, Deployable_Deployment_Platform_value) - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.BuildSignature_KeyType", BuildSignature_KeyType_name, BuildSignature_KeyType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ContainerAnalysis service - -type ContainerAnalysisClient interface { - // Returns the requested `Occurrence`. - GetOccurrence(ctx context.Context, in *GetOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) - // Lists active `Occurrences` for a given project matching the filters. - ListOccurrences(ctx context.Context, in *ListOccurrencesRequest, opts ...grpc.CallOption) (*ListOccurrencesResponse, error) - // Deletes the given `Occurrence` from the system. Use this when - // an `Occurrence` is no longer applicable for the given resource. - DeleteOccurrence(ctx context.Context, in *DeleteOccurrenceRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Creates a new `Occurrence`. Use this method to create `Occurrences` - // for a resource. - CreateOccurrence(ctx context.Context, in *CreateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) - // Updates an existing occurrence. - UpdateOccurrence(ctx context.Context, in *UpdateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) - // Gets the `Note` attached to the given `Occurrence`. - GetOccurrenceNote(ctx context.Context, in *GetOccurrenceNoteRequest, opts ...grpc.CallOption) (*Note, error) - // Returns the requested `Note`. - GetNote(ctx context.Context, in *GetNoteRequest, opts ...grpc.CallOption) (*Note, error) - // Lists all `Notes` for a given project. - ListNotes(ctx context.Context, in *ListNotesRequest, opts ...grpc.CallOption) (*ListNotesResponse, error) - // Deletes the given `Note` from the system. - DeleteNote(ctx context.Context, in *DeleteNoteRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Creates a new `Note`. - CreateNote(ctx context.Context, in *CreateNoteRequest, opts ...grpc.CallOption) (*Note, error) - // Updates an existing `Note`. - UpdateNote(ctx context.Context, in *UpdateNoteRequest, opts ...grpc.CallOption) (*Note, error) - // Lists `Occurrences` referencing the specified `Note`. Use this method to - // get all occurrences referencing your `Note` across all your customer - // projects. - ListNoteOccurrences(ctx context.Context, in *ListNoteOccurrencesRequest, opts ...grpc.CallOption) (*ListNoteOccurrencesResponse, error) - // Gets a summary of the number and severity of occurrences. - GetVulnzOccurrencesSummary(ctx context.Context, in *GetVulnzOccurrencesSummaryRequest, opts ...grpc.CallOption) (*GetVulnzOccurrencesSummaryResponse, error) - // Sets the access control policy on the specified `Note` or `Occurrence`. - // Requires `containeranalysis.notes.setIamPolicy` or - // `containeranalysis.occurrences.setIamPolicy` permission if the resource is - // a `Note` or an `Occurrence`, respectively. - // Attempting to call this method without these permissions will result in a ` - // `PERMISSION_DENIED` error. - // Attempting to call this method on a non-existent resource will result in a - // `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission - // on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or - // a `PERMISSION_DENIED` error otherwise. The resource takes the following - // formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences - // and projects/{projectid}/notes/{noteid} for notes - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Gets the access control policy for a note or an `Occurrence` resource. - // Requires `containeranalysis.notes.setIamPolicy` or - // `containeranalysis.occurrences.setIamPolicy` permission if the resource is - // a note or occurrence, respectively. - // Attempting to call this method on a resource without the required - // permission will result in a `PERMISSION_DENIED` error. Attempting to call - // this method on a non-existent resource will result in a `NOT_FOUND` error - // if the user has list permission on the project, or a `PERMISSION_DENIED` - // error otherwise. The resource takes the following formats: - // `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and - // projects/{PROJECT_ID}/notes/{NOTE_ID} for notes - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Returns the permissions that a caller has on the specified note or - // occurrence resource. Requires list permission on the project (for example, - // "storage.objects.list" on the containing bucket for testing permission of - // an object). Attempting to call this method on a non-existent resource will - // result in a `NOT_FOUND` error if the user has list permission on the - // project, or a `PERMISSION_DENIED` error otherwise. The resource takes the - // following formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for - // `Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes` - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -type containerAnalysisClient struct { - cc *grpc.ClientConn -} - -func NewContainerAnalysisClient(cc *grpc.ClientConn) ContainerAnalysisClient { - return &containerAnalysisClient{cc} -} - -func (c *containerAnalysisClient) GetOccurrence(ctx context.Context, in *GetOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) { - out := new(Occurrence) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetOccurrence", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) ListOccurrences(ctx context.Context, in *ListOccurrencesRequest, opts ...grpc.CallOption) (*ListOccurrencesResponse, error) { - out := new(ListOccurrencesResponse) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/ListOccurrences", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) DeleteOccurrence(ctx context.Context, in *DeleteOccurrenceRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/DeleteOccurrence", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) CreateOccurrence(ctx context.Context, in *CreateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) { - out := new(Occurrence) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/CreateOccurrence", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) UpdateOccurrence(ctx context.Context, in *UpdateOccurrenceRequest, opts ...grpc.CallOption) (*Occurrence, error) { - out := new(Occurrence) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/UpdateOccurrence", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) GetOccurrenceNote(ctx context.Context, in *GetOccurrenceNoteRequest, opts ...grpc.CallOption) (*Note, error) { - out := new(Note) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetOccurrenceNote", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) GetNote(ctx context.Context, in *GetNoteRequest, opts ...grpc.CallOption) (*Note, error) { - out := new(Note) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetNote", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) ListNotes(ctx context.Context, in *ListNotesRequest, opts ...grpc.CallOption) (*ListNotesResponse, error) { - out := new(ListNotesResponse) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/ListNotes", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) DeleteNote(ctx context.Context, in *DeleteNoteRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/DeleteNote", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) CreateNote(ctx context.Context, in *CreateNoteRequest, opts ...grpc.CallOption) (*Note, error) { - out := new(Note) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/CreateNote", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) UpdateNote(ctx context.Context, in *UpdateNoteRequest, opts ...grpc.CallOption) (*Note, error) { - out := new(Note) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/UpdateNote", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) ListNoteOccurrences(ctx context.Context, in *ListNoteOccurrencesRequest, opts ...grpc.CallOption) (*ListNoteOccurrencesResponse, error) { - out := new(ListNoteOccurrencesResponse) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/ListNoteOccurrences", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) GetVulnzOccurrencesSummary(ctx context.Context, in *GetVulnzOccurrencesSummaryRequest, opts ...grpc.CallOption) (*GetVulnzOccurrencesSummaryResponse, error) { - out := new(GetVulnzOccurrencesSummaryResponse) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetVulnzOccurrencesSummary", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *containerAnalysisClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ContainerAnalysis service - -type ContainerAnalysisServer interface { - // Returns the requested `Occurrence`. - GetOccurrence(context.Context, *GetOccurrenceRequest) (*Occurrence, error) - // Lists active `Occurrences` for a given project matching the filters. - ListOccurrences(context.Context, *ListOccurrencesRequest) (*ListOccurrencesResponse, error) - // Deletes the given `Occurrence` from the system. Use this when - // an `Occurrence` is no longer applicable for the given resource. - DeleteOccurrence(context.Context, *DeleteOccurrenceRequest) (*google_protobuf3.Empty, error) - // Creates a new `Occurrence`. Use this method to create `Occurrences` - // for a resource. - CreateOccurrence(context.Context, *CreateOccurrenceRequest) (*Occurrence, error) - // Updates an existing occurrence. - UpdateOccurrence(context.Context, *UpdateOccurrenceRequest) (*Occurrence, error) - // Gets the `Note` attached to the given `Occurrence`. - GetOccurrenceNote(context.Context, *GetOccurrenceNoteRequest) (*Note, error) - // Returns the requested `Note`. - GetNote(context.Context, *GetNoteRequest) (*Note, error) - // Lists all `Notes` for a given project. - ListNotes(context.Context, *ListNotesRequest) (*ListNotesResponse, error) - // Deletes the given `Note` from the system. - DeleteNote(context.Context, *DeleteNoteRequest) (*google_protobuf3.Empty, error) - // Creates a new `Note`. - CreateNote(context.Context, *CreateNoteRequest) (*Note, error) - // Updates an existing `Note`. - UpdateNote(context.Context, *UpdateNoteRequest) (*Note, error) - // Lists `Occurrences` referencing the specified `Note`. Use this method to - // get all occurrences referencing your `Note` across all your customer - // projects. - ListNoteOccurrences(context.Context, *ListNoteOccurrencesRequest) (*ListNoteOccurrencesResponse, error) - // Gets a summary of the number and severity of occurrences. - GetVulnzOccurrencesSummary(context.Context, *GetVulnzOccurrencesSummaryRequest) (*GetVulnzOccurrencesSummaryResponse, error) - // Sets the access control policy on the specified `Note` or `Occurrence`. - // Requires `containeranalysis.notes.setIamPolicy` or - // `containeranalysis.occurrences.setIamPolicy` permission if the resource is - // a `Note` or an `Occurrence`, respectively. - // Attempting to call this method without these permissions will result in a ` - // `PERMISSION_DENIED` error. - // Attempting to call this method on a non-existent resource will result in a - // `NOT_FOUND` error if the user has `containeranalysis.notes.list` permission - // on a `Note` or `containeranalysis.occurrences.list` on an `Occurrence`, or - // a `PERMISSION_DENIED` error otherwise. The resource takes the following - // formats: `projects/{projectid}/occurrences/{occurrenceid}` for occurrences - // and projects/{projectid}/notes/{noteid} for notes - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Gets the access control policy for a note or an `Occurrence` resource. - // Requires `containeranalysis.notes.setIamPolicy` or - // `containeranalysis.occurrences.setIamPolicy` permission if the resource is - // a note or occurrence, respectively. - // Attempting to call this method on a resource without the required - // permission will result in a `PERMISSION_DENIED` error. Attempting to call - // this method on a non-existent resource will result in a `NOT_FOUND` error - // if the user has list permission on the project, or a `PERMISSION_DENIED` - // error otherwise. The resource takes the following formats: - // `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for occurrences and - // projects/{PROJECT_ID}/notes/{NOTE_ID} for notes - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Returns the permissions that a caller has on the specified note or - // occurrence resource. Requires list permission on the project (for example, - // "storage.objects.list" on the containing bucket for testing permission of - // an object). Attempting to call this method on a non-existent resource will - // result in a `NOT_FOUND` error if the user has list permission on the - // project, or a `PERMISSION_DENIED` error otherwise. The resource takes the - // following formats: `projects/{PROJECT_ID}/occurrences/{OCCURRENCE_ID}` for - // `Occurrences` and `projects/{PROJECT_ID}/notes/{NOTE_ID}` for `Notes` - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -func RegisterContainerAnalysisServer(s *grpc.Server, srv ContainerAnalysisServer) { - s.RegisterService(&_ContainerAnalysis_serviceDesc, srv) -} - -func _ContainerAnalysis_GetOccurrence_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOccurrenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).GetOccurrence(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetOccurrence", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).GetOccurrence(ctx, req.(*GetOccurrenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_ListOccurrences_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOccurrencesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).ListOccurrences(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/ListOccurrences", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).ListOccurrences(ctx, req.(*ListOccurrencesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_DeleteOccurrence_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteOccurrenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).DeleteOccurrence(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/DeleteOccurrence", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).DeleteOccurrence(ctx, req.(*DeleteOccurrenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_CreateOccurrence_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateOccurrenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).CreateOccurrence(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/CreateOccurrence", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).CreateOccurrence(ctx, req.(*CreateOccurrenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_UpdateOccurrence_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateOccurrenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).UpdateOccurrence(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/UpdateOccurrence", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).UpdateOccurrence(ctx, req.(*UpdateOccurrenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_GetOccurrenceNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOccurrenceNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).GetOccurrenceNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetOccurrenceNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).GetOccurrenceNote(ctx, req.(*GetOccurrenceNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_GetNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).GetNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).GetNote(ctx, req.(*GetNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_ListNotes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNotesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).ListNotes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/ListNotes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).ListNotes(ctx, req.(*ListNotesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_DeleteNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).DeleteNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/DeleteNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).DeleteNote(ctx, req.(*DeleteNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_CreateNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).CreateNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/CreateNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).CreateNote(ctx, req.(*CreateNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_UpdateNote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateNoteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).UpdateNote(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/UpdateNote", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).UpdateNote(ctx, req.(*UpdateNoteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_ListNoteOccurrences_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNoteOccurrencesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).ListNoteOccurrences(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/ListNoteOccurrences", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).ListNoteOccurrences(ctx, req.(*ListNoteOccurrencesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_GetVulnzOccurrencesSummary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVulnzOccurrencesSummaryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).GetVulnzOccurrencesSummary(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetVulnzOccurrencesSummary", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).GetVulnzOccurrencesSummary(ctx, req.(*GetVulnzOccurrencesSummaryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContainerAnalysis_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContainerAnalysisServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.containeranalysis.v1alpha1.ContainerAnalysis/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContainerAnalysisServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ContainerAnalysis_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.containeranalysis.v1alpha1.ContainerAnalysis", - HandlerType: (*ContainerAnalysisServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetOccurrence", - Handler: _ContainerAnalysis_GetOccurrence_Handler, - }, - { - MethodName: "ListOccurrences", - Handler: _ContainerAnalysis_ListOccurrences_Handler, - }, - { - MethodName: "DeleteOccurrence", - Handler: _ContainerAnalysis_DeleteOccurrence_Handler, - }, - { - MethodName: "CreateOccurrence", - Handler: _ContainerAnalysis_CreateOccurrence_Handler, - }, - { - MethodName: "UpdateOccurrence", - Handler: _ContainerAnalysis_UpdateOccurrence_Handler, - }, - { - MethodName: "GetOccurrenceNote", - Handler: _ContainerAnalysis_GetOccurrenceNote_Handler, - }, - { - MethodName: "GetNote", - Handler: _ContainerAnalysis_GetNote_Handler, - }, - { - MethodName: "ListNotes", - Handler: _ContainerAnalysis_ListNotes_Handler, - }, - { - MethodName: "DeleteNote", - Handler: _ContainerAnalysis_DeleteNote_Handler, - }, - { - MethodName: "CreateNote", - Handler: _ContainerAnalysis_CreateNote_Handler, - }, - { - MethodName: "UpdateNote", - Handler: _ContainerAnalysis_UpdateNote_Handler, - }, - { - MethodName: "ListNoteOccurrences", - Handler: _ContainerAnalysis_ListNoteOccurrences_Handler, - }, - { - MethodName: "GetVulnzOccurrencesSummary", - Handler: _ContainerAnalysis_GetVulnzOccurrencesSummary_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _ContainerAnalysis_SetIamPolicy_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _ContainerAnalysis_GetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _ContainerAnalysis_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/containeranalysis/v1alpha1/containeranalysis.proto", -} - -func init() { - proto.RegisterFile("google/devtools/containeranalysis/v1alpha1/containeranalysis.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 2432 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xdd, 0x6f, 0x23, 0x57, - 0x15, 0xdf, 0x89, 0x93, 0x38, 0x3e, 0xce, 0x87, 0x7d, 0xbb, 0xdb, 0xb8, 0x6e, 0x0b, 0xe9, 0x94, - 0xd2, 0x6d, 0x16, 0x6c, 0x12, 0xba, 0x14, 0x92, 0xae, 0xb6, 0xfe, 0x8a, 0xd7, 0xe4, 0xcb, 0x1a, - 0x27, 0xd1, 0x6e, 0x5b, 0x3a, 0xba, 0xf6, 0xdc, 0xb8, 0x83, 0xc7, 0x33, 0xc3, 0xcc, 0xd8, 0xaa, - 0x17, 0xf5, 0x05, 0x90, 0x50, 0x11, 0x5f, 0x02, 0x09, 0x21, 0x21, 0x40, 0xaa, 0x10, 0x12, 0xf0, - 0x52, 0x21, 0xf1, 0xc6, 0x13, 0xe2, 0x15, 0x5e, 0x78, 0x46, 0x7d, 0xe1, 0x81, 0x37, 0xfe, 0x05, - 0x74, 0xef, 0xdc, 0x6b, 0x8f, 0x3f, 0x92, 0x78, 0xe2, 0xad, 0xd4, 0xa7, 0x9d, 0x7b, 0xee, 0xb9, - 0xbf, 0x73, 0xee, 0x99, 0xf3, 0xf1, 0x9b, 0xac, 0x21, 0xdf, 0xb4, 0xac, 0xa6, 0x41, 0xb2, 0x1a, - 0xe9, 0x7a, 0x96, 0x65, 0xb8, 0xd9, 0x86, 0x65, 0x7a, 0x58, 0x37, 0x89, 0x83, 0x4d, 0x6c, 0xf4, - 0x5c, 0xdd, 0xcd, 0x76, 0xb7, 0xb0, 0x61, 0xbf, 0x8b, 0xb7, 0xc6, 0xb7, 0x32, 0xb6, 0x63, 0x79, - 0x16, 0xda, 0xf4, 0x31, 0x32, 0x02, 0x23, 0x33, 0xae, 0x28, 0x30, 0xd2, 0xcf, 0x71, 0x7b, 0xd8, - 0xd6, 0xb3, 0xd8, 0x34, 0x2d, 0x0f, 0x7b, 0xba, 0x65, 0x72, 0xa4, 0x74, 0x18, 0x6f, 0xea, 0xba, - 0x61, 0xa8, 0xd6, 0xb9, 0xda, 0xc6, 0x1e, 0x71, 0x74, 0x6c, 0x08, 0x8c, 0xd7, 0x43, 0x60, 0xe8, - 0x6d, 0xdc, 0x24, 0x6a, 0x1d, 0xf7, 0xef, 0x92, 0xde, 0x0b, 0x71, 0xda, 0xc6, 0x8d, 0x16, 0x3d, - 0xdf, 0xed, 0x18, 0x74, 0xbf, 0xae, 0x1b, 0xba, 0xd7, 0xe3, 0x38, 0xbb, 0x61, 0x70, 0x1c, 0xab, - 0x4b, 0x4c, 0x6c, 0x36, 0x08, 0x3f, 0xfc, 0x19, 0x7e, 0x58, 0xc7, 0xed, 0x6c, 0x77, 0x8b, 0xfe, - 0xa3, 0xda, 0x96, 0xa1, 0x37, 0x04, 0x78, 0x7a, 0x78, 0x7f, 0x68, 0xef, 0x45, 0xbe, 0x67, 0x58, - 0x66, 0xd3, 0xe9, 0x98, 0xa6, 0x6e, 0x36, 0xb3, 0x96, 0x4d, 0x9c, 0xa1, 0x38, 0x3f, 0xc3, 0x95, - 0xd8, 0xaa, 0xde, 0x39, 0xcf, 0x62, 0x53, 0x9c, 0x7f, 0x76, 0x74, 0x8b, 0xb4, 0xed, 0xfe, 0xad, - 0x36, 0x46, 0x37, 0xcf, 0x75, 0x62, 0x68, 0x6a, 0x1b, 0xbb, 0x2d, 0xae, 0xf1, 0xd9, 0x51, 0x0d, - 0x4f, 0x6f, 0x13, 0xd7, 0xc3, 0x6d, 0xdb, 0x57, 0x90, 0x3f, 0x8e, 0x02, 0x1c, 0x37, 0x1a, 0x1d, - 0xc7, 0x21, 0x66, 0x83, 0x20, 0x04, 0xf3, 0x26, 0x6e, 0x93, 0x94, 0xb4, 0x21, 0xdd, 0x8e, 0x29, - 0xec, 0x19, 0xbd, 0x00, 0xcb, 0x0e, 0x71, 0xad, 0x8e, 0xd3, 0x20, 0x6a, 0xc7, 0x31, 0x52, 0x73, - 0x6c, 0x2f, 0x2e, 0x64, 0xa7, 0x8e, 0x81, 0x9e, 0x85, 0x98, 0x69, 0x79, 0x44, 0x65, 0x67, 0x23, - 0x6c, 0x7f, 0x89, 0x0a, 0x8e, 0xe8, 0xf9, 0x0a, 0xcc, 0xb7, 0x74, 0x53, 0x4b, 0x2d, 0x6e, 0x48, - 0xb7, 0x57, 0xb7, 0xef, 0x66, 0xa6, 0x4f, 0xcf, 0xcc, 0x91, 0xe5, 0x91, 0xcc, 0xbe, 0x6e, 0x6a, - 0x0a, 0x83, 0x40, 0x1f, 0x48, 0x70, 0x6b, 0xe8, 0xf5, 0xaa, 0x1a, 0xf1, 0xb0, 0x6e, 0xb8, 0xa9, - 0xa5, 0x0d, 0xe9, 0x76, 0x7c, 0x5b, 0x09, 0x03, 0x7e, 0x16, 0x04, 0x3a, 0xe9, 0xd9, 0x64, 0x58, - 0x52, 0xf4, 0x91, 0x1f, 0xdc, 0x50, 0x6e, 0x76, 0x27, 0xc8, 0x91, 0x0a, 0x2b, 0xf5, 0x8e, 0x6e, - 0x68, 0x7d, 0x17, 0xa2, 0xcc, 0x85, 0xaf, 0x86, 0x71, 0x21, 0x4f, 0x01, 0x06, 0x86, 0x96, 0xeb, - 0x81, 0x35, 0x3a, 0x87, 0x15, 0x8d, 0x38, 0x7a, 0x97, 0x68, 0x2a, 0x2b, 0x8c, 0x54, 0x9c, 0x19, - 0xb8, 0x1f, 0xc6, 0x40, 0xd1, 0x6a, 0xb4, 0x88, 0x53, 0xa1, 0xc7, 0x33, 0x45, 0x1f, 0x8c, 0xda, - 0xe1, 0xb8, 0x4c, 0x8e, 0xda, 0xb0, 0xac, 0x9b, 0xae, 0x87, 0x0d, 0x83, 0x25, 0x65, 0x6a, 0x99, - 0x99, 0x29, 0x87, 0x31, 0x53, 0xf5, 0x4b, 0xef, 0x10, 0x9b, 0xb8, 0x49, 0x9c, 0x4c, 0x25, 0x00, - 0x47, 0xcd, 0x05, 0xe1, 0x51, 0x03, 0x40, 0x23, 0xb6, 0x61, 0xf5, 0xda, 0xc4, 0xf4, 0x52, 0xab, - 0xcc, 0x58, 0x2e, 0xd4, 0x9d, 0xd8, 0x69, 0x5c, 0x37, 0x08, 0x7f, 0xa4, 0x40, 0x0f, 0x6e, 0x28, - 0x01, 0x58, 0x54, 0x07, 0xd0, 0x74, 0xb7, 0x61, 0x75, 0x89, 0x43, 0xb4, 0xd4, 0x1a, 0x33, 0xf2, - 0x46, 0x28, 0x23, 0xfc, 0x74, 0xaf, 0xff, 0xc4, 0x22, 0x17, 0x40, 0x45, 0x1b, 0x10, 0x77, 0x48, - 0x9b, 0x68, 0xba, 0x1f, 0xb6, 0x05, 0x51, 0x16, 0x7d, 0x11, 0xda, 0x85, 0x78, 0xc3, 0x21, 0xd8, - 0x23, 0x2a, 0x2d, 0xbb, 0x54, 0x8c, 0xb9, 0x91, 0x16, 0x6e, 0x88, 0x9a, 0xcc, 0x9c, 0x88, 0x9a, - 0x54, 0xc0, 0x57, 0xa7, 0x02, 0x7a, 0xb8, 0x63, 0x6b, 0xfd, 0xc3, 0x70, 0xf5, 0x61, 0x5f, 0x9d, - 0x0a, 0xf2, 0x31, 0x88, 0xf2, 0xb4, 0x94, 0xff, 0x1b, 0x83, 0x79, 0x5a, 0x47, 0x13, 0x6b, 0xfb, - 0x0e, 0x24, 0xdd, 0x77, 0x2d, 0xc7, 0x53, 0x35, 0xe2, 0x36, 0x1c, 0xdd, 0x66, 0x37, 0xf1, 0x0b, - 0x38, 0xc1, 0x36, 0x8a, 0x03, 0x39, 0x7a, 0x05, 0x12, 0xb4, 0x8d, 0x0d, 0xe9, 0xce, 0x33, 0xdd, - 0x35, 0x2a, 0x0f, 0xaa, 0x8a, 0x9a, 0x8f, 0xcd, 0x5e, 0xf3, 0x26, 0xa0, 0xe1, 0x92, 0xf7, 0x7a, - 0x36, 0x61, 0xcd, 0x24, 0xbe, 0x7d, 0x6f, 0xa6, 0x7a, 0x7f, 0x70, 0x43, 0x49, 0x76, 0x47, 0x85, - 0xe8, 0x0c, 0xc0, 0xaf, 0x6b, 0x66, 0xc7, 0xef, 0x2b, 0x77, 0x43, 0x17, 0x35, 0xc7, 0x8f, 0xd5, - 0xc5, 0x02, 0xbd, 0x03, 0x50, 0xc7, 0x2e, 0xe1, 0xb5, 0xbc, 0x12, 0xde, 0xff, 0x60, 0x2d, 0xe7, - 0xe9, 0x8c, 0x64, 0xf8, 0xd8, 0x25, 0x7e, 0x19, 0xbf, 0x03, 0x51, 0x3e, 0x01, 0x79, 0x51, 0xe5, - 0x67, 0xa8, 0x60, 0xbe, 0x7c, 0x70, 0x43, 0x11, 0xa0, 0xe8, 0xa1, 0xa8, 0x5b, 0x5a, 0x79, 0xa9, - 0x24, 0x33, 0xf1, 0x95, 0xeb, 0xd5, 0xed, 0xa0, 0x58, 0xe9, 0x0a, 0x9d, 0x42, 0x4c, 0x94, 0x55, - 0x2f, 0x85, 0xc2, 0x07, 0xbc, 0x5f, 0xab, 0x34, 0x20, 0x7d, 0x24, 0xf4, 0x36, 0xad, 0x4f, 0x03, - 0x7b, 0x44, 0x63, 0x63, 0x2b, 0xba, 0x11, 0xb9, 0x1d, 0xdf, 0xde, 0x0d, 0x9d, 0x8a, 0x8a, 0x8f, - 0x71, 0xea, 0x18, 0x0a, 0x38, 0xfd, 0x67, 0x54, 0x80, 0x35, 0xf2, 0x9e, 0xad, 0xfb, 0x83, 0x7c, - 0xda, 0x12, 0x5d, 0x1d, 0x1c, 0x11, 0x35, 0x1e, 0x6c, 0x10, 0xf1, 0x59, 0x1a, 0xc4, 0x72, 0x98, - 0x06, 0x91, 0x7e, 0x15, 0x60, 0x70, 0x31, 0x94, 0x80, 0x08, 0x0d, 0x91, 0xdf, 0x19, 0xe8, 0x23, - 0xba, 0x09, 0x0b, 0x06, 0xae, 0x13, 0x31, 0xed, 0xfd, 0x85, 0xfc, 0x13, 0x09, 0xe6, 0x69, 0x69, - 0xa2, 0x9b, 0x90, 0xd8, 0xaf, 0x1c, 0x15, 0xd5, 0xd3, 0xa3, 0x5a, 0xb5, 0x54, 0xa8, 0xec, 0x55, - 0x4a, 0xc5, 0xc4, 0x0d, 0xf4, 0x0c, 0xdc, 0xaa, 0xe6, 0x0a, 0xfb, 0xb9, 0x72, 0x49, 0x3d, 0x3b, - 0x3d, 0x38, 0x2a, 0x29, 0xb9, 0x7c, 0xe5, 0xa0, 0x72, 0xf2, 0x28, 0x31, 0x87, 0x92, 0xb0, 0x92, - 0x3f, 0xad, 0x1c, 0x14, 0xd5, 0x62, 0xe9, 0x24, 0x57, 0x39, 0xa8, 0x25, 0x22, 0x68, 0x0d, 0xe2, - 0x95, 0x43, 0xaa, 0x9b, 0xcf, 0xd5, 0x2a, 0xb5, 0xc4, 0x3c, 0x7a, 0x0a, 0xd6, 0xc4, 0xf1, 0xc3, - 0xdc, 0x51, 0xae, 0x5c, 0x52, 0x12, 0x0b, 0x68, 0x15, 0xa0, 0x58, 0xaa, 0x1e, 0x1c, 0x3f, 0xca, - 0xe5, 0x0f, 0x4a, 0x89, 0x45, 0xb4, 0x02, 0xb1, 0x62, 0xa5, 0x56, 0x38, 0x3e, 0x2b, 0x29, 0x8f, - 0x12, 0xd1, 0x7c, 0x9c, 0x33, 0x0f, 0x5a, 0xac, 0xf2, 0xbf, 0x23, 0x00, 0x83, 0x2c, 0x1b, 0x21, - 0x2e, 0x7a, 0x4a, 0xda, 0x88, 0x0c, 0x13, 0x17, 0x3d, 0xfd, 0xa7, 0xfe, 0x09, 0x36, 0x36, 0x9e, - 0x07, 0xe8, 0xb8, 0xc4, 0x51, 0x49, 0x1b, 0xeb, 0x22, 0x1c, 0x31, 0x2a, 0x29, 0x51, 0x01, 0x8d, - 0xb8, 0x9f, 0xb6, 0x7e, 0xc4, 0xe7, 0xae, 0x8e, 0xb8, 0xaf, 0xce, 0x5e, 0xd7, 0x7d, 0x58, 0xe9, - 0x98, 0xc1, 0xe3, 0x91, 0x2b, 0x8f, 0x2f, 0x8b, 0x03, 0x0c, 0xe0, 0x69, 0x58, 0x6c, 0x58, 0xe6, - 0xb9, 0xde, 0x64, 0x4d, 0x29, 0xa6, 0xf0, 0x15, 0x4a, 0x41, 0x14, 0x6b, 0x9a, 0x43, 0x5c, 0x97, - 0xcf, 0x20, 0xb1, 0x1c, 0x0b, 0xc0, 0xe2, 0x58, 0x00, 0xd0, 0x39, 0x2c, 0xd9, 0x06, 0xf6, 0xce, - 0x2d, 0xa7, 0xcd, 0x08, 0xcc, 0xea, 0xf6, 0xd7, 0x67, 0x9e, 0xc5, 0x99, 0x2a, 0x47, 0x54, 0xfa, - 0xd8, 0x72, 0x01, 0x96, 0x84, 0x14, 0xa5, 0xe0, 0x66, 0xf5, 0x20, 0x77, 0xb2, 0x77, 0xac, 0x1c, - 0x8e, 0x24, 0x50, 0x14, 0x22, 0xe5, 0xfd, 0x52, 0x42, 0x42, 0x4b, 0x30, 0xbf, 0x77, 0x50, 0x7a, - 0x98, 0x98, 0x43, 0x00, 0x8b, 0x85, 0xd3, 0xda, 0xc9, 0xf1, 0x61, 0x22, 0x22, 0xff, 0x59, 0x82, - 0x58, 0xbf, 0xd8, 0xd1, 0x9b, 0xb0, 0x22, 0x1c, 0x52, 0xd9, 0xb0, 0x91, 0x66, 0x19, 0x36, 0xcb, - 0x62, 0x93, 0xae, 0xd2, 0x15, 0x80, 0xc1, 0xdc, 0x47, 0xbb, 0x10, 0xeb, 0x73, 0x76, 0x66, 0x25, - 0xbe, 0xfd, 0xbc, 0xb0, 0x12, 0x20, 0xf6, 0x99, 0x63, 0xa1, 0xa4, 0x0c, 0xf4, 0xe5, 0x1f, 0x4b, - 0x10, 0xeb, 0x8f, 0x04, 0xf4, 0x32, 0xac, 0xb1, 0x91, 0x40, 0x1c, 0xb5, 0x4b, 0x1c, 0x57, 0x00, - 0xc6, 0x94, 0x55, 0x2e, 0x3e, 0xf3, 0xa5, 0xe8, 0x21, 0xc4, 0x5c, 0xbd, 0x69, 0x62, 0xaf, 0xe3, - 0x88, 0x4c, 0xdb, 0x09, 0x3d, 0x85, 0x6a, 0x02, 0x41, 0x19, 0x80, 0xc9, 0x3f, 0x9a, 0x83, 0xd5, - 0xe1, 0x5d, 0x9a, 0xf7, 0x76, 0xa7, 0x6e, 0xe8, 0x0d, 0xb5, 0x45, 0x7a, 0x22, 0xef, 0x7d, 0xc9, - 0x3e, 0xe9, 0xa1, 0xe7, 0x46, 0x7d, 0x89, 0x05, 0xf0, 0xd0, 0x2d, 0x58, 0x6c, 0x91, 0x9e, 0xaa, - 0x6b, 0x9c, 0x38, 0x2c, 0xb4, 0x48, 0xaf, 0xa2, 0xa1, 0x6f, 0xc0, 0x12, 0x15, 0xb3, 0x29, 0x3a, - 0xcf, 0xde, 0x4c, 0xfe, 0xfa, 0xfe, 0x67, 0xf6, 0x09, 0x9b, 0xce, 0x4a, 0xb4, 0xe5, 0x3f, 0xc8, - 0x0f, 0x20, 0xca, 0x65, 0x34, 0x9f, 0xf6, 0x4b, 0x8f, 0xd4, 0x93, 0x47, 0xd5, 0xd2, 0x48, 0x3e, - 0xdd, 0x82, 0x64, 0xb5, 0x5c, 0x55, 0x73, 0xb5, 0x42, 0xa5, 0xa2, 0xe6, 0x94, 0xc3, 0x63, 0xa5, - 0x54, 0x4c, 0x48, 0x68, 0x19, 0x96, 0xaa, 0xfb, 0x95, 0x87, 0x6a, 0xb5, 0x74, 0x98, 0x98, 0x93, - 0x7f, 0x21, 0xc1, 0x72, 0x90, 0x88, 0xa3, 0xb7, 0x00, 0x06, 0xdf, 0x80, 0xfc, 0x7d, 0xef, 0x86, - 0xf6, 0xbd, 0xda, 0x87, 0x50, 0x02, 0x70, 0x94, 0x44, 0x0d, 0x56, 0x6a, 0xbd, 0xe7, 0x11, 0x97, - 0x87, 0x74, 0x6d, 0x20, 0xcf, 0x53, 0xb1, 0xbc, 0x09, 0x37, 0xcb, 0xc4, 0x1b, 0x7c, 0x9d, 0x29, - 0xe4, 0x5b, 0x1d, 0xe2, 0x7a, 0x93, 0x88, 0x9c, 0xfc, 0x4b, 0x09, 0x9e, 0x3e, 0xd0, 0xdd, 0x80, - 0xb6, 0x7b, 0x89, 0x3a, 0xed, 0x25, 0x36, 0x76, 0x28, 0x01, 0xf7, 0x5b, 0x06, 0x5f, 0x51, 0xf9, - 0xb9, 0x6e, 0x78, 0xc4, 0xe1, 0x3e, 0xf1, 0x15, 0xfd, 0xc0, 0xb3, 0xe9, 0xb7, 0xb5, 0xab, 0x3f, - 0xf6, 0x1b, 0xd7, 0x82, 0xb2, 0x44, 0x05, 0x35, 0xfd, 0xb1, 0x9f, 0x3d, 0x74, 0xd3, 0xb3, 0x5a, - 0x44, 0x30, 0x42, 0xa6, 0x7e, 0x42, 0x05, 0xf2, 0xaf, 0x24, 0x58, 0x1f, 0x73, 0xcd, 0xb5, 0x2d, - 0xd3, 0xa5, 0xa4, 0x22, 0x6e, 0x0d, 0xc4, 0xac, 0x43, 0x87, 0x64, 0x15, 0x81, 0xf0, 0x04, 0xa1, - 0xd0, 0xe7, 0x61, 0xcd, 0x24, 0xef, 0x79, 0x6a, 0xc0, 0x33, 0xff, 0x4a, 0x2b, 0x54, 0x5c, 0xed, - 0x7b, 0xf7, 0x45, 0x58, 0x2f, 0x12, 0x83, 0x78, 0x64, 0xba, 0x38, 0xff, 0x5a, 0x82, 0xf5, 0x02, - 0x9b, 0xc1, 0x53, 0xe9, 0x07, 0x02, 0x1d, 0x19, 0x0a, 0xf4, 0x19, 0xc0, 0xc0, 0x5b, 0x5e, 0xdf, - 0xd7, 0xbd, 0x77, 0x00, 0x49, 0xfe, 0x9b, 0x04, 0xeb, 0xa7, 0x6c, 0xcc, 0x4f, 0xe7, 0xdf, 0x27, - 0xe4, 0x47, 0x80, 0x9c, 0xb4, 0xb1, 0xdb, 0xba, 0x70, 0xd6, 0xed, 0xe9, 0xc4, 0xd0, 0x0e, 0xb1, - 0xdb, 0x12, 0xe4, 0x84, 0x3e, 0xcb, 0x9f, 0x83, 0xd5, 0x32, 0xf1, 0x68, 0x6f, 0xbe, 0xec, 0x55, - 0x64, 0x20, 0x35, 0x54, 0x1e, 0x57, 0xe9, 0xff, 0x4c, 0x82, 0x04, 0xcd, 0x43, 0xaa, 0xf7, 0xa9, - 0x29, 0x8e, 0xef, 0x4a, 0x90, 0x0c, 0x38, 0xc5, 0xcb, 0x62, 0x0f, 0x16, 0x28, 0xab, 0x11, 0x05, - 0xf1, 0xa5, 0xb0, 0x23, 0x4d, 0xf1, 0x8f, 0x4f, 0x5d, 0x04, 0x2f, 0x43, 0xd2, 0x2f, 0x82, 0xab, - 0x62, 0xf8, 0x1b, 0x09, 0x92, 0x7e, 0xfa, 0x5f, 0xa1, 0x19, 0x08, 0xe2, 0xfc, 0x50, 0x10, 0xd7, - 0x21, 0xca, 0x08, 0x9b, 0xae, 0x89, 0x28, 0xd2, 0x65, 0x45, 0x43, 0x45, 0x98, 0xa7, 0x4f, 0x3c, - 0x55, 0xc2, 0x5f, 0x99, 0x9d, 0x96, 0xff, 0x28, 0x41, 0xd2, 0xcf, 0xff, 0xab, 0x1c, 0x14, 0xf6, - 0xe6, 0x66, 0xb1, 0x37, 0x5b, 0x9e, 0x7f, 0x4f, 0x82, 0xb4, 0x78, 0xf9, 0xd3, 0x37, 0xee, 0x27, - 0x9e, 0x83, 0xbf, 0x95, 0xe0, 0xd9, 0x89, 0x6e, 0x7c, 0x6a, 0x9a, 0xf4, 0xf7, 0x25, 0x48, 0xf6, - 0xc9, 0xd5, 0x21, 0xf1, 0xb0, 0x86, 0x3d, 0x3c, 0xfa, 0xf5, 0x24, 0x85, 0xfa, 0x7a, 0xba, 0x0b, - 0x4b, 0xc4, 0xd4, 0xa6, 0x25, 0xf2, 0x51, 0x62, 0x6a, 0x74, 0x25, 0xd7, 0xe0, 0x85, 0x32, 0xf1, - 0xce, 0x3a, 0x86, 0xf9, 0x38, 0x10, 0xaa, 0x5a, 0xa7, 0xdd, 0xc6, 0x4e, 0x4f, 0xbc, 0xb8, 0x41, - 0xee, 0x4b, 0xd3, 0x34, 0x10, 0xf9, 0xf7, 0x73, 0x20, 0x5f, 0x86, 0xca, 0xdf, 0x83, 0x47, 0x3f, - 0x00, 0x3a, 0xa6, 0x27, 0x5e, 0xc1, 0xdb, 0x61, 0x5e, 0xc1, 0xd5, 0xf8, 0x99, 0x1a, 0xe9, 0x12, - 0x47, 0xf7, 0x7a, 0x05, 0x6a, 0x44, 0xe1, 0xb6, 0xd2, 0x1f, 0x48, 0xb0, 0x32, 0xb4, 0x83, 0xea, - 0xb0, 0xe4, 0x72, 0x01, 0xe7, 0xdc, 0x7b, 0xb3, 0xfd, 0xdd, 0x55, 0xc0, 0x2b, 0x7d, 0x5c, 0xfa, - 0xfd, 0xc9, 0xec, 0xb3, 0x48, 0x45, 0x14, 0x7f, 0xb1, 0xfd, 0x87, 0x75, 0x48, 0x16, 0x04, 0x72, - 0x8e, 0x23, 0xa3, 0xbf, 0x4a, 0xb0, 0x32, 0x34, 0x09, 0xd0, 0x1b, 0x21, 0x23, 0x33, 0x36, 0x2b, - 0xd3, 0xd7, 0x4c, 0x6f, 0x79, 0xeb, 0x3b, 0xff, 0xfa, 0xcf, 0xcf, 0xe7, 0xee, 0xa0, 0x57, 0x06, - 0xff, 0x9f, 0xf0, 0x6d, 0x5a, 0xb8, 0xf7, 0x6c, 0xc7, 0xfa, 0x26, 0x69, 0x78, 0x6e, 0x76, 0x33, - 0x1b, 0xa8, 0x80, 0xec, 0xe6, 0xfb, 0xe8, 0x1f, 0x12, 0xac, 0x8d, 0xf0, 0x23, 0x14, 0x8a, 0x2a, - 0x4f, 0xe6, 0x7d, 0xe9, 0xc2, 0x4c, 0x18, 0x7e, 0x4e, 0x4c, 0xbc, 0x8f, 0x9f, 0xcd, 0x81, 0x1b, - 0xbd, 0x1f, 0xbc, 0x12, 0xfa, 0x50, 0x82, 0xc4, 0x28, 0xa5, 0x42, 0x85, 0x70, 0x5f, 0x95, 0x13, - 0x09, 0x59, 0xfa, 0xe9, 0xb1, 0x0a, 0x2d, 0xb5, 0x6d, 0xaf, 0x27, 0x9c, 0xdc, 0x0c, 0x11, 0xf4, - 0x7f, 0x4a, 0x90, 0x18, 0xe5, 0x71, 0xe1, 0x9c, 0xbc, 0x80, 0x05, 0x5e, 0x3b, 0x73, 0xee, 0xb1, - 0x4b, 0xbc, 0x26, 0x4f, 0x1f, 0xe9, 0x9d, 0x20, 0xe1, 0xa2, 0x17, 0x1a, 0x25, 0x7e, 0xe1, 0x2e, - 0x74, 0x01, 0x6d, 0x9c, 0xf5, 0x42, 0xdb, 0xd3, 0xbf, 0x95, 0xa1, 0x0b, 0xfd, 0x5d, 0x82, 0xe4, - 0x18, 0xbf, 0x43, 0xc5, 0x6b, 0x57, 0x76, 0x80, 0x0f, 0xa4, 0x43, 0x4f, 0x7b, 0xf9, 0x35, 0x76, - 0x99, 0x2d, 0x94, 0x9d, 0xfa, 0x32, 0x59, 0x9f, 0x82, 0xfd, 0x4e, 0x82, 0x28, 0x27, 0xb3, 0x68, - 0x27, 0xa4, 0xf3, 0xb3, 0xb9, 0x7c, 0x87, 0xb9, 0xfc, 0x12, 0x7a, 0xf1, 0x12, 0x97, 0x99, 0x8f, - 0xb4, 0x1e, 0xfe, 0x22, 0x41, 0xac, 0xcf, 0x43, 0xd1, 0xeb, 0x61, 0x5b, 0x47, 0x90, 0x53, 0xa7, - 0xef, 0x5d, 0xf3, 0x34, 0x6f, 0x39, 0x93, 0xfc, 0x9e, 0x50, 0x08, 0x7e, 0x78, 0x7f, 0x2a, 0x01, - 0x0c, 0xa8, 0x2b, 0xba, 0x17, 0xbe, 0xcd, 0x04, 0x83, 0x7c, 0x51, 0x83, 0xe1, 0x2e, 0x6d, 0x4e, - 0x15, 0xca, 0x8f, 0x24, 0x80, 0x01, 0x47, 0x0e, 0xe7, 0xd2, 0x18, 0xb7, 0xbe, 0xc6, 0x7b, 0xe7, - 0xdd, 0x50, 0x9e, 0x26, 0x7e, 0x3b, 0x3e, 0x8b, 0xa5, 0x2e, 0x0f, 0x58, 0x73, 0x38, 0x97, 0xc7, - 0xd8, 0xf6, 0xf5, 0x5d, 0xde, 0x9e, 0x26, 0xbe, 0xdc, 0xe5, 0x8f, 0x25, 0x78, 0x6a, 0x02, 0x69, - 0x45, 0x7b, 0xd7, 0x49, 0xbe, 0x09, 0xd3, 0xb3, 0x3c, 0x33, 0x0e, 0x4f, 0xe7, 0x69, 0x3a, 0x87, - 0xb8, 0xdb, 0xd0, 0x1c, 0xfd, 0x9f, 0x04, 0xe9, 0x8b, 0x59, 0x1b, 0x3a, 0x7c, 0x52, 0xec, 0xcf, - 0xbf, 0xef, 0xd1, 0x93, 0x25, 0x93, 0xf2, 0x36, 0xbb, 0xf6, 0x17, 0xd0, 0xe6, 0xe5, 0x59, 0xd8, - 0xa5, 0x30, 0x2e, 0xbf, 0xd2, 0x0f, 0x24, 0x58, 0xae, 0x11, 0xaf, 0x82, 0xdb, 0x55, 0xf6, 0x1b, - 0x0a, 0x24, 0x0b, 0xa7, 0x74, 0xdc, 0xce, 0x74, 0xb7, 0x32, 0xc1, 0x4d, 0xe1, 0xf8, 0xad, 0x11, - 0x1d, 0x7f, 0x57, 0xbe, 0xcf, 0xec, 0x7f, 0x4d, 0x7e, 0x35, 0x60, 0x5f, 0xfc, 0xe1, 0x7b, 0x62, - 0x5a, 0xb9, 0x01, 0xec, 0x1d, 0x69, 0x93, 0x39, 0x53, 0xbe, 0xcc, 0x99, 0xf2, 0x27, 0xe8, 0x4c, - 0x73, 0xc4, 0x99, 0x8f, 0x24, 0x40, 0x27, 0xc4, 0x65, 0x42, 0xe2, 0xb4, 0x75, 0xd7, 0xd5, 0x2d, - 0xd3, 0x45, 0xb7, 0x47, 0xcc, 0x8d, 0xab, 0x08, 0xc7, 0x5e, 0x99, 0x42, 0x93, 0xbf, 0xb9, 0x12, - 0x73, 0xf6, 0xbe, 0xbc, 0x33, 0xad, 0xb3, 0xde, 0x18, 0xd6, 0x8e, 0xb4, 0x99, 0xff, 0xa1, 0x04, - 0x2f, 0x35, 0xac, 0xb6, 0xb0, 0x7b, 0x71, 0x36, 0x55, 0xa5, 0x37, 0xdf, 0xe2, 0x4a, 0x4d, 0xcb, - 0xc0, 0x66, 0x33, 0x63, 0x39, 0xcd, 0x6c, 0x93, 0x98, 0xac, 0x09, 0x67, 0xfd, 0x2d, 0x6c, 0xeb, - 0xee, 0x34, 0xbf, 0xde, 0xd9, 0x1d, 0xdb, 0xfa, 0x70, 0x2e, 0x52, 0x2e, 0xe4, 0xea, 0x8b, 0x0c, - 0xed, 0xcb, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x50, 0x37, 0x6f, 0x01, 0x62, 0x25, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/image_basis.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/image_basis.pb.go deleted file mode 100644 index fbafe4cf..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/image_basis.pb.go +++ /dev/null @@ -1,324 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/containeranalysis/v1alpha1/image_basis.proto - -package containeranalysis - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Instructions from dockerfile -type DockerImage_Layer_Directive int32 - -const ( - // Default value for unsupported/missing directive - DockerImage_Layer_DIRECTIVE_UNSPECIFIED DockerImage_Layer_Directive = 0 - // https://docs.docker.com/reference/builder/#maintainer - DockerImage_Layer_MAINTAINER DockerImage_Layer_Directive = 1 - // https://docs.docker.com/reference/builder/#run - DockerImage_Layer_RUN DockerImage_Layer_Directive = 2 - // https://docs.docker.com/reference/builder/#cmd - DockerImage_Layer_CMD DockerImage_Layer_Directive = 3 - // https://docs.docker.com/reference/builder/#label - DockerImage_Layer_LABEL DockerImage_Layer_Directive = 4 - // https://docs.docker.com/reference/builder/#expose - DockerImage_Layer_EXPOSE DockerImage_Layer_Directive = 5 - // https://docs.docker.com/reference/builder/#env - DockerImage_Layer_ENV DockerImage_Layer_Directive = 6 - // https://docs.docker.com/reference/builder/#add - DockerImage_Layer_ADD DockerImage_Layer_Directive = 7 - // https://docs.docker.com/reference/builder/#copy - DockerImage_Layer_COPY DockerImage_Layer_Directive = 8 - // https://docs.docker.com/reference/builder/#entrypoint - DockerImage_Layer_ENTRYPOINT DockerImage_Layer_Directive = 9 - // https://docs.docker.com/reference/builder/#volume - DockerImage_Layer_VOLUME DockerImage_Layer_Directive = 10 - // https://docs.docker.com/reference/builder/#user - DockerImage_Layer_USER DockerImage_Layer_Directive = 11 - // https://docs.docker.com/reference/builder/#workdir - DockerImage_Layer_WORKDIR DockerImage_Layer_Directive = 12 - // https://docs.docker.com/reference/builder/#arg - DockerImage_Layer_ARG DockerImage_Layer_Directive = 13 - // https://docs.docker.com/reference/builder/#onbuild - DockerImage_Layer_ONBUILD DockerImage_Layer_Directive = 14 - // https://docs.docker.com/reference/builder/#stopsignal - DockerImage_Layer_STOPSIGNAL DockerImage_Layer_Directive = 15 - // https://docs.docker.com/reference/builder/#healthcheck - DockerImage_Layer_HEALTHCHECK DockerImage_Layer_Directive = 16 - // https://docs.docker.com/reference/builder/#shell - DockerImage_Layer_SHELL DockerImage_Layer_Directive = 17 -) - -var DockerImage_Layer_Directive_name = map[int32]string{ - 0: "DIRECTIVE_UNSPECIFIED", - 1: "MAINTAINER", - 2: "RUN", - 3: "CMD", - 4: "LABEL", - 5: "EXPOSE", - 6: "ENV", - 7: "ADD", - 8: "COPY", - 9: "ENTRYPOINT", - 10: "VOLUME", - 11: "USER", - 12: "WORKDIR", - 13: "ARG", - 14: "ONBUILD", - 15: "STOPSIGNAL", - 16: "HEALTHCHECK", - 17: "SHELL", -} -var DockerImage_Layer_Directive_value = map[string]int32{ - "DIRECTIVE_UNSPECIFIED": 0, - "MAINTAINER": 1, - "RUN": 2, - "CMD": 3, - "LABEL": 4, - "EXPOSE": 5, - "ENV": 6, - "ADD": 7, - "COPY": 8, - "ENTRYPOINT": 9, - "VOLUME": 10, - "USER": 11, - "WORKDIR": 12, - "ARG": 13, - "ONBUILD": 14, - "STOPSIGNAL": 15, - "HEALTHCHECK": 16, - "SHELL": 17, -} - -func (x DockerImage_Layer_Directive) String() string { - return proto.EnumName(DockerImage_Layer_Directive_name, int32(x)) -} -func (DockerImage_Layer_Directive) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{0, 0, 0} -} - -// DockerImage holds types defining base image notes -// and derived image occurrences. -type DockerImage struct { -} - -func (m *DockerImage) Reset() { *m = DockerImage{} } -func (m *DockerImage) String() string { return proto.CompactTextString(m) } -func (*DockerImage) ProtoMessage() {} -func (*DockerImage) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -// Layer holds metadata specific to a layer of a Docker image. -type DockerImage_Layer struct { - // The recovered Dockerfile directive used to construct this layer. - Directive DockerImage_Layer_Directive `protobuf:"varint,1,opt,name=directive,enum=google.devtools.containeranalysis.v1alpha1.DockerImage_Layer_Directive" json:"directive,omitempty"` - // The recovered arguments to the Dockerfile directive. - Arguments string `protobuf:"bytes,2,opt,name=arguments" json:"arguments,omitempty"` -} - -func (m *DockerImage_Layer) Reset() { *m = DockerImage_Layer{} } -func (m *DockerImage_Layer) String() string { return proto.CompactTextString(m) } -func (*DockerImage_Layer) ProtoMessage() {} -func (*DockerImage_Layer) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -func (m *DockerImage_Layer) GetDirective() DockerImage_Layer_Directive { - if m != nil { - return m.Directive - } - return DockerImage_Layer_DIRECTIVE_UNSPECIFIED -} - -func (m *DockerImage_Layer) GetArguments() string { - if m != nil { - return m.Arguments - } - return "" -} - -// A set of properties that uniquely identify a given Docker image. -type DockerImage_Fingerprint struct { - // The layer-id of the final layer in the Docker image's v1 - // representation. - // This field can be used as a filter in list requests. - V1Name string `protobuf:"bytes,1,opt,name=v1_name,json=v1Name" json:"v1_name,omitempty"` - // The ordered list of v2 blobs that represent a given image. - V2Blob []string `protobuf:"bytes,2,rep,name=v2_blob,json=v2Blob" json:"v2_blob,omitempty"` - // Output only. The name of the image's v2 blobs computed via: - // [bottom] := v2_blob[bottom] - // [N] := sha256(v2_blob[N] + " " + v2_name[N+1]) - // Only the name of the final blob is kept. - // This field can be used as a filter in list requests. - V2Name string `protobuf:"bytes,3,opt,name=v2_name,json=v2Name" json:"v2_name,omitempty"` -} - -func (m *DockerImage_Fingerprint) Reset() { *m = DockerImage_Fingerprint{} } -func (m *DockerImage_Fingerprint) String() string { return proto.CompactTextString(m) } -func (*DockerImage_Fingerprint) ProtoMessage() {} -func (*DockerImage_Fingerprint) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 1} } - -func (m *DockerImage_Fingerprint) GetV1Name() string { - if m != nil { - return m.V1Name - } - return "" -} - -func (m *DockerImage_Fingerprint) GetV2Blob() []string { - if m != nil { - return m.V2Blob - } - return nil -} - -func (m *DockerImage_Fingerprint) GetV2Name() string { - if m != nil { - return m.V2Name - } - return "" -} - -// Basis describes the base image portion (Note) of the DockerImage -// relationship. Linked occurrences are derived from this or an -// equivalent image via: -// FROM <Basis.resource_url> -// Or an equivalent reference, e.g. a tag of the resource_url. -type DockerImage_Basis struct { - // The resource_url for the resource representing the basis of - // associated occurrence images. - ResourceUrl string `protobuf:"bytes,1,opt,name=resource_url,json=resourceUrl" json:"resource_url,omitempty"` - // The fingerprint of the base image - Fingerprint *DockerImage_Fingerprint `protobuf:"bytes,2,opt,name=fingerprint" json:"fingerprint,omitempty"` -} - -func (m *DockerImage_Basis) Reset() { *m = DockerImage_Basis{} } -func (m *DockerImage_Basis) String() string { return proto.CompactTextString(m) } -func (*DockerImage_Basis) ProtoMessage() {} -func (*DockerImage_Basis) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 2} } - -func (m *DockerImage_Basis) GetResourceUrl() string { - if m != nil { - return m.ResourceUrl - } - return "" -} - -func (m *DockerImage_Basis) GetFingerprint() *DockerImage_Fingerprint { - if m != nil { - return m.Fingerprint - } - return nil -} - -// Derived describes the derived image portion (Occurrence) of the -// DockerImage relationship. This image would be produced from a Dockerfile -// with FROM <DockerImage.Basis in attached Note>. -type DockerImage_Derived struct { - // The fingerprint of the derived image - Fingerprint *DockerImage_Fingerprint `protobuf:"bytes,1,opt,name=fingerprint" json:"fingerprint,omitempty"` - // Output only. The number of layers by which this image differs from - // the associated image basis. - Distance uint32 `protobuf:"varint,2,opt,name=distance" json:"distance,omitempty"` - // This contains layer-specific metadata, if populated it - // has length "distance" and is ordered with [distance] being the - // layer immediately following the base image and [1] - // being the final layer. - LayerInfo []*DockerImage_Layer `protobuf:"bytes,3,rep,name=layer_info,json=layerInfo" json:"layer_info,omitempty"` - // Output only.This contains the base image url for the derived image - // Occurrence - BaseResourceUrl string `protobuf:"bytes,4,opt,name=base_resource_url,json=baseResourceUrl" json:"base_resource_url,omitempty"` -} - -func (m *DockerImage_Derived) Reset() { *m = DockerImage_Derived{} } -func (m *DockerImage_Derived) String() string { return proto.CompactTextString(m) } -func (*DockerImage_Derived) ProtoMessage() {} -func (*DockerImage_Derived) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 3} } - -func (m *DockerImage_Derived) GetFingerprint() *DockerImage_Fingerprint { - if m != nil { - return m.Fingerprint - } - return nil -} - -func (m *DockerImage_Derived) GetDistance() uint32 { - if m != nil { - return m.Distance - } - return 0 -} - -func (m *DockerImage_Derived) GetLayerInfo() []*DockerImage_Layer { - if m != nil { - return m.LayerInfo - } - return nil -} - -func (m *DockerImage_Derived) GetBaseResourceUrl() string { - if m != nil { - return m.BaseResourceUrl - } - return "" -} - -func init() { - proto.RegisterType((*DockerImage)(nil), "google.devtools.containeranalysis.v1alpha1.DockerImage") - proto.RegisterType((*DockerImage_Layer)(nil), "google.devtools.containeranalysis.v1alpha1.DockerImage.Layer") - proto.RegisterType((*DockerImage_Fingerprint)(nil), "google.devtools.containeranalysis.v1alpha1.DockerImage.Fingerprint") - proto.RegisterType((*DockerImage_Basis)(nil), "google.devtools.containeranalysis.v1alpha1.DockerImage.Basis") - proto.RegisterType((*DockerImage_Derived)(nil), "google.devtools.containeranalysis.v1alpha1.DockerImage.Derived") - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.DockerImage_Layer_Directive", DockerImage_Layer_Directive_name, DockerImage_Layer_Directive_value) -} - -func init() { - proto.RegisterFile("google/devtools/containeranalysis/v1alpha1/image_basis.proto", fileDescriptor2) -} - -var fileDescriptor2 = []byte{ - // 627 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x94, 0xdf, 0x6e, 0xda, 0x30, - 0x14, 0xc6, 0x17, 0x28, 0xd0, 0x9c, 0xf4, 0x8f, 0x6b, 0x69, 0x1a, 0x43, 0xbd, 0x60, 0x95, 0x26, - 0x55, 0xbd, 0x08, 0x82, 0x5d, 0x6e, 0xbb, 0x80, 0xc4, 0x85, 0xa8, 0x69, 0x40, 0x06, 0xba, 0x76, - 0x9b, 0x84, 0x0c, 0xb8, 0x59, 0xb4, 0x60, 0x23, 0x27, 0x45, 0xea, 0x3b, 0xec, 0x66, 0x37, 0x7d, - 0x80, 0x3d, 0xe1, 0xde, 0x60, 0x93, 0x53, 0x28, 0xdd, 0xaa, 0x49, 0xd5, 0xa6, 0xdd, 0x99, 0xf3, - 0xf9, 0xfb, 0x7d, 0xf6, 0xf1, 0x21, 0xf0, 0x26, 0x94, 0x32, 0x8c, 0x79, 0x6d, 0xca, 0x17, 0xa9, - 0x94, 0x71, 0x52, 0x9b, 0x48, 0x91, 0xb2, 0x48, 0x70, 0xc5, 0x04, 0x8b, 0xaf, 0x93, 0x28, 0xa9, - 0x2d, 0xea, 0x2c, 0x9e, 0x7f, 0x62, 0xf5, 0x5a, 0x34, 0x63, 0x21, 0x1f, 0x8d, 0x59, 0x12, 0x25, - 0xf6, 0x5c, 0xc9, 0x54, 0xe2, 0xa3, 0x5b, 0xb7, 0xbd, 0x72, 0xdb, 0x0f, 0xdc, 0xf6, 0xca, 0x5d, - 0xd9, 0x5f, 0x26, 0xb1, 0x79, 0x54, 0x63, 0x42, 0xc8, 0x94, 0xa5, 0x91, 0x14, 0x4b, 0xd2, 0xc1, - 0x4d, 0x09, 0x2c, 0x57, 0x4e, 0x3e, 0x73, 0xe5, 0xe9, 0x94, 0xca, 0x8f, 0x1c, 0x14, 0x7c, 0x76, - 0xcd, 0x15, 0xe6, 0x60, 0x4e, 0x23, 0xc5, 0x27, 0x69, 0xb4, 0xe0, 0x65, 0xa3, 0x6a, 0x1c, 0xee, - 0x34, 0xda, 0xf6, 0xe3, 0x73, 0xed, 0x7b, 0x54, 0x3b, 0x23, 0xda, 0xee, 0x0a, 0x47, 0xd7, 0x64, - 0xbc, 0x0f, 0x26, 0x53, 0xe1, 0xd5, 0x8c, 0x8b, 0x34, 0x29, 0xe7, 0xaa, 0xc6, 0xa1, 0x49, 0xd7, - 0x85, 0x83, 0xef, 0x06, 0x98, 0x77, 0x36, 0xfc, 0x1c, 0x9e, 0xba, 0x1e, 0x25, 0xce, 0xc0, 0x3b, - 0x23, 0xa3, 0x61, 0xd0, 0xef, 0x11, 0xc7, 0x3b, 0xf6, 0x88, 0x8b, 0x9e, 0xe0, 0x1d, 0x80, 0xd3, - 0xa6, 0x17, 0x0c, 0x9a, 0x5e, 0x40, 0x28, 0x32, 0x70, 0x09, 0xf2, 0x74, 0x18, 0xa0, 0x9c, 0x5e, - 0x38, 0xa7, 0x2e, 0xca, 0x63, 0x13, 0x0a, 0x7e, 0xb3, 0x45, 0x7c, 0xb4, 0x81, 0x01, 0x8a, 0xe4, - 0xbc, 0xd7, 0xed, 0x13, 0x54, 0xd0, 0x3a, 0x09, 0xce, 0x50, 0x51, 0x2f, 0x9a, 0xae, 0x8b, 0x4a, - 0x78, 0x13, 0x36, 0x9c, 0x6e, 0xef, 0x02, 0x6d, 0x6a, 0x28, 0x09, 0x06, 0xf4, 0xa2, 0xd7, 0xf5, - 0x82, 0x01, 0x32, 0xb5, 0xef, 0xac, 0xeb, 0x0f, 0x4f, 0x09, 0x02, 0xbd, 0x6b, 0xd8, 0x27, 0x14, - 0x59, 0xd8, 0x82, 0xd2, 0xbb, 0x2e, 0x3d, 0x71, 0x3d, 0x8a, 0xb6, 0x32, 0x0a, 0x6d, 0xa3, 0x6d, - 0x5d, 0xed, 0x06, 0xad, 0xa1, 0xe7, 0xbb, 0x68, 0x47, 0x83, 0xfa, 0x83, 0x6e, 0xaf, 0xef, 0xb5, - 0x83, 0xa6, 0x8f, 0x76, 0xf1, 0x2e, 0x58, 0x1d, 0xd2, 0xf4, 0x07, 0x1d, 0xa7, 0x43, 0x9c, 0x13, - 0x84, 0xf4, 0xe1, 0xfa, 0x1d, 0xe2, 0xfb, 0x68, 0xaf, 0x72, 0x0e, 0xd6, 0x71, 0x24, 0x42, 0xae, - 0xe6, 0x2a, 0x12, 0x29, 0x7e, 0x06, 0xa5, 0x45, 0x7d, 0x24, 0xd8, 0xec, 0xf6, 0x11, 0x4c, 0x5a, - 0x5c, 0xd4, 0x03, 0x36, 0xe3, 0x99, 0xd0, 0x18, 0x8d, 0x63, 0x39, 0x2e, 0xe7, 0xaa, 0xf9, 0x4c, - 0x68, 0xb4, 0x62, 0x39, 0x5e, 0x0a, 0x99, 0x23, 0xbf, 0x74, 0x34, 0xb4, 0xa3, 0xf2, 0xd5, 0x80, - 0x42, 0x4b, 0x4f, 0x11, 0x7e, 0x01, 0x5b, 0x8a, 0x27, 0xf2, 0x4a, 0x4d, 0xf8, 0xe8, 0x4a, 0xc5, - 0x4b, 0xb2, 0xb5, 0xaa, 0x0d, 0x55, 0x8c, 0x39, 0x58, 0x97, 0xeb, 0x63, 0x64, 0x2f, 0x63, 0x35, - 0x9c, 0xbf, 0x1d, 0x80, 0x7b, 0x37, 0xa2, 0xf7, 0xb9, 0x95, 0x9b, 0x1c, 0x94, 0x5c, 0xae, 0xa2, - 0x05, 0x9f, 0xfe, 0x1e, 0x69, 0xfc, 0x9f, 0x48, 0x5c, 0x81, 0xcd, 0x69, 0x94, 0xa4, 0x4c, 0x4c, - 0x78, 0x76, 0xad, 0x6d, 0x7a, 0xf7, 0x1b, 0x7f, 0x04, 0x88, 0xf5, 0xac, 0x8e, 0x22, 0x71, 0x29, - 0xcb, 0xf9, 0x6a, 0xfe, 0xd0, 0x6a, 0xbc, 0xfd, 0xa7, 0xa9, 0xa7, 0x66, 0x06, 0xf4, 0xc4, 0xa5, - 0xc4, 0x47, 0xb0, 0x37, 0x66, 0x09, 0x1f, 0xfd, 0xd2, 0xfb, 0x8d, 0xac, 0xf7, 0xbb, 0x5a, 0xa0, - 0xeb, 0xfe, 0xb7, 0xbe, 0x18, 0xf0, 0x72, 0x22, 0x67, 0xab, 0xec, 0x3f, 0x47, 0xf6, 0x8c, 0xf7, - 0x1f, 0x96, 0x9b, 0x42, 0x19, 0x33, 0x11, 0xda, 0x52, 0x85, 0xb5, 0x90, 0x8b, 0xec, 0x0f, 0x5e, - 0xbb, 0x95, 0xd8, 0x3c, 0x4a, 0x1e, 0xf3, 0xad, 0x79, 0xfd, 0x40, 0xfa, 0x96, 0xcb, 0xb7, 0x9d, - 0xe6, 0xb8, 0x98, 0xd1, 0x5e, 0xfd, 0x0c, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xd1, 0xf4, 0x9a, 0xb8, - 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/package_vulnerability.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/package_vulnerability.pb.go deleted file mode 100644 index 20a81674..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/package_vulnerability.pb.go +++ /dev/null @@ -1,468 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto - -package containeranalysis - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Note provider-assigned severity/impact ranking -type VulnerabilityType_Severity int32 - -const ( - // Unknown Impact - VulnerabilityType_SEVERITY_UNSPECIFIED VulnerabilityType_Severity = 0 - // Minimal Impact - VulnerabilityType_MINIMAL VulnerabilityType_Severity = 1 - // Low Impact - VulnerabilityType_LOW VulnerabilityType_Severity = 2 - // Medium Impact - VulnerabilityType_MEDIUM VulnerabilityType_Severity = 3 - // High Impact - VulnerabilityType_HIGH VulnerabilityType_Severity = 4 - // Critical Impact - VulnerabilityType_CRITICAL VulnerabilityType_Severity = 5 -) - -var VulnerabilityType_Severity_name = map[int32]string{ - 0: "SEVERITY_UNSPECIFIED", - 1: "MINIMAL", - 2: "LOW", - 3: "MEDIUM", - 4: "HIGH", - 5: "CRITICAL", -} -var VulnerabilityType_Severity_value = map[string]int32{ - "SEVERITY_UNSPECIFIED": 0, - "MINIMAL": 1, - "LOW": 2, - "MEDIUM": 3, - "HIGH": 4, - "CRITICAL": 5, -} - -func (x VulnerabilityType_Severity) String() string { - return proto.EnumName(VulnerabilityType_Severity_name, int32(x)) -} -func (VulnerabilityType_Severity) EnumDescriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 0} -} - -// Whether this is an ordinary package version or a -// sentinel MIN/MAX version. -type VulnerabilityType_Version_VersionKind int32 - -const ( - // A standard package version, defined by the other fields. - VulnerabilityType_Version_NORMAL VulnerabilityType_Version_VersionKind = 0 - // A special version representing negative infinity, - // other fields are ignored. - VulnerabilityType_Version_MINIMUM VulnerabilityType_Version_VersionKind = 1 - // A special version representing positive infinity, - // other fields are ignored. - VulnerabilityType_Version_MAXIMUM VulnerabilityType_Version_VersionKind = 2 -) - -var VulnerabilityType_Version_VersionKind_name = map[int32]string{ - 0: "NORMAL", - 1: "MINIMUM", - 2: "MAXIMUM", -} -var VulnerabilityType_Version_VersionKind_value = map[string]int32{ - "NORMAL": 0, - "MINIMUM": 1, - "MAXIMUM": 2, -} - -func (x VulnerabilityType_Version_VersionKind) String() string { - return proto.EnumName(VulnerabilityType_Version_VersionKind_name, int32(x)) -} -func (VulnerabilityType_Version_VersionKind) EnumDescriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 0, 0} -} - -// VulnerabilityType provides metadata about a security vulnerability. -type VulnerabilityType struct { - // The CVSS score for this Vulnerability. - CvssScore float32 `protobuf:"fixed32,2,opt,name=cvss_score,json=cvssScore" json:"cvss_score,omitempty"` - // Note provider assigned impact of the vulnerability - Severity VulnerabilityType_Severity `protobuf:"varint,3,opt,name=severity,enum=google.devtools.containeranalysis.v1alpha1.VulnerabilityType_Severity" json:"severity,omitempty"` - // All information about the package to specifically identify this - // vulnerability. One entry per (version range and cpe_uri) the - // package vulnerability has manifested in. - Details []*VulnerabilityType_Detail `protobuf:"bytes,4,rep,name=details" json:"details,omitempty"` -} - -func (m *VulnerabilityType) Reset() { *m = VulnerabilityType{} } -func (m *VulnerabilityType) String() string { return proto.CompactTextString(m) } -func (*VulnerabilityType) ProtoMessage() {} -func (*VulnerabilityType) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *VulnerabilityType) GetCvssScore() float32 { - if m != nil { - return m.CvssScore - } - return 0 -} - -func (m *VulnerabilityType) GetSeverity() VulnerabilityType_Severity { - if m != nil { - return m.Severity - } - return VulnerabilityType_SEVERITY_UNSPECIFIED -} - -func (m *VulnerabilityType) GetDetails() []*VulnerabilityType_Detail { - if m != nil { - return m.Details - } - return nil -} - -// Version contains structured information about the version of the package. -// For a discussion of this in Debian/Ubuntu: -// http://serverfault.com/questions/604541/debian-packages-version-convention -// For a discussion of this in Redhat/Fedora/Centos: -// http://blog.jasonantman.com/2014/07/how-yum-and-rpm-compare-versions/ -type VulnerabilityType_Version struct { - // Used to correct mistakes in the version numbering scheme. - Epoch int32 `protobuf:"varint,1,opt,name=epoch" json:"epoch,omitempty"` - // The main part of the version name. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - // The iteration of the package build from the above version. - Revision string `protobuf:"bytes,3,opt,name=revision" json:"revision,omitempty"` - // Distinguish between sentinel MIN/MAX versions and normal versions. - // If kind is not NORMAL, then the other fields are ignored. - Kind VulnerabilityType_Version_VersionKind `protobuf:"varint,5,opt,name=kind,enum=google.devtools.containeranalysis.v1alpha1.VulnerabilityType_Version_VersionKind" json:"kind,omitempty"` -} - -func (m *VulnerabilityType_Version) Reset() { *m = VulnerabilityType_Version{} } -func (m *VulnerabilityType_Version) String() string { return proto.CompactTextString(m) } -func (*VulnerabilityType_Version) ProtoMessage() {} -func (*VulnerabilityType_Version) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -func (m *VulnerabilityType_Version) GetEpoch() int32 { - if m != nil { - return m.Epoch - } - return 0 -} - -func (m *VulnerabilityType_Version) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *VulnerabilityType_Version) GetRevision() string { - if m != nil { - return m.Revision - } - return "" -} - -func (m *VulnerabilityType_Version) GetKind() VulnerabilityType_Version_VersionKind { - if m != nil { - return m.Kind - } - return VulnerabilityType_Version_NORMAL -} - -// Identifies all occurrences of this vulnerability in the package for a -// specific distro/location -// For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2 -type VulnerabilityType_Detail struct { - // The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) in - // which the vulnerability manifests. Examples include distro or storage - // location for vulnerable jar. - // This field can be used as a filter in list requests. - CpeUri string `protobuf:"bytes,1,opt,name=cpe_uri,json=cpeUri" json:"cpe_uri,omitempty"` - // The name of the package where the vulnerability was found. - // This field can be used as a filter in list requests. - Package string `protobuf:"bytes,8,opt,name=package" json:"package,omitempty"` - // The min version of the package in which the vulnerability exists. - MinAffectedVersion *VulnerabilityType_Version `protobuf:"bytes,6,opt,name=min_affected_version,json=minAffectedVersion" json:"min_affected_version,omitempty"` - // The max version of the package in which the vulnerability exists. - // This field can be used as a filter in list requests. - MaxAffectedVersion *VulnerabilityType_Version `protobuf:"bytes,7,opt,name=max_affected_version,json=maxAffectedVersion" json:"max_affected_version,omitempty"` - // The severity (eg: distro assigned severity) for this vulnerability. - SeverityName string `protobuf:"bytes,4,opt,name=severity_name,json=severityName" json:"severity_name,omitempty"` - // A vendor-specific description of this note. - Description string `protobuf:"bytes,9,opt,name=description" json:"description,omitempty"` - // The fix for this specific package version. - FixedLocation *VulnerabilityType_VulnerabilityLocation `protobuf:"bytes,5,opt,name=fixed_location,json=fixedLocation" json:"fixed_location,omitempty"` - // The type of package; whether native or non native(ruby gems, - // node.js packages etc) - PackageType string `protobuf:"bytes,10,opt,name=package_type,json=packageType" json:"package_type,omitempty"` -} - -func (m *VulnerabilityType_Detail) Reset() { *m = VulnerabilityType_Detail{} } -func (m *VulnerabilityType_Detail) String() string { return proto.CompactTextString(m) } -func (*VulnerabilityType_Detail) ProtoMessage() {} -func (*VulnerabilityType_Detail) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} } - -func (m *VulnerabilityType_Detail) GetCpeUri() string { - if m != nil { - return m.CpeUri - } - return "" -} - -func (m *VulnerabilityType_Detail) GetPackage() string { - if m != nil { - return m.Package - } - return "" -} - -func (m *VulnerabilityType_Detail) GetMinAffectedVersion() *VulnerabilityType_Version { - if m != nil { - return m.MinAffectedVersion - } - return nil -} - -func (m *VulnerabilityType_Detail) GetMaxAffectedVersion() *VulnerabilityType_Version { - if m != nil { - return m.MaxAffectedVersion - } - return nil -} - -func (m *VulnerabilityType_Detail) GetSeverityName() string { - if m != nil { - return m.SeverityName - } - return "" -} - -func (m *VulnerabilityType_Detail) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *VulnerabilityType_Detail) GetFixedLocation() *VulnerabilityType_VulnerabilityLocation { - if m != nil { - return m.FixedLocation - } - return nil -} - -func (m *VulnerabilityType_Detail) GetPackageType() string { - if m != nil { - return m.PackageType - } - return "" -} - -// Used by Occurrence to point to where the vulnerability exists and how -// to fix it. -type VulnerabilityType_VulnerabilityDetails struct { - // The type of package; whether native or non native(ruby gems, - // node.js packages etc) - Type string `protobuf:"bytes,3,opt,name=type" json:"type,omitempty"` - // Output only. The note provider assigned Severity of the vulnerability. - Severity VulnerabilityType_Severity `protobuf:"varint,4,opt,name=severity,enum=google.devtools.containeranalysis.v1alpha1.VulnerabilityType_Severity" json:"severity,omitempty"` - // Output only. The CVSS score of this vulnerability. CVSS score is on a - // scale of 0-10 where 0 indicates low severity and 10 indicates high - // severity. - CvssScore float32 `protobuf:"fixed32,5,opt,name=cvss_score,json=cvssScore" json:"cvss_score,omitempty"` - // The set of affected locations and their fixes (if available) within - // the associated resource. - PackageIssue []*VulnerabilityType_PackageIssue `protobuf:"bytes,6,rep,name=package_issue,json=packageIssue" json:"package_issue,omitempty"` -} - -func (m *VulnerabilityType_VulnerabilityDetails) Reset() { - *m = VulnerabilityType_VulnerabilityDetails{} -} -func (m *VulnerabilityType_VulnerabilityDetails) String() string { return proto.CompactTextString(m) } -func (*VulnerabilityType_VulnerabilityDetails) ProtoMessage() {} -func (*VulnerabilityType_VulnerabilityDetails) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2} -} - -func (m *VulnerabilityType_VulnerabilityDetails) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *VulnerabilityType_VulnerabilityDetails) GetSeverity() VulnerabilityType_Severity { - if m != nil { - return m.Severity - } - return VulnerabilityType_SEVERITY_UNSPECIFIED -} - -func (m *VulnerabilityType_VulnerabilityDetails) GetCvssScore() float32 { - if m != nil { - return m.CvssScore - } - return 0 -} - -func (m *VulnerabilityType_VulnerabilityDetails) GetPackageIssue() []*VulnerabilityType_PackageIssue { - if m != nil { - return m.PackageIssue - } - return nil -} - -// This message wraps a location affected by a vulnerability and its -// associated fix (if one is available). -type VulnerabilityType_PackageIssue struct { - // The location of the vulnerability. - AffectedLocation *VulnerabilityType_VulnerabilityLocation `protobuf:"bytes,1,opt,name=affected_location,json=affectedLocation" json:"affected_location,omitempty"` - // The location of the available fix for vulnerability. - FixedLocation *VulnerabilityType_VulnerabilityLocation `protobuf:"bytes,2,opt,name=fixed_location,json=fixedLocation" json:"fixed_location,omitempty"` - // The severity (eg: distro assigned severity) for this vulnerability. - SeverityName string `protobuf:"bytes,3,opt,name=severity_name,json=severityName" json:"severity_name,omitempty"` -} - -func (m *VulnerabilityType_PackageIssue) Reset() { *m = VulnerabilityType_PackageIssue{} } -func (m *VulnerabilityType_PackageIssue) String() string { return proto.CompactTextString(m) } -func (*VulnerabilityType_PackageIssue) ProtoMessage() {} -func (*VulnerabilityType_PackageIssue) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 3} -} - -func (m *VulnerabilityType_PackageIssue) GetAffectedLocation() *VulnerabilityType_VulnerabilityLocation { - if m != nil { - return m.AffectedLocation - } - return nil -} - -func (m *VulnerabilityType_PackageIssue) GetFixedLocation() *VulnerabilityType_VulnerabilityLocation { - if m != nil { - return m.FixedLocation - } - return nil -} - -func (m *VulnerabilityType_PackageIssue) GetSeverityName() string { - if m != nil { - return m.SeverityName - } - return "" -} - -// The location of the vulnerability -type VulnerabilityType_VulnerabilityLocation struct { - // The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) - // format. Examples include distro or storage location for vulnerable jar. - // This field can be used as a filter in list requests. - CpeUri string `protobuf:"bytes,1,opt,name=cpe_uri,json=cpeUri" json:"cpe_uri,omitempty"` - // The package being described. - Package string `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"` - // The version of the package being described. - // This field can be used as a filter in list requests. - Version *VulnerabilityType_Version `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"` -} - -func (m *VulnerabilityType_VulnerabilityLocation) Reset() { - *m = VulnerabilityType_VulnerabilityLocation{} -} -func (m *VulnerabilityType_VulnerabilityLocation) String() string { return proto.CompactTextString(m) } -func (*VulnerabilityType_VulnerabilityLocation) ProtoMessage() {} -func (*VulnerabilityType_VulnerabilityLocation) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 4} -} - -func (m *VulnerabilityType_VulnerabilityLocation) GetCpeUri() string { - if m != nil { - return m.CpeUri - } - return "" -} - -func (m *VulnerabilityType_VulnerabilityLocation) GetPackage() string { - if m != nil { - return m.Package - } - return "" -} - -func (m *VulnerabilityType_VulnerabilityLocation) GetVersion() *VulnerabilityType_Version { - if m != nil { - return m.Version - } - return nil -} - -func init() { - proto.RegisterType((*VulnerabilityType)(nil), "google.devtools.containeranalysis.v1alpha1.VulnerabilityType") - proto.RegisterType((*VulnerabilityType_Version)(nil), "google.devtools.containeranalysis.v1alpha1.VulnerabilityType.Version") - proto.RegisterType((*VulnerabilityType_Detail)(nil), "google.devtools.containeranalysis.v1alpha1.VulnerabilityType.Detail") - proto.RegisterType((*VulnerabilityType_VulnerabilityDetails)(nil), "google.devtools.containeranalysis.v1alpha1.VulnerabilityType.VulnerabilityDetails") - proto.RegisterType((*VulnerabilityType_PackageIssue)(nil), "google.devtools.containeranalysis.v1alpha1.VulnerabilityType.PackageIssue") - proto.RegisterType((*VulnerabilityType_VulnerabilityLocation)(nil), "google.devtools.containeranalysis.v1alpha1.VulnerabilityType.VulnerabilityLocation") - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.VulnerabilityType_Severity", VulnerabilityType_Severity_name, VulnerabilityType_Severity_value) - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.VulnerabilityType_Version_VersionKind", VulnerabilityType_Version_VersionKind_name, VulnerabilityType_Version_VersionKind_value) -} - -func init() { - proto.RegisterFile("google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto", fileDescriptor3) -} - -var fileDescriptor3 = []byte{ - // 750 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6e, 0xda, 0x4c, - 0x10, 0xff, 0x6c, 0x0c, 0x86, 0x81, 0x44, 0xce, 0x8a, 0x4f, 0x9f, 0x85, 0xbe, 0x4a, 0x34, 0x55, - 0x25, 0xd4, 0x83, 0x51, 0xc8, 0xb1, 0x27, 0x0a, 0x24, 0x71, 0x0b, 0x24, 0x35, 0x21, 0xfd, 0x27, - 0xc5, 0xda, 0x98, 0x0d, 0x59, 0xc5, 0x78, 0x2d, 0xdb, 0xa1, 0xa1, 0xa7, 0x3e, 0x40, 0x6f, 0xbd, - 0xf7, 0xd0, 0x6b, 0x6f, 0x7d, 0xa0, 0xbe, 0x40, 0x5f, 0xa2, 0xf2, 0xda, 0x8b, 0x20, 0xb4, 0x52, - 0x24, 0x92, 0x9e, 0xf0, 0xcc, 0x78, 0x7f, 0xbf, 0x99, 0x9d, 0xdf, 0x0c, 0x86, 0xbd, 0x31, 0x63, - 0x63, 0x97, 0xd4, 0x47, 0x64, 0x1a, 0x31, 0xe6, 0x86, 0x75, 0x87, 0x79, 0x11, 0xa6, 0x1e, 0x09, - 0xb0, 0x87, 0xdd, 0x59, 0x48, 0xc3, 0xfa, 0x74, 0x07, 0xbb, 0xfe, 0x05, 0xde, 0xa9, 0xfb, 0xd8, - 0xb9, 0xc4, 0x63, 0x62, 0x4f, 0xaf, 0xdc, 0x38, 0x7e, 0x46, 0x5d, 0x1a, 0xcd, 0x0c, 0x3f, 0x60, - 0x11, 0x43, 0x4f, 0x12, 0x1c, 0x43, 0xe0, 0x18, 0x2b, 0x38, 0x86, 0xc0, 0xa9, 0xfc, 0x9f, 0x72, - 0x62, 0x9f, 0xd6, 0xb1, 0xe7, 0xb1, 0x08, 0x47, 0x94, 0x79, 0x61, 0x82, 0xb4, 0xfd, 0x63, 0x13, - 0xb6, 0x4e, 0x16, 0x19, 0x8e, 0x67, 0x3e, 0x41, 0x0f, 0x00, 0x9c, 0x69, 0x18, 0xda, 0xa1, 0xc3, - 0x02, 0xa2, 0xcb, 0x55, 0xa9, 0x26, 0x5b, 0x85, 0xd8, 0x33, 0x88, 0x1d, 0xe8, 0x0c, 0xf2, 0x21, - 0x99, 0x92, 0x80, 0x46, 0x33, 0x3d, 0x53, 0x95, 0x6a, 0x9b, 0x8d, 0x3d, 0xe3, 0xf6, 0x19, 0x19, - 0x2b, 0x7c, 0xc6, 0x20, 0x45, 0xb3, 0xe6, 0xb8, 0xe8, 0x14, 0xd4, 0x11, 0x89, 0x30, 0x75, 0x43, - 0x5d, 0xa9, 0x66, 0x6a, 0xc5, 0x46, 0x7b, 0x3d, 0x8a, 0x36, 0x07, 0xb3, 0x04, 0x68, 0xe5, 0xa7, - 0x04, 0xea, 0x09, 0x09, 0x42, 0xca, 0x3c, 0x54, 0x86, 0x2c, 0xf1, 0x99, 0x73, 0xa1, 0x4b, 0x55, - 0xa9, 0x96, 0xb5, 0x12, 0x03, 0x21, 0x50, 0x3c, 0x3c, 0x49, 0xca, 0x2f, 0x58, 0xfc, 0x19, 0x55, - 0x20, 0x1f, 0x90, 0x29, 0x8d, 0x4f, 0xf1, 0xca, 0x0b, 0xd6, 0xdc, 0x46, 0x04, 0x94, 0x4b, 0xea, - 0x8d, 0xf4, 0x2c, 0xbf, 0x91, 0x97, 0xeb, 0xa5, 0x9b, 0xa6, 0x26, 0x7e, 0x5f, 0x50, 0x6f, 0x64, - 0x71, 0xf8, 0xed, 0x5d, 0x28, 0x2e, 0x38, 0x11, 0x40, 0xae, 0x7f, 0x68, 0xf5, 0x9a, 0x5d, 0xed, - 0x1f, 0x54, 0x04, 0xb5, 0x67, 0xf6, 0xcd, 0xde, 0xb0, 0xa7, 0x49, 0xdc, 0x68, 0xbe, 0xe6, 0x86, - 0x5c, 0xf9, 0xac, 0x40, 0x2e, 0xb9, 0x01, 0xf4, 0x1f, 0xa8, 0x8e, 0x4f, 0xec, 0xab, 0x80, 0xf2, - 0x72, 0x0b, 0x56, 0xce, 0xf1, 0xc9, 0x30, 0xa0, 0x48, 0x07, 0x35, 0xd5, 0x9c, 0x9e, 0xe7, 0x01, - 0x61, 0xa2, 0xf7, 0x50, 0x9e, 0x50, 0xcf, 0xc6, 0xe7, 0xe7, 0xc4, 0x89, 0xc8, 0xc8, 0x9e, 0x26, - 0xfc, 0x7a, 0xae, 0x2a, 0xd5, 0x8a, 0x8d, 0xce, 0x9d, 0x54, 0x6a, 0xa1, 0x09, 0xf5, 0x9a, 0x29, - 0x83, 0x68, 0x4c, 0x4c, 0x8c, 0xaf, 0x57, 0x89, 0xd5, 0xbb, 0x25, 0xc6, 0xd7, 0x37, 0x89, 0x1f, - 0xc1, 0x86, 0x50, 0xa2, 0xcd, 0x45, 0xa0, 0xf0, 0x1b, 0x29, 0x09, 0x67, 0x3f, 0x16, 0x43, 0x15, - 0x8a, 0x23, 0x12, 0x3a, 0x01, 0xf5, 0xe3, 0x89, 0xd2, 0x0b, 0xfc, 0x95, 0x45, 0x17, 0xfa, 0x00, - 0x9b, 0xe7, 0xf4, 0x9a, 0x8c, 0x6c, 0x97, 0x39, 0x7c, 0xec, 0xb8, 0x38, 0x8a, 0x8d, 0xc1, 0x9a, - 0x99, 0x2f, 0x7a, 0xba, 0x29, 0xb4, 0xb5, 0xc1, 0xa9, 0x84, 0x89, 0x1e, 0x42, 0x49, 0xac, 0x90, - 0x68, 0xe6, 0x13, 0x1d, 0x92, 0xf4, 0x52, 0x5f, 0x8c, 0x53, 0xf9, 0x22, 0x43, 0x79, 0x09, 0x2b, - 0x91, 0x48, 0x18, 0x4b, 0x9f, 0x9f, 0x49, 0x24, 0xce, 0x9f, 0x97, 0x86, 0x5e, 0xb9, 0xa7, 0xa1, - 0x5f, 0xde, 0x3b, 0xd9, 0x9b, 0x7b, 0x87, 0xc1, 0x86, 0x28, 0x89, 0x86, 0xe1, 0x15, 0xd1, 0x73, - 0x7c, 0x33, 0x3c, 0x5f, 0x2f, 0x8f, 0xa3, 0x04, 0xd2, 0x8c, 0x11, 0x2d, 0x71, 0x67, 0xdc, 0xaa, - 0x7c, 0x97, 0xa1, 0xb4, 0x18, 0x46, 0x1f, 0x25, 0xd8, 0x9a, 0xab, 0x71, 0xde, 0x54, 0xe9, 0xfe, - 0x9a, 0xaa, 0x09, 0xb6, 0x79, 0x5f, 0x57, 0x35, 0x25, 0xff, 0x35, 0x4d, 0xad, 0x8c, 0x45, 0x66, - 0x75, 0x2c, 0x2a, 0xdf, 0x24, 0xf8, 0xf7, 0xb7, 0x68, 0xb7, 0x5a, 0x3d, 0xf2, 0xf2, 0xea, 0xb1, - 0x41, 0x15, 0x43, 0xaf, 0xdc, 0xe5, 0xd0, 0x0b, 0xd4, 0xed, 0x53, 0xc8, 0x0b, 0x21, 0x22, 0x1d, - 0xca, 0x83, 0xce, 0x49, 0xc7, 0x32, 0x8f, 0xdf, 0xd8, 0xc3, 0xfe, 0xe0, 0xa8, 0xd3, 0x32, 0xf7, - 0xcc, 0x4e, 0x7b, 0x61, 0xb3, 0x36, 0xbb, 0x9a, 0x84, 0x54, 0xc8, 0x74, 0x0f, 0x5f, 0x69, 0x72, - 0xbc, 0x7b, 0x7b, 0x9d, 0xb6, 0x39, 0xec, 0x69, 0x19, 0x94, 0x07, 0xe5, 0xc0, 0xdc, 0x3f, 0xd0, - 0x14, 0x54, 0x82, 0x7c, 0xcb, 0x32, 0x8f, 0xcd, 0x56, 0xb3, 0xab, 0x65, 0x9f, 0x7d, 0x92, 0xe0, - 0xb1, 0xc3, 0x26, 0x22, 0xeb, 0x3f, 0x27, 0x7b, 0x24, 0xbd, 0x7d, 0x97, 0xbe, 0x34, 0x66, 0x2e, - 0xf6, 0xc6, 0x06, 0x0b, 0xc6, 0xf5, 0x31, 0xf1, 0xf8, 0x1f, 0x75, 0x3d, 0x09, 0x61, 0x9f, 0x86, - 0xb7, 0xf9, 0x7a, 0x78, 0xba, 0x12, 0xfa, 0x2a, 0x67, 0xf6, 0x5b, 0xcd, 0xb3, 0x1c, 0x47, 0xdb, - 0xfd, 0x15, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xe7, 0xb7, 0xf5, 0x8a, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/provenance.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/provenance.pb.go deleted file mode 100644 index fa3e9b8c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/provenance.pb.go +++ /dev/null @@ -1,797 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/containeranalysis/v1alpha1/provenance.proto - -package containeranalysis - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Specifies the hash algorithm, if any. -type Hash_HashType int32 - -const ( - // No hash requested. - Hash_NONE Hash_HashType = 0 - // A sha256 hash. - Hash_SHA256 Hash_HashType = 1 -) - -var Hash_HashType_name = map[int32]string{ - 0: "NONE", - 1: "SHA256", -} -var Hash_HashType_value = map[string]int32{ - "NONE": 0, - "SHA256": 1, -} - -func (x Hash_HashType) String() string { - return proto.EnumName(Hash_HashType_name, int32(x)) -} -func (Hash_HashType) EnumDescriptor() ([]byte, []int) { return fileDescriptor4, []int{3, 0} } - -// Provenance of a build. Contains all information needed to verify the full -// details about the build from source to completion. -type BuildProvenance struct { - // Unique identifier of the build. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // ID of the project. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Commands requested by the build. - Commands []*Command `protobuf:"bytes,5,rep,name=commands" json:"commands,omitempty"` - // Output of the build. - BuiltArtifacts []*Artifact `protobuf:"bytes,6,rep,name=built_artifacts,json=builtArtifacts" json:"built_artifacts,omitempty"` - // Time at which the build was created. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Time at which execution of the build was started. - StartTime *google_protobuf1.Timestamp `protobuf:"bytes,8,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time at which execution of the build was finished. - FinishTime *google_protobuf1.Timestamp `protobuf:"bytes,9,opt,name=finish_time,json=finishTime" json:"finish_time,omitempty"` - // E-mail address of the user who initiated this build. Note that this was the - // user's e-mail address at the time the build was initiated; this address may - // not represent the same end-user for all time. - Creator string `protobuf:"bytes,11,opt,name=creator" json:"creator,omitempty"` - // Google Cloud Storage bucket where logs were written. - LogsBucket string `protobuf:"bytes,13,opt,name=logs_bucket,json=logsBucket" json:"logs_bucket,omitempty"` - // Details of the Source input to the build. - SourceProvenance *Source `protobuf:"bytes,14,opt,name=source_provenance,json=sourceProvenance" json:"source_provenance,omitempty"` - // Trigger identifier if the build was triggered automatically; empty if not. - TriggerId string `protobuf:"bytes,15,opt,name=trigger_id,json=triggerId" json:"trigger_id,omitempty"` - // Special options applied to this build. This is a catch-all field where - // build providers can enter any desired additional details. - BuildOptions map[string]string `protobuf:"bytes,16,rep,name=build_options,json=buildOptions" json:"build_options,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Version string of the builder at the time this build was executed. - BuilderVersion string `protobuf:"bytes,17,opt,name=builder_version,json=builderVersion" json:"builder_version,omitempty"` -} - -func (m *BuildProvenance) Reset() { *m = BuildProvenance{} } -func (m *BuildProvenance) String() string { return proto.CompactTextString(m) } -func (*BuildProvenance) ProtoMessage() {} -func (*BuildProvenance) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *BuildProvenance) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *BuildProvenance) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *BuildProvenance) GetCommands() []*Command { - if m != nil { - return m.Commands - } - return nil -} - -func (m *BuildProvenance) GetBuiltArtifacts() []*Artifact { - if m != nil { - return m.BuiltArtifacts - } - return nil -} - -func (m *BuildProvenance) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *BuildProvenance) GetStartTime() *google_protobuf1.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *BuildProvenance) GetFinishTime() *google_protobuf1.Timestamp { - if m != nil { - return m.FinishTime - } - return nil -} - -func (m *BuildProvenance) GetCreator() string { - if m != nil { - return m.Creator - } - return "" -} - -func (m *BuildProvenance) GetLogsBucket() string { - if m != nil { - return m.LogsBucket - } - return "" -} - -func (m *BuildProvenance) GetSourceProvenance() *Source { - if m != nil { - return m.SourceProvenance - } - return nil -} - -func (m *BuildProvenance) GetTriggerId() string { - if m != nil { - return m.TriggerId - } - return "" -} - -func (m *BuildProvenance) GetBuildOptions() map[string]string { - if m != nil { - return m.BuildOptions - } - return nil -} - -func (m *BuildProvenance) GetBuilderVersion() string { - if m != nil { - return m.BuilderVersion - } - return "" -} - -// Source describes the location of the source used for the build. -type Source struct { - // Source location information. - // - // Types that are valid to be assigned to Source: - // *Source_StorageSource - // *Source_RepoSource - Source isSource_Source `protobuf_oneof:"source"` - // If provided, the input binary artifacts for the build came from this - // location. - ArtifactStorageSource *StorageSource `protobuf:"bytes,4,opt,name=artifact_storage_source,json=artifactStorageSource" json:"artifact_storage_source,omitempty"` - // Hash(es) of the build source, which can be used to verify that the original - // source integrity was maintained in the build. - // - // The keys to this map are file paths used as build source and the values - // contain the hash values for those files. - // - // If the build source came in a single package such as a gzipped tarfile - // (.tar.gz), the FileHash will be for the single path to that file. - FileHashes map[string]*FileHashes `protobuf:"bytes,3,rep,name=file_hashes,json=fileHashes" json:"file_hashes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // If provided, the source code used for the build came from this location. - Context *SourceContext `protobuf:"bytes,7,opt,name=context" json:"context,omitempty"` - // If provided, some of the source code used for the build may be found in - // these locations, in the case where the source repository had multiple - // remotes or submodules. This list will not include the context specified in - // the context field. - AdditionalContexts []*SourceContext `protobuf:"bytes,8,rep,name=additional_contexts,json=additionalContexts" json:"additional_contexts,omitempty"` -} - -func (m *Source) Reset() { *m = Source{} } -func (m *Source) String() string { return proto.CompactTextString(m) } -func (*Source) ProtoMessage() {} -func (*Source) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -type isSource_Source interface { - isSource_Source() -} - -type Source_StorageSource struct { - StorageSource *StorageSource `protobuf:"bytes,1,opt,name=storage_source,json=storageSource,oneof"` -} -type Source_RepoSource struct { - RepoSource *RepoSource `protobuf:"bytes,2,opt,name=repo_source,json=repoSource,oneof"` -} - -func (*Source_StorageSource) isSource_Source() {} -func (*Source_RepoSource) isSource_Source() {} - -func (m *Source) GetSource() isSource_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *Source) GetStorageSource() *StorageSource { - if x, ok := m.GetSource().(*Source_StorageSource); ok { - return x.StorageSource - } - return nil -} - -func (m *Source) GetRepoSource() *RepoSource { - if x, ok := m.GetSource().(*Source_RepoSource); ok { - return x.RepoSource - } - return nil -} - -func (m *Source) GetArtifactStorageSource() *StorageSource { - if m != nil { - return m.ArtifactStorageSource - } - return nil -} - -func (m *Source) GetFileHashes() map[string]*FileHashes { - if m != nil { - return m.FileHashes - } - return nil -} - -func (m *Source) GetContext() *SourceContext { - if m != nil { - return m.Context - } - return nil -} - -func (m *Source) GetAdditionalContexts() []*SourceContext { - if m != nil { - return m.AdditionalContexts - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Source) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Source_OneofMarshaler, _Source_OneofUnmarshaler, _Source_OneofSizer, []interface{}{ - (*Source_StorageSource)(nil), - (*Source_RepoSource)(nil), - } -} - -func _Source_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Source) - // source - switch x := m.Source.(type) { - case *Source_StorageSource: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StorageSource); err != nil { - return err - } - case *Source_RepoSource: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RepoSource); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Source.Source has unexpected type %T", x) - } - return nil -} - -func _Source_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Source) - switch tag { - case 1: // source.storage_source - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StorageSource) - err := b.DecodeMessage(msg) - m.Source = &Source_StorageSource{msg} - return true, err - case 2: // source.repo_source - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RepoSource) - err := b.DecodeMessage(msg) - m.Source = &Source_RepoSource{msg} - return true, err - default: - return false, nil - } -} - -func _Source_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Source) - // source - switch x := m.Source.(type) { - case *Source_StorageSource: - s := proto.Size(x.StorageSource) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Source_RepoSource: - s := proto.Size(x.RepoSource) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Container message for hashes of byte content of files, used in Source -// messages to verify integrity of source input to the build. -type FileHashes struct { - // Collection of file hashes. - FileHash []*Hash `protobuf:"bytes,1,rep,name=file_hash,json=fileHash" json:"file_hash,omitempty"` -} - -func (m *FileHashes) Reset() { *m = FileHashes{} } -func (m *FileHashes) String() string { return proto.CompactTextString(m) } -func (*FileHashes) ProtoMessage() {} -func (*FileHashes) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} } - -func (m *FileHashes) GetFileHash() []*Hash { - if m != nil { - return m.FileHash - } - return nil -} - -// Container message for hash values. -type Hash struct { - // The type of hash that was performed. - Type Hash_HashType `protobuf:"varint,1,opt,name=type,enum=google.devtools.containeranalysis.v1alpha1.Hash_HashType" json:"type,omitempty"` - // The hash value. - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (m *Hash) Reset() { *m = Hash{} } -func (m *Hash) String() string { return proto.CompactTextString(m) } -func (*Hash) ProtoMessage() {} -func (*Hash) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} } - -func (m *Hash) GetType() Hash_HashType { - if m != nil { - return m.Type - } - return Hash_NONE -} - -func (m *Hash) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -// StorageSource describes the location of the source in an archive file in -// Google Cloud Storage. -type StorageSource struct { - // Google Cloud Storage bucket containing source (see [Bucket Name - // Requirements] - // (https://cloud.google.com/storage/docs/bucket-naming#requirements)). - Bucket string `protobuf:"bytes,1,opt,name=bucket" json:"bucket,omitempty"` - // Google Cloud Storage object containing source. - Object string `protobuf:"bytes,2,opt,name=object" json:"object,omitempty"` - // Google Cloud Storage generation for the object. - Generation int64 `protobuf:"varint,3,opt,name=generation" json:"generation,omitempty"` -} - -func (m *StorageSource) Reset() { *m = StorageSource{} } -func (m *StorageSource) String() string { return proto.CompactTextString(m) } -func (*StorageSource) ProtoMessage() {} -func (*StorageSource) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} } - -func (m *StorageSource) GetBucket() string { - if m != nil { - return m.Bucket - } - return "" -} - -func (m *StorageSource) GetObject() string { - if m != nil { - return m.Object - } - return "" -} - -func (m *StorageSource) GetGeneration() int64 { - if m != nil { - return m.Generation - } - return 0 -} - -// RepoSource describes the location of the source in a Google Cloud Source -// Repository. -type RepoSource struct { - // ID of the project that owns the repo. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Name of the repo. - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName" json:"repo_name,omitempty"` - // A revision within the source repository must be specified in - // one of these ways. - // - // Types that are valid to be assigned to Revision: - // *RepoSource_BranchName - // *RepoSource_TagName - // *RepoSource_CommitSha - Revision isRepoSource_Revision `protobuf_oneof:"revision"` -} - -func (m *RepoSource) Reset() { *m = RepoSource{} } -func (m *RepoSource) String() string { return proto.CompactTextString(m) } -func (*RepoSource) ProtoMessage() {} -func (*RepoSource) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} } - -type isRepoSource_Revision interface { - isRepoSource_Revision() -} - -type RepoSource_BranchName struct { - BranchName string `protobuf:"bytes,3,opt,name=branch_name,json=branchName,oneof"` -} -type RepoSource_TagName struct { - TagName string `protobuf:"bytes,4,opt,name=tag_name,json=tagName,oneof"` -} -type RepoSource_CommitSha struct { - CommitSha string `protobuf:"bytes,5,opt,name=commit_sha,json=commitSha,oneof"` -} - -func (*RepoSource_BranchName) isRepoSource_Revision() {} -func (*RepoSource_TagName) isRepoSource_Revision() {} -func (*RepoSource_CommitSha) isRepoSource_Revision() {} - -func (m *RepoSource) GetRevision() isRepoSource_Revision { - if m != nil { - return m.Revision - } - return nil -} - -func (m *RepoSource) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RepoSource) GetRepoName() string { - if m != nil { - return m.RepoName - } - return "" -} - -func (m *RepoSource) GetBranchName() string { - if x, ok := m.GetRevision().(*RepoSource_BranchName); ok { - return x.BranchName - } - return "" -} - -func (m *RepoSource) GetTagName() string { - if x, ok := m.GetRevision().(*RepoSource_TagName); ok { - return x.TagName - } - return "" -} - -func (m *RepoSource) GetCommitSha() string { - if x, ok := m.GetRevision().(*RepoSource_CommitSha); ok { - return x.CommitSha - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RepoSource) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RepoSource_OneofMarshaler, _RepoSource_OneofUnmarshaler, _RepoSource_OneofSizer, []interface{}{ - (*RepoSource_BranchName)(nil), - (*RepoSource_TagName)(nil), - (*RepoSource_CommitSha)(nil), - } -} - -func _RepoSource_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RepoSource) - // revision - switch x := m.Revision.(type) { - case *RepoSource_BranchName: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.BranchName) - case *RepoSource_TagName: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.TagName) - case *RepoSource_CommitSha: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.CommitSha) - case nil: - default: - return fmt.Errorf("RepoSource.Revision has unexpected type %T", x) - } - return nil -} - -func _RepoSource_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RepoSource) - switch tag { - case 3: // revision.branch_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &RepoSource_BranchName{x} - return true, err - case 4: // revision.tag_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &RepoSource_TagName{x} - return true, err - case 5: // revision.commit_sha - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &RepoSource_CommitSha{x} - return true, err - default: - return false, nil - } -} - -func _RepoSource_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RepoSource) - // revision - switch x := m.Revision.(type) { - case *RepoSource_BranchName: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.BranchName))) - n += len(x.BranchName) - case *RepoSource_TagName: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.TagName))) - n += len(x.TagName) - case *RepoSource_CommitSha: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.CommitSha))) - n += len(x.CommitSha) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Command describes a step performed as part of the build pipeline. -type Command struct { - // Name of the command, as presented on the command line, or if the command is - // packaged as a Docker container, as presented to `docker pull`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Environment variables set before running this Command. - Env []string `protobuf:"bytes,2,rep,name=env" json:"env,omitempty"` - // Command-line arguments used when executing this Command. - Args []string `protobuf:"bytes,3,rep,name=args" json:"args,omitempty"` - // Working directory (relative to project source root) used when running - // this Command. - Dir string `protobuf:"bytes,4,opt,name=dir" json:"dir,omitempty"` - // Optional unique identifier for this Command, used in wait_for to reference - // this Command as a dependency. - Id string `protobuf:"bytes,5,opt,name=id" json:"id,omitempty"` - // The ID(s) of the Command(s) that this Command depends on. - WaitFor []string `protobuf:"bytes,6,rep,name=wait_for,json=waitFor" json:"wait_for,omitempty"` -} - -func (m *Command) Reset() { *m = Command{} } -func (m *Command) String() string { return proto.CompactTextString(m) } -func (*Command) ProtoMessage() {} -func (*Command) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} } - -func (m *Command) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Command) GetEnv() []string { - if m != nil { - return m.Env - } - return nil -} - -func (m *Command) GetArgs() []string { - if m != nil { - return m.Args - } - return nil -} - -func (m *Command) GetDir() string { - if m != nil { - return m.Dir - } - return "" -} - -func (m *Command) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Command) GetWaitFor() []string { - if m != nil { - return m.WaitFor - } - return nil -} - -// Artifact describes a build product. -type Artifact struct { - // Name of the artifact. This may be the path to a binary or jar file, or in - // the case of a container build, the name used to push the container image to - // Google Container Registry, as presented to `docker push`. - // - // This field is deprecated in favor of the plural `names` field; it continues - // to exist here to allow existing BuildProvenance serialized to json in - // google.devtools.containeranalysis.v1alpha1.BuildDetails.provenance_bytes to - // deserialize back into proto. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Hash or checksum value of a binary, or Docker Registry 2.0 digest of a - // container. - Checksum string `protobuf:"bytes,2,opt,name=checksum" json:"checksum,omitempty"` - // Artifact ID, if any; for container images, this will be a URL by digest - // like gcr.io/projectID/imagename@sha256:123456 - Id string `protobuf:"bytes,3,opt,name=id" json:"id,omitempty"` - // Related artifact names. This may be the path to a binary or jar file, or in - // the case of a container build, the name used to push the container image to - // Google Container Registry, as presented to `docker push`. Note that a - // single Artifact ID can have multiple names, for example if two tags are - // applied to one image. - Names []string `protobuf:"bytes,4,rep,name=names" json:"names,omitempty"` -} - -func (m *Artifact) Reset() { *m = Artifact{} } -func (m *Artifact) String() string { return proto.CompactTextString(m) } -func (*Artifact) ProtoMessage() {} -func (*Artifact) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} } - -func (m *Artifact) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Artifact) GetChecksum() string { - if m != nil { - return m.Checksum - } - return "" -} - -func (m *Artifact) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Artifact) GetNames() []string { - if m != nil { - return m.Names - } - return nil -} - -func init() { - proto.RegisterType((*BuildProvenance)(nil), "google.devtools.containeranalysis.v1alpha1.BuildProvenance") - proto.RegisterType((*Source)(nil), "google.devtools.containeranalysis.v1alpha1.Source") - proto.RegisterType((*FileHashes)(nil), "google.devtools.containeranalysis.v1alpha1.FileHashes") - proto.RegisterType((*Hash)(nil), "google.devtools.containeranalysis.v1alpha1.Hash") - proto.RegisterType((*StorageSource)(nil), "google.devtools.containeranalysis.v1alpha1.StorageSource") - proto.RegisterType((*RepoSource)(nil), "google.devtools.containeranalysis.v1alpha1.RepoSource") - proto.RegisterType((*Command)(nil), "google.devtools.containeranalysis.v1alpha1.Command") - proto.RegisterType((*Artifact)(nil), "google.devtools.containeranalysis.v1alpha1.Artifact") - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.Hash_HashType", Hash_HashType_name, Hash_HashType_value) -} - -func init() { - proto.RegisterFile("google/devtools/containeranalysis/v1alpha1/provenance.proto", fileDescriptor4) -} - -var fileDescriptor4 = []byte{ - // 1026 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x6e, 0x1b, 0x45, - 0x14, 0xee, 0xfa, 0x77, 0xf7, 0xb8, 0x71, 0x92, 0xa1, 0xc0, 0xe2, 0x52, 0x62, 0x2c, 0x21, 0x22, - 0x2e, 0x6c, 0x9a, 0x42, 0x45, 0xc8, 0x45, 0x15, 0x47, 0x2d, 0xa9, 0x44, 0x92, 0x6a, 0x53, 0x21, - 0x41, 0x85, 0x96, 0xf1, 0xee, 0x78, 0x3d, 0xcd, 0x7a, 0x67, 0x99, 0x19, 0x1b, 0x7c, 0xc7, 0x03, - 0xc0, 0x4b, 0xf0, 0x0e, 0xdc, 0xf2, 0x2e, 0xbc, 0x09, 0x9a, 0x9f, 0xb5, 0x1d, 0xa7, 0x55, 0xbb, - 0xea, 0xcd, 0x6a, 0xce, 0x37, 0xe7, 0x7c, 0x67, 0xe6, 0xcc, 0x77, 0x66, 0x16, 0x8e, 0x12, 0xc6, - 0x92, 0x94, 0x0c, 0x62, 0x32, 0x97, 0x8c, 0xa5, 0x62, 0x10, 0xb1, 0x4c, 0x62, 0x9a, 0x11, 0x8e, - 0x33, 0x9c, 0x2e, 0x04, 0x15, 0x83, 0xf9, 0x7d, 0x9c, 0xe6, 0x13, 0x7c, 0x7f, 0x90, 0x73, 0x36, - 0x27, 0x19, 0xce, 0x22, 0xd2, 0xcf, 0x39, 0x93, 0x0c, 0x7d, 0x61, 0x82, 0xfb, 0x45, 0x70, 0xff, - 0x46, 0x70, 0xbf, 0x08, 0xee, 0x7c, 0x6c, 0x13, 0xe1, 0x9c, 0x0e, 0x70, 0x96, 0x31, 0x89, 0x25, - 0x65, 0x99, 0x30, 0x4c, 0x9d, 0x47, 0x25, 0x96, 0x21, 0xd8, 0x8c, 0x47, 0x24, 0x54, 0x1e, 0xe4, - 0x77, 0x69, 0x09, 0xf6, 0x2c, 0x81, 0xb6, 0x46, 0xb3, 0xf1, 0x40, 0xd2, 0x29, 0x11, 0x12, 0x4f, - 0x73, 0xe3, 0xd0, 0xfb, 0xb7, 0x01, 0xdb, 0xc3, 0x19, 0x4d, 0xe3, 0x67, 0xcb, 0x5d, 0xa0, 0x36, - 0x54, 0x68, 0xec, 0x3b, 0x5d, 0x67, 0xdf, 0x0b, 0x2a, 0x34, 0x46, 0xf7, 0x00, 0x72, 0xce, 0x5e, - 0x92, 0x48, 0x86, 0x34, 0xf6, 0x2b, 0x1a, 0xf7, 0x2c, 0xf2, 0x34, 0x46, 0x17, 0xe0, 0x46, 0x6c, - 0x3a, 0xc5, 0x59, 0x2c, 0xfc, 0x7a, 0xb7, 0xba, 0xdf, 0x3a, 0x78, 0xd0, 0x7f, 0xfb, 0x0a, 0xf4, - 0x4f, 0x4c, 0x6c, 0xb0, 0x24, 0x41, 0x3f, 0xc3, 0xf6, 0x68, 0x46, 0x53, 0x19, 0x62, 0x2e, 0xe9, - 0x18, 0x47, 0x52, 0xf8, 0x0d, 0xcd, 0xfb, 0x55, 0x19, 0xde, 0x63, 0x1b, 0x1c, 0xb4, 0x35, 0x59, - 0x61, 0x0a, 0x74, 0x04, 0xad, 0x88, 0x13, 0x2c, 0x49, 0xa8, 0x8a, 0xe1, 0x37, 0xbb, 0xce, 0x7e, - 0xeb, 0xa0, 0x53, 0x50, 0x17, 0x95, 0xea, 0x3f, 0x2f, 0x2a, 0x15, 0x80, 0x71, 0x57, 0x00, 0x3a, - 0x04, 0x10, 0x12, 0x73, 0x69, 0x62, 0xdd, 0x37, 0xc6, 0x7a, 0xda, 0x5b, 0x87, 0x1e, 0x41, 0x6b, - 0x4c, 0x33, 0x2a, 0x26, 0x26, 0xd6, 0x7b, 0x73, 0x5e, 0xe3, 0xae, 0x83, 0x7d, 0x68, 0xea, 0x55, - 0x30, 0xee, 0xb7, 0xf4, 0x01, 0x14, 0x26, 0xda, 0x83, 0x56, 0xca, 0x12, 0x11, 0x8e, 0x66, 0xd1, - 0x15, 0x91, 0xfe, 0x96, 0x9e, 0x05, 0x05, 0x0d, 0x35, 0x82, 0x42, 0xd8, 0xb5, 0xda, 0x58, 0x29, - 0xd5, 0x6f, 0xeb, 0xec, 0x07, 0x65, 0x0a, 0x7a, 0xa9, 0x49, 0x82, 0x1d, 0x43, 0xb6, 0xa6, 0x97, - 0x7b, 0x00, 0x92, 0xd3, 0x24, 0x21, 0x5c, 0xe9, 0x63, 0xdb, 0xe8, 0xc3, 0x22, 0x4f, 0x63, 0xc4, - 0x61, 0x4b, 0x9d, 0x40, 0x1c, 0xb2, 0x5c, 0x6b, 0xdb, 0xdf, 0xd1, 0x87, 0x79, 0x56, 0x26, 0xf7, - 0x86, 0x44, 0x8d, 0x7d, 0x61, 0xf8, 0x1e, 0x67, 0x92, 0x2f, 0x82, 0xdb, 0xa3, 0x35, 0x08, 0x7d, - 0x6e, 0x24, 0x14, 0x13, 0x1e, 0xce, 0x09, 0x17, 0x94, 0x65, 0xfe, 0xae, 0x5e, 0x57, 0xdb, 0xc2, - 0x3f, 0x18, 0xb4, 0xf3, 0x08, 0x76, 0x6f, 0x70, 0xa1, 0x1d, 0xa8, 0x5e, 0x91, 0x85, 0xed, 0x00, - 0x35, 0x44, 0x77, 0xa0, 0x3e, 0xc7, 0xe9, 0x8c, 0x58, 0xf5, 0x1b, 0xe3, 0xdb, 0xca, 0x37, 0x4e, - 0xef, 0xbf, 0x3a, 0x34, 0x4c, 0x65, 0xd0, 0x08, 0xda, 0x42, 0x32, 0x8e, 0x13, 0x12, 0x9a, 0x1a, - 0x69, 0x86, 0xd6, 0xc1, 0x61, 0xa9, 0x2a, 0x1b, 0x06, 0x43, 0x79, 0x7a, 0x2b, 0xd8, 0x12, 0xeb, - 0x00, 0xfa, 0x11, 0x5a, 0x9c, 0xe4, 0xac, 0x48, 0x50, 0xd1, 0x09, 0x1e, 0x96, 0x49, 0x10, 0x90, - 0x9c, 0x2d, 0xd9, 0x81, 0x2f, 0x2d, 0xf4, 0x2b, 0x7c, 0x58, 0x34, 0x5c, 0xb8, 0xb1, 0x8f, 0xda, - 0x3b, 0xee, 0x23, 0x78, 0xbf, 0x60, 0xbe, 0x06, 0xa3, 0x48, 0xb5, 0x44, 0x4a, 0xc2, 0x09, 0x16, - 0x13, 0x22, 0xfc, 0xaa, 0x16, 0xc6, 0xb0, 0xbc, 0x28, 0xfb, 0x4f, 0x68, 0x4a, 0x4e, 0x35, 0x89, - 0x51, 0x03, 0x8c, 0x97, 0x00, 0xba, 0x84, 0xa6, 0xbd, 0x14, 0x6d, 0xaf, 0x1f, 0x96, 0x4f, 0x70, - 0x62, 0x08, 0x82, 0x82, 0x09, 0xbd, 0x84, 0xf7, 0x70, 0x1c, 0x53, 0x25, 0x1a, 0x9c, 0x16, 0x97, - 0xae, 0xf0, 0x5d, 0xbd, 0x83, 0x77, 0x48, 0x80, 0x56, 0xac, 0x16, 0x12, 0x9d, 0x19, 0x6c, 0x6f, - 0xec, 0xef, 0x15, 0x0a, 0xfd, 0x7e, 0x5d, 0xa1, 0x25, 0x25, 0xb1, 0x62, 0x5f, 0x53, 0xf6, 0xd0, - 0x85, 0x86, 0x39, 0xfe, 0xde, 0x0b, 0x80, 0x95, 0x0b, 0x3a, 0x03, 0x6f, 0x79, 0x68, 0xbe, 0xa3, - 0x37, 0xfc, 0x65, 0x99, 0x6c, 0x8a, 0x26, 0x70, 0x8b, 0x03, 0xea, 0xfd, 0xe5, 0x40, 0x4d, 0x0d, - 0xd0, 0x19, 0xd4, 0xe4, 0x22, 0x37, 0x4d, 0xd3, 0x2e, 0x57, 0x43, 0x15, 0xaf, 0x3f, 0xcf, 0x17, - 0x39, 0x09, 0x34, 0xcd, 0xf5, 0x96, 0xbd, 0x6d, 0x37, 0xd6, 0xeb, 0x82, 0x5b, 0xf8, 0x21, 0x17, - 0x6a, 0xe7, 0x17, 0xe7, 0x8f, 0x77, 0x6e, 0x21, 0x80, 0xc6, 0xe5, 0xe9, 0xf1, 0xc1, 0xd7, 0x0f, - 0x77, 0x9c, 0x5e, 0x08, 0x5b, 0xd7, 0x45, 0xfa, 0x01, 0x34, 0xec, 0xdd, 0x6a, 0xca, 0x6d, 0x2d, - 0x85, 0xb3, 0x91, 0x7a, 0x03, 0xed, 0xa5, 0x60, 0x2d, 0xf4, 0x09, 0x40, 0x42, 0xd4, 0x32, 0xd5, - 0x31, 0xfa, 0xd5, 0xae, 0xb3, 0x5f, 0x0d, 0xd6, 0x90, 0xde, 0x3f, 0x0e, 0xc0, 0xaa, 0x09, 0x37, - 0x5e, 0x57, 0x67, 0xf3, 0x75, 0xbd, 0x0b, 0x9e, 0x6e, 0xf8, 0x0c, 0x4f, 0x8b, 0xdb, 0xc7, 0x55, - 0xc0, 0x39, 0x9e, 0x12, 0xf4, 0x29, 0xb4, 0x46, 0x1c, 0x67, 0xd1, 0xc4, 0x4c, 0xab, 0x5c, 0x9e, - 0xea, 0x6a, 0x03, 0x6a, 0x97, 0xbb, 0xe0, 0x4a, 0x9c, 0x98, 0xf9, 0x9a, 0x9d, 0x6f, 0x4a, 0x9c, - 0xe8, 0xc9, 0x3d, 0x00, 0xf5, 0xea, 0x52, 0x19, 0x8a, 0x09, 0xf6, 0xeb, 0x76, 0xda, 0x33, 0xd8, - 0xe5, 0x04, 0x0f, 0x01, 0x5c, 0x4e, 0xe6, 0x54, 0x5d, 0x95, 0xbd, 0x3f, 0x1c, 0x68, 0xda, 0xc7, - 0x1a, 0x21, 0xa8, 0x69, 0x46, 0xb3, 0x5c, 0x3d, 0x56, 0x9a, 0x24, 0xd9, 0xdc, 0xaf, 0x74, 0xab, - 0x4a, 0x93, 0x24, 0x9b, 0x2b, 0x2f, 0xcc, 0x13, 0xd3, 0xd7, 0x5e, 0xa0, 0xc7, 0xca, 0x2b, 0xa6, - 0xdc, 0x2c, 0x25, 0x50, 0x43, 0xfb, 0xbb, 0x51, 0x5f, 0xfe, 0x6e, 0x7c, 0x04, 0xee, 0x6f, 0x98, - 0xca, 0x70, 0xcc, 0xb8, 0x7e, 0xf7, 0xbd, 0xa0, 0xa9, 0xec, 0x27, 0x8c, 0xf7, 0x7e, 0x01, 0xb7, - 0x78, 0xc7, 0x5f, 0xb9, 0x84, 0x0e, 0xb8, 0xd1, 0x84, 0x44, 0x57, 0x62, 0x36, 0x2d, 0x6a, 0x55, - 0xd8, 0x36, 0x4d, 0x75, 0x99, 0xe6, 0x0e, 0xd4, 0x55, 0x8c, 0xf0, 0x6b, 0x3a, 0x87, 0x31, 0x86, - 0x7f, 0x3a, 0xf0, 0x59, 0xc4, 0xa6, 0x85, 0xf8, 0x5e, 0xaf, 0xb9, 0x67, 0xce, 0x4f, 0x2f, 0xac, - 0x53, 0xc2, 0x52, 0x9c, 0x25, 0x7d, 0xc6, 0x93, 0x41, 0x42, 0x32, 0xfd, 0x90, 0x0f, 0xcc, 0x14, - 0xce, 0xa9, 0x78, 0x9b, 0x9f, 0xb7, 0xa3, 0x1b, 0x53, 0x7f, 0x57, 0xaa, 0xdf, 0x9d, 0x1c, 0x8f, - 0x1a, 0x9a, 0xed, 0xc1, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x91, 0xec, 0x1b, 0x85, 0x90, 0x0a, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/source_context.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/source_context.pb.go deleted file mode 100644 index 3ab29ad9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1/source_context.pb.go +++ /dev/null @@ -1,751 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/containeranalysis/v1alpha1/source_context.proto - -package containeranalysis - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The type of an alias. -type AliasContext_Kind int32 - -const ( - // Unknown. - AliasContext_KIND_UNSPECIFIED AliasContext_Kind = 0 - // Git tag. - AliasContext_FIXED AliasContext_Kind = 1 - // Git branch. - AliasContext_MOVABLE AliasContext_Kind = 2 - // Used to specify non-standard aliases. For example, if a Git repo has a - // ref named "refs/foo/bar". - AliasContext_OTHER AliasContext_Kind = 4 -) - -var AliasContext_Kind_name = map[int32]string{ - 0: "KIND_UNSPECIFIED", - 1: "FIXED", - 2: "MOVABLE", - 4: "OTHER", -} -var AliasContext_Kind_value = map[string]int32{ - "KIND_UNSPECIFIED": 0, - "FIXED": 1, - "MOVABLE": 2, - "OTHER": 4, -} - -func (x AliasContext_Kind) String() string { - return proto.EnumName(AliasContext_Kind_name, int32(x)) -} -func (AliasContext_Kind) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{1, 0} } - -// A SourceContext is a reference to a tree of files. A SourceContext together -// with a path point to a unique revision of a single file or directory. -type SourceContext struct { - // A SourceContext can refer any one of the following types of repositories. - // - // Types that are valid to be assigned to Context: - // *SourceContext_CloudRepo - // *SourceContext_Gerrit - // *SourceContext_Git - Context isSourceContext_Context `protobuf_oneof:"context"` - // Labels with user defined metadata. - Labels map[string]string `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *SourceContext) Reset() { *m = SourceContext{} } -func (m *SourceContext) String() string { return proto.CompactTextString(m) } -func (*SourceContext) ProtoMessage() {} -func (*SourceContext) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -type isSourceContext_Context interface { - isSourceContext_Context() -} - -type SourceContext_CloudRepo struct { - CloudRepo *CloudRepoSourceContext `protobuf:"bytes,1,opt,name=cloud_repo,json=cloudRepo,oneof"` -} -type SourceContext_Gerrit struct { - Gerrit *GerritSourceContext `protobuf:"bytes,2,opt,name=gerrit,oneof"` -} -type SourceContext_Git struct { - Git *GitSourceContext `protobuf:"bytes,3,opt,name=git,oneof"` -} - -func (*SourceContext_CloudRepo) isSourceContext_Context() {} -func (*SourceContext_Gerrit) isSourceContext_Context() {} -func (*SourceContext_Git) isSourceContext_Context() {} - -func (m *SourceContext) GetContext() isSourceContext_Context { - if m != nil { - return m.Context - } - return nil -} - -func (m *SourceContext) GetCloudRepo() *CloudRepoSourceContext { - if x, ok := m.GetContext().(*SourceContext_CloudRepo); ok { - return x.CloudRepo - } - return nil -} - -func (m *SourceContext) GetGerrit() *GerritSourceContext { - if x, ok := m.GetContext().(*SourceContext_Gerrit); ok { - return x.Gerrit - } - return nil -} - -func (m *SourceContext) GetGit() *GitSourceContext { - if x, ok := m.GetContext().(*SourceContext_Git); ok { - return x.Git - } - return nil -} - -func (m *SourceContext) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SourceContext) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SourceContext_OneofMarshaler, _SourceContext_OneofUnmarshaler, _SourceContext_OneofSizer, []interface{}{ - (*SourceContext_CloudRepo)(nil), - (*SourceContext_Gerrit)(nil), - (*SourceContext_Git)(nil), - } -} - -func _SourceContext_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SourceContext) - // context - switch x := m.Context.(type) { - case *SourceContext_CloudRepo: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CloudRepo); err != nil { - return err - } - case *SourceContext_Gerrit: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Gerrit); err != nil { - return err - } - case *SourceContext_Git: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Git); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("SourceContext.Context has unexpected type %T", x) - } - return nil -} - -func _SourceContext_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SourceContext) - switch tag { - case 1: // context.cloud_repo - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CloudRepoSourceContext) - err := b.DecodeMessage(msg) - m.Context = &SourceContext_CloudRepo{msg} - return true, err - case 2: // context.gerrit - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GerritSourceContext) - err := b.DecodeMessage(msg) - m.Context = &SourceContext_Gerrit{msg} - return true, err - case 3: // context.git - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GitSourceContext) - err := b.DecodeMessage(msg) - m.Context = &SourceContext_Git{msg} - return true, err - default: - return false, nil - } -} - -func _SourceContext_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SourceContext) - // context - switch x := m.Context.(type) { - case *SourceContext_CloudRepo: - s := proto.Size(x.CloudRepo) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *SourceContext_Gerrit: - s := proto.Size(x.Gerrit) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *SourceContext_Git: - s := proto.Size(x.Git) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// An alias to a repo revision. -type AliasContext struct { - // The alias kind. - Kind AliasContext_Kind `protobuf:"varint,1,opt,name=kind,enum=google.devtools.containeranalysis.v1alpha1.AliasContext_Kind" json:"kind,omitempty"` - // The alias name. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *AliasContext) Reset() { *m = AliasContext{} } -func (m *AliasContext) String() string { return proto.CompactTextString(m) } -func (*AliasContext) ProtoMessage() {} -func (*AliasContext) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} } - -func (m *AliasContext) GetKind() AliasContext_Kind { - if m != nil { - return m.Kind - } - return AliasContext_KIND_UNSPECIFIED -} - -func (m *AliasContext) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A CloudRepoSourceContext denotes a particular revision in a Google Cloud -// Source Repo. -type CloudRepoSourceContext struct { - // The ID of the repo. - RepoId *RepoId `protobuf:"bytes,1,opt,name=repo_id,json=repoId" json:"repo_id,omitempty"` - // A revision in a Cloud Repo can be identified by either its revision ID or - // its alias. - // - // Types that are valid to be assigned to Revision: - // *CloudRepoSourceContext_RevisionId - // *CloudRepoSourceContext_AliasContext - Revision isCloudRepoSourceContext_Revision `protobuf_oneof:"revision"` -} - -func (m *CloudRepoSourceContext) Reset() { *m = CloudRepoSourceContext{} } -func (m *CloudRepoSourceContext) String() string { return proto.CompactTextString(m) } -func (*CloudRepoSourceContext) ProtoMessage() {} -func (*CloudRepoSourceContext) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{2} } - -type isCloudRepoSourceContext_Revision interface { - isCloudRepoSourceContext_Revision() -} - -type CloudRepoSourceContext_RevisionId struct { - RevisionId string `protobuf:"bytes,2,opt,name=revision_id,json=revisionId,oneof"` -} -type CloudRepoSourceContext_AliasContext struct { - AliasContext *AliasContext `protobuf:"bytes,3,opt,name=alias_context,json=aliasContext,oneof"` -} - -func (*CloudRepoSourceContext_RevisionId) isCloudRepoSourceContext_Revision() {} -func (*CloudRepoSourceContext_AliasContext) isCloudRepoSourceContext_Revision() {} - -func (m *CloudRepoSourceContext) GetRevision() isCloudRepoSourceContext_Revision { - if m != nil { - return m.Revision - } - return nil -} - -func (m *CloudRepoSourceContext) GetRepoId() *RepoId { - if m != nil { - return m.RepoId - } - return nil -} - -func (m *CloudRepoSourceContext) GetRevisionId() string { - if x, ok := m.GetRevision().(*CloudRepoSourceContext_RevisionId); ok { - return x.RevisionId - } - return "" -} - -func (m *CloudRepoSourceContext) GetAliasContext() *AliasContext { - if x, ok := m.GetRevision().(*CloudRepoSourceContext_AliasContext); ok { - return x.AliasContext - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CloudRepoSourceContext) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CloudRepoSourceContext_OneofMarshaler, _CloudRepoSourceContext_OneofUnmarshaler, _CloudRepoSourceContext_OneofSizer, []interface{}{ - (*CloudRepoSourceContext_RevisionId)(nil), - (*CloudRepoSourceContext_AliasContext)(nil), - } -} - -func _CloudRepoSourceContext_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CloudRepoSourceContext) - // revision - switch x := m.Revision.(type) { - case *CloudRepoSourceContext_RevisionId: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.RevisionId) - case *CloudRepoSourceContext_AliasContext: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AliasContext); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CloudRepoSourceContext.Revision has unexpected type %T", x) - } - return nil -} - -func _CloudRepoSourceContext_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CloudRepoSourceContext) - switch tag { - case 2: // revision.revision_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &CloudRepoSourceContext_RevisionId{x} - return true, err - case 3: // revision.alias_context - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AliasContext) - err := b.DecodeMessage(msg) - m.Revision = &CloudRepoSourceContext_AliasContext{msg} - return true, err - default: - return false, nil - } -} - -func _CloudRepoSourceContext_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CloudRepoSourceContext) - // revision - switch x := m.Revision.(type) { - case *CloudRepoSourceContext_RevisionId: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RevisionId))) - n += len(x.RevisionId) - case *CloudRepoSourceContext_AliasContext: - s := proto.Size(x.AliasContext) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A SourceContext referring to a Gerrit project. -type GerritSourceContext struct { - // The URI of a running Gerrit instance. - HostUri string `protobuf:"bytes,1,opt,name=host_uri,json=hostUri" json:"host_uri,omitempty"` - // The full project name within the host. Projects may be nested, so - // "project/subproject" is a valid project name. The "repo name" is - // the hostURI/project. - GerritProject string `protobuf:"bytes,2,opt,name=gerrit_project,json=gerritProject" json:"gerrit_project,omitempty"` - // A revision in a Gerrit project can be identified by either its revision ID - // or its alias. - // - // Types that are valid to be assigned to Revision: - // *GerritSourceContext_RevisionId - // *GerritSourceContext_AliasContext - Revision isGerritSourceContext_Revision `protobuf_oneof:"revision"` -} - -func (m *GerritSourceContext) Reset() { *m = GerritSourceContext{} } -func (m *GerritSourceContext) String() string { return proto.CompactTextString(m) } -func (*GerritSourceContext) ProtoMessage() {} -func (*GerritSourceContext) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{3} } - -type isGerritSourceContext_Revision interface { - isGerritSourceContext_Revision() -} - -type GerritSourceContext_RevisionId struct { - RevisionId string `protobuf:"bytes,3,opt,name=revision_id,json=revisionId,oneof"` -} -type GerritSourceContext_AliasContext struct { - AliasContext *AliasContext `protobuf:"bytes,4,opt,name=alias_context,json=aliasContext,oneof"` -} - -func (*GerritSourceContext_RevisionId) isGerritSourceContext_Revision() {} -func (*GerritSourceContext_AliasContext) isGerritSourceContext_Revision() {} - -func (m *GerritSourceContext) GetRevision() isGerritSourceContext_Revision { - if m != nil { - return m.Revision - } - return nil -} - -func (m *GerritSourceContext) GetHostUri() string { - if m != nil { - return m.HostUri - } - return "" -} - -func (m *GerritSourceContext) GetGerritProject() string { - if m != nil { - return m.GerritProject - } - return "" -} - -func (m *GerritSourceContext) GetRevisionId() string { - if x, ok := m.GetRevision().(*GerritSourceContext_RevisionId); ok { - return x.RevisionId - } - return "" -} - -func (m *GerritSourceContext) GetAliasContext() *AliasContext { - if x, ok := m.GetRevision().(*GerritSourceContext_AliasContext); ok { - return x.AliasContext - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*GerritSourceContext) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _GerritSourceContext_OneofMarshaler, _GerritSourceContext_OneofUnmarshaler, _GerritSourceContext_OneofSizer, []interface{}{ - (*GerritSourceContext_RevisionId)(nil), - (*GerritSourceContext_AliasContext)(nil), - } -} - -func _GerritSourceContext_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*GerritSourceContext) - // revision - switch x := m.Revision.(type) { - case *GerritSourceContext_RevisionId: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.RevisionId) - case *GerritSourceContext_AliasContext: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AliasContext); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("GerritSourceContext.Revision has unexpected type %T", x) - } - return nil -} - -func _GerritSourceContext_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*GerritSourceContext) - switch tag { - case 3: // revision.revision_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &GerritSourceContext_RevisionId{x} - return true, err - case 4: // revision.alias_context - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AliasContext) - err := b.DecodeMessage(msg) - m.Revision = &GerritSourceContext_AliasContext{msg} - return true, err - default: - return false, nil - } -} - -func _GerritSourceContext_OneofSizer(msg proto.Message) (n int) { - m := msg.(*GerritSourceContext) - // revision - switch x := m.Revision.(type) { - case *GerritSourceContext_RevisionId: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RevisionId))) - n += len(x.RevisionId) - case *GerritSourceContext_AliasContext: - s := proto.Size(x.AliasContext) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A GitSourceContext denotes a particular revision in a third party Git -// repository (e.g., GitHub). -type GitSourceContext struct { - // Git repository URL. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // Required. - // Git commit hash. - RevisionId string `protobuf:"bytes,2,opt,name=revision_id,json=revisionId" json:"revision_id,omitempty"` -} - -func (m *GitSourceContext) Reset() { *m = GitSourceContext{} } -func (m *GitSourceContext) String() string { return proto.CompactTextString(m) } -func (*GitSourceContext) ProtoMessage() {} -func (*GitSourceContext) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{4} } - -func (m *GitSourceContext) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *GitSourceContext) GetRevisionId() string { - if m != nil { - return m.RevisionId - } - return "" -} - -// A unique identifier for a Cloud Repo. -type RepoId struct { - // A cloud repo can be identified by either its project ID and repository name - // combination, or its globally unique identifier. - // - // Types that are valid to be assigned to Id: - // *RepoId_ProjectRepoId - // *RepoId_Uid - Id isRepoId_Id `protobuf_oneof:"id"` -} - -func (m *RepoId) Reset() { *m = RepoId{} } -func (m *RepoId) String() string { return proto.CompactTextString(m) } -func (*RepoId) ProtoMessage() {} -func (*RepoId) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{5} } - -type isRepoId_Id interface { - isRepoId_Id() -} - -type RepoId_ProjectRepoId struct { - ProjectRepoId *ProjectRepoId `protobuf:"bytes,1,opt,name=project_repo_id,json=projectRepoId,oneof"` -} -type RepoId_Uid struct { - Uid string `protobuf:"bytes,2,opt,name=uid,oneof"` -} - -func (*RepoId_ProjectRepoId) isRepoId_Id() {} -func (*RepoId_Uid) isRepoId_Id() {} - -func (m *RepoId) GetId() isRepoId_Id { - if m != nil { - return m.Id - } - return nil -} - -func (m *RepoId) GetProjectRepoId() *ProjectRepoId { - if x, ok := m.GetId().(*RepoId_ProjectRepoId); ok { - return x.ProjectRepoId - } - return nil -} - -func (m *RepoId) GetUid() string { - if x, ok := m.GetId().(*RepoId_Uid); ok { - return x.Uid - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RepoId) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RepoId_OneofMarshaler, _RepoId_OneofUnmarshaler, _RepoId_OneofSizer, []interface{}{ - (*RepoId_ProjectRepoId)(nil), - (*RepoId_Uid)(nil), - } -} - -func _RepoId_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RepoId) - // id - switch x := m.Id.(type) { - case *RepoId_ProjectRepoId: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ProjectRepoId); err != nil { - return err - } - case *RepoId_Uid: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Uid) - case nil: - default: - return fmt.Errorf("RepoId.Id has unexpected type %T", x) - } - return nil -} - -func _RepoId_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RepoId) - switch tag { - case 1: // id.project_repo_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ProjectRepoId) - err := b.DecodeMessage(msg) - m.Id = &RepoId_ProjectRepoId{msg} - return true, err - case 2: // id.uid - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Id = &RepoId_Uid{x} - return true, err - default: - return false, nil - } -} - -func _RepoId_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RepoId) - // id - switch x := m.Id.(type) { - case *RepoId_ProjectRepoId: - s := proto.Size(x.ProjectRepoId) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RepoId_Uid: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Uid))) - n += len(x.Uid) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Selects a repo using a Google Cloud Platform project ID (e.g., -// winged-cargo-31) and a repo name within that project. -type ProjectRepoId struct { - // The ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the repo. Leave empty for the default repo. - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName" json:"repo_name,omitempty"` -} - -func (m *ProjectRepoId) Reset() { *m = ProjectRepoId{} } -func (m *ProjectRepoId) String() string { return proto.CompactTextString(m) } -func (*ProjectRepoId) ProtoMessage() {} -func (*ProjectRepoId) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{6} } - -func (m *ProjectRepoId) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ProjectRepoId) GetRepoName() string { - if m != nil { - return m.RepoName - } - return "" -} - -func init() { - proto.RegisterType((*SourceContext)(nil), "google.devtools.containeranalysis.v1alpha1.SourceContext") - proto.RegisterType((*AliasContext)(nil), "google.devtools.containeranalysis.v1alpha1.AliasContext") - proto.RegisterType((*CloudRepoSourceContext)(nil), "google.devtools.containeranalysis.v1alpha1.CloudRepoSourceContext") - proto.RegisterType((*GerritSourceContext)(nil), "google.devtools.containeranalysis.v1alpha1.GerritSourceContext") - proto.RegisterType((*GitSourceContext)(nil), "google.devtools.containeranalysis.v1alpha1.GitSourceContext") - proto.RegisterType((*RepoId)(nil), "google.devtools.containeranalysis.v1alpha1.RepoId") - proto.RegisterType((*ProjectRepoId)(nil), "google.devtools.containeranalysis.v1alpha1.ProjectRepoId") - proto.RegisterEnum("google.devtools.containeranalysis.v1alpha1.AliasContext_Kind", AliasContext_Kind_name, AliasContext_Kind_value) -} - -func init() { - proto.RegisterFile("google/devtools/containeranalysis/v1alpha1/source_context.proto", fileDescriptor5) -} - -var fileDescriptor5 = []byte{ - // 675 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x95, 0x5d, 0x4e, 0xdb, 0x4a, - 0x14, 0xc7, 0xe3, 0x38, 0x24, 0xf8, 0x84, 0x70, 0xa3, 0xb9, 0xe8, 0x2a, 0x97, 0x7b, 0xab, 0x52, - 0x4b, 0x48, 0xa8, 0x0f, 0xb6, 0x48, 0x5f, 0xa0, 0x1f, 0x42, 0x24, 0x18, 0x62, 0x85, 0x42, 0x6a, - 0x4a, 0xd5, 0x0f, 0x55, 0xd6, 0x60, 0x8f, 0xcc, 0x14, 0xe3, 0xb1, 0xc6, 0x76, 0x54, 0x56, 0xd0, - 0x97, 0xae, 0xa2, 0x8b, 0xe8, 0x12, 0xba, 0x95, 0xae, 0xa0, 0xef, 0xd5, 0x8c, 0x6d, 0xc9, 0x01, - 0x2a, 0x91, 0x4a, 0x7d, 0xca, 0xcc, 0x99, 0x99, 0xdf, 0xf9, 0x9f, 0x33, 0xff, 0x89, 0x61, 0x27, - 0x60, 0x2c, 0x08, 0x89, 0xe9, 0x93, 0x69, 0xca, 0x58, 0x98, 0x98, 0x1e, 0x8b, 0x52, 0x4c, 0x23, - 0xc2, 0x71, 0x84, 0xc3, 0xab, 0x84, 0x26, 0xe6, 0x74, 0x13, 0x87, 0xf1, 0x39, 0xde, 0x34, 0x13, - 0x96, 0x71, 0x8f, 0xb8, 0x62, 0x07, 0xf9, 0x98, 0x1a, 0x31, 0x67, 0x29, 0x43, 0x0f, 0x73, 0x80, - 0x51, 0x02, 0x8c, 0x1b, 0x00, 0xa3, 0x04, 0xac, 0xfe, 0x5f, 0x24, 0xc3, 0x31, 0x35, 0x71, 0x14, - 0xb1, 0x14, 0xa7, 0x94, 0x45, 0x49, 0x4e, 0xd2, 0xbf, 0xa9, 0xd0, 0x39, 0x91, 0x29, 0x86, 0x79, - 0x06, 0xe4, 0x01, 0x78, 0x21, 0xcb, 0x7c, 0x97, 0x93, 0x98, 0xf5, 0x94, 0x35, 0x65, 0xa3, 0xdd, - 0x1f, 0x18, 0x77, 0x4f, 0x68, 0x0c, 0xc5, 0x69, 0x87, 0xc4, 0x6c, 0x86, 0x3b, 0xaa, 0x39, 0x9a, - 0x57, 0xae, 0xa0, 0x37, 0xd0, 0x0c, 0x08, 0xe7, 0x34, 0xed, 0xd5, 0x65, 0x82, 0x9d, 0x79, 0x12, - 0x1c, 0xc8, 0x93, 0xd7, 0xe9, 0x05, 0x10, 0x4d, 0x40, 0x0d, 0x68, 0xda, 0x53, 0x25, 0xf7, 0xe9, - 0x5c, 0xdc, 0x9b, 0x50, 0x81, 0x42, 0xef, 0xa1, 0x19, 0xe2, 0x33, 0x12, 0x26, 0xbd, 0xc6, 0x9a, - 0xba, 0xd1, 0xee, 0x5b, 0xf3, 0x40, 0x67, 0x88, 0xc6, 0xa1, 0xe4, 0x58, 0x51, 0xca, 0xaf, 0x9c, - 0x02, 0xba, 0xba, 0x0d, 0xed, 0x4a, 0x18, 0x75, 0x41, 0xbd, 0x20, 0x57, 0xb2, 0xf1, 0x9a, 0x23, - 0x86, 0x68, 0x05, 0x16, 0xa6, 0x38, 0xcc, 0x88, 0xec, 0x95, 0xe6, 0xe4, 0x93, 0xc7, 0xf5, 0x2d, - 0x65, 0xa0, 0x41, 0xab, 0x30, 0x86, 0xfe, 0x55, 0x81, 0xa5, 0xdd, 0x90, 0xe2, 0xa4, 0xbc, 0xc7, - 0x17, 0xd0, 0xb8, 0xa0, 0x91, 0x2f, 0x41, 0xcb, 0xfd, 0x67, 0xf3, 0x68, 0xae, 0x72, 0x8c, 0x31, - 0x8d, 0x7c, 0x47, 0xa2, 0x10, 0x82, 0x46, 0x84, 0x2f, 0x4b, 0x1d, 0x72, 0xac, 0xef, 0x40, 0x43, - 0xec, 0x40, 0x2b, 0xd0, 0x1d, 0xdb, 0x47, 0x7b, 0xee, 0xe9, 0xd1, 0xc9, 0xc4, 0x1a, 0xda, 0xfb, - 0xb6, 0xb5, 0xd7, 0xad, 0x21, 0x0d, 0x16, 0xf6, 0xed, 0xd7, 0xd6, 0x5e, 0x57, 0x41, 0x6d, 0x68, - 0x3d, 0x3f, 0x7e, 0xb5, 0x3b, 0x38, 0xb4, 0xba, 0x75, 0x11, 0x3f, 0x7e, 0x39, 0xb2, 0x9c, 0x6e, - 0x43, 0xff, 0xa1, 0xc0, 0x3f, 0xb7, 0x5b, 0x06, 0x8d, 0xa1, 0x25, 0x4c, 0xe8, 0x52, 0xbf, 0xf0, - 0x61, 0x7f, 0x9e, 0x2a, 0x04, 0xcf, 0xf6, 0x9d, 0x26, 0x97, 0xbf, 0xe8, 0x01, 0xb4, 0x39, 0x99, - 0xd2, 0x84, 0xb2, 0x48, 0x00, 0x65, 0x0d, 0xa3, 0x9a, 0x03, 0x65, 0xd0, 0xf6, 0x91, 0x0b, 0x1d, - 0x2c, 0x4a, 0x2f, 0x5f, 0x5b, 0x61, 0xa2, 0xad, 0xdf, 0xed, 0xdd, 0xa8, 0xe6, 0x2c, 0xe1, 0xca, - 0x7c, 0x00, 0xb0, 0x58, 0xa6, 0xd3, 0xbf, 0x2b, 0xf0, 0xf7, 0x2d, 0x4e, 0x46, 0xff, 0xc2, 0xe2, - 0x39, 0x4b, 0x52, 0x37, 0xe3, 0xb4, 0x30, 0x41, 0x4b, 0xcc, 0x4f, 0x39, 0x45, 0xeb, 0xb0, 0x9c, - 0x9b, 0xdc, 0x8d, 0x39, 0xfb, 0x40, 0xbc, 0xb4, 0xb8, 0x89, 0x4e, 0x1e, 0x9d, 0xe4, 0xc1, 0xeb, - 0x95, 0xaa, 0x77, 0xa9, 0xb4, 0xf1, 0x07, 0x2b, 0xb5, 0xa0, 0x7b, 0xfd, 0x69, 0x09, 0x97, 0x67, - 0x3c, 0x2c, 0x5d, 0x9e, 0xf1, 0x10, 0xdd, 0xbf, 0xe5, 0x7e, 0xaa, 0x9a, 0xf5, 0x4f, 0x0a, 0x34, - 0xf3, 0x3b, 0x45, 0x1e, 0xfc, 0x55, 0x74, 0xc0, 0x9d, 0x35, 0xc8, 0xf6, 0x3c, 0x05, 0x14, 0xfd, - 0xca, 0x99, 0xa3, 0x9a, 0xd3, 0x89, 0xab, 0x01, 0x84, 0x40, 0xcd, 0x2a, 0x46, 0x11, 0x93, 0x41, - 0x03, 0xea, 0xd4, 0xd7, 0xc7, 0xd0, 0x99, 0x39, 0x8b, 0xee, 0x01, 0x94, 0x7a, 0x0a, 0x29, 0x9a, - 0xa3, 0x15, 0x11, 0xdb, 0x47, 0xff, 0x81, 0x26, 0x65, 0x56, 0x1e, 0xcf, 0xa2, 0x08, 0x1c, 0xe1, - 0x4b, 0x32, 0xf8, 0xac, 0xc0, 0xba, 0xc7, 0x2e, 0x4b, 0xe1, 0xbf, 0xd6, 0x3b, 0x51, 0xde, 0xbe, - 0x2b, 0x36, 0x05, 0x2c, 0xc4, 0x51, 0x60, 0x30, 0x1e, 0x98, 0x01, 0x89, 0xe4, 0x3f, 0xb9, 0x99, - 0x2f, 0xe1, 0x98, 0x26, 0x77, 0xf9, 0xae, 0x3c, 0xb9, 0xb1, 0xf4, 0xa5, 0xae, 0x1e, 0x0c, 0x77, - 0xcf, 0x9a, 0x92, 0xf6, 0xe8, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xcf, 0x59, 0x43, 0xa4, - 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/remoteexecution/v1test/remote_execution.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/remoteexecution/v1test/remote_execution.pb.go deleted file mode 100644 index 21fe781b..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/remoteexecution/v1test/remote_execution.pb.go +++ /dev/null @@ -1,2146 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/remoteexecution/v1test/remote_execution.proto - -/* -Package remoteexecution is a generated protocol buffer package. - -It is generated from these files: - google/devtools/remoteexecution/v1test/remote_execution.proto - -It has these top-level messages: - Action - Command - Platform - Directory - FileNode - DirectoryNode - Digest - ActionResult - OutputFile - Tree - OutputDirectory - ExecuteRequest - LogFile - ExecuteResponse - ExecuteOperationMetadata - GetActionResultRequest - UpdateActionResultRequest - FindMissingBlobsRequest - FindMissingBlobsResponse - UpdateBlobRequest - BatchUpdateBlobsRequest - BatchUpdateBlobsResponse - GetTreeRequest - GetTreeResponse - ToolDetails - RequestMetadata -*/ -package remoteexecution - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The current stage of execution. -type ExecuteOperationMetadata_Stage int32 - -const ( - ExecuteOperationMetadata_UNKNOWN ExecuteOperationMetadata_Stage = 0 - // Checking the result against the cache. - ExecuteOperationMetadata_CACHE_CHECK ExecuteOperationMetadata_Stage = 1 - // Currently idle, awaiting a free machine to execute. - ExecuteOperationMetadata_QUEUED ExecuteOperationMetadata_Stage = 2 - // Currently being executed by a worker. - ExecuteOperationMetadata_EXECUTING ExecuteOperationMetadata_Stage = 3 - // Finished execution. - ExecuteOperationMetadata_COMPLETED ExecuteOperationMetadata_Stage = 4 -) - -var ExecuteOperationMetadata_Stage_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CACHE_CHECK", - 2: "QUEUED", - 3: "EXECUTING", - 4: "COMPLETED", -} -var ExecuteOperationMetadata_Stage_value = map[string]int32{ - "UNKNOWN": 0, - "CACHE_CHECK": 1, - "QUEUED": 2, - "EXECUTING": 3, - "COMPLETED": 4, -} - -func (x ExecuteOperationMetadata_Stage) String() string { - return proto.EnumName(ExecuteOperationMetadata_Stage_name, int32(x)) -} -func (ExecuteOperationMetadata_Stage) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{14, 0} -} - -// An `Action` captures all the information about an execution which is required -// to reproduce it. -// -// `Action`s are the core component of the [Execution] service. A single -// `Action` represents a repeatable action that can be performed by the -// execution service. `Action`s can be succinctly identified by the digest of -// their wire format encoding and, once an `Action` has been executed, will be -// cached in the action cache. Future requests can then use the cached result -// rather than needing to run afresh. -// -// When a server completes execution of an -// [Action][google.devtools.remoteexecution.v1test.Action], it MAY choose to -// cache the [result][google.devtools.remoteexecution.v1test.ActionResult] in -// the [ActionCache][google.devtools.remoteexecution.v1test.ActionCache] unless -// `do_not_cache` is `true`. Clients SHOULD expect the server to do so. By -// default, future calls to [Execute][] the same `Action` will also serve their -// results from the cache. Clients must take care to understand the caching -// behaviour. Ideally, all `Action`s will be reproducible so that serving a -// result from cache is always desirable and correct. -type Action struct { - // The digest of the [Command][google.devtools.remoteexecution.v1test.Command] - // to run, which MUST be present in the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]. - CommandDigest *Digest `protobuf:"bytes,1,opt,name=command_digest,json=commandDigest" json:"command_digest,omitempty"` - // The digest of the root - // [Directory][google.devtools.remoteexecution.v1test.Directory] for the input - // files. The files in the directory tree are available in the correct - // location on the build machine before the command is executed. The root - // directory, as well as every subdirectory and content blob referred to, MUST - // be in the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]. - InputRootDigest *Digest `protobuf:"bytes,2,opt,name=input_root_digest,json=inputRootDigest" json:"input_root_digest,omitempty"` - // A list of the output files that the client expects to retrieve from the - // action. Only the listed files, as well as directories listed in - // `output_directories`, will be returned to the client as output. - // Other files that may be created during command execution are discarded. - // - // The paths are specified using forward slashes (`/`) as path separators, - // even if the execution platform natively uses a different separator. The - // path MUST NOT include a trailing slash. - // - // In order to ensure consistent hashing of the same Action, the output paths - // MUST be sorted lexicographically by code point (or, equivalently, by UTF-8 - // bytes). - OutputFiles []string `protobuf:"bytes,3,rep,name=output_files,json=outputFiles" json:"output_files,omitempty"` - // A list of the output directories that the client expects to retrieve from - // the action. Only the contents of the indicated directories (recursively - // including the contents of their subdirectories) will be - // returned, as well as files listed in `output_files`. Other files that may - // be created during command execution are discarded. - // - // The paths are specified using forward slashes (`/`) as path separators, - // even if the execution platform natively uses a different separator. The - // path MUST NOT include a trailing slash, unless the path is `"/"` (which, - // although not recommended, can be used to capture the entire working - // directory tree, including inputs). - // - // In order to ensure consistent hashing of the same Action, the output paths - // MUST be sorted lexicographically by code point (or, equivalently, by UTF-8 - // bytes). - OutputDirectories []string `protobuf:"bytes,4,rep,name=output_directories,json=outputDirectories" json:"output_directories,omitempty"` - // The platform requirements for the execution environment. The server MAY - // choose to execute the action on any worker satisfying the requirements, so - // the client SHOULD ensure that running the action on any such worker will - // have the same result. - Platform *Platform `protobuf:"bytes,5,opt,name=platform" json:"platform,omitempty"` - // A timeout after which the execution should be killed. If the timeout is - // absent, then the client is specifying that the execution should continue - // as long as the server will let it. The server SHOULD impose a timeout if - // the client does not specify one, however, if the client does specify a - // timeout that is longer than the server's maximum timeout, the server MUST - // reject the request. - // - // The timeout is a part of the - // [Action][google.devtools.remoteexecution.v1test.Action] message, and - // therefore two `Actions` with different timeouts are different, even if they - // are otherwise identical. This is because, if they were not, running an - // `Action` with a lower timeout than is required might result in a cache hit - // from an execution run with a longer timeout, hiding the fact that the - // timeout is too short. By encoding it directly in the `Action`, a lower - // timeout will result in a cache miss and the execution timeout will fail - // immediately, rather than whenever the cache entry gets evicted. - Timeout *google_protobuf3.Duration `protobuf:"bytes,6,opt,name=timeout" json:"timeout,omitempty"` - // If true, then the `Action`'s result cannot be cached. - DoNotCache bool `protobuf:"varint,7,opt,name=do_not_cache,json=doNotCache" json:"do_not_cache,omitempty"` -} - -func (m *Action) Reset() { *m = Action{} } -func (m *Action) String() string { return proto.CompactTextString(m) } -func (*Action) ProtoMessage() {} -func (*Action) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Action) GetCommandDigest() *Digest { - if m != nil { - return m.CommandDigest - } - return nil -} - -func (m *Action) GetInputRootDigest() *Digest { - if m != nil { - return m.InputRootDigest - } - return nil -} - -func (m *Action) GetOutputFiles() []string { - if m != nil { - return m.OutputFiles - } - return nil -} - -func (m *Action) GetOutputDirectories() []string { - if m != nil { - return m.OutputDirectories - } - return nil -} - -func (m *Action) GetPlatform() *Platform { - if m != nil { - return m.Platform - } - return nil -} - -func (m *Action) GetTimeout() *google_protobuf3.Duration { - if m != nil { - return m.Timeout - } - return nil -} - -func (m *Action) GetDoNotCache() bool { - if m != nil { - return m.DoNotCache - } - return false -} - -// A `Command` is the actual command executed by a worker running an -// [Action][google.devtools.remoteexecution.v1test.Action]. -// -// Except as otherwise required, the environment (such as which system -// libraries or binaries are available, and what filesystems are mounted where) -// is defined by and specific to the implementation of the remote execution API. -type Command struct { - // The arguments to the command. The first argument must be the path to the - // executable, which must be either a relative path, in which case it is - // evaluated with respect to the input root, or an absolute path. The `PATH` - // environment variable, or similar functionality on other systems, is not - // used to determine which executable to run. - // - // The working directory will always be the input root. - Arguments []string `protobuf:"bytes,1,rep,name=arguments" json:"arguments,omitempty"` - // The environment variables to set when running the program. The worker may - // provide its own default environment variables; these defaults can be - // overridden using this field. Additional variables can also be specified. - // - // In order to ensure that equivalent `Command`s always hash to the same - // value, the environment variables MUST be lexicographically sorted by name. - // Sorting of strings is done by code point, equivalently, by the UTF-8 bytes. - EnvironmentVariables []*Command_EnvironmentVariable `protobuf:"bytes,2,rep,name=environment_variables,json=environmentVariables" json:"environment_variables,omitempty"` -} - -func (m *Command) Reset() { *m = Command{} } -func (m *Command) String() string { return proto.CompactTextString(m) } -func (*Command) ProtoMessage() {} -func (*Command) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Command) GetArguments() []string { - if m != nil { - return m.Arguments - } - return nil -} - -func (m *Command) GetEnvironmentVariables() []*Command_EnvironmentVariable { - if m != nil { - return m.EnvironmentVariables - } - return nil -} - -// An `EnvironmentVariable` is one variable to set in the running program's -// environment. -type Command_EnvironmentVariable struct { - // The variable name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The variable value. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` -} - -func (m *Command_EnvironmentVariable) Reset() { *m = Command_EnvironmentVariable{} } -func (m *Command_EnvironmentVariable) String() string { return proto.CompactTextString(m) } -func (*Command_EnvironmentVariable) ProtoMessage() {} -func (*Command_EnvironmentVariable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -func (m *Command_EnvironmentVariable) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Command_EnvironmentVariable) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -// A `Platform` is a set of requirements, such as hardware, operating system, or -// compiler toolchain, for an -// [Action][google.devtools.remoteexecution.v1test.Action]'s execution -// environment. A `Platform` is represented as a series of key-value pairs -// representing the properties that are required of the platform. -// -// This message is currently being redeveloped since it is an overly simplistic -// model of platforms. -type Platform struct { - // The properties that make up this platform. In order to ensure that - // equivalent `Platform`s always hash to the same value, the properties MUST - // be lexicographically sorted by name, and then by value. Sorting of strings - // is done by code point, equivalently, by the UTF-8 bytes. - Properties []*Platform_Property `protobuf:"bytes,1,rep,name=properties" json:"properties,omitempty"` -} - -func (m *Platform) Reset() { *m = Platform{} } -func (m *Platform) String() string { return proto.CompactTextString(m) } -func (*Platform) ProtoMessage() {} -func (*Platform) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Platform) GetProperties() []*Platform_Property { - if m != nil { - return m.Properties - } - return nil -} - -// A single property for the environment. The server is responsible for -// specifying the property `name`s that it accepts. If an unknown `name` is -// provided in the requirements for an -// [Action][google.devtools.remoteexecution.v1test.Action], the server SHOULD -// reject the execution request. If permitted by the server, the same `name` -// may occur multiple times. -// -// The server is also responsible for specifying the interpretation of -// property `value`s. For instance, a property describing how much RAM must be -// available may be interpreted as allowing a worker with 16GB to fulfill a -// request for 8GB, while a property describing the OS environment on which -// the action must be performed may require an exact match with the worker's -// OS. -// -// The server MAY use the `value` of one or more properties to determine how -// it sets up the execution environment, such as by making specific system -// files available to the worker. -type Platform_Property struct { - // The property name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The property value. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` -} - -func (m *Platform_Property) Reset() { *m = Platform_Property{} } -func (m *Platform_Property) String() string { return proto.CompactTextString(m) } -func (*Platform_Property) ProtoMessage() {} -func (*Platform_Property) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *Platform_Property) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Platform_Property) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -// A `Directory` represents a directory node in a file tree, containing zero or -// more children [FileNodes][google.devtools.remoteexecution.v1test.FileNode] -// and [DirectoryNodes][google.devtools.remoteexecution.v1test.DirectoryNode]. -// Each `Node` contains its name in the directory, the digest of its content -// (either a file blob or a `Directory` proto), as well as possibly some -// metadata about the file or directory. -// -// In order to ensure that two equivalent directory trees hash to the same -// value, the following restrictions MUST be obeyed when constructing a -// a `Directory`: -// - Every child in the directory must have a path of exactly one segment. -// Multiple levels of directory hierarchy may not be collapsed. -// - Each child in the directory must have a unique path segment (file name). -// - The files and directories in the directory must each be sorted in -// lexicographical order by path. The path strings must be sorted by code -// point, equivalently, by UTF-8 bytes. -// -// A `Directory` that obeys the restrictions is said to be in canonical form. -// -// As an example, the following could be used for a file named `bar` and a -// directory named `foo` with an executable file named `baz` (hashes shortened -// for readability): -// -// ```json -// // (Directory proto) -// { -// files: [ -// { -// name: "bar", -// digest: { -// hash: "4a73bc9d03...", -// size: 65534 -// } -// } -// ], -// directories: [ -// { -// name: "foo", -// digest: { -// hash: "4cf2eda940...", -// size: 43 -// } -// } -// ] -// } -// -// // (Directory proto with hash "4cf2eda940..." and size 43) -// { -// files: [ -// { -// name: "baz", -// digest: { -// hash: "b2c941073e...", -// size: 1294, -// }, -// is_executable: true -// } -// ] -// } -// ``` -type Directory struct { - // The files in the directory. - Files []*FileNode `protobuf:"bytes,1,rep,name=files" json:"files,omitempty"` - // The subdirectories in the directory. - Directories []*DirectoryNode `protobuf:"bytes,2,rep,name=directories" json:"directories,omitempty"` -} - -func (m *Directory) Reset() { *m = Directory{} } -func (m *Directory) String() string { return proto.CompactTextString(m) } -func (*Directory) ProtoMessage() {} -func (*Directory) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Directory) GetFiles() []*FileNode { - if m != nil { - return m.Files - } - return nil -} - -func (m *Directory) GetDirectories() []*DirectoryNode { - if m != nil { - return m.Directories - } - return nil -} - -// A `FileNode` represents a single file and associated metadata. -type FileNode struct { - // The name of the file. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The digest of the file's content. - Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"` - // True if file is executable, false otherwise. - IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable" json:"is_executable,omitempty"` -} - -func (m *FileNode) Reset() { *m = FileNode{} } -func (m *FileNode) String() string { return proto.CompactTextString(m) } -func (*FileNode) ProtoMessage() {} -func (*FileNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *FileNode) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *FileNode) GetDigest() *Digest { - if m != nil { - return m.Digest - } - return nil -} - -func (m *FileNode) GetIsExecutable() bool { - if m != nil { - return m.IsExecutable - } - return false -} - -// A `DirectoryNode` represents a child of a -// [Directory][google.devtools.remoteexecution.v1test.Directory] which is itself -// a `Directory` and its associated metadata. -type DirectoryNode struct { - // The name of the directory. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The digest of the - // [Directory][google.devtools.remoteexecution.v1test.Directory] object - // represented. See [Digest][google.devtools.remoteexecution.v1test.Digest] - // for information about how to take the digest of a proto message. - Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"` -} - -func (m *DirectoryNode) Reset() { *m = DirectoryNode{} } -func (m *DirectoryNode) String() string { return proto.CompactTextString(m) } -func (*DirectoryNode) ProtoMessage() {} -func (*DirectoryNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *DirectoryNode) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DirectoryNode) GetDigest() *Digest { - if m != nil { - return m.Digest - } - return nil -} - -// A content digest. A digest for a given blob consists of the size of the blob -// and its hash. The hash algorithm to use is defined by the server, but servers -// SHOULD use SHA-256. -// -// The size is considered to be an integral part of the digest and cannot be -// separated. That is, even if the `hash` field is correctly specified but -// `size_bytes` is not, the server MUST reject the request. -// -// The reason for including the size in the digest is as follows: in a great -// many cases, the server needs to know the size of the blob it is about to work -// with prior to starting an operation with it, such as flattening Merkle tree -// structures or streaming it to a worker. Technically, the server could -// implement a separate metadata store, but this results in a significantly more -// complicated implementation as opposed to having the client specify the size -// up-front (or storing the size along with the digest in every message where -// digests are embedded). This does mean that the API leaks some implementation -// details of (what we consider to be) a reasonable server implementation, but -// we consider this to be a worthwhile tradeoff. -// -// When a `Digest` is used to refer to a proto message, it always refers to the -// message in binary encoded form. To ensure consistent hashing, clients and -// servers MUST ensure that they serialize messages according to the following -// rules, even if there are alternate valid encodings for the same message. -// - Fields are serialized in tag order. -// - There are no unknown fields. -// - There are no duplicate fields. -// - Fields are serialized according to the default semantics for their type. -// -// Most protocol buffer implementations will always follow these rules when -// serializing, but care should be taken to avoid shortcuts. For instance, -// concatenating two messages to merge them may produce duplicate fields. -type Digest struct { - // The hash. In the case of SHA-256, it will always be a lowercase hex string - // exactly 64 characters long. - Hash string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"` - // The size of the blob, in bytes. - SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes" json:"size_bytes,omitempty"` -} - -func (m *Digest) Reset() { *m = Digest{} } -func (m *Digest) String() string { return proto.CompactTextString(m) } -func (*Digest) ProtoMessage() {} -func (*Digest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *Digest) GetHash() string { - if m != nil { - return m.Hash - } - return "" -} - -func (m *Digest) GetSizeBytes() int64 { - if m != nil { - return m.SizeBytes - } - return 0 -} - -// An ActionResult represents the result of an -// [Action][google.devtools.remoteexecution.v1test.Action] being run. -type ActionResult struct { - // The output files of the action. For each output file requested, if the - // corresponding file existed after the action completed, a single entry will - // be present in the output list. - // - // If the action does not produce the requested output, or produces a - // directory where a regular file is expected or vice versa, then that output - // will be omitted from the list. The server is free to arrange the output - // list as desired; clients MUST NOT assume that the output list is sorted. - OutputFiles []*OutputFile `protobuf:"bytes,2,rep,name=output_files,json=outputFiles" json:"output_files,omitempty"` - // The output directories of the action. For each output directory requested, - // if the corresponding directory existed after the action completed, a single - // entry will be present in the output list, which will contain the digest of - // a [Tree][google.devtools.remoteexecution.v1.test.Tree] message containing - // the directory tree. - OutputDirectories []*OutputDirectory `protobuf:"bytes,3,rep,name=output_directories,json=outputDirectories" json:"output_directories,omitempty"` - // The exit code of the command. - ExitCode int32 `protobuf:"varint,4,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"` - // The standard output buffer of the action. The server will determine, based - // on the size of the buffer, whether to return it in raw form or to return - // a digest in `stdout_digest` that points to the buffer. If neither is set, - // then the buffer is empty. The client SHOULD NOT assume it will get one of - // the raw buffer or a digest on any given request and should be prepared to - // handle either. - StdoutRaw []byte `protobuf:"bytes,5,opt,name=stdout_raw,json=stdoutRaw,proto3" json:"stdout_raw,omitempty"` - // The digest for a blob containing the standard output of the action, which - // can be retrieved from the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]. - // See `stdout_raw` for when this will be set. - StdoutDigest *Digest `protobuf:"bytes,6,opt,name=stdout_digest,json=stdoutDigest" json:"stdout_digest,omitempty"` - // The standard error buffer of the action. The server will determine, based - // on the size of the buffer, whether to return it in raw form or to return - // a digest in `stderr_digest` that points to the buffer. If neither is set, - // then the buffer is empty. The client SHOULD NOT assume it will get one of - // the raw buffer or a digest on any given request and should be prepared to - // handle either. - StderrRaw []byte `protobuf:"bytes,7,opt,name=stderr_raw,json=stderrRaw,proto3" json:"stderr_raw,omitempty"` - // The digest for a blob containing the standard error of the action, which - // can be retrieved from the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]. - // See `stderr_raw` for when this will be set. - StderrDigest *Digest `protobuf:"bytes,8,opt,name=stderr_digest,json=stderrDigest" json:"stderr_digest,omitempty"` -} - -func (m *ActionResult) Reset() { *m = ActionResult{} } -func (m *ActionResult) String() string { return proto.CompactTextString(m) } -func (*ActionResult) ProtoMessage() {} -func (*ActionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ActionResult) GetOutputFiles() []*OutputFile { - if m != nil { - return m.OutputFiles - } - return nil -} - -func (m *ActionResult) GetOutputDirectories() []*OutputDirectory { - if m != nil { - return m.OutputDirectories - } - return nil -} - -func (m *ActionResult) GetExitCode() int32 { - if m != nil { - return m.ExitCode - } - return 0 -} - -func (m *ActionResult) GetStdoutRaw() []byte { - if m != nil { - return m.StdoutRaw - } - return nil -} - -func (m *ActionResult) GetStdoutDigest() *Digest { - if m != nil { - return m.StdoutDigest - } - return nil -} - -func (m *ActionResult) GetStderrRaw() []byte { - if m != nil { - return m.StderrRaw - } - return nil -} - -func (m *ActionResult) GetStderrDigest() *Digest { - if m != nil { - return m.StderrDigest - } - return nil -} - -// An `OutputFile` is similar to a -// [FileNode][google.devtools.remoteexecution.v1test.FileNode], but it is -// tailored for output as part of an `ActionResult`. It allows a full file path -// rather than only a name, and allows the server to include content inline. -// -// `OutputFile` is binary-compatible with `FileNode`. -type OutputFile struct { - // The full path of the file relative to the input root, including the - // filename. The path separator is a forward slash `/`. - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` - // The digest of the file's content. - Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"` - // The raw content of the file. - // - // This field may be used by the server to provide the content of a file - // inline in an - // [ActionResult][google.devtools.remoteexecution.v1test.ActionResult] and - // avoid requiring that the client make a separate call to - // [ContentAddressableStorage.GetBlob] to retrieve it. - // - // The client SHOULD NOT assume that it will get raw content with any request, - // and always be prepared to retrieve it via `digest`. - Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` - // True if file is executable, false otherwise. - IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable" json:"is_executable,omitempty"` -} - -func (m *OutputFile) Reset() { *m = OutputFile{} } -func (m *OutputFile) String() string { return proto.CompactTextString(m) } -func (*OutputFile) ProtoMessage() {} -func (*OutputFile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *OutputFile) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *OutputFile) GetDigest() *Digest { - if m != nil { - return m.Digest - } - return nil -} - -func (m *OutputFile) GetContent() []byte { - if m != nil { - return m.Content - } - return nil -} - -func (m *OutputFile) GetIsExecutable() bool { - if m != nil { - return m.IsExecutable - } - return false -} - -// A `Tree` contains all the -// [Directory][google.devtools.remoteexecution.v1test.Directory] protos in a -// single directory Merkle tree, compressed into one message. -type Tree struct { - // The root directory in the tree. - Root *Directory `protobuf:"bytes,1,opt,name=root" json:"root,omitempty"` - // All the child directories: the directories referred to by the root and, - // recursively, all its children. In order to reconstruct the directory tree, - // the client must take the digests of each of the child directories and then - // build up a tree starting from the `root`. - Children []*Directory `protobuf:"bytes,2,rep,name=children" json:"children,omitempty"` -} - -func (m *Tree) Reset() { *m = Tree{} } -func (m *Tree) String() string { return proto.CompactTextString(m) } -func (*Tree) ProtoMessage() {} -func (*Tree) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *Tree) GetRoot() *Directory { - if m != nil { - return m.Root - } - return nil -} - -func (m *Tree) GetChildren() []*Directory { - if m != nil { - return m.Children - } - return nil -} - -// An `OutputDirectory` is the output in an `ActionResult` corresponding to a -// directory's full contents rather than a single file. -type OutputDirectory struct { - // The full path of the directory relative to the input root, including the - // filename. The path separator is a forward slash `/`. - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` - // DEPRECATED: This field is deprecated and should no longer be used. - Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"` - // The digest of the encoded - // [Tree][google.devtools.remoteexecution.v1test.Tree] proto containing the - // directory's contents. - TreeDigest *Digest `protobuf:"bytes,3,opt,name=tree_digest,json=treeDigest" json:"tree_digest,omitempty"` -} - -func (m *OutputDirectory) Reset() { *m = OutputDirectory{} } -func (m *OutputDirectory) String() string { return proto.CompactTextString(m) } -func (*OutputDirectory) ProtoMessage() {} -func (*OutputDirectory) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *OutputDirectory) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *OutputDirectory) GetDigest() *Digest { - if m != nil { - return m.Digest - } - return nil -} - -func (m *OutputDirectory) GetTreeDigest() *Digest { - if m != nil { - return m.TreeDigest - } - return nil -} - -// A request message for -// [Execution.Execute][google.devtools.remoteexecution.v1test.Execution.Execute]. -type ExecuteRequest struct { - // The instance of the execution system to operate against. A server may - // support multiple instances of the execution system (with their own workers, - // storage, caches, etc.). The server MAY require use of this field to select - // between them in an implementation-defined fashion, otherwise it can be - // omitted. - InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"` - // The action to be performed. - Action *Action `protobuf:"bytes,2,opt,name=action" json:"action,omitempty"` - // If true, the action will be executed anew even if its result was already - // present in the cache. If false, the result may be served from the - // [ActionCache][google.devtools.remoteexecution.v1test.ActionCache]. - SkipCacheLookup bool `protobuf:"varint,3,opt,name=skip_cache_lookup,json=skipCacheLookup" json:"skip_cache_lookup,omitempty"` - // DEPRECATED: This field should be ignored by clients and servers and will be - // removed. - TotalInputFileCount int32 `protobuf:"varint,4,opt,name=total_input_file_count,json=totalInputFileCount" json:"total_input_file_count,omitempty"` - // DEPRECATED: This field should be ignored by clients and servers and will be - // removed. - TotalInputFileBytes int64 `protobuf:"varint,5,opt,name=total_input_file_bytes,json=totalInputFileBytes" json:"total_input_file_bytes,omitempty"` -} - -func (m *ExecuteRequest) Reset() { *m = ExecuteRequest{} } -func (m *ExecuteRequest) String() string { return proto.CompactTextString(m) } -func (*ExecuteRequest) ProtoMessage() {} -func (*ExecuteRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ExecuteRequest) GetInstanceName() string { - if m != nil { - return m.InstanceName - } - return "" -} - -func (m *ExecuteRequest) GetAction() *Action { - if m != nil { - return m.Action - } - return nil -} - -func (m *ExecuteRequest) GetSkipCacheLookup() bool { - if m != nil { - return m.SkipCacheLookup - } - return false -} - -func (m *ExecuteRequest) GetTotalInputFileCount() int32 { - if m != nil { - return m.TotalInputFileCount - } - return 0 -} - -func (m *ExecuteRequest) GetTotalInputFileBytes() int64 { - if m != nil { - return m.TotalInputFileBytes - } - return 0 -} - -// A `LogFile` is a log stored in the CAS. -type LogFile struct { - // The digest of the log contents. - Digest *Digest `protobuf:"bytes,1,opt,name=digest" json:"digest,omitempty"` - // This is a hint as to the purpose of the log, and is set to true if the log - // is human-readable text that can be usefully displayed to a user, and false - // otherwise. For instance, if a command-line client wishes to print the - // server logs to the terminal for a failed action, this allows it to avoid - // displaying a binary file. - HumanReadable bool `protobuf:"varint,2,opt,name=human_readable,json=humanReadable" json:"human_readable,omitempty"` -} - -func (m *LogFile) Reset() { *m = LogFile{} } -func (m *LogFile) String() string { return proto.CompactTextString(m) } -func (*LogFile) ProtoMessage() {} -func (*LogFile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *LogFile) GetDigest() *Digest { - if m != nil { - return m.Digest - } - return nil -} - -func (m *LogFile) GetHumanReadable() bool { - if m != nil { - return m.HumanReadable - } - return false -} - -// The response message for -// [Execution.Execute][google.devtools.remoteexecution.v1test.Execution.Execute], -// which will be contained in the [response -// field][google.longrunning.Operation.response] of the -// [Operation][google.longrunning.Operation]. -type ExecuteResponse struct { - // The result of the action. - Result *ActionResult `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` - // True if the result was served from cache, false if it was executed. - CachedResult bool `protobuf:"varint,2,opt,name=cached_result,json=cachedResult" json:"cached_result,omitempty"` - // If the status has a code other than `OK`, it indicates that the action did - // not finish execution. For example, if the operation times out during - // execution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST - // use this field for errors in execution, rather than the error field on the - // `Operation` object. - // - // If the status code is other than `OK`, then the result MUST NOT be cached. - // For an error status, the `result` field is optional; the server may - // populate the output-, stdout-, and stderr-related fields if it has any - // information available, such as the stdout and stderr of a timed-out action. - Status *google_rpc.Status `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"` - // An optional list of additional log outputs the server wishes to provide. A - // server can use this to return execution-specific logs however it wishes. - // This is intended primarily to make it easier for users to debug issues that - // may be outside of the actual job execution, such as by identifying the - // worker executing the action or by providing logs from the worker's setup - // phase. The keys SHOULD be human readable so that a client can display them - // to a user. - ServerLogs map[string]*LogFile `protobuf:"bytes,4,rep,name=server_logs,json=serverLogs" json:"server_logs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *ExecuteResponse) Reset() { *m = ExecuteResponse{} } -func (m *ExecuteResponse) String() string { return proto.CompactTextString(m) } -func (*ExecuteResponse) ProtoMessage() {} -func (*ExecuteResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *ExecuteResponse) GetResult() *ActionResult { - if m != nil { - return m.Result - } - return nil -} - -func (m *ExecuteResponse) GetCachedResult() bool { - if m != nil { - return m.CachedResult - } - return false -} - -func (m *ExecuteResponse) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func (m *ExecuteResponse) GetServerLogs() map[string]*LogFile { - if m != nil { - return m.ServerLogs - } - return nil -} - -// Metadata about an ongoing -// [execution][google.devtools.remoteexecution.v1test.Execution.Execute], which -// will be contained in the [metadata -// field][google.longrunning.Operation.response] of the -// [Operation][google.longrunning.Operation]. -type ExecuteOperationMetadata struct { - Stage ExecuteOperationMetadata_Stage `protobuf:"varint,1,opt,name=stage,enum=google.devtools.remoteexecution.v1test.ExecuteOperationMetadata_Stage" json:"stage,omitempty"` - // The digest of the [Action][google.devtools.remoteexecution.v1test.Action] - // being executed. - ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"` - // If set, the client can use this name with - // [ByteStream.Read][google.bytestream.ByteStream.Read] to stream the - // standard output. - StdoutStreamName string `protobuf:"bytes,3,opt,name=stdout_stream_name,json=stdoutStreamName" json:"stdout_stream_name,omitempty"` - // If set, the client can use this name with - // [ByteStream.Read][google.bytestream.ByteStream.Read] to stream the - // standard error. - StderrStreamName string `protobuf:"bytes,4,opt,name=stderr_stream_name,json=stderrStreamName" json:"stderr_stream_name,omitempty"` -} - -func (m *ExecuteOperationMetadata) Reset() { *m = ExecuteOperationMetadata{} } -func (m *ExecuteOperationMetadata) String() string { return proto.CompactTextString(m) } -func (*ExecuteOperationMetadata) ProtoMessage() {} -func (*ExecuteOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *ExecuteOperationMetadata) GetStage() ExecuteOperationMetadata_Stage { - if m != nil { - return m.Stage - } - return ExecuteOperationMetadata_UNKNOWN -} - -func (m *ExecuteOperationMetadata) GetActionDigest() *Digest { - if m != nil { - return m.ActionDigest - } - return nil -} - -func (m *ExecuteOperationMetadata) GetStdoutStreamName() string { - if m != nil { - return m.StdoutStreamName - } - return "" -} - -func (m *ExecuteOperationMetadata) GetStderrStreamName() string { - if m != nil { - return m.StderrStreamName - } - return "" -} - -// A request message for -// [ActionCache.GetActionResult][google.devtools.remoteexecution.v1test.ActionCache.GetActionResult]. -type GetActionResultRequest struct { - // The instance of the execution system to operate against. A server may - // support multiple instances of the execution system (with their own workers, - // storage, caches, etc.). The server MAY require use of this field to select - // between them in an implementation-defined fashion, otherwise it can be - // omitted. - InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"` - // The digest of the [Action][google.devtools.remoteexecution.v1test.Action] - // whose result is requested. - ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"` -} - -func (m *GetActionResultRequest) Reset() { *m = GetActionResultRequest{} } -func (m *GetActionResultRequest) String() string { return proto.CompactTextString(m) } -func (*GetActionResultRequest) ProtoMessage() {} -func (*GetActionResultRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *GetActionResultRequest) GetInstanceName() string { - if m != nil { - return m.InstanceName - } - return "" -} - -func (m *GetActionResultRequest) GetActionDigest() *Digest { - if m != nil { - return m.ActionDigest - } - return nil -} - -// A request message for -// [ActionCache.UpdateActionResult][google.devtools.remoteexecution.v1test.ActionCache.UpdateActionResult]. -type UpdateActionResultRequest struct { - // The instance of the execution system to operate against. A server may - // support multiple instances of the execution system (with their own workers, - // storage, caches, etc.). The server MAY require use of this field to select - // between them in an implementation-defined fashion, otherwise it can be - // omitted. - InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"` - // The digest of the [Action][google.devtools.remoteexecution.v1test.Action] - // whose result is being uploaded. - ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"` - // The [ActionResult][google.devtools.remoteexecution.v1test.ActionResult] - // to store in the cache. - ActionResult *ActionResult `protobuf:"bytes,3,opt,name=action_result,json=actionResult" json:"action_result,omitempty"` -} - -func (m *UpdateActionResultRequest) Reset() { *m = UpdateActionResultRequest{} } -func (m *UpdateActionResultRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateActionResultRequest) ProtoMessage() {} -func (*UpdateActionResultRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *UpdateActionResultRequest) GetInstanceName() string { - if m != nil { - return m.InstanceName - } - return "" -} - -func (m *UpdateActionResultRequest) GetActionDigest() *Digest { - if m != nil { - return m.ActionDigest - } - return nil -} - -func (m *UpdateActionResultRequest) GetActionResult() *ActionResult { - if m != nil { - return m.ActionResult - } - return nil -} - -// A request message for -// [ContentAddressableStorage.FindMissingBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.FindMissingBlobs]. -type FindMissingBlobsRequest struct { - // The instance of the execution system to operate against. A server may - // support multiple instances of the execution system (with their own workers, - // storage, caches, etc.). The server MAY require use of this field to select - // between them in an implementation-defined fashion, otherwise it can be - // omitted. - InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"` - // A list of the blobs to check. - BlobDigests []*Digest `protobuf:"bytes,2,rep,name=blob_digests,json=blobDigests" json:"blob_digests,omitempty"` -} - -func (m *FindMissingBlobsRequest) Reset() { *m = FindMissingBlobsRequest{} } -func (m *FindMissingBlobsRequest) String() string { return proto.CompactTextString(m) } -func (*FindMissingBlobsRequest) ProtoMessage() {} -func (*FindMissingBlobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *FindMissingBlobsRequest) GetInstanceName() string { - if m != nil { - return m.InstanceName - } - return "" -} - -func (m *FindMissingBlobsRequest) GetBlobDigests() []*Digest { - if m != nil { - return m.BlobDigests - } - return nil -} - -// A response message for -// [ContentAddressableStorage.FindMissingBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.FindMissingBlobs]. -type FindMissingBlobsResponse struct { - // A list of the blobs requested *not* present in the storage. - MissingBlobDigests []*Digest `protobuf:"bytes,2,rep,name=missing_blob_digests,json=missingBlobDigests" json:"missing_blob_digests,omitempty"` -} - -func (m *FindMissingBlobsResponse) Reset() { *m = FindMissingBlobsResponse{} } -func (m *FindMissingBlobsResponse) String() string { return proto.CompactTextString(m) } -func (*FindMissingBlobsResponse) ProtoMessage() {} -func (*FindMissingBlobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *FindMissingBlobsResponse) GetMissingBlobDigests() []*Digest { - if m != nil { - return m.MissingBlobDigests - } - return nil -} - -// A single request message for -// [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs]. -type UpdateBlobRequest struct { - // The digest of the blob. This MUST be the digest of `data`. - ContentDigest *Digest `protobuf:"bytes,1,opt,name=content_digest,json=contentDigest" json:"content_digest,omitempty"` - // The raw binary data. - Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` -} - -func (m *UpdateBlobRequest) Reset() { *m = UpdateBlobRequest{} } -func (m *UpdateBlobRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateBlobRequest) ProtoMessage() {} -func (*UpdateBlobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *UpdateBlobRequest) GetContentDigest() *Digest { - if m != nil { - return m.ContentDigest - } - return nil -} - -func (m *UpdateBlobRequest) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -// A request message for -// [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs]. -type BatchUpdateBlobsRequest struct { - // The instance of the execution system to operate against. A server may - // support multiple instances of the execution system (with their own workers, - // storage, caches, etc.). The server MAY require use of this field to select - // between them in an implementation-defined fashion, otherwise it can be - // omitted. - InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"` - // The individual upload requests. - Requests []*UpdateBlobRequest `protobuf:"bytes,2,rep,name=requests" json:"requests,omitempty"` -} - -func (m *BatchUpdateBlobsRequest) Reset() { *m = BatchUpdateBlobsRequest{} } -func (m *BatchUpdateBlobsRequest) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateBlobsRequest) ProtoMessage() {} -func (*BatchUpdateBlobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *BatchUpdateBlobsRequest) GetInstanceName() string { - if m != nil { - return m.InstanceName - } - return "" -} - -func (m *BatchUpdateBlobsRequest) GetRequests() []*UpdateBlobRequest { - if m != nil { - return m.Requests - } - return nil -} - -// A response message for -// [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs]. -type BatchUpdateBlobsResponse struct { - // The responses to the requests. - Responses []*BatchUpdateBlobsResponse_Response `protobuf:"bytes,1,rep,name=responses" json:"responses,omitempty"` -} - -func (m *BatchUpdateBlobsResponse) Reset() { *m = BatchUpdateBlobsResponse{} } -func (m *BatchUpdateBlobsResponse) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateBlobsResponse) ProtoMessage() {} -func (*BatchUpdateBlobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *BatchUpdateBlobsResponse) GetResponses() []*BatchUpdateBlobsResponse_Response { - if m != nil { - return m.Responses - } - return nil -} - -// A response corresponding to a single blob that the client tried to upload. -type BatchUpdateBlobsResponse_Response struct { - // The digest to which this response corresponds. - BlobDigest *Digest `protobuf:"bytes,1,opt,name=blob_digest,json=blobDigest" json:"blob_digest,omitempty"` - // The result of attempting to upload that blob. - Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` -} - -func (m *BatchUpdateBlobsResponse_Response) Reset() { *m = BatchUpdateBlobsResponse_Response{} } -func (m *BatchUpdateBlobsResponse_Response) String() string { return proto.CompactTextString(m) } -func (*BatchUpdateBlobsResponse_Response) ProtoMessage() {} -func (*BatchUpdateBlobsResponse_Response) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{21, 0} -} - -func (m *BatchUpdateBlobsResponse_Response) GetBlobDigest() *Digest { - if m != nil { - return m.BlobDigest - } - return nil -} - -func (m *BatchUpdateBlobsResponse_Response) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -// A request message for -// [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree]. -type GetTreeRequest struct { - // The instance of the execution system to operate against. A server may - // support multiple instances of the execution system (with their own workers, - // storage, caches, etc.). The server MAY require use of this field to select - // between them in an implementation-defined fashion, otherwise it can be - // omitted. - InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"` - // The digest of the root, which must be an encoded - // [Directory][google.devtools.remoteexecution.v1test.Directory] message - // stored in the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]. - RootDigest *Digest `protobuf:"bytes,2,opt,name=root_digest,json=rootDigest" json:"root_digest,omitempty"` - // A maximum page size to request. If present, the server will request no more - // than this many items. Regardless of whether a page size is specified, the - // server may place its own limit on the number of items to be returned and - // require the client to retrieve more items using a subsequent request. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A page token, which must be a value received in a previous - // [GetTreeResponse][google.devtools.remoteexecution.v1test.GetTreeResponse]. - // If present, the server will use it to return the following page of results. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *GetTreeRequest) Reset() { *m = GetTreeRequest{} } -func (m *GetTreeRequest) String() string { return proto.CompactTextString(m) } -func (*GetTreeRequest) ProtoMessage() {} -func (*GetTreeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *GetTreeRequest) GetInstanceName() string { - if m != nil { - return m.InstanceName - } - return "" -} - -func (m *GetTreeRequest) GetRootDigest() *Digest { - if m != nil { - return m.RootDigest - } - return nil -} - -func (m *GetTreeRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *GetTreeRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// A response message for -// [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree]. -type GetTreeResponse struct { - // The directories descended from the requested root. - Directories []*Directory `protobuf:"bytes,1,rep,name=directories" json:"directories,omitempty"` - // If present, signifies that there are more results which the client can - // retrieve by passing this as the page_token in a subsequent - // [request][google.devtools.remoteexecution.v1test.GetTreeRequest]. - // If empty, signifies that this is the last page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *GetTreeResponse) Reset() { *m = GetTreeResponse{} } -func (m *GetTreeResponse) String() string { return proto.CompactTextString(m) } -func (*GetTreeResponse) ProtoMessage() {} -func (*GetTreeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *GetTreeResponse) GetDirectories() []*Directory { - if m != nil { - return m.Directories - } - return nil -} - -func (m *GetTreeResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Details for the tool used to call the API. -type ToolDetails struct { - // Name of the tool, e.g. bazel. - ToolName string `protobuf:"bytes,1,opt,name=tool_name,json=toolName" json:"tool_name,omitempty"` - // Version of the tool used for the request, e.g. 5.0.3. - ToolVersion string `protobuf:"bytes,2,opt,name=tool_version,json=toolVersion" json:"tool_version,omitempty"` -} - -func (m *ToolDetails) Reset() { *m = ToolDetails{} } -func (m *ToolDetails) String() string { return proto.CompactTextString(m) } -func (*ToolDetails) ProtoMessage() {} -func (*ToolDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *ToolDetails) GetToolName() string { - if m != nil { - return m.ToolName - } - return "" -} - -func (m *ToolDetails) GetToolVersion() string { - if m != nil { - return m.ToolVersion - } - return "" -} - -// An optional Metadata to attach to any RPC request to tell the server about an -// external context of the request. The server may use this for logging or other -// purposes. To use it, the client attaches the header to the call using the -// canonical proto serialization: -// name: google.devtools.remoteexecution.v1test.requestmetadata-bin -// contents: the base64 encoded binary RequestMetadata message. -type RequestMetadata struct { - // The details for the tool invoking the requests. - ToolDetails *ToolDetails `protobuf:"bytes,1,opt,name=tool_details,json=toolDetails" json:"tool_details,omitempty"` - // An identifier that ties multiple requests to the same action. - // For example, multiple requests to the CAS, Action Cache, and Execution - // API are used in order to compile foo.cc. - ActionId string `protobuf:"bytes,2,opt,name=action_id,json=actionId" json:"action_id,omitempty"` - // An identifier that ties multiple actions together to a final result. - // For example, multiple actions are required to build and run foo_test. - ToolInvocationId string `protobuf:"bytes,3,opt,name=tool_invocation_id,json=toolInvocationId" json:"tool_invocation_id,omitempty"` - // An identifier to tie multiple tool invocations together. For example, - // runs of foo_test, bar_test and baz_test on a post-submit of a given patch. - CorrelatedInvocationsId string `protobuf:"bytes,4,opt,name=correlated_invocations_id,json=correlatedInvocationsId" json:"correlated_invocations_id,omitempty"` -} - -func (m *RequestMetadata) Reset() { *m = RequestMetadata{} } -func (m *RequestMetadata) String() string { return proto.CompactTextString(m) } -func (*RequestMetadata) ProtoMessage() {} -func (*RequestMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *RequestMetadata) GetToolDetails() *ToolDetails { - if m != nil { - return m.ToolDetails - } - return nil -} - -func (m *RequestMetadata) GetActionId() string { - if m != nil { - return m.ActionId - } - return "" -} - -func (m *RequestMetadata) GetToolInvocationId() string { - if m != nil { - return m.ToolInvocationId - } - return "" -} - -func (m *RequestMetadata) GetCorrelatedInvocationsId() string { - if m != nil { - return m.CorrelatedInvocationsId - } - return "" -} - -func init() { - proto.RegisterType((*Action)(nil), "google.devtools.remoteexecution.v1test.Action") - proto.RegisterType((*Command)(nil), "google.devtools.remoteexecution.v1test.Command") - proto.RegisterType((*Command_EnvironmentVariable)(nil), "google.devtools.remoteexecution.v1test.Command.EnvironmentVariable") - proto.RegisterType((*Platform)(nil), "google.devtools.remoteexecution.v1test.Platform") - proto.RegisterType((*Platform_Property)(nil), "google.devtools.remoteexecution.v1test.Platform.Property") - proto.RegisterType((*Directory)(nil), "google.devtools.remoteexecution.v1test.Directory") - proto.RegisterType((*FileNode)(nil), "google.devtools.remoteexecution.v1test.FileNode") - proto.RegisterType((*DirectoryNode)(nil), "google.devtools.remoteexecution.v1test.DirectoryNode") - proto.RegisterType((*Digest)(nil), "google.devtools.remoteexecution.v1test.Digest") - proto.RegisterType((*ActionResult)(nil), "google.devtools.remoteexecution.v1test.ActionResult") - proto.RegisterType((*OutputFile)(nil), "google.devtools.remoteexecution.v1test.OutputFile") - proto.RegisterType((*Tree)(nil), "google.devtools.remoteexecution.v1test.Tree") - proto.RegisterType((*OutputDirectory)(nil), "google.devtools.remoteexecution.v1test.OutputDirectory") - proto.RegisterType((*ExecuteRequest)(nil), "google.devtools.remoteexecution.v1test.ExecuteRequest") - proto.RegisterType((*LogFile)(nil), "google.devtools.remoteexecution.v1test.LogFile") - proto.RegisterType((*ExecuteResponse)(nil), "google.devtools.remoteexecution.v1test.ExecuteResponse") - proto.RegisterType((*ExecuteOperationMetadata)(nil), "google.devtools.remoteexecution.v1test.ExecuteOperationMetadata") - proto.RegisterType((*GetActionResultRequest)(nil), "google.devtools.remoteexecution.v1test.GetActionResultRequest") - proto.RegisterType((*UpdateActionResultRequest)(nil), "google.devtools.remoteexecution.v1test.UpdateActionResultRequest") - proto.RegisterType((*FindMissingBlobsRequest)(nil), "google.devtools.remoteexecution.v1test.FindMissingBlobsRequest") - proto.RegisterType((*FindMissingBlobsResponse)(nil), "google.devtools.remoteexecution.v1test.FindMissingBlobsResponse") - proto.RegisterType((*UpdateBlobRequest)(nil), "google.devtools.remoteexecution.v1test.UpdateBlobRequest") - proto.RegisterType((*BatchUpdateBlobsRequest)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsRequest") - proto.RegisterType((*BatchUpdateBlobsResponse)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsResponse") - proto.RegisterType((*BatchUpdateBlobsResponse_Response)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsResponse.Response") - proto.RegisterType((*GetTreeRequest)(nil), "google.devtools.remoteexecution.v1test.GetTreeRequest") - proto.RegisterType((*GetTreeResponse)(nil), "google.devtools.remoteexecution.v1test.GetTreeResponse") - proto.RegisterType((*ToolDetails)(nil), "google.devtools.remoteexecution.v1test.ToolDetails") - proto.RegisterType((*RequestMetadata)(nil), "google.devtools.remoteexecution.v1test.RequestMetadata") - proto.RegisterEnum("google.devtools.remoteexecution.v1test.ExecuteOperationMetadata_Stage", ExecuteOperationMetadata_Stage_name, ExecuteOperationMetadata_Stage_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Execution service - -type ExecutionClient interface { - // Execute an action remotely. - // - // In order to execute an action, the client must first upload all of the - // inputs, as well as the - // [Command][google.devtools.remoteexecution.v1test.Command] to run, into the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]. - // It then calls `Execute` with an - // [Action][google.devtools.remoteexecution.v1test.Action] referring to them. - // The server will run the action and eventually return the result. - // - // The input `Action`'s fields MUST meet the various canonicalization - // requirements specified in the documentation for their types so that it has - // the same digest as other logically equivalent `Action`s. The server MAY - // enforce the requirements and return errors if a non-canonical input is - // received. It MAY also proceed without verifying some or all of the - // requirements, such as for performance reasons. If the server does not - // verify the requirement, then it will treat the `Action` as distinct from - // another logically equivalent action if they hash differently. - // - // Returns a [google.longrunning.Operation][google.longrunning.Operation] - // describing the resulting execution, with eventual `response` - // [ExecuteResponse][google.devtools.remoteexecution.v1test.ExecuteResponse]. - // The `metadata` on the operation is of type - // [ExecuteOperationMetadata][google.devtools.remoteexecution.v1test.ExecuteOperationMetadata]. - // - // To query the operation, you can use the - // [Operations API][google.longrunning.Operations.GetOperation]. If you wish - // to allow the server to stream operations updates, rather than requiring - // client polling, you can use the - // [Watcher API][google.watcher.v1.Watcher.Watch] with the Operation's `name` - // as the `target`. - // - // When using the Watcher API, the initial `data` will be the `Operation` at - // the time of the request. Updates will be provided periodically by the - // server until the `Operation` completes, at which point the response message - // will (assuming no error) be at `data.response`. - // - // The server NEED NOT implement other methods or functionality of the - // Operation and Watcher APIs. - // - // Errors discovered during creation of the `Operation` will be reported - // as gRPC Status errors, while errors that occurred while running the - // action will be reported in the `status` field of the `ExecuteResponse`. The - // server MUST NOT set the `error` field of the `Operation` proto. - // The possible errors include: - // * `INVALID_ARGUMENT`: One or more arguments are invalid. - // * `FAILED_PRECONDITION`: One or more errors occurred in setting up the - // action requested, such as a missing input or command or no worker being - // available. The client may be able to fix the errors and retry. - // * `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run - // the action. - // * `UNAVAILABLE`: Due to a transient condition, such as all workers being - // occupied (and the server does not support a queue), the action could not - // be started. The client should retry. - // * `INTERNAL`: An internal error occurred in the execution engine or the - // worker. - // * `DEADLINE_EXCEEDED`: The execution timed out. - // - // In the case of a missing input or command, the server SHOULD additionally - // send a [PreconditionFailure][google.rpc.PreconditionFailure] error detail - // where, for each requested blob not present in the CAS, there is a - // `Violation` with a `type` of `MISSING` and a `subject` of - // `"blobs/{hash}/{size}"` indicating the digest of the missing blob. - Execute(ctx context.Context, in *ExecuteRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) -} - -type executionClient struct { - cc *grpc.ClientConn -} - -func NewExecutionClient(cc *grpc.ClientConn) ExecutionClient { - return &executionClient{cc} -} - -func (c *executionClient) Execute(ctx context.Context, in *ExecuteRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.Execution/Execute", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Execution service - -type ExecutionServer interface { - // Execute an action remotely. - // - // In order to execute an action, the client must first upload all of the - // inputs, as well as the - // [Command][google.devtools.remoteexecution.v1test.Command] to run, into the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]. - // It then calls `Execute` with an - // [Action][google.devtools.remoteexecution.v1test.Action] referring to them. - // The server will run the action and eventually return the result. - // - // The input `Action`'s fields MUST meet the various canonicalization - // requirements specified in the documentation for their types so that it has - // the same digest as other logically equivalent `Action`s. The server MAY - // enforce the requirements and return errors if a non-canonical input is - // received. It MAY also proceed without verifying some or all of the - // requirements, such as for performance reasons. If the server does not - // verify the requirement, then it will treat the `Action` as distinct from - // another logically equivalent action if they hash differently. - // - // Returns a [google.longrunning.Operation][google.longrunning.Operation] - // describing the resulting execution, with eventual `response` - // [ExecuteResponse][google.devtools.remoteexecution.v1test.ExecuteResponse]. - // The `metadata` on the operation is of type - // [ExecuteOperationMetadata][google.devtools.remoteexecution.v1test.ExecuteOperationMetadata]. - // - // To query the operation, you can use the - // [Operations API][google.longrunning.Operations.GetOperation]. If you wish - // to allow the server to stream operations updates, rather than requiring - // client polling, you can use the - // [Watcher API][google.watcher.v1.Watcher.Watch] with the Operation's `name` - // as the `target`. - // - // When using the Watcher API, the initial `data` will be the `Operation` at - // the time of the request. Updates will be provided periodically by the - // server until the `Operation` completes, at which point the response message - // will (assuming no error) be at `data.response`. - // - // The server NEED NOT implement other methods or functionality of the - // Operation and Watcher APIs. - // - // Errors discovered during creation of the `Operation` will be reported - // as gRPC Status errors, while errors that occurred while running the - // action will be reported in the `status` field of the `ExecuteResponse`. The - // server MUST NOT set the `error` field of the `Operation` proto. - // The possible errors include: - // * `INVALID_ARGUMENT`: One or more arguments are invalid. - // * `FAILED_PRECONDITION`: One or more errors occurred in setting up the - // action requested, such as a missing input or command or no worker being - // available. The client may be able to fix the errors and retry. - // * `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run - // the action. - // * `UNAVAILABLE`: Due to a transient condition, such as all workers being - // occupied (and the server does not support a queue), the action could not - // be started. The client should retry. - // * `INTERNAL`: An internal error occurred in the execution engine or the - // worker. - // * `DEADLINE_EXCEEDED`: The execution timed out. - // - // In the case of a missing input or command, the server SHOULD additionally - // send a [PreconditionFailure][google.rpc.PreconditionFailure] error detail - // where, for each requested blob not present in the CAS, there is a - // `Violation` with a `type` of `MISSING` and a `subject` of - // `"blobs/{hash}/{size}"` indicating the digest of the missing blob. - Execute(context.Context, *ExecuteRequest) (*google_longrunning.Operation, error) -} - -func RegisterExecutionServer(s *grpc.Server, srv ExecutionServer) { - s.RegisterService(&_Execution_serviceDesc, srv) -} - -func _Execution_Execute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExecuteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ExecutionServer).Execute(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteexecution.v1test.Execution/Execute", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ExecutionServer).Execute(ctx, req.(*ExecuteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Execution_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.remoteexecution.v1test.Execution", - HandlerType: (*ExecutionServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Execute", - Handler: _Execution_Execute_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto", -} - -// Client API for ActionCache service - -type ActionCacheClient interface { - // Retrieve a cached execution result. - // - // Errors: - // * `NOT_FOUND`: The requested `ActionResult` is not in the cache. - GetActionResult(ctx context.Context, in *GetActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error) - // Upload a new execution result. - // - // This method is intended for servers which implement the distributed cache - // independently of the - // [Execution][google.devtools.remoteexecution.v1test.Execution] API. As a - // result, it is OPTIONAL for servers to implement. - // - // Errors: - // * `NOT_IMPLEMENTED`: This method is not supported by the server. - // * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the - // entry to the cache. - UpdateActionResult(ctx context.Context, in *UpdateActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error) -} - -type actionCacheClient struct { - cc *grpc.ClientConn -} - -func NewActionCacheClient(cc *grpc.ClientConn) ActionCacheClient { - return &actionCacheClient{cc} -} - -func (c *actionCacheClient) GetActionResult(ctx context.Context, in *GetActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error) { - out := new(ActionResult) - err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ActionCache/GetActionResult", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *actionCacheClient) UpdateActionResult(ctx context.Context, in *UpdateActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error) { - out := new(ActionResult) - err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ActionCache/UpdateActionResult", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ActionCache service - -type ActionCacheServer interface { - // Retrieve a cached execution result. - // - // Errors: - // * `NOT_FOUND`: The requested `ActionResult` is not in the cache. - GetActionResult(context.Context, *GetActionResultRequest) (*ActionResult, error) - // Upload a new execution result. - // - // This method is intended for servers which implement the distributed cache - // independently of the - // [Execution][google.devtools.remoteexecution.v1test.Execution] API. As a - // result, it is OPTIONAL for servers to implement. - // - // Errors: - // * `NOT_IMPLEMENTED`: This method is not supported by the server. - // * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the - // entry to the cache. - UpdateActionResult(context.Context, *UpdateActionResultRequest) (*ActionResult, error) -} - -func RegisterActionCacheServer(s *grpc.Server, srv ActionCacheServer) { - s.RegisterService(&_ActionCache_serviceDesc, srv) -} - -func _ActionCache_GetActionResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetActionResultRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ActionCacheServer).GetActionResult(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteexecution.v1test.ActionCache/GetActionResult", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ActionCacheServer).GetActionResult(ctx, req.(*GetActionResultRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ActionCache_UpdateActionResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateActionResultRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ActionCacheServer).UpdateActionResult(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteexecution.v1test.ActionCache/UpdateActionResult", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ActionCacheServer).UpdateActionResult(ctx, req.(*UpdateActionResultRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ActionCache_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.remoteexecution.v1test.ActionCache", - HandlerType: (*ActionCacheServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetActionResult", - Handler: _ActionCache_GetActionResult_Handler, - }, - { - MethodName: "UpdateActionResult", - Handler: _ActionCache_UpdateActionResult_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto", -} - -// Client API for ContentAddressableStorage service - -type ContentAddressableStorageClient interface { - // Determine if blobs are present in the CAS. - // - // Clients can use this API before uploading blobs to determine which ones are - // already present in the CAS and do not need to be uploaded again. - // - // There are no method-specific errors. - FindMissingBlobs(ctx context.Context, in *FindMissingBlobsRequest, opts ...grpc.CallOption) (*FindMissingBlobsResponse, error) - // Upload many blobs at once. - // - // The client MUST NOT upload blobs with a combined total size of more than 10 - // MiB using this API. Such requests should either be split into smaller - // chunks or uploaded using the - // [ByteStream API][google.bytestream.ByteStream], as appropriate. - // - // This request is equivalent to calling [UpdateBlob][] on each individual - // blob, in parallel. The requests may succeed or fail independently. - // - // Errors: - // * `INVALID_ARGUMENT`: The client attempted to upload more than 10 MiB of - // data. - // - // Individual requests may return the following errors, additionally: - // * `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob. - // * `INVALID_ARGUMENT`: The - // [Digest][google.devtools.remoteexecution.v1test.Digest] does not match the - // provided data. - BatchUpdateBlobs(ctx context.Context, in *BatchUpdateBlobsRequest, opts ...grpc.CallOption) (*BatchUpdateBlobsResponse, error) - // Fetch the entire directory tree rooted at a node. - // - // This request must be targeted at a - // [Directory][google.devtools.remoteexecution.v1test.Directory] stored in the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage] - // (CAS). The server will enumerate the `Directory` tree recursively and - // return every node descended from the root. - // The exact traversal order is unspecified and, unless retrieving subsequent - // pages from an earlier request, is not guaranteed to be stable across - // multiple invocations of `GetTree`. - // - // If part of the tree is missing from the CAS, the server will return the - // portion present and omit the rest. - // - // * `NOT_FOUND`: The requested tree root is not present in the CAS. - GetTree(ctx context.Context, in *GetTreeRequest, opts ...grpc.CallOption) (*GetTreeResponse, error) -} - -type contentAddressableStorageClient struct { - cc *grpc.ClientConn -} - -func NewContentAddressableStorageClient(cc *grpc.ClientConn) ContentAddressableStorageClient { - return &contentAddressableStorageClient{cc} -} - -func (c *contentAddressableStorageClient) FindMissingBlobs(ctx context.Context, in *FindMissingBlobsRequest, opts ...grpc.CallOption) (*FindMissingBlobsResponse, error) { - out := new(FindMissingBlobsResponse) - err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/FindMissingBlobs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *contentAddressableStorageClient) BatchUpdateBlobs(ctx context.Context, in *BatchUpdateBlobsRequest, opts ...grpc.CallOption) (*BatchUpdateBlobsResponse, error) { - out := new(BatchUpdateBlobsResponse) - err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/BatchUpdateBlobs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *contentAddressableStorageClient) GetTree(ctx context.Context, in *GetTreeRequest, opts ...grpc.CallOption) (*GetTreeResponse, error) { - out := new(GetTreeResponse) - err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/GetTree", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ContentAddressableStorage service - -type ContentAddressableStorageServer interface { - // Determine if blobs are present in the CAS. - // - // Clients can use this API before uploading blobs to determine which ones are - // already present in the CAS and do not need to be uploaded again. - // - // There are no method-specific errors. - FindMissingBlobs(context.Context, *FindMissingBlobsRequest) (*FindMissingBlobsResponse, error) - // Upload many blobs at once. - // - // The client MUST NOT upload blobs with a combined total size of more than 10 - // MiB using this API. Such requests should either be split into smaller - // chunks or uploaded using the - // [ByteStream API][google.bytestream.ByteStream], as appropriate. - // - // This request is equivalent to calling [UpdateBlob][] on each individual - // blob, in parallel. The requests may succeed or fail independently. - // - // Errors: - // * `INVALID_ARGUMENT`: The client attempted to upload more than 10 MiB of - // data. - // - // Individual requests may return the following errors, additionally: - // * `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob. - // * `INVALID_ARGUMENT`: The - // [Digest][google.devtools.remoteexecution.v1test.Digest] does not match the - // provided data. - BatchUpdateBlobs(context.Context, *BatchUpdateBlobsRequest) (*BatchUpdateBlobsResponse, error) - // Fetch the entire directory tree rooted at a node. - // - // This request must be targeted at a - // [Directory][google.devtools.remoteexecution.v1test.Directory] stored in the - // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage] - // (CAS). The server will enumerate the `Directory` tree recursively and - // return every node descended from the root. - // The exact traversal order is unspecified and, unless retrieving subsequent - // pages from an earlier request, is not guaranteed to be stable across - // multiple invocations of `GetTree`. - // - // If part of the tree is missing from the CAS, the server will return the - // portion present and omit the rest. - // - // * `NOT_FOUND`: The requested tree root is not present in the CAS. - GetTree(context.Context, *GetTreeRequest) (*GetTreeResponse, error) -} - -func RegisterContentAddressableStorageServer(s *grpc.Server, srv ContentAddressableStorageServer) { - s.RegisterService(&_ContentAddressableStorage_serviceDesc, srv) -} - -func _ContentAddressableStorage_FindMissingBlobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(FindMissingBlobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContentAddressableStorageServer).FindMissingBlobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/FindMissingBlobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContentAddressableStorageServer).FindMissingBlobs(ctx, req.(*FindMissingBlobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContentAddressableStorage_BatchUpdateBlobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchUpdateBlobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContentAddressableStorageServer).BatchUpdateBlobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/BatchUpdateBlobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContentAddressableStorageServer).BatchUpdateBlobs(ctx, req.(*BatchUpdateBlobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ContentAddressableStorage_GetTree_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTreeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ContentAddressableStorageServer).GetTree(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/GetTree", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContentAddressableStorageServer).GetTree(ctx, req.(*GetTreeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ContentAddressableStorage_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.remoteexecution.v1test.ContentAddressableStorage", - HandlerType: (*ContentAddressableStorageServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "FindMissingBlobs", - Handler: _ContentAddressableStorage_FindMissingBlobs_Handler, - }, - { - MethodName: "BatchUpdateBlobs", - Handler: _ContentAddressableStorage_BatchUpdateBlobs_Handler, - }, - { - MethodName: "GetTree", - Handler: _ContentAddressableStorage_GetTree_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto", -} - -func init() { - proto.RegisterFile("google/devtools/remoteexecution/v1test/remote_execution.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 2025 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xdd, 0x6f, 0x23, 0x57, - 0x15, 0x67, 0xec, 0x24, 0xb6, 0x8f, 0x9d, 0x75, 0xf6, 0x76, 0xe9, 0x7a, 0xdd, 0x2e, 0x4a, 0xa7, - 0xa2, 0x8a, 0xa2, 0x62, 0xb3, 0xde, 0x96, 0x85, 0x54, 0xa5, 0x6c, 0x1c, 0x27, 0x8d, 0x9a, 0xaf, - 0x4e, 0xe2, 0x74, 0xbb, 0xaa, 0x34, 0x9d, 0x78, 0x6e, 0xc6, 0xa3, 0xd8, 0x73, 0xcd, 0xbd, 0xd7, - 0x69, 0xd2, 0x65, 0x79, 0xe0, 0x05, 0x09, 0x04, 0x12, 0x54, 0x08, 0x24, 0x78, 0x42, 0x42, 0x48, - 0x88, 0x27, 0xfe, 0x00, 0x24, 0xf8, 0x03, 0x78, 0x80, 0x17, 0x9e, 0x11, 0x2f, 0xbc, 0xf1, 0xdc, - 0x07, 0x84, 0xee, 0xc7, 0x7c, 0xd8, 0xc9, 0xb2, 0x63, 0x67, 0x57, 0xe2, 0xcd, 0x73, 0xce, 0x3d, - 0xbf, 0xf3, 0x79, 0xcf, 0x39, 0x33, 0x86, 0xb7, 0x3d, 0x42, 0xbc, 0x1e, 0xae, 0xbb, 0xf8, 0x94, - 0x13, 0xd2, 0x63, 0x75, 0x8a, 0xfb, 0x84, 0x63, 0x7c, 0x86, 0x3b, 0x43, 0xee, 0x93, 0xa0, 0x7e, - 0x7a, 0x87, 0x63, 0xc6, 0x35, 0xd9, 0x8e, 0xe8, 0xb5, 0x01, 0x25, 0x9c, 0xa0, 0xd7, 0x94, 0x78, - 0x2d, 0x14, 0xaf, 0x8d, 0x89, 0xd7, 0x94, 0x78, 0xf5, 0x65, 0xad, 0xc6, 0x19, 0xf8, 0x75, 0x27, - 0x08, 0x08, 0x77, 0x04, 0x97, 0x29, 0x94, 0xea, 0xab, 0x9a, 0xdb, 0x23, 0x81, 0x47, 0x87, 0x41, - 0xe0, 0x07, 0x5e, 0x9d, 0x0c, 0x30, 0x1d, 0x39, 0xf4, 0x25, 0x7d, 0x48, 0x3e, 0x1d, 0x0d, 0x8f, - 0xeb, 0xee, 0x50, 0x1d, 0xd0, 0xfc, 0x9b, 0x9a, 0x4f, 0x07, 0x9d, 0x3a, 0xe3, 0x0e, 0x1f, 0x6a, - 0x41, 0xf3, 0x0f, 0x59, 0x98, 0xbb, 0xdf, 0x11, 0x27, 0x51, 0x1b, 0xae, 0x75, 0x48, 0xbf, 0xef, - 0x04, 0xae, 0xed, 0xfa, 0x1e, 0x66, 0xbc, 0x62, 0x2c, 0x1a, 0x4b, 0xc5, 0x46, 0xad, 0x96, 0xce, - 0x8f, 0xda, 0x9a, 0x94, 0xb2, 0xe6, 0x35, 0x8a, 0x7a, 0x44, 0x0f, 0xe1, 0xba, 0x1f, 0x0c, 0x86, - 0xdc, 0xa6, 0x84, 0xf0, 0x10, 0x39, 0x33, 0x15, 0x72, 0x59, 0x02, 0x59, 0x84, 0x70, 0x8d, 0xfd, - 0x0a, 0x94, 0xc8, 0x90, 0x0b, 0xf0, 0x63, 0xbf, 0x87, 0x59, 0x25, 0xbb, 0x98, 0x5d, 0x2a, 0x58, - 0x45, 0x45, 0x5b, 0x17, 0x24, 0xf4, 0x15, 0x40, 0xfa, 0x88, 0xeb, 0x53, 0xdc, 0xe1, 0x84, 0xfa, - 0x98, 0x55, 0x66, 0xe4, 0xc1, 0xeb, 0x8a, 0xb3, 0x16, 0x33, 0xd0, 0x16, 0xe4, 0x07, 0x3d, 0x87, - 0x1f, 0x13, 0xda, 0xaf, 0xcc, 0x4a, 0x23, 0xbf, 0x9a, 0xd6, 0xc8, 0x3d, 0x2d, 0x67, 0x45, 0x08, - 0xe8, 0x2e, 0xe4, 0xb8, 0xdf, 0xc7, 0x64, 0xc8, 0x2b, 0x73, 0x12, 0xec, 0x56, 0x08, 0x16, 0x26, - 0xaa, 0xb6, 0xa6, 0x13, 0x65, 0x85, 0x27, 0xd1, 0x22, 0x94, 0x5c, 0x62, 0x07, 0x84, 0xdb, 0x1d, - 0xa7, 0xd3, 0xc5, 0x95, 0xdc, 0xa2, 0xb1, 0x94, 0xb7, 0xc0, 0x25, 0x3b, 0x84, 0x37, 0x05, 0xc5, - 0xfc, 0x87, 0x01, 0xb9, 0xa6, 0x0a, 0x32, 0x7a, 0x19, 0x0a, 0x0e, 0xf5, 0x86, 0x7d, 0x1c, 0x70, - 0x56, 0x31, 0xa4, 0x5b, 0x31, 0x01, 0x9d, 0xc1, 0x17, 0x71, 0x70, 0xea, 0x53, 0x12, 0x88, 0x67, - 0xfb, 0xd4, 0xa1, 0xbe, 0x73, 0x24, 0x22, 0x95, 0x59, 0xcc, 0x2e, 0x15, 0x1b, 0xcd, 0xb4, 0xbe, - 0x69, 0x6d, 0xb5, 0x56, 0x0c, 0x76, 0xa8, 0xb1, 0xac, 0x1b, 0xf8, 0x22, 0x91, 0x55, 0xdf, 0x81, - 0x17, 0x2e, 0x39, 0x8c, 0x10, 0xcc, 0x04, 0x4e, 0x1f, 0xcb, 0xd2, 0x2a, 0x58, 0xf2, 0x37, 0xba, - 0x01, 0xb3, 0xa7, 0x4e, 0x6f, 0x88, 0x65, 0x55, 0x14, 0x2c, 0xf5, 0x60, 0xfe, 0xd2, 0x80, 0x7c, - 0x18, 0x52, 0xf4, 0x21, 0xc0, 0x80, 0x8a, 0xaa, 0xe7, 0x22, 0x7b, 0x86, 0x34, 0xfe, 0x1b, 0x93, - 0x26, 0xa6, 0xb6, 0xa7, 0x20, 0xce, 0xad, 0x04, 0x58, 0xf5, 0x0d, 0xc8, 0x87, 0xf4, 0x09, 0xac, - 0xfb, 0xbd, 0x01, 0x85, 0xb0, 0x6e, 0xce, 0xd1, 0x3a, 0xcc, 0xaa, 0x02, 0x54, 0x96, 0xa5, 0x2e, - 0x19, 0x51, 0xa2, 0x3b, 0xc4, 0xc5, 0x96, 0x12, 0x47, 0x1f, 0x40, 0x31, 0x59, 0xa5, 0x2a, 0x49, - 0x6f, 0xa6, 0xbf, 0x25, 0xda, 0x1e, 0x09, 0x99, 0x44, 0x32, 0x7f, 0x68, 0x40, 0x3e, 0x54, 0x76, - 0xa9, 0x97, 0xeb, 0x30, 0x77, 0xa5, 0xab, 0xa9, 0xa5, 0xd1, 0xab, 0x30, 0xef, 0x33, 0xdd, 0x09, - 0x45, 0xc2, 0x2b, 0x33, 0xb2, 0x7a, 0x4b, 0x3e, 0x6b, 0x45, 0x34, 0xf3, 0x04, 0xe6, 0x47, 0x6c, - 0x7d, 0x9e, 0x16, 0x99, 0x6f, 0xc1, 0x9c, 0xee, 0x16, 0x08, 0x66, 0xba, 0x0e, 0xeb, 0x86, 0x5a, - 0xc4, 0x6f, 0x74, 0x1b, 0x80, 0xf9, 0x9f, 0x62, 0xfb, 0xe8, 0x9c, 0xcb, 0x80, 0x1b, 0x4b, 0x59, - 0xab, 0x20, 0x28, 0xab, 0x82, 0x60, 0xfe, 0x35, 0x0b, 0x25, 0xd5, 0x1e, 0x2d, 0xcc, 0x86, 0x3d, - 0x8e, 0xda, 0x63, 0x1d, 0x47, 0xa5, 0xa8, 0x91, 0xd6, 0xb6, 0xdd, 0xa8, 0x33, 0x8d, 0x76, 0xa9, - 0xe3, 0x4b, 0xbb, 0x54, 0x56, 0x82, 0xdf, 0x9b, 0x0c, 0x3c, 0x8a, 0xec, 0x65, 0xed, 0xed, 0x25, - 0x28, 0xe0, 0x33, 0x9f, 0xdb, 0x1d, 0xe2, 0xaa, 0xd4, 0xcc, 0x5a, 0x79, 0x41, 0x68, 0x8a, 0x2c, - 0x88, 0x58, 0x70, 0x97, 0x88, 0x56, 0xed, 0x7c, 0x22, 0xbb, 0x5f, 0xc9, 0x2a, 0x28, 0x8a, 0xe5, - 0x7c, 0x82, 0xf6, 0x61, 0x5e, 0xb3, 0x75, 0x5e, 0xe6, 0xa6, 0xca, 0x4b, 0x49, 0x81, 0xe8, 0x9c, - 0x28, 0x9d, 0x98, 0x52, 0xa9, 0x33, 0x17, 0xe9, 0xc4, 0x94, 0xc6, 0x3a, 0x05, 0x5b, 0xeb, 0xcc, - 0x4f, 0xad, 0x13, 0x53, 0xaa, 0x9e, 0xcc, 0xdf, 0x1a, 0x00, 0x71, 0x22, 0x44, 0x59, 0x0c, 0x1c, - 0x1e, 0x95, 0x85, 0xf8, 0xfd, 0xcc, 0xae, 0x43, 0x05, 0x72, 0x1d, 0x12, 0x70, 0x1c, 0xf0, 0x4a, - 0x56, 0xfa, 0x16, 0x3e, 0xa6, 0xbb, 0x28, 0xbf, 0x32, 0x60, 0xe6, 0x80, 0x62, 0x8c, 0x5a, 0x30, - 0x23, 0xc6, 0xa7, 0x9e, 0xc8, 0x77, 0x26, 0xee, 0x08, 0x96, 0x14, 0x47, 0xdb, 0x90, 0xef, 0x74, - 0xfd, 0x9e, 0x4b, 0x71, 0xa0, 0x2b, 0x77, 0x0a, 0xa8, 0x08, 0xc2, 0xfc, 0xa3, 0x01, 0xe5, 0xb1, - 0xa2, 0x7b, 0xae, 0xd1, 0xdc, 0x85, 0x22, 0xa7, 0x18, 0x87, 0xb5, 0x90, 0x9d, 0x0a, 0x0c, 0x04, - 0x84, 0xae, 0x84, 0xcf, 0x32, 0x70, 0x4d, 0x85, 0x1b, 0x5b, 0xf8, 0xdb, 0xc3, 0xb0, 0x81, 0x05, - 0x8c, 0x3b, 0x41, 0x07, 0xdb, 0x89, 0x9e, 0x54, 0x0a, 0x89, 0x3b, 0xba, 0x37, 0x39, 0xb2, 0x2b, - 0x4c, 0xea, 0x90, 0xee, 0x25, 0x5a, 0x1a, 0x2d, 0xc3, 0x75, 0x76, 0xe2, 0x0f, 0xd4, 0xa0, 0xb7, - 0x7b, 0x84, 0x9c, 0x0c, 0x07, 0xd2, 0xad, 0xbc, 0x55, 0x16, 0x0c, 0x39, 0xee, 0xb7, 0x24, 0x19, - 0xdd, 0x85, 0x17, 0x39, 0xe1, 0x4e, 0xcf, 0x56, 0xdb, 0x94, 0x68, 0x3f, 0x76, 0x87, 0x0c, 0x03, - 0xae, 0xef, 0xf1, 0x0b, 0x92, 0xbb, 0x19, 0xe8, 0xb2, 0x6e, 0x0a, 0xd6, 0xa5, 0x42, 0xaa, 0xd5, - 0xcd, 0xca, 0x56, 0x37, 0x26, 0xa4, 0x9a, 0xde, 0x19, 0xe4, 0xb6, 0x88, 0x27, 0xef, 0x46, 0x9c, - 0x39, 0xe3, 0x4a, 0x99, 0xfb, 0x32, 0x5c, 0xeb, 0x0e, 0xfb, 0x4e, 0x60, 0x53, 0xec, 0xb8, 0xb2, - 0xdc, 0x33, 0xd2, 0xcb, 0x79, 0x49, 0xb5, 0x34, 0xd1, 0xfc, 0x41, 0x16, 0xca, 0x51, 0x3e, 0xd8, - 0x80, 0x04, 0x0c, 0xa3, 0x2d, 0x98, 0xa3, 0xb2, 0xf7, 0x6a, 0x13, 0xde, 0x98, 0x30, 0xd6, 0x52, - 0xd6, 0xd2, 0x18, 0x22, 0xbd, 0x32, 0xd8, 0xae, 0xad, 0x41, 0x95, 0x1d, 0x25, 0x45, 0xd4, 0x4d, - 0x7e, 0x19, 0xe6, 0xd4, 0x92, 0xac, 0x4b, 0x0c, 0x85, 0x2a, 0xe9, 0xa0, 0x53, 0xdb, 0x97, 0x1c, - 0x4b, 0x9f, 0x40, 0x5d, 0x28, 0x32, 0x4c, 0x4f, 0x31, 0xb5, 0x7b, 0xc4, 0x53, 0x8b, 0x65, 0xb1, - 0xb1, 0x91, 0xd6, 0xc6, 0x31, 0x67, 0x6b, 0xfb, 0x12, 0x6a, 0x8b, 0x78, 0xac, 0x15, 0x70, 0x7a, - 0x6e, 0x01, 0x8b, 0x08, 0xd5, 0x00, 0xca, 0x63, 0x6c, 0xb4, 0x00, 0xd9, 0x13, 0x7c, 0xae, 0x4b, - 0x54, 0xfc, 0x44, 0xad, 0xe4, 0xb6, 0x52, 0x6c, 0xd4, 0xd3, 0x1a, 0xa2, 0x13, 0xae, 0xd7, 0x9b, - 0x95, 0xcc, 0xd7, 0x0d, 0xf3, 0xf3, 0x0c, 0x54, 0xb4, 0x7d, 0xbb, 0xe1, 0xfb, 0xc6, 0x36, 0xe6, - 0x8e, 0xeb, 0x70, 0x07, 0x7d, 0x04, 0xb3, 0x8c, 0x3b, 0x9e, 0xba, 0x1e, 0xd7, 0x1a, 0xeb, 0x13, - 0x3a, 0x7c, 0x01, 0x50, 0x84, 0xd5, 0xc3, 0x96, 0x02, 0x15, 0x6d, 0x5f, 0xdd, 0x90, 0xab, 0xbd, - 0x2f, 0x94, 0x14, 0x88, 0x1e, 0x35, 0xaf, 0x03, 0xd2, 0xf3, 0x8b, 0x71, 0x8a, 0x9d, 0xbe, 0xba, - 0xde, 0x59, 0x19, 0xbb, 0x05, 0xc5, 0xd9, 0x97, 0x0c, 0x79, 0xc5, 0xd5, 0x69, 0x31, 0x79, 0x92, - 0xa7, 0x67, 0xa2, 0xd3, 0x98, 0xd2, 0xf8, 0xb4, 0xb9, 0x0b, 0xb3, 0xd2, 0x01, 0x54, 0x84, 0x5c, - 0x7b, 0xe7, 0xbd, 0x9d, 0xdd, 0x0f, 0x76, 0x16, 0xbe, 0x80, 0xca, 0x50, 0x6c, 0xde, 0x6f, 0xbe, - 0xdb, 0xb2, 0x9b, 0xef, 0xb6, 0x9a, 0xef, 0x2d, 0x18, 0x08, 0x60, 0xee, 0xfd, 0x76, 0xab, 0xdd, - 0x5a, 0x5b, 0xc8, 0xa0, 0x79, 0x28, 0xb4, 0x1e, 0xb4, 0x9a, 0xed, 0x83, 0xcd, 0x9d, 0x8d, 0x85, - 0xac, 0x78, 0x6c, 0xee, 0x6e, 0xef, 0x6d, 0xb5, 0x0e, 0x5a, 0x6b, 0x0b, 0x33, 0xe6, 0x4f, 0x0d, - 0x78, 0x71, 0x03, 0xf3, 0x91, 0x1a, 0x9e, 0xa4, 0x43, 0x3d, 0x8f, 0x08, 0x9a, 0xff, 0x36, 0xe0, - 0x56, 0x7b, 0xe0, 0x3a, 0x1c, 0xff, 0x5f, 0xd9, 0x85, 0x3e, 0x8c, 0x40, 0xf5, 0xa5, 0xce, 0x5e, - 0xa1, 0x53, 0x68, 0x68, 0xf5, 0x64, 0xfe, 0xc4, 0x80, 0x9b, 0xeb, 0x7e, 0xe0, 0x6e, 0xfb, 0x8c, - 0xf9, 0x81, 0xb7, 0xda, 0x23, 0x47, 0x6c, 0x22, 0x87, 0xdf, 0x87, 0xd2, 0x51, 0x8f, 0x1c, 0x69, - 0x77, 0xc3, 0x85, 0x71, 0x52, 0x7f, 0x8b, 0x02, 0x43, 0xfd, 0x66, 0xe6, 0x77, 0xa0, 0x72, 0xd1, - 0x24, 0xdd, 0x2d, 0x3f, 0x86, 0x1b, 0x7d, 0x45, 0xb7, 0x9f, 0x81, 0x5a, 0xd4, 0x8f, 0x75, 0x84, - 0xda, 0xbf, 0x0b, 0xd7, 0x55, 0x0d, 0x08, 0x62, 0x18, 0x0a, 0xf9, 0xed, 0x40, 0x2e, 0x36, 0x57, - 0xfe, 0x76, 0x20, 0x51, 0xe2, 0x8d, 0x5d, 0x34, 0x07, 0x59, 0x24, 0x25, 0x4b, 0xfe, 0x36, 0x7f, - 0x66, 0xc0, 0xcd, 0x55, 0x87, 0x77, 0xba, 0xb1, 0x15, 0x93, 0x65, 0xa4, 0x0d, 0x79, 0xaa, 0xce, - 0x87, 0x61, 0x49, 0xfd, 0x26, 0x79, 0xc1, 0x71, 0x2b, 0x82, 0x32, 0x7f, 0x94, 0x81, 0xca, 0x45, - 0xbb, 0x74, 0x5a, 0x3c, 0x28, 0x50, 0xfd, 0x3b, 0x7c, 0x49, 0xdc, 0x4c, 0xab, 0xf4, 0x49, 0xa0, - 0xb5, 0xf0, 0x87, 0x15, 0x63, 0x57, 0xbf, 0x6f, 0x40, 0x3e, 0xd2, 0xba, 0x0b, 0xc5, 0x44, 0x11, - 0x4c, 0x99, 0x12, 0x88, 0x4b, 0x2f, 0x31, 0x18, 0x33, 0x4f, 0x1b, 0x8c, 0xe6, 0x9f, 0x0d, 0xb8, - 0xb6, 0x81, 0xb9, 0x58, 0x5f, 0x27, 0x4a, 0xcf, 0x2e, 0x14, 0xaf, 0xfe, 0xa5, 0x08, 0x68, 0xfc, - 0x91, 0xe8, 0x25, 0x28, 0x0c, 0x1c, 0x0f, 0xdb, 0xe2, 0xad, 0x4e, 0x76, 0x86, 0x59, 0x2b, 0x2f, - 0x08, 0xfb, 0xfe, 0xa7, 0xf2, 0x9d, 0x47, 0x32, 0x39, 0x39, 0xc1, 0x81, 0x6e, 0xef, 0xf2, 0xf8, - 0x81, 0x20, 0x98, 0x3f, 0x36, 0xa0, 0x1c, 0x39, 0xa1, 0xa3, 0xba, 0x3f, 0xfa, 0x92, 0x6e, 0x4c, - 0xbb, 0x47, 0x27, 0x51, 0xd0, 0x6b, 0x50, 0x0e, 0xf0, 0x19, 0xb7, 0x13, 0xc6, 0xa8, 0xef, 0x0d, - 0xf3, 0x82, 0xbc, 0x17, 0x19, 0xb4, 0x0d, 0xc5, 0x03, 0x42, 0x7a, 0x6b, 0x98, 0x3b, 0x7e, 0x4f, - 0xbe, 0xcf, 0x09, 0x6d, 0xc9, 0x68, 0xe6, 0x05, 0x41, 0x46, 0xf2, 0x15, 0x28, 0x49, 0xe6, 0x29, - 0xa6, 0x2c, 0xdc, 0x55, 0x0b, 0x56, 0x51, 0xd0, 0x0e, 0x15, 0x49, 0x74, 0xf4, 0xb2, 0xce, 0x4e, - 0x34, 0xda, 0x0f, 0xb5, 0x98, 0xab, 0x74, 0xe8, 0xb2, 0xb9, 0x9b, 0xd6, 0xc1, 0x84, 0x79, 0x4a, - 0x57, 0xc2, 0x56, 0xdd, 0xa5, 0x7d, 0x57, 0xdb, 0x92, 0x57, 0x84, 0x4d, 0x57, 0x8c, 0x5b, 0xa9, - 0xd4, 0x0f, 0x4e, 0x49, 0xc7, 0x09, 0x4f, 0xe9, 0xe1, 0x2c, 0x38, 0x9b, 0x11, 0x63, 0xd3, 0x45, - 0x2b, 0x70, 0xab, 0x43, 0x28, 0xc5, 0x3d, 0x87, 0x63, 0x37, 0x21, 0xc3, 0x84, 0x90, 0x4a, 0xe2, - 0xcd, 0xf8, 0x40, 0x2c, 0xca, 0x36, 0xdd, 0xc6, 0x6f, 0x0c, 0x28, 0xb4, 0x42, 0xa3, 0xd1, 0xcf, - 0x0d, 0xc8, 0xe9, 0x9d, 0x04, 0x7d, 0x6d, 0xe2, 0xad, 0x4d, 0x06, 0xae, 0x7a, 0x3b, 0x94, 0x4b, - 0x7c, 0xa2, 0xad, 0x45, 0x1b, 0x8e, 0xf9, 0xe6, 0xf7, 0xfe, 0xf6, 0xcf, 0xcf, 0x32, 0x75, 0x73, - 0x39, 0xfc, 0x5c, 0xfc, 0x68, 0xe4, 0x12, 0xbc, 0xbd, 0xbc, 0xfc, 0xb8, 0xae, 0xe2, 0xc0, 0x56, - 0x94, 0x2a, 0xbc, 0x62, 0x2c, 0x37, 0x3e, 0xcf, 0x42, 0x51, 0x0d, 0x26, 0xf9, 0x16, 0x80, 0xfe, - 0xa5, 0x4a, 0x71, 0xe4, 0x6b, 0xc4, 0x37, 0xd3, 0x5a, 0x7c, 0xf9, 0x2a, 0x51, 0x9d, 0x6a, 0x42, - 0x9a, 0x1f, 0x4b, 0x87, 0x1e, 0xa2, 0x07, 0x4f, 0x75, 0x48, 0x09, 0xb0, 0xfa, 0xa3, 0x91, 0x99, - 0x5f, 0xeb, 0x3a, 0xac, 0xfb, 0x78, 0x9c, 0x18, 0x7f, 0x86, 0x79, 0x8c, 0xfe, 0x63, 0x00, 0xba, - 0xb8, 0x68, 0xa0, 0xfb, 0x93, 0xf5, 0xe9, 0x67, 0xe7, 0x31, 0x91, 0x1e, 0xfb, 0xd5, 0xe7, 0xe6, - 0xf1, 0xca, 0xe8, 0x02, 0xd3, 0xf8, 0xc5, 0x2c, 0xdc, 0x6a, 0xaa, 0x51, 0x78, 0xdf, 0x75, 0x29, - 0x66, 0x4c, 0xbc, 0x1f, 0xed, 0x73, 0x42, 0xc5, 0x92, 0xf9, 0x17, 0x03, 0x16, 0xc6, 0x37, 0x00, - 0xf4, 0x4e, 0xfa, 0x8f, 0x8e, 0x97, 0xae, 0x33, 0xd5, 0x6f, 0x4d, 0x0f, 0xa0, 0x3a, 0xa3, 0x79, - 0x4f, 0x86, 0xe9, 0x8e, 0xf9, 0xfa, 0xff, 0x08, 0x93, 0x98, 0x26, 0x6c, 0xe5, 0x38, 0x86, 0x58, - 0x31, 0x96, 0xa5, 0x43, 0xe3, 0x63, 0x2e, 0xbd, 0x43, 0x4f, 0xd8, 0x06, 0xd2, 0x3b, 0xf4, 0xa4, - 0x09, 0x3b, 0x81, 0x43, 0x47, 0x31, 0x84, 0x70, 0xe8, 0xef, 0x06, 0xe4, 0xf4, 0xdc, 0x48, 0xdf, - 0x56, 0x46, 0xa7, 0x65, 0xf5, 0xde, 0xc4, 0x72, 0xda, 0xea, 0x8f, 0xa4, 0xd5, 0x87, 0xe8, 0xe0, - 0x69, 0x56, 0xd7, 0x1f, 0x25, 0x26, 0x6d, 0x58, 0xa3, 0x49, 0x52, 0xb2, 0x42, 0x3d, 0xa5, 0x65, - 0xf5, 0x4f, 0x06, 0x2c, 0x77, 0x48, 0x3f, 0xa5, 0x71, 0xab, 0x37, 0x2c, 0x49, 0x8f, 0x3a, 0xee, - 0x1e, 0x25, 0x9c, 0xec, 0x19, 0x0f, 0xdb, 0x5a, 0xde, 0x23, 0x3d, 0x27, 0xf0, 0x6a, 0x84, 0x7a, - 0x75, 0x0f, 0x07, 0xf2, 0x6f, 0x91, 0xba, 0x62, 0x39, 0x03, 0x9f, 0x3d, 0xed, 0xaf, 0xb7, 0xb7, - 0xc6, 0xc8, 0xbf, 0xce, 0x64, 0xad, 0xd6, 0x83, 0xdf, 0x65, 0x6e, 0x6f, 0x28, 0xf4, 0x31, 0xe5, - 0xb5, 0xc3, 0x3b, 0x07, 0x98, 0xf1, 0xa3, 0x39, 0xa9, 0xe7, 0xee, 0x7f, 0x03, 0x00, 0x00, 0xff, - 0xff, 0xf0, 0x8a, 0x2f, 0x43, 0xe1, 0x1b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/bots.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/bots.pb.go deleted file mode 100644 index 604399a1..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/bots.pb.go +++ /dev/null @@ -1,1015 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/remoteworkers/v1test2/bots.proto - -/* -Package remoteworkers is a generated protocol buffer package. - -It is generated from these files: - google/devtools/remoteworkers/v1test2/bots.proto - google/devtools/remoteworkers/v1test2/command.proto - google/devtools/remoteworkers/v1test2/tasks.proto - -It has these top-level messages: - BotSession - Lease - Worker - Device - AdminTemp - CreateBotSessionRequest - UpdateBotSessionRequest - PostBotEventTempRequest - CommandTask - CommandOutputs - CommandOverhead - FileMetadata - DirectoryMetadata - Digest - Directory - Task - TaskResult - GetTaskRequest - UpdateTaskResultRequest - AddTaskLogRequest - AddTaskLogResponse -*/ -package remoteworkers - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A coarse description of the status of the bot that the server uses to -// determine whether to assign the bot new leases. -type BotStatus int32 - -const ( - // Default value; do not use. - BotStatus_BOT_STATUS_UNSPECIFIED BotStatus = 0 - // The bot is healthy, and will accept leases as normal. - BotStatus_OK BotStatus = 1 - // The bot is unhealthy and will not accept new leases. For example, the bot - // may have detected that available disk space is too low. This situation may - // resolve itself, but will typically require human intervention. - BotStatus_UNHEALTHY BotStatus = 2 - // The bot has been asked to reboot the host. The bot will not accept new - // leases; once all leases are complete, this session will no longer be - // updated but the bot will be expected to establish a new session after the - // reboot completes. - BotStatus_HOST_REBOOTING BotStatus = 3 - // The bot has been asked to shut down. As with HOST_REBOOTING, once all - // leases are completed, the session will no longer be updated and the bot - // will not be expected to establish a new session. - // - // Bots are typically only asked to shut down if its host computer will be - // modified in some way, such as deleting a VM. - BotStatus_BOT_TERMINATING BotStatus = 4 -) - -var BotStatus_name = map[int32]string{ - 0: "BOT_STATUS_UNSPECIFIED", - 1: "OK", - 2: "UNHEALTHY", - 3: "HOST_REBOOTING", - 4: "BOT_TERMINATING", -} -var BotStatus_value = map[string]int32{ - "BOT_STATUS_UNSPECIFIED": 0, - "OK": 1, - "UNHEALTHY": 2, - "HOST_REBOOTING": 3, - "BOT_TERMINATING": 4, -} - -func (x BotStatus) String() string { - return proto.EnumName(BotStatus_name, int32(x)) -} -func (BotStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// The state of the lease. All leases start in the PENDING state. A bot can -// change PENDING to ACTIVE or (in the case of an error) COMPLETED, or from -// ACTIVE to COMPLETED. The server can change PENDING or ACTIVE to CANCELLED if -// it wants the bot to release its resources - for example, if the bot needs to -// be quarantined (it's producing bad output) or a cell needs to be drained. -type LeaseState int32 - -const ( - // Default value; do not use. - LeaseState_LEASE_STATE_UNSPECIFIED LeaseState = 0 - // Pending: the server expects the bot to accept this lease. This may only be - // set by the server. - LeaseState_PENDING LeaseState = 1 - // Active: the bot has accepted this lease. This may only be set by the bot. - LeaseState_ACTIVE LeaseState = 2 - // Completed: the bot is no longer leased. This may only be set by the bot, - // and the status field must be populated iff the state is COMPLETED. - LeaseState_COMPLETED LeaseState = 4 - // Cancelled: The bot should immediately release all resources associated with - // the lease. This may only be set by the server. - LeaseState_CANCELLED LeaseState = 5 -) - -var LeaseState_name = map[int32]string{ - 0: "LEASE_STATE_UNSPECIFIED", - 1: "PENDING", - 2: "ACTIVE", - 4: "COMPLETED", - 5: "CANCELLED", -} -var LeaseState_value = map[string]int32{ - "LEASE_STATE_UNSPECIFIED": 0, - "PENDING": 1, - "ACTIVE": 2, - "COMPLETED": 4, - "CANCELLED": 5, -} - -func (x LeaseState) String() string { - return proto.EnumName(LeaseState_name, int32(x)) -} -func (LeaseState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -// Possible administration actions. -type AdminTemp_Command int32 - -const ( - // Illegal value. - AdminTemp_UNSPECIFIED AdminTemp_Command = 0 - // Download and run a new version of the bot. `arg` will be a resource - // accessible via `ByteStream.Read` to obtain the new bot code. - AdminTemp_BOT_UPDATE AdminTemp_Command = 1 - // Restart the bot without downloading a new version. `arg` will be a - // message to log. - AdminTemp_BOT_RESTART AdminTemp_Command = 2 - // Shut down the bot. `arg` will be a task resource name (similar to those - // in tasks.proto) that the bot can use to tell the server that it is - // terminating. - AdminTemp_BOT_TERMINATE AdminTemp_Command = 3 - // Restart the host computer. `arg` will be a message to log. - AdminTemp_HOST_RESTART AdminTemp_Command = 4 -) - -var AdminTemp_Command_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "BOT_UPDATE", - 2: "BOT_RESTART", - 3: "BOT_TERMINATE", - 4: "HOST_RESTART", -} -var AdminTemp_Command_value = map[string]int32{ - "UNSPECIFIED": 0, - "BOT_UPDATE": 1, - "BOT_RESTART": 2, - "BOT_TERMINATE": 3, - "HOST_RESTART": 4, -} - -func (x AdminTemp_Command) String() string { - return proto.EnumName(AdminTemp_Command_name, int32(x)) -} -func (AdminTemp_Command) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} } - -// Types of bot events. -type PostBotEventTempRequest_Type int32 - -const ( - // Illegal value. - PostBotEventTempRequest_UNSPECIFIED PostBotEventTempRequest_Type = 0 - // Interesting but harmless event. - PostBotEventTempRequest_INFO PostBotEventTempRequest_Type = 1 - // Error condition. - PostBotEventTempRequest_ERROR PostBotEventTempRequest_Type = 2 -) - -var PostBotEventTempRequest_Type_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "INFO", - 2: "ERROR", -} -var PostBotEventTempRequest_Type_value = map[string]int32{ - "UNSPECIFIED": 0, - "INFO": 1, - "ERROR": 2, -} - -func (x PostBotEventTempRequest_Type) String() string { - return proto.EnumName(PostBotEventTempRequest_Type_name, int32(x)) -} -func (PostBotEventTempRequest_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{7, 0} -} - -// A bot session represents the state of a bot while in continuous contact with -// the server for a period of time. The session includes information about the -// worker - that is, the *worker* (the physical or virtual hardware) is -// considered to be a property of the bot (the software agent running on that -// hardware), which is the reverse of real life, but more natural from the point -// of the view of this API, which communicates solely with the bot and not -// directly with the underlying worker. -type BotSession struct { - // The bot session name, as selected by the server. Output only during a call - // to CreateBotSession. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A unique bot ID within the farm used to persistently identify this bot over - // time (i.e., over multiple sessions). This ID must be unique within a - // farm. Typically, the bot ID will be the same as the name of the primary - // device in the worker (e.g., what you'd get from typing `uname -n` on *nix), - // but this is not required since a single device may allow multiple bots to - // run on it, each with access to different resources. What is important is - // that this ID is meaningful to humans, who might need to hunt a physical - // machine down to fix it. - // - // When CreateBotSession is successfully called with a bot_id, all prior - // sessions with the same ID are invalidated. If a bot attempts to update an - // invalid session, the server must reject that request, and may also - // quarantine the other bot with the same bot IDs (ie, stop sending it new - // leases and alert an admin). - BotId string `protobuf:"bytes,2,opt,name=bot_id,json=botId" json:"bot_id,omitempty"` - // The status of the bot. This must be populated in every call to - // UpdateBotSession. - Status BotStatus `protobuf:"varint,3,opt,name=status,enum=google.devtools.remoteworkers.v1test2.BotStatus" json:"status,omitempty"` - // A description of the worker hosting this bot. The Worker message is used - // here in the Status context (see Worker for more information). If multiple - // bots are running on the worker, this field should only describe the - // resources accessible from this bot. - // - // During the call to CreateBotSession, the server may make arbitrary changes - // to the worker's `server_properties` field (see that field for more - // information). Otherwise, this field is input-only. - Worker *Worker `protobuf:"bytes,4,opt,name=worker" json:"worker,omitempty"` - // A list of all leases that are a part of this session. See the Lease message - // for details. - Leases []*Lease `protobuf:"bytes,5,rep,name=leases" json:"leases,omitempty"` - // The time at which this bot session will expire, unless the bot calls - // UpdateBotSession again. Output only. - ExpireTime *google_protobuf4.Timestamp `protobuf:"bytes,6,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` - // The version of the bot code currently running. The server may use this - // information to issue an admin action to tell the bot to update itself. - Version string `protobuf:"bytes,7,opt,name=version" json:"version,omitempty"` -} - -func (m *BotSession) Reset() { *m = BotSession{} } -func (m *BotSession) String() string { return proto.CompactTextString(m) } -func (*BotSession) ProtoMessage() {} -func (*BotSession) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *BotSession) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *BotSession) GetBotId() string { - if m != nil { - return m.BotId - } - return "" -} - -func (m *BotSession) GetStatus() BotStatus { - if m != nil { - return m.Status - } - return BotStatus_BOT_STATUS_UNSPECIFIED -} - -func (m *BotSession) GetWorker() *Worker { - if m != nil { - return m.Worker - } - return nil -} - -func (m *BotSession) GetLeases() []*Lease { - if m != nil { - return m.Leases - } - return nil -} - -func (m *BotSession) GetExpireTime() *google_protobuf4.Timestamp { - if m != nil { - return m.ExpireTime - } - return nil -} - -func (m *BotSession) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -// A Lease is a lease that the scheduler has assigned to this bot. If the bot -// notices (by UpdateBotSession) that it has any leases in the PENDING state, it -// should call UpdateBotSession to put the leases into the ACTIVE state and -// start executing their assignments. -// -// All fields in this message are output-only, *except* the `state` and `status` -// fields. Note that repeated fields can only be updated as a unit, so on every -// update the bot must provide an update for *all* the leases the server expects -// it to report on. -// -// The scheduler *should* ensure that all leases scheduled to a bot can actually -// be accepted, but race conditions may occur. In such cases, the bot should -// attempt to accept the leases in the order they are listed by the server, to -// allow the server to control priorities. -// -// The server will remove COMPLETED leases from time to time, after which the -// bot shouldn't report on them any more (the server will ignore superfluous -// COMPLETED records). -type Lease struct { - // The assignment, which is typically a resource that can be accessed through - // some other services. The assignment must be meaningful to the bot based - // solely on this name, either because the bot only understands one type of - // assignment (e.g., tasks served through the Tasks interface) or through some - // implementation-defined schema. - // - // For example, if the worker is executing a Task as defined by the Tasks - // interface, this field might be projects/{projectid}/tasks/{taskid}. - // However, it the worker is being assigned pull from a *queue* of tasks, the - // resource would be the name of the queue, something like - // projects/{projectid}/locations/{locationid}/queues/{queueid}. That queue - // may then provide the bot with tasks through another interface, which the - // bot then processes through the [Tasks] - // [google.devtools.remoteworkers.v1test2.Tasks] interface. - // - // Note that the assignment may be a [full resource name] - // [https://cloud.google.com/apis/design/resource_names#full_resource_name] if - // it should be accessed through an endpoint that is not already known to the - // bot. - Assignment string `protobuf:"bytes,1,opt,name=assignment" json:"assignment,omitempty"` - // The state of the lease. See LeaseState for more information. - State LeaseState `protobuf:"varint,2,opt,name=state,enum=google.devtools.remoteworkers.v1test2.LeaseState" json:"state,omitempty"` - // The final status of the lease (should be populated by the bot if the state - // is completed). This is the status of the lease, not of any task represented - // by the lease. For example, if the bot could not accept the lease because it - // asked for some resource the bot didn't have, this status will be - // FAILED_PRECONDITION. But if the assignment in the lease didn't execute - // correctly, this field will be `OK` while the failure of the assignment must - // be tracked elsewhere (e.g., through the Tasks interface). - Status *google_rpc.Status `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"` - // The requirements that are being claimed by this lease. This field may be - // omitted by the server if the lease is not pending. - Requirements *Worker `protobuf:"bytes,4,opt,name=requirements" json:"requirements,omitempty"` - // The time at which this lease expires. The server *may* extend this over - // time, but due to race conditions, the bot is not *required* to respect any - // expiry date except the first one. - ExpireTime *google_protobuf4.Timestamp `protobuf:"bytes,5,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` - // While the `assignment` field is a resource name that allows the bot to - // get the actual assignment, the server can also optionally include the - // assignment itself inline in order to save a round trip to the server. - // - // This doesn't necessarily need to be the resource pointed to by - // `assignment`. For example, if the assignment is a task, this field could - // be task.description, not the entire task, since that's all the bot needs - // to know to get started. As with `assignment` itself, all that's necessary - // is that the bot knows how to handle the type of message received here. - // - // This field may be omitted by the server if the lease is not in the - // `PENDING` state. - InlineAssignment *google_protobuf1.Any `protobuf:"bytes,6,opt,name=inline_assignment,json=inlineAssignment" json:"inline_assignment,omitempty"` -} - -func (m *Lease) Reset() { *m = Lease{} } -func (m *Lease) String() string { return proto.CompactTextString(m) } -func (*Lease) ProtoMessage() {} -func (*Lease) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Lease) GetAssignment() string { - if m != nil { - return m.Assignment - } - return "" -} - -func (m *Lease) GetState() LeaseState { - if m != nil { - return m.State - } - return LeaseState_LEASE_STATE_UNSPECIFIED -} - -func (m *Lease) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func (m *Lease) GetRequirements() *Worker { - if m != nil { - return m.Requirements - } - return nil -} - -func (m *Lease) GetExpireTime() *google_protobuf4.Timestamp { - if m != nil { - return m.ExpireTime - } - return nil -} - -func (m *Lease) GetInlineAssignment() *google_protobuf1.Any { - if m != nil { - return m.InlineAssignment - } - return nil -} - -// Describes a worker, which is a list of one or more devices and the -// connections between them. A device could be a computer, a phone, or even an -// accelerator like a GPU; it's up to the farm administrator to decide how to -// model their farm. For example, if a farm only has one type of GPU, the GPU -// could be modelled as a "has_gpu" property on its host computer; if it has -// many subproperties itself, it might be better to model it as a separate -// device. -// -// The first device in the worker is the "primary device" - that is, the device -// running a bot and which is responsible for actually executing commands. All -// other devices are considered to be attached devices, and must be controllable -// by the primary device. -// -// This message (and all its submessages) can be used in two contexts: -// -// * Status: sent by the bot to report the current capabilities of the device to -// allow reservation matching. -// * Request: sent by a client to request a device with certain capabilities in -// a reservation. -// -// Several of the fields in this message have different semantics depending on -// which of which of these contexts it is used. These semantics are described -// below. -// -// Several messages in Worker and its submessages have the concept of keys and -// values, such as `Worker.Property` and `Device.Property`. All keys are simple -// strings, but certain keys are "standard" keys and should be broadly supported -// across farms and implementations; these are listed below each relevant -// message. Bot implementations or farm admins may add *additional* keys, but -// these SHOULD all begin with an underscore so they do not conflict with -// standard keys that may be added in the future. -// -// Keys are not context sensitive. -// -// See http://goo.gl/NurY8g for more information on the Worker message. -type Worker struct { - // A list of devices; the first device is the primary device. See the `Device` - // message for more information. - Devices []*Device `protobuf:"bytes,1,rep,name=devices" json:"devices,omitempty"` - // A worker may contain "global" properties. For example, certain machines - // might be reserved for certain types of jobs, like short-running compilation - // versus long-running integration tests. This property is known as a "pool" - // and is not related to any one device within the worker; rather, it applies - // to the worker as a whole. - // - // The behaviour of repeated keys is identical to that of Device.Property. - Properties []*Worker_Property `protobuf:"bytes,2,rep,name=properties" json:"properties,omitempty"` -} - -func (m *Worker) Reset() { *m = Worker{} } -func (m *Worker) String() string { return proto.CompactTextString(m) } -func (*Worker) ProtoMessage() {} -func (*Worker) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Worker) GetDevices() []*Device { - if m != nil { - return m.Devices - } - return nil -} - -func (m *Worker) GetProperties() []*Worker_Property { - if m != nil { - return m.Properties - } - return nil -} - -// A global property; see the `properties` field for more information. -type Worker_Property struct { - // For general information on keys, see the documentation to `Worker`. - // - // The current set of standard keys are: - // - // * pool: different workers can be reserved for different purposes. For - // example, an admin might want to segregate long-running integration tests - // from short-running unit tests, so unit tests will always get some - // throughput. To support this, the server can assign different values for - // `pool` (such as "itest" and "utest") to different workers, and then have - // jobs request workers from those pools. - Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // The property's value. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` -} - -func (m *Worker_Property) Reset() { *m = Worker_Property{} } -func (m *Worker_Property) String() string { return proto.CompactTextString(m) } -func (*Worker_Property) ProtoMessage() {} -func (*Worker_Property) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *Worker_Property) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *Worker_Property) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -// Any device, including computers, phones, accelerators (e.g. GPUs), etc. All -// names must be unique. -type Device struct { - // The handle can be thought of as the "name" of the device, and must be - // unique within a Worker. - // - // In the Status context, the handle should be some human-understandable name, - // perhaps corresponding to a label physically written on the device to make - // it easy to locate. In the Request context, the name should be the - // *logical* name expected by the task. The bot is responsible for mapping the - // logical name expected by the task to a machine-readable name that the task - // can actually use, such as a USB address. The method by which this mapping - // is communicated to the task is not covered in this API. - Handle string `protobuf:"bytes,1,opt,name=handle" json:"handle,omitempty"` - // Properties of this device that don't change based on the tasks that are - // running on it, e.g. OS, CPU architecture, etc. - // - // Keys may be repeated, and have the following interpretation: - // - // * Status context: the device can support *any* the listed values. For - // example, an "ISA" property might include "x86", "x86-64" and "sse4". - // - // * Request context: the device *must* support *all* of the listed values. - Properties []*Device_Property `protobuf:"bytes,2,rep,name=properties" json:"properties,omitempty"` -} - -func (m *Device) Reset() { *m = Device{} } -func (m *Device) String() string { return proto.CompactTextString(m) } -func (*Device) ProtoMessage() {} -func (*Device) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Device) GetHandle() string { - if m != nil { - return m.Handle - } - return "" -} - -func (m *Device) GetProperties() []*Device_Property { - if m != nil { - return m.Properties - } - return nil -} - -// A device property; see `properties` for more information. -type Device_Property struct { - // For general information on keys, see the documentation to `Worker`. - // - // The current set of standard keys are: - // - // * os: a human-readable description of the OS. Examples include `linux`, - // `ubuntu` and `ubuntu 14.04` (note that a bot may advertise itself as more - // than one). This will be replaced in the future by more well-structured - // keys and values to represent OS variants. - // - // * has-docker: "true" if the bot has Docker installed. This will be - // replaced in the future by a more structured message for Docker support. - Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // The property's value. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` -} - -func (m *Device_Property) Reset() { *m = Device_Property{} } -func (m *Device_Property) String() string { return proto.CompactTextString(m) } -func (*Device_Property) ProtoMessage() {} -func (*Device_Property) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } - -func (m *Device_Property) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *Device_Property) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -// AdminTemp is a prelimiary set of administration tasks. It's called "Temp" -// because we do not yet know the best way to represent admin tasks; it's -// possible that this will be entirely replaced in later versions of this API. -// If this message proves to be sufficient, it will be renamed in the alpha or -// beta release of this API. -// -// This message (suitably marshalled into a protobuf.Any) can be used as the -// inline_assignment field in a lease; the lease assignment field should simply -// be `"admin"` in these cases. -// -// This message is heavily based on Swarming administration tasks from the LUCI -// project (http://github.com/luci/luci-py/appengine/swarming). -type AdminTemp struct { - // The admin action; see `Command` for legal values. - Command AdminTemp_Command `protobuf:"varint,1,opt,name=command,enum=google.devtools.remoteworkers.v1test2.AdminTemp_Command" json:"command,omitempty"` - // The argument to the admin action; see `Command` for semantics. - Arg string `protobuf:"bytes,2,opt,name=arg" json:"arg,omitempty"` -} - -func (m *AdminTemp) Reset() { *m = AdminTemp{} } -func (m *AdminTemp) String() string { return proto.CompactTextString(m) } -func (*AdminTemp) ProtoMessage() {} -func (*AdminTemp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *AdminTemp) GetCommand() AdminTemp_Command { - if m != nil { - return m.Command - } - return AdminTemp_UNSPECIFIED -} - -func (m *AdminTemp) GetArg() string { - if m != nil { - return m.Arg - } - return "" -} - -// Request message for CreateBotSession. -type CreateBotSessionRequest struct { - // The farm resource. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The bot session to create. Server-assigned fields like name must be unset. - BotSession *BotSession `protobuf:"bytes,2,opt,name=bot_session,json=botSession" json:"bot_session,omitempty"` -} - -func (m *CreateBotSessionRequest) Reset() { *m = CreateBotSessionRequest{} } -func (m *CreateBotSessionRequest) String() string { return proto.CompactTextString(m) } -func (*CreateBotSessionRequest) ProtoMessage() {} -func (*CreateBotSessionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *CreateBotSessionRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateBotSessionRequest) GetBotSession() *BotSession { - if m != nil { - return m.BotSession - } - return nil -} - -// Request message for UpdateBotSession. -type UpdateBotSessionRequest struct { - // The bot session name. Must match bot_session.name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The bot session resource to update. - BotSession *BotSession `protobuf:"bytes,2,opt,name=bot_session,json=botSession" json:"bot_session,omitempty"` - // The fields on the bot that should be updated. See the BotSession resource - // for which fields are updatable by which caller. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateBotSessionRequest) Reset() { *m = UpdateBotSessionRequest{} } -func (m *UpdateBotSessionRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateBotSessionRequest) ProtoMessage() {} -func (*UpdateBotSessionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *UpdateBotSessionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateBotSessionRequest) GetBotSession() *BotSession { - if m != nil { - return m.BotSession - } - return nil -} - -func (m *UpdateBotSessionRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request message for PostBotEventTemp -type PostBotEventTempRequest struct { - // The bot session name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The type of bot event. - Type PostBotEventTempRequest_Type `protobuf:"varint,2,opt,name=type,enum=google.devtools.remoteworkers.v1test2.PostBotEventTempRequest_Type" json:"type,omitempty"` - // A human-readable message. - Msg string `protobuf:"bytes,3,opt,name=msg" json:"msg,omitempty"` -} - -func (m *PostBotEventTempRequest) Reset() { *m = PostBotEventTempRequest{} } -func (m *PostBotEventTempRequest) String() string { return proto.CompactTextString(m) } -func (*PostBotEventTempRequest) ProtoMessage() {} -func (*PostBotEventTempRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *PostBotEventTempRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *PostBotEventTempRequest) GetType() PostBotEventTempRequest_Type { - if m != nil { - return m.Type - } - return PostBotEventTempRequest_UNSPECIFIED -} - -func (m *PostBotEventTempRequest) GetMsg() string { - if m != nil { - return m.Msg - } - return "" -} - -func init() { - proto.RegisterType((*BotSession)(nil), "google.devtools.remoteworkers.v1test2.BotSession") - proto.RegisterType((*Lease)(nil), "google.devtools.remoteworkers.v1test2.Lease") - proto.RegisterType((*Worker)(nil), "google.devtools.remoteworkers.v1test2.Worker") - proto.RegisterType((*Worker_Property)(nil), "google.devtools.remoteworkers.v1test2.Worker.Property") - proto.RegisterType((*Device)(nil), "google.devtools.remoteworkers.v1test2.Device") - proto.RegisterType((*Device_Property)(nil), "google.devtools.remoteworkers.v1test2.Device.Property") - proto.RegisterType((*AdminTemp)(nil), "google.devtools.remoteworkers.v1test2.AdminTemp") - proto.RegisterType((*CreateBotSessionRequest)(nil), "google.devtools.remoteworkers.v1test2.CreateBotSessionRequest") - proto.RegisterType((*UpdateBotSessionRequest)(nil), "google.devtools.remoteworkers.v1test2.UpdateBotSessionRequest") - proto.RegisterType((*PostBotEventTempRequest)(nil), "google.devtools.remoteworkers.v1test2.PostBotEventTempRequest") - proto.RegisterEnum("google.devtools.remoteworkers.v1test2.BotStatus", BotStatus_name, BotStatus_value) - proto.RegisterEnum("google.devtools.remoteworkers.v1test2.LeaseState", LeaseState_name, LeaseState_value) - proto.RegisterEnum("google.devtools.remoteworkers.v1test2.AdminTemp_Command", AdminTemp_Command_name, AdminTemp_Command_value) - proto.RegisterEnum("google.devtools.remoteworkers.v1test2.PostBotEventTempRequest_Type", PostBotEventTempRequest_Type_name, PostBotEventTempRequest_Type_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Bots service - -type BotsClient interface { - // CreateBotSession is called when the bot first joins the farm, and - // establishes a session ID to ensure that multiple machines do not register - // using the same name accidentally. - CreateBotSession(ctx context.Context, in *CreateBotSessionRequest, opts ...grpc.CallOption) (*BotSession, error) - // UpdateBotSession must be called periodically by the bot (on a schedule - // determined by the server) to let the server know about its status, and to - // pick up new lease requests from the server. - UpdateBotSession(ctx context.Context, in *UpdateBotSessionRequest, opts ...grpc.CallOption) (*BotSession, error) - // PostBotEventTemp may be called by the bot to indicate that some exceptional - // event has occurred. This method is subject to change or removal in future - // revisions of this API; we may simply want to replace it with StackDriver or - // some other common interface. - PostBotEventTemp(ctx context.Context, in *PostBotEventTempRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type botsClient struct { - cc *grpc.ClientConn -} - -func NewBotsClient(cc *grpc.ClientConn) BotsClient { - return &botsClient{cc} -} - -func (c *botsClient) CreateBotSession(ctx context.Context, in *CreateBotSessionRequest, opts ...grpc.CallOption) (*BotSession, error) { - out := new(BotSession) - err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Bots/CreateBotSession", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *botsClient) UpdateBotSession(ctx context.Context, in *UpdateBotSessionRequest, opts ...grpc.CallOption) (*BotSession, error) { - out := new(BotSession) - err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Bots/UpdateBotSession", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *botsClient) PostBotEventTemp(ctx context.Context, in *PostBotEventTempRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Bots/PostBotEventTemp", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Bots service - -type BotsServer interface { - // CreateBotSession is called when the bot first joins the farm, and - // establishes a session ID to ensure that multiple machines do not register - // using the same name accidentally. - CreateBotSession(context.Context, *CreateBotSessionRequest) (*BotSession, error) - // UpdateBotSession must be called periodically by the bot (on a schedule - // determined by the server) to let the server know about its status, and to - // pick up new lease requests from the server. - UpdateBotSession(context.Context, *UpdateBotSessionRequest) (*BotSession, error) - // PostBotEventTemp may be called by the bot to indicate that some exceptional - // event has occurred. This method is subject to change or removal in future - // revisions of this API; we may simply want to replace it with StackDriver or - // some other common interface. - PostBotEventTemp(context.Context, *PostBotEventTempRequest) (*google_protobuf2.Empty, error) -} - -func RegisterBotsServer(s *grpc.Server, srv BotsServer) { - s.RegisterService(&_Bots_serviceDesc, srv) -} - -func _Bots_CreateBotSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateBotSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BotsServer).CreateBotSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteworkers.v1test2.Bots/CreateBotSession", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BotsServer).CreateBotSession(ctx, req.(*CreateBotSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Bots_UpdateBotSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateBotSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BotsServer).UpdateBotSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteworkers.v1test2.Bots/UpdateBotSession", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BotsServer).UpdateBotSession(ctx, req.(*UpdateBotSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Bots_PostBotEventTemp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostBotEventTempRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BotsServer).PostBotEventTemp(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteworkers.v1test2.Bots/PostBotEventTemp", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BotsServer).PostBotEventTemp(ctx, req.(*PostBotEventTempRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Bots_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.remoteworkers.v1test2.Bots", - HandlerType: (*BotsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateBotSession", - Handler: _Bots_CreateBotSession_Handler, - }, - { - MethodName: "UpdateBotSession", - Handler: _Bots_UpdateBotSession_Handler, - }, - { - MethodName: "PostBotEventTemp", - Handler: _Bots_PostBotEventTemp_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/remoteworkers/v1test2/bots.proto", -} - -func init() { proto.RegisterFile("google/devtools/remoteworkers/v1test2/bots.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1083 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x8e, 0xdb, 0x44, - 0x14, 0xc6, 0xd9, 0xc4, 0x69, 0x4e, 0xda, 0xad, 0x3b, 0x94, 0x6e, 0x48, 0x11, 0x44, 0x96, 0x90, - 0x56, 0x51, 0xb1, 0xdb, 0x20, 0x10, 0x6a, 0x55, 0x24, 0x27, 0xf1, 0xee, 0x46, 0x64, 0x93, 0x30, - 0xf1, 0xb6, 0x82, 0x9b, 0xd4, 0xd9, 0x4c, 0x83, 0xb5, 0xb1, 0xc7, 0xf5, 0x4c, 0x02, 0x11, 0xea, - 0x0d, 0x12, 0x4f, 0xc0, 0x13, 0x70, 0xc7, 0x05, 0x8f, 0x80, 0xb8, 0xe4, 0x05, 0x7a, 0xcd, 0x1d, - 0x5c, 0xf3, 0x0a, 0x68, 0xc6, 0x76, 0xfe, 0xb6, 0x4b, 0xb3, 0x14, 0xee, 0xe6, 0xe7, 0x7c, 0xdf, - 0xf9, 0xfc, 0xcd, 0x39, 0xe3, 0x81, 0xbb, 0x63, 0x4a, 0xc7, 0x13, 0x62, 0x8e, 0xc8, 0x8c, 0x53, - 0x3a, 0x61, 0x66, 0x44, 0x7c, 0xca, 0xc9, 0xd7, 0x34, 0x3a, 0x23, 0x11, 0x33, 0x67, 0xf7, 0x38, - 0x61, 0xbc, 0x66, 0x0e, 0x29, 0x67, 0x46, 0x18, 0x51, 0x4e, 0xd1, 0xfb, 0x31, 0xc2, 0x48, 0x11, - 0xc6, 0x1a, 0xc2, 0x48, 0x10, 0xe5, 0x77, 0x12, 0x62, 0x37, 0xf4, 0x4c, 0x37, 0x08, 0x28, 0x77, - 0xb9, 0x47, 0x83, 0x84, 0xa4, 0xfc, 0x76, 0xb2, 0x2b, 0x67, 0xc3, 0xe9, 0x53, 0xd3, 0x0d, 0xe6, - 0xc9, 0xd6, 0xed, 0xcd, 0x2d, 0xe2, 0x87, 0x3c, 0xdd, 0xac, 0x6c, 0x6e, 0x3e, 0xf5, 0xc8, 0x64, - 0x34, 0xf0, 0x5d, 0x76, 0x96, 0x44, 0xbc, 0xb7, 0x19, 0xc1, 0x3d, 0x9f, 0x30, 0xee, 0xfa, 0x61, - 0x12, 0xb0, 0x97, 0x04, 0x44, 0xe1, 0xa9, 0xc9, 0xb8, 0xcb, 0xa7, 0x89, 0x26, 0xfd, 0xcf, 0x0c, - 0x40, 0x9d, 0xf2, 0x3e, 0x61, 0xcc, 0xa3, 0x01, 0x42, 0x90, 0x0d, 0x5c, 0x9f, 0x94, 0x94, 0x8a, - 0xb2, 0x5f, 0xc0, 0x72, 0x8c, 0xde, 0x02, 0x75, 0x48, 0xf9, 0xc0, 0x1b, 0x95, 0x32, 0x72, 0x35, - 0x37, 0xa4, 0xbc, 0x35, 0x42, 0x47, 0xa0, 0xc6, 0x4c, 0xa5, 0x9d, 0x8a, 0xb2, 0xbf, 0x5b, 0xbb, - 0x6b, 0x6c, 0xe5, 0x91, 0x21, 0xb2, 0x49, 0x1c, 0x4e, 0xf0, 0xc8, 0x06, 0x35, 0x0e, 0x2a, 0x65, - 0x2b, 0xca, 0x7e, 0xb1, 0xf6, 0xc1, 0x96, 0x4c, 0x8f, 0xe5, 0x1c, 0x27, 0x60, 0xd4, 0x04, 0x75, - 0x42, 0x5c, 0x46, 0x58, 0x29, 0x57, 0xd9, 0xd9, 0x2f, 0xd6, 0xee, 0x6c, 0x49, 0xd3, 0x16, 0x20, - 0x9c, 0x60, 0xd1, 0x03, 0x28, 0x92, 0x6f, 0x42, 0x2f, 0x22, 0x03, 0xe1, 0x61, 0x49, 0x95, 0x8a, - 0xca, 0x29, 0x55, 0x6a, 0xb0, 0xe1, 0xa4, 0x06, 0x63, 0x88, 0xc3, 0xc5, 0x02, 0x2a, 0x41, 0x7e, - 0x46, 0x22, 0xe1, 0x64, 0x29, 0x2f, 0xbd, 0x4a, 0xa7, 0xfa, 0x5f, 0x19, 0xc8, 0xc9, 0x44, 0xe8, - 0x5d, 0x00, 0x97, 0x31, 0x6f, 0x1c, 0xf8, 0x24, 0xe0, 0x89, 0xd1, 0x2b, 0x2b, 0xe8, 0x10, 0x72, - 0xc2, 0x17, 0x22, 0xdd, 0xde, 0xad, 0xdd, 0xbb, 0xcc, 0x57, 0x08, 0x63, 0x09, 0x8e, 0xf1, 0xa8, - 0xba, 0x76, 0x40, 0xc5, 0x1a, 0x4a, 0x99, 0xa2, 0xf0, 0xd4, 0xd8, 0x38, 0x82, 0xcf, 0xe1, 0x6a, - 0x44, 0x9e, 0x4d, 0xbd, 0x88, 0x08, 0x0d, 0xec, 0xdf, 0x1d, 0xc4, 0x1a, 0xc5, 0xa6, 0x91, 0xb9, - 0x4b, 0x19, 0x69, 0xc1, 0x0d, 0x2f, 0x98, 0x78, 0x01, 0x19, 0xac, 0x78, 0x15, 0x9f, 0xc5, 0xcd, - 0x73, 0x14, 0x56, 0x30, 0xc7, 0x5a, 0x1c, 0x6e, 0x2d, 0xa2, 0xf5, 0xdf, 0x15, 0x50, 0x63, 0x61, - 0xe8, 0x10, 0xf2, 0x23, 0x32, 0xf3, 0x4e, 0x09, 0x2b, 0x29, 0xb2, 0x34, 0xb6, 0xfd, 0xb0, 0xa6, - 0x44, 0xe1, 0x14, 0x8d, 0x1e, 0x01, 0x84, 0x11, 0x0d, 0x49, 0xc4, 0x3d, 0xc2, 0x4a, 0x19, 0xc9, - 0xf5, 0xf1, 0xa5, 0x4c, 0x32, 0x7a, 0x31, 0x7e, 0x8e, 0x57, 0x98, 0xca, 0x35, 0xb8, 0x92, 0xae, - 0x23, 0x0d, 0x76, 0xce, 0xc8, 0x3c, 0x29, 0x0c, 0x31, 0x44, 0x37, 0x21, 0x37, 0x73, 0x27, 0x53, - 0x92, 0xf6, 0x9f, 0x9c, 0xe8, 0x3f, 0x2b, 0xa0, 0xc6, 0xfa, 0xd0, 0x2d, 0x50, 0xbf, 0x72, 0x83, - 0xd1, 0x24, 0xed, 0xdb, 0x64, 0xf6, 0x5a, 0x72, 0x63, 0xea, 0xff, 0x4e, 0xee, 0x0b, 0x05, 0x0a, - 0xd6, 0xc8, 0xf7, 0x02, 0x87, 0xf8, 0x21, 0xc2, 0x90, 0x3f, 0xa5, 0xbe, 0xef, 0x06, 0x23, 0x89, - 0xdc, 0xad, 0x7d, 0xb2, 0xa5, 0xac, 0x05, 0x85, 0xd1, 0x88, 0xf1, 0x38, 0x25, 0x12, 0x4a, 0xdc, - 0x68, 0x9c, 0x64, 0x15, 0x43, 0xfd, 0x09, 0xe4, 0x93, 0x28, 0x74, 0x1d, 0x8a, 0x27, 0x9d, 0x7e, - 0xcf, 0x6e, 0xb4, 0x0e, 0x5a, 0x76, 0x53, 0x7b, 0x03, 0xed, 0x02, 0xd4, 0xbb, 0xce, 0xe0, 0xa4, - 0xd7, 0xb4, 0x1c, 0x5b, 0x53, 0x44, 0x80, 0x98, 0x63, 0xbb, 0xef, 0x58, 0xd8, 0xd1, 0x32, 0xe8, - 0x06, 0x5c, 0x13, 0x0b, 0x8e, 0x8d, 0x8f, 0x5b, 0x1d, 0x11, 0xb3, 0x83, 0x34, 0xb8, 0x7a, 0xd4, - 0xed, 0x2f, 0x83, 0xb2, 0xfa, 0xf7, 0x0a, 0xec, 0x35, 0x22, 0xe2, 0x72, 0xb2, 0xbc, 0x44, 0x31, - 0x79, 0x36, 0x25, 0x8c, 0x8b, 0x53, 0x09, 0xdd, 0x68, 0xd9, 0xe4, 0xc9, 0x0c, 0x61, 0x28, 0x8a, - 0xfb, 0x94, 0xc5, 0xd1, 0x52, 0x6f, 0x71, 0xeb, 0x36, 0x5f, 0x49, 0x03, 0xc3, 0xc5, 0x58, 0xff, - 0x55, 0x81, 0xbd, 0x93, 0x70, 0xf4, 0x52, 0x1d, 0x2f, 0xbb, 0xd3, 0xff, 0x07, 0x0d, 0xa2, 0xe1, - 0xa7, 0x52, 0x82, 0xfc, 0x33, 0x25, 0x97, 0xce, 0xf9, 0x86, 0x3f, 0x10, 0x3f, 0xaf, 0x63, 0x97, - 0x9d, 0x61, 0x88, 0xc3, 0xc5, 0x58, 0xff, 0x4d, 0x81, 0xbd, 0x1e, 0x65, 0xbc, 0x4e, 0xb9, 0x3d, - 0x23, 0x01, 0x17, 0x47, 0xfc, 0x4f, 0x1f, 0xf0, 0x18, 0xb2, 0x7c, 0x1e, 0xa6, 0x97, 0x64, 0x63, - 0x4b, 0xe5, 0x17, 0x64, 0x30, 0x9c, 0x79, 0x48, 0xb0, 0x24, 0x14, 0x55, 0xe4, 0xb3, 0xb1, 0x54, - 0x5f, 0xc0, 0x62, 0xa8, 0xdf, 0x81, 0xac, 0xd8, 0x3f, 0x5f, 0x42, 0x57, 0x20, 0xdb, 0xea, 0x1c, - 0x74, 0x35, 0x05, 0x15, 0x20, 0x67, 0x63, 0xdc, 0xc5, 0x5a, 0xa6, 0x3a, 0x86, 0xc2, 0xe2, 0x0f, - 0x87, 0xca, 0x70, 0x4b, 0xd4, 0x50, 0xdf, 0xb1, 0x9c, 0x93, 0xfe, 0x60, 0x1d, 0xad, 0x42, 0xa6, - 0xfb, 0x99, 0xa6, 0xa0, 0x6b, 0x50, 0x38, 0xe9, 0x1c, 0xd9, 0x56, 0xdb, 0x39, 0xfa, 0x42, 0xcb, - 0x20, 0x04, 0xbb, 0x49, 0x8d, 0xd5, 0xbb, 0x5d, 0xa7, 0xd5, 0x39, 0xd4, 0x76, 0xd0, 0x9b, 0x70, - 0x7d, 0xb5, 0x14, 0xc5, 0x62, 0xb6, 0xfa, 0x04, 0x60, 0x79, 0xe7, 0xa3, 0xdb, 0xb0, 0xd7, 0xb6, - 0xad, 0xbe, 0x2d, 0x73, 0xd9, 0x1b, 0xa9, 0x8a, 0x90, 0xef, 0xd9, 0x9d, 0xa6, 0xc0, 0x29, 0x08, - 0x40, 0xb5, 0x1a, 0x4e, 0xeb, 0x91, 0xad, 0x65, 0x44, 0xee, 0x46, 0xf7, 0xb8, 0xd7, 0xb6, 0x1d, - 0xbb, 0xa9, 0x65, 0xe5, 0xd4, 0xea, 0x34, 0xec, 0x76, 0xdb, 0x6e, 0x6a, 0xb9, 0xda, 0x4f, 0x59, - 0xc8, 0xd6, 0x29, 0x67, 0xe8, 0x17, 0x05, 0xb4, 0xcd, 0x2a, 0x47, 0x9f, 0x6e, 0xe9, 0xf9, 0x05, - 0xed, 0x51, 0xbe, 0x7c, 0xb5, 0xe9, 0x1f, 0x7d, 0xf7, 0xe2, 0x8f, 0x1f, 0x32, 0xa6, 0x5e, 0x59, - 0x3c, 0xd1, 0xbe, 0x8d, 0x7b, 0xea, 0x61, 0xb5, 0xfa, 0xdc, 0x5c, 0x96, 0x22, 0xbb, 0xbf, 0x5a, - 0xdd, 0x52, 0xfe, 0x66, 0x73, 0x6c, 0x2d, 0xff, 0x82, 0xae, 0x7a, 0x0d, 0xf9, 0xb5, 0x15, 0xf9, - 0xa2, 0x96, 0x1f, 0x56, 0xab, 0xab, 0xda, 0xcd, 0xea, 0xf3, 0x75, 0xf9, 0x3f, 0x2a, 0xa0, 0x6d, - 0x16, 0xee, 0xd6, 0xf2, 0x2f, 0xa8, 0xf8, 0xf2, 0xad, 0x73, 0x7d, 0x69, 0x8b, 0x17, 0xe7, 0xc2, - 0xe2, 0xea, 0x2b, 0x35, 0x86, 0x94, 0xc5, 0xb4, 0xf7, 0x95, 0x6a, 0xdd, 0xf9, 0x12, 0x27, 0x7c, - 0x63, 0x3a, 0x71, 0x83, 0xb1, 0x41, 0xa3, 0xb1, 0x39, 0x26, 0x81, 0x64, 0x37, 0xe3, 0x2d, 0x37, - 0xf4, 0xd8, 0x2b, 0x9e, 0xdc, 0x0f, 0xd6, 0x56, 0x87, 0xaa, 0x84, 0x7f, 0xf8, 0x77, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x7c, 0xc5, 0x7e, 0x38, 0xb0, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/command.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/command.pb.go deleted file mode 100644 index f5b50095..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/command.pb.go +++ /dev/null @@ -1,468 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/remoteworkers/v1test2/command.proto - -package remoteworkers - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf5 "github.com/golang/protobuf/ptypes/duration" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Describes a shell-style task to execute. -type CommandTask struct { - // The inputs to the task. - Inputs *CommandTask_Inputs `protobuf:"bytes,1,opt,name=inputs" json:"inputs,omitempty"` - // The expected outputs from the task. - ExpectedOutputs *CommandTask_Outputs `protobuf:"bytes,4,opt,name=expected_outputs,json=expectedOutputs" json:"expected_outputs,omitempty"` - // The timeouts of this task. - Timeouts *CommandTask_Timeouts `protobuf:"bytes,5,opt,name=timeouts" json:"timeouts,omitempty"` -} - -func (m *CommandTask) Reset() { *m = CommandTask{} } -func (m *CommandTask) String() string { return proto.CompactTextString(m) } -func (*CommandTask) ProtoMessage() {} -func (*CommandTask) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *CommandTask) GetInputs() *CommandTask_Inputs { - if m != nil { - return m.Inputs - } - return nil -} - -func (m *CommandTask) GetExpectedOutputs() *CommandTask_Outputs { - if m != nil { - return m.ExpectedOutputs - } - return nil -} - -func (m *CommandTask) GetTimeouts() *CommandTask_Timeouts { - if m != nil { - return m.Timeouts - } - return nil -} - -// Describes the inputs to a shell-style task. -type CommandTask_Inputs struct { - // The command itself to run (e.g., argv) - Arguments []string `protobuf:"bytes,1,rep,name=arguments" json:"arguments,omitempty"` - // The input filesystem to be set up prior to the task beginning. The - // contents should be a repeated set of FileMetadata messages though other - // formats are allowed if better for the implementation (eg, a LUCI-style - // .isolated file). - // - // This field is repeated since implementations might want to cache the - // metadata, in which case it may be useful to break up portions of the - // filesystem that change frequently (eg, specific input files) from those - // that don't (eg, standard header files). - Files []*Digest `protobuf:"bytes,2,rep,name=files" json:"files,omitempty"` - // All environment variables required by the task. - EnvironmentVariables []*CommandTask_Inputs_EnvironmentVariable `protobuf:"bytes,3,rep,name=environment_variables,json=environmentVariables" json:"environment_variables,omitempty"` -} - -func (m *CommandTask_Inputs) Reset() { *m = CommandTask_Inputs{} } -func (m *CommandTask_Inputs) String() string { return proto.CompactTextString(m) } -func (*CommandTask_Inputs) ProtoMessage() {} -func (*CommandTask_Inputs) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -func (m *CommandTask_Inputs) GetArguments() []string { - if m != nil { - return m.Arguments - } - return nil -} - -func (m *CommandTask_Inputs) GetFiles() []*Digest { - if m != nil { - return m.Files - } - return nil -} - -func (m *CommandTask_Inputs) GetEnvironmentVariables() []*CommandTask_Inputs_EnvironmentVariable { - if m != nil { - return m.EnvironmentVariables - } - return nil -} - -// An environment variable required by this task. -type CommandTask_Inputs_EnvironmentVariable struct { - // The envvar name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The envvar value. - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` -} - -func (m *CommandTask_Inputs_EnvironmentVariable) Reset() { - *m = CommandTask_Inputs_EnvironmentVariable{} -} -func (m *CommandTask_Inputs_EnvironmentVariable) String() string { return proto.CompactTextString(m) } -func (*CommandTask_Inputs_EnvironmentVariable) ProtoMessage() {} -func (*CommandTask_Inputs_EnvironmentVariable) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{0, 0, 0} -} - -func (m *CommandTask_Inputs_EnvironmentVariable) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CommandTask_Inputs_EnvironmentVariable) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -// Describes the expected outputs of the command. -type CommandTask_Outputs struct { - // A list of expected files, relative to the execution root. - Files []string `protobuf:"bytes,1,rep,name=files" json:"files,omitempty"` - // A list of expected directories, relative to the execution root. - Directories []string `protobuf:"bytes,2,rep,name=directories" json:"directories,omitempty"` -} - -func (m *CommandTask_Outputs) Reset() { *m = CommandTask_Outputs{} } -func (m *CommandTask_Outputs) String() string { return proto.CompactTextString(m) } -func (*CommandTask_Outputs) ProtoMessage() {} -func (*CommandTask_Outputs) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 1} } - -func (m *CommandTask_Outputs) GetFiles() []string { - if m != nil { - return m.Files - } - return nil -} - -func (m *CommandTask_Outputs) GetDirectories() []string { - if m != nil { - return m.Directories - } - return nil -} - -// Describes the timeouts associated with this task. -type CommandTask_Timeouts struct { - // This specifies the maximum time that the task can run, excluding the - // time required to download inputs or upload outputs. That is, the worker - // will terminate the task if it runs longer than this. - Execution *google_protobuf5.Duration `protobuf:"bytes,1,opt,name=execution" json:"execution,omitempty"` - // This specifies the maximum amount of time the task can be idle - that is, - // go without generating some output in either stdout or stderr. If the - // process is silent for more than the specified time, the worker will - // terminate the task. - Idle *google_protobuf5.Duration `protobuf:"bytes,2,opt,name=idle" json:"idle,omitempty"` - // If the execution or IO timeouts are exceeded, the worker will try to - // gracefully terminate the task and return any existing logs. However, - // tasks may be hard-frozen in which case this process will fail. This - // timeout specifies how long to wait for a terminated task to shut down - // gracefully (e.g. via SIGTERM) before we bring down the hammer (e.g. - // SIGKILL on *nix, CTRL_BREAK_EVENT on Windows). - Shutdown *google_protobuf5.Duration `protobuf:"bytes,3,opt,name=shutdown" json:"shutdown,omitempty"` -} - -func (m *CommandTask_Timeouts) Reset() { *m = CommandTask_Timeouts{} } -func (m *CommandTask_Timeouts) String() string { return proto.CompactTextString(m) } -func (*CommandTask_Timeouts) ProtoMessage() {} -func (*CommandTask_Timeouts) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 2} } - -func (m *CommandTask_Timeouts) GetExecution() *google_protobuf5.Duration { - if m != nil { - return m.Execution - } - return nil -} - -func (m *CommandTask_Timeouts) GetIdle() *google_protobuf5.Duration { - if m != nil { - return m.Idle - } - return nil -} - -func (m *CommandTask_Timeouts) GetShutdown() *google_protobuf5.Duration { - if m != nil { - return m.Shutdown - } - return nil -} - -// Describes the actual outputs from the task. -type CommandOutputs struct { - // exit_code is only fully reliable if the status' code is OK. If the task - // exceeded its deadline or was cancelled, the process may still produce an - // exit code as it is cancelled, and this will be populated, but a successful - // (zero) is unlikely to be correct unless the status code is OK. - ExitCode int32 `protobuf:"varint,1,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"` - // The output files. The blob referenced by the digest should contain - // one of the following (implementation-dependent): - // * A marshalled DirectoryMetadata of the returned filesystem - // * A LUCI-style .isolated file - Outputs *Digest `protobuf:"bytes,2,opt,name=outputs" json:"outputs,omitempty"` -} - -func (m *CommandOutputs) Reset() { *m = CommandOutputs{} } -func (m *CommandOutputs) String() string { return proto.CompactTextString(m) } -func (*CommandOutputs) ProtoMessage() {} -func (*CommandOutputs) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *CommandOutputs) GetExitCode() int32 { - if m != nil { - return m.ExitCode - } - return 0 -} - -func (m *CommandOutputs) GetOutputs() *Digest { - if m != nil { - return m.Outputs - } - return nil -} - -// Can be used as part of CompleteRequest.metadata, or are part of a more -// sophisticated message. -type CommandOverhead struct { - // The elapsed time between calling Accept and Complete. The server will also - // have its own idea of what this should be, but this excludes the overhead of - // the RPCs and the bot response time. - Duration *google_protobuf5.Duration `protobuf:"bytes,1,opt,name=duration" json:"duration,omitempty"` - // The amount of time *not* spent executing the command (ie - // uploading/downloading files). - Overhead *google_protobuf5.Duration `protobuf:"bytes,2,opt,name=overhead" json:"overhead,omitempty"` -} - -func (m *CommandOverhead) Reset() { *m = CommandOverhead{} } -func (m *CommandOverhead) String() string { return proto.CompactTextString(m) } -func (*CommandOverhead) ProtoMessage() {} -func (*CommandOverhead) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *CommandOverhead) GetDuration() *google_protobuf5.Duration { - if m != nil { - return m.Duration - } - return nil -} - -func (m *CommandOverhead) GetOverhead() *google_protobuf5.Duration { - if m != nil { - return m.Overhead - } - return nil -} - -// The metadata for a file. Similar to the equivalent message in the Remote -// Execution API. -type FileMetadata struct { - // The path of this file. If this message is part of the - // CommandResult.output_files fields, the path is relative to the execution - // root and must correspond to an entry in CommandTask.outputs.files. If this - // message is part of a Directory message, then the path is relative to the - // root of that directory. - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` - // A pointer to the contents of the file. The method by which a client - // retrieves the contents from a CAS system is not defined here. - Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"` - // If the file is small enough, its contents may also or alternatively be - // listed here. - Contents []byte `protobuf:"bytes,3,opt,name=contents,proto3" json:"contents,omitempty"` - // Properties of the file - IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable" json:"is_executable,omitempty"` -} - -func (m *FileMetadata) Reset() { *m = FileMetadata{} } -func (m *FileMetadata) String() string { return proto.CompactTextString(m) } -func (*FileMetadata) ProtoMessage() {} -func (*FileMetadata) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *FileMetadata) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *FileMetadata) GetDigest() *Digest { - if m != nil { - return m.Digest - } - return nil -} - -func (m *FileMetadata) GetContents() []byte { - if m != nil { - return m.Contents - } - return nil -} - -func (m *FileMetadata) GetIsExecutable() bool { - if m != nil { - return m.IsExecutable - } - return false -} - -// The metadata for a directory. Similar to the equivalent message in the Remote -// Execution API. -type DirectoryMetadata struct { - // The path of the directory, as in [FileMetadata.path][google.devtools.remoteworkers.v1test2.FileMetadata.path]. - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` - // A pointer to the contents of the directory, in the form of a marshalled - // Directory message. - Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"` -} - -func (m *DirectoryMetadata) Reset() { *m = DirectoryMetadata{} } -func (m *DirectoryMetadata) String() string { return proto.CompactTextString(m) } -func (*DirectoryMetadata) ProtoMessage() {} -func (*DirectoryMetadata) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *DirectoryMetadata) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *DirectoryMetadata) GetDigest() *Digest { - if m != nil { - return m.Digest - } - return nil -} - -// A reference to the contents of a file or a directory. If the latter, the has -// refers to the hash of a marshalled Directory message. Similar to the -// equivalent message in the Remote Execution API. -type Digest struct { - // A string-encoded hash (eg "1a2b3c", not the byte array [0x1a, 0x2b, 0x3c]) - // using an implementation-defined hash algorithm (eg SHA-256). - Hash string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"` - // The size of the contents. While this is not strictly required as part of an - // identifier (after all, any given hash will have exactly one canonical - // size), it's useful in almost all cases when one might want to send or - // retrieve blobs of content and is included here for this reason. - SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes" json:"size_bytes,omitempty"` -} - -func (m *Digest) Reset() { *m = Digest{} } -func (m *Digest) String() string { return proto.CompactTextString(m) } -func (*Digest) ProtoMessage() {} -func (*Digest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *Digest) GetHash() string { - if m != nil { - return m.Hash - } - return "" -} - -func (m *Digest) GetSizeBytes() int64 { - if m != nil { - return m.SizeBytes - } - return 0 -} - -// The contents of a directory. Similar to the equivalent message in the Remote -// Execution API. -type Directory struct { - // The files in this directory - Files []*FileMetadata `protobuf:"bytes,1,rep,name=files" json:"files,omitempty"` - // Any subdirectories - Directories []*DirectoryMetadata `protobuf:"bytes,2,rep,name=directories" json:"directories,omitempty"` -} - -func (m *Directory) Reset() { *m = Directory{} } -func (m *Directory) String() string { return proto.CompactTextString(m) } -func (*Directory) ProtoMessage() {} -func (*Directory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *Directory) GetFiles() []*FileMetadata { - if m != nil { - return m.Files - } - return nil -} - -func (m *Directory) GetDirectories() []*DirectoryMetadata { - if m != nil { - return m.Directories - } - return nil -} - -func init() { - proto.RegisterType((*CommandTask)(nil), "google.devtools.remoteworkers.v1test2.CommandTask") - proto.RegisterType((*CommandTask_Inputs)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Inputs") - proto.RegisterType((*CommandTask_Inputs_EnvironmentVariable)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Inputs.EnvironmentVariable") - proto.RegisterType((*CommandTask_Outputs)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Outputs") - proto.RegisterType((*CommandTask_Timeouts)(nil), "google.devtools.remoteworkers.v1test2.CommandTask.Timeouts") - proto.RegisterType((*CommandOutputs)(nil), "google.devtools.remoteworkers.v1test2.CommandOutputs") - proto.RegisterType((*CommandOverhead)(nil), "google.devtools.remoteworkers.v1test2.CommandOverhead") - proto.RegisterType((*FileMetadata)(nil), "google.devtools.remoteworkers.v1test2.FileMetadata") - proto.RegisterType((*DirectoryMetadata)(nil), "google.devtools.remoteworkers.v1test2.DirectoryMetadata") - proto.RegisterType((*Digest)(nil), "google.devtools.remoteworkers.v1test2.Digest") - proto.RegisterType((*Directory)(nil), "google.devtools.remoteworkers.v1test2.Directory") -} - -func init() { - proto.RegisterFile("google/devtools/remoteworkers/v1test2/command.proto", fileDescriptor1) -} - -var fileDescriptor1 = []byte{ - // 665 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0xcb, 0x6e, 0x13, 0x49, - 0x14, 0x86, 0xe5, 0x38, 0x76, 0xec, 0xe3, 0xcc, 0x64, 0xa6, 0x26, 0x23, 0x19, 0x73, 0x51, 0x64, - 0x84, 0x94, 0x4d, 0xba, 0x85, 0x23, 0xc4, 0x25, 0x0b, 0x44, 0x2e, 0xa0, 0x2c, 0x22, 0x44, 0x29, - 0x02, 0x29, 0x1b, 0xab, 0xec, 0x3e, 0x69, 0x97, 0xd2, 0xee, 0xb2, 0xba, 0xaa, 0x3b, 0x09, 0x1b, - 0x24, 0xde, 0x06, 0x76, 0xf0, 0x0a, 0xbc, 0x18, 0xaa, 0x5b, 0xc7, 0x21, 0x08, 0x1b, 0x2f, 0xd8, - 0x55, 0x9f, 0xd4, 0xff, 0xd5, 0xb9, 0xfc, 0x27, 0x86, 0xed, 0x58, 0x88, 0x38, 0xc1, 0x30, 0xc2, - 0x42, 0x09, 0x91, 0xc8, 0x30, 0xc3, 0xb1, 0x50, 0x78, 0x2e, 0xb2, 0x33, 0xcc, 0x64, 0x58, 0x3c, - 0x54, 0x28, 0x55, 0x2f, 0x1c, 0x8a, 0xf1, 0x98, 0xa5, 0x51, 0x30, 0xc9, 0x84, 0x12, 0xe4, 0x81, - 0x15, 0x05, 0x5e, 0x14, 0x5c, 0x13, 0x05, 0x4e, 0xd4, 0xb9, 0xe7, 0xd8, 0x46, 0x34, 0xc8, 0x4f, - 0xc3, 0x28, 0xcf, 0x98, 0xe2, 0x22, 0xb5, 0x98, 0xee, 0xb7, 0x3a, 0xb4, 0xf6, 0x2c, 0xf8, 0x98, - 0xc9, 0x33, 0xf2, 0x06, 0xea, 0x3c, 0x9d, 0xe4, 0x4a, 0xb6, 0x2b, 0x1b, 0x95, 0xcd, 0x56, 0xef, - 0x69, 0x30, 0xd7, 0x3b, 0xc1, 0x14, 0x23, 0x38, 0x34, 0x00, 0xea, 0x40, 0x04, 0xe1, 0x1f, 0xbc, - 0x98, 0xe0, 0x50, 0x61, 0xd4, 0x17, 0xb9, 0x32, 0xf0, 0x65, 0x03, 0x7f, 0xb6, 0x00, 0xfc, 0xb5, - 0x25, 0xd0, 0x35, 0xcf, 0x74, 0x01, 0xf2, 0x0e, 0x1a, 0x8a, 0x8f, 0x51, 0x68, 0x7c, 0xcd, 0xe0, - 0x77, 0x16, 0xc0, 0x1f, 0x3b, 0x04, 0x2d, 0x61, 0x9d, 0x2f, 0x4b, 0x50, 0xb7, 0x25, 0x91, 0x3b, - 0xd0, 0x64, 0x59, 0x9c, 0x8f, 0x31, 0x35, 0x0d, 0xaa, 0x6e, 0x36, 0xe9, 0x55, 0x80, 0xec, 0x41, - 0xed, 0x94, 0x27, 0x28, 0xdb, 0x4b, 0x1b, 0xd5, 0xcd, 0x56, 0x6f, 0x6b, 0xce, 0xe7, 0xf7, 0x79, - 0x8c, 0x52, 0x51, 0xab, 0x25, 0x1f, 0x2b, 0xf0, 0x3f, 0xa6, 0x05, 0xcf, 0x44, 0xaa, 0xa9, 0xfd, - 0x82, 0x65, 0x9c, 0x0d, 0x34, 0xb5, 0x6a, 0xa8, 0x47, 0x0b, 0x0f, 0x24, 0x38, 0xb8, 0xc2, 0xbe, - 0x75, 0x54, 0xba, 0x8e, 0x37, 0x83, 0xb2, 0xf3, 0x1c, 0xfe, 0xfb, 0xc9, 0x65, 0x42, 0x60, 0x39, - 0x65, 0x63, 0x34, 0xd6, 0x68, 0x52, 0x73, 0x26, 0xeb, 0x50, 0x2b, 0x58, 0x92, 0x63, 0x7b, 0xc9, - 0x04, 0xed, 0x47, 0xe7, 0x05, 0xac, 0xf8, 0xb9, 0xac, 0xfb, 0xae, 0xd8, 0x7e, 0xb9, 0x32, 0x37, - 0xa0, 0x15, 0xf1, 0x0c, 0x87, 0x4a, 0x64, 0xdc, 0x75, 0xac, 0x49, 0xa7, 0x43, 0x9d, 0x4f, 0x15, - 0x68, 0xf8, 0x69, 0x90, 0xc7, 0xd0, 0xc4, 0x0b, 0x1c, 0xe6, 0xda, 0xb9, 0xce, 0x99, 0xb7, 0x7c, - 0x23, 0xbc, 0xb5, 0x83, 0x7d, 0x67, 0x6d, 0x7a, 0x75, 0x97, 0x6c, 0xc1, 0x32, 0x8f, 0x12, 0x9b, - 0xdd, 0x2f, 0x35, 0xe6, 0x1a, 0x79, 0x04, 0x0d, 0x39, 0xca, 0x55, 0x24, 0xce, 0xd3, 0x76, 0x75, - 0x96, 0xa4, 0xbc, 0xda, 0x2d, 0xe0, 0x6f, 0xd7, 0x6f, 0x5f, 0xf5, 0x6d, 0x9d, 0x30, 0x57, 0xfd, - 0xa1, 0x88, 0x6c, 0xbf, 0x6a, 0xb4, 0xa1, 0x03, 0x7b, 0x22, 0x42, 0xf2, 0x0a, 0x56, 0xfc, 0x22, - 0xd8, 0xbc, 0x7e, 0xd3, 0x2a, 0x5e, 0xdd, 0xfd, 0x00, 0x6b, 0xfe, 0xdd, 0x02, 0xb3, 0x11, 0xb2, - 0x48, 0x57, 0xe0, 0x57, 0x7c, 0x76, 0xa3, 0xca, 0xab, 0x5a, 0x26, 0x1c, 0x62, 0x76, 0xaf, 0xca, - 0xab, 0xdd, 0xcf, 0x15, 0x58, 0x7d, 0xc9, 0x13, 0x3c, 0x42, 0xc5, 0x22, 0xa6, 0x98, 0xb6, 0xc8, - 0x84, 0xa9, 0x91, 0xb7, 0x88, 0x3e, 0x93, 0x03, 0xa8, 0x47, 0x26, 0xf1, 0xc5, 0xaa, 0x75, 0x62, - 0xd2, 0x81, 0xc6, 0x50, 0xa4, 0xca, 0xec, 0x9e, 0x9e, 0xcd, 0x2a, 0x2d, 0xbf, 0xc9, 0x7d, 0xf8, - 0x8b, 0xcb, 0xbe, 0x1d, 0xbb, 0xb6, 0xaa, 0xf9, 0x07, 0xd3, 0xa0, 0xab, 0x5c, 0x1e, 0x94, 0xb1, - 0x6e, 0x0a, 0xff, 0xee, 0x3b, 0x83, 0x5d, 0xfe, 0x81, 0x84, 0xbb, 0x3b, 0x50, 0xb7, 0x11, 0xfd, - 0xc8, 0x88, 0xc9, 0xf2, 0x11, 0x7d, 0x26, 0x77, 0x01, 0x24, 0x7f, 0x8f, 0xfd, 0xc1, 0xa5, 0x42, - 0xeb, 0x83, 0x2a, 0x6d, 0xea, 0xc8, 0xae, 0x0e, 0x74, 0xbf, 0x56, 0xa0, 0x59, 0x66, 0x4b, 0x0e, - 0xa7, 0x97, 0xa8, 0xd5, 0xdb, 0x9e, 0x33, 0xa1, 0xe9, 0xd1, 0xf8, 0xcd, 0x3b, 0xb9, 0xb9, 0x79, - 0xad, 0xde, 0x93, 0xb9, 0x2b, 0xfc, 0xa1, 0x7f, 0xd7, 0x76, 0x76, 0xf7, 0xf8, 0x84, 0x3a, 0x4e, - 0x2c, 0x12, 0x96, 0xc6, 0x81, 0xc8, 0xe2, 0x30, 0xc6, 0xd4, 0x58, 0x28, 0xb4, 0x7f, 0x62, 0x13, - 0x2e, 0x67, 0xfc, 0xd4, 0xed, 0x5c, 0x8b, 0x0e, 0xea, 0x46, 0xbe, 0xfd, 0x3d, 0x00, 0x00, 0xff, - 0xff, 0x1c, 0x77, 0x2c, 0xa3, 0x28, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/tasks.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/tasks.pb.go deleted file mode 100644 index 03136656..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2/tasks.pb.go +++ /dev/null @@ -1,456 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/remoteworkers/v1test2/tasks.proto - -package remoteworkers - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A Task represents a unit of work. Its result and logs are defined as -// subresources. -// -// If all the `Any` fields are populated, this can be a very large message, and -// clients may not want the entire message returned on every call to every -// method. Such clients should request partial responses -// (https://cloud.google.com/apis/design/design_patterns#partial_response) and -// servers should implement partial responses in order to reduce unnecessry -// overhead. -type Task struct { - // The name of this task. Output only. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The actual task to perform. For example, this could be CommandTask to run a - // command line. - Description *google_protobuf1.Any `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Handles to logs. The key is a human-readable name like `stdout`, and the - // handle is a resource name that can be passed to ByteStream or other - // accessors. - // - // An implementation may define some logs by default (like `stdout`), and may - // allow clients to add new logs via AddTaskLog. - Logs map[string]string `protobuf:"bytes,3,rep,name=logs" json:"logs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Task) Reset() { *m = Task{} } -func (m *Task) String() string { return proto.CompactTextString(m) } -func (*Task) ProtoMessage() {} -func (*Task) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *Task) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Task) GetDescription() *google_protobuf1.Any { - if m != nil { - return m.Description - } - return nil -} - -func (m *Task) GetLogs() map[string]string { - if m != nil { - return m.Logs - } - return nil -} - -// The result and metadata of the task. -type TaskResult struct { - // The name of the task result; must be a name of a `Task` followed by - // `/result`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The result may be updated several times; the client must only set - // `complete` to true to indicate that no further updates are allowed. - // If this is not true, the `status` field must not be examined since its zero - // value is equivalent to `OK`. - // - // Once a task is completed, it must not be updated with further results, - // though the implementation may choose to continue to receive logs. - Complete bool `protobuf:"varint,2,opt,name=complete" json:"complete,omitempty"` - // The final status of the task itself. For example, if task.description - // included a timeout which was violated, status.code may be - // DEADLINE_EXCEEDED. This field can only be read if `complete` is true. - Status *google_rpc.Status `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"` - // Any non-log output, such as output files and exit codes. See - // CommandResult as an example. - Output *google_protobuf1.Any `protobuf:"bytes,4,opt,name=output" json:"output,omitempty"` - // Any information about how the command was executed, eg runtime. See - // CommandOverhead as an example. - Meta *google_protobuf1.Any `protobuf:"bytes,5,opt,name=meta" json:"meta,omitempty"` -} - -func (m *TaskResult) Reset() { *m = TaskResult{} } -func (m *TaskResult) String() string { return proto.CompactTextString(m) } -func (*TaskResult) ProtoMessage() {} -func (*TaskResult) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *TaskResult) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *TaskResult) GetComplete() bool { - if m != nil { - return m.Complete - } - return false -} - -func (m *TaskResult) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func (m *TaskResult) GetOutput() *google_protobuf1.Any { - if m != nil { - return m.Output - } - return nil -} - -func (m *TaskResult) GetMeta() *google_protobuf1.Any { - if m != nil { - return m.Meta - } - return nil -} - -// Request message for `GetTask`. -type GetTaskRequest struct { - // The task name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetTaskRequest) Reset() { *m = GetTaskRequest{} } -func (m *GetTaskRequest) String() string { return proto.CompactTextString(m) } -func (*GetTaskRequest) ProtoMessage() {} -func (*GetTaskRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *GetTaskRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for `UpdateTaskResult`. -type UpdateTaskResultRequest struct { - // The task result name; must match `result.name`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The result being updated. - Result *TaskResult `protobuf:"bytes,2,opt,name=result" json:"result,omitempty"` - // The fields within `result` that are specified. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` - // If this is being updated by a bot from BotManager, the source should be - // bot.session_id. That way, if two bots accidentally get the same name, we'll - // know to reject updates from the older one. - Source string `protobuf:"bytes,4,opt,name=source" json:"source,omitempty"` -} - -func (m *UpdateTaskResultRequest) Reset() { *m = UpdateTaskResultRequest{} } -func (m *UpdateTaskResultRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateTaskResultRequest) ProtoMessage() {} -func (*UpdateTaskResultRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *UpdateTaskResultRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateTaskResultRequest) GetResult() *TaskResult { - if m != nil { - return m.Result - } - return nil -} - -func (m *UpdateTaskResultRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func (m *UpdateTaskResultRequest) GetSource() string { - if m != nil { - return m.Source - } - return "" -} - -// Request message for `AddTaskLog`. -type AddTaskLogRequest struct { - // The name of the task that will own the new log. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The human-readable name of the log, like `stdout` or a relative file path. - LogId string `protobuf:"bytes,2,opt,name=log_id,json=logId" json:"log_id,omitempty"` -} - -func (m *AddTaskLogRequest) Reset() { *m = AddTaskLogRequest{} } -func (m *AddTaskLogRequest) String() string { return proto.CompactTextString(m) } -func (*AddTaskLogRequest) ProtoMessage() {} -func (*AddTaskLogRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *AddTaskLogRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *AddTaskLogRequest) GetLogId() string { - if m != nil { - return m.LogId - } - return "" -} - -// Response message for `AddTaskLog`. -type AddTaskLogResponse struct { - // The handle for the new log, as would be returned in Task.logs. - Handle string `protobuf:"bytes,1,opt,name=handle" json:"handle,omitempty"` -} - -func (m *AddTaskLogResponse) Reset() { *m = AddTaskLogResponse{} } -func (m *AddTaskLogResponse) String() string { return proto.CompactTextString(m) } -func (*AddTaskLogResponse) ProtoMessage() {} -func (*AddTaskLogResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *AddTaskLogResponse) GetHandle() string { - if m != nil { - return m.Handle - } - return "" -} - -func init() { - proto.RegisterType((*Task)(nil), "google.devtools.remoteworkers.v1test2.Task") - proto.RegisterType((*TaskResult)(nil), "google.devtools.remoteworkers.v1test2.TaskResult") - proto.RegisterType((*GetTaskRequest)(nil), "google.devtools.remoteworkers.v1test2.GetTaskRequest") - proto.RegisterType((*UpdateTaskResultRequest)(nil), "google.devtools.remoteworkers.v1test2.UpdateTaskResultRequest") - proto.RegisterType((*AddTaskLogRequest)(nil), "google.devtools.remoteworkers.v1test2.AddTaskLogRequest") - proto.RegisterType((*AddTaskLogResponse)(nil), "google.devtools.remoteworkers.v1test2.AddTaskLogResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Tasks service - -type TasksClient interface { - // GetTask reads the current state of the task. Tasks must be created through - // some other interface, and should be immutable once created and exposed to - // the bots. - GetTask(ctx context.Context, in *GetTaskRequest, opts ...grpc.CallOption) (*Task, error) - // UpdateTaskResult updates the result. - UpdateTaskResult(ctx context.Context, in *UpdateTaskResultRequest, opts ...grpc.CallOption) (*TaskResult, error) - // AddTaskLog creates a new streaming log. The log is streamed and marked as - // completed through other interfaces (i.e., ByteStream). This can be called - // by the bot if it wants to create a new log; the server can also predefine - // logs that do not need to be created (e.g. `stdout`). - AddTaskLog(ctx context.Context, in *AddTaskLogRequest, opts ...grpc.CallOption) (*AddTaskLogResponse, error) -} - -type tasksClient struct { - cc *grpc.ClientConn -} - -func NewTasksClient(cc *grpc.ClientConn) TasksClient { - return &tasksClient{cc} -} - -func (c *tasksClient) GetTask(ctx context.Context, in *GetTaskRequest, opts ...grpc.CallOption) (*Task, error) { - out := new(Task) - err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Tasks/GetTask", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tasksClient) UpdateTaskResult(ctx context.Context, in *UpdateTaskResultRequest, opts ...grpc.CallOption) (*TaskResult, error) { - out := new(TaskResult) - err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Tasks/UpdateTaskResult", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *tasksClient) AddTaskLog(ctx context.Context, in *AddTaskLogRequest, opts ...grpc.CallOption) (*AddTaskLogResponse, error) { - out := new(AddTaskLogResponse) - err := grpc.Invoke(ctx, "/google.devtools.remoteworkers.v1test2.Tasks/AddTaskLog", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Tasks service - -type TasksServer interface { - // GetTask reads the current state of the task. Tasks must be created through - // some other interface, and should be immutable once created and exposed to - // the bots. - GetTask(context.Context, *GetTaskRequest) (*Task, error) - // UpdateTaskResult updates the result. - UpdateTaskResult(context.Context, *UpdateTaskResultRequest) (*TaskResult, error) - // AddTaskLog creates a new streaming log. The log is streamed and marked as - // completed through other interfaces (i.e., ByteStream). This can be called - // by the bot if it wants to create a new log; the server can also predefine - // logs that do not need to be created (e.g. `stdout`). - AddTaskLog(context.Context, *AddTaskLogRequest) (*AddTaskLogResponse, error) -} - -func RegisterTasksServer(s *grpc.Server, srv TasksServer) { - s.RegisterService(&_Tasks_serviceDesc, srv) -} - -func _Tasks_GetTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTaskRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TasksServer).GetTask(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteworkers.v1test2.Tasks/GetTask", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TasksServer).GetTask(ctx, req.(*GetTaskRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Tasks_UpdateTaskResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateTaskResultRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TasksServer).UpdateTaskResult(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteworkers.v1test2.Tasks/UpdateTaskResult", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TasksServer).UpdateTaskResult(ctx, req.(*UpdateTaskResultRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Tasks_AddTaskLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AddTaskLogRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TasksServer).AddTaskLog(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.remoteworkers.v1test2.Tasks/AddTaskLog", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TasksServer).AddTaskLog(ctx, req.(*AddTaskLogRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Tasks_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.remoteworkers.v1test2.Tasks", - HandlerType: (*TasksServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetTask", - Handler: _Tasks_GetTask_Handler, - }, - { - MethodName: "UpdateTaskResult", - Handler: _Tasks_UpdateTaskResult_Handler, - }, - { - MethodName: "AddTaskLog", - Handler: _Tasks_AddTaskLog_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/remoteworkers/v1test2/tasks.proto", -} - -func init() { proto.RegisterFile("google/devtools/remoteworkers/v1test2/tasks.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 634 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xc1, 0x6e, 0xd3, 0x40, - 0x10, 0x95, 0x13, 0xc7, 0x34, 0x13, 0x09, 0x95, 0x55, 0xa1, 0xc6, 0xea, 0x21, 0x58, 0x80, 0xa2, - 0x34, 0xb2, 0x95, 0x20, 0xa0, 0xa4, 0xa2, 0x52, 0x91, 0x00, 0x45, 0x0a, 0x17, 0x53, 0x2e, 0x5c, - 0xaa, 0x6d, 0xbc, 0x5d, 0xac, 0x38, 0x5e, 0xe3, 0x5d, 0x07, 0x45, 0x28, 0x17, 0x4e, 0x5c, 0x11, - 0x1f, 0xc2, 0x95, 0x23, 0x3f, 0xc0, 0x09, 0x89, 0x2f, 0xe0, 0x43, 0x90, 0xd7, 0xeb, 0xb4, 0x69, - 0x9b, 0x90, 0x70, 0xf3, 0x78, 0xde, 0x9b, 0x99, 0x37, 0x6f, 0xb4, 0xd0, 0xa6, 0x8c, 0xd1, 0x90, - 0xb8, 0x3e, 0x19, 0x0b, 0xc6, 0x42, 0xee, 0x26, 0x64, 0xc4, 0x04, 0xf9, 0xc0, 0x92, 0x21, 0x49, - 0xb8, 0x3b, 0x6e, 0x0b, 0xc2, 0x45, 0xc7, 0x15, 0x98, 0x0f, 0xb9, 0x13, 0x27, 0x4c, 0x30, 0x74, - 0x2f, 0xa7, 0x38, 0x05, 0xc5, 0x99, 0xa3, 0x38, 0x8a, 0x62, 0xed, 0xa8, 0xca, 0x38, 0x0e, 0x5c, - 0x1c, 0x45, 0x4c, 0x60, 0x11, 0xb0, 0x48, 0x15, 0xb1, 0x6e, 0xab, 0xac, 0x8c, 0x4e, 0xd2, 0x53, - 0x17, 0x47, 0x13, 0x95, 0xaa, 0x5f, 0x4c, 0x9d, 0x06, 0x24, 0xf4, 0x8f, 0x47, 0x98, 0x0f, 0x15, - 0x62, 0x5b, 0x21, 0x92, 0x78, 0xe0, 0x72, 0x81, 0x45, 0xaa, 0xaa, 0xda, 0xbf, 0x35, 0xd0, 0x8f, - 0x30, 0x1f, 0x22, 0x04, 0x7a, 0x84, 0x47, 0xc4, 0xd4, 0xea, 0x5a, 0xa3, 0xea, 0xc9, 0x6f, 0xf4, - 0x08, 0x6a, 0x3e, 0xe1, 0x83, 0x24, 0x88, 0xb3, 0x41, 0xcc, 0x52, 0x5d, 0x6b, 0xd4, 0x3a, 0x5b, - 0x8e, 0x52, 0x53, 0x74, 0x73, 0x0e, 0xa3, 0x89, 0x77, 0x1e, 0x88, 0x7a, 0xa0, 0x87, 0x8c, 0x72, - 0xb3, 0x5c, 0x2f, 0x37, 0x6a, 0x9d, 0x87, 0xce, 0x4a, 0xf2, 0x9d, 0x6c, 0x0c, 0xa7, 0xcf, 0x28, - 0x7f, 0x1e, 0x89, 0x64, 0xe2, 0xc9, 0x12, 0xd6, 0x63, 0xa8, 0xce, 0x7e, 0xa1, 0x4d, 0x28, 0x0f, - 0xc9, 0x44, 0x8d, 0x98, 0x7d, 0xa2, 0x2d, 0xa8, 0x8c, 0x71, 0x98, 0x12, 0x39, 0x5b, 0xd5, 0xcb, - 0x83, 0x6e, 0x69, 0x4f, 0xb3, 0x7f, 0x68, 0x00, 0x59, 0x45, 0x8f, 0xf0, 0x34, 0x14, 0x57, 0xca, - 0xb3, 0x60, 0x63, 0xc0, 0x46, 0x71, 0x48, 0x44, 0xce, 0xdf, 0xf0, 0x66, 0x31, 0x6a, 0x82, 0x91, - 0xef, 0xc9, 0x2c, 0x4b, 0xd5, 0xa8, 0x10, 0x91, 0xc4, 0x03, 0xe7, 0xb5, 0xcc, 0x78, 0x0a, 0x81, - 0x5a, 0x60, 0xb0, 0x54, 0xc4, 0xa9, 0x30, 0xf5, 0x25, 0x1b, 0x52, 0x18, 0xd4, 0x00, 0x7d, 0x44, - 0x04, 0x36, 0x2b, 0x4b, 0xb0, 0x12, 0x61, 0xdf, 0x85, 0xeb, 0x2f, 0x89, 0xc8, 0x45, 0xbc, 0x4f, - 0x09, 0xbf, 0x52, 0x85, 0xfd, 0x53, 0x83, 0xed, 0x37, 0xb1, 0x8f, 0x05, 0x39, 0x93, 0xbb, 0x04, - 0x8f, 0x7a, 0x60, 0x24, 0x12, 0xa4, 0xfc, 0x6c, 0xaf, 0x61, 0x8f, 0xaa, 0xae, 0x0a, 0xa0, 0x7d, - 0xa8, 0xa5, 0xb2, 0xb3, 0x3c, 0x35, 0xb5, 0x29, 0xeb, 0x92, 0xa2, 0x17, 0xd9, 0x35, 0xbe, 0xca, - 0xe8, 0x90, 0xc3, 0xb3, 0x6f, 0x74, 0x0b, 0x0c, 0xce, 0xd2, 0x64, 0x40, 0xe4, 0xd6, 0xaa, 0x9e, - 0x8a, 0xec, 0x03, 0xb8, 0x71, 0xe8, 0xfb, 0x59, 0xb7, 0x3e, 0xa3, 0xcb, 0x84, 0xdc, 0x04, 0x23, - 0x64, 0xf4, 0x38, 0xf0, 0x0b, 0xf3, 0x43, 0x46, 0x7b, 0xbe, 0xdd, 0x02, 0x74, 0x9e, 0xcf, 0x63, - 0x16, 0x71, 0x92, 0x75, 0x7b, 0x87, 0x23, 0x3f, 0x2c, 0x4a, 0xa8, 0xa8, 0xf3, 0x59, 0x87, 0x4a, - 0x86, 0xe5, 0xe8, 0x8b, 0x06, 0xd7, 0xd4, 0xba, 0xd1, 0xaa, 0x27, 0x3b, 0x6f, 0x8f, 0xb5, 0xbb, - 0xc6, 0x2a, 0x6d, 0xfb, 0xd3, 0xaf, 0x3f, 0x5f, 0x4b, 0x3b, 0xc8, 0x9a, 0x3d, 0x19, 0x1f, 0x33, - 0x59, 0x4f, 0x9b, 0xcd, 0xfc, 0xed, 0x70, 0x9b, 0x53, 0xf4, 0x5d, 0x83, 0xcd, 0x8b, 0xde, 0xa2, - 0x83, 0x15, 0xbb, 0x2c, 0x38, 0x0a, 0x6b, 0x7d, 0xc3, 0xed, 0xb6, 0x9c, 0x75, 0xb7, 0x73, 0x67, - 0xe1, 0xac, 0x6e, 0x7e, 0x12, 0xd3, 0x6e, 0x71, 0x1b, 0xdf, 0x34, 0x80, 0x33, 0x1f, 0xd0, 0xde, - 0x8a, 0x4d, 0x2f, 0x59, 0x6f, 0x3d, 0xf9, 0x0f, 0x66, 0x6e, 0xba, 0xdd, 0x92, 0x63, 0xdf, 0xb7, - 0x17, 0x8f, 0x3d, 0xed, 0x62, 0xdf, 0xef, 0x33, 0xda, 0xd5, 0x9a, 0xcf, 0x8e, 0xde, 0x7a, 0xaa, - 0x13, 0x65, 0x21, 0x8e, 0xa8, 0xc3, 0x12, 0xea, 0x52, 0x12, 0xc9, 0x3b, 0x76, 0xf3, 0x14, 0x8e, - 0x03, 0xfe, 0x8f, 0x97, 0x7f, 0x7f, 0xee, 0xef, 0x89, 0x21, 0xe9, 0x0f, 0xfe, 0x06, 0x00, 0x00, - 0xff, 0xff, 0xb8, 0x8f, 0xed, 0xe0, 0x37, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/source/v1/source_context.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/source/v1/source_context.pb.go deleted file mode 100644 index 81829f62..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/source/v1/source_context.pb.go +++ /dev/null @@ -1,946 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/source/v1/source_context.proto - -/* -Package source is a generated protocol buffer package. - -It is generated from these files: - google/devtools/source/v1/source_context.proto - -It has these top-level messages: - SourceContext - ExtendedSourceContext - AliasContext - CloudRepoSourceContext - CloudWorkspaceSourceContext - GerritSourceContext - GitSourceContext - RepoId - ProjectRepoId - CloudWorkspaceId -*/ -package source - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The type of an Alias. -type AliasContext_Kind int32 - -const ( - // Do not use. - AliasContext_ANY AliasContext_Kind = 0 - // Git tag - AliasContext_FIXED AliasContext_Kind = 1 - // Git branch - AliasContext_MOVABLE AliasContext_Kind = 2 - // OTHER is used to specify non-standard aliases, those not of the kinds - // above. For example, if a Git repo has a ref named "refs/foo/bar", it - // is considered to be of kind OTHER. - AliasContext_OTHER AliasContext_Kind = 4 -) - -var AliasContext_Kind_name = map[int32]string{ - 0: "ANY", - 1: "FIXED", - 2: "MOVABLE", - 4: "OTHER", -} -var AliasContext_Kind_value = map[string]int32{ - "ANY": 0, - "FIXED": 1, - "MOVABLE": 2, - "OTHER": 4, -} - -func (x AliasContext_Kind) String() string { - return proto.EnumName(AliasContext_Kind_name, int32(x)) -} -func (AliasContext_Kind) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// A SourceContext is a reference to a tree of files. A SourceContext together -// with a path point to a unique revision of a single file or directory. -type SourceContext struct { - // A SourceContext can refer any one of the following types of repositories. - // - // Types that are valid to be assigned to Context: - // *SourceContext_CloudRepo - // *SourceContext_CloudWorkspace - // *SourceContext_Gerrit - // *SourceContext_Git - Context isSourceContext_Context `protobuf_oneof:"context"` -} - -func (m *SourceContext) Reset() { *m = SourceContext{} } -func (m *SourceContext) String() string { return proto.CompactTextString(m) } -func (*SourceContext) ProtoMessage() {} -func (*SourceContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isSourceContext_Context interface { - isSourceContext_Context() -} - -type SourceContext_CloudRepo struct { - CloudRepo *CloudRepoSourceContext `protobuf:"bytes,1,opt,name=cloud_repo,json=cloudRepo,oneof"` -} -type SourceContext_CloudWorkspace struct { - CloudWorkspace *CloudWorkspaceSourceContext `protobuf:"bytes,2,opt,name=cloud_workspace,json=cloudWorkspace,oneof"` -} -type SourceContext_Gerrit struct { - Gerrit *GerritSourceContext `protobuf:"bytes,3,opt,name=gerrit,oneof"` -} -type SourceContext_Git struct { - Git *GitSourceContext `protobuf:"bytes,6,opt,name=git,oneof"` -} - -func (*SourceContext_CloudRepo) isSourceContext_Context() {} -func (*SourceContext_CloudWorkspace) isSourceContext_Context() {} -func (*SourceContext_Gerrit) isSourceContext_Context() {} -func (*SourceContext_Git) isSourceContext_Context() {} - -func (m *SourceContext) GetContext() isSourceContext_Context { - if m != nil { - return m.Context - } - return nil -} - -func (m *SourceContext) GetCloudRepo() *CloudRepoSourceContext { - if x, ok := m.GetContext().(*SourceContext_CloudRepo); ok { - return x.CloudRepo - } - return nil -} - -func (m *SourceContext) GetCloudWorkspace() *CloudWorkspaceSourceContext { - if x, ok := m.GetContext().(*SourceContext_CloudWorkspace); ok { - return x.CloudWorkspace - } - return nil -} - -func (m *SourceContext) GetGerrit() *GerritSourceContext { - if x, ok := m.GetContext().(*SourceContext_Gerrit); ok { - return x.Gerrit - } - return nil -} - -func (m *SourceContext) GetGit() *GitSourceContext { - if x, ok := m.GetContext().(*SourceContext_Git); ok { - return x.Git - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SourceContext) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SourceContext_OneofMarshaler, _SourceContext_OneofUnmarshaler, _SourceContext_OneofSizer, []interface{}{ - (*SourceContext_CloudRepo)(nil), - (*SourceContext_CloudWorkspace)(nil), - (*SourceContext_Gerrit)(nil), - (*SourceContext_Git)(nil), - } -} - -func _SourceContext_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SourceContext) - // context - switch x := m.Context.(type) { - case *SourceContext_CloudRepo: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CloudRepo); err != nil { - return err - } - case *SourceContext_CloudWorkspace: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CloudWorkspace); err != nil { - return err - } - case *SourceContext_Gerrit: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Gerrit); err != nil { - return err - } - case *SourceContext_Git: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Git); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("SourceContext.Context has unexpected type %T", x) - } - return nil -} - -func _SourceContext_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SourceContext) - switch tag { - case 1: // context.cloud_repo - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CloudRepoSourceContext) - err := b.DecodeMessage(msg) - m.Context = &SourceContext_CloudRepo{msg} - return true, err - case 2: // context.cloud_workspace - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CloudWorkspaceSourceContext) - err := b.DecodeMessage(msg) - m.Context = &SourceContext_CloudWorkspace{msg} - return true, err - case 3: // context.gerrit - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GerritSourceContext) - err := b.DecodeMessage(msg) - m.Context = &SourceContext_Gerrit{msg} - return true, err - case 6: // context.git - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GitSourceContext) - err := b.DecodeMessage(msg) - m.Context = &SourceContext_Git{msg} - return true, err - default: - return false, nil - } -} - -func _SourceContext_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SourceContext) - // context - switch x := m.Context.(type) { - case *SourceContext_CloudRepo: - s := proto.Size(x.CloudRepo) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *SourceContext_CloudWorkspace: - s := proto.Size(x.CloudWorkspace) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *SourceContext_Gerrit: - s := proto.Size(x.Gerrit) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *SourceContext_Git: - s := proto.Size(x.Git) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// An ExtendedSourceContext is a SourceContext combined with additional -// details describing the context. -type ExtendedSourceContext struct { - // Any source context. - Context *SourceContext `protobuf:"bytes,1,opt,name=context" json:"context,omitempty"` - // Labels with user defined metadata. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *ExtendedSourceContext) Reset() { *m = ExtendedSourceContext{} } -func (m *ExtendedSourceContext) String() string { return proto.CompactTextString(m) } -func (*ExtendedSourceContext) ProtoMessage() {} -func (*ExtendedSourceContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ExtendedSourceContext) GetContext() *SourceContext { - if m != nil { - return m.Context - } - return nil -} - -func (m *ExtendedSourceContext) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// An alias to a repo revision. -type AliasContext struct { - // The alias kind. - Kind AliasContext_Kind `protobuf:"varint,1,opt,name=kind,enum=google.devtools.source.v1.AliasContext_Kind" json:"kind,omitempty"` - // The alias name. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *AliasContext) Reset() { *m = AliasContext{} } -func (m *AliasContext) String() string { return proto.CompactTextString(m) } -func (*AliasContext) ProtoMessage() {} -func (*AliasContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *AliasContext) GetKind() AliasContext_Kind { - if m != nil { - return m.Kind - } - return AliasContext_ANY -} - -func (m *AliasContext) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A CloudRepoSourceContext denotes a particular revision in a cloud -// repo (a repo hosted by the Google Cloud Platform). -type CloudRepoSourceContext struct { - // The ID of the repo. - RepoId *RepoId `protobuf:"bytes,1,opt,name=repo_id,json=repoId" json:"repo_id,omitempty"` - // A revision in a cloud repository can be identified by either its revision - // ID or its Alias. - // - // Types that are valid to be assigned to Revision: - // *CloudRepoSourceContext_RevisionId - // *CloudRepoSourceContext_AliasName - // *CloudRepoSourceContext_AliasContext - Revision isCloudRepoSourceContext_Revision `protobuf_oneof:"revision"` -} - -func (m *CloudRepoSourceContext) Reset() { *m = CloudRepoSourceContext{} } -func (m *CloudRepoSourceContext) String() string { return proto.CompactTextString(m) } -func (*CloudRepoSourceContext) ProtoMessage() {} -func (*CloudRepoSourceContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -type isCloudRepoSourceContext_Revision interface { - isCloudRepoSourceContext_Revision() -} - -type CloudRepoSourceContext_RevisionId struct { - RevisionId string `protobuf:"bytes,2,opt,name=revision_id,json=revisionId,oneof"` -} -type CloudRepoSourceContext_AliasName struct { - AliasName string `protobuf:"bytes,3,opt,name=alias_name,json=aliasName,oneof"` -} -type CloudRepoSourceContext_AliasContext struct { - AliasContext *AliasContext `protobuf:"bytes,4,opt,name=alias_context,json=aliasContext,oneof"` -} - -func (*CloudRepoSourceContext_RevisionId) isCloudRepoSourceContext_Revision() {} -func (*CloudRepoSourceContext_AliasName) isCloudRepoSourceContext_Revision() {} -func (*CloudRepoSourceContext_AliasContext) isCloudRepoSourceContext_Revision() {} - -func (m *CloudRepoSourceContext) GetRevision() isCloudRepoSourceContext_Revision { - if m != nil { - return m.Revision - } - return nil -} - -func (m *CloudRepoSourceContext) GetRepoId() *RepoId { - if m != nil { - return m.RepoId - } - return nil -} - -func (m *CloudRepoSourceContext) GetRevisionId() string { - if x, ok := m.GetRevision().(*CloudRepoSourceContext_RevisionId); ok { - return x.RevisionId - } - return "" -} - -func (m *CloudRepoSourceContext) GetAliasName() string { - if x, ok := m.GetRevision().(*CloudRepoSourceContext_AliasName); ok { - return x.AliasName - } - return "" -} - -func (m *CloudRepoSourceContext) GetAliasContext() *AliasContext { - if x, ok := m.GetRevision().(*CloudRepoSourceContext_AliasContext); ok { - return x.AliasContext - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CloudRepoSourceContext) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CloudRepoSourceContext_OneofMarshaler, _CloudRepoSourceContext_OneofUnmarshaler, _CloudRepoSourceContext_OneofSizer, []interface{}{ - (*CloudRepoSourceContext_RevisionId)(nil), - (*CloudRepoSourceContext_AliasName)(nil), - (*CloudRepoSourceContext_AliasContext)(nil), - } -} - -func _CloudRepoSourceContext_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CloudRepoSourceContext) - // revision - switch x := m.Revision.(type) { - case *CloudRepoSourceContext_RevisionId: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.RevisionId) - case *CloudRepoSourceContext_AliasName: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.AliasName) - case *CloudRepoSourceContext_AliasContext: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AliasContext); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CloudRepoSourceContext.Revision has unexpected type %T", x) - } - return nil -} - -func _CloudRepoSourceContext_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CloudRepoSourceContext) - switch tag { - case 2: // revision.revision_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &CloudRepoSourceContext_RevisionId{x} - return true, err - case 3: // revision.alias_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &CloudRepoSourceContext_AliasName{x} - return true, err - case 4: // revision.alias_context - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AliasContext) - err := b.DecodeMessage(msg) - m.Revision = &CloudRepoSourceContext_AliasContext{msg} - return true, err - default: - return false, nil - } -} - -func _CloudRepoSourceContext_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CloudRepoSourceContext) - // revision - switch x := m.Revision.(type) { - case *CloudRepoSourceContext_RevisionId: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RevisionId))) - n += len(x.RevisionId) - case *CloudRepoSourceContext_AliasName: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AliasName))) - n += len(x.AliasName) - case *CloudRepoSourceContext_AliasContext: - s := proto.Size(x.AliasContext) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. -type CloudWorkspaceSourceContext struct { - // The ID of the workspace. - WorkspaceId *CloudWorkspaceId `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId" json:"workspace_id,omitempty"` - // The ID of the snapshot. - // An empty snapshot_id refers to the most recent snapshot. - SnapshotId string `protobuf:"bytes,2,opt,name=snapshot_id,json=snapshotId" json:"snapshot_id,omitempty"` -} - -func (m *CloudWorkspaceSourceContext) Reset() { *m = CloudWorkspaceSourceContext{} } -func (m *CloudWorkspaceSourceContext) String() string { return proto.CompactTextString(m) } -func (*CloudWorkspaceSourceContext) ProtoMessage() {} -func (*CloudWorkspaceSourceContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *CloudWorkspaceSourceContext) GetWorkspaceId() *CloudWorkspaceId { - if m != nil { - return m.WorkspaceId - } - return nil -} - -func (m *CloudWorkspaceSourceContext) GetSnapshotId() string { - if m != nil { - return m.SnapshotId - } - return "" -} - -// A SourceContext referring to a Gerrit project. -type GerritSourceContext struct { - // The URI of a running Gerrit instance. - HostUri string `protobuf:"bytes,1,opt,name=host_uri,json=hostUri" json:"host_uri,omitempty"` - // The full project name within the host. Projects may be nested, so - // "project/subproject" is a valid project name. - // The "repo name" is hostURI/project. - GerritProject string `protobuf:"bytes,2,opt,name=gerrit_project,json=gerritProject" json:"gerrit_project,omitempty"` - // A revision in a Gerrit project can be identified by either its revision ID - // or its alias. - // - // Types that are valid to be assigned to Revision: - // *GerritSourceContext_RevisionId - // *GerritSourceContext_AliasName - // *GerritSourceContext_AliasContext - Revision isGerritSourceContext_Revision `protobuf_oneof:"revision"` -} - -func (m *GerritSourceContext) Reset() { *m = GerritSourceContext{} } -func (m *GerritSourceContext) String() string { return proto.CompactTextString(m) } -func (*GerritSourceContext) ProtoMessage() {} -func (*GerritSourceContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -type isGerritSourceContext_Revision interface { - isGerritSourceContext_Revision() -} - -type GerritSourceContext_RevisionId struct { - RevisionId string `protobuf:"bytes,3,opt,name=revision_id,json=revisionId,oneof"` -} -type GerritSourceContext_AliasName struct { - AliasName string `protobuf:"bytes,4,opt,name=alias_name,json=aliasName,oneof"` -} -type GerritSourceContext_AliasContext struct { - AliasContext *AliasContext `protobuf:"bytes,5,opt,name=alias_context,json=aliasContext,oneof"` -} - -func (*GerritSourceContext_RevisionId) isGerritSourceContext_Revision() {} -func (*GerritSourceContext_AliasName) isGerritSourceContext_Revision() {} -func (*GerritSourceContext_AliasContext) isGerritSourceContext_Revision() {} - -func (m *GerritSourceContext) GetRevision() isGerritSourceContext_Revision { - if m != nil { - return m.Revision - } - return nil -} - -func (m *GerritSourceContext) GetHostUri() string { - if m != nil { - return m.HostUri - } - return "" -} - -func (m *GerritSourceContext) GetGerritProject() string { - if m != nil { - return m.GerritProject - } - return "" -} - -func (m *GerritSourceContext) GetRevisionId() string { - if x, ok := m.GetRevision().(*GerritSourceContext_RevisionId); ok { - return x.RevisionId - } - return "" -} - -func (m *GerritSourceContext) GetAliasName() string { - if x, ok := m.GetRevision().(*GerritSourceContext_AliasName); ok { - return x.AliasName - } - return "" -} - -func (m *GerritSourceContext) GetAliasContext() *AliasContext { - if x, ok := m.GetRevision().(*GerritSourceContext_AliasContext); ok { - return x.AliasContext - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*GerritSourceContext) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _GerritSourceContext_OneofMarshaler, _GerritSourceContext_OneofUnmarshaler, _GerritSourceContext_OneofSizer, []interface{}{ - (*GerritSourceContext_RevisionId)(nil), - (*GerritSourceContext_AliasName)(nil), - (*GerritSourceContext_AliasContext)(nil), - } -} - -func _GerritSourceContext_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*GerritSourceContext) - // revision - switch x := m.Revision.(type) { - case *GerritSourceContext_RevisionId: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.RevisionId) - case *GerritSourceContext_AliasName: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.AliasName) - case *GerritSourceContext_AliasContext: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AliasContext); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("GerritSourceContext.Revision has unexpected type %T", x) - } - return nil -} - -func _GerritSourceContext_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*GerritSourceContext) - switch tag { - case 3: // revision.revision_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &GerritSourceContext_RevisionId{x} - return true, err - case 4: // revision.alias_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Revision = &GerritSourceContext_AliasName{x} - return true, err - case 5: // revision.alias_context - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AliasContext) - err := b.DecodeMessage(msg) - m.Revision = &GerritSourceContext_AliasContext{msg} - return true, err - default: - return false, nil - } -} - -func _GerritSourceContext_OneofSizer(msg proto.Message) (n int) { - m := msg.(*GerritSourceContext) - // revision - switch x := m.Revision.(type) { - case *GerritSourceContext_RevisionId: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.RevisionId))) - n += len(x.RevisionId) - case *GerritSourceContext_AliasName: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AliasName))) - n += len(x.AliasName) - case *GerritSourceContext_AliasContext: - s := proto.Size(x.AliasContext) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A GitSourceContext denotes a particular revision in a third party Git -// repository (e.g. GitHub). -type GitSourceContext struct { - // Git repository URL. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // Git commit hash. - // required. - RevisionId string `protobuf:"bytes,2,opt,name=revision_id,json=revisionId" json:"revision_id,omitempty"` -} - -func (m *GitSourceContext) Reset() { *m = GitSourceContext{} } -func (m *GitSourceContext) String() string { return proto.CompactTextString(m) } -func (*GitSourceContext) ProtoMessage() {} -func (*GitSourceContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *GitSourceContext) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *GitSourceContext) GetRevisionId() string { - if m != nil { - return m.RevisionId - } - return "" -} - -// A unique identifier for a cloud repo. -type RepoId struct { - // A cloud repository can be identified by either its project ID and - // repository name combination, or its globally unique identifier. - // - // Types that are valid to be assigned to Id: - // *RepoId_ProjectRepoId - // *RepoId_Uid - Id isRepoId_Id `protobuf_oneof:"id"` -} - -func (m *RepoId) Reset() { *m = RepoId{} } -func (m *RepoId) String() string { return proto.CompactTextString(m) } -func (*RepoId) ProtoMessage() {} -func (*RepoId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -type isRepoId_Id interface { - isRepoId_Id() -} - -type RepoId_ProjectRepoId struct { - ProjectRepoId *ProjectRepoId `protobuf:"bytes,1,opt,name=project_repo_id,json=projectRepoId,oneof"` -} -type RepoId_Uid struct { - Uid string `protobuf:"bytes,2,opt,name=uid,oneof"` -} - -func (*RepoId_ProjectRepoId) isRepoId_Id() {} -func (*RepoId_Uid) isRepoId_Id() {} - -func (m *RepoId) GetId() isRepoId_Id { - if m != nil { - return m.Id - } - return nil -} - -func (m *RepoId) GetProjectRepoId() *ProjectRepoId { - if x, ok := m.GetId().(*RepoId_ProjectRepoId); ok { - return x.ProjectRepoId - } - return nil -} - -func (m *RepoId) GetUid() string { - if x, ok := m.GetId().(*RepoId_Uid); ok { - return x.Uid - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RepoId) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RepoId_OneofMarshaler, _RepoId_OneofUnmarshaler, _RepoId_OneofSizer, []interface{}{ - (*RepoId_ProjectRepoId)(nil), - (*RepoId_Uid)(nil), - } -} - -func _RepoId_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RepoId) - // id - switch x := m.Id.(type) { - case *RepoId_ProjectRepoId: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ProjectRepoId); err != nil { - return err - } - case *RepoId_Uid: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Uid) - case nil: - default: - return fmt.Errorf("RepoId.Id has unexpected type %T", x) - } - return nil -} - -func _RepoId_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RepoId) - switch tag { - case 1: // id.project_repo_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ProjectRepoId) - err := b.DecodeMessage(msg) - m.Id = &RepoId_ProjectRepoId{msg} - return true, err - case 2: // id.uid - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Id = &RepoId_Uid{x} - return true, err - default: - return false, nil - } -} - -func _RepoId_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RepoId) - // id - switch x := m.Id.(type) { - case *RepoId_ProjectRepoId: - s := proto.Size(x.ProjectRepoId) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RepoId_Uid: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Uid))) - n += len(x.Uid) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Selects a repo using a Google Cloud Platform project ID -// (e.g. winged-cargo-31) and a repo name within that project. -type ProjectRepoId struct { - // The ID of the project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The name of the repo. Leave empty for the default repo. - RepoName string `protobuf:"bytes,2,opt,name=repo_name,json=repoName" json:"repo_name,omitempty"` -} - -func (m *ProjectRepoId) Reset() { *m = ProjectRepoId{} } -func (m *ProjectRepoId) String() string { return proto.CompactTextString(m) } -func (*ProjectRepoId) ProtoMessage() {} -func (*ProjectRepoId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ProjectRepoId) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ProjectRepoId) GetRepoName() string { - if m != nil { - return m.RepoName - } - return "" -} - -// A CloudWorkspaceId is a unique identifier for a cloud workspace. -// A cloud workspace is a place associated with a repo where modified files -// can be stored before they are committed. -type CloudWorkspaceId struct { - // The ID of the repo containing the workspace. - RepoId *RepoId `protobuf:"bytes,1,opt,name=repo_id,json=repoId" json:"repo_id,omitempty"` - // The unique name of the workspace within the repo. This is the name - // chosen by the client in the Source API's CreateWorkspace method. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *CloudWorkspaceId) Reset() { *m = CloudWorkspaceId{} } -func (m *CloudWorkspaceId) String() string { return proto.CompactTextString(m) } -func (*CloudWorkspaceId) ProtoMessage() {} -func (*CloudWorkspaceId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *CloudWorkspaceId) GetRepoId() *RepoId { - if m != nil { - return m.RepoId - } - return nil -} - -func (m *CloudWorkspaceId) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*SourceContext)(nil), "google.devtools.source.v1.SourceContext") - proto.RegisterType((*ExtendedSourceContext)(nil), "google.devtools.source.v1.ExtendedSourceContext") - proto.RegisterType((*AliasContext)(nil), "google.devtools.source.v1.AliasContext") - proto.RegisterType((*CloudRepoSourceContext)(nil), "google.devtools.source.v1.CloudRepoSourceContext") - proto.RegisterType((*CloudWorkspaceSourceContext)(nil), "google.devtools.source.v1.CloudWorkspaceSourceContext") - proto.RegisterType((*GerritSourceContext)(nil), "google.devtools.source.v1.GerritSourceContext") - proto.RegisterType((*GitSourceContext)(nil), "google.devtools.source.v1.GitSourceContext") - proto.RegisterType((*RepoId)(nil), "google.devtools.source.v1.RepoId") - proto.RegisterType((*ProjectRepoId)(nil), "google.devtools.source.v1.ProjectRepoId") - proto.RegisterType((*CloudWorkspaceId)(nil), "google.devtools.source.v1.CloudWorkspaceId") - proto.RegisterEnum("google.devtools.source.v1.AliasContext_Kind", AliasContext_Kind_name, AliasContext_Kind_value) -} - -func init() { proto.RegisterFile("google/devtools/source/v1/source_context.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 800 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xdd, 0x4e, 0xdb, 0x48, - 0x14, 0x8e, 0xe3, 0x90, 0xe0, 0x13, 0x02, 0xd1, 0xec, 0x8f, 0x02, 0x2c, 0x02, 0x2c, 0xad, 0x16, - 0x89, 0x95, 0xa3, 0x64, 0xa5, 0xd5, 0x2e, 0xad, 0x44, 0x09, 0xa4, 0x24, 0x82, 0x06, 0x34, 0xa5, - 0xf4, 0x47, 0x91, 0x22, 0x63, 0x8f, 0x8c, 0x8b, 0xf1, 0x58, 0xb6, 0x13, 0xe0, 0x25, 0x7a, 0xdd, - 0x67, 0xe8, 0x23, 0xf4, 0x11, 0xfa, 0x0c, 0x7d, 0x84, 0x5e, 0x56, 0xea, 0x6d, 0x35, 0x3f, 0x86, - 0x24, 0x04, 0x83, 0xd4, 0x5e, 0x79, 0xe6, 0xf8, 0xfb, 0xbe, 0x73, 0xe6, 0xfc, 0xcc, 0x80, 0xe1, - 0x50, 0xea, 0x78, 0xa4, 0x6a, 0x93, 0x41, 0x4c, 0xa9, 0x17, 0x55, 0x23, 0xda, 0x0f, 0x2d, 0x52, - 0x1d, 0xd4, 0xe4, 0xaa, 0x67, 0x51, 0x3f, 0x26, 0x97, 0xb1, 0x11, 0x84, 0x34, 0xa6, 0x68, 0x5e, - 0xe0, 0x8d, 0x04, 0x6f, 0x08, 0x94, 0x31, 0xa8, 0x2d, 0xfc, 0x21, 0xa5, 0xcc, 0xc0, 0xad, 0x9a, - 0xbe, 0x4f, 0x63, 0x33, 0x76, 0xa9, 0x1f, 0x09, 0xa2, 0xfe, 0x39, 0x0b, 0xa5, 0xe7, 0x1c, 0xbb, - 0x2d, 0x04, 0x11, 0x06, 0xb0, 0x3c, 0xda, 0xb7, 0x7b, 0x21, 0x09, 0x68, 0x45, 0x59, 0x51, 0xd6, - 0x8a, 0xf5, 0x9a, 0x71, 0xa7, 0xbe, 0xb1, 0xcd, 0xc0, 0x98, 0x04, 0x74, 0x44, 0xa6, 0x95, 0xc1, - 0x9a, 0x95, 0xfc, 0x41, 0x26, 0xcc, 0x09, 0xcd, 0x0b, 0x1a, 0x9e, 0x45, 0x81, 0x69, 0x91, 0x4a, - 0x96, 0x0b, 0xff, 0x7b, 0x9f, 0xf0, 0xcb, 0x84, 0x30, 0xae, 0x3e, 0x6b, 0x8d, 0xfc, 0x46, 0x2d, - 0xc8, 0x3b, 0x24, 0x0c, 0xdd, 0xb8, 0xa2, 0x72, 0x65, 0x23, 0x45, 0x79, 0x97, 0x03, 0xc7, 0x15, - 0x25, 0x1f, 0x6d, 0x82, 0xea, 0xb8, 0x71, 0x25, 0xcf, 0x65, 0xd6, 0xd3, 0x64, 0x6e, 0x6b, 0x30, - 0x66, 0x43, 0x83, 0x82, 0xac, 0x8e, 0xfe, 0x45, 0x81, 0xdf, 0x9a, 0x97, 0x31, 0xf1, 0x6d, 0x62, - 0x8f, 0xa6, 0xb9, 0x71, 0x0d, 0x92, 0x39, 0x5e, 0x4b, 0xf1, 0x34, 0x42, 0xc5, 0x09, 0x11, 0x1d, - 0x41, 0xde, 0x33, 0x4f, 0x88, 0x17, 0x55, 0xb2, 0x2b, 0xea, 0x5a, 0xb1, 0xfe, 0x38, 0x45, 0x62, - 0x62, 0x14, 0xc6, 0x3e, 0xa7, 0x37, 0xfd, 0x38, 0xbc, 0xc2, 0x52, 0x6b, 0xe1, 0x7f, 0x28, 0x0e, - 0x99, 0x51, 0x19, 0xd4, 0x33, 0x72, 0xc5, 0x83, 0xd4, 0x30, 0x5b, 0xa2, 0x5f, 0x61, 0x6a, 0x60, - 0x7a, 0x7d, 0x51, 0x43, 0x0d, 0x8b, 0xcd, 0x46, 0xf6, 0x3f, 0x45, 0x7f, 0xaf, 0xc0, 0xcc, 0x96, - 0xe7, 0x9a, 0x51, 0x72, 0xca, 0x27, 0x90, 0x3b, 0x73, 0x7d, 0x9b, 0xb3, 0x67, 0xeb, 0x7f, 0xa7, - 0xc4, 0x37, 0x4c, 0x33, 0xf6, 0x5c, 0xdf, 0xc6, 0x9c, 0x89, 0x10, 0xe4, 0x7c, 0xf3, 0x3c, 0xf1, - 0xc5, 0xd7, 0x7a, 0x1d, 0x72, 0x0c, 0x81, 0x0a, 0xa0, 0x6e, 0x75, 0x5e, 0x97, 0x33, 0x48, 0x83, - 0xa9, 0xa7, 0xed, 0x57, 0xcd, 0x9d, 0xb2, 0x82, 0x8a, 0x50, 0x78, 0x76, 0x70, 0xbc, 0xd5, 0xd8, - 0x6f, 0x96, 0xb3, 0xcc, 0x7e, 0x70, 0xd4, 0x6a, 0xe2, 0x72, 0x4e, 0xff, 0xaa, 0xc0, 0xef, 0x93, - 0x5b, 0x15, 0x6d, 0x40, 0x81, 0xf5, 0x7a, 0xcf, 0xb5, 0x65, 0x29, 0x56, 0x53, 0xe2, 0x64, 0xf4, - 0xb6, 0x8d, 0xf3, 0x21, 0xff, 0xa2, 0x55, 0x28, 0x86, 0x64, 0xe0, 0x46, 0x2e, 0xf5, 0x19, 0x9f, - 0x47, 0xd9, 0xca, 0x60, 0x48, 0x8c, 0x6d, 0x1b, 0x2d, 0x03, 0x98, 0xec, 0x70, 0x3d, 0x7e, 0x0e, - 0x55, 0x22, 0x34, 0x6e, 0xeb, 0x98, 0xe7, 0x04, 0x75, 0xa0, 0x24, 0x00, 0x49, 0x43, 0xe4, 0x78, - 0x14, 0x7f, 0x3d, 0x30, 0x5b, 0xad, 0x0c, 0x9e, 0x31, 0x87, 0xf6, 0x0d, 0x80, 0xe9, 0xc4, 0xbd, - 0xfe, 0x4e, 0x81, 0xc5, 0x94, 0x41, 0x42, 0x1d, 0x98, 0xb9, 0x9e, 0xc9, 0x9b, 0x04, 0xac, 0x3f, - 0x78, 0x2c, 0xdb, 0x36, 0x2e, 0x5e, 0xdc, 0x6c, 0xd0, 0x32, 0x14, 0x23, 0xdf, 0x0c, 0xa2, 0x53, - 0x1a, 0x5f, 0xe7, 0x03, 0x43, 0x62, 0x6a, 0xdb, 0xfa, 0x37, 0x05, 0x7e, 0x99, 0x30, 0x7f, 0x68, - 0x1e, 0xa6, 0x4f, 0x69, 0x14, 0xf7, 0xfa, 0xa1, 0x2b, 0x7b, 0xad, 0xc0, 0xf6, 0x2f, 0x42, 0x17, - 0xfd, 0x09, 0xb3, 0x62, 0x34, 0x7b, 0x41, 0x48, 0xdf, 0x12, 0x2b, 0x96, 0xb2, 0x25, 0x61, 0x3d, - 0x14, 0xc6, 0xf1, 0x52, 0xa8, 0xf7, 0x96, 0x22, 0xf7, 0x80, 0x52, 0x4c, 0xfd, 0xbc, 0x52, 0x34, - 0xa1, 0x3c, 0x7e, 0x63, 0xb0, 0xe1, 0xea, 0x87, 0x5e, 0x32, 0x5c, 0xfd, 0xd0, 0x63, 0x09, 0xbc, - 0xd5, 0x50, 0xc3, 0x67, 0xd0, 0x07, 0x90, 0x17, 0x3d, 0x88, 0x30, 0xcc, 0xc9, 0x84, 0xf4, 0x46, - 0xfb, 0x37, 0xed, 0x2a, 0x91, 0xd9, 0x12, 0x12, 0xad, 0x0c, 0x2e, 0x05, 0xc3, 0x06, 0x84, 0x40, - 0xed, 0x0f, 0xf5, 0x31, 0xdb, 0x34, 0x72, 0x90, 0x75, 0x6d, 0x7d, 0x0f, 0x4a, 0x23, 0x5c, 0xb4, - 0x04, 0x90, 0xb8, 0x97, 0x9e, 0x35, 0xac, 0x49, 0x4b, 0xdb, 0x46, 0x8b, 0xa0, 0xf1, 0xa8, 0x86, - 0xa6, 0x77, 0x9a, 0x19, 0x58, 0x9e, 0xf5, 0x13, 0x28, 0x8f, 0xf7, 0xd1, 0x0f, 0x8d, 0xe1, 0x84, - 0x5b, 0xa2, 0xf1, 0x51, 0x81, 0x25, 0x8b, 0x9e, 0xdf, 0x2d, 0xd2, 0x40, 0x23, 0xc5, 0x38, 0x64, - 0x0f, 0xe2, 0xa1, 0xf2, 0x66, 0x53, 0x12, 0x1c, 0xea, 0x99, 0xbe, 0x63, 0xd0, 0xd0, 0xa9, 0x3a, - 0xc4, 0xe7, 0xcf, 0x65, 0x55, 0xfc, 0x32, 0x03, 0x37, 0x9a, 0xf0, 0x34, 0x3f, 0x12, 0xab, 0x0f, - 0xd9, 0xe5, 0x5d, 0xa1, 0xc0, 0x8f, 0x68, 0xec, 0x90, 0xc1, 0x11, 0x77, 0x2c, 0xbc, 0x19, 0xc7, - 0xb5, 0x4f, 0x09, 0xa2, 0xcb, 0x11, 0xdd, 0x04, 0xd1, 0x15, 0x88, 0xee, 0x71, 0xed, 0x24, 0xcf, - 0xfd, 0xfd, 0xf3, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x54, 0x77, 0xc5, 0xa9, 0x09, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/devtools/sourcerepo/v1/sourcerepo.pb.go b/vendor/google.golang.org/genproto/googleapis/devtools/sourcerepo/v1/sourcerepo.pb.go deleted file mode 100644 index 47994ed9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/devtools/sourcerepo/v1/sourcerepo.pb.go +++ /dev/null @@ -1,636 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/devtools/sourcerepo/v1/sourcerepo.proto - -/* -Package sourcerepo is a generated protocol buffer package. - -It is generated from these files: - google/devtools/sourcerepo/v1/sourcerepo.proto - -It has these top-level messages: - Repo - MirrorConfig - GetRepoRequest - ListReposRequest - ListReposResponse - CreateRepoRequest - DeleteRepoRequest -*/ -package sourcerepo - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A repository (or repo) is a Git repository storing versioned source content. -type Repo struct { - // Resource name of the repository, of the form - // `projects/<project>/repos/<repo>`. The repo name may contain slashes. - // eg, `projects/myproject/repos/name/with/slash` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The disk usage of the repo, in bytes. Read-only field. Size is only - // returned by GetRepo. - Size int64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"` - // URL to clone the repository from Google Cloud Source Repositories. - // Read-only field. - Url string `protobuf:"bytes,3,opt,name=url" json:"url,omitempty"` - // How this repository mirrors a repository managed by another service. - // Read-only field. - MirrorConfig *MirrorConfig `protobuf:"bytes,4,opt,name=mirror_config,json=mirrorConfig" json:"mirror_config,omitempty"` -} - -func (m *Repo) Reset() { *m = Repo{} } -func (m *Repo) String() string { return proto.CompactTextString(m) } -func (*Repo) ProtoMessage() {} -func (*Repo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Repo) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Repo) GetSize() int64 { - if m != nil { - return m.Size - } - return 0 -} - -func (m *Repo) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *Repo) GetMirrorConfig() *MirrorConfig { - if m != nil { - return m.MirrorConfig - } - return nil -} - -// Configuration to automatically mirror a repository from another -// hosting service, for example GitHub or BitBucket. -type MirrorConfig struct { - // URL of the main repository at the other hosting service. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // ID of the webhook listening to updates to trigger mirroring. - // Removing this webhook from the other hosting service will stop - // Google Cloud Source Repositories from receiving notifications, - // and thereby disabling mirroring. - WebhookId string `protobuf:"bytes,2,opt,name=webhook_id,json=webhookId" json:"webhook_id,omitempty"` - // ID of the SSH deploy key at the other hosting service. - // Removing this key from the other service would deauthorize - // Google Cloud Source Repositories from mirroring. - DeployKeyId string `protobuf:"bytes,3,opt,name=deploy_key_id,json=deployKeyId" json:"deploy_key_id,omitempty"` -} - -func (m *MirrorConfig) Reset() { *m = MirrorConfig{} } -func (m *MirrorConfig) String() string { return proto.CompactTextString(m) } -func (*MirrorConfig) ProtoMessage() {} -func (*MirrorConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *MirrorConfig) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *MirrorConfig) GetWebhookId() string { - if m != nil { - return m.WebhookId - } - return "" -} - -func (m *MirrorConfig) GetDeployKeyId() string { - if m != nil { - return m.DeployKeyId - } - return "" -} - -// Request for GetRepo. -type GetRepoRequest struct { - // The name of the requested repository. Values are of the form - // `projects/<project>/repos/<repo>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetRepoRequest) Reset() { *m = GetRepoRequest{} } -func (m *GetRepoRequest) String() string { return proto.CompactTextString(m) } -func (*GetRepoRequest) ProtoMessage() {} -func (*GetRepoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *GetRepoRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for ListRepos. -type ListReposRequest struct { - // The project ID whose repos should be listed. Values are of the form - // `projects/<project>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Maximum number of repositories to return; between 1 and 500. - // If not set or zero, defaults to 100 at the server. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Resume listing repositories where a prior ListReposResponse - // left off. This is an opaque token that must be obtained from - // a recent, prior ListReposResponse's next_page_token field. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListReposRequest) Reset() { *m = ListReposRequest{} } -func (m *ListReposRequest) String() string { return proto.CompactTextString(m) } -func (*ListReposRequest) ProtoMessage() {} -func (*ListReposRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListReposRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListReposRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListReposRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for ListRepos. The size is not set in the returned repositories. -type ListReposResponse struct { - // The listed repos. - Repos []*Repo `protobuf:"bytes,1,rep,name=repos" json:"repos,omitempty"` - // If non-empty, additional repositories exist within the project. These - // can be retrieved by including this value in the next ListReposRequest's - // page_token field. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListReposResponse) Reset() { *m = ListReposResponse{} } -func (m *ListReposResponse) String() string { return proto.CompactTextString(m) } -func (*ListReposResponse) ProtoMessage() {} -func (*ListReposResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListReposResponse) GetRepos() []*Repo { - if m != nil { - return m.Repos - } - return nil -} - -func (m *ListReposResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for CreateRepo -type CreateRepoRequest struct { - // The project in which to create the repo. Values are of the form - // `projects/<project>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The repo to create. Only name should be set; setting other fields - // is an error. The project in the name should match the parent field. - Repo *Repo `protobuf:"bytes,2,opt,name=repo" json:"repo,omitempty"` -} - -func (m *CreateRepoRequest) Reset() { *m = CreateRepoRequest{} } -func (m *CreateRepoRequest) String() string { return proto.CompactTextString(m) } -func (*CreateRepoRequest) ProtoMessage() {} -func (*CreateRepoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *CreateRepoRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateRepoRequest) GetRepo() *Repo { - if m != nil { - return m.Repo - } - return nil -} - -// Request for DeleteRepo. -type DeleteRepoRequest struct { - // The name of the repo to delete. Values are of the form - // `projects/<project>/repos/<repo>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteRepoRequest) Reset() { *m = DeleteRepoRequest{} } -func (m *DeleteRepoRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteRepoRequest) ProtoMessage() {} -func (*DeleteRepoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *DeleteRepoRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*Repo)(nil), "google.devtools.sourcerepo.v1.Repo") - proto.RegisterType((*MirrorConfig)(nil), "google.devtools.sourcerepo.v1.MirrorConfig") - proto.RegisterType((*GetRepoRequest)(nil), "google.devtools.sourcerepo.v1.GetRepoRequest") - proto.RegisterType((*ListReposRequest)(nil), "google.devtools.sourcerepo.v1.ListReposRequest") - proto.RegisterType((*ListReposResponse)(nil), "google.devtools.sourcerepo.v1.ListReposResponse") - proto.RegisterType((*CreateRepoRequest)(nil), "google.devtools.sourcerepo.v1.CreateRepoRequest") - proto.RegisterType((*DeleteRepoRequest)(nil), "google.devtools.sourcerepo.v1.DeleteRepoRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for SourceRepo service - -type SourceRepoClient interface { - // Returns all repos belonging to a project. The sizes of the repos are - // not set by ListRepos. To get the size of a repo, use GetRepo. - ListRepos(ctx context.Context, in *ListReposRequest, opts ...grpc.CallOption) (*ListReposResponse, error) - // Returns information about a repo. - GetRepo(ctx context.Context, in *GetRepoRequest, opts ...grpc.CallOption) (*Repo, error) - // Creates a repo in the given project with the given name. - // - // If the named repository already exists, `CreateRepo` returns - // `ALREADY_EXISTS`. - CreateRepo(ctx context.Context, in *CreateRepoRequest, opts ...grpc.CallOption) (*Repo, error) - // Deletes a repo. - DeleteRepo(ctx context.Context, in *DeleteRepoRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Sets the access control policy on the specified resource. Replaces any - // existing policy. - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Gets the access control policy for a resource. - // Returns an empty policy if the resource exists and does not have a policy - // set. - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Returns permissions that a caller has on the specified resource. - // If the resource does not exist, this will return an empty set of - // permissions, not a NOT_FOUND error. - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -type sourceRepoClient struct { - cc *grpc.ClientConn -} - -func NewSourceRepoClient(cc *grpc.ClientConn) SourceRepoClient { - return &sourceRepoClient{cc} -} - -func (c *sourceRepoClient) ListRepos(ctx context.Context, in *ListReposRequest, opts ...grpc.CallOption) (*ListReposResponse, error) { - out := new(ListReposResponse) - err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/ListRepos", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sourceRepoClient) GetRepo(ctx context.Context, in *GetRepoRequest, opts ...grpc.CallOption) (*Repo, error) { - out := new(Repo) - err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/GetRepo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sourceRepoClient) CreateRepo(ctx context.Context, in *CreateRepoRequest, opts ...grpc.CallOption) (*Repo, error) { - out := new(Repo) - err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/CreateRepo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sourceRepoClient) DeleteRepo(ctx context.Context, in *DeleteRepoRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/DeleteRepo", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sourceRepoClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sourceRepoClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sourceRepoClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for SourceRepo service - -type SourceRepoServer interface { - // Returns all repos belonging to a project. The sizes of the repos are - // not set by ListRepos. To get the size of a repo, use GetRepo. - ListRepos(context.Context, *ListReposRequest) (*ListReposResponse, error) - // Returns information about a repo. - GetRepo(context.Context, *GetRepoRequest) (*Repo, error) - // Creates a repo in the given project with the given name. - // - // If the named repository already exists, `CreateRepo` returns - // `ALREADY_EXISTS`. - CreateRepo(context.Context, *CreateRepoRequest) (*Repo, error) - // Deletes a repo. - DeleteRepo(context.Context, *DeleteRepoRequest) (*google_protobuf1.Empty, error) - // Sets the access control policy on the specified resource. Replaces any - // existing policy. - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Gets the access control policy for a resource. - // Returns an empty policy if the resource exists and does not have a policy - // set. - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Returns permissions that a caller has on the specified resource. - // If the resource does not exist, this will return an empty set of - // permissions, not a NOT_FOUND error. - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -func RegisterSourceRepoServer(s *grpc.Server, srv SourceRepoServer) { - s.RegisterService(&_SourceRepo_serviceDesc, srv) -} - -func _SourceRepo_ListRepos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListReposRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SourceRepoServer).ListRepos(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/ListRepos", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SourceRepoServer).ListRepos(ctx, req.(*ListReposRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SourceRepo_GetRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetRepoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SourceRepoServer).GetRepo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/GetRepo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SourceRepoServer).GetRepo(ctx, req.(*GetRepoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SourceRepo_CreateRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateRepoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SourceRepoServer).CreateRepo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/CreateRepo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SourceRepoServer).CreateRepo(ctx, req.(*CreateRepoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SourceRepo_DeleteRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteRepoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SourceRepoServer).DeleteRepo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/DeleteRepo", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SourceRepoServer).DeleteRepo(ctx, req.(*DeleteRepoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SourceRepo_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SourceRepoServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SourceRepoServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SourceRepo_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SourceRepoServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SourceRepoServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SourceRepo_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SourceRepoServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SourceRepoServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _SourceRepo_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.devtools.sourcerepo.v1.SourceRepo", - HandlerType: (*SourceRepoServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListRepos", - Handler: _SourceRepo_ListRepos_Handler, - }, - { - MethodName: "GetRepo", - Handler: _SourceRepo_GetRepo_Handler, - }, - { - MethodName: "CreateRepo", - Handler: _SourceRepo_CreateRepo_Handler, - }, - { - MethodName: "DeleteRepo", - Handler: _SourceRepo_DeleteRepo_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _SourceRepo_SetIamPolicy_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _SourceRepo_GetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _SourceRepo_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/devtools/sourcerepo/v1/sourcerepo.proto", -} - -func init() { proto.RegisterFile("google/devtools/sourcerepo/v1/sourcerepo.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 743 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xd1, 0x6e, 0xd3, 0x4a, - 0x10, 0xd5, 0x36, 0x69, 0x7b, 0x33, 0x4d, 0x6f, 0xdb, 0x95, 0x6e, 0x15, 0xa5, 0x37, 0x55, 0xae, - 0x7b, 0x29, 0x21, 0x15, 0x36, 0x2d, 0xa0, 0x8a, 0x20, 0x24, 0xd4, 0x82, 0xa2, 0x0a, 0x90, 0xa2, - 0xb4, 0x4f, 0xbc, 0x44, 0x4e, 0x32, 0x35, 0xa6, 0xb6, 0xd7, 0x78, 0x37, 0x81, 0x80, 0x0a, 0x52, - 0xa5, 0xbe, 0x23, 0xfa, 0x19, 0x7c, 0x0e, 0xbf, 0xc0, 0x47, 0xf0, 0x88, 0x76, 0x6d, 0x37, 0x4e, - 0x13, 0x12, 0xbf, 0xed, 0xce, 0x9c, 0x99, 0x73, 0xf6, 0xec, 0x78, 0x0d, 0xba, 0xc5, 0x98, 0xe5, - 0xa0, 0xd1, 0xc5, 0xbe, 0x60, 0xcc, 0xe1, 0x06, 0x67, 0xbd, 0xa0, 0x83, 0x01, 0xfa, 0xcc, 0xe8, - 0xef, 0x26, 0x76, 0xba, 0x1f, 0x30, 0xc1, 0x68, 0x29, 0xc4, 0xeb, 0x31, 0x5e, 0x4f, 0x20, 0xfa, - 0xbb, 0xc5, 0x7f, 0xa3, 0x76, 0xa6, 0x6f, 0x1b, 0xa6, 0xe7, 0x31, 0x61, 0x0a, 0x9b, 0x79, 0x3c, - 0x2c, 0x2e, 0x6e, 0x46, 0x59, 0xdb, 0x74, 0x65, 0x73, 0xdb, 0x74, 0x5b, 0x3e, 0x73, 0xec, 0xce, - 0x20, 0xca, 0x17, 0x47, 0xf3, 0x23, 0xb9, 0x8d, 0x28, 0xa7, 0x76, 0xed, 0xde, 0xa9, 0x81, 0xae, - 0x2f, 0xa2, 0xa4, 0xf6, 0x8d, 0x40, 0xb6, 0x89, 0x3e, 0xa3, 0x14, 0xb2, 0x9e, 0xe9, 0x62, 0x81, - 0x94, 0x49, 0x25, 0xd7, 0x54, 0x6b, 0x19, 0xe3, 0xf6, 0x47, 0x2c, 0xcc, 0x95, 0x49, 0x25, 0xd3, - 0x54, 0x6b, 0xba, 0x0a, 0x99, 0x5e, 0xe0, 0x14, 0x32, 0x0a, 0x26, 0x97, 0xb4, 0x01, 0xcb, 0xae, - 0x1d, 0x04, 0x2c, 0x68, 0x75, 0x98, 0x77, 0x6a, 0x5b, 0x85, 0x6c, 0x99, 0x54, 0x96, 0xf6, 0x76, - 0xf4, 0xa9, 0x07, 0xd6, 0x5f, 0xa9, 0x9a, 0x43, 0x55, 0xd2, 0xcc, 0xbb, 0x89, 0x9d, 0xd6, 0x81, - 0x7c, 0x32, 0x1b, 0x73, 0x92, 0x21, 0x67, 0x09, 0xe0, 0x3d, 0xb6, 0xdf, 0x30, 0x76, 0xd6, 0xb2, - 0xbb, 0x4a, 0x5f, 0xae, 0x99, 0x8b, 0x22, 0x47, 0x5d, 0xaa, 0xc1, 0x72, 0x17, 0x7d, 0x87, 0x0d, - 0x5a, 0x67, 0x38, 0x90, 0x88, 0x50, 0xee, 0x52, 0x18, 0x7c, 0x81, 0x83, 0xa3, 0xae, 0xf6, 0x3f, - 0xfc, 0x5d, 0x47, 0x21, 0xcf, 0xde, 0xc4, 0x77, 0x3d, 0xe4, 0x62, 0x92, 0x05, 0x5a, 0x1b, 0x56, - 0x5f, 0xda, 0x5c, 0xc1, 0xf8, 0x14, 0x1c, 0xdd, 0x80, 0x9c, 0x6f, 0x5a, 0xd8, 0xba, 0xf6, 0x6b, - 0xbe, 0xf9, 0x97, 0x0c, 0x1c, 0x4b, 0xcf, 0x4a, 0x00, 0x2a, 0x29, 0xd8, 0x19, 0x7a, 0x91, 0x16, - 0x05, 0x3f, 0x91, 0x01, 0xad, 0x0f, 0x6b, 0x09, 0x0e, 0xee, 0x33, 0x8f, 0x23, 0x7d, 0x04, 0xf3, - 0xd2, 0x29, 0x5e, 0x20, 0xe5, 0x4c, 0x65, 0x69, 0x6f, 0x6b, 0x86, 0x9b, 0xea, 0x1c, 0x61, 0x05, - 0xdd, 0x86, 0x15, 0x0f, 0x3f, 0x88, 0x56, 0x82, 0x33, 0x74, 0x68, 0x59, 0x86, 0x1b, 0xd7, 0xbc, - 0x5d, 0x58, 0x3b, 0x0c, 0xd0, 0x14, 0x98, 0x34, 0x61, 0x1d, 0x16, 0x7c, 0x33, 0x40, 0x4f, 0x44, - 0xc7, 0x8b, 0x76, 0x74, 0x1f, 0xb2, 0xb2, 0xbb, 0xea, 0x94, 0x52, 0x8e, 0x2a, 0xd0, 0x6e, 0xc3, - 0xda, 0x33, 0x74, 0x70, 0x94, 0x65, 0x82, 0x85, 0x7b, 0xbf, 0x16, 0x01, 0x8e, 0x55, 0x17, 0x35, - 0x90, 0x57, 0x04, 0x72, 0xd7, 0xb6, 0x50, 0x63, 0x06, 0xe1, 0xcd, 0x4b, 0x2a, 0xde, 0x4b, 0x5f, - 0x10, 0x3a, 0xae, 0x6d, 0x5d, 0xfc, 0xf8, 0x79, 0x35, 0x57, 0xa2, 0x1b, 0xf2, 0x0b, 0xfa, 0x24, - 0x25, 0x3d, 0xf1, 0x03, 0xf6, 0x16, 0x3b, 0x82, 0x1b, 0xd5, 0x73, 0x23, 0xf4, 0xf6, 0x92, 0xc0, - 0x62, 0x34, 0x36, 0xf4, 0xee, 0x0c, 0x8a, 0xd1, 0xf1, 0x2a, 0xa6, 0xf1, 0x4c, 0xdb, 0x56, 0x22, - 0xca, 0x74, 0x73, 0x92, 0x88, 0x50, 0x83, 0x51, 0xad, 0x9e, 0xd3, 0xaf, 0x04, 0x60, 0x78, 0x79, - 0x74, 0xd6, 0x69, 0xc7, 0xee, 0x39, 0x9d, 0x9a, 0x1d, 0xa5, 0xe6, 0x96, 0x56, 0x52, 0x6a, 0xc2, - 0x49, 0x18, 0x37, 0xa5, 0xa6, 0x2e, 0x9a, 0x7e, 0x06, 0x18, 0x5e, 0xf4, 0x4c, 0x45, 0x63, 0x33, - 0x51, 0x5c, 0x8f, 0x2b, 0xe2, 0x87, 0x4a, 0x7f, 0x2e, 0x1f, 0xaa, 0xd8, 0x92, 0xea, 0x2c, 0x4b, - 0x2e, 0x09, 0xe4, 0x8f, 0x51, 0x1c, 0x99, 0x6e, 0x43, 0x3d, 0x7f, 0x54, 0x8b, 0x1b, 0xda, 0xa6, - 0x2b, 0x29, 0x93, 0xc9, 0x98, 0xf4, 0x9f, 0x1b, 0x98, 0x30, 0xab, 0xd5, 0x14, 0xe7, 0x03, 0xcd, - 0x50, 0x9c, 0x01, 0x86, 0xda, 0x27, 0xf2, 0xd6, 0x78, 0xa2, 0x6d, 0x8d, 0x54, 0xe9, 0x05, 0x81, - 0x7c, 0x7d, 0x9a, 0x8e, 0x7a, 0x7a, 0x1d, 0xfb, 0x4a, 0xc7, 0x2e, 0x4d, 0xa3, 0xc3, 0x4a, 0x72, - 0x7e, 0x27, 0x40, 0x4f, 0x90, 0xab, 0x08, 0x06, 0xae, 0xcd, 0xb9, 0xfc, 0x9b, 0xd0, 0xca, 0x0d, - 0x9a, 0x71, 0x48, 0x2c, 0xe8, 0x4e, 0x0a, 0x64, 0xf4, 0xe1, 0x3c, 0x55, 0x22, 0x6b, 0xda, 0xc3, - 0x14, 0x22, 0xc5, 0x58, 0x9b, 0x1a, 0xa9, 0x1e, 0x7c, 0x81, 0xff, 0x3a, 0xcc, 0x9d, 0x3e, 0x31, - 0x07, 0x2b, 0xc3, 0xc7, 0xa1, 0x21, 0x27, 0xa4, 0x41, 0x5e, 0xd7, 0xa3, 0x0a, 0x8b, 0x39, 0xa6, - 0x67, 0xe9, 0x2c, 0xb0, 0x0c, 0x0b, 0x3d, 0x35, 0x3f, 0x46, 0x98, 0x32, 0x7d, 0x9b, 0xff, 0xe1, - 0x17, 0xfd, 0x78, 0xb8, 0x6b, 0x2f, 0xa8, 0x9a, 0xfb, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x31, - 0x75, 0x14, 0x03, 0xd5, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/example/library/v1/library.pb.go b/vendor/google.golang.org/genproto/googleapis/example/library/v1/library.pb.go deleted file mode 100644 index 5fa99752..00000000 --- a/vendor/google.golang.org/genproto/googleapis/example/library/v1/library.pb.go +++ /dev/null @@ -1,981 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/example/library/v1/library.proto - -/* -Package library is a generated protocol buffer package. - -It is generated from these files: - google/example/library/v1/library.proto - -It has these top-level messages: - Book - Shelf - CreateShelfRequest - GetShelfRequest - ListShelvesRequest - ListShelvesResponse - DeleteShelfRequest - MergeShelvesRequest - CreateBookRequest - GetBookRequest - ListBooksRequest - ListBooksResponse - UpdateBookRequest - DeleteBookRequest - MoveBookRequest -*/ -package library - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A single book in the library. -type Book struct { - // The resource name of the book. - // Book names have the form `shelves/{shelf_id}/books/{book_id}`. - // The name is ignored when creating a book. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the book author. - Author string `protobuf:"bytes,2,opt,name=author" json:"author,omitempty"` - // The title of the book. - Title string `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"` - // Value indicating whether the book has been read. - Read bool `protobuf:"varint,4,opt,name=read" json:"read,omitempty"` -} - -func (m *Book) Reset() { *m = Book{} } -func (m *Book) String() string { return proto.CompactTextString(m) } -func (*Book) ProtoMessage() {} -func (*Book) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Book) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Book) GetAuthor() string { - if m != nil { - return m.Author - } - return "" -} - -func (m *Book) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Book) GetRead() bool { - if m != nil { - return m.Read - } - return false -} - -// A Shelf contains a collection of books with a theme. -type Shelf struct { - // The resource name of the shelf. - // Shelf names have the form `shelves/{shelf_id}`. - // The name is ignored when creating a shelf. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The theme of the shelf - Theme string `protobuf:"bytes,2,opt,name=theme" json:"theme,omitempty"` -} - -func (m *Shelf) Reset() { *m = Shelf{} } -func (m *Shelf) String() string { return proto.CompactTextString(m) } -func (*Shelf) ProtoMessage() {} -func (*Shelf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Shelf) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Shelf) GetTheme() string { - if m != nil { - return m.Theme - } - return "" -} - -// Request message for LibraryService.CreateShelf. -type CreateShelfRequest struct { - // The shelf to create. - Shelf *Shelf `protobuf:"bytes,1,opt,name=shelf" json:"shelf,omitempty"` -} - -func (m *CreateShelfRequest) Reset() { *m = CreateShelfRequest{} } -func (m *CreateShelfRequest) String() string { return proto.CompactTextString(m) } -func (*CreateShelfRequest) ProtoMessage() {} -func (*CreateShelfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *CreateShelfRequest) GetShelf() *Shelf { - if m != nil { - return m.Shelf - } - return nil -} - -// Request message for LibraryService.GetShelf. -type GetShelfRequest struct { - // The name of the shelf to retrieve. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetShelfRequest) Reset() { *m = GetShelfRequest{} } -func (m *GetShelfRequest) String() string { return proto.CompactTextString(m) } -func (*GetShelfRequest) ProtoMessage() {} -func (*GetShelfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *GetShelfRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for LibraryService.ListShelves. -type ListShelvesRequest struct { - // Requested page size. Server may return fewer shelves than requested. - // If unspecified, server will pick an appropriate default. - PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A token identifying a page of results the server should return. - // Typically, this is the value of - // [ListShelvesResponse.next_page_token][google.example.library.v1.ListShelvesResponse.next_page_token] - // returned from the previous call to `ListShelves` method. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListShelvesRequest) Reset() { *m = ListShelvesRequest{} } -func (m *ListShelvesRequest) String() string { return proto.CompactTextString(m) } -func (*ListShelvesRequest) ProtoMessage() {} -func (*ListShelvesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListShelvesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListShelvesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for LibraryService.ListShelves. -type ListShelvesResponse struct { - // The list of shelves. - Shelves []*Shelf `protobuf:"bytes,1,rep,name=shelves" json:"shelves,omitempty"` - // A token to retrieve next page of results. - // Pass this value in the - // [ListShelvesRequest.page_token][google.example.library.v1.ListShelvesRequest.page_token] - // field in the subsequent call to `ListShelves` method to retrieve the next - // page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListShelvesResponse) Reset() { *m = ListShelvesResponse{} } -func (m *ListShelvesResponse) String() string { return proto.CompactTextString(m) } -func (*ListShelvesResponse) ProtoMessage() {} -func (*ListShelvesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ListShelvesResponse) GetShelves() []*Shelf { - if m != nil { - return m.Shelves - } - return nil -} - -func (m *ListShelvesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for LibraryService.DeleteShelf. -type DeleteShelfRequest struct { - // The name of the shelf to delete. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteShelfRequest) Reset() { *m = DeleteShelfRequest{} } -func (m *DeleteShelfRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteShelfRequest) ProtoMessage() {} -func (*DeleteShelfRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *DeleteShelfRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Describes the shelf being removed (other_shelf_name) and updated -// (name) in this merge. -type MergeShelvesRequest struct { - // The name of the shelf we're adding books to. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the shelf we're removing books from and deleting. - OtherShelfName string `protobuf:"bytes,2,opt,name=other_shelf_name,json=otherShelfName" json:"other_shelf_name,omitempty"` -} - -func (m *MergeShelvesRequest) Reset() { *m = MergeShelvesRequest{} } -func (m *MergeShelvesRequest) String() string { return proto.CompactTextString(m) } -func (*MergeShelvesRequest) ProtoMessage() {} -func (*MergeShelvesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *MergeShelvesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *MergeShelvesRequest) GetOtherShelfName() string { - if m != nil { - return m.OtherShelfName - } - return "" -} - -// Request message for LibraryService.CreateBook. -type CreateBookRequest struct { - // The name of the shelf in which the book is created. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The book to create. - Book *Book `protobuf:"bytes,2,opt,name=book" json:"book,omitempty"` -} - -func (m *CreateBookRequest) Reset() { *m = CreateBookRequest{} } -func (m *CreateBookRequest) String() string { return proto.CompactTextString(m) } -func (*CreateBookRequest) ProtoMessage() {} -func (*CreateBookRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *CreateBookRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateBookRequest) GetBook() *Book { - if m != nil { - return m.Book - } - return nil -} - -// Request message for LibraryService.GetBook. -type GetBookRequest struct { - // The name of the book to retrieve. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetBookRequest) Reset() { *m = GetBookRequest{} } -func (m *GetBookRequest) String() string { return proto.CompactTextString(m) } -func (*GetBookRequest) ProtoMessage() {} -func (*GetBookRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *GetBookRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for LibraryService.ListBooks. -type ListBooksRequest struct { - // The name of the shelf whose books we'd like to list. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Requested page size. Server may return fewer books than requested. - // If unspecified, server will pick an appropriate default. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A token identifying a page of results the server should return. - // Typically, this is the value of - // [ListBooksResponse.next_page_token][google.example.library.v1.ListBooksResponse.next_page_token]. - // returned from the previous call to `ListBooks` method. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListBooksRequest) Reset() { *m = ListBooksRequest{} } -func (m *ListBooksRequest) String() string { return proto.CompactTextString(m) } -func (*ListBooksRequest) ProtoMessage() {} -func (*ListBooksRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *ListBooksRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListBooksRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListBooksRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response message for LibraryService.ListBooks. -type ListBooksResponse struct { - // The list of books. - Books []*Book `protobuf:"bytes,1,rep,name=books" json:"books,omitempty"` - // A token to retrieve next page of results. - // Pass this value in the - // [ListBooksRequest.page_token][google.example.library.v1.ListBooksRequest.page_token] - // field in the subsequent call to `ListBooks` method to retrieve the next - // page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListBooksResponse) Reset() { *m = ListBooksResponse{} } -func (m *ListBooksResponse) String() string { return proto.CompactTextString(m) } -func (*ListBooksResponse) ProtoMessage() {} -func (*ListBooksResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ListBooksResponse) GetBooks() []*Book { - if m != nil { - return m.Books - } - return nil -} - -func (m *ListBooksResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for LibraryService.UpdateBook. -type UpdateBookRequest struct { - // The name of the book to update. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The book to update with. The name must match or be empty. - Book *Book `protobuf:"bytes,2,opt,name=book" json:"book,omitempty"` -} - -func (m *UpdateBookRequest) Reset() { *m = UpdateBookRequest{} } -func (m *UpdateBookRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateBookRequest) ProtoMessage() {} -func (*UpdateBookRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *UpdateBookRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateBookRequest) GetBook() *Book { - if m != nil { - return m.Book - } - return nil -} - -// Request message for LibraryService.DeleteBook. -type DeleteBookRequest struct { - // The name of the book to delete. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteBookRequest) Reset() { *m = DeleteBookRequest{} } -func (m *DeleteBookRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteBookRequest) ProtoMessage() {} -func (*DeleteBookRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *DeleteBookRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Describes what book to move (name) and what shelf we're moving it -// to (other_shelf_name). -type MoveBookRequest struct { - // The name of the book to move. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the destination shelf. - OtherShelfName string `protobuf:"bytes,2,opt,name=other_shelf_name,json=otherShelfName" json:"other_shelf_name,omitempty"` -} - -func (m *MoveBookRequest) Reset() { *m = MoveBookRequest{} } -func (m *MoveBookRequest) String() string { return proto.CompactTextString(m) } -func (*MoveBookRequest) ProtoMessage() {} -func (*MoveBookRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *MoveBookRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *MoveBookRequest) GetOtherShelfName() string { - if m != nil { - return m.OtherShelfName - } - return "" -} - -func init() { - proto.RegisterType((*Book)(nil), "google.example.library.v1.Book") - proto.RegisterType((*Shelf)(nil), "google.example.library.v1.Shelf") - proto.RegisterType((*CreateShelfRequest)(nil), "google.example.library.v1.CreateShelfRequest") - proto.RegisterType((*GetShelfRequest)(nil), "google.example.library.v1.GetShelfRequest") - proto.RegisterType((*ListShelvesRequest)(nil), "google.example.library.v1.ListShelvesRequest") - proto.RegisterType((*ListShelvesResponse)(nil), "google.example.library.v1.ListShelvesResponse") - proto.RegisterType((*DeleteShelfRequest)(nil), "google.example.library.v1.DeleteShelfRequest") - proto.RegisterType((*MergeShelvesRequest)(nil), "google.example.library.v1.MergeShelvesRequest") - proto.RegisterType((*CreateBookRequest)(nil), "google.example.library.v1.CreateBookRequest") - proto.RegisterType((*GetBookRequest)(nil), "google.example.library.v1.GetBookRequest") - proto.RegisterType((*ListBooksRequest)(nil), "google.example.library.v1.ListBooksRequest") - proto.RegisterType((*ListBooksResponse)(nil), "google.example.library.v1.ListBooksResponse") - proto.RegisterType((*UpdateBookRequest)(nil), "google.example.library.v1.UpdateBookRequest") - proto.RegisterType((*DeleteBookRequest)(nil), "google.example.library.v1.DeleteBookRequest") - proto.RegisterType((*MoveBookRequest)(nil), "google.example.library.v1.MoveBookRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for LibraryService service - -type LibraryServiceClient interface { - // Creates a shelf, and returns the new Shelf. - CreateShelf(ctx context.Context, in *CreateShelfRequest, opts ...grpc.CallOption) (*Shelf, error) - // Gets a shelf. Returns NOT_FOUND if the shelf does not exist. - GetShelf(ctx context.Context, in *GetShelfRequest, opts ...grpc.CallOption) (*Shelf, error) - // Lists shelves. The order is unspecified but deterministic. Newly created - // shelves will not necessarily be added to the end of this list. - ListShelves(ctx context.Context, in *ListShelvesRequest, opts ...grpc.CallOption) (*ListShelvesResponse, error) - // Deletes a shelf. Returns NOT_FOUND if the shelf does not exist. - DeleteShelf(ctx context.Context, in *DeleteShelfRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Merges two shelves by adding all books from the shelf named - // `other_shelf_name` to shelf `name`, and deletes - // `other_shelf_name`. Returns the updated shelf. - // The book ids of the moved books may not be the same as the original books. - // - // Returns NOT_FOUND if either shelf does not exist. - // This call is a no-op if the specified shelves are the same. - MergeShelves(ctx context.Context, in *MergeShelvesRequest, opts ...grpc.CallOption) (*Shelf, error) - // Creates a book, and returns the new Book. - CreateBook(ctx context.Context, in *CreateBookRequest, opts ...grpc.CallOption) (*Book, error) - // Gets a book. Returns NOT_FOUND if the book does not exist. - GetBook(ctx context.Context, in *GetBookRequest, opts ...grpc.CallOption) (*Book, error) - // Lists books in a shelf. The order is unspecified but deterministic. Newly - // created books will not necessarily be added to the end of this list. - // Returns NOT_FOUND if the shelf does not exist. - ListBooks(ctx context.Context, in *ListBooksRequest, opts ...grpc.CallOption) (*ListBooksResponse, error) - // Deletes a book. Returns NOT_FOUND if the book does not exist. - DeleteBook(ctx context.Context, in *DeleteBookRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Updates a book. Returns INVALID_ARGUMENT if the name of the book - // is non-empty and does equal the previous name. - UpdateBook(ctx context.Context, in *UpdateBookRequest, opts ...grpc.CallOption) (*Book, error) - // Moves a book to another shelf, and returns the new book. The book - // id of the new book may not be the same as the original book. - MoveBook(ctx context.Context, in *MoveBookRequest, opts ...grpc.CallOption) (*Book, error) -} - -type libraryServiceClient struct { - cc *grpc.ClientConn -} - -func NewLibraryServiceClient(cc *grpc.ClientConn) LibraryServiceClient { - return &libraryServiceClient{cc} -} - -func (c *libraryServiceClient) CreateShelf(ctx context.Context, in *CreateShelfRequest, opts ...grpc.CallOption) (*Shelf, error) { - out := new(Shelf) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/CreateShelf", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) GetShelf(ctx context.Context, in *GetShelfRequest, opts ...grpc.CallOption) (*Shelf, error) { - out := new(Shelf) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/GetShelf", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) ListShelves(ctx context.Context, in *ListShelvesRequest, opts ...grpc.CallOption) (*ListShelvesResponse, error) { - out := new(ListShelvesResponse) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/ListShelves", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) DeleteShelf(ctx context.Context, in *DeleteShelfRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/DeleteShelf", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) MergeShelves(ctx context.Context, in *MergeShelvesRequest, opts ...grpc.CallOption) (*Shelf, error) { - out := new(Shelf) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/MergeShelves", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) CreateBook(ctx context.Context, in *CreateBookRequest, opts ...grpc.CallOption) (*Book, error) { - out := new(Book) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/CreateBook", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) GetBook(ctx context.Context, in *GetBookRequest, opts ...grpc.CallOption) (*Book, error) { - out := new(Book) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/GetBook", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) ListBooks(ctx context.Context, in *ListBooksRequest, opts ...grpc.CallOption) (*ListBooksResponse, error) { - out := new(ListBooksResponse) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/ListBooks", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) DeleteBook(ctx context.Context, in *DeleteBookRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/DeleteBook", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) UpdateBook(ctx context.Context, in *UpdateBookRequest, opts ...grpc.CallOption) (*Book, error) { - out := new(Book) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/UpdateBook", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *libraryServiceClient) MoveBook(ctx context.Context, in *MoveBookRequest, opts ...grpc.CallOption) (*Book, error) { - out := new(Book) - err := grpc.Invoke(ctx, "/google.example.library.v1.LibraryService/MoveBook", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for LibraryService service - -type LibraryServiceServer interface { - // Creates a shelf, and returns the new Shelf. - CreateShelf(context.Context, *CreateShelfRequest) (*Shelf, error) - // Gets a shelf. Returns NOT_FOUND if the shelf does not exist. - GetShelf(context.Context, *GetShelfRequest) (*Shelf, error) - // Lists shelves. The order is unspecified but deterministic. Newly created - // shelves will not necessarily be added to the end of this list. - ListShelves(context.Context, *ListShelvesRequest) (*ListShelvesResponse, error) - // Deletes a shelf. Returns NOT_FOUND if the shelf does not exist. - DeleteShelf(context.Context, *DeleteShelfRequest) (*google_protobuf1.Empty, error) - // Merges two shelves by adding all books from the shelf named - // `other_shelf_name` to shelf `name`, and deletes - // `other_shelf_name`. Returns the updated shelf. - // The book ids of the moved books may not be the same as the original books. - // - // Returns NOT_FOUND if either shelf does not exist. - // This call is a no-op if the specified shelves are the same. - MergeShelves(context.Context, *MergeShelvesRequest) (*Shelf, error) - // Creates a book, and returns the new Book. - CreateBook(context.Context, *CreateBookRequest) (*Book, error) - // Gets a book. Returns NOT_FOUND if the book does not exist. - GetBook(context.Context, *GetBookRequest) (*Book, error) - // Lists books in a shelf. The order is unspecified but deterministic. Newly - // created books will not necessarily be added to the end of this list. - // Returns NOT_FOUND if the shelf does not exist. - ListBooks(context.Context, *ListBooksRequest) (*ListBooksResponse, error) - // Deletes a book. Returns NOT_FOUND if the book does not exist. - DeleteBook(context.Context, *DeleteBookRequest) (*google_protobuf1.Empty, error) - // Updates a book. Returns INVALID_ARGUMENT if the name of the book - // is non-empty and does equal the previous name. - UpdateBook(context.Context, *UpdateBookRequest) (*Book, error) - // Moves a book to another shelf, and returns the new book. The book - // id of the new book may not be the same as the original book. - MoveBook(context.Context, *MoveBookRequest) (*Book, error) -} - -func RegisterLibraryServiceServer(s *grpc.Server, srv LibraryServiceServer) { - s.RegisterService(&_LibraryService_serviceDesc, srv) -} - -func _LibraryService_CreateShelf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateShelfRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).CreateShelf(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/CreateShelf", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).CreateShelf(ctx, req.(*CreateShelfRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_GetShelf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetShelfRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).GetShelf(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/GetShelf", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).GetShelf(ctx, req.(*GetShelfRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_ListShelves_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListShelvesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).ListShelves(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/ListShelves", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).ListShelves(ctx, req.(*ListShelvesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_DeleteShelf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteShelfRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).DeleteShelf(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/DeleteShelf", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).DeleteShelf(ctx, req.(*DeleteShelfRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_MergeShelves_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MergeShelvesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).MergeShelves(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/MergeShelves", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).MergeShelves(ctx, req.(*MergeShelvesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_CreateBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateBookRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).CreateBook(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/CreateBook", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).CreateBook(ctx, req.(*CreateBookRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_GetBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetBookRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).GetBook(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/GetBook", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).GetBook(ctx, req.(*GetBookRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_ListBooks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListBooksRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).ListBooks(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/ListBooks", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).ListBooks(ctx, req.(*ListBooksRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_DeleteBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteBookRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).DeleteBook(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/DeleteBook", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).DeleteBook(ctx, req.(*DeleteBookRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_UpdateBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateBookRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).UpdateBook(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/UpdateBook", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).UpdateBook(ctx, req.(*UpdateBookRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LibraryService_MoveBook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MoveBookRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LibraryServiceServer).MoveBook(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.example.library.v1.LibraryService/MoveBook", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LibraryServiceServer).MoveBook(ctx, req.(*MoveBookRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _LibraryService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.example.library.v1.LibraryService", - HandlerType: (*LibraryServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateShelf", - Handler: _LibraryService_CreateShelf_Handler, - }, - { - MethodName: "GetShelf", - Handler: _LibraryService_GetShelf_Handler, - }, - { - MethodName: "ListShelves", - Handler: _LibraryService_ListShelves_Handler, - }, - { - MethodName: "DeleteShelf", - Handler: _LibraryService_DeleteShelf_Handler, - }, - { - MethodName: "MergeShelves", - Handler: _LibraryService_MergeShelves_Handler, - }, - { - MethodName: "CreateBook", - Handler: _LibraryService_CreateBook_Handler, - }, - { - MethodName: "GetBook", - Handler: _LibraryService_GetBook_Handler, - }, - { - MethodName: "ListBooks", - Handler: _LibraryService_ListBooks_Handler, - }, - { - MethodName: "DeleteBook", - Handler: _LibraryService_DeleteBook_Handler, - }, - { - MethodName: "UpdateBook", - Handler: _LibraryService_UpdateBook_Handler, - }, - { - MethodName: "MoveBook", - Handler: _LibraryService_MoveBook_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/example/library/v1/library.proto", -} - -func init() { proto.RegisterFile("google/example/library/v1/library.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 838 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdb, 0x4e, 0xdb, 0x48, - 0x18, 0x96, 0x21, 0x81, 0xf0, 0x87, 0x53, 0x06, 0x84, 0xb2, 0x26, 0x2c, 0xd9, 0x11, 0x87, 0x6c, - 0x96, 0xb5, 0x05, 0x68, 0xf7, 0x22, 0x55, 0xa5, 0x8a, 0xb6, 0xe2, 0x06, 0xda, 0x28, 0x69, 0x6f, - 0x2a, 0xa4, 0xc8, 0x81, 0xc1, 0xb1, 0x48, 0x3c, 0xc6, 0x36, 0x11, 0x07, 0xf5, 0xa2, 0x95, 0x10, - 0x52, 0x6f, 0xfb, 0x0a, 0x7d, 0xa3, 0xbe, 0x42, 0x1f, 0xa4, 0x9a, 0x83, 0xc1, 0x24, 0x66, 0x9c, - 0x5e, 0xf4, 0xce, 0x33, 0xf3, 0xcd, 0xf7, 0x7f, 0xff, 0x61, 0xbe, 0x04, 0x36, 0x6d, 0x4a, 0xed, - 0x2e, 0x31, 0xc9, 0xa5, 0xd5, 0xf3, 0xba, 0xc4, 0xec, 0x3a, 0x6d, 0xdf, 0xf2, 0xaf, 0xcc, 0xfe, - 0x76, 0xf4, 0x69, 0x78, 0x3e, 0x0d, 0x29, 0xfa, 0x43, 0x00, 0x0d, 0x09, 0x34, 0xa2, 0xd3, 0xfe, - 0xb6, 0x5e, 0x92, 0x1c, 0x96, 0xe7, 0x98, 0x96, 0xeb, 0xd2, 0xd0, 0x0a, 0x1d, 0xea, 0x06, 0xe2, - 0xa2, 0xbe, 0x2c, 0x4f, 0xf9, 0xaa, 0x7d, 0x71, 0x6a, 0x92, 0x9e, 0x17, 0x4a, 0x56, 0x7c, 0x04, - 0x99, 0x3d, 0x4a, 0xcf, 0x10, 0x82, 0x8c, 0x6b, 0xf5, 0x48, 0x51, 0x2b, 0x6b, 0x95, 0xa9, 0x06, - 0xff, 0x46, 0x4b, 0x30, 0x61, 0x5d, 0x84, 0x1d, 0xea, 0x17, 0xc7, 0xf8, 0xae, 0x5c, 0xa1, 0x45, - 0xc8, 0x86, 0x4e, 0xd8, 0x25, 0xc5, 0x71, 0xbe, 0x2d, 0x16, 0x8c, 0xc1, 0x27, 0xd6, 0x49, 0x31, - 0x53, 0xd6, 0x2a, 0xb9, 0x06, 0xff, 0xc6, 0xdb, 0x90, 0x6d, 0x76, 0x48, 0xf7, 0x34, 0x91, 0x9e, - 0xd1, 0x74, 0x48, 0x8f, 0x48, 0x76, 0xb1, 0xc0, 0x07, 0x80, 0x5e, 0xfa, 0xc4, 0x0a, 0x09, 0xbf, - 0xd8, 0x20, 0xe7, 0x17, 0x24, 0x08, 0xd1, 0xff, 0x90, 0x0d, 0xd8, 0x9a, 0x13, 0xe4, 0x77, 0xca, - 0xc6, 0x93, 0xc5, 0x30, 0xc4, 0x3d, 0x01, 0xc7, 0xeb, 0x30, 0xb7, 0x4f, 0xc2, 0x47, 0x54, 0x09, - 0x52, 0x70, 0x1d, 0xd0, 0x81, 0x13, 0x70, 0x5c, 0x9f, 0x04, 0x11, 0x72, 0x19, 0xa6, 0x3c, 0xcb, - 0x26, 0xad, 0xc0, 0xb9, 0x16, 0xf0, 0x6c, 0x23, 0xc7, 0x36, 0x9a, 0xce, 0x35, 0x41, 0x2b, 0x00, - 0xfc, 0x30, 0xa4, 0x67, 0xc4, 0x95, 0x29, 0x70, 0xf8, 0x3b, 0xb6, 0x81, 0xaf, 0x60, 0xe1, 0x11, - 0x63, 0xe0, 0x51, 0x37, 0x20, 0xa8, 0x06, 0x93, 0x81, 0xd8, 0x2a, 0x6a, 0xe5, 0xf1, 0x91, 0x32, - 0x89, 0x2e, 0xa0, 0x0d, 0x98, 0x73, 0xc9, 0x65, 0xd8, 0x1a, 0x0a, 0x3b, 0xc3, 0xb6, 0xeb, 0xf7, - 0xa1, 0x2b, 0x80, 0x5e, 0x91, 0x2e, 0x19, 0xa8, 0x60, 0x52, 0xda, 0x4d, 0x58, 0x38, 0x24, 0xbe, - 0x4d, 0x06, 0xf2, 0x4e, 0x6a, 0x56, 0x05, 0xe6, 0x69, 0xd8, 0x21, 0x7e, 0x8b, 0xd7, 0xb5, 0xc5, - 0xcf, 0x45, 0xf4, 0x59, 0xbe, 0xcf, 0x63, 0xbd, 0x61, 0xa4, 0x47, 0x50, 0x10, 0x0d, 0x64, 0x73, - 0xa5, 0xa2, 0xdc, 0x85, 0x4c, 0x9b, 0xd2, 0x33, 0x4e, 0x93, 0xdf, 0x59, 0x55, 0x14, 0x82, 0x33, - 0x71, 0x30, 0x5e, 0x83, 0xd9, 0x7d, 0x12, 0xa6, 0x50, 0xe3, 0x36, 0xcc, 0xb3, 0xea, 0x33, 0x98, - 0x32, 0xab, 0x47, 0x1d, 0x1e, 0x53, 0x76, 0x78, 0x7c, 0xb0, 0xc3, 0x3e, 0x14, 0x62, 0x31, 0x64, - 0x7f, 0xff, 0x83, 0x2c, 0x93, 0x19, 0x75, 0x37, 0x35, 0x29, 0x81, 0x1e, 0xb9, 0xb5, 0x47, 0x50, - 0x78, 0xef, 0x9d, 0xfc, 0xae, 0xda, 0x6e, 0x42, 0x41, 0x0c, 0x4e, 0x5a, 0x79, 0xdf, 0xc2, 0xdc, - 0x21, 0xed, 0xa7, 0x8a, 0x18, 0x79, 0x66, 0x76, 0xbe, 0xe5, 0x61, 0xf6, 0x40, 0x68, 0x6a, 0x12, - 0xbf, 0xef, 0x1c, 0x13, 0x74, 0x0d, 0xf9, 0x98, 0x0f, 0xa0, 0x7f, 0x15, 0x29, 0x0c, 0xfb, 0x85, - 0x9e, 0xfa, 0xac, 0xb0, 0xfe, 0xf9, 0xfb, 0x8f, 0xaf, 0x63, 0x8b, 0x38, 0xcf, 0x9c, 0x56, 0x3e, - 0xb1, 0x9a, 0x70, 0x0d, 0xd4, 0x87, 0x5c, 0xe4, 0x1a, 0xa8, 0xaa, 0x60, 0x1a, 0xb0, 0x96, 0x11, - 0xa2, 0x96, 0x78, 0xd4, 0x25, 0xb4, 0xc8, 0xa2, 0xde, 0xb0, 0x8a, 0x3c, 0x97, 0xb1, 0xcd, 0xea, - 0x47, 0xf4, 0x49, 0x83, 0x7c, 0xcc, 0x35, 0x94, 0x49, 0x0f, 0xfb, 0x95, 0x6e, 0x8c, 0x0a, 0x17, - 0xc3, 0x8a, 0x17, 0xb8, 0x98, 0x19, 0x14, 0x2f, 0x01, 0xf2, 0x21, 0x1f, 0x73, 0x0f, 0xa5, 0x84, - 0x61, 0x97, 0xd1, 0x97, 0x22, 0x78, 0xf4, 0x63, 0x63, 0xbc, 0x66, 0x3f, 0x36, 0x51, 0xde, 0xd5, - 0xe4, 0xbc, 0xef, 0x34, 0x98, 0x8e, 0x1b, 0x11, 0x52, 0x65, 0x92, 0xe0, 0x58, 0x23, 0x14, 0x7e, - 0x9d, 0x0b, 0x58, 0xc5, 0x7a, 0x92, 0x80, 0x5a, 0x8f, 0x71, 0xd6, 0xb4, 0x2a, 0xba, 0xd5, 0x00, - 0x1e, 0xdc, 0x0b, 0x6d, 0xa5, 0x4e, 0x5d, 0xec, 0x0d, 0xe8, 0x69, 0xcf, 0x0c, 0x57, 0xb8, 0x08, - 0x9c, 0x2c, 0xc2, 0xe4, 0x56, 0x50, 0xe3, 0x4f, 0x11, 0xdd, 0xc0, 0xa4, 0xb4, 0x39, 0xf4, 0xb7, - 0x7a, 0x00, 0x7f, 0x49, 0xc0, 0x1a, 0x17, 0xf0, 0x27, 0x2a, 0x25, 0x08, 0x10, 0xf1, 0x59, 0x3b, - 0xbe, 0x68, 0x30, 0x75, 0x6f, 0x6d, 0xe8, 0x9f, 0x94, 0xa9, 0x8a, 0x9b, 0xac, 0xbe, 0x35, 0x1a, - 0x58, 0x0e, 0x20, 0xe6, 0x72, 0x4a, 0x48, 0x51, 0x0f, 0x74, 0x09, 0xf0, 0x60, 0x4a, 0xca, 0x86, - 0x0c, 0x79, 0xd7, 0x93, 0xd3, 0x28, 0xcb, 0x50, 0x55, 0x97, 0xe1, 0x4e, 0x03, 0x78, 0x70, 0x5b, - 0x65, 0xe8, 0x21, 0x53, 0x4e, 0x6f, 0x45, 0x95, 0x6b, 0x58, 0xd3, 0x95, 0x1a, 0xe4, 0x34, 0xdc, - 0x6a, 0x90, 0x8b, 0x0c, 0x57, 0x69, 0x48, 0x03, 0xae, 0x9c, 0xae, 0x62, 0x8b, 0xab, 0xd8, 0xc0, - 0x7f, 0x29, 0x55, 0xf4, 0x68, 0x9f, 0xbd, 0x8e, 0xbd, 0x73, 0x58, 0x39, 0xa6, 0xbd, 0xa7, 0x39, - 0xf7, 0xa6, 0xa5, 0x89, 0xd7, 0x59, 0xbd, 0xeb, 0xda, 0x87, 0x17, 0x12, 0x6a, 0xd3, 0xae, 0xe5, - 0xda, 0x06, 0xf5, 0x6d, 0xd3, 0x26, 0x2e, 0xef, 0x86, 0x29, 0x8e, 0x2c, 0xcf, 0x09, 0x12, 0xfe, - 0xfb, 0x3e, 0x93, 0x9f, 0xed, 0x09, 0x0e, 0xde, 0xfd, 0x19, 0x00, 0x00, 0xff, 0xff, 0x2b, 0x13, - 0xc5, 0x7e, 0x27, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/firestore/admin/v1beta1/firestore_admin.pb.go b/vendor/google.golang.org/genproto/googleapis/firestore/admin/v1beta1/firestore_admin.pb.go deleted file mode 100644 index 13914e22..00000000 --- a/vendor/google.golang.org/genproto/googleapis/firestore/admin/v1beta1/firestore_admin.pb.go +++ /dev/null @@ -1,583 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/firestore/admin/v1beta1/firestore_admin.proto - -/* -Package admin is a generated protocol buffer package. - -It is generated from these files: - google/firestore/admin/v1beta1/firestore_admin.proto - google/firestore/admin/v1beta1/index.proto - -It has these top-level messages: - IndexOperationMetadata - Progress - CreateIndexRequest - GetIndexRequest - ListIndexesRequest - DeleteIndexRequest - ListIndexesResponse - IndexField - Index -*/ -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The type of index operation. -type IndexOperationMetadata_OperationType int32 - -const ( - // Unspecified. Never set by server. - IndexOperationMetadata_OPERATION_TYPE_UNSPECIFIED IndexOperationMetadata_OperationType = 0 - // The operation is creating the index. Initiated by a `CreateIndex` call. - IndexOperationMetadata_CREATING_INDEX IndexOperationMetadata_OperationType = 1 -) - -var IndexOperationMetadata_OperationType_name = map[int32]string{ - 0: "OPERATION_TYPE_UNSPECIFIED", - 1: "CREATING_INDEX", -} -var IndexOperationMetadata_OperationType_value = map[string]int32{ - "OPERATION_TYPE_UNSPECIFIED": 0, - "CREATING_INDEX": 1, -} - -func (x IndexOperationMetadata_OperationType) String() string { - return proto.EnumName(IndexOperationMetadata_OperationType_name, int32(x)) -} -func (IndexOperationMetadata_OperationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 0} -} - -// Metadata for index operations. This metadata populates -// the metadata field of [google.longrunning.Operation][google.longrunning.Operation]. -type IndexOperationMetadata struct { - // The time that work began on the operation. - StartTime *google_protobuf3.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The time the operation ended, either successfully or otherwise. Unset if - // the operation is still active. - EndTime *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // The index resource that this operation is acting on. For example: - // `projects/{project_id}/databases/{database_id}/indexes/{index_id}` - Index string `protobuf:"bytes,3,opt,name=index" json:"index,omitempty"` - // The type of index operation. - OperationType IndexOperationMetadata_OperationType `protobuf:"varint,4,opt,name=operation_type,json=operationType,enum=google.firestore.admin.v1beta1.IndexOperationMetadata_OperationType" json:"operation_type,omitempty"` - // True if the [google.longrunning.Operation] was cancelled. If the - // cancellation is in progress, cancelled will be true but - // [google.longrunning.Operation.done][google.longrunning.Operation.done] will be false. - Cancelled bool `protobuf:"varint,5,opt,name=cancelled" json:"cancelled,omitempty"` - // Progress of the existing operation, measured in number of documents. - DocumentProgress *Progress `protobuf:"bytes,6,opt,name=document_progress,json=documentProgress" json:"document_progress,omitempty"` -} - -func (m *IndexOperationMetadata) Reset() { *m = IndexOperationMetadata{} } -func (m *IndexOperationMetadata) String() string { return proto.CompactTextString(m) } -func (*IndexOperationMetadata) ProtoMessage() {} -func (*IndexOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *IndexOperationMetadata) GetStartTime() *google_protobuf3.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *IndexOperationMetadata) GetEndTime() *google_protobuf3.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *IndexOperationMetadata) GetIndex() string { - if m != nil { - return m.Index - } - return "" -} - -func (m *IndexOperationMetadata) GetOperationType() IndexOperationMetadata_OperationType { - if m != nil { - return m.OperationType - } - return IndexOperationMetadata_OPERATION_TYPE_UNSPECIFIED -} - -func (m *IndexOperationMetadata) GetCancelled() bool { - if m != nil { - return m.Cancelled - } - return false -} - -func (m *IndexOperationMetadata) GetDocumentProgress() *Progress { - if m != nil { - return m.DocumentProgress - } - return nil -} - -// Measures the progress of a particular metric. -type Progress struct { - // An estimate of how much work has been completed. Note that this may be - // greater than `work_estimated`. - WorkCompleted int64 `protobuf:"varint,1,opt,name=work_completed,json=workCompleted" json:"work_completed,omitempty"` - // An estimate of how much work needs to be performed. Zero if the - // work estimate is unavailable. May change as work progresses. - WorkEstimated int64 `protobuf:"varint,2,opt,name=work_estimated,json=workEstimated" json:"work_estimated,omitempty"` -} - -func (m *Progress) Reset() { *m = Progress{} } -func (m *Progress) String() string { return proto.CompactTextString(m) } -func (*Progress) ProtoMessage() {} -func (*Progress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Progress) GetWorkCompleted() int64 { - if m != nil { - return m.WorkCompleted - } - return 0 -} - -func (m *Progress) GetWorkEstimated() int64 { - if m != nil { - return m.WorkEstimated - } - return 0 -} - -// The request for [FirestoreAdmin.CreateIndex][google.firestore.admin.v1beta1.FirestoreAdmin.CreateIndex]. -type CreateIndexRequest struct { - // The name of the database this index will apply to. For example: - // `projects/{project_id}/databases/{database_id}` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The index to create. The name and state fields are output only and will be - // ignored. Certain single field indexes cannot be created or deleted. - Index *Index `protobuf:"bytes,2,opt,name=index" json:"index,omitempty"` -} - -func (m *CreateIndexRequest) Reset() { *m = CreateIndexRequest{} } -func (m *CreateIndexRequest) String() string { return proto.CompactTextString(m) } -func (*CreateIndexRequest) ProtoMessage() {} -func (*CreateIndexRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *CreateIndexRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateIndexRequest) GetIndex() *Index { - if m != nil { - return m.Index - } - return nil -} - -// The request for [FirestoreAdmin.GetIndex][google.firestore.admin.v1beta1.FirestoreAdmin.GetIndex]. -type GetIndexRequest struct { - // The name of the index. For example: - // `projects/{project_id}/databases/{database_id}/indexes/{index_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetIndexRequest) Reset() { *m = GetIndexRequest{} } -func (m *GetIndexRequest) String() string { return proto.CompactTextString(m) } -func (*GetIndexRequest) ProtoMessage() {} -func (*GetIndexRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *GetIndexRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request for [FirestoreAdmin.ListIndexes][google.firestore.admin.v1beta1.FirestoreAdmin.ListIndexes]. -type ListIndexesRequest struct { - // The database name. For example: - // `projects/{project_id}/databases/{database_id}` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // The standard List page size. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The standard List page token. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListIndexesRequest) Reset() { *m = ListIndexesRequest{} } -func (m *ListIndexesRequest) String() string { return proto.CompactTextString(m) } -func (*ListIndexesRequest) ProtoMessage() {} -func (*ListIndexesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListIndexesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListIndexesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListIndexesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListIndexesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The request for [FirestoreAdmin.DeleteIndex][google.firestore.admin.v1beta1.FirestoreAdmin.DeleteIndex]. -type DeleteIndexRequest struct { - // The index name. For example: - // `projects/{project_id}/databases/{database_id}/indexes/{index_id}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteIndexRequest) Reset() { *m = DeleteIndexRequest{} } -func (m *DeleteIndexRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteIndexRequest) ProtoMessage() {} -func (*DeleteIndexRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *DeleteIndexRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The response for [FirestoreAdmin.ListIndexes][google.firestore.admin.v1beta1.FirestoreAdmin.ListIndexes]. -type ListIndexesResponse struct { - // The indexes. - Indexes []*Index `protobuf:"bytes,1,rep,name=indexes" json:"indexes,omitempty"` - // The standard List next-page token. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListIndexesResponse) Reset() { *m = ListIndexesResponse{} } -func (m *ListIndexesResponse) String() string { return proto.CompactTextString(m) } -func (*ListIndexesResponse) ProtoMessage() {} -func (*ListIndexesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ListIndexesResponse) GetIndexes() []*Index { - if m != nil { - return m.Indexes - } - return nil -} - -func (m *ListIndexesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func init() { - proto.RegisterType((*IndexOperationMetadata)(nil), "google.firestore.admin.v1beta1.IndexOperationMetadata") - proto.RegisterType((*Progress)(nil), "google.firestore.admin.v1beta1.Progress") - proto.RegisterType((*CreateIndexRequest)(nil), "google.firestore.admin.v1beta1.CreateIndexRequest") - proto.RegisterType((*GetIndexRequest)(nil), "google.firestore.admin.v1beta1.GetIndexRequest") - proto.RegisterType((*ListIndexesRequest)(nil), "google.firestore.admin.v1beta1.ListIndexesRequest") - proto.RegisterType((*DeleteIndexRequest)(nil), "google.firestore.admin.v1beta1.DeleteIndexRequest") - proto.RegisterType((*ListIndexesResponse)(nil), "google.firestore.admin.v1beta1.ListIndexesResponse") - proto.RegisterEnum("google.firestore.admin.v1beta1.IndexOperationMetadata_OperationType", IndexOperationMetadata_OperationType_name, IndexOperationMetadata_OperationType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for FirestoreAdmin service - -type FirestoreAdminClient interface { - // Creates the specified index. - // A newly created index's initial state is `CREATING`. On completion of the - // returned [google.longrunning.Operation][google.longrunning.Operation], the state will be `READY`. - // If the index already exists, the call will return an `ALREADY_EXISTS` - // status. - // - // During creation, the process could result in an error, in which case the - // index will move to the `ERROR` state. The process can be recovered by - // fixing the data that caused the error, removing the index with - // [delete][google.firestore.admin.v1beta1.FirestoreAdmin.DeleteIndex], then re-creating the index with - // [create][google.firestore.admin.v1beta1.FirestoreAdmin.CreateIndex]. - // - // Indexes with a single field cannot be created. - CreateIndex(ctx context.Context, in *CreateIndexRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Lists the indexes that match the specified filters. - ListIndexes(ctx context.Context, in *ListIndexesRequest, opts ...grpc.CallOption) (*ListIndexesResponse, error) - // Gets an index. - GetIndex(ctx context.Context, in *GetIndexRequest, opts ...grpc.CallOption) (*Index, error) - // Deletes an index. - DeleteIndex(ctx context.Context, in *DeleteIndexRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type firestoreAdminClient struct { - cc *grpc.ClientConn -} - -func NewFirestoreAdminClient(cc *grpc.ClientConn) FirestoreAdminClient { - return &firestoreAdminClient{cc} -} - -func (c *firestoreAdminClient) CreateIndex(ctx context.Context, in *CreateIndexRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.firestore.admin.v1beta1.FirestoreAdmin/CreateIndex", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreAdminClient) ListIndexes(ctx context.Context, in *ListIndexesRequest, opts ...grpc.CallOption) (*ListIndexesResponse, error) { - out := new(ListIndexesResponse) - err := grpc.Invoke(ctx, "/google.firestore.admin.v1beta1.FirestoreAdmin/ListIndexes", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreAdminClient) GetIndex(ctx context.Context, in *GetIndexRequest, opts ...grpc.CallOption) (*Index, error) { - out := new(Index) - err := grpc.Invoke(ctx, "/google.firestore.admin.v1beta1.FirestoreAdmin/GetIndex", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreAdminClient) DeleteIndex(ctx context.Context, in *DeleteIndexRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.firestore.admin.v1beta1.FirestoreAdmin/DeleteIndex", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for FirestoreAdmin service - -type FirestoreAdminServer interface { - // Creates the specified index. - // A newly created index's initial state is `CREATING`. On completion of the - // returned [google.longrunning.Operation][google.longrunning.Operation], the state will be `READY`. - // If the index already exists, the call will return an `ALREADY_EXISTS` - // status. - // - // During creation, the process could result in an error, in which case the - // index will move to the `ERROR` state. The process can be recovered by - // fixing the data that caused the error, removing the index with - // [delete][google.firestore.admin.v1beta1.FirestoreAdmin.DeleteIndex], then re-creating the index with - // [create][google.firestore.admin.v1beta1.FirestoreAdmin.CreateIndex]. - // - // Indexes with a single field cannot be created. - CreateIndex(context.Context, *CreateIndexRequest) (*google_longrunning.Operation, error) - // Lists the indexes that match the specified filters. - ListIndexes(context.Context, *ListIndexesRequest) (*ListIndexesResponse, error) - // Gets an index. - GetIndex(context.Context, *GetIndexRequest) (*Index, error) - // Deletes an index. - DeleteIndex(context.Context, *DeleteIndexRequest) (*google_protobuf2.Empty, error) -} - -func RegisterFirestoreAdminServer(s *grpc.Server, srv FirestoreAdminServer) { - s.RegisterService(&_FirestoreAdmin_serviceDesc, srv) -} - -func _FirestoreAdmin_CreateIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateIndexRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreAdminServer).CreateIndex(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.admin.v1beta1.FirestoreAdmin/CreateIndex", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreAdminServer).CreateIndex(ctx, req.(*CreateIndexRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FirestoreAdmin_ListIndexes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListIndexesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreAdminServer).ListIndexes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.admin.v1beta1.FirestoreAdmin/ListIndexes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreAdminServer).ListIndexes(ctx, req.(*ListIndexesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FirestoreAdmin_GetIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetIndexRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreAdminServer).GetIndex(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.admin.v1beta1.FirestoreAdmin/GetIndex", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreAdminServer).GetIndex(ctx, req.(*GetIndexRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FirestoreAdmin_DeleteIndex_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteIndexRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreAdminServer).DeleteIndex(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.admin.v1beta1.FirestoreAdmin/DeleteIndex", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreAdminServer).DeleteIndex(ctx, req.(*DeleteIndexRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _FirestoreAdmin_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.firestore.admin.v1beta1.FirestoreAdmin", - HandlerType: (*FirestoreAdminServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateIndex", - Handler: _FirestoreAdmin_CreateIndex_Handler, - }, - { - MethodName: "ListIndexes", - Handler: _FirestoreAdmin_ListIndexes_Handler, - }, - { - MethodName: "GetIndex", - Handler: _FirestoreAdmin_GetIndex_Handler, - }, - { - MethodName: "DeleteIndex", - Handler: _FirestoreAdmin_DeleteIndex_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/firestore/admin/v1beta1/firestore_admin.proto", -} - -func init() { - proto.RegisterFile("google/firestore/admin/v1beta1/firestore_admin.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 841 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xdd, 0x6e, 0xe3, 0x44, - 0x14, 0xc6, 0xe9, 0xcf, 0x26, 0xa7, 0x6a, 0xb6, 0xcc, 0xa2, 0x2a, 0xf2, 0xfe, 0x10, 0x19, 0x8a, - 0xa2, 0x5c, 0xd8, 0x34, 0x0b, 0x12, 0xcb, 0x0a, 0xad, 0x5a, 0xd7, 0xad, 0x22, 0x41, 0x1b, 0xb9, - 0x59, 0xb4, 0x70, 0x63, 0x4d, 0xe3, 0x53, 0xcb, 0xd4, 0x9e, 0x31, 0x9e, 0x09, 0x6c, 0x17, 0x2d, - 0x42, 0xbc, 0xc2, 0xde, 0xee, 0x0d, 0x5c, 0x72, 0x81, 0x78, 0x0b, 0x1e, 0x80, 0x57, 0xe0, 0x41, - 0x90, 0xc7, 0x9e, 0x34, 0xd9, 0x6e, 0x71, 0x7b, 0x97, 0xf3, 0xcd, 0xf9, 0xbe, 0xf3, 0x9d, 0x39, - 0xc7, 0x13, 0xf8, 0x24, 0xe2, 0x3c, 0x4a, 0xd0, 0x39, 0x8d, 0x73, 0x14, 0x92, 0xe7, 0xe8, 0xd0, - 0x30, 0x8d, 0x99, 0xf3, 0xc3, 0xf6, 0x09, 0x4a, 0xba, 0x7d, 0x81, 0x07, 0x0a, 0xb7, 0xb3, 0x9c, - 0x4b, 0x4e, 0x1e, 0x94, 0x2c, 0x7b, 0x76, 0x6a, 0x97, 0xa7, 0x15, 0xcb, 0xbc, 0x57, 0xa9, 0xd2, - 0x2c, 0x76, 0x28, 0x63, 0x5c, 0x52, 0x19, 0x73, 0x26, 0x4a, 0xb6, 0xd9, 0xaf, 0xa9, 0x19, 0xb3, - 0x10, 0x9f, 0x57, 0xb9, 0x1f, 0x54, 0xb9, 0x09, 0x67, 0x51, 0x3e, 0x65, 0x2c, 0x66, 0x91, 0xc3, - 0x33, 0xcc, 0x17, 0x04, 0xef, 0x56, 0x49, 0x2a, 0x3a, 0x99, 0x9e, 0x3a, 0x98, 0x66, 0xf2, 0xbc, - 0x3a, 0x7c, 0xff, 0xcd, 0x43, 0x19, 0xa7, 0x28, 0x24, 0x4d, 0xb3, 0x32, 0xc1, 0xfa, 0x7b, 0x09, - 0x36, 0x87, 0x45, 0xc9, 0x23, 0xad, 0xfb, 0x15, 0x4a, 0x1a, 0x52, 0x49, 0xc9, 0x23, 0x00, 0x21, - 0x69, 0x2e, 0x83, 0x82, 0xd3, 0x31, 0xba, 0x46, 0x6f, 0x6d, 0x60, 0xda, 0x55, 0xf3, 0x5a, 0xd0, - 0x1e, 0x6b, 0x41, 0xbf, 0xa5, 0xb2, 0x8b, 0x98, 0x7c, 0x0a, 0x4d, 0x64, 0x61, 0x49, 0x6c, 0xd4, - 0x12, 0x6f, 0x21, 0x0b, 0x15, 0xed, 0x3d, 0x58, 0x51, 0xed, 0x77, 0x96, 0xba, 0x46, 0xaf, 0xe5, - 0x97, 0x01, 0x39, 0x83, 0xf6, 0xac, 0xe9, 0x40, 0x9e, 0x67, 0xd8, 0x59, 0xee, 0x1a, 0xbd, 0xf6, - 0x60, 0xcf, 0xfe, 0xff, 0x41, 0xd8, 0x6f, 0xef, 0xcb, 0x9e, 0x21, 0xe3, 0xf3, 0x0c, 0xfd, 0x75, - 0x3e, 0x1f, 0x92, 0x7b, 0xd0, 0x9a, 0x50, 0x36, 0xc1, 0x24, 0xc1, 0xb0, 0xb3, 0xd2, 0x35, 0x7a, - 0x4d, 0xff, 0x02, 0x20, 0x4f, 0xe1, 0xdd, 0x90, 0x4f, 0xa6, 0x29, 0x32, 0x19, 0x64, 0x39, 0x8f, - 0x72, 0x14, 0xa2, 0xb3, 0xaa, 0x1a, 0xec, 0xd5, 0xb9, 0x19, 0x55, 0xf9, 0xfe, 0x86, 0x96, 0xd0, - 0x88, 0xe5, 0xc2, 0xfa, 0x82, 0x29, 0xf2, 0x00, 0xcc, 0xa3, 0x91, 0xe7, 0xef, 0x8c, 0x87, 0x47, - 0x87, 0xc1, 0xf8, 0x9b, 0x91, 0x17, 0x3c, 0x3d, 0x3c, 0x1e, 0x79, 0xee, 0x70, 0x7f, 0xe8, 0xed, - 0x6d, 0xbc, 0x43, 0x08, 0xb4, 0x5d, 0xdf, 0xdb, 0x19, 0x0f, 0x0f, 0x0f, 0x82, 0xe1, 0xe1, 0x9e, - 0xf7, 0x6c, 0xc3, 0xb0, 0x9e, 0x41, 0x53, 0x0b, 0x92, 0x2d, 0x68, 0xff, 0xc8, 0xf3, 0xb3, 0x60, - 0xc2, 0xd3, 0x2c, 0x41, 0x89, 0xa1, 0x1a, 0xdf, 0x92, 0xbf, 0x5e, 0xa0, 0xae, 0x06, 0x67, 0x69, - 0x28, 0x64, 0x9c, 0xd2, 0x22, 0xad, 0x71, 0x91, 0xe6, 0x69, 0xd0, 0x8a, 0x81, 0xb8, 0x39, 0x52, - 0x89, 0xea, 0x42, 0x7d, 0xfc, 0x7e, 0x8a, 0x42, 0x92, 0x4d, 0x58, 0xcd, 0x68, 0x8e, 0x4c, 0x2a, - 0xed, 0x96, 0x5f, 0x45, 0xe4, 0xb1, 0x1e, 0x62, 0x39, 0xf8, 0xad, 0x6b, 0x4d, 0xa9, 0x9a, 0xb5, - 0xb5, 0x05, 0xb7, 0x0f, 0x50, 0x2e, 0xd4, 0x21, 0xb0, 0xcc, 0x68, 0xb5, 0x80, 0x2d, 0x5f, 0xfd, - 0xb6, 0x7e, 0x31, 0x80, 0x7c, 0x19, 0x8b, 0x32, 0x11, 0x45, 0x9d, 0xa5, 0x4d, 0x58, 0x3d, 0x8d, - 0x13, 0x89, 0xb9, 0xf2, 0xd4, 0xf2, 0xab, 0x88, 0xdc, 0x85, 0x56, 0x46, 0x23, 0x0c, 0x44, 0xfc, - 0x02, 0xd5, 0xce, 0xad, 0xf8, 0xcd, 0x02, 0x38, 0x8e, 0x5f, 0x20, 0xb9, 0x0f, 0xa0, 0x0e, 0x25, - 0x3f, 0x43, 0xa6, 0x56, 0xae, 0xe5, 0xab, 0xf4, 0x71, 0x01, 0x58, 0x3d, 0x20, 0x7b, 0x58, 0x5c, - 0x63, 0xad, 0xd9, 0x9f, 0xe1, 0xce, 0x82, 0x57, 0x91, 0x71, 0x26, 0x90, 0x3c, 0x81, 0x5b, 0x71, - 0x09, 0x75, 0x8c, 0xee, 0xd2, 0xf5, 0x6f, 0x4a, 0xb3, 0xc8, 0x47, 0x70, 0x9b, 0xe1, 0x73, 0x19, - 0xcc, 0xb9, 0x2c, 0xdb, 0x5b, 0x2f, 0xe0, 0x91, 0x76, 0x3a, 0x78, 0xbd, 0x02, 0xed, 0x7d, 0x2d, - 0xb9, 0x53, 0x28, 0x92, 0xdf, 0x0c, 0x58, 0x9b, 0x1b, 0x29, 0x19, 0xd4, 0x95, 0xbe, 0x3c, 0x7f, - 0xf3, 0xbe, 0xe6, 0xcc, 0xbd, 0x4e, 0x17, 0xdf, 0x96, 0xf5, 0xe4, 0xd7, 0x7f, 0xfe, 0x7d, 0xd5, - 0x78, 0x64, 0x7d, 0x3c, 0x7b, 0xd9, 0x7e, 0x2a, 0xa7, 0xf1, 0x45, 0x96, 0xf3, 0xef, 0x70, 0x22, - 0x85, 0xd3, 0x77, 0x8a, 0xef, 0xf1, 0x84, 0x0a, 0x14, 0x4e, 0xff, 0xa5, 0x53, 0xf5, 0xf5, 0x79, - 0xf5, 0xd9, 0xff, 0x65, 0xc0, 0xda, 0xdc, 0xbd, 0xd5, 0x7b, 0xbc, 0xbc, 0x10, 0xe6, 0xc3, 0x1b, - 0x71, 0xca, 0xc1, 0x58, 0x9f, 0x29, 0xe7, 0x03, 0x72, 0x63, 0xe7, 0xe4, 0xb5, 0x01, 0x4d, 0xbd, - 0xbe, 0xc4, 0xa9, 0xab, 0xfd, 0xc6, 0xa2, 0x9b, 0xd7, 0x9b, 0xff, 0xdb, 0xec, 0x15, 0x6b, 0x76, - 0x85, 0x39, 0xed, 0xcd, 0xe9, 0xbf, 0x24, 0xaf, 0x0c, 0x58, 0x9b, 0xdb, 0xd9, 0xfa, 0x1b, 0xbd, - 0xbc, 0xe0, 0xe6, 0xe6, 0xa5, 0x77, 0xdc, 0x2b, 0xfe, 0x6e, 0xb4, 0xab, 0xfe, 0x8d, 0x5d, 0xed, - 0xfe, 0x69, 0x80, 0x35, 0xe1, 0x69, 0x8d, 0x97, 0xdd, 0x3b, 0x8b, 0x2b, 0x3c, 0x2a, 0xca, 0x8f, - 0x8c, 0x6f, 0xdd, 0x8a, 0x16, 0xf1, 0x84, 0xb2, 0xc8, 0xe6, 0x79, 0xe4, 0x44, 0xc8, 0x94, 0x39, - 0xa7, 0x3c, 0xa2, 0x59, 0x2c, 0xae, 0xfa, 0xb7, 0x7d, 0xac, 0xa2, 0xdf, 0x1b, 0xcb, 0x07, 0xee, - 0xfe, 0xf1, 0x1f, 0x8d, 0x0f, 0x0f, 0x4a, 0x31, 0x37, 0xe1, 0xd3, 0xd0, 0x9e, 0x15, 0xb4, 0x55, - 0x45, 0xfb, 0xeb, 0xed, 0xdd, 0x82, 0x73, 0xb2, 0xaa, 0xd4, 0x1f, 0xfe, 0x17, 0x00, 0x00, 0xff, - 0xff, 0x6b, 0x78, 0x44, 0x07, 0x3e, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/firestore/admin/v1beta1/index.pb.go b/vendor/google.golang.org/genproto/googleapis/firestore/admin/v1beta1/index.pb.go deleted file mode 100644 index 609b679c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/firestore/admin/v1beta1/index.pb.go +++ /dev/null @@ -1,205 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/firestore/admin/v1beta1/index.proto - -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The mode determines how a field is indexed. -type IndexField_Mode int32 - -const ( - // The mode is unspecified. - IndexField_MODE_UNSPECIFIED IndexField_Mode = 0 - // The field's values are indexed so as to support sequencing in - // ascending order and also query by <, >, <=, >=, and =. - IndexField_ASCENDING IndexField_Mode = 2 - // The field's values are indexed so as to support sequencing in - // descending order and also query by <, >, <=, >=, and =. - IndexField_DESCENDING IndexField_Mode = 3 -) - -var IndexField_Mode_name = map[int32]string{ - 0: "MODE_UNSPECIFIED", - 2: "ASCENDING", - 3: "DESCENDING", -} -var IndexField_Mode_value = map[string]int32{ - "MODE_UNSPECIFIED": 0, - "ASCENDING": 2, - "DESCENDING": 3, -} - -func (x IndexField_Mode) String() string { - return proto.EnumName(IndexField_Mode_name, int32(x)) -} -func (IndexField_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -// The state of an index. During index creation, an index will be in the -// `CREATING` state. If the index is created successfully, it will transition -// to the `READY` state. If the index is not able to be created, it will -// transition to the `ERROR` state. -type Index_State int32 - -const ( - // The state is unspecified. - Index_STATE_UNSPECIFIED Index_State = 0 - // The index is being created. - // There is an active long-running operation for the index. - // The index is updated when writing a document. - // Some index data may exist. - Index_CREATING Index_State = 3 - // The index is ready to be used. - // The index is updated when writing a document. - // The index is fully populated from all stored documents it applies to. - Index_READY Index_State = 2 - // The index was being created, but something went wrong. - // There is no active long-running operation for the index, - // and the most recently finished long-running operation failed. - // The index is not updated when writing a document. - // Some index data may exist. - Index_ERROR Index_State = 5 -) - -var Index_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 3: "CREATING", - 2: "READY", - 5: "ERROR", -} -var Index_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "CREATING": 3, - "READY": 2, - "ERROR": 5, -} - -func (x Index_State) String() string { - return proto.EnumName(Index_State_name, int32(x)) -} -func (Index_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } - -// A field of an index. -type IndexField struct { - // The path of the field. Must match the field path specification described - // by [google.firestore.v1beta1.Document.fields][fields]. - // Special field path `__name__` may be used by itself or at the end of a - // path. `__type__` may be used only at the end of path. - FieldPath string `protobuf:"bytes,1,opt,name=field_path,json=fieldPath" json:"field_path,omitempty"` - // The field's mode. - Mode IndexField_Mode `protobuf:"varint,2,opt,name=mode,enum=google.firestore.admin.v1beta1.IndexField_Mode" json:"mode,omitempty"` -} - -func (m *IndexField) Reset() { *m = IndexField{} } -func (m *IndexField) String() string { return proto.CompactTextString(m) } -func (*IndexField) ProtoMessage() {} -func (*IndexField) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *IndexField) GetFieldPath() string { - if m != nil { - return m.FieldPath - } - return "" -} - -func (m *IndexField) GetMode() IndexField_Mode { - if m != nil { - return m.Mode - } - return IndexField_MODE_UNSPECIFIED -} - -// An index definition. -type Index struct { - // The resource name of the index. - // Output only. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The collection ID to which this index applies. Required. - CollectionId string `protobuf:"bytes,2,opt,name=collection_id,json=collectionId" json:"collection_id,omitempty"` - // The fields to index. - Fields []*IndexField `protobuf:"bytes,3,rep,name=fields" json:"fields,omitempty"` - // The state of the index. - // Output only. - State Index_State `protobuf:"varint,6,opt,name=state,enum=google.firestore.admin.v1beta1.Index_State" json:"state,omitempty"` -} - -func (m *Index) Reset() { *m = Index{} } -func (m *Index) String() string { return proto.CompactTextString(m) } -func (*Index) ProtoMessage() {} -func (*Index) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *Index) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Index) GetCollectionId() string { - if m != nil { - return m.CollectionId - } - return "" -} - -func (m *Index) GetFields() []*IndexField { - if m != nil { - return m.Fields - } - return nil -} - -func (m *Index) GetState() Index_State { - if m != nil { - return m.State - } - return Index_STATE_UNSPECIFIED -} - -func init() { - proto.RegisterType((*IndexField)(nil), "google.firestore.admin.v1beta1.IndexField") - proto.RegisterType((*Index)(nil), "google.firestore.admin.v1beta1.Index") - proto.RegisterEnum("google.firestore.admin.v1beta1.IndexField_Mode", IndexField_Mode_name, IndexField_Mode_value) - proto.RegisterEnum("google.firestore.admin.v1beta1.Index_State", Index_State_name, Index_State_value) -} - -func init() { proto.RegisterFile("google/firestore/admin/v1beta1/index.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 422 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x52, 0x4f, 0x8b, 0x13, 0x31, - 0x1c, 0x75, 0xa6, 0x9d, 0xe2, 0xfc, 0xdc, 0x5d, 0xc6, 0xa0, 0x50, 0x44, 0xa5, 0x8c, 0x1e, 0xca, - 0x0a, 0x19, 0xba, 0x1e, 0xf7, 0x34, 0xff, 0x5a, 0xe6, 0xb0, 0xdd, 0x92, 0xa9, 0x82, 0x5e, 0x4a, - 0xb6, 0xc9, 0xce, 0x06, 0xa6, 0x49, 0x99, 0x89, 0xe2, 0x77, 0xf0, 0x5b, 0x08, 0x5e, 0x04, 0xbf, - 0xa3, 0x24, 0x33, 0x74, 0x41, 0xd0, 0xed, 0xed, 0xf7, 0x92, 0xf7, 0x5e, 0xde, 0x4b, 0x02, 0xe7, - 0x95, 0x52, 0x55, 0xcd, 0xa3, 0x5b, 0xd1, 0xf0, 0x56, 0xab, 0x86, 0x47, 0x94, 0xed, 0x84, 0x8c, - 0xbe, 0xce, 0x6e, 0xb8, 0xa6, 0xb3, 0x48, 0x48, 0xc6, 0xbf, 0xe1, 0x7d, 0xa3, 0xb4, 0x42, 0xaf, - 0x3b, 0x2e, 0x3e, 0x70, 0xb1, 0xe5, 0xe2, 0x9e, 0xfb, 0xe2, 0x65, 0xef, 0x45, 0xf7, 0x22, 0xa2, - 0x52, 0x2a, 0x4d, 0xb5, 0x50, 0xb2, 0xed, 0xd4, 0xe1, 0x6f, 0x07, 0xa0, 0x30, 0x6e, 0x73, 0xc1, - 0x6b, 0x86, 0x5e, 0x01, 0xdc, 0x9a, 0x61, 0xb3, 0xa7, 0xfa, 0x6e, 0xec, 0x4c, 0x9c, 0xa9, 0x4f, - 0x7c, 0xbb, 0xb2, 0xa2, 0xfa, 0x0e, 0xa5, 0x30, 0xdc, 0x29, 0xc6, 0xc7, 0xee, 0xc4, 0x99, 0x9e, - 0x5d, 0x44, 0xf8, 0xff, 0x47, 0xe3, 0x7b, 0x63, 0x7c, 0xa5, 0x18, 0x27, 0x56, 0x1c, 0x5e, 0xc2, - 0xd0, 0x20, 0xf4, 0x0c, 0x82, 0xab, 0xeb, 0x2c, 0xdf, 0x7c, 0x58, 0x96, 0xab, 0x3c, 0x2d, 0xe6, - 0x45, 0x9e, 0x05, 0x8f, 0xd0, 0x29, 0xf8, 0x71, 0x99, 0xe6, 0xcb, 0xac, 0x58, 0x2e, 0x02, 0x17, - 0x9d, 0x01, 0x64, 0xf9, 0x01, 0x0f, 0xc2, 0xef, 0x2e, 0x78, 0xd6, 0x16, 0x21, 0x18, 0x4a, 0xba, - 0xe3, 0x7d, 0x48, 0x3b, 0xa3, 0x37, 0x70, 0xba, 0x55, 0x75, 0xcd, 0xb7, 0xa6, 0xe2, 0x46, 0x30, - 0x1b, 0xd4, 0x27, 0x27, 0xf7, 0x8b, 0x05, 0x43, 0x09, 0x8c, 0x6c, 0xa3, 0x76, 0x3c, 0x98, 0x0c, - 0xa6, 0x4f, 0x2e, 0xce, 0x8f, 0xaf, 0x41, 0x7a, 0x25, 0x8a, 0xc1, 0x6b, 0x35, 0xd5, 0x7c, 0x3c, - 0xb2, 0x37, 0xf1, 0xee, 0x28, 0x0b, 0x5c, 0x1a, 0x09, 0xe9, 0x94, 0x61, 0x02, 0x9e, 0xc5, 0xe8, - 0x39, 0x3c, 0x2d, 0xd7, 0xf1, 0xfa, 0xef, 0x8b, 0x38, 0x81, 0xc7, 0x29, 0xc9, 0xe3, 0xb5, 0xed, - 0x8d, 0x7c, 0xf0, 0x48, 0x1e, 0x67, 0x9f, 0x02, 0xd7, 0x8c, 0x39, 0x21, 0xd7, 0x24, 0xf0, 0x92, - 0x9f, 0x0e, 0x84, 0x5b, 0xb5, 0x7b, 0xe0, 0xf4, 0xa4, 0x7b, 0xe1, 0x95, 0x79, 0xf0, 0x95, 0xf3, - 0x39, 0xed, 0xd9, 0x95, 0xaa, 0xa9, 0xac, 0xb0, 0x6a, 0xaa, 0xa8, 0xe2, 0xd2, 0x7e, 0x87, 0xa8, - 0xdb, 0xa2, 0x7b, 0xd1, 0xfe, 0xeb, 0xef, 0x5d, 0x5a, 0xf4, 0xc3, 0x1d, 0x2e, 0xd2, 0x79, 0xf9, - 0xcb, 0x7d, 0xbb, 0xe8, 0xcc, 0xd2, 0x5a, 0x7d, 0x61, 0x78, 0x7e, 0x08, 0x10, 0xdb, 0x00, 0x1f, - 0x67, 0x89, 0xd1, 0xdc, 0x8c, 0xac, 0xfb, 0xfb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x08, 0xcb, - 0x38, 0x95, 0xd8, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/common.pb.go b/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/common.pb.go deleted file mode 100644 index 51b0b903..00000000 --- a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/common.pb.go +++ /dev/null @@ -1,498 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/firestore/v1beta1/common.proto - -/* -Package firestore is a generated protocol buffer package. - -It is generated from these files: - google/firestore/v1beta1/common.proto - google/firestore/v1beta1/document.proto - google/firestore/v1beta1/firestore.proto - google/firestore/v1beta1/query.proto - google/firestore/v1beta1/write.proto - -It has these top-level messages: - DocumentMask - Precondition - TransactionOptions - Document - Value - ArrayValue - MapValue - GetDocumentRequest - ListDocumentsRequest - ListDocumentsResponse - CreateDocumentRequest - UpdateDocumentRequest - DeleteDocumentRequest - BatchGetDocumentsRequest - BatchGetDocumentsResponse - BeginTransactionRequest - BeginTransactionResponse - CommitRequest - CommitResponse - RollbackRequest - RunQueryRequest - RunQueryResponse - WriteRequest - WriteResponse - ListenRequest - ListenResponse - Target - TargetChange - ListCollectionIdsRequest - ListCollectionIdsResponse - StructuredQuery - Cursor - Write - DocumentTransform - WriteResult - DocumentChange - DocumentDelete - DocumentRemove - ExistenceFilter -*/ -package firestore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A set of field paths on a document. -// Used to restrict a get or update operation on a document to a subset of its -// fields. -// This is different from standard field masks, as this is always scoped to a -// [Document][google.firestore.v1beta1.Document], and takes in account the dynamic nature of [Value][google.firestore.v1beta1.Value]. -type DocumentMask struct { - // The list of field paths in the mask. See [Document.fields][google.firestore.v1beta1.Document.fields] for a field - // path syntax reference. - FieldPaths []string `protobuf:"bytes,1,rep,name=field_paths,json=fieldPaths" json:"field_paths,omitempty"` -} - -func (m *DocumentMask) Reset() { *m = DocumentMask{} } -func (m *DocumentMask) String() string { return proto.CompactTextString(m) } -func (*DocumentMask) ProtoMessage() {} -func (*DocumentMask) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *DocumentMask) GetFieldPaths() []string { - if m != nil { - return m.FieldPaths - } - return nil -} - -// A precondition on a document, used for conditional operations. -type Precondition struct { - // The type of precondition. - // - // Types that are valid to be assigned to ConditionType: - // *Precondition_Exists - // *Precondition_UpdateTime - ConditionType isPrecondition_ConditionType `protobuf_oneof:"condition_type"` -} - -func (m *Precondition) Reset() { *m = Precondition{} } -func (m *Precondition) String() string { return proto.CompactTextString(m) } -func (*Precondition) ProtoMessage() {} -func (*Precondition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type isPrecondition_ConditionType interface { - isPrecondition_ConditionType() -} - -type Precondition_Exists struct { - Exists bool `protobuf:"varint,1,opt,name=exists,oneof"` -} -type Precondition_UpdateTime struct { - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=update_time,json=updateTime,oneof"` -} - -func (*Precondition_Exists) isPrecondition_ConditionType() {} -func (*Precondition_UpdateTime) isPrecondition_ConditionType() {} - -func (m *Precondition) GetConditionType() isPrecondition_ConditionType { - if m != nil { - return m.ConditionType - } - return nil -} - -func (m *Precondition) GetExists() bool { - if x, ok := m.GetConditionType().(*Precondition_Exists); ok { - return x.Exists - } - return false -} - -func (m *Precondition) GetUpdateTime() *google_protobuf1.Timestamp { - if x, ok := m.GetConditionType().(*Precondition_UpdateTime); ok { - return x.UpdateTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Precondition) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Precondition_OneofMarshaler, _Precondition_OneofUnmarshaler, _Precondition_OneofSizer, []interface{}{ - (*Precondition_Exists)(nil), - (*Precondition_UpdateTime)(nil), - } -} - -func _Precondition_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Precondition) - // condition_type - switch x := m.ConditionType.(type) { - case *Precondition_Exists: - t := uint64(0) - if x.Exists { - t = 1 - } - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Precondition_UpdateTime: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.UpdateTime); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Precondition.ConditionType has unexpected type %T", x) - } - return nil -} - -func _Precondition_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Precondition) - switch tag { - case 1: // condition_type.exists - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ConditionType = &Precondition_Exists{x != 0} - return true, err - case 2: // condition_type.update_time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.ConditionType = &Precondition_UpdateTime{msg} - return true, err - default: - return false, nil - } -} - -func _Precondition_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Precondition) - // condition_type - switch x := m.ConditionType.(type) { - case *Precondition_Exists: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += 1 - case *Precondition_UpdateTime: - s := proto.Size(x.UpdateTime) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Options for creating a new transaction. -type TransactionOptions struct { - // The mode of the transaction. - // - // Types that are valid to be assigned to Mode: - // *TransactionOptions_ReadOnly_ - // *TransactionOptions_ReadWrite_ - Mode isTransactionOptions_Mode `protobuf_oneof:"mode"` -} - -func (m *TransactionOptions) Reset() { *m = TransactionOptions{} } -func (m *TransactionOptions) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions) ProtoMessage() {} -func (*TransactionOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isTransactionOptions_Mode interface { - isTransactionOptions_Mode() -} - -type TransactionOptions_ReadOnly_ struct { - ReadOnly *TransactionOptions_ReadOnly `protobuf:"bytes,2,opt,name=read_only,json=readOnly,oneof"` -} -type TransactionOptions_ReadWrite_ struct { - ReadWrite *TransactionOptions_ReadWrite `protobuf:"bytes,3,opt,name=read_write,json=readWrite,oneof"` -} - -func (*TransactionOptions_ReadOnly_) isTransactionOptions_Mode() {} -func (*TransactionOptions_ReadWrite_) isTransactionOptions_Mode() {} - -func (m *TransactionOptions) GetMode() isTransactionOptions_Mode { - if m != nil { - return m.Mode - } - return nil -} - -func (m *TransactionOptions) GetReadOnly() *TransactionOptions_ReadOnly { - if x, ok := m.GetMode().(*TransactionOptions_ReadOnly_); ok { - return x.ReadOnly - } - return nil -} - -func (m *TransactionOptions) GetReadWrite() *TransactionOptions_ReadWrite { - if x, ok := m.GetMode().(*TransactionOptions_ReadWrite_); ok { - return x.ReadWrite - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TransactionOptions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TransactionOptions_OneofMarshaler, _TransactionOptions_OneofUnmarshaler, _TransactionOptions_OneofSizer, []interface{}{ - (*TransactionOptions_ReadOnly_)(nil), - (*TransactionOptions_ReadWrite_)(nil), - } -} - -func _TransactionOptions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TransactionOptions) - // mode - switch x := m.Mode.(type) { - case *TransactionOptions_ReadOnly_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadOnly); err != nil { - return err - } - case *TransactionOptions_ReadWrite_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadWrite); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransactionOptions.Mode has unexpected type %T", x) - } - return nil -} - -func _TransactionOptions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TransactionOptions) - switch tag { - case 2: // mode.read_only - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions_ReadOnly) - err := b.DecodeMessage(msg) - m.Mode = &TransactionOptions_ReadOnly_{msg} - return true, err - case 3: // mode.read_write - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions_ReadWrite) - err := b.DecodeMessage(msg) - m.Mode = &TransactionOptions_ReadWrite_{msg} - return true, err - default: - return false, nil - } -} - -func _TransactionOptions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TransactionOptions) - // mode - switch x := m.Mode.(type) { - case *TransactionOptions_ReadOnly_: - s := proto.Size(x.ReadOnly) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransactionOptions_ReadWrite_: - s := proto.Size(x.ReadWrite) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Options for a transaction that can be used to read and write documents. -type TransactionOptions_ReadWrite struct { - // An optional transaction to retry. - RetryTransaction []byte `protobuf:"bytes,1,opt,name=retry_transaction,json=retryTransaction,proto3" json:"retry_transaction,omitempty"` -} - -func (m *TransactionOptions_ReadWrite) Reset() { *m = TransactionOptions_ReadWrite{} } -func (m *TransactionOptions_ReadWrite) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions_ReadWrite) ProtoMessage() {} -func (*TransactionOptions_ReadWrite) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *TransactionOptions_ReadWrite) GetRetryTransaction() []byte { - if m != nil { - return m.RetryTransaction - } - return nil -} - -// Options for a transaction that can only be used to read documents. -type TransactionOptions_ReadOnly struct { - // The consistency mode for this transaction. If not set, defaults to strong - // consistency. - // - // Types that are valid to be assigned to ConsistencySelector: - // *TransactionOptions_ReadOnly_ReadTime - ConsistencySelector isTransactionOptions_ReadOnly_ConsistencySelector `protobuf_oneof:"consistency_selector"` -} - -func (m *TransactionOptions_ReadOnly) Reset() { *m = TransactionOptions_ReadOnly{} } -func (m *TransactionOptions_ReadOnly) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions_ReadOnly) ProtoMessage() {} -func (*TransactionOptions_ReadOnly) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} } - -type isTransactionOptions_ReadOnly_ConsistencySelector interface { - isTransactionOptions_ReadOnly_ConsistencySelector() -} - -type TransactionOptions_ReadOnly_ReadTime struct { - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=read_time,json=readTime,oneof"` -} - -func (*TransactionOptions_ReadOnly_ReadTime) isTransactionOptions_ReadOnly_ConsistencySelector() {} - -func (m *TransactionOptions_ReadOnly) GetConsistencySelector() isTransactionOptions_ReadOnly_ConsistencySelector { - if m != nil { - return m.ConsistencySelector - } - return nil -} - -func (m *TransactionOptions_ReadOnly) GetReadTime() *google_protobuf1.Timestamp { - if x, ok := m.GetConsistencySelector().(*TransactionOptions_ReadOnly_ReadTime); ok { - return x.ReadTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TransactionOptions_ReadOnly) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TransactionOptions_ReadOnly_OneofMarshaler, _TransactionOptions_ReadOnly_OneofUnmarshaler, _TransactionOptions_ReadOnly_OneofSizer, []interface{}{ - (*TransactionOptions_ReadOnly_ReadTime)(nil), - } -} - -func _TransactionOptions_ReadOnly_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TransactionOptions_ReadOnly) - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *TransactionOptions_ReadOnly_ReadTime: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadTime); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransactionOptions_ReadOnly.ConsistencySelector has unexpected type %T", x) - } - return nil -} - -func _TransactionOptions_ReadOnly_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TransactionOptions_ReadOnly) - switch tag { - case 2: // consistency_selector.read_time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.ConsistencySelector = &TransactionOptions_ReadOnly_ReadTime{msg} - return true, err - default: - return false, nil - } -} - -func _TransactionOptions_ReadOnly_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TransactionOptions_ReadOnly) - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *TransactionOptions_ReadOnly_ReadTime: - s := proto.Size(x.ReadTime) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*DocumentMask)(nil), "google.firestore.v1beta1.DocumentMask") - proto.RegisterType((*Precondition)(nil), "google.firestore.v1beta1.Precondition") - proto.RegisterType((*TransactionOptions)(nil), "google.firestore.v1beta1.TransactionOptions") - proto.RegisterType((*TransactionOptions_ReadWrite)(nil), "google.firestore.v1beta1.TransactionOptions.ReadWrite") - proto.RegisterType((*TransactionOptions_ReadOnly)(nil), "google.firestore.v1beta1.TransactionOptions.ReadOnly") -} - -func init() { proto.RegisterFile("google/firestore/v1beta1/common.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 468 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0xef, 0x8a, 0xd3, 0x40, - 0x10, 0x6f, 0x7a, 0xc7, 0xd1, 0x4e, 0x8b, 0x9c, 0x41, 0x24, 0x84, 0xc3, 0x3b, 0x0a, 0x42, 0x41, - 0xd8, 0x50, 0x45, 0x51, 0xc4, 0x0f, 0xa6, 0x72, 0xd7, 0x2f, 0x72, 0x25, 0x96, 0x3b, 0x90, 0x4a, - 0xd8, 0x26, 0xd3, 0xb8, 0x98, 0xec, 0x84, 0xdd, 0xad, 0x9a, 0xd7, 0xf1, 0xa3, 0x6f, 0xe0, 0x2b, - 0xf8, 0x1c, 0x3e, 0x88, 0x64, 0x93, 0x46, 0xe1, 0x38, 0xd0, 0x6f, 0x3b, 0x33, 0xbf, 0xf9, 0xfd, - 0x19, 0x16, 0x1e, 0x66, 0x44, 0x59, 0x8e, 0xc1, 0x56, 0x28, 0xd4, 0x86, 0x14, 0x06, 0x9f, 0x67, - 0x1b, 0x34, 0x7c, 0x16, 0x24, 0x54, 0x14, 0x24, 0x59, 0xa9, 0xc8, 0x90, 0xeb, 0x35, 0x30, 0xd6, - 0xc1, 0x58, 0x0b, 0xf3, 0x4f, 0x5a, 0x02, 0x5e, 0x8a, 0x80, 0x4b, 0x49, 0x86, 0x1b, 0x41, 0x52, - 0x37, 0x7b, 0xfe, 0x69, 0x3b, 0xb5, 0xd5, 0x66, 0xb7, 0x0d, 0x8c, 0x28, 0x50, 0x1b, 0x5e, 0x94, - 0x0d, 0x60, 0x12, 0xc0, 0xf8, 0x0d, 0x25, 0xbb, 0x02, 0xa5, 0x79, 0xcb, 0xf5, 0x27, 0xf7, 0x14, - 0x46, 0x5b, 0x81, 0x79, 0x1a, 0x97, 0xdc, 0x7c, 0xd4, 0x9e, 0x73, 0x76, 0x30, 0x1d, 0x46, 0x60, - 0x5b, 0xcb, 0xba, 0x33, 0xa9, 0x60, 0xbc, 0x54, 0x98, 0x90, 0x4c, 0x45, 0x2d, 0xe4, 0x7a, 0x70, - 0x84, 0x5f, 0x85, 0x36, 0x35, 0xd6, 0x99, 0x0e, 0x16, 0xbd, 0xa8, 0xad, 0xdd, 0x57, 0x30, 0xda, - 0x95, 0x29, 0x37, 0x18, 0xd7, 0xa2, 0x5e, 0xff, 0xcc, 0x99, 0x8e, 0x1e, 0xfb, 0xac, 0x4d, 0xb2, - 0x77, 0xc4, 0x56, 0x7b, 0x47, 0x8b, 0x5e, 0x04, 0xcd, 0x42, 0xdd, 0x0a, 0x8f, 0xe1, 0x4e, 0xa7, - 0x12, 0x9b, 0xaa, 0xc4, 0xc9, 0xaf, 0x3e, 0xb8, 0x2b, 0xc5, 0xa5, 0xe6, 0x49, 0xdd, 0xbc, 0x2c, - 0x6d, 0x52, 0x77, 0x05, 0x43, 0x85, 0x3c, 0x8d, 0x49, 0xe6, 0x55, 0xab, 0xf2, 0x94, 0xdd, 0x76, - 0x2f, 0x76, 0x93, 0x80, 0x45, 0xc8, 0xd3, 0x4b, 0x99, 0x57, 0x8b, 0x5e, 0x34, 0x50, 0xed, 0xdb, - 0xbd, 0x06, 0xb0, 0xac, 0x5f, 0x94, 0x30, 0xe8, 0x1d, 0x58, 0xda, 0x67, 0xff, 0x4d, 0x7b, 0x5d, - 0x6f, 0x2f, 0x7a, 0x91, 0x75, 0x68, 0x0b, 0xff, 0x39, 0x0c, 0xbb, 0x89, 0xfb, 0x08, 0xee, 0x2a, - 0x34, 0xaa, 0x8a, 0xcd, 0x9f, 0x7d, 0x7b, 0xc8, 0x71, 0x74, 0x6c, 0x07, 0x7f, 0xf1, 0xfa, 0x1f, - 0x60, 0xb0, 0xb7, 0xea, 0xbe, 0x68, 0x43, 0xff, 0xf3, 0x69, 0x6d, 0x32, 0x7b, 0xd8, 0xfb, 0x70, - 0x2f, 0x21, 0xa9, 0x85, 0x36, 0x28, 0x93, 0x2a, 0xd6, 0x98, 0x63, 0x62, 0x48, 0x85, 0x47, 0x70, - 0x58, 0x50, 0x8a, 0xe1, 0x0f, 0x07, 0x4e, 0x12, 0x2a, 0x6e, 0xcd, 0x1a, 0x8e, 0xe6, 0xf6, 0x6b, - 0x2e, 0x6b, 0x99, 0xa5, 0xf3, 0xfe, 0x75, 0x0b, 0xcc, 0x28, 0xe7, 0x32, 0x63, 0xa4, 0xb2, 0x20, - 0x43, 0x69, 0x4d, 0x04, 0xcd, 0x88, 0x97, 0x42, 0xdf, 0xfc, 0xe1, 0x2f, 0xbb, 0xce, 0xb7, 0xfe, - 0xe1, 0xc5, 0xfc, 0xfc, 0xdd, 0xf7, 0xfe, 0x83, 0x8b, 0x86, 0x6a, 0x9e, 0xd3, 0x2e, 0x65, 0xe7, - 0x9d, 0xf2, 0xd5, 0x2c, 0xac, 0x37, 0x7e, 0xee, 0x01, 0x6b, 0x0b, 0x58, 0x77, 0x80, 0xf5, 0x55, - 0x43, 0xb9, 0x39, 0xb2, 0xb2, 0x4f, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0x91, 0x06, 0xe4, 0x5b, - 0x57, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/document.pb.go b/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/document.pb.go deleted file mode 100644 index d30f25a2..00000000 --- a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/document.pb.go +++ /dev/null @@ -1,566 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/firestore/v1beta1/document.proto - -package firestore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" -import google_type "google.golang.org/genproto/googleapis/type/latlng" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A Firestore document. -// -// Must not exceed 1 MiB - 4 bytes. -type Document struct { - // The resource name of the document, for example - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The document's fields. - // - // The map keys represent field names. - // - // A simple field name contains only characters `a` to `z`, `A` to `Z`, - // `0` to `9`, or `_`, and must not start with `0` to `9` or `_`. For example, - // `foo_bar_17`. - // - // Field names matching the regular expression `__.*__` are reserved. Reserved - // field names are forbidden except in certain documented contexts. The map - // keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be - // empty. - // - // Field paths may be used in other contexts to refer to structured fields - // defined here. For `map_value`, the field path is represented by the simple - // or quoted field names of the containing fields, delimited by `.`. For - // example, the structured field - // `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be - // represented by the field path `foo.x&y`. - // - // Within a field path, a quoted field name starts and ends with `` ` `` and - // may contain any character. Some characters, including `` ` ``, must be - // escaped using a `\`. For example, `` `x&y` `` represents `x&y` and - // `` `bak\`tik` `` represents `` bak`tik ``. - Fields map[string]*Value `protobuf:"bytes,2,rep,name=fields" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Output only. The time at which the document was created. - // - // This value increases monotonically when a document is deleted then - // recreated. It can also be compared to values from other documents and - // the `read_time` of a query. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. The time at which the document was last changed. - // - // This value is initally set to the `create_time` then increases - // monotonically with each change to the document. It can also be - // compared to values from other documents and the `read_time` of a query. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` -} - -func (m *Document) Reset() { *m = Document{} } -func (m *Document) String() string { return proto.CompactTextString(m) } -func (*Document) ProtoMessage() {} -func (*Document) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Document) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Document) GetFields() map[string]*Value { - if m != nil { - return m.Fields - } - return nil -} - -func (m *Document) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Document) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -// A message that can hold any of the supported value types. -type Value struct { - // Must have a value set. - // - // Types that are valid to be assigned to ValueType: - // *Value_NullValue - // *Value_BooleanValue - // *Value_IntegerValue - // *Value_DoubleValue - // *Value_TimestampValue - // *Value_StringValue - // *Value_BytesValue - // *Value_ReferenceValue - // *Value_GeoPointValue - // *Value_ArrayValue - // *Value_MapValue - ValueType isValue_ValueType `protobuf_oneof:"value_type"` -} - -func (m *Value) Reset() { *m = Value{} } -func (m *Value) String() string { return proto.CompactTextString(m) } -func (*Value) ProtoMessage() {} -func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -type isValue_ValueType interface { - isValue_ValueType() -} - -type Value_NullValue struct { - NullValue google_protobuf2.NullValue `protobuf:"varint,11,opt,name=null_value,json=nullValue,enum=google.protobuf.NullValue,oneof"` -} -type Value_BooleanValue struct { - BooleanValue bool `protobuf:"varint,1,opt,name=boolean_value,json=booleanValue,oneof"` -} -type Value_IntegerValue struct { - IntegerValue int64 `protobuf:"varint,2,opt,name=integer_value,json=integerValue,oneof"` -} -type Value_DoubleValue struct { - DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,oneof"` -} -type Value_TimestampValue struct { - TimestampValue *google_protobuf1.Timestamp `protobuf:"bytes,10,opt,name=timestamp_value,json=timestampValue,oneof"` -} -type Value_StringValue struct { - StringValue string `protobuf:"bytes,17,opt,name=string_value,json=stringValue,oneof"` -} -type Value_BytesValue struct { - BytesValue []byte `protobuf:"bytes,18,opt,name=bytes_value,json=bytesValue,proto3,oneof"` -} -type Value_ReferenceValue struct { - ReferenceValue string `protobuf:"bytes,5,opt,name=reference_value,json=referenceValue,oneof"` -} -type Value_GeoPointValue struct { - GeoPointValue *google_type.LatLng `protobuf:"bytes,8,opt,name=geo_point_value,json=geoPointValue,oneof"` -} -type Value_ArrayValue struct { - ArrayValue *ArrayValue `protobuf:"bytes,9,opt,name=array_value,json=arrayValue,oneof"` -} -type Value_MapValue struct { - MapValue *MapValue `protobuf:"bytes,6,opt,name=map_value,json=mapValue,oneof"` -} - -func (*Value_NullValue) isValue_ValueType() {} -func (*Value_BooleanValue) isValue_ValueType() {} -func (*Value_IntegerValue) isValue_ValueType() {} -func (*Value_DoubleValue) isValue_ValueType() {} -func (*Value_TimestampValue) isValue_ValueType() {} -func (*Value_StringValue) isValue_ValueType() {} -func (*Value_BytesValue) isValue_ValueType() {} -func (*Value_ReferenceValue) isValue_ValueType() {} -func (*Value_GeoPointValue) isValue_ValueType() {} -func (*Value_ArrayValue) isValue_ValueType() {} -func (*Value_MapValue) isValue_ValueType() {} - -func (m *Value) GetValueType() isValue_ValueType { - if m != nil { - return m.ValueType - } - return nil -} - -func (m *Value) GetNullValue() google_protobuf2.NullValue { - if x, ok := m.GetValueType().(*Value_NullValue); ok { - return x.NullValue - } - return google_protobuf2.NullValue_NULL_VALUE -} - -func (m *Value) GetBooleanValue() bool { - if x, ok := m.GetValueType().(*Value_BooleanValue); ok { - return x.BooleanValue - } - return false -} - -func (m *Value) GetIntegerValue() int64 { - if x, ok := m.GetValueType().(*Value_IntegerValue); ok { - return x.IntegerValue - } - return 0 -} - -func (m *Value) GetDoubleValue() float64 { - if x, ok := m.GetValueType().(*Value_DoubleValue); ok { - return x.DoubleValue - } - return 0 -} - -func (m *Value) GetTimestampValue() *google_protobuf1.Timestamp { - if x, ok := m.GetValueType().(*Value_TimestampValue); ok { - return x.TimestampValue - } - return nil -} - -func (m *Value) GetStringValue() string { - if x, ok := m.GetValueType().(*Value_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *Value) GetBytesValue() []byte { - if x, ok := m.GetValueType().(*Value_BytesValue); ok { - return x.BytesValue - } - return nil -} - -func (m *Value) GetReferenceValue() string { - if x, ok := m.GetValueType().(*Value_ReferenceValue); ok { - return x.ReferenceValue - } - return "" -} - -func (m *Value) GetGeoPointValue() *google_type.LatLng { - if x, ok := m.GetValueType().(*Value_GeoPointValue); ok { - return x.GeoPointValue - } - return nil -} - -func (m *Value) GetArrayValue() *ArrayValue { - if x, ok := m.GetValueType().(*Value_ArrayValue); ok { - return x.ArrayValue - } - return nil -} - -func (m *Value) GetMapValue() *MapValue { - if x, ok := m.GetValueType().(*Value_MapValue); ok { - return x.MapValue - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Value) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Value_OneofMarshaler, _Value_OneofUnmarshaler, _Value_OneofSizer, []interface{}{ - (*Value_NullValue)(nil), - (*Value_BooleanValue)(nil), - (*Value_IntegerValue)(nil), - (*Value_DoubleValue)(nil), - (*Value_TimestampValue)(nil), - (*Value_StringValue)(nil), - (*Value_BytesValue)(nil), - (*Value_ReferenceValue)(nil), - (*Value_GeoPointValue)(nil), - (*Value_ArrayValue)(nil), - (*Value_MapValue)(nil), - } -} - -func _Value_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Value) - // value_type - switch x := m.ValueType.(type) { - case *Value_NullValue: - b.EncodeVarint(11<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.NullValue)) - case *Value_BooleanValue: - t := uint64(0) - if x.BooleanValue { - t = 1 - } - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Value_IntegerValue: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IntegerValue)) - case *Value_DoubleValue: - b.EncodeVarint(3<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.DoubleValue)) - case *Value_TimestampValue: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimestampValue); err != nil { - return err - } - case *Value_StringValue: - b.EncodeVarint(17<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *Value_BytesValue: - b.EncodeVarint(18<<3 | proto.WireBytes) - b.EncodeRawBytes(x.BytesValue) - case *Value_ReferenceValue: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ReferenceValue) - case *Value_GeoPointValue: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.GeoPointValue); err != nil { - return err - } - case *Value_ArrayValue: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ArrayValue); err != nil { - return err - } - case *Value_MapValue: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.MapValue); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Value.ValueType has unexpected type %T", x) - } - return nil -} - -func _Value_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Value) - switch tag { - case 11: // value_type.null_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_NullValue{google_protobuf2.NullValue(x)} - return true, err - case 1: // value_type.boolean_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_BooleanValue{x != 0} - return true, err - case 2: // value_type.integer_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.ValueType = &Value_IntegerValue{int64(x)} - return true, err - case 3: // value_type.double_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.ValueType = &Value_DoubleValue{math.Float64frombits(x)} - return true, err - case 10: // value_type.timestamp_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.ValueType = &Value_TimestampValue{msg} - return true, err - case 17: // value_type.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ValueType = &Value_StringValue{x} - return true, err - case 18: // value_type.bytes_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ValueType = &Value_BytesValue{x} - return true, err - case 5: // value_type.reference_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.ValueType = &Value_ReferenceValue{x} - return true, err - case 8: // value_type.geo_point_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_type.LatLng) - err := b.DecodeMessage(msg) - m.ValueType = &Value_GeoPointValue{msg} - return true, err - case 9: // value_type.array_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ArrayValue) - err := b.DecodeMessage(msg) - m.ValueType = &Value_ArrayValue{msg} - return true, err - case 6: // value_type.map_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(MapValue) - err := b.DecodeMessage(msg) - m.ValueType = &Value_MapValue{msg} - return true, err - default: - return false, nil - } -} - -func _Value_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Value) - // value_type - switch x := m.ValueType.(type) { - case *Value_NullValue: - n += proto.SizeVarint(11<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.NullValue)) - case *Value_BooleanValue: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += 1 - case *Value_IntegerValue: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IntegerValue)) - case *Value_DoubleValue: - n += proto.SizeVarint(3<<3 | proto.WireFixed64) - n += 8 - case *Value_TimestampValue: - s := proto.Size(x.TimestampValue) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_StringValue: - n += proto.SizeVarint(17<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *Value_BytesValue: - n += proto.SizeVarint(18<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.BytesValue))) - n += len(x.BytesValue) - case *Value_ReferenceValue: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ReferenceValue))) - n += len(x.ReferenceValue) - case *Value_GeoPointValue: - s := proto.Size(x.GeoPointValue) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_ArrayValue: - s := proto.Size(x.ArrayValue) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_MapValue: - s := proto.Size(x.MapValue) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// An array value. -type ArrayValue struct { - // Values in the array. - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` -} - -func (m *ArrayValue) Reset() { *m = ArrayValue{} } -func (m *ArrayValue) String() string { return proto.CompactTextString(m) } -func (*ArrayValue) ProtoMessage() {} -func (*ArrayValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *ArrayValue) GetValues() []*Value { - if m != nil { - return m.Values - } - return nil -} - -// A map value. -type MapValue struct { - // The map's fields. - // - // The map keys represent field names. Field names matching the regular - // expression `__.*__` are reserved. Reserved field names are forbidden except - // in certain documented contexts. The map keys, represented as UTF-8, must - // not exceed 1,500 bytes and cannot be empty. - Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *MapValue) Reset() { *m = MapValue{} } -func (m *MapValue) String() string { return proto.CompactTextString(m) } -func (*MapValue) ProtoMessage() {} -func (*MapValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *MapValue) GetFields() map[string]*Value { - if m != nil { - return m.Fields - } - return nil -} - -func init() { - proto.RegisterType((*Document)(nil), "google.firestore.v1beta1.Document") - proto.RegisterType((*Value)(nil), "google.firestore.v1beta1.Value") - proto.RegisterType((*ArrayValue)(nil), "google.firestore.v1beta1.ArrayValue") - proto.RegisterType((*MapValue)(nil), "google.firestore.v1beta1.MapValue") -} - -func init() { proto.RegisterFile("google/firestore/v1beta1/document.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 655 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x94, 0xcf, 0x6e, 0xd3, 0x4c, - 0x14, 0xc5, 0xe3, 0x24, 0x8d, 0x92, 0xeb, 0xb4, 0xfd, 0x3e, 0xb3, 0x89, 0xa2, 0x8a, 0x86, 0x00, - 0x22, 0x6c, 0x6c, 0xb5, 0x08, 0x81, 0xa8, 0x58, 0x34, 0xa5, 0x69, 0x16, 0x05, 0x55, 0x06, 0x75, - 0x51, 0x55, 0x8a, 0xc6, 0xc9, 0xc4, 0xb2, 0x18, 0xcf, 0x58, 0xe3, 0x71, 0xa5, 0xbc, 0x0e, 0x4b, - 0x16, 0xbc, 0x00, 0x3c, 0x41, 0x9f, 0x0a, 0xcd, 0xdf, 0x56, 0xd0, 0x28, 0x2b, 0x76, 0xf6, 0xbd, - 0xbf, 0x73, 0xee, 0x99, 0xf1, 0x8c, 0xe1, 0x45, 0xca, 0x58, 0x4a, 0x70, 0xb4, 0xcc, 0x38, 0x2e, - 0x05, 0xe3, 0x38, 0xba, 0x39, 0x48, 0xb0, 0x40, 0x07, 0xd1, 0x82, 0xcd, 0xab, 0x1c, 0x53, 0x11, - 0x16, 0x9c, 0x09, 0x16, 0xf4, 0x34, 0x18, 0x3a, 0x30, 0x34, 0x60, 0x7f, 0xcf, 0x58, 0xa0, 0x22, - 0x8b, 0x10, 0xa5, 0x4c, 0x20, 0x91, 0x31, 0x5a, 0x6a, 0x9d, 0xeb, 0xaa, 0xb7, 0xa4, 0x5a, 0x46, - 0xa5, 0xe0, 0xd5, 0xdc, 0xb8, 0xf6, 0xf7, 0xff, 0xec, 0x8a, 0x2c, 0xc7, 0xa5, 0x40, 0x79, 0x61, - 0x00, 0x33, 0x36, 0x12, 0xab, 0x02, 0x47, 0x04, 0x09, 0x42, 0x53, 0xdd, 0x19, 0xfe, 0xaa, 0x43, - 0xfb, 0x83, 0xc9, 0x18, 0x04, 0xd0, 0xa4, 0x28, 0xc7, 0x3d, 0x6f, 0xe0, 0x8d, 0x3a, 0xb1, 0x7a, - 0x0e, 0x26, 0xd0, 0x5a, 0x66, 0x98, 0x2c, 0xca, 0x5e, 0x7d, 0xd0, 0x18, 0xf9, 0x87, 0x61, 0xb8, - 0x6e, 0x09, 0xa1, 0xf5, 0x09, 0x27, 0x4a, 0x70, 0x4a, 0x05, 0x5f, 0xc5, 0x46, 0x1d, 0x1c, 0x81, - 0x3f, 0xe7, 0x18, 0x09, 0x3c, 0x93, 0xe1, 0x7a, 0x8d, 0x81, 0x37, 0xf2, 0x0f, 0xfb, 0xd6, 0xcc, - 0x26, 0x0f, 0xbf, 0xd8, 0xe4, 0x31, 0x68, 0x5c, 0x16, 0xa4, 0xb8, 0x2a, 0x16, 0x4e, 0xdc, 0xdc, - 0x2c, 0xd6, 0xb8, 0x2c, 0xf4, 0xaf, 0xc0, 0xbf, 0x17, 0x28, 0xf8, 0x0f, 0x1a, 0x5f, 0xf1, 0xca, - 0xac, 0x51, 0x3e, 0x06, 0xaf, 0x61, 0xeb, 0x06, 0x91, 0x0a, 0xf7, 0xea, 0xca, 0x77, 0x7f, 0xfd, - 0x0a, 0x2f, 0x25, 0x16, 0x6b, 0xfa, 0x5d, 0xfd, 0xad, 0x37, 0xbc, 0x6d, 0xc2, 0x96, 0x2a, 0x06, - 0x47, 0x00, 0xb4, 0x22, 0x64, 0xa6, 0x9d, 0xfc, 0x81, 0x37, 0xda, 0x79, 0x20, 0xe1, 0xa7, 0x8a, - 0x10, 0xc5, 0x4f, 0x6b, 0x71, 0x87, 0xda, 0x97, 0xe0, 0x39, 0x6c, 0x27, 0x8c, 0x11, 0x8c, 0xa8, - 0xd1, 0xcb, 0x74, 0xed, 0x69, 0x2d, 0xee, 0x9a, 0xb2, 0xc3, 0x32, 0x2a, 0x70, 0x8a, 0xf9, 0xec, - 0x2e, 0x70, 0x43, 0x62, 0xa6, 0xac, 0xb1, 0xa7, 0xd0, 0x5d, 0xb0, 0x2a, 0x21, 0xd8, 0x50, 0x72, - 0xaf, 0xbd, 0x69, 0x2d, 0xf6, 0x75, 0x55, 0x43, 0xa7, 0xb0, 0xeb, 0x4e, 0x89, 0xe1, 0x60, 0xd3, - 0xb6, 0x4e, 0x6b, 0xf1, 0x8e, 0x13, 0xb9, 0x59, 0xa5, 0xe0, 0x19, 0x4d, 0x8d, 0xc7, 0xff, 0x72, - 0x5b, 0xe5, 0x2c, 0x5d, 0xd5, 0xd0, 0x13, 0xf0, 0x93, 0x95, 0xc0, 0xa5, 0x61, 0x82, 0x81, 0x37, - 0xea, 0x4e, 0x6b, 0x31, 0xa8, 0xa2, 0x46, 0x5e, 0xc2, 0x2e, 0xc7, 0x4b, 0xcc, 0x31, 0x9d, 0xdb, - 0xd8, 0x5b, 0xc6, 0x6a, 0xc7, 0x35, 0x34, 0xfa, 0x1e, 0x76, 0x53, 0xcc, 0x66, 0x05, 0xcb, 0xa8, - 0x30, 0x68, 0x5b, 0x25, 0x7f, 0x64, 0x93, 0xcb, 0x63, 0x1e, 0x9e, 0x23, 0x71, 0x4e, 0xd3, 0x69, - 0x2d, 0xde, 0x4e, 0x31, 0xbb, 0x90, 0xb0, 0x96, 0x9f, 0x81, 0x8f, 0x38, 0x47, 0x2b, 0x23, 0xed, - 0x28, 0xe9, 0xb3, 0xf5, 0xdf, 0xfc, 0x58, 0xc2, 0xf6, 0x9b, 0x01, 0x72, 0x6f, 0xc1, 0x31, 0x74, - 0x72, 0x64, 0xf7, 0xae, 0xa5, 0x6c, 0x86, 0xeb, 0x6d, 0x3e, 0xa2, 0xc2, 0x9a, 0xb4, 0x73, 0xf3, - 0x3c, 0xee, 0x02, 0x28, 0xf9, 0x4c, 0x26, 0x1e, 0x9e, 0x02, 0xdc, 0x0d, 0x0b, 0xde, 0x40, 0x4b, - 0xf5, 0xca, 0x9e, 0xa7, 0x2e, 0xde, 0xc6, 0x63, 0x69, 0xf0, 0xe1, 0x0f, 0x0f, 0xda, 0x76, 0xda, - 0xbd, 0xeb, 0xeb, 0x6d, 0xba, 0xbe, 0x56, 0xf3, 0xd0, 0xf5, 0xfd, 0x97, 0x97, 0x68, 0xfc, 0xd3, - 0x83, 0xbd, 0x39, 0xcb, 0xd7, 0x2a, 0xc6, 0xdb, 0xf6, 0xcf, 0x72, 0x21, 0x8f, 0xe4, 0x85, 0x77, - 0x75, 0x6c, 0xd0, 0x94, 0x11, 0x44, 0xd3, 0x90, 0xf1, 0x34, 0x4a, 0x31, 0x55, 0x07, 0x36, 0xd2, - 0x2d, 0x54, 0x64, 0xe5, 0xdf, 0xbf, 0xe3, 0x23, 0x57, 0xf9, 0x56, 0x6f, 0x9e, 0x9d, 0x4c, 0x3e, - 0x7f, 0xaf, 0x3f, 0x3e, 0xd3, 0x56, 0x27, 0x84, 0x55, 0x8b, 0x70, 0xe2, 0x66, 0x5f, 0x1e, 0x8c, - 0xa5, 0xe2, 0xd6, 0x02, 0xd7, 0x0a, 0xb8, 0x76, 0xc0, 0xf5, 0xa5, 0xb6, 0x4c, 0x5a, 0x6a, 0xec, - 0xab, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9e, 0x27, 0x82, 0xde, 0x04, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/firestore.pb.go b/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/firestore.pb.go deleted file mode 100644 index bd7b520c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/firestore.pb.go +++ /dev/null @@ -1,3125 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/firestore/v1beta1/firestore.proto - -package firestore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The type of change. -type TargetChange_TargetChangeType int32 - -const ( - // No change has occurred. Used only to send an updated `resume_token`. - TargetChange_NO_CHANGE TargetChange_TargetChangeType = 0 - // The targets have been added. - TargetChange_ADD TargetChange_TargetChangeType = 1 - // The targets have been removed. - TargetChange_REMOVE TargetChange_TargetChangeType = 2 - // The targets reflect all changes committed before the targets were added - // to the stream. - // - // This will be sent after or with a `read_time` that is greater than or - // equal to the time at which the targets were added. - // - // Listeners can wait for this change if read-after-write semantics - // are desired. - TargetChange_CURRENT TargetChange_TargetChangeType = 3 - // The targets have been reset, and a new initial state for the targets - // will be returned in subsequent changes. - // - // After the initial state is complete, `CURRENT` will be returned even - // if the target was previously indicated to be `CURRENT`. - TargetChange_RESET TargetChange_TargetChangeType = 4 -) - -var TargetChange_TargetChangeType_name = map[int32]string{ - 0: "NO_CHANGE", - 1: "ADD", - 2: "REMOVE", - 3: "CURRENT", - 4: "RESET", -} -var TargetChange_TargetChangeType_value = map[string]int32{ - "NO_CHANGE": 0, - "ADD": 1, - "REMOVE": 2, - "CURRENT": 3, - "RESET": 4, -} - -func (x TargetChange_TargetChangeType) String() string { - return proto.EnumName(TargetChange_TargetChangeType_name, int32(x)) -} -func (TargetChange_TargetChangeType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor2, []int{20, 0} -} - -// The request for [Firestore.GetDocument][google.firestore.v1beta1.Firestore.GetDocument]. -type GetDocumentRequest struct { - // The resource name of the Document to get. In the format: - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The fields to return. If not set, returns all fields. - // - // If the document has a field that is not present in this mask, that field - // will not be returned in the response. - Mask *DocumentMask `protobuf:"bytes,2,opt,name=mask" json:"mask,omitempty"` - // The consistency mode for this transaction. - // If not set, defaults to strong consistency. - // - // Types that are valid to be assigned to ConsistencySelector: - // *GetDocumentRequest_Transaction - // *GetDocumentRequest_ReadTime - ConsistencySelector isGetDocumentRequest_ConsistencySelector `protobuf_oneof:"consistency_selector"` -} - -func (m *GetDocumentRequest) Reset() { *m = GetDocumentRequest{} } -func (m *GetDocumentRequest) String() string { return proto.CompactTextString(m) } -func (*GetDocumentRequest) ProtoMessage() {} -func (*GetDocumentRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -type isGetDocumentRequest_ConsistencySelector interface { - isGetDocumentRequest_ConsistencySelector() -} - -type GetDocumentRequest_Transaction struct { - Transaction []byte `protobuf:"bytes,3,opt,name=transaction,proto3,oneof"` -} -type GetDocumentRequest_ReadTime struct { - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=read_time,json=readTime,oneof"` -} - -func (*GetDocumentRequest_Transaction) isGetDocumentRequest_ConsistencySelector() {} -func (*GetDocumentRequest_ReadTime) isGetDocumentRequest_ConsistencySelector() {} - -func (m *GetDocumentRequest) GetConsistencySelector() isGetDocumentRequest_ConsistencySelector { - if m != nil { - return m.ConsistencySelector - } - return nil -} - -func (m *GetDocumentRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GetDocumentRequest) GetMask() *DocumentMask { - if m != nil { - return m.Mask - } - return nil -} - -func (m *GetDocumentRequest) GetTransaction() []byte { - if x, ok := m.GetConsistencySelector().(*GetDocumentRequest_Transaction); ok { - return x.Transaction - } - return nil -} - -func (m *GetDocumentRequest) GetReadTime() *google_protobuf1.Timestamp { - if x, ok := m.GetConsistencySelector().(*GetDocumentRequest_ReadTime); ok { - return x.ReadTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*GetDocumentRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _GetDocumentRequest_OneofMarshaler, _GetDocumentRequest_OneofUnmarshaler, _GetDocumentRequest_OneofSizer, []interface{}{ - (*GetDocumentRequest_Transaction)(nil), - (*GetDocumentRequest_ReadTime)(nil), - } -} - -func _GetDocumentRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*GetDocumentRequest) - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *GetDocumentRequest_Transaction: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Transaction) - case *GetDocumentRequest_ReadTime: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadTime); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("GetDocumentRequest.ConsistencySelector has unexpected type %T", x) - } - return nil -} - -func _GetDocumentRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*GetDocumentRequest) - switch tag { - case 3: // consistency_selector.transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ConsistencySelector = &GetDocumentRequest_Transaction{x} - return true, err - case 5: // consistency_selector.read_time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.ConsistencySelector = &GetDocumentRequest_ReadTime{msg} - return true, err - default: - return false, nil - } -} - -func _GetDocumentRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*GetDocumentRequest) - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *GetDocumentRequest_Transaction: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Transaction))) - n += len(x.Transaction) - case *GetDocumentRequest_ReadTime: - s := proto.Size(x.ReadTime) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The request for [Firestore.ListDocuments][google.firestore.v1beta1.Firestore.ListDocuments]. -type ListDocumentsRequest struct { - // The parent resource name. In the format: - // `projects/{project_id}/databases/{database_id}/documents` or - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - // For example: - // `projects/my-project/databases/my-database/documents` or - // `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The collection ID, relative to `parent`, to list. For example: `chatrooms` - // or `messages`. - CollectionId string `protobuf:"bytes,2,opt,name=collection_id,json=collectionId" json:"collection_id,omitempty"` - // The maximum number of documents to return. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The `next_page_token` value returned from a previous List request, if any. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The order to sort results by. For example: `priority desc, name`. - OrderBy string `protobuf:"bytes,6,opt,name=order_by,json=orderBy" json:"order_by,omitempty"` - // The fields to return. If not set, returns all fields. - // - // If a document has a field that is not present in this mask, that field - // will not be returned in the response. - Mask *DocumentMask `protobuf:"bytes,7,opt,name=mask" json:"mask,omitempty"` - // The consistency mode for this transaction. - // If not set, defaults to strong consistency. - // - // Types that are valid to be assigned to ConsistencySelector: - // *ListDocumentsRequest_Transaction - // *ListDocumentsRequest_ReadTime - ConsistencySelector isListDocumentsRequest_ConsistencySelector `protobuf_oneof:"consistency_selector"` - // If the list should show missing documents. A missing document is a - // document that does not exist but has sub-documents. These documents will - // be returned with a key but will not have fields, [Document.create_time][google.firestore.v1beta1.Document.create_time], - // or [Document.update_time][google.firestore.v1beta1.Document.update_time] set. - // - // Requests with `show_missing` may not specify `where` or - // `order_by`. - ShowMissing bool `protobuf:"varint,12,opt,name=show_missing,json=showMissing" json:"show_missing,omitempty"` -} - -func (m *ListDocumentsRequest) Reset() { *m = ListDocumentsRequest{} } -func (m *ListDocumentsRequest) String() string { return proto.CompactTextString(m) } -func (*ListDocumentsRequest) ProtoMessage() {} -func (*ListDocumentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -type isListDocumentsRequest_ConsistencySelector interface { - isListDocumentsRequest_ConsistencySelector() -} - -type ListDocumentsRequest_Transaction struct { - Transaction []byte `protobuf:"bytes,8,opt,name=transaction,proto3,oneof"` -} -type ListDocumentsRequest_ReadTime struct { - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,10,opt,name=read_time,json=readTime,oneof"` -} - -func (*ListDocumentsRequest_Transaction) isListDocumentsRequest_ConsistencySelector() {} -func (*ListDocumentsRequest_ReadTime) isListDocumentsRequest_ConsistencySelector() {} - -func (m *ListDocumentsRequest) GetConsistencySelector() isListDocumentsRequest_ConsistencySelector { - if m != nil { - return m.ConsistencySelector - } - return nil -} - -func (m *ListDocumentsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListDocumentsRequest) GetCollectionId() string { - if m != nil { - return m.CollectionId - } - return "" -} - -func (m *ListDocumentsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListDocumentsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListDocumentsRequest) GetOrderBy() string { - if m != nil { - return m.OrderBy - } - return "" -} - -func (m *ListDocumentsRequest) GetMask() *DocumentMask { - if m != nil { - return m.Mask - } - return nil -} - -func (m *ListDocumentsRequest) GetTransaction() []byte { - if x, ok := m.GetConsistencySelector().(*ListDocumentsRequest_Transaction); ok { - return x.Transaction - } - return nil -} - -func (m *ListDocumentsRequest) GetReadTime() *google_protobuf1.Timestamp { - if x, ok := m.GetConsistencySelector().(*ListDocumentsRequest_ReadTime); ok { - return x.ReadTime - } - return nil -} - -func (m *ListDocumentsRequest) GetShowMissing() bool { - if m != nil { - return m.ShowMissing - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ListDocumentsRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ListDocumentsRequest_OneofMarshaler, _ListDocumentsRequest_OneofUnmarshaler, _ListDocumentsRequest_OneofSizer, []interface{}{ - (*ListDocumentsRequest_Transaction)(nil), - (*ListDocumentsRequest_ReadTime)(nil), - } -} - -func _ListDocumentsRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ListDocumentsRequest) - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *ListDocumentsRequest_Transaction: - b.EncodeVarint(8<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Transaction) - case *ListDocumentsRequest_ReadTime: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadTime); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ListDocumentsRequest.ConsistencySelector has unexpected type %T", x) - } - return nil -} - -func _ListDocumentsRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ListDocumentsRequest) - switch tag { - case 8: // consistency_selector.transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ConsistencySelector = &ListDocumentsRequest_Transaction{x} - return true, err - case 10: // consistency_selector.read_time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.ConsistencySelector = &ListDocumentsRequest_ReadTime{msg} - return true, err - default: - return false, nil - } -} - -func _ListDocumentsRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ListDocumentsRequest) - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *ListDocumentsRequest_Transaction: - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Transaction))) - n += len(x.Transaction) - case *ListDocumentsRequest_ReadTime: - s := proto.Size(x.ReadTime) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response for [Firestore.ListDocuments][google.firestore.v1beta1.Firestore.ListDocuments]. -type ListDocumentsResponse struct { - // The Documents found. - Documents []*Document `protobuf:"bytes,1,rep,name=documents" json:"documents,omitempty"` - // The next page token. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListDocumentsResponse) Reset() { *m = ListDocumentsResponse{} } -func (m *ListDocumentsResponse) String() string { return proto.CompactTextString(m) } -func (*ListDocumentsResponse) ProtoMessage() {} -func (*ListDocumentsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *ListDocumentsResponse) GetDocuments() []*Document { - if m != nil { - return m.Documents - } - return nil -} - -func (m *ListDocumentsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request for [Firestore.CreateDocument][google.firestore.v1beta1.Firestore.CreateDocument]. -type CreateDocumentRequest struct { - // The parent resource. For example: - // `projects/{project_id}/databases/{database_id}/documents` or - // `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The collection ID, relative to `parent`, to list. For example: `chatrooms`. - CollectionId string `protobuf:"bytes,2,opt,name=collection_id,json=collectionId" json:"collection_id,omitempty"` - // The client-assigned document ID to use for this document. - // - // Optional. If not specified, an ID will be assigned by the service. - DocumentId string `protobuf:"bytes,3,opt,name=document_id,json=documentId" json:"document_id,omitempty"` - // The document to create. `name` must not be set. - Document *Document `protobuf:"bytes,4,opt,name=document" json:"document,omitempty"` - // The fields to return. If not set, returns all fields. - // - // If the document has a field that is not present in this mask, that field - // will not be returned in the response. - Mask *DocumentMask `protobuf:"bytes,5,opt,name=mask" json:"mask,omitempty"` -} - -func (m *CreateDocumentRequest) Reset() { *m = CreateDocumentRequest{} } -func (m *CreateDocumentRequest) String() string { return proto.CompactTextString(m) } -func (*CreateDocumentRequest) ProtoMessage() {} -func (*CreateDocumentRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *CreateDocumentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateDocumentRequest) GetCollectionId() string { - if m != nil { - return m.CollectionId - } - return "" -} - -func (m *CreateDocumentRequest) GetDocumentId() string { - if m != nil { - return m.DocumentId - } - return "" -} - -func (m *CreateDocumentRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *CreateDocumentRequest) GetMask() *DocumentMask { - if m != nil { - return m.Mask - } - return nil -} - -// The request for [Firestore.UpdateDocument][google.firestore.v1beta1.Firestore.UpdateDocument]. -type UpdateDocumentRequest struct { - // The updated document. - // Creates the document if it does not already exist. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The fields to update. - // None of the field paths in the mask may contain a reserved name. - // - // If the document exists on the server and has fields not referenced in the - // mask, they are left unchanged. - // Fields referenced in the mask, but not present in the input document, are - // deleted from the document on the server. - UpdateMask *DocumentMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` - // The fields to return. If not set, returns all fields. - // - // If the document has a field that is not present in this mask, that field - // will not be returned in the response. - Mask *DocumentMask `protobuf:"bytes,3,opt,name=mask" json:"mask,omitempty"` - // An optional precondition on the document. - // The request will fail if this is set and not met by the target document. - CurrentDocument *Precondition `protobuf:"bytes,4,opt,name=current_document,json=currentDocument" json:"current_document,omitempty"` -} - -func (m *UpdateDocumentRequest) Reset() { *m = UpdateDocumentRequest{} } -func (m *UpdateDocumentRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateDocumentRequest) ProtoMessage() {} -func (*UpdateDocumentRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *UpdateDocumentRequest) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *UpdateDocumentRequest) GetUpdateMask() *DocumentMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func (m *UpdateDocumentRequest) GetMask() *DocumentMask { - if m != nil { - return m.Mask - } - return nil -} - -func (m *UpdateDocumentRequest) GetCurrentDocument() *Precondition { - if m != nil { - return m.CurrentDocument - } - return nil -} - -// The request for [Firestore.DeleteDocument][google.firestore.v1beta1.Firestore.DeleteDocument]. -type DeleteDocumentRequest struct { - // The resource name of the Document to delete. In the format: - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // An optional precondition on the document. - // The request will fail if this is set and not met by the target document. - CurrentDocument *Precondition `protobuf:"bytes,2,opt,name=current_document,json=currentDocument" json:"current_document,omitempty"` -} - -func (m *DeleteDocumentRequest) Reset() { *m = DeleteDocumentRequest{} } -func (m *DeleteDocumentRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteDocumentRequest) ProtoMessage() {} -func (*DeleteDocumentRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *DeleteDocumentRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DeleteDocumentRequest) GetCurrentDocument() *Precondition { - if m != nil { - return m.CurrentDocument - } - return nil -} - -// The request for [Firestore.BatchGetDocuments][google.firestore.v1beta1.Firestore.BatchGetDocuments]. -type BatchGetDocumentsRequest struct { - // The database name. In the format: - // `projects/{project_id}/databases/{database_id}`. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // The names of the documents to retrieve. In the format: - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - // The request will fail if any of the document is not a child resource of the - // given `database`. Duplicate names will be elided. - Documents []string `protobuf:"bytes,2,rep,name=documents" json:"documents,omitempty"` - // The fields to return. If not set, returns all fields. - // - // If a document has a field that is not present in this mask, that field will - // not be returned in the response. - Mask *DocumentMask `protobuf:"bytes,3,opt,name=mask" json:"mask,omitempty"` - // The consistency mode for this transaction. - // If not set, defaults to strong consistency. - // - // Types that are valid to be assigned to ConsistencySelector: - // *BatchGetDocumentsRequest_Transaction - // *BatchGetDocumentsRequest_NewTransaction - // *BatchGetDocumentsRequest_ReadTime - ConsistencySelector isBatchGetDocumentsRequest_ConsistencySelector `protobuf_oneof:"consistency_selector"` -} - -func (m *BatchGetDocumentsRequest) Reset() { *m = BatchGetDocumentsRequest{} } -func (m *BatchGetDocumentsRequest) String() string { return proto.CompactTextString(m) } -func (*BatchGetDocumentsRequest) ProtoMessage() {} -func (*BatchGetDocumentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -type isBatchGetDocumentsRequest_ConsistencySelector interface { - isBatchGetDocumentsRequest_ConsistencySelector() -} - -type BatchGetDocumentsRequest_Transaction struct { - Transaction []byte `protobuf:"bytes,4,opt,name=transaction,proto3,oneof"` -} -type BatchGetDocumentsRequest_NewTransaction struct { - NewTransaction *TransactionOptions `protobuf:"bytes,5,opt,name=new_transaction,json=newTransaction,oneof"` -} -type BatchGetDocumentsRequest_ReadTime struct { - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,7,opt,name=read_time,json=readTime,oneof"` -} - -func (*BatchGetDocumentsRequest_Transaction) isBatchGetDocumentsRequest_ConsistencySelector() {} -func (*BatchGetDocumentsRequest_NewTransaction) isBatchGetDocumentsRequest_ConsistencySelector() {} -func (*BatchGetDocumentsRequest_ReadTime) isBatchGetDocumentsRequest_ConsistencySelector() {} - -func (m *BatchGetDocumentsRequest) GetConsistencySelector() isBatchGetDocumentsRequest_ConsistencySelector { - if m != nil { - return m.ConsistencySelector - } - return nil -} - -func (m *BatchGetDocumentsRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *BatchGetDocumentsRequest) GetDocuments() []string { - if m != nil { - return m.Documents - } - return nil -} - -func (m *BatchGetDocumentsRequest) GetMask() *DocumentMask { - if m != nil { - return m.Mask - } - return nil -} - -func (m *BatchGetDocumentsRequest) GetTransaction() []byte { - if x, ok := m.GetConsistencySelector().(*BatchGetDocumentsRequest_Transaction); ok { - return x.Transaction - } - return nil -} - -func (m *BatchGetDocumentsRequest) GetNewTransaction() *TransactionOptions { - if x, ok := m.GetConsistencySelector().(*BatchGetDocumentsRequest_NewTransaction); ok { - return x.NewTransaction - } - return nil -} - -func (m *BatchGetDocumentsRequest) GetReadTime() *google_protobuf1.Timestamp { - if x, ok := m.GetConsistencySelector().(*BatchGetDocumentsRequest_ReadTime); ok { - return x.ReadTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*BatchGetDocumentsRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _BatchGetDocumentsRequest_OneofMarshaler, _BatchGetDocumentsRequest_OneofUnmarshaler, _BatchGetDocumentsRequest_OneofSizer, []interface{}{ - (*BatchGetDocumentsRequest_Transaction)(nil), - (*BatchGetDocumentsRequest_NewTransaction)(nil), - (*BatchGetDocumentsRequest_ReadTime)(nil), - } -} - -func _BatchGetDocumentsRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*BatchGetDocumentsRequest) - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *BatchGetDocumentsRequest_Transaction: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Transaction) - case *BatchGetDocumentsRequest_NewTransaction: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.NewTransaction); err != nil { - return err - } - case *BatchGetDocumentsRequest_ReadTime: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadTime); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("BatchGetDocumentsRequest.ConsistencySelector has unexpected type %T", x) - } - return nil -} - -func _BatchGetDocumentsRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*BatchGetDocumentsRequest) - switch tag { - case 4: // consistency_selector.transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ConsistencySelector = &BatchGetDocumentsRequest_Transaction{x} - return true, err - case 5: // consistency_selector.new_transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions) - err := b.DecodeMessage(msg) - m.ConsistencySelector = &BatchGetDocumentsRequest_NewTransaction{msg} - return true, err - case 7: // consistency_selector.read_time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.ConsistencySelector = &BatchGetDocumentsRequest_ReadTime{msg} - return true, err - default: - return false, nil - } -} - -func _BatchGetDocumentsRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*BatchGetDocumentsRequest) - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *BatchGetDocumentsRequest_Transaction: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Transaction))) - n += len(x.Transaction) - case *BatchGetDocumentsRequest_NewTransaction: - s := proto.Size(x.NewTransaction) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BatchGetDocumentsRequest_ReadTime: - s := proto.Size(x.ReadTime) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The streamed response for [Firestore.BatchGetDocuments][google.firestore.v1beta1.Firestore.BatchGetDocuments]. -type BatchGetDocumentsResponse struct { - // A single result. - // This can be empty if the server is just returning a transaction. - // - // Types that are valid to be assigned to Result: - // *BatchGetDocumentsResponse_Found - // *BatchGetDocumentsResponse_Missing - Result isBatchGetDocumentsResponse_Result `protobuf_oneof:"result"` - // The transaction that was started as part of this request. - // Will only be set in the first response, and only if - // [BatchGetDocumentsRequest.new_transaction][google.firestore.v1beta1.BatchGetDocumentsRequest.new_transaction] was set in the request. - Transaction []byte `protobuf:"bytes,3,opt,name=transaction,proto3" json:"transaction,omitempty"` - // The time at which the document was read. - // This may be monotically increasing, in this case the previous documents in - // the result stream are guaranteed not to have changed between their - // read_time and this one. - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=read_time,json=readTime" json:"read_time,omitempty"` -} - -func (m *BatchGetDocumentsResponse) Reset() { *m = BatchGetDocumentsResponse{} } -func (m *BatchGetDocumentsResponse) String() string { return proto.CompactTextString(m) } -func (*BatchGetDocumentsResponse) ProtoMessage() {} -func (*BatchGetDocumentsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -type isBatchGetDocumentsResponse_Result interface { - isBatchGetDocumentsResponse_Result() -} - -type BatchGetDocumentsResponse_Found struct { - Found *Document `protobuf:"bytes,1,opt,name=found,oneof"` -} -type BatchGetDocumentsResponse_Missing struct { - Missing string `protobuf:"bytes,2,opt,name=missing,oneof"` -} - -func (*BatchGetDocumentsResponse_Found) isBatchGetDocumentsResponse_Result() {} -func (*BatchGetDocumentsResponse_Missing) isBatchGetDocumentsResponse_Result() {} - -func (m *BatchGetDocumentsResponse) GetResult() isBatchGetDocumentsResponse_Result { - if m != nil { - return m.Result - } - return nil -} - -func (m *BatchGetDocumentsResponse) GetFound() *Document { - if x, ok := m.GetResult().(*BatchGetDocumentsResponse_Found); ok { - return x.Found - } - return nil -} - -func (m *BatchGetDocumentsResponse) GetMissing() string { - if x, ok := m.GetResult().(*BatchGetDocumentsResponse_Missing); ok { - return x.Missing - } - return "" -} - -func (m *BatchGetDocumentsResponse) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *BatchGetDocumentsResponse) GetReadTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ReadTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*BatchGetDocumentsResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _BatchGetDocumentsResponse_OneofMarshaler, _BatchGetDocumentsResponse_OneofUnmarshaler, _BatchGetDocumentsResponse_OneofSizer, []interface{}{ - (*BatchGetDocumentsResponse_Found)(nil), - (*BatchGetDocumentsResponse_Missing)(nil), - } -} - -func _BatchGetDocumentsResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*BatchGetDocumentsResponse) - // result - switch x := m.Result.(type) { - case *BatchGetDocumentsResponse_Found: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Found); err != nil { - return err - } - case *BatchGetDocumentsResponse_Missing: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Missing) - case nil: - default: - return fmt.Errorf("BatchGetDocumentsResponse.Result has unexpected type %T", x) - } - return nil -} - -func _BatchGetDocumentsResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*BatchGetDocumentsResponse) - switch tag { - case 1: // result.found - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Document) - err := b.DecodeMessage(msg) - m.Result = &BatchGetDocumentsResponse_Found{msg} - return true, err - case 2: // result.missing - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Result = &BatchGetDocumentsResponse_Missing{x} - return true, err - default: - return false, nil - } -} - -func _BatchGetDocumentsResponse_OneofSizer(msg proto.Message) (n int) { - m := msg.(*BatchGetDocumentsResponse) - // result - switch x := m.Result.(type) { - case *BatchGetDocumentsResponse_Found: - s := proto.Size(x.Found) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *BatchGetDocumentsResponse_Missing: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Missing))) - n += len(x.Missing) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The request for [Firestore.BeginTransaction][google.firestore.v1beta1.Firestore.BeginTransaction]. -type BeginTransactionRequest struct { - // The database name. In the format: - // `projects/{project_id}/databases/{database_id}`. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // The options for the transaction. - // Defaults to a read-write transaction. - Options *TransactionOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"` -} - -func (m *BeginTransactionRequest) Reset() { *m = BeginTransactionRequest{} } -func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) } -func (*BeginTransactionRequest) ProtoMessage() {} -func (*BeginTransactionRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *BeginTransactionRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *BeginTransactionRequest) GetOptions() *TransactionOptions { - if m != nil { - return m.Options - } - return nil -} - -// The response for [Firestore.BeginTransaction][google.firestore.v1beta1.Firestore.BeginTransaction]. -type BeginTransactionResponse struct { - // The transaction that was started. - Transaction []byte `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` -} - -func (m *BeginTransactionResponse) Reset() { *m = BeginTransactionResponse{} } -func (m *BeginTransactionResponse) String() string { return proto.CompactTextString(m) } -func (*BeginTransactionResponse) ProtoMessage() {} -func (*BeginTransactionResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{9} } - -func (m *BeginTransactionResponse) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -// The request for [Firestore.Commit][google.firestore.v1beta1.Firestore.Commit]. -type CommitRequest struct { - // The database name. In the format: - // `projects/{project_id}/databases/{database_id}`. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // The writes to apply. - // - // Always executed atomically and in order. - Writes []*Write `protobuf:"bytes,2,rep,name=writes" json:"writes,omitempty"` - // If set, applies all writes in this transaction, and commits it. - Transaction []byte `protobuf:"bytes,3,opt,name=transaction,proto3" json:"transaction,omitempty"` -} - -func (m *CommitRequest) Reset() { *m = CommitRequest{} } -func (m *CommitRequest) String() string { return proto.CompactTextString(m) } -func (*CommitRequest) ProtoMessage() {} -func (*CommitRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{10} } - -func (m *CommitRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *CommitRequest) GetWrites() []*Write { - if m != nil { - return m.Writes - } - return nil -} - -func (m *CommitRequest) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -// The response for [Firestore.Commit][google.firestore.v1beta1.Firestore.Commit]. -type CommitResponse struct { - // The result of applying the writes. - // - // This i-th write result corresponds to the i-th write in the - // request. - WriteResults []*WriteResult `protobuf:"bytes,1,rep,name=write_results,json=writeResults" json:"write_results,omitempty"` - // The time at which the commit occurred. - CommitTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=commit_time,json=commitTime" json:"commit_time,omitempty"` -} - -func (m *CommitResponse) Reset() { *m = CommitResponse{} } -func (m *CommitResponse) String() string { return proto.CompactTextString(m) } -func (*CommitResponse) ProtoMessage() {} -func (*CommitResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{11} } - -func (m *CommitResponse) GetWriteResults() []*WriteResult { - if m != nil { - return m.WriteResults - } - return nil -} - -func (m *CommitResponse) GetCommitTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CommitTime - } - return nil -} - -// The request for [Firestore.Rollback][google.firestore.v1beta1.Firestore.Rollback]. -type RollbackRequest struct { - // The database name. In the format: - // `projects/{project_id}/databases/{database_id}`. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // The transaction to roll back. - Transaction []byte `protobuf:"bytes,2,opt,name=transaction,proto3" json:"transaction,omitempty"` -} - -func (m *RollbackRequest) Reset() { *m = RollbackRequest{} } -func (m *RollbackRequest) String() string { return proto.CompactTextString(m) } -func (*RollbackRequest) ProtoMessage() {} -func (*RollbackRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{12} } - -func (m *RollbackRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *RollbackRequest) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -// The request for [Firestore.RunQuery][google.firestore.v1beta1.Firestore.RunQuery]. -type RunQueryRequest struct { - // The parent resource name. In the format: - // `projects/{project_id}/databases/{database_id}/documents` or - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - // For example: - // `projects/my-project/databases/my-database/documents` or - // `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The query to run. - // - // Types that are valid to be assigned to QueryType: - // *RunQueryRequest_StructuredQuery - QueryType isRunQueryRequest_QueryType `protobuf_oneof:"query_type"` - // The consistency mode for this transaction. - // If not set, defaults to strong consistency. - // - // Types that are valid to be assigned to ConsistencySelector: - // *RunQueryRequest_Transaction - // *RunQueryRequest_NewTransaction - // *RunQueryRequest_ReadTime - ConsistencySelector isRunQueryRequest_ConsistencySelector `protobuf_oneof:"consistency_selector"` -} - -func (m *RunQueryRequest) Reset() { *m = RunQueryRequest{} } -func (m *RunQueryRequest) String() string { return proto.CompactTextString(m) } -func (*RunQueryRequest) ProtoMessage() {} -func (*RunQueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{13} } - -type isRunQueryRequest_QueryType interface { - isRunQueryRequest_QueryType() -} -type isRunQueryRequest_ConsistencySelector interface { - isRunQueryRequest_ConsistencySelector() -} - -type RunQueryRequest_StructuredQuery struct { - StructuredQuery *StructuredQuery `protobuf:"bytes,2,opt,name=structured_query,json=structuredQuery,oneof"` -} -type RunQueryRequest_Transaction struct { - Transaction []byte `protobuf:"bytes,5,opt,name=transaction,proto3,oneof"` -} -type RunQueryRequest_NewTransaction struct { - NewTransaction *TransactionOptions `protobuf:"bytes,6,opt,name=new_transaction,json=newTransaction,oneof"` -} -type RunQueryRequest_ReadTime struct { - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,7,opt,name=read_time,json=readTime,oneof"` -} - -func (*RunQueryRequest_StructuredQuery) isRunQueryRequest_QueryType() {} -func (*RunQueryRequest_Transaction) isRunQueryRequest_ConsistencySelector() {} -func (*RunQueryRequest_NewTransaction) isRunQueryRequest_ConsistencySelector() {} -func (*RunQueryRequest_ReadTime) isRunQueryRequest_ConsistencySelector() {} - -func (m *RunQueryRequest) GetQueryType() isRunQueryRequest_QueryType { - if m != nil { - return m.QueryType - } - return nil -} -func (m *RunQueryRequest) GetConsistencySelector() isRunQueryRequest_ConsistencySelector { - if m != nil { - return m.ConsistencySelector - } - return nil -} - -func (m *RunQueryRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *RunQueryRequest) GetStructuredQuery() *StructuredQuery { - if x, ok := m.GetQueryType().(*RunQueryRequest_StructuredQuery); ok { - return x.StructuredQuery - } - return nil -} - -func (m *RunQueryRequest) GetTransaction() []byte { - if x, ok := m.GetConsistencySelector().(*RunQueryRequest_Transaction); ok { - return x.Transaction - } - return nil -} - -func (m *RunQueryRequest) GetNewTransaction() *TransactionOptions { - if x, ok := m.GetConsistencySelector().(*RunQueryRequest_NewTransaction); ok { - return x.NewTransaction - } - return nil -} - -func (m *RunQueryRequest) GetReadTime() *google_protobuf1.Timestamp { - if x, ok := m.GetConsistencySelector().(*RunQueryRequest_ReadTime); ok { - return x.ReadTime - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RunQueryRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RunQueryRequest_OneofMarshaler, _RunQueryRequest_OneofUnmarshaler, _RunQueryRequest_OneofSizer, []interface{}{ - (*RunQueryRequest_StructuredQuery)(nil), - (*RunQueryRequest_Transaction)(nil), - (*RunQueryRequest_NewTransaction)(nil), - (*RunQueryRequest_ReadTime)(nil), - } -} - -func _RunQueryRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RunQueryRequest) - // query_type - switch x := m.QueryType.(type) { - case *RunQueryRequest_StructuredQuery: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StructuredQuery); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RunQueryRequest.QueryType has unexpected type %T", x) - } - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *RunQueryRequest_Transaction: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Transaction) - case *RunQueryRequest_NewTransaction: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.NewTransaction); err != nil { - return err - } - case *RunQueryRequest_ReadTime: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadTime); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RunQueryRequest.ConsistencySelector has unexpected type %T", x) - } - return nil -} - -func _RunQueryRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RunQueryRequest) - switch tag { - case 2: // query_type.structured_query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StructuredQuery) - err := b.DecodeMessage(msg) - m.QueryType = &RunQueryRequest_StructuredQuery{msg} - return true, err - case 5: // consistency_selector.transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ConsistencySelector = &RunQueryRequest_Transaction{x} - return true, err - case 6: // consistency_selector.new_transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions) - err := b.DecodeMessage(msg) - m.ConsistencySelector = &RunQueryRequest_NewTransaction{msg} - return true, err - case 7: // consistency_selector.read_time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.ConsistencySelector = &RunQueryRequest_ReadTime{msg} - return true, err - default: - return false, nil - } -} - -func _RunQueryRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RunQueryRequest) - // query_type - switch x := m.QueryType.(type) { - case *RunQueryRequest_StructuredQuery: - s := proto.Size(x.StructuredQuery) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // consistency_selector - switch x := m.ConsistencySelector.(type) { - case *RunQueryRequest_Transaction: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Transaction))) - n += len(x.Transaction) - case *RunQueryRequest_NewTransaction: - s := proto.Size(x.NewTransaction) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RunQueryRequest_ReadTime: - s := proto.Size(x.ReadTime) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response for [Firestore.RunQuery][google.firestore.v1beta1.Firestore.RunQuery]. -type RunQueryResponse struct { - // The transaction that was started as part of this request. - // Can only be set in the first response, and only if - // [RunQueryRequest.new_transaction][google.firestore.v1beta1.RunQueryRequest.new_transaction] was set in the request. - // If set, no other fields will be set in this response. - Transaction []byte `protobuf:"bytes,2,opt,name=transaction,proto3" json:"transaction,omitempty"` - // A query result. - // Not set when reporting partial progress. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The time at which the document was read. This may be monotonically - // increasing; in this case, the previous documents in the result stream are - // guaranteed not to have changed between their `read_time` and this one. - // - // If the query returns no results, a response with `read_time` and no - // `document` will be sent, and this represents the time at which the query - // was run. - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=read_time,json=readTime" json:"read_time,omitempty"` - // The number of results that have been skipped due to an offset between - // the last response and the current response. - SkippedResults int32 `protobuf:"varint,4,opt,name=skipped_results,json=skippedResults" json:"skipped_results,omitempty"` -} - -func (m *RunQueryResponse) Reset() { *m = RunQueryResponse{} } -func (m *RunQueryResponse) String() string { return proto.CompactTextString(m) } -func (*RunQueryResponse) ProtoMessage() {} -func (*RunQueryResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{14} } - -func (m *RunQueryResponse) GetTransaction() []byte { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *RunQueryResponse) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *RunQueryResponse) GetReadTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ReadTime - } - return nil -} - -func (m *RunQueryResponse) GetSkippedResults() int32 { - if m != nil { - return m.SkippedResults - } - return 0 -} - -// The request for [Firestore.Write][google.firestore.v1beta1.Firestore.Write]. -// -// The first request creates a stream, or resumes an existing one from a token. -// -// When creating a new stream, the server replies with a response containing -// only an ID and a token, to use in the next request. -// -// When resuming a stream, the server first streams any responses later than the -// given token, then a response containing only an up-to-date token, to use in -// the next request. -type WriteRequest struct { - // The database name. In the format: - // `projects/{project_id}/databases/{database_id}`. - // This is only required in the first message. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // The ID of the write stream to resume. - // This may only be set in the first message. When left empty, a new write - // stream will be created. - StreamId string `protobuf:"bytes,2,opt,name=stream_id,json=streamId" json:"stream_id,omitempty"` - // The writes to apply. - // - // Always executed atomically and in order. - // This must be empty on the first request. - // This may be empty on the last request. - // This must not be empty on all other requests. - Writes []*Write `protobuf:"bytes,3,rep,name=writes" json:"writes,omitempty"` - // A stream token that was previously sent by the server. - // - // The client should set this field to the token from the most recent - // [WriteResponse][google.firestore.v1beta1.WriteResponse] it has received. This acknowledges that the client has - // received responses up to this token. After sending this token, earlier - // tokens may not be used anymore. - // - // The server may close the stream if there are too many unacknowledged - // responses. - // - // Leave this field unset when creating a new stream. To resume a stream at - // a specific point, set this field and the `stream_id` field. - // - // Leave this field unset when creating a new stream. - StreamToken []byte `protobuf:"bytes,4,opt,name=stream_token,json=streamToken,proto3" json:"stream_token,omitempty"` - // Labels associated with this write request. - Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *WriteRequest) Reset() { *m = WriteRequest{} } -func (m *WriteRequest) String() string { return proto.CompactTextString(m) } -func (*WriteRequest) ProtoMessage() {} -func (*WriteRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{15} } - -func (m *WriteRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *WriteRequest) GetStreamId() string { - if m != nil { - return m.StreamId - } - return "" -} - -func (m *WriteRequest) GetWrites() []*Write { - if m != nil { - return m.Writes - } - return nil -} - -func (m *WriteRequest) GetStreamToken() []byte { - if m != nil { - return m.StreamToken - } - return nil -} - -func (m *WriteRequest) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// The response for [Firestore.Write][google.firestore.v1beta1.Firestore.Write]. -type WriteResponse struct { - // The ID of the stream. - // Only set on the first message, when a new stream was created. - StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId" json:"stream_id,omitempty"` - // A token that represents the position of this response in the stream. - // This can be used by a client to resume the stream at this point. - // - // This field is always set. - StreamToken []byte `protobuf:"bytes,2,opt,name=stream_token,json=streamToken,proto3" json:"stream_token,omitempty"` - // The result of applying the writes. - // - // This i-th write result corresponds to the i-th write in the - // request. - WriteResults []*WriteResult `protobuf:"bytes,3,rep,name=write_results,json=writeResults" json:"write_results,omitempty"` - // The time at which the commit occurred. - CommitTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=commit_time,json=commitTime" json:"commit_time,omitempty"` -} - -func (m *WriteResponse) Reset() { *m = WriteResponse{} } -func (m *WriteResponse) String() string { return proto.CompactTextString(m) } -func (*WriteResponse) ProtoMessage() {} -func (*WriteResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{16} } - -func (m *WriteResponse) GetStreamId() string { - if m != nil { - return m.StreamId - } - return "" -} - -func (m *WriteResponse) GetStreamToken() []byte { - if m != nil { - return m.StreamToken - } - return nil -} - -func (m *WriteResponse) GetWriteResults() []*WriteResult { - if m != nil { - return m.WriteResults - } - return nil -} - -func (m *WriteResponse) GetCommitTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CommitTime - } - return nil -} - -// A request for [Firestore.Listen][google.firestore.v1beta1.Firestore.Listen] -type ListenRequest struct { - // The database name. In the format: - // `projects/{project_id}/databases/{database_id}`. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // The supported target changes. - // - // Types that are valid to be assigned to TargetChange: - // *ListenRequest_AddTarget - // *ListenRequest_RemoveTarget - TargetChange isListenRequest_TargetChange `protobuf_oneof:"target_change"` - // Labels associated with this target change. - Labels map[string]string `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *ListenRequest) Reset() { *m = ListenRequest{} } -func (m *ListenRequest) String() string { return proto.CompactTextString(m) } -func (*ListenRequest) ProtoMessage() {} -func (*ListenRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{17} } - -type isListenRequest_TargetChange interface { - isListenRequest_TargetChange() -} - -type ListenRequest_AddTarget struct { - AddTarget *Target `protobuf:"bytes,2,opt,name=add_target,json=addTarget,oneof"` -} -type ListenRequest_RemoveTarget struct { - RemoveTarget int32 `protobuf:"varint,3,opt,name=remove_target,json=removeTarget,oneof"` -} - -func (*ListenRequest_AddTarget) isListenRequest_TargetChange() {} -func (*ListenRequest_RemoveTarget) isListenRequest_TargetChange() {} - -func (m *ListenRequest) GetTargetChange() isListenRequest_TargetChange { - if m != nil { - return m.TargetChange - } - return nil -} - -func (m *ListenRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *ListenRequest) GetAddTarget() *Target { - if x, ok := m.GetTargetChange().(*ListenRequest_AddTarget); ok { - return x.AddTarget - } - return nil -} - -func (m *ListenRequest) GetRemoveTarget() int32 { - if x, ok := m.GetTargetChange().(*ListenRequest_RemoveTarget); ok { - return x.RemoveTarget - } - return 0 -} - -func (m *ListenRequest) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ListenRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ListenRequest_OneofMarshaler, _ListenRequest_OneofUnmarshaler, _ListenRequest_OneofSizer, []interface{}{ - (*ListenRequest_AddTarget)(nil), - (*ListenRequest_RemoveTarget)(nil), - } -} - -func _ListenRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ListenRequest) - // target_change - switch x := m.TargetChange.(type) { - case *ListenRequest_AddTarget: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AddTarget); err != nil { - return err - } - case *ListenRequest_RemoveTarget: - b.EncodeVarint(3<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.RemoveTarget)) - case nil: - default: - return fmt.Errorf("ListenRequest.TargetChange has unexpected type %T", x) - } - return nil -} - -func _ListenRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ListenRequest) - switch tag { - case 2: // target_change.add_target - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Target) - err := b.DecodeMessage(msg) - m.TargetChange = &ListenRequest_AddTarget{msg} - return true, err - case 3: // target_change.remove_target - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.TargetChange = &ListenRequest_RemoveTarget{int32(x)} - return true, err - default: - return false, nil - } -} - -func _ListenRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ListenRequest) - // target_change - switch x := m.TargetChange.(type) { - case *ListenRequest_AddTarget: - s := proto.Size(x.AddTarget) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ListenRequest_RemoveTarget: - n += proto.SizeVarint(3<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.RemoveTarget)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response for [Firestore.Listen][google.firestore.v1beta1.Firestore.Listen]. -type ListenResponse struct { - // The supported responses. - // - // Types that are valid to be assigned to ResponseType: - // *ListenResponse_TargetChange - // *ListenResponse_DocumentChange - // *ListenResponse_DocumentDelete - // *ListenResponse_DocumentRemove - // *ListenResponse_Filter - ResponseType isListenResponse_ResponseType `protobuf_oneof:"response_type"` -} - -func (m *ListenResponse) Reset() { *m = ListenResponse{} } -func (m *ListenResponse) String() string { return proto.CompactTextString(m) } -func (*ListenResponse) ProtoMessage() {} -func (*ListenResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{18} } - -type isListenResponse_ResponseType interface { - isListenResponse_ResponseType() -} - -type ListenResponse_TargetChange struct { - TargetChange *TargetChange `protobuf:"bytes,2,opt,name=target_change,json=targetChange,oneof"` -} -type ListenResponse_DocumentChange struct { - DocumentChange *DocumentChange `protobuf:"bytes,3,opt,name=document_change,json=documentChange,oneof"` -} -type ListenResponse_DocumentDelete struct { - DocumentDelete *DocumentDelete `protobuf:"bytes,4,opt,name=document_delete,json=documentDelete,oneof"` -} -type ListenResponse_DocumentRemove struct { - DocumentRemove *DocumentRemove `protobuf:"bytes,6,opt,name=document_remove,json=documentRemove,oneof"` -} -type ListenResponse_Filter struct { - Filter *ExistenceFilter `protobuf:"bytes,5,opt,name=filter,oneof"` -} - -func (*ListenResponse_TargetChange) isListenResponse_ResponseType() {} -func (*ListenResponse_DocumentChange) isListenResponse_ResponseType() {} -func (*ListenResponse_DocumentDelete) isListenResponse_ResponseType() {} -func (*ListenResponse_DocumentRemove) isListenResponse_ResponseType() {} -func (*ListenResponse_Filter) isListenResponse_ResponseType() {} - -func (m *ListenResponse) GetResponseType() isListenResponse_ResponseType { - if m != nil { - return m.ResponseType - } - return nil -} - -func (m *ListenResponse) GetTargetChange() *TargetChange { - if x, ok := m.GetResponseType().(*ListenResponse_TargetChange); ok { - return x.TargetChange - } - return nil -} - -func (m *ListenResponse) GetDocumentChange() *DocumentChange { - if x, ok := m.GetResponseType().(*ListenResponse_DocumentChange); ok { - return x.DocumentChange - } - return nil -} - -func (m *ListenResponse) GetDocumentDelete() *DocumentDelete { - if x, ok := m.GetResponseType().(*ListenResponse_DocumentDelete); ok { - return x.DocumentDelete - } - return nil -} - -func (m *ListenResponse) GetDocumentRemove() *DocumentRemove { - if x, ok := m.GetResponseType().(*ListenResponse_DocumentRemove); ok { - return x.DocumentRemove - } - return nil -} - -func (m *ListenResponse) GetFilter() *ExistenceFilter { - if x, ok := m.GetResponseType().(*ListenResponse_Filter); ok { - return x.Filter - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ListenResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ListenResponse_OneofMarshaler, _ListenResponse_OneofUnmarshaler, _ListenResponse_OneofSizer, []interface{}{ - (*ListenResponse_TargetChange)(nil), - (*ListenResponse_DocumentChange)(nil), - (*ListenResponse_DocumentDelete)(nil), - (*ListenResponse_DocumentRemove)(nil), - (*ListenResponse_Filter)(nil), - } -} - -func _ListenResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ListenResponse) - // response_type - switch x := m.ResponseType.(type) { - case *ListenResponse_TargetChange: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TargetChange); err != nil { - return err - } - case *ListenResponse_DocumentChange: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DocumentChange); err != nil { - return err - } - case *ListenResponse_DocumentDelete: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DocumentDelete); err != nil { - return err - } - case *ListenResponse_DocumentRemove: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DocumentRemove); err != nil { - return err - } - case *ListenResponse_Filter: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Filter); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ListenResponse.ResponseType has unexpected type %T", x) - } - return nil -} - -func _ListenResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ListenResponse) - switch tag { - case 2: // response_type.target_change - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TargetChange) - err := b.DecodeMessage(msg) - m.ResponseType = &ListenResponse_TargetChange{msg} - return true, err - case 3: // response_type.document_change - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DocumentChange) - err := b.DecodeMessage(msg) - m.ResponseType = &ListenResponse_DocumentChange{msg} - return true, err - case 4: // response_type.document_delete - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DocumentDelete) - err := b.DecodeMessage(msg) - m.ResponseType = &ListenResponse_DocumentDelete{msg} - return true, err - case 6: // response_type.document_remove - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DocumentRemove) - err := b.DecodeMessage(msg) - m.ResponseType = &ListenResponse_DocumentRemove{msg} - return true, err - case 5: // response_type.filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ExistenceFilter) - err := b.DecodeMessage(msg) - m.ResponseType = &ListenResponse_Filter{msg} - return true, err - default: - return false, nil - } -} - -func _ListenResponse_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ListenResponse) - // response_type - switch x := m.ResponseType.(type) { - case *ListenResponse_TargetChange: - s := proto.Size(x.TargetChange) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ListenResponse_DocumentChange: - s := proto.Size(x.DocumentChange) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ListenResponse_DocumentDelete: - s := proto.Size(x.DocumentDelete) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ListenResponse_DocumentRemove: - s := proto.Size(x.DocumentRemove) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ListenResponse_Filter: - s := proto.Size(x.Filter) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A specification of a set of documents to listen to. -type Target struct { - // The type of target to listen to. - // - // Types that are valid to be assigned to TargetType: - // *Target_Query - // *Target_Documents - TargetType isTarget_TargetType `protobuf_oneof:"target_type"` - // When to start listening. - // - // If not specified, all matching Documents are returned before any - // subsequent changes. - // - // Types that are valid to be assigned to ResumeType: - // *Target_ResumeToken - // *Target_ReadTime - ResumeType isTarget_ResumeType `protobuf_oneof:"resume_type"` - // A client provided target ID. - // - // If not set, the server will assign an ID for the target. - // - // Used for resuming a target without changing IDs. The IDs can either be - // client-assigned or be server-assigned in a previous stream. All targets - // with client provided IDs must be added before adding a target that needs - // a server-assigned id. - TargetId int32 `protobuf:"varint,5,opt,name=target_id,json=targetId" json:"target_id,omitempty"` - // If the target should be removed once it is current and consistent. - Once bool `protobuf:"varint,6,opt,name=once" json:"once,omitempty"` -} - -func (m *Target) Reset() { *m = Target{} } -func (m *Target) String() string { return proto.CompactTextString(m) } -func (*Target) ProtoMessage() {} -func (*Target) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{19} } - -type isTarget_TargetType interface { - isTarget_TargetType() -} -type isTarget_ResumeType interface { - isTarget_ResumeType() -} - -type Target_Query struct { - Query *Target_QueryTarget `protobuf:"bytes,2,opt,name=query,oneof"` -} -type Target_Documents struct { - Documents *Target_DocumentsTarget `protobuf:"bytes,3,opt,name=documents,oneof"` -} -type Target_ResumeToken struct { - ResumeToken []byte `protobuf:"bytes,4,opt,name=resume_token,json=resumeToken,proto3,oneof"` -} -type Target_ReadTime struct { - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,11,opt,name=read_time,json=readTime,oneof"` -} - -func (*Target_Query) isTarget_TargetType() {} -func (*Target_Documents) isTarget_TargetType() {} -func (*Target_ResumeToken) isTarget_ResumeType() {} -func (*Target_ReadTime) isTarget_ResumeType() {} - -func (m *Target) GetTargetType() isTarget_TargetType { - if m != nil { - return m.TargetType - } - return nil -} -func (m *Target) GetResumeType() isTarget_ResumeType { - if m != nil { - return m.ResumeType - } - return nil -} - -func (m *Target) GetQuery() *Target_QueryTarget { - if x, ok := m.GetTargetType().(*Target_Query); ok { - return x.Query - } - return nil -} - -func (m *Target) GetDocuments() *Target_DocumentsTarget { - if x, ok := m.GetTargetType().(*Target_Documents); ok { - return x.Documents - } - return nil -} - -func (m *Target) GetResumeToken() []byte { - if x, ok := m.GetResumeType().(*Target_ResumeToken); ok { - return x.ResumeToken - } - return nil -} - -func (m *Target) GetReadTime() *google_protobuf1.Timestamp { - if x, ok := m.GetResumeType().(*Target_ReadTime); ok { - return x.ReadTime - } - return nil -} - -func (m *Target) GetTargetId() int32 { - if m != nil { - return m.TargetId - } - return 0 -} - -func (m *Target) GetOnce() bool { - if m != nil { - return m.Once - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Target) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Target_OneofMarshaler, _Target_OneofUnmarshaler, _Target_OneofSizer, []interface{}{ - (*Target_Query)(nil), - (*Target_Documents)(nil), - (*Target_ResumeToken)(nil), - (*Target_ReadTime)(nil), - } -} - -func _Target_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Target) - // target_type - switch x := m.TargetType.(type) { - case *Target_Query: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Query); err != nil { - return err - } - case *Target_Documents: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Documents); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Target.TargetType has unexpected type %T", x) - } - // resume_type - switch x := m.ResumeType.(type) { - case *Target_ResumeToken: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeRawBytes(x.ResumeToken) - case *Target_ReadTime: - b.EncodeVarint(11<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadTime); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Target.ResumeType has unexpected type %T", x) - } - return nil -} - -func _Target_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Target) - switch tag { - case 2: // target_type.query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Target_QueryTarget) - err := b.DecodeMessage(msg) - m.TargetType = &Target_Query{msg} - return true, err - case 3: // target_type.documents - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Target_DocumentsTarget) - err := b.DecodeMessage(msg) - m.TargetType = &Target_Documents{msg} - return true, err - case 4: // resume_type.resume_token - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.ResumeType = &Target_ResumeToken{x} - return true, err - case 11: // resume_type.read_time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.ResumeType = &Target_ReadTime{msg} - return true, err - default: - return false, nil - } -} - -func _Target_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Target) - // target_type - switch x := m.TargetType.(type) { - case *Target_Query: - s := proto.Size(x.Query) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Target_Documents: - s := proto.Size(x.Documents) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // resume_type - switch x := m.ResumeType.(type) { - case *Target_ResumeToken: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ResumeToken))) - n += len(x.ResumeToken) - case *Target_ReadTime: - s := proto.Size(x.ReadTime) - n += proto.SizeVarint(11<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A target specified by a set of documents names. -type Target_DocumentsTarget struct { - // The names of the documents to retrieve. In the format: - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - // The request will fail if any of the document is not a child resource of - // the given `database`. Duplicate names will be elided. - Documents []string `protobuf:"bytes,2,rep,name=documents" json:"documents,omitempty"` -} - -func (m *Target_DocumentsTarget) Reset() { *m = Target_DocumentsTarget{} } -func (m *Target_DocumentsTarget) String() string { return proto.CompactTextString(m) } -func (*Target_DocumentsTarget) ProtoMessage() {} -func (*Target_DocumentsTarget) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{19, 0} } - -func (m *Target_DocumentsTarget) GetDocuments() []string { - if m != nil { - return m.Documents - } - return nil -} - -// A target specified by a query. -type Target_QueryTarget struct { - // The parent resource name. In the format: - // `projects/{project_id}/databases/{database_id}/documents` or - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - // For example: - // `projects/my-project/databases/my-database/documents` or - // `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The query to run. - // - // Types that are valid to be assigned to QueryType: - // *Target_QueryTarget_StructuredQuery - QueryType isTarget_QueryTarget_QueryType `protobuf_oneof:"query_type"` -} - -func (m *Target_QueryTarget) Reset() { *m = Target_QueryTarget{} } -func (m *Target_QueryTarget) String() string { return proto.CompactTextString(m) } -func (*Target_QueryTarget) ProtoMessage() {} -func (*Target_QueryTarget) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{19, 1} } - -type isTarget_QueryTarget_QueryType interface { - isTarget_QueryTarget_QueryType() -} - -type Target_QueryTarget_StructuredQuery struct { - StructuredQuery *StructuredQuery `protobuf:"bytes,2,opt,name=structured_query,json=structuredQuery,oneof"` -} - -func (*Target_QueryTarget_StructuredQuery) isTarget_QueryTarget_QueryType() {} - -func (m *Target_QueryTarget) GetQueryType() isTarget_QueryTarget_QueryType { - if m != nil { - return m.QueryType - } - return nil -} - -func (m *Target_QueryTarget) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *Target_QueryTarget) GetStructuredQuery() *StructuredQuery { - if x, ok := m.GetQueryType().(*Target_QueryTarget_StructuredQuery); ok { - return x.StructuredQuery - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Target_QueryTarget) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Target_QueryTarget_OneofMarshaler, _Target_QueryTarget_OneofUnmarshaler, _Target_QueryTarget_OneofSizer, []interface{}{ - (*Target_QueryTarget_StructuredQuery)(nil), - } -} - -func _Target_QueryTarget_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Target_QueryTarget) - // query_type - switch x := m.QueryType.(type) { - case *Target_QueryTarget_StructuredQuery: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StructuredQuery); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Target_QueryTarget.QueryType has unexpected type %T", x) - } - return nil -} - -func _Target_QueryTarget_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Target_QueryTarget) - switch tag { - case 2: // query_type.structured_query - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StructuredQuery) - err := b.DecodeMessage(msg) - m.QueryType = &Target_QueryTarget_StructuredQuery{msg} - return true, err - default: - return false, nil - } -} - -func _Target_QueryTarget_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Target_QueryTarget) - // query_type - switch x := m.QueryType.(type) { - case *Target_QueryTarget_StructuredQuery: - s := proto.Size(x.StructuredQuery) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Targets being watched have changed. -type TargetChange struct { - // The type of change that occurred. - TargetChangeType TargetChange_TargetChangeType `protobuf:"varint,1,opt,name=target_change_type,json=targetChangeType,enum=google.firestore.v1beta1.TargetChange_TargetChangeType" json:"target_change_type,omitempty"` - // The target IDs of targets that have changed. - // - // If empty, the change applies to all targets. - // - // For `target_change_type=ADD`, the order of the target IDs matches the order - // of the requests to add the targets. This allows clients to unambiguously - // associate server-assigned target IDs with added targets. - // - // For other states, the order of the target IDs is not defined. - TargetIds []int32 `protobuf:"varint,2,rep,packed,name=target_ids,json=targetIds" json:"target_ids,omitempty"` - // The error that resulted in this change, if applicable. - Cause *google_rpc.Status `protobuf:"bytes,3,opt,name=cause" json:"cause,omitempty"` - // A token that can be used to resume the stream for the given `target_ids`, - // or all targets if `target_ids` is empty. - // - // Not set on every target change. - ResumeToken []byte `protobuf:"bytes,4,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"` - // The consistent `read_time` for the given `target_ids` (omitted when the - // target_ids are not at a consistent snapshot). - // - // The stream is guaranteed to send a `read_time` with `target_ids` empty - // whenever the entire stream reaches a new consistent snapshot. ADD, - // CURRENT, and RESET messages are guaranteed to (eventually) result in a - // new consistent snapshot (while NO_CHANGE and REMOVE messages are not). - // - // For a given stream, `read_time` is guaranteed to be monotonically - // increasing. - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=read_time,json=readTime" json:"read_time,omitempty"` -} - -func (m *TargetChange) Reset() { *m = TargetChange{} } -func (m *TargetChange) String() string { return proto.CompactTextString(m) } -func (*TargetChange) ProtoMessage() {} -func (*TargetChange) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{20} } - -func (m *TargetChange) GetTargetChangeType() TargetChange_TargetChangeType { - if m != nil { - return m.TargetChangeType - } - return TargetChange_NO_CHANGE -} - -func (m *TargetChange) GetTargetIds() []int32 { - if m != nil { - return m.TargetIds - } - return nil -} - -func (m *TargetChange) GetCause() *google_rpc.Status { - if m != nil { - return m.Cause - } - return nil -} - -func (m *TargetChange) GetResumeToken() []byte { - if m != nil { - return m.ResumeToken - } - return nil -} - -func (m *TargetChange) GetReadTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ReadTime - } - return nil -} - -// The request for [Firestore.ListCollectionIds][google.firestore.v1beta1.Firestore.ListCollectionIds]. -type ListCollectionIdsRequest struct { - // The parent document. In the format: - // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. - // For example: - // `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The maximum number of results to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // A page token. Must be a value from - // [ListCollectionIdsResponse][google.firestore.v1beta1.ListCollectionIdsResponse]. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListCollectionIdsRequest) Reset() { *m = ListCollectionIdsRequest{} } -func (m *ListCollectionIdsRequest) String() string { return proto.CompactTextString(m) } -func (*ListCollectionIdsRequest) ProtoMessage() {} -func (*ListCollectionIdsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{21} } - -func (m *ListCollectionIdsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListCollectionIdsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListCollectionIdsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response from [Firestore.ListCollectionIds][google.firestore.v1beta1.Firestore.ListCollectionIds]. -type ListCollectionIdsResponse struct { - // The collection ids. - CollectionIds []string `protobuf:"bytes,1,rep,name=collection_ids,json=collectionIds" json:"collection_ids,omitempty"` - // A page token that may be used to continue the list. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListCollectionIdsResponse) Reset() { *m = ListCollectionIdsResponse{} } -func (m *ListCollectionIdsResponse) String() string { return proto.CompactTextString(m) } -func (*ListCollectionIdsResponse) ProtoMessage() {} -func (*ListCollectionIdsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{22} } - -func (m *ListCollectionIdsResponse) GetCollectionIds() []string { - if m != nil { - return m.CollectionIds - } - return nil -} - -func (m *ListCollectionIdsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func init() { - proto.RegisterType((*GetDocumentRequest)(nil), "google.firestore.v1beta1.GetDocumentRequest") - proto.RegisterType((*ListDocumentsRequest)(nil), "google.firestore.v1beta1.ListDocumentsRequest") - proto.RegisterType((*ListDocumentsResponse)(nil), "google.firestore.v1beta1.ListDocumentsResponse") - proto.RegisterType((*CreateDocumentRequest)(nil), "google.firestore.v1beta1.CreateDocumentRequest") - proto.RegisterType((*UpdateDocumentRequest)(nil), "google.firestore.v1beta1.UpdateDocumentRequest") - proto.RegisterType((*DeleteDocumentRequest)(nil), "google.firestore.v1beta1.DeleteDocumentRequest") - proto.RegisterType((*BatchGetDocumentsRequest)(nil), "google.firestore.v1beta1.BatchGetDocumentsRequest") - proto.RegisterType((*BatchGetDocumentsResponse)(nil), "google.firestore.v1beta1.BatchGetDocumentsResponse") - proto.RegisterType((*BeginTransactionRequest)(nil), "google.firestore.v1beta1.BeginTransactionRequest") - proto.RegisterType((*BeginTransactionResponse)(nil), "google.firestore.v1beta1.BeginTransactionResponse") - proto.RegisterType((*CommitRequest)(nil), "google.firestore.v1beta1.CommitRequest") - proto.RegisterType((*CommitResponse)(nil), "google.firestore.v1beta1.CommitResponse") - proto.RegisterType((*RollbackRequest)(nil), "google.firestore.v1beta1.RollbackRequest") - proto.RegisterType((*RunQueryRequest)(nil), "google.firestore.v1beta1.RunQueryRequest") - proto.RegisterType((*RunQueryResponse)(nil), "google.firestore.v1beta1.RunQueryResponse") - proto.RegisterType((*WriteRequest)(nil), "google.firestore.v1beta1.WriteRequest") - proto.RegisterType((*WriteResponse)(nil), "google.firestore.v1beta1.WriteResponse") - proto.RegisterType((*ListenRequest)(nil), "google.firestore.v1beta1.ListenRequest") - proto.RegisterType((*ListenResponse)(nil), "google.firestore.v1beta1.ListenResponse") - proto.RegisterType((*Target)(nil), "google.firestore.v1beta1.Target") - proto.RegisterType((*Target_DocumentsTarget)(nil), "google.firestore.v1beta1.Target.DocumentsTarget") - proto.RegisterType((*Target_QueryTarget)(nil), "google.firestore.v1beta1.Target.QueryTarget") - proto.RegisterType((*TargetChange)(nil), "google.firestore.v1beta1.TargetChange") - proto.RegisterType((*ListCollectionIdsRequest)(nil), "google.firestore.v1beta1.ListCollectionIdsRequest") - proto.RegisterType((*ListCollectionIdsResponse)(nil), "google.firestore.v1beta1.ListCollectionIdsResponse") - proto.RegisterEnum("google.firestore.v1beta1.TargetChange_TargetChangeType", TargetChange_TargetChangeType_name, TargetChange_TargetChangeType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Firestore service - -type FirestoreClient interface { - // Gets a single document. - GetDocument(ctx context.Context, in *GetDocumentRequest, opts ...grpc.CallOption) (*Document, error) - // Lists documents. - ListDocuments(ctx context.Context, in *ListDocumentsRequest, opts ...grpc.CallOption) (*ListDocumentsResponse, error) - // Creates a new document. - CreateDocument(ctx context.Context, in *CreateDocumentRequest, opts ...grpc.CallOption) (*Document, error) - // Updates or inserts a document. - UpdateDocument(ctx context.Context, in *UpdateDocumentRequest, opts ...grpc.CallOption) (*Document, error) - // Deletes a document. - DeleteDocument(ctx context.Context, in *DeleteDocumentRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Gets multiple documents. - // - // Documents returned by this method are not guaranteed to be returned in the - // same order that they were requested. - BatchGetDocuments(ctx context.Context, in *BatchGetDocumentsRequest, opts ...grpc.CallOption) (Firestore_BatchGetDocumentsClient, error) - // Starts a new transaction. - BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) - // Commits a transaction, while optionally updating documents. - Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) - // Rolls back a transaction. - Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Runs a query. - RunQuery(ctx context.Context, in *RunQueryRequest, opts ...grpc.CallOption) (Firestore_RunQueryClient, error) - // Streams batches of document updates and deletes, in order. - Write(ctx context.Context, opts ...grpc.CallOption) (Firestore_WriteClient, error) - // Listens to changes. - Listen(ctx context.Context, opts ...grpc.CallOption) (Firestore_ListenClient, error) - // Lists all the collection IDs underneath a document. - ListCollectionIds(ctx context.Context, in *ListCollectionIdsRequest, opts ...grpc.CallOption) (*ListCollectionIdsResponse, error) -} - -type firestoreClient struct { - cc *grpc.ClientConn -} - -func NewFirestoreClient(cc *grpc.ClientConn) FirestoreClient { - return &firestoreClient{cc} -} - -func (c *firestoreClient) GetDocument(ctx context.Context, in *GetDocumentRequest, opts ...grpc.CallOption) (*Document, error) { - out := new(Document) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/GetDocument", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreClient) ListDocuments(ctx context.Context, in *ListDocumentsRequest, opts ...grpc.CallOption) (*ListDocumentsResponse, error) { - out := new(ListDocumentsResponse) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/ListDocuments", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreClient) CreateDocument(ctx context.Context, in *CreateDocumentRequest, opts ...grpc.CallOption) (*Document, error) { - out := new(Document) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/CreateDocument", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreClient) UpdateDocument(ctx context.Context, in *UpdateDocumentRequest, opts ...grpc.CallOption) (*Document, error) { - out := new(Document) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/UpdateDocument", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreClient) DeleteDocument(ctx context.Context, in *DeleteDocumentRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/DeleteDocument", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreClient) BatchGetDocuments(ctx context.Context, in *BatchGetDocumentsRequest, opts ...grpc.CallOption) (Firestore_BatchGetDocumentsClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Firestore_serviceDesc.Streams[0], c.cc, "/google.firestore.v1beta1.Firestore/BatchGetDocuments", opts...) - if err != nil { - return nil, err - } - x := &firestoreBatchGetDocumentsClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Firestore_BatchGetDocumentsClient interface { - Recv() (*BatchGetDocumentsResponse, error) - grpc.ClientStream -} - -type firestoreBatchGetDocumentsClient struct { - grpc.ClientStream -} - -func (x *firestoreBatchGetDocumentsClient) Recv() (*BatchGetDocumentsResponse, error) { - m := new(BatchGetDocumentsResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *firestoreClient) BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*BeginTransactionResponse, error) { - out := new(BeginTransactionResponse) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/BeginTransaction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreClient) Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) { - out := new(CommitResponse) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/Commit", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreClient) Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/Rollback", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *firestoreClient) RunQuery(ctx context.Context, in *RunQueryRequest, opts ...grpc.CallOption) (Firestore_RunQueryClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Firestore_serviceDesc.Streams[1], c.cc, "/google.firestore.v1beta1.Firestore/RunQuery", opts...) - if err != nil { - return nil, err - } - x := &firestoreRunQueryClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Firestore_RunQueryClient interface { - Recv() (*RunQueryResponse, error) - grpc.ClientStream -} - -type firestoreRunQueryClient struct { - grpc.ClientStream -} - -func (x *firestoreRunQueryClient) Recv() (*RunQueryResponse, error) { - m := new(RunQueryResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *firestoreClient) Write(ctx context.Context, opts ...grpc.CallOption) (Firestore_WriteClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Firestore_serviceDesc.Streams[2], c.cc, "/google.firestore.v1beta1.Firestore/Write", opts...) - if err != nil { - return nil, err - } - x := &firestoreWriteClient{stream} - return x, nil -} - -type Firestore_WriteClient interface { - Send(*WriteRequest) error - Recv() (*WriteResponse, error) - grpc.ClientStream -} - -type firestoreWriteClient struct { - grpc.ClientStream -} - -func (x *firestoreWriteClient) Send(m *WriteRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *firestoreWriteClient) Recv() (*WriteResponse, error) { - m := new(WriteResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *firestoreClient) Listen(ctx context.Context, opts ...grpc.CallOption) (Firestore_ListenClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Firestore_serviceDesc.Streams[3], c.cc, "/google.firestore.v1beta1.Firestore/Listen", opts...) - if err != nil { - return nil, err - } - x := &firestoreListenClient{stream} - return x, nil -} - -type Firestore_ListenClient interface { - Send(*ListenRequest) error - Recv() (*ListenResponse, error) - grpc.ClientStream -} - -type firestoreListenClient struct { - grpc.ClientStream -} - -func (x *firestoreListenClient) Send(m *ListenRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *firestoreListenClient) Recv() (*ListenResponse, error) { - m := new(ListenResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *firestoreClient) ListCollectionIds(ctx context.Context, in *ListCollectionIdsRequest, opts ...grpc.CallOption) (*ListCollectionIdsResponse, error) { - out := new(ListCollectionIdsResponse) - err := grpc.Invoke(ctx, "/google.firestore.v1beta1.Firestore/ListCollectionIds", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Firestore service - -type FirestoreServer interface { - // Gets a single document. - GetDocument(context.Context, *GetDocumentRequest) (*Document, error) - // Lists documents. - ListDocuments(context.Context, *ListDocumentsRequest) (*ListDocumentsResponse, error) - // Creates a new document. - CreateDocument(context.Context, *CreateDocumentRequest) (*Document, error) - // Updates or inserts a document. - UpdateDocument(context.Context, *UpdateDocumentRequest) (*Document, error) - // Deletes a document. - DeleteDocument(context.Context, *DeleteDocumentRequest) (*google_protobuf4.Empty, error) - // Gets multiple documents. - // - // Documents returned by this method are not guaranteed to be returned in the - // same order that they were requested. - BatchGetDocuments(*BatchGetDocumentsRequest, Firestore_BatchGetDocumentsServer) error - // Starts a new transaction. - BeginTransaction(context.Context, *BeginTransactionRequest) (*BeginTransactionResponse, error) - // Commits a transaction, while optionally updating documents. - Commit(context.Context, *CommitRequest) (*CommitResponse, error) - // Rolls back a transaction. - Rollback(context.Context, *RollbackRequest) (*google_protobuf4.Empty, error) - // Runs a query. - RunQuery(*RunQueryRequest, Firestore_RunQueryServer) error - // Streams batches of document updates and deletes, in order. - Write(Firestore_WriteServer) error - // Listens to changes. - Listen(Firestore_ListenServer) error - // Lists all the collection IDs underneath a document. - ListCollectionIds(context.Context, *ListCollectionIdsRequest) (*ListCollectionIdsResponse, error) -} - -func RegisterFirestoreServer(s *grpc.Server, srv FirestoreServer) { - s.RegisterService(&_Firestore_serviceDesc, srv) -} - -func _Firestore_GetDocument_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDocumentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).GetDocument(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/GetDocument", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).GetDocument(ctx, req.(*GetDocumentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Firestore_ListDocuments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDocumentsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).ListDocuments(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/ListDocuments", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).ListDocuments(ctx, req.(*ListDocumentsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Firestore_CreateDocument_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateDocumentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).CreateDocument(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/CreateDocument", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).CreateDocument(ctx, req.(*CreateDocumentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Firestore_UpdateDocument_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateDocumentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).UpdateDocument(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/UpdateDocument", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).UpdateDocument(ctx, req.(*UpdateDocumentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Firestore_DeleteDocument_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteDocumentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).DeleteDocument(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/DeleteDocument", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).DeleteDocument(ctx, req.(*DeleteDocumentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Firestore_BatchGetDocuments_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(BatchGetDocumentsRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(FirestoreServer).BatchGetDocuments(m, &firestoreBatchGetDocumentsServer{stream}) -} - -type Firestore_BatchGetDocumentsServer interface { - Send(*BatchGetDocumentsResponse) error - grpc.ServerStream -} - -type firestoreBatchGetDocumentsServer struct { - grpc.ServerStream -} - -func (x *firestoreBatchGetDocumentsServer) Send(m *BatchGetDocumentsResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Firestore_BeginTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BeginTransactionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).BeginTransaction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/BeginTransaction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).BeginTransaction(ctx, req.(*BeginTransactionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Firestore_Commit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommitRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).Commit(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/Commit", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).Commit(ctx, req.(*CommitRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Firestore_Rollback_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RollbackRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).Rollback(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/Rollback", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).Rollback(ctx, req.(*RollbackRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Firestore_RunQuery_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(RunQueryRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(FirestoreServer).RunQuery(m, &firestoreRunQueryServer{stream}) -} - -type Firestore_RunQueryServer interface { - Send(*RunQueryResponse) error - grpc.ServerStream -} - -type firestoreRunQueryServer struct { - grpc.ServerStream -} - -func (x *firestoreRunQueryServer) Send(m *RunQueryResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _Firestore_Write_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(FirestoreServer).Write(&firestoreWriteServer{stream}) -} - -type Firestore_WriteServer interface { - Send(*WriteResponse) error - Recv() (*WriteRequest, error) - grpc.ServerStream -} - -type firestoreWriteServer struct { - grpc.ServerStream -} - -func (x *firestoreWriteServer) Send(m *WriteResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *firestoreWriteServer) Recv() (*WriteRequest, error) { - m := new(WriteRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _Firestore_Listen_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(FirestoreServer).Listen(&firestoreListenServer{stream}) -} - -type Firestore_ListenServer interface { - Send(*ListenResponse) error - Recv() (*ListenRequest, error) - grpc.ServerStream -} - -type firestoreListenServer struct { - grpc.ServerStream -} - -func (x *firestoreListenServer) Send(m *ListenResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *firestoreListenServer) Recv() (*ListenRequest, error) { - m := new(ListenRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _Firestore_ListCollectionIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListCollectionIdsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FirestoreServer).ListCollectionIds(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.firestore.v1beta1.Firestore/ListCollectionIds", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FirestoreServer).ListCollectionIds(ctx, req.(*ListCollectionIdsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Firestore_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.firestore.v1beta1.Firestore", - HandlerType: (*FirestoreServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetDocument", - Handler: _Firestore_GetDocument_Handler, - }, - { - MethodName: "ListDocuments", - Handler: _Firestore_ListDocuments_Handler, - }, - { - MethodName: "CreateDocument", - Handler: _Firestore_CreateDocument_Handler, - }, - { - MethodName: "UpdateDocument", - Handler: _Firestore_UpdateDocument_Handler, - }, - { - MethodName: "DeleteDocument", - Handler: _Firestore_DeleteDocument_Handler, - }, - { - MethodName: "BeginTransaction", - Handler: _Firestore_BeginTransaction_Handler, - }, - { - MethodName: "Commit", - Handler: _Firestore_Commit_Handler, - }, - { - MethodName: "Rollback", - Handler: _Firestore_Rollback_Handler, - }, - { - MethodName: "ListCollectionIds", - Handler: _Firestore_ListCollectionIds_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "BatchGetDocuments", - Handler: _Firestore_BatchGetDocuments_Handler, - ServerStreams: true, - }, - { - StreamName: "RunQuery", - Handler: _Firestore_RunQuery_Handler, - ServerStreams: true, - }, - { - StreamName: "Write", - Handler: _Firestore_Write_Handler, - ServerStreams: true, - ClientStreams: true, - }, - { - StreamName: "Listen", - Handler: _Firestore_Listen_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/firestore/v1beta1/firestore.proto", -} - -func init() { proto.RegisterFile("google/firestore/v1beta1/firestore.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 2180 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcd, 0x8f, 0x1b, 0x49, - 0x15, 0x77, 0xf9, 0x6b, 0xec, 0xe7, 0x8f, 0xf1, 0x96, 0x92, 0xac, 0xe3, 0x64, 0xc9, 0xd0, 0x4b, - 0x12, 0x63, 0xad, 0xec, 0x64, 0x22, 0x14, 0xd6, 0x21, 0xcb, 0x66, 0x66, 0x9c, 0xf1, 0x84, 0x24, - 0x33, 0xe9, 0x99, 0x4d, 0x24, 0x14, 0xc9, 0xea, 0xe9, 0xae, 0x38, 0xbd, 0x63, 0x77, 0x7b, 0xbb, - 0xcb, 0x99, 0x9d, 0x5d, 0x0d, 0x02, 0x0e, 0x5c, 0x90, 0xb8, 0x70, 0x00, 0x2e, 0x1c, 0xd8, 0x03, - 0xd2, 0x22, 0xe0, 0x82, 0xc4, 0x05, 0x21, 0x71, 0x43, 0x20, 0x4e, 0x48, 0x08, 0x89, 0x03, 0x1c, - 0x38, 0x71, 0xe3, 0x3f, 0x40, 0x5d, 0x55, 0xdd, 0xee, 0x6e, 0x7f, 0xb5, 0x3d, 0x11, 0xb7, 0xae, - 0xe7, 0x57, 0xaf, 0xde, 0xc7, 0xef, 0xbd, 0x7a, 0xf5, 0x0c, 0xd5, 0xae, 0x69, 0x76, 0x7b, 0xa4, - 0xf1, 0x42, 0xb7, 0x88, 0x4d, 0x4d, 0x8b, 0x34, 0x5e, 0xdd, 0x3c, 0x24, 0x54, 0xb9, 0x39, 0xa2, - 0xd4, 0x07, 0x96, 0x49, 0x4d, 0x5c, 0xe6, 0x9c, 0xf5, 0x11, 0x5d, 0x70, 0x56, 0x2e, 0x0b, 0x19, - 0xca, 0x40, 0x6f, 0x28, 0x86, 0x61, 0x52, 0x85, 0xea, 0xa6, 0x61, 0xf3, 0x7d, 0x95, 0xab, 0x53, - 0x4f, 0x50, 0xcd, 0x7e, 0xdf, 0x34, 0x04, 0xdb, 0xf5, 0xa9, 0x6c, 0x9a, 0xa9, 0x0e, 0xfb, 0xc4, - 0xa0, 0x82, 0xf1, 0x4b, 0x53, 0x19, 0x3f, 0x1a, 0x12, 0xeb, 0x64, 0x2e, 0xd7, 0xb1, 0xa5, 0x53, - 0x61, 0x53, 0xe5, 0x92, 0xe0, 0x62, 0xab, 0xc3, 0xe1, 0x8b, 0x06, 0xe9, 0x0f, 0xa8, 0x2b, 0xe2, - 0x4a, 0xf8, 0x47, 0xaa, 0xf7, 0x89, 0x4d, 0x95, 0xfe, 0x40, 0x30, 0xbc, 0x29, 0x18, 0xac, 0x81, - 0xda, 0xb0, 0xa9, 0x42, 0x87, 0xc2, 0x64, 0xe9, 0x1f, 0x08, 0xf0, 0x36, 0xa1, 0x5b, 0x42, 0x71, - 0x99, 0x7c, 0x34, 0x24, 0x36, 0xc5, 0x18, 0x92, 0x86, 0xd2, 0x27, 0x65, 0xb4, 0x86, 0xaa, 0x59, - 0x99, 0x7d, 0xe3, 0x26, 0x24, 0xfb, 0x8a, 0x7d, 0x54, 0x8e, 0xaf, 0xa1, 0x6a, 0x6e, 0xfd, 0x5a, - 0x7d, 0x9a, 0x93, 0xeb, 0xae, 0xb0, 0x47, 0x8a, 0x7d, 0x24, 0xb3, 0x3d, 0x58, 0x82, 0x1c, 0xb5, - 0x14, 0xc3, 0x56, 0x54, 0xc7, 0xdf, 0xe5, 0xc4, 0x1a, 0xaa, 0xe6, 0xdb, 0x31, 0xd9, 0x4f, 0xc4, - 0xef, 0x42, 0xd6, 0x22, 0x8a, 0xd6, 0x71, 0x74, 0x2f, 0xa7, 0xd8, 0x21, 0x15, 0xf7, 0x10, 0xd7, - 0xb0, 0xfa, 0x81, 0x6b, 0x58, 0x3b, 0x26, 0x67, 0x1c, 0x76, 0x87, 0xb0, 0x71, 0x01, 0xce, 0xa9, - 0xa6, 0x61, 0xeb, 0x36, 0x25, 0x86, 0x7a, 0xd2, 0xb1, 0x49, 0x8f, 0xa8, 0xd4, 0xb4, 0xa4, 0x6f, - 0x27, 0xe0, 0xdc, 0x43, 0xdd, 0xf6, 0xcc, 0xb3, 0x5d, 0xfb, 0x2e, 0x40, 0x7a, 0xa0, 0x58, 0xc4, - 0xa0, 0xc2, 0x42, 0xb1, 0xc2, 0x6f, 0x43, 0x41, 0x35, 0x7b, 0xce, 0x6e, 0xdd, 0x34, 0x3a, 0xba, - 0xc6, 0x8c, 0xcd, 0xca, 0xf9, 0x11, 0x71, 0x47, 0xc3, 0x97, 0x20, 0x3b, 0x50, 0xba, 0xa4, 0x63, - 0xeb, 0x9f, 0x10, 0x66, 0x4a, 0x4a, 0xce, 0x38, 0x84, 0x7d, 0xfd, 0x13, 0x82, 0xdf, 0x02, 0x60, - 0x3f, 0x52, 0xf3, 0x88, 0x18, 0xe5, 0x24, 0xdb, 0xce, 0xd8, 0x0f, 0x1c, 0x02, 0xbe, 0x08, 0x19, - 0xd3, 0xd2, 0x88, 0xd5, 0x39, 0x3c, 0x29, 0xa7, 0xd9, 0x8f, 0x2b, 0x6c, 0xbd, 0x71, 0xe2, 0xf9, - 0x77, 0xe5, 0xec, 0xfe, 0xcd, 0xcc, 0xf5, 0x2f, 0x2c, 0xe2, 0x5f, 0xfc, 0x45, 0xc8, 0xdb, 0x2f, - 0xcd, 0xe3, 0x4e, 0x5f, 0xb7, 0x6d, 0xdd, 0xe8, 0x96, 0xf3, 0x6b, 0xa8, 0x9a, 0x91, 0x73, 0x0e, - 0xed, 0x11, 0x27, 0x4d, 0x0d, 0xc1, 0x77, 0x10, 0x9c, 0x0f, 0x85, 0xc0, 0x1e, 0x98, 0x86, 0x4d, - 0xf0, 0xfb, 0x90, 0x75, 0xf3, 0xc5, 0x2e, 0xa3, 0xb5, 0x44, 0x35, 0xb7, 0x2e, 0xcd, 0x37, 0x5a, - 0x1e, 0x6d, 0xc2, 0xd7, 0x60, 0xd5, 0x20, 0x1f, 0xd3, 0x8e, 0xcf, 0xe1, 0x3c, 0x5e, 0x05, 0x87, - 0xbc, 0xe7, 0x3a, 0x5d, 0xfa, 0x2f, 0x82, 0xf3, 0x9b, 0x16, 0x51, 0x28, 0x09, 0xe3, 0xfc, 0x4c, - 0x38, 0xb8, 0x02, 0x39, 0x57, 0x17, 0x87, 0x25, 0xc1, 0x58, 0xc0, 0x25, 0xed, 0x68, 0xf8, 0x3d, - 0xc8, 0xb8, 0x2b, 0x86, 0x84, 0x68, 0x06, 0x7a, 0x7b, 0x3c, 0x44, 0xa4, 0x16, 0x47, 0x84, 0xf4, - 0xeb, 0x38, 0x9c, 0xff, 0x60, 0xa0, 0x4d, 0xb0, 0xd9, 0xaf, 0x15, 0x5a, 0x42, 0xab, 0x6d, 0xc8, - 0x0d, 0x99, 0xe0, 0xce, 0x12, 0xe5, 0x00, 0xf8, 0x56, 0xe7, 0xdb, 0x33, 0x2f, 0xb1, 0x04, 0xe0, - 0x9f, 0x40, 0x49, 0x1d, 0x5a, 0x4e, 0xac, 0x3a, 0x21, 0x17, 0xcf, 0x90, 0xb3, 0x67, 0x11, 0xd5, - 0x34, 0x34, 0xdd, 0x89, 0x9f, 0xbc, 0x2a, 0xf6, 0xbb, 0xc2, 0xa5, 0x6f, 0xc1, 0xf9, 0x2d, 0xd2, - 0x23, 0xe3, 0x0e, 0x9b, 0x54, 0x0c, 0x27, 0x9d, 0x1f, 0x3f, 0xdb, 0xf9, 0xff, 0x8a, 0x43, 0x79, - 0x43, 0xa1, 0xea, 0x4b, 0x5f, 0x3d, 0xf6, 0x0a, 0x56, 0x05, 0x32, 0x9a, 0x42, 0x95, 0x43, 0xc5, - 0x76, 0xf5, 0xf0, 0xd6, 0xf8, 0xb2, 0x3f, 0x91, 0xe2, 0x6b, 0x09, 0xa7, 0xe2, 0x8c, 0x92, 0xe4, - 0x2c, 0x5e, 0x0e, 0x95, 0x95, 0xe4, 0xa4, 0xb2, 0xf2, 0xcc, 0x49, 0xc2, 0xe3, 0x8e, 0x9f, 0x8f, - 0xe3, 0xf5, 0x9d, 0xe9, 0x47, 0x1d, 0x8c, 0x98, 0x77, 0x07, 0xec, 0x06, 0x6e, 0xc7, 0xe4, 0xa2, - 0x41, 0x8e, 0x0f, 0xa6, 0xd5, 0xab, 0x95, 0xd7, 0x72, 0x1f, 0xfc, 0x1d, 0xc1, 0xc5, 0x09, 0x2e, - 0x16, 0x05, 0xa9, 0x09, 0xa9, 0x17, 0xe6, 0xd0, 0xd0, 0xa2, 0x67, 0x45, 0x3b, 0x26, 0xf3, 0x2d, - 0xb8, 0x02, 0x2b, 0x6e, 0x71, 0x64, 0xa5, 0xa2, 0x1d, 0x93, 0x5d, 0x02, 0x5e, 0x9b, 0x70, 0xf9, - 0x05, 0x7d, 0x78, 0xdb, 0x6f, 0x6a, 0x72, 0x9e, 0xa9, 0x3e, 0x43, 0x33, 0x90, 0xb6, 0x88, 0x3d, - 0xec, 0x51, 0xe9, 0x14, 0xde, 0xdc, 0x20, 0x5d, 0xdd, 0xf0, 0x79, 0x30, 0x0a, 0x76, 0xee, 0xc3, - 0x8a, 0xc9, 0x23, 0x20, 0xe0, 0xbb, 0x50, 0xd4, 0x64, 0x77, 0xb3, 0xf4, 0x35, 0x28, 0x8f, 0x1f, - 0x2f, 0xfc, 0x1a, 0xb2, 0x1f, 0x8d, 0xd9, 0x2f, 0x7d, 0x0f, 0x41, 0x61, 0xd3, 0xec, 0xf7, 0x75, - 0x1a, 0x45, 0xe7, 0xdb, 0x90, 0x66, 0x9d, 0x11, 0x07, 0x7b, 0x6e, 0xfd, 0xca, 0x74, 0x95, 0x9f, - 0x39, 0x7c, 0xb2, 0x60, 0x9f, 0x1f, 0x08, 0xe9, 0x27, 0x08, 0x8a, 0xae, 0x22, 0x42, 0xfb, 0x07, - 0x50, 0x60, 0xdb, 0x3b, 0xdc, 0xd1, 0xee, 0x55, 0x75, 0x75, 0xde, 0xa1, 0x8c, 0x5b, 0xce, 0x1f, - 0x8f, 0x16, 0x36, 0xbe, 0x03, 0x39, 0x95, 0x49, 0xe7, 0x91, 0x8e, 0xcf, 0x8d, 0x34, 0x70, 0x76, - 0x87, 0x20, 0xed, 0xc2, 0xaa, 0x6c, 0xf6, 0x7a, 0x87, 0x8a, 0x7a, 0x14, 0xc5, 0x4b, 0x21, 0x63, - 0xe3, 0xe3, 0xc6, 0xfe, 0x33, 0x0e, 0xab, 0xf2, 0xd0, 0x78, 0xe2, 0xf4, 0xa2, 0xf3, 0x2e, 0xc4, - 0xa7, 0x50, 0xb2, 0xa9, 0x35, 0x54, 0xe9, 0xd0, 0x22, 0x5a, 0x87, 0xb5, 0xaf, 0x42, 0xfd, 0x2f, - 0x4f, 0x77, 0xc4, 0xbe, 0xb7, 0x83, 0x9d, 0xd1, 0x8e, 0xc9, 0xab, 0x76, 0x90, 0x14, 0xae, 0x30, - 0x29, 0x56, 0x61, 0xd0, 0xdc, 0x0a, 0x93, 0x5e, 0xa2, 0xc2, 0xa0, 0xb3, 0x56, 0x18, 0xe4, 0x4b, - 0xbc, 0x3c, 0x00, 0x73, 0x42, 0x87, 0x9e, 0x0c, 0xa6, 0xd7, 0x9b, 0xbf, 0x21, 0x28, 0x8d, 0x3c, - 0x3c, 0x39, 0x1d, 0xc6, 0x03, 0x73, 0xe6, 0x1b, 0x3a, 0x50, 0x4e, 0x12, 0xd1, 0xcb, 0x09, 0xbe, - 0x0e, 0xab, 0xf6, 0x91, 0x3e, 0x18, 0x10, 0xcd, 0x43, 0x7b, 0x92, 0xf5, 0xb7, 0x45, 0x41, 0x16, - 0x40, 0x96, 0x3e, 0x8f, 0x43, 0x5e, 0xc0, 0x7c, 0x3e, 0x12, 0x2f, 0x41, 0xd6, 0xa6, 0x16, 0x51, - 0xfa, 0xa3, 0x46, 0x2a, 0xc3, 0x09, 0x3b, 0x9a, 0x2f, 0x99, 0x13, 0x8b, 0x25, 0xb3, 0xd3, 0x93, - 0x72, 0xa9, 0xa3, 0x56, 0x3b, 0x2f, 0xe7, 0x38, 0x8d, 0x37, 0xdb, 0x0f, 0x20, 0xdd, 0x53, 0x0e, - 0x49, 0xcf, 0x2e, 0xa7, 0x98, 0xec, 0xf5, 0xb9, 0x39, 0xcb, 0x8c, 0xa9, 0x3f, 0x64, 0x9b, 0x5a, - 0x06, 0xb5, 0x4e, 0x64, 0x21, 0xa1, 0xf2, 0x2e, 0xe4, 0x7c, 0x64, 0x5c, 0x82, 0xc4, 0x11, 0x39, - 0x11, 0xa6, 0x3a, 0x9f, 0xf8, 0x1c, 0xa4, 0x5e, 0x29, 0xbd, 0x21, 0x11, 0x16, 0xf2, 0x45, 0x33, - 0xfe, 0x55, 0xe4, 0xdc, 0x3a, 0x05, 0xb7, 0x26, 0x70, 0x08, 0x04, 0x3c, 0x82, 0x42, 0x1e, 0x09, - 0x1b, 0x16, 0x9f, 0x64, 0x58, 0xa8, 0x26, 0x25, 0x5e, 0x5b, 0x4d, 0x4a, 0x2e, 0x54, 0x93, 0x7e, - 0x15, 0x87, 0xc2, 0x43, 0x06, 0xfb, 0x28, 0x40, 0xb8, 0x07, 0xa0, 0x68, 0x5a, 0x87, 0x2a, 0x56, - 0x97, 0xb8, 0xed, 0xd2, 0xda, 0x8c, 0x1c, 0x66, 0x7c, 0xed, 0x98, 0x9c, 0x55, 0x34, 0x8d, 0x2f, - 0xf0, 0x55, 0x28, 0x58, 0xa4, 0x6f, 0xbe, 0x22, 0xae, 0x14, 0xf6, 0xfe, 0x6a, 0xc7, 0xe4, 0x3c, - 0x27, 0x0b, 0xb6, 0x6f, 0x78, 0x91, 0x4f, 0x32, 0xcf, 0xdc, 0x9a, 0x7e, 0x4a, 0x40, 0xfd, 0xd7, - 0x1c, 0xfa, 0x8d, 0x55, 0x28, 0x70, 0x3d, 0x3b, 0xea, 0x4b, 0xc5, 0xe8, 0x12, 0xe9, 0x37, 0x09, - 0x28, 0xba, 0x27, 0x0a, 0x30, 0x3c, 0x0a, 0xf1, 0xcc, 0xef, 0x23, 0xb9, 0x91, 0x9b, 0x8c, 0xdb, - 0x31, 0x9d, 0xfa, 0xd6, 0x78, 0x1f, 0x56, 0xbd, 0x57, 0x89, 0x10, 0xc8, 0x4b, 0x40, 0x75, 0x7e, - 0x0d, 0xf1, 0x44, 0x16, 0xb5, 0x00, 0x25, 0x20, 0x54, 0x63, 0x4d, 0xb2, 0x00, 0x4a, 0x04, 0xa1, - 0xbc, 0xa9, 0xf6, 0x0b, 0xe5, 0x94, 0x80, 0x50, 0x1e, 0x3d, 0x51, 0xd7, 0x23, 0x08, 0x95, 0x19, - 0xbf, 0x5f, 0x28, 0xa7, 0xe0, 0x4d, 0x48, 0xbf, 0xd0, 0x7b, 0x94, 0x58, 0xa2, 0x0b, 0x9d, 0x71, - 0x3d, 0xb5, 0x3e, 0xe6, 0x05, 0x9b, 0xdc, 0x67, 0x1b, 0xda, 0x31, 0x59, 0x6c, 0x75, 0xc2, 0x66, - 0x89, 0xf0, 0xb0, 0x02, 0x2f, 0xfd, 0x20, 0x09, 0x69, 0x01, 0xad, 0x2d, 0x48, 0xf9, 0xaf, 0xbf, - 0x77, 0xe6, 0x85, 0xa9, 0xce, 0xaa, 0xbf, 0x87, 0x65, 0xbe, 0x19, 0xef, 0xf9, 0x7b, 0x76, 0x1e, - 0x9f, 0x1b, 0x73, 0x25, 0x79, 0x2d, 0xeb, 0x28, 0x33, 0x46, 0x7d, 0xfe, 0xdb, 0x90, 0x77, 0xaa, - 0x41, 0xdf, 0x3f, 0x7a, 0x60, 0x57, 0x29, 0xa7, 0xf2, 0xc2, 0x11, 0xb8, 0xf1, 0x72, 0x8b, 0xdc, - 0x78, 0x4e, 0xcd, 0x12, 0x30, 0xd5, 0x35, 0xe6, 0xdb, 0x94, 0x9c, 0xe1, 0x84, 0x1d, 0xcd, 0x79, - 0x22, 0x99, 0x86, 0xca, 0xe3, 0x97, 0x91, 0xd9, 0x77, 0xa5, 0x01, 0xab, 0x21, 0x85, 0x67, 0xbf, - 0x54, 0x2a, 0xdf, 0x47, 0x90, 0xf3, 0x39, 0xeb, 0xff, 0xdd, 0x8b, 0x84, 0xee, 0xf4, 0x02, 0xe4, - 0x84, 0xbd, 0xee, 0xd2, 0x75, 0xaf, 0x03, 0x88, 0xff, 0xc4, 0x21, 0xef, 0x4f, 0x43, 0x4c, 0x00, - 0x07, 0xb2, 0x98, 0xb1, 0x31, 0xc5, 0x8b, 0xeb, 0xb7, 0xa3, 0xa5, 0x72, 0x60, 0x71, 0x70, 0x32, - 0x20, 0x72, 0x89, 0x86, 0x28, 0xf8, 0x2d, 0x00, 0x2f, 0x0a, 0xdc, 0x85, 0x29, 0x39, 0xeb, 0x86, - 0xc1, 0xc6, 0x55, 0x48, 0xa9, 0xca, 0xd0, 0x76, 0x53, 0x1e, 0xbb, 0x07, 0x5b, 0x03, 0xb5, 0xbe, - 0xcf, 0xe6, 0x7e, 0x32, 0x67, 0x70, 0x6e, 0x99, 0x71, 0xb8, 0x04, 0xc1, 0x12, 0x68, 0x23, 0xd2, - 0xd1, 0xdb, 0x08, 0xe9, 0x31, 0x94, 0xc2, 0xa6, 0xe0, 0x02, 0x64, 0x1f, 0xef, 0x76, 0x36, 0xdb, - 0xf7, 0x1e, 0x6f, 0xb7, 0x4a, 0x31, 0xbc, 0x02, 0x89, 0x7b, 0x5b, 0x5b, 0x25, 0x84, 0x01, 0xd2, - 0x72, 0xeb, 0xd1, 0xee, 0xd3, 0x56, 0x29, 0x8e, 0x73, 0xb0, 0xb2, 0xf9, 0x81, 0x2c, 0xb7, 0x1e, - 0x1f, 0x94, 0x12, 0x38, 0x0b, 0x29, 0xb9, 0xb5, 0xdf, 0x3a, 0x28, 0x25, 0x25, 0x03, 0xca, 0x4e, - 0xcd, 0xdc, 0xf4, 0x0d, 0x5f, 0xe6, 0x4e, 0xf2, 0x02, 0x43, 0xba, 0xf8, 0xcc, 0x21, 0x5d, 0x22, - 0x34, 0xa4, 0x93, 0x3e, 0x84, 0x8b, 0x13, 0xce, 0x13, 0xe5, 0xfa, 0x2a, 0x14, 0x03, 0xa3, 0x21, - 0xfe, 0x20, 0xc8, 0xca, 0x05, 0xff, 0x6c, 0x28, 0xf2, 0x6c, 0x6a, 0xfd, 0x97, 0x18, 0xb2, 0xf7, - 0x5d, 0x58, 0xe0, 0x9f, 0x22, 0xc8, 0xf9, 0xde, 0xa6, 0x78, 0x46, 0x75, 0x19, 0x9f, 0xda, 0x56, - 0x22, 0x74, 0x89, 0xd2, 0xdd, 0xef, 0xfe, 0xf5, 0xdf, 0x3f, 0x8c, 0xdf, 0xc6, 0x5f, 0xf1, 0xa6, - 0xcc, 0x9f, 0x1a, 0x4a, 0x9f, 0xdc, 0x1d, 0x58, 0xe6, 0x87, 0x44, 0xa5, 0x76, 0xa3, 0xd6, 0x70, - 0xef, 0x6b, 0xf6, 0xed, 0x66, 0x67, 0xa3, 0xd6, 0xa8, 0xd5, 0x4e, 0xf1, 0x1f, 0x10, 0xbf, 0xf0, - 0xbd, 0xcc, 0xc6, 0xf5, 0xd9, 0x57, 0x6b, 0x78, 0x92, 0x51, 0x69, 0x44, 0xe6, 0xe7, 0x0e, 0x97, - 0x76, 0x99, 0xc6, 0x3b, 0x78, 0x7b, 0xa4, 0x31, 0x8f, 0x71, 0x44, 0x9d, 0x1b, 0x9f, 0x06, 0xe2, - 0x75, 0x8a, 0x7f, 0xef, 0x3c, 0xf2, 0x02, 0xe3, 0x40, 0x3c, 0x43, 0xa9, 0x89, 0x83, 0xc3, 0x48, - 0xae, 0x7e, 0xc6, 0x14, 0x7f, 0x22, 0xb5, 0x96, 0x50, 0x7c, 0x5c, 0xed, 0xe6, 0xa8, 0xbf, 0xff, - 0x2d, 0x82, 0x62, 0x70, 0xb6, 0x37, 0xcb, 0x80, 0x89, 0x53, 0xc0, 0x48, 0x06, 0xec, 0x31, 0x03, - 0x1e, 0xac, 0xbf, 0x37, 0x32, 0xc0, 0xfb, 0x87, 0x63, 0x01, 0xd0, 0xf8, 0x34, 0xff, 0x31, 0x82, - 0x62, 0x70, 0xc8, 0x36, 0x4b, 0xf3, 0x89, 0xe3, 0xb8, 0xca, 0x85, 0xb1, 0x1a, 0xd4, 0xea, 0x0f, - 0xe8, 0x89, 0x8b, 0xec, 0xda, 0x92, 0xc8, 0xfe, 0x23, 0x82, 0x37, 0xc6, 0x66, 0x43, 0x78, 0xc6, - 0x93, 0x61, 0xda, 0xac, 0xae, 0x72, 0x6b, 0xa1, 0x3d, 0x02, 0xe5, 0x6d, 0xa6, 0xfd, 0x86, 0x74, - 0xd7, 0xe7, 0x6b, 0xa1, 0xed, 0x14, 0x0b, 0x4e, 0x47, 0x26, 0x34, 0x0f, 0x85, 0xdc, 0x26, 0xaa, - 0xdd, 0x40, 0xf8, 0xcf, 0x08, 0x4a, 0xe1, 0x69, 0x0c, 0xbe, 0x39, 0x43, 0xab, 0xc9, 0x83, 0xa3, - 0xca, 0xfa, 0x22, 0x5b, 0x84, 0x1d, 0x02, 0x33, 0x7e, 0xd0, 0x2f, 0x62, 0x47, 0x48, 0x6c, 0x13, - 0xd5, 0xf0, 0x67, 0x08, 0xd2, 0x7c, 0x26, 0x83, 0xaf, 0xcf, 0x48, 0x53, 0xff, 0xf8, 0xa8, 0x52, - 0x9d, 0xcf, 0x28, 0xf4, 0xbd, 0xcf, 0xf4, 0x7d, 0x5f, 0xba, 0xb3, 0x94, 0xbe, 0xfc, 0x29, 0xe4, - 0x68, 0xf9, 0x23, 0x04, 0x19, 0x77, 0x3c, 0x83, 0x67, 0xf4, 0x21, 0xa1, 0x11, 0xce, 0x54, 0x34, - 0x9f, 0x0d, 0x0f, 0x96, 0x38, 0xc5, 0xd1, 0xec, 0x17, 0x8e, 0x66, 0x62, 0x08, 0x31, 0x53, 0xb3, - 0xe0, 0x28, 0xa8, 0x52, 0x8b, 0xc2, 0x3a, 0xdd, 0x8b, 0x11, 0x4b, 0xdd, 0x69, 0xd3, 0x12, 0xc2, - 0x38, 0x76, 0x3f, 0x43, 0x90, 0x62, 0x8f, 0x55, 0x7c, 0x2d, 0xda, 0x6b, 0xbd, 0x72, 0x7d, 0xfe, - 0xab, 0x97, 0x2b, 0xd9, 0x62, 0x4a, 0x7e, 0x5d, 0x6a, 0x2e, 0xe5, 0x52, 0xf6, 0x68, 0x6e, 0xa2, - 0x5a, 0x15, 0xdd, 0x40, 0xf8, 0xe7, 0x08, 0xd2, 0xfc, 0x19, 0x37, 0x0b, 0x93, 0x81, 0xa7, 0xe5, - 0x2c, 0x4c, 0x06, 0x5f, 0x84, 0x67, 0xc4, 0x64, 0x8f, 0x09, 0x73, 0x35, 0xfd, 0x0b, 0x82, 0x37, - 0xc6, 0x9a, 0x99, 0x59, 0x65, 0x6d, 0x5a, 0xa7, 0x55, 0xb9, 0xb5, 0xd0, 0x9e, 0xe0, 0xe5, 0x2d, - 0x6d, 0x2d, 0x01, 0x8c, 0x5e, 0x58, 0x6a, 0x13, 0xd5, 0x36, 0x7e, 0x87, 0xe0, 0xb2, 0x6a, 0xf6, - 0xa7, 0xea, 0xb2, 0x51, 0xf4, 0xba, 0xa9, 0x3d, 0x27, 0xa3, 0xf6, 0xd0, 0x37, 0xef, 0x09, 0xde, - 0xae, 0xd9, 0x53, 0x8c, 0x6e, 0xdd, 0xb4, 0xba, 0x8d, 0x2e, 0x31, 0x58, 0xbe, 0x35, 0xf8, 0x4f, - 0xca, 0x40, 0xb7, 0xc7, 0xff, 0x7f, 0xbf, 0xe3, 0x51, 0x7e, 0x16, 0x4f, 0x6e, 0x6f, 0xde, 0xdf, - 0xff, 0x3c, 0xfe, 0x85, 0x6d, 0x2e, 0x6a, 0xb3, 0x67, 0x0e, 0xb5, 0xba, 0x77, 0x52, 0xfd, 0xe9, - 0xcd, 0x0d, 0x67, 0xc7, 0x9f, 0x5c, 0x86, 0xe7, 0x8c, 0xe1, 0xb9, 0xc7, 0xf0, 0xfc, 0x29, 0x17, - 0x79, 0x98, 0x66, 0xc7, 0xde, 0xfa, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0xa1, 0x5f, 0x1d, - 0xcd, 0x20, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/query.pb.go b/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/query.pb.go deleted file mode 100644 index 98e5e207..00000000 --- a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/query.pb.go +++ /dev/null @@ -1,783 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/firestore/v1beta1/query.proto - -package firestore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/wrappers" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A sort direction. -type StructuredQuery_Direction int32 - -const ( - // Unspecified. - StructuredQuery_DIRECTION_UNSPECIFIED StructuredQuery_Direction = 0 - // Ascending. - StructuredQuery_ASCENDING StructuredQuery_Direction = 1 - // Descending. - StructuredQuery_DESCENDING StructuredQuery_Direction = 2 -) - -var StructuredQuery_Direction_name = map[int32]string{ - 0: "DIRECTION_UNSPECIFIED", - 1: "ASCENDING", - 2: "DESCENDING", -} -var StructuredQuery_Direction_value = map[string]int32{ - "DIRECTION_UNSPECIFIED": 0, - "ASCENDING": 1, - "DESCENDING": 2, -} - -func (x StructuredQuery_Direction) String() string { - return proto.EnumName(StructuredQuery_Direction_name, int32(x)) -} -func (StructuredQuery_Direction) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -// A composite filter operator. -type StructuredQuery_CompositeFilter_Operator int32 - -const ( - // Unspecified. This value must not be used. - StructuredQuery_CompositeFilter_OPERATOR_UNSPECIFIED StructuredQuery_CompositeFilter_Operator = 0 - // The results are required to satisfy each of the combined filters. - StructuredQuery_CompositeFilter_AND StructuredQuery_CompositeFilter_Operator = 1 -) - -var StructuredQuery_CompositeFilter_Operator_name = map[int32]string{ - 0: "OPERATOR_UNSPECIFIED", - 1: "AND", -} -var StructuredQuery_CompositeFilter_Operator_value = map[string]int32{ - "OPERATOR_UNSPECIFIED": 0, - "AND": 1, -} - -func (x StructuredQuery_CompositeFilter_Operator) String() string { - return proto.EnumName(StructuredQuery_CompositeFilter_Operator_name, int32(x)) -} -func (StructuredQuery_CompositeFilter_Operator) EnumDescriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2, 0} -} - -// A field filter operator. -type StructuredQuery_FieldFilter_Operator int32 - -const ( - // Unspecified. This value must not be used. - StructuredQuery_FieldFilter_OPERATOR_UNSPECIFIED StructuredQuery_FieldFilter_Operator = 0 - // Less than. Requires that the field come first in `order_by`. - StructuredQuery_FieldFilter_LESS_THAN StructuredQuery_FieldFilter_Operator = 1 - // Less than or equal. Requires that the field come first in `order_by`. - StructuredQuery_FieldFilter_LESS_THAN_OR_EQUAL StructuredQuery_FieldFilter_Operator = 2 - // Greater than. Requires that the field come first in `order_by`. - StructuredQuery_FieldFilter_GREATER_THAN StructuredQuery_FieldFilter_Operator = 3 - // Greater than or equal. Requires that the field come first in - // `order_by`. - StructuredQuery_FieldFilter_GREATER_THAN_OR_EQUAL StructuredQuery_FieldFilter_Operator = 4 - // Equal. - StructuredQuery_FieldFilter_EQUAL StructuredQuery_FieldFilter_Operator = 5 -) - -var StructuredQuery_FieldFilter_Operator_name = map[int32]string{ - 0: "OPERATOR_UNSPECIFIED", - 1: "LESS_THAN", - 2: "LESS_THAN_OR_EQUAL", - 3: "GREATER_THAN", - 4: "GREATER_THAN_OR_EQUAL", - 5: "EQUAL", -} -var StructuredQuery_FieldFilter_Operator_value = map[string]int32{ - "OPERATOR_UNSPECIFIED": 0, - "LESS_THAN": 1, - "LESS_THAN_OR_EQUAL": 2, - "GREATER_THAN": 3, - "GREATER_THAN_OR_EQUAL": 4, - "EQUAL": 5, -} - -func (x StructuredQuery_FieldFilter_Operator) String() string { - return proto.EnumName(StructuredQuery_FieldFilter_Operator_name, int32(x)) -} -func (StructuredQuery_FieldFilter_Operator) EnumDescriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 3, 0} -} - -// A unary operator. -type StructuredQuery_UnaryFilter_Operator int32 - -const ( - // Unspecified. This value must not be used. - StructuredQuery_UnaryFilter_OPERATOR_UNSPECIFIED StructuredQuery_UnaryFilter_Operator = 0 - // Test if a field is equal to NaN. - StructuredQuery_UnaryFilter_IS_NAN StructuredQuery_UnaryFilter_Operator = 2 - // Test if an exprestion evaluates to Null. - StructuredQuery_UnaryFilter_IS_NULL StructuredQuery_UnaryFilter_Operator = 3 -) - -var StructuredQuery_UnaryFilter_Operator_name = map[int32]string{ - 0: "OPERATOR_UNSPECIFIED", - 2: "IS_NAN", - 3: "IS_NULL", -} -var StructuredQuery_UnaryFilter_Operator_value = map[string]int32{ - "OPERATOR_UNSPECIFIED": 0, - "IS_NAN": 2, - "IS_NULL": 3, -} - -func (x StructuredQuery_UnaryFilter_Operator) String() string { - return proto.EnumName(StructuredQuery_UnaryFilter_Operator_name, int32(x)) -} -func (StructuredQuery_UnaryFilter_Operator) EnumDescriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 4, 0} -} - -// A Firestore query. -type StructuredQuery struct { - // The projection to return. - Select *StructuredQuery_Projection `protobuf:"bytes,1,opt,name=select" json:"select,omitempty"` - // The collections to query. - From []*StructuredQuery_CollectionSelector `protobuf:"bytes,2,rep,name=from" json:"from,omitempty"` - // The filter to apply. - Where *StructuredQuery_Filter `protobuf:"bytes,3,opt,name=where" json:"where,omitempty"` - // The order to apply to the query results. - // - // Firestore guarantees a stable ordering through the following rules: - // - // * Any field required to appear in `order_by`, that is not already - // specified in `order_by`, is appended to the order in field name order - // by default. - // * If an order on `__name__` is not specified, it is appended by default. - // - // Fields are appended with the same sort direction as the last order - // specified, or 'ASCENDING' if no order was specified. For example: - // - // * `SELECT * FROM Foo ORDER BY A` becomes - // `SELECT * FROM Foo ORDER BY A, __name__` - // * `SELECT * FROM Foo ORDER BY A DESC` becomes - // `SELECT * FROM Foo ORDER BY A DESC, __name__ DESC` - // * `SELECT * FROM Foo WHERE A > 1` becomes - // `SELECT * FROM Foo WHERE A > 1 ORDER BY A, __name__` - OrderBy []*StructuredQuery_Order `protobuf:"bytes,4,rep,name=order_by,json=orderBy" json:"order_by,omitempty"` - // A starting point for the query results. - StartAt *Cursor `protobuf:"bytes,7,opt,name=start_at,json=startAt" json:"start_at,omitempty"` - // A end point for the query results. - EndAt *Cursor `protobuf:"bytes,8,opt,name=end_at,json=endAt" json:"end_at,omitempty"` - // The number of results to skip. - // - // Applies before limit, but after all other constraints. Must be >= 0 if - // specified. - Offset int32 `protobuf:"varint,6,opt,name=offset" json:"offset,omitempty"` - // The maximum number of results to return. - // - // Applies after all other constraints. - // Must be >= 0 if specified. - Limit *google_protobuf3.Int32Value `protobuf:"bytes,5,opt,name=limit" json:"limit,omitempty"` -} - -func (m *StructuredQuery) Reset() { *m = StructuredQuery{} } -func (m *StructuredQuery) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery) ProtoMessage() {} -func (*StructuredQuery) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *StructuredQuery) GetSelect() *StructuredQuery_Projection { - if m != nil { - return m.Select - } - return nil -} - -func (m *StructuredQuery) GetFrom() []*StructuredQuery_CollectionSelector { - if m != nil { - return m.From - } - return nil -} - -func (m *StructuredQuery) GetWhere() *StructuredQuery_Filter { - if m != nil { - return m.Where - } - return nil -} - -func (m *StructuredQuery) GetOrderBy() []*StructuredQuery_Order { - if m != nil { - return m.OrderBy - } - return nil -} - -func (m *StructuredQuery) GetStartAt() *Cursor { - if m != nil { - return m.StartAt - } - return nil -} - -func (m *StructuredQuery) GetEndAt() *Cursor { - if m != nil { - return m.EndAt - } - return nil -} - -func (m *StructuredQuery) GetOffset() int32 { - if m != nil { - return m.Offset - } - return 0 -} - -func (m *StructuredQuery) GetLimit() *google_protobuf3.Int32Value { - if m != nil { - return m.Limit - } - return nil -} - -// A selection of a collection, such as `messages as m1`. -type StructuredQuery_CollectionSelector struct { - // The collection ID. - // When set, selects only collections with this ID. - CollectionId string `protobuf:"bytes,2,opt,name=collection_id,json=collectionId" json:"collection_id,omitempty"` - // When false, selects only collections that are immediate children of - // the `parent` specified in the containing `RunQueryRequest`. - // When true, selects all descendant collections. - AllDescendants bool `protobuf:"varint,3,opt,name=all_descendants,json=allDescendants" json:"all_descendants,omitempty"` -} - -func (m *StructuredQuery_CollectionSelector) Reset() { *m = StructuredQuery_CollectionSelector{} } -func (m *StructuredQuery_CollectionSelector) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery_CollectionSelector) ProtoMessage() {} -func (*StructuredQuery_CollectionSelector) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 0} -} - -func (m *StructuredQuery_CollectionSelector) GetCollectionId() string { - if m != nil { - return m.CollectionId - } - return "" -} - -func (m *StructuredQuery_CollectionSelector) GetAllDescendants() bool { - if m != nil { - return m.AllDescendants - } - return false -} - -// A filter. -type StructuredQuery_Filter struct { - // The type of filter. - // - // Types that are valid to be assigned to FilterType: - // *StructuredQuery_Filter_CompositeFilter - // *StructuredQuery_Filter_FieldFilter - // *StructuredQuery_Filter_UnaryFilter - FilterType isStructuredQuery_Filter_FilterType `protobuf_oneof:"filter_type"` -} - -func (m *StructuredQuery_Filter) Reset() { *m = StructuredQuery_Filter{} } -func (m *StructuredQuery_Filter) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery_Filter) ProtoMessage() {} -func (*StructuredQuery_Filter) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 1} } - -type isStructuredQuery_Filter_FilterType interface { - isStructuredQuery_Filter_FilterType() -} - -type StructuredQuery_Filter_CompositeFilter struct { - CompositeFilter *StructuredQuery_CompositeFilter `protobuf:"bytes,1,opt,name=composite_filter,json=compositeFilter,oneof"` -} -type StructuredQuery_Filter_FieldFilter struct { - FieldFilter *StructuredQuery_FieldFilter `protobuf:"bytes,2,opt,name=field_filter,json=fieldFilter,oneof"` -} -type StructuredQuery_Filter_UnaryFilter struct { - UnaryFilter *StructuredQuery_UnaryFilter `protobuf:"bytes,3,opt,name=unary_filter,json=unaryFilter,oneof"` -} - -func (*StructuredQuery_Filter_CompositeFilter) isStructuredQuery_Filter_FilterType() {} -func (*StructuredQuery_Filter_FieldFilter) isStructuredQuery_Filter_FilterType() {} -func (*StructuredQuery_Filter_UnaryFilter) isStructuredQuery_Filter_FilterType() {} - -func (m *StructuredQuery_Filter) GetFilterType() isStructuredQuery_Filter_FilterType { - if m != nil { - return m.FilterType - } - return nil -} - -func (m *StructuredQuery_Filter) GetCompositeFilter() *StructuredQuery_CompositeFilter { - if x, ok := m.GetFilterType().(*StructuredQuery_Filter_CompositeFilter); ok { - return x.CompositeFilter - } - return nil -} - -func (m *StructuredQuery_Filter) GetFieldFilter() *StructuredQuery_FieldFilter { - if x, ok := m.GetFilterType().(*StructuredQuery_Filter_FieldFilter); ok { - return x.FieldFilter - } - return nil -} - -func (m *StructuredQuery_Filter) GetUnaryFilter() *StructuredQuery_UnaryFilter { - if x, ok := m.GetFilterType().(*StructuredQuery_Filter_UnaryFilter); ok { - return x.UnaryFilter - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*StructuredQuery_Filter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _StructuredQuery_Filter_OneofMarshaler, _StructuredQuery_Filter_OneofUnmarshaler, _StructuredQuery_Filter_OneofSizer, []interface{}{ - (*StructuredQuery_Filter_CompositeFilter)(nil), - (*StructuredQuery_Filter_FieldFilter)(nil), - (*StructuredQuery_Filter_UnaryFilter)(nil), - } -} - -func _StructuredQuery_Filter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*StructuredQuery_Filter) - // filter_type - switch x := m.FilterType.(type) { - case *StructuredQuery_Filter_CompositeFilter: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CompositeFilter); err != nil { - return err - } - case *StructuredQuery_Filter_FieldFilter: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.FieldFilter); err != nil { - return err - } - case *StructuredQuery_Filter_UnaryFilter: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.UnaryFilter); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("StructuredQuery_Filter.FilterType has unexpected type %T", x) - } - return nil -} - -func _StructuredQuery_Filter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*StructuredQuery_Filter) - switch tag { - case 1: // filter_type.composite_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StructuredQuery_CompositeFilter) - err := b.DecodeMessage(msg) - m.FilterType = &StructuredQuery_Filter_CompositeFilter{msg} - return true, err - case 2: // filter_type.field_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StructuredQuery_FieldFilter) - err := b.DecodeMessage(msg) - m.FilterType = &StructuredQuery_Filter_FieldFilter{msg} - return true, err - case 3: // filter_type.unary_filter - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StructuredQuery_UnaryFilter) - err := b.DecodeMessage(msg) - m.FilterType = &StructuredQuery_Filter_UnaryFilter{msg} - return true, err - default: - return false, nil - } -} - -func _StructuredQuery_Filter_OneofSizer(msg proto.Message) (n int) { - m := msg.(*StructuredQuery_Filter) - // filter_type - switch x := m.FilterType.(type) { - case *StructuredQuery_Filter_CompositeFilter: - s := proto.Size(x.CompositeFilter) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StructuredQuery_Filter_FieldFilter: - s := proto.Size(x.FieldFilter) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StructuredQuery_Filter_UnaryFilter: - s := proto.Size(x.UnaryFilter) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A filter that merges multiple other filters using the given operator. -type StructuredQuery_CompositeFilter struct { - // The operator for combining multiple filters. - Op StructuredQuery_CompositeFilter_Operator `protobuf:"varint,1,opt,name=op,enum=google.firestore.v1beta1.StructuredQuery_CompositeFilter_Operator" json:"op,omitempty"` - // The list of filters to combine. - // Must contain at least one filter. - Filters []*StructuredQuery_Filter `protobuf:"bytes,2,rep,name=filters" json:"filters,omitempty"` -} - -func (m *StructuredQuery_CompositeFilter) Reset() { *m = StructuredQuery_CompositeFilter{} } -func (m *StructuredQuery_CompositeFilter) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery_CompositeFilter) ProtoMessage() {} -func (*StructuredQuery_CompositeFilter) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 2} -} - -func (m *StructuredQuery_CompositeFilter) GetOp() StructuredQuery_CompositeFilter_Operator { - if m != nil { - return m.Op - } - return StructuredQuery_CompositeFilter_OPERATOR_UNSPECIFIED -} - -func (m *StructuredQuery_CompositeFilter) GetFilters() []*StructuredQuery_Filter { - if m != nil { - return m.Filters - } - return nil -} - -// A filter on a specific field. -type StructuredQuery_FieldFilter struct { - // The field to filter by. - Field *StructuredQuery_FieldReference `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` - // The operator to filter by. - Op StructuredQuery_FieldFilter_Operator `protobuf:"varint,2,opt,name=op,enum=google.firestore.v1beta1.StructuredQuery_FieldFilter_Operator" json:"op,omitempty"` - // The value to compare to. - Value *Value `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` -} - -func (m *StructuredQuery_FieldFilter) Reset() { *m = StructuredQuery_FieldFilter{} } -func (m *StructuredQuery_FieldFilter) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery_FieldFilter) ProtoMessage() {} -func (*StructuredQuery_FieldFilter) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 3} } - -func (m *StructuredQuery_FieldFilter) GetField() *StructuredQuery_FieldReference { - if m != nil { - return m.Field - } - return nil -} - -func (m *StructuredQuery_FieldFilter) GetOp() StructuredQuery_FieldFilter_Operator { - if m != nil { - return m.Op - } - return StructuredQuery_FieldFilter_OPERATOR_UNSPECIFIED -} - -func (m *StructuredQuery_FieldFilter) GetValue() *Value { - if m != nil { - return m.Value - } - return nil -} - -// A filter with a single operand. -type StructuredQuery_UnaryFilter struct { - // The unary operator to apply. - Op StructuredQuery_UnaryFilter_Operator `protobuf:"varint,1,opt,name=op,enum=google.firestore.v1beta1.StructuredQuery_UnaryFilter_Operator" json:"op,omitempty"` - // The argument to the filter. - // - // Types that are valid to be assigned to OperandType: - // *StructuredQuery_UnaryFilter_Field - OperandType isStructuredQuery_UnaryFilter_OperandType `protobuf_oneof:"operand_type"` -} - -func (m *StructuredQuery_UnaryFilter) Reset() { *m = StructuredQuery_UnaryFilter{} } -func (m *StructuredQuery_UnaryFilter) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery_UnaryFilter) ProtoMessage() {} -func (*StructuredQuery_UnaryFilter) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 4} } - -type isStructuredQuery_UnaryFilter_OperandType interface { - isStructuredQuery_UnaryFilter_OperandType() -} - -type StructuredQuery_UnaryFilter_Field struct { - Field *StructuredQuery_FieldReference `protobuf:"bytes,2,opt,name=field,oneof"` -} - -func (*StructuredQuery_UnaryFilter_Field) isStructuredQuery_UnaryFilter_OperandType() {} - -func (m *StructuredQuery_UnaryFilter) GetOperandType() isStructuredQuery_UnaryFilter_OperandType { - if m != nil { - return m.OperandType - } - return nil -} - -func (m *StructuredQuery_UnaryFilter) GetOp() StructuredQuery_UnaryFilter_Operator { - if m != nil { - return m.Op - } - return StructuredQuery_UnaryFilter_OPERATOR_UNSPECIFIED -} - -func (m *StructuredQuery_UnaryFilter) GetField() *StructuredQuery_FieldReference { - if x, ok := m.GetOperandType().(*StructuredQuery_UnaryFilter_Field); ok { - return x.Field - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*StructuredQuery_UnaryFilter) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _StructuredQuery_UnaryFilter_OneofMarshaler, _StructuredQuery_UnaryFilter_OneofUnmarshaler, _StructuredQuery_UnaryFilter_OneofSizer, []interface{}{ - (*StructuredQuery_UnaryFilter_Field)(nil), - } -} - -func _StructuredQuery_UnaryFilter_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*StructuredQuery_UnaryFilter) - // operand_type - switch x := m.OperandType.(type) { - case *StructuredQuery_UnaryFilter_Field: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Field); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("StructuredQuery_UnaryFilter.OperandType has unexpected type %T", x) - } - return nil -} - -func _StructuredQuery_UnaryFilter_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*StructuredQuery_UnaryFilter) - switch tag { - case 2: // operand_type.field - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(StructuredQuery_FieldReference) - err := b.DecodeMessage(msg) - m.OperandType = &StructuredQuery_UnaryFilter_Field{msg} - return true, err - default: - return false, nil - } -} - -func _StructuredQuery_UnaryFilter_OneofSizer(msg proto.Message) (n int) { - m := msg.(*StructuredQuery_UnaryFilter) - // operand_type - switch x := m.OperandType.(type) { - case *StructuredQuery_UnaryFilter_Field: - s := proto.Size(x.Field) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// An order on a field. -type StructuredQuery_Order struct { - // The field to order by. - Field *StructuredQuery_FieldReference `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` - // The direction to order by. Defaults to `ASCENDING`. - Direction StructuredQuery_Direction `protobuf:"varint,2,opt,name=direction,enum=google.firestore.v1beta1.StructuredQuery_Direction" json:"direction,omitempty"` -} - -func (m *StructuredQuery_Order) Reset() { *m = StructuredQuery_Order{} } -func (m *StructuredQuery_Order) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery_Order) ProtoMessage() {} -func (*StructuredQuery_Order) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 5} } - -func (m *StructuredQuery_Order) GetField() *StructuredQuery_FieldReference { - if m != nil { - return m.Field - } - return nil -} - -func (m *StructuredQuery_Order) GetDirection() StructuredQuery_Direction { - if m != nil { - return m.Direction - } - return StructuredQuery_DIRECTION_UNSPECIFIED -} - -// A reference to a field, such as `max(messages.time) as max_time`. -type StructuredQuery_FieldReference struct { - FieldPath string `protobuf:"bytes,2,opt,name=field_path,json=fieldPath" json:"field_path,omitempty"` -} - -func (m *StructuredQuery_FieldReference) Reset() { *m = StructuredQuery_FieldReference{} } -func (m *StructuredQuery_FieldReference) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery_FieldReference) ProtoMessage() {} -func (*StructuredQuery_FieldReference) Descriptor() ([]byte, []int) { - return fileDescriptor3, []int{0, 6} -} - -func (m *StructuredQuery_FieldReference) GetFieldPath() string { - if m != nil { - return m.FieldPath - } - return "" -} - -// The projection of document's fields to return. -type StructuredQuery_Projection struct { - // The fields to return. - // - // If empty, all fields are returned. To only return the name - // of the document, use `['__name__']`. - Fields []*StructuredQuery_FieldReference `protobuf:"bytes,2,rep,name=fields" json:"fields,omitempty"` -} - -func (m *StructuredQuery_Projection) Reset() { *m = StructuredQuery_Projection{} } -func (m *StructuredQuery_Projection) String() string { return proto.CompactTextString(m) } -func (*StructuredQuery_Projection) ProtoMessage() {} -func (*StructuredQuery_Projection) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 7} } - -func (m *StructuredQuery_Projection) GetFields() []*StructuredQuery_FieldReference { - if m != nil { - return m.Fields - } - return nil -} - -// A position in a query result set. -type Cursor struct { - // The values that represent a position, in the order they appear in - // the order by clause of a query. - // - // Can contain fewer values than specified in the order by clause. - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` - // If the position is just before or just after the given values, relative - // to the sort order defined by the query. - Before bool `protobuf:"varint,2,opt,name=before" json:"before,omitempty"` -} - -func (m *Cursor) Reset() { *m = Cursor{} } -func (m *Cursor) String() string { return proto.CompactTextString(m) } -func (*Cursor) ProtoMessage() {} -func (*Cursor) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *Cursor) GetValues() []*Value { - if m != nil { - return m.Values - } - return nil -} - -func (m *Cursor) GetBefore() bool { - if m != nil { - return m.Before - } - return false -} - -func init() { - proto.RegisterType((*StructuredQuery)(nil), "google.firestore.v1beta1.StructuredQuery") - proto.RegisterType((*StructuredQuery_CollectionSelector)(nil), "google.firestore.v1beta1.StructuredQuery.CollectionSelector") - proto.RegisterType((*StructuredQuery_Filter)(nil), "google.firestore.v1beta1.StructuredQuery.Filter") - proto.RegisterType((*StructuredQuery_CompositeFilter)(nil), "google.firestore.v1beta1.StructuredQuery.CompositeFilter") - proto.RegisterType((*StructuredQuery_FieldFilter)(nil), "google.firestore.v1beta1.StructuredQuery.FieldFilter") - proto.RegisterType((*StructuredQuery_UnaryFilter)(nil), "google.firestore.v1beta1.StructuredQuery.UnaryFilter") - proto.RegisterType((*StructuredQuery_Order)(nil), "google.firestore.v1beta1.StructuredQuery.Order") - proto.RegisterType((*StructuredQuery_FieldReference)(nil), "google.firestore.v1beta1.StructuredQuery.FieldReference") - proto.RegisterType((*StructuredQuery_Projection)(nil), "google.firestore.v1beta1.StructuredQuery.Projection") - proto.RegisterType((*Cursor)(nil), "google.firestore.v1beta1.Cursor") - proto.RegisterEnum("google.firestore.v1beta1.StructuredQuery_Direction", StructuredQuery_Direction_name, StructuredQuery_Direction_value) - proto.RegisterEnum("google.firestore.v1beta1.StructuredQuery_CompositeFilter_Operator", StructuredQuery_CompositeFilter_Operator_name, StructuredQuery_CompositeFilter_Operator_value) - proto.RegisterEnum("google.firestore.v1beta1.StructuredQuery_FieldFilter_Operator", StructuredQuery_FieldFilter_Operator_name, StructuredQuery_FieldFilter_Operator_value) - proto.RegisterEnum("google.firestore.v1beta1.StructuredQuery_UnaryFilter_Operator", StructuredQuery_UnaryFilter_Operator_name, StructuredQuery_UnaryFilter_Operator_value) -} - -func init() { proto.RegisterFile("google/firestore/v1beta1/query.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 970 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xdd, 0x6e, 0xe3, 0x44, - 0x14, 0xc7, 0xd7, 0x4e, 0xf3, 0x75, 0xd2, 0x0f, 0x6b, 0x04, 0x2b, 0x13, 0x96, 0xa5, 0x0a, 0x48, - 0xdb, 0x1b, 0x1c, 0xda, 0xb2, 0x02, 0xb4, 0x80, 0xe4, 0x24, 0x6e, 0x9b, 0x55, 0xe5, 0xa4, 0x93, - 0xb6, 0x12, 0xab, 0x0a, 0xcb, 0xb1, 0xc7, 0xa9, 0x91, 0xeb, 0x31, 0xe3, 0xf1, 0xae, 0x7a, 0xcd, - 0x9b, 0x70, 0xb9, 0x2f, 0x00, 0xcf, 0xc0, 0x53, 0x70, 0xcd, 0x23, 0x70, 0x81, 0x90, 0xc7, 0xe3, - 0xa4, 0xdd, 0xaa, 0x22, 0x29, 0xdc, 0xe5, 0x1c, 0x9f, 0xf3, 0x9b, 0xe3, 0xff, 0x39, 0xc7, 0x13, - 0xf8, 0x74, 0x46, 0xe9, 0x2c, 0x22, 0xdd, 0x20, 0x64, 0x24, 0xe5, 0x94, 0x91, 0xee, 0xeb, 0xdd, - 0x29, 0xe1, 0xee, 0x6e, 0xf7, 0xa7, 0x8c, 0xb0, 0x6b, 0x23, 0x61, 0x94, 0x53, 0xa4, 0x17, 0x51, - 0xc6, 0x3c, 0xca, 0x90, 0x51, 0xed, 0x27, 0x32, 0xdf, 0x4d, 0xc2, 0xae, 0x1b, 0xc7, 0x94, 0xbb, - 0x3c, 0xa4, 0x71, 0x5a, 0xe4, 0xb5, 0x9f, 0xdd, 0x4b, 0xf7, 0xa9, 0x97, 0x5d, 0x91, 0x98, 0xcb, - 0xc0, 0xa7, 0x32, 0x50, 0x58, 0xd3, 0x2c, 0xe8, 0xbe, 0x61, 0x6e, 0x92, 0x10, 0x26, 0x41, 0x9d, - 0xbf, 0x34, 0xd8, 0x9a, 0x70, 0x96, 0x79, 0x3c, 0x63, 0xc4, 0x3f, 0xc9, 0x4b, 0x43, 0xc7, 0x50, - 0x4b, 0x49, 0x44, 0x3c, 0xae, 0x2b, 0xdb, 0xca, 0x4e, 0x6b, 0xef, 0x0b, 0xe3, 0xbe, 0x2a, 0x8d, - 0x77, 0x52, 0x8d, 0x31, 0xa3, 0x3f, 0x12, 0x2f, 0xaf, 0x14, 0x4b, 0x06, 0x1a, 0xc3, 0x5a, 0xc0, - 0xe8, 0x95, 0xae, 0x6e, 0x57, 0x76, 0x5a, 0x7b, 0xdf, 0x2c, 0xcf, 0xea, 0xd3, 0x28, 0x2a, 0x58, - 0x13, 0x41, 0xa2, 0x0c, 0x0b, 0x12, 0x3a, 0x80, 0xea, 0x9b, 0x4b, 0xc2, 0x88, 0x5e, 0x11, 0xe5, - 0x7d, 0xbe, 0x3c, 0xf2, 0x20, 0x8c, 0x38, 0x61, 0xb8, 0x48, 0x47, 0x2f, 0xa1, 0x41, 0x99, 0x4f, - 0x98, 0x33, 0xbd, 0xd6, 0xd7, 0x44, 0x75, 0xdd, 0xe5, 0x51, 0xa3, 0x3c, 0x13, 0xd7, 0x05, 0xa0, - 0x77, 0x8d, 0x5e, 0x40, 0x23, 0xe5, 0x2e, 0xe3, 0x8e, 0xcb, 0xf5, 0xba, 0x28, 0x6b, 0xfb, 0x7e, - 0x56, 0x3f, 0x63, 0x29, 0x65, 0xb8, 0x2e, 0x32, 0x4c, 0x8e, 0xbe, 0x84, 0x1a, 0x89, 0xfd, 0x3c, - 0xb5, 0xb1, 0x64, 0x6a, 0x95, 0xc4, 0xbe, 0xc9, 0xd1, 0x63, 0xa8, 0xd1, 0x20, 0x48, 0x09, 0xd7, - 0x6b, 0xdb, 0xca, 0x4e, 0x15, 0x4b, 0x0b, 0xed, 0x42, 0x35, 0x0a, 0xaf, 0x42, 0xae, 0x57, 0x05, - 0xef, 0xc3, 0x92, 0x57, 0x4e, 0x81, 0x31, 0x8c, 0xf9, 0xfe, 0xde, 0xb9, 0x1b, 0x65, 0x04, 0x17, - 0x91, 0xed, 0x29, 0xa0, 0xbb, 0x82, 0xa3, 0x4f, 0x60, 0xc3, 0x9b, 0x7b, 0x9d, 0xd0, 0xd7, 0xd5, - 0x6d, 0x65, 0xa7, 0x89, 0xd7, 0x17, 0xce, 0xa1, 0x8f, 0x9e, 0xc1, 0x96, 0x1b, 0x45, 0x8e, 0x4f, - 0x52, 0x8f, 0xc4, 0xbe, 0x1b, 0xf3, 0x54, 0x74, 0xa6, 0x81, 0x37, 0xdd, 0x28, 0x1a, 0x2c, 0xbc, - 0xed, 0x5f, 0x55, 0xa8, 0x15, 0x2d, 0x40, 0x01, 0x68, 0x1e, 0xbd, 0x4a, 0x68, 0x1a, 0x72, 0xe2, - 0x04, 0xc2, 0x27, 0xa7, 0xed, 0xeb, 0x55, 0x26, 0x44, 0x12, 0x0a, 0xe8, 0xd1, 0x23, 0xbc, 0xe5, - 0xdd, 0x76, 0xa1, 0x57, 0xb0, 0x1e, 0x84, 0x24, 0xf2, 0xcb, 0x33, 0x54, 0x71, 0xc6, 0xf3, 0x55, - 0x46, 0x86, 0x44, 0xfe, 0x9c, 0xdf, 0x0a, 0x16, 0x66, 0xce, 0xce, 0x62, 0x97, 0x5d, 0x97, 0xec, - 0xca, 0xaa, 0xec, 0xb3, 0x3c, 0x7b, 0xc1, 0xce, 0x16, 0x66, 0x6f, 0x03, 0x5a, 0x05, 0xd5, 0xe1, - 0xd7, 0x09, 0x69, 0xff, 0xa1, 0xc0, 0xd6, 0x3b, 0x6f, 0x8b, 0x30, 0xa8, 0x34, 0x11, 0xa2, 0x6d, - 0xee, 0xf5, 0x1e, 0x2c, 0x9a, 0x31, 0x4a, 0x08, 0x73, 0xf3, 0xe5, 0x52, 0x69, 0x82, 0x5e, 0x42, - 0xbd, 0x38, 0x36, 0x95, 0xfb, 0xba, 0xfa, 0x72, 0x95, 0x80, 0xce, 0x67, 0xd0, 0x28, 0xd9, 0x48, - 0x87, 0xf7, 0x46, 0x63, 0x0b, 0x9b, 0xa7, 0x23, 0xec, 0x9c, 0xd9, 0x93, 0xb1, 0xd5, 0x1f, 0x1e, - 0x0c, 0xad, 0x81, 0xf6, 0x08, 0xd5, 0xa1, 0x62, 0xda, 0x03, 0x4d, 0x69, 0xff, 0xa9, 0x42, 0xeb, - 0x86, 0xd8, 0xc8, 0x86, 0xaa, 0x10, 0x5b, 0x8e, 0xc5, 0x57, 0x2b, 0xb6, 0x0c, 0x93, 0x80, 0x30, - 0x12, 0x7b, 0x04, 0x17, 0x18, 0x64, 0x0b, 0xb9, 0x54, 0x21, 0xd7, 0x77, 0x0f, 0xea, 0xff, 0x6d, - 0xa9, 0x9e, 0x43, 0xf5, 0x75, 0xbe, 0x40, 0xb2, 0xed, 0x1f, 0xdf, 0x8f, 0x94, 0x7b, 0x26, 0xa2, - 0x3b, 0x3f, 0x2b, 0x4b, 0xc9, 0xb2, 0x01, 0xcd, 0x63, 0x6b, 0x32, 0x71, 0x4e, 0x8f, 0x4c, 0x5b, - 0x53, 0xd0, 0x63, 0x40, 0x73, 0xd3, 0x19, 0x61, 0xc7, 0x3a, 0x39, 0x33, 0x8f, 0x35, 0x15, 0x69, - 0xb0, 0x7e, 0x88, 0x2d, 0xf3, 0xd4, 0xc2, 0x45, 0x64, 0x05, 0x7d, 0x00, 0xef, 0xdf, 0xf4, 0x2c, - 0x82, 0xd7, 0x50, 0x13, 0xaa, 0xc5, 0xcf, 0x6a, 0xfb, 0x6f, 0x05, 0x5a, 0x37, 0xa6, 0x4f, 0x8a, - 0xa3, 0xac, 0x2a, 0xce, 0x0d, 0xc4, 0x6d, 0x71, 0xc6, 0x65, 0xf3, 0xd4, 0xff, 0xd6, 0xbc, 0xa3, - 0x47, 0xb2, 0x7d, 0x9d, 0x6f, 0x97, 0x92, 0x0d, 0xa0, 0x36, 0x9c, 0x38, 0xb6, 0x69, 0x6b, 0x2a, - 0x6a, 0x41, 0x3d, 0xff, 0x7d, 0x76, 0x7c, 0xac, 0x55, 0x7a, 0x9b, 0xb0, 0x4e, 0xf3, 0xf4, 0xd8, - 0x2f, 0x16, 0xea, 0xad, 0x02, 0x55, 0xf1, 0x09, 0xff, 0xdf, 0xe7, 0xec, 0x04, 0x9a, 0x7e, 0xc8, - 0x8a, 0x8f, 0xa3, 0x1c, 0xb7, 0xfd, 0xe5, 0x99, 0x83, 0x32, 0x15, 0x2f, 0x28, 0xed, 0x2e, 0x6c, - 0xde, 0x3e, 0x0b, 0x7d, 0x04, 0x50, 0x7c, 0xd6, 0x12, 0x97, 0x5f, 0xca, 0x8f, 0x72, 0x53, 0x78, - 0xc6, 0x2e, 0xbf, 0x6c, 0xff, 0x00, 0xb0, 0xb8, 0x89, 0xd1, 0x18, 0x6a, 0xe2, 0x51, 0xb9, 0xd3, - 0x0f, 0x7f, 0x45, 0xc9, 0xe9, 0x58, 0xd0, 0x9c, 0x17, 0x9a, 0x4f, 0xdc, 0x60, 0x88, 0xad, 0xfe, - 0xe9, 0x70, 0x64, 0xdf, 0x9d, 0x62, 0x73, 0xd2, 0xb7, 0xec, 0xc1, 0xd0, 0x3e, 0xd4, 0x14, 0xb4, - 0x09, 0x30, 0xb0, 0xe6, 0xb6, 0xda, 0xf9, 0x1e, 0x6a, 0xc5, 0x7d, 0x96, 0xdf, 0x80, 0x62, 0x3d, - 0x52, 0x5d, 0x11, 0x25, 0xfe, 0xeb, 0x36, 0xc9, 0xf0, 0xfc, 0x06, 0x9c, 0x92, 0x80, 0x32, 0x22, - 0x44, 0x68, 0x60, 0x69, 0xf5, 0x7e, 0x53, 0xe0, 0x89, 0x47, 0xaf, 0xee, 0xc5, 0xf4, 0x40, 0xbc, - 0xe0, 0x38, 0xbf, 0x10, 0xc7, 0xca, 0x2b, 0x53, 0xc6, 0xcd, 0x68, 0xe4, 0xc6, 0x33, 0x83, 0xb2, - 0x59, 0x77, 0x46, 0x62, 0x71, 0x5d, 0x76, 0x8b, 0x47, 0x6e, 0x12, 0xa6, 0x77, 0xff, 0x6e, 0xbd, - 0x98, 0x7b, 0x7e, 0x51, 0xd7, 0x0e, 0xfb, 0x07, 0x93, 0xb7, 0xea, 0xd3, 0xc3, 0x02, 0xd5, 0x8f, - 0x68, 0xe6, 0x1b, 0x07, 0xf3, 0x83, 0xcf, 0x77, 0x7b, 0x79, 0xc6, 0xef, 0x65, 0xc0, 0x85, 0x08, - 0xb8, 0x98, 0x07, 0x5c, 0x9c, 0x17, 0xc8, 0x69, 0x4d, 0x1c, 0xbb, 0xff, 0x4f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x4c, 0xc9, 0x73, 0x9b, 0x42, 0x0a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/write.pb.go b/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/write.pb.go deleted file mode 100644 index fca9fdd5..00000000 --- a/vendor/google.golang.org/genproto/googleapis/firestore/v1beta1/write.pb.go +++ /dev/null @@ -1,612 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/firestore/v1beta1/write.proto - -package firestore - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A value that is calculated by the server. -type DocumentTransform_FieldTransform_ServerValue int32 - -const ( - // Unspecified. This value must not be used. - DocumentTransform_FieldTransform_SERVER_VALUE_UNSPECIFIED DocumentTransform_FieldTransform_ServerValue = 0 - // The time at which the server processed the request, with millisecond - // precision. - DocumentTransform_FieldTransform_REQUEST_TIME DocumentTransform_FieldTransform_ServerValue = 1 -) - -var DocumentTransform_FieldTransform_ServerValue_name = map[int32]string{ - 0: "SERVER_VALUE_UNSPECIFIED", - 1: "REQUEST_TIME", -} -var DocumentTransform_FieldTransform_ServerValue_value = map[string]int32{ - "SERVER_VALUE_UNSPECIFIED": 0, - "REQUEST_TIME": 1, -} - -func (x DocumentTransform_FieldTransform_ServerValue) String() string { - return proto.EnumName(DocumentTransform_FieldTransform_ServerValue_name, int32(x)) -} -func (DocumentTransform_FieldTransform_ServerValue) EnumDescriptor() ([]byte, []int) { - return fileDescriptor4, []int{1, 0, 0} -} - -// A write on a document. -type Write struct { - // The operation to execute. - // - // Types that are valid to be assigned to Operation: - // *Write_Update - // *Write_Delete - // *Write_Transform - Operation isWrite_Operation `protobuf_oneof:"operation"` - // The fields to update in this write. - // - // This field can be set only when the operation is `update`. - // None of the field paths in the mask may contain a reserved name. - // If the document exists on the server and has fields not referenced in the - // mask, they are left unchanged. - // Fields referenced in the mask, but not present in the input document, are - // deleted from the document on the server. - // The field paths in this mask must not contain a reserved field name. - UpdateMask *DocumentMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` - // An optional precondition on the document. - // - // The write will fail if this is set and not met by the target document. - CurrentDocument *Precondition `protobuf:"bytes,4,opt,name=current_document,json=currentDocument" json:"current_document,omitempty"` -} - -func (m *Write) Reset() { *m = Write{} } -func (m *Write) String() string { return proto.CompactTextString(m) } -func (*Write) ProtoMessage() {} -func (*Write) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -type isWrite_Operation interface { - isWrite_Operation() -} - -type Write_Update struct { - Update *Document `protobuf:"bytes,1,opt,name=update,oneof"` -} -type Write_Delete struct { - Delete string `protobuf:"bytes,2,opt,name=delete,oneof"` -} -type Write_Transform struct { - Transform *DocumentTransform `protobuf:"bytes,6,opt,name=transform,oneof"` -} - -func (*Write_Update) isWrite_Operation() {} -func (*Write_Delete) isWrite_Operation() {} -func (*Write_Transform) isWrite_Operation() {} - -func (m *Write) GetOperation() isWrite_Operation { - if m != nil { - return m.Operation - } - return nil -} - -func (m *Write) GetUpdate() *Document { - if x, ok := m.GetOperation().(*Write_Update); ok { - return x.Update - } - return nil -} - -func (m *Write) GetDelete() string { - if x, ok := m.GetOperation().(*Write_Delete); ok { - return x.Delete - } - return "" -} - -func (m *Write) GetTransform() *DocumentTransform { - if x, ok := m.GetOperation().(*Write_Transform); ok { - return x.Transform - } - return nil -} - -func (m *Write) GetUpdateMask() *DocumentMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func (m *Write) GetCurrentDocument() *Precondition { - if m != nil { - return m.CurrentDocument - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Write) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Write_OneofMarshaler, _Write_OneofUnmarshaler, _Write_OneofSizer, []interface{}{ - (*Write_Update)(nil), - (*Write_Delete)(nil), - (*Write_Transform)(nil), - } -} - -func _Write_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Write) - // operation - switch x := m.Operation.(type) { - case *Write_Update: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Update); err != nil { - return err - } - case *Write_Delete: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Delete) - case *Write_Transform: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Transform); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Write.Operation has unexpected type %T", x) - } - return nil -} - -func _Write_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Write) - switch tag { - case 1: // operation.update - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Document) - err := b.DecodeMessage(msg) - m.Operation = &Write_Update{msg} - return true, err - case 2: // operation.delete - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Operation = &Write_Delete{x} - return true, err - case 6: // operation.transform - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DocumentTransform) - err := b.DecodeMessage(msg) - m.Operation = &Write_Transform{msg} - return true, err - default: - return false, nil - } -} - -func _Write_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Write) - // operation - switch x := m.Operation.(type) { - case *Write_Update: - s := proto.Size(x.Update) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Write_Delete: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Delete))) - n += len(x.Delete) - case *Write_Transform: - s := proto.Size(x.Transform) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A transformation of a document. -type DocumentTransform struct { - // The name of the document to transform. - Document string `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // The list of transformations to apply to the fields of the document, in - // order. - // This must not be empty. - FieldTransforms []*DocumentTransform_FieldTransform `protobuf:"bytes,2,rep,name=field_transforms,json=fieldTransforms" json:"field_transforms,omitempty"` -} - -func (m *DocumentTransform) Reset() { *m = DocumentTransform{} } -func (m *DocumentTransform) String() string { return proto.CompactTextString(m) } -func (*DocumentTransform) ProtoMessage() {} -func (*DocumentTransform) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *DocumentTransform) GetDocument() string { - if m != nil { - return m.Document - } - return "" -} - -func (m *DocumentTransform) GetFieldTransforms() []*DocumentTransform_FieldTransform { - if m != nil { - return m.FieldTransforms - } - return nil -} - -// A transformation of a field of the document. -type DocumentTransform_FieldTransform struct { - // The path of the field. See [Document.fields][google.firestore.v1beta1.Document.fields] for the field path syntax - // reference. - FieldPath string `protobuf:"bytes,1,opt,name=field_path,json=fieldPath" json:"field_path,omitempty"` - // The transformation to apply on the field. - // - // Types that are valid to be assigned to TransformType: - // *DocumentTransform_FieldTransform_SetToServerValue - TransformType isDocumentTransform_FieldTransform_TransformType `protobuf_oneof:"transform_type"` -} - -func (m *DocumentTransform_FieldTransform) Reset() { *m = DocumentTransform_FieldTransform{} } -func (m *DocumentTransform_FieldTransform) String() string { return proto.CompactTextString(m) } -func (*DocumentTransform_FieldTransform) ProtoMessage() {} -func (*DocumentTransform_FieldTransform) Descriptor() ([]byte, []int) { - return fileDescriptor4, []int{1, 0} -} - -type isDocumentTransform_FieldTransform_TransformType interface { - isDocumentTransform_FieldTransform_TransformType() -} - -type DocumentTransform_FieldTransform_SetToServerValue struct { - SetToServerValue DocumentTransform_FieldTransform_ServerValue `protobuf:"varint,2,opt,name=set_to_server_value,json=setToServerValue,enum=google.firestore.v1beta1.DocumentTransform_FieldTransform_ServerValue,oneof"` -} - -func (*DocumentTransform_FieldTransform_SetToServerValue) isDocumentTransform_FieldTransform_TransformType() { -} - -func (m *DocumentTransform_FieldTransform) GetTransformType() isDocumentTransform_FieldTransform_TransformType { - if m != nil { - return m.TransformType - } - return nil -} - -func (m *DocumentTransform_FieldTransform) GetFieldPath() string { - if m != nil { - return m.FieldPath - } - return "" -} - -func (m *DocumentTransform_FieldTransform) GetSetToServerValue() DocumentTransform_FieldTransform_ServerValue { - if x, ok := m.GetTransformType().(*DocumentTransform_FieldTransform_SetToServerValue); ok { - return x.SetToServerValue - } - return DocumentTransform_FieldTransform_SERVER_VALUE_UNSPECIFIED -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*DocumentTransform_FieldTransform) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _DocumentTransform_FieldTransform_OneofMarshaler, _DocumentTransform_FieldTransform_OneofUnmarshaler, _DocumentTransform_FieldTransform_OneofSizer, []interface{}{ - (*DocumentTransform_FieldTransform_SetToServerValue)(nil), - } -} - -func _DocumentTransform_FieldTransform_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*DocumentTransform_FieldTransform) - // transform_type - switch x := m.TransformType.(type) { - case *DocumentTransform_FieldTransform_SetToServerValue: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.SetToServerValue)) - case nil: - default: - return fmt.Errorf("DocumentTransform_FieldTransform.TransformType has unexpected type %T", x) - } - return nil -} - -func _DocumentTransform_FieldTransform_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*DocumentTransform_FieldTransform) - switch tag { - case 2: // transform_type.set_to_server_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.TransformType = &DocumentTransform_FieldTransform_SetToServerValue{DocumentTransform_FieldTransform_ServerValue(x)} - return true, err - default: - return false, nil - } -} - -func _DocumentTransform_FieldTransform_OneofSizer(msg proto.Message) (n int) { - m := msg.(*DocumentTransform_FieldTransform) - // transform_type - switch x := m.TransformType.(type) { - case *DocumentTransform_FieldTransform_SetToServerValue: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.SetToServerValue)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The result of applying a write. -type WriteResult struct { - // The last update time of the document after applying the write. Not set - // after a `delete`. - // - // If the write did not actually change the document, this will be the - // previous update_time. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // The results of applying each [DocumentTransform.FieldTransform][google.firestore.v1beta1.DocumentTransform.FieldTransform], in the - // same order. - TransformResults []*Value `protobuf:"bytes,2,rep,name=transform_results,json=transformResults" json:"transform_results,omitempty"` -} - -func (m *WriteResult) Reset() { *m = WriteResult{} } -func (m *WriteResult) String() string { return proto.CompactTextString(m) } -func (*WriteResult) ProtoMessage() {} -func (*WriteResult) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} } - -func (m *WriteResult) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *WriteResult) GetTransformResults() []*Value { - if m != nil { - return m.TransformResults - } - return nil -} - -// A [Document][google.firestore.v1beta1.Document] has changed. -// -// May be the result of multiple [writes][google.firestore.v1beta1.Write], including deletes, that -// ultimately resulted in a new value for the [Document][google.firestore.v1beta1.Document]. -// -// Multiple [DocumentChange][google.firestore.v1beta1.DocumentChange] messages may be returned for the same logical -// change, if multiple targets are affected. -type DocumentChange struct { - // The new state of the [Document][google.firestore.v1beta1.Document]. - // - // If `mask` is set, contains only fields that were updated or added. - Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // A set of target IDs of targets that match this document. - TargetIds []int32 `protobuf:"varint,5,rep,packed,name=target_ids,json=targetIds" json:"target_ids,omitempty"` - // A set of target IDs for targets that no longer match this document. - RemovedTargetIds []int32 `protobuf:"varint,6,rep,packed,name=removed_target_ids,json=removedTargetIds" json:"removed_target_ids,omitempty"` -} - -func (m *DocumentChange) Reset() { *m = DocumentChange{} } -func (m *DocumentChange) String() string { return proto.CompactTextString(m) } -func (*DocumentChange) ProtoMessage() {} -func (*DocumentChange) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} } - -func (m *DocumentChange) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *DocumentChange) GetTargetIds() []int32 { - if m != nil { - return m.TargetIds - } - return nil -} - -func (m *DocumentChange) GetRemovedTargetIds() []int32 { - if m != nil { - return m.RemovedTargetIds - } - return nil -} - -// A [Document][google.firestore.v1beta1.Document] has been deleted. -// -// May be the result of multiple [writes][google.firestore.v1beta1.Write], including updates, the -// last of which deleted the [Document][google.firestore.v1beta1.Document]. -// -// Multiple [DocumentDelete][google.firestore.v1beta1.DocumentDelete] messages may be returned for the same logical -// delete, if multiple targets are affected. -type DocumentDelete struct { - // The resource name of the [Document][google.firestore.v1beta1.Document] that was deleted. - Document string `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // A set of target IDs for targets that previously matched this entity. - RemovedTargetIds []int32 `protobuf:"varint,6,rep,packed,name=removed_target_ids,json=removedTargetIds" json:"removed_target_ids,omitempty"` - // The read timestamp at which the delete was observed. - // - // Greater or equal to the `commit_time` of the delete. - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=read_time,json=readTime" json:"read_time,omitempty"` -} - -func (m *DocumentDelete) Reset() { *m = DocumentDelete{} } -func (m *DocumentDelete) String() string { return proto.CompactTextString(m) } -func (*DocumentDelete) ProtoMessage() {} -func (*DocumentDelete) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} } - -func (m *DocumentDelete) GetDocument() string { - if m != nil { - return m.Document - } - return "" -} - -func (m *DocumentDelete) GetRemovedTargetIds() []int32 { - if m != nil { - return m.RemovedTargetIds - } - return nil -} - -func (m *DocumentDelete) GetReadTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ReadTime - } - return nil -} - -// A [Document][google.firestore.v1beta1.Document] has been removed from the view of the targets. -// -// Sent if the document is no longer relevant to a target and is out of view. -// Can be sent instead of a DocumentDelete or a DocumentChange if the server -// can not send the new value of the document. -// -// Multiple [DocumentRemove][google.firestore.v1beta1.DocumentRemove] messages may be returned for the same logical -// write or delete, if multiple targets are affected. -type DocumentRemove struct { - // The resource name of the [Document][google.firestore.v1beta1.Document] that has gone out of view. - Document string `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"` - // A set of target IDs for targets that previously matched this document. - RemovedTargetIds []int32 `protobuf:"varint,2,rep,packed,name=removed_target_ids,json=removedTargetIds" json:"removed_target_ids,omitempty"` - // The read timestamp at which the remove was observed. - // - // Greater or equal to the `commit_time` of the change/delete/remove. - ReadTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=read_time,json=readTime" json:"read_time,omitempty"` -} - -func (m *DocumentRemove) Reset() { *m = DocumentRemove{} } -func (m *DocumentRemove) String() string { return proto.CompactTextString(m) } -func (*DocumentRemove) ProtoMessage() {} -func (*DocumentRemove) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} } - -func (m *DocumentRemove) GetDocument() string { - if m != nil { - return m.Document - } - return "" -} - -func (m *DocumentRemove) GetRemovedTargetIds() []int32 { - if m != nil { - return m.RemovedTargetIds - } - return nil -} - -func (m *DocumentRemove) GetReadTime() *google_protobuf1.Timestamp { - if m != nil { - return m.ReadTime - } - return nil -} - -// A digest of all the documents that match a given target. -type ExistenceFilter struct { - // The target ID to which this filter applies. - TargetId int32 `protobuf:"varint,1,opt,name=target_id,json=targetId" json:"target_id,omitempty"` - // The total count of documents that match [target_id][google.firestore.v1beta1.ExistenceFilter.target_id]. - // - // If different from the count of documents in the client that match, the - // client must manually determine which documents no longer match the target. - Count int32 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` -} - -func (m *ExistenceFilter) Reset() { *m = ExistenceFilter{} } -func (m *ExistenceFilter) String() string { return proto.CompactTextString(m) } -func (*ExistenceFilter) ProtoMessage() {} -func (*ExistenceFilter) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} } - -func (m *ExistenceFilter) GetTargetId() int32 { - if m != nil { - return m.TargetId - } - return 0 -} - -func (m *ExistenceFilter) GetCount() int32 { - if m != nil { - return m.Count - } - return 0 -} - -func init() { - proto.RegisterType((*Write)(nil), "google.firestore.v1beta1.Write") - proto.RegisterType((*DocumentTransform)(nil), "google.firestore.v1beta1.DocumentTransform") - proto.RegisterType((*DocumentTransform_FieldTransform)(nil), "google.firestore.v1beta1.DocumentTransform.FieldTransform") - proto.RegisterType((*WriteResult)(nil), "google.firestore.v1beta1.WriteResult") - proto.RegisterType((*DocumentChange)(nil), "google.firestore.v1beta1.DocumentChange") - proto.RegisterType((*DocumentDelete)(nil), "google.firestore.v1beta1.DocumentDelete") - proto.RegisterType((*DocumentRemove)(nil), "google.firestore.v1beta1.DocumentRemove") - proto.RegisterType((*ExistenceFilter)(nil), "google.firestore.v1beta1.ExistenceFilter") - proto.RegisterEnum("google.firestore.v1beta1.DocumentTransform_FieldTransform_ServerValue", DocumentTransform_FieldTransform_ServerValue_name, DocumentTransform_FieldTransform_ServerValue_value) -} - -func init() { proto.RegisterFile("google/firestore/v1beta1/write.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 756 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcd, 0x8e, 0xe3, 0x44, - 0x10, 0x8e, 0x93, 0x49, 0x34, 0xae, 0xa0, 0x8c, 0xb7, 0xe1, 0x60, 0x85, 0x59, 0x36, 0x8a, 0xf8, - 0x89, 0x04, 0x72, 0x34, 0xc3, 0x01, 0x89, 0x05, 0xa4, 0x4d, 0xe2, 0xcc, 0x44, 0xec, 0xa2, 0x6c, - 0x27, 0x13, 0x24, 0x34, 0x92, 0xd5, 0x13, 0x77, 0x3c, 0xd6, 0xda, 0x6e, 0xab, 0xbb, 0x9d, 0x85, - 0xd7, 0x80, 0x0b, 0x17, 0x2e, 0x1c, 0x79, 0x02, 0x9e, 0x81, 0x3b, 0x0f, 0xc3, 0x0d, 0xb9, 0xdb, - 0xf6, 0x66, 0x58, 0x85, 0xb0, 0x23, 0x6e, 0xae, 0xea, 0xaf, 0xbe, 0xfa, 0xea, 0x4f, 0x86, 0xf7, - 0x03, 0xc6, 0x82, 0x88, 0x0e, 0x37, 0x21, 0xa7, 0x42, 0x32, 0x4e, 0x87, 0xdb, 0xb3, 0x1b, 0x2a, - 0xc9, 0xd9, 0xf0, 0x25, 0x0f, 0x25, 0x75, 0x52, 0xce, 0x24, 0x43, 0xb6, 0x46, 0x39, 0x15, 0xca, - 0x29, 0x50, 0xdd, 0xd3, 0x22, 0x9e, 0xa4, 0xe1, 0x90, 0x24, 0x09, 0x93, 0x44, 0x86, 0x2c, 0x11, - 0x3a, 0xae, 0xfb, 0xc1, 0x5e, 0xf6, 0x35, 0x8b, 0x63, 0x96, 0x14, 0xb0, 0x8f, 0xf6, 0xc2, 0x7c, - 0xb6, 0xce, 0x62, 0x9a, 0xc8, 0x02, 0xf8, 0xa8, 0x00, 0x2a, 0xeb, 0x26, 0xdb, 0x0c, 0x65, 0x18, - 0x53, 0x21, 0x49, 0x9c, 0x6a, 0x40, 0xff, 0xcf, 0x3a, 0x34, 0xbf, 0xcd, 0x85, 0xa3, 0x2f, 0xa0, - 0x95, 0xa5, 0x3e, 0x91, 0xd4, 0x36, 0x7a, 0xc6, 0xa0, 0x7d, 0xde, 0x77, 0xf6, 0xd5, 0xe0, 0x4c, - 0x8a, 0x24, 0x97, 0x35, 0x5c, 0xc4, 0x20, 0x1b, 0x5a, 0x3e, 0x8d, 0xa8, 0xa4, 0x76, 0xbd, 0x67, - 0x0c, 0xcc, 0xfc, 0x45, 0xdb, 0xe8, 0x6b, 0x30, 0x25, 0x27, 0x89, 0xd8, 0x30, 0x1e, 0xdb, 0x2d, - 0x45, 0xfd, 0xf1, 0x61, 0xea, 0x65, 0x19, 0x72, 0x59, 0xc3, 0xaf, 0xe2, 0xd1, 0x05, 0xb4, 0x75, - 0x42, 0x2f, 0x26, 0xe2, 0x85, 0xdd, 0x50, 0x74, 0x1f, 0x1e, 0xa6, 0x7b, 0x46, 0xc4, 0x0b, 0x0c, - 0x3a, 0x34, 0xff, 0x46, 0xcf, 0xc1, 0x5a, 0x67, 0x9c, 0xd3, 0x44, 0x7a, 0x65, 0xcb, 0xec, 0xa3, - 0x43, 0x6c, 0x73, 0x4e, 0xd7, 0x2c, 0xf1, 0xc3, 0x7c, 0x62, 0xf8, 0xa4, 0x88, 0x2f, 0x53, 0x8c, - 0xda, 0x60, 0xb2, 0x94, 0x72, 0x35, 0xcf, 0xfe, 0x8f, 0x0d, 0x78, 0xf0, 0x5a, 0x2d, 0xa8, 0x0b, - 0xc7, 0x55, 0xb6, 0xbc, 0xcb, 0x26, 0xae, 0x6c, 0x44, 0xc1, 0xda, 0x84, 0x34, 0xf2, 0xbd, 0xaa, - 0x5a, 0x61, 0xd7, 0x7b, 0x8d, 0x41, 0xfb, 0xfc, 0xf3, 0x37, 0x68, 0x97, 0x33, 0xcd, 0x39, 0x2a, - 0x13, 0x9f, 0x6c, 0xee, 0xd8, 0xa2, 0xfb, 0x97, 0x01, 0x9d, 0xbb, 0x18, 0xf4, 0x10, 0x40, 0x67, - 0x4e, 0x89, 0xbc, 0x2d, 0x74, 0x99, 0xca, 0x33, 0x27, 0xf2, 0x16, 0xbd, 0x84, 0xb7, 0x05, 0x95, - 0x9e, 0x64, 0x9e, 0xa0, 0x7c, 0x4b, 0xb9, 0xb7, 0x25, 0x51, 0xa6, 0xe7, 0xdc, 0x39, 0x9f, 0xde, - 0x5f, 0x9b, 0xb3, 0x50, 0x74, 0xab, 0x9c, 0xed, 0xb2, 0x86, 0x2d, 0x41, 0xe5, 0x92, 0xed, 0xf8, - 0xfa, 0x5f, 0x42, 0x7b, 0xc7, 0x44, 0xa7, 0x60, 0x2f, 0x5c, 0xbc, 0x72, 0xb1, 0xb7, 0x7a, 0xf2, - 0xf4, 0xca, 0xf5, 0xae, 0xbe, 0x59, 0xcc, 0xdd, 0xf1, 0x6c, 0x3a, 0x73, 0x27, 0x56, 0x0d, 0x59, - 0xf0, 0x16, 0x76, 0x9f, 0x5f, 0xb9, 0x8b, 0xa5, 0xb7, 0x9c, 0x3d, 0x73, 0x2d, 0x63, 0x64, 0x41, - 0xa7, 0x6a, 0xa5, 0x27, 0x7f, 0x48, 0x69, 0xff, 0x67, 0x03, 0xda, 0x6a, 0xd9, 0x31, 0x15, 0x59, - 0x24, 0xd1, 0xe3, 0x6a, 0x9b, 0xf2, 0xb3, 0x28, 0xf6, 0xbe, 0x5b, 0x56, 0x54, 0xde, 0x8c, 0xb3, - 0x2c, 0x6f, 0xa6, 0xdc, 0xa0, 0xdc, 0x81, 0x9e, 0xc2, 0x83, 0x57, 0xf4, 0x5c, 0x11, 0x96, 0x03, - 0x7b, 0xb4, 0xbf, 0x29, 0xaa, 0x14, 0x6c, 0x55, 0x91, 0x5a, 0x89, 0xe8, 0xff, 0x62, 0x40, 0xa7, - 0x6c, 0xd8, 0xf8, 0x96, 0x24, 0x01, 0x45, 0x5f, 0xfd, 0x63, 0x59, 0xfe, 0xd3, 0x49, 0xee, 0x2c, - 0xd4, 0x43, 0x00, 0x49, 0x78, 0x40, 0xa5, 0x17, 0xfa, 0xc2, 0x6e, 0xf6, 0x1a, 0x83, 0x26, 0x36, - 0xb5, 0x67, 0xe6, 0x0b, 0xf4, 0x09, 0x20, 0x4e, 0x63, 0xb6, 0xa5, 0xbe, 0xb7, 0x03, 0x6b, 0x29, - 0x98, 0x55, 0xbc, 0x2c, 0x4b, 0x74, 0xff, 0xa7, 0x1d, 0x7d, 0x13, 0x7d, 0xd8, 0xff, 0xb6, 0xcc, - 0x6f, 0x44, 0x8e, 0x3e, 0x03, 0x93, 0x53, 0xe2, 0xeb, 0x29, 0x1c, 0x1d, 0x9c, 0xc2, 0x71, 0x0e, - 0xce, 0xcd, 0x3b, 0xaa, 0xb0, 0x62, 0xbd, 0x87, 0xaa, 0xfa, 0xff, 0xad, 0x6a, 0x02, 0x27, 0xee, - 0xf7, 0xa1, 0x90, 0x34, 0x59, 0xd3, 0x69, 0x18, 0x49, 0xca, 0xd1, 0xbb, 0x60, 0x56, 0x19, 0x95, - 0xac, 0x26, 0x3e, 0x2e, 0x47, 0x81, 0xde, 0x81, 0xe6, 0x9a, 0x65, 0x89, 0x54, 0x27, 0xd5, 0xc4, - 0xda, 0x18, 0xfd, 0x6e, 0xc0, 0xe9, 0x9a, 0xc5, 0x7b, 0x47, 0x3e, 0x02, 0xb5, 0xca, 0xf3, 0x5c, - 0xc9, 0xdc, 0xf8, 0xee, 0x49, 0x81, 0x0b, 0x58, 0x44, 0x92, 0xc0, 0x61, 0x3c, 0x18, 0x06, 0x34, - 0x51, 0x3a, 0x87, 0xfa, 0x89, 0xa4, 0xa1, 0x78, 0xfd, 0x8f, 0xf1, 0xb8, 0xf2, 0xfc, 0x5a, 0x3f, - 0xba, 0x18, 0x4f, 0x17, 0xbf, 0xd5, 0xdf, 0xbb, 0xd0, 0x54, 0xe3, 0x88, 0x65, 0xbe, 0x33, 0xad, - 0x12, 0xaf, 0xce, 0x46, 0x79, 0xc4, 0x1f, 0x25, 0xe0, 0x5a, 0x01, 0xae, 0x2b, 0xc0, 0xf5, 0x4a, - 0x53, 0xde, 0xb4, 0x54, 0xda, 0x4f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xba, 0xb7, 0x73, 0xcf, - 0x2c, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/annotations.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/annotations.pb.go deleted file mode 100644 index 7f2c5348..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/annotations.pb.go +++ /dev/null @@ -1,2227 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/annotations.proto - -/* -Package genomics is a generated protocol buffer package. - -It is generated from these files: - google/genomics/v1/annotations.proto - google/genomics/v1/cigar.proto - google/genomics/v1/datasets.proto - google/genomics/v1/operations.proto - google/genomics/v1/position.proto - google/genomics/v1/range.proto - google/genomics/v1/readalignment.proto - google/genomics/v1/readgroup.proto - google/genomics/v1/readgroupset.proto - google/genomics/v1/reads.proto - google/genomics/v1/references.proto - google/genomics/v1/variants.proto - -It has these top-level messages: - AnnotationSet - Annotation - VariantAnnotation - Transcript - ExternalId - CreateAnnotationSetRequest - GetAnnotationSetRequest - UpdateAnnotationSetRequest - DeleteAnnotationSetRequest - SearchAnnotationSetsRequest - SearchAnnotationSetsResponse - CreateAnnotationRequest - BatchCreateAnnotationsRequest - BatchCreateAnnotationsResponse - GetAnnotationRequest - UpdateAnnotationRequest - DeleteAnnotationRequest - SearchAnnotationsRequest - SearchAnnotationsResponse - CigarUnit - Dataset - ListDatasetsRequest - ListDatasetsResponse - CreateDatasetRequest - UpdateDatasetRequest - DeleteDatasetRequest - UndeleteDatasetRequest - GetDatasetRequest - OperationMetadata - OperationEvent - Position - Range - LinearAlignment - Read - ReadGroup - ReadGroupSet - SearchReadGroupSetsRequest - SearchReadGroupSetsResponse - ImportReadGroupSetsRequest - ImportReadGroupSetsResponse - ExportReadGroupSetRequest - UpdateReadGroupSetRequest - DeleteReadGroupSetRequest - GetReadGroupSetRequest - ListCoverageBucketsRequest - CoverageBucket - ListCoverageBucketsResponse - SearchReadsRequest - SearchReadsResponse - StreamReadsRequest - StreamReadsResponse - Reference - ReferenceSet - SearchReferenceSetsRequest - SearchReferenceSetsResponse - GetReferenceSetRequest - SearchReferencesRequest - SearchReferencesResponse - GetReferenceRequest - ListBasesRequest - ListBasesResponse - VariantSetMetadata - VariantSet - Variant - VariantCall - CallSet - ReferenceBound - ImportVariantsRequest - ImportVariantsResponse - CreateVariantSetRequest - ExportVariantSetRequest - GetVariantSetRequest - SearchVariantSetsRequest - SearchVariantSetsResponse - DeleteVariantSetRequest - UpdateVariantSetRequest - SearchVariantsRequest - SearchVariantsResponse - CreateVariantRequest - UpdateVariantRequest - DeleteVariantRequest - GetVariantRequest - MergeVariantsRequest - SearchCallSetsRequest - SearchCallSetsResponse - CreateCallSetRequest - UpdateCallSetRequest - DeleteCallSetRequest - GetCallSetRequest - StreamVariantsRequest - StreamVariantsResponse -*/ -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf3 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf4 "github.com/golang/protobuf/ptypes/wrappers" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// When an [Annotation][google.genomics.v1.Annotation] or -// [AnnotationSet][google.genomics.v1.AnnotationSet] is created, if `type` is -// not specified it will be set to `GENERIC`. -type AnnotationType int32 - -const ( - AnnotationType_ANNOTATION_TYPE_UNSPECIFIED AnnotationType = 0 - // A `GENERIC` annotation type should be used when no other annotation - // type will suffice. This represents an untyped annotation of the reference - // genome. - AnnotationType_GENERIC AnnotationType = 1 - // A `VARIANT` annotation type. - AnnotationType_VARIANT AnnotationType = 2 - // A `GENE` annotation type represents the existence of a gene at the - // associated reference coordinates. The start coordinate is typically the - // gene's transcription start site and the end is typically the end of the - // gene's last exon. - AnnotationType_GENE AnnotationType = 3 - // A `TRANSCRIPT` annotation type represents the assertion that a - // particular region of the reference genome may be transcribed as RNA. - AnnotationType_TRANSCRIPT AnnotationType = 4 -) - -var AnnotationType_name = map[int32]string{ - 0: "ANNOTATION_TYPE_UNSPECIFIED", - 1: "GENERIC", - 2: "VARIANT", - 3: "GENE", - 4: "TRANSCRIPT", -} -var AnnotationType_value = map[string]int32{ - "ANNOTATION_TYPE_UNSPECIFIED": 0, - "GENERIC": 1, - "VARIANT": 2, - "GENE": 3, - "TRANSCRIPT": 4, -} - -func (x AnnotationType) String() string { - return proto.EnumName(AnnotationType_name, int32(x)) -} -func (AnnotationType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type VariantAnnotation_Type int32 - -const ( - VariantAnnotation_TYPE_UNSPECIFIED VariantAnnotation_Type = 0 - // `TYPE_OTHER` should be used when no other Type will suffice. - // Further explanation of the variant type may be included in the - // [info][google.genomics.v1.Annotation.info] field. - VariantAnnotation_TYPE_OTHER VariantAnnotation_Type = 1 - // `INSERTION` indicates an insertion. - VariantAnnotation_INSERTION VariantAnnotation_Type = 2 - // `DELETION` indicates a deletion. - VariantAnnotation_DELETION VariantAnnotation_Type = 3 - // `SUBSTITUTION` indicates a block substitution of - // two or more nucleotides. - VariantAnnotation_SUBSTITUTION VariantAnnotation_Type = 4 - // `SNP` indicates a single nucleotide polymorphism. - VariantAnnotation_SNP VariantAnnotation_Type = 5 - // `STRUCTURAL` indicates a large structural variant, - // including chromosomal fusions, inversions, etc. - VariantAnnotation_STRUCTURAL VariantAnnotation_Type = 6 - // `CNV` indicates a variation in copy number. - VariantAnnotation_CNV VariantAnnotation_Type = 7 -) - -var VariantAnnotation_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "TYPE_OTHER", - 2: "INSERTION", - 3: "DELETION", - 4: "SUBSTITUTION", - 5: "SNP", - 6: "STRUCTURAL", - 7: "CNV", -} -var VariantAnnotation_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "TYPE_OTHER": 1, - "INSERTION": 2, - "DELETION": 3, - "SUBSTITUTION": 4, - "SNP": 5, - "STRUCTURAL": 6, - "CNV": 7, -} - -func (x VariantAnnotation_Type) String() string { - return proto.EnumName(VariantAnnotation_Type_name, int32(x)) -} -func (VariantAnnotation_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -type VariantAnnotation_Effect int32 - -const ( - VariantAnnotation_EFFECT_UNSPECIFIED VariantAnnotation_Effect = 0 - // `EFFECT_OTHER` should be used when no other Effect - // will suffice. - VariantAnnotation_EFFECT_OTHER VariantAnnotation_Effect = 1 - // `FRAMESHIFT` indicates a mutation in which the insertion or - // deletion of nucleotides resulted in a frameshift change. - VariantAnnotation_FRAMESHIFT VariantAnnotation_Effect = 2 - // `FRAME_PRESERVING_INDEL` indicates a mutation in which a - // multiple of three nucleotides has been inserted or deleted, resulting - // in no change to the reading frame of the coding sequence. - VariantAnnotation_FRAME_PRESERVING_INDEL VariantAnnotation_Effect = 3 - // `SYNONYMOUS_SNP` indicates a single nucleotide polymorphism - // mutation that results in no amino acid change. - VariantAnnotation_SYNONYMOUS_SNP VariantAnnotation_Effect = 4 - // `NONSYNONYMOUS_SNP` indicates a single nucleotide - // polymorphism mutation that results in an amino acid change. - VariantAnnotation_NONSYNONYMOUS_SNP VariantAnnotation_Effect = 5 - // `STOP_GAIN` indicates a mutation that leads to the creation - // of a stop codon at the variant site. Frameshift mutations creating - // downstream stop codons do not count as `STOP_GAIN`. - VariantAnnotation_STOP_GAIN VariantAnnotation_Effect = 6 - // `STOP_LOSS` indicates a mutation that eliminates a - // stop codon at the variant site. - VariantAnnotation_STOP_LOSS VariantAnnotation_Effect = 7 - // `SPLICE_SITE_DISRUPTION` indicates that this variant is - // found in a splice site for the associated transcript, and alters the - // normal splicing pattern. - VariantAnnotation_SPLICE_SITE_DISRUPTION VariantAnnotation_Effect = 8 -) - -var VariantAnnotation_Effect_name = map[int32]string{ - 0: "EFFECT_UNSPECIFIED", - 1: "EFFECT_OTHER", - 2: "FRAMESHIFT", - 3: "FRAME_PRESERVING_INDEL", - 4: "SYNONYMOUS_SNP", - 5: "NONSYNONYMOUS_SNP", - 6: "STOP_GAIN", - 7: "STOP_LOSS", - 8: "SPLICE_SITE_DISRUPTION", -} -var VariantAnnotation_Effect_value = map[string]int32{ - "EFFECT_UNSPECIFIED": 0, - "EFFECT_OTHER": 1, - "FRAMESHIFT": 2, - "FRAME_PRESERVING_INDEL": 3, - "SYNONYMOUS_SNP": 4, - "NONSYNONYMOUS_SNP": 5, - "STOP_GAIN": 6, - "STOP_LOSS": 7, - "SPLICE_SITE_DISRUPTION": 8, -} - -func (x VariantAnnotation_Effect) String() string { - return proto.EnumName(VariantAnnotation_Effect_name, int32(x)) -} -func (VariantAnnotation_Effect) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} } - -type VariantAnnotation_ClinicalSignificance int32 - -const ( - VariantAnnotation_CLINICAL_SIGNIFICANCE_UNSPECIFIED VariantAnnotation_ClinicalSignificance = 0 - // `OTHER` should be used when no other clinical significance - // value will suffice. - VariantAnnotation_CLINICAL_SIGNIFICANCE_OTHER VariantAnnotation_ClinicalSignificance = 1 - VariantAnnotation_UNCERTAIN VariantAnnotation_ClinicalSignificance = 2 - VariantAnnotation_BENIGN VariantAnnotation_ClinicalSignificance = 3 - VariantAnnotation_LIKELY_BENIGN VariantAnnotation_ClinicalSignificance = 4 - VariantAnnotation_LIKELY_PATHOGENIC VariantAnnotation_ClinicalSignificance = 5 - VariantAnnotation_PATHOGENIC VariantAnnotation_ClinicalSignificance = 6 - VariantAnnotation_DRUG_RESPONSE VariantAnnotation_ClinicalSignificance = 7 - VariantAnnotation_HISTOCOMPATIBILITY VariantAnnotation_ClinicalSignificance = 8 - VariantAnnotation_CONFERS_SENSITIVITY VariantAnnotation_ClinicalSignificance = 9 - VariantAnnotation_RISK_FACTOR VariantAnnotation_ClinicalSignificance = 10 - VariantAnnotation_ASSOCIATION VariantAnnotation_ClinicalSignificance = 11 - VariantAnnotation_PROTECTIVE VariantAnnotation_ClinicalSignificance = 12 - // `MULTIPLE_REPORTED` should be used when multiple clinical - // signficances are reported for a variant. The original clinical - // significance values may be provided in the `info` field. - VariantAnnotation_MULTIPLE_REPORTED VariantAnnotation_ClinicalSignificance = 13 -) - -var VariantAnnotation_ClinicalSignificance_name = map[int32]string{ - 0: "CLINICAL_SIGNIFICANCE_UNSPECIFIED", - 1: "CLINICAL_SIGNIFICANCE_OTHER", - 2: "UNCERTAIN", - 3: "BENIGN", - 4: "LIKELY_BENIGN", - 5: "LIKELY_PATHOGENIC", - 6: "PATHOGENIC", - 7: "DRUG_RESPONSE", - 8: "HISTOCOMPATIBILITY", - 9: "CONFERS_SENSITIVITY", - 10: "RISK_FACTOR", - 11: "ASSOCIATION", - 12: "PROTECTIVE", - 13: "MULTIPLE_REPORTED", -} -var VariantAnnotation_ClinicalSignificance_value = map[string]int32{ - "CLINICAL_SIGNIFICANCE_UNSPECIFIED": 0, - "CLINICAL_SIGNIFICANCE_OTHER": 1, - "UNCERTAIN": 2, - "BENIGN": 3, - "LIKELY_BENIGN": 4, - "LIKELY_PATHOGENIC": 5, - "PATHOGENIC": 6, - "DRUG_RESPONSE": 7, - "HISTOCOMPATIBILITY": 8, - "CONFERS_SENSITIVITY": 9, - "RISK_FACTOR": 10, - "ASSOCIATION": 11, - "PROTECTIVE": 12, - "MULTIPLE_REPORTED": 13, -} - -func (x VariantAnnotation_ClinicalSignificance) String() string { - return proto.EnumName(VariantAnnotation_ClinicalSignificance_name, int32(x)) -} -func (VariantAnnotation_ClinicalSignificance) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{2, 2} -} - -// An annotation set is a logical grouping of annotations that share consistent -// type information and provenance. Examples of annotation sets include 'all -// genes from refseq', and 'all variant annotations from ClinVar'. -type AnnotationSet struct { - // The server-generated annotation set ID, unique across all annotation sets. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The dataset to which this annotation set belongs. - DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // The ID of the reference set that defines the coordinate space for this - // set's annotations. - ReferenceSetId string `protobuf:"bytes,3,opt,name=reference_set_id,json=referenceSetId" json:"reference_set_id,omitempty"` - // The display name for this annotation set. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` - // The source URI describing the file from which this annotation set was - // generated, if any. - SourceUri string `protobuf:"bytes,5,opt,name=source_uri,json=sourceUri" json:"source_uri,omitempty"` - // The type of annotations contained within this set. - Type AnnotationType `protobuf:"varint,6,opt,name=type,enum=google.genomics.v1.AnnotationType" json:"type,omitempty"` - // A map of additional read alignment information. This must be of the form - // map<string, string[]> (string key mapping to a list of string values). - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,17,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *AnnotationSet) Reset() { *m = AnnotationSet{} } -func (m *AnnotationSet) String() string { return proto.CompactTextString(m) } -func (*AnnotationSet) ProtoMessage() {} -func (*AnnotationSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *AnnotationSet) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *AnnotationSet) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *AnnotationSet) GetReferenceSetId() string { - if m != nil { - return m.ReferenceSetId - } - return "" -} - -func (m *AnnotationSet) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *AnnotationSet) GetSourceUri() string { - if m != nil { - return m.SourceUri - } - return "" -} - -func (m *AnnotationSet) GetType() AnnotationType { - if m != nil { - return m.Type - } - return AnnotationType_ANNOTATION_TYPE_UNSPECIFIED -} - -func (m *AnnotationSet) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -// An annotation describes a region of reference genome. The value of an -// annotation may be one of several canonical types, supplemented by arbitrary -// info tags. An annotation is not inherently associated with a specific -// sample or individual (though a client could choose to use annotations in -// this way). Example canonical annotation types are `GENE` and -// `VARIANT`. -type Annotation struct { - // The server-generated annotation ID, unique across all annotations. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The annotation set to which this annotation belongs. - AnnotationSetId string `protobuf:"bytes,2,opt,name=annotation_set_id,json=annotationSetId" json:"annotation_set_id,omitempty"` - // The display name of this annotation. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // The ID of the Google Genomics reference associated with this range. - ReferenceId string `protobuf:"bytes,4,opt,name=reference_id,json=referenceId" json:"reference_id,omitempty"` - // The display name corresponding to the reference specified by - // `referenceId`, for example `chr1`, `1`, or `chrX`. - ReferenceName string `protobuf:"bytes,5,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The start position of the range on the reference, 0-based inclusive. - Start int64 `protobuf:"varint,6,opt,name=start" json:"start,omitempty"` - // The end position of the range on the reference, 0-based exclusive. - End int64 `protobuf:"varint,7,opt,name=end" json:"end,omitempty"` - // Whether this range refers to the reverse strand, as opposed to the forward - // strand. Note that regardless of this field, the start/end position of the - // range always refer to the forward strand. - ReverseStrand bool `protobuf:"varint,8,opt,name=reverse_strand,json=reverseStrand" json:"reverse_strand,omitempty"` - // The data type for this annotation. Must match the containing annotation - // set's type. - Type AnnotationType `protobuf:"varint,9,opt,name=type,enum=google.genomics.v1.AnnotationType" json:"type,omitempty"` - // Types that are valid to be assigned to Value: - // *Annotation_Variant - // *Annotation_Transcript - Value isAnnotation_Value `protobuf_oneof:"value"` - // A map of additional read alignment information. This must be of the form - // map<string, string[]> (string key mapping to a list of string values). - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,12,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Annotation) Reset() { *m = Annotation{} } -func (m *Annotation) String() string { return proto.CompactTextString(m) } -func (*Annotation) ProtoMessage() {} -func (*Annotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type isAnnotation_Value interface { - isAnnotation_Value() -} - -type Annotation_Variant struct { - Variant *VariantAnnotation `protobuf:"bytes,10,opt,name=variant,oneof"` -} -type Annotation_Transcript struct { - Transcript *Transcript `protobuf:"bytes,11,opt,name=transcript,oneof"` -} - -func (*Annotation_Variant) isAnnotation_Value() {} -func (*Annotation_Transcript) isAnnotation_Value() {} - -func (m *Annotation) GetValue() isAnnotation_Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *Annotation) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Annotation) GetAnnotationSetId() string { - if m != nil { - return m.AnnotationSetId - } - return "" -} - -func (m *Annotation) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Annotation) GetReferenceId() string { - if m != nil { - return m.ReferenceId - } - return "" -} - -func (m *Annotation) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *Annotation) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *Annotation) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *Annotation) GetReverseStrand() bool { - if m != nil { - return m.ReverseStrand - } - return false -} - -func (m *Annotation) GetType() AnnotationType { - if m != nil { - return m.Type - } - return AnnotationType_ANNOTATION_TYPE_UNSPECIFIED -} - -func (m *Annotation) GetVariant() *VariantAnnotation { - if x, ok := m.GetValue().(*Annotation_Variant); ok { - return x.Variant - } - return nil -} - -func (m *Annotation) GetTranscript() *Transcript { - if x, ok := m.GetValue().(*Annotation_Transcript); ok { - return x.Transcript - } - return nil -} - -func (m *Annotation) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Annotation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Annotation_OneofMarshaler, _Annotation_OneofUnmarshaler, _Annotation_OneofSizer, []interface{}{ - (*Annotation_Variant)(nil), - (*Annotation_Transcript)(nil), - } -} - -func _Annotation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Annotation) - // value - switch x := m.Value.(type) { - case *Annotation_Variant: - b.EncodeVarint(10<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Variant); err != nil { - return err - } - case *Annotation_Transcript: - b.EncodeVarint(11<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Transcript); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Annotation.Value has unexpected type %T", x) - } - return nil -} - -func _Annotation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Annotation) - switch tag { - case 10: // value.variant - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(VariantAnnotation) - err := b.DecodeMessage(msg) - m.Value = &Annotation_Variant{msg} - return true, err - case 11: // value.transcript - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Transcript) - err := b.DecodeMessage(msg) - m.Value = &Annotation_Transcript{msg} - return true, err - default: - return false, nil - } -} - -func _Annotation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Annotation) - // value - switch x := m.Value.(type) { - case *Annotation_Variant: - s := proto.Size(x.Variant) - n += proto.SizeVarint(10<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Annotation_Transcript: - s := proto.Size(x.Transcript) - n += proto.SizeVarint(11<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type VariantAnnotation struct { - // Type has been adapted from ClinVar's list of variant types. - Type VariantAnnotation_Type `protobuf:"varint,1,opt,name=type,enum=google.genomics.v1.VariantAnnotation_Type" json:"type,omitempty"` - // Effect of the variant on the coding sequence. - Effect VariantAnnotation_Effect `protobuf:"varint,2,opt,name=effect,enum=google.genomics.v1.VariantAnnotation_Effect" json:"effect,omitempty"` - // The alternate allele for this variant. If multiple alternate alleles - // exist at this location, create a separate variant for each one, as they - // may represent distinct conditions. - AlternateBases string `protobuf:"bytes,3,opt,name=alternate_bases,json=alternateBases" json:"alternate_bases,omitempty"` - // Google annotation ID of the gene affected by this variant. This should - // be provided when the variant is created. - GeneId string `protobuf:"bytes,4,opt,name=gene_id,json=geneId" json:"gene_id,omitempty"` - // Google annotation IDs of the transcripts affected by this variant. These - // should be provided when the variant is created. - TranscriptIds []string `protobuf:"bytes,5,rep,name=transcript_ids,json=transcriptIds" json:"transcript_ids,omitempty"` - // The set of conditions associated with this variant. - // A condition describes the way a variant influences human health. - Conditions []*VariantAnnotation_ClinicalCondition `protobuf:"bytes,6,rep,name=conditions" json:"conditions,omitempty"` - // Describes the clinical significance of a variant. - // It is adapted from the ClinVar controlled vocabulary for clinical - // significance described at: - // http://www.ncbi.nlm.nih.gov/clinvar/docs/clinsig/ - ClinicalSignificance VariantAnnotation_ClinicalSignificance `protobuf:"varint,7,opt,name=clinical_significance,json=clinicalSignificance,enum=google.genomics.v1.VariantAnnotation_ClinicalSignificance" json:"clinical_significance,omitempty"` -} - -func (m *VariantAnnotation) Reset() { *m = VariantAnnotation{} } -func (m *VariantAnnotation) String() string { return proto.CompactTextString(m) } -func (*VariantAnnotation) ProtoMessage() {} -func (*VariantAnnotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *VariantAnnotation) GetType() VariantAnnotation_Type { - if m != nil { - return m.Type - } - return VariantAnnotation_TYPE_UNSPECIFIED -} - -func (m *VariantAnnotation) GetEffect() VariantAnnotation_Effect { - if m != nil { - return m.Effect - } - return VariantAnnotation_EFFECT_UNSPECIFIED -} - -func (m *VariantAnnotation) GetAlternateBases() string { - if m != nil { - return m.AlternateBases - } - return "" -} - -func (m *VariantAnnotation) GetGeneId() string { - if m != nil { - return m.GeneId - } - return "" -} - -func (m *VariantAnnotation) GetTranscriptIds() []string { - if m != nil { - return m.TranscriptIds - } - return nil -} - -func (m *VariantAnnotation) GetConditions() []*VariantAnnotation_ClinicalCondition { - if m != nil { - return m.Conditions - } - return nil -} - -func (m *VariantAnnotation) GetClinicalSignificance() VariantAnnotation_ClinicalSignificance { - if m != nil { - return m.ClinicalSignificance - } - return VariantAnnotation_CLINICAL_SIGNIFICANCE_UNSPECIFIED -} - -type VariantAnnotation_ClinicalCondition struct { - // A set of names for the condition. - Names []string `protobuf:"bytes,1,rep,name=names" json:"names,omitempty"` - // The set of external IDs for this condition. - ExternalIds []*ExternalId `protobuf:"bytes,2,rep,name=external_ids,json=externalIds" json:"external_ids,omitempty"` - // The MedGen concept id associated with this gene. - // Search for these IDs at http://www.ncbi.nlm.nih.gov/medgen/ - ConceptId string `protobuf:"bytes,3,opt,name=concept_id,json=conceptId" json:"concept_id,omitempty"` - // The OMIM id for this condition. - // Search for these IDs at http://omim.org/ - OmimId string `protobuf:"bytes,4,opt,name=omim_id,json=omimId" json:"omim_id,omitempty"` -} - -func (m *VariantAnnotation_ClinicalCondition) Reset() { *m = VariantAnnotation_ClinicalCondition{} } -func (m *VariantAnnotation_ClinicalCondition) String() string { return proto.CompactTextString(m) } -func (*VariantAnnotation_ClinicalCondition) ProtoMessage() {} -func (*VariantAnnotation_ClinicalCondition) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{2, 0} -} - -func (m *VariantAnnotation_ClinicalCondition) GetNames() []string { - if m != nil { - return m.Names - } - return nil -} - -func (m *VariantAnnotation_ClinicalCondition) GetExternalIds() []*ExternalId { - if m != nil { - return m.ExternalIds - } - return nil -} - -func (m *VariantAnnotation_ClinicalCondition) GetConceptId() string { - if m != nil { - return m.ConceptId - } - return "" -} - -func (m *VariantAnnotation_ClinicalCondition) GetOmimId() string { - if m != nil { - return m.OmimId - } - return "" -} - -// A transcript represents the assertion that a particular region of the -// reference genome may be transcribed as RNA. -type Transcript struct { - // The annotation ID of the gene from which this transcript is transcribed. - GeneId string `protobuf:"bytes,1,opt,name=gene_id,json=geneId" json:"gene_id,omitempty"` - // The <a href="http://en.wikipedia.org/wiki/Exon">exons</a> that compose - // this transcript. This field should be unset for genomes where transcript - // splicing does not occur, for example prokaryotes. - // - // Introns are regions of the transcript that are not included in the - // spliced RNA product. Though not explicitly modeled here, intron ranges can - // be deduced; all regions of this transcript that are not exons are introns. - // - // Exonic sequences do not necessarily code for a translational product - // (amino acids). Only the regions of exons bounded by the - // [codingSequence][google.genomics.v1.Transcript.coding_sequence] correspond - // to coding DNA sequence. - // - // Exons are ordered by start position and may not overlap. - Exons []*Transcript_Exon `protobuf:"bytes,2,rep,name=exons" json:"exons,omitempty"` - // The range of the coding sequence for this transcript, if any. To determine - // the exact ranges of coding sequence, intersect this range with those of the - // [exons][google.genomics.v1.Transcript.exons], if any. If there are any - // [exons][google.genomics.v1.Transcript.exons], the - // [codingSequence][google.genomics.v1.Transcript.coding_sequence] must start - // and end within them. - // - // Note that in some cases, the reference genome will not exactly match the - // observed mRNA transcript e.g. due to variance in the source genome from - // reference. In these cases, - // [exon.frame][google.genomics.v1.Transcript.Exon.frame] will not necessarily - // match the expected reference reading frame and coding exon reference bases - // cannot necessarily be concatenated to produce the original transcript mRNA. - CodingSequence *Transcript_CodingSequence `protobuf:"bytes,3,opt,name=coding_sequence,json=codingSequence" json:"coding_sequence,omitempty"` -} - -func (m *Transcript) Reset() { *m = Transcript{} } -func (m *Transcript) String() string { return proto.CompactTextString(m) } -func (*Transcript) ProtoMessage() {} -func (*Transcript) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Transcript) GetGeneId() string { - if m != nil { - return m.GeneId - } - return "" -} - -func (m *Transcript) GetExons() []*Transcript_Exon { - if m != nil { - return m.Exons - } - return nil -} - -func (m *Transcript) GetCodingSequence() *Transcript_CodingSequence { - if m != nil { - return m.CodingSequence - } - return nil -} - -type Transcript_Exon struct { - // The start position of the exon on this annotation's reference sequence, - // 0-based inclusive. Note that this is relative to the reference start, and - // **not** the containing annotation start. - Start int64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` - // The end position of the exon on this annotation's reference sequence, - // 0-based exclusive. Note that this is relative to the reference start, and - // *not* the containing annotation start. - End int64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` - // The frame of this exon. Contains a value of 0, 1, or 2, which indicates - // the offset of the first coding base of the exon within the reading frame - // of the coding DNA sequence, if any. This field is dependent on the - // strandedness of this annotation (see - // [Annotation.reverse_strand][google.genomics.v1.Annotation.reverse_strand]). - // For forward stranded annotations, this offset is relative to the - // [exon.start][google.genomics.v1.Transcript.Exon.start]. For reverse - // strand annotations, this offset is relative to the - // [exon.end][google.genomics.v1.Transcript.Exon.end] `- 1`. - // - // Unset if this exon does not intersect the coding sequence. Upon creation - // of a transcript, the frame must be populated for all or none of the - // coding exons. - Frame *google_protobuf4.Int32Value `protobuf:"bytes,3,opt,name=frame" json:"frame,omitempty"` -} - -func (m *Transcript_Exon) Reset() { *m = Transcript_Exon{} } -func (m *Transcript_Exon) String() string { return proto.CompactTextString(m) } -func (*Transcript_Exon) ProtoMessage() {} -func (*Transcript_Exon) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } - -func (m *Transcript_Exon) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *Transcript_Exon) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *Transcript_Exon) GetFrame() *google_protobuf4.Int32Value { - if m != nil { - return m.Frame - } - return nil -} - -type Transcript_CodingSequence struct { - // The start of the coding sequence on this annotation's reference sequence, - // 0-based inclusive. Note that this position is relative to the reference - // start, and *not* the containing annotation start. - Start int64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` - // The end of the coding sequence on this annotation's reference sequence, - // 0-based exclusive. Note that this position is relative to the reference - // start, and *not* the containing annotation start. - End int64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` -} - -func (m *Transcript_CodingSequence) Reset() { *m = Transcript_CodingSequence{} } -func (m *Transcript_CodingSequence) String() string { return proto.CompactTextString(m) } -func (*Transcript_CodingSequence) ProtoMessage() {} -func (*Transcript_CodingSequence) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 1} } - -func (m *Transcript_CodingSequence) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *Transcript_CodingSequence) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -type ExternalId struct { - // The name of the source of this data. - SourceName string `protobuf:"bytes,1,opt,name=source_name,json=sourceName" json:"source_name,omitempty"` - // The id used by the source of this data. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` -} - -func (m *ExternalId) Reset() { *m = ExternalId{} } -func (m *ExternalId) String() string { return proto.CompactTextString(m) } -func (*ExternalId) ProtoMessage() {} -func (*ExternalId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ExternalId) GetSourceName() string { - if m != nil { - return m.SourceName - } - return "" -} - -func (m *ExternalId) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -type CreateAnnotationSetRequest struct { - // The annotation set to create. - AnnotationSet *AnnotationSet `protobuf:"bytes,1,opt,name=annotation_set,json=annotationSet" json:"annotation_set,omitempty"` -} - -func (m *CreateAnnotationSetRequest) Reset() { *m = CreateAnnotationSetRequest{} } -func (m *CreateAnnotationSetRequest) String() string { return proto.CompactTextString(m) } -func (*CreateAnnotationSetRequest) ProtoMessage() {} -func (*CreateAnnotationSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *CreateAnnotationSetRequest) GetAnnotationSet() *AnnotationSet { - if m != nil { - return m.AnnotationSet - } - return nil -} - -type GetAnnotationSetRequest struct { - // The ID of the annotation set to be retrieved. - AnnotationSetId string `protobuf:"bytes,1,opt,name=annotation_set_id,json=annotationSetId" json:"annotation_set_id,omitempty"` -} - -func (m *GetAnnotationSetRequest) Reset() { *m = GetAnnotationSetRequest{} } -func (m *GetAnnotationSetRequest) String() string { return proto.CompactTextString(m) } -func (*GetAnnotationSetRequest) ProtoMessage() {} -func (*GetAnnotationSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *GetAnnotationSetRequest) GetAnnotationSetId() string { - if m != nil { - return m.AnnotationSetId - } - return "" -} - -type UpdateAnnotationSetRequest struct { - // The ID of the annotation set to be updated. - AnnotationSetId string `protobuf:"bytes,1,opt,name=annotation_set_id,json=annotationSetId" json:"annotation_set_id,omitempty"` - // The new annotation set. - AnnotationSet *AnnotationSet `protobuf:"bytes,2,opt,name=annotation_set,json=annotationSet" json:"annotation_set,omitempty"` - // An optional mask specifying which fields to update. Mutable fields are - // [name][google.genomics.v1.AnnotationSet.name], - // [source_uri][google.genomics.v1.AnnotationSet.source_uri], and - // [info][google.genomics.v1.AnnotationSet.info]. If unspecified, all - // mutable fields will be updated. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateAnnotationSetRequest) Reset() { *m = UpdateAnnotationSetRequest{} } -func (m *UpdateAnnotationSetRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateAnnotationSetRequest) ProtoMessage() {} -func (*UpdateAnnotationSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *UpdateAnnotationSetRequest) GetAnnotationSetId() string { - if m != nil { - return m.AnnotationSetId - } - return "" -} - -func (m *UpdateAnnotationSetRequest) GetAnnotationSet() *AnnotationSet { - if m != nil { - return m.AnnotationSet - } - return nil -} - -func (m *UpdateAnnotationSetRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -type DeleteAnnotationSetRequest struct { - // The ID of the annotation set to be deleted. - AnnotationSetId string `protobuf:"bytes,1,opt,name=annotation_set_id,json=annotationSetId" json:"annotation_set_id,omitempty"` -} - -func (m *DeleteAnnotationSetRequest) Reset() { *m = DeleteAnnotationSetRequest{} } -func (m *DeleteAnnotationSetRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteAnnotationSetRequest) ProtoMessage() {} -func (*DeleteAnnotationSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *DeleteAnnotationSetRequest) GetAnnotationSetId() string { - if m != nil { - return m.AnnotationSetId - } - return "" -} - -type SearchAnnotationSetsRequest struct { - // Required. The dataset IDs to search within. Caller must have `READ` access - // to these datasets. - DatasetIds []string `protobuf:"bytes,1,rep,name=dataset_ids,json=datasetIds" json:"dataset_ids,omitempty"` - // If specified, only annotation sets associated with the given reference set - // are returned. - ReferenceSetId string `protobuf:"bytes,2,opt,name=reference_set_id,json=referenceSetId" json:"reference_set_id,omitempty"` - // Only return annotations sets for which a substring of the name matches this - // string (case insensitive). - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // If specified, only annotation sets that have any of these types are - // returned. - Types []AnnotationType `protobuf:"varint,4,rep,packed,name=types,enum=google.genomics.v1.AnnotationType" json:"types,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 128. The maximum value is 1024. - PageSize int32 `protobuf:"varint,6,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *SearchAnnotationSetsRequest) Reset() { *m = SearchAnnotationSetsRequest{} } -func (m *SearchAnnotationSetsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchAnnotationSetsRequest) ProtoMessage() {} -func (*SearchAnnotationSetsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *SearchAnnotationSetsRequest) GetDatasetIds() []string { - if m != nil { - return m.DatasetIds - } - return nil -} - -func (m *SearchAnnotationSetsRequest) GetReferenceSetId() string { - if m != nil { - return m.ReferenceSetId - } - return "" -} - -func (m *SearchAnnotationSetsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SearchAnnotationSetsRequest) GetTypes() []AnnotationType { - if m != nil { - return m.Types - } - return nil -} - -func (m *SearchAnnotationSetsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchAnnotationSetsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -type SearchAnnotationSetsResponse struct { - // The matching annotation sets. - AnnotationSets []*AnnotationSet `protobuf:"bytes,1,rep,name=annotation_sets,json=annotationSets" json:"annotation_sets,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchAnnotationSetsResponse) Reset() { *m = SearchAnnotationSetsResponse{} } -func (m *SearchAnnotationSetsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchAnnotationSetsResponse) ProtoMessage() {} -func (*SearchAnnotationSetsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *SearchAnnotationSetsResponse) GetAnnotationSets() []*AnnotationSet { - if m != nil { - return m.AnnotationSets - } - return nil -} - -func (m *SearchAnnotationSetsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -type CreateAnnotationRequest struct { - // The annotation to be created. - Annotation *Annotation `protobuf:"bytes,1,opt,name=annotation" json:"annotation,omitempty"` -} - -func (m *CreateAnnotationRequest) Reset() { *m = CreateAnnotationRequest{} } -func (m *CreateAnnotationRequest) String() string { return proto.CompactTextString(m) } -func (*CreateAnnotationRequest) ProtoMessage() {} -func (*CreateAnnotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *CreateAnnotationRequest) GetAnnotation() *Annotation { - if m != nil { - return m.Annotation - } - return nil -} - -type BatchCreateAnnotationsRequest struct { - // The annotations to be created. At most 4096 can be specified in a single - // request. - Annotations []*Annotation `protobuf:"bytes,1,rep,name=annotations" json:"annotations,omitempty"` - // A unique request ID which enables the server to detect duplicated requests. - // If provided, duplicated requests will result in the same response; if not - // provided, duplicated requests may result in duplicated data. For a given - // annotation set, callers should not reuse `request_id`s when writing - // different batches of annotations - behavior in this case is undefined. - // A common approach is to use a UUID. For batch jobs where worker crashes are - // a possibility, consider using some unique variant of a worker or run ID. - RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId" json:"request_id,omitempty"` -} - -func (m *BatchCreateAnnotationsRequest) Reset() { *m = BatchCreateAnnotationsRequest{} } -func (m *BatchCreateAnnotationsRequest) String() string { return proto.CompactTextString(m) } -func (*BatchCreateAnnotationsRequest) ProtoMessage() {} -func (*BatchCreateAnnotationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *BatchCreateAnnotationsRequest) GetAnnotations() []*Annotation { - if m != nil { - return m.Annotations - } - return nil -} - -func (m *BatchCreateAnnotationsRequest) GetRequestId() string { - if m != nil { - return m.RequestId - } - return "" -} - -type BatchCreateAnnotationsResponse struct { - // The resulting per-annotation entries, ordered consistently with the - // original request. - Entries []*BatchCreateAnnotationsResponse_Entry `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty"` -} - -func (m *BatchCreateAnnotationsResponse) Reset() { *m = BatchCreateAnnotationsResponse{} } -func (m *BatchCreateAnnotationsResponse) String() string { return proto.CompactTextString(m) } -func (*BatchCreateAnnotationsResponse) ProtoMessage() {} -func (*BatchCreateAnnotationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *BatchCreateAnnotationsResponse) GetEntries() []*BatchCreateAnnotationsResponse_Entry { - if m != nil { - return m.Entries - } - return nil -} - -type BatchCreateAnnotationsResponse_Entry struct { - // The creation status. - Status *google_rpc.Status `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` - // The created annotation, if creation was successful. - Annotation *Annotation `protobuf:"bytes,2,opt,name=annotation" json:"annotation,omitempty"` -} - -func (m *BatchCreateAnnotationsResponse_Entry) Reset() { *m = BatchCreateAnnotationsResponse_Entry{} } -func (m *BatchCreateAnnotationsResponse_Entry) String() string { return proto.CompactTextString(m) } -func (*BatchCreateAnnotationsResponse_Entry) ProtoMessage() {} -func (*BatchCreateAnnotationsResponse_Entry) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{13, 0} -} - -func (m *BatchCreateAnnotationsResponse_Entry) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func (m *BatchCreateAnnotationsResponse_Entry) GetAnnotation() *Annotation { - if m != nil { - return m.Annotation - } - return nil -} - -type GetAnnotationRequest struct { - // The ID of the annotation to be retrieved. - AnnotationId string `protobuf:"bytes,1,opt,name=annotation_id,json=annotationId" json:"annotation_id,omitempty"` -} - -func (m *GetAnnotationRequest) Reset() { *m = GetAnnotationRequest{} } -func (m *GetAnnotationRequest) String() string { return proto.CompactTextString(m) } -func (*GetAnnotationRequest) ProtoMessage() {} -func (*GetAnnotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *GetAnnotationRequest) GetAnnotationId() string { - if m != nil { - return m.AnnotationId - } - return "" -} - -type UpdateAnnotationRequest struct { - // The ID of the annotation to be updated. - AnnotationId string `protobuf:"bytes,1,opt,name=annotation_id,json=annotationId" json:"annotation_id,omitempty"` - // The new annotation. - Annotation *Annotation `protobuf:"bytes,2,opt,name=annotation" json:"annotation,omitempty"` - // An optional mask specifying which fields to update. Mutable fields are - // [name][google.genomics.v1.Annotation.name], - // [variant][google.genomics.v1.Annotation.variant], - // [transcript][google.genomics.v1.Annotation.transcript], and - // [info][google.genomics.v1.Annotation.info]. If unspecified, all mutable - // fields will be updated. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateAnnotationRequest) Reset() { *m = UpdateAnnotationRequest{} } -func (m *UpdateAnnotationRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateAnnotationRequest) ProtoMessage() {} -func (*UpdateAnnotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *UpdateAnnotationRequest) GetAnnotationId() string { - if m != nil { - return m.AnnotationId - } - return "" -} - -func (m *UpdateAnnotationRequest) GetAnnotation() *Annotation { - if m != nil { - return m.Annotation - } - return nil -} - -func (m *UpdateAnnotationRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -type DeleteAnnotationRequest struct { - // The ID of the annotation to be deleted. - AnnotationId string `protobuf:"bytes,1,opt,name=annotation_id,json=annotationId" json:"annotation_id,omitempty"` -} - -func (m *DeleteAnnotationRequest) Reset() { *m = DeleteAnnotationRequest{} } -func (m *DeleteAnnotationRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteAnnotationRequest) ProtoMessage() {} -func (*DeleteAnnotationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *DeleteAnnotationRequest) GetAnnotationId() string { - if m != nil { - return m.AnnotationId - } - return "" -} - -type SearchAnnotationsRequest struct { - // Required. The annotation sets to search within. The caller must have - // `READ` access to these annotation sets. - // All queried annotation sets must have the same type. - AnnotationSetIds []string `protobuf:"bytes,1,rep,name=annotation_set_ids,json=annotationSetIds" json:"annotation_set_ids,omitempty"` - // Required. `reference_id` or `reference_name` must be set. - // - // Types that are valid to be assigned to Reference: - // *SearchAnnotationsRequest_ReferenceId - // *SearchAnnotationsRequest_ReferenceName - Reference isSearchAnnotationsRequest_Reference `protobuf_oneof:"reference"` - // The start position of the range on the reference, 0-based inclusive. If - // specified, - // [referenceId][google.genomics.v1.SearchAnnotationsRequest.reference_id] or - // [referenceName][google.genomics.v1.SearchAnnotationsRequest.reference_name] - // must be specified. Defaults to 0. - Start int64 `protobuf:"varint,4,opt,name=start" json:"start,omitempty"` - // The end position of the range on the reference, 0-based exclusive. If - // [referenceId][google.genomics.v1.SearchAnnotationsRequest.reference_id] or - // [referenceName][google.genomics.v1.SearchAnnotationsRequest.reference_name] - // must be specified, Defaults to the length of the reference. - End int64 `protobuf:"varint,5,opt,name=end" json:"end,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,6,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 256. The maximum value is 2048. - PageSize int32 `protobuf:"varint,7,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *SearchAnnotationsRequest) Reset() { *m = SearchAnnotationsRequest{} } -func (m *SearchAnnotationsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchAnnotationsRequest) ProtoMessage() {} -func (*SearchAnnotationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -type isSearchAnnotationsRequest_Reference interface { - isSearchAnnotationsRequest_Reference() -} - -type SearchAnnotationsRequest_ReferenceId struct { - ReferenceId string `protobuf:"bytes,2,opt,name=reference_id,json=referenceId,oneof"` -} -type SearchAnnotationsRequest_ReferenceName struct { - ReferenceName string `protobuf:"bytes,3,opt,name=reference_name,json=referenceName,oneof"` -} - -func (*SearchAnnotationsRequest_ReferenceId) isSearchAnnotationsRequest_Reference() {} -func (*SearchAnnotationsRequest_ReferenceName) isSearchAnnotationsRequest_Reference() {} - -func (m *SearchAnnotationsRequest) GetReference() isSearchAnnotationsRequest_Reference { - if m != nil { - return m.Reference - } - return nil -} - -func (m *SearchAnnotationsRequest) GetAnnotationSetIds() []string { - if m != nil { - return m.AnnotationSetIds - } - return nil -} - -func (m *SearchAnnotationsRequest) GetReferenceId() string { - if x, ok := m.GetReference().(*SearchAnnotationsRequest_ReferenceId); ok { - return x.ReferenceId - } - return "" -} - -func (m *SearchAnnotationsRequest) GetReferenceName() string { - if x, ok := m.GetReference().(*SearchAnnotationsRequest_ReferenceName); ok { - return x.ReferenceName - } - return "" -} - -func (m *SearchAnnotationsRequest) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *SearchAnnotationsRequest) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *SearchAnnotationsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchAnnotationsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SearchAnnotationsRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SearchAnnotationsRequest_OneofMarshaler, _SearchAnnotationsRequest_OneofUnmarshaler, _SearchAnnotationsRequest_OneofSizer, []interface{}{ - (*SearchAnnotationsRequest_ReferenceId)(nil), - (*SearchAnnotationsRequest_ReferenceName)(nil), - } -} - -func _SearchAnnotationsRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SearchAnnotationsRequest) - // reference - switch x := m.Reference.(type) { - case *SearchAnnotationsRequest_ReferenceId: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ReferenceId) - case *SearchAnnotationsRequest_ReferenceName: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ReferenceName) - case nil: - default: - return fmt.Errorf("SearchAnnotationsRequest.Reference has unexpected type %T", x) - } - return nil -} - -func _SearchAnnotationsRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SearchAnnotationsRequest) - switch tag { - case 2: // reference.reference_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Reference = &SearchAnnotationsRequest_ReferenceId{x} - return true, err - case 3: // reference.reference_name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Reference = &SearchAnnotationsRequest_ReferenceName{x} - return true, err - default: - return false, nil - } -} - -func _SearchAnnotationsRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SearchAnnotationsRequest) - // reference - switch x := m.Reference.(type) { - case *SearchAnnotationsRequest_ReferenceId: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ReferenceId))) - n += len(x.ReferenceId) - case *SearchAnnotationsRequest_ReferenceName: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ReferenceName))) - n += len(x.ReferenceName) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type SearchAnnotationsResponse struct { - // The matching annotations. - Annotations []*Annotation `protobuf:"bytes,1,rep,name=annotations" json:"annotations,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchAnnotationsResponse) Reset() { *m = SearchAnnotationsResponse{} } -func (m *SearchAnnotationsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchAnnotationsResponse) ProtoMessage() {} -func (*SearchAnnotationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *SearchAnnotationsResponse) GetAnnotations() []*Annotation { - if m != nil { - return m.Annotations - } - return nil -} - -func (m *SearchAnnotationsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func init() { - proto.RegisterType((*AnnotationSet)(nil), "google.genomics.v1.AnnotationSet") - proto.RegisterType((*Annotation)(nil), "google.genomics.v1.Annotation") - proto.RegisterType((*VariantAnnotation)(nil), "google.genomics.v1.VariantAnnotation") - proto.RegisterType((*VariantAnnotation_ClinicalCondition)(nil), "google.genomics.v1.VariantAnnotation.ClinicalCondition") - proto.RegisterType((*Transcript)(nil), "google.genomics.v1.Transcript") - proto.RegisterType((*Transcript_Exon)(nil), "google.genomics.v1.Transcript.Exon") - proto.RegisterType((*Transcript_CodingSequence)(nil), "google.genomics.v1.Transcript.CodingSequence") - proto.RegisterType((*ExternalId)(nil), "google.genomics.v1.ExternalId") - proto.RegisterType((*CreateAnnotationSetRequest)(nil), "google.genomics.v1.CreateAnnotationSetRequest") - proto.RegisterType((*GetAnnotationSetRequest)(nil), "google.genomics.v1.GetAnnotationSetRequest") - proto.RegisterType((*UpdateAnnotationSetRequest)(nil), "google.genomics.v1.UpdateAnnotationSetRequest") - proto.RegisterType((*DeleteAnnotationSetRequest)(nil), "google.genomics.v1.DeleteAnnotationSetRequest") - proto.RegisterType((*SearchAnnotationSetsRequest)(nil), "google.genomics.v1.SearchAnnotationSetsRequest") - proto.RegisterType((*SearchAnnotationSetsResponse)(nil), "google.genomics.v1.SearchAnnotationSetsResponse") - proto.RegisterType((*CreateAnnotationRequest)(nil), "google.genomics.v1.CreateAnnotationRequest") - proto.RegisterType((*BatchCreateAnnotationsRequest)(nil), "google.genomics.v1.BatchCreateAnnotationsRequest") - proto.RegisterType((*BatchCreateAnnotationsResponse)(nil), "google.genomics.v1.BatchCreateAnnotationsResponse") - proto.RegisterType((*BatchCreateAnnotationsResponse_Entry)(nil), "google.genomics.v1.BatchCreateAnnotationsResponse.Entry") - proto.RegisterType((*GetAnnotationRequest)(nil), "google.genomics.v1.GetAnnotationRequest") - proto.RegisterType((*UpdateAnnotationRequest)(nil), "google.genomics.v1.UpdateAnnotationRequest") - proto.RegisterType((*DeleteAnnotationRequest)(nil), "google.genomics.v1.DeleteAnnotationRequest") - proto.RegisterType((*SearchAnnotationsRequest)(nil), "google.genomics.v1.SearchAnnotationsRequest") - proto.RegisterType((*SearchAnnotationsResponse)(nil), "google.genomics.v1.SearchAnnotationsResponse") - proto.RegisterEnum("google.genomics.v1.AnnotationType", AnnotationType_name, AnnotationType_value) - proto.RegisterEnum("google.genomics.v1.VariantAnnotation_Type", VariantAnnotation_Type_name, VariantAnnotation_Type_value) - proto.RegisterEnum("google.genomics.v1.VariantAnnotation_Effect", VariantAnnotation_Effect_name, VariantAnnotation_Effect_value) - proto.RegisterEnum("google.genomics.v1.VariantAnnotation_ClinicalSignificance", VariantAnnotation_ClinicalSignificance_name, VariantAnnotation_ClinicalSignificance_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for AnnotationServiceV1 service - -type AnnotationServiceV1Client interface { - // Creates a new annotation set. Caller must have WRITE permission for the - // associated dataset. - // - // The following fields are required: - // - // * [datasetId][google.genomics.v1.AnnotationSet.dataset_id] - // * [referenceSetId][google.genomics.v1.AnnotationSet.reference_set_id] - // - // All other fields may be optionally specified, unless documented as being - // server-generated (for example, the `id` field). - CreateAnnotationSet(ctx context.Context, in *CreateAnnotationSetRequest, opts ...grpc.CallOption) (*AnnotationSet, error) - // Gets an annotation set. Caller must have READ permission for - // the associated dataset. - GetAnnotationSet(ctx context.Context, in *GetAnnotationSetRequest, opts ...grpc.CallOption) (*AnnotationSet, error) - // Updates an annotation set. The update must respect all mutability - // restrictions and other invariants described on the annotation set resource. - // Caller must have WRITE permission for the associated dataset. - UpdateAnnotationSet(ctx context.Context, in *UpdateAnnotationSetRequest, opts ...grpc.CallOption) (*AnnotationSet, error) - // Deletes an annotation set. Caller must have WRITE permission - // for the associated annotation set. - DeleteAnnotationSet(ctx context.Context, in *DeleteAnnotationSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Searches for annotation sets that match the given criteria. Annotation sets - // are returned in an unspecified order. This order is consistent, such that - // two queries for the same content (regardless of page size) yield annotation - // sets in the same order across their respective streams of paginated - // responses. Caller must have READ permission for the queried datasets. - SearchAnnotationSets(ctx context.Context, in *SearchAnnotationSetsRequest, opts ...grpc.CallOption) (*SearchAnnotationSetsResponse, error) - // Creates a new annotation. Caller must have WRITE permission - // for the associated annotation set. - // - // The following fields are required: - // - // * [annotationSetId][google.genomics.v1.Annotation.annotation_set_id] - // * [referenceName][google.genomics.v1.Annotation.reference_name] or - // [referenceId][google.genomics.v1.Annotation.reference_id] - // - // ### Transcripts - // - // For annotations of type TRANSCRIPT, the following fields of - // [transcript][google.genomics.v1.Annotation.transcript] must be provided: - // - // * [exons.start][google.genomics.v1.Transcript.Exon.start] - // * [exons.end][google.genomics.v1.Transcript.Exon.end] - // - // All other fields may be optionally specified, unless documented as being - // server-generated (for example, the `id` field). The annotated - // range must be no longer than 100Mbp (mega base pairs). See the - // [Annotation resource][google.genomics.v1.Annotation] - // for additional restrictions on each field. - CreateAnnotation(ctx context.Context, in *CreateAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) - // Creates one or more new annotations atomically. All annotations must - // belong to the same annotation set. Caller must have WRITE - // permission for this annotation set. For optimal performance, batch - // positionally adjacent annotations together. - // - // If the request has a systemic issue, such as an attempt to write to - // an inaccessible annotation set, the entire RPC will fail accordingly. For - // lesser data issues, when possible an error will be isolated to the - // corresponding batch entry in the response; the remaining well formed - // annotations will be created normally. - // - // For details on the requirements for each individual annotation resource, - // see - // [CreateAnnotation][google.genomics.v1.AnnotationServiceV1.CreateAnnotation]. - BatchCreateAnnotations(ctx context.Context, in *BatchCreateAnnotationsRequest, opts ...grpc.CallOption) (*BatchCreateAnnotationsResponse, error) - // Gets an annotation. Caller must have READ permission - // for the associated annotation set. - GetAnnotation(ctx context.Context, in *GetAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) - // Updates an annotation. Caller must have - // WRITE permission for the associated dataset. - UpdateAnnotation(ctx context.Context, in *UpdateAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) - // Deletes an annotation. Caller must have WRITE permission for - // the associated annotation set. - DeleteAnnotation(ctx context.Context, in *DeleteAnnotationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Searches for annotations that match the given criteria. Results are - // ordered by genomic coordinate (by reference sequence, then position). - // Annotations with equivalent genomic coordinates are returned in an - // unspecified order. This order is consistent, such that two queries for the - // same content (regardless of page size) yield annotations in the same order - // across their respective streams of paginated responses. Caller must have - // READ permission for the queried annotation sets. - SearchAnnotations(ctx context.Context, in *SearchAnnotationsRequest, opts ...grpc.CallOption) (*SearchAnnotationsResponse, error) -} - -type annotationServiceV1Client struct { - cc *grpc.ClientConn -} - -func NewAnnotationServiceV1Client(cc *grpc.ClientConn) AnnotationServiceV1Client { - return &annotationServiceV1Client{cc} -} - -func (c *annotationServiceV1Client) CreateAnnotationSet(ctx context.Context, in *CreateAnnotationSetRequest, opts ...grpc.CallOption) (*AnnotationSet, error) { - out := new(AnnotationSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/CreateAnnotationSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) GetAnnotationSet(ctx context.Context, in *GetAnnotationSetRequest, opts ...grpc.CallOption) (*AnnotationSet, error) { - out := new(AnnotationSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/GetAnnotationSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) UpdateAnnotationSet(ctx context.Context, in *UpdateAnnotationSetRequest, opts ...grpc.CallOption) (*AnnotationSet, error) { - out := new(AnnotationSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/UpdateAnnotationSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) DeleteAnnotationSet(ctx context.Context, in *DeleteAnnotationSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/DeleteAnnotationSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) SearchAnnotationSets(ctx context.Context, in *SearchAnnotationSetsRequest, opts ...grpc.CallOption) (*SearchAnnotationSetsResponse, error) { - out := new(SearchAnnotationSetsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/SearchAnnotationSets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) CreateAnnotation(ctx context.Context, in *CreateAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) { - out := new(Annotation) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/CreateAnnotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) BatchCreateAnnotations(ctx context.Context, in *BatchCreateAnnotationsRequest, opts ...grpc.CallOption) (*BatchCreateAnnotationsResponse, error) { - out := new(BatchCreateAnnotationsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/BatchCreateAnnotations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) GetAnnotation(ctx context.Context, in *GetAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) { - out := new(Annotation) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/GetAnnotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) UpdateAnnotation(ctx context.Context, in *UpdateAnnotationRequest, opts ...grpc.CallOption) (*Annotation, error) { - out := new(Annotation) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/UpdateAnnotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) DeleteAnnotation(ctx context.Context, in *DeleteAnnotationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/DeleteAnnotation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *annotationServiceV1Client) SearchAnnotations(ctx context.Context, in *SearchAnnotationsRequest, opts ...grpc.CallOption) (*SearchAnnotationsResponse, error) { - out := new(SearchAnnotationsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.AnnotationServiceV1/SearchAnnotations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for AnnotationServiceV1 service - -type AnnotationServiceV1Server interface { - // Creates a new annotation set. Caller must have WRITE permission for the - // associated dataset. - // - // The following fields are required: - // - // * [datasetId][google.genomics.v1.AnnotationSet.dataset_id] - // * [referenceSetId][google.genomics.v1.AnnotationSet.reference_set_id] - // - // All other fields may be optionally specified, unless documented as being - // server-generated (for example, the `id` field). - CreateAnnotationSet(context.Context, *CreateAnnotationSetRequest) (*AnnotationSet, error) - // Gets an annotation set. Caller must have READ permission for - // the associated dataset. - GetAnnotationSet(context.Context, *GetAnnotationSetRequest) (*AnnotationSet, error) - // Updates an annotation set. The update must respect all mutability - // restrictions and other invariants described on the annotation set resource. - // Caller must have WRITE permission for the associated dataset. - UpdateAnnotationSet(context.Context, *UpdateAnnotationSetRequest) (*AnnotationSet, error) - // Deletes an annotation set. Caller must have WRITE permission - // for the associated annotation set. - DeleteAnnotationSet(context.Context, *DeleteAnnotationSetRequest) (*google_protobuf1.Empty, error) - // Searches for annotation sets that match the given criteria. Annotation sets - // are returned in an unspecified order. This order is consistent, such that - // two queries for the same content (regardless of page size) yield annotation - // sets in the same order across their respective streams of paginated - // responses. Caller must have READ permission for the queried datasets. - SearchAnnotationSets(context.Context, *SearchAnnotationSetsRequest) (*SearchAnnotationSetsResponse, error) - // Creates a new annotation. Caller must have WRITE permission - // for the associated annotation set. - // - // The following fields are required: - // - // * [annotationSetId][google.genomics.v1.Annotation.annotation_set_id] - // * [referenceName][google.genomics.v1.Annotation.reference_name] or - // [referenceId][google.genomics.v1.Annotation.reference_id] - // - // ### Transcripts - // - // For annotations of type TRANSCRIPT, the following fields of - // [transcript][google.genomics.v1.Annotation.transcript] must be provided: - // - // * [exons.start][google.genomics.v1.Transcript.Exon.start] - // * [exons.end][google.genomics.v1.Transcript.Exon.end] - // - // All other fields may be optionally specified, unless documented as being - // server-generated (for example, the `id` field). The annotated - // range must be no longer than 100Mbp (mega base pairs). See the - // [Annotation resource][google.genomics.v1.Annotation] - // for additional restrictions on each field. - CreateAnnotation(context.Context, *CreateAnnotationRequest) (*Annotation, error) - // Creates one or more new annotations atomically. All annotations must - // belong to the same annotation set. Caller must have WRITE - // permission for this annotation set. For optimal performance, batch - // positionally adjacent annotations together. - // - // If the request has a systemic issue, such as an attempt to write to - // an inaccessible annotation set, the entire RPC will fail accordingly. For - // lesser data issues, when possible an error will be isolated to the - // corresponding batch entry in the response; the remaining well formed - // annotations will be created normally. - // - // For details on the requirements for each individual annotation resource, - // see - // [CreateAnnotation][google.genomics.v1.AnnotationServiceV1.CreateAnnotation]. - BatchCreateAnnotations(context.Context, *BatchCreateAnnotationsRequest) (*BatchCreateAnnotationsResponse, error) - // Gets an annotation. Caller must have READ permission - // for the associated annotation set. - GetAnnotation(context.Context, *GetAnnotationRequest) (*Annotation, error) - // Updates an annotation. Caller must have - // WRITE permission for the associated dataset. - UpdateAnnotation(context.Context, *UpdateAnnotationRequest) (*Annotation, error) - // Deletes an annotation. Caller must have WRITE permission for - // the associated annotation set. - DeleteAnnotation(context.Context, *DeleteAnnotationRequest) (*google_protobuf1.Empty, error) - // Searches for annotations that match the given criteria. Results are - // ordered by genomic coordinate (by reference sequence, then position). - // Annotations with equivalent genomic coordinates are returned in an - // unspecified order. This order is consistent, such that two queries for the - // same content (regardless of page size) yield annotations in the same order - // across their respective streams of paginated responses. Caller must have - // READ permission for the queried annotation sets. - SearchAnnotations(context.Context, *SearchAnnotationsRequest) (*SearchAnnotationsResponse, error) -} - -func RegisterAnnotationServiceV1Server(s *grpc.Server, srv AnnotationServiceV1Server) { - s.RegisterService(&_AnnotationServiceV1_serviceDesc, srv) -} - -func _AnnotationServiceV1_CreateAnnotationSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateAnnotationSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).CreateAnnotationSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/CreateAnnotationSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).CreateAnnotationSet(ctx, req.(*CreateAnnotationSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_GetAnnotationSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAnnotationSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).GetAnnotationSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/GetAnnotationSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).GetAnnotationSet(ctx, req.(*GetAnnotationSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_UpdateAnnotationSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateAnnotationSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).UpdateAnnotationSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/UpdateAnnotationSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).UpdateAnnotationSet(ctx, req.(*UpdateAnnotationSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_DeleteAnnotationSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteAnnotationSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).DeleteAnnotationSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/DeleteAnnotationSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).DeleteAnnotationSet(ctx, req.(*DeleteAnnotationSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_SearchAnnotationSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchAnnotationSetsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).SearchAnnotationSets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/SearchAnnotationSets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).SearchAnnotationSets(ctx, req.(*SearchAnnotationSetsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_CreateAnnotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateAnnotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).CreateAnnotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/CreateAnnotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).CreateAnnotation(ctx, req.(*CreateAnnotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_BatchCreateAnnotations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchCreateAnnotationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).BatchCreateAnnotations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/BatchCreateAnnotations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).BatchCreateAnnotations(ctx, req.(*BatchCreateAnnotationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_GetAnnotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAnnotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).GetAnnotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/GetAnnotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).GetAnnotation(ctx, req.(*GetAnnotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_UpdateAnnotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateAnnotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).UpdateAnnotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/UpdateAnnotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).UpdateAnnotation(ctx, req.(*UpdateAnnotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_DeleteAnnotation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteAnnotationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).DeleteAnnotation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/DeleteAnnotation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).DeleteAnnotation(ctx, req.(*DeleteAnnotationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _AnnotationServiceV1_SearchAnnotations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchAnnotationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AnnotationServiceV1Server).SearchAnnotations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.AnnotationServiceV1/SearchAnnotations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AnnotationServiceV1Server).SearchAnnotations(ctx, req.(*SearchAnnotationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _AnnotationServiceV1_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.genomics.v1.AnnotationServiceV1", - HandlerType: (*AnnotationServiceV1Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateAnnotationSet", - Handler: _AnnotationServiceV1_CreateAnnotationSet_Handler, - }, - { - MethodName: "GetAnnotationSet", - Handler: _AnnotationServiceV1_GetAnnotationSet_Handler, - }, - { - MethodName: "UpdateAnnotationSet", - Handler: _AnnotationServiceV1_UpdateAnnotationSet_Handler, - }, - { - MethodName: "DeleteAnnotationSet", - Handler: _AnnotationServiceV1_DeleteAnnotationSet_Handler, - }, - { - MethodName: "SearchAnnotationSets", - Handler: _AnnotationServiceV1_SearchAnnotationSets_Handler, - }, - { - MethodName: "CreateAnnotation", - Handler: _AnnotationServiceV1_CreateAnnotation_Handler, - }, - { - MethodName: "BatchCreateAnnotations", - Handler: _AnnotationServiceV1_BatchCreateAnnotations_Handler, - }, - { - MethodName: "GetAnnotation", - Handler: _AnnotationServiceV1_GetAnnotation_Handler, - }, - { - MethodName: "UpdateAnnotation", - Handler: _AnnotationServiceV1_UpdateAnnotation_Handler, - }, - { - MethodName: "DeleteAnnotation", - Handler: _AnnotationServiceV1_DeleteAnnotation_Handler, - }, - { - MethodName: "SearchAnnotations", - Handler: _AnnotationServiceV1_SearchAnnotations_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/genomics/v1/annotations.proto", -} - -func init() { proto.RegisterFile("google/genomics/v1/annotations.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2188 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcd, 0x6f, 0xdb, 0xc8, - 0x15, 0x0f, 0xf5, 0x69, 0x3f, 0xd9, 0x32, 0x3d, 0xf1, 0xda, 0x5a, 0x39, 0x1f, 0x0e, 0xf3, 0x65, - 0xb8, 0x89, 0xbc, 0x51, 0x80, 0x36, 0x75, 0xda, 0x74, 0x65, 0x9a, 0xb6, 0xa7, 0xab, 0x50, 0xc2, - 0x90, 0x72, 0xe1, 0x5e, 0x08, 0x86, 0x1a, 0x7b, 0x89, 0xd8, 0x94, 0x4a, 0xd2, 0x6e, 0xbc, 0xc5, - 0x02, 0x8b, 0xc5, 0x16, 0x3d, 0xf5, 0xb2, 0xbb, 0xf7, 0x5e, 0x0a, 0xb4, 0xff, 0x43, 0x2f, 0x05, - 0x7a, 0x6f, 0x0f, 0x45, 0xff, 0x83, 0x5e, 0xf6, 0xda, 0x53, 0x81, 0x5e, 0x8a, 0x19, 0x92, 0x12, - 0x45, 0x51, 0xb6, 0xdc, 0x00, 0xbd, 0x71, 0xde, 0xbc, 0xf7, 0xe6, 0x37, 0xbf, 0x99, 0xf7, 0x31, - 0x12, 0x3c, 0x38, 0xee, 0xf5, 0x8e, 0x4f, 0xe8, 0xe6, 0x31, 0x75, 0x7a, 0xa7, 0xb6, 0xe5, 0x6d, - 0x9e, 0x3f, 0xdb, 0x34, 0x1d, 0xa7, 0xe7, 0x9b, 0xbe, 0xdd, 0x73, 0xbc, 0x5a, 0xdf, 0xed, 0xf9, - 0x3d, 0x84, 0x02, 0xad, 0x5a, 0xa4, 0x55, 0x3b, 0x7f, 0x56, 0xbd, 0x15, 0x5a, 0x9a, 0x7d, 0x7b, - 0xdc, 0xa2, 0xba, 0x1a, 0xce, 0xf2, 0xd1, 0x9b, 0xb3, 0xa3, 0x4d, 0x7a, 0xda, 0xf7, 0x2f, 0xc2, - 0xc9, 0xb5, 0xe4, 0xe4, 0x91, 0x4d, 0x4f, 0xba, 0xc6, 0xa9, 0xe9, 0xbd, 0x0d, 0x35, 0x6e, 0x25, - 0x35, 0x3c, 0xdf, 0x3d, 0xb3, 0xfc, 0x70, 0xf6, 0x4e, 0x72, 0xf6, 0x97, 0xae, 0xd9, 0xef, 0x53, - 0x37, 0x5a, 0x7c, 0x25, 0x9c, 0x77, 0xfb, 0xd6, 0xa6, 0xe7, 0x9b, 0xfe, 0x59, 0x38, 0x21, 0x7d, - 0x97, 0x81, 0xf9, 0xc6, 0x00, 0xab, 0x46, 0x7d, 0x54, 0x86, 0x8c, 0xdd, 0xad, 0x08, 0x6b, 0xc2, - 0xfa, 0x2c, 0xc9, 0xd8, 0x5d, 0x74, 0x1b, 0xa0, 0x6b, 0xfa, 0xa6, 0x47, 0x7d, 0xc3, 0xee, 0x56, - 0x32, 0x5c, 0x3e, 0x1b, 0x4a, 0x70, 0x17, 0xad, 0x83, 0xe8, 0xd2, 0x23, 0xea, 0x52, 0xc7, 0xa2, - 0x46, 0xa8, 0x94, 0xe5, 0x4a, 0xe5, 0x81, 0x5c, 0xe3, 0x9a, 0x08, 0x72, 0x8e, 0x79, 0x4a, 0x2b, - 0x39, 0x3e, 0xcb, 0xbf, 0x99, 0x73, 0xaf, 0x77, 0xe6, 0x5a, 0xd4, 0x38, 0x73, 0xed, 0x4a, 0x3e, - 0x70, 0x1e, 0x48, 0x3a, 0xae, 0x8d, 0xbe, 0x0f, 0x39, 0xff, 0xa2, 0x4f, 0x2b, 0x85, 0x35, 0x61, - 0xbd, 0x5c, 0x97, 0x6a, 0xe3, 0xa4, 0xd7, 0x86, 0xe0, 0xf5, 0x8b, 0x3e, 0x25, 0x5c, 0x1f, 0xfd, - 0x04, 0x72, 0xb6, 0x73, 0xd4, 0xab, 0x2c, 0xae, 0x65, 0xd7, 0x4b, 0xf5, 0xef, 0x5d, 0x6e, 0xa7, - 0x51, 0xbf, 0x86, 0x9d, 0xa3, 0x9e, 0xe2, 0xf8, 0xee, 0x05, 0xe1, 0x86, 0x55, 0x0d, 0x66, 0x07, - 0x22, 0x24, 0x42, 0xf6, 0x2d, 0xbd, 0x08, 0x29, 0x61, 0x9f, 0xe8, 0x23, 0xc8, 0x9f, 0x9b, 0x27, - 0x67, 0x94, 0xd3, 0x51, 0xaa, 0x57, 0xa3, 0x05, 0x22, 0xfa, 0x6b, 0x4d, 0xdb, 0xf3, 0x0f, 0x98, - 0x06, 0x09, 0x14, 0xb7, 0x32, 0x2f, 0x04, 0xe9, 0xaf, 0x39, 0x80, 0xe1, 0xb2, 0x63, 0x44, 0x6f, - 0xc0, 0xe2, 0xf0, 0xd6, 0x18, 0x23, 0x7c, 0x2f, 0x98, 0x71, 0xb4, 0x31, 0x2e, 0xb3, 0x31, 0x2e, - 0xef, 0xc1, 0xdc, 0xf0, 0x24, 0xec, 0x6e, 0xc8, 0x73, 0x69, 0x20, 0xc3, 0x5d, 0xf4, 0x10, 0x86, - 0x87, 0x62, 0x70, 0x07, 0x01, 0xe5, 0xf3, 0x03, 0xa9, 0xca, 0x3c, 0x2d, 0x41, 0xde, 0xf3, 0x4d, - 0xd7, 0xe7, 0xbc, 0x67, 0x49, 0x30, 0x60, 0x34, 0x50, 0xa7, 0x5b, 0x29, 0x72, 0x19, 0xfb, 0x0c, - 0xdc, 0x9d, 0x53, 0xd7, 0xa3, 0x86, 0xe7, 0xbb, 0xa6, 0xd3, 0xad, 0xcc, 0xac, 0x09, 0xeb, 0x33, - 0xcc, 0x1d, 0x97, 0x6a, 0x5c, 0x38, 0x38, 0xc5, 0xd9, 0x6b, 0x9e, 0x62, 0x03, 0x8a, 0xe7, 0xa6, - 0x6b, 0x9b, 0x8e, 0x5f, 0x01, 0xce, 0xf3, 0xc3, 0x34, 0xd3, 0x83, 0x40, 0x65, 0xe8, 0x61, 0xff, - 0x06, 0x89, 0xec, 0xd0, 0xc7, 0x00, 0x0c, 0x83, 0x67, 0xb9, 0x76, 0xdf, 0xaf, 0x94, 0xb8, 0x97, - 0x3b, 0x69, 0x5e, 0xf4, 0x81, 0xd6, 0xfe, 0x0d, 0x12, 0xb3, 0x41, 0x3f, 0x0a, 0xaf, 0xd2, 0x1c, - 0xbf, 0x4a, 0xeb, 0x97, 0x83, 0xff, 0xbf, 0xdc, 0xa3, 0xed, 0x62, 0x68, 0x25, 0xfd, 0x67, 0x16, - 0x16, 0xc7, 0xb6, 0x8f, 0x5e, 0x85, 0x74, 0x0b, 0x9c, 0xee, 0x8d, 0xa9, 0x38, 0xab, 0xc5, 0x68, - 0xdf, 0x81, 0x02, 0x3d, 0x3a, 0xa2, 0x96, 0xcf, 0x51, 0x95, 0xeb, 0x4f, 0xa6, 0xf3, 0xa0, 0x70, - 0x1b, 0x12, 0xda, 0xa2, 0xc7, 0xb0, 0x60, 0x9e, 0xf8, 0xd4, 0x75, 0x4c, 0x9f, 0x1a, 0x6f, 0x4c, - 0x8f, 0x7a, 0x51, 0x5a, 0x18, 0x88, 0xb7, 0x99, 0x14, 0xad, 0x40, 0xf1, 0x98, 0x3a, 0xb1, 0x1b, - 0x5b, 0x60, 0xc3, 0xe0, 0xb2, 0x0e, 0xcf, 0xc1, 0xb0, 0xbb, 0x5e, 0x25, 0xbf, 0x96, 0x65, 0x97, - 0x75, 0x28, 0xc5, 0x5d, 0x0f, 0xfd, 0x0c, 0xc0, 0xea, 0x39, 0x5d, 0x9b, 0xe7, 0xda, 0x4a, 0x81, - 0x1f, 0xd3, 0x0f, 0xa6, 0x83, 0x2c, 0x9f, 0xd8, 0x8e, 0x6d, 0x99, 0x27, 0x72, 0x64, 0x4f, 0x62, - 0xae, 0x50, 0x0f, 0x3e, 0xb0, 0x42, 0x05, 0xc3, 0xb3, 0x8f, 0x1d, 0xfb, 0xc8, 0xb6, 0x4c, 0xc7, - 0xa2, 0x3c, 0x02, 0xca, 0xf5, 0xad, 0xeb, 0xad, 0xa1, 0xc5, 0x3c, 0x90, 0x25, 0x2b, 0x45, 0x5a, - 0xfd, 0xbd, 0x00, 0x8b, 0x63, 0x90, 0x58, 0x30, 0xb2, 0x48, 0xf5, 0x2a, 0x02, 0xdf, 0x7d, 0x30, - 0x40, 0x0d, 0x98, 0xa3, 0xef, 0x38, 0x8f, 0x27, 0x9c, 0x9a, 0x0c, 0xdf, 0x77, 0xea, 0xd5, 0x56, - 0x42, 0x3d, 0xdc, 0x25, 0x25, 0x3a, 0xf8, 0xf6, 0x58, 0xee, 0xb5, 0x7a, 0x8e, 0x45, 0xfb, 0xb1, - 0x9c, 0x3d, 0x1b, 0x4a, 0x70, 0x97, 0x9d, 0x4b, 0xef, 0xd4, 0x3e, 0x8d, 0x9d, 0x0b, 0x1b, 0xe2, - 0xae, 0xf4, 0x39, 0xe4, 0xd8, 0x6d, 0x41, 0x4b, 0x20, 0xea, 0x87, 0x6d, 0xc5, 0xe8, 0xa8, 0x5a, - 0x5b, 0x91, 0xf1, 0x2e, 0x56, 0x76, 0xc4, 0x1b, 0xa8, 0x0c, 0xc0, 0xa5, 0x2d, 0x7d, 0x5f, 0x21, - 0xa2, 0x80, 0xe6, 0x61, 0x16, 0xab, 0x9a, 0x42, 0x74, 0xdc, 0x52, 0xc5, 0x0c, 0x9a, 0x83, 0x99, - 0x1d, 0xa5, 0xa9, 0xf0, 0x51, 0x16, 0x89, 0x30, 0xa7, 0x75, 0xb6, 0x35, 0x1d, 0xeb, 0x1d, 0x2e, - 0xc9, 0xa1, 0x22, 0x64, 0x35, 0xb5, 0x2d, 0xe6, 0x99, 0x1f, 0x4d, 0x27, 0x1d, 0x59, 0xef, 0x90, - 0x46, 0x53, 0x2c, 0xb0, 0x09, 0x59, 0x3d, 0x10, 0x8b, 0xd2, 0x5f, 0x04, 0x28, 0x04, 0x77, 0x0d, - 0x2d, 0x03, 0x52, 0x76, 0x77, 0x15, 0x59, 0x4f, 0x60, 0x10, 0x61, 0x2e, 0x94, 0x47, 0x28, 0xca, - 0x00, 0xbb, 0xa4, 0xf1, 0x5a, 0xd1, 0xf6, 0xf1, 0xae, 0x2e, 0x66, 0x50, 0x15, 0x96, 0xf9, 0xd8, - 0x68, 0x13, 0x45, 0x53, 0xc8, 0x01, 0x56, 0xf7, 0x0c, 0xac, 0xee, 0x28, 0x4d, 0x31, 0x8b, 0x10, - 0x94, 0xb5, 0x43, 0xb5, 0xa5, 0x1e, 0xbe, 0x6e, 0x75, 0x34, 0x83, 0xa1, 0xc9, 0xa1, 0x0f, 0x60, - 0x51, 0x6d, 0xa9, 0x09, 0x71, 0x9e, 0x6d, 0x4e, 0xd3, 0x5b, 0x6d, 0x63, 0xaf, 0x81, 0x55, 0xb1, - 0x30, 0x18, 0x36, 0x5b, 0x9a, 0x26, 0x16, 0xd9, 0x22, 0x5a, 0xbb, 0x89, 0x65, 0xc5, 0xd0, 0xb0, - 0xae, 0x18, 0x3b, 0x58, 0x23, 0x9d, 0x36, 0xdf, 0xe7, 0x8c, 0xf4, 0xe7, 0x0c, 0x2c, 0xa5, 0x5d, - 0x0d, 0xf4, 0x10, 0xee, 0xc9, 0x4d, 0xac, 0x62, 0xb9, 0xd1, 0x34, 0x34, 0xbc, 0xa7, 0xe2, 0x5d, - 0x2c, 0x37, 0x54, 0x39, 0x49, 0xf3, 0x5d, 0x58, 0x4d, 0x57, 0x8b, 0xf1, 0xde, 0x51, 0x65, 0x85, - 0xe8, 0x0c, 0x5a, 0x06, 0x01, 0x14, 0xb6, 0x15, 0x15, 0xef, 0x31, 0xd6, 0x17, 0x61, 0xbe, 0x89, - 0x3f, 0x51, 0x9a, 0x87, 0x46, 0x28, 0xe2, 0xfb, 0x0b, 0x45, 0xed, 0x86, 0xbe, 0xdf, 0xda, 0x53, - 0x54, 0x2c, 0x07, 0x87, 0x10, 0x1b, 0x17, 0x98, 0xe5, 0x0e, 0xe9, 0xec, 0x19, 0x44, 0xd1, 0xda, - 0x2d, 0x55, 0x53, 0xc4, 0x22, 0x3b, 0x83, 0x7d, 0xac, 0xe9, 0x2d, 0xb9, 0xf5, 0xba, 0xdd, 0xd0, - 0xf1, 0x36, 0x6e, 0x62, 0xfd, 0x50, 0x9c, 0x41, 0x2b, 0x70, 0x53, 0x6e, 0xa9, 0xbb, 0x0a, 0xd1, - 0x0c, 0x4d, 0x51, 0x35, 0xac, 0xe3, 0x03, 0x36, 0x31, 0x8b, 0x16, 0xa0, 0x44, 0xb0, 0xf6, 0x89, - 0xb1, 0xdb, 0x90, 0xf5, 0x16, 0x11, 0x81, 0x09, 0x1a, 0x9a, 0xd6, 0x92, 0x71, 0x83, 0x73, 0x53, - 0xe2, 0xab, 0x92, 0x96, 0xae, 0xc8, 0x3a, 0x3e, 0x50, 0xc4, 0x39, 0x06, 0xee, 0x75, 0xa7, 0xa9, - 0xe3, 0x76, 0x53, 0x31, 0x88, 0xd2, 0x6e, 0x11, 0x5d, 0xd9, 0x11, 0xe7, 0xa5, 0x7f, 0x64, 0x00, - 0x86, 0x69, 0x3b, 0x9e, 0x47, 0x84, 0x91, 0x3c, 0xf2, 0x43, 0xc8, 0xd3, 0x77, 0x2c, 0x37, 0x04, - 0x31, 0x72, 0xff, 0xf2, 0xf4, 0x5f, 0x53, 0xde, 0xf5, 0x1c, 0x12, 0x58, 0xa0, 0x03, 0x58, 0xb0, - 0x7a, 0x5d, 0xdb, 0x39, 0x36, 0x3c, 0xfa, 0x8b, 0x33, 0x56, 0x1f, 0x79, 0x9c, 0x94, 0xea, 0x4f, - 0xaf, 0x70, 0x22, 0x73, 0x2b, 0x2d, 0x34, 0x22, 0x65, 0x6b, 0x64, 0x5c, 0x35, 0x21, 0xc7, 0x96, - 0x19, 0x16, 0x5a, 0x21, 0xa5, 0xd0, 0x66, 0x86, 0x85, 0xf6, 0x19, 0xe4, 0x8f, 0xdc, 0xa8, 0xde, - 0x97, 0xea, 0xab, 0x63, 0x75, 0x02, 0x3b, 0xfe, 0xf3, 0x7a, 0x58, 0x28, 0xb8, 0x66, 0xf5, 0x05, - 0x94, 0x47, 0x41, 0x4c, 0xbb, 0x98, 0xf4, 0x63, 0x80, 0x61, 0xca, 0x40, 0x77, 0xa1, 0x14, 0x76, - 0x68, 0xbc, 0x5f, 0x08, 0xa8, 0x0d, 0x9b, 0x36, 0xde, 0x2c, 0x04, 0x6d, 0x4c, 0x26, 0x6a, 0x63, - 0xa4, 0x23, 0xa8, 0xca, 0x2e, 0x35, 0x7d, 0x3a, 0xd2, 0x61, 0x11, 0x86, 0xc2, 0xf3, 0xd1, 0x3e, - 0x94, 0x47, 0x9b, 0x1c, 0xee, 0xb1, 0x54, 0xbf, 0x77, 0x65, 0x8f, 0x46, 0xe6, 0x47, 0x9a, 0x20, - 0x49, 0x81, 0x95, 0x3d, 0xea, 0xa7, 0x2e, 0x92, 0xda, 0x49, 0x09, 0xa9, 0x9d, 0x94, 0xf4, 0x37, - 0x01, 0xaa, 0x9d, 0x7e, 0x77, 0x12, 0xde, 0x6b, 0xb8, 0x4a, 0xd9, 0x5b, 0xe6, 0x7f, 0xdb, 0x1b, - 0x7a, 0x09, 0xa5, 0x33, 0x8e, 0x89, 0xbf, 0x00, 0xc2, 0x53, 0x1f, 0xef, 0x0e, 0x76, 0xd9, 0x23, - 0xe1, 0xb5, 0xe9, 0xbd, 0x25, 0x10, 0xa8, 0xb3, 0x6f, 0x69, 0x1f, 0xaa, 0x3b, 0xf4, 0x84, 0xbe, - 0xff, 0x86, 0xa4, 0x7f, 0x09, 0xb0, 0xaa, 0x51, 0xd3, 0xb5, 0x3e, 0x1d, 0x71, 0xe5, 0x45, 0xbe, - 0xee, 0x42, 0x69, 0xf8, 0x34, 0x88, 0x0a, 0x14, 0x0c, 0xde, 0x06, 0x5e, 0xea, 0xe3, 0x20, 0x73, - 0xe9, 0xe3, 0x20, 0xde, 0xd0, 0xbe, 0x80, 0x3c, 0x6b, 0x48, 0xbc, 0x4a, 0x6e, 0x2d, 0x3b, 0x65, - 0xe3, 0x18, 0x18, 0xb0, 0xd2, 0xd6, 0x37, 0x8f, 0xa9, 0xe1, 0xf7, 0xde, 0x52, 0x27, 0x7a, 0x56, - 0x30, 0x89, 0xce, 0x04, 0x68, 0x15, 0xf8, 0xc0, 0xf0, 0xec, 0xcf, 0x82, 0xb7, 0x45, 0x9e, 0xcc, - 0x30, 0x81, 0x66, 0x7f, 0x46, 0xa5, 0xaf, 0x05, 0xb8, 0x95, 0xbe, 0x69, 0xaf, 0xdf, 0x73, 0x3c, - 0x8a, 0x7e, 0x0a, 0x0b, 0xa3, 0x0c, 0x06, 0x3b, 0x9f, 0xea, 0x9c, 0xcb, 0x23, 0x14, 0x7b, 0xe8, - 0x11, 0x2c, 0x38, 0xf4, 0x9d, 0x6f, 0xc4, 0xd0, 0x06, 0xfc, 0xcc, 0x33, 0x71, 0x3b, 0x42, 0x2c, - 0x1d, 0xc2, 0x4a, 0x32, 0xa8, 0xa2, 0x43, 0x78, 0x05, 0x30, 0x74, 0x1a, 0x46, 0xd3, 0x9d, 0xcb, - 0x91, 0x90, 0x98, 0x85, 0xf4, 0x85, 0x00, 0xb7, 0xb7, 0x4d, 0xdf, 0xfa, 0x34, 0xb9, 0xc0, 0xe0, - 0x98, 0x3f, 0x86, 0x52, 0xec, 0x39, 0x1b, 0x6e, 0xf6, 0xaa, 0x25, 0xe2, 0x26, 0xec, 0x3c, 0xdc, - 0xc0, 0x59, 0xec, 0x0d, 0x19, 0x4a, 0x70, 0x57, 0xfa, 0x4e, 0x80, 0x3b, 0x93, 0x20, 0x84, 0xa4, - 0x13, 0x28, 0x52, 0xc7, 0x77, 0x6d, 0x1a, 0xad, 0xff, 0x22, 0x6d, 0xfd, 0xcb, 0x9d, 0xd4, 0x82, - 0xce, 0x3c, 0x72, 0x54, 0xf5, 0x20, 0x1f, 0x34, 0xe6, 0x1b, 0x50, 0x08, 0x1e, 0xc5, 0x21, 0x7d, - 0x28, 0xf2, 0xed, 0xf6, 0xad, 0x9a, 0xc6, 0x67, 0x48, 0xa8, 0x91, 0xa0, 0x3b, 0x73, 0x6d, 0xba, - 0x5f, 0xc2, 0xd2, 0x48, 0xda, 0x8a, 0x48, 0xbe, 0x0f, 0xb1, 0x1c, 0x30, 0x8c, 0xc9, 0xb9, 0xa1, - 0x10, 0x77, 0xa5, 0x3f, 0x09, 0xb0, 0x92, 0x4c, 0x56, 0xd7, 0x71, 0xf0, 0xbe, 0xe8, 0xdf, 0x2f, - 0x31, 0xbd, 0x82, 0x95, 0x64, 0x62, 0xba, 0xd6, 0xee, 0x7f, 0x93, 0x81, 0x4a, 0x32, 0x32, 0x07, - 0x97, 0xf4, 0x09, 0xa0, 0xb1, 0xbc, 0x16, 0xa5, 0x24, 0x31, 0x91, 0xd8, 0x3c, 0x74, 0x3f, 0xf1, - 0x56, 0xe6, 0x57, 0x72, 0xff, 0xc6, 0xe8, 0x6b, 0xf9, 0xf1, 0xd8, 0x6b, 0x39, 0x1b, 0xaa, 0x4d, - 0x7a, 0x2f, 0xe7, 0x52, 0x2a, 0x6b, 0x7e, 0x58, 0xc6, 0x47, 0xd3, 0x52, 0xe1, 0xd2, 0xb4, 0x54, - 0x1c, 0x4d, 0x4b, 0xdb, 0x25, 0x98, 0x1d, 0x2c, 0x2a, 0xfd, 0x5a, 0x80, 0x0f, 0x53, 0x98, 0x08, - 0x63, 0xe5, 0xfd, 0xe3, 0x75, 0xca, 0xb4, 0xb4, 0x41, 0xa1, 0x3c, 0x9a, 0x80, 0x59, 0x5f, 0xda, - 0x50, 0xd5, 0x96, 0xce, 0x7b, 0x39, 0x23, 0xe5, 0x7d, 0x50, 0x82, 0xe2, 0x9e, 0xa2, 0x2a, 0x04, - 0xcb, 0xa2, 0xc0, 0x06, 0x07, 0x0d, 0x82, 0x1b, 0x2a, 0xeb, 0xc9, 0x67, 0x20, 0xc7, 0x66, 0xc4, - 0x2c, 0x7f, 0x43, 0x90, 0x86, 0xaa, 0xc9, 0x04, 0xb7, 0x75, 0x31, 0x57, 0xff, 0x6a, 0x1e, 0x6e, - 0xc6, 0xf3, 0xa8, 0x7b, 0x6e, 0x5b, 0xf4, 0xe0, 0x19, 0xfa, 0x56, 0x80, 0x9b, 0x29, 0xbd, 0x06, - 0xaa, 0xa5, 0xed, 0x75, 0x72, 0x53, 0x52, 0xbd, 0x3a, 0x71, 0x4b, 0x1b, 0x5f, 0xfe, 0xfd, 0x9f, - 0xdf, 0x64, 0x1e, 0x48, 0x28, 0xf1, 0x73, 0x20, 0xf5, 0xbd, 0xad, 0x44, 0xd5, 0x47, 0x5f, 0x0b, - 0x20, 0x26, 0x5b, 0x13, 0x94, 0xfa, 0x23, 0xd4, 0x84, 0x06, 0x66, 0x1a, 0x40, 0x35, 0x0e, 0x68, - 0x1d, 0x3d, 0x1a, 0x07, 0xb4, 0xf9, 0xab, 0xb1, 0x48, 0xf8, 0x1c, 0xfd, 0x51, 0x80, 0x9b, 0x29, - 0x7d, 0x4e, 0x3a, 0x57, 0x93, 0x1b, 0xa2, 0x69, 0xa0, 0xbd, 0xe2, 0xd0, 0x5e, 0x54, 0xa7, 0x84, - 0x36, 0xc6, 0xdf, 0x6f, 0x05, 0xb8, 0x99, 0xd2, 0xc1, 0xa4, 0x43, 0x9d, 0xdc, 0xea, 0x54, 0x97, - 0xc7, 0xf2, 0x92, 0x72, 0xda, 0xf7, 0x2f, 0x22, 0xea, 0x36, 0xa6, 0xa5, 0xee, 0x77, 0x02, 0x2c, - 0xa5, 0x75, 0x04, 0x68, 0x33, 0x0d, 0xd0, 0x25, 0x0d, 0x53, 0xf5, 0xa3, 0xe9, 0x0d, 0x82, 0x58, - 0x96, 0x1e, 0x70, 0xac, 0x77, 0xa4, 0x0f, 0x53, 0xb0, 0x7a, 0xdc, 0x70, 0x4b, 0xd8, 0x40, 0x5f, - 0x09, 0x20, 0x26, 0xef, 0x77, 0xfa, 0x8d, 0x9b, 0xd0, 0x45, 0x54, 0xaf, 0x48, 0x0f, 0xd2, 0x7d, - 0x8e, 0xe3, 0xb6, 0xb4, 0x90, 0xc0, 0xb1, 0x15, 0xaf, 0x0e, 0x7f, 0x10, 0x60, 0x39, 0xbd, 0x04, - 0xa3, 0x67, 0xd7, 0x29, 0xd7, 0x01, 0xa4, 0xfa, 0xf5, 0x2b, 0xbc, 0xf4, 0x88, 0xc3, 0x5c, 0x93, - 0x56, 0x93, 0x30, 0xdf, 0x0c, 0xed, 0x18, 0x61, 0x5f, 0x0a, 0x30, 0x3f, 0x12, 0x7c, 0x68, 0xfd, - 0xca, 0xf8, 0x9c, 0x96, 0xaa, 0xc7, 0x1c, 0xc3, 0x3d, 0x74, 0x37, 0x81, 0x61, 0xe4, 0x6e, 0xb1, - 0x7b, 0xf5, 0xad, 0x00, 0x62, 0x32, 0xd2, 0xd2, 0x4f, 0x6d, 0x42, 0xcd, 0xbf, 0x12, 0xca, 0x73, - 0x0e, 0xe5, 0x69, 0xf5, 0x2a, 0x28, 0x23, 0xa7, 0xf8, 0x85, 0x00, 0x62, 0x32, 0xaa, 0xd2, 0x61, - 0x4d, 0xa8, 0xe6, 0x13, 0x03, 0x2f, 0x64, 0x66, 0xe3, 0x4a, 0x66, 0xbe, 0x11, 0x60, 0x71, 0xac, - 0xbe, 0xa1, 0x27, 0xd3, 0x44, 0xcf, 0xe0, 0xfa, 0x3c, 0x9d, 0x52, 0x3b, 0xbc, 0x39, 0xf7, 0x38, - 0xb6, 0x55, 0x69, 0x39, 0x89, 0x6d, 0x10, 0x65, 0xdb, 0x6f, 0x61, 0xd9, 0xea, 0x9d, 0xa6, 0xb8, - 0xdd, 0x16, 0x63, 0x1e, 0xdb, 0x6c, 0xcf, 0x6d, 0xe1, 0xe7, 0x5b, 0x91, 0x5e, 0xef, 0xc4, 0x74, - 0x8e, 0x6b, 0x3d, 0xf7, 0x78, 0xf3, 0x98, 0x3a, 0x9c, 0x91, 0xcd, 0x60, 0xca, 0xec, 0xdb, 0x5e, - 0xfc, 0x6f, 0xa6, 0x97, 0xd1, 0xf7, 0xbf, 0x05, 0xe1, 0x4d, 0x81, 0x6b, 0x3e, 0xff, 0x6f, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xf4, 0x94, 0x75, 0x44, 0x8f, 0x1a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/cigar.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/cigar.pb.go deleted file mode 100644 index a45daa0b..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/cigar.pb.go +++ /dev/null @@ -1,168 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/cigar.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Describes the different types of CIGAR alignment operations that exist. -// Used wherever CIGAR alignments are used. -type CigarUnit_Operation int32 - -const ( - CigarUnit_OPERATION_UNSPECIFIED CigarUnit_Operation = 0 - // An alignment match indicates that a sequence can be aligned to the - // reference without evidence of an INDEL. Unlike the - // `SEQUENCE_MATCH` and `SEQUENCE_MISMATCH` operators, - // the `ALIGNMENT_MATCH` operator does not indicate whether the - // reference and read sequences are an exact match. This operator is - // equivalent to SAM's `M`. - CigarUnit_ALIGNMENT_MATCH CigarUnit_Operation = 1 - // The insert operator indicates that the read contains evidence of bases - // being inserted into the reference. This operator is equivalent to SAM's - // `I`. - CigarUnit_INSERT CigarUnit_Operation = 2 - // The delete operator indicates that the read contains evidence of bases - // being deleted from the reference. This operator is equivalent to SAM's - // `D`. - CigarUnit_DELETE CigarUnit_Operation = 3 - // The skip operator indicates that this read skips a long segment of the - // reference, but the bases have not been deleted. This operator is commonly - // used when working with RNA-seq data, where reads may skip long segments - // of the reference between exons. This operator is equivalent to SAM's - // `N`. - CigarUnit_SKIP CigarUnit_Operation = 4 - // The soft clip operator indicates that bases at the start/end of a read - // have not been considered during alignment. This may occur if the majority - // of a read maps, except for low quality bases at the start/end of a read. - // This operator is equivalent to SAM's `S`. Bases that are soft - // clipped will still be stored in the read. - CigarUnit_CLIP_SOFT CigarUnit_Operation = 5 - // The hard clip operator indicates that bases at the start/end of a read - // have been omitted from this alignment. This may occur if this linear - // alignment is part of a chimeric alignment, or if the read has been - // trimmed (for example, during error correction or to trim poly-A tails for - // RNA-seq). This operator is equivalent to SAM's `H`. - CigarUnit_CLIP_HARD CigarUnit_Operation = 6 - // The pad operator indicates that there is padding in an alignment. This - // operator is equivalent to SAM's `P`. - CigarUnit_PAD CigarUnit_Operation = 7 - // This operator indicates that this portion of the aligned sequence exactly - // matches the reference. This operator is equivalent to SAM's `=`. - CigarUnit_SEQUENCE_MATCH CigarUnit_Operation = 8 - // This operator indicates that this portion of the aligned sequence is an - // alignment match to the reference, but a sequence mismatch. This can - // indicate a SNP or a read error. This operator is equivalent to SAM's - // `X`. - CigarUnit_SEQUENCE_MISMATCH CigarUnit_Operation = 9 -) - -var CigarUnit_Operation_name = map[int32]string{ - 0: "OPERATION_UNSPECIFIED", - 1: "ALIGNMENT_MATCH", - 2: "INSERT", - 3: "DELETE", - 4: "SKIP", - 5: "CLIP_SOFT", - 6: "CLIP_HARD", - 7: "PAD", - 8: "SEQUENCE_MATCH", - 9: "SEQUENCE_MISMATCH", -} -var CigarUnit_Operation_value = map[string]int32{ - "OPERATION_UNSPECIFIED": 0, - "ALIGNMENT_MATCH": 1, - "INSERT": 2, - "DELETE": 3, - "SKIP": 4, - "CLIP_SOFT": 5, - "CLIP_HARD": 6, - "PAD": 7, - "SEQUENCE_MATCH": 8, - "SEQUENCE_MISMATCH": 9, -} - -func (x CigarUnit_Operation) String() string { - return proto.EnumName(CigarUnit_Operation_name, int32(x)) -} -func (CigarUnit_Operation) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -// A single CIGAR operation. -type CigarUnit struct { - Operation CigarUnit_Operation `protobuf:"varint,1,opt,name=operation,enum=google.genomics.v1.CigarUnit_Operation" json:"operation,omitempty"` - // The number of genomic bases that the operation runs for. Required. - OperationLength int64 `protobuf:"varint,2,opt,name=operation_length,json=operationLength" json:"operation_length,omitempty"` - // `referenceSequence` is only used at mismatches - // (`SEQUENCE_MISMATCH`) and deletions (`DELETE`). - // Filling this field replaces SAM's MD tag. If the relevant information is - // not available, this field is unset. - ReferenceSequence string `protobuf:"bytes,3,opt,name=reference_sequence,json=referenceSequence" json:"reference_sequence,omitempty"` -} - -func (m *CigarUnit) Reset() { *m = CigarUnit{} } -func (m *CigarUnit) String() string { return proto.CompactTextString(m) } -func (*CigarUnit) ProtoMessage() {} -func (*CigarUnit) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *CigarUnit) GetOperation() CigarUnit_Operation { - if m != nil { - return m.Operation - } - return CigarUnit_OPERATION_UNSPECIFIED -} - -func (m *CigarUnit) GetOperationLength() int64 { - if m != nil { - return m.OperationLength - } - return 0 -} - -func (m *CigarUnit) GetReferenceSequence() string { - if m != nil { - return m.ReferenceSequence - } - return "" -} - -func init() { - proto.RegisterType((*CigarUnit)(nil), "google.genomics.v1.CigarUnit") - proto.RegisterEnum("google.genomics.v1.CigarUnit_Operation", CigarUnit_Operation_name, CigarUnit_Operation_value) -} - -func init() { proto.RegisterFile("google/genomics/v1/cigar.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 367 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x51, 0xcf, 0x0e, 0x93, 0x30, - 0x1c, 0xb6, 0x63, 0x6e, 0xe3, 0x97, 0xb8, 0x75, 0x35, 0x33, 0xd3, 0x18, 0xb3, 0xec, 0xe2, 0x3c, - 0x08, 0x99, 0xde, 0xf4, 0xc4, 0xa0, 0x73, 0x8d, 0x0c, 0x10, 0xd8, 0xc5, 0x0b, 0x41, 0x52, 0x91, - 0x64, 0x6b, 0x11, 0x70, 0xaf, 0xe5, 0x1b, 0xf9, 0x1c, 0x1e, 0x0d, 0x30, 0x98, 0x89, 0xde, 0xbe, - 0x7e, 0xff, 0x9a, 0xfc, 0x3e, 0x78, 0x91, 0x4a, 0x99, 0x9e, 0xb9, 0x9e, 0x72, 0x21, 0x2f, 0x59, - 0x52, 0xea, 0xd7, 0xad, 0x9e, 0x64, 0x69, 0x5c, 0x68, 0x79, 0x21, 0x2b, 0x49, 0x48, 0xab, 0x6b, - 0x9d, 0xae, 0x5d, 0xb7, 0xcf, 0x9e, 0xdf, 0x32, 0x71, 0x9e, 0xe9, 0xb1, 0x10, 0xb2, 0x8a, 0xab, - 0x4c, 0x8a, 0xb2, 0x4d, 0xac, 0x7f, 0x0d, 0x40, 0x35, 0xeb, 0x86, 0x93, 0xc8, 0x2a, 0x42, 0x41, - 0x95, 0x39, 0x2f, 0x1a, 0xc7, 0x12, 0xad, 0xd0, 0x66, 0xfa, 0xe6, 0xa5, 0xf6, 0x6f, 0xa7, 0xd6, - 0x27, 0x34, 0xb7, 0xb3, 0xfb, 0xf7, 0x24, 0x79, 0x05, 0xb8, 0x7f, 0x44, 0x67, 0x2e, 0xd2, 0xea, - 0xdb, 0x72, 0xb0, 0x42, 0x1b, 0xc5, 0x9f, 0xf5, 0xbc, 0xdd, 0xd0, 0xe4, 0x35, 0x90, 0x82, 0x7f, - 0xe5, 0x05, 0x17, 0x09, 0x8f, 0x4a, 0xfe, 0xfd, 0x47, 0x0d, 0x96, 0xca, 0x0a, 0x6d, 0x54, 0x7f, - 0xde, 0x2b, 0xc1, 0x4d, 0x58, 0xff, 0x44, 0xa0, 0xf6, 0x5f, 0x92, 0xa7, 0xb0, 0x70, 0x3d, 0xea, - 0x1b, 0x21, 0x73, 0x9d, 0xe8, 0xe4, 0x04, 0x1e, 0x35, 0xd9, 0x9e, 0x51, 0x0b, 0x3f, 0x20, 0x8f, - 0x61, 0x66, 0xd8, 0xec, 0x83, 0x73, 0xa4, 0x4e, 0x18, 0x1d, 0x8d, 0xd0, 0x3c, 0x60, 0x44, 0x00, - 0x46, 0xcc, 0x09, 0xa8, 0x1f, 0xe2, 0x41, 0x8d, 0x2d, 0x6a, 0xd3, 0x90, 0x62, 0x85, 0x4c, 0x60, - 0x18, 0x7c, 0x64, 0x1e, 0x1e, 0x92, 0x47, 0xa0, 0x9a, 0x36, 0xf3, 0xa2, 0xc0, 0xdd, 0x87, 0xf8, - 0x61, 0xff, 0x3c, 0x18, 0xbe, 0x85, 0x47, 0x64, 0x0c, 0x8a, 0x67, 0x58, 0x78, 0x4c, 0x08, 0x4c, - 0x03, 0xfa, 0xe9, 0x44, 0x1d, 0x93, 0xde, 0xca, 0x27, 0x64, 0x01, 0xf3, 0x3b, 0xc7, 0x82, 0x96, - 0x56, 0x77, 0x1c, 0x9e, 0x24, 0xf2, 0xf2, 0x9f, 0x23, 0xee, 0xa0, 0xb9, 0xa2, 0x57, 0xcf, 0xe0, - 0xa1, 0xcf, 0xef, 0x3a, 0x87, 0x3c, 0xc7, 0x22, 0xd5, 0x64, 0x91, 0xd6, 0x2b, 0x37, 0x23, 0xe9, - 0xad, 0x14, 0xe7, 0x59, 0xf9, 0xf7, 0xf2, 0xef, 0x3b, 0xfc, 0x1b, 0xa1, 0x2f, 0xa3, 0xc6, 0xf9, - 0xf6, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x98, 0xcc, 0xce, 0xde, 0x22, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/datasets.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/datasets.pb.go deleted file mode 100644 index a871906f..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/datasets.pb.go +++ /dev/null @@ -1,777 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/datasets.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf6 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A Dataset is a collection of genomic data. -// -// For more genomics resource definitions, see [Fundamentals of Google -// Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) -type Dataset struct { - // The server-generated dataset ID, unique across all datasets. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The Google Cloud project ID that this dataset belongs to. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The dataset name. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // The time this dataset was created, in seconds from the epoch. - CreateTime *google_protobuf6.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` -} - -func (m *Dataset) Reset() { *m = Dataset{} } -func (m *Dataset) String() string { return proto.CompactTextString(m) } -func (*Dataset) ProtoMessage() {} -func (*Dataset) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *Dataset) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Dataset) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *Dataset) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Dataset) GetCreateTime() *google_protobuf6.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -// The dataset list request. -type ListDatasetsRequest struct { - // Required. The Google Cloud project ID to list datasets for. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 50. The maximum value is 1024. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListDatasetsRequest) Reset() { *m = ListDatasetsRequest{} } -func (m *ListDatasetsRequest) String() string { return proto.CompactTextString(m) } -func (*ListDatasetsRequest) ProtoMessage() {} -func (*ListDatasetsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ListDatasetsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListDatasetsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListDatasetsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The dataset list response. -type ListDatasetsResponse struct { - // The list of matching Datasets. - Datasets []*Dataset `protobuf:"bytes,1,rep,name=datasets" json:"datasets,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListDatasetsResponse) Reset() { *m = ListDatasetsResponse{} } -func (m *ListDatasetsResponse) String() string { return proto.CompactTextString(m) } -func (*ListDatasetsResponse) ProtoMessage() {} -func (*ListDatasetsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *ListDatasetsResponse) GetDatasets() []*Dataset { - if m != nil { - return m.Datasets - } - return nil -} - -func (m *ListDatasetsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -type CreateDatasetRequest struct { - // The dataset to be created. Must contain projectId and name. - Dataset *Dataset `protobuf:"bytes,1,opt,name=dataset" json:"dataset,omitempty"` -} - -func (m *CreateDatasetRequest) Reset() { *m = CreateDatasetRequest{} } -func (m *CreateDatasetRequest) String() string { return proto.CompactTextString(m) } -func (*CreateDatasetRequest) ProtoMessage() {} -func (*CreateDatasetRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *CreateDatasetRequest) GetDataset() *Dataset { - if m != nil { - return m.Dataset - } - return nil -} - -type UpdateDatasetRequest struct { - // The ID of the dataset to be updated. - DatasetId string `protobuf:"bytes,1,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // The new dataset data. - Dataset *Dataset `protobuf:"bytes,2,opt,name=dataset" json:"dataset,omitempty"` - // An optional mask specifying which fields to update. At this time, the only - // mutable field is [name][google.genomics.v1.Dataset.name]. The only - // acceptable value is "name". If unspecified, all mutable fields will be - // updated. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateDatasetRequest) Reset() { *m = UpdateDatasetRequest{} } -func (m *UpdateDatasetRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateDatasetRequest) ProtoMessage() {} -func (*UpdateDatasetRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *UpdateDatasetRequest) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *UpdateDatasetRequest) GetDataset() *Dataset { - if m != nil { - return m.Dataset - } - return nil -} - -func (m *UpdateDatasetRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -type DeleteDatasetRequest struct { - // The ID of the dataset to be deleted. - DatasetId string `protobuf:"bytes,1,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` -} - -func (m *DeleteDatasetRequest) Reset() { *m = DeleteDatasetRequest{} } -func (m *DeleteDatasetRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteDatasetRequest) ProtoMessage() {} -func (*DeleteDatasetRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *DeleteDatasetRequest) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -type UndeleteDatasetRequest struct { - // The ID of the dataset to be undeleted. - DatasetId string `protobuf:"bytes,1,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` -} - -func (m *UndeleteDatasetRequest) Reset() { *m = UndeleteDatasetRequest{} } -func (m *UndeleteDatasetRequest) String() string { return proto.CompactTextString(m) } -func (*UndeleteDatasetRequest) ProtoMessage() {} -func (*UndeleteDatasetRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *UndeleteDatasetRequest) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -type GetDatasetRequest struct { - // The ID of the dataset. - DatasetId string `protobuf:"bytes,1,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` -} - -func (m *GetDatasetRequest) Reset() { *m = GetDatasetRequest{} } -func (m *GetDatasetRequest) String() string { return proto.CompactTextString(m) } -func (*GetDatasetRequest) ProtoMessage() {} -func (*GetDatasetRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *GetDatasetRequest) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func init() { - proto.RegisterType((*Dataset)(nil), "google.genomics.v1.Dataset") - proto.RegisterType((*ListDatasetsRequest)(nil), "google.genomics.v1.ListDatasetsRequest") - proto.RegisterType((*ListDatasetsResponse)(nil), "google.genomics.v1.ListDatasetsResponse") - proto.RegisterType((*CreateDatasetRequest)(nil), "google.genomics.v1.CreateDatasetRequest") - proto.RegisterType((*UpdateDatasetRequest)(nil), "google.genomics.v1.UpdateDatasetRequest") - proto.RegisterType((*DeleteDatasetRequest)(nil), "google.genomics.v1.DeleteDatasetRequest") - proto.RegisterType((*UndeleteDatasetRequest)(nil), "google.genomics.v1.UndeleteDatasetRequest") - proto.RegisterType((*GetDatasetRequest)(nil), "google.genomics.v1.GetDatasetRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for DatasetServiceV1 service - -type DatasetServiceV1Client interface { - // Lists datasets within a project. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - ListDatasets(ctx context.Context, in *ListDatasetsRequest, opts ...grpc.CallOption) (*ListDatasetsResponse, error) - // Creates a new dataset. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - CreateDataset(ctx context.Context, in *CreateDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) - // Gets a dataset by ID. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetDataset(ctx context.Context, in *GetDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) - // Updates a dataset. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This method supports patch semantics. - UpdateDataset(ctx context.Context, in *UpdateDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) - // Deletes a dataset and all of its contents (all read group sets, - // reference sets, variant sets, call sets, annotation sets, etc.) - // This is reversible (up to one week after the deletion) via - // the - // [datasets.undelete][google.genomics.v1.DatasetServiceV1.UndeleteDataset] - // operation. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteDataset(ctx context.Context, in *DeleteDatasetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Undeletes a dataset by restoring a dataset which was deleted via this API. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This operation is only possible for a week after the deletion occurred. - UndeleteDataset(ctx context.Context, in *UndeleteDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) - // Sets the access control policy on the specified dataset. Replaces any - // existing policy. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // See <a href="/iam/docs/managing-policies#setting_a_policy">Setting a - // Policy</a> for more information. - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Gets the access control policy for the dataset. This is empty if the - // policy or resource does not exist. - // - // See <a href="/iam/docs/managing-policies#getting_a_policy">Getting a - // Policy</a> for more information. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Returns permissions that a caller has on the specified resource. - // See <a href="/iam/docs/managing-policies#testing_permissions">Testing - // Permissions</a> for more information. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -type datasetServiceV1Client struct { - cc *grpc.ClientConn -} - -func NewDatasetServiceV1Client(cc *grpc.ClientConn) DatasetServiceV1Client { - return &datasetServiceV1Client{cc} -} - -func (c *datasetServiceV1Client) ListDatasets(ctx context.Context, in *ListDatasetsRequest, opts ...grpc.CallOption) (*ListDatasetsResponse, error) { - out := new(ListDatasetsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/ListDatasets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datasetServiceV1Client) CreateDataset(ctx context.Context, in *CreateDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) { - out := new(Dataset) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/CreateDataset", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datasetServiceV1Client) GetDataset(ctx context.Context, in *GetDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) { - out := new(Dataset) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/GetDataset", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datasetServiceV1Client) UpdateDataset(ctx context.Context, in *UpdateDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) { - out := new(Dataset) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/UpdateDataset", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datasetServiceV1Client) DeleteDataset(ctx context.Context, in *DeleteDatasetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/DeleteDataset", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datasetServiceV1Client) UndeleteDataset(ctx context.Context, in *UndeleteDatasetRequest, opts ...grpc.CallOption) (*Dataset, error) { - out := new(Dataset) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/UndeleteDataset", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datasetServiceV1Client) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datasetServiceV1Client) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *datasetServiceV1Client) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.DatasetServiceV1/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for DatasetServiceV1 service - -type DatasetServiceV1Server interface { - // Lists datasets within a project. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - ListDatasets(context.Context, *ListDatasetsRequest) (*ListDatasetsResponse, error) - // Creates a new dataset. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - CreateDataset(context.Context, *CreateDatasetRequest) (*Dataset, error) - // Gets a dataset by ID. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetDataset(context.Context, *GetDatasetRequest) (*Dataset, error) - // Updates a dataset. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This method supports patch semantics. - UpdateDataset(context.Context, *UpdateDatasetRequest) (*Dataset, error) - // Deletes a dataset and all of its contents (all read group sets, - // reference sets, variant sets, call sets, annotation sets, etc.) - // This is reversible (up to one week after the deletion) via - // the - // [datasets.undelete][google.genomics.v1.DatasetServiceV1.UndeleteDataset] - // operation. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteDataset(context.Context, *DeleteDatasetRequest) (*google_protobuf1.Empty, error) - // Undeletes a dataset by restoring a dataset which was deleted via this API. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This operation is only possible for a week after the deletion occurred. - UndeleteDataset(context.Context, *UndeleteDatasetRequest) (*Dataset, error) - // Sets the access control policy on the specified dataset. Replaces any - // existing policy. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // See <a href="/iam/docs/managing-policies#setting_a_policy">Setting a - // Policy</a> for more information. - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Gets the access control policy for the dataset. This is empty if the - // policy or resource does not exist. - // - // See <a href="/iam/docs/managing-policies#getting_a_policy">Getting a - // Policy</a> for more information. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Returns permissions that a caller has on the specified resource. - // See <a href="/iam/docs/managing-policies#testing_permissions">Testing - // Permissions</a> for more information. - // - // For the definitions of datasets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -func RegisterDatasetServiceV1Server(s *grpc.Server, srv DatasetServiceV1Server) { - s.RegisterService(&_DatasetServiceV1_serviceDesc, srv) -} - -func _DatasetServiceV1_ListDatasets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDatasetsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).ListDatasets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/ListDatasets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).ListDatasets(ctx, req.(*ListDatasetsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatasetServiceV1_CreateDataset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateDatasetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).CreateDataset(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/CreateDataset", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).CreateDataset(ctx, req.(*CreateDatasetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatasetServiceV1_GetDataset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDatasetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).GetDataset(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/GetDataset", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).GetDataset(ctx, req.(*GetDatasetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatasetServiceV1_UpdateDataset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateDatasetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).UpdateDataset(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/UpdateDataset", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).UpdateDataset(ctx, req.(*UpdateDatasetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatasetServiceV1_DeleteDataset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteDatasetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).DeleteDataset(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/DeleteDataset", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).DeleteDataset(ctx, req.(*DeleteDatasetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatasetServiceV1_UndeleteDataset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UndeleteDatasetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).UndeleteDataset(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/UndeleteDataset", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).UndeleteDataset(ctx, req.(*UndeleteDatasetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatasetServiceV1_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatasetServiceV1_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatasetServiceV1_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatasetServiceV1Server).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.DatasetServiceV1/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatasetServiceV1Server).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _DatasetServiceV1_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.genomics.v1.DatasetServiceV1", - HandlerType: (*DatasetServiceV1Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListDatasets", - Handler: _DatasetServiceV1_ListDatasets_Handler, - }, - { - MethodName: "CreateDataset", - Handler: _DatasetServiceV1_CreateDataset_Handler, - }, - { - MethodName: "GetDataset", - Handler: _DatasetServiceV1_GetDataset_Handler, - }, - { - MethodName: "UpdateDataset", - Handler: _DatasetServiceV1_UpdateDataset_Handler, - }, - { - MethodName: "DeleteDataset", - Handler: _DatasetServiceV1_DeleteDataset_Handler, - }, - { - MethodName: "UndeleteDataset", - Handler: _DatasetServiceV1_UndeleteDataset_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _DatasetServiceV1_SetIamPolicy_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _DatasetServiceV1_GetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _DatasetServiceV1_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/genomics/v1/datasets.proto", -} - -func init() { proto.RegisterFile("google/genomics/v1/datasets.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 786 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xd1, 0x4e, 0x13, 0x4d, - 0x14, 0xce, 0x16, 0xfe, 0x1f, 0x7a, 0xa0, 0xa0, 0x63, 0xc5, 0xda, 0x8a, 0x96, 0x8d, 0x42, 0xad, - 0xba, 0x4d, 0x6b, 0x08, 0x49, 0x89, 0x37, 0x88, 0x12, 0x12, 0x49, 0x9a, 0x02, 0x5e, 0x78, 0xd3, - 0x0c, 0xdd, 0xa1, 0x8e, 0x74, 0x77, 0xd6, 0x9d, 0x29, 0x28, 0xc8, 0x0d, 0x77, 0x5c, 0xfb, 0x00, - 0x26, 0xde, 0xf9, 0x3c, 0xbe, 0x82, 0x0f, 0xe1, 0xa5, 0x99, 0xd9, 0xd9, 0x76, 0xdb, 0x2e, 0x05, - 0x8c, 0x77, 0xdb, 0x73, 0xbe, 0x73, 0xbe, 0xef, 0xcc, 0xf9, 0x76, 0xba, 0xb0, 0xd0, 0x62, 0xac, - 0xd5, 0x26, 0xa5, 0x16, 0x71, 0x99, 0x43, 0x9b, 0xbc, 0x74, 0x58, 0x2e, 0xd9, 0x58, 0x60, 0x4e, - 0x04, 0xb7, 0x3c, 0x9f, 0x09, 0x86, 0x50, 0x00, 0xb1, 0x42, 0x88, 0x75, 0x58, 0xce, 0xde, 0xd3, - 0x65, 0xd8, 0xa3, 0x25, 0xec, 0xba, 0x4c, 0x60, 0x41, 0x99, 0xab, 0x2b, 0xb2, 0xf7, 0x75, 0x96, - 0x62, 0x47, 0xf6, 0xa3, 0xd8, 0x69, 0x78, 0xac, 0x4d, 0x9b, 0x9f, 0x75, 0x3e, 0xdb, 0x9f, 0xef, - 0xcb, 0xe5, 0x74, 0x4e, 0xfd, 0xda, 0xeb, 0xec, 0x97, 0x88, 0xe3, 0x89, 0x30, 0x99, 0x1f, 0x4c, - 0xee, 0x53, 0xd2, 0xb6, 0x1b, 0x0e, 0xe6, 0x07, 0x1a, 0xf1, 0x60, 0x10, 0x21, 0xa8, 0x43, 0xb8, - 0xc0, 0x8e, 0x17, 0x00, 0xcc, 0x73, 0x03, 0x26, 0xd6, 0x83, 0x01, 0xd1, 0x0c, 0x24, 0xa8, 0x9d, - 0x31, 0xf2, 0x46, 0x21, 0x59, 0x4f, 0x50, 0x1b, 0xcd, 0x03, 0x78, 0x3e, 0xfb, 0x40, 0x9a, 0xa2, - 0x41, 0xed, 0x4c, 0x42, 0xc5, 0x93, 0x3a, 0xb2, 0x69, 0x23, 0x04, 0xe3, 0x2e, 0x76, 0x48, 0x66, - 0x4c, 0x25, 0xd4, 0x33, 0x5a, 0x85, 0xa9, 0xa6, 0x4f, 0xb0, 0x20, 0x0d, 0x49, 0x94, 0x19, 0xcf, - 0x1b, 0x85, 0xa9, 0x4a, 0xd6, 0xd2, 0x47, 0x16, 0xaa, 0xb0, 0x76, 0x42, 0x15, 0x75, 0x08, 0xe0, - 0x32, 0x60, 0x7a, 0x70, 0xeb, 0x0d, 0xe5, 0x42, 0xcb, 0xe1, 0x75, 0xf2, 0xb1, 0x43, 0xb8, 0x18, - 0x90, 0x61, 0x0c, 0xca, 0xc8, 0x41, 0xd2, 0xc3, 0x2d, 0xd2, 0xe0, 0xf4, 0x98, 0x28, 0x91, 0xff, - 0xd5, 0x27, 0x65, 0x60, 0x9b, 0x1e, 0x13, 0x55, 0x2b, 0x93, 0x82, 0x1d, 0x10, 0x57, 0x2b, 0x55, - 0xf0, 0x1d, 0x19, 0x30, 0x8f, 0x20, 0xdd, 0xcf, 0xc8, 0x3d, 0xe6, 0x72, 0x82, 0x56, 0x60, 0x32, - 0xdc, 0x7a, 0xc6, 0xc8, 0x8f, 0x15, 0xa6, 0x2a, 0x39, 0x6b, 0x78, 0xed, 0x96, 0xae, 0xab, 0x77, - 0xc1, 0x68, 0x11, 0x66, 0x5d, 0xf2, 0x49, 0x34, 0x22, 0xa4, 0xc1, 0xb9, 0xa5, 0x64, 0xb8, 0xd6, - 0x25, 0xde, 0x82, 0xf4, 0x4b, 0x35, 0x78, 0xd8, 0x42, 0xcf, 0xba, 0x0c, 0x13, 0xba, 0x97, 0x1a, - 0xf4, 0x12, 0xde, 0x10, 0x6b, 0xfe, 0x30, 0x20, 0xbd, 0xeb, 0xd9, 0xc3, 0xfd, 0xe6, 0x01, 0x34, - 0x26, 0x72, 0x76, 0x3a, 0xb2, 0x69, 0x47, 0xe9, 0x12, 0x57, 0xa7, 0x93, 0x5b, 0xee, 0x28, 0x36, - 0x65, 0x35, 0x75, 0xac, 0x71, 0x5b, 0x7e, 0x2d, 0xdd, 0xb8, 0x85, 0xf9, 0x41, 0x1d, 0x02, 0xb8, - 0x7c, 0x36, 0x97, 0x21, 0xbd, 0x4e, 0xda, 0xe4, 0x9a, 0x52, 0xcd, 0x15, 0x98, 0xdb, 0x75, 0xed, - 0xbf, 0x28, 0xac, 0xc0, 0xcd, 0x0d, 0x22, 0xae, 0x55, 0x53, 0xf9, 0x96, 0x84, 0x1b, 0xba, 0x62, - 0x9b, 0xf8, 0x87, 0xb4, 0x49, 0xde, 0x96, 0xd1, 0x11, 0x4c, 0x47, 0xcd, 0x82, 0x96, 0xe2, 0xce, - 0x2a, 0xc6, 0xc0, 0xd9, 0xc2, 0xe5, 0xc0, 0xc0, 0x77, 0x66, 0xfa, 0xec, 0xe7, 0xaf, 0xaf, 0x89, - 0x19, 0x34, 0x1d, 0xbd, 0x77, 0x50, 0x07, 0x52, 0x7d, 0x66, 0x41, 0xb1, 0x0d, 0xe3, 0xfc, 0x94, - 0x1d, 0xb5, 0x4f, 0x73, 0x5e, 0xb1, 0xdd, 0x31, 0xfb, 0xd8, 0xaa, 0xdd, 0x2d, 0x73, 0x80, 0xde, - 0xc1, 0xa1, 0x47, 0x71, 0x9d, 0x86, 0x0e, 0x76, 0x34, 0xe1, 0x82, 0x22, 0xcc, 0xa1, 0xbb, 0x51, - 0xc2, 0xd2, 0x49, 0x6f, 0x13, 0xa7, 0xe8, 0xcc, 0x80, 0x54, 0x9f, 0x93, 0xe3, 0x87, 0x8d, 0x33, - 0xfb, 0x68, 0xee, 0xa2, 0xe2, 0x7e, 0x58, 0xb9, 0x98, 0xbb, 0x37, 0xb9, 0x80, 0x54, 0x9f, 0x45, - 0xe3, 0x35, 0xc4, 0xb9, 0x38, 0x3b, 0x37, 0xf4, 0x16, 0xbc, 0x92, 0x17, 0x76, 0x38, 0x7a, 0x71, - 0xc4, 0xe8, 0xe7, 0x06, 0xcc, 0x0e, 0x58, 0x1c, 0x15, 0x63, 0x87, 0x8f, 0x7d, 0x0f, 0x46, 0x8f, - 0xff, 0x4c, 0xf1, 0x2f, 0x99, 0xe6, 0xc5, 0xe3, 0x77, 0x74, 0xdb, 0xaa, 0x51, 0x44, 0x5f, 0x60, - 0x7a, 0x9b, 0x88, 0x4d, 0xec, 0xd4, 0xd4, 0x9f, 0x11, 0x32, 0xc3, 0xde, 0x14, 0x3b, 0xb2, 0x6d, - 0x34, 0x19, 0xf2, 0xdf, 0x1e, 0xc0, 0x04, 0x59, 0xb3, 0xac, 0x98, 0x9f, 0x98, 0x8b, 0x92, 0xf9, - 0xc4, 0x27, 0x9c, 0x75, 0xfc, 0x26, 0x79, 0xd1, 0xd5, 0x50, 0x3c, 0xad, 0xf2, 0x48, 0x37, 0xcd, - 0xbe, 0x31, 0x8a, 0x7d, 0xe3, 0x9f, 0xb2, 0xb7, 0x06, 0xd8, 0xbf, 0x1b, 0x80, 0x76, 0x08, 0x57, - 0x41, 0xe2, 0x3b, 0x94, 0x73, 0xf9, 0x5f, 0xde, 0xf3, 0x80, 0x26, 0x18, 0x86, 0x84, 0x52, 0x1e, - 0x5f, 0x01, 0xa9, 0x5f, 0xf8, 0x15, 0x25, 0xaf, 0x6c, 0x3e, 0xbd, 0x58, 0x9e, 0x18, 0xaa, 0xae, - 0x1a, 0xc5, 0xb5, 0xf7, 0x30, 0xd7, 0x64, 0x4e, 0xcc, 0xc6, 0xd7, 0x52, 0xe1, 0xad, 0x52, 0x93, - 0x0e, 0xac, 0x19, 0xef, 0xaa, 0x21, 0x88, 0xb5, 0xb1, 0xdb, 0xb2, 0x98, 0xdf, 0x92, 0x9f, 0x37, - 0xca, 0x9f, 0xa5, 0x20, 0x85, 0x3d, 0xca, 0xa3, 0x9f, 0x3c, 0xab, 0xe1, 0xf3, 0x6f, 0xc3, 0xd8, - 0xfb, 0x5f, 0x21, 0x9f, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x87, 0x48, 0x07, 0xbb, 0x1b, 0x09, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/operations.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/operations.pb.go deleted file mode 100644 index 194e9017..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/operations.pb.go +++ /dev/null @@ -1,189 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/operations.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf5 "github.com/golang/protobuf/ptypes/any" -import google_protobuf6 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Metadata describing an [Operation][google.longrunning.Operation]. -type OperationMetadata struct { - // The Google Cloud Project in which the job is scoped. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The time at which the job was submitted to the Genomics service. - CreateTime *google_protobuf6.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The time at which the job began to run. - StartTime *google_protobuf6.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The time at which the job stopped running. - EndTime *google_protobuf6.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // The original request that started the operation. Note that this will be in - // current version of the API. If the operation was started with v1beta2 API - // and a GetOperation is performed on v1 API, a v1 request will be returned. - Request *google_protobuf5.Any `protobuf:"bytes,5,opt,name=request" json:"request,omitempty"` - // Optional event messages that were generated during the job's execution. - // This also contains any warnings that were generated during import - // or export. - Events []*OperationEvent `protobuf:"bytes,6,rep,name=events" json:"events,omitempty"` - // This field is deprecated. Use `labels` instead. Optionally provided by the - // caller when submitting the request that creates the operation. - ClientId string `protobuf:"bytes,7,opt,name=client_id,json=clientId" json:"client_id,omitempty"` - // Runtime metadata on this Operation. - RuntimeMetadata *google_protobuf5.Any `protobuf:"bytes,8,opt,name=runtime_metadata,json=runtimeMetadata" json:"runtime_metadata,omitempty"` - // Optionally provided by the caller when submitting the request that creates - // the operation. - Labels map[string]string `protobuf:"bytes,9,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *OperationMetadata) Reset() { *m = OperationMetadata{} } -func (m *OperationMetadata) String() string { return proto.CompactTextString(m) } -func (*OperationMetadata) ProtoMessage() {} -func (*OperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *OperationMetadata) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *OperationMetadata) GetCreateTime() *google_protobuf6.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *OperationMetadata) GetStartTime() *google_protobuf6.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *OperationMetadata) GetEndTime() *google_protobuf6.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *OperationMetadata) GetRequest() *google_protobuf5.Any { - if m != nil { - return m.Request - } - return nil -} - -func (m *OperationMetadata) GetEvents() []*OperationEvent { - if m != nil { - return m.Events - } - return nil -} - -func (m *OperationMetadata) GetClientId() string { - if m != nil { - return m.ClientId - } - return "" -} - -func (m *OperationMetadata) GetRuntimeMetadata() *google_protobuf5.Any { - if m != nil { - return m.RuntimeMetadata - } - return nil -} - -func (m *OperationMetadata) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// An event that occurred during an [Operation][google.longrunning.Operation]. -type OperationEvent struct { - // Optional time of when event started. - StartTime *google_protobuf6.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Optional time of when event finished. An event can have a start time and no - // finish time. If an event has a finish time, there must be a start time. - EndTime *google_protobuf6.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Required description of event. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (m *OperationEvent) Reset() { *m = OperationEvent{} } -func (m *OperationEvent) String() string { return proto.CompactTextString(m) } -func (*OperationEvent) ProtoMessage() {} -func (*OperationEvent) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *OperationEvent) GetStartTime() *google_protobuf6.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *OperationEvent) GetEndTime() *google_protobuf6.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *OperationEvent) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func init() { - proto.RegisterType((*OperationMetadata)(nil), "google.genomics.v1.OperationMetadata") - proto.RegisterType((*OperationEvent)(nil), "google.genomics.v1.OperationEvent") -} - -func init() { proto.RegisterFile("google/genomics/v1/operations.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 456 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0x41, 0x6f, 0xd3, 0x30, - 0x14, 0xc7, 0xe5, 0x76, 0x6b, 0x9b, 0x17, 0x89, 0x0d, 0x6b, 0x42, 0xa1, 0x80, 0xa8, 0xca, 0xa5, - 0x27, 0x47, 0x1d, 0x42, 0x62, 0xdd, 0x01, 0x31, 0x69, 0x87, 0x4a, 0x20, 0xa6, 0x88, 0x13, 0x97, - 0xca, 0x4d, 0x1e, 0x51, 0x46, 0x62, 0x07, 0xdb, 0xad, 0xd4, 0xef, 0xc3, 0x17, 0xe0, 0xdb, 0x71, - 0x44, 0xb1, 0x9d, 0x2a, 0x6c, 0x68, 0x45, 0xdc, 0xec, 0xf7, 0xfe, 0x3f, 0xfb, 0x9f, 0xf7, 0x8f, - 0xe1, 0x55, 0x2e, 0x65, 0x5e, 0x62, 0x9c, 0xa3, 0x90, 0x55, 0x91, 0xea, 0x78, 0x3b, 0x8f, 0x65, - 0x8d, 0x8a, 0x9b, 0x42, 0x0a, 0xcd, 0x6a, 0x25, 0x8d, 0xa4, 0xd4, 0x89, 0x58, 0x2b, 0x62, 0xdb, - 0xf9, 0xf8, 0xb9, 0x07, 0x79, 0x5d, 0xc4, 0x5c, 0x08, 0x69, 0xba, 0xc4, 0xf8, 0xa9, 0xef, 0xda, - 0xdd, 0x7a, 0xf3, 0x35, 0xe6, 0x62, 0xe7, 0x5b, 0x2f, 0xef, 0xb6, 0x4c, 0x51, 0xa1, 0x36, 0xbc, - 0xaa, 0x9d, 0x60, 0xfa, 0xf3, 0x08, 0x1e, 0x7f, 0x6a, 0x2d, 0x7c, 0x44, 0xc3, 0x33, 0x6e, 0x38, - 0x7d, 0x01, 0x50, 0x2b, 0x79, 0x8b, 0xa9, 0x59, 0x15, 0x59, 0x44, 0x26, 0x64, 0x16, 0x24, 0x81, - 0xaf, 0x2c, 0x33, 0x7a, 0x09, 0x61, 0xaa, 0x90, 0x1b, 0x5c, 0x35, 0xc7, 0x45, 0xbd, 0x09, 0x99, - 0x85, 0xe7, 0x63, 0xe6, 0x8d, 0xb7, 0x77, 0xb1, 0xcf, 0xed, 0x5d, 0x09, 0x38, 0x79, 0x53, 0xa0, - 0x17, 0x00, 0xda, 0x70, 0x65, 0x1c, 0xdb, 0x3f, 0xc8, 0x06, 0x56, 0x6d, 0xd1, 0x37, 0x30, 0x42, - 0x91, 0x39, 0xf0, 0xe8, 0x20, 0x38, 0x44, 0x91, 0x59, 0x8c, 0xc1, 0x50, 0xe1, 0xf7, 0x0d, 0x6a, - 0x13, 0x1d, 0x5b, 0xea, 0xec, 0x1e, 0xf5, 0x5e, 0xec, 0x92, 0x56, 0x44, 0x17, 0x30, 0xc0, 0x2d, - 0x0a, 0xa3, 0xa3, 0xc1, 0xa4, 0x3f, 0x0b, 0xcf, 0xa7, 0xec, 0x7e, 0x24, 0x6c, 0x3f, 0xb4, 0xeb, - 0x46, 0x9a, 0x78, 0x82, 0x3e, 0x83, 0x20, 0x2d, 0x0b, 0x14, 0x76, 0x70, 0x43, 0x3b, 0xb8, 0x91, - 0x2b, 0x2c, 0x33, 0xfa, 0x0e, 0x4e, 0xd5, 0x46, 0x34, 0xf6, 0x57, 0x95, 0x1f, 0x75, 0x34, 0x7a, - 0xc0, 0xd1, 0x89, 0x57, 0xef, 0x73, 0x59, 0xc2, 0xa0, 0xe4, 0x6b, 0x2c, 0x75, 0x14, 0x58, 0x67, - 0xf3, 0x07, 0x9d, 0xb5, 0x18, 0xfb, 0x60, 0x99, 0x6b, 0x61, 0xd4, 0x2e, 0xf1, 0x07, 0x8c, 0x2f, - 0x20, 0xec, 0x94, 0xe9, 0x29, 0xf4, 0xbf, 0xe1, 0xce, 0x47, 0xdd, 0x2c, 0xe9, 0x19, 0x1c, 0x6f, - 0x79, 0xb9, 0x71, 0xf1, 0x06, 0x89, 0xdb, 0x2c, 0x7a, 0x6f, 0xc9, 0xf4, 0x07, 0x81, 0x47, 0x7f, - 0x7e, 0xfe, 0x9d, 0x50, 0xc9, 0xff, 0x86, 0xda, 0xfb, 0xf7, 0x50, 0x27, 0x10, 0x66, 0xa8, 0x53, - 0x55, 0xd4, 0x8d, 0x0b, 0xfb, 0x1f, 0x05, 0x49, 0xb7, 0x74, 0x75, 0x0b, 0x4f, 0x52, 0x59, 0xfd, - 0x65, 0x42, 0x57, 0x27, 0x7b, 0xf7, 0xfa, 0xa6, 0xb9, 0xe2, 0x86, 0x7c, 0x59, 0xb4, 0x32, 0x59, - 0x72, 0x91, 0x33, 0xa9, 0xf2, 0xe6, 0x95, 0x5a, 0x03, 0xb1, 0x6b, 0xf1, 0xba, 0xd0, 0xdd, 0x97, - 0x7b, 0xd9, 0xae, 0x7f, 0x11, 0xb2, 0x1e, 0x58, 0xe5, 0xeb, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, - 0x6a, 0xf6, 0xa8, 0x9a, 0xe2, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/position.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/position.pb.go deleted file mode 100644 index 413c6844..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/position.pb.go +++ /dev/null @@ -1,78 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/position.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// An abstraction for referring to a genomic position, in relation to some -// already known reference. For now, represents a genomic position as a -// reference name, a base number on that reference (0-based), and a -// determination of forward or reverse strand. -type Position struct { - // The name of the reference in whatever reference set is being used. - ReferenceName string `protobuf:"bytes,1,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The 0-based offset from the start of the forward strand for that reference. - Position int64 `protobuf:"varint,2,opt,name=position" json:"position,omitempty"` - // Whether this position is on the reverse strand, as opposed to the forward - // strand. - ReverseStrand bool `protobuf:"varint,3,opt,name=reverse_strand,json=reverseStrand" json:"reverse_strand,omitempty"` -} - -func (m *Position) Reset() { *m = Position{} } -func (m *Position) String() string { return proto.CompactTextString(m) } -func (*Position) ProtoMessage() {} -func (*Position) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *Position) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *Position) GetPosition() int64 { - if m != nil { - return m.Position - } - return 0 -} - -func (m *Position) GetReverseStrand() bool { - if m != nil { - return m.ReverseStrand - } - return false -} - -func init() { - proto.RegisterType((*Position)(nil), "google.genomics.v1.Position") -} - -func init() { proto.RegisterFile("google/genomics/v1/position.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 223 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0x41, 0x4b, 0x03, 0x31, - 0x14, 0x84, 0x89, 0x05, 0x59, 0x03, 0xf5, 0xb0, 0x07, 0x59, 0x8a, 0x87, 0x55, 0x10, 0xf6, 0x94, - 0x50, 0xbc, 0xe9, 0xad, 0x3f, 0x40, 0x96, 0x7a, 0xf3, 0x52, 0x9e, 0xeb, 0x33, 0x06, 0xba, 0xef, - 0x85, 0x24, 0xec, 0x6f, 0xf7, 0x28, 0x49, 0x9a, 0x22, 0xf4, 0x96, 0x4c, 0x66, 0x26, 0x1f, 0x23, - 0x1f, 0x0c, 0xb3, 0x39, 0xa2, 0x36, 0x48, 0x3c, 0xdb, 0x29, 0xe8, 0x65, 0xab, 0x1d, 0x07, 0x1b, - 0x2d, 0x93, 0x72, 0x9e, 0x23, 0xb7, 0x6d, 0xb1, 0xa8, 0x6a, 0x51, 0xcb, 0x76, 0x73, 0x7f, 0x8a, - 0x81, 0xb3, 0x1a, 0x88, 0x38, 0x42, 0x0a, 0x84, 0x92, 0x78, 0x8c, 0xb2, 0x19, 0x4f, 0x1d, 0xed, - 0x93, 0xbc, 0xf5, 0xf8, 0x8d, 0x1e, 0x69, 0xc2, 0x03, 0xc1, 0x8c, 0x9d, 0xe8, 0xc5, 0x70, 0xb3, - 0x5f, 0x9f, 0xd5, 0x37, 0x98, 0xb1, 0xdd, 0xc8, 0xa6, 0x7e, 0xdb, 0x5d, 0xf5, 0x62, 0x58, 0xed, - 0xcf, 0xf7, 0x52, 0xb1, 0xa0, 0x0f, 0x78, 0x08, 0xd1, 0x03, 0x7d, 0x75, 0xab, 0x5e, 0x0c, 0x4d, - 0xaa, 0xc8, 0xea, 0x7b, 0x16, 0x77, 0x3f, 0xf2, 0x6e, 0xe2, 0x59, 0x5d, 0xd2, 0xee, 0xd6, 0x95, - 0x66, 0x4c, 0x78, 0xa3, 0xf8, 0x78, 0xa9, 0x26, 0x3e, 0x02, 0x19, 0xc5, 0xde, 0xa4, 0x01, 0x32, - 0xbc, 0x2e, 0x4f, 0xe0, 0x6c, 0xf8, 0x3f, 0xca, 0x6b, 0x3d, 0xff, 0x0a, 0xf1, 0x79, 0x9d, 0x9d, - 0xcf, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x5c, 0xc6, 0x22, 0xea, 0x3d, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/range.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/range.pb.go deleted file mode 100644 index 4062d6ea..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/range.pb.go +++ /dev/null @@ -1,75 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/range.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A 0-based half-open genomic coordinate range for search requests. -type Range struct { - // The reference sequence name, for example `chr1`, - // `1`, or `chrX`. - ReferenceName string `protobuf:"bytes,1,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The start position of the range on the reference, 0-based inclusive. - Start int64 `protobuf:"varint,2,opt,name=start" json:"start,omitempty"` - // The end position of the range on the reference, 0-based exclusive. - End int64 `protobuf:"varint,3,opt,name=end" json:"end,omitempty"` -} - -func (m *Range) Reset() { *m = Range{} } -func (m *Range) String() string { return proto.CompactTextString(m) } -func (*Range) ProtoMessage() {} -func (*Range) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -func (m *Range) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *Range) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *Range) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func init() { - proto.RegisterType((*Range)(nil), "google.genomics.v1.Range") -} - -func init() { proto.RegisterFile("google/genomics/v1/range.proto", fileDescriptor5) } - -var fileDescriptor5 = []byte{ - // 209 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x4f, 0x4d, 0x4b, 0xc4, 0x30, - 0x10, 0x25, 0x96, 0x15, 0x0c, 0x28, 0x12, 0x44, 0x8a, 0x88, 0x2c, 0x82, 0xb0, 0xa7, 0x84, 0xe2, - 0x4d, 0x6f, 0xfd, 0x01, 0x52, 0x7a, 0xf0, 0xe0, 0x45, 0xc6, 0x3a, 0x86, 0x40, 0x33, 0x53, 0x92, - 0xd0, 0xdf, 0xee, 0x51, 0x92, 0x58, 0x11, 0xf6, 0x36, 0x79, 0x1f, 0x79, 0xef, 0xc9, 0x3b, 0xcb, - 0x6c, 0x67, 0x34, 0x16, 0x89, 0xbd, 0x9b, 0xa2, 0x59, 0x3b, 0x13, 0x80, 0x2c, 0xea, 0x25, 0x70, - 0x62, 0xa5, 0x2a, 0xaf, 0x37, 0x5e, 0xaf, 0xdd, 0xcd, 0xed, 0xaf, 0x07, 0x16, 0x67, 0x80, 0x88, - 0x13, 0x24, 0xc7, 0x14, 0xab, 0xe3, 0xfe, 0x55, 0xee, 0xc6, 0xfc, 0x81, 0x7a, 0x90, 0x17, 0x01, - 0xbf, 0x30, 0x20, 0x4d, 0xf8, 0x4e, 0xe0, 0xb1, 0x15, 0x7b, 0x71, 0x38, 0x1b, 0xcf, 0xff, 0xd0, - 0x17, 0xf0, 0xa8, 0xae, 0xe4, 0x2e, 0x26, 0x08, 0xa9, 0x3d, 0xd9, 0x8b, 0x43, 0x33, 0xd6, 0x87, - 0xba, 0x94, 0x0d, 0xd2, 0x67, 0xdb, 0x14, 0x2c, 0x9f, 0x3d, 0xca, 0xeb, 0x89, 0xbd, 0x3e, 0xee, - 0xd3, 0xcb, 0x92, 0x37, 0xe4, 0xf4, 0x41, 0xbc, 0x3d, 0x6d, 0x0a, 0x9e, 0x81, 0xac, 0xe6, 0x60, - 0xf3, 0xb8, 0xd2, 0xcd, 0x54, 0x0a, 0x16, 0x17, 0xff, 0x0f, 0x7e, 0xde, 0xee, 0x6f, 0x21, 0x3e, - 0x4e, 0x8b, 0xf2, 0xf1, 0x27, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x3e, 0xf1, 0x62, 0x19, 0x01, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/readalignment.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/readalignment.pb.go deleted file mode 100644 index f766a300..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/readalignment.pb.go +++ /dev/null @@ -1,393 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/readalignment.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/struct" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A linear alignment can be represented by one CIGAR string. Describes the -// mapped position and local alignment of the read to the reference. -type LinearAlignment struct { - // The position of this alignment. - Position *Position `protobuf:"bytes,1,opt,name=position" json:"position,omitempty"` - // The mapping quality of this alignment. Represents how likely - // the read maps to this position as opposed to other locations. - // - // Specifically, this is -10 log10 Pr(mapping position is wrong), rounded to - // the nearest integer. - MappingQuality int32 `protobuf:"varint,2,opt,name=mapping_quality,json=mappingQuality" json:"mapping_quality,omitempty"` - // Represents the local alignment of this sequence (alignment matches, indels, - // etc) against the reference. - Cigar []*CigarUnit `protobuf:"bytes,3,rep,name=cigar" json:"cigar,omitempty"` -} - -func (m *LinearAlignment) Reset() { *m = LinearAlignment{} } -func (m *LinearAlignment) String() string { return proto.CompactTextString(m) } -func (*LinearAlignment) ProtoMessage() {} -func (*LinearAlignment) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} } - -func (m *LinearAlignment) GetPosition() *Position { - if m != nil { - return m.Position - } - return nil -} - -func (m *LinearAlignment) GetMappingQuality() int32 { - if m != nil { - return m.MappingQuality - } - return 0 -} - -func (m *LinearAlignment) GetCigar() []*CigarUnit { - if m != nil { - return m.Cigar - } - return nil -} - -// A read alignment describes a linear alignment of a string of DNA to a -// [reference sequence][google.genomics.v1.Reference], in addition to metadata -// about the fragment (the molecule of DNA sequenced) and the read (the bases -// which were read by the sequencer). A read is equivalent to a line in a SAM -// file. A read belongs to exactly one read group and exactly one -// [read group set][google.genomics.v1.ReadGroupSet]. -// -// For more genomics resource definitions, see [Fundamentals of Google -// Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) -// -// ### Reverse-stranded reads -// -// Mapped reads (reads having a non-null `alignment`) can be aligned to either -// the forward or the reverse strand of their associated reference. Strandedness -// of a mapped read is encoded by `alignment.position.reverseStrand`. -// -// If we consider the reference to be a forward-stranded coordinate space of -// `[0, reference.length)` with `0` as the left-most position and -// `reference.length` as the right-most position, reads are always aligned left -// to right. That is, `alignment.position.position` always refers to the -// left-most reference coordinate and `alignment.cigar` describes the alignment -// of this read to the reference from left to right. All per-base fields such as -// `alignedSequence` and `alignedQuality` share this same left-to-right -// orientation; this is true of reads which are aligned to either strand. For -// reverse-stranded reads, this means that `alignedSequence` is the reverse -// complement of the bases that were originally reported by the sequencing -// machine. -// -// ### Generating a reference-aligned sequence string -// -// When interacting with mapped reads, it's often useful to produce a string -// representing the local alignment of the read to reference. The following -// pseudocode demonstrates one way of doing this: -// -// out = "" -// offset = 0 -// for c in read.alignment.cigar { -// switch c.operation { -// case "ALIGNMENT_MATCH", "SEQUENCE_MATCH", "SEQUENCE_MISMATCH": -// out += read.alignedSequence[offset:offset+c.operationLength] -// offset += c.operationLength -// break -// case "CLIP_SOFT", "INSERT": -// offset += c.operationLength -// break -// case "PAD": -// out += repeat("*", c.operationLength) -// break -// case "DELETE": -// out += repeat("-", c.operationLength) -// break -// case "SKIP": -// out += repeat(" ", c.operationLength) -// break -// case "CLIP_HARD": -// break -// } -// } -// return out -// -// ### Converting to SAM's CIGAR string -// -// The following pseudocode generates a SAM CIGAR string from the -// `cigar` field. Note that this is a lossy conversion -// (`cigar.referenceSequence` is lost). -// -// cigarMap = { -// "ALIGNMENT_MATCH": "M", -// "INSERT": "I", -// "DELETE": "D", -// "SKIP": "N", -// "CLIP_SOFT": "S", -// "CLIP_HARD": "H", -// "PAD": "P", -// "SEQUENCE_MATCH": "=", -// "SEQUENCE_MISMATCH": "X", -// } -// cigarStr = "" -// for c in read.alignment.cigar { -// cigarStr += c.operationLength + cigarMap[c.operation] -// } -// return cigarStr -type Read struct { - // The server-generated read ID, unique across all reads. This is different - // from the `fragmentName`. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The ID of the read group this read belongs to. A read belongs to exactly - // one read group. This is a server-generated ID which is distinct from SAM's - // RG tag (for that value, see - // [ReadGroup.name][google.genomics.v1.ReadGroup.name]). - ReadGroupId string `protobuf:"bytes,2,opt,name=read_group_id,json=readGroupId" json:"read_group_id,omitempty"` - // The ID of the read group set this read belongs to. A read belongs to - // exactly one read group set. - ReadGroupSetId string `protobuf:"bytes,3,opt,name=read_group_set_id,json=readGroupSetId" json:"read_group_set_id,omitempty"` - // The fragment name. Equivalent to QNAME (query template name) in SAM. - FragmentName string `protobuf:"bytes,4,opt,name=fragment_name,json=fragmentName" json:"fragment_name,omitempty"` - // The orientation and the distance between reads from the fragment are - // consistent with the sequencing protocol (SAM flag 0x2). - ProperPlacement bool `protobuf:"varint,5,opt,name=proper_placement,json=properPlacement" json:"proper_placement,omitempty"` - // The fragment is a PCR or optical duplicate (SAM flag 0x400). - DuplicateFragment bool `protobuf:"varint,6,opt,name=duplicate_fragment,json=duplicateFragment" json:"duplicate_fragment,omitempty"` - // The observed length of the fragment, equivalent to TLEN in SAM. - FragmentLength int32 `protobuf:"varint,7,opt,name=fragment_length,json=fragmentLength" json:"fragment_length,omitempty"` - // The read number in sequencing. 0-based and less than numberReads. This - // field replaces SAM flag 0x40 and 0x80. - ReadNumber int32 `protobuf:"varint,8,opt,name=read_number,json=readNumber" json:"read_number,omitempty"` - // The number of reads in the fragment (extension to SAM flag 0x1). - NumberReads int32 `protobuf:"varint,9,opt,name=number_reads,json=numberReads" json:"number_reads,omitempty"` - // Whether this read did not pass filters, such as platform or vendor quality - // controls (SAM flag 0x200). - FailedVendorQualityChecks bool `protobuf:"varint,10,opt,name=failed_vendor_quality_checks,json=failedVendorQualityChecks" json:"failed_vendor_quality_checks,omitempty"` - // The linear alignment for this alignment record. This field is null for - // unmapped reads. - Alignment *LinearAlignment `protobuf:"bytes,11,opt,name=alignment" json:"alignment,omitempty"` - // Whether this alignment is secondary. Equivalent to SAM flag 0x100. - // A secondary alignment represents an alternative to the primary alignment - // for this read. Aligners may return secondary alignments if a read can map - // ambiguously to multiple coordinates in the genome. By convention, each read - // has one and only one alignment where both `secondaryAlignment` - // and `supplementaryAlignment` are false. - SecondaryAlignment bool `protobuf:"varint,12,opt,name=secondary_alignment,json=secondaryAlignment" json:"secondary_alignment,omitempty"` - // Whether this alignment is supplementary. Equivalent to SAM flag 0x800. - // Supplementary alignments are used in the representation of a chimeric - // alignment. In a chimeric alignment, a read is split into multiple - // linear alignments that map to different reference contigs. The first - // linear alignment in the read will be designated as the representative - // alignment; the remaining linear alignments will be designated as - // supplementary alignments. These alignments may have different mapping - // quality scores. In each linear alignment in a chimeric alignment, the read - // will be hard clipped. The `alignedSequence` and - // `alignedQuality` fields in the alignment record will only - // represent the bases for its respective linear alignment. - SupplementaryAlignment bool `protobuf:"varint,13,opt,name=supplementary_alignment,json=supplementaryAlignment" json:"supplementary_alignment,omitempty"` - // The bases of the read sequence contained in this alignment record, - // **without CIGAR operations applied** (equivalent to SEQ in SAM). - // `alignedSequence` and `alignedQuality` may be - // shorter than the full read sequence and quality. This will occur if the - // alignment is part of a chimeric alignment, or if the read was trimmed. When - // this occurs, the CIGAR for this read will begin/end with a hard clip - // operator that will indicate the length of the excised sequence. - AlignedSequence string `protobuf:"bytes,14,opt,name=aligned_sequence,json=alignedSequence" json:"aligned_sequence,omitempty"` - // The quality of the read sequence contained in this alignment record - // (equivalent to QUAL in SAM). - // `alignedSequence` and `alignedQuality` may be shorter than the full read - // sequence and quality. This will occur if the alignment is part of a - // chimeric alignment, or if the read was trimmed. When this occurs, the CIGAR - // for this read will begin/end with a hard clip operator that will indicate - // the length of the excised sequence. - AlignedQuality []int32 `protobuf:"varint,15,rep,packed,name=aligned_quality,json=alignedQuality" json:"aligned_quality,omitempty"` - // The mapping of the primary alignment of the - // `(readNumber+1)%numberReads` read in the fragment. It replaces - // mate position and mate strand in SAM. - NextMatePosition *Position `protobuf:"bytes,16,opt,name=next_mate_position,json=nextMatePosition" json:"next_mate_position,omitempty"` - // A map of additional read alignment information. This must be of the form - // map<string, string[]> (string key mapping to a list of string values). - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,17,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Read) Reset() { *m = Read{} } -func (m *Read) String() string { return proto.CompactTextString(m) } -func (*Read) ProtoMessage() {} -func (*Read) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} } - -func (m *Read) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Read) GetReadGroupId() string { - if m != nil { - return m.ReadGroupId - } - return "" -} - -func (m *Read) GetReadGroupSetId() string { - if m != nil { - return m.ReadGroupSetId - } - return "" -} - -func (m *Read) GetFragmentName() string { - if m != nil { - return m.FragmentName - } - return "" -} - -func (m *Read) GetProperPlacement() bool { - if m != nil { - return m.ProperPlacement - } - return false -} - -func (m *Read) GetDuplicateFragment() bool { - if m != nil { - return m.DuplicateFragment - } - return false -} - -func (m *Read) GetFragmentLength() int32 { - if m != nil { - return m.FragmentLength - } - return 0 -} - -func (m *Read) GetReadNumber() int32 { - if m != nil { - return m.ReadNumber - } - return 0 -} - -func (m *Read) GetNumberReads() int32 { - if m != nil { - return m.NumberReads - } - return 0 -} - -func (m *Read) GetFailedVendorQualityChecks() bool { - if m != nil { - return m.FailedVendorQualityChecks - } - return false -} - -func (m *Read) GetAlignment() *LinearAlignment { - if m != nil { - return m.Alignment - } - return nil -} - -func (m *Read) GetSecondaryAlignment() bool { - if m != nil { - return m.SecondaryAlignment - } - return false -} - -func (m *Read) GetSupplementaryAlignment() bool { - if m != nil { - return m.SupplementaryAlignment - } - return false -} - -func (m *Read) GetAlignedSequence() string { - if m != nil { - return m.AlignedSequence - } - return "" -} - -func (m *Read) GetAlignedQuality() []int32 { - if m != nil { - return m.AlignedQuality - } - return nil -} - -func (m *Read) GetNextMatePosition() *Position { - if m != nil { - return m.NextMatePosition - } - return nil -} - -func (m *Read) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -func init() { - proto.RegisterType((*LinearAlignment)(nil), "google.genomics.v1.LinearAlignment") - proto.RegisterType((*Read)(nil), "google.genomics.v1.Read") -} - -func init() { proto.RegisterFile("google/genomics/v1/readalignment.proto", fileDescriptor6) } - -var fileDescriptor6 = []byte{ - // 683 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xcd, 0x4e, 0xdb, 0x4a, - 0x14, 0xc7, 0xe5, 0x84, 0x70, 0xc9, 0x09, 0x24, 0x61, 0xae, 0xc4, 0xf5, 0x8d, 0xb8, 0xb7, 0x21, - 0x48, 0x6d, 0x58, 0xd4, 0x2e, 0x20, 0xb5, 0x88, 0x2e, 0x2a, 0x40, 0x6d, 0x45, 0x45, 0x51, 0x6a, - 0x54, 0x16, 0xdd, 0x58, 0x83, 0x7d, 0x62, 0x46, 0xd8, 0x33, 0xc6, 0x1e, 0x47, 0xcd, 0x23, 0xf5, - 0xdd, 0xfa, 0x00, 0x5d, 0x56, 0x33, 0xf6, 0x38, 0xd0, 0x66, 0xd1, 0x5d, 0xf2, 0x3f, 0xbf, 0xf3, - 0xe1, 0xf3, 0x31, 0xf0, 0x34, 0x12, 0x22, 0x8a, 0xd1, 0x8d, 0x90, 0x8b, 0x84, 0x05, 0xb9, 0x3b, - 0xdb, 0x77, 0x33, 0xa4, 0x21, 0x8d, 0x59, 0xc4, 0x13, 0xe4, 0xd2, 0x49, 0x33, 0x21, 0x05, 0x21, - 0x25, 0xe7, 0x18, 0xce, 0x99, 0xed, 0x0f, 0xb6, 0x2b, 0x5f, 0x9a, 0x32, 0x97, 0x72, 0x2e, 0x24, - 0x95, 0x4c, 0xf0, 0xbc, 0xf4, 0x18, 0xfc, 0xbf, 0x24, 0x72, 0xc0, 0x22, 0x9a, 0x55, 0xf6, 0x9d, - 0x25, 0xf6, 0x54, 0xe4, 0x4c, 0xc5, 0xa8, 0x10, 0x93, 0x40, 0xff, 0xbb, 0x29, 0xa6, 0x6e, 0x2e, - 0xb3, 0x22, 0xa8, 0x4a, 0x1a, 0x7d, 0xb3, 0xa0, 0x77, 0xc1, 0x38, 0xd2, 0xec, 0xc4, 0x14, 0x4b, - 0x8e, 0x60, 0xcd, 0xc4, 0xb0, 0xad, 0xa1, 0x35, 0xee, 0x1c, 0x6c, 0x3b, 0xbf, 0x57, 0xee, 0x4c, - 0x2a, 0xc6, 0xab, 0x69, 0xf2, 0x0c, 0x7a, 0x09, 0x4d, 0x53, 0xc6, 0x23, 0xff, 0xbe, 0xa0, 0x31, - 0x93, 0x73, 0xbb, 0x31, 0xb4, 0xc6, 0x2d, 0xaf, 0x5b, 0xc9, 0x9f, 0x4a, 0x95, 0x1c, 0x42, 0x4b, - 0x7f, 0x86, 0xdd, 0x1c, 0x36, 0xc7, 0x9d, 0x83, 0xff, 0x96, 0xc5, 0x3f, 0x53, 0xc0, 0x67, 0xce, - 0xa4, 0x57, 0xb2, 0xa3, 0xef, 0xab, 0xb0, 0xe2, 0x21, 0x0d, 0x49, 0x17, 0x1a, 0x2c, 0xd4, 0xa5, - 0xb5, 0xbd, 0x06, 0x0b, 0xc9, 0x08, 0x36, 0x54, 0xbb, 0xfd, 0x28, 0x13, 0x45, 0xea, 0xb3, 0x50, - 0x27, 0x6d, 0x7b, 0x1d, 0x25, 0xbe, 0x57, 0xda, 0x79, 0x48, 0xf6, 0x60, 0xf3, 0x01, 0x93, 0xa3, - 0x54, 0x5c, 0x53, 0x73, 0xdd, 0x9a, 0xbb, 0x42, 0x79, 0x1e, 0x92, 0x5d, 0xd8, 0x98, 0x66, 0x34, - 0x52, 0xbd, 0xf0, 0x39, 0x4d, 0xd0, 0x5e, 0xd1, 0xd8, 0xba, 0x11, 0x2f, 0x69, 0x82, 0x64, 0x0f, - 0xfa, 0x69, 0x26, 0x52, 0xcc, 0xfc, 0x34, 0xa6, 0x01, 0x2a, 0xdd, 0x6e, 0x0d, 0xad, 0xf1, 0x9a, - 0xd7, 0x2b, 0xf5, 0x89, 0x91, 0xc9, 0x73, 0x20, 0x61, 0x91, 0xc6, 0x2c, 0xa0, 0x12, 0x7d, 0x13, - 0xc4, 0x5e, 0xd5, 0xf0, 0x66, 0x6d, 0x79, 0x57, 0x19, 0x54, 0x13, 0xeb, 0xf4, 0x31, 0xf2, 0x48, - 0xde, 0xda, 0x7f, 0x95, 0x4d, 0x34, 0xf2, 0x85, 0x56, 0xc9, 0x13, 0xd0, 0x5f, 0xe8, 0xf3, 0x22, - 0xb9, 0xc1, 0xcc, 0x5e, 0xd3, 0x10, 0x28, 0xe9, 0x52, 0x2b, 0x64, 0x07, 0xd6, 0x4b, 0x9b, 0xaf, - 0xc4, 0xdc, 0x6e, 0x6b, 0xa2, 0x53, 0x6a, 0xaa, 0x93, 0x39, 0x79, 0x03, 0xdb, 0x53, 0xca, 0x62, - 0x0c, 0xfd, 0x19, 0xf2, 0x50, 0x64, 0x66, 0x6e, 0x7e, 0x70, 0x8b, 0xc1, 0x5d, 0x6e, 0x83, 0xae, - 0xf2, 0xdf, 0x92, 0xb9, 0xd6, 0x48, 0x35, 0xc3, 0x33, 0x0d, 0x90, 0x13, 0x68, 0xd7, 0x6b, 0x6e, - 0x77, 0xf4, 0xb6, 0xec, 0x2e, 0x9b, 0xe6, 0x2f, 0x4b, 0xe6, 0x2d, 0xbc, 0x88, 0x0b, 0x7f, 0xe7, - 0x18, 0x08, 0x1e, 0xd2, 0x6c, 0xee, 0x2f, 0x82, 0xad, 0xeb, 0xd4, 0xa4, 0x36, 0x2d, 0x16, 0xf4, - 0x15, 0xfc, 0x93, 0x17, 0x69, 0x1a, 0xeb, 0xf6, 0x3e, 0x76, 0xda, 0xd0, 0x4e, 0x5b, 0x8f, 0xcc, - 0x0b, 0xc7, 0x3d, 0xe8, 0x6b, 0x14, 0x43, 0x3f, 0xc7, 0xfb, 0x02, 0x79, 0x80, 0x76, 0x57, 0x0f, - 0xb7, 0x57, 0xe9, 0x57, 0x95, 0xac, 0xa6, 0x60, 0x50, 0xb3, 0xca, 0xbd, 0x61, 0x53, 0x4d, 0xa1, - 0x92, 0xcd, 0x2a, 0x7f, 0x00, 0xc2, 0xf1, 0xab, 0xf4, 0x13, 0x35, 0xdd, 0xfa, 0x6e, 0xfa, 0x7f, - 0x70, 0x37, 0x7d, 0xe5, 0xf7, 0x91, 0x4a, 0x34, 0x0a, 0x79, 0x09, 0x2b, 0x8c, 0x4f, 0x85, 0xbd, - 0xa9, 0xaf, 0x62, 0xb4, 0xcc, 0x5b, 0x8d, 0xcd, 0x39, 0xe7, 0x53, 0xf1, 0x96, 0xcb, 0x6c, 0xee, - 0x69, 0x7e, 0x70, 0x05, 0xed, 0x5a, 0x22, 0x7d, 0x68, 0xde, 0xe1, 0xbc, 0x3a, 0x0f, 0xf5, 0x93, - 0xbc, 0x80, 0xd6, 0x8c, 0xc6, 0x05, 0xea, 0xbb, 0xe8, 0x1c, 0x0c, 0x4c, 0x5c, 0xf3, 0x24, 0x38, - 0x17, 0x2c, 0x97, 0xd7, 0x8a, 0xf0, 0x4a, 0xf0, 0xb8, 0x71, 0x64, 0x9d, 0x26, 0xb0, 0x15, 0x88, - 0x64, 0x49, 0x0d, 0xa7, 0x44, 0x15, 0x51, 0x77, 0x75, 0xa2, 0xa2, 0x4c, 0xac, 0x2f, 0xc7, 0x86, - 0x14, 0x31, 0xe5, 0x91, 0x23, 0xb2, 0x48, 0x3d, 0x4b, 0x3a, 0x87, 0x5b, 0x9a, 0x68, 0xca, 0xf2, - 0x87, 0x4f, 0xd5, 0x6b, 0xf3, 0xfb, 0x87, 0x65, 0xdd, 0xac, 0x6a, 0xf2, 0xf0, 0x67, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xd0, 0xe1, 0xf6, 0x57, 0x4d, 0x05, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/readgroup.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/readgroup.pb.go deleted file mode 100644 index 42f4e143..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/readgroup.pb.go +++ /dev/null @@ -1,275 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/readgroup.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/struct" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A read group is all the data that's processed the same way by the sequencer. -type ReadGroup struct { - // The server-generated read group ID, unique for all read groups. - // Note: This is different than the @RG ID field in the SAM spec. For that - // value, see [name][google.genomics.v1.ReadGroup.name]. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The dataset to which this read group belongs. - DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // The read group name. This corresponds to the @RG ID field in the SAM spec. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // A free-form text description of this read group. - Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"` - // A client-supplied sample identifier for the reads in this read group. - SampleId string `protobuf:"bytes,5,opt,name=sample_id,json=sampleId" json:"sample_id,omitempty"` - // The experiment used to generate this read group. - Experiment *ReadGroup_Experiment `protobuf:"bytes,6,opt,name=experiment" json:"experiment,omitempty"` - // The predicted insert size of this read group. The insert size is the length - // the sequenced DNA fragment from end-to-end, not including the adapters. - PredictedInsertSize int32 `protobuf:"varint,7,opt,name=predicted_insert_size,json=predictedInsertSize" json:"predicted_insert_size,omitempty"` - // The programs used to generate this read group. Programs are always - // identical for all read groups within a read group set. For this reason, - // only the first read group in a returned set will have this field - // populated. - Programs []*ReadGroup_Program `protobuf:"bytes,10,rep,name=programs" json:"programs,omitempty"` - // The reference set the reads in this read group are aligned to. - ReferenceSetId string `protobuf:"bytes,11,opt,name=reference_set_id,json=referenceSetId" json:"reference_set_id,omitempty"` - // A map of additional read group information. This must be of the form - // map<string, string[]> (string key mapping to a list of string values). - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,12,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *ReadGroup) Reset() { *m = ReadGroup{} } -func (m *ReadGroup) String() string { return proto.CompactTextString(m) } -func (*ReadGroup) ProtoMessage() {} -func (*ReadGroup) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{0} } - -func (m *ReadGroup) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *ReadGroup) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *ReadGroup) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ReadGroup) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *ReadGroup) GetSampleId() string { - if m != nil { - return m.SampleId - } - return "" -} - -func (m *ReadGroup) GetExperiment() *ReadGroup_Experiment { - if m != nil { - return m.Experiment - } - return nil -} - -func (m *ReadGroup) GetPredictedInsertSize() int32 { - if m != nil { - return m.PredictedInsertSize - } - return 0 -} - -func (m *ReadGroup) GetPrograms() []*ReadGroup_Program { - if m != nil { - return m.Programs - } - return nil -} - -func (m *ReadGroup) GetReferenceSetId() string { - if m != nil { - return m.ReferenceSetId - } - return "" -} - -func (m *ReadGroup) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -type ReadGroup_Experiment struct { - // A client-supplied library identifier; a library is a collection of DNA - // fragments which have been prepared for sequencing from a sample. This - // field is important for quality control as error or bias can be introduced - // during sample preparation. - LibraryId string `protobuf:"bytes,1,opt,name=library_id,json=libraryId" json:"library_id,omitempty"` - // The platform unit used as part of this experiment, for example - // flowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the - // @RG PU field in the SAM spec. - PlatformUnit string `protobuf:"bytes,2,opt,name=platform_unit,json=platformUnit" json:"platform_unit,omitempty"` - // The sequencing center used as part of this experiment. - SequencingCenter string `protobuf:"bytes,3,opt,name=sequencing_center,json=sequencingCenter" json:"sequencing_center,omitempty"` - // The instrument model used as part of this experiment. This maps to - // sequencing technology in the SAM spec. - InstrumentModel string `protobuf:"bytes,4,opt,name=instrument_model,json=instrumentModel" json:"instrument_model,omitempty"` -} - -func (m *ReadGroup_Experiment) Reset() { *m = ReadGroup_Experiment{} } -func (m *ReadGroup_Experiment) String() string { return proto.CompactTextString(m) } -func (*ReadGroup_Experiment) ProtoMessage() {} -func (*ReadGroup_Experiment) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{0, 0} } - -func (m *ReadGroup_Experiment) GetLibraryId() string { - if m != nil { - return m.LibraryId - } - return "" -} - -func (m *ReadGroup_Experiment) GetPlatformUnit() string { - if m != nil { - return m.PlatformUnit - } - return "" -} - -func (m *ReadGroup_Experiment) GetSequencingCenter() string { - if m != nil { - return m.SequencingCenter - } - return "" -} - -func (m *ReadGroup_Experiment) GetInstrumentModel() string { - if m != nil { - return m.InstrumentModel - } - return "" -} - -type ReadGroup_Program struct { - // The command line used to run this program. - CommandLine string `protobuf:"bytes,1,opt,name=command_line,json=commandLine" json:"command_line,omitempty"` - // The user specified locally unique ID of the program. Used along with - // `prevProgramId` to define an ordering between programs. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // The display name of the program. This is typically the colloquial name of - // the tool used, for example 'bwa' or 'picard'. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // The ID of the program run before this one. - PrevProgramId string `protobuf:"bytes,4,opt,name=prev_program_id,json=prevProgramId" json:"prev_program_id,omitempty"` - // The version of the program run. - Version string `protobuf:"bytes,5,opt,name=version" json:"version,omitempty"` -} - -func (m *ReadGroup_Program) Reset() { *m = ReadGroup_Program{} } -func (m *ReadGroup_Program) String() string { return proto.CompactTextString(m) } -func (*ReadGroup_Program) ProtoMessage() {} -func (*ReadGroup_Program) Descriptor() ([]byte, []int) { return fileDescriptor7, []int{0, 1} } - -func (m *ReadGroup_Program) GetCommandLine() string { - if m != nil { - return m.CommandLine - } - return "" -} - -func (m *ReadGroup_Program) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *ReadGroup_Program) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ReadGroup_Program) GetPrevProgramId() string { - if m != nil { - return m.PrevProgramId - } - return "" -} - -func (m *ReadGroup_Program) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func init() { - proto.RegisterType((*ReadGroup)(nil), "google.genomics.v1.ReadGroup") - proto.RegisterType((*ReadGroup_Experiment)(nil), "google.genomics.v1.ReadGroup.Experiment") - proto.RegisterType((*ReadGroup_Program)(nil), "google.genomics.v1.ReadGroup.Program") -} - -func init() { proto.RegisterFile("google/genomics/v1/readgroup.proto", fileDescriptor7) } - -var fileDescriptor7 = []byte{ - // 585 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xcb, 0x6e, 0xd4, 0x30, - 0x14, 0x55, 0xa6, 0xcf, 0xb9, 0xd3, 0xc7, 0x60, 0x04, 0x8a, 0x06, 0x90, 0x86, 0x22, 0x60, 0x10, - 0x52, 0x42, 0x87, 0x0d, 0x6a, 0x57, 0x14, 0x55, 0x10, 0xa9, 0x48, 0x55, 0x2a, 0x58, 0xb0, 0x89, - 0xdc, 0xf8, 0x4e, 0x64, 0x91, 0xd8, 0xc1, 0x76, 0x46, 0xb4, 0x9f, 0xc1, 0x57, 0xf0, 0x2d, 0x7c, - 0x11, 0x4b, 0x64, 0xc7, 0x49, 0x47, 0xa2, 0xea, 0xce, 0x39, 0xe7, 0x5c, 0xdf, 0xc7, 0xb9, 0x0e, - 0x1c, 0x14, 0x52, 0x16, 0x25, 0xc6, 0x05, 0x0a, 0x59, 0xf1, 0x5c, 0xc7, 0xcb, 0xc3, 0x58, 0x21, - 0x65, 0x85, 0x92, 0x4d, 0x1d, 0xd5, 0x4a, 0x1a, 0x49, 0x48, 0xab, 0x89, 0x3a, 0x4d, 0xb4, 0x3c, - 0x9c, 0x3c, 0xf6, 0x71, 0xb4, 0xe6, 0x31, 0x15, 0x42, 0x1a, 0x6a, 0xb8, 0x14, 0xba, 0x8d, 0xe8, - 0x59, 0xf7, 0x75, 0xd9, 0x2c, 0x62, 0x6d, 0x54, 0x93, 0x9b, 0x96, 0x3d, 0xf8, 0xb3, 0x09, 0xc3, - 0x14, 0x29, 0xfb, 0x68, 0x73, 0x90, 0x3d, 0x18, 0x70, 0x16, 0x06, 0xd3, 0x60, 0x36, 0x4c, 0x07, - 0x9c, 0x91, 0x27, 0x00, 0x8c, 0x1a, 0xaa, 0xd1, 0x64, 0x9c, 0x85, 0x03, 0x87, 0x0f, 0x3d, 0x92, - 0x30, 0x42, 0x60, 0x5d, 0xd0, 0x0a, 0xc3, 0x35, 0x47, 0xb8, 0x33, 0x99, 0xc2, 0x88, 0xa1, 0xce, - 0x15, 0xaf, 0x6d, 0x11, 0xe1, 0xba, 0xa3, 0x56, 0x21, 0xf2, 0x08, 0x86, 0x9a, 0x56, 0x75, 0x89, - 0xf6, 0xce, 0x0d, 0xc7, 0x6f, 0xb7, 0x40, 0xc2, 0xc8, 0x27, 0x00, 0xfc, 0x59, 0xa3, 0xe2, 0x15, - 0x0a, 0x13, 0x6e, 0x4e, 0x83, 0xd9, 0x68, 0x3e, 0x8b, 0xfe, 0x6f, 0x3a, 0xea, 0x8b, 0x8e, 0x4e, - 0x7b, 0x7d, 0xba, 0x12, 0x4b, 0xe6, 0xf0, 0xa0, 0x56, 0xc8, 0x78, 0x6e, 0x90, 0x65, 0x5c, 0x68, - 0x54, 0x26, 0xd3, 0xfc, 0x1a, 0xc3, 0xad, 0x69, 0x30, 0xdb, 0x48, 0xef, 0xf7, 0x64, 0xe2, 0xb8, - 0x0b, 0x7e, 0x8d, 0xe4, 0x3d, 0x6c, 0xd7, 0x4a, 0x16, 0x8a, 0x56, 0x3a, 0x84, 0xe9, 0xda, 0x6c, - 0x34, 0x7f, 0x7e, 0x77, 0xee, 0xf3, 0x56, 0x9d, 0xf6, 0x61, 0x64, 0x06, 0x63, 0x85, 0x0b, 0x54, - 0x28, 0x72, 0xcc, 0xfc, 0xe0, 0x46, 0xae, 0xc9, 0xbd, 0x1e, 0xbf, 0x70, 0xd3, 0x3b, 0x86, 0x75, - 0x2e, 0x16, 0x32, 0xdc, 0x71, 0x89, 0x5e, 0xde, 0x9d, 0x28, 0x11, 0x0b, 0x79, 0x2a, 0x8c, 0xba, - 0x4a, 0x5d, 0xd0, 0xe4, 0x77, 0x00, 0x70, 0xd3, 0xb8, 0x35, 0xaa, 0xe4, 0x97, 0x8a, 0xaa, 0xab, - 0xac, 0x37, 0x70, 0xe8, 0x91, 0x84, 0x91, 0x67, 0xb0, 0x5b, 0x97, 0xd4, 0x2c, 0xa4, 0xaa, 0xb2, - 0x46, 0x70, 0xe3, 0xad, 0xdc, 0xe9, 0xc0, 0x2f, 0x82, 0x1b, 0xf2, 0x1a, 0xee, 0x69, 0xfc, 0xd1, - 0xa0, 0xc8, 0xb9, 0x28, 0xb2, 0x1c, 0x85, 0x41, 0xe5, 0xad, 0x1d, 0xdf, 0x10, 0x1f, 0x1c, 0x4e, - 0x5e, 0xc1, 0x98, 0x0b, 0xbb, 0x49, 0x36, 0x7d, 0x56, 0x49, 0x86, 0xa5, 0xf7, 0x7a, 0xff, 0x06, - 0xff, 0x6c, 0xe1, 0xc9, 0xaf, 0x00, 0xb6, 0xfc, 0x9c, 0xc8, 0x53, 0xd8, 0xc9, 0x65, 0x55, 0x51, - 0xc1, 0xb2, 0x92, 0x0b, 0xf4, 0x95, 0x8e, 0x3c, 0x76, 0xc6, 0x05, 0xfa, 0x1d, 0x1c, 0xf4, 0x3b, - 0x78, 0xdb, 0x92, 0xbd, 0x80, 0xfd, 0x5a, 0xe1, 0x32, 0xf3, 0x53, 0xb7, 0x3d, 0xb7, 0xc9, 0x77, - 0x2d, 0xec, 0x93, 0x25, 0x8c, 0x84, 0xb0, 0xb5, 0x44, 0xa5, 0xed, 0x22, 0xb6, 0x8b, 0xd6, 0x7d, - 0x4e, 0x2e, 0x60, 0xd8, 0x8f, 0x94, 0x8c, 0x61, 0xed, 0x3b, 0x5e, 0xf9, 0x62, 0xec, 0x91, 0xbc, - 0x81, 0x8d, 0x25, 0x2d, 0x1b, 0x74, 0x75, 0x8c, 0xe6, 0x93, 0xce, 0x9c, 0xee, 0x11, 0x45, 0x67, - 0x5c, 0x9b, 0xaf, 0x56, 0x91, 0xb6, 0xc2, 0xa3, 0xc1, 0xbb, 0xe0, 0x84, 0xc3, 0xc3, 0x5c, 0x56, - 0xb7, 0x18, 0x79, 0xb2, 0xd7, 0x3b, 0x79, 0x6e, 0x6f, 0x38, 0x0f, 0xbe, 0x1d, 0x75, 0x2a, 0x59, - 0x52, 0x51, 0x44, 0x52, 0x15, 0xf6, 0xdd, 0xbb, 0xfb, 0xe3, 0x96, 0xa2, 0x35, 0xd7, 0xab, 0xff, - 0x82, 0xe3, 0xee, 0xfc, 0x37, 0x08, 0x2e, 0x37, 0x9d, 0xf2, 0xed, 0xbf, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x37, 0xed, 0xaa, 0xaa, 0x34, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/readgroupset.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/readgroupset.pb.go deleted file mode 100644 index 9d623464..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/readgroupset.pb.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/readgroupset.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/struct" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A read group set is a logical collection of read groups, which are -// collections of reads produced by a sequencer. A read group set typically -// models reads corresponding to one sample, sequenced one way, and aligned one -// way. -// -// * A read group set belongs to one dataset. -// * A read group belongs to one read group set. -// * A read belongs to one read group. -// -// For more genomics resource definitions, see [Fundamentals of Google -// Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) -type ReadGroupSet struct { - // The server-generated read group set ID, unique for all read group sets. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The dataset to which this read group set belongs. - DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // The reference set to which the reads in this read group set are aligned. - ReferenceSetId string `protobuf:"bytes,3,opt,name=reference_set_id,json=referenceSetId" json:"reference_set_id,omitempty"` - // The read group set name. By default this will be initialized to the sample - // name of the sequenced data contained in this set. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` - // The filename of the original source file for this read group set, if any. - Filename string `protobuf:"bytes,5,opt,name=filename" json:"filename,omitempty"` - // The read groups in this set. There are typically 1-10 read groups in a read - // group set. - ReadGroups []*ReadGroup `protobuf:"bytes,6,rep,name=read_groups,json=readGroups" json:"read_groups,omitempty"` - // A map of additional read group set information. - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,7,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *ReadGroupSet) Reset() { *m = ReadGroupSet{} } -func (m *ReadGroupSet) String() string { return proto.CompactTextString(m) } -func (*ReadGroupSet) ProtoMessage() {} -func (*ReadGroupSet) Descriptor() ([]byte, []int) { return fileDescriptor8, []int{0} } - -func (m *ReadGroupSet) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *ReadGroupSet) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *ReadGroupSet) GetReferenceSetId() string { - if m != nil { - return m.ReferenceSetId - } - return "" -} - -func (m *ReadGroupSet) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ReadGroupSet) GetFilename() string { - if m != nil { - return m.Filename - } - return "" -} - -func (m *ReadGroupSet) GetReadGroups() []*ReadGroup { - if m != nil { - return m.ReadGroups - } - return nil -} - -func (m *ReadGroupSet) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -func init() { - proto.RegisterType((*ReadGroupSet)(nil), "google.genomics.v1.ReadGroupSet") -} - -func init() { proto.RegisterFile("google/genomics/v1/readgroupset.proto", fileDescriptor8) } - -var fileDescriptor8 = []byte{ - // 367 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0x4f, 0x8b, 0xdb, 0x30, - 0x10, 0xc5, 0xb1, 0xf3, 0xa7, 0xcd, 0xa4, 0x84, 0x54, 0x87, 0x62, 0x4c, 0x03, 0x21, 0x50, 0x08, - 0x3d, 0xc8, 0x4d, 0x7a, 0x29, 0x29, 0xe4, 0x10, 0x28, 0x25, 0xb0, 0x87, 0x60, 0xc3, 0x1e, 0xf6, - 0x12, 0x14, 0x7b, 0x6c, 0xc4, 0x3a, 0x92, 0x91, 0xe4, 0x40, 0xbe, 0xf3, 0x7e, 0x80, 0x3d, 0x2e, - 0x96, 0xff, 0x10, 0xd8, 0x25, 0xb7, 0xd1, 0xd3, 0xef, 0x8d, 0x46, 0x6f, 0xe0, 0x47, 0x26, 0x65, - 0x96, 0x63, 0x90, 0xa1, 0x90, 0x67, 0x1e, 0xeb, 0xe0, 0xb2, 0x0a, 0x14, 0xb2, 0x24, 0x53, 0xb2, - 0x2c, 0x34, 0x1a, 0x5a, 0x28, 0x69, 0x24, 0x21, 0x35, 0x46, 0x5b, 0x8c, 0x5e, 0x56, 0xfe, 0xf7, - 0xc6, 0xca, 0x0a, 0x1e, 0x30, 0x21, 0xa4, 0x61, 0x86, 0x4b, 0xa1, 0x6b, 0x87, 0xbf, 0xb8, 0xd7, - 0xb8, 0x61, 0xda, 0x0e, 0xf6, 0x74, 0x2a, 0xd3, 0x40, 0x1b, 0x55, 0xc6, 0xcd, 0x9b, 0x8b, 0x17, - 0x17, 0xbe, 0x84, 0xc8, 0x92, 0xff, 0x95, 0x23, 0x42, 0x43, 0x26, 0xe0, 0xf2, 0xc4, 0x73, 0xe6, - 0xce, 0x72, 0x14, 0xba, 0x3c, 0x21, 0x33, 0x80, 0x84, 0x19, 0xa6, 0xd1, 0x1c, 0x79, 0xe2, 0xb9, - 0x56, 0x1f, 0x35, 0xca, 0x3e, 0x21, 0x4b, 0x98, 0x2a, 0x4c, 0x51, 0xa1, 0x88, 0xf1, 0xd8, 0x40, - 0x3d, 0x0b, 0x4d, 0x3a, 0x3d, 0xb2, 0x24, 0x81, 0xbe, 0x60, 0x67, 0xf4, 0xfa, 0xf6, 0xd6, 0xd6, - 0xc4, 0x87, 0xcf, 0x29, 0xcf, 0xd1, 0xea, 0x03, 0xab, 0x77, 0x67, 0xb2, 0x85, 0x71, 0xf5, 0x95, - 0x63, 0x1d, 0x92, 0x37, 0x9c, 0xf7, 0x96, 0xe3, 0xf5, 0x8c, 0xbe, 0xcf, 0x88, 0x76, 0xf3, 0x87, - 0xa0, 0xda, 0x52, 0x93, 0x2d, 0xf4, 0xb9, 0x48, 0xa5, 0xf7, 0xc9, 0x1a, 0x7f, 0xde, 0x35, 0x46, - 0x68, 0xe8, 0x5e, 0xa4, 0xf2, 0x9f, 0x30, 0xea, 0x1a, 0x5a, 0x9f, 0x1f, 0xc1, 0xa8, 0x93, 0xc8, - 0x14, 0x7a, 0xcf, 0x78, 0x6d, 0x62, 0xa9, 0x4a, 0xf2, 0x0b, 0x06, 0x17, 0x96, 0x97, 0x68, 0x23, - 0x19, 0xaf, 0xfd, 0xb6, 0x7f, 0x1b, 0x33, 0x7d, 0xe0, 0xda, 0x3c, 0x56, 0x44, 0x58, 0x83, 0x1b, - 0xf7, 0x8f, 0xb3, 0xcb, 0xe1, 0x5b, 0x2c, 0xcf, 0x1f, 0xcc, 0xb2, 0xfb, 0x7a, 0x3b, 0xcc, 0xa1, - 0x6a, 0x72, 0x70, 0x9e, 0x36, 0x2d, 0x28, 0x73, 0x26, 0x32, 0x2a, 0x55, 0x56, 0xad, 0xda, 0x3e, - 0x11, 0xd4, 0x57, 0xac, 0xe0, 0xfa, 0x76, 0xfd, 0x7f, 0xdb, 0xfa, 0xd5, 0x71, 0x4e, 0x43, 0x4b, - 0xfe, 0x7e, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x1f, 0xa9, 0x2f, 0xa5, 0x80, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/reads.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/reads.pb.go deleted file mode 100644 index 4023fd2d..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/reads.pb.go +++ /dev/null @@ -1,1414 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/reads.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type ImportReadGroupSetsRequest_PartitionStrategy int32 - -const ( - ImportReadGroupSetsRequest_PARTITION_STRATEGY_UNSPECIFIED ImportReadGroupSetsRequest_PartitionStrategy = 0 - // In most cases, this strategy yields one read group set per file. This is - // the default behavior. - // - // Allocate one read group set per file per sample. For BAM files, read - // groups are considered to share a sample if they have identical sample - // names. Furthermore, all reads for each file which do not belong to a read - // group, if any, will be grouped into a single read group set per-file. - ImportReadGroupSetsRequest_PER_FILE_PER_SAMPLE ImportReadGroupSetsRequest_PartitionStrategy = 1 - // Includes all read groups in all imported files into a single read group - // set. Requires that the headers for all imported files are equivalent. All - // reads which do not belong to a read group, if any, will be grouped into a - // separate read group set. - ImportReadGroupSetsRequest_MERGE_ALL ImportReadGroupSetsRequest_PartitionStrategy = 2 -) - -var ImportReadGroupSetsRequest_PartitionStrategy_name = map[int32]string{ - 0: "PARTITION_STRATEGY_UNSPECIFIED", - 1: "PER_FILE_PER_SAMPLE", - 2: "MERGE_ALL", -} -var ImportReadGroupSetsRequest_PartitionStrategy_value = map[string]int32{ - "PARTITION_STRATEGY_UNSPECIFIED": 0, - "PER_FILE_PER_SAMPLE": 1, - "MERGE_ALL": 2, -} - -func (x ImportReadGroupSetsRequest_PartitionStrategy) String() string { - return proto.EnumName(ImportReadGroupSetsRequest_PartitionStrategy_name, int32(x)) -} -func (ImportReadGroupSetsRequest_PartitionStrategy) EnumDescriptor() ([]byte, []int) { - return fileDescriptor9, []int{2, 0} -} - -// The read group set search request. -type SearchReadGroupSetsRequest struct { - // Restricts this query to read group sets within the given datasets. At least - // one ID must be provided. - DatasetIds []string `protobuf:"bytes,1,rep,name=dataset_ids,json=datasetIds" json:"dataset_ids,omitempty"` - // Only return read group sets for which a substring of the name matches this - // string. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 256. The maximum value is 1024. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *SearchReadGroupSetsRequest) Reset() { *m = SearchReadGroupSetsRequest{} } -func (m *SearchReadGroupSetsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchReadGroupSetsRequest) ProtoMessage() {} -func (*SearchReadGroupSetsRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{0} } - -func (m *SearchReadGroupSetsRequest) GetDatasetIds() []string { - if m != nil { - return m.DatasetIds - } - return nil -} - -func (m *SearchReadGroupSetsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SearchReadGroupSetsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchReadGroupSetsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// The read group set search response. -type SearchReadGroupSetsResponse struct { - // The list of matching read group sets. - ReadGroupSets []*ReadGroupSet `protobuf:"bytes,1,rep,name=read_group_sets,json=readGroupSets" json:"read_group_sets,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchReadGroupSetsResponse) Reset() { *m = SearchReadGroupSetsResponse{} } -func (m *SearchReadGroupSetsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchReadGroupSetsResponse) ProtoMessage() {} -func (*SearchReadGroupSetsResponse) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{1} } - -func (m *SearchReadGroupSetsResponse) GetReadGroupSets() []*ReadGroupSet { - if m != nil { - return m.ReadGroupSets - } - return nil -} - -func (m *SearchReadGroupSetsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The read group set import request. -type ImportReadGroupSetsRequest struct { - // Required. The ID of the dataset these read group sets will belong to. The - // caller must have WRITE permissions to this dataset. - DatasetId string `protobuf:"bytes,1,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // The reference set to which the imported read group sets are aligned to, if - // any. The reference names of this reference set must be a superset of those - // found in the imported file headers. If no reference set id is provided, a - // best effort is made to associate with a matching reference set. - ReferenceSetId string `protobuf:"bytes,4,opt,name=reference_set_id,json=referenceSetId" json:"reference_set_id,omitempty"` - // A list of URIs pointing at [BAM - // files](https://samtools.github.io/hts-specs/SAMv1.pdf) - // in Google Cloud Storage. - // Those URIs can include wildcards (*), but do not add or remove - // matching files before import has completed. - // - // Note that Google Cloud Storage object listing is only eventually - // consistent: files added may be not be immediately visible to - // everyone. Thus, if using a wildcard it is preferable not to start - // the import immediately after the files are created. - SourceUris []string `protobuf:"bytes,2,rep,name=source_uris,json=sourceUris" json:"source_uris,omitempty"` - // The partition strategy describes how read groups are partitioned into read - // group sets. - PartitionStrategy ImportReadGroupSetsRequest_PartitionStrategy `protobuf:"varint,5,opt,name=partition_strategy,json=partitionStrategy,enum=google.genomics.v1.ImportReadGroupSetsRequest_PartitionStrategy" json:"partition_strategy,omitempty"` -} - -func (m *ImportReadGroupSetsRequest) Reset() { *m = ImportReadGroupSetsRequest{} } -func (m *ImportReadGroupSetsRequest) String() string { return proto.CompactTextString(m) } -func (*ImportReadGroupSetsRequest) ProtoMessage() {} -func (*ImportReadGroupSetsRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{2} } - -func (m *ImportReadGroupSetsRequest) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *ImportReadGroupSetsRequest) GetReferenceSetId() string { - if m != nil { - return m.ReferenceSetId - } - return "" -} - -func (m *ImportReadGroupSetsRequest) GetSourceUris() []string { - if m != nil { - return m.SourceUris - } - return nil -} - -func (m *ImportReadGroupSetsRequest) GetPartitionStrategy() ImportReadGroupSetsRequest_PartitionStrategy { - if m != nil { - return m.PartitionStrategy - } - return ImportReadGroupSetsRequest_PARTITION_STRATEGY_UNSPECIFIED -} - -// The read group set import response. -type ImportReadGroupSetsResponse struct { - // IDs of the read group sets that were created. - ReadGroupSetIds []string `protobuf:"bytes,1,rep,name=read_group_set_ids,json=readGroupSetIds" json:"read_group_set_ids,omitempty"` -} - -func (m *ImportReadGroupSetsResponse) Reset() { *m = ImportReadGroupSetsResponse{} } -func (m *ImportReadGroupSetsResponse) String() string { return proto.CompactTextString(m) } -func (*ImportReadGroupSetsResponse) ProtoMessage() {} -func (*ImportReadGroupSetsResponse) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{3} } - -func (m *ImportReadGroupSetsResponse) GetReadGroupSetIds() []string { - if m != nil { - return m.ReadGroupSetIds - } - return nil -} - -// The read group set export request. -type ExportReadGroupSetRequest struct { - // Required. The Google Cloud project ID that owns this - // export. The caller must have WRITE access to this project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. A Google Cloud Storage URI for the exported BAM file. - // The currently authenticated user must have write access to the new file. - // An error will be returned if the URI already contains data. - ExportUri string `protobuf:"bytes,2,opt,name=export_uri,json=exportUri" json:"export_uri,omitempty"` - // Required. The ID of the read group set to export. The caller must have - // READ access to this read group set. - ReadGroupSetId string `protobuf:"bytes,3,opt,name=read_group_set_id,json=readGroupSetId" json:"read_group_set_id,omitempty"` - // The reference names to export. If this is not specified, all reference - // sequences, including unmapped reads, are exported. - // Use `*` to export only unmapped reads. - ReferenceNames []string `protobuf:"bytes,4,rep,name=reference_names,json=referenceNames" json:"reference_names,omitempty"` -} - -func (m *ExportReadGroupSetRequest) Reset() { *m = ExportReadGroupSetRequest{} } -func (m *ExportReadGroupSetRequest) String() string { return proto.CompactTextString(m) } -func (*ExportReadGroupSetRequest) ProtoMessage() {} -func (*ExportReadGroupSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{4} } - -func (m *ExportReadGroupSetRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ExportReadGroupSetRequest) GetExportUri() string { - if m != nil { - return m.ExportUri - } - return "" -} - -func (m *ExportReadGroupSetRequest) GetReadGroupSetId() string { - if m != nil { - return m.ReadGroupSetId - } - return "" -} - -func (m *ExportReadGroupSetRequest) GetReferenceNames() []string { - if m != nil { - return m.ReferenceNames - } - return nil -} - -type UpdateReadGroupSetRequest struct { - // The ID of the read group set to be updated. The caller must have WRITE - // permissions to the dataset associated with this read group set. - ReadGroupSetId string `protobuf:"bytes,1,opt,name=read_group_set_id,json=readGroupSetId" json:"read_group_set_id,omitempty"` - // The new read group set data. See `updateMask` for details on mutability of - // fields. - ReadGroupSet *ReadGroupSet `protobuf:"bytes,2,opt,name=read_group_set,json=readGroupSet" json:"read_group_set,omitempty"` - // An optional mask specifying which fields to update. Supported fields: - // - // * [name][google.genomics.v1.ReadGroupSet.name]. - // * [referenceSetId][google.genomics.v1.ReadGroupSet.reference_set_id]. - // - // Leaving `updateMask` unset is equivalent to specifying all mutable - // fields. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateReadGroupSetRequest) Reset() { *m = UpdateReadGroupSetRequest{} } -func (m *UpdateReadGroupSetRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateReadGroupSetRequest) ProtoMessage() {} -func (*UpdateReadGroupSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{5} } - -func (m *UpdateReadGroupSetRequest) GetReadGroupSetId() string { - if m != nil { - return m.ReadGroupSetId - } - return "" -} - -func (m *UpdateReadGroupSetRequest) GetReadGroupSet() *ReadGroupSet { - if m != nil { - return m.ReadGroupSet - } - return nil -} - -func (m *UpdateReadGroupSetRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -type DeleteReadGroupSetRequest struct { - // The ID of the read group set to be deleted. The caller must have WRITE - // permissions to the dataset associated with this read group set. - ReadGroupSetId string `protobuf:"bytes,1,opt,name=read_group_set_id,json=readGroupSetId" json:"read_group_set_id,omitempty"` -} - -func (m *DeleteReadGroupSetRequest) Reset() { *m = DeleteReadGroupSetRequest{} } -func (m *DeleteReadGroupSetRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteReadGroupSetRequest) ProtoMessage() {} -func (*DeleteReadGroupSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{6} } - -func (m *DeleteReadGroupSetRequest) GetReadGroupSetId() string { - if m != nil { - return m.ReadGroupSetId - } - return "" -} - -type GetReadGroupSetRequest struct { - // The ID of the read group set. - ReadGroupSetId string `protobuf:"bytes,1,opt,name=read_group_set_id,json=readGroupSetId" json:"read_group_set_id,omitempty"` -} - -func (m *GetReadGroupSetRequest) Reset() { *m = GetReadGroupSetRequest{} } -func (m *GetReadGroupSetRequest) String() string { return proto.CompactTextString(m) } -func (*GetReadGroupSetRequest) ProtoMessage() {} -func (*GetReadGroupSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{7} } - -func (m *GetReadGroupSetRequest) GetReadGroupSetId() string { - if m != nil { - return m.ReadGroupSetId - } - return "" -} - -type ListCoverageBucketsRequest struct { - // Required. The ID of the read group set over which coverage is requested. - ReadGroupSetId string `protobuf:"bytes,1,opt,name=read_group_set_id,json=readGroupSetId" json:"read_group_set_id,omitempty"` - // The name of the reference to query, within the reference set associated - // with this query. Optional. - ReferenceName string `protobuf:"bytes,3,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The start position of the range on the reference, 0-based inclusive. If - // specified, `referenceName` must also be specified. Defaults to 0. - Start int64 `protobuf:"varint,4,opt,name=start" json:"start,omitempty"` - // The end position of the range on the reference, 0-based exclusive. If - // specified, `referenceName` must also be specified. If unset or 0, defaults - // to the length of the reference. - End int64 `protobuf:"varint,5,opt,name=end" json:"end,omitempty"` - // The desired width of each reported coverage bucket in base pairs. This - // will be rounded down to the nearest precomputed bucket width; the value - // of which is returned as `bucketWidth` in the response. Defaults - // to infinity (each bucket spans an entire reference sequence) or the length - // of the target range, if specified. The smallest precomputed - // `bucketWidth` is currently 2048 base pairs; this is subject to - // change. - TargetBucketWidth int64 `protobuf:"varint,6,opt,name=target_bucket_width,json=targetBucketWidth" json:"target_bucket_width,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,7,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 1024. The maximum value is 2048. - PageSize int32 `protobuf:"varint,8,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListCoverageBucketsRequest) Reset() { *m = ListCoverageBucketsRequest{} } -func (m *ListCoverageBucketsRequest) String() string { return proto.CompactTextString(m) } -func (*ListCoverageBucketsRequest) ProtoMessage() {} -func (*ListCoverageBucketsRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{8} } - -func (m *ListCoverageBucketsRequest) GetReadGroupSetId() string { - if m != nil { - return m.ReadGroupSetId - } - return "" -} - -func (m *ListCoverageBucketsRequest) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *ListCoverageBucketsRequest) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *ListCoverageBucketsRequest) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *ListCoverageBucketsRequest) GetTargetBucketWidth() int64 { - if m != nil { - return m.TargetBucketWidth - } - return 0 -} - -func (m *ListCoverageBucketsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListCoverageBucketsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// A bucket over which read coverage has been precomputed. A bucket corresponds -// to a specific range of the reference sequence. -type CoverageBucket struct { - // The genomic coordinate range spanned by this bucket. - Range *Range `protobuf:"bytes,1,opt,name=range" json:"range,omitempty"` - // The average number of reads which are aligned to each individual - // reference base in this bucket. - MeanCoverage float32 `protobuf:"fixed32,2,opt,name=mean_coverage,json=meanCoverage" json:"mean_coverage,omitempty"` -} - -func (m *CoverageBucket) Reset() { *m = CoverageBucket{} } -func (m *CoverageBucket) String() string { return proto.CompactTextString(m) } -func (*CoverageBucket) ProtoMessage() {} -func (*CoverageBucket) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{9} } - -func (m *CoverageBucket) GetRange() *Range { - if m != nil { - return m.Range - } - return nil -} - -func (m *CoverageBucket) GetMeanCoverage() float32 { - if m != nil { - return m.MeanCoverage - } - return 0 -} - -type ListCoverageBucketsResponse struct { - // The length of each coverage bucket in base pairs. Note that buckets at the - // end of a reference sequence may be shorter. This value is omitted if the - // bucket width is infinity (the default behaviour, with no range or - // `targetBucketWidth`). - BucketWidth int64 `protobuf:"varint,1,opt,name=bucket_width,json=bucketWidth" json:"bucket_width,omitempty"` - // The coverage buckets. The list of buckets is sparse; a bucket with 0 - // overlapping reads is not returned. A bucket never crosses more than one - // reference sequence. Each bucket has width `bucketWidth`, unless - // its end is the end of the reference sequence. - CoverageBuckets []*CoverageBucket `protobuf:"bytes,2,rep,name=coverage_buckets,json=coverageBuckets" json:"coverage_buckets,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListCoverageBucketsResponse) Reset() { *m = ListCoverageBucketsResponse{} } -func (m *ListCoverageBucketsResponse) String() string { return proto.CompactTextString(m) } -func (*ListCoverageBucketsResponse) ProtoMessage() {} -func (*ListCoverageBucketsResponse) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{10} } - -func (m *ListCoverageBucketsResponse) GetBucketWidth() int64 { - if m != nil { - return m.BucketWidth - } - return 0 -} - -func (m *ListCoverageBucketsResponse) GetCoverageBuckets() []*CoverageBucket { - if m != nil { - return m.CoverageBuckets - } - return nil -} - -func (m *ListCoverageBucketsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The read search request. -type SearchReadsRequest struct { - // The IDs of the read groups sets within which to search for reads. All - // specified read group sets must be aligned against a common set of reference - // sequences; this defines the genomic coordinates for the query. Must specify - // one of `readGroupSetIds` or `readGroupIds`. - ReadGroupSetIds []string `protobuf:"bytes,1,rep,name=read_group_set_ids,json=readGroupSetIds" json:"read_group_set_ids,omitempty"` - // The IDs of the read groups within which to search for reads. All specified - // read groups must belong to the same read group sets. Must specify one of - // `readGroupSetIds` or `readGroupIds`. - ReadGroupIds []string `protobuf:"bytes,5,rep,name=read_group_ids,json=readGroupIds" json:"read_group_ids,omitempty"` - // The reference sequence name, for example `chr1`, `1`, or `chrX`. If set to - // `*`, only unmapped reads are returned. If unspecified, all reads (mapped - // and unmapped) are returned. - ReferenceName string `protobuf:"bytes,7,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The start position of the range on the reference, 0-based inclusive. If - // specified, `referenceName` must also be specified. - Start int64 `protobuf:"varint,8,opt,name=start" json:"start,omitempty"` - // The end position of the range on the reference, 0-based exclusive. If - // specified, `referenceName` must also be specified. - End int64 `protobuf:"varint,9,opt,name=end" json:"end,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 256. The maximum value is 2048. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *SearchReadsRequest) Reset() { *m = SearchReadsRequest{} } -func (m *SearchReadsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchReadsRequest) ProtoMessage() {} -func (*SearchReadsRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{11} } - -func (m *SearchReadsRequest) GetReadGroupSetIds() []string { - if m != nil { - return m.ReadGroupSetIds - } - return nil -} - -func (m *SearchReadsRequest) GetReadGroupIds() []string { - if m != nil { - return m.ReadGroupIds - } - return nil -} - -func (m *SearchReadsRequest) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *SearchReadsRequest) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *SearchReadsRequest) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *SearchReadsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchReadsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// The read search response. -type SearchReadsResponse struct { - // The list of matching alignments sorted by mapped genomic coordinate, - // if any, ascending in position within the same reference. Unmapped reads, - // which have no position, are returned contiguously and are sorted in - // ascending lexicographic order by fragment name. - Alignments []*Read `protobuf:"bytes,1,rep,name=alignments" json:"alignments,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchReadsResponse) Reset() { *m = SearchReadsResponse{} } -func (m *SearchReadsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchReadsResponse) ProtoMessage() {} -func (*SearchReadsResponse) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{12} } - -func (m *SearchReadsResponse) GetAlignments() []*Read { - if m != nil { - return m.Alignments - } - return nil -} - -func (m *SearchReadsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The stream reads request. -type StreamReadsRequest struct { - // The Google Cloud project ID which will be billed - // for this access. The caller must have WRITE access to this project. - // Required. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The ID of the read group set from which to stream reads. - ReadGroupSetId string `protobuf:"bytes,2,opt,name=read_group_set_id,json=readGroupSetId" json:"read_group_set_id,omitempty"` - // The reference sequence name, for example `chr1`, - // `1`, or `chrX`. If set to *, only unmapped reads are - // returned. - ReferenceName string `protobuf:"bytes,3,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The start position of the range on the reference, 0-based inclusive. If - // specified, `referenceName` must also be specified. - Start int64 `protobuf:"varint,4,opt,name=start" json:"start,omitempty"` - // The end position of the range on the reference, 0-based exclusive. If - // specified, `referenceName` must also be specified. - End int64 `protobuf:"varint,5,opt,name=end" json:"end,omitempty"` - // Restricts results to a shard containing approximately `1/totalShards` - // of the normal response payload for this query. Results from a sharded - // request are disjoint from those returned by all queries which differ only - // in their shard parameter. A shard may yield 0 results; this is especially - // likely for large values of `totalShards`. - // - // Valid values are `[0, totalShards)`. - Shard int32 `protobuf:"varint,6,opt,name=shard" json:"shard,omitempty"` - // Specifying `totalShards` causes a disjoint subset of the normal response - // payload to be returned for each query with a unique `shard` parameter - // specified. A best effort is made to yield equally sized shards. Sharding - // can be used to distribute processing amongst workers, where each worker is - // assigned a unique `shard` number and all workers specify the same - // `totalShards` number. The union of reads returned for all sharded queries - // `[0, totalShards)` is equal to those returned by a single unsharded query. - // - // Queries for different values of `totalShards` with common divisors will - // share shard boundaries. For example, streaming `shard` 2 of 5 - // `totalShards` yields the same results as streaming `shard`s 4 and 5 of 10 - // `totalShards`. This property can be leveraged for adaptive retries. - TotalShards int32 `protobuf:"varint,7,opt,name=total_shards,json=totalShards" json:"total_shards,omitempty"` -} - -func (m *StreamReadsRequest) Reset() { *m = StreamReadsRequest{} } -func (m *StreamReadsRequest) String() string { return proto.CompactTextString(m) } -func (*StreamReadsRequest) ProtoMessage() {} -func (*StreamReadsRequest) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{13} } - -func (m *StreamReadsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *StreamReadsRequest) GetReadGroupSetId() string { - if m != nil { - return m.ReadGroupSetId - } - return "" -} - -func (m *StreamReadsRequest) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *StreamReadsRequest) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *StreamReadsRequest) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *StreamReadsRequest) GetShard() int32 { - if m != nil { - return m.Shard - } - return 0 -} - -func (m *StreamReadsRequest) GetTotalShards() int32 { - if m != nil { - return m.TotalShards - } - return 0 -} - -type StreamReadsResponse struct { - Alignments []*Read `protobuf:"bytes,1,rep,name=alignments" json:"alignments,omitempty"` -} - -func (m *StreamReadsResponse) Reset() { *m = StreamReadsResponse{} } -func (m *StreamReadsResponse) String() string { return proto.CompactTextString(m) } -func (*StreamReadsResponse) ProtoMessage() {} -func (*StreamReadsResponse) Descriptor() ([]byte, []int) { return fileDescriptor9, []int{14} } - -func (m *StreamReadsResponse) GetAlignments() []*Read { - if m != nil { - return m.Alignments - } - return nil -} - -func init() { - proto.RegisterType((*SearchReadGroupSetsRequest)(nil), "google.genomics.v1.SearchReadGroupSetsRequest") - proto.RegisterType((*SearchReadGroupSetsResponse)(nil), "google.genomics.v1.SearchReadGroupSetsResponse") - proto.RegisterType((*ImportReadGroupSetsRequest)(nil), "google.genomics.v1.ImportReadGroupSetsRequest") - proto.RegisterType((*ImportReadGroupSetsResponse)(nil), "google.genomics.v1.ImportReadGroupSetsResponse") - proto.RegisterType((*ExportReadGroupSetRequest)(nil), "google.genomics.v1.ExportReadGroupSetRequest") - proto.RegisterType((*UpdateReadGroupSetRequest)(nil), "google.genomics.v1.UpdateReadGroupSetRequest") - proto.RegisterType((*DeleteReadGroupSetRequest)(nil), "google.genomics.v1.DeleteReadGroupSetRequest") - proto.RegisterType((*GetReadGroupSetRequest)(nil), "google.genomics.v1.GetReadGroupSetRequest") - proto.RegisterType((*ListCoverageBucketsRequest)(nil), "google.genomics.v1.ListCoverageBucketsRequest") - proto.RegisterType((*CoverageBucket)(nil), "google.genomics.v1.CoverageBucket") - proto.RegisterType((*ListCoverageBucketsResponse)(nil), "google.genomics.v1.ListCoverageBucketsResponse") - proto.RegisterType((*SearchReadsRequest)(nil), "google.genomics.v1.SearchReadsRequest") - proto.RegisterType((*SearchReadsResponse)(nil), "google.genomics.v1.SearchReadsResponse") - proto.RegisterType((*StreamReadsRequest)(nil), "google.genomics.v1.StreamReadsRequest") - proto.RegisterType((*StreamReadsResponse)(nil), "google.genomics.v1.StreamReadsResponse") - proto.RegisterEnum("google.genomics.v1.ImportReadGroupSetsRequest_PartitionStrategy", ImportReadGroupSetsRequest_PartitionStrategy_name, ImportReadGroupSetsRequest_PartitionStrategy_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for StreamingReadService service - -type StreamingReadServiceClient interface { - // Returns a stream of all the reads matching the search request, ordered - // by reference name, position, and ID. - StreamReads(ctx context.Context, in *StreamReadsRequest, opts ...grpc.CallOption) (StreamingReadService_StreamReadsClient, error) -} - -type streamingReadServiceClient struct { - cc *grpc.ClientConn -} - -func NewStreamingReadServiceClient(cc *grpc.ClientConn) StreamingReadServiceClient { - return &streamingReadServiceClient{cc} -} - -func (c *streamingReadServiceClient) StreamReads(ctx context.Context, in *StreamReadsRequest, opts ...grpc.CallOption) (StreamingReadService_StreamReadsClient, error) { - stream, err := grpc.NewClientStream(ctx, &_StreamingReadService_serviceDesc.Streams[0], c.cc, "/google.genomics.v1.StreamingReadService/StreamReads", opts...) - if err != nil { - return nil, err - } - x := &streamingReadServiceStreamReadsClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type StreamingReadService_StreamReadsClient interface { - Recv() (*StreamReadsResponse, error) - grpc.ClientStream -} - -type streamingReadServiceStreamReadsClient struct { - grpc.ClientStream -} - -func (x *streamingReadServiceStreamReadsClient) Recv() (*StreamReadsResponse, error) { - m := new(StreamReadsResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for StreamingReadService service - -type StreamingReadServiceServer interface { - // Returns a stream of all the reads matching the search request, ordered - // by reference name, position, and ID. - StreamReads(*StreamReadsRequest, StreamingReadService_StreamReadsServer) error -} - -func RegisterStreamingReadServiceServer(s *grpc.Server, srv StreamingReadServiceServer) { - s.RegisterService(&_StreamingReadService_serviceDesc, srv) -} - -func _StreamingReadService_StreamReads_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamReadsRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(StreamingReadServiceServer).StreamReads(m, &streamingReadServiceStreamReadsServer{stream}) -} - -type StreamingReadService_StreamReadsServer interface { - Send(*StreamReadsResponse) error - grpc.ServerStream -} - -type streamingReadServiceStreamReadsServer struct { - grpc.ServerStream -} - -func (x *streamingReadServiceStreamReadsServer) Send(m *StreamReadsResponse) error { - return x.ServerStream.SendMsg(m) -} - -var _StreamingReadService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.genomics.v1.StreamingReadService", - HandlerType: (*StreamingReadServiceServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamReads", - Handler: _StreamingReadService_StreamReads_Handler, - ServerStreams: true, - }, - }, - Metadata: "google/genomics/v1/reads.proto", -} - -// Client API for ReadServiceV1 service - -type ReadServiceV1Client interface { - // Creates read group sets by asynchronously importing the provided - // information. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // The caller must have WRITE permissions to the dataset. - // - // ## Notes on [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) import - // - // - Tags will be converted to strings - tag types are not preserved - // - Comments (`@CO`) in the input file header will not be preserved - // - Original header order of references (`@SQ`) will not be preserved - // - Any reverse stranded unmapped reads will be reverse complemented, and - // their qualities (also the "BQ" and "OQ" tags, if any) will be reversed - // - Unmapped reads will be stripped of positional information (reference name - // and position) - ImportReadGroupSets(ctx context.Context, in *ImportReadGroupSetsRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Exports a read group set to a BAM file in Google Cloud Storage. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Note that currently there may be some differences between exported BAM - // files and the original BAM file at the time of import. See - // [ImportReadGroupSets][google.genomics.v1.ReadServiceV1.ImportReadGroupSets] - // for caveats. - ExportReadGroupSet(ctx context.Context, in *ExportReadGroupSetRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Searches for read group sets matching the criteria. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchReadGroupSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/readmethods.avdl#L135). - SearchReadGroupSets(ctx context.Context, in *SearchReadGroupSetsRequest, opts ...grpc.CallOption) (*SearchReadGroupSetsResponse, error) - // Updates a read group set. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This method supports patch semantics. - UpdateReadGroupSet(ctx context.Context, in *UpdateReadGroupSetRequest, opts ...grpc.CallOption) (*ReadGroupSet, error) - // Deletes a read group set. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteReadGroupSet(ctx context.Context, in *DeleteReadGroupSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Gets a read group set by ID. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetReadGroupSet(ctx context.Context, in *GetReadGroupSetRequest, opts ...grpc.CallOption) (*ReadGroupSet, error) - // Lists fixed width coverage buckets for a read group set, each of which - // correspond to a range of a reference sequence. Each bucket summarizes - // coverage information across its corresponding genomic range. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Coverage is defined as the number of reads which are aligned to a given - // base in the reference sequence. Coverage buckets are available at several - // precomputed bucket widths, enabling retrieval of various coverage 'zoom - // levels'. The caller must have READ permissions for the target read group - // set. - ListCoverageBuckets(ctx context.Context, in *ListCoverageBucketsRequest, opts ...grpc.CallOption) (*ListCoverageBucketsResponse, error) - // Gets a list of reads for one or more read group sets. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Reads search operates over a genomic coordinate space of reference sequence - // & position defined over the reference sequences to which the requested - // read group sets are aligned. - // - // If a target positional range is specified, search returns all reads whose - // alignment to the reference genome overlap the range. A query which - // specifies only read group set IDs yields all reads in those read group - // sets, including unmapped reads. - // - // All reads returned (including reads on subsequent pages) are ordered by - // genomic coordinate (by reference sequence, then position). Reads with - // equivalent genomic coordinates are returned in an unspecified order. This - // order is consistent, such that two queries for the same content (regardless - // of page size) yield reads in the same order across their respective streams - // of paginated responses. - // - // Implements - // [GlobalAllianceApi.searchReads](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/readmethods.avdl#L85). - SearchReads(ctx context.Context, in *SearchReadsRequest, opts ...grpc.CallOption) (*SearchReadsResponse, error) -} - -type readServiceV1Client struct { - cc *grpc.ClientConn -} - -func NewReadServiceV1Client(cc *grpc.ClientConn) ReadServiceV1Client { - return &readServiceV1Client{cc} -} - -func (c *readServiceV1Client) ImportReadGroupSets(ctx context.Context, in *ImportReadGroupSetsRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReadServiceV1/ImportReadGroupSets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *readServiceV1Client) ExportReadGroupSet(ctx context.Context, in *ExportReadGroupSetRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReadServiceV1/ExportReadGroupSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *readServiceV1Client) SearchReadGroupSets(ctx context.Context, in *SearchReadGroupSetsRequest, opts ...grpc.CallOption) (*SearchReadGroupSetsResponse, error) { - out := new(SearchReadGroupSetsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReadServiceV1/SearchReadGroupSets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *readServiceV1Client) UpdateReadGroupSet(ctx context.Context, in *UpdateReadGroupSetRequest, opts ...grpc.CallOption) (*ReadGroupSet, error) { - out := new(ReadGroupSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReadServiceV1/UpdateReadGroupSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *readServiceV1Client) DeleteReadGroupSet(ctx context.Context, in *DeleteReadGroupSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReadServiceV1/DeleteReadGroupSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *readServiceV1Client) GetReadGroupSet(ctx context.Context, in *GetReadGroupSetRequest, opts ...grpc.CallOption) (*ReadGroupSet, error) { - out := new(ReadGroupSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReadServiceV1/GetReadGroupSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *readServiceV1Client) ListCoverageBuckets(ctx context.Context, in *ListCoverageBucketsRequest, opts ...grpc.CallOption) (*ListCoverageBucketsResponse, error) { - out := new(ListCoverageBucketsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReadServiceV1/ListCoverageBuckets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *readServiceV1Client) SearchReads(ctx context.Context, in *SearchReadsRequest, opts ...grpc.CallOption) (*SearchReadsResponse, error) { - out := new(SearchReadsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReadServiceV1/SearchReads", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ReadServiceV1 service - -type ReadServiceV1Server interface { - // Creates read group sets by asynchronously importing the provided - // information. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // The caller must have WRITE permissions to the dataset. - // - // ## Notes on [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) import - // - // - Tags will be converted to strings - tag types are not preserved - // - Comments (`@CO`) in the input file header will not be preserved - // - Original header order of references (`@SQ`) will not be preserved - // - Any reverse stranded unmapped reads will be reverse complemented, and - // their qualities (also the "BQ" and "OQ" tags, if any) will be reversed - // - Unmapped reads will be stripped of positional information (reference name - // and position) - ImportReadGroupSets(context.Context, *ImportReadGroupSetsRequest) (*google_longrunning.Operation, error) - // Exports a read group set to a BAM file in Google Cloud Storage. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Note that currently there may be some differences between exported BAM - // files and the original BAM file at the time of import. See - // [ImportReadGroupSets][google.genomics.v1.ReadServiceV1.ImportReadGroupSets] - // for caveats. - ExportReadGroupSet(context.Context, *ExportReadGroupSetRequest) (*google_longrunning.Operation, error) - // Searches for read group sets matching the criteria. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchReadGroupSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/readmethods.avdl#L135). - SearchReadGroupSets(context.Context, *SearchReadGroupSetsRequest) (*SearchReadGroupSetsResponse, error) - // Updates a read group set. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This method supports patch semantics. - UpdateReadGroupSet(context.Context, *UpdateReadGroupSetRequest) (*ReadGroupSet, error) - // Deletes a read group set. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteReadGroupSet(context.Context, *DeleteReadGroupSetRequest) (*google_protobuf1.Empty, error) - // Gets a read group set by ID. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetReadGroupSet(context.Context, *GetReadGroupSetRequest) (*ReadGroupSet, error) - // Lists fixed width coverage buckets for a read group set, each of which - // correspond to a range of a reference sequence. Each bucket summarizes - // coverage information across its corresponding genomic range. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Coverage is defined as the number of reads which are aligned to a given - // base in the reference sequence. Coverage buckets are available at several - // precomputed bucket widths, enabling retrieval of various coverage 'zoom - // levels'. The caller must have READ permissions for the target read group - // set. - ListCoverageBuckets(context.Context, *ListCoverageBucketsRequest) (*ListCoverageBucketsResponse, error) - // Gets a list of reads for one or more read group sets. - // - // For the definitions of read group sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Reads search operates over a genomic coordinate space of reference sequence - // & position defined over the reference sequences to which the requested - // read group sets are aligned. - // - // If a target positional range is specified, search returns all reads whose - // alignment to the reference genome overlap the range. A query which - // specifies only read group set IDs yields all reads in those read group - // sets, including unmapped reads. - // - // All reads returned (including reads on subsequent pages) are ordered by - // genomic coordinate (by reference sequence, then position). Reads with - // equivalent genomic coordinates are returned in an unspecified order. This - // order is consistent, such that two queries for the same content (regardless - // of page size) yield reads in the same order across their respective streams - // of paginated responses. - // - // Implements - // [GlobalAllianceApi.searchReads](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/readmethods.avdl#L85). - SearchReads(context.Context, *SearchReadsRequest) (*SearchReadsResponse, error) -} - -func RegisterReadServiceV1Server(s *grpc.Server, srv ReadServiceV1Server) { - s.RegisterService(&_ReadServiceV1_serviceDesc, srv) -} - -func _ReadServiceV1_ImportReadGroupSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ImportReadGroupSetsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReadServiceV1Server).ImportReadGroupSets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReadServiceV1/ImportReadGroupSets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReadServiceV1Server).ImportReadGroupSets(ctx, req.(*ImportReadGroupSetsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReadServiceV1_ExportReadGroupSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExportReadGroupSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReadServiceV1Server).ExportReadGroupSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReadServiceV1/ExportReadGroupSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReadServiceV1Server).ExportReadGroupSet(ctx, req.(*ExportReadGroupSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReadServiceV1_SearchReadGroupSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchReadGroupSetsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReadServiceV1Server).SearchReadGroupSets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReadServiceV1/SearchReadGroupSets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReadServiceV1Server).SearchReadGroupSets(ctx, req.(*SearchReadGroupSetsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReadServiceV1_UpdateReadGroupSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateReadGroupSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReadServiceV1Server).UpdateReadGroupSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReadServiceV1/UpdateReadGroupSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReadServiceV1Server).UpdateReadGroupSet(ctx, req.(*UpdateReadGroupSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReadServiceV1_DeleteReadGroupSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteReadGroupSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReadServiceV1Server).DeleteReadGroupSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReadServiceV1/DeleteReadGroupSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReadServiceV1Server).DeleteReadGroupSet(ctx, req.(*DeleteReadGroupSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReadServiceV1_GetReadGroupSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetReadGroupSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReadServiceV1Server).GetReadGroupSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReadServiceV1/GetReadGroupSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReadServiceV1Server).GetReadGroupSet(ctx, req.(*GetReadGroupSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReadServiceV1_ListCoverageBuckets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListCoverageBucketsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReadServiceV1Server).ListCoverageBuckets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReadServiceV1/ListCoverageBuckets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReadServiceV1Server).ListCoverageBuckets(ctx, req.(*ListCoverageBucketsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReadServiceV1_SearchReads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchReadsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReadServiceV1Server).SearchReads(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReadServiceV1/SearchReads", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReadServiceV1Server).SearchReads(ctx, req.(*SearchReadsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ReadServiceV1_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.genomics.v1.ReadServiceV1", - HandlerType: (*ReadServiceV1Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ImportReadGroupSets", - Handler: _ReadServiceV1_ImportReadGroupSets_Handler, - }, - { - MethodName: "ExportReadGroupSet", - Handler: _ReadServiceV1_ExportReadGroupSet_Handler, - }, - { - MethodName: "SearchReadGroupSets", - Handler: _ReadServiceV1_SearchReadGroupSets_Handler, - }, - { - MethodName: "UpdateReadGroupSet", - Handler: _ReadServiceV1_UpdateReadGroupSet_Handler, - }, - { - MethodName: "DeleteReadGroupSet", - Handler: _ReadServiceV1_DeleteReadGroupSet_Handler, - }, - { - MethodName: "GetReadGroupSet", - Handler: _ReadServiceV1_GetReadGroupSet_Handler, - }, - { - MethodName: "ListCoverageBuckets", - Handler: _ReadServiceV1_ListCoverageBuckets_Handler, - }, - { - MethodName: "SearchReads", - Handler: _ReadServiceV1_SearchReads_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/genomics/v1/reads.proto", -} - -func init() { proto.RegisterFile("google/genomics/v1/reads.proto", fileDescriptor9) } - -var fileDescriptor9 = []byte{ - // 1333 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xff, 0x8e, 0x1d, 0xb7, 0xcd, 0x73, 0x93, 0x38, 0xe3, 0x7e, 0x8b, 0xe3, 0x90, 0x36, 0x6c, - 0x69, 0x1b, 0x02, 0xb5, 0x89, 0x11, 0x2a, 0x4a, 0x85, 0x44, 0xda, 0x3a, 0xc1, 0x28, 0x69, 0xad, - 0x75, 0x02, 0x82, 0xcb, 0x6a, 0x62, 0x4f, 0xb6, 0x4b, 0xec, 0xdd, 0x65, 0x66, 0x9c, 0xfe, 0x52, - 0x2f, 0xbd, 0x81, 0x04, 0x1c, 0x10, 0x27, 0xae, 0x5c, 0x39, 0x22, 0xfe, 0x08, 0x4e, 0x88, 0x0b, - 0x7f, 0x00, 0xe2, 0x0f, 0xe0, 0xc4, 0x11, 0xcd, 0xec, 0x6e, 0xbc, 0xeb, 0x9d, 0x6d, 0x1c, 0x55, - 0xe2, 0xb6, 0xfb, 0xe6, 0xb3, 0x6f, 0x3e, 0xef, 0xf7, 0x5b, 0xb8, 0x64, 0x7b, 0x9e, 0xdd, 0xa7, - 0x75, 0x9b, 0xba, 0xde, 0xc0, 0xe9, 0xf2, 0xfa, 0xd1, 0x5a, 0x9d, 0x51, 0xd2, 0xe3, 0x35, 0x9f, - 0x79, 0xc2, 0xc3, 0x38, 0x38, 0xaf, 0x45, 0xe7, 0xb5, 0xa3, 0xb5, 0xea, 0xab, 0xe1, 0x37, 0xc4, - 0x77, 0xea, 0xc4, 0x75, 0x3d, 0x41, 0x84, 0xe3, 0xb9, 0xe1, 0x17, 0x55, 0xad, 0x46, 0xe2, 0xda, - 0x34, 0x3c, 0xbf, 0x96, 0x71, 0x23, 0xe9, 0x3b, 0xb6, 0x3b, 0xa0, 0xae, 0x08, 0x71, 0x57, 0x33, - 0x70, 0x36, 0xf3, 0x86, 0x3e, 0xa7, 0x11, 0xec, 0x4a, 0x08, 0xeb, 0x7b, 0xae, 0xcd, 0x86, 0xae, - 0xeb, 0xb8, 0x76, 0xdd, 0xf3, 0x29, 0x4b, 0x70, 0x5a, 0x0c, 0x41, 0xea, 0x6d, 0x7f, 0x78, 0x50, - 0xa7, 0x03, 0x5f, 0x3c, 0x0e, 0x0f, 0x97, 0xc7, 0x0f, 0x0f, 0x1c, 0xda, 0xef, 0x59, 0x03, 0xc2, - 0x0f, 0x03, 0x84, 0xf1, 0x35, 0x82, 0x6a, 0x87, 0x12, 0xd6, 0x7d, 0x60, 0x52, 0xd2, 0xdb, 0x92, - 0x04, 0x3a, 0x54, 0x70, 0x93, 0x7e, 0x31, 0xa4, 0x5c, 0xe0, 0xcb, 0x50, 0xec, 0x11, 0x41, 0x38, - 0x15, 0x96, 0xd3, 0xe3, 0x15, 0xb4, 0x9c, 0x5f, 0x99, 0x36, 0x21, 0x14, 0xb5, 0x7a, 0x1c, 0x63, - 0x98, 0x72, 0xc9, 0x80, 0x56, 0xf2, 0xcb, 0x68, 0x65, 0xda, 0x54, 0xcf, 0x78, 0x09, 0xc0, 0x27, - 0x36, 0xb5, 0x84, 0x77, 0x48, 0xdd, 0x4a, 0x4e, 0x9d, 0x4c, 0x4b, 0xc9, 0xae, 0x14, 0xe0, 0x45, - 0x50, 0x2f, 0x16, 0x77, 0x9e, 0xd0, 0xca, 0xd4, 0x32, 0x5a, 0x29, 0x98, 0xe7, 0xa4, 0xa0, 0xe3, - 0x3c, 0xa1, 0xc6, 0xb7, 0x08, 0x16, 0xb5, 0x7c, 0xb8, 0xef, 0xb9, 0x9c, 0xe2, 0x0f, 0x61, 0x4e, - 0x7a, 0xca, 0x52, 0xae, 0xb2, 0x38, 0x15, 0x01, 0xa9, 0x62, 0x63, 0xb9, 0x96, 0x0e, 0x67, 0x2d, - 0xae, 0xc3, 0x9c, 0x61, 0x71, 0x8d, 0xf8, 0x1a, 0xcc, 0xb9, 0xf4, 0x91, 0xb0, 0x52, 0x54, 0x67, - 0xa4, 0xb8, 0x1d, 0xd1, 0x35, 0xfe, 0xc8, 0x41, 0xb5, 0x35, 0xf0, 0x3d, 0x26, 0xb4, 0x1e, 0x5a, - 0x02, 0x18, 0x79, 0xa8, 0x82, 0x02, 0x63, 0x8f, 0x1d, 0x84, 0x57, 0xa0, 0xc4, 0xe8, 0x01, 0x65, - 0xd4, 0xed, 0x52, 0x2b, 0x04, 0x4d, 0x29, 0xd0, 0xec, 0xb1, 0xbc, 0xa3, 0x90, 0x97, 0xa1, 0xc8, - 0xbd, 0x21, 0xeb, 0x52, 0x6b, 0xc8, 0x1c, 0x5e, 0xc9, 0x05, 0xae, 0x0e, 0x44, 0x7b, 0xcc, 0xe1, - 0xd8, 0x03, 0xec, 0x13, 0x26, 0x1c, 0x19, 0x7d, 0x8b, 0x0b, 0x46, 0x04, 0xb5, 0x1f, 0x57, 0x0a, - 0xcb, 0x68, 0x65, 0xb6, 0xf1, 0x81, 0xce, 0xfa, 0x6c, 0xd6, 0xb5, 0x76, 0xa4, 0xa8, 0x13, 0xea, - 0x31, 0xe7, 0xfd, 0x71, 0x91, 0x61, 0xc1, 0x7c, 0x0a, 0x87, 0x0d, 0xb8, 0xd4, 0xde, 0x30, 0x77, - 0x5b, 0xbb, 0xad, 0xfb, 0xf7, 0xac, 0xce, 0xae, 0xb9, 0xb1, 0xdb, 0xdc, 0xfa, 0xd4, 0xda, 0xbb, - 0xd7, 0x69, 0x37, 0xef, 0xb4, 0x36, 0x5b, 0xcd, 0xbb, 0xa5, 0xff, 0xe1, 0x57, 0xa0, 0xdc, 0x6e, - 0x9a, 0xd6, 0x66, 0x6b, 0xbb, 0x69, 0xc9, 0x87, 0xce, 0xc6, 0x4e, 0x7b, 0xbb, 0x59, 0x42, 0x78, - 0x06, 0xa6, 0x77, 0x9a, 0xe6, 0x56, 0xd3, 0xda, 0xd8, 0xde, 0x2e, 0xe5, 0x8c, 0x8f, 0x60, 0x51, - 0xcb, 0x31, 0x8c, 0xf5, 0x9b, 0x80, 0x93, 0xb1, 0x8e, 0xe5, 0xe0, 0x5c, 0x3c, 0x98, 0xad, 0x1e, - 0x37, 0x7e, 0x42, 0xb0, 0xd0, 0x7c, 0x34, 0xae, 0x2c, 0x16, 0x25, 0x9f, 0x79, 0x9f, 0xd3, 0x6e, - 0x3c, 0x4a, 0xa1, 0xa4, 0xd5, 0x93, 0xc7, 0x54, 0x7d, 0x2b, 0x7d, 0x1f, 0x65, 0x6c, 0x20, 0xd9, - 0x63, 0x0e, 0x7e, 0x03, 0xe6, 0x53, 0x44, 0xc2, 0x8c, 0x9f, 0x4d, 0xf2, 0xc0, 0xd7, 0x65, 0x7e, - 0x46, 0xf1, 0x96, 0xd5, 0xc0, 0x2b, 0x53, 0x8a, 0xf0, 0x28, 0xdc, 0xf7, 0xa4, 0xd4, 0xf8, 0x15, - 0xc1, 0xc2, 0x9e, 0xdf, 0x23, 0x82, 0xea, 0xf8, 0x6a, 0x6f, 0x44, 0xda, 0x1b, 0x37, 0x61, 0x36, - 0x09, 0x55, 0xfc, 0x27, 0x29, 0x88, 0xf3, 0x71, 0x4d, 0xf8, 0x16, 0x14, 0x87, 0x8a, 0x8f, 0x6a, - 0x0f, 0xca, 0xbc, 0x62, 0xa3, 0x1a, 0x29, 0x89, 0x3a, 0x48, 0x6d, 0x53, 0x76, 0x90, 0x1d, 0xc2, - 0x0f, 0x4d, 0x08, 0xe0, 0xf2, 0xd9, 0xd8, 0x84, 0x85, 0xbb, 0xb4, 0x4f, 0x5f, 0xd6, 0x18, 0xe3, - 0x0e, 0x5c, 0xdc, 0xa2, 0xe2, 0x25, 0x95, 0x3c, 0xcf, 0x41, 0x75, 0xdb, 0xe1, 0xe2, 0x8e, 0x77, - 0x44, 0x19, 0xb1, 0xe9, 0xed, 0x61, 0xf7, 0x30, 0x56, 0xb1, 0xa7, 0xf0, 0xed, 0x55, 0x98, 0x4d, - 0x46, 0x33, 0x8c, 0xfa, 0x4c, 0x22, 0x98, 0xf8, 0x02, 0x14, 0xb8, 0x20, 0x4c, 0xa8, 0xca, 0xce, - 0x9b, 0xc1, 0x0b, 0x2e, 0x41, 0x9e, 0xba, 0x3d, 0x55, 0xa0, 0x79, 0x53, 0x3e, 0xe2, 0x1a, 0x94, - 0x05, 0x61, 0x36, 0x15, 0xd6, 0xbe, 0xa2, 0x64, 0x3d, 0x74, 0x7a, 0xe2, 0x41, 0xe5, 0x8c, 0x42, - 0xcc, 0x07, 0x47, 0x01, 0xd9, 0x4f, 0xe4, 0xc1, 0x58, 0x23, 0x3d, 0xfb, 0xc2, 0x46, 0x7a, 0x6e, - 0xac, 0x91, 0x1e, 0xc0, 0x6c, 0xd2, 0x7e, 0x5c, 0x87, 0x82, 0x1a, 0x56, 0xca, 0xd6, 0x62, 0x63, - 0x41, 0x9b, 0x1f, 0x12, 0x60, 0x06, 0x38, 0x7c, 0x05, 0x66, 0x06, 0x94, 0xb8, 0x56, 0x37, 0xd4, - 0xa3, 0x12, 0x2b, 0x67, 0x9e, 0x97, 0xc2, 0x48, 0xb7, 0xf1, 0x0b, 0x82, 0x45, 0xad, 0xb3, 0xc3, - 0x22, 0x7e, 0x0d, 0xce, 0x27, 0x8c, 0x45, 0xca, 0xd8, 0xe2, 0x7e, 0xcc, 0xcc, 0x1d, 0x28, 0x45, - 0x57, 0x84, 0x8e, 0x09, 0xda, 0x5f, 0xb1, 0x61, 0xe8, 0x38, 0x26, 0x6f, 0x32, 0xe7, 0xba, 0xc9, - 0x9b, 0x75, 0x8d, 0x3d, 0xaf, 0x6b, 0xec, 0x7f, 0x23, 0xc0, 0xa3, 0x51, 0x73, 0x9c, 0x1e, 0xa7, - 0xe9, 0x3a, 0xf8, 0xf5, 0x44, 0xf1, 0x49, 0x60, 0x41, 0x01, 0x47, 0xa5, 0x25, 0x51, 0xe9, 0x34, - 0x3a, 0xfb, 0xc2, 0x34, 0x3a, 0xa7, 0x49, 0xa3, 0xe9, 0x51, 0x1a, 0x25, 0xd3, 0x22, 0x7f, 0xaa, - 0xf9, 0xfa, 0x10, 0xca, 0x09, 0x9b, 0xc3, 0x28, 0xbd, 0x07, 0x70, 0xbc, 0xa4, 0x44, 0x13, 0xb5, - 0x92, 0xd5, 0x40, 0xcc, 0x18, 0x76, 0xe2, 0x31, 0xfa, 0x97, 0xf4, 0xb6, 0x60, 0x94, 0x0c, 0x12, - 0xde, 0x3e, 0xa1, 0x31, 0x6b, 0x6b, 0x35, 0xf7, 0x5f, 0xd4, 0xaa, 0xc4, 0x3d, 0x20, 0xac, 0xa7, - 0xaa, 0xb3, 0x60, 0x06, 0x2f, 0x32, 0x9b, 0x85, 0x27, 0x48, 0xdf, 0x52, 0xaf, 0x5c, 0xc5, 0xb1, - 0x60, 0x16, 0x95, 0xac, 0xa3, 0x44, 0xc6, 0x7d, 0x28, 0x27, 0xec, 0x7c, 0x59, 0x0f, 0x37, 0xbe, - 0x47, 0x70, 0x21, 0xd0, 0xe8, 0xb8, 0xb6, 0x3c, 0xed, 0x50, 0x76, 0xe4, 0x74, 0x29, 0x7e, 0x06, - 0xc5, 0xd8, 0x4d, 0xf8, 0x9a, 0x4e, 0x5b, 0xda, 0xe5, 0xd5, 0xeb, 0x27, 0xe2, 0x02, 0xca, 0xc6, - 0xe2, 0xf3, 0xdf, 0xff, 0xfc, 0x2e, 0xf7, 0x7f, 0xa3, 0x74, 0xbc, 0x39, 0xaf, 0x73, 0x05, 0x5b, - 0x47, 0xab, 0x6f, 0xa3, 0xc6, 0x6f, 0xd3, 0x30, 0x13, 0xa3, 0xf3, 0xf1, 0x1a, 0xfe, 0x12, 0x41, - 0x59, 0x33, 0xd0, 0x71, 0xed, 0x74, 0xdb, 0x49, 0x75, 0x29, 0xc2, 0xc7, 0x36, 0xdf, 0xda, 0xfd, - 0x68, 0xf3, 0x35, 0xae, 0x28, 0x5e, 0x4b, 0x46, 0x65, 0x7c, 0x6f, 0xe6, 0xeb, 0x8e, 0x52, 0xba, - 0x8e, 0x56, 0xf1, 0x0f, 0x08, 0x70, 0x7a, 0x1f, 0xc0, 0x37, 0x74, 0x54, 0x32, 0xf7, 0x86, 0x93, - 0x98, 0xdc, 0x54, 0x4c, 0xd6, 0x8c, 0xb7, 0x52, 0x4c, 0xea, 0x4f, 0x53, 0x79, 0xfb, 0x6c, 0x3d, - 0xd8, 0x28, 0x42, 0x76, 0x65, 0xcd, 0x9a, 0xab, 0xf7, 0x54, 0xf6, 0x7e, 0x5e, 0xad, 0x4f, 0x8c, - 0x0f, 0x63, 0x9a, 0xed, 0xbb, 0x3a, 0x57, 0x9f, 0x49, 0x76, 0x3f, 0x22, 0xc0, 0xe9, 0xdd, 0x44, - 0xef, 0xbb, 0xcc, 0x1d, 0xa6, 0x7a, 0xe2, 0x02, 0x62, 0xbc, 0xaf, 0xc8, 0xdc, 0x6c, 0x5c, 0x9d, - 0xcc, 0x7d, 0x63, 0x7b, 0x0e, 0xfe, 0x0a, 0x01, 0x4e, 0x6f, 0x1d, 0x7a, 0x9a, 0x99, 0xdb, 0x49, - 0xf5, 0x62, 0x6a, 0xc5, 0x69, 0xca, 0x3f, 0x28, 0xe3, 0x86, 0x22, 0x77, 0x7d, 0x75, 0x32, 0x72, - 0xf8, 0x1b, 0x04, 0x73, 0x63, 0xab, 0x0b, 0x5e, 0xd5, 0x31, 0xd1, 0xef, 0x37, 0x13, 0x78, 0x2b, - 0x24, 0x84, 0x27, 0x24, 0xf4, 0x33, 0x82, 0xb2, 0x66, 0x30, 0xeb, 0x53, 0x2c, 0x7b, 0x5d, 0xd2, - 0xa7, 0xd8, 0x0b, 0x26, 0x7e, 0x14, 0x55, 0xfc, 0xee, 0x44, 0x3c, 0xeb, 0xd1, 0xf8, 0x0e, 0x27, - 0x3f, 0x7e, 0x0a, 0xc5, 0xd8, 0x84, 0xca, 0xe8, 0x6a, 0xa9, 0xb1, 0x9d, 0xd1, 0xd5, 0xd2, 0xa3, - 0x4e, 0xd3, 0xd5, 0x46, 0x99, 0x7f, 0x9b, 0xc2, 0xc5, 0xae, 0x37, 0xd0, 0xa8, 0xba, 0x0d, 0x4a, - 0x4b, 0x5b, 0xe6, 0x48, 0x1b, 0x7d, 0xb6, 0x1e, 0x21, 0xbc, 0x3e, 0x71, 0xed, 0x9a, 0xc7, 0x6c, - 0xf9, 0x33, 0xaf, 0x32, 0xa8, 0x1e, 0x1c, 0x11, 0xdf, 0xe1, 0xf1, 0x1f, 0xfc, 0x5b, 0xd1, 0xf3, - 0x3f, 0x08, 0xed, 0x9f, 0x51, 0xc8, 0x77, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x9b, 0xce, - 0x6e, 0xa3, 0x10, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/references.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/references.pb.go deleted file mode 100644 index ef5e0e38..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/references.pb.go +++ /dev/null @@ -1,864 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/references.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A reference is a canonical assembled DNA sequence, intended to act as a -// reference coordinate space for other genomic annotations. A single reference -// might represent the human chromosome 1 or mitochandrial DNA, for instance. A -// reference belongs to one or more reference sets. -// -// For more genomics resource definitions, see [Fundamentals of Google -// Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) -type Reference struct { - // The server-generated reference ID, unique across all references. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The length of this reference's sequence. - Length int64 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` - // MD5 of the upper-case sequence excluding all whitespace characters (this - // is equivalent to SQ:M5 in SAM). This value is represented in lower case - // hexadecimal format. - Md5Checksum string `protobuf:"bytes,3,opt,name=md5checksum" json:"md5checksum,omitempty"` - // The name of this reference, for example `22`. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` - // The URI from which the sequence was obtained. Typically specifies a FASTA - // format file. - SourceUri string `protobuf:"bytes,5,opt,name=source_uri,json=sourceUri" json:"source_uri,omitempty"` - // All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally - // with a version number, for example `GCF_000001405.26`. - SourceAccessions []string `protobuf:"bytes,6,rep,name=source_accessions,json=sourceAccessions" json:"source_accessions,omitempty"` - // ID from http://www.ncbi.nlm.nih.gov/taxonomy. For example, 9606 for human. - NcbiTaxonId int32 `protobuf:"varint,7,opt,name=ncbi_taxon_id,json=ncbiTaxonId" json:"ncbi_taxon_id,omitempty"` -} - -func (m *Reference) Reset() { *m = Reference{} } -func (m *Reference) String() string { return proto.CompactTextString(m) } -func (*Reference) ProtoMessage() {} -func (*Reference) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{0} } - -func (m *Reference) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Reference) GetLength() int64 { - if m != nil { - return m.Length - } - return 0 -} - -func (m *Reference) GetMd5Checksum() string { - if m != nil { - return m.Md5Checksum - } - return "" -} - -func (m *Reference) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Reference) GetSourceUri() string { - if m != nil { - return m.SourceUri - } - return "" -} - -func (m *Reference) GetSourceAccessions() []string { - if m != nil { - return m.SourceAccessions - } - return nil -} - -func (m *Reference) GetNcbiTaxonId() int32 { - if m != nil { - return m.NcbiTaxonId - } - return 0 -} - -// A reference set is a set of references which typically comprise a reference -// assembly for a species, such as `GRCh38` which is representative -// of the human genome. A reference set defines a common coordinate space for -// comparing reference-aligned experimental data. A reference set contains 1 or -// more references. -// -// For more genomics resource definitions, see [Fundamentals of Google -// Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) -type ReferenceSet struct { - // The server-generated reference set ID, unique across all reference sets. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The IDs of the reference objects that are part of this set. - // `Reference.md5checksum` must be unique within this set. - ReferenceIds []string `protobuf:"bytes,2,rep,name=reference_ids,json=referenceIds" json:"reference_ids,omitempty"` - // Order-independent MD5 checksum which identifies this reference set. The - // checksum is computed by sorting all lower case hexidecimal string - // `reference.md5checksum` (for all reference in this set) in - // ascending lexicographic order, concatenating, and taking the MD5 of that - // value. The resulting value is represented in lower case hexadecimal format. - Md5Checksum string `protobuf:"bytes,3,opt,name=md5checksum" json:"md5checksum,omitempty"` - // ID from http://www.ncbi.nlm.nih.gov/taxonomy (for example, 9606 for human) - // indicating the species which this reference set is intended to model. Note - // that contained references may specify a different `ncbiTaxonId`, as - // assemblies may contain reference sequences which do not belong to the - // modeled species, for example EBV in a human reference genome. - NcbiTaxonId int32 `protobuf:"varint,4,opt,name=ncbi_taxon_id,json=ncbiTaxonId" json:"ncbi_taxon_id,omitempty"` - // Free text description of this reference set. - Description string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"` - // Public id of this reference set, such as `GRCh37`. - AssemblyId string `protobuf:"bytes,6,opt,name=assembly_id,json=assemblyId" json:"assembly_id,omitempty"` - // The URI from which the references were obtained. - SourceUri string `protobuf:"bytes,7,opt,name=source_uri,json=sourceUri" json:"source_uri,omitempty"` - // All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally - // with a version number, for example `NC_000001.11`. - SourceAccessions []string `protobuf:"bytes,8,rep,name=source_accessions,json=sourceAccessions" json:"source_accessions,omitempty"` -} - -func (m *ReferenceSet) Reset() { *m = ReferenceSet{} } -func (m *ReferenceSet) String() string { return proto.CompactTextString(m) } -func (*ReferenceSet) ProtoMessage() {} -func (*ReferenceSet) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{1} } - -func (m *ReferenceSet) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *ReferenceSet) GetReferenceIds() []string { - if m != nil { - return m.ReferenceIds - } - return nil -} - -func (m *ReferenceSet) GetMd5Checksum() string { - if m != nil { - return m.Md5Checksum - } - return "" -} - -func (m *ReferenceSet) GetNcbiTaxonId() int32 { - if m != nil { - return m.NcbiTaxonId - } - return 0 -} - -func (m *ReferenceSet) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *ReferenceSet) GetAssemblyId() string { - if m != nil { - return m.AssemblyId - } - return "" -} - -func (m *ReferenceSet) GetSourceUri() string { - if m != nil { - return m.SourceUri - } - return "" -} - -func (m *ReferenceSet) GetSourceAccessions() []string { - if m != nil { - return m.SourceAccessions - } - return nil -} - -type SearchReferenceSetsRequest struct { - // If present, return reference sets for which the - // [md5checksum][google.genomics.v1.ReferenceSet.md5checksum] matches exactly. - Md5Checksums []string `protobuf:"bytes,1,rep,name=md5checksums" json:"md5checksums,omitempty"` - // If present, return reference sets for which a prefix of any of - // [sourceAccessions][google.genomics.v1.ReferenceSet.source_accessions] - // match any of these strings. Accession numbers typically have a main number - // and a version, for example `NC_000001.11`. - Accessions []string `protobuf:"bytes,2,rep,name=accessions" json:"accessions,omitempty"` - // If present, return reference sets for which a substring of their - // `assemblyId` matches this string (case insensitive). - AssemblyId string `protobuf:"bytes,3,opt,name=assembly_id,json=assemblyId" json:"assembly_id,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 1024. The maximum value is 4096. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *SearchReferenceSetsRequest) Reset() { *m = SearchReferenceSetsRequest{} } -func (m *SearchReferenceSetsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchReferenceSetsRequest) ProtoMessage() {} -func (*SearchReferenceSetsRequest) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{2} } - -func (m *SearchReferenceSetsRequest) GetMd5Checksums() []string { - if m != nil { - return m.Md5Checksums - } - return nil -} - -func (m *SearchReferenceSetsRequest) GetAccessions() []string { - if m != nil { - return m.Accessions - } - return nil -} - -func (m *SearchReferenceSetsRequest) GetAssemblyId() string { - if m != nil { - return m.AssemblyId - } - return "" -} - -func (m *SearchReferenceSetsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchReferenceSetsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -type SearchReferenceSetsResponse struct { - // The matching references sets. - ReferenceSets []*ReferenceSet `protobuf:"bytes,1,rep,name=reference_sets,json=referenceSets" json:"reference_sets,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchReferenceSetsResponse) Reset() { *m = SearchReferenceSetsResponse{} } -func (m *SearchReferenceSetsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchReferenceSetsResponse) ProtoMessage() {} -func (*SearchReferenceSetsResponse) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{3} } - -func (m *SearchReferenceSetsResponse) GetReferenceSets() []*ReferenceSet { - if m != nil { - return m.ReferenceSets - } - return nil -} - -func (m *SearchReferenceSetsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -type GetReferenceSetRequest struct { - // The ID of the reference set. - ReferenceSetId string `protobuf:"bytes,1,opt,name=reference_set_id,json=referenceSetId" json:"reference_set_id,omitempty"` -} - -func (m *GetReferenceSetRequest) Reset() { *m = GetReferenceSetRequest{} } -func (m *GetReferenceSetRequest) String() string { return proto.CompactTextString(m) } -func (*GetReferenceSetRequest) ProtoMessage() {} -func (*GetReferenceSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{4} } - -func (m *GetReferenceSetRequest) GetReferenceSetId() string { - if m != nil { - return m.ReferenceSetId - } - return "" -} - -type SearchReferencesRequest struct { - // If present, return references for which the - // [md5checksum][google.genomics.v1.Reference.md5checksum] matches exactly. - Md5Checksums []string `protobuf:"bytes,1,rep,name=md5checksums" json:"md5checksums,omitempty"` - // If present, return references for which a prefix of any of - // [sourceAccessions][google.genomics.v1.Reference.source_accessions] match - // any of these strings. Accession numbers typically have a main number and a - // version, for example `GCF_000001405.26`. - Accessions []string `protobuf:"bytes,2,rep,name=accessions" json:"accessions,omitempty"` - // If present, return only references which belong to this reference set. - ReferenceSetId string `protobuf:"bytes,3,opt,name=reference_set_id,json=referenceSetId" json:"reference_set_id,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 1024. The maximum value is 4096. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *SearchReferencesRequest) Reset() { *m = SearchReferencesRequest{} } -func (m *SearchReferencesRequest) String() string { return proto.CompactTextString(m) } -func (*SearchReferencesRequest) ProtoMessage() {} -func (*SearchReferencesRequest) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{5} } - -func (m *SearchReferencesRequest) GetMd5Checksums() []string { - if m != nil { - return m.Md5Checksums - } - return nil -} - -func (m *SearchReferencesRequest) GetAccessions() []string { - if m != nil { - return m.Accessions - } - return nil -} - -func (m *SearchReferencesRequest) GetReferenceSetId() string { - if m != nil { - return m.ReferenceSetId - } - return "" -} - -func (m *SearchReferencesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchReferencesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -type SearchReferencesResponse struct { - // The matching references. - References []*Reference `protobuf:"bytes,1,rep,name=references" json:"references,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchReferencesResponse) Reset() { *m = SearchReferencesResponse{} } -func (m *SearchReferencesResponse) String() string { return proto.CompactTextString(m) } -func (*SearchReferencesResponse) ProtoMessage() {} -func (*SearchReferencesResponse) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{6} } - -func (m *SearchReferencesResponse) GetReferences() []*Reference { - if m != nil { - return m.References - } - return nil -} - -func (m *SearchReferencesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -type GetReferenceRequest struct { - // The ID of the reference. - ReferenceId string `protobuf:"bytes,1,opt,name=reference_id,json=referenceId" json:"reference_id,omitempty"` -} - -func (m *GetReferenceRequest) Reset() { *m = GetReferenceRequest{} } -func (m *GetReferenceRequest) String() string { return proto.CompactTextString(m) } -func (*GetReferenceRequest) ProtoMessage() {} -func (*GetReferenceRequest) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{7} } - -func (m *GetReferenceRequest) GetReferenceId() string { - if m != nil { - return m.ReferenceId - } - return "" -} - -type ListBasesRequest struct { - // The ID of the reference. - ReferenceId string `protobuf:"bytes,1,opt,name=reference_id,json=referenceId" json:"reference_id,omitempty"` - // The start position (0-based) of this query. Defaults to 0. - Start int64 `protobuf:"varint,2,opt,name=start" json:"start,omitempty"` - // The end position (0-based, exclusive) of this query. Defaults to the length - // of this reference. - End int64 `protobuf:"varint,3,opt,name=end" json:"end,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of bases to return in a single page. If unspecified, - // defaults to 200Kbp (kilo base pairs). The maximum value is 10Mbp (mega base - // pairs). - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListBasesRequest) Reset() { *m = ListBasesRequest{} } -func (m *ListBasesRequest) String() string { return proto.CompactTextString(m) } -func (*ListBasesRequest) ProtoMessage() {} -func (*ListBasesRequest) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{8} } - -func (m *ListBasesRequest) GetReferenceId() string { - if m != nil { - return m.ReferenceId - } - return "" -} - -func (m *ListBasesRequest) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *ListBasesRequest) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *ListBasesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListBasesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -type ListBasesResponse struct { - // The offset position (0-based) of the given `sequence` from the - // start of this `Reference`. This value will differ for each page - // in a paginated request. - Offset int64 `protobuf:"varint,1,opt,name=offset" json:"offset,omitempty"` - // A substring of the bases that make up this reference. - Sequence string `protobuf:"bytes,2,opt,name=sequence" json:"sequence,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListBasesResponse) Reset() { *m = ListBasesResponse{} } -func (m *ListBasesResponse) String() string { return proto.CompactTextString(m) } -func (*ListBasesResponse) ProtoMessage() {} -func (*ListBasesResponse) Descriptor() ([]byte, []int) { return fileDescriptor10, []int{9} } - -func (m *ListBasesResponse) GetOffset() int64 { - if m != nil { - return m.Offset - } - return 0 -} - -func (m *ListBasesResponse) GetSequence() string { - if m != nil { - return m.Sequence - } - return "" -} - -func (m *ListBasesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func init() { - proto.RegisterType((*Reference)(nil), "google.genomics.v1.Reference") - proto.RegisterType((*ReferenceSet)(nil), "google.genomics.v1.ReferenceSet") - proto.RegisterType((*SearchReferenceSetsRequest)(nil), "google.genomics.v1.SearchReferenceSetsRequest") - proto.RegisterType((*SearchReferenceSetsResponse)(nil), "google.genomics.v1.SearchReferenceSetsResponse") - proto.RegisterType((*GetReferenceSetRequest)(nil), "google.genomics.v1.GetReferenceSetRequest") - proto.RegisterType((*SearchReferencesRequest)(nil), "google.genomics.v1.SearchReferencesRequest") - proto.RegisterType((*SearchReferencesResponse)(nil), "google.genomics.v1.SearchReferencesResponse") - proto.RegisterType((*GetReferenceRequest)(nil), "google.genomics.v1.GetReferenceRequest") - proto.RegisterType((*ListBasesRequest)(nil), "google.genomics.v1.ListBasesRequest") - proto.RegisterType((*ListBasesResponse)(nil), "google.genomics.v1.ListBasesResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ReferenceServiceV1 service - -type ReferenceServiceV1Client interface { - // Searches for reference sets which match the given criteria. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchReferenceSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L71) - SearchReferenceSets(ctx context.Context, in *SearchReferenceSetsRequest, opts ...grpc.CallOption) (*SearchReferenceSetsResponse, error) - // Gets a reference set. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.getReferenceSet](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L83). - GetReferenceSet(ctx context.Context, in *GetReferenceSetRequest, opts ...grpc.CallOption) (*ReferenceSet, error) - // Searches for references which match the given criteria. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchReferences](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L146). - SearchReferences(ctx context.Context, in *SearchReferencesRequest, opts ...grpc.CallOption) (*SearchReferencesResponse, error) - // Gets a reference. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.getReference](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L158). - GetReference(ctx context.Context, in *GetReferenceRequest, opts ...grpc.CallOption) (*Reference, error) - // Lists the bases in a reference, optionally restricted to a range. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.getReferenceBases](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L221). - ListBases(ctx context.Context, in *ListBasesRequest, opts ...grpc.CallOption) (*ListBasesResponse, error) -} - -type referenceServiceV1Client struct { - cc *grpc.ClientConn -} - -func NewReferenceServiceV1Client(cc *grpc.ClientConn) ReferenceServiceV1Client { - return &referenceServiceV1Client{cc} -} - -func (c *referenceServiceV1Client) SearchReferenceSets(ctx context.Context, in *SearchReferenceSetsRequest, opts ...grpc.CallOption) (*SearchReferenceSetsResponse, error) { - out := new(SearchReferenceSetsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReferenceServiceV1/SearchReferenceSets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *referenceServiceV1Client) GetReferenceSet(ctx context.Context, in *GetReferenceSetRequest, opts ...grpc.CallOption) (*ReferenceSet, error) { - out := new(ReferenceSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReferenceServiceV1/GetReferenceSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *referenceServiceV1Client) SearchReferences(ctx context.Context, in *SearchReferencesRequest, opts ...grpc.CallOption) (*SearchReferencesResponse, error) { - out := new(SearchReferencesResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReferenceServiceV1/SearchReferences", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *referenceServiceV1Client) GetReference(ctx context.Context, in *GetReferenceRequest, opts ...grpc.CallOption) (*Reference, error) { - out := new(Reference) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReferenceServiceV1/GetReference", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *referenceServiceV1Client) ListBases(ctx context.Context, in *ListBasesRequest, opts ...grpc.CallOption) (*ListBasesResponse, error) { - out := new(ListBasesResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.ReferenceServiceV1/ListBases", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ReferenceServiceV1 service - -type ReferenceServiceV1Server interface { - // Searches for reference sets which match the given criteria. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchReferenceSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L71) - SearchReferenceSets(context.Context, *SearchReferenceSetsRequest) (*SearchReferenceSetsResponse, error) - // Gets a reference set. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.getReferenceSet](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L83). - GetReferenceSet(context.Context, *GetReferenceSetRequest) (*ReferenceSet, error) - // Searches for references which match the given criteria. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchReferences](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L146). - SearchReferences(context.Context, *SearchReferencesRequest) (*SearchReferencesResponse, error) - // Gets a reference. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.getReference](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L158). - GetReference(context.Context, *GetReferenceRequest) (*Reference, error) - // Lists the bases in a reference, optionally restricted to a range. - // - // For the definitions of references and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.getReferenceBases](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L221). - ListBases(context.Context, *ListBasesRequest) (*ListBasesResponse, error) -} - -func RegisterReferenceServiceV1Server(s *grpc.Server, srv ReferenceServiceV1Server) { - s.RegisterService(&_ReferenceServiceV1_serviceDesc, srv) -} - -func _ReferenceServiceV1_SearchReferenceSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchReferenceSetsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReferenceServiceV1Server).SearchReferenceSets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReferenceServiceV1/SearchReferenceSets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReferenceServiceV1Server).SearchReferenceSets(ctx, req.(*SearchReferenceSetsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReferenceServiceV1_GetReferenceSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetReferenceSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReferenceServiceV1Server).GetReferenceSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReferenceServiceV1/GetReferenceSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReferenceServiceV1Server).GetReferenceSet(ctx, req.(*GetReferenceSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReferenceServiceV1_SearchReferences_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchReferencesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReferenceServiceV1Server).SearchReferences(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReferenceServiceV1/SearchReferences", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReferenceServiceV1Server).SearchReferences(ctx, req.(*SearchReferencesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReferenceServiceV1_GetReference_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetReferenceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReferenceServiceV1Server).GetReference(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReferenceServiceV1/GetReference", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReferenceServiceV1Server).GetReference(ctx, req.(*GetReferenceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ReferenceServiceV1_ListBases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListBasesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ReferenceServiceV1Server).ListBases(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.ReferenceServiceV1/ListBases", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ReferenceServiceV1Server).ListBases(ctx, req.(*ListBasesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ReferenceServiceV1_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.genomics.v1.ReferenceServiceV1", - HandlerType: (*ReferenceServiceV1Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SearchReferenceSets", - Handler: _ReferenceServiceV1_SearchReferenceSets_Handler, - }, - { - MethodName: "GetReferenceSet", - Handler: _ReferenceServiceV1_GetReferenceSet_Handler, - }, - { - MethodName: "SearchReferences", - Handler: _ReferenceServiceV1_SearchReferences_Handler, - }, - { - MethodName: "GetReference", - Handler: _ReferenceServiceV1_GetReference_Handler, - }, - { - MethodName: "ListBases", - Handler: _ReferenceServiceV1_ListBases_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/genomics/v1/references.proto", -} - -func init() { proto.RegisterFile("google/genomics/v1/references.proto", fileDescriptor10) } - -var fileDescriptor10 = []byte{ - // 851 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x41, 0x6f, 0x1b, 0x45, - 0x14, 0xd6, 0x78, 0x63, 0x37, 0x7e, 0x76, 0x12, 0xf7, 0x15, 0xc2, 0xca, 0x25, 0xd4, 0x6c, 0x9a, - 0x62, 0x35, 0x95, 0x57, 0x29, 0x42, 0x42, 0x45, 0x1c, 0xc8, 0xa5, 0x8a, 0xc4, 0x21, 0xda, 0x14, - 0x0e, 0x5c, 0x56, 0x9b, 0xdd, 0x89, 0x33, 0x34, 0xde, 0x31, 0x3b, 0x93, 0xa8, 0xb4, 0xca, 0x01, - 0x24, 0x8e, 0xc0, 0x81, 0x0b, 0x88, 0xdf, 0xc2, 0x89, 0x9f, 0xc0, 0x09, 0x71, 0xe5, 0x47, 0x70, - 0x44, 0x33, 0x3b, 0xbb, 0x1e, 0xaf, 0x97, 0xd8, 0x52, 0xb9, 0xed, 0x7c, 0xf3, 0xe6, 0xcd, 0xf7, - 0x7d, 0x6f, 0xde, 0xec, 0xc0, 0xee, 0x98, 0xf3, 0xf1, 0x05, 0xf5, 0xc7, 0x34, 0xe5, 0x13, 0x16, - 0x0b, 0xff, 0xea, 0xc0, 0xcf, 0xe8, 0x19, 0xcd, 0x68, 0x1a, 0x53, 0x31, 0x9a, 0x66, 0x5c, 0x72, - 0xc4, 0x3c, 0x68, 0x54, 0x04, 0x8d, 0xae, 0x0e, 0xfa, 0x6f, 0x9b, 0x85, 0xd1, 0x94, 0xf9, 0x51, - 0x9a, 0x72, 0x19, 0x49, 0xc6, 0x53, 0xb3, 0xc2, 0xfb, 0x93, 0x40, 0x3b, 0x28, 0xd2, 0xe0, 0x26, - 0x34, 0x58, 0xe2, 0x92, 0x01, 0x19, 0xb6, 0x83, 0x06, 0x4b, 0x70, 0x1b, 0x5a, 0x17, 0x34, 0x1d, - 0xcb, 0x73, 0xb7, 0x31, 0x20, 0x43, 0x27, 0x30, 0x23, 0x1c, 0x40, 0x67, 0x92, 0x7c, 0x10, 0x9f, - 0xd3, 0xf8, 0xb9, 0xb8, 0x9c, 0xb8, 0x8e, 0x5e, 0x60, 0x43, 0x88, 0xb0, 0x96, 0x46, 0x13, 0xea, - 0xae, 0xe9, 0x29, 0xfd, 0x8d, 0x3b, 0x00, 0x82, 0x5f, 0x66, 0x31, 0x0d, 0x2f, 0x33, 0xe6, 0x36, - 0xf5, 0x4c, 0x3b, 0x47, 0x3e, 0xcb, 0x18, 0xee, 0xc3, 0x6d, 0x33, 0x1d, 0xc5, 0x31, 0x15, 0x42, - 0xb1, 0x74, 0x5b, 0x03, 0x67, 0xd8, 0x0e, 0x7a, 0xf9, 0xc4, 0x27, 0x25, 0x8e, 0x1e, 0x6c, 0xa4, - 0xf1, 0x29, 0x0b, 0x65, 0xf4, 0x82, 0xa7, 0x21, 0x4b, 0xdc, 0x5b, 0x03, 0x32, 0x6c, 0x06, 0x1d, - 0x05, 0x3e, 0x53, 0xd8, 0x51, 0xe2, 0xfd, 0xdc, 0x80, 0x6e, 0xa9, 0xed, 0x84, 0xca, 0x05, 0x79, - 0xbb, 0xb0, 0x51, 0x5a, 0x18, 0xb2, 0x44, 0xb8, 0x0d, 0xbd, 0x5b, 0xb7, 0x04, 0x8f, 0x12, 0xb1, - 0x82, 0xd6, 0x05, 0x2e, 0x6b, 0x0b, 0x5c, 0x54, 0x96, 0x84, 0x8a, 0x38, 0x63, 0x53, 0xe5, 0xbe, - 0x11, 0x6f, 0x43, 0x78, 0x0f, 0x3a, 0x91, 0x10, 0x74, 0x72, 0x7a, 0xf1, 0xb5, 0xca, 0xd1, 0xd2, - 0x11, 0x50, 0x40, 0x47, 0x49, 0xc5, 0xbe, 0x5b, 0x2b, 0xd9, 0xb7, 0x5e, 0x6f, 0x9f, 0xf7, 0x1b, - 0x81, 0xfe, 0x09, 0x8d, 0xb2, 0xf8, 0xdc, 0x36, 0x48, 0x04, 0xf4, 0xab, 0x4b, 0x2a, 0x24, 0x7a, - 0xd0, 0xb5, 0x04, 0x0a, 0x97, 0xe4, 0xbe, 0xd8, 0x18, 0xbe, 0x03, 0x60, 0x6d, 0x94, 0x3b, 0x67, - 0x21, 0x55, 0x3d, 0x4e, 0x9d, 0x9e, 0x69, 0x34, 0xa6, 0xa1, 0xe4, 0xcf, 0x69, 0x6a, 0x0e, 0x4a, - 0x5b, 0x21, 0xcf, 0x14, 0x80, 0x77, 0x41, 0x0f, 0x42, 0xc1, 0x5e, 0x52, 0xed, 0x57, 0x33, 0x58, - 0x57, 0xc0, 0x09, 0x7b, 0x49, 0xbd, 0x1f, 0x08, 0xdc, 0xad, 0xe5, 0x2f, 0xa6, 0x3c, 0x15, 0x14, - 0x9f, 0xc2, 0xe6, 0xac, 0xb2, 0x82, 0xca, 0x5c, 0x42, 0xe7, 0xf1, 0x60, 0xb4, 0xd8, 0x21, 0x23, - 0x3b, 0x45, 0x30, 0x3b, 0x11, 0x2a, 0x21, 0x3e, 0x80, 0xad, 0x94, 0xbe, 0x90, 0xa1, 0xc5, 0xb4, - 0xa1, 0x99, 0x6e, 0x28, 0xf8, 0xb8, 0x60, 0xeb, 0x1d, 0xc2, 0xf6, 0x53, 0x2a, 0xe7, 0x32, 0x19, - 0x2f, 0x87, 0xd0, 0x9b, 0xa3, 0x12, 0x96, 0x47, 0x70, 0xd3, 0xde, 0xea, 0x28, 0xf1, 0x7e, 0x27, - 0xf0, 0x56, 0x45, 0xd4, 0xff, 0x5a, 0x91, 0x3a, 0x26, 0x4e, 0x1d, 0x93, 0xd7, 0x2a, 0xcd, 0x37, - 0x04, 0xdc, 0x45, 0x15, 0xa6, 0x2e, 0x1f, 0x03, 0xcc, 0x2e, 0x2d, 0x53, 0x93, 0x9d, 0x1b, 0x6b, - 0x12, 0x58, 0x0b, 0x56, 0xae, 0xc6, 0x87, 0x70, 0xc7, 0xae, 0x46, 0x61, 0xe2, 0xbb, 0xd0, 0xb5, - 0xfb, 0xdd, 0x94, 0xa1, 0x63, 0xb5, 0xbb, 0xf7, 0x0b, 0x81, 0xde, 0xa7, 0x4c, 0xc8, 0xc3, 0x48, - 0xcc, 0xcc, 0x5f, 0xbe, 0x0e, 0xdf, 0x80, 0xa6, 0x90, 0x51, 0x26, 0xcd, 0x45, 0x99, 0x0f, 0xb0, - 0x07, 0x0e, 0x4d, 0x73, 0x93, 0x9d, 0x40, 0x7d, 0xbe, 0x96, 0xb3, 0x1c, 0x6e, 0x5b, 0xd4, 0x8c, - 0xa3, 0xdb, 0xd0, 0xe2, 0x67, 0x67, 0x82, 0x4a, 0xcd, 0xca, 0x09, 0xcc, 0x08, 0xfb, 0xb0, 0x2e, - 0x14, 0xfd, 0x34, 0xa6, 0xc6, 0xa3, 0x72, 0x5c, 0x67, 0xa3, 0x53, 0x63, 0xe3, 0xe3, 0xbf, 0x9a, - 0x80, 0xd6, 0x91, 0xce, 0xae, 0x58, 0x4c, 0x3f, 0x3f, 0xc0, 0x5f, 0x09, 0xdc, 0xa9, 0x69, 0x3e, - 0x1c, 0xd5, 0x15, 0xf2, 0xbf, 0x6f, 0x99, 0xbe, 0xbf, 0x72, 0x7c, 0xae, 0xd5, 0xdb, 0xfd, 0xf6, - 0x8f, 0xbf, 0x7f, 0x6a, 0xec, 0x78, 0xee, 0xfc, 0xcf, 0x8f, 0x4a, 0xe1, 0x0b, 0xbd, 0xec, 0x09, - 0x79, 0x88, 0xdf, 0x13, 0xd8, 0xaa, 0xb4, 0x22, 0x3e, 0xac, 0xdb, 0xa9, 0xbe, 0x5f, 0xfb, 0x4b, - 0xaf, 0x08, 0xef, 0x91, 0xa6, 0xf1, 0x00, 0xef, 0x2f, 0xd2, 0x78, 0x55, 0x6d, 0xb0, 0x6b, 0xfc, - 0x91, 0x40, 0xaf, 0xda, 0x0f, 0xb8, 0xbf, 0x82, 0xf4, 0xd2, 0xa7, 0x47, 0xab, 0x05, 0x1b, 0x93, - 0x06, 0x9a, 0x5d, 0xdf, 0x7b, 0x73, 0x9e, 0x9d, 0xe5, 0xd0, 0x35, 0x74, 0x6d, 0xed, 0xf8, 0xde, - 0x32, 0x77, 0x0a, 0x22, 0x37, 0x77, 0xaa, 0xb7, 0xa7, 0x77, 0xbe, 0x87, 0x3b, 0x95, 0x9d, 0x5f, - 0xd9, 0xcd, 0x73, 0x8d, 0xdf, 0x11, 0x68, 0x97, 0xe7, 0x18, 0xef, 0xd7, 0xe5, 0xac, 0x76, 0x60, - 0x7f, 0x6f, 0x49, 0x94, 0xd1, 0xbe, 0xaf, 0x19, 0xec, 0xe1, 0xee, 0x8d, 0x0c, 0xfc, 0x53, 0xb5, - 0xe8, 0xf0, 0x4b, 0xd8, 0x8e, 0xf9, 0xa4, 0x26, 0xf1, 0xe1, 0xd6, 0xcc, 0xd6, 0x63, 0xf5, 0x4a, - 0x3a, 0x26, 0x5f, 0x3c, 0x29, 0xc2, 0xf8, 0x45, 0x94, 0x8e, 0x47, 0x3c, 0x1b, 0xab, 0x97, 0x98, - 0x7e, 0x43, 0xf9, 0xf9, 0x54, 0x34, 0x65, 0xc2, 0x7e, 0x9d, 0x7d, 0x54, 0x7c, 0xff, 0x43, 0xc8, - 0x69, 0x4b, 0x47, 0xbe, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x9f, 0xb6, 0x11, 0xc6, - 0x09, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1/variants.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1/variants.pb.go deleted file mode 100644 index 0bac56bb..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1/variants.pb.go +++ /dev/null @@ -1,2808 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1/variants.proto - -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf3 "github.com/golang/protobuf/ptypes/struct" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Operations to be performed during import on Variant info fields. -// These operations are set for each info field in the info_merge_config -// map of ImportVariantsRequest, which is plumbed down to the -// MergeVariantRequests generated by the import job. -type InfoMergeOperation int32 - -const ( - InfoMergeOperation_INFO_MERGE_OPERATION_UNSPECIFIED InfoMergeOperation = 0 - // By default, Variant info fields are persisted if the Variant doesn't - // already exist in the variantset. If the Variant is equivalent to a - // Variant already in the variantset, the incoming Variant's info field - // is ignored in favor of that of the already persisted Variant. - InfoMergeOperation_IGNORE_NEW InfoMergeOperation = 1 - // This operation removes an info field from the incoming Variant - // and persists this info field in each of the incoming Variant's Calls. - InfoMergeOperation_MOVE_TO_CALLS InfoMergeOperation = 2 -) - -var InfoMergeOperation_name = map[int32]string{ - 0: "INFO_MERGE_OPERATION_UNSPECIFIED", - 1: "IGNORE_NEW", - 2: "MOVE_TO_CALLS", -} -var InfoMergeOperation_value = map[string]int32{ - "INFO_MERGE_OPERATION_UNSPECIFIED": 0, - "IGNORE_NEW": 1, - "MOVE_TO_CALLS": 2, -} - -func (x InfoMergeOperation) String() string { - return proto.EnumName(InfoMergeOperation_name, int32(x)) -} -func (InfoMergeOperation) EnumDescriptor() ([]byte, []int) { return fileDescriptor11, []int{0} } - -type VariantSetMetadata_Type int32 - -const ( - VariantSetMetadata_TYPE_UNSPECIFIED VariantSetMetadata_Type = 0 - VariantSetMetadata_INTEGER VariantSetMetadata_Type = 1 - VariantSetMetadata_FLOAT VariantSetMetadata_Type = 2 - VariantSetMetadata_FLAG VariantSetMetadata_Type = 3 - VariantSetMetadata_CHARACTER VariantSetMetadata_Type = 4 - VariantSetMetadata_STRING VariantSetMetadata_Type = 5 -) - -var VariantSetMetadata_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "INTEGER", - 2: "FLOAT", - 3: "FLAG", - 4: "CHARACTER", - 5: "STRING", -} -var VariantSetMetadata_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "INTEGER": 1, - "FLOAT": 2, - "FLAG": 3, - "CHARACTER": 4, - "STRING": 5, -} - -func (x VariantSetMetadata_Type) String() string { - return proto.EnumName(VariantSetMetadata_Type_name, int32(x)) -} -func (VariantSetMetadata_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor11, []int{0, 0} } - -type ImportVariantsRequest_Format int32 - -const ( - ImportVariantsRequest_FORMAT_UNSPECIFIED ImportVariantsRequest_Format = 0 - // VCF (Variant Call Format). The VCF files may be gzip compressed. gVCF is - // also supported. - ImportVariantsRequest_FORMAT_VCF ImportVariantsRequest_Format = 1 - // Complete Genomics masterVarBeta format. The masterVarBeta files may - // be bzip2 compressed. - ImportVariantsRequest_FORMAT_COMPLETE_GENOMICS ImportVariantsRequest_Format = 2 -) - -var ImportVariantsRequest_Format_name = map[int32]string{ - 0: "FORMAT_UNSPECIFIED", - 1: "FORMAT_VCF", - 2: "FORMAT_COMPLETE_GENOMICS", -} -var ImportVariantsRequest_Format_value = map[string]int32{ - "FORMAT_UNSPECIFIED": 0, - "FORMAT_VCF": 1, - "FORMAT_COMPLETE_GENOMICS": 2, -} - -func (x ImportVariantsRequest_Format) String() string { - return proto.EnumName(ImportVariantsRequest_Format_name, int32(x)) -} -func (ImportVariantsRequest_Format) EnumDescriptor() ([]byte, []int) { - return fileDescriptor11, []int{6, 0} -} - -type ExportVariantSetRequest_Format int32 - -const ( - ExportVariantSetRequest_FORMAT_UNSPECIFIED ExportVariantSetRequest_Format = 0 - // Export the data to Google BigQuery. - ExportVariantSetRequest_FORMAT_BIGQUERY ExportVariantSetRequest_Format = 1 -) - -var ExportVariantSetRequest_Format_name = map[int32]string{ - 0: "FORMAT_UNSPECIFIED", - 1: "FORMAT_BIGQUERY", -} -var ExportVariantSetRequest_Format_value = map[string]int32{ - "FORMAT_UNSPECIFIED": 0, - "FORMAT_BIGQUERY": 1, -} - -func (x ExportVariantSetRequest_Format) String() string { - return proto.EnumName(ExportVariantSetRequest_Format_name, int32(x)) -} -func (ExportVariantSetRequest_Format) EnumDescriptor() ([]byte, []int) { - return fileDescriptor11, []int{9, 0} -} - -// Metadata describes a single piece of variant call metadata. -// These data include a top level key and either a single value string (value) -// or a list of key-value pairs (info.) -// Value and info are mutually exclusive. -type VariantSetMetadata struct { - // The top-level key. - Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - // The value field for simple metadata - Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - // User-provided ID field, not enforced by this API. - // Two or more pieces of structured metadata with identical - // id and key fields are considered equivalent. - Id string `protobuf:"bytes,4,opt,name=id" json:"id,omitempty"` - // The type of data. Possible types include: Integer, Float, - // Flag, Character, and String. - Type VariantSetMetadata_Type `protobuf:"varint,5,opt,name=type,enum=google.genomics.v1.VariantSetMetadata_Type" json:"type,omitempty"` - // The number of values that can be included in a field described by this - // metadata. - Number string `protobuf:"bytes,8,opt,name=number" json:"number,omitempty"` - // A textual description of this metadata. - Description string `protobuf:"bytes,7,opt,name=description" json:"description,omitempty"` - // Remaining structured metadata key-value pairs. This must be of the form - // map<string, string[]> (string key mapping to a list of string values). - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,3,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *VariantSetMetadata) Reset() { *m = VariantSetMetadata{} } -func (m *VariantSetMetadata) String() string { return proto.CompactTextString(m) } -func (*VariantSetMetadata) ProtoMessage() {} -func (*VariantSetMetadata) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{0} } - -func (m *VariantSetMetadata) GetKey() string { - if m != nil { - return m.Key - } - return "" -} - -func (m *VariantSetMetadata) GetValue() string { - if m != nil { - return m.Value - } - return "" -} - -func (m *VariantSetMetadata) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *VariantSetMetadata) GetType() VariantSetMetadata_Type { - if m != nil { - return m.Type - } - return VariantSetMetadata_TYPE_UNSPECIFIED -} - -func (m *VariantSetMetadata) GetNumber() string { - if m != nil { - return m.Number - } - return "" -} - -func (m *VariantSetMetadata) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *VariantSetMetadata) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -// A variant set is a collection of call sets and variants. It contains summary -// statistics of those contents. A variant set belongs to a dataset. -// -// For more genomics resource definitions, see [Fundamentals of Google -// Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) -type VariantSet struct { - // The dataset to which this variant set belongs. - DatasetId string `protobuf:"bytes,1,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // The server-generated variant set ID, unique across all variant sets. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // The reference set to which the variant set is mapped. The reference set - // describes the alignment provenance of the variant set, while the - // `referenceBounds` describe the shape of the actual variant data. The - // reference set's reference names are a superset of those found in the - // `referenceBounds`. - // - // For example, given a variant set that is mapped to the GRCh38 reference set - // and contains a single variant on reference 'X', `referenceBounds` would - // contain only an entry for 'X', while the associated reference set - // enumerates all possible references: '1', '2', 'X', 'Y', 'MT', etc. - ReferenceSetId string `protobuf:"bytes,6,opt,name=reference_set_id,json=referenceSetId" json:"reference_set_id,omitempty"` - // A list of all references used by the variants in a variant set - // with associated coordinate upper bounds for each one. - ReferenceBounds []*ReferenceBound `protobuf:"bytes,5,rep,name=reference_bounds,json=referenceBounds" json:"reference_bounds,omitempty"` - // The metadata associated with this variant set. - Metadata []*VariantSetMetadata `protobuf:"bytes,4,rep,name=metadata" json:"metadata,omitempty"` - // User-specified, mutable name. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` - // A textual description of this variant set. - Description string `protobuf:"bytes,8,opt,name=description" json:"description,omitempty"` -} - -func (m *VariantSet) Reset() { *m = VariantSet{} } -func (m *VariantSet) String() string { return proto.CompactTextString(m) } -func (*VariantSet) ProtoMessage() {} -func (*VariantSet) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{1} } - -func (m *VariantSet) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *VariantSet) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *VariantSet) GetReferenceSetId() string { - if m != nil { - return m.ReferenceSetId - } - return "" -} - -func (m *VariantSet) GetReferenceBounds() []*ReferenceBound { - if m != nil { - return m.ReferenceBounds - } - return nil -} - -func (m *VariantSet) GetMetadata() []*VariantSetMetadata { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *VariantSet) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *VariantSet) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// A variant represents a change in DNA sequence relative to a reference -// sequence. For example, a variant could represent a SNP or an insertion. -// Variants belong to a variant set. -// -// For more genomics resource definitions, see [Fundamentals of Google -// Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) -// -// Each of the calls on a variant represent a determination of genotype with -// respect to that variant. For example, a call might assign probability of 0.32 -// to the occurrence of a SNP named rs1234 in a sample named NA12345. A call -// belongs to a call set, which contains related calls typically from one -// sample. -type Variant struct { - // The ID of the variant set this variant belongs to. - VariantSetId string `protobuf:"bytes,15,opt,name=variant_set_id,json=variantSetId" json:"variant_set_id,omitempty"` - // The server-generated variant ID, unique across all variants. - Id string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` - // Names for the variant, for example a RefSNP ID. - Names []string `protobuf:"bytes,3,rep,name=names" json:"names,omitempty"` - // The date this variant was created, in milliseconds from the epoch. - Created int64 `protobuf:"varint,12,opt,name=created" json:"created,omitempty"` - // The reference on which this variant occurs. - // (such as `chr20` or `X`) - ReferenceName string `protobuf:"bytes,14,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The position at which this variant occurs (0-based). - // This corresponds to the first base of the string of reference bases. - Start int64 `protobuf:"varint,16,opt,name=start" json:"start,omitempty"` - // The end position (0-based) of this variant. This corresponds to the first - // base after the last base in the reference allele. So, the length of - // the reference allele is (end - start). This is useful for variants - // that don't explicitly give alternate bases, for example large deletions. - End int64 `protobuf:"varint,13,opt,name=end" json:"end,omitempty"` - // The reference bases for this variant. They start at the given - // position. - ReferenceBases string `protobuf:"bytes,6,opt,name=reference_bases,json=referenceBases" json:"reference_bases,omitempty"` - // The bases that appear instead of the reference bases. - AlternateBases []string `protobuf:"bytes,7,rep,name=alternate_bases,json=alternateBases" json:"alternate_bases,omitempty"` - // A measure of how likely this variant is to be real. - // A higher value is better. - Quality float64 `protobuf:"fixed64,8,opt,name=quality" json:"quality,omitempty"` - // A list of filters (normally quality filters) this variant has failed. - // `PASS` indicates this variant has passed all filters. - Filter []string `protobuf:"bytes,9,rep,name=filter" json:"filter,omitempty"` - // A map of additional variant information. This must be of the form - // map<string, string[]> (string key mapping to a list of string values). - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,10,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The variant calls for this particular variant. Each one represents the - // determination of genotype with respect to this variant. - Calls []*VariantCall `protobuf:"bytes,11,rep,name=calls" json:"calls,omitempty"` -} - -func (m *Variant) Reset() { *m = Variant{} } -func (m *Variant) String() string { return proto.CompactTextString(m) } -func (*Variant) ProtoMessage() {} -func (*Variant) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{2} } - -func (m *Variant) GetVariantSetId() string { - if m != nil { - return m.VariantSetId - } - return "" -} - -func (m *Variant) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *Variant) GetNames() []string { - if m != nil { - return m.Names - } - return nil -} - -func (m *Variant) GetCreated() int64 { - if m != nil { - return m.Created - } - return 0 -} - -func (m *Variant) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *Variant) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *Variant) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *Variant) GetReferenceBases() string { - if m != nil { - return m.ReferenceBases - } - return "" -} - -func (m *Variant) GetAlternateBases() []string { - if m != nil { - return m.AlternateBases - } - return nil -} - -func (m *Variant) GetQuality() float64 { - if m != nil { - return m.Quality - } - return 0 -} - -func (m *Variant) GetFilter() []string { - if m != nil { - return m.Filter - } - return nil -} - -func (m *Variant) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -func (m *Variant) GetCalls() []*VariantCall { - if m != nil { - return m.Calls - } - return nil -} - -// A call represents the determination of genotype with respect to a particular -// variant. It may include associated information such as quality and phasing. -// For example, a call might assign a probability of 0.32 to the occurrence of -// a SNP named rs1234 in a call set with the name NA12345. -type VariantCall struct { - // The ID of the call set this variant call belongs to. - CallSetId string `protobuf:"bytes,8,opt,name=call_set_id,json=callSetId" json:"call_set_id,omitempty"` - // The name of the call set this variant call belongs to. - CallSetName string `protobuf:"bytes,9,opt,name=call_set_name,json=callSetName" json:"call_set_name,omitempty"` - // The genotype of this variant call. Each value represents either the value - // of the `referenceBases` field or a 1-based index into - // `alternateBases`. If a variant had a `referenceBases` - // value of `T` and an `alternateBases` - // value of `["A", "C"]`, and the `genotype` was - // `[2, 1]`, that would mean the call - // represented the heterozygous value `CA` for this variant. - // If the `genotype` was instead `[0, 1]`, the - // represented value would be `TA`. Ordering of the - // genotype values is important if the `phaseset` is present. - // If a genotype is not called (that is, a `.` is present in the - // GT string) -1 is returned. - Genotype []int32 `protobuf:"varint,7,rep,packed,name=genotype" json:"genotype,omitempty"` - // If this field is present, this variant call's genotype ordering implies - // the phase of the bases and is consistent with any other variant calls in - // the same reference sequence which have the same phaseset value. - // When importing data from VCF, if the genotype data was phased but no - // phase set was specified this field will be set to `*`. - Phaseset string `protobuf:"bytes,5,opt,name=phaseset" json:"phaseset,omitempty"` - // The genotype likelihoods for this variant call. Each array entry - // represents how likely a specific genotype is for this call. The value - // ordering is defined by the GL tag in the VCF spec. - // If Phred-scaled genotype likelihood scores (PL) are available and - // log10(P) genotype likelihood scores (GL) are not, PL scores are converted - // to GL scores. If both are available, PL scores are stored in `info`. - GenotypeLikelihood []float64 `protobuf:"fixed64,6,rep,packed,name=genotype_likelihood,json=genotypeLikelihood" json:"genotype_likelihood,omitempty"` - // A map of additional variant call information. This must be of the form - // map<string, string[]> (string key mapping to a list of string values). - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,2,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *VariantCall) Reset() { *m = VariantCall{} } -func (m *VariantCall) String() string { return proto.CompactTextString(m) } -func (*VariantCall) ProtoMessage() {} -func (*VariantCall) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{3} } - -func (m *VariantCall) GetCallSetId() string { - if m != nil { - return m.CallSetId - } - return "" -} - -func (m *VariantCall) GetCallSetName() string { - if m != nil { - return m.CallSetName - } - return "" -} - -func (m *VariantCall) GetGenotype() []int32 { - if m != nil { - return m.Genotype - } - return nil -} - -func (m *VariantCall) GetPhaseset() string { - if m != nil { - return m.Phaseset - } - return "" -} - -func (m *VariantCall) GetGenotypeLikelihood() []float64 { - if m != nil { - return m.GenotypeLikelihood - } - return nil -} - -func (m *VariantCall) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -// A call set is a collection of variant calls, typically for one sample. It -// belongs to a variant set. -// -// For more genomics resource definitions, see [Fundamentals of Google -// Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) -type CallSet struct { - // The server-generated call set ID, unique across all call sets. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // The call set name. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - // The sample ID this call set corresponds to. - SampleId string `protobuf:"bytes,7,opt,name=sample_id,json=sampleId" json:"sample_id,omitempty"` - // The IDs of the variant sets this call set belongs to. This field must - // have exactly length one, as a call set belongs to a single variant set. - // This field is repeated for compatibility with the - // [GA4GH 0.5.1 - // API](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variants.avdl#L76). - VariantSetIds []string `protobuf:"bytes,6,rep,name=variant_set_ids,json=variantSetIds" json:"variant_set_ids,omitempty"` - // The date this call set was created in milliseconds from the epoch. - Created int64 `protobuf:"varint,5,opt,name=created" json:"created,omitempty"` - // A map of additional call set information. This must be of the form - // map<string, string[]> (string key mapping to a list of string values). - Info map[string]*google_protobuf3.ListValue `protobuf:"bytes,4,rep,name=info" json:"info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *CallSet) Reset() { *m = CallSet{} } -func (m *CallSet) String() string { return proto.CompactTextString(m) } -func (*CallSet) ProtoMessage() {} -func (*CallSet) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{4} } - -func (m *CallSet) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *CallSet) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CallSet) GetSampleId() string { - if m != nil { - return m.SampleId - } - return "" -} - -func (m *CallSet) GetVariantSetIds() []string { - if m != nil { - return m.VariantSetIds - } - return nil -} - -func (m *CallSet) GetCreated() int64 { - if m != nil { - return m.Created - } - return 0 -} - -func (m *CallSet) GetInfo() map[string]*google_protobuf3.ListValue { - if m != nil { - return m.Info - } - return nil -} - -// ReferenceBound records an upper bound for the starting coordinate of -// variants in a particular reference. -type ReferenceBound struct { - // The name of the reference associated with this reference bound. - ReferenceName string `protobuf:"bytes,1,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // An upper bound (inclusive) on the starting coordinate of any - // variant in the reference sequence. - UpperBound int64 `protobuf:"varint,2,opt,name=upper_bound,json=upperBound" json:"upper_bound,omitempty"` -} - -func (m *ReferenceBound) Reset() { *m = ReferenceBound{} } -func (m *ReferenceBound) String() string { return proto.CompactTextString(m) } -func (*ReferenceBound) ProtoMessage() {} -func (*ReferenceBound) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{5} } - -func (m *ReferenceBound) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *ReferenceBound) GetUpperBound() int64 { - if m != nil { - return m.UpperBound - } - return 0 -} - -// The variant data import request. -type ImportVariantsRequest struct { - // Required. The variant set to which variant data should be imported. - VariantSetId string `protobuf:"bytes,1,opt,name=variant_set_id,json=variantSetId" json:"variant_set_id,omitempty"` - // A list of URIs referencing variant files in Google Cloud Storage. URIs can - // include wildcards [as described - // here](https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames). - // Note that recursive wildcards ('**') are not supported. - SourceUris []string `protobuf:"bytes,2,rep,name=source_uris,json=sourceUris" json:"source_uris,omitempty"` - // The format of the variant data being imported. If unspecified, defaults to - // to `VCF`. - Format ImportVariantsRequest_Format `protobuf:"varint,3,opt,name=format,enum=google.genomics.v1.ImportVariantsRequest_Format" json:"format,omitempty"` - // Convert reference names to the canonical representation. - // hg19 haploytypes (those reference names containing "_hap") - // are not modified in any way. - // All other reference names are modified according to the following rules: - // The reference name is capitalized. - // The "chr" prefix is dropped for all autosomes and sex chromsomes. - // For example "chr17" becomes "17" and "chrX" becomes "X". - // All mitochondrial chromosomes ("chrM", "chrMT", etc) become "MT". - NormalizeReferenceNames bool `protobuf:"varint,5,opt,name=normalize_reference_names,json=normalizeReferenceNames" json:"normalize_reference_names,omitempty"` - // A mapping between info field keys and the InfoMergeOperations to - // be performed on them. This is plumbed down to the MergeVariantRequests - // generated by the resulting import job. - InfoMergeConfig map[string]InfoMergeOperation `protobuf:"bytes,6,rep,name=info_merge_config,json=infoMergeConfig" json:"info_merge_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.genomics.v1.InfoMergeOperation"` -} - -func (m *ImportVariantsRequest) Reset() { *m = ImportVariantsRequest{} } -func (m *ImportVariantsRequest) String() string { return proto.CompactTextString(m) } -func (*ImportVariantsRequest) ProtoMessage() {} -func (*ImportVariantsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{6} } - -func (m *ImportVariantsRequest) GetVariantSetId() string { - if m != nil { - return m.VariantSetId - } - return "" -} - -func (m *ImportVariantsRequest) GetSourceUris() []string { - if m != nil { - return m.SourceUris - } - return nil -} - -func (m *ImportVariantsRequest) GetFormat() ImportVariantsRequest_Format { - if m != nil { - return m.Format - } - return ImportVariantsRequest_FORMAT_UNSPECIFIED -} - -func (m *ImportVariantsRequest) GetNormalizeReferenceNames() bool { - if m != nil { - return m.NormalizeReferenceNames - } - return false -} - -func (m *ImportVariantsRequest) GetInfoMergeConfig() map[string]InfoMergeOperation { - if m != nil { - return m.InfoMergeConfig - } - return nil -} - -// The variant data import response. -type ImportVariantsResponse struct { - // IDs of the call sets created during the import. - CallSetIds []string `protobuf:"bytes,1,rep,name=call_set_ids,json=callSetIds" json:"call_set_ids,omitempty"` -} - -func (m *ImportVariantsResponse) Reset() { *m = ImportVariantsResponse{} } -func (m *ImportVariantsResponse) String() string { return proto.CompactTextString(m) } -func (*ImportVariantsResponse) ProtoMessage() {} -func (*ImportVariantsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{7} } - -func (m *ImportVariantsResponse) GetCallSetIds() []string { - if m != nil { - return m.CallSetIds - } - return nil -} - -// The CreateVariantSet request -type CreateVariantSetRequest struct { - // Required. The variant set to be created. Must have a valid `datasetId`. - VariantSet *VariantSet `protobuf:"bytes,1,opt,name=variant_set,json=variantSet" json:"variant_set,omitempty"` -} - -func (m *CreateVariantSetRequest) Reset() { *m = CreateVariantSetRequest{} } -func (m *CreateVariantSetRequest) String() string { return proto.CompactTextString(m) } -func (*CreateVariantSetRequest) ProtoMessage() {} -func (*CreateVariantSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{8} } - -func (m *CreateVariantSetRequest) GetVariantSet() *VariantSet { - if m != nil { - return m.VariantSet - } - return nil -} - -// The variant data export request. -type ExportVariantSetRequest struct { - // Required. The ID of the variant set that contains variant data which - // should be exported. The caller must have READ access to this variant set. - VariantSetId string `protobuf:"bytes,1,opt,name=variant_set_id,json=variantSetId" json:"variant_set_id,omitempty"` - // If provided, only variant call information from the specified call sets - // will be exported. By default all variant calls are exported. - CallSetIds []string `protobuf:"bytes,2,rep,name=call_set_ids,json=callSetIds" json:"call_set_ids,omitempty"` - // Required. The Google Cloud project ID that owns the destination - // BigQuery dataset. The caller must have WRITE access to this project. This - // project will also own the resulting export job. - ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The format for the exported data. - Format ExportVariantSetRequest_Format `protobuf:"varint,4,opt,name=format,enum=google.genomics.v1.ExportVariantSetRequest_Format" json:"format,omitempty"` - // Required. The BigQuery dataset to export data to. This dataset must already - // exist. Note that this is distinct from the Genomics concept of "dataset". - BigqueryDataset string `protobuf:"bytes,5,opt,name=bigquery_dataset,json=bigqueryDataset" json:"bigquery_dataset,omitempty"` - // Required. The BigQuery table to export data to. - // If the table doesn't exist, it will be created. If it already exists, it - // will be overwritten. - BigqueryTable string `protobuf:"bytes,6,opt,name=bigquery_table,json=bigqueryTable" json:"bigquery_table,omitempty"` -} - -func (m *ExportVariantSetRequest) Reset() { *m = ExportVariantSetRequest{} } -func (m *ExportVariantSetRequest) String() string { return proto.CompactTextString(m) } -func (*ExportVariantSetRequest) ProtoMessage() {} -func (*ExportVariantSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{9} } - -func (m *ExportVariantSetRequest) GetVariantSetId() string { - if m != nil { - return m.VariantSetId - } - return "" -} - -func (m *ExportVariantSetRequest) GetCallSetIds() []string { - if m != nil { - return m.CallSetIds - } - return nil -} - -func (m *ExportVariantSetRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ExportVariantSetRequest) GetFormat() ExportVariantSetRequest_Format { - if m != nil { - return m.Format - } - return ExportVariantSetRequest_FORMAT_UNSPECIFIED -} - -func (m *ExportVariantSetRequest) GetBigqueryDataset() string { - if m != nil { - return m.BigqueryDataset - } - return "" -} - -func (m *ExportVariantSetRequest) GetBigqueryTable() string { - if m != nil { - return m.BigqueryTable - } - return "" -} - -// The variant set request. -type GetVariantSetRequest struct { - // Required. The ID of the variant set. - VariantSetId string `protobuf:"bytes,1,opt,name=variant_set_id,json=variantSetId" json:"variant_set_id,omitempty"` -} - -func (m *GetVariantSetRequest) Reset() { *m = GetVariantSetRequest{} } -func (m *GetVariantSetRequest) String() string { return proto.CompactTextString(m) } -func (*GetVariantSetRequest) ProtoMessage() {} -func (*GetVariantSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{10} } - -func (m *GetVariantSetRequest) GetVariantSetId() string { - if m != nil { - return m.VariantSetId - } - return "" -} - -// The search variant sets request. -type SearchVariantSetsRequest struct { - // Exactly one dataset ID must be provided here. Only variant sets which - // belong to this dataset will be returned. - DatasetIds []string `protobuf:"bytes,1,rep,name=dataset_ids,json=datasetIds" json:"dataset_ids,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 1024. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *SearchVariantSetsRequest) Reset() { *m = SearchVariantSetsRequest{} } -func (m *SearchVariantSetsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchVariantSetsRequest) ProtoMessage() {} -func (*SearchVariantSetsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{11} } - -func (m *SearchVariantSetsRequest) GetDatasetIds() []string { - if m != nil { - return m.DatasetIds - } - return nil -} - -func (m *SearchVariantSetsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchVariantSetsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// The search variant sets response. -type SearchVariantSetsResponse struct { - // The variant sets belonging to the requested dataset. - VariantSets []*VariantSet `protobuf:"bytes,1,rep,name=variant_sets,json=variantSets" json:"variant_sets,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchVariantSetsResponse) Reset() { *m = SearchVariantSetsResponse{} } -func (m *SearchVariantSetsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchVariantSetsResponse) ProtoMessage() {} -func (*SearchVariantSetsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{12} } - -func (m *SearchVariantSetsResponse) GetVariantSets() []*VariantSet { - if m != nil { - return m.VariantSets - } - return nil -} - -func (m *SearchVariantSetsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The delete variant set request. -type DeleteVariantSetRequest struct { - // The ID of the variant set to be deleted. - VariantSetId string `protobuf:"bytes,1,opt,name=variant_set_id,json=variantSetId" json:"variant_set_id,omitempty"` -} - -func (m *DeleteVariantSetRequest) Reset() { *m = DeleteVariantSetRequest{} } -func (m *DeleteVariantSetRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteVariantSetRequest) ProtoMessage() {} -func (*DeleteVariantSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{13} } - -func (m *DeleteVariantSetRequest) GetVariantSetId() string { - if m != nil { - return m.VariantSetId - } - return "" -} - -type UpdateVariantSetRequest struct { - // The ID of the variant to be updated (must already exist). - VariantSetId string `protobuf:"bytes,1,opt,name=variant_set_id,json=variantSetId" json:"variant_set_id,omitempty"` - // The new variant data. Only the variant_set.metadata will be considered - // for update. - VariantSet *VariantSet `protobuf:"bytes,2,opt,name=variant_set,json=variantSet" json:"variant_set,omitempty"` - // An optional mask specifying which fields to update. Supported fields: - // - // * [metadata][google.genomics.v1.VariantSet.metadata]. - // * [name][google.genomics.v1.VariantSet.name]. - // * [description][google.genomics.v1.VariantSet.description]. - // - // Leaving `updateMask` unset is equivalent to specifying all mutable - // fields. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,5,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateVariantSetRequest) Reset() { *m = UpdateVariantSetRequest{} } -func (m *UpdateVariantSetRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateVariantSetRequest) ProtoMessage() {} -func (*UpdateVariantSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{14} } - -func (m *UpdateVariantSetRequest) GetVariantSetId() string { - if m != nil { - return m.VariantSetId - } - return "" -} - -func (m *UpdateVariantSetRequest) GetVariantSet() *VariantSet { - if m != nil { - return m.VariantSet - } - return nil -} - -func (m *UpdateVariantSetRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The variant search request. -type SearchVariantsRequest struct { - // At most one variant set ID must be provided. Only variants from this - // variant set will be returned. If omitted, a call set id must be included in - // the request. - VariantSetIds []string `protobuf:"bytes,1,rep,name=variant_set_ids,json=variantSetIds" json:"variant_set_ids,omitempty"` - // Only return variants which have exactly this name. - VariantName string `protobuf:"bytes,2,opt,name=variant_name,json=variantName" json:"variant_name,omitempty"` - // Only return variant calls which belong to call sets with these ids. - // Leaving this blank returns all variant calls. If a variant has no - // calls belonging to any of these call sets, it won't be returned at all. - CallSetIds []string `protobuf:"bytes,3,rep,name=call_set_ids,json=callSetIds" json:"call_set_ids,omitempty"` - // Required. Only return variants in this reference sequence. - ReferenceName string `protobuf:"bytes,4,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The beginning of the window (0-based, inclusive) for which - // overlapping variants should be returned. If unspecified, defaults to 0. - Start int64 `protobuf:"varint,5,opt,name=start" json:"start,omitempty"` - // The end of the window, 0-based exclusive. If unspecified or 0, defaults to - // the length of the reference. - End int64 `protobuf:"varint,6,opt,name=end" json:"end,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,7,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of variants to return in a single page. If unspecified, - // defaults to 5000. The maximum value is 10000. - PageSize int32 `protobuf:"varint,8,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The maximum number of calls to return in a single page. Note that this - // limit may be exceeded in the event that a matching variant contains more - // calls than the requested maximum. If unspecified, defaults to 5000. The - // maximum value is 10000. - MaxCalls int32 `protobuf:"varint,9,opt,name=max_calls,json=maxCalls" json:"max_calls,omitempty"` -} - -func (m *SearchVariantsRequest) Reset() { *m = SearchVariantsRequest{} } -func (m *SearchVariantsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchVariantsRequest) ProtoMessage() {} -func (*SearchVariantsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{15} } - -func (m *SearchVariantsRequest) GetVariantSetIds() []string { - if m != nil { - return m.VariantSetIds - } - return nil -} - -func (m *SearchVariantsRequest) GetVariantName() string { - if m != nil { - return m.VariantName - } - return "" -} - -func (m *SearchVariantsRequest) GetCallSetIds() []string { - if m != nil { - return m.CallSetIds - } - return nil -} - -func (m *SearchVariantsRequest) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *SearchVariantsRequest) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *SearchVariantsRequest) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -func (m *SearchVariantsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchVariantsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *SearchVariantsRequest) GetMaxCalls() int32 { - if m != nil { - return m.MaxCalls - } - return 0 -} - -// The variant search response. -type SearchVariantsResponse struct { - // The list of matching Variants. - Variants []*Variant `protobuf:"bytes,1,rep,name=variants" json:"variants,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchVariantsResponse) Reset() { *m = SearchVariantsResponse{} } -func (m *SearchVariantsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchVariantsResponse) ProtoMessage() {} -func (*SearchVariantsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{16} } - -func (m *SearchVariantsResponse) GetVariants() []*Variant { - if m != nil { - return m.Variants - } - return nil -} - -func (m *SearchVariantsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -type CreateVariantRequest struct { - // The variant to be created. - Variant *Variant `protobuf:"bytes,1,opt,name=variant" json:"variant,omitempty"` -} - -func (m *CreateVariantRequest) Reset() { *m = CreateVariantRequest{} } -func (m *CreateVariantRequest) String() string { return proto.CompactTextString(m) } -func (*CreateVariantRequest) ProtoMessage() {} -func (*CreateVariantRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{17} } - -func (m *CreateVariantRequest) GetVariant() *Variant { - if m != nil { - return m.Variant - } - return nil -} - -type UpdateVariantRequest struct { - // The ID of the variant to be updated. - VariantId string `protobuf:"bytes,1,opt,name=variant_id,json=variantId" json:"variant_id,omitempty"` - // The new variant data. - Variant *Variant `protobuf:"bytes,2,opt,name=variant" json:"variant,omitempty"` - // An optional mask specifying which fields to update. At this time, mutable - // fields are [names][google.genomics.v1.Variant.names] and - // [info][google.genomics.v1.Variant.info]. Acceptable values are "names" and - // "info". If unspecified, all mutable fields will be updated. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateVariantRequest) Reset() { *m = UpdateVariantRequest{} } -func (m *UpdateVariantRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateVariantRequest) ProtoMessage() {} -func (*UpdateVariantRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{18} } - -func (m *UpdateVariantRequest) GetVariantId() string { - if m != nil { - return m.VariantId - } - return "" -} - -func (m *UpdateVariantRequest) GetVariant() *Variant { - if m != nil { - return m.Variant - } - return nil -} - -func (m *UpdateVariantRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -type DeleteVariantRequest struct { - // The ID of the variant to be deleted. - VariantId string `protobuf:"bytes,1,opt,name=variant_id,json=variantId" json:"variant_id,omitempty"` -} - -func (m *DeleteVariantRequest) Reset() { *m = DeleteVariantRequest{} } -func (m *DeleteVariantRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteVariantRequest) ProtoMessage() {} -func (*DeleteVariantRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{19} } - -func (m *DeleteVariantRequest) GetVariantId() string { - if m != nil { - return m.VariantId - } - return "" -} - -type GetVariantRequest struct { - // The ID of the variant. - VariantId string `protobuf:"bytes,1,opt,name=variant_id,json=variantId" json:"variant_id,omitempty"` -} - -func (m *GetVariantRequest) Reset() { *m = GetVariantRequest{} } -func (m *GetVariantRequest) String() string { return proto.CompactTextString(m) } -func (*GetVariantRequest) ProtoMessage() {} -func (*GetVariantRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{20} } - -func (m *GetVariantRequest) GetVariantId() string { - if m != nil { - return m.VariantId - } - return "" -} - -type MergeVariantsRequest struct { - // The destination variant set. - VariantSetId string `protobuf:"bytes,1,opt,name=variant_set_id,json=variantSetId" json:"variant_set_id,omitempty"` - // The variants to be merged with existing variants. - Variants []*Variant `protobuf:"bytes,2,rep,name=variants" json:"variants,omitempty"` - // A mapping between info field keys and the InfoMergeOperations to - // be performed on them. - InfoMergeConfig map[string]InfoMergeOperation `protobuf:"bytes,3,rep,name=info_merge_config,json=infoMergeConfig" json:"info_merge_config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.genomics.v1.InfoMergeOperation"` -} - -func (m *MergeVariantsRequest) Reset() { *m = MergeVariantsRequest{} } -func (m *MergeVariantsRequest) String() string { return proto.CompactTextString(m) } -func (*MergeVariantsRequest) ProtoMessage() {} -func (*MergeVariantsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{21} } - -func (m *MergeVariantsRequest) GetVariantSetId() string { - if m != nil { - return m.VariantSetId - } - return "" -} - -func (m *MergeVariantsRequest) GetVariants() []*Variant { - if m != nil { - return m.Variants - } - return nil -} - -func (m *MergeVariantsRequest) GetInfoMergeConfig() map[string]InfoMergeOperation { - if m != nil { - return m.InfoMergeConfig - } - return nil -} - -// The call set search request. -type SearchCallSetsRequest struct { - // Restrict the query to call sets within the given variant sets. At least one - // ID must be provided. - VariantSetIds []string `protobuf:"bytes,1,rep,name=variant_set_ids,json=variantSetIds" json:"variant_set_ids,omitempty"` - // Only return call sets for which a substring of the name matches this - // string. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - // The continuation token, which is used to page through large result sets. - // To get the next page of results, set this parameter to the value of - // `nextPageToken` from the previous response. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The maximum number of results to return in a single page. If unspecified, - // defaults to 1024. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *SearchCallSetsRequest) Reset() { *m = SearchCallSetsRequest{} } -func (m *SearchCallSetsRequest) String() string { return proto.CompactTextString(m) } -func (*SearchCallSetsRequest) ProtoMessage() {} -func (*SearchCallSetsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{22} } - -func (m *SearchCallSetsRequest) GetVariantSetIds() []string { - if m != nil { - return m.VariantSetIds - } - return nil -} - -func (m *SearchCallSetsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SearchCallSetsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *SearchCallSetsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// The call set search response. -type SearchCallSetsResponse struct { - // The list of matching call sets. - CallSets []*CallSet `protobuf:"bytes,1,rep,name=call_sets,json=callSets" json:"call_sets,omitempty"` - // The continuation token, which is used to page through large result sets. - // Provide this value in a subsequent request to return the next page of - // results. This field will be empty if there aren't any additional results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *SearchCallSetsResponse) Reset() { *m = SearchCallSetsResponse{} } -func (m *SearchCallSetsResponse) String() string { return proto.CompactTextString(m) } -func (*SearchCallSetsResponse) ProtoMessage() {} -func (*SearchCallSetsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{23} } - -func (m *SearchCallSetsResponse) GetCallSets() []*CallSet { - if m != nil { - return m.CallSets - } - return nil -} - -func (m *SearchCallSetsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -type CreateCallSetRequest struct { - // The call set to be created. - CallSet *CallSet `protobuf:"bytes,1,opt,name=call_set,json=callSet" json:"call_set,omitempty"` -} - -func (m *CreateCallSetRequest) Reset() { *m = CreateCallSetRequest{} } -func (m *CreateCallSetRequest) String() string { return proto.CompactTextString(m) } -func (*CreateCallSetRequest) ProtoMessage() {} -func (*CreateCallSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{24} } - -func (m *CreateCallSetRequest) GetCallSet() *CallSet { - if m != nil { - return m.CallSet - } - return nil -} - -type UpdateCallSetRequest struct { - // The ID of the call set to be updated. - CallSetId string `protobuf:"bytes,1,opt,name=call_set_id,json=callSetId" json:"call_set_id,omitempty"` - // The new call set data. - CallSet *CallSet `protobuf:"bytes,2,opt,name=call_set,json=callSet" json:"call_set,omitempty"` - // An optional mask specifying which fields to update. At this time, the only - // mutable field is [name][google.genomics.v1.CallSet.name]. The only - // acceptable value is "name". If unspecified, all mutable fields will be - // updated. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateCallSetRequest) Reset() { *m = UpdateCallSetRequest{} } -func (m *UpdateCallSetRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateCallSetRequest) ProtoMessage() {} -func (*UpdateCallSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{25} } - -func (m *UpdateCallSetRequest) GetCallSetId() string { - if m != nil { - return m.CallSetId - } - return "" -} - -func (m *UpdateCallSetRequest) GetCallSet() *CallSet { - if m != nil { - return m.CallSet - } - return nil -} - -func (m *UpdateCallSetRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -type DeleteCallSetRequest struct { - // The ID of the call set to be deleted. - CallSetId string `protobuf:"bytes,1,opt,name=call_set_id,json=callSetId" json:"call_set_id,omitempty"` -} - -func (m *DeleteCallSetRequest) Reset() { *m = DeleteCallSetRequest{} } -func (m *DeleteCallSetRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteCallSetRequest) ProtoMessage() {} -func (*DeleteCallSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{26} } - -func (m *DeleteCallSetRequest) GetCallSetId() string { - if m != nil { - return m.CallSetId - } - return "" -} - -type GetCallSetRequest struct { - // The ID of the call set. - CallSetId string `protobuf:"bytes,1,opt,name=call_set_id,json=callSetId" json:"call_set_id,omitempty"` -} - -func (m *GetCallSetRequest) Reset() { *m = GetCallSetRequest{} } -func (m *GetCallSetRequest) String() string { return proto.CompactTextString(m) } -func (*GetCallSetRequest) ProtoMessage() {} -func (*GetCallSetRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{27} } - -func (m *GetCallSetRequest) GetCallSetId() string { - if m != nil { - return m.CallSetId - } - return "" -} - -// The stream variants request. -type StreamVariantsRequest struct { - // The Google Cloud project ID which will be billed - // for this access. The caller must have WRITE access to this project. - // Required. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The variant set ID from which to stream variants. - VariantSetId string `protobuf:"bytes,2,opt,name=variant_set_id,json=variantSetId" json:"variant_set_id,omitempty"` - // Only return variant calls which belong to call sets with these IDs. - // Leaving this blank returns all variant calls. - CallSetIds []string `protobuf:"bytes,3,rep,name=call_set_ids,json=callSetIds" json:"call_set_ids,omitempty"` - // Required. Only return variants in this reference sequence. - ReferenceName string `protobuf:"bytes,4,opt,name=reference_name,json=referenceName" json:"reference_name,omitempty"` - // The beginning of the window (0-based, inclusive) for which - // overlapping variants should be returned. - Start int64 `protobuf:"varint,5,opt,name=start" json:"start,omitempty"` - // The end of the window (0-based, exclusive) for which overlapping - // variants should be returned. - End int64 `protobuf:"varint,6,opt,name=end" json:"end,omitempty"` -} - -func (m *StreamVariantsRequest) Reset() { *m = StreamVariantsRequest{} } -func (m *StreamVariantsRequest) String() string { return proto.CompactTextString(m) } -func (*StreamVariantsRequest) ProtoMessage() {} -func (*StreamVariantsRequest) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{28} } - -func (m *StreamVariantsRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *StreamVariantsRequest) GetVariantSetId() string { - if m != nil { - return m.VariantSetId - } - return "" -} - -func (m *StreamVariantsRequest) GetCallSetIds() []string { - if m != nil { - return m.CallSetIds - } - return nil -} - -func (m *StreamVariantsRequest) GetReferenceName() string { - if m != nil { - return m.ReferenceName - } - return "" -} - -func (m *StreamVariantsRequest) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *StreamVariantsRequest) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -type StreamVariantsResponse struct { - Variants []*Variant `protobuf:"bytes,1,rep,name=variants" json:"variants,omitempty"` -} - -func (m *StreamVariantsResponse) Reset() { *m = StreamVariantsResponse{} } -func (m *StreamVariantsResponse) String() string { return proto.CompactTextString(m) } -func (*StreamVariantsResponse) ProtoMessage() {} -func (*StreamVariantsResponse) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{29} } - -func (m *StreamVariantsResponse) GetVariants() []*Variant { - if m != nil { - return m.Variants - } - return nil -} - -func init() { - proto.RegisterType((*VariantSetMetadata)(nil), "google.genomics.v1.VariantSetMetadata") - proto.RegisterType((*VariantSet)(nil), "google.genomics.v1.VariantSet") - proto.RegisterType((*Variant)(nil), "google.genomics.v1.Variant") - proto.RegisterType((*VariantCall)(nil), "google.genomics.v1.VariantCall") - proto.RegisterType((*CallSet)(nil), "google.genomics.v1.CallSet") - proto.RegisterType((*ReferenceBound)(nil), "google.genomics.v1.ReferenceBound") - proto.RegisterType((*ImportVariantsRequest)(nil), "google.genomics.v1.ImportVariantsRequest") - proto.RegisterType((*ImportVariantsResponse)(nil), "google.genomics.v1.ImportVariantsResponse") - proto.RegisterType((*CreateVariantSetRequest)(nil), "google.genomics.v1.CreateVariantSetRequest") - proto.RegisterType((*ExportVariantSetRequest)(nil), "google.genomics.v1.ExportVariantSetRequest") - proto.RegisterType((*GetVariantSetRequest)(nil), "google.genomics.v1.GetVariantSetRequest") - proto.RegisterType((*SearchVariantSetsRequest)(nil), "google.genomics.v1.SearchVariantSetsRequest") - proto.RegisterType((*SearchVariantSetsResponse)(nil), "google.genomics.v1.SearchVariantSetsResponse") - proto.RegisterType((*DeleteVariantSetRequest)(nil), "google.genomics.v1.DeleteVariantSetRequest") - proto.RegisterType((*UpdateVariantSetRequest)(nil), "google.genomics.v1.UpdateVariantSetRequest") - proto.RegisterType((*SearchVariantsRequest)(nil), "google.genomics.v1.SearchVariantsRequest") - proto.RegisterType((*SearchVariantsResponse)(nil), "google.genomics.v1.SearchVariantsResponse") - proto.RegisterType((*CreateVariantRequest)(nil), "google.genomics.v1.CreateVariantRequest") - proto.RegisterType((*UpdateVariantRequest)(nil), "google.genomics.v1.UpdateVariantRequest") - proto.RegisterType((*DeleteVariantRequest)(nil), "google.genomics.v1.DeleteVariantRequest") - proto.RegisterType((*GetVariantRequest)(nil), "google.genomics.v1.GetVariantRequest") - proto.RegisterType((*MergeVariantsRequest)(nil), "google.genomics.v1.MergeVariantsRequest") - proto.RegisterType((*SearchCallSetsRequest)(nil), "google.genomics.v1.SearchCallSetsRequest") - proto.RegisterType((*SearchCallSetsResponse)(nil), "google.genomics.v1.SearchCallSetsResponse") - proto.RegisterType((*CreateCallSetRequest)(nil), "google.genomics.v1.CreateCallSetRequest") - proto.RegisterType((*UpdateCallSetRequest)(nil), "google.genomics.v1.UpdateCallSetRequest") - proto.RegisterType((*DeleteCallSetRequest)(nil), "google.genomics.v1.DeleteCallSetRequest") - proto.RegisterType((*GetCallSetRequest)(nil), "google.genomics.v1.GetCallSetRequest") - proto.RegisterType((*StreamVariantsRequest)(nil), "google.genomics.v1.StreamVariantsRequest") - proto.RegisterType((*StreamVariantsResponse)(nil), "google.genomics.v1.StreamVariantsResponse") - proto.RegisterEnum("google.genomics.v1.InfoMergeOperation", InfoMergeOperation_name, InfoMergeOperation_value) - proto.RegisterEnum("google.genomics.v1.VariantSetMetadata_Type", VariantSetMetadata_Type_name, VariantSetMetadata_Type_value) - proto.RegisterEnum("google.genomics.v1.ImportVariantsRequest_Format", ImportVariantsRequest_Format_name, ImportVariantsRequest_Format_value) - proto.RegisterEnum("google.genomics.v1.ExportVariantSetRequest_Format", ExportVariantSetRequest_Format_name, ExportVariantSetRequest_Format_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for StreamingVariantService service - -type StreamingVariantServiceClient interface { - // Returns a stream of all the variants matching the search request, ordered - // by reference name, position, and ID. - StreamVariants(ctx context.Context, in *StreamVariantsRequest, opts ...grpc.CallOption) (StreamingVariantService_StreamVariantsClient, error) -} - -type streamingVariantServiceClient struct { - cc *grpc.ClientConn -} - -func NewStreamingVariantServiceClient(cc *grpc.ClientConn) StreamingVariantServiceClient { - return &streamingVariantServiceClient{cc} -} - -func (c *streamingVariantServiceClient) StreamVariants(ctx context.Context, in *StreamVariantsRequest, opts ...grpc.CallOption) (StreamingVariantService_StreamVariantsClient, error) { - stream, err := grpc.NewClientStream(ctx, &_StreamingVariantService_serviceDesc.Streams[0], c.cc, "/google.genomics.v1.StreamingVariantService/StreamVariants", opts...) - if err != nil { - return nil, err - } - x := &streamingVariantServiceStreamVariantsClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type StreamingVariantService_StreamVariantsClient interface { - Recv() (*StreamVariantsResponse, error) - grpc.ClientStream -} - -type streamingVariantServiceStreamVariantsClient struct { - grpc.ClientStream -} - -func (x *streamingVariantServiceStreamVariantsClient) Recv() (*StreamVariantsResponse, error) { - m := new(StreamVariantsResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for StreamingVariantService service - -type StreamingVariantServiceServer interface { - // Returns a stream of all the variants matching the search request, ordered - // by reference name, position, and ID. - StreamVariants(*StreamVariantsRequest, StreamingVariantService_StreamVariantsServer) error -} - -func RegisterStreamingVariantServiceServer(s *grpc.Server, srv StreamingVariantServiceServer) { - s.RegisterService(&_StreamingVariantService_serviceDesc, srv) -} - -func _StreamingVariantService_StreamVariants_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamVariantsRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(StreamingVariantServiceServer).StreamVariants(m, &streamingVariantServiceStreamVariantsServer{stream}) -} - -type StreamingVariantService_StreamVariantsServer interface { - Send(*StreamVariantsResponse) error - grpc.ServerStream -} - -type streamingVariantServiceStreamVariantsServer struct { - grpc.ServerStream -} - -func (x *streamingVariantServiceStreamVariantsServer) Send(m *StreamVariantsResponse) error { - return x.ServerStream.SendMsg(m) -} - -var _StreamingVariantService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.genomics.v1.StreamingVariantService", - HandlerType: (*StreamingVariantServiceServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamVariants", - Handler: _StreamingVariantService_StreamVariants_Handler, - ServerStreams: true, - }, - }, - Metadata: "google/genomics/v1/variants.proto", -} - -// Client API for VariantServiceV1 service - -type VariantServiceV1Client interface { - // Creates variant data by asynchronously importing the provided information. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // The variants for import will be merged with any existing variant that - // matches its reference sequence, start, end, reference bases, and - // alternative bases. If no such variant exists, a new one will be created. - // - // When variants are merged, the call information from the new variant - // is added to the existing variant, and Variant info fields are merged - // as specified in - // [infoMergeConfig][google.genomics.v1.ImportVariantsRequest.info_merge_config]. - // As a special case, for single-sample VCF files, QUAL and FILTER fields will - // be moved to the call level; these are sometimes interpreted in a - // call-specific context. - // Imported VCF headers are appended to the metadata already in a variant set. - ImportVariants(ctx context.Context, in *ImportVariantsRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Creates a new variant set. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // The provided variant set must have a valid `datasetId` set - all other - // fields are optional. Note that the `id` field will be ignored, as this is - // assigned by the server. - CreateVariantSet(ctx context.Context, in *CreateVariantSetRequest, opts ...grpc.CallOption) (*VariantSet, error) - // Exports variant set data to an external destination. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - ExportVariantSet(ctx context.Context, in *ExportVariantSetRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Gets a variant set by ID. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetVariantSet(ctx context.Context, in *GetVariantSetRequest, opts ...grpc.CallOption) (*VariantSet, error) - // Returns a list of all variant sets matching search criteria. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchVariantSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L49). - SearchVariantSets(ctx context.Context, in *SearchVariantSetsRequest, opts ...grpc.CallOption) (*SearchVariantSetsResponse, error) - // Deletes a variant set including all variants, call sets, and calls within. - // This is not reversible. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteVariantSet(ctx context.Context, in *DeleteVariantSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Updates a variant set using patch semantics. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - UpdateVariantSet(ctx context.Context, in *UpdateVariantSetRequest, opts ...grpc.CallOption) (*VariantSet, error) - // Gets a list of variants matching the criteria. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchVariants](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L126). - SearchVariants(ctx context.Context, in *SearchVariantsRequest, opts ...grpc.CallOption) (*SearchVariantsResponse, error) - // Creates a new variant. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - CreateVariant(ctx context.Context, in *CreateVariantRequest, opts ...grpc.CallOption) (*Variant, error) - // Updates a variant. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This method supports patch semantics. Returns the modified variant without - // its calls. - UpdateVariant(ctx context.Context, in *UpdateVariantRequest, opts ...grpc.CallOption) (*Variant, error) - // Deletes a variant. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteVariant(ctx context.Context, in *DeleteVariantRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Gets a variant by ID. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetVariant(ctx context.Context, in *GetVariantRequest, opts ...grpc.CallOption) (*Variant, error) - // Merges the given variants with existing variants. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Each variant will be - // merged with an existing variant that matches its reference sequence, - // start, end, reference bases, and alternative bases. If no such variant - // exists, a new one will be created. - // - // When variants are merged, the call information from the new variant - // is added to the existing variant. Variant info fields are merged as - // specified in the - // [infoMergeConfig][google.genomics.v1.MergeVariantsRequest.info_merge_config] - // field of the MergeVariantsRequest. - // - // Please exercise caution when using this method! It is easy to introduce - // mistakes in existing variants and difficult to back out of them. For - // example, - // suppose you were trying to merge a new variant with an existing one and - // both - // variants contain calls that belong to callsets with the same callset ID. - // - // // Existing variant - irrelevant fields trimmed for clarity - // { - // "variantSetId": "10473108253681171589", - // "referenceName": "1", - // "start": "10582", - // "referenceBases": "G", - // "alternateBases": [ - // "A" - // ], - // "calls": [ - // { - // "callSetId": "10473108253681171589-0", - // "callSetName": "CALLSET0", - // "genotype": [ - // 0, - // 1 - // ], - // } - // ] - // } - // - // // New variant with conflicting call information - // { - // "variantSetId": "10473108253681171589", - // "referenceName": "1", - // "start": "10582", - // "referenceBases": "G", - // "alternateBases": [ - // "A" - // ], - // "calls": [ - // { - // "callSetId": "10473108253681171589-0", - // "callSetName": "CALLSET0", - // "genotype": [ - // 1, - // 1 - // ], - // } - // ] - // } - // - // The resulting merged variant would overwrite the existing calls with those - // from the new variant: - // - // { - // "variantSetId": "10473108253681171589", - // "referenceName": "1", - // "start": "10582", - // "referenceBases": "G", - // "alternateBases": [ - // "A" - // ], - // "calls": [ - // { - // "callSetId": "10473108253681171589-0", - // "callSetName": "CALLSET0", - // "genotype": [ - // 1, - // 1 - // ], - // } - // ] - // } - // - // This may be the desired outcome, but it is up to the user to determine if - // if that is indeed the case. - MergeVariants(ctx context.Context, in *MergeVariantsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Gets a list of call sets matching the criteria. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchCallSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L178). - SearchCallSets(ctx context.Context, in *SearchCallSetsRequest, opts ...grpc.CallOption) (*SearchCallSetsResponse, error) - // Creates a new call set. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - CreateCallSet(ctx context.Context, in *CreateCallSetRequest, opts ...grpc.CallOption) (*CallSet, error) - // Updates a call set. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This method supports patch semantics. - UpdateCallSet(ctx context.Context, in *UpdateCallSetRequest, opts ...grpc.CallOption) (*CallSet, error) - // Deletes a call set. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteCallSet(ctx context.Context, in *DeleteCallSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Gets a call set by ID. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetCallSet(ctx context.Context, in *GetCallSetRequest, opts ...grpc.CallOption) (*CallSet, error) -} - -type variantServiceV1Client struct { - cc *grpc.ClientConn -} - -func NewVariantServiceV1Client(cc *grpc.ClientConn) VariantServiceV1Client { - return &variantServiceV1Client{cc} -} - -func (c *variantServiceV1Client) ImportVariants(ctx context.Context, in *ImportVariantsRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/ImportVariants", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) CreateVariantSet(ctx context.Context, in *CreateVariantSetRequest, opts ...grpc.CallOption) (*VariantSet, error) { - out := new(VariantSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/CreateVariantSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) ExportVariantSet(ctx context.Context, in *ExportVariantSetRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/ExportVariantSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) GetVariantSet(ctx context.Context, in *GetVariantSetRequest, opts ...grpc.CallOption) (*VariantSet, error) { - out := new(VariantSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/GetVariantSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) SearchVariantSets(ctx context.Context, in *SearchVariantSetsRequest, opts ...grpc.CallOption) (*SearchVariantSetsResponse, error) { - out := new(SearchVariantSetsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/SearchVariantSets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) DeleteVariantSet(ctx context.Context, in *DeleteVariantSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/DeleteVariantSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) UpdateVariantSet(ctx context.Context, in *UpdateVariantSetRequest, opts ...grpc.CallOption) (*VariantSet, error) { - out := new(VariantSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/UpdateVariantSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) SearchVariants(ctx context.Context, in *SearchVariantsRequest, opts ...grpc.CallOption) (*SearchVariantsResponse, error) { - out := new(SearchVariantsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/SearchVariants", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) CreateVariant(ctx context.Context, in *CreateVariantRequest, opts ...grpc.CallOption) (*Variant, error) { - out := new(Variant) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/CreateVariant", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) UpdateVariant(ctx context.Context, in *UpdateVariantRequest, opts ...grpc.CallOption) (*Variant, error) { - out := new(Variant) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/UpdateVariant", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) DeleteVariant(ctx context.Context, in *DeleteVariantRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/DeleteVariant", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) GetVariant(ctx context.Context, in *GetVariantRequest, opts ...grpc.CallOption) (*Variant, error) { - out := new(Variant) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/GetVariant", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) MergeVariants(ctx context.Context, in *MergeVariantsRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/MergeVariants", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) SearchCallSets(ctx context.Context, in *SearchCallSetsRequest, opts ...grpc.CallOption) (*SearchCallSetsResponse, error) { - out := new(SearchCallSetsResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/SearchCallSets", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) CreateCallSet(ctx context.Context, in *CreateCallSetRequest, opts ...grpc.CallOption) (*CallSet, error) { - out := new(CallSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/CreateCallSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) UpdateCallSet(ctx context.Context, in *UpdateCallSetRequest, opts ...grpc.CallOption) (*CallSet, error) { - out := new(CallSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/UpdateCallSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) DeleteCallSet(ctx context.Context, in *DeleteCallSetRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/DeleteCallSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *variantServiceV1Client) GetCallSet(ctx context.Context, in *GetCallSetRequest, opts ...grpc.CallOption) (*CallSet, error) { - out := new(CallSet) - err := grpc.Invoke(ctx, "/google.genomics.v1.VariantServiceV1/GetCallSet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for VariantServiceV1 service - -type VariantServiceV1Server interface { - // Creates variant data by asynchronously importing the provided information. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // The variants for import will be merged with any existing variant that - // matches its reference sequence, start, end, reference bases, and - // alternative bases. If no such variant exists, a new one will be created. - // - // When variants are merged, the call information from the new variant - // is added to the existing variant, and Variant info fields are merged - // as specified in - // [infoMergeConfig][google.genomics.v1.ImportVariantsRequest.info_merge_config]. - // As a special case, for single-sample VCF files, QUAL and FILTER fields will - // be moved to the call level; these are sometimes interpreted in a - // call-specific context. - // Imported VCF headers are appended to the metadata already in a variant set. - ImportVariants(context.Context, *ImportVariantsRequest) (*google_longrunning.Operation, error) - // Creates a new variant set. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // The provided variant set must have a valid `datasetId` set - all other - // fields are optional. Note that the `id` field will be ignored, as this is - // assigned by the server. - CreateVariantSet(context.Context, *CreateVariantSetRequest) (*VariantSet, error) - // Exports variant set data to an external destination. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - ExportVariantSet(context.Context, *ExportVariantSetRequest) (*google_longrunning.Operation, error) - // Gets a variant set by ID. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetVariantSet(context.Context, *GetVariantSetRequest) (*VariantSet, error) - // Returns a list of all variant sets matching search criteria. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchVariantSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L49). - SearchVariantSets(context.Context, *SearchVariantSetsRequest) (*SearchVariantSetsResponse, error) - // Deletes a variant set including all variants, call sets, and calls within. - // This is not reversible. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteVariantSet(context.Context, *DeleteVariantSetRequest) (*google_protobuf1.Empty, error) - // Updates a variant set using patch semantics. - // - // For the definitions of variant sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - UpdateVariantSet(context.Context, *UpdateVariantSetRequest) (*VariantSet, error) - // Gets a list of variants matching the criteria. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchVariants](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L126). - SearchVariants(context.Context, *SearchVariantsRequest) (*SearchVariantsResponse, error) - // Creates a new variant. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - CreateVariant(context.Context, *CreateVariantRequest) (*Variant, error) - // Updates a variant. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This method supports patch semantics. Returns the modified variant without - // its calls. - UpdateVariant(context.Context, *UpdateVariantRequest) (*Variant, error) - // Deletes a variant. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteVariant(context.Context, *DeleteVariantRequest) (*google_protobuf1.Empty, error) - // Gets a variant by ID. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetVariant(context.Context, *GetVariantRequest) (*Variant, error) - // Merges the given variants with existing variants. - // - // For the definitions of variants and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Each variant will be - // merged with an existing variant that matches its reference sequence, - // start, end, reference bases, and alternative bases. If no such variant - // exists, a new one will be created. - // - // When variants are merged, the call information from the new variant - // is added to the existing variant. Variant info fields are merged as - // specified in the - // [infoMergeConfig][google.genomics.v1.MergeVariantsRequest.info_merge_config] - // field of the MergeVariantsRequest. - // - // Please exercise caution when using this method! It is easy to introduce - // mistakes in existing variants and difficult to back out of them. For - // example, - // suppose you were trying to merge a new variant with an existing one and - // both - // variants contain calls that belong to callsets with the same callset ID. - // - // // Existing variant - irrelevant fields trimmed for clarity - // { - // "variantSetId": "10473108253681171589", - // "referenceName": "1", - // "start": "10582", - // "referenceBases": "G", - // "alternateBases": [ - // "A" - // ], - // "calls": [ - // { - // "callSetId": "10473108253681171589-0", - // "callSetName": "CALLSET0", - // "genotype": [ - // 0, - // 1 - // ], - // } - // ] - // } - // - // // New variant with conflicting call information - // { - // "variantSetId": "10473108253681171589", - // "referenceName": "1", - // "start": "10582", - // "referenceBases": "G", - // "alternateBases": [ - // "A" - // ], - // "calls": [ - // { - // "callSetId": "10473108253681171589-0", - // "callSetName": "CALLSET0", - // "genotype": [ - // 1, - // 1 - // ], - // } - // ] - // } - // - // The resulting merged variant would overwrite the existing calls with those - // from the new variant: - // - // { - // "variantSetId": "10473108253681171589", - // "referenceName": "1", - // "start": "10582", - // "referenceBases": "G", - // "alternateBases": [ - // "A" - // ], - // "calls": [ - // { - // "callSetId": "10473108253681171589-0", - // "callSetName": "CALLSET0", - // "genotype": [ - // 1, - // 1 - // ], - // } - // ] - // } - // - // This may be the desired outcome, but it is up to the user to determine if - // if that is indeed the case. - MergeVariants(context.Context, *MergeVariantsRequest) (*google_protobuf1.Empty, error) - // Gets a list of call sets matching the criteria. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // Implements - // [GlobalAllianceApi.searchCallSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L178). - SearchCallSets(context.Context, *SearchCallSetsRequest) (*SearchCallSetsResponse, error) - // Creates a new call set. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - CreateCallSet(context.Context, *CreateCallSetRequest) (*CallSet, error) - // Updates a call set. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - // - // This method supports patch semantics. - UpdateCallSet(context.Context, *UpdateCallSetRequest) (*CallSet, error) - // Deletes a call set. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - DeleteCallSet(context.Context, *DeleteCallSetRequest) (*google_protobuf1.Empty, error) - // Gets a call set by ID. - // - // For the definitions of call sets and other genomics resources, see - // [Fundamentals of Google - // Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) - GetCallSet(context.Context, *GetCallSetRequest) (*CallSet, error) -} - -func RegisterVariantServiceV1Server(s *grpc.Server, srv VariantServiceV1Server) { - s.RegisterService(&_VariantServiceV1_serviceDesc, srv) -} - -func _VariantServiceV1_ImportVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ImportVariantsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).ImportVariants(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/ImportVariants", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).ImportVariants(ctx, req.(*ImportVariantsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_CreateVariantSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateVariantSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).CreateVariantSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/CreateVariantSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).CreateVariantSet(ctx, req.(*CreateVariantSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_ExportVariantSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExportVariantSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).ExportVariantSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/ExportVariantSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).ExportVariantSet(ctx, req.(*ExportVariantSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_GetVariantSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVariantSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).GetVariantSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/GetVariantSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).GetVariantSet(ctx, req.(*GetVariantSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_SearchVariantSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchVariantSetsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).SearchVariantSets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/SearchVariantSets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).SearchVariantSets(ctx, req.(*SearchVariantSetsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_DeleteVariantSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteVariantSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).DeleteVariantSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/DeleteVariantSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).DeleteVariantSet(ctx, req.(*DeleteVariantSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_UpdateVariantSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateVariantSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).UpdateVariantSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/UpdateVariantSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).UpdateVariantSet(ctx, req.(*UpdateVariantSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_SearchVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchVariantsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).SearchVariants(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/SearchVariants", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).SearchVariants(ctx, req.(*SearchVariantsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_CreateVariant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateVariantRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).CreateVariant(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/CreateVariant", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).CreateVariant(ctx, req.(*CreateVariantRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_UpdateVariant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateVariantRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).UpdateVariant(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/UpdateVariant", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).UpdateVariant(ctx, req.(*UpdateVariantRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_DeleteVariant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteVariantRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).DeleteVariant(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/DeleteVariant", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).DeleteVariant(ctx, req.(*DeleteVariantRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_GetVariant_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetVariantRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).GetVariant(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/GetVariant", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).GetVariant(ctx, req.(*GetVariantRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_MergeVariants_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MergeVariantsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).MergeVariants(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/MergeVariants", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).MergeVariants(ctx, req.(*MergeVariantsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_SearchCallSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchCallSetsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).SearchCallSets(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/SearchCallSets", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).SearchCallSets(ctx, req.(*SearchCallSetsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_CreateCallSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateCallSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).CreateCallSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/CreateCallSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).CreateCallSet(ctx, req.(*CreateCallSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_UpdateCallSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateCallSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).UpdateCallSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/UpdateCallSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).UpdateCallSet(ctx, req.(*UpdateCallSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_DeleteCallSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteCallSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).DeleteCallSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/DeleteCallSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).DeleteCallSet(ctx, req.(*DeleteCallSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _VariantServiceV1_GetCallSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetCallSetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(VariantServiceV1Server).GetCallSet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1.VariantServiceV1/GetCallSet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(VariantServiceV1Server).GetCallSet(ctx, req.(*GetCallSetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _VariantServiceV1_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.genomics.v1.VariantServiceV1", - HandlerType: (*VariantServiceV1Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ImportVariants", - Handler: _VariantServiceV1_ImportVariants_Handler, - }, - { - MethodName: "CreateVariantSet", - Handler: _VariantServiceV1_CreateVariantSet_Handler, - }, - { - MethodName: "ExportVariantSet", - Handler: _VariantServiceV1_ExportVariantSet_Handler, - }, - { - MethodName: "GetVariantSet", - Handler: _VariantServiceV1_GetVariantSet_Handler, - }, - { - MethodName: "SearchVariantSets", - Handler: _VariantServiceV1_SearchVariantSets_Handler, - }, - { - MethodName: "DeleteVariantSet", - Handler: _VariantServiceV1_DeleteVariantSet_Handler, - }, - { - MethodName: "UpdateVariantSet", - Handler: _VariantServiceV1_UpdateVariantSet_Handler, - }, - { - MethodName: "SearchVariants", - Handler: _VariantServiceV1_SearchVariants_Handler, - }, - { - MethodName: "CreateVariant", - Handler: _VariantServiceV1_CreateVariant_Handler, - }, - { - MethodName: "UpdateVariant", - Handler: _VariantServiceV1_UpdateVariant_Handler, - }, - { - MethodName: "DeleteVariant", - Handler: _VariantServiceV1_DeleteVariant_Handler, - }, - { - MethodName: "GetVariant", - Handler: _VariantServiceV1_GetVariant_Handler, - }, - { - MethodName: "MergeVariants", - Handler: _VariantServiceV1_MergeVariants_Handler, - }, - { - MethodName: "SearchCallSets", - Handler: _VariantServiceV1_SearchCallSets_Handler, - }, - { - MethodName: "CreateCallSet", - Handler: _VariantServiceV1_CreateCallSet_Handler, - }, - { - MethodName: "UpdateCallSet", - Handler: _VariantServiceV1_UpdateCallSet_Handler, - }, - { - MethodName: "DeleteCallSet", - Handler: _VariantServiceV1_DeleteCallSet_Handler, - }, - { - MethodName: "GetCallSet", - Handler: _VariantServiceV1_GetCallSet_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/genomics/v1/variants.proto", -} - -func init() { proto.RegisterFile("google/genomics/v1/variants.proto", fileDescriptor11) } - -var fileDescriptor11 = []byte{ - // 2348 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xdd, 0x6e, 0x1b, 0xc7, - 0xf5, 0xff, 0xef, 0x92, 0x94, 0xc8, 0x43, 0x91, 0x5a, 0x4f, 0x14, 0x69, 0x43, 0x7f, 0xc9, 0xfb, - 0xb7, 0x1d, 0x45, 0x75, 0x45, 0x9b, 0x81, 0xd3, 0x54, 0x49, 0x6a, 0x48, 0x34, 0xa5, 0xb0, 0x90, - 0x48, 0x65, 0x45, 0xbb, 0x75, 0x80, 0x82, 0x58, 0x91, 0x23, 0x7a, 0x6d, 0x72, 0x97, 0xde, 0x5d, - 0xaa, 0x96, 0x0d, 0x5f, 0x34, 0xfd, 0x42, 0x80, 0x02, 0x05, 0x1a, 0xa0, 0x57, 0xbd, 0xed, 0x45, - 0xd1, 0xa2, 0x6f, 0xe0, 0x37, 0x68, 0x7b, 0x53, 0xf4, 0x0d, 0xfa, 0x10, 0xbd, 0x2c, 0x66, 0x76, - 0x66, 0xb9, 0xbb, 0x1c, 0xae, 0x28, 0x07, 0x09, 0x7a, 0xc7, 0x39, 0x73, 0x66, 0xce, 0xd7, 0xef, - 0x9c, 0x39, 0x67, 0x25, 0xb8, 0xd6, 0xb3, 0xed, 0x5e, 0x1f, 0x97, 0x7b, 0xd8, 0xb2, 0x07, 0x66, - 0xc7, 0x2d, 0x9f, 0xdc, 0x29, 0x9f, 0x18, 0x8e, 0x69, 0x58, 0x9e, 0xbb, 0x31, 0x74, 0x6c, 0xcf, - 0x46, 0xc8, 0x67, 0xd9, 0xe0, 0x2c, 0x1b, 0x27, 0x77, 0x4a, 0x97, 0xd8, 0x31, 0x63, 0x68, 0x96, - 0x0d, 0xcb, 0xb2, 0x3d, 0xc3, 0x33, 0x6d, 0x8b, 0x9d, 0x28, 0xfd, 0x3f, 0xdb, 0xed, 0xdb, 0x56, - 0xcf, 0x19, 0x59, 0x96, 0x69, 0xf5, 0xca, 0xf6, 0x10, 0x3b, 0x11, 0xa6, 0x8b, 0x8c, 0x89, 0xae, - 0x8e, 0x46, 0xc7, 0x65, 0x3c, 0x18, 0x7a, 0xa7, 0x6c, 0x73, 0x35, 0xbe, 0x79, 0x6c, 0xe2, 0x7e, - 0xb7, 0x3d, 0x30, 0xdc, 0xa7, 0x8c, 0xe3, 0x52, 0x9c, 0xc3, 0xf5, 0x9c, 0x51, 0xc7, 0xf3, 0x77, - 0xb5, 0xd7, 0x29, 0x40, 0x0f, 0x7d, 0x33, 0x0e, 0xb1, 0xb7, 0x8f, 0x3d, 0xa3, 0x6b, 0x78, 0x06, - 0x52, 0x20, 0xf5, 0x14, 0x9f, 0xaa, 0xd2, 0xaa, 0xb4, 0x96, 0xd3, 0xc9, 0x4f, 0xb4, 0x04, 0x99, - 0x13, 0xa3, 0x3f, 0xc2, 0xaa, 0x4c, 0x69, 0xfe, 0x02, 0x15, 0x41, 0x36, 0xbb, 0x6a, 0x9a, 0x92, - 0x64, 0xb3, 0x8b, 0xee, 0x41, 0xda, 0x3b, 0x1d, 0x62, 0x35, 0xb3, 0x2a, 0xad, 0x15, 0x2b, 0xdf, - 0xd9, 0x98, 0xf4, 0xc8, 0xc6, 0xa4, 0xb4, 0x8d, 0xd6, 0xe9, 0x10, 0xeb, 0xf4, 0x20, 0x5a, 0x86, - 0x39, 0x6b, 0x34, 0x38, 0xc2, 0x8e, 0x9a, 0xa5, 0x97, 0xb2, 0x15, 0x5a, 0x85, 0x7c, 0x17, 0xbb, - 0x1d, 0xc7, 0x1c, 0x12, 0xd7, 0xa8, 0xf3, 0x74, 0x33, 0x4c, 0x42, 0xf7, 0x21, 0x6d, 0x5a, 0xc7, - 0xb6, 0x9a, 0x5a, 0x4d, 0xad, 0xe5, 0x2b, 0xb7, 0x67, 0x14, 0x5d, 0xb7, 0x8e, 0xed, 0x9a, 0xe5, - 0x39, 0xa7, 0x3a, 0x3d, 0x5d, 0x3a, 0x84, 0x5c, 0x40, 0x12, 0x78, 0xe1, 0x76, 0xd8, 0x0b, 0xf9, - 0x4a, 0x89, 0x4b, 0xe1, 0xce, 0xdd, 0xd8, 0x33, 0x5d, 0xef, 0x21, 0xe1, 0x60, 0x1e, 0xda, 0x94, - 0x3f, 0x94, 0xb4, 0x47, 0x90, 0x26, 0x26, 0xa2, 0x25, 0x50, 0x5a, 0x8f, 0x0e, 0x6a, 0xed, 0x07, - 0x8d, 0xc3, 0x83, 0x5a, 0xb5, 0xbe, 0x53, 0xaf, 0xdd, 0x57, 0xfe, 0x0f, 0xe5, 0x61, 0xbe, 0xde, - 0x68, 0xd5, 0x76, 0x6b, 0xba, 0x22, 0xa1, 0x1c, 0x64, 0x76, 0xf6, 0x9a, 0x5b, 0x2d, 0x45, 0x46, - 0x59, 0x48, 0xef, 0xec, 0x6d, 0xed, 0x2a, 0x29, 0x54, 0x80, 0x5c, 0xf5, 0xd3, 0x2d, 0x7d, 0xab, - 0xda, 0xaa, 0xe9, 0x4a, 0x1a, 0x01, 0xcc, 0x1d, 0xb6, 0xf4, 0x7a, 0x63, 0x57, 0xc9, 0x68, 0x7f, - 0x95, 0x01, 0xc6, 0x66, 0xa1, 0xcb, 0x00, 0xc4, 0x2c, 0x17, 0x7b, 0x6d, 0xb3, 0xcb, 0x14, 0xcf, - 0x31, 0x4a, 0xbd, 0xcb, 0xc2, 0x25, 0x07, 0xe1, 0x5a, 0x03, 0xc5, 0xc1, 0xc7, 0xd8, 0xc1, 0x56, - 0x07, 0xb7, 0xd9, 0xa1, 0x39, 0xba, 0x5b, 0x0c, 0xe8, 0x87, 0xf4, 0xe4, 0x7e, 0x98, 0xf3, 0xc8, - 0x1e, 0x59, 0x5d, 0x57, 0xcd, 0x50, 0x4f, 0x6b, 0x22, 0x4f, 0xeb, 0x9c, 0x77, 0x9b, 0xb0, 0xea, - 0x8b, 0x4e, 0x64, 0xed, 0xa2, 0x6d, 0xc8, 0x0e, 0x58, 0x08, 0xd4, 0x34, 0xbd, 0xe6, 0xe6, 0x6c, - 0x01, 0xd3, 0x83, 0x73, 0x08, 0x41, 0xda, 0x32, 0x06, 0x98, 0x61, 0x81, 0xfe, 0x8e, 0xc3, 0x24, - 0x3b, 0x01, 0x13, 0xed, 0xcb, 0x34, 0xcc, 0xb3, 0x6b, 0xd1, 0x75, 0x28, 0xb2, 0x14, 0xe6, 0xc6, - 0x2f, 0xd2, 0x03, 0x0b, 0x27, 0x81, 0x5c, 0x81, 0xd3, 0x96, 0x20, 0x43, 0x64, 0xb9, 0x14, 0x69, - 0x39, 0xdd, 0x5f, 0x20, 0x15, 0xe6, 0x3b, 0x0e, 0x36, 0x3c, 0xdc, 0x55, 0x17, 0x56, 0xa5, 0xb5, - 0x94, 0xce, 0x97, 0xe8, 0x06, 0x8c, 0x9d, 0xd9, 0xa6, 0x1a, 0x17, 0xe9, 0x5d, 0x85, 0x80, 0xda, - 0x20, 0xaa, 0x2f, 0x41, 0xc6, 0xf5, 0x0c, 0xc7, 0x53, 0x15, 0x7a, 0xdc, 0x5f, 0x10, 0x08, 0x62, - 0xab, 0xab, 0x16, 0x28, 0x8d, 0xfc, 0x44, 0xef, 0xc2, 0x62, 0x28, 0x12, 0x86, 0x8b, 0xdd, 0x89, - 0x90, 0x6d, 0x13, 0x2a, 0x61, 0x34, 0xfa, 0x1e, 0x76, 0x2c, 0xc3, 0xe3, 0x8c, 0xf3, 0x54, 0xe3, - 0x62, 0x40, 0xf6, 0x19, 0x55, 0x98, 0x7f, 0x36, 0x32, 0xfa, 0xa6, 0x77, 0x4a, 0x1d, 0x26, 0xe9, - 0x7c, 0x49, 0xb2, 0xf1, 0xd8, 0x24, 0xcc, 0x6a, 0x8e, 0x9e, 0x64, 0x2b, 0xf4, 0x7d, 0x96, 0x6b, - 0x40, 0x43, 0x77, 0x23, 0x21, 0x74, 0xf1, 0x04, 0x43, 0x77, 0x21, 0xd3, 0x31, 0xfa, 0x7d, 0x57, - 0xcd, 0xd3, 0xb3, 0x57, 0x13, 0xce, 0x56, 0x8d, 0x7e, 0x5f, 0xf7, 0xb9, 0xbf, 0x99, 0xbc, 0xfc, - 0x87, 0x0c, 0xf9, 0x90, 0x2c, 0x74, 0x05, 0xf2, 0x44, 0x1a, 0x07, 0x83, 0x8f, 0x9e, 0x1c, 0x21, - 0xf9, 0x48, 0xd0, 0xa0, 0x10, 0xec, 0xd3, 0x40, 0xe6, 0x7c, 0x7c, 0x31, 0x0e, 0x1a, 0xc6, 0x12, - 0x64, 0x89, 0x29, 0xb4, 0x0a, 0x12, 0x77, 0x67, 0xf4, 0x60, 0x4d, 0xf6, 0x86, 0x8f, 0x89, 0xcb, - 0xb1, 0x47, 0x2b, 0x64, 0x4e, 0x0f, 0xd6, 0xa8, 0x0c, 0x6f, 0x71, 0xbe, 0x76, 0xdf, 0x7c, 0x8a, - 0xfb, 0xe6, 0x63, 0xdb, 0x26, 0xd9, 0x98, 0x5a, 0x93, 0x74, 0xc4, 0xb7, 0xf6, 0x82, 0x1d, 0xf4, - 0x09, 0x8b, 0x81, 0x4c, 0xfd, 0xf8, 0xde, 0x19, 0x7e, 0xfc, 0x76, 0x0a, 0xdd, 0x1f, 0x64, 0x98, - 0xaf, 0xfa, 0xce, 0x60, 0x69, 0x23, 0x05, 0x69, 0xc3, 0xd3, 0x55, 0x0e, 0xa5, 0xeb, 0x45, 0xc8, - 0xb9, 0xc6, 0x60, 0xd8, 0xc7, 0xc4, 0xdd, 0x7e, 0x1e, 0x67, 0x7d, 0x42, 0xbd, 0x8b, 0x6e, 0xc2, - 0x62, 0x34, 0x3b, 0x5d, 0xea, 0x8d, 0x9c, 0x5e, 0x08, 0xa7, 0x67, 0x24, 0xf3, 0x32, 0xd1, 0xcc, - 0xe3, 0x30, 0x4d, 0x4f, 0x87, 0x29, 0xd3, 0xf6, 0xdb, 0x71, 0xcf, 0x8f, 0xa1, 0x18, 0x2d, 0x8c, - 0x82, 0xda, 0x20, 0x89, 0x6a, 0xc3, 0x55, 0xc8, 0x8f, 0x86, 0x43, 0xec, 0xf8, 0x95, 0x97, 0x0a, - 0x4d, 0xe9, 0x40, 0x49, 0xf4, 0x1e, 0xed, 0x37, 0x69, 0x78, 0xbb, 0x3e, 0x18, 0xda, 0x8e, 0xc7, - 0x62, 0xee, 0xea, 0xf8, 0xd9, 0x08, 0xbb, 0xa2, 0x1a, 0x27, 0x09, 0x6a, 0xdc, 0x55, 0xc8, 0xbb, - 0xf6, 0xc8, 0xe9, 0xe0, 0xf6, 0xc8, 0x31, 0x5d, 0x8a, 0xa9, 0x9c, 0x0e, 0x3e, 0xe9, 0x81, 0x63, - 0xba, 0xe8, 0x53, 0x98, 0x3b, 0xb6, 0x9d, 0x81, 0xe1, 0xa9, 0x29, 0xfa, 0xb4, 0x0b, 0xdf, 0x57, - 0xa1, 0x06, 0x1b, 0x3b, 0xf4, 0x9c, 0xce, 0xce, 0xa3, 0x4d, 0x78, 0xc7, 0x22, 0xbf, 0xfa, 0xe6, - 0x0b, 0xdc, 0x8e, 0x1a, 0xef, 0xd2, 0x00, 0x66, 0xf5, 0x95, 0x80, 0x41, 0x0f, 0xbb, 0xc1, 0x45, - 0x4f, 0xe0, 0x02, 0x89, 0x4e, 0x7b, 0x80, 0x9d, 0x1e, 0x6e, 0x77, 0x6c, 0xeb, 0xd8, 0xec, 0x51, - 0x50, 0xe4, 0x2b, 0x3f, 0x98, 0x5d, 0x21, 0x12, 0xd8, 0x7d, 0x72, 0x43, 0x95, 0x5e, 0xe0, 0x87, - 0x7d, 0xd1, 0x8c, 0x52, 0x4b, 0x4f, 0x60, 0x49, 0xc4, 0x28, 0x00, 0xc3, 0xc7, 0x61, 0x30, 0x14, - 0xc5, 0x2f, 0x59, 0x70, 0x55, 0x93, 0xb7, 0x77, 0x61, 0x60, 0x34, 0x60, 0xce, 0xf7, 0x12, 0x5a, - 0x06, 0xb4, 0xd3, 0xd4, 0xf7, 0xb7, 0x5a, 0xb1, 0x26, 0xa1, 0x08, 0xc0, 0xe8, 0x0f, 0xab, 0x3b, - 0x8a, 0x84, 0x2e, 0x81, 0xca, 0xd6, 0xd5, 0xe6, 0xfe, 0xc1, 0x5e, 0xad, 0x55, 0x6b, 0xef, 0xd6, - 0x1a, 0xcd, 0xfd, 0x7a, 0xf5, 0x50, 0x91, 0xb5, 0x4d, 0x58, 0x8e, 0x9b, 0xee, 0x0e, 0x6d, 0xcb, - 0x25, 0x0f, 0xe4, 0x42, 0xa8, 0xc4, 0xb9, 0xaa, 0xe4, 0x47, 0x3a, 0xa8, 0x71, 0xae, 0xf6, 0x39, - 0xac, 0x54, 0x69, 0xfe, 0x8c, 0x1f, 0x5f, 0x8e, 0xa5, 0x7b, 0x90, 0x0f, 0x61, 0x89, 0xba, 0x20, - 0x5f, 0xb9, 0x92, 0xfc, 0x70, 0xeb, 0x30, 0x06, 0x9a, 0xf6, 0x2f, 0x19, 0x56, 0x6a, 0xcf, 0x43, - 0x8a, 0x85, 0x2e, 0x9f, 0x0d, 0xa8, 0x71, 0xfd, 0xe5, 0xb8, 0xfe, 0xa4, 0x05, 0x1a, 0x3a, 0xf6, - 0x13, 0xdc, 0xa1, 0x77, 0xa4, 0xfc, 0x1a, 0xce, 0x28, 0xf5, 0x2e, 0xfa, 0x61, 0x00, 0xe4, 0x34, - 0x8d, 0x56, 0x45, 0xa4, 0xfe, 0x14, 0x1d, 0xe3, 0x50, 0x7e, 0x0f, 0x94, 0x23, 0xb3, 0xf7, 0x6c, - 0x84, 0x9d, 0xd3, 0x36, 0x6b, 0xb2, 0x58, 0x5d, 0x5f, 0xe4, 0xf4, 0xfb, 0x3e, 0x99, 0x24, 0x7a, - 0xc0, 0xea, 0x19, 0x47, 0x7d, 0xcc, 0x1e, 0xed, 0x02, 0xa7, 0xb6, 0x08, 0x51, 0xbb, 0x7b, 0x26, - 0x10, 0xde, 0x82, 0x45, 0x46, 0xdf, 0xae, 0xef, 0x7e, 0xf6, 0xa0, 0xa6, 0x3f, 0x52, 0x24, 0xed, - 0x63, 0x58, 0xda, 0xc5, 0x6f, 0xea, 0x53, 0xed, 0xa7, 0xa0, 0x1e, 0x62, 0xc3, 0xe9, 0x3c, 0x1e, - 0x5f, 0x10, 0x94, 0x8f, 0xab, 0x90, 0x1f, 0x37, 0x94, 0x01, 0x5c, 0x82, 0x8e, 0xd2, 0x77, 0xb7, - 0xd1, 0xc3, 0x6d, 0xcf, 0x7e, 0x8a, 0x2d, 0x56, 0xdc, 0x73, 0x84, 0xd2, 0x22, 0x04, 0x52, 0xe1, - 0xe9, 0xb6, 0x6b, 0xbe, 0xc0, 0x34, 0x18, 0x19, 0x3d, 0x4b, 0x08, 0x87, 0xe6, 0x0b, 0xac, 0xfd, - 0x4a, 0x82, 0x77, 0x04, 0x92, 0x19, 0x54, 0xb7, 0x60, 0x21, 0xa4, 0xbc, 0x2f, 0xfb, 0x6c, 0xb8, - 0xe5, 0xc7, 0xa6, 0xb9, 0xe4, 0x09, 0xb1, 0xf0, 0x73, 0xaf, 0x3d, 0xa1, 0x61, 0x81, 0x90, 0x0f, - 0xb8, 0x96, 0xda, 0x3d, 0x58, 0xb9, 0x8f, 0xfb, 0x58, 0x84, 0xf9, 0xd9, 0x5c, 0xf8, 0x5a, 0x82, - 0x95, 0x07, 0xc3, 0xae, 0xf1, 0xc6, 0x37, 0xc4, 0x73, 0x4b, 0x3e, 0x6f, 0x6e, 0xa1, 0x8f, 0xc8, - 0x1b, 0x41, 0x34, 0xa0, 0xc3, 0x1f, 0xc5, 0xa1, 0xe8, 0x61, 0xda, 0x21, 0xf3, 0xe1, 0xbe, 0xe1, - 0x3e, 0x25, 0xef, 0x07, 0x61, 0x27, 0xbf, 0xb5, 0xbf, 0xc8, 0xf0, 0x76, 0x24, 0x12, 0x01, 0x00, - 0x04, 0xaf, 0xb0, 0x24, 0x7a, 0x85, 0xaf, 0x8d, 0xa3, 0x15, 0x7a, 0xe6, 0xb9, 0x4d, 0x0d, 0xbf, - 0x39, 0x8f, 0xe6, 0x6e, 0x6a, 0x22, 0x77, 0x27, 0x9f, 0xc3, 0x74, 0x62, 0xab, 0x9c, 0x11, 0xb4, - 0xca, 0x73, 0xe3, 0x56, 0x39, 0x8a, 0xcd, 0xf9, 0x44, 0x6c, 0x66, 0xa3, 0xd8, 0x24, 0x9b, 0x03, - 0xe3, 0x79, 0xdb, 0xef, 0x55, 0x73, 0xfe, 0xe6, 0xc0, 0x78, 0x4e, 0xfa, 0x05, 0x57, 0x3b, 0x85, - 0xe5, 0xb8, 0xb7, 0x18, 0x68, 0xbf, 0x07, 0x59, 0xfe, 0x55, 0x80, 0x01, 0xf6, 0x62, 0x42, 0x0c, - 0xf5, 0x80, 0x79, 0x66, 0xa8, 0xee, 0xc3, 0x52, 0xa4, 0x3c, 0xf3, 0x38, 0xdd, 0x85, 0x79, 0x76, - 0x17, 0xab, 0xcb, 0x89, 0x72, 0x39, 0xaf, 0xf6, 0x27, 0x09, 0x96, 0x22, 0xc0, 0xe5, 0xf7, 0x5d, - 0x06, 0x0e, 0xae, 0xd0, 0x24, 0xc9, 0x28, 0xf5, 0x6e, 0x58, 0x9c, 0x3c, 0xbb, 0xb8, 0x38, 0x48, - 0x53, 0xe7, 0x02, 0xe9, 0x5d, 0x58, 0x8a, 0x64, 0xe9, 0x6c, 0xaa, 0x6a, 0x15, 0xb8, 0x30, 0x2e, - 0x8e, 0x33, 0x9e, 0xf9, 0x9b, 0x0c, 0x4b, 0xf4, 0xb9, 0x7e, 0xb3, 0x76, 0x2a, 0x8c, 0x02, 0xf9, - 0x3c, 0x28, 0x30, 0x45, 0x0d, 0x8e, 0xff, 0x45, 0xe3, 0x13, 0xd1, 0x0d, 0x22, 0x1d, 0xff, 0x07, - 0xfb, 0x9b, 0xdf, 0x4a, 0xbc, 0xbc, 0xb0, 0x7e, 0xfb, 0xdc, 0xe5, 0x45, 0x34, 0x3d, 0x44, 0xd3, - 0x3b, 0x95, 0x98, 0xde, 0xe9, 0xd8, 0xd3, 0xf3, 0x82, 0x67, 0xf0, 0x58, 0x21, 0x96, 0xc1, 0x1f, - 0x42, 0x8e, 0x57, 0xa9, 0xc4, 0x14, 0x66, 0x07, 0xf5, 0x2c, 0xab, 0x5f, 0xb3, 0xa7, 0x70, 0x83, - 0xa7, 0x30, 0xbf, 0x82, 0xf9, 0xe2, 0x03, 0xc8, 0x72, 0xc9, 0x49, 0x39, 0xcc, 0x4f, 0xcd, 0x33, - 0xc1, 0xda, 0x9f, 0x83, 0x1c, 0x8e, 0x5d, 0x18, 0x9b, 0x67, 0xa5, 0xf8, 0x3c, 0x1b, 0x16, 0x28, - 0xcf, 0x2e, 0xf0, 0xeb, 0x65, 0xf1, 0x07, 0x3c, 0x8b, 0xcf, 0xa7, 0xac, 0xf6, 0x3e, 0x4d, 0xe3, - 0x73, 0x1e, 0xfa, 0x3b, 0x01, 0x9e, 0xe7, 0x60, 0x63, 0x10, 0x4f, 0xe4, 0x68, 0x9b, 0x28, 0xc5, - 0xdb, 0xc4, 0xc9, 0x3c, 0x97, 0x67, 0xe8, 0x46, 0xbf, 0xe9, 0x17, 0x4d, 0xfb, 0x0c, 0x96, 0xe3, - 0xe6, 0x7c, 0xcd, 0x87, 0x67, 0xfd, 0x27, 0x80, 0x26, 0x93, 0x17, 0x5d, 0x87, 0xd5, 0x7a, 0x63, - 0xa7, 0xd9, 0xde, 0xaf, 0xe9, 0xbb, 0xb5, 0x76, 0xf3, 0xa0, 0xa6, 0x6f, 0xb5, 0xea, 0xcd, 0xc6, - 0xe4, 0x54, 0x52, 0xdf, 0x6d, 0x34, 0xf5, 0x5a, 0xbb, 0x51, 0xfb, 0x91, 0x22, 0xa1, 0x0b, 0x50, - 0xd8, 0x6f, 0x3e, 0xac, 0xb5, 0x5b, 0xcd, 0x76, 0x75, 0x6b, 0x6f, 0xef, 0x50, 0x91, 0x2b, 0x7f, - 0x94, 0x60, 0xc5, 0x57, 0xd9, 0xb4, 0x7a, 0x41, 0xeb, 0xe2, 0x9c, 0x98, 0x1d, 0x8c, 0xbe, 0x94, - 0xa0, 0x18, 0x35, 0x07, 0x09, 0xbf, 0x63, 0x08, 0x23, 0x58, 0x5a, 0x9f, 0x85, 0xd5, 0xf7, 0x8e, - 0x76, 0xe5, 0x8b, 0x7f, 0xfe, 0xfb, 0x2b, 0x59, 0xd5, 0xde, 0x0a, 0x7f, 0xb6, 0xdf, 0x74, 0x29, - 0xf3, 0xa6, 0xb4, 0x7e, 0x5b, 0xaa, 0xbc, 0x46, 0xa0, 0x44, 0xd5, 0x7b, 0x78, 0x07, 0xbd, 0x80, - 0x62, 0x74, 0x8e, 0x12, 0xeb, 0x27, 0x1c, 0x33, 0x4b, 0x97, 0x39, 0x6b, 0xe8, 0xeb, 0xfe, 0x46, - 0xe0, 0xe1, 0x29, 0x2a, 0x99, 0xf4, 0xaa, 0x4d, 0x69, 0x1d, 0xfd, 0x52, 0x02, 0x25, 0x3e, 0x88, - 0x21, 0xe1, 0x17, 0xf5, 0x29, 0xe3, 0x5a, 0xe9, 0x8c, 0xee, 0x51, 0xbb, 0x4e, 0x35, 0xb8, 0xa2, - 0x2d, 0x86, 0x35, 0xc0, 0x9e, 0xbb, 0x19, 0xee, 0x44, 0xd1, 0xef, 0x24, 0x50, 0xe2, 0xf3, 0x90, - 0x58, 0x8f, 0x29, 0x53, 0xd3, 0x59, 0x8e, 0xa8, 0x50, 0x35, 0x6e, 0x69, 0xef, 0xc6, 0xd4, 0x28, - 0xbf, 0x8c, 0x66, 0xe0, 0xab, 0x4d, 0xfc, 0x9c, 0x3b, 0xe7, 0xe7, 0x12, 0x14, 0x22, 0x13, 0x0f, - 0x5a, 0x13, 0x69, 0x24, 0x1a, 0x8a, 0xce, 0x74, 0xcb, 0x1a, 0xd5, 0x47, 0x43, 0xab, 0x67, 0xe9, - 0x83, 0xbe, 0x92, 0xe0, 0xc2, 0xc4, 0xfc, 0x82, 0x6e, 0x09, 0x71, 0x39, 0x65, 0xc0, 0x2a, 0x7d, - 0x77, 0x46, 0x6e, 0x06, 0xe4, 0x6b, 0x54, 0xb9, 0x8b, 0xda, 0x72, 0x5c, 0x39, 0x97, 0x1e, 0x21, - 0xbe, 0xf9, 0x99, 0x04, 0x4a, 0x7c, 0x9a, 0x11, 0x07, 0x6c, 0xca, 0xcc, 0x53, 0x5a, 0x9e, 0x28, - 0xe5, 0xb5, 0xc1, 0xd0, 0x3b, 0xe5, 0x9e, 0x59, 0x3f, 0xdb, 0x33, 0xbf, 0x97, 0x40, 0x89, 0xcf, - 0x43, 0x62, 0x1d, 0xa6, 0x4c, 0x4d, 0x67, 0x46, 0xe9, 0x2e, 0xd5, 0xa5, 0x5c, 0x39, 0x53, 0x97, - 0x28, 0x9a, 0x7f, 0x4d, 0x4a, 0x4e, 0xa4, 0x75, 0x9f, 0x52, 0x72, 0x44, 0xc3, 0xd0, 0x94, 0x92, - 0x23, 0x9c, 0x04, 0xc4, 0xf9, 0x1d, 0x0a, 0xd3, 0x08, 0x0a, 0x91, 0xc4, 0x15, 0x23, 0x58, 0xd4, - 0xeb, 0x97, 0x92, 0x2a, 0xbb, 0x76, 0x99, 0xca, 0x5d, 0xd1, 0x16, 0x22, 0x75, 0x25, 0xe8, 0xc0, - 0xbf, 0x90, 0xa0, 0x10, 0xf1, 0xb9, 0x58, 0xae, 0x68, 0x26, 0x48, 0x96, 0xbb, 0x4e, 0xe5, 0x5e, - 0xaf, 0xbc, 0x13, 0xb1, 0xf7, 0xe5, 0xb8, 0xcb, 0x7e, 0x35, 0x56, 0xc2, 0x83, 0x42, 0x04, 0x7b, - 0x62, 0x1d, 0x44, 0xcd, 0xfe, 0x54, 0x6c, 0xb2, 0xc4, 0x58, 0x9f, 0x2e, 0x1e, 0xb9, 0x00, 0xe3, - 0x82, 0x80, 0x6e, 0x24, 0x17, 0x8c, 0x99, 0x6c, 0x66, 0x42, 0x51, 0x82, 0xd0, 0x21, 0x14, 0x22, - 0x4d, 0xba, 0xd8, 0x54, 0x51, 0x1f, 0x3f, 0xd5, 0x54, 0x1e, 0x61, 0x14, 0x89, 0x30, 0x1d, 0x19, - 0x08, 0xb0, 0xc6, 0x10, 0xe7, 0xbd, 0x6d, 0x12, 0xc4, 0x63, 0x0d, 0x79, 0x12, 0xc4, 0xe3, 0xad, - 0x72, 0x14, 0xe2, 0x74, 0x52, 0x8e, 0x56, 0xa2, 0x13, 0x0e, 0x71, 0xfe, 0x37, 0x81, 0x04, 0x88, - 0x47, 0x1b, 0xbb, 0x52, 0x52, 0x23, 0x1a, 0xc8, 0x5d, 0x08, 0xcb, 0xdd, 0x0c, 0x7a, 0x59, 0xf4, - 0x8b, 0x00, 0xe3, 0x89, 0x82, 0x45, 0x3d, 0x73, 0xb2, 0xe0, 0x5b, 0x54, 0xf0, 0xcd, 0x4a, 0x29, - 0x62, 0xf0, 0xcb, 0x50, 0x0f, 0xf8, 0x2a, 0xa4, 0xc6, 0x88, 0xa3, 0x3c, 0x51, 0x0b, 0x51, 0x33, - 0x3c, 0x35, 0xf4, 0x1a, 0x55, 0xe0, 0xd2, 0x7a, 0x82, 0x02, 0xc8, 0xa3, 0x30, 0xe7, 0x32, 0xa7, - 0xc1, 0xfc, 0x3c, 0x66, 0x33, 0xa9, 0x28, 0x41, 0xea, 0xf6, 0x63, 0x58, 0xee, 0xd8, 0x03, 0xc1, - 0x2d, 0xdb, 0x05, 0x8e, 0xeb, 0x03, 0x62, 0xcb, 0x81, 0xf4, 0xf9, 0x26, 0x67, 0xb2, 0xfb, 0x86, - 0xd5, 0xdb, 0xb0, 0x9d, 0x5e, 0xb9, 0x87, 0x2d, 0x6a, 0x69, 0xd9, 0xdf, 0x32, 0x86, 0xa6, 0x1b, - 0xfe, 0x4f, 0x8b, 0x8f, 0xf8, 0xef, 0xff, 0x48, 0xd2, 0xd1, 0x1c, 0xe5, 0x7c, 0xff, 0xbf, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x7e, 0x5e, 0x37, 0xc0, 0x92, 0x21, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/genomics/v1alpha2/pipelines.pb.go b/vendor/google.golang.org/genproto/googleapis/genomics/v1alpha2/pipelines.pb.go deleted file mode 100644 index 5e79261b..00000000 --- a/vendor/google.golang.org/genproto/googleapis/genomics/v1alpha2/pipelines.pb.go +++ /dev/null @@ -1,1838 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/genomics/v1alpha2/pipelines.proto - -/* -Package genomics is a generated protocol buffer package. - -It is generated from these files: - google/genomics/v1alpha2/pipelines.proto - -It has these top-level messages: - ComputeEngine - RuntimeMetadata - Pipeline - CreatePipelineRequest - RunPipelineArgs - RunPipelineRequest - GetPipelineRequest - ListPipelinesRequest - ListPipelinesResponse - DeletePipelineRequest - GetControllerConfigRequest - ControllerConfig - TimestampEvent - SetOperationStatusRequest - ServiceAccount - LoggingOptions - PipelineResources - PipelineParameter - DockerExecutor -*/ -package genomics - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc1 "google.golang.org/genproto/googleapis/rpc/code" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The types of disks that may be attached to VMs. -type PipelineResources_Disk_Type int32 - -const ( - // Default disk type. Use one of the other options below. - PipelineResources_Disk_TYPE_UNSPECIFIED PipelineResources_Disk_Type = 0 - // Specifies a Google Compute Engine persistent hard disk. See - // https://cloud.google.com/compute/docs/disks/#pdspecs for details. - PipelineResources_Disk_PERSISTENT_HDD PipelineResources_Disk_Type = 1 - // Specifies a Google Compute Engine persistent solid-state disk. See - // https://cloud.google.com/compute/docs/disks/#pdspecs for details. - PipelineResources_Disk_PERSISTENT_SSD PipelineResources_Disk_Type = 2 - // Specifies a Google Compute Engine local SSD. - // See https://cloud.google.com/compute/docs/disks/local-ssd for details. - PipelineResources_Disk_LOCAL_SSD PipelineResources_Disk_Type = 3 -) - -var PipelineResources_Disk_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "PERSISTENT_HDD", - 2: "PERSISTENT_SSD", - 3: "LOCAL_SSD", -} -var PipelineResources_Disk_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "PERSISTENT_HDD": 1, - "PERSISTENT_SSD": 2, - "LOCAL_SSD": 3, -} - -func (x PipelineResources_Disk_Type) String() string { - return proto.EnumName(PipelineResources_Disk_Type_name, int32(x)) -} -func (PipelineResources_Disk_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{16, 0, 0} -} - -// Describes a Compute Engine resource that is being managed by a running -// [pipeline][google.genomics.v1alpha2.Pipeline]. -type ComputeEngine struct { - // The instance on which the operation is running. - InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"` - // The availability zone in which the instance resides. - Zone string `protobuf:"bytes,2,opt,name=zone" json:"zone,omitempty"` - // The machine type of the instance. - MachineType string `protobuf:"bytes,3,opt,name=machine_type,json=machineType" json:"machine_type,omitempty"` - // The names of the disks that were created for this pipeline. - DiskNames []string `protobuf:"bytes,4,rep,name=disk_names,json=diskNames" json:"disk_names,omitempty"` -} - -func (m *ComputeEngine) Reset() { *m = ComputeEngine{} } -func (m *ComputeEngine) String() string { return proto.CompactTextString(m) } -func (*ComputeEngine) ProtoMessage() {} -func (*ComputeEngine) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ComputeEngine) GetInstanceName() string { - if m != nil { - return m.InstanceName - } - return "" -} - -func (m *ComputeEngine) GetZone() string { - if m != nil { - return m.Zone - } - return "" -} - -func (m *ComputeEngine) GetMachineType() string { - if m != nil { - return m.MachineType - } - return "" -} - -func (m *ComputeEngine) GetDiskNames() []string { - if m != nil { - return m.DiskNames - } - return nil -} - -// Runtime metadata that will be populated in the -// [runtimeMetadata][google.genomics.v1.OperationMetadata.runtime_metadata] -// field of the Operation associated with a RunPipeline execution. -type RuntimeMetadata struct { - // Execution information specific to Google Compute Engine. - ComputeEngine *ComputeEngine `protobuf:"bytes,1,opt,name=compute_engine,json=computeEngine" json:"compute_engine,omitempty"` -} - -func (m *RuntimeMetadata) Reset() { *m = RuntimeMetadata{} } -func (m *RuntimeMetadata) String() string { return proto.CompactTextString(m) } -func (*RuntimeMetadata) ProtoMessage() {} -func (*RuntimeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *RuntimeMetadata) GetComputeEngine() *ComputeEngine { - if m != nil { - return m.ComputeEngine - } - return nil -} - -// The pipeline object. Represents a transformation from a set of input -// parameters to a set of output parameters. The transformation is defined -// as a docker image and command to run within that image. Each pipeline -// is run on a Google Compute Engine VM. A pipeline can be created with the -// `create` method and then later run with the `run` method, or a pipeline can -// be defined and run all at once with the `run` method. -type Pipeline struct { - // Required. The project in which to create the pipeline. The caller must have - // WRITE access. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Required. A user specified pipeline name that does not have to be unique. - // This name can be used for filtering Pipelines in ListPipelines. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - // User-specified description. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // Input parameters of the pipeline. - InputParameters []*PipelineParameter `protobuf:"bytes,8,rep,name=input_parameters,json=inputParameters" json:"input_parameters,omitempty"` - // Output parameters of the pipeline. - OutputParameters []*PipelineParameter `protobuf:"bytes,9,rep,name=output_parameters,json=outputParameters" json:"output_parameters,omitempty"` - // Required. The executor indicates in which environment the pipeline runs. - // - // Types that are valid to be assigned to Executor: - // *Pipeline_Docker - Executor isPipeline_Executor `protobuf_oneof:"executor"` - // Required. Specifies resource requirements for the pipeline run. - // Required fields: - // - // * - // [minimumCpuCores][google.genomics.v1alpha2.PipelineResources.minimum_cpu_cores] - // - // * - // [minimumRamGb][google.genomics.v1alpha2.PipelineResources.minimum_ram_gb] - Resources *PipelineResources `protobuf:"bytes,6,opt,name=resources" json:"resources,omitempty"` - // Unique pipeline id that is generated by the service when CreatePipeline - // is called. Cannot be specified in the Pipeline used in the - // CreatePipelineRequest, and will be populated in the response to - // CreatePipeline and all subsequent Get and List calls. Indicates that the - // service has registered this pipeline. - PipelineId string `protobuf:"bytes,7,opt,name=pipeline_id,json=pipelineId" json:"pipeline_id,omitempty"` -} - -func (m *Pipeline) Reset() { *m = Pipeline{} } -func (m *Pipeline) String() string { return proto.CompactTextString(m) } -func (*Pipeline) ProtoMessage() {} -func (*Pipeline) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isPipeline_Executor interface { - isPipeline_Executor() -} - -type Pipeline_Docker struct { - Docker *DockerExecutor `protobuf:"bytes,5,opt,name=docker,oneof"` -} - -func (*Pipeline_Docker) isPipeline_Executor() {} - -func (m *Pipeline) GetExecutor() isPipeline_Executor { - if m != nil { - return m.Executor - } - return nil -} - -func (m *Pipeline) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *Pipeline) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Pipeline) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Pipeline) GetInputParameters() []*PipelineParameter { - if m != nil { - return m.InputParameters - } - return nil -} - -func (m *Pipeline) GetOutputParameters() []*PipelineParameter { - if m != nil { - return m.OutputParameters - } - return nil -} - -func (m *Pipeline) GetDocker() *DockerExecutor { - if x, ok := m.GetExecutor().(*Pipeline_Docker); ok { - return x.Docker - } - return nil -} - -func (m *Pipeline) GetResources() *PipelineResources { - if m != nil { - return m.Resources - } - return nil -} - -func (m *Pipeline) GetPipelineId() string { - if m != nil { - return m.PipelineId - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Pipeline) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Pipeline_OneofMarshaler, _Pipeline_OneofUnmarshaler, _Pipeline_OneofSizer, []interface{}{ - (*Pipeline_Docker)(nil), - } -} - -func _Pipeline_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Pipeline) - // executor - switch x := m.Executor.(type) { - case *Pipeline_Docker: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Docker); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Pipeline.Executor has unexpected type %T", x) - } - return nil -} - -func _Pipeline_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Pipeline) - switch tag { - case 5: // executor.docker - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DockerExecutor) - err := b.DecodeMessage(msg) - m.Executor = &Pipeline_Docker{msg} - return true, err - default: - return false, nil - } -} - -func _Pipeline_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Pipeline) - // executor - switch x := m.Executor.(type) { - case *Pipeline_Docker: - s := proto.Size(x.Docker) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The request to create a pipeline. The pipeline field here should not have -// `pipelineId` populated, as that will be populated by the server. -type CreatePipelineRequest struct { - // The pipeline to create. Should not have `pipelineId` populated. - Pipeline *Pipeline `protobuf:"bytes,1,opt,name=pipeline" json:"pipeline,omitempty"` -} - -func (m *CreatePipelineRequest) Reset() { *m = CreatePipelineRequest{} } -func (m *CreatePipelineRequest) String() string { return proto.CompactTextString(m) } -func (*CreatePipelineRequest) ProtoMessage() {} -func (*CreatePipelineRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *CreatePipelineRequest) GetPipeline() *Pipeline { - if m != nil { - return m.Pipeline - } - return nil -} - -// The pipeline run arguments. -type RunPipelineArgs struct { - // Required. The project in which to run the pipeline. The caller must have - // WRITER access to all Google Cloud services and resources (e.g. Google - // Compute Engine) will be used. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Pipeline input arguments; keys are defined in the pipeline documentation. - // All input parameters that do not have default values must be specified. - // If parameters with defaults are specified here, the defaults will be - // overridden. - Inputs map[string]string `protobuf:"bytes,2,rep,name=inputs" json:"inputs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Pipeline output arguments; keys are defined in the pipeline - // documentation. All output parameters of without default values - // must be specified. If parameters with defaults are specified - // here, the defaults will be overridden. - Outputs map[string]string `protobuf:"bytes,3,rep,name=outputs" json:"outputs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // The Google Cloud Service Account that will be used to access data and - // services. By default, the compute service account associated with - // `projectId` is used. - ServiceAccount *ServiceAccount `protobuf:"bytes,4,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` - // This field is deprecated. Use `labels` instead. Client-specified pipeline - // operation identifier. - ClientId string `protobuf:"bytes,5,opt,name=client_id,json=clientId" json:"client_id,omitempty"` - // Specifies resource requirements/overrides for the pipeline run. - Resources *PipelineResources `protobuf:"bytes,6,opt,name=resources" json:"resources,omitempty"` - // Required. Logging options. Used by the service to communicate results - // to the user. - Logging *LoggingOptions `protobuf:"bytes,7,opt,name=logging" json:"logging,omitempty"` - // How long to keep the VM up after a failure (for example docker command - // failed, copying input or output files failed, etc). While the VM is up, one - // can ssh into the VM to debug. Default is 0; maximum allowed value is 1 day. - KeepVmAliveOnFailureDuration *google_protobuf3.Duration `protobuf:"bytes,8,opt,name=keep_vm_alive_on_failure_duration,json=keepVmAliveOnFailureDuration" json:"keep_vm_alive_on_failure_duration,omitempty"` - // Labels to apply to this pipeline run. Labels will also be applied to - // compute resources (VM, disks) created by this pipeline run. When listing - // operations, operations can [filtered by labels] - // [google.longrunning.ListOperationsRequest.filter]. - // Label keys may not be empty; label values may be empty. Non-empty labels - // must be 1-63 characters long, and comply with [RFC1035] - // (https://www.ietf.org/rfc/rfc1035.txt). - // Specifically, the name must be 1-63 characters long and match the regular - // expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first - // character must be a lowercase letter, and all following characters must be - // a dash, lowercase letter, or digit, except the last character, which cannot - // be a dash. - Labels map[string]string `protobuf:"bytes,9,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *RunPipelineArgs) Reset() { *m = RunPipelineArgs{} } -func (m *RunPipelineArgs) String() string { return proto.CompactTextString(m) } -func (*RunPipelineArgs) ProtoMessage() {} -func (*RunPipelineArgs) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *RunPipelineArgs) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *RunPipelineArgs) GetInputs() map[string]string { - if m != nil { - return m.Inputs - } - return nil -} - -func (m *RunPipelineArgs) GetOutputs() map[string]string { - if m != nil { - return m.Outputs - } - return nil -} - -func (m *RunPipelineArgs) GetServiceAccount() *ServiceAccount { - if m != nil { - return m.ServiceAccount - } - return nil -} - -func (m *RunPipelineArgs) GetClientId() string { - if m != nil { - return m.ClientId - } - return "" -} - -func (m *RunPipelineArgs) GetResources() *PipelineResources { - if m != nil { - return m.Resources - } - return nil -} - -func (m *RunPipelineArgs) GetLogging() *LoggingOptions { - if m != nil { - return m.Logging - } - return nil -} - -func (m *RunPipelineArgs) GetKeepVmAliveOnFailureDuration() *google_protobuf3.Duration { - if m != nil { - return m.KeepVmAliveOnFailureDuration - } - return nil -} - -func (m *RunPipelineArgs) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// The request to run a pipeline. If `pipelineId` is specified, it -// refers to a saved pipeline created with CreatePipeline and set as -// the `pipelineId` of the returned Pipeline object. If -// `ephemeralPipeline` is specified, that pipeline is run once -// with the given args and not saved. It is an error to specify both -// `pipelineId` and `ephemeralPipeline`. `pipelineArgs` -// must be specified. -type RunPipelineRequest struct { - // Types that are valid to be assigned to Pipeline: - // *RunPipelineRequest_PipelineId - // *RunPipelineRequest_EphemeralPipeline - Pipeline isRunPipelineRequest_Pipeline `protobuf_oneof:"pipeline"` - // The arguments to use when running this pipeline. - PipelineArgs *RunPipelineArgs `protobuf:"bytes,3,opt,name=pipeline_args,json=pipelineArgs" json:"pipeline_args,omitempty"` -} - -func (m *RunPipelineRequest) Reset() { *m = RunPipelineRequest{} } -func (m *RunPipelineRequest) String() string { return proto.CompactTextString(m) } -func (*RunPipelineRequest) ProtoMessage() {} -func (*RunPipelineRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -type isRunPipelineRequest_Pipeline interface { - isRunPipelineRequest_Pipeline() -} - -type RunPipelineRequest_PipelineId struct { - PipelineId string `protobuf:"bytes,1,opt,name=pipeline_id,json=pipelineId,oneof"` -} -type RunPipelineRequest_EphemeralPipeline struct { - EphemeralPipeline *Pipeline `protobuf:"bytes,2,opt,name=ephemeral_pipeline,json=ephemeralPipeline,oneof"` -} - -func (*RunPipelineRequest_PipelineId) isRunPipelineRequest_Pipeline() {} -func (*RunPipelineRequest_EphemeralPipeline) isRunPipelineRequest_Pipeline() {} - -func (m *RunPipelineRequest) GetPipeline() isRunPipelineRequest_Pipeline { - if m != nil { - return m.Pipeline - } - return nil -} - -func (m *RunPipelineRequest) GetPipelineId() string { - if x, ok := m.GetPipeline().(*RunPipelineRequest_PipelineId); ok { - return x.PipelineId - } - return "" -} - -func (m *RunPipelineRequest) GetEphemeralPipeline() *Pipeline { - if x, ok := m.GetPipeline().(*RunPipelineRequest_EphemeralPipeline); ok { - return x.EphemeralPipeline - } - return nil -} - -func (m *RunPipelineRequest) GetPipelineArgs() *RunPipelineArgs { - if m != nil { - return m.PipelineArgs - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RunPipelineRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RunPipelineRequest_OneofMarshaler, _RunPipelineRequest_OneofUnmarshaler, _RunPipelineRequest_OneofSizer, []interface{}{ - (*RunPipelineRequest_PipelineId)(nil), - (*RunPipelineRequest_EphemeralPipeline)(nil), - } -} - -func _RunPipelineRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RunPipelineRequest) - // pipeline - switch x := m.Pipeline.(type) { - case *RunPipelineRequest_PipelineId: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.PipelineId) - case *RunPipelineRequest_EphemeralPipeline: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.EphemeralPipeline); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RunPipelineRequest.Pipeline has unexpected type %T", x) - } - return nil -} - -func _RunPipelineRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RunPipelineRequest) - switch tag { - case 1: // pipeline.pipeline_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Pipeline = &RunPipelineRequest_PipelineId{x} - return true, err - case 2: // pipeline.ephemeral_pipeline - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Pipeline) - err := b.DecodeMessage(msg) - m.Pipeline = &RunPipelineRequest_EphemeralPipeline{msg} - return true, err - default: - return false, nil - } -} - -func _RunPipelineRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RunPipelineRequest) - // pipeline - switch x := m.Pipeline.(type) { - case *RunPipelineRequest_PipelineId: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.PipelineId))) - n += len(x.PipelineId) - case *RunPipelineRequest_EphemeralPipeline: - s := proto.Size(x.EphemeralPipeline) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A request to get a saved pipeline by id. -type GetPipelineRequest struct { - // Caller must have READ access to the project in which this pipeline - // is defined. - PipelineId string `protobuf:"bytes,1,opt,name=pipeline_id,json=pipelineId" json:"pipeline_id,omitempty"` -} - -func (m *GetPipelineRequest) Reset() { *m = GetPipelineRequest{} } -func (m *GetPipelineRequest) String() string { return proto.CompactTextString(m) } -func (*GetPipelineRequest) ProtoMessage() {} -func (*GetPipelineRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *GetPipelineRequest) GetPipelineId() string { - if m != nil { - return m.PipelineId - } - return "" -} - -// A request to list pipelines in a given project. Pipelines can be -// filtered by name using `namePrefix`: all pipelines with names that -// begin with `namePrefix` will be returned. Uses standard pagination: -// `pageSize` indicates how many pipelines to return, and -// `pageToken` comes from a previous ListPipelinesResponse to -// indicate offset. -type ListPipelinesRequest struct { - // Required. The name of the project to search for pipelines. Caller - // must have READ access to this project. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Pipelines with names that match this prefix should be - // returned. If unspecified, all pipelines in the project, up to - // `pageSize`, will be returned. - NamePrefix string `protobuf:"bytes,2,opt,name=name_prefix,json=namePrefix" json:"name_prefix,omitempty"` - // Number of pipelines to return at once. Defaults to 256, and max - // is 2048. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Token to use to indicate where to start getting results. - // If unspecified, returns the first page of results. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListPipelinesRequest) Reset() { *m = ListPipelinesRequest{} } -func (m *ListPipelinesRequest) String() string { return proto.CompactTextString(m) } -func (*ListPipelinesRequest) ProtoMessage() {} -func (*ListPipelinesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ListPipelinesRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ListPipelinesRequest) GetNamePrefix() string { - if m != nil { - return m.NamePrefix - } - return "" -} - -func (m *ListPipelinesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListPipelinesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response of ListPipelines. Contains at most `pageSize` -// pipelines. If it contains `pageSize` pipelines, and more pipelines -// exist, then `nextPageToken` will be populated and should be -// used as the `pageToken` argument to a subsequent ListPipelines -// request. -type ListPipelinesResponse struct { - // The matched pipelines. - Pipelines []*Pipeline `protobuf:"bytes,1,rep,name=pipelines" json:"pipelines,omitempty"` - // The token to use to get the next page of results. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListPipelinesResponse) Reset() { *m = ListPipelinesResponse{} } -func (m *ListPipelinesResponse) String() string { return proto.CompactTextString(m) } -func (*ListPipelinesResponse) ProtoMessage() {} -func (*ListPipelinesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ListPipelinesResponse) GetPipelines() []*Pipeline { - if m != nil { - return m.Pipelines - } - return nil -} - -func (m *ListPipelinesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request to delete a saved pipeline by ID. -type DeletePipelineRequest struct { - // Caller must have WRITE access to the project in which this pipeline - // is defined. - PipelineId string `protobuf:"bytes,1,opt,name=pipeline_id,json=pipelineId" json:"pipeline_id,omitempty"` -} - -func (m *DeletePipelineRequest) Reset() { *m = DeletePipelineRequest{} } -func (m *DeletePipelineRequest) String() string { return proto.CompactTextString(m) } -func (*DeletePipelineRequest) ProtoMessage() {} -func (*DeletePipelineRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *DeletePipelineRequest) GetPipelineId() string { - if m != nil { - return m.PipelineId - } - return "" -} - -// Request to get controller configuation. Should only be used -// by VMs created by the Pipelines Service and not by end users. -type GetControllerConfigRequest struct { - // The operation to retrieve controller configuration for. - OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - ValidationToken uint64 `protobuf:"varint,2,opt,name=validation_token,json=validationToken" json:"validation_token,omitempty"` -} - -func (m *GetControllerConfigRequest) Reset() { *m = GetControllerConfigRequest{} } -func (m *GetControllerConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetControllerConfigRequest) ProtoMessage() {} -func (*GetControllerConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *GetControllerConfigRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *GetControllerConfigRequest) GetValidationToken() uint64 { - if m != nil { - return m.ValidationToken - } - return 0 -} - -// Stores the information that the controller will fetch from the -// server in order to run. Should only be used by VMs created by the -// Pipelines Service and not by end users. -type ControllerConfig struct { - Image string `protobuf:"bytes,1,opt,name=image" json:"image,omitempty"` - Cmd string `protobuf:"bytes,2,opt,name=cmd" json:"cmd,omitempty"` - GcsLogPath string `protobuf:"bytes,3,opt,name=gcs_log_path,json=gcsLogPath" json:"gcs_log_path,omitempty"` - MachineType string `protobuf:"bytes,4,opt,name=machine_type,json=machineType" json:"machine_type,omitempty"` - Vars map[string]string `protobuf:"bytes,5,rep,name=vars" json:"vars,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - Disks map[string]string `protobuf:"bytes,6,rep,name=disks" json:"disks,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - GcsSources map[string]*ControllerConfig_RepeatedString `protobuf:"bytes,7,rep,name=gcs_sources,json=gcsSources" json:"gcs_sources,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - GcsSinks map[string]*ControllerConfig_RepeatedString `protobuf:"bytes,8,rep,name=gcs_sinks,json=gcsSinks" json:"gcs_sinks,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *ControllerConfig) Reset() { *m = ControllerConfig{} } -func (m *ControllerConfig) String() string { return proto.CompactTextString(m) } -func (*ControllerConfig) ProtoMessage() {} -func (*ControllerConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ControllerConfig) GetImage() string { - if m != nil { - return m.Image - } - return "" -} - -func (m *ControllerConfig) GetCmd() string { - if m != nil { - return m.Cmd - } - return "" -} - -func (m *ControllerConfig) GetGcsLogPath() string { - if m != nil { - return m.GcsLogPath - } - return "" -} - -func (m *ControllerConfig) GetMachineType() string { - if m != nil { - return m.MachineType - } - return "" -} - -func (m *ControllerConfig) GetVars() map[string]string { - if m != nil { - return m.Vars - } - return nil -} - -func (m *ControllerConfig) GetDisks() map[string]string { - if m != nil { - return m.Disks - } - return nil -} - -func (m *ControllerConfig) GetGcsSources() map[string]*ControllerConfig_RepeatedString { - if m != nil { - return m.GcsSources - } - return nil -} - -func (m *ControllerConfig) GetGcsSinks() map[string]*ControllerConfig_RepeatedString { - if m != nil { - return m.GcsSinks - } - return nil -} - -type ControllerConfig_RepeatedString struct { - Values []string `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` -} - -func (m *ControllerConfig_RepeatedString) Reset() { *m = ControllerConfig_RepeatedString{} } -func (m *ControllerConfig_RepeatedString) String() string { return proto.CompactTextString(m) } -func (*ControllerConfig_RepeatedString) ProtoMessage() {} -func (*ControllerConfig_RepeatedString) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{11, 0} -} - -func (m *ControllerConfig_RepeatedString) GetValues() []string { - if m != nil { - return m.Values - } - return nil -} - -// Stores the list of events and times they occured for major events in job -// execution. -type TimestampEvent struct { - // String indicating the type of event - Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` - // The time this event occured. - Timestamp *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=timestamp" json:"timestamp,omitempty"` -} - -func (m *TimestampEvent) Reset() { *m = TimestampEvent{} } -func (m *TimestampEvent) String() string { return proto.CompactTextString(m) } -func (*TimestampEvent) ProtoMessage() {} -func (*TimestampEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *TimestampEvent) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *TimestampEvent) GetTimestamp() *google_protobuf4.Timestamp { - if m != nil { - return m.Timestamp - } - return nil -} - -// Request to set operation status. Should only be used by VMs -// created by the Pipelines Service and not by end users. -type SetOperationStatusRequest struct { - OperationId string `protobuf:"bytes,1,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` - TimestampEvents []*TimestampEvent `protobuf:"bytes,2,rep,name=timestamp_events,json=timestampEvents" json:"timestamp_events,omitempty"` - ErrorCode google_rpc1.Code `protobuf:"varint,3,opt,name=error_code,json=errorCode,enum=google.rpc.Code" json:"error_code,omitempty"` - ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage" json:"error_message,omitempty"` - ValidationToken uint64 `protobuf:"varint,5,opt,name=validation_token,json=validationToken" json:"validation_token,omitempty"` -} - -func (m *SetOperationStatusRequest) Reset() { *m = SetOperationStatusRequest{} } -func (m *SetOperationStatusRequest) String() string { return proto.CompactTextString(m) } -func (*SetOperationStatusRequest) ProtoMessage() {} -func (*SetOperationStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *SetOperationStatusRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -func (m *SetOperationStatusRequest) GetTimestampEvents() []*TimestampEvent { - if m != nil { - return m.TimestampEvents - } - return nil -} - -func (m *SetOperationStatusRequest) GetErrorCode() google_rpc1.Code { - if m != nil { - return m.ErrorCode - } - return google_rpc1.Code_OK -} - -func (m *SetOperationStatusRequest) GetErrorMessage() string { - if m != nil { - return m.ErrorMessage - } - return "" -} - -func (m *SetOperationStatusRequest) GetValidationToken() uint64 { - if m != nil { - return m.ValidationToken - } - return 0 -} - -// A Google Cloud Service Account. -type ServiceAccount struct { - // Email address of the service account. Defaults to `default`, - // which uses the compute service account associated with the project. - Email string `protobuf:"bytes,1,opt,name=email" json:"email,omitempty"` - // List of scopes to be enabled for this service account on the VM. - // The following scopes are automatically included: - // - // * https://www.googleapis.com/auth/compute - // * https://www.googleapis.com/auth/devstorage.full_control - // * https://www.googleapis.com/auth/genomics - // * https://www.googleapis.com/auth/logging.write - // * https://www.googleapis.com/auth/monitoring.write - Scopes []string `protobuf:"bytes,2,rep,name=scopes" json:"scopes,omitempty"` -} - -func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } -func (m *ServiceAccount) String() string { return proto.CompactTextString(m) } -func (*ServiceAccount) ProtoMessage() {} -func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *ServiceAccount) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -func (m *ServiceAccount) GetScopes() []string { - if m != nil { - return m.Scopes - } - return nil -} - -// The logging options for the pipeline run. -type LoggingOptions struct { - // The location in Google Cloud Storage to which the pipeline logs - // will be copied. Can be specified as a fully qualified directory - // path, in which case logs will be output with a unique identifier - // as the filename in that directory, or as a fully specified path, - // which must end in `.log`, in which case that path will be - // used, and the user must ensure that logs are not - // overwritten. Stdout and stderr logs from the run are also - // generated and output as `-stdout.log` and `-stderr.log`. - GcsPath string `protobuf:"bytes,1,opt,name=gcs_path,json=gcsPath" json:"gcs_path,omitempty"` -} - -func (m *LoggingOptions) Reset() { *m = LoggingOptions{} } -func (m *LoggingOptions) String() string { return proto.CompactTextString(m) } -func (*LoggingOptions) ProtoMessage() {} -func (*LoggingOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *LoggingOptions) GetGcsPath() string { - if m != nil { - return m.GcsPath - } - return "" -} - -// The system resources for the pipeline run. -type PipelineResources struct { - // The minimum number of cores to use. Defaults to 1. - MinimumCpuCores int32 `protobuf:"varint,1,opt,name=minimum_cpu_cores,json=minimumCpuCores" json:"minimum_cpu_cores,omitempty"` - // Whether to use preemptible VMs. Defaults to `false`. In order to use this, - // must be true for both create time and run time. Cannot be true at run time - // if false at create time. - Preemptible bool `protobuf:"varint,2,opt,name=preemptible" json:"preemptible,omitempty"` - // The minimum amount of RAM to use. Defaults to 3.75 (GB) - MinimumRamGb float64 `protobuf:"fixed64,3,opt,name=minimum_ram_gb,json=minimumRamGb" json:"minimum_ram_gb,omitempty"` - // Disks to attach. - Disks []*PipelineResources_Disk `protobuf:"bytes,4,rep,name=disks" json:"disks,omitempty"` - // List of Google Compute Engine availability zones to which resource - // creation will restricted. If empty, any zone may be chosen. - Zones []string `protobuf:"bytes,5,rep,name=zones" json:"zones,omitempty"` - // The size of the boot disk. Defaults to 10 (GB). - BootDiskSizeGb int32 `protobuf:"varint,6,opt,name=boot_disk_size_gb,json=bootDiskSizeGb" json:"boot_disk_size_gb,omitempty"` - // Whether to assign an external IP to the instance. This is an experimental - // feature that may go away. Defaults to false. - // Corresponds to `--no_address` flag for [gcloud compute instances create] - // (https://cloud.google.com/sdk/gcloud/reference/compute/instances/create). - // In order to use this, must be true for both create time and run time. - // Cannot be true at run time if false at create time. If you need to ssh into - // a private IP VM for debugging, you can ssh to a public VM and then ssh into - // the private VM's Internal IP. If noAddress is set, this pipeline run may - // only load docker images from Google Container Registry and not Docker Hub. - // ** Note: To use this option, your project must be in Google Access for - // Private IPs Early Access Program.** - NoAddress bool `protobuf:"varint,7,opt,name=no_address,json=noAddress" json:"no_address,omitempty"` -} - -func (m *PipelineResources) Reset() { *m = PipelineResources{} } -func (m *PipelineResources) String() string { return proto.CompactTextString(m) } -func (*PipelineResources) ProtoMessage() {} -func (*PipelineResources) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *PipelineResources) GetMinimumCpuCores() int32 { - if m != nil { - return m.MinimumCpuCores - } - return 0 -} - -func (m *PipelineResources) GetPreemptible() bool { - if m != nil { - return m.Preemptible - } - return false -} - -func (m *PipelineResources) GetMinimumRamGb() float64 { - if m != nil { - return m.MinimumRamGb - } - return 0 -} - -func (m *PipelineResources) GetDisks() []*PipelineResources_Disk { - if m != nil { - return m.Disks - } - return nil -} - -func (m *PipelineResources) GetZones() []string { - if m != nil { - return m.Zones - } - return nil -} - -func (m *PipelineResources) GetBootDiskSizeGb() int32 { - if m != nil { - return m.BootDiskSizeGb - } - return 0 -} - -func (m *PipelineResources) GetNoAddress() bool { - if m != nil { - return m.NoAddress - } - return false -} - -// A Google Compute Engine disk resource specification. -type PipelineResources_Disk struct { - // Required. The name of the disk that can be used in the pipeline - // parameters. Must be 1 - 63 characters. - // The name "boot" is reserved for system use. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The type of the disk to create. - Type PipelineResources_Disk_Type `protobuf:"varint,2,opt,name=type,enum=google.genomics.v1alpha2.PipelineResources_Disk_Type" json:"type,omitempty"` - // The size of the disk. Defaults to 500 (GB). - // This field is not applicable for local SSD. - SizeGb int32 `protobuf:"varint,3,opt,name=size_gb,json=sizeGb" json:"size_gb,omitempty"` - // The full or partial URL of the persistent disk to attach. See - // https://cloud.google.com/compute/docs/reference/latest/instances#resource - // and - // https://cloud.google.com/compute/docs/disks/persistent-disks#snapshots - // for more details. - Source string `protobuf:"bytes,4,opt,name=source" json:"source,omitempty"` - // Deprecated. Disks created by the Pipelines API will be deleted at the end - // of the pipeline run, regardless of what this field is set to. - AutoDelete bool `protobuf:"varint,6,opt,name=auto_delete,json=autoDelete" json:"auto_delete,omitempty"` - // Required at create time and cannot be overridden at run time. - // Specifies the path in the docker container where files on - // this disk should be located. For example, if `mountPoint` - // is `/mnt/disk`, and the parameter has `localPath` - // `inputs/file.txt`, the docker container can access the data at - // `/mnt/disk/inputs/file.txt`. - MountPoint string `protobuf:"bytes,8,opt,name=mount_point,json=mountPoint" json:"mount_point,omitempty"` -} - -func (m *PipelineResources_Disk) Reset() { *m = PipelineResources_Disk{} } -func (m *PipelineResources_Disk) String() string { return proto.CompactTextString(m) } -func (*PipelineResources_Disk) ProtoMessage() {} -func (*PipelineResources_Disk) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16, 0} } - -func (m *PipelineResources_Disk) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *PipelineResources_Disk) GetType() PipelineResources_Disk_Type { - if m != nil { - return m.Type - } - return PipelineResources_Disk_TYPE_UNSPECIFIED -} - -func (m *PipelineResources_Disk) GetSizeGb() int32 { - if m != nil { - return m.SizeGb - } - return 0 -} - -func (m *PipelineResources_Disk) GetSource() string { - if m != nil { - return m.Source - } - return "" -} - -func (m *PipelineResources_Disk) GetAutoDelete() bool { - if m != nil { - return m.AutoDelete - } - return false -} - -func (m *PipelineResources_Disk) GetMountPoint() string { - if m != nil { - return m.MountPoint - } - return "" -} - -// Parameters facilitate setting and delivering data into the -// pipeline's execution environment. They are defined at create time, -// with optional defaults, and can be overridden at run time. -// -// If `localCopy` is unset, then the parameter specifies a string that -// is passed as-is into the pipeline, as the value of the environment -// variable with the given name. A default value can be optionally -// specified at create time. The default can be overridden at run time -// using the inputs map. If no default is given, a value must be -// supplied at runtime. -// -// If `localCopy` is defined, then the parameter specifies a data -// source or sink, both in Google Cloud Storage and on the Docker container -// where the pipeline computation is run. The [service account associated with -// the Pipeline][google.genomics.v1alpha2.RunPipelineArgs.service_account] (by -// default the project's Compute Engine service account) must have access to the -// Google Cloud Storage paths. -// -// At run time, the Google Cloud Storage paths can be overridden if a default -// was provided at create time, or must be set otherwise. The pipeline runner -// should add a key/value pair to either the inputs or outputs map. The -// indicated data copies will be carried out before/after pipeline execution, -// just as if the corresponding arguments were provided to `gsutil cp`. -// -// For example: Given the following `PipelineParameter`, specified -// in the `inputParameters` list: -// -// ``` -// {name: "input_file", localCopy: {path: "file.txt", disk: "pd1"}} -// ``` -// -// where `disk` is defined in the `PipelineResources` object as: -// -// ``` -// {name: "pd1", mountPoint: "/mnt/disk/"} -// ``` -// -// We create a disk named `pd1`, mount it on the host VM, and map -// `/mnt/pd1` to `/mnt/disk` in the docker container. At -// runtime, an entry for `input_file` would be required in the inputs -// map, such as: -// -// ``` -// inputs["input_file"] = "gs://my-bucket/bar.txt" -// ``` -// -// This would generate the following gsutil call: -// -// ``` -// gsutil cp gs://my-bucket/bar.txt /mnt/pd1/file.txt -// ``` -// -// The file `/mnt/pd1/file.txt` maps to `/mnt/disk/file.txt` in the -// Docker container. Acceptable paths are: -// -// <table> -// <thead> -// <tr><th>Google Cloud storage path</th><th>Local path</th></tr> -// </thead> -// <tbody> -// <tr><td>file</td><td>file</td></tr> -// <tr><td>glob</td><td>directory</td></tr> -// </tbody> -// </table> -// -// For outputs, the direction of the copy is reversed: -// -// ``` -// gsutil cp /mnt/disk/file.txt gs://my-bucket/bar.txt -// ``` -// -// Acceptable paths are: -// -// <table> -// <thead> -// <tr><th>Local path</th><th>Google Cloud Storage path</th></tr> -// </thead> -// <tbody> -// <tr><td>file</td><td>file</td></tr> -// <tr> -// <td>file</td> -// <td>directory - directory must already exist</td> -// </tr> -// <tr> -// <td>glob</td> -// <td>directory - directory will be created if it doesn't exist</td></tr> -// </tbody> -// </table> -// -// One restriction due to docker limitations, is that for outputs that are found -// on the boot disk, the local path cannot be a glob and must be a file. -type PipelineParameter struct { - // Required. Name of the parameter - the pipeline runner uses this string - // as the key to the input and output maps in RunPipeline. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Human-readable description. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // The default value for this parameter. Can be overridden at runtime. - // If `localCopy` is present, then this must be a Google Cloud Storage path - // beginning with `gs://`. - DefaultValue string `protobuf:"bytes,5,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"` - // If present, this parameter is marked for copying to and from the VM. - // `LocalCopy` indicates where on the VM the file should be. The value - // given to this parameter (either at runtime or using `defaultValue`) - // must be the remote path where the file should be. - LocalCopy *PipelineParameter_LocalCopy `protobuf:"bytes,6,opt,name=local_copy,json=localCopy" json:"local_copy,omitempty"` -} - -func (m *PipelineParameter) Reset() { *m = PipelineParameter{} } -func (m *PipelineParameter) String() string { return proto.CompactTextString(m) } -func (*PipelineParameter) ProtoMessage() {} -func (*PipelineParameter) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *PipelineParameter) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *PipelineParameter) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *PipelineParameter) GetDefaultValue() string { - if m != nil { - return m.DefaultValue - } - return "" -} - -func (m *PipelineParameter) GetLocalCopy() *PipelineParameter_LocalCopy { - if m != nil { - return m.LocalCopy - } - return nil -} - -// LocalCopy defines how a remote file should be copied to and from the VM. -type PipelineParameter_LocalCopy struct { - // Required. The path within the user's docker container where - // this input should be localized to and from, relative to the specified - // disk's mount point. For example: file.txt, - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` - // Required. The name of the disk where this parameter is - // located. Can be the name of one of the disks specified in the - // Resources field, or "boot", which represents the Docker - // instance's boot disk and has a mount point of `/`. - Disk string `protobuf:"bytes,2,opt,name=disk" json:"disk,omitempty"` -} - -func (m *PipelineParameter_LocalCopy) Reset() { *m = PipelineParameter_LocalCopy{} } -func (m *PipelineParameter_LocalCopy) String() string { return proto.CompactTextString(m) } -func (*PipelineParameter_LocalCopy) ProtoMessage() {} -func (*PipelineParameter_LocalCopy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17, 0} } - -func (m *PipelineParameter_LocalCopy) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *PipelineParameter_LocalCopy) GetDisk() string { - if m != nil { - return m.Disk - } - return "" -} - -// The Docker execuctor specification. -type DockerExecutor struct { - // Required. Image name from either Docker Hub or Google Container Registry. - // Users that run pipelines must have READ access to the image. - ImageName string `protobuf:"bytes,1,opt,name=image_name,json=imageName" json:"image_name,omitempty"` - // Required. The command or newline delimited script to run. The command - // string will be executed within a bash shell. - // - // If the command exits with a non-zero exit code, output parameter - // de-localization will be skipped and the pipeline operation's - // [`error`][google.longrunning.Operation.error] field will be populated. - // - // Maximum command string length is 16384. - Cmd string `protobuf:"bytes,2,opt,name=cmd" json:"cmd,omitempty"` -} - -func (m *DockerExecutor) Reset() { *m = DockerExecutor{} } -func (m *DockerExecutor) String() string { return proto.CompactTextString(m) } -func (*DockerExecutor) ProtoMessage() {} -func (*DockerExecutor) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *DockerExecutor) GetImageName() string { - if m != nil { - return m.ImageName - } - return "" -} - -func (m *DockerExecutor) GetCmd() string { - if m != nil { - return m.Cmd - } - return "" -} - -func init() { - proto.RegisterType((*ComputeEngine)(nil), "google.genomics.v1alpha2.ComputeEngine") - proto.RegisterType((*RuntimeMetadata)(nil), "google.genomics.v1alpha2.RuntimeMetadata") - proto.RegisterType((*Pipeline)(nil), "google.genomics.v1alpha2.Pipeline") - proto.RegisterType((*CreatePipelineRequest)(nil), "google.genomics.v1alpha2.CreatePipelineRequest") - proto.RegisterType((*RunPipelineArgs)(nil), "google.genomics.v1alpha2.RunPipelineArgs") - proto.RegisterType((*RunPipelineRequest)(nil), "google.genomics.v1alpha2.RunPipelineRequest") - proto.RegisterType((*GetPipelineRequest)(nil), "google.genomics.v1alpha2.GetPipelineRequest") - proto.RegisterType((*ListPipelinesRequest)(nil), "google.genomics.v1alpha2.ListPipelinesRequest") - proto.RegisterType((*ListPipelinesResponse)(nil), "google.genomics.v1alpha2.ListPipelinesResponse") - proto.RegisterType((*DeletePipelineRequest)(nil), "google.genomics.v1alpha2.DeletePipelineRequest") - proto.RegisterType((*GetControllerConfigRequest)(nil), "google.genomics.v1alpha2.GetControllerConfigRequest") - proto.RegisterType((*ControllerConfig)(nil), "google.genomics.v1alpha2.ControllerConfig") - proto.RegisterType((*ControllerConfig_RepeatedString)(nil), "google.genomics.v1alpha2.ControllerConfig.RepeatedString") - proto.RegisterType((*TimestampEvent)(nil), "google.genomics.v1alpha2.TimestampEvent") - proto.RegisterType((*SetOperationStatusRequest)(nil), "google.genomics.v1alpha2.SetOperationStatusRequest") - proto.RegisterType((*ServiceAccount)(nil), "google.genomics.v1alpha2.ServiceAccount") - proto.RegisterType((*LoggingOptions)(nil), "google.genomics.v1alpha2.LoggingOptions") - proto.RegisterType((*PipelineResources)(nil), "google.genomics.v1alpha2.PipelineResources") - proto.RegisterType((*PipelineResources_Disk)(nil), "google.genomics.v1alpha2.PipelineResources.Disk") - proto.RegisterType((*PipelineParameter)(nil), "google.genomics.v1alpha2.PipelineParameter") - proto.RegisterType((*PipelineParameter_LocalCopy)(nil), "google.genomics.v1alpha2.PipelineParameter.LocalCopy") - proto.RegisterType((*DockerExecutor)(nil), "google.genomics.v1alpha2.DockerExecutor") - proto.RegisterEnum("google.genomics.v1alpha2.PipelineResources_Disk_Type", PipelineResources_Disk_Type_name, PipelineResources_Disk_Type_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for PipelinesV1Alpha2 service - -type PipelinesV1Alpha2Client interface { - // Creates a pipeline that can be run later. Create takes a Pipeline that - // has all fields other than `pipelineId` populated, and then returns - // the same pipeline with `pipelineId` populated. This id can be used - // to run the pipeline. - // - // Caller must have WRITE permission to the project. - CreatePipeline(ctx context.Context, in *CreatePipelineRequest, opts ...grpc.CallOption) (*Pipeline, error) - // Runs a pipeline. If `pipelineId` is specified in the request, then - // run a saved pipeline. If `ephemeralPipeline` is specified, then run - // that pipeline once without saving a copy. - // - // The caller must have READ permission to the project where the pipeline - // is stored and WRITE permission to the project where the pipeline will be - // run, as VMs will be created and storage will be used. - RunPipeline(ctx context.Context, in *RunPipelineRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Retrieves a pipeline based on ID. - // - // Caller must have READ permission to the project. - GetPipeline(ctx context.Context, in *GetPipelineRequest, opts ...grpc.CallOption) (*Pipeline, error) - // Lists pipelines. - // - // Caller must have READ permission to the project. - ListPipelines(ctx context.Context, in *ListPipelinesRequest, opts ...grpc.CallOption) (*ListPipelinesResponse, error) - // Deletes a pipeline based on ID. - // - // Caller must have WRITE permission to the project. - DeletePipeline(ctx context.Context, in *DeletePipelineRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Gets controller configuration information. Should only be called - // by VMs created by the Pipelines Service and not by end users. - GetControllerConfig(ctx context.Context, in *GetControllerConfigRequest, opts ...grpc.CallOption) (*ControllerConfig, error) - // Sets status of a given operation. Any new timestamps (as determined by - // description) are appended to TimestampEvents. Should only be called by VMs - // created by the Pipelines Service and not by end users. - SetOperationStatus(ctx context.Context, in *SetOperationStatusRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type pipelinesV1Alpha2Client struct { - cc *grpc.ClientConn -} - -func NewPipelinesV1Alpha2Client(cc *grpc.ClientConn) PipelinesV1Alpha2Client { - return &pipelinesV1Alpha2Client{cc} -} - -func (c *pipelinesV1Alpha2Client) CreatePipeline(ctx context.Context, in *CreatePipelineRequest, opts ...grpc.CallOption) (*Pipeline, error) { - out := new(Pipeline) - err := grpc.Invoke(ctx, "/google.genomics.v1alpha2.PipelinesV1Alpha2/CreatePipeline", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pipelinesV1Alpha2Client) RunPipeline(ctx context.Context, in *RunPipelineRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.genomics.v1alpha2.PipelinesV1Alpha2/RunPipeline", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pipelinesV1Alpha2Client) GetPipeline(ctx context.Context, in *GetPipelineRequest, opts ...grpc.CallOption) (*Pipeline, error) { - out := new(Pipeline) - err := grpc.Invoke(ctx, "/google.genomics.v1alpha2.PipelinesV1Alpha2/GetPipeline", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pipelinesV1Alpha2Client) ListPipelines(ctx context.Context, in *ListPipelinesRequest, opts ...grpc.CallOption) (*ListPipelinesResponse, error) { - out := new(ListPipelinesResponse) - err := grpc.Invoke(ctx, "/google.genomics.v1alpha2.PipelinesV1Alpha2/ListPipelines", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pipelinesV1Alpha2Client) DeletePipeline(ctx context.Context, in *DeletePipelineRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1alpha2.PipelinesV1Alpha2/DeletePipeline", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pipelinesV1Alpha2Client) GetControllerConfig(ctx context.Context, in *GetControllerConfigRequest, opts ...grpc.CallOption) (*ControllerConfig, error) { - out := new(ControllerConfig) - err := grpc.Invoke(ctx, "/google.genomics.v1alpha2.PipelinesV1Alpha2/GetControllerConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *pipelinesV1Alpha2Client) SetOperationStatus(ctx context.Context, in *SetOperationStatusRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.genomics.v1alpha2.PipelinesV1Alpha2/SetOperationStatus", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for PipelinesV1Alpha2 service - -type PipelinesV1Alpha2Server interface { - // Creates a pipeline that can be run later. Create takes a Pipeline that - // has all fields other than `pipelineId` populated, and then returns - // the same pipeline with `pipelineId` populated. This id can be used - // to run the pipeline. - // - // Caller must have WRITE permission to the project. - CreatePipeline(context.Context, *CreatePipelineRequest) (*Pipeline, error) - // Runs a pipeline. If `pipelineId` is specified in the request, then - // run a saved pipeline. If `ephemeralPipeline` is specified, then run - // that pipeline once without saving a copy. - // - // The caller must have READ permission to the project where the pipeline - // is stored and WRITE permission to the project where the pipeline will be - // run, as VMs will be created and storage will be used. - RunPipeline(context.Context, *RunPipelineRequest) (*google_longrunning.Operation, error) - // Retrieves a pipeline based on ID. - // - // Caller must have READ permission to the project. - GetPipeline(context.Context, *GetPipelineRequest) (*Pipeline, error) - // Lists pipelines. - // - // Caller must have READ permission to the project. - ListPipelines(context.Context, *ListPipelinesRequest) (*ListPipelinesResponse, error) - // Deletes a pipeline based on ID. - // - // Caller must have WRITE permission to the project. - DeletePipeline(context.Context, *DeletePipelineRequest) (*google_protobuf2.Empty, error) - // Gets controller configuration information. Should only be called - // by VMs created by the Pipelines Service and not by end users. - GetControllerConfig(context.Context, *GetControllerConfigRequest) (*ControllerConfig, error) - // Sets status of a given operation. Any new timestamps (as determined by - // description) are appended to TimestampEvents. Should only be called by VMs - // created by the Pipelines Service and not by end users. - SetOperationStatus(context.Context, *SetOperationStatusRequest) (*google_protobuf2.Empty, error) -} - -func RegisterPipelinesV1Alpha2Server(s *grpc.Server, srv PipelinesV1Alpha2Server) { - s.RegisterService(&_PipelinesV1Alpha2_serviceDesc, srv) -} - -func _PipelinesV1Alpha2_CreatePipeline_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreatePipelineRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PipelinesV1Alpha2Server).CreatePipeline(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1alpha2.PipelinesV1Alpha2/CreatePipeline", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PipelinesV1Alpha2Server).CreatePipeline(ctx, req.(*CreatePipelineRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _PipelinesV1Alpha2_RunPipeline_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RunPipelineRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PipelinesV1Alpha2Server).RunPipeline(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1alpha2.PipelinesV1Alpha2/RunPipeline", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PipelinesV1Alpha2Server).RunPipeline(ctx, req.(*RunPipelineRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _PipelinesV1Alpha2_GetPipeline_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPipelineRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PipelinesV1Alpha2Server).GetPipeline(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1alpha2.PipelinesV1Alpha2/GetPipeline", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PipelinesV1Alpha2Server).GetPipeline(ctx, req.(*GetPipelineRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _PipelinesV1Alpha2_ListPipelines_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListPipelinesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PipelinesV1Alpha2Server).ListPipelines(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1alpha2.PipelinesV1Alpha2/ListPipelines", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PipelinesV1Alpha2Server).ListPipelines(ctx, req.(*ListPipelinesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _PipelinesV1Alpha2_DeletePipeline_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeletePipelineRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PipelinesV1Alpha2Server).DeletePipeline(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1alpha2.PipelinesV1Alpha2/DeletePipeline", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PipelinesV1Alpha2Server).DeletePipeline(ctx, req.(*DeletePipelineRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _PipelinesV1Alpha2_GetControllerConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetControllerConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PipelinesV1Alpha2Server).GetControllerConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1alpha2.PipelinesV1Alpha2/GetControllerConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PipelinesV1Alpha2Server).GetControllerConfig(ctx, req.(*GetControllerConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _PipelinesV1Alpha2_SetOperationStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetOperationStatusRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PipelinesV1Alpha2Server).SetOperationStatus(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.genomics.v1alpha2.PipelinesV1Alpha2/SetOperationStatus", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PipelinesV1Alpha2Server).SetOperationStatus(ctx, req.(*SetOperationStatusRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _PipelinesV1Alpha2_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.genomics.v1alpha2.PipelinesV1Alpha2", - HandlerType: (*PipelinesV1Alpha2Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreatePipeline", - Handler: _PipelinesV1Alpha2_CreatePipeline_Handler, - }, - { - MethodName: "RunPipeline", - Handler: _PipelinesV1Alpha2_RunPipeline_Handler, - }, - { - MethodName: "GetPipeline", - Handler: _PipelinesV1Alpha2_GetPipeline_Handler, - }, - { - MethodName: "ListPipelines", - Handler: _PipelinesV1Alpha2_ListPipelines_Handler, - }, - { - MethodName: "DeletePipeline", - Handler: _PipelinesV1Alpha2_DeletePipeline_Handler, - }, - { - MethodName: "GetControllerConfig", - Handler: _PipelinesV1Alpha2_GetControllerConfig_Handler, - }, - { - MethodName: "SetOperationStatus", - Handler: _PipelinesV1Alpha2_SetOperationStatus_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/genomics/v1alpha2/pipelines.proto", -} - -func init() { proto.RegisterFile("google/genomics/v1alpha2/pipelines.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2065 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4d, 0x73, 0xdb, 0xc8, - 0xd1, 0x36, 0x28, 0x4a, 0x22, 0x9a, 0x12, 0x45, 0xcf, 0xda, 0x6b, 0x9a, 0xf6, 0xbe, 0xb6, 0xe1, - 0x37, 0xbb, 0xb2, 0x9c, 0x22, 0x63, 0x79, 0x9d, 0xc8, 0x4a, 0xd5, 0xd6, 0x4a, 0x14, 0x2d, 0xb1, - 0x22, 0x4b, 0x0c, 0xa8, 0x55, 0xbe, 0x0e, 0xa8, 0x11, 0x38, 0x82, 0xb0, 0x02, 0x30, 0x08, 0x06, - 0x50, 0x59, 0x4e, 0x25, 0x55, 0x49, 0xe5, 0x90, 0xda, 0x4a, 0x2e, 0xc9, 0xfe, 0x88, 0x5c, 0x72, - 0xcc, 0xcf, 0xc8, 0x29, 0xa7, 0x9c, 0x72, 0xc9, 0x21, 0x3f, 0x21, 0xb9, 0xa5, 0x66, 0x06, 0x03, - 0x82, 0x1f, 0x92, 0xc8, 0xaa, 0x54, 0x6e, 0x33, 0x3d, 0xdd, 0x0f, 0x9e, 0xe9, 0xe9, 0xe9, 0xe9, - 0x06, 0xac, 0x3a, 0x94, 0x3a, 0x1e, 0x69, 0x3a, 0x24, 0xa0, 0xbe, 0x6b, 0xb3, 0xe6, 0xc5, 0x0b, - 0xec, 0x85, 0x67, 0x78, 0xbd, 0x19, 0xba, 0x21, 0xf1, 0xdc, 0x80, 0xb0, 0x46, 0x18, 0xd1, 0x98, - 0xa2, 0x9a, 0xd4, 0x6c, 0x28, 0xcd, 0x86, 0xd2, 0xac, 0x3f, 0x4c, 0x31, 0x70, 0xe8, 0x36, 0x71, - 0x10, 0xd0, 0x18, 0xc7, 0x2e, 0x0d, 0x52, 0xbb, 0xfa, 0xd3, 0x74, 0xd5, 0xa3, 0x81, 0x13, 0x25, - 0x41, 0xe0, 0x06, 0x4e, 0x93, 0x86, 0x24, 0x1a, 0x52, 0xfa, 0xbf, 0x54, 0x49, 0xcc, 0x4e, 0x92, - 0xd3, 0x66, 0x3f, 0x91, 0x0a, 0xe9, 0xfa, 0x83, 0xd1, 0x75, 0xe2, 0x87, 0xf1, 0x65, 0xba, 0xf8, - 0x68, 0x74, 0x31, 0x76, 0x7d, 0xc2, 0x62, 0xec, 0x87, 0xa9, 0xc2, 0xdd, 0x54, 0x21, 0x0a, 0xed, - 0xa6, 0x4d, 0xfb, 0x44, 0x8a, 0x8d, 0xaf, 0x34, 0x58, 0x6e, 0x51, 0x3f, 0x4c, 0x62, 0xd2, 0x0e, - 0x1c, 0x37, 0x20, 0xe8, 0x29, 0x2c, 0xbb, 0x01, 0x8b, 0x71, 0x60, 0x13, 0x2b, 0xc0, 0x3e, 0xa9, - 0x69, 0x8f, 0xb5, 0x55, 0xdd, 0x5c, 0x52, 0xc2, 0x03, 0xec, 0x13, 0x84, 0xa0, 0xf8, 0x9e, 0x06, - 0xa4, 0x56, 0x10, 0x6b, 0x62, 0x8c, 0x9e, 0xc0, 0x92, 0x8f, 0xed, 0x33, 0x37, 0x20, 0x56, 0x7c, - 0x19, 0x92, 0xda, 0x9c, 0x58, 0x2b, 0xa7, 0xb2, 0xa3, 0xcb, 0x90, 0xa0, 0x8f, 0x00, 0xfa, 0x2e, - 0x3b, 0x17, 0xb8, 0xac, 0x56, 0x7c, 0x3c, 0xb7, 0xaa, 0x9b, 0x3a, 0x97, 0x70, 0x50, 0x66, 0x60, - 0x58, 0x31, 0x93, 0x80, 0x33, 0x7f, 0x4b, 0x62, 0xdc, 0xc7, 0x31, 0x46, 0x07, 0x50, 0xb1, 0x25, - 0x3d, 0x8b, 0x08, 0x7e, 0x82, 0x4e, 0x79, 0xfd, 0x93, 0xc6, 0x55, 0x47, 0xd1, 0x18, 0xda, 0x8e, - 0xb9, 0x6c, 0xe7, 0xa7, 0xc6, 0x5f, 0xe6, 0xa0, 0xd4, 0x4d, 0x4f, 0x95, 0xd3, 0x09, 0x23, 0xfa, - 0x25, 0xb1, 0x63, 0xcb, 0xed, 0xa7, 0xfb, 0xd4, 0x53, 0x49, 0xa7, 0xcf, 0x37, 0x29, 0x1c, 0x90, - 0x6e, 0x92, 0x8f, 0xd1, 0x63, 0x28, 0xf7, 0x09, 0xb3, 0x23, 0x37, 0xe4, 0x27, 0xa3, 0xf6, 0x98, - 0x13, 0xa1, 0x63, 0xa8, 0xba, 0x41, 0x98, 0xc4, 0x56, 0x88, 0x23, 0xec, 0x93, 0x98, 0x44, 0xac, - 0x56, 0x7a, 0x3c, 0xb7, 0x5a, 0x5e, 0x7f, 0x7e, 0x35, 0x67, 0x45, 0xa9, 0xab, 0x6c, 0xcc, 0x15, - 0x01, 0x92, 0xcd, 0x19, 0xfa, 0x21, 0xdc, 0xa6, 0x49, 0x3c, 0x02, 0xac, 0xcf, 0x0e, 0x5c, 0x95, - 0x28, 0x39, 0xe4, 0x6d, 0x58, 0xe8, 0x53, 0xfb, 0x9c, 0x44, 0xb5, 0x79, 0xe1, 0xdb, 0xd5, 0xab, - 0xe1, 0x76, 0x84, 0x5e, 0xfb, 0x1d, 0xb1, 0x93, 0x98, 0x46, 0x7b, 0xb7, 0xcc, 0xd4, 0x12, 0x75, - 0x40, 0x8f, 0x08, 0xa3, 0x49, 0x64, 0x13, 0x56, 0x5b, 0x10, 0x30, 0x53, 0xb0, 0x32, 0x95, 0x89, - 0x39, 0xb0, 0x46, 0x8f, 0xa0, 0xac, 0xee, 0x1d, 0x3f, 0x96, 0x45, 0xe1, 0x62, 0x50, 0xa2, 0x4e, - 0x7f, 0x1b, 0xa0, 0x44, 0x52, 0x06, 0xc6, 0x0f, 0xe0, 0x6e, 0x2b, 0x22, 0x38, 0x26, 0x03, 0xc8, - 0x9f, 0x26, 0x84, 0xc5, 0xe8, 0x33, 0x28, 0x29, 0x93, 0x34, 0x64, 0x8c, 0x29, 0xf8, 0x64, 0x36, - 0xc6, 0x9f, 0x17, 0x44, 0x30, 0xaa, 0x95, 0xad, 0xc8, 0x61, 0x37, 0xc5, 0xcb, 0x5b, 0x58, 0x10, - 0x87, 0xc6, 0x6a, 0x05, 0x71, 0x2c, 0xaf, 0xae, 0xfe, 0xe0, 0x08, 0x72, 0xa3, 0x23, 0xec, 0xda, - 0x41, 0x1c, 0x5d, 0x9a, 0x29, 0x08, 0xea, 0xc2, 0xa2, 0x3c, 0x2a, 0x56, 0x9b, 0x13, 0x78, 0xdf, - 0x9e, 0x1e, 0xef, 0x50, 0x1a, 0x4a, 0x40, 0x05, 0x83, 0xbe, 0x0f, 0x2b, 0x8c, 0x44, 0x17, 0xae, - 0x4d, 0x2c, 0x6c, 0xdb, 0x34, 0x09, 0xe2, 0x5a, 0xf1, 0xa6, 0x13, 0xef, 0x49, 0x83, 0x2d, 0xa9, - 0x6f, 0x56, 0xd8, 0xd0, 0x1c, 0x3d, 0x00, 0xdd, 0xf6, 0x5c, 0x12, 0x08, 0x8f, 0xcc, 0x0b, 0x8f, - 0x94, 0xa4, 0xa0, 0xd3, 0xff, 0x6f, 0x06, 0xc5, 0x36, 0x2c, 0x7a, 0xd4, 0x71, 0xdc, 0xc0, 0x11, - 0x01, 0x71, 0x2d, 0xe5, 0x7d, 0xa9, 0x78, 0x28, 0xee, 0x23, 0x33, 0x95, 0x21, 0x3a, 0x81, 0x27, - 0xe7, 0x84, 0x84, 0xd6, 0x85, 0x6f, 0x61, 0xcf, 0xbd, 0x20, 0x16, 0x0d, 0xac, 0x53, 0xec, 0x7a, - 0x49, 0x44, 0x2c, 0x95, 0x6b, 0x6b, 0x25, 0x81, 0x7e, 0x5f, 0xa1, 0xab, 0x7c, 0xda, 0xd8, 0x49, - 0x15, 0xcc, 0x87, 0x1c, 0xe3, 0xd8, 0xdf, 0xe2, 0x08, 0x87, 0xc1, 0x1b, 0x69, 0xaf, 0x56, 0x79, - 0x0c, 0x78, 0xf8, 0x84, 0x78, 0xea, 0x6a, 0xce, 0x10, 0x03, 0xfb, 0xc2, 0x2e, 0x8d, 0x01, 0x09, - 0x52, 0x7f, 0x0d, 0xe5, 0x5c, 0x68, 0xa0, 0x2a, 0xcc, 0x9d, 0x93, 0xcb, 0x34, 0xf2, 0xf8, 0x10, - 0xdd, 0x81, 0xf9, 0x0b, 0xec, 0x25, 0x2a, 0x49, 0xc9, 0xc9, 0x66, 0x61, 0x43, 0xab, 0x6f, 0xc2, - 0x52, 0x3e, 0x0a, 0x66, 0xb2, 0x7d, 0x0d, 0xe5, 0x1c, 0x9b, 0x59, 0x4c, 0x8d, 0x7f, 0x6a, 0x80, - 0x72, 0x3b, 0x53, 0xd7, 0xf1, 0xc9, 0xf0, 0xa5, 0x16, 0x50, 0x7b, 0xb7, 0xf2, 0xd7, 0x1a, 0xf5, - 0x00, 0x91, 0xf0, 0x8c, 0xf8, 0x24, 0xc2, 0x9e, 0x95, 0xdd, 0xdd, 0xc2, 0xb4, 0x77, 0x77, 0xef, - 0x96, 0x79, 0x3b, 0xb3, 0xcf, 0x52, 0xfc, 0x01, 0x2c, 0x67, 0xdf, 0xc5, 0x91, 0xc3, 0x44, 0xc6, - 0x2e, 0xaf, 0x3f, 0x9b, 0xfa, 0x58, 0xcc, 0xa5, 0x30, 0x37, 0xe3, 0xb9, 0x27, 0x4b, 0x11, 0xaf, - 0x00, 0xed, 0x92, 0x78, 0x74, 0xa7, 0x8f, 0x26, 0xec, 0x34, 0xbf, 0x4f, 0xe3, 0xf7, 0x1a, 0xdc, - 0xd9, 0x77, 0x59, 0x66, 0xc8, 0x94, 0xe5, 0x0d, 0xe9, 0xe5, 0x11, 0x94, 0xf9, 0x13, 0x64, 0x85, - 0x11, 0x39, 0x75, 0xdf, 0xa5, 0x9e, 0x07, 0x2e, 0xea, 0x0a, 0x09, 0xbf, 0x8b, 0x21, 0x76, 0x88, - 0xc5, 0xdc, 0xf7, 0xf2, 0xf5, 0x9d, 0x37, 0x4b, 0x5c, 0xd0, 0x73, 0xdf, 0xcb, 0xb7, 0x8e, 0x2f, - 0xc6, 0xf4, 0x9c, 0x04, 0xe2, 0xda, 0x73, 0x70, 0xec, 0x90, 0x23, 0x2e, 0x30, 0x7e, 0xa9, 0xc1, - 0xdd, 0x11, 0x52, 0x2c, 0xa4, 0x01, 0x23, 0xe8, 0x73, 0xd0, 0xb3, 0x32, 0xa8, 0xa6, 0x89, 0xa0, - 0x9e, 0x26, 0x93, 0x0e, 0x8c, 0xd0, 0xc7, 0xb0, 0x12, 0x90, 0x77, 0xfc, 0xdd, 0xca, 0xbe, 0x2f, - 0xc9, 0x2f, 0x73, 0x71, 0x37, 0xe3, 0xb0, 0x01, 0x77, 0x77, 0x88, 0x47, 0xc6, 0x73, 0xf9, 0x8d, - 0x2e, 0xfd, 0x12, 0xea, 0xbb, 0x24, 0x6e, 0xd1, 0x20, 0x8e, 0xa8, 0xe7, 0x91, 0xa8, 0x45, 0x83, - 0x53, 0xd7, 0x19, 0xc4, 0xde, 0x52, 0x56, 0x6c, 0x0d, 0xec, 0xcb, 0x99, 0xac, 0xd3, 0x47, 0xcf, - 0xa0, 0x7a, 0x81, 0x3d, 0xb7, 0x2f, 0x75, 0x06, 0x1c, 0x8b, 0xe6, 0xca, 0x40, 0x2e, 0x59, 0xfe, - 0x6d, 0x01, 0xaa, 0xa3, 0x5f, 0xe2, 0xf7, 0xc1, 0xf5, 0xb1, 0xa3, 0x8a, 0x25, 0x39, 0xe1, 0xf7, - 0xc6, 0xf6, 0xfb, 0xe9, 0x66, 0xf9, 0x10, 0x3d, 0x86, 0x25, 0xc7, 0x66, 0x96, 0x47, 0x1d, 0x2b, - 0xc4, 0xf1, 0x59, 0x5a, 0x3f, 0x80, 0x63, 0xb3, 0x7d, 0xea, 0x74, 0x71, 0x7c, 0x36, 0x56, 0x45, - 0x15, 0xc7, 0xab, 0xa8, 0x3d, 0x28, 0x5e, 0xe0, 0x88, 0xd5, 0xe6, 0xc5, 0x61, 0x7c, 0x7a, 0x5d, - 0x25, 0x34, 0x4c, 0xb3, 0x71, 0x8c, 0xa3, 0x34, 0xc1, 0x08, 0x04, 0xf4, 0x3d, 0x98, 0xe7, 0xd5, - 0x17, 0x4f, 0xce, 0x37, 0x24, 0xab, 0x31, 0xa8, 0x1d, 0x6e, 0x27, 0xb1, 0x24, 0x06, 0xfa, 0x09, - 0x94, 0xf9, 0xde, 0x54, 0xbe, 0x5f, 0x14, 0x90, 0x9b, 0x33, 0x40, 0xee, 0xda, 0xac, 0x27, 0x8d, - 0x25, 0x2e, 0x77, 0x4b, 0x2a, 0x40, 0x5f, 0x80, 0x2e, 0xc0, 0xdd, 0xe0, 0x5c, 0x95, 0x53, 0x1b, - 0x33, 0x42, 0x73, 0x53, 0x09, 0x5c, 0x72, 0xd2, 0x69, 0x7d, 0x15, 0x2a, 0x26, 0x09, 0x79, 0xfd, - 0xd0, 0xef, 0xc5, 0x11, 0x7f, 0x24, 0x3e, 0x84, 0x05, 0x91, 0xcc, 0x64, 0xac, 0xeb, 0x66, 0x3a, - 0xab, 0x7f, 0x07, 0xf4, 0xcc, 0x7b, 0x33, 0xe5, 0xd2, 0x0d, 0x80, 0x81, 0xaf, 0x66, 0xb2, 0x7c, - 0x07, 0x2b, 0x23, 0x2e, 0x99, 0x60, 0x7e, 0x98, 0x37, 0x2f, 0xaf, 0xbf, 0x9e, 0xc1, 0x29, 0xc3, - 0x3b, 0xcf, 0x7f, 0xf9, 0x02, 0x96, 0x87, 0x3c, 0xf6, 0x3f, 0xfa, 0xae, 0xe1, 0x41, 0xe5, 0x48, - 0xf5, 0x2d, 0xed, 0x0b, 0x12, 0xc4, 0xa3, 0xf5, 0xb6, 0x36, 0x5e, 0x6f, 0x6f, 0x80, 0x9e, 0xf5, - 0x3a, 0x29, 0x99, 0xfa, 0xd8, 0xeb, 0x9d, 0xa1, 0x9a, 0x03, 0x65, 0xe3, 0xeb, 0x02, 0xdc, 0xef, - 0x91, 0xf8, 0x50, 0xe5, 0x81, 0x5e, 0x8c, 0xe3, 0x84, 0xcd, 0x90, 0x35, 0x7a, 0x50, 0xcd, 0xd0, - 0x2c, 0xc2, 0xf9, 0xaa, 0xd2, 0xef, 0x9a, 0xea, 0x64, 0x78, 0x83, 0xe6, 0x4a, 0x3c, 0x34, 0x67, - 0xa8, 0x09, 0x40, 0xa2, 0x88, 0x46, 0x16, 0xef, 0xd2, 0x44, 0x82, 0xa8, 0xac, 0x57, 0x15, 0x5c, - 0x14, 0xda, 0x8d, 0x16, 0xed, 0x13, 0x53, 0x17, 0x3a, 0x7c, 0xc8, 0x1b, 0x36, 0x69, 0xe0, 0x13, - 0xc6, 0x78, 0x0e, 0x92, 0x29, 0x63, 0x49, 0x08, 0xdf, 0x4a, 0xd9, 0xc4, 0x04, 0x37, 0x3f, 0x39, - 0xc1, 0x7d, 0x06, 0x95, 0xe1, 0xa2, 0x8f, 0x87, 0x28, 0xf1, 0xb1, 0xeb, 0xa9, 0xec, 0x26, 0x26, - 0xfc, 0xa6, 0x30, 0x9b, 0x86, 0x44, 0xee, 0x59, 0x37, 0xd3, 0x99, 0xf1, 0x1c, 0x2a, 0xc3, 0x15, - 0x18, 0xba, 0x0f, 0xfc, 0xc6, 0xc9, 0x8c, 0x27, 0x21, 0x16, 0x1d, 0x9b, 0xf1, 0x74, 0x67, 0xfc, - 0xbd, 0x08, 0xb7, 0xc7, 0x0a, 0x3f, 0xb4, 0x06, 0xb7, 0x7d, 0x37, 0x70, 0xfd, 0xc4, 0xb7, 0xec, - 0x30, 0xb1, 0x6c, 0x1a, 0x89, 0xfb, 0xc8, 0x5f, 0xb4, 0x95, 0x74, 0xa1, 0x15, 0x26, 0x2d, 0x2e, - 0xe6, 0x11, 0x12, 0x46, 0x84, 0xf7, 0xc2, 0xee, 0x89, 0x27, 0xc3, 0xb1, 0x64, 0xe6, 0x45, 0xe8, - 0xff, 0xa1, 0xa2, 0xd0, 0x22, 0xec, 0x5b, 0xce, 0x89, 0xf0, 0xaa, 0x66, 0x2e, 0xa5, 0x52, 0x13, - 0xfb, 0xbb, 0x27, 0xe8, 0x8d, 0xca, 0x85, 0x45, 0x71, 0x82, 0xdf, 0x9a, 0xa1, 0x50, 0x15, 0xc9, - 0x50, 0xa5, 0xc1, 0x3b, 0x30, 0xcf, 0xdb, 0x61, 0x99, 0x9e, 0x75, 0x53, 0x4e, 0xd0, 0x33, 0xb8, - 0x7d, 0x42, 0x69, 0x6c, 0x89, 0xf6, 0x97, 0x3f, 0xd0, 0x9c, 0xc6, 0x82, 0xd8, 0x51, 0x85, 0x2f, - 0x70, 0x04, 0xfe, 0x4e, 0xef, 0x9e, 0xf0, 0x97, 0x3a, 0xa0, 0x16, 0xee, 0xf7, 0x23, 0xc2, 0x98, - 0xa8, 0x76, 0x4b, 0xa6, 0x1e, 0xd0, 0x2d, 0x29, 0xa8, 0xff, 0xa9, 0x00, 0x45, 0xae, 0x9d, 0xb5, - 0xa7, 0x5a, 0xae, 0x3d, 0xed, 0x40, 0x51, 0xbc, 0x1a, 0x05, 0x11, 0x36, 0xaf, 0x66, 0xdd, 0x43, - 0x83, 0xbf, 0x2f, 0xa6, 0x80, 0x40, 0xf7, 0x60, 0x51, 0xf1, 0x94, 0xb5, 0xc4, 0x02, 0x93, 0xfc, - 0xf8, 0xb9, 0x0b, 0x9b, 0x34, 0xd0, 0xd2, 0x19, 0x7f, 0xa5, 0x71, 0x12, 0x53, 0xab, 0x2f, 0xde, - 0x70, 0xb1, 0xb9, 0x92, 0x09, 0x5c, 0x24, 0x5f, 0x75, 0xae, 0xe0, 0xf3, 0x78, 0xb2, 0x42, 0xea, - 0x06, 0xb1, 0xa8, 0xb4, 0x75, 0x13, 0x84, 0xa8, 0xcb, 0x25, 0x46, 0x0f, 0x8a, 0xe2, 0x81, 0xbb, - 0x03, 0xd5, 0xa3, 0x1f, 0x75, 0xdb, 0xd6, 0x17, 0x07, 0xbd, 0x6e, 0xbb, 0xd5, 0x79, 0xd3, 0x69, - 0xef, 0x54, 0x6f, 0x21, 0x04, 0x95, 0x6e, 0xdb, 0xec, 0x75, 0x7a, 0x47, 0xed, 0x83, 0x23, 0x6b, - 0x6f, 0x67, 0xa7, 0xaa, 0x8d, 0xc8, 0x7a, 0xbd, 0x9d, 0x6a, 0x01, 0x2d, 0x83, 0xbe, 0x7f, 0xd8, - 0xda, 0xda, 0x17, 0xd3, 0x39, 0xe3, 0xdf, 0xda, 0x20, 0xc2, 0xb2, 0xa6, 0x77, 0xa2, 0xf3, 0x46, - 0x72, 0x4d, 0x61, 0x3c, 0xd7, 0x3c, 0x85, 0xe5, 0x3e, 0x39, 0xc5, 0x89, 0x17, 0x5b, 0x32, 0xf9, - 0xc9, 0x8e, 0x67, 0x29, 0x15, 0x1e, 0x73, 0x19, 0x3a, 0x02, 0xf0, 0xa8, 0x8d, 0x3d, 0xcb, 0xa6, - 0xe1, 0x65, 0xda, 0xf6, 0xbc, 0x9a, 0xa1, 0x43, 0x6f, 0xec, 0x73, 0xeb, 0x16, 0x0d, 0x2f, 0x4d, - 0xdd, 0x53, 0xc3, 0xfa, 0x4b, 0xd0, 0x33, 0x39, 0x67, 0x9f, 0xbb, 0x4c, 0x62, 0xcc, 0x65, 0x3c, - 0xb8, 0xd4, 0xdf, 0x0a, 0x3e, 0x36, 0xb6, 0xa0, 0x32, 0xdc, 0xb1, 0xf3, 0xe0, 0x12, 0xb5, 0x49, - 0xfe, 0xd7, 0x8e, 0x2e, 0x24, 0xe2, 0xbf, 0xce, 0x58, 0xc5, 0xb2, 0xfe, 0x9b, 0xd2, 0xc0, 0x7d, - 0xec, 0xf8, 0xc5, 0x96, 0x20, 0x8d, 0x7e, 0xab, 0x41, 0x65, 0xb8, 0xef, 0x46, 0xcd, 0x6b, 0x5e, - 0x80, 0x49, 0x1d, 0x7a, 0x7d, 0x8a, 0x2a, 0xd2, 0xf8, 0xc6, 0xaf, 0xfe, 0xfa, 0x8f, 0x3f, 0x14, - 0x1e, 0x19, 0x1f, 0x4c, 0xf8, 0x27, 0xb7, 0x99, 0x55, 0xe2, 0xe8, 0x17, 0x50, 0xce, 0x95, 0xed, - 0xe8, 0x9b, 0x53, 0x55, 0xf7, 0x8a, 0xc7, 0x47, 0x4a, 0x3b, 0xf7, 0x77, 0xae, 0x91, 0x3d, 0x0a, - 0x86, 0x21, 0x28, 0x3c, 0x34, 0xee, 0x4d, 0xa2, 0x10, 0x25, 0xc1, 0xa6, 0xb6, 0x86, 0xbe, 0xd2, - 0xa0, 0x9c, 0x6b, 0x05, 0xae, 0x23, 0x30, 0xde, 0x31, 0x4c, 0xe5, 0x88, 0x67, 0x82, 0xc5, 0x53, - 0xf4, 0x64, 0x02, 0x8b, 0xe6, 0xcf, 0x72, 0xd5, 0xf1, 0xcf, 0xd1, 0xef, 0x34, 0x58, 0x1e, 0x2a, - 0xe5, 0x51, 0xe3, 0x9a, 0x5e, 0x79, 0x42, 0x23, 0x52, 0x6f, 0x4e, 0xad, 0x2f, 0x7b, 0x04, 0xe3, - 0x81, 0x60, 0x77, 0x17, 0x4d, 0x3a, 0x26, 0xf4, 0x6b, 0x0d, 0x2a, 0xc3, 0x75, 0xfd, 0x75, 0xb1, - 0x32, 0xb1, 0x03, 0xa8, 0x7f, 0x38, 0xf6, 0xa2, 0xb7, 0xfd, 0x30, 0xbe, 0x54, 0x6e, 0x59, 0x9b, - 0xc2, 0x2d, 0x7f, 0xd4, 0xe0, 0x83, 0x09, 0x4d, 0x02, 0xfa, 0xf4, 0xda, 0xb3, 0xba, 0xa2, 0xa7, - 0xa8, 0xaf, 0x4d, 0x5f, 0xef, 0x18, 0x4d, 0x41, 0xf2, 0x19, 0xfa, 0x64, 0x52, 0x04, 0x39, 0x13, - 0x28, 0x7d, 0xad, 0x01, 0x1a, 0x2f, 0x4c, 0xd0, 0xcb, 0xeb, 0xfe, 0xd2, 0x5c, 0x51, 0xc6, 0x5c, - 0xe9, 0xb9, 0x17, 0x82, 0xd4, 0xf3, 0xfa, 0xc7, 0x93, 0x48, 0xb1, 0x31, 0xb8, 0x4d, 0x6d, 0x6d, - 0x3b, 0x84, 0x7b, 0x36, 0xf5, 0x27, 0x91, 0xd8, 0xae, 0x64, 0x31, 0xd1, 0xe5, 0x9f, 0xe9, 0x6a, - 0x3f, 0xfe, 0x5c, 0xa9, 0x51, 0x0f, 0x07, 0x4e, 0x83, 0x46, 0x4e, 0xd3, 0x21, 0x81, 0x20, 0xd1, - 0x94, 0x4b, 0x38, 0x74, 0xd9, 0xf8, 0x3f, 0xf7, 0xef, 0x2a, 0xc9, 0xbf, 0x34, 0xed, 0x64, 0x41, - 0xe8, 0xbf, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13, 0x10, 0x96, 0x1d, 0xa2, 0x17, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/iam/admin/v1/iam.pb.go b/vendor/google.golang.org/genproto/googleapis/iam/admin/v1/iam.pb.go deleted file mode 100644 index 44bb9b40..00000000 --- a/vendor/google.golang.org/genproto/googleapis/iam/admin/v1/iam.pb.go +++ /dev/null @@ -1,2523 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/iam/admin/v1/iam.proto - -/* -Package admin is a generated protocol buffer package. - -It is generated from these files: - google/iam/admin/v1/iam.proto - -It has these top-level messages: - ServiceAccount - CreateServiceAccountRequest - ListServiceAccountsRequest - ListServiceAccountsResponse - GetServiceAccountRequest - DeleteServiceAccountRequest - ListServiceAccountKeysRequest - ListServiceAccountKeysResponse - GetServiceAccountKeyRequest - ServiceAccountKey - CreateServiceAccountKeyRequest - DeleteServiceAccountKeyRequest - SignBlobRequest - SignBlobResponse - SignJwtRequest - SignJwtResponse - Role - QueryGrantableRolesRequest - QueryGrantableRolesResponse - ListRolesRequest - ListRolesResponse - GetRoleRequest - CreateRoleRequest - UpdateRoleRequest - DeleteRoleRequest - UndeleteRoleRequest - Permission - QueryTestablePermissionsRequest - QueryTestablePermissionsResponse -*/ -package admin - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Supported key algorithms. -type ServiceAccountKeyAlgorithm int32 - -const ( - // An unspecified key algorithm. - ServiceAccountKeyAlgorithm_KEY_ALG_UNSPECIFIED ServiceAccountKeyAlgorithm = 0 - // 1k RSA Key. - ServiceAccountKeyAlgorithm_KEY_ALG_RSA_1024 ServiceAccountKeyAlgorithm = 1 - // 2k RSA Key. - ServiceAccountKeyAlgorithm_KEY_ALG_RSA_2048 ServiceAccountKeyAlgorithm = 2 -) - -var ServiceAccountKeyAlgorithm_name = map[int32]string{ - 0: "KEY_ALG_UNSPECIFIED", - 1: "KEY_ALG_RSA_1024", - 2: "KEY_ALG_RSA_2048", -} -var ServiceAccountKeyAlgorithm_value = map[string]int32{ - "KEY_ALG_UNSPECIFIED": 0, - "KEY_ALG_RSA_1024": 1, - "KEY_ALG_RSA_2048": 2, -} - -func (x ServiceAccountKeyAlgorithm) String() string { - return proto.EnumName(ServiceAccountKeyAlgorithm_name, int32(x)) -} -func (ServiceAccountKeyAlgorithm) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Supported private key output formats. -type ServiceAccountPrivateKeyType int32 - -const ( - // Unspecified. Equivalent to `TYPE_GOOGLE_CREDENTIALS_FILE`. - ServiceAccountPrivateKeyType_TYPE_UNSPECIFIED ServiceAccountPrivateKeyType = 0 - // PKCS12 format. - // The password for the PKCS12 file is `notasecret`. - // For more information, see https://tools.ietf.org/html/rfc7292. - ServiceAccountPrivateKeyType_TYPE_PKCS12_FILE ServiceAccountPrivateKeyType = 1 - // Google Credentials File format. - ServiceAccountPrivateKeyType_TYPE_GOOGLE_CREDENTIALS_FILE ServiceAccountPrivateKeyType = 2 -) - -var ServiceAccountPrivateKeyType_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", - 1: "TYPE_PKCS12_FILE", - 2: "TYPE_GOOGLE_CREDENTIALS_FILE", -} -var ServiceAccountPrivateKeyType_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "TYPE_PKCS12_FILE": 1, - "TYPE_GOOGLE_CREDENTIALS_FILE": 2, -} - -func (x ServiceAccountPrivateKeyType) String() string { - return proto.EnumName(ServiceAccountPrivateKeyType_name, int32(x)) -} -func (ServiceAccountPrivateKeyType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -// Supported public key output formats. -type ServiceAccountPublicKeyType int32 - -const ( - // Unspecified. Returns nothing here. - ServiceAccountPublicKeyType_TYPE_NONE ServiceAccountPublicKeyType = 0 - // X509 PEM format. - ServiceAccountPublicKeyType_TYPE_X509_PEM_FILE ServiceAccountPublicKeyType = 1 - // Raw public key. - ServiceAccountPublicKeyType_TYPE_RAW_PUBLIC_KEY ServiceAccountPublicKeyType = 2 -) - -var ServiceAccountPublicKeyType_name = map[int32]string{ - 0: "TYPE_NONE", - 1: "TYPE_X509_PEM_FILE", - 2: "TYPE_RAW_PUBLIC_KEY", -} -var ServiceAccountPublicKeyType_value = map[string]int32{ - "TYPE_NONE": 0, - "TYPE_X509_PEM_FILE": 1, - "TYPE_RAW_PUBLIC_KEY": 2, -} - -func (x ServiceAccountPublicKeyType) String() string { - return proto.EnumName(ServiceAccountPublicKeyType_name, int32(x)) -} -func (ServiceAccountPublicKeyType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -// A view for Role objects. -type RoleView int32 - -const ( - // Omits the `included_permissions` field. - // This is the default value. - RoleView_BASIC RoleView = 0 - // Returns all fields. - RoleView_FULL RoleView = 1 -) - -var RoleView_name = map[int32]string{ - 0: "BASIC", - 1: "FULL", -} -var RoleView_value = map[string]int32{ - "BASIC": 0, - "FULL": 1, -} - -func (x RoleView) String() string { - return proto.EnumName(RoleView_name, int32(x)) -} -func (RoleView) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -// `KeyType` filters to selectively retrieve certain varieties -// of keys. -type ListServiceAccountKeysRequest_KeyType int32 - -const ( - // Unspecified key type. The presence of this in the - // message will immediately result in an error. - ListServiceAccountKeysRequest_KEY_TYPE_UNSPECIFIED ListServiceAccountKeysRequest_KeyType = 0 - // User-managed keys (managed and rotated by the user). - ListServiceAccountKeysRequest_USER_MANAGED ListServiceAccountKeysRequest_KeyType = 1 - // System-managed keys (managed and rotated by Google). - ListServiceAccountKeysRequest_SYSTEM_MANAGED ListServiceAccountKeysRequest_KeyType = 2 -) - -var ListServiceAccountKeysRequest_KeyType_name = map[int32]string{ - 0: "KEY_TYPE_UNSPECIFIED", - 1: "USER_MANAGED", - 2: "SYSTEM_MANAGED", -} -var ListServiceAccountKeysRequest_KeyType_value = map[string]int32{ - "KEY_TYPE_UNSPECIFIED": 0, - "USER_MANAGED": 1, - "SYSTEM_MANAGED": 2, -} - -func (x ListServiceAccountKeysRequest_KeyType) String() string { - return proto.EnumName(ListServiceAccountKeysRequest_KeyType_name, int32(x)) -} -func (ListServiceAccountKeysRequest_KeyType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{6, 0} -} - -// A stage representing a role's lifecycle phase. -type Role_RoleLaunchStage int32 - -const ( - // The user has indicated this role is currently in an alpha phase. - Role_ALPHA Role_RoleLaunchStage = 0 - // The user has indicated this role is currently in a beta phase. - Role_BETA Role_RoleLaunchStage = 1 - // The user has indicated this role is generally available. - Role_GA Role_RoleLaunchStage = 2 - // The user has indicated this role is being deprecated. - Role_DEPRECATED Role_RoleLaunchStage = 4 - // This role is disabled and will not contribute permissions to any members - // it is granted to in policies. - Role_DISABLED Role_RoleLaunchStage = 5 - // The user has indicated this role is currently in an eap phase. - Role_EAP Role_RoleLaunchStage = 6 -) - -var Role_RoleLaunchStage_name = map[int32]string{ - 0: "ALPHA", - 1: "BETA", - 2: "GA", - 4: "DEPRECATED", - 5: "DISABLED", - 6: "EAP", -} -var Role_RoleLaunchStage_value = map[string]int32{ - "ALPHA": 0, - "BETA": 1, - "GA": 2, - "DEPRECATED": 4, - "DISABLED": 5, - "EAP": 6, -} - -func (x Role_RoleLaunchStage) String() string { - return proto.EnumName(Role_RoleLaunchStage_name, int32(x)) -} -func (Role_RoleLaunchStage) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{16, 0} } - -// A stage representing a permission's lifecycle phase. -type Permission_PermissionLaunchStage int32 - -const ( - // The permission is currently in an alpha phase. - Permission_ALPHA Permission_PermissionLaunchStage = 0 - // The permission is currently in a beta phase. - Permission_BETA Permission_PermissionLaunchStage = 1 - // The permission is generally available. - Permission_GA Permission_PermissionLaunchStage = 2 - // The permission is being deprecated. - Permission_DEPRECATED Permission_PermissionLaunchStage = 3 -) - -var Permission_PermissionLaunchStage_name = map[int32]string{ - 0: "ALPHA", - 1: "BETA", - 2: "GA", - 3: "DEPRECATED", -} -var Permission_PermissionLaunchStage_value = map[string]int32{ - "ALPHA": 0, - "BETA": 1, - "GA": 2, - "DEPRECATED": 3, -} - -func (x Permission_PermissionLaunchStage) String() string { - return proto.EnumName(Permission_PermissionLaunchStage_name, int32(x)) -} -func (Permission_PermissionLaunchStage) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{26, 0} -} - -// The state of the permission with regards to custom roles. -type Permission_CustomRolesSupportLevel int32 - -const ( - // Permission is fully supported for custom role use. - Permission_SUPPORTED Permission_CustomRolesSupportLevel = 0 - // Permission is being tested to check custom role compatibility. - Permission_TESTING Permission_CustomRolesSupportLevel = 1 - // Permission is not supported for custom role use. - Permission_NOT_SUPPORTED Permission_CustomRolesSupportLevel = 2 -) - -var Permission_CustomRolesSupportLevel_name = map[int32]string{ - 0: "SUPPORTED", - 1: "TESTING", - 2: "NOT_SUPPORTED", -} -var Permission_CustomRolesSupportLevel_value = map[string]int32{ - "SUPPORTED": 0, - "TESTING": 1, - "NOT_SUPPORTED": 2, -} - -func (x Permission_CustomRolesSupportLevel) String() string { - return proto.EnumName(Permission_CustomRolesSupportLevel_name, int32(x)) -} -func (Permission_CustomRolesSupportLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{26, 1} -} - -// A service account in the Identity and Access Management API. -// -// To create a service account, specify the `project_id` and the `account_id` -// for the account. The `account_id` is unique within the project, and is used -// to generate the service account email address and a stable -// `unique_id`. -// -// If the account already exists, the account's resource name is returned -// in util::Status's ResourceInfo.resource_name in the format of -// projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can -// use the name in other methods to access the account. -// -// All other methods can identify the service account using the format -// `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. -// Using `-` as a wildcard for the project will infer the project from -// the account. The `account` value can be the `email` address or the -// `unique_id` of the service account. -type ServiceAccount struct { - // The resource name of the service account in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. - // - // Requests using `-` as a wildcard for the project will infer the project - // from the `account` and the `account` value can be the `email` address or - // the `unique_id` of the service account. - // - // In responses the resource name will always be in the format - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // @OutputOnly The id of the project that owns the service account. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // @OutputOnly The unique and stable id of the service account. - UniqueId string `protobuf:"bytes,4,opt,name=unique_id,json=uniqueId" json:"unique_id,omitempty"` - // @OutputOnly The email address of the service account. - Email string `protobuf:"bytes,5,opt,name=email" json:"email,omitempty"` - // Optional. A user-specified description of the service account. Must be - // fewer than 100 UTF-8 bytes. - DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Used to perform a consistent read-modify-write. - Etag []byte `protobuf:"bytes,7,opt,name=etag,proto3" json:"etag,omitempty"` - // @OutputOnly. The OAuth2 client id for the service account. - // This is used in conjunction with the OAuth2 clientconfig API to make - // three legged OAuth2 (3LO) flows to access the data of Google users. - Oauth2ClientId string `protobuf:"bytes,9,opt,name=oauth2_client_id,json=oauth2ClientId" json:"oauth2_client_id,omitempty"` -} - -func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } -func (m *ServiceAccount) String() string { return proto.CompactTextString(m) } -func (*ServiceAccount) ProtoMessage() {} -func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ServiceAccount) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ServiceAccount) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *ServiceAccount) GetUniqueId() string { - if m != nil { - return m.UniqueId - } - return "" -} - -func (m *ServiceAccount) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -func (m *ServiceAccount) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *ServiceAccount) GetEtag() []byte { - if m != nil { - return m.Etag - } - return nil -} - -func (m *ServiceAccount) GetOauth2ClientId() string { - if m != nil { - return m.Oauth2ClientId - } - return "" -} - -// The service account create request. -type CreateServiceAccountRequest struct { - // Required. The resource name of the project associated with the service - // accounts, such as `projects/my-project-123`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The account id that is used to generate the service account - // email address and a stable unique id. It is unique within a project, - // must be 6-30 characters long, and match the regular expression - // `[a-z]([-a-z0-9]*[a-z0-9])` to comply with RFC1035. - AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId" json:"account_id,omitempty"` - // The [ServiceAccount][google.iam.admin.v1.ServiceAccount] resource to create. - // Currently, only the following values are user assignable: - // `display_name` . - ServiceAccount *ServiceAccount `protobuf:"bytes,3,opt,name=service_account,json=serviceAccount" json:"service_account,omitempty"` -} - -func (m *CreateServiceAccountRequest) Reset() { *m = CreateServiceAccountRequest{} } -func (m *CreateServiceAccountRequest) String() string { return proto.CompactTextString(m) } -func (*CreateServiceAccountRequest) ProtoMessage() {} -func (*CreateServiceAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *CreateServiceAccountRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateServiceAccountRequest) GetAccountId() string { - if m != nil { - return m.AccountId - } - return "" -} - -func (m *CreateServiceAccountRequest) GetServiceAccount() *ServiceAccount { - if m != nil { - return m.ServiceAccount - } - return nil -} - -// The service account list request. -type ListServiceAccountsRequest struct { - // Required. The resource name of the project associated with the service - // accounts, such as `projects/my-project-123`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional limit on the number of service accounts to include in the - // response. Further accounts can subsequently be obtained by including the - // [ListServiceAccountsResponse.next_page_token][google.iam.admin.v1.ListServiceAccountsResponse.next_page_token] - // in a subsequent request. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional pagination token returned in an earlier - // [ListServiceAccountsResponse.next_page_token][google.iam.admin.v1.ListServiceAccountsResponse.next_page_token]. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListServiceAccountsRequest) Reset() { *m = ListServiceAccountsRequest{} } -func (m *ListServiceAccountsRequest) String() string { return proto.CompactTextString(m) } -func (*ListServiceAccountsRequest) ProtoMessage() {} -func (*ListServiceAccountsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ListServiceAccountsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListServiceAccountsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListServiceAccountsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The service account list response. -type ListServiceAccountsResponse struct { - // The list of matching service accounts. - Accounts []*ServiceAccount `protobuf:"bytes,1,rep,name=accounts" json:"accounts,omitempty"` - // To retrieve the next page of results, set - // [ListServiceAccountsRequest.page_token][google.iam.admin.v1.ListServiceAccountsRequest.page_token] - // to this value. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListServiceAccountsResponse) Reset() { *m = ListServiceAccountsResponse{} } -func (m *ListServiceAccountsResponse) String() string { return proto.CompactTextString(m) } -func (*ListServiceAccountsResponse) ProtoMessage() {} -func (*ListServiceAccountsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListServiceAccountsResponse) GetAccounts() []*ServiceAccount { - if m != nil { - return m.Accounts - } - return nil -} - -func (m *ListServiceAccountsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The service account get request. -type GetServiceAccountRequest struct { - // The resource name of the service account in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. - // Using `-` as a wildcard for the project will infer the project from - // the account. The `account` value can be the `email` address or the - // `unique_id` of the service account. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetServiceAccountRequest) Reset() { *m = GetServiceAccountRequest{} } -func (m *GetServiceAccountRequest) String() string { return proto.CompactTextString(m) } -func (*GetServiceAccountRequest) ProtoMessage() {} -func (*GetServiceAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *GetServiceAccountRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The service account delete request. -type DeleteServiceAccountRequest struct { - // The resource name of the service account in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. - // Using `-` as a wildcard for the project will infer the project from - // the account. The `account` value can be the `email` address or the - // `unique_id` of the service account. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteServiceAccountRequest) Reset() { *m = DeleteServiceAccountRequest{} } -func (m *DeleteServiceAccountRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteServiceAccountRequest) ProtoMessage() {} -func (*DeleteServiceAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *DeleteServiceAccountRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The service account keys list request. -type ListServiceAccountKeysRequest struct { - // The resource name of the service account in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. - // - // Using `-` as a wildcard for the project, will infer the project from - // the account. The `account` value can be the `email` address or the - // `unique_id` of the service account. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Filters the types of keys the user wants to include in the list - // response. Duplicate key types are not allowed. If no key type - // is provided, all keys are returned. - KeyTypes []ListServiceAccountKeysRequest_KeyType `protobuf:"varint,2,rep,packed,name=key_types,json=keyTypes,enum=google.iam.admin.v1.ListServiceAccountKeysRequest_KeyType" json:"key_types,omitempty"` -} - -func (m *ListServiceAccountKeysRequest) Reset() { *m = ListServiceAccountKeysRequest{} } -func (m *ListServiceAccountKeysRequest) String() string { return proto.CompactTextString(m) } -func (*ListServiceAccountKeysRequest) ProtoMessage() {} -func (*ListServiceAccountKeysRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ListServiceAccountKeysRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListServiceAccountKeysRequest) GetKeyTypes() []ListServiceAccountKeysRequest_KeyType { - if m != nil { - return m.KeyTypes - } - return nil -} - -// The service account keys list response. -type ListServiceAccountKeysResponse struct { - // The public keys for the service account. - Keys []*ServiceAccountKey `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` -} - -func (m *ListServiceAccountKeysResponse) Reset() { *m = ListServiceAccountKeysResponse{} } -func (m *ListServiceAccountKeysResponse) String() string { return proto.CompactTextString(m) } -func (*ListServiceAccountKeysResponse) ProtoMessage() {} -func (*ListServiceAccountKeysResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ListServiceAccountKeysResponse) GetKeys() []*ServiceAccountKey { - if m != nil { - return m.Keys - } - return nil -} - -// The service account key get by id request. -type GetServiceAccountKeyRequest struct { - // The resource name of the service account key in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`. - // - // Using `-` as a wildcard for the project will infer the project from - // the account. The `account` value can be the `email` address or the - // `unique_id` of the service account. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The output format of the public key requested. - // X509_PEM is the default output format. - PublicKeyType ServiceAccountPublicKeyType `protobuf:"varint,2,opt,name=public_key_type,json=publicKeyType,enum=google.iam.admin.v1.ServiceAccountPublicKeyType" json:"public_key_type,omitempty"` -} - -func (m *GetServiceAccountKeyRequest) Reset() { *m = GetServiceAccountKeyRequest{} } -func (m *GetServiceAccountKeyRequest) String() string { return proto.CompactTextString(m) } -func (*GetServiceAccountKeyRequest) ProtoMessage() {} -func (*GetServiceAccountKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *GetServiceAccountKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GetServiceAccountKeyRequest) GetPublicKeyType() ServiceAccountPublicKeyType { - if m != nil { - return m.PublicKeyType - } - return ServiceAccountPublicKeyType_TYPE_NONE -} - -// Represents a service account key. -// -// A service account has two sets of key-pairs: user-managed, and -// system-managed. -// -// User-managed key-pairs can be created and deleted by users. Users are -// responsible for rotating these keys periodically to ensure security of -// their service accounts. Users retain the private key of these key-pairs, -// and Google retains ONLY the public key. -// -// System-managed key-pairs are managed automatically by Google, and rotated -// daily without user intervention. The private key never leaves Google's -// servers to maximize security. -// -// Public keys for all service accounts are also published at the OAuth2 -// Service Account API. -type ServiceAccountKey struct { - // The resource name of the service account key in the following format - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The output format for the private key. - // Only provided in `CreateServiceAccountKey` responses, not - // in `GetServiceAccountKey` or `ListServiceAccountKey` responses. - // - // Google never exposes system-managed private keys, and never retains - // user-managed private keys. - PrivateKeyType ServiceAccountPrivateKeyType `protobuf:"varint,2,opt,name=private_key_type,json=privateKeyType,enum=google.iam.admin.v1.ServiceAccountPrivateKeyType" json:"private_key_type,omitempty"` - // Specifies the algorithm (and possibly key size) for the key. - KeyAlgorithm ServiceAccountKeyAlgorithm `protobuf:"varint,8,opt,name=key_algorithm,json=keyAlgorithm,enum=google.iam.admin.v1.ServiceAccountKeyAlgorithm" json:"key_algorithm,omitempty"` - // The private key data. Only provided in `CreateServiceAccountKey` - // responses. Make sure to keep the private key data secure because it - // allows for the assertion of the service account identity. - // When decoded, the private key data can be used to authenticate with - // Google API client libraries and with - // <a href="/sdk/gcloud/reference/auth/activate-service-account">gcloud - // auth activate-service-account</a>. - PrivateKeyData []byte `protobuf:"bytes,3,opt,name=private_key_data,json=privateKeyData,proto3" json:"private_key_data,omitempty"` - // The public key data. Only provided in `GetServiceAccountKey` responses. - PublicKeyData []byte `protobuf:"bytes,7,opt,name=public_key_data,json=publicKeyData,proto3" json:"public_key_data,omitempty"` - // The key can be used after this timestamp. - ValidAfterTime *google_protobuf3.Timestamp `protobuf:"bytes,4,opt,name=valid_after_time,json=validAfterTime" json:"valid_after_time,omitempty"` - // The key can be used before this timestamp. - ValidBeforeTime *google_protobuf3.Timestamp `protobuf:"bytes,5,opt,name=valid_before_time,json=validBeforeTime" json:"valid_before_time,omitempty"` -} - -func (m *ServiceAccountKey) Reset() { *m = ServiceAccountKey{} } -func (m *ServiceAccountKey) String() string { return proto.CompactTextString(m) } -func (*ServiceAccountKey) ProtoMessage() {} -func (*ServiceAccountKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ServiceAccountKey) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ServiceAccountKey) GetPrivateKeyType() ServiceAccountPrivateKeyType { - if m != nil { - return m.PrivateKeyType - } - return ServiceAccountPrivateKeyType_TYPE_UNSPECIFIED -} - -func (m *ServiceAccountKey) GetKeyAlgorithm() ServiceAccountKeyAlgorithm { - if m != nil { - return m.KeyAlgorithm - } - return ServiceAccountKeyAlgorithm_KEY_ALG_UNSPECIFIED -} - -func (m *ServiceAccountKey) GetPrivateKeyData() []byte { - if m != nil { - return m.PrivateKeyData - } - return nil -} - -func (m *ServiceAccountKey) GetPublicKeyData() []byte { - if m != nil { - return m.PublicKeyData - } - return nil -} - -func (m *ServiceAccountKey) GetValidAfterTime() *google_protobuf3.Timestamp { - if m != nil { - return m.ValidAfterTime - } - return nil -} - -func (m *ServiceAccountKey) GetValidBeforeTime() *google_protobuf3.Timestamp { - if m != nil { - return m.ValidBeforeTime - } - return nil -} - -// The service account key create request. -type CreateServiceAccountKeyRequest struct { - // The resource name of the service account in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. - // Using `-` as a wildcard for the project will infer the project from - // the account. The `account` value can be the `email` address or the - // `unique_id` of the service account. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The output format of the private key. `GOOGLE_CREDENTIALS_FILE` is the - // default output format. - PrivateKeyType ServiceAccountPrivateKeyType `protobuf:"varint,2,opt,name=private_key_type,json=privateKeyType,enum=google.iam.admin.v1.ServiceAccountPrivateKeyType" json:"private_key_type,omitempty"` - // Which type of key and algorithm to use for the key. - // The default is currently a 2K RSA key. However this may change in the - // future. - KeyAlgorithm ServiceAccountKeyAlgorithm `protobuf:"varint,3,opt,name=key_algorithm,json=keyAlgorithm,enum=google.iam.admin.v1.ServiceAccountKeyAlgorithm" json:"key_algorithm,omitempty"` -} - -func (m *CreateServiceAccountKeyRequest) Reset() { *m = CreateServiceAccountKeyRequest{} } -func (m *CreateServiceAccountKeyRequest) String() string { return proto.CompactTextString(m) } -func (*CreateServiceAccountKeyRequest) ProtoMessage() {} -func (*CreateServiceAccountKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *CreateServiceAccountKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateServiceAccountKeyRequest) GetPrivateKeyType() ServiceAccountPrivateKeyType { - if m != nil { - return m.PrivateKeyType - } - return ServiceAccountPrivateKeyType_TYPE_UNSPECIFIED -} - -func (m *CreateServiceAccountKeyRequest) GetKeyAlgorithm() ServiceAccountKeyAlgorithm { - if m != nil { - return m.KeyAlgorithm - } - return ServiceAccountKeyAlgorithm_KEY_ALG_UNSPECIFIED -} - -// The service account key delete request. -type DeleteServiceAccountKeyRequest struct { - // The resource name of the service account key in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`. - // Using `-` as a wildcard for the project will infer the project from - // the account. The `account` value can be the `email` address or the - // `unique_id` of the service account. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteServiceAccountKeyRequest) Reset() { *m = DeleteServiceAccountKeyRequest{} } -func (m *DeleteServiceAccountKeyRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteServiceAccountKeyRequest) ProtoMessage() {} -func (*DeleteServiceAccountKeyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *DeleteServiceAccountKeyRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The service account sign blob request. -type SignBlobRequest struct { - // The resource name of the service account in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. - // Using `-` as a wildcard for the project will infer the project from - // the account. The `account` value can be the `email` address or the - // `unique_id` of the service account. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The bytes to sign. - BytesToSign []byte `protobuf:"bytes,2,opt,name=bytes_to_sign,json=bytesToSign,proto3" json:"bytes_to_sign,omitempty"` -} - -func (m *SignBlobRequest) Reset() { *m = SignBlobRequest{} } -func (m *SignBlobRequest) String() string { return proto.CompactTextString(m) } -func (*SignBlobRequest) ProtoMessage() {} -func (*SignBlobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *SignBlobRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SignBlobRequest) GetBytesToSign() []byte { - if m != nil { - return m.BytesToSign - } - return nil -} - -// The service account sign blob response. -type SignBlobResponse struct { - // The id of the key used to sign the blob. - KeyId string `protobuf:"bytes,1,opt,name=key_id,json=keyId" json:"key_id,omitempty"` - // The signed blob. - Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` -} - -func (m *SignBlobResponse) Reset() { *m = SignBlobResponse{} } -func (m *SignBlobResponse) String() string { return proto.CompactTextString(m) } -func (*SignBlobResponse) ProtoMessage() {} -func (*SignBlobResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *SignBlobResponse) GetKeyId() string { - if m != nil { - return m.KeyId - } - return "" -} - -func (m *SignBlobResponse) GetSignature() []byte { - if m != nil { - return m.Signature - } - return nil -} - -// The service account sign JWT request. -type SignJwtRequest struct { - // The resource name of the service account in the following format: - // `projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`. - // Using `-` as a wildcard for the project will infer the project from - // the account. The `account` value can be the `email` address or the - // `unique_id` of the service account. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The JWT payload to sign, a JSON JWT Claim set. - Payload string `protobuf:"bytes,2,opt,name=payload" json:"payload,omitempty"` -} - -func (m *SignJwtRequest) Reset() { *m = SignJwtRequest{} } -func (m *SignJwtRequest) String() string { return proto.CompactTextString(m) } -func (*SignJwtRequest) ProtoMessage() {} -func (*SignJwtRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *SignJwtRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *SignJwtRequest) GetPayload() string { - if m != nil { - return m.Payload - } - return "" -} - -// The service account sign JWT response. -type SignJwtResponse struct { - // The id of the key used to sign the JWT. - KeyId string `protobuf:"bytes,1,opt,name=key_id,json=keyId" json:"key_id,omitempty"` - // The signed JWT. - SignedJwt string `protobuf:"bytes,2,opt,name=signed_jwt,json=signedJwt" json:"signed_jwt,omitempty"` -} - -func (m *SignJwtResponse) Reset() { *m = SignJwtResponse{} } -func (m *SignJwtResponse) String() string { return proto.CompactTextString(m) } -func (*SignJwtResponse) ProtoMessage() {} -func (*SignJwtResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *SignJwtResponse) GetKeyId() string { - if m != nil { - return m.KeyId - } - return "" -} - -func (m *SignJwtResponse) GetSignedJwt() string { - if m != nil { - return m.SignedJwt - } - return "" -} - -// A role in the Identity and Access Management API. -type Role struct { - // The name of the role. - // - // When Role is used in CreateRole, the role name must not be set. - // - // When Role is used in output and other input such as UpdateRole, the role - // name is the complete path, e.g., roles/logging.viewer for curated roles - // and organizations/{ORGANIZATION_ID}/roles/logging.viewer for custom roles. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. A human-readable title for the role. Typically this - // is limited to 100 UTF-8 bytes. - Title string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` - // Optional. A human-readable description for the role. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // The names of the permissions this role grants when bound in an IAM policy. - IncludedPermissions []string `protobuf:"bytes,7,rep,name=included_permissions,json=includedPermissions" json:"included_permissions,omitempty"` - // The current launch stage of the role. - Stage Role_RoleLaunchStage `protobuf:"varint,8,opt,name=stage,enum=google.iam.admin.v1.Role_RoleLaunchStage" json:"stage,omitempty"` - // Used to perform a consistent read-modify-write. - Etag []byte `protobuf:"bytes,9,opt,name=etag,proto3" json:"etag,omitempty"` - // The current deleted state of the role. This field is read only. - // It will be ignored in calls to CreateRole and UpdateRole. - Deleted bool `protobuf:"varint,11,opt,name=deleted" json:"deleted,omitempty"` -} - -func (m *Role) Reset() { *m = Role{} } -func (m *Role) String() string { return proto.CompactTextString(m) } -func (*Role) ProtoMessage() {} -func (*Role) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *Role) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Role) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Role) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Role) GetIncludedPermissions() []string { - if m != nil { - return m.IncludedPermissions - } - return nil -} - -func (m *Role) GetStage() Role_RoleLaunchStage { - if m != nil { - return m.Stage - } - return Role_ALPHA -} - -func (m *Role) GetEtag() []byte { - if m != nil { - return m.Etag - } - return nil -} - -func (m *Role) GetDeleted() bool { - if m != nil { - return m.Deleted - } - return false -} - -// The grantable role query request. -type QueryGrantableRolesRequest struct { - // Required. The full resource name to query from the list of grantable roles. - // - // The name follows the Google Cloud Platform resource format. - // For example, a Cloud Platform project with id `my-project` will be named - // `//cloudresourcemanager.googleapis.com/projects/my-project`. - FullResourceName string `protobuf:"bytes,1,opt,name=full_resource_name,json=fullResourceName" json:"full_resource_name,omitempty"` - View RoleView `protobuf:"varint,2,opt,name=view,enum=google.iam.admin.v1.RoleView" json:"view,omitempty"` - // Optional limit on the number of roles to include in the response. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional pagination token returned in an earlier - // QueryGrantableRolesResponse. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *QueryGrantableRolesRequest) Reset() { *m = QueryGrantableRolesRequest{} } -func (m *QueryGrantableRolesRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGrantableRolesRequest) ProtoMessage() {} -func (*QueryGrantableRolesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *QueryGrantableRolesRequest) GetFullResourceName() string { - if m != nil { - return m.FullResourceName - } - return "" -} - -func (m *QueryGrantableRolesRequest) GetView() RoleView { - if m != nil { - return m.View - } - return RoleView_BASIC -} - -func (m *QueryGrantableRolesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *QueryGrantableRolesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The grantable role query response. -type QueryGrantableRolesResponse struct { - // The list of matching roles. - Roles []*Role `protobuf:"bytes,1,rep,name=roles" json:"roles,omitempty"` - // To retrieve the next page of results, set - // `QueryGrantableRolesRequest.page_token` to this value. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *QueryGrantableRolesResponse) Reset() { *m = QueryGrantableRolesResponse{} } -func (m *QueryGrantableRolesResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGrantableRolesResponse) ProtoMessage() {} -func (*QueryGrantableRolesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *QueryGrantableRolesResponse) GetRoles() []*Role { - if m != nil { - return m.Roles - } - return nil -} - -func (m *QueryGrantableRolesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request to get all roles defined under a resource. -type ListRolesRequest struct { - // The resource name of the parent resource in one of the following formats: - // `` (empty string) -- this refers to curated roles. - // `organizations/{ORGANIZATION_ID}` - // `projects/{PROJECT_ID}` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional limit on the number of roles to include in the response. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional pagination token returned in an earlier ListRolesResponse. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional view for the returned Role objects. - View RoleView `protobuf:"varint,4,opt,name=view,enum=google.iam.admin.v1.RoleView" json:"view,omitempty"` - // Include Roles that have been deleted. - ShowDeleted bool `protobuf:"varint,6,opt,name=show_deleted,json=showDeleted" json:"show_deleted,omitempty"` -} - -func (m *ListRolesRequest) Reset() { *m = ListRolesRequest{} } -func (m *ListRolesRequest) String() string { return proto.CompactTextString(m) } -func (*ListRolesRequest) ProtoMessage() {} -func (*ListRolesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *ListRolesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListRolesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListRolesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListRolesRequest) GetView() RoleView { - if m != nil { - return m.View - } - return RoleView_BASIC -} - -func (m *ListRolesRequest) GetShowDeleted() bool { - if m != nil { - return m.ShowDeleted - } - return false -} - -// The response containing the roles defined under a resource. -type ListRolesResponse struct { - // The Roles defined on this resource. - Roles []*Role `protobuf:"bytes,1,rep,name=roles" json:"roles,omitempty"` - // To retrieve the next page of results, set - // `ListRolesRequest.page_token` to this value. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListRolesResponse) Reset() { *m = ListRolesResponse{} } -func (m *ListRolesResponse) String() string { return proto.CompactTextString(m) } -func (*ListRolesResponse) ProtoMessage() {} -func (*ListRolesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *ListRolesResponse) GetRoles() []*Role { - if m != nil { - return m.Roles - } - return nil -} - -func (m *ListRolesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request to get the definition of an existing role. -type GetRoleRequest struct { - // The resource name of the role in one of the following formats: - // `roles/{ROLE_NAME}` - // `organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}` - // `projects/{PROJECT_ID}/roles/{ROLE_NAME}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetRoleRequest) Reset() { *m = GetRoleRequest{} } -func (m *GetRoleRequest) String() string { return proto.CompactTextString(m) } -func (*GetRoleRequest) ProtoMessage() {} -func (*GetRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *GetRoleRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request to create a new role. -type CreateRoleRequest struct { - // The resource name of the parent resource in one of the following formats: - // `organizations/{ORGANIZATION_ID}` - // `projects/{PROJECT_ID}` - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The role id to use for this role. - RoleId string `protobuf:"bytes,2,opt,name=role_id,json=roleId" json:"role_id,omitempty"` - // The Role resource to create. - Role *Role `protobuf:"bytes,3,opt,name=role" json:"role,omitempty"` -} - -func (m *CreateRoleRequest) Reset() { *m = CreateRoleRequest{} } -func (m *CreateRoleRequest) String() string { return proto.CompactTextString(m) } -func (*CreateRoleRequest) ProtoMessage() {} -func (*CreateRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *CreateRoleRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateRoleRequest) GetRoleId() string { - if m != nil { - return m.RoleId - } - return "" -} - -func (m *CreateRoleRequest) GetRole() *Role { - if m != nil { - return m.Role - } - return nil -} - -// The request to update a role. -type UpdateRoleRequest struct { - // The resource name of the role in one of the following formats: - // `roles/{ROLE_NAME}` - // `organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}` - // `projects/{PROJECT_ID}/roles/{ROLE_NAME}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The updated role. - Role *Role `protobuf:"bytes,2,opt,name=role" json:"role,omitempty"` - // A mask describing which fields in the Role have changed. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateRoleRequest) Reset() { *m = UpdateRoleRequest{} } -func (m *UpdateRoleRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateRoleRequest) ProtoMessage() {} -func (*UpdateRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *UpdateRoleRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateRoleRequest) GetRole() *Role { - if m != nil { - return m.Role - } - return nil -} - -func (m *UpdateRoleRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The request to delete an existing role. -type DeleteRoleRequest struct { - // The resource name of the role in one of the following formats: - // `organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}` - // `projects/{PROJECT_ID}/roles/{ROLE_NAME}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Used to perform a consistent read-modify-write. - Etag []byte `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` -} - -func (m *DeleteRoleRequest) Reset() { *m = DeleteRoleRequest{} } -func (m *DeleteRoleRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteRoleRequest) ProtoMessage() {} -func (*DeleteRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *DeleteRoleRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DeleteRoleRequest) GetEtag() []byte { - if m != nil { - return m.Etag - } - return nil -} - -// The request to undelete an existing role. -type UndeleteRoleRequest struct { - // The resource name of the role in one of the following formats: - // `organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}` - // `projects/{PROJECT_ID}/roles/{ROLE_NAME}` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Used to perform a consistent read-modify-write. - Etag []byte `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` -} - -func (m *UndeleteRoleRequest) Reset() { *m = UndeleteRoleRequest{} } -func (m *UndeleteRoleRequest) String() string { return proto.CompactTextString(m) } -func (*UndeleteRoleRequest) ProtoMessage() {} -func (*UndeleteRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *UndeleteRoleRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UndeleteRoleRequest) GetEtag() []byte { - if m != nil { - return m.Etag - } - return nil -} - -// A permission which can be included by a role. -type Permission struct { - // The name of this Permission. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The title of this Permission. - Title string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` - // A brief description of what this Permission is used for. - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // This permission can ONLY be used in predefined roles. - OnlyInPredefinedRoles bool `protobuf:"varint,4,opt,name=only_in_predefined_roles,json=onlyInPredefinedRoles" json:"only_in_predefined_roles,omitempty"` - // The current launch stage of the permission. - Stage Permission_PermissionLaunchStage `protobuf:"varint,5,opt,name=stage,enum=google.iam.admin.v1.Permission_PermissionLaunchStage" json:"stage,omitempty"` - // The current custom role support level. - CustomRolesSupportLevel Permission_CustomRolesSupportLevel `protobuf:"varint,6,opt,name=custom_roles_support_level,json=customRolesSupportLevel,enum=google.iam.admin.v1.Permission_CustomRolesSupportLevel" json:"custom_roles_support_level,omitempty"` -} - -func (m *Permission) Reset() { *m = Permission{} } -func (m *Permission) String() string { return proto.CompactTextString(m) } -func (*Permission) ProtoMessage() {} -func (*Permission) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *Permission) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Permission) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *Permission) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Permission) GetOnlyInPredefinedRoles() bool { - if m != nil { - return m.OnlyInPredefinedRoles - } - return false -} - -func (m *Permission) GetStage() Permission_PermissionLaunchStage { - if m != nil { - return m.Stage - } - return Permission_ALPHA -} - -func (m *Permission) GetCustomRolesSupportLevel() Permission_CustomRolesSupportLevel { - if m != nil { - return m.CustomRolesSupportLevel - } - return Permission_SUPPORTED -} - -// A request to get permissions which can be tested on a resource. -type QueryTestablePermissionsRequest struct { - // Required. The full resource name to query from the list of testable - // permissions. - // - // The name follows the Google Cloud Platform resource format. - // For example, a Cloud Platform project with id `my-project` will be named - // `//cloudresourcemanager.googleapis.com/projects/my-project`. - FullResourceName string `protobuf:"bytes,1,opt,name=full_resource_name,json=fullResourceName" json:"full_resource_name,omitempty"` - // Optional limit on the number of permissions to include in the response. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional pagination token returned in an earlier - // QueryTestablePermissionsRequest. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *QueryTestablePermissionsRequest) Reset() { *m = QueryTestablePermissionsRequest{} } -func (m *QueryTestablePermissionsRequest) String() string { return proto.CompactTextString(m) } -func (*QueryTestablePermissionsRequest) ProtoMessage() {} -func (*QueryTestablePermissionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27} -} - -func (m *QueryTestablePermissionsRequest) GetFullResourceName() string { - if m != nil { - return m.FullResourceName - } - return "" -} - -func (m *QueryTestablePermissionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *QueryTestablePermissionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response containing permissions which can be tested on a resource. -type QueryTestablePermissionsResponse struct { - // The Permissions testable on the requested resource. - Permissions []*Permission `protobuf:"bytes,1,rep,name=permissions" json:"permissions,omitempty"` - // To retrieve the next page of results, set - // `QueryTestableRolesRequest.page_token` to this value. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *QueryTestablePermissionsResponse) Reset() { *m = QueryTestablePermissionsResponse{} } -func (m *QueryTestablePermissionsResponse) String() string { return proto.CompactTextString(m) } -func (*QueryTestablePermissionsResponse) ProtoMessage() {} -func (*QueryTestablePermissionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28} -} - -func (m *QueryTestablePermissionsResponse) GetPermissions() []*Permission { - if m != nil { - return m.Permissions - } - return nil -} - -func (m *QueryTestablePermissionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func init() { - proto.RegisterType((*ServiceAccount)(nil), "google.iam.admin.v1.ServiceAccount") - proto.RegisterType((*CreateServiceAccountRequest)(nil), "google.iam.admin.v1.CreateServiceAccountRequest") - proto.RegisterType((*ListServiceAccountsRequest)(nil), "google.iam.admin.v1.ListServiceAccountsRequest") - proto.RegisterType((*ListServiceAccountsResponse)(nil), "google.iam.admin.v1.ListServiceAccountsResponse") - proto.RegisterType((*GetServiceAccountRequest)(nil), "google.iam.admin.v1.GetServiceAccountRequest") - proto.RegisterType((*DeleteServiceAccountRequest)(nil), "google.iam.admin.v1.DeleteServiceAccountRequest") - proto.RegisterType((*ListServiceAccountKeysRequest)(nil), "google.iam.admin.v1.ListServiceAccountKeysRequest") - proto.RegisterType((*ListServiceAccountKeysResponse)(nil), "google.iam.admin.v1.ListServiceAccountKeysResponse") - proto.RegisterType((*GetServiceAccountKeyRequest)(nil), "google.iam.admin.v1.GetServiceAccountKeyRequest") - proto.RegisterType((*ServiceAccountKey)(nil), "google.iam.admin.v1.ServiceAccountKey") - proto.RegisterType((*CreateServiceAccountKeyRequest)(nil), "google.iam.admin.v1.CreateServiceAccountKeyRequest") - proto.RegisterType((*DeleteServiceAccountKeyRequest)(nil), "google.iam.admin.v1.DeleteServiceAccountKeyRequest") - proto.RegisterType((*SignBlobRequest)(nil), "google.iam.admin.v1.SignBlobRequest") - proto.RegisterType((*SignBlobResponse)(nil), "google.iam.admin.v1.SignBlobResponse") - proto.RegisterType((*SignJwtRequest)(nil), "google.iam.admin.v1.SignJwtRequest") - proto.RegisterType((*SignJwtResponse)(nil), "google.iam.admin.v1.SignJwtResponse") - proto.RegisterType((*Role)(nil), "google.iam.admin.v1.Role") - proto.RegisterType((*QueryGrantableRolesRequest)(nil), "google.iam.admin.v1.QueryGrantableRolesRequest") - proto.RegisterType((*QueryGrantableRolesResponse)(nil), "google.iam.admin.v1.QueryGrantableRolesResponse") - proto.RegisterType((*ListRolesRequest)(nil), "google.iam.admin.v1.ListRolesRequest") - proto.RegisterType((*ListRolesResponse)(nil), "google.iam.admin.v1.ListRolesResponse") - proto.RegisterType((*GetRoleRequest)(nil), "google.iam.admin.v1.GetRoleRequest") - proto.RegisterType((*CreateRoleRequest)(nil), "google.iam.admin.v1.CreateRoleRequest") - proto.RegisterType((*UpdateRoleRequest)(nil), "google.iam.admin.v1.UpdateRoleRequest") - proto.RegisterType((*DeleteRoleRequest)(nil), "google.iam.admin.v1.DeleteRoleRequest") - proto.RegisterType((*UndeleteRoleRequest)(nil), "google.iam.admin.v1.UndeleteRoleRequest") - proto.RegisterType((*Permission)(nil), "google.iam.admin.v1.Permission") - proto.RegisterType((*QueryTestablePermissionsRequest)(nil), "google.iam.admin.v1.QueryTestablePermissionsRequest") - proto.RegisterType((*QueryTestablePermissionsResponse)(nil), "google.iam.admin.v1.QueryTestablePermissionsResponse") - proto.RegisterEnum("google.iam.admin.v1.ServiceAccountKeyAlgorithm", ServiceAccountKeyAlgorithm_name, ServiceAccountKeyAlgorithm_value) - proto.RegisterEnum("google.iam.admin.v1.ServiceAccountPrivateKeyType", ServiceAccountPrivateKeyType_name, ServiceAccountPrivateKeyType_value) - proto.RegisterEnum("google.iam.admin.v1.ServiceAccountPublicKeyType", ServiceAccountPublicKeyType_name, ServiceAccountPublicKeyType_value) - proto.RegisterEnum("google.iam.admin.v1.RoleView", RoleView_name, RoleView_value) - proto.RegisterEnum("google.iam.admin.v1.ListServiceAccountKeysRequest_KeyType", ListServiceAccountKeysRequest_KeyType_name, ListServiceAccountKeysRequest_KeyType_value) - proto.RegisterEnum("google.iam.admin.v1.Role_RoleLaunchStage", Role_RoleLaunchStage_name, Role_RoleLaunchStage_value) - proto.RegisterEnum("google.iam.admin.v1.Permission_PermissionLaunchStage", Permission_PermissionLaunchStage_name, Permission_PermissionLaunchStage_value) - proto.RegisterEnum("google.iam.admin.v1.Permission_CustomRolesSupportLevel", Permission_CustomRolesSupportLevel_name, Permission_CustomRolesSupportLevel_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for IAM service - -type IAMClient interface { - // Lists [ServiceAccounts][google.iam.admin.v1.ServiceAccount] for a project. - ListServiceAccounts(ctx context.Context, in *ListServiceAccountsRequest, opts ...grpc.CallOption) (*ListServiceAccountsResponse, error) - // Gets a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - GetServiceAccount(ctx context.Context, in *GetServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccount, error) - // Creates a [ServiceAccount][google.iam.admin.v1.ServiceAccount] - // and returns it. - CreateServiceAccount(ctx context.Context, in *CreateServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccount, error) - // Updates a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - // - // Currently, only the following fields are updatable: - // `display_name` . - // The `etag` is mandatory. - UpdateServiceAccount(ctx context.Context, in *ServiceAccount, opts ...grpc.CallOption) (*ServiceAccount, error) - // Deletes a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - DeleteServiceAccount(ctx context.Context, in *DeleteServiceAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Lists [ServiceAccountKeys][google.iam.admin.v1.ServiceAccountKey]. - ListServiceAccountKeys(ctx context.Context, in *ListServiceAccountKeysRequest, opts ...grpc.CallOption) (*ListServiceAccountKeysResponse, error) - // Gets the [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey] - // by key id. - GetServiceAccountKey(ctx context.Context, in *GetServiceAccountKeyRequest, opts ...grpc.CallOption) (*ServiceAccountKey, error) - // Creates a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey] - // and returns it. - CreateServiceAccountKey(ctx context.Context, in *CreateServiceAccountKeyRequest, opts ...grpc.CallOption) (*ServiceAccountKey, error) - // Deletes a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey]. - DeleteServiceAccountKey(ctx context.Context, in *DeleteServiceAccountKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Signs a blob using a service account's system-managed private key. - SignBlob(ctx context.Context, in *SignBlobRequest, opts ...grpc.CallOption) (*SignBlobResponse, error) - // Signs a JWT using a service account's system-managed private key. - // - // If no expiry time (`exp`) is provided in the `SignJwtRequest`, IAM sets an - // an expiry time of one hour by default. If you request an expiry time of - // more than one hour, the request will fail. - SignJwt(ctx context.Context, in *SignJwtRequest, opts ...grpc.CallOption) (*SignJwtResponse, error) - // Returns the IAM access control policy for a - // [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Sets the IAM access control policy for a - // [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Tests the specified permissions against the IAM access control policy - // for a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) - // Queries roles that can be granted on a particular resource. - // A role is grantable if it can be used as the role in a binding for a policy - // for that resource. - QueryGrantableRoles(ctx context.Context, in *QueryGrantableRolesRequest, opts ...grpc.CallOption) (*QueryGrantableRolesResponse, error) - // Lists the Roles defined on a resource. - ListRoles(ctx context.Context, in *ListRolesRequest, opts ...grpc.CallOption) (*ListRolesResponse, error) - // Gets a Role definition. - GetRole(ctx context.Context, in *GetRoleRequest, opts ...grpc.CallOption) (*Role, error) - // Creates a new Role. - CreateRole(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*Role, error) - // Updates a Role definition. - UpdateRole(ctx context.Context, in *UpdateRoleRequest, opts ...grpc.CallOption) (*Role, error) - // Soft deletes a role. The role is suspended and cannot be used to create new - // IAM Policy Bindings. - // The Role will not be included in `ListRoles()` unless `show_deleted` is set - // in the `ListRolesRequest`. The Role contains the deleted boolean set. - // Existing Bindings remains, but are inactive. The Role can be undeleted - // within 7 days. After 7 days the Role is deleted and all Bindings associated - // with the role are removed. - DeleteRole(ctx context.Context, in *DeleteRoleRequest, opts ...grpc.CallOption) (*Role, error) - // Undelete a Role, bringing it back in its previous state. - UndeleteRole(ctx context.Context, in *UndeleteRoleRequest, opts ...grpc.CallOption) (*Role, error) - // Lists the permissions testable on a resource. - // A permission is testable if it can be tested for an identity on a resource. - QueryTestablePermissions(ctx context.Context, in *QueryTestablePermissionsRequest, opts ...grpc.CallOption) (*QueryTestablePermissionsResponse, error) -} - -type iAMClient struct { - cc *grpc.ClientConn -} - -func NewIAMClient(cc *grpc.ClientConn) IAMClient { - return &iAMClient{cc} -} - -func (c *iAMClient) ListServiceAccounts(ctx context.Context, in *ListServiceAccountsRequest, opts ...grpc.CallOption) (*ListServiceAccountsResponse, error) { - out := new(ListServiceAccountsResponse) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/ListServiceAccounts", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) GetServiceAccount(ctx context.Context, in *GetServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccount, error) { - out := new(ServiceAccount) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/GetServiceAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) CreateServiceAccount(ctx context.Context, in *CreateServiceAccountRequest, opts ...grpc.CallOption) (*ServiceAccount, error) { - out := new(ServiceAccount) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/CreateServiceAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) UpdateServiceAccount(ctx context.Context, in *ServiceAccount, opts ...grpc.CallOption) (*ServiceAccount, error) { - out := new(ServiceAccount) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/UpdateServiceAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) DeleteServiceAccount(ctx context.Context, in *DeleteServiceAccountRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/DeleteServiceAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) ListServiceAccountKeys(ctx context.Context, in *ListServiceAccountKeysRequest, opts ...grpc.CallOption) (*ListServiceAccountKeysResponse, error) { - out := new(ListServiceAccountKeysResponse) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/ListServiceAccountKeys", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) GetServiceAccountKey(ctx context.Context, in *GetServiceAccountKeyRequest, opts ...grpc.CallOption) (*ServiceAccountKey, error) { - out := new(ServiceAccountKey) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/GetServiceAccountKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) CreateServiceAccountKey(ctx context.Context, in *CreateServiceAccountKeyRequest, opts ...grpc.CallOption) (*ServiceAccountKey, error) { - out := new(ServiceAccountKey) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/CreateServiceAccountKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) DeleteServiceAccountKey(ctx context.Context, in *DeleteServiceAccountKeyRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/DeleteServiceAccountKey", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) SignBlob(ctx context.Context, in *SignBlobRequest, opts ...grpc.CallOption) (*SignBlobResponse, error) { - out := new(SignBlobResponse) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/SignBlob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) SignJwt(ctx context.Context, in *SignJwtRequest, opts ...grpc.CallOption) (*SignJwtResponse, error) { - out := new(SignJwtResponse) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/SignJwt", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) QueryGrantableRoles(ctx context.Context, in *QueryGrantableRolesRequest, opts ...grpc.CallOption) (*QueryGrantableRolesResponse, error) { - out := new(QueryGrantableRolesResponse) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/QueryGrantableRoles", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) ListRoles(ctx context.Context, in *ListRolesRequest, opts ...grpc.CallOption) (*ListRolesResponse, error) { - out := new(ListRolesResponse) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/ListRoles", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) GetRole(ctx context.Context, in *GetRoleRequest, opts ...grpc.CallOption) (*Role, error) { - out := new(Role) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/GetRole", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) CreateRole(ctx context.Context, in *CreateRoleRequest, opts ...grpc.CallOption) (*Role, error) { - out := new(Role) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/CreateRole", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) UpdateRole(ctx context.Context, in *UpdateRoleRequest, opts ...grpc.CallOption) (*Role, error) { - out := new(Role) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/UpdateRole", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) DeleteRole(ctx context.Context, in *DeleteRoleRequest, opts ...grpc.CallOption) (*Role, error) { - out := new(Role) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/DeleteRole", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) UndeleteRole(ctx context.Context, in *UndeleteRoleRequest, opts ...grpc.CallOption) (*Role, error) { - out := new(Role) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/UndeleteRole", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMClient) QueryTestablePermissions(ctx context.Context, in *QueryTestablePermissionsRequest, opts ...grpc.CallOption) (*QueryTestablePermissionsResponse, error) { - out := new(QueryTestablePermissionsResponse) - err := grpc.Invoke(ctx, "/google.iam.admin.v1.IAM/QueryTestablePermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for IAM service - -type IAMServer interface { - // Lists [ServiceAccounts][google.iam.admin.v1.ServiceAccount] for a project. - ListServiceAccounts(context.Context, *ListServiceAccountsRequest) (*ListServiceAccountsResponse, error) - // Gets a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - GetServiceAccount(context.Context, *GetServiceAccountRequest) (*ServiceAccount, error) - // Creates a [ServiceAccount][google.iam.admin.v1.ServiceAccount] - // and returns it. - CreateServiceAccount(context.Context, *CreateServiceAccountRequest) (*ServiceAccount, error) - // Updates a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - // - // Currently, only the following fields are updatable: - // `display_name` . - // The `etag` is mandatory. - UpdateServiceAccount(context.Context, *ServiceAccount) (*ServiceAccount, error) - // Deletes a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - DeleteServiceAccount(context.Context, *DeleteServiceAccountRequest) (*google_protobuf1.Empty, error) - // Lists [ServiceAccountKeys][google.iam.admin.v1.ServiceAccountKey]. - ListServiceAccountKeys(context.Context, *ListServiceAccountKeysRequest) (*ListServiceAccountKeysResponse, error) - // Gets the [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey] - // by key id. - GetServiceAccountKey(context.Context, *GetServiceAccountKeyRequest) (*ServiceAccountKey, error) - // Creates a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey] - // and returns it. - CreateServiceAccountKey(context.Context, *CreateServiceAccountKeyRequest) (*ServiceAccountKey, error) - // Deletes a [ServiceAccountKey][google.iam.admin.v1.ServiceAccountKey]. - DeleteServiceAccountKey(context.Context, *DeleteServiceAccountKeyRequest) (*google_protobuf1.Empty, error) - // Signs a blob using a service account's system-managed private key. - SignBlob(context.Context, *SignBlobRequest) (*SignBlobResponse, error) - // Signs a JWT using a service account's system-managed private key. - // - // If no expiry time (`exp`) is provided in the `SignJwtRequest`, IAM sets an - // an expiry time of one hour by default. If you request an expiry time of - // more than one hour, the request will fail. - SignJwt(context.Context, *SignJwtRequest) (*SignJwtResponse, error) - // Returns the IAM access control policy for a - // [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Sets the IAM access control policy for a - // [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Tests the specified permissions against the IAM access control policy - // for a [ServiceAccount][google.iam.admin.v1.ServiceAccount]. - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) - // Queries roles that can be granted on a particular resource. - // A role is grantable if it can be used as the role in a binding for a policy - // for that resource. - QueryGrantableRoles(context.Context, *QueryGrantableRolesRequest) (*QueryGrantableRolesResponse, error) - // Lists the Roles defined on a resource. - ListRoles(context.Context, *ListRolesRequest) (*ListRolesResponse, error) - // Gets a Role definition. - GetRole(context.Context, *GetRoleRequest) (*Role, error) - // Creates a new Role. - CreateRole(context.Context, *CreateRoleRequest) (*Role, error) - // Updates a Role definition. - UpdateRole(context.Context, *UpdateRoleRequest) (*Role, error) - // Soft deletes a role. The role is suspended and cannot be used to create new - // IAM Policy Bindings. - // The Role will not be included in `ListRoles()` unless `show_deleted` is set - // in the `ListRolesRequest`. The Role contains the deleted boolean set. - // Existing Bindings remains, but are inactive. The Role can be undeleted - // within 7 days. After 7 days the Role is deleted and all Bindings associated - // with the role are removed. - DeleteRole(context.Context, *DeleteRoleRequest) (*Role, error) - // Undelete a Role, bringing it back in its previous state. - UndeleteRole(context.Context, *UndeleteRoleRequest) (*Role, error) - // Lists the permissions testable on a resource. - // A permission is testable if it can be tested for an identity on a resource. - QueryTestablePermissions(context.Context, *QueryTestablePermissionsRequest) (*QueryTestablePermissionsResponse, error) -} - -func RegisterIAMServer(s *grpc.Server, srv IAMServer) { - s.RegisterService(&_IAM_serviceDesc, srv) -} - -func _IAM_ListServiceAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListServiceAccountsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).ListServiceAccounts(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/ListServiceAccounts", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).ListServiceAccounts(ctx, req.(*ListServiceAccountsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_GetServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServiceAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).GetServiceAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/GetServiceAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).GetServiceAccount(ctx, req.(*GetServiceAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_CreateServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateServiceAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).CreateServiceAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/CreateServiceAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).CreateServiceAccount(ctx, req.(*CreateServiceAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_UpdateServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ServiceAccount) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).UpdateServiceAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/UpdateServiceAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).UpdateServiceAccount(ctx, req.(*ServiceAccount)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_DeleteServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteServiceAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).DeleteServiceAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/DeleteServiceAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).DeleteServiceAccount(ctx, req.(*DeleteServiceAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_ListServiceAccountKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListServiceAccountKeysRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).ListServiceAccountKeys(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/ListServiceAccountKeys", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).ListServiceAccountKeys(ctx, req.(*ListServiceAccountKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_GetServiceAccountKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetServiceAccountKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).GetServiceAccountKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/GetServiceAccountKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).GetServiceAccountKey(ctx, req.(*GetServiceAccountKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_CreateServiceAccountKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateServiceAccountKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).CreateServiceAccountKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/CreateServiceAccountKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).CreateServiceAccountKey(ctx, req.(*CreateServiceAccountKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_DeleteServiceAccountKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteServiceAccountKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).DeleteServiceAccountKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/DeleteServiceAccountKey", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).DeleteServiceAccountKey(ctx, req.(*DeleteServiceAccountKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_SignBlob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SignBlobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).SignBlob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/SignBlob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).SignBlob(ctx, req.(*SignBlobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_SignJwt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SignJwtRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).SignJwt(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/SignJwt", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).SignJwt(ctx, req.(*SignJwtRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_QueryGrantableRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGrantableRolesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).QueryGrantableRoles(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/QueryGrantableRoles", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).QueryGrantableRoles(ctx, req.(*QueryGrantableRolesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_ListRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListRolesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).ListRoles(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/ListRoles", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).ListRoles(ctx, req.(*ListRolesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_GetRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).GetRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/GetRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).GetRole(ctx, req.(*GetRoleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_CreateRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).CreateRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/CreateRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).CreateRole(ctx, req.(*CreateRoleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_UpdateRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).UpdateRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/UpdateRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).UpdateRole(ctx, req.(*UpdateRoleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_DeleteRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).DeleteRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/DeleteRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).DeleteRole(ctx, req.(*DeleteRoleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_UndeleteRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UndeleteRoleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).UndeleteRole(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/UndeleteRole", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).UndeleteRole(ctx, req.(*UndeleteRoleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAM_QueryTestablePermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryTestablePermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMServer).QueryTestablePermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.admin.v1.IAM/QueryTestablePermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMServer).QueryTestablePermissions(ctx, req.(*QueryTestablePermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _IAM_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.iam.admin.v1.IAM", - HandlerType: (*IAMServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListServiceAccounts", - Handler: _IAM_ListServiceAccounts_Handler, - }, - { - MethodName: "GetServiceAccount", - Handler: _IAM_GetServiceAccount_Handler, - }, - { - MethodName: "CreateServiceAccount", - Handler: _IAM_CreateServiceAccount_Handler, - }, - { - MethodName: "UpdateServiceAccount", - Handler: _IAM_UpdateServiceAccount_Handler, - }, - { - MethodName: "DeleteServiceAccount", - Handler: _IAM_DeleteServiceAccount_Handler, - }, - { - MethodName: "ListServiceAccountKeys", - Handler: _IAM_ListServiceAccountKeys_Handler, - }, - { - MethodName: "GetServiceAccountKey", - Handler: _IAM_GetServiceAccountKey_Handler, - }, - { - MethodName: "CreateServiceAccountKey", - Handler: _IAM_CreateServiceAccountKey_Handler, - }, - { - MethodName: "DeleteServiceAccountKey", - Handler: _IAM_DeleteServiceAccountKey_Handler, - }, - { - MethodName: "SignBlob", - Handler: _IAM_SignBlob_Handler, - }, - { - MethodName: "SignJwt", - Handler: _IAM_SignJwt_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _IAM_GetIamPolicy_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _IAM_SetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _IAM_TestIamPermissions_Handler, - }, - { - MethodName: "QueryGrantableRoles", - Handler: _IAM_QueryGrantableRoles_Handler, - }, - { - MethodName: "ListRoles", - Handler: _IAM_ListRoles_Handler, - }, - { - MethodName: "GetRole", - Handler: _IAM_GetRole_Handler, - }, - { - MethodName: "CreateRole", - Handler: _IAM_CreateRole_Handler, - }, - { - MethodName: "UpdateRole", - Handler: _IAM_UpdateRole_Handler, - }, - { - MethodName: "DeleteRole", - Handler: _IAM_DeleteRole_Handler, - }, - { - MethodName: "UndeleteRole", - Handler: _IAM_UndeleteRole_Handler, - }, - { - MethodName: "QueryTestablePermissions", - Handler: _IAM_QueryTestablePermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/iam/admin/v1/iam.proto", -} - -func init() { proto.RegisterFile("google/iam/admin/v1/iam.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2430 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x4f, 0x73, 0xdb, 0xc6, - 0x15, 0x37, 0x28, 0xea, 0x0f, 0x9f, 0x24, 0x0a, 0x5a, 0xc9, 0x16, 0x4b, 0x59, 0xb6, 0xb2, 0xb5, - 0x1d, 0x99, 0xb5, 0x45, 0x89, 0x96, 0x6b, 0x57, 0x1e, 0x27, 0xa5, 0x44, 0x9a, 0xa1, 0x45, 0xcb, - 0x2c, 0x48, 0x35, 0x71, 0xff, 0x0c, 0x06, 0x22, 0x56, 0x34, 0x22, 0x10, 0x80, 0x01, 0x50, 0x2a, - 0x9d, 0x49, 0x67, 0xda, 0x43, 0x2f, 0x99, 0x76, 0xda, 0x49, 0x0e, 0x39, 0xa5, 0x33, 0xbd, 0xb4, - 0xb7, 0x5e, 0x3a, 0xd3, 0x69, 0x27, 0xdf, 0xa0, 0xc7, 0x1e, 0xfa, 0x05, 0x32, 0xd3, 0xaf, 0xd0, - 0x63, 0x67, 0x17, 0x80, 0x08, 0x92, 0x00, 0x04, 0x39, 0x69, 0x2f, 0x1a, 0xec, 0xfb, 0xfb, 0xdb, - 0xb7, 0xbb, 0x6f, 0xdf, 0x3e, 0x0a, 0x56, 0xda, 0xba, 0xde, 0x56, 0x49, 0x5e, 0x91, 0x3a, 0x79, - 0x49, 0xee, 0x28, 0x5a, 0xfe, 0x64, 0x93, 0x0e, 0xd6, 0x0d, 0x53, 0xb7, 0x75, 0xb4, 0xe0, 0xb0, - 0xd7, 0x29, 0x85, 0xb1, 0xd7, 0x4f, 0x36, 0xb3, 0x57, 0x5d, 0x1d, 0xc9, 0x50, 0xf2, 0x92, 0xa6, - 0xe9, 0xb6, 0x64, 0x2b, 0xba, 0x66, 0x39, 0x2a, 0xd9, 0x6b, 0x3e, 0x8b, 0x8e, 0x2d, 0xd1, 0xd0, - 0x55, 0xa5, 0xd5, 0x73, 0xf9, 0xd9, 0x41, 0xfe, 0x00, 0x6f, 0xd9, 0xe5, 0xb1, 0xd1, 0x61, 0xf7, - 0x28, 0x4f, 0x3a, 0x86, 0xed, 0x31, 0x57, 0x87, 0x99, 0x47, 0x0a, 0x51, 0x65, 0xb1, 0x23, 0x59, - 0xc7, 0xae, 0xc4, 0xf5, 0x61, 0x09, 0x5b, 0xe9, 0x10, 0xcb, 0x96, 0x3a, 0x86, 0x23, 0x80, 0xff, - 0xc5, 0x41, 0xba, 0x41, 0xcc, 0x13, 0xa5, 0x45, 0x8a, 0xad, 0x96, 0xde, 0xd5, 0x6c, 0x84, 0x20, - 0xa9, 0x49, 0x1d, 0x92, 0xe1, 0x56, 0xb9, 0xb5, 0x94, 0xc0, 0xbe, 0xd1, 0x0a, 0x80, 0x61, 0xea, - 0x1f, 0x92, 0x96, 0x2d, 0x2a, 0x72, 0x26, 0xc1, 0x38, 0x29, 0x97, 0x52, 0x95, 0xd1, 0x32, 0xa4, - 0xba, 0x9a, 0xf2, 0xaa, 0x4b, 0x28, 0x37, 0xc9, 0xb8, 0x53, 0x0e, 0xa1, 0x2a, 0xa3, 0x45, 0x18, - 0x27, 0x1d, 0x49, 0x51, 0x33, 0xe3, 0x8c, 0xe1, 0x0c, 0xd0, 0x5b, 0x30, 0x23, 0x2b, 0x96, 0xa1, - 0x4a, 0x3d, 0x91, 0x79, 0x9b, 0x60, 0xcc, 0x69, 0x97, 0xb6, 0x4f, 0x9d, 0x22, 0x48, 0x12, 0x5b, - 0x6a, 0x67, 0x26, 0x57, 0xb9, 0xb5, 0x19, 0x81, 0x7d, 0xa3, 0x35, 0xe0, 0x75, 0xa9, 0x6b, 0xbf, - 0x2c, 0x88, 0x2d, 0x55, 0x21, 0x1a, 0x83, 0x93, 0x62, 0xaa, 0x69, 0x87, 0xbe, 0xcb, 0xc8, 0x55, - 0x19, 0x7f, 0xc1, 0xc1, 0xf2, 0xae, 0x49, 0x24, 0x9b, 0x0c, 0xce, 0x4f, 0x20, 0xaf, 0xba, 0xc4, - 0x0a, 0x9d, 0xa6, 0xe4, 0x48, 0xf9, 0xa6, 0xe9, 0x52, 0xaa, 0x32, 0xaa, 0xc1, 0x9c, 0xe5, 0xd8, - 0x12, 0x5d, 0x62, 0x66, 0x6c, 0x95, 0x5b, 0x9b, 0x2e, 0x7c, 0x7b, 0x3d, 0x60, 0x57, 0xac, 0x0f, - 0xf9, 0x4d, 0x5b, 0x03, 0x63, 0xac, 0x42, 0xb6, 0xa6, 0x58, 0xf6, 0xa0, 0x94, 0x15, 0x05, 0x6f, - 0x19, 0x52, 0x86, 0xd4, 0x26, 0xa2, 0xa5, 0xbc, 0x26, 0x0c, 0xdd, 0xb8, 0x30, 0x45, 0x09, 0x0d, - 0xe5, 0xb5, 0xb3, 0x44, 0x94, 0x69, 0xeb, 0xc7, 0x44, 0x63, 0xb8, 0xe8, 0x12, 0x49, 0x6d, 0xd2, - 0xa4, 0x04, 0xfc, 0x2b, 0x0e, 0x96, 0x03, 0xdd, 0x59, 0x86, 0xae, 0x59, 0x04, 0xbd, 0x0b, 0x53, - 0xee, 0x9c, 0xac, 0x0c, 0xb7, 0x3a, 0x16, 0x77, 0x52, 0x67, 0x4a, 0xe8, 0x16, 0xcc, 0x69, 0xe4, - 0x67, 0xb6, 0xe8, 0x03, 0xe1, 0x04, 0x70, 0x96, 0x92, 0xeb, 0x67, 0x40, 0xd6, 0x21, 0x53, 0x21, - 0x76, 0xec, 0x35, 0xc1, 0x9b, 0xb0, 0x5c, 0x22, 0x2a, 0xb9, 0xc0, 0x32, 0xd2, 0x4d, 0xbd, 0x32, - 0x3a, 0xd7, 0x3d, 0xd2, 0x8b, 0x8c, 0xee, 0xfb, 0x90, 0x3a, 0x26, 0x3d, 0xd1, 0xee, 0x19, 0xc4, - 0xca, 0x24, 0x56, 0xc7, 0xd6, 0xd2, 0x85, 0xed, 0xc0, 0x10, 0x44, 0x9a, 0x5e, 0xdf, 0x23, 0xbd, - 0x66, 0xcf, 0x20, 0xc2, 0xd4, 0xb1, 0xf3, 0x61, 0xe1, 0x2a, 0x4c, 0xba, 0x44, 0x94, 0x81, 0xc5, - 0xbd, 0xf2, 0x0b, 0xb1, 0xf9, 0xa2, 0x5e, 0x16, 0x0f, 0xf6, 0x1b, 0xf5, 0xf2, 0x6e, 0xf5, 0x49, - 0xb5, 0x5c, 0xe2, 0x2f, 0x21, 0x1e, 0x66, 0x0e, 0x1a, 0x65, 0x41, 0x7c, 0x56, 0xdc, 0x2f, 0x56, - 0xca, 0x25, 0x9e, 0x43, 0x08, 0xd2, 0x8d, 0x17, 0x8d, 0x66, 0xf9, 0xd9, 0x19, 0x2d, 0x81, 0x7f, - 0x02, 0xd7, 0xc2, 0xbc, 0xbb, 0xeb, 0xb8, 0x0d, 0xc9, 0x63, 0xd2, 0xf3, 0xd6, 0xf0, 0x56, 0x8c, - 0x35, 0xdc, 0x23, 0x3d, 0x81, 0xe9, 0xe0, 0x4f, 0x38, 0x58, 0x1e, 0x59, 0x1b, 0xca, 0x8e, 0x88, - 0xda, 0x07, 0x30, 0x67, 0x74, 0x0f, 0x55, 0xa5, 0x25, 0x7a, 0xc1, 0x63, 0xcb, 0x9e, 0x2e, 0x6c, - 0xc4, 0x70, 0x5d, 0x67, 0x9a, 0x5e, 0xc4, 0x66, 0x0d, 0xff, 0x10, 0xff, 0x7d, 0x0c, 0xe6, 0x47, - 0xa0, 0x04, 0x62, 0xf8, 0x31, 0xf0, 0x86, 0xa9, 0x9c, 0x48, 0x36, 0x19, 0x06, 0xb1, 0x19, 0x07, - 0x84, 0xa3, 0xea, 0xa1, 0x48, 0x1b, 0x03, 0x63, 0xd4, 0x84, 0x59, 0x6a, 0x54, 0x52, 0xdb, 0xba, - 0xa9, 0xd8, 0x2f, 0x3b, 0x99, 0x29, 0x66, 0x39, 0x1f, 0x2f, 0xb2, 0x45, 0x4f, 0x4d, 0x98, 0x39, - 0xf6, 0x8d, 0x68, 0x1e, 0xf3, 0x43, 0x96, 0x25, 0x5b, 0x62, 0x67, 0x76, 0xc6, 0xef, 0xbf, 0x24, - 0xd9, 0x12, 0x3d, 0x57, 0xbe, 0x00, 0x33, 0x41, 0x27, 0x21, 0xf6, 0xc3, 0xc5, 0xe4, 0x4a, 0xc0, - 0x9f, 0x48, 0xaa, 0x22, 0x8b, 0xd2, 0x91, 0x4d, 0x4c, 0x91, 0x26, 0x7a, 0x96, 0x8a, 0xa7, 0x0b, - 0x59, 0x0f, 0xaa, 0x77, 0x0b, 0xac, 0x37, 0xbd, 0x5b, 0x40, 0x48, 0x33, 0x9d, 0x22, 0x55, 0xa1, - 0x44, 0xf4, 0x04, 0xe6, 0x1d, 0x2b, 0x87, 0xe4, 0x48, 0x37, 0x89, 0x63, 0x66, 0xfc, 0x5c, 0x33, - 0x73, 0x4c, 0x69, 0x87, 0xe9, 0x50, 0x2a, 0xfe, 0x37, 0x07, 0xd7, 0x82, 0xb2, 0xef, 0x39, 0xbb, - 0xe9, 0xff, 0xbb, 0x92, 0x63, 0xdf, 0xc0, 0x4a, 0xe2, 0x2d, 0xb8, 0x16, 0x94, 0x9f, 0xa2, 0x27, - 0x8a, 0xab, 0x30, 0xd7, 0x50, 0xda, 0xda, 0x8e, 0xaa, 0x1f, 0x46, 0xc5, 0x03, 0xc3, 0xec, 0x61, - 0xcf, 0x26, 0x96, 0x68, 0xeb, 0xa2, 0xa5, 0xb4, 0x9d, 0x94, 0x3a, 0x23, 0x4c, 0x33, 0x62, 0x53, - 0xa7, 0x26, 0x70, 0x05, 0xf8, 0xbe, 0x29, 0x37, 0x0b, 0x5c, 0x86, 0x09, 0x3a, 0x55, 0x45, 0x76, - 0xad, 0x8d, 0x1f, 0x93, 0x5e, 0x55, 0x46, 0x57, 0x21, 0x45, 0xad, 0x48, 0x76, 0xd7, 0x24, 0xae, - 0xa9, 0x3e, 0x01, 0xbf, 0x03, 0x69, 0x6a, 0xe8, 0xe9, 0x69, 0xe4, 0x1d, 0x99, 0x81, 0x49, 0x43, - 0xea, 0xa9, 0xba, 0xe4, 0x5d, 0x90, 0xde, 0x10, 0x57, 0x9c, 0x39, 0x31, 0xfd, 0x68, 0x1c, 0x2b, - 0x00, 0xd4, 0x2d, 0x91, 0xc5, 0x0f, 0x4f, 0x6d, 0xef, 0x9e, 0x75, 0x28, 0x4f, 0x4f, 0x6d, 0xfc, - 0x8f, 0x04, 0x24, 0x05, 0x5d, 0x25, 0x81, 0xfe, 0x17, 0x61, 0xdc, 0x56, 0x6c, 0x95, 0xb8, 0x6a, - 0xce, 0x00, 0xad, 0xc2, 0xb4, 0x4c, 0xac, 0x96, 0xa9, 0x18, 0xb4, 0xf2, 0x72, 0xaf, 0x3f, 0x3f, - 0x09, 0x6d, 0xc2, 0xa2, 0xa2, 0xb5, 0xd4, 0xae, 0x4c, 0x64, 0xd1, 0x20, 0x66, 0x47, 0xb1, 0x2c, - 0x5a, 0xa3, 0x65, 0x26, 0x57, 0xc7, 0xd6, 0x52, 0xc2, 0x82, 0xc7, 0xab, 0xf7, 0x59, 0xe8, 0x5d, - 0x18, 0xb7, 0x6c, 0xa9, 0x4d, 0xdc, 0x23, 0x7f, 0x3b, 0x70, 0xa3, 0x50, 0xa0, 0xec, 0x4f, 0x4d, - 0xea, 0x6a, 0xad, 0x97, 0x0d, 0xaa, 0x20, 0x38, 0x7a, 0x67, 0x15, 0x4c, 0xca, 0x57, 0xc1, 0x64, - 0x60, 0x52, 0x66, 0xfb, 0x45, 0xce, 0x4c, 0xaf, 0x72, 0x6b, 0x53, 0x82, 0x37, 0xc4, 0x07, 0x30, - 0x37, 0x64, 0x07, 0xa5, 0x60, 0xbc, 0x58, 0xab, 0xbf, 0x57, 0xe4, 0x2f, 0xa1, 0x29, 0x48, 0xee, - 0x94, 0x9b, 0x45, 0x9e, 0x43, 0x13, 0x90, 0xa8, 0x14, 0xf9, 0x04, 0x4a, 0x03, 0x94, 0xca, 0x75, - 0xa1, 0xbc, 0x5b, 0x6c, 0x96, 0x4b, 0x7c, 0x12, 0xcd, 0xc0, 0x54, 0xa9, 0xda, 0x28, 0xee, 0xd4, - 0xca, 0x25, 0x7e, 0x1c, 0x4d, 0xc2, 0x58, 0xb9, 0x58, 0xe7, 0x27, 0xf0, 0xdf, 0x38, 0xc8, 0xfe, - 0xa0, 0x4b, 0xcc, 0x5e, 0xc5, 0x94, 0x34, 0x5b, 0x3a, 0x54, 0x09, 0xf5, 0x72, 0x76, 0x15, 0xde, - 0x01, 0x74, 0xd4, 0x55, 0x55, 0xd1, 0x24, 0x96, 0xde, 0x35, 0x5b, 0x44, 0xf4, 0x45, 0x9c, 0xa7, - 0x1c, 0xc1, 0x65, 0xb0, 0x9a, 0x6c, 0x13, 0x92, 0x27, 0x0a, 0x39, 0x75, 0x0f, 0xe5, 0x4a, 0x68, - 0x44, 0x7e, 0xa8, 0x90, 0x53, 0x81, 0x89, 0x0e, 0x56, 0x2d, 0x63, 0x91, 0x55, 0x4b, 0x72, 0xb8, - 0x6a, 0x39, 0x81, 0xe5, 0x40, 0xe8, 0xee, 0xf6, 0xca, 0xc3, 0xb8, 0x49, 0x09, 0xee, 0x6d, 0xf7, - 0xad, 0x50, 0x38, 0x82, 0x23, 0x17, 0xbb, 0x48, 0xf9, 0x92, 0x03, 0x9e, 0x5e, 0xb4, 0x03, 0x91, - 0xba, 0x02, 0x13, 0x86, 0x64, 0x12, 0xcd, 0x76, 0xa3, 0xe3, 0x8e, 0xbe, 0x4e, 0x59, 0x76, 0x16, - 0xcf, 0x64, 0xfc, 0x78, 0xbe, 0x05, 0x33, 0xd6, 0x4b, 0xfd, 0x54, 0xf4, 0x76, 0xd1, 0x04, 0xdb, - 0x45, 0xd3, 0x94, 0x56, 0x72, 0x77, 0x92, 0x0a, 0xf3, 0x3e, 0xf4, 0xff, 0xeb, 0x60, 0xdd, 0x80, - 0x74, 0x85, 0x30, 0x67, 0x51, 0x19, 0xcf, 0x82, 0x79, 0xe7, 0x42, 0xf0, 0x0b, 0x86, 0x85, 0x74, - 0x09, 0x26, 0x29, 0x86, 0x7e, 0x15, 0x3e, 0x41, 0x87, 0x55, 0x19, 0xdd, 0x85, 0x24, 0xfd, 0x72, - 0xeb, 0xee, 0x88, 0x39, 0x30, 0x31, 0xfc, 0x29, 0x07, 0xf3, 0x07, 0x86, 0x3c, 0xe4, 0x35, 0x28, - 0xad, 0x78, 0x86, 0x13, 0xb1, 0x0c, 0xa3, 0x47, 0x30, 0xdd, 0x65, 0x76, 0xd9, 0x6b, 0xcb, 0x85, - 0x33, 0x7a, 0x43, 0x3e, 0xa1, 0x0f, 0xb2, 0x67, 0x92, 0x75, 0x2c, 0x80, 0x23, 0x4e, 0xbf, 0xf1, - 0x23, 0x98, 0x77, 0x56, 0xea, 0x3c, 0x50, 0x5e, 0xfe, 0x48, 0xf4, 0xf3, 0x07, 0x7e, 0x0c, 0x0b, - 0x07, 0x9a, 0xfc, 0xc6, 0xea, 0x5f, 0x8d, 0x01, 0xf4, 0x73, 0xdc, 0x37, 0x9a, 0x61, 0x1f, 0x40, - 0x46, 0xd7, 0xd4, 0x9e, 0xa8, 0x68, 0xa2, 0x61, 0x12, 0x99, 0x1c, 0x29, 0x34, 0xc3, 0x3b, 0x7b, - 0x2e, 0xc9, 0x36, 0xe9, 0x65, 0xca, 0xaf, 0x6a, 0xf5, 0x33, 0x2e, 0xdb, 0xa1, 0x68, 0xcf, 0xcb, - 0xb3, 0xe3, 0xec, 0x14, 0xdc, 0x0f, 0x0c, 0x7e, 0x1f, 0xb4, 0xef, 0x33, 0x20, 0xe7, 0xda, 0x90, - 0x6d, 0x75, 0x2d, 0x5b, 0xef, 0x38, 0x9e, 0x45, 0xab, 0x6b, 0x18, 0xba, 0x69, 0x8b, 0x2a, 0x39, - 0x21, 0x2a, 0x3b, 0x2c, 0xe9, 0xc2, 0x83, 0xf3, 0x3c, 0xec, 0x32, 0x0b, 0x0c, 0x5d, 0xc3, 0xd1, - 0xaf, 0x51, 0x75, 0x61, 0xa9, 0x15, 0xcc, 0xc0, 0x25, 0xb8, 0x1c, 0x88, 0xea, 0x22, 0x19, 0x7c, - 0x0c, 0xbf, 0x07, 0x4b, 0x21, 0x9e, 0xd1, 0x2c, 0xa4, 0x1a, 0x07, 0xf5, 0xfa, 0x73, 0xa1, 0xc9, - 0x9e, 0x0b, 0xd3, 0x30, 0xd9, 0x2c, 0x37, 0x9a, 0xd5, 0xfd, 0x0a, 0xcf, 0xa1, 0x79, 0x98, 0xdd, - 0x7f, 0xde, 0x14, 0xfb, 0xfc, 0x04, 0x2d, 0xe5, 0xaf, 0xb3, 0xcc, 0xd9, 0xa4, 0x15, 0xda, 0xa1, - 0x4a, 0x7c, 0xf7, 0xda, 0x9b, 0x65, 0xfe, 0xaf, 0xf3, 0xf8, 0xfc, 0x35, 0x07, 0xab, 0xe1, 0x68, - 0xdc, 0xfc, 0x54, 0x84, 0x69, 0xff, 0xbd, 0xec, 0x64, 0xa9, 0xeb, 0xe7, 0xac, 0x94, 0xe0, 0xd7, - 0x89, 0x9b, 0xb1, 0x72, 0x12, 0x64, 0xc3, 0xeb, 0x3b, 0xb4, 0x04, 0x0b, 0xf4, 0x91, 0x56, 0xac, - 0x55, 0x86, 0xde, 0x68, 0x8b, 0xc0, 0x7b, 0x0c, 0xa1, 0x51, 0x14, 0x37, 0x37, 0x0a, 0x5b, 0x3c, - 0x37, 0x4c, 0x2d, 0x6c, 0x6c, 0x3d, 0xe4, 0x13, 0x39, 0x15, 0xae, 0x46, 0x15, 0xa7, 0x54, 0x2b, - 0xe0, 0x15, 0xe8, 0x51, 0xeb, 0x7b, 0xbb, 0x8d, 0xcd, 0x82, 0xf8, 0xa4, 0x5a, 0x2b, 0xf3, 0x1c, - 0x5a, 0x85, 0xab, 0x8c, 0x5a, 0x79, 0xfe, 0xbc, 0x52, 0x2b, 0x8b, 0xbb, 0x42, 0xb9, 0x54, 0xde, - 0x6f, 0x56, 0x8b, 0xb5, 0x86, 0x23, 0x91, 0xc8, 0xfd, 0x14, 0x96, 0x23, 0x5e, 0x56, 0x74, 0xf3, - 0x30, 0x03, 0xfb, 0xcf, 0xf7, 0xcb, 0xfc, 0x25, 0x74, 0x05, 0x10, 0x1b, 0x7e, 0x70, 0x7f, 0xe3, - 0x7b, 0x62, 0xbd, 0xfc, 0xcc, 0xf3, 0xb3, 0x04, 0x0b, 0x8c, 0x2e, 0x14, 0xdf, 0x17, 0xeb, 0x07, - 0x3b, 0xb5, 0xea, 0xae, 0xb8, 0x57, 0x7e, 0xc1, 0x27, 0x72, 0xd7, 0x61, 0xca, 0xbb, 0x84, 0xe8, - 0x86, 0xde, 0x29, 0x36, 0xaa, 0xbb, 0xce, 0x86, 0x7e, 0x72, 0x50, 0xab, 0xf1, 0x5c, 0xe1, 0xf3, - 0x2c, 0x8c, 0x55, 0x8b, 0xcf, 0xd0, 0x1f, 0x39, 0x58, 0x08, 0xe8, 0x32, 0xa0, 0x7c, 0xcc, 0x87, - 0xb4, 0xb7, 0x37, 0xb3, 0x1b, 0xf1, 0x15, 0x9c, 0xed, 0x83, 0xef, 0xfe, 0xf2, 0x9f, 0x5f, 0x7d, - 0x9a, 0x78, 0x1b, 0xdd, 0xcc, 0x9f, 0x6c, 0xe6, 0x3f, 0xa2, 0x5b, 0xf9, 0xb1, 0xdb, 0xa0, 0xb2, - 0xf2, 0xb9, 0x8f, 0xf3, 0xd6, 0x10, 0xa2, 0xcf, 0x39, 0x98, 0x1f, 0x79, 0xeb, 0xa2, 0xbb, 0x81, - 0x6e, 0xc3, 0xfa, 0x15, 0xd9, 0x38, 0x2d, 0x12, 0x9c, 0x67, 0xc0, 0x6e, 0xa3, 0xb7, 0x83, 0x80, - 0x0d, 0xe3, 0xca, 0xe7, 0x3e, 0x46, 0xbf, 0xe7, 0x60, 0x31, 0xe8, 0xed, 0x84, 0x82, 0x83, 0x12, - 0xd1, 0xe4, 0x8a, 0x07, 0x70, 0x83, 0x01, 0xcc, 0xe1, 0x78, 0x91, 0xdb, 0xe6, 0x72, 0xe8, 0x33, - 0x0e, 0x16, 0x9d, 0x6b, 0x75, 0x08, 0x61, 0x1c, 0x7f, 0xf1, 0x40, 0x15, 0x18, 0xa8, 0x3b, 0xd9, - 0xb8, 0x51, 0xa3, 0xb0, 0x7e, 0xc7, 0xc1, 0x62, 0xd0, 0x5b, 0x2c, 0x24, 0x70, 0x11, 0x6d, 0xa5, - 0xec, 0x95, 0x91, 0xab, 0xbc, 0xdc, 0x31, 0xec, 0x9e, 0xb7, 0x98, 0xb9, 0xd8, 0x8b, 0xf9, 0x57, - 0x0e, 0xae, 0x04, 0xb7, 0x6c, 0x50, 0xe1, 0xe2, 0xdd, 0xa5, 0xec, 0xbd, 0x0b, 0xe9, 0xb8, 0x47, - 0x63, 0x8b, 0x81, 0x5e, 0x47, 0x77, 0x62, 0x82, 0xce, 0x1f, 0x53, 0x78, 0x7f, 0xe2, 0x60, 0x31, - 0xa8, 0x1b, 0x14, 0x12, 0xcd, 0x88, 0xc6, 0x51, 0x36, 0x66, 0x1b, 0x0a, 0x7f, 0x97, 0x01, 0xdd, - 0x40, 0xeb, 0xf1, 0x80, 0x32, 0x9c, 0x34, 0xc8, 0x7f, 0xe6, 0x60, 0x29, 0xa4, 0xdb, 0x80, 0xee, - 0xc5, 0x3e, 0x34, 0x6f, 0x00, 0xf8, 0x01, 0x03, 0xbc, 0x89, 0x2f, 0x14, 0x59, 0xba, 0x55, 0xbf, - 0xe0, 0x60, 0x29, 0xa4, 0x6d, 0x10, 0x82, 0x38, 0xba, 0xc9, 0x10, 0xba, 0x61, 0xdd, 0x90, 0xe6, - 0x2e, 0x1a, 0xd2, 0xcf, 0x38, 0x98, 0xf2, 0xda, 0x0a, 0xe8, 0x46, 0x70, 0x38, 0x06, 0x1b, 0x18, - 0xd9, 0x9b, 0xe7, 0x48, 0xb9, 0xbb, 0xf1, 0x11, 0x43, 0x74, 0x1f, 0x6f, 0xc4, 0x3d, 0xd9, 0x96, - 0x6b, 0x81, 0xc6, 0xed, 0xb7, 0x1c, 0x4c, 0xba, 0x4d, 0x86, 0xb0, 0x64, 0x33, 0xd0, 0xc2, 0xc8, - 0xde, 0x88, 0x16, 0x72, 0x31, 0x6d, 0x33, 0x4c, 0x5b, 0x38, 0x7f, 0x11, 0x4c, 0x4f, 0x4f, 0x6d, - 0x0a, 0xe9, 0x13, 0x0e, 0x66, 0x2a, 0xc4, 0xae, 0x4a, 0x9d, 0x3a, 0xfb, 0xe5, 0x06, 0x61, 0xbf, - 0x4b, 0xe7, 0x64, 0x9c, 0x31, 0x3d, 0x58, 0x97, 0x87, 0x64, 0x1c, 0x2e, 0xfe, 0x3e, 0xc3, 0xb1, - 0x8d, 0x1f, 0x32, 0x1c, 0x5e, 0x61, 0x76, 0x0e, 0x96, 0xb6, 0xdf, 0xf9, 0x6f, 0x38, 0x98, 0x69, - 0x44, 0xa1, 0x69, 0xc4, 0x47, 0xb3, 0xcb, 0xd0, 0x3c, 0xbe, 0x18, 0x1a, 0xcb, 0x67, 0x9f, 0x86, - 0xe7, 0x2f, 0x1c, 0x20, 0x5a, 0xf6, 0x51, 0xa2, 0xaf, 0x54, 0x5b, 0x1b, 0x72, 0x39, 0x2a, 0xe2, - 0x81, 0xbb, 0x1d, 0x43, 0xd2, 0x5d, 0xc6, 0x2a, 0x03, 0xbc, 0x8b, 0xdf, 0xb9, 0x08, 0x60, 0x7b, - 0xc4, 0x1e, 0x85, 0xfd, 0x07, 0x0e, 0x16, 0x02, 0x5a, 0x0f, 0x21, 0x95, 0x4c, 0x78, 0x7f, 0x25, - 0xa4, 0x92, 0x89, 0xe8, 0x6a, 0xe0, 0x35, 0x36, 0x0b, 0x8c, 0x57, 0xe8, 0x2c, 0xd8, 0x23, 0x66, - 0xfb, 0xd5, 0xa8, 0x38, 0x05, 0xd9, 0x81, 0xd4, 0xd9, 0x3b, 0x1f, 0xdd, 0x0c, 0xbd, 0x1a, 0x06, - 0xf0, 0xdc, 0x3a, 0x4f, 0xcc, 0x45, 0x31, 0xcf, 0x50, 0x4c, 0xa3, 0xd4, 0x19, 0x0a, 0x44, 0x60, - 0xd2, 0x7d, 0xe8, 0x87, 0x9c, 0xbd, 0xc1, 0x36, 0x40, 0x36, 0xfc, 0x15, 0x8d, 0xb3, 0xcc, 0xfa, - 0x22, 0x42, 0xfd, 0x03, 0xc7, 0x7c, 0xd0, 0xd4, 0xf3, 0x73, 0x80, 0x7e, 0xa7, 0x00, 0xdd, 0x8a, - 0xc8, 0xdf, 0x31, 0x9d, 0xb9, 0xa5, 0x21, 0xc6, 0xcc, 0x99, 0xd3, 0x62, 0x78, 0xac, 0x9b, 0x6d, - 0x49, 0x53, 0x5e, 0x3b, 0xbf, 0xd4, 0xd2, 0xd4, 0x6c, 0x7a, 0x51, 0xfd, 0x05, 0x07, 0xd0, 0x6f, - 0x1a, 0x84, 0x00, 0x18, 0xe9, 0x2a, 0x44, 0x01, 0x70, 0x2b, 0xac, 0x02, 0xee, 0xcf, 0x76, 0xc8, - 0x7d, 0xde, 0x9b, 0xfd, 0xb6, 0xd3, 0x5f, 0xf8, 0x08, 0xa0, 0xdf, 0x22, 0x08, 0x81, 0x30, 0xd2, - 0x43, 0x88, 0x82, 0x90, 0x63, 0x10, 0x6e, 0xe4, 0x62, 0x40, 0x60, 0x19, 0xcd, 0xdf, 0x63, 0x18, - 0x3c, 0xac, 0xfd, 0x10, 0x8c, 0xb6, 0x21, 0xa2, 0x10, 0xb8, 0x37, 0x11, 0xfe, 0x4e, 0x8c, 0x20, - 0x74, 0x5d, 0xd3, 0x74, 0x39, 0xbe, 0xe4, 0x20, 0x13, 0xf6, 0x78, 0x44, 0x5b, 0xe1, 0xa7, 0x2b, - 0xfc, 0xe5, 0x9b, 0xbd, 0x7f, 0x41, 0x2d, 0xf7, 0x48, 0xdc, 0x63, 0x33, 0xb8, 0x8b, 0xd7, 0xd8, - 0xcf, 0xf4, 0xbe, 0x7c, 0xf1, 0x2a, 0x44, 0x73, 0x9b, 0xcb, 0xed, 0x1c, 0xc2, 0x52, 0x4b, 0xef, - 0x04, 0x39, 0xdc, 0x99, 0xa2, 0x69, 0x87, 0x5e, 0xd7, 0x75, 0xee, 0x47, 0x0f, 0x5d, 0x81, 0xb6, - 0xae, 0x4a, 0x5a, 0x7b, 0x5d, 0x37, 0xdb, 0xf9, 0x36, 0xd1, 0xd8, 0x65, 0x9e, 0x77, 0x58, 0x92, - 0xa1, 0x58, 0x03, 0xff, 0x95, 0xf0, 0x88, 0x7d, 0xfc, 0x87, 0xe3, 0x0e, 0x27, 0x98, 0xdc, 0xbd, - 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x75, 0xcc, 0x0e, 0xa5, 0xbc, 0x20, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/iam/v1/iam_policy.pb.go b/vendor/google.golang.org/genproto/googleapis/iam/v1/iam_policy.pb.go deleted file mode 100644 index 913c7160..00000000 --- a/vendor/google.golang.org/genproto/googleapis/iam/v1/iam_policy.pb.go +++ /dev/null @@ -1,338 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/iam/v1/iam_policy.proto - -/* -Package iam is a generated protocol buffer package. - -It is generated from these files: - google/iam/v1/iam_policy.proto - google/iam/v1/policy.proto - -It has these top-level messages: - SetIamPolicyRequest - GetIamPolicyRequest - TestIamPermissionsRequest - TestIamPermissionsResponse - Policy - Binding - PolicyDelta - BindingDelta -*/ -package iam - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Request message for `SetIamPolicy` method. -type SetIamPolicyRequest struct { - // REQUIRED: The resource for which the policy is being specified. - // `resource` is usually specified as a path. For example, a Project - // resource is specified as `projects/{project}`. - Resource string `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` - // REQUIRED: The complete policy to be applied to the `resource`. The size of - // the policy is limited to a few 10s of KB. An empty policy is a - // valid policy but certain Cloud Platform services (such as Projects) - // might reject them. - Policy *Policy `protobuf:"bytes,2,opt,name=policy" json:"policy,omitempty"` -} - -func (m *SetIamPolicyRequest) Reset() { *m = SetIamPolicyRequest{} } -func (m *SetIamPolicyRequest) String() string { return proto.CompactTextString(m) } -func (*SetIamPolicyRequest) ProtoMessage() {} -func (*SetIamPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *SetIamPolicyRequest) GetResource() string { - if m != nil { - return m.Resource - } - return "" -} - -func (m *SetIamPolicyRequest) GetPolicy() *Policy { - if m != nil { - return m.Policy - } - return nil -} - -// Request message for `GetIamPolicy` method. -type GetIamPolicyRequest struct { - // REQUIRED: The resource for which the policy is being requested. - // `resource` is usually specified as a path. For example, a Project - // resource is specified as `projects/{project}`. - Resource string `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` -} - -func (m *GetIamPolicyRequest) Reset() { *m = GetIamPolicyRequest{} } -func (m *GetIamPolicyRequest) String() string { return proto.CompactTextString(m) } -func (*GetIamPolicyRequest) ProtoMessage() {} -func (*GetIamPolicyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *GetIamPolicyRequest) GetResource() string { - if m != nil { - return m.Resource - } - return "" -} - -// Request message for `TestIamPermissions` method. -type TestIamPermissionsRequest struct { - // REQUIRED: The resource for which the policy detail is being requested. - // `resource` is usually specified as a path. For example, a Project - // resource is specified as `projects/{project}`. - Resource string `protobuf:"bytes,1,opt,name=resource" json:"resource,omitempty"` - // The set of permissions to check for the `resource`. Permissions with - // wildcards (such as '*' or 'storage.*') are not allowed. For more - // information see - // [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). - Permissions []string `protobuf:"bytes,2,rep,name=permissions" json:"permissions,omitempty"` -} - -func (m *TestIamPermissionsRequest) Reset() { *m = TestIamPermissionsRequest{} } -func (m *TestIamPermissionsRequest) String() string { return proto.CompactTextString(m) } -func (*TestIamPermissionsRequest) ProtoMessage() {} -func (*TestIamPermissionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *TestIamPermissionsRequest) GetResource() string { - if m != nil { - return m.Resource - } - return "" -} - -func (m *TestIamPermissionsRequest) GetPermissions() []string { - if m != nil { - return m.Permissions - } - return nil -} - -// Response message for `TestIamPermissions` method. -type TestIamPermissionsResponse struct { - // A subset of `TestPermissionsRequest.permissions` that the caller is - // allowed. - Permissions []string `protobuf:"bytes,1,rep,name=permissions" json:"permissions,omitempty"` -} - -func (m *TestIamPermissionsResponse) Reset() { *m = TestIamPermissionsResponse{} } -func (m *TestIamPermissionsResponse) String() string { return proto.CompactTextString(m) } -func (*TestIamPermissionsResponse) ProtoMessage() {} -func (*TestIamPermissionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *TestIamPermissionsResponse) GetPermissions() []string { - if m != nil { - return m.Permissions - } - return nil -} - -func init() { - proto.RegisterType((*SetIamPolicyRequest)(nil), "google.iam.v1.SetIamPolicyRequest") - proto.RegisterType((*GetIamPolicyRequest)(nil), "google.iam.v1.GetIamPolicyRequest") - proto.RegisterType((*TestIamPermissionsRequest)(nil), "google.iam.v1.TestIamPermissionsRequest") - proto.RegisterType((*TestIamPermissionsResponse)(nil), "google.iam.v1.TestIamPermissionsResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for IAMPolicy service - -type IAMPolicyClient interface { - // Sets the access control policy on the specified resource. Replaces any - // existing policy. - SetIamPolicy(ctx context.Context, in *SetIamPolicyRequest, opts ...grpc.CallOption) (*Policy, error) - // Gets the access control policy for a resource. - // Returns an empty policy if the resource exists and does not have a policy - // set. - GetIamPolicy(ctx context.Context, in *GetIamPolicyRequest, opts ...grpc.CallOption) (*Policy, error) - // Returns permissions that a caller has on the specified resource. - // If the resource does not exist, this will return an empty set of - // permissions, not a NOT_FOUND error. - TestIamPermissions(ctx context.Context, in *TestIamPermissionsRequest, opts ...grpc.CallOption) (*TestIamPermissionsResponse, error) -} - -type iAMPolicyClient struct { - cc *grpc.ClientConn -} - -func NewIAMPolicyClient(cc *grpc.ClientConn) IAMPolicyClient { - return &iAMPolicyClient{cc} -} - -func (c *iAMPolicyClient) SetIamPolicy(ctx context.Context, in *SetIamPolicyRequest, opts ...grpc.CallOption) (*Policy, error) { - out := new(Policy) - err := grpc.Invoke(ctx, "/google.iam.v1.IAMPolicy/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMPolicyClient) GetIamPolicy(ctx context.Context, in *GetIamPolicyRequest, opts ...grpc.CallOption) (*Policy, error) { - out := new(Policy) - err := grpc.Invoke(ctx, "/google.iam.v1.IAMPolicy/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *iAMPolicyClient) TestIamPermissions(ctx context.Context, in *TestIamPermissionsRequest, opts ...grpc.CallOption) (*TestIamPermissionsResponse, error) { - out := new(TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.iam.v1.IAMPolicy/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for IAMPolicy service - -type IAMPolicyServer interface { - // Sets the access control policy on the specified resource. Replaces any - // existing policy. - SetIamPolicy(context.Context, *SetIamPolicyRequest) (*Policy, error) - // Gets the access control policy for a resource. - // Returns an empty policy if the resource exists and does not have a policy - // set. - GetIamPolicy(context.Context, *GetIamPolicyRequest) (*Policy, error) - // Returns permissions that a caller has on the specified resource. - // If the resource does not exist, this will return an empty set of - // permissions, not a NOT_FOUND error. - TestIamPermissions(context.Context, *TestIamPermissionsRequest) (*TestIamPermissionsResponse, error) -} - -func RegisterIAMPolicyServer(s *grpc.Server, srv IAMPolicyServer) { - s.RegisterService(&_IAMPolicy_serviceDesc, srv) -} - -func _IAMPolicy_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMPolicyServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.v1.IAMPolicy/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMPolicyServer).SetIamPolicy(ctx, req.(*SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAMPolicy_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMPolicyServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.v1.IAMPolicy/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMPolicyServer).GetIamPolicy(ctx, req.(*GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _IAMPolicy_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(IAMPolicyServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.iam.v1.IAMPolicy/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(IAMPolicyServer).TestIamPermissions(ctx, req.(*TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _IAMPolicy_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.iam.v1.IAMPolicy", - HandlerType: (*IAMPolicyServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SetIamPolicy", - Handler: _IAMPolicy_SetIamPolicy_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _IAMPolicy_GetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _IAMPolicy_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/iam/v1/iam_policy.proto", -} - -func init() { proto.RegisterFile("google/iam/v1/iam_policy.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 411 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0xcf, 0x4c, 0xcc, 0xd5, 0x2f, 0x33, 0x04, 0x51, 0xf1, 0x05, 0xf9, 0x39, 0x99, - 0xc9, 0x95, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0xbc, 0x10, 0x79, 0xbd, 0xcc, 0xc4, 0x5c, - 0xbd, 0x32, 0x43, 0x29, 0x19, 0xa8, 0xf2, 0xc4, 0x82, 0x4c, 0xfd, 0xc4, 0xbc, 0xbc, 0xfc, 0x92, - 0xc4, 0x92, 0xcc, 0xfc, 0xbc, 0x62, 0x88, 0x62, 0x29, 0x29, 0x54, 0xc3, 0x90, 0x0d, 0x52, 0x4a, - 0xe0, 0x12, 0x0e, 0x4e, 0x2d, 0xf1, 0x4c, 0xcc, 0x0d, 0x00, 0x8b, 0x06, 0xa5, 0x16, 0x96, 0xa6, - 0x16, 0x97, 0x08, 0x49, 0x71, 0x71, 0x14, 0xa5, 0x16, 0xe7, 0x97, 0x16, 0x25, 0xa7, 0x4a, 0x30, - 0x2a, 0x30, 0x6a, 0x70, 0x06, 0xc1, 0xf9, 0x42, 0xba, 0x5c, 0x6c, 0x10, 0x23, 0x24, 0x98, 0x14, - 0x18, 0x35, 0xb8, 0x8d, 0x44, 0xf5, 0x50, 0x1c, 0xa3, 0x07, 0x35, 0x09, 0xaa, 0x48, 0xc9, 0x90, - 0x4b, 0xd8, 0x9d, 0x34, 0x1b, 0x94, 0x22, 0xb9, 0x24, 0x43, 0x52, 0x8b, 0xc1, 0x7a, 0x52, 0x8b, - 0x72, 0x33, 0x8b, 0x8b, 0x41, 0x9e, 0x21, 0xc6, 0x69, 0x0a, 0x5c, 0xdc, 0x05, 0x08, 0x1d, 0x12, - 0x4c, 0x0a, 0xcc, 0x1a, 0x9c, 0x41, 0xc8, 0x42, 0x4a, 0x76, 0x5c, 0x52, 0xd8, 0x8c, 0x2e, 0x2e, - 0xc8, 0xcf, 0x2b, 0xc6, 0xd0, 0xcf, 0x88, 0xa1, 0xdf, 0x68, 0x0a, 0x33, 0x17, 0xa7, 0xa7, 0xa3, - 0x2f, 0xc4, 0x2f, 0x42, 0x25, 0x5c, 0x3c, 0xc8, 0xa1, 0x27, 0xa4, 0x84, 0x16, 0x14, 0x58, 0x82, - 0x56, 0x0a, 0x7b, 0x70, 0x29, 0x69, 0x36, 0x5d, 0x7e, 0x32, 0x99, 0x49, 0x59, 0x49, 0x0e, 0x14, - 0x45, 0xd5, 0x30, 0x1f, 0xd9, 0x6a, 0x69, 0xd5, 0x5a, 0x15, 0x23, 0x99, 0x62, 0xc5, 0xa8, 0x05, - 0xb2, 0xd5, 0x1d, 0x9f, 0xad, 0xee, 0x54, 0xb1, 0x35, 0x1d, 0xcd, 0xd6, 0x59, 0x8c, 0x5c, 0x42, - 0x98, 0x41, 0x27, 0xa4, 0x81, 0x66, 0x30, 0xce, 0x88, 0x93, 0xd2, 0x24, 0x42, 0x25, 0x24, 0x1e, - 0x94, 0xf4, 0xc1, 0xce, 0xd2, 0x54, 0x52, 0xc1, 0x74, 0x56, 0x09, 0x86, 0x2e, 0x2b, 0x46, 0x2d, - 0xa7, 0x36, 0x46, 0x2e, 0xc1, 0xe4, 0xfc, 0x5c, 0x54, 0x1b, 0x9c, 0xf8, 0xe0, 0x1e, 0x08, 0x00, - 0x25, 0xf6, 0x00, 0xc6, 0x28, 0x03, 0xa8, 0x82, 0xf4, 0xfc, 0x9c, 0xc4, 0xbc, 0x74, 0xbd, 0xfc, - 0xa2, 0x74, 0xfd, 0xf4, 0xd4, 0x3c, 0x70, 0x56, 0xd0, 0x87, 0x48, 0x25, 0x16, 0x64, 0x16, 0x43, - 0x73, 0x8a, 0x75, 0x66, 0x62, 0xee, 0x0f, 0x46, 0xc6, 0x55, 0x4c, 0xc2, 0xee, 0x10, 0x5d, 0xce, - 0x39, 0xf9, 0xa5, 0x29, 0x7a, 0x9e, 0x89, 0xb9, 0x7a, 0x61, 0x86, 0xa7, 0x60, 0xa2, 0x31, 0x60, - 0xd1, 0x18, 0xcf, 0xc4, 0xdc, 0x98, 0x30, 0xc3, 0x24, 0x36, 0xb0, 0x59, 0xc6, 0x80, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xea, 0x62, 0x8f, 0x22, 0xc1, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/iam/v1/logging/audit_data.pb.go b/vendor/google.golang.org/genproto/googleapis/iam/v1/logging/audit_data.pb.go deleted file mode 100644 index b22765a1..00000000 --- a/vendor/google.golang.org/genproto/googleapis/iam/v1/logging/audit_data.pb.go +++ /dev/null @@ -1,75 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/iam/v1/logging/audit_data.proto - -/* -Package logging is a generated protocol buffer package. - -It is generated from these files: - google/iam/v1/logging/audit_data.proto - -It has these top-level messages: - AuditData -*/ -package logging - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Audit log information specific to Cloud IAM. This message is serialized -// as an `Any` type in the `ServiceData` message of an -// `AuditLog` message. -type AuditData struct { - // Policy delta between the original policy and the newly set policy. - PolicyDelta *google_iam_v1.PolicyDelta `protobuf:"bytes,2,opt,name=policy_delta,json=policyDelta" json:"policy_delta,omitempty"` -} - -func (m *AuditData) Reset() { *m = AuditData{} } -func (m *AuditData) String() string { return proto.CompactTextString(m) } -func (*AuditData) ProtoMessage() {} -func (*AuditData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *AuditData) GetPolicyDelta() *google_iam_v1.PolicyDelta { - if m != nil { - return m.PolicyDelta - } - return nil -} - -func init() { - proto.RegisterType((*AuditData)(nil), "google.iam.v1.logging.AuditData") -} - -func init() { proto.RegisterFile("google/iam/v1/logging/audit_data.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 236 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xb1, 0x4a, 0x04, 0x31, - 0x10, 0x86, 0xd9, 0x2b, 0x04, 0x73, 0x62, 0x71, 0x20, 0x68, 0xb4, 0x10, 0x0b, 0xb1, 0x9a, 0xb0, - 0x5a, 0xaa, 0x85, 0xe7, 0x81, 0x28, 0x16, 0x8b, 0x85, 0x85, 0xcd, 0x31, 0x5e, 0x96, 0x61, 0x20, - 0xc9, 0x84, 0xbb, 0xdc, 0x82, 0x8f, 0xe0, 0xab, 0xf8, 0x94, 0xb2, 0x9b, 0xa0, 0xac, 0x58, 0x85, - 0xf0, 0x7f, 0xff, 0x7c, 0xc3, 0xa8, 0x73, 0x12, 0x21, 0xd7, 0x1a, 0x46, 0x6f, 0xba, 0xda, 0x38, - 0x21, 0xe2, 0x40, 0x06, 0xb7, 0x96, 0xd3, 0xd2, 0x62, 0x42, 0x88, 0x6b, 0x49, 0x32, 0x3b, 0xc8, - 0x1c, 0x30, 0x7a, 0xe8, 0x6a, 0x28, 0x9c, 0x3e, 0x29, 0x75, 0x8c, 0x6c, 0x30, 0x04, 0x49, 0x98, - 0x58, 0xc2, 0x26, 0x97, 0xb4, 0x1e, 0x0f, 0x8f, 0xe2, 0x78, 0xf5, 0x91, 0xb3, 0xb3, 0x27, 0xb5, - 0x7b, 0xd7, 0x4b, 0x16, 0x98, 0x70, 0x76, 0xab, 0xf6, 0x72, 0xb8, 0xb4, 0xad, 0x4b, 0x78, 0x38, - 0x39, 0xad, 0x2e, 0xa6, 0x97, 0x1a, 0xc6, 0xd2, 0x66, 0x40, 0x16, 0x3d, 0xf1, 0x32, 0x8d, 0xbf, - 0x9f, 0xf9, 0x67, 0xa5, 0x8e, 0x56, 0xe2, 0xe1, 0xdf, 0x1d, 0xe7, 0xfb, 0x3f, 0x9e, 0xa6, 0x37, - 0x37, 0xd5, 0xdb, 0x4d, 0x01, 0x49, 0x1c, 0x06, 0x02, 0x59, 0x93, 0xa1, 0x36, 0x0c, 0x7b, 0x99, - 0x1c, 0x61, 0xe4, 0xcd, 0x9f, 0x9b, 0x5c, 0x97, 0xf7, 0x6b, 0x72, 0xfc, 0x90, 0xeb, 0xf7, 0x4e, - 0xb6, 0x16, 0x1e, 0xd1, 0xc3, 0x6b, 0x0d, 0xcf, 0x39, 0x7d, 0xdf, 0x19, 0xc6, 0x5c, 0x7d, 0x07, - 0x00, 0x00, 0xff, 0xff, 0x29, 0xf1, 0xcb, 0x3a, 0x59, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/iam/v1/policy.pb.go b/vendor/google.golang.org/genproto/googleapis/iam/v1/policy.pb.go deleted file mode 100644 index dde2c408..00000000 --- a/vendor/google.golang.org/genproto/googleapis/iam/v1/policy.pb.go +++ /dev/null @@ -1,270 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/iam/v1/policy.proto - -package iam - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The type of action performed on a Binding in a policy. -type BindingDelta_Action int32 - -const ( - // Unspecified. - BindingDelta_ACTION_UNSPECIFIED BindingDelta_Action = 0 - // Addition of a Binding. - BindingDelta_ADD BindingDelta_Action = 1 - // Removal of a Binding. - BindingDelta_REMOVE BindingDelta_Action = 2 -) - -var BindingDelta_Action_name = map[int32]string{ - 0: "ACTION_UNSPECIFIED", - 1: "ADD", - 2: "REMOVE", -} -var BindingDelta_Action_value = map[string]int32{ - "ACTION_UNSPECIFIED": 0, - "ADD": 1, - "REMOVE": 2, -} - -func (x BindingDelta_Action) String() string { - return proto.EnumName(BindingDelta_Action_name, int32(x)) -} -func (BindingDelta_Action) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} } - -// Defines an Identity and Access Management (IAM) policy. It is used to -// specify access control policies for Cloud Platform resources. -// -// -// A `Policy` consists of a list of `bindings`. A `Binding` binds a list of -// `members` to a `role`, where the members can be user accounts, Google groups, -// Google domains, and service accounts. A `role` is a named list of permissions -// defined by IAM. -// -// **Example** -// -// { -// "bindings": [ -// { -// "role": "roles/owner", -// "members": [ -// "user:mike@example.com", -// "group:admins@example.com", -// "domain:google.com", -// "serviceAccount:my-other-app@appspot.gserviceaccount.com", -// ] -// }, -// { -// "role": "roles/viewer", -// "members": ["user:sean@example.com"] -// } -// ] -// } -// -// For a description of IAM and its features, see the -// [IAM developer's guide](https://cloud.google.com/iam). -type Policy struct { - // Version of the `Policy`. The default version is 0. - Version int32 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"` - // Associates a list of `members` to a `role`. - // Multiple `bindings` must not be specified for the same `role`. - // `bindings` with no members will result in an error. - Bindings []*Binding `protobuf:"bytes,4,rep,name=bindings" json:"bindings,omitempty"` - // `etag` is used for optimistic concurrency control as a way to help - // prevent simultaneous updates of a policy from overwriting each other. - // It is strongly suggested that systems make use of the `etag` in the - // read-modify-write cycle to perform policy updates in order to avoid race - // conditions: An `etag` is returned in the response to `getIamPolicy`, and - // systems are expected to put that etag in the request to `setIamPolicy` to - // ensure that their change will be applied to the same version of the policy. - // - // If no `etag` is provided in the call to `setIamPolicy`, then the existing - // policy is overwritten blindly. - Etag []byte `protobuf:"bytes,3,opt,name=etag,proto3" json:"etag,omitempty"` -} - -func (m *Policy) Reset() { *m = Policy{} } -func (m *Policy) String() string { return proto.CompactTextString(m) } -func (*Policy) ProtoMessage() {} -func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Policy) GetVersion() int32 { - if m != nil { - return m.Version - } - return 0 -} - -func (m *Policy) GetBindings() []*Binding { - if m != nil { - return m.Bindings - } - return nil -} - -func (m *Policy) GetEtag() []byte { - if m != nil { - return m.Etag - } - return nil -} - -// Associates `members` with a `role`. -type Binding struct { - // Role that is assigned to `members`. - // For example, `roles/viewer`, `roles/editor`, or `roles/owner`. - // Required - Role string `protobuf:"bytes,1,opt,name=role" json:"role,omitempty"` - // Specifies the identities requesting access for a Cloud Platform resource. - // `members` can have the following values: - // - // * `allUsers`: A special identifier that represents anyone who is - // on the internet; with or without a Google account. - // - // * `allAuthenticatedUsers`: A special identifier that represents anyone - // who is authenticated with a Google account or a service account. - // - // * `user:{emailid}`: An email address that represents a specific Google - // account. For example, `alice@gmail.com` or `joe@example.com`. - // - // - // * `serviceAccount:{emailid}`: An email address that represents a service - // account. For example, `my-other-app@appspot.gserviceaccount.com`. - // - // * `group:{emailid}`: An email address that represents a Google group. - // For example, `admins@example.com`. - // - // * `domain:{domain}`: A Google Apps domain name that represents all the - // users of that domain. For example, `google.com` or `example.com`. - // - // - Members []string `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"` -} - -func (m *Binding) Reset() { *m = Binding{} } -func (m *Binding) String() string { return proto.CompactTextString(m) } -func (*Binding) ProtoMessage() {} -func (*Binding) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *Binding) GetRole() string { - if m != nil { - return m.Role - } - return "" -} - -func (m *Binding) GetMembers() []string { - if m != nil { - return m.Members - } - return nil -} - -// The difference delta between two policies. -type PolicyDelta struct { - // The delta for Bindings between two policies. - BindingDeltas []*BindingDelta `protobuf:"bytes,1,rep,name=binding_deltas,json=bindingDeltas" json:"binding_deltas,omitempty"` -} - -func (m *PolicyDelta) Reset() { *m = PolicyDelta{} } -func (m *PolicyDelta) String() string { return proto.CompactTextString(m) } -func (*PolicyDelta) ProtoMessage() {} -func (*PolicyDelta) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *PolicyDelta) GetBindingDeltas() []*BindingDelta { - if m != nil { - return m.BindingDeltas - } - return nil -} - -// One delta entry for Binding. Each individual change (only one member in each -// entry) to a binding will be a separate entry. -type BindingDelta struct { - // The action that was performed on a Binding. - // Required - Action BindingDelta_Action `protobuf:"varint,1,opt,name=action,enum=google.iam.v1.BindingDelta_Action" json:"action,omitempty"` - // Role that is assigned to `members`. - // For example, `roles/viewer`, `roles/editor`, or `roles/owner`. - // Required - Role string `protobuf:"bytes,2,opt,name=role" json:"role,omitempty"` - // A single identity requesting access for a Cloud Platform resource. - // Follows the same format of Binding.members. - // Required - Member string `protobuf:"bytes,3,opt,name=member" json:"member,omitempty"` -} - -func (m *BindingDelta) Reset() { *m = BindingDelta{} } -func (m *BindingDelta) String() string { return proto.CompactTextString(m) } -func (*BindingDelta) ProtoMessage() {} -func (*BindingDelta) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *BindingDelta) GetAction() BindingDelta_Action { - if m != nil { - return m.Action - } - return BindingDelta_ACTION_UNSPECIFIED -} - -func (m *BindingDelta) GetRole() string { - if m != nil { - return m.Role - } - return "" -} - -func (m *BindingDelta) GetMember() string { - if m != nil { - return m.Member - } - return "" -} - -func init() { - proto.RegisterType((*Policy)(nil), "google.iam.v1.Policy") - proto.RegisterType((*Binding)(nil), "google.iam.v1.Binding") - proto.RegisterType((*PolicyDelta)(nil), "google.iam.v1.PolicyDelta") - proto.RegisterType((*BindingDelta)(nil), "google.iam.v1.BindingDelta") - proto.RegisterEnum("google.iam.v1.BindingDelta_Action", BindingDelta_Action_name, BindingDelta_Action_value) -} - -func init() { proto.RegisterFile("google/iam/v1/policy.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 403 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0x4d, 0xab, 0x13, 0x31, - 0x14, 0x35, 0xed, 0x73, 0x6a, 0xef, 0xfb, 0xa0, 0x46, 0x28, 0xc3, 0xd3, 0x45, 0x99, 0x55, 0x57, - 0x19, 0x5b, 0x11, 0x41, 0x57, 0xfd, 0x18, 0x65, 0x16, 0xbe, 0x37, 0x46, 0xed, 0x42, 0x0a, 0x8f, - 0x4c, 0x1b, 0x42, 0x64, 0x92, 0x0c, 0x33, 0x63, 0xc1, 0xb5, 0xff, 0x46, 0xf0, 0x8f, 0xf8, 0x8b, - 0x5c, 0xca, 0x24, 0x99, 0x47, 0x0b, 0xe2, 0x2e, 0xe7, 0x9e, 0x73, 0x72, 0xcf, 0xcd, 0x0d, 0x5c, - 0x0b, 0x63, 0x44, 0xc1, 0x63, 0xc9, 0x54, 0x7c, 0x98, 0xc5, 0xa5, 0x29, 0xe4, 0xee, 0x3b, 0x29, - 0x2b, 0xd3, 0x18, 0x7c, 0xe9, 0x38, 0x22, 0x99, 0x22, 0x87, 0xd9, 0xf5, 0x33, 0x2f, 0x65, 0xa5, - 0x8c, 0x99, 0xd6, 0xa6, 0x61, 0x8d, 0x34, 0xba, 0x76, 0xe2, 0xe8, 0x2b, 0x04, 0x99, 0x35, 0xe3, - 0x10, 0x06, 0x07, 0x5e, 0xd5, 0xd2, 0xe8, 0x10, 0x4d, 0xd0, 0xf4, 0x21, 0xed, 0x20, 0x9e, 0xc3, - 0xa3, 0x5c, 0xea, 0xbd, 0xd4, 0xa2, 0x0e, 0xcf, 0x26, 0xfd, 0xe9, 0xf9, 0x7c, 0x4c, 0x4e, 0x7a, - 0x90, 0xa5, 0xa3, 0xe9, 0xbd, 0x0e, 0x63, 0x38, 0xe3, 0x0d, 0x13, 0x61, 0x7f, 0x82, 0xa6, 0x17, - 0xd4, 0x9e, 0xa3, 0x57, 0x30, 0xf0, 0xc2, 0x96, 0xae, 0x4c, 0xc1, 0x6d, 0xa7, 0x21, 0xb5, 0xe7, - 0x36, 0x80, 0xe2, 0x2a, 0xe7, 0x55, 0x1d, 0xf6, 0x26, 0xfd, 0xe9, 0x90, 0x76, 0x30, 0xfa, 0x00, - 0xe7, 0x2e, 0xe4, 0x9a, 0x17, 0x0d, 0xc3, 0x4b, 0xb8, 0xf2, 0x7d, 0xee, 0xf6, 0x6d, 0xa1, 0x0e, - 0x91, 0x4d, 0xf5, 0xf4, 0xdf, 0xa9, 0xac, 0x89, 0x5e, 0xe6, 0x47, 0xa8, 0x8e, 0x7e, 0x21, 0xb8, - 0x38, 0xe6, 0xf1, 0x6b, 0x08, 0xd8, 0xae, 0xe9, 0xa6, 0xbf, 0x9a, 0x47, 0xff, 0xb9, 0x8c, 0x2c, - 0xac, 0x92, 0x7a, 0xc7, 0xfd, 0x34, 0xbd, 0xa3, 0x69, 0xc6, 0x10, 0xb8, 0xf8, 0xf6, 0x09, 0x86, - 0xd4, 0xa3, 0xe8, 0x25, 0x04, 0xce, 0x8d, 0xc7, 0x80, 0x17, 0xab, 0x4f, 0xe9, 0xed, 0xcd, 0xdd, - 0xe7, 0x9b, 0x8f, 0x59, 0xb2, 0x4a, 0xdf, 0xa6, 0xc9, 0x7a, 0xf4, 0x00, 0x0f, 0xa0, 0xbf, 0x58, - 0xaf, 0x47, 0x08, 0x03, 0x04, 0x34, 0x79, 0x7f, 0xbb, 0x49, 0x46, 0xbd, 0xe5, 0x0f, 0x04, 0x8f, - 0x77, 0x46, 0x9d, 0x86, 0x5a, 0xfa, 0x67, 0xc9, 0xda, 0x55, 0x66, 0xe8, 0xcb, 0x73, 0xcf, 0x0a, - 0x53, 0x30, 0x2d, 0x88, 0xa9, 0x44, 0x2c, 0xb8, 0xb6, 0x8b, 0x8e, 0x1d, 0xc5, 0x4a, 0x59, 0xfb, - 0x4f, 0xf3, 0x46, 0x32, 0xf5, 0x07, 0xa1, 0x9f, 0xbd, 0x27, 0xef, 0x9c, 0x6b, 0x55, 0x98, 0x6f, - 0x7b, 0x92, 0x32, 0x45, 0x36, 0xb3, 0xdf, 0x5d, 0x75, 0x6b, 0xab, 0xdb, 0x94, 0xa9, 0xed, 0x66, - 0x96, 0x07, 0xf6, 0xae, 0x17, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x18, 0xca, 0xaa, 0x7f, - 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/logging/type/http_request.pb.go b/vendor/google.golang.org/genproto/googleapis/logging/type/http_request.pb.go deleted file mode 100644 index ad4f289f..00000000 --- a/vendor/google.golang.org/genproto/googleapis/logging/type/http_request.pb.go +++ /dev/null @@ -1,233 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/logging/type/http_request.proto - -/* -Package ltype is a generated protocol buffer package. - -It is generated from these files: - google/logging/type/http_request.proto - google/logging/type/log_severity.proto - -It has these top-level messages: - HttpRequest -*/ -package ltype - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A common proto for logging HTTP requests. Only contains semantics -// defined by the HTTP specification. Product-specific logging -// information MUST be defined in a separate message. -type HttpRequest struct { - // The request method. Examples: `"GET"`, `"HEAD"`, `"PUT"`, `"POST"`. - RequestMethod string `protobuf:"bytes,1,opt,name=request_method,json=requestMethod" json:"request_method,omitempty"` - // The scheme (http, https), the host name, the path and the query - // portion of the URL that was requested. - // Example: `"http://example.com/some/info?color=red"`. - RequestUrl string `protobuf:"bytes,2,opt,name=request_url,json=requestUrl" json:"request_url,omitempty"` - // The size of the HTTP request message in bytes, including the request - // headers and the request body. - RequestSize int64 `protobuf:"varint,3,opt,name=request_size,json=requestSize" json:"request_size,omitempty"` - // The response code indicating the status of response. - // Examples: 200, 404. - Status int32 `protobuf:"varint,4,opt,name=status" json:"status,omitempty"` - // The size of the HTTP response message sent back to the client, in bytes, - // including the response headers and the response body. - ResponseSize int64 `protobuf:"varint,5,opt,name=response_size,json=responseSize" json:"response_size,omitempty"` - // The user agent sent by the client. Example: - // `"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)"`. - UserAgent string `protobuf:"bytes,6,opt,name=user_agent,json=userAgent" json:"user_agent,omitempty"` - // The IP address (IPv4 or IPv6) of the client that issued the HTTP - // request. Examples: `"192.168.1.1"`, `"FE80::0202:B3FF:FE1E:8329"`. - RemoteIp string `protobuf:"bytes,7,opt,name=remote_ip,json=remoteIp" json:"remote_ip,omitempty"` - // The IP address (IPv4 or IPv6) of the origin server that the request was - // sent to. - ServerIp string `protobuf:"bytes,13,opt,name=server_ip,json=serverIp" json:"server_ip,omitempty"` - // The referer URL of the request, as defined in - // [HTTP/1.1 Header Field Definitions](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html). - Referer string `protobuf:"bytes,8,opt,name=referer" json:"referer,omitempty"` - // The request processing latency on the server, from the time the request was - // received until the response was sent. - Latency *google_protobuf1.Duration `protobuf:"bytes,14,opt,name=latency" json:"latency,omitempty"` - // Whether or not a cache lookup was attempted. - CacheLookup bool `protobuf:"varint,11,opt,name=cache_lookup,json=cacheLookup" json:"cache_lookup,omitempty"` - // Whether or not an entity was served from cache - // (with or without validation). - CacheHit bool `protobuf:"varint,9,opt,name=cache_hit,json=cacheHit" json:"cache_hit,omitempty"` - // Whether or not the response was validated with the origin server before - // being served from cache. This field is only meaningful if `cache_hit` is - // True. - CacheValidatedWithOriginServer bool `protobuf:"varint,10,opt,name=cache_validated_with_origin_server,json=cacheValidatedWithOriginServer" json:"cache_validated_with_origin_server,omitempty"` - // The number of HTTP response bytes inserted into cache. Set only when a - // cache fill was attempted. - CacheFillBytes int64 `protobuf:"varint,12,opt,name=cache_fill_bytes,json=cacheFillBytes" json:"cache_fill_bytes,omitempty"` - // Protocol used for the request. Examples: "HTTP/1.1", "HTTP/2", "websocket" - Protocol string `protobuf:"bytes,15,opt,name=protocol" json:"protocol,omitempty"` -} - -func (m *HttpRequest) Reset() { *m = HttpRequest{} } -func (m *HttpRequest) String() string { return proto.CompactTextString(m) } -func (*HttpRequest) ProtoMessage() {} -func (*HttpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *HttpRequest) GetRequestMethod() string { - if m != nil { - return m.RequestMethod - } - return "" -} - -func (m *HttpRequest) GetRequestUrl() string { - if m != nil { - return m.RequestUrl - } - return "" -} - -func (m *HttpRequest) GetRequestSize() int64 { - if m != nil { - return m.RequestSize - } - return 0 -} - -func (m *HttpRequest) GetStatus() int32 { - if m != nil { - return m.Status - } - return 0 -} - -func (m *HttpRequest) GetResponseSize() int64 { - if m != nil { - return m.ResponseSize - } - return 0 -} - -func (m *HttpRequest) GetUserAgent() string { - if m != nil { - return m.UserAgent - } - return "" -} - -func (m *HttpRequest) GetRemoteIp() string { - if m != nil { - return m.RemoteIp - } - return "" -} - -func (m *HttpRequest) GetServerIp() string { - if m != nil { - return m.ServerIp - } - return "" -} - -func (m *HttpRequest) GetReferer() string { - if m != nil { - return m.Referer - } - return "" -} - -func (m *HttpRequest) GetLatency() *google_protobuf1.Duration { - if m != nil { - return m.Latency - } - return nil -} - -func (m *HttpRequest) GetCacheLookup() bool { - if m != nil { - return m.CacheLookup - } - return false -} - -func (m *HttpRequest) GetCacheHit() bool { - if m != nil { - return m.CacheHit - } - return false -} - -func (m *HttpRequest) GetCacheValidatedWithOriginServer() bool { - if m != nil { - return m.CacheValidatedWithOriginServer - } - return false -} - -func (m *HttpRequest) GetCacheFillBytes() int64 { - if m != nil { - return m.CacheFillBytes - } - return 0 -} - -func (m *HttpRequest) GetProtocol() string { - if m != nil { - return m.Protocol - } - return "" -} - -func init() { - proto.RegisterType((*HttpRequest)(nil), "google.logging.type.HttpRequest") -} - -func init() { proto.RegisterFile("google/logging/type/http_request.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 511 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0x5b, 0x6b, 0x14, 0x31, - 0x18, 0x86, 0x99, 0x1e, 0xf6, 0x90, 0x3d, 0x58, 0x22, 0x68, 0xba, 0x6a, 0x5d, 0x2b, 0xca, 0x5c, - 0xcd, 0x80, 0xbd, 0x11, 0xbc, 0x72, 0x15, 0x6d, 0xa5, 0x62, 0x99, 0x7a, 0x00, 0x59, 0x18, 0x66, - 0x77, 0xbf, 0x9d, 0x09, 0x66, 0x27, 0x31, 0xc9, 0x54, 0xb6, 0x7f, 0xc6, 0x7b, 0x6f, 0xfc, 0x1f, - 0xfe, 0x2a, 0xc9, 0x97, 0x0c, 0x28, 0xf4, 0x66, 0x21, 0xef, 0xf3, 0xbc, 0x49, 0xf6, 0x9b, 0x90, - 0xa7, 0xa5, 0x94, 0xa5, 0x80, 0x54, 0xc8, 0xb2, 0xe4, 0x75, 0x99, 0xda, 0xad, 0x82, 0xb4, 0xb2, - 0x56, 0xe5, 0x1a, 0xbe, 0x37, 0x60, 0x6c, 0xa2, 0xb4, 0xb4, 0x92, 0xde, 0xf6, 0x5e, 0x12, 0xbc, - 0xc4, 0x79, 0x93, 0xfb, 0xa1, 0x5c, 0x28, 0x9e, 0x16, 0x75, 0x2d, 0x6d, 0x61, 0xb9, 0xac, 0x8d, - 0xaf, 0x4c, 0x8e, 0x02, 0xc5, 0xd5, 0xa2, 0x59, 0xa7, 0xab, 0x46, 0xa3, 0xe0, 0xf9, 0xf1, 0xef, - 0x3d, 0x32, 0x38, 0xb5, 0x56, 0x65, 0xfe, 0x20, 0xfa, 0x84, 0x8c, 0xc3, 0x99, 0xf9, 0x06, 0x6c, - 0x25, 0x57, 0x2c, 0x9a, 0x46, 0x71, 0x3f, 0x1b, 0x85, 0xf4, 0x3d, 0x86, 0xf4, 0x21, 0x19, 0xb4, - 0x5a, 0xa3, 0x05, 0xdb, 0x41, 0x87, 0x84, 0xe8, 0x93, 0x16, 0xf4, 0x11, 0x19, 0xb6, 0x82, 0xe1, - 0xd7, 0xc0, 0x76, 0xa7, 0x51, 0xbc, 0x9b, 0xb5, 0xa5, 0x4b, 0x7e, 0x0d, 0xf4, 0x0e, 0xe9, 0x18, - 0x5b, 0xd8, 0xc6, 0xb0, 0xbd, 0x69, 0x14, 0xef, 0x67, 0x61, 0x45, 0x1f, 0x93, 0x91, 0x06, 0xa3, - 0x64, 0x6d, 0xc0, 0x77, 0xf7, 0xb1, 0x3b, 0x6c, 0x43, 0x2c, 0x3f, 0x20, 0xa4, 0x31, 0xa0, 0xf3, - 0xa2, 0x84, 0xda, 0xb2, 0x0e, 0x9e, 0xdf, 0x77, 0xc9, 0x4b, 0x17, 0xd0, 0x7b, 0xa4, 0xaf, 0x61, - 0x23, 0x2d, 0xe4, 0x5c, 0xb1, 0x2e, 0xd2, 0x9e, 0x0f, 0xce, 0x94, 0x83, 0x06, 0xf4, 0x15, 0x68, - 0x07, 0x47, 0x1e, 0xfa, 0xe0, 0x4c, 0x51, 0x46, 0xba, 0x1a, 0xd6, 0xa0, 0x41, 0xb3, 0x1e, 0xa2, - 0x76, 0x49, 0x4f, 0x48, 0x57, 0x14, 0x16, 0xea, 0xe5, 0x96, 0x8d, 0xa7, 0x51, 0x3c, 0x78, 0x76, - 0x98, 0x84, 0xef, 0xd1, 0x0e, 0x37, 0x79, 0x1d, 0x86, 0x9b, 0xb5, 0xa6, 0x9b, 0xc3, 0xb2, 0x58, - 0x56, 0x90, 0x0b, 0x29, 0xbf, 0x35, 0x8a, 0x0d, 0xa6, 0x51, 0xdc, 0xcb, 0x06, 0x98, 0x9d, 0x63, - 0xe4, 0xae, 0xe3, 0x95, 0x8a, 0x5b, 0xd6, 0x47, 0xde, 0xc3, 0xe0, 0x94, 0x5b, 0xfa, 0x8e, 0x1c, - 0x7b, 0x78, 0x55, 0x08, 0xbe, 0x2a, 0x2c, 0xac, 0xf2, 0x1f, 0xdc, 0x56, 0xb9, 0xd4, 0xbc, 0xe4, - 0x75, 0xee, 0xaf, 0xcd, 0x08, 0xb6, 0x8e, 0xd0, 0xfc, 0xdc, 0x8a, 0x5f, 0xb8, 0xad, 0x3e, 0xa0, - 0x76, 0x89, 0x16, 0x8d, 0xc9, 0x81, 0xdf, 0x6b, 0xcd, 0x85, 0xc8, 0x17, 0x5b, 0x0b, 0x86, 0x0d, - 0x71, 0xb6, 0x63, 0xcc, 0xdf, 0x70, 0x21, 0x66, 0x2e, 0xa5, 0x13, 0xd2, 0xc3, 0xff, 0xb4, 0x94, - 0x82, 0xdd, 0xf2, 0x03, 0x6a, 0xd7, 0xb3, 0x9f, 0x11, 0xb9, 0xbb, 0x94, 0x9b, 0xe4, 0x86, 0xb7, - 0x38, 0x3b, 0xf8, 0xe7, 0x29, 0x5d, 0xb8, 0xc2, 0x45, 0xf4, 0xf5, 0x79, 0x10, 0x4b, 0x29, 0x8a, - 0xba, 0x4c, 0xa4, 0x2e, 0xd3, 0x12, 0x6a, 0xdc, 0x2e, 0xf5, 0xa8, 0x50, 0xdc, 0xfc, 0xf7, 0xf6, - 0x5f, 0x08, 0xf7, 0xfb, 0x6b, 0xe7, 0xf0, 0xad, 0xaf, 0xbe, 0x12, 0xb2, 0x59, 0x25, 0xe7, 0xe1, - 0xa4, 0x8f, 0x5b, 0x05, 0x7f, 0x5a, 0x36, 0x47, 0x36, 0x0f, 0x6c, 0xee, 0xd8, 0xa2, 0x83, 0x9b, - 0x9f, 0xfc, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x7d, 0xa3, 0x36, 0xbb, 0x57, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/logging/type/log_severity.pb.go b/vendor/google.golang.org/genproto/googleapis/logging/type/log_severity.pb.go deleted file mode 100644 index f489a279..00000000 --- a/vendor/google.golang.org/genproto/googleapis/logging/type/log_severity.pb.go +++ /dev/null @@ -1,111 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/logging/type/log_severity.proto - -package ltype - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The severity of the event described in a log entry, expressed as one of the -// standard severity levels listed below. For your reference, the levels are -// assigned the listed numeric values. The effect of using numeric values other -// than those listed is undefined. -// -// You can filter for log entries by severity. For example, the following -// filter expression will match log entries with severities `INFO`, `NOTICE`, -// and `WARNING`: -// -// severity > DEBUG AND severity <= WARNING -// -// If you are writing log entries, you should map other severity encodings to -// one of these standard levels. For example, you might map all of Java's FINE, -// FINER, and FINEST levels to `LogSeverity.DEBUG`. You can preserve the -// original severity level in the log entry payload if you wish. -type LogSeverity int32 - -const ( - // (0) The log entry has no assigned severity level. - LogSeverity_DEFAULT LogSeverity = 0 - // (100) Debug or trace information. - LogSeverity_DEBUG LogSeverity = 100 - // (200) Routine information, such as ongoing status or performance. - LogSeverity_INFO LogSeverity = 200 - // (300) Normal but significant events, such as start up, shut down, or - // a configuration change. - LogSeverity_NOTICE LogSeverity = 300 - // (400) Warning events might cause problems. - LogSeverity_WARNING LogSeverity = 400 - // (500) Error events are likely to cause problems. - LogSeverity_ERROR LogSeverity = 500 - // (600) Critical events cause more severe problems or outages. - LogSeverity_CRITICAL LogSeverity = 600 - // (700) A person must take an action immediately. - LogSeverity_ALERT LogSeverity = 700 - // (800) One or more systems are unusable. - LogSeverity_EMERGENCY LogSeverity = 800 -) - -var LogSeverity_name = map[int32]string{ - 0: "DEFAULT", - 100: "DEBUG", - 200: "INFO", - 300: "NOTICE", - 400: "WARNING", - 500: "ERROR", - 600: "CRITICAL", - 700: "ALERT", - 800: "EMERGENCY", -} -var LogSeverity_value = map[string]int32{ - "DEFAULT": 0, - "DEBUG": 100, - "INFO": 200, - "NOTICE": 300, - "WARNING": 400, - "ERROR": 500, - "CRITICAL": 600, - "ALERT": 700, - "EMERGENCY": 800, -} - -func (x LogSeverity) String() string { - return proto.EnumName(LogSeverity_name, int32(x)) -} -func (LogSeverity) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func init() { - proto.RegisterEnum("google.logging.type.LogSeverity", LogSeverity_name, LogSeverity_value) -} - -func init() { proto.RegisterFile("google/logging/type/log_severity.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 309 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4b, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0xcf, 0xc9, 0x4f, 0x4f, 0xcf, 0xcc, 0x4b, 0xd7, 0x2f, 0xa9, 0x2c, 0x00, 0x73, - 0xe2, 0x8b, 0x53, 0xcb, 0x52, 0x8b, 0x32, 0x4b, 0x2a, 0xf5, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, - 0x84, 0x21, 0xea, 0xf4, 0xa0, 0xea, 0xf4, 0x40, 0xea, 0xa4, 0x64, 0xa0, 0x9a, 0x13, 0x0b, 0x32, - 0xf5, 0x13, 0xf3, 0xf2, 0xf2, 0x4b, 0x12, 0x4b, 0x32, 0xf3, 0xf3, 0x8a, 0x21, 0x5a, 0xb4, 0x9a, - 0x18, 0xb9, 0xb8, 0x7d, 0xf2, 0xd3, 0x83, 0xa1, 0x06, 0x09, 0x71, 0x73, 0xb1, 0xbb, 0xb8, 0xba, - 0x39, 0x86, 0xfa, 0x84, 0x08, 0x30, 0x08, 0x71, 0x72, 0xb1, 0xba, 0xb8, 0x3a, 0x85, 0xba, 0x0b, - 0xa4, 0x08, 0x71, 0x72, 0xb1, 0x78, 0xfa, 0xb9, 0xf9, 0x0b, 0x9c, 0x60, 0x14, 0xe2, 0xe6, 0x62, - 0xf3, 0xf3, 0x0f, 0xf1, 0x74, 0x76, 0x15, 0x58, 0xc3, 0x24, 0xc4, 0xc3, 0xc5, 0x1e, 0xee, 0x18, - 0xe4, 0xe7, 0xe9, 0xe7, 0x2e, 0x30, 0x81, 0x59, 0x88, 0x8b, 0x8b, 0xd5, 0x35, 0x28, 0xc8, 0x3f, - 0x48, 0xe0, 0x0b, 0xb3, 0x10, 0x2f, 0x17, 0x87, 0x73, 0x90, 0x67, 0x88, 0xa7, 0xb3, 0xa3, 0x8f, - 0xc0, 0x0d, 0x16, 0x90, 0x94, 0xa3, 0x8f, 0x6b, 0x50, 0x88, 0xc0, 0x1e, 0x56, 0x21, 0x3e, 0x2e, - 0x4e, 0x57, 0x5f, 0xd7, 0x20, 0x77, 0x57, 0x3f, 0xe7, 0x48, 0x81, 0x05, 0x6c, 0x4e, 0xf3, 0x19, - 0xb9, 0xc4, 0x93, 0xf3, 0x73, 0xf5, 0xb0, 0x38, 0xdf, 0x49, 0x00, 0xc9, 0x75, 0x01, 0x20, 0x27, - 0x07, 0x30, 0x46, 0x59, 0x40, 0x15, 0xa6, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, 0xeb, 0xe5, 0x17, 0xa5, - 0xeb, 0xa7, 0xa7, 0xe6, 0x81, 0x3d, 0xa4, 0x0f, 0x91, 0x4a, 0x2c, 0xc8, 0x2c, 0x46, 0x09, 0x2e, - 0xeb, 0x1c, 0x10, 0xb9, 0x8a, 0x49, 0xd2, 0x1d, 0xa2, 0xd5, 0x39, 0x27, 0xbf, 0x34, 0x45, 0xcf, - 0x07, 0x6a, 0x53, 0x48, 0x65, 0x41, 0xea, 0x29, 0x98, 0x5c, 0x0c, 0x58, 0x2e, 0x06, 0x2a, 0x17, - 0x03, 0x92, 0x4b, 0x62, 0x03, 0x1b, 0x6e, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xea, 0x8a, 0xa7, - 0x20, 0x8a, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/logging/v2/log_entry.pb.go b/vendor/google.golang.org/genproto/googleapis/logging/v2/log_entry.pb.go deleted file mode 100644 index 002a8378..00000000 --- a/vendor/google.golang.org/genproto/googleapis/logging/v2/log_entry.pb.go +++ /dev/null @@ -1,530 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/logging/v2/log_entry.proto - -/* -Package logging is a generated protocol buffer package. - -It is generated from these files: - google/logging/v2/log_entry.proto - google/logging/v2/logging.proto - google/logging/v2/logging_config.proto - google/logging/v2/logging_metrics.proto - -It has these top-level messages: - LogEntry - LogEntryOperation - LogEntrySourceLocation - DeleteLogRequest - WriteLogEntriesRequest - WriteLogEntriesResponse - WriteLogEntriesPartialErrors - ListLogEntriesRequest - ListLogEntriesResponse - ListMonitoredResourceDescriptorsRequest - ListMonitoredResourceDescriptorsResponse - ListLogsRequest - ListLogsResponse - LogSink - ListSinksRequest - ListSinksResponse - GetSinkRequest - CreateSinkRequest - UpdateSinkRequest - DeleteSinkRequest - LogExclusion - ListExclusionsRequest - ListExclusionsResponse - GetExclusionRequest - CreateExclusionRequest - UpdateExclusionRequest - DeleteExclusionRequest - LogMetric - ListLogMetricsRequest - ListLogMetricsResponse - GetLogMetricRequest - CreateLogMetricRequest - UpdateLogMetricRequest - DeleteLogMetricRequest -*/ -package logging - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api3 "google.golang.org/genproto/googleapis/api/monitoredres" -import google_logging_type "google.golang.org/genproto/googleapis/logging/type" -import google_logging_type1 "google.golang.org/genproto/googleapis/logging/type" -import google_protobuf2 "github.com/golang/protobuf/ptypes/any" -import google_protobuf3 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// An individual entry in a log. -type LogEntry struct { - // Required. The resource name of the log to which this log entry belongs: - // - // "projects/[PROJECT_ID]/logs/[LOG_ID]" - // "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]" - // "folders/[FOLDER_ID]/logs/[LOG_ID]" - // - // A project number may optionally be used in place of PROJECT_ID. The - // project number is translated to its corresponding PROJECT_ID internally - // and the `log_name` field will contain PROJECT_ID in queries and exports. - // - // `[LOG_ID]` must be URL-encoded within `log_name`. Example: - // `"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity"`. - // `[LOG_ID]` must be less than 512 characters long and can only include the - // following characters: upper and lower case alphanumeric characters, - // forward-slash, underscore, hyphen, and period. - // - // For backward compatibility, if `log_name` begins with a forward-slash, such - // as `/projects/...`, then the log entry is ingested as usual but the - // forward-slash is removed. Listing the log entry will not show the leading - // slash and filtering for a log name with a leading slash will never return - // any results. - LogName string `protobuf:"bytes,12,opt,name=log_name,json=logName" json:"log_name,omitempty"` - // Required. The monitored resource associated with this log entry. - // Example: a log entry that reports a database error would be - // associated with the monitored resource designating the particular - // database that reported the error. - Resource *google_api3.MonitoredResource `protobuf:"bytes,8,opt,name=resource" json:"resource,omitempty"` - // Optional. The log entry payload, which can be one of multiple types. - // - // Types that are valid to be assigned to Payload: - // *LogEntry_ProtoPayload - // *LogEntry_TextPayload - // *LogEntry_JsonPayload - Payload isLogEntry_Payload `protobuf_oneof:"payload"` - // Optional. The time the event described by the log entry occurred. - // This time is used to compute the log entry's age and to enforce - // the logs retention period. If this field is omitted in a new log - // entry, then Stackdriver Logging assigns it the current time. - // - // Incoming log entries should have timestamps that are no more than - // the [logs retention period](/logging/quota-policy) in the past, - // and no more than 24 hours in the future. - // See the `entries.write` API method for more information. - Timestamp *google_protobuf4.Timestamp `protobuf:"bytes,9,opt,name=timestamp" json:"timestamp,omitempty"` - // Output only. The time the log entry was received by Stackdriver Logging. - ReceiveTimestamp *google_protobuf4.Timestamp `protobuf:"bytes,24,opt,name=receive_timestamp,json=receiveTimestamp" json:"receive_timestamp,omitempty"` - // Optional. The severity of the log entry. The default value is - // `LogSeverity.DEFAULT`. - Severity google_logging_type1.LogSeverity `protobuf:"varint,10,opt,name=severity,enum=google.logging.type.LogSeverity" json:"severity,omitempty"` - // Optional. A unique identifier for the log entry. If you provide a value, - // then Stackdriver Logging considers other log entries in the same project, - // with the same `timestamp`, and with the same `insert_id` to be duplicates - // which can be removed. If omitted in new log entries, then Stackdriver - // Logging assigns its own unique identifier. The `insert_id` is also used - // to order log entries that have the same `timestamp` value. - InsertId string `protobuf:"bytes,4,opt,name=insert_id,json=insertId" json:"insert_id,omitempty"` - // Optional. Information about the HTTP request associated with this - // log entry, if applicable. - HttpRequest *google_logging_type.HttpRequest `protobuf:"bytes,7,opt,name=http_request,json=httpRequest" json:"http_request,omitempty"` - // Optional. A set of user-defined (key, value) data that provides additional - // information about the log entry. - Labels map[string]string `protobuf:"bytes,11,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. Information about an operation associated with the log entry, if - // applicable. - Operation *LogEntryOperation `protobuf:"bytes,15,opt,name=operation" json:"operation,omitempty"` - // Optional. Resource name of the trace associated with the log entry, if any. - // If it contains a relative resource name, the name is assumed to be relative - // to `//tracing.googleapis.com`. Example: - // `projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824` - Trace string `protobuf:"bytes,22,opt,name=trace" json:"trace,omitempty"` - // Optional. Id of the span within the trace associated with the log entry. - // e.g. "0000000000000042" - // For Stackdriver trace spans, this is the same format that the Stackdriver - // trace API uses. - // The ID is a 16-character hexadecimal encoding of an 8-byte array. - SpanId string `protobuf:"bytes,27,opt,name=span_id,json=spanId" json:"span_id,omitempty"` - // Optional. Source code location information associated with the log entry, - // if any. - SourceLocation *LogEntrySourceLocation `protobuf:"bytes,23,opt,name=source_location,json=sourceLocation" json:"source_location,omitempty"` -} - -func (m *LogEntry) Reset() { *m = LogEntry{} } -func (m *LogEntry) String() string { return proto.CompactTextString(m) } -func (*LogEntry) ProtoMessage() {} -func (*LogEntry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isLogEntry_Payload interface { - isLogEntry_Payload() -} - -type LogEntry_ProtoPayload struct { - ProtoPayload *google_protobuf2.Any `protobuf:"bytes,2,opt,name=proto_payload,json=protoPayload,oneof"` -} -type LogEntry_TextPayload struct { - TextPayload string `protobuf:"bytes,3,opt,name=text_payload,json=textPayload,oneof"` -} -type LogEntry_JsonPayload struct { - JsonPayload *google_protobuf3.Struct `protobuf:"bytes,6,opt,name=json_payload,json=jsonPayload,oneof"` -} - -func (*LogEntry_ProtoPayload) isLogEntry_Payload() {} -func (*LogEntry_TextPayload) isLogEntry_Payload() {} -func (*LogEntry_JsonPayload) isLogEntry_Payload() {} - -func (m *LogEntry) GetPayload() isLogEntry_Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *LogEntry) GetLogName() string { - if m != nil { - return m.LogName - } - return "" -} - -func (m *LogEntry) GetResource() *google_api3.MonitoredResource { - if m != nil { - return m.Resource - } - return nil -} - -func (m *LogEntry) GetProtoPayload() *google_protobuf2.Any { - if x, ok := m.GetPayload().(*LogEntry_ProtoPayload); ok { - return x.ProtoPayload - } - return nil -} - -func (m *LogEntry) GetTextPayload() string { - if x, ok := m.GetPayload().(*LogEntry_TextPayload); ok { - return x.TextPayload - } - return "" -} - -func (m *LogEntry) GetJsonPayload() *google_protobuf3.Struct { - if x, ok := m.GetPayload().(*LogEntry_JsonPayload); ok { - return x.JsonPayload - } - return nil -} - -func (m *LogEntry) GetTimestamp() *google_protobuf4.Timestamp { - if m != nil { - return m.Timestamp - } - return nil -} - -func (m *LogEntry) GetReceiveTimestamp() *google_protobuf4.Timestamp { - if m != nil { - return m.ReceiveTimestamp - } - return nil -} - -func (m *LogEntry) GetSeverity() google_logging_type1.LogSeverity { - if m != nil { - return m.Severity - } - return google_logging_type1.LogSeverity_DEFAULT -} - -func (m *LogEntry) GetInsertId() string { - if m != nil { - return m.InsertId - } - return "" -} - -func (m *LogEntry) GetHttpRequest() *google_logging_type.HttpRequest { - if m != nil { - return m.HttpRequest - } - return nil -} - -func (m *LogEntry) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *LogEntry) GetOperation() *LogEntryOperation { - if m != nil { - return m.Operation - } - return nil -} - -func (m *LogEntry) GetTrace() string { - if m != nil { - return m.Trace - } - return "" -} - -func (m *LogEntry) GetSpanId() string { - if m != nil { - return m.SpanId - } - return "" -} - -func (m *LogEntry) GetSourceLocation() *LogEntrySourceLocation { - if m != nil { - return m.SourceLocation - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*LogEntry) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _LogEntry_OneofMarshaler, _LogEntry_OneofUnmarshaler, _LogEntry_OneofSizer, []interface{}{ - (*LogEntry_ProtoPayload)(nil), - (*LogEntry_TextPayload)(nil), - (*LogEntry_JsonPayload)(nil), - } -} - -func _LogEntry_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*LogEntry) - // payload - switch x := m.Payload.(type) { - case *LogEntry_ProtoPayload: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ProtoPayload); err != nil { - return err - } - case *LogEntry_TextPayload: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.TextPayload) - case *LogEntry_JsonPayload: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.JsonPayload); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("LogEntry.Payload has unexpected type %T", x) - } - return nil -} - -func _LogEntry_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*LogEntry) - switch tag { - case 2: // payload.proto_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf2.Any) - err := b.DecodeMessage(msg) - m.Payload = &LogEntry_ProtoPayload{msg} - return true, err - case 3: // payload.text_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Payload = &LogEntry_TextPayload{x} - return true, err - case 6: // payload.json_payload - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf3.Struct) - err := b.DecodeMessage(msg) - m.Payload = &LogEntry_JsonPayload{msg} - return true, err - default: - return false, nil - } -} - -func _LogEntry_OneofSizer(msg proto.Message) (n int) { - m := msg.(*LogEntry) - // payload - switch x := m.Payload.(type) { - case *LogEntry_ProtoPayload: - s := proto.Size(x.ProtoPayload) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LogEntry_TextPayload: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.TextPayload))) - n += len(x.TextPayload) - case *LogEntry_JsonPayload: - s := proto.Size(x.JsonPayload) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Additional information about a potentially long-running operation with which -// a log entry is associated. -type LogEntryOperation struct { - // Optional. An arbitrary operation identifier. Log entries with the - // same identifier are assumed to be part of the same operation. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // Optional. An arbitrary producer identifier. The combination of - // `id` and `producer` must be globally unique. Examples for `producer`: - // `"MyDivision.MyBigCompany.com"`, `"github.com/MyProject/MyApplication"`. - Producer string `protobuf:"bytes,2,opt,name=producer" json:"producer,omitempty"` - // Optional. Set this to True if this is the first log entry in the operation. - First bool `protobuf:"varint,3,opt,name=first" json:"first,omitempty"` - // Optional. Set this to True if this is the last log entry in the operation. - Last bool `protobuf:"varint,4,opt,name=last" json:"last,omitempty"` -} - -func (m *LogEntryOperation) Reset() { *m = LogEntryOperation{} } -func (m *LogEntryOperation) String() string { return proto.CompactTextString(m) } -func (*LogEntryOperation) ProtoMessage() {} -func (*LogEntryOperation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *LogEntryOperation) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *LogEntryOperation) GetProducer() string { - if m != nil { - return m.Producer - } - return "" -} - -func (m *LogEntryOperation) GetFirst() bool { - if m != nil { - return m.First - } - return false -} - -func (m *LogEntryOperation) GetLast() bool { - if m != nil { - return m.Last - } - return false -} - -// Additional information about the source code location that produced the log -// entry. -type LogEntrySourceLocation struct { - // Optional. Source file name. Depending on the runtime environment, this - // might be a simple name or a fully-qualified name. - File string `protobuf:"bytes,1,opt,name=file" json:"file,omitempty"` - // Optional. Line within the source file. 1-based; 0 indicates no line number - // available. - Line int64 `protobuf:"varint,2,opt,name=line" json:"line,omitempty"` - // Optional. Human-readable name of the function or method being invoked, with - // optional context such as the class or package name. This information may be - // used in contexts such as the logs viewer, where a file and line number are - // less meaningful. The format can vary by language. For example: - // `qual.if.ied.Class.method` (Java), `dir/package.func` (Go), `function` - // (Python). - Function string `protobuf:"bytes,3,opt,name=function" json:"function,omitempty"` -} - -func (m *LogEntrySourceLocation) Reset() { *m = LogEntrySourceLocation{} } -func (m *LogEntrySourceLocation) String() string { return proto.CompactTextString(m) } -func (*LogEntrySourceLocation) ProtoMessage() {} -func (*LogEntrySourceLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *LogEntrySourceLocation) GetFile() string { - if m != nil { - return m.File - } - return "" -} - -func (m *LogEntrySourceLocation) GetLine() int64 { - if m != nil { - return m.Line - } - return 0 -} - -func (m *LogEntrySourceLocation) GetFunction() string { - if m != nil { - return m.Function - } - return "" -} - -func init() { - proto.RegisterType((*LogEntry)(nil), "google.logging.v2.LogEntry") - proto.RegisterType((*LogEntryOperation)(nil), "google.logging.v2.LogEntryOperation") - proto.RegisterType((*LogEntrySourceLocation)(nil), "google.logging.v2.LogEntrySourceLocation") -} - -func init() { proto.RegisterFile("google/logging/v2/log_entry.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 729 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0xcd, 0x6e, 0xdb, 0x46, - 0x10, 0x36, 0x25, 0x57, 0xa2, 0x56, 0xf2, 0xdf, 0xc2, 0xb5, 0x68, 0xd9, 0x45, 0x55, 0xbb, 0x68, - 0xd5, 0x0b, 0x05, 0xa8, 0x17, 0xbb, 0x36, 0x50, 0x54, 0x46, 0x61, 0x1b, 0x50, 0x5b, 0x63, 0x5d, - 0xf8, 0x10, 0x08, 0x10, 0xd6, 0xe4, 0x8a, 0xde, 0x84, 0xda, 0x65, 0x96, 0x4b, 0x21, 0x7a, 0x94, - 0xbc, 0x42, 0x1e, 0x25, 0x6f, 0x93, 0x5b, 0x8e, 0xc1, 0x0e, 0x97, 0x92, 0x22, 0x19, 0xce, 0x6d, - 0x66, 0xe7, 0xfb, 0xe6, 0x9b, 0x19, 0xce, 0x10, 0xfd, 0x14, 0x49, 0x19, 0xc5, 0xac, 0x1b, 0xcb, - 0x28, 0xe2, 0x22, 0xea, 0x4e, 0x7b, 0xc6, 0x1c, 0x31, 0xa1, 0xd5, 0xcc, 0x4f, 0x94, 0xd4, 0x12, - 0xef, 0xe5, 0x10, 0xdf, 0x42, 0xfc, 0x69, 0xaf, 0x75, 0x6c, 0x59, 0x34, 0xe1, 0x5d, 0x2a, 0x84, - 0xd4, 0x54, 0x73, 0x29, 0xd2, 0x9c, 0xd0, 0x3a, 0x5d, 0x8a, 0x4e, 0xa4, 0xe0, 0x5a, 0x2a, 0x16, - 0x8e, 0x14, 0x4b, 0x65, 0xa6, 0x02, 0x66, 0x41, 0xbf, 0xac, 0x08, 0xeb, 0x59, 0xc2, 0xba, 0x4f, - 0x5a, 0x27, 0x23, 0xc5, 0xde, 0x66, 0x2c, 0xd5, 0x2f, 0xe1, 0x4c, 0x89, 0x29, 0x9b, 0x32, 0xc5, - 0xb5, 0xad, 0xb2, 0x75, 0x68, 0x71, 0xe0, 0x3d, 0x66, 0xe3, 0x2e, 0x15, 0x45, 0xe8, 0x78, 0x35, - 0x94, 0x6a, 0x95, 0x05, 0x85, 0xc0, 0x8f, 0xab, 0x51, 0xcd, 0x27, 0x2c, 0xd5, 0x74, 0x92, 0xe4, - 0x80, 0x93, 0x4f, 0x15, 0xe4, 0x0e, 0x64, 0xf4, 0xb7, 0x19, 0x09, 0x3e, 0x44, 0xae, 0x11, 0x17, - 0x74, 0xc2, 0xbc, 0x46, 0xdb, 0xe9, 0xd4, 0x48, 0x35, 0x96, 0xd1, 0xbf, 0x74, 0xc2, 0xf0, 0x39, - 0x72, 0x8b, 0x1e, 0x3d, 0xb7, 0xed, 0x74, 0xea, 0xbd, 0x1f, 0x7c, 0x3b, 0x3a, 0x9a, 0x70, 0xff, - 0x9f, 0x62, 0x12, 0xc4, 0x82, 0xc8, 0x1c, 0x8e, 0x2f, 0xd0, 0x16, 0x68, 0x8d, 0x12, 0x3a, 0x8b, - 0x25, 0x0d, 0xbd, 0x12, 0xf0, 0xf7, 0x0b, 0x7e, 0x51, 0x9b, 0xff, 0x97, 0x98, 0xdd, 0x6c, 0x90, - 0x06, 0xf8, 0x77, 0x39, 0x16, 0x9f, 0xa2, 0x86, 0x66, 0xef, 0xf4, 0x9c, 0x5b, 0x36, 0x65, 0xdd, - 0x6c, 0x90, 0xba, 0x79, 0x2d, 0x40, 0x97, 0xa8, 0xf1, 0x3a, 0x95, 0x62, 0x0e, 0xaa, 0x80, 0x40, - 0x73, 0x4d, 0xe0, 0x1e, 0x46, 0x63, 0xd8, 0x06, 0x5e, 0xb0, 0xcf, 0x50, 0x6d, 0x3e, 0x15, 0xaf, - 0x06, 0xd4, 0xd6, 0x1a, 0xf5, 0xff, 0x02, 0x41, 0x16, 0x60, 0x7c, 0x8d, 0xf6, 0x14, 0x0b, 0x18, - 0x9f, 0xb2, 0xd1, 0x22, 0x83, 0xf7, 0xcd, 0x0c, 0xbb, 0x96, 0x34, 0x7f, 0xc1, 0x97, 0xc8, 0x2d, - 0xbe, 0xb8, 0x87, 0xda, 0x4e, 0x67, 0xbb, 0xd7, 0xf6, 0x57, 0x16, 0xd3, 0xac, 0x86, 0x3f, 0x90, - 0xd1, 0xbd, 0xc5, 0x91, 0x39, 0x03, 0x1f, 0xa1, 0x1a, 0x17, 0x29, 0x53, 0x7a, 0xc4, 0x43, 0x6f, - 0x13, 0xbe, 0x9b, 0x9b, 0x3f, 0xdc, 0x86, 0xf8, 0x0a, 0x35, 0x96, 0x17, 0xcf, 0xab, 0x42, 0x79, - 0xcf, 0xa7, 0xbf, 0xd1, 0x3a, 0x21, 0x39, 0x8e, 0xd4, 0x9f, 0x16, 0x0e, 0xfe, 0x13, 0x55, 0x62, - 0xfa, 0xc8, 0xe2, 0xd4, 0xab, 0xb7, 0xcb, 0x9d, 0x7a, 0xef, 0x57, 0x7f, 0xed, 0x6c, 0xfc, 0x62, - 0x8b, 0xfc, 0x01, 0x20, 0xc1, 0x26, 0x96, 0x86, 0xfb, 0xa8, 0x26, 0x13, 0xa6, 0xe0, 0x92, 0xbc, - 0x1d, 0x28, 0xe1, 0xe7, 0x17, 0x72, 0xfc, 0x57, 0x60, 0xc9, 0x82, 0x86, 0xf7, 0xd1, 0x77, 0x5a, - 0xd1, 0x80, 0x79, 0x07, 0xd0, 0x62, 0xee, 0xe0, 0x26, 0xaa, 0xa6, 0x09, 0x15, 0xa6, 0xf5, 0x23, - 0x78, 0xaf, 0x18, 0xf7, 0x36, 0xc4, 0x04, 0xed, 0xe4, 0x0b, 0x38, 0x8a, 0x65, 0x90, 0x0b, 0x37, - 0x41, 0xf8, 0xb7, 0x17, 0x84, 0xef, 0x81, 0x31, 0xb0, 0x04, 0xb2, 0x9d, 0x7e, 0xe5, 0xb7, 0xce, - 0x51, 0x7d, 0xa9, 0x3b, 0xbc, 0x8b, 0xca, 0x6f, 0xd8, 0xcc, 0x73, 0x40, 0xd7, 0x98, 0xa6, 0xc6, - 0x29, 0x8d, 0x33, 0x06, 0x3b, 0x5e, 0x23, 0xb9, 0xf3, 0x47, 0xe9, 0xcc, 0xe9, 0xd7, 0x50, 0xd5, - 0xae, 0xe7, 0x09, 0x47, 0x7b, 0x6b, 0x8d, 0xe2, 0x6d, 0x54, 0xe2, 0xa1, 0x4d, 0x55, 0xe2, 0x21, - 0x6e, 0x21, 0x37, 0x51, 0x32, 0xcc, 0x02, 0xa6, 0x6c, 0xb2, 0xb9, 0x6f, 0x54, 0xc6, 0x5c, 0xa5, - 0x1a, 0xae, 0xc1, 0x25, 0xb9, 0x83, 0x31, 0xda, 0x8c, 0x69, 0xaa, 0x61, 0x03, 0x5c, 0x02, 0xf6, - 0xc9, 0x10, 0x1d, 0x3c, 0xdf, 0x9a, 0x41, 0x8f, 0x79, 0xcc, 0xac, 0x22, 0xd8, 0x90, 0x81, 0x8b, - 0xbc, 0xf8, 0x32, 0x01, 0xdb, 0xd4, 0x31, 0xce, 0x44, 0x00, 0xf3, 0x2b, 0xe7, 0x75, 0x14, 0x7e, - 0xff, 0xbd, 0x83, 0xbe, 0x0f, 0xe4, 0x64, 0x7d, 0x9e, 0xfd, 0xad, 0x42, 0xf5, 0x0e, 0x8e, 0xd9, - 0x79, 0x75, 0x66, 0x31, 0x91, 0x8c, 0xa9, 0x88, 0x7c, 0xa9, 0xa2, 0x6e, 0xc4, 0x04, 0x1c, 0x47, - 0x37, 0x0f, 0xd1, 0x84, 0xa7, 0x4b, 0x7f, 0xea, 0x0b, 0x6b, 0x7e, 0x76, 0x9c, 0x0f, 0xa5, 0xe6, - 0x75, 0xce, 0xbe, 0x8a, 0x65, 0x16, 0x9a, 0x8f, 0x05, 0x3a, 0x0f, 0xbd, 0x8f, 0x45, 0x64, 0x08, - 0x91, 0xa1, 0x8d, 0x0c, 0x1f, 0x7a, 0x8f, 0x15, 0xc8, 0xfd, 0xfb, 0x97, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x80, 0x53, 0xd3, 0xff, 0x04, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/logging/v2/logging.pb.go b/vendor/google.golang.org/genproto/googleapis/logging/v2/logging.pb.go deleted file mode 100644 index 12e712c5..00000000 --- a/vendor/google.golang.org/genproto/googleapis/logging/v2/logging.pb.go +++ /dev/null @@ -1,782 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/logging/v2/logging.proto - -package logging - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api3 "google.golang.org/genproto/googleapis/api/monitoredres" -import _ "github.com/golang/protobuf/ptypes/duration" -import google_protobuf5 "github.com/golang/protobuf/ptypes/empty" -import _ "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The parameters to DeleteLog. -type DeleteLogRequest struct { - // Required. The resource name of the log to delete: - // - // "projects/[PROJECT_ID]/logs/[LOG_ID]" - // "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]" - // "folders/[FOLDER_ID]/logs/[LOG_ID]" - // - // `[LOG_ID]` must be URL-encoded. For example, - // `"projects/my-project-id/logs/syslog"`, - // `"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity"`. - // For more information about log names, see - // [LogEntry][google.logging.v2.LogEntry]. - LogName string `protobuf:"bytes,1,opt,name=log_name,json=logName" json:"log_name,omitempty"` -} - -func (m *DeleteLogRequest) Reset() { *m = DeleteLogRequest{} } -func (m *DeleteLogRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteLogRequest) ProtoMessage() {} -func (*DeleteLogRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *DeleteLogRequest) GetLogName() string { - if m != nil { - return m.LogName - } - return "" -} - -// The parameters to WriteLogEntries. -type WriteLogEntriesRequest struct { - // Optional. A default log resource name that is assigned to all log entries - // in `entries` that do not specify a value for `log_name`: - // - // "projects/[PROJECT_ID]/logs/[LOG_ID]" - // "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]" - // "folders/[FOLDER_ID]/logs/[LOG_ID]" - // - // `[LOG_ID]` must be URL-encoded. For example, - // `"projects/my-project-id/logs/syslog"` or - // `"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity"`. - // For more information about log names, see - // [LogEntry][google.logging.v2.LogEntry]. - LogName string `protobuf:"bytes,1,opt,name=log_name,json=logName" json:"log_name,omitempty"` - // Optional. A default monitored resource object that is assigned to all log - // entries in `entries` that do not specify a value for `resource`. Example: - // - // { "type": "gce_instance", - // "labels": { - // "zone": "us-central1-a", "instance_id": "00000000000000000000" }} - // - // See [LogEntry][google.logging.v2.LogEntry]. - Resource *google_api3.MonitoredResource `protobuf:"bytes,2,opt,name=resource" json:"resource,omitempty"` - // Optional. Default labels that are added to the `labels` field of all log - // entries in `entries`. If a log entry already has a label with the same key - // as a label in this parameter, then the log entry's label is not changed. - // See [LogEntry][google.logging.v2.LogEntry]. - Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Required. The log entries to send to Stackdriver Logging. The order of log - // entries in this list does not matter. Values supplied in this method's - // `log_name`, `resource`, and `labels` fields are copied into those log - // entries in this list that do not include values for their corresponding - // fields. For more information, see the [LogEntry][google.logging.v2.LogEntry] type. - // - // If the `timestamp` or `insert_id` fields are missing in log entries, then - // this method supplies the current time or a unique identifier, respectively. - // The supplied values are chosen so that, among the log entries that did not - // supply their own values, the entries earlier in the list will sort before - // the entries later in the list. See the `entries.list` method. - // - // Log entries with timestamps that are more than the - // [logs retention period](/logging/quota-policy) in the past or more than - // 24 hours in the future might be discarded. Discarding does not return - // an error. - // - // To improve throughput and to avoid exceeding the - // [quota limit](/logging/quota-policy) for calls to `entries.write`, - // you should try to include several log entries in this list, - // rather than calling this method for each individual log entry. - Entries []*LogEntry `protobuf:"bytes,4,rep,name=entries" json:"entries,omitempty"` - // Optional. Whether valid entries should be written even if some other - // entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any - // entry is not written, then the response status is the error associated - // with one of the failed entries and the response includes error details - // keyed by the entries' zero-based index in the `entries.write` method. - PartialSuccess bool `protobuf:"varint,5,opt,name=partial_success,json=partialSuccess" json:"partial_success,omitempty"` -} - -func (m *WriteLogEntriesRequest) Reset() { *m = WriteLogEntriesRequest{} } -func (m *WriteLogEntriesRequest) String() string { return proto.CompactTextString(m) } -func (*WriteLogEntriesRequest) ProtoMessage() {} -func (*WriteLogEntriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *WriteLogEntriesRequest) GetLogName() string { - if m != nil { - return m.LogName - } - return "" -} - -func (m *WriteLogEntriesRequest) GetResource() *google_api3.MonitoredResource { - if m != nil { - return m.Resource - } - return nil -} - -func (m *WriteLogEntriesRequest) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *WriteLogEntriesRequest) GetEntries() []*LogEntry { - if m != nil { - return m.Entries - } - return nil -} - -func (m *WriteLogEntriesRequest) GetPartialSuccess() bool { - if m != nil { - return m.PartialSuccess - } - return false -} - -// Result returned from WriteLogEntries. -// empty -type WriteLogEntriesResponse struct { -} - -func (m *WriteLogEntriesResponse) Reset() { *m = WriteLogEntriesResponse{} } -func (m *WriteLogEntriesResponse) String() string { return proto.CompactTextString(m) } -func (*WriteLogEntriesResponse) ProtoMessage() {} -func (*WriteLogEntriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -// Error details for WriteLogEntries with partial success. -type WriteLogEntriesPartialErrors struct { - // When `WriteLogEntriesRequest.partial_success` is true, records the error - // status for entries that were not written due to a permanent error, keyed - // by the entry's zero-based index in `WriteLogEntriesRequest.entries`. - // - // Failed requests for which no entries are written will not include - // per-entry errors. - LogEntryErrors map[int32]*google_rpc.Status `protobuf:"bytes,1,rep,name=log_entry_errors,json=logEntryErrors" json:"log_entry_errors,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *WriteLogEntriesPartialErrors) Reset() { *m = WriteLogEntriesPartialErrors{} } -func (m *WriteLogEntriesPartialErrors) String() string { return proto.CompactTextString(m) } -func (*WriteLogEntriesPartialErrors) ProtoMessage() {} -func (*WriteLogEntriesPartialErrors) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *WriteLogEntriesPartialErrors) GetLogEntryErrors() map[int32]*google_rpc.Status { - if m != nil { - return m.LogEntryErrors - } - return nil -} - -// The parameters to `ListLogEntries`. -type ListLogEntriesRequest struct { - // Deprecated. Use `resource_names` instead. One or more project identifiers - // or project numbers from which to retrieve log entries. Example: - // `"my-project-1A"`. If present, these project identifiers are converted to - // resource name format and added to the list of resources in - // `resource_names`. - ProjectIds []string `protobuf:"bytes,1,rep,name=project_ids,json=projectIds" json:"project_ids,omitempty"` - // Required. Names of one or more parent resources from which to - // retrieve log entries: - // - // "projects/[PROJECT_ID]" - // "organizations/[ORGANIZATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]" - // "folders/[FOLDER_ID]" - // - // Projects listed in the `project_ids` field are added to this list. - ResourceNames []string `protobuf:"bytes,8,rep,name=resource_names,json=resourceNames" json:"resource_names,omitempty"` - // Optional. A filter that chooses which log entries to return. See [Advanced - // Logs Filters](/logging/docs/view/advanced_filters). Only log entries that - // match the filter are returned. An empty filter matches all log entries in - // the resources listed in `resource_names`. Referencing a parent resource - // that is not listed in `resource_names` will cause the filter to return no - // results. - // The maximum length of the filter is 20000 characters. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // Optional. How the results should be sorted. Presently, the only permitted - // values are `"timestamp asc"` (default) and `"timestamp desc"`. The first - // option returns entries in order of increasing values of - // `LogEntry.timestamp` (oldest first), and the second option returns entries - // in order of decreasing timestamps (newest first). Entries with equal - // timestamps are returned in order of their `insert_id` values. - OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy" json:"order_by,omitempty"` - // Optional. The maximum number of results to return from this request. - // Non-positive values are ignored. The presence of `next_page_token` in the - // response indicates that more results might be available. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. If present, then retrieve the next batch of results from the - // preceding call to this method. `page_token` must be the value of - // `next_page_token` from the previous response. The values of other method - // parameters should be identical to those in the previous call. - PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListLogEntriesRequest) Reset() { *m = ListLogEntriesRequest{} } -func (m *ListLogEntriesRequest) String() string { return proto.CompactTextString(m) } -func (*ListLogEntriesRequest) ProtoMessage() {} -func (*ListLogEntriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *ListLogEntriesRequest) GetProjectIds() []string { - if m != nil { - return m.ProjectIds - } - return nil -} - -func (m *ListLogEntriesRequest) GetResourceNames() []string { - if m != nil { - return m.ResourceNames - } - return nil -} - -func (m *ListLogEntriesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListLogEntriesRequest) GetOrderBy() string { - if m != nil { - return m.OrderBy - } - return "" -} - -func (m *ListLogEntriesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListLogEntriesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Result returned from `ListLogEntries`. -type ListLogEntriesResponse struct { - // A list of log entries. If `entries` is empty, `nextPageToken` may still be - // returned, indicating that more entries may exist. See `nextPageToken` for - // more information. - Entries []*LogEntry `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty"` - // If there might be more results than those appearing in this response, then - // `nextPageToken` is included. To get the next set of results, call this - // method again using the value of `nextPageToken` as `pageToken`. - // - // If a value for `next_page_token` appears and the `entries` field is empty, - // it means that the search found no log entries so far but it did not have - // time to search all the possible log entries. Retry the method with this - // value for `page_token` to continue the search. Alternatively, consider - // speeding up the search by changing your filter to specify a single log name - // or resource type, or to narrow the time range of the search. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListLogEntriesResponse) Reset() { *m = ListLogEntriesResponse{} } -func (m *ListLogEntriesResponse) String() string { return proto.CompactTextString(m) } -func (*ListLogEntriesResponse) ProtoMessage() {} -func (*ListLogEntriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *ListLogEntriesResponse) GetEntries() []*LogEntry { - if m != nil { - return m.Entries - } - return nil -} - -func (m *ListLogEntriesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The parameters to ListMonitoredResourceDescriptors -type ListMonitoredResourceDescriptorsRequest struct { - // Optional. The maximum number of results to return from this request. - // Non-positive values are ignored. The presence of `nextPageToken` in the - // response indicates that more results might be available. - PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. If present, then retrieve the next batch of results from the - // preceding call to this method. `pageToken` must be the value of - // `nextPageToken` from the previous response. The values of other method - // parameters should be identical to those in the previous call. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListMonitoredResourceDescriptorsRequest) Reset() { - *m = ListMonitoredResourceDescriptorsRequest{} -} -func (m *ListMonitoredResourceDescriptorsRequest) String() string { return proto.CompactTextString(m) } -func (*ListMonitoredResourceDescriptorsRequest) ProtoMessage() {} -func (*ListMonitoredResourceDescriptorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{6} -} - -func (m *ListMonitoredResourceDescriptorsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListMonitoredResourceDescriptorsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Result returned from ListMonitoredResourceDescriptors. -type ListMonitoredResourceDescriptorsResponse struct { - // A list of resource descriptors. - ResourceDescriptors []*google_api3.MonitoredResourceDescriptor `protobuf:"bytes,1,rep,name=resource_descriptors,json=resourceDescriptors" json:"resource_descriptors,omitempty"` - // If there might be more results than those appearing in this response, then - // `nextPageToken` is included. To get the next set of results, call this - // method again using the value of `nextPageToken` as `pageToken`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListMonitoredResourceDescriptorsResponse) Reset() { - *m = ListMonitoredResourceDescriptorsResponse{} -} -func (m *ListMonitoredResourceDescriptorsResponse) String() string { return proto.CompactTextString(m) } -func (*ListMonitoredResourceDescriptorsResponse) ProtoMessage() {} -func (*ListMonitoredResourceDescriptorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{7} -} - -func (m *ListMonitoredResourceDescriptorsResponse) GetResourceDescriptors() []*google_api3.MonitoredResourceDescriptor { - if m != nil { - return m.ResourceDescriptors - } - return nil -} - -func (m *ListMonitoredResourceDescriptorsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The parameters to ListLogs. -type ListLogsRequest struct { - // Required. The resource name that owns the logs: - // - // "projects/[PROJECT_ID]" - // "organizations/[ORGANIZATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]" - // "folders/[FOLDER_ID]" - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. The maximum number of results to return from this request. - // Non-positive values are ignored. The presence of `nextPageToken` in the - // response indicates that more results might be available. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // Optional. If present, then retrieve the next batch of results from the - // preceding call to this method. `pageToken` must be the value of - // `nextPageToken` from the previous response. The values of other method - // parameters should be identical to those in the previous call. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListLogsRequest) Reset() { *m = ListLogsRequest{} } -func (m *ListLogsRequest) String() string { return proto.CompactTextString(m) } -func (*ListLogsRequest) ProtoMessage() {} -func (*ListLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *ListLogsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListLogsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListLogsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Result returned from ListLogs. -type ListLogsResponse struct { - // A list of log names. For example, - // `"projects/my-project/syslog"` or - // `"organizations/123/cloudresourcemanager.googleapis.com%2Factivity"`. - LogNames []string `protobuf:"bytes,3,rep,name=log_names,json=logNames" json:"log_names,omitempty"` - // If there might be more results than those appearing in this response, then - // `nextPageToken` is included. To get the next set of results, call this - // method again using the value of `nextPageToken` as `pageToken`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListLogsResponse) Reset() { *m = ListLogsResponse{} } -func (m *ListLogsResponse) String() string { return proto.CompactTextString(m) } -func (*ListLogsResponse) ProtoMessage() {} -func (*ListLogsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *ListLogsResponse) GetLogNames() []string { - if m != nil { - return m.LogNames - } - return nil -} - -func (m *ListLogsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func init() { - proto.RegisterType((*DeleteLogRequest)(nil), "google.logging.v2.DeleteLogRequest") - proto.RegisterType((*WriteLogEntriesRequest)(nil), "google.logging.v2.WriteLogEntriesRequest") - proto.RegisterType((*WriteLogEntriesResponse)(nil), "google.logging.v2.WriteLogEntriesResponse") - proto.RegisterType((*WriteLogEntriesPartialErrors)(nil), "google.logging.v2.WriteLogEntriesPartialErrors") - proto.RegisterType((*ListLogEntriesRequest)(nil), "google.logging.v2.ListLogEntriesRequest") - proto.RegisterType((*ListLogEntriesResponse)(nil), "google.logging.v2.ListLogEntriesResponse") - proto.RegisterType((*ListMonitoredResourceDescriptorsRequest)(nil), "google.logging.v2.ListMonitoredResourceDescriptorsRequest") - proto.RegisterType((*ListMonitoredResourceDescriptorsResponse)(nil), "google.logging.v2.ListMonitoredResourceDescriptorsResponse") - proto.RegisterType((*ListLogsRequest)(nil), "google.logging.v2.ListLogsRequest") - proto.RegisterType((*ListLogsResponse)(nil), "google.logging.v2.ListLogsResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for LoggingServiceV2 service - -type LoggingServiceV2Client interface { - // Deletes all the log entries in a log. - // The log reappears if it receives new entries. - // Log entries written shortly before the delete operation might not be - // deleted. - DeleteLog(ctx context.Context, in *DeleteLogRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) - // ## Log entry resources - // - // Writes log entries to Stackdriver Logging. This API method is the - // only way to send log entries to Stackdriver Logging. This method - // is used, directly or indirectly, by the Stackdriver Logging agent - // (fluentd) and all logging libraries configured to use Stackdriver - // Logging. - WriteLogEntries(ctx context.Context, in *WriteLogEntriesRequest, opts ...grpc.CallOption) (*WriteLogEntriesResponse, error) - // Lists log entries. Use this method to retrieve log entries from - // Stackdriver Logging. For ways to export log entries, see - // [Exporting Logs](/logging/docs/export). - ListLogEntries(ctx context.Context, in *ListLogEntriesRequest, opts ...grpc.CallOption) (*ListLogEntriesResponse, error) - // Lists the descriptors for monitored resource types used by Stackdriver - // Logging. - ListMonitoredResourceDescriptors(ctx context.Context, in *ListMonitoredResourceDescriptorsRequest, opts ...grpc.CallOption) (*ListMonitoredResourceDescriptorsResponse, error) - // Lists the logs in projects, organizations, folders, or billing accounts. - // Only logs that have entries are listed. - ListLogs(ctx context.Context, in *ListLogsRequest, opts ...grpc.CallOption) (*ListLogsResponse, error) -} - -type loggingServiceV2Client struct { - cc *grpc.ClientConn -} - -func NewLoggingServiceV2Client(cc *grpc.ClientConn) LoggingServiceV2Client { - return &loggingServiceV2Client{cc} -} - -func (c *loggingServiceV2Client) DeleteLog(ctx context.Context, in *DeleteLogRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) { - out := new(google_protobuf5.Empty) - err := grpc.Invoke(ctx, "/google.logging.v2.LoggingServiceV2/DeleteLog", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *loggingServiceV2Client) WriteLogEntries(ctx context.Context, in *WriteLogEntriesRequest, opts ...grpc.CallOption) (*WriteLogEntriesResponse, error) { - out := new(WriteLogEntriesResponse) - err := grpc.Invoke(ctx, "/google.logging.v2.LoggingServiceV2/WriteLogEntries", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *loggingServiceV2Client) ListLogEntries(ctx context.Context, in *ListLogEntriesRequest, opts ...grpc.CallOption) (*ListLogEntriesResponse, error) { - out := new(ListLogEntriesResponse) - err := grpc.Invoke(ctx, "/google.logging.v2.LoggingServiceV2/ListLogEntries", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *loggingServiceV2Client) ListMonitoredResourceDescriptors(ctx context.Context, in *ListMonitoredResourceDescriptorsRequest, opts ...grpc.CallOption) (*ListMonitoredResourceDescriptorsResponse, error) { - out := new(ListMonitoredResourceDescriptorsResponse) - err := grpc.Invoke(ctx, "/google.logging.v2.LoggingServiceV2/ListMonitoredResourceDescriptors", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *loggingServiceV2Client) ListLogs(ctx context.Context, in *ListLogsRequest, opts ...grpc.CallOption) (*ListLogsResponse, error) { - out := new(ListLogsResponse) - err := grpc.Invoke(ctx, "/google.logging.v2.LoggingServiceV2/ListLogs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for LoggingServiceV2 service - -type LoggingServiceV2Server interface { - // Deletes all the log entries in a log. - // The log reappears if it receives new entries. - // Log entries written shortly before the delete operation might not be - // deleted. - DeleteLog(context.Context, *DeleteLogRequest) (*google_protobuf5.Empty, error) - // ## Log entry resources - // - // Writes log entries to Stackdriver Logging. This API method is the - // only way to send log entries to Stackdriver Logging. This method - // is used, directly or indirectly, by the Stackdriver Logging agent - // (fluentd) and all logging libraries configured to use Stackdriver - // Logging. - WriteLogEntries(context.Context, *WriteLogEntriesRequest) (*WriteLogEntriesResponse, error) - // Lists log entries. Use this method to retrieve log entries from - // Stackdriver Logging. For ways to export log entries, see - // [Exporting Logs](/logging/docs/export). - ListLogEntries(context.Context, *ListLogEntriesRequest) (*ListLogEntriesResponse, error) - // Lists the descriptors for monitored resource types used by Stackdriver - // Logging. - ListMonitoredResourceDescriptors(context.Context, *ListMonitoredResourceDescriptorsRequest) (*ListMonitoredResourceDescriptorsResponse, error) - // Lists the logs in projects, organizations, folders, or billing accounts. - // Only logs that have entries are listed. - ListLogs(context.Context, *ListLogsRequest) (*ListLogsResponse, error) -} - -func RegisterLoggingServiceV2Server(s *grpc.Server, srv LoggingServiceV2Server) { - s.RegisterService(&_LoggingServiceV2_serviceDesc, srv) -} - -func _LoggingServiceV2_DeleteLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteLogRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LoggingServiceV2Server).DeleteLog(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.LoggingServiceV2/DeleteLog", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LoggingServiceV2Server).DeleteLog(ctx, req.(*DeleteLogRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LoggingServiceV2_WriteLogEntries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WriteLogEntriesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LoggingServiceV2Server).WriteLogEntries(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.LoggingServiceV2/WriteLogEntries", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LoggingServiceV2Server).WriteLogEntries(ctx, req.(*WriteLogEntriesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LoggingServiceV2_ListLogEntries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListLogEntriesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LoggingServiceV2Server).ListLogEntries(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.LoggingServiceV2/ListLogEntries", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LoggingServiceV2Server).ListLogEntries(ctx, req.(*ListLogEntriesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LoggingServiceV2_ListMonitoredResourceDescriptors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListMonitoredResourceDescriptorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LoggingServiceV2Server).ListMonitoredResourceDescriptors(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.LoggingServiceV2/ListMonitoredResourceDescriptors", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LoggingServiceV2Server).ListMonitoredResourceDescriptors(ctx, req.(*ListMonitoredResourceDescriptorsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _LoggingServiceV2_ListLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListLogsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LoggingServiceV2Server).ListLogs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.LoggingServiceV2/ListLogs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LoggingServiceV2Server).ListLogs(ctx, req.(*ListLogsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _LoggingServiceV2_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.logging.v2.LoggingServiceV2", - HandlerType: (*LoggingServiceV2Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "DeleteLog", - Handler: _LoggingServiceV2_DeleteLog_Handler, - }, - { - MethodName: "WriteLogEntries", - Handler: _LoggingServiceV2_WriteLogEntries_Handler, - }, - { - MethodName: "ListLogEntries", - Handler: _LoggingServiceV2_ListLogEntries_Handler, - }, - { - MethodName: "ListMonitoredResourceDescriptors", - Handler: _LoggingServiceV2_ListMonitoredResourceDescriptors_Handler, - }, - { - MethodName: "ListLogs", - Handler: _LoggingServiceV2_ListLogs_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/logging/v2/logging.proto", -} - -func init() { proto.RegisterFile("google/logging/v2/logging.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 991 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcd, 0x6e, 0xdb, 0x46, - 0x10, 0xc6, 0x4a, 0xb1, 0x23, 0x8d, 0x1a, 0x5b, 0xd9, 0xc4, 0xb2, 0x22, 0xd9, 0xb5, 0x4a, 0x23, - 0xb5, 0x22, 0x20, 0x24, 0xca, 0x22, 0x40, 0xe2, 0x20, 0x17, 0x27, 0x46, 0x51, 0xc0, 0x29, 0x0c, - 0xba, 0x75, 0x80, 0xc0, 0x80, 0x40, 0x49, 0x1b, 0x62, 0x1b, 0x8a, 0xcb, 0xee, 0xae, 0xe4, 0x2a, - 0x41, 0x2e, 0x39, 0xf4, 0x05, 0x7a, 0xe9, 0x33, 0xf4, 0xd0, 0xb7, 0xe8, 0xa5, 0x87, 0x5e, 0x8a, - 0x02, 0x7d, 0x80, 0x3c, 0x44, 0x8f, 0x05, 0x77, 0x97, 0x32, 0xf5, 0x13, 0x59, 0xee, 0x4d, 0x3b, - 0xf3, 0xed, 0xcc, 0x7c, 0xc3, 0x6f, 0x66, 0x05, 0x3b, 0x01, 0x63, 0x41, 0x48, 0x9c, 0x90, 0x05, - 0x01, 0x8d, 0x02, 0x67, 0xe8, 0xa6, 0x3f, 0xed, 0x98, 0x33, 0xc9, 0xf0, 0x4d, 0x0d, 0xb0, 0x53, - 0xeb, 0xd0, 0xad, 0x6d, 0x99, 0x3b, 0x7e, 0x4c, 0x1d, 0x3f, 0x8a, 0x98, 0xf4, 0x25, 0x65, 0x91, - 0xd0, 0x17, 0x6a, 0xbb, 0x19, 0x6f, 0x9f, 0x45, 0x54, 0x32, 0x4e, 0x7a, 0x6d, 0x4e, 0x04, 0x1b, - 0xf0, 0x2e, 0x31, 0xa0, 0xcf, 0xe6, 0xa6, 0x6d, 0x93, 0x48, 0xf2, 0x91, 0x81, 0x7c, 0x6a, 0x20, - 0xea, 0xd4, 0x19, 0xbc, 0x72, 0x7a, 0x03, 0xae, 0x12, 0x19, 0x7f, 0x7d, 0xda, 0x4f, 0xfa, 0xb1, - 0x4c, 0x2f, 0xef, 0x4c, 0x3b, 0x25, 0xed, 0x13, 0x21, 0xfd, 0x7e, 0x6c, 0x00, 0x9b, 0x06, 0xc0, - 0xe3, 0xae, 0x23, 0xa4, 0x2f, 0x07, 0xa6, 0x7c, 0xeb, 0x3e, 0x94, 0x9f, 0x91, 0x90, 0x48, 0x72, - 0xc4, 0x02, 0x8f, 0xfc, 0x30, 0x20, 0x42, 0xe2, 0x3b, 0x50, 0x48, 0xaa, 0x8b, 0xfc, 0x3e, 0xa9, - 0xa2, 0x06, 0x6a, 0x16, 0xbd, 0xeb, 0x21, 0x0b, 0xbe, 0xf1, 0xfb, 0xc4, 0xfa, 0x27, 0x07, 0x95, - 0x17, 0x9c, 0x2a, 0xf8, 0x61, 0x24, 0x39, 0x25, 0xe2, 0xf2, 0x5b, 0xf8, 0x11, 0x14, 0xd2, 0x86, - 0x54, 0x73, 0x0d, 0xd4, 0x2c, 0xb9, 0xdb, 0xb6, 0xe9, 0xb3, 0x1f, 0x53, 0xfb, 0x79, 0xda, 0x36, - 0xcf, 0x80, 0xbc, 0x31, 0x1c, 0x3f, 0x87, 0xd5, 0xd0, 0xef, 0x90, 0x50, 0x54, 0xf3, 0x8d, 0x7c, - 0xb3, 0xe4, 0x3e, 0xb0, 0x67, 0x3e, 0x90, 0x3d, 0xbf, 0x20, 0xfb, 0x48, 0xdd, 0x4b, 0x8c, 0x23, - 0xcf, 0x04, 0xc1, 0x0f, 0xe0, 0x3a, 0xd1, 0xa8, 0xea, 0x35, 0x15, 0xaf, 0x3e, 0x27, 0x9e, 0x09, - 0x35, 0xf2, 0x52, 0x2c, 0xde, 0x83, 0xf5, 0xd8, 0xe7, 0x92, 0xfa, 0x61, 0x5b, 0x0c, 0xba, 0x5d, - 0x22, 0x44, 0x75, 0xa5, 0x81, 0x9a, 0x05, 0x6f, 0xcd, 0x98, 0x4f, 0xb4, 0xb5, 0xf6, 0x08, 0x4a, - 0x99, 0xb4, 0xb8, 0x0c, 0xf9, 0xd7, 0x64, 0x64, 0xda, 0x91, 0xfc, 0xc4, 0xb7, 0x61, 0x65, 0xe8, - 0x87, 0x03, 0xdd, 0x87, 0xa2, 0xa7, 0x0f, 0xfb, 0xb9, 0x87, 0xc8, 0xba, 0x03, 0x9b, 0x33, 0x44, - 0x44, 0xcc, 0x22, 0x41, 0xac, 0x0f, 0x08, 0xb6, 0xa6, 0x7c, 0xc7, 0x3a, 0xef, 0x21, 0xe7, 0x8c, - 0x0b, 0xdc, 0x87, 0xf2, 0x58, 0x4f, 0x6d, 0xa2, 0x6c, 0x55, 0xa4, 0xf8, 0x3d, 0xbd, 0xbc, 0x5f, - 0x13, 0xa1, 0xc6, 0xe4, 0xf5, 0x51, 0xf7, 0x61, 0x2d, 0x9c, 0x30, 0xd6, 0xbe, 0x83, 0x5b, 0x73, - 0x60, 0x59, 0xb6, 0x2b, 0x9a, 0x6d, 0x33, 0xcb, 0xb6, 0xe4, 0xe2, 0xb4, 0x18, 0x1e, 0x77, 0xed, - 0x13, 0x25, 0xc3, 0x6c, 0x07, 0xfe, 0x44, 0xb0, 0x71, 0x44, 0x85, 0x9c, 0xd5, 0xd6, 0x0e, 0x94, - 0x62, 0xce, 0xbe, 0x27, 0x5d, 0xd9, 0xa6, 0x3d, 0x4d, 0xad, 0xe8, 0x81, 0x31, 0x7d, 0xdd, 0x13, - 0xf8, 0x2e, 0xac, 0xa5, 0x92, 0x51, 0x0a, 0x14, 0xd5, 0x82, 0xc2, 0xdc, 0x48, 0xad, 0x89, 0x0e, - 0x05, 0xae, 0xc0, 0xea, 0x2b, 0x1a, 0x4a, 0xc2, 0x4d, 0xfb, 0xcd, 0x29, 0xd1, 0x2e, 0xe3, 0x3d, - 0xc2, 0xdb, 0x9d, 0x51, 0x35, 0xaf, 0xb5, 0xab, 0xce, 0x07, 0x23, 0x5c, 0x87, 0x62, 0xec, 0x07, - 0xa4, 0x2d, 0xe8, 0x1b, 0x52, 0xbd, 0xa6, 0xa8, 0x15, 0x12, 0xc3, 0x09, 0x7d, 0x43, 0xf0, 0x36, - 0x80, 0x72, 0x4a, 0xf6, 0x9a, 0x44, 0x4a, 0x12, 0x45, 0x4f, 0xc1, 0xbf, 0x4d, 0x0c, 0xd6, 0x39, - 0x54, 0xa6, 0xf9, 0xe8, 0x2f, 0x9a, 0xd5, 0x21, 0xba, 0x82, 0x0e, 0x3f, 0x87, 0xf5, 0x88, 0xfc, - 0x28, 0xdb, 0x99, 0xa4, 0x9a, 0xc8, 0x8d, 0xc4, 0x7c, 0x3c, 0x4e, 0x4c, 0x60, 0x2f, 0x49, 0x3c, - 0x33, 0x58, 0xcf, 0x88, 0xe8, 0x72, 0x1a, 0x4b, 0xc6, 0xc7, 0xad, 0x9d, 0xe0, 0x87, 0x16, 0xf2, - 0xcb, 0x4d, 0xf3, 0xfb, 0x0d, 0x41, 0xf3, 0xf2, 0x3c, 0x86, 0xf2, 0x4b, 0xb8, 0x3d, 0xfe, 0x44, - 0xbd, 0x0b, 0xbf, 0xe1, 0xbf, 0xb7, 0x70, 0x21, 0x5c, 0xc4, 0xf3, 0x6e, 0xf1, 0xd9, 0x1c, 0x57, - 0xe8, 0xcb, 0xba, 0xf9, 0x20, 0x63, 0xfe, 0x15, 0x58, 0x8d, 0x7d, 0x4e, 0x22, 0x69, 0xa6, 0xd4, - 0x9c, 0x26, 0xfb, 0x92, 0x5b, 0xd8, 0x97, 0xfc, 0x74, 0x5f, 0x5e, 0x40, 0xf9, 0x22, 0x8d, 0xa1, - 0x5f, 0x87, 0x62, 0xba, 0x1e, 0xf5, 0x2e, 0x2b, 0x7a, 0x05, 0xb3, 0x1f, 0x97, 0xae, 0xdf, 0xfd, - 0x7b, 0x05, 0xca, 0x47, 0x5a, 0x20, 0x27, 0x84, 0x0f, 0x69, 0x97, 0x9c, 0xba, 0xf8, 0x1c, 0x8a, - 0xe3, 0x15, 0x8e, 0x77, 0xe7, 0xe8, 0x68, 0x7a, 0xc1, 0xd7, 0x2a, 0x29, 0x28, 0x7d, 0x2f, 0xec, - 0xc3, 0xe4, 0x31, 0xb1, 0xee, 0xbf, 0xff, 0xeb, 0xc3, 0xcf, 0xb9, 0xbd, 0xd6, 0x5d, 0x67, 0xe8, - 0x76, 0x88, 0xf4, 0xbf, 0x70, 0xde, 0xa6, 0x35, 0x3f, 0x31, 0xc3, 0x26, 0x9c, 0x56, 0xf2, 0x74, - 0x09, 0xa7, 0xf5, 0x0e, 0xff, 0x84, 0x60, 0x7d, 0x6a, 0x97, 0xe0, 0x7b, 0x4b, 0xef, 0xe7, 0x5a, - 0x6b, 0x19, 0xa8, 0xd9, 0x80, 0x5b, 0xaa, 0xb2, 0x8a, 0x75, 0x33, 0x79, 0x3a, 0xcd, 0x34, 0xec, - 0x9f, 0x27, 0xe0, 0x7d, 0xd4, 0xc2, 0xef, 0x11, 0xac, 0x4d, 0x0e, 0x1a, 0x6e, 0xce, 0x9b, 0xa7, - 0x79, 0xbb, 0xa5, 0x76, 0x6f, 0x09, 0xa4, 0xa9, 0xa2, 0xae, 0xaa, 0xd8, 0xb0, 0xca, 0xd9, 0x2a, - 0x42, 0x2a, 0x64, 0x52, 0xc4, 0xef, 0x08, 0x1a, 0x97, 0x0d, 0x03, 0xde, 0xff, 0x48, 0xb2, 0x25, - 0x26, 0xb5, 0xf6, 0xf8, 0x7f, 0xdd, 0x35, 0xa5, 0x37, 0x55, 0xe9, 0x16, 0x6e, 0x24, 0xa5, 0xf7, - 0x17, 0x95, 0xc8, 0xa1, 0x90, 0x8a, 0x17, 0x5b, 0x1f, 0xef, 0xcd, 0xb8, 0xac, 0xdd, 0x85, 0x18, - 0x93, 0x7e, 0x5b, 0xa5, 0xdf, 0xc4, 0x1b, 0x49, 0xfa, 0xb7, 0x7a, 0xc4, 0x9e, 0xb4, 0x9c, 0xd6, - 0x3b, 0x25, 0xa6, 0x83, 0x5f, 0x10, 0x6c, 0x74, 0x59, 0x7f, 0x36, 0xd2, 0xc1, 0x27, 0x46, 0xee, - 0xc7, 0x89, 0x52, 0x8f, 0xd1, 0xcb, 0x87, 0x06, 0x12, 0xb0, 0xd0, 0x8f, 0x02, 0x9b, 0xf1, 0xc0, - 0x09, 0x48, 0xa4, 0x74, 0xec, 0x68, 0x97, 0x1f, 0x53, 0x91, 0xf9, 0xa3, 0xf5, 0xd8, 0xfc, 0xfc, - 0x17, 0xa1, 0x5f, 0x73, 0x9b, 0x5f, 0xe9, 0xdb, 0x4f, 0x43, 0x36, 0xe8, 0xd9, 0x26, 0xb4, 0x7d, - 0xea, 0xfe, 0x91, 0x7a, 0xce, 0x94, 0xe7, 0xcc, 0x78, 0xce, 0x4e, 0xdd, 0xce, 0xaa, 0x8a, 0xfd, - 0xe5, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x96, 0xc5, 0x3e, 0x3a, 0x0a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/logging/v2/logging_config.pb.go b/vendor/google.golang.org/genproto/googleapis/logging/v2/logging_config.pb.go deleted file mode 100644 index 00fd85ea..00000000 --- a/vendor/google.golang.org/genproto/googleapis/logging/v2/logging_config.pb.go +++ /dev/null @@ -1,1213 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/logging/v2/logging_config.proto - -package logging - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf5 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf6 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Available log entry formats. Log entries can be written to Stackdriver -// Logging in either format and can be exported in either format. -// Version 2 is the preferred format. -type LogSink_VersionFormat int32 - -const ( - // An unspecified format version that will default to V2. - LogSink_VERSION_FORMAT_UNSPECIFIED LogSink_VersionFormat = 0 - // `LogEntry` version 2 format. - LogSink_V2 LogSink_VersionFormat = 1 - // `LogEntry` version 1 format. - LogSink_V1 LogSink_VersionFormat = 2 -) - -var LogSink_VersionFormat_name = map[int32]string{ - 0: "VERSION_FORMAT_UNSPECIFIED", - 1: "V2", - 2: "V1", -} -var LogSink_VersionFormat_value = map[string]int32{ - "VERSION_FORMAT_UNSPECIFIED": 0, - "V2": 1, - "V1": 2, -} - -func (x LogSink_VersionFormat) String() string { - return proto.EnumName(LogSink_VersionFormat_name, int32(x)) -} -func (LogSink_VersionFormat) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -// Describes a sink used to export log entries to one of the following -// destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a -// Cloud Pub/Sub topic. A logs filter controls which log entries are -// exported. The sink must be created within a project, organization, billing -// account, or folder. -type LogSink struct { - // Required. The client-assigned sink identifier, unique within the - // project. Example: `"my-syslog-errors-to-pubsub"`. Sink identifiers are - // limited to 100 characters and can include only the following characters: - // upper and lower-case alphanumeric characters, underscores, hyphens, and - // periods. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The export destination: - // - // "storage.googleapis.com/[GCS_BUCKET]" - // "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]" - // "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]" - // - // The sink's `writer_identity`, set when the sink is created, must - // have permission to write to the destination or else the log - // entries are not exported. For more information, see - // [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs). - Destination string `protobuf:"bytes,3,opt,name=destination" json:"destination,omitempty"` - // Optional. - // An [advanced logs filter](/logging/docs/view/advanced_filters). The only - // exported log entries are those that are in the resource owning the sink and - // that match the filter. For example: - // - // logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR - Filter string `protobuf:"bytes,5,opt,name=filter" json:"filter,omitempty"` - // Deprecated. The log entry format to use for this sink's exported log - // entries. The v2 format is used by default and cannot be changed. - OutputVersionFormat LogSink_VersionFormat `protobuf:"varint,6,opt,name=output_version_format,json=outputVersionFormat,enum=google.logging.v2.LogSink_VersionFormat" json:"output_version_format,omitempty"` - // Output only. An IAM identity&mdash;a service account or group&mdash;under - // which Stackdriver Logging writes the exported log entries to the sink's - // destination. This field is set by - // [sinks.create](/logging/docs/api/reference/rest/v2/projects.sinks/create) - // and - // [sinks.update](/logging/docs/api/reference/rest/v2/projects.sinks/update), - // based on the setting of `unique_writer_identity` in those methods. - // - // Until you grant this identity write-access to the destination, log entry - // exports from this sink will fail. For more information, - // see [Granting access for a - // resource](/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource). - // Consult the destination service's documentation to determine the - // appropriate IAM roles to assign to the identity. - WriterIdentity string `protobuf:"bytes,8,opt,name=writer_identity,json=writerIdentity" json:"writer_identity,omitempty"` - // Optional. This field applies only to sinks owned by organizations and - // folders. If the field is false, the default, only the logs owned by the - // sink's parent resource are available for export. If the field is true, then - // logs from all the projects, folders, and billing accounts contained in the - // sink's parent resource are also available for export. Whether a particular - // log entry from the children is exported depends on the sink's filter - // expression. For example, if this field is true, then the filter - // `resource.type=gce_instance` would export all Compute Engine VM instance - // log entries from all projects in the sink's parent. To only export entries - // from certain child projects, filter on the project part of the log name: - // - // logName:("projects/test-project1/" OR "projects/test-project2/") AND - // resource.type=gce_instance - IncludeChildren bool `protobuf:"varint,9,opt,name=include_children,json=includeChildren" json:"include_children,omitempty"` - // Deprecated. This field is ignored when creating or updating sinks. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,10,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Deprecated. This field is ignored when creating or updating sinks. - EndTime *google_protobuf4.Timestamp `protobuf:"bytes,11,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *LogSink) Reset() { *m = LogSink{} } -func (m *LogSink) String() string { return proto.CompactTextString(m) } -func (*LogSink) ProtoMessage() {} -func (*LogSink) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *LogSink) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LogSink) GetDestination() string { - if m != nil { - return m.Destination - } - return "" -} - -func (m *LogSink) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *LogSink) GetOutputVersionFormat() LogSink_VersionFormat { - if m != nil { - return m.OutputVersionFormat - } - return LogSink_VERSION_FORMAT_UNSPECIFIED -} - -func (m *LogSink) GetWriterIdentity() string { - if m != nil { - return m.WriterIdentity - } - return "" -} - -func (m *LogSink) GetIncludeChildren() bool { - if m != nil { - return m.IncludeChildren - } - return false -} - -func (m *LogSink) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *LogSink) GetEndTime() *google_protobuf4.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -// The parameters to `ListSinks`. -type ListSinksRequest struct { - // Required. The parent resource whose sinks are to be listed: - // - // "projects/[PROJECT_ID]" - // "organizations/[ORGANIZATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]" - // "folders/[FOLDER_ID]" - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. If present, then retrieve the next batch of results from the - // preceding call to this method. `pageToken` must be the value of - // `nextPageToken` from the previous response. The values of other method - // parameters should be identical to those in the previous call. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The maximum number of results to return from this request. - // Non-positive values are ignored. The presence of `nextPageToken` in the - // response indicates that more results might be available. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListSinksRequest) Reset() { *m = ListSinksRequest{} } -func (m *ListSinksRequest) String() string { return proto.CompactTextString(m) } -func (*ListSinksRequest) ProtoMessage() {} -func (*ListSinksRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ListSinksRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListSinksRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListSinksRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Result returned from `ListSinks`. -type ListSinksResponse struct { - // A list of sinks. - Sinks []*LogSink `protobuf:"bytes,1,rep,name=sinks" json:"sinks,omitempty"` - // If there might be more results than appear in this response, then - // `nextPageToken` is included. To get the next set of results, call the same - // method again using the value of `nextPageToken` as `pageToken`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListSinksResponse) Reset() { *m = ListSinksResponse{} } -func (m *ListSinksResponse) String() string { return proto.CompactTextString(m) } -func (*ListSinksResponse) ProtoMessage() {} -func (*ListSinksResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *ListSinksResponse) GetSinks() []*LogSink { - if m != nil { - return m.Sinks - } - return nil -} - -func (m *ListSinksResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The parameters to `GetSink`. -type GetSinkRequest struct { - // Required. The resource name of the sink: - // - // "projects/[PROJECT_ID]/sinks/[SINK_ID]" - // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" - // "folders/[FOLDER_ID]/sinks/[SINK_ID]" - // - // Example: `"projects/my-project-id/sinks/my-sink-id"`. - SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName" json:"sink_name,omitempty"` -} - -func (m *GetSinkRequest) Reset() { *m = GetSinkRequest{} } -func (m *GetSinkRequest) String() string { return proto.CompactTextString(m) } -func (*GetSinkRequest) ProtoMessage() {} -func (*GetSinkRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *GetSinkRequest) GetSinkName() string { - if m != nil { - return m.SinkName - } - return "" -} - -// The parameters to `CreateSink`. -type CreateSinkRequest struct { - // Required. The resource in which to create the sink: - // - // "projects/[PROJECT_ID]" - // "organizations/[ORGANIZATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]" - // "folders/[FOLDER_ID]" - // - // Examples: `"projects/my-logging-project"`, `"organizations/123456789"`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The new sink, whose `name` parameter is a sink identifier that - // is not already in use. - Sink *LogSink `protobuf:"bytes,2,opt,name=sink" json:"sink,omitempty"` - // Optional. Determines the kind of IAM identity returned as `writer_identity` - // in the new sink. If this value is omitted or set to false, and if the - // sink's parent is a project, then the value returned as `writer_identity` is - // the same group or service account used by Stackdriver Logging before the - // addition of writer identities to this API. The sink's destination must be - // in the same project as the sink itself. - // - // If this field is set to true, or if the sink is owned by a non-project - // resource such as an organization, then the value of `writer_identity` will - // be a unique service account used only for exports from the new sink. For - // more information, see `writer_identity` in [LogSink][google.logging.v2.LogSink]. - UniqueWriterIdentity bool `protobuf:"varint,3,opt,name=unique_writer_identity,json=uniqueWriterIdentity" json:"unique_writer_identity,omitempty"` -} - -func (m *CreateSinkRequest) Reset() { *m = CreateSinkRequest{} } -func (m *CreateSinkRequest) String() string { return proto.CompactTextString(m) } -func (*CreateSinkRequest) ProtoMessage() {} -func (*CreateSinkRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *CreateSinkRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateSinkRequest) GetSink() *LogSink { - if m != nil { - return m.Sink - } - return nil -} - -func (m *CreateSinkRequest) GetUniqueWriterIdentity() bool { - if m != nil { - return m.UniqueWriterIdentity - } - return false -} - -// The parameters to `UpdateSink`. -type UpdateSinkRequest struct { - // Required. The full resource name of the sink to update, including the - // parent resource and the sink identifier: - // - // "projects/[PROJECT_ID]/sinks/[SINK_ID]" - // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" - // "folders/[FOLDER_ID]/sinks/[SINK_ID]" - // - // Example: `"projects/my-project-id/sinks/my-sink-id"`. - SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName" json:"sink_name,omitempty"` - // Required. The updated sink, whose name is the same identifier that appears - // as part of `sink_name`. - Sink *LogSink `protobuf:"bytes,2,opt,name=sink" json:"sink,omitempty"` - // Optional. See - // [sinks.create](/logging/docs/api/reference/rest/v2/projects.sinks/create) - // for a description of this field. When updating a sink, the effect of this - // field on the value of `writer_identity` in the updated sink depends on both - // the old and new values of this field: - // - // + If the old and new values of this field are both false or both true, - // then there is no change to the sink's `writer_identity`. - // + If the old value is false and the new value is true, then - // `writer_identity` is changed to a unique service account. - // + It is an error if the old value is true and the new value is - // set to false or defaulted to false. - UniqueWriterIdentity bool `protobuf:"varint,3,opt,name=unique_writer_identity,json=uniqueWriterIdentity" json:"unique_writer_identity,omitempty"` - // Optional. Field mask that specifies the fields in `sink` that need - // an update. A sink field will be overwritten if, and only if, it is - // in the update mask. `name` and output only fields cannot be updated. - // - // An empty updateMask is temporarily treated as using the following mask - // for backwards compatibility purposes: - // destination,filter,includeChildren - // At some point in the future, behavior will be removed and specifying an - // empty updateMask will be an error. - // - // For a detailed `FieldMask` definition, see - // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask - // - // Example: `updateMask=filter`. - UpdateMask *google_protobuf6.FieldMask `protobuf:"bytes,4,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateSinkRequest) Reset() { *m = UpdateSinkRequest{} } -func (m *UpdateSinkRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateSinkRequest) ProtoMessage() {} -func (*UpdateSinkRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *UpdateSinkRequest) GetSinkName() string { - if m != nil { - return m.SinkName - } - return "" -} - -func (m *UpdateSinkRequest) GetSink() *LogSink { - if m != nil { - return m.Sink - } - return nil -} - -func (m *UpdateSinkRequest) GetUniqueWriterIdentity() bool { - if m != nil { - return m.UniqueWriterIdentity - } - return false -} - -func (m *UpdateSinkRequest) GetUpdateMask() *google_protobuf6.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The parameters to `DeleteSink`. -type DeleteSinkRequest struct { - // Required. The full resource name of the sink to delete, including the - // parent resource and the sink identifier: - // - // "projects/[PROJECT_ID]/sinks/[SINK_ID]" - // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" - // "folders/[FOLDER_ID]/sinks/[SINK_ID]" - // - // Example: `"projects/my-project-id/sinks/my-sink-id"`. - SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName" json:"sink_name,omitempty"` -} - -func (m *DeleteSinkRequest) Reset() { *m = DeleteSinkRequest{} } -func (m *DeleteSinkRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSinkRequest) ProtoMessage() {} -func (*DeleteSinkRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *DeleteSinkRequest) GetSinkName() string { - if m != nil { - return m.SinkName - } - return "" -} - -// Specifies a set of log entries that are not to be stored in Stackdriver -// Logging. If your project receives a large volume of logs, you might be able -// to use exclusions to reduce your chargeable logs. Exclusions are processed -// after log sinks, so you can export log entries before they are excluded. -// Audit log entries and log entries from Amazon Web Services are never -// excluded. -type LogExclusion struct { - // Required. A client-assigned identifier, such as - // `"load-balancer-exclusion"`. Identifiers are limited to 100 characters and - // can include only letters, digits, underscores, hyphens, and periods. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. A description of this exclusion. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Required. - // An [advanced logs filter](/logging/docs/view/advanced_filters) - // that matches the log entries to be excluded. By using the - // [sample function](/logging/docs/view/advanced_filters#sample), - // you can exclude less than 100% of the matching log entries. - // For example, the following filter matches 99% of low-severity log - // entries from load balancers: - // - // "resource.type=http_load_balancer severity<ERROR sample(insertId, 0.99)" - Filter string `protobuf:"bytes,3,opt,name=filter" json:"filter,omitempty"` - // Optional. If set to True, then this exclusion is disabled and it does not - // exclude any log entries. You can use - // [exclusions.patch](/logging/docs/alpha-exclusion/docs/reference/v2/rest/v2/projects.exclusions/patch) - // to change the value of this field. - Disabled bool `protobuf:"varint,4,opt,name=disabled" json:"disabled,omitempty"` -} - -func (m *LogExclusion) Reset() { *m = LogExclusion{} } -func (m *LogExclusion) String() string { return proto.CompactTextString(m) } -func (*LogExclusion) ProtoMessage() {} -func (*LogExclusion) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *LogExclusion) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LogExclusion) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *LogExclusion) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *LogExclusion) GetDisabled() bool { - if m != nil { - return m.Disabled - } - return false -} - -// The parameters to `ListExclusions`. -type ListExclusionsRequest struct { - // Required. The parent resource whose exclusions are to be listed. - // - // "projects/[PROJECT_ID]" - // "organizations/[ORGANIZATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]" - // "folders/[FOLDER_ID]" - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. If present, then retrieve the next batch of results from the - // preceding call to this method. `pageToken` must be the value of - // `nextPageToken` from the previous response. The values of other method - // parameters should be identical to those in the previous call. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The maximum number of results to return from this request. - // Non-positive values are ignored. The presence of `nextPageToken` in the - // response indicates that more results might be available. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListExclusionsRequest) Reset() { *m = ListExclusionsRequest{} } -func (m *ListExclusionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListExclusionsRequest) ProtoMessage() {} -func (*ListExclusionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{8} } - -func (m *ListExclusionsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListExclusionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListExclusionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Result returned from `ListExclusions`. -type ListExclusionsResponse struct { - // A list of exclusions. - Exclusions []*LogExclusion `protobuf:"bytes,1,rep,name=exclusions" json:"exclusions,omitempty"` - // If there might be more results than appear in this response, then - // `nextPageToken` is included. To get the next set of results, call the same - // method again using the value of `nextPageToken` as `pageToken`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListExclusionsResponse) Reset() { *m = ListExclusionsResponse{} } -func (m *ListExclusionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListExclusionsResponse) ProtoMessage() {} -func (*ListExclusionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{9} } - -func (m *ListExclusionsResponse) GetExclusions() []*LogExclusion { - if m != nil { - return m.Exclusions - } - return nil -} - -func (m *ListExclusionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The parameters to `GetExclusion`. -type GetExclusionRequest struct { - // Required. The resource name of an existing exclusion: - // - // "projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]" - // "organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]" - // "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]" - // - // Example: `"projects/my-project-id/exclusions/my-exclusion-id"`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetExclusionRequest) Reset() { *m = GetExclusionRequest{} } -func (m *GetExclusionRequest) String() string { return proto.CompactTextString(m) } -func (*GetExclusionRequest) ProtoMessage() {} -func (*GetExclusionRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{10} } - -func (m *GetExclusionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The parameters to `CreateExclusion`. -type CreateExclusionRequest struct { - // Required. The parent resource in which to create the exclusion: - // - // "projects/[PROJECT_ID]" - // "organizations/[ORGANIZATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]" - // "folders/[FOLDER_ID]" - // - // Examples: `"projects/my-logging-project"`, `"organizations/123456789"`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The new exclusion, whose `name` parameter is an exclusion name - // that is not already used in the parent resource. - Exclusion *LogExclusion `protobuf:"bytes,2,opt,name=exclusion" json:"exclusion,omitempty"` -} - -func (m *CreateExclusionRequest) Reset() { *m = CreateExclusionRequest{} } -func (m *CreateExclusionRequest) String() string { return proto.CompactTextString(m) } -func (*CreateExclusionRequest) ProtoMessage() {} -func (*CreateExclusionRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{11} } - -func (m *CreateExclusionRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateExclusionRequest) GetExclusion() *LogExclusion { - if m != nil { - return m.Exclusion - } - return nil -} - -// The parameters to `UpdateExclusion`. -type UpdateExclusionRequest struct { - // Required. The resource name of the exclusion to update: - // - // "projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]" - // "organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]" - // "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]" - // - // Example: `"projects/my-project-id/exclusions/my-exclusion-id"`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. New values for the existing exclusion. Only the fields specified - // in `update_mask` are relevant. - Exclusion *LogExclusion `protobuf:"bytes,2,opt,name=exclusion" json:"exclusion,omitempty"` - // Required. A nonempty list of fields to change in the existing exclusion. - // New values for the fields are taken from the corresponding fields in the - // [LogExclusion][google.logging.v2.LogExclusion] included in this request. Fields not mentioned in - // `update_mask` are not changed and are ignored in the request. - // - // For example, to change the filter and description of an exclusion, - // specify an `update_mask` of `"filter,description"`. - UpdateMask *google_protobuf6.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateExclusionRequest) Reset() { *m = UpdateExclusionRequest{} } -func (m *UpdateExclusionRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateExclusionRequest) ProtoMessage() {} -func (*UpdateExclusionRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{12} } - -func (m *UpdateExclusionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateExclusionRequest) GetExclusion() *LogExclusion { - if m != nil { - return m.Exclusion - } - return nil -} - -func (m *UpdateExclusionRequest) GetUpdateMask() *google_protobuf6.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// The parameters to `DeleteExclusion`. -type DeleteExclusionRequest struct { - // Required. The resource name of an existing exclusion to delete: - // - // "projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]" - // "organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]" - // "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]" - // - // Example: `"projects/my-project-id/exclusions/my-exclusion-id"`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteExclusionRequest) Reset() { *m = DeleteExclusionRequest{} } -func (m *DeleteExclusionRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteExclusionRequest) ProtoMessage() {} -func (*DeleteExclusionRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{13} } - -func (m *DeleteExclusionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*LogSink)(nil), "google.logging.v2.LogSink") - proto.RegisterType((*ListSinksRequest)(nil), "google.logging.v2.ListSinksRequest") - proto.RegisterType((*ListSinksResponse)(nil), "google.logging.v2.ListSinksResponse") - proto.RegisterType((*GetSinkRequest)(nil), "google.logging.v2.GetSinkRequest") - proto.RegisterType((*CreateSinkRequest)(nil), "google.logging.v2.CreateSinkRequest") - proto.RegisterType((*UpdateSinkRequest)(nil), "google.logging.v2.UpdateSinkRequest") - proto.RegisterType((*DeleteSinkRequest)(nil), "google.logging.v2.DeleteSinkRequest") - proto.RegisterType((*LogExclusion)(nil), "google.logging.v2.LogExclusion") - proto.RegisterType((*ListExclusionsRequest)(nil), "google.logging.v2.ListExclusionsRequest") - proto.RegisterType((*ListExclusionsResponse)(nil), "google.logging.v2.ListExclusionsResponse") - proto.RegisterType((*GetExclusionRequest)(nil), "google.logging.v2.GetExclusionRequest") - proto.RegisterType((*CreateExclusionRequest)(nil), "google.logging.v2.CreateExclusionRequest") - proto.RegisterType((*UpdateExclusionRequest)(nil), "google.logging.v2.UpdateExclusionRequest") - proto.RegisterType((*DeleteExclusionRequest)(nil), "google.logging.v2.DeleteExclusionRequest") - proto.RegisterEnum("google.logging.v2.LogSink_VersionFormat", LogSink_VersionFormat_name, LogSink_VersionFormat_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for ConfigServiceV2 service - -type ConfigServiceV2Client interface { - // Lists sinks. - ListSinks(ctx context.Context, in *ListSinksRequest, opts ...grpc.CallOption) (*ListSinksResponse, error) - // Gets a sink. - GetSink(ctx context.Context, in *GetSinkRequest, opts ...grpc.CallOption) (*LogSink, error) - // Creates a sink that exports specified log entries to a destination. The - // export of newly-ingested log entries begins immediately, unless the sink's - // `writer_identity` is not permitted to write to the destination. A sink can - // export log entries only from the resource owning the sink. - CreateSink(ctx context.Context, in *CreateSinkRequest, opts ...grpc.CallOption) (*LogSink, error) - // Updates a sink. This method replaces the following fields in the existing - // sink with values from the new sink: `destination`, and `filter`. - // The updated sink might also have a new `writer_identity`; see the - // `unique_writer_identity` field. - UpdateSink(ctx context.Context, in *UpdateSinkRequest, opts ...grpc.CallOption) (*LogSink, error) - // Deletes a sink. If the sink has a unique `writer_identity`, then that - // service account is also deleted. - DeleteSink(ctx context.Context, in *DeleteSinkRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) - // Lists all the exclusions in a parent resource. - ListExclusions(ctx context.Context, in *ListExclusionsRequest, opts ...grpc.CallOption) (*ListExclusionsResponse, error) - // Gets the description of an exclusion. - GetExclusion(ctx context.Context, in *GetExclusionRequest, opts ...grpc.CallOption) (*LogExclusion, error) - // Creates a new exclusion in a specified parent resource. - // Only log entries belonging to that resource can be excluded. - // You can have up to 10 exclusions in a resource. - CreateExclusion(ctx context.Context, in *CreateExclusionRequest, opts ...grpc.CallOption) (*LogExclusion, error) - // Changes one or more properties of an existing exclusion. - UpdateExclusion(ctx context.Context, in *UpdateExclusionRequest, opts ...grpc.CallOption) (*LogExclusion, error) - // Deletes an exclusion. - DeleteExclusion(ctx context.Context, in *DeleteExclusionRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) -} - -type configServiceV2Client struct { - cc *grpc.ClientConn -} - -func NewConfigServiceV2Client(cc *grpc.ClientConn) ConfigServiceV2Client { - return &configServiceV2Client{cc} -} - -func (c *configServiceV2Client) ListSinks(ctx context.Context, in *ListSinksRequest, opts ...grpc.CallOption) (*ListSinksResponse, error) { - out := new(ListSinksResponse) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/ListSinks", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) GetSink(ctx context.Context, in *GetSinkRequest, opts ...grpc.CallOption) (*LogSink, error) { - out := new(LogSink) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/GetSink", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) CreateSink(ctx context.Context, in *CreateSinkRequest, opts ...grpc.CallOption) (*LogSink, error) { - out := new(LogSink) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/CreateSink", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) UpdateSink(ctx context.Context, in *UpdateSinkRequest, opts ...grpc.CallOption) (*LogSink, error) { - out := new(LogSink) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/UpdateSink", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) DeleteSink(ctx context.Context, in *DeleteSinkRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) { - out := new(google_protobuf5.Empty) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/DeleteSink", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) ListExclusions(ctx context.Context, in *ListExclusionsRequest, opts ...grpc.CallOption) (*ListExclusionsResponse, error) { - out := new(ListExclusionsResponse) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/ListExclusions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) GetExclusion(ctx context.Context, in *GetExclusionRequest, opts ...grpc.CallOption) (*LogExclusion, error) { - out := new(LogExclusion) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/GetExclusion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) CreateExclusion(ctx context.Context, in *CreateExclusionRequest, opts ...grpc.CallOption) (*LogExclusion, error) { - out := new(LogExclusion) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/CreateExclusion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) UpdateExclusion(ctx context.Context, in *UpdateExclusionRequest, opts ...grpc.CallOption) (*LogExclusion, error) { - out := new(LogExclusion) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/UpdateExclusion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *configServiceV2Client) DeleteExclusion(ctx context.Context, in *DeleteExclusionRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) { - out := new(google_protobuf5.Empty) - err := grpc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/DeleteExclusion", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for ConfigServiceV2 service - -type ConfigServiceV2Server interface { - // Lists sinks. - ListSinks(context.Context, *ListSinksRequest) (*ListSinksResponse, error) - // Gets a sink. - GetSink(context.Context, *GetSinkRequest) (*LogSink, error) - // Creates a sink that exports specified log entries to a destination. The - // export of newly-ingested log entries begins immediately, unless the sink's - // `writer_identity` is not permitted to write to the destination. A sink can - // export log entries only from the resource owning the sink. - CreateSink(context.Context, *CreateSinkRequest) (*LogSink, error) - // Updates a sink. This method replaces the following fields in the existing - // sink with values from the new sink: `destination`, and `filter`. - // The updated sink might also have a new `writer_identity`; see the - // `unique_writer_identity` field. - UpdateSink(context.Context, *UpdateSinkRequest) (*LogSink, error) - // Deletes a sink. If the sink has a unique `writer_identity`, then that - // service account is also deleted. - DeleteSink(context.Context, *DeleteSinkRequest) (*google_protobuf5.Empty, error) - // Lists all the exclusions in a parent resource. - ListExclusions(context.Context, *ListExclusionsRequest) (*ListExclusionsResponse, error) - // Gets the description of an exclusion. - GetExclusion(context.Context, *GetExclusionRequest) (*LogExclusion, error) - // Creates a new exclusion in a specified parent resource. - // Only log entries belonging to that resource can be excluded. - // You can have up to 10 exclusions in a resource. - CreateExclusion(context.Context, *CreateExclusionRequest) (*LogExclusion, error) - // Changes one or more properties of an existing exclusion. - UpdateExclusion(context.Context, *UpdateExclusionRequest) (*LogExclusion, error) - // Deletes an exclusion. - DeleteExclusion(context.Context, *DeleteExclusionRequest) (*google_protobuf5.Empty, error) -} - -func RegisterConfigServiceV2Server(s *grpc.Server, srv ConfigServiceV2Server) { - s.RegisterService(&_ConfigServiceV2_serviceDesc, srv) -} - -func _ConfigServiceV2_ListSinks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSinksRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).ListSinks(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/ListSinks", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).ListSinks(ctx, req.(*ListSinksRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_GetSink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).GetSink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/GetSink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).GetSink(ctx, req.(*GetSinkRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_CreateSink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateSinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).CreateSink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/CreateSink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).CreateSink(ctx, req.(*CreateSinkRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_UpdateSink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).UpdateSink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/UpdateSink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).UpdateSink(ctx, req.(*UpdateSinkRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_DeleteSink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSinkRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).DeleteSink(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/DeleteSink", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).DeleteSink(ctx, req.(*DeleteSinkRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_ListExclusions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListExclusionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).ListExclusions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/ListExclusions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).ListExclusions(ctx, req.(*ListExclusionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_GetExclusion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetExclusionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).GetExclusion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/GetExclusion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).GetExclusion(ctx, req.(*GetExclusionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_CreateExclusion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateExclusionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).CreateExclusion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/CreateExclusion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).CreateExclusion(ctx, req.(*CreateExclusionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_UpdateExclusion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateExclusionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).UpdateExclusion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/UpdateExclusion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).UpdateExclusion(ctx, req.(*UpdateExclusionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _ConfigServiceV2_DeleteExclusion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteExclusionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ConfigServiceV2Server).DeleteExclusion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.ConfigServiceV2/DeleteExclusion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ConfigServiceV2Server).DeleteExclusion(ctx, req.(*DeleteExclusionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _ConfigServiceV2_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.logging.v2.ConfigServiceV2", - HandlerType: (*ConfigServiceV2Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListSinks", - Handler: _ConfigServiceV2_ListSinks_Handler, - }, - { - MethodName: "GetSink", - Handler: _ConfigServiceV2_GetSink_Handler, - }, - { - MethodName: "CreateSink", - Handler: _ConfigServiceV2_CreateSink_Handler, - }, - { - MethodName: "UpdateSink", - Handler: _ConfigServiceV2_UpdateSink_Handler, - }, - { - MethodName: "DeleteSink", - Handler: _ConfigServiceV2_DeleteSink_Handler, - }, - { - MethodName: "ListExclusions", - Handler: _ConfigServiceV2_ListExclusions_Handler, - }, - { - MethodName: "GetExclusion", - Handler: _ConfigServiceV2_GetExclusion_Handler, - }, - { - MethodName: "CreateExclusion", - Handler: _ConfigServiceV2_CreateExclusion_Handler, - }, - { - MethodName: "UpdateExclusion", - Handler: _ConfigServiceV2_UpdateExclusion_Handler, - }, - { - MethodName: "DeleteExclusion", - Handler: _ConfigServiceV2_DeleteExclusion_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/logging/v2/logging_config.proto", -} - -func init() { proto.RegisterFile("google/logging/v2/logging_config.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 1118 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x5d, 0x6f, 0xdb, 0xd4, - 0x1b, 0xff, 0x3b, 0xe9, 0x4b, 0xf2, 0x74, 0x6b, 0xda, 0xb3, 0x7f, 0x83, 0xe5, 0xb2, 0x2e, 0xb8, - 0x53, 0x49, 0x2b, 0x70, 0x46, 0x00, 0x09, 0x36, 0x4d, 0x13, 0xeb, 0xda, 0xaa, 0x52, 0xd7, 0x55, - 0x6e, 0x17, 0x24, 0x54, 0xc9, 0x72, 0xe3, 0x13, 0x73, 0x54, 0xc7, 0xf6, 0xec, 0x93, 0xd2, 0x0e, - 0x26, 0x01, 0x97, 0x48, 0x5c, 0x20, 0xee, 0xb9, 0x46, 0x7c, 0x06, 0x3e, 0x01, 0xb7, 0xfb, 0x0a, - 0x7c, 0x08, 0x2e, 0xd1, 0x79, 0x49, 0xe2, 0x38, 0x8e, 0x9b, 0x09, 0xc1, 0x55, 0xcf, 0x79, 0x5e, - 0xce, 0xef, 0xf7, 0x3c, 0xe7, 0x39, 0xbf, 0x3a, 0xb0, 0xe1, 0x06, 0x81, 0xeb, 0xe1, 0x86, 0x17, - 0xb8, 0x2e, 0xf1, 0xdd, 0xc6, 0x45, 0xb3, 0xbf, 0xb4, 0xda, 0x81, 0xdf, 0x21, 0xae, 0x11, 0x46, - 0x01, 0x0d, 0xd0, 0xb2, 0x88, 0x33, 0xa4, 0xd3, 0xb8, 0x68, 0x6a, 0x6f, 0xcb, 0x54, 0x3b, 0x24, - 0x0d, 0xdb, 0xf7, 0x03, 0x6a, 0x53, 0x12, 0xf8, 0xb1, 0x48, 0xd0, 0x56, 0xa5, 0x97, 0xef, 0xce, - 0x7a, 0x9d, 0x06, 0xee, 0x86, 0xf4, 0x4a, 0x3a, 0x6b, 0x69, 0x67, 0x87, 0x60, 0xcf, 0xb1, 0xba, - 0x76, 0x7c, 0x2e, 0x23, 0xee, 0xa4, 0x23, 0x28, 0xe9, 0xe2, 0x98, 0xda, 0xdd, 0x50, 0x04, 0xe8, - 0xbf, 0x17, 0x61, 0xfe, 0x20, 0x70, 0x8f, 0x89, 0x7f, 0x8e, 0x10, 0xcc, 0xf8, 0x76, 0x17, 0xab, - 0x4a, 0x4d, 0xa9, 0x97, 0x4d, 0xbe, 0x46, 0x35, 0x58, 0x70, 0x70, 0x4c, 0x89, 0xcf, 0x59, 0xa9, - 0x45, 0xee, 0x4a, 0x9a, 0x50, 0x15, 0xe6, 0x3a, 0xc4, 0xa3, 0x38, 0x52, 0x67, 0xb9, 0x53, 0xee, - 0xd0, 0x29, 0xac, 0x04, 0x3d, 0x1a, 0xf6, 0xa8, 0x75, 0x81, 0xa3, 0x98, 0x04, 0xbe, 0xd5, 0x09, - 0xa2, 0xae, 0x4d, 0xd5, 0xb9, 0x9a, 0x52, 0x5f, 0x6c, 0xd6, 0x8d, 0xb1, 0x56, 0x18, 0x92, 0x88, - 0xd1, 0x12, 0x09, 0xbb, 0x3c, 0xde, 0xbc, 0x25, 0x8e, 0x19, 0x31, 0xa2, 0x77, 0xa1, 0xf2, 0x55, - 0x44, 0x28, 0x8e, 0x2c, 0xe2, 0x60, 0x9f, 0x12, 0x7a, 0xa5, 0x96, 0x38, 0xfc, 0xa2, 0x30, 0xef, - 0x4b, 0x2b, 0xda, 0x84, 0x25, 0xe2, 0xb7, 0xbd, 0x9e, 0x83, 0xad, 0xf6, 0x97, 0xc4, 0x73, 0x22, - 0xec, 0xab, 0xe5, 0x9a, 0x52, 0x2f, 0x99, 0x15, 0x69, 0xdf, 0x96, 0x66, 0xf4, 0x29, 0x40, 0x4c, - 0xed, 0x88, 0x5a, 0xac, 0x49, 0x2a, 0xd4, 0x94, 0xfa, 0x42, 0x53, 0xeb, 0xd3, 0xec, 0x77, 0xd0, - 0x38, 0xe9, 0x77, 0xd0, 0x2c, 0xf3, 0x68, 0xb6, 0x47, 0x1f, 0x43, 0x09, 0xfb, 0x8e, 0x48, 0x5c, - 0xb8, 0x36, 0x71, 0x1e, 0xfb, 0x0e, 0xdb, 0xe9, 0x8f, 0xe0, 0xe6, 0x68, 0x59, 0x6b, 0xa0, 0xb5, - 0x76, 0xcc, 0xe3, 0xfd, 0x67, 0x87, 0xd6, 0xee, 0x33, 0xf3, 0xe9, 0x67, 0x27, 0xd6, 0xf3, 0xc3, - 0xe3, 0xa3, 0x9d, 0xed, 0xfd, 0xdd, 0xfd, 0x9d, 0x27, 0x4b, 0xff, 0x43, 0x73, 0x50, 0x68, 0x35, - 0x97, 0x14, 0xfe, 0xf7, 0x83, 0xa5, 0x82, 0xde, 0x81, 0xa5, 0x03, 0x12, 0x53, 0xd6, 0xb5, 0xd8, - 0xc4, 0x2f, 0x7a, 0x38, 0xa6, 0xec, 0x42, 0x42, 0x3b, 0xc2, 0x3e, 0x95, 0x17, 0x29, 0x77, 0xe8, - 0x36, 0x40, 0x68, 0xbb, 0xd8, 0xa2, 0xc1, 0x39, 0xf6, 0xd5, 0x02, 0xf7, 0x95, 0x99, 0xe5, 0x84, - 0x19, 0xd0, 0x2a, 0xf0, 0x8d, 0x15, 0x93, 0x97, 0x98, 0xdf, 0xf3, 0xac, 0x59, 0x62, 0x86, 0x63, - 0xf2, 0x12, 0xeb, 0x5d, 0x58, 0x4e, 0xe0, 0xc4, 0x61, 0xe0, 0xc7, 0x18, 0xdd, 0x83, 0xd9, 0x98, - 0x19, 0x54, 0xa5, 0x56, 0x4c, 0x56, 0x3c, 0x7e, 0xa3, 0xa6, 0x08, 0x44, 0x1b, 0x50, 0xf1, 0xf1, - 0x25, 0xb5, 0xc6, 0x78, 0xdc, 0x64, 0xe6, 0xa3, 0x3e, 0x17, 0xfd, 0x7d, 0x58, 0xdc, 0xc3, 0x1c, - 0xad, 0x5f, 0xd4, 0x2a, 0x94, 0xd9, 0x11, 0x56, 0x62, 0x40, 0x4b, 0xcc, 0x70, 0x68, 0x77, 0xb1, - 0xfe, 0x93, 0x02, 0xcb, 0xdb, 0x11, 0xb6, 0x29, 0x4e, 0xa6, 0x4c, 0xea, 0x83, 0x01, 0x33, 0x2c, - 0x93, 0x23, 0xe7, 0xb3, 0xe6, 0x71, 0xe8, 0x23, 0xa8, 0xf6, 0x7c, 0xf2, 0xa2, 0x87, 0xad, 0xf4, - 0xc4, 0x15, 0xf9, 0x1c, 0xfd, 0x5f, 0x78, 0x3f, 0x1f, 0x99, 0x3b, 0xfd, 0xb5, 0x02, 0xcb, 0xcf, - 0x43, 0x27, 0xc5, 0x29, 0xaf, 0x8c, 0xff, 0x86, 0x18, 0x7a, 0x00, 0x0b, 0x3d, 0xce, 0x8b, 0xeb, - 0x84, 0x3a, 0x33, 0x61, 0x5a, 0x77, 0x99, 0x94, 0x3c, 0xb5, 0xe3, 0x73, 0x13, 0x44, 0x38, 0x5b, - 0xeb, 0xf7, 0x60, 0xf9, 0x09, 0xf6, 0xf0, 0xf4, 0x45, 0xe9, 0x97, 0x70, 0xe3, 0x20, 0x70, 0x77, - 0x2e, 0xdb, 0x5e, 0x8f, 0xcd, 0x79, 0x8e, 0xc8, 0xb4, 0x23, 0x12, 0x72, 0x91, 0x29, 0x0c, 0x44, - 0xa6, 0x6f, 0x4a, 0x88, 0x4c, 0x71, 0x44, 0x64, 0x34, 0x28, 0x39, 0x24, 0xb6, 0xcf, 0x3c, 0xec, - 0xf0, 0x4a, 0x4a, 0xe6, 0x60, 0xaf, 0x9f, 0xc3, 0x0a, 0x9b, 0xd9, 0x01, 0xf4, 0xbf, 0xfa, 0x40, - 0xbe, 0x53, 0xa0, 0x9a, 0x46, 0x93, 0xcf, 0xe4, 0x11, 0x00, 0x1e, 0x58, 0xe5, 0x5b, 0xb9, 0x93, - 0x7d, 0xb9, 0x83, 0x6c, 0x33, 0x91, 0x32, 0xf5, 0xab, 0xd9, 0x84, 0x5b, 0x7b, 0x78, 0xc8, 0xa0, - 0x5f, 0x6e, 0x46, 0xc7, 0xf5, 0x00, 0xaa, 0xe2, 0xc1, 0x8c, 0x45, 0x4f, 0x6a, 0xce, 0x43, 0x28, - 0x0f, 0x28, 0xc9, 0x09, 0xbd, 0xb6, 0x88, 0x61, 0x86, 0xfe, 0xab, 0x02, 0x55, 0xf1, 0x1c, 0xa6, - 0xe1, 0xf7, 0x0f, 0xd1, 0xd2, 0x33, 0x5e, 0x7c, 0xa3, 0x19, 0x7f, 0x0f, 0xaa, 0x62, 0xc6, 0xa7, - 0x61, 0xda, 0xfc, 0x16, 0xa0, 0xb2, 0xcd, 0xff, 0xc5, 0x1f, 0xe3, 0xe8, 0x82, 0xb4, 0x71, 0xab, - 0x89, 0x2e, 0xa0, 0x3c, 0x50, 0x4b, 0xb4, 0x9e, 0xc5, 0x3b, 0xa5, 0xd9, 0xda, 0xdd, 0xfc, 0x20, - 0x31, 0x49, 0xfa, 0xda, 0xf7, 0xaf, 0xff, 0xfc, 0xb9, 0xa0, 0xa2, 0x2a, 0xfb, 0xbe, 0xf8, 0x5a, - 0x5c, 0xcc, 0xc3, 0xad, 0xc6, 0xd6, 0xab, 0x86, 0x90, 0xd7, 0x2e, 0xcc, 0x4b, 0xd9, 0x44, 0xef, - 0x64, 0x1c, 0x38, 0x2a, 0xa9, 0x5a, 0x8e, 0xc0, 0xe8, 0xeb, 0x1c, 0xe9, 0x36, 0x5a, 0xe5, 0x48, - 0x83, 0xd7, 0xcd, 0xc0, 0x04, 0x56, 0x63, 0xeb, 0x15, 0xa2, 0x00, 0x43, 0xd5, 0x45, 0x59, 0x25, - 0x8c, 0x89, 0x72, 0x2e, 0xe8, 0x5d, 0x0e, 0xba, 0xa6, 0x4f, 0x28, 0xef, 0xbe, 0x50, 0xbd, 0x2b, - 0x80, 0xa1, 0xae, 0x66, 0xa2, 0x8e, 0xc9, 0x6e, 0x2e, 0xea, 0x26, 0x47, 0x5d, 0xd7, 0xf2, 0x4a, - 0x95, 0xd0, 0x01, 0xc0, 0x50, 0xfd, 0x32, 0xa1, 0xc7, 0xc4, 0x51, 0xab, 0x8e, 0x4d, 0xdd, 0x0e, - 0xfb, 0x82, 0xeb, 0x77, 0x78, 0x2b, 0xb7, 0xc3, 0x3f, 0x28, 0xb0, 0x38, 0xaa, 0x2a, 0xa8, 0x3e, - 0x61, 0x52, 0xc6, 0x64, 0x4e, 0xdb, 0x9c, 0x22, 0x52, 0x0e, 0xd6, 0xe8, 0x75, 0x27, 0x3b, 0x9f, - 0x90, 0xa1, 0x6f, 0xe0, 0x46, 0x52, 0x5e, 0xd0, 0x46, 0xf6, 0x88, 0xa5, 0x5f, 0x8d, 0x76, 0xdd, - 0xc3, 0x4d, 0xa1, 0x0f, 0xba, 0x30, 0x84, 0x66, 0xad, 0xf8, 0x51, 0x81, 0x4a, 0x4a, 0xb2, 0xd0, - 0xe6, 0xc4, 0x91, 0x7b, 0x73, 0x12, 0x06, 0x27, 0x51, 0xd7, 0xf3, 0x5a, 0x70, 0x3f, 0x21, 0x31, - 0x8c, 0x4f, 0x4a, 0xd0, 0x32, 0xf9, 0x64, 0x8b, 0xde, 0xd4, 0x7c, 0x9a, 0x79, 0x4d, 0x49, 0xf2, - 0xb9, 0x82, 0x4a, 0x4a, 0xb5, 0x32, 0xe9, 0x64, 0x2b, 0xdb, 0x94, 0x53, 0x9a, 0xcd, 0xe2, 0xf1, - 0x2f, 0x0a, 0xac, 0xb4, 0x83, 0xee, 0x38, 0xda, 0x63, 0x74, 0x20, 0xd6, 0x42, 0x20, 0x8f, 0xd8, - 0xd9, 0x47, 0xca, 0x17, 0x9f, 0xc8, 0x40, 0x37, 0xf0, 0x6c, 0xdf, 0x35, 0x82, 0xc8, 0x6d, 0xb8, - 0xd8, 0xe7, 0xc8, 0x0d, 0xe1, 0xb2, 0x43, 0x12, 0x27, 0x7e, 0x4b, 0x3d, 0x90, 0xcb, 0xbf, 0x14, - 0xe5, 0xb7, 0xc2, 0x5b, 0x7b, 0x22, 0x7b, 0xdb, 0x0b, 0x7a, 0x8e, 0x21, 0x01, 0x8c, 0x56, 0xf3, - 0x8f, 0xbe, 0xe7, 0x94, 0x7b, 0x4e, 0xa5, 0xe7, 0xb4, 0xd5, 0x3c, 0x9b, 0xe3, 0x67, 0x7f, 0xf8, - 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x67, 0x9c, 0x61, 0x2f, 0xa6, 0x0d, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/logging/v2/logging_metrics.pb.go b/vendor/google.golang.org/genproto/googleapis/logging/v2/logging_metrics.pb.go deleted file mode 100644 index b4c4fc9e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/logging/v2/logging_metrics.pb.go +++ /dev/null @@ -1,669 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/logging/v2/logging_metrics.proto - -package logging - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api4 "google.golang.org/genproto/googleapis/api/distribution" -import google_api5 "google.golang.org/genproto/googleapis/api/metric" -import google_protobuf5 "github.com/golang/protobuf/ptypes/empty" -import _ "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Stackdriver Logging API version. -type LogMetric_ApiVersion int32 - -const ( - // Stackdriver Logging API v2. - LogMetric_V2 LogMetric_ApiVersion = 0 - // Stackdriver Logging API v1. - LogMetric_V1 LogMetric_ApiVersion = 1 -) - -var LogMetric_ApiVersion_name = map[int32]string{ - 0: "V2", - 1: "V1", -} -var LogMetric_ApiVersion_value = map[string]int32{ - "V2": 0, - "V1": 1, -} - -func (x LogMetric_ApiVersion) String() string { - return proto.EnumName(LogMetric_ApiVersion_name, int32(x)) -} -func (LogMetric_ApiVersion) EnumDescriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -// Describes a logs-based metric. The value of the metric is the -// number of log entries that match a logs filter in a given time interval. -// -// Logs-based metric can also be used to extract values from logs and create a -// a distribution of the values. The distribution records the statistics of the -// extracted values along with an optional histogram of the values as specified -// by the bucket options. -type LogMetric struct { - // Required. The client-assigned metric identifier. - // Examples: `"error_count"`, `"nginx/requests"`. - // - // Metric identifiers are limited to 100 characters and can include - // only the following characters: `A-Z`, `a-z`, `0-9`, and the - // special characters `_-.,+!*',()%/`. The forward-slash character - // (`/`) denotes a hierarchy of name pieces, and it cannot be the - // first character of the name. - // - // The metric identifier in this field must not be - // [URL-encoded](https://en.wikipedia.org/wiki/Percent-encoding). - // However, when the metric identifier appears as the `[METRIC_ID]` - // part of a `metric_name` API parameter, then the metric identifier - // must be URL-encoded. Example: - // `"projects/my-project/metrics/nginx%2Frequests"`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Optional. A description of this metric, which is used in documentation. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // Required. An [advanced logs filter](/logging/docs/view/advanced_filters) - // which is used to match log entries. - // Example: - // - // "resource.type=gae_app AND severity>=ERROR" - // - // The maximum length of the filter is 20000 characters. - Filter string `protobuf:"bytes,3,opt,name=filter" json:"filter,omitempty"` - // Optional. The metric descriptor associated with the logs-based metric. - // If unspecified, it uses a default metric descriptor with a DELTA metric - // kind, INT64 value type, with no labels and a unit of "1". Such a metric - // counts the number of log entries matching the `filter` expression. - // - // The `name`, `type`, and `description` fields in the `metric_descriptor` - // are output only, and is constructed using the `name` and `description` - // field in the LogMetric. - // - // To create a logs-based metric that records a distribution of log values, a - // DELTA metric kind with a DISTRIBUTION value type must be used along with - // a `value_extractor` expression in the LogMetric. - // - // Each label in the metric descriptor must have a matching label - // name as the key and an extractor expression as the value in the - // `label_extractors` map. - // - // The `metric_kind` and `value_type` fields in the `metric_descriptor` cannot - // be updated once initially configured. New labels can be added in the - // `metric_descriptor`, but existing labels cannot be modified except for - // their description. - MetricDescriptor *google_api5.MetricDescriptor `protobuf:"bytes,5,opt,name=metric_descriptor,json=metricDescriptor" json:"metric_descriptor,omitempty"` - // Optional. A `value_extractor` is required when using a distribution - // logs-based metric to extract the values to record from a log entry. - // Two functions are supported for value extraction: `EXTRACT(field)` or - // `REGEXP_EXTRACT(field, regex)`. The argument are: - // 1. field: The name of the log entry field from which the value is to be - // extracted. - // 2. regex: A regular expression using the Google RE2 syntax - // (https://github.com/google/re2/wiki/Syntax) with a single capture - // group to extract data from the specified log entry field. The value - // of the field is converted to a string before applying the regex. - // It is an error to specify a regex that does not include exactly one - // capture group. - // - // The result of the extraction must be convertible to a double type, as the - // distribution always records double values. If either the extraction or - // the conversion to double fails, then those values are not recorded in the - // distribution. - // - // Example: `REGEXP_EXTRACT(jsonPayload.request, ".*quantity=(\d+).*")` - ValueExtractor string `protobuf:"bytes,6,opt,name=value_extractor,json=valueExtractor" json:"value_extractor,omitempty"` - // Optional. A map from a label key string to an extractor expression which is - // used to extract data from a log entry field and assign as the label value. - // Each label key specified in the LabelDescriptor must have an associated - // extractor expression in this map. The syntax of the extractor expression - // is the same as for the `value_extractor` field. - // - // The extracted value is converted to the type defined in the label - // descriptor. If the either the extraction or the type conversion fails, - // the label will have a default value. The default value for a string - // label is an empty string, for an integer label its 0, and for a boolean - // label its `false`. - // - // Note that there are upper bounds on the maximum number of labels and the - // number of active time series that are allowed in a project. - LabelExtractors map[string]string `protobuf:"bytes,7,rep,name=label_extractors,json=labelExtractors" json:"label_extractors,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Optional. The `bucket_options` are required when the logs-based metric is - // using a DISTRIBUTION value type and it describes the bucket boundaries - // used to create a histogram of the extracted values. - BucketOptions *google_api4.Distribution_BucketOptions `protobuf:"bytes,8,opt,name=bucket_options,json=bucketOptions" json:"bucket_options,omitempty"` - // Deprecated. The API version that created or updated this metric. - // The v2 format is used by default and cannot be changed. - Version LogMetric_ApiVersion `protobuf:"varint,4,opt,name=version,enum=google.logging.v2.LogMetric_ApiVersion" json:"version,omitempty"` -} - -func (m *LogMetric) Reset() { *m = LogMetric{} } -func (m *LogMetric) String() string { return proto.CompactTextString(m) } -func (*LogMetric) ProtoMessage() {} -func (*LogMetric) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *LogMetric) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *LogMetric) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *LogMetric) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *LogMetric) GetMetricDescriptor() *google_api5.MetricDescriptor { - if m != nil { - return m.MetricDescriptor - } - return nil -} - -func (m *LogMetric) GetValueExtractor() string { - if m != nil { - return m.ValueExtractor - } - return "" -} - -func (m *LogMetric) GetLabelExtractors() map[string]string { - if m != nil { - return m.LabelExtractors - } - return nil -} - -func (m *LogMetric) GetBucketOptions() *google_api4.Distribution_BucketOptions { - if m != nil { - return m.BucketOptions - } - return nil -} - -func (m *LogMetric) GetVersion() LogMetric_ApiVersion { - if m != nil { - return m.Version - } - return LogMetric_V2 -} - -// The parameters to ListLogMetrics. -type ListLogMetricsRequest struct { - // Required. The name of the project containing the metrics: - // - // "projects/[PROJECT_ID]" - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional. If present, then retrieve the next batch of results from the - // preceding call to this method. `pageToken` must be the value of - // `nextPageToken` from the previous response. The values of other method - // parameters should be identical to those in the previous call. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional. The maximum number of results to return from this request. - // Non-positive values are ignored. The presence of `nextPageToken` in the - // response indicates that more results might be available. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListLogMetricsRequest) Reset() { *m = ListLogMetricsRequest{} } -func (m *ListLogMetricsRequest) String() string { return proto.CompactTextString(m) } -func (*ListLogMetricsRequest) ProtoMessage() {} -func (*ListLogMetricsRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *ListLogMetricsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListLogMetricsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListLogMetricsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Result returned from ListLogMetrics. -type ListLogMetricsResponse struct { - // A list of logs-based metrics. - Metrics []*LogMetric `protobuf:"bytes,1,rep,name=metrics" json:"metrics,omitempty"` - // If there might be more results than appear in this response, then - // `nextPageToken` is included. To get the next set of results, call this - // method again using the value of `nextPageToken` as `pageToken`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListLogMetricsResponse) Reset() { *m = ListLogMetricsResponse{} } -func (m *ListLogMetricsResponse) String() string { return proto.CompactTextString(m) } -func (*ListLogMetricsResponse) ProtoMessage() {} -func (*ListLogMetricsResponse) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } - -func (m *ListLogMetricsResponse) GetMetrics() []*LogMetric { - if m != nil { - return m.Metrics - } - return nil -} - -func (m *ListLogMetricsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The parameters to GetLogMetric. -type GetLogMetricRequest struct { - // The resource name of the desired metric: - // - // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" - MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName" json:"metric_name,omitempty"` -} - -func (m *GetLogMetricRequest) Reset() { *m = GetLogMetricRequest{} } -func (m *GetLogMetricRequest) String() string { return proto.CompactTextString(m) } -func (*GetLogMetricRequest) ProtoMessage() {} -func (*GetLogMetricRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{3} } - -func (m *GetLogMetricRequest) GetMetricName() string { - if m != nil { - return m.MetricName - } - return "" -} - -// The parameters to CreateLogMetric. -type CreateLogMetricRequest struct { - // The resource name of the project in which to create the metric: - // - // "projects/[PROJECT_ID]" - // - // The new metric must be provided in the request. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The new logs-based metric, which must not have an identifier that - // already exists. - Metric *LogMetric `protobuf:"bytes,2,opt,name=metric" json:"metric,omitempty"` -} - -func (m *CreateLogMetricRequest) Reset() { *m = CreateLogMetricRequest{} } -func (m *CreateLogMetricRequest) String() string { return proto.CompactTextString(m) } -func (*CreateLogMetricRequest) ProtoMessage() {} -func (*CreateLogMetricRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4} } - -func (m *CreateLogMetricRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateLogMetricRequest) GetMetric() *LogMetric { - if m != nil { - return m.Metric - } - return nil -} - -// The parameters to UpdateLogMetric. -type UpdateLogMetricRequest struct { - // The resource name of the metric to update: - // - // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" - // - // The updated metric must be provided in the request and it's - // `name` field must be the same as `[METRIC_ID]` If the metric - // does not exist in `[PROJECT_ID]`, then a new metric is created. - MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName" json:"metric_name,omitempty"` - // The updated metric. - Metric *LogMetric `protobuf:"bytes,2,opt,name=metric" json:"metric,omitempty"` -} - -func (m *UpdateLogMetricRequest) Reset() { *m = UpdateLogMetricRequest{} } -func (m *UpdateLogMetricRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateLogMetricRequest) ProtoMessage() {} -func (*UpdateLogMetricRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{5} } - -func (m *UpdateLogMetricRequest) GetMetricName() string { - if m != nil { - return m.MetricName - } - return "" -} - -func (m *UpdateLogMetricRequest) GetMetric() *LogMetric { - if m != nil { - return m.Metric - } - return nil -} - -// The parameters to DeleteLogMetric. -type DeleteLogMetricRequest struct { - // The resource name of the metric to delete: - // - // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" - MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName" json:"metric_name,omitempty"` -} - -func (m *DeleteLogMetricRequest) Reset() { *m = DeleteLogMetricRequest{} } -func (m *DeleteLogMetricRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteLogMetricRequest) ProtoMessage() {} -func (*DeleteLogMetricRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{6} } - -func (m *DeleteLogMetricRequest) GetMetricName() string { - if m != nil { - return m.MetricName - } - return "" -} - -func init() { - proto.RegisterType((*LogMetric)(nil), "google.logging.v2.LogMetric") - proto.RegisterType((*ListLogMetricsRequest)(nil), "google.logging.v2.ListLogMetricsRequest") - proto.RegisterType((*ListLogMetricsResponse)(nil), "google.logging.v2.ListLogMetricsResponse") - proto.RegisterType((*GetLogMetricRequest)(nil), "google.logging.v2.GetLogMetricRequest") - proto.RegisterType((*CreateLogMetricRequest)(nil), "google.logging.v2.CreateLogMetricRequest") - proto.RegisterType((*UpdateLogMetricRequest)(nil), "google.logging.v2.UpdateLogMetricRequest") - proto.RegisterType((*DeleteLogMetricRequest)(nil), "google.logging.v2.DeleteLogMetricRequest") - proto.RegisterEnum("google.logging.v2.LogMetric_ApiVersion", LogMetric_ApiVersion_name, LogMetric_ApiVersion_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for MetricsServiceV2 service - -type MetricsServiceV2Client interface { - // Lists logs-based metrics. - ListLogMetrics(ctx context.Context, in *ListLogMetricsRequest, opts ...grpc.CallOption) (*ListLogMetricsResponse, error) - // Gets a logs-based metric. - GetLogMetric(ctx context.Context, in *GetLogMetricRequest, opts ...grpc.CallOption) (*LogMetric, error) - // Creates a logs-based metric. - CreateLogMetric(ctx context.Context, in *CreateLogMetricRequest, opts ...grpc.CallOption) (*LogMetric, error) - // Creates or updates a logs-based metric. - UpdateLogMetric(ctx context.Context, in *UpdateLogMetricRequest, opts ...grpc.CallOption) (*LogMetric, error) - // Deletes a logs-based metric. - DeleteLogMetric(ctx context.Context, in *DeleteLogMetricRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) -} - -type metricsServiceV2Client struct { - cc *grpc.ClientConn -} - -func NewMetricsServiceV2Client(cc *grpc.ClientConn) MetricsServiceV2Client { - return &metricsServiceV2Client{cc} -} - -func (c *metricsServiceV2Client) ListLogMetrics(ctx context.Context, in *ListLogMetricsRequest, opts ...grpc.CallOption) (*ListLogMetricsResponse, error) { - out := new(ListLogMetricsResponse) - err := grpc.Invoke(ctx, "/google.logging.v2.MetricsServiceV2/ListLogMetrics", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricsServiceV2Client) GetLogMetric(ctx context.Context, in *GetLogMetricRequest, opts ...grpc.CallOption) (*LogMetric, error) { - out := new(LogMetric) - err := grpc.Invoke(ctx, "/google.logging.v2.MetricsServiceV2/GetLogMetric", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricsServiceV2Client) CreateLogMetric(ctx context.Context, in *CreateLogMetricRequest, opts ...grpc.CallOption) (*LogMetric, error) { - out := new(LogMetric) - err := grpc.Invoke(ctx, "/google.logging.v2.MetricsServiceV2/CreateLogMetric", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricsServiceV2Client) UpdateLogMetric(ctx context.Context, in *UpdateLogMetricRequest, opts ...grpc.CallOption) (*LogMetric, error) { - out := new(LogMetric) - err := grpc.Invoke(ctx, "/google.logging.v2.MetricsServiceV2/UpdateLogMetric", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricsServiceV2Client) DeleteLogMetric(ctx context.Context, in *DeleteLogMetricRequest, opts ...grpc.CallOption) (*google_protobuf5.Empty, error) { - out := new(google_protobuf5.Empty) - err := grpc.Invoke(ctx, "/google.logging.v2.MetricsServiceV2/DeleteLogMetric", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for MetricsServiceV2 service - -type MetricsServiceV2Server interface { - // Lists logs-based metrics. - ListLogMetrics(context.Context, *ListLogMetricsRequest) (*ListLogMetricsResponse, error) - // Gets a logs-based metric. - GetLogMetric(context.Context, *GetLogMetricRequest) (*LogMetric, error) - // Creates a logs-based metric. - CreateLogMetric(context.Context, *CreateLogMetricRequest) (*LogMetric, error) - // Creates or updates a logs-based metric. - UpdateLogMetric(context.Context, *UpdateLogMetricRequest) (*LogMetric, error) - // Deletes a logs-based metric. - DeleteLogMetric(context.Context, *DeleteLogMetricRequest) (*google_protobuf5.Empty, error) -} - -func RegisterMetricsServiceV2Server(s *grpc.Server, srv MetricsServiceV2Server) { - s.RegisterService(&_MetricsServiceV2_serviceDesc, srv) -} - -func _MetricsServiceV2_ListLogMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListLogMetricsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricsServiceV2Server).ListLogMetrics(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.MetricsServiceV2/ListLogMetrics", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricsServiceV2Server).ListLogMetrics(ctx, req.(*ListLogMetricsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricsServiceV2_GetLogMetric_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetLogMetricRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricsServiceV2Server).GetLogMetric(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.MetricsServiceV2/GetLogMetric", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricsServiceV2Server).GetLogMetric(ctx, req.(*GetLogMetricRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricsServiceV2_CreateLogMetric_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateLogMetricRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricsServiceV2Server).CreateLogMetric(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.MetricsServiceV2/CreateLogMetric", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricsServiceV2Server).CreateLogMetric(ctx, req.(*CreateLogMetricRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricsServiceV2_UpdateLogMetric_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateLogMetricRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricsServiceV2Server).UpdateLogMetric(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.MetricsServiceV2/UpdateLogMetric", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricsServiceV2Server).UpdateLogMetric(ctx, req.(*UpdateLogMetricRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricsServiceV2_DeleteLogMetric_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteLogMetricRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricsServiceV2Server).DeleteLogMetric(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.logging.v2.MetricsServiceV2/DeleteLogMetric", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricsServiceV2Server).DeleteLogMetric(ctx, req.(*DeleteLogMetricRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _MetricsServiceV2_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.logging.v2.MetricsServiceV2", - HandlerType: (*MetricsServiceV2Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListLogMetrics", - Handler: _MetricsServiceV2_ListLogMetrics_Handler, - }, - { - MethodName: "GetLogMetric", - Handler: _MetricsServiceV2_GetLogMetric_Handler, - }, - { - MethodName: "CreateLogMetric", - Handler: _MetricsServiceV2_CreateLogMetric_Handler, - }, - { - MethodName: "UpdateLogMetric", - Handler: _MetricsServiceV2_UpdateLogMetric_Handler, - }, - { - MethodName: "DeleteLogMetric", - Handler: _MetricsServiceV2_DeleteLogMetric_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/logging/v2/logging_metrics.proto", -} - -func init() { proto.RegisterFile("google/logging/v2/logging_metrics.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 846 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xc1, 0x6e, 0xdb, 0x46, - 0x10, 0xed, 0xca, 0xb6, 0x1c, 0x8f, 0x1b, 0x4b, 0xd9, 0x24, 0x8a, 0xa0, 0x38, 0x88, 0xca, 0x83, - 0xa5, 0xf8, 0x40, 0x36, 0x6c, 0x61, 0xa4, 0x29, 0x7a, 0x88, 0x62, 0x23, 0x28, 0xa0, 0xb4, 0x06, - 0xd3, 0xea, 0x50, 0x08, 0x20, 0x28, 0x69, 0x44, 0x6c, 0x45, 0x71, 0x59, 0xee, 0x4a, 0xb0, 0x53, - 0xe4, 0x52, 0xe4, 0x56, 0xa0, 0x87, 0xf6, 0x03, 0x72, 0xef, 0xa7, 0xf4, 0xda, 0x7e, 0x42, 0x3f, - 0xa2, 0xc7, 0x82, 0xcb, 0xa5, 0xcc, 0x48, 0x8c, 0x65, 0xf8, 0xe4, 0xdd, 0x79, 0x33, 0xfb, 0xde, - 0xcc, 0x3c, 0x59, 0x82, 0x96, 0xcf, 0xb9, 0x1f, 0xa0, 0x15, 0x70, 0xdf, 0x67, 0xa1, 0x6f, 0xcd, - 0xed, 0xec, 0xe8, 0x4e, 0x51, 0xc6, 0x6c, 0x28, 0xcc, 0x28, 0xe6, 0x92, 0xd3, 0x5b, 0x69, 0xa2, - 0xa9, 0x51, 0x73, 0x6e, 0x37, 0xf6, 0x75, 0xad, 0x17, 0x31, 0xcb, 0x0b, 0x43, 0x2e, 0x3d, 0xc9, - 0x78, 0xa8, 0x0b, 0x1a, 0x0f, 0x72, 0xe8, 0x88, 0x09, 0x19, 0xb3, 0xc1, 0x2c, 0xc1, 0x35, 0x7c, - 0x2f, 0x07, 0xa7, 0x4c, 0x1a, 0xb8, 0xaf, 0x01, 0x75, 0x1b, 0xcc, 0xc6, 0x16, 0x4e, 0x23, 0x79, - 0xae, 0xc1, 0xe6, 0x32, 0x38, 0x66, 0x18, 0x8c, 0xdc, 0xa9, 0x27, 0x26, 0x69, 0x86, 0xf1, 0x6e, - 0x13, 0x76, 0xba, 0xdc, 0x7f, 0xa9, 0x9e, 0xa4, 0x14, 0x36, 0x43, 0x6f, 0x8a, 0x75, 0xd2, 0x24, - 0xed, 0x1d, 0x47, 0x9d, 0x69, 0x13, 0x76, 0x47, 0x28, 0x86, 0x31, 0x8b, 0x12, 0x39, 0xf5, 0x92, - 0x82, 0xf2, 0x21, 0x5a, 0x83, 0xf2, 0x98, 0x05, 0x12, 0xe3, 0xfa, 0x86, 0x02, 0xf5, 0x8d, 0x7e, - 0x0d, 0xb7, 0x52, 0xa9, 0x6e, 0x96, 0xcd, 0xe3, 0xfa, 0x56, 0x93, 0xb4, 0x77, 0xed, 0x7d, 0x53, - 0xcf, 0xc7, 0x8b, 0x98, 0x99, 0x92, 0x1f, 0x2f, 0x72, 0x9c, 0xea, 0x74, 0x29, 0x42, 0x5b, 0x50, - 0x99, 0x7b, 0xc1, 0x0c, 0x5d, 0x3c, 0x93, 0xb1, 0x37, 0x4c, 0x1e, 0x2a, 0x2b, 0xae, 0x3d, 0x15, - 0x3e, 0xc9, 0xa2, 0xb4, 0x0f, 0xd5, 0xc0, 0x1b, 0x60, 0x70, 0x91, 0x28, 0xea, 0xdb, 0xcd, 0x8d, - 0xf6, 0xae, 0xfd, 0xd8, 0x5c, 0x59, 0x89, 0xb9, 0xe8, 0xdc, 0xec, 0x26, 0x45, 0x8b, 0x67, 0xc4, - 0x49, 0x28, 0xe3, 0x73, 0xa7, 0x12, 0xbc, 0x1f, 0xa5, 0x2f, 0x61, 0x6f, 0x30, 0x1b, 0x4e, 0x50, - 0xba, 0x5c, 0xb5, 0x2e, 0xea, 0x37, 0x54, 0x3b, 0x07, 0xf9, 0x76, 0x8e, 0xf3, 0xdb, 0xeb, 0xa8, - 0xf4, 0x6f, 0xd3, 0x6c, 0xe7, 0xe6, 0x20, 0x7f, 0xa5, 0xcf, 0x60, 0x7b, 0x8e, 0xb1, 0x48, 0xc6, - 0xba, 0xd9, 0x24, 0xed, 0x3d, 0xbb, 0x75, 0xa9, 0xc6, 0x67, 0x11, 0xeb, 0xa5, 0xe9, 0x4e, 0x56, - 0xd7, 0xe8, 0xc0, 0x9d, 0x22, 0xe9, 0xb4, 0x0a, 0x1b, 0x13, 0x3c, 0xd7, 0x8b, 0x4c, 0x8e, 0xf4, - 0x0e, 0x6c, 0xa9, 0x59, 0xe9, 0x0d, 0xa6, 0x97, 0xa7, 0xa5, 0x27, 0xc4, 0xd8, 0x07, 0xb8, 0x78, - 0x9a, 0x96, 0xa1, 0xd4, 0xb3, 0xab, 0x1f, 0xa9, 0xbf, 0x8f, 0xab, 0xc4, 0x98, 0xc0, 0xdd, 0x2e, - 0x13, 0x72, 0x21, 0x43, 0x38, 0xf8, 0xd3, 0x0c, 0x85, 0x4c, 0xd6, 0x1e, 0x79, 0x31, 0x86, 0x52, - 0xb3, 0xe8, 0x1b, 0x7d, 0x00, 0x10, 0x79, 0x3e, 0xba, 0x92, 0x4f, 0x30, 0xf3, 0xcb, 0x4e, 0x12, - 0xf9, 0x2e, 0x09, 0xd0, 0xfb, 0xa0, 0x2e, 0xae, 0x60, 0xaf, 0x51, 0x19, 0x66, 0xcb, 0xb9, 0x91, - 0x04, 0x5e, 0xb1, 0xd7, 0x68, 0x9c, 0x41, 0x6d, 0x99, 0x4c, 0x44, 0x3c, 0x14, 0x48, 0x8f, 0x60, - 0x5b, 0x7f, 0xc2, 0xea, 0x44, 0xed, 0x73, 0xff, 0xb2, 0x59, 0x39, 0x59, 0x32, 0x3d, 0x80, 0x4a, - 0x88, 0x67, 0xd2, 0x5d, 0x91, 0x74, 0x33, 0x09, 0x9f, 0x66, 0xb2, 0x8c, 0x23, 0xb8, 0xfd, 0x02, - 0x2f, 0x88, 0xb3, 0x26, 0x1f, 0xc2, 0xae, 0xf6, 0x70, 0xee, 0x83, 0x01, 0x69, 0xe8, 0x1b, 0x6f, - 0x8a, 0xc6, 0x18, 0x6a, 0xcf, 0x63, 0xf4, 0x24, 0xae, 0x94, 0x7e, 0x68, 0x3e, 0x9f, 0x43, 0x39, - 0xad, 0x57, 0x42, 0xd6, 0x35, 0xa2, 0x73, 0x0d, 0x0e, 0xb5, 0xef, 0xa3, 0x51, 0x11, 0xcf, 0x3a, - 0x89, 0xd7, 0x24, 0xfc, 0x02, 0x6a, 0xc7, 0x18, 0xe0, 0x35, 0x08, 0xed, 0x7f, 0xb6, 0xa0, 0xaa, - 0xf7, 0xf7, 0x0a, 0xe3, 0x39, 0x1b, 0x62, 0xcf, 0xa6, 0xbf, 0x11, 0xd8, 0x7b, 0x7f, 0xb7, 0xb4, - 0x5d, 0x24, 0xa4, 0xc8, 0x6b, 0x8d, 0x47, 0x57, 0xc8, 0x4c, 0x8d, 0x62, 0xb4, 0x7e, 0xf9, 0xfb, - 0xdf, 0x3f, 0x4a, 0x9f, 0xd0, 0x87, 0xc9, 0x3f, 0xe7, 0x9f, 0xd3, 0x99, 0x7f, 0x15, 0xc5, 0xfc, - 0x47, 0x1c, 0x4a, 0x61, 0x1d, 0xbe, 0xb1, 0x32, 0x67, 0xbc, 0x25, 0xf0, 0x71, 0x7e, 0xe5, 0xf4, - 0xa0, 0x80, 0xa4, 0xc0, 0x13, 0x8d, 0x4b, 0xe7, 0x67, 0x98, 0x8a, 0xbf, 0x4d, 0x0f, 0x14, 0x7f, - 0x6e, 0x50, 0x39, 0x11, 0x99, 0x06, 0xeb, 0xf0, 0x0d, 0xfd, 0x95, 0x40, 0x65, 0xc9, 0x41, 0xb4, - 0xa8, 0xdd, 0x62, 0x97, 0xad, 0x11, 0x63, 0x29, 0x31, 0x8f, 0x8c, 0x75, 0xc3, 0x78, 0xaa, 0xb7, - 0x4e, 0x7f, 0x27, 0x50, 0x59, 0xf2, 0x59, 0xa1, 0x9a, 0x62, 0x2f, 0xae, 0x51, 0x73, 0xa4, 0xd4, - 0x7c, 0xda, 0xb8, 0xe2, 0x68, 0x16, 0xa2, 0xde, 0x12, 0xa8, 0x2c, 0x79, 0xb1, 0x50, 0x54, 0xb1, - 0x5f, 0x1b, 0xb5, 0x2c, 0x35, 0xfb, 0x1a, 0x34, 0x4f, 0x92, 0xef, 0xc8, 0x6c, 0x53, 0x87, 0x57, - 0x94, 0xd3, 0x79, 0x47, 0xe0, 0xee, 0x90, 0x4f, 0x57, 0x89, 0x3b, 0xb7, 0xbb, 0xe9, 0x59, 0x7b, - 0xf1, 0x34, 0xe1, 0x39, 0x25, 0x3f, 0x3c, 0xd1, 0x99, 0x3e, 0x0f, 0xbc, 0xd0, 0x37, 0x79, 0xec, - 0x5b, 0x3e, 0x86, 0x4a, 0x85, 0x95, 0x42, 0x5e, 0xc4, 0x44, 0xee, 0xc7, 0xc4, 0x97, 0xfa, 0xf8, - 0x1f, 0x21, 0x7f, 0x96, 0xee, 0xbd, 0x48, 0xab, 0x9f, 0x07, 0x7c, 0x36, 0x32, 0x35, 0x83, 0xd9, - 0xb3, 0xff, 0xca, 0x90, 0xbe, 0x42, 0xfa, 0x1a, 0xe9, 0xf7, 0xec, 0x41, 0x59, 0xbd, 0xfd, 0xd9, - 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xb9, 0xb3, 0xe4, 0xa7, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/longrunning/operations.pb.go b/vendor/google.golang.org/genproto/googleapis/longrunning/operations.pb.go deleted file mode 100644 index 913607f3..00000000 --- a/vendor/google.golang.org/genproto/googleapis/longrunning/operations.pb.go +++ /dev/null @@ -1,597 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/longrunning/operations.proto - -/* -Package longrunning is a generated protocol buffer package. - -It is generated from these files: - google/longrunning/operations.proto - -It has these top-level messages: - Operation - GetOperationRequest - ListOperationsRequest - ListOperationsResponse - CancelOperationRequest - DeleteOperationRequest -*/ -package longrunning - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// This resource represents a long-running operation that is the result of a -// network API call. -type Operation struct { - // The server-assigned name, which is only unique within the same service that - // originally returns it. If you use the default HTTP mapping, the - // `name` should have the format of `operations/some/unique/name`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Service-specific metadata associated with the operation. It typically - // contains progress information and common metadata such as create time. - // Some services might not provide such metadata. Any method that returns a - // long-running operation should document the metadata type, if any. - Metadata *google_protobuf1.Any `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"` - // If the value is `false`, it means the operation is still in progress. - // If true, the operation is completed, and either `error` or `response` is - // available. - Done bool `protobuf:"varint,3,opt,name=done" json:"done,omitempty"` - // The operation result, which can be either an `error` or a valid `response`. - // If `done` == `false`, neither `error` nor `response` is set. - // If `done` == `true`, exactly one of `error` or `response` is set. - // - // Types that are valid to be assigned to Result: - // *Operation_Error - // *Operation_Response - Result isOperation_Result `protobuf_oneof:"result"` -} - -func (m *Operation) Reset() { *m = Operation{} } -func (m *Operation) String() string { return proto.CompactTextString(m) } -func (*Operation) ProtoMessage() {} -func (*Operation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isOperation_Result interface { - isOperation_Result() -} - -type Operation_Error struct { - Error *google_rpc.Status `protobuf:"bytes,4,opt,name=error,oneof"` -} -type Operation_Response struct { - Response *google_protobuf1.Any `protobuf:"bytes,5,opt,name=response,oneof"` -} - -func (*Operation_Error) isOperation_Result() {} -func (*Operation_Response) isOperation_Result() {} - -func (m *Operation) GetResult() isOperation_Result { - if m != nil { - return m.Result - } - return nil -} - -func (m *Operation) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Operation) GetMetadata() *google_protobuf1.Any { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *Operation) GetDone() bool { - if m != nil { - return m.Done - } - return false -} - -func (m *Operation) GetError() *google_rpc.Status { - if x, ok := m.GetResult().(*Operation_Error); ok { - return x.Error - } - return nil -} - -func (m *Operation) GetResponse() *google_protobuf1.Any { - if x, ok := m.GetResult().(*Operation_Response); ok { - return x.Response - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Operation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Operation_OneofMarshaler, _Operation_OneofUnmarshaler, _Operation_OneofSizer, []interface{}{ - (*Operation_Error)(nil), - (*Operation_Response)(nil), - } -} - -func _Operation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Operation) - // result - switch x := m.Result.(type) { - case *Operation_Error: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Error); err != nil { - return err - } - case *Operation_Response: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Response); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Operation.Result has unexpected type %T", x) - } - return nil -} - -func _Operation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Operation) - switch tag { - case 4: // result.error - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_rpc.Status) - err := b.DecodeMessage(msg) - m.Result = &Operation_Error{msg} - return true, err - case 5: // result.response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Any) - err := b.DecodeMessage(msg) - m.Result = &Operation_Response{msg} - return true, err - default: - return false, nil - } -} - -func _Operation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Operation) - // result - switch x := m.Result.(type) { - case *Operation_Error: - s := proto.Size(x.Error) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Operation_Response: - s := proto.Size(x.Response) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The request message for [Operations.GetOperation][google.longrunning.Operations.GetOperation]. -type GetOperationRequest struct { - // The name of the operation resource. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetOperationRequest) Reset() { *m = GetOperationRequest{} } -func (m *GetOperationRequest) String() string { return proto.CompactTextString(m) } -func (*GetOperationRequest) ProtoMessage() {} -func (*GetOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *GetOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for [Operations.ListOperations][google.longrunning.Operations.ListOperations]. -type ListOperationsRequest struct { - // The name of the operation collection. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` - // The standard list filter. - Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"` - // The standard list page size. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The standard list page token. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListOperationsRequest) Reset() { *m = ListOperationsRequest{} } -func (m *ListOperationsRequest) String() string { return proto.CompactTextString(m) } -func (*ListOperationsRequest) ProtoMessage() {} -func (*ListOperationsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ListOperationsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListOperationsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListOperationsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListOperationsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response message for [Operations.ListOperations][google.longrunning.Operations.ListOperations]. -type ListOperationsResponse struct { - // A list of operations that matches the specified filter in the request. - Operations []*Operation `protobuf:"bytes,1,rep,name=operations" json:"operations,omitempty"` - // The standard List next-page token. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListOperationsResponse) Reset() { *m = ListOperationsResponse{} } -func (m *ListOperationsResponse) String() string { return proto.CompactTextString(m) } -func (*ListOperationsResponse) ProtoMessage() {} -func (*ListOperationsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListOperationsResponse) GetOperations() []*Operation { - if m != nil { - return m.Operations - } - return nil -} - -func (m *ListOperationsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]. -type CancelOperationRequest struct { - // The name of the operation resource to be cancelled. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *CancelOperationRequest) Reset() { *m = CancelOperationRequest{} } -func (m *CancelOperationRequest) String() string { return proto.CompactTextString(m) } -func (*CancelOperationRequest) ProtoMessage() {} -func (*CancelOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *CancelOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for [Operations.DeleteOperation][google.longrunning.Operations.DeleteOperation]. -type DeleteOperationRequest struct { - // The name of the operation resource to be deleted. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteOperationRequest) Reset() { *m = DeleteOperationRequest{} } -func (m *DeleteOperationRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteOperationRequest) ProtoMessage() {} -func (*DeleteOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *DeleteOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*Operation)(nil), "google.longrunning.Operation") - proto.RegisterType((*GetOperationRequest)(nil), "google.longrunning.GetOperationRequest") - proto.RegisterType((*ListOperationsRequest)(nil), "google.longrunning.ListOperationsRequest") - proto.RegisterType((*ListOperationsResponse)(nil), "google.longrunning.ListOperationsResponse") - proto.RegisterType((*CancelOperationRequest)(nil), "google.longrunning.CancelOperationRequest") - proto.RegisterType((*DeleteOperationRequest)(nil), "google.longrunning.DeleteOperationRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Operations service - -type OperationsClient interface { - // Lists operations that match the specified filter in the request. If the - // server doesn't support this method, it returns `UNIMPLEMENTED`. - // - // NOTE: the `name` binding below allows API services to override the binding - // to use different resource name schemes, such as `users/*/operations`. - ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) - // Gets the latest state of a long-running operation. Clients can use this - // method to poll the operation result at intervals as recommended by the API - // service. - GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) - // Deletes a long-running operation. This method indicates that the client is - // no longer interested in the operation result. It does not cancel the - // operation. If the server doesn't support this method, it returns - // `google.rpc.Code.UNIMPLEMENTED`. - DeleteOperation(ctx context.Context, in *DeleteOperationRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Starts asynchronous cancellation on a long-running operation. The server - // makes a best effort to cancel the operation, but success is not - // guaranteed. If the server doesn't support this method, it returns - // `google.rpc.Code.UNIMPLEMENTED`. Clients can use - // [Operations.GetOperation][google.longrunning.Operations.GetOperation] or - // other methods to check whether the cancellation succeeded or whether the - // operation completed despite cancellation. On successful cancellation, - // the operation is not deleted; instead, it becomes an operation with - // an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, - // corresponding to `Code.CANCELLED`. - CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type operationsClient struct { - cc *grpc.ClientConn -} - -func NewOperationsClient(cc *grpc.ClientConn) OperationsClient { - return &operationsClient{cc} -} - -func (c *operationsClient) ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) { - out := new(ListOperationsResponse) - err := grpc.Invoke(ctx, "/google.longrunning.Operations/ListOperations", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *operationsClient) GetOperation(ctx context.Context, in *GetOperationRequest, opts ...grpc.CallOption) (*Operation, error) { - out := new(Operation) - err := grpc.Invoke(ctx, "/google.longrunning.Operations/GetOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *operationsClient) DeleteOperation(ctx context.Context, in *DeleteOperationRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.longrunning.Operations/DeleteOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *operationsClient) CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.longrunning.Operations/CancelOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Operations service - -type OperationsServer interface { - // Lists operations that match the specified filter in the request. If the - // server doesn't support this method, it returns `UNIMPLEMENTED`. - // - // NOTE: the `name` binding below allows API services to override the binding - // to use different resource name schemes, such as `users/*/operations`. - ListOperations(context.Context, *ListOperationsRequest) (*ListOperationsResponse, error) - // Gets the latest state of a long-running operation. Clients can use this - // method to poll the operation result at intervals as recommended by the API - // service. - GetOperation(context.Context, *GetOperationRequest) (*Operation, error) - // Deletes a long-running operation. This method indicates that the client is - // no longer interested in the operation result. It does not cancel the - // operation. If the server doesn't support this method, it returns - // `google.rpc.Code.UNIMPLEMENTED`. - DeleteOperation(context.Context, *DeleteOperationRequest) (*google_protobuf2.Empty, error) - // Starts asynchronous cancellation on a long-running operation. The server - // makes a best effort to cancel the operation, but success is not - // guaranteed. If the server doesn't support this method, it returns - // `google.rpc.Code.UNIMPLEMENTED`. Clients can use - // [Operations.GetOperation][google.longrunning.Operations.GetOperation] or - // other methods to check whether the cancellation succeeded or whether the - // operation completed despite cancellation. On successful cancellation, - // the operation is not deleted; instead, it becomes an operation with - // an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, - // corresponding to `Code.CANCELLED`. - CancelOperation(context.Context, *CancelOperationRequest) (*google_protobuf2.Empty, error) -} - -func RegisterOperationsServer(s *grpc.Server, srv OperationsServer) { - s.RegisterService(&_Operations_serviceDesc, srv) -} - -func _Operations_ListOperations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListOperationsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperationsServer).ListOperations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.longrunning.Operations/ListOperations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperationsServer).ListOperations(ctx, req.(*ListOperationsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Operations_GetOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperationsServer).GetOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.longrunning.Operations/GetOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperationsServer).GetOperation(ctx, req.(*GetOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Operations_DeleteOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperationsServer).DeleteOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.longrunning.Operations/DeleteOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperationsServer).DeleteOperation(ctx, req.(*DeleteOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Operations_CancelOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OperationsServer).CancelOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.longrunning.Operations/CancelOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OperationsServer).CancelOperation(ctx, req.(*CancelOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Operations_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.longrunning.Operations", - HandlerType: (*OperationsServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListOperations", - Handler: _Operations_ListOperations_Handler, - }, - { - MethodName: "GetOperation", - Handler: _Operations_GetOperation_Handler, - }, - { - MethodName: "DeleteOperation", - Handler: _Operations_DeleteOperation_Handler, - }, - { - MethodName: "CancelOperation", - Handler: _Operations_CancelOperation_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/longrunning/operations.proto", -} - -func init() { proto.RegisterFile("google/longrunning/operations.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 597 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, - 0x10, 0xae, 0xd3, 0xb4, 0x4a, 0xa6, 0xff, 0x4f, 0xa4, 0x85, 0xba, 0xc6, 0x25, 0x22, 0x32, 0x08, - 0x52, 0xab, 0xb2, 0x21, 0xdc, 0x8a, 0x72, 0x20, 0x80, 0xda, 0x43, 0x25, 0x22, 0x97, 0x13, 0x42, - 0xaa, 0xb6, 0xe9, 0xd4, 0xb2, 0x70, 0x76, 0xcd, 0x7a, 0x03, 0x6d, 0x51, 0x55, 0xc1, 0x81, 0x13, - 0x37, 0x78, 0x0a, 0x1e, 0x85, 0x0b, 0x07, 0x5e, 0x81, 0x07, 0x41, 0x5e, 0xdb, 0xb1, 0x49, 0x1d, - 0x94, 0xdb, 0x7a, 0xe6, 0x9b, 0xf9, 0xe6, 0xfb, 0x76, 0xd6, 0x70, 0xc7, 0xe7, 0xdc, 0x0f, 0xd1, - 0x0d, 0x39, 0xf3, 0xc5, 0x84, 0xb1, 0x80, 0xf9, 0x2e, 0x8f, 0x50, 0x50, 0x19, 0x70, 0x16, 0x3b, - 0x91, 0xe0, 0x92, 0x13, 0x92, 0x82, 0x9c, 0x12, 0xc8, 0xbc, 0x95, 0x15, 0xd2, 0x28, 0x70, 0x29, - 0x63, 0x5c, 0x96, 0x2b, 0xcc, 0x9b, 0x59, 0x56, 0x7d, 0x1d, 0x4d, 0x4e, 0x5c, 0xca, 0xce, 0xb2, - 0xd4, 0xe6, 0x6c, 0x0a, 0xc7, 0x91, 0xcc, 0x93, 0x1b, 0x59, 0x52, 0x44, 0x23, 0x37, 0x96, 0x54, - 0x4e, 0xb2, 0x86, 0xd6, 0x4f, 0x0d, 0x9a, 0x2f, 0xf2, 0xb9, 0x08, 0x81, 0x3a, 0xa3, 0x63, 0x34, - 0xb4, 0x8e, 0xd6, 0x6d, 0x7a, 0xea, 0x4c, 0x1e, 0x40, 0x63, 0x8c, 0x92, 0x1e, 0x53, 0x49, 0x8d, - 0x5a, 0x47, 0xeb, 0xae, 0xf5, 0x6e, 0x38, 0xd9, 0xdc, 0x39, 0x95, 0xf3, 0x84, 0x9d, 0x79, 0x53, - 0x54, 0xd2, 0xe5, 0x98, 0x33, 0x34, 0x96, 0x3b, 0x5a, 0xb7, 0xe1, 0xa9, 0x33, 0xb1, 0x61, 0x05, - 0x85, 0xe0, 0xc2, 0xa8, 0xab, 0x16, 0x24, 0x6f, 0x21, 0xa2, 0x91, 0x73, 0xa0, 0x06, 0xda, 0x5b, - 0xf2, 0x52, 0x08, 0xe9, 0x41, 0x43, 0x60, 0x1c, 0x71, 0x16, 0xa3, 0xb1, 0x32, 0x9f, 0x71, 0x6f, - 0xc9, 0x9b, 0xe2, 0x06, 0x0d, 0x58, 0x15, 0x18, 0x4f, 0x42, 0x69, 0x6d, 0xc1, 0xf5, 0x5d, 0x94, - 0x53, 0x4d, 0x1e, 0xbe, 0x9d, 0x60, 0x2c, 0xab, 0xa4, 0x59, 0x97, 0xb0, 0xbe, 0x1f, 0xc4, 0x05, - 0x36, 0x9e, 0x05, 0xd7, 0x4b, 0x3e, 0xe8, 0xb0, 0x7a, 0x12, 0x84, 0x12, 0x45, 0xd6, 0x22, 0xfb, - 0x22, 0x9b, 0xd0, 0x8c, 0xa8, 0x8f, 0x87, 0x71, 0x70, 0x8e, 0xca, 0xa0, 0x15, 0xaf, 0x91, 0x04, - 0x0e, 0x82, 0x73, 0x24, 0x6d, 0x00, 0x95, 0x94, 0xfc, 0x0d, 0x32, 0x65, 0x48, 0xd3, 0x53, 0xf0, - 0x97, 0x49, 0xc0, 0xba, 0x04, 0x7d, 0x76, 0x80, 0x54, 0x0f, 0xe9, 0x03, 0x14, 0xeb, 0x62, 0x68, - 0x9d, 0xe5, 0xee, 0x5a, 0xaf, 0xed, 0x5c, 0xdd, 0x17, 0xa7, 0x10, 0x5a, 0x2a, 0x20, 0xf7, 0xa0, - 0xc5, 0xf0, 0x54, 0x1e, 0x96, 0xc8, 0x6b, 0x8a, 0xfc, 0xff, 0x24, 0x3c, 0x9c, 0x0e, 0xb0, 0x0d, - 0xfa, 0x53, 0xca, 0x46, 0x18, 0x2e, 0xe4, 0xd7, 0x36, 0xe8, 0xcf, 0x30, 0x44, 0x89, 0x8b, 0xa0, - 0x7b, 0x5f, 0xea, 0x00, 0x85, 0x32, 0xf2, 0x59, 0x83, 0x6b, 0x7f, 0x8b, 0x25, 0x5b, 0x55, 0x82, - 0x2a, 0x6f, 0xc4, 0xb4, 0x17, 0x81, 0xa6, 0xde, 0x59, 0xed, 0x4f, 0xbf, 0x7e, 0x7f, 0xad, 0x6d, - 0x90, 0x75, 0xf7, 0xdd, 0x43, 0xf7, 0x43, 0x32, 0x4b, 0xbf, 0xb0, 0xe6, 0x82, 0x9c, 0xc2, 0x7f, - 0xe5, 0x05, 0x21, 0xf7, 0xab, 0x5a, 0x57, 0xac, 0x90, 0xf9, 0x6f, 0xff, 0xad, 0x8e, 0xa2, 0x35, - 0x89, 0x51, 0x45, 0xeb, 0xda, 0xf6, 0x05, 0x79, 0x0f, 0xad, 0x19, 0xff, 0x48, 0xa5, 0xae, 0x6a, - 0x93, 0x4d, 0xfd, 0xca, 0x2b, 0x78, 0x9e, 0x3c, 0xf1, 0x9c, 0xd8, 0x9e, 0x4f, 0xfc, 0x51, 0x83, - 0xd6, 0xcc, 0x3d, 0x57, 0x33, 0x57, 0x2f, 0xc3, 0x5c, 0x66, 0x5b, 0x31, 0xdf, 0xb5, 0x6e, 0xcf, - 0x63, 0xde, 0x19, 0xa9, 0x86, 0x3b, 0x9a, 0x3d, 0xf8, 0xa6, 0x81, 0x3e, 0xe2, 0xe3, 0x0a, 0xd6, - 0x41, 0xab, 0xb8, 0xc4, 0x61, 0x42, 0x30, 0xd4, 0x5e, 0xf5, 0x33, 0x98, 0xcf, 0x43, 0xca, 0x7c, - 0x87, 0x0b, 0xdf, 0xf5, 0x91, 0x29, 0x7a, 0x37, 0x4d, 0xd1, 0x28, 0x88, 0xcb, 0xbf, 0xd7, 0xc7, - 0xa5, 0xf3, 0xf7, 0x1a, 0xd9, 0x4d, 0xeb, 0xf7, 0x39, 0xf3, 0xbd, 0x34, 0xf8, 0x23, 0x0f, 0xbe, - 0x2e, 0x05, 0x8f, 0x56, 0x55, 0xcf, 0x47, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x5f, 0x17, 0x28, - 0xc5, 0xb1, 0x05, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/common.pb.go b/vendor/google.golang.org/genproto/googleapis/monitoring/v3/common.pb.go deleted file mode 100644 index 4d967f52..00000000 --- a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/common.pb.go +++ /dev/null @@ -1,714 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/monitoring/v3/common.proto - -/* -Package monitoring is a generated protocol buffer package. - -It is generated from these files: - google/monitoring/v3/common.proto - google/monitoring/v3/group.proto - google/monitoring/v3/group_service.proto - google/monitoring/v3/metric.proto - google/monitoring/v3/metric_service.proto - google/monitoring/v3/uptime.proto - google/monitoring/v3/uptime_service.proto - -It has these top-level messages: - TypedValue - TimeInterval - Aggregation - Group - ListGroupsRequest - ListGroupsResponse - GetGroupRequest - CreateGroupRequest - UpdateGroupRequest - DeleteGroupRequest - ListGroupMembersRequest - ListGroupMembersResponse - Point - TimeSeries - ListMonitoredResourceDescriptorsRequest - ListMonitoredResourceDescriptorsResponse - GetMonitoredResourceDescriptorRequest - ListMetricDescriptorsRequest - ListMetricDescriptorsResponse - GetMetricDescriptorRequest - CreateMetricDescriptorRequest - DeleteMetricDescriptorRequest - ListTimeSeriesRequest - ListTimeSeriesResponse - CreateTimeSeriesRequest - CreateTimeSeriesError - UptimeCheckConfig - UptimeCheckIp - ListUptimeCheckConfigsRequest - ListUptimeCheckConfigsResponse - GetUptimeCheckConfigRequest - CreateUptimeCheckConfigRequest - UpdateUptimeCheckConfigRequest - DeleteUptimeCheckConfigRequest - ListUptimeCheckIpsRequest - ListUptimeCheckIpsResponse -*/ -package monitoring - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_api2 "google.golang.org/genproto/googleapis/api/distribution" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The Aligner describes how to bring the data points in a single -// time series into temporal alignment. -type Aggregation_Aligner int32 - -const ( - // No alignment. Raw data is returned. Not valid if cross-time - // series reduction is requested. The value type of the result is - // the same as the value type of the input. - Aggregation_ALIGN_NONE Aggregation_Aligner = 0 - // Align and convert to delta metric type. This alignment is valid - // for cumulative metrics and delta metrics. Aligning an existing - // delta metric to a delta metric requires that the alignment - // period be increased. The value type of the result is the same - // as the value type of the input. - Aggregation_ALIGN_DELTA Aggregation_Aligner = 1 - // Align and convert to a rate. This alignment is valid for - // cumulative metrics and delta metrics with numeric values. The output is a - // gauge metric with value type - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_ALIGN_RATE Aggregation_Aligner = 2 - // Align by interpolating between adjacent points around the - // period boundary. This alignment is valid for gauge - // metrics with numeric values. The value type of the result is the same - // as the value type of the input. - Aggregation_ALIGN_INTERPOLATE Aggregation_Aligner = 3 - // Align by shifting the oldest data point before the period - // boundary to the boundary. This alignment is valid for gauge - // metrics. The value type of the result is the same as the - // value type of the input. - Aggregation_ALIGN_NEXT_OLDER Aggregation_Aligner = 4 - // Align time series via aggregation. The resulting data point in - // the alignment period is the minimum of all data points in the - // period. This alignment is valid for gauge and delta metrics with numeric - // values. The value type of the result is the same as the value - // type of the input. - Aggregation_ALIGN_MIN Aggregation_Aligner = 10 - // Align time series via aggregation. The resulting data point in - // the alignment period is the maximum of all data points in the - // period. This alignment is valid for gauge and delta metrics with numeric - // values. The value type of the result is the same as the value - // type of the input. - Aggregation_ALIGN_MAX Aggregation_Aligner = 11 - // Align time series via aggregation. The resulting data point in - // the alignment period is the average or arithmetic mean of all - // data points in the period. This alignment is valid for gauge and delta - // metrics with numeric values. The value type of the output is - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_ALIGN_MEAN Aggregation_Aligner = 12 - // Align time series via aggregation. The resulting data point in - // the alignment period is the count of all data points in the - // period. This alignment is valid for gauge and delta metrics with numeric - // or Boolean values. The value type of the output is - // [INT64][google.api.MetricDescriptor.ValueType.INT64]. - Aggregation_ALIGN_COUNT Aggregation_Aligner = 13 - // Align time series via aggregation. The resulting data point in - // the alignment period is the sum of all data points in the - // period. This alignment is valid for gauge and delta metrics with numeric - // and distribution values. The value type of the output is the - // same as the value type of the input. - Aggregation_ALIGN_SUM Aggregation_Aligner = 14 - // Align time series via aggregation. The resulting data point in - // the alignment period is the standard deviation of all data - // points in the period. This alignment is valid for gauge and delta metrics - // with numeric values. The value type of the output is - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_ALIGN_STDDEV Aggregation_Aligner = 15 - // Align time series via aggregation. The resulting data point in - // the alignment period is the count of True-valued data points in the - // period. This alignment is valid for gauge metrics with - // Boolean values. The value type of the output is - // [INT64][google.api.MetricDescriptor.ValueType.INT64]. - Aggregation_ALIGN_COUNT_TRUE Aggregation_Aligner = 16 - // Align time series via aggregation. The resulting data point in - // the alignment period is the fraction of True-valued data points in the - // period. This alignment is valid for gauge metrics with Boolean values. - // The output value is in the range [0, 1] and has value type - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_ALIGN_FRACTION_TRUE Aggregation_Aligner = 17 - // Align time series via aggregation. The resulting data point in - // the alignment period is the 99th percentile of all data - // points in the period. This alignment is valid for gauge and delta metrics - // with distribution values. The output is a gauge metric with value type - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_ALIGN_PERCENTILE_99 Aggregation_Aligner = 18 - // Align time series via aggregation. The resulting data point in - // the alignment period is the 95th percentile of all data - // points in the period. This alignment is valid for gauge and delta metrics - // with distribution values. The output is a gauge metric with value type - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_ALIGN_PERCENTILE_95 Aggregation_Aligner = 19 - // Align time series via aggregation. The resulting data point in - // the alignment period is the 50th percentile of all data - // points in the period. This alignment is valid for gauge and delta metrics - // with distribution values. The output is a gauge metric with value type - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_ALIGN_PERCENTILE_50 Aggregation_Aligner = 20 - // Align time series via aggregation. The resulting data point in - // the alignment period is the 5th percentile of all data - // points in the period. This alignment is valid for gauge and delta metrics - // with distribution values. The output is a gauge metric with value type - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_ALIGN_PERCENTILE_05 Aggregation_Aligner = 21 -) - -var Aggregation_Aligner_name = map[int32]string{ - 0: "ALIGN_NONE", - 1: "ALIGN_DELTA", - 2: "ALIGN_RATE", - 3: "ALIGN_INTERPOLATE", - 4: "ALIGN_NEXT_OLDER", - 10: "ALIGN_MIN", - 11: "ALIGN_MAX", - 12: "ALIGN_MEAN", - 13: "ALIGN_COUNT", - 14: "ALIGN_SUM", - 15: "ALIGN_STDDEV", - 16: "ALIGN_COUNT_TRUE", - 17: "ALIGN_FRACTION_TRUE", - 18: "ALIGN_PERCENTILE_99", - 19: "ALIGN_PERCENTILE_95", - 20: "ALIGN_PERCENTILE_50", - 21: "ALIGN_PERCENTILE_05", -} -var Aggregation_Aligner_value = map[string]int32{ - "ALIGN_NONE": 0, - "ALIGN_DELTA": 1, - "ALIGN_RATE": 2, - "ALIGN_INTERPOLATE": 3, - "ALIGN_NEXT_OLDER": 4, - "ALIGN_MIN": 10, - "ALIGN_MAX": 11, - "ALIGN_MEAN": 12, - "ALIGN_COUNT": 13, - "ALIGN_SUM": 14, - "ALIGN_STDDEV": 15, - "ALIGN_COUNT_TRUE": 16, - "ALIGN_FRACTION_TRUE": 17, - "ALIGN_PERCENTILE_99": 18, - "ALIGN_PERCENTILE_95": 19, - "ALIGN_PERCENTILE_50": 20, - "ALIGN_PERCENTILE_05": 21, -} - -func (x Aggregation_Aligner) String() string { - return proto.EnumName(Aggregation_Aligner_name, int32(x)) -} -func (Aggregation_Aligner) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// A Reducer describes how to aggregate data points from multiple -// time series into a single time series. -type Aggregation_Reducer int32 - -const ( - // No cross-time series reduction. The output of the aligner is - // returned. - Aggregation_REDUCE_NONE Aggregation_Reducer = 0 - // Reduce by computing the mean across time series for each - // alignment period. This reducer is valid for delta and - // gauge metrics with numeric or distribution values. The value type of the - // output is [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_REDUCE_MEAN Aggregation_Reducer = 1 - // Reduce by computing the minimum across time series for each - // alignment period. This reducer is valid for delta and - // gauge metrics with numeric values. The value type of the output - // is the same as the value type of the input. - Aggregation_REDUCE_MIN Aggregation_Reducer = 2 - // Reduce by computing the maximum across time series for each - // alignment period. This reducer is valid for delta and - // gauge metrics with numeric values. The value type of the output - // is the same as the value type of the input. - Aggregation_REDUCE_MAX Aggregation_Reducer = 3 - // Reduce by computing the sum across time series for each - // alignment period. This reducer is valid for delta and - // gauge metrics with numeric and distribution values. The value type of - // the output is the same as the value type of the input. - Aggregation_REDUCE_SUM Aggregation_Reducer = 4 - // Reduce by computing the standard deviation across time series - // for each alignment period. This reducer is valid for delta - // and gauge metrics with numeric or distribution values. The value type of - // the output is [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_REDUCE_STDDEV Aggregation_Reducer = 5 - // Reduce by computing the count of data points across time series - // for each alignment period. This reducer is valid for delta - // and gauge metrics of numeric, Boolean, distribution, and string value - // type. The value type of the output is - // [INT64][google.api.MetricDescriptor.ValueType.INT64]. - Aggregation_REDUCE_COUNT Aggregation_Reducer = 6 - // Reduce by computing the count of True-valued data points across time - // series for each alignment period. This reducer is valid for delta - // and gauge metrics of Boolean value type. The value type of - // the output is [INT64][google.api.MetricDescriptor.ValueType.INT64]. - Aggregation_REDUCE_COUNT_TRUE Aggregation_Reducer = 7 - // Reduce by computing the fraction of True-valued data points across time - // series for each alignment period. This reducer is valid for delta - // and gauge metrics of Boolean value type. The output value is in the - // range [0, 1] and has value type - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE]. - Aggregation_REDUCE_FRACTION_TRUE Aggregation_Reducer = 8 - // Reduce by computing 99th percentile of data points across time series - // for each alignment period. This reducer is valid for gauge and delta - // metrics of numeric and distribution type. The value of the output is - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE] - Aggregation_REDUCE_PERCENTILE_99 Aggregation_Reducer = 9 - // Reduce by computing 95th percentile of data points across time series - // for each alignment period. This reducer is valid for gauge and delta - // metrics of numeric and distribution type. The value of the output is - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE] - Aggregation_REDUCE_PERCENTILE_95 Aggregation_Reducer = 10 - // Reduce by computing 50th percentile of data points across time series - // for each alignment period. This reducer is valid for gauge and delta - // metrics of numeric and distribution type. The value of the output is - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE] - Aggregation_REDUCE_PERCENTILE_50 Aggregation_Reducer = 11 - // Reduce by computing 5th percentile of data points across time series - // for each alignment period. This reducer is valid for gauge and delta - // metrics of numeric and distribution type. The value of the output is - // [DOUBLE][google.api.MetricDescriptor.ValueType.DOUBLE] - Aggregation_REDUCE_PERCENTILE_05 Aggregation_Reducer = 12 -) - -var Aggregation_Reducer_name = map[int32]string{ - 0: "REDUCE_NONE", - 1: "REDUCE_MEAN", - 2: "REDUCE_MIN", - 3: "REDUCE_MAX", - 4: "REDUCE_SUM", - 5: "REDUCE_STDDEV", - 6: "REDUCE_COUNT", - 7: "REDUCE_COUNT_TRUE", - 8: "REDUCE_FRACTION_TRUE", - 9: "REDUCE_PERCENTILE_99", - 10: "REDUCE_PERCENTILE_95", - 11: "REDUCE_PERCENTILE_50", - 12: "REDUCE_PERCENTILE_05", -} -var Aggregation_Reducer_value = map[string]int32{ - "REDUCE_NONE": 0, - "REDUCE_MEAN": 1, - "REDUCE_MIN": 2, - "REDUCE_MAX": 3, - "REDUCE_SUM": 4, - "REDUCE_STDDEV": 5, - "REDUCE_COUNT": 6, - "REDUCE_COUNT_TRUE": 7, - "REDUCE_FRACTION_TRUE": 8, - "REDUCE_PERCENTILE_99": 9, - "REDUCE_PERCENTILE_95": 10, - "REDUCE_PERCENTILE_50": 11, - "REDUCE_PERCENTILE_05": 12, -} - -func (x Aggregation_Reducer) String() string { - return proto.EnumName(Aggregation_Reducer_name, int32(x)) -} -func (Aggregation_Reducer) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 1} } - -// A single strongly-typed value. -type TypedValue struct { - // The typed value field. - // - // Types that are valid to be assigned to Value: - // *TypedValue_BoolValue - // *TypedValue_Int64Value - // *TypedValue_DoubleValue - // *TypedValue_StringValue - // *TypedValue_DistributionValue - Value isTypedValue_Value `protobuf_oneof:"value"` -} - -func (m *TypedValue) Reset() { *m = TypedValue{} } -func (m *TypedValue) String() string { return proto.CompactTextString(m) } -func (*TypedValue) ProtoMessage() {} -func (*TypedValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isTypedValue_Value interface { - isTypedValue_Value() -} - -type TypedValue_BoolValue struct { - BoolValue bool `protobuf:"varint,1,opt,name=bool_value,json=boolValue,oneof"` -} -type TypedValue_Int64Value struct { - Int64Value int64 `protobuf:"varint,2,opt,name=int64_value,json=int64Value,oneof"` -} -type TypedValue_DoubleValue struct { - DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,oneof"` -} -type TypedValue_StringValue struct { - StringValue string `protobuf:"bytes,4,opt,name=string_value,json=stringValue,oneof"` -} -type TypedValue_DistributionValue struct { - DistributionValue *google_api2.Distribution `protobuf:"bytes,5,opt,name=distribution_value,json=distributionValue,oneof"` -} - -func (*TypedValue_BoolValue) isTypedValue_Value() {} -func (*TypedValue_Int64Value) isTypedValue_Value() {} -func (*TypedValue_DoubleValue) isTypedValue_Value() {} -func (*TypedValue_StringValue) isTypedValue_Value() {} -func (*TypedValue_DistributionValue) isTypedValue_Value() {} - -func (m *TypedValue) GetValue() isTypedValue_Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *TypedValue) GetBoolValue() bool { - if x, ok := m.GetValue().(*TypedValue_BoolValue); ok { - return x.BoolValue - } - return false -} - -func (m *TypedValue) GetInt64Value() int64 { - if x, ok := m.GetValue().(*TypedValue_Int64Value); ok { - return x.Int64Value - } - return 0 -} - -func (m *TypedValue) GetDoubleValue() float64 { - if x, ok := m.GetValue().(*TypedValue_DoubleValue); ok { - return x.DoubleValue - } - return 0 -} - -func (m *TypedValue) GetStringValue() string { - if x, ok := m.GetValue().(*TypedValue_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *TypedValue) GetDistributionValue() *google_api2.Distribution { - if x, ok := m.GetValue().(*TypedValue_DistributionValue); ok { - return x.DistributionValue - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TypedValue) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TypedValue_OneofMarshaler, _TypedValue_OneofUnmarshaler, _TypedValue_OneofSizer, []interface{}{ - (*TypedValue_BoolValue)(nil), - (*TypedValue_Int64Value)(nil), - (*TypedValue_DoubleValue)(nil), - (*TypedValue_StringValue)(nil), - (*TypedValue_DistributionValue)(nil), - } -} - -func _TypedValue_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TypedValue) - // value - switch x := m.Value.(type) { - case *TypedValue_BoolValue: - t := uint64(0) - if x.BoolValue { - t = 1 - } - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *TypedValue_Int64Value: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Int64Value)) - case *TypedValue_DoubleValue: - b.EncodeVarint(3<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.DoubleValue)) - case *TypedValue_StringValue: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *TypedValue_DistributionValue: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DistributionValue); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TypedValue.Value has unexpected type %T", x) - } - return nil -} - -func _TypedValue_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TypedValue) - switch tag { - case 1: // value.bool_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &TypedValue_BoolValue{x != 0} - return true, err - case 2: // value.int64_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &TypedValue_Int64Value{int64(x)} - return true, err - case 3: // value.double_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Value = &TypedValue_DoubleValue{math.Float64frombits(x)} - return true, err - case 4: // value.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Value = &TypedValue_StringValue{x} - return true, err - case 5: // value.distribution_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_api2.Distribution) - err := b.DecodeMessage(msg) - m.Value = &TypedValue_DistributionValue{msg} - return true, err - default: - return false, nil - } -} - -func _TypedValue_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TypedValue) - // value - switch x := m.Value.(type) { - case *TypedValue_BoolValue: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += 1 - case *TypedValue_Int64Value: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Int64Value)) - case *TypedValue_DoubleValue: - n += proto.SizeVarint(3<<3 | proto.WireFixed64) - n += 8 - case *TypedValue_StringValue: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *TypedValue_DistributionValue: - s := proto.Size(x.DistributionValue) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A time interval extending just after a start time through an end time. -// If the start time is the same as the end time, then the interval -// represents a single point in time. -type TimeInterval struct { - // Required. The end of the time interval. - EndTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Optional. The beginning of the time interval. The default value - // for the start time is the end time. The start time must not be - // later than the end time. - StartTime *google_protobuf2.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` -} - -func (m *TimeInterval) Reset() { *m = TimeInterval{} } -func (m *TimeInterval) String() string { return proto.CompactTextString(m) } -func (*TimeInterval) ProtoMessage() {} -func (*TimeInterval) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *TimeInterval) GetEndTime() *google_protobuf2.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *TimeInterval) GetStartTime() *google_protobuf2.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -// Describes how to combine multiple time series to provide different views of -// the data. Aggregation consists of an alignment step on individual time -// series (`per_series_aligner`) followed by an optional reduction of the data -// across different time series (`cross_series_reducer`). For more details, see -// [Aggregation](/monitoring/api/learn_more#aggregation). -type Aggregation struct { - // The alignment period for per-[time series][google.monitoring.v3.TimeSeries] - // alignment. If present, `alignmentPeriod` must be at least 60 - // seconds. After per-time series alignment, each time series will - // contain data points only on the period boundaries. If - // `perSeriesAligner` is not specified or equals `ALIGN_NONE`, then - // this field is ignored. If `perSeriesAligner` is specified and - // does not equal `ALIGN_NONE`, then this field must be defined; - // otherwise an error is returned. - AlignmentPeriod *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=alignment_period,json=alignmentPeriod" json:"alignment_period,omitempty"` - // The approach to be used to align individual time series. Not all - // alignment functions may be applied to all time series, depending - // on the metric type and value type of the original time - // series. Alignment may change the metric type or the value type of - // the time series. - // - // Time series data must be aligned in order to perform cross-time - // series reduction. If `crossSeriesReducer` is specified, then - // `perSeriesAligner` must be specified and not equal `ALIGN_NONE` - // and `alignmentPeriod` must be specified; otherwise, an error is - // returned. - PerSeriesAligner Aggregation_Aligner `protobuf:"varint,2,opt,name=per_series_aligner,json=perSeriesAligner,enum=google.monitoring.v3.Aggregation_Aligner" json:"per_series_aligner,omitempty"` - // The approach to be used to combine time series. Not all reducer - // functions may be applied to all time series, depending on the - // metric type and the value type of the original time - // series. Reduction may change the metric type of value type of the - // time series. - // - // Time series data must be aligned in order to perform cross-time - // series reduction. If `crossSeriesReducer` is specified, then - // `perSeriesAligner` must be specified and not equal `ALIGN_NONE` - // and `alignmentPeriod` must be specified; otherwise, an error is - // returned. - CrossSeriesReducer Aggregation_Reducer `protobuf:"varint,4,opt,name=cross_series_reducer,json=crossSeriesReducer,enum=google.monitoring.v3.Aggregation_Reducer" json:"cross_series_reducer,omitempty"` - // The set of fields to preserve when `crossSeriesReducer` is - // specified. The `groupByFields` determine how the time series are - // partitioned into subsets prior to applying the aggregation - // function. Each subset contains time series that have the same - // value for each of the grouping fields. Each individual time - // series is a member of exactly one subset. The - // `crossSeriesReducer` is applied to each subset of time series. - // It is not possible to reduce across different resource types, so - // this field implicitly contains `resource.type`. Fields not - // specified in `groupByFields` are aggregated away. If - // `groupByFields` is not specified and all the time series have - // the same resource type, then the time series are aggregated into - // a single output time series. If `crossSeriesReducer` is not - // defined, this field is ignored. - GroupByFields []string `protobuf:"bytes,5,rep,name=group_by_fields,json=groupByFields" json:"group_by_fields,omitempty"` -} - -func (m *Aggregation) Reset() { *m = Aggregation{} } -func (m *Aggregation) String() string { return proto.CompactTextString(m) } -func (*Aggregation) ProtoMessage() {} -func (*Aggregation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Aggregation) GetAlignmentPeriod() *google_protobuf3.Duration { - if m != nil { - return m.AlignmentPeriod - } - return nil -} - -func (m *Aggregation) GetPerSeriesAligner() Aggregation_Aligner { - if m != nil { - return m.PerSeriesAligner - } - return Aggregation_ALIGN_NONE -} - -func (m *Aggregation) GetCrossSeriesReducer() Aggregation_Reducer { - if m != nil { - return m.CrossSeriesReducer - } - return Aggregation_REDUCE_NONE -} - -func (m *Aggregation) GetGroupByFields() []string { - if m != nil { - return m.GroupByFields - } - return nil -} - -func init() { - proto.RegisterType((*TypedValue)(nil), "google.monitoring.v3.TypedValue") - proto.RegisterType((*TimeInterval)(nil), "google.monitoring.v3.TimeInterval") - proto.RegisterType((*Aggregation)(nil), "google.monitoring.v3.Aggregation") - proto.RegisterEnum("google.monitoring.v3.Aggregation_Aligner", Aggregation_Aligner_name, Aggregation_Aligner_value) - proto.RegisterEnum("google.monitoring.v3.Aggregation_Reducer", Aggregation_Reducer_name, Aggregation_Reducer_value) -} - -func init() { proto.RegisterFile("google/monitoring/v3/common.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 792 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xdd, 0x6a, 0xe3, 0x46, - 0x14, 0xb6, 0xec, 0x64, 0x1d, 0x1f, 0x39, 0xf1, 0x64, 0xd6, 0x4b, 0xdd, 0x40, 0xbb, 0x5e, 0x17, - 0x8a, 0x7b, 0x23, 0x87, 0xb8, 0x2e, 0x84, 0x42, 0x41, 0xb1, 0xb5, 0x1b, 0x83, 0x23, 0x9b, 0x59, - 0x25, 0x0d, 0x6d, 0x40, 0xc8, 0xd1, 0xac, 0x10, 0xc8, 0x1a, 0x31, 0x92, 0x0d, 0xb9, 0xeb, 0x6b, - 0xf4, 0xba, 0x77, 0xfb, 0x28, 0x7d, 0x84, 0x3e, 0x44, 0x9f, 0xa1, 0x68, 0x66, 0xb4, 0x52, 0x5a, - 0x97, 0xf6, 0xf2, 0xfb, 0x39, 0xdf, 0xe8, 0x7c, 0x23, 0xd9, 0xf0, 0x26, 0x60, 0x2c, 0x88, 0xe8, - 0x68, 0xc3, 0xe2, 0x30, 0x63, 0x3c, 0x8c, 0x83, 0xd1, 0x6e, 0x3c, 0x7a, 0x64, 0x9b, 0x0d, 0x8b, - 0x8d, 0x84, 0xb3, 0x8c, 0xe1, 0xae, 0xb4, 0x18, 0xa5, 0xc5, 0xd8, 0x8d, 0xcf, 0xbe, 0x50, 0x83, - 0x5e, 0x12, 0x8e, 0xfc, 0x30, 0xcd, 0x78, 0xb8, 0xde, 0x66, 0x61, 0x31, 0x74, 0xf6, 0xa5, 0x92, - 0x05, 0x5a, 0x6f, 0x3f, 0x8c, 0xfc, 0x2d, 0xf7, 0x2a, 0xfa, 0xeb, 0xbf, 0xeb, 0x59, 0xb8, 0xa1, - 0x69, 0xe6, 0x6d, 0x12, 0x69, 0x18, 0xfc, 0xa9, 0x01, 0x38, 0x4f, 0x09, 0xf5, 0xef, 0xbc, 0x68, - 0x4b, 0xf1, 0x6b, 0x80, 0x35, 0x63, 0x91, 0xbb, 0xcb, 0x51, 0x4f, 0xeb, 0x6b, 0xc3, 0xa3, 0xeb, - 0x1a, 0x69, 0xe5, 0x9c, 0x34, 0xbc, 0x01, 0x3d, 0x8c, 0xb3, 0xef, 0xbe, 0x55, 0x8e, 0x7a, 0x5f, - 0x1b, 0x36, 0xae, 0x6b, 0x04, 0x04, 0x29, 0x2d, 0x5f, 0x41, 0xdb, 0x67, 0xdb, 0x75, 0x44, 0x95, - 0xa7, 0xd1, 0xd7, 0x86, 0xda, 0x75, 0x8d, 0xe8, 0x92, 0xfd, 0x64, 0xca, 0x97, 0x89, 0x03, 0x65, - 0x3a, 0xe8, 0x6b, 0xc3, 0x56, 0x6e, 0x92, 0xac, 0x34, 0xcd, 0x01, 0x57, 0x77, 0x56, 0xd6, 0xc3, - 0xbe, 0x36, 0xd4, 0x2f, 0x7a, 0x86, 0xea, 0xcb, 0x4b, 0x42, 0x63, 0x56, 0x71, 0x5d, 0xd7, 0xc8, - 0x69, 0x75, 0x4a, 0x44, 0x5d, 0x35, 0xe1, 0x50, 0x4c, 0x0f, 0x7e, 0xd1, 0xa0, 0xed, 0x84, 0x1b, - 0x3a, 0x8f, 0x33, 0xca, 0x77, 0x5e, 0x84, 0x27, 0x70, 0x44, 0x63, 0xdf, 0xcd, 0x8b, 0x11, 0xeb, - 0xe8, 0x17, 0x67, 0x45, 0x74, 0xd1, 0x9a, 0xe1, 0x14, 0xad, 0x91, 0x26, 0x8d, 0xfd, 0x1c, 0xe1, - 0x4b, 0x80, 0x34, 0xf3, 0x78, 0x26, 0x07, 0xb5, 0xff, 0x1c, 0x6c, 0x09, 0x77, 0x8e, 0x07, 0x1f, - 0x9b, 0xa0, 0x9b, 0x41, 0xc0, 0x69, 0x20, 0xae, 0x0a, 0xcf, 0x00, 0x79, 0x51, 0x18, 0xc4, 0x1b, - 0x1a, 0x67, 0x6e, 0x42, 0x79, 0xc8, 0x7c, 0x15, 0xf8, 0xf9, 0x3f, 0x02, 0x67, 0xea, 0x7e, 0x49, - 0xe7, 0xd3, 0xc8, 0x4a, 0x4c, 0xe0, 0x1f, 0x01, 0x27, 0x94, 0xbb, 0x29, 0xe5, 0x21, 0x4d, 0x5d, - 0xa1, 0x52, 0x2e, 0x36, 0x3a, 0xb9, 0xf8, 0xc6, 0xd8, 0xf7, 0x72, 0x19, 0x95, 0x87, 0x30, 0x4c, - 0x39, 0x40, 0x50, 0x42, 0xf9, 0x7b, 0x91, 0xa1, 0x18, 0xfc, 0x33, 0x74, 0x1f, 0x39, 0x4b, 0xd3, - 0x22, 0x9a, 0x53, 0x7f, 0xfb, 0x48, 0xb9, 0xb8, 0xb2, 0xff, 0x15, 0x4d, 0xe4, 0x00, 0xc1, 0x22, - 0x46, 0x86, 0x2b, 0x0e, 0x7f, 0x0d, 0x9d, 0x80, 0xb3, 0x6d, 0xe2, 0xae, 0x9f, 0xdc, 0x0f, 0x21, - 0x8d, 0xfc, 0xb4, 0x77, 0xd8, 0x6f, 0x0c, 0x5b, 0xe4, 0x58, 0xd0, 0x57, 0x4f, 0x6f, 0x05, 0x39, - 0xf8, 0xa3, 0x0e, 0xcd, 0xe2, 0x81, 0x4e, 0x00, 0xcc, 0xc5, 0xfc, 0x9d, 0xed, 0xda, 0x4b, 0xdb, - 0x42, 0x35, 0xdc, 0x01, 0x5d, 0xe2, 0x99, 0xb5, 0x70, 0x4c, 0xa4, 0x95, 0x06, 0x62, 0x3a, 0x16, - 0xaa, 0xe3, 0x57, 0x70, 0x2a, 0xf1, 0xdc, 0x76, 0x2c, 0xb2, 0x5a, 0x2e, 0x72, 0xba, 0x81, 0xbb, - 0x80, 0x54, 0x8e, 0x75, 0xef, 0xb8, 0xcb, 0xc5, 0xcc, 0x22, 0xe8, 0x00, 0x1f, 0x43, 0x4b, 0xb2, - 0x37, 0x73, 0x1b, 0x41, 0x05, 0x9a, 0xf7, 0x48, 0x2f, 0xa3, 0x6f, 0x2c, 0xd3, 0x46, 0xed, 0xf2, - 0xec, 0xe9, 0xf2, 0xd6, 0x76, 0xd0, 0x71, 0xe9, 0x7f, 0x7f, 0x7b, 0x83, 0x4e, 0x30, 0x82, 0xb6, - 0x82, 0xce, 0x6c, 0x66, 0xdd, 0xa1, 0x4e, 0x79, 0xaa, 0x98, 0x70, 0x1d, 0x72, 0x6b, 0x21, 0x84, - 0x3f, 0x83, 0x97, 0x92, 0x7d, 0x4b, 0xcc, 0xa9, 0x33, 0x5f, 0xda, 0x52, 0x38, 0x2d, 0x85, 0x95, - 0x45, 0xa6, 0x96, 0xed, 0xcc, 0x17, 0x96, 0x7b, 0x79, 0x89, 0xf0, 0x7e, 0x61, 0x82, 0x5e, 0xee, - 0x15, 0x26, 0xe7, 0xa8, 0xbb, 0x57, 0x38, 0x9f, 0xa0, 0x57, 0x83, 0x5f, 0xeb, 0xd0, 0x2c, 0x2e, - 0xa4, 0x03, 0x3a, 0xb1, 0x66, 0xb7, 0x53, 0xab, 0xd2, 0xae, 0x22, 0xc4, 0xca, 0xa2, 0xdd, 0x82, - 0x98, 0xdb, 0xa8, 0x5e, 0xc5, 0xe6, 0x3d, 0x6a, 0x54, 0x70, 0x5e, 0xc1, 0x01, 0x3e, 0x85, 0xe3, - 0x02, 0xcb, 0x0e, 0x0e, 0xf3, 0x56, 0x14, 0x25, 0x6b, 0x7b, 0x91, 0x5f, 0x51, 0x95, 0x91, 0xdb, - 0x37, 0x71, 0x0f, 0xba, 0x8a, 0x7e, 0xde, 0xcb, 0x51, 0x45, 0x79, 0x5e, 0x4c, 0xeb, 0x5f, 0x94, - 0x09, 0x82, 0xfd, 0xca, 0xe4, 0x1c, 0xe9, 0xfb, 0x95, 0xf3, 0x09, 0x6a, 0x5f, 0xfd, 0xa6, 0x41, - 0xef, 0x91, 0x6d, 0xf6, 0xbe, 0xe5, 0x57, 0xfa, 0x54, 0xfc, 0x82, 0xaf, 0xf2, 0xaf, 0x73, 0xa5, - 0xfd, 0xf4, 0x83, 0x32, 0x05, 0x2c, 0xf2, 0xe2, 0xc0, 0x60, 0x3c, 0x18, 0x05, 0x34, 0x16, 0xdf, - 0xee, 0x48, 0x4a, 0x5e, 0x12, 0xa6, 0xcf, 0xff, 0x04, 0xbe, 0x2f, 0xd1, 0xc7, 0xfa, 0xd9, 0x3b, - 0x19, 0x30, 0x8d, 0xd8, 0xd6, 0x37, 0x6e, 0xca, 0xb3, 0xee, 0xc6, 0xbf, 0x17, 0xe2, 0x83, 0x10, - 0x1f, 0x4a, 0xf1, 0xe1, 0x6e, 0xbc, 0x7e, 0x21, 0x0e, 0x19, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, - 0x57, 0xa4, 0xb9, 0xce, 0x68, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/group.pb.go b/vendor/google.golang.org/genproto/googleapis/monitoring/v3/group.pb.go deleted file mode 100644 index a9c0dd81..00000000 --- a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/group.pb.go +++ /dev/null @@ -1,126 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/monitoring/v3/group.proto - -package monitoring - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The description of a dynamic collection of monitored resources. Each group -// has a filter that is matched against monitored resources and their associated -// metadata. If a group's filter matches an available monitored resource, then -// that resource is a member of that group. Groups can contain any number of -// monitored resources, and each monitored resource can be a member of any -// number of groups. -// -// Groups can be nested in parent-child hierarchies. The `parentName` field -// identifies an optional parent for each group. If a group has a parent, then -// the only monitored resources available to be matched by the group's filter -// are the resources contained in the parent group. In other words, a group -// contains the monitored resources that match its filter and the filters of all -// the group's ancestors. A group without a parent can contain any monitored -// resource. -// -// For example, consider an infrastructure running a set of instances with two -// user-defined tags: `"environment"` and `"role"`. A parent group has a filter, -// `environment="production"`. A child of that parent group has a filter, -// `role="transcoder"`. The parent group contains all instances in the -// production environment, regardless of their roles. The child group contains -// instances that have the transcoder role *and* are in the production -// environment. -// -// The monitored resources contained in a group can change at any moment, -// depending on what resources exist and what filters are associated with the -// group and its ancestors. -type Group struct { - // Output only. The name of this group. The format is - // `"projects/{project_id_or_number}/groups/{group_id}"`. - // When creating a group, this field is ignored and a new name is created - // consisting of the project specified in the call to `CreateGroup` - // and a unique `{group_id}` that is generated automatically. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A user-assigned name for this group, used only for display purposes. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // The name of the group's parent, if it has one. - // The format is `"projects/{project_id_or_number}/groups/{group_id}"`. - // For groups with no parent, `parentName` is the empty string, `""`. - ParentName string `protobuf:"bytes,3,opt,name=parent_name,json=parentName" json:"parent_name,omitempty"` - // The filter used to determine which monitored resources belong to this group. - Filter string `protobuf:"bytes,5,opt,name=filter" json:"filter,omitempty"` - // If true, the members of this group are considered to be a cluster. - // The system can perform additional analysis on groups that are clusters. - IsCluster bool `protobuf:"varint,6,opt,name=is_cluster,json=isCluster" json:"is_cluster,omitempty"` -} - -func (m *Group) Reset() { *m = Group{} } -func (m *Group) String() string { return proto.CompactTextString(m) } -func (*Group) ProtoMessage() {} -func (*Group) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Group) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Group) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Group) GetParentName() string { - if m != nil { - return m.ParentName - } - return "" -} - -func (m *Group) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *Group) GetIsCluster() bool { - if m != nil { - return m.IsCluster - } - return false -} - -func init() { - proto.RegisterType((*Group)(nil), "google.monitoring.v3.Group") -} - -func init() { proto.RegisterFile("google/monitoring/v3/group.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 261 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xcf, 0x4a, 0x2b, 0x31, - 0x14, 0x87, 0x49, 0xef, 0xed, 0x60, 0x4f, 0x5d, 0x0d, 0x22, 0x83, 0x20, 0x8e, 0xae, 0xba, 0xca, - 0x2c, 0xb2, 0x14, 0x5c, 0xb4, 0x8b, 0xae, 0x94, 0xd2, 0x45, 0x17, 0x32, 0x50, 0x62, 0x1b, 0x43, - 0x20, 0x93, 0x13, 0x92, 0x99, 0x82, 0x2f, 0xe2, 0x03, 0xb8, 0xf4, 0x51, 0x7c, 0x2a, 0x99, 0x93, - 0x91, 0x41, 0x70, 0x97, 0xf3, 0xfb, 0x3e, 0x72, 0xfe, 0x40, 0xa9, 0x11, 0xb5, 0x55, 0x55, 0x83, - 0xce, 0xb4, 0x18, 0x8c, 0xd3, 0xd5, 0x49, 0x54, 0x3a, 0x60, 0xe7, 0xb9, 0x0f, 0xd8, 0x62, 0x7e, - 0x91, 0x0c, 0x3e, 0x1a, 0xfc, 0x24, 0xee, 0xde, 0x19, 0x4c, 0xd7, 0xbd, 0x95, 0xe7, 0xf0, 0xdf, - 0xc9, 0x46, 0x15, 0xac, 0x64, 0x8b, 0xd9, 0x96, 0xde, 0xf9, 0x2d, 0x9c, 0x1f, 0x4d, 0xf4, 0x56, - 0xbe, 0xed, 0x89, 0x4d, 0x88, 0xcd, 0x87, 0xec, 0xa9, 0x57, 0x6e, 0x60, 0xee, 0x65, 0x50, 0xae, - 0x4d, 0xc6, 0x3f, 0x32, 0x20, 0x45, 0x24, 0x5c, 0x42, 0xf6, 0x6a, 0x6c, 0xab, 0x42, 0x31, 0x25, - 0x36, 0x54, 0xf9, 0x35, 0x80, 0x89, 0xfb, 0x83, 0xed, 0x62, 0xcf, 0xb2, 0x92, 0x2d, 0xce, 0xb6, - 0x33, 0x13, 0x57, 0x29, 0x58, 0x7e, 0x30, 0x28, 0x0e, 0xd8, 0xf0, 0xbf, 0xa6, 0x5e, 0x02, 0x8d, - 0xbc, 0xe9, 0xf7, 0xda, 0xb0, 0xe7, 0x87, 0xc1, 0xd1, 0x68, 0xa5, 0xd3, 0x1c, 0x83, 0xae, 0xb4, - 0x72, 0xb4, 0x75, 0x95, 0x90, 0xf4, 0x26, 0xfe, 0x3e, 0xcd, 0xfd, 0x58, 0x7d, 0x4e, 0xae, 0xd6, - 0xe9, 0x83, 0x95, 0xc5, 0xee, 0xc8, 0x1f, 0xc7, 0x56, 0x3b, 0xf1, 0xf5, 0x03, 0x6b, 0x82, 0xf5, - 0x08, 0xeb, 0x9d, 0x78, 0xc9, 0xa8, 0x89, 0xf8, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x95, 0xd1, 0xa1, - 0x34, 0x7e, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/group_service.pb.go b/vendor/google.golang.org/genproto/googleapis/monitoring/v3/group_service.pb.go deleted file mode 100644 index 14750fa9..00000000 --- a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/group_service.pb.go +++ /dev/null @@ -1,753 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/monitoring/v3/group_service.proto - -package monitoring - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres" -import google_protobuf4 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The `ListGroup` request. -type ListGroupsRequest struct { - // The project whose groups are to be listed. The format is - // `"projects/{project_id_or_number}"`. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` - // An optional filter consisting of a single group name. The filters limit the - // groups returned based on their parent-child relationship with the specified - // group. If no filter is specified, all groups are returned. - // - // Types that are valid to be assigned to Filter: - // *ListGroupsRequest_ChildrenOfGroup - // *ListGroupsRequest_AncestorsOfGroup - // *ListGroupsRequest_DescendantsOfGroup - Filter isListGroupsRequest_Filter `protobuf_oneof:"filter"` - // A positive number that is the maximum number of results to return. - PageSize int32 `protobuf:"varint,5,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If this field is not empty then it must contain the `nextPageToken` value - // returned by a previous call to this method. Using this field causes the - // method to return additional results from the previous method call. - PageToken string `protobuf:"bytes,6,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListGroupsRequest) Reset() { *m = ListGroupsRequest{} } -func (m *ListGroupsRequest) String() string { return proto.CompactTextString(m) } -func (*ListGroupsRequest) ProtoMessage() {} -func (*ListGroupsRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -type isListGroupsRequest_Filter interface { - isListGroupsRequest_Filter() -} - -type ListGroupsRequest_ChildrenOfGroup struct { - ChildrenOfGroup string `protobuf:"bytes,2,opt,name=children_of_group,json=childrenOfGroup,oneof"` -} -type ListGroupsRequest_AncestorsOfGroup struct { - AncestorsOfGroup string `protobuf:"bytes,3,opt,name=ancestors_of_group,json=ancestorsOfGroup,oneof"` -} -type ListGroupsRequest_DescendantsOfGroup struct { - DescendantsOfGroup string `protobuf:"bytes,4,opt,name=descendants_of_group,json=descendantsOfGroup,oneof"` -} - -func (*ListGroupsRequest_ChildrenOfGroup) isListGroupsRequest_Filter() {} -func (*ListGroupsRequest_AncestorsOfGroup) isListGroupsRequest_Filter() {} -func (*ListGroupsRequest_DescendantsOfGroup) isListGroupsRequest_Filter() {} - -func (m *ListGroupsRequest) GetFilter() isListGroupsRequest_Filter { - if m != nil { - return m.Filter - } - return nil -} - -func (m *ListGroupsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListGroupsRequest) GetChildrenOfGroup() string { - if x, ok := m.GetFilter().(*ListGroupsRequest_ChildrenOfGroup); ok { - return x.ChildrenOfGroup - } - return "" -} - -func (m *ListGroupsRequest) GetAncestorsOfGroup() string { - if x, ok := m.GetFilter().(*ListGroupsRequest_AncestorsOfGroup); ok { - return x.AncestorsOfGroup - } - return "" -} - -func (m *ListGroupsRequest) GetDescendantsOfGroup() string { - if x, ok := m.GetFilter().(*ListGroupsRequest_DescendantsOfGroup); ok { - return x.DescendantsOfGroup - } - return "" -} - -func (m *ListGroupsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListGroupsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ListGroupsRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ListGroupsRequest_OneofMarshaler, _ListGroupsRequest_OneofUnmarshaler, _ListGroupsRequest_OneofSizer, []interface{}{ - (*ListGroupsRequest_ChildrenOfGroup)(nil), - (*ListGroupsRequest_AncestorsOfGroup)(nil), - (*ListGroupsRequest_DescendantsOfGroup)(nil), - } -} - -func _ListGroupsRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ListGroupsRequest) - // filter - switch x := m.Filter.(type) { - case *ListGroupsRequest_ChildrenOfGroup: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeStringBytes(x.ChildrenOfGroup) - case *ListGroupsRequest_AncestorsOfGroup: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.AncestorsOfGroup) - case *ListGroupsRequest_DescendantsOfGroup: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.DescendantsOfGroup) - case nil: - default: - return fmt.Errorf("ListGroupsRequest.Filter has unexpected type %T", x) - } - return nil -} - -func _ListGroupsRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ListGroupsRequest) - switch tag { - case 2: // filter.children_of_group - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Filter = &ListGroupsRequest_ChildrenOfGroup{x} - return true, err - case 3: // filter.ancestors_of_group - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Filter = &ListGroupsRequest_AncestorsOfGroup{x} - return true, err - case 4: // filter.descendants_of_group - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Filter = &ListGroupsRequest_DescendantsOfGroup{x} - return true, err - default: - return false, nil - } -} - -func _ListGroupsRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ListGroupsRequest) - // filter - switch x := m.Filter.(type) { - case *ListGroupsRequest_ChildrenOfGroup: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.ChildrenOfGroup))) - n += len(x.ChildrenOfGroup) - case *ListGroupsRequest_AncestorsOfGroup: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.AncestorsOfGroup))) - n += len(x.AncestorsOfGroup) - case *ListGroupsRequest_DescendantsOfGroup: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.DescendantsOfGroup))) - n += len(x.DescendantsOfGroup) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The `ListGroups` response. -type ListGroupsResponse struct { - // The groups that match the specified filters. - Group []*Group `protobuf:"bytes,1,rep,name=group" json:"group,omitempty"` - // If there are more results than have been returned, then this field is set - // to a non-empty value. To see the additional results, - // use that value as `pageToken` in the next call to this method. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListGroupsResponse) Reset() { *m = ListGroupsResponse{} } -func (m *ListGroupsResponse) String() string { return proto.CompactTextString(m) } -func (*ListGroupsResponse) ProtoMessage() {} -func (*ListGroupsResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *ListGroupsResponse) GetGroup() []*Group { - if m != nil { - return m.Group - } - return nil -} - -func (m *ListGroupsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The `GetGroup` request. -type GetGroupRequest struct { - // The group to retrieve. The format is - // `"projects/{project_id_or_number}/groups/{group_id}"`. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` -} - -func (m *GetGroupRequest) Reset() { *m = GetGroupRequest{} } -func (m *GetGroupRequest) String() string { return proto.CompactTextString(m) } -func (*GetGroupRequest) ProtoMessage() {} -func (*GetGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -func (m *GetGroupRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The `CreateGroup` request. -type CreateGroupRequest struct { - // The project in which to create the group. The format is - // `"projects/{project_id_or_number}"`. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` - // A group definition. It is an error to define the `name` field because - // the system assigns the name. - Group *Group `protobuf:"bytes,2,opt,name=group" json:"group,omitempty"` - // If true, validate this request but do not create the group. - ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly" json:"validate_only,omitempty"` -} - -func (m *CreateGroupRequest) Reset() { *m = CreateGroupRequest{} } -func (m *CreateGroupRequest) String() string { return proto.CompactTextString(m) } -func (*CreateGroupRequest) ProtoMessage() {} -func (*CreateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -func (m *CreateGroupRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateGroupRequest) GetGroup() *Group { - if m != nil { - return m.Group - } - return nil -} - -func (m *CreateGroupRequest) GetValidateOnly() bool { - if m != nil { - return m.ValidateOnly - } - return false -} - -// The `UpdateGroup` request. -type UpdateGroupRequest struct { - // The new definition of the group. All fields of the existing group, - // excepting `name`, are replaced with the corresponding fields of this group. - Group *Group `protobuf:"bytes,2,opt,name=group" json:"group,omitempty"` - // If true, validate this request but do not update the existing group. - ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly" json:"validate_only,omitempty"` -} - -func (m *UpdateGroupRequest) Reset() { *m = UpdateGroupRequest{} } -func (m *UpdateGroupRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateGroupRequest) ProtoMessage() {} -func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{4} } - -func (m *UpdateGroupRequest) GetGroup() *Group { - if m != nil { - return m.Group - } - return nil -} - -func (m *UpdateGroupRequest) GetValidateOnly() bool { - if m != nil { - return m.ValidateOnly - } - return false -} - -// The `DeleteGroup` request. You can only delete a group if it has no children. -type DeleteGroupRequest struct { - // The group to delete. The format is - // `"projects/{project_id_or_number}/groups/{group_id}"`. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteGroupRequest) Reset() { *m = DeleteGroupRequest{} } -func (m *DeleteGroupRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteGroupRequest) ProtoMessage() {} -func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{5} } - -func (m *DeleteGroupRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The `ListGroupMembers` request. -type ListGroupMembersRequest struct { - // The group whose members are listed. The format is - // `"projects/{project_id_or_number}/groups/{group_id}"`. - Name string `protobuf:"bytes,7,opt,name=name" json:"name,omitempty"` - // A positive number that is the maximum number of results to return. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If this field is not empty then it must contain the `nextPageToken` value - // returned by a previous call to this method. Using this field causes the - // method to return additional results from the previous method call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // An optional [list filter](/monitoring/api/learn_more#filtering) describing - // the members to be returned. The filter may reference the type, labels, and - // metadata of monitored resources that comprise the group. - // For example, to return only resources representing Compute Engine VM - // instances, use this filter: - // - // resource.type = "gce_instance" - Filter string `protobuf:"bytes,5,opt,name=filter" json:"filter,omitempty"` - // An optional time interval for which results should be returned. Only - // members that were part of the group during the specified interval are - // included in the response. If no interval is provided then the group - // membership over the last minute is returned. - Interval *TimeInterval `protobuf:"bytes,6,opt,name=interval" json:"interval,omitempty"` -} - -func (m *ListGroupMembersRequest) Reset() { *m = ListGroupMembersRequest{} } -func (m *ListGroupMembersRequest) String() string { return proto.CompactTextString(m) } -func (*ListGroupMembersRequest) ProtoMessage() {} -func (*ListGroupMembersRequest) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{6} } - -func (m *ListGroupMembersRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListGroupMembersRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListGroupMembersRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListGroupMembersRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListGroupMembersRequest) GetInterval() *TimeInterval { - if m != nil { - return m.Interval - } - return nil -} - -// The `ListGroupMembers` response. -type ListGroupMembersResponse struct { - // A set of monitored resources in the group. - Members []*google_api4.MonitoredResource `protobuf:"bytes,1,rep,name=members" json:"members,omitempty"` - // If there are more results than have been returned, then this field is - // set to a non-empty value. To see the additional results, use that value as - // `pageToken` in the next call to this method. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` - // The total number of elements matching this request. - TotalSize int32 `protobuf:"varint,3,opt,name=total_size,json=totalSize" json:"total_size,omitempty"` -} - -func (m *ListGroupMembersResponse) Reset() { *m = ListGroupMembersResponse{} } -func (m *ListGroupMembersResponse) String() string { return proto.CompactTextString(m) } -func (*ListGroupMembersResponse) ProtoMessage() {} -func (*ListGroupMembersResponse) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{7} } - -func (m *ListGroupMembersResponse) GetMembers() []*google_api4.MonitoredResource { - if m != nil { - return m.Members - } - return nil -} - -func (m *ListGroupMembersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func (m *ListGroupMembersResponse) GetTotalSize() int32 { - if m != nil { - return m.TotalSize - } - return 0 -} - -func init() { - proto.RegisterType((*ListGroupsRequest)(nil), "google.monitoring.v3.ListGroupsRequest") - proto.RegisterType((*ListGroupsResponse)(nil), "google.monitoring.v3.ListGroupsResponse") - proto.RegisterType((*GetGroupRequest)(nil), "google.monitoring.v3.GetGroupRequest") - proto.RegisterType((*CreateGroupRequest)(nil), "google.monitoring.v3.CreateGroupRequest") - proto.RegisterType((*UpdateGroupRequest)(nil), "google.monitoring.v3.UpdateGroupRequest") - proto.RegisterType((*DeleteGroupRequest)(nil), "google.monitoring.v3.DeleteGroupRequest") - proto.RegisterType((*ListGroupMembersRequest)(nil), "google.monitoring.v3.ListGroupMembersRequest") - proto.RegisterType((*ListGroupMembersResponse)(nil), "google.monitoring.v3.ListGroupMembersResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for GroupService service - -type GroupServiceClient interface { - // Lists the existing groups. - ListGroups(ctx context.Context, in *ListGroupsRequest, opts ...grpc.CallOption) (*ListGroupsResponse, error) - // Gets a single group. - GetGroup(ctx context.Context, in *GetGroupRequest, opts ...grpc.CallOption) (*Group, error) - // Creates a new group. - CreateGroup(ctx context.Context, in *CreateGroupRequest, opts ...grpc.CallOption) (*Group, error) - // Updates an existing group. - // You can change any group attributes except `name`. - UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...grpc.CallOption) (*Group, error) - // Deletes an existing group. - DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Lists the monitored resources that are members of a group. - ListGroupMembers(ctx context.Context, in *ListGroupMembersRequest, opts ...grpc.CallOption) (*ListGroupMembersResponse, error) -} - -type groupServiceClient struct { - cc *grpc.ClientConn -} - -func NewGroupServiceClient(cc *grpc.ClientConn) GroupServiceClient { - return &groupServiceClient{cc} -} - -func (c *groupServiceClient) ListGroups(ctx context.Context, in *ListGroupsRequest, opts ...grpc.CallOption) (*ListGroupsResponse, error) { - out := new(ListGroupsResponse) - err := grpc.Invoke(ctx, "/google.monitoring.v3.GroupService/ListGroups", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *groupServiceClient) GetGroup(ctx context.Context, in *GetGroupRequest, opts ...grpc.CallOption) (*Group, error) { - out := new(Group) - err := grpc.Invoke(ctx, "/google.monitoring.v3.GroupService/GetGroup", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *groupServiceClient) CreateGroup(ctx context.Context, in *CreateGroupRequest, opts ...grpc.CallOption) (*Group, error) { - out := new(Group) - err := grpc.Invoke(ctx, "/google.monitoring.v3.GroupService/CreateGroup", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *groupServiceClient) UpdateGroup(ctx context.Context, in *UpdateGroupRequest, opts ...grpc.CallOption) (*Group, error) { - out := new(Group) - err := grpc.Invoke(ctx, "/google.monitoring.v3.GroupService/UpdateGroup", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *groupServiceClient) DeleteGroup(ctx context.Context, in *DeleteGroupRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.monitoring.v3.GroupService/DeleteGroup", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *groupServiceClient) ListGroupMembers(ctx context.Context, in *ListGroupMembersRequest, opts ...grpc.CallOption) (*ListGroupMembersResponse, error) { - out := new(ListGroupMembersResponse) - err := grpc.Invoke(ctx, "/google.monitoring.v3.GroupService/ListGroupMembers", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for GroupService service - -type GroupServiceServer interface { - // Lists the existing groups. - ListGroups(context.Context, *ListGroupsRequest) (*ListGroupsResponse, error) - // Gets a single group. - GetGroup(context.Context, *GetGroupRequest) (*Group, error) - // Creates a new group. - CreateGroup(context.Context, *CreateGroupRequest) (*Group, error) - // Updates an existing group. - // You can change any group attributes except `name`. - UpdateGroup(context.Context, *UpdateGroupRequest) (*Group, error) - // Deletes an existing group. - DeleteGroup(context.Context, *DeleteGroupRequest) (*google_protobuf4.Empty, error) - // Lists the monitored resources that are members of a group. - ListGroupMembers(context.Context, *ListGroupMembersRequest) (*ListGroupMembersResponse, error) -} - -func RegisterGroupServiceServer(s *grpc.Server, srv GroupServiceServer) { - s.RegisterService(&_GroupService_serviceDesc, srv) -} - -func _GroupService_ListGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListGroupsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GroupServiceServer).ListGroups(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.GroupService/ListGroups", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GroupServiceServer).ListGroups(ctx, req.(*ListGroupsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GroupService_GetGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGroupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GroupServiceServer).GetGroup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.GroupService/GetGroup", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GroupServiceServer).GetGroup(ctx, req.(*GetGroupRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GroupService_CreateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateGroupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GroupServiceServer).CreateGroup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.GroupService/CreateGroup", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GroupServiceServer).CreateGroup(ctx, req.(*CreateGroupRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GroupService_UpdateGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateGroupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GroupServiceServer).UpdateGroup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.GroupService/UpdateGroup", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GroupServiceServer).UpdateGroup(ctx, req.(*UpdateGroupRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GroupService_DeleteGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteGroupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GroupServiceServer).DeleteGroup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.GroupService/DeleteGroup", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GroupServiceServer).DeleteGroup(ctx, req.(*DeleteGroupRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _GroupService_ListGroupMembers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListGroupMembersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GroupServiceServer).ListGroupMembers(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.GroupService/ListGroupMembers", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GroupServiceServer).ListGroupMembers(ctx, req.(*ListGroupMembersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _GroupService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.monitoring.v3.GroupService", - HandlerType: (*GroupServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListGroups", - Handler: _GroupService_ListGroups_Handler, - }, - { - MethodName: "GetGroup", - Handler: _GroupService_GetGroup_Handler, - }, - { - MethodName: "CreateGroup", - Handler: _GroupService_CreateGroup_Handler, - }, - { - MethodName: "UpdateGroup", - Handler: _GroupService_UpdateGroup_Handler, - }, - { - MethodName: "DeleteGroup", - Handler: _GroupService_DeleteGroup_Handler, - }, - { - MethodName: "ListGroupMembers", - Handler: _GroupService_ListGroupMembers_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/monitoring/v3/group_service.proto", -} - -func init() { proto.RegisterFile("google/monitoring/v3/group_service.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 826 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4d, 0x6f, 0xd3, 0x4c, - 0x10, 0x7e, 0xdd, 0xa4, 0x69, 0xb2, 0x69, 0xd5, 0x76, 0x55, 0xf5, 0x8d, 0xdc, 0x0f, 0x05, 0xf7, - 0x83, 0xa8, 0x50, 0x5b, 0x24, 0x07, 0x24, 0x10, 0x3d, 0xb4, 0xa0, 0x82, 0x44, 0xd5, 0xca, 0x2d, - 0x3d, 0xa0, 0x4a, 0x91, 0x9b, 0x4c, 0x8c, 0xc1, 0xde, 0x35, 0xf6, 0x26, 0xd0, 0xa2, 0x4a, 0x80, - 0xc4, 0x81, 0x33, 0x37, 0x6e, 0x1c, 0xe1, 0x2f, 0x70, 0xe2, 0xca, 0x95, 0xbf, 0xc0, 0xff, 0x00, - 0x79, 0xbd, 0x9b, 0x38, 0x9f, 0xed, 0x85, 0x5b, 0xb2, 0xf3, 0x8c, 0x9f, 0x67, 0x66, 0x9f, 0x99, - 0x45, 0x25, 0x9b, 0x52, 0xdb, 0x05, 0xc3, 0xa3, 0xc4, 0x61, 0x34, 0x70, 0x88, 0x6d, 0xb4, 0x2a, - 0x86, 0x1d, 0xd0, 0xa6, 0x5f, 0x0d, 0x21, 0x68, 0x39, 0x35, 0xd0, 0xfd, 0x80, 0x32, 0x8a, 0xe7, - 0x62, 0xa4, 0xde, 0x41, 0xea, 0xad, 0x8a, 0xba, 0x28, 0xf2, 0x2d, 0xdf, 0x31, 0x2c, 0x42, 0x28, - 0xb3, 0x98, 0x43, 0x49, 0x18, 0xe7, 0xa8, 0x2b, 0x89, 0xa8, 0xc8, 0x83, 0x7a, 0x35, 0x80, 0x90, - 0x36, 0x03, 0xf9, 0x61, 0xf5, 0xda, 0x40, 0x09, 0x35, 0xea, 0x79, 0x94, 0x08, 0x48, 0x71, 0xb8, - 0x4a, 0x81, 0x58, 0x10, 0x08, 0xfe, 0xef, 0xb4, 0xd9, 0x30, 0xc0, 0xf3, 0xd9, 0x59, 0x1c, 0xd4, - 0xfe, 0x28, 0x68, 0xf6, 0xb1, 0x13, 0xb2, 0xdd, 0x28, 0x21, 0x34, 0xe1, 0x65, 0x13, 0x42, 0x86, - 0x31, 0x4a, 0x13, 0xcb, 0x83, 0xc2, 0x44, 0x51, 0x29, 0xe5, 0x4c, 0xfe, 0x1b, 0xdf, 0x44, 0xb3, - 0xb5, 0x67, 0x8e, 0x5b, 0x0f, 0x80, 0x54, 0x69, 0xa3, 0xca, 0x19, 0x0a, 0x63, 0x11, 0xe0, 0xe1, - 0x7f, 0xe6, 0xb4, 0x0c, 0xed, 0x37, 0xf8, 0x97, 0xb0, 0x8e, 0xb0, 0x45, 0x6a, 0x10, 0x32, 0x1a, - 0x84, 0x1d, 0x78, 0x4a, 0xc0, 0x67, 0xda, 0x31, 0x89, 0x2f, 0xa3, 0xb9, 0x3a, 0x84, 0x35, 0x20, - 0x75, 0x8b, 0xb0, 0x44, 0x46, 0x5a, 0x64, 0xe0, 0x44, 0x54, 0xe6, 0x2c, 0xa0, 0x9c, 0x6f, 0xd9, - 0x50, 0x0d, 0x9d, 0x73, 0x28, 0x8c, 0x17, 0x95, 0xd2, 0xb8, 0x99, 0x8d, 0x0e, 0x0e, 0x9d, 0x73, - 0xc0, 0x4b, 0x08, 0xf1, 0x20, 0xa3, 0x2f, 0x80, 0x14, 0x32, 0xbc, 0x10, 0x0e, 0x3f, 0x8a, 0x0e, - 0xb6, 0xb3, 0x28, 0xd3, 0x70, 0x5c, 0x06, 0x81, 0x46, 0x11, 0x4e, 0x36, 0x20, 0xf4, 0x29, 0x09, - 0x01, 0xdf, 0x42, 0xe3, 0xb1, 0x00, 0xa5, 0x98, 0x2a, 0xe5, 0xcb, 0x0b, 0xfa, 0xa0, 0x2b, 0xd6, - 0x79, 0x92, 0x19, 0x23, 0xf1, 0x3a, 0x9a, 0x26, 0xf0, 0x9a, 0x55, 0x13, 0xb4, 0xbc, 0x3d, 0xe6, - 0x54, 0x74, 0x7c, 0x20, 0xa9, 0xb5, 0x35, 0x34, 0xbd, 0x0b, 0x31, 0x5f, 0x6f, 0xbf, 0x53, 0x9d, - 0x7e, 0x6b, 0x6f, 0x15, 0x84, 0x77, 0x02, 0xb0, 0x18, 0x0c, 0x84, 0xa6, 0x13, 0x57, 0xd3, 0x16, - 0x1b, 0xf1, 0x5d, 0x4d, 0xec, 0x0a, 0x9a, 0x6a, 0x59, 0xae, 0x53, 0xb7, 0x18, 0x54, 0x29, 0x71, - 0xcf, 0x38, 0x75, 0xd6, 0x9c, 0x94, 0x87, 0xfb, 0xc4, 0x3d, 0xd3, 0x5c, 0x84, 0x9f, 0xf8, 0xf5, - 0x5e, 0x05, 0xff, 0x8a, 0xad, 0x84, 0xf0, 0x7d, 0x70, 0x61, 0x48, 0xbd, 0xc9, 0xd6, 0xfc, 0x50, - 0xd0, 0xff, 0xed, 0x3b, 0xdb, 0x03, 0xef, 0x14, 0x82, 0x91, 0xd6, 0xed, 0x32, 0x4a, 0x6a, 0xa4, - 0x51, 0xd2, 0x3d, 0x46, 0xc1, 0xf3, 0xd2, 0x28, 0xdc, 0x61, 0x39, 0x53, 0xfc, 0xc3, 0x5b, 0x28, - 0xeb, 0x10, 0x06, 0x41, 0xcb, 0x72, 0xb9, 0xbb, 0xf2, 0x65, 0x6d, 0x70, 0x23, 0x8e, 0x1c, 0x0f, - 0x1e, 0x09, 0xa4, 0xd9, 0xce, 0xd1, 0x3e, 0x2b, 0xa8, 0xd0, 0x5f, 0x83, 0x70, 0xdf, 0x6d, 0x34, - 0xe1, 0xc5, 0x47, 0xc2, 0x7f, 0x4b, 0xf2, 0xdb, 0x96, 0xef, 0xe8, 0x7b, 0x72, 0x5d, 0x98, 0x62, - 0x5b, 0x98, 0x12, 0x7d, 0x55, 0x0f, 0x46, 0x45, 0x33, 0xca, 0x2c, 0x37, 0xd9, 0x92, 0x1c, 0x3f, - 0x89, 0x7a, 0x52, 0xfe, 0x9e, 0x41, 0x93, 0x5c, 0xd8, 0x61, 0xbc, 0xe7, 0xf0, 0x07, 0x05, 0xa1, - 0xce, 0x94, 0xe0, 0xeb, 0x83, 0x4b, 0xed, 0x5b, 0x24, 0x6a, 0xe9, 0x72, 0x60, 0x5c, 0xb2, 0xb6, - 0xfa, 0xfe, 0xd7, 0xef, 0x4f, 0x63, 0xcb, 0x78, 0x31, 0x5a, 0x5f, 0x6f, 0xa2, 0x6b, 0xbb, 0xe7, - 0x07, 0xf4, 0x39, 0xd4, 0x58, 0x68, 0x6c, 0x5c, 0xc4, 0x0b, 0x2d, 0xc4, 0x2d, 0x94, 0x95, 0xb3, - 0x83, 0xd7, 0x86, 0x18, 0xaf, 0x7b, 0xb6, 0xd4, 0x51, 0xfe, 0xd4, 0xd6, 0x39, 0x6b, 0x11, 0x2f, - 0x0f, 0x62, 0x15, 0xa4, 0xc6, 0xc6, 0x05, 0x7e, 0xa7, 0xa0, 0x7c, 0x62, 0x18, 0xf1, 0x90, 0xba, - 0xfa, 0xe7, 0x75, 0x34, 0xfd, 0x0d, 0x4e, 0xbf, 0xa6, 0x8d, 0x2c, 0xfa, 0x8e, 0x18, 0xa2, 0x8f, - 0x0a, 0xca, 0x27, 0xc6, 0x71, 0x98, 0x86, 0xfe, 0x89, 0x1d, 0xad, 0xa1, 0xc2, 0x35, 0x6c, 0xaa, - 0xab, 0x5c, 0x43, 0xfc, 0x70, 0x0c, 0x6d, 0x84, 0xd4, 0xf2, 0x0a, 0xe5, 0x13, 0xb3, 0x3a, 0x4c, - 0x4a, 0xff, 0x38, 0xab, 0xf3, 0x12, 0x29, 0x5f, 0x23, 0xfd, 0x41, 0xf4, 0x1a, 0xc9, 0x8b, 0xd8, - 0xb8, 0xec, 0x22, 0xbe, 0x28, 0x68, 0xa6, 0x77, 0x6c, 0xf0, 0xe6, 0x25, 0x2e, 0xeb, 0x5e, 0x11, - 0xaa, 0x7e, 0x55, 0xb8, 0xb0, 0xa6, 0xce, 0xb5, 0x95, 0xf0, 0xfa, 0x68, 0x6d, 0x86, 0x18, 0xc2, - 0xed, 0xaf, 0x0a, 0x2a, 0xd4, 0xa8, 0x37, 0x90, 0x65, 0x7b, 0x36, 0x39, 0x57, 0x07, 0x51, 0x13, - 0x0e, 0x94, 0xa7, 0x5b, 0x02, 0x6a, 0x53, 0xd7, 0x22, 0xb6, 0x4e, 0x03, 0xdb, 0xb0, 0x81, 0xf0, - 0x16, 0x19, 0x71, 0xc8, 0xf2, 0x9d, 0xb0, 0xfb, 0x8d, 0xbf, 0xdb, 0xf9, 0xf7, 0x6d, 0x4c, 0xdd, - 0x8d, 0x3f, 0xb0, 0xe3, 0xd2, 0x66, 0x5d, 0x2e, 0x88, 0x88, 0xf1, 0xb8, 0xf2, 0x53, 0x06, 0x4f, - 0x78, 0xf0, 0xa4, 0x13, 0x3c, 0x39, 0xae, 0x9c, 0x66, 0x38, 0x49, 0xe5, 0x6f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x86, 0x94, 0xf2, 0xde, 0xed, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/metric.pb.go b/vendor/google.golang.org/genproto/googleapis/monitoring/v3/metric.pb.go deleted file mode 100644 index 533b5373..00000000 --- a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/metric.pb.go +++ /dev/null @@ -1,164 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/monitoring/v3/metric.proto - -package monitoring - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_api5 "google.golang.org/genproto/googleapis/api/metric" -import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A single data point in a time series. -type Point struct { - // The time interval to which the data point applies. For GAUGE metrics, only - // the end time of the interval is used. For DELTA metrics, the start and end - // time should specify a non-zero interval, with subsequent points specifying - // contiguous and non-overlapping intervals. For CUMULATIVE metrics, the - // start and end time should specify a non-zero interval, with subsequent - // points specifying the same start time and increasing end times, until an - // event resets the cumulative value to zero and sets a new start time for the - // following points. - Interval *TimeInterval `protobuf:"bytes,1,opt,name=interval" json:"interval,omitempty"` - // The value of the data point. - Value *TypedValue `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` -} - -func (m *Point) Reset() { *m = Point{} } -func (m *Point) String() string { return proto.CompactTextString(m) } -func (*Point) ProtoMessage() {} -func (*Point) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *Point) GetInterval() *TimeInterval { - if m != nil { - return m.Interval - } - return nil -} - -func (m *Point) GetValue() *TypedValue { - if m != nil { - return m.Value - } - return nil -} - -// A collection of data points that describes the time-varying values -// of a metric. A time series is identified by a combination of a -// fully-specified monitored resource and a fully-specified metric. -// This type is used for both listing and creating time series. -type TimeSeries struct { - // The associated metric. A fully-specified metric used to identify the time - // series. - Metric *google_api5.Metric `protobuf:"bytes,1,opt,name=metric" json:"metric,omitempty"` - // The associated resource. A fully-specified monitored resource used to - // identify the time series. - Resource *google_api4.MonitoredResource `protobuf:"bytes,2,opt,name=resource" json:"resource,omitempty"` - // The metric kind of the time series. When listing time series, this metric - // kind might be different from the metric kind of the associated metric if - // this time series is an alignment or reduction of other time series. - // - // When creating a time series, this field is optional. If present, it must be - // the same as the metric kind of the associated metric. If the associated - // metric's descriptor must be auto-created, then this field specifies the - // metric kind of the new descriptor and must be either `GAUGE` (the default) - // or `CUMULATIVE`. - MetricKind google_api5.MetricDescriptor_MetricKind `protobuf:"varint,3,opt,name=metric_kind,json=metricKind,enum=google.api.MetricDescriptor_MetricKind" json:"metric_kind,omitempty"` - // The value type of the time series. When listing time series, this value - // type might be different from the value type of the associated metric if - // this time series is an alignment or reduction of other time series. - // - // When creating a time series, this field is optional. If present, it must be - // the same as the type of the data in the `points` field. - ValueType google_api5.MetricDescriptor_ValueType `protobuf:"varint,4,opt,name=value_type,json=valueType,enum=google.api.MetricDescriptor_ValueType" json:"value_type,omitempty"` - // The data points of this time series. When listing time series, the order of - // the points is specified by the list method. - // - // When creating a time series, this field must contain exactly one point and - // the point's type must be the same as the value type of the associated - // metric. If the associated metric's descriptor must be auto-created, then - // the value type of the descriptor is determined by the point's type, which - // must be `BOOL`, `INT64`, `DOUBLE`, or `DISTRIBUTION`. - Points []*Point `protobuf:"bytes,5,rep,name=points" json:"points,omitempty"` -} - -func (m *TimeSeries) Reset() { *m = TimeSeries{} } -func (m *TimeSeries) String() string { return proto.CompactTextString(m) } -func (*TimeSeries) ProtoMessage() {} -func (*TimeSeries) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *TimeSeries) GetMetric() *google_api5.Metric { - if m != nil { - return m.Metric - } - return nil -} - -func (m *TimeSeries) GetResource() *google_api4.MonitoredResource { - if m != nil { - return m.Resource - } - return nil -} - -func (m *TimeSeries) GetMetricKind() google_api5.MetricDescriptor_MetricKind { - if m != nil { - return m.MetricKind - } - return google_api5.MetricDescriptor_METRIC_KIND_UNSPECIFIED -} - -func (m *TimeSeries) GetValueType() google_api5.MetricDescriptor_ValueType { - if m != nil { - return m.ValueType - } - return google_api5.MetricDescriptor_VALUE_TYPE_UNSPECIFIED -} - -func (m *TimeSeries) GetPoints() []*Point { - if m != nil { - return m.Points - } - return nil -} - -func init() { - proto.RegisterType((*Point)(nil), "google.monitoring.v3.Point") - proto.RegisterType((*TimeSeries)(nil), "google.monitoring.v3.TimeSeries") -} - -func init() { proto.RegisterFile("google/monitoring/v3/metric.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 396 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x4a, 0xeb, 0x40, - 0x14, 0x86, 0x49, 0x7b, 0x5b, 0x7a, 0x27, 0x70, 0x17, 0xc3, 0x05, 0x43, 0x45, 0x88, 0x15, 0xb4, - 0xb8, 0x48, 0xa0, 0x01, 0x41, 0x84, 0x2e, 0xaa, 0xa2, 0x22, 0x42, 0x19, 0xa5, 0x0b, 0x29, 0x94, - 0x98, 0x0c, 0x61, 0x30, 0x99, 0x33, 0x4c, 0xd2, 0x40, 0x57, 0x3e, 0x8c, 0x3b, 0xdf, 0xc0, 0x57, - 0xf0, 0xa9, 0x24, 0x33, 0x93, 0xd6, 0x62, 0x74, 0x37, 0xc9, 0xff, 0x9d, 0xff, 0x9f, 0x73, 0xce, - 0xa0, 0xfd, 0x04, 0x20, 0x49, 0xa9, 0x9f, 0x01, 0x67, 0x05, 0x48, 0xc6, 0x13, 0xbf, 0x0c, 0xfc, - 0x8c, 0x16, 0x92, 0x45, 0x9e, 0x90, 0x50, 0x00, 0xfe, 0xaf, 0x11, 0x6f, 0x83, 0x78, 0x65, 0xd0, - 0xdf, 0x31, 0x85, 0xa1, 0x60, 0x5b, 0x78, 0xff, 0xe0, 0xab, 0xa0, 0x4b, 0x68, 0xbc, 0x90, 0x34, - 0x87, 0xa5, 0x8c, 0xa8, 0x81, 0x9a, 0x63, 0x23, 0xc8, 0x32, 0xe0, 0x1a, 0x19, 0xbc, 0xa0, 0xce, - 0x14, 0x18, 0x2f, 0xf0, 0x18, 0xf5, 0x18, 0x2f, 0xa8, 0x2c, 0xc3, 0xd4, 0xb1, 0x5c, 0x6b, 0x68, - 0x8f, 0x06, 0x5e, 0xd3, 0x95, 0xbc, 0x07, 0x96, 0xd1, 0x1b, 0x43, 0x92, 0x75, 0x0d, 0x3e, 0x41, - 0x9d, 0x32, 0x4c, 0x97, 0xd4, 0x69, 0xa9, 0x62, 0xf7, 0x87, 0xe2, 0x95, 0xa0, 0xf1, 0xac, 0xe2, - 0x88, 0xc6, 0x07, 0xef, 0x2d, 0x84, 0x2a, 0xcb, 0x7b, 0x2a, 0x19, 0xcd, 0xf1, 0x31, 0xea, 0xea, - 0x3e, 0xcd, 0x25, 0x70, 0xed, 0x13, 0x0a, 0xe6, 0xdd, 0x29, 0x85, 0x18, 0x02, 0x9f, 0xa2, 0x5e, - 0xdd, 0xb0, 0x49, 0xdd, 0xdb, 0xa2, 0xeb, 0xb1, 0x10, 0x03, 0x91, 0x35, 0x8e, 0xaf, 0x91, 0xad, - 0x4d, 0x16, 0xcf, 0x8c, 0xc7, 0x4e, 0xdb, 0xb5, 0x86, 0xff, 0x46, 0x47, 0xdf, 0xb3, 0x2e, 0x68, - 0x1e, 0x49, 0x26, 0x0a, 0x90, 0xe6, 0xc7, 0x2d, 0xe3, 0x31, 0x41, 0xd9, 0xfa, 0x8c, 0x2f, 0x11, - 0x52, 0x8d, 0x2c, 0x8a, 0x95, 0xa0, 0xce, 0x1f, 0x65, 0x74, 0xf8, 0xab, 0x91, 0x6a, 0xbf, 0x1a, - 0x04, 0xf9, 0x5b, 0xd6, 0x47, 0x1c, 0xa0, 0xae, 0xa8, 0xf6, 0x90, 0x3b, 0x1d, 0xb7, 0x3d, 0xb4, - 0x47, 0xbb, 0xcd, 0xf3, 0x53, 0xbb, 0x22, 0x06, 0x9d, 0xbc, 0x5a, 0xc8, 0x89, 0x20, 0x6b, 0x44, - 0x27, 0xb6, 0x0e, 0x9e, 0x56, 0x6b, 0x9e, 0x5a, 0x8f, 0x63, 0x03, 0x25, 0x90, 0x86, 0x3c, 0xf1, - 0x40, 0x26, 0x7e, 0x42, 0xb9, 0x7a, 0x04, 0xbe, 0x96, 0x42, 0xc1, 0xf2, 0xed, 0xa7, 0x72, 0xb6, - 0xf9, 0x7a, 0x6b, 0xf5, 0xaf, 0xb4, 0xc1, 0x79, 0x0a, 0xcb, 0xb8, 0x1e, 0x6e, 0x95, 0x35, 0x0b, - 0x3e, 0x6a, 0x71, 0xae, 0xc4, 0xf9, 0x46, 0x9c, 0xcf, 0x82, 0xa7, 0xae, 0x0a, 0x09, 0x3e, 0x03, - 0x00, 0x00, 0xff, 0xff, 0x28, 0x45, 0x7a, 0x13, 0x05, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/metric_service.pb.go b/vendor/google.golang.org/genproto/googleapis/monitoring/v3/metric_service.pb.go deleted file mode 100644 index 77840f1c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/metric_service.pb.go +++ /dev/null @@ -1,929 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/monitoring/v3/metric_service.proto - -package monitoring - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_api5 "google.golang.org/genproto/googleapis/api/metric" -import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres" -import google_protobuf4 "github.com/golang/protobuf/ptypes/empty" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Controls which fields are returned by `ListTimeSeries`. -type ListTimeSeriesRequest_TimeSeriesView int32 - -const ( - // Returns the identity of the metric(s), the time series, - // and the time series data. - ListTimeSeriesRequest_FULL ListTimeSeriesRequest_TimeSeriesView = 0 - // Returns the identity of the metric and the time series resource, - // but not the time series data. - ListTimeSeriesRequest_HEADERS ListTimeSeriesRequest_TimeSeriesView = 1 -) - -var ListTimeSeriesRequest_TimeSeriesView_name = map[int32]string{ - 0: "FULL", - 1: "HEADERS", -} -var ListTimeSeriesRequest_TimeSeriesView_value = map[string]int32{ - "FULL": 0, - "HEADERS": 1, -} - -func (x ListTimeSeriesRequest_TimeSeriesView) String() string { - return proto.EnumName(ListTimeSeriesRequest_TimeSeriesView_name, int32(x)) -} -func (ListTimeSeriesRequest_TimeSeriesView) EnumDescriptor() ([]byte, []int) { - return fileDescriptor4, []int{8, 0} -} - -// The `ListMonitoredResourceDescriptors` request. -type ListMonitoredResourceDescriptorsRequest struct { - // The project on which to execute the request. The format is - // `"projects/{project_id_or_number}"`. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` - // An optional [filter](/monitoring/api/v3/filters) describing - // the descriptors to be returned. The filter can reference - // the descriptor's type and labels. For example, the - // following filter returns only Google Compute Engine descriptors - // that have an `id` label: - // - // resource.type = starts_with("gce_") AND resource.label:id - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // A positive number that is the maximum number of results to return. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If this field is not empty then it must contain the `nextPageToken` value - // returned by a previous call to this method. Using this field causes the - // method to return additional results from the previous method call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListMonitoredResourceDescriptorsRequest) Reset() { - *m = ListMonitoredResourceDescriptorsRequest{} -} -func (m *ListMonitoredResourceDescriptorsRequest) String() string { return proto.CompactTextString(m) } -func (*ListMonitoredResourceDescriptorsRequest) ProtoMessage() {} -func (*ListMonitoredResourceDescriptorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor4, []int{0} -} - -func (m *ListMonitoredResourceDescriptorsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListMonitoredResourceDescriptorsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListMonitoredResourceDescriptorsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListMonitoredResourceDescriptorsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The `ListMonitoredResourcDescriptors` response. -type ListMonitoredResourceDescriptorsResponse struct { - // The monitored resource descriptors that are available to this project - // and that match `filter`, if present. - ResourceDescriptors []*google_api4.MonitoredResourceDescriptor `protobuf:"bytes,1,rep,name=resource_descriptors,json=resourceDescriptors" json:"resource_descriptors,omitempty"` - // If there are more results than have been returned, then this field is set - // to a non-empty value. To see the additional results, - // use that value as `pageToken` in the next call to this method. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListMonitoredResourceDescriptorsResponse) Reset() { - *m = ListMonitoredResourceDescriptorsResponse{} -} -func (m *ListMonitoredResourceDescriptorsResponse) String() string { return proto.CompactTextString(m) } -func (*ListMonitoredResourceDescriptorsResponse) ProtoMessage() {} -func (*ListMonitoredResourceDescriptorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor4, []int{1} -} - -func (m *ListMonitoredResourceDescriptorsResponse) GetResourceDescriptors() []*google_api4.MonitoredResourceDescriptor { - if m != nil { - return m.ResourceDescriptors - } - return nil -} - -func (m *ListMonitoredResourceDescriptorsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The `GetMonitoredResourceDescriptor` request. -type GetMonitoredResourceDescriptorRequest struct { - // The monitored resource descriptor to get. The format is - // `"projects/{project_id_or_number}/monitoredResourceDescriptors/{resource_type}"`. - // The `{resource_type}` is a predefined type, such as - // `cloudsql_database`. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` -} - -func (m *GetMonitoredResourceDescriptorRequest) Reset() { *m = GetMonitoredResourceDescriptorRequest{} } -func (m *GetMonitoredResourceDescriptorRequest) String() string { return proto.CompactTextString(m) } -func (*GetMonitoredResourceDescriptorRequest) ProtoMessage() {} -func (*GetMonitoredResourceDescriptorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor4, []int{2} -} - -func (m *GetMonitoredResourceDescriptorRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The `ListMetricDescriptors` request. -type ListMetricDescriptorsRequest struct { - // The project on which to execute the request. The format is - // `"projects/{project_id_or_number}"`. - Name string `protobuf:"bytes,5,opt,name=name" json:"name,omitempty"` - // If this field is empty, all custom and - // system-defined metric descriptors are returned. - // Otherwise, the [filter](/monitoring/api/v3/filters) - // specifies which metric descriptors are to be - // returned. For example, the following filter matches all - // [custom metrics](/monitoring/custom-metrics): - // - // metric.type = starts_with("custom.googleapis.com/") - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // A positive number that is the maximum number of results to return. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If this field is not empty then it must contain the `nextPageToken` value - // returned by a previous call to this method. Using this field causes the - // method to return additional results from the previous method call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListMetricDescriptorsRequest) Reset() { *m = ListMetricDescriptorsRequest{} } -func (m *ListMetricDescriptorsRequest) String() string { return proto.CompactTextString(m) } -func (*ListMetricDescriptorsRequest) ProtoMessage() {} -func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} } - -func (m *ListMetricDescriptorsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListMetricDescriptorsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListMetricDescriptorsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListMetricDescriptorsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The `ListMetricDescriptors` response. -type ListMetricDescriptorsResponse struct { - // The metric descriptors that are available to the project - // and that match the value of `filter`, if present. - MetricDescriptors []*google_api5.MetricDescriptor `protobuf:"bytes,1,rep,name=metric_descriptors,json=metricDescriptors" json:"metric_descriptors,omitempty"` - // If there are more results than have been returned, then this field is set - // to a non-empty value. To see the additional results, - // use that value as `pageToken` in the next call to this method. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListMetricDescriptorsResponse) Reset() { *m = ListMetricDescriptorsResponse{} } -func (m *ListMetricDescriptorsResponse) String() string { return proto.CompactTextString(m) } -func (*ListMetricDescriptorsResponse) ProtoMessage() {} -func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} } - -func (m *ListMetricDescriptorsResponse) GetMetricDescriptors() []*google_api5.MetricDescriptor { - if m != nil { - return m.MetricDescriptors - } - return nil -} - -func (m *ListMetricDescriptorsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The `GetMetricDescriptor` request. -type GetMetricDescriptorRequest struct { - // The metric descriptor on which to execute the request. The format is - // `"projects/{project_id_or_number}/metricDescriptors/{metric_id}"`. - // An example value of `{metric_id}` is - // `"compute.googleapis.com/instance/disk/read_bytes_count"`. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` -} - -func (m *GetMetricDescriptorRequest) Reset() { *m = GetMetricDescriptorRequest{} } -func (m *GetMetricDescriptorRequest) String() string { return proto.CompactTextString(m) } -func (*GetMetricDescriptorRequest) ProtoMessage() {} -func (*GetMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} } - -func (m *GetMetricDescriptorRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The `CreateMetricDescriptor` request. -type CreateMetricDescriptorRequest struct { - // The project on which to execute the request. The format is - // `"projects/{project_id_or_number}"`. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // The new [custom metric](/monitoring/custom-metrics) - // descriptor. - MetricDescriptor *google_api5.MetricDescriptor `protobuf:"bytes,2,opt,name=metric_descriptor,json=metricDescriptor" json:"metric_descriptor,omitempty"` -} - -func (m *CreateMetricDescriptorRequest) Reset() { *m = CreateMetricDescriptorRequest{} } -func (m *CreateMetricDescriptorRequest) String() string { return proto.CompactTextString(m) } -func (*CreateMetricDescriptorRequest) ProtoMessage() {} -func (*CreateMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} } - -func (m *CreateMetricDescriptorRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateMetricDescriptorRequest) GetMetricDescriptor() *google_api5.MetricDescriptor { - if m != nil { - return m.MetricDescriptor - } - return nil -} - -// The `DeleteMetricDescriptor` request. -type DeleteMetricDescriptorRequest struct { - // The metric descriptor on which to execute the request. The format is - // `"projects/{project_id_or_number}/metricDescriptors/{metric_id}"`. - // An example of `{metric_id}` is: - // `"custom.googleapis.com/my_test_metric"`. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteMetricDescriptorRequest) Reset() { *m = DeleteMetricDescriptorRequest{} } -func (m *DeleteMetricDescriptorRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteMetricDescriptorRequest) ProtoMessage() {} -func (*DeleteMetricDescriptorRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} } - -func (m *DeleteMetricDescriptorRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The `ListTimeSeries` request. -type ListTimeSeriesRequest struct { - // The project on which to execute the request. The format is - // "projects/{project_id_or_number}". - Name string `protobuf:"bytes,10,opt,name=name" json:"name,omitempty"` - // A [monitoring filter](/monitoring/api/v3/filters) that specifies which time - // series should be returned. The filter must specify a single metric type, - // and can additionally specify metric labels and other information. For - // example: - // - // metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND - // metric.label.instance_name = "my-instance-name" - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` - // The time interval for which results should be returned. Only time series - // that contain data points in the specified interval are included - // in the response. - Interval *TimeInterval `protobuf:"bytes,4,opt,name=interval" json:"interval,omitempty"` - // By default, the raw time series data is returned. - // Use this field to combine multiple time series for different - // views of the data. - Aggregation *Aggregation `protobuf:"bytes,5,opt,name=aggregation" json:"aggregation,omitempty"` - // Specifies the order in which the points of the time series should - // be returned. By default, results are not ordered. Currently, - // this field must be left blank. - OrderBy string `protobuf:"bytes,6,opt,name=order_by,json=orderBy" json:"order_by,omitempty"` - // Specifies which information is returned about the time series. - View ListTimeSeriesRequest_TimeSeriesView `protobuf:"varint,7,opt,name=view,enum=google.monitoring.v3.ListTimeSeriesRequest_TimeSeriesView" json:"view,omitempty"` - // A positive number that is the maximum number of results to return. - // When `view` field sets to `FULL`, it limits the number of `Points` server - // will return; if `view` field is `HEADERS`, it limits the number of - // `TimeSeries` server will return. - PageSize int32 `protobuf:"varint,8,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If this field is not empty then it must contain the `nextPageToken` value - // returned by a previous call to this method. Using this field causes the - // method to return additional results from the previous method call. - PageToken string `protobuf:"bytes,9,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListTimeSeriesRequest) Reset() { *m = ListTimeSeriesRequest{} } -func (m *ListTimeSeriesRequest) String() string { return proto.CompactTextString(m) } -func (*ListTimeSeriesRequest) ProtoMessage() {} -func (*ListTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{8} } - -func (m *ListTimeSeriesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListTimeSeriesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListTimeSeriesRequest) GetInterval() *TimeInterval { - if m != nil { - return m.Interval - } - return nil -} - -func (m *ListTimeSeriesRequest) GetAggregation() *Aggregation { - if m != nil { - return m.Aggregation - } - return nil -} - -func (m *ListTimeSeriesRequest) GetOrderBy() string { - if m != nil { - return m.OrderBy - } - return "" -} - -func (m *ListTimeSeriesRequest) GetView() ListTimeSeriesRequest_TimeSeriesView { - if m != nil { - return m.View - } - return ListTimeSeriesRequest_FULL -} - -func (m *ListTimeSeriesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTimeSeriesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The `ListTimeSeries` response. -type ListTimeSeriesResponse struct { - // One or more time series that match the filter included in the request. - TimeSeries []*TimeSeries `protobuf:"bytes,1,rep,name=time_series,json=timeSeries" json:"time_series,omitempty"` - // If there are more results than have been returned, then this field is set - // to a non-empty value. To see the additional results, - // use that value as `pageToken` in the next call to this method. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTimeSeriesResponse) Reset() { *m = ListTimeSeriesResponse{} } -func (m *ListTimeSeriesResponse) String() string { return proto.CompactTextString(m) } -func (*ListTimeSeriesResponse) ProtoMessage() {} -func (*ListTimeSeriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{9} } - -func (m *ListTimeSeriesResponse) GetTimeSeries() []*TimeSeries { - if m != nil { - return m.TimeSeries - } - return nil -} - -func (m *ListTimeSeriesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The `CreateTimeSeries` request. -type CreateTimeSeriesRequest struct { - // The project on which to execute the request. The format is - // `"projects/{project_id_or_number}"`. - Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` - // The new data to be added to a list of time series. - // Adds at most one data point to each of several time series. The new data - // point must be more recent than any other point in its time series. Each - // `TimeSeries` value must fully specify a unique time series by supplying - // all label values for the metric and the monitored resource. - TimeSeries []*TimeSeries `protobuf:"bytes,2,rep,name=time_series,json=timeSeries" json:"time_series,omitempty"` -} - -func (m *CreateTimeSeriesRequest) Reset() { *m = CreateTimeSeriesRequest{} } -func (m *CreateTimeSeriesRequest) String() string { return proto.CompactTextString(m) } -func (*CreateTimeSeriesRequest) ProtoMessage() {} -func (*CreateTimeSeriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{10} } - -func (m *CreateTimeSeriesRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateTimeSeriesRequest) GetTimeSeries() []*TimeSeries { - if m != nil { - return m.TimeSeries - } - return nil -} - -// Describes the result of a failed request to write data to a time series. -type CreateTimeSeriesError struct { - // The time series, including the `Metric`, `MonitoredResource`, - // and `Point`s (including timestamp and value) that resulted - // in the error. This field provides all of the context that - // would be needed to retry the operation. - TimeSeries *TimeSeries `protobuf:"bytes,1,opt,name=time_series,json=timeSeries" json:"time_series,omitempty"` - // The status of the requested write operation. - Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` -} - -func (m *CreateTimeSeriesError) Reset() { *m = CreateTimeSeriesError{} } -func (m *CreateTimeSeriesError) String() string { return proto.CompactTextString(m) } -func (*CreateTimeSeriesError) ProtoMessage() {} -func (*CreateTimeSeriesError) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{11} } - -func (m *CreateTimeSeriesError) GetTimeSeries() *TimeSeries { - if m != nil { - return m.TimeSeries - } - return nil -} - -func (m *CreateTimeSeriesError) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func init() { - proto.RegisterType((*ListMonitoredResourceDescriptorsRequest)(nil), "google.monitoring.v3.ListMonitoredResourceDescriptorsRequest") - proto.RegisterType((*ListMonitoredResourceDescriptorsResponse)(nil), "google.monitoring.v3.ListMonitoredResourceDescriptorsResponse") - proto.RegisterType((*GetMonitoredResourceDescriptorRequest)(nil), "google.monitoring.v3.GetMonitoredResourceDescriptorRequest") - proto.RegisterType((*ListMetricDescriptorsRequest)(nil), "google.monitoring.v3.ListMetricDescriptorsRequest") - proto.RegisterType((*ListMetricDescriptorsResponse)(nil), "google.monitoring.v3.ListMetricDescriptorsResponse") - proto.RegisterType((*GetMetricDescriptorRequest)(nil), "google.monitoring.v3.GetMetricDescriptorRequest") - proto.RegisterType((*CreateMetricDescriptorRequest)(nil), "google.monitoring.v3.CreateMetricDescriptorRequest") - proto.RegisterType((*DeleteMetricDescriptorRequest)(nil), "google.monitoring.v3.DeleteMetricDescriptorRequest") - proto.RegisterType((*ListTimeSeriesRequest)(nil), "google.monitoring.v3.ListTimeSeriesRequest") - proto.RegisterType((*ListTimeSeriesResponse)(nil), "google.monitoring.v3.ListTimeSeriesResponse") - proto.RegisterType((*CreateTimeSeriesRequest)(nil), "google.monitoring.v3.CreateTimeSeriesRequest") - proto.RegisterType((*CreateTimeSeriesError)(nil), "google.monitoring.v3.CreateTimeSeriesError") - proto.RegisterEnum("google.monitoring.v3.ListTimeSeriesRequest_TimeSeriesView", ListTimeSeriesRequest_TimeSeriesView_name, ListTimeSeriesRequest_TimeSeriesView_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for MetricService service - -type MetricServiceClient interface { - // Lists monitored resource descriptors that match a filter. This method does not require a Stackdriver account. - ListMonitoredResourceDescriptors(ctx context.Context, in *ListMonitoredResourceDescriptorsRequest, opts ...grpc.CallOption) (*ListMonitoredResourceDescriptorsResponse, error) - // Gets a single monitored resource descriptor. This method does not require a Stackdriver account. - GetMonitoredResourceDescriptor(ctx context.Context, in *GetMonitoredResourceDescriptorRequest, opts ...grpc.CallOption) (*google_api4.MonitoredResourceDescriptor, error) - // Lists metric descriptors that match a filter. This method does not require a Stackdriver account. - ListMetricDescriptors(ctx context.Context, in *ListMetricDescriptorsRequest, opts ...grpc.CallOption) (*ListMetricDescriptorsResponse, error) - // Gets a single metric descriptor. This method does not require a Stackdriver account. - GetMetricDescriptor(ctx context.Context, in *GetMetricDescriptorRequest, opts ...grpc.CallOption) (*google_api5.MetricDescriptor, error) - // Creates a new metric descriptor. - // User-created metric descriptors define - // [custom metrics](/monitoring/custom-metrics). - CreateMetricDescriptor(ctx context.Context, in *CreateMetricDescriptorRequest, opts ...grpc.CallOption) (*google_api5.MetricDescriptor, error) - // Deletes a metric descriptor. Only user-created - // [custom metrics](/monitoring/custom-metrics) can be deleted. - DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Lists time series that match a filter. This method does not require a Stackdriver account. - ListTimeSeries(ctx context.Context, in *ListTimeSeriesRequest, opts ...grpc.CallOption) (*ListTimeSeriesResponse, error) - // Creates or adds data to one or more time series. - // The response is empty if all time series in the request were written. - // If any time series could not be written, a corresponding failure message is - // included in the error response. - CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) -} - -type metricServiceClient struct { - cc *grpc.ClientConn -} - -func NewMetricServiceClient(cc *grpc.ClientConn) MetricServiceClient { - return &metricServiceClient{cc} -} - -func (c *metricServiceClient) ListMonitoredResourceDescriptors(ctx context.Context, in *ListMonitoredResourceDescriptorsRequest, opts ...grpc.CallOption) (*ListMonitoredResourceDescriptorsResponse, error) { - out := new(ListMonitoredResourceDescriptorsResponse) - err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/ListMonitoredResourceDescriptors", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricServiceClient) GetMonitoredResourceDescriptor(ctx context.Context, in *GetMonitoredResourceDescriptorRequest, opts ...grpc.CallOption) (*google_api4.MonitoredResourceDescriptor, error) { - out := new(google_api4.MonitoredResourceDescriptor) - err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/GetMonitoredResourceDescriptor", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricServiceClient) ListMetricDescriptors(ctx context.Context, in *ListMetricDescriptorsRequest, opts ...grpc.CallOption) (*ListMetricDescriptorsResponse, error) { - out := new(ListMetricDescriptorsResponse) - err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/ListMetricDescriptors", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricServiceClient) GetMetricDescriptor(ctx context.Context, in *GetMetricDescriptorRequest, opts ...grpc.CallOption) (*google_api5.MetricDescriptor, error) { - out := new(google_api5.MetricDescriptor) - err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/GetMetricDescriptor", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricServiceClient) CreateMetricDescriptor(ctx context.Context, in *CreateMetricDescriptorRequest, opts ...grpc.CallOption) (*google_api5.MetricDescriptor, error) { - out := new(google_api5.MetricDescriptor) - err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/CreateMetricDescriptor", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricServiceClient) DeleteMetricDescriptor(ctx context.Context, in *DeleteMetricDescriptorRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/DeleteMetricDescriptor", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricServiceClient) ListTimeSeries(ctx context.Context, in *ListTimeSeriesRequest, opts ...grpc.CallOption) (*ListTimeSeriesResponse, error) { - out := new(ListTimeSeriesResponse) - err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/ListTimeSeries", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *metricServiceClient) CreateTimeSeries(ctx context.Context, in *CreateTimeSeriesRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.monitoring.v3.MetricService/CreateTimeSeries", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for MetricService service - -type MetricServiceServer interface { - // Lists monitored resource descriptors that match a filter. This method does not require a Stackdriver account. - ListMonitoredResourceDescriptors(context.Context, *ListMonitoredResourceDescriptorsRequest) (*ListMonitoredResourceDescriptorsResponse, error) - // Gets a single monitored resource descriptor. This method does not require a Stackdriver account. - GetMonitoredResourceDescriptor(context.Context, *GetMonitoredResourceDescriptorRequest) (*google_api4.MonitoredResourceDescriptor, error) - // Lists metric descriptors that match a filter. This method does not require a Stackdriver account. - ListMetricDescriptors(context.Context, *ListMetricDescriptorsRequest) (*ListMetricDescriptorsResponse, error) - // Gets a single metric descriptor. This method does not require a Stackdriver account. - GetMetricDescriptor(context.Context, *GetMetricDescriptorRequest) (*google_api5.MetricDescriptor, error) - // Creates a new metric descriptor. - // User-created metric descriptors define - // [custom metrics](/monitoring/custom-metrics). - CreateMetricDescriptor(context.Context, *CreateMetricDescriptorRequest) (*google_api5.MetricDescriptor, error) - // Deletes a metric descriptor. Only user-created - // [custom metrics](/monitoring/custom-metrics) can be deleted. - DeleteMetricDescriptor(context.Context, *DeleteMetricDescriptorRequest) (*google_protobuf4.Empty, error) - // Lists time series that match a filter. This method does not require a Stackdriver account. - ListTimeSeries(context.Context, *ListTimeSeriesRequest) (*ListTimeSeriesResponse, error) - // Creates or adds data to one or more time series. - // The response is empty if all time series in the request were written. - // If any time series could not be written, a corresponding failure message is - // included in the error response. - CreateTimeSeries(context.Context, *CreateTimeSeriesRequest) (*google_protobuf4.Empty, error) -} - -func RegisterMetricServiceServer(s *grpc.Server, srv MetricServiceServer) { - s.RegisterService(&_MetricService_serviceDesc, srv) -} - -func _MetricService_ListMonitoredResourceDescriptors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListMonitoredResourceDescriptorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricServiceServer).ListMonitoredResourceDescriptors(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.MetricService/ListMonitoredResourceDescriptors", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricServiceServer).ListMonitoredResourceDescriptors(ctx, req.(*ListMonitoredResourceDescriptorsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricService_GetMonitoredResourceDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetMonitoredResourceDescriptorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricServiceServer).GetMonitoredResourceDescriptor(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.MetricService/GetMonitoredResourceDescriptor", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricServiceServer).GetMonitoredResourceDescriptor(ctx, req.(*GetMonitoredResourceDescriptorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricService_ListMetricDescriptors_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListMetricDescriptorsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricServiceServer).ListMetricDescriptors(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.MetricService/ListMetricDescriptors", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricServiceServer).ListMetricDescriptors(ctx, req.(*ListMetricDescriptorsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricService_GetMetricDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetMetricDescriptorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricServiceServer).GetMetricDescriptor(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.MetricService/GetMetricDescriptor", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricServiceServer).GetMetricDescriptor(ctx, req.(*GetMetricDescriptorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricService_CreateMetricDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateMetricDescriptorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricServiceServer).CreateMetricDescriptor(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.MetricService/CreateMetricDescriptor", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricServiceServer).CreateMetricDescriptor(ctx, req.(*CreateMetricDescriptorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricService_DeleteMetricDescriptor_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteMetricDescriptorRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricServiceServer).DeleteMetricDescriptor(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.MetricService/DeleteMetricDescriptor", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricServiceServer).DeleteMetricDescriptor(ctx, req.(*DeleteMetricDescriptorRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricService_ListTimeSeries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTimeSeriesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricServiceServer).ListTimeSeries(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.MetricService/ListTimeSeries", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricServiceServer).ListTimeSeries(ctx, req.(*ListTimeSeriesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _MetricService_CreateTimeSeries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTimeSeriesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricServiceServer).CreateTimeSeries(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.MetricService/CreateTimeSeries", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricServiceServer).CreateTimeSeries(ctx, req.(*CreateTimeSeriesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _MetricService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.monitoring.v3.MetricService", - HandlerType: (*MetricServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListMonitoredResourceDescriptors", - Handler: _MetricService_ListMonitoredResourceDescriptors_Handler, - }, - { - MethodName: "GetMonitoredResourceDescriptor", - Handler: _MetricService_GetMonitoredResourceDescriptor_Handler, - }, - { - MethodName: "ListMetricDescriptors", - Handler: _MetricService_ListMetricDescriptors_Handler, - }, - { - MethodName: "GetMetricDescriptor", - Handler: _MetricService_GetMetricDescriptor_Handler, - }, - { - MethodName: "CreateMetricDescriptor", - Handler: _MetricService_CreateMetricDescriptor_Handler, - }, - { - MethodName: "DeleteMetricDescriptor", - Handler: _MetricService_DeleteMetricDescriptor_Handler, - }, - { - MethodName: "ListTimeSeries", - Handler: _MetricService_ListTimeSeries_Handler, - }, - { - MethodName: "CreateTimeSeries", - Handler: _MetricService_CreateTimeSeries_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/monitoring/v3/metric_service.proto", -} - -func init() { proto.RegisterFile("google/monitoring/v3/metric_service.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 1011 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0x66, 0x92, 0x34, 0x1f, 0xaf, 0xd5, 0x90, 0x4e, 0x5b, 0xd7, 0x6c, 0x13, 0xe4, 0x2e, 0x2a, - 0x71, 0xdd, 0xb2, 0x5b, 0xd9, 0x15, 0x87, 0xa4, 0x8d, 0x94, 0x2f, 0x4a, 0x45, 0x40, 0xd1, 0xba, - 0xe4, 0x50, 0x45, 0xb2, 0x36, 0xce, 0x74, 0x35, 0xe0, 0xdd, 0x59, 0x66, 0xc7, 0x2e, 0x29, 0x0a, - 0x07, 0x90, 0x7a, 0x47, 0x80, 0x04, 0x7f, 0xa1, 0x07, 0x10, 0xff, 0x81, 0x13, 0x57, 0xce, 0xdc, - 0xf8, 0x0b, 0xdc, 0xd1, 0xce, 0xce, 0xc6, 0xf6, 0x7e, 0xd9, 0xe6, 0xc2, 0xcd, 0xbb, 0xef, 0xd7, - 0xf3, 0x3e, 0xf3, 0xce, 0xfb, 0xac, 0xe1, 0x8e, 0xc3, 0x98, 0xd3, 0x25, 0xa6, 0xcb, 0x3c, 0x2a, - 0x18, 0xa7, 0x9e, 0x63, 0xf6, 0x9b, 0xa6, 0x4b, 0x04, 0xa7, 0x9d, 0x76, 0x40, 0x78, 0x9f, 0x76, - 0x88, 0xe1, 0x73, 0x26, 0x18, 0xbe, 0x16, 0xb9, 0x1a, 0x03, 0x57, 0xa3, 0xdf, 0xd4, 0x56, 0x55, - 0x02, 0xdb, 0xa7, 0xa6, 0xed, 0x79, 0x4c, 0xd8, 0x82, 0x32, 0x2f, 0x88, 0x62, 0xb4, 0x1b, 0x43, - 0xd6, 0x28, 0xa9, 0x32, 0xbc, 0x33, 0x6c, 0x88, 0x12, 0x92, 0xd3, 0x36, 0x27, 0x01, 0xeb, 0xf1, - 0xb8, 0xa2, 0x76, 0x2b, 0x13, 0x5c, 0x87, 0xb9, 0x2e, 0xf3, 0x0a, 0x5d, 0x46, 0x4a, 0xdd, 0x54, - 0x2e, 0xf2, 0xe9, 0xa4, 0xf7, 0xdc, 0x24, 0xae, 0x2f, 0xce, 0x12, 0x00, 0xb9, 0xdf, 0x31, 0x03, - 0x61, 0x8b, 0x9e, 0x42, 0xae, 0x7f, 0x87, 0x60, 0xfd, 0x80, 0x06, 0xe2, 0xe3, 0x18, 0x9c, 0xa5, - 0xb0, 0xed, 0x91, 0xa0, 0xc3, 0xa9, 0x2f, 0x18, 0x0f, 0x2c, 0xf2, 0x45, 0x8f, 0x04, 0x02, 0x63, - 0x98, 0xf3, 0x6c, 0x97, 0x54, 0x2e, 0x55, 0x51, 0x6d, 0xc9, 0x92, 0xbf, 0x71, 0x19, 0xe6, 0x9f, - 0xd3, 0xae, 0x20, 0xbc, 0x32, 0x23, 0xdf, 0xaa, 0x27, 0x7c, 0x13, 0x96, 0x7c, 0xdb, 0x21, 0xed, - 0x80, 0xbe, 0x24, 0x95, 0xd9, 0x2a, 0xaa, 0x5d, 0xb2, 0x16, 0xc3, 0x17, 0x2d, 0xfa, 0x92, 0xe0, - 0x35, 0x00, 0x69, 0x14, 0xec, 0x73, 0xe2, 0x55, 0xe6, 0x64, 0xa0, 0x74, 0x7f, 0x1a, 0xbe, 0xd0, - 0x7f, 0x41, 0x50, 0x1b, 0x8f, 0x29, 0xf0, 0x99, 0x17, 0x10, 0xfc, 0x0c, 0xae, 0xc5, 0x74, 0xb6, - 0x4f, 0x07, 0xf6, 0x0a, 0xaa, 0xce, 0xd6, 0x4a, 0x8d, 0x75, 0x43, 0x9d, 0xa6, 0xed, 0x53, 0xa3, - 0x20, 0x9f, 0x75, 0x95, 0xa7, 0x6b, 0xe0, 0x77, 0xe1, 0x4d, 0x8f, 0x7c, 0x29, 0xda, 0x43, 0x60, - 0xa3, 0x2e, 0x2f, 0x87, 0xaf, 0x0f, 0x2f, 0x00, 0x6f, 0xc2, 0xed, 0xc7, 0xa4, 0x08, 0x6e, 0x92, - 0xc1, 0xd9, 0x01, 0x83, 0xfa, 0x2b, 0x04, 0xab, 0xb2, 0x5b, 0x79, 0x98, 0xff, 0x23, 0xed, 0x3f, - 0x20, 0x58, 0xcb, 0x01, 0xa2, 0xb8, 0xfe, 0x08, 0xb0, 0xba, 0x32, 0x69, 0xa6, 0x57, 0x47, 0x98, - 0x4e, 0xa4, 0xb0, 0xae, 0xb8, 0xc9, 0xa4, 0x13, 0x93, 0x7b, 0x1f, 0xb4, 0x90, 0xdc, 0x64, 0xc6, - 0x02, 0x46, 0xbf, 0x86, 0xb5, 0x5d, 0x4e, 0x6c, 0x41, 0xa6, 0x08, 0xc2, 0x4f, 0xe0, 0x4a, 0xaa, - 0x37, 0x09, 0x68, 0x5c, 0x6b, 0x2b, 0xc9, 0xd6, 0xf4, 0x26, 0xac, 0xed, 0x91, 0x2e, 0x99, 0xaa, - 0xbe, 0xfe, 0xd3, 0x2c, 0x5c, 0x0f, 0xd9, 0x7f, 0x4a, 0x5d, 0xd2, 0x22, 0x9c, 0x92, 0xd4, 0xf9, - 0xc3, 0x04, 0xe7, 0xbf, 0x05, 0x8b, 0xd4, 0x13, 0x84, 0xf7, 0xed, 0xae, 0x3c, 0xe0, 0x52, 0x43, - 0x37, 0xb2, 0xf6, 0x99, 0x11, 0x96, 0x79, 0xa2, 0x3c, 0xad, 0x8b, 0x18, 0xbc, 0x0b, 0x25, 0xdb, - 0x71, 0x38, 0x71, 0xe4, 0x7a, 0x93, 0x23, 0x57, 0x6a, 0xdc, 0xca, 0x4e, 0xb1, 0x3d, 0x70, 0xb4, - 0x86, 0xa3, 0xf0, 0x5b, 0xb0, 0xc8, 0xf8, 0x29, 0xe1, 0xed, 0x93, 0xb3, 0xca, 0xbc, 0x84, 0xb7, - 0x20, 0x9f, 0x77, 0xce, 0xf0, 0x27, 0x30, 0xd7, 0xa7, 0xe4, 0x45, 0x65, 0xa1, 0x8a, 0x6a, 0xcb, - 0x8d, 0x8d, 0xec, 0xc4, 0x99, 0x34, 0x18, 0x83, 0x37, 0x47, 0x94, 0xbc, 0xb0, 0x64, 0x9e, 0xd1, - 0x79, 0x5f, 0x2c, 0x9c, 0xf7, 0xa5, 0xe4, 0xbc, 0xaf, 0xc3, 0xf2, 0x68, 0x4e, 0xbc, 0x08, 0x73, - 0x1f, 0x7c, 0x7a, 0x70, 0xb0, 0xf2, 0x06, 0x2e, 0xc1, 0xc2, 0x87, 0xfb, 0xdb, 0x7b, 0xfb, 0x56, - 0x6b, 0x05, 0xe9, 0xdf, 0x22, 0x28, 0x27, 0x31, 0xa9, 0x1b, 0xb1, 0x0d, 0x25, 0x41, 0x5d, 0x12, - 0x4a, 0x08, 0x25, 0xf1, 0x55, 0xa8, 0xe6, 0x53, 0xae, 0xc2, 0x41, 0x5c, 0xfc, 0x9e, 0xf8, 0x1e, - 0xf8, 0x70, 0x23, 0x9a, 0xea, 0xfc, 0x09, 0x19, 0x9e, 0xe7, 0x04, 0xb2, 0x99, 0xe9, 0x91, 0x85, - 0x9b, 0xe9, 0x7a, 0xb2, 0xe4, 0x3e, 0xe7, 0x8c, 0xa7, 0xdb, 0x46, 0x53, 0xb7, 0x5d, 0x87, 0xf9, - 0x48, 0x88, 0xd4, 0x25, 0xc3, 0x71, 0x34, 0xf7, 0x3b, 0x46, 0x4b, 0x5a, 0x2c, 0xe5, 0xd1, 0xf8, - 0x07, 0xe0, 0x72, 0x74, 0x97, 0x5a, 0x91, 0x54, 0xe3, 0xbf, 0x10, 0x54, 0xc7, 0x49, 0x04, 0x7e, - 0x94, 0x3f, 0x5e, 0x13, 0xc8, 0x9d, 0xb6, 0xf5, 0x5f, 0xc3, 0xa3, 0xd9, 0xd0, 0x37, 0xbe, 0xf9, - 0xf3, 0xef, 0xef, 0x67, 0x1e, 0xe0, 0x46, 0x28, 0xd5, 0x5f, 0x85, 0x87, 0xf2, 0xc8, 0xe7, 0xec, - 0x33, 0xd2, 0x11, 0x81, 0x59, 0x3f, 0x1f, 0x7c, 0x0e, 0x64, 0x41, 0xff, 0x1d, 0xc1, 0xdb, 0xc5, - 0x92, 0x82, 0x37, 0xb3, 0xe1, 0x4d, 0x24, 0x44, 0xda, 0xa4, 0xba, 0xa8, 0x3f, 0x94, 0x4d, 0xbc, - 0x8f, 0x1f, 0x64, 0x35, 0x51, 0xd8, 0x83, 0x59, 0x3f, 0xc7, 0xbf, 0xa1, 0x68, 0xa9, 0xa5, 0x24, - 0x05, 0x37, 0x0a, 0xc8, 0xcd, 0x11, 0x42, 0xad, 0x39, 0x55, 0x8c, 0x3a, 0x05, 0x53, 0x36, 0x70, - 0x07, 0xaf, 0xe7, 0x9c, 0x42, 0x0a, 0xd9, 0xcf, 0x08, 0xae, 0x66, 0x08, 0x0e, 0xbe, 0x9f, 0xcf, - 0x77, 0xf6, 0x9a, 0xd7, 0x0a, 0x75, 0x43, 0x6f, 0x48, 0x60, 0xf7, 0x70, 0x3d, 0x9b, 0xd9, 0x24, - 0x2e, 0xb3, 0x5e, 0x3f, 0xc7, 0xbf, 0x22, 0x28, 0x67, 0x4b, 0x1b, 0xce, 0x21, 0xa7, 0x50, 0x08, - 0xc7, 0x20, 0xdc, 0x91, 0x08, 0x1f, 0xea, 0x93, 0x52, 0xb7, 0x91, 0x56, 0xd0, 0x90, 0xcd, 0x72, - 0xb6, 0x18, 0xe6, 0x21, 0x2e, 0x94, 0x4e, 0xad, 0x1c, 0x07, 0xc5, 0x9f, 0xb9, 0xc6, 0x7e, 0xf8, - 0x99, 0x1b, 0xb3, 0x59, 0x9f, 0x86, 0xcd, 0x1f, 0x11, 0x2c, 0x8f, 0xee, 0x75, 0x7c, 0x77, 0x0a, - 0x45, 0xd2, 0xee, 0x4d, 0xe6, 0xac, 0x06, 0xb1, 0x26, 0x11, 0xea, 0xb8, 0x9a, 0xcd, 0xe6, 0xd0, - 0x6a, 0x7c, 0x85, 0x60, 0x25, 0xb9, 0x77, 0xf1, 0x7b, 0x45, 0xe7, 0x9b, 0xc6, 0x96, 0xc7, 0xd3, - 0x5d, 0x89, 0xe2, 0xb6, 0x3e, 0x16, 0xc5, 0x06, 0xaa, 0xef, 0xbc, 0x46, 0x50, 0xe9, 0x30, 0x37, - 0xb3, 0xf2, 0x0e, 0x1e, 0xd9, 0xc8, 0x87, 0x61, 0x99, 0x43, 0xf4, 0x6c, 0x4b, 0xf9, 0x3a, 0xac, - 0x6b, 0x7b, 0x8e, 0xc1, 0xb8, 0x63, 0x3a, 0xc4, 0x93, 0x20, 0xcc, 0xc8, 0x64, 0xfb, 0x34, 0x18, - 0xfd, 0x1f, 0xb3, 0x39, 0x78, 0x7a, 0x3d, 0xa3, 0x3d, 0x8e, 0x12, 0xec, 0x76, 0x59, 0xef, 0x34, - 0x5e, 0x4d, 0x61, 0xc9, 0xa3, 0xe6, 0x1f, 0xb1, 0xf1, 0x58, 0x1a, 0x8f, 0x07, 0xc6, 0xe3, 0xa3, - 0xe6, 0xc9, 0xbc, 0x2c, 0xd2, 0xfc, 0x37, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x96, 0x3c, 0x74, 0xeb, - 0x0d, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/uptime.pb.go b/vendor/google.golang.org/genproto/googleapis/monitoring/v3/uptime.pb.go deleted file mode 100644 index 042cddd0..00000000 --- a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/uptime.pb.go +++ /dev/null @@ -1,748 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/monitoring/v3/uptime.proto - -package monitoring - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_api4 "google.golang.org/genproto/googleapis/api/monitoredres" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The regions from which an uptime check can be run. -type UptimeCheckRegion int32 - -const ( - // Default value if no region is specified. Will result in uptime checks - // running from all regions. - UptimeCheckRegion_REGION_UNSPECIFIED UptimeCheckRegion = 0 - // Allows checks to run from locations within the United States of America. - UptimeCheckRegion_USA UptimeCheckRegion = 1 - // Allows checks to run from locations within the continent of Europe. - UptimeCheckRegion_EUROPE UptimeCheckRegion = 2 - // Allows checks to run from locations within the continent of South - // America. - UptimeCheckRegion_SOUTH_AMERICA UptimeCheckRegion = 3 - // Allows checks to run from locations within the Asia Pacific area (ex: - // Singapore). - UptimeCheckRegion_ASIA_PACIFIC UptimeCheckRegion = 4 -) - -var UptimeCheckRegion_name = map[int32]string{ - 0: "REGION_UNSPECIFIED", - 1: "USA", - 2: "EUROPE", - 3: "SOUTH_AMERICA", - 4: "ASIA_PACIFIC", -} -var UptimeCheckRegion_value = map[string]int32{ - "REGION_UNSPECIFIED": 0, - "USA": 1, - "EUROPE": 2, - "SOUTH_AMERICA": 3, - "ASIA_PACIFIC": 4, -} - -func (x UptimeCheckRegion) String() string { - return proto.EnumName(UptimeCheckRegion_name, int32(x)) -} -func (UptimeCheckRegion) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -// The supported resource types that can be used as values of -// group_resource.resource_type. gae_app and uptime_url are not allowed -// because group checks on App Engine modules and URLs are not allowed. -type GroupResourceType int32 - -const ( - // Default value (not valid). - GroupResourceType_RESOURCE_TYPE_UNSPECIFIED GroupResourceType = 0 - // A group of instances (could be either GCE or AWS_EC2). - GroupResourceType_INSTANCE GroupResourceType = 1 - // A group of AWS load balancers. - GroupResourceType_AWS_ELB_LOAD_BALANCER GroupResourceType = 2 -) - -var GroupResourceType_name = map[int32]string{ - 0: "RESOURCE_TYPE_UNSPECIFIED", - 1: "INSTANCE", - 2: "AWS_ELB_LOAD_BALANCER", -} -var GroupResourceType_value = map[string]int32{ - "RESOURCE_TYPE_UNSPECIFIED": 0, - "INSTANCE": 1, - "AWS_ELB_LOAD_BALANCER": 2, -} - -func (x GroupResourceType) String() string { - return proto.EnumName(GroupResourceType_name, int32(x)) -} -func (GroupResourceType) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{1} } - -// This message configures which resources and services to monitor for -// availability. -type UptimeCheckConfig struct { - // A unique resource name for this UptimeCheckConfig. The format is: - // - // - // `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`. - // - // This field should be omitted when creating the uptime check configuration; - // on create, the resource name is assigned by the server and included in the - // response. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A human-friendly name for the uptime check configuration. The display name - // should be unique within a Stackdriver Account in order to make it easier - // to identify; however, uniqueness is not enforced. Required. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // The resource the check is checking. Required. - // - // Types that are valid to be assigned to Resource: - // *UptimeCheckConfig_MonitoredResource - // *UptimeCheckConfig_ResourceGroup_ - Resource isUptimeCheckConfig_Resource `protobuf_oneof:"resource"` - // The type of uptime check request. - // - // Types that are valid to be assigned to CheckRequestType: - // *UptimeCheckConfig_HttpCheck_ - // *UptimeCheckConfig_TcpCheck_ - CheckRequestType isUptimeCheckConfig_CheckRequestType `protobuf_oneof:"check_request_type"` - // How often the uptime check is performed. - // Currently, only 1, 5, 10, and 15 minutes are supported. Required. - Period *google_protobuf3.Duration `protobuf:"bytes,7,opt,name=period" json:"period,omitempty"` - // The maximum amount of time to wait for the request to complete (must be - // between 1 and 60 seconds). Required. - Timeout *google_protobuf3.Duration `protobuf:"bytes,8,opt,name=timeout" json:"timeout,omitempty"` - // The expected content on the page the check is run against. - // Currently, only the first entry in the list is supported, and other entries - // will be ignored. The server will look for an exact match of the string in - // the page response's content. This field is optional and should only be - // specified if a content match is required. - ContentMatchers []*UptimeCheckConfig_ContentMatcher `protobuf:"bytes,9,rep,name=content_matchers,json=contentMatchers" json:"content_matchers,omitempty"` - // The list of regions from which the check will be run. - // If this field is specified, enough regions to include a minimum of - // 3 locations must be provided, or an error message is returned. - // Not specifying this field will result in uptime checks running from all - // regions. - SelectedRegions []UptimeCheckRegion `protobuf:"varint,10,rep,packed,name=selected_regions,json=selectedRegions,enum=google.monitoring.v3.UptimeCheckRegion" json:"selected_regions,omitempty"` - // The internal checkers that this check will egress from. - InternalCheckers []*UptimeCheckConfig_InternalChecker `protobuf:"bytes,14,rep,name=internal_checkers,json=internalCheckers" json:"internal_checkers,omitempty"` -} - -func (m *UptimeCheckConfig) Reset() { *m = UptimeCheckConfig{} } -func (m *UptimeCheckConfig) String() string { return proto.CompactTextString(m) } -func (*UptimeCheckConfig) ProtoMessage() {} -func (*UptimeCheckConfig) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -type isUptimeCheckConfig_Resource interface { - isUptimeCheckConfig_Resource() -} -type isUptimeCheckConfig_CheckRequestType interface { - isUptimeCheckConfig_CheckRequestType() -} - -type UptimeCheckConfig_MonitoredResource struct { - MonitoredResource *google_api4.MonitoredResource `protobuf:"bytes,3,opt,name=monitored_resource,json=monitoredResource,oneof"` -} -type UptimeCheckConfig_ResourceGroup_ struct { - ResourceGroup *UptimeCheckConfig_ResourceGroup `protobuf:"bytes,4,opt,name=resource_group,json=resourceGroup,oneof"` -} -type UptimeCheckConfig_HttpCheck_ struct { - HttpCheck *UptimeCheckConfig_HttpCheck `protobuf:"bytes,5,opt,name=http_check,json=httpCheck,oneof"` -} -type UptimeCheckConfig_TcpCheck_ struct { - TcpCheck *UptimeCheckConfig_TcpCheck `protobuf:"bytes,6,opt,name=tcp_check,json=tcpCheck,oneof"` -} - -func (*UptimeCheckConfig_MonitoredResource) isUptimeCheckConfig_Resource() {} -func (*UptimeCheckConfig_ResourceGroup_) isUptimeCheckConfig_Resource() {} -func (*UptimeCheckConfig_HttpCheck_) isUptimeCheckConfig_CheckRequestType() {} -func (*UptimeCheckConfig_TcpCheck_) isUptimeCheckConfig_CheckRequestType() {} - -func (m *UptimeCheckConfig) GetResource() isUptimeCheckConfig_Resource { - if m != nil { - return m.Resource - } - return nil -} -func (m *UptimeCheckConfig) GetCheckRequestType() isUptimeCheckConfig_CheckRequestType { - if m != nil { - return m.CheckRequestType - } - return nil -} - -func (m *UptimeCheckConfig) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UptimeCheckConfig) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *UptimeCheckConfig) GetMonitoredResource() *google_api4.MonitoredResource { - if x, ok := m.GetResource().(*UptimeCheckConfig_MonitoredResource); ok { - return x.MonitoredResource - } - return nil -} - -func (m *UptimeCheckConfig) GetResourceGroup() *UptimeCheckConfig_ResourceGroup { - if x, ok := m.GetResource().(*UptimeCheckConfig_ResourceGroup_); ok { - return x.ResourceGroup - } - return nil -} - -func (m *UptimeCheckConfig) GetHttpCheck() *UptimeCheckConfig_HttpCheck { - if x, ok := m.GetCheckRequestType().(*UptimeCheckConfig_HttpCheck_); ok { - return x.HttpCheck - } - return nil -} - -func (m *UptimeCheckConfig) GetTcpCheck() *UptimeCheckConfig_TcpCheck { - if x, ok := m.GetCheckRequestType().(*UptimeCheckConfig_TcpCheck_); ok { - return x.TcpCheck - } - return nil -} - -func (m *UptimeCheckConfig) GetPeriod() *google_protobuf3.Duration { - if m != nil { - return m.Period - } - return nil -} - -func (m *UptimeCheckConfig) GetTimeout() *google_protobuf3.Duration { - if m != nil { - return m.Timeout - } - return nil -} - -func (m *UptimeCheckConfig) GetContentMatchers() []*UptimeCheckConfig_ContentMatcher { - if m != nil { - return m.ContentMatchers - } - return nil -} - -func (m *UptimeCheckConfig) GetSelectedRegions() []UptimeCheckRegion { - if m != nil { - return m.SelectedRegions - } - return nil -} - -func (m *UptimeCheckConfig) GetInternalCheckers() []*UptimeCheckConfig_InternalChecker { - if m != nil { - return m.InternalCheckers - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*UptimeCheckConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _UptimeCheckConfig_OneofMarshaler, _UptimeCheckConfig_OneofUnmarshaler, _UptimeCheckConfig_OneofSizer, []interface{}{ - (*UptimeCheckConfig_MonitoredResource)(nil), - (*UptimeCheckConfig_ResourceGroup_)(nil), - (*UptimeCheckConfig_HttpCheck_)(nil), - (*UptimeCheckConfig_TcpCheck_)(nil), - } -} - -func _UptimeCheckConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*UptimeCheckConfig) - // resource - switch x := m.Resource.(type) { - case *UptimeCheckConfig_MonitoredResource: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.MonitoredResource); err != nil { - return err - } - case *UptimeCheckConfig_ResourceGroup_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ResourceGroup); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("UptimeCheckConfig.Resource has unexpected type %T", x) - } - // check_request_type - switch x := m.CheckRequestType.(type) { - case *UptimeCheckConfig_HttpCheck_: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HttpCheck); err != nil { - return err - } - case *UptimeCheckConfig_TcpCheck_: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TcpCheck); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("UptimeCheckConfig.CheckRequestType has unexpected type %T", x) - } - return nil -} - -func _UptimeCheckConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*UptimeCheckConfig) - switch tag { - case 3: // resource.monitored_resource - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_api4.MonitoredResource) - err := b.DecodeMessage(msg) - m.Resource = &UptimeCheckConfig_MonitoredResource{msg} - return true, err - case 4: // resource.resource_group - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(UptimeCheckConfig_ResourceGroup) - err := b.DecodeMessage(msg) - m.Resource = &UptimeCheckConfig_ResourceGroup_{msg} - return true, err - case 5: // check_request_type.http_check - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(UptimeCheckConfig_HttpCheck) - err := b.DecodeMessage(msg) - m.CheckRequestType = &UptimeCheckConfig_HttpCheck_{msg} - return true, err - case 6: // check_request_type.tcp_check - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(UptimeCheckConfig_TcpCheck) - err := b.DecodeMessage(msg) - m.CheckRequestType = &UptimeCheckConfig_TcpCheck_{msg} - return true, err - default: - return false, nil - } -} - -func _UptimeCheckConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*UptimeCheckConfig) - // resource - switch x := m.Resource.(type) { - case *UptimeCheckConfig_MonitoredResource: - s := proto.Size(x.MonitoredResource) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *UptimeCheckConfig_ResourceGroup_: - s := proto.Size(x.ResourceGroup) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // check_request_type - switch x := m.CheckRequestType.(type) { - case *UptimeCheckConfig_HttpCheck_: - s := proto.Size(x.HttpCheck) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *UptimeCheckConfig_TcpCheck_: - s := proto.Size(x.TcpCheck) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The resource submessage for group checks. It can be used instead of a -// monitored resource, when multiple resources are being monitored. -type UptimeCheckConfig_ResourceGroup struct { - // The group of resources being monitored. Should be only the - // group_id, not projects/<project_id>/groups/<group_id>. - GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId" json:"group_id,omitempty"` - // The resource type of the group members. - ResourceType GroupResourceType `protobuf:"varint,2,opt,name=resource_type,json=resourceType,enum=google.monitoring.v3.GroupResourceType" json:"resource_type,omitempty"` -} - -func (m *UptimeCheckConfig_ResourceGroup) Reset() { *m = UptimeCheckConfig_ResourceGroup{} } -func (m *UptimeCheckConfig_ResourceGroup) String() string { return proto.CompactTextString(m) } -func (*UptimeCheckConfig_ResourceGroup) ProtoMessage() {} -func (*UptimeCheckConfig_ResourceGroup) Descriptor() ([]byte, []int) { - return fileDescriptor5, []int{0, 0} -} - -func (m *UptimeCheckConfig_ResourceGroup) GetGroupId() string { - if m != nil { - return m.GroupId - } - return "" -} - -func (m *UptimeCheckConfig_ResourceGroup) GetResourceType() GroupResourceType { - if m != nil { - return m.ResourceType - } - return GroupResourceType_RESOURCE_TYPE_UNSPECIFIED -} - -// Information involved in an HTTP/HTTPS uptime check request. -type UptimeCheckConfig_HttpCheck struct { - // If true, use HTTPS instead of HTTP to run the check. - UseSsl bool `protobuf:"varint,1,opt,name=use_ssl,json=useSsl" json:"use_ssl,omitempty"` - // The path to the page to run the check against. Will be combined with the - // host (specified within the MonitoredResource) and port to construct the - // full URL. Optional (defaults to "/"). - Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` - // The port to the page to run the check against. Will be combined with host - // (specified within the MonitoredResource) and path to construct the full - // URL. Optional (defaults to 80 without SSL, or 443 with SSL). - Port int32 `protobuf:"varint,3,opt,name=port" json:"port,omitempty"` - // The authentication information. Optional when creating an HTTP check; - // defaults to empty. - AuthInfo *UptimeCheckConfig_HttpCheck_BasicAuthentication `protobuf:"bytes,4,opt,name=auth_info,json=authInfo" json:"auth_info,omitempty"` - // Boolean specifiying whether to encrypt the header information. - // Encryption should be specified for any headers related to authentication - // that you do not wish to be seen when retrieving the configuration. The - // server will be responsible for encrypting the headers. - // On Get/List calls, if mask_headers is set to True then the headers - // will be obscured with ******. - MaskHeaders bool `protobuf:"varint,5,opt,name=mask_headers,json=maskHeaders" json:"mask_headers,omitempty"` - // The list of headers to send as part of the uptime check request. - // If two headers have the same key and different values, they should - // be entered as a single header, with the value being a comma-separated - // list of all the desired values as described at - // https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). - // Entering two separate headers with the same key in a Create call will - // cause the first to be overwritten by the second. - Headers map[string]string `protobuf:"bytes,6,rep,name=headers" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *UptimeCheckConfig_HttpCheck) Reset() { *m = UptimeCheckConfig_HttpCheck{} } -func (m *UptimeCheckConfig_HttpCheck) String() string { return proto.CompactTextString(m) } -func (*UptimeCheckConfig_HttpCheck) ProtoMessage() {} -func (*UptimeCheckConfig_HttpCheck) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 1} } - -func (m *UptimeCheckConfig_HttpCheck) GetUseSsl() bool { - if m != nil { - return m.UseSsl - } - return false -} - -func (m *UptimeCheckConfig_HttpCheck) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -func (m *UptimeCheckConfig_HttpCheck) GetPort() int32 { - if m != nil { - return m.Port - } - return 0 -} - -func (m *UptimeCheckConfig_HttpCheck) GetAuthInfo() *UptimeCheckConfig_HttpCheck_BasicAuthentication { - if m != nil { - return m.AuthInfo - } - return nil -} - -func (m *UptimeCheckConfig_HttpCheck) GetMaskHeaders() bool { - if m != nil { - return m.MaskHeaders - } - return false -} - -func (m *UptimeCheckConfig_HttpCheck) GetHeaders() map[string]string { - if m != nil { - return m.Headers - } - return nil -} - -// A type of authentication to perform against the specified resource or URL -// that uses username and password. -// Currently, only Basic authentication is supported in Uptime Monitoring. -type UptimeCheckConfig_HttpCheck_BasicAuthentication struct { - // The username to authenticate. - Username string `protobuf:"bytes,1,opt,name=username" json:"username,omitempty"` - // The password to authenticate. - Password string `protobuf:"bytes,2,opt,name=password" json:"password,omitempty"` -} - -func (m *UptimeCheckConfig_HttpCheck_BasicAuthentication) Reset() { - *m = UptimeCheckConfig_HttpCheck_BasicAuthentication{} -} -func (m *UptimeCheckConfig_HttpCheck_BasicAuthentication) String() string { - return proto.CompactTextString(m) -} -func (*UptimeCheckConfig_HttpCheck_BasicAuthentication) ProtoMessage() {} -func (*UptimeCheckConfig_HttpCheck_BasicAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor5, []int{0, 1, 0} -} - -func (m *UptimeCheckConfig_HttpCheck_BasicAuthentication) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *UptimeCheckConfig_HttpCheck_BasicAuthentication) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -// Information required for a TCP uptime check request. -type UptimeCheckConfig_TcpCheck struct { - // The port to the page to run the check against. Will be combined with host - // (specified within the MonitoredResource) to construct the full URL. - // Required. - Port int32 `protobuf:"varint,1,opt,name=port" json:"port,omitempty"` -} - -func (m *UptimeCheckConfig_TcpCheck) Reset() { *m = UptimeCheckConfig_TcpCheck{} } -func (m *UptimeCheckConfig_TcpCheck) String() string { return proto.CompactTextString(m) } -func (*UptimeCheckConfig_TcpCheck) ProtoMessage() {} -func (*UptimeCheckConfig_TcpCheck) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 2} } - -func (m *UptimeCheckConfig_TcpCheck) GetPort() int32 { - if m != nil { - return m.Port - } - return 0 -} - -// Used to perform string matching. Currently, this matches on the exact -// content. In the future, it can be expanded to allow for regular expressions -// and more complex matching. -type UptimeCheckConfig_ContentMatcher struct { - // String content to match - Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"` -} - -func (m *UptimeCheckConfig_ContentMatcher) Reset() { *m = UptimeCheckConfig_ContentMatcher{} } -func (m *UptimeCheckConfig_ContentMatcher) String() string { return proto.CompactTextString(m) } -func (*UptimeCheckConfig_ContentMatcher) ProtoMessage() {} -func (*UptimeCheckConfig_ContentMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor5, []int{0, 3} -} - -func (m *UptimeCheckConfig_ContentMatcher) GetContent() string { - if m != nil { - return m.Content - } - return "" -} - -// Nimbus InternalCheckers. -type UptimeCheckConfig_InternalChecker struct { - // The GCP project ID. Not necessarily the same as the project_id for the config. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The internal network to perform this uptime check on. - Network string `protobuf:"bytes,2,opt,name=network" json:"network,omitempty"` - // The GCP zone the uptime check should egress from. Only respected for - // internal uptime checks, where internal_network is specified. - GcpZone string `protobuf:"bytes,3,opt,name=gcp_zone,json=gcpZone" json:"gcp_zone,omitempty"` - // The checker ID. - CheckerId string `protobuf:"bytes,4,opt,name=checker_id,json=checkerId" json:"checker_id,omitempty"` - // The checker's human-readable name. - DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName" json:"display_name,omitempty"` -} - -func (m *UptimeCheckConfig_InternalChecker) Reset() { *m = UptimeCheckConfig_InternalChecker{} } -func (m *UptimeCheckConfig_InternalChecker) String() string { return proto.CompactTextString(m) } -func (*UptimeCheckConfig_InternalChecker) ProtoMessage() {} -func (*UptimeCheckConfig_InternalChecker) Descriptor() ([]byte, []int) { - return fileDescriptor5, []int{0, 4} -} - -func (m *UptimeCheckConfig_InternalChecker) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UptimeCheckConfig_InternalChecker) GetNetwork() string { - if m != nil { - return m.Network - } - return "" -} - -func (m *UptimeCheckConfig_InternalChecker) GetGcpZone() string { - if m != nil { - return m.GcpZone - } - return "" -} - -func (m *UptimeCheckConfig_InternalChecker) GetCheckerId() string { - if m != nil { - return m.CheckerId - } - return "" -} - -func (m *UptimeCheckConfig_InternalChecker) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -// Contains the region, location, and list of IP -// addresses where checkers in the location run from. -type UptimeCheckIp struct { - // A broad region category in which the IP address is located. - Region UptimeCheckRegion `protobuf:"varint,1,opt,name=region,enum=google.monitoring.v3.UptimeCheckRegion" json:"region,omitempty"` - // A more specific location within the region that typically encodes - // a particular city/town/metro (and its containing state/province or country) - // within the broader umbrella region category. - Location string `protobuf:"bytes,2,opt,name=location" json:"location,omitempty"` - // The IP address from which the uptime check originates. This is a full - // IP address (not an IP address range). Most IP addresses, as of this - // publication, are in IPv4 format; however, one should not rely on the - // IP addresses being in IPv4 format indefinitely and should support - // interpreting this field in either IPv4 or IPv6 format. - IpAddress string `protobuf:"bytes,3,opt,name=ip_address,json=ipAddress" json:"ip_address,omitempty"` -} - -func (m *UptimeCheckIp) Reset() { *m = UptimeCheckIp{} } -func (m *UptimeCheckIp) String() string { return proto.CompactTextString(m) } -func (*UptimeCheckIp) ProtoMessage() {} -func (*UptimeCheckIp) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} } - -func (m *UptimeCheckIp) GetRegion() UptimeCheckRegion { - if m != nil { - return m.Region - } - return UptimeCheckRegion_REGION_UNSPECIFIED -} - -func (m *UptimeCheckIp) GetLocation() string { - if m != nil { - return m.Location - } - return "" -} - -func (m *UptimeCheckIp) GetIpAddress() string { - if m != nil { - return m.IpAddress - } - return "" -} - -func init() { - proto.RegisterType((*UptimeCheckConfig)(nil), "google.monitoring.v3.UptimeCheckConfig") - proto.RegisterType((*UptimeCheckConfig_ResourceGroup)(nil), "google.monitoring.v3.UptimeCheckConfig.ResourceGroup") - proto.RegisterType((*UptimeCheckConfig_HttpCheck)(nil), "google.monitoring.v3.UptimeCheckConfig.HttpCheck") - proto.RegisterType((*UptimeCheckConfig_HttpCheck_BasicAuthentication)(nil), "google.monitoring.v3.UptimeCheckConfig.HttpCheck.BasicAuthentication") - proto.RegisterType((*UptimeCheckConfig_TcpCheck)(nil), "google.monitoring.v3.UptimeCheckConfig.TcpCheck") - proto.RegisterType((*UptimeCheckConfig_ContentMatcher)(nil), "google.monitoring.v3.UptimeCheckConfig.ContentMatcher") - proto.RegisterType((*UptimeCheckConfig_InternalChecker)(nil), "google.monitoring.v3.UptimeCheckConfig.InternalChecker") - proto.RegisterType((*UptimeCheckIp)(nil), "google.monitoring.v3.UptimeCheckIp") - proto.RegisterEnum("google.monitoring.v3.UptimeCheckRegion", UptimeCheckRegion_name, UptimeCheckRegion_value) - proto.RegisterEnum("google.monitoring.v3.GroupResourceType", GroupResourceType_name, GroupResourceType_value) -} - -func init() { proto.RegisterFile("google/monitoring/v3/uptime.proto", fileDescriptor5) } - -var fileDescriptor5 = []byte{ - // 1021 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xdd, 0x4e, 0xe3, 0x46, - 0x14, 0x5e, 0x13, 0xc8, 0xcf, 0x21, 0xb0, 0x66, 0x4a, 0xdb, 0x60, 0x89, 0x15, 0xbb, 0xbd, 0x28, - 0xe2, 0xc2, 0xe9, 0x12, 0xf5, 0x47, 0x5b, 0x69, 0x2b, 0x27, 0xb8, 0xc4, 0x12, 0x24, 0xd1, 0x84, - 0x6c, 0xdb, 0x2d, 0xaa, 0x65, 0xec, 0x21, 0x71, 0x49, 0x3c, 0xae, 0x67, 0xcc, 0x96, 0xbe, 0x42, - 0x1f, 0xa3, 0x17, 0x95, 0xfa, 0x04, 0x7d, 0x86, 0xbe, 0x4d, 0xdf, 0xa0, 0x9a, 0xf1, 0x4c, 0x20, - 0x40, 0xb5, 0x70, 0x37, 0xdf, 0xf9, 0xf9, 0xe6, 0x1c, 0x9f, 0x9f, 0x31, 0x3c, 0x1f, 0x53, 0x3a, - 0x9e, 0x92, 0xe6, 0x8c, 0x26, 0x31, 0xa7, 0x59, 0x9c, 0x8c, 0x9b, 0x97, 0xad, 0x66, 0x9e, 0xf2, - 0x78, 0x46, 0xec, 0x34, 0xa3, 0x9c, 0xa2, 0xcd, 0xc2, 0xc4, 0xbe, 0x36, 0xb1, 0x2f, 0x5b, 0xd6, - 0x27, 0xca, 0x31, 0x48, 0x63, 0xed, 0x4c, 0x22, 0x3f, 0x23, 0x8c, 0xe6, 0x59, 0xa8, 0x5c, 0xad, - 0x67, 0xca, 0x48, 0xa2, 0xb3, 0xfc, 0xbc, 0x19, 0xe5, 0x59, 0xc0, 0x63, 0x9a, 0x14, 0xfa, 0x17, - 0xff, 0xd6, 0x61, 0x63, 0x24, 0xef, 0xea, 0x4c, 0x48, 0x78, 0xd1, 0xa1, 0xc9, 0x79, 0x3c, 0x46, - 0x08, 0x96, 0x93, 0x60, 0x46, 0x1a, 0xc6, 0x8e, 0xb1, 0x5b, 0xc3, 0xf2, 0x8c, 0x9e, 0x43, 0x3d, - 0x8a, 0x59, 0x3a, 0x0d, 0xae, 0x7c, 0xa9, 0x5b, 0x92, 0xba, 0x55, 0x25, 0xeb, 0x09, 0x93, 0x1e, - 0xa0, 0xbb, 0x81, 0x34, 0x4a, 0x3b, 0xc6, 0xee, 0xea, 0xfe, 0xb6, 0xad, 0x92, 0x08, 0xd2, 0xd8, - 0x3e, 0xd6, 0x56, 0x58, 0x19, 0x75, 0x9f, 0xe0, 0x8d, 0xd9, 0x6d, 0x21, 0xfa, 0x09, 0xd6, 0x35, - 0x8b, 0x3f, 0xce, 0x68, 0x9e, 0x36, 0x96, 0x25, 0xd7, 0xe7, 0xf6, 0x7d, 0x1f, 0xc4, 0xbe, 0x93, - 0x87, 0xad, 0x99, 0x0e, 0x85, 0x73, 0xf7, 0x09, 0x5e, 0xcb, 0x6e, 0x0a, 0x10, 0x06, 0x98, 0x70, - 0x9e, 0xfa, 0xa1, 0x70, 0x69, 0xac, 0x48, 0xee, 0x97, 0x0f, 0xe5, 0xee, 0x72, 0x9e, 0x4a, 0xdc, - 0x35, 0x70, 0x6d, 0xa2, 0x01, 0xea, 0x43, 0x8d, 0x87, 0x9a, 0xb2, 0x2c, 0x29, 0x3f, 0x7b, 0x28, - 0xe5, 0x49, 0x38, 0x67, 0xac, 0x72, 0x75, 0x46, 0x2f, 0xa1, 0x9c, 0x92, 0x2c, 0xa6, 0x51, 0xa3, - 0x22, 0xd9, 0xb6, 0x34, 0x9b, 0x2e, 0xa9, 0x7d, 0xa0, 0x4a, 0x8a, 0x95, 0x21, 0x6a, 0x41, 0x45, - 0x50, 0xd3, 0x9c, 0x37, 0xaa, 0xef, 0xf3, 0xd1, 0x96, 0x28, 0x00, 0x33, 0xa4, 0x09, 0x27, 0x09, - 0xf7, 0x67, 0x01, 0x0f, 0x27, 0x24, 0x63, 0x8d, 0xda, 0x4e, 0x69, 0x77, 0x75, 0xff, 0x8b, 0x87, - 0xc6, 0xdf, 0x29, 0xfc, 0x8f, 0x0b, 0x77, 0xfc, 0x34, 0x5c, 0xc0, 0x0c, 0x61, 0x30, 0x19, 0x99, - 0x92, 0x90, 0xcb, 0xf6, 0x18, 0xc7, 0x34, 0x61, 0x0d, 0xd8, 0x29, 0xed, 0xae, 0xef, 0x7f, 0xfa, - 0xde, 0x2b, 0xb0, 0xb4, 0xc7, 0x4f, 0x35, 0x41, 0x81, 0x19, 0x8a, 0x60, 0x23, 0x4e, 0x38, 0xc9, - 0x92, 0x60, 0x5a, 0x7c, 0x74, 0x11, 0xf7, 0xba, 0x8c, 0xfb, 0xcb, 0x87, 0xc6, 0xed, 0x29, 0x82, - 0x4e, 0xe1, 0x8f, 0xcd, 0x78, 0x51, 0xc0, 0xac, 0x5f, 0x61, 0x6d, 0xa1, 0x97, 0xd0, 0x16, 0x54, - 0x65, 0x47, 0xfa, 0x71, 0xa4, 0xa6, 0xa4, 0x22, 0xb1, 0x17, 0xa1, 0x23, 0x98, 0xb7, 0x99, 0xcf, - 0xaf, 0xd2, 0x62, 0x52, 0xfe, 0x37, 0x45, 0x49, 0xa7, 0xb9, 0x4f, 0xae, 0x52, 0x82, 0xeb, 0xd9, - 0x0d, 0x64, 0xfd, 0x5d, 0x82, 0xda, 0xbc, 0xd5, 0xd0, 0xc7, 0x50, 0xc9, 0x19, 0xf1, 0x19, 0x9b, - 0xca, 0x5b, 0xab, 0xb8, 0x9c, 0x33, 0x32, 0x64, 0x53, 0x31, 0xb1, 0x69, 0xc0, 0x27, 0x6a, 0x2a, - 0xe5, 0x59, 0xca, 0x68, 0xc6, 0xe5, 0x00, 0xae, 0x60, 0x79, 0x46, 0x67, 0x50, 0x0b, 0x72, 0x3e, - 0xf1, 0xe3, 0xe4, 0x9c, 0xaa, 0x69, 0x72, 0x1f, 0xdd, 0xf1, 0x76, 0x3b, 0x60, 0x71, 0xe8, 0xe4, - 0x7c, 0x42, 0x12, 0x1e, 0x87, 0x45, 0x23, 0x55, 0x05, 0xaf, 0x97, 0x9c, 0x53, 0xb1, 0x29, 0x66, - 0x01, 0xbb, 0xf0, 0x27, 0x24, 0x88, 0x44, 0x35, 0x56, 0x64, 0xa4, 0xab, 0x42, 0xd6, 0x2d, 0x44, - 0xe8, 0x7b, 0xa8, 0x68, 0x6d, 0x59, 0xd6, 0xea, 0xf5, 0xe3, 0x83, 0x50, 0x5c, 0x6e, 0xc2, 0xb3, - 0x2b, 0xac, 0xe9, 0xac, 0x63, 0xf8, 0xe0, 0x9e, 0xe8, 0x90, 0x05, 0xd5, 0x9c, 0x89, 0x9a, 0xce, - 0xb7, 0xda, 0x1c, 0x0b, 0x5d, 0x1a, 0x30, 0xf6, 0x8e, 0x66, 0x91, 0xfa, 0x7e, 0x73, 0x6c, 0xbd, - 0x82, 0xfa, 0xcd, 0x7b, 0x90, 0x09, 0xa5, 0x0b, 0x72, 0xa5, 0x28, 0xc4, 0x11, 0x6d, 0xc2, 0xca, - 0x65, 0x30, 0xcd, 0xf5, 0x42, 0x2c, 0xc0, 0xab, 0xa5, 0xaf, 0x0c, 0xeb, 0x19, 0x54, 0xf5, 0x44, - 0xcf, 0x6b, 0x61, 0x5c, 0xd7, 0xc2, 0xda, 0x83, 0xf5, 0xc5, 0x89, 0x41, 0x0d, 0xa8, 0xa8, 0x99, - 0xd1, 0x4d, 0xa5, 0xa0, 0xf5, 0xa7, 0x01, 0x4f, 0x6f, 0xb5, 0x29, 0xda, 0x06, 0x48, 0x33, 0xfa, - 0x33, 0x09, 0xf9, 0x75, 0x17, 0xd6, 0x94, 0xc4, 0x8b, 0x04, 0x59, 0x42, 0xf8, 0x3b, 0x9a, 0x5d, - 0xa8, 0xd0, 0x34, 0x94, 0xcd, 0x1b, 0xa6, 0xfe, 0x6f, 0x34, 0x29, 0xb6, 0xb3, 0x68, 0xde, 0x30, - 0x7d, 0x4b, 0x13, 0x22, 0x38, 0xd5, 0x14, 0x09, 0xce, 0xe5, 0x82, 0x53, 0x49, 0xbc, 0xe8, 0xce, - 0x23, 0xb0, 0x72, 0xe7, 0x11, 0x68, 0x03, 0x54, 0x75, 0x03, 0xb7, 0x37, 0x01, 0x49, 0x5f, 0x3f, - 0x23, 0xbf, 0xe4, 0x84, 0x71, 0x39, 0x0f, 0x2f, 0x7e, 0x37, 0x60, 0xed, 0x46, 0x61, 0xbd, 0x14, - 0x7d, 0x03, 0xe5, 0x62, 0x1f, 0xc8, 0x2c, 0x1e, 0xb1, 0x0e, 0x94, 0x9b, 0x28, 0xe1, 0x94, 0x16, - 0xa5, 0xd6, 0x25, 0xd4, 0x58, 0xa4, 0x14, 0xa7, 0x7e, 0x10, 0x45, 0x19, 0x61, 0x4c, 0xe5, 0x5b, - 0x8b, 0x53, 0xa7, 0x10, 0xec, 0x91, 0x85, 0x07, 0xb0, 0xe0, 0x45, 0x1f, 0x01, 0xc2, 0xee, 0xa1, - 0xd7, 0xef, 0xf9, 0xa3, 0xde, 0x70, 0xe0, 0x76, 0xbc, 0x6f, 0x3d, 0xf7, 0xc0, 0x7c, 0x82, 0x2a, - 0x50, 0x1a, 0x0d, 0x1d, 0xd3, 0x40, 0x00, 0x65, 0x77, 0x84, 0xfb, 0x03, 0xd7, 0x5c, 0x42, 0x1b, - 0xb0, 0x36, 0xec, 0x8f, 0x4e, 0xba, 0xbe, 0x73, 0xec, 0x62, 0xaf, 0xe3, 0x98, 0x25, 0x64, 0x42, - 0xdd, 0x19, 0x7a, 0x8e, 0x3f, 0x70, 0x84, 0x6b, 0xc7, 0x5c, 0xde, 0xfb, 0x11, 0x36, 0xee, 0x8c, - 0x3a, 0xda, 0x86, 0x2d, 0xec, 0x0e, 0xfb, 0x23, 0xdc, 0x71, 0xfd, 0x93, 0x1f, 0x06, 0xee, 0xad, - 0xdb, 0xea, 0x50, 0xf5, 0x7a, 0xc3, 0x13, 0xa7, 0xd7, 0x71, 0x4d, 0x03, 0x6d, 0xc1, 0x87, 0xce, - 0x77, 0x43, 0xdf, 0x3d, 0x6a, 0xfb, 0x47, 0x7d, 0xe7, 0xc0, 0x6f, 0x3b, 0x47, 0x42, 0x83, 0xcd, - 0xa5, 0xf6, 0x1f, 0x06, 0x34, 0x42, 0x3a, 0xbb, 0xf7, 0xab, 0xb5, 0x57, 0x8b, 0xf4, 0x06, 0x62, - 0xf5, 0x0f, 0x8c, 0xb7, 0xaf, 0x95, 0xd1, 0x98, 0x4e, 0x83, 0x64, 0x6c, 0xd3, 0x6c, 0xdc, 0x1c, - 0x93, 0x44, 0x3e, 0x0c, 0xcd, 0x42, 0x15, 0xa4, 0x31, 0x5b, 0xfc, 0x1d, 0xf9, 0xfa, 0x1a, 0xfd, - 0xb5, 0x64, 0x1d, 0x16, 0x04, 0x9d, 0x29, 0xcd, 0x23, 0xfd, 0x94, 0x8b, 0xbb, 0xde, 0xb4, 0xfe, - 0xd1, 0xca, 0x53, 0xa9, 0x3c, 0xbd, 0x56, 0x9e, 0xbe, 0x69, 0x9d, 0x95, 0xe5, 0x25, 0xad, 0xff, - 0x02, 0x00, 0x00, 0xff, 0xff, 0xc9, 0xa5, 0xbc, 0x87, 0xf2, 0x08, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/uptime_service.pb.go b/vendor/google.golang.org/genproto/googleapis/monitoring/v3/uptime_service.pb.go deleted file mode 100644 index 5e2fb2a7..00000000 --- a/vendor/google.golang.org/genproto/googleapis/monitoring/v3/uptime_service.pb.go +++ /dev/null @@ -1,591 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/monitoring/v3/uptime_service.proto - -package monitoring - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf5 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The protocol for the `ListUptimeCheckConfigs` request. -type ListUptimeCheckConfigsRequest struct { - // The project whose uptime check configurations are listed. The format is - // - // `projects/[PROJECT_ID]`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The maximum number of results to return in a single response. The server - // may further constrain the maximum number of results returned in a single - // page. If the page_size is <=0, the server will decide the number of results - // to be returned. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If this field is not empty then it must contain the `nextPageToken` value - // returned by a previous call to this method. Using this field causes the - // method to return more results from the previous method call. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListUptimeCheckConfigsRequest) Reset() { *m = ListUptimeCheckConfigsRequest{} } -func (m *ListUptimeCheckConfigsRequest) String() string { return proto.CompactTextString(m) } -func (*ListUptimeCheckConfigsRequest) ProtoMessage() {} -func (*ListUptimeCheckConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} } - -func (m *ListUptimeCheckConfigsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListUptimeCheckConfigsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListUptimeCheckConfigsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The protocol for the `ListUptimeCheckConfigs` response. -type ListUptimeCheckConfigsResponse struct { - // The returned uptime check configurations. - UptimeCheckConfigs []*UptimeCheckConfig `protobuf:"bytes,1,rep,name=uptime_check_configs,json=uptimeCheckConfigs" json:"uptime_check_configs,omitempty"` - // This field represents the pagination token to retrieve the next page of - // results. If the value is empty, it means no further results for the - // request. To retrieve the next page of results, the value of the - // next_page_token is passed to the subsequent List method call (in the - // request message's page_token field). - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListUptimeCheckConfigsResponse) Reset() { *m = ListUptimeCheckConfigsResponse{} } -func (m *ListUptimeCheckConfigsResponse) String() string { return proto.CompactTextString(m) } -func (*ListUptimeCheckConfigsResponse) ProtoMessage() {} -func (*ListUptimeCheckConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} } - -func (m *ListUptimeCheckConfigsResponse) GetUptimeCheckConfigs() []*UptimeCheckConfig { - if m != nil { - return m.UptimeCheckConfigs - } - return nil -} - -func (m *ListUptimeCheckConfigsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The protocol for the `GetUptimeCheckConfig` request. -type GetUptimeCheckConfigRequest struct { - // The uptime check configuration to retrieve. The format is - // - // `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetUptimeCheckConfigRequest) Reset() { *m = GetUptimeCheckConfigRequest{} } -func (m *GetUptimeCheckConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetUptimeCheckConfigRequest) ProtoMessage() {} -func (*GetUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} } - -func (m *GetUptimeCheckConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The protocol for the `CreateUptimeCheckConfig` request. -type CreateUptimeCheckConfigRequest struct { - // The project in which to create the uptime check. The format is: - // - // `projects/[PROJECT_ID]`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The new uptime check configuration. - UptimeCheckConfig *UptimeCheckConfig `protobuf:"bytes,2,opt,name=uptime_check_config,json=uptimeCheckConfig" json:"uptime_check_config,omitempty"` -} - -func (m *CreateUptimeCheckConfigRequest) Reset() { *m = CreateUptimeCheckConfigRequest{} } -func (m *CreateUptimeCheckConfigRequest) String() string { return proto.CompactTextString(m) } -func (*CreateUptimeCheckConfigRequest) ProtoMessage() {} -func (*CreateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3} } - -func (m *CreateUptimeCheckConfigRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateUptimeCheckConfigRequest) GetUptimeCheckConfig() *UptimeCheckConfig { - if m != nil { - return m.UptimeCheckConfig - } - return nil -} - -// The protocol for the `UpdateUptimeCheckConfig` request. -type UpdateUptimeCheckConfigRequest struct { - // Optional. If present, only the listed fields in the current uptime check - // configuration are updated with values from the new configuration. If this - // field is empty, then the current configuration is completely replaced with - // the new configuration. - UpdateMask *google_protobuf5.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` - // Required. If an `"updateMask"` has been specified, this field gives - // the values for the set of fields mentioned in the `"updateMask"`. If an - // `"updateMask"` has not been given, this uptime check configuration replaces - // the current configuration. If a field is mentioned in `"updateMask`" but - // the corresonding field is omitted in this partial uptime check - // configuration, it has the effect of deleting/clearing the field from the - // configuration on the server. - UptimeCheckConfig *UptimeCheckConfig `protobuf:"bytes,3,opt,name=uptime_check_config,json=uptimeCheckConfig" json:"uptime_check_config,omitempty"` -} - -func (m *UpdateUptimeCheckConfigRequest) Reset() { *m = UpdateUptimeCheckConfigRequest{} } -func (m *UpdateUptimeCheckConfigRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateUptimeCheckConfigRequest) ProtoMessage() {} -func (*UpdateUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{4} } - -func (m *UpdateUptimeCheckConfigRequest) GetUpdateMask() *google_protobuf5.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -func (m *UpdateUptimeCheckConfigRequest) GetUptimeCheckConfig() *UptimeCheckConfig { - if m != nil { - return m.UptimeCheckConfig - } - return nil -} - -// The protocol for the `DeleteUptimeCheckConfig` request. -type DeleteUptimeCheckConfigRequest struct { - // The uptime check configuration to delete. The format is - // - // `projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteUptimeCheckConfigRequest) Reset() { *m = DeleteUptimeCheckConfigRequest{} } -func (m *DeleteUptimeCheckConfigRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteUptimeCheckConfigRequest) ProtoMessage() {} -func (*DeleteUptimeCheckConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{5} } - -func (m *DeleteUptimeCheckConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The protocol for the `ListUptimeCheckIps` request. -type ListUptimeCheckIpsRequest struct { - // The maximum number of results to return in a single response. The server - // may further constrain the maximum number of results returned in a single - // page. If the page_size is <=0, the server will decide the number of results - // to be returned. - // NOTE: this field is not yet implemented - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If this field is not empty then it must contain the `nextPageToken` value - // returned by a previous call to this method. Using this field causes the - // method to return more results from the previous method call. - // NOTE: this field is not yet implemented - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListUptimeCheckIpsRequest) Reset() { *m = ListUptimeCheckIpsRequest{} } -func (m *ListUptimeCheckIpsRequest) String() string { return proto.CompactTextString(m) } -func (*ListUptimeCheckIpsRequest) ProtoMessage() {} -func (*ListUptimeCheckIpsRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{6} } - -func (m *ListUptimeCheckIpsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListUptimeCheckIpsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The protocol for the `ListUptimeCheckIps` response. -type ListUptimeCheckIpsResponse struct { - // The returned list of IP addresses (including region and location) that the - // checkers run from. - UptimeCheckIps []*UptimeCheckIp `protobuf:"bytes,1,rep,name=uptime_check_ips,json=uptimeCheckIps" json:"uptime_check_ips,omitempty"` - // This field represents the pagination token to retrieve the next page of - // results. If the value is empty, it means no further results for the - // request. To retrieve the next page of results, the value of the - // next_page_token is passed to the subsequent List method call (in the - // request message's page_token field). - // NOTE: this field is not yet implemented - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListUptimeCheckIpsResponse) Reset() { *m = ListUptimeCheckIpsResponse{} } -func (m *ListUptimeCheckIpsResponse) String() string { return proto.CompactTextString(m) } -func (*ListUptimeCheckIpsResponse) ProtoMessage() {} -func (*ListUptimeCheckIpsResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{7} } - -func (m *ListUptimeCheckIpsResponse) GetUptimeCheckIps() []*UptimeCheckIp { - if m != nil { - return m.UptimeCheckIps - } - return nil -} - -func (m *ListUptimeCheckIpsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -func init() { - proto.RegisterType((*ListUptimeCheckConfigsRequest)(nil), "google.monitoring.v3.ListUptimeCheckConfigsRequest") - proto.RegisterType((*ListUptimeCheckConfigsResponse)(nil), "google.monitoring.v3.ListUptimeCheckConfigsResponse") - proto.RegisterType((*GetUptimeCheckConfigRequest)(nil), "google.monitoring.v3.GetUptimeCheckConfigRequest") - proto.RegisterType((*CreateUptimeCheckConfigRequest)(nil), "google.monitoring.v3.CreateUptimeCheckConfigRequest") - proto.RegisterType((*UpdateUptimeCheckConfigRequest)(nil), "google.monitoring.v3.UpdateUptimeCheckConfigRequest") - proto.RegisterType((*DeleteUptimeCheckConfigRequest)(nil), "google.monitoring.v3.DeleteUptimeCheckConfigRequest") - proto.RegisterType((*ListUptimeCheckIpsRequest)(nil), "google.monitoring.v3.ListUptimeCheckIpsRequest") - proto.RegisterType((*ListUptimeCheckIpsResponse)(nil), "google.monitoring.v3.ListUptimeCheckIpsResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for UptimeCheckService service - -type UptimeCheckServiceClient interface { - // Lists the existing valid uptime check configurations for the project, - // leaving out any invalid configurations. - ListUptimeCheckConfigs(ctx context.Context, in *ListUptimeCheckConfigsRequest, opts ...grpc.CallOption) (*ListUptimeCheckConfigsResponse, error) - // Gets a single uptime check configuration. - GetUptimeCheckConfig(ctx context.Context, in *GetUptimeCheckConfigRequest, opts ...grpc.CallOption) (*UptimeCheckConfig, error) - // Creates a new uptime check configuration. - CreateUptimeCheckConfig(ctx context.Context, in *CreateUptimeCheckConfigRequest, opts ...grpc.CallOption) (*UptimeCheckConfig, error) - // Updates an uptime check configuration. You can either replace the entire - // configuration with a new one or replace only certain fields in the current - // configuration by specifying the fields to be updated via `"updateMask"`. - // Returns the updated configuration. - UpdateUptimeCheckConfig(ctx context.Context, in *UpdateUptimeCheckConfigRequest, opts ...grpc.CallOption) (*UptimeCheckConfig, error) - // Deletes an uptime check configuration. Note that this method will fail - // if the uptime check configuration is referenced by an alert policy or - // other dependent configs that would be rendered invalid by the deletion. - DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Returns the list of IPs that checkers run from - ListUptimeCheckIps(ctx context.Context, in *ListUptimeCheckIpsRequest, opts ...grpc.CallOption) (*ListUptimeCheckIpsResponse, error) -} - -type uptimeCheckServiceClient struct { - cc *grpc.ClientConn -} - -func NewUptimeCheckServiceClient(cc *grpc.ClientConn) UptimeCheckServiceClient { - return &uptimeCheckServiceClient{cc} -} - -func (c *uptimeCheckServiceClient) ListUptimeCheckConfigs(ctx context.Context, in *ListUptimeCheckConfigsRequest, opts ...grpc.CallOption) (*ListUptimeCheckConfigsResponse, error) { - out := new(ListUptimeCheckConfigsResponse) - err := grpc.Invoke(ctx, "/google.monitoring.v3.UptimeCheckService/ListUptimeCheckConfigs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *uptimeCheckServiceClient) GetUptimeCheckConfig(ctx context.Context, in *GetUptimeCheckConfigRequest, opts ...grpc.CallOption) (*UptimeCheckConfig, error) { - out := new(UptimeCheckConfig) - err := grpc.Invoke(ctx, "/google.monitoring.v3.UptimeCheckService/GetUptimeCheckConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *uptimeCheckServiceClient) CreateUptimeCheckConfig(ctx context.Context, in *CreateUptimeCheckConfigRequest, opts ...grpc.CallOption) (*UptimeCheckConfig, error) { - out := new(UptimeCheckConfig) - err := grpc.Invoke(ctx, "/google.monitoring.v3.UptimeCheckService/CreateUptimeCheckConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *uptimeCheckServiceClient) UpdateUptimeCheckConfig(ctx context.Context, in *UpdateUptimeCheckConfigRequest, opts ...grpc.CallOption) (*UptimeCheckConfig, error) { - out := new(UptimeCheckConfig) - err := grpc.Invoke(ctx, "/google.monitoring.v3.UptimeCheckService/UpdateUptimeCheckConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *uptimeCheckServiceClient) DeleteUptimeCheckConfig(ctx context.Context, in *DeleteUptimeCheckConfigRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.monitoring.v3.UptimeCheckService/DeleteUptimeCheckConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *uptimeCheckServiceClient) ListUptimeCheckIps(ctx context.Context, in *ListUptimeCheckIpsRequest, opts ...grpc.CallOption) (*ListUptimeCheckIpsResponse, error) { - out := new(ListUptimeCheckIpsResponse) - err := grpc.Invoke(ctx, "/google.monitoring.v3.UptimeCheckService/ListUptimeCheckIps", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for UptimeCheckService service - -type UptimeCheckServiceServer interface { - // Lists the existing valid uptime check configurations for the project, - // leaving out any invalid configurations. - ListUptimeCheckConfigs(context.Context, *ListUptimeCheckConfigsRequest) (*ListUptimeCheckConfigsResponse, error) - // Gets a single uptime check configuration. - GetUptimeCheckConfig(context.Context, *GetUptimeCheckConfigRequest) (*UptimeCheckConfig, error) - // Creates a new uptime check configuration. - CreateUptimeCheckConfig(context.Context, *CreateUptimeCheckConfigRequest) (*UptimeCheckConfig, error) - // Updates an uptime check configuration. You can either replace the entire - // configuration with a new one or replace only certain fields in the current - // configuration by specifying the fields to be updated via `"updateMask"`. - // Returns the updated configuration. - UpdateUptimeCheckConfig(context.Context, *UpdateUptimeCheckConfigRequest) (*UptimeCheckConfig, error) - // Deletes an uptime check configuration. Note that this method will fail - // if the uptime check configuration is referenced by an alert policy or - // other dependent configs that would be rendered invalid by the deletion. - DeleteUptimeCheckConfig(context.Context, *DeleteUptimeCheckConfigRequest) (*google_protobuf4.Empty, error) - // Returns the list of IPs that checkers run from - ListUptimeCheckIps(context.Context, *ListUptimeCheckIpsRequest) (*ListUptimeCheckIpsResponse, error) -} - -func RegisterUptimeCheckServiceServer(s *grpc.Server, srv UptimeCheckServiceServer) { - s.RegisterService(&_UptimeCheckService_serviceDesc, srv) -} - -func _UptimeCheckService_ListUptimeCheckConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListUptimeCheckConfigsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UptimeCheckServiceServer).ListUptimeCheckConfigs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.UptimeCheckService/ListUptimeCheckConfigs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UptimeCheckServiceServer).ListUptimeCheckConfigs(ctx, req.(*ListUptimeCheckConfigsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UptimeCheckService_GetUptimeCheckConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetUptimeCheckConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UptimeCheckServiceServer).GetUptimeCheckConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.UptimeCheckService/GetUptimeCheckConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UptimeCheckServiceServer).GetUptimeCheckConfig(ctx, req.(*GetUptimeCheckConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UptimeCheckService_CreateUptimeCheckConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateUptimeCheckConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UptimeCheckServiceServer).CreateUptimeCheckConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.UptimeCheckService/CreateUptimeCheckConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UptimeCheckServiceServer).CreateUptimeCheckConfig(ctx, req.(*CreateUptimeCheckConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UptimeCheckService_UpdateUptimeCheckConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateUptimeCheckConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UptimeCheckServiceServer).UpdateUptimeCheckConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.UptimeCheckService/UpdateUptimeCheckConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UptimeCheckServiceServer).UpdateUptimeCheckConfig(ctx, req.(*UpdateUptimeCheckConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UptimeCheckService_DeleteUptimeCheckConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteUptimeCheckConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UptimeCheckServiceServer).DeleteUptimeCheckConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.UptimeCheckService/DeleteUptimeCheckConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UptimeCheckServiceServer).DeleteUptimeCheckConfig(ctx, req.(*DeleteUptimeCheckConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _UptimeCheckService_ListUptimeCheckIps_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListUptimeCheckIpsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UptimeCheckServiceServer).ListUptimeCheckIps(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.monitoring.v3.UptimeCheckService/ListUptimeCheckIps", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UptimeCheckServiceServer).ListUptimeCheckIps(ctx, req.(*ListUptimeCheckIpsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _UptimeCheckService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.monitoring.v3.UptimeCheckService", - HandlerType: (*UptimeCheckServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListUptimeCheckConfigs", - Handler: _UptimeCheckService_ListUptimeCheckConfigs_Handler, - }, - { - MethodName: "GetUptimeCheckConfig", - Handler: _UptimeCheckService_GetUptimeCheckConfig_Handler, - }, - { - MethodName: "CreateUptimeCheckConfig", - Handler: _UptimeCheckService_CreateUptimeCheckConfig_Handler, - }, - { - MethodName: "UpdateUptimeCheckConfig", - Handler: _UptimeCheckService_UpdateUptimeCheckConfig_Handler, - }, - { - MethodName: "DeleteUptimeCheckConfig", - Handler: _UptimeCheckService_DeleteUptimeCheckConfig_Handler, - }, - { - MethodName: "ListUptimeCheckIps", - Handler: _UptimeCheckService_ListUptimeCheckIps_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/monitoring/v3/uptime_service.proto", -} - -func init() { proto.RegisterFile("google/monitoring/v3/uptime_service.proto", fileDescriptor6) } - -var fileDescriptor6 = []byte{ - // 735 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdf, 0x4e, 0x13, 0x4f, - 0x14, 0xce, 0xb4, 0xfc, 0x08, 0x1c, 0xf2, 0xf3, 0xcf, 0xd8, 0x40, 0x5d, 0xa4, 0xa9, 0x35, 0x51, - 0x6c, 0xcc, 0xae, 0xb4, 0x5c, 0x49, 0x24, 0x91, 0xaa, 0x84, 0x44, 0x12, 0x52, 0x04, 0xa2, 0x92, - 0x34, 0x4b, 0x19, 0xd6, 0xb5, 0xed, 0xce, 0xd8, 0x99, 0x25, 0x8a, 0xe1, 0xc6, 0x37, 0x30, 0x5c, - 0x7a, 0x69, 0xe2, 0x05, 0x0f, 0xa0, 0xd7, 0x5e, 0x99, 0x78, 0x6b, 0x7c, 0x03, 0x1f, 0xc4, 0xec, - 0xec, 0x2c, 0xa5, 0xed, 0xec, 0xba, 0x8d, 0x77, 0xdd, 0x39, 0x67, 0xce, 0xf9, 0xce, 0xb7, 0xdf, - 0xf9, 0xba, 0x70, 0xdb, 0xa1, 0xd4, 0x69, 0x13, 0xab, 0x43, 0x3d, 0x57, 0xd0, 0xae, 0xeb, 0x39, - 0xd6, 0x61, 0xd5, 0xf2, 0x99, 0x70, 0x3b, 0xa4, 0xc1, 0x49, 0xf7, 0xd0, 0x6d, 0x12, 0x93, 0x75, - 0xa9, 0xa0, 0x38, 0x17, 0xa6, 0x9a, 0xbd, 0x54, 0xf3, 0xb0, 0x6a, 0x5c, 0x53, 0x05, 0x6c, 0xe6, - 0x5a, 0xb6, 0xe7, 0x51, 0x61, 0x0b, 0x97, 0x7a, 0x3c, 0xbc, 0x63, 0x5c, 0x4f, 0x28, 0xaf, 0x52, - 0x66, 0x55, 0x8a, 0x7c, 0xda, 0xf3, 0x0f, 0x2c, 0xd2, 0x61, 0xe2, 0xad, 0x0a, 0x16, 0x07, 0x83, - 0x07, 0x2e, 0x69, 0xef, 0x37, 0x3a, 0x36, 0x6f, 0x85, 0x19, 0x25, 0x0e, 0x73, 0x4f, 0x5c, 0x2e, - 0xb6, 0x64, 0xc9, 0xda, 0x4b, 0xd2, 0x6c, 0xd5, 0xa8, 0x77, 0xe0, 0x3a, 0xbc, 0x4e, 0x5e, 0xfb, - 0x84, 0x0b, 0x3c, 0x0d, 0xe3, 0xcc, 0xee, 0x12, 0x4f, 0xe4, 0x51, 0x11, 0xcd, 0x4f, 0xd6, 0xd5, - 0x13, 0x9e, 0x85, 0x49, 0x66, 0x3b, 0xa4, 0xc1, 0xdd, 0x23, 0x92, 0xcf, 0x16, 0xd1, 0xfc, 0x7f, - 0xf5, 0x89, 0xe0, 0x60, 0xd3, 0x3d, 0x22, 0x78, 0x0e, 0x40, 0x06, 0x05, 0x6d, 0x11, 0x2f, 0x3f, - 0x26, 0x2f, 0xca, 0xf4, 0xa7, 0xc1, 0x41, 0xe9, 0x13, 0x82, 0x42, 0x5c, 0x57, 0xce, 0xa8, 0xc7, - 0x09, 0x7e, 0x06, 0x39, 0xc5, 0x62, 0x33, 0x08, 0x37, 0x9a, 0x61, 0x3c, 0x8f, 0x8a, 0xd9, 0xf9, - 0xa9, 0xca, 0x2d, 0x53, 0x47, 0xa6, 0x39, 0x54, 0xaf, 0x8e, 0xfd, 0xa1, 0x16, 0xf8, 0x26, 0x5c, - 0xf4, 0xc8, 0x1b, 0xd1, 0x38, 0x87, 0x30, 0x23, 0x11, 0xfe, 0x1f, 0x1c, 0x6f, 0x9c, 0xa1, 0x5c, - 0x80, 0xd9, 0x55, 0x32, 0x8c, 0x31, 0x22, 0x06, 0xc3, 0x98, 0x67, 0x77, 0x88, 0xa2, 0x45, 0xfe, - 0x2e, 0x7d, 0x40, 0x50, 0xa8, 0x75, 0x89, 0x2d, 0x48, 0xec, 0xb5, 0x38, 0x3e, 0x77, 0xe0, 0x8a, - 0x66, 0x60, 0x89, 0x6c, 0x84, 0x79, 0x2f, 0x0f, 0xcd, 0x5b, 0xfa, 0x82, 0xa0, 0xb0, 0xc5, 0xf6, - 0x93, 0x30, 0x2d, 0xc1, 0x94, 0x2f, 0x33, 0xa4, 0x32, 0x54, 0x4f, 0x23, 0xea, 0x19, 0x89, 0xc7, - 0x7c, 0x1c, 0x88, 0x67, 0xdd, 0xe6, 0xad, 0x3a, 0x84, 0xe9, 0xc1, 0xef, 0x38, 0xe0, 0xd9, 0x7f, - 0x06, 0xbe, 0x08, 0x85, 0x87, 0xa4, 0x4d, 0x12, 0x70, 0xeb, 0x5e, 0xc1, 0x0e, 0x5c, 0x1d, 0x90, - 0xd6, 0x1a, 0x3b, 0x13, 0x73, 0x9f, 0x68, 0x33, 0x89, 0xa2, 0xcd, 0x0e, 0x8a, 0xf6, 0x04, 0x81, - 0xa1, 0xab, 0xac, 0x04, 0xbb, 0x0e, 0x97, 0xfa, 0x68, 0x70, 0x59, 0x24, 0xd6, 0x1b, 0x7f, 0xe5, - 0x60, 0x8d, 0xd5, 0x2f, 0xf8, 0x7d, 0x65, 0xd3, 0x8a, 0xb4, 0xf2, 0x7d, 0x02, 0xf0, 0xb9, 0x4a, - 0x9b, 0xa1, 0xe5, 0xe0, 0xaf, 0x08, 0xa6, 0xf5, 0x1b, 0x86, 0xab, 0x7a, 0x38, 0x89, 0x2e, 0x60, - 0x2c, 0x8e, 0x76, 0x29, 0xe4, 0xa4, 0x54, 0x79, 0xff, 0xf3, 0xf7, 0x49, 0xe6, 0x0e, 0x2e, 0x07, - 0xae, 0xf5, 0x2e, 0x14, 0xfa, 0x7d, 0xd6, 0xa5, 0xaf, 0x48, 0x53, 0x70, 0xab, 0x7c, 0x6c, 0x69, - 0xb6, 0xf3, 0x33, 0x82, 0x9c, 0x6e, 0xed, 0xf0, 0x82, 0x1e, 0x42, 0xc2, 0x8a, 0x1a, 0x69, 0xd5, - 0x37, 0x00, 0x34, 0xd0, 0xd1, 0x39, 0x98, 0x1a, 0x94, 0x56, 0xf9, 0x18, 0x7f, 0x43, 0x30, 0x13, - 0xb3, 0xeb, 0x38, 0x86, 0xae, 0x64, 0x6b, 0x48, 0x0f, 0x77, 0x55, 0xc2, 0x7d, 0x50, 0x1a, 0x81, - 0xd7, 0x7b, 0xba, 0x25, 0xc5, 0xbf, 0x10, 0xcc, 0xc4, 0x78, 0x43, 0xdc, 0x0c, 0xc9, 0x56, 0x92, - 0x7e, 0x86, 0x17, 0x72, 0x86, 0xad, 0xca, 0xb2, 0x9c, 0x41, 0x03, 0xce, 0x4c, 0xf5, 0x1a, 0xf4, - 0x73, 0x7d, 0x44, 0x30, 0x13, 0xe3, 0x1d, 0x71, 0x73, 0x25, 0x5b, 0x8d, 0x31, 0x3d, 0xe4, 0x86, - 0x8f, 0x82, 0xff, 0xd9, 0x48, 0x39, 0xe5, 0x51, 0x94, 0x73, 0x82, 0x00, 0x0f, 0x3b, 0x09, 0xb6, - 0x52, 0xed, 0x58, 0xcf, 0xcd, 0x8c, 0xbb, 0xe9, 0x2f, 0xa8, 0x85, 0x34, 0x24, 0xda, 0x1c, 0xc6, - 0xbd, 0xcf, 0x88, 0x28, 0x67, 0xe5, 0x14, 0x41, 0xbe, 0x49, 0x3b, 0xda, 0x9a, 0x2b, 0xca, 0x63, - 0x94, 0xbd, 0x6c, 0x04, 0x1c, 0x6c, 0xa0, 0xe7, 0xcb, 0x2a, 0xd7, 0xa1, 0x6d, 0xdb, 0x73, 0x4c, - 0xda, 0x75, 0x2c, 0x87, 0x78, 0x92, 0x21, 0x2b, 0x0c, 0xd9, 0xcc, 0xe5, 0xfd, 0x5f, 0x2f, 0x4b, - 0xbd, 0xa7, 0xd3, 0x8c, 0xb1, 0x1a, 0x16, 0xa8, 0xb5, 0xa9, 0xbf, 0x6f, 0xae, 0xf7, 0x5a, 0x6e, - 0x57, 0x7f, 0x44, 0xc1, 0x5d, 0x19, 0xdc, 0xed, 0x05, 0x77, 0xb7, 0xab, 0x7b, 0xe3, 0xb2, 0x49, - 0xf5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x1d, 0x15, 0x69, 0x80, 0x09, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta1/dlp.pb.go b/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta1/dlp.pb.go deleted file mode 100644 index 7d2fc2fd..00000000 --- a/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta1/dlp.pb.go +++ /dev/null @@ -1,5610 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/privacy/dlp/v2beta1/dlp.proto - -/* -Package dlp is a generated protocol buffer package. - -It is generated from these files: - google/privacy/dlp/v2beta1/dlp.proto - google/privacy/dlp/v2beta1/storage.proto - -It has these top-level messages: - InspectConfig - OperationConfig - ContentItem - Table - InspectResult - Finding - Location - TableLocation - Range - ImageLocation - RedactContentRequest - Color - RedactContentResponse - DeidentifyContentRequest - DeidentifyContentResponse - InspectContentRequest - InspectContentResponse - CreateInspectOperationRequest - OutputStorageConfig - InfoTypeStatistics - InspectOperationMetadata - InspectOperationResult - ListInspectFindingsRequest - ListInspectFindingsResponse - InfoTypeDescription - ListInfoTypesRequest - ListInfoTypesResponse - CategoryDescription - ListRootCategoriesRequest - ListRootCategoriesResponse - AnalyzeDataSourceRiskRequest - PrivacyMetric - RiskAnalysisOperationMetadata - RiskAnalysisOperationResult - ValueFrequency - Value - DeidentifyConfig - PrimitiveTransformation - TimePartConfig - CryptoHashConfig - ReplaceValueConfig - ReplaceWithInfoTypeConfig - RedactConfig - CharsToIgnore - CharacterMaskConfig - FixedSizeBucketingConfig - BucketingConfig - CryptoReplaceFfxFpeConfig - CryptoKey - TransientCryptoKey - UnwrappedCryptoKey - KmsWrappedCryptoKey - InfoTypeTransformations - FieldTransformation - RecordTransformations - RecordSuppression - RecordCondition - DeidentificationSummary - TransformationSummary - InfoType - CustomInfoType - FieldId - PartitionId - KindExpression - PropertyReference - Projection - DatastoreOptions - CloudStorageOptions - CloudStoragePath - BigQueryOptions - StorageConfig - CloudStorageKey - DatastoreKey - Key - RecordKey - BigQueryTable - EntityId -*/ -package dlp - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import _ "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" -import google_type "google.golang.org/genproto/googleapis/type/date" -import google_type1 "google.golang.org/genproto/googleapis/type/timeofday" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Categorization of results based on how likely they are to represent a match, -// based on the number of elements they contain which imply a match. -type Likelihood int32 - -const ( - // Default value; information with all likelihoods is included. - Likelihood_LIKELIHOOD_UNSPECIFIED Likelihood = 0 - // Few matching elements. - Likelihood_VERY_UNLIKELY Likelihood = 1 - Likelihood_UNLIKELY Likelihood = 2 - // Some matching elements. - Likelihood_POSSIBLE Likelihood = 3 - Likelihood_LIKELY Likelihood = 4 - // Many matching elements. - Likelihood_VERY_LIKELY Likelihood = 5 -) - -var Likelihood_name = map[int32]string{ - 0: "LIKELIHOOD_UNSPECIFIED", - 1: "VERY_UNLIKELY", - 2: "UNLIKELY", - 3: "POSSIBLE", - 4: "LIKELY", - 5: "VERY_LIKELY", -} -var Likelihood_value = map[string]int32{ - "LIKELIHOOD_UNSPECIFIED": 0, - "VERY_UNLIKELY": 1, - "UNLIKELY": 2, - "POSSIBLE": 3, - "LIKELY": 4, - "VERY_LIKELY": 5, -} - -func (x Likelihood) String() string { - return proto.EnumName(Likelihood_name, int32(x)) -} -func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Operators available for comparing the value of fields. -type RelationalOperator int32 - -const ( - RelationalOperator_RELATIONAL_OPERATOR_UNSPECIFIED RelationalOperator = 0 - // Equal. - RelationalOperator_EQUAL_TO RelationalOperator = 1 - // Not equal to. - RelationalOperator_NOT_EQUAL_TO RelationalOperator = 2 - // Greater than. - RelationalOperator_GREATER_THAN RelationalOperator = 3 - // Less than. - RelationalOperator_LESS_THAN RelationalOperator = 4 - // Greater than or equals. - RelationalOperator_GREATER_THAN_OR_EQUALS RelationalOperator = 5 - // Less than or equals. - RelationalOperator_LESS_THAN_OR_EQUALS RelationalOperator = 6 - // Exists - RelationalOperator_EXISTS RelationalOperator = 7 -) - -var RelationalOperator_name = map[int32]string{ - 0: "RELATIONAL_OPERATOR_UNSPECIFIED", - 1: "EQUAL_TO", - 2: "NOT_EQUAL_TO", - 3: "GREATER_THAN", - 4: "LESS_THAN", - 5: "GREATER_THAN_OR_EQUALS", - 6: "LESS_THAN_OR_EQUALS", - 7: "EXISTS", -} -var RelationalOperator_value = map[string]int32{ - "RELATIONAL_OPERATOR_UNSPECIFIED": 0, - "EQUAL_TO": 1, - "NOT_EQUAL_TO": 2, - "GREATER_THAN": 3, - "LESS_THAN": 4, - "GREATER_THAN_OR_EQUALS": 5, - "LESS_THAN_OR_EQUALS": 6, - "EXISTS": 7, -} - -func (x RelationalOperator) String() string { - return proto.EnumName(RelationalOperator_name, int32(x)) -} -func (RelationalOperator) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type TimePartConfig_TimePart int32 - -const ( - TimePartConfig_TIME_PART_UNSPECIFIED TimePartConfig_TimePart = 0 - // [000-9999] - TimePartConfig_YEAR TimePartConfig_TimePart = 1 - // [1-12] - TimePartConfig_MONTH TimePartConfig_TimePart = 2 - // [1-31] - TimePartConfig_DAY_OF_MONTH TimePartConfig_TimePart = 3 - // [1-7] - TimePartConfig_DAY_OF_WEEK TimePartConfig_TimePart = 4 - // [1-52] - TimePartConfig_WEEK_OF_YEAR TimePartConfig_TimePart = 5 - // [0-24] - TimePartConfig_HOUR_OF_DAY TimePartConfig_TimePart = 6 -) - -var TimePartConfig_TimePart_name = map[int32]string{ - 0: "TIME_PART_UNSPECIFIED", - 1: "YEAR", - 2: "MONTH", - 3: "DAY_OF_MONTH", - 4: "DAY_OF_WEEK", - 5: "WEEK_OF_YEAR", - 6: "HOUR_OF_DAY", -} -var TimePartConfig_TimePart_value = map[string]int32{ - "TIME_PART_UNSPECIFIED": 0, - "YEAR": 1, - "MONTH": 2, - "DAY_OF_MONTH": 3, - "DAY_OF_WEEK": 4, - "WEEK_OF_YEAR": 5, - "HOUR_OF_DAY": 6, -} - -func (x TimePartConfig_TimePart) String() string { - return proto.EnumName(TimePartConfig_TimePart_name, int32(x)) -} -func (TimePartConfig_TimePart) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{38, 0} } - -type CharsToIgnore_CharacterGroup int32 - -const ( - CharsToIgnore_CHARACTER_GROUP_UNSPECIFIED CharsToIgnore_CharacterGroup = 0 - // 0-9 - CharsToIgnore_NUMERIC CharsToIgnore_CharacterGroup = 1 - // A-Z - CharsToIgnore_ALPHA_UPPER_CASE CharsToIgnore_CharacterGroup = 2 - // a-z - CharsToIgnore_ALPHA_LOWER_CASE CharsToIgnore_CharacterGroup = 3 - // US Punctuation, one of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ - CharsToIgnore_PUNCTUATION CharsToIgnore_CharacterGroup = 4 - // Whitespace character, one of [ \t\n\x0B\f\r] - CharsToIgnore_WHITESPACE CharsToIgnore_CharacterGroup = 5 -) - -var CharsToIgnore_CharacterGroup_name = map[int32]string{ - 0: "CHARACTER_GROUP_UNSPECIFIED", - 1: "NUMERIC", - 2: "ALPHA_UPPER_CASE", - 3: "ALPHA_LOWER_CASE", - 4: "PUNCTUATION", - 5: "WHITESPACE", -} -var CharsToIgnore_CharacterGroup_value = map[string]int32{ - "CHARACTER_GROUP_UNSPECIFIED": 0, - "NUMERIC": 1, - "ALPHA_UPPER_CASE": 2, - "ALPHA_LOWER_CASE": 3, - "PUNCTUATION": 4, - "WHITESPACE": 5, -} - -func (x CharsToIgnore_CharacterGroup) String() string { - return proto.EnumName(CharsToIgnore_CharacterGroup_name, int32(x)) -} -func (CharsToIgnore_CharacterGroup) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{43, 0} -} - -// These are commonly used subsets of the alphabet that the FFX mode -// natively supports. In the algorithm, the alphabet is selected using -// the "radix". Therefore each corresponds to particular radix. -type CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet int32 - -const ( - CryptoReplaceFfxFpeConfig_FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 0 - // [0-9] (radix of 10) - CryptoReplaceFfxFpeConfig_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 1 - // [0-9A-F] (radix of 16) - CryptoReplaceFfxFpeConfig_HEXADECIMAL CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 2 - // [0-9A-Z] (radix of 36) - CryptoReplaceFfxFpeConfig_UPPER_CASE_ALPHA_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 3 - // [0-9A-Za-z] (radix of 62) - CryptoReplaceFfxFpeConfig_ALPHA_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 4 -) - -var CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name = map[int32]string{ - 0: "FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED", - 1: "NUMERIC", - 2: "HEXADECIMAL", - 3: "UPPER_CASE_ALPHA_NUMERIC", - 4: "ALPHA_NUMERIC", -} -var CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_value = map[string]int32{ - "FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED": 0, - "NUMERIC": 1, - "HEXADECIMAL": 2, - "UPPER_CASE_ALPHA_NUMERIC": 3, - "ALPHA_NUMERIC": 4, -} - -func (x CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) String() string { - return proto.EnumName(CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name, int32(x)) -} -func (CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{47, 0} -} - -type RecordCondition_Expressions_LogicalOperator int32 - -const ( - RecordCondition_Expressions_LOGICAL_OPERATOR_UNSPECIFIED RecordCondition_Expressions_LogicalOperator = 0 - RecordCondition_Expressions_AND RecordCondition_Expressions_LogicalOperator = 1 -) - -var RecordCondition_Expressions_LogicalOperator_name = map[int32]string{ - 0: "LOGICAL_OPERATOR_UNSPECIFIED", - 1: "AND", -} -var RecordCondition_Expressions_LogicalOperator_value = map[string]int32{ - "LOGICAL_OPERATOR_UNSPECIFIED": 0, - "AND": 1, -} - -func (x RecordCondition_Expressions_LogicalOperator) String() string { - return proto.EnumName(RecordCondition_Expressions_LogicalOperator_name, int32(x)) -} -func (RecordCondition_Expressions_LogicalOperator) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{56, 2, 0} -} - -// Possible outcomes of transformations. -type TransformationSummary_TransformationResultCode int32 - -const ( - TransformationSummary_TRANSFORMATION_RESULT_CODE_UNSPECIFIED TransformationSummary_TransformationResultCode = 0 - TransformationSummary_SUCCESS TransformationSummary_TransformationResultCode = 1 - TransformationSummary_ERROR TransformationSummary_TransformationResultCode = 2 -) - -var TransformationSummary_TransformationResultCode_name = map[int32]string{ - 0: "TRANSFORMATION_RESULT_CODE_UNSPECIFIED", - 1: "SUCCESS", - 2: "ERROR", -} -var TransformationSummary_TransformationResultCode_value = map[string]int32{ - "TRANSFORMATION_RESULT_CODE_UNSPECIFIED": 0, - "SUCCESS": 1, - "ERROR": 2, -} - -func (x TransformationSummary_TransformationResultCode) String() string { - return proto.EnumName(TransformationSummary_TransformationResultCode_name, int32(x)) -} -func (TransformationSummary_TransformationResultCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{58, 0} -} - -// Configuration description of the scanning process. -// When used with redactContent only info_types and min_likelihood are currently -// used. -type InspectConfig struct { - // Restricts what info_types to look for. The values must correspond to - // InfoType values returned by ListInfoTypes or found in documentation. - // Empty info_types runs all enabled detectors. - InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` - // Only returns findings equal or above this threshold. - MinLikelihood Likelihood `protobuf:"varint,2,opt,name=min_likelihood,json=minLikelihood,enum=google.privacy.dlp.v2beta1.Likelihood" json:"min_likelihood,omitempty"` - // Limits the number of findings per content item or long running operation. - MaxFindings int32 `protobuf:"varint,3,opt,name=max_findings,json=maxFindings" json:"max_findings,omitempty"` - // When true, a contextual quote from the data that triggered a finding is - // included in the response; see Finding.quote. - IncludeQuote bool `protobuf:"varint,4,opt,name=include_quote,json=includeQuote" json:"include_quote,omitempty"` - // When true, excludes type information of the findings. - ExcludeTypes bool `protobuf:"varint,6,opt,name=exclude_types,json=excludeTypes" json:"exclude_types,omitempty"` - // Configuration of findings limit given for specified info types. - InfoTypeLimits []*InspectConfig_InfoTypeLimit `protobuf:"bytes,7,rep,name=info_type_limits,json=infoTypeLimits" json:"info_type_limits,omitempty"` - // Custom info types provided by the user. - CustomInfoTypes []*CustomInfoType `protobuf:"bytes,8,rep,name=custom_info_types,json=customInfoTypes" json:"custom_info_types,omitempty"` -} - -func (m *InspectConfig) Reset() { *m = InspectConfig{} } -func (m *InspectConfig) String() string { return proto.CompactTextString(m) } -func (*InspectConfig) ProtoMessage() {} -func (*InspectConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *InspectConfig) GetInfoTypes() []*InfoType { - if m != nil { - return m.InfoTypes - } - return nil -} - -func (m *InspectConfig) GetMinLikelihood() Likelihood { - if m != nil { - return m.MinLikelihood - } - return Likelihood_LIKELIHOOD_UNSPECIFIED -} - -func (m *InspectConfig) GetMaxFindings() int32 { - if m != nil { - return m.MaxFindings - } - return 0 -} - -func (m *InspectConfig) GetIncludeQuote() bool { - if m != nil { - return m.IncludeQuote - } - return false -} - -func (m *InspectConfig) GetExcludeTypes() bool { - if m != nil { - return m.ExcludeTypes - } - return false -} - -func (m *InspectConfig) GetInfoTypeLimits() []*InspectConfig_InfoTypeLimit { - if m != nil { - return m.InfoTypeLimits - } - return nil -} - -func (m *InspectConfig) GetCustomInfoTypes() []*CustomInfoType { - if m != nil { - return m.CustomInfoTypes - } - return nil -} - -// Max findings configuration per info type, per content item or long running -// operation. -type InspectConfig_InfoTypeLimit struct { - // Type of information the findings limit applies to. Only one limit per - // info_type should be provided. If InfoTypeLimit does not have an - // info_type, the DLP API applies the limit against all info_types that are - // found but not specified in another InfoTypeLimit. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Max findings limit for the given infoType. - MaxFindings int32 `protobuf:"varint,2,opt,name=max_findings,json=maxFindings" json:"max_findings,omitempty"` -} - -func (m *InspectConfig_InfoTypeLimit) Reset() { *m = InspectConfig_InfoTypeLimit{} } -func (m *InspectConfig_InfoTypeLimit) String() string { return proto.CompactTextString(m) } -func (*InspectConfig_InfoTypeLimit) ProtoMessage() {} -func (*InspectConfig_InfoTypeLimit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -func (m *InspectConfig_InfoTypeLimit) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *InspectConfig_InfoTypeLimit) GetMaxFindings() int32 { - if m != nil { - return m.MaxFindings - } - return 0 -} - -// Additional configuration for inspect long running operations. -type OperationConfig struct { - // Max number of findings per file, Datastore entity, or database row. - MaxItemFindings int64 `protobuf:"varint,1,opt,name=max_item_findings,json=maxItemFindings" json:"max_item_findings,omitempty"` -} - -func (m *OperationConfig) Reset() { *m = OperationConfig{} } -func (m *OperationConfig) String() string { return proto.CompactTextString(m) } -func (*OperationConfig) ProtoMessage() {} -func (*OperationConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *OperationConfig) GetMaxItemFindings() int64 { - if m != nil { - return m.MaxItemFindings - } - return 0 -} - -// Container structure for the content to inspect. -type ContentItem struct { - // Type of the content, as defined in Content-Type HTTP header. - // Supported types are: all "text" types, octet streams, PNG images, - // JPEG images. - Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` - // Data of the item either in the byte array or UTF-8 string form. - // - // Types that are valid to be assigned to DataItem: - // *ContentItem_Data - // *ContentItem_Value - // *ContentItem_Table - DataItem isContentItem_DataItem `protobuf_oneof:"data_item"` -} - -func (m *ContentItem) Reset() { *m = ContentItem{} } -func (m *ContentItem) String() string { return proto.CompactTextString(m) } -func (*ContentItem) ProtoMessage() {} -func (*ContentItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isContentItem_DataItem interface { - isContentItem_DataItem() -} - -type ContentItem_Data struct { - Data []byte `protobuf:"bytes,2,opt,name=data,proto3,oneof"` -} -type ContentItem_Value struct { - Value string `protobuf:"bytes,3,opt,name=value,oneof"` -} -type ContentItem_Table struct { - Table *Table `protobuf:"bytes,4,opt,name=table,oneof"` -} - -func (*ContentItem_Data) isContentItem_DataItem() {} -func (*ContentItem_Value) isContentItem_DataItem() {} -func (*ContentItem_Table) isContentItem_DataItem() {} - -func (m *ContentItem) GetDataItem() isContentItem_DataItem { - if m != nil { - return m.DataItem - } - return nil -} - -func (m *ContentItem) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *ContentItem) GetData() []byte { - if x, ok := m.GetDataItem().(*ContentItem_Data); ok { - return x.Data - } - return nil -} - -func (m *ContentItem) GetValue() string { - if x, ok := m.GetDataItem().(*ContentItem_Value); ok { - return x.Value - } - return "" -} - -func (m *ContentItem) GetTable() *Table { - if x, ok := m.GetDataItem().(*ContentItem_Table); ok { - return x.Table - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ContentItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ContentItem_OneofMarshaler, _ContentItem_OneofUnmarshaler, _ContentItem_OneofSizer, []interface{}{ - (*ContentItem_Data)(nil), - (*ContentItem_Value)(nil), - (*ContentItem_Table)(nil), - } -} - -func _ContentItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ContentItem) - // data_item - switch x := m.DataItem.(type) { - case *ContentItem_Data: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Data) - case *ContentItem_Value: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Value) - case *ContentItem_Table: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Table); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ContentItem.DataItem has unexpected type %T", x) - } - return nil -} - -func _ContentItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ContentItem) - switch tag { - case 2: // data_item.data - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.DataItem = &ContentItem_Data{x} - return true, err - case 3: // data_item.value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.DataItem = &ContentItem_Value{x} - return true, err - case 4: // data_item.table - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Table) - err := b.DecodeMessage(msg) - m.DataItem = &ContentItem_Table{msg} - return true, err - default: - return false, nil - } -} - -func _ContentItem_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ContentItem) - // data_item - switch x := m.DataItem.(type) { - case *ContentItem_Data: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Data))) - n += len(x.Data) - case *ContentItem_Value: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Value))) - n += len(x.Value) - case *ContentItem_Table: - s := proto.Size(x.Table) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Structured content to inspect. Up to 50,000 `Value`s per request allowed. -type Table struct { - Headers []*FieldId `protobuf:"bytes,1,rep,name=headers" json:"headers,omitempty"` - Rows []*Table_Row `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"` -} - -func (m *Table) Reset() { *m = Table{} } -func (m *Table) String() string { return proto.CompactTextString(m) } -func (*Table) ProtoMessage() {} -func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Table) GetHeaders() []*FieldId { - if m != nil { - return m.Headers - } - return nil -} - -func (m *Table) GetRows() []*Table_Row { - if m != nil { - return m.Rows - } - return nil -} - -type Table_Row struct { - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` -} - -func (m *Table_Row) Reset() { *m = Table_Row{} } -func (m *Table_Row) String() string { return proto.CompactTextString(m) } -func (*Table_Row) ProtoMessage() {} -func (*Table_Row) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} } - -func (m *Table_Row) GetValues() []*Value { - if m != nil { - return m.Values - } - return nil -} - -// All the findings for a single scanned item. -type InspectResult struct { - // List of findings for an item. - Findings []*Finding `protobuf:"bytes,1,rep,name=findings" json:"findings,omitempty"` - // If true, then this item might have more findings than were returned, - // and the findings returned are an arbitrary subset of all findings. - // The findings list might be truncated because the input items were too - // large, or because the server reached the maximum amount of resources - // allowed for a single API call. For best results, divide the input into - // smaller batches. - FindingsTruncated bool `protobuf:"varint,2,opt,name=findings_truncated,json=findingsTruncated" json:"findings_truncated,omitempty"` -} - -func (m *InspectResult) Reset() { *m = InspectResult{} } -func (m *InspectResult) String() string { return proto.CompactTextString(m) } -func (*InspectResult) ProtoMessage() {} -func (*InspectResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *InspectResult) GetFindings() []*Finding { - if m != nil { - return m.Findings - } - return nil -} - -func (m *InspectResult) GetFindingsTruncated() bool { - if m != nil { - return m.FindingsTruncated - } - return false -} - -// Container structure describing a single finding within a string or image. -type Finding struct { - // The specific string that may be potentially sensitive info. - Quote string `protobuf:"bytes,1,opt,name=quote" json:"quote,omitempty"` - // The specific type of info the string might be. - InfoType *InfoType `protobuf:"bytes,2,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Estimate of how likely it is that the info_type is correct. - Likelihood Likelihood `protobuf:"varint,3,opt,name=likelihood,enum=google.privacy.dlp.v2beta1.Likelihood" json:"likelihood,omitempty"` - // Location of the info found. - Location *Location `protobuf:"bytes,4,opt,name=location" json:"location,omitempty"` - // Timestamp when finding was detected. - CreateTime *google_protobuf3.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"` -} - -func (m *Finding) Reset() { *m = Finding{} } -func (m *Finding) String() string { return proto.CompactTextString(m) } -func (*Finding) ProtoMessage() {} -func (*Finding) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *Finding) GetQuote() string { - if m != nil { - return m.Quote - } - return "" -} - -func (m *Finding) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *Finding) GetLikelihood() Likelihood { - if m != nil { - return m.Likelihood - } - return Likelihood_LIKELIHOOD_UNSPECIFIED -} - -func (m *Finding) GetLocation() *Location { - if m != nil { - return m.Location - } - return nil -} - -func (m *Finding) GetCreateTime() *google_protobuf3.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -// Specifies the location of a finding within its source item. -type Location struct { - // Zero-based byte offsets within a content item. - ByteRange *Range `protobuf:"bytes,1,opt,name=byte_range,json=byteRange" json:"byte_range,omitempty"` - // Character offsets within a content item, included when content type - // is a text. Default charset assumed to be UTF-8. - CodepointRange *Range `protobuf:"bytes,2,opt,name=codepoint_range,json=codepointRange" json:"codepoint_range,omitempty"` - // Location within an image's pixels. - ImageBoxes []*ImageLocation `protobuf:"bytes,3,rep,name=image_boxes,json=imageBoxes" json:"image_boxes,omitempty"` - // Key of the finding. - RecordKey *RecordKey `protobuf:"bytes,4,opt,name=record_key,json=recordKey" json:"record_key,omitempty"` - // Field id of the field containing the finding. - FieldId *FieldId `protobuf:"bytes,5,opt,name=field_id,json=fieldId" json:"field_id,omitempty"` - // Location within a `ContentItem.Table`. - TableLocation *TableLocation `protobuf:"bytes,6,opt,name=table_location,json=tableLocation" json:"table_location,omitempty"` -} - -func (m *Location) Reset() { *m = Location{} } -func (m *Location) String() string { return proto.CompactTextString(m) } -func (*Location) ProtoMessage() {} -func (*Location) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *Location) GetByteRange() *Range { - if m != nil { - return m.ByteRange - } - return nil -} - -func (m *Location) GetCodepointRange() *Range { - if m != nil { - return m.CodepointRange - } - return nil -} - -func (m *Location) GetImageBoxes() []*ImageLocation { - if m != nil { - return m.ImageBoxes - } - return nil -} - -func (m *Location) GetRecordKey() *RecordKey { - if m != nil { - return m.RecordKey - } - return nil -} - -func (m *Location) GetFieldId() *FieldId { - if m != nil { - return m.FieldId - } - return nil -} - -func (m *Location) GetTableLocation() *TableLocation { - if m != nil { - return m.TableLocation - } - return nil -} - -// Location of a finding within a `ContentItem.Table`. -type TableLocation struct { - // The zero-based index of the row where the finding is located. - RowIndex int64 `protobuf:"varint,1,opt,name=row_index,json=rowIndex" json:"row_index,omitempty"` -} - -func (m *TableLocation) Reset() { *m = TableLocation{} } -func (m *TableLocation) String() string { return proto.CompactTextString(m) } -func (*TableLocation) ProtoMessage() {} -func (*TableLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *TableLocation) GetRowIndex() int64 { - if m != nil { - return m.RowIndex - } - return 0 -} - -// Generic half-open interval [start, end) -type Range struct { - // Index of the first character of the range (inclusive). - Start int64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` - // Index of the last character of the range (exclusive). - End int64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` -} - -func (m *Range) Reset() { *m = Range{} } -func (m *Range) String() string { return proto.CompactTextString(m) } -func (*Range) ProtoMessage() {} -func (*Range) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *Range) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *Range) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -// Bounding box encompassing detected text within an image. -type ImageLocation struct { - // Top coordinate of the bounding box. (0,0) is upper left. - Top int32 `protobuf:"varint,1,opt,name=top" json:"top,omitempty"` - // Left coordinate of the bounding box. (0,0) is upper left. - Left int32 `protobuf:"varint,2,opt,name=left" json:"left,omitempty"` - // Width of the bounding box in pixels. - Width int32 `protobuf:"varint,3,opt,name=width" json:"width,omitempty"` - // Height of the bounding box in pixels. - Height int32 `protobuf:"varint,4,opt,name=height" json:"height,omitempty"` -} - -func (m *ImageLocation) Reset() { *m = ImageLocation{} } -func (m *ImageLocation) String() string { return proto.CompactTextString(m) } -func (*ImageLocation) ProtoMessage() {} -func (*ImageLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ImageLocation) GetTop() int32 { - if m != nil { - return m.Top - } - return 0 -} - -func (m *ImageLocation) GetLeft() int32 { - if m != nil { - return m.Left - } - return 0 -} - -func (m *ImageLocation) GetWidth() int32 { - if m != nil { - return m.Width - } - return 0 -} - -func (m *ImageLocation) GetHeight() int32 { - if m != nil { - return m.Height - } - return 0 -} - -// Request to search for potentially sensitive info in a list of items -// and replace it with a default or provided content. -type RedactContentRequest struct { - // Configuration for the inspector. - InspectConfig *InspectConfig `protobuf:"bytes,1,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // The list of items to inspect. Up to 100 are allowed per request. - Items []*ContentItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"` - // The strings to replace findings text findings with. Must specify at least - // one of these or one ImageRedactionConfig if redacting images. - ReplaceConfigs []*RedactContentRequest_ReplaceConfig `protobuf:"bytes,3,rep,name=replace_configs,json=replaceConfigs" json:"replace_configs,omitempty"` - // The configuration for specifying what content to redact from images. - ImageRedactionConfigs []*RedactContentRequest_ImageRedactionConfig `protobuf:"bytes,4,rep,name=image_redaction_configs,json=imageRedactionConfigs" json:"image_redaction_configs,omitempty"` -} - -func (m *RedactContentRequest) Reset() { *m = RedactContentRequest{} } -func (m *RedactContentRequest) String() string { return proto.CompactTextString(m) } -func (*RedactContentRequest) ProtoMessage() {} -func (*RedactContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *RedactContentRequest) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *RedactContentRequest) GetItems() []*ContentItem { - if m != nil { - return m.Items - } - return nil -} - -func (m *RedactContentRequest) GetReplaceConfigs() []*RedactContentRequest_ReplaceConfig { - if m != nil { - return m.ReplaceConfigs - } - return nil -} - -func (m *RedactContentRequest) GetImageRedactionConfigs() []*RedactContentRequest_ImageRedactionConfig { - if m != nil { - return m.ImageRedactionConfigs - } - return nil -} - -type RedactContentRequest_ReplaceConfig struct { - // Type of information to replace. Only one ReplaceConfig per info_type - // should be provided. If ReplaceConfig does not have an info_type, the DLP - // API matches it against all info_types that are found but not specified in - // another ReplaceConfig. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Content replacing sensitive information of given type. Max 256 chars. - ReplaceWith string `protobuf:"bytes,2,opt,name=replace_with,json=replaceWith" json:"replace_with,omitempty"` -} - -func (m *RedactContentRequest_ReplaceConfig) Reset() { *m = RedactContentRequest_ReplaceConfig{} } -func (m *RedactContentRequest_ReplaceConfig) String() string { return proto.CompactTextString(m) } -func (*RedactContentRequest_ReplaceConfig) ProtoMessage() {} -func (*RedactContentRequest_ReplaceConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{10, 0} -} - -func (m *RedactContentRequest_ReplaceConfig) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *RedactContentRequest_ReplaceConfig) GetReplaceWith() string { - if m != nil { - return m.ReplaceWith - } - return "" -} - -// Configuration for determining how redaction of images should occur. -type RedactContentRequest_ImageRedactionConfig struct { - // Type of information to redact from images. - // - // Types that are valid to be assigned to Target: - // *RedactContentRequest_ImageRedactionConfig_InfoType - // *RedactContentRequest_ImageRedactionConfig_RedactAllText - Target isRedactContentRequest_ImageRedactionConfig_Target `protobuf_oneof:"target"` - // The color to use when redacting content from an image. If not specified, - // the default is black. - RedactionColor *Color `protobuf:"bytes,3,opt,name=redaction_color,json=redactionColor" json:"redaction_color,omitempty"` -} - -func (m *RedactContentRequest_ImageRedactionConfig) Reset() { - *m = RedactContentRequest_ImageRedactionConfig{} -} -func (m *RedactContentRequest_ImageRedactionConfig) String() string { return proto.CompactTextString(m) } -func (*RedactContentRequest_ImageRedactionConfig) ProtoMessage() {} -func (*RedactContentRequest_ImageRedactionConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{10, 1} -} - -type isRedactContentRequest_ImageRedactionConfig_Target interface { - isRedactContentRequest_ImageRedactionConfig_Target() -} - -type RedactContentRequest_ImageRedactionConfig_InfoType struct { - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,oneof"` -} -type RedactContentRequest_ImageRedactionConfig_RedactAllText struct { - RedactAllText bool `protobuf:"varint,2,opt,name=redact_all_text,json=redactAllText,oneof"` -} - -func (*RedactContentRequest_ImageRedactionConfig_InfoType) isRedactContentRequest_ImageRedactionConfig_Target() { -} -func (*RedactContentRequest_ImageRedactionConfig_RedactAllText) isRedactContentRequest_ImageRedactionConfig_Target() { -} - -func (m *RedactContentRequest_ImageRedactionConfig) GetTarget() isRedactContentRequest_ImageRedactionConfig_Target { - if m != nil { - return m.Target - } - return nil -} - -func (m *RedactContentRequest_ImageRedactionConfig) GetInfoType() *InfoType { - if x, ok := m.GetTarget().(*RedactContentRequest_ImageRedactionConfig_InfoType); ok { - return x.InfoType - } - return nil -} - -func (m *RedactContentRequest_ImageRedactionConfig) GetRedactAllText() bool { - if x, ok := m.GetTarget().(*RedactContentRequest_ImageRedactionConfig_RedactAllText); ok { - return x.RedactAllText - } - return false -} - -func (m *RedactContentRequest_ImageRedactionConfig) GetRedactionColor() *Color { - if m != nil { - return m.RedactionColor - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RedactContentRequest_ImageRedactionConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RedactContentRequest_ImageRedactionConfig_OneofMarshaler, _RedactContentRequest_ImageRedactionConfig_OneofUnmarshaler, _RedactContentRequest_ImageRedactionConfig_OneofSizer, []interface{}{ - (*RedactContentRequest_ImageRedactionConfig_InfoType)(nil), - (*RedactContentRequest_ImageRedactionConfig_RedactAllText)(nil), - } -} - -func _RedactContentRequest_ImageRedactionConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RedactContentRequest_ImageRedactionConfig) - // target - switch x := m.Target.(type) { - case *RedactContentRequest_ImageRedactionConfig_InfoType: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InfoType); err != nil { - return err - } - case *RedactContentRequest_ImageRedactionConfig_RedactAllText: - t := uint64(0) - if x.RedactAllText { - t = 1 - } - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("RedactContentRequest_ImageRedactionConfig.Target has unexpected type %T", x) - } - return nil -} - -func _RedactContentRequest_ImageRedactionConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RedactContentRequest_ImageRedactionConfig) - switch tag { - case 1: // target.info_type - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InfoType) - err := b.DecodeMessage(msg) - m.Target = &RedactContentRequest_ImageRedactionConfig_InfoType{msg} - return true, err - case 2: // target.redact_all_text - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Target = &RedactContentRequest_ImageRedactionConfig_RedactAllText{x != 0} - return true, err - default: - return false, nil - } -} - -func _RedactContentRequest_ImageRedactionConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RedactContentRequest_ImageRedactionConfig) - // target - switch x := m.Target.(type) { - case *RedactContentRequest_ImageRedactionConfig_InfoType: - s := proto.Size(x.InfoType) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RedactContentRequest_ImageRedactionConfig_RedactAllText: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents a color in the RGB color space. -type Color struct { - // The amount of red in the color as a value in the interval [0, 1]. - Red float32 `protobuf:"fixed32,1,opt,name=red" json:"red,omitempty"` - // The amount of green in the color as a value in the interval [0, 1]. - Green float32 `protobuf:"fixed32,2,opt,name=green" json:"green,omitempty"` - // The amount of blue in the color as a value in the interval [0, 1]. - Blue float32 `protobuf:"fixed32,3,opt,name=blue" json:"blue,omitempty"` -} - -func (m *Color) Reset() { *m = Color{} } -func (m *Color) String() string { return proto.CompactTextString(m) } -func (*Color) ProtoMessage() {} -func (*Color) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *Color) GetRed() float32 { - if m != nil { - return m.Red - } - return 0 -} - -func (m *Color) GetGreen() float32 { - if m != nil { - return m.Green - } - return 0 -} - -func (m *Color) GetBlue() float32 { - if m != nil { - return m.Blue - } - return 0 -} - -// Results of redacting a list of items. -type RedactContentResponse struct { - // The redacted content. - Items []*ContentItem `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"` -} - -func (m *RedactContentResponse) Reset() { *m = RedactContentResponse{} } -func (m *RedactContentResponse) String() string { return proto.CompactTextString(m) } -func (*RedactContentResponse) ProtoMessage() {} -func (*RedactContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *RedactContentResponse) GetItems() []*ContentItem { - if m != nil { - return m.Items - } - return nil -} - -// Request to de-identify a list of items. -type DeidentifyContentRequest struct { - // Configuration for the de-identification of the list of content items. - DeidentifyConfig *DeidentifyConfig `protobuf:"bytes,1,opt,name=deidentify_config,json=deidentifyConfig" json:"deidentify_config,omitempty"` - // Configuration for the inspector. - InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // The list of items to inspect. Up to 100 are allowed per request. - // All items will be treated as text/*. - Items []*ContentItem `protobuf:"bytes,3,rep,name=items" json:"items,omitempty"` -} - -func (m *DeidentifyContentRequest) Reset() { *m = DeidentifyContentRequest{} } -func (m *DeidentifyContentRequest) String() string { return proto.CompactTextString(m) } -func (*DeidentifyContentRequest) ProtoMessage() {} -func (*DeidentifyContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *DeidentifyContentRequest) GetDeidentifyConfig() *DeidentifyConfig { - if m != nil { - return m.DeidentifyConfig - } - return nil -} - -func (m *DeidentifyContentRequest) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *DeidentifyContentRequest) GetItems() []*ContentItem { - if m != nil { - return m.Items - } - return nil -} - -// Results of de-identifying a list of items. -type DeidentifyContentResponse struct { - Items []*ContentItem `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"` - // A review of the transformations that took place for each item. - Summaries []*DeidentificationSummary `protobuf:"bytes,2,rep,name=summaries" json:"summaries,omitempty"` -} - -func (m *DeidentifyContentResponse) Reset() { *m = DeidentifyContentResponse{} } -func (m *DeidentifyContentResponse) String() string { return proto.CompactTextString(m) } -func (*DeidentifyContentResponse) ProtoMessage() {} -func (*DeidentifyContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *DeidentifyContentResponse) GetItems() []*ContentItem { - if m != nil { - return m.Items - } - return nil -} - -func (m *DeidentifyContentResponse) GetSummaries() []*DeidentificationSummary { - if m != nil { - return m.Summaries - } - return nil -} - -// Request to search for potentially sensitive info in a list of items. -type InspectContentRequest struct { - // Configuration for the inspector. - InspectConfig *InspectConfig `protobuf:"bytes,1,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // The list of items to inspect. Items in a single request are - // considered "related" unless inspect_config.independent_inputs is true. - // Up to 100 are allowed per request. - Items []*ContentItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"` -} - -func (m *InspectContentRequest) Reset() { *m = InspectContentRequest{} } -func (m *InspectContentRequest) String() string { return proto.CompactTextString(m) } -func (*InspectContentRequest) ProtoMessage() {} -func (*InspectContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *InspectContentRequest) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *InspectContentRequest) GetItems() []*ContentItem { - if m != nil { - return m.Items - } - return nil -} - -// Results of inspecting a list of items. -type InspectContentResponse struct { - // Each content_item from the request has a result in this list, in the - // same order as the request. - Results []*InspectResult `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"` -} - -func (m *InspectContentResponse) Reset() { *m = InspectContentResponse{} } -func (m *InspectContentResponse) String() string { return proto.CompactTextString(m) } -func (*InspectContentResponse) ProtoMessage() {} -func (*InspectContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *InspectContentResponse) GetResults() []*InspectResult { - if m != nil { - return m.Results - } - return nil -} - -// Request for scheduling a scan of a data subset from a Google Platform data -// repository. -type CreateInspectOperationRequest struct { - // Configuration for the inspector. - InspectConfig *InspectConfig `protobuf:"bytes,1,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // Specification of the data set to process. - StorageConfig *StorageConfig `protobuf:"bytes,2,opt,name=storage_config,json=storageConfig" json:"storage_config,omitempty"` - // Optional location to store findings. - OutputConfig *OutputStorageConfig `protobuf:"bytes,3,opt,name=output_config,json=outputConfig" json:"output_config,omitempty"` - // Additional configuration settings for long running operations. - OperationConfig *OperationConfig `protobuf:"bytes,5,opt,name=operation_config,json=operationConfig" json:"operation_config,omitempty"` -} - -func (m *CreateInspectOperationRequest) Reset() { *m = CreateInspectOperationRequest{} } -func (m *CreateInspectOperationRequest) String() string { return proto.CompactTextString(m) } -func (*CreateInspectOperationRequest) ProtoMessage() {} -func (*CreateInspectOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *CreateInspectOperationRequest) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *CreateInspectOperationRequest) GetStorageConfig() *StorageConfig { - if m != nil { - return m.StorageConfig - } - return nil -} - -func (m *CreateInspectOperationRequest) GetOutputConfig() *OutputStorageConfig { - if m != nil { - return m.OutputConfig - } - return nil -} - -func (m *CreateInspectOperationRequest) GetOperationConfig() *OperationConfig { - if m != nil { - return m.OperationConfig - } - return nil -} - -// Cloud repository for storing output. -type OutputStorageConfig struct { - // Types that are valid to be assigned to Type: - // *OutputStorageConfig_Table - // *OutputStorageConfig_StoragePath - Type isOutputStorageConfig_Type `protobuf_oneof:"type"` -} - -func (m *OutputStorageConfig) Reset() { *m = OutputStorageConfig{} } -func (m *OutputStorageConfig) String() string { return proto.CompactTextString(m) } -func (*OutputStorageConfig) ProtoMessage() {} -func (*OutputStorageConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -type isOutputStorageConfig_Type interface { - isOutputStorageConfig_Type() -} - -type OutputStorageConfig_Table struct { - Table *BigQueryTable `protobuf:"bytes,1,opt,name=table,oneof"` -} -type OutputStorageConfig_StoragePath struct { - StoragePath *CloudStoragePath `protobuf:"bytes,2,opt,name=storage_path,json=storagePath,oneof"` -} - -func (*OutputStorageConfig_Table) isOutputStorageConfig_Type() {} -func (*OutputStorageConfig_StoragePath) isOutputStorageConfig_Type() {} - -func (m *OutputStorageConfig) GetType() isOutputStorageConfig_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *OutputStorageConfig) GetTable() *BigQueryTable { - if x, ok := m.GetType().(*OutputStorageConfig_Table); ok { - return x.Table - } - return nil -} - -func (m *OutputStorageConfig) GetStoragePath() *CloudStoragePath { - if x, ok := m.GetType().(*OutputStorageConfig_StoragePath); ok { - return x.StoragePath - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*OutputStorageConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _OutputStorageConfig_OneofMarshaler, _OutputStorageConfig_OneofUnmarshaler, _OutputStorageConfig_OneofSizer, []interface{}{ - (*OutputStorageConfig_Table)(nil), - (*OutputStorageConfig_StoragePath)(nil), - } -} - -func _OutputStorageConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*OutputStorageConfig) - // type - switch x := m.Type.(type) { - case *OutputStorageConfig_Table: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Table); err != nil { - return err - } - case *OutputStorageConfig_StoragePath: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StoragePath); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("OutputStorageConfig.Type has unexpected type %T", x) - } - return nil -} - -func _OutputStorageConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*OutputStorageConfig) - switch tag { - case 1: // type.table - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BigQueryTable) - err := b.DecodeMessage(msg) - m.Type = &OutputStorageConfig_Table{msg} - return true, err - case 2: // type.storage_path - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CloudStoragePath) - err := b.DecodeMessage(msg) - m.Type = &OutputStorageConfig_StoragePath{msg} - return true, err - default: - return false, nil - } -} - -func _OutputStorageConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*OutputStorageConfig) - // type - switch x := m.Type.(type) { - case *OutputStorageConfig_Table: - s := proto.Size(x.Table) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *OutputStorageConfig_StoragePath: - s := proto.Size(x.StoragePath) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Statistics regarding a specific InfoType. -type InfoTypeStatistics struct { - // The type of finding this stat is for. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Number of findings for this info type. - Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` -} - -func (m *InfoTypeStatistics) Reset() { *m = InfoTypeStatistics{} } -func (m *InfoTypeStatistics) String() string { return proto.CompactTextString(m) } -func (*InfoTypeStatistics) ProtoMessage() {} -func (*InfoTypeStatistics) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *InfoTypeStatistics) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *InfoTypeStatistics) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -// Metadata returned within GetOperation for an inspect request. -type InspectOperationMetadata struct { - // Total size in bytes that were processed. - ProcessedBytes int64 `protobuf:"varint,1,opt,name=processed_bytes,json=processedBytes" json:"processed_bytes,omitempty"` - // Estimate of the number of bytes to process. - TotalEstimatedBytes int64 `protobuf:"varint,4,opt,name=total_estimated_bytes,json=totalEstimatedBytes" json:"total_estimated_bytes,omitempty"` - InfoTypeStats []*InfoTypeStatistics `protobuf:"bytes,2,rep,name=info_type_stats,json=infoTypeStats" json:"info_type_stats,omitempty"` - // The time which this request was started. - CreateTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The inspect config used to create the Operation. - RequestInspectConfig *InspectConfig `protobuf:"bytes,5,opt,name=request_inspect_config,json=requestInspectConfig" json:"request_inspect_config,omitempty"` - // The storage config used to create the Operation. - RequestStorageConfig *StorageConfig `protobuf:"bytes,6,opt,name=request_storage_config,json=requestStorageConfig" json:"request_storage_config,omitempty"` - // Optional location to store findings. - RequestOutputConfig *OutputStorageConfig `protobuf:"bytes,7,opt,name=request_output_config,json=requestOutputConfig" json:"request_output_config,omitempty"` -} - -func (m *InspectOperationMetadata) Reset() { *m = InspectOperationMetadata{} } -func (m *InspectOperationMetadata) String() string { return proto.CompactTextString(m) } -func (*InspectOperationMetadata) ProtoMessage() {} -func (*InspectOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *InspectOperationMetadata) GetProcessedBytes() int64 { - if m != nil { - return m.ProcessedBytes - } - return 0 -} - -func (m *InspectOperationMetadata) GetTotalEstimatedBytes() int64 { - if m != nil { - return m.TotalEstimatedBytes - } - return 0 -} - -func (m *InspectOperationMetadata) GetInfoTypeStats() []*InfoTypeStatistics { - if m != nil { - return m.InfoTypeStats - } - return nil -} - -func (m *InspectOperationMetadata) GetCreateTime() *google_protobuf3.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *InspectOperationMetadata) GetRequestInspectConfig() *InspectConfig { - if m != nil { - return m.RequestInspectConfig - } - return nil -} - -func (m *InspectOperationMetadata) GetRequestStorageConfig() *StorageConfig { - if m != nil { - return m.RequestStorageConfig - } - return nil -} - -func (m *InspectOperationMetadata) GetRequestOutputConfig() *OutputStorageConfig { - if m != nil { - return m.RequestOutputConfig - } - return nil -} - -// The operational data. -type InspectOperationResult struct { - // The server-assigned name, which is only unique within the same service that - // originally returns it. If you use the default HTTP mapping, the - // `name` should have the format of `inspect/results/{id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *InspectOperationResult) Reset() { *m = InspectOperationResult{} } -func (m *InspectOperationResult) String() string { return proto.CompactTextString(m) } -func (*InspectOperationResult) ProtoMessage() {} -func (*InspectOperationResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *InspectOperationResult) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request for the list of results in a given inspect operation. -type ListInspectFindingsRequest struct { - // Identifier of the results set returned as metadata of - // the longrunning operation created by a call to InspectDataSource. - // Should be in the format of `inspect/results/{id}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Maximum number of results to return. - // If 0, the implementation selects a reasonable value. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last `ListInspectFindingsResponse`; indicates - // that this is a continuation of a prior `ListInspectFindings` call, and that - // the system should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Restricts findings to items that match. Supports info_type and likelihood. - // - // Examples: - // - // - info_type=EMAIL_ADDRESS - // - info_type=PHONE_NUMBER,EMAIL_ADDRESS - // - likelihood=VERY_LIKELY - // - likelihood=VERY_LIKELY,LIKELY - // - info_type=EMAIL_ADDRESS,likelihood=VERY_LIKELY,LIKELY - Filter string `protobuf:"bytes,4,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListInspectFindingsRequest) Reset() { *m = ListInspectFindingsRequest{} } -func (m *ListInspectFindingsRequest) String() string { return proto.CompactTextString(m) } -func (*ListInspectFindingsRequest) ProtoMessage() {} -func (*ListInspectFindingsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *ListInspectFindingsRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *ListInspectFindingsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListInspectFindingsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListInspectFindingsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// Response to the ListInspectFindings request. -type ListInspectFindingsResponse struct { - // The results. - Result *InspectResult `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` - // If not empty, indicates that there may be more results that match the - // request; this value should be passed in a new `ListInspectFindingsRequest`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListInspectFindingsResponse) Reset() { *m = ListInspectFindingsResponse{} } -func (m *ListInspectFindingsResponse) String() string { return proto.CompactTextString(m) } -func (*ListInspectFindingsResponse) ProtoMessage() {} -func (*ListInspectFindingsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *ListInspectFindingsResponse) GetResult() *InspectResult { - if m != nil { - return m.Result - } - return nil -} - -func (m *ListInspectFindingsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Description of the information type (infoType). -type InfoTypeDescription struct { - // Internal name of the infoType. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Human readable form of the infoType name. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // List of categories this infoType belongs to. - Categories []*CategoryDescription `protobuf:"bytes,3,rep,name=categories" json:"categories,omitempty"` -} - -func (m *InfoTypeDescription) Reset() { *m = InfoTypeDescription{} } -func (m *InfoTypeDescription) String() string { return proto.CompactTextString(m) } -func (*InfoTypeDescription) ProtoMessage() {} -func (*InfoTypeDescription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *InfoTypeDescription) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *InfoTypeDescription) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *InfoTypeDescription) GetCategories() []*CategoryDescription { - if m != nil { - return m.Categories - } - return nil -} - -// Request for the list of info types belonging to a given category, -// or all supported info types if no category is specified. -type ListInfoTypesRequest struct { - // Category name as returned by ListRootCategories. - Category string `protobuf:"bytes,1,opt,name=category" json:"category,omitempty"` - // Optional BCP-47 language code for localized info type friendly - // names. If omitted, or if localized strings are not available, - // en-US strings will be returned. - LanguageCode string `protobuf:"bytes,2,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *ListInfoTypesRequest) Reset() { *m = ListInfoTypesRequest{} } -func (m *ListInfoTypesRequest) String() string { return proto.CompactTextString(m) } -func (*ListInfoTypesRequest) ProtoMessage() {} -func (*ListInfoTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *ListInfoTypesRequest) GetCategory() string { - if m != nil { - return m.Category - } - return "" -} - -func (m *ListInfoTypesRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// Response to the ListInfoTypes request. -type ListInfoTypesResponse struct { - // Set of sensitive info types belonging to a category. - InfoTypes []*InfoTypeDescription `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` -} - -func (m *ListInfoTypesResponse) Reset() { *m = ListInfoTypesResponse{} } -func (m *ListInfoTypesResponse) String() string { return proto.CompactTextString(m) } -func (*ListInfoTypesResponse) ProtoMessage() {} -func (*ListInfoTypesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *ListInfoTypesResponse) GetInfoTypes() []*InfoTypeDescription { - if m != nil { - return m.InfoTypes - } - return nil -} - -// Info Type Category description. -type CategoryDescription struct { - // Internal name of the category. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Human readable form of the category name. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` -} - -func (m *CategoryDescription) Reset() { *m = CategoryDescription{} } -func (m *CategoryDescription) String() string { return proto.CompactTextString(m) } -func (*CategoryDescription) ProtoMessage() {} -func (*CategoryDescription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *CategoryDescription) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CategoryDescription) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -// Request for root categories of Info Types supported by the API. -// Example values might include "FINANCE", "HEALTH", "FAST", "DEFAULT". -type ListRootCategoriesRequest struct { - // Optional language code for localized friendly category names. - // If omitted or if localized strings are not available, - // en-US strings will be returned. - LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` -} - -func (m *ListRootCategoriesRequest) Reset() { *m = ListRootCategoriesRequest{} } -func (m *ListRootCategoriesRequest) String() string { return proto.CompactTextString(m) } -func (*ListRootCategoriesRequest) ProtoMessage() {} -func (*ListRootCategoriesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *ListRootCategoriesRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -// Response for ListRootCategories request. -type ListRootCategoriesResponse struct { - // List of all into type categories supported by the API. - Categories []*CategoryDescription `protobuf:"bytes,1,rep,name=categories" json:"categories,omitempty"` -} - -func (m *ListRootCategoriesResponse) Reset() { *m = ListRootCategoriesResponse{} } -func (m *ListRootCategoriesResponse) String() string { return proto.CompactTextString(m) } -func (*ListRootCategoriesResponse) ProtoMessage() {} -func (*ListRootCategoriesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -func (m *ListRootCategoriesResponse) GetCategories() []*CategoryDescription { - if m != nil { - return m.Categories - } - return nil -} - -// Request for creating a risk analysis operation. -type AnalyzeDataSourceRiskRequest struct { - // Privacy metric to compute. - PrivacyMetric *PrivacyMetric `protobuf:"bytes,1,opt,name=privacy_metric,json=privacyMetric" json:"privacy_metric,omitempty"` - // Input dataset to compute metrics over. - SourceTable *BigQueryTable `protobuf:"bytes,3,opt,name=source_table,json=sourceTable" json:"source_table,omitempty"` -} - -func (m *AnalyzeDataSourceRiskRequest) Reset() { *m = AnalyzeDataSourceRiskRequest{} } -func (m *AnalyzeDataSourceRiskRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeDataSourceRiskRequest) ProtoMessage() {} -func (*AnalyzeDataSourceRiskRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -func (m *AnalyzeDataSourceRiskRequest) GetPrivacyMetric() *PrivacyMetric { - if m != nil { - return m.PrivacyMetric - } - return nil -} - -func (m *AnalyzeDataSourceRiskRequest) GetSourceTable() *BigQueryTable { - if m != nil { - return m.SourceTable - } - return nil -} - -// Privacy metric to compute for reidentification risk analysis. -type PrivacyMetric struct { - // Types that are valid to be assigned to Type: - // *PrivacyMetric_NumericalStatsConfig_ - // *PrivacyMetric_CategoricalStatsConfig_ - // *PrivacyMetric_KAnonymityConfig_ - // *PrivacyMetric_LDiversityConfig_ - Type isPrivacyMetric_Type `protobuf_oneof:"type"` -} - -func (m *PrivacyMetric) Reset() { *m = PrivacyMetric{} } -func (m *PrivacyMetric) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric) ProtoMessage() {} -func (*PrivacyMetric) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } - -type isPrivacyMetric_Type interface { - isPrivacyMetric_Type() -} - -type PrivacyMetric_NumericalStatsConfig_ struct { - NumericalStatsConfig *PrivacyMetric_NumericalStatsConfig `protobuf:"bytes,1,opt,name=numerical_stats_config,json=numericalStatsConfig,oneof"` -} -type PrivacyMetric_CategoricalStatsConfig_ struct { - CategoricalStatsConfig *PrivacyMetric_CategoricalStatsConfig `protobuf:"bytes,2,opt,name=categorical_stats_config,json=categoricalStatsConfig,oneof"` -} -type PrivacyMetric_KAnonymityConfig_ struct { - KAnonymityConfig *PrivacyMetric_KAnonymityConfig `protobuf:"bytes,3,opt,name=k_anonymity_config,json=kAnonymityConfig,oneof"` -} -type PrivacyMetric_LDiversityConfig_ struct { - LDiversityConfig *PrivacyMetric_LDiversityConfig `protobuf:"bytes,4,opt,name=l_diversity_config,json=lDiversityConfig,oneof"` -} - -func (*PrivacyMetric_NumericalStatsConfig_) isPrivacyMetric_Type() {} -func (*PrivacyMetric_CategoricalStatsConfig_) isPrivacyMetric_Type() {} -func (*PrivacyMetric_KAnonymityConfig_) isPrivacyMetric_Type() {} -func (*PrivacyMetric_LDiversityConfig_) isPrivacyMetric_Type() {} - -func (m *PrivacyMetric) GetType() isPrivacyMetric_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *PrivacyMetric) GetNumericalStatsConfig() *PrivacyMetric_NumericalStatsConfig { - if x, ok := m.GetType().(*PrivacyMetric_NumericalStatsConfig_); ok { - return x.NumericalStatsConfig - } - return nil -} - -func (m *PrivacyMetric) GetCategoricalStatsConfig() *PrivacyMetric_CategoricalStatsConfig { - if x, ok := m.GetType().(*PrivacyMetric_CategoricalStatsConfig_); ok { - return x.CategoricalStatsConfig - } - return nil -} - -func (m *PrivacyMetric) GetKAnonymityConfig() *PrivacyMetric_KAnonymityConfig { - if x, ok := m.GetType().(*PrivacyMetric_KAnonymityConfig_); ok { - return x.KAnonymityConfig - } - return nil -} - -func (m *PrivacyMetric) GetLDiversityConfig() *PrivacyMetric_LDiversityConfig { - if x, ok := m.GetType().(*PrivacyMetric_LDiversityConfig_); ok { - return x.LDiversityConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PrivacyMetric) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PrivacyMetric_OneofMarshaler, _PrivacyMetric_OneofUnmarshaler, _PrivacyMetric_OneofSizer, []interface{}{ - (*PrivacyMetric_NumericalStatsConfig_)(nil), - (*PrivacyMetric_CategoricalStatsConfig_)(nil), - (*PrivacyMetric_KAnonymityConfig_)(nil), - (*PrivacyMetric_LDiversityConfig_)(nil), - } -} - -func _PrivacyMetric_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PrivacyMetric) - // type - switch x := m.Type.(type) { - case *PrivacyMetric_NumericalStatsConfig_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.NumericalStatsConfig); err != nil { - return err - } - case *PrivacyMetric_CategoricalStatsConfig_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CategoricalStatsConfig); err != nil { - return err - } - case *PrivacyMetric_KAnonymityConfig_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KAnonymityConfig); err != nil { - return err - } - case *PrivacyMetric_LDiversityConfig_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.LDiversityConfig); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("PrivacyMetric.Type has unexpected type %T", x) - } - return nil -} - -func _PrivacyMetric_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PrivacyMetric) - switch tag { - case 1: // type.numerical_stats_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_NumericalStatsConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_NumericalStatsConfig_{msg} - return true, err - case 2: // type.categorical_stats_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_CategoricalStatsConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_CategoricalStatsConfig_{msg} - return true, err - case 3: // type.k_anonymity_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_KAnonymityConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_KAnonymityConfig_{msg} - return true, err - case 4: // type.l_diversity_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_LDiversityConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_LDiversityConfig_{msg} - return true, err - default: - return false, nil - } -} - -func _PrivacyMetric_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PrivacyMetric) - // type - switch x := m.Type.(type) { - case *PrivacyMetric_NumericalStatsConfig_: - s := proto.Size(x.NumericalStatsConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrivacyMetric_CategoricalStatsConfig_: - s := proto.Size(x.CategoricalStatsConfig) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrivacyMetric_KAnonymityConfig_: - s := proto.Size(x.KAnonymityConfig) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrivacyMetric_LDiversityConfig_: - s := proto.Size(x.LDiversityConfig) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Compute numerical stats over an individual column, including -// min, max, and quantiles. -type PrivacyMetric_NumericalStatsConfig struct { - // Field to compute numerical stats on. Supported types are - // integer, float, date, datetime, timestamp, time. - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` -} - -func (m *PrivacyMetric_NumericalStatsConfig) Reset() { *m = PrivacyMetric_NumericalStatsConfig{} } -func (m *PrivacyMetric_NumericalStatsConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_NumericalStatsConfig) ProtoMessage() {} -func (*PrivacyMetric_NumericalStatsConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{31, 0} -} - -func (m *PrivacyMetric_NumericalStatsConfig) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -// Compute numerical stats over an individual column, including -// number of distinct values and value count distribution. -type PrivacyMetric_CategoricalStatsConfig struct { - // Field to compute categorical stats on. All column types are - // supported except for arrays and structs. However, it may be more - // informative to use NumericalStats when the field type is supported, - // depending on the data. - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` -} - -func (m *PrivacyMetric_CategoricalStatsConfig) Reset() { *m = PrivacyMetric_CategoricalStatsConfig{} } -func (m *PrivacyMetric_CategoricalStatsConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_CategoricalStatsConfig) ProtoMessage() {} -func (*PrivacyMetric_CategoricalStatsConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{31, 1} -} - -func (m *PrivacyMetric_CategoricalStatsConfig) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -// k-anonymity metric, used for analysis of reidentification risk. -type PrivacyMetric_KAnonymityConfig struct { - // Set of fields to compute k-anonymity over. When multiple fields are - // specified, they are considered a single composite key. Structs and - // repeated data types are not supported; however, nested fields are - // supported so long as they are not structs themselves or nested within - // a repeated field. - QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` - // Optional message indicating that each distinct `EntityId` should not - // contribute to the k-anonymity count more than once per equivalence class. - EntityId *EntityId `protobuf:"bytes,2,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` -} - -func (m *PrivacyMetric_KAnonymityConfig) Reset() { *m = PrivacyMetric_KAnonymityConfig{} } -func (m *PrivacyMetric_KAnonymityConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_KAnonymityConfig) ProtoMessage() {} -func (*PrivacyMetric_KAnonymityConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{31, 2} -} - -func (m *PrivacyMetric_KAnonymityConfig) GetQuasiIds() []*FieldId { - if m != nil { - return m.QuasiIds - } - return nil -} - -func (m *PrivacyMetric_KAnonymityConfig) GetEntityId() *EntityId { - if m != nil { - return m.EntityId - } - return nil -} - -// l-diversity metric, used for analysis of reidentification risk. -type PrivacyMetric_LDiversityConfig struct { - // Set of quasi-identifiers indicating how equivalence classes are - // defined for the l-diversity computation. When multiple fields are - // specified, they are considered a single composite key. - QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` - // Sensitive field for computing the l-value. - SensitiveAttribute *FieldId `protobuf:"bytes,2,opt,name=sensitive_attribute,json=sensitiveAttribute" json:"sensitive_attribute,omitempty"` -} - -func (m *PrivacyMetric_LDiversityConfig) Reset() { *m = PrivacyMetric_LDiversityConfig{} } -func (m *PrivacyMetric_LDiversityConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_LDiversityConfig) ProtoMessage() {} -func (*PrivacyMetric_LDiversityConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{31, 3} -} - -func (m *PrivacyMetric_LDiversityConfig) GetQuasiIds() []*FieldId { - if m != nil { - return m.QuasiIds - } - return nil -} - -func (m *PrivacyMetric_LDiversityConfig) GetSensitiveAttribute() *FieldId { - if m != nil { - return m.SensitiveAttribute - } - return nil -} - -// Metadata returned within the -// [`riskAnalysis.operations.get`](/dlp/docs/reference/rest/v2beta1/riskAnalysis.operations/get) -// for risk analysis. -type RiskAnalysisOperationMetadata struct { - // The time which this request was started. - CreateTime *google_protobuf3.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Privacy metric to compute. - RequestedPrivacyMetric *PrivacyMetric `protobuf:"bytes,2,opt,name=requested_privacy_metric,json=requestedPrivacyMetric" json:"requested_privacy_metric,omitempty"` - // Input dataset to compute metrics over. - RequestedSourceTable *BigQueryTable `protobuf:"bytes,3,opt,name=requested_source_table,json=requestedSourceTable" json:"requested_source_table,omitempty"` -} - -func (m *RiskAnalysisOperationMetadata) Reset() { *m = RiskAnalysisOperationMetadata{} } -func (m *RiskAnalysisOperationMetadata) String() string { return proto.CompactTextString(m) } -func (*RiskAnalysisOperationMetadata) ProtoMessage() {} -func (*RiskAnalysisOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } - -func (m *RiskAnalysisOperationMetadata) GetCreateTime() *google_protobuf3.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *RiskAnalysisOperationMetadata) GetRequestedPrivacyMetric() *PrivacyMetric { - if m != nil { - return m.RequestedPrivacyMetric - } - return nil -} - -func (m *RiskAnalysisOperationMetadata) GetRequestedSourceTable() *BigQueryTable { - if m != nil { - return m.RequestedSourceTable - } - return nil -} - -// Result of a risk analysis -// [`Operation`](/dlp/docs/reference/rest/v2beta1/inspect.operations) -// request. -type RiskAnalysisOperationResult struct { - // Values associated with this metric. - // - // Types that are valid to be assigned to Result: - // *RiskAnalysisOperationResult_NumericalStatsResult_ - // *RiskAnalysisOperationResult_CategoricalStatsResult_ - // *RiskAnalysisOperationResult_KAnonymityResult_ - // *RiskAnalysisOperationResult_LDiversityResult_ - Result isRiskAnalysisOperationResult_Result `protobuf_oneof:"result"` -} - -func (m *RiskAnalysisOperationResult) Reset() { *m = RiskAnalysisOperationResult{} } -func (m *RiskAnalysisOperationResult) String() string { return proto.CompactTextString(m) } -func (*RiskAnalysisOperationResult) ProtoMessage() {} -func (*RiskAnalysisOperationResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } - -type isRiskAnalysisOperationResult_Result interface { - isRiskAnalysisOperationResult_Result() -} - -type RiskAnalysisOperationResult_NumericalStatsResult_ struct { - NumericalStatsResult *RiskAnalysisOperationResult_NumericalStatsResult `protobuf:"bytes,3,opt,name=numerical_stats_result,json=numericalStatsResult,oneof"` -} -type RiskAnalysisOperationResult_CategoricalStatsResult_ struct { - CategoricalStatsResult *RiskAnalysisOperationResult_CategoricalStatsResult `protobuf:"bytes,4,opt,name=categorical_stats_result,json=categoricalStatsResult,oneof"` -} -type RiskAnalysisOperationResult_KAnonymityResult_ struct { - KAnonymityResult *RiskAnalysisOperationResult_KAnonymityResult `protobuf:"bytes,5,opt,name=k_anonymity_result,json=kAnonymityResult,oneof"` -} -type RiskAnalysisOperationResult_LDiversityResult_ struct { - LDiversityResult *RiskAnalysisOperationResult_LDiversityResult `protobuf:"bytes,6,opt,name=l_diversity_result,json=lDiversityResult,oneof"` -} - -func (*RiskAnalysisOperationResult_NumericalStatsResult_) isRiskAnalysisOperationResult_Result() {} -func (*RiskAnalysisOperationResult_CategoricalStatsResult_) isRiskAnalysisOperationResult_Result() {} -func (*RiskAnalysisOperationResult_KAnonymityResult_) isRiskAnalysisOperationResult_Result() {} -func (*RiskAnalysisOperationResult_LDiversityResult_) isRiskAnalysisOperationResult_Result() {} - -func (m *RiskAnalysisOperationResult) GetResult() isRiskAnalysisOperationResult_Result { - if m != nil { - return m.Result - } - return nil -} - -func (m *RiskAnalysisOperationResult) GetNumericalStatsResult() *RiskAnalysisOperationResult_NumericalStatsResult { - if x, ok := m.GetResult().(*RiskAnalysisOperationResult_NumericalStatsResult_); ok { - return x.NumericalStatsResult - } - return nil -} - -func (m *RiskAnalysisOperationResult) GetCategoricalStatsResult() *RiskAnalysisOperationResult_CategoricalStatsResult { - if x, ok := m.GetResult().(*RiskAnalysisOperationResult_CategoricalStatsResult_); ok { - return x.CategoricalStatsResult - } - return nil -} - -func (m *RiskAnalysisOperationResult) GetKAnonymityResult() *RiskAnalysisOperationResult_KAnonymityResult { - if x, ok := m.GetResult().(*RiskAnalysisOperationResult_KAnonymityResult_); ok { - return x.KAnonymityResult - } - return nil -} - -func (m *RiskAnalysisOperationResult) GetLDiversityResult() *RiskAnalysisOperationResult_LDiversityResult { - if x, ok := m.GetResult().(*RiskAnalysisOperationResult_LDiversityResult_); ok { - return x.LDiversityResult - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RiskAnalysisOperationResult) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RiskAnalysisOperationResult_OneofMarshaler, _RiskAnalysisOperationResult_OneofUnmarshaler, _RiskAnalysisOperationResult_OneofSizer, []interface{}{ - (*RiskAnalysisOperationResult_NumericalStatsResult_)(nil), - (*RiskAnalysisOperationResult_CategoricalStatsResult_)(nil), - (*RiskAnalysisOperationResult_KAnonymityResult_)(nil), - (*RiskAnalysisOperationResult_LDiversityResult_)(nil), - } -} - -func _RiskAnalysisOperationResult_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RiskAnalysisOperationResult) - // result - switch x := m.Result.(type) { - case *RiskAnalysisOperationResult_NumericalStatsResult_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.NumericalStatsResult); err != nil { - return err - } - case *RiskAnalysisOperationResult_CategoricalStatsResult_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CategoricalStatsResult); err != nil { - return err - } - case *RiskAnalysisOperationResult_KAnonymityResult_: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KAnonymityResult); err != nil { - return err - } - case *RiskAnalysisOperationResult_LDiversityResult_: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.LDiversityResult); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RiskAnalysisOperationResult.Result has unexpected type %T", x) - } - return nil -} - -func _RiskAnalysisOperationResult_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RiskAnalysisOperationResult) - switch tag { - case 3: // result.numerical_stats_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RiskAnalysisOperationResult_NumericalStatsResult) - err := b.DecodeMessage(msg) - m.Result = &RiskAnalysisOperationResult_NumericalStatsResult_{msg} - return true, err - case 4: // result.categorical_stats_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RiskAnalysisOperationResult_CategoricalStatsResult) - err := b.DecodeMessage(msg) - m.Result = &RiskAnalysisOperationResult_CategoricalStatsResult_{msg} - return true, err - case 5: // result.k_anonymity_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RiskAnalysisOperationResult_KAnonymityResult) - err := b.DecodeMessage(msg) - m.Result = &RiskAnalysisOperationResult_KAnonymityResult_{msg} - return true, err - case 6: // result.l_diversity_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RiskAnalysisOperationResult_LDiversityResult) - err := b.DecodeMessage(msg) - m.Result = &RiskAnalysisOperationResult_LDiversityResult_{msg} - return true, err - default: - return false, nil - } -} - -func _RiskAnalysisOperationResult_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RiskAnalysisOperationResult) - // result - switch x := m.Result.(type) { - case *RiskAnalysisOperationResult_NumericalStatsResult_: - s := proto.Size(x.NumericalStatsResult) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RiskAnalysisOperationResult_CategoricalStatsResult_: - s := proto.Size(x.CategoricalStatsResult) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RiskAnalysisOperationResult_KAnonymityResult_: - s := proto.Size(x.KAnonymityResult) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RiskAnalysisOperationResult_LDiversityResult_: - s := proto.Size(x.LDiversityResult) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Result of the numerical stats computation. -type RiskAnalysisOperationResult_NumericalStatsResult struct { - // Minimum value appearing in the column. - MinValue *Value `protobuf:"bytes,1,opt,name=min_value,json=minValue" json:"min_value,omitempty"` - // Maximum value appearing in the column. - MaxValue *Value `protobuf:"bytes,2,opt,name=max_value,json=maxValue" json:"max_value,omitempty"` - // List of 99 values that partition the set of field values into 100 equal - // sized buckets. - QuantileValues []*Value `protobuf:"bytes,4,rep,name=quantile_values,json=quantileValues" json:"quantile_values,omitempty"` -} - -func (m *RiskAnalysisOperationResult_NumericalStatsResult) Reset() { - *m = RiskAnalysisOperationResult_NumericalStatsResult{} -} -func (m *RiskAnalysisOperationResult_NumericalStatsResult) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_NumericalStatsResult) ProtoMessage() {} -func (*RiskAnalysisOperationResult_NumericalStatsResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 0} -} - -func (m *RiskAnalysisOperationResult_NumericalStatsResult) GetMinValue() *Value { - if m != nil { - return m.MinValue - } - return nil -} - -func (m *RiskAnalysisOperationResult_NumericalStatsResult) GetMaxValue() *Value { - if m != nil { - return m.MaxValue - } - return nil -} - -func (m *RiskAnalysisOperationResult_NumericalStatsResult) GetQuantileValues() []*Value { - if m != nil { - return m.QuantileValues - } - return nil -} - -// Result of the categorical stats computation. -type RiskAnalysisOperationResult_CategoricalStatsResult struct { - // Histogram of value frequencies in the column. - ValueFrequencyHistogramBuckets []*RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket `protobuf:"bytes,5,rep,name=value_frequency_histogram_buckets,json=valueFrequencyHistogramBuckets" json:"value_frequency_histogram_buckets,omitempty"` -} - -func (m *RiskAnalysisOperationResult_CategoricalStatsResult) Reset() { - *m = RiskAnalysisOperationResult_CategoricalStatsResult{} -} -func (m *RiskAnalysisOperationResult_CategoricalStatsResult) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_CategoricalStatsResult) ProtoMessage() {} -func (*RiskAnalysisOperationResult_CategoricalStatsResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 1} -} - -func (m *RiskAnalysisOperationResult_CategoricalStatsResult) GetValueFrequencyHistogramBuckets() []*RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket { - if m != nil { - return m.ValueFrequencyHistogramBuckets - } - return nil -} - -// Histogram bucket of value frequencies in the column. -type RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket struct { - // Lower bound on the value frequency of the values in this bucket. - ValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=value_frequency_lower_bound,json=valueFrequencyLowerBound" json:"value_frequency_lower_bound,omitempty"` - // Upper bound on the value frequency of the values in this bucket. - ValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=value_frequency_upper_bound,json=valueFrequencyUpperBound" json:"value_frequency_upper_bound,omitempty"` - // Total number of records in this bucket. - BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` - // Sample of value frequencies in this bucket. The total number of - // values returned per bucket is capped at 20. - BucketValues []*ValueFrequency `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` -} - -func (m *RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket) Reset() { - *m = RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket{} -} -func (m *RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket) ProtoMessage() { -} -func (*RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 1, 0} -} - -func (m *RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyLowerBound() int64 { - if m != nil { - return m.ValueFrequencyLowerBound - } - return 0 -} - -func (m *RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyUpperBound() int64 { - if m != nil { - return m.ValueFrequencyUpperBound - } - return 0 -} - -func (m *RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketSize() int64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -func (m *RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketValues() []*ValueFrequency { - if m != nil { - return m.BucketValues - } - return nil -} - -// Result of the k-anonymity computation. -type RiskAnalysisOperationResult_KAnonymityResult struct { - // Histogram of k-anonymity equivalence classes. - EquivalenceClassHistogramBuckets []*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket `protobuf:"bytes,5,rep,name=equivalence_class_histogram_buckets,json=equivalenceClassHistogramBuckets" json:"equivalence_class_histogram_buckets,omitempty"` -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult) Reset() { - *m = RiskAnalysisOperationResult_KAnonymityResult{} -} -func (m *RiskAnalysisOperationResult_KAnonymityResult) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_KAnonymityResult) ProtoMessage() {} -func (*RiskAnalysisOperationResult_KAnonymityResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 2} -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult) GetEquivalenceClassHistogramBuckets() []*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket { - if m != nil { - return m.EquivalenceClassHistogramBuckets - } - return nil -} - -// The set of columns' values that share the same k-anonymity value. -type RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass struct { - // Set of values defining the equivalence class. One value per - // quasi-identifier column in the original KAnonymity metric message. - // The order is always the same as the original request. - QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues" json:"quasi_ids_values,omitempty"` - // Size of the equivalence class, for example number of rows with the - // above set of values. - EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize" json:"equivalence_class_size,omitempty"` -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass) Reset() { - *m = RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass{} -} -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass) ProtoMessage() {} -func (*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 2, 0} -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass) GetQuasiIdsValues() []*Value { - if m != nil { - return m.QuasiIdsValues - } - return nil -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass) GetEquivalenceClassSize() int64 { - if m != nil { - return m.EquivalenceClassSize - } - return 0 -} - -// Histogram bucket of equivalence class sizes in the table. -type RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket struct { - // Lower bound on the size of the equivalence classes in this bucket. - EquivalenceClassSizeLowerBound int64 `protobuf:"varint,1,opt,name=equivalence_class_size_lower_bound,json=equivalenceClassSizeLowerBound" json:"equivalence_class_size_lower_bound,omitempty"` - // Upper bound on the size of the equivalence classes in this bucket. - EquivalenceClassSizeUpperBound int64 `protobuf:"varint,2,opt,name=equivalence_class_size_upper_bound,json=equivalenceClassSizeUpperBound" json:"equivalence_class_size_upper_bound,omitempty"` - // Total number of records in this bucket. - BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` - // Sample of equivalence classes in this bucket. The total number of - // classes returned per bucket is capped at 20. - BucketValues []*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket) Reset() { - *m = RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket{} -} -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket) ProtoMessage() {} -func (*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 2, 1} -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeLowerBound() int64 { - if m != nil { - return m.EquivalenceClassSizeLowerBound - } - return 0 -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeUpperBound() int64 { - if m != nil { - return m.EquivalenceClassSizeUpperBound - } - return 0 -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket) GetBucketSize() int64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -func (m *RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket) GetBucketValues() []*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass { - if m != nil { - return m.BucketValues - } - return nil -} - -// Result of the l-diversity computation. -type RiskAnalysisOperationResult_LDiversityResult struct { - // Histogram of l-diversity equivalence class sensitive value frequencies. - SensitiveValueFrequencyHistogramBuckets []*RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket `protobuf:"bytes,5,rep,name=sensitive_value_frequency_histogram_buckets,json=sensitiveValueFrequencyHistogramBuckets" json:"sensitive_value_frequency_histogram_buckets,omitempty"` -} - -func (m *RiskAnalysisOperationResult_LDiversityResult) Reset() { - *m = RiskAnalysisOperationResult_LDiversityResult{} -} -func (m *RiskAnalysisOperationResult_LDiversityResult) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_LDiversityResult) ProtoMessage() {} -func (*RiskAnalysisOperationResult_LDiversityResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 3} -} - -func (m *RiskAnalysisOperationResult_LDiversityResult) GetSensitiveValueFrequencyHistogramBuckets() []*RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket { - if m != nil { - return m.SensitiveValueFrequencyHistogramBuckets - } - return nil -} - -// The set of columns' values that share the same l-diversity value. -type RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass struct { - // Quasi-identifier values defining the k-anonymity equivalence - // class. The order is always the same as the original request. - QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues" json:"quasi_ids_values,omitempty"` - // Size of the k-anonymity equivalence class. - EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize" json:"equivalence_class_size,omitempty"` - // Number of distinct sensitive values in this equivalence class. - NumDistinctSensitiveValues int64 `protobuf:"varint,3,opt,name=num_distinct_sensitive_values,json=numDistinctSensitiveValues" json:"num_distinct_sensitive_values,omitempty"` - // Estimated frequencies of top sensitive values. - TopSensitiveValues []*ValueFrequency `protobuf:"bytes,4,rep,name=top_sensitive_values,json=topSensitiveValues" json:"top_sensitive_values,omitempty"` -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass) Reset() { - *m = RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass{} -} -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass) ProtoMessage() {} -func (*RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 3, 0} -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass) GetQuasiIdsValues() []*Value { - if m != nil { - return m.QuasiIdsValues - } - return nil -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass) GetEquivalenceClassSize() int64 { - if m != nil { - return m.EquivalenceClassSize - } - return 0 -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass) GetNumDistinctSensitiveValues() int64 { - if m != nil { - return m.NumDistinctSensitiveValues - } - return 0 -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass) GetTopSensitiveValues() []*ValueFrequency { - if m != nil { - return m.TopSensitiveValues - } - return nil -} - -// Histogram bucket of sensitive value frequencies in the table. -type RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket struct { - // Lower bound on the sensitive value frequencies of the equivalence - // classes in this bucket. - SensitiveValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=sensitive_value_frequency_lower_bound,json=sensitiveValueFrequencyLowerBound" json:"sensitive_value_frequency_lower_bound,omitempty"` - // Upper bound on the sensitive value frequencies of the equivalence - // classes in this bucket. - SensitiveValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=sensitive_value_frequency_upper_bound,json=sensitiveValueFrequencyUpperBound" json:"sensitive_value_frequency_upper_bound,omitempty"` - // Total number of records in this bucket. - BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` - // Sample of equivalence classes in this bucket. The total number of - // classes returned per bucket is capped at 20. - BucketValues []*RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket) Reset() { - *m = RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket{} -} -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket) String() string { - return proto.CompactTextString(m) -} -func (*RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket) ProtoMessage() {} -func (*RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{33, 3, 1} -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyLowerBound() int64 { - if m != nil { - return m.SensitiveValueFrequencyLowerBound - } - return 0 -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyUpperBound() int64 { - if m != nil { - return m.SensitiveValueFrequencyUpperBound - } - return 0 -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket) GetBucketSize() int64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -func (m *RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket) GetBucketValues() []*RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass { - if m != nil { - return m.BucketValues - } - return nil -} - -// A value of a field, including its frequency. -type ValueFrequency struct { - // A value contained in the field in question. - Value *Value `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` - // How many times the value is contained in the field. - Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` -} - -func (m *ValueFrequency) Reset() { *m = ValueFrequency{} } -func (m *ValueFrequency) String() string { return proto.CompactTextString(m) } -func (*ValueFrequency) ProtoMessage() {} -func (*ValueFrequency) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } - -func (m *ValueFrequency) GetValue() *Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *ValueFrequency) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -// Set of primitive values supported by the system. -type Value struct { - // Types that are valid to be assigned to Type: - // *Value_IntegerValue - // *Value_FloatValue - // *Value_StringValue - // *Value_BooleanValue - // *Value_TimestampValue - // *Value_TimeValue - // *Value_DateValue - Type isValue_Type `protobuf_oneof:"type"` -} - -func (m *Value) Reset() { *m = Value{} } -func (m *Value) String() string { return proto.CompactTextString(m) } -func (*Value) ProtoMessage() {} -func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } - -type isValue_Type interface { - isValue_Type() -} - -type Value_IntegerValue struct { - IntegerValue int64 `protobuf:"varint,1,opt,name=integer_value,json=integerValue,oneof"` -} -type Value_FloatValue struct { - FloatValue float64 `protobuf:"fixed64,2,opt,name=float_value,json=floatValue,oneof"` -} -type Value_StringValue struct { - StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,oneof"` -} -type Value_BooleanValue struct { - BooleanValue bool `protobuf:"varint,4,opt,name=boolean_value,json=booleanValue,oneof"` -} -type Value_TimestampValue struct { - TimestampValue *google_protobuf3.Timestamp `protobuf:"bytes,5,opt,name=timestamp_value,json=timestampValue,oneof"` -} -type Value_TimeValue struct { - TimeValue *google_type1.TimeOfDay `protobuf:"bytes,6,opt,name=time_value,json=timeValue,oneof"` -} -type Value_DateValue struct { - DateValue *google_type.Date `protobuf:"bytes,7,opt,name=date_value,json=dateValue,oneof"` -} - -func (*Value_IntegerValue) isValue_Type() {} -func (*Value_FloatValue) isValue_Type() {} -func (*Value_StringValue) isValue_Type() {} -func (*Value_BooleanValue) isValue_Type() {} -func (*Value_TimestampValue) isValue_Type() {} -func (*Value_TimeValue) isValue_Type() {} -func (*Value_DateValue) isValue_Type() {} - -func (m *Value) GetType() isValue_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *Value) GetIntegerValue() int64 { - if x, ok := m.GetType().(*Value_IntegerValue); ok { - return x.IntegerValue - } - return 0 -} - -func (m *Value) GetFloatValue() float64 { - if x, ok := m.GetType().(*Value_FloatValue); ok { - return x.FloatValue - } - return 0 -} - -func (m *Value) GetStringValue() string { - if x, ok := m.GetType().(*Value_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *Value) GetBooleanValue() bool { - if x, ok := m.GetType().(*Value_BooleanValue); ok { - return x.BooleanValue - } - return false -} - -func (m *Value) GetTimestampValue() *google_protobuf3.Timestamp { - if x, ok := m.GetType().(*Value_TimestampValue); ok { - return x.TimestampValue - } - return nil -} - -func (m *Value) GetTimeValue() *google_type1.TimeOfDay { - if x, ok := m.GetType().(*Value_TimeValue); ok { - return x.TimeValue - } - return nil -} - -func (m *Value) GetDateValue() *google_type.Date { - if x, ok := m.GetType().(*Value_DateValue); ok { - return x.DateValue - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Value) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Value_OneofMarshaler, _Value_OneofUnmarshaler, _Value_OneofSizer, []interface{}{ - (*Value_IntegerValue)(nil), - (*Value_FloatValue)(nil), - (*Value_StringValue)(nil), - (*Value_BooleanValue)(nil), - (*Value_TimestampValue)(nil), - (*Value_TimeValue)(nil), - (*Value_DateValue)(nil), - } -} - -func _Value_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Value) - // type - switch x := m.Type.(type) { - case *Value_IntegerValue: - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IntegerValue)) - case *Value_FloatValue: - b.EncodeVarint(2<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.FloatValue)) - case *Value_StringValue: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *Value_BooleanValue: - t := uint64(0) - if x.BooleanValue { - t = 1 - } - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Value_TimestampValue: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimestampValue); err != nil { - return err - } - case *Value_TimeValue: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimeValue); err != nil { - return err - } - case *Value_DateValue: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DateValue); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Value.Type has unexpected type %T", x) - } - return nil -} - -func _Value_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Value) - switch tag { - case 1: // type.integer_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Type = &Value_IntegerValue{int64(x)} - return true, err - case 2: // type.float_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Type = &Value_FloatValue{math.Float64frombits(x)} - return true, err - case 3: // type.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Type = &Value_StringValue{x} - return true, err - case 4: // type.boolean_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Type = &Value_BooleanValue{x != 0} - return true, err - case 5: // type.timestamp_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf3.Timestamp) - err := b.DecodeMessage(msg) - m.Type = &Value_TimestampValue{msg} - return true, err - case 6: // type.time_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_type1.TimeOfDay) - err := b.DecodeMessage(msg) - m.Type = &Value_TimeValue{msg} - return true, err - case 7: // type.date_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_type.Date) - err := b.DecodeMessage(msg) - m.Type = &Value_DateValue{msg} - return true, err - default: - return false, nil - } -} - -func _Value_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Value) - // type - switch x := m.Type.(type) { - case *Value_IntegerValue: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IntegerValue)) - case *Value_FloatValue: - n += proto.SizeVarint(2<<3 | proto.WireFixed64) - n += 8 - case *Value_StringValue: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *Value_BooleanValue: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += 1 - case *Value_TimestampValue: - s := proto.Size(x.TimestampValue) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_TimeValue: - s := proto.Size(x.TimeValue) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_DateValue: - s := proto.Size(x.DateValue) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The configuration that controls how the data will change. -type DeidentifyConfig struct { - // Types that are valid to be assigned to Transformation: - // *DeidentifyConfig_InfoTypeTransformations - // *DeidentifyConfig_RecordTransformations - Transformation isDeidentifyConfig_Transformation `protobuf_oneof:"transformation"` -} - -func (m *DeidentifyConfig) Reset() { *m = DeidentifyConfig{} } -func (m *DeidentifyConfig) String() string { return proto.CompactTextString(m) } -func (*DeidentifyConfig) ProtoMessage() {} -func (*DeidentifyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } - -type isDeidentifyConfig_Transformation interface { - isDeidentifyConfig_Transformation() -} - -type DeidentifyConfig_InfoTypeTransformations struct { - InfoTypeTransformations *InfoTypeTransformations `protobuf:"bytes,1,opt,name=info_type_transformations,json=infoTypeTransformations,oneof"` -} -type DeidentifyConfig_RecordTransformations struct { - RecordTransformations *RecordTransformations `protobuf:"bytes,2,opt,name=record_transformations,json=recordTransformations,oneof"` -} - -func (*DeidentifyConfig_InfoTypeTransformations) isDeidentifyConfig_Transformation() {} -func (*DeidentifyConfig_RecordTransformations) isDeidentifyConfig_Transformation() {} - -func (m *DeidentifyConfig) GetTransformation() isDeidentifyConfig_Transformation { - if m != nil { - return m.Transformation - } - return nil -} - -func (m *DeidentifyConfig) GetInfoTypeTransformations() *InfoTypeTransformations { - if x, ok := m.GetTransformation().(*DeidentifyConfig_InfoTypeTransformations); ok { - return x.InfoTypeTransformations - } - return nil -} - -func (m *DeidentifyConfig) GetRecordTransformations() *RecordTransformations { - if x, ok := m.GetTransformation().(*DeidentifyConfig_RecordTransformations); ok { - return x.RecordTransformations - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*DeidentifyConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _DeidentifyConfig_OneofMarshaler, _DeidentifyConfig_OneofUnmarshaler, _DeidentifyConfig_OneofSizer, []interface{}{ - (*DeidentifyConfig_InfoTypeTransformations)(nil), - (*DeidentifyConfig_RecordTransformations)(nil), - } -} - -func _DeidentifyConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*DeidentifyConfig) - // transformation - switch x := m.Transformation.(type) { - case *DeidentifyConfig_InfoTypeTransformations: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InfoTypeTransformations); err != nil { - return err - } - case *DeidentifyConfig_RecordTransformations: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RecordTransformations); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("DeidentifyConfig.Transformation has unexpected type %T", x) - } - return nil -} - -func _DeidentifyConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*DeidentifyConfig) - switch tag { - case 1: // transformation.info_type_transformations - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InfoTypeTransformations) - err := b.DecodeMessage(msg) - m.Transformation = &DeidentifyConfig_InfoTypeTransformations{msg} - return true, err - case 2: // transformation.record_transformations - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RecordTransformations) - err := b.DecodeMessage(msg) - m.Transformation = &DeidentifyConfig_RecordTransformations{msg} - return true, err - default: - return false, nil - } -} - -func _DeidentifyConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*DeidentifyConfig) - // transformation - switch x := m.Transformation.(type) { - case *DeidentifyConfig_InfoTypeTransformations: - s := proto.Size(x.InfoTypeTransformations) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *DeidentifyConfig_RecordTransformations: - s := proto.Size(x.RecordTransformations) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A rule for transforming a value. -type PrimitiveTransformation struct { - // Types that are valid to be assigned to Transformation: - // *PrimitiveTransformation_ReplaceConfig - // *PrimitiveTransformation_RedactConfig - // *PrimitiveTransformation_CharacterMaskConfig - // *PrimitiveTransformation_CryptoReplaceFfxFpeConfig - // *PrimitiveTransformation_FixedSizeBucketingConfig - // *PrimitiveTransformation_BucketingConfig - // *PrimitiveTransformation_ReplaceWithInfoTypeConfig - // *PrimitiveTransformation_TimePartConfig - // *PrimitiveTransformation_CryptoHashConfig - Transformation isPrimitiveTransformation_Transformation `protobuf_oneof:"transformation"` -} - -func (m *PrimitiveTransformation) Reset() { *m = PrimitiveTransformation{} } -func (m *PrimitiveTransformation) String() string { return proto.CompactTextString(m) } -func (*PrimitiveTransformation) ProtoMessage() {} -func (*PrimitiveTransformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } - -type isPrimitiveTransformation_Transformation interface { - isPrimitiveTransformation_Transformation() -} - -type PrimitiveTransformation_ReplaceConfig struct { - ReplaceConfig *ReplaceValueConfig `protobuf:"bytes,1,opt,name=replace_config,json=replaceConfig,oneof"` -} -type PrimitiveTransformation_RedactConfig struct { - RedactConfig *RedactConfig `protobuf:"bytes,2,opt,name=redact_config,json=redactConfig,oneof"` -} -type PrimitiveTransformation_CharacterMaskConfig struct { - CharacterMaskConfig *CharacterMaskConfig `protobuf:"bytes,3,opt,name=character_mask_config,json=characterMaskConfig,oneof"` -} -type PrimitiveTransformation_CryptoReplaceFfxFpeConfig struct { - CryptoReplaceFfxFpeConfig *CryptoReplaceFfxFpeConfig `protobuf:"bytes,4,opt,name=crypto_replace_ffx_fpe_config,json=cryptoReplaceFfxFpeConfig,oneof"` -} -type PrimitiveTransformation_FixedSizeBucketingConfig struct { - FixedSizeBucketingConfig *FixedSizeBucketingConfig `protobuf:"bytes,5,opt,name=fixed_size_bucketing_config,json=fixedSizeBucketingConfig,oneof"` -} -type PrimitiveTransformation_BucketingConfig struct { - BucketingConfig *BucketingConfig `protobuf:"bytes,6,opt,name=bucketing_config,json=bucketingConfig,oneof"` -} -type PrimitiveTransformation_ReplaceWithInfoTypeConfig struct { - ReplaceWithInfoTypeConfig *ReplaceWithInfoTypeConfig `protobuf:"bytes,7,opt,name=replace_with_info_type_config,json=replaceWithInfoTypeConfig,oneof"` -} -type PrimitiveTransformation_TimePartConfig struct { - TimePartConfig *TimePartConfig `protobuf:"bytes,8,opt,name=time_part_config,json=timePartConfig,oneof"` -} -type PrimitiveTransformation_CryptoHashConfig struct { - CryptoHashConfig *CryptoHashConfig `protobuf:"bytes,9,opt,name=crypto_hash_config,json=cryptoHashConfig,oneof"` -} - -func (*PrimitiveTransformation_ReplaceConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_RedactConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_CharacterMaskConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_CryptoReplaceFfxFpeConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_FixedSizeBucketingConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_BucketingConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_ReplaceWithInfoTypeConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_TimePartConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_CryptoHashConfig) isPrimitiveTransformation_Transformation() {} - -func (m *PrimitiveTransformation) GetTransformation() isPrimitiveTransformation_Transformation { - if m != nil { - return m.Transformation - } - return nil -} - -func (m *PrimitiveTransformation) GetReplaceConfig() *ReplaceValueConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_ReplaceConfig); ok { - return x.ReplaceConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetRedactConfig() *RedactConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_RedactConfig); ok { - return x.RedactConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetCharacterMaskConfig() *CharacterMaskConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_CharacterMaskConfig); ok { - return x.CharacterMaskConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetCryptoReplaceFfxFpeConfig() *CryptoReplaceFfxFpeConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_CryptoReplaceFfxFpeConfig); ok { - return x.CryptoReplaceFfxFpeConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetFixedSizeBucketingConfig() *FixedSizeBucketingConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_FixedSizeBucketingConfig); ok { - return x.FixedSizeBucketingConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetBucketingConfig() *BucketingConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_BucketingConfig); ok { - return x.BucketingConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetReplaceWithInfoTypeConfig() *ReplaceWithInfoTypeConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_ReplaceWithInfoTypeConfig); ok { - return x.ReplaceWithInfoTypeConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetTimePartConfig() *TimePartConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_TimePartConfig); ok { - return x.TimePartConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetCryptoHashConfig() *CryptoHashConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_CryptoHashConfig); ok { - return x.CryptoHashConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PrimitiveTransformation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PrimitiveTransformation_OneofMarshaler, _PrimitiveTransformation_OneofUnmarshaler, _PrimitiveTransformation_OneofSizer, []interface{}{ - (*PrimitiveTransformation_ReplaceConfig)(nil), - (*PrimitiveTransformation_RedactConfig)(nil), - (*PrimitiveTransformation_CharacterMaskConfig)(nil), - (*PrimitiveTransformation_CryptoReplaceFfxFpeConfig)(nil), - (*PrimitiveTransformation_FixedSizeBucketingConfig)(nil), - (*PrimitiveTransformation_BucketingConfig)(nil), - (*PrimitiveTransformation_ReplaceWithInfoTypeConfig)(nil), - (*PrimitiveTransformation_TimePartConfig)(nil), - (*PrimitiveTransformation_CryptoHashConfig)(nil), - } -} - -func _PrimitiveTransformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PrimitiveTransformation) - // transformation - switch x := m.Transformation.(type) { - case *PrimitiveTransformation_ReplaceConfig: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReplaceConfig); err != nil { - return err - } - case *PrimitiveTransformation_RedactConfig: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RedactConfig); err != nil { - return err - } - case *PrimitiveTransformation_CharacterMaskConfig: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CharacterMaskConfig); err != nil { - return err - } - case *PrimitiveTransformation_CryptoReplaceFfxFpeConfig: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CryptoReplaceFfxFpeConfig); err != nil { - return err - } - case *PrimitiveTransformation_FixedSizeBucketingConfig: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.FixedSizeBucketingConfig); err != nil { - return err - } - case *PrimitiveTransformation_BucketingConfig: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BucketingConfig); err != nil { - return err - } - case *PrimitiveTransformation_ReplaceWithInfoTypeConfig: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReplaceWithInfoTypeConfig); err != nil { - return err - } - case *PrimitiveTransformation_TimePartConfig: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimePartConfig); err != nil { - return err - } - case *PrimitiveTransformation_CryptoHashConfig: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CryptoHashConfig); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("PrimitiveTransformation.Transformation has unexpected type %T", x) - } - return nil -} - -func _PrimitiveTransformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PrimitiveTransformation) - switch tag { - case 1: // transformation.replace_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ReplaceValueConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_ReplaceConfig{msg} - return true, err - case 2: // transformation.redact_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RedactConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_RedactConfig{msg} - return true, err - case 3: // transformation.character_mask_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CharacterMaskConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_CharacterMaskConfig{msg} - return true, err - case 4: // transformation.crypto_replace_ffx_fpe_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CryptoReplaceFfxFpeConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_CryptoReplaceFfxFpeConfig{msg} - return true, err - case 5: // transformation.fixed_size_bucketing_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(FixedSizeBucketingConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_FixedSizeBucketingConfig{msg} - return true, err - case 6: // transformation.bucketing_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BucketingConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_BucketingConfig{msg} - return true, err - case 7: // transformation.replace_with_info_type_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ReplaceWithInfoTypeConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_ReplaceWithInfoTypeConfig{msg} - return true, err - case 8: // transformation.time_part_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TimePartConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_TimePartConfig{msg} - return true, err - case 9: // transformation.crypto_hash_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CryptoHashConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_CryptoHashConfig{msg} - return true, err - default: - return false, nil - } -} - -func _PrimitiveTransformation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PrimitiveTransformation) - // transformation - switch x := m.Transformation.(type) { - case *PrimitiveTransformation_ReplaceConfig: - s := proto.Size(x.ReplaceConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_RedactConfig: - s := proto.Size(x.RedactConfig) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_CharacterMaskConfig: - s := proto.Size(x.CharacterMaskConfig) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_CryptoReplaceFfxFpeConfig: - s := proto.Size(x.CryptoReplaceFfxFpeConfig) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_FixedSizeBucketingConfig: - s := proto.Size(x.FixedSizeBucketingConfig) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_BucketingConfig: - s := proto.Size(x.BucketingConfig) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_ReplaceWithInfoTypeConfig: - s := proto.Size(x.ReplaceWithInfoTypeConfig) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_TimePartConfig: - s := proto.Size(x.TimePartConfig) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_CryptoHashConfig: - s := proto.Size(x.CryptoHashConfig) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a -// portion of the value. -type TimePartConfig struct { - PartToExtract TimePartConfig_TimePart `protobuf:"varint,1,opt,name=part_to_extract,json=partToExtract,enum=google.privacy.dlp.v2beta1.TimePartConfig_TimePart" json:"part_to_extract,omitempty"` -} - -func (m *TimePartConfig) Reset() { *m = TimePartConfig{} } -func (m *TimePartConfig) String() string { return proto.CompactTextString(m) } -func (*TimePartConfig) ProtoMessage() {} -func (*TimePartConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } - -func (m *TimePartConfig) GetPartToExtract() TimePartConfig_TimePart { - if m != nil { - return m.PartToExtract - } - return TimePartConfig_TIME_PART_UNSPECIFIED -} - -// Pseudonymization method that generates surrogates via cryptographic hashing. -// Uses SHA-256. -// Outputs a 32 byte digest as an uppercase hex string -// (for example, 41D1567F7F99F1DC2A5FAB886DEE5BEE). -// Currently, only string and integer values can be hashed. -type CryptoHashConfig struct { - // The key used by the hash function. - CryptoKey *CryptoKey `protobuf:"bytes,1,opt,name=crypto_key,json=cryptoKey" json:"crypto_key,omitempty"` -} - -func (m *CryptoHashConfig) Reset() { *m = CryptoHashConfig{} } -func (m *CryptoHashConfig) String() string { return proto.CompactTextString(m) } -func (*CryptoHashConfig) ProtoMessage() {} -func (*CryptoHashConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } - -func (m *CryptoHashConfig) GetCryptoKey() *CryptoKey { - if m != nil { - return m.CryptoKey - } - return nil -} - -// Replace each input value with a given `Value`. -type ReplaceValueConfig struct { - // Value to replace it with. - NewValue *Value `protobuf:"bytes,1,opt,name=new_value,json=newValue" json:"new_value,omitempty"` -} - -func (m *ReplaceValueConfig) Reset() { *m = ReplaceValueConfig{} } -func (m *ReplaceValueConfig) String() string { return proto.CompactTextString(m) } -func (*ReplaceValueConfig) ProtoMessage() {} -func (*ReplaceValueConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } - -func (m *ReplaceValueConfig) GetNewValue() *Value { - if m != nil { - return m.NewValue - } - return nil -} - -// Replace each matching finding with the name of the info_type. -type ReplaceWithInfoTypeConfig struct { -} - -func (m *ReplaceWithInfoTypeConfig) Reset() { *m = ReplaceWithInfoTypeConfig{} } -func (m *ReplaceWithInfoTypeConfig) String() string { return proto.CompactTextString(m) } -func (*ReplaceWithInfoTypeConfig) ProtoMessage() {} -func (*ReplaceWithInfoTypeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } - -// Redact a given value. For example, if used with an `InfoTypeTransformation` -// transforming PHONE_NUMBER, and input 'My phone number is 206-555-0123', the -// output would be 'My phone number is '. -type RedactConfig struct { -} - -func (m *RedactConfig) Reset() { *m = RedactConfig{} } -func (m *RedactConfig) String() string { return proto.CompactTextString(m) } -func (*RedactConfig) ProtoMessage() {} -func (*RedactConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } - -// Characters to skip when doing deidentification of a value. These will be left -// alone and skipped. -type CharsToIgnore struct { - // Types that are valid to be assigned to Characters: - // *CharsToIgnore_CharactersToSkip - // *CharsToIgnore_CommonCharactersToIgnore - Characters isCharsToIgnore_Characters `protobuf_oneof:"characters"` -} - -func (m *CharsToIgnore) Reset() { *m = CharsToIgnore{} } -func (m *CharsToIgnore) String() string { return proto.CompactTextString(m) } -func (*CharsToIgnore) ProtoMessage() {} -func (*CharsToIgnore) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } - -type isCharsToIgnore_Characters interface { - isCharsToIgnore_Characters() -} - -type CharsToIgnore_CharactersToSkip struct { - CharactersToSkip string `protobuf:"bytes,1,opt,name=characters_to_skip,json=charactersToSkip,oneof"` -} -type CharsToIgnore_CommonCharactersToIgnore struct { - CommonCharactersToIgnore CharsToIgnore_CharacterGroup `protobuf:"varint,2,opt,name=common_characters_to_ignore,json=commonCharactersToIgnore,enum=google.privacy.dlp.v2beta1.CharsToIgnore_CharacterGroup,oneof"` -} - -func (*CharsToIgnore_CharactersToSkip) isCharsToIgnore_Characters() {} -func (*CharsToIgnore_CommonCharactersToIgnore) isCharsToIgnore_Characters() {} - -func (m *CharsToIgnore) GetCharacters() isCharsToIgnore_Characters { - if m != nil { - return m.Characters - } - return nil -} - -func (m *CharsToIgnore) GetCharactersToSkip() string { - if x, ok := m.GetCharacters().(*CharsToIgnore_CharactersToSkip); ok { - return x.CharactersToSkip - } - return "" -} - -func (m *CharsToIgnore) GetCommonCharactersToIgnore() CharsToIgnore_CharacterGroup { - if x, ok := m.GetCharacters().(*CharsToIgnore_CommonCharactersToIgnore); ok { - return x.CommonCharactersToIgnore - } - return CharsToIgnore_CHARACTER_GROUP_UNSPECIFIED -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CharsToIgnore) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CharsToIgnore_OneofMarshaler, _CharsToIgnore_OneofUnmarshaler, _CharsToIgnore_OneofSizer, []interface{}{ - (*CharsToIgnore_CharactersToSkip)(nil), - (*CharsToIgnore_CommonCharactersToIgnore)(nil), - } -} - -func _CharsToIgnore_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CharsToIgnore) - // characters - switch x := m.Characters.(type) { - case *CharsToIgnore_CharactersToSkip: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.CharactersToSkip) - case *CharsToIgnore_CommonCharactersToIgnore: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CommonCharactersToIgnore)) - case nil: - default: - return fmt.Errorf("CharsToIgnore.Characters has unexpected type %T", x) - } - return nil -} - -func _CharsToIgnore_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CharsToIgnore) - switch tag { - case 1: // characters.characters_to_skip - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Characters = &CharsToIgnore_CharactersToSkip{x} - return true, err - case 2: // characters.common_characters_to_ignore - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Characters = &CharsToIgnore_CommonCharactersToIgnore{CharsToIgnore_CharacterGroup(x)} - return true, err - default: - return false, nil - } -} - -func _CharsToIgnore_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CharsToIgnore) - // characters - switch x := m.Characters.(type) { - case *CharsToIgnore_CharactersToSkip: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.CharactersToSkip))) - n += len(x.CharactersToSkip) - case *CharsToIgnore_CommonCharactersToIgnore: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CommonCharactersToIgnore)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Partially mask a string by replacing a given number of characters with a -// fixed character. Masking can start from the beginning or end of the string. -// This can be used on data of any type (numbers, longs, and so on) and when -// de-identifying structured data we'll attempt to preserve the original data's -// type. (This allows you to take a long like 123 and modify it to a string like -// **3. -type CharacterMaskConfig struct { - // Character to mask the sensitive values&mdash;for example, "*" for an - // alphabetic string such as name, or "0" for a numeric string such as ZIP - // code or credit card number. String must have length 1. If not supplied, we - // will default to "*" for strings, 0 for digits. - MaskingCharacter string `protobuf:"bytes,1,opt,name=masking_character,json=maskingCharacter" json:"masking_character,omitempty"` - // Number of characters to mask. If not set, all matching chars will be - // masked. Skipped characters do not count towards this tally. - NumberToMask int32 `protobuf:"varint,2,opt,name=number_to_mask,json=numberToMask" json:"number_to_mask,omitempty"` - // Mask characters in reverse order. For example, if `masking_character` is - // '0', number_to_mask is 14, and `reverse_order` is false, then - // 1234-5678-9012-3456 -> 00000000000000-3456 - // If `masking_character` is '*', `number_to_mask` is 3, and `reverse_order` - // is true, then 12345 -> 12*** - ReverseOrder bool `protobuf:"varint,3,opt,name=reverse_order,json=reverseOrder" json:"reverse_order,omitempty"` - // When masking a string, items in this list will be skipped when replacing. - // For example, if your string is 555-555-5555 and you ask us to skip `-` and - // mask 5 chars with * we would produce ***-*55-5555. - CharactersToIgnore []*CharsToIgnore `protobuf:"bytes,4,rep,name=characters_to_ignore,json=charactersToIgnore" json:"characters_to_ignore,omitempty"` -} - -func (m *CharacterMaskConfig) Reset() { *m = CharacterMaskConfig{} } -func (m *CharacterMaskConfig) String() string { return proto.CompactTextString(m) } -func (*CharacterMaskConfig) ProtoMessage() {} -func (*CharacterMaskConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } - -func (m *CharacterMaskConfig) GetMaskingCharacter() string { - if m != nil { - return m.MaskingCharacter - } - return "" -} - -func (m *CharacterMaskConfig) GetNumberToMask() int32 { - if m != nil { - return m.NumberToMask - } - return 0 -} - -func (m *CharacterMaskConfig) GetReverseOrder() bool { - if m != nil { - return m.ReverseOrder - } - return false -} - -func (m *CharacterMaskConfig) GetCharactersToIgnore() []*CharsToIgnore { - if m != nil { - return m.CharactersToIgnore - } - return nil -} - -// Buckets values based on fixed size ranges. The -// Bucketing transformation can provide all of this functionality, -// but requires more configuration. This message is provided as a convenience to -// the user for simple bucketing strategies. -// The resulting value will be a hyphenated string of -// lower_bound-upper_bound. -// This can be used on data of type: double, long. -// If the bound Value type differs from the type of data -// being transformed, we will first attempt converting the type of the data to -// be transformed to match the type of the bound before comparing. -type FixedSizeBucketingConfig struct { - // Lower bound value of buckets. All values less than `lower_bound` are - // grouped together into a single bucket; for example if `lower_bound` = 10, - // then all values less than 10 are replaced with the value “-10”. [Required]. - LowerBound *Value `protobuf:"bytes,1,opt,name=lower_bound,json=lowerBound" json:"lower_bound,omitempty"` - // Upper bound value of buckets. All values greater than upper_bound are - // grouped together into a single bucket; for example if `upper_bound` = 89, - // then all values greater than 89 are replaced with the value “89+”. - // [Required]. - UpperBound *Value `protobuf:"bytes,2,opt,name=upper_bound,json=upperBound" json:"upper_bound,omitempty"` - // Size of each bucket (except for minimum and maximum buckets). So if - // `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the - // following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, - // 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works. [Required]. - BucketSize float64 `protobuf:"fixed64,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` -} - -func (m *FixedSizeBucketingConfig) Reset() { *m = FixedSizeBucketingConfig{} } -func (m *FixedSizeBucketingConfig) String() string { return proto.CompactTextString(m) } -func (*FixedSizeBucketingConfig) ProtoMessage() {} -func (*FixedSizeBucketingConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } - -func (m *FixedSizeBucketingConfig) GetLowerBound() *Value { - if m != nil { - return m.LowerBound - } - return nil -} - -func (m *FixedSizeBucketingConfig) GetUpperBound() *Value { - if m != nil { - return m.UpperBound - } - return nil -} - -func (m *FixedSizeBucketingConfig) GetBucketSize() float64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -// Generalization function that buckets values based on ranges. The ranges and -// replacement values are dynamically provided by the user for custom behavior, -// such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH -// This can be used on -// data of type: number, long, string, timestamp. -// If the bound `Value` type differs from the type of data being transformed, we -// will first attempt converting the type of the data to be transformed to match -// the type of the bound before comparing. -type BucketingConfig struct { - Buckets []*BucketingConfig_Bucket `protobuf:"bytes,1,rep,name=buckets" json:"buckets,omitempty"` -} - -func (m *BucketingConfig) Reset() { *m = BucketingConfig{} } -func (m *BucketingConfig) String() string { return proto.CompactTextString(m) } -func (*BucketingConfig) ProtoMessage() {} -func (*BucketingConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } - -func (m *BucketingConfig) GetBuckets() []*BucketingConfig_Bucket { - if m != nil { - return m.Buckets - } - return nil -} - -// Buckets represented as ranges, along with replacement values. Ranges must -// be non-overlapping. -type BucketingConfig_Bucket struct { - // Lower bound of the range, inclusive. Type should be the same as max if - // used. - Min *Value `protobuf:"bytes,1,opt,name=min" json:"min,omitempty"` - // Upper bound of the range, exclusive; type must match min. - Max *Value `protobuf:"bytes,2,opt,name=max" json:"max,omitempty"` - // Replacement value for this bucket. If not provided - // the default behavior will be to hyphenate the min-max range. - ReplacementValue *Value `protobuf:"bytes,3,opt,name=replacement_value,json=replacementValue" json:"replacement_value,omitempty"` -} - -func (m *BucketingConfig_Bucket) Reset() { *m = BucketingConfig_Bucket{} } -func (m *BucketingConfig_Bucket) String() string { return proto.CompactTextString(m) } -func (*BucketingConfig_Bucket) ProtoMessage() {} -func (*BucketingConfig_Bucket) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46, 0} } - -func (m *BucketingConfig_Bucket) GetMin() *Value { - if m != nil { - return m.Min - } - return nil -} - -func (m *BucketingConfig_Bucket) GetMax() *Value { - if m != nil { - return m.Max - } - return nil -} - -func (m *BucketingConfig_Bucket) GetReplacementValue() *Value { - if m != nil { - return m.ReplacementValue - } - return nil -} - -// Replaces an identifier with a surrogate using FPE with the FFX -// mode of operation. -// The identifier must be representable by the US-ASCII character set. -// For a given crypto key and context, the same identifier will be -// replaced with the same surrogate. -// Identifiers must be at least two characters long. -// In the case that the identifier is the empty string, it will be skipped. -type CryptoReplaceFfxFpeConfig struct { - // The key used by the encryption algorithm. [required] - CryptoKey *CryptoKey `protobuf:"bytes,1,opt,name=crypto_key,json=cryptoKey" json:"crypto_key,omitempty"` - // A context may be used for higher security since the same - // identifier in two different contexts likely will be given a distinct - // surrogate. The principle is that the likeliness is inversely related - // to the ratio of the number of distinct identifiers per context over the - // number of possible surrogates: As long as this ratio is small, the - // likehood is large. - // - // If the context is not set, a default tweak will be used. - // If the context is set but: - // - // 1. there is no record present when transforming a given value or - // 1. the field is not present when transforming a given value, - // - // a default tweak will be used. - // - // Note that case (1) is expected when an `InfoTypeTransformation` is - // applied to both structured and non-structured `ContentItem`s. - // Currently, the referenced field may be of value type integer or string. - // - // The tweak is constructed as a sequence of bytes in big endian byte order - // such that: - // - // - a 64 bit integer is encoded followed by a single byte of value 1 - // - a string is encoded in UTF-8 format followed by a single byte of value 2 - // - // This is also known as the 'tweak', as in tweakable encryption. - Context *FieldId `protobuf:"bytes,2,opt,name=context" json:"context,omitempty"` - // Types that are valid to be assigned to Alphabet: - // *CryptoReplaceFfxFpeConfig_CommonAlphabet - // *CryptoReplaceFfxFpeConfig_CustomAlphabet - // *CryptoReplaceFfxFpeConfig_Radix - Alphabet isCryptoReplaceFfxFpeConfig_Alphabet `protobuf_oneof:"alphabet"` -} - -func (m *CryptoReplaceFfxFpeConfig) Reset() { *m = CryptoReplaceFfxFpeConfig{} } -func (m *CryptoReplaceFfxFpeConfig) String() string { return proto.CompactTextString(m) } -func (*CryptoReplaceFfxFpeConfig) ProtoMessage() {} -func (*CryptoReplaceFfxFpeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } - -type isCryptoReplaceFfxFpeConfig_Alphabet interface { - isCryptoReplaceFfxFpeConfig_Alphabet() -} - -type CryptoReplaceFfxFpeConfig_CommonAlphabet struct { - CommonAlphabet CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet `protobuf:"varint,4,opt,name=common_alphabet,json=commonAlphabet,enum=google.privacy.dlp.v2beta1.CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet,oneof"` -} -type CryptoReplaceFfxFpeConfig_CustomAlphabet struct { - CustomAlphabet string `protobuf:"bytes,5,opt,name=custom_alphabet,json=customAlphabet,oneof"` -} -type CryptoReplaceFfxFpeConfig_Radix struct { - Radix int32 `protobuf:"varint,6,opt,name=radix,oneof"` -} - -func (*CryptoReplaceFfxFpeConfig_CommonAlphabet) isCryptoReplaceFfxFpeConfig_Alphabet() {} -func (*CryptoReplaceFfxFpeConfig_CustomAlphabet) isCryptoReplaceFfxFpeConfig_Alphabet() {} -func (*CryptoReplaceFfxFpeConfig_Radix) isCryptoReplaceFfxFpeConfig_Alphabet() {} - -func (m *CryptoReplaceFfxFpeConfig) GetAlphabet() isCryptoReplaceFfxFpeConfig_Alphabet { - if m != nil { - return m.Alphabet - } - return nil -} - -func (m *CryptoReplaceFfxFpeConfig) GetCryptoKey() *CryptoKey { - if m != nil { - return m.CryptoKey - } - return nil -} - -func (m *CryptoReplaceFfxFpeConfig) GetContext() *FieldId { - if m != nil { - return m.Context - } - return nil -} - -func (m *CryptoReplaceFfxFpeConfig) GetCommonAlphabet() CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet { - if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_CommonAlphabet); ok { - return x.CommonAlphabet - } - return CryptoReplaceFfxFpeConfig_FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED -} - -func (m *CryptoReplaceFfxFpeConfig) GetCustomAlphabet() string { - if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_CustomAlphabet); ok { - return x.CustomAlphabet - } - return "" -} - -func (m *CryptoReplaceFfxFpeConfig) GetRadix() int32 { - if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_Radix); ok { - return x.Radix - } - return 0 -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CryptoReplaceFfxFpeConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CryptoReplaceFfxFpeConfig_OneofMarshaler, _CryptoReplaceFfxFpeConfig_OneofUnmarshaler, _CryptoReplaceFfxFpeConfig_OneofSizer, []interface{}{ - (*CryptoReplaceFfxFpeConfig_CommonAlphabet)(nil), - (*CryptoReplaceFfxFpeConfig_CustomAlphabet)(nil), - (*CryptoReplaceFfxFpeConfig_Radix)(nil), - } -} - -func _CryptoReplaceFfxFpeConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CryptoReplaceFfxFpeConfig) - // alphabet - switch x := m.Alphabet.(type) { - case *CryptoReplaceFfxFpeConfig_CommonAlphabet: - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CommonAlphabet)) - case *CryptoReplaceFfxFpeConfig_CustomAlphabet: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.CustomAlphabet) - case *CryptoReplaceFfxFpeConfig_Radix: - b.EncodeVarint(6<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Radix)) - case nil: - default: - return fmt.Errorf("CryptoReplaceFfxFpeConfig.Alphabet has unexpected type %T", x) - } - return nil -} - -func _CryptoReplaceFfxFpeConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CryptoReplaceFfxFpeConfig) - switch tag { - case 4: // alphabet.common_alphabet - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Alphabet = &CryptoReplaceFfxFpeConfig_CommonAlphabet{CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet(x)} - return true, err - case 5: // alphabet.custom_alphabet - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Alphabet = &CryptoReplaceFfxFpeConfig_CustomAlphabet{x} - return true, err - case 6: // alphabet.radix - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Alphabet = &CryptoReplaceFfxFpeConfig_Radix{int32(x)} - return true, err - default: - return false, nil - } -} - -func _CryptoReplaceFfxFpeConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CryptoReplaceFfxFpeConfig) - // alphabet - switch x := m.Alphabet.(type) { - case *CryptoReplaceFfxFpeConfig_CommonAlphabet: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CommonAlphabet)) - case *CryptoReplaceFfxFpeConfig_CustomAlphabet: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.CustomAlphabet))) - n += len(x.CustomAlphabet) - case *CryptoReplaceFfxFpeConfig_Radix: - n += proto.SizeVarint(6<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Radix)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// This is a data encryption key (DEK) (as opposed to -// a key encryption key (KEK) stored by KMS). -// When using KMS to wrap/unwrap DEKs, be sure to set an appropriate -// IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot -// unwrap the data crypto key. -type CryptoKey struct { - // Types that are valid to be assigned to Source: - // *CryptoKey_Transient - // *CryptoKey_Unwrapped - // *CryptoKey_KmsWrapped - Source isCryptoKey_Source `protobuf_oneof:"source"` -} - -func (m *CryptoKey) Reset() { *m = CryptoKey{} } -func (m *CryptoKey) String() string { return proto.CompactTextString(m) } -func (*CryptoKey) ProtoMessage() {} -func (*CryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } - -type isCryptoKey_Source interface { - isCryptoKey_Source() -} - -type CryptoKey_Transient struct { - Transient *TransientCryptoKey `protobuf:"bytes,1,opt,name=transient,oneof"` -} -type CryptoKey_Unwrapped struct { - Unwrapped *UnwrappedCryptoKey `protobuf:"bytes,2,opt,name=unwrapped,oneof"` -} -type CryptoKey_KmsWrapped struct { - KmsWrapped *KmsWrappedCryptoKey `protobuf:"bytes,3,opt,name=kms_wrapped,json=kmsWrapped,oneof"` -} - -func (*CryptoKey_Transient) isCryptoKey_Source() {} -func (*CryptoKey_Unwrapped) isCryptoKey_Source() {} -func (*CryptoKey_KmsWrapped) isCryptoKey_Source() {} - -func (m *CryptoKey) GetSource() isCryptoKey_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *CryptoKey) GetTransient() *TransientCryptoKey { - if x, ok := m.GetSource().(*CryptoKey_Transient); ok { - return x.Transient - } - return nil -} - -func (m *CryptoKey) GetUnwrapped() *UnwrappedCryptoKey { - if x, ok := m.GetSource().(*CryptoKey_Unwrapped); ok { - return x.Unwrapped - } - return nil -} - -func (m *CryptoKey) GetKmsWrapped() *KmsWrappedCryptoKey { - if x, ok := m.GetSource().(*CryptoKey_KmsWrapped); ok { - return x.KmsWrapped - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CryptoKey) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CryptoKey_OneofMarshaler, _CryptoKey_OneofUnmarshaler, _CryptoKey_OneofSizer, []interface{}{ - (*CryptoKey_Transient)(nil), - (*CryptoKey_Unwrapped)(nil), - (*CryptoKey_KmsWrapped)(nil), - } -} - -func _CryptoKey_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CryptoKey) - // source - switch x := m.Source.(type) { - case *CryptoKey_Transient: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Transient); err != nil { - return err - } - case *CryptoKey_Unwrapped: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Unwrapped); err != nil { - return err - } - case *CryptoKey_KmsWrapped: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KmsWrapped); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CryptoKey.Source has unexpected type %T", x) - } - return nil -} - -func _CryptoKey_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CryptoKey) - switch tag { - case 1: // source.transient - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransientCryptoKey) - err := b.DecodeMessage(msg) - m.Source = &CryptoKey_Transient{msg} - return true, err - case 2: // source.unwrapped - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(UnwrappedCryptoKey) - err := b.DecodeMessage(msg) - m.Source = &CryptoKey_Unwrapped{msg} - return true, err - case 3: // source.kms_wrapped - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(KmsWrappedCryptoKey) - err := b.DecodeMessage(msg) - m.Source = &CryptoKey_KmsWrapped{msg} - return true, err - default: - return false, nil - } -} - -func _CryptoKey_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CryptoKey) - // source - switch x := m.Source.(type) { - case *CryptoKey_Transient: - s := proto.Size(x.Transient) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *CryptoKey_Unwrapped: - s := proto.Size(x.Unwrapped) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *CryptoKey_KmsWrapped: - s := proto.Size(x.KmsWrapped) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Use this to have a random data crypto key generated. -// It will be discarded after the operation/request finishes. -type TransientCryptoKey struct { - // Name of the key. [required] - // This is an arbitrary string used to differentiate different keys. - // A unique key is generated per name: two separate `TransientCryptoKey` - // protos share the same generated key if their names are the same. - // When the data crypto key is generated, this name is not used in any way - // (repeating the api call will result in a different key being generated). - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *TransientCryptoKey) Reset() { *m = TransientCryptoKey{} } -func (m *TransientCryptoKey) String() string { return proto.CompactTextString(m) } -func (*TransientCryptoKey) ProtoMessage() {} -func (*TransientCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } - -func (m *TransientCryptoKey) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Using raw keys is prone to security risks due to accidentally -// leaking the key. Choose another type of key if possible. -type UnwrappedCryptoKey struct { - // The AES 128/192/256 bit key. [required] - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` -} - -func (m *UnwrappedCryptoKey) Reset() { *m = UnwrappedCryptoKey{} } -func (m *UnwrappedCryptoKey) String() string { return proto.CompactTextString(m) } -func (*UnwrappedCryptoKey) ProtoMessage() {} -func (*UnwrappedCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } - -func (m *UnwrappedCryptoKey) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -// Include to use an existing data crypto key wrapped by KMS. -// Authorization requires the following IAM permissions when sending a request -// to perform a crypto transformation using a kms-wrapped crypto key: -// dlp.kms.encrypt -type KmsWrappedCryptoKey struct { - // The wrapped data crypto key. [required] - WrappedKey []byte `protobuf:"bytes,1,opt,name=wrapped_key,json=wrappedKey,proto3" json:"wrapped_key,omitempty"` - // The resource name of the KMS CryptoKey to use for unwrapping. [required] - CryptoKeyName string `protobuf:"bytes,2,opt,name=crypto_key_name,json=cryptoKeyName" json:"crypto_key_name,omitempty"` -} - -func (m *KmsWrappedCryptoKey) Reset() { *m = KmsWrappedCryptoKey{} } -func (m *KmsWrappedCryptoKey) String() string { return proto.CompactTextString(m) } -func (*KmsWrappedCryptoKey) ProtoMessage() {} -func (*KmsWrappedCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } - -func (m *KmsWrappedCryptoKey) GetWrappedKey() []byte { - if m != nil { - return m.WrappedKey - } - return nil -} - -func (m *KmsWrappedCryptoKey) GetCryptoKeyName() string { - if m != nil { - return m.CryptoKeyName - } - return "" -} - -// A type of transformation that will scan unstructured text and -// apply various `PrimitiveTransformation`s to each finding, where the -// transformation is applied to only values that were identified as a specific -// info_type. -type InfoTypeTransformations struct { - // Transformation for each info type. Cannot specify more than one - // for a given info type. [required] - Transformations []*InfoTypeTransformations_InfoTypeTransformation `protobuf:"bytes,1,rep,name=transformations" json:"transformations,omitempty"` -} - -func (m *InfoTypeTransformations) Reset() { *m = InfoTypeTransformations{} } -func (m *InfoTypeTransformations) String() string { return proto.CompactTextString(m) } -func (*InfoTypeTransformations) ProtoMessage() {} -func (*InfoTypeTransformations) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } - -func (m *InfoTypeTransformations) GetTransformations() []*InfoTypeTransformations_InfoTypeTransformation { - if m != nil { - return m.Transformations - } - return nil -} - -// A transformation to apply to text that is identified as a specific -// info_type. -type InfoTypeTransformations_InfoTypeTransformation struct { - // Info types to apply the transformation to. Empty list will match all - // available info types for this transformation. - InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` - // Primitive transformation to apply to the info type. [required] - PrimitiveTransformation *PrimitiveTransformation `protobuf:"bytes,2,opt,name=primitive_transformation,json=primitiveTransformation" json:"primitive_transformation,omitempty"` -} - -func (m *InfoTypeTransformations_InfoTypeTransformation) Reset() { - *m = InfoTypeTransformations_InfoTypeTransformation{} -} -func (m *InfoTypeTransformations_InfoTypeTransformation) String() string { - return proto.CompactTextString(m) -} -func (*InfoTypeTransformations_InfoTypeTransformation) ProtoMessage() {} -func (*InfoTypeTransformations_InfoTypeTransformation) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{52, 0} -} - -func (m *InfoTypeTransformations_InfoTypeTransformation) GetInfoTypes() []*InfoType { - if m != nil { - return m.InfoTypes - } - return nil -} - -func (m *InfoTypeTransformations_InfoTypeTransformation) GetPrimitiveTransformation() *PrimitiveTransformation { - if m != nil { - return m.PrimitiveTransformation - } - return nil -} - -// The transformation to apply to the field. -type FieldTransformation struct { - // Input field(s) to apply the transformation to. [required] - Fields []*FieldId `protobuf:"bytes,1,rep,name=fields" json:"fields,omitempty"` - // Only apply the transformation if the condition evaluates to true for the - // given `RecordCondition`. The conditions are allowed to reference fields - // that are not used in the actual transformation. [optional] - // - // Example Use Cases: - // - // - Apply a different bucket transformation to an age column if the zip code - // column for the same record is within a specific range. - // - Redact a field if the date of birth field is greater than 85. - Condition *RecordCondition `protobuf:"bytes,3,opt,name=condition" json:"condition,omitempty"` - // Transformation to apply. [required] - // - // Types that are valid to be assigned to Transformation: - // *FieldTransformation_PrimitiveTransformation - // *FieldTransformation_InfoTypeTransformations - Transformation isFieldTransformation_Transformation `protobuf_oneof:"transformation"` -} - -func (m *FieldTransformation) Reset() { *m = FieldTransformation{} } -func (m *FieldTransformation) String() string { return proto.CompactTextString(m) } -func (*FieldTransformation) ProtoMessage() {} -func (*FieldTransformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } - -type isFieldTransformation_Transformation interface { - isFieldTransformation_Transformation() -} - -type FieldTransformation_PrimitiveTransformation struct { - PrimitiveTransformation *PrimitiveTransformation `protobuf:"bytes,4,opt,name=primitive_transformation,json=primitiveTransformation,oneof"` -} -type FieldTransformation_InfoTypeTransformations struct { - InfoTypeTransformations *InfoTypeTransformations `protobuf:"bytes,5,opt,name=info_type_transformations,json=infoTypeTransformations,oneof"` -} - -func (*FieldTransformation_PrimitiveTransformation) isFieldTransformation_Transformation() {} -func (*FieldTransformation_InfoTypeTransformations) isFieldTransformation_Transformation() {} - -func (m *FieldTransformation) GetTransformation() isFieldTransformation_Transformation { - if m != nil { - return m.Transformation - } - return nil -} - -func (m *FieldTransformation) GetFields() []*FieldId { - if m != nil { - return m.Fields - } - return nil -} - -func (m *FieldTransformation) GetCondition() *RecordCondition { - if m != nil { - return m.Condition - } - return nil -} - -func (m *FieldTransformation) GetPrimitiveTransformation() *PrimitiveTransformation { - if x, ok := m.GetTransformation().(*FieldTransformation_PrimitiveTransformation); ok { - return x.PrimitiveTransformation - } - return nil -} - -func (m *FieldTransformation) GetInfoTypeTransformations() *InfoTypeTransformations { - if x, ok := m.GetTransformation().(*FieldTransformation_InfoTypeTransformations); ok { - return x.InfoTypeTransformations - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*FieldTransformation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _FieldTransformation_OneofMarshaler, _FieldTransformation_OneofUnmarshaler, _FieldTransformation_OneofSizer, []interface{}{ - (*FieldTransformation_PrimitiveTransformation)(nil), - (*FieldTransformation_InfoTypeTransformations)(nil), - } -} - -func _FieldTransformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*FieldTransformation) - // transformation - switch x := m.Transformation.(type) { - case *FieldTransformation_PrimitiveTransformation: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PrimitiveTransformation); err != nil { - return err - } - case *FieldTransformation_InfoTypeTransformations: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InfoTypeTransformations); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("FieldTransformation.Transformation has unexpected type %T", x) - } - return nil -} - -func _FieldTransformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*FieldTransformation) - switch tag { - case 4: // transformation.primitive_transformation - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrimitiveTransformation) - err := b.DecodeMessage(msg) - m.Transformation = &FieldTransformation_PrimitiveTransformation{msg} - return true, err - case 5: // transformation.info_type_transformations - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InfoTypeTransformations) - err := b.DecodeMessage(msg) - m.Transformation = &FieldTransformation_InfoTypeTransformations{msg} - return true, err - default: - return false, nil - } -} - -func _FieldTransformation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*FieldTransformation) - // transformation - switch x := m.Transformation.(type) { - case *FieldTransformation_PrimitiveTransformation: - s := proto.Size(x.PrimitiveTransformation) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *FieldTransformation_InfoTypeTransformations: - s := proto.Size(x.InfoTypeTransformations) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A type of transformation that is applied over structured data such as a -// table. -type RecordTransformations struct { - // Transform the record by applying various field transformations. - FieldTransformations []*FieldTransformation `protobuf:"bytes,1,rep,name=field_transformations,json=fieldTransformations" json:"field_transformations,omitempty"` - // Configuration defining which records get suppressed entirely. Records that - // match any suppression rule are omitted from the output [optional]. - RecordSuppressions []*RecordSuppression `protobuf:"bytes,2,rep,name=record_suppressions,json=recordSuppressions" json:"record_suppressions,omitempty"` -} - -func (m *RecordTransformations) Reset() { *m = RecordTransformations{} } -func (m *RecordTransformations) String() string { return proto.CompactTextString(m) } -func (*RecordTransformations) ProtoMessage() {} -func (*RecordTransformations) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } - -func (m *RecordTransformations) GetFieldTransformations() []*FieldTransformation { - if m != nil { - return m.FieldTransformations - } - return nil -} - -func (m *RecordTransformations) GetRecordSuppressions() []*RecordSuppression { - if m != nil { - return m.RecordSuppressions - } - return nil -} - -// Configuration to suppress records whose suppression conditions evaluate to -// true. -type RecordSuppression struct { - Condition *RecordCondition `protobuf:"bytes,1,opt,name=condition" json:"condition,omitempty"` -} - -func (m *RecordSuppression) Reset() { *m = RecordSuppression{} } -func (m *RecordSuppression) String() string { return proto.CompactTextString(m) } -func (*RecordSuppression) ProtoMessage() {} -func (*RecordSuppression) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } - -func (m *RecordSuppression) GetCondition() *RecordCondition { - if m != nil { - return m.Condition - } - return nil -} - -// A condition for determining whether a transformation should be applied to -// a field. -type RecordCondition struct { - Expressions *RecordCondition_Expressions `protobuf:"bytes,3,opt,name=expressions" json:"expressions,omitempty"` -} - -func (m *RecordCondition) Reset() { *m = RecordCondition{} } -func (m *RecordCondition) String() string { return proto.CompactTextString(m) } -func (*RecordCondition) ProtoMessage() {} -func (*RecordCondition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } - -func (m *RecordCondition) GetExpressions() *RecordCondition_Expressions { - if m != nil { - return m.Expressions - } - return nil -} - -// The field type of `value` and `field` do not need to match to be -// considered equal, but not all comparisons are possible. -// -// A `value` of type: -// -// - `string` can be compared against all other types -// - `boolean` can only be compared against other booleans -// - `integer` can be compared against doubles or a string if the string value -// can be parsed as an integer. -// - `double` can be compared against integers or a string if the string can -// be parsed as a double. -// - `Timestamp` can be compared against strings in RFC 3339 date string -// format. -// - `TimeOfDay` can be compared against timestamps and strings in the format -// of 'HH:mm:ss'. -// -// If we fail to compare do to type mismatch, a warning will be given and -// the condition will evaluate to false. -type RecordCondition_Condition struct { - // Field within the record this condition is evaluated against. [required] - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` - // Operator used to compare the field or info type to the value. [required] - Operator RelationalOperator `protobuf:"varint,3,opt,name=operator,enum=google.privacy.dlp.v2beta1.RelationalOperator" json:"operator,omitempty"` - // Value to compare against. [Required, except for `EXISTS` tests.] - Value *Value `protobuf:"bytes,4,opt,name=value" json:"value,omitempty"` -} - -func (m *RecordCondition_Condition) Reset() { *m = RecordCondition_Condition{} } -func (m *RecordCondition_Condition) String() string { return proto.CompactTextString(m) } -func (*RecordCondition_Condition) ProtoMessage() {} -func (*RecordCondition_Condition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56, 0} } - -func (m *RecordCondition_Condition) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -func (m *RecordCondition_Condition) GetOperator() RelationalOperator { - if m != nil { - return m.Operator - } - return RelationalOperator_RELATIONAL_OPERATOR_UNSPECIFIED -} - -func (m *RecordCondition_Condition) GetValue() *Value { - if m != nil { - return m.Value - } - return nil -} - -type RecordCondition_Conditions struct { - Conditions []*RecordCondition_Condition `protobuf:"bytes,1,rep,name=conditions" json:"conditions,omitempty"` -} - -func (m *RecordCondition_Conditions) Reset() { *m = RecordCondition_Conditions{} } -func (m *RecordCondition_Conditions) String() string { return proto.CompactTextString(m) } -func (*RecordCondition_Conditions) ProtoMessage() {} -func (*RecordCondition_Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56, 1} } - -func (m *RecordCondition_Conditions) GetConditions() []*RecordCondition_Condition { - if m != nil { - return m.Conditions - } - return nil -} - -// A collection of expressions -type RecordCondition_Expressions struct { - // The operator to apply to the result of conditions. Default and currently - // only supported value is `AND`. - LogicalOperator RecordCondition_Expressions_LogicalOperator `protobuf:"varint,1,opt,name=logical_operator,json=logicalOperator,enum=google.privacy.dlp.v2beta1.RecordCondition_Expressions_LogicalOperator" json:"logical_operator,omitempty"` - // Types that are valid to be assigned to Type: - // *RecordCondition_Expressions_Conditions - Type isRecordCondition_Expressions_Type `protobuf_oneof:"type"` -} - -func (m *RecordCondition_Expressions) Reset() { *m = RecordCondition_Expressions{} } -func (m *RecordCondition_Expressions) String() string { return proto.CompactTextString(m) } -func (*RecordCondition_Expressions) ProtoMessage() {} -func (*RecordCondition_Expressions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56, 2} } - -type isRecordCondition_Expressions_Type interface { - isRecordCondition_Expressions_Type() -} - -type RecordCondition_Expressions_Conditions struct { - Conditions *RecordCondition_Conditions `protobuf:"bytes,3,opt,name=conditions,oneof"` -} - -func (*RecordCondition_Expressions_Conditions) isRecordCondition_Expressions_Type() {} - -func (m *RecordCondition_Expressions) GetType() isRecordCondition_Expressions_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *RecordCondition_Expressions) GetLogicalOperator() RecordCondition_Expressions_LogicalOperator { - if m != nil { - return m.LogicalOperator - } - return RecordCondition_Expressions_LOGICAL_OPERATOR_UNSPECIFIED -} - -func (m *RecordCondition_Expressions) GetConditions() *RecordCondition_Conditions { - if x, ok := m.GetType().(*RecordCondition_Expressions_Conditions); ok { - return x.Conditions - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RecordCondition_Expressions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RecordCondition_Expressions_OneofMarshaler, _RecordCondition_Expressions_OneofUnmarshaler, _RecordCondition_Expressions_OneofSizer, []interface{}{ - (*RecordCondition_Expressions_Conditions)(nil), - } -} - -func _RecordCondition_Expressions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RecordCondition_Expressions) - // type - switch x := m.Type.(type) { - case *RecordCondition_Expressions_Conditions: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Conditions); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RecordCondition_Expressions.Type has unexpected type %T", x) - } - return nil -} - -func _RecordCondition_Expressions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RecordCondition_Expressions) - switch tag { - case 3: // type.conditions - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RecordCondition_Conditions) - err := b.DecodeMessage(msg) - m.Type = &RecordCondition_Expressions_Conditions{msg} - return true, err - default: - return false, nil - } -} - -func _RecordCondition_Expressions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RecordCondition_Expressions) - // type - switch x := m.Type.(type) { - case *RecordCondition_Expressions_Conditions: - s := proto.Size(x.Conditions) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// High level summary of deidentification. -type DeidentificationSummary struct { - // Total size in bytes that were transformed in some way. - TransformedBytes int64 `protobuf:"varint,2,opt,name=transformed_bytes,json=transformedBytes" json:"transformed_bytes,omitempty"` - // Transformations applied to the dataset. - TransformationSummaries []*TransformationSummary `protobuf:"bytes,3,rep,name=transformation_summaries,json=transformationSummaries" json:"transformation_summaries,omitempty"` -} - -func (m *DeidentificationSummary) Reset() { *m = DeidentificationSummary{} } -func (m *DeidentificationSummary) String() string { return proto.CompactTextString(m) } -func (*DeidentificationSummary) ProtoMessage() {} -func (*DeidentificationSummary) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } - -func (m *DeidentificationSummary) GetTransformedBytes() int64 { - if m != nil { - return m.TransformedBytes - } - return 0 -} - -func (m *DeidentificationSummary) GetTransformationSummaries() []*TransformationSummary { - if m != nil { - return m.TransformationSummaries - } - return nil -} - -// Summary of a single tranformation. -type TransformationSummary struct { - // Set if the transformation was limited to a specific info_type. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Set if the transformation was limited to a specific FieldId. - Field *FieldId `protobuf:"bytes,2,opt,name=field" json:"field,omitempty"` - // The specific transformation these stats apply to. - Transformation *PrimitiveTransformation `protobuf:"bytes,3,opt,name=transformation" json:"transformation,omitempty"` - // The field transformation that was applied. This list will contain - // multiple only in the case of errors. - FieldTransformations []*FieldTransformation `protobuf:"bytes,5,rep,name=field_transformations,json=fieldTransformations" json:"field_transformations,omitempty"` - // The specific suppression option these stats apply to. - RecordSuppress *RecordSuppression `protobuf:"bytes,6,opt,name=record_suppress,json=recordSuppress" json:"record_suppress,omitempty"` - Results []*TransformationSummary_SummaryResult `protobuf:"bytes,4,rep,name=results" json:"results,omitempty"` -} - -func (m *TransformationSummary) Reset() { *m = TransformationSummary{} } -func (m *TransformationSummary) String() string { return proto.CompactTextString(m) } -func (*TransformationSummary) ProtoMessage() {} -func (*TransformationSummary) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } - -func (m *TransformationSummary) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *TransformationSummary) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -func (m *TransformationSummary) GetTransformation() *PrimitiveTransformation { - if m != nil { - return m.Transformation - } - return nil -} - -func (m *TransformationSummary) GetFieldTransformations() []*FieldTransformation { - if m != nil { - return m.FieldTransformations - } - return nil -} - -func (m *TransformationSummary) GetRecordSuppress() *RecordSuppression { - if m != nil { - return m.RecordSuppress - } - return nil -} - -func (m *TransformationSummary) GetResults() []*TransformationSummary_SummaryResult { - if m != nil { - return m.Results - } - return nil -} - -// A collection that informs the user the number of times a particular -// `TransformationResultCode` and error details occurred. -type TransformationSummary_SummaryResult struct { - Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"` - Code TransformationSummary_TransformationResultCode `protobuf:"varint,2,opt,name=code,enum=google.privacy.dlp.v2beta1.TransformationSummary_TransformationResultCode" json:"code,omitempty"` - // A place for warnings or errors to show up if a transformation didn't - // work as expected. - Details string `protobuf:"bytes,3,opt,name=details" json:"details,omitempty"` -} - -func (m *TransformationSummary_SummaryResult) Reset() { *m = TransformationSummary_SummaryResult{} } -func (m *TransformationSummary_SummaryResult) String() string { return proto.CompactTextString(m) } -func (*TransformationSummary_SummaryResult) ProtoMessage() {} -func (*TransformationSummary_SummaryResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{58, 0} -} - -func (m *TransformationSummary_SummaryResult) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -func (m *TransformationSummary_SummaryResult) GetCode() TransformationSummary_TransformationResultCode { - if m != nil { - return m.Code - } - return TransformationSummary_TRANSFORMATION_RESULT_CODE_UNSPECIFIED -} - -func (m *TransformationSummary_SummaryResult) GetDetails() string { - if m != nil { - return m.Details - } - return "" -} - -func init() { - proto.RegisterType((*InspectConfig)(nil), "google.privacy.dlp.v2beta1.InspectConfig") - proto.RegisterType((*InspectConfig_InfoTypeLimit)(nil), "google.privacy.dlp.v2beta1.InspectConfig.InfoTypeLimit") - proto.RegisterType((*OperationConfig)(nil), "google.privacy.dlp.v2beta1.OperationConfig") - proto.RegisterType((*ContentItem)(nil), "google.privacy.dlp.v2beta1.ContentItem") - proto.RegisterType((*Table)(nil), "google.privacy.dlp.v2beta1.Table") - proto.RegisterType((*Table_Row)(nil), "google.privacy.dlp.v2beta1.Table.Row") - proto.RegisterType((*InspectResult)(nil), "google.privacy.dlp.v2beta1.InspectResult") - proto.RegisterType((*Finding)(nil), "google.privacy.dlp.v2beta1.Finding") - proto.RegisterType((*Location)(nil), "google.privacy.dlp.v2beta1.Location") - proto.RegisterType((*TableLocation)(nil), "google.privacy.dlp.v2beta1.TableLocation") - proto.RegisterType((*Range)(nil), "google.privacy.dlp.v2beta1.Range") - proto.RegisterType((*ImageLocation)(nil), "google.privacy.dlp.v2beta1.ImageLocation") - proto.RegisterType((*RedactContentRequest)(nil), "google.privacy.dlp.v2beta1.RedactContentRequest") - proto.RegisterType((*RedactContentRequest_ReplaceConfig)(nil), "google.privacy.dlp.v2beta1.RedactContentRequest.ReplaceConfig") - proto.RegisterType((*RedactContentRequest_ImageRedactionConfig)(nil), "google.privacy.dlp.v2beta1.RedactContentRequest.ImageRedactionConfig") - proto.RegisterType((*Color)(nil), "google.privacy.dlp.v2beta1.Color") - proto.RegisterType((*RedactContentResponse)(nil), "google.privacy.dlp.v2beta1.RedactContentResponse") - proto.RegisterType((*DeidentifyContentRequest)(nil), "google.privacy.dlp.v2beta1.DeidentifyContentRequest") - proto.RegisterType((*DeidentifyContentResponse)(nil), "google.privacy.dlp.v2beta1.DeidentifyContentResponse") - proto.RegisterType((*InspectContentRequest)(nil), "google.privacy.dlp.v2beta1.InspectContentRequest") - proto.RegisterType((*InspectContentResponse)(nil), "google.privacy.dlp.v2beta1.InspectContentResponse") - proto.RegisterType((*CreateInspectOperationRequest)(nil), "google.privacy.dlp.v2beta1.CreateInspectOperationRequest") - proto.RegisterType((*OutputStorageConfig)(nil), "google.privacy.dlp.v2beta1.OutputStorageConfig") - proto.RegisterType((*InfoTypeStatistics)(nil), "google.privacy.dlp.v2beta1.InfoTypeStatistics") - proto.RegisterType((*InspectOperationMetadata)(nil), "google.privacy.dlp.v2beta1.InspectOperationMetadata") - proto.RegisterType((*InspectOperationResult)(nil), "google.privacy.dlp.v2beta1.InspectOperationResult") - proto.RegisterType((*ListInspectFindingsRequest)(nil), "google.privacy.dlp.v2beta1.ListInspectFindingsRequest") - proto.RegisterType((*ListInspectFindingsResponse)(nil), "google.privacy.dlp.v2beta1.ListInspectFindingsResponse") - proto.RegisterType((*InfoTypeDescription)(nil), "google.privacy.dlp.v2beta1.InfoTypeDescription") - proto.RegisterType((*ListInfoTypesRequest)(nil), "google.privacy.dlp.v2beta1.ListInfoTypesRequest") - proto.RegisterType((*ListInfoTypesResponse)(nil), "google.privacy.dlp.v2beta1.ListInfoTypesResponse") - proto.RegisterType((*CategoryDescription)(nil), "google.privacy.dlp.v2beta1.CategoryDescription") - proto.RegisterType((*ListRootCategoriesRequest)(nil), "google.privacy.dlp.v2beta1.ListRootCategoriesRequest") - proto.RegisterType((*ListRootCategoriesResponse)(nil), "google.privacy.dlp.v2beta1.ListRootCategoriesResponse") - proto.RegisterType((*AnalyzeDataSourceRiskRequest)(nil), "google.privacy.dlp.v2beta1.AnalyzeDataSourceRiskRequest") - proto.RegisterType((*PrivacyMetric)(nil), "google.privacy.dlp.v2beta1.PrivacyMetric") - proto.RegisterType((*PrivacyMetric_NumericalStatsConfig)(nil), "google.privacy.dlp.v2beta1.PrivacyMetric.NumericalStatsConfig") - proto.RegisterType((*PrivacyMetric_CategoricalStatsConfig)(nil), "google.privacy.dlp.v2beta1.PrivacyMetric.CategoricalStatsConfig") - proto.RegisterType((*PrivacyMetric_KAnonymityConfig)(nil), "google.privacy.dlp.v2beta1.PrivacyMetric.KAnonymityConfig") - proto.RegisterType((*PrivacyMetric_LDiversityConfig)(nil), "google.privacy.dlp.v2beta1.PrivacyMetric.LDiversityConfig") - proto.RegisterType((*RiskAnalysisOperationMetadata)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationMetadata") - proto.RegisterType((*RiskAnalysisOperationResult)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult") - proto.RegisterType((*RiskAnalysisOperationResult_NumericalStatsResult)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.NumericalStatsResult") - proto.RegisterType((*RiskAnalysisOperationResult_CategoricalStatsResult)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.CategoricalStatsResult") - proto.RegisterType((*RiskAnalysisOperationResult_CategoricalStatsResult_CategoricalStatsHistogramBucket)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.CategoricalStatsResult.CategoricalStatsHistogramBucket") - proto.RegisterType((*RiskAnalysisOperationResult_KAnonymityResult)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.KAnonymityResult") - proto.RegisterType((*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityEquivalenceClass)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.KAnonymityResult.KAnonymityEquivalenceClass") - proto.RegisterType((*RiskAnalysisOperationResult_KAnonymityResult_KAnonymityHistogramBucket)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.KAnonymityResult.KAnonymityHistogramBucket") - proto.RegisterType((*RiskAnalysisOperationResult_LDiversityResult)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.LDiversityResult") - proto.RegisterType((*RiskAnalysisOperationResult_LDiversityResult_LDiversityEquivalenceClass)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.LDiversityResult.LDiversityEquivalenceClass") - proto.RegisterType((*RiskAnalysisOperationResult_LDiversityResult_LDiversityHistogramBucket)(nil), "google.privacy.dlp.v2beta1.RiskAnalysisOperationResult.LDiversityResult.LDiversityHistogramBucket") - proto.RegisterType((*ValueFrequency)(nil), "google.privacy.dlp.v2beta1.ValueFrequency") - proto.RegisterType((*Value)(nil), "google.privacy.dlp.v2beta1.Value") - proto.RegisterType((*DeidentifyConfig)(nil), "google.privacy.dlp.v2beta1.DeidentifyConfig") - proto.RegisterType((*PrimitiveTransformation)(nil), "google.privacy.dlp.v2beta1.PrimitiveTransformation") - proto.RegisterType((*TimePartConfig)(nil), "google.privacy.dlp.v2beta1.TimePartConfig") - proto.RegisterType((*CryptoHashConfig)(nil), "google.privacy.dlp.v2beta1.CryptoHashConfig") - proto.RegisterType((*ReplaceValueConfig)(nil), "google.privacy.dlp.v2beta1.ReplaceValueConfig") - proto.RegisterType((*ReplaceWithInfoTypeConfig)(nil), "google.privacy.dlp.v2beta1.ReplaceWithInfoTypeConfig") - proto.RegisterType((*RedactConfig)(nil), "google.privacy.dlp.v2beta1.RedactConfig") - proto.RegisterType((*CharsToIgnore)(nil), "google.privacy.dlp.v2beta1.CharsToIgnore") - proto.RegisterType((*CharacterMaskConfig)(nil), "google.privacy.dlp.v2beta1.CharacterMaskConfig") - proto.RegisterType((*FixedSizeBucketingConfig)(nil), "google.privacy.dlp.v2beta1.FixedSizeBucketingConfig") - proto.RegisterType((*BucketingConfig)(nil), "google.privacy.dlp.v2beta1.BucketingConfig") - proto.RegisterType((*BucketingConfig_Bucket)(nil), "google.privacy.dlp.v2beta1.BucketingConfig.Bucket") - proto.RegisterType((*CryptoReplaceFfxFpeConfig)(nil), "google.privacy.dlp.v2beta1.CryptoReplaceFfxFpeConfig") - proto.RegisterType((*CryptoKey)(nil), "google.privacy.dlp.v2beta1.CryptoKey") - proto.RegisterType((*TransientCryptoKey)(nil), "google.privacy.dlp.v2beta1.TransientCryptoKey") - proto.RegisterType((*UnwrappedCryptoKey)(nil), "google.privacy.dlp.v2beta1.UnwrappedCryptoKey") - proto.RegisterType((*KmsWrappedCryptoKey)(nil), "google.privacy.dlp.v2beta1.KmsWrappedCryptoKey") - proto.RegisterType((*InfoTypeTransformations)(nil), "google.privacy.dlp.v2beta1.InfoTypeTransformations") - proto.RegisterType((*InfoTypeTransformations_InfoTypeTransformation)(nil), "google.privacy.dlp.v2beta1.InfoTypeTransformations.InfoTypeTransformation") - proto.RegisterType((*FieldTransformation)(nil), "google.privacy.dlp.v2beta1.FieldTransformation") - proto.RegisterType((*RecordTransformations)(nil), "google.privacy.dlp.v2beta1.RecordTransformations") - proto.RegisterType((*RecordSuppression)(nil), "google.privacy.dlp.v2beta1.RecordSuppression") - proto.RegisterType((*RecordCondition)(nil), "google.privacy.dlp.v2beta1.RecordCondition") - proto.RegisterType((*RecordCondition_Condition)(nil), "google.privacy.dlp.v2beta1.RecordCondition.Condition") - proto.RegisterType((*RecordCondition_Conditions)(nil), "google.privacy.dlp.v2beta1.RecordCondition.Conditions") - proto.RegisterType((*RecordCondition_Expressions)(nil), "google.privacy.dlp.v2beta1.RecordCondition.Expressions") - proto.RegisterType((*DeidentificationSummary)(nil), "google.privacy.dlp.v2beta1.DeidentificationSummary") - proto.RegisterType((*TransformationSummary)(nil), "google.privacy.dlp.v2beta1.TransformationSummary") - proto.RegisterType((*TransformationSummary_SummaryResult)(nil), "google.privacy.dlp.v2beta1.TransformationSummary.SummaryResult") - proto.RegisterEnum("google.privacy.dlp.v2beta1.Likelihood", Likelihood_name, Likelihood_value) - proto.RegisterEnum("google.privacy.dlp.v2beta1.RelationalOperator", RelationalOperator_name, RelationalOperator_value) - proto.RegisterEnum("google.privacy.dlp.v2beta1.TimePartConfig_TimePart", TimePartConfig_TimePart_name, TimePartConfig_TimePart_value) - proto.RegisterEnum("google.privacy.dlp.v2beta1.CharsToIgnore_CharacterGroup", CharsToIgnore_CharacterGroup_name, CharsToIgnore_CharacterGroup_value) - proto.RegisterEnum("google.privacy.dlp.v2beta1.CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet", CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name, CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_value) - proto.RegisterEnum("google.privacy.dlp.v2beta1.RecordCondition_Expressions_LogicalOperator", RecordCondition_Expressions_LogicalOperator_name, RecordCondition_Expressions_LogicalOperator_value) - proto.RegisterEnum("google.privacy.dlp.v2beta1.TransformationSummary_TransformationResultCode", TransformationSummary_TransformationResultCode_name, TransformationSummary_TransformationResultCode_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for DlpService service - -type DlpServiceClient interface { - // Finds potentially sensitive info in a list of strings. - // This method has limits on input size, processing time, and output size. - InspectContent(ctx context.Context, in *InspectContentRequest, opts ...grpc.CallOption) (*InspectContentResponse, error) - // Redacts potentially sensitive info from a list of strings. - // This method has limits on input size, processing time, and output size. - RedactContent(ctx context.Context, in *RedactContentRequest, opts ...grpc.CallOption) (*RedactContentResponse, error) - // De-identifies potentially sensitive info from a list of strings. - // This method has limits on input size and output size. - DeidentifyContent(ctx context.Context, in *DeidentifyContentRequest, opts ...grpc.CallOption) (*DeidentifyContentResponse, error) - // Schedules a job scanning content in a Google Cloud Platform data - // repository. - CreateInspectOperation(ctx context.Context, in *CreateInspectOperationRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Schedules a job to compute risk analysis metrics over content in a Google - // Cloud Platform repository. - AnalyzeDataSourceRisk(ctx context.Context, in *AnalyzeDataSourceRiskRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Returns list of results for given inspect operation result set id. - ListInspectFindings(ctx context.Context, in *ListInspectFindingsRequest, opts ...grpc.CallOption) (*ListInspectFindingsResponse, error) - // Returns sensitive information types for given category. - ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error) - // Returns the list of root categories of sensitive information. - ListRootCategories(ctx context.Context, in *ListRootCategoriesRequest, opts ...grpc.CallOption) (*ListRootCategoriesResponse, error) -} - -type dlpServiceClient struct { - cc *grpc.ClientConn -} - -func NewDlpServiceClient(cc *grpc.ClientConn) DlpServiceClient { - return &dlpServiceClient{cc} -} - -func (c *dlpServiceClient) InspectContent(ctx context.Context, in *InspectContentRequest, opts ...grpc.CallOption) (*InspectContentResponse, error) { - out := new(InspectContentResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/InspectContent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) RedactContent(ctx context.Context, in *RedactContentRequest, opts ...grpc.CallOption) (*RedactContentResponse, error) { - out := new(RedactContentResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/RedactContent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) DeidentifyContent(ctx context.Context, in *DeidentifyContentRequest, opts ...grpc.CallOption) (*DeidentifyContentResponse, error) { - out := new(DeidentifyContentResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/DeidentifyContent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) CreateInspectOperation(ctx context.Context, in *CreateInspectOperationRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/CreateInspectOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) AnalyzeDataSourceRisk(ctx context.Context, in *AnalyzeDataSourceRiskRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/AnalyzeDataSourceRisk", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) ListInspectFindings(ctx context.Context, in *ListInspectFindingsRequest, opts ...grpc.CallOption) (*ListInspectFindingsResponse, error) { - out := new(ListInspectFindingsResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/ListInspectFindings", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error) { - out := new(ListInfoTypesResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/ListInfoTypes", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) ListRootCategories(ctx context.Context, in *ListRootCategoriesRequest, opts ...grpc.CallOption) (*ListRootCategoriesResponse, error) { - out := new(ListRootCategoriesResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta1.DlpService/ListRootCategories", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for DlpService service - -type DlpServiceServer interface { - // Finds potentially sensitive info in a list of strings. - // This method has limits on input size, processing time, and output size. - InspectContent(context.Context, *InspectContentRequest) (*InspectContentResponse, error) - // Redacts potentially sensitive info from a list of strings. - // This method has limits on input size, processing time, and output size. - RedactContent(context.Context, *RedactContentRequest) (*RedactContentResponse, error) - // De-identifies potentially sensitive info from a list of strings. - // This method has limits on input size and output size. - DeidentifyContent(context.Context, *DeidentifyContentRequest) (*DeidentifyContentResponse, error) - // Schedules a job scanning content in a Google Cloud Platform data - // repository. - CreateInspectOperation(context.Context, *CreateInspectOperationRequest) (*google_longrunning.Operation, error) - // Schedules a job to compute risk analysis metrics over content in a Google - // Cloud Platform repository. - AnalyzeDataSourceRisk(context.Context, *AnalyzeDataSourceRiskRequest) (*google_longrunning.Operation, error) - // Returns list of results for given inspect operation result set id. - ListInspectFindings(context.Context, *ListInspectFindingsRequest) (*ListInspectFindingsResponse, error) - // Returns sensitive information types for given category. - ListInfoTypes(context.Context, *ListInfoTypesRequest) (*ListInfoTypesResponse, error) - // Returns the list of root categories of sensitive information. - ListRootCategories(context.Context, *ListRootCategoriesRequest) (*ListRootCategoriesResponse, error) -} - -func RegisterDlpServiceServer(s *grpc.Server, srv DlpServiceServer) { - s.RegisterService(&_DlpService_serviceDesc, srv) -} - -func _DlpService_InspectContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(InspectContentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).InspectContent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta1.DlpService/InspectContent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).InspectContent(ctx, req.(*InspectContentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_RedactContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RedactContentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).RedactContent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta1.DlpService/RedactContent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).RedactContent(ctx, req.(*RedactContentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_DeidentifyContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeidentifyContentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).DeidentifyContent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta1.DlpService/DeidentifyContent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).DeidentifyContent(ctx, req.(*DeidentifyContentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_CreateInspectOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateInspectOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).CreateInspectOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta1.DlpService/CreateInspectOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).CreateInspectOperation(ctx, req.(*CreateInspectOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_AnalyzeDataSourceRisk_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeDataSourceRiskRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).AnalyzeDataSourceRisk(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta1.DlpService/AnalyzeDataSourceRisk", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).AnalyzeDataSourceRisk(ctx, req.(*AnalyzeDataSourceRiskRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_ListInspectFindings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInspectFindingsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).ListInspectFindings(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta1.DlpService/ListInspectFindings", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).ListInspectFindings(ctx, req.(*ListInspectFindingsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_ListInfoTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInfoTypesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).ListInfoTypes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta1.DlpService/ListInfoTypes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).ListInfoTypes(ctx, req.(*ListInfoTypesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_ListRootCategories_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListRootCategoriesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).ListRootCategories(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta1.DlpService/ListRootCategories", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).ListRootCategories(ctx, req.(*ListRootCategoriesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _DlpService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.privacy.dlp.v2beta1.DlpService", - HandlerType: (*DlpServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "InspectContent", - Handler: _DlpService_InspectContent_Handler, - }, - { - MethodName: "RedactContent", - Handler: _DlpService_RedactContent_Handler, - }, - { - MethodName: "DeidentifyContent", - Handler: _DlpService_DeidentifyContent_Handler, - }, - { - MethodName: "CreateInspectOperation", - Handler: _DlpService_CreateInspectOperation_Handler, - }, - { - MethodName: "AnalyzeDataSourceRisk", - Handler: _DlpService_AnalyzeDataSourceRisk_Handler, - }, - { - MethodName: "ListInspectFindings", - Handler: _DlpService_ListInspectFindings_Handler, - }, - { - MethodName: "ListInfoTypes", - Handler: _DlpService_ListInfoTypes_Handler, - }, - { - MethodName: "ListRootCategories", - Handler: _DlpService_ListRootCategories_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/privacy/dlp/v2beta1/dlp.proto", -} - -func init() { proto.RegisterFile("google/privacy/dlp/v2beta1/dlp.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 5192 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3c, 0x5d, 0x6f, 0x1b, 0xd9, - 0x75, 0x1a, 0x7e, 0x48, 0xe4, 0x91, 0x48, 0xd1, 0x57, 0x1f, 0xa6, 0xe9, 0x75, 0x6c, 0x8f, 0x77, - 0xbd, 0x5e, 0xef, 0x46, 0xca, 0x6a, 0xbf, 0xba, 0xbb, 0xf5, 0xc6, 0x14, 0x45, 0x99, 0x5a, 0x53, - 0xa2, 0x3c, 0xa4, 0x64, 0xbb, 0xbb, 0xdd, 0xc1, 0x88, 0xbc, 0xa2, 0x26, 0x1a, 0xce, 0xd0, 0x33, - 0x43, 0x5b, 0xdc, 0x74, 0xd1, 0xa0, 0x0d, 0x82, 0xb4, 0x45, 0x1f, 0x8a, 0x06, 0x48, 0x51, 0xb4, - 0x08, 0x52, 0xe4, 0x21, 0x0d, 0xda, 0x87, 0x22, 0x7d, 0x49, 0x1b, 0x14, 0x41, 0xf6, 0x2d, 0x45, - 0x9f, 0xfa, 0x01, 0x14, 0x45, 0x11, 0xa0, 0xc8, 0x43, 0xd1, 0xbe, 0xb4, 0xff, 0xa0, 0xb8, 0x1f, - 0xf3, 0xc9, 0x21, 0x45, 0x6a, 0xb5, 0x68, 0xde, 0x78, 0xcf, 0x3d, 0x5f, 0xf7, 0xdc, 0x73, 0xce, - 0x3d, 0xf7, 0xce, 0xbd, 0x84, 0xe7, 0xdb, 0x86, 0xd1, 0xd6, 0xf0, 0x6a, 0xd7, 0x54, 0x9f, 0x2a, - 0xcd, 0xfe, 0x6a, 0x4b, 0xeb, 0xae, 0x3e, 0x5d, 0x3b, 0xc0, 0xb6, 0xf2, 0x2a, 0xf9, 0xbd, 0xd2, - 0x35, 0x0d, 0xdb, 0x40, 0x05, 0x86, 0xb5, 0xc2, 0xb1, 0x56, 0x48, 0x0f, 0xc7, 0x2a, 0x3c, 0xc7, - 0x39, 0x28, 0x5d, 0x75, 0x55, 0xd1, 0x75, 0xc3, 0x56, 0x6c, 0xd5, 0xd0, 0x2d, 0x46, 0x59, 0xb8, - 0xc1, 0x7b, 0x35, 0x43, 0x6f, 0x9b, 0x3d, 0x5d, 0x57, 0xf5, 0xf6, 0xaa, 0xd1, 0xc5, 0x66, 0x00, - 0xe9, 0xd6, 0x08, 0x25, 0x2c, 0xdb, 0x30, 0x95, 0x36, 0xe6, 0x98, 0x97, 0x5d, 0x4c, 0xc3, 0x36, - 0x0e, 0x7a, 0x87, 0xab, 0xb8, 0xd3, 0xb5, 0xfb, 0xbc, 0xf3, 0x6a, 0xb8, 0xd3, 0x56, 0x3b, 0xd8, - 0xb2, 0x95, 0x0e, 0x1f, 0x46, 0x61, 0x99, 0x23, 0xd8, 0xfd, 0x2e, 0x5e, 0x6d, 0x29, 0x76, 0x98, - 0x2b, 0x85, 0x13, 0x22, 0xe3, 0xb0, 0xa5, 0x70, 0xae, 0xe2, 0x4f, 0x13, 0x90, 0xd9, 0xd2, 0xad, - 0x2e, 0x6e, 0xda, 0x25, 0x43, 0x3f, 0x54, 0xdb, 0xa8, 0x04, 0xa0, 0xea, 0x87, 0x86, 0x4c, 0xd0, - 0xad, 0xbc, 0x70, 0x2d, 0x7e, 0x6b, 0x76, 0xed, 0xf9, 0x95, 0xe1, 0x26, 0x5a, 0xd9, 0xd2, 0x0f, - 0x8d, 0x46, 0xbf, 0x8b, 0xa5, 0xb4, 0xca, 0x7f, 0x59, 0x68, 0x1b, 0xb2, 0x1d, 0x55, 0x97, 0x35, - 0xf5, 0x18, 0x6b, 0xea, 0x91, 0x61, 0xb4, 0xf2, 0xb1, 0x6b, 0xc2, 0xad, 0xec, 0xda, 0xcd, 0x51, - 0x8c, 0xaa, 0x2e, 0xb6, 0x94, 0xe9, 0xa8, 0xba, 0xd7, 0x44, 0xd7, 0x61, 0xae, 0xa3, 0x9c, 0xc8, - 0x87, 0xaa, 0xde, 0x52, 0xf5, 0xb6, 0x95, 0x8f, 0x5f, 0x13, 0x6e, 0x25, 0xa5, 0xd9, 0x8e, 0x72, - 0xb2, 0xc9, 0x41, 0xe8, 0x06, 0x64, 0x54, 0xbd, 0xa9, 0xf5, 0x5a, 0x58, 0x7e, 0xd2, 0x33, 0x6c, - 0x9c, 0x4f, 0x5c, 0x13, 0x6e, 0xa5, 0xa4, 0x39, 0x0e, 0x7c, 0x40, 0x60, 0x04, 0x09, 0x9f, 0x30, - 0x24, 0x36, 0xbc, 0x69, 0x86, 0xc4, 0x81, 0x4c, 0x77, 0x05, 0x72, 0xae, 0x01, 0x64, 0x4d, 0xed, - 0xa8, 0xb6, 0x95, 0x9f, 0xa1, 0x66, 0x78, 0x6b, 0xb4, 0x19, 0x7c, 0x56, 0x74, 0x8d, 0x52, 0x25, - 0xf4, 0x52, 0x56, 0xf5, 0x37, 0x2d, 0xb4, 0x0f, 0x17, 0x9a, 0x3d, 0xcb, 0x36, 0x3a, 0xb2, 0xcf, - 0xd4, 0x29, 0x2a, 0xe3, 0xf6, 0x28, 0x19, 0x25, 0x4a, 0xe4, 0x1a, 0x7c, 0xbe, 0x19, 0x68, 0x5b, - 0x85, 0x1e, 0x99, 0x4c, 0x9f, 0x24, 0x54, 0x84, 0xb4, 0x2b, 0x21, 0x2f, 0x5c, 0x13, 0xc6, 0x9e, - 0xcb, 0x94, 0xa3, 0xf1, 0x80, 0xed, 0x63, 0x03, 0xb6, 0x17, 0xef, 0xc0, 0x7c, 0xcd, 0xf1, 0x7a, - 0xee, 0x45, 0xb7, 0xe1, 0x02, 0xa1, 0x52, 0x6d, 0xdc, 0xf1, 0x48, 0x89, 0x02, 0x71, 0x69, 0xbe, - 0xa3, 0x9c, 0x6c, 0xd9, 0xb8, 0xe3, 0x92, 0x7f, 0x5b, 0x80, 0xd9, 0x92, 0xa1, 0xdb, 0x58, 0xb7, - 0x09, 0x1c, 0x21, 0x48, 0xb8, 0xfa, 0xa6, 0x25, 0xfa, 0x1b, 0x2d, 0x42, 0xa2, 0xa5, 0xd8, 0x0a, - 0x95, 0x3e, 0x57, 0x99, 0x92, 0x68, 0x0b, 0x2d, 0x43, 0xf2, 0xa9, 0xa2, 0xf5, 0x30, 0x75, 0x88, - 0x74, 0x65, 0x4a, 0x62, 0x4d, 0xf4, 0x36, 0x24, 0x6d, 0xe5, 0x40, 0x63, 0x4e, 0x30, 0xbb, 0x76, - 0x7d, 0xd4, 0x90, 0x1b, 0x04, 0x91, 0x90, 0x52, 0x8a, 0xf5, 0x59, 0x48, 0x13, 0xd6, 0x54, 0x73, - 0xf1, 0x53, 0x01, 0x92, 0xb4, 0x1f, 0xdd, 0x81, 0x99, 0x23, 0xac, 0xb4, 0xb0, 0xe9, 0x84, 0xc4, - 0x8d, 0x51, 0x3c, 0x37, 0x55, 0xac, 0xb5, 0xb6, 0x5a, 0x92, 0x43, 0x83, 0xde, 0x86, 0x84, 0x69, - 0x3c, 0x23, 0xc6, 0x23, 0xb4, 0x2f, 0x9c, 0xaa, 0xcf, 0x8a, 0x64, 0x3c, 0x93, 0x28, 0x49, 0xe1, - 0x2e, 0xc4, 0x25, 0xe3, 0x19, 0x7a, 0x1b, 0xa6, 0xe9, 0xd8, 0x1c, 0xf9, 0x23, 0xc7, 0xb4, 0x4f, - 0x30, 0x25, 0x4e, 0x20, 0xfe, 0xa6, 0x1b, 0xe2, 0x12, 0xb6, 0x7a, 0x9a, 0x8d, 0xbe, 0x0c, 0x29, - 0xdf, 0x9c, 0x8c, 0x31, 0x1a, 0x8a, 0x2b, 0xb9, 0x44, 0xe8, 0x8b, 0x80, 0x9c, 0xdf, 0xb2, 0x6d, - 0xf6, 0xf4, 0xa6, 0x62, 0x63, 0x16, 0xe2, 0x29, 0xe9, 0x82, 0xd3, 0xd3, 0x70, 0x3a, 0xc4, 0x3f, - 0x8f, 0xc1, 0x0c, 0x67, 0x82, 0x16, 0x21, 0xc9, 0xe2, 0x93, 0xcd, 0x2e, 0x6b, 0x04, 0xfd, 0x34, - 0x76, 0x26, 0x3f, 0xdd, 0x04, 0xf0, 0xa5, 0x9b, 0xf8, 0x44, 0xe9, 0xc6, 0x47, 0x89, 0xee, 0x42, - 0x4a, 0x33, 0x9a, 0xd4, 0x97, 0xb9, 0xfb, 0x8c, 0xd4, 0xa4, 0xca, 0x71, 0x25, 0x97, 0x0a, 0xbd, - 0x0b, 0xb3, 0x4d, 0x13, 0x2b, 0x36, 0x96, 0x49, 0xb6, 0xa5, 0x39, 0x66, 0x76, 0xad, 0xe0, 0x31, - 0x61, 0xf9, 0x7b, 0xa5, 0xe1, 0xe4, 0x6f, 0x09, 0x18, 0x3a, 0x01, 0x88, 0x3f, 0x8e, 0x43, 0xca, - 0xe1, 0x89, 0xee, 0x02, 0x1c, 0xf4, 0x6d, 0x2c, 0x9b, 0x8a, 0xde, 0x76, 0xe2, 0x77, 0xe4, 0xc4, - 0x4b, 0x04, 0x51, 0x4a, 0x13, 0x22, 0xfa, 0x13, 0xbd, 0x0f, 0xf3, 0x4d, 0xa3, 0x85, 0xbb, 0x86, - 0xaa, 0xdb, 0x9c, 0x4d, 0x6c, 0x5c, 0x36, 0x59, 0x97, 0xd2, 0xe1, 0x35, 0xab, 0x76, 0x94, 0x36, - 0x96, 0x0f, 0x8c, 0x13, 0x4c, 0x92, 0x30, 0xf1, 0x9c, 0x97, 0x46, 0x4e, 0x13, 0x41, 0x77, 0x2d, - 0x04, 0x94, 0x7a, 0x9d, 0x10, 0xa3, 0x0d, 0x00, 0x13, 0x37, 0x0d, 0xb3, 0x25, 0x1f, 0xe3, 0x3e, - 0xb7, 0xf3, 0xc8, 0xb0, 0x90, 0x28, 0xf6, 0x7d, 0xdc, 0x97, 0xd2, 0xa6, 0xf3, 0x13, 0xbd, 0x47, - 0x1c, 0x19, 0x6b, 0x2d, 0x59, 0x6d, 0xe5, 0x93, 0x94, 0xc7, 0x78, 0x61, 0x79, 0xc8, 0x7e, 0xa0, - 0x5d, 0xc8, 0xd2, 0xa8, 0x97, 0xdd, 0x19, 0x67, 0x93, 0xf5, 0xd2, 0xa9, 0x01, 0xea, 0x0e, 0x2a, - 0x63, 0xfb, 0x9b, 0xe2, 0x2b, 0x90, 0x09, 0xf4, 0xa3, 0xcb, 0x90, 0x36, 0x8d, 0x67, 0xb2, 0xaa, - 0xb7, 0xf0, 0x09, 0x4f, 0x80, 0x29, 0xd3, 0x78, 0xb6, 0x45, 0xda, 0xe2, 0x2a, 0x24, 0x99, 0x69, - 0x17, 0x21, 0x69, 0xd9, 0x8a, 0x69, 0x73, 0x0c, 0xd6, 0x40, 0x39, 0x88, 0x63, 0x9d, 0xc5, 0x55, - 0x5c, 0x22, 0x3f, 0xc5, 0x26, 0x64, 0x02, 0x36, 0x25, 0x28, 0xb6, 0xd1, 0xa5, 0x64, 0x49, 0x89, - 0xfc, 0x24, 0xd9, 0x53, 0xc3, 0x87, 0x36, 0xcf, 0xd3, 0xf4, 0x37, 0x61, 0xff, 0x4c, 0x6d, 0xd9, - 0x47, 0x7c, 0xe1, 0x64, 0x0d, 0xb4, 0x0c, 0xd3, 0x47, 0x58, 0x6d, 0x1f, 0xd9, 0xd4, 0xfe, 0x49, - 0x89, 0xb7, 0xc4, 0x5f, 0x24, 0x61, 0x51, 0xc2, 0x2d, 0x85, 0x2e, 0x66, 0x24, 0x2b, 0x4b, 0xf8, - 0x49, 0x0f, 0x5b, 0x36, 0x31, 0x97, 0xca, 0x12, 0x89, 0xdc, 0xa4, 0x69, 0x9e, 0xbb, 0xe4, 0x4b, - 0x63, 0xaf, 0x8b, 0x52, 0x46, 0x0d, 0x14, 0x1b, 0x77, 0x20, 0x49, 0x12, 0xad, 0x93, 0x18, 0x5f, - 0x1c, 0xb9, 0xf8, 0x79, 0x4b, 0x84, 0xc4, 0xa8, 0x50, 0x1b, 0xe6, 0x4d, 0xdc, 0xd5, 0x94, 0x26, - 0xe6, 0x0a, 0x39, 0x5e, 0xf9, 0xde, 0x68, 0x57, 0x1a, 0x1c, 0xdb, 0x8a, 0xc4, 0xf8, 0x70, 0x35, - 0xb3, 0xa6, 0xbf, 0x69, 0xa1, 0x4f, 0xe0, 0x22, 0x73, 0x7d, 0x93, 0xd2, 0xaa, 0x86, 0xee, 0x0a, - 0x4c, 0x50, 0x81, 0xe5, 0x89, 0x05, 0xd2, 0x79, 0x94, 0x1c, 0x76, 0x5c, 0xee, 0x92, 0x1a, 0x01, - 0xa5, 0xeb, 0x7a, 0x40, 0xbf, 0x73, 0x5a, 0xd7, 0x1d, 0xdb, 0x3d, 0x53, 0xed, 0x23, 0xea, 0x2f, - 0x69, 0x69, 0x96, 0xc3, 0x1e, 0xaa, 0xf6, 0x51, 0xe1, 0xdf, 0x04, 0x58, 0x8c, 0x52, 0x13, 0x95, - 0xce, 0x28, 0xbe, 0x32, 0xe5, 0x53, 0xe0, 0x16, 0x99, 0x3c, 0xc2, 0x57, 0x56, 0x34, 0x4d, 0xb6, - 0xf1, 0x09, 0xf3, 0xd9, 0x54, 0x65, 0x4a, 0xca, 0xb0, 0x8e, 0xa2, 0xa6, 0x35, 0xf0, 0x89, 0x4d, - 0x92, 0x98, 0xdf, 0xee, 0x9a, 0x61, 0x52, 0x47, 0x3e, 0x25, 0x89, 0x95, 0x08, 0x22, 0x99, 0x49, - 0x57, 0x77, 0xcd, 0x30, 0xd7, 0x53, 0x30, 0x6d, 0x2b, 0x66, 0x1b, 0xdb, 0x62, 0x09, 0x92, 0x14, - 0x44, 0x62, 0xc8, 0xc4, 0x2d, 0x3a, 0x8e, 0x98, 0x44, 0x7e, 0x92, 0x78, 0x69, 0x9b, 0x18, 0xeb, - 0x54, 0xa1, 0x98, 0xc4, 0x1a, 0x24, 0xb2, 0x0e, 0x9c, 0x62, 0x23, 0x26, 0xd1, 0xdf, 0xe2, 0x3e, - 0x2c, 0x85, 0x66, 0xd7, 0xea, 0x1a, 0xba, 0x85, 0x3d, 0xcf, 0x16, 0xce, 0xe2, 0xd9, 0xe2, 0x37, - 0x62, 0x90, 0xdf, 0xc0, 0x6a, 0x0b, 0xeb, 0xb6, 0x7a, 0xd8, 0x0f, 0xc5, 0xe1, 0x63, 0xb8, 0xd0, - 0x72, 0xfb, 0x82, 0xa1, 0xf8, 0xca, 0x28, 0x39, 0x01, 0x86, 0xc4, 0xdd, 0x72, 0xad, 0x10, 0x24, - 0x22, 0xc4, 0x63, 0xe7, 0x15, 0xe2, 0xf1, 0x33, 0x19, 0xe2, 0x2f, 0x05, 0xb8, 0x14, 0x61, 0x88, - 0x73, 0xb1, 0x32, 0x7a, 0x00, 0x69, 0xab, 0xd7, 0xe9, 0x28, 0xa6, 0x8a, 0x9d, 0x14, 0xf4, 0xda, - 0x58, 0x06, 0x54, 0x59, 0xfa, 0xad, 0x53, 0xe2, 0xbe, 0xe4, 0x71, 0x11, 0xbf, 0x2f, 0xc0, 0x92, - 0x67, 0x8f, 0x5f, 0xe6, 0xec, 0x29, 0xfe, 0x3a, 0x2c, 0x87, 0x35, 0xe5, 0x66, 0x2d, 0xc1, 0x8c, - 0x49, 0x4b, 0x45, 0xc7, 0xb0, 0xe3, 0xe8, 0xc8, 0x8a, 0x4b, 0xc9, 0xa1, 0x14, 0xff, 0x37, 0x06, - 0x57, 0x4a, 0xb4, 0xb0, 0xe1, 0x08, 0xee, 0x1e, 0xe1, 0xf3, 0xb3, 0xc8, 0x2e, 0x64, 0xf9, 0x96, - 0x7a, 0x02, 0xf7, 0xad, 0x33, 0x0a, 0x87, 0xa3, 0xe5, 0x6f, 0xa2, 0x06, 0x64, 0x8c, 0x9e, 0xdd, - 0xed, 0xb9, 0x2a, 0xb2, 0xcc, 0xb3, 0x3a, 0x8a, 0x61, 0x8d, 0x12, 0x04, 0xd9, 0xce, 0x31, 0x2e, - 0x9c, 0xeb, 0x3e, 0xe4, 0xdc, 0x73, 0x02, 0x87, 0x31, 0x2b, 0x60, 0x5e, 0x1e, 0xc9, 0x38, 0xb8, - 0xcb, 0x92, 0xe6, 0x8d, 0x20, 0x40, 0xfc, 0xa1, 0x00, 0x0b, 0x11, 0xd2, 0x51, 0xd1, 0xd9, 0x10, - 0x8d, 0x61, 0xe0, 0x75, 0xb5, 0xfd, 0xa0, 0x87, 0xcd, 0x7e, 0x70, 0x63, 0x84, 0x1e, 0xc0, 0x9c, - 0x63, 0xda, 0xae, 0xc2, 0xd7, 0x8b, 0x53, 0xf2, 0x4d, 0x49, 0x33, 0x7a, 0x2d, 0xae, 0xc8, 0xae, - 0x62, 0x1f, 0x55, 0xa6, 0xa4, 0x59, 0xcb, 0x6b, 0xae, 0x4f, 0xb3, 0x8d, 0x9e, 0xd8, 0x01, 0xe4, - 0xac, 0x10, 0x75, 0x5b, 0xb1, 0x55, 0xcb, 0x56, 0x9b, 0xd6, 0x79, 0xac, 0x71, 0x8b, 0x90, 0x6c, - 0x1a, 0x3d, 0xdd, 0xe6, 0x25, 0x14, 0x6b, 0x88, 0x3f, 0x4c, 0x40, 0x3e, 0xec, 0x92, 0xdb, 0xd8, - 0x56, 0xe8, 0x96, 0xf2, 0x45, 0x98, 0xef, 0x9a, 0x46, 0x13, 0x5b, 0x16, 0x6e, 0xc9, 0xa4, 0x8e, - 0x76, 0xb6, 0xad, 0x59, 0x17, 0xbc, 0x4e, 0xa0, 0x68, 0x0d, 0x96, 0x6c, 0xc3, 0x56, 0x34, 0x19, - 0x5b, 0xb6, 0xda, 0x21, 0xfb, 0x1c, 0x8e, 0x9e, 0xa0, 0xe8, 0x0b, 0xb4, 0xb3, 0xec, 0xf4, 0x31, - 0x9a, 0x7d, 0x98, 0xf7, 0x8e, 0x16, 0x2c, 0x5b, 0xb1, 0x9d, 0xd0, 0x5d, 0x19, 0x67, 0x60, 0x9e, - 0x6d, 0x88, 0xdb, 0x7b, 0x30, 0x2b, 0xbc, 0xe3, 0x88, 0x4f, 0xb2, 0xe3, 0x40, 0x32, 0x2c, 0x9b, - 0x2c, 0x20, 0xe5, 0x50, 0x34, 0x26, 0x27, 0x8d, 0xc6, 0x45, 0xce, 0x28, 0x78, 0xa2, 0xe4, 0x13, - 0x10, 0x0a, 0xce, 0xe9, 0x49, 0x83, 0xd3, 0x11, 0x10, 0xf4, 0xee, 0x26, 0x2c, 0x39, 0x02, 0x82, - 0xb1, 0x3a, 0x73, 0xb6, 0x58, 0x5d, 0xe0, 0xdc, 0x6a, 0xbe, 0x90, 0x15, 0x5f, 0x71, 0xb3, 0xa5, - 0x2f, 0x8f, 0xd1, 0xed, 0x34, 0x82, 0x84, 0xae, 0x74, 0xdc, 0xf3, 0x0a, 0xf2, 0x5b, 0xfc, 0xba, - 0x00, 0x85, 0xaa, 0xea, 0x5a, 0xc2, 0x39, 0xeb, 0x70, 0x32, 0x5f, 0x04, 0x09, 0xd9, 0x29, 0x74, - 0x89, 0x6d, 0x2c, 0xf5, 0x63, 0xcc, 0xab, 0xf7, 0x14, 0x01, 0xd4, 0xd5, 0x8f, 0x31, 0xba, 0x02, - 0x40, 0x3b, 0x6d, 0xe3, 0x18, 0xeb, 0xec, 0xb8, 0x43, 0xa2, 0xe8, 0x0d, 0x02, 0x20, 0xa5, 0xfc, - 0xa1, 0xaa, 0xd9, 0xd8, 0xa4, 0xde, 0x97, 0x96, 0x78, 0x4b, 0xfc, 0xa6, 0x00, 0x97, 0x23, 0xd5, - 0xe0, 0x89, 0xbe, 0x08, 0xd3, 0x2c, 0x5d, 0x4f, 0x90, 0x79, 0x79, 0x9e, 0xe7, 0x84, 0xe8, 0x26, - 0xcc, 0xeb, 0xf8, 0xc4, 0x96, 0x7d, 0xea, 0xb1, 0x52, 0x32, 0x43, 0xc0, 0xbb, 0x8e, 0x8a, 0xe2, - 0x9f, 0x0a, 0xb0, 0xe0, 0x78, 0xf2, 0x06, 0xb6, 0x9a, 0xa6, 0xda, 0xa5, 0x3b, 0x98, 0x28, 0x53, - 0x5c, 0x87, 0xb9, 0x96, 0x6a, 0x75, 0x35, 0xa5, 0x2f, 0xd3, 0x3e, 0x5e, 0x9b, 0x72, 0xd8, 0x0e, - 0x41, 0xa9, 0x01, 0x34, 0x15, 0x1b, 0xb7, 0x0d, 0xba, 0x76, 0xb3, 0xda, 0x62, 0xe4, 0x44, 0x97, - 0x18, 0x76, 0xdf, 0x27, 0x5b, 0xf2, 0xb1, 0x10, 0x1f, 0xc2, 0x22, 0xb3, 0x14, 0x3f, 0x4c, 0x73, - 0xa6, 0xaa, 0x00, 0x29, 0x8e, 0xd5, 0xe7, 0x3a, 0xba, 0x6d, 0x74, 0x03, 0x32, 0x9a, 0xa2, 0xb7, - 0x7b, 0xcc, 0xa5, 0x5b, 0x8e, 0xa2, 0x73, 0x0e, 0xb0, 0x64, 0xb4, 0xb0, 0xd8, 0x86, 0xa5, 0x10, - 0x63, 0x6e, 0xfc, 0x9d, 0x88, 0x93, 0xd6, 0xd5, 0x71, 0x12, 0x81, 0x7f, 0x08, 0xde, 0xa1, 0xab, - 0x58, 0x85, 0x85, 0x88, 0x41, 0x9e, 0xd1, 0xc0, 0xe2, 0x5d, 0xb8, 0x44, 0xd4, 0x96, 0x0c, 0xc3, - 0x2e, 0xb9, 0x56, 0x72, 0x8c, 0x32, 0x30, 0x70, 0x21, 0x62, 0xe0, 0x1d, 0x16, 0x02, 0x61, 0x0e, - 0x7c, 0xf4, 0xc1, 0x09, 0x14, 0x3e, 0xfb, 0x04, 0xfe, 0x9d, 0x00, 0xcf, 0x15, 0x75, 0x45, 0xeb, - 0x7f, 0x8c, 0x37, 0x14, 0x5b, 0xa9, 0x1b, 0x3d, 0xb3, 0x89, 0x25, 0xd5, 0x3a, 0xf6, 0x95, 0x1b, - 0x9c, 0xaf, 0xdc, 0xc1, 0xb6, 0xa9, 0x36, 0xc7, 0x71, 0xfa, 0x5d, 0x06, 0xdb, 0xa6, 0x04, 0x52, - 0xa6, 0xeb, 0x6f, 0xa2, 0x2a, 0xcc, 0x59, 0x54, 0x8c, 0xcc, 0x56, 0xd7, 0xf8, 0x84, 0xab, 0xab, - 0x34, 0xcb, 0xc8, 0x69, 0x43, 0xfc, 0xa7, 0x19, 0xc8, 0x04, 0xc4, 0xa1, 0xa7, 0xb0, 0xac, 0xf7, - 0x3a, 0xd8, 0x54, 0x9b, 0x8a, 0xc6, 0xd6, 0x8b, 0x60, 0xa1, 0xf4, 0xde, 0xd8, 0x9a, 0xaf, 0xec, - 0x38, 0x7c, 0xe8, 0x8a, 0xc1, 0x72, 0x5a, 0x65, 0x4a, 0x5a, 0xd4, 0x23, 0xe0, 0xe8, 0x37, 0x20, - 0xef, 0x18, 0x76, 0x40, 0x32, 0x5b, 0xf7, 0xef, 0x8e, 0x2f, 0xb9, 0xe4, 0x71, 0x0a, 0xca, 0x5e, - 0x6e, 0x46, 0xf6, 0xa0, 0xaf, 0x00, 0x3a, 0x96, 0x15, 0xdd, 0xd0, 0xfb, 0x1d, 0xd5, 0xee, 0x07, - 0xeb, 0xae, 0x77, 0xc6, 0x97, 0x7b, 0xbf, 0xe8, 0xb0, 0x70, 0x25, 0xe6, 0x8e, 0x43, 0x30, 0x22, - 0x4b, 0x93, 0x5b, 0xea, 0x53, 0x6c, 0x5a, 0x3e, 0x59, 0x89, 0x49, 0x65, 0x55, 0x37, 0x1c, 0x16, - 0x9e, 0x2c, 0x2d, 0x04, 0x2b, 0x3c, 0x80, 0xc5, 0xa8, 0x59, 0x40, 0x6f, 0x43, 0x92, 0x1e, 0x48, - 0xf1, 0x49, 0x1d, 0xeb, 0x08, 0x8b, 0x51, 0x14, 0xea, 0xb0, 0x1c, 0x6d, 0xde, 0xcf, 0xc2, 0xf4, - 0xdb, 0x02, 0xe4, 0xc2, 0xc6, 0x43, 0x77, 0x21, 0xfd, 0xa4, 0xa7, 0x58, 0xaa, 0xac, 0xb6, 0x26, - 0x3a, 0x02, 0x4f, 0x51, 0xaa, 0xad, 0x16, 0xad, 0xe7, 0xc8, 0xde, 0xc9, 0xee, 0xcb, 0x6a, 0x6b, - 0x9c, 0x33, 0xde, 0x32, 0x45, 0x26, 0x2c, 0x30, 0xff, 0x55, 0xf8, 0x81, 0x00, 0xb9, 0xb0, 0xa9, - 0xcf, 0x41, 0xb3, 0x06, 0x2c, 0x58, 0x58, 0xb7, 0x54, 0x5b, 0x7d, 0x8a, 0x65, 0xc5, 0xb6, 0x4d, - 0xf5, 0xa0, 0x67, 0x3b, 0x07, 0xa5, 0x63, 0xf1, 0x42, 0x2e, 0x7d, 0xd1, 0x21, 0x77, 0xab, 0xdb, - 0x3f, 0x8b, 0xc1, 0x15, 0x92, 0x86, 0x68, 0x6e, 0xb2, 0x54, 0x6b, 0xb0, 0xe6, 0x0c, 0x95, 0x6f, - 0xc2, 0x44, 0xe5, 0x5b, 0x13, 0xf2, 0xbc, 0x5c, 0xc1, 0x2d, 0x39, 0x94, 0xdf, 0x62, 0x93, 0xe6, - 0xb7, 0x65, 0x97, 0x55, 0x30, 0x11, 0x79, 0x25, 0x1c, 0x6e, 0xc9, 0x9f, 0x2d, 0xe5, 0x2d, 0xba, - 0x8c, 0xea, 0xbe, 0xdc, 0xf7, 0xcf, 0xcb, 0x70, 0x39, 0xd2, 0x48, 0xbc, 0xc6, 0xfa, 0xba, 0x30, - 0x98, 0x0a, 0x79, 0xe5, 0xc2, 0x34, 0xa8, 0x8e, 0x3c, 0x80, 0x1b, 0xce, 0x39, 0x94, 0x18, 0x19, - 0x70, 0x30, 0x31, 0x72, 0x35, 0x7e, 0x57, 0x88, 0xca, 0x8c, 0x5c, 0x11, 0x96, 0x35, 0x76, 0xce, - 0xaa, 0x48, 0x38, 0x90, 0x5d, 0x55, 0x06, 0xf2, 0x24, 0x57, 0xe6, 0x24, 0x98, 0x27, 0xb9, 0x16, - 0xac, 0x68, 0xaf, 0x9c, 0x55, 0x0b, 0x2f, 0xf0, 0x5d, 0xf9, 0xbe, 0xac, 0xe9, 0x49, 0xf6, 0x67, - 0x4d, 0x2e, 0x79, 0xfa, 0xb3, 0x49, 0xf6, 0x02, 0xdb, 0x93, 0xac, 0x85, 0x60, 0x85, 0xff, 0x10, - 0xc2, 0x49, 0x94, 0xab, 0xf4, 0x1e, 0xa4, 0x3b, 0xaa, 0x2e, 0xb3, 0xcf, 0x81, 0x63, 0x7c, 0x29, - 0x61, 0x9f, 0xc8, 0x52, 0x1d, 0x55, 0xa7, 0xbf, 0x28, 0xbd, 0x72, 0xc2, 0xe9, 0x63, 0xe3, 0xd3, - 0x2b, 0x27, 0x8c, 0xfe, 0x7d, 0x98, 0x7f, 0xd2, 0x53, 0x74, 0x5b, 0xd5, 0xb0, 0xcc, 0x3f, 0xd4, - 0x25, 0xc6, 0xfd, 0x50, 0x97, 0x75, 0x28, 0x69, 0xd3, 0x2a, 0xfc, 0x67, 0x7c, 0x30, 0xad, 0xf3, - 0x61, 0xfe, 0x48, 0x80, 0xeb, 0x94, 0xbd, 0x7c, 0x48, 0xe3, 0x48, 0x6f, 0xf6, 0xe5, 0x23, 0xd5, - 0xb2, 0x8d, 0xb6, 0xa9, 0x74, 0xe4, 0x83, 0x5e, 0xf3, 0x18, 0xdb, 0x56, 0x3e, 0x49, 0x25, 0xeb, - 0xe7, 0xeb, 0x89, 0x03, 0xe0, 0x8a, 0x23, 0x77, 0x9d, 0x8a, 0x95, 0xbe, 0x40, 0x15, 0xdb, 0x74, - 0xf4, 0x0a, 0x75, 0x5b, 0x85, 0x3f, 0x88, 0xc1, 0xd5, 0x53, 0x78, 0xa0, 0x3b, 0x70, 0x39, 0x3c, - 0x3c, 0xcd, 0x78, 0x86, 0x4d, 0xf9, 0xc0, 0xe8, 0xe9, 0x2d, 0xbe, 0x15, 0xcf, 0x07, 0x05, 0x55, - 0x09, 0xc2, 0x3a, 0xe9, 0x8f, 0x22, 0xef, 0x75, 0xbb, 0x2e, 0x79, 0x2c, 0x8a, 0x7c, 0x8f, 0x20, - 0x30, 0xf2, 0xab, 0x30, 0xcb, 0x4c, 0xc8, 0x36, 0x61, 0x71, 0x8a, 0x0e, 0x0c, 0x44, 0xb7, 0x61, - 0x35, 0xc8, 0x70, 0x84, 0xc0, 0x1c, 0xdf, 0x3e, 0x75, 0x8e, 0x5d, 0x69, 0xd2, 0x1c, 0x63, 0xc0, - 0xa7, 0xfa, 0x67, 0x49, 0xff, 0x5a, 0xcb, 0x27, 0xf9, 0xaf, 0x04, 0xb8, 0x81, 0x9f, 0xf4, 0xd4, - 0xa7, 0x8a, 0x86, 0xf5, 0x26, 0x96, 0x9b, 0x9a, 0x62, 0x59, 0x43, 0xa7, 0xf9, 0xe0, 0xbc, 0x42, - 0xdd, 0x07, 0x08, 0x4f, 0xed, 0x35, 0x9f, 0x3a, 0x25, 0xa2, 0xcd, 0xc0, 0xe4, 0x7e, 0x47, 0x80, - 0x82, 0x47, 0x5f, 0x0e, 0xa1, 0xa3, 0xfb, 0x90, 0x73, 0x17, 0x69, 0x79, 0xd2, 0x0f, 0xd9, 0x59, - 0x67, 0xa5, 0x66, 0x46, 0x43, 0xaf, 0xc3, 0xf2, 0xa0, 0x79, 0xdc, 0x6d, 0x73, 0x5c, 0x5a, 0x0c, - 0x6b, 0x4b, 0xe6, 0xae, 0xf0, 0xf3, 0x18, 0x5c, 0x1a, 0x3a, 0x42, 0xf4, 0x3e, 0x88, 0xd1, 0x3c, - 0x23, 0xfc, 0xef, 0x0b, 0x51, 0xfc, 0x7d, 0x5e, 0x38, 0x9c, 0xd7, 0xa0, 0x33, 0x46, 0xf2, 0x9a, - 0xc4, 0x25, 0xbf, 0x29, 0x44, 0xfb, 0x64, 0xf3, 0x73, 0x70, 0x8b, 0xf0, 0xb4, 0x86, 0x9c, 0xf9, - 0x1b, 0x33, 0xfe, 0xf2, 0x8c, 0x3b, 0xf3, 0x4f, 0x04, 0x78, 0xd9, 0xab, 0xae, 0xc6, 0xcd, 0x5d, - 0x07, 0xe7, 0xb5, 0x8a, 0xf8, 0x00, 0x61, 0xa7, 0x7e, 0xd1, 0x55, 0x6b, 0x7f, 0x74, 0xe2, 0xfa, - 0x49, 0x0c, 0x0a, 0x1e, 0x9b, 0x5f, 0x42, 0xdf, 0x46, 0x45, 0xb8, 0xa2, 0xf7, 0x3a, 0x72, 0x4b, - 0xb5, 0x6c, 0x55, 0x6f, 0xda, 0x72, 0xc8, 0xe0, 0x16, 0xf7, 0x9b, 0x82, 0xde, 0xeb, 0x6c, 0x70, - 0x9c, 0x7a, 0x60, 0xf0, 0x16, 0xfa, 0x10, 0x16, 0x6d, 0xa3, 0x3b, 0x48, 0x39, 0x79, 0x86, 0x43, - 0xb6, 0xd1, 0x0d, 0x71, 0x2f, 0xfc, 0x77, 0x0c, 0x2e, 0x0d, 0x9d, 0x09, 0xb4, 0x0b, 0x2f, 0x0c, - 0x77, 0x91, 0xc1, 0xf8, 0xbb, 0x3e, 0x64, 0xe2, 0x7c, 0x21, 0x38, 0x92, 0xe3, 0x60, 0x14, 0x0e, - 0xe3, 0xf8, 0xff, 0x1a, 0x88, 0x23, 0x5c, 0x79, 0x74, 0x20, 0xae, 0xa7, 0x9c, 0x63, 0x3d, 0x51, - 0x86, 0x6c, 0x70, 0x44, 0xe8, 0x2d, 0xe7, 0xce, 0xd4, 0xd8, 0x45, 0x12, 0xbf, 0x54, 0x15, 0x7d, - 0x98, 0xfe, 0xaf, 0x31, 0x48, 0xb2, 0x0a, 0xe8, 0x05, 0xc8, 0xa8, 0xba, 0x8d, 0xdb, 0xd8, 0xf4, - 0x55, 0x61, 0xf1, 0xca, 0x94, 0x34, 0xc7, 0xc1, 0x0c, 0xed, 0x3a, 0xcc, 0x1e, 0x6a, 0x86, 0x62, - 0xfb, 0x4a, 0x2d, 0xa1, 0x32, 0x25, 0x01, 0x05, 0x32, 0x94, 0x1b, 0x30, 0x67, 0xd9, 0xa6, 0xaa, - 0xb7, 0xe5, 0xe0, 0xed, 0xae, 0x59, 0x06, 0x75, 0xc5, 0x1d, 0x18, 0x86, 0x86, 0x15, 0xa7, 0xe8, - 0x4b, 0xf0, 0x8f, 0xc7, 0x73, 0x1c, 0xcc, 0xd0, 0xca, 0x30, 0xef, 0x5e, 0x94, 0xe4, 0x88, 0xc9, - 0xd3, 0xf6, 0x57, 0x95, 0x29, 0x29, 0xeb, 0x12, 0x31, 0x36, 0x6f, 0x01, 0x10, 0x08, 0xe7, 0xc0, - 0x2a, 0xdd, 0x65, 0x87, 0x03, 0xd9, 0xe6, 0x51, 0xea, 0xda, 0xe1, 0x86, 0xd2, 0xaf, 0x4c, 0x49, - 0x69, 0x82, 0xcb, 0x08, 0xd7, 0x00, 0x5a, 0x64, 0x67, 0xc7, 0x08, 0xd9, 0x81, 0xf4, 0x85, 0x00, - 0xe1, 0x86, 0x62, 0x63, 0x42, 0x43, 0xd0, 0x28, 0x8d, 0xbb, 0x73, 0xfc, 0xed, 0x18, 0xe4, 0xc2, - 0xdf, 0x6c, 0xd1, 0x13, 0xb8, 0xe4, 0x7d, 0x43, 0xb0, 0x4d, 0x45, 0xb7, 0x0e, 0x0d, 0xb3, 0xc3, - 0x6e, 0x9c, 0xf2, 0x39, 0x7d, 0x6d, 0x9c, 0x43, 0xc4, 0x46, 0x90, 0xb4, 0x32, 0x25, 0x5d, 0x54, - 0xa3, 0xbb, 0xd0, 0x57, 0xc8, 0xee, 0x8f, 0x5e, 0xd6, 0x09, 0xcb, 0x63, 0x85, 0xf2, 0xab, 0xa7, - 0x5f, 0xdc, 0x19, 0x94, 0xb6, 0x64, 0x46, 0x75, 0xac, 0xe7, 0x20, 0x1b, 0x14, 0x22, 0xfe, 0x68, - 0x06, 0x2e, 0xee, 0x9a, 0x6a, 0x87, 0x86, 0x67, 0x10, 0x1d, 0x3d, 0x84, 0x6c, 0xf0, 0x02, 0x08, - 0xb7, 0xc0, 0xca, 0x68, 0x8d, 0x28, 0x05, 0xb5, 0xb5, 0x7b, 0x5c, 0x93, 0x09, 0xdc, 0xf8, 0x20, - 0x85, 0x1e, 0xbf, 0x9c, 0x10, 0x38, 0xf6, 0xba, 0x35, 0xd6, 0x35, 0x0f, 0xc6, 0x71, 0xce, 0xf4, - 0xb5, 0x11, 0x86, 0xa5, 0xe6, 0x91, 0x62, 0x2a, 0x4d, 0x1b, 0x9b, 0x72, 0x47, 0xb1, 0x8e, 0x27, - 0xf8, 0x9e, 0x58, 0x72, 0x08, 0xb7, 0x15, 0xeb, 0xd8, 0xe5, 0xbf, 0xd0, 0x1c, 0x04, 0xa3, 0x3e, - 0x5c, 0x69, 0x9a, 0xfd, 0xae, 0x6d, 0xc8, 0x8e, 0x5d, 0x0e, 0x0f, 0x4f, 0xe4, 0xc3, 0x2e, 0x0e, - 0x1e, 0x6d, 0xbd, 0x31, 0x52, 0x1c, 0x65, 0xc0, 0xad, 0xb4, 0x79, 0x78, 0xb2, 0xd9, 0xf5, 0xcc, - 0x74, 0xa9, 0x39, 0xac, 0x13, 0xf5, 0xe0, 0xf2, 0xa1, 0x7a, 0x82, 0x5b, 0xac, 0xd2, 0x61, 0xf9, - 0x88, 0xc4, 0x70, 0xe0, 0x63, 0xd2, 0xeb, 0xa3, 0x4f, 0x53, 0x4e, 0x70, 0x8b, 0xe4, 0xd2, 0x75, - 0x87, 0xd8, 0x95, 0x9b, 0x3f, 0x1c, 0xd2, 0x87, 0x1e, 0x41, 0x6e, 0x40, 0xd6, 0xf4, 0xe9, 0x9f, - 0x52, 0x07, 0x45, 0xcc, 0x1f, 0x84, 0x38, 0xf7, 0xe1, 0x8a, 0xff, 0x86, 0x8c, 0x77, 0x57, 0x37, - 0xf8, 0x79, 0xe9, 0x8d, 0x31, 0x7c, 0xed, 0xa1, 0x6a, 0x1f, 0x39, 0x81, 0xe7, 0xd9, 0xd2, 0x1c, - 0xd6, 0x89, 0xf6, 0x21, 0x47, 0xd3, 0x4d, 0x57, 0x31, 0x5d, 0x0f, 0x4c, 0x51, 0x69, 0x23, 0x17, - 0x62, 0x92, 0x83, 0x76, 0x15, 0xd3, 0xf3, 0x41, 0x9a, 0xc6, 0x3c, 0x08, 0xfa, 0x10, 0x10, 0x77, - 0x8f, 0x23, 0xc5, 0x3a, 0x72, 0x38, 0xa7, 0xc7, 0xf8, 0x94, 0x4b, 0xa9, 0x2a, 0x8a, 0x75, 0xe4, - 0x1d, 0x70, 0x36, 0x43, 0xb0, 0x88, 0xd8, 0xfd, 0x1f, 0x01, 0xb2, 0x41, 0xa5, 0xd0, 0x07, 0x30, - 0x4f, 0x47, 0x65, 0x1b, 0x32, 0x3e, 0xb1, 0x89, 0x03, 0xd3, 0x98, 0xcd, 0x8e, 0xce, 0x5a, 0x41, - 0x26, 0x6e, 0x53, 0xca, 0x10, 0x5e, 0x0d, 0xa3, 0xcc, 0x38, 0x89, 0x5f, 0x13, 0x20, 0xe5, 0xf4, - 0xa1, 0x4b, 0xb0, 0xd4, 0xd8, 0xda, 0x2e, 0xcb, 0xbb, 0x45, 0xa9, 0x21, 0xef, 0xed, 0xd4, 0x77, - 0xcb, 0xa5, 0xad, 0xcd, 0xad, 0xf2, 0x46, 0x6e, 0x0a, 0xa5, 0x20, 0xf1, 0xb8, 0x5c, 0x94, 0x72, - 0x02, 0x4a, 0x43, 0x72, 0xbb, 0xb6, 0xd3, 0xa8, 0xe4, 0x62, 0x28, 0x07, 0x73, 0x1b, 0xc5, 0xc7, - 0x72, 0x6d, 0x53, 0x66, 0x90, 0x38, 0x9a, 0x87, 0x59, 0x0e, 0x79, 0x58, 0x2e, 0xdf, 0xcf, 0x25, - 0x08, 0x0a, 0xf9, 0x45, 0x20, 0x94, 0x3e, 0x49, 0x50, 0x2a, 0xb5, 0x3d, 0x89, 0x40, 0x36, 0x8a, - 0x8f, 0x73, 0xd3, 0xe2, 0x23, 0xc8, 0x85, 0x8d, 0x85, 0x36, 0x00, 0xb8, 0xd9, 0x8f, 0x71, 0x9f, - 0xa7, 0xa8, 0x17, 0x4e, 0x37, 0x37, 0xbd, 0xed, 0xd8, 0x74, 0x7e, 0x8a, 0x0d, 0x40, 0x83, 0xa9, - 0x0b, 0xbd, 0x07, 0x69, 0x1d, 0x3f, 0x9b, 0xf8, 0xe0, 0x43, 0xc7, 0xcf, 0xe8, 0x2f, 0xf1, 0x32, - 0x5c, 0x1a, 0xea, 0xa4, 0x62, 0x16, 0xe6, 0xfc, 0x59, 0x4d, 0xfc, 0x97, 0x18, 0x64, 0x48, 0x36, - 0xb2, 0x1a, 0xc6, 0x56, 0x5b, 0x37, 0x4c, 0x8c, 0x56, 0x00, 0xb9, 0x79, 0xc8, 0x22, 0x93, 0x6a, - 0x1d, 0xab, 0xec, 0x3e, 0x62, 0x9a, 0xfa, 0x88, 0xdb, 0xd7, 0x30, 0xea, 0xc7, 0x6a, 0x17, 0xf5, - 0xe1, 0x72, 0xd3, 0xe8, 0x74, 0x0c, 0x5d, 0x0e, 0x92, 0xa9, 0x94, 0x1d, 0x7f, 0x26, 0xf0, 0x2b, - 0xa7, 0x65, 0x43, 0x57, 0xbe, 0x97, 0x1b, 0xef, 0x99, 0x46, 0x8f, 0xac, 0xdc, 0x79, 0xc6, 0xbe, - 0xe4, 0x13, 0xcc, 0x50, 0xc5, 0xdf, 0x13, 0x20, 0x1b, 0x44, 0x47, 0x57, 0xe1, 0x72, 0xa9, 0x52, - 0x94, 0x8a, 0xa5, 0x46, 0x59, 0x92, 0xef, 0x49, 0xb5, 0xbd, 0xdd, 0x90, 0xa3, 0xcc, 0xc2, 0xcc, - 0xce, 0xde, 0x76, 0x59, 0xda, 0x2a, 0xe5, 0x04, 0xb4, 0x08, 0xb9, 0x62, 0x75, 0xb7, 0x52, 0x94, - 0xf7, 0x76, 0x77, 0xcb, 0x92, 0x5c, 0x2a, 0xd6, 0xcb, 0xb9, 0x98, 0x07, 0xad, 0xd6, 0x1e, 0x3a, - 0x50, 0xea, 0x3a, 0xbb, 0x7b, 0x3b, 0xa5, 0xc6, 0x5e, 0xb1, 0xb1, 0x55, 0xdb, 0xc9, 0x25, 0x50, - 0x16, 0xe0, 0x61, 0x65, 0xab, 0x51, 0xae, 0xef, 0x16, 0x4b, 0xe5, 0x5c, 0x72, 0x7d, 0x0e, 0xc0, - 0xb3, 0x80, 0xf8, 0x5f, 0x02, 0x2c, 0x44, 0xa4, 0x79, 0xf4, 0x32, 0x5c, 0x20, 0x8b, 0x05, 0xcd, - 0x6d, 0x4e, 0x37, 0xff, 0xd8, 0x96, 0xe3, 0x1d, 0x2e, 0x19, 0x7a, 0x1e, 0xb2, 0x7a, 0xaf, 0x73, - 0x80, 0x4d, 0x62, 0x50, 0xd2, 0xcb, 0x3f, 0x23, 0xcf, 0x31, 0x68, 0xc3, 0x20, 0x8c, 0xd1, 0x0d, - 0xb2, 0xb4, 0x91, 0x3a, 0x12, 0xcb, 0x86, 0xd9, 0xc2, 0xec, 0x2e, 0x5d, 0x8a, 0x2c, 0x57, 0x14, - 0x58, 0x23, 0x30, 0xf4, 0x01, 0x2c, 0x46, 0xce, 0x4f, 0xe2, 0xf4, 0xeb, 0x40, 0x81, 0xf9, 0x91, - 0x50, 0x73, 0x70, 0x22, 0x3e, 0x15, 0x20, 0x3f, 0x2c, 0xd7, 0xa3, 0x75, 0x98, 0x0d, 0x57, 0xfc, - 0x63, 0x79, 0x34, 0x68, 0x5e, 0xf5, 0xbf, 0x0e, 0xb3, 0xe1, 0x1a, 0x7f, 0x3c, 0x1e, 0xbd, 0x91, - 0xf5, 0xbe, 0xe0, 0xaf, 0xf7, 0xc5, 0xef, 0xc5, 0x60, 0x3e, 0xac, 0x7c, 0x15, 0x66, 0x9c, 0x7d, - 0x2c, 0xdb, 0x01, 0xae, 0x4d, 0xb0, 0x06, 0xf1, 0xb6, 0xe4, 0xb0, 0x28, 0xfc, 0x54, 0x80, 0x69, - 0xbe, 0x43, 0x7a, 0x0d, 0xe2, 0x1d, 0x55, 0x1f, 0xdf, 0x1a, 0x04, 0x9b, 0x12, 0x29, 0x27, 0xe3, - 0x0f, 0x9f, 0x60, 0xa3, 0x1d, 0xb8, 0xc0, 0xd7, 0xa5, 0x0e, 0xd6, 0x6d, 0x5f, 0x05, 0x3e, 0x16, - 0x8b, 0x9c, 0x8f, 0x96, 0xe5, 0x97, 0xaf, 0x25, 0xe0, 0xd2, 0xd0, 0x8a, 0xe2, 0x7c, 0x32, 0x23, - 0xba, 0x03, 0x33, 0x4d, 0x43, 0x77, 0xaf, 0x90, 0x8e, 0x7b, 0x0d, 0x9c, 0xd3, 0xa0, 0x13, 0x98, - 0xe7, 0x39, 0x49, 0xd1, 0xba, 0x47, 0xca, 0x01, 0x66, 0x67, 0xf9, 0xd9, 0xb5, 0xed, 0x33, 0x95, - 0x49, 0x2b, 0x9b, 0x87, 0x27, 0x25, 0xca, 0x6f, 0x47, 0xa1, 0x9f, 0x84, 0x38, 0x53, 0xb2, 0x1e, - 0x33, 0x39, 0x0e, 0x04, 0xbd, 0x04, 0xfc, 0x0d, 0x8f, 0x27, 0x39, 0xc9, 0x53, 0x67, 0x96, 0x75, - 0xb8, 0xa8, 0xcb, 0x90, 0x34, 0x95, 0x96, 0x7a, 0x42, 0x8b, 0x9b, 0x64, 0x65, 0x4a, 0x62, 0x4d, - 0xf1, 0x5b, 0x02, 0x5c, 0x1c, 0x22, 0x10, 0xdd, 0x86, 0x9b, 0x9b, 0x9b, 0x8f, 0xe4, 0x52, 0x6d, - 0x7b, 0xbb, 0xb6, 0x23, 0xef, 0x14, 0x1b, 0x5b, 0xfb, 0x65, 0x99, 0x26, 0xab, 0xf5, 0x72, 0x63, - 0x54, 0xa6, 0x23, 0xab, 0x5a, 0xf9, 0x51, 0x71, 0xa3, 0x5c, 0xda, 0xda, 0x2e, 0x56, 0x73, 0x31, - 0xf4, 0x1c, 0xe4, 0xbd, 0xa4, 0xc7, 0x58, 0xc8, 0x0e, 0x7a, 0x1c, 0x5d, 0x80, 0x4c, 0x10, 0x94, - 0x58, 0x07, 0x48, 0x39, 0x43, 0x12, 0x7f, 0x27, 0x06, 0x69, 0x77, 0xde, 0xd0, 0x0e, 0xa4, 0x69, - 0x95, 0xa0, 0x62, 0xdd, 0x1e, 0xa7, 0x5c, 0x6f, 0x38, 0xc8, 0x2e, 0x0b, 0xba, 0xc3, 0x72, 0xa0, - 0x84, 0x5f, 0x4f, 0x7f, 0x66, 0x2a, 0xdd, 0x2e, 0x76, 0x42, 0x7d, 0x24, 0xbf, 0x3d, 0x07, 0x39, - 0xc0, 0xcf, 0x65, 0x81, 0x24, 0x98, 0x3d, 0xee, 0x58, 0xb2, 0xc3, 0x71, 0x8c, 0xfa, 0xfc, 0x7e, - 0xc7, 0x7a, 0x38, 0xc8, 0x12, 0x8e, 0x5d, 0x30, 0xd9, 0x90, 0xb3, 0xaf, 0x66, 0xe2, 0x2d, 0x40, - 0x83, 0x03, 0x8a, 0xbc, 0x42, 0x74, 0x13, 0xd0, 0xa0, 0xaa, 0x28, 0x07, 0x71, 0x27, 0x52, 0xe6, - 0x24, 0xf2, 0x53, 0xfc, 0x08, 0x16, 0x22, 0x14, 0x20, 0xf9, 0x8b, 0x13, 0xcb, 0x1e, 0x01, 0x70, - 0x10, 0x41, 0xb8, 0x09, 0xf3, 0x5e, 0xe8, 0xf9, 0xaf, 0x81, 0x64, 0xdc, 0xc0, 0xa2, 0x17, 0x41, - 0x7e, 0x1e, 0x83, 0x8b, 0x43, 0x36, 0x8d, 0xc8, 0x86, 0xf9, 0xc1, 0x2d, 0x28, 0xc9, 0x7b, 0xef, - 0x9f, 0x61, 0x0b, 0x3a, 0x04, 0x2e, 0x85, 0x45, 0x14, 0xfe, 0x41, 0x80, 0xe5, 0x68, 0xdc, 0xf3, - 0x79, 0xbd, 0xa8, 0x43, 0xbe, 0xeb, 0x6c, 0x38, 0x43, 0x5b, 0x5e, 0xee, 0x60, 0xaf, 0x9d, 0xf2, - 0x49, 0x35, 0x6a, 0xb3, 0x2a, 0x5d, 0xec, 0x46, 0x77, 0x88, 0xdf, 0x8a, 0xc3, 0x02, 0x4d, 0x4a, - 0xa1, 0xc1, 0xbc, 0x0b, 0xd3, 0xf4, 0x8b, 0xfc, 0x44, 0x9f, 0xb5, 0x39, 0x09, 0xda, 0x82, 0x74, - 0xd3, 0xd0, 0x5b, 0x2a, 0xd5, 0x3a, 0x7e, 0xfa, 0x86, 0x88, 0xed, 0xd3, 0x4b, 0x0e, 0x89, 0xe4, - 0x51, 0xa3, 0xee, 0x08, 0x7b, 0x24, 0xce, 0x6c, 0x8f, 0xca, 0xd4, 0x50, 0x8b, 0x8c, 0x3e, 0xe4, - 0x48, 0x7e, 0x1e, 0x87, 0x1c, 0x11, 0x9b, 0x97, 0x7f, 0x17, 0x60, 0x29, 0xf2, 0xf4, 0x02, 0xb5, - 0x60, 0x89, 0xbd, 0x3b, 0x8a, 0x76, 0xfe, 0xd5, 0x53, 0xe7, 0x29, 0xe4, 0x19, 0x8b, 0x87, 0x83, - 0x40, 0x0b, 0x7d, 0x04, 0x0b, 0xfc, 0xd8, 0xc5, 0xea, 0x75, 0xbb, 0x26, 0xb6, 0x2c, 0x7e, 0xe6, - 0x42, 0x64, 0x7c, 0xf1, 0xf4, 0xb9, 0xac, 0x7b, 0x54, 0x12, 0x32, 0xc3, 0x20, 0x4b, 0xfc, 0x08, - 0x2e, 0x0c, 0x20, 0x06, 0xdd, 0x46, 0xf8, 0x2c, 0x6e, 0x23, 0x7e, 0x9a, 0x84, 0xf9, 0x50, 0x37, - 0x7a, 0x0c, 0xb3, 0xf8, 0xc4, 0x1b, 0x0b, 0xf3, 0xcb, 0xb7, 0x26, 0x10, 0xb0, 0x52, 0xf6, 0xc8, - 0x25, 0x3f, 0xaf, 0xc2, 0xdf, 0x0b, 0x90, 0xf6, 0x04, 0x9d, 0xfd, 0xfe, 0x0b, 0x7a, 0x1f, 0x52, - 0xec, 0x5e, 0x35, 0x7f, 0x67, 0x92, 0x3d, 0xed, 0x38, 0x49, 0xa3, 0x13, 0xa6, 0x68, 0x35, 0x4e, - 0x25, 0xb9, 0xf4, 0xde, 0x69, 0x6b, 0x62, 0xb2, 0xd3, 0xd6, 0x42, 0x13, 0xc0, 0x1d, 0x8c, 0x85, - 0xf6, 0x00, 0x5c, 0xbb, 0x3a, 0x5e, 0xf6, 0xc6, 0x24, 0x56, 0xf3, 0x26, 0xc8, 0xc7, 0xa8, 0xf0, - 0xdd, 0x18, 0xcc, 0xfa, 0xec, 0x89, 0x4c, 0xc8, 0x69, 0x46, 0x9b, 0xde, 0x6c, 0x70, 0x2d, 0xc0, - 0x36, 0xe7, 0xf7, 0xce, 0x38, 0x45, 0x2b, 0x55, 0xc6, 0xcf, 0x35, 0xcd, 0xbc, 0x16, 0x04, 0xa0, - 0x47, 0x81, 0xa1, 0x31, 0x87, 0x78, 0xf3, 0x4c, 0x43, 0x23, 0xe1, 0xed, 0xe3, 0x25, 0xfe, 0x2a, - 0xcc, 0x87, 0xa4, 0xa3, 0x6b, 0xf0, 0x5c, 0xb5, 0x76, 0x6f, 0xab, 0x54, 0xac, 0xca, 0xb5, 0xdd, - 0xb2, 0x54, 0x6c, 0xd4, 0xa4, 0x50, 0x19, 0x34, 0x03, 0xf1, 0xe2, 0xce, 0x46, 0x4e, 0x70, 0x0f, - 0x61, 0xff, 0x5a, 0x80, 0x8b, 0x43, 0xde, 0x7d, 0x90, 0xdd, 0x99, 0x9b, 0x01, 0xdc, 0xfb, 0xdf, - 0xec, 0x78, 0x3c, 0xe7, 0xeb, 0x60, 0x97, 0xbf, 0x35, 0xc8, 0x07, 0xd3, 0x85, 0xec, 0xbd, 0x3d, - 0x61, 0xf7, 0x57, 0x5f, 0x3d, 0xb5, 0x0c, 0x72, 0x69, 0x9d, 0x97, 0x27, 0x17, 0xed, 0x08, 0xb0, - 0x8a, 0x2d, 0xf1, 0xf7, 0xa7, 0x61, 0x29, 0x92, 0xe4, 0x3c, 0xee, 0xd5, 0xbb, 0xc1, 0x15, 0x9b, - 0x38, 0xb8, 0x3e, 0x08, 0xa7, 0x59, 0x3e, 0xe5, 0x67, 0x5a, 0x51, 0x43, 0xac, 0x86, 0xe7, 0xe5, - 0xe4, 0x79, 0xe6, 0xe5, 0x7d, 0x98, 0x0f, 0xe5, 0x65, 0x7e, 0xe0, 0x38, 0x61, 0x4e, 0xce, 0x06, - 0x73, 0x32, 0x7a, 0xec, 0xbd, 0xba, 0x61, 0xdb, 0xec, 0x2f, 0x4f, 0xec, 0x0f, 0x2b, 0x8e, 0x5f, - 0x04, 0xdf, 0xe2, 0x14, 0xbe, 0x23, 0x40, 0x26, 0xd0, 0xe5, 0x7d, 0xcd, 0x11, 0x7c, 0x5f, 0x73, - 0xd0, 0x47, 0x90, 0x70, 0xef, 0x31, 0x67, 0x47, 0x17, 0x71, 0xd1, 0xf2, 0x43, 0x06, 0xa4, 0xb2, - 0x4a, 0x46, 0x0b, 0x4b, 0x94, 0x2f, 0xca, 0xc3, 0x4c, 0x0b, 0xdb, 0x8a, 0xaa, 0x59, 0xfc, 0x0e, - 0xbb, 0xd3, 0x14, 0x3f, 0x82, 0xfc, 0x30, 0x5a, 0xb2, 0x8d, 0x69, 0x48, 0xc5, 0x9d, 0xfa, 0x66, - 0x4d, 0xda, 0xa6, 0xc7, 0x29, 0xb2, 0x54, 0xae, 0xef, 0x55, 0x1b, 0x72, 0xa9, 0xb6, 0x51, 0x1e, - 0xdc, 0xc6, 0xd4, 0xf7, 0x4a, 0xa5, 0x72, 0xbd, 0xce, 0x0e, 0xf7, 0xca, 0x92, 0x54, 0x93, 0x72, - 0xb1, 0xdb, 0x36, 0x80, 0xef, 0x0f, 0x25, 0x0a, 0xb0, 0x5c, 0xdd, 0xba, 0x5f, 0xae, 0x6e, 0x55, - 0x6a, 0xb5, 0x8d, 0x10, 0x87, 0x0b, 0x90, 0xd9, 0x2f, 0x4b, 0x8f, 0xe5, 0xbd, 0x1d, 0x8a, 0xf2, - 0x38, 0x27, 0xa0, 0x39, 0x48, 0xb9, 0xad, 0x18, 0x69, 0xed, 0xd6, 0xea, 0xf5, 0xad, 0xf5, 0x6a, - 0x39, 0x17, 0x47, 0x00, 0xd3, 0xbc, 0x27, 0x41, 0xb6, 0x4d, 0x94, 0x94, 0x03, 0x92, 0xb7, 0xff, - 0x56, 0x00, 0x34, 0xb8, 0x3e, 0xa0, 0x1b, 0x70, 0x55, 0x2a, 0x57, 0xe9, 0x50, 0x86, 0x67, 0xa2, - 0x39, 0x48, 0x95, 0x1f, 0xec, 0x15, 0xab, 0x72, 0xa3, 0x96, 0x13, 0x50, 0x0e, 0xe6, 0x76, 0x6a, - 0x0d, 0xd9, 0x85, 0xd0, 0xe3, 0xca, 0x7b, 0x52, 0xb9, 0xd8, 0x28, 0x4b, 0x72, 0xa3, 0x52, 0xdc, - 0xc9, 0xc5, 0x51, 0x06, 0xd2, 0xd5, 0x72, 0xbd, 0xce, 0x9a, 0x09, 0x32, 0x48, 0x3f, 0x82, 0x5c, - 0x93, 0x18, 0x79, 0x3d, 0x97, 0x44, 0x17, 0x61, 0xc1, 0x45, 0xf5, 0x75, 0x4c, 0x93, 0xe1, 0x94, - 0x1f, 0x6d, 0xd5, 0x1b, 0xf5, 0xdc, 0xcc, 0xda, 0x8f, 0x01, 0x60, 0x43, 0xeb, 0xd6, 0xb1, 0xf9, - 0x54, 0x6d, 0x62, 0xf4, 0x27, 0x02, 0x64, 0x83, 0x0f, 0xc6, 0xd0, 0xab, 0xe3, 0xbd, 0x0d, 0xf1, - 0x3d, 0x83, 0x2b, 0xac, 0x4d, 0x42, 0xc2, 0xee, 0x8a, 0x8b, 0x37, 0x7e, 0xeb, 0x1f, 0x7f, 0xf1, - 0x87, 0xb1, 0x2b, 0x62, 0xde, 0xfd, 0xe3, 0x94, 0x26, 0xc3, 0x78, 0x87, 0xbf, 0x58, 0x79, 0x47, - 0xb8, 0x8d, 0xfe, 0x48, 0x80, 0x4c, 0xe0, 0x2d, 0x26, 0xfa, 0xd2, 0xa4, 0x8f, 0x72, 0x0b, 0xaf, - 0x4e, 0x40, 0xc1, 0x75, 0x13, 0xa9, 0x6e, 0xcf, 0x89, 0x17, 0x07, 0x74, 0x63, 0xdf, 0x7f, 0x88, - 0x6a, 0xdf, 0x17, 0xe0, 0xc2, 0xc0, 0x23, 0x46, 0xf4, 0xfa, 0xd8, 0x6f, 0x35, 0xfd, 0x2a, 0xbe, - 0x31, 0x21, 0x15, 0x57, 0xf3, 0x26, 0x55, 0xf3, 0x9a, 0x78, 0x79, 0x40, 0x4d, 0xef, 0x0d, 0x28, - 0x51, 0xf5, 0x8f, 0x05, 0x58, 0x8e, 0x7e, 0xb5, 0x87, 0xde, 0x1e, 0x7d, 0x1a, 0x32, 0xe2, 0xa5, - 0x5f, 0xe1, 0x8a, 0x43, 0xea, 0xfb, 0xa7, 0x1c, 0xef, 0x35, 0x5b, 0x84, 0x72, 0x7c, 0x5e, 0x7d, - 0xff, 0xa6, 0xc3, 0xa7, 0x78, 0x29, 0xf2, 0x8a, 0x3f, 0x1a, 0x79, 0x62, 0x3c, 0xea, 0x55, 0xc0, - 0xe4, 0xaa, 0xb5, 0x5c, 0x36, 0xef, 0x28, 0x8c, 0x31, 0x51, 0xed, 0x6f, 0x04, 0x58, 0x88, 0x78, - 0x69, 0x83, 0xde, 0x1c, 0xfd, 0x17, 0x14, 0xc3, 0x5e, 0x08, 0x15, 0xde, 0x9a, 0x98, 0x8e, 0x4f, - 0xf4, 0x1a, 0x55, 0xf8, 0x15, 0x74, 0xdb, 0x55, 0xf8, 0xab, 0x64, 0x6f, 0x7f, 0xc7, 0xb1, 0x28, - 0x5f, 0x12, 0x56, 0x6f, 0x7f, 0xb2, 0xea, 0xfe, 0x9f, 0xc7, 0x5f, 0x08, 0x90, 0x09, 0xbc, 0x51, - 0x19, 0x1d, 0x3a, 0x51, 0xef, 0x64, 0x46, 0x87, 0x4e, 0xe4, 0x03, 0x18, 0xf1, 0x4d, 0xaa, 0xea, - 0x97, 0xd0, 0x8a, 0xab, 0xaa, 0x19, 0x78, 0x2b, 0xb2, 0xfa, 0x55, 0xe7, 0xa5, 0xcd, 0x9d, 0xdb, - 0x9f, 0xac, 0x7a, 0xfb, 0xf3, 0xef, 0x09, 0x80, 0x06, 0x5f, 0x96, 0xa0, 0x37, 0x4e, 0xd3, 0x20, - 0xf2, 0x2d, 0x4b, 0xe1, 0xcd, 0x49, 0xc9, 0xb8, 0xf6, 0x57, 0xa9, 0xf6, 0x97, 0xd0, 0xc5, 0x21, - 0xda, 0xaf, 0x7f, 0x57, 0x80, 0x2f, 0x34, 0x8d, 0xce, 0x08, 0xf6, 0xeb, 0xa9, 0x0d, 0xad, 0xbb, - 0x6b, 0x1a, 0xb6, 0xb1, 0x2b, 0xfc, 0xda, 0x1d, 0x8e, 0xd7, 0x36, 0x34, 0x45, 0x6f, 0xaf, 0x18, - 0x66, 0x7b, 0xb5, 0x8d, 0x75, 0x7a, 0x3b, 0x61, 0x95, 0x75, 0x29, 0x5d, 0xd5, 0x8a, 0xfa, 0x1b, - 0xa9, 0x77, 0x5b, 0x5a, 0xf7, 0x07, 0xb1, 0xfc, 0x3d, 0x46, 0x4f, 0x5f, 0x5d, 0xae, 0x6c, 0x68, - 0xdd, 0x95, 0xfd, 0xb5, 0x75, 0xd2, 0xfd, 0x33, 0xa7, 0xeb, 0x43, 0xda, 0xf5, 0xe1, 0x86, 0xd6, - 0xfd, 0x70, 0x9f, 0x51, 0x1e, 0x4c, 0x53, 0xfe, 0xaf, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xac, 0x11, 0x04, 0x57, 0x2a, 0x4b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta1/storage.pb.go b/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta1/storage.pb.go deleted file mode 100644 index 7ec5a39a..00000000 --- a/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta1/storage.pb.go +++ /dev/null @@ -1,1143 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/privacy/dlp/v2beta1/storage.proto - -package dlp - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Type of information detected by the API. -type InfoType struct { - // Name of the information type. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *InfoType) Reset() { *m = InfoType{} } -func (m *InfoType) String() string { return proto.CompactTextString(m) } -func (*InfoType) ProtoMessage() {} -func (*InfoType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *InfoType) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Custom information type provided by the user. Used to find domain-specific -// sensitive information configurable to the data in question. -type CustomInfoType struct { - // Info type configuration. All custom info types must have configurations - // that do not conflict with built-in info types or other custom info types. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Types that are valid to be assigned to Type: - // *CustomInfoType_Dictionary_ - Type isCustomInfoType_Type `protobuf_oneof:"type"` -} - -func (m *CustomInfoType) Reset() { *m = CustomInfoType{} } -func (m *CustomInfoType) String() string { return proto.CompactTextString(m) } -func (*CustomInfoType) ProtoMessage() {} -func (*CustomInfoType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -type isCustomInfoType_Type interface { - isCustomInfoType_Type() -} - -type CustomInfoType_Dictionary_ struct { - Dictionary *CustomInfoType_Dictionary `protobuf:"bytes,2,opt,name=dictionary,oneof"` -} - -func (*CustomInfoType_Dictionary_) isCustomInfoType_Type() {} - -func (m *CustomInfoType) GetType() isCustomInfoType_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *CustomInfoType) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *CustomInfoType) GetDictionary() *CustomInfoType_Dictionary { - if x, ok := m.GetType().(*CustomInfoType_Dictionary_); ok { - return x.Dictionary - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CustomInfoType) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CustomInfoType_OneofMarshaler, _CustomInfoType_OneofUnmarshaler, _CustomInfoType_OneofSizer, []interface{}{ - (*CustomInfoType_Dictionary_)(nil), - } -} - -func _CustomInfoType_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CustomInfoType) - // type - switch x := m.Type.(type) { - case *CustomInfoType_Dictionary_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Dictionary); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CustomInfoType.Type has unexpected type %T", x) - } - return nil -} - -func _CustomInfoType_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CustomInfoType) - switch tag { - case 2: // type.dictionary - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CustomInfoType_Dictionary) - err := b.DecodeMessage(msg) - m.Type = &CustomInfoType_Dictionary_{msg} - return true, err - default: - return false, nil - } -} - -func _CustomInfoType_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CustomInfoType) - // type - switch x := m.Type.(type) { - case *CustomInfoType_Dictionary_: - s := proto.Size(x.Dictionary) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Custom information type based on a dictionary of words or phrases. This can -// be used to match sensitive information specific to the data, such as a list -// of employee IDs or job titles. -// -// Dictionary words are case-insensitive and all characters other than letters -// and digits in the unicode [Basic Multilingual -// Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) -// will be replaced with whitespace when scanning for matches, so the -// dictionary phrase "Sam Johnson" will match all three phrases "sam johnson", -// "Sam, Johnson", and "Sam (Johnson)". Additionally, the characters -// surrounding any match must be of a different type than the adjacent -// characters within the word, so letters must be next to non-letters and -// digits next to non-digits. For example, the dictionary word "jen" will -// match the first three letters of the text "jen123" but will return no -// matches for "jennifer". -// -// Dictionary words containing a large number of characters that are not -// letters or digits may result in unexpected findings because such characters -// are treated as whitespace. -type CustomInfoType_Dictionary struct { - // Types that are valid to be assigned to Source: - // *CustomInfoType_Dictionary_WordList_ - Source isCustomInfoType_Dictionary_Source `protobuf_oneof:"source"` -} - -func (m *CustomInfoType_Dictionary) Reset() { *m = CustomInfoType_Dictionary{} } -func (m *CustomInfoType_Dictionary) String() string { return proto.CompactTextString(m) } -func (*CustomInfoType_Dictionary) ProtoMessage() {} -func (*CustomInfoType_Dictionary) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } - -type isCustomInfoType_Dictionary_Source interface { - isCustomInfoType_Dictionary_Source() -} - -type CustomInfoType_Dictionary_WordList_ struct { - WordList *CustomInfoType_Dictionary_WordList `protobuf:"bytes,1,opt,name=word_list,json=wordList,oneof"` -} - -func (*CustomInfoType_Dictionary_WordList_) isCustomInfoType_Dictionary_Source() {} - -func (m *CustomInfoType_Dictionary) GetSource() isCustomInfoType_Dictionary_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *CustomInfoType_Dictionary) GetWordList() *CustomInfoType_Dictionary_WordList { - if x, ok := m.GetSource().(*CustomInfoType_Dictionary_WordList_); ok { - return x.WordList - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CustomInfoType_Dictionary) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CustomInfoType_Dictionary_OneofMarshaler, _CustomInfoType_Dictionary_OneofUnmarshaler, _CustomInfoType_Dictionary_OneofSizer, []interface{}{ - (*CustomInfoType_Dictionary_WordList_)(nil), - } -} - -func _CustomInfoType_Dictionary_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CustomInfoType_Dictionary) - // source - switch x := m.Source.(type) { - case *CustomInfoType_Dictionary_WordList_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.WordList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CustomInfoType_Dictionary.Source has unexpected type %T", x) - } - return nil -} - -func _CustomInfoType_Dictionary_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CustomInfoType_Dictionary) - switch tag { - case 1: // source.word_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CustomInfoType_Dictionary_WordList) - err := b.DecodeMessage(msg) - m.Source = &CustomInfoType_Dictionary_WordList_{msg} - return true, err - default: - return false, nil - } -} - -func _CustomInfoType_Dictionary_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CustomInfoType_Dictionary) - // source - switch x := m.Source.(type) { - case *CustomInfoType_Dictionary_WordList_: - s := proto.Size(x.WordList) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Message defining a list of words or phrases to search for in the data. -type CustomInfoType_Dictionary_WordList struct { - // Words or phrases defining the dictionary. The dictionary must contain - // at least one phrase and every phrase must contain at least 2 characters - // that are letters or digits. [required] - Words []string `protobuf:"bytes,1,rep,name=words" json:"words,omitempty"` -} - -func (m *CustomInfoType_Dictionary_WordList) Reset() { *m = CustomInfoType_Dictionary_WordList{} } -func (m *CustomInfoType_Dictionary_WordList) String() string { return proto.CompactTextString(m) } -func (*CustomInfoType_Dictionary_WordList) ProtoMessage() {} -func (*CustomInfoType_Dictionary_WordList) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{1, 0, 0} -} - -func (m *CustomInfoType_Dictionary_WordList) GetWords() []string { - if m != nil { - return m.Words - } - return nil -} - -// General identifier of a data field in a storage service. -type FieldId struct { - // Name describing the field. - ColumnName string `protobuf:"bytes,1,opt,name=column_name,json=columnName" json:"column_name,omitempty"` -} - -func (m *FieldId) Reset() { *m = FieldId{} } -func (m *FieldId) String() string { return proto.CompactTextString(m) } -func (*FieldId) ProtoMessage() {} -func (*FieldId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *FieldId) GetColumnName() string { - if m != nil { - return m.ColumnName - } - return "" -} - -// Datastore partition ID. -// A partition ID identifies a grouping of entities. The grouping is always -// by project and namespace, however the namespace ID may be empty. -// -// A partition ID contains several dimensions: -// project ID and namespace ID. -type PartitionId struct { - // The ID of the project to which the entities belong. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // If not empty, the ID of the namespace to which the entities belong. - NamespaceId string `protobuf:"bytes,4,opt,name=namespace_id,json=namespaceId" json:"namespace_id,omitempty"` -} - -func (m *PartitionId) Reset() { *m = PartitionId{} } -func (m *PartitionId) String() string { return proto.CompactTextString(m) } -func (*PartitionId) ProtoMessage() {} -func (*PartitionId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *PartitionId) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *PartitionId) GetNamespaceId() string { - if m != nil { - return m.NamespaceId - } - return "" -} - -// A representation of a Datastore kind. -type KindExpression struct { - // The name of the kind. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *KindExpression) Reset() { *m = KindExpression{} } -func (m *KindExpression) String() string { return proto.CompactTextString(m) } -func (*KindExpression) ProtoMessage() {} -func (*KindExpression) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *KindExpression) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A reference to a property relative to the Datastore kind expressions. -type PropertyReference struct { - // The name of the property. - // If name includes "."s, it may be interpreted as a property name path. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *PropertyReference) Reset() { *m = PropertyReference{} } -func (m *PropertyReference) String() string { return proto.CompactTextString(m) } -func (*PropertyReference) ProtoMessage() {} -func (*PropertyReference) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *PropertyReference) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A representation of a Datastore property in a projection. -type Projection struct { - // The property to project. - Property *PropertyReference `protobuf:"bytes,1,opt,name=property" json:"property,omitempty"` -} - -func (m *Projection) Reset() { *m = Projection{} } -func (m *Projection) String() string { return proto.CompactTextString(m) } -func (*Projection) ProtoMessage() {} -func (*Projection) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *Projection) GetProperty() *PropertyReference { - if m != nil { - return m.Property - } - return nil -} - -// Options defining a data set within Google Cloud Datastore. -type DatastoreOptions struct { - // A partition ID identifies a grouping of entities. The grouping is always - // by project and namespace, however the namespace ID may be empty. - PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` - // The kind to process. - Kind *KindExpression `protobuf:"bytes,2,opt,name=kind" json:"kind,omitempty"` - // Properties to scan. If none are specified, all properties will be scanned - // by default. - Projection []*Projection `protobuf:"bytes,3,rep,name=projection" json:"projection,omitempty"` -} - -func (m *DatastoreOptions) Reset() { *m = DatastoreOptions{} } -func (m *DatastoreOptions) String() string { return proto.CompactTextString(m) } -func (*DatastoreOptions) ProtoMessage() {} -func (*DatastoreOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *DatastoreOptions) GetPartitionId() *PartitionId { - if m != nil { - return m.PartitionId - } - return nil -} - -func (m *DatastoreOptions) GetKind() *KindExpression { - if m != nil { - return m.Kind - } - return nil -} - -func (m *DatastoreOptions) GetProjection() []*Projection { - if m != nil { - return m.Projection - } - return nil -} - -// Options defining a file or a set of files (path ending with *) within -// a Google Cloud Storage bucket. -type CloudStorageOptions struct { - FileSet *CloudStorageOptions_FileSet `protobuf:"bytes,1,opt,name=file_set,json=fileSet" json:"file_set,omitempty"` -} - -func (m *CloudStorageOptions) Reset() { *m = CloudStorageOptions{} } -func (m *CloudStorageOptions) String() string { return proto.CompactTextString(m) } -func (*CloudStorageOptions) ProtoMessage() {} -func (*CloudStorageOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *CloudStorageOptions) GetFileSet() *CloudStorageOptions_FileSet { - if m != nil { - return m.FileSet - } - return nil -} - -// Set of files to scan. -type CloudStorageOptions_FileSet struct { - // The url, in the format `gs://<bucket>/<path>`. Trailing wildcard in the - // path is allowed. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` -} - -func (m *CloudStorageOptions_FileSet) Reset() { *m = CloudStorageOptions_FileSet{} } -func (m *CloudStorageOptions_FileSet) String() string { return proto.CompactTextString(m) } -func (*CloudStorageOptions_FileSet) ProtoMessage() {} -func (*CloudStorageOptions_FileSet) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8, 0} } - -func (m *CloudStorageOptions_FileSet) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -// A location in Cloud Storage. -type CloudStoragePath struct { - // The url, in the format of `gs://bucket/<path>`. - Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` -} - -func (m *CloudStoragePath) Reset() { *m = CloudStoragePath{} } -func (m *CloudStoragePath) String() string { return proto.CompactTextString(m) } -func (*CloudStoragePath) ProtoMessage() {} -func (*CloudStoragePath) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *CloudStoragePath) GetPath() string { - if m != nil { - return m.Path - } - return "" -} - -// Options defining BigQuery table and row identifiers. -type BigQueryOptions struct { - // Complete BigQuery table reference. - TableReference *BigQueryTable `protobuf:"bytes,1,opt,name=table_reference,json=tableReference" json:"table_reference,omitempty"` - // References to fields uniquely identifying rows within the table. - // Nested fields in the format, like `person.birthdate.year`, are allowed. - IdentifyingFields []*FieldId `protobuf:"bytes,2,rep,name=identifying_fields,json=identifyingFields" json:"identifying_fields,omitempty"` -} - -func (m *BigQueryOptions) Reset() { *m = BigQueryOptions{} } -func (m *BigQueryOptions) String() string { return proto.CompactTextString(m) } -func (*BigQueryOptions) ProtoMessage() {} -func (*BigQueryOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *BigQueryOptions) GetTableReference() *BigQueryTable { - if m != nil { - return m.TableReference - } - return nil -} - -func (m *BigQueryOptions) GetIdentifyingFields() []*FieldId { - if m != nil { - return m.IdentifyingFields - } - return nil -} - -// Shared message indicating Cloud storage type. -type StorageConfig struct { - // Types that are valid to be assigned to Type: - // *StorageConfig_DatastoreOptions - // *StorageConfig_CloudStorageOptions - // *StorageConfig_BigQueryOptions - Type isStorageConfig_Type `protobuf_oneof:"type"` -} - -func (m *StorageConfig) Reset() { *m = StorageConfig{} } -func (m *StorageConfig) String() string { return proto.CompactTextString(m) } -func (*StorageConfig) ProtoMessage() {} -func (*StorageConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -type isStorageConfig_Type interface { - isStorageConfig_Type() -} - -type StorageConfig_DatastoreOptions struct { - DatastoreOptions *DatastoreOptions `protobuf:"bytes,2,opt,name=datastore_options,json=datastoreOptions,oneof"` -} -type StorageConfig_CloudStorageOptions struct { - CloudStorageOptions *CloudStorageOptions `protobuf:"bytes,3,opt,name=cloud_storage_options,json=cloudStorageOptions,oneof"` -} -type StorageConfig_BigQueryOptions struct { - BigQueryOptions *BigQueryOptions `protobuf:"bytes,4,opt,name=big_query_options,json=bigQueryOptions,oneof"` -} - -func (*StorageConfig_DatastoreOptions) isStorageConfig_Type() {} -func (*StorageConfig_CloudStorageOptions) isStorageConfig_Type() {} -func (*StorageConfig_BigQueryOptions) isStorageConfig_Type() {} - -func (m *StorageConfig) GetType() isStorageConfig_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *StorageConfig) GetDatastoreOptions() *DatastoreOptions { - if x, ok := m.GetType().(*StorageConfig_DatastoreOptions); ok { - return x.DatastoreOptions - } - return nil -} - -func (m *StorageConfig) GetCloudStorageOptions() *CloudStorageOptions { - if x, ok := m.GetType().(*StorageConfig_CloudStorageOptions); ok { - return x.CloudStorageOptions - } - return nil -} - -func (m *StorageConfig) GetBigQueryOptions() *BigQueryOptions { - if x, ok := m.GetType().(*StorageConfig_BigQueryOptions); ok { - return x.BigQueryOptions - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*StorageConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _StorageConfig_OneofMarshaler, _StorageConfig_OneofUnmarshaler, _StorageConfig_OneofSizer, []interface{}{ - (*StorageConfig_DatastoreOptions)(nil), - (*StorageConfig_CloudStorageOptions)(nil), - (*StorageConfig_BigQueryOptions)(nil), - } -} - -func _StorageConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*StorageConfig) - // type - switch x := m.Type.(type) { - case *StorageConfig_DatastoreOptions: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatastoreOptions); err != nil { - return err - } - case *StorageConfig_CloudStorageOptions: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CloudStorageOptions); err != nil { - return err - } - case *StorageConfig_BigQueryOptions: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BigQueryOptions); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("StorageConfig.Type has unexpected type %T", x) - } - return nil -} - -func _StorageConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*StorageConfig) - switch tag { - case 2: // type.datastore_options - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatastoreOptions) - err := b.DecodeMessage(msg) - m.Type = &StorageConfig_DatastoreOptions{msg} - return true, err - case 3: // type.cloud_storage_options - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CloudStorageOptions) - err := b.DecodeMessage(msg) - m.Type = &StorageConfig_CloudStorageOptions{msg} - return true, err - case 4: // type.big_query_options - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BigQueryOptions) - err := b.DecodeMessage(msg) - m.Type = &StorageConfig_BigQueryOptions{msg} - return true, err - default: - return false, nil - } -} - -func _StorageConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*StorageConfig) - // type - switch x := m.Type.(type) { - case *StorageConfig_DatastoreOptions: - s := proto.Size(x.DatastoreOptions) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StorageConfig_CloudStorageOptions: - s := proto.Size(x.CloudStorageOptions) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StorageConfig_BigQueryOptions: - s := proto.Size(x.BigQueryOptions) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Record key for a finding in a Cloud Storage file. -type CloudStorageKey struct { - // Path to the file. - FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath" json:"file_path,omitempty"` - // Byte offset of the referenced data in the file. - StartOffset int64 `protobuf:"varint,2,opt,name=start_offset,json=startOffset" json:"start_offset,omitempty"` -} - -func (m *CloudStorageKey) Reset() { *m = CloudStorageKey{} } -func (m *CloudStorageKey) String() string { return proto.CompactTextString(m) } -func (*CloudStorageKey) ProtoMessage() {} -func (*CloudStorageKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *CloudStorageKey) GetFilePath() string { - if m != nil { - return m.FilePath - } - return "" -} - -func (m *CloudStorageKey) GetStartOffset() int64 { - if m != nil { - return m.StartOffset - } - return 0 -} - -// Record key for a finding in Cloud Datastore. -type DatastoreKey struct { - // Datastore entity key. - EntityKey *Key `protobuf:"bytes,1,opt,name=entity_key,json=entityKey" json:"entity_key,omitempty"` -} - -func (m *DatastoreKey) Reset() { *m = DatastoreKey{} } -func (m *DatastoreKey) String() string { return proto.CompactTextString(m) } -func (*DatastoreKey) ProtoMessage() {} -func (*DatastoreKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *DatastoreKey) GetEntityKey() *Key { - if m != nil { - return m.EntityKey - } - return nil -} - -// A unique identifier for a Datastore entity. -// If a key's partition ID or any of its path kinds or names are -// reserved/read-only, the key is reserved/read-only. -// A reserved/read-only key is forbidden in certain documented contexts. -type Key struct { - // Entities are partitioned into subsets, currently identified by a project - // ID and namespace ID. - // Queries are scoped to a single partition. - PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` - // The entity path. - // An entity path consists of one or more elements composed of a kind and a - // string or numerical identifier, which identify entities. The first - // element identifies a _root entity_, the second element identifies - // a _child_ of the root entity, the third element identifies a child of the - // second entity, and so forth. The entities identified by all prefixes of - // the path are called the element's _ancestors_. - // - // A path can never be empty, and a path can have at most 100 elements. - Path []*Key_PathElement `protobuf:"bytes,2,rep,name=path" json:"path,omitempty"` -} - -func (m *Key) Reset() { *m = Key{} } -func (m *Key) String() string { return proto.CompactTextString(m) } -func (*Key) ProtoMessage() {} -func (*Key) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *Key) GetPartitionId() *PartitionId { - if m != nil { - return m.PartitionId - } - return nil -} - -func (m *Key) GetPath() []*Key_PathElement { - if m != nil { - return m.Path - } - return nil -} - -// A (kind, ID/name) pair used to construct a key path. -// -// If either name or ID is set, the element is complete. -// If neither is set, the element is incomplete. -type Key_PathElement struct { - // The kind of the entity. - // A kind matching regex `__.*__` is reserved/read-only. - // A kind must not contain more than 1500 bytes when UTF-8 encoded. - // Cannot be `""`. - Kind string `protobuf:"bytes,1,opt,name=kind" json:"kind,omitempty"` - // The type of ID. - // - // Types that are valid to be assigned to IdType: - // *Key_PathElement_Id - // *Key_PathElement_Name - IdType isKey_PathElement_IdType `protobuf_oneof:"id_type"` -} - -func (m *Key_PathElement) Reset() { *m = Key_PathElement{} } -func (m *Key_PathElement) String() string { return proto.CompactTextString(m) } -func (*Key_PathElement) ProtoMessage() {} -func (*Key_PathElement) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14, 0} } - -type isKey_PathElement_IdType interface { - isKey_PathElement_IdType() -} - -type Key_PathElement_Id struct { - Id int64 `protobuf:"varint,2,opt,name=id,oneof"` -} -type Key_PathElement_Name struct { - Name string `protobuf:"bytes,3,opt,name=name,oneof"` -} - -func (*Key_PathElement_Id) isKey_PathElement_IdType() {} -func (*Key_PathElement_Name) isKey_PathElement_IdType() {} - -func (m *Key_PathElement) GetIdType() isKey_PathElement_IdType { - if m != nil { - return m.IdType - } - return nil -} - -func (m *Key_PathElement) GetKind() string { - if m != nil { - return m.Kind - } - return "" -} - -func (m *Key_PathElement) GetId() int64 { - if x, ok := m.GetIdType().(*Key_PathElement_Id); ok { - return x.Id - } - return 0 -} - -func (m *Key_PathElement) GetName() string { - if x, ok := m.GetIdType().(*Key_PathElement_Name); ok { - return x.Name - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Key_PathElement) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Key_PathElement_OneofMarshaler, _Key_PathElement_OneofUnmarshaler, _Key_PathElement_OneofSizer, []interface{}{ - (*Key_PathElement_Id)(nil), - (*Key_PathElement_Name)(nil), - } -} - -func _Key_PathElement_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Key_PathElement) - // id_type - switch x := m.IdType.(type) { - case *Key_PathElement_Id: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Id)) - case *Key_PathElement_Name: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Name) - case nil: - default: - return fmt.Errorf("Key_PathElement.IdType has unexpected type %T", x) - } - return nil -} - -func _Key_PathElement_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Key_PathElement) - switch tag { - case 2: // id_type.id - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.IdType = &Key_PathElement_Id{int64(x)} - return true, err - case 3: // id_type.name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.IdType = &Key_PathElement_Name{x} - return true, err - default: - return false, nil - } -} - -func _Key_PathElement_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Key_PathElement) - // id_type - switch x := m.IdType.(type) { - case *Key_PathElement_Id: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Id)) - case *Key_PathElement_Name: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Name))) - n += len(x.Name) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Message for a unique key indicating a record that contains a finding. -type RecordKey struct { - // Types that are valid to be assigned to Type: - // *RecordKey_CloudStorageKey - // *RecordKey_DatastoreKey - Type isRecordKey_Type `protobuf_oneof:"type"` -} - -func (m *RecordKey) Reset() { *m = RecordKey{} } -func (m *RecordKey) String() string { return proto.CompactTextString(m) } -func (*RecordKey) ProtoMessage() {} -func (*RecordKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } - -type isRecordKey_Type interface { - isRecordKey_Type() -} - -type RecordKey_CloudStorageKey struct { - CloudStorageKey *CloudStorageKey `protobuf:"bytes,1,opt,name=cloud_storage_key,json=cloudStorageKey,oneof"` -} -type RecordKey_DatastoreKey struct { - DatastoreKey *DatastoreKey `protobuf:"bytes,2,opt,name=datastore_key,json=datastoreKey,oneof"` -} - -func (*RecordKey_CloudStorageKey) isRecordKey_Type() {} -func (*RecordKey_DatastoreKey) isRecordKey_Type() {} - -func (m *RecordKey) GetType() isRecordKey_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *RecordKey) GetCloudStorageKey() *CloudStorageKey { - if x, ok := m.GetType().(*RecordKey_CloudStorageKey); ok { - return x.CloudStorageKey - } - return nil -} - -func (m *RecordKey) GetDatastoreKey() *DatastoreKey { - if x, ok := m.GetType().(*RecordKey_DatastoreKey); ok { - return x.DatastoreKey - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RecordKey) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RecordKey_OneofMarshaler, _RecordKey_OneofUnmarshaler, _RecordKey_OneofSizer, []interface{}{ - (*RecordKey_CloudStorageKey)(nil), - (*RecordKey_DatastoreKey)(nil), - } -} - -func _RecordKey_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RecordKey) - // type - switch x := m.Type.(type) { - case *RecordKey_CloudStorageKey: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CloudStorageKey); err != nil { - return err - } - case *RecordKey_DatastoreKey: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatastoreKey); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RecordKey.Type has unexpected type %T", x) - } - return nil -} - -func _RecordKey_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RecordKey) - switch tag { - case 1: // type.cloud_storage_key - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CloudStorageKey) - err := b.DecodeMessage(msg) - m.Type = &RecordKey_CloudStorageKey{msg} - return true, err - case 2: // type.datastore_key - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatastoreKey) - err := b.DecodeMessage(msg) - m.Type = &RecordKey_DatastoreKey{msg} - return true, err - default: - return false, nil - } -} - -func _RecordKey_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RecordKey) - // type - switch x := m.Type.(type) { - case *RecordKey_CloudStorageKey: - s := proto.Size(x.CloudStorageKey) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RecordKey_DatastoreKey: - s := proto.Size(x.DatastoreKey) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Message defining the location of a BigQuery table. A table is uniquely -// identified by its project_id, dataset_id, and table_name. Within a query -// a table is often referenced with a string in the format of: -// `<project_id>:<dataset_id>.<table_id>` or -// `<project_id>.<dataset_id>.<table_id>`. -type BigQueryTable struct { - // The Google Cloud Platform project ID of the project containing the table. - // If omitted, project ID is inferred from the API call. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Dataset ID of the table. - DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // Name of the table. - TableId string `protobuf:"bytes,3,opt,name=table_id,json=tableId" json:"table_id,omitempty"` -} - -func (m *BigQueryTable) Reset() { *m = BigQueryTable{} } -func (m *BigQueryTable) String() string { return proto.CompactTextString(m) } -func (*BigQueryTable) ProtoMessage() {} -func (*BigQueryTable) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } - -func (m *BigQueryTable) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *BigQueryTable) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *BigQueryTable) GetTableId() string { - if m != nil { - return m.TableId - } - return "" -} - -// An entity in a dataset is a field or set of fields that correspond to a -// single person. For example, in medical records the `EntityId` might be -// a patient identifier, or for financial records it might be an account -// identifier. This message is used when generalizations or analysis must be -// consistent across multiple rows pertaining to the same entity. -type EntityId struct { - // Composite key indicating which field contains the entity identifier. - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` -} - -func (m *EntityId) Reset() { *m = EntityId{} } -func (m *EntityId) String() string { return proto.CompactTextString(m) } -func (*EntityId) ProtoMessage() {} -func (*EntityId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } - -func (m *EntityId) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -func init() { - proto.RegisterType((*InfoType)(nil), "google.privacy.dlp.v2beta1.InfoType") - proto.RegisterType((*CustomInfoType)(nil), "google.privacy.dlp.v2beta1.CustomInfoType") - proto.RegisterType((*CustomInfoType_Dictionary)(nil), "google.privacy.dlp.v2beta1.CustomInfoType.Dictionary") - proto.RegisterType((*CustomInfoType_Dictionary_WordList)(nil), "google.privacy.dlp.v2beta1.CustomInfoType.Dictionary.WordList") - proto.RegisterType((*FieldId)(nil), "google.privacy.dlp.v2beta1.FieldId") - proto.RegisterType((*PartitionId)(nil), "google.privacy.dlp.v2beta1.PartitionId") - proto.RegisterType((*KindExpression)(nil), "google.privacy.dlp.v2beta1.KindExpression") - proto.RegisterType((*PropertyReference)(nil), "google.privacy.dlp.v2beta1.PropertyReference") - proto.RegisterType((*Projection)(nil), "google.privacy.dlp.v2beta1.Projection") - proto.RegisterType((*DatastoreOptions)(nil), "google.privacy.dlp.v2beta1.DatastoreOptions") - proto.RegisterType((*CloudStorageOptions)(nil), "google.privacy.dlp.v2beta1.CloudStorageOptions") - proto.RegisterType((*CloudStorageOptions_FileSet)(nil), "google.privacy.dlp.v2beta1.CloudStorageOptions.FileSet") - proto.RegisterType((*CloudStoragePath)(nil), "google.privacy.dlp.v2beta1.CloudStoragePath") - proto.RegisterType((*BigQueryOptions)(nil), "google.privacy.dlp.v2beta1.BigQueryOptions") - proto.RegisterType((*StorageConfig)(nil), "google.privacy.dlp.v2beta1.StorageConfig") - proto.RegisterType((*CloudStorageKey)(nil), "google.privacy.dlp.v2beta1.CloudStorageKey") - proto.RegisterType((*DatastoreKey)(nil), "google.privacy.dlp.v2beta1.DatastoreKey") - proto.RegisterType((*Key)(nil), "google.privacy.dlp.v2beta1.Key") - proto.RegisterType((*Key_PathElement)(nil), "google.privacy.dlp.v2beta1.Key.PathElement") - proto.RegisterType((*RecordKey)(nil), "google.privacy.dlp.v2beta1.RecordKey") - proto.RegisterType((*BigQueryTable)(nil), "google.privacy.dlp.v2beta1.BigQueryTable") - proto.RegisterType((*EntityId)(nil), "google.privacy.dlp.v2beta1.EntityId") -} - -func init() { proto.RegisterFile("google/privacy/dlp/v2beta1/storage.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1068 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdd, 0x6e, 0xdc, 0xc4, - 0x17, 0x5f, 0xef, 0xa6, 0xcd, 0xee, 0xd9, 0x7c, 0xba, 0xfd, 0x4b, 0xfb, 0xdf, 0xd2, 0x26, 0x35, - 0x55, 0x1b, 0x1a, 0xf0, 0x8a, 0x20, 0x84, 0x10, 0x22, 0x88, 0xcd, 0x07, 0xbb, 0x04, 0x35, 0xe9, - 0x34, 0x6a, 0x54, 0x08, 0xb2, 0xbc, 0x9e, 0xb1, 0x33, 0xd4, 0xeb, 0x19, 0xec, 0xd9, 0x16, 0xbf, - 0x00, 0xaf, 0xc0, 0x03, 0x70, 0xc7, 0x03, 0x20, 0x71, 0xc5, 0x3d, 0x17, 0x3c, 0x06, 0xe2, 0x31, - 0xd0, 0x7c, 0xd8, 0xeb, 0xa4, 0x61, 0x1b, 0x10, 0x77, 0xe3, 0x33, 0xe7, 0xfc, 0xce, 0x99, 0xdf, - 0xfc, 0xce, 0x19, 0xc3, 0x46, 0xc4, 0x58, 0x14, 0x93, 0x1e, 0x4f, 0xe9, 0x0b, 0x3f, 0xc8, 0x7b, - 0x38, 0xe6, 0xbd, 0x17, 0x5b, 0x23, 0x22, 0xfc, 0x77, 0x7b, 0x99, 0x60, 0xa9, 0x1f, 0x11, 0x97, - 0xa7, 0x4c, 0x30, 0xbb, 0xab, 0x3d, 0x5d, 0xe3, 0xe9, 0xe2, 0x98, 0xbb, 0xc6, 0xb3, 0xfb, 0x86, - 0x41, 0xf1, 0x39, 0xed, 0xf9, 0x49, 0xc2, 0x84, 0x2f, 0x28, 0x4b, 0x32, 0x1d, 0xd9, 0x5d, 0x2b, - 0x73, 0x30, 0xc1, 0x46, 0x93, 0xb0, 0x27, 0xe8, 0x98, 0x64, 0xc2, 0x1f, 0x73, 0xed, 0xe0, 0xdc, - 0x81, 0xe6, 0x30, 0x09, 0xd9, 0x71, 0xce, 0x89, 0x6d, 0xc3, 0x5c, 0xe2, 0x8f, 0x49, 0xc7, 0x5a, - 0xb7, 0x36, 0x5a, 0x48, 0xad, 0x9d, 0xdf, 0xeb, 0xb0, 0xb4, 0x33, 0xc9, 0x04, 0x1b, 0x97, 0x6e, - 0x9f, 0x42, 0x8b, 0x26, 0x21, 0xf3, 0x44, 0xce, 0xb5, 0x6f, 0x7b, 0xeb, 0x9e, 0xfb, 0xf7, 0x15, - 0xba, 0x45, 0x20, 0x6a, 0xd2, 0x02, 0xe2, 0x04, 0x00, 0xd3, 0x40, 0x16, 0xea, 0xa7, 0x79, 0xa7, - 0xae, 0x30, 0xde, 0x9f, 0x85, 0x71, 0xbe, 0x04, 0x77, 0xb7, 0x0c, 0x1e, 0xd4, 0x50, 0x05, 0xaa, - 0xfb, 0x83, 0x05, 0x30, 0xdd, 0xb4, 0xbf, 0x86, 0xd6, 0x4b, 0x96, 0x62, 0x2f, 0xa6, 0x99, 0x30, - 0xa5, 0x6e, 0xff, 0xab, 0x34, 0xee, 0x09, 0x4b, 0xf1, 0x17, 0x34, 0x13, 0x83, 0x1a, 0x6a, 0xbe, - 0x34, 0xeb, 0xee, 0x3a, 0x34, 0x0b, 0xbb, 0x7d, 0x13, 0xae, 0x49, 0x7b, 0xd6, 0xb1, 0xd6, 0x1b, - 0x1b, 0x2d, 0xa4, 0x3f, 0xfa, 0x4d, 0xb8, 0x9e, 0xb1, 0x49, 0x1a, 0x90, 0xfe, 0x75, 0x98, 0x93, - 0x84, 0x39, 0x0f, 0x61, 0x7e, 0x9f, 0x92, 0x18, 0x0f, 0xb1, 0xbd, 0x06, 0xed, 0x80, 0xc5, 0x93, - 0x71, 0xe2, 0x55, 0x68, 0x07, 0x6d, 0x7a, 0x24, 0xc9, 0x3f, 0x84, 0xf6, 0x91, 0x9f, 0x0a, 0x2a, - 0x8b, 0x18, 0x62, 0xfb, 0x36, 0x00, 0x4f, 0xd9, 0x37, 0x24, 0x10, 0x1e, 0xc5, 0x8a, 0xb5, 0x16, - 0x6a, 0x19, 0xcb, 0x10, 0xdb, 0x77, 0x61, 0x41, 0xe2, 0x64, 0xdc, 0x0f, 0x88, 0x74, 0x98, 0x53, - 0x0e, 0xed, 0xd2, 0x36, 0xc4, 0xce, 0x3d, 0x58, 0x3a, 0xa0, 0x09, 0xde, 0xfb, 0x8e, 0xa7, 0x24, - 0xcb, 0x28, 0x4b, 0x2e, 0xbd, 0xf3, 0x07, 0xb0, 0x7a, 0x94, 0x32, 0x4e, 0x52, 0x91, 0x23, 0x12, - 0x92, 0x94, 0x24, 0xc1, 0x54, 0x1c, 0xf5, 0x8a, 0xe3, 0x09, 0xc0, 0x91, 0x4e, 0x2f, 0xa1, 0x86, - 0xd0, 0xe4, 0x26, 0xcc, 0x70, 0xfd, 0xce, 0x2c, 0xae, 0x5f, 0x49, 0x81, 0xca, 0x70, 0xe7, 0x0f, - 0x0b, 0x56, 0x76, 0x7d, 0xe1, 0xcb, 0x36, 0x20, 0x87, 0x5c, 0x29, 0xda, 0xfe, 0x1c, 0x16, 0x78, - 0xc1, 0x86, 0x3c, 0x9f, 0xce, 0xf1, 0x60, 0x66, 0x8e, 0x29, 0x7b, 0xa8, 0xcd, 0x2b, 0x54, 0x6e, - 0xc3, 0xdc, 0x73, 0x9a, 0x60, 0x23, 0xbd, 0x87, 0xb3, 0x30, 0xce, 0x13, 0x86, 0x54, 0x9c, 0xbd, - 0x5f, 0x5e, 0x05, 0x65, 0x49, 0xa7, 0xb1, 0xde, 0xd8, 0x68, 0x6f, 0xdd, 0x7f, 0xcd, 0x69, 0x8d, - 0x37, 0xaa, 0x44, 0x3a, 0xdf, 0x5b, 0x70, 0x63, 0x27, 0x66, 0x13, 0xfc, 0x44, 0x37, 0x7c, 0x71, - 0x56, 0x04, 0xcd, 0x90, 0xc6, 0xc4, 0xcb, 0x48, 0xa1, 0xdb, 0x0f, 0x66, 0xea, 0xf6, 0x55, 0x08, - 0x77, 0x9f, 0xc6, 0xe4, 0x09, 0x11, 0x68, 0x3e, 0xd4, 0x8b, 0xee, 0x2d, 0xa9, 0x3c, 0xb5, 0xb4, - 0x57, 0xa0, 0x31, 0x49, 0x63, 0x73, 0xe9, 0x72, 0xe9, 0xdc, 0x87, 0x95, 0x2a, 0xc8, 0x91, 0x2f, - 0xce, 0xe4, 0x95, 0x73, 0x5f, 0x9c, 0x15, 0xda, 0x90, 0x6b, 0xe7, 0x17, 0x0b, 0x96, 0xfb, 0x34, - 0x7a, 0x3c, 0x21, 0x69, 0x3e, 0x2d, 0x76, 0x59, 0xf8, 0xa3, 0x98, 0x78, 0x69, 0x71, 0x95, 0xa6, - 0xe6, 0xb7, 0x66, 0xd5, 0x5c, 0xa0, 0x1c, 0xcb, 0x50, 0xb4, 0xa4, 0x10, 0xa6, 0x72, 0x43, 0x60, - 0x53, 0x4c, 0x12, 0x41, 0xc3, 0x9c, 0x26, 0x91, 0x17, 0xca, 0x96, 0xc9, 0x3a, 0x75, 0x45, 0xf4, - 0x9b, 0xb3, 0x60, 0x4d, 0x73, 0xa1, 0xd5, 0x4a, 0xb8, 0xb2, 0x65, 0xce, 0xcf, 0x75, 0x58, 0x34, - 0xe7, 0xdb, 0x61, 0x49, 0x48, 0x23, 0xfb, 0x2b, 0x58, 0xc5, 0x85, 0xcc, 0x3c, 0xa6, 0x8f, 0x63, - 0x34, 0xf1, 0xf6, 0xac, 0x24, 0x17, 0xb5, 0x39, 0xa8, 0xa1, 0x15, 0x7c, 0x51, 0xaf, 0x04, 0xfe, - 0x17, 0x48, 0x4a, 0x3d, 0x33, 0xcc, 0xcb, 0x04, 0x0d, 0x95, 0xa0, 0xf7, 0x0f, 0x2f, 0x74, 0x50, - 0x43, 0x37, 0x82, 0x4b, 0xa4, 0xf2, 0x0c, 0x56, 0x47, 0x34, 0xf2, 0xbe, 0x95, 0x5c, 0x96, 0x29, - 0xe6, 0x54, 0x8a, 0xcd, 0xab, 0xf0, 0x3f, 0x85, 0x5f, 0x1e, 0x9d, 0x37, 0x95, 0x33, 0xeb, 0x31, - 0x2c, 0x57, 0x0b, 0x3a, 0x20, 0xb9, 0x7d, 0x0b, 0x5a, 0x4a, 0xa0, 0x15, 0x81, 0x28, 0xc5, 0x2a, - 0xe1, 0xdc, 0x85, 0x85, 0x4c, 0xf8, 0xa9, 0xf0, 0x58, 0x18, 0x4a, 0x05, 0x4b, 0x46, 0x1b, 0xa8, - 0xad, 0x6c, 0x87, 0xca, 0xe4, 0x3c, 0x82, 0x85, 0x92, 0x44, 0x89, 0xb7, 0x0d, 0x20, 0xaf, 0x4b, - 0xe4, 0xde, 0x73, 0x52, 0x8c, 0x8f, 0xb5, 0x99, 0x6d, 0x49, 0x72, 0xd4, 0xd2, 0x21, 0x07, 0x24, - 0x77, 0xfe, 0xb4, 0xa0, 0x21, 0x71, 0xfe, 0xcb, 0x21, 0xf1, 0x89, 0xd1, 0xbf, 0x56, 0xdd, 0xe6, - 0x6b, 0xaa, 0x71, 0xe5, 0xd1, 0xf7, 0x62, 0x32, 0x26, 0x89, 0xd0, 0xcd, 0xd2, 0x3d, 0x96, 0xf3, - 0xbb, 0x34, 0xca, 0x7e, 0x52, 0x43, 0xc7, 0xf4, 0x93, 0x1a, 0x24, 0x2b, 0x50, 0x37, 0xb3, 0xbc, - 0x31, 0xa8, 0xa1, 0x3a, 0xc5, 0xf6, 0x4d, 0x33, 0x68, 0xa5, 0x4a, 0x5a, 0x83, 0x9a, 0x1e, 0xb5, - 0xfd, 0x16, 0xcc, 0x53, 0xac, 0x9e, 0x5c, 0xe7, 0x57, 0x0b, 0x5a, 0x88, 0x04, 0x2c, 0xc5, 0xf2, - 0xc0, 0xcf, 0x60, 0xf5, 0xbc, 0xca, 0xa6, 0xfc, 0x6d, 0x5e, 0x55, 0x61, 0x07, 0x44, 0xbe, 0xa3, - 0xcb, 0xc1, 0x85, 0x3b, 0x3e, 0x84, 0xc5, 0x69, 0x77, 0x48, 0x58, 0xdd, 0x19, 0x1b, 0x57, 0xea, - 0x0c, 0x8d, 0xb9, 0x80, 0x2b, 0xdf, 0xa5, 0x9e, 0xce, 0x60, 0xf1, 0x5c, 0xf7, 0x5f, 0x78, 0xd9, - 0xac, 0x8b, 0x2f, 0xdb, 0x6d, 0x00, 0x85, 0x43, 0xaa, 0x0f, 0x9f, 0xb1, 0x0c, 0xb1, 0xfd, 0x7f, - 0x68, 0xea, 0xf9, 0x43, 0xb1, 0x66, 0x0d, 0xcd, 0xab, 0xef, 0x21, 0x76, 0xf6, 0xa0, 0xb9, 0xa7, - 0x34, 0x32, 0xc4, 0xf6, 0x87, 0x70, 0x4d, 0x8d, 0x11, 0xc3, 0xce, 0x95, 0xa6, 0x88, 0x8e, 0xe8, - 0xff, 0x68, 0xc1, 0x9d, 0x80, 0x8d, 0x67, 0x44, 0xf4, 0x61, 0x37, 0xe6, 0xc5, 0xf0, 0xb4, 0xbe, - 0xfc, 0xd8, 0x78, 0x46, 0x2c, 0xf6, 0x93, 0xc8, 0x65, 0x69, 0xd4, 0x8b, 0x48, 0xa2, 0x7e, 0xb9, - 0x7a, 0x7a, 0xcb, 0xe7, 0x34, 0xbb, 0xec, 0xd7, 0xef, 0x23, 0x1c, 0xf3, 0x9f, 0xea, 0x9d, 0xcf, - 0x74, 0xbc, 0xba, 0x25, 0x77, 0x37, 0xe6, 0xee, 0xd3, 0xad, 0xbe, 0xdc, 0xfe, 0xad, 0xd8, 0x3a, - 0x55, 0x5b, 0xa7, 0xbb, 0x31, 0x3f, 0x7d, 0xaa, 0x23, 0x47, 0xd7, 0x15, 0xfe, 0x7b, 0x7f, 0x05, - 0x00, 0x00, 0xff, 0xff, 0x05, 0x77, 0xdf, 0xed, 0x59, 0x0a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta2/dlp.pb.go b/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta2/dlp.pb.go deleted file mode 100644 index 5a89152f..00000000 --- a/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta2/dlp.pb.go +++ /dev/null @@ -1,7704 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/privacy/dlp/v2beta2/dlp.proto - -/* -Package dlp is a generated protocol buffer package. - -It is generated from these files: - google/privacy/dlp/v2beta2/dlp.proto - google/privacy/dlp/v2beta2/storage.proto - -It has these top-level messages: - InspectConfig - ContentItem - Table - InspectResult - Finding - Location - TableLocation - Range - ImageLocation - RedactImageRequest - Color - RedactImageResponse - DeidentifyContentRequest - DeidentifyContentResponse - ReidentifyContentRequest - ReidentifyContentResponse - InspectContentRequest - InspectContentResponse - InspectDataSourceRequest - OutputStorageConfig - InfoTypeStatistics - InspectDataSourceDetails - InfoTypeDescription - ListInfoTypesRequest - ListInfoTypesResponse - AnalyzeDataSourceRiskRequest - RiskAnalysisJobConfig - PrivacyMetric - AnalyzeDataSourceRiskDetails - ValueFrequency - Value - DeidentifyConfig - PrimitiveTransformation - TimePartConfig - CryptoHashConfig - ReplaceValueConfig - ReplaceWithInfoTypeConfig - RedactConfig - CharsToIgnore - CharacterMaskConfig - FixedSizeBucketingConfig - BucketingConfig - CryptoReplaceFfxFpeConfig - CryptoKey - TransientCryptoKey - UnwrappedCryptoKey - KmsWrappedCryptoKey - InfoTypeTransformations - FieldTransformation - RecordTransformations - RecordSuppression - RecordCondition - TransformationOverview - TransformationSummary - InspectTemplate - DeidentifyTemplate - CreateInspectTemplateRequest - UpdateInspectTemplateRequest - GetInspectTemplateRequest - ListInspectTemplatesRequest - ListInspectTemplatesResponse - DeleteInspectTemplateRequest - InspectJobConfig - DlpJob - GetDlpJobRequest - ListDlpJobsRequest - ListDlpJobsResponse - CancelDlpJobRequest - DeleteDlpJobRequest - CreateDeidentifyTemplateRequest - UpdateDeidentifyTemplateRequest - GetDeidentifyTemplateRequest - ListDeidentifyTemplatesRequest - ListDeidentifyTemplatesResponse - DeleteDeidentifyTemplateRequest - InfoType - CustomInfoType - FieldId - PartitionId - KindExpression - DatastoreOptions - CloudStorageOptions - BigQueryOptions - StorageConfig - CloudStorageKey - DatastoreKey - Key - RecordKey - BigQueryTable - EntityId -*/ -package dlp - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "github.com/golang/protobuf/ptypes/duration" -import google_protobuf3 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf4 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" -import google_type "google.golang.org/genproto/googleapis/type/date" -import _ "google.golang.org/genproto/googleapis/type/dayofweek" -import google_type2 "google.golang.org/genproto/googleapis/type/timeofday" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Parts of the APIs which use certain infoTypes. -type InfoTypeSupportedBy int32 - -const ( - InfoTypeSupportedBy_ENUM_TYPE_UNSPECIFIED InfoTypeSupportedBy = 0 - // Supported by the inspect operations. - InfoTypeSupportedBy_INSPECT InfoTypeSupportedBy = 1 - // Supported by the risk analysis operations. - InfoTypeSupportedBy_RISK_ANALYSIS InfoTypeSupportedBy = 2 -) - -var InfoTypeSupportedBy_name = map[int32]string{ - 0: "ENUM_TYPE_UNSPECIFIED", - 1: "INSPECT", - 2: "RISK_ANALYSIS", -} -var InfoTypeSupportedBy_value = map[string]int32{ - "ENUM_TYPE_UNSPECIFIED": 0, - "INSPECT": 1, - "RISK_ANALYSIS": 2, -} - -func (x InfoTypeSupportedBy) String() string { - return proto.EnumName(InfoTypeSupportedBy_name, int32(x)) -} -func (InfoTypeSupportedBy) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Operators available for comparing the value of fields. -type RelationalOperator int32 - -const ( - RelationalOperator_RELATIONAL_OPERATOR_UNSPECIFIED RelationalOperator = 0 - // Equal. - RelationalOperator_EQUAL_TO RelationalOperator = 1 - // Not equal to. - RelationalOperator_NOT_EQUAL_TO RelationalOperator = 2 - // Greater than. - RelationalOperator_GREATER_THAN RelationalOperator = 3 - // Less than. - RelationalOperator_LESS_THAN RelationalOperator = 4 - // Greater than or equals. - RelationalOperator_GREATER_THAN_OR_EQUALS RelationalOperator = 5 - // Less than or equals. - RelationalOperator_LESS_THAN_OR_EQUALS RelationalOperator = 6 - // Exists - RelationalOperator_EXISTS RelationalOperator = 7 -) - -var RelationalOperator_name = map[int32]string{ - 0: "RELATIONAL_OPERATOR_UNSPECIFIED", - 1: "EQUAL_TO", - 2: "NOT_EQUAL_TO", - 3: "GREATER_THAN", - 4: "LESS_THAN", - 5: "GREATER_THAN_OR_EQUALS", - 6: "LESS_THAN_OR_EQUALS", - 7: "EXISTS", -} -var RelationalOperator_value = map[string]int32{ - "RELATIONAL_OPERATOR_UNSPECIFIED": 0, - "EQUAL_TO": 1, - "NOT_EQUAL_TO": 2, - "GREATER_THAN": 3, - "LESS_THAN": 4, - "GREATER_THAN_OR_EQUALS": 5, - "LESS_THAN_OR_EQUALS": 6, - "EXISTS": 7, -} - -func (x RelationalOperator) String() string { - return proto.EnumName(RelationalOperator_name, int32(x)) -} -func (RelationalOperator) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -// An enum to represent the various type of DLP jobs. -type DlpJobType int32 - -const ( - DlpJobType_DLP_JOB_TYPE_UNSPECIFIED DlpJobType = 0 - // The job inspected Google Cloud for sensitive data. - DlpJobType_INSPECT_JOB DlpJobType = 1 - // The job executed a Risk Analysis computation. - DlpJobType_RISK_ANALYSIS_JOB DlpJobType = 2 -) - -var DlpJobType_name = map[int32]string{ - 0: "DLP_JOB_TYPE_UNSPECIFIED", - 1: "INSPECT_JOB", - 2: "RISK_ANALYSIS_JOB", -} -var DlpJobType_value = map[string]int32{ - "DLP_JOB_TYPE_UNSPECIFIED": 0, - "INSPECT_JOB": 1, - "RISK_ANALYSIS_JOB": 2, -} - -func (x DlpJobType) String() string { - return proto.EnumName(DlpJobType_name, int32(x)) -} -func (DlpJobType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type TimePartConfig_TimePart int32 - -const ( - TimePartConfig_TIME_PART_UNSPECIFIED TimePartConfig_TimePart = 0 - // [0-9999] - TimePartConfig_YEAR TimePartConfig_TimePart = 1 - // [1-12] - TimePartConfig_MONTH TimePartConfig_TimePart = 2 - // [1-31] - TimePartConfig_DAY_OF_MONTH TimePartConfig_TimePart = 3 - // [1-7] - TimePartConfig_DAY_OF_WEEK TimePartConfig_TimePart = 4 - // [1-52] - TimePartConfig_WEEK_OF_YEAR TimePartConfig_TimePart = 5 - // [0-23] - TimePartConfig_HOUR_OF_DAY TimePartConfig_TimePart = 6 -) - -var TimePartConfig_TimePart_name = map[int32]string{ - 0: "TIME_PART_UNSPECIFIED", - 1: "YEAR", - 2: "MONTH", - 3: "DAY_OF_MONTH", - 4: "DAY_OF_WEEK", - 5: "WEEK_OF_YEAR", - 6: "HOUR_OF_DAY", -} -var TimePartConfig_TimePart_value = map[string]int32{ - "TIME_PART_UNSPECIFIED": 0, - "YEAR": 1, - "MONTH": 2, - "DAY_OF_MONTH": 3, - "DAY_OF_WEEK": 4, - "WEEK_OF_YEAR": 5, - "HOUR_OF_DAY": 6, -} - -func (x TimePartConfig_TimePart) String() string { - return proto.EnumName(TimePartConfig_TimePart_name, int32(x)) -} -func (TimePartConfig_TimePart) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{33, 0} } - -type CharsToIgnore_CommonCharsToIgnore int32 - -const ( - CharsToIgnore_COMMON_CHARS_TO_IGNORE_UNSPECIFIED CharsToIgnore_CommonCharsToIgnore = 0 - // 0-9 - CharsToIgnore_NUMERIC CharsToIgnore_CommonCharsToIgnore = 1 - // A-Z - CharsToIgnore_ALPHA_UPPER_CASE CharsToIgnore_CommonCharsToIgnore = 2 - // a-z - CharsToIgnore_ALPHA_LOWER_CASE CharsToIgnore_CommonCharsToIgnore = 3 - // US Punctuation, one of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ - CharsToIgnore_PUNCTUATION CharsToIgnore_CommonCharsToIgnore = 4 - // Whitespace character, one of [ \t\n\x0B\f\r] - CharsToIgnore_WHITESPACE CharsToIgnore_CommonCharsToIgnore = 5 -) - -var CharsToIgnore_CommonCharsToIgnore_name = map[int32]string{ - 0: "COMMON_CHARS_TO_IGNORE_UNSPECIFIED", - 1: "NUMERIC", - 2: "ALPHA_UPPER_CASE", - 3: "ALPHA_LOWER_CASE", - 4: "PUNCTUATION", - 5: "WHITESPACE", -} -var CharsToIgnore_CommonCharsToIgnore_value = map[string]int32{ - "COMMON_CHARS_TO_IGNORE_UNSPECIFIED": 0, - "NUMERIC": 1, - "ALPHA_UPPER_CASE": 2, - "ALPHA_LOWER_CASE": 3, - "PUNCTUATION": 4, - "WHITESPACE": 5, -} - -func (x CharsToIgnore_CommonCharsToIgnore) String() string { - return proto.EnumName(CharsToIgnore_CommonCharsToIgnore_name, int32(x)) -} -func (CharsToIgnore_CommonCharsToIgnore) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{38, 0} -} - -// These are commonly used subsets of the alphabet that the FFX mode -// natively supports. In the algorithm, the alphabet is selected using -// the "radix". Therefore each corresponds to particular radix. -type CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet int32 - -const ( - CryptoReplaceFfxFpeConfig_FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 0 - // [0-9] (radix of 10) - CryptoReplaceFfxFpeConfig_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 1 - // [0-9A-F] (radix of 16) - CryptoReplaceFfxFpeConfig_HEXADECIMAL CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 2 - // [0-9A-Z] (radix of 36) - CryptoReplaceFfxFpeConfig_UPPER_CASE_ALPHA_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 3 - // [0-9A-Za-z] (radix of 62) - CryptoReplaceFfxFpeConfig_ALPHA_NUMERIC CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet = 4 -) - -var CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name = map[int32]string{ - 0: "FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED", - 1: "NUMERIC", - 2: "HEXADECIMAL", - 3: "UPPER_CASE_ALPHA_NUMERIC", - 4: "ALPHA_NUMERIC", -} -var CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_value = map[string]int32{ - "FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED": 0, - "NUMERIC": 1, - "HEXADECIMAL": 2, - "UPPER_CASE_ALPHA_NUMERIC": 3, - "ALPHA_NUMERIC": 4, -} - -func (x CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) String() string { - return proto.EnumName(CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name, int32(x)) -} -func (CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{42, 0} -} - -type RecordCondition_Expressions_LogicalOperator int32 - -const ( - RecordCondition_Expressions_LOGICAL_OPERATOR_UNSPECIFIED RecordCondition_Expressions_LogicalOperator = 0 - RecordCondition_Expressions_AND RecordCondition_Expressions_LogicalOperator = 1 -) - -var RecordCondition_Expressions_LogicalOperator_name = map[int32]string{ - 0: "LOGICAL_OPERATOR_UNSPECIFIED", - 1: "AND", -} -var RecordCondition_Expressions_LogicalOperator_value = map[string]int32{ - "LOGICAL_OPERATOR_UNSPECIFIED": 0, - "AND": 1, -} - -func (x RecordCondition_Expressions_LogicalOperator) String() string { - return proto.EnumName(RecordCondition_Expressions_LogicalOperator_name, int32(x)) -} -func (RecordCondition_Expressions_LogicalOperator) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{51, 2, 0} -} - -// Possible outcomes of transformations. -type TransformationSummary_TransformationResultCode int32 - -const ( - TransformationSummary_TRANSFORMATION_RESULT_CODE_UNSPECIFIED TransformationSummary_TransformationResultCode = 0 - TransformationSummary_SUCCESS TransformationSummary_TransformationResultCode = 1 - TransformationSummary_ERROR TransformationSummary_TransformationResultCode = 2 -) - -var TransformationSummary_TransformationResultCode_name = map[int32]string{ - 0: "TRANSFORMATION_RESULT_CODE_UNSPECIFIED", - 1: "SUCCESS", - 2: "ERROR", -} -var TransformationSummary_TransformationResultCode_value = map[string]int32{ - "TRANSFORMATION_RESULT_CODE_UNSPECIFIED": 0, - "SUCCESS": 1, - "ERROR": 2, -} - -func (x TransformationSummary_TransformationResultCode) String() string { - return proto.EnumName(TransformationSummary_TransformationResultCode_name, int32(x)) -} -func (TransformationSummary_TransformationResultCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{53, 0} -} - -type DlpJob_JobState int32 - -const ( - DlpJob_JOB_STATE_UNSPECIFIED DlpJob_JobState = 0 - // The job has not yet started. - DlpJob_PENDING DlpJob_JobState = 1 - // The job is currently running. - DlpJob_RUNNING DlpJob_JobState = 2 - // The job is no longer running. - DlpJob_DONE DlpJob_JobState = 3 - // The job was canceled before it could complete. - DlpJob_CANCELED DlpJob_JobState = 4 - // The job had an error and did not complete. - DlpJob_FAILED DlpJob_JobState = 5 -) - -var DlpJob_JobState_name = map[int32]string{ - 0: "JOB_STATE_UNSPECIFIED", - 1: "PENDING", - 2: "RUNNING", - 3: "DONE", - 4: "CANCELED", - 5: "FAILED", -} -var DlpJob_JobState_value = map[string]int32{ - "JOB_STATE_UNSPECIFIED": 0, - "PENDING": 1, - "RUNNING": 2, - "DONE": 3, - "CANCELED": 4, - "FAILED": 5, -} - -func (x DlpJob_JobState) String() string { - return proto.EnumName(DlpJob_JobState_name, int32(x)) -} -func (DlpJob_JobState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{63, 0} } - -// Configuration description of the scanning process. -// When used with redactContent only info_types and min_likelihood are currently -// used. -type InspectConfig struct { - // Restricts what info_types to look for. The values must correspond to - // InfoType values returned by ListInfoTypes or found in documentation. - // Empty info_types runs all enabled detectors. - InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` - // Only returns findings equal or above this threshold. The default is - // POSSIBLE. - MinLikelihood Likelihood `protobuf:"varint,2,opt,name=min_likelihood,json=minLikelihood,enum=google.privacy.dlp.v2beta2.Likelihood" json:"min_likelihood,omitempty"` - Limits *InspectConfig_FindingLimits `protobuf:"bytes,3,opt,name=limits" json:"limits,omitempty"` - // When true, a contextual quote from the data that triggered a finding is - // included in the response; see Finding.quote. - IncludeQuote bool `protobuf:"varint,4,opt,name=include_quote,json=includeQuote" json:"include_quote,omitempty"` - // When true, excludes type information of the findings. - ExcludeInfoTypes bool `protobuf:"varint,5,opt,name=exclude_info_types,json=excludeInfoTypes" json:"exclude_info_types,omitempty"` - // Custom infoTypes provided by the user. - CustomInfoTypes []*CustomInfoType `protobuf:"bytes,6,rep,name=custom_info_types,json=customInfoTypes" json:"custom_info_types,omitempty"` -} - -func (m *InspectConfig) Reset() { *m = InspectConfig{} } -func (m *InspectConfig) String() string { return proto.CompactTextString(m) } -func (*InspectConfig) ProtoMessage() {} -func (*InspectConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *InspectConfig) GetInfoTypes() []*InfoType { - if m != nil { - return m.InfoTypes - } - return nil -} - -func (m *InspectConfig) GetMinLikelihood() Likelihood { - if m != nil { - return m.MinLikelihood - } - return Likelihood_LIKELIHOOD_UNSPECIFIED -} - -func (m *InspectConfig) GetLimits() *InspectConfig_FindingLimits { - if m != nil { - return m.Limits - } - return nil -} - -func (m *InspectConfig) GetIncludeQuote() bool { - if m != nil { - return m.IncludeQuote - } - return false -} - -func (m *InspectConfig) GetExcludeInfoTypes() bool { - if m != nil { - return m.ExcludeInfoTypes - } - return false -} - -func (m *InspectConfig) GetCustomInfoTypes() []*CustomInfoType { - if m != nil { - return m.CustomInfoTypes - } - return nil -} - -type InspectConfig_FindingLimits struct { - // Max number of findings that will be returned for each item scanned. - MaxFindingsPerItem int32 `protobuf:"varint,1,opt,name=max_findings_per_item,json=maxFindingsPerItem" json:"max_findings_per_item,omitempty"` - // Max total number of findings that will be returned per request/job. - MaxFindingsPerRequest int32 `protobuf:"varint,2,opt,name=max_findings_per_request,json=maxFindingsPerRequest" json:"max_findings_per_request,omitempty"` - // Configuration of findings limit given for specified infoTypes. - MaxFindingsPerInfoType []*InspectConfig_FindingLimits_InfoTypeLimit `protobuf:"bytes,3,rep,name=max_findings_per_info_type,json=maxFindingsPerInfoType" json:"max_findings_per_info_type,omitempty"` -} - -func (m *InspectConfig_FindingLimits) Reset() { *m = InspectConfig_FindingLimits{} } -func (m *InspectConfig_FindingLimits) String() string { return proto.CompactTextString(m) } -func (*InspectConfig_FindingLimits) ProtoMessage() {} -func (*InspectConfig_FindingLimits) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -func (m *InspectConfig_FindingLimits) GetMaxFindingsPerItem() int32 { - if m != nil { - return m.MaxFindingsPerItem - } - return 0 -} - -func (m *InspectConfig_FindingLimits) GetMaxFindingsPerRequest() int32 { - if m != nil { - return m.MaxFindingsPerRequest - } - return 0 -} - -func (m *InspectConfig_FindingLimits) GetMaxFindingsPerInfoType() []*InspectConfig_FindingLimits_InfoTypeLimit { - if m != nil { - return m.MaxFindingsPerInfoType - } - return nil -} - -// Max findings configuration per infoType, per content item or long -// running DlpJob. -type InspectConfig_FindingLimits_InfoTypeLimit struct { - // Type of information the findings limit applies to. Only one limit per - // info_type should be provided. If InfoTypeLimit does not have an - // info_type, the DLP API applies the limit against all info_types that - // are found but not specified in another InfoTypeLimit. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Max findings limit for the given infoType. - MaxFindings int32 `protobuf:"varint,2,opt,name=max_findings,json=maxFindings" json:"max_findings,omitempty"` -} - -func (m *InspectConfig_FindingLimits_InfoTypeLimit) Reset() { - *m = InspectConfig_FindingLimits_InfoTypeLimit{} -} -func (m *InspectConfig_FindingLimits_InfoTypeLimit) String() string { return proto.CompactTextString(m) } -func (*InspectConfig_FindingLimits_InfoTypeLimit) ProtoMessage() {} -func (*InspectConfig_FindingLimits_InfoTypeLimit) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{0, 0, 0} -} - -func (m *InspectConfig_FindingLimits_InfoTypeLimit) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *InspectConfig_FindingLimits_InfoTypeLimit) GetMaxFindings() int32 { - if m != nil { - return m.MaxFindings - } - return 0 -} - -// Container structure for the content to inspect. -type ContentItem struct { - // Type of the content, as defined in Content-Type HTTP header. - // Supported types are: all "text" types, octet streams, PNG images, - // JPEG images. - Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` - // Data of the item either in the byte array or UTF-8 string form. - // - // Types that are valid to be assigned to DataItem: - // *ContentItem_Data - // *ContentItem_Value - // *ContentItem_Table - DataItem isContentItem_DataItem `protobuf_oneof:"data_item"` -} - -func (m *ContentItem) Reset() { *m = ContentItem{} } -func (m *ContentItem) String() string { return proto.CompactTextString(m) } -func (*ContentItem) ProtoMessage() {} -func (*ContentItem) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type isContentItem_DataItem interface { - isContentItem_DataItem() -} - -type ContentItem_Data struct { - Data []byte `protobuf:"bytes,2,opt,name=data,proto3,oneof"` -} -type ContentItem_Value struct { - Value string `protobuf:"bytes,3,opt,name=value,oneof"` -} -type ContentItem_Table struct { - Table *Table `protobuf:"bytes,4,opt,name=table,oneof"` -} - -func (*ContentItem_Data) isContentItem_DataItem() {} -func (*ContentItem_Value) isContentItem_DataItem() {} -func (*ContentItem_Table) isContentItem_DataItem() {} - -func (m *ContentItem) GetDataItem() isContentItem_DataItem { - if m != nil { - return m.DataItem - } - return nil -} - -func (m *ContentItem) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *ContentItem) GetData() []byte { - if x, ok := m.GetDataItem().(*ContentItem_Data); ok { - return x.Data - } - return nil -} - -func (m *ContentItem) GetValue() string { - if x, ok := m.GetDataItem().(*ContentItem_Value); ok { - return x.Value - } - return "" -} - -func (m *ContentItem) GetTable() *Table { - if x, ok := m.GetDataItem().(*ContentItem_Table); ok { - return x.Table - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ContentItem) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ContentItem_OneofMarshaler, _ContentItem_OneofUnmarshaler, _ContentItem_OneofSizer, []interface{}{ - (*ContentItem_Data)(nil), - (*ContentItem_Value)(nil), - (*ContentItem_Table)(nil), - } -} - -func _ContentItem_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ContentItem) - // data_item - switch x := m.DataItem.(type) { - case *ContentItem_Data: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Data) - case *ContentItem_Value: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Value) - case *ContentItem_Table: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Table); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ContentItem.DataItem has unexpected type %T", x) - } - return nil -} - -func _ContentItem_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ContentItem) - switch tag { - case 2: // data_item.data - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.DataItem = &ContentItem_Data{x} - return true, err - case 3: // data_item.value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.DataItem = &ContentItem_Value{x} - return true, err - case 4: // data_item.table - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Table) - err := b.DecodeMessage(msg) - m.DataItem = &ContentItem_Table{msg} - return true, err - default: - return false, nil - } -} - -func _ContentItem_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ContentItem) - // data_item - switch x := m.DataItem.(type) { - case *ContentItem_Data: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Data))) - n += len(x.Data) - case *ContentItem_Value: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Value))) - n += len(x.Value) - case *ContentItem_Table: - s := proto.Size(x.Table) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Structured content to inspect. Up to 50,000 `Value`s per request allowed. -type Table struct { - Headers []*FieldId `protobuf:"bytes,1,rep,name=headers" json:"headers,omitempty"` - Rows []*Table_Row `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"` -} - -func (m *Table) Reset() { *m = Table{} } -func (m *Table) String() string { return proto.CompactTextString(m) } -func (*Table) ProtoMessage() {} -func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Table) GetHeaders() []*FieldId { - if m != nil { - return m.Headers - } - return nil -} - -func (m *Table) GetRows() []*Table_Row { - if m != nil { - return m.Rows - } - return nil -} - -type Table_Row struct { - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` -} - -func (m *Table_Row) Reset() { *m = Table_Row{} } -func (m *Table_Row) String() string { return proto.CompactTextString(m) } -func (*Table_Row) ProtoMessage() {} -func (*Table_Row) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *Table_Row) GetValues() []*Value { - if m != nil { - return m.Values - } - return nil -} - -// All the findings for a single scanned item. -type InspectResult struct { - // List of findings for an item. - Findings []*Finding `protobuf:"bytes,1,rep,name=findings" json:"findings,omitempty"` - // If true, then this item might have more findings than were returned, - // and the findings returned are an arbitrary subset of all findings. - // The findings list might be truncated because the input items were too - // large, or because the server reached the maximum amount of resources - // allowed for a single API call. For best results, divide the input into - // smaller batches. - FindingsTruncated bool `protobuf:"varint,2,opt,name=findings_truncated,json=findingsTruncated" json:"findings_truncated,omitempty"` -} - -func (m *InspectResult) Reset() { *m = InspectResult{} } -func (m *InspectResult) String() string { return proto.CompactTextString(m) } -func (*InspectResult) ProtoMessage() {} -func (*InspectResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *InspectResult) GetFindings() []*Finding { - if m != nil { - return m.Findings - } - return nil -} - -func (m *InspectResult) GetFindingsTruncated() bool { - if m != nil { - return m.FindingsTruncated - } - return false -} - -// Represents a piece of potentially sensitive content. -type Finding struct { - // The content that was found. Even if the content is not textual, it - // may be converted to a textual representation here. - // Provided if requested by the `InspectConfig`. - Quote string `protobuf:"bytes,1,opt,name=quote" json:"quote,omitempty"` - // The type of content that might have been found. - // Provided if requested by the `InspectConfig`. - InfoType *InfoType `protobuf:"bytes,2,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Estimate of how likely it is that the `info_type` is correct. - Likelihood Likelihood `protobuf:"varint,3,opt,name=likelihood,enum=google.privacy.dlp.v2beta2.Likelihood" json:"likelihood,omitempty"` - // Where the content was found. - Location *Location `protobuf:"bytes,4,opt,name=location" json:"location,omitempty"` - // Timestamp when finding was detected. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"` -} - -func (m *Finding) Reset() { *m = Finding{} } -func (m *Finding) String() string { return proto.CompactTextString(m) } -func (*Finding) ProtoMessage() {} -func (*Finding) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Finding) GetQuote() string { - if m != nil { - return m.Quote - } - return "" -} - -func (m *Finding) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *Finding) GetLikelihood() Likelihood { - if m != nil { - return m.Likelihood - } - return Likelihood_LIKELIHOOD_UNSPECIFIED -} - -func (m *Finding) GetLocation() *Location { - if m != nil { - return m.Location - } - return nil -} - -func (m *Finding) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -// Specifies the location of the finding. -type Location struct { - // Zero-based byte offsets delimiting the finding. - // These are relative to the finding's containing element. - // Note that when the content is not textual, this references - // the UTF-8 encoded textual representation of the content. - // Omitted if content is an image. - ByteRange *Range `protobuf:"bytes,1,opt,name=byte_range,json=byteRange" json:"byte_range,omitempty"` - // Unicode character offsets delimiting the finding. - // These are relative to the finding's containing element. - // Provided when the content is text. - CodepointRange *Range `protobuf:"bytes,2,opt,name=codepoint_range,json=codepointRange" json:"codepoint_range,omitempty"` - // The area within the image that contained the finding. - // Provided when the content is an image. - ImageBoxes []*ImageLocation `protobuf:"bytes,3,rep,name=image_boxes,json=imageBoxes" json:"image_boxes,omitempty"` - // The pointer to the record in storage that contained the field the - // finding was found in. - // Provided when the finding's containing element is a property - // of a storage object. - RecordKey *RecordKey `protobuf:"bytes,4,opt,name=record_key,json=recordKey" json:"record_key,omitempty"` - // The pointer to the property or cell that contained the finding. - // Provided when the finding's containing element is a cell in a table - // or a property of storage object. - FieldId *FieldId `protobuf:"bytes,5,opt,name=field_id,json=fieldId" json:"field_id,omitempty"` - // The pointer to the row of the table that contained the finding. - // Provided when the finding's containing element is a cell of a table. - TableLocation *TableLocation `protobuf:"bytes,6,opt,name=table_location,json=tableLocation" json:"table_location,omitempty"` -} - -func (m *Location) Reset() { *m = Location{} } -func (m *Location) String() string { return proto.CompactTextString(m) } -func (*Location) ProtoMessage() {} -func (*Location) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *Location) GetByteRange() *Range { - if m != nil { - return m.ByteRange - } - return nil -} - -func (m *Location) GetCodepointRange() *Range { - if m != nil { - return m.CodepointRange - } - return nil -} - -func (m *Location) GetImageBoxes() []*ImageLocation { - if m != nil { - return m.ImageBoxes - } - return nil -} - -func (m *Location) GetRecordKey() *RecordKey { - if m != nil { - return m.RecordKey - } - return nil -} - -func (m *Location) GetFieldId() *FieldId { - if m != nil { - return m.FieldId - } - return nil -} - -func (m *Location) GetTableLocation() *TableLocation { - if m != nil { - return m.TableLocation - } - return nil -} - -// Location of a finding within a table. -type TableLocation struct { - // The zero-based index of the row where the finding is located. - RowIndex int64 `protobuf:"varint,1,opt,name=row_index,json=rowIndex" json:"row_index,omitempty"` -} - -func (m *TableLocation) Reset() { *m = TableLocation{} } -func (m *TableLocation) String() string { return proto.CompactTextString(m) } -func (*TableLocation) ProtoMessage() {} -func (*TableLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *TableLocation) GetRowIndex() int64 { - if m != nil { - return m.RowIndex - } - return 0 -} - -// Generic half-open interval [start, end) -type Range struct { - // Index of the first character of the range (inclusive). - Start int64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` - // Index of the last character of the range (exclusive). - End int64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` -} - -func (m *Range) Reset() { *m = Range{} } -func (m *Range) String() string { return proto.CompactTextString(m) } -func (*Range) ProtoMessage() {} -func (*Range) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *Range) GetStart() int64 { - if m != nil { - return m.Start - } - return 0 -} - -func (m *Range) GetEnd() int64 { - if m != nil { - return m.End - } - return 0 -} - -// Bounding box encompassing detected text within an image. -type ImageLocation struct { - // Top coordinate of the bounding box. (0,0) is upper left. - Top int32 `protobuf:"varint,1,opt,name=top" json:"top,omitempty"` - // Left coordinate of the bounding box. (0,0) is upper left. - Left int32 `protobuf:"varint,2,opt,name=left" json:"left,omitempty"` - // Width of the bounding box in pixels. - Width int32 `protobuf:"varint,3,opt,name=width" json:"width,omitempty"` - // Height of the bounding box in pixels. - Height int32 `protobuf:"varint,4,opt,name=height" json:"height,omitempty"` -} - -func (m *ImageLocation) Reset() { *m = ImageLocation{} } -func (m *ImageLocation) String() string { return proto.CompactTextString(m) } -func (*ImageLocation) ProtoMessage() {} -func (*ImageLocation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ImageLocation) GetTop() int32 { - if m != nil { - return m.Top - } - return 0 -} - -func (m *ImageLocation) GetLeft() int32 { - if m != nil { - return m.Left - } - return 0 -} - -func (m *ImageLocation) GetWidth() int32 { - if m != nil { - return m.Width - } - return 0 -} - -func (m *ImageLocation) GetHeight() int32 { - if m != nil { - return m.Height - } - return 0 -} - -// Request to search for potentially sensitive info in a list of items -// and replace it with a default or provided content. -type RedactImageRequest struct { - // The parent resource name, for example projects/my-project-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Configuration for the inspector. - InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // Type of the content, as defined in Content-Type HTTP header. - // Supported types are: PNG, JPEG, SVG, & BMP. - ImageType string `protobuf:"bytes,3,opt,name=image_type,json=imageType" json:"image_type,omitempty"` - // The bytes of the image to redact. - ImageData []byte `protobuf:"bytes,4,opt,name=image_data,json=imageData,proto3" json:"image_data,omitempty"` - // The configuration for specifying what content to redact from images. - ImageRedactionConfigs []*RedactImageRequest_ImageRedactionConfig `protobuf:"bytes,5,rep,name=image_redaction_configs,json=imageRedactionConfigs" json:"image_redaction_configs,omitempty"` -} - -func (m *RedactImageRequest) Reset() { *m = RedactImageRequest{} } -func (m *RedactImageRequest) String() string { return proto.CompactTextString(m) } -func (*RedactImageRequest) ProtoMessage() {} -func (*RedactImageRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *RedactImageRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *RedactImageRequest) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *RedactImageRequest) GetImageType() string { - if m != nil { - return m.ImageType - } - return "" -} - -func (m *RedactImageRequest) GetImageData() []byte { - if m != nil { - return m.ImageData - } - return nil -} - -func (m *RedactImageRequest) GetImageRedactionConfigs() []*RedactImageRequest_ImageRedactionConfig { - if m != nil { - return m.ImageRedactionConfigs - } - return nil -} - -// Configuration for determining how redaction of images should occur. -type RedactImageRequest_ImageRedactionConfig struct { - // Type of information to redact from images. - // - // Types that are valid to be assigned to Target: - // *RedactImageRequest_ImageRedactionConfig_InfoType - // *RedactImageRequest_ImageRedactionConfig_RedactAllText - Target isRedactImageRequest_ImageRedactionConfig_Target `protobuf_oneof:"target"` - // The color to use when redacting content from an image. If not specified, - // the default is black. - RedactionColor *Color `protobuf:"bytes,3,opt,name=redaction_color,json=redactionColor" json:"redaction_color,omitempty"` -} - -func (m *RedactImageRequest_ImageRedactionConfig) Reset() { - *m = RedactImageRequest_ImageRedactionConfig{} -} -func (m *RedactImageRequest_ImageRedactionConfig) String() string { return proto.CompactTextString(m) } -func (*RedactImageRequest_ImageRedactionConfig) ProtoMessage() {} -func (*RedactImageRequest_ImageRedactionConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{9, 0} -} - -type isRedactImageRequest_ImageRedactionConfig_Target interface { - isRedactImageRequest_ImageRedactionConfig_Target() -} - -type RedactImageRequest_ImageRedactionConfig_InfoType struct { - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType,oneof"` -} -type RedactImageRequest_ImageRedactionConfig_RedactAllText struct { - RedactAllText bool `protobuf:"varint,2,opt,name=redact_all_text,json=redactAllText,oneof"` -} - -func (*RedactImageRequest_ImageRedactionConfig_InfoType) isRedactImageRequest_ImageRedactionConfig_Target() { -} -func (*RedactImageRequest_ImageRedactionConfig_RedactAllText) isRedactImageRequest_ImageRedactionConfig_Target() { -} - -func (m *RedactImageRequest_ImageRedactionConfig) GetTarget() isRedactImageRequest_ImageRedactionConfig_Target { - if m != nil { - return m.Target - } - return nil -} - -func (m *RedactImageRequest_ImageRedactionConfig) GetInfoType() *InfoType { - if x, ok := m.GetTarget().(*RedactImageRequest_ImageRedactionConfig_InfoType); ok { - return x.InfoType - } - return nil -} - -func (m *RedactImageRequest_ImageRedactionConfig) GetRedactAllText() bool { - if x, ok := m.GetTarget().(*RedactImageRequest_ImageRedactionConfig_RedactAllText); ok { - return x.RedactAllText - } - return false -} - -func (m *RedactImageRequest_ImageRedactionConfig) GetRedactionColor() *Color { - if m != nil { - return m.RedactionColor - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RedactImageRequest_ImageRedactionConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RedactImageRequest_ImageRedactionConfig_OneofMarshaler, _RedactImageRequest_ImageRedactionConfig_OneofUnmarshaler, _RedactImageRequest_ImageRedactionConfig_OneofSizer, []interface{}{ - (*RedactImageRequest_ImageRedactionConfig_InfoType)(nil), - (*RedactImageRequest_ImageRedactionConfig_RedactAllText)(nil), - } -} - -func _RedactImageRequest_ImageRedactionConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RedactImageRequest_ImageRedactionConfig) - // target - switch x := m.Target.(type) { - case *RedactImageRequest_ImageRedactionConfig_InfoType: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InfoType); err != nil { - return err - } - case *RedactImageRequest_ImageRedactionConfig_RedactAllText: - t := uint64(0) - if x.RedactAllText { - t = 1 - } - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("RedactImageRequest_ImageRedactionConfig.Target has unexpected type %T", x) - } - return nil -} - -func _RedactImageRequest_ImageRedactionConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RedactImageRequest_ImageRedactionConfig) - switch tag { - case 1: // target.info_type - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InfoType) - err := b.DecodeMessage(msg) - m.Target = &RedactImageRequest_ImageRedactionConfig_InfoType{msg} - return true, err - case 2: // target.redact_all_text - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Target = &RedactImageRequest_ImageRedactionConfig_RedactAllText{x != 0} - return true, err - default: - return false, nil - } -} - -func _RedactImageRequest_ImageRedactionConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RedactImageRequest_ImageRedactionConfig) - // target - switch x := m.Target.(type) { - case *RedactImageRequest_ImageRedactionConfig_InfoType: - s := proto.Size(x.InfoType) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RedactImageRequest_ImageRedactionConfig_RedactAllText: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Represents a color in the RGB color space. -type Color struct { - // The amount of red in the color as a value in the interval [0, 1]. - Red float32 `protobuf:"fixed32,1,opt,name=red" json:"red,omitempty"` - // The amount of green in the color as a value in the interval [0, 1]. - Green float32 `protobuf:"fixed32,2,opt,name=green" json:"green,omitempty"` - // The amount of blue in the color as a value in the interval [0, 1]. - Blue float32 `protobuf:"fixed32,3,opt,name=blue" json:"blue,omitempty"` -} - -func (m *Color) Reset() { *m = Color{} } -func (m *Color) String() string { return proto.CompactTextString(m) } -func (*Color) ProtoMessage() {} -func (*Color) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *Color) GetRed() float32 { - if m != nil { - return m.Red - } - return 0 -} - -func (m *Color) GetGreen() float32 { - if m != nil { - return m.Green - } - return 0 -} - -func (m *Color) GetBlue() float32 { - if m != nil { - return m.Blue - } - return 0 -} - -// Results of redacting an image. -type RedactImageResponse struct { - // The redacted image. The type will be the same as the original image. - RedactedImage []byte `protobuf:"bytes,1,opt,name=redacted_image,json=redactedImage,proto3" json:"redacted_image,omitempty"` - // If an image was being inspected and the InspectConfig's include_quote was - // set to true, then this field will include all text, if any, that was found - // in the image. - ExtractedText string `protobuf:"bytes,2,opt,name=extracted_text,json=extractedText" json:"extracted_text,omitempty"` -} - -func (m *RedactImageResponse) Reset() { *m = RedactImageResponse{} } -func (m *RedactImageResponse) String() string { return proto.CompactTextString(m) } -func (*RedactImageResponse) ProtoMessage() {} -func (*RedactImageResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *RedactImageResponse) GetRedactedImage() []byte { - if m != nil { - return m.RedactedImage - } - return nil -} - -func (m *RedactImageResponse) GetExtractedText() string { - if m != nil { - return m.ExtractedText - } - return "" -} - -// Request to de-identify a list of items. -type DeidentifyContentRequest struct { - // The parent resource name, for example projects/my-project-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Configuration for the de-identification of the content item. - // Items specified here will override the template referenced by the - // deidentify_template_name argument. - DeidentifyConfig *DeidentifyConfig `protobuf:"bytes,2,opt,name=deidentify_config,json=deidentifyConfig" json:"deidentify_config,omitempty"` - // Configuration for the inspector. - // Items specified here will override the template referenced by the - // inspect_template_name argument. - InspectConfig *InspectConfig `protobuf:"bytes,3,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // The item to de-identify. Will be treated as text. - Item *ContentItem `protobuf:"bytes,4,opt,name=item" json:"item,omitempty"` - // Optional template to use. Any configuration directly specified in - // inspect_config will override those set in the template. Singular fields - // that are set in this request will replace their corresponding fields in the - // template. Repeated fields are appended. Singular sub-messages and groups - // are recursively merged. - InspectTemplateName string `protobuf:"bytes,5,opt,name=inspect_template_name,json=inspectTemplateName" json:"inspect_template_name,omitempty"` - // Optional template to use. Any configuration directly specified in - // deidentify_config will override those set in the template. Singular fields - // that are set in this request will replace their corresponding fields in the - // template. Repeated fields are appended. Singular sub-messages and groups - // are recursively merged. - DeidentifyTemplateName string `protobuf:"bytes,6,opt,name=deidentify_template_name,json=deidentifyTemplateName" json:"deidentify_template_name,omitempty"` -} - -func (m *DeidentifyContentRequest) Reset() { *m = DeidentifyContentRequest{} } -func (m *DeidentifyContentRequest) String() string { return proto.CompactTextString(m) } -func (*DeidentifyContentRequest) ProtoMessage() {} -func (*DeidentifyContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *DeidentifyContentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *DeidentifyContentRequest) GetDeidentifyConfig() *DeidentifyConfig { - if m != nil { - return m.DeidentifyConfig - } - return nil -} - -func (m *DeidentifyContentRequest) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *DeidentifyContentRequest) GetItem() *ContentItem { - if m != nil { - return m.Item - } - return nil -} - -func (m *DeidentifyContentRequest) GetInspectTemplateName() string { - if m != nil { - return m.InspectTemplateName - } - return "" -} - -func (m *DeidentifyContentRequest) GetDeidentifyTemplateName() string { - if m != nil { - return m.DeidentifyTemplateName - } - return "" -} - -// Results of de-identifying a ContentItem. -type DeidentifyContentResponse struct { - // The de-identified item. - Item *ContentItem `protobuf:"bytes,1,opt,name=item" json:"item,omitempty"` - // An overview of the changes that were made on the `item`. - Overview *TransformationOverview `protobuf:"bytes,2,opt,name=overview" json:"overview,omitempty"` -} - -func (m *DeidentifyContentResponse) Reset() { *m = DeidentifyContentResponse{} } -func (m *DeidentifyContentResponse) String() string { return proto.CompactTextString(m) } -func (*DeidentifyContentResponse) ProtoMessage() {} -func (*DeidentifyContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *DeidentifyContentResponse) GetItem() *ContentItem { - if m != nil { - return m.Item - } - return nil -} - -func (m *DeidentifyContentResponse) GetOverview() *TransformationOverview { - if m != nil { - return m.Overview - } - return nil -} - -// Request to re-identify an item. -type ReidentifyContentRequest struct { - // The parent resource name. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Configuration for the re-identification of the content item. - // This field shares the same proto message type that is used for - // de-identification, however its usage here is for the reversal of the - // previous de-identification. Re-identification is performed by examining - // the transformations used to de-identify the items and executing the - // reverse. This requires that only reversible transformations - // be provided here. The reversible transformations are: - // - // - `CryptoReplaceFfxFpeConfig` - ReidentifyConfig *DeidentifyConfig `protobuf:"bytes,2,opt,name=reidentify_config,json=reidentifyConfig" json:"reidentify_config,omitempty"` - // Configuration for the inspector. - InspectConfig *InspectConfig `protobuf:"bytes,3,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // The item to re-identify. Will be treated as text. - Item *ContentItem `protobuf:"bytes,4,opt,name=item" json:"item,omitempty"` - // Optional template to use. Any configuration directly specified in - // `inspect_config` will override those set in the template. Singular fields - // that are set in this request will replace their corresponding fields in the - // template. Repeated fields are appended. Singular sub-messages and groups - // are recursively merged. - InspectTemplateName string `protobuf:"bytes,5,opt,name=inspect_template_name,json=inspectTemplateName" json:"inspect_template_name,omitempty"` - // Optional template to use. References an instance of `DeidentifyTemplate`. - // Any configuration directly specified in `reidentify_config` or - // `inspect_config` will override those set in the template. Singular fields - // that are set in this request will replace their corresponding fields in the - // template. Repeated fields are appended. Singular sub-messages and groups - // are recursively merged. - ReidentifyTemplateName string `protobuf:"bytes,6,opt,name=reidentify_template_name,json=reidentifyTemplateName" json:"reidentify_template_name,omitempty"` -} - -func (m *ReidentifyContentRequest) Reset() { *m = ReidentifyContentRequest{} } -func (m *ReidentifyContentRequest) String() string { return proto.CompactTextString(m) } -func (*ReidentifyContentRequest) ProtoMessage() {} -func (*ReidentifyContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *ReidentifyContentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ReidentifyContentRequest) GetReidentifyConfig() *DeidentifyConfig { - if m != nil { - return m.ReidentifyConfig - } - return nil -} - -func (m *ReidentifyContentRequest) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *ReidentifyContentRequest) GetItem() *ContentItem { - if m != nil { - return m.Item - } - return nil -} - -func (m *ReidentifyContentRequest) GetInspectTemplateName() string { - if m != nil { - return m.InspectTemplateName - } - return "" -} - -func (m *ReidentifyContentRequest) GetReidentifyTemplateName() string { - if m != nil { - return m.ReidentifyTemplateName - } - return "" -} - -// Results of re-identifying a item. -type ReidentifyContentResponse struct { - // The re-identified item. - Item *ContentItem `protobuf:"bytes,1,opt,name=item" json:"item,omitempty"` - // An overview of the changes that were made to the `item`. - Overview *TransformationOverview `protobuf:"bytes,2,opt,name=overview" json:"overview,omitempty"` -} - -func (m *ReidentifyContentResponse) Reset() { *m = ReidentifyContentResponse{} } -func (m *ReidentifyContentResponse) String() string { return proto.CompactTextString(m) } -func (*ReidentifyContentResponse) ProtoMessage() {} -func (*ReidentifyContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *ReidentifyContentResponse) GetItem() *ContentItem { - if m != nil { - return m.Item - } - return nil -} - -func (m *ReidentifyContentResponse) GetOverview() *TransformationOverview { - if m != nil { - return m.Overview - } - return nil -} - -// Request to search for potentially sensitive info in a ContentItem. -type InspectContentRequest struct { - // The parent resource name, for example projects/my-project-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Configuration for the inspector. What specified here will override - // the template referenced by the inspect_template_name argument. - InspectConfig *InspectConfig `protobuf:"bytes,2,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // The item to inspect. - Item *ContentItem `protobuf:"bytes,3,opt,name=item" json:"item,omitempty"` - // Optional template to use. Any configuration directly specified in - // inspect_config will override those set in the template. Singular fields - // that are set in this request will replace their corresponding fields in the - // template. Repeated fields are appended. Singular sub-messages and groups - // are recursively merged. - InspectTemplateName string `protobuf:"bytes,4,opt,name=inspect_template_name,json=inspectTemplateName" json:"inspect_template_name,omitempty"` -} - -func (m *InspectContentRequest) Reset() { *m = InspectContentRequest{} } -func (m *InspectContentRequest) String() string { return proto.CompactTextString(m) } -func (*InspectContentRequest) ProtoMessage() {} -func (*InspectContentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *InspectContentRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *InspectContentRequest) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *InspectContentRequest) GetItem() *ContentItem { - if m != nil { - return m.Item - } - return nil -} - -func (m *InspectContentRequest) GetInspectTemplateName() string { - if m != nil { - return m.InspectTemplateName - } - return "" -} - -// Results of inspecting an item. -type InspectContentResponse struct { - // The findings. - Result *InspectResult `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"` -} - -func (m *InspectContentResponse) Reset() { *m = InspectContentResponse{} } -func (m *InspectContentResponse) String() string { return proto.CompactTextString(m) } -func (*InspectContentResponse) ProtoMessage() {} -func (*InspectContentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *InspectContentResponse) GetResult() *InspectResult { - if m != nil { - return m.Result - } - return nil -} - -// Request for scheduling a scan of a data subset from a Google Platform data -// repository. -type InspectDataSourceRequest struct { - // The parent resource name, for example projects/my-project-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // A configuration for the job. - JobConfig *InspectJobConfig `protobuf:"bytes,2,opt,name=job_config,json=jobConfig" json:"job_config,omitempty"` -} - -func (m *InspectDataSourceRequest) Reset() { *m = InspectDataSourceRequest{} } -func (m *InspectDataSourceRequest) String() string { return proto.CompactTextString(m) } -func (*InspectDataSourceRequest) ProtoMessage() {} -func (*InspectDataSourceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *InspectDataSourceRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *InspectDataSourceRequest) GetJobConfig() *InspectJobConfig { - if m != nil { - return m.JobConfig - } - return nil -} - -// Cloud repository for storing output. -type OutputStorageConfig struct { - // Types that are valid to be assigned to Type: - // *OutputStorageConfig_Table - Type isOutputStorageConfig_Type `protobuf_oneof:"type"` -} - -func (m *OutputStorageConfig) Reset() { *m = OutputStorageConfig{} } -func (m *OutputStorageConfig) String() string { return proto.CompactTextString(m) } -func (*OutputStorageConfig) ProtoMessage() {} -func (*OutputStorageConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -type isOutputStorageConfig_Type interface { - isOutputStorageConfig_Type() -} - -type OutputStorageConfig_Table struct { - Table *BigQueryTable `protobuf:"bytes,1,opt,name=table,oneof"` -} - -func (*OutputStorageConfig_Table) isOutputStorageConfig_Type() {} - -func (m *OutputStorageConfig) GetType() isOutputStorageConfig_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *OutputStorageConfig) GetTable() *BigQueryTable { - if x, ok := m.GetType().(*OutputStorageConfig_Table); ok { - return x.Table - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*OutputStorageConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _OutputStorageConfig_OneofMarshaler, _OutputStorageConfig_OneofUnmarshaler, _OutputStorageConfig_OneofSizer, []interface{}{ - (*OutputStorageConfig_Table)(nil), - } -} - -func _OutputStorageConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*OutputStorageConfig) - // type - switch x := m.Type.(type) { - case *OutputStorageConfig_Table: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Table); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("OutputStorageConfig.Type has unexpected type %T", x) - } - return nil -} - -func _OutputStorageConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*OutputStorageConfig) - switch tag { - case 1: // type.table - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BigQueryTable) - err := b.DecodeMessage(msg) - m.Type = &OutputStorageConfig_Table{msg} - return true, err - default: - return false, nil - } -} - -func _OutputStorageConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*OutputStorageConfig) - // type - switch x := m.Type.(type) { - case *OutputStorageConfig_Table: - s := proto.Size(x.Table) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Statistics regarding a specific InfoType. -type InfoTypeStatistics struct { - // The type of finding this stat is for. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Number of findings for this infoType. - Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` -} - -func (m *InfoTypeStatistics) Reset() { *m = InfoTypeStatistics{} } -func (m *InfoTypeStatistics) String() string { return proto.CompactTextString(m) } -func (*InfoTypeStatistics) ProtoMessage() {} -func (*InfoTypeStatistics) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *InfoTypeStatistics) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *InfoTypeStatistics) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -// The results of an inspect DataSource job. -type InspectDataSourceDetails struct { - // The configuration used for this job. - RequestedOptions *InspectDataSourceDetails_RequestedOptions `protobuf:"bytes,2,opt,name=requested_options,json=requestedOptions" json:"requested_options,omitempty"` - // A summary of the outcome of this inspect job. - Result *InspectDataSourceDetails_Result `protobuf:"bytes,3,opt,name=result" json:"result,omitempty"` -} - -func (m *InspectDataSourceDetails) Reset() { *m = InspectDataSourceDetails{} } -func (m *InspectDataSourceDetails) String() string { return proto.CompactTextString(m) } -func (*InspectDataSourceDetails) ProtoMessage() {} -func (*InspectDataSourceDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *InspectDataSourceDetails) GetRequestedOptions() *InspectDataSourceDetails_RequestedOptions { - if m != nil { - return m.RequestedOptions - } - return nil -} - -func (m *InspectDataSourceDetails) GetResult() *InspectDataSourceDetails_Result { - if m != nil { - return m.Result - } - return nil -} - -type InspectDataSourceDetails_RequestedOptions struct { - // If run with an inspect template, a snapshot of it's state at the time of - // this run. - SnapshotInspectTemplate *InspectTemplate `protobuf:"bytes,1,opt,name=snapshot_inspect_template,json=snapshotInspectTemplate" json:"snapshot_inspect_template,omitempty"` - JobConfig *InspectJobConfig `protobuf:"bytes,3,opt,name=job_config,json=jobConfig" json:"job_config,omitempty"` -} - -func (m *InspectDataSourceDetails_RequestedOptions) Reset() { - *m = InspectDataSourceDetails_RequestedOptions{} -} -func (m *InspectDataSourceDetails_RequestedOptions) String() string { return proto.CompactTextString(m) } -func (*InspectDataSourceDetails_RequestedOptions) ProtoMessage() {} -func (*InspectDataSourceDetails_RequestedOptions) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{21, 0} -} - -func (m *InspectDataSourceDetails_RequestedOptions) GetSnapshotInspectTemplate() *InspectTemplate { - if m != nil { - return m.SnapshotInspectTemplate - } - return nil -} - -func (m *InspectDataSourceDetails_RequestedOptions) GetJobConfig() *InspectJobConfig { - if m != nil { - return m.JobConfig - } - return nil -} - -type InspectDataSourceDetails_Result struct { - // Total size in bytes that were processed. - ProcessedBytes int64 `protobuf:"varint,1,opt,name=processed_bytes,json=processedBytes" json:"processed_bytes,omitempty"` - // Estimate of the number of bytes to process. - TotalEstimatedBytes int64 `protobuf:"varint,2,opt,name=total_estimated_bytes,json=totalEstimatedBytes" json:"total_estimated_bytes,omitempty"` - // Statistics of how many instances of each info type were found during - // inspect job. - InfoTypeStats []*InfoTypeStatistics `protobuf:"bytes,3,rep,name=info_type_stats,json=infoTypeStats" json:"info_type_stats,omitempty"` -} - -func (m *InspectDataSourceDetails_Result) Reset() { *m = InspectDataSourceDetails_Result{} } -func (m *InspectDataSourceDetails_Result) String() string { return proto.CompactTextString(m) } -func (*InspectDataSourceDetails_Result) ProtoMessage() {} -func (*InspectDataSourceDetails_Result) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{21, 1} -} - -func (m *InspectDataSourceDetails_Result) GetProcessedBytes() int64 { - if m != nil { - return m.ProcessedBytes - } - return 0 -} - -func (m *InspectDataSourceDetails_Result) GetTotalEstimatedBytes() int64 { - if m != nil { - return m.TotalEstimatedBytes - } - return 0 -} - -func (m *InspectDataSourceDetails_Result) GetInfoTypeStats() []*InfoTypeStatistics { - if m != nil { - return m.InfoTypeStats - } - return nil -} - -// InfoType description. -type InfoTypeDescription struct { - // Internal name of the infoType. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Human readable form of the infoType name. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Which parts of the API supports this InfoType. - SupportedBy []InfoTypeSupportedBy `protobuf:"varint,3,rep,packed,name=supported_by,json=supportedBy,enum=google.privacy.dlp.v2beta2.InfoTypeSupportedBy" json:"supported_by,omitempty"` -} - -func (m *InfoTypeDescription) Reset() { *m = InfoTypeDescription{} } -func (m *InfoTypeDescription) String() string { return proto.CompactTextString(m) } -func (*InfoTypeDescription) ProtoMessage() {} -func (*InfoTypeDescription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *InfoTypeDescription) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *InfoTypeDescription) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *InfoTypeDescription) GetSupportedBy() []InfoTypeSupportedBy { - if m != nil { - return m.SupportedBy - } - return nil -} - -// Request for the list of infoTypes. -type ListInfoTypesRequest struct { - // Optional BCP-47 language code for localized infoType friendly - // names. If omitted, or if localized strings are not available, - // en-US strings will be returned. - LanguageCode string `protobuf:"bytes,1,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional filter to only return infoTypes supported by certain parts of the - // API. Defaults to supported_by=INSPECT. - Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListInfoTypesRequest) Reset() { *m = ListInfoTypesRequest{} } -func (m *ListInfoTypesRequest) String() string { return proto.CompactTextString(m) } -func (*ListInfoTypesRequest) ProtoMessage() {} -func (*ListInfoTypesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *ListInfoTypesRequest) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *ListInfoTypesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// Response to the ListInfoTypes request. -type ListInfoTypesResponse struct { - // Set of sensitive infoTypes. - InfoTypes []*InfoTypeDescription `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` -} - -func (m *ListInfoTypesResponse) Reset() { *m = ListInfoTypesResponse{} } -func (m *ListInfoTypesResponse) String() string { return proto.CompactTextString(m) } -func (*ListInfoTypesResponse) ProtoMessage() {} -func (*ListInfoTypesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *ListInfoTypesResponse) GetInfoTypes() []*InfoTypeDescription { - if m != nil { - return m.InfoTypes - } - return nil -} - -// Request for creating a risk analysis DlpJob. -type AnalyzeDataSourceRiskRequest struct { - // The parent resource name, for example projects/my-project-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Configuration for this risk analysis job. - JobConfig *RiskAnalysisJobConfig `protobuf:"bytes,2,opt,name=job_config,json=jobConfig" json:"job_config,omitempty"` -} - -func (m *AnalyzeDataSourceRiskRequest) Reset() { *m = AnalyzeDataSourceRiskRequest{} } -func (m *AnalyzeDataSourceRiskRequest) String() string { return proto.CompactTextString(m) } -func (*AnalyzeDataSourceRiskRequest) ProtoMessage() {} -func (*AnalyzeDataSourceRiskRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *AnalyzeDataSourceRiskRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *AnalyzeDataSourceRiskRequest) GetJobConfig() *RiskAnalysisJobConfig { - if m != nil { - return m.JobConfig - } - return nil -} - -// Configuration for a risk analysis job. -type RiskAnalysisJobConfig struct { - // Privacy metric to compute. - PrivacyMetric *PrivacyMetric `protobuf:"bytes,1,opt,name=privacy_metric,json=privacyMetric" json:"privacy_metric,omitempty"` - // Input dataset to compute metrics over. - SourceTable *BigQueryTable `protobuf:"bytes,2,opt,name=source_table,json=sourceTable" json:"source_table,omitempty"` -} - -func (m *RiskAnalysisJobConfig) Reset() { *m = RiskAnalysisJobConfig{} } -func (m *RiskAnalysisJobConfig) String() string { return proto.CompactTextString(m) } -func (*RiskAnalysisJobConfig) ProtoMessage() {} -func (*RiskAnalysisJobConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *RiskAnalysisJobConfig) GetPrivacyMetric() *PrivacyMetric { - if m != nil { - return m.PrivacyMetric - } - return nil -} - -func (m *RiskAnalysisJobConfig) GetSourceTable() *BigQueryTable { - if m != nil { - return m.SourceTable - } - return nil -} - -// Privacy metric to compute for reidentification risk analysis. -type PrivacyMetric struct { - // Types that are valid to be assigned to Type: - // *PrivacyMetric_NumericalStatsConfig_ - // *PrivacyMetric_CategoricalStatsConfig_ - // *PrivacyMetric_KAnonymityConfig_ - // *PrivacyMetric_LDiversityConfig_ - // *PrivacyMetric_KMapEstimationConfig_ - Type isPrivacyMetric_Type `protobuf_oneof:"type"` -} - -func (m *PrivacyMetric) Reset() { *m = PrivacyMetric{} } -func (m *PrivacyMetric) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric) ProtoMessage() {} -func (*PrivacyMetric) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -type isPrivacyMetric_Type interface { - isPrivacyMetric_Type() -} - -type PrivacyMetric_NumericalStatsConfig_ struct { - NumericalStatsConfig *PrivacyMetric_NumericalStatsConfig `protobuf:"bytes,1,opt,name=numerical_stats_config,json=numericalStatsConfig,oneof"` -} -type PrivacyMetric_CategoricalStatsConfig_ struct { - CategoricalStatsConfig *PrivacyMetric_CategoricalStatsConfig `protobuf:"bytes,2,opt,name=categorical_stats_config,json=categoricalStatsConfig,oneof"` -} -type PrivacyMetric_KAnonymityConfig_ struct { - KAnonymityConfig *PrivacyMetric_KAnonymityConfig `protobuf:"bytes,3,opt,name=k_anonymity_config,json=kAnonymityConfig,oneof"` -} -type PrivacyMetric_LDiversityConfig_ struct { - LDiversityConfig *PrivacyMetric_LDiversityConfig `protobuf:"bytes,4,opt,name=l_diversity_config,json=lDiversityConfig,oneof"` -} -type PrivacyMetric_KMapEstimationConfig_ struct { - KMapEstimationConfig *PrivacyMetric_KMapEstimationConfig `protobuf:"bytes,5,opt,name=k_map_estimation_config,json=kMapEstimationConfig,oneof"` -} - -func (*PrivacyMetric_NumericalStatsConfig_) isPrivacyMetric_Type() {} -func (*PrivacyMetric_CategoricalStatsConfig_) isPrivacyMetric_Type() {} -func (*PrivacyMetric_KAnonymityConfig_) isPrivacyMetric_Type() {} -func (*PrivacyMetric_LDiversityConfig_) isPrivacyMetric_Type() {} -func (*PrivacyMetric_KMapEstimationConfig_) isPrivacyMetric_Type() {} - -func (m *PrivacyMetric) GetType() isPrivacyMetric_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *PrivacyMetric) GetNumericalStatsConfig() *PrivacyMetric_NumericalStatsConfig { - if x, ok := m.GetType().(*PrivacyMetric_NumericalStatsConfig_); ok { - return x.NumericalStatsConfig - } - return nil -} - -func (m *PrivacyMetric) GetCategoricalStatsConfig() *PrivacyMetric_CategoricalStatsConfig { - if x, ok := m.GetType().(*PrivacyMetric_CategoricalStatsConfig_); ok { - return x.CategoricalStatsConfig - } - return nil -} - -func (m *PrivacyMetric) GetKAnonymityConfig() *PrivacyMetric_KAnonymityConfig { - if x, ok := m.GetType().(*PrivacyMetric_KAnonymityConfig_); ok { - return x.KAnonymityConfig - } - return nil -} - -func (m *PrivacyMetric) GetLDiversityConfig() *PrivacyMetric_LDiversityConfig { - if x, ok := m.GetType().(*PrivacyMetric_LDiversityConfig_); ok { - return x.LDiversityConfig - } - return nil -} - -func (m *PrivacyMetric) GetKMapEstimationConfig() *PrivacyMetric_KMapEstimationConfig { - if x, ok := m.GetType().(*PrivacyMetric_KMapEstimationConfig_); ok { - return x.KMapEstimationConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PrivacyMetric) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PrivacyMetric_OneofMarshaler, _PrivacyMetric_OneofUnmarshaler, _PrivacyMetric_OneofSizer, []interface{}{ - (*PrivacyMetric_NumericalStatsConfig_)(nil), - (*PrivacyMetric_CategoricalStatsConfig_)(nil), - (*PrivacyMetric_KAnonymityConfig_)(nil), - (*PrivacyMetric_LDiversityConfig_)(nil), - (*PrivacyMetric_KMapEstimationConfig_)(nil), - } -} - -func _PrivacyMetric_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PrivacyMetric) - // type - switch x := m.Type.(type) { - case *PrivacyMetric_NumericalStatsConfig_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.NumericalStatsConfig); err != nil { - return err - } - case *PrivacyMetric_CategoricalStatsConfig_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CategoricalStatsConfig); err != nil { - return err - } - case *PrivacyMetric_KAnonymityConfig_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KAnonymityConfig); err != nil { - return err - } - case *PrivacyMetric_LDiversityConfig_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.LDiversityConfig); err != nil { - return err - } - case *PrivacyMetric_KMapEstimationConfig_: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KMapEstimationConfig); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("PrivacyMetric.Type has unexpected type %T", x) - } - return nil -} - -func _PrivacyMetric_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PrivacyMetric) - switch tag { - case 1: // type.numerical_stats_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_NumericalStatsConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_NumericalStatsConfig_{msg} - return true, err - case 2: // type.categorical_stats_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_CategoricalStatsConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_CategoricalStatsConfig_{msg} - return true, err - case 3: // type.k_anonymity_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_KAnonymityConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_KAnonymityConfig_{msg} - return true, err - case 4: // type.l_diversity_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_LDiversityConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_LDiversityConfig_{msg} - return true, err - case 5: // type.k_map_estimation_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrivacyMetric_KMapEstimationConfig) - err := b.DecodeMessage(msg) - m.Type = &PrivacyMetric_KMapEstimationConfig_{msg} - return true, err - default: - return false, nil - } -} - -func _PrivacyMetric_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PrivacyMetric) - // type - switch x := m.Type.(type) { - case *PrivacyMetric_NumericalStatsConfig_: - s := proto.Size(x.NumericalStatsConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrivacyMetric_CategoricalStatsConfig_: - s := proto.Size(x.CategoricalStatsConfig) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrivacyMetric_KAnonymityConfig_: - s := proto.Size(x.KAnonymityConfig) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrivacyMetric_LDiversityConfig_: - s := proto.Size(x.LDiversityConfig) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrivacyMetric_KMapEstimationConfig_: - s := proto.Size(x.KMapEstimationConfig) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Compute numerical stats over an individual column, including -// min, max, and quantiles. -type PrivacyMetric_NumericalStatsConfig struct { - // Field to compute numerical stats on. Supported types are - // integer, float, date, datetime, timestamp, time. - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` -} - -func (m *PrivacyMetric_NumericalStatsConfig) Reset() { *m = PrivacyMetric_NumericalStatsConfig{} } -func (m *PrivacyMetric_NumericalStatsConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_NumericalStatsConfig) ProtoMessage() {} -func (*PrivacyMetric_NumericalStatsConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 0} -} - -func (m *PrivacyMetric_NumericalStatsConfig) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -// Compute numerical stats over an individual column, including -// number of distinct values and value count distribution. -type PrivacyMetric_CategoricalStatsConfig struct { - // Field to compute categorical stats on. All column types are - // supported except for arrays and structs. However, it may be more - // informative to use NumericalStats when the field type is supported, - // depending on the data. - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` -} - -func (m *PrivacyMetric_CategoricalStatsConfig) Reset() { *m = PrivacyMetric_CategoricalStatsConfig{} } -func (m *PrivacyMetric_CategoricalStatsConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_CategoricalStatsConfig) ProtoMessage() {} -func (*PrivacyMetric_CategoricalStatsConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 1} -} - -func (m *PrivacyMetric_CategoricalStatsConfig) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -// k-anonymity metric, used for analysis of reidentification risk. -type PrivacyMetric_KAnonymityConfig struct { - // Set of fields to compute k-anonymity over. When multiple fields are - // specified, they are considered a single composite key. Structs and - // repeated data types are not supported; however, nested fields are - // supported so long as they are not structs themselves or nested within - // a repeated field. - QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` - // Optional message indicating that each distinct entity_id should not - // contribute to the k-anonymity count more than once per equivalence class. - // If an entity_id appears on several rows with different quasi-identifier - // tuples, it will contribute to each count exactly once. - // - // This can lead to unexpected results. Consider a table where ID 1 is - // associated to quasi-identifier "foo", ID 2 to "bar", and ID 3 to *both* - // quasi-identifiers "foo" and "bar" (on separate rows), and where this ID - // is used as entity_id. Then, the anonymity value associated to ID 3 will - // be 2, even if it is the only ID to be associated to both values "foo" and - // "bar". - EntityId *EntityId `protobuf:"bytes,2,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` -} - -func (m *PrivacyMetric_KAnonymityConfig) Reset() { *m = PrivacyMetric_KAnonymityConfig{} } -func (m *PrivacyMetric_KAnonymityConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_KAnonymityConfig) ProtoMessage() {} -func (*PrivacyMetric_KAnonymityConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 2} -} - -func (m *PrivacyMetric_KAnonymityConfig) GetQuasiIds() []*FieldId { - if m != nil { - return m.QuasiIds - } - return nil -} - -func (m *PrivacyMetric_KAnonymityConfig) GetEntityId() *EntityId { - if m != nil { - return m.EntityId - } - return nil -} - -// l-diversity metric, used for analysis of reidentification risk. -type PrivacyMetric_LDiversityConfig struct { - // Set of quasi-identifiers indicating how equivalence classes are - // defined for the l-diversity computation. When multiple fields are - // specified, they are considered a single composite key. - QuasiIds []*FieldId `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` - // Sensitive field for computing the l-value. - SensitiveAttribute *FieldId `protobuf:"bytes,2,opt,name=sensitive_attribute,json=sensitiveAttribute" json:"sensitive_attribute,omitempty"` -} - -func (m *PrivacyMetric_LDiversityConfig) Reset() { *m = PrivacyMetric_LDiversityConfig{} } -func (m *PrivacyMetric_LDiversityConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_LDiversityConfig) ProtoMessage() {} -func (*PrivacyMetric_LDiversityConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 3} -} - -func (m *PrivacyMetric_LDiversityConfig) GetQuasiIds() []*FieldId { - if m != nil { - return m.QuasiIds - } - return nil -} - -func (m *PrivacyMetric_LDiversityConfig) GetSensitiveAttribute() *FieldId { - if m != nil { - return m.SensitiveAttribute - } - return nil -} - -// Reidentifiability metric. This corresponds to a risk model similar to what -// is called "journalist risk" in the literature, except the attack dataset is -// statistically modeled instead of being perfectly known. This can be done -// using publicly available data (like the US Census), or using a custom -// statistical model (indicated as one or several BigQuery tables), or by -// extrapolating from the distribution of values in the input dataset. -type PrivacyMetric_KMapEstimationConfig struct { - // Fields considered to be quasi-identifiers. No two columns can have the - // same tag. [required] - QuasiIds []*PrivacyMetric_KMapEstimationConfig_TaggedField `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` - // ISO 3166-1 alpha-2 region code to use in the statistical modeling. - // Required if no column is tagged with a region-specific InfoType (like - // US_ZIP_5) or a region code. - RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode" json:"region_code,omitempty"` - // Several auxiliary tables can be used in the analysis. Each custom_tag - // used to tag a quasi-identifiers column must appear in exactly one column - // of one auxiliary table. - AuxiliaryTables []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable `protobuf:"bytes,3,rep,name=auxiliary_tables,json=auxiliaryTables" json:"auxiliary_tables,omitempty"` -} - -func (m *PrivacyMetric_KMapEstimationConfig) Reset() { *m = PrivacyMetric_KMapEstimationConfig{} } -func (m *PrivacyMetric_KMapEstimationConfig) String() string { return proto.CompactTextString(m) } -func (*PrivacyMetric_KMapEstimationConfig) ProtoMessage() {} -func (*PrivacyMetric_KMapEstimationConfig) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 4} -} - -func (m *PrivacyMetric_KMapEstimationConfig) GetQuasiIds() []*PrivacyMetric_KMapEstimationConfig_TaggedField { - if m != nil { - return m.QuasiIds - } - return nil -} - -func (m *PrivacyMetric_KMapEstimationConfig) GetRegionCode() string { - if m != nil { - return m.RegionCode - } - return "" -} - -func (m *PrivacyMetric_KMapEstimationConfig) GetAuxiliaryTables() []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable { - if m != nil { - return m.AuxiliaryTables - } - return nil -} - -// A column with a semantic tag attached. -type PrivacyMetric_KMapEstimationConfig_TaggedField struct { - // Identifies the column. [required] - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` - // Semantic tag that identifies what a column contains, to determine which - // statistical model to use to estimate the reidentifiability of each - // value. [required] - // - // Types that are valid to be assigned to Tag: - // *PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType - // *PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag - // *PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred - Tag isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag `protobuf_oneof:"tag"` -} - -func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) Reset() { - *m = PrivacyMetric_KMapEstimationConfig_TaggedField{} -} -func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) String() string { - return proto.CompactTextString(m) -} -func (*PrivacyMetric_KMapEstimationConfig_TaggedField) ProtoMessage() {} -func (*PrivacyMetric_KMapEstimationConfig_TaggedField) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 4, 0} -} - -type isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag interface { - isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() -} - -type PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType struct { - InfoType *InfoType `protobuf:"bytes,2,opt,name=info_type,json=infoType,oneof"` -} -type PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag struct { - CustomTag string `protobuf:"bytes,3,opt,name=custom_tag,json=customTag,oneof"` -} -type PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred struct { - Inferred *google_protobuf3.Empty `protobuf:"bytes,4,opt,name=inferred,oneof"` -} - -func (*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { -} -func (*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { -} -func (*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred) isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag() { -} - -func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetTag() isPrivacyMetric_KMapEstimationConfig_TaggedField_Tag { - if m != nil { - return m.Tag - } - return nil -} - -func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetInfoType() *InfoType { - if x, ok := m.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType); ok { - return x.InfoType - } - return nil -} - -func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetCustomTag() string { - if x, ok := m.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag); ok { - return x.CustomTag - } - return "" -} - -func (m *PrivacyMetric_KMapEstimationConfig_TaggedField) GetInferred() *google_protobuf3.Empty { - if x, ok := m.GetTag().(*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred); ok { - return x.Inferred - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PrivacyMetric_KMapEstimationConfig_TaggedField) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofMarshaler, _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofUnmarshaler, _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofSizer, []interface{}{ - (*PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType)(nil), - (*PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag)(nil), - (*PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred)(nil), - } -} - -func _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PrivacyMetric_KMapEstimationConfig_TaggedField) - // tag - switch x := m.Tag.(type) { - case *PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InfoType); err != nil { - return err - } - case *PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.CustomTag) - case *PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Inferred); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("PrivacyMetric_KMapEstimationConfig_TaggedField.Tag has unexpected type %T", x) - } - return nil -} - -func _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PrivacyMetric_KMapEstimationConfig_TaggedField) - switch tag { - case 2: // tag.info_type - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InfoType) - err := b.DecodeMessage(msg) - m.Tag = &PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType{msg} - return true, err - case 3: // tag.custom_tag - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Tag = &PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag{x} - return true, err - case 4: // tag.inferred - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf3.Empty) - err := b.DecodeMessage(msg) - m.Tag = &PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred{msg} - return true, err - default: - return false, nil - } -} - -func _PrivacyMetric_KMapEstimationConfig_TaggedField_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PrivacyMetric_KMapEstimationConfig_TaggedField) - // tag - switch x := m.Tag.(type) { - case *PrivacyMetric_KMapEstimationConfig_TaggedField_InfoType: - s := proto.Size(x.InfoType) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrivacyMetric_KMapEstimationConfig_TaggedField_CustomTag: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.CustomTag))) - n += len(x.CustomTag) - case *PrivacyMetric_KMapEstimationConfig_TaggedField_Inferred: - s := proto.Size(x.Inferred) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// An auxiliary table contains statistical information on the relative -// frequency of different quasi-identifiers values. It has one or several -// quasi-identifiers columns, and one column that indicates the relative -// frequency of each quasi-identifier tuple. -// If a tuple is present in the data but not in the auxiliary table, the -// corresponding relative frequency is assumed to be zero (and thus, the -// tuple is highly reidentifiable). -type PrivacyMetric_KMapEstimationConfig_AuxiliaryTable struct { - // Auxiliary table location. [required] - Table *BigQueryTable `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"` - // Quasi-identifier columns. [required] - QuasiIds []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField `protobuf:"bytes,1,rep,name=quasi_ids,json=quasiIds" json:"quasi_ids,omitempty"` - // The relative frequency column must contain a floating-point number - // between 0 and 1 (inclusive). Null values are assumed to be zero. - // [required] - RelativeFrequency *FieldId `protobuf:"bytes,2,opt,name=relative_frequency,json=relativeFrequency" json:"relative_frequency,omitempty"` -} - -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) Reset() { - *m = PrivacyMetric_KMapEstimationConfig_AuxiliaryTable{} -} -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) String() string { - return proto.CompactTextString(m) -} -func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) ProtoMessage() {} -func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 4, 1} -} - -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetTable() *BigQueryTable { - if m != nil { - return m.Table - } - return nil -} - -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetQuasiIds() []*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField { - if m != nil { - return m.QuasiIds - } - return nil -} - -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable) GetRelativeFrequency() *FieldId { - if m != nil { - return m.RelativeFrequency - } - return nil -} - -// A quasi-identifier column has a custom_tag, used to know which column -// in the data corresponds to which column in the statistical model. -type PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField struct { - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` - CustomTag string `protobuf:"bytes,2,opt,name=custom_tag,json=customTag" json:"custom_tag,omitempty"` -} - -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) Reset() { - *m = PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField{} -} -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) String() string { - return proto.CompactTextString(m) -} -func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) ProtoMessage() {} -func (*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{27, 4, 1, 0} -} - -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -func (m *PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField) GetCustomTag() string { - if m != nil { - return m.CustomTag - } - return "" -} - -// Result of a risk analysis operation request. -type AnalyzeDataSourceRiskDetails struct { - // Privacy metric to compute. - RequestedPrivacyMetric *PrivacyMetric `protobuf:"bytes,1,opt,name=requested_privacy_metric,json=requestedPrivacyMetric" json:"requested_privacy_metric,omitempty"` - // Input dataset to compute metrics over. - RequestedSourceTable *BigQueryTable `protobuf:"bytes,2,opt,name=requested_source_table,json=requestedSourceTable" json:"requested_source_table,omitempty"` - // Values associated with this metric. - // - // Types that are valid to be assigned to Result: - // *AnalyzeDataSourceRiskDetails_NumericalStatsResult_ - // *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_ - // *AnalyzeDataSourceRiskDetails_KAnonymityResult_ - // *AnalyzeDataSourceRiskDetails_LDiversityResult_ - // *AnalyzeDataSourceRiskDetails_KMapEstimationResult_ - Result isAnalyzeDataSourceRiskDetails_Result `protobuf_oneof:"result"` -} - -func (m *AnalyzeDataSourceRiskDetails) Reset() { *m = AnalyzeDataSourceRiskDetails{} } -func (m *AnalyzeDataSourceRiskDetails) String() string { return proto.CompactTextString(m) } -func (*AnalyzeDataSourceRiskDetails) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -type isAnalyzeDataSourceRiskDetails_Result interface { - isAnalyzeDataSourceRiskDetails_Result() -} - -type AnalyzeDataSourceRiskDetails_NumericalStatsResult_ struct { - NumericalStatsResult *AnalyzeDataSourceRiskDetails_NumericalStatsResult `protobuf:"bytes,3,opt,name=numerical_stats_result,json=numericalStatsResult,oneof"` -} -type AnalyzeDataSourceRiskDetails_CategoricalStatsResult_ struct { - CategoricalStatsResult *AnalyzeDataSourceRiskDetails_CategoricalStatsResult `protobuf:"bytes,4,opt,name=categorical_stats_result,json=categoricalStatsResult,oneof"` -} -type AnalyzeDataSourceRiskDetails_KAnonymityResult_ struct { - KAnonymityResult *AnalyzeDataSourceRiskDetails_KAnonymityResult `protobuf:"bytes,5,opt,name=k_anonymity_result,json=kAnonymityResult,oneof"` -} -type AnalyzeDataSourceRiskDetails_LDiversityResult_ struct { - LDiversityResult *AnalyzeDataSourceRiskDetails_LDiversityResult `protobuf:"bytes,6,opt,name=l_diversity_result,json=lDiversityResult,oneof"` -} -type AnalyzeDataSourceRiskDetails_KMapEstimationResult_ struct { - KMapEstimationResult *AnalyzeDataSourceRiskDetails_KMapEstimationResult `protobuf:"bytes,7,opt,name=k_map_estimation_result,json=kMapEstimationResult,oneof"` -} - -func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult_) isAnalyzeDataSourceRiskDetails_Result() {} -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_) isAnalyzeDataSourceRiskDetails_Result() {} -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_) isAnalyzeDataSourceRiskDetails_Result() {} -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_) isAnalyzeDataSourceRiskDetails_Result() {} -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_) isAnalyzeDataSourceRiskDetails_Result() {} - -func (m *AnalyzeDataSourceRiskDetails) GetResult() isAnalyzeDataSourceRiskDetails_Result { - if m != nil { - return m.Result - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails) GetRequestedPrivacyMetric() *PrivacyMetric { - if m != nil { - return m.RequestedPrivacyMetric - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails) GetRequestedSourceTable() *BigQueryTable { - if m != nil { - return m.RequestedSourceTable - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails) GetNumericalStatsResult() *AnalyzeDataSourceRiskDetails_NumericalStatsResult { - if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_NumericalStatsResult_); ok { - return x.NumericalStatsResult - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails) GetCategoricalStatsResult() *AnalyzeDataSourceRiskDetails_CategoricalStatsResult { - if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_); ok { - return x.CategoricalStatsResult - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails) GetKAnonymityResult() *AnalyzeDataSourceRiskDetails_KAnonymityResult { - if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_KAnonymityResult_); ok { - return x.KAnonymityResult - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails) GetLDiversityResult() *AnalyzeDataSourceRiskDetails_LDiversityResult { - if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_LDiversityResult_); ok { - return x.LDiversityResult - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails) GetKMapEstimationResult() *AnalyzeDataSourceRiskDetails_KMapEstimationResult { - if x, ok := m.GetResult().(*AnalyzeDataSourceRiskDetails_KMapEstimationResult_); ok { - return x.KMapEstimationResult - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*AnalyzeDataSourceRiskDetails) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _AnalyzeDataSourceRiskDetails_OneofMarshaler, _AnalyzeDataSourceRiskDetails_OneofUnmarshaler, _AnalyzeDataSourceRiskDetails_OneofSizer, []interface{}{ - (*AnalyzeDataSourceRiskDetails_NumericalStatsResult_)(nil), - (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_)(nil), - (*AnalyzeDataSourceRiskDetails_KAnonymityResult_)(nil), - (*AnalyzeDataSourceRiskDetails_LDiversityResult_)(nil), - (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_)(nil), - } -} - -func _AnalyzeDataSourceRiskDetails_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*AnalyzeDataSourceRiskDetails) - // result - switch x := m.Result.(type) { - case *AnalyzeDataSourceRiskDetails_NumericalStatsResult_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.NumericalStatsResult); err != nil { - return err - } - case *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CategoricalStatsResult); err != nil { - return err - } - case *AnalyzeDataSourceRiskDetails_KAnonymityResult_: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KAnonymityResult); err != nil { - return err - } - case *AnalyzeDataSourceRiskDetails_LDiversityResult_: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.LDiversityResult); err != nil { - return err - } - case *AnalyzeDataSourceRiskDetails_KMapEstimationResult_: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KMapEstimationResult); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("AnalyzeDataSourceRiskDetails.Result has unexpected type %T", x) - } - return nil -} - -func _AnalyzeDataSourceRiskDetails_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*AnalyzeDataSourceRiskDetails) - switch tag { - case 3: // result.numerical_stats_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AnalyzeDataSourceRiskDetails_NumericalStatsResult) - err := b.DecodeMessage(msg) - m.Result = &AnalyzeDataSourceRiskDetails_NumericalStatsResult_{msg} - return true, err - case 4: // result.categorical_stats_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AnalyzeDataSourceRiskDetails_CategoricalStatsResult) - err := b.DecodeMessage(msg) - m.Result = &AnalyzeDataSourceRiskDetails_CategoricalStatsResult_{msg} - return true, err - case 5: // result.k_anonymity_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AnalyzeDataSourceRiskDetails_KAnonymityResult) - err := b.DecodeMessage(msg) - m.Result = &AnalyzeDataSourceRiskDetails_KAnonymityResult_{msg} - return true, err - case 6: // result.l_diversity_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AnalyzeDataSourceRiskDetails_LDiversityResult) - err := b.DecodeMessage(msg) - m.Result = &AnalyzeDataSourceRiskDetails_LDiversityResult_{msg} - return true, err - case 7: // result.k_map_estimation_result - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AnalyzeDataSourceRiskDetails_KMapEstimationResult) - err := b.DecodeMessage(msg) - m.Result = &AnalyzeDataSourceRiskDetails_KMapEstimationResult_{msg} - return true, err - default: - return false, nil - } -} - -func _AnalyzeDataSourceRiskDetails_OneofSizer(msg proto.Message) (n int) { - m := msg.(*AnalyzeDataSourceRiskDetails) - // result - switch x := m.Result.(type) { - case *AnalyzeDataSourceRiskDetails_NumericalStatsResult_: - s := proto.Size(x.NumericalStatsResult) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_: - s := proto.Size(x.CategoricalStatsResult) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AnalyzeDataSourceRiskDetails_KAnonymityResult_: - s := proto.Size(x.KAnonymityResult) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AnalyzeDataSourceRiskDetails_LDiversityResult_: - s := proto.Size(x.LDiversityResult) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *AnalyzeDataSourceRiskDetails_KMapEstimationResult_: - s := proto.Size(x.KMapEstimationResult) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Result of the numerical stats computation. -type AnalyzeDataSourceRiskDetails_NumericalStatsResult struct { - // Minimum value appearing in the column. - MinValue *Value `protobuf:"bytes,1,opt,name=min_value,json=minValue" json:"min_value,omitempty"` - // Maximum value appearing in the column. - MaxValue *Value `protobuf:"bytes,2,opt,name=max_value,json=maxValue" json:"max_value,omitempty"` - // List of 99 values that partition the set of field values into 100 equal - // sized buckets. - QuantileValues []*Value `protobuf:"bytes,4,rep,name=quantile_values,json=quantileValues" json:"quantile_values,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) Reset() { - *m = AnalyzeDataSourceRiskDetails_NumericalStatsResult{} -} -func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_NumericalStatsResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 0} -} - -func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetMinValue() *Value { - if m != nil { - return m.MinValue - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetMaxValue() *Value { - if m != nil { - return m.MaxValue - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails_NumericalStatsResult) GetQuantileValues() []*Value { - if m != nil { - return m.QuantileValues - } - return nil -} - -// Result of the categorical stats computation. -type AnalyzeDataSourceRiskDetails_CategoricalStatsResult struct { - // Histogram of value frequencies in the column. - ValueFrequencyHistogramBuckets []*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket `protobuf:"bytes,5,rep,name=value_frequency_histogram_buckets,json=valueFrequencyHistogramBuckets" json:"value_frequency_histogram_buckets,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) Reset() { - *m = AnalyzeDataSourceRiskDetails_CategoricalStatsResult{} -} -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 1} -} - -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult) GetValueFrequencyHistogramBuckets() []*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket { - if m != nil { - return m.ValueFrequencyHistogramBuckets - } - return nil -} - -type AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket struct { - // Lower bound on the value frequency of the values in this bucket. - ValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=value_frequency_lower_bound,json=valueFrequencyLowerBound" json:"value_frequency_lower_bound,omitempty"` - // Upper bound on the value frequency of the values in this bucket. - ValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=value_frequency_upper_bound,json=valueFrequencyUpperBound" json:"value_frequency_upper_bound,omitempty"` - // Total number of values in this bucket. - BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` - // Sample of value frequencies in this bucket. The total number of - // values returned per bucket is capped at 20. - BucketValues []*ValueFrequency `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) Reset() { - *m = AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket{} -} -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) ProtoMessage() { -} -func (*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 1, 0} -} - -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyLowerBound() int64 { - if m != nil { - return m.ValueFrequencyLowerBound - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetValueFrequencyUpperBound() int64 { - if m != nil { - return m.ValueFrequencyUpperBound - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketSize() int64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket) GetBucketValues() []*ValueFrequency { - if m != nil { - return m.BucketValues - } - return nil -} - -// Result of the k-anonymity computation. -type AnalyzeDataSourceRiskDetails_KAnonymityResult struct { - // Histogram of k-anonymity equivalence classes. - EquivalenceClassHistogramBuckets []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket `protobuf:"bytes,5,rep,name=equivalence_class_histogram_buckets,json=equivalenceClassHistogramBuckets" json:"equivalence_class_histogram_buckets,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult) Reset() { - *m = AnalyzeDataSourceRiskDetails_KAnonymityResult{} -} -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 2} -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult) GetEquivalenceClassHistogramBuckets() []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket { - if m != nil { - return m.EquivalenceClassHistogramBuckets - } - return nil -} - -// The set of columns' values that share the same ldiversity value -type AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass struct { - // Set of values defining the equivalence class. One value per - // quasi-identifier column in the original KAnonymity metric message. - // The order is always the same as the original request. - QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues" json:"quasi_ids_values,omitempty"` - // Size of the equivalence class, for example number of rows with the - // above set of values. - EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize" json:"equivalence_class_size,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) Reset() { - *m = AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass{} -} -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 2, 0} -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) GetQuasiIdsValues() []*Value { - if m != nil { - return m.QuasiIdsValues - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass) GetEquivalenceClassSize() int64 { - if m != nil { - return m.EquivalenceClassSize - } - return 0 -} - -type AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket struct { - // Lower bound on the size of the equivalence classes in this bucket. - EquivalenceClassSizeLowerBound int64 `protobuf:"varint,1,opt,name=equivalence_class_size_lower_bound,json=equivalenceClassSizeLowerBound" json:"equivalence_class_size_lower_bound,omitempty"` - // Upper bound on the size of the equivalence classes in this bucket. - EquivalenceClassSizeUpperBound int64 `protobuf:"varint,2,opt,name=equivalence_class_size_upper_bound,json=equivalenceClassSizeUpperBound" json:"equivalence_class_size_upper_bound,omitempty"` - // Total number of equivalence classes in this bucket. - BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` - // Sample of equivalence classes in this bucket. The total number of - // classes returned per bucket is capped at 20. - BucketValues []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) Reset() { - *m = AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket{} -} -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 2, 1} -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeLowerBound() int64 { - if m != nil { - return m.EquivalenceClassSizeLowerBound - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetEquivalenceClassSizeUpperBound() int64 { - if m != nil { - return m.EquivalenceClassSizeUpperBound - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketSize() int64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass { - if m != nil { - return m.BucketValues - } - return nil -} - -// Result of the l-diversity computation. -type AnalyzeDataSourceRiskDetails_LDiversityResult struct { - // Histogram of l-diversity equivalence class sensitive value frequencies. - SensitiveValueFrequencyHistogramBuckets []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket `protobuf:"bytes,5,rep,name=sensitive_value_frequency_histogram_buckets,json=sensitiveValueFrequencyHistogramBuckets" json:"sensitive_value_frequency_histogram_buckets,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult) Reset() { - *m = AnalyzeDataSourceRiskDetails_LDiversityResult{} -} -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_LDiversityResult) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_LDiversityResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 3} -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult) GetSensitiveValueFrequencyHistogramBuckets() []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket { - if m != nil { - return m.SensitiveValueFrequencyHistogramBuckets - } - return nil -} - -// The set of columns' values that share the same ldiversity value. -type AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass struct { - // Quasi-identifier values defining the k-anonymity equivalence - // class. The order is always the same as the original request. - QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues" json:"quasi_ids_values,omitempty"` - // Size of the k-anonymity equivalence class. - EquivalenceClassSize int64 `protobuf:"varint,2,opt,name=equivalence_class_size,json=equivalenceClassSize" json:"equivalence_class_size,omitempty"` - // Number of distinct sensitive values in this equivalence class. - NumDistinctSensitiveValues int64 `protobuf:"varint,3,opt,name=num_distinct_sensitive_values,json=numDistinctSensitiveValues" json:"num_distinct_sensitive_values,omitempty"` - // Estimated frequencies of top sensitive values. - TopSensitiveValues []*ValueFrequency `protobuf:"bytes,4,rep,name=top_sensitive_values,json=topSensitiveValues" json:"top_sensitive_values,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) Reset() { - *m = AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass{} -} -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 3, 0} -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetQuasiIdsValues() []*Value { - if m != nil { - return m.QuasiIdsValues - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetEquivalenceClassSize() int64 { - if m != nil { - return m.EquivalenceClassSize - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetNumDistinctSensitiveValues() int64 { - if m != nil { - return m.NumDistinctSensitiveValues - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass) GetTopSensitiveValues() []*ValueFrequency { - if m != nil { - return m.TopSensitiveValues - } - return nil -} - -type AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket struct { - // Lower bound on the sensitive value frequencies of the equivalence - // classes in this bucket. - SensitiveValueFrequencyLowerBound int64 `protobuf:"varint,1,opt,name=sensitive_value_frequency_lower_bound,json=sensitiveValueFrequencyLowerBound" json:"sensitive_value_frequency_lower_bound,omitempty"` - // Upper bound on the sensitive value frequencies of the equivalence - // classes in this bucket. - SensitiveValueFrequencyUpperBound int64 `protobuf:"varint,2,opt,name=sensitive_value_frequency_upper_bound,json=sensitiveValueFrequencyUpperBound" json:"sensitive_value_frequency_upper_bound,omitempty"` - // Total number of equivalence classes in this bucket. - BucketSize int64 `protobuf:"varint,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` - // Sample of equivalence classes in this bucket. The total number of - // classes returned per bucket is capped at 20. - BucketValues []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass `protobuf:"bytes,4,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) Reset() { - *m = AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket{} -} -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 3, 1} -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyLowerBound() int64 { - if m != nil { - return m.SensitiveValueFrequencyLowerBound - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetSensitiveValueFrequencyUpperBound() int64 { - if m != nil { - return m.SensitiveValueFrequencyUpperBound - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketSize() int64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass { - if m != nil { - return m.BucketValues - } - return nil -} - -// Result of the reidentifiability analysis. Note that these results are an -// estimation, not exact values. -type AnalyzeDataSourceRiskDetails_KMapEstimationResult struct { - // The intervals [min_anonymity, max_anonymity] do not overlap. If a value - // doesn't correspond to any such interval, the associated frequency is - // zero. For example, the following records: - // {min_anonymity: 1, max_anonymity: 1, frequency: 17} - // {min_anonymity: 2, max_anonymity: 3, frequency: 42} - // {min_anonymity: 5, max_anonymity: 10, frequency: 99} - // mean that there are no record with an estimated anonymity of 4, 5, or - // larger than 10. - KMapEstimationHistogram []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket `protobuf:"bytes,1,rep,name=k_map_estimation_histogram,json=kMapEstimationHistogram" json:"k_map_estimation_histogram,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult) Reset() { - *m = AnalyzeDataSourceRiskDetails_KMapEstimationResult{} -} -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 4} -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult) GetKMapEstimationHistogram() []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket { - if m != nil { - return m.KMapEstimationHistogram - } - return nil -} - -// A tuple of values for the quasi-identifier columns. -type AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues struct { - // The quasi-identifier values. - QuasiIdsValues []*Value `protobuf:"bytes,1,rep,name=quasi_ids_values,json=quasiIdsValues" json:"quasi_ids_values,omitempty"` - // The estimated anonymity for these quasi-identifier values. - EstimatedAnonymity int64 `protobuf:"varint,2,opt,name=estimated_anonymity,json=estimatedAnonymity" json:"estimated_anonymity,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) Reset() { - *m = AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues{} -} -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) ProtoMessage() {} -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 4, 0} -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) GetQuasiIdsValues() []*Value { - if m != nil { - return m.QuasiIdsValues - } - return nil -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues) GetEstimatedAnonymity() int64 { - if m != nil { - return m.EstimatedAnonymity - } - return 0 -} - -// A KMapEstimationHistogramBucket message with the following values: -// min_anonymity: 3 -// max_anonymity: 5 -// frequency: 42 -// means that there are 42 records whose quasi-identifier values correspond -// to 3, 4 or 5 people in the overlying population. An important particular -// case is when min_anonymity = max_anonymity = 1: the frequency field then -// corresponds to the number of uniquely identifiable records. -type AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket struct { - // Always positive. - MinAnonymity int64 `protobuf:"varint,1,opt,name=min_anonymity,json=minAnonymity" json:"min_anonymity,omitempty"` - // Always greater than or equal to min_anonymity. - MaxAnonymity int64 `protobuf:"varint,2,opt,name=max_anonymity,json=maxAnonymity" json:"max_anonymity,omitempty"` - // Number of records within these anonymity bounds. - BucketSize int64 `protobuf:"varint,5,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` - // Sample of quasi-identifier tuple values in this bucket. The total - // number of classes returned per bucket is capped at 20. - BucketValues []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues `protobuf:"bytes,6,rep,name=bucket_values,json=bucketValues" json:"bucket_values,omitempty"` -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) Reset() { - *m = AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket{} -} -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) String() string { - return proto.CompactTextString(m) -} -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) ProtoMessage() { -} -func (*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{28, 4, 1} -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetMinAnonymity() int64 { - if m != nil { - return m.MinAnonymity - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetMaxAnonymity() int64 { - if m != nil { - return m.MaxAnonymity - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketSize() int64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -func (m *AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket) GetBucketValues() []*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues { - if m != nil { - return m.BucketValues - } - return nil -} - -// A value of a field, including its frequency. -type ValueFrequency struct { - // A value contained in the field in question. - Value *Value `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` - // How many times the value is contained in the field. - Count int64 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` -} - -func (m *ValueFrequency) Reset() { *m = ValueFrequency{} } -func (m *ValueFrequency) String() string { return proto.CompactTextString(m) } -func (*ValueFrequency) ProtoMessage() {} -func (*ValueFrequency) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -func (m *ValueFrequency) GetValue() *Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *ValueFrequency) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -// Set of primitive values supported by the system. -// Note that for the purposes of inspection or transformation, the number -// of bytes considered to comprise a 'Value' is based on its representation -// as a UTF-8 encoded string. For example, if 'integer_value' is set to -// 123456789, the number of bytes would be counted as 9, even though an -// int64 only holds up to 8 bytes of data. -type Value struct { - // Types that are valid to be assigned to Type: - // *Value_IntegerValue - // *Value_FloatValue - // *Value_StringValue - // *Value_BooleanValue - // *Value_TimestampValue - // *Value_TimeValue - // *Value_DateValue - Type isValue_Type `protobuf_oneof:"type"` -} - -func (m *Value) Reset() { *m = Value{} } -func (m *Value) String() string { return proto.CompactTextString(m) } -func (*Value) ProtoMessage() {} -func (*Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -type isValue_Type interface { - isValue_Type() -} - -type Value_IntegerValue struct { - IntegerValue int64 `protobuf:"varint,1,opt,name=integer_value,json=integerValue,oneof"` -} -type Value_FloatValue struct { - FloatValue float64 `protobuf:"fixed64,2,opt,name=float_value,json=floatValue,oneof"` -} -type Value_StringValue struct { - StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,oneof"` -} -type Value_BooleanValue struct { - BooleanValue bool `protobuf:"varint,4,opt,name=boolean_value,json=booleanValue,oneof"` -} -type Value_TimestampValue struct { - TimestampValue *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=timestamp_value,json=timestampValue,oneof"` -} -type Value_TimeValue struct { - TimeValue *google_type2.TimeOfDay `protobuf:"bytes,6,opt,name=time_value,json=timeValue,oneof"` -} -type Value_DateValue struct { - DateValue *google_type.Date `protobuf:"bytes,7,opt,name=date_value,json=dateValue,oneof"` -} - -func (*Value_IntegerValue) isValue_Type() {} -func (*Value_FloatValue) isValue_Type() {} -func (*Value_StringValue) isValue_Type() {} -func (*Value_BooleanValue) isValue_Type() {} -func (*Value_TimestampValue) isValue_Type() {} -func (*Value_TimeValue) isValue_Type() {} -func (*Value_DateValue) isValue_Type() {} - -func (m *Value) GetType() isValue_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *Value) GetIntegerValue() int64 { - if x, ok := m.GetType().(*Value_IntegerValue); ok { - return x.IntegerValue - } - return 0 -} - -func (m *Value) GetFloatValue() float64 { - if x, ok := m.GetType().(*Value_FloatValue); ok { - return x.FloatValue - } - return 0 -} - -func (m *Value) GetStringValue() string { - if x, ok := m.GetType().(*Value_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *Value) GetBooleanValue() bool { - if x, ok := m.GetType().(*Value_BooleanValue); ok { - return x.BooleanValue - } - return false -} - -func (m *Value) GetTimestampValue() *google_protobuf1.Timestamp { - if x, ok := m.GetType().(*Value_TimestampValue); ok { - return x.TimestampValue - } - return nil -} - -func (m *Value) GetTimeValue() *google_type2.TimeOfDay { - if x, ok := m.GetType().(*Value_TimeValue); ok { - return x.TimeValue - } - return nil -} - -func (m *Value) GetDateValue() *google_type.Date { - if x, ok := m.GetType().(*Value_DateValue); ok { - return x.DateValue - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Value) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Value_OneofMarshaler, _Value_OneofUnmarshaler, _Value_OneofSizer, []interface{}{ - (*Value_IntegerValue)(nil), - (*Value_FloatValue)(nil), - (*Value_StringValue)(nil), - (*Value_BooleanValue)(nil), - (*Value_TimestampValue)(nil), - (*Value_TimeValue)(nil), - (*Value_DateValue)(nil), - } -} - -func _Value_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Value) - // type - switch x := m.Type.(type) { - case *Value_IntegerValue: - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IntegerValue)) - case *Value_FloatValue: - b.EncodeVarint(2<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.FloatValue)) - case *Value_StringValue: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *Value_BooleanValue: - t := uint64(0) - if x.BooleanValue { - t = 1 - } - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *Value_TimestampValue: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimestampValue); err != nil { - return err - } - case *Value_TimeValue: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimeValue); err != nil { - return err - } - case *Value_DateValue: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DateValue); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Value.Type has unexpected type %T", x) - } - return nil -} - -func _Value_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Value) - switch tag { - case 1: // type.integer_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Type = &Value_IntegerValue{int64(x)} - return true, err - case 2: // type.float_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Type = &Value_FloatValue{math.Float64frombits(x)} - return true, err - case 3: // type.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Type = &Value_StringValue{x} - return true, err - case 4: // type.boolean_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Type = &Value_BooleanValue{x != 0} - return true, err - case 5: // type.timestamp_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.Timestamp) - err := b.DecodeMessage(msg) - m.Type = &Value_TimestampValue{msg} - return true, err - case 6: // type.time_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_type2.TimeOfDay) - err := b.DecodeMessage(msg) - m.Type = &Value_TimeValue{msg} - return true, err - case 7: // type.date_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_type.Date) - err := b.DecodeMessage(msg) - m.Type = &Value_DateValue{msg} - return true, err - default: - return false, nil - } -} - -func _Value_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Value) - // type - switch x := m.Type.(type) { - case *Value_IntegerValue: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IntegerValue)) - case *Value_FloatValue: - n += proto.SizeVarint(2<<3 | proto.WireFixed64) - n += 8 - case *Value_StringValue: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *Value_BooleanValue: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += 1 - case *Value_TimestampValue: - s := proto.Size(x.TimestampValue) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_TimeValue: - s := proto.Size(x.TimeValue) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Value_DateValue: - s := proto.Size(x.DateValue) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The configuration that controls how the data will change. -type DeidentifyConfig struct { - // Types that are valid to be assigned to Transformation: - // *DeidentifyConfig_InfoTypeTransformations - // *DeidentifyConfig_RecordTransformations - Transformation isDeidentifyConfig_Transformation `protobuf_oneof:"transformation"` -} - -func (m *DeidentifyConfig) Reset() { *m = DeidentifyConfig{} } -func (m *DeidentifyConfig) String() string { return proto.CompactTextString(m) } -func (*DeidentifyConfig) ProtoMessage() {} -func (*DeidentifyConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } - -type isDeidentifyConfig_Transformation interface { - isDeidentifyConfig_Transformation() -} - -type DeidentifyConfig_InfoTypeTransformations struct { - InfoTypeTransformations *InfoTypeTransformations `protobuf:"bytes,1,opt,name=info_type_transformations,json=infoTypeTransformations,oneof"` -} -type DeidentifyConfig_RecordTransformations struct { - RecordTransformations *RecordTransformations `protobuf:"bytes,2,opt,name=record_transformations,json=recordTransformations,oneof"` -} - -func (*DeidentifyConfig_InfoTypeTransformations) isDeidentifyConfig_Transformation() {} -func (*DeidentifyConfig_RecordTransformations) isDeidentifyConfig_Transformation() {} - -func (m *DeidentifyConfig) GetTransformation() isDeidentifyConfig_Transformation { - if m != nil { - return m.Transformation - } - return nil -} - -func (m *DeidentifyConfig) GetInfoTypeTransformations() *InfoTypeTransformations { - if x, ok := m.GetTransformation().(*DeidentifyConfig_InfoTypeTransformations); ok { - return x.InfoTypeTransformations - } - return nil -} - -func (m *DeidentifyConfig) GetRecordTransformations() *RecordTransformations { - if x, ok := m.GetTransformation().(*DeidentifyConfig_RecordTransformations); ok { - return x.RecordTransformations - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*DeidentifyConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _DeidentifyConfig_OneofMarshaler, _DeidentifyConfig_OneofUnmarshaler, _DeidentifyConfig_OneofSizer, []interface{}{ - (*DeidentifyConfig_InfoTypeTransformations)(nil), - (*DeidentifyConfig_RecordTransformations)(nil), - } -} - -func _DeidentifyConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*DeidentifyConfig) - // transformation - switch x := m.Transformation.(type) { - case *DeidentifyConfig_InfoTypeTransformations: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InfoTypeTransformations); err != nil { - return err - } - case *DeidentifyConfig_RecordTransformations: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RecordTransformations); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("DeidentifyConfig.Transformation has unexpected type %T", x) - } - return nil -} - -func _DeidentifyConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*DeidentifyConfig) - switch tag { - case 1: // transformation.info_type_transformations - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InfoTypeTransformations) - err := b.DecodeMessage(msg) - m.Transformation = &DeidentifyConfig_InfoTypeTransformations{msg} - return true, err - case 2: // transformation.record_transformations - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RecordTransformations) - err := b.DecodeMessage(msg) - m.Transformation = &DeidentifyConfig_RecordTransformations{msg} - return true, err - default: - return false, nil - } -} - -func _DeidentifyConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*DeidentifyConfig) - // transformation - switch x := m.Transformation.(type) { - case *DeidentifyConfig_InfoTypeTransformations: - s := proto.Size(x.InfoTypeTransformations) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *DeidentifyConfig_RecordTransformations: - s := proto.Size(x.RecordTransformations) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A rule for transforming a value. -type PrimitiveTransformation struct { - // Types that are valid to be assigned to Transformation: - // *PrimitiveTransformation_ReplaceConfig - // *PrimitiveTransformation_RedactConfig - // *PrimitiveTransformation_CharacterMaskConfig - // *PrimitiveTransformation_CryptoReplaceFfxFpeConfig - // *PrimitiveTransformation_FixedSizeBucketingConfig - // *PrimitiveTransformation_BucketingConfig - // *PrimitiveTransformation_ReplaceWithInfoTypeConfig - // *PrimitiveTransformation_TimePartConfig - // *PrimitiveTransformation_CryptoHashConfig - Transformation isPrimitiveTransformation_Transformation `protobuf_oneof:"transformation"` -} - -func (m *PrimitiveTransformation) Reset() { *m = PrimitiveTransformation{} } -func (m *PrimitiveTransformation) String() string { return proto.CompactTextString(m) } -func (*PrimitiveTransformation) ProtoMessage() {} -func (*PrimitiveTransformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } - -type isPrimitiveTransformation_Transformation interface { - isPrimitiveTransformation_Transformation() -} - -type PrimitiveTransformation_ReplaceConfig struct { - ReplaceConfig *ReplaceValueConfig `protobuf:"bytes,1,opt,name=replace_config,json=replaceConfig,oneof"` -} -type PrimitiveTransformation_RedactConfig struct { - RedactConfig *RedactConfig `protobuf:"bytes,2,opt,name=redact_config,json=redactConfig,oneof"` -} -type PrimitiveTransformation_CharacterMaskConfig struct { - CharacterMaskConfig *CharacterMaskConfig `protobuf:"bytes,3,opt,name=character_mask_config,json=characterMaskConfig,oneof"` -} -type PrimitiveTransformation_CryptoReplaceFfxFpeConfig struct { - CryptoReplaceFfxFpeConfig *CryptoReplaceFfxFpeConfig `protobuf:"bytes,4,opt,name=crypto_replace_ffx_fpe_config,json=cryptoReplaceFfxFpeConfig,oneof"` -} -type PrimitiveTransformation_FixedSizeBucketingConfig struct { - FixedSizeBucketingConfig *FixedSizeBucketingConfig `protobuf:"bytes,5,opt,name=fixed_size_bucketing_config,json=fixedSizeBucketingConfig,oneof"` -} -type PrimitiveTransformation_BucketingConfig struct { - BucketingConfig *BucketingConfig `protobuf:"bytes,6,opt,name=bucketing_config,json=bucketingConfig,oneof"` -} -type PrimitiveTransformation_ReplaceWithInfoTypeConfig struct { - ReplaceWithInfoTypeConfig *ReplaceWithInfoTypeConfig `protobuf:"bytes,7,opt,name=replace_with_info_type_config,json=replaceWithInfoTypeConfig,oneof"` -} -type PrimitiveTransformation_TimePartConfig struct { - TimePartConfig *TimePartConfig `protobuf:"bytes,8,opt,name=time_part_config,json=timePartConfig,oneof"` -} -type PrimitiveTransformation_CryptoHashConfig struct { - CryptoHashConfig *CryptoHashConfig `protobuf:"bytes,9,opt,name=crypto_hash_config,json=cryptoHashConfig,oneof"` -} - -func (*PrimitiveTransformation_ReplaceConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_RedactConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_CharacterMaskConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_CryptoReplaceFfxFpeConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_FixedSizeBucketingConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_BucketingConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_ReplaceWithInfoTypeConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_TimePartConfig) isPrimitiveTransformation_Transformation() {} -func (*PrimitiveTransformation_CryptoHashConfig) isPrimitiveTransformation_Transformation() {} - -func (m *PrimitiveTransformation) GetTransformation() isPrimitiveTransformation_Transformation { - if m != nil { - return m.Transformation - } - return nil -} - -func (m *PrimitiveTransformation) GetReplaceConfig() *ReplaceValueConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_ReplaceConfig); ok { - return x.ReplaceConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetRedactConfig() *RedactConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_RedactConfig); ok { - return x.RedactConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetCharacterMaskConfig() *CharacterMaskConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_CharacterMaskConfig); ok { - return x.CharacterMaskConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetCryptoReplaceFfxFpeConfig() *CryptoReplaceFfxFpeConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_CryptoReplaceFfxFpeConfig); ok { - return x.CryptoReplaceFfxFpeConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetFixedSizeBucketingConfig() *FixedSizeBucketingConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_FixedSizeBucketingConfig); ok { - return x.FixedSizeBucketingConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetBucketingConfig() *BucketingConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_BucketingConfig); ok { - return x.BucketingConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetReplaceWithInfoTypeConfig() *ReplaceWithInfoTypeConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_ReplaceWithInfoTypeConfig); ok { - return x.ReplaceWithInfoTypeConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetTimePartConfig() *TimePartConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_TimePartConfig); ok { - return x.TimePartConfig - } - return nil -} - -func (m *PrimitiveTransformation) GetCryptoHashConfig() *CryptoHashConfig { - if x, ok := m.GetTransformation().(*PrimitiveTransformation_CryptoHashConfig); ok { - return x.CryptoHashConfig - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PrimitiveTransformation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PrimitiveTransformation_OneofMarshaler, _PrimitiveTransformation_OneofUnmarshaler, _PrimitiveTransformation_OneofSizer, []interface{}{ - (*PrimitiveTransformation_ReplaceConfig)(nil), - (*PrimitiveTransformation_RedactConfig)(nil), - (*PrimitiveTransformation_CharacterMaskConfig)(nil), - (*PrimitiveTransformation_CryptoReplaceFfxFpeConfig)(nil), - (*PrimitiveTransformation_FixedSizeBucketingConfig)(nil), - (*PrimitiveTransformation_BucketingConfig)(nil), - (*PrimitiveTransformation_ReplaceWithInfoTypeConfig)(nil), - (*PrimitiveTransformation_TimePartConfig)(nil), - (*PrimitiveTransformation_CryptoHashConfig)(nil), - } -} - -func _PrimitiveTransformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PrimitiveTransformation) - // transformation - switch x := m.Transformation.(type) { - case *PrimitiveTransformation_ReplaceConfig: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReplaceConfig); err != nil { - return err - } - case *PrimitiveTransformation_RedactConfig: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RedactConfig); err != nil { - return err - } - case *PrimitiveTransformation_CharacterMaskConfig: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CharacterMaskConfig); err != nil { - return err - } - case *PrimitiveTransformation_CryptoReplaceFfxFpeConfig: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CryptoReplaceFfxFpeConfig); err != nil { - return err - } - case *PrimitiveTransformation_FixedSizeBucketingConfig: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.FixedSizeBucketingConfig); err != nil { - return err - } - case *PrimitiveTransformation_BucketingConfig: - b.EncodeVarint(6<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BucketingConfig); err != nil { - return err - } - case *PrimitiveTransformation_ReplaceWithInfoTypeConfig: - b.EncodeVarint(7<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReplaceWithInfoTypeConfig); err != nil { - return err - } - case *PrimitiveTransformation_TimePartConfig: - b.EncodeVarint(8<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.TimePartConfig); err != nil { - return err - } - case *PrimitiveTransformation_CryptoHashConfig: - b.EncodeVarint(9<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CryptoHashConfig); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("PrimitiveTransformation.Transformation has unexpected type %T", x) - } - return nil -} - -func _PrimitiveTransformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PrimitiveTransformation) - switch tag { - case 1: // transformation.replace_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ReplaceValueConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_ReplaceConfig{msg} - return true, err - case 2: // transformation.redact_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RedactConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_RedactConfig{msg} - return true, err - case 3: // transformation.character_mask_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CharacterMaskConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_CharacterMaskConfig{msg} - return true, err - case 4: // transformation.crypto_replace_ffx_fpe_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CryptoReplaceFfxFpeConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_CryptoReplaceFfxFpeConfig{msg} - return true, err - case 5: // transformation.fixed_size_bucketing_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(FixedSizeBucketingConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_FixedSizeBucketingConfig{msg} - return true, err - case 6: // transformation.bucketing_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BucketingConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_BucketingConfig{msg} - return true, err - case 7: // transformation.replace_with_info_type_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ReplaceWithInfoTypeConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_ReplaceWithInfoTypeConfig{msg} - return true, err - case 8: // transformation.time_part_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TimePartConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_TimePartConfig{msg} - return true, err - case 9: // transformation.crypto_hash_config - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CryptoHashConfig) - err := b.DecodeMessage(msg) - m.Transformation = &PrimitiveTransformation_CryptoHashConfig{msg} - return true, err - default: - return false, nil - } -} - -func _PrimitiveTransformation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PrimitiveTransformation) - // transformation - switch x := m.Transformation.(type) { - case *PrimitiveTransformation_ReplaceConfig: - s := proto.Size(x.ReplaceConfig) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_RedactConfig: - s := proto.Size(x.RedactConfig) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_CharacterMaskConfig: - s := proto.Size(x.CharacterMaskConfig) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_CryptoReplaceFfxFpeConfig: - s := proto.Size(x.CryptoReplaceFfxFpeConfig) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_FixedSizeBucketingConfig: - s := proto.Size(x.FixedSizeBucketingConfig) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_BucketingConfig: - s := proto.Size(x.BucketingConfig) - n += proto.SizeVarint(6<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_ReplaceWithInfoTypeConfig: - s := proto.Size(x.ReplaceWithInfoTypeConfig) - n += proto.SizeVarint(7<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_TimePartConfig: - s := proto.Size(x.TimePartConfig) - n += proto.SizeVarint(8<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PrimitiveTransformation_CryptoHashConfig: - s := proto.Size(x.CryptoHashConfig) - n += proto.SizeVarint(9<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// For use with `Date`, `Timestamp`, and `TimeOfDay`, extract or preserve a -// portion of the value. -type TimePartConfig struct { - PartToExtract TimePartConfig_TimePart `protobuf:"varint,1,opt,name=part_to_extract,json=partToExtract,enum=google.privacy.dlp.v2beta2.TimePartConfig_TimePart" json:"part_to_extract,omitempty"` -} - -func (m *TimePartConfig) Reset() { *m = TimePartConfig{} } -func (m *TimePartConfig) String() string { return proto.CompactTextString(m) } -func (*TimePartConfig) ProtoMessage() {} -func (*TimePartConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } - -func (m *TimePartConfig) GetPartToExtract() TimePartConfig_TimePart { - if m != nil { - return m.PartToExtract - } - return TimePartConfig_TIME_PART_UNSPECIFIED -} - -// Pseudonymization method that generates surrogates via cryptographic hashing. -// Uses SHA-256. -// The key size must be either 32 or 64 bytes. -// Outputs a 32 byte digest as an uppercase hex string -// (for example, 41D1567F7F99F1DC2A5FAB886DEE5BEE). -// Currently, only string and integer values can be hashed. -type CryptoHashConfig struct { - // The key used by the hash function. - CryptoKey *CryptoKey `protobuf:"bytes,1,opt,name=crypto_key,json=cryptoKey" json:"crypto_key,omitempty"` -} - -func (m *CryptoHashConfig) Reset() { *m = CryptoHashConfig{} } -func (m *CryptoHashConfig) String() string { return proto.CompactTextString(m) } -func (*CryptoHashConfig) ProtoMessage() {} -func (*CryptoHashConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } - -func (m *CryptoHashConfig) GetCryptoKey() *CryptoKey { - if m != nil { - return m.CryptoKey - } - return nil -} - -// Replace each input value with a given `Value`. -type ReplaceValueConfig struct { - // Value to replace it with. - NewValue *Value `protobuf:"bytes,1,opt,name=new_value,json=newValue" json:"new_value,omitempty"` -} - -func (m *ReplaceValueConfig) Reset() { *m = ReplaceValueConfig{} } -func (m *ReplaceValueConfig) String() string { return proto.CompactTextString(m) } -func (*ReplaceValueConfig) ProtoMessage() {} -func (*ReplaceValueConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } - -func (m *ReplaceValueConfig) GetNewValue() *Value { - if m != nil { - return m.NewValue - } - return nil -} - -// Replace each matching finding with the name of the info_type. -type ReplaceWithInfoTypeConfig struct { -} - -func (m *ReplaceWithInfoTypeConfig) Reset() { *m = ReplaceWithInfoTypeConfig{} } -func (m *ReplaceWithInfoTypeConfig) String() string { return proto.CompactTextString(m) } -func (*ReplaceWithInfoTypeConfig) ProtoMessage() {} -func (*ReplaceWithInfoTypeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } - -// Redact a given value. For example, if used with an `InfoTypeTransformation` -// transforming PHONE_NUMBER, and input 'My phone number is 206-555-0123', the -// output would be 'My phone number is '. -type RedactConfig struct { -} - -func (m *RedactConfig) Reset() { *m = RedactConfig{} } -func (m *RedactConfig) String() string { return proto.CompactTextString(m) } -func (*RedactConfig) ProtoMessage() {} -func (*RedactConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } - -// Characters to skip when doing deidentification of a value. These will be left -// alone and skipped. -type CharsToIgnore struct { - // Types that are valid to be assigned to Characters: - // *CharsToIgnore_CharactersToSkip - // *CharsToIgnore_CommonCharactersToIgnore - Characters isCharsToIgnore_Characters `protobuf_oneof:"characters"` -} - -func (m *CharsToIgnore) Reset() { *m = CharsToIgnore{} } -func (m *CharsToIgnore) String() string { return proto.CompactTextString(m) } -func (*CharsToIgnore) ProtoMessage() {} -func (*CharsToIgnore) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } - -type isCharsToIgnore_Characters interface { - isCharsToIgnore_Characters() -} - -type CharsToIgnore_CharactersToSkip struct { - CharactersToSkip string `protobuf:"bytes,1,opt,name=characters_to_skip,json=charactersToSkip,oneof"` -} -type CharsToIgnore_CommonCharactersToIgnore struct { - CommonCharactersToIgnore CharsToIgnore_CommonCharsToIgnore `protobuf:"varint,2,opt,name=common_characters_to_ignore,json=commonCharactersToIgnore,enum=google.privacy.dlp.v2beta2.CharsToIgnore_CommonCharsToIgnore,oneof"` -} - -func (*CharsToIgnore_CharactersToSkip) isCharsToIgnore_Characters() {} -func (*CharsToIgnore_CommonCharactersToIgnore) isCharsToIgnore_Characters() {} - -func (m *CharsToIgnore) GetCharacters() isCharsToIgnore_Characters { - if m != nil { - return m.Characters - } - return nil -} - -func (m *CharsToIgnore) GetCharactersToSkip() string { - if x, ok := m.GetCharacters().(*CharsToIgnore_CharactersToSkip); ok { - return x.CharactersToSkip - } - return "" -} - -func (m *CharsToIgnore) GetCommonCharactersToIgnore() CharsToIgnore_CommonCharsToIgnore { - if x, ok := m.GetCharacters().(*CharsToIgnore_CommonCharactersToIgnore); ok { - return x.CommonCharactersToIgnore - } - return CharsToIgnore_COMMON_CHARS_TO_IGNORE_UNSPECIFIED -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CharsToIgnore) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CharsToIgnore_OneofMarshaler, _CharsToIgnore_OneofUnmarshaler, _CharsToIgnore_OneofSizer, []interface{}{ - (*CharsToIgnore_CharactersToSkip)(nil), - (*CharsToIgnore_CommonCharactersToIgnore)(nil), - } -} - -func _CharsToIgnore_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CharsToIgnore) - // characters - switch x := m.Characters.(type) { - case *CharsToIgnore_CharactersToSkip: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.CharactersToSkip) - case *CharsToIgnore_CommonCharactersToIgnore: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CommonCharactersToIgnore)) - case nil: - default: - return fmt.Errorf("CharsToIgnore.Characters has unexpected type %T", x) - } - return nil -} - -func _CharsToIgnore_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CharsToIgnore) - switch tag { - case 1: // characters.characters_to_skip - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Characters = &CharsToIgnore_CharactersToSkip{x} - return true, err - case 2: // characters.common_characters_to_ignore - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Characters = &CharsToIgnore_CommonCharactersToIgnore{CharsToIgnore_CommonCharsToIgnore(x)} - return true, err - default: - return false, nil - } -} - -func _CharsToIgnore_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CharsToIgnore) - // characters - switch x := m.Characters.(type) { - case *CharsToIgnore_CharactersToSkip: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.CharactersToSkip))) - n += len(x.CharactersToSkip) - case *CharsToIgnore_CommonCharactersToIgnore: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CommonCharactersToIgnore)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Partially mask a string by replacing a given number of characters with a -// fixed character. Masking can start from the beginning or end of the string. -// This can be used on data of any type (numbers, longs, and so on) and when -// de-identifying structured data we'll attempt to preserve the original data's -// type. (This allows you to take a long like 123 and modify it to a string like -// **3. -type CharacterMaskConfig struct { - // Character to mask the sensitive values&mdash;for example, "*" for an - // alphabetic string such as name, or "0" for a numeric string such as ZIP - // code or credit card number. String must have length 1. If not supplied, we - // will default to "*" for strings, 0 for digits. - MaskingCharacter string `protobuf:"bytes,1,opt,name=masking_character,json=maskingCharacter" json:"masking_character,omitempty"` - // Number of characters to mask. If not set, all matching chars will be - // masked. Skipped characters do not count towards this tally. - NumberToMask int32 `protobuf:"varint,2,opt,name=number_to_mask,json=numberToMask" json:"number_to_mask,omitempty"` - // Mask characters in reverse order. For example, if `masking_character` is - // '0', number_to_mask is 14, and `reverse_order` is false, then - // 1234-5678-9012-3456 -> 00000000000000-3456 - // If `masking_character` is '*', `number_to_mask` is 3, and `reverse_order` - // is true, then 12345 -> 12*** - ReverseOrder bool `protobuf:"varint,3,opt,name=reverse_order,json=reverseOrder" json:"reverse_order,omitempty"` - // When masking a string, items in this list will be skipped when replacing. - // For example, if your string is 555-555-5555 and you ask us to skip `-` and - // mask 5 chars with * we would produce ***-*55-5555. - CharactersToIgnore []*CharsToIgnore `protobuf:"bytes,4,rep,name=characters_to_ignore,json=charactersToIgnore" json:"characters_to_ignore,omitempty"` -} - -func (m *CharacterMaskConfig) Reset() { *m = CharacterMaskConfig{} } -func (m *CharacterMaskConfig) String() string { return proto.CompactTextString(m) } -func (*CharacterMaskConfig) ProtoMessage() {} -func (*CharacterMaskConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } - -func (m *CharacterMaskConfig) GetMaskingCharacter() string { - if m != nil { - return m.MaskingCharacter - } - return "" -} - -func (m *CharacterMaskConfig) GetNumberToMask() int32 { - if m != nil { - return m.NumberToMask - } - return 0 -} - -func (m *CharacterMaskConfig) GetReverseOrder() bool { - if m != nil { - return m.ReverseOrder - } - return false -} - -func (m *CharacterMaskConfig) GetCharactersToIgnore() []*CharsToIgnore { - if m != nil { - return m.CharactersToIgnore - } - return nil -} - -// Buckets values based on fixed size ranges. The -// Bucketing transformation can provide all of this functionality, -// but requires more configuration. This message is provided as a convenience to -// the user for simple bucketing strategies. -// -// The transformed value will be a hyphenated string of -// <lower_bound>-<upper_bound>, i.e if lower_bound = 10 and upper_bound = 20 -// all values that are within this bucket will be replaced with "10-20". -// -// This can be used on data of type: double, long. -// -// If the bound Value type differs from the type of data -// being transformed, we will first attempt converting the type of the data to -// be transformed to match the type of the bound before comparing. -type FixedSizeBucketingConfig struct { - // Lower bound value of buckets. All values less than `lower_bound` are - // grouped together into a single bucket; for example if `lower_bound` = 10, - // then all values less than 10 are replaced with the value “-10”. [Required]. - LowerBound *Value `protobuf:"bytes,1,opt,name=lower_bound,json=lowerBound" json:"lower_bound,omitempty"` - // Upper bound value of buckets. All values greater than upper_bound are - // grouped together into a single bucket; for example if `upper_bound` = 89, - // then all values greater than 89 are replaced with the value “89+”. - // [Required]. - UpperBound *Value `protobuf:"bytes,2,opt,name=upper_bound,json=upperBound" json:"upper_bound,omitempty"` - // Size of each bucket (except for minimum and maximum buckets). So if - // `lower_bound` = 10, `upper_bound` = 89, and `bucket_size` = 10, then the - // following buckets would be used: -10, 10-20, 20-30, 30-40, 40-50, 50-60, - // 60-70, 70-80, 80-89, 89+. Precision up to 2 decimals works. [Required]. - BucketSize float64 `protobuf:"fixed64,3,opt,name=bucket_size,json=bucketSize" json:"bucket_size,omitempty"` -} - -func (m *FixedSizeBucketingConfig) Reset() { *m = FixedSizeBucketingConfig{} } -func (m *FixedSizeBucketingConfig) String() string { return proto.CompactTextString(m) } -func (*FixedSizeBucketingConfig) ProtoMessage() {} -func (*FixedSizeBucketingConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } - -func (m *FixedSizeBucketingConfig) GetLowerBound() *Value { - if m != nil { - return m.LowerBound - } - return nil -} - -func (m *FixedSizeBucketingConfig) GetUpperBound() *Value { - if m != nil { - return m.UpperBound - } - return nil -} - -func (m *FixedSizeBucketingConfig) GetBucketSize() float64 { - if m != nil { - return m.BucketSize - } - return 0 -} - -// Generalization function that buckets values based on ranges. The ranges and -// replacement values are dynamically provided by the user for custom behavior, -// such as 1-30 -> LOW 31-65 -> MEDIUM 66-100 -> HIGH -// This can be used on -// data of type: number, long, string, timestamp. -// If the bound `Value` type differs from the type of data being transformed, we -// will first attempt converting the type of the data to be transformed to match -// the type of the bound before comparing. -type BucketingConfig struct { - // Set of buckets. Ranges must be non-overlapping. - Buckets []*BucketingConfig_Bucket `protobuf:"bytes,1,rep,name=buckets" json:"buckets,omitempty"` -} - -func (m *BucketingConfig) Reset() { *m = BucketingConfig{} } -func (m *BucketingConfig) String() string { return proto.CompactTextString(m) } -func (*BucketingConfig) ProtoMessage() {} -func (*BucketingConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } - -func (m *BucketingConfig) GetBuckets() []*BucketingConfig_Bucket { - if m != nil { - return m.Buckets - } - return nil -} - -// Bucket is represented as a range, along with replacement values. -type BucketingConfig_Bucket struct { - // Lower bound of the range, inclusive. Type should be the same as max if - // used. - Min *Value `protobuf:"bytes,1,opt,name=min" json:"min,omitempty"` - // Upper bound of the range, exclusive; type must match min. - Max *Value `protobuf:"bytes,2,opt,name=max" json:"max,omitempty"` - // Replacement value for this bucket. If not provided - // the default behavior will be to hyphenate the min-max range. - ReplacementValue *Value `protobuf:"bytes,3,opt,name=replacement_value,json=replacementValue" json:"replacement_value,omitempty"` -} - -func (m *BucketingConfig_Bucket) Reset() { *m = BucketingConfig_Bucket{} } -func (m *BucketingConfig_Bucket) String() string { return proto.CompactTextString(m) } -func (*BucketingConfig_Bucket) ProtoMessage() {} -func (*BucketingConfig_Bucket) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41, 0} } - -func (m *BucketingConfig_Bucket) GetMin() *Value { - if m != nil { - return m.Min - } - return nil -} - -func (m *BucketingConfig_Bucket) GetMax() *Value { - if m != nil { - return m.Max - } - return nil -} - -func (m *BucketingConfig_Bucket) GetReplacementValue() *Value { - if m != nil { - return m.ReplacementValue - } - return nil -} - -// Replaces an identifier with a surrogate using FPE with the FFX -// mode of operation; however when used in the `ReidentifyContent` API method, -// it serves the opposite function by reversing the surrogate back into -// the original identifier. -// The identifier must be encoded as ASCII. -// For a given crypto key and context, the same identifier will be -// replaced with the same surrogate. -// Identifiers must be at least two characters long. -// In the case that the identifier is the empty string, it will be skipped. -type CryptoReplaceFfxFpeConfig struct { - // The key used by the encryption algorithm. [required] - CryptoKey *CryptoKey `protobuf:"bytes,1,opt,name=crypto_key,json=cryptoKey" json:"crypto_key,omitempty"` - // The 'tweak', a context may be used for higher security since the same - // identifier in two different contexts won't be given the same surrogate. If - // the context is not set, a default tweak will be used. - // - // If the context is set but: - // - // 1. there is no record present when transforming a given value or - // 1. the field is not present when transforming a given value, - // - // a default tweak will be used. - // - // Note that case (1) is expected when an `InfoTypeTransformation` is - // applied to both structured and non-structured `ContentItem`s. - // Currently, the referenced field may be of value type integer or string. - // - // The tweak is constructed as a sequence of bytes in big endian byte order - // such that: - // - // - a 64 bit integer is encoded followed by a single byte of value 1 - // - a string is encoded in UTF-8 format followed by a single byte of value - // å 2 - Context *FieldId `protobuf:"bytes,2,opt,name=context" json:"context,omitempty"` - // Types that are valid to be assigned to Alphabet: - // *CryptoReplaceFfxFpeConfig_CommonAlphabet - // *CryptoReplaceFfxFpeConfig_CustomAlphabet - // *CryptoReplaceFfxFpeConfig_Radix - Alphabet isCryptoReplaceFfxFpeConfig_Alphabet `protobuf_oneof:"alphabet"` - // The custom infoType to annotate the surrogate with. - // This annotation will be applied to the surrogate by prefixing it with - // the name of the custom infoType followed by the number of - // characters comprising the surrogate. The following scheme defines the - // format: info_type_name(surrogate_character_count):surrogate - // - // For example, if the name of custom infoType is 'MY_TOKEN_INFO_TYPE' and - // the surrogate is 'abc', the full replacement value - // will be: 'MY_TOKEN_INFO_TYPE(3):abc' - // - // This annotation identifies the surrogate when inspecting content using the - // custom infoType - // [`SurrogateType`](/dlp/docs/reference/rest/v2beta2/InspectConfig#surrogatetype). - // This facilitates reversal of the surrogate when it occurs in free text. - // - // In order for inspection to work properly, the name of this infoType must - // not occur naturally anywhere in your data; otherwise, inspection may - // find a surrogate that does not correspond to an actual identifier. - // Therefore, choose your custom infoType name carefully after considering - // what your data looks like. One way to select a name that has a high chance - // of yielding reliable detection is to include one or more unicode characters - // that are highly improbable to exist in your data. - // For example, assuming your data is entered from a regular ASCII keyboard, - // the symbol with the hex code point 29DD might be used like so: - // ⧝MY_TOKEN_TYPE - SurrogateInfoType *InfoType `protobuf:"bytes,8,opt,name=surrogate_info_type,json=surrogateInfoType" json:"surrogate_info_type,omitempty"` -} - -func (m *CryptoReplaceFfxFpeConfig) Reset() { *m = CryptoReplaceFfxFpeConfig{} } -func (m *CryptoReplaceFfxFpeConfig) String() string { return proto.CompactTextString(m) } -func (*CryptoReplaceFfxFpeConfig) ProtoMessage() {} -func (*CryptoReplaceFfxFpeConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } - -type isCryptoReplaceFfxFpeConfig_Alphabet interface { - isCryptoReplaceFfxFpeConfig_Alphabet() -} - -type CryptoReplaceFfxFpeConfig_CommonAlphabet struct { - CommonAlphabet CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet `protobuf:"varint,4,opt,name=common_alphabet,json=commonAlphabet,enum=google.privacy.dlp.v2beta2.CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet,oneof"` -} -type CryptoReplaceFfxFpeConfig_CustomAlphabet struct { - CustomAlphabet string `protobuf:"bytes,5,opt,name=custom_alphabet,json=customAlphabet,oneof"` -} -type CryptoReplaceFfxFpeConfig_Radix struct { - Radix int32 `protobuf:"varint,6,opt,name=radix,oneof"` -} - -func (*CryptoReplaceFfxFpeConfig_CommonAlphabet) isCryptoReplaceFfxFpeConfig_Alphabet() {} -func (*CryptoReplaceFfxFpeConfig_CustomAlphabet) isCryptoReplaceFfxFpeConfig_Alphabet() {} -func (*CryptoReplaceFfxFpeConfig_Radix) isCryptoReplaceFfxFpeConfig_Alphabet() {} - -func (m *CryptoReplaceFfxFpeConfig) GetAlphabet() isCryptoReplaceFfxFpeConfig_Alphabet { - if m != nil { - return m.Alphabet - } - return nil -} - -func (m *CryptoReplaceFfxFpeConfig) GetCryptoKey() *CryptoKey { - if m != nil { - return m.CryptoKey - } - return nil -} - -func (m *CryptoReplaceFfxFpeConfig) GetContext() *FieldId { - if m != nil { - return m.Context - } - return nil -} - -func (m *CryptoReplaceFfxFpeConfig) GetCommonAlphabet() CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet { - if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_CommonAlphabet); ok { - return x.CommonAlphabet - } - return CryptoReplaceFfxFpeConfig_FFX_COMMON_NATIVE_ALPHABET_UNSPECIFIED -} - -func (m *CryptoReplaceFfxFpeConfig) GetCustomAlphabet() string { - if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_CustomAlphabet); ok { - return x.CustomAlphabet - } - return "" -} - -func (m *CryptoReplaceFfxFpeConfig) GetRadix() int32 { - if x, ok := m.GetAlphabet().(*CryptoReplaceFfxFpeConfig_Radix); ok { - return x.Radix - } - return 0 -} - -func (m *CryptoReplaceFfxFpeConfig) GetSurrogateInfoType() *InfoType { - if m != nil { - return m.SurrogateInfoType - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CryptoReplaceFfxFpeConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CryptoReplaceFfxFpeConfig_OneofMarshaler, _CryptoReplaceFfxFpeConfig_OneofUnmarshaler, _CryptoReplaceFfxFpeConfig_OneofSizer, []interface{}{ - (*CryptoReplaceFfxFpeConfig_CommonAlphabet)(nil), - (*CryptoReplaceFfxFpeConfig_CustomAlphabet)(nil), - (*CryptoReplaceFfxFpeConfig_Radix)(nil), - } -} - -func _CryptoReplaceFfxFpeConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CryptoReplaceFfxFpeConfig) - // alphabet - switch x := m.Alphabet.(type) { - case *CryptoReplaceFfxFpeConfig_CommonAlphabet: - b.EncodeVarint(4<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.CommonAlphabet)) - case *CryptoReplaceFfxFpeConfig_CustomAlphabet: - b.EncodeVarint(5<<3 | proto.WireBytes) - b.EncodeStringBytes(x.CustomAlphabet) - case *CryptoReplaceFfxFpeConfig_Radix: - b.EncodeVarint(6<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Radix)) - case nil: - default: - return fmt.Errorf("CryptoReplaceFfxFpeConfig.Alphabet has unexpected type %T", x) - } - return nil -} - -func _CryptoReplaceFfxFpeConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CryptoReplaceFfxFpeConfig) - switch tag { - case 4: // alphabet.common_alphabet - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Alphabet = &CryptoReplaceFfxFpeConfig_CommonAlphabet{CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet(x)} - return true, err - case 5: // alphabet.custom_alphabet - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Alphabet = &CryptoReplaceFfxFpeConfig_CustomAlphabet{x} - return true, err - case 6: // alphabet.radix - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Alphabet = &CryptoReplaceFfxFpeConfig_Radix{int32(x)} - return true, err - default: - return false, nil - } -} - -func _CryptoReplaceFfxFpeConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CryptoReplaceFfxFpeConfig) - // alphabet - switch x := m.Alphabet.(type) { - case *CryptoReplaceFfxFpeConfig_CommonAlphabet: - n += proto.SizeVarint(4<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.CommonAlphabet)) - case *CryptoReplaceFfxFpeConfig_CustomAlphabet: - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.CustomAlphabet))) - n += len(x.CustomAlphabet) - case *CryptoReplaceFfxFpeConfig_Radix: - n += proto.SizeVarint(6<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Radix)) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// This is a data encryption key (DEK) (as opposed to -// a key encryption key (KEK) stored by KMS). -// When using KMS to wrap/unwrap DEKs, be sure to set an appropriate -// IAM policy on the KMS CryptoKey (KEK) to ensure an attacker cannot -// unwrap the data crypto key. -type CryptoKey struct { - // Types that are valid to be assigned to Source: - // *CryptoKey_Transient - // *CryptoKey_Unwrapped - // *CryptoKey_KmsWrapped - Source isCryptoKey_Source `protobuf_oneof:"source"` -} - -func (m *CryptoKey) Reset() { *m = CryptoKey{} } -func (m *CryptoKey) String() string { return proto.CompactTextString(m) } -func (*CryptoKey) ProtoMessage() {} -func (*CryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } - -type isCryptoKey_Source interface { - isCryptoKey_Source() -} - -type CryptoKey_Transient struct { - Transient *TransientCryptoKey `protobuf:"bytes,1,opt,name=transient,oneof"` -} -type CryptoKey_Unwrapped struct { - Unwrapped *UnwrappedCryptoKey `protobuf:"bytes,2,opt,name=unwrapped,oneof"` -} -type CryptoKey_KmsWrapped struct { - KmsWrapped *KmsWrappedCryptoKey `protobuf:"bytes,3,opt,name=kms_wrapped,json=kmsWrapped,oneof"` -} - -func (*CryptoKey_Transient) isCryptoKey_Source() {} -func (*CryptoKey_Unwrapped) isCryptoKey_Source() {} -func (*CryptoKey_KmsWrapped) isCryptoKey_Source() {} - -func (m *CryptoKey) GetSource() isCryptoKey_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *CryptoKey) GetTransient() *TransientCryptoKey { - if x, ok := m.GetSource().(*CryptoKey_Transient); ok { - return x.Transient - } - return nil -} - -func (m *CryptoKey) GetUnwrapped() *UnwrappedCryptoKey { - if x, ok := m.GetSource().(*CryptoKey_Unwrapped); ok { - return x.Unwrapped - } - return nil -} - -func (m *CryptoKey) GetKmsWrapped() *KmsWrappedCryptoKey { - if x, ok := m.GetSource().(*CryptoKey_KmsWrapped); ok { - return x.KmsWrapped - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CryptoKey) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CryptoKey_OneofMarshaler, _CryptoKey_OneofUnmarshaler, _CryptoKey_OneofSizer, []interface{}{ - (*CryptoKey_Transient)(nil), - (*CryptoKey_Unwrapped)(nil), - (*CryptoKey_KmsWrapped)(nil), - } -} - -func _CryptoKey_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CryptoKey) - // source - switch x := m.Source.(type) { - case *CryptoKey_Transient: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Transient); err != nil { - return err - } - case *CryptoKey_Unwrapped: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Unwrapped); err != nil { - return err - } - case *CryptoKey_KmsWrapped: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.KmsWrapped); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CryptoKey.Source has unexpected type %T", x) - } - return nil -} - -func _CryptoKey_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CryptoKey) - switch tag { - case 1: // source.transient - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransientCryptoKey) - err := b.DecodeMessage(msg) - m.Source = &CryptoKey_Transient{msg} - return true, err - case 2: // source.unwrapped - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(UnwrappedCryptoKey) - err := b.DecodeMessage(msg) - m.Source = &CryptoKey_Unwrapped{msg} - return true, err - case 3: // source.kms_wrapped - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(KmsWrappedCryptoKey) - err := b.DecodeMessage(msg) - m.Source = &CryptoKey_KmsWrapped{msg} - return true, err - default: - return false, nil - } -} - -func _CryptoKey_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CryptoKey) - // source - switch x := m.Source.(type) { - case *CryptoKey_Transient: - s := proto.Size(x.Transient) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *CryptoKey_Unwrapped: - s := proto.Size(x.Unwrapped) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *CryptoKey_KmsWrapped: - s := proto.Size(x.KmsWrapped) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Use this to have a random data crypto key generated. -// It will be discarded after the request finishes. -type TransientCryptoKey struct { - // Name of the key. [required] - // This is an arbitrary string used to differentiate different keys. - // A unique key is generated per name: two separate `TransientCryptoKey` - // protos share the same generated key if their names are the same. - // When the data crypto key is generated, this name is not used in any way - // (repeating the api call will result in a different key being generated). - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *TransientCryptoKey) Reset() { *m = TransientCryptoKey{} } -func (m *TransientCryptoKey) String() string { return proto.CompactTextString(m) } -func (*TransientCryptoKey) ProtoMessage() {} -func (*TransientCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } - -func (m *TransientCryptoKey) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Using raw keys is prone to security risks due to accidentally -// leaking the key. Choose another type of key if possible. -type UnwrappedCryptoKey struct { - // The AES 128/192/256 bit key. [required] - Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` -} - -func (m *UnwrappedCryptoKey) Reset() { *m = UnwrappedCryptoKey{} } -func (m *UnwrappedCryptoKey) String() string { return proto.CompactTextString(m) } -func (*UnwrappedCryptoKey) ProtoMessage() {} -func (*UnwrappedCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } - -func (m *UnwrappedCryptoKey) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -// Include to use an existing data crypto key wrapped by KMS. -// Authorization requires the following IAM permissions when sending a request -// to perform a crypto transformation using a kms-wrapped crypto key: -// dlp.kms.encrypt -type KmsWrappedCryptoKey struct { - // The wrapped data crypto key. [required] - WrappedKey []byte `protobuf:"bytes,1,opt,name=wrapped_key,json=wrappedKey,proto3" json:"wrapped_key,omitempty"` - // The resource name of the KMS CryptoKey to use for unwrapping. [required] - CryptoKeyName string `protobuf:"bytes,2,opt,name=crypto_key_name,json=cryptoKeyName" json:"crypto_key_name,omitempty"` -} - -func (m *KmsWrappedCryptoKey) Reset() { *m = KmsWrappedCryptoKey{} } -func (m *KmsWrappedCryptoKey) String() string { return proto.CompactTextString(m) } -func (*KmsWrappedCryptoKey) ProtoMessage() {} -func (*KmsWrappedCryptoKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } - -func (m *KmsWrappedCryptoKey) GetWrappedKey() []byte { - if m != nil { - return m.WrappedKey - } - return nil -} - -func (m *KmsWrappedCryptoKey) GetCryptoKeyName() string { - if m != nil { - return m.CryptoKeyName - } - return "" -} - -// A type of transformation that will scan unstructured text and -// apply various `PrimitiveTransformation`s to each finding, where the -// transformation is applied to only values that were identified as a specific -// info_type. -type InfoTypeTransformations struct { - // Transformation for each infoType. Cannot specify more than one - // for a given infoType. [required] - Transformations []*InfoTypeTransformations_InfoTypeTransformation `protobuf:"bytes,1,rep,name=transformations" json:"transformations,omitempty"` -} - -func (m *InfoTypeTransformations) Reset() { *m = InfoTypeTransformations{} } -func (m *InfoTypeTransformations) String() string { return proto.CompactTextString(m) } -func (*InfoTypeTransformations) ProtoMessage() {} -func (*InfoTypeTransformations) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } - -func (m *InfoTypeTransformations) GetTransformations() []*InfoTypeTransformations_InfoTypeTransformation { - if m != nil { - return m.Transformations - } - return nil -} - -// A transformation to apply to text that is identified as a specific -// info_type. -type InfoTypeTransformations_InfoTypeTransformation struct { - // InfoTypes to apply the transformation to. Empty list will match all - // available infoTypes for this transformation. - InfoTypes []*InfoType `protobuf:"bytes,1,rep,name=info_types,json=infoTypes" json:"info_types,omitempty"` - // Primitive transformation to apply to the infoType. [required] - PrimitiveTransformation *PrimitiveTransformation `protobuf:"bytes,2,opt,name=primitive_transformation,json=primitiveTransformation" json:"primitive_transformation,omitempty"` -} - -func (m *InfoTypeTransformations_InfoTypeTransformation) Reset() { - *m = InfoTypeTransformations_InfoTypeTransformation{} -} -func (m *InfoTypeTransformations_InfoTypeTransformation) String() string { - return proto.CompactTextString(m) -} -func (*InfoTypeTransformations_InfoTypeTransformation) ProtoMessage() {} -func (*InfoTypeTransformations_InfoTypeTransformation) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{47, 0} -} - -func (m *InfoTypeTransformations_InfoTypeTransformation) GetInfoTypes() []*InfoType { - if m != nil { - return m.InfoTypes - } - return nil -} - -func (m *InfoTypeTransformations_InfoTypeTransformation) GetPrimitiveTransformation() *PrimitiveTransformation { - if m != nil { - return m.PrimitiveTransformation - } - return nil -} - -// The transformation to apply to the field. -type FieldTransformation struct { - // Input field(s) to apply the transformation to. [required] - Fields []*FieldId `protobuf:"bytes,1,rep,name=fields" json:"fields,omitempty"` - // Only apply the transformation if the condition evaluates to true for the - // given `RecordCondition`. The conditions are allowed to reference fields - // that are not used in the actual transformation. [optional] - // - // Example Use Cases: - // - // - Apply a different bucket transformation to an age column if the zip code - // column for the same record is within a specific range. - // - Redact a field if the date of birth field is greater than 85. - Condition *RecordCondition `protobuf:"bytes,3,opt,name=condition" json:"condition,omitempty"` - // Transformation to apply. [required] - // - // Types that are valid to be assigned to Transformation: - // *FieldTransformation_PrimitiveTransformation - // *FieldTransformation_InfoTypeTransformations - Transformation isFieldTransformation_Transformation `protobuf_oneof:"transformation"` -} - -func (m *FieldTransformation) Reset() { *m = FieldTransformation{} } -func (m *FieldTransformation) String() string { return proto.CompactTextString(m) } -func (*FieldTransformation) ProtoMessage() {} -func (*FieldTransformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } - -type isFieldTransformation_Transformation interface { - isFieldTransformation_Transformation() -} - -type FieldTransformation_PrimitiveTransformation struct { - PrimitiveTransformation *PrimitiveTransformation `protobuf:"bytes,4,opt,name=primitive_transformation,json=primitiveTransformation,oneof"` -} -type FieldTransformation_InfoTypeTransformations struct { - InfoTypeTransformations *InfoTypeTransformations `protobuf:"bytes,5,opt,name=info_type_transformations,json=infoTypeTransformations,oneof"` -} - -func (*FieldTransformation_PrimitiveTransformation) isFieldTransformation_Transformation() {} -func (*FieldTransformation_InfoTypeTransformations) isFieldTransformation_Transformation() {} - -func (m *FieldTransformation) GetTransformation() isFieldTransformation_Transformation { - if m != nil { - return m.Transformation - } - return nil -} - -func (m *FieldTransformation) GetFields() []*FieldId { - if m != nil { - return m.Fields - } - return nil -} - -func (m *FieldTransformation) GetCondition() *RecordCondition { - if m != nil { - return m.Condition - } - return nil -} - -func (m *FieldTransformation) GetPrimitiveTransformation() *PrimitiveTransformation { - if x, ok := m.GetTransformation().(*FieldTransformation_PrimitiveTransformation); ok { - return x.PrimitiveTransformation - } - return nil -} - -func (m *FieldTransformation) GetInfoTypeTransformations() *InfoTypeTransformations { - if x, ok := m.GetTransformation().(*FieldTransformation_InfoTypeTransformations); ok { - return x.InfoTypeTransformations - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*FieldTransformation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _FieldTransformation_OneofMarshaler, _FieldTransformation_OneofUnmarshaler, _FieldTransformation_OneofSizer, []interface{}{ - (*FieldTransformation_PrimitiveTransformation)(nil), - (*FieldTransformation_InfoTypeTransformations)(nil), - } -} - -func _FieldTransformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*FieldTransformation) - // transformation - switch x := m.Transformation.(type) { - case *FieldTransformation_PrimitiveTransformation: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.PrimitiveTransformation); err != nil { - return err - } - case *FieldTransformation_InfoTypeTransformations: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InfoTypeTransformations); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("FieldTransformation.Transformation has unexpected type %T", x) - } - return nil -} - -func _FieldTransformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*FieldTransformation) - switch tag { - case 4: // transformation.primitive_transformation - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PrimitiveTransformation) - err := b.DecodeMessage(msg) - m.Transformation = &FieldTransformation_PrimitiveTransformation{msg} - return true, err - case 5: // transformation.info_type_transformations - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InfoTypeTransformations) - err := b.DecodeMessage(msg) - m.Transformation = &FieldTransformation_InfoTypeTransformations{msg} - return true, err - default: - return false, nil - } -} - -func _FieldTransformation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*FieldTransformation) - // transformation - switch x := m.Transformation.(type) { - case *FieldTransformation_PrimitiveTransformation: - s := proto.Size(x.PrimitiveTransformation) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *FieldTransformation_InfoTypeTransformations: - s := proto.Size(x.InfoTypeTransformations) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A type of transformation that is applied over structured data such as a -// table. -type RecordTransformations struct { - // Transform the record by applying various field transformations. - FieldTransformations []*FieldTransformation `protobuf:"bytes,1,rep,name=field_transformations,json=fieldTransformations" json:"field_transformations,omitempty"` - // Configuration defining which records get suppressed entirely. Records that - // match any suppression rule are omitted from the output [optional]. - RecordSuppressions []*RecordSuppression `protobuf:"bytes,2,rep,name=record_suppressions,json=recordSuppressions" json:"record_suppressions,omitempty"` -} - -func (m *RecordTransformations) Reset() { *m = RecordTransformations{} } -func (m *RecordTransformations) String() string { return proto.CompactTextString(m) } -func (*RecordTransformations) ProtoMessage() {} -func (*RecordTransformations) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } - -func (m *RecordTransformations) GetFieldTransformations() []*FieldTransformation { - if m != nil { - return m.FieldTransformations - } - return nil -} - -func (m *RecordTransformations) GetRecordSuppressions() []*RecordSuppression { - if m != nil { - return m.RecordSuppressions - } - return nil -} - -// Configuration to suppress records whose suppression conditions evaluate to -// true. -type RecordSuppression struct { - // A condition that when it evaluates to true will result in the record being - // evaluated to be suppressed from the transformed content. - Condition *RecordCondition `protobuf:"bytes,1,opt,name=condition" json:"condition,omitempty"` -} - -func (m *RecordSuppression) Reset() { *m = RecordSuppression{} } -func (m *RecordSuppression) String() string { return proto.CompactTextString(m) } -func (*RecordSuppression) ProtoMessage() {} -func (*RecordSuppression) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } - -func (m *RecordSuppression) GetCondition() *RecordCondition { - if m != nil { - return m.Condition - } - return nil -} - -// A condition for determining whether a transformation should be applied to -// a field. -type RecordCondition struct { - // An expression. - Expressions *RecordCondition_Expressions `protobuf:"bytes,3,opt,name=expressions" json:"expressions,omitempty"` -} - -func (m *RecordCondition) Reset() { *m = RecordCondition{} } -func (m *RecordCondition) String() string { return proto.CompactTextString(m) } -func (*RecordCondition) ProtoMessage() {} -func (*RecordCondition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } - -func (m *RecordCondition) GetExpressions() *RecordCondition_Expressions { - if m != nil { - return m.Expressions - } - return nil -} - -// The field type of `value` and `field` do not need to match to be -// considered equal, but not all comparisons are possible. -// -// A `value` of type: -// -// - `string` can be compared against all other types -// - `boolean` can only be compared against other booleans -// - `integer` can be compared against doubles or a string if the string value -// can be parsed as an integer. -// - `double` can be compared against integers or a string if the string can -// be parsed as a double. -// - `Timestamp` can be compared against strings in RFC 3339 date string -// format. -// - `TimeOfDay` can be compared against timestamps and strings in the format -// of 'HH:mm:ss'. -// -// If we fail to compare do to type mismatch, a warning will be given and -// the condition will evaluate to false. -type RecordCondition_Condition struct { - // Field within the record this condition is evaluated against. [required] - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` - // Operator used to compare the field or infoType to the value. [required] - Operator RelationalOperator `protobuf:"varint,3,opt,name=operator,enum=google.privacy.dlp.v2beta2.RelationalOperator" json:"operator,omitempty"` - // Value to compare against. [Required, except for `EXISTS` tests.] - Value *Value `protobuf:"bytes,4,opt,name=value" json:"value,omitempty"` -} - -func (m *RecordCondition_Condition) Reset() { *m = RecordCondition_Condition{} } -func (m *RecordCondition_Condition) String() string { return proto.CompactTextString(m) } -func (*RecordCondition_Condition) ProtoMessage() {} -func (*RecordCondition_Condition) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51, 0} } - -func (m *RecordCondition_Condition) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -func (m *RecordCondition_Condition) GetOperator() RelationalOperator { - if m != nil { - return m.Operator - } - return RelationalOperator_RELATIONAL_OPERATOR_UNSPECIFIED -} - -func (m *RecordCondition_Condition) GetValue() *Value { - if m != nil { - return m.Value - } - return nil -} - -// A collection of conditions. -type RecordCondition_Conditions struct { - Conditions []*RecordCondition_Condition `protobuf:"bytes,1,rep,name=conditions" json:"conditions,omitempty"` -} - -func (m *RecordCondition_Conditions) Reset() { *m = RecordCondition_Conditions{} } -func (m *RecordCondition_Conditions) String() string { return proto.CompactTextString(m) } -func (*RecordCondition_Conditions) ProtoMessage() {} -func (*RecordCondition_Conditions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51, 1} } - -func (m *RecordCondition_Conditions) GetConditions() []*RecordCondition_Condition { - if m != nil { - return m.Conditions - } - return nil -} - -// An expression, consisting or an operator and conditions. -type RecordCondition_Expressions struct { - // The operator to apply to the result of conditions. Default and currently - // only supported value is `AND`. - LogicalOperator RecordCondition_Expressions_LogicalOperator `protobuf:"varint,1,opt,name=logical_operator,json=logicalOperator,enum=google.privacy.dlp.v2beta2.RecordCondition_Expressions_LogicalOperator" json:"logical_operator,omitempty"` - // Types that are valid to be assigned to Type: - // *RecordCondition_Expressions_Conditions - Type isRecordCondition_Expressions_Type `protobuf_oneof:"type"` -} - -func (m *RecordCondition_Expressions) Reset() { *m = RecordCondition_Expressions{} } -func (m *RecordCondition_Expressions) String() string { return proto.CompactTextString(m) } -func (*RecordCondition_Expressions) ProtoMessage() {} -func (*RecordCondition_Expressions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51, 2} } - -type isRecordCondition_Expressions_Type interface { - isRecordCondition_Expressions_Type() -} - -type RecordCondition_Expressions_Conditions struct { - Conditions *RecordCondition_Conditions `protobuf:"bytes,3,opt,name=conditions,oneof"` -} - -func (*RecordCondition_Expressions_Conditions) isRecordCondition_Expressions_Type() {} - -func (m *RecordCondition_Expressions) GetType() isRecordCondition_Expressions_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *RecordCondition_Expressions) GetLogicalOperator() RecordCondition_Expressions_LogicalOperator { - if m != nil { - return m.LogicalOperator - } - return RecordCondition_Expressions_LOGICAL_OPERATOR_UNSPECIFIED -} - -func (m *RecordCondition_Expressions) GetConditions() *RecordCondition_Conditions { - if x, ok := m.GetType().(*RecordCondition_Expressions_Conditions); ok { - return x.Conditions - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RecordCondition_Expressions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RecordCondition_Expressions_OneofMarshaler, _RecordCondition_Expressions_OneofUnmarshaler, _RecordCondition_Expressions_OneofSizer, []interface{}{ - (*RecordCondition_Expressions_Conditions)(nil), - } -} - -func _RecordCondition_Expressions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RecordCondition_Expressions) - // type - switch x := m.Type.(type) { - case *RecordCondition_Expressions_Conditions: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Conditions); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RecordCondition_Expressions.Type has unexpected type %T", x) - } - return nil -} - -func _RecordCondition_Expressions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RecordCondition_Expressions) - switch tag { - case 3: // type.conditions - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(RecordCondition_Conditions) - err := b.DecodeMessage(msg) - m.Type = &RecordCondition_Expressions_Conditions{msg} - return true, err - default: - return false, nil - } -} - -func _RecordCondition_Expressions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RecordCondition_Expressions) - // type - switch x := m.Type.(type) { - case *RecordCondition_Expressions_Conditions: - s := proto.Size(x.Conditions) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Overview of the modifications that occurred. -type TransformationOverview struct { - // Total size in bytes that were transformed in some way. - TransformedBytes int64 `protobuf:"varint,2,opt,name=transformed_bytes,json=transformedBytes" json:"transformed_bytes,omitempty"` - // Transformations applied to the dataset. - TransformationSummaries []*TransformationSummary `protobuf:"bytes,3,rep,name=transformation_summaries,json=transformationSummaries" json:"transformation_summaries,omitempty"` -} - -func (m *TransformationOverview) Reset() { *m = TransformationOverview{} } -func (m *TransformationOverview) String() string { return proto.CompactTextString(m) } -func (*TransformationOverview) ProtoMessage() {} -func (*TransformationOverview) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } - -func (m *TransformationOverview) GetTransformedBytes() int64 { - if m != nil { - return m.TransformedBytes - } - return 0 -} - -func (m *TransformationOverview) GetTransformationSummaries() []*TransformationSummary { - if m != nil { - return m.TransformationSummaries - } - return nil -} - -// Summary of a single tranformation. -// Only one of 'transformation', 'field_transformation', or 'record_suppress' -// will be set. -type TransformationSummary struct { - // Set if the transformation was limited to a specific info_type. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Set if the transformation was limited to a specific FieldId. - Field *FieldId `protobuf:"bytes,2,opt,name=field" json:"field,omitempty"` - // The specific transformation these stats apply to. - Transformation *PrimitiveTransformation `protobuf:"bytes,3,opt,name=transformation" json:"transformation,omitempty"` - // The field transformation that was applied. - // If multiple field transformations are requested for a single field, - // this list will contain all of them; otherwise, only one is supplied. - FieldTransformations []*FieldTransformation `protobuf:"bytes,5,rep,name=field_transformations,json=fieldTransformations" json:"field_transformations,omitempty"` - // The specific suppression option these stats apply to. - RecordSuppress *RecordSuppression `protobuf:"bytes,6,opt,name=record_suppress,json=recordSuppress" json:"record_suppress,omitempty"` - Results []*TransformationSummary_SummaryResult `protobuf:"bytes,4,rep,name=results" json:"results,omitempty"` - // Total size in bytes that were transformed in some way. - TransformedBytes int64 `protobuf:"varint,7,opt,name=transformed_bytes,json=transformedBytes" json:"transformed_bytes,omitempty"` -} - -func (m *TransformationSummary) Reset() { *m = TransformationSummary{} } -func (m *TransformationSummary) String() string { return proto.CompactTextString(m) } -func (*TransformationSummary) ProtoMessage() {} -func (*TransformationSummary) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } - -func (m *TransformationSummary) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *TransformationSummary) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -func (m *TransformationSummary) GetTransformation() *PrimitiveTransformation { - if m != nil { - return m.Transformation - } - return nil -} - -func (m *TransformationSummary) GetFieldTransformations() []*FieldTransformation { - if m != nil { - return m.FieldTransformations - } - return nil -} - -func (m *TransformationSummary) GetRecordSuppress() *RecordSuppression { - if m != nil { - return m.RecordSuppress - } - return nil -} - -func (m *TransformationSummary) GetResults() []*TransformationSummary_SummaryResult { - if m != nil { - return m.Results - } - return nil -} - -func (m *TransformationSummary) GetTransformedBytes() int64 { - if m != nil { - return m.TransformedBytes - } - return 0 -} - -// A collection that informs the user the number of times a particular -// `TransformationResultCode` and error details occurred. -type TransformationSummary_SummaryResult struct { - Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"` - Code TransformationSummary_TransformationResultCode `protobuf:"varint,2,opt,name=code,enum=google.privacy.dlp.v2beta2.TransformationSummary_TransformationResultCode" json:"code,omitempty"` - // A place for warnings or errors to show up if a transformation didn't - // work as expected. - Details string `protobuf:"bytes,3,opt,name=details" json:"details,omitempty"` -} - -func (m *TransformationSummary_SummaryResult) Reset() { *m = TransformationSummary_SummaryResult{} } -func (m *TransformationSummary_SummaryResult) String() string { return proto.CompactTextString(m) } -func (*TransformationSummary_SummaryResult) ProtoMessage() {} -func (*TransformationSummary_SummaryResult) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{53, 0} -} - -func (m *TransformationSummary_SummaryResult) GetCount() int64 { - if m != nil { - return m.Count - } - return 0 -} - -func (m *TransformationSummary_SummaryResult) GetCode() TransformationSummary_TransformationResultCode { - if m != nil { - return m.Code - } - return TransformationSummary_TRANSFORMATION_RESULT_CODE_UNSPECIFIED -} - -func (m *TransformationSummary_SummaryResult) GetDetails() string { - if m != nil { - return m.Details - } - return "" -} - -// The inspectTemplate contains a configuration (set of types of sensitive data -// to be detected) to be used anywhere you otherwise would normally specify -// InspectConfig. -type InspectTemplate struct { - // The template name. Output only. - // - // The template will have one of the following formats: - // `projects/PROJECT_ID/inspectTemplates/TEMPLATE_ID` OR - // `organizations/ORGANIZATION_ID/inspectTemplates/TEMPLATE_ID` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Display name (max 256 chars). - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Short description (max 256 chars). - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // The creation timestamp of a inspectTemplate, output only field. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The last update timestamp of a inspectTemplate, output only field. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // The core content of the template. Configuration of the scanning process. - InspectConfig *InspectConfig `protobuf:"bytes,6,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` -} - -func (m *InspectTemplate) Reset() { *m = InspectTemplate{} } -func (m *InspectTemplate) String() string { return proto.CompactTextString(m) } -func (*InspectTemplate) ProtoMessage() {} -func (*InspectTemplate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } - -func (m *InspectTemplate) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *InspectTemplate) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *InspectTemplate) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *InspectTemplate) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *InspectTemplate) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *InspectTemplate) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -// The DeidentifyTemplates contains instructions on how to deidentify content. -type DeidentifyTemplate struct { - // The template name. Output only. - // - // The template will have one of the following formats: - // `projects/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID` OR - // `organizations/ORGANIZATION_ID/deidentifyTemplates/TEMPLATE_ID` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Display name (max 256 chars). - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Short description (max 256 chars). - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - // The creation timestamp of a inspectTemplate, output only field. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // The last update timestamp of a inspectTemplate, output only field. - UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime" json:"update_time,omitempty"` - // ///////////// // The core content of the template // /////////////// - DeidentifyConfig *DeidentifyConfig `protobuf:"bytes,6,opt,name=deidentify_config,json=deidentifyConfig" json:"deidentify_config,omitempty"` -} - -func (m *DeidentifyTemplate) Reset() { *m = DeidentifyTemplate{} } -func (m *DeidentifyTemplate) String() string { return proto.CompactTextString(m) } -func (*DeidentifyTemplate) ProtoMessage() {} -func (*DeidentifyTemplate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } - -func (m *DeidentifyTemplate) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DeidentifyTemplate) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *DeidentifyTemplate) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *DeidentifyTemplate) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *DeidentifyTemplate) GetUpdateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.UpdateTime - } - return nil -} - -func (m *DeidentifyTemplate) GetDeidentifyConfig() *DeidentifyConfig { - if m != nil { - return m.DeidentifyConfig - } - return nil -} - -// Request message for CreateInspectTemplate. -type CreateInspectTemplateRequest struct { - // The parent resource name, for example projects/my-project-id or - // organizations/my-org-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The InspectTemplate to create. - InspectTemplate *InspectTemplate `protobuf:"bytes,2,opt,name=inspect_template,json=inspectTemplate" json:"inspect_template,omitempty"` - // The template id can contain uppercase and lowercase letters, - // numbers, and hyphens; that is, it must match the regular - // expression: `[a-zA-Z\\d-]+`. The maximum length is 100 - // characters. Can be empty to allow the system to generate one. - TemplateId string `protobuf:"bytes,3,opt,name=template_id,json=templateId" json:"template_id,omitempty"` -} - -func (m *CreateInspectTemplateRequest) Reset() { *m = CreateInspectTemplateRequest{} } -func (m *CreateInspectTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*CreateInspectTemplateRequest) ProtoMessage() {} -func (*CreateInspectTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } - -func (m *CreateInspectTemplateRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateInspectTemplateRequest) GetInspectTemplate() *InspectTemplate { - if m != nil { - return m.InspectTemplate - } - return nil -} - -func (m *CreateInspectTemplateRequest) GetTemplateId() string { - if m != nil { - return m.TemplateId - } - return "" -} - -// Request message for UpdateInspectTemplate. -type UpdateInspectTemplateRequest struct { - // Resource name of organization and inspectTemplate to be updated, for - // example `organizations/433245324/inspectTemplates/432452342`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // New InspectTemplate value. - InspectTemplate *InspectTemplate `protobuf:"bytes,2,opt,name=inspect_template,json=inspectTemplate" json:"inspect_template,omitempty"` - // Mask to control which fields get updated. - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateInspectTemplateRequest) Reset() { *m = UpdateInspectTemplateRequest{} } -func (m *UpdateInspectTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateInspectTemplateRequest) ProtoMessage() {} -func (*UpdateInspectTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } - -func (m *UpdateInspectTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateInspectTemplateRequest) GetInspectTemplate() *InspectTemplate { - if m != nil { - return m.InspectTemplate - } - return nil -} - -func (m *UpdateInspectTemplateRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request message for GetInspectTemplate. -type GetInspectTemplateRequest struct { - // Resource name of the organization and inspectTemplate to be read, for - // example `organizations/433245324/inspectTemplates/432452342`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetInspectTemplateRequest) Reset() { *m = GetInspectTemplateRequest{} } -func (m *GetInspectTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*GetInspectTemplateRequest) ProtoMessage() {} -func (*GetInspectTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } - -func (m *GetInspectTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for ListInspectTemplates. -type ListInspectTemplatesRequest struct { - // The parent resource name, for example projects/my-project-id or - // organizations/my-org-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional page token to continue retrieval. Comes from previous call - // to `ListInspectTemplates`. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional size of the page, can be limited by server. If zero server returns - // a page of max size 100. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListInspectTemplatesRequest) Reset() { *m = ListInspectTemplatesRequest{} } -func (m *ListInspectTemplatesRequest) String() string { return proto.CompactTextString(m) } -func (*ListInspectTemplatesRequest) ProtoMessage() {} -func (*ListInspectTemplatesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } - -func (m *ListInspectTemplatesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListInspectTemplatesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListInspectTemplatesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for ListInspectTemplates. -type ListInspectTemplatesResponse struct { - // List of inspectTemplates, up to page_size in ListInspectTemplatesRequest. - InspectTemplates []*InspectTemplate `protobuf:"bytes,1,rep,name=inspect_templates,json=inspectTemplates" json:"inspect_templates,omitempty"` - // If the next page is available then the next page token to be used - // in following ListInspectTemplates request. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListInspectTemplatesResponse) Reset() { *m = ListInspectTemplatesResponse{} } -func (m *ListInspectTemplatesResponse) String() string { return proto.CompactTextString(m) } -func (*ListInspectTemplatesResponse) ProtoMessage() {} -func (*ListInspectTemplatesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } - -func (m *ListInspectTemplatesResponse) GetInspectTemplates() []*InspectTemplate { - if m != nil { - return m.InspectTemplates - } - return nil -} - -func (m *ListInspectTemplatesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for DeleteInspectTemplate. -type DeleteInspectTemplateRequest struct { - // Resource name of the organization and inspectTemplate to be deleted, for - // example `organizations/433245324/inspectTemplates/432452342`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteInspectTemplateRequest) Reset() { *m = DeleteInspectTemplateRequest{} } -func (m *DeleteInspectTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteInspectTemplateRequest) ProtoMessage() {} -func (*DeleteInspectTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} } - -func (m *DeleteInspectTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type InspectJobConfig struct { - // The data to scan. - StorageConfig *StorageConfig `protobuf:"bytes,1,opt,name=storage_config,json=storageConfig" json:"storage_config,omitempty"` - // Where to put the findings. - OutputConfig *OutputStorageConfig `protobuf:"bytes,2,opt,name=output_config,json=outputConfig" json:"output_config,omitempty"` - // How and what to scan for. - InspectConfig *InspectConfig `protobuf:"bytes,3,opt,name=inspect_config,json=inspectConfig" json:"inspect_config,omitempty"` - // If provided, will be used as the default for all values in InspectConfig. - // `inspect_config` will be merged into the values persisted as part of the - // template. - InspectTemplateName string `protobuf:"bytes,4,opt,name=inspect_template_name,json=inspectTemplateName" json:"inspect_template_name,omitempty"` -} - -func (m *InspectJobConfig) Reset() { *m = InspectJobConfig{} } -func (m *InspectJobConfig) String() string { return proto.CompactTextString(m) } -func (*InspectJobConfig) ProtoMessage() {} -func (*InspectJobConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } - -func (m *InspectJobConfig) GetStorageConfig() *StorageConfig { - if m != nil { - return m.StorageConfig - } - return nil -} - -func (m *InspectJobConfig) GetOutputConfig() *OutputStorageConfig { - if m != nil { - return m.OutputConfig - } - return nil -} - -func (m *InspectJobConfig) GetInspectConfig() *InspectConfig { - if m != nil { - return m.InspectConfig - } - return nil -} - -func (m *InspectJobConfig) GetInspectTemplateName() string { - if m != nil { - return m.InspectTemplateName - } - return "" -} - -// Combines all of the information about a DLP job. -type DlpJob struct { - // The server-assigned name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The type of job. - Type DlpJobType `protobuf:"varint,2,opt,name=type,enum=google.privacy.dlp.v2beta2.DlpJobType" json:"type,omitempty"` - // State of a job. - State DlpJob_JobState `protobuf:"varint,3,opt,name=state,enum=google.privacy.dlp.v2beta2.DlpJob_JobState" json:"state,omitempty"` - // Types that are valid to be assigned to Details: - // *DlpJob_RiskDetails - // *DlpJob_InspectDetails - Details isDlpJob_Details `protobuf_oneof:"details"` - // Time when the job was created. - CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Time when the job started. - StartTime *google_protobuf1.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // Time when the job finished. - EndTime *google_protobuf1.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // A stream of errors encountered running the job. - ErrorResults []*google_rpc.Status `protobuf:"bytes,9,rep,name=error_results,json=errorResults" json:"error_results,omitempty"` -} - -func (m *DlpJob) Reset() { *m = DlpJob{} } -func (m *DlpJob) String() string { return proto.CompactTextString(m) } -func (*DlpJob) ProtoMessage() {} -func (*DlpJob) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} } - -type isDlpJob_Details interface { - isDlpJob_Details() -} - -type DlpJob_RiskDetails struct { - RiskDetails *AnalyzeDataSourceRiskDetails `protobuf:"bytes,4,opt,name=risk_details,json=riskDetails,oneof"` -} -type DlpJob_InspectDetails struct { - InspectDetails *InspectDataSourceDetails `protobuf:"bytes,5,opt,name=inspect_details,json=inspectDetails,oneof"` -} - -func (*DlpJob_RiskDetails) isDlpJob_Details() {} -func (*DlpJob_InspectDetails) isDlpJob_Details() {} - -func (m *DlpJob) GetDetails() isDlpJob_Details { - if m != nil { - return m.Details - } - return nil -} - -func (m *DlpJob) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *DlpJob) GetType() DlpJobType { - if m != nil { - return m.Type - } - return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED -} - -func (m *DlpJob) GetState() DlpJob_JobState { - if m != nil { - return m.State - } - return DlpJob_JOB_STATE_UNSPECIFIED -} - -func (m *DlpJob) GetRiskDetails() *AnalyzeDataSourceRiskDetails { - if x, ok := m.GetDetails().(*DlpJob_RiskDetails); ok { - return x.RiskDetails - } - return nil -} - -func (m *DlpJob) GetInspectDetails() *InspectDataSourceDetails { - if x, ok := m.GetDetails().(*DlpJob_InspectDetails); ok { - return x.InspectDetails - } - return nil -} - -func (m *DlpJob) GetCreateTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *DlpJob) GetStartTime() *google_protobuf1.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *DlpJob) GetEndTime() *google_protobuf1.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *DlpJob) GetErrorResults() []*google_rpc.Status { - if m != nil { - return m.ErrorResults - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*DlpJob) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _DlpJob_OneofMarshaler, _DlpJob_OneofUnmarshaler, _DlpJob_OneofSizer, []interface{}{ - (*DlpJob_RiskDetails)(nil), - (*DlpJob_InspectDetails)(nil), - } -} - -func _DlpJob_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*DlpJob) - // details - switch x := m.Details.(type) { - case *DlpJob_RiskDetails: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.RiskDetails); err != nil { - return err - } - case *DlpJob_InspectDetails: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InspectDetails); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("DlpJob.Details has unexpected type %T", x) - } - return nil -} - -func _DlpJob_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*DlpJob) - switch tag { - case 4: // details.risk_details - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AnalyzeDataSourceRiskDetails) - err := b.DecodeMessage(msg) - m.Details = &DlpJob_RiskDetails{msg} - return true, err - case 5: // details.inspect_details - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InspectDataSourceDetails) - err := b.DecodeMessage(msg) - m.Details = &DlpJob_InspectDetails{msg} - return true, err - default: - return false, nil - } -} - -func _DlpJob_OneofSizer(msg proto.Message) (n int) { - m := msg.(*DlpJob) - // details - switch x := m.Details.(type) { - case *DlpJob_RiskDetails: - s := proto.Size(x.RiskDetails) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *DlpJob_InspectDetails: - s := proto.Size(x.InspectDetails) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The request message for [DlpJobs.GetDlpJob][]. -type GetDlpJobRequest struct { - // The name of the DlpJob resource. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetDlpJobRequest) Reset() { *m = GetDlpJobRequest{} } -func (m *GetDlpJobRequest) String() string { return proto.CompactTextString(m) } -func (*GetDlpJobRequest) ProtoMessage() {} -func (*GetDlpJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } - -func (m *GetDlpJobRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for listing DLP jobs. -type ListDlpJobsRequest struct { - // The parent resource name, for example projects/my-project-id. - Parent string `protobuf:"bytes,4,opt,name=parent" json:"parent,omitempty"` - // Optional. Allows filtering. - // - // Supported syntax: - // - // * Filter expressions are made up of one or more restrictions. - // * Restrictions can be combined by `AND` or `OR` logical operators. A - // sequence of restrictions implicitly uses `AND`. - // * A restriction has the form of `<field> <operator> <value>`. - // * Supported fields/values for inspect jobs: - // - `state` - PENDING|RUNNING|CANCELED|FINISHED|FAILED - // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY - // * Supported fields for risk analysis jobs: - // - `state` - RUNNING|CANCELED|FINISHED|FAILED - // * The operator must be `=` or `!=`. - // - // Examples: - // - // * inspected_storage = cloud_storage AND state = done - // * inspected_storage = cloud_storage OR inspected_storage = bigquery - // * inspected_storage = cloud_storage AND (state = done OR state = canceled) - // - // The length of this field should be no more than 500 characters. - Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"` - // The standard list page size. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The standard list page token. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The type of job. Defaults to `DlpJobType.INSPECT` - Type DlpJobType `protobuf:"varint,5,opt,name=type,enum=google.privacy.dlp.v2beta2.DlpJobType" json:"type,omitempty"` -} - -func (m *ListDlpJobsRequest) Reset() { *m = ListDlpJobsRequest{} } -func (m *ListDlpJobsRequest) String() string { return proto.CompactTextString(m) } -func (*ListDlpJobsRequest) ProtoMessage() {} -func (*ListDlpJobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } - -func (m *ListDlpJobsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListDlpJobsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListDlpJobsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListDlpJobsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListDlpJobsRequest) GetType() DlpJobType { - if m != nil { - return m.Type - } - return DlpJobType_DLP_JOB_TYPE_UNSPECIFIED -} - -// The response message for listing DLP jobs. -type ListDlpJobsResponse struct { - // A list of DlpJobs that matches the specified filter in the request. - Jobs []*DlpJob `protobuf:"bytes,1,rep,name=jobs" json:"jobs,omitempty"` - // The standard List next-page token. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListDlpJobsResponse) Reset() { *m = ListDlpJobsResponse{} } -func (m *ListDlpJobsResponse) String() string { return proto.CompactTextString(m) } -func (*ListDlpJobsResponse) ProtoMessage() {} -func (*ListDlpJobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} } - -func (m *ListDlpJobsResponse) GetJobs() []*DlpJob { - if m != nil { - return m.Jobs - } - return nil -} - -func (m *ListDlpJobsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request message for canceling a DLP job. -type CancelDlpJobRequest struct { - // The name of the DlpJob resource to be cancelled. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *CancelDlpJobRequest) Reset() { *m = CancelDlpJobRequest{} } -func (m *CancelDlpJobRequest) String() string { return proto.CompactTextString(m) } -func (*CancelDlpJobRequest) ProtoMessage() {} -func (*CancelDlpJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} } - -func (m *CancelDlpJobRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request message for deleting a DLP job. -type DeleteDlpJobRequest struct { - // The name of the DlpJob resource to be deleted. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteDlpJobRequest) Reset() { *m = DeleteDlpJobRequest{} } -func (m *DeleteDlpJobRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteDlpJobRequest) ProtoMessage() {} -func (*DeleteDlpJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} } - -func (m *DeleteDlpJobRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for CreateDeidentifyTemplate. -type CreateDeidentifyTemplateRequest struct { - // The parent resource name, for example projects/my-project-id or - // organizations/my-org-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // The DeidentifyTemplate to create. - DeidentifyTemplate *DeidentifyTemplate `protobuf:"bytes,2,opt,name=deidentify_template,json=deidentifyTemplate" json:"deidentify_template,omitempty"` - // The template id can contain uppercase and lowercase letters, - // numbers, and hyphens; that is, it must match the regular - // expression: `[a-zA-Z\\d-]+`. The maximum length is 100 - // characters. Can be empty to allow the system to generate one. - TemplateId string `protobuf:"bytes,3,opt,name=template_id,json=templateId" json:"template_id,omitempty"` -} - -func (m *CreateDeidentifyTemplateRequest) Reset() { *m = CreateDeidentifyTemplateRequest{} } -func (m *CreateDeidentifyTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*CreateDeidentifyTemplateRequest) ProtoMessage() {} -func (*CreateDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{69} -} - -func (m *CreateDeidentifyTemplateRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateDeidentifyTemplateRequest) GetDeidentifyTemplate() *DeidentifyTemplate { - if m != nil { - return m.DeidentifyTemplate - } - return nil -} - -func (m *CreateDeidentifyTemplateRequest) GetTemplateId() string { - if m != nil { - return m.TemplateId - } - return "" -} - -// Request message for UpdateDeidentifyTemplate. -type UpdateDeidentifyTemplateRequest struct { - // Resource name of organization and deidentify template to be updated, for - // example `organizations/433245324/deidentifyTemplates/432452342`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // New DeidentifyTemplate value. - DeidentifyTemplate *DeidentifyTemplate `protobuf:"bytes,2,opt,name=deidentify_template,json=deidentifyTemplate" json:"deidentify_template,omitempty"` - // Mask to control which fields get updated. - UpdateMask *google_protobuf4.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateDeidentifyTemplateRequest) Reset() { *m = UpdateDeidentifyTemplateRequest{} } -func (m *UpdateDeidentifyTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateDeidentifyTemplateRequest) ProtoMessage() {} -func (*UpdateDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{70} -} - -func (m *UpdateDeidentifyTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateDeidentifyTemplateRequest) GetDeidentifyTemplate() *DeidentifyTemplate { - if m != nil { - return m.DeidentifyTemplate - } - return nil -} - -func (m *UpdateDeidentifyTemplateRequest) GetUpdateMask() *google_protobuf4.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request message for GetDeidentifyTemplate. -type GetDeidentifyTemplateRequest struct { - // Resource name of the organization and deidentify template to be read, for - // example `organizations/433245324/deidentifyTemplates/432452342`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetDeidentifyTemplateRequest) Reset() { *m = GetDeidentifyTemplateRequest{} } -func (m *GetDeidentifyTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*GetDeidentifyTemplateRequest) ProtoMessage() {} -func (*GetDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} } - -func (m *GetDeidentifyTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request message for ListDeidentifyTemplates. -type ListDeidentifyTemplatesRequest struct { - // The parent resource name, for example projects/my-project-id or - // organizations/my-org-id. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Optional page token to continue retrieval. Comes from previous call - // to `ListDeidentifyTemplates`. - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // Optional size of the page, can be limited by server. If zero server returns - // a page of max size 100. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` -} - -func (m *ListDeidentifyTemplatesRequest) Reset() { *m = ListDeidentifyTemplatesRequest{} } -func (m *ListDeidentifyTemplatesRequest) String() string { return proto.CompactTextString(m) } -func (*ListDeidentifyTemplatesRequest) ProtoMessage() {} -func (*ListDeidentifyTemplatesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} } - -func (m *ListDeidentifyTemplatesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListDeidentifyTemplatesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListDeidentifyTemplatesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -// Response message for ListDeidentifyTemplates. -type ListDeidentifyTemplatesResponse struct { - // List of deidentify templates, up to page_size in - // ListDeidentifyTemplatesRequest. - DeidentifyTemplates []*DeidentifyTemplate `protobuf:"bytes,1,rep,name=deidentify_templates,json=deidentifyTemplates" json:"deidentify_templates,omitempty"` - // If the next page is available then the next page token to be used - // in following ListDeidentifyTemplates request. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListDeidentifyTemplatesResponse) Reset() { *m = ListDeidentifyTemplatesResponse{} } -func (m *ListDeidentifyTemplatesResponse) String() string { return proto.CompactTextString(m) } -func (*ListDeidentifyTemplatesResponse) ProtoMessage() {} -func (*ListDeidentifyTemplatesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{73} -} - -func (m *ListDeidentifyTemplatesResponse) GetDeidentifyTemplates() []*DeidentifyTemplate { - if m != nil { - return m.DeidentifyTemplates - } - return nil -} - -func (m *ListDeidentifyTemplatesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request message for DeleteDeidentifyTemplate. -type DeleteDeidentifyTemplateRequest struct { - // Resource name of the organization and deidentify template to be deleted, - // for example `organizations/433245324/deidentifyTemplates/432452342`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteDeidentifyTemplateRequest) Reset() { *m = DeleteDeidentifyTemplateRequest{} } -func (m *DeleteDeidentifyTemplateRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteDeidentifyTemplateRequest) ProtoMessage() {} -func (*DeleteDeidentifyTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{74} -} - -func (m *DeleteDeidentifyTemplateRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*InspectConfig)(nil), "google.privacy.dlp.v2beta2.InspectConfig") - proto.RegisterType((*InspectConfig_FindingLimits)(nil), "google.privacy.dlp.v2beta2.InspectConfig.FindingLimits") - proto.RegisterType((*InspectConfig_FindingLimits_InfoTypeLimit)(nil), "google.privacy.dlp.v2beta2.InspectConfig.FindingLimits.InfoTypeLimit") - proto.RegisterType((*ContentItem)(nil), "google.privacy.dlp.v2beta2.ContentItem") - proto.RegisterType((*Table)(nil), "google.privacy.dlp.v2beta2.Table") - proto.RegisterType((*Table_Row)(nil), "google.privacy.dlp.v2beta2.Table.Row") - proto.RegisterType((*InspectResult)(nil), "google.privacy.dlp.v2beta2.InspectResult") - proto.RegisterType((*Finding)(nil), "google.privacy.dlp.v2beta2.Finding") - proto.RegisterType((*Location)(nil), "google.privacy.dlp.v2beta2.Location") - proto.RegisterType((*TableLocation)(nil), "google.privacy.dlp.v2beta2.TableLocation") - proto.RegisterType((*Range)(nil), "google.privacy.dlp.v2beta2.Range") - proto.RegisterType((*ImageLocation)(nil), "google.privacy.dlp.v2beta2.ImageLocation") - proto.RegisterType((*RedactImageRequest)(nil), "google.privacy.dlp.v2beta2.RedactImageRequest") - proto.RegisterType((*RedactImageRequest_ImageRedactionConfig)(nil), "google.privacy.dlp.v2beta2.RedactImageRequest.ImageRedactionConfig") - proto.RegisterType((*Color)(nil), "google.privacy.dlp.v2beta2.Color") - proto.RegisterType((*RedactImageResponse)(nil), "google.privacy.dlp.v2beta2.RedactImageResponse") - proto.RegisterType((*DeidentifyContentRequest)(nil), "google.privacy.dlp.v2beta2.DeidentifyContentRequest") - proto.RegisterType((*DeidentifyContentResponse)(nil), "google.privacy.dlp.v2beta2.DeidentifyContentResponse") - proto.RegisterType((*ReidentifyContentRequest)(nil), "google.privacy.dlp.v2beta2.ReidentifyContentRequest") - proto.RegisterType((*ReidentifyContentResponse)(nil), "google.privacy.dlp.v2beta2.ReidentifyContentResponse") - proto.RegisterType((*InspectContentRequest)(nil), "google.privacy.dlp.v2beta2.InspectContentRequest") - proto.RegisterType((*InspectContentResponse)(nil), "google.privacy.dlp.v2beta2.InspectContentResponse") - proto.RegisterType((*InspectDataSourceRequest)(nil), "google.privacy.dlp.v2beta2.InspectDataSourceRequest") - proto.RegisterType((*OutputStorageConfig)(nil), "google.privacy.dlp.v2beta2.OutputStorageConfig") - proto.RegisterType((*InfoTypeStatistics)(nil), "google.privacy.dlp.v2beta2.InfoTypeStatistics") - proto.RegisterType((*InspectDataSourceDetails)(nil), "google.privacy.dlp.v2beta2.InspectDataSourceDetails") - proto.RegisterType((*InspectDataSourceDetails_RequestedOptions)(nil), "google.privacy.dlp.v2beta2.InspectDataSourceDetails.RequestedOptions") - proto.RegisterType((*InspectDataSourceDetails_Result)(nil), "google.privacy.dlp.v2beta2.InspectDataSourceDetails.Result") - proto.RegisterType((*InfoTypeDescription)(nil), "google.privacy.dlp.v2beta2.InfoTypeDescription") - proto.RegisterType((*ListInfoTypesRequest)(nil), "google.privacy.dlp.v2beta2.ListInfoTypesRequest") - proto.RegisterType((*ListInfoTypesResponse)(nil), "google.privacy.dlp.v2beta2.ListInfoTypesResponse") - proto.RegisterType((*AnalyzeDataSourceRiskRequest)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskRequest") - proto.RegisterType((*RiskAnalysisJobConfig)(nil), "google.privacy.dlp.v2beta2.RiskAnalysisJobConfig") - proto.RegisterType((*PrivacyMetric)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric") - proto.RegisterType((*PrivacyMetric_NumericalStatsConfig)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric.NumericalStatsConfig") - proto.RegisterType((*PrivacyMetric_CategoricalStatsConfig)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric.CategoricalStatsConfig") - proto.RegisterType((*PrivacyMetric_KAnonymityConfig)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric.KAnonymityConfig") - proto.RegisterType((*PrivacyMetric_LDiversityConfig)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric.LDiversityConfig") - proto.RegisterType((*PrivacyMetric_KMapEstimationConfig)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric.KMapEstimationConfig") - proto.RegisterType((*PrivacyMetric_KMapEstimationConfig_TaggedField)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric.KMapEstimationConfig.TaggedField") - proto.RegisterType((*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable") - proto.RegisterType((*PrivacyMetric_KMapEstimationConfig_AuxiliaryTable_QuasiIdField)(nil), "google.privacy.dlp.v2beta2.PrivacyMetric.KMapEstimationConfig.AuxiliaryTable.QuasiIdField") - proto.RegisterType((*AnalyzeDataSourceRiskDetails)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_NumericalStatsResult)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.NumericalStatsResult") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_CategoricalStatsResult)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_CategoricalStatsResult_CategoricalStatsHistogramBucket)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.CategoricalStatsResult.CategoricalStatsHistogramBucket") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_KAnonymityResult)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.KAnonymityResult") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityEquivalenceClass)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityEquivalenceClass") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_KAnonymityResult_KAnonymityHistogramBucket)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.KAnonymityResult.KAnonymityHistogramBucket") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_LDiversityResult)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.LDiversityResult") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityEquivalenceClass)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityEquivalenceClass") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_LDiversityResult_LDiversityHistogramBucket)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.LDiversityResult.LDiversityHistogramBucket") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_KMapEstimationResult)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.KMapEstimationResult") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationQuasiIdValues)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationQuasiIdValues") - proto.RegisterType((*AnalyzeDataSourceRiskDetails_KMapEstimationResult_KMapEstimationHistogramBucket)(nil), "google.privacy.dlp.v2beta2.AnalyzeDataSourceRiskDetails.KMapEstimationResult.KMapEstimationHistogramBucket") - proto.RegisterType((*ValueFrequency)(nil), "google.privacy.dlp.v2beta2.ValueFrequency") - proto.RegisterType((*Value)(nil), "google.privacy.dlp.v2beta2.Value") - proto.RegisterType((*DeidentifyConfig)(nil), "google.privacy.dlp.v2beta2.DeidentifyConfig") - proto.RegisterType((*PrimitiveTransformation)(nil), "google.privacy.dlp.v2beta2.PrimitiveTransformation") - proto.RegisterType((*TimePartConfig)(nil), "google.privacy.dlp.v2beta2.TimePartConfig") - proto.RegisterType((*CryptoHashConfig)(nil), "google.privacy.dlp.v2beta2.CryptoHashConfig") - proto.RegisterType((*ReplaceValueConfig)(nil), "google.privacy.dlp.v2beta2.ReplaceValueConfig") - proto.RegisterType((*ReplaceWithInfoTypeConfig)(nil), "google.privacy.dlp.v2beta2.ReplaceWithInfoTypeConfig") - proto.RegisterType((*RedactConfig)(nil), "google.privacy.dlp.v2beta2.RedactConfig") - proto.RegisterType((*CharsToIgnore)(nil), "google.privacy.dlp.v2beta2.CharsToIgnore") - proto.RegisterType((*CharacterMaskConfig)(nil), "google.privacy.dlp.v2beta2.CharacterMaskConfig") - proto.RegisterType((*FixedSizeBucketingConfig)(nil), "google.privacy.dlp.v2beta2.FixedSizeBucketingConfig") - proto.RegisterType((*BucketingConfig)(nil), "google.privacy.dlp.v2beta2.BucketingConfig") - proto.RegisterType((*BucketingConfig_Bucket)(nil), "google.privacy.dlp.v2beta2.BucketingConfig.Bucket") - proto.RegisterType((*CryptoReplaceFfxFpeConfig)(nil), "google.privacy.dlp.v2beta2.CryptoReplaceFfxFpeConfig") - proto.RegisterType((*CryptoKey)(nil), "google.privacy.dlp.v2beta2.CryptoKey") - proto.RegisterType((*TransientCryptoKey)(nil), "google.privacy.dlp.v2beta2.TransientCryptoKey") - proto.RegisterType((*UnwrappedCryptoKey)(nil), "google.privacy.dlp.v2beta2.UnwrappedCryptoKey") - proto.RegisterType((*KmsWrappedCryptoKey)(nil), "google.privacy.dlp.v2beta2.KmsWrappedCryptoKey") - proto.RegisterType((*InfoTypeTransformations)(nil), "google.privacy.dlp.v2beta2.InfoTypeTransformations") - proto.RegisterType((*InfoTypeTransformations_InfoTypeTransformation)(nil), "google.privacy.dlp.v2beta2.InfoTypeTransformations.InfoTypeTransformation") - proto.RegisterType((*FieldTransformation)(nil), "google.privacy.dlp.v2beta2.FieldTransformation") - proto.RegisterType((*RecordTransformations)(nil), "google.privacy.dlp.v2beta2.RecordTransformations") - proto.RegisterType((*RecordSuppression)(nil), "google.privacy.dlp.v2beta2.RecordSuppression") - proto.RegisterType((*RecordCondition)(nil), "google.privacy.dlp.v2beta2.RecordCondition") - proto.RegisterType((*RecordCondition_Condition)(nil), "google.privacy.dlp.v2beta2.RecordCondition.Condition") - proto.RegisterType((*RecordCondition_Conditions)(nil), "google.privacy.dlp.v2beta2.RecordCondition.Conditions") - proto.RegisterType((*RecordCondition_Expressions)(nil), "google.privacy.dlp.v2beta2.RecordCondition.Expressions") - proto.RegisterType((*TransformationOverview)(nil), "google.privacy.dlp.v2beta2.TransformationOverview") - proto.RegisterType((*TransformationSummary)(nil), "google.privacy.dlp.v2beta2.TransformationSummary") - proto.RegisterType((*TransformationSummary_SummaryResult)(nil), "google.privacy.dlp.v2beta2.TransformationSummary.SummaryResult") - proto.RegisterType((*InspectTemplate)(nil), "google.privacy.dlp.v2beta2.InspectTemplate") - proto.RegisterType((*DeidentifyTemplate)(nil), "google.privacy.dlp.v2beta2.DeidentifyTemplate") - proto.RegisterType((*CreateInspectTemplateRequest)(nil), "google.privacy.dlp.v2beta2.CreateInspectTemplateRequest") - proto.RegisterType((*UpdateInspectTemplateRequest)(nil), "google.privacy.dlp.v2beta2.UpdateInspectTemplateRequest") - proto.RegisterType((*GetInspectTemplateRequest)(nil), "google.privacy.dlp.v2beta2.GetInspectTemplateRequest") - proto.RegisterType((*ListInspectTemplatesRequest)(nil), "google.privacy.dlp.v2beta2.ListInspectTemplatesRequest") - proto.RegisterType((*ListInspectTemplatesResponse)(nil), "google.privacy.dlp.v2beta2.ListInspectTemplatesResponse") - proto.RegisterType((*DeleteInspectTemplateRequest)(nil), "google.privacy.dlp.v2beta2.DeleteInspectTemplateRequest") - proto.RegisterType((*InspectJobConfig)(nil), "google.privacy.dlp.v2beta2.InspectJobConfig") - proto.RegisterType((*DlpJob)(nil), "google.privacy.dlp.v2beta2.DlpJob") - proto.RegisterType((*GetDlpJobRequest)(nil), "google.privacy.dlp.v2beta2.GetDlpJobRequest") - proto.RegisterType((*ListDlpJobsRequest)(nil), "google.privacy.dlp.v2beta2.ListDlpJobsRequest") - proto.RegisterType((*ListDlpJobsResponse)(nil), "google.privacy.dlp.v2beta2.ListDlpJobsResponse") - proto.RegisterType((*CancelDlpJobRequest)(nil), "google.privacy.dlp.v2beta2.CancelDlpJobRequest") - proto.RegisterType((*DeleteDlpJobRequest)(nil), "google.privacy.dlp.v2beta2.DeleteDlpJobRequest") - proto.RegisterType((*CreateDeidentifyTemplateRequest)(nil), "google.privacy.dlp.v2beta2.CreateDeidentifyTemplateRequest") - proto.RegisterType((*UpdateDeidentifyTemplateRequest)(nil), "google.privacy.dlp.v2beta2.UpdateDeidentifyTemplateRequest") - proto.RegisterType((*GetDeidentifyTemplateRequest)(nil), "google.privacy.dlp.v2beta2.GetDeidentifyTemplateRequest") - proto.RegisterType((*ListDeidentifyTemplatesRequest)(nil), "google.privacy.dlp.v2beta2.ListDeidentifyTemplatesRequest") - proto.RegisterType((*ListDeidentifyTemplatesResponse)(nil), "google.privacy.dlp.v2beta2.ListDeidentifyTemplatesResponse") - proto.RegisterType((*DeleteDeidentifyTemplateRequest)(nil), "google.privacy.dlp.v2beta2.DeleteDeidentifyTemplateRequest") - proto.RegisterEnum("google.privacy.dlp.v2beta2.InfoTypeSupportedBy", InfoTypeSupportedBy_name, InfoTypeSupportedBy_value) - proto.RegisterEnum("google.privacy.dlp.v2beta2.RelationalOperator", RelationalOperator_name, RelationalOperator_value) - proto.RegisterEnum("google.privacy.dlp.v2beta2.DlpJobType", DlpJobType_name, DlpJobType_value) - proto.RegisterEnum("google.privacy.dlp.v2beta2.TimePartConfig_TimePart", TimePartConfig_TimePart_name, TimePartConfig_TimePart_value) - proto.RegisterEnum("google.privacy.dlp.v2beta2.CharsToIgnore_CommonCharsToIgnore", CharsToIgnore_CommonCharsToIgnore_name, CharsToIgnore_CommonCharsToIgnore_value) - proto.RegisterEnum("google.privacy.dlp.v2beta2.CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet", CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_name, CryptoReplaceFfxFpeConfig_FfxCommonNativeAlphabet_value) - proto.RegisterEnum("google.privacy.dlp.v2beta2.RecordCondition_Expressions_LogicalOperator", RecordCondition_Expressions_LogicalOperator_name, RecordCondition_Expressions_LogicalOperator_value) - proto.RegisterEnum("google.privacy.dlp.v2beta2.TransformationSummary_TransformationResultCode", TransformationSummary_TransformationResultCode_name, TransformationSummary_TransformationResultCode_value) - proto.RegisterEnum("google.privacy.dlp.v2beta2.DlpJob_JobState", DlpJob_JobState_name, DlpJob_JobState_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for DlpService service - -type DlpServiceClient interface { - // Finds potentially sensitive info in content. - // This method has limits on input size, processing time, and output size. - // [How-to guide for text](/dlp/docs/inspecting-text), [How-to guide for - // images](/dlp/docs/inspecting-images) - InspectContent(ctx context.Context, in *InspectContentRequest, opts ...grpc.CallOption) (*InspectContentResponse, error) - // Redacts potentially sensitive info from an image. - // This method has limits on input size, processing time, and output size. - // [How-to guide](/dlp/docs/redacting-sensitive-data-images) - RedactImage(ctx context.Context, in *RedactImageRequest, opts ...grpc.CallOption) (*RedactImageResponse, error) - // De-identifies potentially sensitive info from a ContentItem. - // This method has limits on input size and output size. - // [How-to guide](/dlp/docs/deidentify-sensitive-data) - DeidentifyContent(ctx context.Context, in *DeidentifyContentRequest, opts ...grpc.CallOption) (*DeidentifyContentResponse, error) - // Re-identify content that has been de-identified. - ReidentifyContent(ctx context.Context, in *ReidentifyContentRequest, opts ...grpc.CallOption) (*ReidentifyContentResponse, error) - // Schedules a job scanning content in a Google Cloud Platform data - // repository. [How-to guide](/dlp/docs/inspecting-storage) - InspectDataSource(ctx context.Context, in *InspectDataSourceRequest, opts ...grpc.CallOption) (*DlpJob, error) - // Schedules a job to compute risk analysis metrics over content in a Google - // Cloud Platform repository. [How-to guide}(/dlp/docs/compute-risk-analysis) - AnalyzeDataSourceRisk(ctx context.Context, in *AnalyzeDataSourceRiskRequest, opts ...grpc.CallOption) (*DlpJob, error) - // Returns sensitive information types DLP supports. - ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error) - // Creates an inspect template for re-using frequently used configuration - // for inspecting content, images, and storage. - CreateInspectTemplate(ctx context.Context, in *CreateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) - // Updates the inspect template. - UpdateInspectTemplate(ctx context.Context, in *UpdateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) - // Gets an inspect template. - GetInspectTemplate(ctx context.Context, in *GetInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) - // Lists inspect templates. - ListInspectTemplates(ctx context.Context, in *ListInspectTemplatesRequest, opts ...grpc.CallOption) (*ListInspectTemplatesResponse, error) - // Deletes inspect templates. - DeleteInspectTemplate(ctx context.Context, in *DeleteInspectTemplateRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Creates an Deidentify template for re-using frequently used configuration - // for Deidentifying content, images, and storage. - CreateDeidentifyTemplate(ctx context.Context, in *CreateDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) - // Updates the inspect template. - UpdateDeidentifyTemplate(ctx context.Context, in *UpdateDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) - // Gets an inspect template. - GetDeidentifyTemplate(ctx context.Context, in *GetDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) - // Lists inspect templates. - ListDeidentifyTemplates(ctx context.Context, in *ListDeidentifyTemplatesRequest, opts ...grpc.CallOption) (*ListDeidentifyTemplatesResponse, error) - // Deletes inspect templates. - DeleteDeidentifyTemplate(ctx context.Context, in *DeleteDeidentifyTemplateRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Lists DlpJobs that match the specified filter in the request. - ListDlpJobs(ctx context.Context, in *ListDlpJobsRequest, opts ...grpc.CallOption) (*ListDlpJobsResponse, error) - // Gets the latest state of a long-running DlpJob. - GetDlpJob(ctx context.Context, in *GetDlpJobRequest, opts ...grpc.CallOption) (*DlpJob, error) - // Deletes a long-running DlpJob. This method indicates that the client is - // no longer interested in the DlpJob result. The job will be cancelled if - // possible. - DeleteDlpJob(ctx context.Context, in *DeleteDlpJobRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) - // Starts asynchronous cancellation on a long-running DlpJob. The server - // makes a best effort to cancel the DlpJob, but success is not - // guaranteed. - CancelDlpJob(ctx context.Context, in *CancelDlpJobRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) -} - -type dlpServiceClient struct { - cc *grpc.ClientConn -} - -func NewDlpServiceClient(cc *grpc.ClientConn) DlpServiceClient { - return &dlpServiceClient{cc} -} - -func (c *dlpServiceClient) InspectContent(ctx context.Context, in *InspectContentRequest, opts ...grpc.CallOption) (*InspectContentResponse, error) { - out := new(InspectContentResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/InspectContent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) RedactImage(ctx context.Context, in *RedactImageRequest, opts ...grpc.CallOption) (*RedactImageResponse, error) { - out := new(RedactImageResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/RedactImage", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) DeidentifyContent(ctx context.Context, in *DeidentifyContentRequest, opts ...grpc.CallOption) (*DeidentifyContentResponse, error) { - out := new(DeidentifyContentResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/DeidentifyContent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) ReidentifyContent(ctx context.Context, in *ReidentifyContentRequest, opts ...grpc.CallOption) (*ReidentifyContentResponse, error) { - out := new(ReidentifyContentResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/ReidentifyContent", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) InspectDataSource(ctx context.Context, in *InspectDataSourceRequest, opts ...grpc.CallOption) (*DlpJob, error) { - out := new(DlpJob) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/InspectDataSource", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) AnalyzeDataSourceRisk(ctx context.Context, in *AnalyzeDataSourceRiskRequest, opts ...grpc.CallOption) (*DlpJob, error) { - out := new(DlpJob) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/AnalyzeDataSourceRisk", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) ListInfoTypes(ctx context.Context, in *ListInfoTypesRequest, opts ...grpc.CallOption) (*ListInfoTypesResponse, error) { - out := new(ListInfoTypesResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/ListInfoTypes", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) CreateInspectTemplate(ctx context.Context, in *CreateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) { - out := new(InspectTemplate) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/CreateInspectTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) UpdateInspectTemplate(ctx context.Context, in *UpdateInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) { - out := new(InspectTemplate) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/UpdateInspectTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) GetInspectTemplate(ctx context.Context, in *GetInspectTemplateRequest, opts ...grpc.CallOption) (*InspectTemplate, error) { - out := new(InspectTemplate) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/GetInspectTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) ListInspectTemplates(ctx context.Context, in *ListInspectTemplatesRequest, opts ...grpc.CallOption) (*ListInspectTemplatesResponse, error) { - out := new(ListInspectTemplatesResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/ListInspectTemplates", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) DeleteInspectTemplate(ctx context.Context, in *DeleteInspectTemplateRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/DeleteInspectTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) CreateDeidentifyTemplate(ctx context.Context, in *CreateDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) { - out := new(DeidentifyTemplate) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/CreateDeidentifyTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) UpdateDeidentifyTemplate(ctx context.Context, in *UpdateDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) { - out := new(DeidentifyTemplate) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/UpdateDeidentifyTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) GetDeidentifyTemplate(ctx context.Context, in *GetDeidentifyTemplateRequest, opts ...grpc.CallOption) (*DeidentifyTemplate, error) { - out := new(DeidentifyTemplate) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/GetDeidentifyTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) ListDeidentifyTemplates(ctx context.Context, in *ListDeidentifyTemplatesRequest, opts ...grpc.CallOption) (*ListDeidentifyTemplatesResponse, error) { - out := new(ListDeidentifyTemplatesResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/ListDeidentifyTemplates", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) DeleteDeidentifyTemplate(ctx context.Context, in *DeleteDeidentifyTemplateRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/DeleteDeidentifyTemplate", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) ListDlpJobs(ctx context.Context, in *ListDlpJobsRequest, opts ...grpc.CallOption) (*ListDlpJobsResponse, error) { - out := new(ListDlpJobsResponse) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/ListDlpJobs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) GetDlpJob(ctx context.Context, in *GetDlpJobRequest, opts ...grpc.CallOption) (*DlpJob, error) { - out := new(DlpJob) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/GetDlpJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) DeleteDlpJob(ctx context.Context, in *DeleteDlpJobRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/DeleteDlpJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *dlpServiceClient) CancelDlpJob(ctx context.Context, in *CancelDlpJobRequest, opts ...grpc.CallOption) (*google_protobuf3.Empty, error) { - out := new(google_protobuf3.Empty) - err := grpc.Invoke(ctx, "/google.privacy.dlp.v2beta2.DlpService/CancelDlpJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for DlpService service - -type DlpServiceServer interface { - // Finds potentially sensitive info in content. - // This method has limits on input size, processing time, and output size. - // [How-to guide for text](/dlp/docs/inspecting-text), [How-to guide for - // images](/dlp/docs/inspecting-images) - InspectContent(context.Context, *InspectContentRequest) (*InspectContentResponse, error) - // Redacts potentially sensitive info from an image. - // This method has limits on input size, processing time, and output size. - // [How-to guide](/dlp/docs/redacting-sensitive-data-images) - RedactImage(context.Context, *RedactImageRequest) (*RedactImageResponse, error) - // De-identifies potentially sensitive info from a ContentItem. - // This method has limits on input size and output size. - // [How-to guide](/dlp/docs/deidentify-sensitive-data) - DeidentifyContent(context.Context, *DeidentifyContentRequest) (*DeidentifyContentResponse, error) - // Re-identify content that has been de-identified. - ReidentifyContent(context.Context, *ReidentifyContentRequest) (*ReidentifyContentResponse, error) - // Schedules a job scanning content in a Google Cloud Platform data - // repository. [How-to guide](/dlp/docs/inspecting-storage) - InspectDataSource(context.Context, *InspectDataSourceRequest) (*DlpJob, error) - // Schedules a job to compute risk analysis metrics over content in a Google - // Cloud Platform repository. [How-to guide}(/dlp/docs/compute-risk-analysis) - AnalyzeDataSourceRisk(context.Context, *AnalyzeDataSourceRiskRequest) (*DlpJob, error) - // Returns sensitive information types DLP supports. - ListInfoTypes(context.Context, *ListInfoTypesRequest) (*ListInfoTypesResponse, error) - // Creates an inspect template for re-using frequently used configuration - // for inspecting content, images, and storage. - CreateInspectTemplate(context.Context, *CreateInspectTemplateRequest) (*InspectTemplate, error) - // Updates the inspect template. - UpdateInspectTemplate(context.Context, *UpdateInspectTemplateRequest) (*InspectTemplate, error) - // Gets an inspect template. - GetInspectTemplate(context.Context, *GetInspectTemplateRequest) (*InspectTemplate, error) - // Lists inspect templates. - ListInspectTemplates(context.Context, *ListInspectTemplatesRequest) (*ListInspectTemplatesResponse, error) - // Deletes inspect templates. - DeleteInspectTemplate(context.Context, *DeleteInspectTemplateRequest) (*google_protobuf3.Empty, error) - // Creates an Deidentify template for re-using frequently used configuration - // for Deidentifying content, images, and storage. - CreateDeidentifyTemplate(context.Context, *CreateDeidentifyTemplateRequest) (*DeidentifyTemplate, error) - // Updates the inspect template. - UpdateDeidentifyTemplate(context.Context, *UpdateDeidentifyTemplateRequest) (*DeidentifyTemplate, error) - // Gets an inspect template. - GetDeidentifyTemplate(context.Context, *GetDeidentifyTemplateRequest) (*DeidentifyTemplate, error) - // Lists inspect templates. - ListDeidentifyTemplates(context.Context, *ListDeidentifyTemplatesRequest) (*ListDeidentifyTemplatesResponse, error) - // Deletes inspect templates. - DeleteDeidentifyTemplate(context.Context, *DeleteDeidentifyTemplateRequest) (*google_protobuf3.Empty, error) - // Lists DlpJobs that match the specified filter in the request. - ListDlpJobs(context.Context, *ListDlpJobsRequest) (*ListDlpJobsResponse, error) - // Gets the latest state of a long-running DlpJob. - GetDlpJob(context.Context, *GetDlpJobRequest) (*DlpJob, error) - // Deletes a long-running DlpJob. This method indicates that the client is - // no longer interested in the DlpJob result. The job will be cancelled if - // possible. - DeleteDlpJob(context.Context, *DeleteDlpJobRequest) (*google_protobuf3.Empty, error) - // Starts asynchronous cancellation on a long-running DlpJob. The server - // makes a best effort to cancel the DlpJob, but success is not - // guaranteed. - CancelDlpJob(context.Context, *CancelDlpJobRequest) (*google_protobuf3.Empty, error) -} - -func RegisterDlpServiceServer(s *grpc.Server, srv DlpServiceServer) { - s.RegisterService(&_DlpService_serviceDesc, srv) -} - -func _DlpService_InspectContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(InspectContentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).InspectContent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/InspectContent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).InspectContent(ctx, req.(*InspectContentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_RedactImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RedactImageRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).RedactImage(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/RedactImage", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).RedactImage(ctx, req.(*RedactImageRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_DeidentifyContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeidentifyContentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).DeidentifyContent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/DeidentifyContent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).DeidentifyContent(ctx, req.(*DeidentifyContentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_ReidentifyContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReidentifyContentRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).ReidentifyContent(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/ReidentifyContent", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).ReidentifyContent(ctx, req.(*ReidentifyContentRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_InspectDataSource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(InspectDataSourceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).InspectDataSource(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/InspectDataSource", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).InspectDataSource(ctx, req.(*InspectDataSourceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_AnalyzeDataSourceRisk_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnalyzeDataSourceRiskRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).AnalyzeDataSourceRisk(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/AnalyzeDataSourceRisk", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).AnalyzeDataSourceRisk(ctx, req.(*AnalyzeDataSourceRiskRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_ListInfoTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInfoTypesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).ListInfoTypes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/ListInfoTypes", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).ListInfoTypes(ctx, req.(*ListInfoTypesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_CreateInspectTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateInspectTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).CreateInspectTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/CreateInspectTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).CreateInspectTemplate(ctx, req.(*CreateInspectTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_UpdateInspectTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateInspectTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).UpdateInspectTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/UpdateInspectTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).UpdateInspectTemplate(ctx, req.(*UpdateInspectTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_GetInspectTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetInspectTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).GetInspectTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/GetInspectTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).GetInspectTemplate(ctx, req.(*GetInspectTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_ListInspectTemplates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInspectTemplatesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).ListInspectTemplates(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/ListInspectTemplates", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).ListInspectTemplates(ctx, req.(*ListInspectTemplatesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_DeleteInspectTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteInspectTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).DeleteInspectTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/DeleteInspectTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).DeleteInspectTemplate(ctx, req.(*DeleteInspectTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_CreateDeidentifyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateDeidentifyTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).CreateDeidentifyTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/CreateDeidentifyTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).CreateDeidentifyTemplate(ctx, req.(*CreateDeidentifyTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_UpdateDeidentifyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateDeidentifyTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).UpdateDeidentifyTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/UpdateDeidentifyTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).UpdateDeidentifyTemplate(ctx, req.(*UpdateDeidentifyTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_GetDeidentifyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDeidentifyTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).GetDeidentifyTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/GetDeidentifyTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).GetDeidentifyTemplate(ctx, req.(*GetDeidentifyTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_ListDeidentifyTemplates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDeidentifyTemplatesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).ListDeidentifyTemplates(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/ListDeidentifyTemplates", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).ListDeidentifyTemplates(ctx, req.(*ListDeidentifyTemplatesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_DeleteDeidentifyTemplate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteDeidentifyTemplateRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).DeleteDeidentifyTemplate(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/DeleteDeidentifyTemplate", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).DeleteDeidentifyTemplate(ctx, req.(*DeleteDeidentifyTemplateRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_ListDlpJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDlpJobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).ListDlpJobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/ListDlpJobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).ListDlpJobs(ctx, req.(*ListDlpJobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_GetDlpJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDlpJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).GetDlpJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/GetDlpJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).GetDlpJob(ctx, req.(*GetDlpJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_DeleteDlpJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteDlpJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).DeleteDlpJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/DeleteDlpJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).DeleteDlpJob(ctx, req.(*DeleteDlpJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DlpService_CancelDlpJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CancelDlpJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DlpServiceServer).CancelDlpJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.privacy.dlp.v2beta2.DlpService/CancelDlpJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DlpServiceServer).CancelDlpJob(ctx, req.(*CancelDlpJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _DlpService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.privacy.dlp.v2beta2.DlpService", - HandlerType: (*DlpServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "InspectContent", - Handler: _DlpService_InspectContent_Handler, - }, - { - MethodName: "RedactImage", - Handler: _DlpService_RedactImage_Handler, - }, - { - MethodName: "DeidentifyContent", - Handler: _DlpService_DeidentifyContent_Handler, - }, - { - MethodName: "ReidentifyContent", - Handler: _DlpService_ReidentifyContent_Handler, - }, - { - MethodName: "InspectDataSource", - Handler: _DlpService_InspectDataSource_Handler, - }, - { - MethodName: "AnalyzeDataSourceRisk", - Handler: _DlpService_AnalyzeDataSourceRisk_Handler, - }, - { - MethodName: "ListInfoTypes", - Handler: _DlpService_ListInfoTypes_Handler, - }, - { - MethodName: "CreateInspectTemplate", - Handler: _DlpService_CreateInspectTemplate_Handler, - }, - { - MethodName: "UpdateInspectTemplate", - Handler: _DlpService_UpdateInspectTemplate_Handler, - }, - { - MethodName: "GetInspectTemplate", - Handler: _DlpService_GetInspectTemplate_Handler, - }, - { - MethodName: "ListInspectTemplates", - Handler: _DlpService_ListInspectTemplates_Handler, - }, - { - MethodName: "DeleteInspectTemplate", - Handler: _DlpService_DeleteInspectTemplate_Handler, - }, - { - MethodName: "CreateDeidentifyTemplate", - Handler: _DlpService_CreateDeidentifyTemplate_Handler, - }, - { - MethodName: "UpdateDeidentifyTemplate", - Handler: _DlpService_UpdateDeidentifyTemplate_Handler, - }, - { - MethodName: "GetDeidentifyTemplate", - Handler: _DlpService_GetDeidentifyTemplate_Handler, - }, - { - MethodName: "ListDeidentifyTemplates", - Handler: _DlpService_ListDeidentifyTemplates_Handler, - }, - { - MethodName: "DeleteDeidentifyTemplate", - Handler: _DlpService_DeleteDeidentifyTemplate_Handler, - }, - { - MethodName: "ListDlpJobs", - Handler: _DlpService_ListDlpJobs_Handler, - }, - { - MethodName: "GetDlpJob", - Handler: _DlpService_GetDlpJob_Handler, - }, - { - MethodName: "DeleteDlpJob", - Handler: _DlpService_DeleteDlpJob_Handler, - }, - { - MethodName: "CancelDlpJob", - Handler: _DlpService_CancelDlpJob_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/privacy/dlp/v2beta2/dlp.proto", -} - -func init() { proto.RegisterFile("google/privacy/dlp/v2beta2/dlp.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 6587 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x6b, 0x6c, 0x1b, 0xd9, - 0x75, 0xb0, 0x86, 0x14, 0x25, 0xf2, 0x90, 0x94, 0xa8, 0xab, 0x87, 0x65, 0xda, 0x5e, 0x7b, 0x67, - 0x77, 0x1d, 0xaf, 0x77, 0x23, 0x65, 0xb5, 0xeb, 0x38, 0x6b, 0x7f, 0xde, 0x2c, 0x45, 0xd1, 0x96, - 0x6c, 0x49, 0xd4, 0x0e, 0x29, 0xaf, 0x9d, 0xdd, 0x6f, 0xe7, 0x1b, 0x91, 0x57, 0xd4, 0xac, 0xc8, - 0x19, 0x7a, 0x66, 0x68, 0x49, 0x9b, 0x2f, 0x5f, 0xbe, 0xb6, 0x48, 0x91, 0x34, 0x40, 0x1f, 0x48, - 0x80, 0x2d, 0x90, 0x02, 0x49, 0x80, 0x04, 0x48, 0x82, 0x22, 0x7d, 0xa4, 0x68, 0xd1, 0x3c, 0x80, - 0x34, 0x41, 0xd1, 0xf7, 0x8f, 0x22, 0x40, 0x81, 0xa2, 0x28, 0x5a, 0xb4, 0x05, 0x8a, 0x3e, 0x50, - 0x14, 0xfd, 0xd1, 0x7f, 0x05, 0x8a, 0xfb, 0x98, 0x27, 0x87, 0x43, 0x52, 0x92, 0xd1, 0x36, 0xff, - 0x38, 0xe7, 0x9e, 0x73, 0xee, 0xb9, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0xe7, 0x3e, 0x08, 0xcf, 0x36, - 0x74, 0xbd, 0xd1, 0xc4, 0x8b, 0x6d, 0x43, 0x7d, 0xac, 0xd4, 0x8e, 0x16, 0xeb, 0xcd, 0xf6, 0xe2, - 0xe3, 0xa5, 0x1d, 0x6c, 0x29, 0x4b, 0xe4, 0xf7, 0x42, 0xdb, 0xd0, 0x2d, 0x1d, 0xe5, 0x19, 0xd6, - 0x02, 0xc7, 0x5a, 0x20, 0x25, 0x1c, 0x2b, 0x7f, 0x9e, 0x73, 0x50, 0xda, 0xea, 0xa2, 0xa2, 0x69, - 0xba, 0xa5, 0x58, 0xaa, 0xae, 0x99, 0x8c, 0x32, 0x7f, 0x25, 0x82, 0xbf, 0x69, 0xe9, 0x86, 0xd2, - 0xc0, 0x1c, 0xf3, 0x29, 0x07, 0x53, 0xb7, 0xf4, 0x9d, 0xce, 0xee, 0x62, 0xbd, 0x63, 0x50, 0x56, - 0xbc, 0xfc, 0x5c, 0xb0, 0x1c, 0xb7, 0xda, 0xd6, 0x11, 0x2f, 0xbc, 0x14, 0x2c, 0xdc, 0x55, 0x71, - 0xb3, 0x2e, 0xb7, 0x14, 0x73, 0x9f, 0x63, 0x5c, 0x0c, 0x62, 0x58, 0x6a, 0x0b, 0x9b, 0x96, 0xd2, - 0xe2, 0x6d, 0xcc, 0x9f, 0xe1, 0x08, 0x46, 0xbb, 0xb6, 0x68, 0x5a, 0x8a, 0xd5, 0xb1, 0x9b, 0x30, - 0xc7, 0x0b, 0xac, 0xa3, 0x36, 0x5e, 0xac, 0x2b, 0x16, 0x0e, 0x08, 0xc4, 0xe1, 0x47, 0xfa, 0xee, - 0x01, 0xc6, 0xfb, 0x61, 0x85, 0xa4, 0x2a, 0x7d, 0xb7, 0xae, 0x70, 0x69, 0xc5, 0x5f, 0x1c, 0x83, - 0xec, 0x9a, 0x66, 0xb6, 0x71, 0xcd, 0x2a, 0xea, 0xda, 0xae, 0xda, 0x40, 0x45, 0x00, 0x55, 0xdb, - 0xd5, 0x65, 0x82, 0x6e, 0xce, 0x0b, 0x97, 0xe2, 0x57, 0xd2, 0x4b, 0xcf, 0x2e, 0xf4, 0xd6, 0xfa, - 0xc2, 0x9a, 0xb6, 0xab, 0x57, 0x8f, 0xda, 0x58, 0x4a, 0xa9, 0xfc, 0x97, 0x89, 0x36, 0x60, 0xa2, - 0xa5, 0x6a, 0x72, 0x53, 0xdd, 0xc7, 0x4d, 0x75, 0x4f, 0xd7, 0xeb, 0xf3, 0xb1, 0x4b, 0xc2, 0x95, - 0x89, 0xa5, 0xcb, 0x51, 0x8c, 0xd6, 0x1d, 0x6c, 0x29, 0xdb, 0x52, 0x35, 0xf7, 0x13, 0x95, 0x61, - 0xac, 0xa9, 0xb6, 0x54, 0xcb, 0x9c, 0x8f, 0x5f, 0x12, 0xae, 0xa4, 0x97, 0xae, 0x47, 0xcb, 0xe3, - 0x69, 0xce, 0xc2, 0x6d, 0x55, 0xab, 0xab, 0x5a, 0x63, 0x9d, 0x92, 0x4b, 0x9c, 0x0d, 0x7a, 0x06, - 0xb2, 0xaa, 0x56, 0x6b, 0x76, 0xea, 0x58, 0x7e, 0xd4, 0xd1, 0x2d, 0x3c, 0x3f, 0x7a, 0x49, 0xb8, - 0x92, 0x94, 0x32, 0x1c, 0xf8, 0x06, 0x81, 0xa1, 0x17, 0x01, 0xe1, 0x43, 0x86, 0xe4, 0xd1, 0x48, - 0x82, 0x62, 0xe6, 0x78, 0xc9, 0x9a, 0xd3, 0xe4, 0xfb, 0x30, 0x55, 0xeb, 0x98, 0x96, 0xde, 0xf2, - 0x22, 0x8f, 0x51, 0xf5, 0x5d, 0x8d, 0x12, 0xb7, 0x48, 0x89, 0x1c, 0x25, 0x4e, 0xd6, 0x7c, 0xdf, - 0x66, 0xfe, 0xdf, 0x63, 0x90, 0xf5, 0x35, 0x02, 0xbd, 0x04, 0xb3, 0x2d, 0xe5, 0x50, 0xde, 0x65, - 0x40, 0x53, 0x6e, 0x63, 0x43, 0x56, 0x2d, 0xdc, 0x9a, 0x17, 0x2e, 0x09, 0x57, 0x12, 0x12, 0x6a, - 0x29, 0x87, 0x9c, 0xc0, 0xdc, 0xc2, 0xc6, 0x9a, 0x85, 0x5b, 0xe8, 0x3a, 0xcc, 0x77, 0x91, 0x18, - 0xf8, 0x51, 0x07, 0x9b, 0x16, 0xed, 0x99, 0x84, 0x34, 0xeb, 0xa7, 0x92, 0x58, 0x21, 0xfa, 0x09, - 0x01, 0xf2, 0xdd, 0x95, 0xd9, 0x0d, 0x9c, 0x8f, 0xd3, 0xf6, 0x95, 0x8e, 0xd9, 0x1d, 0x8e, 0xe9, - 0xd0, 0x4f, 0x69, 0x2e, 0x20, 0x38, 0x2f, 0xcc, 0x77, 0x88, 0x89, 0x7a, 0x10, 0x51, 0x01, 0x52, - 0xae, 0x08, 0x02, 0xb5, 0x88, 0xc1, 0x2c, 0x34, 0x69, 0x5b, 0x28, 0x7a, 0x1a, 0x32, 0xde, 0x66, - 0x71, 0x25, 0xa4, 0x3d, 0x12, 0x88, 0xef, 0x0b, 0x90, 0x2e, 0xea, 0x9a, 0x85, 0x35, 0x8b, 0xea, - 0x10, 0xc1, 0xa8, 0x53, 0x61, 0x4a, 0xa2, 0xbf, 0xd1, 0x0c, 0x8c, 0xd6, 0x15, 0x4b, 0xa1, 0xe4, - 0x99, 0xd5, 0x11, 0x89, 0x7e, 0xa1, 0x39, 0x48, 0x3c, 0x56, 0x9a, 0x1d, 0x4c, 0xad, 0x35, 0xb5, - 0x3a, 0x22, 0xb1, 0x4f, 0xf4, 0x2a, 0x24, 0x2c, 0x65, 0xa7, 0xc9, 0xac, 0x2d, 0xbd, 0xf4, 0x74, - 0x94, 0xcc, 0x55, 0x82, 0x48, 0x48, 0x29, 0xc5, 0x72, 0x1a, 0x52, 0x84, 0x35, 0xed, 0x67, 0xf1, - 0x87, 0x02, 0x24, 0x68, 0x39, 0xba, 0x05, 0xe3, 0x7b, 0x58, 0xa9, 0x63, 0xc3, 0x1e, 0xa9, 0xcf, - 0x44, 0xf1, 0xbc, 0x4d, 0x3c, 0xd1, 0x5a, 0x5d, 0xb2, 0x69, 0xd0, 0xab, 0x30, 0x6a, 0xe8, 0x07, - 0xa4, 0xf5, 0x84, 0xf6, 0xb9, 0xbe, 0xf2, 0x2c, 0x48, 0xfa, 0x81, 0x44, 0x49, 0xf2, 0xaf, 0x43, - 0x5c, 0xd2, 0x0f, 0xd0, 0xab, 0x30, 0x46, 0xdb, 0x66, 0xd7, 0x1f, 0xd9, 0xa6, 0xfb, 0x04, 0x53, - 0xe2, 0x04, 0xe2, 0x27, 0x1d, 0xcf, 0x23, 0x61, 0xb3, 0xd3, 0xb4, 0xd0, 0x47, 0x21, 0xe9, 0xf4, - 0xc7, 0x40, 0xad, 0xa1, 0xb8, 0x92, 0x43, 0x84, 0x3e, 0x08, 0xc8, 0xb1, 0x53, 0xcb, 0xe8, 0x68, - 0x35, 0xc5, 0xc2, 0xcc, 0xf3, 0x24, 0xa5, 0x29, 0xbb, 0xa4, 0x6a, 0x17, 0x88, 0x5f, 0x8f, 0xc1, - 0x38, 0x67, 0x82, 0x66, 0x20, 0xc1, 0x1c, 0x01, 0xeb, 0x5d, 0xf6, 0xe1, 0x37, 0xb4, 0xd8, 0xb1, - 0x0c, 0xed, 0x36, 0x80, 0xc7, 0x0b, 0xc6, 0x87, 0xf2, 0x82, 0x1e, 0x4a, 0xf4, 0x3a, 0x24, 0x9b, - 0x7a, 0x8d, 0xce, 0x42, 0xdc, 0x7c, 0x22, 0x25, 0x59, 0xe7, 0xb8, 0x92, 0x43, 0x85, 0x6e, 0x42, - 0xba, 0x66, 0x60, 0xc5, 0xc2, 0x32, 0x99, 0x04, 0xe6, 0xc7, 0x28, 0x93, 0xbc, 0xcb, 0x84, 0x4d, - 0x46, 0x0b, 0x55, 0x7b, 0x32, 0x92, 0x80, 0xa1, 0x13, 0x80, 0xf8, 0xdd, 0x38, 0x24, 0x6d, 0x9e, - 0xe8, 0x75, 0x80, 0x9d, 0x23, 0x0b, 0xcb, 0x86, 0xa2, 0x35, 0xec, 0x01, 0x18, 0xd9, 0xf1, 0x12, - 0x41, 0x94, 0x52, 0x84, 0x88, 0xfe, 0x44, 0x77, 0x61, 0xb2, 0xa6, 0xd7, 0x71, 0x5b, 0x57, 0x35, - 0x8b, 0xb3, 0x89, 0x0d, 0xca, 0x66, 0xc2, 0xa1, 0xb4, 0x79, 0xa5, 0xd5, 0x96, 0xd2, 0xc0, 0xf2, - 0x8e, 0x7e, 0x88, 0x4d, 0xee, 0x92, 0x9e, 0x8f, 0xec, 0x26, 0x82, 0xee, 0x68, 0x08, 0x28, 0xf5, - 0x32, 0x21, 0x46, 0x2b, 0x00, 0x06, 0xae, 0xe9, 0x46, 0x5d, 0xde, 0xc7, 0x47, 0x5c, 0xcf, 0x91, - 0xc3, 0x42, 0xa2, 0xd8, 0xf7, 0xf0, 0x91, 0x94, 0x32, 0xec, 0x9f, 0xe8, 0x35, 0x62, 0xc8, 0x64, - 0xd2, 0x57, 0xeb, 0x74, 0xba, 0x18, 0x74, 0x58, 0xee, 0xb2, 0x1f, 0x68, 0x0b, 0x26, 0xe8, 0xa8, - 0x97, 0x9d, 0x1e, 0x67, 0x9d, 0xf5, 0x7c, 0xdf, 0x01, 0xea, 0x34, 0x2a, 0x6b, 0x79, 0x3f, 0xc5, - 0x17, 0x21, 0xeb, 0x2b, 0x47, 0xe7, 0x20, 0x65, 0xe8, 0x07, 0xb2, 0xaa, 0xd5, 0xf1, 0x21, 0xed, - 0xc1, 0xb8, 0x94, 0x34, 0xf4, 0x83, 0x35, 0xf2, 0x2d, 0x2e, 0x42, 0x82, 0xa9, 0x76, 0x06, 0x12, - 0xa6, 0xa5, 0x18, 0x16, 0xc7, 0x60, 0x1f, 0x28, 0x07, 0x71, 0xac, 0xb1, 0x71, 0x15, 0x97, 0xc8, - 0x4f, 0xb1, 0x06, 0x59, 0x9f, 0x4e, 0x09, 0x8a, 0xa5, 0xb7, 0xf9, 0x84, 0x44, 0x7e, 0x12, 0xef, - 0xd9, 0xc4, 0xbb, 0xf6, 0x6c, 0x43, 0x7f, 0x13, 0xf6, 0x07, 0x6a, 0xdd, 0xda, 0xa3, 0xc3, 0x22, - 0x21, 0xb1, 0x0f, 0x34, 0x07, 0x63, 0x7b, 0x58, 0x6d, 0xec, 0x59, 0x54, 0xff, 0x09, 0x89, 0x7f, - 0x89, 0xef, 0x8f, 0x02, 0x92, 0x70, 0x5d, 0xa9, 0x59, 0xb4, 0x2e, 0x7b, 0x86, 0x9a, 0x83, 0xb1, - 0xb6, 0x62, 0x60, 0xcd, 0xe2, 0x43, 0x97, 0x7f, 0x11, 0x25, 0xaa, 0xcc, 0xbd, 0xc8, 0x35, 0x3a, - 0xf7, 0x70, 0x0b, 0x7b, 0x7e, 0xe0, 0xc9, 0x4a, 0xca, 0xaa, 0xbe, 0xc8, 0xe8, 0x02, 0x30, 0x53, - 0xb1, 0xa7, 0x3e, 0x52, 0x5b, 0x8a, 0x42, 0xe8, 0x48, 0x77, 0x8a, 0xe9, 0x8c, 0x40, 0x64, 0xcf, - 0xf0, 0xe2, 0x15, 0x32, 0x29, 0x7c, 0x1c, 0xce, 0xb0, 0x62, 0x83, 0xb6, 0x41, 0xd5, 0x35, 0x2e, - 0x17, 0x09, 0x29, 0x88, 0xc9, 0x16, 0xa3, 0xed, 0x2c, 0xd8, 0xf0, 0x05, 0xfe, 0xc1, 0x99, 0x71, - 0x91, 0x67, 0xd5, 0x10, 0xa8, 0x99, 0xff, 0x0b, 0x01, 0x66, 0xc2, 0xf0, 0x51, 0xf1, 0x98, 0x53, - 0xe9, 0xea, 0x88, 0xc7, 0xc7, 0x5d, 0x81, 0x49, 0xd6, 0x28, 0x59, 0x69, 0x36, 0x65, 0x0b, 0x1f, - 0xb2, 0x6e, 0x4e, 0xae, 0x8e, 0x48, 0x59, 0x56, 0x50, 0x68, 0x36, 0xab, 0xf8, 0xd0, 0x22, 0xe3, - 0xde, 0xdb, 0xfc, 0xa6, 0x6e, 0xf0, 0x88, 0x2e, 0x72, 0xdc, 0x17, 0x09, 0xa2, 0x34, 0x61, 0xb8, - 0xb2, 0x37, 0x75, 0x63, 0x39, 0x09, 0x63, 0x96, 0x62, 0x34, 0xb0, 0x25, 0x16, 0x21, 0x41, 0x41, - 0xc4, 0xec, 0x0c, 0x5c, 0xa7, 0xed, 0x88, 0x49, 0xe4, 0x27, 0x31, 0xb1, 0x86, 0x81, 0xb1, 0x46, - 0x05, 0x8a, 0x49, 0xec, 0x83, 0x18, 0xe3, 0x8e, 0x3d, 0x3f, 0xc7, 0x24, 0xfa, 0x5b, 0xac, 0xc1, - 0xb4, 0x4f, 0xc9, 0x66, 0x5b, 0xd7, 0x4c, 0x8c, 0x9e, 0x03, 0x5e, 0x2f, 0xae, 0xcb, 0x54, 0xb7, - 0x94, 0x7b, 0xc6, 0x6e, 0x18, 0xae, 0x53, 0x74, 0x82, 0x86, 0x0f, 0x2d, 0x83, 0xe1, 0x39, 0x1a, - 0x48, 0x49, 0x59, 0x07, 0x4a, 0xda, 0x2f, 0xfe, 0x4c, 0x1c, 0xe6, 0x57, 0xb0, 0x5a, 0xc7, 0x9a, - 0xa5, 0xee, 0x1e, 0xf1, 0xe8, 0xa2, 0x9f, 0x25, 0x3f, 0x84, 0xa9, 0xba, 0x43, 0xe3, 0x37, 0xe6, - 0x17, 0xa3, 0xd4, 0xe6, 0xab, 0x88, 0x18, 0x47, 0xae, 0x1e, 0x80, 0x84, 0x0c, 0x92, 0xf8, 0x09, - 0x07, 0xc9, 0x4d, 0x18, 0xa5, 0xb1, 0x28, 0xf3, 0x9d, 0x1f, 0x88, 0xee, 0x56, 0x27, 0xb8, 0x92, - 0x28, 0x11, 0x5a, 0x82, 0x59, 0x5b, 0x1c, 0x0b, 0xb7, 0xda, 0x4d, 0x32, 0x59, 0x69, 0x4a, 0x0b, - 0x53, 0x2f, 0x9a, 0x92, 0xa6, 0x79, 0x61, 0x95, 0x97, 0x6d, 0x2a, 0x2d, 0x8c, 0x3e, 0x02, 0xf3, - 0x1e, 0xed, 0xf8, 0xc9, 0xc6, 0x28, 0xd9, 0x9c, 0x5b, 0xee, 0xa5, 0x14, 0xbf, 0x26, 0xc0, 0xd9, - 0x90, 0xce, 0xe0, 0x1d, 0x6f, 0x37, 0x44, 0x38, 0x4e, 0x43, 0x36, 0x21, 0xa9, 0x3f, 0xc6, 0xc6, - 0x63, 0x15, 0x1f, 0xf0, 0x9e, 0x5a, 0x8a, 0xf4, 0xdd, 0x86, 0xa2, 0x99, 0xbb, 0xba, 0xd1, 0xa2, - 0xde, 0xb3, 0xcc, 0x29, 0x25, 0x87, 0x07, 0xb5, 0x1b, 0xe9, 0x18, 0x76, 0x63, 0x9c, 0x8e, 0xdd, - 0x18, 0x3f, 0x9e, 0x76, 0x63, 0xf4, 0xb1, 0x1b, 0xa3, 0xb7, 0xdd, 0x48, 0xff, 0x33, 0xec, 0xe6, - 0xdf, 0x04, 0x98, 0x75, 0xd5, 0x3e, 0x88, 0xd1, 0x9c, 0xfe, 0xb4, 0x69, 0x2b, 0x24, 0x7e, 0xaa, - 0x3d, 0x3b, 0xda, 0xb3, 0x67, 0xc5, 0xb7, 0x60, 0x2e, 0xd8, 0x66, 0xde, 0x37, 0x05, 0x18, 0x33, - 0xe8, 0x5a, 0x83, 0xf7, 0xce, 0x20, 0x8d, 0x62, 0x8b, 0x13, 0x89, 0x13, 0x8a, 0x9f, 0x84, 0x79, - 0x5e, 0x40, 0x66, 0xf5, 0x8a, 0xde, 0x31, 0x6a, 0x7d, 0x43, 0x91, 0x7b, 0x00, 0xef, 0xea, 0x3b, - 0x43, 0x8c, 0x40, 0x5e, 0xc3, 0x5d, 0x7d, 0x87, 0xab, 0x34, 0xf5, 0xae, 0xfd, 0x53, 0xfc, 0x3f, - 0x30, 0x5d, 0xee, 0x58, 0xed, 0x8e, 0x55, 0x61, 0x39, 0x2b, 0xae, 0xe5, 0x82, 0xbd, 0xb6, 0x1c, - 0xa0, 0x65, 0xcb, 0x6a, 0xe3, 0x8d, 0x0e, 0x36, 0x8e, 0x02, 0x6b, 0xcc, 0x31, 0xb6, 0xc0, 0x15, - 0x5b, 0x80, 0xec, 0x69, 0xbe, 0x62, 0x29, 0x96, 0x6a, 0x5a, 0x6a, 0xcd, 0x3c, 0x8d, 0x45, 0xf7, - 0x0c, 0x24, 0x6a, 0x7a, 0x47, 0xb3, 0x78, 0xe8, 0xc8, 0x3e, 0xc4, 0x7f, 0x19, 0x0d, 0x51, 0xe9, - 0x0a, 0xb6, 0x14, 0xb5, 0x69, 0x22, 0x83, 0xf8, 0x30, 0xaa, 0x5d, 0x5c, 0x97, 0xf5, 0x36, 0xcd, - 0xe7, 0x71, 0x0d, 0x0e, 0x92, 0x75, 0xe8, 0x62, 0xb8, 0x20, 0xd9, 0xdc, 0xca, 0x8c, 0x19, 0x71, - 0x6e, 0x7e, 0x08, 0xaa, 0x38, 0x56, 0xc2, 0x4c, 0xf6, 0xe6, 0x31, 0x2b, 0xf2, 0xda, 0x4d, 0xfe, - 0xf7, 0x05, 0xc8, 0x05, 0xeb, 0x46, 0x0d, 0x38, 0x6b, 0x6a, 0x4a, 0xdb, 0xdc, 0xd3, 0x2d, 0x39, - 0x68, 0xe6, 0x5c, 0xc7, 0x2f, 0x0c, 0x50, 0xb9, 0x6d, 0xfd, 0xd2, 0x19, 0x9b, 0x5b, 0xa0, 0x20, - 0x60, 0x81, 0xf1, 0x13, 0x59, 0x60, 0xfe, 0x7b, 0x02, 0x8c, 0xf1, 0x25, 0xfb, 0x07, 0x60, 0xb2, - 0x6d, 0xe8, 0x35, 0x6c, 0x9a, 0xb8, 0x2e, 0x93, 0xe5, 0x9d, 0xc9, 0x97, 0x0a, 0x13, 0x0e, 0x78, - 0x99, 0x40, 0xc9, 0x38, 0xb6, 0x74, 0x4b, 0x69, 0xca, 0xd8, 0xb4, 0xd4, 0x16, 0x59, 0x7e, 0x73, - 0x74, 0x66, 0x0a, 0xd3, 0xb4, 0xb0, 0x64, 0x97, 0x31, 0x9a, 0xfb, 0x30, 0xe9, 0x58, 0x9c, 0x6c, - 0x5a, 0x8a, 0x65, 0x2f, 0xee, 0x16, 0x06, 0xb1, 0x3b, 0xd7, 0x74, 0x89, 0x43, 0x72, 0x61, 0xa6, - 0xf8, 0x25, 0x01, 0xa6, 0x6d, 0xac, 0x15, 0x6c, 0xd6, 0x0c, 0x95, 0x76, 0x07, 0x89, 0x0a, 0xa9, - 0x6b, 0xe1, 0x09, 0x1e, 0xf2, 0x1b, 0x3d, 0x0d, 0x99, 0xba, 0x6a, 0xb6, 0x9b, 0xca, 0x11, 0x73, - 0x3b, 0x2c, 0xaa, 0x4b, 0x73, 0x18, 0x9d, 0x48, 0x24, 0xc8, 0x98, 0x9d, 0x76, 0x5b, 0x37, 0x58, - 0xa3, 0xa8, 0x8c, 0x13, 0x4b, 0x8b, 0x03, 0xc9, 0x68, 0xd3, 0x2d, 0x1f, 0x49, 0x69, 0xd3, 0xfd, - 0x10, 0x2b, 0x30, 0xb3, 0xae, 0x9a, 0x96, 0x93, 0x05, 0xb4, 0x3d, 0xcc, 0x33, 0x90, 0x6d, 0x2a, - 0x5a, 0xa3, 0x43, 0xd6, 0x11, 0x64, 0x19, 0xcc, 0x65, 0xcd, 0xd8, 0xc0, 0xa2, 0x5e, 0xc7, 0xc4, - 0x0d, 0xed, 0xaa, 0x4d, 0x0b, 0x1b, 0x5c, 0x5a, 0xfe, 0x25, 0x36, 0x60, 0x36, 0xc0, 0x94, 0xbb, - 0xc5, 0xcd, 0x90, 0x94, 0xef, 0x40, 0xf2, 0x7b, 0xb4, 0xe7, 0xc9, 0xfe, 0x8a, 0x9f, 0x16, 0xe0, - 0x7c, 0x41, 0x53, 0x9a, 0x47, 0xef, 0x61, 0x8f, 0x93, 0x54, 0xcd, 0xfd, 0xfe, 0x93, 0x4f, 0xb7, - 0xa3, 0x7c, 0x29, 0x72, 0x59, 0xa4, 0x9a, 0xfb, 0xb4, 0x26, 0x53, 0x35, 0x43, 0xbd, 0xe5, 0x6f, - 0x09, 0x30, 0x1b, 0x8a, 0x44, 0x26, 0x3a, 0xce, 0x51, 0x6e, 0x61, 0xcb, 0x50, 0x6b, 0x83, 0x78, - 0xce, 0x2d, 0x06, 0xdb, 0xa0, 0x04, 0x52, 0xb6, 0xed, 0xfd, 0x44, 0xeb, 0x90, 0x31, 0x69, 0x53, - 0x65, 0xe6, 0x89, 0x63, 0x43, 0x7a, 0x62, 0x29, 0xcd, 0xc8, 0xe9, 0x87, 0xf8, 0xb7, 0x93, 0x90, - 0xf5, 0x55, 0x87, 0x1e, 0xc3, 0x9c, 0xd6, 0x69, 0x61, 0x43, 0xad, 0x29, 0x4d, 0x36, 0x1e, 0x6c, - 0x4d, 0x31, 0xc9, 0x5f, 0x1b, 0x58, 0xf2, 0x85, 0x4d, 0x9b, 0x0f, 0x1d, 0x11, 0x4c, 0x23, 0xab, - 0x23, 0xd2, 0x8c, 0x16, 0x02, 0x47, 0xff, 0x17, 0xe6, 0x6b, 0x8a, 0x85, 0x1b, 0x7a, 0x48, 0xcd, - 0xac, 0x8d, 0xaf, 0x0f, 0x5e, 0x73, 0xd1, 0xe5, 0xe4, 0xaf, 0x7b, 0xae, 0x16, 0x5a, 0x82, 0xde, - 0x05, 0xb4, 0x2f, 0x2b, 0x9a, 0xae, 0x1d, 0xb5, 0x54, 0xeb, 0xc8, 0xef, 0xc2, 0x6e, 0x0c, 0x5e, - 0xef, 0xbd, 0x82, 0xcd, 0xc2, 0xa9, 0x31, 0xb7, 0x1f, 0x80, 0x91, 0xba, 0x9a, 0x72, 0x5d, 0x7d, - 0x8c, 0x0d, 0xd3, 0x53, 0xd7, 0xe8, 0xb0, 0x75, 0xad, 0xaf, 0xd8, 0x2c, 0xdc, 0xba, 0x9a, 0x01, - 0x18, 0x3a, 0x80, 0x33, 0xfb, 0x72, 0x4b, 0x69, 0xdb, 0x1e, 0xd1, 0x4d, 0x08, 0xf0, 0x9c, 0xd1, - 0x10, 0xdd, 0x79, 0x6f, 0x43, 0x69, 0x97, 0x1c, 0x36, 0x6e, 0x77, 0xee, 0x87, 0xc0, 0xf3, 0x6f, - 0xc0, 0x4c, 0x58, 0xf7, 0xa3, 0x57, 0x21, 0x41, 0x13, 0x50, 0xdc, 0x9a, 0x06, 0x4a, 0x59, 0x31, - 0x8a, 0x7c, 0x05, 0xe6, 0xc2, 0xfb, 0xf5, 0x24, 0x4c, 0xdf, 0x17, 0x20, 0x17, 0xec, 0x35, 0xf4, - 0x3a, 0xa4, 0x1e, 0x75, 0x14, 0x53, 0x95, 0xd5, 0xfa, 0x50, 0x29, 0xef, 0x24, 0xa5, 0x5a, 0xab, - 0xd3, 0x38, 0x86, 0x04, 0xee, 0xd6, 0x91, 0xac, 0xd6, 0x07, 0xc9, 0xe9, 0x96, 0x28, 0x32, 0x61, - 0x81, 0xf9, 0xaf, 0xfc, 0x37, 0x04, 0xc8, 0x05, 0xfb, 0xf8, 0x14, 0x24, 0xab, 0xc2, 0xb4, 0x89, - 0x35, 0x53, 0xb5, 0xd4, 0xc7, 0x58, 0x56, 0x2c, 0xcb, 0x50, 0x77, 0x3a, 0x96, 0xed, 0x46, 0x06, - 0xe2, 0x85, 0x1c, 0xfa, 0x82, 0x4d, 0x9e, 0xff, 0xdc, 0x38, 0xcc, 0x84, 0xd9, 0x07, 0x6a, 0x74, - 0x0b, 0x7c, 0xf7, 0x64, 0x26, 0xb7, 0x50, 0x55, 0x1a, 0x0d, 0x5c, 0xa7, 0xd2, 0x78, 0xda, 0x75, - 0x11, 0xd2, 0x06, 0x6e, 0x30, 0xfb, 0xae, 0xdb, 0x53, 0x28, 0x30, 0x10, 0x9d, 0xb0, 0x0e, 0x21, - 0xa7, 0x74, 0x0e, 0xd5, 0xa6, 0xaa, 0x18, 0x47, 0xcc, 0x77, 0xda, 0x33, 0xfd, 0xc6, 0x09, 0x05, - 0x2a, 0xd8, 0x6c, 0x99, 0x83, 0x9d, 0x54, 0x7c, 0xdf, 0x66, 0xfe, 0x9f, 0x04, 0x48, 0x7b, 0x84, - 0x3e, 0x81, 0xb9, 0xfa, 0x33, 0x69, 0xb1, 0x63, 0x66, 0xd2, 0x2e, 0x02, 0xf0, 0x4d, 0x44, 0x4b, - 0x69, 0x38, 0xdb, 0x47, 0x29, 0x06, 0xab, 0x2a, 0x0d, 0xf4, 0x0a, 0x10, 0x64, 0x6c, 0x18, 0xb8, - 0xce, 0xfd, 0xd2, 0x5c, 0x57, 0x06, 0xbf, 0xd4, 0x6a, 0x5b, 0x47, 0x9c, 0x2d, 0xc5, 0x5c, 0x4e, - 0x40, 0xdc, 0x52, 0x1a, 0xf9, 0x4f, 0xc7, 0x61, 0xc2, 0xaf, 0x11, 0xf4, 0x51, 0x7b, 0xd9, 0x10, - 0x1f, 0x76, 0xb2, 0x62, 0x74, 0xe8, 0xa0, 0xdb, 0x8a, 0x3e, 0x76, 0xaa, 0x9d, 0xb6, 0xf0, 0x06, - 0xb3, 0xa3, 0xa0, 0x55, 0x49, 0x80, 0x0c, 0xdc, 0x54, 0xe8, 0x60, 0xd9, 0xa5, 0x31, 0xbc, 0x56, - 0x3b, 0x1a, 0x66, 0xb0, 0x4c, 0xd9, 0xe4, 0xb7, 0x6d, 0xea, 0xfc, 0x1e, 0x64, 0xbc, 0xb5, 0x9d, - 0xc4, 0x1c, 0x2e, 0xf8, 0x7a, 0x92, 0xd9, 0xbc, 0xdb, 0x8f, 0xce, 0x5a, 0xeb, 0x9b, 0x4f, 0xf5, - 0x08, 0x95, 0xec, 0x05, 0x50, 0x0d, 0xe6, 0xdd, 0x05, 0xd0, 0x49, 0x03, 0x96, 0x39, 0x87, 0x95, - 0x3f, 0xb2, 0x90, 0xc1, 0x2d, 0x91, 0x4f, 0x16, 0xc3, 0xcc, 0x38, 0x8c, 0x2a, 0x6e, 0x30, 0x83, - 0x3e, 0x25, 0x74, 0xc7, 0x2e, 0xbe, 0x35, 0x56, 0xe4, 0x40, 0x8f, 0x52, 0x50, 0x20, 0x94, 0x61, - 0xeb, 0x92, 0xee, 0x50, 0x86, 0xaf, 0x57, 0x3e, 0x2b, 0x84, 0xc5, 0x32, 0x5c, 0x12, 0x36, 0x9e, - 0xca, 0xc7, 0x96, 0x24, 0x38, 0x05, 0x3a, 0xb2, 0x74, 0x85, 0x36, 0x5c, 0x9a, 0x23, 0x7f, 0x68, - 0xc3, 0xc5, 0x60, 0xb3, 0xff, 0xda, 0xb1, 0xc5, 0x70, 0xe7, 0x4c, 0x47, 0x00, 0x4f, 0xa4, 0xe3, - 0x56, 0xed, 0x8d, 0x74, 0x78, 0xd5, 0x63, 0x27, 0xac, 0xda, 0x9d, 0x14, 0xdd, 0xaa, 0x9b, 0x01, - 0x18, 0xfa, 0x69, 0x21, 0x24, 0xf2, 0xe1, 0x02, 0x8c, 0x9f, 0xd0, 0x18, 0xfc, 0xfe, 0xc4, 0x35, - 0x86, 0xfd, 0x10, 0x78, 0xfe, 0x6f, 0x84, 0x60, 0x24, 0xc4, 0x25, 0x7c, 0x0d, 0x52, 0x2d, 0x55, - 0x93, 0xd9, 0x1e, 0xfe, 0x00, 0xdb, 0x9b, 0x6c, 0x5f, 0x3b, 0xd9, 0x52, 0x35, 0xfa, 0x8b, 0xd2, - 0x2b, 0x87, 0x9c, 0x3e, 0x36, 0x38, 0xbd, 0x72, 0xc8, 0xe8, 0xef, 0xc2, 0xe4, 0xa3, 0x8e, 0xa2, - 0x59, 0x6a, 0x13, 0xcb, 0x7c, 0x77, 0x7d, 0x74, 0xd0, 0xdd, 0xf5, 0x09, 0x9b, 0x92, 0x7e, 0x9a, - 0xf9, 0x7f, 0x88, 0x77, 0xc7, 0x66, 0xbc, 0x99, 0xdf, 0x16, 0xe0, 0x69, 0xca, 0xde, 0xf5, 0x9f, - 0xf2, 0x9e, 0x6a, 0x5a, 0x7a, 0xc3, 0x50, 0x5a, 0xf2, 0x4e, 0xa7, 0xb6, 0x8f, 0x2d, 0x7b, 0x73, - 0x4a, 0x3f, 0xe5, 0x51, 0xd1, 0x05, 0x5e, 0xb5, 0x2b, 0x5e, 0xa6, 0xf5, 0x4a, 0x4f, 0x51, 0xc9, - 0x1c, 0xd7, 0x1c, 0x28, 0x36, 0xf3, 0xbf, 0x10, 0x83, 0x8b, 0x7d, 0x78, 0xa0, 0x5b, 0x70, 0x2e, - 0xd8, 0xbe, 0xa6, 0x7e, 0x80, 0x0d, 0x79, 0x47, 0xef, 0x68, 0x75, 0x9e, 0xa9, 0x98, 0xf7, 0x57, - 0xb4, 0x4e, 0x10, 0x96, 0x49, 0x79, 0x18, 0x79, 0xa7, 0xdd, 0x76, 0xc8, 0x63, 0x61, 0xe4, 0xdb, - 0x04, 0x81, 0x91, 0x5f, 0x84, 0x34, 0xd3, 0xa1, 0x6c, 0xaa, 0xef, 0xb1, 0x09, 0x36, 0x2e, 0x01, - 0x03, 0x55, 0xd4, 0xf7, 0x30, 0x2a, 0x43, 0x96, 0x23, 0xf8, 0x3a, 0xf9, 0x6a, 0xdf, 0x4e, 0x76, - 0x6a, 0x93, 0x32, 0x8c, 0x01, 0xef, 0xeb, 0x3f, 0x4e, 0x78, 0x23, 0x66, 0xde, 0xcb, 0xbf, 0x2e, - 0xc0, 0x33, 0xf8, 0x51, 0x47, 0x7d, 0xac, 0x34, 0xb1, 0x56, 0xc3, 0x72, 0xad, 0xa9, 0x98, 0x66, - 0xcf, 0x7e, 0xae, 0x9d, 0x9a, 0xdb, 0xf1, 0x00, 0x82, 0x7d, 0x7b, 0xc9, 0x23, 0x4f, 0x91, 0x88, - 0xd3, 0xd5, 0xbb, 0x5f, 0x14, 0x20, 0xef, 0xd2, 0x97, 0x02, 0xe8, 0xe8, 0x1e, 0xe4, 0x9c, 0xa0, - 0x43, 0x1e, 0xf6, 0xfc, 0xc9, 0x84, 0x1d, 0x42, 0x30, 0xad, 0xa1, 0x57, 0x60, 0xae, 0x5b, 0x3f, - 0xb4, 0xcb, 0x58, 0x0f, 0xcf, 0x04, 0xa5, 0x25, 0x9d, 0x97, 0xff, 0xeb, 0x18, 0x9c, 0xed, 0xd9, - 0x42, 0x74, 0x17, 0xc4, 0x70, 0x9e, 0x21, 0x06, 0xf8, 0x54, 0x18, 0x7f, 0x8f, 0x19, 0xf6, 0xe6, - 0xd5, 0x6d, 0x8d, 0xa1, 0xbc, 0x86, 0xb1, 0xc9, 0xcf, 0x08, 0xe1, 0x46, 0x59, 0x7f, 0x12, 0x76, - 0x11, 0xec, 0xd7, 0x80, 0x39, 0x7f, 0x7a, 0xdc, 0xbb, 0xcc, 0xe2, 0xe6, 0xfc, 0x3b, 0x02, 0xbc, - 0xe0, 0xae, 0x92, 0x06, 0x75, 0x5f, 0xb5, 0x53, 0x9b, 0xd2, 0x3c, 0x80, 0xa0, 0x59, 0x7f, 0xc0, - 0x91, 0xeb, 0x7e, 0xb4, 0xef, 0xfa, 0x7e, 0x0c, 0xf2, 0x2e, 0x9b, 0xff, 0x86, 0xd6, 0x8d, 0x0a, - 0x70, 0x41, 0xeb, 0xb4, 0xe4, 0xba, 0x6a, 0x5a, 0xaa, 0x56, 0xb3, 0xe4, 0x80, 0xc6, 0x4d, 0x6e, - 0x39, 0x79, 0xad, 0xd3, 0x5a, 0xe1, 0x38, 0x15, 0x5f, 0xe3, 0x4d, 0xf4, 0x36, 0xcc, 0x58, 0x7a, - 0xbb, 0x9b, 0x72, 0x78, 0x27, 0x87, 0x2c, 0xbd, 0x1d, 0xe0, 0x9e, 0xff, 0xe7, 0x18, 0x9c, 0xed, - 0xd9, 0x13, 0x68, 0x0b, 0x9e, 0xeb, 0x6d, 0x23, 0xdd, 0x23, 0xf0, 0xe9, 0x1e, 0x1d, 0xe7, 0x19, - 0x84, 0x91, 0x1c, 0xbb, 0xc7, 0x61, 0x2f, 0x8e, 0xff, 0xb5, 0x43, 0x31, 0xc2, 0x96, 0xfb, 0x0c, - 0xc5, 0xff, 0x18, 0x0d, 0x26, 0x11, 0xf8, 0x70, 0xfc, 0x9a, 0x00, 0xf9, 0xae, 0x60, 0xce, 0x19, - 0x85, 0xdc, 0x6c, 0xf7, 0x4f, 0x35, 0x9e, 0x0b, 0x00, 0x83, 0xa3, 0xf0, 0xcc, 0x7e, 0x78, 0x71, - 0xfe, 0x0b, 0x02, 0x9c, 0xf3, 0x93, 0xf2, 0xb5, 0x1e, 0x37, 0xd8, 0x53, 0x1d, 0x76, 0x8b, 0x30, - 0xed, 0xee, 0x74, 0x38, 0x21, 0x3e, 0xb7, 0x0e, 0xe4, 0x14, 0x39, 0xae, 0x30, 0xff, 0x85, 0x18, - 0x5c, 0x88, 0x6c, 0x18, 0x7a, 0x06, 0xb2, 0x24, 0x2a, 0x75, 0x99, 0x31, 0xe3, 0xcd, 0xb4, 0x54, - 0xcd, 0x61, 0x43, 0x91, 0x94, 0xc3, 0xae, 0x1a, 0x33, 0x2d, 0xe5, 0xd0, 0x45, 0x0a, 0x98, 0x5e, - 0xa2, 0xcb, 0xf4, 0x7e, 0xb6, 0xcb, 0xf4, 0xd8, 0x41, 0x66, 0xf5, 0x49, 0x76, 0xa4, 0xaf, 0x37, - 0xfc, 0xf6, 0xb7, 0x9c, 0xb4, 0xb7, 0xe4, 0x44, 0x19, 0x26, 0xfc, 0x43, 0x0a, 0x5d, 0xb7, 0x4f, - 0xdb, 0x0e, 0x1c, 0xa9, 0xf3, 0xe3, 0xb8, 0xe1, 0xdb, 0x91, 0x7f, 0x1e, 0x83, 0x04, 0x0b, 0xc3, - 0x9f, 0x83, 0xac, 0xaa, 0x59, 0xb8, 0x81, 0x0d, 0xcf, 0x52, 0x20, 0xbe, 0x3a, 0x22, 0x65, 0x38, - 0x98, 0xa1, 0x3d, 0x0d, 0xe9, 0xdd, 0xa6, 0xae, 0x58, 0x9e, 0x78, 0x5f, 0x58, 0x1d, 0x91, 0x80, - 0x02, 0x19, 0xca, 0x33, 0x90, 0x31, 0x2d, 0x43, 0xd5, 0x1a, 0xb2, 0xff, 0x5c, 0x70, 0x9a, 0x41, - 0x9d, 0xea, 0x76, 0x74, 0xbd, 0x89, 0x15, 0x7b, 0xe5, 0x31, 0xca, 0xcf, 0x50, 0x65, 0x38, 0x98, - 0xa1, 0x95, 0x60, 0xd2, 0xb9, 0x2f, 0xc0, 0x11, 0x13, 0xfd, 0x8e, 0x72, 0xae, 0x8e, 0x48, 0x13, - 0x0e, 0x11, 0x63, 0x73, 0x1d, 0x80, 0x40, 0x38, 0x87, 0x31, 0x7f, 0x2a, 0xc9, 0x3a, 0x6a, 0x63, - 0x4a, 0x5d, 0xde, 0x5d, 0x51, 0x8e, 0x56, 0x47, 0xa4, 0x14, 0xc1, 0x65, 0x84, 0x4b, 0x00, 0x75, - 0xc5, 0xb2, 0x09, 0xd9, 0x82, 0x6d, 0xca, 0x47, 0xb8, 0xa2, 0x58, 0x98, 0xd0, 0x10, 0x34, 0x4a, - 0xe3, 0x64, 0x3b, 0x7e, 0x2a, 0x06, 0xb9, 0xe0, 0xe9, 0x12, 0xf4, 0x08, 0xce, 0xba, 0xdb, 0x7c, - 0x96, 0xef, 0x44, 0x83, 0xc9, 0xfb, 0xf4, 0xe5, 0x41, 0x12, 0x69, 0xfe, 0xc3, 0x10, 0xe6, 0xea, - 0x88, 0x74, 0x46, 0x0d, 0x2f, 0x42, 0xef, 0xc2, 0x1c, 0x3f, 0xe6, 0x19, 0xac, 0x6f, 0x90, 0x3d, - 0x27, 0x4a, 0xd9, 0x5d, 0xdb, 0xac, 0x11, 0x56, 0xb0, 0x9c, 0x83, 0x09, 0x7f, 0x25, 0xe2, 0x6f, - 0x8f, 0xc3, 0x99, 0x2d, 0x43, 0x6d, 0xd1, 0xf9, 0xc1, 0x8f, 0x8e, 0xde, 0x84, 0x09, 0x03, 0xb7, - 0x9b, 0x0a, 0x99, 0xaa, 0xbd, 0x7b, 0x3b, 0x0b, 0xd1, 0x12, 0x51, 0x0a, 0xaa, 0x6b, 0x27, 0xf9, - 0x9f, 0xe5, 0x7c, 0xb8, 0x96, 0xcb, 0xc0, 0x4f, 0xac, 0xf9, 0x77, 0x6e, 0xae, 0xf4, 0x3f, 0x74, - 0xe8, 0x70, 0xcc, 0x18, 0x9e, 0x6f, 0x84, 0x61, 0xb6, 0xb6, 0xa7, 0xd0, 0xb3, 0x6d, 0x06, 0xbd, - 0xdd, 0xe2, 0xdf, 0x9a, 0x89, 0xdc, 0x3f, 0x2c, 0xda, 0x84, 0x1b, 0x8a, 0xb9, 0xef, 0xf0, 0x9f, - 0xae, 0x75, 0x83, 0xd1, 0x11, 0x5c, 0xa8, 0x19, 0x47, 0x6d, 0x4b, 0x97, 0x6d, 0xbd, 0xec, 0xee, - 0x1e, 0xca, 0xbb, 0x6d, 0xec, 0xdf, 0x9d, 0xb9, 0x16, 0x59, 0x1d, 0x65, 0xc0, 0xb5, 0x74, 0x7b, - 0xf7, 0xf0, 0x76, 0xdb, 0x55, 0xd3, 0xd9, 0x5a, 0xaf, 0x42, 0xd4, 0x81, 0x73, 0xbb, 0xea, 0x21, - 0xae, 0xb3, 0x60, 0x9b, 0xf9, 0x23, 0x32, 0x86, 0x7d, 0xbb, 0x34, 0xaf, 0x44, 0xe7, 0x04, 0x0f, - 0x71, 0x9d, 0x78, 0xd4, 0x65, 0x9b, 0xd8, 0xa9, 0x77, 0x7e, 0xb7, 0x47, 0x19, 0x7a, 0x00, 0xb9, - 0xae, 0xba, 0xc6, 0xfa, 0x9f, 0x05, 0xe8, 0xae, 0x62, 0x72, 0x27, 0xc0, 0xf9, 0x08, 0x2e, 0xd8, - 0x4a, 0x3c, 0x50, 0xad, 0x3d, 0xf7, 0x1e, 0x87, 0x5d, 0xcd, 0x78, 0x7f, 0x5d, 0x72, 0x45, 0xbd, - 0xa9, 0x5a, 0x7b, 0xf6, 0xc0, 0x73, 0x75, 0x69, 0xf4, 0x2a, 0x44, 0xf7, 0x21, 0x47, 0xdd, 0x4d, - 0x5b, 0x31, 0x1c, 0x0b, 0x4c, 0xd2, 0xda, 0x22, 0x23, 0x41, 0xe2, 0x83, 0xb6, 0x14, 0xc3, 0xb5, - 0x41, 0xea, 0xc6, 0x5c, 0x08, 0x7a, 0x1b, 0x10, 0x37, 0x8f, 0x3d, 0xc5, 0xdc, 0xb3, 0x39, 0xa7, - 0xfa, 0x1f, 0x70, 0x60, 0x36, 0xb1, 0xaa, 0x98, 0x7b, 0xee, 0x1e, 0x5d, 0x2d, 0x00, 0x0b, 0x19, - 0xbb, 0xff, 0x2a, 0xc0, 0x84, 0x5f, 0x28, 0xf4, 0x16, 0x4c, 0xd2, 0x56, 0x59, 0xba, 0xcc, 0x0f, - 0x7b, 0xd2, 0x31, 0x3b, 0x11, 0xed, 0xb5, 0xfc, 0x4c, 0x9c, 0x4f, 0x29, 0x4b, 0x78, 0x55, 0xf5, - 0x12, 0xe3, 0x24, 0xfe, 0x7f, 0x01, 0x92, 0x76, 0x19, 0x3a, 0x0b, 0xb3, 0xd5, 0xb5, 0x8d, 0x92, - 0xbc, 0x55, 0x90, 0xaa, 0xf2, 0xf6, 0x66, 0x65, 0xab, 0x54, 0x5c, 0xbb, 0xbd, 0x56, 0x5a, 0xc9, - 0x8d, 0xa0, 0x24, 0x8c, 0x3e, 0x2c, 0x15, 0xa4, 0x9c, 0x80, 0x52, 0x90, 0xd8, 0x28, 0x6f, 0x56, - 0x57, 0x73, 0x31, 0x94, 0x83, 0xcc, 0x4a, 0xe1, 0xa1, 0x5c, 0xbe, 0x2d, 0x33, 0x48, 0x1c, 0x4d, - 0x42, 0x9a, 0x43, 0xde, 0x2c, 0x95, 0xee, 0xe5, 0x46, 0x09, 0x0a, 0xf9, 0x45, 0x20, 0x94, 0x3e, - 0x41, 0x50, 0x56, 0xcb, 0xdb, 0x12, 0x81, 0xac, 0x14, 0x1e, 0xe6, 0xc6, 0xc4, 0x07, 0x90, 0x0b, - 0x2a, 0x0b, 0xad, 0x00, 0x70, 0xb5, 0xef, 0xe3, 0x23, 0xee, 0xa2, 0x9e, 0xeb, 0xaf, 0x6e, 0x7a, - 0x4e, 0xbe, 0x66, 0xff, 0x14, 0xab, 0x80, 0xba, 0x5d, 0x17, 0x7a, 0x0d, 0x52, 0x1a, 0x3e, 0x18, - 0x3a, 0xfb, 0xa6, 0xe1, 0x03, 0xfa, 0x4b, 0x3c, 0x07, 0x67, 0x7b, 0x1a, 0xa9, 0x38, 0x01, 0x19, - 0xaf, 0x57, 0x13, 0xff, 0x3e, 0x06, 0x59, 0xe2, 0x8d, 0xcc, 0xaa, 0xbe, 0xd6, 0xd0, 0x74, 0x03, - 0xa3, 0x05, 0x40, 0x8e, 0x1f, 0x32, 0x49, 0xa7, 0x9a, 0xfb, 0x2a, 0x3b, 0xc9, 0x9e, 0xa2, 0x36, - 0xe2, 0x94, 0x55, 0xf5, 0xca, 0xbe, 0xda, 0x46, 0xff, 0x0f, 0xce, 0xd5, 0xf4, 0x56, 0x4b, 0xd7, - 0x64, 0x3f, 0x99, 0x4a, 0xd9, 0xf1, 0x7b, 0x6f, 0xb7, 0xfa, 0x79, 0x43, 0xa7, 0xfe, 0x85, 0x22, - 0x65, 0xe6, 0x83, 0x11, 0x77, 0x51, 0x73, 0xc0, 0x76, 0xed, 0xac, 0x4c, 0x7c, 0x5f, 0x80, 0xe9, - 0x10, 0x1a, 0x74, 0x19, 0xc4, 0x62, 0x79, 0x63, 0xa3, 0xbc, 0x29, 0x17, 0x57, 0x0b, 0x52, 0x45, - 0xae, 0x96, 0xe5, 0xb5, 0x3b, 0x9b, 0x65, 0xa9, 0x14, 0xb0, 0x9c, 0x34, 0x8c, 0x6f, 0x6e, 0x6f, - 0x94, 0xa4, 0xb5, 0x62, 0x4e, 0x40, 0x33, 0x90, 0x2b, 0xac, 0x6f, 0xad, 0x16, 0xe4, 0xed, 0xad, - 0xad, 0x92, 0x24, 0x17, 0x0b, 0x95, 0x52, 0x2e, 0xe6, 0x42, 0xd7, 0xcb, 0x6f, 0xda, 0x50, 0x6a, - 0x4b, 0x5b, 0xdb, 0x9b, 0xc5, 0xea, 0x76, 0xa1, 0xba, 0x56, 0xde, 0xcc, 0x8d, 0xa2, 0x09, 0x80, - 0x37, 0x57, 0xd7, 0xaa, 0xa5, 0xca, 0x56, 0xa1, 0x58, 0xca, 0x25, 0x96, 0x33, 0x00, 0xae, 0x4a, - 0xc4, 0x7f, 0x24, 0x72, 0x86, 0x38, 0xf8, 0x17, 0x60, 0x8a, 0xcc, 0x1e, 0xd4, 0xd9, 0xd9, 0xc5, - 0xfc, 0x58, 0x48, 0x8e, 0x17, 0x38, 0x64, 0xe8, 0x59, 0x98, 0xd0, 0x3a, 0xad, 0x1d, 0x6c, 0x10, - 0x0d, 0x93, 0x52, 0x7e, 0x9f, 0x20, 0xc3, 0xa0, 0x55, 0x9d, 0x30, 0x26, 0x41, 0xb0, 0x81, 0xc9, - 0xc2, 0x06, 0xcb, 0xba, 0x51, 0xc7, 0xec, 0x8c, 0x79, 0x92, 0xcc, 0x5f, 0x14, 0x58, 0x26, 0x30, - 0xf4, 0x16, 0xcc, 0x84, 0x76, 0xd8, 0x68, 0xff, 0xfb, 0x23, 0x3e, 0x45, 0x4b, 0xa8, 0xd6, 0xdd, - 0x29, 0x3f, 0x14, 0x60, 0xbe, 0x97, 0xf3, 0x47, 0xcb, 0x90, 0x0e, 0xae, 0x41, 0x07, 0x32, 0x71, - 0x68, 0xba, 0xeb, 0xd1, 0x65, 0x48, 0x07, 0x57, 0x9d, 0x83, 0xf1, 0xe8, 0x44, 0xae, 0x40, 0x05, - 0xef, 0x32, 0x40, 0xfc, 0x4a, 0x0c, 0x26, 0x83, 0xc2, 0xaf, 0xc3, 0xb8, 0x9d, 0x5a, 0x61, 0x8b, - 0xa3, 0xa5, 0x21, 0x26, 0x25, 0xfe, 0x2d, 0xd9, 0x2c, 0xf2, 0x3f, 0x10, 0x60, 0x8c, 0x2f, 0x6f, - 0x5e, 0x86, 0x78, 0x4b, 0xd5, 0x06, 0xd7, 0x06, 0xc1, 0xa6, 0x44, 0xca, 0xe1, 0xe0, 0xcd, 0x27, - 0xd8, 0x68, 0x13, 0xa6, 0xf8, 0x44, 0xd5, 0xc2, 0x9a, 0xe5, 0x09, 0xc9, 0x07, 0x62, 0x91, 0xf3, - 0xd0, 0x32, 0x87, 0xf3, 0x67, 0xa3, 0x70, 0xb6, 0x67, 0x88, 0x71, 0x3a, 0xae, 0x12, 0xdd, 0x82, - 0xf1, 0x9a, 0xae, 0x39, 0x17, 0x0b, 0x06, 0xbd, 0x51, 0xc4, 0x69, 0xd0, 0x21, 0x4c, 0x72, 0x27, - 0xa5, 0x34, 0xdb, 0x7b, 0xca, 0x0e, 0x66, 0xbb, 0x5d, 0x13, 0xd1, 0x5b, 0x2d, 0x3d, 0x1b, 0xb5, - 0x70, 0x7b, 0xf7, 0x90, 0xf9, 0x9c, 0x4d, 0xba, 0x83, 0x5a, 0xe0, 0x4c, 0xc9, 0x04, 0xcd, 0xea, - 0xb1, 0x21, 0xe8, 0x79, 0xe0, 0x37, 0x5a, 0xdd, 0x9a, 0x13, 0xdc, 0x97, 0x4e, 0xb0, 0x02, 0x07, - 0x75, 0x0e, 0x12, 0x86, 0x52, 0x57, 0x0f, 0x69, 0xb4, 0x93, 0x58, 0x1d, 0x91, 0xd8, 0x27, 0x3d, - 0x17, 0xd1, 0x31, 0x0c, 0xbd, 0x41, 0x96, 0x1d, 0xee, 0x1e, 0x7b, 0x72, 0x88, 0x33, 0xa8, 0x53, - 0x0e, 0x03, 0x1b, 0x24, 0x7e, 0x5e, 0x80, 0x33, 0x3d, 0x9a, 0x81, 0xae, 0xc2, 0xe5, 0xdb, 0xb7, - 0x1f, 0xc8, 0xdc, 0x7f, 0x6e, 0x16, 0xaa, 0x6b, 0xf7, 0x4b, 0x32, 0x75, 0x81, 0xcb, 0xa5, 0x6a, - 0x94, 0xff, 0x24, 0x93, 0x67, 0xe9, 0x41, 0x61, 0xa5, 0x54, 0x5c, 0xdb, 0x28, 0xac, 0xe7, 0x62, - 0xe8, 0x3c, 0xcc, 0xbb, 0xae, 0x94, 0xb1, 0x90, 0x6d, 0xf4, 0x38, 0x9a, 0x82, 0xac, 0x1f, 0x34, - 0xba, 0x0c, 0x90, 0xb4, 0x15, 0x25, 0x7e, 0x26, 0x06, 0x29, 0xc7, 0x1a, 0xd0, 0x26, 0xa4, 0x68, - 0x30, 0xa2, 0xda, 0xe7, 0xe6, 0xfa, 0xac, 0x0a, 0xaa, 0x36, 0xb2, 0xc3, 0x82, 0x2e, 0xe4, 0x6c, - 0x28, 0xe1, 0xd7, 0xd1, 0x0e, 0x0c, 0xa5, 0xdd, 0xc6, 0xb6, 0x03, 0x89, 0xe4, 0xb7, 0x6d, 0x23, - 0xfb, 0xf8, 0x39, 0x2c, 0x90, 0x04, 0xe9, 0xfd, 0x96, 0x29, 0xdb, 0x1c, 0x07, 0x58, 0x06, 0xdc, - 0x6b, 0x99, 0x6f, 0x76, 0xb3, 0x84, 0x7d, 0x07, 0x4c, 0xd6, 0xfd, 0x6c, 0x3b, 0x5a, 0xbc, 0x02, - 0xa8, 0xbb, 0x41, 0x61, 0x47, 0x36, 0xc5, 0xcb, 0x80, 0xba, 0x45, 0x45, 0x39, 0x88, 0xdb, 0xe3, - 0x2f, 0x23, 0x91, 0x9f, 0xe2, 0x3b, 0x30, 0x1d, 0x22, 0x00, 0xf1, 0x8a, 0x9c, 0x58, 0x76, 0x09, - 0x80, 0x83, 0x08, 0xc2, 0x65, 0x98, 0x74, 0x07, 0xb4, 0xf7, 0x54, 0x68, 0xd6, 0x19, 0xae, 0xf4, - 0x18, 0xfa, 0x5f, 0xc5, 0xe0, 0x4c, 0x8f, 0xb5, 0x29, 0xb2, 0x60, 0xb2, 0x7b, 0xa5, 0xdb, 0xf7, - 0x04, 0x4e, 0x0f, 0x6e, 0x3d, 0xe0, 0x52, 0xb0, 0x8a, 0xfc, 0x9f, 0x08, 0x30, 0x17, 0x8e, 0x7b, - 0x3a, 0xb7, 0xfe, 0x35, 0x98, 0x6f, 0xdb, 0xeb, 0xda, 0xc0, 0xca, 0x9a, 0x1b, 0xd8, 0xcb, 0x7d, - 0xce, 0x2a, 0x84, 0xad, 0x89, 0xa5, 0x33, 0xed, 0xf0, 0x02, 0xf1, 0xf3, 0x71, 0x98, 0xa6, 0xae, - 0x2e, 0xd0, 0x98, 0x9b, 0x30, 0x46, 0x0f, 0x61, 0x0c, 0x75, 0x0e, 0x8b, 0x93, 0xa0, 0x35, 0x48, - 0xd5, 0x74, 0xad, 0xae, 0x52, 0xa9, 0xe3, 0xfd, 0xd7, 0x5d, 0x2c, 0x1d, 0x50, 0xb4, 0x49, 0x24, - 0x97, 0x1a, 0xb5, 0x23, 0xf4, 0x31, 0x7a, 0x6c, 0x7d, 0xac, 0x8e, 0xf4, 0xd4, 0x48, 0x74, 0x2e, - 0x25, 0xf1, 0x24, 0x72, 0x29, 0x21, 0x6b, 0xa4, 0xbf, 0x14, 0x60, 0x36, 0x34, 0x49, 0x82, 0xea, - 0x30, 0xcb, 0x2e, 0xc6, 0x86, 0x1b, 0xff, 0x62, 0xdf, 0x7e, 0x0a, 0x58, 0xc6, 0xcc, 0x6e, 0x37, - 0xd0, 0x44, 0xef, 0xc0, 0x34, 0xcf, 0xee, 0x98, 0x9d, 0x76, 0xdb, 0xc0, 0xa6, 0xc9, 0x53, 0x3b, - 0xa4, 0x8e, 0x0f, 0xf6, 0xef, 0xcb, 0x8a, 0x4b, 0x25, 0x21, 0x23, 0x08, 0x32, 0xc5, 0x77, 0x60, - 0xaa, 0x0b, 0xd1, 0x6f, 0x36, 0xc2, 0x49, 0xcc, 0x46, 0xfc, 0x61, 0x02, 0x26, 0x03, 0xc5, 0xe8, - 0x21, 0xa4, 0xf1, 0xa1, 0xdb, 0x96, 0x01, 0x9e, 0xc1, 0x08, 0x70, 0x58, 0x28, 0xb9, 0xe4, 0x92, - 0x97, 0x57, 0xfe, 0x8f, 0x04, 0x48, 0xb9, 0x15, 0x9d, 0xe0, 0xc8, 0xd3, 0x5d, 0x48, 0xea, 0x6d, - 0x6c, 0x28, 0x16, 0xbf, 0xd5, 0x39, 0xd1, 0x2f, 0x6b, 0xd5, 0xa4, 0x1d, 0xa6, 0x34, 0xcb, 0x9c, - 0x4a, 0x72, 0xe8, 0xdd, 0xa4, 0xee, 0xe8, 0x70, 0x49, 0xdd, 0x7c, 0x0d, 0xc0, 0x69, 0x8c, 0x89, - 0xb6, 0x01, 0x1c, 0xbd, 0xda, 0x56, 0x76, 0x6d, 0x18, 0xad, 0xb9, 0x1d, 0xe4, 0x61, 0x94, 0xff, - 0x72, 0x0c, 0xd2, 0x1e, 0x7d, 0x22, 0x03, 0x72, 0x4d, 0xbd, 0x41, 0x4f, 0x14, 0x39, 0x1a, 0x60, - 0x39, 0x80, 0x3b, 0xc7, 0xec, 0xa2, 0x85, 0x75, 0xc6, 0xcf, 0x51, 0xcd, 0x64, 0xd3, 0x0f, 0x40, - 0x0f, 0x7c, 0x4d, 0x63, 0x06, 0xf1, 0xe1, 0x63, 0x35, 0x8d, 0x0c, 0x6f, 0x0f, 0x2f, 0xf1, 0x7f, - 0xc1, 0x64, 0xa0, 0x76, 0x74, 0x09, 0xce, 0xaf, 0x97, 0xef, 0xac, 0x15, 0x0b, 0xeb, 0x72, 0x79, - 0xab, 0x24, 0x15, 0xaa, 0x65, 0x29, 0x10, 0x06, 0x8d, 0x43, 0xbc, 0xb0, 0xb9, 0x92, 0x13, 0x9c, - 0x5c, 0xef, 0xb7, 0x04, 0x98, 0x0b, 0xbf, 0x9f, 0x46, 0x96, 0x7c, 0x8e, 0x03, 0x08, 0x5c, 0x04, - 0xc9, 0x79, 0x0a, 0xd8, 0x2d, 0x90, 0x26, 0xcc, 0xfb, 0xbd, 0x85, 0x6c, 0x76, 0x5a, 0x2d, 0xc5, - 0x50, 0x9d, 0x43, 0xa2, 0x2f, 0x0d, 0x7e, 0x45, 0xae, 0x42, 0x49, 0x8f, 0xa4, 0x33, 0x56, 0x08, - 0x58, 0xc5, 0xa6, 0xf8, 0xed, 0x31, 0x98, 0x0d, 0x25, 0x39, 0x8d, 0xfb, 0x4f, 0xce, 0xd8, 0x8a, - 0x0d, 0x3d, 0xb6, 0xde, 0x0a, 0x7a, 0x59, 0xde, 0xe3, 0xc7, 0x9a, 0x50, 0x03, 0xac, 0x7a, 0xbb, - 0xe5, 0xc4, 0x69, 0xba, 0xe5, 0xfb, 0x30, 0x19, 0x70, 0xcb, 0x3c, 0xad, 0x39, 0xa4, 0x4b, 0x9e, - 0xf0, 0xbb, 0x64, 0xf4, 0x10, 0xc6, 0xd9, 0xde, 0x90, 0xbd, 0x41, 0xfa, 0xd1, 0xa1, 0xed, 0x61, - 0xc1, 0xb6, 0x0b, 0x76, 0x67, 0xcb, 0xe6, 0x17, 0x6e, 0xa8, 0xe3, 0xe1, 0x86, 0x9a, 0xff, 0xa2, - 0x00, 0x59, 0x1f, 0x1f, 0x77, 0x83, 0x49, 0xf0, 0x6c, 0x30, 0xa1, 0x77, 0x60, 0xd4, 0x39, 0x07, - 0x3d, 0x11, 0x1d, 0xf0, 0x85, 0x0b, 0x1b, 0xd0, 0x36, 0xad, 0xab, 0xa8, 0xd7, 0xb1, 0x44, 0xf9, - 0xa2, 0x79, 0x18, 0xaf, 0xb3, 0x5d, 0x37, 0xfe, 0x46, 0x81, 0xfd, 0x29, 0xbe, 0x03, 0xf3, 0xbd, - 0x68, 0xc9, 0x92, 0xa7, 0x2a, 0x15, 0x36, 0x2b, 0xb7, 0xcb, 0xd2, 0x06, 0x4d, 0xe8, 0xc8, 0x52, - 0xa9, 0xb2, 0xbd, 0x5e, 0x95, 0x8b, 0xe5, 0x95, 0x90, 0x94, 0x51, 0x65, 0xbb, 0x58, 0x2c, 0x55, - 0x2a, 0x2c, 0xdf, 0x58, 0x92, 0xa4, 0xb2, 0x94, 0x8b, 0x89, 0xbf, 0x19, 0x83, 0xc9, 0xe0, 0xcd, - 0xb3, 0x63, 0x5e, 0xaa, 0xba, 0x04, 0xe9, 0xba, 0x7b, 0xb9, 0x88, 0x37, 0xc4, 0x0b, 0x0a, 0x3e, - 0x67, 0x32, 0x3a, 0xcc, 0x73, 0x26, 0x84, 0xb8, 0xd3, 0xae, 0x3b, 0xc4, 0x89, 0xfe, 0xc4, 0x0c, - 0x9d, 0x12, 0x77, 0x5f, 0x91, 0x1d, 0x3b, 0xd9, 0x15, 0x59, 0xf1, 0x07, 0x31, 0x40, 0x2b, 0x5d, - 0x97, 0x8d, 0x7f, 0x1c, 0x75, 0x17, 0xfa, 0x96, 0xc1, 0xd8, 0x69, 0xbc, 0x65, 0x20, 0xfe, 0x8a, - 0x00, 0xe7, 0x8b, 0x54, 0xcc, 0xe0, 0xb5, 0xc8, 0x3e, 0xb7, 0xce, 0xee, 0x43, 0xae, 0xeb, 0xf2, - 0x65, 0x6c, 0xf8, 0xcb, 0x97, 0x93, 0x81, 0xbb, 0xc8, 0x64, 0x25, 0xe9, 0xdc, 0x59, 0x56, 0xeb, - 0xbc, 0x1f, 0xc0, 0x06, 0xad, 0xd5, 0xc5, 0xdf, 0x13, 0xe0, 0xfc, 0x36, 0xd5, 0x4d, 0x0f, 0x89, - 0xc3, 0x0c, 0xe0, 0x49, 0x49, 0xeb, 0x76, 0x2b, 0xcd, 0xab, 0xc6, 0x7b, 0x74, 0x2b, 0xf5, 0xf7, - 0x1b, 0x8a, 0xb9, 0x6f, 0x77, 0x2b, 0xf9, 0x2d, 0x2e, 0xc2, 0xd9, 0x3b, 0xd8, 0x1a, 0xbc, 0x15, - 0xe2, 0x23, 0x38, 0xc7, 0xee, 0x22, 0xfa, 0x28, 0xcc, 0x7e, 0x5d, 0x75, 0x01, 0xa0, 0x4d, 0x5f, - 0x60, 0xd1, 0xf7, 0xf9, 0x9b, 0x1e, 0x29, 0x29, 0x45, 0x20, 0x55, 0x02, 0x40, 0xe7, 0x80, 0x7e, - 0xb8, 0xf9, 0xcc, 0x84, 0x94, 0x24, 0x00, 0x9a, 0xcd, 0xfc, 0x92, 0x00, 0xe7, 0xc3, 0xeb, 0xe4, - 0xd7, 0x20, 0x1f, 0xc0, 0x54, 0x50, 0xb3, 0x76, 0xcc, 0x38, 0x94, 0x6a, 0x73, 0x01, 0xd5, 0x9a, - 0xe8, 0x32, 0x4c, 0x6a, 0xf8, 0xd0, 0x92, 0xbb, 0x64, 0xcf, 0x12, 0xf0, 0x96, 0x2d, 0xbf, 0xb8, - 0x04, 0xe7, 0x57, 0x70, 0x13, 0x0f, 0x63, 0x0f, 0xe2, 0xf7, 0x63, 0x90, 0x0b, 0xde, 0xd6, 0x25, - 0x2e, 0x8a, 0x3f, 0x69, 0xe8, 0xdf, 0x46, 0x8e, 0x74, 0x51, 0xbe, 0x0b, 0xe5, 0x52, 0xd6, 0xf4, - 0xdd, 0x2f, 0xaf, 0x42, 0x56, 0xa7, 0xd7, 0xce, 0xfd, 0xfb, 0xc7, 0x91, 0xb1, 0x41, 0xc8, 0x3d, - 0x75, 0x29, 0xc3, 0xb8, 0x3c, 0xb1, 0x77, 0x24, 0x8e, 0xf3, 0x60, 0xc0, 0xb7, 0x12, 0x30, 0xb6, - 0xd2, 0x6c, 0xdf, 0xd5, 0x77, 0x42, 0x47, 0xdc, 0x0d, 0xfe, 0xf0, 0xdb, 0x00, 0x4f, 0x18, 0x32, - 0x2e, 0x34, 0xec, 0x63, 0x0f, 0xc4, 0x15, 0xe8, 0x0b, 0x4a, 0x16, 0xe6, 0x0b, 0xa2, 0x17, 0xfa, - 0x13, 0x2f, 0xdc, 0xd5, 0x77, 0x2a, 0x84, 0x44, 0x62, 0x94, 0xe8, 0x7f, 0x43, 0xc6, 0x50, 0xcd, - 0x7d, 0xd9, 0x9e, 0xd4, 0x99, 0xb7, 0xfe, 0xc8, 0x71, 0x8f, 0xe2, 0xac, 0x8e, 0x48, 0x69, 0xc3, - 0x73, 0xc1, 0x44, 0x06, 0xdb, 0x15, 0x38, 0x35, 0x0c, 0xb0, 0xb3, 0xdd, 0xeb, 0xda, 0xfb, 0xea, - 0x88, 0x64, 0xf7, 0xa8, 0x5d, 0xc1, 0x49, 0xde, 0x1d, 0x43, 0xaf, 0x02, 0xd0, 0x47, 0xa7, 0x18, - 0xed, 0x78, 0x5f, 0xda, 0x14, 0xc5, 0xa6, 0xa4, 0xd7, 0x20, 0x89, 0xb5, 0x3a, 0x23, 0x4c, 0xf6, - 0x25, 0x1c, 0xc7, 0x5a, 0x9d, 0x92, 0x5d, 0x87, 0x2c, 0x36, 0x0c, 0xdd, 0x90, 0xed, 0xa0, 0x32, - 0x45, 0x3d, 0x00, 0xb2, 0x69, 0x8d, 0x76, 0x6d, 0xa1, 0x42, 0x1f, 0xe5, 0x94, 0x32, 0x14, 0x91, - 0x05, 0x51, 0xa6, 0x58, 0x83, 0xa4, 0xdd, 0x75, 0xe8, 0x2c, 0xcc, 0xde, 0x2d, 0x2f, 0xcb, 0x95, - 0x6a, 0xa1, 0x1a, 0x12, 0x3c, 0x6d, 0x95, 0x36, 0x57, 0xd6, 0x36, 0xef, 0xe4, 0x04, 0xf2, 0x21, - 0x6d, 0x6f, 0x6e, 0x92, 0x8f, 0x18, 0x4a, 0xc2, 0xe8, 0x4a, 0x79, 0xb3, 0x94, 0x8b, 0xa3, 0x0c, - 0x24, 0x8b, 0x85, 0xcd, 0x62, 0x69, 0xbd, 0xb4, 0x92, 0x1b, 0x45, 0x00, 0x63, 0xb7, 0x0b, 0x6b, - 0xe4, 0x77, 0x62, 0x39, 0xe5, 0x04, 0x77, 0xe2, 0x65, 0xc8, 0xdd, 0xc1, 0x16, 0x33, 0x9a, 0x28, - 0x07, 0xf1, 0x5d, 0x01, 0x10, 0xf1, 0x7b, 0x0c, 0x33, 0xc4, 0xc5, 0x8e, 0xfa, 0x5c, 0xac, 0x7b, - 0x7b, 0x5c, 0xf0, 0xde, 0x1e, 0xf7, 0xfb, 0xd6, 0x98, 0xdf, 0xb7, 0x06, 0xfc, 0x72, 0x3c, 0xe8, - 0x97, 0xed, 0x11, 0x94, 0x18, 0x7e, 0x04, 0x89, 0x1d, 0x98, 0xf6, 0x49, 0xcf, 0x9d, 0xf5, 0x87, - 0x61, 0xf4, 0x5d, 0x7d, 0xc7, 0xf6, 0xcf, 0x62, 0x7f, 0x96, 0x12, 0xc5, 0x1f, 0xd8, 0x15, 0x3f, - 0x0f, 0xd3, 0x45, 0x45, 0xab, 0xe1, 0x66, 0x7f, 0x05, 0x3f, 0x0f, 0xd3, 0xcc, 0x6b, 0xf7, 0x47, - 0xfd, 0x8e, 0x00, 0x17, 0x59, 0x8c, 0xd2, 0x1d, 0xee, 0xf5, 0x9b, 0xfb, 0x64, 0x98, 0x0e, 0x79, - 0xe8, 0x68, 0x90, 0xcc, 0x7d, 0x48, 0x5d, 0xa8, 0xfb, 0x4d, 0xa4, 0xfe, 0xf1, 0xca, 0x8f, 0x04, - 0xb8, 0xc8, 0xe2, 0x95, 0xde, 0xd2, 0x87, 0x39, 0xd0, 0x27, 0x2e, 0xf9, 0x89, 0x62, 0x97, 0x25, - 0x38, 0x4f, 0xc6, 0xd1, 0x30, 0x2d, 0x12, 0x2d, 0x78, 0x8a, 0x1a, 0x65, 0x17, 0xd1, 0x13, 0x8d, - 0x60, 0x7e, 0x59, 0x80, 0x8b, 0x3d, 0xab, 0xe5, 0xe3, 0x42, 0x81, 0x99, 0x10, 0x5d, 0xdb, 0xe3, - 0x64, 0x58, 0x65, 0x4f, 0x77, 0x2b, 0x7b, 0xf0, 0x21, 0x74, 0x0d, 0x2e, 0xf2, 0x71, 0x31, 0x8c, - 0x6e, 0xaf, 0x6e, 0xb9, 0xaf, 0x73, 0x78, 0xde, 0xc7, 0x20, 0x2e, 0xb5, 0xb4, 0xb9, 0xbd, 0x21, - 0x57, 0x1f, 0x6e, 0x85, 0xb8, 0xd4, 0x35, 0x0a, 0xa8, 0xe6, 0x04, 0x34, 0x05, 0x59, 0x69, 0xad, - 0x72, 0x4f, 0x2e, 0x6c, 0x16, 0xd6, 0x1f, 0x56, 0xd6, 0x2a, 0xb9, 0xd8, 0xd5, 0xef, 0x08, 0x80, - 0xba, 0xb3, 0x8d, 0xe8, 0x19, 0xb8, 0x28, 0x95, 0xd6, 0xe9, 0x62, 0xb7, 0x77, 0x5e, 0x2b, 0x03, - 0xc9, 0xd2, 0x1b, 0xdb, 0x85, 0x75, 0xb9, 0x5a, 0xce, 0x09, 0x28, 0x07, 0x99, 0xcd, 0x72, 0x55, - 0x76, 0x20, 0xf4, 0x8c, 0xcd, 0x1d, 0xa9, 0x54, 0xa8, 0x96, 0x24, 0xb9, 0xba, 0x5a, 0xd8, 0xcc, - 0xc5, 0x51, 0x16, 0x52, 0xeb, 0xa5, 0x4a, 0x85, 0x7d, 0x8e, 0xa2, 0x3c, 0xcc, 0x79, 0x11, 0xe4, - 0xb2, 0xc4, 0xc8, 0x2b, 0xb9, 0x04, 0x3a, 0x03, 0xd3, 0x0e, 0xaa, 0xa7, 0x60, 0x8c, 0xb8, 0xfc, - 0xd2, 0x83, 0xb5, 0x4a, 0xb5, 0x92, 0x1b, 0xbf, 0x2a, 0x01, 0xb8, 0x4e, 0x11, 0x9d, 0x87, 0xf9, - 0x95, 0xf5, 0x2d, 0x99, 0xcc, 0x2e, 0x21, 0x9a, 0x98, 0x84, 0x34, 0xd7, 0x04, 0xc1, 0xc8, 0x09, - 0x68, 0x16, 0xa6, 0x7c, 0xda, 0xa0, 0xe0, 0xd8, 0xd2, 0x57, 0x2f, 0x50, 0xa6, 0x15, 0x6c, 0x3c, - 0x56, 0x6b, 0x18, 0xfd, 0xaa, 0x00, 0x13, 0xfe, 0x27, 0x93, 0xd0, 0x4b, 0x83, 0x45, 0x60, 0x9e, - 0x27, 0xa5, 0xf2, 0x4b, 0xc3, 0x90, 0x30, 0x73, 0x15, 0xaf, 0xff, 0xe4, 0x8f, 0xfe, 0xee, 0x73, - 0xb1, 0x97, 0xc4, 0x17, 0x9d, 0xa7, 0xb8, 0x3f, 0xce, 0x06, 0xca, 0xad, 0xb6, 0xa1, 0xbf, 0x8b, - 0x6b, 0x96, 0xb9, 0x78, 0xf5, 0x13, 0x8b, 0x35, 0x46, 0x75, 0x83, 0x47, 0x16, 0x37, 0x84, 0xab, - 0xe8, 0x2b, 0x02, 0xa4, 0x3d, 0xef, 0xf5, 0xa1, 0x85, 0xe1, 0x5e, 0x4f, 0xcc, 0x2f, 0x0e, 0x8c, - 0xcf, 0x25, 0x7d, 0x85, 0x4a, 0xba, 0x20, 0x3e, 0x1f, 0x29, 0x29, 0x7d, 0x22, 0xf0, 0x06, 0x3b, - 0x28, 0x49, 0xc4, 0xfc, 0xae, 0x00, 0x53, 0x5d, 0x6f, 0xcc, 0xa1, 0x57, 0x06, 0x5e, 0xea, 0x7a, - 0xf5, 0x7b, 0x6d, 0x48, 0x2a, 0x2e, 0xf8, 0x0d, 0x2a, 0xf8, 0x2b, 0xe2, 0xe2, 0x40, 0x2a, 0x76, - 0x07, 0xbc, 0x2d, 0xbe, 0x34, 0x9c, 0xf8, 0xd2, 0xb1, 0xc4, 0x97, 0x4e, 0x49, 0x7c, 0xc3, 0x27, - 0xfe, 0xd7, 0x05, 0x98, 0xea, 0x8a, 0x54, 0xd1, 0x70, 0x81, 0xad, 0x2d, 0xfe, 0x00, 0x21, 0xc6, - 0x80, 0xb2, 0xd6, 0x1d, 0xde, 0x5e, 0x83, 0xfe, 0x35, 0x01, 0x66, 0x43, 0xe3, 0x76, 0x34, 0x7c, - 0xa8, 0xff, 0x44, 0x65, 0x56, 0x58, 0x8d, 0x44, 0xe6, 0x9f, 0x17, 0x20, 0xeb, 0x7b, 0x52, 0x08, - 0x7d, 0x28, 0xfa, 0x69, 0xe3, 0xee, 0x27, 0x8d, 0xf2, 0x2f, 0x0d, 0x41, 0xc1, 0x4d, 0x22, 0x4f, - 0x45, 0x9e, 0x41, 0xc8, 0x11, 0xd9, 0xdd, 0x83, 0xfe, 0x9e, 0x00, 0xb3, 0xa1, 0x59, 0xa0, 0x68, - 0x35, 0x46, 0x25, 0x8e, 0xf2, 0xc3, 0xac, 0xfe, 0xc5, 0x5b, 0x54, 0xb8, 0xeb, 0xe2, 0x52, 0x97, - 0x3e, 0x75, 0xa3, 0xa1, 0x68, 0xea, 0x7b, 0x2c, 0x1d, 0x4e, 0x9d, 0x45, 0x20, 0x4f, 0x40, 0x54, - 0x4a, 0xe4, 0x0f, 0xcd, 0x09, 0x45, 0xcb, 0x1f, 0x95, 0x46, 0x3a, 0x96, 0xfc, 0x4b, 0x1e, 0xf9, - 0xc9, 0xb4, 0x1c, 0x94, 0xbe, 0x4b, 0xf8, 0xc5, 0xab, 0x9f, 0x20, 0xf2, 0xff, 0x86, 0x00, 0xa8, - 0x3b, 0x15, 0x84, 0x22, 0x07, 0x7f, 0xcf, 0xd4, 0xd1, 0x70, 0x92, 0x73, 0x4b, 0x46, 0xc7, 0x90, - 0x1c, 0xfd, 0xae, 0x60, 0xbf, 0xb8, 0x15, 0x48, 0xdd, 0x5c, 0xef, 0x6f, 0x9e, 0xa1, 0x29, 0xac, - 0xfc, 0x47, 0x86, 0x27, 0xf4, 0x7b, 0x3c, 0x74, 0x0c, 0x0b, 0x42, 0x5f, 0x15, 0x60, 0x36, 0x34, - 0x85, 0x14, 0x6d, 0x3e, 0x51, 0x59, 0xa7, 0x7c, 0x8f, 0x17, 0x46, 0x6c, 0x39, 0xaf, 0x1e, 0x47, - 0xdf, 0x7f, 0x20, 0xc0, 0x7c, 0xaf, 0x85, 0x10, 0xba, 0xd9, 0x7f, 0xa4, 0xf6, 0x0c, 0x29, 0xf3, - 0x43, 0x86, 0xb8, 0xe2, 0xeb, 0xb4, 0x15, 0x37, 0xc4, 0x6b, 0xfd, 0xb5, 0x1d, 0x12, 0x0c, 0x13, - 0x93, 0x27, 0x6d, 0xe9, 0xb5, 0x2c, 0x8a, 0x6e, 0x4b, 0x9f, 0xc5, 0xd4, 0x71, 0xdb, 0xb2, 0x74, - 0xad, 0x4f, 0x8f, 0x84, 0x34, 0x84, 0x0f, 0xdf, 0xef, 0x0b, 0x30, 0x1b, 0xba, 0x1a, 0x8a, 0xb6, - 0x9f, 0xa8, 0x05, 0xd4, 0xd0, 0xad, 0xe0, 0x1e, 0x08, 0x1d, 0xaf, 0x15, 0xe8, 0x4f, 0x05, 0x38, - 0xd3, 0x63, 0x95, 0x84, 0x6e, 0xf4, 0x1b, 0x94, 0xbd, 0x57, 0x74, 0xf9, 0x9b, 0xc7, 0xa2, 0xe5, - 0x63, 0x3a, 0xa4, 0x4d, 0x43, 0x58, 0x19, 0xfa, 0xa6, 0x00, 0xf3, 0xbd, 0xd6, 0x52, 0xd1, 0x26, - 0xd6, 0x67, 0x05, 0xd6, 0x73, 0x70, 0x73, 0x81, 0xaf, 0x1e, 0xb3, 0x13, 0x7e, 0x49, 0x80, 0xb4, - 0x27, 0x6d, 0x13, 0x1d, 0x9e, 0x77, 0x67, 0xa7, 0xa2, 0xc3, 0xf3, 0x90, 0x7c, 0x90, 0xf8, 0x22, - 0x95, 0xf7, 0x32, 0x7a, 0x36, 0x3a, 0x8c, 0xe1, 0xe2, 0x7c, 0x56, 0x80, 0x94, 0x93, 0x3c, 0x43, - 0x2f, 0xf6, 0x33, 0x6d, 0x6f, 0x5e, 0x67, 0xa0, 0xa0, 0x2a, 0x44, 0x1a, 0xaa, 0x3d, 0x57, 0x16, - 0x5b, 0x14, 0xa2, 0xac, 0x4f, 0x09, 0x90, 0xf1, 0x66, 0x90, 0xd0, 0xe2, 0x00, 0x3d, 0xea, 0x93, - 0xa9, 0x57, 0x2f, 0x72, 0x39, 0xae, 0x0e, 0x26, 0xc7, 0xcf, 0x09, 0x90, 0xf1, 0x26, 0xbd, 0xa2, - 0xe5, 0x08, 0x49, 0x8f, 0xf5, 0x94, 0xe3, 0xc3, 0x54, 0x8e, 0x0f, 0x89, 0x2f, 0x0c, 0x22, 0xc7, - 0x8d, 0x1a, 0xe5, 0x7c, 0x43, 0xb8, 0xba, 0xfc, 0x65, 0x01, 0x9e, 0xaa, 0xe9, 0xad, 0x08, 0x31, - 0x96, 0x93, 0x2b, 0xcd, 0xf6, 0x16, 0xa9, 0x6d, 0x4b, 0xf8, 0xd8, 0x2d, 0x8e, 0xd7, 0xd0, 0x9b, - 0x8a, 0xd6, 0x58, 0xd0, 0x8d, 0xc6, 0x62, 0x03, 0x6b, 0x54, 0x96, 0x45, 0x56, 0xa4, 0xb4, 0x55, - 0x33, 0xec, 0x1f, 0xa0, 0x6e, 0xd6, 0x9b, 0xed, 0x6f, 0xc4, 0xe6, 0xef, 0x30, 0xfa, 0x62, 0x53, - 0xef, 0xd4, 0x49, 0x5f, 0x2e, 0xdc, 0x5f, 0x5a, 0x26, 0xc5, 0x7f, 0x68, 0x17, 0xbd, 0x4d, 0x8b, - 0xde, 0x5e, 0x69, 0xb6, 0xdf, 0xbe, 0xcf, 0x28, 0x77, 0xc6, 0x28, 0xff, 0x97, 0xff, 0x33, 0x00, - 0x00, 0xff, 0xff, 0x78, 0xae, 0x10, 0x67, 0xc0, 0x6a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta2/storage.pb.go b/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta2/storage.pb.go deleted file mode 100644 index ab4fdec5..00000000 --- a/vendor/google.golang.org/genproto/googleapis/privacy/dlp/v2beta2/storage.pb.go +++ /dev/null @@ -1,1165 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/privacy/dlp/v2beta2/storage.proto - -package dlp - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import _ "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Categorization of results based on how likely they are to represent a match, -// based on the number of elements they contain which imply a match. -type Likelihood int32 - -const ( - // Default value; information with all likelihoods is included. - Likelihood_LIKELIHOOD_UNSPECIFIED Likelihood = 0 - // Few matching elements. - Likelihood_VERY_UNLIKELY Likelihood = 1 - Likelihood_UNLIKELY Likelihood = 2 - // Some matching elements. - Likelihood_POSSIBLE Likelihood = 3 - Likelihood_LIKELY Likelihood = 4 - // Many matching elements. - Likelihood_VERY_LIKELY Likelihood = 5 -) - -var Likelihood_name = map[int32]string{ - 0: "LIKELIHOOD_UNSPECIFIED", - 1: "VERY_UNLIKELY", - 2: "UNLIKELY", - 3: "POSSIBLE", - 4: "LIKELY", - 5: "VERY_LIKELY", -} -var Likelihood_value = map[string]int32{ - "LIKELIHOOD_UNSPECIFIED": 0, - "VERY_UNLIKELY": 1, - "UNLIKELY": 2, - "POSSIBLE": 3, - "LIKELY": 4, - "VERY_LIKELY": 5, -} - -func (x Likelihood) String() string { - return proto.EnumName(Likelihood_name, int32(x)) -} -func (Likelihood) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Type of information detected by the API. -type InfoType struct { - // Name of the information type. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *InfoType) Reset() { *m = InfoType{} } -func (m *InfoType) String() string { return proto.CompactTextString(m) } -func (*InfoType) ProtoMessage() {} -func (*InfoType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *InfoType) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Custom information type provided by the user. Used to find domain-specific -// sensitive information configurable to the data in question. -type CustomInfoType struct { - // Info type configuration. All custom info types must have configurations - // that do not conflict with built-in info types or other custom info types. - InfoType *InfoType `protobuf:"bytes,1,opt,name=info_type,json=infoType" json:"info_type,omitempty"` - // Types that are valid to be assigned to Type: - // *CustomInfoType_Dictionary_ - // *CustomInfoType_SurrogateType_ - Type isCustomInfoType_Type `protobuf_oneof:"type"` -} - -func (m *CustomInfoType) Reset() { *m = CustomInfoType{} } -func (m *CustomInfoType) String() string { return proto.CompactTextString(m) } -func (*CustomInfoType) ProtoMessage() {} -func (*CustomInfoType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -type isCustomInfoType_Type interface { - isCustomInfoType_Type() -} - -type CustomInfoType_Dictionary_ struct { - Dictionary *CustomInfoType_Dictionary `protobuf:"bytes,2,opt,name=dictionary,oneof"` -} -type CustomInfoType_SurrogateType_ struct { - SurrogateType *CustomInfoType_SurrogateType `protobuf:"bytes,4,opt,name=surrogate_type,json=surrogateType,oneof"` -} - -func (*CustomInfoType_Dictionary_) isCustomInfoType_Type() {} -func (*CustomInfoType_SurrogateType_) isCustomInfoType_Type() {} - -func (m *CustomInfoType) GetType() isCustomInfoType_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *CustomInfoType) GetInfoType() *InfoType { - if m != nil { - return m.InfoType - } - return nil -} - -func (m *CustomInfoType) GetDictionary() *CustomInfoType_Dictionary { - if x, ok := m.GetType().(*CustomInfoType_Dictionary_); ok { - return x.Dictionary - } - return nil -} - -func (m *CustomInfoType) GetSurrogateType() *CustomInfoType_SurrogateType { - if x, ok := m.GetType().(*CustomInfoType_SurrogateType_); ok { - return x.SurrogateType - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CustomInfoType) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CustomInfoType_OneofMarshaler, _CustomInfoType_OneofUnmarshaler, _CustomInfoType_OneofSizer, []interface{}{ - (*CustomInfoType_Dictionary_)(nil), - (*CustomInfoType_SurrogateType_)(nil), - } -} - -func _CustomInfoType_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CustomInfoType) - // type - switch x := m.Type.(type) { - case *CustomInfoType_Dictionary_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Dictionary); err != nil { - return err - } - case *CustomInfoType_SurrogateType_: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SurrogateType); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CustomInfoType.Type has unexpected type %T", x) - } - return nil -} - -func _CustomInfoType_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CustomInfoType) - switch tag { - case 2: // type.dictionary - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CustomInfoType_Dictionary) - err := b.DecodeMessage(msg) - m.Type = &CustomInfoType_Dictionary_{msg} - return true, err - case 4: // type.surrogate_type - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CustomInfoType_SurrogateType) - err := b.DecodeMessage(msg) - m.Type = &CustomInfoType_SurrogateType_{msg} - return true, err - default: - return false, nil - } -} - -func _CustomInfoType_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CustomInfoType) - // type - switch x := m.Type.(type) { - case *CustomInfoType_Dictionary_: - s := proto.Size(x.Dictionary) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *CustomInfoType_SurrogateType_: - s := proto.Size(x.SurrogateType) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Custom information type based on a dictionary of words or phrases. This can -// be used to match sensitive information specific to the data, such as a list -// of employee IDs or job titles. -// -// Dictionary words are case-insensitive and all characters other than letters -// and digits in the unicode [Basic Multilingual -// Plane](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) -// will be replaced with whitespace when scanning for matches, so the -// dictionary phrase "Sam Johnson" will match all three phrases "sam johnson", -// "Sam, Johnson", and "Sam (Johnson)". Additionally, the characters -// surrounding any match must be of a different type than the adjacent -// characters within the word, so letters must be next to non-letters and -// digits next to non-digits. For example, the dictionary word "jen" will -// match the first three letters of the text "jen123" but will return no -// matches for "jennifer". -// -// Dictionary words containing a large number of characters that are not -// letters or digits may result in unexpected findings because such characters -// are treated as whitespace. -type CustomInfoType_Dictionary struct { - // Types that are valid to be assigned to Source: - // *CustomInfoType_Dictionary_WordList_ - Source isCustomInfoType_Dictionary_Source `protobuf_oneof:"source"` -} - -func (m *CustomInfoType_Dictionary) Reset() { *m = CustomInfoType_Dictionary{} } -func (m *CustomInfoType_Dictionary) String() string { return proto.CompactTextString(m) } -func (*CustomInfoType_Dictionary) ProtoMessage() {} -func (*CustomInfoType_Dictionary) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 0} } - -type isCustomInfoType_Dictionary_Source interface { - isCustomInfoType_Dictionary_Source() -} - -type CustomInfoType_Dictionary_WordList_ struct { - WordList *CustomInfoType_Dictionary_WordList `protobuf:"bytes,1,opt,name=word_list,json=wordList,oneof"` -} - -func (*CustomInfoType_Dictionary_WordList_) isCustomInfoType_Dictionary_Source() {} - -func (m *CustomInfoType_Dictionary) GetSource() isCustomInfoType_Dictionary_Source { - if m != nil { - return m.Source - } - return nil -} - -func (m *CustomInfoType_Dictionary) GetWordList() *CustomInfoType_Dictionary_WordList { - if x, ok := m.GetSource().(*CustomInfoType_Dictionary_WordList_); ok { - return x.WordList - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CustomInfoType_Dictionary) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CustomInfoType_Dictionary_OneofMarshaler, _CustomInfoType_Dictionary_OneofUnmarshaler, _CustomInfoType_Dictionary_OneofSizer, []interface{}{ - (*CustomInfoType_Dictionary_WordList_)(nil), - } -} - -func _CustomInfoType_Dictionary_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CustomInfoType_Dictionary) - // source - switch x := m.Source.(type) { - case *CustomInfoType_Dictionary_WordList_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.WordList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CustomInfoType_Dictionary.Source has unexpected type %T", x) - } - return nil -} - -func _CustomInfoType_Dictionary_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CustomInfoType_Dictionary) - switch tag { - case 1: // source.word_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CustomInfoType_Dictionary_WordList) - err := b.DecodeMessage(msg) - m.Source = &CustomInfoType_Dictionary_WordList_{msg} - return true, err - default: - return false, nil - } -} - -func _CustomInfoType_Dictionary_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CustomInfoType_Dictionary) - // source - switch x := m.Source.(type) { - case *CustomInfoType_Dictionary_WordList_: - s := proto.Size(x.WordList) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Message defining a list of words or phrases to search for in the data. -type CustomInfoType_Dictionary_WordList struct { - // Words or phrases defining the dictionary. The dictionary must contain - // at least one phrase and every phrase must contain at least 2 characters - // that are letters or digits. [required] - Words []string `protobuf:"bytes,1,rep,name=words" json:"words,omitempty"` -} - -func (m *CustomInfoType_Dictionary_WordList) Reset() { *m = CustomInfoType_Dictionary_WordList{} } -func (m *CustomInfoType_Dictionary_WordList) String() string { return proto.CompactTextString(m) } -func (*CustomInfoType_Dictionary_WordList) ProtoMessage() {} -func (*CustomInfoType_Dictionary_WordList) Descriptor() ([]byte, []int) { - return fileDescriptor1, []int{1, 0, 0} -} - -func (m *CustomInfoType_Dictionary_WordList) GetWords() []string { - if m != nil { - return m.Words - } - return nil -} - -// Message for detecting output from deidentification transformations -// such as -// [`CryptoReplaceFfxFpeConfig`](/dlp/docs/reference/rest/v2beta1/content/deidentify#CryptoReplaceFfxFpeConfig). -// These types of transformations are -// those that perform pseudonymization, thereby producing a "surrogate" as -// output. This should be used in conjunction with a field on the -// transformation such as `surrogate_info_type`. This custom info type does -// not support the use of `detection_rules`. -type CustomInfoType_SurrogateType struct { -} - -func (m *CustomInfoType_SurrogateType) Reset() { *m = CustomInfoType_SurrogateType{} } -func (m *CustomInfoType_SurrogateType) String() string { return proto.CompactTextString(m) } -func (*CustomInfoType_SurrogateType) ProtoMessage() {} -func (*CustomInfoType_SurrogateType) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1, 1} } - -// General identifier of a data field in a storage service. -type FieldId struct { - // Name describing the field. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *FieldId) Reset() { *m = FieldId{} } -func (m *FieldId) String() string { return proto.CompactTextString(m) } -func (*FieldId) ProtoMessage() {} -func (*FieldId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *FieldId) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Datastore partition ID. -// A partition ID identifies a grouping of entities. The grouping is always -// by project and namespace, however the namespace ID may be empty. -// -// A partition ID contains several dimensions: -// project ID and namespace ID. -type PartitionId struct { - // The ID of the project to which the entities belong. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // If not empty, the ID of the namespace to which the entities belong. - NamespaceId string `protobuf:"bytes,4,opt,name=namespace_id,json=namespaceId" json:"namespace_id,omitempty"` -} - -func (m *PartitionId) Reset() { *m = PartitionId{} } -func (m *PartitionId) String() string { return proto.CompactTextString(m) } -func (*PartitionId) ProtoMessage() {} -func (*PartitionId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *PartitionId) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *PartitionId) GetNamespaceId() string { - if m != nil { - return m.NamespaceId - } - return "" -} - -// A representation of a Datastore kind. -type KindExpression struct { - // The name of the kind. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *KindExpression) Reset() { *m = KindExpression{} } -func (m *KindExpression) String() string { return proto.CompactTextString(m) } -func (*KindExpression) ProtoMessage() {} -func (*KindExpression) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *KindExpression) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Options defining a data set within Google Cloud Datastore. -type DatastoreOptions struct { - // A partition ID identifies a grouping of entities. The grouping is always - // by project and namespace, however the namespace ID may be empty. - PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` - // The kind to process. - Kind *KindExpression `protobuf:"bytes,2,opt,name=kind" json:"kind,omitempty"` -} - -func (m *DatastoreOptions) Reset() { *m = DatastoreOptions{} } -func (m *DatastoreOptions) String() string { return proto.CompactTextString(m) } -func (*DatastoreOptions) ProtoMessage() {} -func (*DatastoreOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *DatastoreOptions) GetPartitionId() *PartitionId { - if m != nil { - return m.PartitionId - } - return nil -} - -func (m *DatastoreOptions) GetKind() *KindExpression { - if m != nil { - return m.Kind - } - return nil -} - -// Options defining a file or a set of files (path ending with *) within -// a Google Cloud Storage bucket. -type CloudStorageOptions struct { - FileSet *CloudStorageOptions_FileSet `protobuf:"bytes,1,opt,name=file_set,json=fileSet" json:"file_set,omitempty"` -} - -func (m *CloudStorageOptions) Reset() { *m = CloudStorageOptions{} } -func (m *CloudStorageOptions) String() string { return proto.CompactTextString(m) } -func (*CloudStorageOptions) ProtoMessage() {} -func (*CloudStorageOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *CloudStorageOptions) GetFileSet() *CloudStorageOptions_FileSet { - if m != nil { - return m.FileSet - } - return nil -} - -// Set of files to scan. -type CloudStorageOptions_FileSet struct { - // The url, in the format `gs://<bucket>/<path>`. Trailing wildcard in the - // path is allowed. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` -} - -func (m *CloudStorageOptions_FileSet) Reset() { *m = CloudStorageOptions_FileSet{} } -func (m *CloudStorageOptions_FileSet) String() string { return proto.CompactTextString(m) } -func (*CloudStorageOptions_FileSet) ProtoMessage() {} -func (*CloudStorageOptions_FileSet) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6, 0} } - -func (m *CloudStorageOptions_FileSet) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -// Options defining BigQuery table and row identifiers. -type BigQueryOptions struct { - // Complete BigQuery table reference. - TableReference *BigQueryTable `protobuf:"bytes,1,opt,name=table_reference,json=tableReference" json:"table_reference,omitempty"` - // References to fields uniquely identifying rows within the table. - // Nested fields in the format, like `person.birthdate.year`, are allowed. - IdentifyingFields []*FieldId `protobuf:"bytes,2,rep,name=identifying_fields,json=identifyingFields" json:"identifying_fields,omitempty"` -} - -func (m *BigQueryOptions) Reset() { *m = BigQueryOptions{} } -func (m *BigQueryOptions) String() string { return proto.CompactTextString(m) } -func (*BigQueryOptions) ProtoMessage() {} -func (*BigQueryOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *BigQueryOptions) GetTableReference() *BigQueryTable { - if m != nil { - return m.TableReference - } - return nil -} - -func (m *BigQueryOptions) GetIdentifyingFields() []*FieldId { - if m != nil { - return m.IdentifyingFields - } - return nil -} - -// Shared message indicating Cloud storage type. -type StorageConfig struct { - // Types that are valid to be assigned to Type: - // *StorageConfig_DatastoreOptions - // *StorageConfig_CloudStorageOptions - // *StorageConfig_BigQueryOptions - Type isStorageConfig_Type `protobuf_oneof:"type"` -} - -func (m *StorageConfig) Reset() { *m = StorageConfig{} } -func (m *StorageConfig) String() string { return proto.CompactTextString(m) } -func (*StorageConfig) ProtoMessage() {} -func (*StorageConfig) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -type isStorageConfig_Type interface { - isStorageConfig_Type() -} - -type StorageConfig_DatastoreOptions struct { - DatastoreOptions *DatastoreOptions `protobuf:"bytes,2,opt,name=datastore_options,json=datastoreOptions,oneof"` -} -type StorageConfig_CloudStorageOptions struct { - CloudStorageOptions *CloudStorageOptions `protobuf:"bytes,3,opt,name=cloud_storage_options,json=cloudStorageOptions,oneof"` -} -type StorageConfig_BigQueryOptions struct { - BigQueryOptions *BigQueryOptions `protobuf:"bytes,4,opt,name=big_query_options,json=bigQueryOptions,oneof"` -} - -func (*StorageConfig_DatastoreOptions) isStorageConfig_Type() {} -func (*StorageConfig_CloudStorageOptions) isStorageConfig_Type() {} -func (*StorageConfig_BigQueryOptions) isStorageConfig_Type() {} - -func (m *StorageConfig) GetType() isStorageConfig_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *StorageConfig) GetDatastoreOptions() *DatastoreOptions { - if x, ok := m.GetType().(*StorageConfig_DatastoreOptions); ok { - return x.DatastoreOptions - } - return nil -} - -func (m *StorageConfig) GetCloudStorageOptions() *CloudStorageOptions { - if x, ok := m.GetType().(*StorageConfig_CloudStorageOptions); ok { - return x.CloudStorageOptions - } - return nil -} - -func (m *StorageConfig) GetBigQueryOptions() *BigQueryOptions { - if x, ok := m.GetType().(*StorageConfig_BigQueryOptions); ok { - return x.BigQueryOptions - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*StorageConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _StorageConfig_OneofMarshaler, _StorageConfig_OneofUnmarshaler, _StorageConfig_OneofSizer, []interface{}{ - (*StorageConfig_DatastoreOptions)(nil), - (*StorageConfig_CloudStorageOptions)(nil), - (*StorageConfig_BigQueryOptions)(nil), - } -} - -func _StorageConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*StorageConfig) - // type - switch x := m.Type.(type) { - case *StorageConfig_DatastoreOptions: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatastoreOptions); err != nil { - return err - } - case *StorageConfig_CloudStorageOptions: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CloudStorageOptions); err != nil { - return err - } - case *StorageConfig_BigQueryOptions: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BigQueryOptions); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("StorageConfig.Type has unexpected type %T", x) - } - return nil -} - -func _StorageConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*StorageConfig) - switch tag { - case 2: // type.datastore_options - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatastoreOptions) - err := b.DecodeMessage(msg) - m.Type = &StorageConfig_DatastoreOptions{msg} - return true, err - case 3: // type.cloud_storage_options - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CloudStorageOptions) - err := b.DecodeMessage(msg) - m.Type = &StorageConfig_CloudStorageOptions{msg} - return true, err - case 4: // type.big_query_options - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(BigQueryOptions) - err := b.DecodeMessage(msg) - m.Type = &StorageConfig_BigQueryOptions{msg} - return true, err - default: - return false, nil - } -} - -func _StorageConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*StorageConfig) - // type - switch x := m.Type.(type) { - case *StorageConfig_DatastoreOptions: - s := proto.Size(x.DatastoreOptions) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StorageConfig_CloudStorageOptions: - s := proto.Size(x.CloudStorageOptions) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *StorageConfig_BigQueryOptions: - s := proto.Size(x.BigQueryOptions) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Record key for a finding in a Cloud Storage file. -type CloudStorageKey struct { - // Path to the file. - FilePath string `protobuf:"bytes,1,opt,name=file_path,json=filePath" json:"file_path,omitempty"` - // Byte offset of the referenced data in the file. - StartOffset int64 `protobuf:"varint,2,opt,name=start_offset,json=startOffset" json:"start_offset,omitempty"` -} - -func (m *CloudStorageKey) Reset() { *m = CloudStorageKey{} } -func (m *CloudStorageKey) String() string { return proto.CompactTextString(m) } -func (*CloudStorageKey) ProtoMessage() {} -func (*CloudStorageKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *CloudStorageKey) GetFilePath() string { - if m != nil { - return m.FilePath - } - return "" -} - -func (m *CloudStorageKey) GetStartOffset() int64 { - if m != nil { - return m.StartOffset - } - return 0 -} - -// Record key for a finding in Cloud Datastore. -type DatastoreKey struct { - // Datastore entity key. - EntityKey *Key `protobuf:"bytes,1,opt,name=entity_key,json=entityKey" json:"entity_key,omitempty"` -} - -func (m *DatastoreKey) Reset() { *m = DatastoreKey{} } -func (m *DatastoreKey) String() string { return proto.CompactTextString(m) } -func (*DatastoreKey) ProtoMessage() {} -func (*DatastoreKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *DatastoreKey) GetEntityKey() *Key { - if m != nil { - return m.EntityKey - } - return nil -} - -// A unique identifier for a Datastore entity. -// If a key's partition ID or any of its path kinds or names are -// reserved/read-only, the key is reserved/read-only. -// A reserved/read-only key is forbidden in certain documented contexts. -type Key struct { - // Entities are partitioned into subsets, currently identified by a project - // ID and namespace ID. - // Queries are scoped to a single partition. - PartitionId *PartitionId `protobuf:"bytes,1,opt,name=partition_id,json=partitionId" json:"partition_id,omitempty"` - // The entity path. - // An entity path consists of one or more elements composed of a kind and a - // string or numerical identifier, which identify entities. The first - // element identifies a _root entity_, the second element identifies - // a _child_ of the root entity, the third element identifies a child of the - // second entity, and so forth. The entities identified by all prefixes of - // the path are called the element's _ancestors_. - // - // A path can never be empty, and a path can have at most 100 elements. - Path []*Key_PathElement `protobuf:"bytes,2,rep,name=path" json:"path,omitempty"` -} - -func (m *Key) Reset() { *m = Key{} } -func (m *Key) String() string { return proto.CompactTextString(m) } -func (*Key) ProtoMessage() {} -func (*Key) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *Key) GetPartitionId() *PartitionId { - if m != nil { - return m.PartitionId - } - return nil -} - -func (m *Key) GetPath() []*Key_PathElement { - if m != nil { - return m.Path - } - return nil -} - -// A (kind, ID/name) pair used to construct a key path. -// -// If either name or ID is set, the element is complete. -// If neither is set, the element is incomplete. -type Key_PathElement struct { - // The kind of the entity. - // A kind matching regex `__.*__` is reserved/read-only. - // A kind must not contain more than 1500 bytes when UTF-8 encoded. - // Cannot be `""`. - Kind string `protobuf:"bytes,1,opt,name=kind" json:"kind,omitempty"` - // The type of ID. - // - // Types that are valid to be assigned to IdType: - // *Key_PathElement_Id - // *Key_PathElement_Name - IdType isKey_PathElement_IdType `protobuf_oneof:"id_type"` -} - -func (m *Key_PathElement) Reset() { *m = Key_PathElement{} } -func (m *Key_PathElement) String() string { return proto.CompactTextString(m) } -func (*Key_PathElement) ProtoMessage() {} -func (*Key_PathElement) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11, 0} } - -type isKey_PathElement_IdType interface { - isKey_PathElement_IdType() -} - -type Key_PathElement_Id struct { - Id int64 `protobuf:"varint,2,opt,name=id,oneof"` -} -type Key_PathElement_Name struct { - Name string `protobuf:"bytes,3,opt,name=name,oneof"` -} - -func (*Key_PathElement_Id) isKey_PathElement_IdType() {} -func (*Key_PathElement_Name) isKey_PathElement_IdType() {} - -func (m *Key_PathElement) GetIdType() isKey_PathElement_IdType { - if m != nil { - return m.IdType - } - return nil -} - -func (m *Key_PathElement) GetKind() string { - if m != nil { - return m.Kind - } - return "" -} - -func (m *Key_PathElement) GetId() int64 { - if x, ok := m.GetIdType().(*Key_PathElement_Id); ok { - return x.Id - } - return 0 -} - -func (m *Key_PathElement) GetName() string { - if x, ok := m.GetIdType().(*Key_PathElement_Name); ok { - return x.Name - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Key_PathElement) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Key_PathElement_OneofMarshaler, _Key_PathElement_OneofUnmarshaler, _Key_PathElement_OneofSizer, []interface{}{ - (*Key_PathElement_Id)(nil), - (*Key_PathElement_Name)(nil), - } -} - -func _Key_PathElement_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Key_PathElement) - // id_type - switch x := m.IdType.(type) { - case *Key_PathElement_Id: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.Id)) - case *Key_PathElement_Name: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Name) - case nil: - default: - return fmt.Errorf("Key_PathElement.IdType has unexpected type %T", x) - } - return nil -} - -func _Key_PathElement_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Key_PathElement) - switch tag { - case 2: // id_type.id - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.IdType = &Key_PathElement_Id{int64(x)} - return true, err - case 3: // id_type.name - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.IdType = &Key_PathElement_Name{x} - return true, err - default: - return false, nil - } -} - -func _Key_PathElement_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Key_PathElement) - // id_type - switch x := m.IdType.(type) { - case *Key_PathElement_Id: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.Id)) - case *Key_PathElement_Name: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Name))) - n += len(x.Name) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Message for a unique key indicating a record that contains a finding. -type RecordKey struct { - // Types that are valid to be assigned to Type: - // *RecordKey_CloudStorageKey - // *RecordKey_DatastoreKey - Type isRecordKey_Type `protobuf_oneof:"type"` -} - -func (m *RecordKey) Reset() { *m = RecordKey{} } -func (m *RecordKey) String() string { return proto.CompactTextString(m) } -func (*RecordKey) ProtoMessage() {} -func (*RecordKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -type isRecordKey_Type interface { - isRecordKey_Type() -} - -type RecordKey_CloudStorageKey struct { - CloudStorageKey *CloudStorageKey `protobuf:"bytes,1,opt,name=cloud_storage_key,json=cloudStorageKey,oneof"` -} -type RecordKey_DatastoreKey struct { - DatastoreKey *DatastoreKey `protobuf:"bytes,2,opt,name=datastore_key,json=datastoreKey,oneof"` -} - -func (*RecordKey_CloudStorageKey) isRecordKey_Type() {} -func (*RecordKey_DatastoreKey) isRecordKey_Type() {} - -func (m *RecordKey) GetType() isRecordKey_Type { - if m != nil { - return m.Type - } - return nil -} - -func (m *RecordKey) GetCloudStorageKey() *CloudStorageKey { - if x, ok := m.GetType().(*RecordKey_CloudStorageKey); ok { - return x.CloudStorageKey - } - return nil -} - -func (m *RecordKey) GetDatastoreKey() *DatastoreKey { - if x, ok := m.GetType().(*RecordKey_DatastoreKey); ok { - return x.DatastoreKey - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*RecordKey) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _RecordKey_OneofMarshaler, _RecordKey_OneofUnmarshaler, _RecordKey_OneofSizer, []interface{}{ - (*RecordKey_CloudStorageKey)(nil), - (*RecordKey_DatastoreKey)(nil), - } -} - -func _RecordKey_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*RecordKey) - // type - switch x := m.Type.(type) { - case *RecordKey_CloudStorageKey: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.CloudStorageKey); err != nil { - return err - } - case *RecordKey_DatastoreKey: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.DatastoreKey); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("RecordKey.Type has unexpected type %T", x) - } - return nil -} - -func _RecordKey_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*RecordKey) - switch tag { - case 1: // type.cloud_storage_key - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(CloudStorageKey) - err := b.DecodeMessage(msg) - m.Type = &RecordKey_CloudStorageKey{msg} - return true, err - case 2: // type.datastore_key - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DatastoreKey) - err := b.DecodeMessage(msg) - m.Type = &RecordKey_DatastoreKey{msg} - return true, err - default: - return false, nil - } -} - -func _RecordKey_OneofSizer(msg proto.Message) (n int) { - m := msg.(*RecordKey) - // type - switch x := m.Type.(type) { - case *RecordKey_CloudStorageKey: - s := proto.Size(x.CloudStorageKey) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *RecordKey_DatastoreKey: - s := proto.Size(x.DatastoreKey) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Message defining the location of a BigQuery table. A table is uniquely -// identified by its project_id, dataset_id, and table_name. Within a query -// a table is often referenced with a string in the format of: -// `<project_id>:<dataset_id>.<table_id>` or -// `<project_id>.<dataset_id>.<table_id>`. -type BigQueryTable struct { - // The Google Cloud Platform project ID of the project containing the table. - // If omitted, project ID is inferred from the API call. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Dataset ID of the table. - DatasetId string `protobuf:"bytes,2,opt,name=dataset_id,json=datasetId" json:"dataset_id,omitempty"` - // Name of the table. - TableId string `protobuf:"bytes,3,opt,name=table_id,json=tableId" json:"table_id,omitempty"` -} - -func (m *BigQueryTable) Reset() { *m = BigQueryTable{} } -func (m *BigQueryTable) String() string { return proto.CompactTextString(m) } -func (*BigQueryTable) ProtoMessage() {} -func (*BigQueryTable) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *BigQueryTable) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *BigQueryTable) GetDatasetId() string { - if m != nil { - return m.DatasetId - } - return "" -} - -func (m *BigQueryTable) GetTableId() string { - if m != nil { - return m.TableId - } - return "" -} - -// An entity in a dataset is a field or set of fields that correspond to a -// single person. For example, in medical records the `EntityId` might be -// a patient identifier, or for financial records it might be an account -// identifier. This message is used when generalizations or analysis must be -// consistent across multiple rows pertaining to the same entity. -type EntityId struct { - // Composite key indicating which field contains the entity identifier. - Field *FieldId `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` -} - -func (m *EntityId) Reset() { *m = EntityId{} } -func (m *EntityId) String() string { return proto.CompactTextString(m) } -func (*EntityId) ProtoMessage() {} -func (*EntityId) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } - -func (m *EntityId) GetField() *FieldId { - if m != nil { - return m.Field - } - return nil -} - -func init() { - proto.RegisterType((*InfoType)(nil), "google.privacy.dlp.v2beta2.InfoType") - proto.RegisterType((*CustomInfoType)(nil), "google.privacy.dlp.v2beta2.CustomInfoType") - proto.RegisterType((*CustomInfoType_Dictionary)(nil), "google.privacy.dlp.v2beta2.CustomInfoType.Dictionary") - proto.RegisterType((*CustomInfoType_Dictionary_WordList)(nil), "google.privacy.dlp.v2beta2.CustomInfoType.Dictionary.WordList") - proto.RegisterType((*CustomInfoType_SurrogateType)(nil), "google.privacy.dlp.v2beta2.CustomInfoType.SurrogateType") - proto.RegisterType((*FieldId)(nil), "google.privacy.dlp.v2beta2.FieldId") - proto.RegisterType((*PartitionId)(nil), "google.privacy.dlp.v2beta2.PartitionId") - proto.RegisterType((*KindExpression)(nil), "google.privacy.dlp.v2beta2.KindExpression") - proto.RegisterType((*DatastoreOptions)(nil), "google.privacy.dlp.v2beta2.DatastoreOptions") - proto.RegisterType((*CloudStorageOptions)(nil), "google.privacy.dlp.v2beta2.CloudStorageOptions") - proto.RegisterType((*CloudStorageOptions_FileSet)(nil), "google.privacy.dlp.v2beta2.CloudStorageOptions.FileSet") - proto.RegisterType((*BigQueryOptions)(nil), "google.privacy.dlp.v2beta2.BigQueryOptions") - proto.RegisterType((*StorageConfig)(nil), "google.privacy.dlp.v2beta2.StorageConfig") - proto.RegisterType((*CloudStorageKey)(nil), "google.privacy.dlp.v2beta2.CloudStorageKey") - proto.RegisterType((*DatastoreKey)(nil), "google.privacy.dlp.v2beta2.DatastoreKey") - proto.RegisterType((*Key)(nil), "google.privacy.dlp.v2beta2.Key") - proto.RegisterType((*Key_PathElement)(nil), "google.privacy.dlp.v2beta2.Key.PathElement") - proto.RegisterType((*RecordKey)(nil), "google.privacy.dlp.v2beta2.RecordKey") - proto.RegisterType((*BigQueryTable)(nil), "google.privacy.dlp.v2beta2.BigQueryTable") - proto.RegisterType((*EntityId)(nil), "google.privacy.dlp.v2beta2.EntityId") - proto.RegisterEnum("google.privacy.dlp.v2beta2.Likelihood", Likelihood_name, Likelihood_value) -} - -func init() { proto.RegisterFile("google/privacy/dlp/v2beta2/storage.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1100 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdf, 0x6e, 0xe3, 0xc4, - 0x17, 0x8e, 0x93, 0xb4, 0x4d, 0x4e, 0x9a, 0x26, 0x9d, 0xdd, 0xdf, 0x4f, 0x25, 0x4b, 0x77, 0x4b, - 0x58, 0x89, 0xb2, 0x45, 0x8e, 0x54, 0x84, 0x00, 0x21, 0x8a, 0x48, 0x93, 0x12, 0xd3, 0xaa, 0xe9, - 0x4e, 0xba, 0x5d, 0x15, 0x8a, 0x2c, 0x27, 0x33, 0x71, 0x87, 0x3a, 0x1e, 0x63, 0x4f, 0x76, 0xc9, - 0x0b, 0xf0, 0x0a, 0xdc, 0x71, 0xc3, 0x1d, 0x0f, 0x80, 0xc4, 0x15, 0x12, 0x97, 0x3c, 0x09, 0x8f, - 0x81, 0xe6, 0x8f, 0xd3, 0xa4, 0x94, 0xd0, 0x45, 0xdc, 0xcd, 0x9c, 0x39, 0xe7, 0x9b, 0x6f, 0xce, - 0xf9, 0xce, 0xb1, 0x61, 0xdb, 0xe7, 0xdc, 0x0f, 0x68, 0x23, 0x8a, 0xd9, 0x0b, 0x6f, 0x30, 0x69, - 0x90, 0x20, 0x6a, 0xbc, 0xd8, 0xed, 0x53, 0xe1, 0xed, 0x36, 0x12, 0xc1, 0x63, 0xcf, 0xa7, 0x76, - 0x14, 0x73, 0xc1, 0x51, 0x4d, 0x7b, 0xda, 0xc6, 0xd3, 0x26, 0x41, 0x64, 0x1b, 0xcf, 0xda, 0xeb, - 0x06, 0xc5, 0x8b, 0x58, 0xc3, 0x0b, 0x43, 0x2e, 0x3c, 0xc1, 0x78, 0x98, 0xe8, 0xc8, 0xda, 0xa3, - 0xe9, 0x1d, 0x5c, 0xf0, 0xfe, 0x78, 0xd8, 0x10, 0x6c, 0x44, 0x13, 0xe1, 0x8d, 0x22, 0xed, 0x50, - 0x7f, 0x08, 0x05, 0x27, 0x1c, 0xf2, 0xd3, 0x49, 0x44, 0x11, 0x82, 0x7c, 0xe8, 0x8d, 0xe8, 0x86, - 0xb5, 0x65, 0x6d, 0x17, 0xb1, 0x5a, 0xd7, 0x7f, 0xcb, 0xc1, 0xda, 0xfe, 0x38, 0x11, 0x7c, 0x34, - 0x75, 0xfb, 0x14, 0x8a, 0x2c, 0x1c, 0x72, 0x57, 0x4c, 0x22, 0xed, 0x5b, 0xda, 0x7d, 0x6c, 0xff, - 0x3d, 0x43, 0x3b, 0x0d, 0xc4, 0x05, 0x96, 0x42, 0x3c, 0x07, 0x20, 0x6c, 0x20, 0x89, 0x7a, 0xf1, - 0x64, 0x23, 0xab, 0x30, 0xde, 0x5b, 0x84, 0x31, 0x4f, 0xc1, 0x6e, 0x4d, 0x83, 0x3b, 0x19, 0x3c, - 0x03, 0x85, 0x3c, 0x58, 0x4b, 0xc6, 0x71, 0xcc, 0x7d, 0x4f, 0x50, 0x4d, 0x30, 0xaf, 0xc0, 0x3f, - 0x78, 0x05, 0xf0, 0x5e, 0x0a, 0x20, 0x77, 0x9d, 0x0c, 0x2e, 0x27, 0xb3, 0x86, 0xda, 0xf7, 0x16, - 0xc0, 0xf5, 0xfd, 0xe8, 0x2b, 0x28, 0xbe, 0xe4, 0x31, 0x71, 0x03, 0x96, 0x08, 0x93, 0x8d, 0xbd, - 0x7f, 0xf5, 0x12, 0xfb, 0x39, 0x8f, 0xc9, 0x11, 0x4b, 0x44, 0x27, 0x83, 0x0b, 0x2f, 0xcd, 0xba, - 0xb6, 0x05, 0x85, 0xd4, 0x8e, 0xee, 0xc3, 0x92, 0xb4, 0x27, 0x1b, 0xd6, 0x56, 0x6e, 0xbb, 0x88, - 0xf5, 0xa6, 0x59, 0x80, 0xe5, 0x84, 0x8f, 0xe3, 0x01, 0xad, 0x55, 0xa0, 0x3c, 0xc7, 0xbd, 0xb9, - 0x0c, 0x79, 0x99, 0x83, 0xfa, 0x26, 0xac, 0x1c, 0x30, 0x1a, 0x10, 0x87, 0xdc, 0x5a, 0xe3, 0x2e, - 0x94, 0x4e, 0xbc, 0x58, 0x30, 0x49, 0xc4, 0x21, 0x68, 0x13, 0x20, 0x8a, 0xf9, 0xd7, 0x74, 0x20, - 0x5c, 0x46, 0x54, 0x71, 0x8a, 0xb8, 0x68, 0x2c, 0x0e, 0x41, 0x6f, 0xc0, 0xaa, 0x8c, 0x4a, 0x22, - 0x6f, 0x40, 0xa5, 0x43, 0x5e, 0x39, 0x94, 0xa6, 0x36, 0x87, 0xd4, 0x1f, 0xc3, 0xda, 0x21, 0x0b, - 0x49, 0xfb, 0xdb, 0x28, 0xa6, 0x49, 0xc2, 0x78, 0x78, 0xeb, 0xb5, 0x3f, 0x58, 0x50, 0x6d, 0x79, - 0xc2, 0x93, 0x5a, 0xa7, 0xdd, 0x48, 0xc9, 0x16, 0x7d, 0x0e, 0xab, 0x51, 0xca, 0x45, 0xa2, 0xeb, - 0x8c, 0xbe, 0xb5, 0x28, 0xa3, 0x33, 0xdc, 0x71, 0x29, 0x9a, 0x79, 0xc8, 0x1e, 0xe4, 0xaf, 0x58, - 0x48, 0x8c, 0xbe, 0x9e, 0x2c, 0xc2, 0x98, 0xa7, 0x8b, 0x55, 0x5c, 0xfd, 0x3b, 0x0b, 0xee, 0xed, - 0x07, 0x7c, 0x4c, 0x7a, 0xba, 0x1b, 0x53, 0x8e, 0x18, 0x0a, 0x43, 0x16, 0x50, 0x37, 0xa1, 0x69, - 0xc5, 0xdf, 0x5f, 0x58, 0xf1, 0xbf, 0x42, 0xd8, 0x07, 0x2c, 0xa0, 0x3d, 0x2a, 0xf0, 0xca, 0x50, - 0x2f, 0x6a, 0x0f, 0x64, 0x89, 0xd4, 0x12, 0x55, 0x21, 0x37, 0x8e, 0x03, 0x93, 0x2a, 0xb9, 0xac, - 0xff, 0x62, 0x41, 0xa5, 0xc9, 0xfc, 0xa7, 0x63, 0x1a, 0x4f, 0xae, 0x49, 0x54, 0x84, 0xd7, 0x0f, - 0xa8, 0x1b, 0xd3, 0x21, 0x8d, 0x69, 0x38, 0x48, 0x7b, 0xf1, 0xed, 0x45, 0x5c, 0x52, 0x94, 0x53, - 0x19, 0x8a, 0xd7, 0x14, 0x02, 0x4e, 0x01, 0x10, 0x06, 0xc4, 0x08, 0x0d, 0x05, 0x1b, 0x4e, 0x58, - 0xe8, 0xbb, 0x43, 0xa9, 0x99, 0x64, 0x23, 0xbb, 0x95, 0xdb, 0x2e, 0xed, 0xbe, 0xb9, 0x08, 0xd6, - 0xa8, 0x0b, 0xaf, 0xcf, 0x84, 0x2b, 0x5b, 0x52, 0xff, 0x39, 0x0b, 0x65, 0xf3, 0xf8, 0x7d, 0x1e, - 0x0e, 0x99, 0x8f, 0xbe, 0x84, 0x75, 0x92, 0x96, 0xdd, 0xe5, 0xfa, 0x39, 0xa6, 0x46, 0xef, 0x2c, - 0xba, 0xe4, 0xa6, 0x56, 0x3a, 0x19, 0x5c, 0x25, 0x37, 0xf5, 0x43, 0xe1, 0x7f, 0x03, 0x99, 0x6f, - 0xd7, 0x4c, 0xd0, 0xe9, 0x05, 0x39, 0x75, 0x41, 0xe3, 0x15, 0x0b, 0xd5, 0xc9, 0xe0, 0x7b, 0x83, - 0x5b, 0x24, 0x70, 0x0e, 0xeb, 0x7d, 0xe6, 0xbb, 0xdf, 0xc8, 0x5c, 0x4e, 0xaf, 0xd0, 0xa3, 0x66, - 0xe7, 0x2e, 0xf9, 0xbf, 0x86, 0xaf, 0xf4, 0xe7, 0x4d, 0xd3, 0xa6, 0x7d, 0x0a, 0x95, 0x59, 0x42, - 0x87, 0x74, 0x82, 0x1e, 0x40, 0x51, 0x09, 0x2f, 0xf2, 0xc4, 0xa5, 0xd1, 0x87, 0x52, 0xe2, 0x89, - 0x27, 0x2e, 0x65, 0x5f, 0x26, 0xc2, 0x8b, 0x85, 0xcb, 0x87, 0x43, 0xa9, 0x4c, 0x99, 0xd1, 0x1c, - 0x2e, 0x29, 0x5b, 0x57, 0x99, 0xea, 0xc7, 0xb0, 0x3a, 0x4d, 0xa2, 0xc4, 0xdb, 0x03, 0x90, 0xe5, - 0x12, 0x13, 0xf7, 0x8a, 0x4e, 0x8c, 0x7c, 0x1e, 0x2d, 0x6c, 0x13, 0x3a, 0xc1, 0x45, 0x1d, 0x72, - 0x48, 0x27, 0xf5, 0x3f, 0x2c, 0xc8, 0x49, 0x9c, 0xff, 0xb2, 0x69, 0x3f, 0x81, 0xbc, 0x7a, 0x9e, - 0x56, 0xdd, 0xce, 0x3f, 0xb0, 0xb1, 0xe5, 0xd3, 0xdb, 0x01, 0x1d, 0xd1, 0x50, 0x60, 0x15, 0x58, - 0x3b, 0x95, 0xd3, 0x6c, 0x6a, 0x94, 0x93, 0x47, 0x0d, 0x01, 0x33, 0x79, 0xe4, 0x1a, 0x55, 0x21, - 0x6b, 0x26, 0x5b, 0xae, 0x93, 0xc1, 0x59, 0x46, 0xd0, 0x7d, 0x33, 0x9f, 0xa4, 0x4a, 0x8a, 0x9d, - 0x8c, 0x9e, 0x50, 0xcd, 0x22, 0xac, 0x30, 0xa2, 0x3e, 0x23, 0xf5, 0x5f, 0x2d, 0x28, 0x62, 0x3a, - 0xe0, 0x31, 0x91, 0x0f, 0x3e, 0x87, 0xf5, 0x79, 0x95, 0x5d, 0xe7, 0x6f, 0xe7, 0xae, 0x0a, 0x3b, - 0xa4, 0xf2, 0xe3, 0x55, 0x19, 0xdc, 0xa8, 0x71, 0x17, 0xca, 0xd7, 0xdd, 0x21, 0x61, 0x75, 0x67, - 0x6c, 0xdf, 0xa9, 0x33, 0x34, 0xe6, 0x2a, 0x99, 0xd9, 0x4f, 0xf5, 0x74, 0x09, 0xe5, 0xb9, 0xee, - 0xbf, 0x31, 0xe7, 0xad, 0x9b, 0x73, 0x7e, 0x13, 0x40, 0xe1, 0xd0, 0xd9, 0xcf, 0x80, 0xb1, 0x38, - 0x04, 0xbd, 0x06, 0x05, 0x3d, 0x7f, 0x18, 0xd1, 0x59, 0xc3, 0x2b, 0x6a, 0xef, 0x90, 0x7a, 0x1b, - 0x0a, 0x6d, 0xa5, 0x11, 0x87, 0xa0, 0x0f, 0x61, 0x49, 0x8d, 0x11, 0x93, 0x9d, 0x3b, 0x4d, 0x11, - 0x1d, 0xf1, 0x44, 0x00, 0x1c, 0xb1, 0x2b, 0x1a, 0xb0, 0x4b, 0xce, 0x09, 0xaa, 0xc1, 0xff, 0x8f, - 0x9c, 0xc3, 0xf6, 0x91, 0xd3, 0xe9, 0x76, 0x5b, 0xee, 0xb3, 0xe3, 0xde, 0x49, 0x7b, 0xdf, 0x39, - 0x70, 0xda, 0xad, 0x6a, 0x06, 0xad, 0x43, 0xf9, 0xac, 0x8d, 0xcf, 0xdd, 0x67, 0xc7, 0xca, 0xe5, - 0xbc, 0x6a, 0xa1, 0x55, 0x28, 0x4c, 0x77, 0x59, 0xb9, 0x3b, 0xe9, 0xf6, 0x7a, 0x4e, 0xf3, 0xa8, - 0x5d, 0xcd, 0x21, 0x80, 0x65, 0x73, 0x92, 0x47, 0x15, 0x28, 0xa9, 0x50, 0x63, 0x58, 0x6a, 0xfe, - 0x68, 0xc1, 0xc3, 0x01, 0x1f, 0x2d, 0xe0, 0xd9, 0x84, 0x56, 0x10, 0x99, 0x8a, 0x9d, 0x58, 0x5f, - 0x7c, 0x6c, 0x3c, 0x7d, 0x1e, 0x78, 0xa1, 0x6f, 0xf3, 0xd8, 0x6f, 0xf8, 0x34, 0x54, 0x7f, 0x57, - 0x0d, 0x7d, 0xe4, 0x45, 0x2c, 0xb9, 0xed, 0x2f, 0xef, 0x23, 0x12, 0x44, 0x3f, 0x65, 0x37, 0x3e, - 0xd3, 0xf1, 0x4a, 0x1b, 0x76, 0x2b, 0x88, 0xec, 0xb3, 0xdd, 0xa6, 0x3c, 0xfe, 0x3d, 0x3d, 0xba, - 0x50, 0x47, 0x17, 0xad, 0x20, 0xba, 0x38, 0xd3, 0x91, 0xfd, 0x65, 0x85, 0xff, 0xee, 0x9f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x8f, 0x4f, 0x2f, 0x44, 0x44, 0x0a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/pubsub/v1/pubsub.pb.go b/vendor/google.golang.org/genproto/googleapis/pubsub/v1/pubsub.pb.go deleted file mode 100644 index 0689b3c0..00000000 --- a/vendor/google.golang.org/genproto/googleapis/pubsub/v1/pubsub.pb.go +++ /dev/null @@ -1,2524 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/pubsub/v1/pubsub.proto - -/* -Package pubsub is a generated protocol buffer package. - -It is generated from these files: - google/pubsub/v1/pubsub.proto - -It has these top-level messages: - Topic - PubsubMessage - GetTopicRequest - UpdateTopicRequest - PublishRequest - PublishResponse - ListTopicsRequest - ListTopicsResponse - ListTopicSubscriptionsRequest - ListTopicSubscriptionsResponse - DeleteTopicRequest - Subscription - PushConfig - ReceivedMessage - GetSubscriptionRequest - UpdateSubscriptionRequest - ListSubscriptionsRequest - ListSubscriptionsResponse - DeleteSubscriptionRequest - ModifyPushConfigRequest - PullRequest - PullResponse - ModifyAckDeadlineRequest - AcknowledgeRequest - StreamingPullRequest - StreamingPullResponse - CreateSnapshotRequest - UpdateSnapshotRequest - Snapshot - ListSnapshotsRequest - ListSnapshotsResponse - DeleteSnapshotRequest - SeekRequest - SeekResponse -*/ -package pubsub - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A topic resource. -type Topic struct { - // The name of the topic. It must have the format - // `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, - // and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), - // underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent - // signs (`%`). It must be between 3 and 255 characters in length, and it - // must not start with `"goog"`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // User labels. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Topic) Reset() { *m = Topic{} } -func (m *Topic) String() string { return proto.CompactTextString(m) } -func (*Topic) ProtoMessage() {} -func (*Topic) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Topic) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Topic) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// A message data and its attributes. The message payload must not be empty; -// it must contain either a non-empty data field, or at least one attribute. -type PubsubMessage struct { - // The message payload. - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - // Optional attributes for this message. - Attributes map[string]string `protobuf:"bytes,2,rep,name=attributes" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // ID of this message, assigned by the server when the message is published. - // Guaranteed to be unique within the topic. This value may be read by a - // subscriber that receives a `PubsubMessage` via a `Pull` call or a push - // delivery. It must not be populated by the publisher in a `Publish` call. - MessageId string `protobuf:"bytes,3,opt,name=message_id,json=messageId" json:"message_id,omitempty"` - // The time at which the message was published, populated by the server when - // it receives the `Publish` call. It must not be populated by the - // publisher in a `Publish` call. - PublishTime *google_protobuf4.Timestamp `protobuf:"bytes,4,opt,name=publish_time,json=publishTime" json:"publish_time,omitempty"` -} - -func (m *PubsubMessage) Reset() { *m = PubsubMessage{} } -func (m *PubsubMessage) String() string { return proto.CompactTextString(m) } -func (*PubsubMessage) ProtoMessage() {} -func (*PubsubMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *PubsubMessage) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -func (m *PubsubMessage) GetAttributes() map[string]string { - if m != nil { - return m.Attributes - } - return nil -} - -func (m *PubsubMessage) GetMessageId() string { - if m != nil { - return m.MessageId - } - return "" -} - -func (m *PubsubMessage) GetPublishTime() *google_protobuf4.Timestamp { - if m != nil { - return m.PublishTime - } - return nil -} - -// Request for the GetTopic method. -type GetTopicRequest struct { - // The name of the topic to get. - // Format is `projects/{project}/topics/{topic}`. - Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` -} - -func (m *GetTopicRequest) Reset() { *m = GetTopicRequest{} } -func (m *GetTopicRequest) String() string { return proto.CompactTextString(m) } -func (*GetTopicRequest) ProtoMessage() {} -func (*GetTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *GetTopicRequest) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -// Request for the UpdateTopic method. -type UpdateTopicRequest struct { - // The topic to update. - Topic *Topic `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` - // Indicates which fields in the provided topic to update. - // Must be specified and non-empty. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateTopicRequest) Reset() { *m = UpdateTopicRequest{} } -func (m *UpdateTopicRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateTopicRequest) ProtoMessage() {} -func (*UpdateTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *UpdateTopicRequest) GetTopic() *Topic { - if m != nil { - return m.Topic - } - return nil -} - -func (m *UpdateTopicRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request for the Publish method. -type PublishRequest struct { - // The messages in the request will be published on this topic. - // Format is `projects/{project}/topics/{topic}`. - Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` - // The messages to publish. - Messages []*PubsubMessage `protobuf:"bytes,2,rep,name=messages" json:"messages,omitempty"` -} - -func (m *PublishRequest) Reset() { *m = PublishRequest{} } -func (m *PublishRequest) String() string { return proto.CompactTextString(m) } -func (*PublishRequest) ProtoMessage() {} -func (*PublishRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *PublishRequest) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -func (m *PublishRequest) GetMessages() []*PubsubMessage { - if m != nil { - return m.Messages - } - return nil -} - -// Response for the `Publish` method. -type PublishResponse struct { - // The server-assigned ID of each published message, in the same order as - // the messages in the request. IDs are guaranteed to be unique within - // the topic. - MessageIds []string `protobuf:"bytes,1,rep,name=message_ids,json=messageIds" json:"message_ids,omitempty"` -} - -func (m *PublishResponse) Reset() { *m = PublishResponse{} } -func (m *PublishResponse) String() string { return proto.CompactTextString(m) } -func (*PublishResponse) ProtoMessage() {} -func (*PublishResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *PublishResponse) GetMessageIds() []string { - if m != nil { - return m.MessageIds - } - return nil -} - -// Request for the `ListTopics` method. -type ListTopicsRequest struct { - // The name of the cloud project that topics belong to. - // Format is `projects/{project}`. - Project string `protobuf:"bytes,1,opt,name=project" json:"project,omitempty"` - // Maximum number of topics to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last `ListTopicsResponse`; indicates that this is - // a continuation of a prior `ListTopics` call, and that the system should - // return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListTopicsRequest) Reset() { *m = ListTopicsRequest{} } -func (m *ListTopicsRequest) String() string { return proto.CompactTextString(m) } -func (*ListTopicsRequest) ProtoMessage() {} -func (*ListTopicsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ListTopicsRequest) GetProject() string { - if m != nil { - return m.Project - } - return "" -} - -func (m *ListTopicsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTopicsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the `ListTopics` method. -type ListTopicsResponse struct { - // The resulting topics. - Topics []*Topic `protobuf:"bytes,1,rep,name=topics" json:"topics,omitempty"` - // If not empty, indicates that there may be more topics that match the - // request; this value should be passed in a new `ListTopicsRequest`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTopicsResponse) Reset() { *m = ListTopicsResponse{} } -func (m *ListTopicsResponse) String() string { return proto.CompactTextString(m) } -func (*ListTopicsResponse) ProtoMessage() {} -func (*ListTopicsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ListTopicsResponse) GetTopics() []*Topic { - if m != nil { - return m.Topics - } - return nil -} - -func (m *ListTopicsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the `ListTopicSubscriptions` method. -type ListTopicSubscriptionsRequest struct { - // The name of the topic that subscriptions are attached to. - // Format is `projects/{project}/topics/{topic}`. - Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` - // Maximum number of subscription names to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last `ListTopicSubscriptionsResponse`; indicates - // that this is a continuation of a prior `ListTopicSubscriptions` call, and - // that the system should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListTopicSubscriptionsRequest) Reset() { *m = ListTopicSubscriptionsRequest{} } -func (m *ListTopicSubscriptionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListTopicSubscriptionsRequest) ProtoMessage() {} -func (*ListTopicSubscriptionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ListTopicSubscriptionsRequest) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -func (m *ListTopicSubscriptionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTopicSubscriptionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the `ListTopicSubscriptions` method. -type ListTopicSubscriptionsResponse struct { - // The names of the subscriptions that match the request. - Subscriptions []string `protobuf:"bytes,1,rep,name=subscriptions" json:"subscriptions,omitempty"` - // If not empty, indicates that there may be more subscriptions that match - // the request; this value should be passed in a new - // `ListTopicSubscriptionsRequest` to get more subscriptions. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTopicSubscriptionsResponse) Reset() { *m = ListTopicSubscriptionsResponse{} } -func (m *ListTopicSubscriptionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListTopicSubscriptionsResponse) ProtoMessage() {} -func (*ListTopicSubscriptionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *ListTopicSubscriptionsResponse) GetSubscriptions() []string { - if m != nil { - return m.Subscriptions - } - return nil -} - -func (m *ListTopicSubscriptionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the `DeleteTopic` method. -type DeleteTopicRequest struct { - // Name of the topic to delete. - // Format is `projects/{project}/topics/{topic}`. - Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` -} - -func (m *DeleteTopicRequest) Reset() { *m = DeleteTopicRequest{} } -func (m *DeleteTopicRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteTopicRequest) ProtoMessage() {} -func (*DeleteTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *DeleteTopicRequest) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -// A subscription resource. -type Subscription struct { - // The name of the subscription. It must have the format - // `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must - // start with a letter, and contain only letters (`[A-Za-z]`), numbers - // (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), - // plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters - // in length, and it must not start with `"goog"`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the topic from which this subscription is receiving messages. - // Format is `projects/{project}/topics/{topic}`. - // The value of this field will be `_deleted-topic_` if the topic has been - // deleted. - Topic string `protobuf:"bytes,2,opt,name=topic" json:"topic,omitempty"` - // If push delivery is used with this subscription, this field is - // used to configure it. An empty `pushConfig` signifies that the subscriber - // will pull and ack messages using API methods. - PushConfig *PushConfig `protobuf:"bytes,4,opt,name=push_config,json=pushConfig" json:"push_config,omitempty"` - // This value is the maximum time after a subscriber receives a message - // before the subscriber should acknowledge the message. After message - // delivery but before the ack deadline expires and before the message is - // acknowledged, it is an outstanding message and will not be delivered - // again during that time (on a best-effort basis). - // - // For pull subscriptions, this value is used as the initial value for the ack - // deadline. To override this value for a given message, call - // `ModifyAckDeadline` with the corresponding `ack_id` if using - // pull. - // The minimum custom deadline you can specify is 10 seconds. - // The maximum custom deadline you can specify is 600 seconds (10 minutes). - // If this parameter is 0, a default value of 10 seconds is used. - // - // For push delivery, this value is also used to set the request timeout for - // the call to the push endpoint. - // - // If the subscriber never acknowledges the message, the Pub/Sub - // system will eventually redeliver the message. - AckDeadlineSeconds int32 `protobuf:"varint,5,opt,name=ack_deadline_seconds,json=ackDeadlineSeconds" json:"ack_deadline_seconds,omitempty"` - // Indicates whether to retain acknowledged messages. If true, then - // messages are not expunged from the subscription's backlog, even if they are - // acknowledged, until they fall out of the `message_retention_duration` - // window. - RetainAckedMessages bool `protobuf:"varint,7,opt,name=retain_acked_messages,json=retainAckedMessages" json:"retain_acked_messages,omitempty"` - // How long to retain unacknowledged messages in the subscription's backlog, - // from the moment a message is published. - // If `retain_acked_messages` is true, then this also configures the retention - // of acknowledged messages, and thus configures how far back in time a `Seek` - // can be done. Defaults to 7 days. Cannot be more than 7 days or less than 10 - // minutes. - MessageRetentionDuration *google_protobuf1.Duration `protobuf:"bytes,8,opt,name=message_retention_duration,json=messageRetentionDuration" json:"message_retention_duration,omitempty"` - // User labels. - Labels map[string]string `protobuf:"bytes,9,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Subscription) Reset() { *m = Subscription{} } -func (m *Subscription) String() string { return proto.CompactTextString(m) } -func (*Subscription) ProtoMessage() {} -func (*Subscription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *Subscription) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Subscription) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -func (m *Subscription) GetPushConfig() *PushConfig { - if m != nil { - return m.PushConfig - } - return nil -} - -func (m *Subscription) GetAckDeadlineSeconds() int32 { - if m != nil { - return m.AckDeadlineSeconds - } - return 0 -} - -func (m *Subscription) GetRetainAckedMessages() bool { - if m != nil { - return m.RetainAckedMessages - } - return false -} - -func (m *Subscription) GetMessageRetentionDuration() *google_protobuf1.Duration { - if m != nil { - return m.MessageRetentionDuration - } - return nil -} - -func (m *Subscription) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// Configuration for a push delivery endpoint. -type PushConfig struct { - // A URL locating the endpoint to which messages should be pushed. - // For example, a Webhook endpoint might use "https://example.com/push". - PushEndpoint string `protobuf:"bytes,1,opt,name=push_endpoint,json=pushEndpoint" json:"push_endpoint,omitempty"` - // Endpoint configuration attributes. - // - // Every endpoint has a set of API supported attributes that can be used to - // control different aspects of the message delivery. - // - // The currently supported attribute is `x-goog-version`, which you can - // use to change the format of the pushed message. This attribute - // indicates the version of the data expected by the endpoint. This - // controls the shape of the pushed message (i.e., its fields and metadata). - // The endpoint version is based on the version of the Pub/Sub API. - // - // If not present during the `CreateSubscription` call, it will default to - // the version of the API used to make such call. If not present during a - // `ModifyPushConfig` call, its value will not be changed. `GetSubscription` - // calls will always return a valid version, even if the subscription was - // created without this attribute. - // - // The possible values for this attribute are: - // - // * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. - // * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API. - Attributes map[string]string `protobuf:"bytes,2,rep,name=attributes" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *PushConfig) Reset() { *m = PushConfig{} } -func (m *PushConfig) String() string { return proto.CompactTextString(m) } -func (*PushConfig) ProtoMessage() {} -func (*PushConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *PushConfig) GetPushEndpoint() string { - if m != nil { - return m.PushEndpoint - } - return "" -} - -func (m *PushConfig) GetAttributes() map[string]string { - if m != nil { - return m.Attributes - } - return nil -} - -// A message and its corresponding acknowledgment ID. -type ReceivedMessage struct { - // This ID can be used to acknowledge the received message. - AckId string `protobuf:"bytes,1,opt,name=ack_id,json=ackId" json:"ack_id,omitempty"` - // The message. - Message *PubsubMessage `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` -} - -func (m *ReceivedMessage) Reset() { *m = ReceivedMessage{} } -func (m *ReceivedMessage) String() string { return proto.CompactTextString(m) } -func (*ReceivedMessage) ProtoMessage() {} -func (*ReceivedMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *ReceivedMessage) GetAckId() string { - if m != nil { - return m.AckId - } - return "" -} - -func (m *ReceivedMessage) GetMessage() *PubsubMessage { - if m != nil { - return m.Message - } - return nil -} - -// Request for the GetSubscription method. -type GetSubscriptionRequest struct { - // The name of the subscription to get. - // Format is `projects/{project}/subscriptions/{sub}`. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` -} - -func (m *GetSubscriptionRequest) Reset() { *m = GetSubscriptionRequest{} } -func (m *GetSubscriptionRequest) String() string { return proto.CompactTextString(m) } -func (*GetSubscriptionRequest) ProtoMessage() {} -func (*GetSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *GetSubscriptionRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -// Request for the UpdateSubscription method. -type UpdateSubscriptionRequest struct { - // The updated subscription object. - Subscription *Subscription `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // Indicates which fields in the provided subscription to update. - // Must be specified and non-empty. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateSubscriptionRequest) Reset() { *m = UpdateSubscriptionRequest{} } -func (m *UpdateSubscriptionRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateSubscriptionRequest) ProtoMessage() {} -func (*UpdateSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *UpdateSubscriptionRequest) GetSubscription() *Subscription { - if m != nil { - return m.Subscription - } - return nil -} - -func (m *UpdateSubscriptionRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request for the `ListSubscriptions` method. -type ListSubscriptionsRequest struct { - // The name of the cloud project that subscriptions belong to. - // Format is `projects/{project}`. - Project string `protobuf:"bytes,1,opt,name=project" json:"project,omitempty"` - // Maximum number of subscriptions to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last `ListSubscriptionsResponse`; indicates that - // this is a continuation of a prior `ListSubscriptions` call, and that the - // system should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListSubscriptionsRequest) Reset() { *m = ListSubscriptionsRequest{} } -func (m *ListSubscriptionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListSubscriptionsRequest) ProtoMessage() {} -func (*ListSubscriptionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *ListSubscriptionsRequest) GetProject() string { - if m != nil { - return m.Project - } - return "" -} - -func (m *ListSubscriptionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListSubscriptionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the `ListSubscriptions` method. -type ListSubscriptionsResponse struct { - // The subscriptions that match the request. - Subscriptions []*Subscription `protobuf:"bytes,1,rep,name=subscriptions" json:"subscriptions,omitempty"` - // If not empty, indicates that there may be more subscriptions that match - // the request; this value should be passed in a new - // `ListSubscriptionsRequest` to get more subscriptions. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListSubscriptionsResponse) Reset() { *m = ListSubscriptionsResponse{} } -func (m *ListSubscriptionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListSubscriptionsResponse) ProtoMessage() {} -func (*ListSubscriptionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *ListSubscriptionsResponse) GetSubscriptions() []*Subscription { - if m != nil { - return m.Subscriptions - } - return nil -} - -func (m *ListSubscriptionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the DeleteSubscription method. -type DeleteSubscriptionRequest struct { - // The subscription to delete. - // Format is `projects/{project}/subscriptions/{sub}`. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` -} - -func (m *DeleteSubscriptionRequest) Reset() { *m = DeleteSubscriptionRequest{} } -func (m *DeleteSubscriptionRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSubscriptionRequest) ProtoMessage() {} -func (*DeleteSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *DeleteSubscriptionRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -// Request for the ModifyPushConfig method. -type ModifyPushConfigRequest struct { - // The name of the subscription. - // Format is `projects/{project}/subscriptions/{sub}`. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // The push configuration for future deliveries. - // - // An empty `pushConfig` indicates that the Pub/Sub system should - // stop pushing messages from the given subscription and allow - // messages to be pulled and acknowledged - effectively pausing - // the subscription if `Pull` is not called. - PushConfig *PushConfig `protobuf:"bytes,2,opt,name=push_config,json=pushConfig" json:"push_config,omitempty"` -} - -func (m *ModifyPushConfigRequest) Reset() { *m = ModifyPushConfigRequest{} } -func (m *ModifyPushConfigRequest) String() string { return proto.CompactTextString(m) } -func (*ModifyPushConfigRequest) ProtoMessage() {} -func (*ModifyPushConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *ModifyPushConfigRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *ModifyPushConfigRequest) GetPushConfig() *PushConfig { - if m != nil { - return m.PushConfig - } - return nil -} - -// Request for the `Pull` method. -type PullRequest struct { - // The subscription from which messages should be pulled. - // Format is `projects/{project}/subscriptions/{sub}`. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // If this field set to true, the system will respond immediately even if - // it there are no messages available to return in the `Pull` response. - // Otherwise, the system may wait (for a bounded amount of time) until at - // least one message is available, rather than returning no messages. The - // client may cancel the request if it does not wish to wait any longer for - // the response. - ReturnImmediately bool `protobuf:"varint,2,opt,name=return_immediately,json=returnImmediately" json:"return_immediately,omitempty"` - // The maximum number of messages returned for this request. The Pub/Sub - // system may return fewer than the number specified. - MaxMessages int32 `protobuf:"varint,3,opt,name=max_messages,json=maxMessages" json:"max_messages,omitempty"` -} - -func (m *PullRequest) Reset() { *m = PullRequest{} } -func (m *PullRequest) String() string { return proto.CompactTextString(m) } -func (*PullRequest) ProtoMessage() {} -func (*PullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *PullRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *PullRequest) GetReturnImmediately() bool { - if m != nil { - return m.ReturnImmediately - } - return false -} - -func (m *PullRequest) GetMaxMessages() int32 { - if m != nil { - return m.MaxMessages - } - return 0 -} - -// Response for the `Pull` method. -type PullResponse struct { - // Received Pub/Sub messages. The Pub/Sub system will return zero messages if - // there are no more available in the backlog. The Pub/Sub system may return - // fewer than the `maxMessages` requested even if there are more messages - // available in the backlog. - ReceivedMessages []*ReceivedMessage `protobuf:"bytes,1,rep,name=received_messages,json=receivedMessages" json:"received_messages,omitempty"` -} - -func (m *PullResponse) Reset() { *m = PullResponse{} } -func (m *PullResponse) String() string { return proto.CompactTextString(m) } -func (*PullResponse) ProtoMessage() {} -func (*PullResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *PullResponse) GetReceivedMessages() []*ReceivedMessage { - if m != nil { - return m.ReceivedMessages - } - return nil -} - -// Request for the ModifyAckDeadline method. -type ModifyAckDeadlineRequest struct { - // The name of the subscription. - // Format is `projects/{project}/subscriptions/{sub}`. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // List of acknowledgment IDs. - AckIds []string `protobuf:"bytes,4,rep,name=ack_ids,json=ackIds" json:"ack_ids,omitempty"` - // The new ack deadline with respect to the time this request was sent to - // the Pub/Sub system. For example, if the value is 10, the new - // ack deadline will expire 10 seconds after the `ModifyAckDeadline` call - // was made. Specifying zero may immediately make the message available for - // another pull request. - // The minimum deadline you can specify is 0 seconds. - // The maximum deadline you can specify is 600 seconds (10 minutes). - AckDeadlineSeconds int32 `protobuf:"varint,3,opt,name=ack_deadline_seconds,json=ackDeadlineSeconds" json:"ack_deadline_seconds,omitempty"` -} - -func (m *ModifyAckDeadlineRequest) Reset() { *m = ModifyAckDeadlineRequest{} } -func (m *ModifyAckDeadlineRequest) String() string { return proto.CompactTextString(m) } -func (*ModifyAckDeadlineRequest) ProtoMessage() {} -func (*ModifyAckDeadlineRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } - -func (m *ModifyAckDeadlineRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *ModifyAckDeadlineRequest) GetAckIds() []string { - if m != nil { - return m.AckIds - } - return nil -} - -func (m *ModifyAckDeadlineRequest) GetAckDeadlineSeconds() int32 { - if m != nil { - return m.AckDeadlineSeconds - } - return 0 -} - -// Request for the Acknowledge method. -type AcknowledgeRequest struct { - // The subscription whose message is being acknowledged. - // Format is `projects/{project}/subscriptions/{sub}`. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // The acknowledgment ID for the messages being acknowledged that was returned - // by the Pub/Sub system in the `Pull` response. Must not be empty. - AckIds []string `protobuf:"bytes,2,rep,name=ack_ids,json=ackIds" json:"ack_ids,omitempty"` -} - -func (m *AcknowledgeRequest) Reset() { *m = AcknowledgeRequest{} } -func (m *AcknowledgeRequest) String() string { return proto.CompactTextString(m) } -func (*AcknowledgeRequest) ProtoMessage() {} -func (*AcknowledgeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } - -func (m *AcknowledgeRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *AcknowledgeRequest) GetAckIds() []string { - if m != nil { - return m.AckIds - } - return nil -} - -// Request for the `StreamingPull` streaming RPC method. This request is used to -// establish the initial stream as well as to stream acknowledgements and ack -// deadline modifications from the client to the server. -type StreamingPullRequest struct { - // The subscription for which to initialize the new stream. This must be - // provided in the first request on the stream, and must not be set in - // subsequent requests from client to server. - // Format is `projects/{project}/subscriptions/{sub}`. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // List of acknowledgement IDs for acknowledging previously received messages - // (received on this stream or a different stream). If an ack ID has expired, - // the corresponding message may be redelivered later. Acknowledging a message - // more than once will not result in an error. If the acknowledgement ID is - // malformed, the stream will be aborted with status `INVALID_ARGUMENT`. - AckIds []string `protobuf:"bytes,2,rep,name=ack_ids,json=ackIds" json:"ack_ids,omitempty"` - // The list of new ack deadlines for the IDs listed in - // `modify_deadline_ack_ids`. The size of this list must be the same as the - // size of `modify_deadline_ack_ids`. If it differs the stream will be aborted - // with `INVALID_ARGUMENT`. Each element in this list is applied to the - // element in the same position in `modify_deadline_ack_ids`. The new ack - // deadline is with respect to the time this request was sent to the Pub/Sub - // system. Must be >= 0. For example, if the value is 10, the new ack deadline - // will expire 10 seconds after this request is received. If the value is 0, - // the message is immediately made available for another streaming or - // non-streaming pull request. If the value is < 0 (an error), the stream will - // be aborted with status `INVALID_ARGUMENT`. - ModifyDeadlineSeconds []int32 `protobuf:"varint,3,rep,packed,name=modify_deadline_seconds,json=modifyDeadlineSeconds" json:"modify_deadline_seconds,omitempty"` - // List of acknowledgement IDs whose deadline will be modified based on the - // corresponding element in `modify_deadline_seconds`. This field can be used - // to indicate that more time is needed to process a message by the - // subscriber, or to make the message available for redelivery if the - // processing was interrupted. - ModifyDeadlineAckIds []string `protobuf:"bytes,4,rep,name=modify_deadline_ack_ids,json=modifyDeadlineAckIds" json:"modify_deadline_ack_ids,omitempty"` - // The ack deadline to use for the stream. This must be provided in the - // first request on the stream, but it can also be updated on subsequent - // requests from client to server. The minimum deadline you can specify is 10 - // seconds. The maximum deadline you can specify is 600 seconds (10 minutes). - StreamAckDeadlineSeconds int32 `protobuf:"varint,5,opt,name=stream_ack_deadline_seconds,json=streamAckDeadlineSeconds" json:"stream_ack_deadline_seconds,omitempty"` -} - -func (m *StreamingPullRequest) Reset() { *m = StreamingPullRequest{} } -func (m *StreamingPullRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingPullRequest) ProtoMessage() {} -func (*StreamingPullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } - -func (m *StreamingPullRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *StreamingPullRequest) GetAckIds() []string { - if m != nil { - return m.AckIds - } - return nil -} - -func (m *StreamingPullRequest) GetModifyDeadlineSeconds() []int32 { - if m != nil { - return m.ModifyDeadlineSeconds - } - return nil -} - -func (m *StreamingPullRequest) GetModifyDeadlineAckIds() []string { - if m != nil { - return m.ModifyDeadlineAckIds - } - return nil -} - -func (m *StreamingPullRequest) GetStreamAckDeadlineSeconds() int32 { - if m != nil { - return m.StreamAckDeadlineSeconds - } - return 0 -} - -// Response for the `StreamingPull` method. This response is used to stream -// messages from the server to the client. -type StreamingPullResponse struct { - // Received Pub/Sub messages. This will not be empty. - ReceivedMessages []*ReceivedMessage `protobuf:"bytes,1,rep,name=received_messages,json=receivedMessages" json:"received_messages,omitempty"` -} - -func (m *StreamingPullResponse) Reset() { *m = StreamingPullResponse{} } -func (m *StreamingPullResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingPullResponse) ProtoMessage() {} -func (*StreamingPullResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } - -func (m *StreamingPullResponse) GetReceivedMessages() []*ReceivedMessage { - if m != nil { - return m.ReceivedMessages - } - return nil -} - -// Request for the `CreateSnapshot` method. -type CreateSnapshotRequest struct { - // Optional user-provided name for this snapshot. - // If the name is not provided in the request, the server will assign a random - // name for this snapshot on the same project as the subscription. - // Note that for REST API requests, you must specify a name. - // Format is `projects/{project}/snapshots/{snap}`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The subscription whose backlog the snapshot retains. - // Specifically, the created snapshot is guaranteed to retain: - // (a) The existing backlog on the subscription. More precisely, this is - // defined as the messages in the subscription's backlog that are - // unacknowledged upon the successful completion of the - // `CreateSnapshot` request; as well as: - // (b) Any messages published to the subscription's topic following the - // successful completion of the CreateSnapshot request. - // Format is `projects/{project}/subscriptions/{sub}`. - Subscription string `protobuf:"bytes,2,opt,name=subscription" json:"subscription,omitempty"` -} - -func (m *CreateSnapshotRequest) Reset() { *m = CreateSnapshotRequest{} } -func (m *CreateSnapshotRequest) String() string { return proto.CompactTextString(m) } -func (*CreateSnapshotRequest) ProtoMessage() {} -func (*CreateSnapshotRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } - -func (m *CreateSnapshotRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *CreateSnapshotRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -// Request for the UpdateSnapshot method. -type UpdateSnapshotRequest struct { - // The updated snpashot object. - Snapshot *Snapshot `protobuf:"bytes,1,opt,name=snapshot" json:"snapshot,omitempty"` - // Indicates which fields in the provided snapshot to update. - // Must be specified and non-empty. - UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdateSnapshotRequest) Reset() { *m = UpdateSnapshotRequest{} } -func (m *UpdateSnapshotRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateSnapshotRequest) ProtoMessage() {} -func (*UpdateSnapshotRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } - -func (m *UpdateSnapshotRequest) GetSnapshot() *Snapshot { - if m != nil { - return m.Snapshot - } - return nil -} - -func (m *UpdateSnapshotRequest) GetUpdateMask() *google_protobuf3.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// A snapshot resource. -type Snapshot struct { - // The name of the snapshot. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the topic from which this snapshot is retaining messages. - Topic string `protobuf:"bytes,2,opt,name=topic" json:"topic,omitempty"` - // The snapshot is guaranteed to exist up until this time. - // A newly-created snapshot expires no later than 7 days from the time of its - // creation. Its exact lifetime is determined at creation by the existing - // backlog in the source subscription. Specifically, the lifetime of the - // snapshot is `7 days - (age of oldest unacked message in the subscription)`. - // For example, consider a subscription whose oldest unacked message is 3 days - // old. If a snapshot is created from this subscription, the snapshot -- which - // will always capture this 3-day-old backlog as long as the snapshot - // exists -- will expire in 4 days. - ExpireTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` - // User labels. - Labels map[string]string `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Snapshot) Reset() { *m = Snapshot{} } -func (m *Snapshot) String() string { return proto.CompactTextString(m) } -func (*Snapshot) ProtoMessage() {} -func (*Snapshot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } - -func (m *Snapshot) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Snapshot) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -func (m *Snapshot) GetExpireTime() *google_protobuf4.Timestamp { - if m != nil { - return m.ExpireTime - } - return nil -} - -func (m *Snapshot) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// Request for the `ListSnapshots` method. -type ListSnapshotsRequest struct { - // The name of the cloud project that snapshots belong to. - // Format is `projects/{project}`. - Project string `protobuf:"bytes,1,opt,name=project" json:"project,omitempty"` - // Maximum number of snapshots to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last `ListSnapshotsResponse`; indicates that this - // is a continuation of a prior `ListSnapshots` call, and that the system - // should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListSnapshotsRequest) Reset() { *m = ListSnapshotsRequest{} } -func (m *ListSnapshotsRequest) String() string { return proto.CompactTextString(m) } -func (*ListSnapshotsRequest) ProtoMessage() {} -func (*ListSnapshotsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } - -func (m *ListSnapshotsRequest) GetProject() string { - if m != nil { - return m.Project - } - return "" -} - -func (m *ListSnapshotsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListSnapshotsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the `ListSnapshots` method. -type ListSnapshotsResponse struct { - // The resulting snapshots. - Snapshots []*Snapshot `protobuf:"bytes,1,rep,name=snapshots" json:"snapshots,omitempty"` - // If not empty, indicates that there may be more snapshot that match the - // request; this value should be passed in a new `ListSnapshotsRequest`. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListSnapshotsResponse) Reset() { *m = ListSnapshotsResponse{} } -func (m *ListSnapshotsResponse) String() string { return proto.CompactTextString(m) } -func (*ListSnapshotsResponse) ProtoMessage() {} -func (*ListSnapshotsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } - -func (m *ListSnapshotsResponse) GetSnapshots() []*Snapshot { - if m != nil { - return m.Snapshots - } - return nil -} - -func (m *ListSnapshotsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the `DeleteSnapshot` method. -type DeleteSnapshotRequest struct { - // The name of the snapshot to delete. - // Format is `projects/{project}/snapshots/{snap}`. - Snapshot string `protobuf:"bytes,1,opt,name=snapshot" json:"snapshot,omitempty"` -} - -func (m *DeleteSnapshotRequest) Reset() { *m = DeleteSnapshotRequest{} } -func (m *DeleteSnapshotRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSnapshotRequest) ProtoMessage() {} -func (*DeleteSnapshotRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } - -func (m *DeleteSnapshotRequest) GetSnapshot() string { - if m != nil { - return m.Snapshot - } - return "" -} - -// Request for the `Seek` method. -type SeekRequest struct { - // The subscription to affect. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // Types that are valid to be assigned to Target: - // *SeekRequest_Time - // *SeekRequest_Snapshot - Target isSeekRequest_Target `protobuf_oneof:"target"` -} - -func (m *SeekRequest) Reset() { *m = SeekRequest{} } -func (m *SeekRequest) String() string { return proto.CompactTextString(m) } -func (*SeekRequest) ProtoMessage() {} -func (*SeekRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } - -type isSeekRequest_Target interface { - isSeekRequest_Target() -} - -type SeekRequest_Time struct { - Time *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=time,oneof"` -} -type SeekRequest_Snapshot struct { - Snapshot string `protobuf:"bytes,3,opt,name=snapshot,oneof"` -} - -func (*SeekRequest_Time) isSeekRequest_Target() {} -func (*SeekRequest_Snapshot) isSeekRequest_Target() {} - -func (m *SeekRequest) GetTarget() isSeekRequest_Target { - if m != nil { - return m.Target - } - return nil -} - -func (m *SeekRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *SeekRequest) GetTime() *google_protobuf4.Timestamp { - if x, ok := m.GetTarget().(*SeekRequest_Time); ok { - return x.Time - } - return nil -} - -func (m *SeekRequest) GetSnapshot() string { - if x, ok := m.GetTarget().(*SeekRequest_Snapshot); ok { - return x.Snapshot - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*SeekRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _SeekRequest_OneofMarshaler, _SeekRequest_OneofUnmarshaler, _SeekRequest_OneofSizer, []interface{}{ - (*SeekRequest_Time)(nil), - (*SeekRequest_Snapshot)(nil), - } -} - -func _SeekRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*SeekRequest) - // target - switch x := m.Target.(type) { - case *SeekRequest_Time: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Time); err != nil { - return err - } - case *SeekRequest_Snapshot: - b.EncodeVarint(3<<3 | proto.WireBytes) - b.EncodeStringBytes(x.Snapshot) - case nil: - default: - return fmt.Errorf("SeekRequest.Target has unexpected type %T", x) - } - return nil -} - -func _SeekRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*SeekRequest) - switch tag { - case 2: // target.time - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf4.Timestamp) - err := b.DecodeMessage(msg) - m.Target = &SeekRequest_Time{msg} - return true, err - case 3: // target.snapshot - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Target = &SeekRequest_Snapshot{x} - return true, err - default: - return false, nil - } -} - -func _SeekRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*SeekRequest) - // target - switch x := m.Target.(type) { - case *SeekRequest_Time: - s := proto.Size(x.Time) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *SeekRequest_Snapshot: - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Snapshot))) - n += len(x.Snapshot) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type SeekResponse struct { -} - -func (m *SeekResponse) Reset() { *m = SeekResponse{} } -func (m *SeekResponse) String() string { return proto.CompactTextString(m) } -func (*SeekResponse) ProtoMessage() {} -func (*SeekResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } - -func init() { - proto.RegisterType((*Topic)(nil), "google.pubsub.v1.Topic") - proto.RegisterType((*PubsubMessage)(nil), "google.pubsub.v1.PubsubMessage") - proto.RegisterType((*GetTopicRequest)(nil), "google.pubsub.v1.GetTopicRequest") - proto.RegisterType((*UpdateTopicRequest)(nil), "google.pubsub.v1.UpdateTopicRequest") - proto.RegisterType((*PublishRequest)(nil), "google.pubsub.v1.PublishRequest") - proto.RegisterType((*PublishResponse)(nil), "google.pubsub.v1.PublishResponse") - proto.RegisterType((*ListTopicsRequest)(nil), "google.pubsub.v1.ListTopicsRequest") - proto.RegisterType((*ListTopicsResponse)(nil), "google.pubsub.v1.ListTopicsResponse") - proto.RegisterType((*ListTopicSubscriptionsRequest)(nil), "google.pubsub.v1.ListTopicSubscriptionsRequest") - proto.RegisterType((*ListTopicSubscriptionsResponse)(nil), "google.pubsub.v1.ListTopicSubscriptionsResponse") - proto.RegisterType((*DeleteTopicRequest)(nil), "google.pubsub.v1.DeleteTopicRequest") - proto.RegisterType((*Subscription)(nil), "google.pubsub.v1.Subscription") - proto.RegisterType((*PushConfig)(nil), "google.pubsub.v1.PushConfig") - proto.RegisterType((*ReceivedMessage)(nil), "google.pubsub.v1.ReceivedMessage") - proto.RegisterType((*GetSubscriptionRequest)(nil), "google.pubsub.v1.GetSubscriptionRequest") - proto.RegisterType((*UpdateSubscriptionRequest)(nil), "google.pubsub.v1.UpdateSubscriptionRequest") - proto.RegisterType((*ListSubscriptionsRequest)(nil), "google.pubsub.v1.ListSubscriptionsRequest") - proto.RegisterType((*ListSubscriptionsResponse)(nil), "google.pubsub.v1.ListSubscriptionsResponse") - proto.RegisterType((*DeleteSubscriptionRequest)(nil), "google.pubsub.v1.DeleteSubscriptionRequest") - proto.RegisterType((*ModifyPushConfigRequest)(nil), "google.pubsub.v1.ModifyPushConfigRequest") - proto.RegisterType((*PullRequest)(nil), "google.pubsub.v1.PullRequest") - proto.RegisterType((*PullResponse)(nil), "google.pubsub.v1.PullResponse") - proto.RegisterType((*ModifyAckDeadlineRequest)(nil), "google.pubsub.v1.ModifyAckDeadlineRequest") - proto.RegisterType((*AcknowledgeRequest)(nil), "google.pubsub.v1.AcknowledgeRequest") - proto.RegisterType((*StreamingPullRequest)(nil), "google.pubsub.v1.StreamingPullRequest") - proto.RegisterType((*StreamingPullResponse)(nil), "google.pubsub.v1.StreamingPullResponse") - proto.RegisterType((*CreateSnapshotRequest)(nil), "google.pubsub.v1.CreateSnapshotRequest") - proto.RegisterType((*UpdateSnapshotRequest)(nil), "google.pubsub.v1.UpdateSnapshotRequest") - proto.RegisterType((*Snapshot)(nil), "google.pubsub.v1.Snapshot") - proto.RegisterType((*ListSnapshotsRequest)(nil), "google.pubsub.v1.ListSnapshotsRequest") - proto.RegisterType((*ListSnapshotsResponse)(nil), "google.pubsub.v1.ListSnapshotsResponse") - proto.RegisterType((*DeleteSnapshotRequest)(nil), "google.pubsub.v1.DeleteSnapshotRequest") - proto.RegisterType((*SeekRequest)(nil), "google.pubsub.v1.SeekRequest") - proto.RegisterType((*SeekResponse)(nil), "google.pubsub.v1.SeekResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Subscriber service - -type SubscriberClient interface { - // Creates a subscription to a given topic. - // If the subscription already exists, returns `ALREADY_EXISTS`. - // If the corresponding topic doesn't exist, returns `NOT_FOUND`. - // - // If the name is not provided in the request, the server will assign a random - // name for this subscription on the same project as the topic, conforming - // to the - // [resource name format](https://cloud.google.com/pubsub/docs/overview#names). - // The generated name is populated in the returned Subscription object. - // Note that for REST API requests, you must specify a name in the request. - CreateSubscription(ctx context.Context, in *Subscription, opts ...grpc.CallOption) (*Subscription, error) - // Gets the configuration details of a subscription. - GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) - // Updates an existing subscription. Note that certain properties of a - // subscription, such as its topic, are not modifiable. - // NOTE: The style guide requires body: "subscription" instead of body: "*". - // Keeping the latter for internal consistency in V1, however it should be - // corrected in V2. See - // https://cloud.google.com/apis/design/standard_methods#update for details. - UpdateSubscription(ctx context.Context, in *UpdateSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) - // Lists matching subscriptions. - ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) - // Deletes an existing subscription. All messages retained in the subscription - // are immediately dropped. Calls to `Pull` after deletion will return - // `NOT_FOUND`. After a subscription is deleted, a new one may be created with - // the same name, but the new one has no association with the old - // subscription or its topic unless the same topic is specified. - DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Modifies the ack deadline for a specific message. This method is useful - // to indicate that more time is needed to process a message by the - // subscriber, or to make the message available for redelivery if the - // processing was interrupted. Note that this does not modify the - // subscription-level `ackDeadlineSeconds` used for subsequent messages. - ModifyAckDeadline(ctx context.Context, in *ModifyAckDeadlineRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Acknowledges the messages associated with the `ack_ids` in the - // `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages - // from the subscription. - // - // Acknowledging a message whose ack deadline has expired may succeed, - // but such a message may be redelivered later. Acknowledging a message more - // than once will not result in an error. - Acknowledge(ctx context.Context, in *AcknowledgeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Pulls messages from the server. Returns an empty list if there are no - // messages available in the backlog. The server may return `UNAVAILABLE` if - // there are too many concurrent pull requests pending for the given - // subscription. - Pull(ctx context.Context, in *PullRequest, opts ...grpc.CallOption) (*PullResponse, error) - // (EXPERIMENTAL) StreamingPull is an experimental feature. This RPC will - // respond with UNIMPLEMENTED errors unless you have been invited to test - // this feature. Contact cloud-pubsub@google.com with any questions. - // - // Establishes a stream with the server, which sends messages down to the - // client. The client streams acknowledgements and ack deadline modifications - // back to the server. The server will close the stream and return the status - // on any error. The server may close the stream with status `OK` to reassign - // server-side resources, in which case, the client should re-establish the - // stream. `UNAVAILABLE` may also be returned in the case of a transient error - // (e.g., a server restart). These should also be retried by the client. Flow - // control can be achieved by configuring the underlying RPC channel. - StreamingPull(ctx context.Context, opts ...grpc.CallOption) (Subscriber_StreamingPullClient, error) - // Modifies the `PushConfig` for a specified subscription. - // - // This may be used to change a push subscription to a pull one (signified by - // an empty `PushConfig`) or vice versa, or change the endpoint URL and other - // attributes of a push subscription. Messages will accumulate for delivery - // continuously through the call regardless of changes to the `PushConfig`. - ModifyPushConfig(ctx context.Context, in *ModifyPushConfigRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Lists the existing snapshots. - ListSnapshots(ctx context.Context, in *ListSnapshotsRequest, opts ...grpc.CallOption) (*ListSnapshotsResponse, error) - // Creates a snapshot from the requested subscription. - // If the snapshot already exists, returns `ALREADY_EXISTS`. - // If the requested subscription doesn't exist, returns `NOT_FOUND`. - // - // If the name is not provided in the request, the server will assign a random - // name for this snapshot on the same project as the subscription, conforming - // to the - // [resource name format](https://cloud.google.com/pubsub/docs/overview#names). - // The generated name is populated in the returned Snapshot object. - // Note that for REST API requests, you must specify a name in the request. - CreateSnapshot(ctx context.Context, in *CreateSnapshotRequest, opts ...grpc.CallOption) (*Snapshot, error) - // Updates an existing snapshot. Note that certain properties of a snapshot - // are not modifiable. - // NOTE: The style guide requires body: "snapshot" instead of body: "*". - // Keeping the latter for internal consistency in V1, however it should be - // corrected in V2. See - // https://cloud.google.com/apis/design/standard_methods#update for details. - UpdateSnapshot(ctx context.Context, in *UpdateSnapshotRequest, opts ...grpc.CallOption) (*Snapshot, error) - // Removes an existing snapshot. All messages retained in the snapshot - // are immediately dropped. After a snapshot is deleted, a new one may be - // created with the same name, but the new one has no association with the old - // snapshot or its subscription, unless the same subscription is specified. - DeleteSnapshot(ctx context.Context, in *DeleteSnapshotRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Seeks an existing subscription to a point in time or to a given snapshot, - // whichever is provided in the request. - Seek(ctx context.Context, in *SeekRequest, opts ...grpc.CallOption) (*SeekResponse, error) -} - -type subscriberClient struct { - cc *grpc.ClientConn -} - -func NewSubscriberClient(cc *grpc.ClientConn) SubscriberClient { - return &subscriberClient{cc} -} - -func (c *subscriberClient) CreateSubscription(ctx context.Context, in *Subscription, opts ...grpc.CallOption) (*Subscription, error) { - out := new(Subscription) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/CreateSubscription", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) { - out := new(Subscription) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/GetSubscription", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) UpdateSubscription(ctx context.Context, in *UpdateSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) { - out := new(Subscription) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/UpdateSubscription", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) { - out := new(ListSubscriptionsResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/ListSubscriptions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/DeleteSubscription", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) ModifyAckDeadline(ctx context.Context, in *ModifyAckDeadlineRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/ModifyAckDeadline", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) Acknowledge(ctx context.Context, in *AcknowledgeRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/Acknowledge", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) Pull(ctx context.Context, in *PullRequest, opts ...grpc.CallOption) (*PullResponse, error) { - out := new(PullResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/Pull", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) StreamingPull(ctx context.Context, opts ...grpc.CallOption) (Subscriber_StreamingPullClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Subscriber_serviceDesc.Streams[0], c.cc, "/google.pubsub.v1.Subscriber/StreamingPull", opts...) - if err != nil { - return nil, err - } - x := &subscriberStreamingPullClient{stream} - return x, nil -} - -type Subscriber_StreamingPullClient interface { - Send(*StreamingPullRequest) error - Recv() (*StreamingPullResponse, error) - grpc.ClientStream -} - -type subscriberStreamingPullClient struct { - grpc.ClientStream -} - -func (x *subscriberStreamingPullClient) Send(m *StreamingPullRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *subscriberStreamingPullClient) Recv() (*StreamingPullResponse, error) { - m := new(StreamingPullResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *subscriberClient) ModifyPushConfig(ctx context.Context, in *ModifyPushConfigRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/ModifyPushConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) ListSnapshots(ctx context.Context, in *ListSnapshotsRequest, opts ...grpc.CallOption) (*ListSnapshotsResponse, error) { - out := new(ListSnapshotsResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/ListSnapshots", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) CreateSnapshot(ctx context.Context, in *CreateSnapshotRequest, opts ...grpc.CallOption) (*Snapshot, error) { - out := new(Snapshot) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/CreateSnapshot", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) UpdateSnapshot(ctx context.Context, in *UpdateSnapshotRequest, opts ...grpc.CallOption) (*Snapshot, error) { - out := new(Snapshot) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/UpdateSnapshot", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) DeleteSnapshot(ctx context.Context, in *DeleteSnapshotRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/DeleteSnapshot", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) Seek(ctx context.Context, in *SeekRequest, opts ...grpc.CallOption) (*SeekResponse, error) { - out := new(SeekResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Subscriber/Seek", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Subscriber service - -type SubscriberServer interface { - // Creates a subscription to a given topic. - // If the subscription already exists, returns `ALREADY_EXISTS`. - // If the corresponding topic doesn't exist, returns `NOT_FOUND`. - // - // If the name is not provided in the request, the server will assign a random - // name for this subscription on the same project as the topic, conforming - // to the - // [resource name format](https://cloud.google.com/pubsub/docs/overview#names). - // The generated name is populated in the returned Subscription object. - // Note that for REST API requests, you must specify a name in the request. - CreateSubscription(context.Context, *Subscription) (*Subscription, error) - // Gets the configuration details of a subscription. - GetSubscription(context.Context, *GetSubscriptionRequest) (*Subscription, error) - // Updates an existing subscription. Note that certain properties of a - // subscription, such as its topic, are not modifiable. - // NOTE: The style guide requires body: "subscription" instead of body: "*". - // Keeping the latter for internal consistency in V1, however it should be - // corrected in V2. See - // https://cloud.google.com/apis/design/standard_methods#update for details. - UpdateSubscription(context.Context, *UpdateSubscriptionRequest) (*Subscription, error) - // Lists matching subscriptions. - ListSubscriptions(context.Context, *ListSubscriptionsRequest) (*ListSubscriptionsResponse, error) - // Deletes an existing subscription. All messages retained in the subscription - // are immediately dropped. Calls to `Pull` after deletion will return - // `NOT_FOUND`. After a subscription is deleted, a new one may be created with - // the same name, but the new one has no association with the old - // subscription or its topic unless the same topic is specified. - DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*google_protobuf2.Empty, error) - // Modifies the ack deadline for a specific message. This method is useful - // to indicate that more time is needed to process a message by the - // subscriber, or to make the message available for redelivery if the - // processing was interrupted. Note that this does not modify the - // subscription-level `ackDeadlineSeconds` used for subsequent messages. - ModifyAckDeadline(context.Context, *ModifyAckDeadlineRequest) (*google_protobuf2.Empty, error) - // Acknowledges the messages associated with the `ack_ids` in the - // `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages - // from the subscription. - // - // Acknowledging a message whose ack deadline has expired may succeed, - // but such a message may be redelivered later. Acknowledging a message more - // than once will not result in an error. - Acknowledge(context.Context, *AcknowledgeRequest) (*google_protobuf2.Empty, error) - // Pulls messages from the server. Returns an empty list if there are no - // messages available in the backlog. The server may return `UNAVAILABLE` if - // there are too many concurrent pull requests pending for the given - // subscription. - Pull(context.Context, *PullRequest) (*PullResponse, error) - // (EXPERIMENTAL) StreamingPull is an experimental feature. This RPC will - // respond with UNIMPLEMENTED errors unless you have been invited to test - // this feature. Contact cloud-pubsub@google.com with any questions. - // - // Establishes a stream with the server, which sends messages down to the - // client. The client streams acknowledgements and ack deadline modifications - // back to the server. The server will close the stream and return the status - // on any error. The server may close the stream with status `OK` to reassign - // server-side resources, in which case, the client should re-establish the - // stream. `UNAVAILABLE` may also be returned in the case of a transient error - // (e.g., a server restart). These should also be retried by the client. Flow - // control can be achieved by configuring the underlying RPC channel. - StreamingPull(Subscriber_StreamingPullServer) error - // Modifies the `PushConfig` for a specified subscription. - // - // This may be used to change a push subscription to a pull one (signified by - // an empty `PushConfig`) or vice versa, or change the endpoint URL and other - // attributes of a push subscription. Messages will accumulate for delivery - // continuously through the call regardless of changes to the `PushConfig`. - ModifyPushConfig(context.Context, *ModifyPushConfigRequest) (*google_protobuf2.Empty, error) - // Lists the existing snapshots. - ListSnapshots(context.Context, *ListSnapshotsRequest) (*ListSnapshotsResponse, error) - // Creates a snapshot from the requested subscription. - // If the snapshot already exists, returns `ALREADY_EXISTS`. - // If the requested subscription doesn't exist, returns `NOT_FOUND`. - // - // If the name is not provided in the request, the server will assign a random - // name for this snapshot on the same project as the subscription, conforming - // to the - // [resource name format](https://cloud.google.com/pubsub/docs/overview#names). - // The generated name is populated in the returned Snapshot object. - // Note that for REST API requests, you must specify a name in the request. - CreateSnapshot(context.Context, *CreateSnapshotRequest) (*Snapshot, error) - // Updates an existing snapshot. Note that certain properties of a snapshot - // are not modifiable. - // NOTE: The style guide requires body: "snapshot" instead of body: "*". - // Keeping the latter for internal consistency in V1, however it should be - // corrected in V2. See - // https://cloud.google.com/apis/design/standard_methods#update for details. - UpdateSnapshot(context.Context, *UpdateSnapshotRequest) (*Snapshot, error) - // Removes an existing snapshot. All messages retained in the snapshot - // are immediately dropped. After a snapshot is deleted, a new one may be - // created with the same name, but the new one has no association with the old - // snapshot or its subscription, unless the same subscription is specified. - DeleteSnapshot(context.Context, *DeleteSnapshotRequest) (*google_protobuf2.Empty, error) - // Seeks an existing subscription to a point in time or to a given snapshot, - // whichever is provided in the request. - Seek(context.Context, *SeekRequest) (*SeekResponse, error) -} - -func RegisterSubscriberServer(s *grpc.Server, srv SubscriberServer) { - s.RegisterService(&_Subscriber_serviceDesc, srv) -} - -func _Subscriber_CreateSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Subscription) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).CreateSubscription(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/CreateSubscription", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).CreateSubscription(ctx, req.(*Subscription)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_GetSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSubscriptionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).GetSubscription(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/GetSubscription", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).GetSubscription(ctx, req.(*GetSubscriptionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_UpdateSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSubscriptionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).UpdateSubscription(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/UpdateSubscription", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).UpdateSubscription(ctx, req.(*UpdateSubscriptionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_ListSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSubscriptionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).ListSubscriptions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/ListSubscriptions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).ListSubscriptions(ctx, req.(*ListSubscriptionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_DeleteSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSubscriptionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).DeleteSubscription(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/DeleteSubscription", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).DeleteSubscription(ctx, req.(*DeleteSubscriptionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_ModifyAckDeadline_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyAckDeadlineRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).ModifyAckDeadline(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/ModifyAckDeadline", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).ModifyAckDeadline(ctx, req.(*ModifyAckDeadlineRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_Acknowledge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AcknowledgeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).Acknowledge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/Acknowledge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).Acknowledge(ctx, req.(*AcknowledgeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_Pull_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PullRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).Pull(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/Pull", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).Pull(ctx, req.(*PullRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_StreamingPull_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(SubscriberServer).StreamingPull(&subscriberStreamingPullServer{stream}) -} - -type Subscriber_StreamingPullServer interface { - Send(*StreamingPullResponse) error - Recv() (*StreamingPullRequest, error) - grpc.ServerStream -} - -type subscriberStreamingPullServer struct { - grpc.ServerStream -} - -func (x *subscriberStreamingPullServer) Send(m *StreamingPullResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *subscriberStreamingPullServer) Recv() (*StreamingPullRequest, error) { - m := new(StreamingPullRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _Subscriber_ModifyPushConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyPushConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).ModifyPushConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/ModifyPushConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).ModifyPushConfig(ctx, req.(*ModifyPushConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_ListSnapshots_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSnapshotsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).ListSnapshots(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/ListSnapshots", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).ListSnapshots(ctx, req.(*ListSnapshotsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_CreateSnapshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateSnapshotRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).CreateSnapshot(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/CreateSnapshot", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).CreateSnapshot(ctx, req.(*CreateSnapshotRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_UpdateSnapshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSnapshotRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).UpdateSnapshot(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/UpdateSnapshot", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).UpdateSnapshot(ctx, req.(*UpdateSnapshotRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_DeleteSnapshot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSnapshotRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).DeleteSnapshot(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/DeleteSnapshot", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).DeleteSnapshot(ctx, req.(*DeleteSnapshotRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_Seek_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SeekRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).Seek(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Subscriber/Seek", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).Seek(ctx, req.(*SeekRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Subscriber_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.pubsub.v1.Subscriber", - HandlerType: (*SubscriberServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateSubscription", - Handler: _Subscriber_CreateSubscription_Handler, - }, - { - MethodName: "GetSubscription", - Handler: _Subscriber_GetSubscription_Handler, - }, - { - MethodName: "UpdateSubscription", - Handler: _Subscriber_UpdateSubscription_Handler, - }, - { - MethodName: "ListSubscriptions", - Handler: _Subscriber_ListSubscriptions_Handler, - }, - { - MethodName: "DeleteSubscription", - Handler: _Subscriber_DeleteSubscription_Handler, - }, - { - MethodName: "ModifyAckDeadline", - Handler: _Subscriber_ModifyAckDeadline_Handler, - }, - { - MethodName: "Acknowledge", - Handler: _Subscriber_Acknowledge_Handler, - }, - { - MethodName: "Pull", - Handler: _Subscriber_Pull_Handler, - }, - { - MethodName: "ModifyPushConfig", - Handler: _Subscriber_ModifyPushConfig_Handler, - }, - { - MethodName: "ListSnapshots", - Handler: _Subscriber_ListSnapshots_Handler, - }, - { - MethodName: "CreateSnapshot", - Handler: _Subscriber_CreateSnapshot_Handler, - }, - { - MethodName: "UpdateSnapshot", - Handler: _Subscriber_UpdateSnapshot_Handler, - }, - { - MethodName: "DeleteSnapshot", - Handler: _Subscriber_DeleteSnapshot_Handler, - }, - { - MethodName: "Seek", - Handler: _Subscriber_Seek_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingPull", - Handler: _Subscriber_StreamingPull_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "google/pubsub/v1/pubsub.proto", -} - -// Client API for Publisher service - -type PublisherClient interface { - // Creates the given topic with the given name. - CreateTopic(ctx context.Context, in *Topic, opts ...grpc.CallOption) (*Topic, error) - // Updates an existing topic. Note that certain properties of a topic are not - // modifiable. Options settings follow the style guide: - // NOTE: The style guide requires body: "topic" instead of body: "*". - // Keeping the latter for internal consistency in V1, however it should be - // corrected in V2. See - // https://cloud.google.com/apis/design/standard_methods#update for details. - UpdateTopic(ctx context.Context, in *UpdateTopicRequest, opts ...grpc.CallOption) (*Topic, error) - // Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic - // does not exist. The message payload must not be empty; it must contain - // either a non-empty data field, or at least one attribute. - Publish(ctx context.Context, in *PublishRequest, opts ...grpc.CallOption) (*PublishResponse, error) - // Gets the configuration of a topic. - GetTopic(ctx context.Context, in *GetTopicRequest, opts ...grpc.CallOption) (*Topic, error) - // Lists matching topics. - ListTopics(ctx context.Context, in *ListTopicsRequest, opts ...grpc.CallOption) (*ListTopicsResponse, error) - // Lists the name of the subscriptions for this topic. - ListTopicSubscriptions(ctx context.Context, in *ListTopicSubscriptionsRequest, opts ...grpc.CallOption) (*ListTopicSubscriptionsResponse, error) - // Deletes the topic with the given name. Returns `NOT_FOUND` if the topic - // does not exist. After a topic is deleted, a new topic may be created with - // the same name; this is an entirely new topic with none of the old - // configuration or subscriptions. Existing subscriptions to this topic are - // not deleted, but their `topic` field is set to `_deleted-topic_`. - DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) -} - -type publisherClient struct { - cc *grpc.ClientConn -} - -func NewPublisherClient(cc *grpc.ClientConn) PublisherClient { - return &publisherClient{cc} -} - -func (c *publisherClient) CreateTopic(ctx context.Context, in *Topic, opts ...grpc.CallOption) (*Topic, error) { - out := new(Topic) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Publisher/CreateTopic", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) UpdateTopic(ctx context.Context, in *UpdateTopicRequest, opts ...grpc.CallOption) (*Topic, error) { - out := new(Topic) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Publisher/UpdateTopic", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) Publish(ctx context.Context, in *PublishRequest, opts ...grpc.CallOption) (*PublishResponse, error) { - out := new(PublishResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Publisher/Publish", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) GetTopic(ctx context.Context, in *GetTopicRequest, opts ...grpc.CallOption) (*Topic, error) { - out := new(Topic) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Publisher/GetTopic", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) ListTopics(ctx context.Context, in *ListTopicsRequest, opts ...grpc.CallOption) (*ListTopicsResponse, error) { - out := new(ListTopicsResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Publisher/ListTopics", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) ListTopicSubscriptions(ctx context.Context, in *ListTopicSubscriptionsRequest, opts ...grpc.CallOption) (*ListTopicSubscriptionsResponse, error) { - out := new(ListTopicSubscriptionsResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Publisher/ListTopicSubscriptions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1.Publisher/DeleteTopic", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Publisher service - -type PublisherServer interface { - // Creates the given topic with the given name. - CreateTopic(context.Context, *Topic) (*Topic, error) - // Updates an existing topic. Note that certain properties of a topic are not - // modifiable. Options settings follow the style guide: - // NOTE: The style guide requires body: "topic" instead of body: "*". - // Keeping the latter for internal consistency in V1, however it should be - // corrected in V2. See - // https://cloud.google.com/apis/design/standard_methods#update for details. - UpdateTopic(context.Context, *UpdateTopicRequest) (*Topic, error) - // Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic - // does not exist. The message payload must not be empty; it must contain - // either a non-empty data field, or at least one attribute. - Publish(context.Context, *PublishRequest) (*PublishResponse, error) - // Gets the configuration of a topic. - GetTopic(context.Context, *GetTopicRequest) (*Topic, error) - // Lists matching topics. - ListTopics(context.Context, *ListTopicsRequest) (*ListTopicsResponse, error) - // Lists the name of the subscriptions for this topic. - ListTopicSubscriptions(context.Context, *ListTopicSubscriptionsRequest) (*ListTopicSubscriptionsResponse, error) - // Deletes the topic with the given name. Returns `NOT_FOUND` if the topic - // does not exist. After a topic is deleted, a new topic may be created with - // the same name; this is an entirely new topic with none of the old - // configuration or subscriptions. Existing subscriptions to this topic are - // not deleted, but their `topic` field is set to `_deleted-topic_`. - DeleteTopic(context.Context, *DeleteTopicRequest) (*google_protobuf2.Empty, error) -} - -func RegisterPublisherServer(s *grpc.Server, srv PublisherServer) { - s.RegisterService(&_Publisher_serviceDesc, srv) -} - -func _Publisher_CreateTopic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Topic) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).CreateTopic(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Publisher/CreateTopic", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).CreateTopic(ctx, req.(*Topic)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_UpdateTopic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateTopicRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).UpdateTopic(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Publisher/UpdateTopic", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).UpdateTopic(ctx, req.(*UpdateTopicRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_Publish_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PublishRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).Publish(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Publisher/Publish", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).Publish(ctx, req.(*PublishRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_GetTopic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTopicRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).GetTopic(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Publisher/GetTopic", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).GetTopic(ctx, req.(*GetTopicRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_ListTopics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTopicsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).ListTopics(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Publisher/ListTopics", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).ListTopics(ctx, req.(*ListTopicsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_ListTopicSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTopicSubscriptionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).ListTopicSubscriptions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Publisher/ListTopicSubscriptions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).ListTopicSubscriptions(ctx, req.(*ListTopicSubscriptionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_DeleteTopic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteTopicRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).DeleteTopic(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1.Publisher/DeleteTopic", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).DeleteTopic(ctx, req.(*DeleteTopicRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Publisher_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.pubsub.v1.Publisher", - HandlerType: (*PublisherServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateTopic", - Handler: _Publisher_CreateTopic_Handler, - }, - { - MethodName: "UpdateTopic", - Handler: _Publisher_UpdateTopic_Handler, - }, - { - MethodName: "Publish", - Handler: _Publisher_Publish_Handler, - }, - { - MethodName: "GetTopic", - Handler: _Publisher_GetTopic_Handler, - }, - { - MethodName: "ListTopics", - Handler: _Publisher_ListTopics_Handler, - }, - { - MethodName: "ListTopicSubscriptions", - Handler: _Publisher_ListTopicSubscriptions_Handler, - }, - { - MethodName: "DeleteTopic", - Handler: _Publisher_DeleteTopic_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/pubsub/v1/pubsub.proto", -} - -func init() { proto.RegisterFile("google/pubsub/v1/pubsub.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 2026 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0xdb, 0x6f, 0xdb, 0xd6, - 0x19, 0xef, 0x91, 0x6f, 0xf2, 0x47, 0xdf, 0x72, 0x66, 0x27, 0x0a, 0x73, 0xb3, 0x19, 0x37, 0x56, - 0xd4, 0x44, 0xb2, 0x55, 0x34, 0x6b, 0xe2, 0x39, 0x85, 0x1d, 0x67, 0x69, 0x86, 0x64, 0xf5, 0xe8, - 0xac, 0x03, 0x86, 0x60, 0x02, 0x25, 0x9e, 0x28, 0xac, 0x24, 0x92, 0x25, 0x29, 0x2f, 0xee, 0x16, - 0xa0, 0x6b, 0x87, 0x01, 0xc3, 0xf2, 0xb0, 0xb6, 0x6f, 0x43, 0x1f, 0x06, 0xec, 0x6d, 0x8f, 0x03, - 0xf6, 0xba, 0x3f, 0x60, 0xaf, 0xfb, 0x17, 0xf6, 0xb8, 0xf7, 0xed, 0x71, 0x38, 0x17, 0x52, 0xbc, - 0x1c, 0x4a, 0x96, 0xd3, 0xbc, 0x91, 0xe7, 0xfb, 0xce, 0xf9, 0x7e, 0xdf, 0xfd, 0x23, 0x0f, 0x5c, - 0x6a, 0x3b, 0x4e, 0xbb, 0x4b, 0x6a, 0x6e, 0xbf, 0xe9, 0xf7, 0x9b, 0xb5, 0xa3, 0x2d, 0xf1, 0x54, - 0x75, 0x3d, 0x27, 0x70, 0xf0, 0x12, 0x27, 0x57, 0xc5, 0xe2, 0xd1, 0x96, 0x7a, 0x51, 0x6c, 0x30, - 0x5c, 0xab, 0x66, 0xd8, 0xb6, 0x13, 0x18, 0x81, 0xe5, 0xd8, 0x3e, 0xe7, 0x57, 0x2f, 0x87, 0xc7, - 0xd1, 0xb7, 0x66, 0xff, 0x59, 0xcd, 0xec, 0x7b, 0x8c, 0x41, 0xd0, 0x2f, 0xa4, 0xe9, 0xa4, 0xe7, - 0x06, 0xc7, 0x82, 0xb8, 0x9a, 0x26, 0x3e, 0xb3, 0x48, 0xd7, 0x6c, 0xf4, 0x0c, 0xbf, 0x23, 0x38, - 0xae, 0xa4, 0x39, 0x02, 0xab, 0x47, 0xfc, 0xc0, 0xe8, 0xb9, 0x9c, 0x41, 0xfb, 0x06, 0xc1, 0xd4, - 0x13, 0xc7, 0xb5, 0x5a, 0x18, 0xc3, 0xa4, 0x6d, 0xf4, 0x48, 0x09, 0xad, 0xa2, 0xf2, 0xac, 0xce, - 0x9e, 0xf1, 0x36, 0x4c, 0x77, 0x8d, 0x26, 0xe9, 0xfa, 0xa5, 0xc2, 0xea, 0x44, 0x59, 0xa9, 0x5f, - 0xad, 0xa6, 0xd5, 0xab, 0xb2, 0xcd, 0xd5, 0x47, 0x8c, 0xeb, 0xbe, 0x1d, 0x78, 0xc7, 0xba, 0xd8, - 0xa2, 0xde, 0x06, 0x25, 0xb6, 0x8c, 0x97, 0x60, 0xa2, 0x43, 0x8e, 0xc5, 0xf1, 0xf4, 0x11, 0x2f, - 0xc3, 0xd4, 0x91, 0xd1, 0xed, 0x93, 0x52, 0x81, 0xad, 0xf1, 0x97, 0x3b, 0x85, 0xf7, 0x91, 0xf6, - 0x55, 0x01, 0xe6, 0x0f, 0x98, 0x88, 0xc7, 0xc4, 0xf7, 0x8d, 0x36, 0xa1, 0xe8, 0x4c, 0x23, 0x30, - 0xd8, 0xf6, 0x39, 0x9d, 0x3d, 0xe3, 0x8f, 0x00, 0x8c, 0x20, 0xf0, 0xac, 0x66, 0x3f, 0x20, 0x21, - 0xc2, 0x5a, 0x16, 0x61, 0xe2, 0xa0, 0xea, 0x6e, 0xb4, 0x83, 0xa3, 0x8d, 0x1d, 0x81, 0x2f, 0x01, - 0xf4, 0x38, 0x5b, 0xc3, 0x32, 0x4b, 0x13, 0x0c, 0xd5, 0xac, 0x58, 0x79, 0x68, 0xe2, 0x1d, 0x98, - 0x73, 0xfb, 0xcd, 0xae, 0xe5, 0x3f, 0x6f, 0x50, 0x33, 0x96, 0x26, 0x57, 0x51, 0x59, 0xa9, 0xab, - 0x91, 0x44, 0x61, 0xe3, 0xea, 0x93, 0xd0, 0xc6, 0xba, 0x22, 0xf8, 0xe9, 0x8a, 0xba, 0x03, 0x8b, - 0x29, 0xe1, 0x63, 0xd9, 0x64, 0x03, 0x16, 0x1f, 0x90, 0x80, 0x99, 0x5b, 0x27, 0x9f, 0xf6, 0x89, - 0x1f, 0x50, 0xe6, 0x80, 0xbe, 0x8b, 0x03, 0xf8, 0x8b, 0xf6, 0x39, 0x02, 0xfc, 0x53, 0xd7, 0x34, - 0x02, 0x92, 0x60, 0xbe, 0x19, 0x67, 0x56, 0xea, 0xe7, 0x72, 0x5c, 0x29, 0x4e, 0xc1, 0xdb, 0xa0, - 0xf4, 0xd9, 0x21, 0x2c, 0x9c, 0x18, 0x1c, 0x99, 0xae, 0x3f, 0xa4, 0x11, 0xf7, 0xd8, 0xf0, 0x3b, - 0x3a, 0x70, 0x76, 0xfa, 0xac, 0xb5, 0x60, 0xe1, 0x80, 0x6b, 0x3e, 0x14, 0x2a, 0xde, 0x86, 0xa2, - 0x30, 0x6f, 0xe8, 0xbf, 0x2b, 0x23, 0xfc, 0xa7, 0x47, 0x1b, 0xb4, 0x3a, 0x2c, 0x46, 0x42, 0x7c, - 0xd7, 0xb1, 0x7d, 0x82, 0xaf, 0x80, 0x32, 0x70, 0xa0, 0x5f, 0x42, 0xab, 0x13, 0xe5, 0x59, 0x1d, - 0x22, 0x0f, 0xfa, 0x9a, 0x05, 0x67, 0x1e, 0x59, 0x3e, 0xb7, 0xa2, 0x1f, 0x62, 0x2b, 0xc1, 0x8c, - 0xeb, 0x39, 0x9f, 0x90, 0x56, 0x20, 0xd0, 0x85, 0xaf, 0xf8, 0x02, 0xcc, 0xba, 0xf4, 0x30, 0xdf, - 0xfa, 0x8c, 0x7b, 0x64, 0x4a, 0x2f, 0xd2, 0x85, 0x43, 0xeb, 0x33, 0x42, 0xa3, 0x85, 0x11, 0x03, - 0xa7, 0x43, 0xec, 0x30, 0x5a, 0xe8, 0xca, 0x13, 0xba, 0xa0, 0xf5, 0x00, 0xc7, 0x45, 0x09, 0x84, - 0x35, 0x98, 0x66, 0xaa, 0x73, 0x70, 0x43, 0xdc, 0x20, 0xd8, 0xf0, 0x35, 0x58, 0xb4, 0xc9, 0x8b, - 0xa0, 0x11, 0x13, 0xc5, 0x43, 0x63, 0x9e, 0x2e, 0x1f, 0x44, 0xe2, 0x3e, 0x85, 0x4b, 0x91, 0xb8, - 0xc3, 0x7e, 0xd3, 0x6f, 0x79, 0x96, 0xcb, 0x0a, 0xcd, 0x70, 0x0f, 0xbc, 0x8e, 0x86, 0x36, 0x5c, - 0xce, 0x13, 0x29, 0xb4, 0x5d, 0x87, 0x79, 0x3f, 0x4e, 0x10, 0x1e, 0x49, 0x2e, 0x9e, 0x58, 0xc5, - 0x0a, 0xe0, 0x7d, 0xd2, 0x25, 0xa9, 0xb8, 0x96, 0x27, 0xc1, 0xdf, 0x27, 0x60, 0x2e, 0x8e, 0x49, - 0x5a, 0xde, 0xa2, 0xad, 0x85, 0xb8, 0x49, 0x76, 0x40, 0x71, 0xfb, 0xfe, 0xf3, 0x46, 0xcb, 0xb1, - 0x9f, 0x59, 0x6d, 0x91, 0xe5, 0x17, 0x65, 0x71, 0xe9, 0x3f, 0xbf, 0xc7, 0x78, 0x74, 0x70, 0xa3, - 0x67, 0xbc, 0x09, 0xcb, 0x46, 0xab, 0xd3, 0x30, 0x89, 0x61, 0x76, 0x2d, 0x9b, 0x34, 0x7c, 0xd2, - 0x72, 0x6c, 0xd3, 0x2f, 0x4d, 0x31, 0xe3, 0x62, 0xa3, 0xd5, 0xd9, 0x17, 0xa4, 0x43, 0x4e, 0xc1, - 0x75, 0x58, 0xf1, 0x48, 0x60, 0x58, 0x76, 0xc3, 0x68, 0x75, 0x88, 0xd9, 0x88, 0x52, 0x62, 0x66, - 0x15, 0x95, 0x8b, 0xfa, 0xf7, 0x38, 0x71, 0x97, 0xd2, 0x44, 0x16, 0xf8, 0xf8, 0x67, 0xa0, 0x86, - 0x91, 0xee, 0x91, 0x80, 0xd8, 0x54, 0xc7, 0x46, 0xd8, 0x3b, 0x4a, 0x45, 0x86, 0xf9, 0x7c, 0x26, - 0x5b, 0xf7, 0x05, 0x83, 0x5e, 0x12, 0x9b, 0xf5, 0x70, 0x6f, 0x48, 0xc1, 0x7b, 0x51, 0xc9, 0x9f, - 0x65, 0x01, 0x5a, 0xc9, 0x2a, 0x1e, 0xb7, 0xeb, 0x77, 0x5d, 0xf9, 0xff, 0x81, 0x00, 0x06, 0x86, - 0xc5, 0x57, 0x61, 0x9e, 0xf9, 0x82, 0xd8, 0xa6, 0xeb, 0x58, 0x76, 0x98, 0xa0, 0x73, 0x74, 0xf1, - 0xbe, 0x58, 0xc3, 0x8f, 0x24, 0x7d, 0xe0, 0xc6, 0x30, 0x7f, 0x0d, 0x6b, 0x02, 0xaf, 0x5b, 0xa6, - 0x5b, 0xb0, 0xa8, 0x93, 0x16, 0xb1, 0x8e, 0x22, 0x67, 0xe1, 0x15, 0x98, 0xa6, 0x11, 0x61, 0x99, - 0x61, 0x88, 0x1a, 0xad, 0xce, 0x43, 0x13, 0xdf, 0x86, 0x19, 0xe1, 0x05, 0x51, 0x5d, 0x47, 0xd6, - 0xbe, 0x90, 0x5f, 0xfb, 0x01, 0x9c, 0x7d, 0x40, 0x82, 0xb8, 0x1f, 0xc2, 0x6c, 0xd0, 0x60, 0x2e, - 0x9e, 0x5c, 0xa1, 0xbd, 0xe2, 0x6b, 0xda, 0xb7, 0x08, 0xce, 0xf3, 0x06, 0x21, 0x3b, 0x61, 0x4f, - 0x72, 0x82, 0x52, 0xbf, 0x3c, 0x3c, 0x0c, 0x92, 0x12, 0x5e, 0xaf, 0x79, 0xb8, 0x50, 0xa2, 0x65, - 0x45, 0x5a, 0xc4, 0xde, 0x4c, 0xa9, 0xfe, 0x3d, 0x82, 0xf3, 0x12, 0x91, 0xa2, 0x88, 0xed, 0xcb, - 0x8a, 0xd8, 0x68, 0x8b, 0x9c, 0xb2, 0xc8, 0x7d, 0x00, 0xe7, 0x79, 0x91, 0x3b, 0xad, 0x77, 0x7f, - 0x0d, 0xe7, 0x1e, 0x3b, 0xa6, 0xf5, 0xec, 0x38, 0x56, 0x9f, 0x4e, 0xbe, 0x3d, 0x5d, 0xfd, 0x0a, - 0xe3, 0x55, 0x3f, 0xed, 0x4b, 0x04, 0xca, 0x41, 0xbf, 0xdb, 0x1d, 0x47, 0xe4, 0x4d, 0xc0, 0x1e, - 0x09, 0xfa, 0x9e, 0xdd, 0xb0, 0x7a, 0x3d, 0x62, 0x5a, 0x46, 0x40, 0xba, 0xc7, 0x4c, 0x72, 0x51, - 0x3f, 0xc3, 0x29, 0x0f, 0x07, 0x04, 0xbc, 0x06, 0x73, 0x3d, 0xe3, 0xc5, 0xa0, 0x4a, 0x4e, 0x30, - 0x67, 0x2b, 0x3d, 0xe3, 0x45, 0x58, 0x1d, 0xb5, 0x5f, 0xc0, 0x1c, 0x07, 0x21, 0x5c, 0xf8, 0x63, - 0x38, 0xe3, 0x89, 0xa4, 0x1c, 0xec, 0xe3, 0x6e, 0x5c, 0xcb, 0xaa, 0x96, 0xca, 0x5f, 0x7d, 0xc9, - 0x4b, 0x2e, 0xf8, 0x34, 0x60, 0x4a, 0xdc, 0xc8, 0xbb, 0x83, 0x72, 0x3e, 0x8e, 0xca, 0xe7, 0x60, - 0x86, 0x97, 0x04, 0xbf, 0x34, 0xc9, 0x5a, 0xe2, 0x34, 0xab, 0x09, 0x7e, 0x6e, 0xf7, 0x98, 0xc8, - 0xeb, 0x1e, 0xda, 0x4f, 0x00, 0xef, 0xb6, 0x3a, 0xb6, 0xf3, 0xcb, 0x2e, 0x31, 0xdb, 0xa7, 0x05, - 0x51, 0x88, 0x83, 0xd0, 0x7e, 0x53, 0x80, 0xe5, 0xc3, 0xc0, 0x23, 0x46, 0xcf, 0xb2, 0xdb, 0xe3, - 0x7a, 0x33, 0xef, 0x54, 0x7c, 0x0b, 0xce, 0xf5, 0x98, 0xcd, 0x64, 0xda, 0x4d, 0x94, 0xa7, 0xf4, - 0x15, 0x4e, 0x4e, 0xb7, 0xc7, 0xf7, 0xb2, 0xfb, 0x92, 0xb6, 0x5b, 0x4e, 0xee, 0xdb, 0xe5, 0xe2, - 0x76, 0xe0, 0x82, 0xcf, 0x74, 0x68, 0x0c, 0x69, 0xc7, 0x25, 0xce, 0xb2, 0x9b, 0x35, 0x6b, 0x1b, - 0x56, 0x52, 0x26, 0x78, 0x43, 0xb1, 0xf4, 0x11, 0xac, 0xdc, 0xf3, 0x08, 0x2d, 0xc6, 0xb6, 0xe1, - 0xfa, 0xcf, 0x9d, 0x20, 0x34, 0xb6, 0x6c, 0x62, 0x49, 0x3b, 0xa0, 0x20, 0x29, 0x00, 0xaf, 0x10, - 0xac, 0x88, 0xf2, 0x9e, 0x3a, 0xf1, 0x16, 0x14, 0x7d, 0xb1, 0x24, 0xca, 0xba, 0x2a, 0x29, 0x62, - 0xe1, 0xa6, 0x88, 0xf7, 0xf5, 0xca, 0xf9, 0x7f, 0x10, 0x14, 0xc3, 0x33, 0xc7, 0x98, 0xc2, 0xb6, - 0x41, 0x21, 0x2f, 0x5c, 0xcb, 0x23, 0xfc, 0x5b, 0x6b, 0x62, 0xe4, 0xb7, 0x16, 0x70, 0x76, 0xba, - 0x80, 0xef, 0x46, 0x43, 0xcc, 0x24, 0x73, 0xcc, 0xb5, 0x7c, 0x35, 0xbf, 0xeb, 0x01, 0xa6, 0x0b, - 0xcb, 0xac, 0x95, 0x88, 0xe3, 0xdf, 0x70, 0xe7, 0x3a, 0x86, 0x95, 0x94, 0x34, 0x11, 0xa5, 0xef, - 0xc3, 0x6c, 0xe8, 0xbe, 0x30, 0x3a, 0x87, 0xf9, 0x7a, 0xc0, 0x7c, 0xe2, 0x46, 0xf5, 0x2e, 0xac, - 0x88, 0x46, 0x95, 0x8a, 0x32, 0x35, 0x15, 0x65, 0xb3, 0x83, 0x48, 0xd2, 0xfe, 0x80, 0x40, 0x39, - 0x24, 0xa4, 0x33, 0x4e, 0x41, 0xd9, 0x84, 0x49, 0x16, 0x02, 0x85, 0x51, 0x21, 0xf0, 0xe1, 0x5b, - 0x3a, 0xe3, 0xc4, 0x17, 0x63, 0x08, 0x98, 0xc9, 0x3e, 0x7c, 0x6b, 0x80, 0x61, 0xaf, 0x08, 0xd3, - 0x81, 0xe1, 0xb5, 0x49, 0xa0, 0x2d, 0xc0, 0x1c, 0x07, 0xc3, 0x8d, 0x56, 0xff, 0xef, 0x12, 0x80, - 0x68, 0xbb, 0x4d, 0xe2, 0xe1, 0xdf, 0x21, 0xc0, 0x22, 0x35, 0xe3, 0x78, 0x46, 0x34, 0x7e, 0x75, - 0x04, 0x5d, 0xdb, 0xfc, 0xe2, 0x5f, 0xff, 0xfe, 0xa6, 0x50, 0x51, 0xdf, 0xae, 0x1d, 0x6d, 0xd5, - 0x7e, 0x45, 0x53, 0x60, 0x47, 0x84, 0x82, 0x5f, 0xab, 0xd4, 0x12, 0x53, 0x43, 0xad, 0xf2, 0xf2, - 0x0e, 0xaa, 0xe0, 0xaf, 0x11, 0xfb, 0xf6, 0x4f, 0xa0, 0x28, 0x67, 0xa5, 0xc8, 0x47, 0xc2, 0x91, - 0x78, 0xde, 0x63, 0x78, 0x6a, 0xf8, 0x26, 0xc3, 0x13, 0x97, 0x3f, 0x0c, 0x17, 0xfe, 0x73, 0xf4, - 0x9b, 0x21, 0x81, 0xeb, 0x9d, 0xac, 0xb4, 0xdc, 0x59, 0x73, 0x24, 0xb4, 0x1d, 0x06, 0xed, 0xfb, - 0xf5, 0x7a, 0x06, 0x5a, 0xf5, 0x24, 0x76, 0xfb, 0x16, 0xf1, 0xcf, 0xfd, 0xc4, 0x5c, 0x87, 0x25, - 0x5f, 0x34, 0x79, 0xf3, 0xa6, 0xfa, 0xce, 0x89, 0x78, 0x79, 0xf8, 0x68, 0x55, 0x86, 0xb6, 0x8c, - 0xaf, 0x31, 0xb4, 0x02, 0x5b, 0x0c, 0xe3, 0xcb, 0x24, 0x48, 0xfc, 0x47, 0x14, 0x7e, 0xd0, 0x8e, - 0xb2, 0x60, 0xee, 0x44, 0xa8, 0x9e, 0xcd, 0xa4, 0xc3, 0xfd, 0x9e, 0x1b, 0x1c, 0x87, 0x4e, 0xad, - 0x8c, 0xe9, 0xd4, 0xbf, 0x20, 0x38, 0x93, 0x19, 0x6c, 0x64, 0x16, 0xcb, 0x9b, 0x7e, 0x72, 0x01, - 0xfd, 0x88, 0x01, 0xda, 0xd7, 0x3e, 0x18, 0x0b, 0xd0, 0x9d, 0x5e, 0x5a, 0x0e, 0xf5, 0xeb, 0x57, - 0x08, 0x94, 0xd8, 0xcc, 0x83, 0xd7, 0xb3, 0xf8, 0xb2, 0x23, 0x51, 0x2e, 0xb2, 0x7d, 0x86, 0xec, - 0xae, 0x76, 0x7b, 0x3c, 0x64, 0xc6, 0x40, 0x02, 0xc5, 0xf4, 0x5b, 0x04, 0x93, 0x74, 0x4e, 0xc0, - 0x97, 0x64, 0xb3, 0x72, 0x34, 0x42, 0xc9, 0x42, 0x3e, 0x3e, 0x5e, 0x84, 0x21, 0xaf, 0xd5, 0xc7, - 0x43, 0xe3, 0xf6, 0xbb, 0x5d, 0x0a, 0xc3, 0x84, 0xf9, 0xc4, 0xd8, 0x82, 0x65, 0xad, 0x4f, 0x32, - 0xda, 0xa9, 0x1b, 0x23, 0xf9, 0x38, 0xc0, 0x32, 0xda, 0x44, 0x34, 0xf7, 0x97, 0xd2, 0x1f, 0x19, - 0xf8, 0x7a, 0x5e, 0x94, 0x64, 0x3e, 0x44, 0x72, 0x5d, 0xf1, 0x90, 0x29, 0x7f, 0x4f, 0xbb, 0x7b, - 0x9a, 0x20, 0x19, 0x88, 0xa1, 0x86, 0x78, 0x85, 0x60, 0x3e, 0xd1, 0x1a, 0x65, 0x96, 0x90, 0x75, - 0x6a, 0x99, 0x25, 0xa4, 0x3d, 0x56, 0xab, 0x30, 0xb4, 0xeb, 0x58, 0xcb, 0xcf, 0xf7, 0x48, 0xf8, - 0x97, 0x08, 0x16, 0x92, 0x63, 0x1e, 0x96, 0xc8, 0x91, 0x0e, 0x82, 0xea, 0x90, 0xc6, 0xad, 0xdd, - 0x60, 0x18, 0xae, 0xa9, 0x6b, 0xf2, 0x66, 0x12, 0xca, 0x17, 0x05, 0xf1, 0x15, 0x82, 0x85, 0xe4, - 0x68, 0x28, 0x43, 0x21, 0x1d, 0x1e, 0x87, 0xa2, 0x10, 0xd5, 0xa6, 0x5e, 0xe1, 0x7e, 0x0b, 0x47, - 0xab, 0x51, 0x70, 0x3e, 0x47, 0xb0, 0x90, 0x9c, 0x21, 0x64, 0x70, 0xa4, 0x53, 0x46, 0x6e, 0x08, - 0xdd, 0x64, 0x50, 0x36, 0x2a, 0x6f, 0x27, 0xa0, 0xe4, 0xa1, 0x60, 0x69, 0x4b, 0x67, 0x00, 0x59, - 0xda, 0xc6, 0x06, 0x15, 0x69, 0xa7, 0x8a, 0x8d, 0x0e, 0xa7, 0x4d, 0x5b, 0x9f, 0x90, 0xce, 0x1d, - 0x54, 0xa9, 0xff, 0x69, 0x06, 0x66, 0xc5, 0xcf, 0x6c, 0xe2, 0xe1, 0x4f, 0x40, 0xe1, 0x91, 0xc0, - 0x6f, 0x66, 0xf2, 0xfe, 0x11, 0xab, 0x79, 0x04, 0xed, 0x3a, 0x43, 0x73, 0x55, 0xbd, 0x2c, 0x8d, - 0x0a, 0xfe, 0x67, 0x59, 0xf8, 0xe0, 0x25, 0x28, 0xb1, 0xcb, 0x02, 0x59, 0x29, 0xcd, 0xde, 0x25, - 0xe4, 0x0b, 0xae, 0x31, 0xc1, 0xd7, 0xeb, 0xeb, 0x4c, 0x30, 0x13, 0x54, 0x1d, 0x2a, 0xfe, 0x0b, - 0x04, 0x33, 0x42, 0x71, 0xbc, 0x2a, 0xfd, 0xff, 0x15, 0xbb, 0x45, 0x50, 0xd7, 0x86, 0x70, 0x08, - 0x47, 0xd4, 0x19, 0x82, 0x1b, 0xda, 0xc6, 0x00, 0x81, 0x5c, 0xb8, 0xb8, 0x9a, 0xa1, 0x20, 0x1c, - 0x28, 0x86, 0x57, 0x2b, 0x78, 0x4d, 0x3a, 0x57, 0x9d, 0x4c, 0xfb, 0x0d, 0x26, 0x7b, 0x0d, 0x5f, - 0x19, 0x21, 0x9b, 0x06, 0x3e, 0x0c, 0x2e, 0x07, 0xf0, 0x55, 0x79, 0xc5, 0x49, 0xdc, 0x52, 0xa8, - 0xeb, 0xc3, 0x99, 0x84, 0xfa, 0x49, 0x08, 0xb2, 0x9a, 0x24, 0xee, 0x15, 0xfe, 0x86, 0xe0, 0xac, - 0xfc, 0xef, 0x3d, 0xae, 0x0d, 0x91, 0x24, 0x9d, 0x92, 0x36, 0x4f, 0xbe, 0x41, 0xc0, 0x4c, 0xce, - 0x9c, 0xf9, 0x96, 0x4a, 0x4d, 0x4c, 0x01, 0x28, 0xb1, 0x1b, 0x00, 0x59, 0xb0, 0x66, 0x2f, 0x08, - 0x72, 0x2b, 0x85, 0x30, 0x55, 0x65, 0x94, 0xb7, 0xf6, 0xbe, 0x46, 0xb0, 0xdc, 0x72, 0x7a, 0x19, - 0x61, 0x7b, 0x0a, 0xff, 0x3d, 0x7b, 0x40, 0xcf, 0x3d, 0x40, 0x3f, 0xbf, 0x25, 0x18, 0xda, 0x4e, - 0xd7, 0xb0, 0xdb, 0x55, 0xc7, 0x6b, 0xd7, 0xda, 0xc4, 0x66, 0x52, 0x6b, 0x9c, 0x64, 0xb8, 0x96, - 0x3f, 0xb8, 0x39, 0xde, 0xe6, 0x4f, 0xff, 0x43, 0xe8, 0xaf, 0x85, 0xb3, 0x0f, 0xf8, 0xde, 0x7b, - 0x5d, 0xa7, 0x6f, 0xd2, 0xa0, 0x3e, 0xec, 0x37, 0xab, 0x1f, 0x6f, 0xfd, 0x33, 0x24, 0x3c, 0x65, - 0x84, 0xa7, 0x9c, 0xf0, 0xf4, 0xe3, 0xad, 0xe6, 0x34, 0x3b, 0xf7, 0xdd, 0xff, 0x07, 0x00, 0x00, - 0xff, 0xff, 0xcb, 0xe1, 0xb8, 0xca, 0x90, 0x1e, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/pubsub/v1beta2/pubsub.pb.go b/vendor/google.golang.org/genproto/googleapis/pubsub/v1beta2/pubsub.pb.go deleted file mode 100644 index 75d044a6..00000000 --- a/vendor/google.golang.org/genproto/googleapis/pubsub/v1beta2/pubsub.pb.go +++ /dev/null @@ -1,1459 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/pubsub/v1beta2/pubsub.proto - -/* -Package pubsub is a generated protocol buffer package. - -It is generated from these files: - google/pubsub/v1beta2/pubsub.proto - -It has these top-level messages: - Topic - PubsubMessage - GetTopicRequest - PublishRequest - PublishResponse - ListTopicsRequest - ListTopicsResponse - ListTopicSubscriptionsRequest - ListTopicSubscriptionsResponse - DeleteTopicRequest - Subscription - PushConfig - ReceivedMessage - GetSubscriptionRequest - ListSubscriptionsRequest - ListSubscriptionsResponse - DeleteSubscriptionRequest - ModifyPushConfigRequest - PullRequest - PullResponse - ModifyAckDeadlineRequest - AcknowledgeRequest -*/ -package pubsub - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A topic resource. -type Topic struct { - // Name of the topic. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *Topic) Reset() { *m = Topic{} } -func (m *Topic) String() string { return proto.CompactTextString(m) } -func (*Topic) ProtoMessage() {} -func (*Topic) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Topic) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// A message data and its attributes. -type PubsubMessage struct { - // The message payload. For JSON requests, the value of this field must be - // base64-encoded. - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - // Optional attributes for this message. - Attributes map[string]string `protobuf:"bytes,2,rep,name=attributes" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // ID of this message assigned by the server at publication time. Guaranteed - // to be unique within the topic. This value may be read by a subscriber - // that receives a PubsubMessage via a Pull call or a push delivery. It must - // not be populated by a publisher in a Publish call. - MessageId string `protobuf:"bytes,3,opt,name=message_id,json=messageId" json:"message_id,omitempty"` -} - -func (m *PubsubMessage) Reset() { *m = PubsubMessage{} } -func (m *PubsubMessage) String() string { return proto.CompactTextString(m) } -func (*PubsubMessage) ProtoMessage() {} -func (*PubsubMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *PubsubMessage) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -func (m *PubsubMessage) GetAttributes() map[string]string { - if m != nil { - return m.Attributes - } - return nil -} - -func (m *PubsubMessage) GetMessageId() string { - if m != nil { - return m.MessageId - } - return "" -} - -// Request for the GetTopic method. -type GetTopicRequest struct { - // The name of the topic to get. - Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` -} - -func (m *GetTopicRequest) Reset() { *m = GetTopicRequest{} } -func (m *GetTopicRequest) String() string { return proto.CompactTextString(m) } -func (*GetTopicRequest) ProtoMessage() {} -func (*GetTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *GetTopicRequest) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -// Request for the Publish method. -type PublishRequest struct { - // The messages in the request will be published on this topic. - Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` - // The messages to publish. - Messages []*PubsubMessage `protobuf:"bytes,2,rep,name=messages" json:"messages,omitempty"` -} - -func (m *PublishRequest) Reset() { *m = PublishRequest{} } -func (m *PublishRequest) String() string { return proto.CompactTextString(m) } -func (*PublishRequest) ProtoMessage() {} -func (*PublishRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *PublishRequest) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -func (m *PublishRequest) GetMessages() []*PubsubMessage { - if m != nil { - return m.Messages - } - return nil -} - -// Response for the Publish method. -type PublishResponse struct { - // The server-assigned ID of each published message, in the same order as - // the messages in the request. IDs are guaranteed to be unique within - // the topic. - MessageIds []string `protobuf:"bytes,1,rep,name=message_ids,json=messageIds" json:"message_ids,omitempty"` -} - -func (m *PublishResponse) Reset() { *m = PublishResponse{} } -func (m *PublishResponse) String() string { return proto.CompactTextString(m) } -func (*PublishResponse) ProtoMessage() {} -func (*PublishResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *PublishResponse) GetMessageIds() []string { - if m != nil { - return m.MessageIds - } - return nil -} - -// Request for the ListTopics method. -type ListTopicsRequest struct { - // The name of the cloud project that topics belong to. - Project string `protobuf:"bytes,1,opt,name=project" json:"project,omitempty"` - // Maximum number of topics to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last ListTopicsResponse; indicates that this is - // a continuation of a prior ListTopics call, and that the system should - // return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListTopicsRequest) Reset() { *m = ListTopicsRequest{} } -func (m *ListTopicsRequest) String() string { return proto.CompactTextString(m) } -func (*ListTopicsRequest) ProtoMessage() {} -func (*ListTopicsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ListTopicsRequest) GetProject() string { - if m != nil { - return m.Project - } - return "" -} - -func (m *ListTopicsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTopicsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the ListTopics method. -type ListTopicsResponse struct { - // The resulting topics. - Topics []*Topic `protobuf:"bytes,1,rep,name=topics" json:"topics,omitempty"` - // If not empty, indicates that there may be more topics that match the - // request; this value should be passed in a new ListTopicsRequest. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTopicsResponse) Reset() { *m = ListTopicsResponse{} } -func (m *ListTopicsResponse) String() string { return proto.CompactTextString(m) } -func (*ListTopicsResponse) ProtoMessage() {} -func (*ListTopicsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ListTopicsResponse) GetTopics() []*Topic { - if m != nil { - return m.Topics - } - return nil -} - -func (m *ListTopicsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the ListTopicSubscriptions method. -type ListTopicSubscriptionsRequest struct { - // The name of the topic that subscriptions are attached to. - Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` - // Maximum number of subscription names to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last ListTopicSubscriptionsResponse; indicates - // that this is a continuation of a prior ListTopicSubscriptions call, and - // that the system should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListTopicSubscriptionsRequest) Reset() { *m = ListTopicSubscriptionsRequest{} } -func (m *ListTopicSubscriptionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListTopicSubscriptionsRequest) ProtoMessage() {} -func (*ListTopicSubscriptionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ListTopicSubscriptionsRequest) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -func (m *ListTopicSubscriptionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTopicSubscriptionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the ListTopicSubscriptions method. -type ListTopicSubscriptionsResponse struct { - // The names of the subscriptions that match the request. - Subscriptions []string `protobuf:"bytes,1,rep,name=subscriptions" json:"subscriptions,omitempty"` - // If not empty, indicates that there may be more subscriptions that match - // the request; this value should be passed in a new - // ListTopicSubscriptionsRequest to get more subscriptions. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTopicSubscriptionsResponse) Reset() { *m = ListTopicSubscriptionsResponse{} } -func (m *ListTopicSubscriptionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListTopicSubscriptionsResponse) ProtoMessage() {} -func (*ListTopicSubscriptionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ListTopicSubscriptionsResponse) GetSubscriptions() []string { - if m != nil { - return m.Subscriptions - } - return nil -} - -func (m *ListTopicSubscriptionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the DeleteTopic method. -type DeleteTopicRequest struct { - // Name of the topic to delete. - Topic string `protobuf:"bytes,1,opt,name=topic" json:"topic,omitempty"` -} - -func (m *DeleteTopicRequest) Reset() { *m = DeleteTopicRequest{} } -func (m *DeleteTopicRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteTopicRequest) ProtoMessage() {} -func (*DeleteTopicRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *DeleteTopicRequest) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -// A subscription resource. -type Subscription struct { - // Name of the subscription. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of the topic from which this subscription is receiving messages. - // This will be present if and only if the subscription has not been detached - // from its topic. - Topic string `protobuf:"bytes,2,opt,name=topic" json:"topic,omitempty"` - // If push delivery is used with this subscription, this field is - // used to configure it. An empty pushConfig signifies that the subscriber - // will pull and ack messages using API methods. - PushConfig *PushConfig `protobuf:"bytes,4,opt,name=push_config,json=pushConfig" json:"push_config,omitempty"` - // This value is the maximum time after a subscriber receives a message - // before the subscriber should acknowledge the message. After message - // delivery but before the ack deadline expires and before the message is - // acknowledged, it is an outstanding message and will not be delivered - // again during that time (on a best-effort basis). - // - // For pull delivery this value - // is used as the initial value for the ack deadline. It may be overridden - // for a specific message by calling ModifyAckDeadline. - // - // For push delivery, this value is also used to set the request timeout for - // the call to the push endpoint. - // - // If the subscriber never acknowledges the message, the Pub/Sub - // system will eventually redeliver the message. - AckDeadlineSeconds int32 `protobuf:"varint,5,opt,name=ack_deadline_seconds,json=ackDeadlineSeconds" json:"ack_deadline_seconds,omitempty"` -} - -func (m *Subscription) Reset() { *m = Subscription{} } -func (m *Subscription) String() string { return proto.CompactTextString(m) } -func (*Subscription) ProtoMessage() {} -func (*Subscription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *Subscription) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Subscription) GetTopic() string { - if m != nil { - return m.Topic - } - return "" -} - -func (m *Subscription) GetPushConfig() *PushConfig { - if m != nil { - return m.PushConfig - } - return nil -} - -func (m *Subscription) GetAckDeadlineSeconds() int32 { - if m != nil { - return m.AckDeadlineSeconds - } - return 0 -} - -// Configuration for a push delivery endpoint. -type PushConfig struct { - // A URL locating the endpoint to which messages should be pushed. - // For example, a Webhook endpoint might use "https://example.com/push". - PushEndpoint string `protobuf:"bytes,1,opt,name=push_endpoint,json=pushEndpoint" json:"push_endpoint,omitempty"` - // Endpoint configuration attributes. - // - // Every endpoint has a set of API supported attributes that can be used to - // control different aspects of the message delivery. - // - // The currently supported attribute is `x-goog-version`, which you can - // use to change the format of the push message. This attribute - // indicates the version of the data expected by the endpoint. This - // controls the shape of the envelope (i.e. its fields and metadata). - // The endpoint version is based on the version of the Pub/Sub - // API. - // - // If not present during the CreateSubscription call, it will default to - // the version of the API used to make such call. If not present during a - // ModifyPushConfig call, its value will not be changed. GetSubscription - // calls will always return a valid version, even if the subscription was - // created without this attribute. - // - // The possible values for this attribute are: - // - // * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. - // * `v1beta2`: uses the push format defined in the v1beta2 Pub/Sub API. - // - Attributes map[string]string `protobuf:"bytes,2,rep,name=attributes" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *PushConfig) Reset() { *m = PushConfig{} } -func (m *PushConfig) String() string { return proto.CompactTextString(m) } -func (*PushConfig) ProtoMessage() {} -func (*PushConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *PushConfig) GetPushEndpoint() string { - if m != nil { - return m.PushEndpoint - } - return "" -} - -func (m *PushConfig) GetAttributes() map[string]string { - if m != nil { - return m.Attributes - } - return nil -} - -// A message and its corresponding acknowledgment ID. -type ReceivedMessage struct { - // This ID can be used to acknowledge the received message. - AckId string `protobuf:"bytes,1,opt,name=ack_id,json=ackId" json:"ack_id,omitempty"` - // The message. - Message *PubsubMessage `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` -} - -func (m *ReceivedMessage) Reset() { *m = ReceivedMessage{} } -func (m *ReceivedMessage) String() string { return proto.CompactTextString(m) } -func (*ReceivedMessage) ProtoMessage() {} -func (*ReceivedMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *ReceivedMessage) GetAckId() string { - if m != nil { - return m.AckId - } - return "" -} - -func (m *ReceivedMessage) GetMessage() *PubsubMessage { - if m != nil { - return m.Message - } - return nil -} - -// Request for the GetSubscription method. -type GetSubscriptionRequest struct { - // The name of the subscription to get. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` -} - -func (m *GetSubscriptionRequest) Reset() { *m = GetSubscriptionRequest{} } -func (m *GetSubscriptionRequest) String() string { return proto.CompactTextString(m) } -func (*GetSubscriptionRequest) ProtoMessage() {} -func (*GetSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *GetSubscriptionRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -// Request for the ListSubscriptions method. -type ListSubscriptionsRequest struct { - // The name of the cloud project that subscriptions belong to. - Project string `protobuf:"bytes,1,opt,name=project" json:"project,omitempty"` - // Maximum number of subscriptions to return. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The value returned by the last ListSubscriptionsResponse; indicates that - // this is a continuation of a prior ListSubscriptions call, and that the - // system should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListSubscriptionsRequest) Reset() { *m = ListSubscriptionsRequest{} } -func (m *ListSubscriptionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListSubscriptionsRequest) ProtoMessage() {} -func (*ListSubscriptionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -func (m *ListSubscriptionsRequest) GetProject() string { - if m != nil { - return m.Project - } - return "" -} - -func (m *ListSubscriptionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListSubscriptionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response for the ListSubscriptions method. -type ListSubscriptionsResponse struct { - // The subscriptions that match the request. - Subscriptions []*Subscription `protobuf:"bytes,1,rep,name=subscriptions" json:"subscriptions,omitempty"` - // If not empty, indicates that there may be more subscriptions that match - // the request; this value should be passed in a new ListSubscriptionsRequest - // to get more subscriptions. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListSubscriptionsResponse) Reset() { *m = ListSubscriptionsResponse{} } -func (m *ListSubscriptionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListSubscriptionsResponse) ProtoMessage() {} -func (*ListSubscriptionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *ListSubscriptionsResponse) GetSubscriptions() []*Subscription { - if m != nil { - return m.Subscriptions - } - return nil -} - -func (m *ListSubscriptionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request for the DeleteSubscription method. -type DeleteSubscriptionRequest struct { - // The subscription to delete. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` -} - -func (m *DeleteSubscriptionRequest) Reset() { *m = DeleteSubscriptionRequest{} } -func (m *DeleteSubscriptionRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSubscriptionRequest) ProtoMessage() {} -func (*DeleteSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -func (m *DeleteSubscriptionRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -// Request for the ModifyPushConfig method. -type ModifyPushConfigRequest struct { - // The name of the subscription. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // The push configuration for future deliveries. - // - // An empty pushConfig indicates that the Pub/Sub system should - // stop pushing messages from the given subscription and allow - // messages to be pulled and acknowledged - effectively pausing - // the subscription if Pull is not called. - PushConfig *PushConfig `protobuf:"bytes,2,opt,name=push_config,json=pushConfig" json:"push_config,omitempty"` -} - -func (m *ModifyPushConfigRequest) Reset() { *m = ModifyPushConfigRequest{} } -func (m *ModifyPushConfigRequest) String() string { return proto.CompactTextString(m) } -func (*ModifyPushConfigRequest) ProtoMessage() {} -func (*ModifyPushConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *ModifyPushConfigRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *ModifyPushConfigRequest) GetPushConfig() *PushConfig { - if m != nil { - return m.PushConfig - } - return nil -} - -// Request for the Pull method. -type PullRequest struct { - // The subscription from which messages should be pulled. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // If this is specified as true the system will respond immediately even if - // it is not able to return a message in the Pull response. Otherwise the - // system is allowed to wait until at least one message is available rather - // than returning no messages. The client may cancel the request if it does - // not wish to wait any longer for the response. - ReturnImmediately bool `protobuf:"varint,2,opt,name=return_immediately,json=returnImmediately" json:"return_immediately,omitempty"` - // The maximum number of messages returned for this request. The Pub/Sub - // system may return fewer than the number specified. - MaxMessages int32 `protobuf:"varint,3,opt,name=max_messages,json=maxMessages" json:"max_messages,omitempty"` -} - -func (m *PullRequest) Reset() { *m = PullRequest{} } -func (m *PullRequest) String() string { return proto.CompactTextString(m) } -func (*PullRequest) ProtoMessage() {} -func (*PullRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *PullRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *PullRequest) GetReturnImmediately() bool { - if m != nil { - return m.ReturnImmediately - } - return false -} - -func (m *PullRequest) GetMaxMessages() int32 { - if m != nil { - return m.MaxMessages - } - return 0 -} - -// Response for the Pull method. -type PullResponse struct { - // Received Pub/Sub messages. The Pub/Sub system will return zero messages if - // there are no more available in the backlog. The Pub/Sub system may return - // fewer than the maxMessages requested even if there are more messages - // available in the backlog. - ReceivedMessages []*ReceivedMessage `protobuf:"bytes,1,rep,name=received_messages,json=receivedMessages" json:"received_messages,omitempty"` -} - -func (m *PullResponse) Reset() { *m = PullResponse{} } -func (m *PullResponse) String() string { return proto.CompactTextString(m) } -func (*PullResponse) ProtoMessage() {} -func (*PullResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } - -func (m *PullResponse) GetReceivedMessages() []*ReceivedMessage { - if m != nil { - return m.ReceivedMessages - } - return nil -} - -// Request for the ModifyAckDeadline method. -type ModifyAckDeadlineRequest struct { - // The name of the subscription. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // The acknowledgment ID. - AckId string `protobuf:"bytes,2,opt,name=ack_id,json=ackId" json:"ack_id,omitempty"` - // The new ack deadline with respect to the time this request was sent to the - // Pub/Sub system. Must be >= 0. For example, if the value is 10, the new ack - // deadline will expire 10 seconds after the ModifyAckDeadline call was made. - // Specifying zero may immediately make the message available for another pull - // request. - AckDeadlineSeconds int32 `protobuf:"varint,3,opt,name=ack_deadline_seconds,json=ackDeadlineSeconds" json:"ack_deadline_seconds,omitempty"` -} - -func (m *ModifyAckDeadlineRequest) Reset() { *m = ModifyAckDeadlineRequest{} } -func (m *ModifyAckDeadlineRequest) String() string { return proto.CompactTextString(m) } -func (*ModifyAckDeadlineRequest) ProtoMessage() {} -func (*ModifyAckDeadlineRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } - -func (m *ModifyAckDeadlineRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *ModifyAckDeadlineRequest) GetAckId() string { - if m != nil { - return m.AckId - } - return "" -} - -func (m *ModifyAckDeadlineRequest) GetAckDeadlineSeconds() int32 { - if m != nil { - return m.AckDeadlineSeconds - } - return 0 -} - -// Request for the Acknowledge method. -type AcknowledgeRequest struct { - // The subscription whose message is being acknowledged. - Subscription string `protobuf:"bytes,1,opt,name=subscription" json:"subscription,omitempty"` - // The acknowledgment ID for the messages being acknowledged that was returned - // by the Pub/Sub system in the Pull response. Must not be empty. - AckIds []string `protobuf:"bytes,2,rep,name=ack_ids,json=ackIds" json:"ack_ids,omitempty"` -} - -func (m *AcknowledgeRequest) Reset() { *m = AcknowledgeRequest{} } -func (m *AcknowledgeRequest) String() string { return proto.CompactTextString(m) } -func (*AcknowledgeRequest) ProtoMessage() {} -func (*AcknowledgeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } - -func (m *AcknowledgeRequest) GetSubscription() string { - if m != nil { - return m.Subscription - } - return "" -} - -func (m *AcknowledgeRequest) GetAckIds() []string { - if m != nil { - return m.AckIds - } - return nil -} - -func init() { - proto.RegisterType((*Topic)(nil), "google.pubsub.v1beta2.Topic") - proto.RegisterType((*PubsubMessage)(nil), "google.pubsub.v1beta2.PubsubMessage") - proto.RegisterType((*GetTopicRequest)(nil), "google.pubsub.v1beta2.GetTopicRequest") - proto.RegisterType((*PublishRequest)(nil), "google.pubsub.v1beta2.PublishRequest") - proto.RegisterType((*PublishResponse)(nil), "google.pubsub.v1beta2.PublishResponse") - proto.RegisterType((*ListTopicsRequest)(nil), "google.pubsub.v1beta2.ListTopicsRequest") - proto.RegisterType((*ListTopicsResponse)(nil), "google.pubsub.v1beta2.ListTopicsResponse") - proto.RegisterType((*ListTopicSubscriptionsRequest)(nil), "google.pubsub.v1beta2.ListTopicSubscriptionsRequest") - proto.RegisterType((*ListTopicSubscriptionsResponse)(nil), "google.pubsub.v1beta2.ListTopicSubscriptionsResponse") - proto.RegisterType((*DeleteTopicRequest)(nil), "google.pubsub.v1beta2.DeleteTopicRequest") - proto.RegisterType((*Subscription)(nil), "google.pubsub.v1beta2.Subscription") - proto.RegisterType((*PushConfig)(nil), "google.pubsub.v1beta2.PushConfig") - proto.RegisterType((*ReceivedMessage)(nil), "google.pubsub.v1beta2.ReceivedMessage") - proto.RegisterType((*GetSubscriptionRequest)(nil), "google.pubsub.v1beta2.GetSubscriptionRequest") - proto.RegisterType((*ListSubscriptionsRequest)(nil), "google.pubsub.v1beta2.ListSubscriptionsRequest") - proto.RegisterType((*ListSubscriptionsResponse)(nil), "google.pubsub.v1beta2.ListSubscriptionsResponse") - proto.RegisterType((*DeleteSubscriptionRequest)(nil), "google.pubsub.v1beta2.DeleteSubscriptionRequest") - proto.RegisterType((*ModifyPushConfigRequest)(nil), "google.pubsub.v1beta2.ModifyPushConfigRequest") - proto.RegisterType((*PullRequest)(nil), "google.pubsub.v1beta2.PullRequest") - proto.RegisterType((*PullResponse)(nil), "google.pubsub.v1beta2.PullResponse") - proto.RegisterType((*ModifyAckDeadlineRequest)(nil), "google.pubsub.v1beta2.ModifyAckDeadlineRequest") - proto.RegisterType((*AcknowledgeRequest)(nil), "google.pubsub.v1beta2.AcknowledgeRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Subscriber service - -type SubscriberClient interface { - // Creates a subscription to a given topic for a given subscriber. - // If the subscription already exists, returns ALREADY_EXISTS. - // If the corresponding topic doesn't exist, returns NOT_FOUND. - // - // If the name is not provided in the request, the server will assign a random - // name for this subscription on the same project as the topic. - CreateSubscription(ctx context.Context, in *Subscription, opts ...grpc.CallOption) (*Subscription, error) - // Gets the configuration details of a subscription. - GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) - // Lists matching subscriptions. - ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) - // Deletes an existing subscription. All pending messages in the subscription - // are immediately dropped. Calls to Pull after deletion will return - // NOT_FOUND. After a subscription is deleted, a new one may be created with - // the same name, but the new one has no association with the old - // subscription, or its topic unless the same topic is specified. - DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) - // Modifies the ack deadline for a specific message. This method is useful to - // indicate that more time is needed to process a message by the subscriber, - // or to make the message available for redelivery if the processing was - // interrupted. - ModifyAckDeadline(ctx context.Context, in *ModifyAckDeadlineRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) - // Acknowledges the messages associated with the ack tokens in the - // AcknowledgeRequest. The Pub/Sub system can remove the relevant messages - // from the subscription. - // - // Acknowledging a message whose ack deadline has expired may succeed, - // but such a message may be redelivered later. Acknowledging a message more - // than once will not result in an error. - Acknowledge(ctx context.Context, in *AcknowledgeRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) - // Pulls messages from the server. Returns an empty list if there are no - // messages available in the backlog. The server may return UNAVAILABLE if - // there are too many concurrent pull requests pending for the given - // subscription. - Pull(ctx context.Context, in *PullRequest, opts ...grpc.CallOption) (*PullResponse, error) - // Modifies the PushConfig for a specified subscription. - // - // This may be used to change a push subscription to a pull one (signified - // by an empty PushConfig) or vice versa, or change the endpoint URL and other - // attributes of a push subscription. Messages will accumulate for - // delivery continuously through the call regardless of changes to the - // PushConfig. - ModifyPushConfig(ctx context.Context, in *ModifyPushConfigRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) -} - -type subscriberClient struct { - cc *grpc.ClientConn -} - -func NewSubscriberClient(cc *grpc.ClientConn) SubscriberClient { - return &subscriberClient{cc} -} - -func (c *subscriberClient) CreateSubscription(ctx context.Context, in *Subscription, opts ...grpc.CallOption) (*Subscription, error) { - out := new(Subscription) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Subscriber/CreateSubscription", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) { - out := new(Subscription) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Subscriber/GetSubscription", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) { - out := new(ListSubscriptionsResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Subscriber/ListSubscriptions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) { - out := new(google_protobuf.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Subscriber/DeleteSubscription", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) ModifyAckDeadline(ctx context.Context, in *ModifyAckDeadlineRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) { - out := new(google_protobuf.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Subscriber/ModifyAckDeadline", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) Acknowledge(ctx context.Context, in *AcknowledgeRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) { - out := new(google_protobuf.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Subscriber/Acknowledge", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) Pull(ctx context.Context, in *PullRequest, opts ...grpc.CallOption) (*PullResponse, error) { - out := new(PullResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Subscriber/Pull", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *subscriberClient) ModifyPushConfig(ctx context.Context, in *ModifyPushConfigRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) { - out := new(google_protobuf.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Subscriber/ModifyPushConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Subscriber service - -type SubscriberServer interface { - // Creates a subscription to a given topic for a given subscriber. - // If the subscription already exists, returns ALREADY_EXISTS. - // If the corresponding topic doesn't exist, returns NOT_FOUND. - // - // If the name is not provided in the request, the server will assign a random - // name for this subscription on the same project as the topic. - CreateSubscription(context.Context, *Subscription) (*Subscription, error) - // Gets the configuration details of a subscription. - GetSubscription(context.Context, *GetSubscriptionRequest) (*Subscription, error) - // Lists matching subscriptions. - ListSubscriptions(context.Context, *ListSubscriptionsRequest) (*ListSubscriptionsResponse, error) - // Deletes an existing subscription. All pending messages in the subscription - // are immediately dropped. Calls to Pull after deletion will return - // NOT_FOUND. After a subscription is deleted, a new one may be created with - // the same name, but the new one has no association with the old - // subscription, or its topic unless the same topic is specified. - DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*google_protobuf.Empty, error) - // Modifies the ack deadline for a specific message. This method is useful to - // indicate that more time is needed to process a message by the subscriber, - // or to make the message available for redelivery if the processing was - // interrupted. - ModifyAckDeadline(context.Context, *ModifyAckDeadlineRequest) (*google_protobuf.Empty, error) - // Acknowledges the messages associated with the ack tokens in the - // AcknowledgeRequest. The Pub/Sub system can remove the relevant messages - // from the subscription. - // - // Acknowledging a message whose ack deadline has expired may succeed, - // but such a message may be redelivered later. Acknowledging a message more - // than once will not result in an error. - Acknowledge(context.Context, *AcknowledgeRequest) (*google_protobuf.Empty, error) - // Pulls messages from the server. Returns an empty list if there are no - // messages available in the backlog. The server may return UNAVAILABLE if - // there are too many concurrent pull requests pending for the given - // subscription. - Pull(context.Context, *PullRequest) (*PullResponse, error) - // Modifies the PushConfig for a specified subscription. - // - // This may be used to change a push subscription to a pull one (signified - // by an empty PushConfig) or vice versa, or change the endpoint URL and other - // attributes of a push subscription. Messages will accumulate for - // delivery continuously through the call regardless of changes to the - // PushConfig. - ModifyPushConfig(context.Context, *ModifyPushConfigRequest) (*google_protobuf.Empty, error) -} - -func RegisterSubscriberServer(s *grpc.Server, srv SubscriberServer) { - s.RegisterService(&_Subscriber_serviceDesc, srv) -} - -func _Subscriber_CreateSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Subscription) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).CreateSubscription(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Subscriber/CreateSubscription", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).CreateSubscription(ctx, req.(*Subscription)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_GetSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSubscriptionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).GetSubscription(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Subscriber/GetSubscription", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).GetSubscription(ctx, req.(*GetSubscriptionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_ListSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSubscriptionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).ListSubscriptions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Subscriber/ListSubscriptions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).ListSubscriptions(ctx, req.(*ListSubscriptionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_DeleteSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSubscriptionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).DeleteSubscription(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Subscriber/DeleteSubscription", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).DeleteSubscription(ctx, req.(*DeleteSubscriptionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_ModifyAckDeadline_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyAckDeadlineRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).ModifyAckDeadline(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Subscriber/ModifyAckDeadline", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).ModifyAckDeadline(ctx, req.(*ModifyAckDeadlineRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_Acknowledge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AcknowledgeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).Acknowledge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Subscriber/Acknowledge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).Acknowledge(ctx, req.(*AcknowledgeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_Pull_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PullRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).Pull(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Subscriber/Pull", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).Pull(ctx, req.(*PullRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Subscriber_ModifyPushConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ModifyPushConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SubscriberServer).ModifyPushConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Subscriber/ModifyPushConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriberServer).ModifyPushConfig(ctx, req.(*ModifyPushConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Subscriber_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.pubsub.v1beta2.Subscriber", - HandlerType: (*SubscriberServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateSubscription", - Handler: _Subscriber_CreateSubscription_Handler, - }, - { - MethodName: "GetSubscription", - Handler: _Subscriber_GetSubscription_Handler, - }, - { - MethodName: "ListSubscriptions", - Handler: _Subscriber_ListSubscriptions_Handler, - }, - { - MethodName: "DeleteSubscription", - Handler: _Subscriber_DeleteSubscription_Handler, - }, - { - MethodName: "ModifyAckDeadline", - Handler: _Subscriber_ModifyAckDeadline_Handler, - }, - { - MethodName: "Acknowledge", - Handler: _Subscriber_Acknowledge_Handler, - }, - { - MethodName: "Pull", - Handler: _Subscriber_Pull_Handler, - }, - { - MethodName: "ModifyPushConfig", - Handler: _Subscriber_ModifyPushConfig_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/pubsub/v1beta2/pubsub.proto", -} - -// Client API for Publisher service - -type PublisherClient interface { - // Creates the given topic with the given name. - CreateTopic(ctx context.Context, in *Topic, opts ...grpc.CallOption) (*Topic, error) - // Adds one or more messages to the topic. Returns NOT_FOUND if the topic does - // not exist. - Publish(ctx context.Context, in *PublishRequest, opts ...grpc.CallOption) (*PublishResponse, error) - // Gets the configuration of a topic. - GetTopic(ctx context.Context, in *GetTopicRequest, opts ...grpc.CallOption) (*Topic, error) - // Lists matching topics. - ListTopics(ctx context.Context, in *ListTopicsRequest, opts ...grpc.CallOption) (*ListTopicsResponse, error) - // Lists the name of the subscriptions for this topic. - ListTopicSubscriptions(ctx context.Context, in *ListTopicSubscriptionsRequest, opts ...grpc.CallOption) (*ListTopicSubscriptionsResponse, error) - // Deletes the topic with the given name. Returns NOT_FOUND if the topic does - // not exist. After a topic is deleted, a new topic may be created with the - // same name; this is an entirely new topic with none of the old - // configuration or subscriptions. Existing subscriptions to this topic are - // not deleted. - DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) -} - -type publisherClient struct { - cc *grpc.ClientConn -} - -func NewPublisherClient(cc *grpc.ClientConn) PublisherClient { - return &publisherClient{cc} -} - -func (c *publisherClient) CreateTopic(ctx context.Context, in *Topic, opts ...grpc.CallOption) (*Topic, error) { - out := new(Topic) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Publisher/CreateTopic", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) Publish(ctx context.Context, in *PublishRequest, opts ...grpc.CallOption) (*PublishResponse, error) { - out := new(PublishResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Publisher/Publish", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) GetTopic(ctx context.Context, in *GetTopicRequest, opts ...grpc.CallOption) (*Topic, error) { - out := new(Topic) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Publisher/GetTopic", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) ListTopics(ctx context.Context, in *ListTopicsRequest, opts ...grpc.CallOption) (*ListTopicsResponse, error) { - out := new(ListTopicsResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Publisher/ListTopics", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) ListTopicSubscriptions(ctx context.Context, in *ListTopicSubscriptionsRequest, opts ...grpc.CallOption) (*ListTopicSubscriptionsResponse, error) { - out := new(ListTopicSubscriptionsResponse) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Publisher/ListTopicSubscriptions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *publisherClient) DeleteTopic(ctx context.Context, in *DeleteTopicRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) { - out := new(google_protobuf.Empty) - err := grpc.Invoke(ctx, "/google.pubsub.v1beta2.Publisher/DeleteTopic", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Publisher service - -type PublisherServer interface { - // Creates the given topic with the given name. - CreateTopic(context.Context, *Topic) (*Topic, error) - // Adds one or more messages to the topic. Returns NOT_FOUND if the topic does - // not exist. - Publish(context.Context, *PublishRequest) (*PublishResponse, error) - // Gets the configuration of a topic. - GetTopic(context.Context, *GetTopicRequest) (*Topic, error) - // Lists matching topics. - ListTopics(context.Context, *ListTopicsRequest) (*ListTopicsResponse, error) - // Lists the name of the subscriptions for this topic. - ListTopicSubscriptions(context.Context, *ListTopicSubscriptionsRequest) (*ListTopicSubscriptionsResponse, error) - // Deletes the topic with the given name. Returns NOT_FOUND if the topic does - // not exist. After a topic is deleted, a new topic may be created with the - // same name; this is an entirely new topic with none of the old - // configuration or subscriptions. Existing subscriptions to this topic are - // not deleted. - DeleteTopic(context.Context, *DeleteTopicRequest) (*google_protobuf.Empty, error) -} - -func RegisterPublisherServer(s *grpc.Server, srv PublisherServer) { - s.RegisterService(&_Publisher_serviceDesc, srv) -} - -func _Publisher_CreateTopic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Topic) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).CreateTopic(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Publisher/CreateTopic", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).CreateTopic(ctx, req.(*Topic)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_Publish_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PublishRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).Publish(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Publisher/Publish", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).Publish(ctx, req.(*PublishRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_GetTopic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTopicRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).GetTopic(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Publisher/GetTopic", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).GetTopic(ctx, req.(*GetTopicRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_ListTopics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTopicsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).ListTopics(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Publisher/ListTopics", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).ListTopics(ctx, req.(*ListTopicsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_ListTopicSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTopicSubscriptionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).ListTopicSubscriptions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Publisher/ListTopicSubscriptions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).ListTopicSubscriptions(ctx, req.(*ListTopicSubscriptionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Publisher_DeleteTopic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteTopicRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PublisherServer).DeleteTopic(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.pubsub.v1beta2.Publisher/DeleteTopic", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PublisherServer).DeleteTopic(ctx, req.(*DeleteTopicRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Publisher_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.pubsub.v1beta2.Publisher", - HandlerType: (*PublisherServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateTopic", - Handler: _Publisher_CreateTopic_Handler, - }, - { - MethodName: "Publish", - Handler: _Publisher_Publish_Handler, - }, - { - MethodName: "GetTopic", - Handler: _Publisher_GetTopic_Handler, - }, - { - MethodName: "ListTopics", - Handler: _Publisher_ListTopics_Handler, - }, - { - MethodName: "ListTopicSubscriptions", - Handler: _Publisher_ListTopicSubscriptions_Handler, - }, - { - MethodName: "DeleteTopic", - Handler: _Publisher_DeleteTopic_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/pubsub/v1beta2/pubsub.proto", -} - -func init() { proto.RegisterFile("google/pubsub/v1beta2/pubsub.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1107 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0x5f, 0x6f, 0xdb, 0x54, - 0x14, 0x97, 0x93, 0xfe, 0xcb, 0x71, 0x4a, 0xda, 0xab, 0xad, 0x73, 0x53, 0x06, 0x9d, 0x37, 0x4a, - 0x86, 0xb4, 0x64, 0x0b, 0x45, 0x42, 0x8c, 0x7f, 0xed, 0x56, 0x4d, 0x91, 0xa8, 0xc8, 0xdc, 0x3e, - 0xa0, 0x09, 0x2d, 0x72, 0xec, 0x5b, 0xc7, 0xc4, 0xb1, 0x3d, 0x5f, 0xbb, 0x34, 0x7b, 0x43, 0x08, - 0xc1, 0x13, 0x1f, 0x85, 0xaf, 0xc0, 0x03, 0x1f, 0x82, 0xaf, 0x83, 0x7c, 0xef, 0xb5, 0x63, 0xa7, - 0xbe, 0xa9, 0xdb, 0x89, 0x37, 0xdf, 0x73, 0xcf, 0xff, 0x73, 0x7e, 0xe7, 0x1e, 0x83, 0x6a, 0x79, - 0x9e, 0xe5, 0xe0, 0x8e, 0x1f, 0x0d, 0x49, 0x34, 0xec, 0x9c, 0x3f, 0x19, 0xe2, 0x50, 0xef, 0xf2, - 0x63, 0xdb, 0x0f, 0xbc, 0xd0, 0x43, 0xb7, 0x19, 0x4f, 0x9b, 0x13, 0x39, 0x4f, 0x73, 0x27, 0x11, - 0x8d, 0x99, 0x86, 0xd1, 0x59, 0x07, 0x4f, 0xfc, 0x70, 0xca, 0x64, 0xd4, 0x1d, 0x58, 0x3e, 0xf5, - 0x7c, 0xdb, 0x40, 0x08, 0x96, 0x5c, 0x7d, 0x82, 0x15, 0x69, 0x57, 0x6a, 0xd5, 0x34, 0xfa, 0xad, - 0xfe, 0x2b, 0xc1, 0x7a, 0x9f, 0x2a, 0x3b, 0xc6, 0x84, 0xe8, 0x16, 0x8e, 0xb9, 0x4c, 0x3d, 0xd4, - 0x29, 0x57, 0x5d, 0xa3, 0xdf, 0xe8, 0x14, 0x40, 0x0f, 0xc3, 0xc0, 0x1e, 0x46, 0x21, 0x26, 0x4a, - 0x65, 0xb7, 0xda, 0x92, 0xbb, 0xfb, 0xed, 0x42, 0x5f, 0xda, 0x39, 0x6d, 0xed, 0x83, 0x54, 0xec, - 0xc8, 0x0d, 0x83, 0xa9, 0x96, 0xd1, 0x83, 0xee, 0x02, 0x4c, 0x18, 0xdb, 0xc0, 0x36, 0x95, 0x2a, - 0xf5, 0xaa, 0xc6, 0x29, 0x3d, 0xb3, 0xf9, 0x15, 0x34, 0xe6, 0xa4, 0xd1, 0x06, 0x54, 0xc7, 0x78, - 0xca, 0x03, 0x88, 0x3f, 0xd1, 0x2d, 0x58, 0x3e, 0xd7, 0x9d, 0x08, 0x2b, 0x15, 0x4a, 0x63, 0x87, - 0x2f, 0x2a, 0x9f, 0x4b, 0xea, 0xc7, 0xd0, 0x78, 0x81, 0x43, 0x1a, 0xb9, 0x86, 0xdf, 0x44, 0x98, - 0x84, 0x31, 0x73, 0x18, 0x9f, 0xb9, 0x02, 0x76, 0x50, 0x47, 0xf0, 0x5e, 0x3f, 0x1a, 0x3a, 0x36, - 0x19, 0x2d, 0xe4, 0x43, 0xdf, 0xc2, 0x1a, 0x77, 0x2e, 0x49, 0xc1, 0x83, 0x32, 0x29, 0xd0, 0x52, - 0x29, 0xb5, 0x0b, 0x8d, 0xd4, 0x12, 0xf1, 0x3d, 0x97, 0x60, 0xf4, 0x21, 0xc8, 0xb3, 0x1c, 0x10, - 0x45, 0xda, 0xad, 0xb6, 0x6a, 0x1a, 0xa4, 0x49, 0x20, 0xaa, 0x0d, 0x9b, 0xdf, 0xd9, 0x84, 0xc5, - 0x41, 0x12, 0x07, 0x15, 0x58, 0xf5, 0x03, 0xef, 0x27, 0x6c, 0x84, 0xdc, 0xc5, 0xe4, 0x88, 0x76, - 0xa0, 0xe6, 0xc7, 0xca, 0x88, 0xfd, 0x96, 0xe5, 0x64, 0x59, 0x5b, 0x8b, 0x09, 0x27, 0xf6, 0x5b, - 0x1c, 0x27, 0x9c, 0x5e, 0x86, 0xde, 0x18, 0xbb, 0x49, 0xc2, 0x63, 0xca, 0x69, 0x4c, 0x50, 0x03, - 0x40, 0x59, 0x53, 0xdc, 0xc3, 0x7d, 0x58, 0xa1, 0xf1, 0x33, 0xe7, 0xe4, 0xee, 0xfb, 0x82, 0xa0, - 0x59, 0xa6, 0x39, 0x2f, 0xda, 0x83, 0x86, 0x8b, 0x2f, 0xc2, 0x41, 0xc6, 0x1e, 0xab, 0xd0, 0x7a, - 0x4c, 0xee, 0xa7, 0x36, 0xdf, 0xc0, 0xdd, 0xd4, 0xe6, 0x49, 0x34, 0x24, 0x46, 0x60, 0xfb, 0xa1, - 0xed, 0xb9, 0x64, 0x71, 0x2d, 0xde, 0x25, 0x4c, 0x17, 0x3e, 0x10, 0x99, 0xe4, 0x21, 0x3f, 0x80, - 0x75, 0x92, 0xbd, 0xe0, 0x65, 0xc9, 0x13, 0x4b, 0x87, 0xf8, 0x09, 0xa0, 0xe7, 0xd8, 0xc1, 0x21, - 0x2e, 0xd1, 0x8b, 0x7f, 0x49, 0x50, 0xcf, 0xfa, 0x54, 0x84, 0xd9, 0x99, 0x68, 0x25, 0x9b, 0x92, - 0x43, 0x90, 0xfd, 0x88, 0x8c, 0x06, 0x86, 0xe7, 0x9e, 0xd9, 0x96, 0xb2, 0xb4, 0x2b, 0xb5, 0xe4, - 0xee, 0x3d, 0x61, 0x87, 0x92, 0xd1, 0x33, 0xca, 0xa8, 0x81, 0x9f, 0x7e, 0xa3, 0xc7, 0x70, 0x4b, - 0x37, 0xc6, 0x03, 0x13, 0xeb, 0xa6, 0x63, 0xbb, 0x78, 0x40, 0xb0, 0xe1, 0xb9, 0x26, 0x51, 0x96, - 0x69, 0x86, 0x91, 0x6e, 0x8c, 0x9f, 0xf3, 0xab, 0x13, 0x76, 0xa3, 0xfe, 0x23, 0x01, 0xcc, 0x94, - 0xa1, 0xfb, 0xb0, 0x4e, 0x9d, 0xc0, 0xae, 0xe9, 0x7b, 0xb6, 0x9b, 0xb4, 0x67, 0x3d, 0x26, 0x1e, - 0x71, 0x1a, 0x7a, 0x59, 0x30, 0x4d, 0x9e, 0x5c, 0xe9, 0xe8, 0xa2, 0x51, 0xf2, 0xae, 0xb3, 0x62, - 0x04, 0x0d, 0x0d, 0x1b, 0xd8, 0x3e, 0xc7, 0x66, 0x32, 0x06, 0x6f, 0xc3, 0x4a, 0x9c, 0x0a, 0xdb, - 0x4c, 0x0a, 0xa4, 0x1b, 0xe3, 0x9e, 0x89, 0xbe, 0x86, 0x55, 0x0e, 0x4e, 0xaa, 0xa5, 0xec, 0x0c, - 0x48, 0x84, 0xd4, 0x2f, 0x61, 0xeb, 0x05, 0x0e, 0xb3, 0x25, 0x4e, 0x1a, 0x42, 0x85, 0x7a, 0xb6, - 0xbf, 0x92, 0xcc, 0x65, 0x69, 0xaa, 0x0f, 0x4a, 0xdc, 0xba, 0x85, 0x40, 0xf9, 0x7f, 0x66, 0xc2, - 0x9f, 0x12, 0x6c, 0x17, 0x98, 0xe4, 0x40, 0xe9, 0x15, 0x01, 0x45, 0xee, 0xde, 0x17, 0xe4, 0x24, - 0x17, 0xf6, 0x0d, 0xd1, 0xf4, 0x0d, 0x6c, 0x33, 0x34, 0xdd, 0x34, 0x87, 0xbf, 0x48, 0x70, 0xe7, - 0xd8, 0x33, 0xed, 0xb3, 0x69, 0x06, 0x04, 0xe5, 0xe5, 0xe7, 0x71, 0x56, 0xb9, 0x01, 0xce, 0xd4, - 0x5f, 0x25, 0x90, 0xfb, 0x91, 0xe3, 0x5c, 0xc7, 0xee, 0x23, 0x40, 0x01, 0x0e, 0xa3, 0xc0, 0x1d, - 0xd8, 0x93, 0x09, 0x36, 0x6d, 0x3d, 0xc4, 0xce, 0x94, 0x9a, 0x5f, 0xd3, 0x36, 0xd9, 0x4d, 0x6f, - 0x76, 0x81, 0xee, 0x41, 0x7d, 0xa2, 0x5f, 0x0c, 0xd2, 0x17, 0xab, 0x4a, 0xeb, 0x2e, 0x4f, 0xf4, - 0x8b, 0xe3, 0xe4, 0x39, 0x32, 0xa0, 0xce, 0x9c, 0xe0, 0xd5, 0x3c, 0x81, 0xcd, 0x80, 0xa3, 0x60, - 0x26, 0xc7, 0x2a, 0xba, 0x27, 0x88, 0x6f, 0x0e, 0x35, 0xda, 0x46, 0x90, 0x27, 0x10, 0xf5, 0x77, - 0x09, 0x14, 0x96, 0xee, 0x83, 0xd9, 0xf4, 0xb8, 0x4e, 0xdc, 0x33, 0x20, 0x56, 0xb2, 0x40, 0x14, - 0x8d, 0xaa, 0xaa, 0x70, 0x54, 0xbd, 0x04, 0x74, 0x60, 0x8c, 0x5d, 0xef, 0x67, 0x07, 0x9b, 0xd6, - 0xb5, 0x5c, 0xb8, 0x03, 0xab, 0xcc, 0x05, 0x36, 0xad, 0x6a, 0xda, 0x0a, 0xf5, 0x81, 0x74, 0xff, - 0x58, 0x01, 0xe0, 0x7d, 0x38, 0xc4, 0x01, 0x7a, 0x0d, 0xe8, 0x59, 0x80, 0xf5, 0x7c, 0x6f, 0xa2, - 0x32, 0x68, 0x68, 0x96, 0x61, 0x42, 0x98, 0xae, 0x34, 0x39, 0xd2, 0x23, 0x81, 0x5c, 0xf1, 0x90, - 0x29, 0x67, 0xe6, 0x9c, 0xad, 0x1c, 0x39, 0xc8, 0xa3, 0x8e, 0x40, 0x52, 0x34, 0x8f, 0x9a, 0x8f, - 0xcb, 0x0b, 0xf0, 0xfe, 0x7b, 0x9d, 0x3c, 0x94, 0x39, 0x6f, 0x44, 0x7a, 0x84, 0x53, 0xa0, 0xb9, - 0x95, 0x4a, 0xf0, 0x75, 0xb8, 0x7d, 0x14, 0xaf, 0xc3, 0xe8, 0x47, 0xd8, 0xbc, 0xd4, 0x89, 0xc2, - 0xb8, 0x44, 0x3d, 0x2b, 0xd4, 0xde, 0x07, 0x39, 0xd3, 0x5e, 0xe8, 0xa1, 0x40, 0xef, 0xe5, 0x16, - 0x14, 0x6a, 0xfc, 0x1e, 0x96, 0x62, 0x7c, 0x22, 0x55, 0x38, 0x5c, 0xd2, 0x09, 0x22, 0x2c, 0x6c, - 0x0e, 0xe0, 0xaf, 0x60, 0x63, 0x7e, 0xf2, 0xa1, 0xf6, 0xc2, 0xf8, 0x2f, 0x8d, 0x48, 0x91, 0xb3, - 0xdd, 0xbf, 0x97, 0xa0, 0xc6, 0x97, 0x5b, 0x1c, 0xa0, 0x1e, 0xc8, 0x0c, 0x09, 0xec, 0xcf, 0x63, - 0xe1, 0xce, 0xd8, 0x5c, 0x78, 0x8b, 0x7e, 0x80, 0x55, 0xae, 0x17, 0x7d, 0x24, 0x7e, 0x6b, 0x33, - 0xeb, 0x7b, 0x73, 0xef, 0x2a, 0x36, 0x9e, 0x8e, 0x3e, 0xac, 0x25, 0x7f, 0x08, 0x68, 0x4f, 0x8c, - 0xa3, 0xec, 0xda, 0x76, 0x85, 0xaf, 0x3a, 0xc0, 0x6c, 0x83, 0x46, 0xad, 0x05, 0x08, 0xc8, 0xed, - 0xf3, 0xcd, 0x87, 0x25, 0x38, 0xb9, 0xd3, 0xbf, 0x49, 0xb0, 0x55, 0xbc, 0xbe, 0xa2, 0xfd, 0xab, - 0xb4, 0x14, 0xe2, 0xf4, 0xb3, 0x6b, 0x4a, 0xa5, 0xc9, 0x93, 0x33, 0x5b, 0xad, 0xb0, 0xdd, 0x2f, - 0x6f, 0xbe, 0xa2, 0x0e, 0x3a, 0xb4, 0x60, 0xdb, 0xf0, 0x26, 0xc5, 0x7a, 0x0e, 0x65, 0xb6, 0x4f, - 0xf5, 0x63, 0x91, 0xbe, 0xf4, 0xea, 0x29, 0xe7, 0xb2, 0x3c, 0x47, 0x77, 0xad, 0xb6, 0x17, 0x58, - 0x1d, 0x0b, 0xbb, 0x54, 0x61, 0x87, 0x5d, 0xe9, 0xbe, 0x4d, 0xe6, 0x7e, 0xa5, 0x9f, 0xb2, 0xe3, - 0x70, 0x85, 0xf2, 0x7d, 0xfa, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x2d, 0xb0, 0x67, 0x71, - 0x0f, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/rpc/code/code.pb.go b/vendor/google.golang.org/genproto/googleapis/rpc/code/code.pb.go deleted file mode 100644 index dbd73b37..00000000 --- a/vendor/google.golang.org/genproto/googleapis/rpc/code/code.pb.go +++ /dev/null @@ -1,252 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/rpc/code.proto - -/* -Package code is a generated protocol buffer package. - -It is generated from these files: - google/rpc/code.proto - -It has these top-level messages: -*/ -package code - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The canonical error codes for Google APIs. -// -// -// Sometimes multiple error codes may apply. Services should return -// the most specific error code that applies. For example, prefer -// `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply. -// Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`. -type Code int32 - -const ( - // Not an error; returned on success - // - // HTTP Mapping: 200 OK - Code_OK Code = 0 - // The operation was cancelled, typically by the caller. - // - // HTTP Mapping: 499 Client Closed Request - Code_CANCELLED Code = 1 - // Unknown error. For example, this error may be returned when - // a `Status` value received from another address space belongs to - // an error space that is not known in this address space. Also - // errors raised by APIs that do not return enough error information - // may be converted to this error. - // - // HTTP Mapping: 500 Internal Server Error - Code_UNKNOWN Code = 2 - // The client specified an invalid argument. Note that this differs - // from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments - // that are problematic regardless of the state of the system - // (e.g., a malformed file name). - // - // HTTP Mapping: 400 Bad Request - Code_INVALID_ARGUMENT Code = 3 - // The deadline expired before the operation could complete. For operations - // that change the state of the system, this error may be returned - // even if the operation has completed successfully. For example, a - // successful response from a server could have been delayed long - // enough for the deadline to expire. - // - // HTTP Mapping: 504 Gateway Timeout - Code_DEADLINE_EXCEEDED Code = 4 - // Some requested entity (e.g., file or directory) was not found. - // - // Note to server developers: if a request is denied for an entire class - // of users, such as gradual feature rollout or undocumented whitelist, - // `NOT_FOUND` may be used. If a request is denied for some users within - // a class of users, such as user-based access control, `PERMISSION_DENIED` - // must be used. - // - // HTTP Mapping: 404 Not Found - Code_NOT_FOUND Code = 5 - // The entity that a client attempted to create (e.g., file or directory) - // already exists. - // - // HTTP Mapping: 409 Conflict - Code_ALREADY_EXISTS Code = 6 - // The caller does not have permission to execute the specified - // operation. `PERMISSION_DENIED` must not be used for rejections - // caused by exhausting some resource (use `RESOURCE_EXHAUSTED` - // instead for those errors). `PERMISSION_DENIED` must not be - // used if the caller can not be identified (use `UNAUTHENTICATED` - // instead for those errors). This error code does not imply the - // request is valid or the requested entity exists or satisfies - // other pre-conditions. - // - // HTTP Mapping: 403 Forbidden - Code_PERMISSION_DENIED Code = 7 - // The request does not have valid authentication credentials for the - // operation. - // - // HTTP Mapping: 401 Unauthorized - Code_UNAUTHENTICATED Code = 16 - // Some resource has been exhausted, perhaps a per-user quota, or - // perhaps the entire file system is out of space. - // - // HTTP Mapping: 429 Too Many Requests - Code_RESOURCE_EXHAUSTED Code = 8 - // The operation was rejected because the system is not in a state - // required for the operation's execution. For example, the directory - // to be deleted is non-empty, an rmdir operation is applied to - // a non-directory, etc. - // - // Service implementors can use the following guidelines to decide - // between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: - // (a) Use `UNAVAILABLE` if the client can retry just the failing call. - // (b) Use `ABORTED` if the client should retry at a higher level - // (e.g., when a client-specified test-and-set fails, indicating the - // client should restart a read-modify-write sequence). - // (c) Use `FAILED_PRECONDITION` if the client should not retry until - // the system state has been explicitly fixed. E.g., if an "rmdir" - // fails because the directory is non-empty, `FAILED_PRECONDITION` - // should be returned since the client should not retry unless - // the files are deleted from the directory. - // - // HTTP Mapping: 400 Bad Request - Code_FAILED_PRECONDITION Code = 9 - // The operation was aborted, typically due to a concurrency issue such as - // a sequencer check failure or transaction abort. - // - // See the guidelines above for deciding between `FAILED_PRECONDITION`, - // `ABORTED`, and `UNAVAILABLE`. - // - // HTTP Mapping: 409 Conflict - Code_ABORTED Code = 10 - // The operation was attempted past the valid range. E.g., seeking or - // reading past end-of-file. - // - // Unlike `INVALID_ARGUMENT`, this error indicates a problem that may - // be fixed if the system state changes. For example, a 32-bit file - // system will generate `INVALID_ARGUMENT` if asked to read at an - // offset that is not in the range [0,2^32-1], but it will generate - // `OUT_OF_RANGE` if asked to read from an offset past the current - // file size. - // - // There is a fair bit of overlap between `FAILED_PRECONDITION` and - // `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific - // error) when it applies so that callers who are iterating through - // a space can easily look for an `OUT_OF_RANGE` error to detect when - // they are done. - // - // HTTP Mapping: 400 Bad Request - Code_OUT_OF_RANGE Code = 11 - // The operation is not implemented or is not supported/enabled in this - // service. - // - // HTTP Mapping: 501 Not Implemented - Code_UNIMPLEMENTED Code = 12 - // Internal errors. This means that some invariants expected by the - // underlying system have been broken. This error code is reserved - // for serious errors. - // - // HTTP Mapping: 500 Internal Server Error - Code_INTERNAL Code = 13 - // The service is currently unavailable. This is most likely a - // transient condition, which can be corrected by retrying with - // a backoff. - // - // See the guidelines above for deciding between `FAILED_PRECONDITION`, - // `ABORTED`, and `UNAVAILABLE`. - // - // HTTP Mapping: 503 Service Unavailable - Code_UNAVAILABLE Code = 14 - // Unrecoverable data loss or corruption. - // - // HTTP Mapping: 500 Internal Server Error - Code_DATA_LOSS Code = 15 -) - -var Code_name = map[int32]string{ - 0: "OK", - 1: "CANCELLED", - 2: "UNKNOWN", - 3: "INVALID_ARGUMENT", - 4: "DEADLINE_EXCEEDED", - 5: "NOT_FOUND", - 6: "ALREADY_EXISTS", - 7: "PERMISSION_DENIED", - 16: "UNAUTHENTICATED", - 8: "RESOURCE_EXHAUSTED", - 9: "FAILED_PRECONDITION", - 10: "ABORTED", - 11: "OUT_OF_RANGE", - 12: "UNIMPLEMENTED", - 13: "INTERNAL", - 14: "UNAVAILABLE", - 15: "DATA_LOSS", -} -var Code_value = map[string]int32{ - "OK": 0, - "CANCELLED": 1, - "UNKNOWN": 2, - "INVALID_ARGUMENT": 3, - "DEADLINE_EXCEEDED": 4, - "NOT_FOUND": 5, - "ALREADY_EXISTS": 6, - "PERMISSION_DENIED": 7, - "UNAUTHENTICATED": 16, - "RESOURCE_EXHAUSTED": 8, - "FAILED_PRECONDITION": 9, - "ABORTED": 10, - "OUT_OF_RANGE": 11, - "UNIMPLEMENTED": 12, - "INTERNAL": 13, - "UNAVAILABLE": 14, - "DATA_LOSS": 15, -} - -func (x Code) String() string { - return proto.EnumName(Code_name, int32(x)) -} -func (Code) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func init() { - proto.RegisterEnum("google.rpc.Code", Code_name, Code_value) -} - -func init() { proto.RegisterFile("google/rpc/code.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 362 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x44, 0x51, 0xcd, 0x6e, 0x93, 0x31, - 0x10, 0xa4, 0x69, 0x49, 0x9b, 0xcd, 0xdf, 0xd6, 0xa5, 0xf0, 0x0e, 0x1c, 0x92, 0x43, 0x8f, 0x9c, - 0x36, 0x9f, 0x37, 0xad, 0x55, 0x67, 0xfd, 0xc9, 0x3f, 0x25, 0x70, 0xb1, 0x4a, 0x1a, 0x7d, 0x42, - 0x2a, 0x75, 0xf4, 0xc1, 0x13, 0xf1, 0x12, 0xbc, 0x1e, 0x72, 0x8b, 0xe8, 0xc5, 0x87, 0x99, 0xf1, - 0xee, 0xce, 0x0c, 0x5c, 0x76, 0xa5, 0x74, 0x8f, 0xfb, 0x65, 0x7f, 0xd8, 0x2d, 0x77, 0xe5, 0x61, - 0xbf, 0x38, 0xf4, 0xe5, 0x57, 0x51, 0xf0, 0x02, 0x2f, 0xfa, 0xc3, 0xee, 0xe3, 0x9f, 0x01, 0x9c, - 0x34, 0xe5, 0x61, 0xaf, 0x86, 0x30, 0x70, 0xb7, 0xf8, 0x46, 0x4d, 0x61, 0xd4, 0x90, 0x34, 0x6c, - 0x2d, 0x6b, 0x3c, 0x52, 0x63, 0x38, 0x4d, 0x72, 0x2b, 0xee, 0xb3, 0xe0, 0x40, 0xbd, 0x03, 0x34, - 0x72, 0x47, 0xd6, 0xe8, 0x4c, 0xfe, 0x3a, 0x6d, 0x58, 0x22, 0x1e, 0xab, 0x4b, 0x38, 0xd7, 0x4c, - 0xda, 0x1a, 0xe1, 0xcc, 0xdb, 0x86, 0x59, 0xb3, 0xc6, 0x93, 0x3a, 0x48, 0x5c, 0xcc, 0x6b, 0x97, - 0x44, 0xe3, 0x5b, 0xa5, 0x60, 0x46, 0xd6, 0x33, 0xe9, 0x2f, 0x99, 0xb7, 0x26, 0xc4, 0x80, 0xc3, - 0xfa, 0xb3, 0x65, 0xbf, 0x31, 0x21, 0x18, 0x27, 0x59, 0xb3, 0x18, 0xd6, 0x78, 0xaa, 0x2e, 0x60, - 0x9e, 0x84, 0x52, 0xbc, 0x61, 0x89, 0xa6, 0xa1, 0xc8, 0x1a, 0x51, 0xbd, 0x07, 0xe5, 0x39, 0xb8, - 0xe4, 0x9b, 0xba, 0xe5, 0x86, 0x52, 0xa8, 0xf8, 0x99, 0xfa, 0x00, 0x17, 0x6b, 0x32, 0x96, 0x75, - 0x6e, 0x3d, 0x37, 0x4e, 0xb4, 0x89, 0xc6, 0x09, 0x8e, 0xea, 0xe5, 0xb4, 0x72, 0xbe, 0xaa, 0x40, - 0x21, 0x4c, 0x5c, 0x8a, 0xd9, 0xad, 0xb3, 0x27, 0xb9, 0x66, 0x1c, 0xab, 0x73, 0x98, 0x26, 0x31, - 0x9b, 0xd6, 0x72, 0xb5, 0xc1, 0x1a, 0x27, 0x6a, 0x02, 0x67, 0x46, 0x22, 0x7b, 0x21, 0x8b, 0x53, - 0x35, 0x87, 0x71, 0x12, 0xba, 0x23, 0x63, 0x69, 0x65, 0x19, 0x67, 0xd5, 0x90, 0xa6, 0x48, 0xd9, - 0xba, 0x10, 0x70, 0xbe, 0xda, 0xc2, 0x6c, 0x57, 0x7e, 0x2c, 0x5e, 0xb3, 0x5c, 0x8d, 0x6a, 0x90, - 0x6d, 0x8d, 0xb8, 0x3d, 0xfa, 0x7a, 0xf5, 0x8f, 0xe8, 0xca, 0xe3, 0xfd, 0x53, 0xb7, 0x28, 0x7d, - 0xb7, 0xec, 0xf6, 0x4f, 0xcf, 0x05, 0x2c, 0x5f, 0xa8, 0xfb, 0xc3, 0xf7, 0x9f, 0xff, 0xab, 0xf9, - 0x54, 0x9f, 0xdf, 0x83, 0x63, 0xdf, 0x36, 0xdf, 0x86, 0xcf, 0xaa, 0xab, 0xbf, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x8e, 0x97, 0x77, 0xc2, 0xbf, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/rpc/errdetails/error_details.pb.go b/vendor/google.golang.org/genproto/googleapis/rpc/errdetails/error_details.pb.go deleted file mode 100644 index 068bfb2e..00000000 --- a/vendor/google.golang.org/genproto/googleapis/rpc/errdetails/error_details.pb.go +++ /dev/null @@ -1,495 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/rpc/error_details.proto - -/* -Package errdetails is a generated protocol buffer package. - -It is generated from these files: - google/rpc/error_details.proto - -It has these top-level messages: - RetryInfo - DebugInfo - QuotaFailure - PreconditionFailure - BadRequest - RequestInfo - ResourceInfo - Help - LocalizedMessage -*/ -package errdetails - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/duration" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Describes when the clients can retry a failed request. Clients could ignore -// the recommendation here or retry when this information is missing from error -// responses. -// -// It's always recommended that clients should use exponential backoff when -// retrying. -// -// Clients should wait until `retry_delay` amount of time has passed since -// receiving the error response before retrying. If retrying requests also -// fail, clients should use an exponential backoff scheme to gradually increase -// the delay between retries based on `retry_delay`, until either a maximum -// number of retires have been reached or a maximum retry delay cap has been -// reached. -type RetryInfo struct { - // Clients should wait at least this long between retrying the same request. - RetryDelay *google_protobuf.Duration `protobuf:"bytes,1,opt,name=retry_delay,json=retryDelay" json:"retry_delay,omitempty"` -} - -func (m *RetryInfo) Reset() { *m = RetryInfo{} } -func (m *RetryInfo) String() string { return proto.CompactTextString(m) } -func (*RetryInfo) ProtoMessage() {} -func (*RetryInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *RetryInfo) GetRetryDelay() *google_protobuf.Duration { - if m != nil { - return m.RetryDelay - } - return nil -} - -// Describes additional debugging info. -type DebugInfo struct { - // The stack trace entries indicating where the error occurred. - StackEntries []string `protobuf:"bytes,1,rep,name=stack_entries,json=stackEntries" json:"stack_entries,omitempty"` - // Additional debugging information provided by the server. - Detail string `protobuf:"bytes,2,opt,name=detail" json:"detail,omitempty"` -} - -func (m *DebugInfo) Reset() { *m = DebugInfo{} } -func (m *DebugInfo) String() string { return proto.CompactTextString(m) } -func (*DebugInfo) ProtoMessage() {} -func (*DebugInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *DebugInfo) GetStackEntries() []string { - if m != nil { - return m.StackEntries - } - return nil -} - -func (m *DebugInfo) GetDetail() string { - if m != nil { - return m.Detail - } - return "" -} - -// Describes how a quota check failed. -// -// For example if a daily limit was exceeded for the calling project, -// a service could respond with a QuotaFailure detail containing the project -// id and the description of the quota limit that was exceeded. If the -// calling project hasn't enabled the service in the developer console, then -// a service could respond with the project id and set `service_disabled` -// to true. -// -// Also see RetryDetail and Help types for other details about handling a -// quota failure. -type QuotaFailure struct { - // Describes all quota violations. - Violations []*QuotaFailure_Violation `protobuf:"bytes,1,rep,name=violations" json:"violations,omitempty"` -} - -func (m *QuotaFailure) Reset() { *m = QuotaFailure{} } -func (m *QuotaFailure) String() string { return proto.CompactTextString(m) } -func (*QuotaFailure) ProtoMessage() {} -func (*QuotaFailure) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *QuotaFailure) GetViolations() []*QuotaFailure_Violation { - if m != nil { - return m.Violations - } - return nil -} - -// A message type used to describe a single quota violation. For example, a -// daily quota or a custom quota that was exceeded. -type QuotaFailure_Violation struct { - // The subject on which the quota check failed. - // For example, "clientip:<ip address of client>" or "project:<Google - // developer project id>". - Subject string `protobuf:"bytes,1,opt,name=subject" json:"subject,omitempty"` - // A description of how the quota check failed. Clients can use this - // description to find more about the quota configuration in the service's - // public documentation, or find the relevant quota limit to adjust through - // developer console. - // - // For example: "Service disabled" or "Daily Limit for read operations - // exceeded". - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *QuotaFailure_Violation) Reset() { *m = QuotaFailure_Violation{} } -func (m *QuotaFailure_Violation) String() string { return proto.CompactTextString(m) } -func (*QuotaFailure_Violation) ProtoMessage() {} -func (*QuotaFailure_Violation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *QuotaFailure_Violation) GetSubject() string { - if m != nil { - return m.Subject - } - return "" -} - -func (m *QuotaFailure_Violation) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// Describes what preconditions have failed. -// -// For example, if an RPC failed because it required the Terms of Service to be -// acknowledged, it could list the terms of service violation in the -// PreconditionFailure message. -type PreconditionFailure struct { - // Describes all precondition violations. - Violations []*PreconditionFailure_Violation `protobuf:"bytes,1,rep,name=violations" json:"violations,omitempty"` -} - -func (m *PreconditionFailure) Reset() { *m = PreconditionFailure{} } -func (m *PreconditionFailure) String() string { return proto.CompactTextString(m) } -func (*PreconditionFailure) ProtoMessage() {} -func (*PreconditionFailure) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *PreconditionFailure) GetViolations() []*PreconditionFailure_Violation { - if m != nil { - return m.Violations - } - return nil -} - -// A message type used to describe a single precondition failure. -type PreconditionFailure_Violation struct { - // The type of PreconditionFailure. We recommend using a service-specific - // enum type to define the supported precondition violation types. For - // example, "TOS" for "Terms of Service violation". - Type string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"` - // The subject, relative to the type, that failed. - // For example, "google.com/cloud" relative to the "TOS" type would - // indicate which terms of service is being referenced. - Subject string `protobuf:"bytes,2,opt,name=subject" json:"subject,omitempty"` - // A description of how the precondition failed. Developers can use this - // description to understand how to fix the failure. - // - // For example: "Terms of service not accepted". - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` -} - -func (m *PreconditionFailure_Violation) Reset() { *m = PreconditionFailure_Violation{} } -func (m *PreconditionFailure_Violation) String() string { return proto.CompactTextString(m) } -func (*PreconditionFailure_Violation) ProtoMessage() {} -func (*PreconditionFailure_Violation) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{3, 0} -} - -func (m *PreconditionFailure_Violation) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *PreconditionFailure_Violation) GetSubject() string { - if m != nil { - return m.Subject - } - return "" -} - -func (m *PreconditionFailure_Violation) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// Describes violations in a client request. This error type focuses on the -// syntactic aspects of the request. -type BadRequest struct { - // Describes all violations in a client request. - FieldViolations []*BadRequest_FieldViolation `protobuf:"bytes,1,rep,name=field_violations,json=fieldViolations" json:"field_violations,omitempty"` -} - -func (m *BadRequest) Reset() { *m = BadRequest{} } -func (m *BadRequest) String() string { return proto.CompactTextString(m) } -func (*BadRequest) ProtoMessage() {} -func (*BadRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *BadRequest) GetFieldViolations() []*BadRequest_FieldViolation { - if m != nil { - return m.FieldViolations - } - return nil -} - -// A message type used to describe a single bad request field. -type BadRequest_FieldViolation struct { - // A path leading to a field in the request body. The value will be a - // sequence of dot-separated identifiers that identify a protocol buffer - // field. E.g., "field_violations.field" would identify this field. - Field string `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"` - // A description of why the request element is bad. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` -} - -func (m *BadRequest_FieldViolation) Reset() { *m = BadRequest_FieldViolation{} } -func (m *BadRequest_FieldViolation) String() string { return proto.CompactTextString(m) } -func (*BadRequest_FieldViolation) ProtoMessage() {} -func (*BadRequest_FieldViolation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} } - -func (m *BadRequest_FieldViolation) GetField() string { - if m != nil { - return m.Field - } - return "" -} - -func (m *BadRequest_FieldViolation) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// Contains metadata about the request that clients can attach when filing a bug -// or providing other forms of feedback. -type RequestInfo struct { - // An opaque string that should only be interpreted by the service generating - // it. For example, it can be used to identify requests in the service's logs. - RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId" json:"request_id,omitempty"` - // Any data that was used to serve this request. For example, an encrypted - // stack trace that can be sent back to the service provider for debugging. - ServingData string `protobuf:"bytes,2,opt,name=serving_data,json=servingData" json:"serving_data,omitempty"` -} - -func (m *RequestInfo) Reset() { *m = RequestInfo{} } -func (m *RequestInfo) String() string { return proto.CompactTextString(m) } -func (*RequestInfo) ProtoMessage() {} -func (*RequestInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *RequestInfo) GetRequestId() string { - if m != nil { - return m.RequestId - } - return "" -} - -func (m *RequestInfo) GetServingData() string { - if m != nil { - return m.ServingData - } - return "" -} - -// Describes the resource that is being accessed. -type ResourceInfo struct { - // A name for the type of resource being accessed, e.g. "sql table", - // "cloud storage bucket", "file", "Google calendar"; or the type URL - // of the resource: e.g. "type.googleapis.com/google.pubsub.v1.Topic". - ResourceType string `protobuf:"bytes,1,opt,name=resource_type,json=resourceType" json:"resource_type,omitempty"` - // The name of the resource being accessed. For example, a shared calendar - // name: "example.com_4fghdhgsrgh@group.calendar.google.com", if the current - // error is [google.rpc.Code.PERMISSION_DENIED][google.rpc.Code.PERMISSION_DENIED]. - ResourceName string `protobuf:"bytes,2,opt,name=resource_name,json=resourceName" json:"resource_name,omitempty"` - // The owner of the resource (optional). - // For example, "user:<owner email>" or "project:<Google developer project - // id>". - Owner string `protobuf:"bytes,3,opt,name=owner" json:"owner,omitempty"` - // Describes what error is encountered when accessing this resource. - // For example, updating a cloud project may require the `writer` permission - // on the developer console project. - Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"` -} - -func (m *ResourceInfo) Reset() { *m = ResourceInfo{} } -func (m *ResourceInfo) String() string { return proto.CompactTextString(m) } -func (*ResourceInfo) ProtoMessage() {} -func (*ResourceInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ResourceInfo) GetResourceType() string { - if m != nil { - return m.ResourceType - } - return "" -} - -func (m *ResourceInfo) GetResourceName() string { - if m != nil { - return m.ResourceName - } - return "" -} - -func (m *ResourceInfo) GetOwner() string { - if m != nil { - return m.Owner - } - return "" -} - -func (m *ResourceInfo) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -// Provides links to documentation or for performing an out of band action. -// -// For example, if a quota check failed with an error indicating the calling -// project hasn't enabled the accessed service, this can contain a URL pointing -// directly to the right place in the developer console to flip the bit. -type Help struct { - // URL(s) pointing to additional information on handling the current error. - Links []*Help_Link `protobuf:"bytes,1,rep,name=links" json:"links,omitempty"` -} - -func (m *Help) Reset() { *m = Help{} } -func (m *Help) String() string { return proto.CompactTextString(m) } -func (*Help) ProtoMessage() {} -func (*Help) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *Help) GetLinks() []*Help_Link { - if m != nil { - return m.Links - } - return nil -} - -// Describes a URL link. -type Help_Link struct { - // Describes what the link offers. - Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` - // The URL of the link. - Url string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"` -} - -func (m *Help_Link) Reset() { *m = Help_Link{} } -func (m *Help_Link) String() string { return proto.CompactTextString(m) } -func (*Help_Link) ProtoMessage() {} -func (*Help_Link) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} } - -func (m *Help_Link) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Help_Link) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -// Provides a localized error message that is safe to return to the user -// which can be attached to an RPC error. -type LocalizedMessage struct { - // The locale used following the specification defined at - // http://www.rfc-editor.org/rfc/bcp/bcp47.txt. - // Examples are: "en-US", "fr-CH", "es-MX" - Locale string `protobuf:"bytes,1,opt,name=locale" json:"locale,omitempty"` - // The localized error message in the above locale. - Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` -} - -func (m *LocalizedMessage) Reset() { *m = LocalizedMessage{} } -func (m *LocalizedMessage) String() string { return proto.CompactTextString(m) } -func (*LocalizedMessage) ProtoMessage() {} -func (*LocalizedMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *LocalizedMessage) GetLocale() string { - if m != nil { - return m.Locale - } - return "" -} - -func (m *LocalizedMessage) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -func init() { - proto.RegisterType((*RetryInfo)(nil), "google.rpc.RetryInfo") - proto.RegisterType((*DebugInfo)(nil), "google.rpc.DebugInfo") - proto.RegisterType((*QuotaFailure)(nil), "google.rpc.QuotaFailure") - proto.RegisterType((*QuotaFailure_Violation)(nil), "google.rpc.QuotaFailure.Violation") - proto.RegisterType((*PreconditionFailure)(nil), "google.rpc.PreconditionFailure") - proto.RegisterType((*PreconditionFailure_Violation)(nil), "google.rpc.PreconditionFailure.Violation") - proto.RegisterType((*BadRequest)(nil), "google.rpc.BadRequest") - proto.RegisterType((*BadRequest_FieldViolation)(nil), "google.rpc.BadRequest.FieldViolation") - proto.RegisterType((*RequestInfo)(nil), "google.rpc.RequestInfo") - proto.RegisterType((*ResourceInfo)(nil), "google.rpc.ResourceInfo") - proto.RegisterType((*Help)(nil), "google.rpc.Help") - proto.RegisterType((*Help_Link)(nil), "google.rpc.Help.Link") - proto.RegisterType((*LocalizedMessage)(nil), "google.rpc.LocalizedMessage") -} - -func init() { proto.RegisterFile("google/rpc/error_details.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 595 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, - 0x14, 0x95, 0x9b, 0xb4, 0x9f, 0x7c, 0x93, 0xaf, 0x14, 0xf3, 0xa3, 0x10, 0x09, 0x14, 0x8c, 0x90, - 0x8a, 0x90, 0x1c, 0xa9, 0xec, 0xca, 0x02, 0x29, 0xb8, 0x7f, 0x52, 0x81, 0x60, 0x21, 0x16, 0xb0, - 0xb0, 0x26, 0xf6, 0x8d, 0x35, 0x74, 0xe2, 0x31, 0x33, 0xe3, 0xa2, 0xf0, 0x14, 0xec, 0xd9, 0xb1, - 0xe2, 0x25, 0x78, 0x37, 0x34, 0x9e, 0x99, 0xc6, 0x6d, 0x0a, 0x62, 0x37, 0xe7, 0xcc, 0x99, 0xe3, - 0x73, 0xaf, 0xae, 0x2f, 0x3c, 0x28, 0x38, 0x2f, 0x18, 0x8e, 0x45, 0x95, 0x8d, 0x51, 0x08, 0x2e, - 0xd2, 0x1c, 0x15, 0xa1, 0x4c, 0x46, 0x95, 0xe0, 0x8a, 0x07, 0x60, 0xee, 0x23, 0x51, 0x65, 0x43, - 0xa7, 0x6d, 0x6e, 0x66, 0xf5, 0x7c, 0x9c, 0xd7, 0x82, 0x28, 0xca, 0x4b, 0xa3, 0x0d, 0x8f, 0xc0, - 0x4f, 0x50, 0x89, 0xe5, 0x49, 0x39, 0xe7, 0xc1, 0x3e, 0xf4, 0x84, 0x06, 0x69, 0x8e, 0x8c, 0x2c, - 0x07, 0xde, 0xc8, 0xdb, 0xed, 0xed, 0xdd, 0x8b, 0xac, 0x9d, 0xb3, 0x88, 0x62, 0x6b, 0x91, 0x40, - 0xa3, 0x8e, 0xb5, 0x38, 0x3c, 0x06, 0x3f, 0xc6, 0x59, 0x5d, 0x34, 0x46, 0x8f, 0xe0, 0x7f, 0xa9, - 0x48, 0x76, 0x96, 0x62, 0xa9, 0x04, 0x45, 0x39, 0xf0, 0x46, 0x9d, 0x5d, 0x3f, 0xe9, 0x37, 0xe4, - 0x81, 0xe1, 0x82, 0xbb, 0xb0, 0x65, 0x72, 0x0f, 0x36, 0x46, 0xde, 0xae, 0x9f, 0x58, 0x14, 0x7e, - 0xf7, 0xa0, 0xff, 0xb6, 0xe6, 0x8a, 0x1c, 0x12, 0xca, 0x6a, 0x81, 0xc1, 0x04, 0xe0, 0x9c, 0x72, - 0xd6, 0x7c, 0xd3, 0x58, 0xf5, 0xf6, 0xc2, 0x68, 0x55, 0x64, 0xd4, 0x56, 0x47, 0xef, 0x9d, 0x34, - 0x69, 0xbd, 0x1a, 0x1e, 0x81, 0x7f, 0x71, 0x11, 0x0c, 0xe0, 0x3f, 0x59, 0xcf, 0x3e, 0x61, 0xa6, - 0x9a, 0x1a, 0xfd, 0xc4, 0xc1, 0x60, 0x04, 0xbd, 0x1c, 0x65, 0x26, 0x68, 0xa5, 0x85, 0x36, 0x58, - 0x9b, 0x0a, 0x7f, 0x79, 0x70, 0x6b, 0x2a, 0x30, 0xe3, 0x65, 0x4e, 0x35, 0xe1, 0x42, 0x9e, 0x5c, - 0x13, 0xf2, 0x49, 0x3b, 0xe4, 0x35, 0x8f, 0xfe, 0x90, 0xf5, 0x63, 0x3b, 0x6b, 0x00, 0x5d, 0xb5, - 0xac, 0xd0, 0x06, 0x6d, 0xce, 0xed, 0xfc, 0x1b, 0x7f, 0xcd, 0xdf, 0x59, 0xcf, 0xff, 0xd3, 0x03, - 0x98, 0x90, 0x3c, 0xc1, 0xcf, 0x35, 0x4a, 0x15, 0x4c, 0x61, 0x67, 0x4e, 0x91, 0xe5, 0xe9, 0x5a, - 0xf8, 0xc7, 0xed, 0xf0, 0xab, 0x17, 0xd1, 0xa1, 0x96, 0xaf, 0x82, 0xdf, 0x98, 0x5f, 0xc2, 0x72, - 0x78, 0x0c, 0xdb, 0x97, 0x25, 0xc1, 0x6d, 0xd8, 0x6c, 0x44, 0xb6, 0x06, 0x03, 0xfe, 0xa1, 0xd5, - 0x6f, 0xa0, 0x67, 0x3f, 0xda, 0x0c, 0xd5, 0x7d, 0x00, 0x61, 0x60, 0x4a, 0x9d, 0x97, 0x6f, 0x99, - 0x93, 0x3c, 0x78, 0x08, 0x7d, 0x89, 0xe2, 0x9c, 0x96, 0x45, 0x9a, 0x13, 0x45, 0x9c, 0xa1, 0xe5, - 0x62, 0xa2, 0x48, 0xf8, 0xcd, 0x83, 0x7e, 0x82, 0x92, 0xd7, 0x22, 0x43, 0x37, 0xa7, 0xc2, 0xe2, - 0xb4, 0xd5, 0xe5, 0xbe, 0x23, 0xdf, 0xe9, 0x6e, 0xb7, 0x45, 0x25, 0x59, 0xa0, 0x75, 0xbe, 0x10, - 0xbd, 0x26, 0x0b, 0xd4, 0x35, 0xf2, 0x2f, 0x25, 0x0a, 0xdb, 0x72, 0x03, 0xae, 0xd6, 0xd8, 0x5d, - 0xaf, 0x91, 0x43, 0xf7, 0x18, 0x59, 0x15, 0x3c, 0x85, 0x4d, 0x46, 0xcb, 0x33, 0xd7, 0xfc, 0x3b, - 0xed, 0xe6, 0x6b, 0x41, 0x74, 0x4a, 0xcb, 0xb3, 0xc4, 0x68, 0x86, 0xfb, 0xd0, 0xd5, 0xf0, 0xaa, - 0xbd, 0xb7, 0x66, 0x1f, 0xec, 0x40, 0xa7, 0x16, 0xee, 0x07, 0xd3, 0xc7, 0x30, 0x86, 0x9d, 0x53, - 0x9e, 0x11, 0x46, 0xbf, 0x62, 0xfe, 0x0a, 0xa5, 0x24, 0x05, 0xea, 0x3f, 0x91, 0x69, 0xce, 0xd5, - 0x6f, 0x91, 0x9e, 0xb3, 0x85, 0x91, 0xb8, 0x39, 0xb3, 0x70, 0xc2, 0x60, 0x3b, 0xe3, 0x8b, 0x56, - 0xc8, 0xc9, 0xcd, 0x03, 0xbd, 0x89, 0x62, 0xb3, 0x88, 0xa6, 0x7a, 0x55, 0x4c, 0xbd, 0x0f, 0x2f, - 0xac, 0xa0, 0xe0, 0x8c, 0x94, 0x45, 0xc4, 0x45, 0x31, 0x2e, 0xb0, 0x6c, 0x16, 0xc9, 0xd8, 0x5c, - 0x91, 0x8a, 0x4a, 0xb7, 0xc8, 0xec, 0x16, 0x7b, 0xbe, 0x3a, 0xfe, 0xd8, 0xe8, 0x24, 0xd3, 0x97, - 0xb3, 0xad, 0xe6, 0xc5, 0xb3, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x90, 0x15, 0x46, 0x2d, 0xf9, - 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/admin/database/v1/spanner_database_admin.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/admin/database/v1/spanner_database_admin.pb.go deleted file mode 100644 index 93f12e10..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/admin/database/v1/spanner_database_admin.pb.go +++ /dev/null @@ -1,922 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/admin/database/v1/spanner_database_admin.proto - -/* -Package database is a generated protocol buffer package. - -It is generated from these files: - google/spanner/admin/database/v1/spanner_database_admin.proto - -It has these top-level messages: - Database - ListDatabasesRequest - ListDatabasesResponse - CreateDatabaseRequest - CreateDatabaseMetadata - GetDatabaseRequest - UpdateDatabaseDdlRequest - UpdateDatabaseDdlMetadata - DropDatabaseRequest - GetDatabaseDdlRequest - GetDatabaseDdlResponse -*/ -package database - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Indicates the current state of the database. -type Database_State int32 - -const ( - // Not specified. - Database_STATE_UNSPECIFIED Database_State = 0 - // The database is still being created. Operations on the database may fail - // with `FAILED_PRECONDITION` in this state. - Database_CREATING Database_State = 1 - // The database is fully created and ready for use. - Database_READY Database_State = 2 -) - -var Database_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "CREATING", - 2: "READY", -} -var Database_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "CREATING": 1, - "READY": 2, -} - -func (x Database_State) String() string { - return proto.EnumName(Database_State_name, int32(x)) -} -func (Database_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -// A Cloud Spanner database. -type Database struct { - // Required. The name of the database. Values are of the form - // `projects/<project>/instances/<instance>/databases/<database>`, - // where `<database>` is as specified in the `CREATE DATABASE` - // statement. This name can be passed to other API methods to - // identify the database. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Output only. The current database state. - State Database_State `protobuf:"varint,2,opt,name=state,enum=google.spanner.admin.database.v1.Database_State" json:"state,omitempty"` -} - -func (m *Database) Reset() { *m = Database{} } -func (m *Database) String() string { return proto.CompactTextString(m) } -func (*Database) ProtoMessage() {} -func (*Database) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Database) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Database) GetState() Database_State { - if m != nil { - return m.State - } - return Database_STATE_UNSPECIFIED -} - -// The request for [ListDatabases][google.spanner.admin.database.v1.DatabaseAdmin.ListDatabases]. -type ListDatabasesRequest struct { - // Required. The instance whose databases should be listed. - // Values are of the form `projects/<project>/instances/<instance>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Number of databases to be returned in the response. If 0 or less, - // defaults to the server's maximum allowed page size. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If non-empty, `page_token` should contain a - // [next_page_token][google.spanner.admin.database.v1.ListDatabasesResponse.next_page_token] from a - // previous [ListDatabasesResponse][google.spanner.admin.database.v1.ListDatabasesResponse]. - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListDatabasesRequest) Reset() { *m = ListDatabasesRequest{} } -func (m *ListDatabasesRequest) String() string { return proto.CompactTextString(m) } -func (*ListDatabasesRequest) ProtoMessage() {} -func (*ListDatabasesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ListDatabasesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListDatabasesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListDatabasesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response for [ListDatabases][google.spanner.admin.database.v1.DatabaseAdmin.ListDatabases]. -type ListDatabasesResponse struct { - // Databases that matched the request. - Databases []*Database `protobuf:"bytes,1,rep,name=databases" json:"databases,omitempty"` - // `next_page_token` can be sent in a subsequent - // [ListDatabases][google.spanner.admin.database.v1.DatabaseAdmin.ListDatabases] call to fetch more - // of the matching databases. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListDatabasesResponse) Reset() { *m = ListDatabasesResponse{} } -func (m *ListDatabasesResponse) String() string { return proto.CompactTextString(m) } -func (*ListDatabasesResponse) ProtoMessage() {} -func (*ListDatabasesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ListDatabasesResponse) GetDatabases() []*Database { - if m != nil { - return m.Databases - } - return nil -} - -func (m *ListDatabasesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request for [CreateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.CreateDatabase]. -type CreateDatabaseRequest struct { - // Required. The name of the instance that will serve the new database. - // Values are of the form `projects/<project>/instances/<instance>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. A `CREATE DATABASE` statement, which specifies the ID of the - // new database. The database ID must conform to the regular expression - // `[a-z][a-z0-9_\-]*[a-z0-9]` and be between 2 and 30 characters in length. - // If the database ID is a reserved word or if it contains a hyphen, the - // database ID must be enclosed in backticks (`` ` ``). - CreateStatement string `protobuf:"bytes,2,opt,name=create_statement,json=createStatement" json:"create_statement,omitempty"` - // An optional list of DDL statements to run inside the newly created - // database. Statements can create tables, indexes, etc. These - // statements execute atomically with the creation of the database: - // if there is an error in any statement, the database is not created. - ExtraStatements []string `protobuf:"bytes,3,rep,name=extra_statements,json=extraStatements" json:"extra_statements,omitempty"` -} - -func (m *CreateDatabaseRequest) Reset() { *m = CreateDatabaseRequest{} } -func (m *CreateDatabaseRequest) String() string { return proto.CompactTextString(m) } -func (*CreateDatabaseRequest) ProtoMessage() {} -func (*CreateDatabaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *CreateDatabaseRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateDatabaseRequest) GetCreateStatement() string { - if m != nil { - return m.CreateStatement - } - return "" -} - -func (m *CreateDatabaseRequest) GetExtraStatements() []string { - if m != nil { - return m.ExtraStatements - } - return nil -} - -// Metadata type for the operation returned by -// [CreateDatabase][google.spanner.admin.database.v1.DatabaseAdmin.CreateDatabase]. -type CreateDatabaseMetadata struct { - // The database being created. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` -} - -func (m *CreateDatabaseMetadata) Reset() { *m = CreateDatabaseMetadata{} } -func (m *CreateDatabaseMetadata) String() string { return proto.CompactTextString(m) } -func (*CreateDatabaseMetadata) ProtoMessage() {} -func (*CreateDatabaseMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *CreateDatabaseMetadata) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -// The request for [GetDatabase][google.spanner.admin.database.v1.DatabaseAdmin.GetDatabase]. -type GetDatabaseRequest struct { - // Required. The name of the requested database. Values are of the form - // `projects/<project>/instances/<instance>/databases/<database>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetDatabaseRequest) Reset() { *m = GetDatabaseRequest{} } -func (m *GetDatabaseRequest) String() string { return proto.CompactTextString(m) } -func (*GetDatabaseRequest) ProtoMessage() {} -func (*GetDatabaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *GetDatabaseRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Enqueues the given DDL statements to be applied, in order but not -// necessarily all at once, to the database schema at some point (or -// points) in the future. The server checks that the statements -// are executable (syntactically valid, name tables that exist, etc.) -// before enqueueing them, but they may still fail upon -// later execution (e.g., if a statement from another batch of -// statements is applied first and it conflicts in some way, or if -// there is some data-related problem like a `NULL` value in a column to -// which `NOT NULL` would be added). If a statement fails, all -// subsequent statements in the batch are automatically cancelled. -// -// Each batch of statements is assigned a name which can be used with -// the [Operations][google.longrunning.Operations] API to monitor -// progress. See the -// [operation_id][google.spanner.admin.database.v1.UpdateDatabaseDdlRequest.operation_id] field for more -// details. -type UpdateDatabaseDdlRequest struct { - // Required. The database to update. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // DDL statements to be applied to the database. - Statements []string `protobuf:"bytes,2,rep,name=statements" json:"statements,omitempty"` - // If empty, the new update request is assigned an - // automatically-generated operation ID. Otherwise, `operation_id` - // is used to construct the name of the resulting - // [Operation][google.longrunning.Operation]. - // - // Specifying an explicit operation ID simplifies determining - // whether the statements were executed in the event that the - // [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] call is replayed, - // or the return value is otherwise lost: the [database][google.spanner.admin.database.v1.UpdateDatabaseDdlRequest.database] and - // `operation_id` fields can be combined to form the - // [name][google.longrunning.Operation.name] of the resulting - // [longrunning.Operation][google.longrunning.Operation]: `<database>/operations/<operation_id>`. - // - // `operation_id` should be unique within the database, and must be - // a valid identifier: `[a-z][a-z0-9_]*`. Note that - // automatically-generated operation IDs always begin with an - // underscore. If the named operation already exists, - // [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl] returns - // `ALREADY_EXISTS`. - OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId" json:"operation_id,omitempty"` -} - -func (m *UpdateDatabaseDdlRequest) Reset() { *m = UpdateDatabaseDdlRequest{} } -func (m *UpdateDatabaseDdlRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateDatabaseDdlRequest) ProtoMessage() {} -func (*UpdateDatabaseDdlRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *UpdateDatabaseDdlRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *UpdateDatabaseDdlRequest) GetStatements() []string { - if m != nil { - return m.Statements - } - return nil -} - -func (m *UpdateDatabaseDdlRequest) GetOperationId() string { - if m != nil { - return m.OperationId - } - return "" -} - -// Metadata type for the operation returned by -// [UpdateDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl]. -type UpdateDatabaseDdlMetadata struct { - // The database being modified. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // For an update this list contains all the statements. For an - // individual statement, this list contains only that statement. - Statements []string `protobuf:"bytes,2,rep,name=statements" json:"statements,omitempty"` - // Reports the commit timestamps of all statements that have - // succeeded so far, where `commit_timestamps[i]` is the commit - // timestamp for the statement `statements[i]`. - CommitTimestamps []*google_protobuf3.Timestamp `protobuf:"bytes,3,rep,name=commit_timestamps,json=commitTimestamps" json:"commit_timestamps,omitempty"` -} - -func (m *UpdateDatabaseDdlMetadata) Reset() { *m = UpdateDatabaseDdlMetadata{} } -func (m *UpdateDatabaseDdlMetadata) String() string { return proto.CompactTextString(m) } -func (*UpdateDatabaseDdlMetadata) ProtoMessage() {} -func (*UpdateDatabaseDdlMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *UpdateDatabaseDdlMetadata) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *UpdateDatabaseDdlMetadata) GetStatements() []string { - if m != nil { - return m.Statements - } - return nil -} - -func (m *UpdateDatabaseDdlMetadata) GetCommitTimestamps() []*google_protobuf3.Timestamp { - if m != nil { - return m.CommitTimestamps - } - return nil -} - -// The request for [DropDatabase][google.spanner.admin.database.v1.DatabaseAdmin.DropDatabase]. -type DropDatabaseRequest struct { - // Required. The database to be dropped. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` -} - -func (m *DropDatabaseRequest) Reset() { *m = DropDatabaseRequest{} } -func (m *DropDatabaseRequest) String() string { return proto.CompactTextString(m) } -func (*DropDatabaseRequest) ProtoMessage() {} -func (*DropDatabaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *DropDatabaseRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -// The request for [GetDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.GetDatabaseDdl]. -type GetDatabaseDdlRequest struct { - // Required. The database whose schema we wish to get. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` -} - -func (m *GetDatabaseDdlRequest) Reset() { *m = GetDatabaseDdlRequest{} } -func (m *GetDatabaseDdlRequest) String() string { return proto.CompactTextString(m) } -func (*GetDatabaseDdlRequest) ProtoMessage() {} -func (*GetDatabaseDdlRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *GetDatabaseDdlRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -// The response for [GetDatabaseDdl][google.spanner.admin.database.v1.DatabaseAdmin.GetDatabaseDdl]. -type GetDatabaseDdlResponse struct { - // A list of formatted DDL statements defining the schema of the database - // specified in the request. - Statements []string `protobuf:"bytes,1,rep,name=statements" json:"statements,omitempty"` -} - -func (m *GetDatabaseDdlResponse) Reset() { *m = GetDatabaseDdlResponse{} } -func (m *GetDatabaseDdlResponse) String() string { return proto.CompactTextString(m) } -func (*GetDatabaseDdlResponse) ProtoMessage() {} -func (*GetDatabaseDdlResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *GetDatabaseDdlResponse) GetStatements() []string { - if m != nil { - return m.Statements - } - return nil -} - -func init() { - proto.RegisterType((*Database)(nil), "google.spanner.admin.database.v1.Database") - proto.RegisterType((*ListDatabasesRequest)(nil), "google.spanner.admin.database.v1.ListDatabasesRequest") - proto.RegisterType((*ListDatabasesResponse)(nil), "google.spanner.admin.database.v1.ListDatabasesResponse") - proto.RegisterType((*CreateDatabaseRequest)(nil), "google.spanner.admin.database.v1.CreateDatabaseRequest") - proto.RegisterType((*CreateDatabaseMetadata)(nil), "google.spanner.admin.database.v1.CreateDatabaseMetadata") - proto.RegisterType((*GetDatabaseRequest)(nil), "google.spanner.admin.database.v1.GetDatabaseRequest") - proto.RegisterType((*UpdateDatabaseDdlRequest)(nil), "google.spanner.admin.database.v1.UpdateDatabaseDdlRequest") - proto.RegisterType((*UpdateDatabaseDdlMetadata)(nil), "google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata") - proto.RegisterType((*DropDatabaseRequest)(nil), "google.spanner.admin.database.v1.DropDatabaseRequest") - proto.RegisterType((*GetDatabaseDdlRequest)(nil), "google.spanner.admin.database.v1.GetDatabaseDdlRequest") - proto.RegisterType((*GetDatabaseDdlResponse)(nil), "google.spanner.admin.database.v1.GetDatabaseDdlResponse") - proto.RegisterEnum("google.spanner.admin.database.v1.Database_State", Database_State_name, Database_State_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for DatabaseAdmin service - -type DatabaseAdminClient interface { - // Lists Cloud Spanner databases. - ListDatabases(ctx context.Context, in *ListDatabasesRequest, opts ...grpc.CallOption) (*ListDatabasesResponse, error) - // Creates a new Cloud Spanner database and starts to prepare it for serving. - // The returned [long-running operation][google.longrunning.Operation] will - // have a name of the format `<database_name>/operations/<operation_id>` and - // can be used to track preparation of the database. The - // [metadata][google.longrunning.Operation.metadata] field type is - // [CreateDatabaseMetadata][google.spanner.admin.database.v1.CreateDatabaseMetadata]. The - // [response][google.longrunning.Operation.response] field type is - // [Database][google.spanner.admin.database.v1.Database], if successful. - CreateDatabase(ctx context.Context, in *CreateDatabaseRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Gets the state of a Cloud Spanner database. - GetDatabase(ctx context.Context, in *GetDatabaseRequest, opts ...grpc.CallOption) (*Database, error) - // Updates the schema of a Cloud Spanner database by - // creating/altering/dropping tables, columns, indexes, etc. The returned - // [long-running operation][google.longrunning.Operation] will have a name of - // the format `<database_name>/operations/<operation_id>` and can be used to - // track execution of the schema change(s). The - // [metadata][google.longrunning.Operation.metadata] field type is - // [UpdateDatabaseDdlMetadata][google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata]. The operation has no response. - UpdateDatabaseDdl(ctx context.Context, in *UpdateDatabaseDdlRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Drops (aka deletes) a Cloud Spanner database. - DropDatabase(ctx context.Context, in *DropDatabaseRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Returns the schema of a Cloud Spanner database as a list of formatted - // DDL statements. This method does not show pending schema updates, those may - // be queried using the [Operations][google.longrunning.Operations] API. - GetDatabaseDdl(ctx context.Context, in *GetDatabaseDdlRequest, opts ...grpc.CallOption) (*GetDatabaseDdlResponse, error) - // Sets the access control policy on a database resource. Replaces any - // existing policy. - // - // Authorization requires `spanner.databases.setIamPolicy` permission on - // [resource][google.iam.v1.SetIamPolicyRequest.resource]. - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Gets the access control policy for a database resource. Returns an empty - // policy if a database exists but does not have a policy set. - // - // Authorization requires `spanner.databases.getIamPolicy` permission on - // [resource][google.iam.v1.GetIamPolicyRequest.resource]. - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Returns permissions that the caller has on the specified database resource. - // - // Attempting this RPC on a non-existent Cloud Spanner database will result in - // a NOT_FOUND error if the user has `spanner.databases.list` permission on - // the containing Cloud Spanner instance. Otherwise returns an empty set of - // permissions. - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -type databaseAdminClient struct { - cc *grpc.ClientConn -} - -func NewDatabaseAdminClient(cc *grpc.ClientConn) DatabaseAdminClient { - return &databaseAdminClient{cc} -} - -func (c *databaseAdminClient) ListDatabases(ctx context.Context, in *ListDatabasesRequest, opts ...grpc.CallOption) (*ListDatabasesResponse, error) { - out := new(ListDatabasesResponse) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/ListDatabases", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *databaseAdminClient) CreateDatabase(ctx context.Context, in *CreateDatabaseRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/CreateDatabase", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *databaseAdminClient) GetDatabase(ctx context.Context, in *GetDatabaseRequest, opts ...grpc.CallOption) (*Database, error) { - out := new(Database) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/GetDatabase", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *databaseAdminClient) UpdateDatabaseDdl(ctx context.Context, in *UpdateDatabaseDdlRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/UpdateDatabaseDdl", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *databaseAdminClient) DropDatabase(ctx context.Context, in *DropDatabaseRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/DropDatabase", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *databaseAdminClient) GetDatabaseDdl(ctx context.Context, in *GetDatabaseDdlRequest, opts ...grpc.CallOption) (*GetDatabaseDdlResponse, error) { - out := new(GetDatabaseDdlResponse) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/GetDatabaseDdl", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *databaseAdminClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *databaseAdminClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *databaseAdminClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for DatabaseAdmin service - -type DatabaseAdminServer interface { - // Lists Cloud Spanner databases. - ListDatabases(context.Context, *ListDatabasesRequest) (*ListDatabasesResponse, error) - // Creates a new Cloud Spanner database and starts to prepare it for serving. - // The returned [long-running operation][google.longrunning.Operation] will - // have a name of the format `<database_name>/operations/<operation_id>` and - // can be used to track preparation of the database. The - // [metadata][google.longrunning.Operation.metadata] field type is - // [CreateDatabaseMetadata][google.spanner.admin.database.v1.CreateDatabaseMetadata]. The - // [response][google.longrunning.Operation.response] field type is - // [Database][google.spanner.admin.database.v1.Database], if successful. - CreateDatabase(context.Context, *CreateDatabaseRequest) (*google_longrunning.Operation, error) - // Gets the state of a Cloud Spanner database. - GetDatabase(context.Context, *GetDatabaseRequest) (*Database, error) - // Updates the schema of a Cloud Spanner database by - // creating/altering/dropping tables, columns, indexes, etc. The returned - // [long-running operation][google.longrunning.Operation] will have a name of - // the format `<database_name>/operations/<operation_id>` and can be used to - // track execution of the schema change(s). The - // [metadata][google.longrunning.Operation.metadata] field type is - // [UpdateDatabaseDdlMetadata][google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata]. The operation has no response. - UpdateDatabaseDdl(context.Context, *UpdateDatabaseDdlRequest) (*google_longrunning.Operation, error) - // Drops (aka deletes) a Cloud Spanner database. - DropDatabase(context.Context, *DropDatabaseRequest) (*google_protobuf2.Empty, error) - // Returns the schema of a Cloud Spanner database as a list of formatted - // DDL statements. This method does not show pending schema updates, those may - // be queried using the [Operations][google.longrunning.Operations] API. - GetDatabaseDdl(context.Context, *GetDatabaseDdlRequest) (*GetDatabaseDdlResponse, error) - // Sets the access control policy on a database resource. Replaces any - // existing policy. - // - // Authorization requires `spanner.databases.setIamPolicy` permission on - // [resource][google.iam.v1.SetIamPolicyRequest.resource]. - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Gets the access control policy for a database resource. Returns an empty - // policy if a database exists but does not have a policy set. - // - // Authorization requires `spanner.databases.getIamPolicy` permission on - // [resource][google.iam.v1.GetIamPolicyRequest.resource]. - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Returns permissions that the caller has on the specified database resource. - // - // Attempting this RPC on a non-existent Cloud Spanner database will result in - // a NOT_FOUND error if the user has `spanner.databases.list` permission on - // the containing Cloud Spanner instance. Otherwise returns an empty set of - // permissions. - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -func RegisterDatabaseAdminServer(s *grpc.Server, srv DatabaseAdminServer) { - s.RegisterService(&_DatabaseAdmin_serviceDesc, srv) -} - -func _DatabaseAdmin_ListDatabases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListDatabasesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).ListDatabases(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/ListDatabases", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).ListDatabases(ctx, req.(*ListDatabasesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatabaseAdmin_CreateDatabase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateDatabaseRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).CreateDatabase(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/CreateDatabase", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).CreateDatabase(ctx, req.(*CreateDatabaseRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatabaseAdmin_GetDatabase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDatabaseRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).GetDatabase(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/GetDatabase", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).GetDatabase(ctx, req.(*GetDatabaseRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatabaseAdmin_UpdateDatabaseDdl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateDatabaseDdlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).UpdateDatabaseDdl(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/UpdateDatabaseDdl", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).UpdateDatabaseDdl(ctx, req.(*UpdateDatabaseDdlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatabaseAdmin_DropDatabase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DropDatabaseRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).DropDatabase(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/DropDatabase", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).DropDatabase(ctx, req.(*DropDatabaseRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatabaseAdmin_GetDatabaseDdl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetDatabaseDdlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).GetDatabaseDdl(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/GetDatabaseDdl", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).GetDatabaseDdl(ctx, req.(*GetDatabaseDdlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatabaseAdmin_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatabaseAdmin_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _DatabaseAdmin_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(DatabaseAdminServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(DatabaseAdminServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _DatabaseAdmin_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.spanner.admin.database.v1.DatabaseAdmin", - HandlerType: (*DatabaseAdminServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListDatabases", - Handler: _DatabaseAdmin_ListDatabases_Handler, - }, - { - MethodName: "CreateDatabase", - Handler: _DatabaseAdmin_CreateDatabase_Handler, - }, - { - MethodName: "GetDatabase", - Handler: _DatabaseAdmin_GetDatabase_Handler, - }, - { - MethodName: "UpdateDatabaseDdl", - Handler: _DatabaseAdmin_UpdateDatabaseDdl_Handler, - }, - { - MethodName: "DropDatabase", - Handler: _DatabaseAdmin_DropDatabase_Handler, - }, - { - MethodName: "GetDatabaseDdl", - Handler: _DatabaseAdmin_GetDatabaseDdl_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _DatabaseAdmin_SetIamPolicy_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _DatabaseAdmin_GetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _DatabaseAdmin_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/spanner/admin/database/v1/spanner_database_admin.proto", -} - -func init() { - proto.RegisterFile("google/spanner/admin/database/v1/spanner_database_admin.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 1033 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xc7, 0x19, 0xa7, 0xa9, 0x92, 0x17, 0x27, 0x75, 0x06, 0x1c, 0xb9, 0x5b, 0x5a, 0xcc, 0x82, - 0x2a, 0xd7, 0x12, 0xbb, 0xd8, 0x69, 0x48, 0x30, 0x0a, 0x22, 0xb5, 0x5d, 0xd7, 0x12, 0xb4, 0x96, - 0xed, 0x56, 0x02, 0x59, 0xb2, 0x26, 0xf6, 0xb0, 0xda, 0xe2, 0xfd, 0xc1, 0xce, 0xb8, 0x6a, 0x8b, - 0x7a, 0x41, 0xe2, 0xc0, 0x19, 0x90, 0xb8, 0x81, 0x38, 0x70, 0xe0, 0xc4, 0x0d, 0x89, 0x23, 0x47, - 0xae, 0xfc, 0x01, 0x5c, 0xf8, 0x43, 0xd0, 0xcc, 0xee, 0xd8, 0xeb, 0x75, 0x12, 0xdb, 0x1c, 0xb8, - 0x79, 0xdf, 0xfb, 0xbe, 0x79, 0x9f, 0x79, 0x3b, 0xdf, 0xf1, 0xc2, 0xb1, 0xe5, 0x79, 0xd6, 0x88, - 0x9a, 0xcc, 0x27, 0xae, 0x4b, 0x03, 0x93, 0x0c, 0x1d, 0xdb, 0x35, 0x87, 0x84, 0x93, 0x53, 0xc2, - 0xa8, 0xf9, 0xa4, 0xa4, 0x32, 0x7d, 0x15, 0xeb, 0x4b, 0x89, 0xe1, 0x07, 0x1e, 0xf7, 0x70, 0x3e, - 0x2c, 0x37, 0x22, 0x91, 0x11, 0xe6, 0x94, 0xd4, 0x78, 0x52, 0xd2, 0x5e, 0x8d, 0x1a, 0x10, 0xdf, - 0x36, 0x89, 0xeb, 0x7a, 0x9c, 0x70, 0xdb, 0x73, 0x59, 0x58, 0xaf, 0xdd, 0x88, 0xb2, 0x36, 0x71, - 0x44, 0x2f, 0x9b, 0x38, 0x7d, 0xdf, 0x1b, 0xd9, 0x83, 0x67, 0x51, 0x5e, 0x9b, 0xcd, 0xcf, 0xe4, - 0xde, 0x88, 0x72, 0x23, 0xcf, 0xb5, 0x82, 0xb1, 0xeb, 0xda, 0xae, 0x65, 0x7a, 0x3e, 0x0d, 0x66, - 0x1a, 0x5c, 0x8b, 0x44, 0xf2, 0xe9, 0x74, 0xfc, 0xa9, 0x49, 0x1d, 0x9f, 0xab, 0x15, 0x5e, 0x4b, - 0x26, 0xb9, 0xed, 0x50, 0xc6, 0x89, 0xe3, 0x87, 0x02, 0xfd, 0x07, 0x04, 0x1b, 0xb5, 0x68, 0x33, - 0x18, 0xc3, 0x25, 0x97, 0x38, 0x34, 0x87, 0xf2, 0xa8, 0xb0, 0xd9, 0x96, 0xbf, 0xf1, 0x5d, 0x58, - 0x67, 0x9c, 0x70, 0x9a, 0x4b, 0xe5, 0x51, 0x61, 0xa7, 0xfc, 0xb6, 0xb1, 0x68, 0x1e, 0x86, 0x5a, - 0xce, 0xe8, 0x88, 0xba, 0x76, 0x58, 0xae, 0x1f, 0xc2, 0xba, 0x7c, 0xc6, 0x59, 0xd8, 0xed, 0x74, - 0x4f, 0xba, 0xf5, 0xfe, 0xc3, 0xfb, 0x9d, 0x56, 0xbd, 0xda, 0xbc, 0xdb, 0xac, 0xd7, 0x32, 0x2f, - 0xe1, 0x34, 0x6c, 0x54, 0xdb, 0xf5, 0x93, 0x6e, 0xf3, 0x7e, 0x23, 0x83, 0xf0, 0x26, 0xac, 0xb7, - 0xeb, 0x27, 0xb5, 0x8f, 0x33, 0x29, 0xfd, 0x31, 0xbc, 0xf2, 0xa1, 0xcd, 0xb8, 0x5a, 0x95, 0xb5, - 0xe9, 0xe7, 0x63, 0xca, 0x38, 0xde, 0x83, 0xcb, 0x3e, 0x09, 0xa8, 0xcb, 0x23, 0xdc, 0xe8, 0x09, - 0x5f, 0x83, 0x4d, 0x9f, 0x58, 0xb4, 0xcf, 0xec, 0xe7, 0x34, 0xb7, 0x96, 0x47, 0x85, 0xf5, 0xf6, - 0x86, 0x08, 0x74, 0xec, 0xe7, 0x14, 0x5f, 0x07, 0x90, 0x49, 0xee, 0x7d, 0x46, 0xdd, 0xdc, 0x25, - 0x59, 0x28, 0xe5, 0x5d, 0x11, 0xd0, 0xbf, 0x46, 0x90, 0x4d, 0x34, 0x63, 0xbe, 0xe7, 0x32, 0x8a, - 0xef, 0xc1, 0xa6, 0xda, 0x23, 0xcb, 0xa1, 0xfc, 0x5a, 0x61, 0xab, 0x5c, 0x5c, 0x7e, 0x14, 0xed, - 0x69, 0x31, 0xbe, 0x09, 0x57, 0x5c, 0xfa, 0x94, 0xf7, 0x63, 0x1c, 0x29, 0xc9, 0xb1, 0x2d, 0xc2, - 0xad, 0x09, 0xcb, 0x57, 0x08, 0xb2, 0xd5, 0x80, 0x12, 0x4e, 0x27, 0xab, 0x2c, 0xd8, 0xf9, 0x2d, - 0xc8, 0x0c, 0x64, 0x41, 0x5f, 0x8e, 0xdc, 0x11, 0x8a, 0x70, 0xe9, 0x2b, 0x61, 0xbc, 0xa3, 0xc2, - 0x42, 0x4a, 0x9f, 0xf2, 0x80, 0x4c, 0x95, 0x2c, 0xb7, 0x96, 0x5f, 0x13, 0x52, 0x19, 0x9f, 0x28, - 0x99, 0x7e, 0x1b, 0xf6, 0x66, 0x31, 0x3e, 0xa2, 0x9c, 0x88, 0xed, 0x60, 0x0d, 0x36, 0xd4, 0xb6, - 0x22, 0x92, 0xc9, 0xb3, 0x5e, 0x00, 0xdc, 0xa0, 0x3c, 0x49, 0x7e, 0xc6, 0x01, 0xd3, 0x9f, 0x41, - 0xee, 0xa1, 0x3f, 0x8c, 0xad, 0x5f, 0x1b, 0x8e, 0x94, 0xfe, 0x82, 0x0e, 0xf8, 0x06, 0x40, 0x0c, - 0x3e, 0x25, 0xe1, 0x63, 0x11, 0xfc, 0x3a, 0xa4, 0x27, 0x5e, 0xe9, 0xdb, 0x43, 0x79, 0x14, 0x36, - 0xdb, 0x5b, 0x93, 0x58, 0x73, 0xa8, 0xff, 0x88, 0xe0, 0xea, 0x5c, 0xef, 0x65, 0xb6, 0xb7, 0xb0, - 0x79, 0x03, 0x76, 0x07, 0x9e, 0xe3, 0xd8, 0xbc, 0x3f, 0x31, 0x5c, 0x38, 0xe0, 0xad, 0xb2, 0xa6, - 0x8e, 0x8d, 0xf2, 0xa4, 0xd1, 0x55, 0x92, 0x76, 0x26, 0x2c, 0x9a, 0x04, 0x98, 0x5e, 0x82, 0x97, - 0x6b, 0x81, 0xe7, 0x27, 0x07, 0x79, 0xd1, 0xe8, 0xf7, 0x21, 0x1b, 0x1b, 0xfd, 0x72, 0xd3, 0xd4, - 0x8f, 0x60, 0x2f, 0x59, 0x14, 0x9d, 0xfc, 0xd9, 0xad, 0xa2, 0xe4, 0x56, 0xcb, 0xdf, 0xa5, 0x61, - 0x5b, 0xd5, 0x9d, 0x08, 0x07, 0xe0, 0xdf, 0x10, 0x6c, 0xcf, 0xb8, 0x08, 0xbf, 0xb3, 0xd8, 0x2a, - 0x67, 0x79, 0x5c, 0x3b, 0x5c, 0xb9, 0x2e, 0x84, 0xd6, 0x0f, 0xbe, 0xfc, 0xeb, 0x9f, 0x6f, 0x52, - 0x26, 0x7e, 0x4b, 0xdc, 0xa9, 0x5f, 0x84, 0xfe, 0x38, 0xf6, 0x03, 0xef, 0x31, 0x1d, 0x70, 0x66, - 0x16, 0x4d, 0xdb, 0x65, 0x9c, 0xb8, 0x03, 0xca, 0xcc, 0xe2, 0x0b, 0x73, 0xea, 0xcd, 0x9f, 0x10, - 0xec, 0xcc, 0x1e, 0x76, 0xbc, 0x04, 0xc2, 0x99, 0x2e, 0xd5, 0xae, 0xab, 0xc2, 0xd8, 0xed, 0x6d, - 0x3c, 0x50, 0xa7, 0x4f, 0x3f, 0x92, 0x84, 0x65, 0x7d, 0x35, 0xc2, 0x0a, 0x2a, 0xe2, 0x9f, 0x11, - 0x6c, 0xc5, 0xde, 0x15, 0xbe, 0xbd, 0x98, 0x70, 0xde, 0x8a, 0xda, 0x0a, 0xb7, 0x57, 0x62, 0x9a, - 0xc2, 0xb5, 0xe7, 0x90, 0x4e, 0x41, 0xcd, 0xe2, 0x0b, 0xfc, 0x2b, 0x82, 0xdd, 0x39, 0x7b, 0xe1, - 0xca, 0xe2, 0xc6, 0xe7, 0xdd, 0x07, 0x8b, 0x66, 0xfa, 0x81, 0xe4, 0xac, 0x94, 0x0f, 0x24, 0xa7, - 0x5a, 0x71, 0x19, 0x56, 0x73, 0x38, 0x1c, 0x89, 0xd9, 0x7e, 0x8f, 0x20, 0x1d, 0xf7, 0x1b, 0x3e, - 0x58, 0x62, 0x4c, 0xf3, 0xfe, 0xd4, 0xf6, 0xe6, 0x4c, 0x5e, 0x17, 0xff, 0xca, 0xfa, 0xbb, 0x92, - 0x70, 0xbf, 0x58, 0x5a, 0x99, 0x10, 0xff, 0x81, 0x60, 0x67, 0xd6, 0xa2, 0xcb, 0x9c, 0xcd, 0x33, - 0x6f, 0x02, 0xed, 0x68, 0xf5, 0xc2, 0xc8, 0x58, 0xc7, 0x72, 0x03, 0x87, 0xf8, 0xbf, 0x8d, 0x18, - 0x7f, 0x8b, 0x20, 0xdd, 0xa1, 0xbc, 0x49, 0x9c, 0x96, 0xfc, 0xd0, 0xc1, 0xba, 0x22, 0xb1, 0x89, - 0x23, 0xda, 0xc6, 0x93, 0x8a, 0x36, 0x9b, 0xd0, 0x84, 0x59, 0xbd, 0x29, 0x51, 0xaa, 0xfa, 0xfb, - 0x12, 0x25, 0xa0, 0xcc, 0x1b, 0x07, 0x83, 0xa5, 0x50, 0x2a, 0x2c, 0xd6, 0x45, 0xbc, 0x76, 0x81, - 0xd5, 0xb8, 0x08, 0xab, 0xf1, 0xbf, 0x60, 0x59, 0x09, 0xac, 0xdf, 0x11, 0xe0, 0x2e, 0x65, 0x32, - 0x48, 0x03, 0xc7, 0x66, 0x4c, 0x7c, 0xf7, 0xe1, 0x42, 0xa2, 0xf1, 0xbc, 0x44, 0x21, 0xde, 0x5a, - 0x42, 0x19, 0xbd, 0xd8, 0x07, 0x12, 0xbb, 0xa9, 0xd7, 0x56, 0xc7, 0xe6, 0x73, 0xab, 0x56, 0x50, - 0xf1, 0xce, 0xdf, 0x08, 0xde, 0x1c, 0x78, 0xce, 0xc2, 0x93, 0x76, 0xe7, 0x6a, 0x27, 0x4c, 0xcd, - 0xfc, 0x89, 0xb4, 0x84, 0x6f, 0x5a, 0xe8, 0x93, 0x7b, 0x51, 0xb9, 0xe5, 0x8d, 0x88, 0x6b, 0x19, - 0x5e, 0x60, 0x99, 0x16, 0x75, 0xa5, 0xab, 0xcc, 0x30, 0x45, 0x7c, 0x9b, 0x9d, 0xff, 0x71, 0xff, - 0x9e, 0xfa, 0xfd, 0x4b, 0xea, 0x66, 0x23, 0x5c, 0xaa, 0x3a, 0xf2, 0xc6, 0x43, 0x23, 0x6a, 0x6a, - 0xc8, 0x6e, 0xd3, 0x6f, 0xd6, 0x47, 0xa5, 0x3f, 0x95, 0xb0, 0x27, 0x85, 0xbd, 0x48, 0xd8, 0x93, - 0xc2, 0x9e, 0x12, 0xf6, 0x1e, 0x95, 0x4e, 0x2f, 0x4b, 0x8c, 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, - 0xff, 0x1d, 0xbc, 0x89, 0x54, 0x62, 0x0c, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/admin/instance/v1/spanner_instance_admin.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/admin/instance/v1/spanner_instance_admin.pb.go deleted file mode 100644 index aeff94a2..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/admin/instance/v1/spanner_instance_admin.pb.go +++ /dev/null @@ -1,1285 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/admin/instance/v1/spanner_instance_admin.proto - -/* -Package instance is a generated protocol buffer package. - -It is generated from these files: - google/spanner/admin/instance/v1/spanner_instance_admin.proto - -It has these top-level messages: - InstanceConfig - Instance - ListInstanceConfigsRequest - ListInstanceConfigsResponse - GetInstanceConfigRequest - GetInstanceRequest - CreateInstanceRequest - ListInstancesRequest - ListInstancesResponse - UpdateInstanceRequest - DeleteInstanceRequest - CreateInstanceMetadata - UpdateInstanceMetadata -*/ -package instance - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1" -import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1" -import google_longrunning "google.golang.org/genproto/googleapis/longrunning" -import google_protobuf2 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Indicates the current state of the instance. -type Instance_State int32 - -const ( - // Not specified. - Instance_STATE_UNSPECIFIED Instance_State = 0 - // The instance is still being created. Resources may not be - // available yet, and operations such as database creation may not - // work. - Instance_CREATING Instance_State = 1 - // The instance is fully created and ready to do work such as - // creating databases. - Instance_READY Instance_State = 2 -) - -var Instance_State_name = map[int32]string{ - 0: "STATE_UNSPECIFIED", - 1: "CREATING", - 2: "READY", -} -var Instance_State_value = map[string]int32{ - "STATE_UNSPECIFIED": 0, - "CREATING": 1, - "READY": 2, -} - -func (x Instance_State) String() string { - return proto.EnumName(Instance_State_name, int32(x)) -} -func (Instance_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// A possible configuration for a Cloud Spanner instance. Configurations -// define the geographic placement of nodes and their replication. -type InstanceConfig struct { - // A unique identifier for the instance configuration. Values - // are of the form - // `projects/<project>/instanceConfigs/[a-z][-a-z0-9]*` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The name of this instance configuration as it appears in UIs. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"` -} - -func (m *InstanceConfig) Reset() { *m = InstanceConfig{} } -func (m *InstanceConfig) String() string { return proto.CompactTextString(m) } -func (*InstanceConfig) ProtoMessage() {} -func (*InstanceConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *InstanceConfig) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *InstanceConfig) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -// An isolated set of Cloud Spanner resources on which databases can be hosted. -type Instance struct { - // Required. A unique identifier for the instance, which cannot be changed - // after the instance is created. Values are of the form - // `projects/<project>/instances/[a-z][-a-z0-9]*[a-z0-9]`. The final - // segment of the name must be between 6 and 30 characters in length. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Required. The name of the instance's configuration. Values are of the form - // `projects/<project>/instanceConfigs/<configuration>`. See - // also [InstanceConfig][google.spanner.admin.instance.v1.InstanceConfig] and - // [ListInstanceConfigs][google.spanner.admin.instance.v1.InstanceAdmin.ListInstanceConfigs]. - Config string `protobuf:"bytes,2,opt,name=config" json:"config,omitempty"` - // Required. The descriptive name for this instance as it appears in UIs. - // Must be unique per project and between 4 and 30 characters in length. - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // Required. The number of nodes allocated to this instance. This may be zero - // in API responses for instances that are not yet in state `READY`. - // - // See [the documentation](https://cloud.google.com/spanner/docs/instances#node_count) - // for more information about nodes. - NodeCount int32 `protobuf:"varint,5,opt,name=node_count,json=nodeCount" json:"node_count,omitempty"` - // Output only. The current instance state. For - // [CreateInstance][google.spanner.admin.instance.v1.InstanceAdmin.CreateInstance], the state must be - // either omitted or set to `CREATING`. For - // [UpdateInstance][google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstance], the state must be - // either omitted or set to `READY`. - State Instance_State `protobuf:"varint,6,opt,name=state,enum=google.spanner.admin.instance.v1.Instance_State" json:"state,omitempty"` - // Cloud Labels are a flexible and lightweight mechanism for organizing cloud - // resources into groups that reflect a customer's organizational needs and - // deployment strategies. Cloud Labels can be used to filter collections of - // resources. They can be used to control how resource metrics are aggregated. - // And they can be used as arguments to policy management rules (e.g. route, - // firewall, load balancing, etc.). - // - // * Label keys must be between 1 and 63 characters long and must conform to - // the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. - // * Label values must be between 0 and 63 characters long and must conform - // to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. - // * No more than 64 labels can be associated with a given resource. - // - // See https://goo.gl/xmQnxf for more information on and examples of labels. - // - // If you plan to use labels in your own code, please note that additional - // characters may be allowed in the future. And so you are advised to use an - // internal label representation, such as JSON, which doesn't rely upon - // specific characters being disallowed. For example, representing labels - // as the string: name + "_" + value would prove problematic if we were to - // allow "_" in a future release. - Labels map[string]string `protobuf:"bytes,7,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Instance) Reset() { *m = Instance{} } -func (m *Instance) String() string { return proto.CompactTextString(m) } -func (*Instance) ProtoMessage() {} -func (*Instance) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Instance) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Instance) GetConfig() string { - if m != nil { - return m.Config - } - return "" -} - -func (m *Instance) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *Instance) GetNodeCount() int32 { - if m != nil { - return m.NodeCount - } - return 0 -} - -func (m *Instance) GetState() Instance_State { - if m != nil { - return m.State - } - return Instance_STATE_UNSPECIFIED -} - -func (m *Instance) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -// The request for [ListInstanceConfigs][google.spanner.admin.instance.v1.InstanceAdmin.ListInstanceConfigs]. -type ListInstanceConfigsRequest struct { - // Required. The name of the project for which a list of supported instance - // configurations is requested. Values are of the form - // `projects/<project>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Number of instance configurations to be returned in the response. If 0 or - // less, defaults to the server's maximum allowed page size. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If non-empty, `page_token` should contain a - // [next_page_token][google.spanner.admin.instance.v1.ListInstanceConfigsResponse.next_page_token] - // from a previous [ListInstanceConfigsResponse][google.spanner.admin.instance.v1.ListInstanceConfigsResponse]. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListInstanceConfigsRequest) Reset() { *m = ListInstanceConfigsRequest{} } -func (m *ListInstanceConfigsRequest) String() string { return proto.CompactTextString(m) } -func (*ListInstanceConfigsRequest) ProtoMessage() {} -func (*ListInstanceConfigsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ListInstanceConfigsRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListInstanceConfigsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListInstanceConfigsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// The response for [ListInstanceConfigs][google.spanner.admin.instance.v1.InstanceAdmin.ListInstanceConfigs]. -type ListInstanceConfigsResponse struct { - // The list of requested instance configurations. - InstanceConfigs []*InstanceConfig `protobuf:"bytes,1,rep,name=instance_configs,json=instanceConfigs" json:"instance_configs,omitempty"` - // `next_page_token` can be sent in a subsequent - // [ListInstanceConfigs][google.spanner.admin.instance.v1.InstanceAdmin.ListInstanceConfigs] call to - // fetch more of the matching instance configurations. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListInstanceConfigsResponse) Reset() { *m = ListInstanceConfigsResponse{} } -func (m *ListInstanceConfigsResponse) String() string { return proto.CompactTextString(m) } -func (*ListInstanceConfigsResponse) ProtoMessage() {} -func (*ListInstanceConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ListInstanceConfigsResponse) GetInstanceConfigs() []*InstanceConfig { - if m != nil { - return m.InstanceConfigs - } - return nil -} - -func (m *ListInstanceConfigsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request for -// [GetInstanceConfigRequest][google.spanner.admin.instance.v1.InstanceAdmin.GetInstanceConfig]. -type GetInstanceConfigRequest struct { - // Required. The name of the requested instance configuration. Values are of - // the form `projects/<project>/instanceConfigs/<config>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetInstanceConfigRequest) Reset() { *m = GetInstanceConfigRequest{} } -func (m *GetInstanceConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetInstanceConfigRequest) ProtoMessage() {} -func (*GetInstanceConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *GetInstanceConfigRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request for [GetInstance][google.spanner.admin.instance.v1.InstanceAdmin.GetInstance]. -type GetInstanceRequest struct { - // Required. The name of the requested instance. Values are of the form - // `projects/<project>/instances/<instance>`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetInstanceRequest) Reset() { *m = GetInstanceRequest{} } -func (m *GetInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*GetInstanceRequest) ProtoMessage() {} -func (*GetInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *GetInstanceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request for [CreateInstance][google.spanner.admin.instance.v1.InstanceAdmin.CreateInstance]. -type CreateInstanceRequest struct { - // Required. The name of the project in which to create the instance. Values - // are of the form `projects/<project>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Required. The ID of the instance to create. Valid identifiers are of the - // form `[a-z][-a-z0-9]*[a-z0-9]` and must be between 6 and 30 characters in - // length. - InstanceId string `protobuf:"bytes,2,opt,name=instance_id,json=instanceId" json:"instance_id,omitempty"` - // Required. The instance to create. The name may be omitted, but if - // specified must be `<parent>/instances/<instance_id>`. - Instance *Instance `protobuf:"bytes,3,opt,name=instance" json:"instance,omitempty"` -} - -func (m *CreateInstanceRequest) Reset() { *m = CreateInstanceRequest{} } -func (m *CreateInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*CreateInstanceRequest) ProtoMessage() {} -func (*CreateInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *CreateInstanceRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *CreateInstanceRequest) GetInstanceId() string { - if m != nil { - return m.InstanceId - } - return "" -} - -func (m *CreateInstanceRequest) GetInstance() *Instance { - if m != nil { - return m.Instance - } - return nil -} - -// The request for [ListInstances][google.spanner.admin.instance.v1.InstanceAdmin.ListInstances]. -type ListInstancesRequest struct { - // Required. The name of the project for which a list of instances is - // requested. Values are of the form `projects/<project>`. - Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"` - // Number of instances to be returned in the response. If 0 or less, defaults - // to the server's maximum allowed page size. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If non-empty, `page_token` should contain a - // [next_page_token][google.spanner.admin.instance.v1.ListInstancesResponse.next_page_token] from a - // previous [ListInstancesResponse][google.spanner.admin.instance.v1.ListInstancesResponse]. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // An expression for filtering the results of the request. Filter rules are - // case insensitive. The fields eligible for filtering are: - // - // * `name` - // * `display_name` - // * `labels.key` where key is the name of a label - // - // Some examples of using filters are: - // - // * `name:*` --> The instance has a name. - // * `name:Howl` --> The instance's name contains the string "howl". - // * `name:HOWL` --> Equivalent to above. - // * `NAME:howl` --> Equivalent to above. - // * `labels.env:*` --> The instance has the label "env". - // * `labels.env:dev` --> The instance has the label "env" and the value of - // the label contains the string "dev". - // * `name:howl labels.env:dev` --> The instance's name contains "howl" and - // it has the label "env" with its value - // containing "dev". - Filter string `protobuf:"bytes,4,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListInstancesRequest) Reset() { *m = ListInstancesRequest{} } -func (m *ListInstancesRequest) String() string { return proto.CompactTextString(m) } -func (*ListInstancesRequest) ProtoMessage() {} -func (*ListInstancesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ListInstancesRequest) GetParent() string { - if m != nil { - return m.Parent - } - return "" -} - -func (m *ListInstancesRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListInstancesRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListInstancesRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// The response for [ListInstances][google.spanner.admin.instance.v1.InstanceAdmin.ListInstances]. -type ListInstancesResponse struct { - // The list of requested instances. - Instances []*Instance `protobuf:"bytes,1,rep,name=instances" json:"instances,omitempty"` - // `next_page_token` can be sent in a subsequent - // [ListInstances][google.spanner.admin.instance.v1.InstanceAdmin.ListInstances] call to fetch more - // of the matching instances. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListInstancesResponse) Reset() { *m = ListInstancesResponse{} } -func (m *ListInstancesResponse) String() string { return proto.CompactTextString(m) } -func (*ListInstancesResponse) ProtoMessage() {} -func (*ListInstancesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ListInstancesResponse) GetInstances() []*Instance { - if m != nil { - return m.Instances - } - return nil -} - -func (m *ListInstancesResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request for [UpdateInstance][google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstance]. -type UpdateInstanceRequest struct { - // Required. The instance to update, which must always include the instance - // name. Otherwise, only fields mentioned in [][google.spanner.admin.instance.v1.UpdateInstanceRequest.field_mask] need be included. - Instance *Instance `protobuf:"bytes,1,opt,name=instance" json:"instance,omitempty"` - // Required. A mask specifying which fields in [][google.spanner.admin.instance.v1.UpdateInstanceRequest.instance] should be updated. - // The field mask must always be specified; this prevents any future fields in - // [][google.spanner.admin.instance.v1.Instance] from being erased accidentally by clients that do not know - // about them. - FieldMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=field_mask,json=fieldMask" json:"field_mask,omitempty"` -} - -func (m *UpdateInstanceRequest) Reset() { *m = UpdateInstanceRequest{} } -func (m *UpdateInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateInstanceRequest) ProtoMessage() {} -func (*UpdateInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *UpdateInstanceRequest) GetInstance() *Instance { - if m != nil { - return m.Instance - } - return nil -} - -func (m *UpdateInstanceRequest) GetFieldMask() *google_protobuf3.FieldMask { - if m != nil { - return m.FieldMask - } - return nil -} - -// The request for [DeleteInstance][google.spanner.admin.instance.v1.InstanceAdmin.DeleteInstance]. -type DeleteInstanceRequest struct { - // Required. The name of the instance to be deleted. Values are of the form - // `projects/<project>/instances/<instance>` - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteInstanceRequest) Reset() { *m = DeleteInstanceRequest{} } -func (m *DeleteInstanceRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteInstanceRequest) ProtoMessage() {} -func (*DeleteInstanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *DeleteInstanceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Metadata type for the operation returned by -// [CreateInstance][google.spanner.admin.instance.v1.InstanceAdmin.CreateInstance]. -type CreateInstanceMetadata struct { - // The instance being created. - Instance *Instance `protobuf:"bytes,1,opt,name=instance" json:"instance,omitempty"` - // The time at which the - // [CreateInstance][google.spanner.admin.instance.v1.InstanceAdmin.CreateInstance] request was - // received. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The time at which this operation was cancelled. If set, this operation is - // in the process of undoing itself (which is guaranteed to succeed) and - // cannot be cancelled again. - CancelTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=cancel_time,json=cancelTime" json:"cancel_time,omitempty"` - // The time at which this operation failed or was completed successfully. - EndTime *google_protobuf4.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *CreateInstanceMetadata) Reset() { *m = CreateInstanceMetadata{} } -func (m *CreateInstanceMetadata) String() string { return proto.CompactTextString(m) } -func (*CreateInstanceMetadata) ProtoMessage() {} -func (*CreateInstanceMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *CreateInstanceMetadata) GetInstance() *Instance { - if m != nil { - return m.Instance - } - return nil -} - -func (m *CreateInstanceMetadata) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *CreateInstanceMetadata) GetCancelTime() *google_protobuf4.Timestamp { - if m != nil { - return m.CancelTime - } - return nil -} - -func (m *CreateInstanceMetadata) GetEndTime() *google_protobuf4.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -// Metadata type for the operation returned by -// [UpdateInstance][google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstance]. -type UpdateInstanceMetadata struct { - // The desired end state of the update. - Instance *Instance `protobuf:"bytes,1,opt,name=instance" json:"instance,omitempty"` - // The time at which [UpdateInstance][google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstance] - // request was received. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The time at which this operation was cancelled. If set, this operation is - // in the process of undoing itself (which is guaranteed to succeed) and - // cannot be cancelled again. - CancelTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=cancel_time,json=cancelTime" json:"cancel_time,omitempty"` - // The time at which this operation failed or was completed successfully. - EndTime *google_protobuf4.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime" json:"end_time,omitempty"` -} - -func (m *UpdateInstanceMetadata) Reset() { *m = UpdateInstanceMetadata{} } -func (m *UpdateInstanceMetadata) String() string { return proto.CompactTextString(m) } -func (*UpdateInstanceMetadata) ProtoMessage() {} -func (*UpdateInstanceMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -func (m *UpdateInstanceMetadata) GetInstance() *Instance { - if m != nil { - return m.Instance - } - return nil -} - -func (m *UpdateInstanceMetadata) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *UpdateInstanceMetadata) GetCancelTime() *google_protobuf4.Timestamp { - if m != nil { - return m.CancelTime - } - return nil -} - -func (m *UpdateInstanceMetadata) GetEndTime() *google_protobuf4.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func init() { - proto.RegisterType((*InstanceConfig)(nil), "google.spanner.admin.instance.v1.InstanceConfig") - proto.RegisterType((*Instance)(nil), "google.spanner.admin.instance.v1.Instance") - proto.RegisterType((*ListInstanceConfigsRequest)(nil), "google.spanner.admin.instance.v1.ListInstanceConfigsRequest") - proto.RegisterType((*ListInstanceConfigsResponse)(nil), "google.spanner.admin.instance.v1.ListInstanceConfigsResponse") - proto.RegisterType((*GetInstanceConfigRequest)(nil), "google.spanner.admin.instance.v1.GetInstanceConfigRequest") - proto.RegisterType((*GetInstanceRequest)(nil), "google.spanner.admin.instance.v1.GetInstanceRequest") - proto.RegisterType((*CreateInstanceRequest)(nil), "google.spanner.admin.instance.v1.CreateInstanceRequest") - proto.RegisterType((*ListInstancesRequest)(nil), "google.spanner.admin.instance.v1.ListInstancesRequest") - proto.RegisterType((*ListInstancesResponse)(nil), "google.spanner.admin.instance.v1.ListInstancesResponse") - proto.RegisterType((*UpdateInstanceRequest)(nil), "google.spanner.admin.instance.v1.UpdateInstanceRequest") - proto.RegisterType((*DeleteInstanceRequest)(nil), "google.spanner.admin.instance.v1.DeleteInstanceRequest") - proto.RegisterType((*CreateInstanceMetadata)(nil), "google.spanner.admin.instance.v1.CreateInstanceMetadata") - proto.RegisterType((*UpdateInstanceMetadata)(nil), "google.spanner.admin.instance.v1.UpdateInstanceMetadata") - proto.RegisterEnum("google.spanner.admin.instance.v1.Instance_State", Instance_State_name, Instance_State_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for InstanceAdmin service - -type InstanceAdminClient interface { - // Lists the supported instance configurations for a given project. - ListInstanceConfigs(ctx context.Context, in *ListInstanceConfigsRequest, opts ...grpc.CallOption) (*ListInstanceConfigsResponse, error) - // Gets information about a particular instance configuration. - GetInstanceConfig(ctx context.Context, in *GetInstanceConfigRequest, opts ...grpc.CallOption) (*InstanceConfig, error) - // Lists all instances in the given project. - ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) - // Gets information about a particular instance. - GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*Instance, error) - // Creates an instance and begins preparing it to begin serving. The - // returned [long-running operation][google.longrunning.Operation] - // can be used to track the progress of preparing the new - // instance. The instance name is assigned by the caller. If the - // named instance already exists, `CreateInstance` returns - // `ALREADY_EXISTS`. - // - // Immediately upon completion of this request: - // - // * The instance is readable via the API, with all requested attributes - // but no allocated resources. Its state is `CREATING`. - // - // Until completion of the returned operation: - // - // * Cancelling the operation renders the instance immediately unreadable - // via the API. - // * The instance can be deleted. - // * All other attempts to modify the instance are rejected. - // - // Upon completion of the returned operation: - // - // * Billing for all successfully-allocated resources begins (some types - // may have lower than the requested levels). - // * Databases can be created in the instance. - // * The instance's allocated resource levels are readable via the API. - // * The instance's state becomes `READY`. - // - // The returned [long-running operation][google.longrunning.Operation] will - // have a name of the format `<instance_name>/operations/<operation_id>` and - // can be used to track creation of the instance. The - // [metadata][google.longrunning.Operation.metadata] field type is - // [CreateInstanceMetadata][google.spanner.admin.instance.v1.CreateInstanceMetadata]. - // The [response][google.longrunning.Operation.response] field type is - // [Instance][google.spanner.admin.instance.v1.Instance], if successful. - CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Updates an instance, and begins allocating or releasing resources - // as requested. The returned [long-running - // operation][google.longrunning.Operation] can be used to track the - // progress of updating the instance. If the named instance does not - // exist, returns `NOT_FOUND`. - // - // Immediately upon completion of this request: - // - // * For resource types for which a decrease in the instance's allocation - // has been requested, billing is based on the newly-requested level. - // - // Until completion of the returned operation: - // - // * Cancelling the operation sets its metadata's - // [cancel_time][google.spanner.admin.instance.v1.UpdateInstanceMetadata.cancel_time], and begins - // restoring resources to their pre-request values. The operation - // is guaranteed to succeed at undoing all resource changes, - // after which point it terminates with a `CANCELLED` status. - // * All other attempts to modify the instance are rejected. - // * Reading the instance via the API continues to give the pre-request - // resource levels. - // - // Upon completion of the returned operation: - // - // * Billing begins for all successfully-allocated resources (some types - // may have lower than the requested levels). - // * All newly-reserved resources are available for serving the instance's - // tables. - // * The instance's new resource levels are readable via the API. - // - // The returned [long-running operation][google.longrunning.Operation] will - // have a name of the format `<instance_name>/operations/<operation_id>` and - // can be used to track the instance modification. The - // [metadata][google.longrunning.Operation.metadata] field type is - // [UpdateInstanceMetadata][google.spanner.admin.instance.v1.UpdateInstanceMetadata]. - // The [response][google.longrunning.Operation.response] field type is - // [Instance][google.spanner.admin.instance.v1.Instance], if successful. - // - // Authorization requires `spanner.instances.update` permission on - // resource [name][google.spanner.admin.instance.v1.Instance.name]. - UpdateInstance(ctx context.Context, in *UpdateInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) - // Deletes an instance. - // - // Immediately upon completion of the request: - // - // * Billing ceases for all of the instance's reserved resources. - // - // Soon afterward: - // - // * The instance and *all of its databases* immediately and - // irrevocably disappear from the API. All data in the databases - // is permanently deleted. - DeleteInstance(ctx context.Context, in *DeleteInstanceRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) - // Sets the access control policy on an instance resource. Replaces any - // existing policy. - // - // Authorization requires `spanner.instances.setIamPolicy` on - // [resource][google.iam.v1.SetIamPolicyRequest.resource]. - SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Gets the access control policy for an instance resource. Returns an empty - // policy if an instance exists but does not have a policy set. - // - // Authorization requires `spanner.instances.getIamPolicy` on - // [resource][google.iam.v1.GetIamPolicyRequest.resource]. - GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) - // Returns permissions that the caller has on the specified instance resource. - // - // Attempting this RPC on a non-existent Cloud Spanner instance resource will - // result in a NOT_FOUND error if the user has `spanner.instances.list` - // permission on the containing Google Cloud Project. Otherwise returns an - // empty set of permissions. - TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -type instanceAdminClient struct { - cc *grpc.ClientConn -} - -func NewInstanceAdminClient(cc *grpc.ClientConn) InstanceAdminClient { - return &instanceAdminClient{cc} -} - -func (c *instanceAdminClient) ListInstanceConfigs(ctx context.Context, in *ListInstanceConfigsRequest, opts ...grpc.CallOption) (*ListInstanceConfigsResponse, error) { - out := new(ListInstanceConfigsResponse) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/ListInstanceConfigs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) GetInstanceConfig(ctx context.Context, in *GetInstanceConfigRequest, opts ...grpc.CallOption) (*InstanceConfig, error) { - out := new(InstanceConfig) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/GetInstanceConfig", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) ListInstances(ctx context.Context, in *ListInstancesRequest, opts ...grpc.CallOption) (*ListInstancesResponse, error) { - out := new(ListInstancesResponse) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/ListInstances", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) GetInstance(ctx context.Context, in *GetInstanceRequest, opts ...grpc.CallOption) (*Instance, error) { - out := new(Instance) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/GetInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) CreateInstance(ctx context.Context, in *CreateInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/CreateInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) UpdateInstance(ctx context.Context, in *UpdateInstanceRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) { - out := new(google_longrunning.Operation) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/UpdateInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) DeleteInstance(ctx context.Context, in *DeleteInstanceRequest, opts ...grpc.CallOption) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/DeleteInstance", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/SetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) { - out := new(google_iam_v1.Policy) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/GetIamPolicy", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *instanceAdminClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) { - out := new(google_iam_v11.TestIamPermissionsResponse) - err := grpc.Invoke(ctx, "/google.spanner.admin.instance.v1.InstanceAdmin/TestIamPermissions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for InstanceAdmin service - -type InstanceAdminServer interface { - // Lists the supported instance configurations for a given project. - ListInstanceConfigs(context.Context, *ListInstanceConfigsRequest) (*ListInstanceConfigsResponse, error) - // Gets information about a particular instance configuration. - GetInstanceConfig(context.Context, *GetInstanceConfigRequest) (*InstanceConfig, error) - // Lists all instances in the given project. - ListInstances(context.Context, *ListInstancesRequest) (*ListInstancesResponse, error) - // Gets information about a particular instance. - GetInstance(context.Context, *GetInstanceRequest) (*Instance, error) - // Creates an instance and begins preparing it to begin serving. The - // returned [long-running operation][google.longrunning.Operation] - // can be used to track the progress of preparing the new - // instance. The instance name is assigned by the caller. If the - // named instance already exists, `CreateInstance` returns - // `ALREADY_EXISTS`. - // - // Immediately upon completion of this request: - // - // * The instance is readable via the API, with all requested attributes - // but no allocated resources. Its state is `CREATING`. - // - // Until completion of the returned operation: - // - // * Cancelling the operation renders the instance immediately unreadable - // via the API. - // * The instance can be deleted. - // * All other attempts to modify the instance are rejected. - // - // Upon completion of the returned operation: - // - // * Billing for all successfully-allocated resources begins (some types - // may have lower than the requested levels). - // * Databases can be created in the instance. - // * The instance's allocated resource levels are readable via the API. - // * The instance's state becomes `READY`. - // - // The returned [long-running operation][google.longrunning.Operation] will - // have a name of the format `<instance_name>/operations/<operation_id>` and - // can be used to track creation of the instance. The - // [metadata][google.longrunning.Operation.metadata] field type is - // [CreateInstanceMetadata][google.spanner.admin.instance.v1.CreateInstanceMetadata]. - // The [response][google.longrunning.Operation.response] field type is - // [Instance][google.spanner.admin.instance.v1.Instance], if successful. - CreateInstance(context.Context, *CreateInstanceRequest) (*google_longrunning.Operation, error) - // Updates an instance, and begins allocating or releasing resources - // as requested. The returned [long-running - // operation][google.longrunning.Operation] can be used to track the - // progress of updating the instance. If the named instance does not - // exist, returns `NOT_FOUND`. - // - // Immediately upon completion of this request: - // - // * For resource types for which a decrease in the instance's allocation - // has been requested, billing is based on the newly-requested level. - // - // Until completion of the returned operation: - // - // * Cancelling the operation sets its metadata's - // [cancel_time][google.spanner.admin.instance.v1.UpdateInstanceMetadata.cancel_time], and begins - // restoring resources to their pre-request values. The operation - // is guaranteed to succeed at undoing all resource changes, - // after which point it terminates with a `CANCELLED` status. - // * All other attempts to modify the instance are rejected. - // * Reading the instance via the API continues to give the pre-request - // resource levels. - // - // Upon completion of the returned operation: - // - // * Billing begins for all successfully-allocated resources (some types - // may have lower than the requested levels). - // * All newly-reserved resources are available for serving the instance's - // tables. - // * The instance's new resource levels are readable via the API. - // - // The returned [long-running operation][google.longrunning.Operation] will - // have a name of the format `<instance_name>/operations/<operation_id>` and - // can be used to track the instance modification. The - // [metadata][google.longrunning.Operation.metadata] field type is - // [UpdateInstanceMetadata][google.spanner.admin.instance.v1.UpdateInstanceMetadata]. - // The [response][google.longrunning.Operation.response] field type is - // [Instance][google.spanner.admin.instance.v1.Instance], if successful. - // - // Authorization requires `spanner.instances.update` permission on - // resource [name][google.spanner.admin.instance.v1.Instance.name]. - UpdateInstance(context.Context, *UpdateInstanceRequest) (*google_longrunning.Operation, error) - // Deletes an instance. - // - // Immediately upon completion of the request: - // - // * Billing ceases for all of the instance's reserved resources. - // - // Soon afterward: - // - // * The instance and *all of its databases* immediately and - // irrevocably disappear from the API. All data in the databases - // is permanently deleted. - DeleteInstance(context.Context, *DeleteInstanceRequest) (*google_protobuf2.Empty, error) - // Sets the access control policy on an instance resource. Replaces any - // existing policy. - // - // Authorization requires `spanner.instances.setIamPolicy` on - // [resource][google.iam.v1.SetIamPolicyRequest.resource]. - SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Gets the access control policy for an instance resource. Returns an empty - // policy if an instance exists but does not have a policy set. - // - // Authorization requires `spanner.instances.getIamPolicy` on - // [resource][google.iam.v1.GetIamPolicyRequest.resource]. - GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error) - // Returns permissions that the caller has on the specified instance resource. - // - // Attempting this RPC on a non-existent Cloud Spanner instance resource will - // result in a NOT_FOUND error if the user has `spanner.instances.list` - // permission on the containing Google Cloud Project. Otherwise returns an - // empty set of permissions. - TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error) -} - -func RegisterInstanceAdminServer(s *grpc.Server, srv InstanceAdminServer) { - s.RegisterService(&_InstanceAdmin_serviceDesc, srv) -} - -func _InstanceAdmin_ListInstanceConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInstanceConfigsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).ListInstanceConfigs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/ListInstanceConfigs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).ListInstanceConfigs(ctx, req.(*ListInstanceConfigsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_GetInstanceConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetInstanceConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).GetInstanceConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/GetInstanceConfig", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).GetInstanceConfig(ctx, req.(*GetInstanceConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_ListInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListInstancesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).ListInstances(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/ListInstances", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).ListInstances(ctx, req.(*ListInstancesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_GetInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).GetInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/GetInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).GetInstance(ctx, req.(*GetInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_CreateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).CreateInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/CreateInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).CreateInstance(ctx, req.(*CreateInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_UpdateInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).UpdateInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/UpdateInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).UpdateInstance(ctx, req.(*UpdateInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_DeleteInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteInstanceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).DeleteInstance(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/DeleteInstance", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).DeleteInstance(ctx, req.(*DeleteInstanceRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.SetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).SetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/SetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.GetIamPolicyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).GetIamPolicy(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/GetIamPolicy", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _InstanceAdmin_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_iam_v11.TestIamPermissionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(InstanceAdminServer).TestIamPermissions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.admin.instance.v1.InstanceAdmin/TestIamPermissions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(InstanceAdminServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _InstanceAdmin_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.spanner.admin.instance.v1.InstanceAdmin", - HandlerType: (*InstanceAdminServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ListInstanceConfigs", - Handler: _InstanceAdmin_ListInstanceConfigs_Handler, - }, - { - MethodName: "GetInstanceConfig", - Handler: _InstanceAdmin_GetInstanceConfig_Handler, - }, - { - MethodName: "ListInstances", - Handler: _InstanceAdmin_ListInstances_Handler, - }, - { - MethodName: "GetInstance", - Handler: _InstanceAdmin_GetInstance_Handler, - }, - { - MethodName: "CreateInstance", - Handler: _InstanceAdmin_CreateInstance_Handler, - }, - { - MethodName: "UpdateInstance", - Handler: _InstanceAdmin_UpdateInstance_Handler, - }, - { - MethodName: "DeleteInstance", - Handler: _InstanceAdmin_DeleteInstance_Handler, - }, - { - MethodName: "SetIamPolicy", - Handler: _InstanceAdmin_SetIamPolicy_Handler, - }, - { - MethodName: "GetIamPolicy", - Handler: _InstanceAdmin_GetIamPolicy_Handler, - }, - { - MethodName: "TestIamPermissions", - Handler: _InstanceAdmin_TestIamPermissions_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/spanner/admin/instance/v1/spanner_instance_admin.proto", -} - -func init() { - proto.RegisterFile("google/spanner/admin/instance/v1/spanner_instance_admin.proto", fileDescriptor0) -} - -var fileDescriptor0 = []byte{ - // 1210 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0x67, 0x92, 0x3a, 0x8d, 0x9f, 0xd3, 0x34, 0x1d, 0x9a, 0xca, 0xb8, 0x94, 0xa6, 0x5b, 0x54, - 0x5c, 0x83, 0x76, 0x89, 0xa1, 0xff, 0x52, 0x72, 0x48, 0x5d, 0xc7, 0xb5, 0xd4, 0x86, 0x68, 0xed, - 0x56, 0x02, 0x22, 0x59, 0x53, 0x7b, 0x62, 0x2d, 0xd9, 0x9d, 0x5d, 0x76, 0xc6, 0x15, 0x29, 0xea, - 0xa5, 0xe2, 0x00, 0x12, 0x12, 0x07, 0x24, 0x84, 0x7a, 0x41, 0xe2, 0x08, 0x12, 0x07, 0xbe, 0x02, - 0x37, 0xae, 0x7c, 0x00, 0x2e, 0x88, 0xcf, 0x81, 0x66, 0x76, 0xc7, 0xf5, 0xae, 0xed, 0xd8, 0xae, - 0xe8, 0x89, 0xdb, 0xce, 0xbc, 0xdf, 0x7b, 0xef, 0x37, 0xbf, 0x37, 0xfb, 0xde, 0x2e, 0x6c, 0x76, - 0x7d, 0xbf, 0xeb, 0x52, 0x8b, 0x07, 0x84, 0x31, 0x1a, 0x5a, 0xa4, 0xe3, 0x39, 0xcc, 0x72, 0x18, - 0x17, 0x84, 0xb5, 0xa9, 0xf5, 0x68, 0x5d, 0x5b, 0x5a, 0x7a, 0xaf, 0xa5, 0x20, 0x66, 0x10, 0xfa, - 0xc2, 0xc7, 0x6b, 0x91, 0xbb, 0x19, 0x83, 0xcc, 0xc8, 0xa6, 0xa1, 0xe6, 0xa3, 0xf5, 0xc2, 0xeb, - 0x71, 0x02, 0x12, 0x38, 0x16, 0x61, 0xcc, 0x17, 0x44, 0x38, 0x3e, 0xe3, 0x91, 0x7f, 0xe1, 0x8d, - 0xd8, 0xea, 0x10, 0x4f, 0xe6, 0x72, 0x88, 0xd7, 0x0a, 0x7c, 0xd7, 0x69, 0x1f, 0xc6, 0xf6, 0x42, - 0xd2, 0x9e, 0xb0, 0x5d, 0x8c, 0x6d, 0xae, 0xcf, 0xba, 0x61, 0x8f, 0x31, 0x87, 0x75, 0x2d, 0x3f, - 0xa0, 0x61, 0x22, 0xc1, 0xd9, 0x18, 0xa4, 0x56, 0x0f, 0x7b, 0xfb, 0x16, 0xf5, 0x02, 0xa1, 0x23, - 0xac, 0xa5, 0x8d, 0xfb, 0x0e, 0x75, 0x3b, 0x2d, 0x8f, 0xf0, 0x83, 0x18, 0x71, 0x3e, 0x8d, 0x10, - 0x8e, 0x47, 0xb9, 0x20, 0x5e, 0x10, 0x01, 0x8c, 0x1a, 0x2c, 0xd7, 0xe3, 0xd3, 0x56, 0x7c, 0xb6, - 0xef, 0x74, 0x31, 0x86, 0x63, 0x8c, 0x78, 0x34, 0x8f, 0xd6, 0x50, 0x31, 0x6b, 0xab, 0x67, 0x7c, - 0x01, 0x96, 0x3a, 0x0e, 0x0f, 0x5c, 0x72, 0xd8, 0x52, 0xb6, 0x39, 0x65, 0xcb, 0xc5, 0x7b, 0x3b, - 0xc4, 0xa3, 0xc6, 0x97, 0xf3, 0xb0, 0xa8, 0x23, 0x8d, 0x8c, 0x71, 0x06, 0x16, 0xda, 0x2a, 0x43, - 0xec, 0x1d, 0xaf, 0x86, 0x62, 0xcf, 0x0f, 0xc5, 0xc6, 0xe7, 0x00, 0x98, 0xdf, 0xa1, 0xad, 0xb6, - 0xdf, 0x63, 0x22, 0x9f, 0x59, 0x43, 0xc5, 0x8c, 0x9d, 0x95, 0x3b, 0x15, 0xb9, 0x81, 0xb7, 0x21, - 0xc3, 0x05, 0x11, 0x34, 0xbf, 0xb0, 0x86, 0x8a, 0xcb, 0xe5, 0x77, 0xcd, 0x49, 0x45, 0x35, 0x35, - 0x51, 0xb3, 0x21, 0xfd, 0xec, 0xc8, 0x1d, 0xef, 0xc0, 0x82, 0x4b, 0x1e, 0x52, 0x97, 0xe7, 0x8f, - 0xaf, 0xcd, 0x17, 0x73, 0xe5, 0xab, 0x33, 0x04, 0xba, 0xab, 0x1c, 0xab, 0x4c, 0x84, 0x87, 0x76, - 0x1c, 0xa5, 0x70, 0x03, 0x72, 0x03, 0xdb, 0x78, 0x05, 0xe6, 0x0f, 0xe8, 0x61, 0xac, 0x89, 0x7c, - 0xc4, 0xa7, 0x21, 0xf3, 0x88, 0xb8, 0x3d, 0xad, 0x67, 0xb4, 0xd8, 0x98, 0xbb, 0x8e, 0x8c, 0x6b, - 0x90, 0x51, 0xd4, 0xf0, 0x2a, 0x9c, 0x6a, 0x34, 0xb7, 0x9a, 0xd5, 0xd6, 0xfd, 0x9d, 0xc6, 0x6e, - 0xb5, 0x52, 0xdf, 0xae, 0x57, 0x6f, 0xaf, 0xbc, 0x82, 0x97, 0x60, 0xb1, 0x62, 0x57, 0xb7, 0x9a, - 0xf5, 0x9d, 0xda, 0x0a, 0xc2, 0x59, 0xc8, 0xd8, 0xd5, 0xad, 0xdb, 0x1f, 0xad, 0xcc, 0x19, 0x01, - 0x14, 0xee, 0x3a, 0x5c, 0x24, 0x6b, 0xca, 0x6d, 0xfa, 0x59, 0x8f, 0x72, 0x21, 0x6b, 0x10, 0x90, - 0x90, 0x32, 0x11, 0xb3, 0x88, 0x57, 0xf8, 0x2c, 0x64, 0x03, 0xd2, 0xa5, 0x2d, 0xee, 0x3c, 0x8e, - 0xc8, 0x64, 0xec, 0x45, 0xb9, 0xd1, 0x70, 0x1e, 0x2b, 0xf5, 0x95, 0x51, 0xf8, 0x07, 0x94, 0xc5, - 0xe5, 0x51, 0xf0, 0xa6, 0xdc, 0x30, 0x7e, 0x42, 0x70, 0x76, 0x64, 0x4a, 0x1e, 0xf8, 0x8c, 0x53, - 0xfc, 0x09, 0xac, 0xf4, 0x5f, 0xbd, 0xa8, 0xe4, 0x3c, 0x8f, 0x94, 0xbe, 0x33, 0x14, 0x2a, 0x0a, - 0x6a, 0x9f, 0x74, 0x92, 0x49, 0xf0, 0x25, 0x38, 0xc9, 0xe8, 0xe7, 0xa2, 0x35, 0x40, 0x30, 0xd2, - 0xf2, 0x84, 0xdc, 0xde, 0xed, 0x93, 0x34, 0x21, 0x5f, 0xa3, 0x29, 0x8a, 0x5a, 0x94, 0x11, 0x97, - 0xd5, 0x28, 0x02, 0x1e, 0xc0, 0x1f, 0x85, 0xfc, 0x01, 0xc1, 0x6a, 0x25, 0xa4, 0x44, 0xd0, 0x34, - 0x7a, 0x9c, 0xd8, 0xe7, 0x21, 0xd7, 0x17, 0xc4, 0xe9, 0xc4, 0x7c, 0x41, 0x6f, 0xd5, 0x3b, 0x78, - 0x1b, 0x16, 0xf5, 0x4a, 0xc9, 0x9d, 0x2b, 0x97, 0xa6, 0x57, 0xca, 0xee, 0xfb, 0x1a, 0x4f, 0x11, - 0x9c, 0x1e, 0xac, 0xcc, 0xcb, 0xbc, 0x06, 0x32, 0xe6, 0xbe, 0xe3, 0x0a, 0x1a, 0xe6, 0x8f, 0x45, - 0x31, 0xa3, 0x95, 0xf1, 0x35, 0x82, 0xd5, 0x14, 0x89, 0xf8, 0x62, 0xdc, 0x81, 0xac, 0xa6, 0xaa, - 0x6f, 0xc4, 0x2c, 0xe7, 0x7c, 0xee, 0x3c, 0xf5, 0x2d, 0x78, 0x86, 0x60, 0xf5, 0x7e, 0xd0, 0x19, - 0x51, 0xab, 0x41, 0xc9, 0xd1, 0x8b, 0x4b, 0x8e, 0x6f, 0x00, 0x3c, 0xef, 0xc1, 0x8a, 0x44, 0xae, - 0x5c, 0xd0, 0x91, 0x74, 0x13, 0x36, 0xb7, 0x25, 0xe4, 0x1e, 0xe1, 0x07, 0x76, 0x76, 0x5f, 0x3f, - 0x1a, 0x6f, 0xc3, 0xea, 0x6d, 0xea, 0xd2, 0x61, 0x6e, 0xa3, 0x6e, 0xdd, 0xb7, 0x73, 0x70, 0x26, - 0x79, 0xeb, 0xee, 0x51, 0x41, 0x3a, 0x44, 0x90, 0xff, 0xf2, 0x28, 0x5c, 0x90, 0x50, 0xb4, 0xe4, - 0xc8, 0x18, 0x7b, 0x94, 0xa6, 0x9e, 0x27, 0x76, 0x56, 0xa1, 0xe5, 0x1a, 0xdf, 0x84, 0x5c, 0x5b, - 0xc6, 0x70, 0x23, 0xdf, 0xf9, 0x89, 0xbe, 0x10, 0xc1, 0x95, 0xf3, 0x15, 0x58, 0xa4, 0xac, 0x13, - 0x79, 0x1e, 0x9b, 0xe8, 0x79, 0x9c, 0xb2, 0x8e, 0x5c, 0x29, 0x45, 0x92, 0xb5, 0xfd, 0x9f, 0x2b, - 0x52, 0xfe, 0x67, 0x09, 0x4e, 0xe8, 0x53, 0x6c, 0xc9, 0xf3, 0xe1, 0xdf, 0x11, 0xbc, 0x3a, 0xa2, - 0x55, 0xe3, 0x0f, 0x26, 0xcb, 0x31, 0x7e, 0xa8, 0x14, 0x36, 0x5f, 0xd0, 0x3b, 0x6a, 0x03, 0x86, - 0xf5, 0xf4, 0xcf, 0xbf, 0xbf, 0x9b, 0xbb, 0x8c, 0xdf, 0x92, 0x1f, 0x48, 0x5f, 0x44, 0x9d, 0x68, - 0x33, 0x08, 0xfd, 0x4f, 0x69, 0x5b, 0x70, 0xab, 0xf4, 0xc4, 0x4a, 0xf7, 0xfc, 0xdf, 0x10, 0x9c, - 0x1a, 0x6a, 0xe6, 0x78, 0x63, 0x32, 0x8b, 0x71, 0x13, 0xa0, 0x30, 0xf3, 0x20, 0x4a, 0x91, 0x96, - 0xaf, 0xe4, 0x00, 0xe5, 0x34, 0x63, 0xab, 0xf4, 0x04, 0xff, 0x82, 0xe0, 0x44, 0xa2, 0x0d, 0xe2, - 0xab, 0xb3, 0xc9, 0xd6, 0x97, 0xfb, 0xda, 0xcc, 0x7e, 0xb1, 0xd0, 0x97, 0x15, 0xe7, 0x8b, 0xf8, - 0xc2, 0x24, 0xa1, 0x39, 0x7e, 0x86, 0x20, 0x37, 0xa0, 0x16, 0x7e, 0x7f, 0x26, 0x71, 0x35, 0xd3, - 0x19, 0xde, 0xb2, 0x14, 0xb9, 0x71, 0x82, 0x2a, 0x29, 0xbf, 0x47, 0xb0, 0x9c, 0xec, 0x7d, 0x78, - 0x0a, 0x4d, 0x46, 0xce, 0xe8, 0xc2, 0x39, 0xed, 0x38, 0xf0, 0x11, 0x6e, 0x7e, 0xa8, 0x3f, 0xc2, - 0x8d, 0x77, 0x14, 0xab, 0x4b, 0xc6, 0x64, 0xc9, 0x36, 0x50, 0x09, 0xff, 0x88, 0x60, 0x39, 0xd9, - 0x82, 0xa6, 0x21, 0x36, 0x72, 0x20, 0x4d, 0x22, 0x76, 0x45, 0x11, 0xb3, 0xca, 0x25, 0x45, 0xac, - 0x1f, 0xee, 0x28, 0xdd, 0x24, 0xc3, 0x6f, 0x10, 0x2c, 0x27, 0x87, 0xcc, 0x34, 0x0c, 0x47, 0x8e, - 0xa5, 0xc2, 0x99, 0xa1, 0x1e, 0x54, 0x95, 0xbf, 0x26, 0xba, 0x92, 0xa5, 0x29, 0x2a, 0xf9, 0x15, - 0x82, 0xa5, 0x06, 0x15, 0x75, 0xe2, 0xed, 0xaa, 0x1f, 0x23, 0x6c, 0xe8, 0x98, 0x0e, 0xf1, 0x64, - 0xe6, 0x41, 0xa3, 0xce, 0xbb, 0x9a, 0xc2, 0x44, 0x56, 0x63, 0x53, 0xa5, 0xbd, 0x66, 0x94, 0x55, - 0xda, 0x90, 0x72, 0xbf, 0x17, 0xb6, 0xc7, 0x8b, 0xc1, 0x07, 0x22, 0x4b, 0x65, 0x24, 0x95, 0xda, - 0x51, 0x54, 0x6a, 0x2f, 0x8d, 0x4a, 0x37, 0x45, 0xe5, 0x57, 0x04, 0xb8, 0x49, 0xb9, 0xda, 0xa4, - 0xa1, 0xe7, 0x70, 0x2e, 0xff, 0x07, 0x71, 0x31, 0x95, 0x6c, 0x18, 0xa2, 0x69, 0x5d, 0x9e, 0x02, - 0x19, 0xf7, 0x84, 0x8a, 0xa2, 0xba, 0x69, 0x5c, 0x9f, 0x8e, 0xaa, 0x18, 0x8a, 0xb4, 0x81, 0x4a, - 0xb7, 0xfe, 0x42, 0xf0, 0x66, 0xdb, 0xf7, 0x26, 0x5e, 0xa4, 0x5b, 0xaf, 0x35, 0x22, 0x53, 0x62, - 0x2a, 0xed, 0xca, 0xeb, 0xb3, 0x8b, 0x3e, 0xbe, 0x13, 0xbb, 0x77, 0x7d, 0x97, 0xb0, 0xae, 0xe9, - 0x87, 0x5d, 0xab, 0x4b, 0x99, 0xba, 0x5c, 0x56, 0x64, 0x22, 0x81, 0xc3, 0xc7, 0xff, 0xe8, 0xdf, - 0xd4, 0xcf, 0x3f, 0xcf, 0x5d, 0xaa, 0x45, 0xa1, 0x2a, 0xae, 0xdf, 0xeb, 0x98, 0x71, 0x52, 0x53, - 0x65, 0x7b, 0xfe, 0xc7, 0xf6, 0x60, 0xfd, 0x0f, 0x0d, 0xdc, 0x53, 0xc0, 0xbd, 0x18, 0xb8, 0xa7, - 0x80, 0x7b, 0x1a, 0xb8, 0xf7, 0x60, 0xfd, 0xe1, 0x82, 0xa2, 0xf1, 0xde, 0xbf, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x23, 0xcc, 0x85, 0xa9, 0x6e, 0x10, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/v1/keys.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/v1/keys.pb.go deleted file mode 100644 index 66728bea..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/v1/keys.pb.go +++ /dev/null @@ -1,446 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/v1/keys.proto - -/* -Package spanner is a generated protocol buffer package. - -It is generated from these files: - google/spanner/v1/keys.proto - google/spanner/v1/mutation.proto - google/spanner/v1/query_plan.proto - google/spanner/v1/result_set.proto - google/spanner/v1/spanner.proto - google/spanner/v1/transaction.proto - google/spanner/v1/type.proto - -It has these top-level messages: - KeyRange - KeySet - Mutation - PlanNode - QueryPlan - ResultSet - PartialResultSet - ResultSetMetadata - ResultSetStats - CreateSessionRequest - Session - GetSessionRequest - ListSessionsRequest - ListSessionsResponse - DeleteSessionRequest - ExecuteSqlRequest - PartitionOptions - PartitionQueryRequest - PartitionReadRequest - Partition - PartitionResponse - ReadRequest - BeginTransactionRequest - CommitRequest - CommitResponse - RollbackRequest - TransactionOptions - Transaction - TransactionSelector - Type - StructType -*/ -package spanner - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/struct" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// KeyRange represents a range of rows in a table or index. -// -// A range has a start key and an end key. These keys can be open or -// closed, indicating if the range includes rows with that key. -// -// Keys are represented by lists, where the ith value in the list -// corresponds to the ith component of the table or index primary key. -// Individual values are encoded as described [here][google.spanner.v1.TypeCode]. -// -// For example, consider the following table definition: -// -// CREATE TABLE UserEvents ( -// UserName STRING(MAX), -// EventDate STRING(10) -// ) PRIMARY KEY(UserName, EventDate); -// -// The following keys name rows in this table: -// -// ["Bob", "2014-09-23"] -// ["Alfred", "2015-06-12"] -// -// Since the `UserEvents` table's `PRIMARY KEY` clause names two -// columns, each `UserEvents` key has two elements; the first is the -// `UserName`, and the second is the `EventDate`. -// -// Key ranges with multiple components are interpreted -// lexicographically by component using the table or index key's declared -// sort order. For example, the following range returns all events for -// user `"Bob"` that occurred in the year 2015: -// -// "start_closed": ["Bob", "2015-01-01"] -// "end_closed": ["Bob", "2015-12-31"] -// -// Start and end keys can omit trailing key components. This affects the -// inclusion and exclusion of rows that exactly match the provided key -// components: if the key is closed, then rows that exactly match the -// provided components are included; if the key is open, then rows -// that exactly match are not included. -// -// For example, the following range includes all events for `"Bob"` that -// occurred during and after the year 2000: -// -// "start_closed": ["Bob", "2000-01-01"] -// "end_closed": ["Bob"] -// -// The next example retrieves all events for `"Bob"`: -// -// "start_closed": ["Bob"] -// "end_closed": ["Bob"] -// -// To retrieve events before the year 2000: -// -// "start_closed": ["Bob"] -// "end_open": ["Bob", "2000-01-01"] -// -// The following range includes all rows in the table: -// -// "start_closed": [] -// "end_closed": [] -// -// This range returns all users whose `UserName` begins with any -// character from A to C: -// -// "start_closed": ["A"] -// "end_open": ["D"] -// -// This range returns all users whose `UserName` begins with B: -// -// "start_closed": ["B"] -// "end_open": ["C"] -// -// Key ranges honor column sort order. For example, suppose a table is -// defined as follows: -// -// CREATE TABLE DescendingSortedTable { -// Key INT64, -// ... -// ) PRIMARY KEY(Key DESC); -// -// The following range retrieves all rows with key values between 1 -// and 100 inclusive: -// -// "start_closed": ["100"] -// "end_closed": ["1"] -// -// Note that 100 is passed as the start, and 1 is passed as the end, -// because `Key` is a descending column in the schema. -type KeyRange struct { - // The start key must be provided. It can be either closed or open. - // - // Types that are valid to be assigned to StartKeyType: - // *KeyRange_StartClosed - // *KeyRange_StartOpen - StartKeyType isKeyRange_StartKeyType `protobuf_oneof:"start_key_type"` - // The end key must be provided. It can be either closed or open. - // - // Types that are valid to be assigned to EndKeyType: - // *KeyRange_EndClosed - // *KeyRange_EndOpen - EndKeyType isKeyRange_EndKeyType `protobuf_oneof:"end_key_type"` -} - -func (m *KeyRange) Reset() { *m = KeyRange{} } -func (m *KeyRange) String() string { return proto.CompactTextString(m) } -func (*KeyRange) ProtoMessage() {} -func (*KeyRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isKeyRange_StartKeyType interface { - isKeyRange_StartKeyType() -} -type isKeyRange_EndKeyType interface { - isKeyRange_EndKeyType() -} - -type KeyRange_StartClosed struct { - StartClosed *google_protobuf1.ListValue `protobuf:"bytes,1,opt,name=start_closed,json=startClosed,oneof"` -} -type KeyRange_StartOpen struct { - StartOpen *google_protobuf1.ListValue `protobuf:"bytes,2,opt,name=start_open,json=startOpen,oneof"` -} -type KeyRange_EndClosed struct { - EndClosed *google_protobuf1.ListValue `protobuf:"bytes,3,opt,name=end_closed,json=endClosed,oneof"` -} -type KeyRange_EndOpen struct { - EndOpen *google_protobuf1.ListValue `protobuf:"bytes,4,opt,name=end_open,json=endOpen,oneof"` -} - -func (*KeyRange_StartClosed) isKeyRange_StartKeyType() {} -func (*KeyRange_StartOpen) isKeyRange_StartKeyType() {} -func (*KeyRange_EndClosed) isKeyRange_EndKeyType() {} -func (*KeyRange_EndOpen) isKeyRange_EndKeyType() {} - -func (m *KeyRange) GetStartKeyType() isKeyRange_StartKeyType { - if m != nil { - return m.StartKeyType - } - return nil -} -func (m *KeyRange) GetEndKeyType() isKeyRange_EndKeyType { - if m != nil { - return m.EndKeyType - } - return nil -} - -func (m *KeyRange) GetStartClosed() *google_protobuf1.ListValue { - if x, ok := m.GetStartKeyType().(*KeyRange_StartClosed); ok { - return x.StartClosed - } - return nil -} - -func (m *KeyRange) GetStartOpen() *google_protobuf1.ListValue { - if x, ok := m.GetStartKeyType().(*KeyRange_StartOpen); ok { - return x.StartOpen - } - return nil -} - -func (m *KeyRange) GetEndClosed() *google_protobuf1.ListValue { - if x, ok := m.GetEndKeyType().(*KeyRange_EndClosed); ok { - return x.EndClosed - } - return nil -} - -func (m *KeyRange) GetEndOpen() *google_protobuf1.ListValue { - if x, ok := m.GetEndKeyType().(*KeyRange_EndOpen); ok { - return x.EndOpen - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*KeyRange) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _KeyRange_OneofMarshaler, _KeyRange_OneofUnmarshaler, _KeyRange_OneofSizer, []interface{}{ - (*KeyRange_StartClosed)(nil), - (*KeyRange_StartOpen)(nil), - (*KeyRange_EndClosed)(nil), - (*KeyRange_EndOpen)(nil), - } -} - -func _KeyRange_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*KeyRange) - // start_key_type - switch x := m.StartKeyType.(type) { - case *KeyRange_StartClosed: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StartClosed); err != nil { - return err - } - case *KeyRange_StartOpen: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.StartOpen); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("KeyRange.StartKeyType has unexpected type %T", x) - } - // end_key_type - switch x := m.EndKeyType.(type) { - case *KeyRange_EndClosed: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.EndClosed); err != nil { - return err - } - case *KeyRange_EndOpen: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.EndOpen); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("KeyRange.EndKeyType has unexpected type %T", x) - } - return nil -} - -func _KeyRange_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*KeyRange) - switch tag { - case 1: // start_key_type.start_closed - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.ListValue) - err := b.DecodeMessage(msg) - m.StartKeyType = &KeyRange_StartClosed{msg} - return true, err - case 2: // start_key_type.start_open - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.ListValue) - err := b.DecodeMessage(msg) - m.StartKeyType = &KeyRange_StartOpen{msg} - return true, err - case 3: // end_key_type.end_closed - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.ListValue) - err := b.DecodeMessage(msg) - m.EndKeyType = &KeyRange_EndClosed{msg} - return true, err - case 4: // end_key_type.end_open - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf1.ListValue) - err := b.DecodeMessage(msg) - m.EndKeyType = &KeyRange_EndOpen{msg} - return true, err - default: - return false, nil - } -} - -func _KeyRange_OneofSizer(msg proto.Message) (n int) { - m := msg.(*KeyRange) - // start_key_type - switch x := m.StartKeyType.(type) { - case *KeyRange_StartClosed: - s := proto.Size(x.StartClosed) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *KeyRange_StartOpen: - s := proto.Size(x.StartOpen) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // end_key_type - switch x := m.EndKeyType.(type) { - case *KeyRange_EndClosed: - s := proto.Size(x.EndClosed) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *KeyRange_EndOpen: - s := proto.Size(x.EndOpen) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All -// the keys are expected to be in the same table or index. The keys need -// not be sorted in any particular way. -// -// If the same key is specified multiple times in the set (for example -// if two ranges, two keys, or a key and a range overlap), Cloud Spanner -// behaves as if the key were only specified once. -type KeySet struct { - // A list of specific keys. Entries in `keys` should have exactly as - // many elements as there are columns in the primary or index key - // with which this `KeySet` is used. Individual key values are - // encoded as described [here][google.spanner.v1.TypeCode]. - Keys []*google_protobuf1.ListValue `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"` - // A list of key ranges. See [KeyRange][google.spanner.v1.KeyRange] for more information about - // key range specifications. - Ranges []*KeyRange `protobuf:"bytes,2,rep,name=ranges" json:"ranges,omitempty"` - // For convenience `all` can be set to `true` to indicate that this - // `KeySet` matches all keys in the table or index. Note that any keys - // specified in `keys` or `ranges` are only yielded once. - All bool `protobuf:"varint,3,opt,name=all" json:"all,omitempty"` -} - -func (m *KeySet) Reset() { *m = KeySet{} } -func (m *KeySet) String() string { return proto.CompactTextString(m) } -func (*KeySet) ProtoMessage() {} -func (*KeySet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *KeySet) GetKeys() []*google_protobuf1.ListValue { - if m != nil { - return m.Keys - } - return nil -} - -func (m *KeySet) GetRanges() []*KeyRange { - if m != nil { - return m.Ranges - } - return nil -} - -func (m *KeySet) GetAll() bool { - if m != nil { - return m.All - } - return false -} - -func init() { - proto.RegisterType((*KeyRange)(nil), "google.spanner.v1.KeyRange") - proto.RegisterType((*KeySet)(nil), "google.spanner.v1.KeySet") -} - -func init() { proto.RegisterFile("google/spanner/v1/keys.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 371 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x6b, 0xea, 0x30, - 0x1c, 0xc7, 0x5f, 0xab, 0xf8, 0x34, 0x8a, 0xf8, 0x0a, 0x8f, 0x57, 0x7c, 0x3b, 0x88, 0xa7, 0x9d, - 0x52, 0x3a, 0x0f, 0x1b, 0x78, 0x18, 0xd4, 0xc3, 0x06, 0x0e, 0x26, 0x15, 0x3c, 0x0c, 0x41, 0xa2, - 0xfd, 0xad, 0x14, 0xb3, 0x24, 0x34, 0xa9, 0xd0, 0xd3, 0xfe, 0x87, 0xfd, 0x05, 0x3b, 0xef, 0x4f, - 0xd9, 0x5f, 0x35, 0x92, 0xa6, 0x63, 0x20, 0x6c, 0xde, 0x12, 0x3e, 0xbf, 0xcf, 0xf7, 0x9b, 0x26, - 0x45, 0x67, 0x29, 0xe7, 0x29, 0x85, 0x40, 0x0a, 0xc2, 0x18, 0xe4, 0xc1, 0x21, 0x0c, 0xf6, 0x50, - 0x4a, 0x2c, 0x72, 0xae, 0xb8, 0xf7, 0xa7, 0xa2, 0xd8, 0x52, 0x7c, 0x08, 0x87, 0xb5, 0x40, 0x44, - 0x16, 0x10, 0xc6, 0xb8, 0x22, 0x2a, 0xe3, 0xcc, 0x0a, 0x9f, 0xd4, 0xec, 0xb6, 0xc5, 0x63, 0x20, - 0x55, 0x5e, 0xec, 0x54, 0x45, 0xc7, 0xaf, 0x2e, 0x6a, 0xcf, 0xa1, 0x8c, 0x09, 0x4b, 0xc1, 0xbb, - 0x46, 0x3d, 0xa9, 0x48, 0xae, 0x36, 0x3b, 0xca, 0x25, 0x24, 0xbe, 0x33, 0x72, 0xce, 0xbb, 0x17, - 0x43, 0x6c, 0x2b, 0xeb, 0x04, 0x7c, 0x97, 0x49, 0xb5, 0x22, 0xb4, 0x80, 0xdb, 0x5f, 0x71, 0xd7, - 0x18, 0x33, 0x23, 0x78, 0x53, 0x84, 0xaa, 0x00, 0x2e, 0x80, 0xf9, 0xee, 0x09, 0x7a, 0xc7, 0xcc, - 0xdf, 0x0b, 0x60, 0x5a, 0x06, 0x96, 0xd4, 0xdd, 0x8d, 0x1f, 0x65, 0x27, 0xee, 0x00, 0x4b, 0x6c, - 0xf3, 0x25, 0x6a, 0x6b, 0xd9, 0xf4, 0x36, 0x4f, 0x50, 0x7f, 0x03, 0x4b, 0x74, 0x6b, 0x34, 0x40, - 0xfd, 0xea, 0xc8, 0x7b, 0x28, 0x37, 0xaa, 0x14, 0x10, 0xf5, 0x51, 0x4f, 0x47, 0xd5, 0xfb, 0xf1, - 0x33, 0x6a, 0xcd, 0xa1, 0x5c, 0x82, 0xf2, 0x30, 0x6a, 0xea, 0x97, 0xf0, 0x9d, 0x51, 0xe3, 0xfb, - 0x82, 0xd8, 0xcc, 0x79, 0x13, 0xd4, 0xca, 0xf5, 0xc5, 0x4a, 0xdf, 0x35, 0xc6, 0x7f, 0x7c, 0xf4, - 0x78, 0xb8, 0xbe, 0xfc, 0xd8, 0x8e, 0x7a, 0x03, 0xd4, 0x20, 0x94, 0x9a, 0xef, 0x6f, 0xc7, 0x7a, - 0x19, 0xbd, 0x38, 0xe8, 0xef, 0x8e, 0x3f, 0x1d, 0xcb, 0x51, 0x67, 0x0e, 0xa5, 0x5c, 0xe8, 0xfa, - 0x85, 0xf3, 0x70, 0x65, 0x79, 0xca, 0x29, 0x61, 0x29, 0xe6, 0x79, 0x1a, 0xa4, 0xc0, 0xcc, 0xe1, - 0x82, 0x0a, 0x11, 0x91, 0xc9, 0x2f, 0xbf, 0xd5, 0xd4, 0x2e, 0xdf, 0xdc, 0x7f, 0x37, 0x95, 0x3a, - 0xa3, 0xbc, 0x48, 0xf0, 0xd2, 0x16, 0xac, 0xc2, 0xf7, 0x9a, 0xac, 0x0d, 0x59, 0x5b, 0xb2, 0x5e, - 0x85, 0xdb, 0x96, 0x09, 0x9e, 0x7c, 0x04, 0x00, 0x00, 0xff, 0xff, 0x27, 0x88, 0xea, 0x11, 0xae, - 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/v1/mutation.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/v1/mutation.pb.go deleted file mode 100644 index 2f827795..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/v1/mutation.pb.go +++ /dev/null @@ -1,349 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/v1/mutation.proto - -package spanner - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/struct" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// A modification to one or more Cloud Spanner rows. Mutations can be -// applied to a Cloud Spanner database by sending them in a -// [Commit][google.spanner.v1.Spanner.Commit] call. -type Mutation struct { - // Required. The operation to perform. - // - // Types that are valid to be assigned to Operation: - // *Mutation_Insert - // *Mutation_Update - // *Mutation_InsertOrUpdate - // *Mutation_Replace - // *Mutation_Delete_ - Operation isMutation_Operation `protobuf_oneof:"operation"` -} - -func (m *Mutation) Reset() { *m = Mutation{} } -func (m *Mutation) String() string { return proto.CompactTextString(m) } -func (*Mutation) ProtoMessage() {} -func (*Mutation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -type isMutation_Operation interface { - isMutation_Operation() -} - -type Mutation_Insert struct { - Insert *Mutation_Write `protobuf:"bytes,1,opt,name=insert,oneof"` -} -type Mutation_Update struct { - Update *Mutation_Write `protobuf:"bytes,2,opt,name=update,oneof"` -} -type Mutation_InsertOrUpdate struct { - InsertOrUpdate *Mutation_Write `protobuf:"bytes,3,opt,name=insert_or_update,json=insertOrUpdate,oneof"` -} -type Mutation_Replace struct { - Replace *Mutation_Write `protobuf:"bytes,4,opt,name=replace,oneof"` -} -type Mutation_Delete_ struct { - Delete *Mutation_Delete `protobuf:"bytes,5,opt,name=delete,oneof"` -} - -func (*Mutation_Insert) isMutation_Operation() {} -func (*Mutation_Update) isMutation_Operation() {} -func (*Mutation_InsertOrUpdate) isMutation_Operation() {} -func (*Mutation_Replace) isMutation_Operation() {} -func (*Mutation_Delete_) isMutation_Operation() {} - -func (m *Mutation) GetOperation() isMutation_Operation { - if m != nil { - return m.Operation - } - return nil -} - -func (m *Mutation) GetInsert() *Mutation_Write { - if x, ok := m.GetOperation().(*Mutation_Insert); ok { - return x.Insert - } - return nil -} - -func (m *Mutation) GetUpdate() *Mutation_Write { - if x, ok := m.GetOperation().(*Mutation_Update); ok { - return x.Update - } - return nil -} - -func (m *Mutation) GetInsertOrUpdate() *Mutation_Write { - if x, ok := m.GetOperation().(*Mutation_InsertOrUpdate); ok { - return x.InsertOrUpdate - } - return nil -} - -func (m *Mutation) GetReplace() *Mutation_Write { - if x, ok := m.GetOperation().(*Mutation_Replace); ok { - return x.Replace - } - return nil -} - -func (m *Mutation) GetDelete() *Mutation_Delete { - if x, ok := m.GetOperation().(*Mutation_Delete_); ok { - return x.Delete - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Mutation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Mutation_OneofMarshaler, _Mutation_OneofUnmarshaler, _Mutation_OneofSizer, []interface{}{ - (*Mutation_Insert)(nil), - (*Mutation_Update)(nil), - (*Mutation_InsertOrUpdate)(nil), - (*Mutation_Replace)(nil), - (*Mutation_Delete_)(nil), - } -} - -func _Mutation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Mutation) - // operation - switch x := m.Operation.(type) { - case *Mutation_Insert: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Insert); err != nil { - return err - } - case *Mutation_Update: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Update); err != nil { - return err - } - case *Mutation_InsertOrUpdate: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InsertOrUpdate); err != nil { - return err - } - case *Mutation_Replace: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Replace); err != nil { - return err - } - case *Mutation_Delete_: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Delete); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Mutation.Operation has unexpected type %T", x) - } - return nil -} - -func _Mutation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Mutation) - switch tag { - case 1: // operation.insert - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_Write) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Insert{msg} - return true, err - case 2: // operation.update - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_Write) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Update{msg} - return true, err - case 3: // operation.insert_or_update - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_Write) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_InsertOrUpdate{msg} - return true, err - case 4: // operation.replace - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_Write) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Replace{msg} - return true, err - case 5: // operation.delete - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mutation_Delete) - err := b.DecodeMessage(msg) - m.Operation = &Mutation_Delete_{msg} - return true, err - default: - return false, nil - } -} - -func _Mutation_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Mutation) - // operation - switch x := m.Operation.(type) { - case *Mutation_Insert: - s := proto.Size(x.Insert) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Update: - s := proto.Size(x.Update) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_InsertOrUpdate: - s := proto.Size(x.InsertOrUpdate) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Replace: - s := proto.Size(x.Replace) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Mutation_Delete_: - s := proto.Size(x.Delete) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Arguments to [insert][google.spanner.v1.Mutation.insert], [update][google.spanner.v1.Mutation.update], [insert_or_update][google.spanner.v1.Mutation.insert_or_update], and -// [replace][google.spanner.v1.Mutation.replace] operations. -type Mutation_Write struct { - // Required. The table whose rows will be written. - Table string `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"` - // The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written. - // - // The list of columns must contain enough columns to allow - // Cloud Spanner to derive values for all primary key columns in the - // row(s) to be modified. - Columns []string `protobuf:"bytes,2,rep,name=columns" json:"columns,omitempty"` - // The values to be written. `values` can contain more than one - // list of values. If it does, then multiple rows are written, one - // for each entry in `values`. Each list in `values` must have - // exactly as many entries as there are entries in [columns][google.spanner.v1.Mutation.Write.columns] - // above. Sending multiple lists is equivalent to sending multiple - // `Mutation`s, each containing one `values` entry and repeating - // [table][google.spanner.v1.Mutation.Write.table] and [columns][google.spanner.v1.Mutation.Write.columns]. Individual values in each list are - // encoded as described [here][google.spanner.v1.TypeCode]. - Values []*google_protobuf1.ListValue `protobuf:"bytes,3,rep,name=values" json:"values,omitempty"` -} - -func (m *Mutation_Write) Reset() { *m = Mutation_Write{} } -func (m *Mutation_Write) String() string { return proto.CompactTextString(m) } -func (*Mutation_Write) ProtoMessage() {} -func (*Mutation_Write) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 0} } - -func (m *Mutation_Write) GetTable() string { - if m != nil { - return m.Table - } - return "" -} - -func (m *Mutation_Write) GetColumns() []string { - if m != nil { - return m.Columns - } - return nil -} - -func (m *Mutation_Write) GetValues() []*google_protobuf1.ListValue { - if m != nil { - return m.Values - } - return nil -} - -// Arguments to [delete][google.spanner.v1.Mutation.delete] operations. -type Mutation_Delete struct { - // Required. The table whose rows will be deleted. - Table string `protobuf:"bytes,1,opt,name=table" json:"table,omitempty"` - // Required. The primary keys of the rows within [table][google.spanner.v1.Mutation.Delete.table] to delete. - // Delete is idempotent. The transaction will succeed even if some or all - // rows do not exist. - KeySet *KeySet `protobuf:"bytes,2,opt,name=key_set,json=keySet" json:"key_set,omitempty"` -} - -func (m *Mutation_Delete) Reset() { *m = Mutation_Delete{} } -func (m *Mutation_Delete) String() string { return proto.CompactTextString(m) } -func (*Mutation_Delete) ProtoMessage() {} -func (*Mutation_Delete) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0, 1} } - -func (m *Mutation_Delete) GetTable() string { - if m != nil { - return m.Table - } - return "" -} - -func (m *Mutation_Delete) GetKeySet() *KeySet { - if m != nil { - return m.KeySet - } - return nil -} - -func init() { - proto.RegisterType((*Mutation)(nil), "google.spanner.v1.Mutation") - proto.RegisterType((*Mutation_Write)(nil), "google.spanner.v1.Mutation.Write") - proto.RegisterType((*Mutation_Delete)(nil), "google.spanner.v1.Mutation.Delete") -} - -func init() { proto.RegisterFile("google/spanner/v1/mutation.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 413 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xd1, 0xea, 0xd3, 0x30, - 0x14, 0xc6, 0xed, 0xba, 0x75, 0x2e, 0x43, 0xd1, 0xa2, 0x58, 0x8b, 0x17, 0x75, 0x57, 0xbb, 0x4a, - 0x69, 0xbd, 0x11, 0xa6, 0x37, 0x53, 0x50, 0xd0, 0xe1, 0xe8, 0x70, 0x82, 0x0c, 0x46, 0xd6, 0x1d, - 0x4b, 0x69, 0x96, 0x94, 0x24, 0x1d, 0xec, 0x45, 0xbc, 0xf4, 0x01, 0x7c, 0x14, 0x9f, 0x4a, 0x9a, - 0xa4, 0x32, 0x9c, 0xfe, 0xd9, 0xff, 0xaa, 0x3d, 0x7c, 0xdf, 0xef, 0x3b, 0xe7, 0x24, 0x41, 0x51, - 0xc1, 0x79, 0x41, 0x21, 0x96, 0x35, 0x61, 0x0c, 0x44, 0x7c, 0x4c, 0xe2, 0x43, 0xa3, 0x88, 0x2a, - 0x39, 0xc3, 0xb5, 0xe0, 0x8a, 0xfb, 0x0f, 0x8d, 0x03, 0x5b, 0x07, 0x3e, 0x26, 0xe1, 0x33, 0x0b, - 0x91, 0xba, 0x8c, 0x09, 0x63, 0xdc, 0xf8, 0xa5, 0x01, 0xfe, 0xa8, 0xba, 0xda, 0x35, 0xdf, 0x62, - 0xa9, 0x44, 0x93, 0xab, 0xbf, 0xd4, 0xb3, 0x86, 0x15, 0x9c, 0x2c, 0x3b, 0xf9, 0xd1, 0x47, 0x77, - 0x17, 0xb6, 0xbf, 0x3f, 0x43, 0x5e, 0xc9, 0x24, 0x08, 0x15, 0x38, 0x91, 0x33, 0x1d, 0xa7, 0xcf, - 0xf1, 0xc5, 0x28, 0xb8, 0x33, 0xe3, 0x2f, 0xa2, 0x54, 0xf0, 0xfe, 0x4e, 0x66, 0x91, 0x16, 0x6e, - 0xea, 0x3d, 0x51, 0x10, 0xf4, 0x6e, 0x01, 0x1b, 0xc4, 0x5f, 0xa0, 0x07, 0x26, 0x66, 0xcb, 0xc5, - 0xd6, 0xc6, 0xb8, 0xd7, 0xc7, 0xdc, 0x37, 0xf0, 0x27, 0xf1, 0xd9, 0xc4, 0xbd, 0x46, 0x43, 0x01, - 0x35, 0x25, 0x39, 0x04, 0xfd, 0xeb, 0x53, 0x3a, 0xc6, 0x7f, 0x85, 0xbc, 0x3d, 0x50, 0x50, 0x10, - 0x0c, 0x34, 0x3d, 0xb9, 0x89, 0x7e, 0xab, 0x9d, 0xed, 0x2e, 0x86, 0x09, 0x2b, 0x34, 0xd0, 0x89, - 0xfe, 0x23, 0x34, 0x50, 0x64, 0x47, 0x41, 0x9f, 0xe6, 0x28, 0x33, 0x85, 0x1f, 0xa0, 0x61, 0xce, - 0x69, 0x73, 0x60, 0x32, 0xe8, 0x45, 0xee, 0x74, 0x94, 0x75, 0xa5, 0x9f, 0x22, 0xef, 0x48, 0x68, - 0x03, 0x32, 0x70, 0x23, 0x77, 0x3a, 0x4e, 0xc3, 0xae, 0x6d, 0x77, 0xb1, 0xf8, 0x63, 0x29, 0xd5, - 0xba, 0xb5, 0x64, 0xd6, 0x19, 0x66, 0xc8, 0x33, 0x03, 0xfc, 0xa7, 0x5b, 0x8a, 0x86, 0x15, 0x9c, - 0xb6, 0x12, 0x94, 0xbd, 0x96, 0xa7, 0xff, 0xd8, 0xe5, 0x03, 0x9c, 0x56, 0xa0, 0x32, 0xaf, 0xd2, - 0xdf, 0xf9, 0x18, 0x8d, 0x78, 0x0d, 0x42, 0xaf, 0x37, 0xff, 0xee, 0xa0, 0xc7, 0x39, 0x3f, 0x5c, - 0x52, 0xf3, 0x7b, 0xdd, 0x11, 0x2c, 0xdb, 0xf1, 0x96, 0xce, 0xd7, 0x97, 0xd6, 0x53, 0x70, 0x4a, - 0x58, 0x81, 0xb9, 0x28, 0xe2, 0x02, 0x98, 0x1e, 0x3e, 0x36, 0x12, 0xa9, 0x4b, 0x79, 0xf6, 0x10, - 0x67, 0xf6, 0xf7, 0x67, 0xef, 0xc9, 0x3b, 0x83, 0xbe, 0xa1, 0xbc, 0xd9, 0xe3, 0x95, 0x6d, 0xb2, - 0x4e, 0x7e, 0x75, 0xca, 0x46, 0x2b, 0x1b, 0xab, 0x6c, 0xd6, 0xc9, 0xce, 0xd3, 0xc1, 0x2f, 0x7e, - 0x07, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x69, 0x1c, 0xbc, 0x51, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/v1/query_plan.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/v1/query_plan.pb.go deleted file mode 100644 index b42db0fe..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/v1/query_plan.pb.go +++ /dev/null @@ -1,286 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/v1/query_plan.proto - -package spanner - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/struct" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The kind of [PlanNode][google.spanner.v1.PlanNode]. Distinguishes between the two different kinds of -// nodes that can appear in a query plan. -type PlanNode_Kind int32 - -const ( - // Not specified. - PlanNode_KIND_UNSPECIFIED PlanNode_Kind = 0 - // Denotes a Relational operator node in the expression tree. Relational - // operators represent iterative processing of rows during query execution. - // For example, a `TableScan` operation that reads rows from a table. - PlanNode_RELATIONAL PlanNode_Kind = 1 - // Denotes a Scalar node in the expression tree. Scalar nodes represent - // non-iterable entities in the query plan. For example, constants or - // arithmetic operators appearing inside predicate expressions or references - // to column names. - PlanNode_SCALAR PlanNode_Kind = 2 -) - -var PlanNode_Kind_name = map[int32]string{ - 0: "KIND_UNSPECIFIED", - 1: "RELATIONAL", - 2: "SCALAR", -} -var PlanNode_Kind_value = map[string]int32{ - "KIND_UNSPECIFIED": 0, - "RELATIONAL": 1, - "SCALAR": 2, -} - -func (x PlanNode_Kind) String() string { - return proto.EnumName(PlanNode_Kind_name, int32(x)) -} -func (PlanNode_Kind) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -// Node information for nodes appearing in a [QueryPlan.plan_nodes][google.spanner.v1.QueryPlan.plan_nodes]. -type PlanNode struct { - // The `PlanNode`'s index in [node list][google.spanner.v1.QueryPlan.plan_nodes]. - Index int32 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` - // Used to determine the type of node. May be needed for visualizing - // different kinds of nodes differently. For example, If the node is a - // [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] node, it will have a condensed representation - // which can be used to directly embed a description of the node in its - // parent. - Kind PlanNode_Kind `protobuf:"varint,2,opt,name=kind,enum=google.spanner.v1.PlanNode_Kind" json:"kind,omitempty"` - // The display name for the node. - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName" json:"display_name,omitempty"` - // List of child node `index`es and their relationship to this parent. - ChildLinks []*PlanNode_ChildLink `protobuf:"bytes,4,rep,name=child_links,json=childLinks" json:"child_links,omitempty"` - // Condensed representation for [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] nodes. - ShortRepresentation *PlanNode_ShortRepresentation `protobuf:"bytes,5,opt,name=short_representation,json=shortRepresentation" json:"short_representation,omitempty"` - // Attributes relevant to the node contained in a group of key-value pairs. - // For example, a Parameter Reference node could have the following - // information in its metadata: - // - // { - // "parameter_reference": "param1", - // "parameter_type": "array" - // } - Metadata *google_protobuf1.Struct `protobuf:"bytes,6,opt,name=metadata" json:"metadata,omitempty"` - // The execution statistics associated with the node, contained in a group of - // key-value pairs. Only present if the plan was returned as a result of a - // profile query. For example, number of executions, number of rows/time per - // execution etc. - ExecutionStats *google_protobuf1.Struct `protobuf:"bytes,7,opt,name=execution_stats,json=executionStats" json:"execution_stats,omitempty"` -} - -func (m *PlanNode) Reset() { *m = PlanNode{} } -func (m *PlanNode) String() string { return proto.CompactTextString(m) } -func (*PlanNode) ProtoMessage() {} -func (*PlanNode) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *PlanNode) GetIndex() int32 { - if m != nil { - return m.Index - } - return 0 -} - -func (m *PlanNode) GetKind() PlanNode_Kind { - if m != nil { - return m.Kind - } - return PlanNode_KIND_UNSPECIFIED -} - -func (m *PlanNode) GetDisplayName() string { - if m != nil { - return m.DisplayName - } - return "" -} - -func (m *PlanNode) GetChildLinks() []*PlanNode_ChildLink { - if m != nil { - return m.ChildLinks - } - return nil -} - -func (m *PlanNode) GetShortRepresentation() *PlanNode_ShortRepresentation { - if m != nil { - return m.ShortRepresentation - } - return nil -} - -func (m *PlanNode) GetMetadata() *google_protobuf1.Struct { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *PlanNode) GetExecutionStats() *google_protobuf1.Struct { - if m != nil { - return m.ExecutionStats - } - return nil -} - -// Metadata associated with a parent-child relationship appearing in a -// [PlanNode][google.spanner.v1.PlanNode]. -type PlanNode_ChildLink struct { - // The node to which the link points. - ChildIndex int32 `protobuf:"varint,1,opt,name=child_index,json=childIndex" json:"child_index,omitempty"` - // The type of the link. For example, in Hash Joins this could be used to - // distinguish between the build child and the probe child, or in the case - // of the child being an output variable, to represent the tag associated - // with the output variable. - Type string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"` - // Only present if the child node is [SCALAR][google.spanner.v1.PlanNode.Kind.SCALAR] and corresponds - // to an output variable of the parent node. The field carries the name of - // the output variable. - // For example, a `TableScan` operator that reads rows from a table will - // have child links to the `SCALAR` nodes representing the output variables - // created for each column that is read by the operator. The corresponding - // `variable` fields will be set to the variable names assigned to the - // columns. - Variable string `protobuf:"bytes,3,opt,name=variable" json:"variable,omitempty"` -} - -func (m *PlanNode_ChildLink) Reset() { *m = PlanNode_ChildLink{} } -func (m *PlanNode_ChildLink) String() string { return proto.CompactTextString(m) } -func (*PlanNode_ChildLink) ProtoMessage() {} -func (*PlanNode_ChildLink) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 0} } - -func (m *PlanNode_ChildLink) GetChildIndex() int32 { - if m != nil { - return m.ChildIndex - } - return 0 -} - -func (m *PlanNode_ChildLink) GetType() string { - if m != nil { - return m.Type - } - return "" -} - -func (m *PlanNode_ChildLink) GetVariable() string { - if m != nil { - return m.Variable - } - return "" -} - -// Condensed representation of a node and its subtree. Only present for -// `SCALAR` [PlanNode(s)][google.spanner.v1.PlanNode]. -type PlanNode_ShortRepresentation struct { - // A string representation of the expression subtree rooted at this node. - Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` - // A mapping of (subquery variable name) -> (subquery node id) for cases - // where the `description` string of this node references a `SCALAR` - // subquery contained in the expression subtree rooted at this node. The - // referenced `SCALAR` subquery may not necessarily be a direct child of - // this node. - Subqueries map[string]int32 `protobuf:"bytes,2,rep,name=subqueries" json:"subqueries,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` -} - -func (m *PlanNode_ShortRepresentation) Reset() { *m = PlanNode_ShortRepresentation{} } -func (m *PlanNode_ShortRepresentation) String() string { return proto.CompactTextString(m) } -func (*PlanNode_ShortRepresentation) ProtoMessage() {} -func (*PlanNode_ShortRepresentation) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0, 1} } - -func (m *PlanNode_ShortRepresentation) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *PlanNode_ShortRepresentation) GetSubqueries() map[string]int32 { - if m != nil { - return m.Subqueries - } - return nil -} - -// Contains an ordered list of nodes appearing in the query plan. -type QueryPlan struct { - // The nodes in the query plan. Plan nodes are returned in pre-order starting - // with the plan root. Each [PlanNode][google.spanner.v1.PlanNode]'s `id` corresponds to its index in - // `plan_nodes`. - PlanNodes []*PlanNode `protobuf:"bytes,1,rep,name=plan_nodes,json=planNodes" json:"plan_nodes,omitempty"` -} - -func (m *QueryPlan) Reset() { *m = QueryPlan{} } -func (m *QueryPlan) String() string { return proto.CompactTextString(m) } -func (*QueryPlan) ProtoMessage() {} -func (*QueryPlan) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *QueryPlan) GetPlanNodes() []*PlanNode { - if m != nil { - return m.PlanNodes - } - return nil -} - -func init() { - proto.RegisterType((*PlanNode)(nil), "google.spanner.v1.PlanNode") - proto.RegisterType((*PlanNode_ChildLink)(nil), "google.spanner.v1.PlanNode.ChildLink") - proto.RegisterType((*PlanNode_ShortRepresentation)(nil), "google.spanner.v1.PlanNode.ShortRepresentation") - proto.RegisterType((*QueryPlan)(nil), "google.spanner.v1.QueryPlan") - proto.RegisterEnum("google.spanner.v1.PlanNode_Kind", PlanNode_Kind_name, PlanNode_Kind_value) -} - -func init() { proto.RegisterFile("google/spanner/v1/query_plan.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 604 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xdd, 0x6e, 0xd3, 0x4c, - 0x10, 0xfd, 0x9c, 0x26, 0xf9, 0x9a, 0x09, 0x4a, 0xc3, 0xb6, 0xa8, 0x56, 0x40, 0xc2, 0x44, 0x42, - 0xca, 0x95, 0xad, 0xb4, 0x5c, 0x54, 0x45, 0x08, 0xd2, 0x34, 0xad, 0xa2, 0x46, 0x21, 0xac, 0xa1, - 0x17, 0x28, 0x92, 0xb5, 0x89, 0x97, 0x74, 0x15, 0x67, 0xd7, 0x78, 0xed, 0xa8, 0x79, 0x09, 0x6e, - 0x79, 0x07, 0x1e, 0x85, 0x17, 0xe0, 0x75, 0xd0, 0xae, 0x7f, 0x28, 0x14, 0x45, 0xe2, 0x6e, 0x66, - 0xe7, 0xcc, 0xf1, 0xce, 0x39, 0xb3, 0x86, 0xf6, 0x42, 0x88, 0x45, 0x40, 0x1d, 0x19, 0x12, 0xce, - 0x69, 0xe4, 0xac, 0xbb, 0xce, 0xe7, 0x84, 0x46, 0x1b, 0x2f, 0x0c, 0x08, 0xb7, 0xc3, 0x48, 0xc4, - 0x02, 0x3d, 0x4c, 0x31, 0x76, 0x86, 0xb1, 0xd7, 0xdd, 0xd6, 0x93, 0xac, 0x8d, 0x84, 0xcc, 0x21, - 0x9c, 0x8b, 0x98, 0xc4, 0x4c, 0x70, 0x99, 0x36, 0x14, 0x55, 0x9d, 0xcd, 0x92, 0x4f, 0x8e, 0x8c, - 0xa3, 0x64, 0x1e, 0xa7, 0xd5, 0xf6, 0x97, 0x2a, 0xec, 0x4e, 0x02, 0xc2, 0xc7, 0xc2, 0xa7, 0xe8, - 0x00, 0x2a, 0x8c, 0xfb, 0xf4, 0xd6, 0x34, 0x2c, 0xa3, 0x53, 0xc1, 0x69, 0x82, 0x5e, 0x40, 0x79, - 0xc9, 0xb8, 0x6f, 0x96, 0x2c, 0xa3, 0xd3, 0x38, 0xb2, 0xec, 0x7b, 0x17, 0xb0, 0x73, 0x02, 0xfb, - 0x8a, 0x71, 0x1f, 0x6b, 0x34, 0x7a, 0x06, 0x0f, 0x7c, 0x26, 0xc3, 0x80, 0x6c, 0x3c, 0x4e, 0x56, - 0xd4, 0xdc, 0xb1, 0x8c, 0x4e, 0x0d, 0xd7, 0xb3, 0xb3, 0x31, 0x59, 0x51, 0x74, 0x01, 0xf5, 0xf9, - 0x0d, 0x0b, 0x7c, 0x2f, 0x60, 0x7c, 0x29, 0xcd, 0xb2, 0xb5, 0xd3, 0xa9, 0x1f, 0x3d, 0xdf, 0xc6, - 0xdf, 0x57, 0xf0, 0x11, 0xe3, 0x4b, 0x0c, 0xf3, 0x3c, 0x94, 0x68, 0x06, 0x07, 0xf2, 0x46, 0x44, - 0xb1, 0x17, 0xd1, 0x30, 0xa2, 0x92, 0xf2, 0x54, 0x00, 0xb3, 0x62, 0x19, 0x9d, 0xfa, 0x91, 0xb3, - 0x8d, 0xd0, 0x55, 0x7d, 0xf8, 0xb7, 0x36, 0xbc, 0x2f, 0xef, 0x1f, 0xa2, 0x63, 0xd8, 0x5d, 0xd1, - 0x98, 0xf8, 0x24, 0x26, 0x66, 0x55, 0xf3, 0x1e, 0xe6, 0xbc, 0xb9, 0xb0, 0xb6, 0xab, 0x85, 0xc5, - 0x05, 0x10, 0xbd, 0x81, 0x3d, 0x7a, 0x4b, 0xe7, 0x89, 0x62, 0xf0, 0x64, 0x4c, 0x62, 0x69, 0xfe, - 0xbf, 0xbd, 0xb7, 0x51, 0xe0, 0x5d, 0x05, 0x6f, 0x4d, 0xa1, 0x56, 0xcc, 0x8c, 0x9e, 0xe6, 0x7a, - 0xdd, 0x35, 0x29, 0x15, 0x62, 0xa8, 0x9d, 0x42, 0x50, 0x8e, 0x37, 0x21, 0xd5, 0x4e, 0xd5, 0xb0, - 0x8e, 0x51, 0x0b, 0x76, 0xd7, 0x24, 0x62, 0x64, 0x16, 0xe4, 0x1e, 0x14, 0x79, 0xeb, 0x87, 0x01, - 0xfb, 0x7f, 0x51, 0x00, 0x59, 0x50, 0xf7, 0xa9, 0x9c, 0x47, 0x2c, 0xd4, 0x3a, 0x1a, 0x99, 0x75, - 0xbf, 0x8e, 0x90, 0x07, 0x20, 0x93, 0x99, 0x5a, 0x4e, 0x46, 0xa5, 0x59, 0xd2, 0xce, 0xbd, 0xfe, - 0x47, 0xa1, 0x6d, 0xb7, 0x60, 0x18, 0xf0, 0x38, 0xda, 0xe0, 0x3b, 0x94, 0xad, 0x57, 0xb0, 0xf7, - 0x47, 0x19, 0x35, 0x61, 0x67, 0x49, 0x37, 0xd9, 0x6d, 0x54, 0xa8, 0xf6, 0x75, 0x4d, 0x82, 0x24, - 0x1d, 0xb8, 0x82, 0xd3, 0xe4, 0xb4, 0x74, 0x62, 0xb4, 0x4f, 0xa0, 0xac, 0x76, 0x11, 0x1d, 0x40, - 0xf3, 0x6a, 0x38, 0x3e, 0xf7, 0x3e, 0x8c, 0xdd, 0xc9, 0xa0, 0x3f, 0xbc, 0x18, 0x0e, 0xce, 0x9b, - 0xff, 0xa1, 0x06, 0x00, 0x1e, 0x8c, 0x7a, 0xef, 0x87, 0x6f, 0xc7, 0xbd, 0x51, 0xd3, 0x40, 0x00, - 0x55, 0xb7, 0xdf, 0x1b, 0xf5, 0x70, 0xb3, 0xd4, 0xbe, 0x84, 0xda, 0x3b, 0xf5, 0xe6, 0xd4, 0xcd, - 0xd1, 0x29, 0x80, 0x7a, 0x7a, 0x1e, 0x17, 0x3e, 0x95, 0xa6, 0xa1, 0xc7, 0x7c, 0xbc, 0x65, 0x4c, - 0x5c, 0x0b, 0xb3, 0x48, 0x9e, 0x7d, 0x35, 0xe0, 0xd1, 0x5c, 0xac, 0xee, 0xa3, 0xcf, 0x1a, 0xc5, - 0x07, 0x26, 0xca, 0xfe, 0x89, 0xf1, 0xf1, 0x24, 0x03, 0x2d, 0x44, 0x40, 0xf8, 0xc2, 0x16, 0xd1, - 0xc2, 0x59, 0x50, 0xae, 0x97, 0xc3, 0x49, 0x4b, 0x24, 0x64, 0xf2, 0xce, 0x7f, 0xe1, 0x65, 0x16, - 0x7e, 0x2b, 0x1d, 0x5e, 0xa6, 0xad, 0xfd, 0x40, 0x24, 0xbe, 0xed, 0x66, 0x5f, 0xb9, 0xee, 0x7e, - 0xcf, 0x2b, 0x53, 0x5d, 0x99, 0x66, 0x95, 0xe9, 0x75, 0x77, 0x56, 0xd5, 0xc4, 0xc7, 0x3f, 0x03, - 0x00, 0x00, 0xff, 0xff, 0x53, 0xdb, 0x51, 0xa6, 0x6f, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/v1/result_set.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/v1/result_set.pb.go deleted file mode 100644 index 18b53a03..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/v1/result_set.pb.go +++ /dev/null @@ -1,312 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/v1/result_set.proto - -package spanner - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/struct" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Results from [Read][google.spanner.v1.Spanner.Read] or -// [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. -type ResultSet struct { - // Metadata about the result set, such as row type information. - Metadata *ResultSetMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"` - // Each element in `rows` is a row whose format is defined by - // [metadata.row_type][google.spanner.v1.ResultSetMetadata.row_type]. The ith element - // in each row matches the ith field in - // [metadata.row_type][google.spanner.v1.ResultSetMetadata.row_type]. Elements are - // encoded based on type as described - // [here][google.spanner.v1.TypeCode]. - Rows []*google_protobuf1.ListValue `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"` - // Query plan and execution statistics for the query that produced this - // result set. These can be requested by setting - // [ExecuteSqlRequest.query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode]. - Stats *ResultSetStats `protobuf:"bytes,3,opt,name=stats" json:"stats,omitempty"` -} - -func (m *ResultSet) Reset() { *m = ResultSet{} } -func (m *ResultSet) String() string { return proto.CompactTextString(m) } -func (*ResultSet) ProtoMessage() {} -func (*ResultSet) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *ResultSet) GetMetadata() *ResultSetMetadata { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *ResultSet) GetRows() []*google_protobuf1.ListValue { - if m != nil { - return m.Rows - } - return nil -} - -func (m *ResultSet) GetStats() *ResultSetStats { - if m != nil { - return m.Stats - } - return nil -} - -// Partial results from a streaming read or SQL query. Streaming reads and -// SQL queries better tolerate large result sets, large rows, and large -// values, but are a little trickier to consume. -type PartialResultSet struct { - // Metadata about the result set, such as row type information. - // Only present in the first response. - Metadata *ResultSetMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"` - // A streamed result set consists of a stream of values, which might - // be split into many `PartialResultSet` messages to accommodate - // large rows and/or large values. Every N complete values defines a - // row, where N is equal to the number of entries in - // [metadata.row_type.fields][google.spanner.v1.StructType.fields]. - // - // Most values are encoded based on type as described - // [here][google.spanner.v1.TypeCode]. - // - // It is possible that the last value in values is "chunked", - // meaning that the rest of the value is sent in subsequent - // `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value] - // field. Two or more chunked values can be merged to form a - // complete value as follows: - // - // * `bool/number/null`: cannot be chunked - // * `string`: concatenate the strings - // * `list`: concatenate the lists. If the last element in a list is a - // `string`, `list`, or `object`, merge it with the first element in - // the next list by applying these rules recursively. - // * `object`: concatenate the (field name, field value) pairs. If a - // field name is duplicated, then apply these rules recursively - // to merge the field values. - // - // Some examples of merging: - // - // # Strings are concatenated. - // "foo", "bar" => "foobar" - // - // # Lists of non-strings are concatenated. - // [2, 3], [4] => [2, 3, 4] - // - // # Lists are concatenated, but the last and first elements are merged - // # because they are strings. - // ["a", "b"], ["c", "d"] => ["a", "bc", "d"] - // - // # Lists are concatenated, but the last and first elements are merged - // # because they are lists. Recursively, the last and first elements - // # of the inner lists are merged because they are strings. - // ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"] - // - // # Non-overlapping object fields are combined. - // {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"} - // - // # Overlapping object fields are merged. - // {"a": "1"}, {"a": "2"} => {"a": "12"} - // - // # Examples of merging objects containing lists of strings. - // {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]} - // - // For a more complete example, suppose a streaming SQL query is - // yielding a result set whose rows contain a single string - // field. The following `PartialResultSet`s might be yielded: - // - // { - // "metadata": { ... } - // "values": ["Hello", "W"] - // "chunked_value": true - // "resume_token": "Af65..." - // } - // { - // "values": ["orl"] - // "chunked_value": true - // "resume_token": "Bqp2..." - // } - // { - // "values": ["d"] - // "resume_token": "Zx1B..." - // } - // - // This sequence of `PartialResultSet`s encodes two rows, one - // containing the field value `"Hello"`, and a second containing the - // field value `"World" = "W" + "orl" + "d"`. - Values []*google_protobuf1.Value `protobuf:"bytes,2,rep,name=values" json:"values,omitempty"` - // If true, then the final value in [values][google.spanner.v1.PartialResultSet.values] is chunked, and must - // be combined with more values from subsequent `PartialResultSet`s - // to obtain a complete field value. - ChunkedValue bool `protobuf:"varint,3,opt,name=chunked_value,json=chunkedValue" json:"chunked_value,omitempty"` - // Streaming calls might be interrupted for a variety of reasons, such - // as TCP connection loss. If this occurs, the stream of results can - // be resumed by re-sending the original request and including - // `resume_token`. Note that executing any other transaction in the - // same session invalidates the token. - ResumeToken []byte `protobuf:"bytes,4,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"` - // Query plan and execution statistics for the query that produced this - // streaming result set. These can be requested by setting - // [ExecuteSqlRequest.query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] and are sent - // only once with the last response in the stream. - Stats *ResultSetStats `protobuf:"bytes,5,opt,name=stats" json:"stats,omitempty"` -} - -func (m *PartialResultSet) Reset() { *m = PartialResultSet{} } -func (m *PartialResultSet) String() string { return proto.CompactTextString(m) } -func (*PartialResultSet) ProtoMessage() {} -func (*PartialResultSet) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *PartialResultSet) GetMetadata() *ResultSetMetadata { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *PartialResultSet) GetValues() []*google_protobuf1.Value { - if m != nil { - return m.Values - } - return nil -} - -func (m *PartialResultSet) GetChunkedValue() bool { - if m != nil { - return m.ChunkedValue - } - return false -} - -func (m *PartialResultSet) GetResumeToken() []byte { - if m != nil { - return m.ResumeToken - } - return nil -} - -func (m *PartialResultSet) GetStats() *ResultSetStats { - if m != nil { - return m.Stats - } - return nil -} - -// Metadata about a [ResultSet][google.spanner.v1.ResultSet] or [PartialResultSet][google.spanner.v1.PartialResultSet]. -type ResultSetMetadata struct { - // Indicates the field names and types for the rows in the result - // set. For example, a SQL query like `"SELECT UserId, UserName FROM - // Users"` could return a `row_type` value like: - // - // "fields": [ - // { "name": "UserId", "type": { "code": "INT64" } }, - // { "name": "UserName", "type": { "code": "STRING" } }, - // ] - RowType *StructType `protobuf:"bytes,1,opt,name=row_type,json=rowType" json:"row_type,omitempty"` - // If the read or SQL query began a transaction as a side-effect, the - // information about the new transaction is yielded here. - Transaction *Transaction `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"` -} - -func (m *ResultSetMetadata) Reset() { *m = ResultSetMetadata{} } -func (m *ResultSetMetadata) String() string { return proto.CompactTextString(m) } -func (*ResultSetMetadata) ProtoMessage() {} -func (*ResultSetMetadata) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{2} } - -func (m *ResultSetMetadata) GetRowType() *StructType { - if m != nil { - return m.RowType - } - return nil -} - -func (m *ResultSetMetadata) GetTransaction() *Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -// Additional statistics about a [ResultSet][google.spanner.v1.ResultSet] or [PartialResultSet][google.spanner.v1.PartialResultSet]. -type ResultSetStats struct { - // [QueryPlan][google.spanner.v1.QueryPlan] for the query associated with this result. - QueryPlan *QueryPlan `protobuf:"bytes,1,opt,name=query_plan,json=queryPlan" json:"query_plan,omitempty"` - // Aggregated statistics from the execution of the query. Only present when - // the query is profiled. For example, a query could return the statistics as - // follows: - // - // { - // "rows_returned": "3", - // "elapsed_time": "1.22 secs", - // "cpu_time": "1.19 secs" - // } - QueryStats *google_protobuf1.Struct `protobuf:"bytes,2,opt,name=query_stats,json=queryStats" json:"query_stats,omitempty"` -} - -func (m *ResultSetStats) Reset() { *m = ResultSetStats{} } -func (m *ResultSetStats) String() string { return proto.CompactTextString(m) } -func (*ResultSetStats) ProtoMessage() {} -func (*ResultSetStats) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{3} } - -func (m *ResultSetStats) GetQueryPlan() *QueryPlan { - if m != nil { - return m.QueryPlan - } - return nil -} - -func (m *ResultSetStats) GetQueryStats() *google_protobuf1.Struct { - if m != nil { - return m.QueryStats - } - return nil -} - -func init() { - proto.RegisterType((*ResultSet)(nil), "google.spanner.v1.ResultSet") - proto.RegisterType((*PartialResultSet)(nil), "google.spanner.v1.PartialResultSet") - proto.RegisterType((*ResultSetMetadata)(nil), "google.spanner.v1.ResultSetMetadata") - proto.RegisterType((*ResultSetStats)(nil), "google.spanner.v1.ResultSetStats") -} - -func init() { proto.RegisterFile("google/spanner/v1/result_set.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 501 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x93, 0xcd, 0x6e, 0x13, 0x31, - 0x14, 0x85, 0xe5, 0xf4, 0x87, 0xd4, 0x13, 0x10, 0xb5, 0x04, 0x1d, 0x45, 0x05, 0xa5, 0x29, 0x8b, - 0xac, 0x3c, 0x4a, 0x59, 0x10, 0xa9, 0x9b, 0xaa, 0x2c, 0xd8, 0x80, 0x14, 0x9c, 0x28, 0x0b, 0x14, - 0x69, 0xe4, 0x26, 0x66, 0x18, 0x75, 0x62, 0x4f, 0x6d, 0x4f, 0xa2, 0x3c, 0x00, 0x62, 0xc9, 0x9e, - 0x47, 0xe0, 0x01, 0x78, 0x08, 0x9e, 0x88, 0x25, 0xf2, 0xcf, 0x24, 0x81, 0x19, 0x21, 0x21, 0x75, - 0xe7, 0xf8, 0x7e, 0xe7, 0x9e, 0x7b, 0x3c, 0x37, 0xb0, 0x9b, 0x08, 0x91, 0x64, 0x2c, 0x52, 0x39, - 0xe5, 0x9c, 0xc9, 0x68, 0xd9, 0x8f, 0x24, 0x53, 0x45, 0xa6, 0x63, 0xc5, 0x34, 0xce, 0xa5, 0xd0, - 0x02, 0x1d, 0x3b, 0x06, 0x7b, 0x06, 0x2f, 0xfb, 0xed, 0x53, 0x2f, 0xa3, 0x79, 0x1a, 0x51, 0xce, - 0x85, 0xa6, 0x3a, 0x15, 0x5c, 0x39, 0xc1, 0xa6, 0x6a, 0x7f, 0xdd, 0x14, 0x1f, 0x23, 0xa5, 0x65, - 0x31, 0xf3, 0xed, 0xda, 0x35, 0x96, 0x77, 0x05, 0x93, 0xeb, 0x38, 0xcf, 0x28, 0xf7, 0xcc, 0x79, - 0x95, 0xd1, 0x92, 0x72, 0x45, 0x67, 0xc6, 0xe7, 0x2f, 0x9b, 0x5d, 0x68, 0x9d, 0x33, 0x57, 0xed, - 0xfe, 0x00, 0xf0, 0x88, 0xd8, 0x28, 0x23, 0xa6, 0xd1, 0x15, 0x6c, 0x2e, 0x98, 0xa6, 0x73, 0xaa, - 0x69, 0x08, 0x3a, 0xa0, 0x17, 0x5c, 0xbc, 0xc0, 0x95, 0x58, 0x78, 0xc3, 0xbf, 0xf3, 0x2c, 0xd9, - 0xa8, 0x10, 0x86, 0xfb, 0x52, 0xac, 0x54, 0xd8, 0xe8, 0xec, 0xf5, 0x82, 0x8b, 0x76, 0xa9, 0x2e, - 0x33, 0xe2, 0xb7, 0xa9, 0xd2, 0x13, 0x9a, 0x15, 0x8c, 0x58, 0x0e, 0xbd, 0x82, 0x07, 0x4a, 0x53, - 0xad, 0xc2, 0x3d, 0x6b, 0x77, 0xf6, 0x2f, 0xbb, 0x91, 0x01, 0x89, 0xe3, 0xbb, 0x9f, 0x1b, 0xf0, - 0xf1, 0x90, 0x4a, 0x9d, 0xd2, 0xec, 0x7e, 0xe7, 0x3f, 0x5c, 0x9a, 0xf1, 0xca, 0x04, 0x4f, 0x2b, - 0x09, 0xdc, 0xf4, 0x9e, 0x42, 0xe7, 0xf0, 0xe1, 0xec, 0x53, 0xc1, 0x6f, 0xd9, 0x3c, 0xb6, 0x37, - 0x36, 0x47, 0x93, 0xb4, 0xfc, 0xa5, 0x85, 0xd1, 0x19, 0x6c, 0x99, 0x75, 0x59, 0xb0, 0x58, 0x8b, - 0x5b, 0xc6, 0xc3, 0xfd, 0x0e, 0xe8, 0xb5, 0x48, 0xe0, 0xee, 0xc6, 0xe6, 0x6a, 0xfb, 0x0e, 0x07, - 0xff, 0xf9, 0x0e, 0x5f, 0x01, 0x3c, 0xae, 0x04, 0x42, 0x03, 0xd8, 0x94, 0x62, 0x15, 0x9b, 0x0f, - 0xed, 0x1f, 0xe2, 0x59, 0x4d, 0xc7, 0x91, 0x5d, 0xb8, 0xf1, 0x3a, 0x67, 0xe4, 0x81, 0x14, 0x2b, - 0x73, 0x40, 0x57, 0x30, 0xd8, 0xd9, 0xa1, 0xb0, 0x61, 0xc5, 0xcf, 0x6b, 0xc4, 0xe3, 0x2d, 0x45, - 0x76, 0x25, 0xdd, 0x2f, 0x00, 0x3e, 0xfa, 0x73, 0x56, 0x74, 0x09, 0xe1, 0x76, 0x79, 0xfd, 0x40, - 0xa7, 0x35, 0x3d, 0xdf, 0x1b, 0x68, 0x98, 0x51, 0x4e, 0x8e, 0xee, 0xca, 0x23, 0x1a, 0xc0, 0xc0, - 0x89, 0xdd, 0x03, 0xb9, 0x89, 0x4e, 0x2a, 0xdf, 0xc5, 0x85, 0x21, 0xce, 0xc8, 0xda, 0x5e, 0x7f, - 0x03, 0xf0, 0xc9, 0x4c, 0x2c, 0xaa, 0x46, 0xd7, 0xdb, 0x01, 0x87, 0x46, 0x3f, 0x04, 0x1f, 0x06, - 0x1e, 0x4a, 0x44, 0x46, 0x79, 0x82, 0x85, 0x4c, 0xa2, 0x84, 0x71, 0xdb, 0x3d, 0x72, 0x25, 0x9a, - 0xa7, 0x6a, 0xe7, 0x5f, 0x74, 0xe9, 0x8f, 0xbf, 0x00, 0xf8, 0xde, 0x38, 0x79, 0xe3, 0xd4, 0xaf, - 0x33, 0x51, 0xcc, 0xf1, 0xc8, 0x1b, 0x4d, 0xfa, 0x3f, 0xcb, 0xca, 0xd4, 0x56, 0xa6, 0xbe, 0x32, - 0x9d, 0xf4, 0x6f, 0x0e, 0x6d, 0xef, 0x97, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x06, 0x67, 0x6c, - 0xee, 0x5c, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/v1/spanner.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/v1/spanner.pb.go deleted file mode 100644 index 27125f18..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/v1/spanner.pb.go +++ /dev/null @@ -1,1796 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/v1/spanner.proto - -package spanner - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf1 "github.com/golang/protobuf/ptypes/struct" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Mode in which the query must be processed. -type ExecuteSqlRequest_QueryMode int32 - -const ( - // The default mode where only the query result, without any information - // about the query plan is returned. - ExecuteSqlRequest_NORMAL ExecuteSqlRequest_QueryMode = 0 - // This mode returns only the query plan, without any result rows or - // execution statistics information. - ExecuteSqlRequest_PLAN ExecuteSqlRequest_QueryMode = 1 - // This mode returns both the query plan and the execution statistics along - // with the result rows. - ExecuteSqlRequest_PROFILE ExecuteSqlRequest_QueryMode = 2 -) - -var ExecuteSqlRequest_QueryMode_name = map[int32]string{ - 0: "NORMAL", - 1: "PLAN", - 2: "PROFILE", -} -var ExecuteSqlRequest_QueryMode_value = map[string]int32{ - "NORMAL": 0, - "PLAN": 1, - "PROFILE": 2, -} - -func (x ExecuteSqlRequest_QueryMode) String() string { - return proto.EnumName(ExecuteSqlRequest_QueryMode_name, int32(x)) -} -func (ExecuteSqlRequest_QueryMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor4, []int{6, 0} -} - -// The request for [CreateSession][google.spanner.v1.Spanner.CreateSession]. -type CreateSessionRequest struct { - // Required. The database in which the new session is created. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // The session to create. - Session *Session `protobuf:"bytes,2,opt,name=session" json:"session,omitempty"` -} - -func (m *CreateSessionRequest) Reset() { *m = CreateSessionRequest{} } -func (m *CreateSessionRequest) String() string { return proto.CompactTextString(m) } -func (*CreateSessionRequest) ProtoMessage() {} -func (*CreateSessionRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *CreateSessionRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *CreateSessionRequest) GetSession() *Session { - if m != nil { - return m.Session - } - return nil -} - -// A session in the Cloud Spanner API. -type Session struct { - // The name of the session. This is always system-assigned; values provided - // when creating a session are ignored. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The labels for the session. - // - // * Label keys must be between 1 and 63 characters long and must conform to - // the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`. - // * Label values must be between 0 and 63 characters long and must conform - // to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`. - // * No more than 64 labels can be associated with a given session. - // - // See https://goo.gl/xmQnxf for more information on and examples of labels. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Output only. The timestamp when the session is created. - CreateTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime" json:"create_time,omitempty"` - // Output only. The approximate timestamp when the session is last used. It is - // typically earlier than the actual last use time. - ApproximateLastUseTime *google_protobuf3.Timestamp `protobuf:"bytes,4,opt,name=approximate_last_use_time,json=approximateLastUseTime" json:"approximate_last_use_time,omitempty"` -} - -func (m *Session) Reset() { *m = Session{} } -func (m *Session) String() string { return proto.CompactTextString(m) } -func (*Session) ProtoMessage() {} -func (*Session) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *Session) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Session) GetLabels() map[string]string { - if m != nil { - return m.Labels - } - return nil -} - -func (m *Session) GetCreateTime() *google_protobuf3.Timestamp { - if m != nil { - return m.CreateTime - } - return nil -} - -func (m *Session) GetApproximateLastUseTime() *google_protobuf3.Timestamp { - if m != nil { - return m.ApproximateLastUseTime - } - return nil -} - -// The request for [GetSession][google.spanner.v1.Spanner.GetSession]. -type GetSessionRequest struct { - // Required. The name of the session to retrieve. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GetSessionRequest) Reset() { *m = GetSessionRequest{} } -func (m *GetSessionRequest) String() string { return proto.CompactTextString(m) } -func (*GetSessionRequest) ProtoMessage() {} -func (*GetSessionRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} } - -func (m *GetSessionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request for [ListSessions][google.spanner.v1.Spanner.ListSessions]. -type ListSessionsRequest struct { - // Required. The database in which to list sessions. - Database string `protobuf:"bytes,1,opt,name=database" json:"database,omitempty"` - // Number of sessions to be returned in the response. If 0 or less, defaults - // to the server's maximum allowed page size. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // If non-empty, `page_token` should contain a - // [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous - // [ListSessionsResponse][google.spanner.v1.ListSessionsResponse]. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // An expression for filtering the results of the request. Filter rules are - // case insensitive. The fields eligible for filtering are: - // - // * `labels.key` where key is the name of a label - // - // Some examples of using filters are: - // - // * `labels.env:*` --> The session has the label "env". - // * `labels.env:dev` --> The session has the label "env" and the value of - // the label contains the string "dev". - Filter string `protobuf:"bytes,4,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListSessionsRequest) Reset() { *m = ListSessionsRequest{} } -func (m *ListSessionsRequest) String() string { return proto.CompactTextString(m) } -func (*ListSessionsRequest) ProtoMessage() {} -func (*ListSessionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} } - -func (m *ListSessionsRequest) GetDatabase() string { - if m != nil { - return m.Database - } - return "" -} - -func (m *ListSessionsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListSessionsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListSessionsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// The response for [ListSessions][google.spanner.v1.Spanner.ListSessions]. -type ListSessionsResponse struct { - // The list of requested sessions. - Sessions []*Session `protobuf:"bytes,1,rep,name=sessions" json:"sessions,omitempty"` - // `next_page_token` can be sent in a subsequent - // [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching - // sessions. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListSessionsResponse) Reset() { *m = ListSessionsResponse{} } -func (m *ListSessionsResponse) String() string { return proto.CompactTextString(m) } -func (*ListSessionsResponse) ProtoMessage() {} -func (*ListSessionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} } - -func (m *ListSessionsResponse) GetSessions() []*Session { - if m != nil { - return m.Sessions - } - return nil -} - -func (m *ListSessionsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// The request for [DeleteSession][google.spanner.v1.Spanner.DeleteSession]. -type DeleteSessionRequest struct { - // Required. The name of the session to delete. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *DeleteSessionRequest) Reset() { *m = DeleteSessionRequest{} } -func (m *DeleteSessionRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSessionRequest) ProtoMessage() {} -func (*DeleteSessionRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} } - -func (m *DeleteSessionRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The request for [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and -// [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql]. -type ExecuteSqlRequest struct { - // Required. The session in which the SQL query should be performed. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // The transaction to use. If none is provided, the default is a - // temporary read-only transaction with strong concurrency. - Transaction *TransactionSelector `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"` - // Required. The SQL query string. - Sql string `protobuf:"bytes,3,opt,name=sql" json:"sql,omitempty"` - // The SQL query string can contain parameter placeholders. A parameter - // placeholder consists of `'@'` followed by the parameter - // name. Parameter names consist of any combination of letters, - // numbers, and underscores. - // - // Parameters can appear anywhere that a literal value is expected. The same - // parameter name can be used more than once, for example: - // `"WHERE id > @msg_id AND id < @msg_id + 100"` - // - // It is an error to execute an SQL query with unbound parameters. - // - // Parameter values are specified using `params`, which is a JSON - // object whose keys are parameter names, and whose values are the - // corresponding parameter values. - Params *google_protobuf1.Struct `protobuf:"bytes,4,opt,name=params" json:"params,omitempty"` - // It is not always possible for Cloud Spanner to infer the right SQL type - // from a JSON value. For example, values of type `BYTES` and values - // of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. - // - // In these cases, `param_types` can be used to specify the exact - // SQL type for some or all of the SQL query parameters. See the - // definition of [Type][google.spanner.v1.Type] for more information - // about SQL types. - ParamTypes map[string]*Type `protobuf:"bytes,5,rep,name=param_types,json=paramTypes" json:"param_types,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // If this request is resuming a previously interrupted SQL query - // execution, `resume_token` should be copied from the last - // [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this - // enables the new SQL query execution to resume where the last one left - // off. The rest of the request parameters must exactly match the - // request that yielded this token. - ResumeToken []byte `protobuf:"bytes,6,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"` - // Used to control the amount of debugging information returned in - // [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only - // be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL]. - QueryMode ExecuteSqlRequest_QueryMode `protobuf:"varint,7,opt,name=query_mode,json=queryMode,enum=google.spanner.v1.ExecuteSqlRequest_QueryMode" json:"query_mode,omitempty"` - // If present, results will be restricted to the specified partition - // previously created using PartitionQuery(). There must be an exact - // match for the values of fields common to this message and the - // PartitionQueryRequest message used to create this partition_token. - PartitionToken []byte `protobuf:"bytes,8,opt,name=partition_token,json=partitionToken,proto3" json:"partition_token,omitempty"` -} - -func (m *ExecuteSqlRequest) Reset() { *m = ExecuteSqlRequest{} } -func (m *ExecuteSqlRequest) String() string { return proto.CompactTextString(m) } -func (*ExecuteSqlRequest) ProtoMessage() {} -func (*ExecuteSqlRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{6} } - -func (m *ExecuteSqlRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *ExecuteSqlRequest) GetTransaction() *TransactionSelector { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *ExecuteSqlRequest) GetSql() string { - if m != nil { - return m.Sql - } - return "" -} - -func (m *ExecuteSqlRequest) GetParams() *google_protobuf1.Struct { - if m != nil { - return m.Params - } - return nil -} - -func (m *ExecuteSqlRequest) GetParamTypes() map[string]*Type { - if m != nil { - return m.ParamTypes - } - return nil -} - -func (m *ExecuteSqlRequest) GetResumeToken() []byte { - if m != nil { - return m.ResumeToken - } - return nil -} - -func (m *ExecuteSqlRequest) GetQueryMode() ExecuteSqlRequest_QueryMode { - if m != nil { - return m.QueryMode - } - return ExecuteSqlRequest_NORMAL -} - -func (m *ExecuteSqlRequest) GetPartitionToken() []byte { - if m != nil { - return m.PartitionToken - } - return nil -} - -// Options for a PartitionQueryRequest and -// PartitionReadRequest. -type PartitionOptions struct { - // The desired data size for each partition generated. The default for this - // option is currently 1 GiB. This is only a hint. The actual size of each - // partition may be smaller or larger than this size request. - PartitionSizeBytes int64 `protobuf:"varint,1,opt,name=partition_size_bytes,json=partitionSizeBytes" json:"partition_size_bytes,omitempty"` - // The desired maximum number of partitions to return. For example, this may - // be set to the number of workers available. The default for this option - // is currently 10,000. The maximum value is currently 200,000. This is only - // a hint. The actual number of partitions returned may be smaller or larger - // than this maximum count request. - MaxPartitions int64 `protobuf:"varint,2,opt,name=max_partitions,json=maxPartitions" json:"max_partitions,omitempty"` -} - -func (m *PartitionOptions) Reset() { *m = PartitionOptions{} } -func (m *PartitionOptions) String() string { return proto.CompactTextString(m) } -func (*PartitionOptions) ProtoMessage() {} -func (*PartitionOptions) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{7} } - -func (m *PartitionOptions) GetPartitionSizeBytes() int64 { - if m != nil { - return m.PartitionSizeBytes - } - return 0 -} - -func (m *PartitionOptions) GetMaxPartitions() int64 { - if m != nil { - return m.MaxPartitions - } - return 0 -} - -// The request for [PartitionQuery][google.spanner.v1.Spanner.PartitionQuery] -type PartitionQueryRequest struct { - // Required. The session used to create the partitions. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // Read only snapshot transactions are supported, read/write and single use - // transactions are not. - Transaction *TransactionSelector `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"` - // The query request to generate partitions for. The request will fail if - // the query is not root partitionable. The query plan of a root - // partitionable query has a single distributed union operator. A distributed - // union operator conceptually divides one or more tables into multiple - // splits, remotely evaluates a subquery independently on each split, and - // then unions all results. - Sql string `protobuf:"bytes,3,opt,name=sql" json:"sql,omitempty"` - // The SQL query string can contain parameter placeholders. A parameter - // placeholder consists of `'@'` followed by the parameter - // name. Parameter names consist of any combination of letters, - // numbers, and underscores. - // - // Parameters can appear anywhere that a literal value is expected. The same - // parameter name can be used more than once, for example: - // `"WHERE id > @msg_id AND id < @msg_id + 100"` - // - // It is an error to execute an SQL query with unbound parameters. - // - // Parameter values are specified using `params`, which is a JSON - // object whose keys are parameter names, and whose values are the - // corresponding parameter values. - Params *google_protobuf1.Struct `protobuf:"bytes,4,opt,name=params" json:"params,omitempty"` - // It is not always possible for Cloud Spanner to infer the right SQL type - // from a JSON value. For example, values of type `BYTES` and values - // of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. - // - // In these cases, `param_types` can be used to specify the exact - // SQL type for some or all of the SQL query parameters. See the - // definition of [Type][google.spanner.v1.Type] for more information - // about SQL types. - ParamTypes map[string]*Type `protobuf:"bytes,5,rep,name=param_types,json=paramTypes" json:"param_types,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Additional options that affect how many partitions are created. - PartitionOptions *PartitionOptions `protobuf:"bytes,6,opt,name=partition_options,json=partitionOptions" json:"partition_options,omitempty"` -} - -func (m *PartitionQueryRequest) Reset() { *m = PartitionQueryRequest{} } -func (m *PartitionQueryRequest) String() string { return proto.CompactTextString(m) } -func (*PartitionQueryRequest) ProtoMessage() {} -func (*PartitionQueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{8} } - -func (m *PartitionQueryRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *PartitionQueryRequest) GetTransaction() *TransactionSelector { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *PartitionQueryRequest) GetSql() string { - if m != nil { - return m.Sql - } - return "" -} - -func (m *PartitionQueryRequest) GetParams() *google_protobuf1.Struct { - if m != nil { - return m.Params - } - return nil -} - -func (m *PartitionQueryRequest) GetParamTypes() map[string]*Type { - if m != nil { - return m.ParamTypes - } - return nil -} - -func (m *PartitionQueryRequest) GetPartitionOptions() *PartitionOptions { - if m != nil { - return m.PartitionOptions - } - return nil -} - -// The request for [PartitionRead][google.spanner.v1.Spanner.PartitionRead] -type PartitionReadRequest struct { - // Required. The session used to create the partitions. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // Read only snapshot transactions are supported, read/write and single use - // transactions are not. - Transaction *TransactionSelector `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"` - // Required. The name of the table in the database to be read. - Table string `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"` - // If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is - // used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set] - // and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information. - Index string `protobuf:"bytes,4,opt,name=index" json:"index,omitempty"` - // The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching - // this request. - Columns []string `protobuf:"bytes,5,rep,name=columns" json:"columns,omitempty"` - // Required. `key_set` identifies the rows to be yielded. `key_set` names the - // primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] - // is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names - // index keys in [index][google.spanner.v1.PartitionReadRequest.index]. - // - // It is not an error for the `key_set` to name rows that do not - // exist in the database. Read yields nothing for nonexistent rows. - KeySet *KeySet `protobuf:"bytes,6,opt,name=key_set,json=keySet" json:"key_set,omitempty"` - // Additional options that affect how many partitions are created. - PartitionOptions *PartitionOptions `protobuf:"bytes,9,opt,name=partition_options,json=partitionOptions" json:"partition_options,omitempty"` -} - -func (m *PartitionReadRequest) Reset() { *m = PartitionReadRequest{} } -func (m *PartitionReadRequest) String() string { return proto.CompactTextString(m) } -func (*PartitionReadRequest) ProtoMessage() {} -func (*PartitionReadRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{9} } - -func (m *PartitionReadRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *PartitionReadRequest) GetTransaction() *TransactionSelector { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *PartitionReadRequest) GetTable() string { - if m != nil { - return m.Table - } - return "" -} - -func (m *PartitionReadRequest) GetIndex() string { - if m != nil { - return m.Index - } - return "" -} - -func (m *PartitionReadRequest) GetColumns() []string { - if m != nil { - return m.Columns - } - return nil -} - -func (m *PartitionReadRequest) GetKeySet() *KeySet { - if m != nil { - return m.KeySet - } - return nil -} - -func (m *PartitionReadRequest) GetPartitionOptions() *PartitionOptions { - if m != nil { - return m.PartitionOptions - } - return nil -} - -// Information returned for each partition returned in a -// PartitionResponse. -type Partition struct { - // This token can be passed to Read, StreamingRead, ExecuteSql, or - // ExecuteStreamingSql requests to restrict the results to those identified by - // this partition token. - PartitionToken []byte `protobuf:"bytes,1,opt,name=partition_token,json=partitionToken,proto3" json:"partition_token,omitempty"` -} - -func (m *Partition) Reset() { *m = Partition{} } -func (m *Partition) String() string { return proto.CompactTextString(m) } -func (*Partition) ProtoMessage() {} -func (*Partition) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{10} } - -func (m *Partition) GetPartitionToken() []byte { - if m != nil { - return m.PartitionToken - } - return nil -} - -// The response for [PartitionQuery][google.spanner.v1.Spanner.PartitionQuery] -// or [PartitionRead][google.spanner.v1.Spanner.PartitionRead] -type PartitionResponse struct { - // Partitions created by this request. - Partitions []*Partition `protobuf:"bytes,1,rep,name=partitions" json:"partitions,omitempty"` - // Transaction created by this request. - Transaction *Transaction `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"` -} - -func (m *PartitionResponse) Reset() { *m = PartitionResponse{} } -func (m *PartitionResponse) String() string { return proto.CompactTextString(m) } -func (*PartitionResponse) ProtoMessage() {} -func (*PartitionResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{11} } - -func (m *PartitionResponse) GetPartitions() []*Partition { - if m != nil { - return m.Partitions - } - return nil -} - -func (m *PartitionResponse) GetTransaction() *Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -// The request for [Read][google.spanner.v1.Spanner.Read] and -// [StreamingRead][google.spanner.v1.Spanner.StreamingRead]. -type ReadRequest struct { - // Required. The session in which the read should be performed. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // The transaction to use. If none is provided, the default is a - // temporary read-only transaction with strong concurrency. - Transaction *TransactionSelector `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"` - // Required. The name of the table in the database to be read. - Table string `protobuf:"bytes,3,opt,name=table" json:"table,omitempty"` - // If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is - // used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set] - // and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information. - Index string `protobuf:"bytes,4,opt,name=index" json:"index,omitempty"` - // The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching - // this request. - Columns []string `protobuf:"bytes,5,rep,name=columns" json:"columns,omitempty"` - // Required. `key_set` identifies the rows to be yielded. `key_set` names the - // primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] - // is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names - // index keys in [index][google.spanner.v1.ReadRequest.index]. - // - // If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded - // in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order - // (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not - // empty, rows will be yielded in an unspecified order. - // - // It is not an error for the `key_set` to name rows that do not - // exist in the database. Read yields nothing for nonexistent rows. - KeySet *KeySet `protobuf:"bytes,6,opt,name=key_set,json=keySet" json:"key_set,omitempty"` - // If greater than zero, only the first `limit` rows are yielded. If `limit` - // is zero, the default is no limit. A limit cannot be specified if - // `partition_token` is set. - Limit int64 `protobuf:"varint,8,opt,name=limit" json:"limit,omitempty"` - // If this request is resuming a previously interrupted read, - // `resume_token` should be copied from the last - // [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this - // enables the new read to resume where the last read left off. The - // rest of the request parameters must exactly match the request - // that yielded this token. - ResumeToken []byte `protobuf:"bytes,9,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"` - // If present, results will be restricted to the specified partition - // previously created using PartitionRead(). There must be an exact - // match for the values of fields common to this message and the - // PartitionReadRequest message used to create this partition_token. - PartitionToken []byte `protobuf:"bytes,10,opt,name=partition_token,json=partitionToken,proto3" json:"partition_token,omitempty"` -} - -func (m *ReadRequest) Reset() { *m = ReadRequest{} } -func (m *ReadRequest) String() string { return proto.CompactTextString(m) } -func (*ReadRequest) ProtoMessage() {} -func (*ReadRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{12} } - -func (m *ReadRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *ReadRequest) GetTransaction() *TransactionSelector { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *ReadRequest) GetTable() string { - if m != nil { - return m.Table - } - return "" -} - -func (m *ReadRequest) GetIndex() string { - if m != nil { - return m.Index - } - return "" -} - -func (m *ReadRequest) GetColumns() []string { - if m != nil { - return m.Columns - } - return nil -} - -func (m *ReadRequest) GetKeySet() *KeySet { - if m != nil { - return m.KeySet - } - return nil -} - -func (m *ReadRequest) GetLimit() int64 { - if m != nil { - return m.Limit - } - return 0 -} - -func (m *ReadRequest) GetResumeToken() []byte { - if m != nil { - return m.ResumeToken - } - return nil -} - -func (m *ReadRequest) GetPartitionToken() []byte { - if m != nil { - return m.PartitionToken - } - return nil -} - -// The request for [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction]. -type BeginTransactionRequest struct { - // Required. The session in which the transaction runs. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // Required. Options for the new transaction. - Options *TransactionOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"` -} - -func (m *BeginTransactionRequest) Reset() { *m = BeginTransactionRequest{} } -func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) } -func (*BeginTransactionRequest) ProtoMessage() {} -func (*BeginTransactionRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{13} } - -func (m *BeginTransactionRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *BeginTransactionRequest) GetOptions() *TransactionOptions { - if m != nil { - return m.Options - } - return nil -} - -// The request for [Commit][google.spanner.v1.Spanner.Commit]. -type CommitRequest struct { - // Required. The session in which the transaction to be committed is running. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // Required. The transaction in which to commit. - // - // Types that are valid to be assigned to Transaction: - // *CommitRequest_TransactionId - // *CommitRequest_SingleUseTransaction - Transaction isCommitRequest_Transaction `protobuf_oneof:"transaction"` - // The mutations to be executed when this transaction commits. All - // mutations are applied atomically, in the order they appear in - // this list. - Mutations []*Mutation `protobuf:"bytes,4,rep,name=mutations" json:"mutations,omitempty"` -} - -func (m *CommitRequest) Reset() { *m = CommitRequest{} } -func (m *CommitRequest) String() string { return proto.CompactTextString(m) } -func (*CommitRequest) ProtoMessage() {} -func (*CommitRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{14} } - -type isCommitRequest_Transaction interface { - isCommitRequest_Transaction() -} - -type CommitRequest_TransactionId struct { - TransactionId []byte `protobuf:"bytes,2,opt,name=transaction_id,json=transactionId,proto3,oneof"` -} -type CommitRequest_SingleUseTransaction struct { - SingleUseTransaction *TransactionOptions `protobuf:"bytes,3,opt,name=single_use_transaction,json=singleUseTransaction,oneof"` -} - -func (*CommitRequest_TransactionId) isCommitRequest_Transaction() {} -func (*CommitRequest_SingleUseTransaction) isCommitRequest_Transaction() {} - -func (m *CommitRequest) GetTransaction() isCommitRequest_Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *CommitRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *CommitRequest) GetTransactionId() []byte { - if x, ok := m.GetTransaction().(*CommitRequest_TransactionId); ok { - return x.TransactionId - } - return nil -} - -func (m *CommitRequest) GetSingleUseTransaction() *TransactionOptions { - if x, ok := m.GetTransaction().(*CommitRequest_SingleUseTransaction); ok { - return x.SingleUseTransaction - } - return nil -} - -func (m *CommitRequest) GetMutations() []*Mutation { - if m != nil { - return m.Mutations - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*CommitRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _CommitRequest_OneofMarshaler, _CommitRequest_OneofUnmarshaler, _CommitRequest_OneofSizer, []interface{}{ - (*CommitRequest_TransactionId)(nil), - (*CommitRequest_SingleUseTransaction)(nil), - } -} - -func _CommitRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*CommitRequest) - // transaction - switch x := m.Transaction.(type) { - case *CommitRequest_TransactionId: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.TransactionId) - case *CommitRequest_SingleUseTransaction: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SingleUseTransaction); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("CommitRequest.Transaction has unexpected type %T", x) - } - return nil -} - -func _CommitRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*CommitRequest) - switch tag { - case 2: // transaction.transaction_id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Transaction = &CommitRequest_TransactionId{x} - return true, err - case 3: // transaction.single_use_transaction - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions) - err := b.DecodeMessage(msg) - m.Transaction = &CommitRequest_SingleUseTransaction{msg} - return true, err - default: - return false, nil - } -} - -func _CommitRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*CommitRequest) - // transaction - switch x := m.Transaction.(type) { - case *CommitRequest_TransactionId: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.TransactionId))) - n += len(x.TransactionId) - case *CommitRequest_SingleUseTransaction: - s := proto.Size(x.SingleUseTransaction) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// The response for [Commit][google.spanner.v1.Spanner.Commit]. -type CommitResponse struct { - // The Cloud Spanner timestamp at which the transaction committed. - CommitTimestamp *google_protobuf3.Timestamp `protobuf:"bytes,1,opt,name=commit_timestamp,json=commitTimestamp" json:"commit_timestamp,omitempty"` -} - -func (m *CommitResponse) Reset() { *m = CommitResponse{} } -func (m *CommitResponse) String() string { return proto.CompactTextString(m) } -func (*CommitResponse) ProtoMessage() {} -func (*CommitResponse) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{15} } - -func (m *CommitResponse) GetCommitTimestamp() *google_protobuf3.Timestamp { - if m != nil { - return m.CommitTimestamp - } - return nil -} - -// The request for [Rollback][google.spanner.v1.Spanner.Rollback]. -type RollbackRequest struct { - // Required. The session in which the transaction to roll back is running. - Session string `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` - // Required. The transaction to roll back. - TransactionId []byte `protobuf:"bytes,2,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` -} - -func (m *RollbackRequest) Reset() { *m = RollbackRequest{} } -func (m *RollbackRequest) String() string { return proto.CompactTextString(m) } -func (*RollbackRequest) ProtoMessage() {} -func (*RollbackRequest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{16} } - -func (m *RollbackRequest) GetSession() string { - if m != nil { - return m.Session - } - return "" -} - -func (m *RollbackRequest) GetTransactionId() []byte { - if m != nil { - return m.TransactionId - } - return nil -} - -func init() { - proto.RegisterType((*CreateSessionRequest)(nil), "google.spanner.v1.CreateSessionRequest") - proto.RegisterType((*Session)(nil), "google.spanner.v1.Session") - proto.RegisterType((*GetSessionRequest)(nil), "google.spanner.v1.GetSessionRequest") - proto.RegisterType((*ListSessionsRequest)(nil), "google.spanner.v1.ListSessionsRequest") - proto.RegisterType((*ListSessionsResponse)(nil), "google.spanner.v1.ListSessionsResponse") - proto.RegisterType((*DeleteSessionRequest)(nil), "google.spanner.v1.DeleteSessionRequest") - proto.RegisterType((*ExecuteSqlRequest)(nil), "google.spanner.v1.ExecuteSqlRequest") - proto.RegisterType((*PartitionOptions)(nil), "google.spanner.v1.PartitionOptions") - proto.RegisterType((*PartitionQueryRequest)(nil), "google.spanner.v1.PartitionQueryRequest") - proto.RegisterType((*PartitionReadRequest)(nil), "google.spanner.v1.PartitionReadRequest") - proto.RegisterType((*Partition)(nil), "google.spanner.v1.Partition") - proto.RegisterType((*PartitionResponse)(nil), "google.spanner.v1.PartitionResponse") - proto.RegisterType((*ReadRequest)(nil), "google.spanner.v1.ReadRequest") - proto.RegisterType((*BeginTransactionRequest)(nil), "google.spanner.v1.BeginTransactionRequest") - proto.RegisterType((*CommitRequest)(nil), "google.spanner.v1.CommitRequest") - proto.RegisterType((*CommitResponse)(nil), "google.spanner.v1.CommitResponse") - proto.RegisterType((*RollbackRequest)(nil), "google.spanner.v1.RollbackRequest") - proto.RegisterEnum("google.spanner.v1.ExecuteSqlRequest_QueryMode", ExecuteSqlRequest_QueryMode_name, ExecuteSqlRequest_QueryMode_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Spanner service - -type SpannerClient interface { - // Creates a new session. A session can be used to perform - // transactions that read and/or modify data in a Cloud Spanner database. - // Sessions are meant to be reused for many consecutive - // transactions. - // - // Sessions can only execute one transaction at a time. To execute - // multiple concurrent read-write/write-only transactions, create - // multiple sessions. Note that standalone reads and queries use a - // transaction internally, and count toward the one transaction - // limit. - // - // Cloud Spanner limits the number of sessions that can exist at any given - // time; thus, it is a good idea to delete idle and/or unneeded sessions. - // Aside from explicit deletes, Cloud Spanner can delete sessions for which no - // operations are sent for more than an hour. If a session is deleted, - // requests to it return `NOT_FOUND`. - // - // Idle sessions can be kept alive by sending a trivial SQL query - // periodically, e.g., `"SELECT 1"`. - CreateSession(ctx context.Context, in *CreateSessionRequest, opts ...grpc.CallOption) (*Session, error) - // Gets a session. Returns `NOT_FOUND` if the session does not exist. - // This is mainly useful for determining whether a session is still - // alive. - GetSession(ctx context.Context, in *GetSessionRequest, opts ...grpc.CallOption) (*Session, error) - // Lists all sessions in a given database. - ListSessions(ctx context.Context, in *ListSessionsRequest, opts ...grpc.CallOption) (*ListSessionsResponse, error) - // Ends a session, releasing server resources associated with it. - DeleteSession(ctx context.Context, in *DeleteSessionRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Executes an SQL query, returning all rows in a single reply. This - // method cannot be used to return a result set larger than 10 MiB; - // if the query yields more data than that, the query fails with - // a `FAILED_PRECONDITION` error. - // - // Queries inside read-write transactions might return `ABORTED`. If - // this occurs, the application should restart the transaction from - // the beginning. See [Transaction][google.spanner.v1.Transaction] for more details. - // - // Larger result sets can be fetched in streaming fashion by calling - // [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] instead. - ExecuteSql(ctx context.Context, in *ExecuteSqlRequest, opts ...grpc.CallOption) (*ResultSet, error) - // Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the result - // set as a stream. Unlike [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there - // is no limit on the size of the returned result set. However, no - // individual row in the result set can exceed 100 MiB, and no - // column value can exceed 10 MiB. - ExecuteStreamingSql(ctx context.Context, in *ExecuteSqlRequest, opts ...grpc.CallOption) (Spanner_ExecuteStreamingSqlClient, error) - // Reads rows from the database using key lookups and scans, as a - // simple key/value style alternative to - // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. This method cannot be used to - // return a result set larger than 10 MiB; if the read matches more - // data than that, the read fails with a `FAILED_PRECONDITION` - // error. - // - // Reads inside read-write transactions might return `ABORTED`. If - // this occurs, the application should restart the transaction from - // the beginning. See [Transaction][google.spanner.v1.Transaction] for more details. - // - // Larger result sets can be yielded in streaming fashion by calling - // [StreamingRead][google.spanner.v1.Spanner.StreamingRead] instead. - Read(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (*ResultSet, error) - // Like [Read][google.spanner.v1.Spanner.Read], except returns the result set as a - // stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no limit on the - // size of the returned result set. However, no individual row in - // the result set can exceed 100 MiB, and no column value can exceed - // 10 MiB. - StreamingRead(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (Spanner_StreamingReadClient, error) - // Begins a new transaction. This step can often be skipped: - // [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and - // [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a - // side-effect. - BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*Transaction, error) - // Commits a transaction. The request includes the mutations to be - // applied to rows in the database. - // - // `Commit` might return an `ABORTED` error. This can occur at any time; - // commonly, the cause is conflicts with concurrent - // transactions. However, it can also happen for a variety of other - // reasons. If `Commit` returns `ABORTED`, the caller should re-attempt - // the transaction from the beginning, re-using the same session. - Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) - // Rolls back a transaction, releasing any locks it holds. It is a good - // idea to call this for any transaction that includes one or more - // [Read][google.spanner.v1.Spanner.Read] or [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and - // ultimately decides not to commit. - // - // `Rollback` returns `OK` if it successfully aborts the transaction, the - // transaction was already aborted, or the transaction is not - // found. `Rollback` never returns `ABORTED`. - Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Creates a set of partition tokens that can be used to execute a query - // operation in parallel. Each of the returned partition tokens can be used - // by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset - // of the query result to read. The same session and read-only transaction - // must be used by the PartitionQueryRequest used to create the - // partition tokens and the ExecuteSqlRequests that use the partition tokens. - // Partition tokens become invalid when the session used to create them - // is deleted or begins a new transaction. - PartitionQuery(ctx context.Context, in *PartitionQueryRequest, opts ...grpc.CallOption) (*PartitionResponse, error) - // Creates a set of partition tokens that can be used to execute a read - // operation in parallel. Each of the returned partition tokens can be used - // by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read - // result to read. The same session and read-only transaction must be used by - // the PartitionReadRequest used to create the partition tokens and the - // ReadRequests that use the partition tokens. - // Partition tokens become invalid when the session used to create them - // is deleted or begins a new transaction. - PartitionRead(ctx context.Context, in *PartitionReadRequest, opts ...grpc.CallOption) (*PartitionResponse, error) -} - -type spannerClient struct { - cc *grpc.ClientConn -} - -func NewSpannerClient(cc *grpc.ClientConn) SpannerClient { - return &spannerClient{cc} -} - -func (c *spannerClient) CreateSession(ctx context.Context, in *CreateSessionRequest, opts ...grpc.CallOption) (*Session, error) { - out := new(Session) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/CreateSession", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) GetSession(ctx context.Context, in *GetSessionRequest, opts ...grpc.CallOption) (*Session, error) { - out := new(Session) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/GetSession", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) ListSessions(ctx context.Context, in *ListSessionsRequest, opts ...grpc.CallOption) (*ListSessionsResponse, error) { - out := new(ListSessionsResponse) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/ListSessions", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) DeleteSession(ctx context.Context, in *DeleteSessionRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/DeleteSession", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) ExecuteSql(ctx context.Context, in *ExecuteSqlRequest, opts ...grpc.CallOption) (*ResultSet, error) { - out := new(ResultSet) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/ExecuteSql", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) ExecuteStreamingSql(ctx context.Context, in *ExecuteSqlRequest, opts ...grpc.CallOption) (Spanner_ExecuteStreamingSqlClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Spanner_serviceDesc.Streams[0], c.cc, "/google.spanner.v1.Spanner/ExecuteStreamingSql", opts...) - if err != nil { - return nil, err - } - x := &spannerExecuteStreamingSqlClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Spanner_ExecuteStreamingSqlClient interface { - Recv() (*PartialResultSet, error) - grpc.ClientStream -} - -type spannerExecuteStreamingSqlClient struct { - grpc.ClientStream -} - -func (x *spannerExecuteStreamingSqlClient) Recv() (*PartialResultSet, error) { - m := new(PartialResultSet) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *spannerClient) Read(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (*ResultSet, error) { - out := new(ResultSet) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/Read", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) StreamingRead(ctx context.Context, in *ReadRequest, opts ...grpc.CallOption) (Spanner_StreamingReadClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Spanner_serviceDesc.Streams[1], c.cc, "/google.spanner.v1.Spanner/StreamingRead", opts...) - if err != nil { - return nil, err - } - x := &spannerStreamingReadClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Spanner_StreamingReadClient interface { - Recv() (*PartialResultSet, error) - grpc.ClientStream -} - -type spannerStreamingReadClient struct { - grpc.ClientStream -} - -func (x *spannerStreamingReadClient) Recv() (*PartialResultSet, error) { - m := new(PartialResultSet) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *spannerClient) BeginTransaction(ctx context.Context, in *BeginTransactionRequest, opts ...grpc.CallOption) (*Transaction, error) { - out := new(Transaction) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/BeginTransaction", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) Commit(ctx context.Context, in *CommitRequest, opts ...grpc.CallOption) (*CommitResponse, error) { - out := new(CommitResponse) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/Commit", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) Rollback(ctx context.Context, in *RollbackRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/Rollback", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) PartitionQuery(ctx context.Context, in *PartitionQueryRequest, opts ...grpc.CallOption) (*PartitionResponse, error) { - out := new(PartitionResponse) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/PartitionQuery", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *spannerClient) PartitionRead(ctx context.Context, in *PartitionReadRequest, opts ...grpc.CallOption) (*PartitionResponse, error) { - out := new(PartitionResponse) - err := grpc.Invoke(ctx, "/google.spanner.v1.Spanner/PartitionRead", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Spanner service - -type SpannerServer interface { - // Creates a new session. A session can be used to perform - // transactions that read and/or modify data in a Cloud Spanner database. - // Sessions are meant to be reused for many consecutive - // transactions. - // - // Sessions can only execute one transaction at a time. To execute - // multiple concurrent read-write/write-only transactions, create - // multiple sessions. Note that standalone reads and queries use a - // transaction internally, and count toward the one transaction - // limit. - // - // Cloud Spanner limits the number of sessions that can exist at any given - // time; thus, it is a good idea to delete idle and/or unneeded sessions. - // Aside from explicit deletes, Cloud Spanner can delete sessions for which no - // operations are sent for more than an hour. If a session is deleted, - // requests to it return `NOT_FOUND`. - // - // Idle sessions can be kept alive by sending a trivial SQL query - // periodically, e.g., `"SELECT 1"`. - CreateSession(context.Context, *CreateSessionRequest) (*Session, error) - // Gets a session. Returns `NOT_FOUND` if the session does not exist. - // This is mainly useful for determining whether a session is still - // alive. - GetSession(context.Context, *GetSessionRequest) (*Session, error) - // Lists all sessions in a given database. - ListSessions(context.Context, *ListSessionsRequest) (*ListSessionsResponse, error) - // Ends a session, releasing server resources associated with it. - DeleteSession(context.Context, *DeleteSessionRequest) (*google_protobuf4.Empty, error) - // Executes an SQL query, returning all rows in a single reply. This - // method cannot be used to return a result set larger than 10 MiB; - // if the query yields more data than that, the query fails with - // a `FAILED_PRECONDITION` error. - // - // Queries inside read-write transactions might return `ABORTED`. If - // this occurs, the application should restart the transaction from - // the beginning. See [Transaction][google.spanner.v1.Transaction] for more details. - // - // Larger result sets can be fetched in streaming fashion by calling - // [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] instead. - ExecuteSql(context.Context, *ExecuteSqlRequest) (*ResultSet, error) - // Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the result - // set as a stream. Unlike [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there - // is no limit on the size of the returned result set. However, no - // individual row in the result set can exceed 100 MiB, and no - // column value can exceed 10 MiB. - ExecuteStreamingSql(*ExecuteSqlRequest, Spanner_ExecuteStreamingSqlServer) error - // Reads rows from the database using key lookups and scans, as a - // simple key/value style alternative to - // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. This method cannot be used to - // return a result set larger than 10 MiB; if the read matches more - // data than that, the read fails with a `FAILED_PRECONDITION` - // error. - // - // Reads inside read-write transactions might return `ABORTED`. If - // this occurs, the application should restart the transaction from - // the beginning. See [Transaction][google.spanner.v1.Transaction] for more details. - // - // Larger result sets can be yielded in streaming fashion by calling - // [StreamingRead][google.spanner.v1.Spanner.StreamingRead] instead. - Read(context.Context, *ReadRequest) (*ResultSet, error) - // Like [Read][google.spanner.v1.Spanner.Read], except returns the result set as a - // stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no limit on the - // size of the returned result set. However, no individual row in - // the result set can exceed 100 MiB, and no column value can exceed - // 10 MiB. - StreamingRead(*ReadRequest, Spanner_StreamingReadServer) error - // Begins a new transaction. This step can often be skipped: - // [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and - // [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a - // side-effect. - BeginTransaction(context.Context, *BeginTransactionRequest) (*Transaction, error) - // Commits a transaction. The request includes the mutations to be - // applied to rows in the database. - // - // `Commit` might return an `ABORTED` error. This can occur at any time; - // commonly, the cause is conflicts with concurrent - // transactions. However, it can also happen for a variety of other - // reasons. If `Commit` returns `ABORTED`, the caller should re-attempt - // the transaction from the beginning, re-using the same session. - Commit(context.Context, *CommitRequest) (*CommitResponse, error) - // Rolls back a transaction, releasing any locks it holds. It is a good - // idea to call this for any transaction that includes one or more - // [Read][google.spanner.v1.Spanner.Read] or [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and - // ultimately decides not to commit. - // - // `Rollback` returns `OK` if it successfully aborts the transaction, the - // transaction was already aborted, or the transaction is not - // found. `Rollback` never returns `ABORTED`. - Rollback(context.Context, *RollbackRequest) (*google_protobuf4.Empty, error) - // Creates a set of partition tokens that can be used to execute a query - // operation in parallel. Each of the returned partition tokens can be used - // by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset - // of the query result to read. The same session and read-only transaction - // must be used by the PartitionQueryRequest used to create the - // partition tokens and the ExecuteSqlRequests that use the partition tokens. - // Partition tokens become invalid when the session used to create them - // is deleted or begins a new transaction. - PartitionQuery(context.Context, *PartitionQueryRequest) (*PartitionResponse, error) - // Creates a set of partition tokens that can be used to execute a read - // operation in parallel. Each of the returned partition tokens can be used - // by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read - // result to read. The same session and read-only transaction must be used by - // the PartitionReadRequest used to create the partition tokens and the - // ReadRequests that use the partition tokens. - // Partition tokens become invalid when the session used to create them - // is deleted or begins a new transaction. - PartitionRead(context.Context, *PartitionReadRequest) (*PartitionResponse, error) -} - -func RegisterSpannerServer(s *grpc.Server, srv SpannerServer) { - s.RegisterService(&_Spanner_serviceDesc, srv) -} - -func _Spanner_CreateSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).CreateSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/CreateSession", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).CreateSession(ctx, req.(*CreateSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_GetSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).GetSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/GetSession", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).GetSession(ctx, req.(*GetSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_ListSessions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListSessionsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).ListSessions(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/ListSessions", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).ListSessions(ctx, req.(*ListSessionsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_DeleteSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).DeleteSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/DeleteSession", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).DeleteSession(ctx, req.(*DeleteSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_ExecuteSql_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExecuteSqlRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).ExecuteSql(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/ExecuteSql", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).ExecuteSql(ctx, req.(*ExecuteSqlRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_ExecuteStreamingSql_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ExecuteSqlRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(SpannerServer).ExecuteStreamingSql(m, &spannerExecuteStreamingSqlServer{stream}) -} - -type Spanner_ExecuteStreamingSqlServer interface { - Send(*PartialResultSet) error - grpc.ServerStream -} - -type spannerExecuteStreamingSqlServer struct { - grpc.ServerStream -} - -func (x *spannerExecuteStreamingSqlServer) Send(m *PartialResultSet) error { - return x.ServerStream.SendMsg(m) -} - -func _Spanner_Read_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReadRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).Read(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/Read", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).Read(ctx, req.(*ReadRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_StreamingRead_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(ReadRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(SpannerServer).StreamingRead(m, &spannerStreamingReadServer{stream}) -} - -type Spanner_StreamingReadServer interface { - Send(*PartialResultSet) error - grpc.ServerStream -} - -type spannerStreamingReadServer struct { - grpc.ServerStream -} - -func (x *spannerStreamingReadServer) Send(m *PartialResultSet) error { - return x.ServerStream.SendMsg(m) -} - -func _Spanner_BeginTransaction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BeginTransactionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).BeginTransaction(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/BeginTransaction", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).BeginTransaction(ctx, req.(*BeginTransactionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_Commit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CommitRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).Commit(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/Commit", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).Commit(ctx, req.(*CommitRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_Rollback_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RollbackRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).Rollback(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/Rollback", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).Rollback(ctx, req.(*RollbackRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_PartitionQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PartitionQueryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).PartitionQuery(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/PartitionQuery", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).PartitionQuery(ctx, req.(*PartitionQueryRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Spanner_PartitionRead_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PartitionReadRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SpannerServer).PartitionRead(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.spanner.v1.Spanner/PartitionRead", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SpannerServer).PartitionRead(ctx, req.(*PartitionReadRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Spanner_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.spanner.v1.Spanner", - HandlerType: (*SpannerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateSession", - Handler: _Spanner_CreateSession_Handler, - }, - { - MethodName: "GetSession", - Handler: _Spanner_GetSession_Handler, - }, - { - MethodName: "ListSessions", - Handler: _Spanner_ListSessions_Handler, - }, - { - MethodName: "DeleteSession", - Handler: _Spanner_DeleteSession_Handler, - }, - { - MethodName: "ExecuteSql", - Handler: _Spanner_ExecuteSql_Handler, - }, - { - MethodName: "Read", - Handler: _Spanner_Read_Handler, - }, - { - MethodName: "BeginTransaction", - Handler: _Spanner_BeginTransaction_Handler, - }, - { - MethodName: "Commit", - Handler: _Spanner_Commit_Handler, - }, - { - MethodName: "Rollback", - Handler: _Spanner_Rollback_Handler, - }, - { - MethodName: "PartitionQuery", - Handler: _Spanner_PartitionQuery_Handler, - }, - { - MethodName: "PartitionRead", - Handler: _Spanner_PartitionRead_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "ExecuteStreamingSql", - Handler: _Spanner_ExecuteStreamingSql_Handler, - ServerStreams: true, - }, - { - StreamName: "StreamingRead", - Handler: _Spanner_StreamingRead_Handler, - ServerStreams: true, - }, - }, - Metadata: "google/spanner/v1/spanner.proto", -} - -func init() { proto.RegisterFile("google/spanner/v1/spanner.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 1657 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0xdd, 0x6f, 0x53, 0xc9, - 0x15, 0xe7, 0xda, 0x89, 0x13, 0x1f, 0xc7, 0x89, 0x33, 0x98, 0x60, 0x0c, 0x85, 0x70, 0xf9, 0x48, - 0x64, 0xa9, 0x36, 0x49, 0x51, 0x15, 0x02, 0x2d, 0x10, 0x08, 0x90, 0x92, 0x10, 0x73, 0x9d, 0x80, - 0x8a, 0xa8, 0xac, 0xb1, 0x3d, 0xb8, 0xb7, 0xb9, 0x5f, 0xb9, 0x33, 0x8e, 0x62, 0x2a, 0x5e, 0x5a, - 0xf5, 0xbd, 0x2d, 0xaa, 0xfa, 0xd0, 0xbe, 0xed, 0xdb, 0x8a, 0x47, 0x24, 0xde, 0xf6, 0x65, 0xa5, - 0x7d, 0x58, 0x69, 0x9f, 0xf6, 0x5f, 0xd8, 0xff, 0x62, 0x5f, 0x56, 0x33, 0xf7, 0xc3, 0xd7, 0xf6, - 0xc4, 0x31, 0x32, 0xbb, 0xd2, 0x6a, 0x9f, 0x3c, 0x33, 0xe7, 0xcc, 0x9c, 0xdf, 0xfd, 0x9d, 0x33, - 0x73, 0xce, 0x31, 0x5c, 0x68, 0xda, 0x76, 0xd3, 0x20, 0x25, 0xea, 0x60, 0xcb, 0x22, 0x6e, 0xe9, - 0x60, 0x29, 0x18, 0x16, 0x1d, 0xd7, 0x66, 0x36, 0x9a, 0xf5, 0x14, 0x8a, 0xc1, 0xea, 0xc1, 0x52, - 0xfe, 0x9c, 0xbf, 0x07, 0x3b, 0x7a, 0x09, 0x5b, 0x96, 0xcd, 0x30, 0xd3, 0x6d, 0x8b, 0x7a, 0x1b, - 0xf2, 0x67, 0x7d, 0xa9, 0x98, 0xd5, 0x5a, 0xaf, 0x4a, 0xc4, 0x74, 0x58, 0xdb, 0x17, 0x9e, 0xeb, - 0x15, 0x52, 0xe6, 0xb6, 0xea, 0xcc, 0x97, 0x5e, 0xe8, 0x95, 0x32, 0xdd, 0x24, 0x94, 0x61, 0xd3, - 0xe9, 0xd9, 0x1e, 0x41, 0xbb, 0x47, 0xda, 0x81, 0xe5, 0xf9, 0x7e, 0xa9, 0xd9, 0xf2, 0xc0, 0xf9, - 0x1a, 0x6a, 0xbf, 0x86, 0x4b, 0x68, 0xcb, 0x60, 0x55, 0x4a, 0x02, 0x10, 0x97, 0xfa, 0x75, 0x98, - 0x8b, 0x2d, 0x8a, 0xeb, 0x91, 0x83, 0x24, 0x40, 0x58, 0xdb, 0x21, 0x9e, 0x54, 0xfd, 0x33, 0x64, - 0xef, 0xb9, 0x04, 0x33, 0x52, 0x21, 0x94, 0xea, 0xb6, 0xa5, 0x91, 0xfd, 0x16, 0xa1, 0x0c, 0xe5, - 0x61, 0xb2, 0x81, 0x19, 0xae, 0x61, 0x4a, 0x72, 0xca, 0xbc, 0xb2, 0x98, 0xd4, 0xc2, 0x39, 0xba, - 0x0e, 0x13, 0xd4, 0xd3, 0xce, 0xc5, 0xe6, 0x95, 0xc5, 0xd4, 0x72, 0xbe, 0xd8, 0xc7, 0x7c, 0x31, - 0x38, 0x2f, 0x50, 0x55, 0xdf, 0xc5, 0x60, 0xc2, 0x5f, 0x44, 0x08, 0xc6, 0x2c, 0x6c, 0x06, 0x27, - 0x8b, 0x31, 0xfa, 0x3d, 0x24, 0x0c, 0x5c, 0x23, 0x06, 0xcd, 0xc5, 0xe6, 0xe3, 0x8b, 0xa9, 0xe5, - 0xab, 0x47, 0x1f, 0x5a, 0xdc, 0x14, 0x8a, 0xeb, 0x16, 0x73, 0xdb, 0x9a, 0xbf, 0x0b, 0xdd, 0x84, - 0x54, 0x5d, 0x7c, 0x49, 0x95, 0xbb, 0x22, 0x17, 0xef, 0x46, 0x16, 0xf8, 0xa9, 0xb8, 0x13, 0xf8, - 0x49, 0x03, 0x4f, 0x9d, 0x2f, 0xa0, 0x5d, 0x38, 0x83, 0x1d, 0xc7, 0xb5, 0x0f, 0x75, 0x93, 0x9f, - 0x60, 0x60, 0xca, 0xaa, 0x2d, 0xea, 0x1f, 0x35, 0x76, 0xec, 0x51, 0x73, 0x91, 0xcd, 0x9b, 0x98, - 0xb2, 0x5d, 0x2a, 0x8e, 0xcd, 0xdf, 0x80, 0x54, 0x04, 0x2a, 0xca, 0x40, 0x7c, 0x8f, 0xb4, 0xfd, - 0xaf, 0xe6, 0x43, 0x94, 0x85, 0xf1, 0x03, 0x6c, 0xb4, 0x88, 0x20, 0x32, 0xa9, 0x79, 0x93, 0xd5, - 0xd8, 0x8a, 0xa2, 0x2e, 0xc0, 0xec, 0x43, 0xc2, 0x7a, 0xbc, 0x22, 0xe1, 0x4d, 0xfd, 0x87, 0x02, - 0x27, 0x37, 0x75, 0x1a, 0xa8, 0xd2, 0x61, 0x3c, 0x78, 0x16, 0x92, 0x0e, 0x6e, 0x92, 0x2a, 0xd5, - 0x5f, 0x7b, 0xa6, 0xc7, 0xb5, 0x49, 0xbe, 0x50, 0xd1, 0x5f, 0x13, 0xf4, 0x2b, 0x00, 0x21, 0x64, - 0xf6, 0x1e, 0xb1, 0x04, 0x8f, 0x49, 0x4d, 0xa8, 0xef, 0xf0, 0x05, 0x34, 0x07, 0x89, 0x57, 0xba, - 0xc1, 0x88, 0x2b, 0x78, 0x49, 0x6a, 0xfe, 0x4c, 0x3d, 0x80, 0x6c, 0x37, 0x0c, 0xea, 0xd8, 0x16, - 0x25, 0xe8, 0xb7, 0x30, 0xe9, 0x87, 0x00, 0xcd, 0x29, 0xc2, 0xb3, 0x83, 0xc2, 0x25, 0xd4, 0x45, - 0x57, 0x61, 0xc6, 0x22, 0x87, 0xac, 0x1a, 0xc1, 0xe2, 0x91, 0x94, 0xe6, 0xcb, 0xe5, 0x00, 0x8f, - 0x5a, 0x80, 0xec, 0x7d, 0x62, 0x90, 0xbe, 0x08, 0x96, 0x71, 0xf5, 0x7e, 0x0c, 0x66, 0xd7, 0x0f, - 0x49, 0xbd, 0xc5, 0x48, 0x65, 0xdf, 0x08, 0x34, 0x73, 0x9d, 0x78, 0xf6, 0x94, 0x83, 0x29, 0x7a, - 0x04, 0xa9, 0xc8, 0x85, 0xf2, 0xa3, 0x5d, 0x16, 0x98, 0x3b, 0x1d, 0xad, 0x0a, 0x31, 0x48, 0x9d, - 0xd9, 0xae, 0x16, 0xdd, 0xca, 0x5d, 0x4f, 0xf7, 0x0d, 0x9f, 0x4d, 0x3e, 0x44, 0x25, 0x48, 0x38, - 0xd8, 0xc5, 0x26, 0xf5, 0xe3, 0xeb, 0x74, 0x5f, 0x7c, 0x55, 0xc4, 0x83, 0xa3, 0xf9, 0x6a, 0x68, - 0x17, 0x52, 0x62, 0x54, 0xe5, 0xd7, 0x97, 0xe6, 0xc6, 0x05, 0x97, 0xd7, 0x25, 0x60, 0xfa, 0xbe, - 0xb0, 0x58, 0xe6, 0xfb, 0x76, 0xf8, 0x36, 0xef, 0xce, 0x80, 0x13, 0x2e, 0xa0, 0x8b, 0x30, 0xc5, - 0x1f, 0x16, 0x33, 0x20, 0x39, 0x31, 0xaf, 0x2c, 0x4e, 0x69, 0x29, 0x6f, 0xcd, 0x73, 0xf9, 0x16, - 0xc0, 0x7e, 0x8b, 0xb8, 0xed, 0xaa, 0x69, 0x37, 0x48, 0x6e, 0x62, 0x5e, 0x59, 0x9c, 0x5e, 0x2e, - 0x0e, 0x65, 0xf8, 0x29, 0xdf, 0xb6, 0x65, 0x37, 0x88, 0x96, 0xdc, 0x0f, 0x86, 0x68, 0x01, 0x66, - 0x1c, 0xec, 0x32, 0x9d, 0x13, 0xe3, 0x1b, 0x9d, 0x14, 0x46, 0xa7, 0xc3, 0x65, 0x61, 0x37, 0xff, - 0x0c, 0x66, 0x7a, 0x90, 0x4b, 0xae, 0xd0, 0xaf, 0xa3, 0x57, 0x28, 0x42, 0x63, 0xd4, 0x3b, 0x6d, - 0x87, 0x44, 0xef, 0x56, 0x11, 0x92, 0x21, 0x30, 0x04, 0x90, 0x78, 0xb2, 0xad, 0x6d, 0xdd, 0xdd, - 0xcc, 0x9c, 0x40, 0x93, 0x30, 0x56, 0xde, 0xbc, 0xfb, 0x24, 0xa3, 0xa0, 0x14, 0x4c, 0x94, 0xb5, - 0xed, 0x07, 0x1b, 0x9b, 0xeb, 0x99, 0x98, 0xba, 0x07, 0x99, 0x72, 0x80, 0x6c, 0xdb, 0x11, 0x19, - 0x04, 0x5d, 0x83, 0x6c, 0xe7, 0x23, 0xf8, 0x3d, 0xaa, 0xd6, 0xda, 0x8c, 0x50, 0x81, 0x2c, 0xae, - 0xa1, 0x50, 0xc6, 0xaf, 0xd4, 0x1a, 0x97, 0xa0, 0x2b, 0x30, 0x6d, 0xe2, 0xc3, 0x6a, 0x28, 0xa1, - 0x02, 0x71, 0x5c, 0x4b, 0x9b, 0xf8, 0x30, 0x3c, 0x9e, 0xaa, 0x5f, 0xc6, 0xe1, 0x54, 0x38, 0x15, - 0x30, 0x7f, 0x66, 0x71, 0xfa, 0x47, 0x59, 0x9c, 0xae, 0x48, 0xc0, 0x48, 0xbf, 0x72, 0x60, 0xac, - 0x96, 0x61, 0xb6, 0x43, 0xba, 0xed, 0x79, 0x42, 0x04, 0x6c, 0x6a, 0xf9, 0xd2, 0x20, 0x03, 0xbe, - 0xd3, 0xb4, 0x8c, 0xd3, 0xb3, 0xf2, 0xa3, 0x85, 0xd8, 0x57, 0x31, 0xc8, 0x86, 0xe6, 0x35, 0x82, - 0x1b, 0x3f, 0xa5, 0x13, 0xb3, 0x30, 0xce, 0x70, 0xcd, 0x20, 0xbe, 0x1b, 0xbd, 0x09, 0x5f, 0xd5, - 0xad, 0x06, 0x39, 0xf4, 0xdf, 0x6d, 0x6f, 0xc2, 0xf1, 0xd4, 0x6d, 0xa3, 0x65, 0x5a, 0x9e, 0xa7, - 0x92, 0x5a, 0x30, 0x45, 0xcb, 0x30, 0xb1, 0x47, 0xda, 0xbc, 0xdc, 0xf0, 0x29, 0x3e, 0x23, 0xc1, - 0xf2, 0x98, 0xb4, 0x2b, 0x84, 0x69, 0x89, 0x3d, 0xf1, 0x2b, 0x77, 0x50, 0x72, 0x04, 0x07, 0xa9, - 0xd7, 0x21, 0x19, 0x6a, 0xc9, 0x5e, 0x0e, 0x45, 0xf6, 0x72, 0xa8, 0x6f, 0x15, 0x98, 0x8d, 0xd0, - 0xef, 0xa7, 0xa2, 0x5b, 0x3c, 0xb3, 0x85, 0xb7, 0xcf, 0x4b, 0x46, 0xe7, 0x06, 0xc1, 0xd2, 0x22, - 0xfa, 0xe8, 0x8e, 0xcc, 0x3f, 0xe7, 0x07, 0xfb, 0xa7, 0xcb, 0x2f, 0xea, 0x37, 0x31, 0x48, 0xfd, - 0x72, 0x62, 0x21, 0x0b, 0xe3, 0x86, 0x6e, 0xea, 0x4c, 0x3c, 0xee, 0x71, 0xcd, 0x9b, 0xf4, 0xa5, - 0x9b, 0x64, 0x7f, 0xba, 0x91, 0x78, 0x19, 0xa4, 0x5e, 0x66, 0x70, 0x7a, 0x8d, 0x34, 0x75, 0x2b, - 0x4a, 0xf8, 0xb1, 0xd4, 0xde, 0x86, 0x89, 0x20, 0x30, 0x3d, 0x5a, 0xaf, 0x0c, 0xa6, 0x35, 0x08, - 0xcd, 0x60, 0x97, 0xfa, 0xbd, 0x02, 0xe9, 0x7b, 0xb6, 0x69, 0xea, 0xec, 0x78, 0x63, 0x0b, 0x30, - 0x1d, 0x71, 0x46, 0x55, 0x6f, 0x08, 0x9b, 0x53, 0x8f, 0x4e, 0x68, 0xe9, 0xc8, 0xfa, 0x46, 0x03, - 0xfd, 0x09, 0xe6, 0xa8, 0x6e, 0x35, 0x0d, 0xe2, 0x95, 0x9d, 0x11, 0xdf, 0xc7, 0x3f, 0x02, 0xe4, - 0xa3, 0x13, 0x5a, 0xd6, 0x3b, 0x86, 0x57, 0xa0, 0x91, 0x28, 0xb8, 0x01, 0xc9, 0xa0, 0xbf, 0xe0, - 0xef, 0x38, 0x0f, 0xfc, 0xb3, 0x92, 0x13, 0xb7, 0x7c, 0x1d, 0xad, 0xa3, 0xbd, 0x96, 0xee, 0x0a, - 0x45, 0xf5, 0x39, 0x4c, 0x07, 0x1f, 0xef, 0xdf, 0xaa, 0x75, 0xc8, 0xd4, 0xc5, 0x4a, 0x35, 0xec, - 0x81, 0x04, 0x0d, 0x83, 0x4b, 0xe6, 0x19, 0x6f, 0x4f, 0xb8, 0xa0, 0x6a, 0x30, 0xa3, 0xd9, 0x86, - 0x51, 0xc3, 0xf5, 0xbd, 0xe3, 0x79, 0xbd, 0x22, 0xe7, 0xb5, 0x87, 0xd5, 0xe5, 0xbf, 0xcf, 0xc2, - 0x44, 0xc5, 0xfb, 0x3c, 0xf4, 0x3f, 0xee, 0xb6, 0x68, 0xab, 0x83, 0x16, 0x24, 0x0c, 0xc8, 0x9a, - 0xa1, 0xfc, 0x80, 0x82, 0x55, 0x5d, 0xff, 0xdb, 0xb7, 0xdf, 0xbd, 0x8d, 0xdd, 0x56, 0x57, 0x79, - 0x63, 0xf5, 0xd7, 0xa0, 0xc2, 0xfe, 0x9d, 0xe3, 0xda, 0x7f, 0x21, 0x75, 0x46, 0x4b, 0x85, 0x92, - 0x6e, 0x51, 0x86, 0xad, 0x3a, 0xe1, 0xe3, 0x40, 0x4e, 0x4b, 0x85, 0x37, 0xa5, 0xa0, 0xd4, 0x5d, - 0x55, 0x0a, 0xe8, 0x9f, 0x0a, 0x40, 0xa7, 0xde, 0x47, 0x97, 0x25, 0x16, 0xfb, 0xda, 0x81, 0x81, - 0xb8, 0xee, 0x08, 0x5c, 0xab, 0x68, 0x45, 0xe0, 0xe2, 0xd5, 0xef, 0x10, 0x98, 0x42, 0x48, 0xa5, - 0xc2, 0x1b, 0xf4, 0x99, 0x02, 0x53, 0xd1, 0x8a, 0x1e, 0xc9, 0xde, 0x1f, 0x49, 0xe7, 0x91, 0x5f, - 0x38, 0x56, 0xcf, 0x8b, 0x1c, 0x75, 0x4d, 0x60, 0xbc, 0x85, 0x46, 0xe0, 0x0e, 0xfd, 0x5b, 0x81, - 0x74, 0x57, 0xfd, 0x2f, 0x75, 0xab, 0xac, 0x43, 0xc8, 0xcf, 0xf5, 0x85, 0xe7, 0x3a, 0xef, 0xff, - 0x03, 0xea, 0x0a, 0x23, 0x51, 0x07, 0x9d, 0x62, 0x58, 0xea, 0xcd, 0xbe, 0x5a, 0x39, 0x2f, 0xcb, - 0x44, 0x9a, 0x68, 0xf9, 0x2b, 0x84, 0xa9, 0x4f, 0x05, 0xa8, 0xc7, 0xea, 0x03, 0x01, 0xca, 0x37, - 0xf6, 0x91, 0xb8, 0x56, 0x49, 0x68, 0x94, 0xc7, 0xdc, 0x17, 0x0a, 0x9c, 0x0c, 0x60, 0x30, 0x97, - 0x60, 0x53, 0xb7, 0x9a, 0xc3, 0xc3, 0x3d, 0x32, 0x9f, 0x63, 0xa3, 0x83, 0xfa, 0x85, 0x40, 0xbd, - 0xa3, 0x6e, 0x7f, 0x0a, 0xd4, 0x11, 0x8c, 0xab, 0x4a, 0xe1, 0x9a, 0x82, 0xfe, 0xa5, 0xc0, 0x18, - 0xcf, 0xa7, 0xe8, 0xbc, 0x94, 0xba, 0x30, 0xd1, 0x1e, 0x43, 0xed, 0x63, 0x01, 0x72, 0x5d, 0xbd, - 0x33, 0x0a, 0x48, 0x97, 0xe0, 0x06, 0x27, 0xf5, 0x9d, 0x02, 0xe9, 0x10, 0xe9, 0x50, 0xe0, 0x86, - 0x22, 0x72, 0x47, 0x60, 0x7c, 0xa2, 0x6e, 0x8c, 0x82, 0x91, 0x46, 0x71, 0x79, 0x14, 0x7e, 0x50, - 0x20, 0xd3, 0x9b, 0x43, 0x51, 0x41, 0x82, 0xe8, 0x88, 0x44, 0x9b, 0x3f, 0xa6, 0x00, 0x52, 0x9f, - 0x0b, 0xe0, 0x4f, 0xd5, 0xcd, 0x51, 0x80, 0xd7, 0x7a, 0x8c, 0x73, 0xa2, 0xff, 0xaf, 0x40, 0xc2, - 0xcb, 0x44, 0x68, 0x5e, 0xf6, 0x90, 0x47, 0x33, 0x74, 0xfe, 0xe2, 0x00, 0x0d, 0xff, 0x31, 0xda, - 0x12, 0x40, 0x1f, 0xaa, 0x6b, 0xa3, 0x00, 0xf5, 0x92, 0x1a, 0x87, 0xf7, 0x5f, 0x05, 0x26, 0x83, - 0x7c, 0x86, 0x54, 0x59, 0x08, 0x74, 0x27, 0xbb, 0x23, 0x5f, 0xa3, 0x6d, 0x81, 0x6b, 0x43, 0xbd, - 0x3f, 0x52, 0x74, 0xfa, 0xc6, 0x38, 0xb2, 0x0f, 0x0a, 0x4c, 0x77, 0xb7, 0x5e, 0x68, 0x71, 0xd8, - 0xee, 0x2c, 0x7f, 0x79, 0x60, 0xb9, 0x1c, 0x70, 0xb9, 0x2b, 0x30, 0x6f, 0xab, 0x7f, 0x18, 0x05, - 0xb3, 0xd3, 0x05, 0x80, 0x23, 0x7f, 0xaf, 0x40, 0xba, 0xab, 0xa9, 0x92, 0xbe, 0xf5, 0xb2, 0xb6, - 0x6b, 0x48, 0xdc, 0x9f, 0xe4, 0x96, 0x39, 0x51, 0xfb, 0xab, 0x4a, 0x61, 0xed, 0x3f, 0x0a, 0x9c, - 0xaa, 0xdb, 0x66, 0x3f, 0x82, 0xb5, 0x29, 0xbf, 0x38, 0x29, 0x73, 0x97, 0x97, 0x95, 0x17, 0x2b, - 0xbe, 0x4a, 0xd3, 0x36, 0xb0, 0xd5, 0x2c, 0xda, 0x6e, 0xb3, 0xd4, 0x24, 0x96, 0x08, 0x88, 0x92, - 0x27, 0xc2, 0x8e, 0x4e, 0x23, 0x7f, 0xe5, 0xde, 0xf4, 0x87, 0x9f, 0xc7, 0x4e, 0x3f, 0xf4, 0xb6, - 0xde, 0x33, 0xec, 0x56, 0xa3, 0xe8, 0x9f, 0x5b, 0x7c, 0xb6, 0xf4, 0x75, 0x20, 0x79, 0x29, 0x24, - 0x2f, 0x7d, 0xc9, 0xcb, 0x67, 0x4b, 0xb5, 0x84, 0x38, 0xf8, 0x37, 0x3f, 0x04, 0x00, 0x00, 0xff, - 0xff, 0x92, 0x18, 0x4b, 0x1c, 0x59, 0x17, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/v1/transaction.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/v1/transaction.pb.go deleted file mode 100644 index f63797d3..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/v1/transaction.pb.go +++ /dev/null @@ -1,835 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/v1/transaction.proto - -package spanner - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf2 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// # Transactions -// -// -// Each session can have at most one active transaction at a time. After the -// active transaction is completed, the session can immediately be -// re-used for the next transaction. It is not necessary to create a -// new session for each transaction. -// -// # Transaction Modes -// -// Cloud Spanner supports two transaction modes: -// -// 1. Locking read-write. This type of transaction is the only way -// to write data into Cloud Spanner. These transactions rely on -// pessimistic locking and, if necessary, two-phase commit. -// Locking read-write transactions may abort, requiring the -// application to retry. -// -// 2. Snapshot read-only. This transaction type provides guaranteed -// consistency across several reads, but does not allow -// writes. Snapshot read-only transactions can be configured to -// read at timestamps in the past. Snapshot read-only -// transactions do not need to be committed. -// -// For transactions that only read, snapshot read-only transactions -// provide simpler semantics and are almost always faster. In -// particular, read-only transactions do not take locks, so they do -// not conflict with read-write transactions. As a consequence of not -// taking locks, they also do not abort, so retry loops are not needed. -// -// Transactions may only read/write data in a single database. They -// may, however, read/write data in different tables within that -// database. -// -// ## Locking Read-Write Transactions -// -// Locking transactions may be used to atomically read-modify-write -// data anywhere in a database. This type of transaction is externally -// consistent. -// -// Clients should attempt to minimize the amount of time a transaction -// is active. Faster transactions commit with higher probability -// and cause less contention. Cloud Spanner attempts to keep read locks -// active as long as the transaction continues to do reads, and the -// transaction has not been terminated by -// [Commit][google.spanner.v1.Spanner.Commit] or -// [Rollback][google.spanner.v1.Spanner.Rollback]. Long periods of -// inactivity at the client may cause Cloud Spanner to release a -// transaction's locks and abort it. -// -// Reads performed within a transaction acquire locks on the data -// being read. Writes can only be done at commit time, after all reads -// have been completed. -// Conceptually, a read-write transaction consists of zero or more -// reads or SQL queries followed by -// [Commit][google.spanner.v1.Spanner.Commit]. At any time before -// [Commit][google.spanner.v1.Spanner.Commit], the client can send a -// [Rollback][google.spanner.v1.Spanner.Rollback] request to abort the -// transaction. -// -// ### Semantics -// -// Cloud Spanner can commit the transaction if all read locks it acquired -// are still valid at commit time, and it is able to acquire write -// locks for all writes. Cloud Spanner can abort the transaction for any -// reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees -// that the transaction has not modified any user data in Cloud Spanner. -// -// Unless the transaction commits, Cloud Spanner makes no guarantees about -// how long the transaction's locks were held for. It is an error to -// use Cloud Spanner locks for any sort of mutual exclusion other than -// between Cloud Spanner transactions themselves. -// -// ### Retrying Aborted Transactions -// -// When a transaction aborts, the application can choose to retry the -// whole transaction again. To maximize the chances of successfully -// committing the retry, the client should execute the retry in the -// same session as the original attempt. The original session's lock -// priority increases with each consecutive abort, meaning that each -// attempt has a slightly better chance of success than the previous. -// -// Under some circumstances (e.g., many transactions attempting to -// modify the same row(s)), a transaction can abort many times in a -// short period before successfully committing. Thus, it is not a good -// idea to cap the number of retries a transaction can attempt; -// instead, it is better to limit the total amount of wall time spent -// retrying. -// -// ### Idle Transactions -// -// A transaction is considered idle if it has no outstanding reads or -// SQL queries and has not started a read or SQL query within the last 10 -// seconds. Idle transactions can be aborted by Cloud Spanner so that they -// don't hold on to locks indefinitely. In that case, the commit will -// fail with error `ABORTED`. -// -// If this behavior is undesirable, periodically executing a simple -// SQL query in the transaction (e.g., `SELECT 1`) prevents the -// transaction from becoming idle. -// -// ## Snapshot Read-Only Transactions -// -// Snapshot read-only transactions provides a simpler method than -// locking read-write transactions for doing several consistent -// reads. However, this type of transaction does not support writes. -// -// Snapshot transactions do not take locks. Instead, they work by -// choosing a Cloud Spanner timestamp, then executing all reads at that -// timestamp. Since they do not acquire locks, they do not block -// concurrent read-write transactions. -// -// Unlike locking read-write transactions, snapshot read-only -// transactions never abort. They can fail if the chosen read -// timestamp is garbage collected; however, the default garbage -// collection policy is generous enough that most applications do not -// need to worry about this in practice. -// -// Snapshot read-only transactions do not need to call -// [Commit][google.spanner.v1.Spanner.Commit] or -// [Rollback][google.spanner.v1.Spanner.Rollback] (and in fact are not -// permitted to do so). -// -// To execute a snapshot transaction, the client specifies a timestamp -// bound, which tells Cloud Spanner how to choose a read timestamp. -// -// The types of timestamp bound are: -// -// - Strong (the default). -// - Bounded staleness. -// - Exact staleness. -// -// If the Cloud Spanner database to be read is geographically distributed, -// stale read-only transactions can execute more quickly than strong -// or read-write transaction, because they are able to execute far -// from the leader replica. -// -// Each type of timestamp bound is discussed in detail below. -// -// ### Strong -// -// Strong reads are guaranteed to see the effects of all transactions -// that have committed before the start of the read. Furthermore, all -// rows yielded by a single read are consistent with each other -- if -// any part of the read observes a transaction, all parts of the read -// see the transaction. -// -// Strong reads are not repeatable: two consecutive strong read-only -// transactions might return inconsistent results if there are -// concurrent writes. If consistency across reads is required, the -// reads should be executed within a transaction or at an exact read -// timestamp. -// -// See [TransactionOptions.ReadOnly.strong][google.spanner.v1.TransactionOptions.ReadOnly.strong]. -// -// ### Exact Staleness -// -// These timestamp bounds execute reads at a user-specified -// timestamp. Reads at a timestamp are guaranteed to see a consistent -// prefix of the global transaction history: they observe -// modifications done by all transactions with a commit timestamp <= -// the read timestamp, and observe none of the modifications done by -// transactions with a larger commit timestamp. They will block until -// all conflicting transactions that may be assigned commit timestamps -// <= the read timestamp have finished. -// -// The timestamp can either be expressed as an absolute Cloud Spanner commit -// timestamp or a staleness relative to the current time. -// -// These modes do not require a "negotiation phase" to pick a -// timestamp. As a result, they execute slightly faster than the -// equivalent boundedly stale concurrency modes. On the other hand, -// boundedly stale reads usually return fresher results. -// -// See [TransactionOptions.ReadOnly.read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.read_timestamp] and -// [TransactionOptions.ReadOnly.exact_staleness][google.spanner.v1.TransactionOptions.ReadOnly.exact_staleness]. -// -// ### Bounded Staleness -// -// Bounded staleness modes allow Cloud Spanner to pick the read timestamp, -// subject to a user-provided staleness bound. Cloud Spanner chooses the -// newest timestamp within the staleness bound that allows execution -// of the reads at the closest available replica without blocking. -// -// All rows yielded are consistent with each other -- if any part of -// the read observes a transaction, all parts of the read see the -// transaction. Boundedly stale reads are not repeatable: two stale -// reads, even if they use the same staleness bound, can execute at -// different timestamps and thus return inconsistent results. -// -// Boundedly stale reads execute in two phases: the first phase -// negotiates a timestamp among all replicas needed to serve the -// read. In the second phase, reads are executed at the negotiated -// timestamp. -// -// As a result of the two phase execution, bounded staleness reads are -// usually a little slower than comparable exact staleness -// reads. However, they are typically able to return fresher -// results, and are more likely to execute at the closest replica. -// -// Because the timestamp negotiation requires up-front knowledge of -// which rows will be read, it can only be used with single-use -// read-only transactions. -// -// See [TransactionOptions.ReadOnly.max_staleness][google.spanner.v1.TransactionOptions.ReadOnly.max_staleness] and -// [TransactionOptions.ReadOnly.min_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.min_read_timestamp]. -// -// ### Old Read Timestamps and Garbage Collection -// -// Cloud Spanner continuously garbage collects deleted and overwritten data -// in the background to reclaim storage space. This process is known -// as "version GC". By default, version GC reclaims versions after they -// are one hour old. Because of this, Cloud Spanner cannot perform reads -// at read timestamps more than one hour in the past. This -// restriction also applies to in-progress reads and/or SQL queries whose -// timestamp become too old while executing. Reads and SQL queries with -// too-old read timestamps fail with the error `FAILED_PRECONDITION`. -type TransactionOptions struct { - // Required. The type of transaction. - // - // Types that are valid to be assigned to Mode: - // *TransactionOptions_ReadWrite_ - // *TransactionOptions_ReadOnly_ - Mode isTransactionOptions_Mode `protobuf_oneof:"mode"` -} - -func (m *TransactionOptions) Reset() { *m = TransactionOptions{} } -func (m *TransactionOptions) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions) ProtoMessage() {} -func (*TransactionOptions) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} } - -type isTransactionOptions_Mode interface { - isTransactionOptions_Mode() -} - -type TransactionOptions_ReadWrite_ struct { - ReadWrite *TransactionOptions_ReadWrite `protobuf:"bytes,1,opt,name=read_write,json=readWrite,oneof"` -} -type TransactionOptions_ReadOnly_ struct { - ReadOnly *TransactionOptions_ReadOnly `protobuf:"bytes,2,opt,name=read_only,json=readOnly,oneof"` -} - -func (*TransactionOptions_ReadWrite_) isTransactionOptions_Mode() {} -func (*TransactionOptions_ReadOnly_) isTransactionOptions_Mode() {} - -func (m *TransactionOptions) GetMode() isTransactionOptions_Mode { - if m != nil { - return m.Mode - } - return nil -} - -func (m *TransactionOptions) GetReadWrite() *TransactionOptions_ReadWrite { - if x, ok := m.GetMode().(*TransactionOptions_ReadWrite_); ok { - return x.ReadWrite - } - return nil -} - -func (m *TransactionOptions) GetReadOnly() *TransactionOptions_ReadOnly { - if x, ok := m.GetMode().(*TransactionOptions_ReadOnly_); ok { - return x.ReadOnly - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TransactionOptions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TransactionOptions_OneofMarshaler, _TransactionOptions_OneofUnmarshaler, _TransactionOptions_OneofSizer, []interface{}{ - (*TransactionOptions_ReadWrite_)(nil), - (*TransactionOptions_ReadOnly_)(nil), - } -} - -func _TransactionOptions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TransactionOptions) - // mode - switch x := m.Mode.(type) { - case *TransactionOptions_ReadWrite_: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadWrite); err != nil { - return err - } - case *TransactionOptions_ReadOnly_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadOnly); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransactionOptions.Mode has unexpected type %T", x) - } - return nil -} - -func _TransactionOptions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TransactionOptions) - switch tag { - case 1: // mode.read_write - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions_ReadWrite) - err := b.DecodeMessage(msg) - m.Mode = &TransactionOptions_ReadWrite_{msg} - return true, err - case 2: // mode.read_only - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions_ReadOnly) - err := b.DecodeMessage(msg) - m.Mode = &TransactionOptions_ReadOnly_{msg} - return true, err - default: - return false, nil - } -} - -func _TransactionOptions_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TransactionOptions) - // mode - switch x := m.Mode.(type) { - case *TransactionOptions_ReadWrite_: - s := proto.Size(x.ReadWrite) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransactionOptions_ReadOnly_: - s := proto.Size(x.ReadOnly) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Message type to initiate a read-write transaction. Currently this -// transaction type has no options. -type TransactionOptions_ReadWrite struct { -} - -func (m *TransactionOptions_ReadWrite) Reset() { *m = TransactionOptions_ReadWrite{} } -func (m *TransactionOptions_ReadWrite) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions_ReadWrite) ProtoMessage() {} -func (*TransactionOptions_ReadWrite) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 0} } - -// Message type to initiate a read-only transaction. -type TransactionOptions_ReadOnly struct { - // How to choose the timestamp for the read-only transaction. - // - // Types that are valid to be assigned to TimestampBound: - // *TransactionOptions_ReadOnly_Strong - // *TransactionOptions_ReadOnly_MinReadTimestamp - // *TransactionOptions_ReadOnly_MaxStaleness - // *TransactionOptions_ReadOnly_ReadTimestamp - // *TransactionOptions_ReadOnly_ExactStaleness - TimestampBound isTransactionOptions_ReadOnly_TimestampBound `protobuf_oneof:"timestamp_bound"` - // If true, the Cloud Spanner-selected read timestamp is included in - // the [Transaction][google.spanner.v1.Transaction] message that describes the transaction. - ReturnReadTimestamp bool `protobuf:"varint,6,opt,name=return_read_timestamp,json=returnReadTimestamp" json:"return_read_timestamp,omitempty"` -} - -func (m *TransactionOptions_ReadOnly) Reset() { *m = TransactionOptions_ReadOnly{} } -func (m *TransactionOptions_ReadOnly) String() string { return proto.CompactTextString(m) } -func (*TransactionOptions_ReadOnly) ProtoMessage() {} -func (*TransactionOptions_ReadOnly) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0, 1} } - -type isTransactionOptions_ReadOnly_TimestampBound interface { - isTransactionOptions_ReadOnly_TimestampBound() -} - -type TransactionOptions_ReadOnly_Strong struct { - Strong bool `protobuf:"varint,1,opt,name=strong,oneof"` -} -type TransactionOptions_ReadOnly_MinReadTimestamp struct { - MinReadTimestamp *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=min_read_timestamp,json=minReadTimestamp,oneof"` -} -type TransactionOptions_ReadOnly_MaxStaleness struct { - MaxStaleness *google_protobuf2.Duration `protobuf:"bytes,3,opt,name=max_staleness,json=maxStaleness,oneof"` -} -type TransactionOptions_ReadOnly_ReadTimestamp struct { - ReadTimestamp *google_protobuf3.Timestamp `protobuf:"bytes,4,opt,name=read_timestamp,json=readTimestamp,oneof"` -} -type TransactionOptions_ReadOnly_ExactStaleness struct { - ExactStaleness *google_protobuf2.Duration `protobuf:"bytes,5,opt,name=exact_staleness,json=exactStaleness,oneof"` -} - -func (*TransactionOptions_ReadOnly_Strong) isTransactionOptions_ReadOnly_TimestampBound() {} -func (*TransactionOptions_ReadOnly_MinReadTimestamp) isTransactionOptions_ReadOnly_TimestampBound() {} -func (*TransactionOptions_ReadOnly_MaxStaleness) isTransactionOptions_ReadOnly_TimestampBound() {} -func (*TransactionOptions_ReadOnly_ReadTimestamp) isTransactionOptions_ReadOnly_TimestampBound() {} -func (*TransactionOptions_ReadOnly_ExactStaleness) isTransactionOptions_ReadOnly_TimestampBound() {} - -func (m *TransactionOptions_ReadOnly) GetTimestampBound() isTransactionOptions_ReadOnly_TimestampBound { - if m != nil { - return m.TimestampBound - } - return nil -} - -func (m *TransactionOptions_ReadOnly) GetStrong() bool { - if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_Strong); ok { - return x.Strong - } - return false -} - -func (m *TransactionOptions_ReadOnly) GetMinReadTimestamp() *google_protobuf3.Timestamp { - if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_MinReadTimestamp); ok { - return x.MinReadTimestamp - } - return nil -} - -func (m *TransactionOptions_ReadOnly) GetMaxStaleness() *google_protobuf2.Duration { - if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_MaxStaleness); ok { - return x.MaxStaleness - } - return nil -} - -func (m *TransactionOptions_ReadOnly) GetReadTimestamp() *google_protobuf3.Timestamp { - if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_ReadTimestamp); ok { - return x.ReadTimestamp - } - return nil -} - -func (m *TransactionOptions_ReadOnly) GetExactStaleness() *google_protobuf2.Duration { - if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_ExactStaleness); ok { - return x.ExactStaleness - } - return nil -} - -func (m *TransactionOptions_ReadOnly) GetReturnReadTimestamp() bool { - if m != nil { - return m.ReturnReadTimestamp - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TransactionOptions_ReadOnly) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TransactionOptions_ReadOnly_OneofMarshaler, _TransactionOptions_ReadOnly_OneofUnmarshaler, _TransactionOptions_ReadOnly_OneofSizer, []interface{}{ - (*TransactionOptions_ReadOnly_Strong)(nil), - (*TransactionOptions_ReadOnly_MinReadTimestamp)(nil), - (*TransactionOptions_ReadOnly_MaxStaleness)(nil), - (*TransactionOptions_ReadOnly_ReadTimestamp)(nil), - (*TransactionOptions_ReadOnly_ExactStaleness)(nil), - } -} - -func _TransactionOptions_ReadOnly_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TransactionOptions_ReadOnly) - // timestamp_bound - switch x := m.TimestampBound.(type) { - case *TransactionOptions_ReadOnly_Strong: - t := uint64(0) - if x.Strong { - t = 1 - } - b.EncodeVarint(1<<3 | proto.WireVarint) - b.EncodeVarint(t) - case *TransactionOptions_ReadOnly_MinReadTimestamp: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.MinReadTimestamp); err != nil { - return err - } - case *TransactionOptions_ReadOnly_MaxStaleness: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.MaxStaleness); err != nil { - return err - } - case *TransactionOptions_ReadOnly_ReadTimestamp: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ReadTimestamp); err != nil { - return err - } - case *TransactionOptions_ReadOnly_ExactStaleness: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ExactStaleness); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransactionOptions_ReadOnly.TimestampBound has unexpected type %T", x) - } - return nil -} - -func _TransactionOptions_ReadOnly_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TransactionOptions_ReadOnly) - switch tag { - case 1: // timestamp_bound.strong - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.TimestampBound = &TransactionOptions_ReadOnly_Strong{x != 0} - return true, err - case 2: // timestamp_bound.min_read_timestamp - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf3.Timestamp) - err := b.DecodeMessage(msg) - m.TimestampBound = &TransactionOptions_ReadOnly_MinReadTimestamp{msg} - return true, err - case 3: // timestamp_bound.max_staleness - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf2.Duration) - err := b.DecodeMessage(msg) - m.TimestampBound = &TransactionOptions_ReadOnly_MaxStaleness{msg} - return true, err - case 4: // timestamp_bound.read_timestamp - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf3.Timestamp) - err := b.DecodeMessage(msg) - m.TimestampBound = &TransactionOptions_ReadOnly_ReadTimestamp{msg} - return true, err - case 5: // timestamp_bound.exact_staleness - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(google_protobuf2.Duration) - err := b.DecodeMessage(msg) - m.TimestampBound = &TransactionOptions_ReadOnly_ExactStaleness{msg} - return true, err - default: - return false, nil - } -} - -func _TransactionOptions_ReadOnly_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TransactionOptions_ReadOnly) - // timestamp_bound - switch x := m.TimestampBound.(type) { - case *TransactionOptions_ReadOnly_Strong: - n += proto.SizeVarint(1<<3 | proto.WireVarint) - n += 1 - case *TransactionOptions_ReadOnly_MinReadTimestamp: - s := proto.Size(x.MinReadTimestamp) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransactionOptions_ReadOnly_MaxStaleness: - s := proto.Size(x.MaxStaleness) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransactionOptions_ReadOnly_ReadTimestamp: - s := proto.Size(x.ReadTimestamp) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransactionOptions_ReadOnly_ExactStaleness: - s := proto.Size(x.ExactStaleness) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A transaction. -type Transaction struct { - // `id` may be used to identify the transaction in subsequent - // [Read][google.spanner.v1.Spanner.Read], - // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], - // [Commit][google.spanner.v1.Spanner.Commit], or - // [Rollback][google.spanner.v1.Spanner.Rollback] calls. - // - // Single-use read-only transactions do not have IDs, because - // single-use transactions do not support multiple requests. - Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // For snapshot read-only transactions, the read timestamp chosen - // for the transaction. Not returned by default: see - // [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp]. - // - // A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. - // Example: `"2014-10-02T15:01:23.045123456Z"`. - ReadTimestamp *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=read_timestamp,json=readTimestamp" json:"read_timestamp,omitempty"` -} - -func (m *Transaction) Reset() { *m = Transaction{} } -func (m *Transaction) String() string { return proto.CompactTextString(m) } -func (*Transaction) ProtoMessage() {} -func (*Transaction) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} } - -func (m *Transaction) GetId() []byte { - if m != nil { - return m.Id - } - return nil -} - -func (m *Transaction) GetReadTimestamp() *google_protobuf3.Timestamp { - if m != nil { - return m.ReadTimestamp - } - return nil -} - -// This message is used to select the transaction in which a -// [Read][google.spanner.v1.Spanner.Read] or -// [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] call runs. -// -// See [TransactionOptions][google.spanner.v1.TransactionOptions] for more information about transactions. -type TransactionSelector struct { - // If no fields are set, the default is a single use transaction - // with strong concurrency. - // - // Types that are valid to be assigned to Selector: - // *TransactionSelector_SingleUse - // *TransactionSelector_Id - // *TransactionSelector_Begin - Selector isTransactionSelector_Selector `protobuf_oneof:"selector"` -} - -func (m *TransactionSelector) Reset() { *m = TransactionSelector{} } -func (m *TransactionSelector) String() string { return proto.CompactTextString(m) } -func (*TransactionSelector) ProtoMessage() {} -func (*TransactionSelector) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{2} } - -type isTransactionSelector_Selector interface { - isTransactionSelector_Selector() -} - -type TransactionSelector_SingleUse struct { - SingleUse *TransactionOptions `protobuf:"bytes,1,opt,name=single_use,json=singleUse,oneof"` -} -type TransactionSelector_Id struct { - Id []byte `protobuf:"bytes,2,opt,name=id,proto3,oneof"` -} -type TransactionSelector_Begin struct { - Begin *TransactionOptions `protobuf:"bytes,3,opt,name=begin,oneof"` -} - -func (*TransactionSelector_SingleUse) isTransactionSelector_Selector() {} -func (*TransactionSelector_Id) isTransactionSelector_Selector() {} -func (*TransactionSelector_Begin) isTransactionSelector_Selector() {} - -func (m *TransactionSelector) GetSelector() isTransactionSelector_Selector { - if m != nil { - return m.Selector - } - return nil -} - -func (m *TransactionSelector) GetSingleUse() *TransactionOptions { - if x, ok := m.GetSelector().(*TransactionSelector_SingleUse); ok { - return x.SingleUse - } - return nil -} - -func (m *TransactionSelector) GetId() []byte { - if x, ok := m.GetSelector().(*TransactionSelector_Id); ok { - return x.Id - } - return nil -} - -func (m *TransactionSelector) GetBegin() *TransactionOptions { - if x, ok := m.GetSelector().(*TransactionSelector_Begin); ok { - return x.Begin - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TransactionSelector) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TransactionSelector_OneofMarshaler, _TransactionSelector_OneofUnmarshaler, _TransactionSelector_OneofSizer, []interface{}{ - (*TransactionSelector_SingleUse)(nil), - (*TransactionSelector_Id)(nil), - (*TransactionSelector_Begin)(nil), - } -} - -func _TransactionSelector_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TransactionSelector) - // selector - switch x := m.Selector.(type) { - case *TransactionSelector_SingleUse: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SingleUse); err != nil { - return err - } - case *TransactionSelector_Id: - b.EncodeVarint(2<<3 | proto.WireBytes) - b.EncodeRawBytes(x.Id) - case *TransactionSelector_Begin: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Begin); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransactionSelector.Selector has unexpected type %T", x) - } - return nil -} - -func _TransactionSelector_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TransactionSelector) - switch tag { - case 1: // selector.single_use - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions) - err := b.DecodeMessage(msg) - m.Selector = &TransactionSelector_SingleUse{msg} - return true, err - case 2: // selector.id - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeRawBytes(true) - m.Selector = &TransactionSelector_Id{x} - return true, err - case 3: // selector.begin - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(TransactionOptions) - err := b.DecodeMessage(msg) - m.Selector = &TransactionSelector_Begin{msg} - return true, err - default: - return false, nil - } -} - -func _TransactionSelector_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TransactionSelector) - // selector - switch x := m.Selector.(type) { - case *TransactionSelector_SingleUse: - s := proto.Size(x.SingleUse) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransactionSelector_Id: - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.Id))) - n += len(x.Id) - case *TransactionSelector_Begin: - s := proto.Size(x.Begin) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*TransactionOptions)(nil), "google.spanner.v1.TransactionOptions") - proto.RegisterType((*TransactionOptions_ReadWrite)(nil), "google.spanner.v1.TransactionOptions.ReadWrite") - proto.RegisterType((*TransactionOptions_ReadOnly)(nil), "google.spanner.v1.TransactionOptions.ReadOnly") - proto.RegisterType((*Transaction)(nil), "google.spanner.v1.Transaction") - proto.RegisterType((*TransactionSelector)(nil), "google.spanner.v1.TransactionSelector") -} - -func init() { proto.RegisterFile("google/spanner/v1/transaction.proto", fileDescriptor5) } - -var fileDescriptor5 = []byte{ - // 537 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xd1, 0x8a, 0xd3, 0x40, - 0x14, 0x86, 0xd3, 0x6e, 0xb7, 0x74, 0x4f, 0xbb, 0xdd, 0xee, 0x2c, 0x8b, 0x35, 0x88, 0x4a, 0x45, - 0xf0, 0x2a, 0xa1, 0xeb, 0x8d, 0x20, 0x82, 0x76, 0x17, 0x0d, 0x82, 0x6c, 0x49, 0xd7, 0x15, 0xa4, - 0x10, 0xa7, 0xcd, 0x18, 0x06, 0x92, 0x99, 0x30, 0x33, 0x59, 0xbb, 0xf7, 0xbe, 0x84, 0xaf, 0xe0, - 0x23, 0xf8, 0x08, 0xde, 0xf9, 0x46, 0x92, 0xc9, 0xa4, 0xcd, 0x36, 0x17, 0xdb, 0xbb, 0x4c, 0xcf, - 0xff, 0xff, 0xe7, 0x9b, 0x73, 0x86, 0xc2, 0xb3, 0x88, 0xf3, 0x28, 0x26, 0xae, 0x4c, 0x31, 0x63, - 0x44, 0xb8, 0x37, 0x63, 0x57, 0x09, 0xcc, 0x24, 0x5e, 0x2a, 0xca, 0x99, 0x93, 0x0a, 0xae, 0x38, - 0x3a, 0x2e, 0x44, 0x8e, 0x11, 0x39, 0x37, 0x63, 0xfb, 0x91, 0xf1, 0xe1, 0x94, 0xba, 0x98, 0x31, - 0xae, 0x70, 0xae, 0x97, 0x85, 0xc1, 0x7e, 0x6c, 0xaa, 0xfa, 0xb4, 0xc8, 0xbe, 0xbb, 0x61, 0x26, - 0xf0, 0x26, 0xd0, 0x7e, 0xb2, 0x5d, 0x57, 0x34, 0x21, 0x52, 0xe1, 0x24, 0x2d, 0x04, 0xa3, 0x7f, - 0x2d, 0x40, 0x57, 0x1b, 0x8e, 0xcb, 0x54, 0xa7, 0xa3, 0x29, 0x80, 0x20, 0x38, 0x0c, 0x7e, 0x08, - 0xaa, 0xc8, 0xb0, 0xf1, 0xb4, 0xf1, 0xa2, 0x7b, 0xe6, 0x3a, 0x35, 0x3a, 0xa7, 0x6e, 0x75, 0x7c, - 0x82, 0xc3, 0x2f, 0xb9, 0xcd, 0xb3, 0xfc, 0x03, 0x51, 0x1e, 0xd0, 0x27, 0xd0, 0x87, 0x80, 0xb3, - 0xf8, 0x76, 0xd8, 0xd4, 0x81, 0xce, 0xee, 0x81, 0x97, 0x2c, 0xbe, 0xf5, 0x2c, 0xbf, 0x23, 0xcc, - 0xb7, 0xdd, 0x85, 0x83, 0x75, 0x23, 0xfb, 0xe7, 0x1e, 0x74, 0x4a, 0x15, 0x1a, 0x42, 0x5b, 0x2a, - 0xc1, 0x59, 0xa4, 0xb1, 0x3b, 0x9e, 0xe5, 0x9b, 0x33, 0xfa, 0x08, 0x28, 0xa1, 0x2c, 0xd0, 0x18, - 0xeb, 0x39, 0x18, 0x16, 0xbb, 0x64, 0x29, 0x27, 0xe5, 0x5c, 0x95, 0x0a, 0xcf, 0xf2, 0x07, 0x09, - 0x65, 0x79, 0x83, 0xf5, 0x6f, 0xe8, 0x2d, 0x1c, 0x26, 0x78, 0x15, 0x48, 0x85, 0x63, 0xc2, 0x88, - 0x94, 0xc3, 0x3d, 0x1d, 0xf3, 0xb0, 0x16, 0x73, 0x61, 0x16, 0xe2, 0x59, 0x7e, 0x2f, 0xc1, 0xab, - 0x59, 0x69, 0x40, 0xe7, 0xd0, 0xdf, 0x22, 0x69, 0xed, 0x40, 0x72, 0x28, 0xee, 0x60, 0x5c, 0xc0, - 0x11, 0x59, 0xe1, 0xa5, 0xaa, 0x80, 0xec, 0xdf, 0x0f, 0xd2, 0xd7, 0x9e, 0x0d, 0xca, 0x19, 0x9c, - 0x0a, 0xa2, 0x32, 0x51, 0x9b, 0x4d, 0x3b, 0x9f, 0xa0, 0x7f, 0x52, 0x14, 0xef, 0x0c, 0x60, 0x72, - 0x0c, 0x47, 0x6b, 0x5d, 0xb0, 0xe0, 0x19, 0x0b, 0x27, 0x6d, 0x68, 0x25, 0x3c, 0x24, 0xa3, 0x6f, - 0xd0, 0xad, 0xac, 0x11, 0xf5, 0xa1, 0x49, 0x43, 0xbd, 0x8c, 0x9e, 0xdf, 0xa4, 0x21, 0x7a, 0x57, - 0xbb, 0xf8, 0xbd, 0x2b, 0xd8, 0xba, 0xf6, 0xe8, 0x4f, 0x03, 0x4e, 0x2a, 0x2d, 0x66, 0x24, 0x26, - 0x4b, 0xc5, 0x05, 0x7a, 0x0f, 0x20, 0x29, 0x8b, 0x62, 0x12, 0x64, 0xb2, 0x7c, 0xb6, 0xcf, 0x77, - 0x7a, 0x65, 0xf9, 0x63, 0x2d, 0xac, 0x9f, 0x25, 0x41, 0x03, 0x8d, 0x9c, 0x63, 0xf5, 0x3c, 0x4b, - 0x43, 0xbf, 0x81, 0xfd, 0x05, 0x89, 0x28, 0x33, 0x7b, 0xde, 0x39, 0xb4, 0x70, 0x4d, 0x00, 0x3a, - 0xd2, 0x40, 0x4e, 0x7e, 0x35, 0xe0, 0x74, 0xc9, 0x93, 0x7a, 0xc2, 0x64, 0x50, 0x89, 0x98, 0xe6, - 0x43, 0x98, 0x36, 0xbe, 0xbe, 0x32, 0xb2, 0x88, 0xc7, 0x98, 0x45, 0x0e, 0x17, 0x91, 0x1b, 0x11, - 0xa6, 0x47, 0xe4, 0x16, 0x25, 0x9c, 0x52, 0x59, 0xf9, 0x5b, 0x79, 0x6d, 0x3e, 0x7f, 0x37, 0x1f, - 0x7c, 0x28, 0xac, 0xe7, 0x31, 0xcf, 0x42, 0x67, 0x66, 0xfa, 0x5c, 0x8f, 0xff, 0x96, 0x95, 0xb9, - 0xae, 0xcc, 0x4d, 0x65, 0x7e, 0x3d, 0x5e, 0xb4, 0x75, 0xf0, 0xcb, 0xff, 0x01, 0x00, 0x00, 0xff, - 0xff, 0xa6, 0x28, 0x2f, 0x4a, 0xae, 0x04, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/spanner/v1/type.pb.go b/vendor/google.golang.org/genproto/googleapis/spanner/v1/type.pb.go deleted file mode 100644 index 499cad60..00000000 --- a/vendor/google.golang.org/genproto/googleapis/spanner/v1/type.pb.go +++ /dev/null @@ -1,217 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/spanner/v1/type.proto - -package spanner - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// `TypeCode` is used as part of [Type][google.spanner.v1.Type] to -// indicate the type of a Cloud Spanner value. -// -// Each legal value of a type can be encoded to or decoded from a JSON -// value, using the encodings described below. All Cloud Spanner values can -// be `null`, regardless of type; `null`s are always encoded as a JSON -// `null`. -type TypeCode int32 - -const ( - // Not specified. - TypeCode_TYPE_CODE_UNSPECIFIED TypeCode = 0 - // Encoded as JSON `true` or `false`. - TypeCode_BOOL TypeCode = 1 - // Encoded as `string`, in decimal format. - TypeCode_INT64 TypeCode = 2 - // Encoded as `number`, or the strings `"NaN"`, `"Infinity"`, or - // `"-Infinity"`. - TypeCode_FLOAT64 TypeCode = 3 - // Encoded as `string` in RFC 3339 timestamp format. The time zone - // must be present, and must be `"Z"`. - TypeCode_TIMESTAMP TypeCode = 4 - // Encoded as `string` in RFC 3339 date format. - TypeCode_DATE TypeCode = 5 - // Encoded as `string`. - TypeCode_STRING TypeCode = 6 - // Encoded as a base64-encoded `string`, as described in RFC 4648, - // section 4. - TypeCode_BYTES TypeCode = 7 - // Encoded as `list`, where the list elements are represented - // according to [array_element_type][google.spanner.v1.Type.array_element_type]. - TypeCode_ARRAY TypeCode = 8 - // Encoded as `list`, where list element `i` is represented according - // to [struct_type.fields[i]][google.spanner.v1.StructType.fields]. - TypeCode_STRUCT TypeCode = 9 -) - -var TypeCode_name = map[int32]string{ - 0: "TYPE_CODE_UNSPECIFIED", - 1: "BOOL", - 2: "INT64", - 3: "FLOAT64", - 4: "TIMESTAMP", - 5: "DATE", - 6: "STRING", - 7: "BYTES", - 8: "ARRAY", - 9: "STRUCT", -} -var TypeCode_value = map[string]int32{ - "TYPE_CODE_UNSPECIFIED": 0, - "BOOL": 1, - "INT64": 2, - "FLOAT64": 3, - "TIMESTAMP": 4, - "DATE": 5, - "STRING": 6, - "BYTES": 7, - "ARRAY": 8, - "STRUCT": 9, -} - -func (x TypeCode) String() string { - return proto.EnumName(TypeCode_name, int32(x)) -} -func (TypeCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor6, []int{0} } - -// `Type` indicates the type of a Cloud Spanner value, as might be stored in a -// table cell or returned from an SQL query. -type Type struct { - // Required. The [TypeCode][google.spanner.v1.TypeCode] for this type. - Code TypeCode `protobuf:"varint,1,opt,name=code,enum=google.spanner.v1.TypeCode" json:"code,omitempty"` - // If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type` - // is the type of the array elements. - ArrayElementType *Type `protobuf:"bytes,2,opt,name=array_element_type,json=arrayElementType" json:"array_element_type,omitempty"` - // If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type` - // provides type information for the struct's fields. - StructType *StructType `protobuf:"bytes,3,opt,name=struct_type,json=structType" json:"struct_type,omitempty"` -} - -func (m *Type) Reset() { *m = Type{} } -func (m *Type) String() string { return proto.CompactTextString(m) } -func (*Type) ProtoMessage() {} -func (*Type) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{0} } - -func (m *Type) GetCode() TypeCode { - if m != nil { - return m.Code - } - return TypeCode_TYPE_CODE_UNSPECIFIED -} - -func (m *Type) GetArrayElementType() *Type { - if m != nil { - return m.ArrayElementType - } - return nil -} - -func (m *Type) GetStructType() *StructType { - if m != nil { - return m.StructType - } - return nil -} - -// `StructType` defines the fields of a [STRUCT][google.spanner.v1.TypeCode.STRUCT] type. -type StructType struct { - // The list of fields that make up this struct. Order is - // significant, because values of this struct type are represented as - // lists, where the order of field values matches the order of - // fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields - // matches the order of columns in a read request, or the order of - // fields in the `SELECT` clause of a query. - Fields []*StructType_Field `protobuf:"bytes,1,rep,name=fields" json:"fields,omitempty"` -} - -func (m *StructType) Reset() { *m = StructType{} } -func (m *StructType) String() string { return proto.CompactTextString(m) } -func (*StructType) ProtoMessage() {} -func (*StructType) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1} } - -func (m *StructType) GetFields() []*StructType_Field { - if m != nil { - return m.Fields - } - return nil -} - -// Message representing a single field of a struct. -type StructType_Field struct { - // The name of the field. For reads, this is the column name. For - // SQL queries, it is the column alias (e.g., `"Word"` in the - // query `"SELECT 'hello' AS Word"`), or the column name (e.g., - // `"ColName"` in the query `"SELECT ColName FROM Table"`). Some - // columns might have an empty name (e.g., !"SELECT - // UPPER(ColName)"`). Note that a query result can contain - // multiple fields with the same name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The type of the field. - Type *Type `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"` -} - -func (m *StructType_Field) Reset() { *m = StructType_Field{} } -func (m *StructType_Field) String() string { return proto.CompactTextString(m) } -func (*StructType_Field) ProtoMessage() {} -func (*StructType_Field) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{1, 0} } - -func (m *StructType_Field) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *StructType_Field) GetType() *Type { - if m != nil { - return m.Type - } - return nil -} - -func init() { - proto.RegisterType((*Type)(nil), "google.spanner.v1.Type") - proto.RegisterType((*StructType)(nil), "google.spanner.v1.StructType") - proto.RegisterType((*StructType_Field)(nil), "google.spanner.v1.StructType.Field") - proto.RegisterEnum("google.spanner.v1.TypeCode", TypeCode_name, TypeCode_value) -} - -func init() { proto.RegisterFile("google/spanner/v1/type.proto", fileDescriptor6) } - -var fileDescriptor6 = []byte{ - // 444 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xd1, 0x8a, 0xd3, 0x40, - 0x14, 0x86, 0x9d, 0x6d, 0xda, 0x6d, 0x4e, 0x51, 0xc6, 0x81, 0x65, 0xeb, 0xaa, 0x50, 0xd6, 0x9b, - 0xa2, 0x90, 0xd0, 0x2a, 0x22, 0x2c, 0x08, 0x69, 0x3a, 0x5d, 0x03, 0xbb, 0x6d, 0x48, 0x66, 0x17, - 0x2a, 0x85, 0x32, 0xb6, 0x63, 0x28, 0xa4, 0x33, 0x21, 0xc9, 0x2e, 0xf4, 0x25, 0xbc, 0xd0, 0xb7, - 0xf0, 0x21, 0x7c, 0x00, 0x9f, 0x4a, 0x66, 0x92, 0xaa, 0xb0, 0x2a, 0xde, 0x9d, 0xe4, 0xfb, 0xbf, - 0x33, 0x67, 0x86, 0x03, 0x4f, 0x12, 0xa5, 0x92, 0x54, 0xb8, 0x45, 0xc6, 0xa5, 0x14, 0xb9, 0x7b, - 0x3b, 0x70, 0xcb, 0x5d, 0x26, 0x9c, 0x2c, 0x57, 0xa5, 0x22, 0x0f, 0x2b, 0xea, 0xd4, 0xd4, 0xb9, - 0x1d, 0x9c, 0xec, 0x05, 0x9e, 0x6d, 0x5c, 0x2e, 0xa5, 0x2a, 0x79, 0xb9, 0x51, 0xb2, 0xa8, 0x84, - 0xd3, 0x6f, 0x08, 0x2c, 0xb6, 0xcb, 0x04, 0x71, 0xc1, 0x5a, 0xa9, 0xb5, 0xe8, 0xa2, 0x1e, 0xea, - 0x3f, 0x18, 0x3e, 0x76, 0xee, 0x34, 0x72, 0x74, 0xcc, 0x57, 0x6b, 0x11, 0x99, 0x20, 0xa1, 0x40, - 0x78, 0x9e, 0xf3, 0xdd, 0x52, 0xa4, 0x62, 0x2b, 0x64, 0xb9, 0xd4, 0x63, 0x74, 0x0f, 0x7a, 0xa8, - 0xdf, 0x19, 0x1e, 0xff, 0x45, 0x8f, 0xb0, 0x51, 0x68, 0x65, 0x98, 0x73, 0xdf, 0x42, 0xa7, 0x28, - 0xf3, 0x9b, 0x55, 0xed, 0x37, 0x8c, 0xff, 0xf4, 0x0f, 0x7e, 0x6c, 0x52, 0xa6, 0x0b, 0x14, 0x3f, - 0xeb, 0xd3, 0x2f, 0x08, 0xe0, 0x17, 0x22, 0x67, 0xd0, 0xfa, 0xb8, 0x11, 0xe9, 0xba, 0xe8, 0xa2, - 0x5e, 0xa3, 0xdf, 0x19, 0x3e, 0xfb, 0x67, 0x27, 0x67, 0xa2, 0xb3, 0x51, 0xad, 0x9c, 0xbc, 0x83, - 0xa6, 0xf9, 0x41, 0x08, 0x58, 0x92, 0x6f, 0xab, 0xc7, 0xb0, 0x23, 0x53, 0x93, 0x17, 0x60, 0xfd, - 0xcf, 0x0d, 0x4d, 0xe8, 0xf9, 0x27, 0x04, 0xed, 0xfd, 0x7b, 0x91, 0x47, 0x70, 0xc4, 0xe6, 0x21, - 0x5d, 0xfa, 0xb3, 0x31, 0x5d, 0x5e, 0x4d, 0xe3, 0x90, 0xfa, 0xc1, 0x24, 0xa0, 0x63, 0x7c, 0x8f, - 0xb4, 0xc1, 0x1a, 0xcd, 0x66, 0x17, 0x18, 0x11, 0x1b, 0x9a, 0xc1, 0x94, 0xbd, 0x7e, 0x85, 0x0f, - 0x48, 0x07, 0x0e, 0x27, 0x17, 0x33, 0x4f, 0x7f, 0x34, 0xc8, 0x7d, 0xb0, 0x59, 0x70, 0x49, 0x63, - 0xe6, 0x5d, 0x86, 0xd8, 0xd2, 0xc2, 0xd8, 0x63, 0x14, 0x37, 0x09, 0x40, 0x2b, 0x66, 0x51, 0x30, - 0x3d, 0xc7, 0x2d, 0x2d, 0x8f, 0xe6, 0x8c, 0xc6, 0xf8, 0x50, 0x97, 0x5e, 0x14, 0x79, 0x73, 0xdc, - 0xae, 0x13, 0x57, 0x3e, 0xc3, 0xf6, 0xe8, 0x33, 0x82, 0xa3, 0x95, 0xda, 0xde, 0x9d, 0x7a, 0x64, - 0xeb, 0x39, 0x43, 0xbd, 0x0c, 0x21, 0x7a, 0xff, 0xa6, 0xe6, 0x89, 0x4a, 0xb9, 0x4c, 0x1c, 0x95, - 0x27, 0x6e, 0x22, 0xa4, 0x59, 0x15, 0xb7, 0x42, 0x3c, 0xdb, 0x14, 0xbf, 0x2d, 0xdf, 0x59, 0x5d, - 0x7e, 0x3d, 0x38, 0x3e, 0xaf, 0x54, 0x3f, 0x55, 0x37, 0x6b, 0x27, 0xae, 0x0f, 0xb8, 0x1e, 0x7c, - 0xdf, 0x93, 0x85, 0x21, 0x8b, 0x9a, 0x2c, 0xae, 0x07, 0x1f, 0x5a, 0xa6, 0xf1, 0xcb, 0x1f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x55, 0xc4, 0x6e, 0xd4, 0xd4, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/storagetransfer/v1/transfer.pb.go b/vendor/google.golang.org/genproto/googleapis/storagetransfer/v1/transfer.pb.go deleted file mode 100644 index 8b6625b5..00000000 --- a/vendor/google.golang.org/genproto/googleapis/storagetransfer/v1/transfer.pb.go +++ /dev/null @@ -1,660 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/storagetransfer/v1/transfer.proto - -/* -Package storagetransfer is a generated protocol buffer package. - -It is generated from these files: - google/storagetransfer/v1/transfer.proto - google/storagetransfer/v1/transfer_types.proto - -It has these top-level messages: - GetGoogleServiceAccountRequest - CreateTransferJobRequest - UpdateTransferJobRequest - GetTransferJobRequest - ListTransferJobsRequest - ListTransferJobsResponse - PauseTransferOperationRequest - ResumeTransferOperationRequest - GoogleServiceAccount - AwsAccessKey - ObjectConditions - GcsData - AwsS3Data - HttpData - TransferOptions - TransferSpec - Schedule - TransferJob - ErrorLogEntry - ErrorSummary - TransferCounters - TransferOperation -*/ -package storagetransfer - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Request passed to GetGoogleServiceAccount. -type GetGoogleServiceAccountRequest struct { - // The ID of the Google Cloud Platform Console project that the Google service - // account is associated with. - // Required. - ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId" json:"project_id,omitempty"` -} - -func (m *GetGoogleServiceAccountRequest) Reset() { *m = GetGoogleServiceAccountRequest{} } -func (m *GetGoogleServiceAccountRequest) String() string { return proto.CompactTextString(m) } -func (*GetGoogleServiceAccountRequest) ProtoMessage() {} -func (*GetGoogleServiceAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *GetGoogleServiceAccountRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -// Request passed to CreateTransferJob. -type CreateTransferJobRequest struct { - // The job to create. - // Required. - TransferJob *TransferJob `protobuf:"bytes,1,opt,name=transfer_job,json=transferJob" json:"transfer_job,omitempty"` -} - -func (m *CreateTransferJobRequest) Reset() { *m = CreateTransferJobRequest{} } -func (m *CreateTransferJobRequest) String() string { return proto.CompactTextString(m) } -func (*CreateTransferJobRequest) ProtoMessage() {} -func (*CreateTransferJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *CreateTransferJobRequest) GetTransferJob() *TransferJob { - if m != nil { - return m.TransferJob - } - return nil -} - -// Request passed to UpdateTransferJob. -type UpdateTransferJobRequest struct { - // The name of job to update. - // Required. - JobName string `protobuf:"bytes,1,opt,name=job_name,json=jobName" json:"job_name,omitempty"` - // The ID of the Google Cloud Platform Console project that owns the job. - // Required. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // The job to update. `transferJob` is expected to specify only three fields: - // `description`, `transferSpec`, and `status`. An UpdateTransferJobRequest - // that specifies other fields will be rejected with an error - // `INVALID_ARGUMENT`. - // Required. - TransferJob *TransferJob `protobuf:"bytes,3,opt,name=transfer_job,json=transferJob" json:"transfer_job,omitempty"` - // The field mask of the fields in `transferJob` that are to be updated in - // this request. Fields in `transferJob` that can be updated are: - // `description`, `transferSpec`, and `status`. To update the `transferSpec` - // of the job, a complete transfer specification has to be provided. An - // incomplete specification which misses any required fields will be rejected - // with the error `INVALID_ARGUMENT`. - UpdateTransferJobFieldMask *google_protobuf2.FieldMask `protobuf:"bytes,4,opt,name=update_transfer_job_field_mask,json=updateTransferJobFieldMask" json:"update_transfer_job_field_mask,omitempty"` -} - -func (m *UpdateTransferJobRequest) Reset() { *m = UpdateTransferJobRequest{} } -func (m *UpdateTransferJobRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateTransferJobRequest) ProtoMessage() {} -func (*UpdateTransferJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *UpdateTransferJobRequest) GetJobName() string { - if m != nil { - return m.JobName - } - return "" -} - -func (m *UpdateTransferJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *UpdateTransferJobRequest) GetTransferJob() *TransferJob { - if m != nil { - return m.TransferJob - } - return nil -} - -func (m *UpdateTransferJobRequest) GetUpdateTransferJobFieldMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateTransferJobFieldMask - } - return nil -} - -// Request passed to GetTransferJob. -type GetTransferJobRequest struct { - // The job to get. - // Required. - JobName string `protobuf:"bytes,1,opt,name=job_name,json=jobName" json:"job_name,omitempty"` - // The ID of the Google Cloud Platform Console project that owns the job. - // Required. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` -} - -func (m *GetTransferJobRequest) Reset() { *m = GetTransferJobRequest{} } -func (m *GetTransferJobRequest) String() string { return proto.CompactTextString(m) } -func (*GetTransferJobRequest) ProtoMessage() {} -func (*GetTransferJobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *GetTransferJobRequest) GetJobName() string { - if m != nil { - return m.JobName - } - return "" -} - -func (m *GetTransferJobRequest) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -// `project_id`, `job_names`, and `job_statuses` are query parameters that can -// be specified when listing transfer jobs. -type ListTransferJobsRequest struct { - // A list of query parameters specified as JSON text in the form of - // {"project_id":"my_project_id", - // "job_names":["jobid1","jobid2",...], - // "job_statuses":["status1","status2",...]}. - // Since `job_names` and `job_statuses` support multiple values, their values - // must be specified with array notation. `project_id` is required. `job_names` - // and `job_statuses` are optional. The valid values for `job_statuses` are - // case-insensitive: `ENABLED`, `DISABLED`, and `DELETED`. - Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"` - // The list page size. The max allowed value is 256. - PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The list page token. - PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` -} - -func (m *ListTransferJobsRequest) Reset() { *m = ListTransferJobsRequest{} } -func (m *ListTransferJobsRequest) String() string { return proto.CompactTextString(m) } -func (*ListTransferJobsRequest) ProtoMessage() {} -func (*ListTransferJobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ListTransferJobsRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -func (m *ListTransferJobsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListTransferJobsRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -// Response from ListTransferJobs. -type ListTransferJobsResponse struct { - // A list of transfer jobs. - TransferJobs []*TransferJob `protobuf:"bytes,1,rep,name=transfer_jobs,json=transferJobs" json:"transfer_jobs,omitempty"` - // The list next page token. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListTransferJobsResponse) Reset() { *m = ListTransferJobsResponse{} } -func (m *ListTransferJobsResponse) String() string { return proto.CompactTextString(m) } -func (*ListTransferJobsResponse) ProtoMessage() {} -func (*ListTransferJobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *ListTransferJobsResponse) GetTransferJobs() []*TransferJob { - if m != nil { - return m.TransferJobs - } - return nil -} - -func (m *ListTransferJobsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request passed to PauseTransferOperation. -type PauseTransferOperationRequest struct { - // The name of the transfer operation. - // Required. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *PauseTransferOperationRequest) Reset() { *m = PauseTransferOperationRequest{} } -func (m *PauseTransferOperationRequest) String() string { return proto.CompactTextString(m) } -func (*PauseTransferOperationRequest) ProtoMessage() {} -func (*PauseTransferOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *PauseTransferOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Request passed to ResumeTransferOperation. -type ResumeTransferOperationRequest struct { - // The name of the transfer operation. - // Required. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *ResumeTransferOperationRequest) Reset() { *m = ResumeTransferOperationRequest{} } -func (m *ResumeTransferOperationRequest) String() string { return proto.CompactTextString(m) } -func (*ResumeTransferOperationRequest) ProtoMessage() {} -func (*ResumeTransferOperationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ResumeTransferOperationRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func init() { - proto.RegisterType((*GetGoogleServiceAccountRequest)(nil), "google.storagetransfer.v1.GetGoogleServiceAccountRequest") - proto.RegisterType((*CreateTransferJobRequest)(nil), "google.storagetransfer.v1.CreateTransferJobRequest") - proto.RegisterType((*UpdateTransferJobRequest)(nil), "google.storagetransfer.v1.UpdateTransferJobRequest") - proto.RegisterType((*GetTransferJobRequest)(nil), "google.storagetransfer.v1.GetTransferJobRequest") - proto.RegisterType((*ListTransferJobsRequest)(nil), "google.storagetransfer.v1.ListTransferJobsRequest") - proto.RegisterType((*ListTransferJobsResponse)(nil), "google.storagetransfer.v1.ListTransferJobsResponse") - proto.RegisterType((*PauseTransferOperationRequest)(nil), "google.storagetransfer.v1.PauseTransferOperationRequest") - proto.RegisterType((*ResumeTransferOperationRequest)(nil), "google.storagetransfer.v1.ResumeTransferOperationRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for StorageTransferService service - -type StorageTransferServiceClient interface { - // Returns the Google service account that is used by Storage Transfer - // Service to access buckets in the project where transfers - // run or in other projects. Each Google service account is associated - // with one Google Cloud Platform Console project. Users - // should add this service account to the Google Cloud Storage bucket - // ACLs to grant access to Storage Transfer Service. This service - // account is created and owned by Storage Transfer Service and can - // only be used by Storage Transfer Service. - GetGoogleServiceAccount(ctx context.Context, in *GetGoogleServiceAccountRequest, opts ...grpc.CallOption) (*GoogleServiceAccount, error) - // Creates a transfer job that runs periodically. - CreateTransferJob(ctx context.Context, in *CreateTransferJobRequest, opts ...grpc.CallOption) (*TransferJob, error) - // Updates a transfer job. Updating a job's transfer spec does not affect - // transfer operations that are running already. Updating the scheduling - // of a job is not allowed. - UpdateTransferJob(ctx context.Context, in *UpdateTransferJobRequest, opts ...grpc.CallOption) (*TransferJob, error) - // Gets a transfer job. - GetTransferJob(ctx context.Context, in *GetTransferJobRequest, opts ...grpc.CallOption) (*TransferJob, error) - // Lists transfer jobs. - ListTransferJobs(ctx context.Context, in *ListTransferJobsRequest, opts ...grpc.CallOption) (*ListTransferJobsResponse, error) - // Pauses a transfer operation. - PauseTransferOperation(ctx context.Context, in *PauseTransferOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) - // Resumes a transfer operation that is paused. - ResumeTransferOperation(ctx context.Context, in *ResumeTransferOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) -} - -type storageTransferServiceClient struct { - cc *grpc.ClientConn -} - -func NewStorageTransferServiceClient(cc *grpc.ClientConn) StorageTransferServiceClient { - return &storageTransferServiceClient{cc} -} - -func (c *storageTransferServiceClient) GetGoogleServiceAccount(ctx context.Context, in *GetGoogleServiceAccountRequest, opts ...grpc.CallOption) (*GoogleServiceAccount, error) { - out := new(GoogleServiceAccount) - err := grpc.Invoke(ctx, "/google.storagetransfer.v1.StorageTransferService/GetGoogleServiceAccount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *storageTransferServiceClient) CreateTransferJob(ctx context.Context, in *CreateTransferJobRequest, opts ...grpc.CallOption) (*TransferJob, error) { - out := new(TransferJob) - err := grpc.Invoke(ctx, "/google.storagetransfer.v1.StorageTransferService/CreateTransferJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *storageTransferServiceClient) UpdateTransferJob(ctx context.Context, in *UpdateTransferJobRequest, opts ...grpc.CallOption) (*TransferJob, error) { - out := new(TransferJob) - err := grpc.Invoke(ctx, "/google.storagetransfer.v1.StorageTransferService/UpdateTransferJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *storageTransferServiceClient) GetTransferJob(ctx context.Context, in *GetTransferJobRequest, opts ...grpc.CallOption) (*TransferJob, error) { - out := new(TransferJob) - err := grpc.Invoke(ctx, "/google.storagetransfer.v1.StorageTransferService/GetTransferJob", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *storageTransferServiceClient) ListTransferJobs(ctx context.Context, in *ListTransferJobsRequest, opts ...grpc.CallOption) (*ListTransferJobsResponse, error) { - out := new(ListTransferJobsResponse) - err := grpc.Invoke(ctx, "/google.storagetransfer.v1.StorageTransferService/ListTransferJobs", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *storageTransferServiceClient) PauseTransferOperation(ctx context.Context, in *PauseTransferOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.storagetransfer.v1.StorageTransferService/PauseTransferOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *storageTransferServiceClient) ResumeTransferOperation(ctx context.Context, in *ResumeTransferOperationRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/google.storagetransfer.v1.StorageTransferService/ResumeTransferOperation", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for StorageTransferService service - -type StorageTransferServiceServer interface { - // Returns the Google service account that is used by Storage Transfer - // Service to access buckets in the project where transfers - // run or in other projects. Each Google service account is associated - // with one Google Cloud Platform Console project. Users - // should add this service account to the Google Cloud Storage bucket - // ACLs to grant access to Storage Transfer Service. This service - // account is created and owned by Storage Transfer Service and can - // only be used by Storage Transfer Service. - GetGoogleServiceAccount(context.Context, *GetGoogleServiceAccountRequest) (*GoogleServiceAccount, error) - // Creates a transfer job that runs periodically. - CreateTransferJob(context.Context, *CreateTransferJobRequest) (*TransferJob, error) - // Updates a transfer job. Updating a job's transfer spec does not affect - // transfer operations that are running already. Updating the scheduling - // of a job is not allowed. - UpdateTransferJob(context.Context, *UpdateTransferJobRequest) (*TransferJob, error) - // Gets a transfer job. - GetTransferJob(context.Context, *GetTransferJobRequest) (*TransferJob, error) - // Lists transfer jobs. - ListTransferJobs(context.Context, *ListTransferJobsRequest) (*ListTransferJobsResponse, error) - // Pauses a transfer operation. - PauseTransferOperation(context.Context, *PauseTransferOperationRequest) (*google_protobuf1.Empty, error) - // Resumes a transfer operation that is paused. - ResumeTransferOperation(context.Context, *ResumeTransferOperationRequest) (*google_protobuf1.Empty, error) -} - -func RegisterStorageTransferServiceServer(s *grpc.Server, srv StorageTransferServiceServer) { - s.RegisterService(&_StorageTransferService_serviceDesc, srv) -} - -func _StorageTransferService_GetGoogleServiceAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetGoogleServiceAccountRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageTransferServiceServer).GetGoogleServiceAccount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.storagetransfer.v1.StorageTransferService/GetGoogleServiceAccount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageTransferServiceServer).GetGoogleServiceAccount(ctx, req.(*GetGoogleServiceAccountRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StorageTransferService_CreateTransferJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateTransferJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageTransferServiceServer).CreateTransferJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.storagetransfer.v1.StorageTransferService/CreateTransferJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageTransferServiceServer).CreateTransferJob(ctx, req.(*CreateTransferJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StorageTransferService_UpdateTransferJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateTransferJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageTransferServiceServer).UpdateTransferJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.storagetransfer.v1.StorageTransferService/UpdateTransferJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageTransferServiceServer).UpdateTransferJob(ctx, req.(*UpdateTransferJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StorageTransferService_GetTransferJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTransferJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageTransferServiceServer).GetTransferJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.storagetransfer.v1.StorageTransferService/GetTransferJob", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageTransferServiceServer).GetTransferJob(ctx, req.(*GetTransferJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StorageTransferService_ListTransferJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListTransferJobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageTransferServiceServer).ListTransferJobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.storagetransfer.v1.StorageTransferService/ListTransferJobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageTransferServiceServer).ListTransferJobs(ctx, req.(*ListTransferJobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StorageTransferService_PauseTransferOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PauseTransferOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageTransferServiceServer).PauseTransferOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.storagetransfer.v1.StorageTransferService/PauseTransferOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageTransferServiceServer).PauseTransferOperation(ctx, req.(*PauseTransferOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StorageTransferService_ResumeTransferOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ResumeTransferOperationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StorageTransferServiceServer).ResumeTransferOperation(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.storagetransfer.v1.StorageTransferService/ResumeTransferOperation", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StorageTransferServiceServer).ResumeTransferOperation(ctx, req.(*ResumeTransferOperationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _StorageTransferService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.storagetransfer.v1.StorageTransferService", - HandlerType: (*StorageTransferServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetGoogleServiceAccount", - Handler: _StorageTransferService_GetGoogleServiceAccount_Handler, - }, - { - MethodName: "CreateTransferJob", - Handler: _StorageTransferService_CreateTransferJob_Handler, - }, - { - MethodName: "UpdateTransferJob", - Handler: _StorageTransferService_UpdateTransferJob_Handler, - }, - { - MethodName: "GetTransferJob", - Handler: _StorageTransferService_GetTransferJob_Handler, - }, - { - MethodName: "ListTransferJobs", - Handler: _StorageTransferService_ListTransferJobs_Handler, - }, - { - MethodName: "PauseTransferOperation", - Handler: _StorageTransferService_PauseTransferOperation_Handler, - }, - { - MethodName: "ResumeTransferOperation", - Handler: _StorageTransferService_ResumeTransferOperation_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/storagetransfer/v1/transfer.proto", -} - -func init() { proto.RegisterFile("google/storagetransfer/v1/transfer.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 786 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdf, 0x4e, 0x13, 0x4f, - 0x14, 0xce, 0xf0, 0xef, 0x07, 0x03, 0xfc, 0x84, 0x49, 0x2c, 0x4b, 0x91, 0xda, 0x2c, 0x49, 0xc5, - 0x6a, 0x76, 0x6d, 0xeb, 0x85, 0x62, 0x8c, 0x11, 0xa2, 0x88, 0x7f, 0xb1, 0x20, 0x17, 0x86, 0xb8, - 0x99, 0xb6, 0xd3, 0xcd, 0x96, 0x76, 0x67, 0xdd, 0x99, 0x25, 0x02, 0xe1, 0xc6, 0x17, 0x30, 0xd1, - 0x98, 0x98, 0x18, 0x13, 0xaf, 0xbd, 0xf7, 0x11, 0xbc, 0xf1, 0xd6, 0x57, 0xf0, 0x21, 0xf4, 0x4a, - 0xb3, 0xb3, 0xb3, 0x65, 0xd9, 0xb6, 0x0b, 0xa8, 0x77, 0x3b, 0x33, 0xe7, 0x9c, 0xef, 0x3b, 0xe7, - 0xf0, 0x7d, 0x14, 0xce, 0x9b, 0x94, 0x9a, 0x4d, 0xa2, 0x33, 0x4e, 0x5d, 0x6c, 0x12, 0xee, 0x62, - 0x9b, 0xd5, 0x89, 0xab, 0x6f, 0x17, 0xf4, 0xf0, 0x5b, 0x73, 0x5c, 0xca, 0x29, 0x9a, 0x0e, 0x22, - 0xb5, 0x58, 0xa4, 0xb6, 0x5d, 0x48, 0x9f, 0x91, 0x45, 0xb0, 0x63, 0xe9, 0xd8, 0xb6, 0x29, 0xc7, - 0xdc, 0xa2, 0x36, 0x0b, 0x12, 0xd3, 0x33, 0xf2, 0x55, 0x9c, 0x2a, 0x5e, 0x5d, 0x27, 0x2d, 0x87, - 0xef, 0xc8, 0xc7, 0x6c, 0xfc, 0xb1, 0x6e, 0x91, 0x66, 0xcd, 0x68, 0x61, 0xb6, 0x25, 0x23, 0xb4, - 0xa3, 0x19, 0x1a, 0x7c, 0xc7, 0x21, 0x12, 0x4e, 0xbd, 0x01, 0x33, 0xcb, 0x84, 0x2f, 0x8b, 0xa4, - 0x35, 0xe2, 0x6e, 0x5b, 0x55, 0x72, 0xb3, 0x5a, 0xa5, 0x9e, 0xcd, 0xcb, 0xe4, 0xb9, 0x47, 0x18, - 0x47, 0xb3, 0x10, 0x3a, 0x2e, 0x6d, 0x90, 0x2a, 0x37, 0xac, 0x9a, 0x02, 0xb2, 0x60, 0x7e, 0xa4, - 0x3c, 0x22, 0x6f, 0x56, 0x6a, 0x2a, 0x81, 0xca, 0x92, 0x4b, 0x30, 0x27, 0xeb, 0xb2, 0xfc, 0x5d, - 0x5a, 0x09, 0x53, 0x57, 0xe0, 0x58, 0x1b, 0xb4, 0x41, 0x2b, 0x22, 0x79, 0xb4, 0x98, 0xd3, 0x7a, - 0xce, 0x46, 0x8b, 0x16, 0x19, 0xe5, 0x07, 0x07, 0xf5, 0x17, 0x80, 0xca, 0x13, 0xa7, 0xd6, 0x1d, - 0x67, 0x1a, 0x0e, 0x37, 0x68, 0xc5, 0xb0, 0x71, 0x8b, 0x48, 0x82, 0xff, 0x35, 0x68, 0xe5, 0x21, - 0x6e, 0x91, 0x18, 0xfb, 0xbe, 0x18, 0xfb, 0x0e, 0x86, 0xfd, 0x7f, 0xcc, 0x10, 0x3d, 0x83, 0x19, - 0x4f, 0x10, 0x34, 0xa2, 0x15, 0x8d, 0x83, 0x0d, 0x29, 0x03, 0xa2, 0x78, 0xb8, 0x22, 0x2d, 0x5c, - 0xa2, 0x76, 0xdb, 0x0f, 0x79, 0x80, 0xd9, 0x56, 0x39, 0xed, 0xc5, 0x5b, 0x6c, 0xbf, 0xa9, 0x8f, - 0xe1, 0xe9, 0x65, 0xc2, 0xff, 0x65, 0xf7, 0x6a, 0x0b, 0x4e, 0xdd, 0xb7, 0x58, 0xb4, 0x26, 0x0b, - 0x8b, 0xa6, 0xe0, 0x50, 0xdd, 0x6a, 0x72, 0xe2, 0xca, 0x92, 0xf2, 0x84, 0x66, 0xe0, 0x88, 0x83, - 0x4d, 0x62, 0x30, 0x6b, 0x97, 0x88, 0x86, 0x06, 0xcb, 0xc3, 0xfe, 0xc5, 0x9a, 0xb5, 0x1b, 0xc0, - 0xf9, 0x8f, 0x9c, 0x6e, 0x11, 0x5b, 0x19, 0x94, 0x70, 0xd8, 0x24, 0xeb, 0xfe, 0x85, 0xfa, 0x0a, - 0x40, 0xa5, 0x13, 0x8f, 0x39, 0xd4, 0x66, 0x04, 0xdd, 0x83, 0xe3, 0xd1, 0xb9, 0x31, 0x05, 0x64, - 0xfb, 0x4f, 0xb0, 0x8a, 0xb1, 0xc8, 0x2a, 0x18, 0xca, 0xc1, 0x53, 0x36, 0x79, 0xc1, 0x8d, 0x08, - 0x9b, 0xa0, 0xf9, 0x71, 0xff, 0x7a, 0xb5, 0xcd, 0xa8, 0x04, 0x67, 0x57, 0xb1, 0xc7, 0xda, 0x03, - 0x7f, 0xe4, 0x10, 0x57, 0xa8, 0x31, 0x1c, 0x03, 0x82, 0x03, 0x91, 0xb9, 0x8a, 0x6f, 0xf5, 0x32, - 0xcc, 0x94, 0x09, 0xf3, 0x5a, 0x27, 0xca, 0x2a, 0xfe, 0x1c, 0x86, 0xa9, 0xb5, 0xa0, 0x87, 0x30, - 0x4f, 0xea, 0x0d, 0x7d, 0x06, 0x70, 0xaa, 0x87, 0x08, 0xd1, 0xd5, 0x84, 0xfe, 0x93, 0x85, 0x9b, - 0xd6, 0x93, 0x52, 0xbb, 0xe4, 0xa9, 0xda, 0xcb, 0x6f, 0xdf, 0xdf, 0xf4, 0xcd, 0xa3, 0x9c, 0xef, - 0x16, 0x66, 0x97, 0x08, 0xa6, 0xef, 0x1d, 0xfc, 0x39, 0xed, 0xa3, 0x77, 0x00, 0x4e, 0x76, 0x68, - 0x1f, 0x95, 0x12, 0x60, 0x7b, 0x39, 0x45, 0xfa, 0x98, 0x6b, 0x56, 0x73, 0x82, 0x62, 0x56, 0x9d, - 0x88, 0x1a, 0x9a, 0xbf, 0xf2, 0x85, 0x43, 0x3a, 0x46, 0xef, 0x01, 0x9c, 0xec, 0xb0, 0x8b, 0x44, - 0x6a, 0xbd, 0xcc, 0xe5, 0xd8, 0xd4, 0xce, 0x0b, 0x6a, 0x73, 0xc5, 0x8c, 0x4f, 0x6d, 0x2f, 0x54, - 0xe4, 0xf5, 0x28, 0x49, 0x3d, 0x9f, 0xdf, 0x5f, 0x00, 0x79, 0xf4, 0x1a, 0xc0, 0xff, 0x0f, 0x6b, - 0x19, 0x5d, 0x4a, 0xde, 0xf3, 0xdf, 0x8f, 0x0c, 0x1d, 0xc1, 0x0b, 0xbd, 0x05, 0x70, 0x22, 0xae, - 0x4e, 0x54, 0x4c, 0x00, 0xe9, 0x61, 0x1d, 0xe9, 0xd2, 0x89, 0x72, 0x02, 0xf9, 0xab, 0x8a, 0x60, - 0x89, 0x50, 0xc7, 0x62, 0xd1, 0x07, 0x00, 0x53, 0xdd, 0x45, 0x8a, 0xae, 0x24, 0x20, 0x25, 0xea, - 0x3a, 0x9d, 0xea, 0x30, 0xe1, 0x5b, 0xfe, 0xbf, 0x59, 0xb5, 0x20, 0x68, 0x5c, 0x50, 0x85, 0x04, - 0xf6, 0x0e, 0x0d, 0xaa, 0x5d, 0x23, 0x58, 0xa3, 0xe3, 0xd7, 0xf7, 0x97, 0xf9, 0x11, 0xc0, 0xa9, - 0x1e, 0x7e, 0x90, 0xa8, 0xde, 0x64, 0x0f, 0xe9, 0xc9, 0xb0, 0x28, 0x18, 0x5e, 0x54, 0xcf, 0x1d, - 0xc9, 0xd0, 0x15, 0x00, 0x0b, 0x20, 0xbf, 0xf8, 0x05, 0xc0, 0xb9, 0x2a, 0x6d, 0x25, 0x90, 0x11, - 0x20, 0x8b, 0xe3, 0x21, 0x9b, 0x55, 0xff, 0xf8, 0xf4, 0x8e, 0x8c, 0x37, 0x69, 0x13, 0xdb, 0xa6, - 0x46, 0x5d, 0x53, 0x37, 0x89, 0x2d, 0x42, 0xa5, 0x3d, 0x60, 0xc7, 0x62, 0x5d, 0x7e, 0x6a, 0x5c, - 0x8b, 0x5d, 0xfd, 0x00, 0xe0, 0x53, 0xdf, 0xd9, 0xc0, 0x73, 0xb4, 0xa5, 0x26, 0xf5, 0x6a, 0x5a, - 0xcc, 0x0a, 0xb5, 0x8d, 0xc2, 0xd7, 0x30, 0x62, 0x53, 0x44, 0x6c, 0xc6, 0x22, 0x36, 0x37, 0x0a, - 0x95, 0x21, 0x81, 0x5d, 0xfa, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x9e, 0x71, 0x04, 0x73, 0x87, 0x09, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/storagetransfer/v1/transfer_types.pb.go b/vendor/google.golang.org/genproto/googleapis/storagetransfer/v1/transfer_types.pb.go deleted file mode 100644 index 0d94273c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/storagetransfer/v1/transfer_types.pb.go +++ /dev/null @@ -1,1220 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/storagetransfer/v1/transfer_types.proto - -package storagetransfer - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf3 "github.com/golang/protobuf/ptypes/duration" -import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/code" -import google_type "google.golang.org/genproto/googleapis/type/date" -import google_type1 "google.golang.org/genproto/googleapis/type/timeofday" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The status of the transfer job. -type TransferJob_Status int32 - -const ( - // Zero is an illegal value. - TransferJob_STATUS_UNSPECIFIED TransferJob_Status = 0 - // New transfers will be performed based on the schedule. - TransferJob_ENABLED TransferJob_Status = 1 - // New transfers will not be scheduled. - TransferJob_DISABLED TransferJob_Status = 2 - // This is a soft delete state. After a transfer job is set to this - // state, the job and all the transfer executions are subject to - // garbage collection. - TransferJob_DELETED TransferJob_Status = 3 -) - -var TransferJob_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "ENABLED", - 2: "DISABLED", - 3: "DELETED", -} -var TransferJob_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "ENABLED": 1, - "DISABLED": 2, - "DELETED": 3, -} - -func (x TransferJob_Status) String() string { - return proto.EnumName(TransferJob_Status_name, int32(x)) -} -func (TransferJob_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{9, 0} } - -// The status of a TransferOperation. -type TransferOperation_Status int32 - -const ( - // Zero is an illegal value. - TransferOperation_STATUS_UNSPECIFIED TransferOperation_Status = 0 - // In progress. - TransferOperation_IN_PROGRESS TransferOperation_Status = 1 - // Paused. - TransferOperation_PAUSED TransferOperation_Status = 2 - // Completed successfully. - TransferOperation_SUCCESS TransferOperation_Status = 3 - // Terminated due to an unrecoverable failure. - TransferOperation_FAILED TransferOperation_Status = 4 - // Aborted by the user. - TransferOperation_ABORTED TransferOperation_Status = 5 -) - -var TransferOperation_Status_name = map[int32]string{ - 0: "STATUS_UNSPECIFIED", - 1: "IN_PROGRESS", - 2: "PAUSED", - 3: "SUCCESS", - 4: "FAILED", - 5: "ABORTED", -} -var TransferOperation_Status_value = map[string]int32{ - "STATUS_UNSPECIFIED": 0, - "IN_PROGRESS": 1, - "PAUSED": 2, - "SUCCESS": 3, - "FAILED": 4, - "ABORTED": 5, -} - -func (x TransferOperation_Status) String() string { - return proto.EnumName(TransferOperation_Status_name, int32(x)) -} -func (TransferOperation_Status) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{13, 0} } - -// Google service account -type GoogleServiceAccount struct { - // Required. - AccountEmail string `protobuf:"bytes,1,opt,name=account_email,json=accountEmail" json:"account_email,omitempty"` -} - -func (m *GoogleServiceAccount) Reset() { *m = GoogleServiceAccount{} } -func (m *GoogleServiceAccount) String() string { return proto.CompactTextString(m) } -func (*GoogleServiceAccount) ProtoMessage() {} -func (*GoogleServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *GoogleServiceAccount) GetAccountEmail() string { - if m != nil { - return m.AccountEmail - } - return "" -} - -// AWS access key (see -// [AWS Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)). -type AwsAccessKey struct { - // AWS access key ID. - // Required. - AccessKeyId string `protobuf:"bytes,1,opt,name=access_key_id,json=accessKeyId" json:"access_key_id,omitempty"` - // AWS secret access key. This field is not returned in RPC responses. - // Required. - SecretAccessKey string `protobuf:"bytes,2,opt,name=secret_access_key,json=secretAccessKey" json:"secret_access_key,omitempty"` -} - -func (m *AwsAccessKey) Reset() { *m = AwsAccessKey{} } -func (m *AwsAccessKey) String() string { return proto.CompactTextString(m) } -func (*AwsAccessKey) ProtoMessage() {} -func (*AwsAccessKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *AwsAccessKey) GetAccessKeyId() string { - if m != nil { - return m.AccessKeyId - } - return "" -} - -func (m *AwsAccessKey) GetSecretAccessKey() string { - if m != nil { - return m.SecretAccessKey - } - return "" -} - -// Conditions that determine which objects will be transferred. -type ObjectConditions struct { - // If unspecified, `minTimeElapsedSinceLastModification` takes a zero value - // and `maxTimeElapsedSinceLastModification` takes the maximum possible - // value of Duration. Objects that satisfy the object conditions - // must either have a `lastModificationTime` greater or equal to - // `NOW` - `maxTimeElapsedSinceLastModification` and less than - // `NOW` - `minTimeElapsedSinceLastModification`, or not have a - // `lastModificationTime`. - MinTimeElapsedSinceLastModification *google_protobuf3.Duration `protobuf:"bytes,1,opt,name=min_time_elapsed_since_last_modification,json=minTimeElapsedSinceLastModification" json:"min_time_elapsed_since_last_modification,omitempty"` - // `maxTimeElapsedSinceLastModification` is the complement to - // `minTimeElapsedSinceLastModification`. - MaxTimeElapsedSinceLastModification *google_protobuf3.Duration `protobuf:"bytes,2,opt,name=max_time_elapsed_since_last_modification,json=maxTimeElapsedSinceLastModification" json:"max_time_elapsed_since_last_modification,omitempty"` - // If `includePrefixes` is specified, objects that satisfy the object - // conditions must have names that start with one of the `includePrefixes` - // and that do not start with any of the `excludePrefixes`. If `includePrefixes` - // is not specified, all objects except those that have names starting with - // one of the `excludePrefixes` must satisfy the object conditions. - // - // Requirements: - // - // * Each include-prefix and exclude-prefix can contain any sequence of - // Unicode characters, of max length 1024 bytes when UTF8-encoded, and - // must not contain Carriage Return or Line Feed characters. Wildcard - // matching and regular expression matching are not supported. - // - // * Each include-prefix and exclude-prefix must omit the leading slash. - // For example, to include the `requests.gz` object in a transfer from - // `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include - // prefix as `logs/y=2015/requests.gz`. - // - // * None of the include-prefix or the exclude-prefix values can be empty, - // if specified. - // - // * Each include-prefix must include a distinct portion of the object - // namespace, i.e., no include-prefix may be a prefix of another - // include-prefix. - // - // * Each exclude-prefix must exclude a distinct portion of the object - // namespace, i.e., no exclude-prefix may be a prefix of another - // exclude-prefix. - // - // * If `includePrefixes` is specified, then each exclude-prefix must start - // with the value of a path explicitly included by `includePrefixes`. - // - // The max size of `includePrefixes` is 1000. - IncludePrefixes []string `protobuf:"bytes,3,rep,name=include_prefixes,json=includePrefixes" json:"include_prefixes,omitempty"` - // `excludePrefixes` must follow the requirements described for - // `includePrefixes`. - // - // The max size of `excludePrefixes` is 1000. - ExcludePrefixes []string `protobuf:"bytes,4,rep,name=exclude_prefixes,json=excludePrefixes" json:"exclude_prefixes,omitempty"` -} - -func (m *ObjectConditions) Reset() { *m = ObjectConditions{} } -func (m *ObjectConditions) String() string { return proto.CompactTextString(m) } -func (*ObjectConditions) ProtoMessage() {} -func (*ObjectConditions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *ObjectConditions) GetMinTimeElapsedSinceLastModification() *google_protobuf3.Duration { - if m != nil { - return m.MinTimeElapsedSinceLastModification - } - return nil -} - -func (m *ObjectConditions) GetMaxTimeElapsedSinceLastModification() *google_protobuf3.Duration { - if m != nil { - return m.MaxTimeElapsedSinceLastModification - } - return nil -} - -func (m *ObjectConditions) GetIncludePrefixes() []string { - if m != nil { - return m.IncludePrefixes - } - return nil -} - -func (m *ObjectConditions) GetExcludePrefixes() []string { - if m != nil { - return m.ExcludePrefixes - } - return nil -} - -// In a GcsData, an object's name is the Google Cloud Storage object's name and -// its `lastModificationTime` refers to the object's updated time, which changes -// when the content or the metadata of the object is updated. -type GcsData struct { - // Google Cloud Storage bucket name (see - // [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). - // Required. - BucketName string `protobuf:"bytes,1,opt,name=bucket_name,json=bucketName" json:"bucket_name,omitempty"` -} - -func (m *GcsData) Reset() { *m = GcsData{} } -func (m *GcsData) String() string { return proto.CompactTextString(m) } -func (*GcsData) ProtoMessage() {} -func (*GcsData) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *GcsData) GetBucketName() string { - if m != nil { - return m.BucketName - } - return "" -} - -// An AwsS3Data can be a data source, but not a data sink. -// In an AwsS3Data, an object's name is the S3 object's key name. -type AwsS3Data struct { - // S3 Bucket name (see - // [Creating a bucket](http://docs.aws.amazon.com/AmazonS3/latest/dev/create-bucket-get-location-example.html)). - // Required. - BucketName string `protobuf:"bytes,1,opt,name=bucket_name,json=bucketName" json:"bucket_name,omitempty"` - // AWS access key used to sign the API requests to the AWS S3 bucket. - // Permissions on the bucket must be granted to the access ID of the - // AWS access key. - // Required. - AwsAccessKey *AwsAccessKey `protobuf:"bytes,2,opt,name=aws_access_key,json=awsAccessKey" json:"aws_access_key,omitempty"` -} - -func (m *AwsS3Data) Reset() { *m = AwsS3Data{} } -func (m *AwsS3Data) String() string { return proto.CompactTextString(m) } -func (*AwsS3Data) ProtoMessage() {} -func (*AwsS3Data) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *AwsS3Data) GetBucketName() string { - if m != nil { - return m.BucketName - } - return "" -} - -func (m *AwsS3Data) GetAwsAccessKey() *AwsAccessKey { - if m != nil { - return m.AwsAccessKey - } - return nil -} - -// An HttpData specifies a list of objects on the web to be transferred over -// HTTP. The information of the objects to be transferred is contained in a -// file referenced by a URL. The first line in the file must be -// "TsvHttpData-1.0", which specifies the format of the file. Subsequent lines -// specify the information of the list of objects, one object per list entry. -// Each entry has the following tab-delimited fields: -// -// * HTTP URL - The location of the object. -// -// * Length - The size of the object in bytes. -// -// * MD5 - The base64-encoded MD5 hash of the object. -// -// For an example of a valid TSV file, see -// [Transferring data from URLs](https://cloud.google.com/storage/transfer/create-url-list). -// -// When transferring data based on a URL list, keep the following in mind: -// -// * When an object located at `http(s)://hostname:port/<URL-path>` is transferred -// to a data sink, the name of the object at the data sink is -// `<hostname>/<URL-path>`. -// -// * If the specified size of an object does not match the actual size of the -// object fetched, the object will not be transferred. -// -// * If the specified MD5 does not match the MD5 computed from the transferred -// bytes, the object transfer will fail. For more information, see -// [Generating MD5 hashes](https://cloud.google.com/storage/transfer/#md5) -// -// * Ensure that each URL you specify is publicly accessible. For -// example, in Google Cloud Storage you can -// [share an object publicly] -// (https://cloud.google.com/storage/docs/cloud-console#_sharingdata) and get -// a link to it. -// -// * Storage Transfer Service obeys `robots.txt` rules and requires the source -// HTTP server to support `Range` requests and to return a `Content-Length` -// header in each response. -// -// * [ObjectConditions](#ObjectConditions) have no effect when filtering objects -// to transfer. -type HttpData struct { - // The URL that points to the file that stores the object list entries. - // This file must allow public access. Currently, only URLs with HTTP and - // HTTPS schemes are supported. - // Required. - ListUrl string `protobuf:"bytes,1,opt,name=list_url,json=listUrl" json:"list_url,omitempty"` -} - -func (m *HttpData) Reset() { *m = HttpData{} } -func (m *HttpData) String() string { return proto.CompactTextString(m) } -func (*HttpData) ProtoMessage() {} -func (*HttpData) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *HttpData) GetListUrl() string { - if m != nil { - return m.ListUrl - } - return "" -} - -// TransferOptions uses three boolean parameters to define the actions -// to be performed on objects in a transfer. -type TransferOptions struct { - // Whether overwriting objects that already exist in the sink is allowed. - OverwriteObjectsAlreadyExistingInSink bool `protobuf:"varint,1,opt,name=overwrite_objects_already_existing_in_sink,json=overwriteObjectsAlreadyExistingInSink" json:"overwrite_objects_already_existing_in_sink,omitempty"` - // Whether objects that exist only in the sink should be deleted. Note that - // this option and `deleteObjectsFromSourceAfterTransfer` are mutually - // exclusive. - DeleteObjectsUniqueInSink bool `protobuf:"varint,2,opt,name=delete_objects_unique_in_sink,json=deleteObjectsUniqueInSink" json:"delete_objects_unique_in_sink,omitempty"` - // Whether objects should be deleted from the source after they are - // transferred to the sink. Note that this option and - // `deleteObjectsUniqueInSink` are mutually exclusive. - DeleteObjectsFromSourceAfterTransfer bool `protobuf:"varint,3,opt,name=delete_objects_from_source_after_transfer,json=deleteObjectsFromSourceAfterTransfer" json:"delete_objects_from_source_after_transfer,omitempty"` -} - -func (m *TransferOptions) Reset() { *m = TransferOptions{} } -func (m *TransferOptions) String() string { return proto.CompactTextString(m) } -func (*TransferOptions) ProtoMessage() {} -func (*TransferOptions) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *TransferOptions) GetOverwriteObjectsAlreadyExistingInSink() bool { - if m != nil { - return m.OverwriteObjectsAlreadyExistingInSink - } - return false -} - -func (m *TransferOptions) GetDeleteObjectsUniqueInSink() bool { - if m != nil { - return m.DeleteObjectsUniqueInSink - } - return false -} - -func (m *TransferOptions) GetDeleteObjectsFromSourceAfterTransfer() bool { - if m != nil { - return m.DeleteObjectsFromSourceAfterTransfer - } - return false -} - -// Configuration for running a transfer. -type TransferSpec struct { - // The read source of the data. - // - // Types that are valid to be assigned to DataSource: - // *TransferSpec_GcsDataSource - // *TransferSpec_AwsS3DataSource - // *TransferSpec_HttpDataSource - DataSource isTransferSpec_DataSource `protobuf_oneof:"data_source"` - // The write sink for the data. - // - // Types that are valid to be assigned to DataSink: - // *TransferSpec_GcsDataSink - DataSink isTransferSpec_DataSink `protobuf_oneof:"data_sink"` - // Only objects that satisfy these object conditions are included in the set - // of data source and data sink objects. Object conditions based on - // objects' `lastModificationTime` do not exclude objects in a data sink. - ObjectConditions *ObjectConditions `protobuf:"bytes,5,opt,name=object_conditions,json=objectConditions" json:"object_conditions,omitempty"` - // If the option `deleteObjectsUniqueInSink` is `true`, object conditions - // based on objects' `lastModificationTime` are ignored and do not exclude - // objects in a data source or a data sink. - TransferOptions *TransferOptions `protobuf:"bytes,6,opt,name=transfer_options,json=transferOptions" json:"transfer_options,omitempty"` -} - -func (m *TransferSpec) Reset() { *m = TransferSpec{} } -func (m *TransferSpec) String() string { return proto.CompactTextString(m) } -func (*TransferSpec) ProtoMessage() {} -func (*TransferSpec) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -type isTransferSpec_DataSource interface { - isTransferSpec_DataSource() -} -type isTransferSpec_DataSink interface { - isTransferSpec_DataSink() -} - -type TransferSpec_GcsDataSource struct { - GcsDataSource *GcsData `protobuf:"bytes,1,opt,name=gcs_data_source,json=gcsDataSource,oneof"` -} -type TransferSpec_AwsS3DataSource struct { - AwsS3DataSource *AwsS3Data `protobuf:"bytes,2,opt,name=aws_s3_data_source,json=awsS3DataSource,oneof"` -} -type TransferSpec_HttpDataSource struct { - HttpDataSource *HttpData `protobuf:"bytes,3,opt,name=http_data_source,json=httpDataSource,oneof"` -} -type TransferSpec_GcsDataSink struct { - GcsDataSink *GcsData `protobuf:"bytes,4,opt,name=gcs_data_sink,json=gcsDataSink,oneof"` -} - -func (*TransferSpec_GcsDataSource) isTransferSpec_DataSource() {} -func (*TransferSpec_AwsS3DataSource) isTransferSpec_DataSource() {} -func (*TransferSpec_HttpDataSource) isTransferSpec_DataSource() {} -func (*TransferSpec_GcsDataSink) isTransferSpec_DataSink() {} - -func (m *TransferSpec) GetDataSource() isTransferSpec_DataSource { - if m != nil { - return m.DataSource - } - return nil -} -func (m *TransferSpec) GetDataSink() isTransferSpec_DataSink { - if m != nil { - return m.DataSink - } - return nil -} - -func (m *TransferSpec) GetGcsDataSource() *GcsData { - if x, ok := m.GetDataSource().(*TransferSpec_GcsDataSource); ok { - return x.GcsDataSource - } - return nil -} - -func (m *TransferSpec) GetAwsS3DataSource() *AwsS3Data { - if x, ok := m.GetDataSource().(*TransferSpec_AwsS3DataSource); ok { - return x.AwsS3DataSource - } - return nil -} - -func (m *TransferSpec) GetHttpDataSource() *HttpData { - if x, ok := m.GetDataSource().(*TransferSpec_HttpDataSource); ok { - return x.HttpDataSource - } - return nil -} - -func (m *TransferSpec) GetGcsDataSink() *GcsData { - if x, ok := m.GetDataSink().(*TransferSpec_GcsDataSink); ok { - return x.GcsDataSink - } - return nil -} - -func (m *TransferSpec) GetObjectConditions() *ObjectConditions { - if m != nil { - return m.ObjectConditions - } - return nil -} - -func (m *TransferSpec) GetTransferOptions() *TransferOptions { - if m != nil { - return m.TransferOptions - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*TransferSpec) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _TransferSpec_OneofMarshaler, _TransferSpec_OneofUnmarshaler, _TransferSpec_OneofSizer, []interface{}{ - (*TransferSpec_GcsDataSource)(nil), - (*TransferSpec_AwsS3DataSource)(nil), - (*TransferSpec_HttpDataSource)(nil), - (*TransferSpec_GcsDataSink)(nil), - } -} - -func _TransferSpec_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*TransferSpec) - // data_source - switch x := m.DataSource.(type) { - case *TransferSpec_GcsDataSource: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.GcsDataSource); err != nil { - return err - } - case *TransferSpec_AwsS3DataSource: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.AwsS3DataSource); err != nil { - return err - } - case *TransferSpec_HttpDataSource: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.HttpDataSource); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransferSpec.DataSource has unexpected type %T", x) - } - // data_sink - switch x := m.DataSink.(type) { - case *TransferSpec_GcsDataSink: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.GcsDataSink); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("TransferSpec.DataSink has unexpected type %T", x) - } - return nil -} - -func _TransferSpec_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*TransferSpec) - switch tag { - case 1: // data_source.gcs_data_source - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GcsData) - err := b.DecodeMessage(msg) - m.DataSource = &TransferSpec_GcsDataSource{msg} - return true, err - case 2: // data_source.aws_s3_data_source - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(AwsS3Data) - err := b.DecodeMessage(msg) - m.DataSource = &TransferSpec_AwsS3DataSource{msg} - return true, err - case 3: // data_source.http_data_source - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(HttpData) - err := b.DecodeMessage(msg) - m.DataSource = &TransferSpec_HttpDataSource{msg} - return true, err - case 4: // data_sink.gcs_data_sink - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(GcsData) - err := b.DecodeMessage(msg) - m.DataSink = &TransferSpec_GcsDataSink{msg} - return true, err - default: - return false, nil - } -} - -func _TransferSpec_OneofSizer(msg proto.Message) (n int) { - m := msg.(*TransferSpec) - // data_source - switch x := m.DataSource.(type) { - case *TransferSpec_GcsDataSource: - s := proto.Size(x.GcsDataSource) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransferSpec_AwsS3DataSource: - s := proto.Size(x.AwsS3DataSource) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *TransferSpec_HttpDataSource: - s := proto.Size(x.HttpDataSource) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - // data_sink - switch x := m.DataSink.(type) { - case *TransferSpec_GcsDataSink: - s := proto.Size(x.GcsDataSink) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Transfers can be scheduled to recur or to run just once. -type Schedule struct { - // The first day the recurring transfer is scheduled to run. If - // `scheduleStartDate` is in the past, the transfer will run for the first - // time on the following day. - // Required. - ScheduleStartDate *google_type.Date `protobuf:"bytes,1,opt,name=schedule_start_date,json=scheduleStartDate" json:"schedule_start_date,omitempty"` - // The last day the recurring transfer will be run. If `scheduleEndDate` - // is the same as `scheduleStartDate`, the transfer will be executed only - // once. - ScheduleEndDate *google_type.Date `protobuf:"bytes,2,opt,name=schedule_end_date,json=scheduleEndDate" json:"schedule_end_date,omitempty"` - // The time in UTC at which the transfer will be scheduled to start in a day. - // Transfers may start later than this time. If not specified, recurring and - // one-time transfers that are scheduled to run today will run immediately; - // recurring transfers that are scheduled to run on a future date will start - // at approximately midnight UTC on that date. Note that when configuring a - // transfer with the Cloud Platform Console, the transfer's start time in a - // day is specified in your local timezone. - StartTimeOfDay *google_type1.TimeOfDay `protobuf:"bytes,3,opt,name=start_time_of_day,json=startTimeOfDay" json:"start_time_of_day,omitempty"` -} - -func (m *Schedule) Reset() { *m = Schedule{} } -func (m *Schedule) String() string { return proto.CompactTextString(m) } -func (*Schedule) ProtoMessage() {} -func (*Schedule) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *Schedule) GetScheduleStartDate() *google_type.Date { - if m != nil { - return m.ScheduleStartDate - } - return nil -} - -func (m *Schedule) GetScheduleEndDate() *google_type.Date { - if m != nil { - return m.ScheduleEndDate - } - return nil -} - -func (m *Schedule) GetStartTimeOfDay() *google_type1.TimeOfDay { - if m != nil { - return m.StartTimeOfDay - } - return nil -} - -// This resource represents the configuration of a transfer job that runs -// periodically. -type TransferJob struct { - // A globally unique name assigned by Storage Transfer Service when the - // job is created. This field should be left empty in requests to create a new - // transfer job; otherwise, the requests result in an `INVALID_ARGUMENT` - // error. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A description provided by the user for the job. Its max length is 1024 - // bytes when Unicode-encoded. - Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"` - // The ID of the Google Cloud Platform Console project that owns the job. - ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Transfer specification. - TransferSpec *TransferSpec `protobuf:"bytes,4,opt,name=transfer_spec,json=transferSpec" json:"transfer_spec,omitempty"` - // Schedule specification. - Schedule *Schedule `protobuf:"bytes,5,opt,name=schedule" json:"schedule,omitempty"` - // Status of the job. This value MUST be specified for - // `CreateTransferJobRequests`. - // - // NOTE: The effect of the new job status takes place during a subsequent job - // run. For example, if you change the job status from `ENABLED` to - // `DISABLED`, and an operation spawned by the transfer is running, the status - // change would not affect the current operation. - Status TransferJob_Status `protobuf:"varint,6,opt,name=status,enum=google.storagetransfer.v1.TransferJob_Status" json:"status,omitempty"` - // This field cannot be changed by user requests. - CreationTime *google_protobuf4.Timestamp `protobuf:"bytes,7,opt,name=creation_time,json=creationTime" json:"creation_time,omitempty"` - // This field cannot be changed by user requests. - LastModificationTime *google_protobuf4.Timestamp `protobuf:"bytes,8,opt,name=last_modification_time,json=lastModificationTime" json:"last_modification_time,omitempty"` - // This field cannot be changed by user requests. - DeletionTime *google_protobuf4.Timestamp `protobuf:"bytes,9,opt,name=deletion_time,json=deletionTime" json:"deletion_time,omitempty"` -} - -func (m *TransferJob) Reset() { *m = TransferJob{} } -func (m *TransferJob) String() string { return proto.CompactTextString(m) } -func (*TransferJob) ProtoMessage() {} -func (*TransferJob) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *TransferJob) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *TransferJob) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *TransferJob) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *TransferJob) GetTransferSpec() *TransferSpec { - if m != nil { - return m.TransferSpec - } - return nil -} - -func (m *TransferJob) GetSchedule() *Schedule { - if m != nil { - return m.Schedule - } - return nil -} - -func (m *TransferJob) GetStatus() TransferJob_Status { - if m != nil { - return m.Status - } - return TransferJob_STATUS_UNSPECIFIED -} - -func (m *TransferJob) GetCreationTime() *google_protobuf4.Timestamp { - if m != nil { - return m.CreationTime - } - return nil -} - -func (m *TransferJob) GetLastModificationTime() *google_protobuf4.Timestamp { - if m != nil { - return m.LastModificationTime - } - return nil -} - -func (m *TransferJob) GetDeletionTime() *google_protobuf4.Timestamp { - if m != nil { - return m.DeletionTime - } - return nil -} - -// An entry describing an error that has occurred. -type ErrorLogEntry struct { - // A URL that refers to the target (a data source, a data sink, - // or an object) with which the error is associated. - // Required. - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - // A list of messages that carry the error details. - ErrorDetails []string `protobuf:"bytes,3,rep,name=error_details,json=errorDetails" json:"error_details,omitempty"` -} - -func (m *ErrorLogEntry) Reset() { *m = ErrorLogEntry{} } -func (m *ErrorLogEntry) String() string { return proto.CompactTextString(m) } -func (*ErrorLogEntry) ProtoMessage() {} -func (*ErrorLogEntry) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *ErrorLogEntry) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *ErrorLogEntry) GetErrorDetails() []string { - if m != nil { - return m.ErrorDetails - } - return nil -} - -// A summary of errors by error code, plus a count and sample error log -// entries. -type ErrorSummary struct { - // Required. - ErrorCode google_rpc.Code `protobuf:"varint,1,opt,name=error_code,json=errorCode,enum=google.rpc.Code" json:"error_code,omitempty"` - // Count of this type of error. - // Required. - ErrorCount int64 `protobuf:"varint,2,opt,name=error_count,json=errorCount" json:"error_count,omitempty"` - // Error samples. - ErrorLogEntries []*ErrorLogEntry `protobuf:"bytes,3,rep,name=error_log_entries,json=errorLogEntries" json:"error_log_entries,omitempty"` -} - -func (m *ErrorSummary) Reset() { *m = ErrorSummary{} } -func (m *ErrorSummary) String() string { return proto.CompactTextString(m) } -func (*ErrorSummary) ProtoMessage() {} -func (*ErrorSummary) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *ErrorSummary) GetErrorCode() google_rpc.Code { - if m != nil { - return m.ErrorCode - } - return google_rpc.Code_OK -} - -func (m *ErrorSummary) GetErrorCount() int64 { - if m != nil { - return m.ErrorCount - } - return 0 -} - -func (m *ErrorSummary) GetErrorLogEntries() []*ErrorLogEntry { - if m != nil { - return m.ErrorLogEntries - } - return nil -} - -// A collection of counters that report the progress of a transfer operation. -type TransferCounters struct { - // Objects found in the data source that are scheduled to be transferred, - // excluding any that are filtered based on object conditions or skipped due - // to sync. - ObjectsFoundFromSource int64 `protobuf:"varint,1,opt,name=objects_found_from_source,json=objectsFoundFromSource" json:"objects_found_from_source,omitempty"` - // Bytes found in the data source that are scheduled to be transferred, - // excluding any that are filtered based on object conditions or skipped due - // to sync. - BytesFoundFromSource int64 `protobuf:"varint,2,opt,name=bytes_found_from_source,json=bytesFoundFromSource" json:"bytes_found_from_source,omitempty"` - // Objects found only in the data sink that are scheduled to be deleted. - ObjectsFoundOnlyFromSink int64 `protobuf:"varint,3,opt,name=objects_found_only_from_sink,json=objectsFoundOnlyFromSink" json:"objects_found_only_from_sink,omitempty"` - // Bytes found only in the data sink that are scheduled to be deleted. - BytesFoundOnlyFromSink int64 `protobuf:"varint,4,opt,name=bytes_found_only_from_sink,json=bytesFoundOnlyFromSink" json:"bytes_found_only_from_sink,omitempty"` - // Objects in the data source that are not transferred because they already - // exist in the data sink. - ObjectsFromSourceSkippedBySync int64 `protobuf:"varint,5,opt,name=objects_from_source_skipped_by_sync,json=objectsFromSourceSkippedBySync" json:"objects_from_source_skipped_by_sync,omitempty"` - // Bytes in the data source that are not transferred because they already - // exist in the data sink. - BytesFromSourceSkippedBySync int64 `protobuf:"varint,6,opt,name=bytes_from_source_skipped_by_sync,json=bytesFromSourceSkippedBySync" json:"bytes_from_source_skipped_by_sync,omitempty"` - // Objects that are copied to the data sink. - ObjectsCopiedToSink int64 `protobuf:"varint,7,opt,name=objects_copied_to_sink,json=objectsCopiedToSink" json:"objects_copied_to_sink,omitempty"` - // Bytes that are copied to the data sink. - BytesCopiedToSink int64 `protobuf:"varint,8,opt,name=bytes_copied_to_sink,json=bytesCopiedToSink" json:"bytes_copied_to_sink,omitempty"` - // Objects that are deleted from the data source. - ObjectsDeletedFromSource int64 `protobuf:"varint,9,opt,name=objects_deleted_from_source,json=objectsDeletedFromSource" json:"objects_deleted_from_source,omitempty"` - // Bytes that are deleted from the data source. - BytesDeletedFromSource int64 `protobuf:"varint,10,opt,name=bytes_deleted_from_source,json=bytesDeletedFromSource" json:"bytes_deleted_from_source,omitempty"` - // Objects that are deleted from the data sink. - ObjectsDeletedFromSink int64 `protobuf:"varint,11,opt,name=objects_deleted_from_sink,json=objectsDeletedFromSink" json:"objects_deleted_from_sink,omitempty"` - // Bytes that are deleted from the data sink. - BytesDeletedFromSink int64 `protobuf:"varint,12,opt,name=bytes_deleted_from_sink,json=bytesDeletedFromSink" json:"bytes_deleted_from_sink,omitempty"` - // Objects in the data source that failed during the transfer. - ObjectsFromSourceFailed int64 `protobuf:"varint,13,opt,name=objects_from_source_failed,json=objectsFromSourceFailed" json:"objects_from_source_failed,omitempty"` - // Bytes in the data source that failed during the transfer. - BytesFromSourceFailed int64 `protobuf:"varint,14,opt,name=bytes_from_source_failed,json=bytesFromSourceFailed" json:"bytes_from_source_failed,omitempty"` - // Objects that failed to be deleted from the data sink. - ObjectsFailedToDeleteFromSink int64 `protobuf:"varint,15,opt,name=objects_failed_to_delete_from_sink,json=objectsFailedToDeleteFromSink" json:"objects_failed_to_delete_from_sink,omitempty"` - // Bytes that failed to be deleted from the data sink. - BytesFailedToDeleteFromSink int64 `protobuf:"varint,16,opt,name=bytes_failed_to_delete_from_sink,json=bytesFailedToDeleteFromSink" json:"bytes_failed_to_delete_from_sink,omitempty"` -} - -func (m *TransferCounters) Reset() { *m = TransferCounters{} } -func (m *TransferCounters) String() string { return proto.CompactTextString(m) } -func (*TransferCounters) ProtoMessage() {} -func (*TransferCounters) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *TransferCounters) GetObjectsFoundFromSource() int64 { - if m != nil { - return m.ObjectsFoundFromSource - } - return 0 -} - -func (m *TransferCounters) GetBytesFoundFromSource() int64 { - if m != nil { - return m.BytesFoundFromSource - } - return 0 -} - -func (m *TransferCounters) GetObjectsFoundOnlyFromSink() int64 { - if m != nil { - return m.ObjectsFoundOnlyFromSink - } - return 0 -} - -func (m *TransferCounters) GetBytesFoundOnlyFromSink() int64 { - if m != nil { - return m.BytesFoundOnlyFromSink - } - return 0 -} - -func (m *TransferCounters) GetObjectsFromSourceSkippedBySync() int64 { - if m != nil { - return m.ObjectsFromSourceSkippedBySync - } - return 0 -} - -func (m *TransferCounters) GetBytesFromSourceSkippedBySync() int64 { - if m != nil { - return m.BytesFromSourceSkippedBySync - } - return 0 -} - -func (m *TransferCounters) GetObjectsCopiedToSink() int64 { - if m != nil { - return m.ObjectsCopiedToSink - } - return 0 -} - -func (m *TransferCounters) GetBytesCopiedToSink() int64 { - if m != nil { - return m.BytesCopiedToSink - } - return 0 -} - -func (m *TransferCounters) GetObjectsDeletedFromSource() int64 { - if m != nil { - return m.ObjectsDeletedFromSource - } - return 0 -} - -func (m *TransferCounters) GetBytesDeletedFromSource() int64 { - if m != nil { - return m.BytesDeletedFromSource - } - return 0 -} - -func (m *TransferCounters) GetObjectsDeletedFromSink() int64 { - if m != nil { - return m.ObjectsDeletedFromSink - } - return 0 -} - -func (m *TransferCounters) GetBytesDeletedFromSink() int64 { - if m != nil { - return m.BytesDeletedFromSink - } - return 0 -} - -func (m *TransferCounters) GetObjectsFromSourceFailed() int64 { - if m != nil { - return m.ObjectsFromSourceFailed - } - return 0 -} - -func (m *TransferCounters) GetBytesFromSourceFailed() int64 { - if m != nil { - return m.BytesFromSourceFailed - } - return 0 -} - -func (m *TransferCounters) GetObjectsFailedToDeleteFromSink() int64 { - if m != nil { - return m.ObjectsFailedToDeleteFromSink - } - return 0 -} - -func (m *TransferCounters) GetBytesFailedToDeleteFromSink() int64 { - if m != nil { - return m.BytesFailedToDeleteFromSink - } - return 0 -} - -// A description of the execution of a transfer. -type TransferOperation struct { - // A globally unique ID assigned by the system. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The ID of the Google Cloud Platform Console project that owns the operation. - // Required. - ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId" json:"project_id,omitempty"` - // Transfer specification. - // Required. - TransferSpec *TransferSpec `protobuf:"bytes,3,opt,name=transfer_spec,json=transferSpec" json:"transfer_spec,omitempty"` - // Start time of this transfer execution. - StartTime *google_protobuf4.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // End time of this transfer execution. - EndTime *google_protobuf4.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime" json:"end_time,omitempty"` - // Status of the transfer operation. - Status TransferOperation_Status `protobuf:"varint,6,opt,name=status,enum=google.storagetransfer.v1.TransferOperation_Status" json:"status,omitempty"` - // Information about the progress of the transfer operation. - Counters *TransferCounters `protobuf:"bytes,7,opt,name=counters" json:"counters,omitempty"` - // Summarizes errors encountered with sample error log entries. - ErrorBreakdowns []*ErrorSummary `protobuf:"bytes,8,rep,name=error_breakdowns,json=errorBreakdowns" json:"error_breakdowns,omitempty"` - // The name of the transfer job that triggers this transfer operation. - TransferJobName string `protobuf:"bytes,9,opt,name=transfer_job_name,json=transferJobName" json:"transfer_job_name,omitempty"` -} - -func (m *TransferOperation) Reset() { *m = TransferOperation{} } -func (m *TransferOperation) String() string { return proto.CompactTextString(m) } -func (*TransferOperation) ProtoMessage() {} -func (*TransferOperation) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } - -func (m *TransferOperation) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *TransferOperation) GetProjectId() string { - if m != nil { - return m.ProjectId - } - return "" -} - -func (m *TransferOperation) GetTransferSpec() *TransferSpec { - if m != nil { - return m.TransferSpec - } - return nil -} - -func (m *TransferOperation) GetStartTime() *google_protobuf4.Timestamp { - if m != nil { - return m.StartTime - } - return nil -} - -func (m *TransferOperation) GetEndTime() *google_protobuf4.Timestamp { - if m != nil { - return m.EndTime - } - return nil -} - -func (m *TransferOperation) GetStatus() TransferOperation_Status { - if m != nil { - return m.Status - } - return TransferOperation_STATUS_UNSPECIFIED -} - -func (m *TransferOperation) GetCounters() *TransferCounters { - if m != nil { - return m.Counters - } - return nil -} - -func (m *TransferOperation) GetErrorBreakdowns() []*ErrorSummary { - if m != nil { - return m.ErrorBreakdowns - } - return nil -} - -func (m *TransferOperation) GetTransferJobName() string { - if m != nil { - return m.TransferJobName - } - return "" -} - -func init() { - proto.RegisterType((*GoogleServiceAccount)(nil), "google.storagetransfer.v1.GoogleServiceAccount") - proto.RegisterType((*AwsAccessKey)(nil), "google.storagetransfer.v1.AwsAccessKey") - proto.RegisterType((*ObjectConditions)(nil), "google.storagetransfer.v1.ObjectConditions") - proto.RegisterType((*GcsData)(nil), "google.storagetransfer.v1.GcsData") - proto.RegisterType((*AwsS3Data)(nil), "google.storagetransfer.v1.AwsS3Data") - proto.RegisterType((*HttpData)(nil), "google.storagetransfer.v1.HttpData") - proto.RegisterType((*TransferOptions)(nil), "google.storagetransfer.v1.TransferOptions") - proto.RegisterType((*TransferSpec)(nil), "google.storagetransfer.v1.TransferSpec") - proto.RegisterType((*Schedule)(nil), "google.storagetransfer.v1.Schedule") - proto.RegisterType((*TransferJob)(nil), "google.storagetransfer.v1.TransferJob") - proto.RegisterType((*ErrorLogEntry)(nil), "google.storagetransfer.v1.ErrorLogEntry") - proto.RegisterType((*ErrorSummary)(nil), "google.storagetransfer.v1.ErrorSummary") - proto.RegisterType((*TransferCounters)(nil), "google.storagetransfer.v1.TransferCounters") - proto.RegisterType((*TransferOperation)(nil), "google.storagetransfer.v1.TransferOperation") - proto.RegisterEnum("google.storagetransfer.v1.TransferJob_Status", TransferJob_Status_name, TransferJob_Status_value) - proto.RegisterEnum("google.storagetransfer.v1.TransferOperation_Status", TransferOperation_Status_name, TransferOperation_Status_value) -} - -func init() { proto.RegisterFile("google/storagetransfer/v1/transfer_types.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 1767 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xdd, 0x6e, 0xdb, 0xc8, - 0x15, 0x8e, 0x24, 0xc7, 0x96, 0x8e, 0x24, 0x4b, 0x9e, 0xcd, 0x7a, 0x65, 0x27, 0xd9, 0xa4, 0xf4, - 0x2e, 0x92, 0xcd, 0xa2, 0x12, 0x62, 0x63, 0x51, 0xa4, 0xc1, 0x36, 0x95, 0x2d, 0xd9, 0xd6, 0xc6, - 0x1b, 0x1b, 0xa4, 0xbc, 0xfd, 0x41, 0x50, 0x62, 0x44, 0x8e, 0x14, 0xae, 0x29, 0x0e, 0xcb, 0x19, - 0xc5, 0x16, 0x7a, 0xd5, 0xab, 0x3e, 0x43, 0x5f, 0xa1, 0x0f, 0xd0, 0x37, 0xe8, 0x4d, 0x51, 0xa0, - 0x77, 0x7d, 0x8e, 0x5e, 0xf6, 0xb2, 0x98, 0x1f, 0x52, 0x14, 0x2d, 0xcb, 0x06, 0xf6, 0x8e, 0x3c, - 0xe7, 0xfb, 0xbe, 0x33, 0x33, 0xe7, 0xe8, 0x9c, 0xa1, 0xa0, 0x39, 0xa2, 0x74, 0xe4, 0x93, 0x16, - 0xe3, 0x34, 0xc2, 0x23, 0xc2, 0x23, 0x1c, 0xb0, 0x21, 0x89, 0x5a, 0x1f, 0x5f, 0xb6, 0xe2, 0x67, - 0x9b, 0x4f, 0x43, 0xc2, 0x9a, 0x61, 0x44, 0x39, 0x45, 0x5b, 0x0a, 0xdf, 0xcc, 0xe0, 0x9b, 0x1f, - 0x5f, 0x6e, 0x3f, 0xd2, 0x52, 0x38, 0xf4, 0x5a, 0x38, 0x08, 0x28, 0xc7, 0xdc, 0xa3, 0x81, 0x26, - 0x6e, 0x7f, 0xae, 0xbd, 0xf2, 0x6d, 0x30, 0x19, 0xb6, 0xdc, 0x49, 0x24, 0x01, 0xda, 0xff, 0x24, - 0xeb, 0xe7, 0xde, 0x98, 0x30, 0x8e, 0xc7, 0xa1, 0x06, 0x7c, 0xaa, 0x01, 0x51, 0xe8, 0xb4, 0x1c, - 0xea, 0x12, 0x6d, 0xde, 0xd4, 0x66, 0xb1, 0xc8, 0x96, 0x8b, 0x79, 0x6c, 0x7f, 0x98, 0xb6, 0x0b, - 0x2d, 0x3a, 0x74, 0xf1, 0x54, 0x39, 0x8d, 0xd7, 0xf0, 0xe0, 0x48, 0xba, 0x2d, 0x12, 0x7d, 0xf4, - 0x1c, 0xd2, 0x76, 0x1c, 0x3a, 0x09, 0x38, 0xda, 0x81, 0x2a, 0x56, 0x8f, 0x36, 0x19, 0x63, 0xcf, - 0x6f, 0xe4, 0x9e, 0xe6, 0x9e, 0x97, 0xcc, 0x8a, 0x36, 0x76, 0x85, 0xcd, 0xf8, 0x03, 0x54, 0xda, - 0x97, 0xac, 0xed, 0x38, 0x84, 0xb1, 0xb7, 0x64, 0x8a, 0x0c, 0x49, 0x22, 0x8c, 0xd9, 0x17, 0x64, - 0x6a, 0x7b, 0xae, 0x26, 0x95, 0x71, 0x8c, 0xe8, 0xb9, 0xe8, 0x05, 0x6c, 0x30, 0xe2, 0x44, 0x84, - 0xdb, 0x33, 0x68, 0x23, 0x2f, 0x71, 0x35, 0xe5, 0x48, 0xf4, 0x8c, 0x7f, 0xe5, 0xa1, 0x7e, 0x3a, - 0xf8, 0x91, 0x38, 0xfc, 0x80, 0x06, 0xae, 0x27, 0x0f, 0x11, 0x85, 0xf0, 0x7c, 0xec, 0x05, 0xb6, - 0xd8, 0x88, 0x4d, 0x7c, 0x1c, 0x32, 0xe2, 0xda, 0xcc, 0x0b, 0x1c, 0x62, 0xfb, 0x98, 0x71, 0x7b, - 0x4c, 0x5d, 0x6f, 0xe8, 0x39, 0xf2, 0x40, 0x65, 0xfc, 0xf2, 0xee, 0x96, 0x4e, 0x6d, 0x33, 0x3e, - 0xd1, 0x66, 0x47, 0x9f, 0xb8, 0xb9, 0x33, 0xf6, 0x82, 0xbe, 0x37, 0x26, 0x5d, 0x25, 0x64, 0x09, - 0x9d, 0x13, 0xcc, 0xf8, 0xf7, 0x29, 0x15, 0x19, 0x11, 0x5f, 0xdd, 0x2d, 0x62, 0xfe, 0xf6, 0x88, - 0xf8, 0xea, 0xd6, 0x88, 0x5f, 0x41, 0xdd, 0x0b, 0x1c, 0x7f, 0xe2, 0x12, 0x3b, 0x8c, 0xc8, 0xd0, - 0xbb, 0x22, 0xac, 0x51, 0x78, 0x5a, 0x10, 0x67, 0xa4, 0xed, 0x67, 0xda, 0x2c, 0xa0, 0xe4, 0x2a, - 0x03, 0x5d, 0x51, 0x50, 0x6d, 0x8f, 0xa1, 0xc6, 0x0b, 0x58, 0x3b, 0x72, 0x58, 0x07, 0x73, 0x8c, - 0x9e, 0x40, 0x79, 0x30, 0x71, 0x2e, 0x08, 0xb7, 0x03, 0x3c, 0x26, 0x3a, 0x4f, 0xa0, 0x4c, 0xef, - 0xf0, 0x98, 0x18, 0x7f, 0x82, 0x52, 0xfb, 0x92, 0x59, 0x7b, 0x77, 0x42, 0xa3, 0xef, 0x61, 0x1d, - 0x5f, 0xb2, 0x6c, 0x46, 0xcb, 0xbb, 0xcf, 0x9a, 0x37, 0xfe, 0x48, 0x9a, 0xe9, 0xca, 0x31, 0x2b, - 0x38, 0xf5, 0x66, 0x7c, 0x09, 0xc5, 0x63, 0xce, 0x43, 0x19, 0x7b, 0x0b, 0x8a, 0xbe, 0xc7, 0xb8, - 0x3d, 0x89, 0xe2, 0x1a, 0x5c, 0x13, 0xef, 0xe7, 0x91, 0x6f, 0xfc, 0x25, 0x0f, 0xb5, 0xbe, 0x56, - 0x3c, 0x0d, 0x55, 0x75, 0xfc, 0x0e, 0x5e, 0xd0, 0x8f, 0x24, 0xba, 0x8c, 0x3c, 0x4e, 0x6c, 0x2a, - 0x6b, 0x87, 0xd9, 0xd8, 0x8f, 0x08, 0x76, 0xa7, 0x36, 0xb9, 0xf2, 0x18, 0xf7, 0x82, 0x91, 0xed, - 0x05, 0x22, 0x81, 0x17, 0x52, 0xb0, 0x68, 0x7e, 0x99, 0x30, 0x54, 0xb1, 0xb1, 0xb6, 0xc2, 0x77, - 0x35, 0xbc, 0x17, 0x58, 0x5e, 0x70, 0x81, 0x7e, 0x0d, 0x8f, 0x5d, 0xe2, 0x93, 0x94, 0xee, 0x24, - 0xf0, 0xfe, 0x38, 0x21, 0x89, 0x5a, 0x5e, 0xaa, 0x6d, 0x29, 0x90, 0x96, 0x3a, 0x97, 0x10, 0xad, - 0xf0, 0x1b, 0xf8, 0x2a, 0xa3, 0x30, 0x8c, 0xe8, 0xd8, 0x66, 0x74, 0x12, 0x39, 0xc4, 0xc6, 0x43, - 0x2e, 0x5a, 0x8c, 0xde, 0x50, 0xa3, 0x20, 0xd5, 0xbe, 0x98, 0x53, 0x3b, 0x8c, 0xe8, 0xd8, 0x92, - 0xe8, 0xb6, 0x00, 0xc7, 0x9b, 0x37, 0xfe, 0xba, 0x02, 0x95, 0xf8, 0xc5, 0x0a, 0x89, 0x83, 0x4e, - 0xa0, 0x36, 0x72, 0x98, 0xed, 0x62, 0x8e, 0xb5, 0xbc, 0xfe, 0x2d, 0x18, 0x4b, 0x32, 0xa2, 0x8b, - 0xe3, 0xf8, 0x9e, 0x59, 0x1d, 0xa9, 0x47, 0x15, 0x0b, 0x59, 0x80, 0x44, 0x7a, 0xd9, 0xde, 0x9c, - 0xa0, 0x4a, 0xf1, 0x17, 0xcb, 0x53, 0xac, 0x2a, 0xe8, 0xf8, 0x9e, 0x59, 0xc3, 0xf1, 0x8b, 0x16, - 0x3d, 0x85, 0xfa, 0x07, 0xce, 0xc3, 0x39, 0xc9, 0x82, 0x94, 0xdc, 0x59, 0x22, 0x19, 0xd7, 0xc5, - 0xf1, 0x3d, 0x73, 0xfd, 0x83, 0x7e, 0xd6, 0x82, 0xc7, 0x50, 0x9d, 0xed, 0x59, 0xe4, 0x63, 0xe5, - 0xce, 0x3b, 0xce, 0x99, 0xe5, 0x78, 0xc7, 0x22, 0x4f, 0xbf, 0x85, 0x0d, 0x95, 0x20, 0xdb, 0x49, - 0xfa, 0x4e, 0xe3, 0xbe, 0x54, 0xfb, 0x7a, 0x89, 0x5a, 0xb6, 0x55, 0x99, 0x75, 0x9a, 0x6d, 0x5e, - 0xe7, 0x50, 0x4f, 0x86, 0x09, 0x55, 0x25, 0xdb, 0x58, 0x95, 0xc2, 0x2f, 0x96, 0x08, 0x67, 0x8a, - 0xdc, 0xac, 0xf1, 0x79, 0xc3, 0x7e, 0x15, 0xca, 0xa9, 0x63, 0xdc, 0x2f, 0x43, 0x29, 0x39, 0x05, - 0xe3, 0xdf, 0x39, 0x28, 0x5a, 0xce, 0x07, 0xe2, 0x4e, 0x7c, 0x82, 0xda, 0xf0, 0x09, 0xd3, 0xcf, - 0x36, 0xe3, 0x38, 0xe2, 0xe2, 0xb8, 0xe2, 0xda, 0xd8, 0x88, 0x97, 0x20, 0x26, 0x45, 0xb3, 0x83, - 0x39, 0x31, 0x37, 0x62, 0xb4, 0x25, 0xc0, 0xc2, 0x84, 0xbe, 0x85, 0xc4, 0x68, 0x93, 0xc0, 0x55, - 0x02, 0xf9, 0x9b, 0x04, 0x6a, 0x31, 0xb6, 0x1b, 0xb8, 0x92, 0xde, 0x86, 0x0d, 0x15, 0x58, 0xb6, - 0x53, 0x3a, 0xb4, 0x5d, 0x3c, 0xd5, 0x79, 0xdf, 0x9c, 0xa3, 0x8b, 0x26, 0x79, 0x3a, 0xec, 0xe0, - 0xa9, 0xb9, 0x2e, 0x09, 0xc9, 0xbb, 0xf1, 0x9f, 0x15, 0x28, 0xc7, 0x47, 0xf2, 0x1d, 0x1d, 0x20, - 0x04, 0x2b, 0xa9, 0xbe, 0x24, 0x9f, 0xd1, 0x53, 0x28, 0xbb, 0x84, 0x39, 0x91, 0x17, 0x26, 0x6d, - 0xb9, 0x64, 0xa6, 0x4d, 0xe8, 0x31, 0x40, 0x18, 0x51, 0x99, 0x65, 0xcf, 0x95, 0x2b, 0x28, 0x99, - 0x25, 0x6d, 0xe9, 0xb9, 0xe8, 0x04, 0xaa, 0x49, 0xa6, 0x58, 0x48, 0x1c, 0x5d, 0x4d, 0xcf, 0xee, - 0x90, 0x26, 0xf1, 0x0b, 0x34, 0x2b, 0x3c, 0xfd, 0x7b, 0x7c, 0x03, 0xc5, 0xf8, 0x20, 0x74, 0x21, - 0x2d, 0x2b, 0xf2, 0x38, 0x5d, 0x66, 0x42, 0x42, 0x5d, 0x58, 0x65, 0x1c, 0xf3, 0x89, 0x2a, 0x97, - 0xf5, 0xdd, 0x9f, 0xdf, 0x61, 0x1d, 0xdf, 0xd1, 0x41, 0xd3, 0x92, 0x24, 0x53, 0x93, 0xd1, 0x1b, - 0xa8, 0x3a, 0x11, 0x91, 0x43, 0x46, 0x26, 0xa0, 0xb1, 0x26, 0x17, 0xb3, 0x7d, 0x6d, 0x5e, 0xf5, - 0xe3, 0x3b, 0x87, 0x59, 0x89, 0x09, 0xc2, 0x84, 0xce, 0x60, 0xf3, 0xda, 0xd0, 0x53, 0x4a, 0xc5, - 0x5b, 0x95, 0x1e, 0xf8, 0x99, 0x39, 0x27, 0x15, 0xdf, 0x40, 0x55, 0xf6, 0xb8, 0x44, 0xa8, 0x74, - 0xfb, 0x92, 0x62, 0x82, 0x30, 0x19, 0xc7, 0xb0, 0xaa, 0x76, 0x89, 0x36, 0x01, 0x59, 0xfd, 0x76, - 0xff, 0xdc, 0xb2, 0xcf, 0xdf, 0x59, 0x67, 0xdd, 0x83, 0xde, 0x61, 0xaf, 0xdb, 0xa9, 0xdf, 0x43, - 0x65, 0x58, 0xeb, 0xbe, 0x6b, 0xef, 0x9f, 0x74, 0x3b, 0xf5, 0x1c, 0xaa, 0x40, 0xb1, 0xd3, 0xb3, - 0xd4, 0x5b, 0x5e, 0xb8, 0x3a, 0xdd, 0x93, 0x6e, 0xbf, 0xdb, 0xa9, 0x17, 0x8c, 0x43, 0xa8, 0x76, - 0xa3, 0x88, 0x46, 0x27, 0x74, 0xd4, 0x0d, 0x78, 0x34, 0x45, 0x75, 0x28, 0xcc, 0xe6, 0x8e, 0x78, - 0x14, 0xf7, 0x22, 0x22, 0x20, 0xb6, 0x4b, 0x38, 0xf6, 0xfc, 0x78, 0x2c, 0x57, 0xa4, 0xb1, 0xa3, - 0x6c, 0xc6, 0xdf, 0x73, 0x50, 0x91, 0x42, 0xd6, 0x64, 0x3c, 0xc6, 0xd1, 0x14, 0xb5, 0x00, 0x14, - 0x4b, 0x5c, 0xd7, 0xa4, 0xdc, 0xfa, 0x6e, 0x3d, 0xde, 0x60, 0x14, 0x3a, 0xcd, 0x03, 0xea, 0x12, - 0xb3, 0x24, 0x31, 0xe2, 0x51, 0x4c, 0xdc, 0x98, 0x30, 0x09, 0xb8, 0x2c, 0xdf, 0x82, 0x09, 0xda, - 0x2f, 0xee, 0x67, 0x7d, 0xd8, 0x50, 0x00, 0x9f, 0x8e, 0x6c, 0x12, 0xf0, 0xc8, 0xd3, 0x57, 0x84, - 0xf2, 0xee, 0xf3, 0x25, 0xa5, 0x31, 0xb7, 0x3d, 0xb3, 0x46, 0x52, 0xaf, 0x1e, 0x61, 0xc6, 0x7f, - 0xd7, 0xa0, 0x1e, 0x57, 0x8f, 0x8c, 0x43, 0x22, 0x86, 0x5e, 0xc1, 0x56, 0x32, 0xae, 0xe8, 0x24, - 0x70, 0xd3, 0x43, 0x4b, 0xee, 0xa5, 0x60, 0x6e, 0x6a, 0xc0, 0xa1, 0xf0, 0xcf, 0x86, 0x14, 0xfa, - 0x06, 0x3e, 0x1b, 0x4c, 0x39, 0x59, 0x44, 0x54, 0x5b, 0x7a, 0x20, 0xdd, 0x59, 0xda, 0xaf, 0xe0, - 0xd1, 0x7c, 0x44, 0x1a, 0xf8, 0x53, 0xcd, 0x16, 0x8d, 0xbd, 0x20, 0xb9, 0x8d, 0x74, 0xd0, 0xd3, - 0xc0, 0x9f, 0x4a, 0x05, 0xd1, 0xbf, 0x7f, 0x09, 0xdb, 0xe9, 0xb0, 0x19, 0xf6, 0x8a, 0x5a, 0xf2, - 0x2c, 0xf2, 0x1c, 0xf7, 0x2d, 0xec, 0x2c, 0x1a, 0xce, 0xec, 0xc2, 0x0b, 0x43, 0xe2, 0xda, 0x83, - 0xa9, 0xcd, 0xa6, 0x81, 0x23, 0x7f, 0xc4, 0x05, 0xf3, 0x73, 0x9a, 0x9d, 0xcb, 0x96, 0xc2, 0xed, - 0x4f, 0xad, 0x69, 0xe0, 0xa0, 0x23, 0xf8, 0x99, 0x5e, 0xc8, 0x12, 0xa9, 0x55, 0x29, 0xf5, 0x48, - 0xad, 0xe7, 0x06, 0xa1, 0x3d, 0x88, 0x8f, 0xd8, 0x76, 0x68, 0xe8, 0x11, 0xd7, 0xe6, 0x54, 0xed, - 0x66, 0x4d, 0xb2, 0x3f, 0xd1, 0xde, 0x03, 0xe9, 0xec, 0x53, 0xb9, 0x95, 0x16, 0xa8, 0xe3, 0xcd, - 0x52, 0x8a, 0x92, 0xb2, 0x21, 0x7d, 0x73, 0x84, 0x6f, 0xe1, 0x61, 0x1c, 0x45, 0x5d, 0x3b, 0xe6, - 0x53, 0x56, 0x9a, 0x3b, 0xf6, 0x8e, 0x42, 0xa4, 0xd2, 0xf6, 0x0a, 0xb6, 0x54, 0xbc, 0x45, 0x64, - 0x48, 0x9d, 0xfa, 0x42, 0xea, 0xe2, 0xc8, 0x62, 0xbd, 0xe5, 0xb9, 0x1a, 0x4b, 0x93, 0xc5, 0xa2, - 0x93, 0x1a, 0xbb, 0x4e, 0xac, 0xa4, 0x6a, 0x2c, 0x4b, 0x7b, 0x0d, 0xdb, 0x8b, 0xf2, 0x3c, 0xc4, - 0x9e, 0x4f, 0xdc, 0x46, 0x55, 0x32, 0x3f, 0xbb, 0x96, 0xde, 0x43, 0xe9, 0x46, 0xbf, 0x80, 0xc6, - 0xf5, 0xbc, 0x6a, 0xea, 0xba, 0xa4, 0x7e, 0x9a, 0x49, 0xa7, 0x26, 0xf6, 0xc0, 0x48, 0xa2, 0x4a, - 0x8b, 0x48, 0x8a, 0xbe, 0x13, 0xce, 0xd6, 0x5d, 0x93, 0x12, 0x8f, 0xe3, 0xe8, 0x12, 0xd8, 0xa7, - 0x6a, 0x07, 0xc9, 0x06, 0xba, 0xf0, 0x54, 0xaf, 0xe1, 0x66, 0xa1, 0xba, 0x14, 0x7a, 0xa8, 0xd6, - 0xb2, 0x50, 0xc6, 0xf8, 0xf3, 0x7d, 0xd8, 0x98, 0xdd, 0x2f, 0x88, 0xfa, 0x4a, 0x59, 0x38, 0x52, - 0xe7, 0x07, 0x66, 0xfe, 0xd6, 0x81, 0x59, 0xf8, 0x29, 0x03, 0xf3, 0x15, 0xc0, 0xec, 0x9a, 0xa0, - 0x67, 0xef, 0xb2, 0x91, 0x50, 0x4a, 0xee, 0x08, 0xe8, 0x1b, 0x28, 0x8a, 0x7b, 0x89, 0x24, 0xde, - 0xbf, 0x95, 0xb8, 0x46, 0x02, 0x57, 0xd2, 0xde, 0x66, 0x26, 0xec, 0xde, 0x9d, 0x2e, 0x64, 0xfa, - 0xc0, 0xb2, 0x73, 0xf6, 0x08, 0x8a, 0x8e, 0xee, 0x9f, 0x7a, 0xc4, 0x7e, 0x7d, 0x07, 0xb9, 0xb8, - 0xe5, 0x9a, 0x09, 0x19, 0x99, 0x50, 0x57, 0x7d, 0x7e, 0x10, 0x11, 0x7c, 0xe1, 0xd2, 0xcb, 0x80, - 0x35, 0x8a, 0xb2, 0xcd, 0x3f, 0xbb, 0xad, 0xcd, 0xeb, 0xe1, 0xa3, 0xbb, 0xfc, 0x7e, 0xc2, 0x17, - 0x9f, 0xe0, 0x49, 0xa6, 0x7e, 0xa4, 0x03, 0xf5, 0x51, 0x57, 0x52, 0x9f, 0xe0, 0x7c, 0x76, 0x77, - 0x90, 0xdf, 0x81, 0xce, 0xad, 0xc3, 0xb5, 0x06, 0xe5, 0xde, 0x3b, 0xfb, 0xcc, 0x3c, 0x3d, 0x32, - 0xbb, 0x96, 0x55, 0xcf, 0x21, 0x80, 0xd5, 0xb3, 0xf6, 0xb9, 0x15, 0x8f, 0x57, 0xeb, 0xfc, 0xe0, - 0x40, 0x38, 0x0a, 0xc2, 0x71, 0xd8, 0xee, 0x89, 0xb9, 0xbb, 0x22, 0x1c, 0xed, 0xfd, 0x53, 0x53, - 0xcc, 0xdd, 0xfb, 0xfb, 0xff, 0xc8, 0xc1, 0x8e, 0x43, 0xc7, 0x4b, 0x36, 0x24, 0x13, 0xb7, 0x5f, - 0x8d, 0x0f, 0xaa, 0x3f, 0x0d, 0x09, 0xfb, 0xfd, 0xb1, 0xc6, 0x8f, 0xa8, 0x8f, 0x83, 0x51, 0x93, - 0x46, 0xa3, 0xd6, 0x88, 0x04, 0x12, 0xda, 0x52, 0x2e, 0x1c, 0x7a, 0x6c, 0xc1, 0x1f, 0x3a, 0xaf, - 0x33, 0xa6, 0xff, 0xe5, 0x72, 0x7f, 0xcb, 0x3f, 0x51, 0xff, 0x83, 0x34, 0x0f, 0x7c, 0x3a, 0x71, - 0x9b, 0x96, 0x42, 0xc4, 0x01, 0x9b, 0x3f, 0xbc, 0xfc, 0x67, 0x8c, 0x78, 0x2f, 0x11, 0xef, 0x33, - 0x88, 0xf7, 0x3f, 0xbc, 0x1c, 0xac, 0xca, 0xd8, 0x7b, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x0c, - 0xec, 0x5b, 0x90, 0x4b, 0x12, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/resources.pb.go b/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/resources.pb.go deleted file mode 100644 index a92e9eac..00000000 --- a/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/resources.pb.go +++ /dev/null @@ -1,398 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/streetview/publish/v1/resources.proto - -/* -Package publish is a generated protocol buffer package. - -It is generated from these files: - google/streetview/publish/v1/resources.proto - google/streetview/publish/v1/rpcmessages.proto - google/streetview/publish/v1/streetview_publish.proto - -It has these top-level messages: - UploadRef - PhotoId - Level - Pose - Place - Connection - Photo - CreatePhotoRequest - GetPhotoRequest - BatchGetPhotosRequest - BatchGetPhotosResponse - PhotoResponse - ListPhotosRequest - ListPhotosResponse - UpdatePhotoRequest - BatchUpdatePhotosRequest - BatchUpdatePhotosResponse - DeletePhotoRequest - BatchDeletePhotosRequest - BatchDeletePhotosResponse -*/ -package publish - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" -import google_type "google.golang.org/genproto/googleapis/type/latlng" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Upload reference for media files. -type UploadRef struct { - // Required. An upload reference should be unique for each user. It follows - // the form: - // "https://streetviewpublish.googleapis.com/media/user/<account_id>/photo/<upload_reference>" - UploadUrl string `protobuf:"bytes,1,opt,name=upload_url,json=uploadUrl" json:"upload_url,omitempty"` -} - -func (m *UploadRef) Reset() { *m = UploadRef{} } -func (m *UploadRef) String() string { return proto.CompactTextString(m) } -func (*UploadRef) ProtoMessage() {} -func (*UploadRef) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *UploadRef) GetUploadUrl() string { - if m != nil { - return m.UploadUrl - } - return "" -} - -// Identifier for a photo. -type PhotoId struct { - // Required. A base64 encoded identifier. - Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` -} - -func (m *PhotoId) Reset() { *m = PhotoId{} } -func (m *PhotoId) String() string { return proto.CompactTextString(m) } -func (*PhotoId) ProtoMessage() {} -func (*PhotoId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *PhotoId) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -// Level information containing level number and its corresponding name. -type Level struct { - // Floor number, used for ordering. 0 indicates the ground level, 1 indicates - // the first level above ground level, -1 indicates the first level under - // ground level. Non-integer values are OK. - Number float64 `protobuf:"fixed64,1,opt,name=number" json:"number,omitempty"` - // Required. A name assigned to this Level, restricted to 3 characters. - // Consider how the elevator buttons would be labeled for this level if there - // was an elevator. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *Level) Reset() { *m = Level{} } -func (m *Level) String() string { return proto.CompactTextString(m) } -func (*Level) ProtoMessage() {} -func (*Level) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Level) GetNumber() float64 { - if m != nil { - return m.Number - } - return 0 -} - -func (m *Level) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Raw pose measurement for an entity. -type Pose struct { - // Latitude and longitude pair of the pose, as explained here: - // https://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng - // When creating a photo, if the latitude and longitude pair are not provided - // here, the geolocation from the exif header will be used. - // If the latitude and longitude pair is not provided and cannot be found in - // the exif header, the create photo process will fail. - LatLngPair *google_type.LatLng `protobuf:"bytes,1,opt,name=lat_lng_pair,json=latLngPair" json:"lat_lng_pair,omitempty"` - // Altitude of the pose in meters above ground level (as defined by WGS84). - // NaN indicates an unmeasured quantity. - Altitude float64 `protobuf:"fixed64,2,opt,name=altitude" json:"altitude,omitempty"` - // Compass heading, measured at the center of the photo in degrees clockwise - // from North. Value must be >=0 and <360. - // NaN indicates an unmeasured quantity. - Heading float64 `protobuf:"fixed64,3,opt,name=heading" json:"heading,omitempty"` - // Pitch, measured at the center of the photo in degrees. Value must be >=-90 - // and <= 90. A value of -90 means looking directly down, and a value of 90 - // means looking directly up. - // NaN indicates an unmeasured quantity. - Pitch float64 `protobuf:"fixed64,4,opt,name=pitch" json:"pitch,omitempty"` - // Roll, measured in degrees. Value must be >= 0 and <360. A value of 0 - // means level with the horizon. - // NaN indicates an unmeasured quantity. - Roll float64 `protobuf:"fixed64,5,opt,name=roll" json:"roll,omitempty"` - // Level (the floor in a building) used to configure vertical navigation. - Level *Level `protobuf:"bytes,7,opt,name=level" json:"level,omitempty"` -} - -func (m *Pose) Reset() { *m = Pose{} } -func (m *Pose) String() string { return proto.CompactTextString(m) } -func (*Pose) ProtoMessage() {} -func (*Pose) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Pose) GetLatLngPair() *google_type.LatLng { - if m != nil { - return m.LatLngPair - } - return nil -} - -func (m *Pose) GetAltitude() float64 { - if m != nil { - return m.Altitude - } - return 0 -} - -func (m *Pose) GetHeading() float64 { - if m != nil { - return m.Heading - } - return 0 -} - -func (m *Pose) GetPitch() float64 { - if m != nil { - return m.Pitch - } - return 0 -} - -func (m *Pose) GetRoll() float64 { - if m != nil { - return m.Roll - } - return 0 -} - -func (m *Pose) GetLevel() *Level { - if m != nil { - return m.Level - } - return nil -} - -// Place metadata for an entity. -type Place struct { - // Required. Place identifier, as described in - // https://developers.google.com/places/place-id. - PlaceId string `protobuf:"bytes,1,opt,name=place_id,json=placeId" json:"place_id,omitempty"` -} - -func (m *Place) Reset() { *m = Place{} } -func (m *Place) String() string { return proto.CompactTextString(m) } -func (*Place) ProtoMessage() {} -func (*Place) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Place) GetPlaceId() string { - if m != nil { - return m.PlaceId - } - return "" -} - -// A connection is the link from a source photo to a destination photo. -type Connection struct { - // Required. The destination of the connection from the containing photo to - // another photo. - Target *PhotoId `protobuf:"bytes,1,opt,name=target" json:"target,omitempty"` -} - -func (m *Connection) Reset() { *m = Connection{} } -func (m *Connection) String() string { return proto.CompactTextString(m) } -func (*Connection) ProtoMessage() {} -func (*Connection) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *Connection) GetTarget() *PhotoId { - if m != nil { - return m.Target - } - return nil -} - -// Photo is used to store 360 photos along with photo metadata. -type Photo struct { - // Output only. Identifier for the photo, which is unique among all photos in - // Google. - PhotoId *PhotoId `protobuf:"bytes,1,opt,name=photo_id,json=photoId" json:"photo_id,omitempty"` - // Required (when creating photo). Input only. The resource URL where the - // photo bytes are uploaded to. - UploadReference *UploadRef `protobuf:"bytes,2,opt,name=upload_reference,json=uploadReference" json:"upload_reference,omitempty"` - // Output only. The download URL for the photo bytes. This field is set only - // when the `view` parameter in a `GetPhotoRequest` is set to - // `INCLUDE_DOWNLOAD_URL`. - DownloadUrl string `protobuf:"bytes,3,opt,name=download_url,json=downloadUrl" json:"download_url,omitempty"` - // Output only. The thumbnail URL for showing a preview of the given photo. - ThumbnailUrl string `protobuf:"bytes,9,opt,name=thumbnail_url,json=thumbnailUrl" json:"thumbnail_url,omitempty"` - // Output only. The share link for the photo. - ShareLink string `protobuf:"bytes,11,opt,name=share_link,json=shareLink" json:"share_link,omitempty"` - // Pose of the photo. - Pose *Pose `protobuf:"bytes,4,opt,name=pose" json:"pose,omitempty"` - // Connections to other photos. A connection represents the link from this - // photo to another photo. - Connections []*Connection `protobuf:"bytes,5,rep,name=connections" json:"connections,omitempty"` - // Absolute time when the photo was captured. - // When the photo has no exif timestamp, this is used to set a timestamp in - // the photo metadata. - CaptureTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=capture_time,json=captureTime" json:"capture_time,omitempty"` - // Places where this photo belongs. - Places []*Place `protobuf:"bytes,7,rep,name=places" json:"places,omitempty"` - // Output only. View count of the photo. - ViewCount int64 `protobuf:"varint,10,opt,name=view_count,json=viewCount" json:"view_count,omitempty"` -} - -func (m *Photo) Reset() { *m = Photo{} } -func (m *Photo) String() string { return proto.CompactTextString(m) } -func (*Photo) ProtoMessage() {} -func (*Photo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *Photo) GetPhotoId() *PhotoId { - if m != nil { - return m.PhotoId - } - return nil -} - -func (m *Photo) GetUploadReference() *UploadRef { - if m != nil { - return m.UploadReference - } - return nil -} - -func (m *Photo) GetDownloadUrl() string { - if m != nil { - return m.DownloadUrl - } - return "" -} - -func (m *Photo) GetThumbnailUrl() string { - if m != nil { - return m.ThumbnailUrl - } - return "" -} - -func (m *Photo) GetShareLink() string { - if m != nil { - return m.ShareLink - } - return "" -} - -func (m *Photo) GetPose() *Pose { - if m != nil { - return m.Pose - } - return nil -} - -func (m *Photo) GetConnections() []*Connection { - if m != nil { - return m.Connections - } - return nil -} - -func (m *Photo) GetCaptureTime() *google_protobuf1.Timestamp { - if m != nil { - return m.CaptureTime - } - return nil -} - -func (m *Photo) GetPlaces() []*Place { - if m != nil { - return m.Places - } - return nil -} - -func (m *Photo) GetViewCount() int64 { - if m != nil { - return m.ViewCount - } - return 0 -} - -func init() { - proto.RegisterType((*UploadRef)(nil), "google.streetview.publish.v1.UploadRef") - proto.RegisterType((*PhotoId)(nil), "google.streetview.publish.v1.PhotoId") - proto.RegisterType((*Level)(nil), "google.streetview.publish.v1.Level") - proto.RegisterType((*Pose)(nil), "google.streetview.publish.v1.Pose") - proto.RegisterType((*Place)(nil), "google.streetview.publish.v1.Place") - proto.RegisterType((*Connection)(nil), "google.streetview.publish.v1.Connection") - proto.RegisterType((*Photo)(nil), "google.streetview.publish.v1.Photo") -} - -func init() { proto.RegisterFile("google/streetview/publish/v1/resources.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 651 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xdb, 0x6a, 0xdb, 0x4c, - 0x10, 0xc6, 0xf1, 0x29, 0x1e, 0xf9, 0x3f, 0xb0, 0xff, 0x4f, 0x51, 0x4c, 0x43, 0x53, 0x85, 0x52, - 0x53, 0x8a, 0x44, 0x1c, 0x5a, 0x28, 0x21, 0x50, 0x92, 0xab, 0xb4, 0xbe, 0x30, 0xdb, 0xa6, 0x17, - 0xbd, 0x11, 0x6b, 0x69, 0x22, 0x2f, 0x59, 0xef, 0x2e, 0xab, 0x95, 0x43, 0x9f, 0xa1, 0x8f, 0xd1, - 0x97, 0xea, 0xe3, 0x14, 0xad, 0x56, 0x4e, 0x2f, 0x82, 0xd3, 0x2b, 0xcf, 0x7c, 0xf3, 0x7d, 0xe3, - 0x39, 0xad, 0xe0, 0x75, 0xa1, 0x54, 0x21, 0x30, 0x29, 0xad, 0x41, 0xb4, 0x1b, 0x8e, 0x77, 0x89, - 0xae, 0x96, 0x82, 0x97, 0xab, 0x64, 0x73, 0x92, 0x18, 0x2c, 0x55, 0x65, 0x32, 0x2c, 0x63, 0x6d, - 0x94, 0x55, 0xe4, 0x69, 0xc3, 0x8e, 0xef, 0xd9, 0xb1, 0x67, 0xc7, 0x9b, 0x93, 0x89, 0x8f, 0x26, - 0x4c, 0xf3, 0x84, 0x49, 0xa9, 0x2c, 0xb3, 0x5c, 0x49, 0xaf, 0x9d, 0x3c, 0xf3, 0x51, 0xe7, 0x2d, - 0xab, 0x9b, 0xc4, 0xf2, 0x35, 0x96, 0x96, 0xad, 0xb5, 0x27, 0x84, 0x9e, 0x60, 0xbf, 0x69, 0x4c, - 0x04, 0xb3, 0x42, 0x16, 0x4d, 0x24, 0x7a, 0x05, 0xa3, 0x6b, 0x2d, 0x14, 0xcb, 0x29, 0xde, 0x90, - 0x43, 0x80, 0xca, 0x39, 0x69, 0x65, 0x44, 0xd8, 0x39, 0xea, 0x4c, 0x47, 0x74, 0xd4, 0x20, 0xd7, - 0x46, 0x44, 0x07, 0x30, 0x5c, 0xac, 0x94, 0x55, 0x57, 0x39, 0xf9, 0x1b, 0xf6, 0x78, 0xee, 0x19, - 0x7b, 0x3c, 0x8f, 0x4e, 0xa1, 0x3f, 0xc7, 0x0d, 0x0a, 0xf2, 0x04, 0x06, 0xb2, 0x5a, 0x2f, 0xd1, - 0xb8, 0x60, 0x87, 0x7a, 0x8f, 0x10, 0xe8, 0x49, 0xb6, 0xc6, 0x70, 0xcf, 0x49, 0x9c, 0x1d, 0xfd, - 0xec, 0x40, 0x6f, 0xa1, 0x4a, 0x24, 0x6f, 0x60, 0x2c, 0x98, 0x4d, 0x85, 0x2c, 0x52, 0xcd, 0x78, - 0x23, 0x0d, 0x66, 0xff, 0xc5, 0x7e, 0x24, 0x75, 0xd5, 0xf1, 0x9c, 0xd9, 0xb9, 0x2c, 0x28, 0x08, - 0xf7, 0xbb, 0x60, 0xdc, 0x90, 0x09, 0xec, 0x33, 0x61, 0xb9, 0xad, 0xf2, 0x26, 0x6f, 0x87, 0x6e, - 0x7d, 0x12, 0xc2, 0x70, 0x85, 0x2c, 0xe7, 0xb2, 0x08, 0xbb, 0x2e, 0xd4, 0xba, 0xe4, 0x7f, 0xe8, - 0x6b, 0x6e, 0xb3, 0x55, 0xd8, 0x73, 0x78, 0xe3, 0xd4, 0xf5, 0x19, 0x25, 0x44, 0xd8, 0x77, 0xa0, - 0xb3, 0xc9, 0x3b, 0xe8, 0x8b, 0xba, 0xa9, 0x70, 0xe8, 0xea, 0x39, 0x8e, 0x77, 0xad, 0x28, 0x76, - 0xfd, 0xd3, 0x46, 0x11, 0x45, 0xd0, 0x5f, 0x08, 0x96, 0x21, 0x39, 0x80, 0x7d, 0x5d, 0x1b, 0xe9, - 0x76, 0x5c, 0x43, 0xe7, 0x5f, 0xe5, 0xd1, 0x47, 0x80, 0x4b, 0x25, 0x25, 0x66, 0xf5, 0x2a, 0xc9, - 0x39, 0x0c, 0x2c, 0x33, 0x05, 0x5a, 0xdf, 0xfd, 0x8b, 0xdd, 0xff, 0xe6, 0x17, 0x41, 0xbd, 0x28, - 0xfa, 0xd1, 0x83, 0xbe, 0xc3, 0xc8, 0x7b, 0xd8, 0xd7, 0xb5, 0xd1, 0xfe, 0xe3, 0x1f, 0xa7, 0x1a, - 0x6a, 0xbf, 0x5c, 0x0a, 0xff, 0xfa, 0x33, 0x30, 0x78, 0x83, 0x06, 0x65, 0xd6, 0xcc, 0x37, 0x98, - 0xbd, 0xdc, 0x9d, 0x69, 0x7b, 0x49, 0xf4, 0x9f, 0xaa, 0x35, 0x1b, 0x3d, 0x79, 0x0e, 0xe3, 0x5c, - 0xdd, 0xc9, 0xed, 0x71, 0x75, 0xdd, 0x2c, 0x82, 0x16, 0xbb, 0x36, 0x82, 0x1c, 0xc3, 0x5f, 0x76, - 0x55, 0xad, 0x97, 0x92, 0x71, 0xe1, 0x38, 0x23, 0xc7, 0x19, 0x6f, 0xc1, 0x9a, 0x74, 0x08, 0x50, - 0xae, 0x98, 0xc1, 0x54, 0x70, 0x79, 0x1b, 0x06, 0xcd, 0x89, 0x3a, 0x64, 0xce, 0xe5, 0x2d, 0x79, - 0x0b, 0x3d, 0xad, 0x4a, 0x74, 0xbb, 0x0d, 0x66, 0xd1, 0x23, 0x8d, 0xab, 0x12, 0xa9, 0xe3, 0x93, - 0x0f, 0x10, 0x64, 0xdb, 0x5d, 0x94, 0x61, 0xff, 0xa8, 0x3b, 0x0d, 0x66, 0xd3, 0xdd, 0xf2, 0xfb, - 0xe5, 0xd1, 0xdf, 0xc5, 0xe4, 0x1c, 0xc6, 0x19, 0xd3, 0xb6, 0x32, 0x98, 0xd6, 0xef, 0x30, 0x1c, - 0xb8, 0x5a, 0x26, 0x6d, 0xb2, 0xf6, 0x91, 0xc6, 0x9f, 0xdb, 0x47, 0x4a, 0x03, 0xcf, 0xaf, 0x11, - 0x72, 0x06, 0x03, 0x77, 0x21, 0x65, 0x38, 0x74, 0x55, 0x3c, 0x72, 0x76, 0xee, 0xcc, 0xa8, 0x97, - 0xd4, 0xe3, 0xa9, 0x09, 0x69, 0xa6, 0x2a, 0x69, 0x43, 0x38, 0xea, 0x4c, 0xbb, 0x74, 0x54, 0x23, - 0x97, 0x35, 0x70, 0xf1, 0xbd, 0x03, 0xd3, 0x4c, 0xad, 0xdb, 0x8c, 0x05, 0xaa, 0xb8, 0x2a, 0xb2, - 0x87, 0x33, 0x5f, 0x4c, 0x3e, 0x39, 0xf8, 0x0b, 0xc7, 0xbb, 0x45, 0x83, 0xd2, 0xf6, 0x9b, 0xf5, - 0xf5, 0xb2, 0xcd, 0xa0, 0x04, 0x93, 0x45, 0xac, 0x4c, 0x91, 0x14, 0x28, 0x5d, 0x6b, 0x49, 0x13, - 0x62, 0x9a, 0x97, 0x0f, 0x7f, 0xfa, 0xce, 0xbc, 0xb9, 0x1c, 0x38, 0xfe, 0xe9, 0xaf, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xad, 0x4e, 0x7a, 0x51, 0x29, 0x05, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/rpcmessages.pb.go b/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/rpcmessages.pb.go deleted file mode 100644 index 4a96824f..00000000 --- a/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/rpcmessages.pb.go +++ /dev/null @@ -1,470 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/streetview/publish/v1/rpcmessages.proto - -package publish - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf2 "google.golang.org/genproto/protobuf/field_mask" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Specifies which view of the `Photo` should be included in the response. -type PhotoView int32 - -const ( - // Server reponses do not include the download URL for the photo bytes. - // The default value. - PhotoView_BASIC PhotoView = 0 - // Server responses include the download URL for the photo bytes. - PhotoView_INCLUDE_DOWNLOAD_URL PhotoView = 1 -) - -var PhotoView_name = map[int32]string{ - 0: "BASIC", - 1: "INCLUDE_DOWNLOAD_URL", -} -var PhotoView_value = map[string]int32{ - "BASIC": 0, - "INCLUDE_DOWNLOAD_URL": 1, -} - -func (x PhotoView) String() string { - return proto.EnumName(PhotoView_name, int32(x)) -} -func (PhotoView) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Request to create a photo. -type CreatePhotoRequest struct { - // Required. Photo to create. - Photo *Photo `protobuf:"bytes,1,opt,name=photo" json:"photo,omitempty"` -} - -func (m *CreatePhotoRequest) Reset() { *m = CreatePhotoRequest{} } -func (m *CreatePhotoRequest) String() string { return proto.CompactTextString(m) } -func (*CreatePhotoRequest) ProtoMessage() {} -func (*CreatePhotoRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *CreatePhotoRequest) GetPhoto() *Photo { - if m != nil { - return m.Photo - } - return nil -} - -// Request to get a photo. -// -// By default -// - does not return the download URL for the photo bytes. -// -// Parameters: -// - 'view' controls if the download URL for the photo bytes will be returned. -type GetPhotoRequest struct { - // Required. ID of the photo. - PhotoId string `protobuf:"bytes,1,opt,name=photo_id,json=photoId" json:"photo_id,omitempty"` - // Specifies if a download URL for the photo bytes should be returned in the - // Photo response. - View PhotoView `protobuf:"varint,2,opt,name=view,enum=google.streetview.publish.v1.PhotoView" json:"view,omitempty"` -} - -func (m *GetPhotoRequest) Reset() { *m = GetPhotoRequest{} } -func (m *GetPhotoRequest) String() string { return proto.CompactTextString(m) } -func (*GetPhotoRequest) ProtoMessage() {} -func (*GetPhotoRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *GetPhotoRequest) GetPhotoId() string { - if m != nil { - return m.PhotoId - } - return "" -} - -func (m *GetPhotoRequest) GetView() PhotoView { - if m != nil { - return m.View - } - return PhotoView_BASIC -} - -// Request to get one or more photos. -// By default -// - does not return the download URL for the photo bytes. -// -// Parameters: -// - 'view' controls if the download URL for the photo bytes will be returned. -type BatchGetPhotosRequest struct { - // Required. IDs of the photos. - PhotoIds []string `protobuf:"bytes,1,rep,name=photo_ids,json=photoIds" json:"photo_ids,omitempty"` - // Specifies if a download URL for the photo bytes should be returned in the - // Photo response. - View PhotoView `protobuf:"varint,2,opt,name=view,enum=google.streetview.publish.v1.PhotoView" json:"view,omitempty"` -} - -func (m *BatchGetPhotosRequest) Reset() { *m = BatchGetPhotosRequest{} } -func (m *BatchGetPhotosRequest) String() string { return proto.CompactTextString(m) } -func (*BatchGetPhotosRequest) ProtoMessage() {} -func (*BatchGetPhotosRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *BatchGetPhotosRequest) GetPhotoIds() []string { - if m != nil { - return m.PhotoIds - } - return nil -} - -func (m *BatchGetPhotosRequest) GetView() PhotoView { - if m != nil { - return m.View - } - return PhotoView_BASIC -} - -// Response to batch get of photos. -type BatchGetPhotosResponse struct { - // List of results for each individual photo requested, in the same order as - // the request. - Results []*PhotoResponse `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"` -} - -func (m *BatchGetPhotosResponse) Reset() { *m = BatchGetPhotosResponse{} } -func (m *BatchGetPhotosResponse) String() string { return proto.CompactTextString(m) } -func (*BatchGetPhotosResponse) ProtoMessage() {} -func (*BatchGetPhotosResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *BatchGetPhotosResponse) GetResults() []*PhotoResponse { - if m != nil { - return m.Results - } - return nil -} - -// Response payload for a single `Photo` in batch operations including -// `BatchGetPhotosRequest` and `BatchUpdatePhotosRequest`. -type PhotoResponse struct { - // The status for the operation to get or update a single photo in the batch - // request. - Status *google_rpc.Status `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` - // The photo resource, if the request was successful. - Photo *Photo `protobuf:"bytes,2,opt,name=photo" json:"photo,omitempty"` -} - -func (m *PhotoResponse) Reset() { *m = PhotoResponse{} } -func (m *PhotoResponse) String() string { return proto.CompactTextString(m) } -func (*PhotoResponse) ProtoMessage() {} -func (*PhotoResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *PhotoResponse) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func (m *PhotoResponse) GetPhoto() *Photo { - if m != nil { - return m.Photo - } - return nil -} - -// Request to list all photos that belong to the user sending the request. -// -// By default -// - does not return the download URL for the photo bytes. -// -// Parameters: -// - 'view' controls if the download URL for the photo bytes will be returned. -// - 'page_size' determines the maximum number of photos to return. -// - 'page_token' is the next page token value returned from a previous List -// request, if any. -type ListPhotosRequest struct { - // Specifies if a download URL for the photos bytes should be returned in the - // Photos response. - View PhotoView `protobuf:"varint,1,opt,name=view,enum=google.streetview.publish.v1.PhotoView" json:"view,omitempty"` - // The maximum number of photos to return. - // `page_size` must be non-negative. If `page_size` is zero or is not - // provided, the default page size of 100 will be used. - // The number of photos returned in the response may be less than `page_size` - // if the number of photos that belong to the user is less than `page_size`. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"` - // The next_page_token value returned from a previous List request, if any. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"` - // The filter expression. - // Example: `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw` - Filter string `protobuf:"bytes,4,opt,name=filter" json:"filter,omitempty"` -} - -func (m *ListPhotosRequest) Reset() { *m = ListPhotosRequest{} } -func (m *ListPhotosRequest) String() string { return proto.CompactTextString(m) } -func (*ListPhotosRequest) ProtoMessage() {} -func (*ListPhotosRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *ListPhotosRequest) GetView() PhotoView { - if m != nil { - return m.View - } - return PhotoView_BASIC -} - -func (m *ListPhotosRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize - } - return 0 -} - -func (m *ListPhotosRequest) GetPageToken() string { - if m != nil { - return m.PageToken - } - return "" -} - -func (m *ListPhotosRequest) GetFilter() string { - if m != nil { - return m.Filter - } - return "" -} - -// Response to list all photos that belong to a user. -type ListPhotosResponse struct { - // List of photos. There will be a maximum number of items returned based on - // the page_size field in the request. - Photos []*Photo `protobuf:"bytes,1,rep,name=photos" json:"photos,omitempty"` - // Token to retrieve the next page of results, or empty if there are no - // more results in the list. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"` -} - -func (m *ListPhotosResponse) Reset() { *m = ListPhotosResponse{} } -func (m *ListPhotosResponse) String() string { return proto.CompactTextString(m) } -func (*ListPhotosResponse) ProtoMessage() {} -func (*ListPhotosResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *ListPhotosResponse) GetPhotos() []*Photo { - if m != nil { - return m.Photos - } - return nil -} - -func (m *ListPhotosResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken - } - return "" -} - -// Request to update the metadata of a photo. -// Updating the pixels of a photo is not supported. -type UpdatePhotoRequest struct { - // Required. Photo object containing the new metadata. Only the fields - // specified in `update_mask` are used. If `update_mask` is not present, the - // update applies to all fields. - // **Note:** To update `pose.altitude`, `pose.latlngpair` has to be filled as - // well. Otherwise, the request will fail. - Photo *Photo `protobuf:"bytes,1,opt,name=photo" json:"photo,omitempty"` - // Mask that identifies fields on the photo metadata to update. - // If not present, the old Photo metadata will be entirely replaced with the - // new Photo metadata in this request. The update fails if invalid fields are - // specified. Multiple fields can be specified in a comma-delimited list. - // - // The following fields are valid: - // - // * `pose.heading` - // * `pose.latlngpair` - // * `pose.pitch` - // * `pose.roll` - // * `pose.level` - // * `pose.altitude` - // * `connections` - // * `places` - // - // - // **Note:** Repeated fields in `update_mask` mean the entire set of repeated - // values will be replaced with the new contents. For example, if - // `UpdatePhotoRequest.photo.update_mask` contains `connections` and - // `UpdatePhotoRequest.photo.connections` is empty, all connections will be - // removed. - UpdateMask *google_protobuf2.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"` -} - -func (m *UpdatePhotoRequest) Reset() { *m = UpdatePhotoRequest{} } -func (m *UpdatePhotoRequest) String() string { return proto.CompactTextString(m) } -func (*UpdatePhotoRequest) ProtoMessage() {} -func (*UpdatePhotoRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *UpdatePhotoRequest) GetPhoto() *Photo { - if m != nil { - return m.Photo - } - return nil -} - -func (m *UpdatePhotoRequest) GetUpdateMask() *google_protobuf2.FieldMask { - if m != nil { - return m.UpdateMask - } - return nil -} - -// Request to update the metadata of photos. -// Updating the pixels of photos is not supported. -type BatchUpdatePhotosRequest struct { - // Required. List of update photo requests. - UpdatePhotoRequests []*UpdatePhotoRequest `protobuf:"bytes,1,rep,name=update_photo_requests,json=updatePhotoRequests" json:"update_photo_requests,omitempty"` -} - -func (m *BatchUpdatePhotosRequest) Reset() { *m = BatchUpdatePhotosRequest{} } -func (m *BatchUpdatePhotosRequest) String() string { return proto.CompactTextString(m) } -func (*BatchUpdatePhotosRequest) ProtoMessage() {} -func (*BatchUpdatePhotosRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *BatchUpdatePhotosRequest) GetUpdatePhotoRequests() []*UpdatePhotoRequest { - if m != nil { - return m.UpdatePhotoRequests - } - return nil -} - -// Response to batch update of metadata of one or more photos. -type BatchUpdatePhotosResponse struct { - // List of results for each individual photo updated, in the same order as - // the request. - Results []*PhotoResponse `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"` -} - -func (m *BatchUpdatePhotosResponse) Reset() { *m = BatchUpdatePhotosResponse{} } -func (m *BatchUpdatePhotosResponse) String() string { return proto.CompactTextString(m) } -func (*BatchUpdatePhotosResponse) ProtoMessage() {} -func (*BatchUpdatePhotosResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *BatchUpdatePhotosResponse) GetResults() []*PhotoResponse { - if m != nil { - return m.Results - } - return nil -} - -// Request to delete a photo. -type DeletePhotoRequest struct { - // Required. ID of the photo. - PhotoId string `protobuf:"bytes,1,opt,name=photo_id,json=photoId" json:"photo_id,omitempty"` -} - -func (m *DeletePhotoRequest) Reset() { *m = DeletePhotoRequest{} } -func (m *DeletePhotoRequest) String() string { return proto.CompactTextString(m) } -func (*DeletePhotoRequest) ProtoMessage() {} -func (*DeletePhotoRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *DeletePhotoRequest) GetPhotoId() string { - if m != nil { - return m.PhotoId - } - return "" -} - -// Request to delete multiple photos. -type BatchDeletePhotosRequest struct { - // Required. List of delete photo requests. - PhotoIds []string `protobuf:"bytes,1,rep,name=photo_ids,json=photoIds" json:"photo_ids,omitempty"` -} - -func (m *BatchDeletePhotosRequest) Reset() { *m = BatchDeletePhotosRequest{} } -func (m *BatchDeletePhotosRequest) String() string { return proto.CompactTextString(m) } -func (*BatchDeletePhotosRequest) ProtoMessage() {} -func (*BatchDeletePhotosRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } - -func (m *BatchDeletePhotosRequest) GetPhotoIds() []string { - if m != nil { - return m.PhotoIds - } - return nil -} - -// Response to batch delete of one or more photos. -type BatchDeletePhotosResponse struct { - // The status for the operation to delete a single photo in the batch request. - Status []*google_rpc.Status `protobuf:"bytes,1,rep,name=status" json:"status,omitempty"` -} - -func (m *BatchDeletePhotosResponse) Reset() { *m = BatchDeletePhotosResponse{} } -func (m *BatchDeletePhotosResponse) String() string { return proto.CompactTextString(m) } -func (*BatchDeletePhotosResponse) ProtoMessage() {} -func (*BatchDeletePhotosResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } - -func (m *BatchDeletePhotosResponse) GetStatus() []*google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func init() { - proto.RegisterType((*CreatePhotoRequest)(nil), "google.streetview.publish.v1.CreatePhotoRequest") - proto.RegisterType((*GetPhotoRequest)(nil), "google.streetview.publish.v1.GetPhotoRequest") - proto.RegisterType((*BatchGetPhotosRequest)(nil), "google.streetview.publish.v1.BatchGetPhotosRequest") - proto.RegisterType((*BatchGetPhotosResponse)(nil), "google.streetview.publish.v1.BatchGetPhotosResponse") - proto.RegisterType((*PhotoResponse)(nil), "google.streetview.publish.v1.PhotoResponse") - proto.RegisterType((*ListPhotosRequest)(nil), "google.streetview.publish.v1.ListPhotosRequest") - proto.RegisterType((*ListPhotosResponse)(nil), "google.streetview.publish.v1.ListPhotosResponse") - proto.RegisterType((*UpdatePhotoRequest)(nil), "google.streetview.publish.v1.UpdatePhotoRequest") - proto.RegisterType((*BatchUpdatePhotosRequest)(nil), "google.streetview.publish.v1.BatchUpdatePhotosRequest") - proto.RegisterType((*BatchUpdatePhotosResponse)(nil), "google.streetview.publish.v1.BatchUpdatePhotosResponse") - proto.RegisterType((*DeletePhotoRequest)(nil), "google.streetview.publish.v1.DeletePhotoRequest") - proto.RegisterType((*BatchDeletePhotosRequest)(nil), "google.streetview.publish.v1.BatchDeletePhotosRequest") - proto.RegisterType((*BatchDeletePhotosResponse)(nil), "google.streetview.publish.v1.BatchDeletePhotosResponse") - proto.RegisterEnum("google.streetview.publish.v1.PhotoView", PhotoView_name, PhotoView_value) -} - -func init() { proto.RegisterFile("google/streetview/publish/v1/rpcmessages.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 639 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcb, 0x6e, 0xd3, 0x40, - 0x14, 0xc5, 0x7d, 0xa4, 0xcd, 0xad, 0x4a, 0xcb, 0x40, 0x8b, 0x1b, 0x8a, 0x14, 0x19, 0x09, 0xa2, - 0x82, 0xec, 0xb6, 0x2c, 0x10, 0xca, 0xaa, 0x49, 0x4a, 0x55, 0x29, 0x7d, 0xc8, 0xa1, 0x20, 0xb1, - 0xb1, 0x1c, 0xe7, 0xc6, 0xb1, 0xe2, 0x64, 0x5c, 0xcf, 0x38, 0x85, 0xae, 0xf8, 0x00, 0xf8, 0x0b, - 0x3e, 0x14, 0x79, 0x3c, 0xd3, 0x26, 0x69, 0x88, 0x02, 0x74, 0x67, 0xdf, 0xc7, 0xb9, 0x67, 0xce, - 0x9d, 0x63, 0x83, 0xe9, 0x53, 0xea, 0x87, 0x68, 0x31, 0x1e, 0x23, 0xf2, 0x41, 0x80, 0x57, 0x56, - 0x94, 0x34, 0xc3, 0x80, 0x75, 0xac, 0xc1, 0x9e, 0x15, 0x47, 0x5e, 0x0f, 0x19, 0x73, 0x7d, 0x64, - 0x66, 0x14, 0x53, 0x4e, 0xc9, 0x76, 0x56, 0x6f, 0xde, 0xd6, 0x9b, 0xb2, 0xde, 0x1c, 0xec, 0x15, - 0x8a, 0x12, 0x4d, 0xd4, 0x36, 0x93, 0xb6, 0xd5, 0x0e, 0x30, 0x6c, 0x39, 0x3d, 0x97, 0x75, 0xb3, - 0xfe, 0xc2, 0x53, 0x59, 0x11, 0x47, 0x9e, 0xc5, 0xb8, 0xcb, 0x13, 0x09, 0x5c, 0x78, 0x33, 0x9d, - 0x08, 0x32, 0x9a, 0xc4, 0x9e, 0xa2, 0x61, 0x9c, 0x01, 0xa9, 0xc6, 0xe8, 0x72, 0x3c, 0xef, 0x50, - 0x4e, 0x6d, 0xbc, 0x4c, 0x90, 0x71, 0xf2, 0x1e, 0x16, 0xa3, 0xf4, 0x5d, 0xd7, 0x8a, 0x5a, 0x69, - 0x65, 0xff, 0x85, 0x39, 0x8d, 0xac, 0x99, 0xb5, 0x66, 0x1d, 0x46, 0x00, 0x6b, 0x47, 0xc8, 0x47, - 0xd0, 0xb6, 0x60, 0x59, 0xe4, 0x9c, 0xa0, 0x25, 0x00, 0xf3, 0xf6, 0x92, 0x78, 0x3f, 0x6e, 0x91, - 0x32, 0x2c, 0xa4, 0x68, 0xfa, 0x5c, 0x51, 0x2b, 0x3d, 0xdc, 0x7f, 0x35, 0xc3, 0x9c, 0x4f, 0x01, - 0x5e, 0xd9, 0xa2, 0xc9, 0xb8, 0x84, 0x8d, 0x8a, 0xcb, 0xbd, 0x8e, 0x9a, 0xc7, 0xd4, 0xc0, 0x67, - 0x90, 0x57, 0x03, 0x99, 0xae, 0x15, 0xe7, 0x4b, 0x79, 0x7b, 0x59, 0x4e, 0x64, 0xff, 0x37, 0xd2, - 0x81, 0xcd, 0xf1, 0x91, 0x2c, 0xa2, 0x7d, 0x86, 0xe4, 0x10, 0x96, 0x62, 0x64, 0x49, 0xc8, 0xb3, - 0x89, 0x2b, 0xfb, 0xaf, 0x67, 0x11, 0x4d, 0x76, 0xdb, 0xaa, 0xd7, 0x18, 0xc0, 0xea, 0x48, 0x86, - 0xec, 0x40, 0x2e, 0x5b, 0xaf, 0xdc, 0x05, 0x51, 0xb0, 0x71, 0xe4, 0x99, 0x0d, 0x91, 0xb1, 0x65, - 0xc5, 0xed, 0xda, 0xe6, 0xfe, 0x7a, 0x6d, 0xbf, 0x34, 0x78, 0x54, 0x0f, 0xd8, 0x98, 0x90, 0x4a, - 0x2b, 0xed, 0x1f, 0xb4, 0x12, 0x5b, 0x70, 0x7d, 0x74, 0x58, 0x70, 0x8d, 0x82, 0xd1, 0xa2, 0xbd, - 0x9c, 0x06, 0x1a, 0xc1, 0x35, 0x92, 0xe7, 0x00, 0x22, 0xc9, 0x69, 0x17, 0xfb, 0xfa, 0xbc, 0xb8, - 0x15, 0xa2, 0xfc, 0x63, 0x1a, 0x20, 0x9b, 0x90, 0x6b, 0x07, 0x21, 0xc7, 0x58, 0x5f, 0x10, 0x29, - 0xf9, 0x66, 0x7c, 0x03, 0x32, 0xcc, 0x52, 0x6a, 0x54, 0x86, 0x9c, 0x38, 0x85, 0x92, 0x7e, 0xa6, - 0x83, 0xcb, 0x16, 0xf2, 0x12, 0xd6, 0xfa, 0xf8, 0x95, 0x3b, 0x43, 0x74, 0xe6, 0xc4, 0xcc, 0xd5, - 0x34, 0x7c, 0xae, 0x28, 0x19, 0x3f, 0x34, 0x20, 0x17, 0x51, 0xeb, 0xfe, 0xac, 0x42, 0xca, 0xb0, - 0x92, 0x08, 0x40, 0xe1, 0x6b, 0xb9, 0xb4, 0x82, 0x02, 0x50, 0xd6, 0x37, 0x3f, 0xa4, 0xd6, 0x3f, - 0x71, 0x59, 0xd7, 0x86, 0xac, 0x3c, 0x7d, 0x36, 0xbe, 0x6b, 0xa0, 0x8b, 0xab, 0x38, 0xc4, 0xe9, - 0x66, 0x6f, 0x2d, 0xd8, 0x90, 0xc8, 0x99, 0x0f, 0xe2, 0x2c, 0xae, 0xf4, 0xd9, 0x9d, 0x4e, 0xf2, - 0xee, 0x29, 0xed, 0xc7, 0xc9, 0x9d, 0x18, 0x33, 0x9a, 0xb0, 0x35, 0x81, 0xc1, 0xfd, 0xfa, 0xc1, - 0x02, 0x52, 0xc3, 0x10, 0xc7, 0x44, 0xff, 0xf3, 0x17, 0xc5, 0x78, 0x27, 0x65, 0x19, 0xea, 0x9a, - 0xe9, 0xbb, 0x60, 0x1c, 0xc9, 0xd3, 0x8c, 0x36, 0x4e, 0x70, 0xe1, 0xfc, 0x74, 0x17, 0xee, 0xec, - 0x42, 0xfe, 0xc6, 0x0a, 0x24, 0x0f, 0x8b, 0x95, 0x83, 0xc6, 0x71, 0x75, 0xfd, 0x01, 0xd1, 0xe1, - 0xc9, 0xf1, 0x69, 0xb5, 0x7e, 0x51, 0x3b, 0x74, 0x6a, 0x67, 0x9f, 0x4f, 0xeb, 0x67, 0x07, 0x35, - 0xe7, 0xc2, 0xae, 0xaf, 0x6b, 0x95, 0x9f, 0x1a, 0x94, 0x3c, 0xda, 0x53, 0x98, 0x3e, 0x52, 0x33, - 0xf1, 0xbd, 0xc9, 0x42, 0x55, 0xb6, 0x1b, 0x22, 0x9c, 0xa2, 0x9f, 0x67, 0x51, 0x3b, 0xf2, 0x4e, - 0xe4, 0xcf, 0xe5, 0x4b, 0x55, 0x61, 0xd0, 0xd0, 0xed, 0xfb, 0x26, 0x8d, 0x7d, 0xcb, 0xc7, 0xbe, - 0xb8, 0x4b, 0x56, 0x96, 0x72, 0xa3, 0x80, 0x4d, 0xfe, 0x39, 0x94, 0xe5, 0x63, 0x33, 0x27, 0xea, - 0xdf, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x5c, 0x7c, 0xa0, 0x45, 0xd4, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/streetview_publish.pb.go b/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/streetview_publish.pb.go deleted file mode 100644 index 63849b68..00000000 --- a/vendor/google.golang.org/genproto/googleapis/streetview/publish/v1/streetview_publish.pb.go +++ /dev/null @@ -1,524 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/streetview/publish/v1/streetview_publish.proto - -package publish - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf4 "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for StreetViewPublishService service - -type StreetViewPublishServiceClient interface { - // Creates an upload session to start uploading photo data. The upload URL of - // the returned `UploadRef` is used to upload the data for the photo. - // - // After the upload is complete, the `UploadRef` is used with - // `StreetViewPublishService:CreatePhoto()` to create the `Photo` object - // entry. - StartUpload(ctx context.Context, in *google_protobuf4.Empty, opts ...grpc.CallOption) (*UploadRef, error) - // After the client finishes uploading the photo with the returned - // `UploadRef`, `photo.create` publishes the uploaded photo to Street View on - // Google Maps. - // - // This method returns the following error codes: - // - // * `INVALID_ARGUMENT` if the request is malformed. - // * `NOT_FOUND` if the upload reference does not exist. - CreatePhoto(ctx context.Context, in *CreatePhotoRequest, opts ...grpc.CallOption) (*Photo, error) - // Gets the metadata of the specified `Photo`. - // - // This method returns the following error codes: - // - // * `PERMISSION_DENIED` if the requesting user did not create the requested - // photo. - // * `NOT_FOUND` if the requested photo does not exist. - GetPhoto(ctx context.Context, in *GetPhotoRequest, opts ...grpc.CallOption) (*Photo, error) - // Gets the metadata of the specified `Photo` batch. - // - // Note that if `photos.batchGet` fails, either critical fields are - // missing or there was an authentication error. - // Even if `photos.batchGet` succeeds, there may have been failures - // for single photos in the batch. These failures will be specified in - // `BatchGetPhotosResponse.results.status`. - // See `photo.get` for specific failures that will occur per photo. - BatchGetPhotos(ctx context.Context, in *BatchGetPhotosRequest, opts ...grpc.CallOption) (*BatchGetPhotosResponse, error) - // Lists all the photos that belong to the user. - ListPhotos(ctx context.Context, in *ListPhotosRequest, opts ...grpc.CallOption) (*ListPhotosResponse, error) - // Updates the metadata of a photo, such as pose, place association, etc. - // Changing the pixels of a photo is not supported. - // - // This method returns the following error codes: - // - // * `PERMISSION_DENIED` if the requesting user did not create the requested - // photo. - // * `INVALID_ARGUMENT` if the request is malformed. - // * `NOT_FOUND` if the photo ID does not exist. - UpdatePhoto(ctx context.Context, in *UpdatePhotoRequest, opts ...grpc.CallOption) (*Photo, error) - // Updates the metadata of photos, such as pose, place association, etc. - // Changing the pixels of a photo is not supported. - // - // Note that if `photos.batchUpdate` fails, either critical fields - // are missing or there was an authentication error. - // Even if `photos.batchUpdate` succeeds, there may have been - // failures for single photos in the batch. These failures will be specified - // in `BatchUpdatePhotosResponse.results.status`. - // See `UpdatePhoto` for specific failures that will occur per photo. - BatchUpdatePhotos(ctx context.Context, in *BatchUpdatePhotosRequest, opts ...grpc.CallOption) (*BatchUpdatePhotosResponse, error) - // Deletes a photo and its metadata. - // - // This method returns the following error codes: - // - // * `PERMISSION_DENIED` if the requesting user did not create the requested - // photo. - // * `NOT_FOUND` if the photo ID does not exist. - DeletePhoto(ctx context.Context, in *DeletePhotoRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) - // Deletes a list of photos and their metadata. - // - // Note that if `photos.batchDelete` fails, either critical fields - // are missing or there was an authentication error. - // Even if `photos.batchDelete` succeeds, there may have been - // failures for single photos in the batch. These failures will be specified - // in `BatchDeletePhotosResponse.status`. - // See `photo.update` for specific failures that will occur per photo. - BatchDeletePhotos(ctx context.Context, in *BatchDeletePhotosRequest, opts ...grpc.CallOption) (*BatchDeletePhotosResponse, error) -} - -type streetViewPublishServiceClient struct { - cc *grpc.ClientConn -} - -func NewStreetViewPublishServiceClient(cc *grpc.ClientConn) StreetViewPublishServiceClient { - return &streetViewPublishServiceClient{cc} -} - -func (c *streetViewPublishServiceClient) StartUpload(ctx context.Context, in *google_protobuf4.Empty, opts ...grpc.CallOption) (*UploadRef, error) { - out := new(UploadRef) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/StartUpload", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *streetViewPublishServiceClient) CreatePhoto(ctx context.Context, in *CreatePhotoRequest, opts ...grpc.CallOption) (*Photo, error) { - out := new(Photo) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/CreatePhoto", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *streetViewPublishServiceClient) GetPhoto(ctx context.Context, in *GetPhotoRequest, opts ...grpc.CallOption) (*Photo, error) { - out := new(Photo) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/GetPhoto", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *streetViewPublishServiceClient) BatchGetPhotos(ctx context.Context, in *BatchGetPhotosRequest, opts ...grpc.CallOption) (*BatchGetPhotosResponse, error) { - out := new(BatchGetPhotosResponse) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/BatchGetPhotos", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *streetViewPublishServiceClient) ListPhotos(ctx context.Context, in *ListPhotosRequest, opts ...grpc.CallOption) (*ListPhotosResponse, error) { - out := new(ListPhotosResponse) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/ListPhotos", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *streetViewPublishServiceClient) UpdatePhoto(ctx context.Context, in *UpdatePhotoRequest, opts ...grpc.CallOption) (*Photo, error) { - out := new(Photo) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/UpdatePhoto", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *streetViewPublishServiceClient) BatchUpdatePhotos(ctx context.Context, in *BatchUpdatePhotosRequest, opts ...grpc.CallOption) (*BatchUpdatePhotosResponse, error) { - out := new(BatchUpdatePhotosResponse) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/BatchUpdatePhotos", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *streetViewPublishServiceClient) DeletePhoto(ctx context.Context, in *DeletePhotoRequest, opts ...grpc.CallOption) (*google_protobuf4.Empty, error) { - out := new(google_protobuf4.Empty) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/DeletePhoto", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *streetViewPublishServiceClient) BatchDeletePhotos(ctx context.Context, in *BatchDeletePhotosRequest, opts ...grpc.CallOption) (*BatchDeletePhotosResponse, error) { - out := new(BatchDeletePhotosResponse) - err := grpc.Invoke(ctx, "/google.streetview.publish.v1.StreetViewPublishService/BatchDeletePhotos", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for StreetViewPublishService service - -type StreetViewPublishServiceServer interface { - // Creates an upload session to start uploading photo data. The upload URL of - // the returned `UploadRef` is used to upload the data for the photo. - // - // After the upload is complete, the `UploadRef` is used with - // `StreetViewPublishService:CreatePhoto()` to create the `Photo` object - // entry. - StartUpload(context.Context, *google_protobuf4.Empty) (*UploadRef, error) - // After the client finishes uploading the photo with the returned - // `UploadRef`, `photo.create` publishes the uploaded photo to Street View on - // Google Maps. - // - // This method returns the following error codes: - // - // * `INVALID_ARGUMENT` if the request is malformed. - // * `NOT_FOUND` if the upload reference does not exist. - CreatePhoto(context.Context, *CreatePhotoRequest) (*Photo, error) - // Gets the metadata of the specified `Photo`. - // - // This method returns the following error codes: - // - // * `PERMISSION_DENIED` if the requesting user did not create the requested - // photo. - // * `NOT_FOUND` if the requested photo does not exist. - GetPhoto(context.Context, *GetPhotoRequest) (*Photo, error) - // Gets the metadata of the specified `Photo` batch. - // - // Note that if `photos.batchGet` fails, either critical fields are - // missing or there was an authentication error. - // Even if `photos.batchGet` succeeds, there may have been failures - // for single photos in the batch. These failures will be specified in - // `BatchGetPhotosResponse.results.status`. - // See `photo.get` for specific failures that will occur per photo. - BatchGetPhotos(context.Context, *BatchGetPhotosRequest) (*BatchGetPhotosResponse, error) - // Lists all the photos that belong to the user. - ListPhotos(context.Context, *ListPhotosRequest) (*ListPhotosResponse, error) - // Updates the metadata of a photo, such as pose, place association, etc. - // Changing the pixels of a photo is not supported. - // - // This method returns the following error codes: - // - // * `PERMISSION_DENIED` if the requesting user did not create the requested - // photo. - // * `INVALID_ARGUMENT` if the request is malformed. - // * `NOT_FOUND` if the photo ID does not exist. - UpdatePhoto(context.Context, *UpdatePhotoRequest) (*Photo, error) - // Updates the metadata of photos, such as pose, place association, etc. - // Changing the pixels of a photo is not supported. - // - // Note that if `photos.batchUpdate` fails, either critical fields - // are missing or there was an authentication error. - // Even if `photos.batchUpdate` succeeds, there may have been - // failures for single photos in the batch. These failures will be specified - // in `BatchUpdatePhotosResponse.results.status`. - // See `UpdatePhoto` for specific failures that will occur per photo. - BatchUpdatePhotos(context.Context, *BatchUpdatePhotosRequest) (*BatchUpdatePhotosResponse, error) - // Deletes a photo and its metadata. - // - // This method returns the following error codes: - // - // * `PERMISSION_DENIED` if the requesting user did not create the requested - // photo. - // * `NOT_FOUND` if the photo ID does not exist. - DeletePhoto(context.Context, *DeletePhotoRequest) (*google_protobuf4.Empty, error) - // Deletes a list of photos and their metadata. - // - // Note that if `photos.batchDelete` fails, either critical fields - // are missing or there was an authentication error. - // Even if `photos.batchDelete` succeeds, there may have been - // failures for single photos in the batch. These failures will be specified - // in `BatchDeletePhotosResponse.status`. - // See `photo.update` for specific failures that will occur per photo. - BatchDeletePhotos(context.Context, *BatchDeletePhotosRequest) (*BatchDeletePhotosResponse, error) -} - -func RegisterStreetViewPublishServiceServer(s *grpc.Server, srv StreetViewPublishServiceServer) { - s.RegisterService(&_StreetViewPublishService_serviceDesc, srv) -} - -func _StreetViewPublishService_StartUpload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(google_protobuf4.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).StartUpload(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/StartUpload", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).StartUpload(ctx, req.(*google_protobuf4.Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _StreetViewPublishService_CreatePhoto_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreatePhotoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).CreatePhoto(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/CreatePhoto", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).CreatePhoto(ctx, req.(*CreatePhotoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StreetViewPublishService_GetPhoto_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPhotoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).GetPhoto(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/GetPhoto", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).GetPhoto(ctx, req.(*GetPhotoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StreetViewPublishService_BatchGetPhotos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchGetPhotosRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).BatchGetPhotos(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/BatchGetPhotos", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).BatchGetPhotos(ctx, req.(*BatchGetPhotosRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StreetViewPublishService_ListPhotos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListPhotosRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).ListPhotos(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/ListPhotos", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).ListPhotos(ctx, req.(*ListPhotosRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StreetViewPublishService_UpdatePhoto_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdatePhotoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).UpdatePhoto(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/UpdatePhoto", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).UpdatePhoto(ctx, req.(*UpdatePhotoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StreetViewPublishService_BatchUpdatePhotos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchUpdatePhotosRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).BatchUpdatePhotos(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/BatchUpdatePhotos", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).BatchUpdatePhotos(ctx, req.(*BatchUpdatePhotosRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StreetViewPublishService_DeletePhoto_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeletePhotoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).DeletePhoto(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/DeletePhoto", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).DeletePhoto(ctx, req.(*DeletePhotoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StreetViewPublishService_BatchDeletePhotos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BatchDeletePhotosRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreetViewPublishServiceServer).BatchDeletePhotos(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/google.streetview.publish.v1.StreetViewPublishService/BatchDeletePhotos", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreetViewPublishServiceServer).BatchDeletePhotos(ctx, req.(*BatchDeletePhotosRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _StreetViewPublishService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.streetview.publish.v1.StreetViewPublishService", - HandlerType: (*StreetViewPublishServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "StartUpload", - Handler: _StreetViewPublishService_StartUpload_Handler, - }, - { - MethodName: "CreatePhoto", - Handler: _StreetViewPublishService_CreatePhoto_Handler, - }, - { - MethodName: "GetPhoto", - Handler: _StreetViewPublishService_GetPhoto_Handler, - }, - { - MethodName: "BatchGetPhotos", - Handler: _StreetViewPublishService_BatchGetPhotos_Handler, - }, - { - MethodName: "ListPhotos", - Handler: _StreetViewPublishService_ListPhotos_Handler, - }, - { - MethodName: "UpdatePhoto", - Handler: _StreetViewPublishService_UpdatePhoto_Handler, - }, - { - MethodName: "BatchUpdatePhotos", - Handler: _StreetViewPublishService_BatchUpdatePhotos_Handler, - }, - { - MethodName: "DeletePhoto", - Handler: _StreetViewPublishService_DeletePhoto_Handler, - }, - { - MethodName: "BatchDeletePhotos", - Handler: _StreetViewPublishService_BatchDeletePhotos_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "google/streetview/publish/v1/streetview_publish.proto", -} - -func init() { - proto.RegisterFile("google/streetview/publish/v1/streetview_publish.proto", fileDescriptor2) -} - -var fileDescriptor2 = []byte{ - // 533 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0x15, 0x24, 0x10, 0xb8, 0x08, 0x69, 0x86, 0x55, 0x53, 0x3a, 0x24, 0x08, 0x12, 0xa0, - 0x6a, 0xd8, 0x1b, 0xe3, 0x8f, 0x54, 0x6e, 0x1d, 0x88, 0x0b, 0x87, 0x69, 0xd5, 0x38, 0x70, 0x99, - 0xdc, 0xf4, 0x5d, 0x6a, 0x29, 0x8d, 0x4d, 0xec, 0x74, 0x42, 0x30, 0x0e, 0xe3, 0xc8, 0x0d, 0x2e, - 0x7c, 0x03, 0x3e, 0x10, 0x5f, 0x81, 0x0f, 0x82, 0xea, 0xd8, 0x4d, 0x36, 0x8a, 0x49, 0x4e, 0x69, - 0xf3, 0x3e, 0xcf, 0xfb, 0xfc, 0xfa, 0xbe, 0xae, 0xd1, 0xd3, 0x44, 0x88, 0x24, 0x05, 0xaa, 0x74, - 0x0e, 0xa0, 0xe7, 0x1c, 0x4e, 0xa8, 0x2c, 0xc6, 0x29, 0x57, 0x53, 0x3a, 0xdf, 0xa9, 0xbd, 0x3d, - 0xb2, 0x6f, 0x89, 0xcc, 0x85, 0x16, 0x78, 0xb3, 0xb4, 0x91, 0x4a, 0x40, 0x9c, 0x60, 0xbe, 0x13, - 0xda, 0x2a, 0x65, 0x92, 0x53, 0x96, 0x65, 0x42, 0x33, 0xcd, 0x45, 0xa6, 0x4a, 0x6f, 0xd8, 0xb3, - 0x55, 0xf3, 0x6d, 0x5c, 0x1c, 0x53, 0x98, 0x49, 0xfd, 0xc1, 0x16, 0xb7, 0xbc, 0x3c, 0x39, 0x28, - 0x51, 0xe4, 0x31, 0xb8, 0x56, 0xc4, 0xaf, 0x96, 0xf1, 0x0c, 0x94, 0x62, 0x89, 0xd3, 0x3f, 0xfe, - 0x8a, 0xd0, 0xc6, 0xc8, 0x68, 0xdf, 0x72, 0x38, 0xd9, 0x2f, 0xa5, 0x23, 0xc8, 0xe7, 0x3c, 0x06, - 0x2c, 0x51, 0x67, 0xa4, 0x59, 0xae, 0x0f, 0x65, 0x2a, 0xd8, 0x04, 0x77, 0x6d, 0x73, 0xe2, 0x38, - 0xc9, 0xab, 0x05, 0x67, 0xf8, 0x80, 0xf8, 0x7e, 0x3b, 0x29, 0xdd, 0x07, 0x70, 0x1c, 0xdd, 0x39, - 0xfb, 0xf5, 0xfb, 0xfb, 0xa5, 0x30, 0x5a, 0x5f, 0xb0, 0xc8, 0xa9, 0xd0, 0x62, 0xa0, 0xaa, 0xfe, - 0x83, 0xa0, 0x8f, 0x3f, 0xa3, 0xce, 0x5e, 0x0e, 0x4c, 0xc3, 0xfe, 0xa2, 0x8a, 0xb7, 0xfd, 0x9d, - 0x6b, 0xd2, 0x03, 0x78, 0x5f, 0x80, 0xd2, 0xe1, 0x3d, 0xbf, 0xc3, 0x68, 0xa3, 0x0d, 0xc3, 0x81, - 0xa3, 0x6b, 0x15, 0xc7, 0x65, 0xf3, 0xc0, 0x9f, 0xd0, 0xd5, 0xd7, 0xa0, 0xcb, 0xf0, 0x47, 0xfe, - 0x56, 0x4e, 0xd7, 0x2a, 0x79, 0xd3, 0x24, 0x77, 0xf1, 0xad, 0x65, 0x32, 0xfd, 0x68, 0x1e, 0x47, - 0x7c, 0x72, 0x8a, 0x7f, 0x04, 0xe8, 0xc6, 0x90, 0xe9, 0x78, 0xea, 0x7a, 0x2b, 0xbc, 0xeb, 0xef, - 0x7a, 0x5e, 0xed, 0x50, 0x9e, 0xb4, 0x33, 0x29, 0x29, 0x32, 0x05, 0x51, 0xcf, 0xb0, 0xad, 0xe3, - 0x9b, 0x4b, 0x36, 0x35, 0x18, 0x5b, 0x29, 0xfe, 0x12, 0x20, 0xf4, 0x86, 0x2b, 0x87, 0x45, 0xfd, - 0x09, 0x95, 0xd2, 0x21, 0x6d, 0x37, 0x37, 0x58, 0x1c, 0x6c, 0x70, 0xae, 0x63, 0x54, 0xe1, 0xe0, - 0x6f, 0x01, 0xea, 0x1c, 0xca, 0x49, 0xd3, 0xf3, 0x51, 0x93, 0xb6, 0xda, 0xd2, 0x96, 0x89, 0xbe, - 0x1f, 0xde, 0xbe, 0xb8, 0x25, 0xe2, 0x76, 0x45, 0xf8, 0xe4, 0xd4, 0x9d, 0x99, 0x9f, 0x01, 0x5a, - 0x33, 0x23, 0xad, 0xc5, 0x29, 0xfc, 0xac, 0xc1, 0x0e, 0xea, 0x06, 0x07, 0xf8, 0xbc, 0xb5, 0xcf, - 0xce, 0xeb, 0xae, 0x81, 0xee, 0x45, 0xdd, 0x8b, 0xeb, 0x2b, 0xd5, 0x8b, 0x7f, 0x57, 0x81, 0x3a, - 0x2f, 0x21, 0x85, 0x86, 0xd3, 0xab, 0x49, 0x1d, 0xdc, 0x3f, 0x6e, 0x00, 0x77, 0xac, 0xfb, 0xab, - 0x8f, 0xf5, 0x72, 0x40, 0xb5, 0x8e, 0xcd, 0x06, 0x54, 0x37, 0xb4, 0x19, 0xd0, 0x79, 0xdf, 0xff, - 0x06, 0x54, 0xaa, 0x07, 0x41, 0x7f, 0x78, 0x16, 0xa0, 0x87, 0xb1, 0x98, 0xb9, 0x84, 0x04, 0x04, - 0x29, 0x92, 0x78, 0x75, 0xd2, 0x70, 0xed, 0xaf, 0x7b, 0xf3, 0xdd, 0x9e, 0x33, 0x8a, 0x94, 0x65, - 0x09, 0x11, 0x79, 0x42, 0x13, 0xc8, 0xcc, 0xb0, 0x68, 0x59, 0x62, 0x92, 0xab, 0xd5, 0x97, 0xf3, - 0x0b, 0xfb, 0x71, 0x7c, 0xc5, 0xe8, 0x77, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x9d, 0xfe, - 0x1c, 0x89, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/tracing/v1/trace.pb.go b/vendor/google.golang.org/genproto/googleapis/tracing/v1/trace.pb.go deleted file mode 100644 index b2549366..00000000 --- a/vendor/google.golang.org/genproto/googleapis/tracing/v1/trace.pb.go +++ /dev/null @@ -1,888 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/tracing/trace.proto - -/* -Package tracing is a generated protocol buffer package. - -It is generated from these files: - google/tracing/trace.proto - -It has these top-level messages: - TraceId - Module - StackTrace - LabelValue - Span - Trace -*/ -package tracing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" -import google_rpc "google.golang.org/genproto/googleapis/rpc/status" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The type of the network event. SENT or RECV event. -type Span_TimeEvent_NetworkEvent_Type int32 - -const ( - Span_TimeEvent_NetworkEvent_UNSPECIFIED Span_TimeEvent_NetworkEvent_Type = 0 - Span_TimeEvent_NetworkEvent_SENT Span_TimeEvent_NetworkEvent_Type = 1 - Span_TimeEvent_NetworkEvent_RECV Span_TimeEvent_NetworkEvent_Type = 2 -) - -var Span_TimeEvent_NetworkEvent_Type_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "SENT", - 2: "RECV", -} -var Span_TimeEvent_NetworkEvent_Type_value = map[string]int32{ - "UNSPECIFIED": 0, - "SENT": 1, - "RECV": 2, -} - -func (x Span_TimeEvent_NetworkEvent_Type) String() string { - return proto.EnumName(Span_TimeEvent_NetworkEvent_Type_name, int32(x)) -} -func (Span_TimeEvent_NetworkEvent_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{4, 0, 1, 0} -} - -// The type of the link. -type Span_Link_Type int32 - -const ( - Span_Link_UNSPECIFIED Span_Link_Type = 0 - Span_Link_CHILD Span_Link_Type = 1 - Span_Link_PARENT Span_Link_Type = 2 -) - -var Span_Link_Type_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "CHILD", - 2: "PARENT", -} -var Span_Link_Type_value = map[string]int32{ - "UNSPECIFIED": 0, - "CHILD": 1, - "PARENT": 2, -} - -func (x Span_Link_Type) String() string { - return proto.EnumName(Span_Link_Type_name, int32(x)) -} -func (Span_Link_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 1, 0} } - -// A TraceId uniquely identifies a Trace. It is conceptually a 128-bit value, -// represented as a string, containing the hex-encoded value. -type TraceId struct { - // Trace ID specified as a hex-encoded string. *Must* be 32 bytes long. - HexEncoded string `protobuf:"bytes,1,opt,name=hex_encoded,json=hexEncoded" json:"hex_encoded,omitempty"` -} - -func (m *TraceId) Reset() { *m = TraceId{} } -func (m *TraceId) String() string { return proto.CompactTextString(m) } -func (*TraceId) ProtoMessage() {} -func (*TraceId) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *TraceId) GetHexEncoded() string { - if m != nil { - return m.HexEncoded - } - return "" -} - -type Module struct { - // Binary module. - // E.g. main binary, kernel modules, and dynamic libraries - // such as libc.so, sharedlib.so - Module string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"` - // Build_id is a unique identifier for the module, - // probably a hash of its contents - BuildId string `protobuf:"bytes,2,opt,name=build_id,json=buildId" json:"build_id,omitempty"` -} - -func (m *Module) Reset() { *m = Module{} } -func (m *Module) String() string { return proto.CompactTextString(m) } -func (*Module) ProtoMessage() {} -func (*Module) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Module) GetModule() string { - if m != nil { - return m.Module - } - return "" -} - -func (m *Module) GetBuildId() string { - if m != nil { - return m.BuildId - } - return "" -} - -type StackTrace struct { - // Stack frames of this stack trace. - StackFrame []*StackTrace_StackFrame `protobuf:"bytes,1,rep,name=stack_frame,json=stackFrame" json:"stack_frame,omitempty"` - // User can choose to use his own hash function to hash large labels to save - // network bandwidth and storage. - // Typical usage is to pass both initially to inform the storage of the - // mapping. And in subsequent calls, pass in stack_trace_hash_id only. - // User shall verify the hash value is successfully stored. - StackTraceHashId uint64 `protobuf:"varint,2,opt,name=stack_trace_hash_id,json=stackTraceHashId" json:"stack_trace_hash_id,omitempty"` -} - -func (m *StackTrace) Reset() { *m = StackTrace{} } -func (m *StackTrace) String() string { return proto.CompactTextString(m) } -func (*StackTrace) ProtoMessage() {} -func (*StackTrace) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *StackTrace) GetStackFrame() []*StackTrace_StackFrame { - if m != nil { - return m.StackFrame - } - return nil -} - -func (m *StackTrace) GetStackTraceHashId() uint64 { - if m != nil { - return m.StackTraceHashId - } - return 0 -} - -// Presents a single stack frame in a stack trace. -type StackTrace_StackFrame struct { - // Fully qualified names which uniquely identify function/method/etc. - FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName" json:"function_name,omitempty"` - // Used when function name is ‘mangled’. Not guaranteed to be fully - // qualified but usually it is. - OrigFunctionName string `protobuf:"bytes,2,opt,name=orig_function_name,json=origFunctionName" json:"orig_function_name,omitempty"` - // File name of the frame. - FileName string `protobuf:"bytes,3,opt,name=file_name,json=fileName" json:"file_name,omitempty"` - // Line number of the frame. - LineNumber int64 `protobuf:"varint,4,opt,name=line_number,json=lineNumber" json:"line_number,omitempty"` - // Column number is important in JavaScript(anonymous functions), - // Might not be available in some languages. - ColumnNumber int64 `protobuf:"varint,5,opt,name=column_number,json=columnNumber" json:"column_number,omitempty"` - // Binary module the code is loaded from. - LoadModule *Module `protobuf:"bytes,6,opt,name=load_module,json=loadModule" json:"load_module,omitempty"` - // source_version is deployment specific. It might be - // better to be stored in deployment metadata. - // However, in distributed tracing, it’s hard to keep track of - // source/binary versions at one place for all spans. - SourceVersion string `protobuf:"bytes,7,opt,name=source_version,json=sourceVersion" json:"source_version,omitempty"` -} - -func (m *StackTrace_StackFrame) Reset() { *m = StackTrace_StackFrame{} } -func (m *StackTrace_StackFrame) String() string { return proto.CompactTextString(m) } -func (*StackTrace_StackFrame) ProtoMessage() {} -func (*StackTrace_StackFrame) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -func (m *StackTrace_StackFrame) GetFunctionName() string { - if m != nil { - return m.FunctionName - } - return "" -} - -func (m *StackTrace_StackFrame) GetOrigFunctionName() string { - if m != nil { - return m.OrigFunctionName - } - return "" -} - -func (m *StackTrace_StackFrame) GetFileName() string { - if m != nil { - return m.FileName - } - return "" -} - -func (m *StackTrace_StackFrame) GetLineNumber() int64 { - if m != nil { - return m.LineNumber - } - return 0 -} - -func (m *StackTrace_StackFrame) GetColumnNumber() int64 { - if m != nil { - return m.ColumnNumber - } - return 0 -} - -func (m *StackTrace_StackFrame) GetLoadModule() *Module { - if m != nil { - return m.LoadModule - } - return nil -} - -func (m *StackTrace_StackFrame) GetSourceVersion() string { - if m != nil { - return m.SourceVersion - } - return "" -} - -// Allowed label values. -type LabelValue struct { - // The value of the label. - // - // Types that are valid to be assigned to Value: - // *LabelValue_StringValue - // *LabelValue_IntValue - // *LabelValue_BoolValue - Value isLabelValue_Value `protobuf_oneof:"value"` -} - -func (m *LabelValue) Reset() { *m = LabelValue{} } -func (m *LabelValue) String() string { return proto.CompactTextString(m) } -func (*LabelValue) ProtoMessage() {} -func (*LabelValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -type isLabelValue_Value interface { - isLabelValue_Value() -} - -type LabelValue_StringValue struct { - StringValue string `protobuf:"bytes,1,opt,name=string_value,json=stringValue,oneof"` -} -type LabelValue_IntValue struct { - IntValue int64 `protobuf:"varint,2,opt,name=int_value,json=intValue,oneof"` -} -type LabelValue_BoolValue struct { - BoolValue bool `protobuf:"varint,3,opt,name=bool_value,json=boolValue,oneof"` -} - -func (*LabelValue_StringValue) isLabelValue_Value() {} -func (*LabelValue_IntValue) isLabelValue_Value() {} -func (*LabelValue_BoolValue) isLabelValue_Value() {} - -func (m *LabelValue) GetValue() isLabelValue_Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *LabelValue) GetStringValue() string { - if x, ok := m.GetValue().(*LabelValue_StringValue); ok { - return x.StringValue - } - return "" -} - -func (m *LabelValue) GetIntValue() int64 { - if x, ok := m.GetValue().(*LabelValue_IntValue); ok { - return x.IntValue - } - return 0 -} - -func (m *LabelValue) GetBoolValue() bool { - if x, ok := m.GetValue().(*LabelValue_BoolValue); ok { - return x.BoolValue - } - return false -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*LabelValue) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _LabelValue_OneofMarshaler, _LabelValue_OneofUnmarshaler, _LabelValue_OneofSizer, []interface{}{ - (*LabelValue_StringValue)(nil), - (*LabelValue_IntValue)(nil), - (*LabelValue_BoolValue)(nil), - } -} - -func _LabelValue_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*LabelValue) - // value - switch x := m.Value.(type) { - case *LabelValue_StringValue: - b.EncodeVarint(1<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case *LabelValue_IntValue: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.IntValue)) - case *LabelValue_BoolValue: - t := uint64(0) - if x.BoolValue { - t = 1 - } - b.EncodeVarint(3<<3 | proto.WireVarint) - b.EncodeVarint(t) - case nil: - default: - return fmt.Errorf("LabelValue.Value has unexpected type %T", x) - } - return nil -} - -func _LabelValue_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*LabelValue) - switch tag { - case 1: // value.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Value = &LabelValue_StringValue{x} - return true, err - case 2: // value.int_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &LabelValue_IntValue{int64(x)} - return true, err - case 3: // value.bool_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &LabelValue_BoolValue{x != 0} - return true, err - default: - return false, nil - } -} - -func _LabelValue_OneofSizer(msg proto.Message) (n int) { - m := msg.(*LabelValue) - // value - switch x := m.Value.(type) { - case *LabelValue_StringValue: - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case *LabelValue_IntValue: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.IntValue)) - case *LabelValue_BoolValue: - n += proto.SizeVarint(3<<3 | proto.WireVarint) - n += 1 - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// A span represents a single operation within a trace. Spans can be nested -// and form a trace tree. Often, a trace contains a root span that describes the -// end-to-end latency and, optionally, one or more subspans for -// its sub-operations. Spans do not need to be contiguous. There may be gaps -// between spans in a trace. -type Span struct { - // Identifier for the span. Must be a 64-bit integer other than 0 and - // unique within a trace. - Id uint64 `protobuf:"fixed64,1,opt,name=id" json:"id,omitempty"` - // Name of the span. The span name is sanitized and displayed in the - // Stackdriver Trace tool in the {% dynamic print site_values.console_name %}. - // The name may be a method name or some other per-call site name. - // For the same executable and the same call point, a best practice is - // to use a consistent name, which makes it easier to correlate - // cross-trace spans. - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` - // ID of parent span. 0 or missing if this is a root span. - ParentId uint64 `protobuf:"fixed64,3,opt,name=parent_id,json=parentId" json:"parent_id,omitempty"` - // Local machine clock in nanoseconds from the UNIX epoch, - // at which span execution started. - // On the server side these are the times when the server application - // handler starts running. - LocalStartTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=local_start_time,json=localStartTime" json:"local_start_time,omitempty"` - // Local machine clock in nanoseconds from the UNIX epoch, - // at which span execution ended. - // On the server side these are the times when the server application - // handler finishes running. - LocalEndTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=local_end_time,json=localEndTime" json:"local_end_time,omitempty"` - // Properties of a span. Labels at the span level. - // E.g. - // "/instance_id": "my-instance" - // "/zone": "us-central1-a" - // "/grpc/peer_address": "ip:port" (dns, etc.) - // "/grpc/deadline": "Duration" - // "/http/user_agent" - // "/http/request_bytes": 300 - // "/http/response_bytes": 1200 - // "/http/url": google.com/apis - // "/pid" - // "abc.com/mylabel": "my label value" - Labels map[string]*LabelValue `protobuf:"bytes,6,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Stack trace captured at the start of the span. This is optional. - StackTrace *StackTrace `protobuf:"bytes,7,opt,name=stack_trace,json=stackTrace" json:"stack_trace,omitempty"` - // A collection of time-stamped events. - TimeEvents []*Span_TimeEvent `protobuf:"bytes,8,rep,name=time_events,json=timeEvents" json:"time_events,omitempty"` - // A collection of links. - Links []*Span_Link `protobuf:"bytes,9,rep,name=links" json:"links,omitempty"` - // The final status of the Span. This is optional. - Status *google_rpc.Status `protobuf:"bytes,10,opt,name=status" json:"status,omitempty"` - // True if this Span has a remote parent (is an RPC server Span). - HasRemoteParent bool `protobuf:"varint,11,opt,name=has_remote_parent,json=hasRemoteParent" json:"has_remote_parent,omitempty"` -} - -func (m *Span) Reset() { *m = Span{} } -func (m *Span) String() string { return proto.CompactTextString(m) } -func (*Span) ProtoMessage() {} -func (*Span) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Span) GetId() uint64 { - if m != nil { - return m.Id - } - return 0 -} - -func (m *Span) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Span) GetParentId() uint64 { - if m != nil { - return m.ParentId - } - return 0 -} - -func (m *Span) GetLocalStartTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LocalStartTime - } - return nil -} - -func (m *Span) GetLocalEndTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LocalEndTime - } - return nil -} - -func (m *Span) GetLabels() map[string]*LabelValue { - if m != nil { - return m.Labels - } - return nil -} - -func (m *Span) GetStackTrace() *StackTrace { - if m != nil { - return m.StackTrace - } - return nil -} - -func (m *Span) GetTimeEvents() []*Span_TimeEvent { - if m != nil { - return m.TimeEvents - } - return nil -} - -func (m *Span) GetLinks() []*Span_Link { - if m != nil { - return m.Links - } - return nil -} - -func (m *Span) GetStatus() *google_rpc.Status { - if m != nil { - return m.Status - } - return nil -} - -func (m *Span) GetHasRemoteParent() bool { - if m != nil { - return m.HasRemoteParent - } - return false -} - -// A time-stamped annotation in the Span. -type Span_TimeEvent struct { - // The local machine absolute timestamp when this event happened. - LocalTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=local_time,json=localTime" json:"local_time,omitempty"` - // Types that are valid to be assigned to Value: - // *Span_TimeEvent_Annotation_ - // *Span_TimeEvent_NetworkEvent_ - Value isSpan_TimeEvent_Value `protobuf_oneof:"value"` -} - -func (m *Span_TimeEvent) Reset() { *m = Span_TimeEvent{} } -func (m *Span_TimeEvent) String() string { return proto.CompactTextString(m) } -func (*Span_TimeEvent) ProtoMessage() {} -func (*Span_TimeEvent) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} } - -type isSpan_TimeEvent_Value interface { - isSpan_TimeEvent_Value() -} - -type Span_TimeEvent_Annotation_ struct { - Annotation *Span_TimeEvent_Annotation `protobuf:"bytes,2,opt,name=annotation,oneof"` -} -type Span_TimeEvent_NetworkEvent_ struct { - NetworkEvent *Span_TimeEvent_NetworkEvent `protobuf:"bytes,3,opt,name=network_event,json=networkEvent,oneof"` -} - -func (*Span_TimeEvent_Annotation_) isSpan_TimeEvent_Value() {} -func (*Span_TimeEvent_NetworkEvent_) isSpan_TimeEvent_Value() {} - -func (m *Span_TimeEvent) GetValue() isSpan_TimeEvent_Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *Span_TimeEvent) GetLocalTime() *google_protobuf1.Timestamp { - if m != nil { - return m.LocalTime - } - return nil -} - -func (m *Span_TimeEvent) GetAnnotation() *Span_TimeEvent_Annotation { - if x, ok := m.GetValue().(*Span_TimeEvent_Annotation_); ok { - return x.Annotation - } - return nil -} - -func (m *Span_TimeEvent) GetNetworkEvent() *Span_TimeEvent_NetworkEvent { - if x, ok := m.GetValue().(*Span_TimeEvent_NetworkEvent_); ok { - return x.NetworkEvent - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*Span_TimeEvent) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _Span_TimeEvent_OneofMarshaler, _Span_TimeEvent_OneofUnmarshaler, _Span_TimeEvent_OneofSizer, []interface{}{ - (*Span_TimeEvent_Annotation_)(nil), - (*Span_TimeEvent_NetworkEvent_)(nil), - } -} - -func _Span_TimeEvent_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*Span_TimeEvent) - // value - switch x := m.Value.(type) { - case *Span_TimeEvent_Annotation_: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Annotation); err != nil { - return err - } - case *Span_TimeEvent_NetworkEvent_: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.NetworkEvent); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("Span_TimeEvent.Value has unexpected type %T", x) - } - return nil -} - -func _Span_TimeEvent_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*Span_TimeEvent) - switch tag { - case 2: // value.annotation - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Span_TimeEvent_Annotation) - err := b.DecodeMessage(msg) - m.Value = &Span_TimeEvent_Annotation_{msg} - return true, err - case 3: // value.network_event - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Span_TimeEvent_NetworkEvent) - err := b.DecodeMessage(msg) - m.Value = &Span_TimeEvent_NetworkEvent_{msg} - return true, err - default: - return false, nil - } -} - -func _Span_TimeEvent_OneofSizer(msg proto.Message) (n int) { - m := msg.(*Span_TimeEvent) - // value - switch x := m.Value.(type) { - case *Span_TimeEvent_Annotation_: - s := proto.Size(x.Annotation) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *Span_TimeEvent_NetworkEvent_: - s := proto.Size(x.NetworkEvent) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Text annotation with a set of labels. -type Span_TimeEvent_Annotation struct { - // A user-supplied message describing the event. - Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` - // A set of labels on the annotation. - Labels map[string]*LabelValue `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` -} - -func (m *Span_TimeEvent_Annotation) Reset() { *m = Span_TimeEvent_Annotation{} } -func (m *Span_TimeEvent_Annotation) String() string { return proto.CompactTextString(m) } -func (*Span_TimeEvent_Annotation) ProtoMessage() {} -func (*Span_TimeEvent_Annotation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0, 0} } - -func (m *Span_TimeEvent_Annotation) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *Span_TimeEvent_Annotation) GetLabels() map[string]*LabelValue { - if m != nil { - return m.Labels - } - return nil -} - -// An event describing an RPC message sent/received on the network. -type Span_TimeEvent_NetworkEvent struct { - // If available, this is the kernel time: - // For sent messages, this is the time at which the first bit was sent. - // For received messages, this is the time at which the last bit was - // received. - KernelTime *google_protobuf1.Timestamp `protobuf:"bytes,1,opt,name=kernel_time,json=kernelTime" json:"kernel_time,omitempty"` - Type Span_TimeEvent_NetworkEvent_Type `protobuf:"varint,2,opt,name=type,enum=google.tracing.v1.Span_TimeEvent_NetworkEvent_Type" json:"type,omitempty"` - // Every message has an identifier, that must be different from all the - // network messages in this span. - // This is very important when the request/response are streamed. - MessageId uint64 `protobuf:"varint,3,opt,name=message_id,json=messageId" json:"message_id,omitempty"` - // Number of bytes send/receive. - MessageSize uint64 `protobuf:"varint,4,opt,name=message_size,json=messageSize" json:"message_size,omitempty"` -} - -func (m *Span_TimeEvent_NetworkEvent) Reset() { *m = Span_TimeEvent_NetworkEvent{} } -func (m *Span_TimeEvent_NetworkEvent) String() string { return proto.CompactTextString(m) } -func (*Span_TimeEvent_NetworkEvent) ProtoMessage() {} -func (*Span_TimeEvent_NetworkEvent) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{4, 0, 1} -} - -func (m *Span_TimeEvent_NetworkEvent) GetKernelTime() *google_protobuf1.Timestamp { - if m != nil { - return m.KernelTime - } - return nil -} - -func (m *Span_TimeEvent_NetworkEvent) GetType() Span_TimeEvent_NetworkEvent_Type { - if m != nil { - return m.Type - } - return Span_TimeEvent_NetworkEvent_UNSPECIFIED -} - -func (m *Span_TimeEvent_NetworkEvent) GetMessageId() uint64 { - if m != nil { - return m.MessageId - } - return 0 -} - -func (m *Span_TimeEvent_NetworkEvent) GetMessageSize() uint64 { - if m != nil { - return m.MessageSize - } - return 0 -} - -// Link one span with another which may be in a different Trace. Used (for -// example) in batching operations, where a single batch handler processes -// multiple requests from different traces. -type Span_Link struct { - // The trace and span identifier of the linked span. - TraceId *TraceId `protobuf:"bytes,1,opt,name=trace_id,json=traceId" json:"trace_id,omitempty"` - SpanId uint64 `protobuf:"fixed64,2,opt,name=span_id,json=spanId" json:"span_id,omitempty"` - Type Span_Link_Type `protobuf:"varint,3,opt,name=type,enum=google.tracing.v1.Span_Link_Type" json:"type,omitempty"` -} - -func (m *Span_Link) Reset() { *m = Span_Link{} } -func (m *Span_Link) String() string { return proto.CompactTextString(m) } -func (*Span_Link) ProtoMessage() {} -func (*Span_Link) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 1} } - -func (m *Span_Link) GetTraceId() *TraceId { - if m != nil { - return m.TraceId - } - return nil -} - -func (m *Span_Link) GetSpanId() uint64 { - if m != nil { - return m.SpanId - } - return 0 -} - -func (m *Span_Link) GetType() Span_Link_Type { - if m != nil { - return m.Type - } - return Span_Link_UNSPECIFIED -} - -// A trace describes how long it takes for an application to perform some -// operations. It consists of a tree of spans, each of which contains details -// about an operation with time information and operation details. -type Trace struct { - // Globally unique identifier for the trace. Common to all the spans. - TraceId *TraceId `protobuf:"bytes,1,opt,name=trace_id,json=traceId" json:"trace_id,omitempty"` - // Collection of spans in the trace. The root span has parent_id == 0. - Spans []*Span `protobuf:"bytes,2,rep,name=spans" json:"spans,omitempty"` -} - -func (m *Trace) Reset() { *m = Trace{} } -func (m *Trace) String() string { return proto.CompactTextString(m) } -func (*Trace) ProtoMessage() {} -func (*Trace) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *Trace) GetTraceId() *TraceId { - if m != nil { - return m.TraceId - } - return nil -} - -func (m *Trace) GetSpans() []*Span { - if m != nil { - return m.Spans - } - return nil -} - -func init() { - proto.RegisterType((*TraceId)(nil), "google.tracing.v1.TraceId") - proto.RegisterType((*Module)(nil), "google.tracing.v1.Module") - proto.RegisterType((*StackTrace)(nil), "google.tracing.v1.StackTrace") - proto.RegisterType((*StackTrace_StackFrame)(nil), "google.tracing.v1.StackTrace.StackFrame") - proto.RegisterType((*LabelValue)(nil), "google.tracing.v1.LabelValue") - proto.RegisterType((*Span)(nil), "google.tracing.v1.Span") - proto.RegisterType((*Span_TimeEvent)(nil), "google.tracing.v1.Span.TimeEvent") - proto.RegisterType((*Span_TimeEvent_Annotation)(nil), "google.tracing.v1.Span.TimeEvent.Annotation") - proto.RegisterType((*Span_TimeEvent_NetworkEvent)(nil), "google.tracing.v1.Span.TimeEvent.NetworkEvent") - proto.RegisterType((*Span_Link)(nil), "google.tracing.v1.Span.Link") - proto.RegisterType((*Trace)(nil), "google.tracing.v1.Trace") - proto.RegisterEnum("google.tracing.v1.Span_TimeEvent_NetworkEvent_Type", Span_TimeEvent_NetworkEvent_Type_name, Span_TimeEvent_NetworkEvent_Type_value) - proto.RegisterEnum("google.tracing.v1.Span_Link_Type", Span_Link_Type_name, Span_Link_Type_value) -} - -func init() { proto.RegisterFile("google/tracing/trace.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1102 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0x1a, 0x47, - 0x14, 0x66, 0xf9, 0x59, 0xe0, 0x2c, 0x76, 0xc8, 0x54, 0xad, 0x09, 0x8d, 0x65, 0x9b, 0xa8, 0x92, - 0xe5, 0x26, 0x8b, 0x82, 0x15, 0xc9, 0x8d, 0xa5, 0xaa, 0xb1, 0x8d, 0x0b, 0x52, 0x8a, 0xd0, 0xe0, - 0x58, 0x55, 0x6f, 0x56, 0xc3, 0xee, 0x18, 0x56, 0x2c, 0xb3, 0xab, 0x9d, 0x81, 0xc6, 0xbe, 0xed, - 0x1b, 0xf4, 0x1d, 0x7a, 0xdb, 0x37, 0xe8, 0x83, 0xb4, 0x4f, 0x53, 0xcd, 0xcf, 0x62, 0xaa, 0xd8, - 0x71, 0x53, 0xa9, 0x57, 0xcc, 0x7c, 0xe7, 0x3b, 0x67, 0xce, 0x7c, 0xe7, 0x9c, 0x59, 0xa0, 0x39, - 0x89, 0xe3, 0x49, 0x44, 0xdb, 0x22, 0x25, 0x7e, 0xc8, 0x26, 0xea, 0x97, 0xba, 0x49, 0x1a, 0x8b, - 0x18, 0x3d, 0xd6, 0x36, 0xd7, 0xd8, 0xdc, 0xe5, 0xcb, 0xe6, 0x53, 0x43, 0x27, 0x49, 0xd8, 0x26, - 0x8c, 0xc5, 0x82, 0x88, 0x30, 0x66, 0x5c, 0x3b, 0x34, 0x77, 0x8c, 0x55, 0xed, 0xc6, 0x8b, 0xab, - 0xb6, 0x08, 0xe7, 0x94, 0x0b, 0x32, 0x4f, 0x0c, 0x61, 0xcb, 0x10, 0xd2, 0xc4, 0x6f, 0x73, 0x41, - 0xc4, 0xc2, 0x78, 0xb6, 0x0e, 0xa0, 0x7c, 0x21, 0x4f, 0xee, 0x07, 0x68, 0x07, 0x9c, 0x29, 0x7d, - 0xef, 0x51, 0xe6, 0xc7, 0x01, 0x0d, 0x1a, 0xd6, 0xae, 0xb5, 0x5f, 0xc5, 0x30, 0xa5, 0xef, 0xbb, - 0x1a, 0x69, 0x1d, 0x83, 0xfd, 0x43, 0x1c, 0x2c, 0x22, 0x8a, 0xbe, 0x00, 0x7b, 0xae, 0x56, 0x86, - 0x65, 0x76, 0xe8, 0x09, 0x54, 0xc6, 0x8b, 0x30, 0x0a, 0xbc, 0x30, 0x68, 0xe4, 0x95, 0xa5, 0xac, - 0xf6, 0xfd, 0xa0, 0xf5, 0x7b, 0x01, 0x60, 0x24, 0x88, 0x3f, 0x53, 0xc7, 0xa1, 0x3e, 0x38, 0x5c, - 0xee, 0xbc, 0xab, 0x94, 0xcc, 0x65, 0x98, 0xc2, 0xbe, 0xd3, 0xd9, 0x77, 0x3f, 0xb8, 0xb8, 0x7b, - 0xeb, 0xa3, 0x97, 0xe7, 0x92, 0x8f, 0x81, 0xaf, 0xd6, 0xe8, 0x05, 0x7c, 0xa6, 0x43, 0x29, 0x09, - 0xbd, 0x29, 0xe1, 0xd3, 0xec, 0xfc, 0x22, 0xae, 0xf3, 0x95, 0x7f, 0x8f, 0xf0, 0x69, 0x3f, 0x68, - 0xfe, 0x96, 0x37, 0x89, 0x68, 0xef, 0x67, 0xb0, 0x71, 0xb5, 0x60, 0xbe, 0x54, 0xd3, 0x63, 0x3a, - 0x15, 0x99, 0x77, 0x2d, 0x03, 0x07, 0x92, 0xf4, 0x1c, 0x50, 0x9c, 0x86, 0x13, 0xef, 0x9f, 0x4c, - 0x7d, 0xc3, 0xba, 0xb4, 0x9c, 0xaf, 0xb3, 0xbf, 0x84, 0xea, 0x55, 0x18, 0x51, 0x4d, 0x2a, 0x28, - 0x52, 0x45, 0x02, 0xca, 0xb8, 0x03, 0x4e, 0x14, 0x32, 0xea, 0xb1, 0xc5, 0x7c, 0x4c, 0xd3, 0x46, - 0x71, 0xd7, 0xda, 0x2f, 0x60, 0x90, 0xd0, 0x40, 0x21, 0x32, 0x21, 0x3f, 0x8e, 0x16, 0x73, 0x96, - 0x51, 0x4a, 0x8a, 0x52, 0xd3, 0xa0, 0x21, 0xbd, 0x06, 0x27, 0x8a, 0x49, 0xe0, 0x99, 0x2a, 0xd8, - 0xbb, 0xd6, 0xbe, 0xd3, 0x79, 0x72, 0x87, 0x7c, 0xba, 0x60, 0x18, 0x24, 0xdb, 0x14, 0xef, 0x2b, - 0xd8, 0xe4, 0xf1, 0x22, 0xf5, 0xa9, 0xb7, 0xa4, 0x29, 0x0f, 0x63, 0xd6, 0x28, 0xab, 0x1c, 0x37, - 0x34, 0x7a, 0xa9, 0xc1, 0xd6, 0x0d, 0xc0, 0x5b, 0x32, 0xa6, 0xd1, 0x25, 0x89, 0x16, 0x52, 0xa6, - 0x1a, 0x17, 0x69, 0xc8, 0x26, 0xde, 0x52, 0xee, 0xb5, 0x4a, 0xbd, 0x1c, 0x76, 0x34, 0xaa, 0x49, - 0xdb, 0x50, 0x0d, 0x99, 0x30, 0x0c, 0xa9, 0x4e, 0xa1, 0x97, 0xc3, 0x95, 0x90, 0x09, 0x6d, 0xde, - 0x01, 0x18, 0xc7, 0x71, 0x64, 0xec, 0x52, 0x98, 0x4a, 0x2f, 0x87, 0xab, 0x12, 0x53, 0x84, 0x93, - 0x32, 0x94, 0x94, 0xad, 0xf5, 0x6b, 0x0d, 0x8a, 0xa3, 0x84, 0x30, 0xb4, 0x09, 0xf9, 0x50, 0xb7, - 0xa2, 0x8d, 0xf3, 0x61, 0x80, 0x10, 0x14, 0xd7, 0xa4, 0x57, 0x6b, 0x29, 0x77, 0x42, 0x52, 0xca, - 0x84, 0xac, 0x7a, 0x41, 0x51, 0x2b, 0x1a, 0xe8, 0x07, 0xe8, 0x0c, 0xea, 0x51, 0xec, 0x93, 0xc8, - 0xe3, 0x82, 0xa4, 0xc2, 0x93, 0x73, 0xa1, 0x34, 0x77, 0x3a, 0xcd, 0x4c, 0xad, 0x6c, 0x68, 0xdc, - 0x8b, 0x6c, 0x68, 0xf0, 0xa6, 0xf2, 0x19, 0x49, 0x17, 0x09, 0xa2, 0xef, 0x40, 0x23, 0x1e, 0x65, - 0x81, 0x8e, 0x51, 0x7a, 0x30, 0x46, 0x4d, 0x79, 0x74, 0x59, 0xa0, 0x22, 0x1c, 0x83, 0x1d, 0x49, - 0x35, 0x79, 0xc3, 0x56, 0xad, 0xfe, 0xec, 0xae, 0x56, 0x4f, 0x08, 0x73, 0x95, 0xe6, 0xbc, 0xcb, - 0x44, 0x7a, 0x8d, 0x8d, 0x0b, 0xfa, 0x36, 0x1b, 0x16, 0xd5, 0xe1, 0xaa, 0x5c, 0x4e, 0x67, 0xfb, - 0xa3, 0xc3, 0x62, 0x26, 0x44, 0x0f, 0xdb, 0x09, 0x38, 0x32, 0x69, 0x8f, 0x2e, 0x29, 0x13, 0xbc, - 0x51, 0x51, 0x19, 0xec, 0xdd, 0x97, 0x81, 0xcc, 0xb7, 0x2b, 0x99, 0x18, 0x44, 0xb6, 0xe4, 0xa8, - 0x03, 0xa5, 0x28, 0x64, 0x33, 0xde, 0xa8, 0x2a, 0xef, 0xa7, 0xf7, 0xe6, 0x1f, 0xb2, 0x19, 0xd6, - 0x54, 0x74, 0x00, 0xb6, 0x7e, 0x6c, 0x1a, 0xa0, 0x52, 0x46, 0x99, 0x53, 0x9a, 0xf8, 0x32, 0x57, - 0xb1, 0xe0, 0xd8, 0x30, 0xd0, 0x01, 0x3c, 0x9e, 0x12, 0xee, 0xa5, 0x74, 0x1e, 0x0b, 0xea, 0xe9, - 0xfa, 0x35, 0x1c, 0xd9, 0x23, 0xf8, 0xd1, 0x94, 0x70, 0xac, 0xf0, 0xa1, 0x82, 0x9b, 0x7f, 0x96, - 0xa0, 0xba, 0xca, 0x12, 0x7d, 0x03, 0xa0, 0x8b, 0xa3, 0x0a, 0x63, 0x3d, 0x58, 0x98, 0xaa, 0x62, - 0xab, 0xaa, 0x0c, 0x00, 0x6e, 0x1f, 0x53, 0xd5, 0x54, 0x4e, 0xe7, 0xf9, 0x83, 0xba, 0xb8, 0x6f, - 0x56, 0x3e, 0xbd, 0x1c, 0x5e, 0x8b, 0x80, 0xde, 0xc1, 0x06, 0xa3, 0xe2, 0xe7, 0x38, 0x9d, 0x69, - 0xad, 0x55, 0x3b, 0x3a, 0x1d, 0xf7, 0xe1, 0x90, 0x03, 0xed, 0xa6, 0x36, 0xbd, 0x1c, 0xae, 0xb1, - 0xb5, 0x7d, 0xf3, 0x2f, 0x0b, 0xe0, 0xf6, 0x4c, 0xb4, 0x0b, 0x4e, 0x40, 0xb9, 0x9f, 0x86, 0x89, - 0x4a, 0x5b, 0x3f, 0x58, 0xeb, 0x10, 0x1a, 0xae, 0xba, 0x2d, 0xaf, 0xaa, 0x75, 0xf4, 0x29, 0x77, - 0xba, 0xab, 0x05, 0x9b, 0x3f, 0x82, 0xb3, 0x06, 0xa3, 0x3a, 0x14, 0x66, 0xf4, 0xda, 0x1c, 0x2d, - 0x97, 0xe8, 0xd0, 0xcc, 0xae, 0x51, 0xf1, 0xae, 0xee, 0xbc, 0x7d, 0x4e, 0xb0, 0xe6, 0xbe, 0xce, - 0x1f, 0x59, 0xcd, 0x5f, 0xf2, 0x50, 0x5b, 0xbf, 0x3d, 0x3a, 0x06, 0x67, 0x46, 0x53, 0x46, 0xff, - 0x75, 0x41, 0x41, 0xd3, 0x55, 0x45, 0xbf, 0x87, 0xa2, 0xb8, 0x4e, 0x74, 0x16, 0x9b, 0x9d, 0xc3, - 0x4f, 0x13, 0xde, 0xbd, 0xb8, 0x4e, 0x28, 0x56, 0x01, 0xd0, 0x36, 0xc0, 0x9c, 0x72, 0x4e, 0x26, - 0x34, 0x7b, 0x56, 0x8a, 0xb8, 0x6a, 0x90, 0x7e, 0x80, 0xf6, 0xa0, 0x96, 0x99, 0x79, 0x78, 0xa3, - 0xdf, 0x94, 0x22, 0x76, 0x0c, 0x36, 0x0a, 0x6f, 0x68, 0xeb, 0x6b, 0x28, 0xca, 0x78, 0xe8, 0x11, - 0x38, 0xef, 0x06, 0xa3, 0x61, 0xf7, 0xb4, 0x7f, 0xde, 0xef, 0x9e, 0xd5, 0x73, 0xa8, 0x02, 0xc5, - 0x51, 0x77, 0x70, 0x51, 0xb7, 0xe4, 0x0a, 0x77, 0x4f, 0x2f, 0xeb, 0xf9, 0xd5, 0xd3, 0xd7, 0xfc, - 0xc3, 0x82, 0xa2, 0x9c, 0x21, 0xf4, 0x0a, 0x2a, 0xfa, 0x83, 0x66, 0x1e, 0xc0, 0x35, 0x0d, 0xd6, - 0x6e, 0x63, 0x3e, 0xde, 0xb8, 0x2c, 0xcc, 0x57, 0x7c, 0x0b, 0xca, 0x3c, 0x21, 0x2c, 0xfb, 0x02, - 0xda, 0xd8, 0x96, 0xdb, 0x7e, 0x80, 0x5e, 0x19, 0x65, 0x0a, 0x4a, 0x99, 0xbd, 0x8f, 0xcd, 0xef, - 0x9a, 0x0e, 0x2d, 0xf7, 0xbe, 0x5b, 0x54, 0xa1, 0x74, 0xda, 0xeb, 0xbf, 0x3d, 0xab, 0x5b, 0x08, - 0xc0, 0x1e, 0xbe, 0xc1, 0xf2, 0x4a, 0xf9, 0xff, 0xaf, 0x51, 0x5a, 0x73, 0x28, 0xe9, 0xe7, 0xec, - 0x3f, 0x2a, 0xf3, 0x02, 0x4a, 0x52, 0x8a, 0x6c, 0x26, 0xb6, 0xee, 0x51, 0x00, 0x6b, 0xd6, 0x89, - 0x07, 0x9f, 0xfb, 0xf1, 0xfc, 0x43, 0xd2, 0x09, 0xa8, 0xc8, 0x43, 0xd9, 0x87, 0x43, 0xeb, 0xa7, - 0x23, 0x43, 0x98, 0xc4, 0x11, 0x61, 0x13, 0x37, 0x4e, 0x27, 0xed, 0x09, 0x65, 0xaa, 0x4b, 0xdb, - 0xda, 0x44, 0x92, 0x90, 0xaf, 0xfe, 0xe6, 0x2d, 0x5f, 0x1e, 0x9b, 0xe5, 0xd8, 0x56, 0xa4, 0xc3, - 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x30, 0x5b, 0x04, 0x0a, 0x0a, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/type/color/color.pb.go b/vendor/google.golang.org/genproto/googleapis/type/color/color.pb.go deleted file mode 100644 index 4f201b88..00000000 --- a/vendor/google.golang.org/genproto/googleapis/type/color/color.pb.go +++ /dev/null @@ -1,221 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/type/color.proto - -/* -Package color is a generated protocol buffer package. - -It is generated from these files: - google/type/color.proto - -It has these top-level messages: - Color -*/ -package color - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/wrappers" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents a color in the RGBA color space. This representation is designed -// for simplicity of conversion to/from color representations in various -// languages over compactness; for example, the fields of this representation -// can be trivially provided to the constructor of "java.awt.Color" in Java; it -// can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" -// method in iOS; and, with just a little work, it can be easily formatted into -// a CSS "rgba()" string in JavaScript, as well. Here are some examples: -// -// Example (Java): -// -// import com.google.type.Color; -// -// // ... -// public static java.awt.Color fromProto(Color protocolor) { -// float alpha = protocolor.hasAlpha() -// ? protocolor.getAlpha().getValue() -// : 1.0; -// -// return new java.awt.Color( -// protocolor.getRed(), -// protocolor.getGreen(), -// protocolor.getBlue(), -// alpha); -// } -// -// public static Color toProto(java.awt.Color color) { -// float red = (float) color.getRed(); -// float green = (float) color.getGreen(); -// float blue = (float) color.getBlue(); -// float denominator = 255.0; -// Color.Builder resultBuilder = -// Color -// .newBuilder() -// .setRed(red / denominator) -// .setGreen(green / denominator) -// .setBlue(blue / denominator); -// int alpha = color.getAlpha(); -// if (alpha != 255) { -// result.setAlpha( -// FloatValue -// .newBuilder() -// .setValue(((float) alpha) / denominator) -// .build()); -// } -// return resultBuilder.build(); -// } -// // ... -// -// Example (iOS / Obj-C): -// -// // ... -// static UIColor* fromProto(Color* protocolor) { -// float red = [protocolor red]; -// float green = [protocolor green]; -// float blue = [protocolor blue]; -// FloatValue* alpha_wrapper = [protocolor alpha]; -// float alpha = 1.0; -// if (alpha_wrapper != nil) { -// alpha = [alpha_wrapper value]; -// } -// return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; -// } -// -// static Color* toProto(UIColor* color) { -// CGFloat red, green, blue, alpha; -// if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { -// return nil; -// } -// Color* result = [Color alloc] init]; -// [result setRed:red]; -// [result setGreen:green]; -// [result setBlue:blue]; -// if (alpha <= 0.9999) { -// [result setAlpha:floatWrapperWithValue(alpha)]; -// } -// [result autorelease]; -// return result; -// } -// // ... -// -// Example (JavaScript): -// -// // ... -// -// var protoToCssColor = function(rgb_color) { -// var redFrac = rgb_color.red || 0.0; -// var greenFrac = rgb_color.green || 0.0; -// var blueFrac = rgb_color.blue || 0.0; -// var red = Math.floor(redFrac * 255); -// var green = Math.floor(greenFrac * 255); -// var blue = Math.floor(blueFrac * 255); -// -// if (!('alpha' in rgb_color)) { -// return rgbToCssColor_(red, green, blue); -// } -// -// var alphaFrac = rgb_color.alpha.value || 0.0; -// var rgbParams = [red, green, blue].join(','); -// return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); -// }; -// -// var rgbToCssColor_ = function(red, green, blue) { -// var rgbNumber = new Number((red << 16) | (green << 8) | blue); -// var hexString = rgbNumber.toString(16); -// var missingZeros = 6 - hexString.length; -// var resultBuilder = ['#']; -// for (var i = 0; i < missingZeros; i++) { -// resultBuilder.push('0'); -// } -// resultBuilder.push(hexString); -// return resultBuilder.join(''); -// }; -// -// // ... -type Color struct { - // The amount of red in the color as a value in the interval [0, 1]. - Red float32 `protobuf:"fixed32,1,opt,name=red" json:"red,omitempty"` - // The amount of green in the color as a value in the interval [0, 1]. - Green float32 `protobuf:"fixed32,2,opt,name=green" json:"green,omitempty"` - // The amount of blue in the color as a value in the interval [0, 1]. - Blue float32 `protobuf:"fixed32,3,opt,name=blue" json:"blue,omitempty"` - // The fraction of this color that should be applied to the pixel. That is, - // the final pixel color is defined by the equation: - // - // pixel color = alpha * (this color) + (1.0 - alpha) * (background color) - // - // This means that a value of 1.0 corresponds to a solid color, whereas - // a value of 0.0 corresponds to a completely transparent color. This - // uses a wrapper message rather than a simple float scalar so that it is - // possible to distinguish between a default value and the value being unset. - // If omitted, this color object is to be rendered as a solid color - // (as if the alpha value had been explicitly given with a value of 1.0). - Alpha *google_protobuf.FloatValue `protobuf:"bytes,4,opt,name=alpha" json:"alpha,omitempty"` -} - -func (m *Color) Reset() { *m = Color{} } -func (m *Color) String() string { return proto.CompactTextString(m) } -func (*Color) ProtoMessage() {} -func (*Color) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Color) GetRed() float32 { - if m != nil { - return m.Red - } - return 0 -} - -func (m *Color) GetGreen() float32 { - if m != nil { - return m.Green - } - return 0 -} - -func (m *Color) GetBlue() float32 { - if m != nil { - return m.Blue - } - return 0 -} - -func (m *Color) GetAlpha() *google_protobuf.FloatValue { - if m != nil { - return m.Alpha - } - return nil -} - -func init() { - proto.RegisterType((*Color)(nil), "google.type.Color") -} - -func init() { proto.RegisterFile("google/type/color.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 224 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x8f, 0x31, 0x4b, 0xc5, 0x30, - 0x10, 0xc7, 0x49, 0xfb, 0xea, 0x70, 0x6f, 0x50, 0x82, 0x60, 0x50, 0x90, 0x87, 0xd3, 0x9b, 0x12, - 0x54, 0x70, 0x71, 0xab, 0xa0, 0x6b, 0x29, 0xe2, 0x20, 0x38, 0xa4, 0xf5, 0x8c, 0x42, 0xec, 0x85, - 0xb4, 0x55, 0xfc, 0x3a, 0x7e, 0x52, 0xc9, 0xa5, 0x42, 0x97, 0x70, 0xb9, 0xdf, 0xef, 0x92, 0xff, - 0xc1, 0x89, 0x23, 0x72, 0x1e, 0xcd, 0xf4, 0x13, 0xd0, 0xf4, 0xe4, 0x29, 0xea, 0x10, 0x69, 0x22, - 0xb9, 0xcd, 0x40, 0x27, 0x70, 0x7a, 0xbe, 0x58, 0x8c, 0xba, 0xf9, 0xcd, 0x7c, 0x47, 0x1b, 0x02, - 0xc6, 0x31, 0xcb, 0x17, 0x5f, 0x50, 0xdd, 0xa5, 0x59, 0x79, 0x04, 0x65, 0xc4, 0x57, 0x25, 0x76, - 0x62, 0x5f, 0xb4, 0xa9, 0x94, 0xc7, 0x50, 0xb9, 0x88, 0x38, 0xa8, 0x82, 0x7b, 0xf9, 0x22, 0x25, - 0x6c, 0x3a, 0x3f, 0xa3, 0x2a, 0xb9, 0xc9, 0xb5, 0xbc, 0x84, 0xca, 0xfa, 0xf0, 0x6e, 0xd5, 0x66, - 0x27, 0xf6, 0xdb, 0xab, 0x33, 0xbd, 0x24, 0xf8, 0xff, 0x54, 0xdf, 0x7b, 0xb2, 0xd3, 0x93, 0xf5, - 0x33, 0xb6, 0xd9, 0xac, 0x5f, 0xe0, 0xb0, 0xa7, 0x4f, 0xbd, 0x8a, 0x5a, 0x03, 0x07, 0x69, 0xd2, - 0x4c, 0x23, 0x9e, 0x6f, 0x16, 0xe4, 0xc8, 0xdb, 0xc1, 0x69, 0x8a, 0xce, 0x38, 0x1c, 0xf8, 0x45, - 0x93, 0x91, 0x0d, 0x1f, 0xe3, 0x6a, 0xfb, 0x5b, 0x3e, 0x7f, 0x8b, 0xf2, 0xe1, 0xb1, 0xe9, 0x0e, - 0x58, 0xbc, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x42, 0x23, 0x2a, 0xd0, 0x25, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/type/date/date.pb.go b/vendor/google.golang.org/genproto/googleapis/type/date/date.pb.go deleted file mode 100644 index 40beaab0..00000000 --- a/vendor/google.golang.org/genproto/googleapis/type/date/date.pb.go +++ /dev/null @@ -1,93 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/type/date.proto - -/* -Package date is a generated protocol buffer package. - -It is generated from these files: - google/type/date.proto - -It has these top-level messages: - Date -*/ -package date - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents a whole calendar date, e.g. date of birth. The time of day and -// time zone are either specified elsewhere or are not significant. The date -// is relative to the Proleptic Gregorian Calendar. The day may be 0 to -// represent a year and month where the day is not significant, e.g. credit card -// expiration date. The year may be 0 to represent a month and day independent -// of year, e.g. anniversary date. Related types are [google.type.TimeOfDay][google.type.TimeOfDay] -// and `google.protobuf.Timestamp`. -type Date struct { - // Year of date. Must be from 1 to 9999, or 0 if specifying a date without - // a year. - Year int32 `protobuf:"varint,1,opt,name=year" json:"year,omitempty"` - // Month of year. Must be from 1 to 12. - Month int32 `protobuf:"varint,2,opt,name=month" json:"month,omitempty"` - // Day of month. Must be from 1 to 31 and valid for the year and month, or 0 - // if specifying a year/month where the day is not significant. - Day int32 `protobuf:"varint,3,opt,name=day" json:"day,omitempty"` -} - -func (m *Date) Reset() { *m = Date{} } -func (m *Date) String() string { return proto.CompactTextString(m) } -func (*Date) ProtoMessage() {} -func (*Date) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Date) GetYear() int32 { - if m != nil { - return m.Year - } - return 0 -} - -func (m *Date) GetMonth() int32 { - if m != nil { - return m.Month - } - return 0 -} - -func (m *Date) GetDay() int32 { - if m != nil { - return m.Day - } - return 0 -} - -func init() { - proto.RegisterType((*Date)(nil), "google.type.Date") -} - -func init() { proto.RegisterFile("google/type/date.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 172 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4b, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0xa9, 0x2c, 0x48, 0xd5, 0x4f, 0x49, 0x2c, 0x49, 0xd5, 0x2b, 0x28, 0xca, - 0x2f, 0xc9, 0x17, 0xe2, 0x86, 0x88, 0xeb, 0x81, 0xc4, 0x95, 0x9c, 0xb8, 0x58, 0x5c, 0x12, 0x4b, - 0x52, 0x85, 0x84, 0xb8, 0x58, 0x2a, 0x53, 0x13, 0x8b, 0x24, 0x18, 0x15, 0x18, 0x35, 0x58, 0x83, - 0xc0, 0x6c, 0x21, 0x11, 0x2e, 0xd6, 0xdc, 0xfc, 0xbc, 0x92, 0x0c, 0x09, 0x26, 0xb0, 0x20, 0x84, - 0x23, 0x24, 0xc0, 0xc5, 0x9c, 0x92, 0x58, 0x29, 0xc1, 0x0c, 0x16, 0x03, 0x31, 0x9d, 0x62, 0xb9, - 0xf8, 0x93, 0xf3, 0x73, 0xf5, 0x90, 0x8c, 0x75, 0xe2, 0x04, 0x19, 0x1a, 0x00, 0xb2, 0x2e, 0x80, - 0x31, 0xca, 0x04, 0x2a, 0x93, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x97, 0x5f, 0x94, 0xae, 0x9f, - 0x9e, 0x9a, 0x07, 0x76, 0x8c, 0x3e, 0x44, 0x2a, 0xb1, 0x20, 0xb3, 0x18, 0xe1, 0x4e, 0x6b, 0x10, - 0xf1, 0x83, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x48, 0x40, 0x12, 0x1b, 0x58, 0xa5, 0x31, 0x20, - 0x00, 0x00, 0xff, 0xff, 0x84, 0x95, 0xf3, 0x4c, 0xd0, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/type/dayofweek/dayofweek.pb.go b/vendor/google.golang.org/genproto/googleapis/type/dayofweek/dayofweek.pb.go deleted file mode 100644 index eecd403f..00000000 --- a/vendor/google.golang.org/genproto/googleapis/type/dayofweek/dayofweek.pb.go +++ /dev/null @@ -1,100 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/type/dayofweek.proto - -/* -Package dayofweek is a generated protocol buffer package. - -It is generated from these files: - google/type/dayofweek.proto - -It has these top-level messages: -*/ -package dayofweek - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents a day of week. -type DayOfWeek int32 - -const ( - // The unspecified day-of-week. - DayOfWeek_DAY_OF_WEEK_UNSPECIFIED DayOfWeek = 0 - // The day-of-week of Monday. - DayOfWeek_MONDAY DayOfWeek = 1 - // The day-of-week of Tuesday. - DayOfWeek_TUESDAY DayOfWeek = 2 - // The day-of-week of Wednesday. - DayOfWeek_WEDNESDAY DayOfWeek = 3 - // The day-of-week of Thursday. - DayOfWeek_THURSDAY DayOfWeek = 4 - // The day-of-week of Friday. - DayOfWeek_FRIDAY DayOfWeek = 5 - // The day-of-week of Saturday. - DayOfWeek_SATURDAY DayOfWeek = 6 - // The day-of-week of Sunday. - DayOfWeek_SUNDAY DayOfWeek = 7 -) - -var DayOfWeek_name = map[int32]string{ - 0: "DAY_OF_WEEK_UNSPECIFIED", - 1: "MONDAY", - 2: "TUESDAY", - 3: "WEDNESDAY", - 4: "THURSDAY", - 5: "FRIDAY", - 6: "SATURDAY", - 7: "SUNDAY", -} -var DayOfWeek_value = map[string]int32{ - "DAY_OF_WEEK_UNSPECIFIED": 0, - "MONDAY": 1, - "TUESDAY": 2, - "WEDNESDAY": 3, - "THURSDAY": 4, - "FRIDAY": 5, - "SATURDAY": 6, - "SUNDAY": 7, -} - -func (x DayOfWeek) String() string { - return proto.EnumName(DayOfWeek_name, int32(x)) -} -func (DayOfWeek) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func init() { - proto.RegisterEnum("google.type.DayOfWeek", DayOfWeek_name, DayOfWeek_value) -} - -func init() { proto.RegisterFile("google/type/dayofweek.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 235 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0xa9, 0x2c, 0x48, 0xd5, 0x4f, 0x49, 0xac, 0xcc, 0x4f, 0x2b, 0x4f, 0x4d, - 0xcd, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x86, 0x48, 0xea, 0x81, 0x24, 0xb5, 0x5a, - 0x18, 0xb9, 0x38, 0x5d, 0x12, 0x2b, 0xfd, 0xd3, 0xc2, 0x53, 0x53, 0xb3, 0x85, 0xa4, 0xb9, 0xc4, - 0x5d, 0x1c, 0x23, 0xe3, 0xfd, 0xdd, 0xe2, 0xc3, 0x5d, 0x5d, 0xbd, 0xe3, 0x43, 0xfd, 0x82, 0x03, - 0x5c, 0x9d, 0x3d, 0xdd, 0x3c, 0x5d, 0x5d, 0x04, 0x18, 0x84, 0xb8, 0xb8, 0xd8, 0x7c, 0xfd, 0xfd, - 0x5c, 0x1c, 0x23, 0x05, 0x18, 0x85, 0xb8, 0xb9, 0xd8, 0x43, 0x42, 0x5d, 0x83, 0x41, 0x1c, 0x26, - 0x21, 0x5e, 0x2e, 0xce, 0x70, 0x57, 0x17, 0x3f, 0x08, 0x97, 0x59, 0x88, 0x87, 0x8b, 0x23, 0xc4, - 0x23, 0x34, 0x08, 0xcc, 0x63, 0x01, 0xe9, 0x72, 0x0b, 0xf2, 0x04, 0xb1, 0x59, 0x41, 0x32, 0xc1, - 0x8e, 0x21, 0xa1, 0x41, 0x20, 0x1e, 0x1b, 0x48, 0x26, 0x38, 0x14, 0x6c, 0x1e, 0xbb, 0x53, 0x26, - 0x17, 0x7f, 0x72, 0x7e, 0xae, 0x1e, 0x92, 0xcb, 0x9c, 0xf8, 0xe0, 0xce, 0x0a, 0x00, 0x39, 0x3b, - 0x80, 0x31, 0xca, 0x0e, 0x2a, 0x9d, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x97, 0x5f, 0x94, 0xae, - 0x9f, 0x9e, 0x9a, 0x07, 0xf6, 0x94, 0x3e, 0x44, 0x2a, 0xb1, 0x20, 0xb3, 0x18, 0xcd, 0xd3, 0xd6, - 0x70, 0xd6, 0x22, 0x26, 0x66, 0xf7, 0x90, 0x80, 0x24, 0x36, 0xb0, 0x06, 0x63, 0x40, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x6e, 0x23, 0xb2, 0xb3, 0x24, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/type/latlng/latlng.pb.go b/vendor/google.golang.org/genproto/googleapis/type/latlng/latlng.pb.go deleted file mode 100644 index 9a845f9c..00000000 --- a/vendor/google.golang.org/genproto/googleapis/type/latlng/latlng.pb.go +++ /dev/null @@ -1,114 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/type/latlng.proto - -/* -Package latlng is a generated protocol buffer package. - -It is generated from these files: - google/type/latlng.proto - -It has these top-level messages: - LatLng -*/ -package latlng - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// An object representing a latitude/longitude pair. This is expressed as a pair -// of doubles representing degrees latitude and degrees longitude. Unless -// specified otherwise, this must conform to the -// <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84 -// standard</a>. Values must be within normalized ranges. -// -// Example of normalization code in Python: -// -// def NormalizeLongitude(longitude): -// """Wraps decimal degrees longitude to [-180.0, 180.0].""" -// q, r = divmod(longitude, 360.0) -// if r > 180.0 or (r == 180.0 and q <= -1.0): -// return r - 360.0 -// return r -// -// def NormalizeLatLng(latitude, longitude): -// """Wraps decimal degrees latitude and longitude to -// [-90.0, 90.0] and [-180.0, 180.0], respectively.""" -// r = latitude % 360.0 -// if r <= 90.0: -// return r, NormalizeLongitude(longitude) -// elif r >= 270.0: -// return r - 360, NormalizeLongitude(longitude) -// else: -// return 180 - r, NormalizeLongitude(longitude + 180.0) -// -// assert 180.0 == NormalizeLongitude(180.0) -// assert -180.0 == NormalizeLongitude(-180.0) -// assert -179.0 == NormalizeLongitude(181.0) -// assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0) -// assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0) -// assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0) -// assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0) -// assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0) -// assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0) -// assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0) -// assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0) -// assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0) -// assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0) -type LatLng struct { - // The latitude in degrees. It must be in the range [-90.0, +90.0]. - Latitude float64 `protobuf:"fixed64,1,opt,name=latitude" json:"latitude,omitempty"` - // The longitude in degrees. It must be in the range [-180.0, +180.0]. - Longitude float64 `protobuf:"fixed64,2,opt,name=longitude" json:"longitude,omitempty"` -} - -func (m *LatLng) Reset() { *m = LatLng{} } -func (m *LatLng) String() string { return proto.CompactTextString(m) } -func (*LatLng) ProtoMessage() {} -func (*LatLng) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *LatLng) GetLatitude() float64 { - if m != nil { - return m.Latitude - } - return 0 -} - -func (m *LatLng) GetLongitude() float64 { - if m != nil { - return m.Longitude - } - return 0 -} - -func init() { - proto.RegisterType((*LatLng)(nil), "google.type.LatLng") -} - -func init() { proto.RegisterFile("google/type/latlng.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 165 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x48, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0xa9, 0x2c, 0x48, 0xd5, 0xcf, 0x49, 0x2c, 0xc9, 0xc9, 0x4b, 0xd7, 0x2b, - 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x86, 0xc8, 0xe8, 0x81, 0x64, 0x94, 0x9c, 0xb8, 0xd8, 0x7c, - 0x12, 0x4b, 0x7c, 0xf2, 0xd2, 0x85, 0xa4, 0xb8, 0x38, 0x72, 0x12, 0x4b, 0x32, 0x4b, 0x4a, 0x53, - 0x52, 0x25, 0x18, 0x15, 0x18, 0x35, 0x18, 0x83, 0xe0, 0x7c, 0x21, 0x19, 0x2e, 0xce, 0x9c, 0xfc, - 0xbc, 0x74, 0x88, 0x24, 0x13, 0x58, 0x12, 0x21, 0xe0, 0x94, 0xc0, 0xc5, 0x9f, 0x9c, 0x9f, 0xab, - 0x87, 0x64, 0xac, 0x13, 0x37, 0xc4, 0xd0, 0x00, 0x90, 0x85, 0x01, 0x8c, 0x51, 0x16, 0x50, 0xb9, - 0xf4, 0xfc, 0x9c, 0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74, 0xfd, 0xf4, 0xd4, 0x3c, 0xb0, 0x73, - 0xf4, 0x21, 0x52, 0x89, 0x05, 0x99, 0xc5, 0xc8, 0x6e, 0xb5, 0x86, 0x50, 0x8b, 0x98, 0x98, 0xdd, - 0x43, 0x02, 0x92, 0xd8, 0xc0, 0x4a, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x69, 0x12, 0x54, - 0x1c, 0xd5, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/type/money/money.pb.go b/vendor/google.golang.org/genproto/googleapis/type/money/money.pb.go deleted file mode 100644 index 34bf8ab6..00000000 --- a/vendor/google.golang.org/genproto/googleapis/type/money/money.pb.go +++ /dev/null @@ -1,92 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/type/money.proto - -/* -Package money is a generated protocol buffer package. - -It is generated from these files: - google/type/money.proto - -It has these top-level messages: - Money -*/ -package money - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents an amount of money with its currency type. -type Money struct { - // The 3-letter currency code defined in ISO 4217. - CurrencyCode string `protobuf:"bytes,1,opt,name=currency_code,json=currencyCode" json:"currency_code,omitempty"` - // The whole units of the amount. - // For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar. - Units int64 `protobuf:"varint,2,opt,name=units" json:"units,omitempty"` - // Number of nano (10^-9) units of the amount. - // The value must be between -999,999,999 and +999,999,999 inclusive. - // If `units` is positive, `nanos` must be positive or zero. - // If `units` is zero, `nanos` can be positive, zero, or negative. - // If `units` is negative, `nanos` must be negative or zero. - // For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000. - Nanos int32 `protobuf:"varint,3,opt,name=nanos" json:"nanos,omitempty"` -} - -func (m *Money) Reset() { *m = Money{} } -func (m *Money) String() string { return proto.CompactTextString(m) } -func (*Money) ProtoMessage() {} -func (*Money) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Money) GetCurrencyCode() string { - if m != nil { - return m.CurrencyCode - } - return "" -} - -func (m *Money) GetUnits() int64 { - if m != nil { - return m.Units - } - return 0 -} - -func (m *Money) GetNanos() int32 { - if m != nil { - return m.Nanos - } - return 0 -} - -func init() { - proto.RegisterType((*Money)(nil), "google.type.Money") -} - -func init() { proto.RegisterFile("google/type/money.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 190 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4f, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0xa9, 0x2c, 0x48, 0xd5, 0xcf, 0xcd, 0xcf, 0x4b, 0xad, 0xd4, 0x2b, 0x28, - 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x86, 0x48, 0xe8, 0x81, 0x24, 0x94, 0x22, 0xb8, 0x58, 0x7d, 0x41, - 0x72, 0x42, 0xca, 0x5c, 0xbc, 0xc9, 0xa5, 0x45, 0x45, 0xa9, 0x79, 0xc9, 0x95, 0xf1, 0xc9, 0xf9, - 0x29, 0xa9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x3c, 0x30, 0x41, 0xe7, 0xfc, 0x94, 0x54, - 0x21, 0x11, 0x2e, 0xd6, 0xd2, 0xbc, 0xcc, 0x92, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xe6, 0x20, - 0x08, 0x07, 0x24, 0x9a, 0x97, 0x98, 0x97, 0x5f, 0x2c, 0xc1, 0xac, 0xc0, 0xa8, 0xc1, 0x1a, 0x04, - 0xe1, 0x38, 0xc5, 0x72, 0xf1, 0x27, 0xe7, 0xe7, 0xea, 0x21, 0x59, 0xe6, 0xc4, 0x05, 0xb6, 0x2a, - 0x00, 0xe4, 0x8a, 0x00, 0xc6, 0x28, 0x33, 0xa8, 0x54, 0x7a, 0x7e, 0x4e, 0x62, 0x5e, 0xba, 0x5e, - 0x7e, 0x51, 0xba, 0x7e, 0x7a, 0x6a, 0x1e, 0xd8, 0x8d, 0xfa, 0x10, 0xa9, 0xc4, 0x82, 0xcc, 0x62, - 0x24, 0xf7, 0x5b, 0x83, 0xc9, 0x45, 0x4c, 0xcc, 0xee, 0x21, 0x01, 0x49, 0x6c, 0x60, 0x85, 0xc6, - 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbf, 0xc2, 0x5b, 0xa5, 0xe7, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/type/postaladdress/postal_address.pb.go b/vendor/google.golang.org/genproto/googleapis/type/postaladdress/postal_address.pb.go deleted file mode 100644 index 430f3b45..00000000 --- a/vendor/google.golang.org/genproto/googleapis/type/postaladdress/postal_address.pb.go +++ /dev/null @@ -1,240 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/type/postal_address.proto - -/* -Package postaladdress is a generated protocol buffer package. - -It is generated from these files: - google/type/postal_address.proto - -It has these top-level messages: - PostalAddress -*/ -package postaladdress - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents a postal address, e.g. for postal delivery or payments addresses. -// Given a postal address, a postal service can deliver items to a premise, P.O. -// Box or similar. -// It is not intended to model geographical locations (roads, towns, -// mountains). -// -// In typical usage an address would be created via user input or from importing -// existing data, depending on the type of process. -// -// Advice on address input / editing: -// - Use an i18n-ready address widget such as -// https://github.com/googlei18n/libaddressinput) -// - Users should not be presented with UI elements for input or editing of -// fields outside countries where that field is used. -// -// For more guidance on how to use this schema, please see: -// https://support.google.com/business/answer/6397478 -type PostalAddress struct { - // The schema revision of the `PostalAddress`. - // All new revisions **must** be backward compatible with old revisions. - Revision int32 `protobuf:"varint,1,opt,name=revision" json:"revision,omitempty"` - // Required. CLDR region code of the country/region of the address. This - // is never inferred and it is up to the user to ensure the value is - // correct. See http://cldr.unicode.org/ and - // http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html - // for details. Example: "CH" for Switzerland. - RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode" json:"region_code,omitempty"` - // Optional. BCP-47 language code of the contents of this address (if - // known). This is often the UI language of the input form or is expected - // to match one of the languages used in the address' country/region, or their - // transliterated equivalents. - // This can affect formatting in certain countries, but is not critical - // to the correctness of the data and will never affect any validation or - // other non-formatting related operations. - // - // If this value is not known, it should be omitted (rather than specifying a - // possibly incorrect default). - // - // Examples: "zh-Hant", "ja", "ja-Latn", "en". - LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"` - // Optional. Postal code of the address. Not all countries use or require - // postal codes to be present, but where they are used, they may trigger - // additional validation with other parts of the address (e.g. state/zip - // validation in the U.S.A.). - PostalCode string `protobuf:"bytes,4,opt,name=postal_code,json=postalCode" json:"postal_code,omitempty"` - // Optional. Additional, country-specific, sorting code. This is not used - // in most regions. Where it is used, the value is either a string like - // "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a number - // alone, representing the "sector code" (Jamaica), "delivery area indicator" - // (Malawi) or "post office indicator" (e.g. Côte d'Ivoire). - SortingCode string `protobuf:"bytes,5,opt,name=sorting_code,json=sortingCode" json:"sorting_code,omitempty"` - // Optional. Highest administrative subdivision which is used for postal - // addresses of a country or region. - // For example, this can be a state, a province, an oblast, or a prefecture. - // Specifically, for Spain this is the province and not the autonomous - // community (e.g. "Barcelona" and not "Catalonia"). - // Many countries don't use an administrative area in postal addresses. E.g. - // in Switzerland this should be left unpopulated. - AdministrativeArea string `protobuf:"bytes,6,opt,name=administrative_area,json=administrativeArea" json:"administrative_area,omitempty"` - // Optional. Generally refers to the city/town portion of the address. - // Examples: US city, IT comune, UK post town. - // In regions of the world where localities are not well defined or do not fit - // into this structure well, leave locality empty and use address_lines. - Locality string `protobuf:"bytes,7,opt,name=locality" json:"locality,omitempty"` - // Optional. Sublocality of the address. - // For example, this can be neighborhoods, boroughs, districts. - Sublocality string `protobuf:"bytes,8,opt,name=sublocality" json:"sublocality,omitempty"` - // Unstructured address lines describing the lower levels of an address. - // - // Because values in address_lines do not have type information and may - // sometimes contain multiple values in a single field (e.g. - // "Austin, TX"), it is important that the line order is clear. The order of - // address lines should be "envelope order" for the country/region of the - // address. In places where this can vary (e.g. Japan), address_language is - // used to make it explicit (e.g. "ja" for large-to-small ordering and - // "ja-Latn" or "en" for small-to-large). This way, the most specific line of - // an address can be selected based on the language. - // - // The minimum permitted structural representation of an address consists - // of a region_code with all remaining information placed in the - // address_lines. It would be possible to format such an address very - // approximately without geocoding, but no semantic reasoning could be - // made about any of the address components until it was at least - // partially resolved. - // - // Creating an address only containing a region_code and address_lines, and - // then geocoding is the recommended way to handle completely unstructured - // addresses (as opposed to guessing which parts of the address should be - // localities or administrative areas). - AddressLines []string `protobuf:"bytes,9,rep,name=address_lines,json=addressLines" json:"address_lines,omitempty"` - // Optional. The recipient at the address. - // This field may, under certain circumstances, contain multiline information. - // For example, it might contain "care of" information. - Recipients []string `protobuf:"bytes,10,rep,name=recipients" json:"recipients,omitempty"` - // Optional. The name of the organization at the address. - Organization string `protobuf:"bytes,11,opt,name=organization" json:"organization,omitempty"` -} - -func (m *PostalAddress) Reset() { *m = PostalAddress{} } -func (m *PostalAddress) String() string { return proto.CompactTextString(m) } -func (*PostalAddress) ProtoMessage() {} -func (*PostalAddress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *PostalAddress) GetRevision() int32 { - if m != nil { - return m.Revision - } - return 0 -} - -func (m *PostalAddress) GetRegionCode() string { - if m != nil { - return m.RegionCode - } - return "" -} - -func (m *PostalAddress) GetLanguageCode() string { - if m != nil { - return m.LanguageCode - } - return "" -} - -func (m *PostalAddress) GetPostalCode() string { - if m != nil { - return m.PostalCode - } - return "" -} - -func (m *PostalAddress) GetSortingCode() string { - if m != nil { - return m.SortingCode - } - return "" -} - -func (m *PostalAddress) GetAdministrativeArea() string { - if m != nil { - return m.AdministrativeArea - } - return "" -} - -func (m *PostalAddress) GetLocality() string { - if m != nil { - return m.Locality - } - return "" -} - -func (m *PostalAddress) GetSublocality() string { - if m != nil { - return m.Sublocality - } - return "" -} - -func (m *PostalAddress) GetAddressLines() []string { - if m != nil { - return m.AddressLines - } - return nil -} - -func (m *PostalAddress) GetRecipients() []string { - if m != nil { - return m.Recipients - } - return nil -} - -func (m *PostalAddress) GetOrganization() string { - if m != nil { - return m.Organization - } - return "" -} - -func init() { - proto.RegisterType((*PostalAddress)(nil), "google.type.PostalAddress") -} - -func init() { proto.RegisterFile("google/type/postal_address.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 338 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x92, 0x31, 0x6f, 0xea, 0x30, - 0x10, 0xc7, 0x15, 0xf2, 0xe0, 0xc1, 0x05, 0xf4, 0x24, 0xbf, 0x25, 0xea, 0x50, 0x52, 0xba, 0x30, - 0x25, 0x43, 0xc7, 0x4e, 0x50, 0xa9, 0x5d, 0x3a, 0x44, 0xa8, 0x53, 0x97, 0xc8, 0x24, 0x27, 0xcb, - 0x52, 0xf0, 0x45, 0xb6, 0x41, 0xa2, 0xdf, 0xa1, 0x5f, 0xa2, 0x9f, 0xb4, 0xb2, 0x9d, 0xd2, 0x30, - 0xde, 0xef, 0x7e, 0x49, 0xee, 0xee, 0x1f, 0xc8, 0x04, 0x91, 0x68, 0xb1, 0xb0, 0xe7, 0x0e, 0x8b, - 0x8e, 0x8c, 0xe5, 0x6d, 0xc5, 0x9b, 0x46, 0xa3, 0x31, 0x79, 0xa7, 0xc9, 0x12, 0x4b, 0x82, 0x91, - 0x3b, 0x63, 0xf5, 0x19, 0xc3, 0xa2, 0xf4, 0xd6, 0x26, 0x48, 0xec, 0x06, 0xa6, 0x1a, 0x4f, 0xd2, - 0x48, 0x52, 0x69, 0x94, 0x45, 0xeb, 0xf1, 0xee, 0x52, 0xb3, 0x25, 0x24, 0x1a, 0x85, 0x24, 0x55, - 0xd5, 0xd4, 0x60, 0x3a, 0xca, 0xa2, 0xf5, 0x6c, 0x07, 0x01, 0x3d, 0x51, 0x83, 0xec, 0x1e, 0x16, - 0x2d, 0x57, 0xe2, 0xc8, 0x05, 0x06, 0x25, 0xf6, 0xca, 0xfc, 0x07, 0x7a, 0x69, 0x09, 0x49, 0x3f, - 0x98, 0x57, 0xfe, 0x84, 0xb7, 0x04, 0xe4, 0x85, 0x3b, 0x98, 0x1b, 0xd2, 0x56, 0x2a, 0x11, 0x8c, - 0xb1, 0x37, 0x92, 0x9e, 0x79, 0xa5, 0x80, 0xff, 0xbc, 0x39, 0x48, 0x25, 0x8d, 0xd5, 0xdc, 0xca, - 0x13, 0x56, 0x5c, 0x23, 0x4f, 0x27, 0xde, 0x64, 0xd7, 0xad, 0x8d, 0x46, 0xee, 0xd6, 0x6a, 0xa9, - 0xe6, 0xad, 0xb4, 0xe7, 0xf4, 0xaf, 0xb7, 0x2e, 0x35, 0xcb, 0x20, 0x31, 0xc7, 0xfd, 0xa5, 0x3d, - 0xed, 0x3f, 0xf7, 0x8b, 0xdc, 0x5e, 0xfd, 0x11, 0xab, 0x56, 0x2a, 0x34, 0xe9, 0x2c, 0x8b, 0xdd, - 0x5e, 0x3d, 0x7c, 0x75, 0x8c, 0xdd, 0x02, 0x68, 0xac, 0x65, 0x27, 0x51, 0x59, 0x93, 0x82, 0x37, - 0x06, 0x84, 0xad, 0x60, 0x4e, 0x5a, 0x70, 0x25, 0x3f, 0xb8, 0x75, 0xd7, 0x4d, 0xc2, 0x6d, 0x86, - 0x6c, 0x7b, 0x84, 0x7f, 0x35, 0x1d, 0xf2, 0x41, 0x44, 0x5b, 0x76, 0x95, 0x4f, 0xe9, 0x32, 0x2c, - 0xa3, 0xf7, 0xe7, 0x5e, 0x11, 0xe4, 0x6e, 0x9b, 0x93, 0x16, 0x85, 0x40, 0xe5, 0x13, 0x2e, 0x42, - 0x8b, 0x77, 0xd2, 0x0c, 0x7f, 0x83, 0x7e, 0xd6, 0xc7, 0xab, 0xea, 0x6b, 0x14, 0xbf, 0xbc, 0x95, - 0xfb, 0x89, 0x7f, 0xf0, 0xe1, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xda, 0x86, 0xd3, 0x22, 0x3e, 0x02, - 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/type/timeofday/timeofday.pb.go b/vendor/google.golang.org/genproto/googleapis/type/timeofday/timeofday.pb.go deleted file mode 100644 index 703c74c2..00000000 --- a/vendor/google.golang.org/genproto/googleapis/type/timeofday/timeofday.pb.go +++ /dev/null @@ -1,100 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/type/timeofday.proto - -/* -Package timeofday is a generated protocol buffer package. - -It is generated from these files: - google/type/timeofday.proto - -It has these top-level messages: - TimeOfDay -*/ -package timeofday - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Represents a time of day. The date and time zone are either not significant -// or are specified elsewhere. An API may chose to allow leap seconds. Related -// types are [google.type.Date][google.type.Date] and `google.protobuf.Timestamp`. -type TimeOfDay struct { - // Hours of day in 24 hour format. Should be from 0 to 23. An API may choose - // to allow the value "24:00:00" for scenarios like business closing time. - Hours int32 `protobuf:"varint,1,opt,name=hours" json:"hours,omitempty"` - // Minutes of hour of day. Must be from 0 to 59. - Minutes int32 `protobuf:"varint,2,opt,name=minutes" json:"minutes,omitempty"` - // Seconds of minutes of the time. Must normally be from 0 to 59. An API may - // allow the value 60 if it allows leap-seconds. - Seconds int32 `protobuf:"varint,3,opt,name=seconds" json:"seconds,omitempty"` - // Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999. - Nanos int32 `protobuf:"varint,4,opt,name=nanos" json:"nanos,omitempty"` -} - -func (m *TimeOfDay) Reset() { *m = TimeOfDay{} } -func (m *TimeOfDay) String() string { return proto.CompactTextString(m) } -func (*TimeOfDay) ProtoMessage() {} -func (*TimeOfDay) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *TimeOfDay) GetHours() int32 { - if m != nil { - return m.Hours - } - return 0 -} - -func (m *TimeOfDay) GetMinutes() int32 { - if m != nil { - return m.Minutes - } - return 0 -} - -func (m *TimeOfDay) GetSeconds() int32 { - if m != nil { - return m.Seconds - } - return 0 -} - -func (m *TimeOfDay) GetNanos() int32 { - if m != nil { - return m.Nanos - } - return 0 -} - -func init() { - proto.RegisterType((*TimeOfDay)(nil), "google.type.TimeOfDay") -} - -func init() { proto.RegisterFile("google/type/timeofday.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 198 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0xa9, 0x2c, 0x48, 0xd5, 0x2f, 0xc9, 0xcc, 0x4d, 0xcd, 0x4f, 0x4b, 0x49, - 0xac, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x86, 0x48, 0xea, 0x81, 0x24, 0x95, 0xb2, - 0xb9, 0x38, 0x43, 0x32, 0x73, 0x53, 0xfd, 0xd3, 0x5c, 0x12, 0x2b, 0x85, 0x44, 0xb8, 0x58, 0x33, - 0xf2, 0x4b, 0x8b, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x58, 0x83, 0x20, 0x1c, 0x21, 0x09, 0x2e, - 0xf6, 0xdc, 0xcc, 0xbc, 0xd2, 0x92, 0xd4, 0x62, 0x09, 0x26, 0xb0, 0x38, 0x8c, 0x0b, 0x92, 0x29, - 0x4e, 0x4d, 0xce, 0xcf, 0x4b, 0x29, 0x96, 0x60, 0x86, 0xc8, 0x40, 0xb9, 0x20, 0x93, 0xf2, 0x12, - 0xf3, 0xf2, 0x8b, 0x25, 0x58, 0x20, 0x26, 0x81, 0x39, 0x4e, 0x99, 0x5c, 0xfc, 0xc9, 0xf9, 0xb9, - 0x7a, 0x48, 0xf6, 0x3b, 0xf1, 0xc1, 0x6d, 0x0f, 0x00, 0x39, 0x2e, 0x80, 0x31, 0xca, 0x0e, 0x2a, - 0x9d, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x97, 0x5f, 0x94, 0xae, 0x9f, 0x9e, 0x9a, 0x07, 0x76, - 0xba, 0x3e, 0x44, 0x2a, 0xb1, 0x20, 0xb3, 0x18, 0xcd, 0x6b, 0xd6, 0x70, 0xd6, 0x22, 0x26, 0x66, - 0xf7, 0x90, 0x80, 0x24, 0x36, 0xb0, 0x06, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x47, 0x79, - 0x6a, 0x06, 0x0a, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/googleapis/watcher/v1/watch.pb.go b/vendor/google.golang.org/genproto/googleapis/watcher/v1/watch.pb.go deleted file mode 100644 index c3128144..00000000 --- a/vendor/google.golang.org/genproto/googleapis/watcher/v1/watch.pb.go +++ /dev/null @@ -1,376 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/watcher/v1/watch.proto - -/* -Package watcher is a generated protocol buffer package. - -It is generated from these files: - google/watcher/v1/watch.proto - -It has these top-level messages: - Request - ChangeBatch - Change -*/ -package watcher - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/any" -import _ "github.com/golang/protobuf/ptypes/empty" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// A reported value can be in one of the following states: -type Change_State int32 - -const ( - // The element exists and its full value is included in data. - Change_EXISTS Change_State = 0 - // The element does not exist. - Change_DOES_NOT_EXIST Change_State = 1 - // Element may or may not exist. Used only for initial state delivery when - // the client is not interested in fetching the initial state. See the - // "Initial State" section above. - Change_INITIAL_STATE_SKIPPED Change_State = 2 - // The element may exist, but some error has occurred. More information is - // available in the data field - the value is a serialized Status - // proto (from [google.rpc.Status][]) - Change_ERROR Change_State = 3 -) - -var Change_State_name = map[int32]string{ - 0: "EXISTS", - 1: "DOES_NOT_EXIST", - 2: "INITIAL_STATE_SKIPPED", - 3: "ERROR", -} -var Change_State_value = map[string]int32{ - "EXISTS": 0, - "DOES_NOT_EXIST": 1, - "INITIAL_STATE_SKIPPED": 2, - "ERROR": 3, -} - -func (x Change_State) String() string { - return proto.EnumName(Change_State_name, int32(x)) -} -func (Change_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} } - -// The message used by the client to register interest in an entity. -type Request struct { - // The `target` value **must** be a valid URL path pointing to an entity - // to watch. Note that the service name **must** be - // removed from the target field (e.g., the target field must say - // "/foo/bar", not "myservice.googleapis.com/foo/bar"). A client is - // also allowed to pass system-specific parameters in the URL that - // are only obeyed by some implementations. Some parameters will be - // implementation-specific. However, some have predefined meaning - // and are listed here: - // - // * recursive = true|false [default=false] - // If set to true, indicates that the client wants to watch all elements - // of entities in the subtree rooted at the entity's name in `target`. For - // descendants that are not the immediate children of the target, the - // `Change.element` will contain slashes. - // - // Note that some namespaces and entities will not support recursive - // watching. When watching such an entity, a client must not set recursive - // to true. Otherwise, it will receive an `UNIMPLEMENTED` error. - // - // Normal URL encoding must be used inside `target`. For example, if a query - // parameter name or value, or the non-query parameter portion of `target` - // contains a special character, it must be %-encoded. We recommend that - // clients and servers use their runtime's URL library to produce and consume - // target values. - Target string `protobuf:"bytes,1,opt,name=target" json:"target,omitempty"` - // The `resume_marker` specifies how much of the existing underlying state is - // delivered to the client when the watch request is received by the - // system. The client can set this marker in one of the following ways to get - // different semantics: - // - // * Parameter is not specified or has the value "". - // Semantics: Fetch initial state. - // The client wants the entity's initial state to be delivered. See the - // description in "Initial State". - // - // * Parameter is set to the string "now" (UTF-8 encoding). - // Semantics: Fetch new changes only. - // The client just wants to get the changes received by the system after - // the watch point. The system may deliver changes from before the watch - // point as well. - // - // * Parameter is set to a value received in an earlier - // `Change.resume_marker` field while watching the same entity. - // Semantics: Resume from a specific point. - // The client wants to receive the changes from a specific point; this - // value must correspond to a value received in the `Change.resume_marker` - // field. The system may deliver changes from before the `resume_marker` - // as well. If the system cannot resume the stream from this point (e.g., - // if it is too far behind in the stream), it can raise the - // `FAILED_PRECONDITION` error. - // - // An implementation MUST support an unspecified parameter and the - // empty string "" marker (initial state fetching) and the "now" marker. - // It need not support resuming from a specific point. - ResumeMarker []byte `protobuf:"bytes,2,opt,name=resume_marker,json=resumeMarker,proto3" json:"resume_marker,omitempty"` -} - -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} -func (*Request) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Request) GetTarget() string { - if m != nil { - return m.Target - } - return "" -} - -func (m *Request) GetResumeMarker() []byte { - if m != nil { - return m.ResumeMarker - } - return nil -} - -// A batch of Change messages. -type ChangeBatch struct { - // A list of Change messages. - Changes []*Change `protobuf:"bytes,1,rep,name=changes" json:"changes,omitempty"` -} - -func (m *ChangeBatch) Reset() { *m = ChangeBatch{} } -func (m *ChangeBatch) String() string { return proto.CompactTextString(m) } -func (*ChangeBatch) ProtoMessage() {} -func (*ChangeBatch) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ChangeBatch) GetChanges() []*Change { - if m != nil { - return m.Changes - } - return nil -} - -// A Change indicates the most recent state of an element. -type Change struct { - // Name of the element, interpreted relative to the entity's actual - // name. "" refers to the entity itself. The element name is a valid - // UTF-8 string. - Element string `protobuf:"bytes,1,opt,name=element" json:"element,omitempty"` - // The state of the `element`. - State Change_State `protobuf:"varint,2,opt,name=state,enum=google.watcher.v1.Change_State" json:"state,omitempty"` - // The actual change data. This field is present only when `state() == EXISTS` - // or `state() == ERROR`. Please see [google.protobuf.Any][google.protobuf.Any] about how to use - // the Any type. - Data *google_protobuf1.Any `protobuf:"bytes,6,opt,name=data" json:"data,omitempty"` - // If present, provides a compact representation of all the messages that have - // been received by the caller for the given entity, e.g., it could be a - // sequence number or a multi-part timestamp/version vector. This marker can - // be provided in the Request message, allowing the caller to resume the stream - // watching at a specific point without fetching the initial state. - ResumeMarker []byte `protobuf:"bytes,4,opt,name=resume_marker,json=resumeMarker,proto3" json:"resume_marker,omitempty"` - // If true, this Change is followed by more Changes that are in the same group - // as this Change. - Continued bool `protobuf:"varint,5,opt,name=continued" json:"continued,omitempty"` -} - -func (m *Change) Reset() { *m = Change{} } -func (m *Change) String() string { return proto.CompactTextString(m) } -func (*Change) ProtoMessage() {} -func (*Change) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Change) GetElement() string { - if m != nil { - return m.Element - } - return "" -} - -func (m *Change) GetState() Change_State { - if m != nil { - return m.State - } - return Change_EXISTS -} - -func (m *Change) GetData() *google_protobuf1.Any { - if m != nil { - return m.Data - } - return nil -} - -func (m *Change) GetResumeMarker() []byte { - if m != nil { - return m.ResumeMarker - } - return nil -} - -func (m *Change) GetContinued() bool { - if m != nil { - return m.Continued - } - return false -} - -func init() { - proto.RegisterType((*Request)(nil), "google.watcher.v1.Request") - proto.RegisterType((*ChangeBatch)(nil), "google.watcher.v1.ChangeBatch") - proto.RegisterType((*Change)(nil), "google.watcher.v1.Change") - proto.RegisterEnum("google.watcher.v1.Change_State", Change_State_name, Change_State_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Watcher service - -type WatcherClient interface { - // Start a streaming RPC to get watch information from the server. - Watch(ctx context.Context, in *Request, opts ...grpc.CallOption) (Watcher_WatchClient, error) -} - -type watcherClient struct { - cc *grpc.ClientConn -} - -func NewWatcherClient(cc *grpc.ClientConn) WatcherClient { - return &watcherClient{cc} -} - -func (c *watcherClient) Watch(ctx context.Context, in *Request, opts ...grpc.CallOption) (Watcher_WatchClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Watcher_serviceDesc.Streams[0], c.cc, "/google.watcher.v1.Watcher/Watch", opts...) - if err != nil { - return nil, err - } - x := &watcherWatchClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Watcher_WatchClient interface { - Recv() (*ChangeBatch, error) - grpc.ClientStream -} - -type watcherWatchClient struct { - grpc.ClientStream -} - -func (x *watcherWatchClient) Recv() (*ChangeBatch, error) { - m := new(ChangeBatch) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for Watcher service - -type WatcherServer interface { - // Start a streaming RPC to get watch information from the server. - Watch(*Request, Watcher_WatchServer) error -} - -func RegisterWatcherServer(s *grpc.Server, srv WatcherServer) { - s.RegisterService(&_Watcher_serviceDesc, srv) -} - -func _Watcher_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(Request) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(WatcherServer).Watch(m, &watcherWatchServer{stream}) -} - -type Watcher_WatchServer interface { - Send(*ChangeBatch) error - grpc.ServerStream -} - -type watcherWatchServer struct { - grpc.ServerStream -} - -func (x *watcherWatchServer) Send(m *ChangeBatch) error { - return x.ServerStream.SendMsg(m) -} - -var _Watcher_serviceDesc = grpc.ServiceDesc{ - ServiceName: "google.watcher.v1.Watcher", - HandlerType: (*WatcherServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "Watch", - Handler: _Watcher_Watch_Handler, - ServerStreams: true, - }, - }, - Metadata: "google/watcher/v1/watch.proto", -} - -func init() { proto.RegisterFile("google/watcher/v1/watch.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 449 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0xdd, 0x6e, 0xd3, 0x30, - 0x14, 0xc6, 0xdd, 0x92, 0xd2, 0xd3, 0x31, 0x75, 0x16, 0x43, 0x69, 0x19, 0x10, 0x85, 0x9b, 0x5c, - 0x25, 0xac, 0x13, 0x12, 0x12, 0x57, 0x2d, 0x0b, 0x52, 0x04, 0x5b, 0x2b, 0x27, 0x12, 0x13, 0x37, - 0x91, 0x97, 0x99, 0xac, 0xa2, 0xb1, 0x4b, 0xe2, 0x0e, 0xed, 0x96, 0x57, 0x40, 0x3c, 0x19, 0xaf, - 0xc0, 0x83, 0xa0, 0xda, 0x0e, 0x20, 0xb2, 0xde, 0x9d, 0xf3, 0xfd, 0xd8, 0xe7, 0x3b, 0x36, 0x3c, - 0x29, 0x84, 0x28, 0x96, 0x2c, 0xfc, 0x4a, 0x65, 0x7e, 0xcd, 0xaa, 0xf0, 0xe6, 0x58, 0x97, 0xc1, - 0xaa, 0x12, 0x52, 0xe0, 0x03, 0x4d, 0x07, 0x86, 0x0e, 0x6e, 0x8e, 0x47, 0x47, 0xc6, 0x41, 0x57, - 0x8b, 0x90, 0x72, 0x2e, 0x24, 0x95, 0x0b, 0xc1, 0x6b, 0x6d, 0x18, 0x0d, 0x0d, 0xab, 0xba, 0xcb, - 0xf5, 0xa7, 0x90, 0xf2, 0x5b, 0x43, 0x3d, 0xfe, 0x9f, 0x62, 0xe5, 0x4a, 0x1a, 0xd2, 0x7b, 0x0b, - 0x5d, 0xc2, 0xbe, 0xac, 0x59, 0x2d, 0xf1, 0x23, 0xb0, 0x25, 0xad, 0x0a, 0x26, 0x1d, 0xe4, 0x22, - 0xbf, 0x47, 0x4c, 0x87, 0x9f, 0xc3, 0x83, 0x8a, 0xd5, 0xeb, 0x92, 0x65, 0x25, 0xad, 0x3e, 0xb3, - 0xca, 0xe9, 0xb8, 0xc8, 0xdf, 0x23, 0x7b, 0x1a, 0x3c, 0x53, 0x98, 0x37, 0x85, 0xfe, 0x9b, 0x6b, - 0xca, 0x0b, 0x36, 0xdd, 0x4c, 0x8c, 0x4f, 0xa0, 0x9b, 0xab, 0xb6, 0x76, 0x90, 0xbb, 0xe3, 0xf7, - 0xc7, 0xc3, 0xa0, 0x95, 0x28, 0xd0, 0x06, 0xd2, 0x28, 0xbd, 0x1f, 0x1d, 0xb0, 0x35, 0x86, 0x1d, - 0xe8, 0xb2, 0x25, 0x2b, 0x19, 0x6f, 0x86, 0x69, 0x5a, 0xfc, 0x12, 0xac, 0x5a, 0x52, 0xc9, 0xd4, - 0x14, 0xfb, 0xe3, 0x67, 0x5b, 0xcf, 0x0d, 0x92, 0x8d, 0x8c, 0x68, 0x35, 0xf6, 0x61, 0xf7, 0x8a, - 0x4a, 0xea, 0xd8, 0x2e, 0xf2, 0xfb, 0xe3, 0x87, 0x8d, 0xab, 0xd9, 0x49, 0x30, 0xe1, 0xb7, 0x44, - 0x29, 0xda, 0x71, 0x77, 0xdb, 0x71, 0xf1, 0x11, 0xf4, 0x72, 0xc1, 0xe5, 0x82, 0xaf, 0xd9, 0x95, - 0x63, 0xb9, 0xc8, 0xbf, 0x4f, 0xfe, 0x02, 0xde, 0x19, 0x58, 0xea, 0x72, 0x0c, 0x60, 0x47, 0x17, - 0x71, 0x92, 0x26, 0x83, 0x7b, 0x18, 0xc3, 0xfe, 0xe9, 0x2c, 0x4a, 0xb2, 0xf3, 0x59, 0x9a, 0x29, - 0x70, 0x80, 0xf0, 0x10, 0x0e, 0xe3, 0xf3, 0x38, 0x8d, 0x27, 0xef, 0xb3, 0x24, 0x9d, 0xa4, 0x51, - 0x96, 0xbc, 0x8b, 0xe7, 0xf3, 0xe8, 0x74, 0xd0, 0xc1, 0x3d, 0xb0, 0x22, 0x42, 0x66, 0x64, 0xb0, - 0x33, 0xce, 0xa1, 0xfb, 0x41, 0xa7, 0xc3, 0x17, 0x60, 0xa9, 0x12, 0x8f, 0xee, 0xc8, 0x6d, 0x1e, - 0x72, 0xf4, 0x74, 0xeb, 0x4e, 0xd4, 0xe3, 0x78, 0x07, 0xdf, 0x7e, 0xfe, 0xfa, 0xde, 0xe9, 0xe3, - 0xde, 0x9f, 0x5f, 0xf7, 0x02, 0x4d, 0x33, 0x38, 0xcc, 0x45, 0xd9, 0x76, 0x4e, 0x41, 0x5d, 0x38, - 0xdf, 0x2c, 0x6a, 0x8e, 0x3e, 0xbe, 0x32, 0x82, 0x42, 0x2c, 0x29, 0x2f, 0x02, 0x51, 0x15, 0x61, - 0xc1, 0xb8, 0x5a, 0x63, 0xa8, 0x29, 0xba, 0x5a, 0xd4, 0xff, 0x7c, 0xeb, 0xd7, 0xa6, 0xbc, 0xb4, - 0x95, 0xe8, 0xe4, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x48, 0x0a, 0xba, 0x6c, 0xfa, 0x02, 0x00, - 0x00, -} diff --git a/vendor/google.golang.org/genproto/protobuf/api/api.pb.go b/vendor/google.golang.org/genproto/protobuf/api/api.pb.go deleted file mode 100644 index d41ce3c6..00000000 --- a/vendor/google.golang.org/genproto/protobuf/api/api.pb.go +++ /dev/null @@ -1,350 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/api.proto - -/* -Package api is a generated protocol buffer package. - -It is generated from these files: - google/protobuf/api.proto - -It has these top-level messages: - Api - Method - Mixin -*/ -package api - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "google.golang.org/genproto/protobuf/source_context" -import google_protobuf2 "google.golang.org/genproto/protobuf/ptype" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Api is a light-weight descriptor for an API Interface. -// -// Interfaces are also described as "protocol buffer services" in some contexts, -// such as by the "service" keyword in a .proto file, but they are different -// from API Services, which represent a concrete implementation of an interface -// as opposed to simply a description of methods and bindings. They are also -// sometimes simply referred to as "APIs" in other contexts, such as the name of -// this message itself. See https://cloud.google.com/apis/design/glossary for -// detailed terminology. -type Api struct { - // The fully qualified name of this interface, including package name - // followed by the interface's simple name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The methods of this interface, in unspecified order. - Methods []*Method `protobuf:"bytes,2,rep,name=methods" json:"methods,omitempty"` - // Any metadata attached to the interface. - Options []*google_protobuf2.Option `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"` - // A version string for this interface. If specified, must have the form - // `major-version.minor-version`, as in `1.10`. If the minor version is - // omitted, it defaults to zero. If the entire version field is empty, the - // major version is derived from the package name, as outlined below. If the - // field is not empty, the version in the package name will be verified to be - // consistent with what is provided here. - // - // The versioning schema uses [semantic - // versioning](http://semver.org) where the major version number - // indicates a breaking change and the minor version an additive, - // non-breaking change. Both version numbers are signals to users - // what to expect from different versions, and should be carefully - // chosen based on the product plan. - // - // The major version is also reflected in the package name of the - // interface, which must end in `v<major-version>`, as in - // `google.feature.v1`. For major versions 0 and 1, the suffix can - // be omitted. Zero major versions must only be used for - // experimental, non-GA interfaces. - // - // - Version string `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"` - // Source context for the protocol buffer service represented by this - // message. - SourceContext *google_protobuf.SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext" json:"source_context,omitempty"` - // Included interfaces. See [Mixin][]. - Mixins []*Mixin `protobuf:"bytes,6,rep,name=mixins" json:"mixins,omitempty"` - // The source syntax of the service. - Syntax google_protobuf2.Syntax `protobuf:"varint,7,opt,name=syntax,enum=google.protobuf.Syntax" json:"syntax,omitempty"` -} - -func (m *Api) Reset() { *m = Api{} } -func (m *Api) String() string { return proto.CompactTextString(m) } -func (*Api) ProtoMessage() {} -func (*Api) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Api) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Api) GetMethods() []*Method { - if m != nil { - return m.Methods - } - return nil -} - -func (m *Api) GetOptions() []*google_protobuf2.Option { - if m != nil { - return m.Options - } - return nil -} - -func (m *Api) GetVersion() string { - if m != nil { - return m.Version - } - return "" -} - -func (m *Api) GetSourceContext() *google_protobuf.SourceContext { - if m != nil { - return m.SourceContext - } - return nil -} - -func (m *Api) GetMixins() []*Mixin { - if m != nil { - return m.Mixins - } - return nil -} - -func (m *Api) GetSyntax() google_protobuf2.Syntax { - if m != nil { - return m.Syntax - } - return google_protobuf2.Syntax_SYNTAX_PROTO2 -} - -// Method represents a method of an API interface. -type Method struct { - // The simple name of this method. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // A URL of the input message type. - RequestTypeUrl string `protobuf:"bytes,2,opt,name=request_type_url,json=requestTypeUrl" json:"request_type_url,omitempty"` - // If true, the request is streamed. - RequestStreaming bool `protobuf:"varint,3,opt,name=request_streaming,json=requestStreaming" json:"request_streaming,omitempty"` - // The URL of the output message type. - ResponseTypeUrl string `protobuf:"bytes,4,opt,name=response_type_url,json=responseTypeUrl" json:"response_type_url,omitempty"` - // If true, the response is streamed. - ResponseStreaming bool `protobuf:"varint,5,opt,name=response_streaming,json=responseStreaming" json:"response_streaming,omitempty"` - // Any metadata attached to the method. - Options []*google_protobuf2.Option `protobuf:"bytes,6,rep,name=options" json:"options,omitempty"` - // The source syntax of this method. - Syntax google_protobuf2.Syntax `protobuf:"varint,7,opt,name=syntax,enum=google.protobuf.Syntax" json:"syntax,omitempty"` -} - -func (m *Method) Reset() { *m = Method{} } -func (m *Method) String() string { return proto.CompactTextString(m) } -func (*Method) ProtoMessage() {} -func (*Method) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Method) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Method) GetRequestTypeUrl() string { - if m != nil { - return m.RequestTypeUrl - } - return "" -} - -func (m *Method) GetRequestStreaming() bool { - if m != nil { - return m.RequestStreaming - } - return false -} - -func (m *Method) GetResponseTypeUrl() string { - if m != nil { - return m.ResponseTypeUrl - } - return "" -} - -func (m *Method) GetResponseStreaming() bool { - if m != nil { - return m.ResponseStreaming - } - return false -} - -func (m *Method) GetOptions() []*google_protobuf2.Option { - if m != nil { - return m.Options - } - return nil -} - -func (m *Method) GetSyntax() google_protobuf2.Syntax { - if m != nil { - return m.Syntax - } - return google_protobuf2.Syntax_SYNTAX_PROTO2 -} - -// Declares an API Interface to be included in this interface. The including -// interface must redeclare all the methods from the included interface, but -// documentation and options are inherited as follows: -// -// - If after comment and whitespace stripping, the documentation -// string of the redeclared method is empty, it will be inherited -// from the original method. -// -// - Each annotation belonging to the service config (http, -// visibility) which is not set in the redeclared method will be -// inherited. -// -// - If an http annotation is inherited, the path pattern will be -// modified as follows. Any version prefix will be replaced by the -// version of the including interface plus the [root][] path if -// specified. -// -// Example of a simple mixin: -// -// package google.acl.v1; -// service AccessControl { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v1/{resource=**}:getAcl"; -// } -// } -// -// package google.storage.v2; -// service Storage { -// rpc GetAcl(GetAclRequest) returns (Acl); -// -// // Get a data record. -// rpc GetData(GetDataRequest) returns (Data) { -// option (google.api.http).get = "/v2/{resource=**}"; -// } -// } -// -// Example of a mixin configuration: -// -// apis: -// - name: google.storage.v2.Storage -// mixins: -// - name: google.acl.v1.AccessControl -// -// The mixin construct implies that all methods in `AccessControl` are -// also declared with same name and request/response types in -// `Storage`. A documentation generator or annotation processor will -// see the effective `Storage.GetAcl` method after inherting -// documentation and annotations as follows: -// -// service Storage { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v2/{resource=**}:getAcl"; -// } -// ... -// } -// -// Note how the version in the path pattern changed from `v1` to `v2`. -// -// If the `root` field in the mixin is specified, it should be a -// relative path under which inherited HTTP paths are placed. Example: -// -// apis: -// - name: google.storage.v2.Storage -// mixins: -// - name: google.acl.v1.AccessControl -// root: acls -// -// This implies the following inherited HTTP annotation: -// -// service Storage { -// // Get the underlying ACL object. -// rpc GetAcl(GetAclRequest) returns (Acl) { -// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; -// } -// ... -// } -type Mixin struct { - // The fully qualified name of the interface which is included. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // If non-empty specifies a path under which inherited HTTP paths - // are rooted. - Root string `protobuf:"bytes,2,opt,name=root" json:"root,omitempty"` -} - -func (m *Mixin) Reset() { *m = Mixin{} } -func (m *Mixin) String() string { return proto.CompactTextString(m) } -func (*Mixin) ProtoMessage() {} -func (*Mixin) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Mixin) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Mixin) GetRoot() string { - if m != nil { - return m.Root - } - return "" -} - -func init() { - proto.RegisterType((*Api)(nil), "google.protobuf.Api") - proto.RegisterType((*Method)(nil), "google.protobuf.Method") - proto.RegisterType((*Mixin)(nil), "google.protobuf.Mixin") -} - -func init() { proto.RegisterFile("google/protobuf/api.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 432 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xcf, 0x8e, 0xd3, 0x30, - 0x10, 0xc6, 0x95, 0xa4, 0x4d, 0x17, 0xaf, 0xe8, 0x82, 0x91, 0xc0, 0xf4, 0xb0, 0x8a, 0x56, 0x1c, - 0x22, 0x2a, 0x12, 0x51, 0x8e, 0x9c, 0x5a, 0x84, 0x7a, 0x40, 0x88, 0x28, 0x05, 0x21, 0x71, 0xa9, - 0xd2, 0x62, 0x82, 0xa5, 0xc4, 0x63, 0x6c, 0x07, 0xda, 0xd7, 0xe1, 0xc8, 0x91, 0x37, 0xe0, 0xcd, - 0x50, 0x9c, 0xb8, 0x7f, 0xd2, 0x22, 0xb1, 0x37, 0x8f, 0xbf, 0xdf, 0x7c, 0x99, 0xf9, 0xac, 0xa0, - 0xc7, 0x39, 0x40, 0x5e, 0xd0, 0x58, 0x48, 0xd0, 0xb0, 0xaa, 0xbe, 0xc4, 0x99, 0x60, 0x91, 0x29, - 0xf0, 0x55, 0x23, 0x45, 0x56, 0x1a, 0x3d, 0xe9, 0xb2, 0x0a, 0x2a, 0xb9, 0xa6, 0xcb, 0x35, 0x70, - 0x4d, 0x37, 0xba, 0x01, 0x47, 0xa3, 0x2e, 0xa5, 0xb7, 0xa2, 0x35, 0xb9, 0xf9, 0xe3, 0x22, 0x6f, - 0x2a, 0x18, 0xc6, 0xa8, 0xc7, 0xb3, 0x92, 0x12, 0x27, 0x70, 0xc2, 0x3b, 0xa9, 0x39, 0xe3, 0xe7, - 0x68, 0x50, 0x52, 0xfd, 0x15, 0x3e, 0x2b, 0xe2, 0x06, 0x5e, 0x78, 0x39, 0x79, 0x14, 0x75, 0x06, - 0x88, 0xde, 0x1a, 0x3d, 0xb5, 0x5c, 0xdd, 0x02, 0x42, 0x33, 0xe0, 0x8a, 0x78, 0xff, 0x68, 0x79, - 0x67, 0xf4, 0xd4, 0x72, 0x98, 0xa0, 0xc1, 0x77, 0x2a, 0x15, 0x03, 0x4e, 0x7a, 0xe6, 0xe3, 0xb6, - 0xc4, 0xaf, 0xd1, 0xf0, 0x78, 0x1f, 0xd2, 0x0f, 0x9c, 0xf0, 0x72, 0x72, 0x7d, 0xe2, 0xb9, 0x30, - 0xd8, 0xab, 0x86, 0x4a, 0xef, 0xaa, 0xc3, 0x12, 0x47, 0xc8, 0x2f, 0xd9, 0x86, 0x71, 0x45, 0x7c, - 0x33, 0xd2, 0xc3, 0xd3, 0x2d, 0x6a, 0x39, 0x6d, 0x29, 0x1c, 0x23, 0x5f, 0x6d, 0xb9, 0xce, 0x36, - 0x64, 0x10, 0x38, 0xe1, 0xf0, 0xcc, 0x0a, 0x0b, 0x23, 0xa7, 0x2d, 0x76, 0xf3, 0xdb, 0x45, 0x7e, - 0x13, 0xc4, 0xd9, 0x18, 0x43, 0x74, 0x4f, 0xd2, 0x6f, 0x15, 0x55, 0x7a, 0x59, 0x07, 0xbf, 0xac, - 0x64, 0x41, 0x5c, 0xa3, 0x0f, 0xdb, 0xfb, 0xf7, 0x5b, 0x41, 0x3f, 0xc8, 0x02, 0x8f, 0xd1, 0x7d, - 0x4b, 0x2a, 0x2d, 0x69, 0x56, 0x32, 0x9e, 0x13, 0x2f, 0x70, 0xc2, 0x8b, 0xd4, 0x5a, 0x2c, 0xec, - 0x3d, 0x7e, 0x5a, 0xc3, 0x4a, 0x00, 0x57, 0x74, 0xef, 0xdb, 0x24, 0x78, 0x65, 0x05, 0x6b, 0xfc, - 0x0c, 0xe1, 0x1d, 0xbb, 0x77, 0xee, 0x1b, 0xe7, 0x9d, 0xcb, 0xde, 0xfa, 0xe0, 0x15, 0xfd, 0xff, - 0x7c, 0xc5, 0x5b, 0x87, 0x16, 0xa3, 0xbe, 0x89, 0xfd, 0x6c, 0x64, 0x18, 0xf5, 0x24, 0x80, 0x6e, - 0x63, 0x32, 0xe7, 0x59, 0x85, 0x1e, 0xac, 0xa1, 0xec, 0xda, 0xce, 0x2e, 0xa6, 0x82, 0x25, 0x75, - 0x91, 0x38, 0x9f, 0xc6, 0xad, 0x98, 0x43, 0x91, 0xf1, 0x3c, 0x02, 0x99, 0xc7, 0x39, 0xe5, 0x06, - 0x3d, 0xfa, 0x9d, 0x5e, 0x66, 0x82, 0xfd, 0x74, 0xbd, 0x79, 0x32, 0xfb, 0xe5, 0x5e, 0xcf, 0x9b, - 0x9e, 0xc4, 0xce, 0xf9, 0x91, 0x16, 0xc5, 0x1b, 0x0e, 0x3f, 0x78, 0x1d, 0x9e, 0x5a, 0xf9, 0xa6, - 0xf1, 0xc5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x07, 0x73, 0x11, 0x97, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/protobuf/field_mask/field_mask.pb.go b/vendor/google.golang.org/genproto/protobuf/field_mask/field_mask.pb.go deleted file mode 100644 index 42693d68..00000000 --- a/vendor/google.golang.org/genproto/protobuf/field_mask/field_mask.pb.go +++ /dev/null @@ -1,273 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/field_mask.proto - -/* -Package field_mask is a generated protocol buffer package. - -It is generated from these files: - google/protobuf/field_mask.proto - -It has these top-level messages: - FieldMask -*/ -package field_mask - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// `FieldMask` represents a set of symbolic field paths, for example: -// -// paths: "f.a" -// paths: "f.b.d" -// -// Here `f` represents a field in some root message, `a` and `b` -// fields in the message found in `f`, and `d` a field found in the -// message in `f.b`. -// -// Field masks are used to specify a subset of fields that should be -// returned by a get operation or modified by an update operation. -// Field masks also have a custom JSON encoding (see below). -// -// # Field Masks in Projections -// -// When used in the context of a projection, a response message or -// sub-message is filtered by the API to only contain those fields as -// specified in the mask. For example, if the mask in the previous -// example is applied to a response message as follows: -// -// f { -// a : 22 -// b { -// d : 1 -// x : 2 -// } -// y : 13 -// } -// z: 8 -// -// The result will not contain specific values for fields x,y and z -// (their value will be set to the default, and omitted in proto text -// output): -// -// -// f { -// a : 22 -// b { -// d : 1 -// } -// } -// -// A repeated field is not allowed except at the last position of a -// paths string. -// -// If a FieldMask object is not present in a get operation, the -// operation applies to all fields (as if a FieldMask of all fields -// had been specified). -// -// Note that a field mask does not necessarily apply to the -// top-level response message. In case of a REST get operation, the -// field mask applies directly to the response, but in case of a REST -// list operation, the mask instead applies to each individual message -// in the returned resource list. In case of a REST custom method, -// other definitions may be used. Where the mask applies will be -// clearly documented together with its declaration in the API. In -// any case, the effect on the returned resource/resources is required -// behavior for APIs. -// -// # Field Masks in Update Operations -// -// A field mask in update operations specifies which fields of the -// targeted resource are going to be updated. The API is required -// to only change the values of the fields as specified in the mask -// and leave the others untouched. If a resource is passed in to -// describe the updated values, the API ignores the values of all -// fields not covered by the mask. -// -// If a repeated field is specified for an update operation, the existing -// repeated values in the target resource will be overwritten by the new values. -// Note that a repeated field is only allowed in the last position of a `paths` -// string. -// -// If a sub-message is specified in the last position of the field mask for an -// update operation, then the existing sub-message in the target resource is -// overwritten. Given the target message: -// -// f { -// b { -// d : 1 -// x : 2 -// } -// c : 1 -// } -// -// And an update message: -// -// f { -// b { -// d : 10 -// } -// } -// -// then if the field mask is: -// -// paths: "f.b" -// -// then the result will be: -// -// f { -// b { -// d : 10 -// } -// c : 1 -// } -// -// However, if the update mask was: -// -// paths: "f.b.d" -// -// then the result would be: -// -// f { -// b { -// d : 10 -// x : 2 -// } -// c : 1 -// } -// -// In order to reset a field's value to the default, the field must -// be in the mask and set to the default value in the provided resource. -// Hence, in order to reset all fields of a resource, provide a default -// instance of the resource and set all fields in the mask, or do -// not provide a mask as described below. -// -// If a field mask is not present on update, the operation applies to -// all fields (as if a field mask of all fields has been specified). -// Note that in the presence of schema evolution, this may mean that -// fields the client does not know and has therefore not filled into -// the request will be reset to their default. If this is unwanted -// behavior, a specific service may require a client to always specify -// a field mask, producing an error if not. -// -// As with get operations, the location of the resource which -// describes the updated values in the request message depends on the -// operation kind. In any case, the effect of the field mask is -// required to be honored by the API. -// -// ## Considerations for HTTP REST -// -// The HTTP kind of an update operation which uses a field mask must -// be set to PATCH instead of PUT in order to satisfy HTTP semantics -// (PUT must only be used for full updates). -// -// # JSON Encoding of Field Masks -// -// In JSON, a field mask is encoded as a single string where paths are -// separated by a comma. Fields name in each path are converted -// to/from lower-camel naming conventions. -// -// As an example, consider the following message declarations: -// -// message Profile { -// User user = 1; -// Photo photo = 2; -// } -// message User { -// string display_name = 1; -// string address = 2; -// } -// -// In proto a field mask for `Profile` may look as such: -// -// mask { -// paths: "user.display_name" -// paths: "photo" -// } -// -// In JSON, the same mask is represented as below: -// -// { -// mask: "user.displayName,photo" -// } -// -// # Field Masks and Oneof Fields -// -// Field masks treat fields in oneofs just as regular fields. Consider the -// following message: -// -// message SampleMessage { -// oneof test_oneof { -// string name = 4; -// SubMessage sub_message = 9; -// } -// } -// -// The field mask can be: -// -// mask { -// paths: "name" -// } -// -// Or: -// -// mask { -// paths: "sub_message" -// } -// -// Note that oneof type names ("test_oneof" in this case) cannot be used in -// paths. -// -// ## Field Mask Verification -// -// The implementation of the all the API methods, which have any FieldMask type -// field in the request, should verify the included field paths, and return -// `INVALID_ARGUMENT` error if any path is duplicated or unmappable. -type FieldMask struct { - // The set of field mask paths. - Paths []string `protobuf:"bytes,1,rep,name=paths" json:"paths,omitempty"` -} - -func (m *FieldMask) Reset() { *m = FieldMask{} } -func (m *FieldMask) String() string { return proto.CompactTextString(m) } -func (*FieldMask) ProtoMessage() {} -func (*FieldMask) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *FieldMask) GetPaths() []string { - if m != nil { - return m.Paths - } - return nil -} - -func init() { - proto.RegisterType((*FieldMask)(nil), "google.protobuf.FieldMask") -} - -func init() { proto.RegisterFile("google/protobuf/field_mask.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 171 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcb, 0x4c, 0xcd, - 0x49, 0x89, 0xcf, 0x4d, 0x2c, 0xce, 0xd6, 0x03, 0x8b, 0x09, 0xf1, 0x43, 0x54, 0xe8, 0xc1, 0x54, - 0x28, 0x29, 0x72, 0x71, 0xba, 0x81, 0x14, 0xf9, 0x26, 0x16, 0x67, 0x0b, 0x89, 0x70, 0xb1, 0x16, - 0x24, 0x96, 0x64, 0x14, 0x4b, 0x30, 0x2a, 0x30, 0x6b, 0x70, 0x06, 0x41, 0x38, 0x4e, 0x9d, 0x8c, - 0x5c, 0xc2, 0xc9, 0xf9, 0xb9, 0x7a, 0x68, 0x5a, 0x9d, 0xf8, 0xe0, 0x1a, 0x03, 0x40, 0x42, 0x01, - 0x8c, 0x51, 0x96, 0x50, 0x25, 0xe9, 0xf9, 0x39, 0x89, 0x79, 0xe9, 0x7a, 0xf9, 0x45, 0xe9, 0xfa, - 0xe9, 0xa9, 0x79, 0x60, 0x0d, 0xd8, 0xdc, 0x64, 0x8d, 0x60, 0x2e, 0x62, 0x62, 0x76, 0x0f, 0x70, - 0x5a, 0xc5, 0x24, 0xe7, 0x0e, 0x31, 0x21, 0x00, 0xaa, 0x5a, 0x2f, 0x3c, 0x35, 0x27, 0xc7, 0x3b, - 0x2f, 0xbf, 0x3c, 0x2f, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x6c, 0x8c, 0x31, 0x20, 0x00, - 0x00, 0xff, 0xff, 0x5a, 0xdb, 0x3a, 0xc0, 0xea, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/protobuf/ptype/type.pb.go b/vendor/google.golang.org/genproto/protobuf/ptype/type.pb.go deleted file mode 100644 index b9ad3f10..00000000 --- a/vendor/google.golang.org/genproto/protobuf/ptype/type.pb.go +++ /dev/null @@ -1,538 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/type.proto - -/* -Package ptype is a generated protocol buffer package. - -It is generated from these files: - google/protobuf/type.proto - -It has these top-level messages: - Type - Field - Enum - EnumValue - Option -*/ -package ptype - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/any" -import google_protobuf1 "google.golang.org/genproto/protobuf/source_context" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The syntax in which a protocol buffer element is defined. -type Syntax int32 - -const ( - // Syntax `proto2`. - Syntax_SYNTAX_PROTO2 Syntax = 0 - // Syntax `proto3`. - Syntax_SYNTAX_PROTO3 Syntax = 1 -) - -var Syntax_name = map[int32]string{ - 0: "SYNTAX_PROTO2", - 1: "SYNTAX_PROTO3", -} -var Syntax_value = map[string]int32{ - "SYNTAX_PROTO2": 0, - "SYNTAX_PROTO3": 1, -} - -func (x Syntax) String() string { - return proto.EnumName(Syntax_name, int32(x)) -} -func (Syntax) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// Basic field types. -type Field_Kind int32 - -const ( - // Field type unknown. - Field_TYPE_UNKNOWN Field_Kind = 0 - // Field type double. - Field_TYPE_DOUBLE Field_Kind = 1 - // Field type float. - Field_TYPE_FLOAT Field_Kind = 2 - // Field type int64. - Field_TYPE_INT64 Field_Kind = 3 - // Field type uint64. - Field_TYPE_UINT64 Field_Kind = 4 - // Field type int32. - Field_TYPE_INT32 Field_Kind = 5 - // Field type fixed64. - Field_TYPE_FIXED64 Field_Kind = 6 - // Field type fixed32. - Field_TYPE_FIXED32 Field_Kind = 7 - // Field type bool. - Field_TYPE_BOOL Field_Kind = 8 - // Field type string. - Field_TYPE_STRING Field_Kind = 9 - // Field type group. Proto2 syntax only, and deprecated. - Field_TYPE_GROUP Field_Kind = 10 - // Field type message. - Field_TYPE_MESSAGE Field_Kind = 11 - // Field type bytes. - Field_TYPE_BYTES Field_Kind = 12 - // Field type uint32. - Field_TYPE_UINT32 Field_Kind = 13 - // Field type enum. - Field_TYPE_ENUM Field_Kind = 14 - // Field type sfixed32. - Field_TYPE_SFIXED32 Field_Kind = 15 - // Field type sfixed64. - Field_TYPE_SFIXED64 Field_Kind = 16 - // Field type sint32. - Field_TYPE_SINT32 Field_Kind = 17 - // Field type sint64. - Field_TYPE_SINT64 Field_Kind = 18 -) - -var Field_Kind_name = map[int32]string{ - 0: "TYPE_UNKNOWN", - 1: "TYPE_DOUBLE", - 2: "TYPE_FLOAT", - 3: "TYPE_INT64", - 4: "TYPE_UINT64", - 5: "TYPE_INT32", - 6: "TYPE_FIXED64", - 7: "TYPE_FIXED32", - 8: "TYPE_BOOL", - 9: "TYPE_STRING", - 10: "TYPE_GROUP", - 11: "TYPE_MESSAGE", - 12: "TYPE_BYTES", - 13: "TYPE_UINT32", - 14: "TYPE_ENUM", - 15: "TYPE_SFIXED32", - 16: "TYPE_SFIXED64", - 17: "TYPE_SINT32", - 18: "TYPE_SINT64", -} -var Field_Kind_value = map[string]int32{ - "TYPE_UNKNOWN": 0, - "TYPE_DOUBLE": 1, - "TYPE_FLOAT": 2, - "TYPE_INT64": 3, - "TYPE_UINT64": 4, - "TYPE_INT32": 5, - "TYPE_FIXED64": 6, - "TYPE_FIXED32": 7, - "TYPE_BOOL": 8, - "TYPE_STRING": 9, - "TYPE_GROUP": 10, - "TYPE_MESSAGE": 11, - "TYPE_BYTES": 12, - "TYPE_UINT32": 13, - "TYPE_ENUM": 14, - "TYPE_SFIXED32": 15, - "TYPE_SFIXED64": 16, - "TYPE_SINT32": 17, - "TYPE_SINT64": 18, -} - -func (x Field_Kind) String() string { - return proto.EnumName(Field_Kind_name, int32(x)) -} -func (Field_Kind) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} } - -// Whether a field is optional, required, or repeated. -type Field_Cardinality int32 - -const ( - // For fields with unknown cardinality. - Field_CARDINALITY_UNKNOWN Field_Cardinality = 0 - // For optional fields. - Field_CARDINALITY_OPTIONAL Field_Cardinality = 1 - // For required fields. Proto2 syntax only. - Field_CARDINALITY_REQUIRED Field_Cardinality = 2 - // For repeated fields. - Field_CARDINALITY_REPEATED Field_Cardinality = 3 -) - -var Field_Cardinality_name = map[int32]string{ - 0: "CARDINALITY_UNKNOWN", - 1: "CARDINALITY_OPTIONAL", - 2: "CARDINALITY_REQUIRED", - 3: "CARDINALITY_REPEATED", -} -var Field_Cardinality_value = map[string]int32{ - "CARDINALITY_UNKNOWN": 0, - "CARDINALITY_OPTIONAL": 1, - "CARDINALITY_REQUIRED": 2, - "CARDINALITY_REPEATED": 3, -} - -func (x Field_Cardinality) String() string { - return proto.EnumName(Field_Cardinality_name, int32(x)) -} -func (Field_Cardinality) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} } - -// A protocol buffer message type. -type Type struct { - // The fully qualified message name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The list of fields. - Fields []*Field `protobuf:"bytes,2,rep,name=fields" json:"fields,omitempty"` - // The list of types appearing in `oneof` definitions in this type. - Oneofs []string `protobuf:"bytes,3,rep,name=oneofs" json:"oneofs,omitempty"` - // The protocol buffer options. - Options []*Option `protobuf:"bytes,4,rep,name=options" json:"options,omitempty"` - // The source context. - SourceContext *google_protobuf1.SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext" json:"source_context,omitempty"` - // The source syntax. - Syntax Syntax `protobuf:"varint,6,opt,name=syntax,enum=google.protobuf.Syntax" json:"syntax,omitempty"` -} - -func (m *Type) Reset() { *m = Type{} } -func (m *Type) String() string { return proto.CompactTextString(m) } -func (*Type) ProtoMessage() {} -func (*Type) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Type) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Type) GetFields() []*Field { - if m != nil { - return m.Fields - } - return nil -} - -func (m *Type) GetOneofs() []string { - if m != nil { - return m.Oneofs - } - return nil -} - -func (m *Type) GetOptions() []*Option { - if m != nil { - return m.Options - } - return nil -} - -func (m *Type) GetSourceContext() *google_protobuf1.SourceContext { - if m != nil { - return m.SourceContext - } - return nil -} - -func (m *Type) GetSyntax() Syntax { - if m != nil { - return m.Syntax - } - return Syntax_SYNTAX_PROTO2 -} - -// A single field of a message type. -type Field struct { - // The field type. - Kind Field_Kind `protobuf:"varint,1,opt,name=kind,enum=google.protobuf.Field_Kind" json:"kind,omitempty"` - // The field cardinality. - Cardinality Field_Cardinality `protobuf:"varint,2,opt,name=cardinality,enum=google.protobuf.Field_Cardinality" json:"cardinality,omitempty"` - // The field number. - Number int32 `protobuf:"varint,3,opt,name=number" json:"number,omitempty"` - // The field name. - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` - // The field type URL, without the scheme, for message or enumeration - // types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - TypeUrl string `protobuf:"bytes,6,opt,name=type_url,json=typeUrl" json:"type_url,omitempty"` - // The index of the field type in `Type.oneofs`, for message or enumeration - // types. The first type has index 1; zero means the type is not in the list. - OneofIndex int32 `protobuf:"varint,7,opt,name=oneof_index,json=oneofIndex" json:"oneof_index,omitempty"` - // Whether to use alternative packed wire representation. - Packed bool `protobuf:"varint,8,opt,name=packed" json:"packed,omitempty"` - // The protocol buffer options. - Options []*Option `protobuf:"bytes,9,rep,name=options" json:"options,omitempty"` - // The field JSON name. - JsonName string `protobuf:"bytes,10,opt,name=json_name,json=jsonName" json:"json_name,omitempty"` - // The string value of the default value of this field. Proto2 syntax only. - DefaultValue string `protobuf:"bytes,11,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"` -} - -func (m *Field) Reset() { *m = Field{} } -func (m *Field) String() string { return proto.CompactTextString(m) } -func (*Field) ProtoMessage() {} -func (*Field) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Field) GetKind() Field_Kind { - if m != nil { - return m.Kind - } - return Field_TYPE_UNKNOWN -} - -func (m *Field) GetCardinality() Field_Cardinality { - if m != nil { - return m.Cardinality - } - return Field_CARDINALITY_UNKNOWN -} - -func (m *Field) GetNumber() int32 { - if m != nil { - return m.Number - } - return 0 -} - -func (m *Field) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Field) GetTypeUrl() string { - if m != nil { - return m.TypeUrl - } - return "" -} - -func (m *Field) GetOneofIndex() int32 { - if m != nil { - return m.OneofIndex - } - return 0 -} - -func (m *Field) GetPacked() bool { - if m != nil { - return m.Packed - } - return false -} - -func (m *Field) GetOptions() []*Option { - if m != nil { - return m.Options - } - return nil -} - -func (m *Field) GetJsonName() string { - if m != nil { - return m.JsonName - } - return "" -} - -func (m *Field) GetDefaultValue() string { - if m != nil { - return m.DefaultValue - } - return "" -} - -// Enum type definition. -type Enum struct { - // Enum type name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Enum value definitions. - Enumvalue []*EnumValue `protobuf:"bytes,2,rep,name=enumvalue" json:"enumvalue,omitempty"` - // Protocol buffer options. - Options []*Option `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"` - // The source context. - SourceContext *google_protobuf1.SourceContext `protobuf:"bytes,4,opt,name=source_context,json=sourceContext" json:"source_context,omitempty"` - // The source syntax. - Syntax Syntax `protobuf:"varint,5,opt,name=syntax,enum=google.protobuf.Syntax" json:"syntax,omitempty"` -} - -func (m *Enum) Reset() { *m = Enum{} } -func (m *Enum) String() string { return proto.CompactTextString(m) } -func (*Enum) ProtoMessage() {} -func (*Enum) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Enum) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Enum) GetEnumvalue() []*EnumValue { - if m != nil { - return m.Enumvalue - } - return nil -} - -func (m *Enum) GetOptions() []*Option { - if m != nil { - return m.Options - } - return nil -} - -func (m *Enum) GetSourceContext() *google_protobuf1.SourceContext { - if m != nil { - return m.SourceContext - } - return nil -} - -func (m *Enum) GetSyntax() Syntax { - if m != nil { - return m.Syntax - } - return Syntax_SYNTAX_PROTO2 -} - -// Enum value definition. -type EnumValue struct { - // Enum value name. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Enum value number. - Number int32 `protobuf:"varint,2,opt,name=number" json:"number,omitempty"` - // Protocol buffer options. - Options []*Option `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"` -} - -func (m *EnumValue) Reset() { *m = EnumValue{} } -func (m *EnumValue) String() string { return proto.CompactTextString(m) } -func (*EnumValue) ProtoMessage() {} -func (*EnumValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *EnumValue) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *EnumValue) GetNumber() int32 { - if m != nil { - return m.Number - } - return 0 -} - -func (m *EnumValue) GetOptions() []*Option { - if m != nil { - return m.Options - } - return nil -} - -// A protocol buffer option, which can be attached to a message, field, -// enumeration, etc. -type Option struct { - // The option's name. For protobuf built-in options (options defined in - // descriptor.proto), this is the short name. For example, `"map_entry"`. - // For custom options, it should be the fully-qualified name. For example, - // `"google.api.http"`. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The option's value packed in an Any message. If the value is a primitive, - // the corresponding wrapper type defined in google/protobuf/wrappers.proto - // should be used. If the value is an enum, it should be stored as an int32 - // value using the google.protobuf.Int32Value type. - Value *google_protobuf.Any `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` -} - -func (m *Option) Reset() { *m = Option{} } -func (m *Option) String() string { return proto.CompactTextString(m) } -func (*Option) ProtoMessage() {} -func (*Option) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *Option) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Option) GetValue() *google_protobuf.Any { - if m != nil { - return m.Value - } - return nil -} - -func init() { - proto.RegisterType((*Type)(nil), "google.protobuf.Type") - proto.RegisterType((*Field)(nil), "google.protobuf.Field") - proto.RegisterType((*Enum)(nil), "google.protobuf.Enum") - proto.RegisterType((*EnumValue)(nil), "google.protobuf.EnumValue") - proto.RegisterType((*Option)(nil), "google.protobuf.Option") - proto.RegisterEnum("google.protobuf.Syntax", Syntax_name, Syntax_value) - proto.RegisterEnum("google.protobuf.Field_Kind", Field_Kind_name, Field_Kind_value) - proto.RegisterEnum("google.protobuf.Field_Cardinality", Field_Cardinality_name, Field_Cardinality_value) -} - -func init() { proto.RegisterFile("google/protobuf/type.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 810 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xcd, 0x8e, 0xda, 0x56, - 0x14, 0x8e, 0x8d, 0xf1, 0xe0, 0xc3, 0xc0, 0xdc, 0xdc, 0x44, 0x89, 0x33, 0x91, 0x52, 0x44, 0xbb, - 0x40, 0x59, 0x80, 0x0a, 0xa3, 0x51, 0xa5, 0xae, 0x60, 0xf0, 0x50, 0x6b, 0x88, 0xed, 0x5e, 0x4c, - 0x93, 0xe9, 0x06, 0x79, 0xe0, 0x0e, 0x22, 0x31, 0xd7, 0x08, 0xdb, 0xed, 0xb0, 0xe8, 0x23, 0xf4, - 0x25, 0xba, 0xec, 0xba, 0x0f, 0xd1, 0x47, 0xea, 0xae, 0xd5, 0xbd, 0x06, 0x63, 0x7e, 0x2a, 0x4d, - 0x9b, 0xcd, 0x68, 0xce, 0xf7, 0x7d, 0xe7, 0xf7, 0x1e, 0x8e, 0xe1, 0x7c, 0x1a, 0x04, 0x53, 0x9f, - 0x36, 0x16, 0xcb, 0x20, 0x0a, 0xee, 0xe2, 0xfb, 0x46, 0xb4, 0x5a, 0xd0, 0xba, 0xb0, 0xf0, 0x59, - 0xc2, 0xd5, 0x37, 0xdc, 0xf9, 0xab, 0x7d, 0xb1, 0xc7, 0x56, 0x09, 0x7b, 0xfe, 0xd5, 0x3e, 0x15, - 0x06, 0xf1, 0x72, 0x4c, 0x47, 0xe3, 0x80, 0x45, 0xf4, 0x21, 0x4a, 0x54, 0xd5, 0x5f, 0x65, 0x50, - 0xdc, 0xd5, 0x82, 0x62, 0x0c, 0x0a, 0xf3, 0xe6, 0x54, 0x97, 0x2a, 0x52, 0x4d, 0x23, 0xe2, 0x7f, - 0x5c, 0x07, 0xf5, 0x7e, 0x46, 0xfd, 0x49, 0xa8, 0xcb, 0x95, 0x5c, 0xad, 0xd8, 0x7c, 0x51, 0xdf, - 0xcb, 0x5f, 0xbf, 0xe6, 0x34, 0x59, 0xab, 0xf0, 0x0b, 0x50, 0x03, 0x46, 0x83, 0xfb, 0x50, 0xcf, - 0x55, 0x72, 0x35, 0x8d, 0xac, 0x2d, 0xfc, 0x35, 0x9c, 0x04, 0x8b, 0x68, 0x16, 0xb0, 0x50, 0x57, - 0x44, 0xa0, 0x97, 0x07, 0x81, 0x6c, 0xc1, 0x93, 0x8d, 0x0e, 0x1b, 0x50, 0xde, 0xad, 0x57, 0xcf, - 0x57, 0xa4, 0x5a, 0xb1, 0xf9, 0xe6, 0xc0, 0x73, 0x20, 0x64, 0x57, 0x89, 0x8a, 0x94, 0xc2, 0xac, - 0x89, 0x1b, 0xa0, 0x86, 0x2b, 0x16, 0x79, 0x0f, 0xba, 0x5a, 0x91, 0x6a, 0xe5, 0x23, 0x89, 0x07, - 0x82, 0x26, 0x6b, 0x59, 0xf5, 0x0f, 0x15, 0xf2, 0xa2, 0x29, 0xdc, 0x00, 0xe5, 0xd3, 0x8c, 0x4d, - 0xc4, 0x40, 0xca, 0xcd, 0xd7, 0xc7, 0x5b, 0xaf, 0xdf, 0xcc, 0xd8, 0x84, 0x08, 0x21, 0xee, 0x42, - 0x71, 0xec, 0x2d, 0x27, 0x33, 0xe6, 0xf9, 0xb3, 0x68, 0xa5, 0xcb, 0xc2, 0xaf, 0xfa, 0x2f, 0x7e, - 0x57, 0x5b, 0x25, 0xc9, 0xba, 0xf1, 0x19, 0xb2, 0x78, 0x7e, 0x47, 0x97, 0x7a, 0xae, 0x22, 0xd5, - 0xf2, 0x64, 0x6d, 0xa5, 0xef, 0xa3, 0x64, 0xde, 0xe7, 0x15, 0x14, 0xf8, 0x72, 0x8c, 0xe2, 0xa5, - 0x2f, 0xfa, 0xd3, 0xc8, 0x09, 0xb7, 0x87, 0x4b, 0x1f, 0x7f, 0x01, 0x45, 0x31, 0xfc, 0xd1, 0x8c, - 0x4d, 0xe8, 0x83, 0x7e, 0x22, 0x62, 0x81, 0x80, 0x4c, 0x8e, 0xf0, 0x3c, 0x0b, 0x6f, 0xfc, 0x89, - 0x4e, 0xf4, 0x42, 0x45, 0xaa, 0x15, 0xc8, 0xda, 0xca, 0xbe, 0x95, 0xf6, 0xc8, 0xb7, 0x7a, 0x0d, - 0xda, 0xc7, 0x30, 0x60, 0x23, 0x51, 0x1f, 0x88, 0x3a, 0x0a, 0x1c, 0xb0, 0x78, 0x8d, 0x5f, 0x42, - 0x69, 0x42, 0xef, 0xbd, 0xd8, 0x8f, 0x46, 0x3f, 0x79, 0x7e, 0x4c, 0xf5, 0xa2, 0x10, 0x9c, 0xae, - 0xc1, 0x1f, 0x38, 0x56, 0xfd, 0x53, 0x06, 0x85, 0x4f, 0x12, 0x23, 0x38, 0x75, 0x6f, 0x1d, 0x63, - 0x34, 0xb4, 0x6e, 0x2c, 0xfb, 0xbd, 0x85, 0x9e, 0xe0, 0x33, 0x28, 0x0a, 0xa4, 0x6b, 0x0f, 0x3b, - 0x7d, 0x03, 0x49, 0xb8, 0x0c, 0x20, 0x80, 0xeb, 0xbe, 0xdd, 0x76, 0x91, 0x9c, 0xda, 0xa6, 0xe5, - 0x5e, 0x5e, 0xa0, 0x5c, 0xea, 0x30, 0x4c, 0x00, 0x25, 0x2b, 0x68, 0x35, 0x51, 0x3e, 0xcd, 0x71, - 0x6d, 0x7e, 0x30, 0xba, 0x97, 0x17, 0x48, 0xdd, 0x45, 0x5a, 0x4d, 0x74, 0x82, 0x4b, 0xa0, 0x09, - 0xa4, 0x63, 0xdb, 0x7d, 0x54, 0x48, 0x63, 0x0e, 0x5c, 0x62, 0x5a, 0x3d, 0xa4, 0xa5, 0x31, 0x7b, - 0xc4, 0x1e, 0x3a, 0x08, 0xd2, 0x08, 0xef, 0x8c, 0xc1, 0xa0, 0xdd, 0x33, 0x50, 0x31, 0x55, 0x74, - 0x6e, 0x5d, 0x63, 0x80, 0x4e, 0x77, 0xca, 0x6a, 0x35, 0x51, 0x29, 0x4d, 0x61, 0x58, 0xc3, 0x77, - 0xa8, 0x8c, 0x9f, 0x42, 0x29, 0x49, 0xb1, 0x29, 0xe2, 0x6c, 0x0f, 0xba, 0xbc, 0x40, 0x68, 0x5b, - 0x48, 0x12, 0xe5, 0xe9, 0x0e, 0x70, 0x79, 0x81, 0x70, 0x35, 0x82, 0x62, 0x66, 0xb7, 0xf0, 0x4b, - 0x78, 0x76, 0xd5, 0x26, 0x5d, 0xd3, 0x6a, 0xf7, 0x4d, 0xf7, 0x36, 0x33, 0x57, 0x1d, 0x9e, 0x67, - 0x09, 0xdb, 0x71, 0x4d, 0xdb, 0x6a, 0xf7, 0x91, 0xb4, 0xcf, 0x10, 0xe3, 0xfb, 0xa1, 0x49, 0x8c, - 0x2e, 0x92, 0x0f, 0x19, 0xc7, 0x68, 0xbb, 0x46, 0x17, 0xe5, 0xaa, 0x7f, 0x4b, 0xa0, 0x18, 0x2c, - 0x9e, 0x1f, 0x3d, 0x23, 0xdf, 0x80, 0x46, 0x59, 0x3c, 0x4f, 0x9e, 0x3f, 0xb9, 0x24, 0xe7, 0x07, - 0x4b, 0xc5, 0xbd, 0xc5, 0x32, 0x90, 0xad, 0x38, 0xbb, 0x8c, 0xb9, 0xff, 0x7d, 0x38, 0x94, 0xcf, - 0x3b, 0x1c, 0xf9, 0xc7, 0x1d, 0x8e, 0x8f, 0xa0, 0xa5, 0x2d, 0x1c, 0x9d, 0xc2, 0xf6, 0x87, 0x2d, - 0xef, 0xfc, 0xb0, 0xff, 0x7b, 0x8f, 0xd5, 0xef, 0x40, 0x4d, 0xa0, 0xa3, 0x89, 0xde, 0x42, 0x7e, - 0x33, 0x6a, 0xde, 0xf8, 0xf3, 0x83, 0x70, 0x6d, 0xb6, 0x22, 0x89, 0xe4, 0x6d, 0x1d, 0xd4, 0xa4, - 0x0f, 0xbe, 0x6c, 0x83, 0x5b, 0xcb, 0x6d, 0x7f, 0x18, 0x39, 0xc4, 0x76, 0xed, 0x26, 0x7a, 0xb2, - 0x0f, 0xb5, 0x90, 0xd4, 0xf9, 0x05, 0x9e, 0x8d, 0x83, 0xf9, 0x7e, 0xc4, 0x8e, 0xc6, 0x3f, 0x21, - 0x0e, 0xb7, 0x1c, 0xe9, 0xc7, 0xc6, 0x9a, 0x9d, 0x06, 0xbe, 0xc7, 0xa6, 0xf5, 0x60, 0x39, 0x6d, - 0x4c, 0x29, 0x13, 0xda, 0xed, 0xc7, 0x68, 0xc1, 0x0f, 0xd5, 0xb7, 0xe2, 0xef, 0x5f, 0x92, 0xf4, - 0x9b, 0x9c, 0xeb, 0x39, 0x9d, 0xdf, 0xe5, 0x37, 0xbd, 0xc4, 0xd5, 0xd9, 0x94, 0xfa, 0x9e, 0xfa, - 0xfe, 0x0d, 0x0b, 0x7e, 0x66, 0x3c, 0x41, 0x78, 0xa7, 0x0a, 0xff, 0xd6, 0x3f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x6d, 0x2b, 0xc0, 0xd8, 0x24, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/protobuf/source_context/source_context.pb.go b/vendor/google.golang.org/genproto/protobuf/source_context/source_context.pb.go deleted file mode 100644 index 0cedee09..00000000 --- a/vendor/google.golang.org/genproto/protobuf/source_context/source_context.pb.go +++ /dev/null @@ -1,70 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: google/protobuf/source_context.proto - -/* -Package source_context is a generated protocol buffer package. - -It is generated from these files: - google/protobuf/source_context.proto - -It has these top-level messages: - SourceContext -*/ -package source_context - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// `SourceContext` represents information about the source of a -// protobuf element, like the file in which it is defined. -type SourceContext struct { - // The path-qualified name of the .proto file that contained the associated - // protobuf element. For example: `"google/protobuf/source_context.proto"`. - FileName string `protobuf:"bytes,1,opt,name=file_name,json=fileName" json:"file_name,omitempty"` -} - -func (m *SourceContext) Reset() { *m = SourceContext{} } -func (m *SourceContext) String() string { return proto.CompactTextString(m) } -func (*SourceContext) ProtoMessage() {} -func (*SourceContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *SourceContext) GetFileName() string { - if m != nil { - return m.FileName - } - return "" -} - -func init() { - proto.RegisterType((*SourceContext)(nil), "google.protobuf.SourceContext") -} - -func init() { proto.RegisterFile("google/protobuf/source_context.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 184 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x49, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xce, 0x2f, 0x2d, - 0x4a, 0x4e, 0x8d, 0x4f, 0xce, 0xcf, 0x2b, 0x49, 0xad, 0x28, 0xd1, 0x03, 0x8b, 0x0b, 0xf1, 0x43, - 0x54, 0xe9, 0xc1, 0x54, 0x29, 0xe9, 0x70, 0xf1, 0x06, 0x83, 0x15, 0x3a, 0x43, 0xd4, 0x09, 0x49, - 0x73, 0x71, 0xa6, 0x65, 0xe6, 0xa4, 0xc6, 0xe7, 0x25, 0xe6, 0xa6, 0x4a, 0x30, 0x2a, 0x30, 0x6a, - 0x70, 0x06, 0x71, 0x80, 0x04, 0xfc, 0x12, 0x73, 0x53, 0x9d, 0xa6, 0x32, 0x72, 0x09, 0x27, 0xe7, - 0xe7, 0xea, 0xa1, 0x99, 0xe2, 0x24, 0x84, 0x62, 0x46, 0x00, 0x48, 0x38, 0x80, 0x31, 0xca, 0x11, - 0xaa, 0x2c, 0x3d, 0x3f, 0x27, 0x31, 0x2f, 0x5d, 0x2f, 0xbf, 0x28, 0x5d, 0x3f, 0x3d, 0x35, 0x0f, - 0xac, 0x09, 0x97, 0x33, 0xad, 0x51, 0xb9, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c, 0x56, 0x31, 0xc9, - 0xb9, 0x43, 0x4c, 0x0a, 0x80, 0xea, 0xd2, 0x0b, 0x4f, 0xcd, 0xc9, 0xf1, 0xce, 0xcb, 0x2f, 0xcf, - 0x0b, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0x1b, 0x67, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, - 0x5c, 0xbd, 0xa4, 0x22, 0x05, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/genproto/regen.go b/vendor/google.golang.org/genproto/regen.go deleted file mode 100644 index 9c906f20..00000000 --- a/vendor/google.golang.org/genproto/regen.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2016 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// +build ignore - -// Regen.go regenerates the genproto repository. -// -// Regen.go recursively walks through each directory named by given arguments, -// looking for all .proto files. (Symlinks are not followed.) -// If the pkg_prefix flag is not an empty string, -// any proto file without `go_package` option -// or whose option does not begin with the prefix is ignored. -// Protoc is executed on remaining files, -// one invocation per set of files declaring the same Go package. -package main - -import ( - "flag" - "fmt" - "io/ioutil" - "log" - "os" - "os/exec" - "path/filepath" - "regexp" - "strconv" - "strings" -) - -var goPkgOptRe = regexp.MustCompile(`(?m)^option go_package = (.*);`) - -func usage() { - fmt.Fprintln(os.Stderr, `usage: go run regen.go -go_out=path/to/output [-pkg_prefix=pkg/prefix] roots... - -Most users will not need to run this file directly. -To regenerate this repository, run regen.sh instead.`) - flag.PrintDefaults() -} - -func main() { - goOutDir := flag.String("go_out", "", "go_out argument to pass to protoc-gen-go") - pkgPrefix := flag.String("pkg_prefix", "", "only include proto files with go_package starting with this prefix") - flag.Usage = usage - flag.Parse() - - if *goOutDir == "" { - log.Fatal("need go_out flag") - } - - pkgFiles := make(map[string][]string) - walkFn := func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if !info.Mode().IsRegular() || !strings.HasSuffix(path, ".proto") { - return nil - } - pkg, err := goPkg(path) - if err != nil { - return err - } - pkgFiles[pkg] = append(pkgFiles[pkg], path) - return nil - } - for _, root := range flag.Args() { - if err := filepath.Walk(root, walkFn); err != nil { - log.Fatal(err) - } - } - for pkg, fnames := range pkgFiles { - if !strings.HasPrefix(pkg, *pkgPrefix) { - continue - } - if out, err := protoc(*goOutDir, flag.Args(), fnames); err != nil { - log.Fatalf("error executing protoc: %s\n%s", err, out) - } - } -} - -// goPkg reports the import path declared in the given file's -// `go_package` option. If the option is missing, goPkg returns empty string. -func goPkg(fname string) (string, error) { - content, err := ioutil.ReadFile(fname) - if err != nil { - return "", err - } - - var pkgName string - if match := goPkgOptRe.FindSubmatch(content); len(match) > 0 { - pn, err := strconv.Unquote(string(match[1])) - if err != nil { - return "", err - } - pkgName = pn - } - if p := strings.IndexRune(pkgName, ';'); p > 0 { - pkgName = pkgName[:p] - } - return pkgName, nil -} - -// protoc executes the "protoc" command on files named in fnames, -// passing go_out and include flags specified in goOut and includes respectively. -// protoc returns combined output from stdout and stderr. -func protoc(goOut string, includes, fnames []string) ([]byte, error) { - args := []string{"--go_out=plugins=grpc:" + goOut} - for _, inc := range includes { - args = append(args, "-I", inc) - } - args = append(args, fnames...) - return exec.Command("protoc", args...).CombinedOutput() -} diff --git a/vendor/google.golang.org/genproto/regen.sh b/vendor/google.golang.org/genproto/regen.sh deleted file mode 100755 index 8d9c7319..00000000 --- a/vendor/google.golang.org/genproto/regen.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash -# -# Copyright 2016 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This script rebuilds the generated code for the protocol buffers. -# To run this you will need protoc and goprotobuf installed; -# see https://github.com/golang/protobuf for instructions. -# You also need Go and Git installed. - -set -e - -PKG=google.golang.org/genproto -PROTO_REPO=https://github.com/google/protobuf -PROTO_SUBDIR=src/google/protobuf -API_REPO=https://github.com/googleapis/googleapis - -function die() { - echo 1>&2 $* - exit 1 -} - -# Sanity check that the right tools are accessible. -for tool in go git protoc protoc-gen-go; do - q=$(which $tool) || die "didn't find $tool" - echo 1>&2 "$tool: $q" -done - -root=$(go list -f '{{.Root}}' $PKG/... | head -n1) -if [ -z "$root" ]; then - die "cannot find root of $PKG" -fi - -remove_dirs= -trap 'rm -rf $remove_dirs' EXIT - -if [ -z "$PROTOBUF" ]; then - proto_repo_dir=$(mktemp -d -t regen-cds-proto.XXXXXX) - git clone -q $PROTO_REPO $proto_repo_dir & - remove_dirs="$proto_repo_dir" - # The protoc include directory is actually the "src" directory of the repo. - protodir="$proto_repo_dir/src" -else - protodir="$PROTOBUF/src" -fi - -if [ -z "$GOOGLEAPIS" ]; then - apidir=$(mktemp -d -t regen-cds-api.XXXXXX) - git clone -q $API_REPO $apidir & - remove_dirs="$remove_dirs $apidir" -else - apidir="$GOOGLEAPIS" -fi - -wait - -# Nuke everything, we'll generate them back -rm -r googleapis/ protobuf/ - -go run regen.go -go_out "$root/src" -pkg_prefix "$PKG" "$apidir" "$protodir" - -# Sanity check the build. -echo 1>&2 "Checking that the libraries build..." -go build -v ./... - -echo 1>&2 "All done!" diff --git a/vendor/google.golang.org/grpc/.github/ISSUE_TEMPLATE b/vendor/google.golang.org/grpc/.github/ISSUE_TEMPLATE deleted file mode 100644 index 642f85a1..00000000 --- a/vendor/google.golang.org/grpc/.github/ISSUE_TEMPLATE +++ /dev/null @@ -1,14 +0,0 @@ -Please answer these questions before submitting your issue. - -### What version of gRPC are you using? - -### What version of Go are you using (`go version`)? - -### What operating system (Linux, Windows, …) and version? - -### What did you do? -If possible, provide a recipe for reproducing the error. - -### What did you expect to see? - -### What did you see instead? diff --git a/vendor/google.golang.org/grpc/Documentation/compression.md b/vendor/google.golang.org/grpc/Documentation/compression.md deleted file mode 100644 index 204f880a..00000000 --- a/vendor/google.golang.org/grpc/Documentation/compression.md +++ /dev/null @@ -1,80 +0,0 @@ -# Compression - -The preferred method for configuring message compression on both clients and -servers is to use -[`encoding.RegisterCompressor`](https://godoc.org/google.golang.org/grpc/encoding#RegisterCompressor) -to register an implementation of a compression algorithm. See -`grpc/encoding/gzip/gzip.go` for an example of how to implement one. - -Once a compressor has been registered on the client-side, RPCs may be sent using -it via the -[`UseCompressor`](https://godoc.org/google.golang.org/grpc#UseCompressor) -`CallOption`. Remember that `CallOption`s may be turned into defaults for all -calls from a `ClientConn` by using the -[`WithDefaultCallOptions`](https://godoc.org/google.golang.org/grpc#WithDefaultCallOptions) -`DialOption`. If `UseCompressor` is used and the corresponding compressor has -not been installed, an `Internal` error will be returned to the application -before the RPC is sent. - -Server-side, registered compressors will be used automatically to decode request -messages and encode the responses. Servers currently always respond using the -same compression method specified by the client. If the corresponding -compressor has not been registered, an `Unimplemented` status will be returned -to the client. - -## Deprecated API - -There is a deprecated API for setting compression as well. It is not -recommended for use. However, if you were previously using it, the following -section may be helpful in understanding how it works in combination with the new -API. - -### Client-Side - -There are two legacy functions and one new function to configure compression: - -```go -func WithCompressor(grpc.Compressor) DialOption {} -func WithDecompressor(grpc.Decompressor) DialOption {} -func UseCompressor(name) CallOption {} -``` - -For outgoing requests, the following rules are applied in order: -1. If `UseCompressor` is used, messages will be compressed using the compressor - named. - * If the compressor named is not registered, an Internal error is returned - back to the client before sending the RPC. - * If UseCompressor("identity"), no compressor will be used, but "identity" - will be sent in the header to the server. -1. If `WithCompressor` is used, messages will be compressed using that - compressor implementation. -1. Otherwise, outbound messages will be uncompressed. - -For incoming responses, the following rules are applied in order: -1. If `WithDecompressor` is used and it matches the message's encoding, it will - be used. -1. If a registered compressor matches the response's encoding, it will be used. -1. Otherwise, the stream will be closed and an `Unimplemented` status error will - be returned to the application. - -### Server-Side - -There are two legacy functions to configure compression: -```go -func RPCCompressor(grpc.Compressor) ServerOption {} -func RPCDecompressor(grpc.Decompressor) ServerOption {} -``` - -For incoming requests, the following rules are applied in order: -1. If `RPCDecompressor` is used and that decompressor matches the request's - encoding: it will be used. -1. If a registered compressor matches the request's encoding, it will be used. -1. Otherwise, an `Unimplemented` status will be returned to the client. - -For outgoing responses, the following rules are applied in order: -1. If `RPCCompressor` is used, that compressor will be used to compress all - response messages. -1. If compression was used for the incoming request and a registered compressor - supports it, that same compression method will be used for the outgoing - response. -1. Otherwise, no compression will be used for the outgoing response. diff --git a/vendor/google.golang.org/grpc/Documentation/encoding.md b/vendor/google.golang.org/grpc/Documentation/encoding.md deleted file mode 100644 index 31436609..00000000 --- a/vendor/google.golang.org/grpc/Documentation/encoding.md +++ /dev/null @@ -1,146 +0,0 @@ -# Encoding - -The gRPC API for sending and receiving is based upon *messages*. However, -messages cannot be transmitted directly over a network; they must first be -converted into *bytes*. This document describes how gRPC-Go converts messages -into bytes and vice-versa for the purposes of network transmission. - -## Codecs (Serialization and Deserialization) - -A `Codec` contains code to serialize a message into a byte slice (`Marshal`) and -deserialize a byte slice back into a message (`Unmarshal`). `Codec`s are -registered by name into a global registry maintained in the `encoding` package. - -### Implementing a `Codec` - -A typical `Codec` will be implemented in its own package with an `init` function -that registers itself, and is imported anonymously. For example: - -```go -package proto - -import "google.golang.org/grpc/encoding" - -func init() { - encoding.RegisterCodec(protoCodec{}) -} - -// ... implementation of protoCodec ... -``` - -For an example, gRPC's implementation of the `proto` codec can be found in -[`encoding/proto`](https://godoc.org/google.golang.org/grpc/encoding/proto). - -### Using a `Codec` - -By default, gRPC registers and uses the "proto" codec, so it is not necessary to -do this in your own code to send and receive proto messages. To use another -`Codec` from a client or server: - -```go -package myclient - -import _ "path/to/another/codec" -``` - -`Codec`s, by definition, must be symmetric, so the same desired `Codec` should -be registered in both client and server binaries. - -On the client-side, to specify a `Codec` to use for message transmission, the -`CallOption` `CallContentSubtype` should be used as follows: - -```go - response, err := myclient.MyCall(ctx, request, grpc.CallContentSubtype("mycodec")) -``` - -As a reminder, all `CallOption`s may be converted into `DialOption`s that become -the default for all RPCs sent through a client using `grpc.WithDefaultCallOptions`: - -```go - myclient := grpc.Dial(ctx, target, grpc.WithDefaultCallOptions(grpc.CallContentSubtype("mycodec"))) -``` - -When specified in either of these ways, messages will be encoded using this -codec and sent along with headers indicating the codec (`content-type` set to -`application/grpc+<codec name>`). - -On the server-side, using a `Codec` is as simple as registering it into the -global registry (i.e. `import`ing it). If a message is encoded with the content -sub-type supported by a registered `Codec`, it will be used automatically for -decoding the request and encoding the response. Otherwise, for -backward-compatibility reasons, gRPC will attempt to use the "proto" codec. In -an upcoming change (tracked in [this -issue](https://github.com/grpc/grpc-go/issues/1824)), such requests will be -rejected with status code `Unimplemented` instead. - -## Compressors (Compression and Decompression) - -Sometimes, the resulting serialization of a message is not space-efficient, and -it may be beneficial to compress this byte stream before transmitting it over -the network. To facilitate this operation, gRPC supports a mechanism for -performing compression and decompression. - -A `Compressor` contains code to compress and decompress by wrapping `io.Writer`s -and `io.Reader`s, respectively. (The form of `Compress` and `Decompress` were -chosen to most closely match Go's standard package -[implementations](https://golang.org/pkg/compress/) of compressors. Like -`Codec`s, `Compressor`s are registered by name into a global registry maintained -in the `encoding` package. - -### Implementing a `Compressor` - -A typical `Compressor` will be implemented in its own package with an `init` -function that registers itself, and is imported anonymously. For example: - -```go -package gzip - -import "google.golang.org/grpc/encoding" - -func init() { - encoding.RegisterCompressor(compressor{}) -} - -// ... implementation of compressor ... -``` - -An implementation of a `gzip` compressor can be found in -[`encoding/gzip`](https://godoc.org/google.golang.org/grpc/encoding/gzip). - -### Using a `Compressor` - -By default, gRPC does not register or use any compressors. To use a -`Compressor` from a client or server: - -```go -package myclient - -import _ "google.golang.org/grpc/encoding/gzip" -``` - -`Compressor`s, by definition, must be symmetric, so the same desired -`Compressor` should be registered in both client and server binaries. - -On the client-side, to specify a `Compressor` to use for message transmission, -the `CallOption` `UseCompressor` should be used as follows: - -```go - response, err := myclient.MyCall(ctx, request, grpc.UseCompressor("gzip")) -``` - -As a reminder, all `CallOption`s may be converted into `DialOption`s that become -the default for all RPCs sent through a client using `grpc.WithDefaultCallOptions`: - -```go - myclient := grpc.Dial(ctx, target, grpc.WithDefaultCallOptions(grpc.UseCompresor("gzip"))) -``` - -When specified in either of these ways, messages will be compressed using this -compressor and sent along with headers indicating the compressor -(`content-coding` set to `<compressor name>`). - -On the server-side, using a `Compressor` is as simple as registering it into the -global registry (i.e. `import`ing it). If a message is compressed with the -content coding supported by a registered `Compressor`, it will be used -automatically for decompressing the request and compressing the response. -Otherwise, the request will be rejected with status code `Unimplemented`. diff --git a/vendor/google.golang.org/grpc/Documentation/gomock-example.md b/vendor/google.golang.org/grpc/Documentation/gomock-example.md deleted file mode 100644 index 54743e89..00000000 --- a/vendor/google.golang.org/grpc/Documentation/gomock-example.md +++ /dev/null @@ -1,182 +0,0 @@ -# Mocking Service for gRPC - -[Example code unary RPC](https://github.com/grpc/grpc-go/tree/master/examples/helloworld/mock_helloworld) - -[Example code streaming RPC](https://github.com/grpc/grpc-go/tree/master/examples/route_guide/mock_routeguide) - -## Why? - -To test client-side logic without the overhead of connecting to a real server. Mocking enables users to write light-weight unit tests to check functionalities on client-side without invoking RPC calls to a server. - -## Idea: Mock the client stub that connects to the server. - -We use Gomock to mock the client interface (in the generated code) and programmatically set its methods to expect and return pre-determined values. This enables users to write tests around the client logic and use this mocked stub while making RPC calls. - -## How to use Gomock? - -Documentation on Gomock can be found [here](https://github.com/golang/mock). -A quick reading of the documentation should enable users to follow the code below. - -Consider a gRPC service based on following proto file: - -```proto -//helloworld.proto - -package helloworld; - -message HelloRequest { - string name = 1; -} - -message HelloReply { - string name = 1; -} - -service Greeter { - rpc SayHello (HelloRequest) returns (HelloReply) {} -} -``` - -The generated file helloworld.pb.go will have a client interface for each service defined in the proto file. This interface will have methods corresponding to each rpc inside that service. - -```Go -type GreeterClient interface { - SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloReply, error) -} -``` - -The generated code also contains a struct that implements this interface. - -```Go -type greeterClient struct { - cc *grpc.ClientConn -} -func (c *greeterClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloReply, error){ - // ... - // gRPC specific code here - // ... -} -``` - -Along with this the generated code has a method to create an instance of this struct. -```Go -func NewGreeterClient(cc *grpc.ClientConn) GreeterClient -``` - -The user code uses this function to create an instance of the struct greeterClient which then can be used to make rpc calls to the server. -We will mock this interface GreeterClient and use an instance of that mock to make rpc calls. These calls instead of going to server will return pre-determined values. - -To create a mock we’ll use [mockgen](https://github.com/golang/mock#running-mockgen). -From the directory ``` examples/helloworld/ ``` run ``` mockgen google.golang.org/grpc/examples/helloworld/helloworld GreeterClient > mock_helloworld/hw_mock.go ``` - -Notice that in the above command we specify GreeterClient as the interface to be mocked. - -The user test code can import the package generated by mockgen along with library package gomock to write unit tests around client-side logic. -```Go -import "github.com/golang/mock/gomock" -import hwmock "google.golang.org/grpc/examples/helloworld/mock_helloworld" -``` - -An instance of the mocked interface can be created as: -```Go -mockGreeterClient := hwmock.NewMockGreeterClient(ctrl) -``` -This mocked object can be programmed to expect calls to its methods and return pre-determined values. For instance, we can program mockGreeterClient to expect a call to its method SayHello and return a HelloReply with message “Mocked RPC”. - -```Go -mockGreeterClient.EXPECT().SayHello( - gomock.Any(), // expect any value for first parameter - gomock.Any(), // expect any value for second parameter -).Return(&helloworld.HelloReply{Message: “Mocked RPC”}, nil) -``` - -gomock.Any() indicates that the parameter can have any value or type. We can indicate specific values for built-in types with gomock.Eq(). -However, if the test code needs to specify the parameter to have a proto message type, we can replace gomock.Any() with an instance of a struct that implements gomock.Matcher interface. - -```Go -type rpcMsg struct { - msg proto.Message -} - -func (r *rpcMsg) Matches(msg interface{}) bool { - m, ok := msg.(proto.Message) - if !ok { - return false - } - return proto.Equal(m, r.msg) -} - -func (r *rpcMsg) String() string { - return fmt.Sprintf("is %s", r.msg) -} - -... - -req := &helloworld.HelloRequest{Name: "unit_test"} -mockGreeterClient.EXPECT().SayHello( - gomock.Any(), - &rpcMsg{msg: req}, -).Return(&helloworld.HelloReply{Message: "Mocked Interface"}, nil) -``` - -## Mock streaming RPCs: - -For our example we consider the case of bi-directional streaming RPCs. Concretely, we'll write a test for RouteChat function from the route guide example to demonstrate how to write mocks for streams. - -RouteChat is a bi-directional streaming RPC, which means calling RouteChat returns a stream that can __Send__ and __Recv__ messages to and from the server, respectively. We'll start by creating a mock of this stream interface returned by RouteChat and then we'll mock the client interface and set expectation on the method RouteChat to return our mocked stream. - -### Generating mocking code: -Like before we'll use [mockgen](https://github.com/golang/mock#running-mockgen). From the `examples/route_guide` directory run: `mockgen google.golang.org/grpc/examples/route_guide/routeguide RouteGuideClient,RouteGuide_RouteChatClient > mock_route_guide/rg_mock.go` - -Notice that we are mocking both client(`RouteGuideClient`) and stream(`RouteGuide_RouteChatClient`) interfaces here. - -This will create a file `rg_mock.go` under directory `mock_route_guide`. This file contins all the mocking code we need to write our test. - -In our test code, like before, we import the this mocking code along with the generated code - -```go -import ( - rgmock "google.golang.org/grpc/examples/route_guide/mock_routeguide" - rgpb "google.golang.org/grpc/examples/route_guide/routeguide" -) -``` - -Now conside a test that takes the RouteGuide client object as a parameter, makes a RouteChat rpc call and sends a message on the resulting stream. Furthermore, this test expects to see the same message to be received on the stream. - -```go -var msg = ... - -// Creates a RouteChat call and sends msg on it. -// Checks if the received message was equal to msg. -func testRouteChat(client rgb.RouteChatClient) error{ - ... -} -``` - -We can inject our mock in here by simply passing it as an argument to the method. - -Creating mock for stream interface: - -```go - stream := rgmock.NewMockRouteGuide_RouteChatClient(ctrl) -} -``` - -Setting Expectations: - -```go - stream.EXPECT().Send(gomock.Any()).Return(nil) - stream.EXPECT().Recv().Return(msg, nil) -``` - -Creating mock for client interface: - -```go - rgclient := rgmock.NewMockRouteGuideClient(ctrl) -``` - -Setting Expectations: - -```go - rgclient.EXPECT().RouteChat(gomock.Any()).Return(stream, nil) -``` diff --git a/vendor/google.golang.org/grpc/Documentation/grpc-auth-support.md b/vendor/google.golang.org/grpc/Documentation/grpc-auth-support.md deleted file mode 100644 index 1b6b14e9..00000000 --- a/vendor/google.golang.org/grpc/Documentation/grpc-auth-support.md +++ /dev/null @@ -1,41 +0,0 @@ -# Authentication - -As outlined in the [gRPC authentication guide](https://grpc.io/docs/guides/auth.html) there are a number of different mechanisms for asserting identity between an client and server. We'll present some code-samples here demonstrating how to provide TLS support encryption and identity assertions as well as passing OAuth2 tokens to services that support it. - -# Enabling TLS on a gRPC client - -```Go -conn, err := grpc.Dial(serverAddr, grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, ""))) -``` - -# Enabling TLS on a gRPC server - -```Go -creds, err := credentials.NewServerTLSFromFile(certFile, keyFile) -if err != nil { - log.Fatalf("Failed to generate credentials %v", err) -} -lis, err := net.Listen("tcp", ":0") -server := grpc.NewServer(grpc.Creds(creds)) -... -server.Serve(lis) -``` - -# Authenticating with Google - -## Google Compute Engine (GCE) - -```Go -conn, err := grpc.Dial(serverAddr, grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, "")), grpc.WithPerRPCCredentials(oauth.NewComputeEngine())) -``` - -## JWT - -```Go -jwtCreds, err := oauth.NewServiceAccountFromFile(*serviceAccountKeyFile, *oauthScope) -if err != nil { - log.Fatalf("Failed to create JWT credentials: %v", err) -} -conn, err := grpc.Dial(serverAddr, grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, "")), grpc.WithPerRPCCredentials(jwtCreds)) -``` - diff --git a/vendor/google.golang.org/grpc/Documentation/grpc-metadata.md b/vendor/google.golang.org/grpc/Documentation/grpc-metadata.md deleted file mode 100644 index 971c469a..00000000 --- a/vendor/google.golang.org/grpc/Documentation/grpc-metadata.md +++ /dev/null @@ -1,227 +0,0 @@ -# Metadata - -gRPC supports sending metadata between client and server. -This doc shows how to send and receive metadata in gRPC-go. - -## Background - -Four kinds of service method: - -- [Unary RPC](https://grpc.io/docs/guides/concepts.html#unary-rpc) -- [Server streaming RPC](https://grpc.io/docs/guides/concepts.html#server-streaming-rpc) -- [Client streaming RPC](https://grpc.io/docs/guides/concepts.html#client-streaming-rpc) -- [Bidirectional streaming RPC](https://grpc.io/docs/guides/concepts.html#bidirectional-streaming-rpc) - -And concept of [metadata](https://grpc.io/docs/guides/concepts.html#metadata). - -## Constructing metadata - -A metadata can be created using package [metadata](https://godoc.org/google.golang.org/grpc/metadata). -The type MD is actually a map from string to a list of strings: - -```go -type MD map[string][]string -``` - -Metadata can be read like a normal map. -Note that the value type of this map is `[]string`, -so that users can attach multiple values using a single key. - -### Creating a new metadata - -A metadata can be created from a `map[string]string` using function `New`: - -```go -md := metadata.New(map[string]string{"key1": "val1", "key2": "val2"}) -``` - -Another way is to use `Pairs`. -Values with the same key will be merged into a list: - -```go -md := metadata.Pairs( - "key1", "val1", - "key1", "val1-2", // "key1" will have map value []string{"val1", "val1-2"} - "key2", "val2", -) -``` - -__Note:__ all the keys will be automatically converted to lowercase, -so "key1" and "kEy1" will be the same key and their values will be merged into the same list. -This happens for both `New` and `Pairs`. - -### Storing binary data in metadata - -In metadata, keys are always strings. But values can be strings or binary data. -To store binary data value in metadata, simply add "-bin" suffix to the key. -The values with "-bin" suffixed keys will be encoded when creating the metadata: - -```go -md := metadata.Pairs( - "key", "string value", - "key-bin", string([]byte{96, 102}), // this binary data will be encoded (base64) before sending - // and will be decoded after being transferred. -) -``` - -## Retrieving metadata from context - -Metadata can be retrieved from context using `FromIncomingContext`: - -```go -func (s *server) SomeRPC(ctx context.Context, in *pb.SomeRequest) (*pb.SomeResponse, err) { - md, ok := metadata.FromIncomingContext(ctx) - // do something with metadata -} -``` - -## Sending and receiving metadata - client side - -[//]: # "TODO: uncomment next line after example source added" -[//]: # "Real metadata sending and receiving examples are available [here](TODO:example_dir)." - -### Sending metadata - -There are two ways to send metadata to the server. The recommended way is to append kv pairs to the context using -`AppendToOutgoingContext`. This can be used with or without existing metadata on the context. When there is no prior -metadata, metadata is added; when metadata already exists on the context, kv pairs are merged in. - -```go -// create a new context with some metadata -ctx := metadata.AppendToOutgoingContext(ctx, "k1", "v1", "k1", "v2", "k2", "v3") - -// later, add some more metadata to the context (e.g. in an interceptor) -ctx := metadata.AppendToOutgoingContext(ctx, "k3", "v4") - -// make unary RPC -response, err := client.SomeRPC(ctx, someRequest) - -// or make streaming RPC -stream, err := client.SomeStreamingRPC(ctx) -``` - -Alternatively, metadata may be attached to the context using `NewOutgoingContext`. However, this -replaces any existing metadata in the context, so care must be taken to preserve the existing -metadata if desired. This is slower than using `AppendToOutgoingContext`. An example of this -is below: - -```go -// create a new context with some metadata -md := metadata.Pairs("k1", "v1", "k1", "v2", "k2", "v3") -ctx := metadata.NewOutgoingContext(context.Background(), md) - -// later, add some more metadata to the context (e.g. in an interceptor) -md, _ := metadata.FromOutgoingContext(ctx) -newMD := metadata.Pairs("k3", "v3") -ctx = metadata.NewContext(ctx, metadata.Join(metadata.New(send), newMD)) - -// make unary RPC -response, err := client.SomeRPC(ctx, someRequest) - -// or make streaming RPC -stream, err := client.SomeStreamingRPC(ctx) -``` - -### Receiving metadata - -Metadata that a client can receive includes header and trailer. - -#### Unary call - -Header and trailer sent along with a unary call can be retrieved using function [Header](https://godoc.org/google.golang.org/grpc#Header) and [Trailer](https://godoc.org/google.golang.org/grpc#Trailer) in [CallOption](https://godoc.org/google.golang.org/grpc#CallOption): - -```go -var header, trailer metadata.MD // variable to store header and trailer -r, err := client.SomeRPC( - ctx, - someRequest, - grpc.Header(&header), // will retrieve header - grpc.Trailer(&trailer), // will retrieve trailer -) - -// do something with header and trailer -``` - -#### Streaming call - -For streaming calls including: - -- Server streaming RPC -- Client streaming RPC -- Bidirectional streaming RPC - -Header and trailer can be retrieved from the returned stream using function `Header` and `Trailer` in interface [ClientStream](https://godoc.org/google.golang.org/grpc#ClientStream): - -```go -stream, err := client.SomeStreamingRPC(ctx) - -// retrieve header -header, err := stream.Header() - -// retrieve trailer -trailer := stream.Trailer() - -``` - -## Sending and receiving metadata - server side - -[//]: # "TODO: uncomment next line after example source added" -[//]: # "Real metadata sending and receiving examples are available [here](TODO:example_dir)." - -### Receiving metadata - -To read metadata sent by the client, the server needs to retrieve it from RPC context. -If it is a unary call, the RPC handler's context can be used. -For streaming calls, the server needs to get context from the stream. - -#### Unary call - -```go -func (s *server) SomeRPC(ctx context.Context, in *pb.someRequest) (*pb.someResponse, error) { - md, ok := metadata.FromIncomingContext(ctx) - // do something with metadata -} -``` - -#### Streaming call - -```go -func (s *server) SomeStreamingRPC(stream pb.Service_SomeStreamingRPCServer) error { - md, ok := metadata.FromIncomingContext(stream.Context()) // get context from stream - // do something with metadata -} -``` - -### Sending metadata - -#### Unary call - -To send header and trailer to client in unary call, the server can call [SendHeader](https://godoc.org/google.golang.org/grpc#SendHeader) and [SetTrailer](https://godoc.org/google.golang.org/grpc#SetTrailer) functions in module [grpc](https://godoc.org/google.golang.org/grpc). -These two functions take a context as the first parameter. -It should be the RPC handler's context or one derived from it: - -```go -func (s *server) SomeRPC(ctx context.Context, in *pb.someRequest) (*pb.someResponse, error) { - // create and send header - header := metadata.Pairs("header-key", "val") - grpc.SendHeader(ctx, header) - // create and set trailer - trailer := metadata.Pairs("trailer-key", "val") - grpc.SetTrailer(ctx, trailer) -} -``` - -#### Streaming call - -For streaming calls, header and trailer can be sent using function `SendHeader` and `SetTrailer` in interface [ServerStream](https://godoc.org/google.golang.org/grpc#ServerStream): - -```go -func (s *server) SomeStreamingRPC(stream pb.Service_SomeStreamingRPCServer) error { - // create and send header - header := metadata.Pairs("header-key", "val") - stream.SendHeader(header) - // create and set trailer - trailer := metadata.Pairs("trailer-key", "val") - stream.SetTrailer(trailer) -} -``` diff --git a/vendor/google.golang.org/grpc/Documentation/server-reflection-tutorial.md b/vendor/google.golang.org/grpc/Documentation/server-reflection-tutorial.md deleted file mode 100644 index ca8e30cb..00000000 --- a/vendor/google.golang.org/grpc/Documentation/server-reflection-tutorial.md +++ /dev/null @@ -1,152 +0,0 @@ -# gRPC Server Reflection Tutorial - -gRPC Server Reflection provides information about publicly-accessible gRPC -services on a server, and assists clients at runtime to construct RPC -requests and responses without precompiled service information. It is used by -gRPC CLI, which can be used to introspect server protos and send/receive test -RPCs. - -## Enable Server Reflection - -gRPC-go Server Reflection is implemented in package [reflection](https://github.com/grpc/grpc-go/tree/master/reflection). To enable server reflection, you need to import this package and register reflection service on your gRPC server. - -For example, to enable server reflection in `example/helloworld`, we need to make the following changes: - -```diff ---- a/examples/helloworld/greeter_server/main.go -+++ b/examples/helloworld/greeter_server/main.go -@@ -40,6 +40,7 @@ import ( - "golang.org/x/net/context" - "google.golang.org/grpc" - pb "google.golang.org/grpc/examples/helloworld/helloworld" -+ "google.golang.org/grpc/reflection" - ) - - const ( -@@ -61,6 +62,8 @@ func main() { - } - s := grpc.NewServer() - pb.RegisterGreeterServer(s, &server{}) -+ // Register reflection service on gRPC server. -+ reflection.Register(s) - if err := s.Serve(lis); err != nil { - log.Fatalf("failed to serve: %v", err) - } -``` - -We have made this change in `example/helloworld`, and we will use it as an example to show the use of gRPC server reflection and gRPC CLI in this tutorial. - -## gRPC CLI - -After enabling Server Reflection in a server application, you can use gRPC CLI to check its services. -gRPC CLI is only available in c++. Instructions on how to use gRPC CLI can be found at [command_line_tool.md](https://github.com/grpc/grpc/blob/master/doc/command_line_tool.md). - -To build gRPC CLI: - -```sh -git clone https://github.com/grpc/grpc -cd grpc -make grpc_cli -cd bins/opt # grpc_cli is in directory bins/opt/ -``` - -## Use gRPC CLI to check services - -First, start the helloworld server in grpc-go directory: - -```sh -$ cd <grpc-go-directory> -$ go run examples/helloworld/greeter_server/main.go -``` - -Open a new terminal and make sure you are in the directory where grpc_cli lives: - -```sh -$ cd <grpc-cpp-dirctory>/bins/opt -``` - -### List services - -`grpc_cli ls` command lists services and methods exposed at a given port: - -- List all the services exposed at a given port - - ```sh - $ ./grpc_cli ls localhost:50051 - ``` - - output: - ```sh - helloworld.Greeter - grpc.reflection.v1alpha.ServerReflection - ``` - -- List one service with details - - `grpc_cli ls` command inspects a service given its full name (in the format of - \<package\>.\<service\>). It can print information with a long listing format - when `-l` flag is set. This flag can be used to get more details about a - service. - - ```sh - $ ./grpc_cli ls localhost:50051 helloworld.Greeter -l - ``` - - output: - ```sh - filename: helloworld.proto - package: helloworld; - service Greeter { - rpc SayHello(helloworld.HelloRequest) returns (helloworld.HelloReply) {} - } - - ``` - -### List methods - -- List one method with details - - `grpc_cli ls` command also inspects a method given its full name (in the - format of \<package\>.\<service\>.\<method\>). - - ```sh - $ ./grpc_cli ls localhost:50051 helloworld.Greeter.SayHello -l - ``` - - output: - ```sh - rpc SayHello(helloworld.HelloRequest) returns (helloworld.HelloReply) {} - ``` - -### Inspect message types - -We can use`grpc_cli type` command to inspect request/response types given the -full name of the type (in the format of \<package\>.\<type\>). - -- Get information about the request type - - ```sh - $ ./grpc_cli type localhost:50051 helloworld.HelloRequest - ``` - - output: - ```sh - message HelloRequest { - optional string name = 1[json_name = "name"]; - } - ``` - -### Call a remote method - -We can send RPCs to a server and get responses using `grpc_cli call` command. - -- Call a unary method - - ```sh - $ ./grpc_cli call localhost:50051 SayHello "name: 'gRPC CLI'" - ``` - - output: - ```sh - message: "Hello gRPC CLI" - ``` diff --git a/vendor/google.golang.org/grpc/Documentation/versioning.md b/vendor/google.golang.org/grpc/Documentation/versioning.md deleted file mode 100644 index 03e868c0..00000000 --- a/vendor/google.golang.org/grpc/Documentation/versioning.md +++ /dev/null @@ -1,34 +0,0 @@ -# Versioning and Releases - -Note: This document references terminology defined at http://semver.org. - -## Release Frequency - -Regular MINOR releases of gRPC-Go are performed every six weeks. Patch releases -to the previous two MINOR releases may be performed on demand or if serious -security problems are discovered. - -## Versioning Policy - -The gRPC-Go versioning policy follows the Semantic Versioning 2.0.0 -specification, with the following exceptions: - -- A MINOR version will not _necessarily_ add new functionality. - -- MINOR releases will not break backward compatibility, except in the following -circumstances: - - - An API was marked as EXPERIMENTAL upon its introduction. - - An API was marked as DEPRECATED in the initial MAJOR release. - - An API is inherently flawed and cannot provide correct or secure behavior. - - In these cases, APIs MAY be changed or removed without a MAJOR release. -Otherwise, backward compatibility will be preserved by MINOR releases. - - For an API marked as DEPRECATED, an alternative will be available (if -appropriate) for at least three months prior to its removal. - -## Release History - -Please see our release history on GitHub: -https://github.com/grpc/grpc-go/releases diff --git a/vendor/google.golang.org/grpc/backoff_test.go b/vendor/google.golang.org/grpc/backoff_test.go deleted file mode 100644 index 37e8e3f6..00000000 --- a/vendor/google.golang.org/grpc/backoff_test.go +++ /dev/null @@ -1,29 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import "testing" - -func TestBackoffConfigDefaults(t *testing.T) { - b := BackoffConfig{} - setDefaults(&b) - if b != DefaultBackoffConfig { - t.Fatalf("expected BackoffConfig to pickup default parameters: %v != %v", b, DefaultBackoffConfig) - } -} diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin_test.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin_test.go deleted file mode 100644 index 59cac4b1..00000000 --- a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin_test.go +++ /dev/null @@ -1,477 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package roundrobin_test - -import ( - "fmt" - "net" - "sync" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/balancer/roundrobin" - "google.golang.org/grpc/codes" - _ "google.golang.org/grpc/grpclog/glogger" - "google.golang.org/grpc/peer" - "google.golang.org/grpc/resolver" - "google.golang.org/grpc/resolver/manual" - "google.golang.org/grpc/status" - testpb "google.golang.org/grpc/test/grpc_testing" - "google.golang.org/grpc/test/leakcheck" -) - -type testServer struct { - testpb.TestServiceServer -} - -func (s *testServer) EmptyCall(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - return &testpb.Empty{}, nil -} - -func (s *testServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallServer) error { - return nil -} - -type test struct { - servers []*grpc.Server - addresses []string -} - -func (t *test) cleanup() { - for _, s := range t.servers { - s.Stop() - } -} - -func startTestServers(count int) (_ *test, err error) { - t := &test{} - - defer func() { - if err != nil { - for _, s := range t.servers { - s.Stop() - } - } - }() - for i := 0; i < count; i++ { - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - return nil, fmt.Errorf("Failed to listen %v", err) - } - - s := grpc.NewServer() - testpb.RegisterTestServiceServer(s, &testServer{}) - t.servers = append(t.servers, s) - t.addresses = append(t.addresses, lis.Addr().String()) - - go func(s *grpc.Server, l net.Listener) { - s.Serve(l) - }(s, lis) - } - - return t, nil -} - -func TestOneBackend(t *testing.T) { - defer leakcheck.Check(t) - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - test, err := startTestServers(1) - if err != nil { - t.Fatalf("failed to start servers: %v", err) - } - defer test.cleanup() - - cc, err := grpc.Dial(r.Scheme()+":///test.server", grpc.WithInsecure(), grpc.WithBalancerName(roundrobin.Name)) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - testc := testpb.NewTestServiceClient(cc) - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - r.NewAddress([]resolver.Address{{Addr: test.addresses[0]}}) - // The second RPC should succeed. - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } -} - -func TestBackendsRoundRobin(t *testing.T) { - defer leakcheck.Check(t) - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - backendCount := 5 - test, err := startTestServers(backendCount) - if err != nil { - t.Fatalf("failed to start servers: %v", err) - } - defer test.cleanup() - - cc, err := grpc.Dial(r.Scheme()+":///test.server", grpc.WithInsecure(), grpc.WithBalancerName(roundrobin.Name)) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - testc := testpb.NewTestServiceClient(cc) - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - var resolvedAddrs []resolver.Address - for i := 0; i < backendCount; i++ { - resolvedAddrs = append(resolvedAddrs, resolver.Address{Addr: test.addresses[i]}) - } - - r.NewAddress(resolvedAddrs) - var p peer.Peer - // Make sure connections to all servers are up. - for si := 0; si < backendCount; si++ { - var connected bool - for i := 0; i < 1000; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(&p)); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } - if p.Addr.String() == test.addresses[si] { - connected = true - break - } - time.Sleep(time.Millisecond) - } - if !connected { - t.Fatalf("Connection to %v was not up after more than 1 second", test.addresses[si]) - } - } - - for i := 0; i < 3*backendCount; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(&p)); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } - if p.Addr.String() != test.addresses[i%backendCount] { - t.Fatalf("Index %d: want peer %v, got peer %v", i, test.addresses[i%backendCount], p.Addr.String()) - } - } -} - -func TestAddressesRemoved(t *testing.T) { - defer leakcheck.Check(t) - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - test, err := startTestServers(1) - if err != nil { - t.Fatalf("failed to start servers: %v", err) - } - defer test.cleanup() - - cc, err := grpc.Dial(r.Scheme()+":///test.server", grpc.WithInsecure(), grpc.WithBalancerName(roundrobin.Name)) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - testc := testpb.NewTestServiceClient(cc) - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - r.NewAddress([]resolver.Address{{Addr: test.addresses[0]}}) - // The second RPC should succeed. - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } - - r.NewAddress([]resolver.Address{}) - for i := 0; i < 1000; i++ { - ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) - defer cancel() - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)); status.Code(err) == codes.DeadlineExceeded { - return - } - time.Sleep(time.Millisecond) - } - t.Fatalf("No RPC failed after removing all addresses, want RPC to fail with DeadlineExceeded") -} - -func TestCloseWithPendingRPC(t *testing.T) { - defer leakcheck.Check(t) - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - test, err := startTestServers(1) - if err != nil { - t.Fatalf("failed to start servers: %v", err) - } - defer test.cleanup() - - cc, err := grpc.Dial(r.Scheme()+":///test.server", grpc.WithInsecure(), grpc.WithBalancerName(roundrobin.Name)) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - testc := testpb.NewTestServiceClient(cc) - - var wg sync.WaitGroup - for i := 0; i < 3; i++ { - wg.Add(1) - go func() { - defer wg.Done() - // This RPC blocks until cc is closed. - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}); status.Code(err) == codes.DeadlineExceeded { - t.Errorf("RPC failed because of deadline after cc is closed; want error the client connection is closing") - } - cancel() - }() - } - cc.Close() - wg.Wait() -} - -func TestNewAddressWhileBlocking(t *testing.T) { - defer leakcheck.Check(t) - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - test, err := startTestServers(1) - if err != nil { - t.Fatalf("failed to start servers: %v", err) - } - defer test.cleanup() - - cc, err := grpc.Dial(r.Scheme()+":///test.server", grpc.WithInsecure(), grpc.WithBalancerName(roundrobin.Name)) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - testc := testpb.NewTestServiceClient(cc) - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - r.NewAddress([]resolver.Address{{Addr: test.addresses[0]}}) - // The second RPC should succeed. - ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second) - defer cancel() - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, nil", err) - } - - r.NewAddress([]resolver.Address{}) - - var wg sync.WaitGroup - for i := 0; i < 3; i++ { - wg.Add(1) - go func() { - defer wg.Done() - // This RPC blocks until NewAddress is called. - testc.EmptyCall(context.Background(), &testpb.Empty{}) - }() - } - time.Sleep(50 * time.Millisecond) - r.NewAddress([]resolver.Address{{Addr: test.addresses[0]}}) - wg.Wait() -} - -func TestOneServerDown(t *testing.T) { - defer leakcheck.Check(t) - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - backendCount := 3 - test, err := startTestServers(backendCount) - if err != nil { - t.Fatalf("failed to start servers: %v", err) - } - defer test.cleanup() - - cc, err := grpc.Dial(r.Scheme()+":///test.server", grpc.WithInsecure(), grpc.WithBalancerName(roundrobin.Name), grpc.WithWaitForHandshake()) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - testc := testpb.NewTestServiceClient(cc) - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - var resolvedAddrs []resolver.Address - for i := 0; i < backendCount; i++ { - resolvedAddrs = append(resolvedAddrs, resolver.Address{Addr: test.addresses[i]}) - } - - r.NewAddress(resolvedAddrs) - var p peer.Peer - // Make sure connections to all servers are up. - for si := 0; si < backendCount; si++ { - var connected bool - for i := 0; i < 1000; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(&p)); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } - if p.Addr.String() == test.addresses[si] { - connected = true - break - } - time.Sleep(time.Millisecond) - } - if !connected { - t.Fatalf("Connection to %v was not up after more than 1 second", test.addresses[si]) - } - } - - for i := 0; i < 3*backendCount; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(&p)); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } - if p.Addr.String() != test.addresses[i%backendCount] { - t.Fatalf("Index %d: want peer %v, got peer %v", i, test.addresses[i%backendCount], p.Addr.String()) - } - } - - // Stop one server, RPCs should roundrobin among the remaining servers. - backendCount-- - test.servers[backendCount].Stop() - // Loop until see server[backendCount-1] twice without seeing server[backendCount]. - var targetSeen int - for i := 0; i < 1000; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(&p)); err != nil { - targetSeen = 0 - t.Logf("EmptyCall() = _, %v, want _, <nil>", err) - // Due to a race, this RPC could possibly get the connection that - // was closing, and this RPC may fail. Keep trying when this - // happens. - continue - } - switch p.Addr.String() { - case test.addresses[backendCount-1]: - targetSeen++ - case test.addresses[backendCount]: - // Reset targetSeen if peer is server[backendCount]. - targetSeen = 0 - } - // Break to make sure the last picked address is server[-1], so the following for loop won't be flaky. - if targetSeen >= 2 { - break - } - } - if targetSeen != 2 { - t.Fatal("Failed to see server[backendCount-1] twice without seeing server[backendCount]") - } - for i := 0; i < 3*backendCount; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(&p)); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } - if p.Addr.String() != test.addresses[i%backendCount] { - t.Errorf("Index %d: want peer %v, got peer %v", i, test.addresses[i%backendCount], p.Addr.String()) - } - } -} - -func TestAllServersDown(t *testing.T) { - defer leakcheck.Check(t) - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - backendCount := 3 - test, err := startTestServers(backendCount) - if err != nil { - t.Fatalf("failed to start servers: %v", err) - } - defer test.cleanup() - - cc, err := grpc.Dial(r.Scheme()+":///test.server", grpc.WithInsecure(), grpc.WithBalancerName(roundrobin.Name), grpc.WithWaitForHandshake()) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - testc := testpb.NewTestServiceClient(cc) - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - if _, err := testc.EmptyCall(ctx, &testpb.Empty{}); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - var resolvedAddrs []resolver.Address - for i := 0; i < backendCount; i++ { - resolvedAddrs = append(resolvedAddrs, resolver.Address{Addr: test.addresses[i]}) - } - - r.NewAddress(resolvedAddrs) - var p peer.Peer - // Make sure connections to all servers are up. - for si := 0; si < backendCount; si++ { - var connected bool - for i := 0; i < 1000; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(&p)); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } - if p.Addr.String() == test.addresses[si] { - connected = true - break - } - time.Sleep(time.Millisecond) - } - if !connected { - t.Fatalf("Connection to %v was not up after more than 1 second", test.addresses[si]) - } - } - - for i := 0; i < 3*backendCount; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(&p)); err != nil { - t.Fatalf("EmptyCall() = _, %v, want _, <nil>", err) - } - if p.Addr.String() != test.addresses[i%backendCount] { - t.Fatalf("Index %d: want peer %v, got peer %v", i, test.addresses[i%backendCount], p.Addr.String()) - } - } - - // All servers are stopped, failfast RPC should fail with unavailable. - for i := 0; i < backendCount; i++ { - test.servers[i].Stop() - } - time.Sleep(100 * time.Millisecond) - for i := 0; i < 1000; i++ { - if _, err := testc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) == codes.Unavailable { - return - } - time.Sleep(time.Millisecond) - } - t.Fatalf("Failfast RPCs didn't fail with Unavailable after all servers are stopped") -} diff --git a/vendor/google.golang.org/grpc/balancer_switching_test.go b/vendor/google.golang.org/grpc/balancer_switching_test.go deleted file mode 100644 index 0d8b2a54..00000000 --- a/vendor/google.golang.org/grpc/balancer_switching_test.go +++ /dev/null @@ -1,443 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "fmt" - "math" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc/balancer/roundrobin" - _ "google.golang.org/grpc/grpclog/glogger" - "google.golang.org/grpc/resolver" - "google.golang.org/grpc/resolver/manual" - "google.golang.org/grpc/test/leakcheck" -) - -func checkPickFirst(cc *ClientConn, servers []*server) error { - var ( - req = "port" - reply string - err error - ) - connected := false - for i := 0; i < 5000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); errorDesc(err) == servers[0].port { - if connected { - // connected is set to false if peer is not server[0]. So if - // connected is true here, this is the second time we saw - // server[0] in a row. Break because pickfirst is in effect. - break - } - connected = true - } else { - connected = false - } - time.Sleep(time.Millisecond) - } - if !connected { - return fmt.Errorf("pickfirst is not in effect after 5 second, EmptyCall() = _, %v, want _, %v", err, servers[0].port) - } - // The following RPCs should all succeed with the first server. - for i := 0; i < 3; i++ { - err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc) - if errorDesc(err) != servers[0].port { - return fmt.Errorf("Index %d: want peer %v, got peer %v", i, servers[0].port, err) - } - } - return nil -} - -func checkRoundRobin(cc *ClientConn, servers []*server) error { - var ( - req = "port" - reply string - err error - ) - - // Make sure connections to all servers are up. - for i := 0; i < 2; i++ { - // Do this check twice, otherwise the first RPC's transport may still be - // picked by the closing pickfirst balancer, and the test becomes flaky. - for _, s := range servers { - var up bool - for i := 0; i < 5000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); errorDesc(err) == s.port { - up = true - break - } - time.Sleep(time.Millisecond) - } - if !up { - return fmt.Errorf("server %v is not up within 5 second", s.port) - } - } - } - - serverCount := len(servers) - for i := 0; i < 3*serverCount; i++ { - err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc) - if errorDesc(err) != servers[i%serverCount].port { - return fmt.Errorf("Index %d: want peer %v, got peer %v", i, servers[i%serverCount].port, err) - } - } - return nil -} - -func TestSwitchBalancer(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 2 - servers, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}, {Addr: servers[1].addr}}) - // The default balancer is pickfirst. - if err := checkPickFirst(cc, servers); err != nil { - t.Fatalf("check pickfirst returned non-nil error: %v", err) - } - // Switch to roundrobin. - cc.handleServiceConfig(`{"loadBalancingPolicy": "round_robin"}`) - if err := checkRoundRobin(cc, servers); err != nil { - t.Fatalf("check roundrobin returned non-nil error: %v", err) - } - // Switch to pickfirst. - cc.handleServiceConfig(`{"loadBalancingPolicy": "pick_first"}`) - if err := checkPickFirst(cc, servers); err != nil { - t.Fatalf("check pickfirst returned non-nil error: %v", err) - } -} - -// Test that balancer specified by dial option will not be overridden. -func TestBalancerDialOption(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 2 - servers, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{}), WithBalancerName(roundrobin.Name)) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}, {Addr: servers[1].addr}}) - // The init balancer is roundrobin. - if err := checkRoundRobin(cc, servers); err != nil { - t.Fatalf("check roundrobin returned non-nil error: %v", err) - } - // Switch to pickfirst. - cc.handleServiceConfig(`{"loadBalancingPolicy": "pick_first"}`) - // Balancer is still roundrobin. - if err := checkRoundRobin(cc, servers); err != nil { - t.Fatalf("check roundrobin returned non-nil error: %v", err) - } -} - -// First addr update contains grpclb. -func TestSwitchBalancerGRPCLBFirst(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - - // ClientConn will switch balancer to grpclb when receives an address of - // type GRPCLB. - r.NewAddress([]resolver.Address{{Addr: "backend"}, {Addr: "grpclb", Type: resolver.GRPCLB}}) - var isGRPCLB bool - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isGRPCLB = cc.curBalancerName == "grpclb" - cc.mu.Unlock() - if isGRPCLB { - break - } - time.Sleep(time.Millisecond) - } - if !isGRPCLB { - t.Fatalf("after 5 second, cc.balancer is of type %v, not grpclb", cc.curBalancerName) - } - - // New update containing new backend and new grpclb. Should not switch - // balancer. - r.NewAddress([]resolver.Address{{Addr: "backend2"}, {Addr: "grpclb2", Type: resolver.GRPCLB}}) - for i := 0; i < 200; i++ { - cc.mu.Lock() - isGRPCLB = cc.curBalancerName == "grpclb" - cc.mu.Unlock() - if !isGRPCLB { - break - } - time.Sleep(time.Millisecond) - } - if !isGRPCLB { - t.Fatalf("within 200 ms, cc.balancer switched to !grpclb, want grpclb") - } - - var isPickFirst bool - // Switch balancer to pickfirst. - r.NewAddress([]resolver.Address{{Addr: "backend"}}) - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isPickFirst = cc.curBalancerName == PickFirstBalancerName - cc.mu.Unlock() - if isPickFirst { - break - } - time.Sleep(time.Millisecond) - } - if !isPickFirst { - t.Fatalf("after 5 second, cc.balancer is of type %v, not pick_first", cc.curBalancerName) - } -} - -// First addr update does not contain grpclb. -func TestSwitchBalancerGRPCLBSecond(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - - r.NewAddress([]resolver.Address{{Addr: "backend"}}) - var isPickFirst bool - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isPickFirst = cc.curBalancerName == PickFirstBalancerName - cc.mu.Unlock() - if isPickFirst { - break - } - time.Sleep(time.Millisecond) - } - if !isPickFirst { - t.Fatalf("after 5 second, cc.balancer is of type %v, not pick_first", cc.curBalancerName) - } - - // ClientConn will switch balancer to grpclb when receives an address of - // type GRPCLB. - r.NewAddress([]resolver.Address{{Addr: "backend"}, {Addr: "grpclb", Type: resolver.GRPCLB}}) - var isGRPCLB bool - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isGRPCLB = cc.curBalancerName == "grpclb" - cc.mu.Unlock() - if isGRPCLB { - break - } - time.Sleep(time.Millisecond) - } - if !isGRPCLB { - t.Fatalf("after 5 second, cc.balancer is of type %v, not grpclb", cc.curBalancerName) - } - - // New update containing new backend and new grpclb. Should not switch - // balancer. - r.NewAddress([]resolver.Address{{Addr: "backend2"}, {Addr: "grpclb2", Type: resolver.GRPCLB}}) - for i := 0; i < 200; i++ { - cc.mu.Lock() - isGRPCLB = cc.curBalancerName == "grpclb" - cc.mu.Unlock() - if !isGRPCLB { - break - } - time.Sleep(time.Millisecond) - } - if !isGRPCLB { - t.Fatalf("within 200 ms, cc.balancer switched to !grpclb, want grpclb") - } - - // Switch balancer back. - r.NewAddress([]resolver.Address{{Addr: "backend"}}) - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isPickFirst = cc.curBalancerName == PickFirstBalancerName - cc.mu.Unlock() - if isPickFirst { - break - } - time.Sleep(time.Millisecond) - } - if !isPickFirst { - t.Fatalf("after 5 second, cc.balancer is of type %v, not pick_first", cc.curBalancerName) - } -} - -// Test that if the current balancer is roundrobin, after switching to grpclb, -// when the resolved address doesn't contain grpclb addresses, balancer will be -// switched back to roundrobin. -func TestSwitchBalancerGRPCLBRoundRobin(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - - r.NewServiceConfig(`{"loadBalancingPolicy": "round_robin"}`) - - r.NewAddress([]resolver.Address{{Addr: "backend"}}) - var isRoundRobin bool - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isRoundRobin = cc.curBalancerName == "round_robin" - cc.mu.Unlock() - if isRoundRobin { - break - } - time.Sleep(time.Millisecond) - } - if !isRoundRobin { - t.Fatalf("after 5 second, cc.balancer is of type %v, not round_robin", cc.curBalancerName) - } - - // ClientConn will switch balancer to grpclb when receives an address of - // type GRPCLB. - r.NewAddress([]resolver.Address{{Addr: "grpclb", Type: resolver.GRPCLB}}) - var isGRPCLB bool - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isGRPCLB = cc.curBalancerName == "grpclb" - cc.mu.Unlock() - if isGRPCLB { - break - } - time.Sleep(time.Millisecond) - } - if !isGRPCLB { - t.Fatalf("after 5 second, cc.balancer is of type %v, not grpclb", cc.curBalancerName) - } - - // Switch balancer back. - r.NewAddress([]resolver.Address{{Addr: "backend"}}) - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isRoundRobin = cc.curBalancerName == "round_robin" - cc.mu.Unlock() - if isRoundRobin { - break - } - time.Sleep(time.Millisecond) - } - if !isRoundRobin { - t.Fatalf("after 5 second, cc.balancer is of type %v, not round_robin", cc.curBalancerName) - } -} - -// Test that if resolved address list contains grpclb, the balancer option in -// service config won't take effect. But when there's no grpclb address in a new -// resolved address list, balancer will be switched to the new one. -func TestSwitchBalancerGRPCLBServiceConfig(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - - r.NewAddress([]resolver.Address{{Addr: "backend"}}) - var isPickFirst bool - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isPickFirst = cc.curBalancerName == PickFirstBalancerName - cc.mu.Unlock() - if isPickFirst { - break - } - time.Sleep(time.Millisecond) - } - if !isPickFirst { - t.Fatalf("after 5 second, cc.balancer is of type %v, not pick_first", cc.curBalancerName) - } - - // ClientConn will switch balancer to grpclb when receives an address of - // type GRPCLB. - r.NewAddress([]resolver.Address{{Addr: "grpclb", Type: resolver.GRPCLB}}) - var isGRPCLB bool - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isGRPCLB = cc.curBalancerName == "grpclb" - cc.mu.Unlock() - if isGRPCLB { - break - } - time.Sleep(time.Millisecond) - } - if !isGRPCLB { - t.Fatalf("after 5 second, cc.balancer is of type %v, not grpclb", cc.curBalancerName) - } - - r.NewServiceConfig(`{"loadBalancingPolicy": "round_robin"}`) - var isRoundRobin bool - for i := 0; i < 200; i++ { - cc.mu.Lock() - isRoundRobin = cc.curBalancerName == "round_robin" - cc.mu.Unlock() - if isRoundRobin { - break - } - time.Sleep(time.Millisecond) - } - // Balancer should NOT switch to round_robin because resolved list contains - // grpclb. - if isRoundRobin { - t.Fatalf("within 200 ms, cc.balancer switched to round_robin, want grpclb") - } - - // Switch balancer back. - r.NewAddress([]resolver.Address{{Addr: "backend"}}) - for i := 0; i < 5000; i++ { - cc.mu.Lock() - isRoundRobin = cc.curBalancerName == "round_robin" - cc.mu.Unlock() - if isRoundRobin { - break - } - time.Sleep(time.Millisecond) - } - if !isRoundRobin { - t.Fatalf("after 5 second, cc.balancer is of type %v, not round_robin", cc.curBalancerName) - } -} diff --git a/vendor/google.golang.org/grpc/balancer_test.go b/vendor/google.golang.org/grpc/balancer_test.go deleted file mode 100644 index 3e0fa19b..00000000 --- a/vendor/google.golang.org/grpc/balancer_test.go +++ /dev/null @@ -1,804 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "fmt" - "math" - "strconv" - "sync" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc/codes" - _ "google.golang.org/grpc/grpclog/glogger" - "google.golang.org/grpc/naming" - "google.golang.org/grpc/status" - "google.golang.org/grpc/test/leakcheck" - - // V1 balancer tests use passthrough resolver instead of dns. - // TODO(bar) remove this when removing v1 balaner entirely. - - _ "google.golang.org/grpc/resolver/passthrough" -) - -type testWatcher struct { - // the channel to receives name resolution updates - update chan *naming.Update - // the side channel to get to know how many updates in a batch - side chan int - // the channel to notifiy update injector that the update reading is done - readDone chan int -} - -func (w *testWatcher) Next() (updates []*naming.Update, err error) { - n := <-w.side - if n == 0 { - return nil, fmt.Errorf("w.side is closed") - } - for i := 0; i < n; i++ { - u := <-w.update - if u != nil { - updates = append(updates, u) - } - } - w.readDone <- 0 - return -} - -func (w *testWatcher) Close() { - close(w.side) -} - -// Inject naming resolution updates to the testWatcher. -func (w *testWatcher) inject(updates []*naming.Update) { - w.side <- len(updates) - for _, u := range updates { - w.update <- u - } - <-w.readDone -} - -type testNameResolver struct { - w *testWatcher - addr string -} - -func (r *testNameResolver) Resolve(target string) (naming.Watcher, error) { - r.w = &testWatcher{ - update: make(chan *naming.Update, 1), - side: make(chan int, 1), - readDone: make(chan int), - } - r.w.side <- 1 - r.w.update <- &naming.Update{ - Op: naming.Add, - Addr: r.addr, - } - go func() { - <-r.w.readDone - }() - return r.w, nil -} - -func startServers(t *testing.T, numServers int, maxStreams uint32) ([]*server, *testNameResolver, func()) { - var servers []*server - for i := 0; i < numServers; i++ { - s := newTestServer() - servers = append(servers, s) - go s.start(t, 0, maxStreams) - s.wait(t, 2*time.Second) - } - // Point to server[0] - addr := "localhost:" + servers[0].port - return servers, &testNameResolver{ - addr: addr, - }, func() { - for i := 0; i < numServers; i++ { - servers[i].stop() - } - } -} - -func TestNameDiscovery(t *testing.T) { - defer leakcheck.Check(t) - // Start 2 servers on 2 ports. - numServers := 2 - servers, r, cleanup := startServers(t, numServers, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(RoundRobin(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - req := "port" - var reply string - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[0].port { - t.Fatalf("grpc.Invoke(_, _, _, _, _) = %v, want %s", err, servers[0].port) - } - // Inject the name resolution change to remove servers[0] and add servers[1]. - var updates []*naming.Update - updates = append(updates, &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - }) - updates = append(updates, &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[1].port, - }) - r.w.inject(updates) - // Loop until the rpcs in flight talks to servers[1]. - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[1].port { - break - } - time.Sleep(10 * time.Millisecond) - } -} - -func TestEmptyAddrs(t *testing.T) { - defer leakcheck.Check(t) - servers, r, cleanup := startServers(t, 1, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(RoundRobin(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - var reply string - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc); err != nil || reply != expectedResponse { - t.Fatalf("grpc.Invoke(_, _, _, _, _) = %v, reply = %q, want %q, <nil>", err, reply, expectedResponse) - } - // Inject name resolution change to remove the server so that there is no address - // available after that. - u := &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - } - r.w.inject([]*naming.Update{u}) - // Loop until the above updates apply. - for { - time.Sleep(10 * time.Millisecond) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if err := Invoke(ctx, "/foo/bar", &expectedRequest, &reply, cc); err != nil { - cancel() - break - } - cancel() - } -} - -func TestRoundRobin(t *testing.T) { - defer leakcheck.Check(t) - // Start 3 servers on 3 ports. - numServers := 3 - servers, r, cleanup := startServers(t, numServers, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(RoundRobin(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - // Add servers[1] to the service discovery. - u := &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[1].port, - } - r.w.inject([]*naming.Update{u}) - req := "port" - var reply string - // Loop until servers[1] is up - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[1].port { - break - } - time.Sleep(10 * time.Millisecond) - } - // Add server2[2] to the service discovery. - u = &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[2].port, - } - r.w.inject([]*naming.Update{u}) - // Loop until both servers[2] are up. - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[2].port { - break - } - time.Sleep(10 * time.Millisecond) - } - // Check the incoming RPCs served in a round-robin manner. - for i := 0; i < 10; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[i%numServers].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", i, err, servers[i%numServers].port) - } - } -} - -func TestCloseWithPendingRPC(t *testing.T) { - defer leakcheck.Check(t) - servers, r, cleanup := startServers(t, 1, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(RoundRobin(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - var reply string - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err != nil { - t.Fatalf("grpc.Invoke(_, _, _, _, _) = %v, want %s", err, servers[0].port) - } - // Remove the server. - updates := []*naming.Update{{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - }} - r.w.inject(updates) - // Loop until the above update applies. - for { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if err := Invoke(ctx, "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); status.Code(err) == codes.DeadlineExceeded { - cancel() - break - } - time.Sleep(10 * time.Millisecond) - cancel() - } - // Issue 2 RPCs which should be completed with error status once cc is closed. - var wg sync.WaitGroup - wg.Add(2) - go func() { - defer wg.Done() - var reply string - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err == nil { - t.Errorf("grpc.Invoke(_, _, _, _, _) = %v, want not nil", err) - } - }() - go func() { - defer wg.Done() - var reply string - time.Sleep(5 * time.Millisecond) - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err == nil { - t.Errorf("grpc.Invoke(_, _, _, _, _) = %v, want not nil", err) - } - }() - time.Sleep(5 * time.Millisecond) - cc.Close() - wg.Wait() -} - -func TestGetOnWaitChannel(t *testing.T) { - defer leakcheck.Check(t) - servers, r, cleanup := startServers(t, 1, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(RoundRobin(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - // Remove all servers so that all upcoming RPCs will block on waitCh. - updates := []*naming.Update{{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - }} - r.w.inject(updates) - for { - var reply string - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if err := Invoke(ctx, "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); status.Code(err) == codes.DeadlineExceeded { - cancel() - break - } - cancel() - time.Sleep(10 * time.Millisecond) - } - var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() - var reply string - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err != nil { - t.Errorf("grpc.Invoke(_, _, _, _, _) = %v, want <nil>", err) - } - }() - // Add a connected server to get the above RPC through. - updates = []*naming.Update{{ - Op: naming.Add, - Addr: "localhost:" + servers[0].port, - }} - r.w.inject(updates) - // Wait until the above RPC succeeds. - wg.Wait() -} - -func TestOneServerDown(t *testing.T) { - defer leakcheck.Check(t) - // Start 2 servers. - numServers := 2 - servers, r, cleanup := startServers(t, numServers, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(RoundRobin(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{}), WithWaitForHandshake()) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - // Add servers[1] to the service discovery. - var updates []*naming.Update - updates = append(updates, &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[1].port, - }) - r.w.inject(updates) - req := "port" - var reply string - // Loop until servers[1] is up - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[1].port { - break - } - time.Sleep(10 * time.Millisecond) - } - - var wg sync.WaitGroup - numRPC := 100 - sleepDuration := 10 * time.Millisecond - wg.Add(1) - go func() { - time.Sleep(sleepDuration) - // After sleepDuration, kill server[0]. - servers[0].stop() - wg.Done() - }() - - // All non-failfast RPCs should not block because there's at least one connection available. - for i := 0; i < numRPC; i++ { - wg.Add(1) - go func() { - time.Sleep(sleepDuration) - // After sleepDuration, invoke RPC. - // server[0] is killed around the same time to make it racy between balancer and gRPC internals. - Invoke(context.Background(), "/foo/bar", &req, &reply, cc, FailFast(false)) - wg.Done() - }() - } - wg.Wait() -} - -func TestOneAddressRemoval(t *testing.T) { - defer leakcheck.Check(t) - // Start 2 servers. - numServers := 2 - servers, r, cleanup := startServers(t, numServers, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(RoundRobin(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - // Add servers[1] to the service discovery. - var updates []*naming.Update - updates = append(updates, &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[1].port, - }) - r.w.inject(updates) - req := "port" - var reply string - // Loop until servers[1] is up - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[1].port { - break - } - time.Sleep(10 * time.Millisecond) - } - - var wg sync.WaitGroup - numRPC := 100 - sleepDuration := 10 * time.Millisecond - wg.Add(1) - go func() { - time.Sleep(sleepDuration) - // After sleepDuration, delete server[0]. - var updates []*naming.Update - updates = append(updates, &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - }) - r.w.inject(updates) - wg.Done() - }() - - // All non-failfast RPCs should not fail because there's at least one connection available. - for i := 0; i < numRPC; i++ { - wg.Add(1) - go func() { - var reply string - time.Sleep(sleepDuration) - // After sleepDuration, invoke RPC. - // server[0] is removed around the same time to make it racy between balancer and gRPC internals. - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err != nil { - t.Errorf("grpc.Invoke(_, _, _, _, _) = %v, want not nil", err) - } - wg.Done() - }() - } - wg.Wait() -} - -func checkServerUp(t *testing.T, currentServer *server) { - req := "port" - port := currentServer.port - cc, err := Dial("passthrough:///localhost:"+port, WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - var reply string - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == port { - break - } - time.Sleep(10 * time.Millisecond) - } -} - -func TestPickFirstEmptyAddrs(t *testing.T) { - defer leakcheck.Check(t) - servers, r, cleanup := startServers(t, 1, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(pickFirstBalancerV1(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - var reply string - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc); err != nil || reply != expectedResponse { - t.Fatalf("grpc.Invoke(_, _, _, _, _) = %v, reply = %q, want %q, <nil>", err, reply, expectedResponse) - } - // Inject name resolution change to remove the server so that there is no address - // available after that. - u := &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - } - r.w.inject([]*naming.Update{u}) - // Loop until the above updates apply. - for { - time.Sleep(10 * time.Millisecond) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if err := Invoke(ctx, "/foo/bar", &expectedRequest, &reply, cc); err != nil { - cancel() - break - } - cancel() - } -} - -func TestPickFirstCloseWithPendingRPC(t *testing.T) { - defer leakcheck.Check(t) - servers, r, cleanup := startServers(t, 1, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(pickFirstBalancerV1(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - var reply string - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err != nil { - t.Fatalf("grpc.Invoke(_, _, _, _, _) = %v, want %s", err, servers[0].port) - } - // Remove the server. - updates := []*naming.Update{{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - }} - r.w.inject(updates) - // Loop until the above update applies. - for { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if err := Invoke(ctx, "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); status.Code(err) == codes.DeadlineExceeded { - cancel() - break - } - time.Sleep(10 * time.Millisecond) - cancel() - } - // Issue 2 RPCs which should be completed with error status once cc is closed. - var wg sync.WaitGroup - wg.Add(2) - go func() { - defer wg.Done() - var reply string - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err == nil { - t.Errorf("grpc.Invoke(_, _, _, _, _) = %v, want not nil", err) - } - }() - go func() { - defer wg.Done() - var reply string - time.Sleep(5 * time.Millisecond) - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err == nil { - t.Errorf("grpc.Invoke(_, _, _, _, _) = %v, want not nil", err) - } - }() - time.Sleep(5 * time.Millisecond) - cc.Close() - wg.Wait() -} - -func TestPickFirstOrderAllServerUp(t *testing.T) { - defer leakcheck.Check(t) - // Start 3 servers on 3 ports. - numServers := 3 - servers, r, cleanup := startServers(t, numServers, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(pickFirstBalancerV1(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - // Add servers[1] and [2] to the service discovery. - u := &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[1].port, - } - r.w.inject([]*naming.Update{u}) - - u = &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[2].port, - } - r.w.inject([]*naming.Update{u}) - - // Loop until all 3 servers are up - checkServerUp(t, servers[0]) - checkServerUp(t, servers[1]) - checkServerUp(t, servers[2]) - - // Check the incoming RPCs served in server[0] - req := "port" - var reply string - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[0].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 0, err, servers[0].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Delete server[0] in the balancer, the incoming RPCs served in server[1] - // For test addrconn, close server[0] instead - u = &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - } - r.w.inject([]*naming.Update{u}) - // Loop until it changes to server[1] - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[1].port { - break - } - time.Sleep(10 * time.Millisecond) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[1].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 1, err, servers[1].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Add server[0] back to the balancer, the incoming RPCs served in server[1] - // Add is append operation, the order of Notify now is {server[1].port server[2].port server[0].port} - u = &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[0].port, - } - r.w.inject([]*naming.Update{u}) - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[1].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 1, err, servers[1].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Delete server[1] in the balancer, the incoming RPCs served in server[2] - u = &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[1].port, - } - r.w.inject([]*naming.Update{u}) - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[2].port { - break - } - time.Sleep(1 * time.Second) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[2].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 2, err, servers[2].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Delete server[2] in the balancer, the incoming RPCs served in server[0] - u = &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[2].port, - } - r.w.inject([]*naming.Update{u}) - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[0].port { - break - } - time.Sleep(1 * time.Second) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[0].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 0, err, servers[0].port) - } - time.Sleep(10 * time.Millisecond) - } -} - -func TestPickFirstOrderOneServerDown(t *testing.T) { - defer leakcheck.Check(t) - // Start 3 servers on 3 ports. - numServers := 3 - servers, r, cleanup := startServers(t, numServers, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(pickFirstBalancerV1(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{}), WithWaitForHandshake()) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - // Add servers[1] and [2] to the service discovery. - u := &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[1].port, - } - r.w.inject([]*naming.Update{u}) - - u = &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[2].port, - } - r.w.inject([]*naming.Update{u}) - - // Loop until all 3 servers are up - checkServerUp(t, servers[0]) - checkServerUp(t, servers[1]) - checkServerUp(t, servers[2]) - - // Check the incoming RPCs served in server[0] - req := "port" - var reply string - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[0].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 0, err, servers[0].port) - } - time.Sleep(10 * time.Millisecond) - } - - // server[0] down, incoming RPCs served in server[1], but the order of Notify still remains - // {server[0] server[1] server[2]} - servers[0].stop() - // Loop until it changes to server[1] - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[1].port { - break - } - time.Sleep(10 * time.Millisecond) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[1].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 1, err, servers[1].port) - } - time.Sleep(10 * time.Millisecond) - } - - // up the server[0] back, the incoming RPCs served in server[1] - p, _ := strconv.Atoi(servers[0].port) - servers[0] = newTestServer() - go servers[0].start(t, p, math.MaxUint32) - defer servers[0].stop() - servers[0].wait(t, 2*time.Second) - checkServerUp(t, servers[0]) - - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[1].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 1, err, servers[1].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Delete server[1] in the balancer, the incoming RPCs served in server[0] - u = &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[1].port, - } - r.w.inject([]*naming.Update{u}) - for { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[0].port { - break - } - time.Sleep(1 * time.Second) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[0].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 0, err, servers[0].port) - } - time.Sleep(10 * time.Millisecond) - } -} - -func TestPickFirstOneAddressRemoval(t *testing.T) { - defer leakcheck.Check(t) - // Start 2 servers. - numServers := 2 - servers, r, cleanup := startServers(t, numServers, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///localhost:"+servers[0].port, WithBalancer(pickFirstBalancerV1(r)), WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - defer cc.Close() - // Add servers[1] to the service discovery. - var updates []*naming.Update - updates = append(updates, &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[1].port, - }) - r.w.inject(updates) - - // Create a new cc to Loop until servers[1] is up - checkServerUp(t, servers[0]) - checkServerUp(t, servers[1]) - - var wg sync.WaitGroup - numRPC := 100 - sleepDuration := 10 * time.Millisecond - wg.Add(1) - go func() { - time.Sleep(sleepDuration) - // After sleepDuration, delete server[0]. - var updates []*naming.Update - updates = append(updates, &naming.Update{ - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - }) - r.w.inject(updates) - wg.Done() - }() - - // All non-failfast RPCs should not fail because there's at least one connection available. - for i := 0; i < numRPC; i++ { - wg.Add(1) - go func() { - var reply string - time.Sleep(sleepDuration) - // After sleepDuration, invoke RPC. - // server[0] is removed around the same time to make it racy between balancer and gRPC internals. - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc, FailFast(false)); err != nil { - t.Errorf("grpc.Invoke(_, _, _, _, _) = %v, want not nil", err) - } - wg.Done() - }() - } - wg.Wait() -} diff --git a/vendor/google.golang.org/grpc/benchmark/benchmain/main.go b/vendor/google.golang.org/grpc/benchmark/benchmain/main.go deleted file mode 100644 index 0cc1f25e..00000000 --- a/vendor/google.golang.org/grpc/benchmark/benchmain/main.go +++ /dev/null @@ -1,499 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -/* -Package main provides benchmark with setting flags. - -An example to run some benchmarks with profiling enabled: - -go run benchmark/benchmain/main.go -benchtime=10s -workloads=all \ - -compression=on -maxConcurrentCalls=1 -trace=off \ - -reqSizeBytes=1,1048576 -respSizeBytes=1,1048576 -networkMode=Local \ - -cpuProfile=cpuProf -memProfile=memProf -memProfileRate=10000 -resultFile=result - -As a suggestion, when creating a branch, you can run this benchmark and save the result -file "-resultFile=basePerf", and later when you at the middle of the work or finish the -work, you can get the benchmark result and compare it with the base anytime. - -Assume there are two result files names as "basePerf" and "curPerf" created by adding --resultFile=basePerf and -resultFile=curPerf. - To format the curPerf, run: - go run benchmark/benchresult/main.go curPerf - To observe how the performance changes based on a base result, run: - go run benchmark/benchresult/main.go basePerf curPerf -*/ -package main - -import ( - "encoding/gob" - "errors" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "net" - "os" - "reflect" - "runtime" - "runtime/pprof" - "strconv" - "strings" - "sync" - "sync/atomic" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - bm "google.golang.org/grpc/benchmark" - testpb "google.golang.org/grpc/benchmark/grpc_testing" - "google.golang.org/grpc/benchmark/latency" - "google.golang.org/grpc/benchmark/stats" - "google.golang.org/grpc/grpclog" -) - -const ( - modeOn = "on" - modeOff = "off" - modeBoth = "both" -) - -var allCompressionModes = []string{modeOn, modeOff, modeBoth} -var allTraceModes = []string{modeOn, modeOff, modeBoth} - -const ( - workloadsUnary = "unary" - workloadsStreaming = "streaming" - workloadsAll = "all" -) - -var allWorkloads = []string{workloadsUnary, workloadsStreaming, workloadsAll} - -var ( - runMode = []bool{true, true} // {runUnary, runStream} - // When set the latency to 0 (no delay), the result is slower than the real result with no delay - // because latency simulation section has extra operations - ltc = []time.Duration{0, 40 * time.Millisecond} // if non-positive, no delay. - kbps = []int{0, 10240} // if non-positive, infinite - mtu = []int{0} // if non-positive, infinite - maxConcurrentCalls = []int{1, 8, 64, 512} - reqSizeBytes = []int{1, 1024, 1024 * 1024} - respSizeBytes = []int{1, 1024, 1024 * 1024} - enableTrace []bool - benchtime time.Duration - memProfile, cpuProfile string - memProfileRate int - enableCompressor []bool - networkMode string - benchmarkResultFile string - networks = map[string]latency.Network{ - "Local": latency.Local, - "LAN": latency.LAN, - "WAN": latency.WAN, - "Longhaul": latency.Longhaul, - } -) - -func unaryBenchmark(startTimer func(), stopTimer func(int32), benchFeatures stats.Features, benchtime time.Duration, s *stats.Stats) { - caller, close := makeFuncUnary(benchFeatures) - defer close() - runBenchmark(caller, startTimer, stopTimer, benchFeatures, benchtime, s) -} - -func streamBenchmark(startTimer func(), stopTimer func(int32), benchFeatures stats.Features, benchtime time.Duration, s *stats.Stats) { - caller, close := makeFuncStream(benchFeatures) - defer close() - runBenchmark(caller, startTimer, stopTimer, benchFeatures, benchtime, s) -} - -func makeFuncUnary(benchFeatures stats.Features) (func(int), func()) { - nw := &latency.Network{Kbps: benchFeatures.Kbps, Latency: benchFeatures.Latency, MTU: benchFeatures.Mtu} - opts := []grpc.DialOption{} - sopts := []grpc.ServerOption{} - if benchFeatures.EnableCompressor { - sopts = append(sopts, - grpc.RPCCompressor(nopCompressor{}), - grpc.RPCDecompressor(nopDecompressor{}), - ) - opts = append(opts, - grpc.WithCompressor(nopCompressor{}), - grpc.WithDecompressor(nopDecompressor{}), - ) - } - sopts = append(sopts, grpc.MaxConcurrentStreams(uint32(benchFeatures.MaxConcurrentCalls+1))) - opts = append(opts, grpc.WithDialer(func(address string, timeout time.Duration) (net.Conn, error) { - return nw.TimeoutDialer(net.DialTimeout)("tcp", address, timeout) - })) - opts = append(opts, grpc.WithInsecure()) - - target, stopper := bm.StartServer(bm.ServerInfo{Addr: "localhost:0", Type: "protobuf", Network: nw}, sopts...) - conn := bm.NewClientConn(target, opts...) - tc := testpb.NewBenchmarkServiceClient(conn) - return func(int) { - unaryCaller(tc, benchFeatures.ReqSizeBytes, benchFeatures.RespSizeBytes) - }, func() { - conn.Close() - stopper() - } -} - -func makeFuncStream(benchFeatures stats.Features) (func(int), func()) { - nw := &latency.Network{Kbps: benchFeatures.Kbps, Latency: benchFeatures.Latency, MTU: benchFeatures.Mtu} - opts := []grpc.DialOption{} - sopts := []grpc.ServerOption{} - if benchFeatures.EnableCompressor { - sopts = append(sopts, - grpc.RPCCompressor(grpc.NewGZIPCompressor()), - grpc.RPCDecompressor(grpc.NewGZIPDecompressor()), - ) - opts = append(opts, - grpc.WithCompressor(grpc.NewGZIPCompressor()), - grpc.WithDecompressor(grpc.NewGZIPDecompressor()), - ) - } - sopts = append(sopts, grpc.MaxConcurrentStreams(uint32(benchFeatures.MaxConcurrentCalls+1))) - opts = append(opts, grpc.WithDialer(func(address string, timeout time.Duration) (net.Conn, error) { - return nw.TimeoutDialer(net.DialTimeout)("tcp", address, timeout) - })) - opts = append(opts, grpc.WithInsecure()) - - target, stopper := bm.StartServer(bm.ServerInfo{Addr: "localhost:0", Type: "protobuf", Network: nw}, sopts...) - conn := bm.NewClientConn(target, opts...) - tc := testpb.NewBenchmarkServiceClient(conn) - streams := make([]testpb.BenchmarkService_StreamingCallClient, benchFeatures.MaxConcurrentCalls) - for i := 0; i < benchFeatures.MaxConcurrentCalls; i++ { - stream, err := tc.StreamingCall(context.Background()) - if err != nil { - grpclog.Fatalf("%v.StreamingCall(_) = _, %v", tc, err) - } - streams[i] = stream - } - return func(pos int) { - streamCaller(streams[pos], benchFeatures.ReqSizeBytes, benchFeatures.RespSizeBytes) - }, func() { - conn.Close() - stopper() - } -} - -func unaryCaller(client testpb.BenchmarkServiceClient, reqSize, respSize int) { - if err := bm.DoUnaryCall(client, reqSize, respSize); err != nil { - grpclog.Fatalf("DoUnaryCall failed: %v", err) - } -} - -func streamCaller(stream testpb.BenchmarkService_StreamingCallClient, reqSize, respSize int) { - if err := bm.DoStreamingRoundTrip(stream, reqSize, respSize); err != nil { - grpclog.Fatalf("DoStreamingRoundTrip failed: %v", err) - } -} - -func runBenchmark(caller func(int), startTimer func(), stopTimer func(int32), benchFeatures stats.Features, benchtime time.Duration, s *stats.Stats) { - // Warm up connection. - for i := 0; i < 10; i++ { - caller(0) - } - // Run benchmark. - startTimer() - var ( - mu sync.Mutex - wg sync.WaitGroup - ) - wg.Add(benchFeatures.MaxConcurrentCalls) - bmEnd := time.Now().Add(benchtime) - var count int32 - for i := 0; i < benchFeatures.MaxConcurrentCalls; i++ { - go func(pos int) { - for { - t := time.Now() - if t.After(bmEnd) { - break - } - start := time.Now() - caller(pos) - elapse := time.Since(start) - atomic.AddInt32(&count, 1) - mu.Lock() - s.Add(elapse) - mu.Unlock() - } - wg.Done() - }(i) - } - wg.Wait() - stopTimer(count) -} - -// Initiate main function to get settings of features. -func init() { - var ( - workloads, traceMode, compressorMode, readLatency string - readKbps, readMtu, readMaxConcurrentCalls intSliceType - readReqSizeBytes, readRespSizeBytes intSliceType - ) - flag.StringVar(&workloads, "workloads", workloadsAll, - fmt.Sprintf("Workloads to execute - One of: %v", strings.Join(allWorkloads, ", "))) - flag.StringVar(&traceMode, "trace", modeOff, - fmt.Sprintf("Trace mode - One of: %v", strings.Join(allTraceModes, ", "))) - flag.StringVar(&readLatency, "latency", "", "Simulated one-way network latency - may be a comma-separated list") - flag.DurationVar(&benchtime, "benchtime", time.Second, "Configures the amount of time to run each benchmark") - flag.Var(&readKbps, "kbps", "Simulated network throughput (in kbps) - may be a comma-separated list") - flag.Var(&readMtu, "mtu", "Simulated network MTU (Maximum Transmission Unit) - may be a comma-separated list") - flag.Var(&readMaxConcurrentCalls, "maxConcurrentCalls", "Number of concurrent RPCs during benchmarks") - flag.Var(&readReqSizeBytes, "reqSizeBytes", "Request size in bytes - may be a comma-separated list") - flag.Var(&readRespSizeBytes, "respSizeBytes", "Response size in bytes - may be a comma-separated list") - flag.StringVar(&memProfile, "memProfile", "", "Enables memory profiling output to the filename provided.") - flag.IntVar(&memProfileRate, "memProfileRate", 512*1024, "Configures the memory profiling rate. \n"+ - "memProfile should be set before setting profile rate. To include every allocated block in the profile, "+ - "set MemProfileRate to 1. To turn off profiling entirely, set MemProfileRate to 0. 512 * 1024 by default.") - flag.StringVar(&cpuProfile, "cpuProfile", "", "Enables CPU profiling output to the filename provided") - flag.StringVar(&compressorMode, "compression", modeOff, - fmt.Sprintf("Compression mode - One of: %v", strings.Join(allCompressionModes, ", "))) - flag.StringVar(&benchmarkResultFile, "resultFile", "", "Save the benchmark result into a binary file") - flag.StringVar(&networkMode, "networkMode", "", "Network mode includes LAN, WAN, Local and Longhaul") - flag.Parse() - if flag.NArg() != 0 { - log.Fatal("Error: unparsed arguments: ", flag.Args()) - } - switch workloads { - case workloadsUnary: - runMode[0] = true - runMode[1] = false - case workloadsStreaming: - runMode[0] = false - runMode[1] = true - case workloadsAll: - runMode[0] = true - runMode[1] = true - default: - log.Fatalf("Unknown workloads setting: %v (want one of: %v)", - workloads, strings.Join(allWorkloads, ", ")) - } - enableCompressor = setMode(compressorMode) - enableTrace = setMode(traceMode) - // Time input formats as (time + unit). - readTimeFromInput(&ltc, readLatency) - readIntFromIntSlice(&kbps, readKbps) - readIntFromIntSlice(&mtu, readMtu) - readIntFromIntSlice(&maxConcurrentCalls, readMaxConcurrentCalls) - readIntFromIntSlice(&reqSizeBytes, readReqSizeBytes) - readIntFromIntSlice(&respSizeBytes, readRespSizeBytes) - // Re-write latency, kpbs and mtu if network mode is set. - if network, ok := networks[networkMode]; ok { - ltc = []time.Duration{network.Latency} - kbps = []int{network.Kbps} - mtu = []int{network.MTU} - } -} - -func setMode(name string) []bool { - switch name { - case modeOn: - return []bool{true} - case modeOff: - return []bool{false} - case modeBoth: - return []bool{false, true} - default: - log.Fatalf("Unknown %s setting: %v (want one of: %v)", - name, name, strings.Join(allCompressionModes, ", ")) - return []bool{} - } -} - -type intSliceType []int - -func (intSlice *intSliceType) String() string { - return fmt.Sprintf("%v", *intSlice) -} - -func (intSlice *intSliceType) Set(value string) error { - if len(*intSlice) > 0 { - return errors.New("interval flag already set") - } - for _, num := range strings.Split(value, ",") { - next, err := strconv.Atoi(num) - if err != nil { - return err - } - *intSlice = append(*intSlice, next) - } - return nil -} - -func readIntFromIntSlice(values *[]int, replace intSliceType) { - // If not set replace in the flag, just return to run the default settings. - if len(replace) == 0 { - return - } - *values = replace -} - -func readTimeFromInput(values *[]time.Duration, replace string) { - if strings.Compare(replace, "") != 0 { - *values = []time.Duration{} - for _, ltc := range strings.Split(replace, ",") { - duration, err := time.ParseDuration(ltc) - if err != nil { - log.Fatal(err.Error()) - } - *values = append(*values, duration) - } - } -} - -func main() { - before() - featuresPos := make([]int, 8) - // 0:enableTracing 1:ltc 2:kbps 3:mtu 4:maxC 5:reqSize 6:respSize - featuresNum := []int{len(enableTrace), len(ltc), len(kbps), len(mtu), - len(maxConcurrentCalls), len(reqSizeBytes), len(respSizeBytes), len(enableCompressor)} - initalPos := make([]int, len(featuresPos)) - s := stats.NewStats(10) - s.SortLatency() - var memStats runtime.MemStats - var results testing.BenchmarkResult - var startAllocs, startBytes uint64 - var startTime time.Time - start := true - var startTimer = func() { - runtime.ReadMemStats(&memStats) - startAllocs = memStats.Mallocs - startBytes = memStats.TotalAlloc - startTime = time.Now() - } - var stopTimer = func(count int32) { - runtime.ReadMemStats(&memStats) - results = testing.BenchmarkResult{N: int(count), T: time.Now().Sub(startTime), - Bytes: 0, MemAllocs: memStats.Mallocs - startAllocs, MemBytes: memStats.TotalAlloc - startBytes} - } - sharedPos := make([]bool, len(featuresPos)) - for i := 0; i < len(featuresPos); i++ { - if featuresNum[i] <= 1 { - sharedPos[i] = true - } - } - - // Run benchmarks - resultSlice := []stats.BenchResults{} - for !reflect.DeepEqual(featuresPos, initalPos) || start { - start = false - benchFeature := stats.Features{ - NetworkMode: networkMode, - EnableTrace: enableTrace[featuresPos[0]], - Latency: ltc[featuresPos[1]], - Kbps: kbps[featuresPos[2]], - Mtu: mtu[featuresPos[3]], - MaxConcurrentCalls: maxConcurrentCalls[featuresPos[4]], - ReqSizeBytes: reqSizeBytes[featuresPos[5]], - RespSizeBytes: respSizeBytes[featuresPos[6]], - EnableCompressor: enableCompressor[featuresPos[7]], - } - - grpc.EnableTracing = enableTrace[featuresPos[0]] - if runMode[0] { - unaryBenchmark(startTimer, stopTimer, benchFeature, benchtime, s) - s.SetBenchmarkResult("Unary", benchFeature, results.N, - results.AllocedBytesPerOp(), results.AllocsPerOp(), sharedPos) - fmt.Println(s.BenchString()) - fmt.Println(s.String()) - resultSlice = append(resultSlice, s.GetBenchmarkResults()) - s.Clear() - } - if runMode[1] { - streamBenchmark(startTimer, stopTimer, benchFeature, benchtime, s) - s.SetBenchmarkResult("Stream", benchFeature, results.N, - results.AllocedBytesPerOp(), results.AllocsPerOp(), sharedPos) - fmt.Println(s.BenchString()) - fmt.Println(s.String()) - resultSlice = append(resultSlice, s.GetBenchmarkResults()) - s.Clear() - } - bm.AddOne(featuresPos, featuresNum) - } - after(resultSlice) -} - -func before() { - if memProfile != "" { - runtime.MemProfileRate = memProfileRate - } - if cpuProfile != "" { - f, err := os.Create(cpuProfile) - if err != nil { - fmt.Fprintf(os.Stderr, "testing: %s\n", err) - return - } - if err := pprof.StartCPUProfile(f); err != nil { - fmt.Fprintf(os.Stderr, "testing: can't start cpu profile: %s\n", err) - f.Close() - return - } - } -} - -func after(data []stats.BenchResults) { - if cpuProfile != "" { - pprof.StopCPUProfile() // flushes profile to disk - } - if memProfile != "" { - f, err := os.Create(memProfile) - if err != nil { - fmt.Fprintf(os.Stderr, "testing: %s\n", err) - os.Exit(2) - } - runtime.GC() // materialize all statistics - if err = pprof.WriteHeapProfile(f); err != nil { - fmt.Fprintf(os.Stderr, "testing: can't write heap profile %s: %s\n", memProfile, err) - os.Exit(2) - } - f.Close() - } - if benchmarkResultFile != "" { - f, err := os.Create(benchmarkResultFile) - if err != nil { - log.Fatalf("testing: can't write benchmark result %s: %s\n", benchmarkResultFile, err) - } - dataEncoder := gob.NewEncoder(f) - dataEncoder.Encode(data) - f.Close() - } -} - -// nopCompressor is a compressor that just copies data. -type nopCompressor struct{} - -func (nopCompressor) Do(w io.Writer, p []byte) error { - n, err := w.Write(p) - if err != nil { - return err - } - if n != len(p) { - return fmt.Errorf("nopCompressor.Write: wrote %v bytes; want %v", n, len(p)) - } - return nil -} - -func (nopCompressor) Type() string { return "nop" } - -// nopDecompressor is a decompressor that just copies data. -type nopDecompressor struct{} - -func (nopDecompressor) Do(r io.Reader) ([]byte, error) { return ioutil.ReadAll(r) } -func (nopDecompressor) Type() string { return "nop" } diff --git a/vendor/google.golang.org/grpc/benchmark/benchmark.go b/vendor/google.golang.org/grpc/benchmark/benchmark.go deleted file mode 100644 index f09fa454..00000000 --- a/vendor/google.golang.org/grpc/benchmark/benchmark.go +++ /dev/null @@ -1,364 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc -I grpc_testing --go_out=plugins=grpc:grpc_testing grpc_testing/control.proto grpc_testing/messages.proto grpc_testing/payloads.proto grpc_testing/services.proto grpc_testing/stats.proto - -/* -Package benchmark implements the building blocks to setup end-to-end gRPC benchmarks. -*/ -package benchmark - -import ( - "fmt" - "io" - "net" - "sync" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - testpb "google.golang.org/grpc/benchmark/grpc_testing" - "google.golang.org/grpc/benchmark/latency" - "google.golang.org/grpc/benchmark/stats" - "google.golang.org/grpc/grpclog" -) - -// AddOne add 1 to the features slice -func AddOne(features []int, featuresMaxPosition []int) { - for i := len(features) - 1; i >= 0; i-- { - features[i] = (features[i] + 1) - if features[i]/featuresMaxPosition[i] == 0 { - break - } - features[i] = features[i] % featuresMaxPosition[i] - } -} - -// Allows reuse of the same testpb.Payload object. -func setPayload(p *testpb.Payload, t testpb.PayloadType, size int) { - if size < 0 { - grpclog.Fatalf("Requested a response with invalid length %d", size) - } - body := make([]byte, size) - switch t { - case testpb.PayloadType_COMPRESSABLE: - case testpb.PayloadType_UNCOMPRESSABLE: - grpclog.Fatalf("PayloadType UNCOMPRESSABLE is not supported") - default: - grpclog.Fatalf("Unsupported payload type: %d", t) - } - p.Type = t - p.Body = body - return -} - -func newPayload(t testpb.PayloadType, size int) *testpb.Payload { - p := new(testpb.Payload) - setPayload(p, t, size) - return p -} - -type testServer struct { -} - -func (s *testServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - return &testpb.SimpleResponse{ - Payload: newPayload(in.ResponseType, int(in.ResponseSize)), - }, nil -} - -func (s *testServer) StreamingCall(stream testpb.BenchmarkService_StreamingCallServer) error { - response := &testpb.SimpleResponse{ - Payload: new(testpb.Payload), - } - in := new(testpb.SimpleRequest) - for { - // use ServerStream directly to reuse the same testpb.SimpleRequest object - err := stream.(grpc.ServerStream).RecvMsg(in) - if err == io.EOF { - // read done. - return nil - } - if err != nil { - return err - } - setPayload(response.Payload, in.ResponseType, int(in.ResponseSize)) - if err := stream.Send(response); err != nil { - return err - } - } -} - -// byteBufServer is a gRPC server that sends and receives byte buffer. -// The purpose is to benchmark the gRPC performance without protobuf serialization/deserialization overhead. -type byteBufServer struct { - respSize int32 -} - -// UnaryCall is an empty function and is not used for benchmark. -// If bytebuf UnaryCall benchmark is needed later, the function body needs to be updated. -func (s *byteBufServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - return &testpb.SimpleResponse{}, nil -} - -func (s *byteBufServer) StreamingCall(stream testpb.BenchmarkService_StreamingCallServer) error { - for { - var in []byte - err := stream.(grpc.ServerStream).RecvMsg(&in) - if err == io.EOF { - return nil - } - if err != nil { - return err - } - out := make([]byte, s.respSize) - if err := stream.(grpc.ServerStream).SendMsg(&out); err != nil { - return err - } - } -} - -// ServerInfo contains the information to create a gRPC benchmark server. -type ServerInfo struct { - // Addr is the address of the server. - Addr string - - // Type is the type of the server. - // It should be "protobuf" or "bytebuf". - Type string - - // Metadata is an optional configuration. - // For "protobuf", it's ignored. - // For "bytebuf", it should be an int representing response size. - Metadata interface{} - - // Network can simulate latency - Network *latency.Network -} - -// StartServer starts a gRPC server serving a benchmark service according to info. -// It returns its listen address and a function to stop the server. -func StartServer(info ServerInfo, opts ...grpc.ServerOption) (string, func()) { - lis, err := net.Listen("tcp", info.Addr) - if err != nil { - grpclog.Fatalf("Failed to listen: %v", err) - } - nw := info.Network - if nw != nil { - lis = nw.Listener(lis) - } - opts = append(opts, grpc.WriteBufferSize(128*1024)) - opts = append(opts, grpc.ReadBufferSize(128*1024)) - s := grpc.NewServer(opts...) - switch info.Type { - case "protobuf": - testpb.RegisterBenchmarkServiceServer(s, &testServer{}) - case "bytebuf": - respSize, ok := info.Metadata.(int32) - if !ok { - grpclog.Fatalf("failed to StartServer, invalid metadata: %v, for Type: %v", info.Metadata, info.Type) - } - testpb.RegisterBenchmarkServiceServer(s, &byteBufServer{respSize: respSize}) - default: - grpclog.Fatalf("failed to StartServer, unknown Type: %v", info.Type) - } - go s.Serve(lis) - return lis.Addr().String(), func() { - s.Stop() - } -} - -// DoUnaryCall performs an unary RPC with given stub and request and response sizes. -func DoUnaryCall(tc testpb.BenchmarkServiceClient, reqSize, respSize int) error { - pl := newPayload(testpb.PayloadType_COMPRESSABLE, reqSize) - req := &testpb.SimpleRequest{ - ResponseType: pl.Type, - ResponseSize: int32(respSize), - Payload: pl, - } - if _, err := tc.UnaryCall(context.Background(), req); err != nil { - return fmt.Errorf("/BenchmarkService/UnaryCall(_, _) = _, %v, want _, <nil>", err) - } - return nil -} - -// DoStreamingRoundTrip performs a round trip for a single streaming rpc. -func DoStreamingRoundTrip(stream testpb.BenchmarkService_StreamingCallClient, reqSize, respSize int) error { - pl := newPayload(testpb.PayloadType_COMPRESSABLE, reqSize) - req := &testpb.SimpleRequest{ - ResponseType: pl.Type, - ResponseSize: int32(respSize), - Payload: pl, - } - if err := stream.Send(req); err != nil { - return fmt.Errorf("/BenchmarkService/StreamingCall.Send(_) = %v, want <nil>", err) - } - if _, err := stream.Recv(); err != nil { - // EOF is a valid error here. - if err == io.EOF { - return nil - } - return fmt.Errorf("/BenchmarkService/StreamingCall.Recv(_) = %v, want <nil>", err) - } - return nil -} - -// DoByteBufStreamingRoundTrip performs a round trip for a single streaming rpc, using a custom codec for byte buffer. -func DoByteBufStreamingRoundTrip(stream testpb.BenchmarkService_StreamingCallClient, reqSize, respSize int) error { - out := make([]byte, reqSize) - if err := stream.(grpc.ClientStream).SendMsg(&out); err != nil { - return fmt.Errorf("/BenchmarkService/StreamingCall.(ClientStream).SendMsg(_) = %v, want <nil>", err) - } - var in []byte - if err := stream.(grpc.ClientStream).RecvMsg(&in); err != nil { - // EOF is a valid error here. - if err == io.EOF { - return nil - } - return fmt.Errorf("/BenchmarkService/StreamingCall.(ClientStream).RecvMsg(_) = %v, want <nil>", err) - } - return nil -} - -// NewClientConn creates a gRPC client connection to addr. -func NewClientConn(addr string, opts ...grpc.DialOption) *grpc.ClientConn { - opts = append(opts, grpc.WithWriteBufferSize(128*1024)) - opts = append(opts, grpc.WithReadBufferSize(128*1024)) - conn, err := grpc.Dial(addr, opts...) - if err != nil { - grpclog.Fatalf("NewClientConn(%q) failed to create a ClientConn %v", addr, err) - } - return conn -} - -func runUnary(b *testing.B, benchFeatures stats.Features) { - s := stats.AddStats(b, 38) - nw := &latency.Network{Kbps: benchFeatures.Kbps, Latency: benchFeatures.Latency, MTU: benchFeatures.Mtu} - target, stopper := StartServer(ServerInfo{Addr: "localhost:0", Type: "protobuf", Network: nw}, grpc.MaxConcurrentStreams(uint32(benchFeatures.MaxConcurrentCalls+1))) - defer stopper() - conn := NewClientConn( - target, grpc.WithInsecure(), - grpc.WithDialer(func(address string, timeout time.Duration) (net.Conn, error) { - return nw.TimeoutDialer(net.DialTimeout)("tcp", address, timeout) - }), - ) - tc := testpb.NewBenchmarkServiceClient(conn) - - // Warm up connection. - for i := 0; i < 10; i++ { - unaryCaller(tc, benchFeatures.ReqSizeBytes, benchFeatures.RespSizeBytes) - } - ch := make(chan int, benchFeatures.MaxConcurrentCalls*4) - var ( - mu sync.Mutex - wg sync.WaitGroup - ) - wg.Add(benchFeatures.MaxConcurrentCalls) - - // Distribute the b.N calls over maxConcurrentCalls workers. - for i := 0; i < benchFeatures.MaxConcurrentCalls; i++ { - go func() { - for range ch { - start := time.Now() - unaryCaller(tc, benchFeatures.ReqSizeBytes, benchFeatures.RespSizeBytes) - elapse := time.Since(start) - mu.Lock() - s.Add(elapse) - mu.Unlock() - } - wg.Done() - }() - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - ch <- i - } - close(ch) - wg.Wait() - b.StopTimer() - conn.Close() -} - -func runStream(b *testing.B, benchFeatures stats.Features) { - s := stats.AddStats(b, 38) - nw := &latency.Network{Kbps: benchFeatures.Kbps, Latency: benchFeatures.Latency, MTU: benchFeatures.Mtu} - target, stopper := StartServer(ServerInfo{Addr: "localhost:0", Type: "protobuf", Network: nw}, grpc.MaxConcurrentStreams(uint32(benchFeatures.MaxConcurrentCalls+1))) - defer stopper() - conn := NewClientConn( - target, grpc.WithInsecure(), - grpc.WithDialer(func(address string, timeout time.Duration) (net.Conn, error) { - return nw.TimeoutDialer(net.DialTimeout)("tcp", address, timeout) - }), - ) - tc := testpb.NewBenchmarkServiceClient(conn) - - // Warm up connection. - stream, err := tc.StreamingCall(context.Background()) - if err != nil { - b.Fatalf("%v.StreamingCall(_) = _, %v", tc, err) - } - for i := 0; i < 10; i++ { - streamCaller(stream, benchFeatures.ReqSizeBytes, benchFeatures.RespSizeBytes) - } - - ch := make(chan struct{}, benchFeatures.MaxConcurrentCalls*4) - var ( - mu sync.Mutex - wg sync.WaitGroup - ) - wg.Add(benchFeatures.MaxConcurrentCalls) - - // Distribute the b.N calls over maxConcurrentCalls workers. - for i := 0; i < benchFeatures.MaxConcurrentCalls; i++ { - stream, err := tc.StreamingCall(context.Background()) - if err != nil { - b.Fatalf("%v.StreamingCall(_) = _, %v", tc, err) - } - go func() { - for range ch { - start := time.Now() - streamCaller(stream, benchFeatures.ReqSizeBytes, benchFeatures.RespSizeBytes) - elapse := time.Since(start) - mu.Lock() - s.Add(elapse) - mu.Unlock() - } - wg.Done() - }() - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - ch <- struct{}{} - } - close(ch) - wg.Wait() - b.StopTimer() - conn.Close() -} -func unaryCaller(client testpb.BenchmarkServiceClient, reqSize, respSize int) { - if err := DoUnaryCall(client, reqSize, respSize); err != nil { - grpclog.Fatalf("DoUnaryCall failed: %v", err) - } -} - -func streamCaller(stream testpb.BenchmarkService_StreamingCallClient, reqSize, respSize int) { - if err := DoStreamingRoundTrip(stream, reqSize, respSize); err != nil { - grpclog.Fatalf("DoStreamingRoundTrip failed: %v", err) - } -} diff --git a/vendor/google.golang.org/grpc/benchmark/benchmark16_test.go b/vendor/google.golang.org/grpc/benchmark/benchmark16_test.go deleted file mode 100644 index fc33e80d..00000000 --- a/vendor/google.golang.org/grpc/benchmark/benchmark16_test.go +++ /dev/null @@ -1,112 +0,0 @@ -// +build go1.6,!go1.7 - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package benchmark - -import ( - "os" - "testing" - - "google.golang.org/grpc" - "google.golang.org/grpc/benchmark/stats" -) - -func BenchmarkClientStreamc1(b *testing.B) { - grpc.EnableTracing = true - runStream(b, stats.Features{"", true, 0, 0, 0, 1, 1, 1, false}) -} - -func BenchmarkClientStreamc8(b *testing.B) { - grpc.EnableTracing = true - runStream(b, stats.Features{"", true, 0, 0, 0, 8, 1, 1, false}) -} - -func BenchmarkClientStreamc64(b *testing.B) { - grpc.EnableTracing = true - runStream(b, stats.Features{"", true, 0, 0, 0, 64, 1, 1, false}) -} - -func BenchmarkClientStreamc512(b *testing.B) { - grpc.EnableTracing = true - runStream(b, stats.Features{"", true, 0, 0, 0, 512, 1, 1, false}) -} -func BenchmarkClientUnaryc1(b *testing.B) { - grpc.EnableTracing = true - runStream(b, stats.Features{"", true, 0, 0, 0, 1, 1, 1, false}) -} - -func BenchmarkClientUnaryc8(b *testing.B) { - grpc.EnableTracing = true - runStream(b, stats.Features{"", true, 0, 0, 0, 8, 1, 1, false}) -} - -func BenchmarkClientUnaryc64(b *testing.B) { - grpc.EnableTracing = true - runStream(b, stats.Features{"", true, 0, 0, 0, 64, 1, 1, false}) -} - -func BenchmarkClientUnaryc512(b *testing.B) { - grpc.EnableTracing = true - runStream(b, stats.Features{"", true, 0, 0, 0, 512, 1, 1, false}) -} - -func BenchmarkClientStreamNoTracec1(b *testing.B) { - grpc.EnableTracing = false - runStream(b, stats.Features{"", false, 0, 0, 0, 1, 1, 1, false}) -} - -func BenchmarkClientStreamNoTracec8(b *testing.B) { - grpc.EnableTracing = false - runStream(b, stats.Features{"", false, 0, 0, 0, 8, 1, 1, false}) -} - -func BenchmarkClientStreamNoTracec64(b *testing.B) { - grpc.EnableTracing = false - runStream(b, stats.Features{"", false, 0, 0, 0, 64, 1, 1, false}) -} - -func BenchmarkClientStreamNoTracec512(b *testing.B) { - grpc.EnableTracing = false - runStream(b, stats.Features{"", false, 0, 0, 0, 512, 1, 1, false}) -} -func BenchmarkClientUnaryNoTracec1(b *testing.B) { - grpc.EnableTracing = false - runStream(b, stats.Features{"", false, 0, 0, 0, 1, 1, 1, false}) -} - -func BenchmarkClientUnaryNoTracec8(b *testing.B) { - grpc.EnableTracing = false - runStream(b, stats.Features{"", false, 0, 0, 0, 8, 1, 1, false}) -} - -func BenchmarkClientUnaryNoTracec64(b *testing.B) { - grpc.EnableTracing = false - runStream(b, stats.Features{"", false, 0, 0, 0, 64, 1, 1, false}) -} - -func BenchmarkClientUnaryNoTracec512(b *testing.B) { - grpc.EnableTracing = false - runStream(b, stats.Features{"", false, 0, 0, 0, 512, 1, 1, false}) - runStream(b, stats.Features{"", false, 0, 0, 0, 512, 1, 1, false}) -} - -func TestMain(m *testing.M) { - os.Exit(stats.RunTestMain(m)) -} diff --git a/vendor/google.golang.org/grpc/benchmark/benchmark17_test.go b/vendor/google.golang.org/grpc/benchmark/benchmark17_test.go deleted file mode 100644 index 8dc7d3c5..00000000 --- a/vendor/google.golang.org/grpc/benchmark/benchmark17_test.go +++ /dev/null @@ -1,85 +0,0 @@ -// +build go1.7 - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package benchmark - -import ( - "fmt" - "os" - "reflect" - "testing" - "time" - - "google.golang.org/grpc" - "google.golang.org/grpc/benchmark/stats" -) - -func BenchmarkClient(b *testing.B) { - enableTrace := []bool{true, false} // run both enable and disable by default - // When set the latency to 0 (no delay), the result is slower than the real result with no delay - // because latency simulation section has extra operations - latency := []time.Duration{0, 40 * time.Millisecond} // if non-positive, no delay. - kbps := []int{0, 10240} // if non-positive, infinite - mtu := []int{0} // if non-positive, infinite - maxConcurrentCalls := []int{1, 8, 64, 512} - reqSizeBytes := []int{1, 1024 * 1024} - respSizeBytes := []int{1, 1024 * 1024} - featuresCurPos := make([]int, 7) - - // 0:enableTracing 1:md 2:ltc 3:kbps 4:mtu 5:maxC 6:connCount 7:reqSize 8:respSize - featuresMaxPosition := []int{len(enableTrace), len(latency), len(kbps), len(mtu), len(maxConcurrentCalls), len(reqSizeBytes), len(respSizeBytes)} - initalPos := make([]int, len(featuresCurPos)) - - // run benchmarks - start := true - for !reflect.DeepEqual(featuresCurPos, initalPos) || start { - start = false - tracing := "Trace" - if !enableTrace[featuresCurPos[0]] { - tracing = "noTrace" - } - - benchFeature := stats.Features{ - EnableTrace: enableTrace[featuresCurPos[0]], - Latency: latency[featuresCurPos[1]], - Kbps: kbps[featuresCurPos[2]], - Mtu: mtu[featuresCurPos[3]], - MaxConcurrentCalls: maxConcurrentCalls[featuresCurPos[4]], - ReqSizeBytes: reqSizeBytes[featuresCurPos[5]], - RespSizeBytes: respSizeBytes[featuresCurPos[6]], - } - - grpc.EnableTracing = enableTrace[featuresCurPos[0]] - b.Run(fmt.Sprintf("Unary-%s-%s", - tracing, benchFeature.String()), func(b *testing.B) { - runUnary(b, benchFeature) - }) - - b.Run(fmt.Sprintf("Stream-%s-%s", - tracing, benchFeature.String()), func(b *testing.B) { - runStream(b, benchFeature) - }) - AddOne(featuresCurPos, featuresMaxPosition) - } -} - -func TestMain(m *testing.M) { - os.Exit(stats.RunTestMain(m)) -} diff --git a/vendor/google.golang.org/grpc/benchmark/benchresult/main.go b/vendor/google.golang.org/grpc/benchmark/benchresult/main.go deleted file mode 100644 index 40226cff..00000000 --- a/vendor/google.golang.org/grpc/benchmark/benchresult/main.go +++ /dev/null @@ -1,133 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -/* -To format the benchmark result: - go run benchmark/benchresult/main.go resultfile - -To see the performance change based on a old result: - go run benchmark/benchresult/main.go resultfile_old resultfile -It will print the comparison result of intersection benchmarks between two files. - -*/ -package main - -import ( - "encoding/gob" - "fmt" - "log" - "os" - "strconv" - "strings" - "time" - - "google.golang.org/grpc/benchmark/stats" -) - -func createMap(fileName string, m map[string]stats.BenchResults) { - f, err := os.Open(fileName) - if err != nil { - log.Fatalf("Read file %s error: %s\n", fileName, err) - } - defer f.Close() - var data []stats.BenchResults - decoder := gob.NewDecoder(f) - if err = decoder.Decode(&data); err != nil { - log.Fatalf("Decode file %s error: %s\n", fileName, err) - } - for _, d := range data { - m[d.RunMode+"-"+d.Features.String()] = d - } -} - -func intChange(title string, val1, val2 int64) string { - return fmt.Sprintf("%10s %12s %12s %8.2f%%\n", title, strconv.FormatInt(val1, 10), - strconv.FormatInt(val2, 10), float64(val2-val1)*100/float64(val1)) -} - -func timeChange(title int, val1, val2 time.Duration) string { - return fmt.Sprintf("%10s %12s %12s %8.2f%%\n", strconv.Itoa(title)+" latency", val1.String(), - val2.String(), float64(val2-val1)*100/float64(val1)) -} - -func compareTwoMap(m1, m2 map[string]stats.BenchResults) { - for k2, v2 := range m2 { - if v1, ok := m1[k2]; ok { - changes := k2 + "\n" - changes += fmt.Sprintf("%10s %12s %12s %8s\n", "Title", "Before", "After", "Percentage") - changes += intChange("Bytes/op", v1.AllocedBytesPerOp, v2.AllocedBytesPerOp) - changes += intChange("Allocs/op", v1.AllocsPerOp, v2.AllocsPerOp) - changes += timeChange(v1.Latency[1].Percent, v1.Latency[1].Value, v2.Latency[1].Value) - changes += timeChange(v1.Latency[2].Percent, v1.Latency[2].Value, v2.Latency[2].Value) - fmt.Printf("%s\n", changes) - } - } -} - -func compareBenchmark(file1, file2 string) { - var BenchValueFile1 map[string]stats.BenchResults - var BenchValueFile2 map[string]stats.BenchResults - BenchValueFile1 = make(map[string]stats.BenchResults) - BenchValueFile2 = make(map[string]stats.BenchResults) - - createMap(file1, BenchValueFile1) - createMap(file2, BenchValueFile2) - - compareTwoMap(BenchValueFile1, BenchValueFile2) -} - -func printline(benchName, ltc50, ltc90, allocByte, allocsOp interface{}) { - fmt.Printf("%-80v%12v%12v%12v%12v\n", benchName, ltc50, ltc90, allocByte, allocsOp) -} - -func formatBenchmark(fileName string) { - f, err := os.Open(fileName) - if err != nil { - log.Fatalf("Read file %s error: %s\n", fileName, err) - } - defer f.Close() - var data []stats.BenchResults - decoder := gob.NewDecoder(f) - if err = decoder.Decode(&data); err != nil { - log.Fatalf("Decode file %s error: %s\n", fileName, err) - } - if len(data) == 0 { - log.Fatalf("No data in file %s\n", fileName) - } - printPos := data[0].SharedPosion - fmt.Println("\nShared features:\n" + strings.Repeat("-", 20)) - fmt.Print(stats.PartialPrintString(printPos, data[0].Features, true)) - fmt.Println(strings.Repeat("-", 35)) - for i := 0; i < len(data[0].SharedPosion); i++ { - printPos[i] = !printPos[i] - } - printline("Name", "latency-50", "latency-90", "Alloc (B)", "Alloc (#)") - for _, d := range data { - name := d.RunMode + stats.PartialPrintString(printPos, d.Features, false) - printline(name, d.Latency[1].Value.String(), d.Latency[2].Value.String(), - d.AllocedBytesPerOp, d.AllocsPerOp) - } -} - -func main() { - if len(os.Args) == 2 { - formatBenchmark(os.Args[1]) - } else { - compareBenchmark(os.Args[1], os.Args[2]) - } -} diff --git a/vendor/google.golang.org/grpc/benchmark/client/main.go b/vendor/google.golang.org/grpc/benchmark/client/main.go deleted file mode 100644 index 9aa587e3..00000000 --- a/vendor/google.golang.org/grpc/benchmark/client/main.go +++ /dev/null @@ -1,180 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "flag" - "math" - "net" - "net/http" - _ "net/http/pprof" - "sync" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/benchmark" - testpb "google.golang.org/grpc/benchmark/grpc_testing" - "google.golang.org/grpc/benchmark/stats" - "google.golang.org/grpc/grpclog" -) - -var ( - server = flag.String("server", "", "The server address") - maxConcurrentRPCs = flag.Int("max_concurrent_rpcs", 1, "The max number of concurrent RPCs") - duration = flag.Int("duration", math.MaxInt32, "The duration in seconds to run the benchmark client") - trace = flag.Bool("trace", true, "Whether tracing is on") - rpcType = flag.Int("rpc_type", 0, - `Configure different client rpc type. Valid options are: - 0 : unary call; - 1 : streaming call.`) -) - -func unaryCaller(client testpb.BenchmarkServiceClient) { - benchmark.DoUnaryCall(client, 1, 1) -} - -func streamCaller(stream testpb.BenchmarkService_StreamingCallClient) { - benchmark.DoStreamingRoundTrip(stream, 1, 1) -} - -func buildConnection() (s *stats.Stats, conn *grpc.ClientConn, tc testpb.BenchmarkServiceClient) { - s = stats.NewStats(256) - conn = benchmark.NewClientConn(*server) - tc = testpb.NewBenchmarkServiceClient(conn) - return s, conn, tc -} - -func closeLoopUnary() { - s, conn, tc := buildConnection() - - for i := 0; i < 100; i++ { - unaryCaller(tc) - } - ch := make(chan int, *maxConcurrentRPCs*4) - var ( - mu sync.Mutex - wg sync.WaitGroup - ) - wg.Add(*maxConcurrentRPCs) - - for i := 0; i < *maxConcurrentRPCs; i++ { - go func() { - for range ch { - start := time.Now() - unaryCaller(tc) - elapse := time.Since(start) - mu.Lock() - s.Add(elapse) - mu.Unlock() - } - wg.Done() - }() - } - // Stop the client when time is up. - done := make(chan struct{}) - go func() { - <-time.After(time.Duration(*duration) * time.Second) - close(done) - }() - ok := true - for ok { - select { - case ch <- 0: - case <-done: - ok = false - } - } - close(ch) - wg.Wait() - conn.Close() - grpclog.Println(s.String()) - -} - -func closeLoopStream() { - s, conn, tc := buildConnection() - ch := make(chan int, *maxConcurrentRPCs*4) - var ( - mu sync.Mutex - wg sync.WaitGroup - ) - wg.Add(*maxConcurrentRPCs) - // Distribute RPCs over maxConcurrentCalls workers. - for i := 0; i < *maxConcurrentRPCs; i++ { - go func() { - stream, err := tc.StreamingCall(context.Background()) - if err != nil { - grpclog.Fatalf("%v.StreamingCall(_) = _, %v", tc, err) - } - // Do some warm up. - for i := 0; i < 100; i++ { - streamCaller(stream) - } - for range ch { - start := time.Now() - streamCaller(stream) - elapse := time.Since(start) - mu.Lock() - s.Add(elapse) - mu.Unlock() - } - wg.Done() - }() - } - // Stop the client when time is up. - done := make(chan struct{}) - go func() { - <-time.After(time.Duration(*duration) * time.Second) - close(done) - }() - ok := true - for ok { - select { - case ch <- 0: - case <-done: - ok = false - } - } - close(ch) - wg.Wait() - conn.Close() - grpclog.Println(s.String()) -} - -func main() { - flag.Parse() - grpc.EnableTracing = *trace - go func() { - lis, err := net.Listen("tcp", ":0") - if err != nil { - grpclog.Fatalf("Failed to listen: %v", err) - } - grpclog.Println("Client profiling address: ", lis.Addr().String()) - if err := http.Serve(lis, nil); err != nil { - grpclog.Fatalf("Failed to serve: %v", err) - } - }() - switch *rpcType { - case 0: - closeLoopUnary() - case 1: - closeLoopStream() - } -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/control.pb.go b/vendor/google.golang.org/grpc/benchmark/grpc_testing/control.pb.go deleted file mode 100644 index b88832f7..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/control.pb.go +++ /dev/null @@ -1,1194 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: control.proto - -/* -Package grpc_testing is a generated protocol buffer package. - -It is generated from these files: - control.proto - messages.proto - payloads.proto - services.proto - stats.proto - -It has these top-level messages: - PoissonParams - UniformParams - DeterministicParams - ParetoParams - ClosedLoopParams - LoadParams - SecurityParams - ClientConfig - ClientStatus - Mark - ClientArgs - ServerConfig - ServerArgs - ServerStatus - CoreRequest - CoreResponse - Void - Scenario - Scenarios - Payload - EchoStatus - SimpleRequest - SimpleResponse - StreamingInputCallRequest - StreamingInputCallResponse - ResponseParameters - StreamingOutputCallRequest - StreamingOutputCallResponse - ReconnectParams - ReconnectInfo - ByteBufferParams - SimpleProtoParams - ComplexProtoParams - PayloadConfig - ServerStats - HistogramParams - HistogramData - ClientStats -*/ -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type ClientType int32 - -const ( - ClientType_SYNC_CLIENT ClientType = 0 - ClientType_ASYNC_CLIENT ClientType = 1 -) - -var ClientType_name = map[int32]string{ - 0: "SYNC_CLIENT", - 1: "ASYNC_CLIENT", -} -var ClientType_value = map[string]int32{ - "SYNC_CLIENT": 0, - "ASYNC_CLIENT": 1, -} - -func (x ClientType) String() string { - return proto.EnumName(ClientType_name, int32(x)) -} -func (ClientType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type ServerType int32 - -const ( - ServerType_SYNC_SERVER ServerType = 0 - ServerType_ASYNC_SERVER ServerType = 1 - ServerType_ASYNC_GENERIC_SERVER ServerType = 2 -) - -var ServerType_name = map[int32]string{ - 0: "SYNC_SERVER", - 1: "ASYNC_SERVER", - 2: "ASYNC_GENERIC_SERVER", -} -var ServerType_value = map[string]int32{ - "SYNC_SERVER": 0, - "ASYNC_SERVER": 1, - "ASYNC_GENERIC_SERVER": 2, -} - -func (x ServerType) String() string { - return proto.EnumName(ServerType_name, int32(x)) -} -func (ServerType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -type RpcType int32 - -const ( - RpcType_UNARY RpcType = 0 - RpcType_STREAMING RpcType = 1 -) - -var RpcType_name = map[int32]string{ - 0: "UNARY", - 1: "STREAMING", -} -var RpcType_value = map[string]int32{ - "UNARY": 0, - "STREAMING": 1, -} - -func (x RpcType) String() string { - return proto.EnumName(RpcType_name, int32(x)) -} -func (RpcType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -// Parameters of poisson process distribution, which is a good representation -// of activity coming in from independent identical stationary sources. -type PoissonParams struct { - // The rate of arrivals (a.k.a. lambda parameter of the exp distribution). - OfferedLoad float64 `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad" json:"offered_load,omitempty"` -} - -func (m *PoissonParams) Reset() { *m = PoissonParams{} } -func (m *PoissonParams) String() string { return proto.CompactTextString(m) } -func (*PoissonParams) ProtoMessage() {} -func (*PoissonParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *PoissonParams) GetOfferedLoad() float64 { - if m != nil { - return m.OfferedLoad - } - return 0 -} - -type UniformParams struct { - InterarrivalLo float64 `protobuf:"fixed64,1,opt,name=interarrival_lo,json=interarrivalLo" json:"interarrival_lo,omitempty"` - InterarrivalHi float64 `protobuf:"fixed64,2,opt,name=interarrival_hi,json=interarrivalHi" json:"interarrival_hi,omitempty"` -} - -func (m *UniformParams) Reset() { *m = UniformParams{} } -func (m *UniformParams) String() string { return proto.CompactTextString(m) } -func (*UniformParams) ProtoMessage() {} -func (*UniformParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *UniformParams) GetInterarrivalLo() float64 { - if m != nil { - return m.InterarrivalLo - } - return 0 -} - -func (m *UniformParams) GetInterarrivalHi() float64 { - if m != nil { - return m.InterarrivalHi - } - return 0 -} - -type DeterministicParams struct { - OfferedLoad float64 `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad" json:"offered_load,omitempty"` -} - -func (m *DeterministicParams) Reset() { *m = DeterministicParams{} } -func (m *DeterministicParams) String() string { return proto.CompactTextString(m) } -func (*DeterministicParams) ProtoMessage() {} -func (*DeterministicParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *DeterministicParams) GetOfferedLoad() float64 { - if m != nil { - return m.OfferedLoad - } - return 0 -} - -type ParetoParams struct { - InterarrivalBase float64 `protobuf:"fixed64,1,opt,name=interarrival_base,json=interarrivalBase" json:"interarrival_base,omitempty"` - Alpha float64 `protobuf:"fixed64,2,opt,name=alpha" json:"alpha,omitempty"` -} - -func (m *ParetoParams) Reset() { *m = ParetoParams{} } -func (m *ParetoParams) String() string { return proto.CompactTextString(m) } -func (*ParetoParams) ProtoMessage() {} -func (*ParetoParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ParetoParams) GetInterarrivalBase() float64 { - if m != nil { - return m.InterarrivalBase - } - return 0 -} - -func (m *ParetoParams) GetAlpha() float64 { - if m != nil { - return m.Alpha - } - return 0 -} - -// Once an RPC finishes, immediately start a new one. -// No configuration parameters needed. -type ClosedLoopParams struct { -} - -func (m *ClosedLoopParams) Reset() { *m = ClosedLoopParams{} } -func (m *ClosedLoopParams) String() string { return proto.CompactTextString(m) } -func (*ClosedLoopParams) ProtoMessage() {} -func (*ClosedLoopParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -type LoadParams struct { - // Types that are valid to be assigned to Load: - // *LoadParams_ClosedLoop - // *LoadParams_Poisson - // *LoadParams_Uniform - // *LoadParams_Determ - // *LoadParams_Pareto - Load isLoadParams_Load `protobuf_oneof:"load"` -} - -func (m *LoadParams) Reset() { *m = LoadParams{} } -func (m *LoadParams) String() string { return proto.CompactTextString(m) } -func (*LoadParams) ProtoMessage() {} -func (*LoadParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -type isLoadParams_Load interface { - isLoadParams_Load() -} - -type LoadParams_ClosedLoop struct { - ClosedLoop *ClosedLoopParams `protobuf:"bytes,1,opt,name=closed_loop,json=closedLoop,oneof"` -} -type LoadParams_Poisson struct { - Poisson *PoissonParams `protobuf:"bytes,2,opt,name=poisson,oneof"` -} -type LoadParams_Uniform struct { - Uniform *UniformParams `protobuf:"bytes,3,opt,name=uniform,oneof"` -} -type LoadParams_Determ struct { - Determ *DeterministicParams `protobuf:"bytes,4,opt,name=determ,oneof"` -} -type LoadParams_Pareto struct { - Pareto *ParetoParams `protobuf:"bytes,5,opt,name=pareto,oneof"` -} - -func (*LoadParams_ClosedLoop) isLoadParams_Load() {} -func (*LoadParams_Poisson) isLoadParams_Load() {} -func (*LoadParams_Uniform) isLoadParams_Load() {} -func (*LoadParams_Determ) isLoadParams_Load() {} -func (*LoadParams_Pareto) isLoadParams_Load() {} - -func (m *LoadParams) GetLoad() isLoadParams_Load { - if m != nil { - return m.Load - } - return nil -} - -func (m *LoadParams) GetClosedLoop() *ClosedLoopParams { - if x, ok := m.GetLoad().(*LoadParams_ClosedLoop); ok { - return x.ClosedLoop - } - return nil -} - -func (m *LoadParams) GetPoisson() *PoissonParams { - if x, ok := m.GetLoad().(*LoadParams_Poisson); ok { - return x.Poisson - } - return nil -} - -func (m *LoadParams) GetUniform() *UniformParams { - if x, ok := m.GetLoad().(*LoadParams_Uniform); ok { - return x.Uniform - } - return nil -} - -func (m *LoadParams) GetDeterm() *DeterministicParams { - if x, ok := m.GetLoad().(*LoadParams_Determ); ok { - return x.Determ - } - return nil -} - -func (m *LoadParams) GetPareto() *ParetoParams { - if x, ok := m.GetLoad().(*LoadParams_Pareto); ok { - return x.Pareto - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*LoadParams) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _LoadParams_OneofMarshaler, _LoadParams_OneofUnmarshaler, _LoadParams_OneofSizer, []interface{}{ - (*LoadParams_ClosedLoop)(nil), - (*LoadParams_Poisson)(nil), - (*LoadParams_Uniform)(nil), - (*LoadParams_Determ)(nil), - (*LoadParams_Pareto)(nil), - } -} - -func _LoadParams_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*LoadParams) - // load - switch x := m.Load.(type) { - case *LoadParams_ClosedLoop: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ClosedLoop); err != nil { - return err - } - case *LoadParams_Poisson: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Poisson); err != nil { - return err - } - case *LoadParams_Uniform: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Uniform); err != nil { - return err - } - case *LoadParams_Determ: - b.EncodeVarint(4<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Determ); err != nil { - return err - } - case *LoadParams_Pareto: - b.EncodeVarint(5<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Pareto); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("LoadParams.Load has unexpected type %T", x) - } - return nil -} - -func _LoadParams_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*LoadParams) - switch tag { - case 1: // load.closed_loop - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ClosedLoopParams) - err := b.DecodeMessage(msg) - m.Load = &LoadParams_ClosedLoop{msg} - return true, err - case 2: // load.poisson - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(PoissonParams) - err := b.DecodeMessage(msg) - m.Load = &LoadParams_Poisson{msg} - return true, err - case 3: // load.uniform - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(UniformParams) - err := b.DecodeMessage(msg) - m.Load = &LoadParams_Uniform{msg} - return true, err - case 4: // load.determ - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(DeterministicParams) - err := b.DecodeMessage(msg) - m.Load = &LoadParams_Determ{msg} - return true, err - case 5: // load.pareto - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ParetoParams) - err := b.DecodeMessage(msg) - m.Load = &LoadParams_Pareto{msg} - return true, err - default: - return false, nil - } -} - -func _LoadParams_OneofSizer(msg proto.Message) (n int) { - m := msg.(*LoadParams) - // load - switch x := m.Load.(type) { - case *LoadParams_ClosedLoop: - s := proto.Size(x.ClosedLoop) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LoadParams_Poisson: - s := proto.Size(x.Poisson) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LoadParams_Uniform: - s := proto.Size(x.Uniform) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LoadParams_Determ: - s := proto.Size(x.Determ) - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LoadParams_Pareto: - s := proto.Size(x.Pareto) - n += proto.SizeVarint(5<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// presence of SecurityParams implies use of TLS -type SecurityParams struct { - UseTestCa bool `protobuf:"varint,1,opt,name=use_test_ca,json=useTestCa" json:"use_test_ca,omitempty"` - ServerHostOverride string `protobuf:"bytes,2,opt,name=server_host_override,json=serverHostOverride" json:"server_host_override,omitempty"` -} - -func (m *SecurityParams) Reset() { *m = SecurityParams{} } -func (m *SecurityParams) String() string { return proto.CompactTextString(m) } -func (*SecurityParams) ProtoMessage() {} -func (*SecurityParams) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *SecurityParams) GetUseTestCa() bool { - if m != nil { - return m.UseTestCa - } - return false -} - -func (m *SecurityParams) GetServerHostOverride() string { - if m != nil { - return m.ServerHostOverride - } - return "" -} - -type ClientConfig struct { - // List of targets to connect to. At least one target needs to be specified. - ServerTargets []string `protobuf:"bytes,1,rep,name=server_targets,json=serverTargets" json:"server_targets,omitempty"` - ClientType ClientType `protobuf:"varint,2,opt,name=client_type,json=clientType,enum=grpc.testing.ClientType" json:"client_type,omitempty"` - SecurityParams *SecurityParams `protobuf:"bytes,3,opt,name=security_params,json=securityParams" json:"security_params,omitempty"` - // How many concurrent RPCs to start for each channel. - // For synchronous client, use a separate thread for each outstanding RPC. - OutstandingRpcsPerChannel int32 `protobuf:"varint,4,opt,name=outstanding_rpcs_per_channel,json=outstandingRpcsPerChannel" json:"outstanding_rpcs_per_channel,omitempty"` - // Number of independent client channels to create. - // i-th channel will connect to server_target[i % server_targets.size()] - ClientChannels int32 `protobuf:"varint,5,opt,name=client_channels,json=clientChannels" json:"client_channels,omitempty"` - // Only for async client. Number of threads to use to start/manage RPCs. - AsyncClientThreads int32 `protobuf:"varint,7,opt,name=async_client_threads,json=asyncClientThreads" json:"async_client_threads,omitempty"` - RpcType RpcType `protobuf:"varint,8,opt,name=rpc_type,json=rpcType,enum=grpc.testing.RpcType" json:"rpc_type,omitempty"` - // The requested load for the entire client (aggregated over all the threads). - LoadParams *LoadParams `protobuf:"bytes,10,opt,name=load_params,json=loadParams" json:"load_params,omitempty"` - PayloadConfig *PayloadConfig `protobuf:"bytes,11,opt,name=payload_config,json=payloadConfig" json:"payload_config,omitempty"` - HistogramParams *HistogramParams `protobuf:"bytes,12,opt,name=histogram_params,json=histogramParams" json:"histogram_params,omitempty"` - // Specify the cores we should run the client on, if desired - CoreList []int32 `protobuf:"varint,13,rep,packed,name=core_list,json=coreList" json:"core_list,omitempty"` - CoreLimit int32 `protobuf:"varint,14,opt,name=core_limit,json=coreLimit" json:"core_limit,omitempty"` -} - -func (m *ClientConfig) Reset() { *m = ClientConfig{} } -func (m *ClientConfig) String() string { return proto.CompactTextString(m) } -func (*ClientConfig) ProtoMessage() {} -func (*ClientConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ClientConfig) GetServerTargets() []string { - if m != nil { - return m.ServerTargets - } - return nil -} - -func (m *ClientConfig) GetClientType() ClientType { - if m != nil { - return m.ClientType - } - return ClientType_SYNC_CLIENT -} - -func (m *ClientConfig) GetSecurityParams() *SecurityParams { - if m != nil { - return m.SecurityParams - } - return nil -} - -func (m *ClientConfig) GetOutstandingRpcsPerChannel() int32 { - if m != nil { - return m.OutstandingRpcsPerChannel - } - return 0 -} - -func (m *ClientConfig) GetClientChannels() int32 { - if m != nil { - return m.ClientChannels - } - return 0 -} - -func (m *ClientConfig) GetAsyncClientThreads() int32 { - if m != nil { - return m.AsyncClientThreads - } - return 0 -} - -func (m *ClientConfig) GetRpcType() RpcType { - if m != nil { - return m.RpcType - } - return RpcType_UNARY -} - -func (m *ClientConfig) GetLoadParams() *LoadParams { - if m != nil { - return m.LoadParams - } - return nil -} - -func (m *ClientConfig) GetPayloadConfig() *PayloadConfig { - if m != nil { - return m.PayloadConfig - } - return nil -} - -func (m *ClientConfig) GetHistogramParams() *HistogramParams { - if m != nil { - return m.HistogramParams - } - return nil -} - -func (m *ClientConfig) GetCoreList() []int32 { - if m != nil { - return m.CoreList - } - return nil -} - -func (m *ClientConfig) GetCoreLimit() int32 { - if m != nil { - return m.CoreLimit - } - return 0 -} - -type ClientStatus struct { - Stats *ClientStats `protobuf:"bytes,1,opt,name=stats" json:"stats,omitempty"` -} - -func (m *ClientStatus) Reset() { *m = ClientStatus{} } -func (m *ClientStatus) String() string { return proto.CompactTextString(m) } -func (*ClientStatus) ProtoMessage() {} -func (*ClientStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *ClientStatus) GetStats() *ClientStats { - if m != nil { - return m.Stats - } - return nil -} - -// Request current stats -type Mark struct { - // if true, the stats will be reset after taking their snapshot. - Reset_ bool `protobuf:"varint,1,opt,name=reset" json:"reset,omitempty"` -} - -func (m *Mark) Reset() { *m = Mark{} } -func (m *Mark) String() string { return proto.CompactTextString(m) } -func (*Mark) ProtoMessage() {} -func (*Mark) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *Mark) GetReset_() bool { - if m != nil { - return m.Reset_ - } - return false -} - -type ClientArgs struct { - // Types that are valid to be assigned to Argtype: - // *ClientArgs_Setup - // *ClientArgs_Mark - Argtype isClientArgs_Argtype `protobuf_oneof:"argtype"` -} - -func (m *ClientArgs) Reset() { *m = ClientArgs{} } -func (m *ClientArgs) String() string { return proto.CompactTextString(m) } -func (*ClientArgs) ProtoMessage() {} -func (*ClientArgs) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -type isClientArgs_Argtype interface { - isClientArgs_Argtype() -} - -type ClientArgs_Setup struct { - Setup *ClientConfig `protobuf:"bytes,1,opt,name=setup,oneof"` -} -type ClientArgs_Mark struct { - Mark *Mark `protobuf:"bytes,2,opt,name=mark,oneof"` -} - -func (*ClientArgs_Setup) isClientArgs_Argtype() {} -func (*ClientArgs_Mark) isClientArgs_Argtype() {} - -func (m *ClientArgs) GetArgtype() isClientArgs_Argtype { - if m != nil { - return m.Argtype - } - return nil -} - -func (m *ClientArgs) GetSetup() *ClientConfig { - if x, ok := m.GetArgtype().(*ClientArgs_Setup); ok { - return x.Setup - } - return nil -} - -func (m *ClientArgs) GetMark() *Mark { - if x, ok := m.GetArgtype().(*ClientArgs_Mark); ok { - return x.Mark - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ClientArgs) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ClientArgs_OneofMarshaler, _ClientArgs_OneofUnmarshaler, _ClientArgs_OneofSizer, []interface{}{ - (*ClientArgs_Setup)(nil), - (*ClientArgs_Mark)(nil), - } -} - -func _ClientArgs_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ClientArgs) - // argtype - switch x := m.Argtype.(type) { - case *ClientArgs_Setup: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Setup); err != nil { - return err - } - case *ClientArgs_Mark: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Mark); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ClientArgs.Argtype has unexpected type %T", x) - } - return nil -} - -func _ClientArgs_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ClientArgs) - switch tag { - case 1: // argtype.setup - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ClientConfig) - err := b.DecodeMessage(msg) - m.Argtype = &ClientArgs_Setup{msg} - return true, err - case 2: // argtype.mark - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mark) - err := b.DecodeMessage(msg) - m.Argtype = &ClientArgs_Mark{msg} - return true, err - default: - return false, nil - } -} - -func _ClientArgs_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ClientArgs) - // argtype - switch x := m.Argtype.(type) { - case *ClientArgs_Setup: - s := proto.Size(x.Setup) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ClientArgs_Mark: - s := proto.Size(x.Mark) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type ServerConfig struct { - ServerType ServerType `protobuf:"varint,1,opt,name=server_type,json=serverType,enum=grpc.testing.ServerType" json:"server_type,omitempty"` - SecurityParams *SecurityParams `protobuf:"bytes,2,opt,name=security_params,json=securityParams" json:"security_params,omitempty"` - // Port on which to listen. Zero means pick unused port. - Port int32 `protobuf:"varint,4,opt,name=port" json:"port,omitempty"` - // Only for async server. Number of threads used to serve the requests. - AsyncServerThreads int32 `protobuf:"varint,7,opt,name=async_server_threads,json=asyncServerThreads" json:"async_server_threads,omitempty"` - // Specify the number of cores to limit server to, if desired - CoreLimit int32 `protobuf:"varint,8,opt,name=core_limit,json=coreLimit" json:"core_limit,omitempty"` - // payload config, used in generic server - PayloadConfig *PayloadConfig `protobuf:"bytes,9,opt,name=payload_config,json=payloadConfig" json:"payload_config,omitempty"` - // Specify the cores we should run the server on, if desired - CoreList []int32 `protobuf:"varint,10,rep,packed,name=core_list,json=coreList" json:"core_list,omitempty"` -} - -func (m *ServerConfig) Reset() { *m = ServerConfig{} } -func (m *ServerConfig) String() string { return proto.CompactTextString(m) } -func (*ServerConfig) ProtoMessage() {} -func (*ServerConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *ServerConfig) GetServerType() ServerType { - if m != nil { - return m.ServerType - } - return ServerType_SYNC_SERVER -} - -func (m *ServerConfig) GetSecurityParams() *SecurityParams { - if m != nil { - return m.SecurityParams - } - return nil -} - -func (m *ServerConfig) GetPort() int32 { - if m != nil { - return m.Port - } - return 0 -} - -func (m *ServerConfig) GetAsyncServerThreads() int32 { - if m != nil { - return m.AsyncServerThreads - } - return 0 -} - -func (m *ServerConfig) GetCoreLimit() int32 { - if m != nil { - return m.CoreLimit - } - return 0 -} - -func (m *ServerConfig) GetPayloadConfig() *PayloadConfig { - if m != nil { - return m.PayloadConfig - } - return nil -} - -func (m *ServerConfig) GetCoreList() []int32 { - if m != nil { - return m.CoreList - } - return nil -} - -type ServerArgs struct { - // Types that are valid to be assigned to Argtype: - // *ServerArgs_Setup - // *ServerArgs_Mark - Argtype isServerArgs_Argtype `protobuf_oneof:"argtype"` -} - -func (m *ServerArgs) Reset() { *m = ServerArgs{} } -func (m *ServerArgs) String() string { return proto.CompactTextString(m) } -func (*ServerArgs) ProtoMessage() {} -func (*ServerArgs) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } - -type isServerArgs_Argtype interface { - isServerArgs_Argtype() -} - -type ServerArgs_Setup struct { - Setup *ServerConfig `protobuf:"bytes,1,opt,name=setup,oneof"` -} -type ServerArgs_Mark struct { - Mark *Mark `protobuf:"bytes,2,opt,name=mark,oneof"` -} - -func (*ServerArgs_Setup) isServerArgs_Argtype() {} -func (*ServerArgs_Mark) isServerArgs_Argtype() {} - -func (m *ServerArgs) GetArgtype() isServerArgs_Argtype { - if m != nil { - return m.Argtype - } - return nil -} - -func (m *ServerArgs) GetSetup() *ServerConfig { - if x, ok := m.GetArgtype().(*ServerArgs_Setup); ok { - return x.Setup - } - return nil -} - -func (m *ServerArgs) GetMark() *Mark { - if x, ok := m.GetArgtype().(*ServerArgs_Mark); ok { - return x.Mark - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*ServerArgs) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _ServerArgs_OneofMarshaler, _ServerArgs_OneofUnmarshaler, _ServerArgs_OneofSizer, []interface{}{ - (*ServerArgs_Setup)(nil), - (*ServerArgs_Mark)(nil), - } -} - -func _ServerArgs_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*ServerArgs) - // argtype - switch x := m.Argtype.(type) { - case *ServerArgs_Setup: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Setup); err != nil { - return err - } - case *ServerArgs_Mark: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.Mark); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("ServerArgs.Argtype has unexpected type %T", x) - } - return nil -} - -func _ServerArgs_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*ServerArgs) - switch tag { - case 1: // argtype.setup - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ServerConfig) - err := b.DecodeMessage(msg) - m.Argtype = &ServerArgs_Setup{msg} - return true, err - case 2: // argtype.mark - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(Mark) - err := b.DecodeMessage(msg) - m.Argtype = &ServerArgs_Mark{msg} - return true, err - default: - return false, nil - } -} - -func _ServerArgs_OneofSizer(msg proto.Message) (n int) { - m := msg.(*ServerArgs) - // argtype - switch x := m.Argtype.(type) { - case *ServerArgs_Setup: - s := proto.Size(x.Setup) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *ServerArgs_Mark: - s := proto.Size(x.Mark) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type ServerStatus struct { - Stats *ServerStats `protobuf:"bytes,1,opt,name=stats" json:"stats,omitempty"` - // the port bound by the server - Port int32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"` - // Number of cores available to the server - Cores int32 `protobuf:"varint,3,opt,name=cores" json:"cores,omitempty"` -} - -func (m *ServerStatus) Reset() { *m = ServerStatus{} } -func (m *ServerStatus) String() string { return proto.CompactTextString(m) } -func (*ServerStatus) ProtoMessage() {} -func (*ServerStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } - -func (m *ServerStatus) GetStats() *ServerStats { - if m != nil { - return m.Stats - } - return nil -} - -func (m *ServerStatus) GetPort() int32 { - if m != nil { - return m.Port - } - return 0 -} - -func (m *ServerStatus) GetCores() int32 { - if m != nil { - return m.Cores - } - return 0 -} - -type CoreRequest struct { -} - -func (m *CoreRequest) Reset() { *m = CoreRequest{} } -func (m *CoreRequest) String() string { return proto.CompactTextString(m) } -func (*CoreRequest) ProtoMessage() {} -func (*CoreRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } - -type CoreResponse struct { - // Number of cores available on the server - Cores int32 `protobuf:"varint,1,opt,name=cores" json:"cores,omitempty"` -} - -func (m *CoreResponse) Reset() { *m = CoreResponse{} } -func (m *CoreResponse) String() string { return proto.CompactTextString(m) } -func (*CoreResponse) ProtoMessage() {} -func (*CoreResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } - -func (m *CoreResponse) GetCores() int32 { - if m != nil { - return m.Cores - } - return 0 -} - -type Void struct { -} - -func (m *Void) Reset() { *m = Void{} } -func (m *Void) String() string { return proto.CompactTextString(m) } -func (*Void) ProtoMessage() {} -func (*Void) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } - -// A single performance scenario: input to qps_json_driver -type Scenario struct { - // Human readable name for this scenario - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Client configuration - ClientConfig *ClientConfig `protobuf:"bytes,2,opt,name=client_config,json=clientConfig" json:"client_config,omitempty"` - // Number of clients to start for the test - NumClients int32 `protobuf:"varint,3,opt,name=num_clients,json=numClients" json:"num_clients,omitempty"` - // Server configuration - ServerConfig *ServerConfig `protobuf:"bytes,4,opt,name=server_config,json=serverConfig" json:"server_config,omitempty"` - // Number of servers to start for the test - NumServers int32 `protobuf:"varint,5,opt,name=num_servers,json=numServers" json:"num_servers,omitempty"` - // Warmup period, in seconds - WarmupSeconds int32 `protobuf:"varint,6,opt,name=warmup_seconds,json=warmupSeconds" json:"warmup_seconds,omitempty"` - // Benchmark time, in seconds - BenchmarkSeconds int32 `protobuf:"varint,7,opt,name=benchmark_seconds,json=benchmarkSeconds" json:"benchmark_seconds,omitempty"` - // Number of workers to spawn locally (usually zero) - SpawnLocalWorkerCount int32 `protobuf:"varint,8,opt,name=spawn_local_worker_count,json=spawnLocalWorkerCount" json:"spawn_local_worker_count,omitempty"` -} - -func (m *Scenario) Reset() { *m = Scenario{} } -func (m *Scenario) String() string { return proto.CompactTextString(m) } -func (*Scenario) ProtoMessage() {} -func (*Scenario) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } - -func (m *Scenario) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Scenario) GetClientConfig() *ClientConfig { - if m != nil { - return m.ClientConfig - } - return nil -} - -func (m *Scenario) GetNumClients() int32 { - if m != nil { - return m.NumClients - } - return 0 -} - -func (m *Scenario) GetServerConfig() *ServerConfig { - if m != nil { - return m.ServerConfig - } - return nil -} - -func (m *Scenario) GetNumServers() int32 { - if m != nil { - return m.NumServers - } - return 0 -} - -func (m *Scenario) GetWarmupSeconds() int32 { - if m != nil { - return m.WarmupSeconds - } - return 0 -} - -func (m *Scenario) GetBenchmarkSeconds() int32 { - if m != nil { - return m.BenchmarkSeconds - } - return 0 -} - -func (m *Scenario) GetSpawnLocalWorkerCount() int32 { - if m != nil { - return m.SpawnLocalWorkerCount - } - return 0 -} - -// A set of scenarios to be run with qps_json_driver -type Scenarios struct { - Scenarios []*Scenario `protobuf:"bytes,1,rep,name=scenarios" json:"scenarios,omitempty"` -} - -func (m *Scenarios) Reset() { *m = Scenarios{} } -func (m *Scenarios) String() string { return proto.CompactTextString(m) } -func (*Scenarios) ProtoMessage() {} -func (*Scenarios) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } - -func (m *Scenarios) GetScenarios() []*Scenario { - if m != nil { - return m.Scenarios - } - return nil -} - -func init() { - proto.RegisterType((*PoissonParams)(nil), "grpc.testing.PoissonParams") - proto.RegisterType((*UniformParams)(nil), "grpc.testing.UniformParams") - proto.RegisterType((*DeterministicParams)(nil), "grpc.testing.DeterministicParams") - proto.RegisterType((*ParetoParams)(nil), "grpc.testing.ParetoParams") - proto.RegisterType((*ClosedLoopParams)(nil), "grpc.testing.ClosedLoopParams") - proto.RegisterType((*LoadParams)(nil), "grpc.testing.LoadParams") - proto.RegisterType((*SecurityParams)(nil), "grpc.testing.SecurityParams") - proto.RegisterType((*ClientConfig)(nil), "grpc.testing.ClientConfig") - proto.RegisterType((*ClientStatus)(nil), "grpc.testing.ClientStatus") - proto.RegisterType((*Mark)(nil), "grpc.testing.Mark") - proto.RegisterType((*ClientArgs)(nil), "grpc.testing.ClientArgs") - proto.RegisterType((*ServerConfig)(nil), "grpc.testing.ServerConfig") - proto.RegisterType((*ServerArgs)(nil), "grpc.testing.ServerArgs") - proto.RegisterType((*ServerStatus)(nil), "grpc.testing.ServerStatus") - proto.RegisterType((*CoreRequest)(nil), "grpc.testing.CoreRequest") - proto.RegisterType((*CoreResponse)(nil), "grpc.testing.CoreResponse") - proto.RegisterType((*Void)(nil), "grpc.testing.Void") - proto.RegisterType((*Scenario)(nil), "grpc.testing.Scenario") - proto.RegisterType((*Scenarios)(nil), "grpc.testing.Scenarios") - proto.RegisterEnum("grpc.testing.ClientType", ClientType_name, ClientType_value) - proto.RegisterEnum("grpc.testing.ServerType", ServerType_name, ServerType_value) - proto.RegisterEnum("grpc.testing.RpcType", RpcType_name, RpcType_value) -} - -func init() { proto.RegisterFile("control.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 1179 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x6f, 0x6f, 0xdb, 0xb6, - 0x13, 0xb6, 0x1d, 0xdb, 0xb1, 0x4e, 0xb6, 0xe3, 0x1f, 0x7f, 0xe9, 0xa0, 0xa6, 0x69, 0x97, 0x6a, - 0x1b, 0x16, 0x64, 0x40, 0x5a, 0x78, 0x05, 0xba, 0x62, 0x2f, 0x02, 0xc7, 0x33, 0xea, 0x00, 0x69, - 0x96, 0xd1, 0x69, 0x87, 0xbe, 0x12, 0x18, 0x99, 0xb1, 0x85, 0xc8, 0xa2, 0x46, 0x52, 0x09, 0xf2, - 0x15, 0xf6, 0x99, 0xf6, 0x39, 0xf6, 0x35, 0xf6, 0x15, 0x06, 0xfe, 0x91, 0x23, 0xb9, 0x06, 0x9a, - 0x6d, 0xef, 0xc4, 0xbb, 0xe7, 0xe1, 0x91, 0xf7, 0xdc, 0x1d, 0x05, 0x9d, 0x90, 0x25, 0x92, 0xb3, - 0xf8, 0x30, 0xe5, 0x4c, 0x32, 0xd4, 0x9e, 0xf1, 0x34, 0x3c, 0x94, 0x54, 0xc8, 0x28, 0x99, 0xed, - 0x74, 0x53, 0x72, 0x17, 0x33, 0x32, 0x15, 0xc6, 0xbb, 0xe3, 0x0a, 0x49, 0xa4, 0x5d, 0xf8, 0x7d, - 0xe8, 0x9c, 0xb3, 0x48, 0x08, 0x96, 0x9c, 0x13, 0x4e, 0x16, 0x02, 0x3d, 0x87, 0x36, 0xbb, 0xba, - 0xa2, 0x9c, 0x4e, 0x03, 0x45, 0xf2, 0xaa, 0x7b, 0xd5, 0xfd, 0x2a, 0x76, 0xad, 0xed, 0x94, 0x91, - 0xa9, 0x4f, 0xa0, 0xf3, 0x3e, 0x89, 0xae, 0x18, 0x5f, 0x58, 0xce, 0xb7, 0xb0, 0x15, 0x25, 0x92, - 0x72, 0xc2, 0x79, 0x74, 0x43, 0xe2, 0x20, 0x66, 0x96, 0xd6, 0x2d, 0x9a, 0x4f, 0xd9, 0x27, 0xc0, - 0x79, 0xe4, 0xd5, 0x3e, 0x05, 0x8e, 0x23, 0xff, 0x07, 0xf8, 0xff, 0x4f, 0x54, 0x52, 0xbe, 0x88, - 0x92, 0x48, 0xc8, 0x28, 0x7c, 0xf8, 0xe1, 0x7e, 0x81, 0xf6, 0x39, 0xe1, 0x54, 0x32, 0x4b, 0xf9, - 0x0e, 0xfe, 0x57, 0x0a, 0x79, 0x49, 0x04, 0xb5, 0xbc, 0x5e, 0xd1, 0x71, 0x4c, 0x04, 0x45, 0xdb, - 0xd0, 0x20, 0x71, 0x3a, 0x27, 0xf6, 0x54, 0x66, 0xe1, 0x23, 0xe8, 0x0d, 0x63, 0x26, 0x54, 0x00, - 0x96, 0x9a, 0x6d, 0xfd, 0x3f, 0x6a, 0x00, 0x2a, 0x9e, 0x8d, 0x32, 0x00, 0x37, 0xd4, 0x90, 0x20, - 0x66, 0x2c, 0xd5, 0xfb, 0xbb, 0xfd, 0x67, 0x87, 0x45, 0x1d, 0x0e, 0x57, 0xf7, 0x18, 0x57, 0x30, - 0x84, 0x4b, 0x1b, 0x7a, 0x0d, 0x9b, 0xa9, 0x51, 0x42, 0x47, 0x77, 0xfb, 0x4f, 0xca, 0xf4, 0x92, - 0x4c, 0xe3, 0x0a, 0xce, 0xd1, 0x8a, 0x98, 0x19, 0x39, 0xbc, 0x8d, 0x75, 0xc4, 0x92, 0x56, 0x8a, - 0x68, 0xd1, 0xe8, 0x47, 0x68, 0x4e, 0x75, 0x92, 0xbd, 0xba, 0xe6, 0x3d, 0x2f, 0xf3, 0xd6, 0x08, - 0x30, 0xae, 0x60, 0x4b, 0x41, 0xaf, 0xa0, 0x99, 0xea, 0x3c, 0x7b, 0x0d, 0x4d, 0xde, 0x59, 0x39, - 0x6d, 0x41, 0x03, 0xc5, 0x32, 0xd8, 0xe3, 0x26, 0xd4, 0x95, 0x70, 0xfe, 0x25, 0x74, 0x27, 0x34, - 0xcc, 0x78, 0x24, 0xef, 0x6c, 0x06, 0x9f, 0x81, 0x9b, 0x09, 0x1a, 0x28, 0x7e, 0x10, 0x12, 0x9d, - 0xc1, 0x16, 0x76, 0x32, 0x41, 0x2f, 0xa8, 0x90, 0x43, 0x82, 0x5e, 0xc2, 0xb6, 0xa0, 0xfc, 0x86, - 0xf2, 0x60, 0xce, 0x84, 0x0c, 0xd8, 0x0d, 0xe5, 0x3c, 0x9a, 0x52, 0x9d, 0x2b, 0x07, 0x23, 0xe3, - 0x1b, 0x33, 0x21, 0x7f, 0xb6, 0x1e, 0xff, 0xf7, 0x06, 0xb4, 0x87, 0x71, 0x44, 0x13, 0x39, 0x64, - 0xc9, 0x55, 0x34, 0x43, 0xdf, 0x40, 0xd7, 0x6e, 0x21, 0x09, 0x9f, 0x51, 0x29, 0xbc, 0xea, 0xde, - 0xc6, 0xbe, 0x83, 0x3b, 0xc6, 0x7a, 0x61, 0x8c, 0xe8, 0x8d, 0xd2, 0x52, 0xd1, 0x02, 0x79, 0x97, - 0x9a, 0x00, 0xdd, 0xbe, 0xb7, 0xaa, 0xa5, 0x02, 0x5c, 0xdc, 0xa5, 0x54, 0x69, 0x98, 0x7f, 0xa3, - 0x11, 0x6c, 0x09, 0x7b, 0xad, 0x20, 0xd5, 0xf7, 0xb2, 0x92, 0xec, 0x96, 0xe9, 0xe5, 0xbb, 0xe3, - 0xae, 0x28, 0xe7, 0xe2, 0x08, 0x76, 0x59, 0x26, 0x85, 0x24, 0xc9, 0x34, 0x4a, 0x66, 0x01, 0x4f, - 0x43, 0x11, 0xa4, 0x94, 0x07, 0xe1, 0x9c, 0x24, 0x09, 0x8d, 0xb5, 0x5c, 0x0d, 0xfc, 0xb8, 0x80, - 0xc1, 0x69, 0x28, 0xce, 0x29, 0x1f, 0x1a, 0x80, 0xea, 0x33, 0x7b, 0x05, 0x4b, 0x11, 0x5a, 0xa5, - 0x06, 0xee, 0x1a, 0xb3, 0xc5, 0x09, 0x95, 0x55, 0x22, 0xee, 0x92, 0x30, 0xc8, 0x6f, 0x3c, 0xe7, - 0x94, 0x4c, 0x85, 0xb7, 0xa9, 0xd1, 0x48, 0xfb, 0xec, 0x5d, 0x8d, 0x07, 0xbd, 0x84, 0x16, 0x4f, - 0x43, 0x93, 0x9a, 0x96, 0x4e, 0xcd, 0xa3, 0xf2, 0xdd, 0x70, 0x1a, 0xea, 0xbc, 0x6c, 0x72, 0xf3, - 0xa1, 0xf2, 0xa9, 0x34, 0xcf, 0x13, 0x02, 0x3a, 0x21, 0x2b, 0xf9, 0xbc, 0x6f, 0x25, 0x0c, 0xf1, - 0x7d, 0x5b, 0x1d, 0x43, 0x3e, 0xbc, 0x82, 0x50, 0x6b, 0xe8, 0xb9, 0x6b, 0x5b, 0xc3, 0x60, 0x8c, - 0xcc, 0xb8, 0x93, 0x16, 0x97, 0x68, 0x0c, 0xbd, 0x79, 0x24, 0x24, 0x9b, 0x71, 0xb2, 0xc8, 0xcf, - 0xd0, 0xd6, 0xbb, 0x3c, 0x2d, 0xef, 0x32, 0xce, 0x51, 0xf6, 0x20, 0x5b, 0xf3, 0xb2, 0x01, 0x3d, - 0x01, 0x27, 0x64, 0x9c, 0x06, 0x71, 0x24, 0xa4, 0xd7, 0xd9, 0xdb, 0xd8, 0x6f, 0xe0, 0x96, 0x32, - 0x9c, 0x46, 0x42, 0xa2, 0xa7, 0x00, 0xd6, 0xb9, 0x88, 0xa4, 0xd7, 0xd5, 0xf9, 0x73, 0x8c, 0x77, - 0x11, 0x49, 0xff, 0x28, 0xaf, 0xc5, 0x89, 0x24, 0x32, 0x13, 0xe8, 0x05, 0x34, 0xf4, 0x18, 0xb6, - 0xa3, 0xe2, 0xf1, 0xba, 0xf2, 0x52, 0x50, 0x81, 0x0d, 0xce, 0xdf, 0x85, 0xfa, 0x3b, 0xc2, 0xaf, - 0xd5, 0x88, 0xe2, 0x54, 0x50, 0x69, 0x3b, 0xc4, 0x2c, 0xfc, 0x0c, 0xc0, 0x70, 0x06, 0x7c, 0x26, - 0x50, 0x1f, 0x1a, 0x82, 0xca, 0x2c, 0x9f, 0x43, 0x3b, 0xeb, 0x36, 0x37, 0xd9, 0x19, 0x57, 0xb0, - 0x81, 0xa2, 0x7d, 0xa8, 0x2f, 0x08, 0xbf, 0xb6, 0xb3, 0x07, 0x95, 0x29, 0x2a, 0xf2, 0xb8, 0x82, - 0x35, 0xe2, 0xd8, 0x81, 0x4d, 0xc2, 0x67, 0xaa, 0x00, 0xfc, 0x3f, 0x6b, 0xd0, 0x9e, 0xe8, 0xe6, - 0xb1, 0xc9, 0x7e, 0x03, 0x6e, 0xde, 0x62, 0xaa, 0x40, 0xaa, 0xeb, 0x7a, 0xc7, 0x10, 0x4c, 0xef, - 0x88, 0xe5, 0xf7, 0xba, 0xde, 0xa9, 0xfd, 0x8b, 0xde, 0x41, 0x50, 0x4f, 0x19, 0x97, 0xb6, 0x47, - 0xf4, 0xf7, 0x7d, 0x95, 0xe7, 0x67, 0x5b, 0x53, 0xe5, 0xf6, 0x54, 0xb6, 0xca, 0xcb, 0x6a, 0xb6, - 0x56, 0xd4, 0x5c, 0x53, 0x97, 0xce, 0x3f, 0xae, 0xcb, 0x52, 0x35, 0x41, 0xb9, 0x9a, 0x94, 0x9e, - 0xe6, 0x40, 0x0f, 0xd0, 0xb3, 0x28, 0xc0, 0x7f, 0xd4, 0x33, 0xca, 0xe5, 0x7c, 0x50, 0x95, 0xde, - 0x43, 0xf3, 0x2a, 0x5d, 0x66, 0xbf, 0x56, 0xc8, 0xfe, 0x36, 0x34, 0xd4, 0xbd, 0xcc, 0x28, 0x6c, - 0x60, 0xb3, 0xf0, 0x3b, 0xe0, 0x0e, 0x19, 0xa7, 0x98, 0xfe, 0x96, 0x51, 0x21, 0xfd, 0xaf, 0xa1, - 0x6d, 0x96, 0x22, 0x65, 0x89, 0x79, 0x89, 0x0d, 0xa9, 0x5a, 0x24, 0x35, 0xa1, 0xfe, 0x81, 0x45, - 0x53, 0xff, 0xaf, 0x1a, 0xb4, 0x26, 0x21, 0x4d, 0x08, 0x8f, 0x98, 0x8a, 0x99, 0x90, 0x85, 0x29, - 0x36, 0x07, 0xeb, 0x6f, 0x74, 0x04, 0x9d, 0x7c, 0x00, 0x1a, 0x7d, 0x6a, 0x9f, 0xeb, 0x04, 0xdc, - 0x0e, 0x8b, 0x6f, 0xc5, 0x97, 0xe0, 0x26, 0xd9, 0xc2, 0x8e, 0xc5, 0xfc, 0xe8, 0x90, 0x64, 0x0b, - 0xc3, 0x51, 0x33, 0xda, 0x3e, 0x1b, 0x79, 0x84, 0xfa, 0xe7, 0xb4, 0xc1, 0x6d, 0x51, 0x6c, 0x15, - 0x1b, 0xc1, 0xd8, 0xf2, 0xf9, 0xac, 0x22, 0x18, 0x8e, 0x50, 0xcf, 0xd5, 0x2d, 0xe1, 0x8b, 0x2c, - 0x0d, 0x04, 0x0d, 0x59, 0x32, 0x15, 0x5e, 0x53, 0x63, 0x3a, 0xc6, 0x3a, 0x31, 0x46, 0xf5, 0x83, - 0x73, 0x49, 0x93, 0x70, 0xae, 0xb4, 0x5c, 0x22, 0x4d, 0x65, 0xf7, 0x96, 0x8e, 0x1c, 0xfc, 0x1a, - 0x3c, 0x91, 0x92, 0xdb, 0x24, 0x88, 0x59, 0x48, 0xe2, 0xe0, 0x96, 0xf1, 0x6b, 0x7d, 0x83, 0x2c, - 0xc9, 0xab, 0xfc, 0x91, 0xf6, 0x9f, 0x2a, 0xf7, 0xaf, 0xda, 0x3b, 0x54, 0x4e, 0x7f, 0x00, 0x4e, - 0x9e, 0x70, 0x81, 0x5e, 0x81, 0x23, 0xf2, 0x85, 0x7e, 0x43, 0xdd, 0xfe, 0x17, 0x2b, 0xf7, 0xb6, - 0x6e, 0x7c, 0x0f, 0x3c, 0x78, 0x91, 0xcf, 0x28, 0xdd, 0xee, 0x5b, 0xe0, 0x4e, 0x3e, 0x9e, 0x0d, - 0x83, 0xe1, 0xe9, 0xc9, 0xe8, 0xec, 0xa2, 0x57, 0x41, 0x3d, 0x68, 0x0f, 0x8a, 0x96, 0xea, 0xc1, - 0x49, 0xde, 0x04, 0x25, 0xc2, 0x64, 0x84, 0x3f, 0x8c, 0x70, 0x91, 0x60, 0x2d, 0x55, 0xe4, 0xc1, - 0xb6, 0xb1, 0xbc, 0x1d, 0x9d, 0x8d, 0xf0, 0xc9, 0xd2, 0x53, 0x3b, 0xf8, 0x0a, 0x36, 0xed, 0xbb, - 0x84, 0x1c, 0x68, 0xbc, 0x3f, 0x1b, 0xe0, 0x8f, 0xbd, 0x0a, 0xea, 0x80, 0x33, 0xb9, 0xc0, 0xa3, - 0xc1, 0xbb, 0x93, 0xb3, 0xb7, 0xbd, 0xea, 0x65, 0x53, 0xff, 0x12, 0x7f, 0xff, 0x77, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x75, 0x59, 0xf4, 0x03, 0x4e, 0x0b, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/control.proto b/vendor/google.golang.org/grpc/benchmark/grpc_testing/control.proto deleted file mode 100644 index 9379ef49..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/control.proto +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2016 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -import "payloads.proto"; -import "stats.proto"; - -package grpc.testing; - -enum ClientType { - SYNC_CLIENT = 0; - ASYNC_CLIENT = 1; -} - -enum ServerType { - SYNC_SERVER = 0; - ASYNC_SERVER = 1; - ASYNC_GENERIC_SERVER = 2; -} - -enum RpcType { - UNARY = 0; - STREAMING = 1; -} - -// Parameters of poisson process distribution, which is a good representation -// of activity coming in from independent identical stationary sources. -message PoissonParams { - // The rate of arrivals (a.k.a. lambda parameter of the exp distribution). - double offered_load = 1; -} - -message UniformParams { - double interarrival_lo = 1; - double interarrival_hi = 2; -} - -message DeterministicParams { - double offered_load = 1; -} - -message ParetoParams { - double interarrival_base = 1; - double alpha = 2; -} - -// Once an RPC finishes, immediately start a new one. -// No configuration parameters needed. -message ClosedLoopParams { -} - -message LoadParams { - oneof load { - ClosedLoopParams closed_loop = 1; - PoissonParams poisson = 2; - UniformParams uniform = 3; - DeterministicParams determ = 4; - ParetoParams pareto = 5; - }; -} - -// presence of SecurityParams implies use of TLS -message SecurityParams { - bool use_test_ca = 1; - string server_host_override = 2; -} - -message ClientConfig { - // List of targets to connect to. At least one target needs to be specified. - repeated string server_targets = 1; - ClientType client_type = 2; - SecurityParams security_params = 3; - // How many concurrent RPCs to start for each channel. - // For synchronous client, use a separate thread for each outstanding RPC. - int32 outstanding_rpcs_per_channel = 4; - // Number of independent client channels to create. - // i-th channel will connect to server_target[i % server_targets.size()] - int32 client_channels = 5; - // Only for async client. Number of threads to use to start/manage RPCs. - int32 async_client_threads = 7; - RpcType rpc_type = 8; - // The requested load for the entire client (aggregated over all the threads). - LoadParams load_params = 10; - PayloadConfig payload_config = 11; - HistogramParams histogram_params = 12; - - // Specify the cores we should run the client on, if desired - repeated int32 core_list = 13; - int32 core_limit = 14; -} - -message ClientStatus { - ClientStats stats = 1; -} - -// Request current stats -message Mark { - // if true, the stats will be reset after taking their snapshot. - bool reset = 1; -} - -message ClientArgs { - oneof argtype { - ClientConfig setup = 1; - Mark mark = 2; - } -} - -message ServerConfig { - ServerType server_type = 1; - SecurityParams security_params = 2; - // Port on which to listen. Zero means pick unused port. - int32 port = 4; - // Only for async server. Number of threads used to serve the requests. - int32 async_server_threads = 7; - // Specify the number of cores to limit server to, if desired - int32 core_limit = 8; - // payload config, used in generic server - PayloadConfig payload_config = 9; - - // Specify the cores we should run the server on, if desired - repeated int32 core_list = 10; -} - -message ServerArgs { - oneof argtype { - ServerConfig setup = 1; - Mark mark = 2; - } -} - -message ServerStatus { - ServerStats stats = 1; - // the port bound by the server - int32 port = 2; - // Number of cores available to the server - int32 cores = 3; -} - -message CoreRequest { -} - -message CoreResponse { - // Number of cores available on the server - int32 cores = 1; -} - -message Void { -} - -// A single performance scenario: input to qps_json_driver -message Scenario { - // Human readable name for this scenario - string name = 1; - // Client configuration - ClientConfig client_config = 2; - // Number of clients to start for the test - int32 num_clients = 3; - // Server configuration - ServerConfig server_config = 4; - // Number of servers to start for the test - int32 num_servers = 5; - // Warmup period, in seconds - int32 warmup_seconds = 6; - // Benchmark time, in seconds - int32 benchmark_seconds = 7; - // Number of workers to spawn locally (usually zero) - int32 spawn_local_worker_count = 8; -} - -// A set of scenarios to be run with qps_json_driver -message Scenarios { - repeated Scenario scenarios = 1; -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/messages.pb.go b/vendor/google.golang.org/grpc/benchmark/grpc_testing/messages.pb.go deleted file mode 100644 index b34c5d59..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/messages.pb.go +++ /dev/null @@ -1,479 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: messages.proto - -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// The type of payload that should be returned. -type PayloadType int32 - -const ( - // Compressable text format. - PayloadType_COMPRESSABLE PayloadType = 0 - // Uncompressable binary format. - PayloadType_UNCOMPRESSABLE PayloadType = 1 - // Randomly chosen from all other formats defined in this enum. - PayloadType_RANDOM PayloadType = 2 -) - -var PayloadType_name = map[int32]string{ - 0: "COMPRESSABLE", - 1: "UNCOMPRESSABLE", - 2: "RANDOM", -} -var PayloadType_value = map[string]int32{ - "COMPRESSABLE": 0, - "UNCOMPRESSABLE": 1, - "RANDOM": 2, -} - -func (x PayloadType) String() string { - return proto.EnumName(PayloadType_name, int32(x)) -} -func (PayloadType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -// Compression algorithms -type CompressionType int32 - -const ( - // No compression - CompressionType_NONE CompressionType = 0 - CompressionType_GZIP CompressionType = 1 - CompressionType_DEFLATE CompressionType = 2 -) - -var CompressionType_name = map[int32]string{ - 0: "NONE", - 1: "GZIP", - 2: "DEFLATE", -} -var CompressionType_value = map[string]int32{ - "NONE": 0, - "GZIP": 1, - "DEFLATE": 2, -} - -func (x CompressionType) String() string { - return proto.EnumName(CompressionType_name, int32(x)) -} -func (CompressionType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -// A block of data, to simply increase gRPC message size. -type Payload struct { - // The type of data in body. - Type PayloadType `protobuf:"varint,1,opt,name=type,enum=grpc.testing.PayloadType" json:"type,omitempty"` - // Primary contents of payload. - Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` -} - -func (m *Payload) Reset() { *m = Payload{} } -func (m *Payload) String() string { return proto.CompactTextString(m) } -func (*Payload) ProtoMessage() {} -func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Payload) GetType() PayloadType { - if m != nil { - return m.Type - } - return PayloadType_COMPRESSABLE -} - -func (m *Payload) GetBody() []byte { - if m != nil { - return m.Body - } - return nil -} - -// A protobuf representation for grpc status. This is used by test -// clients to specify a status that the server should attempt to return. -type EchoStatus struct { - Code int32 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` -} - -func (m *EchoStatus) Reset() { *m = EchoStatus{} } -func (m *EchoStatus) String() string { return proto.CompactTextString(m) } -func (*EchoStatus) ProtoMessage() {} -func (*EchoStatus) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } - -func (m *EchoStatus) GetCode() int32 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *EchoStatus) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -// Unary request. -type SimpleRequest struct { - // Desired payload type in the response from the server. - // If response_type is RANDOM, server randomly chooses one from other formats. - ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,enum=grpc.testing.PayloadType" json:"response_type,omitempty"` - // Desired payload size in the response from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - ResponseSize int32 `protobuf:"varint,2,opt,name=response_size,json=responseSize" json:"response_size,omitempty"` - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"` - // Whether SimpleResponse should include username. - FillUsername bool `protobuf:"varint,4,opt,name=fill_username,json=fillUsername" json:"fill_username,omitempty"` - // Whether SimpleResponse should include OAuth scope. - FillOauthScope bool `protobuf:"varint,5,opt,name=fill_oauth_scope,json=fillOauthScope" json:"fill_oauth_scope,omitempty"` - // Compression algorithm to be used by the server for the response (stream) - ResponseCompression CompressionType `protobuf:"varint,6,opt,name=response_compression,json=responseCompression,enum=grpc.testing.CompressionType" json:"response_compression,omitempty"` - // Whether server should return a given status - ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus" json:"response_status,omitempty"` -} - -func (m *SimpleRequest) Reset() { *m = SimpleRequest{} } -func (m *SimpleRequest) String() string { return proto.CompactTextString(m) } -func (*SimpleRequest) ProtoMessage() {} -func (*SimpleRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } - -func (m *SimpleRequest) GetResponseType() PayloadType { - if m != nil { - return m.ResponseType - } - return PayloadType_COMPRESSABLE -} - -func (m *SimpleRequest) GetResponseSize() int32 { - if m != nil { - return m.ResponseSize - } - return 0 -} - -func (m *SimpleRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *SimpleRequest) GetFillUsername() bool { - if m != nil { - return m.FillUsername - } - return false -} - -func (m *SimpleRequest) GetFillOauthScope() bool { - if m != nil { - return m.FillOauthScope - } - return false -} - -func (m *SimpleRequest) GetResponseCompression() CompressionType { - if m != nil { - return m.ResponseCompression - } - return CompressionType_NONE -} - -func (m *SimpleRequest) GetResponseStatus() *EchoStatus { - if m != nil { - return m.ResponseStatus - } - return nil -} - -// Unary response, as configured by the request. -type SimpleResponse struct { - // Payload to increase message size. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` - // The user the request came from, for verifying authentication was - // successful when the client expected it. - Username string `protobuf:"bytes,2,opt,name=username" json:"username,omitempty"` - // OAuth scope. - OauthScope string `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope" json:"oauth_scope,omitempty"` -} - -func (m *SimpleResponse) Reset() { *m = SimpleResponse{} } -func (m *SimpleResponse) String() string { return proto.CompactTextString(m) } -func (*SimpleResponse) ProtoMessage() {} -func (*SimpleResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } - -func (m *SimpleResponse) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *SimpleResponse) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *SimpleResponse) GetOauthScope() string { - if m != nil { - return m.OauthScope - } - return "" -} - -// Client-streaming request. -type StreamingInputCallRequest struct { - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` -} - -func (m *StreamingInputCallRequest) Reset() { *m = StreamingInputCallRequest{} } -func (m *StreamingInputCallRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingInputCallRequest) ProtoMessage() {} -func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } - -func (m *StreamingInputCallRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -// Client-streaming response. -type StreamingInputCallResponse struct { - // Aggregated size of payloads received from the client. - AggregatedPayloadSize int32 `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize" json:"aggregated_payload_size,omitempty"` -} - -func (m *StreamingInputCallResponse) Reset() { *m = StreamingInputCallResponse{} } -func (m *StreamingInputCallResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingInputCallResponse) ProtoMessage() {} -func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } - -func (m *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 { - if m != nil { - return m.AggregatedPayloadSize - } - return 0 -} - -// Configuration for a particular response. -type ResponseParameters struct { - // Desired payload sizes in responses from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - Size int32 `protobuf:"varint,1,opt,name=size" json:"size,omitempty"` - // Desired interval between consecutive responses in the response stream in - // microseconds. - IntervalUs int32 `protobuf:"varint,2,opt,name=interval_us,json=intervalUs" json:"interval_us,omitempty"` -} - -func (m *ResponseParameters) Reset() { *m = ResponseParameters{} } -func (m *ResponseParameters) String() string { return proto.CompactTextString(m) } -func (*ResponseParameters) ProtoMessage() {} -func (*ResponseParameters) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } - -func (m *ResponseParameters) GetSize() int32 { - if m != nil { - return m.Size - } - return 0 -} - -func (m *ResponseParameters) GetIntervalUs() int32 { - if m != nil { - return m.IntervalUs - } - return 0 -} - -// Server-streaming request. -type StreamingOutputCallRequest struct { - // Desired payload type in the response from the server. - // If response_type is RANDOM, the payload from each response in the stream - // might be of different types. This is to simulate a mixed type of payload - // stream. - ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,enum=grpc.testing.PayloadType" json:"response_type,omitempty"` - // Configuration for each expected response message. - ResponseParameters []*ResponseParameters `protobuf:"bytes,2,rep,name=response_parameters,json=responseParameters" json:"response_parameters,omitempty"` - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"` - // Compression algorithm to be used by the server for the response (stream) - ResponseCompression CompressionType `protobuf:"varint,6,opt,name=response_compression,json=responseCompression,enum=grpc.testing.CompressionType" json:"response_compression,omitempty"` - // Whether server should return a given status - ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus" json:"response_status,omitempty"` -} - -func (m *StreamingOutputCallRequest) Reset() { *m = StreamingOutputCallRequest{} } -func (m *StreamingOutputCallRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingOutputCallRequest) ProtoMessage() {} -func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } - -func (m *StreamingOutputCallRequest) GetResponseType() PayloadType { - if m != nil { - return m.ResponseType - } - return PayloadType_COMPRESSABLE -} - -func (m *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters { - if m != nil { - return m.ResponseParameters - } - return nil -} - -func (m *StreamingOutputCallRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *StreamingOutputCallRequest) GetResponseCompression() CompressionType { - if m != nil { - return m.ResponseCompression - } - return CompressionType_NONE -} - -func (m *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus { - if m != nil { - return m.ResponseStatus - } - return nil -} - -// Server-streaming response, as configured by the request and parameters. -type StreamingOutputCallResponse struct { - // Payload to increase response size. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` -} - -func (m *StreamingOutputCallResponse) Reset() { *m = StreamingOutputCallResponse{} } -func (m *StreamingOutputCallResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingOutputCallResponse) ProtoMessage() {} -func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } - -func (m *StreamingOutputCallResponse) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -// For reconnect interop test only. -// Client tells server what reconnection parameters it used. -type ReconnectParams struct { - MaxReconnectBackoffMs int32 `protobuf:"varint,1,opt,name=max_reconnect_backoff_ms,json=maxReconnectBackoffMs" json:"max_reconnect_backoff_ms,omitempty"` -} - -func (m *ReconnectParams) Reset() { *m = ReconnectParams{} } -func (m *ReconnectParams) String() string { return proto.CompactTextString(m) } -func (*ReconnectParams) ProtoMessage() {} -func (*ReconnectParams) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } - -func (m *ReconnectParams) GetMaxReconnectBackoffMs() int32 { - if m != nil { - return m.MaxReconnectBackoffMs - } - return 0 -} - -// For reconnect interop test only. -// Server tells client whether its reconnects are following the spec and the -// reconnect backoffs it saw. -type ReconnectInfo struct { - Passed bool `protobuf:"varint,1,opt,name=passed" json:"passed,omitempty"` - BackoffMs []int32 `protobuf:"varint,2,rep,packed,name=backoff_ms,json=backoffMs" json:"backoff_ms,omitempty"` -} - -func (m *ReconnectInfo) Reset() { *m = ReconnectInfo{} } -func (m *ReconnectInfo) String() string { return proto.CompactTextString(m) } -func (*ReconnectInfo) ProtoMessage() {} -func (*ReconnectInfo) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } - -func (m *ReconnectInfo) GetPassed() bool { - if m != nil { - return m.Passed - } - return false -} - -func (m *ReconnectInfo) GetBackoffMs() []int32 { - if m != nil { - return m.BackoffMs - } - return nil -} - -func init() { - proto.RegisterType((*Payload)(nil), "grpc.testing.Payload") - proto.RegisterType((*EchoStatus)(nil), "grpc.testing.EchoStatus") - proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest") - proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse") - proto.RegisterType((*StreamingInputCallRequest)(nil), "grpc.testing.StreamingInputCallRequest") - proto.RegisterType((*StreamingInputCallResponse)(nil), "grpc.testing.StreamingInputCallResponse") - proto.RegisterType((*ResponseParameters)(nil), "grpc.testing.ResponseParameters") - proto.RegisterType((*StreamingOutputCallRequest)(nil), "grpc.testing.StreamingOutputCallRequest") - proto.RegisterType((*StreamingOutputCallResponse)(nil), "grpc.testing.StreamingOutputCallResponse") - proto.RegisterType((*ReconnectParams)(nil), "grpc.testing.ReconnectParams") - proto.RegisterType((*ReconnectInfo)(nil), "grpc.testing.ReconnectInfo") - proto.RegisterEnum("grpc.testing.PayloadType", PayloadType_name, PayloadType_value) - proto.RegisterEnum("grpc.testing.CompressionType", CompressionType_name, CompressionType_value) -} - -func init() { proto.RegisterFile("messages.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 652 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0x4d, 0x6f, 0xd3, 0x40, - 0x10, 0xc5, 0xf9, 0xee, 0x24, 0x4d, 0xa3, 0x85, 0x82, 0x5b, 0x54, 0x11, 0x99, 0x4b, 0x54, 0x89, - 0x20, 0x05, 0x09, 0x24, 0x0e, 0xa0, 0xb4, 0x4d, 0x51, 0x50, 0x9a, 0x84, 0x75, 0x7b, 0xe1, 0x62, - 0x6d, 0x9c, 0x8d, 0x6b, 0x11, 0x7b, 0x8d, 0x77, 0x8d, 0x9a, 0x1e, 0xb8, 0xf3, 0x83, 0xb9, 0xa3, - 0x5d, 0x7f, 0xc4, 0x69, 0x7b, 0x68, 0xe1, 0xc2, 0x6d, 0xf7, 0xed, 0x9b, 0x97, 0x79, 0x33, 0xcf, - 0x0a, 0x34, 0x3d, 0xca, 0x39, 0x71, 0x28, 0xef, 0x06, 0x21, 0x13, 0x0c, 0x35, 0x9c, 0x30, 0xb0, - 0xbb, 0x82, 0x72, 0xe1, 0xfa, 0x8e, 0x31, 0x82, 0xea, 0x94, 0xac, 0x96, 0x8c, 0xcc, 0xd1, 0x2b, - 0x28, 0x89, 0x55, 0x40, 0x75, 0xad, 0xad, 0x75, 0x9a, 0xbd, 0xbd, 0x6e, 0x9e, 0xd7, 0x4d, 0x48, - 0xe7, 0xab, 0x80, 0x62, 0x45, 0x43, 0x08, 0x4a, 0x33, 0x36, 0x5f, 0xe9, 0x85, 0xb6, 0xd6, 0x69, - 0x60, 0x75, 0x36, 0xde, 0x03, 0x0c, 0xec, 0x4b, 0x66, 0x0a, 0x22, 0x22, 0x2e, 0x19, 0x36, 0x9b, - 0xc7, 0x82, 0x65, 0xac, 0xce, 0x48, 0x87, 0x6a, 0xd2, 0x8f, 0x2a, 0xdc, 0xc2, 0xe9, 0xd5, 0xf8, - 0x55, 0x84, 0x6d, 0xd3, 0xf5, 0x82, 0x25, 0xc5, 0xf4, 0x7b, 0x44, 0xb9, 0x40, 0x1f, 0x60, 0x3b, - 0xa4, 0x3c, 0x60, 0x3e, 0xa7, 0xd6, 0xfd, 0x3a, 0x6b, 0xa4, 0x7c, 0x79, 0x43, 0x2f, 0x73, 0xf5, - 0xdc, 0xbd, 0x8e, 0x7f, 0xb1, 0xbc, 0x26, 0x99, 0xee, 0x35, 0x45, 0xaf, 0xa1, 0x1a, 0xc4, 0x0a, - 0x7a, 0xb1, 0xad, 0x75, 0xea, 0xbd, 0xdd, 0x3b, 0xe5, 0x71, 0xca, 0x92, 0xaa, 0x0b, 0x77, 0xb9, - 0xb4, 0x22, 0x4e, 0x43, 0x9f, 0x78, 0x54, 0x2f, 0xb5, 0xb5, 0x4e, 0x0d, 0x37, 0x24, 0x78, 0x91, - 0x60, 0xa8, 0x03, 0x2d, 0x45, 0x62, 0x24, 0x12, 0x97, 0x16, 0xb7, 0x59, 0x40, 0xf5, 0xb2, 0xe2, - 0x35, 0x25, 0x3e, 0x91, 0xb0, 0x29, 0x51, 0x34, 0x85, 0x27, 0x59, 0x93, 0x36, 0xf3, 0x82, 0x90, - 0x72, 0xee, 0x32, 0x5f, 0xaf, 0x28, 0xaf, 0x07, 0x9b, 0xcd, 0x1c, 0xaf, 0x09, 0xca, 0xef, 0xe3, - 0xb4, 0x34, 0xf7, 0x80, 0xfa, 0xb0, 0xb3, 0xb6, 0xad, 0x36, 0xa1, 0x57, 0x95, 0x33, 0x7d, 0x53, - 0x6c, 0xbd, 0x29, 0xdc, 0xcc, 0x46, 0xa2, 0xee, 0xc6, 0x4f, 0x68, 0xa6, 0xab, 0x88, 0xf1, 0xfc, - 0x98, 0xb4, 0x7b, 0x8d, 0x69, 0x1f, 0x6a, 0xd9, 0x84, 0xe2, 0x4d, 0x67, 0x77, 0xf4, 0x02, 0xea, - 0xf9, 0xc1, 0x14, 0xd5, 0x33, 0xb0, 0x6c, 0x28, 0xc6, 0x08, 0xf6, 0x4c, 0x11, 0x52, 0xe2, 0xb9, - 0xbe, 0x33, 0xf4, 0x83, 0x48, 0x1c, 0x93, 0xe5, 0x32, 0x8d, 0xc5, 0x43, 0x5b, 0x31, 0xce, 0x61, - 0xff, 0x2e, 0xb5, 0xc4, 0xd9, 0x5b, 0x78, 0x46, 0x1c, 0x27, 0xa4, 0x0e, 0x11, 0x74, 0x6e, 0x25, - 0x35, 0x71, 0x5e, 0xe2, 0xe0, 0xee, 0xae, 0x9f, 0x13, 0x69, 0x19, 0x1c, 0x63, 0x08, 0x28, 0xd5, - 0x98, 0x92, 0x90, 0x78, 0x54, 0xd0, 0x50, 0x65, 0x3e, 0x57, 0xaa, 0xce, 0xd2, 0xae, 0xeb, 0x0b, - 0x1a, 0xfe, 0x20, 0x32, 0x35, 0x49, 0x0a, 0x21, 0x85, 0x2e, 0xb8, 0xf1, 0xbb, 0x90, 0xeb, 0x70, - 0x12, 0x89, 0x1b, 0x86, 0xff, 0xf5, 0x3b, 0xf8, 0x02, 0x59, 0x4e, 0xac, 0x20, 0x6b, 0x55, 0x2f, - 0xb4, 0x8b, 0x9d, 0x7a, 0xaf, 0xbd, 0xa9, 0x72, 0xdb, 0x12, 0x46, 0xe1, 0x6d, 0x9b, 0x0f, 0xfe, - 0x6a, 0xfe, 0xcb, 0x98, 0x8f, 0xe1, 0xf9, 0x9d, 0x63, 0xff, 0xcb, 0xcc, 0x1b, 0x9f, 0x61, 0x07, - 0x53, 0x9b, 0xf9, 0x3e, 0xb5, 0x85, 0x1a, 0x16, 0x47, 0xef, 0x40, 0xf7, 0xc8, 0x95, 0x15, 0xa6, - 0xb0, 0x35, 0x23, 0xf6, 0x37, 0xb6, 0x58, 0x58, 0x1e, 0x4f, 0xe3, 0xe5, 0x91, 0xab, 0xac, 0xea, - 0x28, 0x7e, 0x3d, 0xe3, 0xc6, 0x29, 0x6c, 0x67, 0xe8, 0xd0, 0x5f, 0x30, 0xf4, 0x14, 0x2a, 0x01, - 0xe1, 0x9c, 0xc6, 0xcd, 0xd4, 0x70, 0x72, 0x43, 0x07, 0x00, 0x39, 0x4d, 0xb9, 0xd4, 0x32, 0xde, - 0x9a, 0xa5, 0x3a, 0x87, 0x1f, 0xa1, 0x9e, 0x4b, 0x06, 0x6a, 0x41, 0xe3, 0x78, 0x72, 0x36, 0xc5, - 0x03, 0xd3, 0xec, 0x1f, 0x8d, 0x06, 0xad, 0x47, 0x08, 0x41, 0xf3, 0x62, 0xbc, 0x81, 0x69, 0x08, - 0xa0, 0x82, 0xfb, 0xe3, 0x93, 0xc9, 0x59, 0xab, 0x70, 0xd8, 0x83, 0x9d, 0x1b, 0xfb, 0x40, 0x35, - 0x28, 0x8d, 0x27, 0x63, 0x59, 0x5c, 0x83, 0xd2, 0xa7, 0xaf, 0xc3, 0x69, 0x4b, 0x43, 0x75, 0xa8, - 0x9e, 0x0c, 0x4e, 0x47, 0xfd, 0xf3, 0x41, 0xab, 0x30, 0xab, 0xa8, 0xbf, 0x9a, 0x37, 0x7f, 0x02, - 0x00, 0x00, 0xff, 0xff, 0xc2, 0x6a, 0xce, 0x1e, 0x7c, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/messages.proto b/vendor/google.golang.org/grpc/benchmark/grpc_testing/messages.proto deleted file mode 100644 index bd83f095..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/messages.proto +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2016 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Message definitions to be used by integration test service definitions. - -syntax = "proto3"; - -package grpc.testing; - -// The type of payload that should be returned. -enum PayloadType { - // Compressable text format. - COMPRESSABLE = 0; - - // Uncompressable binary format. - UNCOMPRESSABLE = 1; - - // Randomly chosen from all other formats defined in this enum. - RANDOM = 2; -} - -// Compression algorithms -enum CompressionType { - // No compression - NONE = 0; - GZIP = 1; - DEFLATE = 2; -} - -// A block of data, to simply increase gRPC message size. -message Payload { - // The type of data in body. - PayloadType type = 1; - // Primary contents of payload. - bytes body = 2; -} - -// A protobuf representation for grpc status. This is used by test -// clients to specify a status that the server should attempt to return. -message EchoStatus { - int32 code = 1; - string message = 2; -} - -// Unary request. -message SimpleRequest { - // Desired payload type in the response from the server. - // If response_type is RANDOM, server randomly chooses one from other formats. - PayloadType response_type = 1; - - // Desired payload size in the response from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - int32 response_size = 2; - - // Optional input payload sent along with the request. - Payload payload = 3; - - // Whether SimpleResponse should include username. - bool fill_username = 4; - - // Whether SimpleResponse should include OAuth scope. - bool fill_oauth_scope = 5; - - // Compression algorithm to be used by the server for the response (stream) - CompressionType response_compression = 6; - - // Whether server should return a given status - EchoStatus response_status = 7; -} - -// Unary response, as configured by the request. -message SimpleResponse { - // Payload to increase message size. - Payload payload = 1; - // The user the request came from, for verifying authentication was - // successful when the client expected it. - string username = 2; - // OAuth scope. - string oauth_scope = 3; -} - -// Client-streaming request. -message StreamingInputCallRequest { - // Optional input payload sent along with the request. - Payload payload = 1; - - // Not expecting any payload from the response. -} - -// Client-streaming response. -message StreamingInputCallResponse { - // Aggregated size of payloads received from the client. - int32 aggregated_payload_size = 1; -} - -// Configuration for a particular response. -message ResponseParameters { - // Desired payload sizes in responses from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - int32 size = 1; - - // Desired interval between consecutive responses in the response stream in - // microseconds. - int32 interval_us = 2; -} - -// Server-streaming request. -message StreamingOutputCallRequest { - // Desired payload type in the response from the server. - // If response_type is RANDOM, the payload from each response in the stream - // might be of different types. This is to simulate a mixed type of payload - // stream. - PayloadType response_type = 1; - - // Configuration for each expected response message. - repeated ResponseParameters response_parameters = 2; - - // Optional input payload sent along with the request. - Payload payload = 3; - - // Compression algorithm to be used by the server for the response (stream) - CompressionType response_compression = 6; - - // Whether server should return a given status - EchoStatus response_status = 7; -} - -// Server-streaming response, as configured by the request and parameters. -message StreamingOutputCallResponse { - // Payload to increase response size. - Payload payload = 1; -} - -// For reconnect interop test only. -// Client tells server what reconnection parameters it used. -message ReconnectParams { - int32 max_reconnect_backoff_ms = 1; -} - -// For reconnect interop test only. -// Server tells client whether its reconnects are following the spec and the -// reconnect backoffs it saw. -message ReconnectInfo { - bool passed = 1; - repeated int32 backoff_ms = 2; -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/payloads.pb.go b/vendor/google.golang.org/grpc/benchmark/grpc_testing/payloads.pb.go deleted file mode 100644 index d70d1f74..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/payloads.pb.go +++ /dev/null @@ -1,250 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: payloads.proto - -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type ByteBufferParams struct { - ReqSize int32 `protobuf:"varint,1,opt,name=req_size,json=reqSize" json:"req_size,omitempty"` - RespSize int32 `protobuf:"varint,2,opt,name=resp_size,json=respSize" json:"resp_size,omitempty"` -} - -func (m *ByteBufferParams) Reset() { *m = ByteBufferParams{} } -func (m *ByteBufferParams) String() string { return proto.CompactTextString(m) } -func (*ByteBufferParams) ProtoMessage() {} -func (*ByteBufferParams) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *ByteBufferParams) GetReqSize() int32 { - if m != nil { - return m.ReqSize - } - return 0 -} - -func (m *ByteBufferParams) GetRespSize() int32 { - if m != nil { - return m.RespSize - } - return 0 -} - -type SimpleProtoParams struct { - ReqSize int32 `protobuf:"varint,1,opt,name=req_size,json=reqSize" json:"req_size,omitempty"` - RespSize int32 `protobuf:"varint,2,opt,name=resp_size,json=respSize" json:"resp_size,omitempty"` -} - -func (m *SimpleProtoParams) Reset() { *m = SimpleProtoParams{} } -func (m *SimpleProtoParams) String() string { return proto.CompactTextString(m) } -func (*SimpleProtoParams) ProtoMessage() {} -func (*SimpleProtoParams) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} } - -func (m *SimpleProtoParams) GetReqSize() int32 { - if m != nil { - return m.ReqSize - } - return 0 -} - -func (m *SimpleProtoParams) GetRespSize() int32 { - if m != nil { - return m.RespSize - } - return 0 -} - -type ComplexProtoParams struct { -} - -func (m *ComplexProtoParams) Reset() { *m = ComplexProtoParams{} } -func (m *ComplexProtoParams) String() string { return proto.CompactTextString(m) } -func (*ComplexProtoParams) ProtoMessage() {} -func (*ComplexProtoParams) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{2} } - -type PayloadConfig struct { - // Types that are valid to be assigned to Payload: - // *PayloadConfig_BytebufParams - // *PayloadConfig_SimpleParams - // *PayloadConfig_ComplexParams - Payload isPayloadConfig_Payload `protobuf_oneof:"payload"` -} - -func (m *PayloadConfig) Reset() { *m = PayloadConfig{} } -func (m *PayloadConfig) String() string { return proto.CompactTextString(m) } -func (*PayloadConfig) ProtoMessage() {} -func (*PayloadConfig) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{3} } - -type isPayloadConfig_Payload interface { - isPayloadConfig_Payload() -} - -type PayloadConfig_BytebufParams struct { - BytebufParams *ByteBufferParams `protobuf:"bytes,1,opt,name=bytebuf_params,json=bytebufParams,oneof"` -} -type PayloadConfig_SimpleParams struct { - SimpleParams *SimpleProtoParams `protobuf:"bytes,2,opt,name=simple_params,json=simpleParams,oneof"` -} -type PayloadConfig_ComplexParams struct { - ComplexParams *ComplexProtoParams `protobuf:"bytes,3,opt,name=complex_params,json=complexParams,oneof"` -} - -func (*PayloadConfig_BytebufParams) isPayloadConfig_Payload() {} -func (*PayloadConfig_SimpleParams) isPayloadConfig_Payload() {} -func (*PayloadConfig_ComplexParams) isPayloadConfig_Payload() {} - -func (m *PayloadConfig) GetPayload() isPayloadConfig_Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *PayloadConfig) GetBytebufParams() *ByteBufferParams { - if x, ok := m.GetPayload().(*PayloadConfig_BytebufParams); ok { - return x.BytebufParams - } - return nil -} - -func (m *PayloadConfig) GetSimpleParams() *SimpleProtoParams { - if x, ok := m.GetPayload().(*PayloadConfig_SimpleParams); ok { - return x.SimpleParams - } - return nil -} - -func (m *PayloadConfig) GetComplexParams() *ComplexProtoParams { - if x, ok := m.GetPayload().(*PayloadConfig_ComplexParams); ok { - return x.ComplexParams - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*PayloadConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _PayloadConfig_OneofMarshaler, _PayloadConfig_OneofUnmarshaler, _PayloadConfig_OneofSizer, []interface{}{ - (*PayloadConfig_BytebufParams)(nil), - (*PayloadConfig_SimpleParams)(nil), - (*PayloadConfig_ComplexParams)(nil), - } -} - -func _PayloadConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*PayloadConfig) - // payload - switch x := m.Payload.(type) { - case *PayloadConfig_BytebufParams: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.BytebufParams); err != nil { - return err - } - case *PayloadConfig_SimpleParams: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.SimpleParams); err != nil { - return err - } - case *PayloadConfig_ComplexParams: - b.EncodeVarint(3<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ComplexParams); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("PayloadConfig.Payload has unexpected type %T", x) - } - return nil -} - -func _PayloadConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*PayloadConfig) - switch tag { - case 1: // payload.bytebuf_params - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ByteBufferParams) - err := b.DecodeMessage(msg) - m.Payload = &PayloadConfig_BytebufParams{msg} - return true, err - case 2: // payload.simple_params - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(SimpleProtoParams) - err := b.DecodeMessage(msg) - m.Payload = &PayloadConfig_SimpleParams{msg} - return true, err - case 3: // payload.complex_params - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ComplexProtoParams) - err := b.DecodeMessage(msg) - m.Payload = &PayloadConfig_ComplexParams{msg} - return true, err - default: - return false, nil - } -} - -func _PayloadConfig_OneofSizer(msg proto.Message) (n int) { - m := msg.(*PayloadConfig) - // payload - switch x := m.Payload.(type) { - case *PayloadConfig_BytebufParams: - s := proto.Size(x.BytebufParams) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PayloadConfig_SimpleParams: - s := proto.Size(x.SimpleParams) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *PayloadConfig_ComplexParams: - s := proto.Size(x.ComplexParams) - n += proto.SizeVarint(3<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -func init() { - proto.RegisterType((*ByteBufferParams)(nil), "grpc.testing.ByteBufferParams") - proto.RegisterType((*SimpleProtoParams)(nil), "grpc.testing.SimpleProtoParams") - proto.RegisterType((*ComplexProtoParams)(nil), "grpc.testing.ComplexProtoParams") - proto.RegisterType((*PayloadConfig)(nil), "grpc.testing.PayloadConfig") -} - -func init() { proto.RegisterFile("payloads.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 254 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2b, 0x48, 0xac, 0xcc, - 0xc9, 0x4f, 0x4c, 0x29, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x49, 0x2f, 0x2a, 0x48, - 0xd6, 0x2b, 0x49, 0x2d, 0x2e, 0xc9, 0xcc, 0x4b, 0x57, 0xf2, 0xe2, 0x12, 0x70, 0xaa, 0x2c, 0x49, - 0x75, 0x2a, 0x4d, 0x4b, 0x4b, 0x2d, 0x0a, 0x48, 0x2c, 0x4a, 0xcc, 0x2d, 0x16, 0x92, 0xe4, 0xe2, - 0x28, 0x4a, 0x2d, 0x8c, 0x2f, 0xce, 0xac, 0x4a, 0x95, 0x60, 0x54, 0x60, 0xd4, 0x60, 0x0d, 0x62, - 0x2f, 0x4a, 0x2d, 0x0c, 0xce, 0xac, 0x4a, 0x15, 0x92, 0xe6, 0xe2, 0x2c, 0x4a, 0x2d, 0x2e, 0x80, - 0xc8, 0x31, 0x81, 0xe5, 0x38, 0x40, 0x02, 0x20, 0x49, 0x25, 0x6f, 0x2e, 0xc1, 0xe0, 0xcc, 0xdc, - 0x82, 0x9c, 0xd4, 0x00, 0x90, 0x45, 0x14, 0x1a, 0x26, 0xc2, 0x25, 0xe4, 0x9c, 0x0f, 0x32, 0xac, - 0x02, 0xc9, 0x34, 0xa5, 0x6f, 0x8c, 0x5c, 0xbc, 0x01, 0x10, 0xff, 0x38, 0xe7, 0xe7, 0xa5, 0x65, - 0xa6, 0x0b, 0xb9, 0x73, 0xf1, 0x25, 0x55, 0x96, 0xa4, 0x26, 0x95, 0xa6, 0xc5, 0x17, 0x80, 0xd5, - 0x80, 0x6d, 0xe1, 0x36, 0x92, 0xd3, 0x43, 0xf6, 0xa7, 0x1e, 0xba, 0x27, 0x3d, 0x18, 0x82, 0x78, - 0xa1, 0xfa, 0xa0, 0x0e, 0x75, 0xe3, 0xe2, 0x2d, 0x06, 0xbb, 0x1e, 0x66, 0x0e, 0x13, 0xd8, 0x1c, - 0x79, 0x54, 0x73, 0x30, 0x3c, 0xe8, 0xc1, 0x10, 0xc4, 0x03, 0xd1, 0x07, 0x35, 0xc7, 0x93, 0x8b, - 0x2f, 0x19, 0xe2, 0x70, 0x98, 0x41, 0xcc, 0x60, 0x83, 0x14, 0x50, 0x0d, 0xc2, 0xf4, 0x1c, 0xc8, - 0x49, 0x50, 0x9d, 0x10, 0x01, 0x27, 0x4e, 0x2e, 0x76, 0x68, 0xe4, 0x25, 0xb1, 0x81, 0x23, 0xcf, - 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x8c, 0x18, 0x4e, 0xce, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/payloads.proto b/vendor/google.golang.org/grpc/benchmark/grpc_testing/payloads.proto deleted file mode 100644 index 5d4871f5..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/payloads.proto +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2016 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package grpc.testing; - -message ByteBufferParams { - int32 req_size = 1; - int32 resp_size = 2; -} - -message SimpleProtoParams { - int32 req_size = 1; - int32 resp_size = 2; -} - -message ComplexProtoParams { - // TODO (vpai): Fill this in once the details of complex, representative - // protos are decided -} - -message PayloadConfig { - oneof payload { - ByteBufferParams bytebuf_params = 1; - SimpleProtoParams simple_params = 2; - ComplexProtoParams complex_params = 3; - } -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/services.pb.go b/vendor/google.golang.org/grpc/benchmark/grpc_testing/services.pb.go deleted file mode 100644 index 50e35059..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/services.pb.go +++ /dev/null @@ -1,442 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: services.proto - -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for BenchmarkService service - -type BenchmarkServiceClient interface { - // One request followed by one response. - // The server returns the client payload as-is. - UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) - // One request followed by one response. - // The server returns the client payload as-is. - StreamingCall(ctx context.Context, opts ...grpc.CallOption) (BenchmarkService_StreamingCallClient, error) -} - -type benchmarkServiceClient struct { - cc *grpc.ClientConn -} - -func NewBenchmarkServiceClient(cc *grpc.ClientConn) BenchmarkServiceClient { - return &benchmarkServiceClient{cc} -} - -func (c *benchmarkServiceClient) UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) { - out := new(SimpleResponse) - err := grpc.Invoke(ctx, "/grpc.testing.BenchmarkService/UnaryCall", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *benchmarkServiceClient) StreamingCall(ctx context.Context, opts ...grpc.CallOption) (BenchmarkService_StreamingCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_BenchmarkService_serviceDesc.Streams[0], c.cc, "/grpc.testing.BenchmarkService/StreamingCall", opts...) - if err != nil { - return nil, err - } - x := &benchmarkServiceStreamingCallClient{stream} - return x, nil -} - -type BenchmarkService_StreamingCallClient interface { - Send(*SimpleRequest) error - Recv() (*SimpleResponse, error) - grpc.ClientStream -} - -type benchmarkServiceStreamingCallClient struct { - grpc.ClientStream -} - -func (x *benchmarkServiceStreamingCallClient) Send(m *SimpleRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *benchmarkServiceStreamingCallClient) Recv() (*SimpleResponse, error) { - m := new(SimpleResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for BenchmarkService service - -type BenchmarkServiceServer interface { - // One request followed by one response. - // The server returns the client payload as-is. - UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error) - // One request followed by one response. - // The server returns the client payload as-is. - StreamingCall(BenchmarkService_StreamingCallServer) error -} - -func RegisterBenchmarkServiceServer(s *grpc.Server, srv BenchmarkServiceServer) { - s.RegisterService(&_BenchmarkService_serviceDesc, srv) -} - -func _BenchmarkService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SimpleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BenchmarkServiceServer).UnaryCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.BenchmarkService/UnaryCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BenchmarkServiceServer).UnaryCall(ctx, req.(*SimpleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _BenchmarkService_StreamingCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(BenchmarkServiceServer).StreamingCall(&benchmarkServiceStreamingCallServer{stream}) -} - -type BenchmarkService_StreamingCallServer interface { - Send(*SimpleResponse) error - Recv() (*SimpleRequest, error) - grpc.ServerStream -} - -type benchmarkServiceStreamingCallServer struct { - grpc.ServerStream -} - -func (x *benchmarkServiceStreamingCallServer) Send(m *SimpleResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *benchmarkServiceStreamingCallServer) Recv() (*SimpleRequest, error) { - m := new(SimpleRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _BenchmarkService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.BenchmarkService", - HandlerType: (*BenchmarkServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "UnaryCall", - Handler: _BenchmarkService_UnaryCall_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingCall", - Handler: _BenchmarkService_StreamingCall_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "services.proto", -} - -// Client API for WorkerService service - -type WorkerServiceClient interface { - // Start server with specified workload. - // First request sent specifies the ServerConfig followed by ServerStatus - // response. After that, a "Mark" can be sent anytime to request the latest - // stats. Closing the stream will initiate shutdown of the test server - // and once the shutdown has finished, the OK status is sent to terminate - // this RPC. - RunServer(ctx context.Context, opts ...grpc.CallOption) (WorkerService_RunServerClient, error) - // Start client with specified workload. - // First request sent specifies the ClientConfig followed by ClientStatus - // response. After that, a "Mark" can be sent anytime to request the latest - // stats. Closing the stream will initiate shutdown of the test client - // and once the shutdown has finished, the OK status is sent to terminate - // this RPC. - RunClient(ctx context.Context, opts ...grpc.CallOption) (WorkerService_RunClientClient, error) - // Just return the core count - unary call - CoreCount(ctx context.Context, in *CoreRequest, opts ...grpc.CallOption) (*CoreResponse, error) - // Quit this worker - QuitWorker(ctx context.Context, in *Void, opts ...grpc.CallOption) (*Void, error) -} - -type workerServiceClient struct { - cc *grpc.ClientConn -} - -func NewWorkerServiceClient(cc *grpc.ClientConn) WorkerServiceClient { - return &workerServiceClient{cc} -} - -func (c *workerServiceClient) RunServer(ctx context.Context, opts ...grpc.CallOption) (WorkerService_RunServerClient, error) { - stream, err := grpc.NewClientStream(ctx, &_WorkerService_serviceDesc.Streams[0], c.cc, "/grpc.testing.WorkerService/RunServer", opts...) - if err != nil { - return nil, err - } - x := &workerServiceRunServerClient{stream} - return x, nil -} - -type WorkerService_RunServerClient interface { - Send(*ServerArgs) error - Recv() (*ServerStatus, error) - grpc.ClientStream -} - -type workerServiceRunServerClient struct { - grpc.ClientStream -} - -func (x *workerServiceRunServerClient) Send(m *ServerArgs) error { - return x.ClientStream.SendMsg(m) -} - -func (x *workerServiceRunServerClient) Recv() (*ServerStatus, error) { - m := new(ServerStatus) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *workerServiceClient) RunClient(ctx context.Context, opts ...grpc.CallOption) (WorkerService_RunClientClient, error) { - stream, err := grpc.NewClientStream(ctx, &_WorkerService_serviceDesc.Streams[1], c.cc, "/grpc.testing.WorkerService/RunClient", opts...) - if err != nil { - return nil, err - } - x := &workerServiceRunClientClient{stream} - return x, nil -} - -type WorkerService_RunClientClient interface { - Send(*ClientArgs) error - Recv() (*ClientStatus, error) - grpc.ClientStream -} - -type workerServiceRunClientClient struct { - grpc.ClientStream -} - -func (x *workerServiceRunClientClient) Send(m *ClientArgs) error { - return x.ClientStream.SendMsg(m) -} - -func (x *workerServiceRunClientClient) Recv() (*ClientStatus, error) { - m := new(ClientStatus) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *workerServiceClient) CoreCount(ctx context.Context, in *CoreRequest, opts ...grpc.CallOption) (*CoreResponse, error) { - out := new(CoreResponse) - err := grpc.Invoke(ctx, "/grpc.testing.WorkerService/CoreCount", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *workerServiceClient) QuitWorker(ctx context.Context, in *Void, opts ...grpc.CallOption) (*Void, error) { - out := new(Void) - err := grpc.Invoke(ctx, "/grpc.testing.WorkerService/QuitWorker", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for WorkerService service - -type WorkerServiceServer interface { - // Start server with specified workload. - // First request sent specifies the ServerConfig followed by ServerStatus - // response. After that, a "Mark" can be sent anytime to request the latest - // stats. Closing the stream will initiate shutdown of the test server - // and once the shutdown has finished, the OK status is sent to terminate - // this RPC. - RunServer(WorkerService_RunServerServer) error - // Start client with specified workload. - // First request sent specifies the ClientConfig followed by ClientStatus - // response. After that, a "Mark" can be sent anytime to request the latest - // stats. Closing the stream will initiate shutdown of the test client - // and once the shutdown has finished, the OK status is sent to terminate - // this RPC. - RunClient(WorkerService_RunClientServer) error - // Just return the core count - unary call - CoreCount(context.Context, *CoreRequest) (*CoreResponse, error) - // Quit this worker - QuitWorker(context.Context, *Void) (*Void, error) -} - -func RegisterWorkerServiceServer(s *grpc.Server, srv WorkerServiceServer) { - s.RegisterService(&_WorkerService_serviceDesc, srv) -} - -func _WorkerService_RunServer_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(WorkerServiceServer).RunServer(&workerServiceRunServerServer{stream}) -} - -type WorkerService_RunServerServer interface { - Send(*ServerStatus) error - Recv() (*ServerArgs, error) - grpc.ServerStream -} - -type workerServiceRunServerServer struct { - grpc.ServerStream -} - -func (x *workerServiceRunServerServer) Send(m *ServerStatus) error { - return x.ServerStream.SendMsg(m) -} - -func (x *workerServiceRunServerServer) Recv() (*ServerArgs, error) { - m := new(ServerArgs) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _WorkerService_RunClient_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(WorkerServiceServer).RunClient(&workerServiceRunClientServer{stream}) -} - -type WorkerService_RunClientServer interface { - Send(*ClientStatus) error - Recv() (*ClientArgs, error) - grpc.ServerStream -} - -type workerServiceRunClientServer struct { - grpc.ServerStream -} - -func (x *workerServiceRunClientServer) Send(m *ClientStatus) error { - return x.ServerStream.SendMsg(m) -} - -func (x *workerServiceRunClientServer) Recv() (*ClientArgs, error) { - m := new(ClientArgs) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _WorkerService_CoreCount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CoreRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkerServiceServer).CoreCount(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.WorkerService/CoreCount", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkerServiceServer).CoreCount(ctx, req.(*CoreRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _WorkerService_QuitWorker_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Void) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(WorkerServiceServer).QuitWorker(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.WorkerService/QuitWorker", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(WorkerServiceServer).QuitWorker(ctx, req.(*Void)) - } - return interceptor(ctx, in, info, handler) -} - -var _WorkerService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.WorkerService", - HandlerType: (*WorkerServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CoreCount", - Handler: _WorkerService_CoreCount_Handler, - }, - { - MethodName: "QuitWorker", - Handler: _WorkerService_QuitWorker_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "RunServer", - Handler: _WorkerService_RunServer_Handler, - ServerStreams: true, - ClientStreams: true, - }, - { - StreamName: "RunClient", - Handler: _WorkerService_RunClient_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "services.proto", -} - -func init() { proto.RegisterFile("services.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 255 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x91, 0xc1, 0x4a, 0xc4, 0x30, - 0x10, 0x86, 0xa9, 0x07, 0xa1, 0xc1, 0x2e, 0x92, 0x93, 0x46, 0x1f, 0xc0, 0x53, 0x91, 0xd5, 0x17, - 0x70, 0x8b, 0x1e, 0x05, 0xb7, 0xa8, 0xe7, 0x58, 0x87, 0x1a, 0x36, 0xcd, 0xd4, 0x99, 0x89, 0xe0, - 0x93, 0xf8, 0x0e, 0x3e, 0xa5, 0xec, 0x66, 0x57, 0xd6, 0x92, 0x9b, 0xc7, 0xf9, 0xbf, 0xe1, 0x23, - 0x7f, 0x46, 0xcd, 0x18, 0xe8, 0xc3, 0x75, 0xc0, 0xf5, 0x48, 0x28, 0xa8, 0x8f, 0x7a, 0x1a, 0xbb, - 0x5a, 0x80, 0xc5, 0x85, 0xde, 0xcc, 0x06, 0x60, 0xb6, 0xfd, 0x8e, 0x9a, 0xaa, 0xc3, 0x20, 0x84, - 0x3e, 0x8d, 0xf3, 0xef, 0x42, 0x1d, 0x2f, 0x20, 0x74, 0x6f, 0x83, 0xa5, 0x55, 0x9b, 0x44, 0xfa, - 0x4e, 0x95, 0x8f, 0xc1, 0xd2, 0x67, 0x63, 0xbd, 0xd7, 0x67, 0xf5, 0xbe, 0xaf, 0x6e, 0xdd, 0x30, - 0x7a, 0x58, 0xc2, 0x7b, 0x04, 0x16, 0x73, 0x9e, 0x87, 0x3c, 0x62, 0x60, 0xd0, 0xf7, 0xaa, 0x6a, - 0x85, 0xc0, 0x0e, 0x2e, 0xf4, 0xff, 0x74, 0x5d, 0x14, 0x97, 0xc5, 0xfc, 0xeb, 0x40, 0x55, 0xcf, - 0x48, 0x2b, 0xa0, 0xdd, 0x4b, 0x6f, 0x55, 0xb9, 0x8c, 0x61, 0x3d, 0x01, 0xe9, 0x93, 0x89, 0x60, - 0x93, 0xde, 0x50, 0xcf, 0xc6, 0xe4, 0x48, 0x2b, 0x56, 0x22, 0xaf, 0xc5, 0x5b, 0x4d, 0xe3, 0x1d, - 0x04, 0x99, 0x6a, 0x52, 0x9a, 0xd3, 0x24, 0xb2, 0xa7, 0x59, 0xa8, 0xb2, 0x41, 0x82, 0x06, 0x63, - 0x10, 0x7d, 0x3a, 0x59, 0x46, 0xfa, 0x6d, 0x6a, 0x72, 0x68, 0xfb, 0x67, 0xd7, 0x4a, 0x3d, 0x44, - 0x27, 0xa9, 0xa6, 0xd6, 0x7f, 0x37, 0x9f, 0xd0, 0xbd, 0x9a, 0x4c, 0xf6, 0x72, 0xb8, 0xb9, 0xe6, - 0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x84, 0x02, 0xe3, 0x0c, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/services.proto b/vendor/google.golang.org/grpc/benchmark/grpc_testing/services.proto deleted file mode 100644 index f4e79078..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/services.proto +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2016 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// An integration test service that covers all the method signature permutations -// of unary/streaming requests/responses. -syntax = "proto3"; - -import "messages.proto"; -import "control.proto"; - -package grpc.testing; - -service BenchmarkService { - // One request followed by one response. - // The server returns the client payload as-is. - rpc UnaryCall(SimpleRequest) returns (SimpleResponse); - - // One request followed by one response. - // The server returns the client payload as-is. - rpc StreamingCall(stream SimpleRequest) returns (stream SimpleResponse); -} - -service WorkerService { - // Start server with specified workload. - // First request sent specifies the ServerConfig followed by ServerStatus - // response. After that, a "Mark" can be sent anytime to request the latest - // stats. Closing the stream will initiate shutdown of the test server - // and once the shutdown has finished, the OK status is sent to terminate - // this RPC. - rpc RunServer(stream ServerArgs) returns (stream ServerStatus); - - // Start client with specified workload. - // First request sent specifies the ClientConfig followed by ClientStatus - // response. After that, a "Mark" can be sent anytime to request the latest - // stats. Closing the stream will initiate shutdown of the test client - // and once the shutdown has finished, the OK status is sent to terminate - // this RPC. - rpc RunClient(stream ClientArgs) returns (stream ClientStatus); - - // Just return the core count - unary call - rpc CoreCount(CoreRequest) returns (CoreResponse); - - // Quit this worker - rpc QuitWorker(Void) returns (Void); -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/stats.pb.go b/vendor/google.golang.org/grpc/benchmark/grpc_testing/stats.pb.go deleted file mode 100644 index d69cb741..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/stats.pb.go +++ /dev/null @@ -1,208 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: stats.proto - -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type ServerStats struct { - // wall clock time change in seconds since last reset - TimeElapsed float64 `protobuf:"fixed64,1,opt,name=time_elapsed,json=timeElapsed" json:"time_elapsed,omitempty"` - // change in user time (in seconds) used by the server since last reset - TimeUser float64 `protobuf:"fixed64,2,opt,name=time_user,json=timeUser" json:"time_user,omitempty"` - // change in server time (in seconds) used by the server process and all - // threads since last reset - TimeSystem float64 `protobuf:"fixed64,3,opt,name=time_system,json=timeSystem" json:"time_system,omitempty"` -} - -func (m *ServerStats) Reset() { *m = ServerStats{} } -func (m *ServerStats) String() string { return proto.CompactTextString(m) } -func (*ServerStats) ProtoMessage() {} -func (*ServerStats) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} } - -func (m *ServerStats) GetTimeElapsed() float64 { - if m != nil { - return m.TimeElapsed - } - return 0 -} - -func (m *ServerStats) GetTimeUser() float64 { - if m != nil { - return m.TimeUser - } - return 0 -} - -func (m *ServerStats) GetTimeSystem() float64 { - if m != nil { - return m.TimeSystem - } - return 0 -} - -// Histogram params based on grpc/support/histogram.c -type HistogramParams struct { - Resolution float64 `protobuf:"fixed64,1,opt,name=resolution" json:"resolution,omitempty"` - MaxPossible float64 `protobuf:"fixed64,2,opt,name=max_possible,json=maxPossible" json:"max_possible,omitempty"` -} - -func (m *HistogramParams) Reset() { *m = HistogramParams{} } -func (m *HistogramParams) String() string { return proto.CompactTextString(m) } -func (*HistogramParams) ProtoMessage() {} -func (*HistogramParams) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} } - -func (m *HistogramParams) GetResolution() float64 { - if m != nil { - return m.Resolution - } - return 0 -} - -func (m *HistogramParams) GetMaxPossible() float64 { - if m != nil { - return m.MaxPossible - } - return 0 -} - -// Histogram data based on grpc/support/histogram.c -type HistogramData struct { - Bucket []uint32 `protobuf:"varint,1,rep,packed,name=bucket" json:"bucket,omitempty"` - MinSeen float64 `protobuf:"fixed64,2,opt,name=min_seen,json=minSeen" json:"min_seen,omitempty"` - MaxSeen float64 `protobuf:"fixed64,3,opt,name=max_seen,json=maxSeen" json:"max_seen,omitempty"` - Sum float64 `protobuf:"fixed64,4,opt,name=sum" json:"sum,omitempty"` - SumOfSquares float64 `protobuf:"fixed64,5,opt,name=sum_of_squares,json=sumOfSquares" json:"sum_of_squares,omitempty"` - Count float64 `protobuf:"fixed64,6,opt,name=count" json:"count,omitempty"` -} - -func (m *HistogramData) Reset() { *m = HistogramData{} } -func (m *HistogramData) String() string { return proto.CompactTextString(m) } -func (*HistogramData) ProtoMessage() {} -func (*HistogramData) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} } - -func (m *HistogramData) GetBucket() []uint32 { - if m != nil { - return m.Bucket - } - return nil -} - -func (m *HistogramData) GetMinSeen() float64 { - if m != nil { - return m.MinSeen - } - return 0 -} - -func (m *HistogramData) GetMaxSeen() float64 { - if m != nil { - return m.MaxSeen - } - return 0 -} - -func (m *HistogramData) GetSum() float64 { - if m != nil { - return m.Sum - } - return 0 -} - -func (m *HistogramData) GetSumOfSquares() float64 { - if m != nil { - return m.SumOfSquares - } - return 0 -} - -func (m *HistogramData) GetCount() float64 { - if m != nil { - return m.Count - } - return 0 -} - -type ClientStats struct { - // Latency histogram. Data points are in nanoseconds. - Latencies *HistogramData `protobuf:"bytes,1,opt,name=latencies" json:"latencies,omitempty"` - // See ServerStats for details. - TimeElapsed float64 `protobuf:"fixed64,2,opt,name=time_elapsed,json=timeElapsed" json:"time_elapsed,omitempty"` - TimeUser float64 `protobuf:"fixed64,3,opt,name=time_user,json=timeUser" json:"time_user,omitempty"` - TimeSystem float64 `protobuf:"fixed64,4,opt,name=time_system,json=timeSystem" json:"time_system,omitempty"` -} - -func (m *ClientStats) Reset() { *m = ClientStats{} } -func (m *ClientStats) String() string { return proto.CompactTextString(m) } -func (*ClientStats) ProtoMessage() {} -func (*ClientStats) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} } - -func (m *ClientStats) GetLatencies() *HistogramData { - if m != nil { - return m.Latencies - } - return nil -} - -func (m *ClientStats) GetTimeElapsed() float64 { - if m != nil { - return m.TimeElapsed - } - return 0 -} - -func (m *ClientStats) GetTimeUser() float64 { - if m != nil { - return m.TimeUser - } - return 0 -} - -func (m *ClientStats) GetTimeSystem() float64 { - if m != nil { - return m.TimeSystem - } - return 0 -} - -func init() { - proto.RegisterType((*ServerStats)(nil), "grpc.testing.ServerStats") - proto.RegisterType((*HistogramParams)(nil), "grpc.testing.HistogramParams") - proto.RegisterType((*HistogramData)(nil), "grpc.testing.HistogramData") - proto.RegisterType((*ClientStats)(nil), "grpc.testing.ClientStats") -} - -func init() { proto.RegisterFile("stats.proto", fileDescriptor4) } - -var fileDescriptor4 = []byte{ - // 341 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xc1, 0x4a, 0xeb, 0x40, - 0x14, 0x86, 0x49, 0xd3, 0xf6, 0xb6, 0x27, 0xed, 0xbd, 0x97, 0x41, 0x24, 0x52, 0xd0, 0x1a, 0x5c, - 0x74, 0x95, 0x85, 0xae, 0x5c, 0xab, 0xe0, 0xce, 0xd2, 0xe8, 0x3a, 0x4c, 0xe3, 0x69, 0x19, 0xcc, - 0xcc, 0xc4, 0x39, 0x33, 0x12, 0x1f, 0x49, 0x7c, 0x49, 0xc9, 0x24, 0x68, 0x55, 0xd0, 0x5d, 0xe6, - 0xfb, 0x7e, 0xe6, 0xe4, 0xe4, 0x0f, 0x44, 0x64, 0xb9, 0xa5, 0xb4, 0x32, 0xda, 0x6a, 0x36, 0xd9, - 0x9a, 0xaa, 0x48, 0x2d, 0x92, 0x15, 0x6a, 0x9b, 0x28, 0x88, 0x32, 0x34, 0x4f, 0x68, 0xb2, 0x26, - 0xc2, 0x8e, 0x61, 0x62, 0x85, 0xc4, 0x1c, 0x4b, 0x5e, 0x11, 0xde, 0xc7, 0xc1, 0x3c, 0x58, 0x04, - 0xab, 0xa8, 0x61, 0x57, 0x2d, 0x62, 0x33, 0x18, 0xfb, 0x88, 0x23, 0x34, 0x71, 0xcf, 0xfb, 0x51, - 0x03, 0xee, 0x08, 0x0d, 0x3b, 0x02, 0x9f, 0xcd, 0xe9, 0x99, 0x2c, 0xca, 0x38, 0xf4, 0x1a, 0x1a, - 0x94, 0x79, 0x92, 0xdc, 0xc2, 0xbf, 0x6b, 0x41, 0x56, 0x6f, 0x0d, 0x97, 0x4b, 0x6e, 0xb8, 0x24, - 0x76, 0x08, 0x60, 0x90, 0x74, 0xe9, 0xac, 0xd0, 0xaa, 0x9b, 0xb8, 0x43, 0x9a, 0x77, 0x92, 0xbc, - 0xce, 0x2b, 0x4d, 0x24, 0xd6, 0x25, 0x76, 0x33, 0x23, 0xc9, 0xeb, 0x65, 0x87, 0x92, 0xd7, 0x00, - 0xa6, 0xef, 0xd7, 0x5e, 0x72, 0xcb, 0xd9, 0x3e, 0x0c, 0xd7, 0xae, 0x78, 0x40, 0x1b, 0x07, 0xf3, - 0x70, 0x31, 0x5d, 0x75, 0x27, 0x76, 0x00, 0x23, 0x29, 0x54, 0x4e, 0x88, 0xaa, 0xbb, 0xe8, 0x8f, - 0x14, 0x2a, 0x43, 0x54, 0x5e, 0xf1, 0xba, 0x55, 0x61, 0xa7, 0x78, 0xed, 0xd5, 0x7f, 0x08, 0xc9, - 0xc9, 0xb8, 0xef, 0x69, 0xf3, 0xc8, 0x4e, 0xe0, 0x2f, 0x39, 0x99, 0xeb, 0x4d, 0x4e, 0x8f, 0x8e, - 0x1b, 0xa4, 0x78, 0xe0, 0xe5, 0x84, 0x9c, 0xbc, 0xd9, 0x64, 0x2d, 0x63, 0x7b, 0x30, 0x28, 0xb4, - 0x53, 0x36, 0x1e, 0x7a, 0xd9, 0x1e, 0x92, 0x97, 0x00, 0xa2, 0x8b, 0x52, 0xa0, 0xb2, 0xed, 0x47, - 0x3f, 0x87, 0x71, 0xc9, 0x2d, 0xaa, 0x42, 0x20, 0xf9, 0xfd, 0xa3, 0xd3, 0x59, 0xba, 0xdb, 0x52, - 0xfa, 0x69, 0xb7, 0xd5, 0x47, 0xfa, 0x5b, 0x5f, 0xbd, 0x5f, 0xfa, 0x0a, 0x7f, 0xee, 0xab, 0xff, - 0xb5, 0xaf, 0xf5, 0xd0, 0xff, 0x34, 0x67, 0x6f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xea, 0x75, 0x34, - 0x90, 0x43, 0x02, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/benchmark/grpc_testing/stats.proto b/vendor/google.golang.org/grpc/benchmark/grpc_testing/stats.proto deleted file mode 100644 index baf3610f..00000000 --- a/vendor/google.golang.org/grpc/benchmark/grpc_testing/stats.proto +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2016 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package grpc.testing; - -message ServerStats { - // wall clock time change in seconds since last reset - double time_elapsed = 1; - - // change in user time (in seconds) used by the server since last reset - double time_user = 2; - - // change in server time (in seconds) used by the server process and all - // threads since last reset - double time_system = 3; -} - -// Histogram params based on grpc/support/histogram.c -message HistogramParams { - double resolution = 1; // first bucket is [0, 1 + resolution) - double max_possible = 2; // use enough buckets to allow this value -} - -// Histogram data based on grpc/support/histogram.c -message HistogramData { - repeated uint32 bucket = 1; - double min_seen = 2; - double max_seen = 3; - double sum = 4; - double sum_of_squares = 5; - double count = 6; -} - -message ClientStats { - // Latency histogram. Data points are in nanoseconds. - HistogramData latencies = 1; - - // See ServerStats for details. - double time_elapsed = 2; - double time_user = 3; - double time_system = 4; -} diff --git a/vendor/google.golang.org/grpc/benchmark/latency/latency.go b/vendor/google.golang.org/grpc/benchmark/latency/latency.go deleted file mode 100644 index 5839a5c4..00000000 --- a/vendor/google.golang.org/grpc/benchmark/latency/latency.go +++ /dev/null @@ -1,316 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package latency provides wrappers for net.Conn, net.Listener, and -// net.Dialers, designed to interoperate to inject real-world latency into -// network connections. -package latency - -import ( - "bytes" - "encoding/binary" - "fmt" - "io" - "net" - "time" - - "golang.org/x/net/context" -) - -// Dialer is a function matching the signature of net.Dial. -type Dialer func(network, address string) (net.Conn, error) - -// TimeoutDialer is a function matching the signature of net.DialTimeout. -type TimeoutDialer func(network, address string, timeout time.Duration) (net.Conn, error) - -// ContextDialer is a function matching the signature of -// net.Dialer.DialContext. -type ContextDialer func(ctx context.Context, network, address string) (net.Conn, error) - -// Network represents a network with the given bandwidth, latency, and MTU -// (Maximum Transmission Unit) configuration, and can produce wrappers of -// net.Listeners, net.Conn, and various forms of dialing functions. The -// Listeners and Dialers/Conns on both sides of connections must come from this -// package, but need not be created from the same Network. Latency is computed -// when sending (in Write), and is injected when receiving (in Read). This -// allows senders' Write calls to be non-blocking, as in real-world -// applications. -// -// Note: Latency is injected by the sender specifying the absolute time data -// should be available, and the reader delaying until that time arrives to -// provide the data. This package attempts to counter-act the effects of clock -// drift and existing network latency by measuring the delay between the -// sender's transmission time and the receiver's reception time during startup. -// No attempt is made to measure the existing bandwidth of the connection. -type Network struct { - Kbps int // Kilobits per second; if non-positive, infinite - Latency time.Duration // One-way latency (sending); if non-positive, no delay - MTU int // Bytes per packet; if non-positive, infinite -} - -var ( - //Local simulates local network. - Local = Network{0, 0, 0} - //LAN simulates local area network network. - LAN = Network{100 * 1024, 2 * time.Millisecond, 1500} - //WAN simulates wide area network. - WAN = Network{20 * 1024, 30 * time.Millisecond, 1500} - //Longhaul simulates bad network. - Longhaul = Network{1000 * 1024, 200 * time.Millisecond, 9000} -) - -// Conn returns a net.Conn that wraps c and injects n's latency into that -// connection. This function also imposes latency for connection creation. -// If n's Latency is lower than the measured latency in c, an error is -// returned. -func (n *Network) Conn(c net.Conn) (net.Conn, error) { - start := now() - nc := &conn{Conn: c, network: n, readBuf: new(bytes.Buffer)} - if err := nc.sync(); err != nil { - return nil, err - } - sleep(start.Add(nc.delay).Sub(now())) - return nc, nil -} - -type conn struct { - net.Conn - network *Network - - readBuf *bytes.Buffer // one packet worth of data received - lastSendEnd time.Time // time the previous Write should be fully on the wire - delay time.Duration // desired latency - measured latency -} - -// header is sent before all data transmitted by the application. -type header struct { - ReadTime int64 // Time the reader is allowed to read this packet (UnixNano) - Sz int32 // Size of the data in the packet -} - -func (c *conn) Write(p []byte) (n int, err error) { - tNow := now() - if c.lastSendEnd.Before(tNow) { - c.lastSendEnd = tNow - } - for len(p) > 0 { - pkt := p - if c.network.MTU > 0 && len(pkt) > c.network.MTU { - pkt = pkt[:c.network.MTU] - p = p[c.network.MTU:] - } else { - p = nil - } - if c.network.Kbps > 0 { - if congestion := c.lastSendEnd.Sub(tNow) - c.delay; congestion > 0 { - // The network is full; sleep until this packet can be sent. - sleep(congestion) - tNow = tNow.Add(congestion) - } - } - c.lastSendEnd = c.lastSendEnd.Add(c.network.pktTime(len(pkt))) - hdr := header{ReadTime: c.lastSendEnd.Add(c.delay).UnixNano(), Sz: int32(len(pkt))} - if err := binary.Write(c.Conn, binary.BigEndian, hdr); err != nil { - return n, err - } - x, err := c.Conn.Write(pkt) - n += x - if err != nil { - return n, err - } - } - return n, nil -} - -func (c *conn) Read(p []byte) (n int, err error) { - if c.readBuf.Len() == 0 { - var hdr header - if err := binary.Read(c.Conn, binary.BigEndian, &hdr); err != nil { - return 0, err - } - defer func() { sleep(time.Unix(0, hdr.ReadTime).Sub(now())) }() - - if _, err := io.CopyN(c.readBuf, c.Conn, int64(hdr.Sz)); err != nil { - return 0, err - } - } - // Read from readBuf. - return c.readBuf.Read(p) -} - -// sync does a handshake and then measures the latency on the network in -// coordination with the other side. -func (c *conn) sync() error { - const ( - pingMsg = "syncPing" - warmup = 10 // minimum number of iterations to measure latency - giveUp = 50 // maximum number of iterations to measure latency - accuracy = time.Millisecond // req'd accuracy to stop early - goodRun = 3 // stop early if latency within accuracy this many times - ) - - type syncMsg struct { - SendT int64 // Time sent. If zero, stop. - RecvT int64 // Time received. If zero, fill in and respond. - } - - // A trivial handshake - if err := binary.Write(c.Conn, binary.BigEndian, []byte(pingMsg)); err != nil { - return err - } - var ping [8]byte - if err := binary.Read(c.Conn, binary.BigEndian, &ping); err != nil { - return err - } else if string(ping[:]) != pingMsg { - return fmt.Errorf("malformed handshake message: %v (want %q)", ping, pingMsg) - } - - // Both sides are alive and syncing. Calculate network delay / clock skew. - att := 0 - good := 0 - var latency time.Duration - localDone, remoteDone := false, false - send := true - for !localDone || !remoteDone { - if send { - if err := binary.Write(c.Conn, binary.BigEndian, syncMsg{SendT: now().UnixNano()}); err != nil { - return err - } - att++ - send = false - } - - // Block until we get a syncMsg - m := syncMsg{} - if err := binary.Read(c.Conn, binary.BigEndian, &m); err != nil { - return err - } - - if m.RecvT == 0 { - // Message initiated from other side. - if m.SendT == 0 { - remoteDone = true - continue - } - // Send response. - m.RecvT = now().UnixNano() - if err := binary.Write(c.Conn, binary.BigEndian, m); err != nil { - return err - } - continue - } - - lag := time.Duration(m.RecvT - m.SendT) - latency += lag - avgLatency := latency / time.Duration(att) - if e := lag - avgLatency; e > -accuracy && e < accuracy { - good++ - } else { - good = 0 - } - if att < giveUp && (att < warmup || good < goodRun) { - send = true - continue - } - localDone = true - latency = avgLatency - // Tell the other side we're done. - if err := binary.Write(c.Conn, binary.BigEndian, syncMsg{}); err != nil { - return err - } - } - if c.network.Latency <= 0 { - return nil - } - c.delay = c.network.Latency - latency - if c.delay < 0 { - return fmt.Errorf("measured network latency (%v) higher than desired latency (%v)", latency, c.network.Latency) - } - return nil -} - -// Listener returns a net.Listener that wraps l and injects n's latency in its -// connections. -func (n *Network) Listener(l net.Listener) net.Listener { - return &listener{Listener: l, network: n} -} - -type listener struct { - net.Listener - network *Network -} - -func (l *listener) Accept() (net.Conn, error) { - c, err := l.Listener.Accept() - if err != nil { - return nil, err - } - return l.network.Conn(c) -} - -// Dialer returns a Dialer that wraps d and injects n's latency in its -// connections. n's Latency is also injected to the connection's creation. -func (n *Network) Dialer(d Dialer) Dialer { - return func(network, address string) (net.Conn, error) { - conn, err := d(network, address) - if err != nil { - return nil, err - } - return n.Conn(conn) - } -} - -// TimeoutDialer returns a TimeoutDialer that wraps d and injects n's latency -// in its connections. n's Latency is also injected to the connection's -// creation. -func (n *Network) TimeoutDialer(d TimeoutDialer) TimeoutDialer { - return func(network, address string, timeout time.Duration) (net.Conn, error) { - conn, err := d(network, address, timeout) - if err != nil { - return nil, err - } - return n.Conn(conn) - } -} - -// ContextDialer returns a ContextDialer that wraps d and injects n's latency -// in its connections. n's Latency is also injected to the connection's -// creation. -func (n *Network) ContextDialer(d ContextDialer) ContextDialer { - return func(ctx context.Context, network, address string) (net.Conn, error) { - conn, err := d(ctx, network, address) - if err != nil { - return nil, err - } - return n.Conn(conn) - } -} - -// pktTime returns the time it takes to transmit one packet of data of size b -// in bytes. -func (n *Network) pktTime(b int) time.Duration { - if n.Kbps <= 0 { - return time.Duration(0) - } - return time.Duration(b) * time.Second / time.Duration(n.Kbps*(1024/8)) -} - -// Wrappers for testing - -var now = time.Now -var sleep = time.Sleep diff --git a/vendor/google.golang.org/grpc/benchmark/latency/latency_test.go b/vendor/google.golang.org/grpc/benchmark/latency/latency_test.go deleted file mode 100644 index ab2625bf..00000000 --- a/vendor/google.golang.org/grpc/benchmark/latency/latency_test.go +++ /dev/null @@ -1,353 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package latency - -import ( - "bytes" - "fmt" - "net" - "reflect" - "sync" - "testing" - "time" -) - -// bufConn is a net.Conn implemented by a bytes.Buffer (which is a ReadWriter). -type bufConn struct { - *bytes.Buffer -} - -func (bufConn) Close() error { panic("unimplemented") } -func (bufConn) LocalAddr() net.Addr { panic("unimplemented") } -func (bufConn) RemoteAddr() net.Addr { panic("unimplemented") } -func (bufConn) SetDeadline(t time.Time) error { panic("unimplemneted") } -func (bufConn) SetReadDeadline(t time.Time) error { panic("unimplemneted") } -func (bufConn) SetWriteDeadline(t time.Time) error { panic("unimplemneted") } - -func restoreHooks() func() { - s := sleep - n := now - return func() { - sleep = s - now = n - } -} - -func TestConn(t *testing.T) { - defer restoreHooks()() - - // Constant time. - now = func() time.Time { return time.Unix(123, 456) } - - // Capture sleep times for checking later. - var sleepTimes []time.Duration - sleep = func(t time.Duration) { sleepTimes = append(sleepTimes, t) } - - wantSleeps := func(want ...time.Duration) { - if !reflect.DeepEqual(want, sleepTimes) { - t.Fatalf("sleepTimes = %v; want %v", sleepTimes, want) - } - sleepTimes = nil - } - - // Use a fairly high latency to cause a large BDP and avoid sleeps while - // writing due to simulation of full buffers. - latency := 1 * time.Second - c, err := (&Network{Kbps: 1, Latency: latency, MTU: 5}).Conn(bufConn{&bytes.Buffer{}}) - if err != nil { - t.Fatalf("Unexpected error creating connection: %v", err) - } - wantSleeps(latency) // Connection creation delay. - - // 1 kbps = 128 Bps. Divides evenly by 1 second using nanos. - byteLatency := time.Duration(time.Second / 128) - - write := func(b []byte) { - n, err := c.Write(b) - if n != len(b) || err != nil { - t.Fatalf("c.Write(%v) = %v, %v; want %v, nil", b, n, err, len(b)) - } - } - - write([]byte{1, 2, 3, 4, 5}) // One full packet - pkt1Time := latency + byteLatency*5 - write([]byte{6}) // One partial packet - pkt2Time := pkt1Time + byteLatency - write([]byte{7, 8, 9, 10, 11, 12, 13}) // Two packets - pkt3Time := pkt2Time + byteLatency*5 - pkt4Time := pkt3Time + byteLatency*2 - - // No reads, so no sleeps yet. - wantSleeps() - - read := func(n int, want []byte) { - b := make([]byte, n) - if rd, err := c.Read(b); err != nil || rd != len(want) { - t.Fatalf("c.Read(<%v bytes>) = %v, %v; want %v, nil", n, rd, err, len(want)) - } - if !reflect.DeepEqual(b[:len(want)], want) { - t.Fatalf("read %v; want %v", b, want) - } - } - - read(1, []byte{1}) - wantSleeps(pkt1Time) - read(1, []byte{2}) - wantSleeps() - read(3, []byte{3, 4, 5}) - wantSleeps() - read(2, []byte{6}) - wantSleeps(pkt2Time) - read(2, []byte{7, 8}) - wantSleeps(pkt3Time) - read(10, []byte{9, 10, 11}) - wantSleeps() - read(10, []byte{12, 13}) - wantSleeps(pkt4Time) -} - -func TestSync(t *testing.T) { - defer restoreHooks()() - - // Infinitely fast CPU: time doesn't pass unless sleep is called. - tn := time.Unix(123, 0) - now = func() time.Time { return tn } - sleep = func(d time.Duration) { tn = tn.Add(d) } - - // Simulate a 20ms latency network, then run sync across that and expect to - // measure 20ms latency, or 10ms additional delay for a 30ms network. - slowConn, err := (&Network{Kbps: 0, Latency: 20 * time.Millisecond, MTU: 5}).Conn(bufConn{&bytes.Buffer{}}) - if err != nil { - t.Fatalf("Unexpected error creating connection: %v", err) - } - c, err := (&Network{Latency: 30 * time.Millisecond}).Conn(slowConn) - if err != nil { - t.Fatalf("Unexpected error creating connection: %v", err) - } - if c.(*conn).delay != 10*time.Millisecond { - t.Fatalf("c.delay = %v; want 10ms", c.(*conn).delay) - } -} - -func TestSyncTooSlow(t *testing.T) { - defer restoreHooks()() - - // Infinitely fast CPU: time doesn't pass unless sleep is called. - tn := time.Unix(123, 0) - now = func() time.Time { return tn } - sleep = func(d time.Duration) { tn = tn.Add(d) } - - // Simulate a 10ms latency network, then attempt to simulate a 5ms latency - // network and expect an error. - slowConn, err := (&Network{Kbps: 0, Latency: 10 * time.Millisecond, MTU: 5}).Conn(bufConn{&bytes.Buffer{}}) - if err != nil { - t.Fatalf("Unexpected error creating connection: %v", err) - } - - errWant := "measured network latency (10ms) higher than desired latency (5ms)" - if _, err := (&Network{Latency: 5 * time.Millisecond}).Conn(slowConn); err == nil || err.Error() != errWant { - t.Fatalf("Conn() = _, %q; want _, %q", err, errWant) - } -} - -func TestListenerAndDialer(t *testing.T) { - defer restoreHooks()() - - tn := time.Unix(123, 0) - startTime := tn - mu := &sync.Mutex{} - now = func() time.Time { - mu.Lock() - defer mu.Unlock() - return tn - } - - // Use a fairly high latency to cause a large BDP and avoid sleeps while - // writing due to simulation of full buffers. - n := &Network{Kbps: 2, Latency: 1 * time.Second, MTU: 10} - // 2 kbps = .25 kBps = 256 Bps - byteLatency := func(n int) time.Duration { - return time.Duration(n) * time.Second / 256 - } - - // Create a real listener and wrap it. - l, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Unexpected error creating listener: %v", err) - } - defer l.Close() - l = n.Listener(l) - - var serverConn net.Conn - var scErr error - scDone := make(chan struct{}) - go func() { - serverConn, scErr = l.Accept() - close(scDone) - }() - - // Create a dialer and use it. - clientConn, err := n.TimeoutDialer(net.DialTimeout)("tcp", l.Addr().String(), 2*time.Second) - if err != nil { - t.Fatalf("Unexpected error dialing: %v", err) - } - defer clientConn.Close() - - // Block until server's Conn is available. - <-scDone - if scErr != nil { - t.Fatalf("Unexpected error listening: %v", scErr) - } - defer serverConn.Close() - - // sleep (only) advances tn. Done after connections established so sync detects zero delay. - sleep = func(d time.Duration) { - mu.Lock() - defer mu.Unlock() - if d > 0 { - tn = tn.Add(d) - } - } - - seq := func(a, b int) []byte { - buf := make([]byte, b-a) - for i := 0; i < b-a; i++ { - buf[i] = byte(i + a) - } - return buf - } - - pkt1 := seq(0, 10) - pkt2 := seq(10, 30) - pkt3 := seq(30, 35) - - write := func(c net.Conn, b []byte) { - n, err := c.Write(b) - if n != len(b) || err != nil { - t.Fatalf("c.Write(%v) = %v, %v; want %v, nil", b, n, err, len(b)) - } - } - - write(serverConn, pkt1) - write(serverConn, pkt2) - write(serverConn, pkt3) - write(clientConn, pkt3) - write(clientConn, pkt1) - write(clientConn, pkt2) - - if tn != startTime { - t.Fatalf("unexpected sleep in write; tn = %v; want %v", tn, startTime) - } - - read := func(c net.Conn, n int, want []byte, timeWant time.Time) { - b := make([]byte, n) - if rd, err := c.Read(b); err != nil || rd != len(want) { - t.Fatalf("c.Read(<%v bytes>) = %v, %v; want %v, nil (read: %v)", n, rd, err, len(want), b[:rd]) - } - if !reflect.DeepEqual(b[:len(want)], want) { - t.Fatalf("read %v; want %v", b, want) - } - if !tn.Equal(timeWant) { - t.Errorf("tn after read(%v) = %v; want %v", want, tn, timeWant) - } - } - - read(clientConn, len(pkt1)+1, pkt1, startTime.Add(n.Latency+byteLatency(len(pkt1)))) - read(serverConn, len(pkt3)+1, pkt3, tn) // tn was advanced by the above read; pkt3 is shorter than pkt1 - - read(clientConn, len(pkt2), pkt2[:10], startTime.Add(n.Latency+byteLatency(len(pkt1)+10))) - read(clientConn, len(pkt2), pkt2[10:], startTime.Add(n.Latency+byteLatency(len(pkt1)+len(pkt2)))) - read(clientConn, len(pkt3), pkt3, startTime.Add(n.Latency+byteLatency(len(pkt1)+len(pkt2)+len(pkt3)))) - - read(serverConn, len(pkt1), pkt1, tn) // tn already past the arrival time due to prior reads - read(serverConn, len(pkt2), pkt2[:10], tn) - read(serverConn, len(pkt2), pkt2[10:], tn) - - // Sleep awhile and make sure the read happens disregarding previous writes - // (lastSendEnd handling). - sleep(10 * time.Second) - write(clientConn, pkt1) - read(serverConn, len(pkt1), pkt1, tn.Add(n.Latency+byteLatency(len(pkt1)))) - - // Send, sleep longer than the network delay, then make sure the read happens - // instantly. - write(serverConn, pkt1) - sleep(10 * time.Second) - read(clientConn, len(pkt1), pkt1, tn) -} - -func TestBufferBloat(t *testing.T) { - defer restoreHooks()() - - // Infinitely fast CPU: time doesn't pass unless sleep is called. - tn := time.Unix(123, 0) - now = func() time.Time { return tn } - // Capture sleep times for checking later. - var sleepTimes []time.Duration - sleep = func(d time.Duration) { - sleepTimes = append(sleepTimes, d) - tn = tn.Add(d) - } - - wantSleeps := func(want ...time.Duration) error { - if !reflect.DeepEqual(want, sleepTimes) { - return fmt.Errorf("sleepTimes = %v; want %v", sleepTimes, want) - } - sleepTimes = nil - return nil - } - - n := &Network{Kbps: 8 /* 1KBps */, Latency: time.Second, MTU: 8} - bdpBytes := (n.Kbps * 1024 / 8) * int(n.Latency/time.Second) // 1024 - c, err := n.Conn(bufConn{&bytes.Buffer{}}) - if err != nil { - t.Fatalf("Unexpected error creating connection: %v", err) - } - wantSleeps(n.Latency) // Connection creation delay. - - write := func(n int, sleeps ...time.Duration) { - if wt, err := c.Write(make([]byte, n)); err != nil || wt != n { - t.Fatalf("c.Write(<%v bytes>) = %v, %v; want %v, nil", n, wt, err, n) - } - if err := wantSleeps(sleeps...); err != nil { - t.Fatalf("After writing %v bytes: %v", n, err) - } - } - - read := func(n int, sleeps ...time.Duration) { - if rd, err := c.Read(make([]byte, n)); err != nil || rd != n { - t.Fatalf("c.Read(_) = %v, %v; want %v, nil", rd, err, n) - } - if err := wantSleeps(sleeps...); err != nil { - t.Fatalf("After reading %v bytes: %v", n, err) - } - } - - write(8) // No reads and buffer not full, so no sleeps yet. - read(8, time.Second+n.pktTime(8)) - - write(bdpBytes) // Fill the buffer. - write(1) // We can send one extra packet even when the buffer is full. - write(n.MTU, n.pktTime(1)) // Make sure we sleep to clear the previous write. - write(1, n.pktTime(n.MTU)) - write(n.MTU+1, n.pktTime(1), n.pktTime(n.MTU)) - - tn = tn.Add(10 * time.Second) // Wait long enough for the buffer to clear. - write(bdpBytes) // No sleeps required. -} diff --git a/vendor/google.golang.org/grpc/benchmark/primitives/code_string_test.go b/vendor/google.golang.org/grpc/benchmark/primitives/code_string_test.go deleted file mode 100644 index 51b1ee48..00000000 --- a/vendor/google.golang.org/grpc/benchmark/primitives/code_string_test.go +++ /dev/null @@ -1,135 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package primitives_test - -import ( - "strconv" - "testing" - - "google.golang.org/grpc/codes" -) - -type codeBench uint32 - -const ( - OK codeBench = iota - Canceled - Unknown - InvalidArgument - DeadlineExceeded - NotFound - AlreadyExists - PermissionDenied - ResourceExhausted - FailedPrecondition - Aborted - OutOfRange - Unimplemented - Internal - Unavailable - DataLoss - Unauthenticated -) - -// The following String() function was generated by stringer. -const _Code_name = "OKCanceledUnknownInvalidArgumentDeadlineExceededNotFoundAlreadyExistsPermissionDeniedResourceExhaustedFailedPreconditionAbortedOutOfRangeUnimplementedInternalUnavailableDataLossUnauthenticated" - -var _Code_index = [...]uint8{0, 2, 10, 17, 32, 48, 56, 69, 85, 102, 120, 127, 137, 150, 158, 169, 177, 192} - -func (i codeBench) String() string { - if i >= codeBench(len(_Code_index)-1) { - return "Code(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _Code_name[_Code_index[i]:_Code_index[i+1]] -} - -var nameMap = map[codeBench]string{ - OK: "OK", - Canceled: "Canceled", - Unknown: "Unknown", - InvalidArgument: "InvalidArgument", - DeadlineExceeded: "DeadlineExceeded", - NotFound: "NotFound", - AlreadyExists: "AlreadyExists", - PermissionDenied: "PermissionDenied", - ResourceExhausted: "ResourceExhausted", - FailedPrecondition: "FailedPrecondition", - Aborted: "Aborted", - OutOfRange: "OutOfRange", - Unimplemented: "Unimplemented", - Internal: "Internal", - Unavailable: "Unavailable", - DataLoss: "DataLoss", - Unauthenticated: "Unauthenticated", -} - -func (i codeBench) StringUsingMap() string { - if s, ok := nameMap[i]; ok { - return s - } - return "Code(" + strconv.FormatInt(int64(i), 10) + ")" -} - -func BenchmarkCodeStringStringer(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - c := codeBench(uint32(i % 17)) - _ = c.String() - } - b.StopTimer() -} - -func BenchmarkCodeStringMap(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - c := codeBench(uint32(i % 17)) - _ = c.StringUsingMap() - } - b.StopTimer() -} - -// codes.Code.String() does a switch. -func BenchmarkCodeStringSwitch(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - c := codes.Code(uint32(i % 17)) - _ = c.String() - } - b.StopTimer() -} - -// Testing all codes (0<=c<=16) and also one overflow (17). -func BenchmarkCodeStringStringerWithOverflow(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - c := codeBench(uint32(i % 18)) - _ = c.String() - } - b.StopTimer() -} - -// Testing all codes (0<=c<=16) and also one overflow (17). -func BenchmarkCodeStringSwitchWithOverflow(b *testing.B) { - b.ResetTimer() - for i := 0; i < b.N; i++ { - c := codes.Code(uint32(i % 18)) - _ = c.String() - } - b.StopTimer() -} diff --git a/vendor/google.golang.org/grpc/benchmark/primitives/context_test.go b/vendor/google.golang.org/grpc/benchmark/primitives/context_test.go deleted file mode 100644 index e1d6c043..00000000 --- a/vendor/google.golang.org/grpc/benchmark/primitives/context_test.go +++ /dev/null @@ -1,120 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package primitives_test - -import ( - "testing" - "time" - - "golang.org/x/net/context" -) - -func BenchmarkCancelContextErrNoErr(b *testing.B) { - ctx, cancel := context.WithCancel(context.Background()) - for i := 0; i < b.N; i++ { - if err := ctx.Err(); err != nil { - b.Fatal("error") - } - } - cancel() -} - -func BenchmarkCancelContextErrGotErr(b *testing.B) { - ctx, cancel := context.WithCancel(context.Background()) - cancel() - for i := 0; i < b.N; i++ { - if err := ctx.Err(); err == nil { - b.Fatal("error") - } - } -} - -func BenchmarkCancelContextChannelNoErr(b *testing.B) { - ctx, cancel := context.WithCancel(context.Background()) - for i := 0; i < b.N; i++ { - select { - case <-ctx.Done(): - b.Fatal("error: ctx.Done():", ctx.Err()) - default: - } - } - cancel() -} - -func BenchmarkCancelContextChannelGotErr(b *testing.B) { - ctx, cancel := context.WithCancel(context.Background()) - cancel() - for i := 0; i < b.N; i++ { - select { - case <-ctx.Done(): - if err := ctx.Err(); err == nil { - b.Fatal("error") - } - default: - b.Fatal("error: !ctx.Done()") - } - } -} - -func BenchmarkTimerContextErrNoErr(b *testing.B) { - ctx, cancel := context.WithTimeout(context.Background(), 24*time.Hour) - for i := 0; i < b.N; i++ { - if err := ctx.Err(); err != nil { - b.Fatal("error") - } - } - cancel() -} - -func BenchmarkTimerContextErrGotErr(b *testing.B) { - ctx, cancel := context.WithTimeout(context.Background(), time.Microsecond) - cancel() - for i := 0; i < b.N; i++ { - if err := ctx.Err(); err == nil { - b.Fatal("error") - } - } -} - -func BenchmarkTimerContextChannelNoErr(b *testing.B) { - ctx, cancel := context.WithTimeout(context.Background(), 24*time.Hour) - for i := 0; i < b.N; i++ { - select { - case <-ctx.Done(): - b.Fatal("error: ctx.Done():", ctx.Err()) - default: - } - } - cancel() -} - -func BenchmarkTimerContextChannelGotErr(b *testing.B) { - ctx, cancel := context.WithTimeout(context.Background(), time.Microsecond) - cancel() - for i := 0; i < b.N; i++ { - select { - case <-ctx.Done(): - if err := ctx.Err(); err == nil { - b.Fatal("error") - } - default: - b.Fatal("error: !ctx.Done()") - } - } -} diff --git a/vendor/google.golang.org/grpc/benchmark/primitives/primitives_test.go b/vendor/google.golang.org/grpc/benchmark/primitives/primitives_test.go deleted file mode 100644 index 846813d8..00000000 --- a/vendor/google.golang.org/grpc/benchmark/primitives/primitives_test.go +++ /dev/null @@ -1,403 +0,0 @@ -// +build go1.7 - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package primitives_test contains benchmarks for various synchronization primitives -// available in Go. -package primitives_test - -import ( - "fmt" - "sync" - "sync/atomic" - "testing" - "time" - "unsafe" -) - -func BenchmarkSelectClosed(b *testing.B) { - c := make(chan struct{}) - close(c) - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - select { - case <-c: - x++ - default: - } - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkSelectOpen(b *testing.B) { - c := make(chan struct{}) - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - select { - case <-c: - default: - x++ - } - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkAtomicBool(b *testing.B) { - c := int32(0) - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - if atomic.LoadInt32(&c) == 0 { - x++ - } - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkAtomicValueLoad(b *testing.B) { - c := atomic.Value{} - c.Store(0) - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - if c.Load().(int) == 0 { - x++ - } - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkAtomicValueStore(b *testing.B) { - c := atomic.Value{} - v := 123 - b.ResetTimer() - for i := 0; i < b.N; i++ { - c.Store(v) - } - b.StopTimer() -} - -func BenchmarkMutex(b *testing.B) { - c := sync.Mutex{} - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - c.Lock() - x++ - c.Unlock() - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkRWMutex(b *testing.B) { - c := sync.RWMutex{} - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - c.RLock() - x++ - c.RUnlock() - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkRWMutexW(b *testing.B) { - c := sync.RWMutex{} - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - c.Lock() - x++ - c.Unlock() - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkMutexWithDefer(b *testing.B) { - c := sync.Mutex{} - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - func() { - c.Lock() - defer c.Unlock() - x++ - }() - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkMutexWithClosureDefer(b *testing.B) { - c := sync.Mutex{} - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - func() { - c.Lock() - defer func() { c.Unlock() }() - x++ - }() - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkMutexWithoutDefer(b *testing.B) { - c := sync.Mutex{} - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - func() { - c.Lock() - x++ - c.Unlock() - }() - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkAtomicAddInt64(b *testing.B) { - var c int64 - b.ResetTimer() - for i := 0; i < b.N; i++ { - atomic.AddInt64(&c, 1) - } - b.StopTimer() - if c != int64(b.N) { - b.Fatal("error") - } -} - -func BenchmarkAtomicTimeValueStore(b *testing.B) { - var c atomic.Value - t := time.Now() - b.ResetTimer() - for i := 0; i < b.N; i++ { - c.Store(t) - } - b.StopTimer() -} - -func BenchmarkAtomic16BValueStore(b *testing.B) { - var c atomic.Value - t := struct { - a int64 - b int64 - }{ - 123, 123, - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - c.Store(t) - } - b.StopTimer() -} - -func BenchmarkAtomic32BValueStore(b *testing.B) { - var c atomic.Value - t := struct { - a int64 - b int64 - c int64 - d int64 - }{ - 123, 123, 123, 123, - } - b.ResetTimer() - for i := 0; i < b.N; i++ { - c.Store(t) - } - b.StopTimer() -} - -func BenchmarkAtomicPointerStore(b *testing.B) { - t := 123 - var up unsafe.Pointer - b.ResetTimer() - for i := 0; i < b.N; i++ { - atomic.StorePointer(&up, unsafe.Pointer(&t)) - } - b.StopTimer() -} - -func BenchmarkAtomicTimePointerStore(b *testing.B) { - t := time.Now() - var up unsafe.Pointer - b.ResetTimer() - for i := 0; i < b.N; i++ { - atomic.StorePointer(&up, unsafe.Pointer(&t)) - } - b.StopTimer() -} - -func BenchmarkStoreContentionWithAtomic(b *testing.B) { - t := 123 - var c unsafe.Pointer - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - atomic.StorePointer(&c, unsafe.Pointer(&t)) - } - }) -} - -func BenchmarkStoreContentionWithMutex(b *testing.B) { - t := 123 - var mu sync.Mutex - var c int - - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - mu.Lock() - c = t - mu.Unlock() - } - }) - _ = c -} - -type dummyStruct struct { - a int64 - b time.Time -} - -func BenchmarkStructStoreContention(b *testing.B) { - d := dummyStruct{} - dp := unsafe.Pointer(&d) - t := time.Now() - for _, j := range []int{100000000, 10000, 0} { - for _, i := range []int{100000, 10} { - b.Run(fmt.Sprintf("CAS/%v/%v", j, i), func(b *testing.B) { - b.SetParallelism(i) - b.RunParallel(func(pb *testing.PB) { - n := &dummyStruct{ - b: t, - } - for pb.Next() { - for y := 0; y < j; y++ { - } - for { - v := (*dummyStruct)(atomic.LoadPointer(&dp)) - n.a = v.a + 1 - if atomic.CompareAndSwapPointer(&dp, unsafe.Pointer(v), unsafe.Pointer(n)) { - n = v - break - } - } - } - }) - }) - } - } - - var mu sync.Mutex - for _, j := range []int{100000000, 10000, 0} { - for _, i := range []int{100000, 10} { - b.Run(fmt.Sprintf("Mutex/%v/%v", j, i), func(b *testing.B) { - b.SetParallelism(i) - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - for y := 0; y < j; y++ { - } - mu.Lock() - d.a++ - d.b = t - mu.Unlock() - } - }) - }) - } - } -} - -type myFooer struct{} - -func (myFooer) Foo() {} - -type fooer interface { - Foo() -} - -func BenchmarkInterfaceTypeAssertion(b *testing.B) { - // Call a separate function to avoid compiler optimizations. - runInterfaceTypeAssertion(b, myFooer{}) -} - -func runInterfaceTypeAssertion(b *testing.B, fer interface{}) { - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, ok := fer.(fooer); ok { - x++ - } - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} - -func BenchmarkStructTypeAssertion(b *testing.B) { - // Call a separate function to avoid compiler optimizations. - runStructTypeAssertion(b, myFooer{}) -} - -func runStructTypeAssertion(b *testing.B, fer interface{}) { - x := 0 - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, ok := fer.(myFooer); ok { - x++ - } - } - b.StopTimer() - if x != b.N { - b.Fatal("error") - } -} diff --git a/vendor/google.golang.org/grpc/benchmark/server/main.go b/vendor/google.golang.org/grpc/benchmark/server/main.go deleted file mode 100644 index ac59ff77..00000000 --- a/vendor/google.golang.org/grpc/benchmark/server/main.go +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "flag" - "math" - "net" - "net/http" - _ "net/http/pprof" - "time" - - "google.golang.org/grpc/benchmark" - "google.golang.org/grpc/grpclog" -) - -var duration = flag.Int("duration", math.MaxInt32, "The duration in seconds to run the benchmark server") - -func main() { - flag.Parse() - go func() { - lis, err := net.Listen("tcp", ":0") - if err != nil { - grpclog.Fatalf("Failed to listen: %v", err) - } - grpclog.Println("Server profiling address: ", lis.Addr().String()) - if err := http.Serve(lis, nil); err != nil { - grpclog.Fatalf("Failed to serve: %v", err) - } - }() - addr, stopper := benchmark.StartServer(benchmark.ServerInfo{Addr: ":0", Type: "protobuf"}) // listen on all interfaces - grpclog.Println("Server Address: ", addr) - <-time.After(time.Duration(*duration) * time.Second) - stopper() -} diff --git a/vendor/google.golang.org/grpc/benchmark/stats/histogram.go b/vendor/google.golang.org/grpc/benchmark/stats/histogram.go deleted file mode 100644 index f038d26e..00000000 --- a/vendor/google.golang.org/grpc/benchmark/stats/histogram.go +++ /dev/null @@ -1,222 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package stats - -import ( - "bytes" - "fmt" - "io" - "log" - "math" - "strconv" - "strings" -) - -// Histogram accumulates values in the form of a histogram with -// exponentially increased bucket sizes. -type Histogram struct { - // Count is the total number of values added to the histogram. - Count int64 - // Sum is the sum of all the values added to the histogram. - Sum int64 - // SumOfSquares is the sum of squares of all values. - SumOfSquares int64 - // Min is the minimum of all the values added to the histogram. - Min int64 - // Max is the maximum of all the values added to the histogram. - Max int64 - // Buckets contains all the buckets of the histogram. - Buckets []HistogramBucket - - opts HistogramOptions - logBaseBucketSize float64 - oneOverLogOnePlusGrowthFactor float64 -} - -// HistogramOptions contains the parameters that define the histogram's buckets. -// The first bucket of the created histogram (with index 0) contains [min, min+n) -// where n = BaseBucketSize, min = MinValue. -// Bucket i (i>=1) contains [min + n * m^(i-1), min + n * m^i), where m = 1+GrowthFactor. -// The type of the values is int64. -type HistogramOptions struct { - // NumBuckets is the number of buckets. - NumBuckets int - // GrowthFactor is the growth factor of the buckets. A value of 0.1 - // indicates that bucket N+1 will be 10% larger than bucket N. - GrowthFactor float64 - // BaseBucketSize is the size of the first bucket. - BaseBucketSize float64 - // MinValue is the lower bound of the first bucket. - MinValue int64 -} - -// HistogramBucket represents one histogram bucket. -type HistogramBucket struct { - // LowBound is the lower bound of the bucket. - LowBound float64 - // Count is the number of values in the bucket. - Count int64 -} - -// NewHistogram returns a pointer to a new Histogram object that was created -// with the provided options. -func NewHistogram(opts HistogramOptions) *Histogram { - if opts.NumBuckets == 0 { - opts.NumBuckets = 32 - } - if opts.BaseBucketSize == 0.0 { - opts.BaseBucketSize = 1.0 - } - h := Histogram{ - Buckets: make([]HistogramBucket, opts.NumBuckets), - Min: math.MaxInt64, - Max: math.MinInt64, - - opts: opts, - logBaseBucketSize: math.Log(opts.BaseBucketSize), - oneOverLogOnePlusGrowthFactor: 1 / math.Log(1+opts.GrowthFactor), - } - m := 1.0 + opts.GrowthFactor - delta := opts.BaseBucketSize - h.Buckets[0].LowBound = float64(opts.MinValue) - for i := 1; i < opts.NumBuckets; i++ { - h.Buckets[i].LowBound = float64(opts.MinValue) + delta - delta = delta * m - } - return &h -} - -// Print writes textual output of the histogram values. -func (h *Histogram) Print(w io.Writer) { - h.PrintWithUnit(w, 1) -} - -// PrintWithUnit writes textual output of the histogram values . -// Data in histogram is divided by a Unit before print. -func (h *Histogram) PrintWithUnit(w io.Writer, unit float64) { - avg := float64(h.Sum) / float64(h.Count) - fmt.Fprintf(w, "Count: %d Min: %5.1f Max: %5.1f Avg: %.2f\n", h.Count, float64(h.Min)/unit, float64(h.Max)/unit, avg/unit) - fmt.Fprintf(w, "%s\n", strings.Repeat("-", 60)) - if h.Count <= 0 { - return - } - - maxBucketDigitLen := len(strconv.FormatFloat(h.Buckets[len(h.Buckets)-1].LowBound, 'f', 6, 64)) - if maxBucketDigitLen < 3 { - // For "inf". - maxBucketDigitLen = 3 - } - maxCountDigitLen := len(strconv.FormatInt(h.Count, 10)) - percentMulti := 100 / float64(h.Count) - - accCount := int64(0) - for i, b := range h.Buckets { - fmt.Fprintf(w, "[%*f, ", maxBucketDigitLen, b.LowBound/unit) - if i+1 < len(h.Buckets) { - fmt.Fprintf(w, "%*f)", maxBucketDigitLen, h.Buckets[i+1].LowBound/unit) - } else { - fmt.Fprintf(w, "%*s)", maxBucketDigitLen, "inf") - } - - accCount += b.Count - fmt.Fprintf(w, " %*d %5.1f%% %5.1f%%", maxCountDigitLen, b.Count, float64(b.Count)*percentMulti, float64(accCount)*percentMulti) - - const barScale = 0.1 - barLength := int(float64(b.Count)*percentMulti*barScale + 0.5) - fmt.Fprintf(w, " %s\n", strings.Repeat("#", barLength)) - } -} - -// String returns the textual output of the histogram values as string. -func (h *Histogram) String() string { - var b bytes.Buffer - h.Print(&b) - return b.String() -} - -// Clear resets all the content of histogram. -func (h *Histogram) Clear() { - h.Count = 0 - h.Sum = 0 - h.SumOfSquares = 0 - h.Min = math.MaxInt64 - h.Max = math.MinInt64 - for i := range h.Buckets { - h.Buckets[i].Count = 0 - } -} - -// Opts returns a copy of the options used to create the Histogram. -func (h *Histogram) Opts() HistogramOptions { - return h.opts -} - -// Add adds a value to the histogram. -func (h *Histogram) Add(value int64) error { - bucket, err := h.findBucket(value) - if err != nil { - return err - } - h.Buckets[bucket].Count++ - h.Count++ - h.Sum += value - h.SumOfSquares += value * value - if value < h.Min { - h.Min = value - } - if value > h.Max { - h.Max = value - } - return nil -} - -func (h *Histogram) findBucket(value int64) (int, error) { - delta := float64(value - h.opts.MinValue) - var b int - if delta >= h.opts.BaseBucketSize { - // b = log_{1+growthFactor} (delta / baseBucketSize) + 1 - // = log(delta / baseBucketSize) / log(1+growthFactor) + 1 - // = (log(delta) - log(baseBucketSize)) * (1 / log(1+growthFactor)) + 1 - b = int((math.Log(delta)-h.logBaseBucketSize)*h.oneOverLogOnePlusGrowthFactor + 1) - } - if b >= len(h.Buckets) { - return 0, fmt.Errorf("no bucket for value: %d", value) - } - return b, nil -} - -// Merge takes another histogram h2, and merges its content into h. -// The two histograms must be created by equivalent HistogramOptions. -func (h *Histogram) Merge(h2 *Histogram) { - if h.opts != h2.opts { - log.Fatalf("failed to merge histograms, created by inequivalent options") - } - h.Count += h2.Count - h.Sum += h2.Sum - h.SumOfSquares += h2.SumOfSquares - if h2.Min < h.Min { - h.Min = h2.Min - } - if h2.Max > h.Max { - h.Max = h2.Max - } - for i, b := range h2.Buckets { - h.Buckets[i].Count += b.Count - } -} diff --git a/vendor/google.golang.org/grpc/benchmark/stats/stats.go b/vendor/google.golang.org/grpc/benchmark/stats/stats.go deleted file mode 100644 index 2f98861c..00000000 --- a/vendor/google.golang.org/grpc/benchmark/stats/stats.go +++ /dev/null @@ -1,291 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package stats - -import ( - "bytes" - "fmt" - "io" - "math" - "sort" - "strconv" - "time" -) - -// Features contains most fields for a benchmark -type Features struct { - NetworkMode string - EnableTrace bool - Latency time.Duration - Kbps int - Mtu int - MaxConcurrentCalls int - ReqSizeBytes int - RespSizeBytes int - EnableCompressor bool -} - -// String returns the textual output of the Features as string. -func (f Features) String() string { - return fmt.Sprintf("traceMode_%t-latency_%s-kbps_%#v-MTU_%#v-maxConcurrentCalls_"+ - "%#v-reqSize_%#vB-respSize_%#vB-Compressor_%t", f.EnableTrace, - f.Latency.String(), f.Kbps, f.Mtu, f.MaxConcurrentCalls, f.ReqSizeBytes, f.RespSizeBytes, f.EnableCompressor) -} - -// PartialPrintString can print certain features with different format. -func PartialPrintString(noneEmptyPos []bool, f Features, shared bool) string { - s := "" - var ( - prefix, suffix, linker string - isNetwork bool - ) - if shared { - suffix = "\n" - linker = ": " - } else { - prefix = "-" - linker = "_" - } - if noneEmptyPos[0] { - s += fmt.Sprintf("%sTrace%s%t%s", prefix, linker, f.EnableCompressor, suffix) - } - if shared && f.NetworkMode != "" { - s += fmt.Sprintf("Network: %s \n", f.NetworkMode) - isNetwork = true - } - if !isNetwork { - if noneEmptyPos[1] { - s += fmt.Sprintf("%slatency%s%s%s", prefix, linker, f.Latency.String(), suffix) - } - if noneEmptyPos[2] { - s += fmt.Sprintf("%skbps%s%#v%s", prefix, linker, f.Kbps, suffix) - } - if noneEmptyPos[3] { - s += fmt.Sprintf("%sMTU%s%#v%s", prefix, linker, f.Mtu, suffix) - } - } - if noneEmptyPos[4] { - s += fmt.Sprintf("%sCallers%s%#v%s", prefix, linker, f.MaxConcurrentCalls, suffix) - } - if noneEmptyPos[5] { - s += fmt.Sprintf("%sreqSize%s%#vB%s", prefix, linker, f.ReqSizeBytes, suffix) - } - if noneEmptyPos[6] { - s += fmt.Sprintf("%srespSize%s%#vB%s", prefix, linker, f.RespSizeBytes, suffix) - } - if noneEmptyPos[7] { - s += fmt.Sprintf("%sCompressor%s%t%s", prefix, linker, f.EnableCompressor, suffix) - } - return s -} - -type percentLatency struct { - Percent int - Value time.Duration -} - -// BenchResults records features and result of a benchmark. -type BenchResults struct { - RunMode string - Features Features - Latency []percentLatency - Operations int - NsPerOp int64 - AllocedBytesPerOp int64 - AllocsPerOp int64 - SharedPosion []bool -} - -// SetBenchmarkResult sets features of benchmark and basic results. -func (stats *Stats) SetBenchmarkResult(mode string, features Features, o int, allocdBytes, allocs int64, sharedPos []bool) { - stats.result.RunMode = mode - stats.result.Features = features - stats.result.Operations = o - stats.result.AllocedBytesPerOp = allocdBytes - stats.result.AllocsPerOp = allocs - stats.result.SharedPosion = sharedPos -} - -// GetBenchmarkResults returns the result of the benchmark including features and result. -func (stats *Stats) GetBenchmarkResults() BenchResults { - return stats.result -} - -// BenchString output latency stats as the format as time + unit. -func (stats *Stats) BenchString() string { - stats.maybeUpdate() - s := stats.result - res := s.RunMode + "-" + s.Features.String() + ": \n" - if len(s.Latency) != 0 { - var statsUnit = s.Latency[0].Value - var timeUnit = fmt.Sprintf("%v", statsUnit)[1:] - for i := 1; i < len(s.Latency)-1; i++ { - res += fmt.Sprintf("%d_Latency: %s %s \t", s.Latency[i].Percent, - strconv.FormatFloat(float64(s.Latency[i].Value)/float64(statsUnit), 'f', 4, 64), timeUnit) - } - res += fmt.Sprintf("Avg latency: %s %s \t", - strconv.FormatFloat(float64(s.Latency[len(s.Latency)-1].Value)/float64(statsUnit), 'f', 4, 64), timeUnit) - } - res += fmt.Sprintf("Count: %v \t", s.Operations) - res += fmt.Sprintf("%v Bytes/op\t", s.AllocedBytesPerOp) - res += fmt.Sprintf("%v Allocs/op\t", s.AllocsPerOp) - - return res -} - -// Stats is a simple helper for gathering additional statistics like histogram -// during benchmarks. This is not thread safe. -type Stats struct { - numBuckets int - unit time.Duration - min, max int64 - histogram *Histogram - - durations durationSlice - dirty bool - - sortLatency bool - result BenchResults -} - -type durationSlice []time.Duration - -// NewStats creates a new Stats instance. If numBuckets is not positive, -// the default value (16) will be used. -func NewStats(numBuckets int) *Stats { - if numBuckets <= 0 { - numBuckets = 16 - } - return &Stats{ - // Use one more bucket for the last unbounded bucket. - numBuckets: numBuckets + 1, - durations: make(durationSlice, 0, 100000), - } -} - -// Add adds an elapsed time per operation to the stats. -func (stats *Stats) Add(d time.Duration) { - stats.durations = append(stats.durations, d) - stats.dirty = true -} - -// Clear resets the stats, removing all values. -func (stats *Stats) Clear() { - stats.durations = stats.durations[:0] - stats.histogram = nil - stats.dirty = false - stats.result = BenchResults{} -} - -//Sort method for durations -func (a durationSlice) Len() int { return len(a) } -func (a durationSlice) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a durationSlice) Less(i, j int) bool { return a[i] < a[j] } -func max(a, b int64) int64 { - if a > b { - return a - } - return b -} - -// maybeUpdate updates internal stat data if there was any newly added -// stats since this was updated. -func (stats *Stats) maybeUpdate() { - if !stats.dirty { - return - } - - if stats.sortLatency { - sort.Sort(stats.durations) - stats.min = int64(stats.durations[0]) - stats.max = int64(stats.durations[len(stats.durations)-1]) - } - - stats.min = math.MaxInt64 - stats.max = 0 - for _, d := range stats.durations { - if stats.min > int64(d) { - stats.min = int64(d) - } - if stats.max < int64(d) { - stats.max = int64(d) - } - } - - // Use the largest unit that can represent the minimum time duration. - stats.unit = time.Nanosecond - for _, u := range []time.Duration{time.Microsecond, time.Millisecond, time.Second} { - if stats.min <= int64(u) { - break - } - stats.unit = u - } - - numBuckets := stats.numBuckets - if n := int(stats.max - stats.min + 1); n < numBuckets { - numBuckets = n - } - stats.histogram = NewHistogram(HistogramOptions{ - NumBuckets: numBuckets, - // max-min(lower bound of last bucket) = (1 + growthFactor)^(numBuckets-2) * baseBucketSize. - GrowthFactor: math.Pow(float64(stats.max-stats.min), 1/float64(numBuckets-2)) - 1, - BaseBucketSize: 1.0, - MinValue: stats.min}) - - for _, d := range stats.durations { - stats.histogram.Add(int64(d)) - } - - stats.dirty = false - - if stats.durations.Len() != 0 { - var percentToObserve = []int{50, 90, 99} - // First data record min unit from the latency result. - stats.result.Latency = append(stats.result.Latency, percentLatency{Percent: -1, Value: stats.unit}) - for _, position := range percentToObserve { - stats.result.Latency = append(stats.result.Latency, percentLatency{Percent: position, Value: stats.durations[max(stats.histogram.Count*int64(position)/100-1, 0)]}) - } - // Last data record the average latency. - avg := float64(stats.histogram.Sum) / float64(stats.histogram.Count) - stats.result.Latency = append(stats.result.Latency, percentLatency{Percent: -1, Value: time.Duration(avg)}) - } -} - -// SortLatency blocks the output -func (stats *Stats) SortLatency() { - stats.sortLatency = true -} - -// Print writes textual output of the Stats. -func (stats *Stats) Print(w io.Writer) { - stats.maybeUpdate() - if stats.histogram == nil { - fmt.Fprint(w, "Histogram (empty)\n") - } else { - fmt.Fprintf(w, "Histogram (unit: %s)\n", fmt.Sprintf("%v", stats.unit)[1:]) - stats.histogram.PrintWithUnit(w, float64(stats.unit)) - } -} - -// String returns the textual output of the Stats as string. -func (stats *Stats) String() string { - var b bytes.Buffer - stats.Print(&b) - return b.String() -} diff --git a/vendor/google.golang.org/grpc/benchmark/stats/util.go b/vendor/google.golang.org/grpc/benchmark/stats/util.go deleted file mode 100644 index f3bb3a36..00000000 --- a/vendor/google.golang.org/grpc/benchmark/stats/util.go +++ /dev/null @@ -1,208 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package stats - -import ( - "bufio" - "bytes" - "fmt" - "os" - "runtime" - "sort" - "strings" - "sync" - "testing" -) - -var ( - curB *testing.B - curBenchName string - curStats map[string]*Stats - - orgStdout *os.File - nextOutPos int - - injectCond *sync.Cond - injectDone chan struct{} -) - -// AddStats adds a new unnamed Stats instance to the current benchmark. You need -// to run benchmarks by calling RunTestMain() to inject the stats to the -// benchmark results. If numBuckets is not positive, the default value (16) will -// be used. Please note that this calls b.ResetTimer() since it may be blocked -// until the previous benchmark stats is printed out. So AddStats() should -// typically be called at the very beginning of each benchmark function. -func AddStats(b *testing.B, numBuckets int) *Stats { - return AddStatsWithName(b, "", numBuckets) -} - -// AddStatsWithName adds a new named Stats instance to the current benchmark. -// With this, you can add multiple stats in a single benchmark. You need -// to run benchmarks by calling RunTestMain() to inject the stats to the -// benchmark results. If numBuckets is not positive, the default value (16) will -// be used. Please note that this calls b.ResetTimer() since it may be blocked -// until the previous benchmark stats is printed out. So AddStatsWithName() -// should typically be called at the very beginning of each benchmark function. -func AddStatsWithName(b *testing.B, name string, numBuckets int) *Stats { - var benchName string - for i := 1; ; i++ { - pc, _, _, ok := runtime.Caller(i) - if !ok { - panic("benchmark function not found") - } - p := strings.Split(runtime.FuncForPC(pc).Name(), ".") - benchName = p[len(p)-1] - if strings.HasPrefix(benchName, "run") { - break - } - } - procs := runtime.GOMAXPROCS(-1) - if procs != 1 { - benchName = fmt.Sprintf("%s-%d", benchName, procs) - } - - stats := NewStats(numBuckets) - - if injectCond != nil { - // We need to wait until the previous benchmark stats is printed out. - injectCond.L.Lock() - for curB != nil && curBenchName != benchName { - injectCond.Wait() - } - - curB = b - curBenchName = benchName - curStats[name] = stats - - injectCond.L.Unlock() - } - - b.ResetTimer() - return stats -} - -// RunTestMain runs the tests with enabling injection of benchmark stats. It -// returns an exit code to pass to os.Exit. -func RunTestMain(m *testing.M) int { - startStatsInjector() - defer stopStatsInjector() - return m.Run() -} - -// startStatsInjector starts stats injection to benchmark results. -func startStatsInjector() { - orgStdout = os.Stdout - r, w, _ := os.Pipe() - os.Stdout = w - nextOutPos = 0 - - resetCurBenchStats() - - injectCond = sync.NewCond(&sync.Mutex{}) - injectDone = make(chan struct{}) - go func() { - defer close(injectDone) - - scanner := bufio.NewScanner(r) - scanner.Split(splitLines) - for scanner.Scan() { - injectStatsIfFinished(scanner.Text()) - } - if err := scanner.Err(); err != nil { - panic(err) - } - }() -} - -// stopStatsInjector stops stats injection and restores os.Stdout. -func stopStatsInjector() { - os.Stdout.Close() - <-injectDone - injectCond = nil - os.Stdout = orgStdout -} - -// splitLines is a split function for a bufio.Scanner that returns each line -// of text, teeing texts to the original stdout even before each line ends. -func splitLines(data []byte, eof bool) (advance int, token []byte, err error) { - if eof && len(data) == 0 { - return 0, nil, nil - } - - if i := bytes.IndexByte(data, '\n'); i >= 0 { - orgStdout.Write(data[nextOutPos : i+1]) - nextOutPos = 0 - return i + 1, data[0:i], nil - } - - orgStdout.Write(data[nextOutPos:]) - nextOutPos = len(data) - - if eof { - // This is a final, non-terminated line. Return it. - return len(data), data, nil - } - - return 0, nil, nil -} - -// injectStatsIfFinished prints out the stats if the current benchmark finishes. -func injectStatsIfFinished(line string) { - injectCond.L.Lock() - defer injectCond.L.Unlock() - // We assume that the benchmark results start with "Benchmark". - if curB == nil || !strings.HasPrefix(line, "Benchmark") { - return - } - - if !curB.Failed() { - // Output all stats in alphabetical order. - names := make([]string, 0, len(curStats)) - for name := range curStats { - names = append(names, name) - } - sort.Strings(names) - for _, name := range names { - stats := curStats[name] - // The output of stats starts with a header like "Histogram (unit: ms)" - // followed by statistical properties and the buckets. Add the stats name - // if it is a named stats and indent them as Go testing outputs. - lines := strings.Split(stats.String(), "\n") - if n := len(lines); n > 0 { - if name != "" { - name = ": " + name - } - fmt.Fprintf(orgStdout, "--- %s%s\n", lines[0], name) - for _, line := range lines[1 : n-1] { - fmt.Fprintf(orgStdout, "\t%s\n", line) - } - } - } - } - - resetCurBenchStats() - injectCond.Signal() -} - -// resetCurBenchStats resets the current benchmark stats. -func resetCurBenchStats() { - curB = nil - curBenchName = "" - curStats = make(map[string]*Stats) -} diff --git a/vendor/google.golang.org/grpc/benchmark/worker/benchmark_client.go b/vendor/google.golang.org/grpc/benchmark/worker/benchmark_client.go deleted file mode 100644 index f2a26503..00000000 --- a/vendor/google.golang.org/grpc/benchmark/worker/benchmark_client.go +++ /dev/null @@ -1,391 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "flag" - "math" - "runtime" - "sync" - "syscall" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/benchmark" - testpb "google.golang.org/grpc/benchmark/grpc_testing" - "google.golang.org/grpc/benchmark/stats" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/credentials" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/status" - "google.golang.org/grpc/testdata" -) - -var caFile = flag.String("ca_file", "", "The file containing the CA root cert file") - -type lockingHistogram struct { - mu sync.Mutex - histogram *stats.Histogram -} - -func (h *lockingHistogram) add(value int64) { - h.mu.Lock() - defer h.mu.Unlock() - h.histogram.Add(value) -} - -// swap sets h.histogram to new, and returns its old value. -func (h *lockingHistogram) swap(new *stats.Histogram) *stats.Histogram { - h.mu.Lock() - defer h.mu.Unlock() - old := h.histogram - h.histogram = new - return old -} - -func (h *lockingHistogram) mergeInto(merged *stats.Histogram) { - h.mu.Lock() - defer h.mu.Unlock() - merged.Merge(h.histogram) -} - -type benchmarkClient struct { - closeConns func() - stop chan bool - lastResetTime time.Time - histogramOptions stats.HistogramOptions - lockingHistograms []lockingHistogram - rusageLastReset *syscall.Rusage -} - -func printClientConfig(config *testpb.ClientConfig) { - // Some config options are ignored: - // - client type: - // will always create sync client - // - async client threads. - // - core list - grpclog.Printf(" * client type: %v (ignored, always creates sync client)", config.ClientType) - grpclog.Printf(" * async client threads: %v (ignored)", config.AsyncClientThreads) - // TODO: use cores specified by CoreList when setting list of cores is supported in go. - grpclog.Printf(" * core list: %v (ignored)", config.CoreList) - - grpclog.Printf(" - security params: %v", config.SecurityParams) - grpclog.Printf(" - core limit: %v", config.CoreLimit) - grpclog.Printf(" - payload config: %v", config.PayloadConfig) - grpclog.Printf(" - rpcs per chann: %v", config.OutstandingRpcsPerChannel) - grpclog.Printf(" - channel number: %v", config.ClientChannels) - grpclog.Printf(" - load params: %v", config.LoadParams) - grpclog.Printf(" - rpc type: %v", config.RpcType) - grpclog.Printf(" - histogram params: %v", config.HistogramParams) - grpclog.Printf(" - server targets: %v", config.ServerTargets) -} - -func setupClientEnv(config *testpb.ClientConfig) { - // Use all cpu cores available on machine by default. - // TODO: Revisit this for the optimal default setup. - if config.CoreLimit > 0 { - runtime.GOMAXPROCS(int(config.CoreLimit)) - } else { - runtime.GOMAXPROCS(runtime.NumCPU()) - } -} - -// createConns creates connections according to given config. -// It returns the connections and corresponding function to close them. -// It returns non-nil error if there is anything wrong. -func createConns(config *testpb.ClientConfig) ([]*grpc.ClientConn, func(), error) { - var opts []grpc.DialOption - - // Sanity check for client type. - switch config.ClientType { - case testpb.ClientType_SYNC_CLIENT: - case testpb.ClientType_ASYNC_CLIENT: - default: - return nil, nil, status.Errorf(codes.InvalidArgument, "unknow client type: %v", config.ClientType) - } - - // Check and set security options. - if config.SecurityParams != nil { - if *caFile == "" { - *caFile = testdata.Path("ca.pem") - } - creds, err := credentials.NewClientTLSFromFile(*caFile, config.SecurityParams.ServerHostOverride) - if err != nil { - return nil, nil, status.Errorf(codes.InvalidArgument, "failed to create TLS credentials %v", err) - } - opts = append(opts, grpc.WithTransportCredentials(creds)) - } else { - opts = append(opts, grpc.WithInsecure()) - } - - // Use byteBufCodec if it is required. - if config.PayloadConfig != nil { - switch config.PayloadConfig.Payload.(type) { - case *testpb.PayloadConfig_BytebufParams: - opts = append(opts, grpc.WithDefaultCallOptions(grpc.CallCustomCodec(byteBufCodec{}))) - case *testpb.PayloadConfig_SimpleParams: - default: - return nil, nil, status.Errorf(codes.InvalidArgument, "unknow payload config: %v", config.PayloadConfig) - } - } - - // Create connections. - connCount := int(config.ClientChannels) - conns := make([]*grpc.ClientConn, connCount, connCount) - for connIndex := 0; connIndex < connCount; connIndex++ { - conns[connIndex] = benchmark.NewClientConn(config.ServerTargets[connIndex%len(config.ServerTargets)], opts...) - } - - return conns, func() { - for _, conn := range conns { - conn.Close() - } - }, nil -} - -func performRPCs(config *testpb.ClientConfig, conns []*grpc.ClientConn, bc *benchmarkClient) error { - // Read payload size and type from config. - var ( - payloadReqSize, payloadRespSize int - payloadType string - ) - if config.PayloadConfig != nil { - switch c := config.PayloadConfig.Payload.(type) { - case *testpb.PayloadConfig_BytebufParams: - payloadReqSize = int(c.BytebufParams.ReqSize) - payloadRespSize = int(c.BytebufParams.RespSize) - payloadType = "bytebuf" - case *testpb.PayloadConfig_SimpleParams: - payloadReqSize = int(c.SimpleParams.ReqSize) - payloadRespSize = int(c.SimpleParams.RespSize) - payloadType = "protobuf" - default: - return status.Errorf(codes.InvalidArgument, "unknow payload config: %v", config.PayloadConfig) - } - } - - // TODO add open loop distribution. - switch config.LoadParams.Load.(type) { - case *testpb.LoadParams_ClosedLoop: - case *testpb.LoadParams_Poisson: - return status.Errorf(codes.Unimplemented, "unsupported load params: %v", config.LoadParams) - default: - return status.Errorf(codes.InvalidArgument, "unknown load params: %v", config.LoadParams) - } - - rpcCountPerConn := int(config.OutstandingRpcsPerChannel) - - switch config.RpcType { - case testpb.RpcType_UNARY: - bc.doCloseLoopUnary(conns, rpcCountPerConn, payloadReqSize, payloadRespSize) - // TODO open loop. - case testpb.RpcType_STREAMING: - bc.doCloseLoopStreaming(conns, rpcCountPerConn, payloadReqSize, payloadRespSize, payloadType) - // TODO open loop. - default: - return status.Errorf(codes.InvalidArgument, "unknown rpc type: %v", config.RpcType) - } - - return nil -} - -func startBenchmarkClient(config *testpb.ClientConfig) (*benchmarkClient, error) { - printClientConfig(config) - - // Set running environment like how many cores to use. - setupClientEnv(config) - - conns, closeConns, err := createConns(config) - if err != nil { - return nil, err - } - - rusage := new(syscall.Rusage) - syscall.Getrusage(syscall.RUSAGE_SELF, rusage) - - rpcCountPerConn := int(config.OutstandingRpcsPerChannel) - bc := &benchmarkClient{ - histogramOptions: stats.HistogramOptions{ - NumBuckets: int(math.Log(config.HistogramParams.MaxPossible)/math.Log(1+config.HistogramParams.Resolution)) + 1, - GrowthFactor: config.HistogramParams.Resolution, - BaseBucketSize: (1 + config.HistogramParams.Resolution), - MinValue: 0, - }, - lockingHistograms: make([]lockingHistogram, rpcCountPerConn*len(conns), rpcCountPerConn*len(conns)), - - stop: make(chan bool), - lastResetTime: time.Now(), - closeConns: closeConns, - rusageLastReset: rusage, - } - - if err = performRPCs(config, conns, bc); err != nil { - // Close all connections if performRPCs failed. - closeConns() - return nil, err - } - - return bc, nil -} - -func (bc *benchmarkClient) doCloseLoopUnary(conns []*grpc.ClientConn, rpcCountPerConn int, reqSize int, respSize int) { - for ic, conn := range conns { - client := testpb.NewBenchmarkServiceClient(conn) - // For each connection, create rpcCountPerConn goroutines to do rpc. - for j := 0; j < rpcCountPerConn; j++ { - // Create histogram for each goroutine. - idx := ic*rpcCountPerConn + j - bc.lockingHistograms[idx].histogram = stats.NewHistogram(bc.histogramOptions) - // Start goroutine on the created mutex and histogram. - go func(idx int) { - // TODO: do warm up if necessary. - // Now relying on worker client to reserve time to do warm up. - // The worker client needs to wait for some time after client is created, - // before starting benchmark. - done := make(chan bool) - for { - go func() { - start := time.Now() - if err := benchmark.DoUnaryCall(client, reqSize, respSize); err != nil { - select { - case <-bc.stop: - case done <- false: - } - return - } - elapse := time.Since(start) - bc.lockingHistograms[idx].add(int64(elapse)) - select { - case <-bc.stop: - case done <- true: - } - }() - select { - case <-bc.stop: - return - case <-done: - } - } - }(idx) - } - } -} - -func (bc *benchmarkClient) doCloseLoopStreaming(conns []*grpc.ClientConn, rpcCountPerConn int, reqSize int, respSize int, payloadType string) { - var doRPC func(testpb.BenchmarkService_StreamingCallClient, int, int) error - if payloadType == "bytebuf" { - doRPC = benchmark.DoByteBufStreamingRoundTrip - } else { - doRPC = benchmark.DoStreamingRoundTrip - } - for ic, conn := range conns { - // For each connection, create rpcCountPerConn goroutines to do rpc. - for j := 0; j < rpcCountPerConn; j++ { - c := testpb.NewBenchmarkServiceClient(conn) - stream, err := c.StreamingCall(context.Background()) - if err != nil { - grpclog.Fatalf("%v.StreamingCall(_) = _, %v", c, err) - } - // Create histogram for each goroutine. - idx := ic*rpcCountPerConn + j - bc.lockingHistograms[idx].histogram = stats.NewHistogram(bc.histogramOptions) - // Start goroutine on the created mutex and histogram. - go func(idx int) { - // TODO: do warm up if necessary. - // Now relying on worker client to reserve time to do warm up. - // The worker client needs to wait for some time after client is created, - // before starting benchmark. - for { - start := time.Now() - if err := doRPC(stream, reqSize, respSize); err != nil { - return - } - elapse := time.Since(start) - bc.lockingHistograms[idx].add(int64(elapse)) - select { - case <-bc.stop: - return - default: - } - } - }(idx) - } - } -} - -// getStats returns the stats for benchmark client. -// It resets lastResetTime and all histograms if argument reset is true. -func (bc *benchmarkClient) getStats(reset bool) *testpb.ClientStats { - var wallTimeElapsed, uTimeElapsed, sTimeElapsed float64 - mergedHistogram := stats.NewHistogram(bc.histogramOptions) - latestRusage := new(syscall.Rusage) - - if reset { - // Merging histogram may take some time. - // Put all histograms aside and merge later. - toMerge := make([]*stats.Histogram, len(bc.lockingHistograms), len(bc.lockingHistograms)) - for i := range bc.lockingHistograms { - toMerge[i] = bc.lockingHistograms[i].swap(stats.NewHistogram(bc.histogramOptions)) - } - - for i := 0; i < len(toMerge); i++ { - mergedHistogram.Merge(toMerge[i]) - } - - wallTimeElapsed = time.Since(bc.lastResetTime).Seconds() - syscall.Getrusage(syscall.RUSAGE_SELF, latestRusage) - uTimeElapsed, sTimeElapsed = cpuTimeDiff(bc.rusageLastReset, latestRusage) - - bc.rusageLastReset = latestRusage - bc.lastResetTime = time.Now() - } else { - // Merge only, not reset. - for i := range bc.lockingHistograms { - bc.lockingHistograms[i].mergeInto(mergedHistogram) - } - - wallTimeElapsed = time.Since(bc.lastResetTime).Seconds() - syscall.Getrusage(syscall.RUSAGE_SELF, latestRusage) - uTimeElapsed, sTimeElapsed = cpuTimeDiff(bc.rusageLastReset, latestRusage) - } - - b := make([]uint32, len(mergedHistogram.Buckets), len(mergedHistogram.Buckets)) - for i, v := range mergedHistogram.Buckets { - b[i] = uint32(v.Count) - } - return &testpb.ClientStats{ - Latencies: &testpb.HistogramData{ - Bucket: b, - MinSeen: float64(mergedHistogram.Min), - MaxSeen: float64(mergedHistogram.Max), - Sum: float64(mergedHistogram.Sum), - SumOfSquares: float64(mergedHistogram.SumOfSquares), - Count: float64(mergedHistogram.Count), - }, - TimeElapsed: wallTimeElapsed, - TimeUser: uTimeElapsed, - TimeSystem: sTimeElapsed, - } -} - -func (bc *benchmarkClient) shutdown() { - close(bc.stop) - bc.closeConns() -} diff --git a/vendor/google.golang.org/grpc/benchmark/worker/benchmark_server.go b/vendor/google.golang.org/grpc/benchmark/worker/benchmark_server.go deleted file mode 100644 index f130efde..00000000 --- a/vendor/google.golang.org/grpc/benchmark/worker/benchmark_server.go +++ /dev/null @@ -1,185 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "flag" - "runtime" - "strconv" - "strings" - "sync" - "syscall" - "time" - - "google.golang.org/grpc" - "google.golang.org/grpc/benchmark" - testpb "google.golang.org/grpc/benchmark/grpc_testing" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/credentials" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/status" - "google.golang.org/grpc/testdata" -) - -var ( - certFile = flag.String("tls_cert_file", "", "The TLS cert file") - keyFile = flag.String("tls_key_file", "", "The TLS key file") -) - -type benchmarkServer struct { - port int - cores int - closeFunc func() - mu sync.RWMutex - lastResetTime time.Time - rusageLastReset *syscall.Rusage -} - -func printServerConfig(config *testpb.ServerConfig) { - // Some config options are ignored: - // - server type: - // will always start sync server - // - async server threads - // - core list - grpclog.Printf(" * server type: %v (ignored, always starts sync server)", config.ServerType) - grpclog.Printf(" * async server threads: %v (ignored)", config.AsyncServerThreads) - // TODO: use cores specified by CoreList when setting list of cores is supported in go. - grpclog.Printf(" * core list: %v (ignored)", config.CoreList) - - grpclog.Printf(" - security params: %v", config.SecurityParams) - grpclog.Printf(" - core limit: %v", config.CoreLimit) - grpclog.Printf(" - port: %v", config.Port) - grpclog.Printf(" - payload config: %v", config.PayloadConfig) -} - -func startBenchmarkServer(config *testpb.ServerConfig, serverPort int) (*benchmarkServer, error) { - printServerConfig(config) - - // Use all cpu cores available on machine by default. - // TODO: Revisit this for the optimal default setup. - numOfCores := runtime.NumCPU() - if config.CoreLimit > 0 { - numOfCores = int(config.CoreLimit) - } - runtime.GOMAXPROCS(numOfCores) - - var opts []grpc.ServerOption - - // Sanity check for server type. - switch config.ServerType { - case testpb.ServerType_SYNC_SERVER: - case testpb.ServerType_ASYNC_SERVER: - case testpb.ServerType_ASYNC_GENERIC_SERVER: - default: - return nil, status.Errorf(codes.InvalidArgument, "unknow server type: %v", config.ServerType) - } - - // Set security options. - if config.SecurityParams != nil { - if *certFile == "" { - *certFile = testdata.Path("server1.pem") - } - if *keyFile == "" { - *keyFile = testdata.Path("server1.key") - } - creds, err := credentials.NewServerTLSFromFile(*certFile, *keyFile) - if err != nil { - grpclog.Fatalf("failed to generate credentials %v", err) - } - opts = append(opts, grpc.Creds(creds)) - } - - // Priority: config.Port > serverPort > default (0). - port := int(config.Port) - if port == 0 { - port = serverPort - } - - // Create different benchmark server according to config. - var ( - addr string - closeFunc func() - err error - ) - if config.PayloadConfig != nil { - switch payload := config.PayloadConfig.Payload.(type) { - case *testpb.PayloadConfig_BytebufParams: - opts = append(opts, grpc.CustomCodec(byteBufCodec{})) - addr, closeFunc = benchmark.StartServer(benchmark.ServerInfo{ - Addr: ":" + strconv.Itoa(port), - Type: "bytebuf", - Metadata: payload.BytebufParams.RespSize, - }, opts...) - case *testpb.PayloadConfig_SimpleParams: - addr, closeFunc = benchmark.StartServer(benchmark.ServerInfo{ - Addr: ":" + strconv.Itoa(port), - Type: "protobuf", - }, opts...) - case *testpb.PayloadConfig_ComplexParams: - return nil, status.Errorf(codes.Unimplemented, "unsupported payload config: %v", config.PayloadConfig) - default: - return nil, status.Errorf(codes.InvalidArgument, "unknow payload config: %v", config.PayloadConfig) - } - } else { - // Start protobuf server if payload config is nil. - addr, closeFunc = benchmark.StartServer(benchmark.ServerInfo{ - Addr: ":" + strconv.Itoa(port), - Type: "protobuf", - }, opts...) - } - - grpclog.Printf("benchmark server listening at %v", addr) - addrSplitted := strings.Split(addr, ":") - p, err := strconv.Atoi(addrSplitted[len(addrSplitted)-1]) - if err != nil { - grpclog.Fatalf("failed to get port number from server address: %v", err) - } - - rusage := new(syscall.Rusage) - syscall.Getrusage(syscall.RUSAGE_SELF, rusage) - - return &benchmarkServer{ - port: p, - cores: numOfCores, - closeFunc: closeFunc, - lastResetTime: time.Now(), - rusageLastReset: rusage, - }, nil -} - -// getStats returns the stats for benchmark server. -// It resets lastResetTime if argument reset is true. -func (bs *benchmarkServer) getStats(reset bool) *testpb.ServerStats { - bs.mu.RLock() - defer bs.mu.RUnlock() - wallTimeElapsed := time.Since(bs.lastResetTime).Seconds() - rusageLatest := new(syscall.Rusage) - syscall.Getrusage(syscall.RUSAGE_SELF, rusageLatest) - uTimeElapsed, sTimeElapsed := cpuTimeDiff(bs.rusageLastReset, rusageLatest) - - if reset { - bs.lastResetTime = time.Now() - bs.rusageLastReset = rusageLatest - } - return &testpb.ServerStats{ - TimeElapsed: wallTimeElapsed, - TimeUser: uTimeElapsed, - TimeSystem: sTimeElapsed, - } -} diff --git a/vendor/google.golang.org/grpc/benchmark/worker/main.go b/vendor/google.golang.org/grpc/benchmark/worker/main.go deleted file mode 100644 index 246d452a..00000000 --- a/vendor/google.golang.org/grpc/benchmark/worker/main.go +++ /dev/null @@ -1,230 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "flag" - "fmt" - "io" - "net" - "net/http" - _ "net/http/pprof" - "runtime" - "strconv" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - testpb "google.golang.org/grpc/benchmark/grpc_testing" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/status" -) - -var ( - driverPort = flag.Int("driver_port", 10000, "port for communication with driver") - serverPort = flag.Int("server_port", 0, "port for benchmark server if not specified by server config message") - pprofPort = flag.Int("pprof_port", -1, "Port for pprof debug server to listen on. Pprof server doesn't start if unset") - blockProfRate = flag.Int("block_prof_rate", 0, "fraction of goroutine blocking events to report in blocking profile") -) - -type byteBufCodec struct { -} - -func (byteBufCodec) Marshal(v interface{}) ([]byte, error) { - b, ok := v.(*[]byte) - if !ok { - return nil, fmt.Errorf("failed to marshal: %v is not type of *[]byte", v) - } - return *b, nil -} - -func (byteBufCodec) Unmarshal(data []byte, v interface{}) error { - b, ok := v.(*[]byte) - if !ok { - return fmt.Errorf("failed to marshal: %v is not type of *[]byte", v) - } - *b = data - return nil -} - -func (byteBufCodec) String() string { - return "bytebuffer" -} - -// workerServer implements WorkerService rpc handlers. -// It can create benchmarkServer or benchmarkClient on demand. -type workerServer struct { - stop chan<- bool - serverPort int -} - -func (s *workerServer) RunServer(stream testpb.WorkerService_RunServerServer) error { - var bs *benchmarkServer - defer func() { - // Close benchmark server when stream ends. - grpclog.Printf("closing benchmark server") - if bs != nil { - bs.closeFunc() - } - }() - for { - in, err := stream.Recv() - if err == io.EOF { - return nil - } - if err != nil { - return err - } - - var out *testpb.ServerStatus - switch argtype := in.Argtype.(type) { - case *testpb.ServerArgs_Setup: - grpclog.Printf("server setup received:") - if bs != nil { - grpclog.Printf("server setup received when server already exists, closing the existing server") - bs.closeFunc() - } - bs, err = startBenchmarkServer(argtype.Setup, s.serverPort) - if err != nil { - return err - } - out = &testpb.ServerStatus{ - Stats: bs.getStats(false), - Port: int32(bs.port), - Cores: int32(bs.cores), - } - - case *testpb.ServerArgs_Mark: - grpclog.Printf("server mark received:") - grpclog.Printf(" - %v", argtype) - if bs == nil { - return status.Error(codes.InvalidArgument, "server does not exist when mark received") - } - out = &testpb.ServerStatus{ - Stats: bs.getStats(argtype.Mark.Reset_), - Port: int32(bs.port), - Cores: int32(bs.cores), - } - } - - if err := stream.Send(out); err != nil { - return err - } - } -} - -func (s *workerServer) RunClient(stream testpb.WorkerService_RunClientServer) error { - var bc *benchmarkClient - defer func() { - // Shut down benchmark client when stream ends. - grpclog.Printf("shuting down benchmark client") - if bc != nil { - bc.shutdown() - } - }() - for { - in, err := stream.Recv() - if err == io.EOF { - return nil - } - if err != nil { - return err - } - - var out *testpb.ClientStatus - switch t := in.Argtype.(type) { - case *testpb.ClientArgs_Setup: - grpclog.Printf("client setup received:") - if bc != nil { - grpclog.Printf("client setup received when client already exists, shuting down the existing client") - bc.shutdown() - } - bc, err = startBenchmarkClient(t.Setup) - if err != nil { - return err - } - out = &testpb.ClientStatus{ - Stats: bc.getStats(false), - } - - case *testpb.ClientArgs_Mark: - grpclog.Printf("client mark received:") - grpclog.Printf(" - %v", t) - if bc == nil { - return status.Error(codes.InvalidArgument, "client does not exist when mark received") - } - out = &testpb.ClientStatus{ - Stats: bc.getStats(t.Mark.Reset_), - } - } - - if err := stream.Send(out); err != nil { - return err - } - } -} - -func (s *workerServer) CoreCount(ctx context.Context, in *testpb.CoreRequest) (*testpb.CoreResponse, error) { - grpclog.Printf("core count: %v", runtime.NumCPU()) - return &testpb.CoreResponse{Cores: int32(runtime.NumCPU())}, nil -} - -func (s *workerServer) QuitWorker(ctx context.Context, in *testpb.Void) (*testpb.Void, error) { - grpclog.Printf("quiting worker") - s.stop <- true - return &testpb.Void{}, nil -} - -func main() { - grpc.EnableTracing = false - - flag.Parse() - lis, err := net.Listen("tcp", ":"+strconv.Itoa(*driverPort)) - if err != nil { - grpclog.Fatalf("failed to listen: %v", err) - } - grpclog.Printf("worker listening at port %v", *driverPort) - - s := grpc.NewServer() - stop := make(chan bool) - testpb.RegisterWorkerServiceServer(s, &workerServer{ - stop: stop, - serverPort: *serverPort, - }) - - go func() { - <-stop - // Wait for 1 second before stopping the server to make sure the return value of QuitWorker is sent to client. - // TODO revise this once server graceful stop is supported in gRPC. - time.Sleep(time.Second) - s.Stop() - }() - - runtime.SetBlockProfileRate(*blockProfRate) - - if *pprofPort >= 0 { - go func() { - grpclog.Println("Starting pprof server on port " + strconv.Itoa(*pprofPort)) - grpclog.Println(http.ListenAndServe("localhost:"+strconv.Itoa(*pprofPort), nil)) - }() - } - - s.Serve(lis) -} diff --git a/vendor/google.golang.org/grpc/benchmark/worker/util.go b/vendor/google.golang.org/grpc/benchmark/worker/util.go deleted file mode 100644 index f26993e6..00000000 --- a/vendor/google.golang.org/grpc/benchmark/worker/util.go +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import "syscall" - -func cpuTimeDiff(first *syscall.Rusage, latest *syscall.Rusage) (float64, float64) { - var ( - utimeDiffs = latest.Utime.Sec - first.Utime.Sec - utimeDiffus = latest.Utime.Usec - first.Utime.Usec - stimeDiffs = latest.Stime.Sec - first.Stime.Sec - stimeDiffus = latest.Stime.Usec - first.Stime.Usec - ) - - uTimeElapsed := float64(utimeDiffs) + float64(utimeDiffus)*1.0e-6 - sTimeElapsed := float64(stimeDiffs) + float64(stimeDiffus)*1.0e-6 - - return uTimeElapsed, sTimeElapsed -} diff --git a/vendor/google.golang.org/grpc/call_test.go b/vendor/google.golang.org/grpc/call_test.go deleted file mode 100644 index b95ade88..00000000 --- a/vendor/google.golang.org/grpc/call_test.go +++ /dev/null @@ -1,292 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "fmt" - "io" - "math" - "net" - "strconv" - "strings" - "sync" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "google.golang.org/grpc/test/leakcheck" - "google.golang.org/grpc/transport" -) - -var ( - expectedRequest = "ping" - expectedResponse = "pong" - weirdError = "format verbs: %v%s" - sizeLargeErr = 1024 * 1024 - canceled = 0 -) - -type testCodec struct { -} - -func (testCodec) Marshal(v interface{}) ([]byte, error) { - return []byte(*(v.(*string))), nil -} - -func (testCodec) Unmarshal(data []byte, v interface{}) error { - *(v.(*string)) = string(data) - return nil -} - -func (testCodec) String() string { - return "test" -} - -type testStreamHandler struct { - port string - t transport.ServerTransport -} - -func (h *testStreamHandler) handleStream(t *testing.T, s *transport.Stream) { - p := &parser{r: s} - for { - pf, req, err := p.recvMsg(math.MaxInt32) - if err == io.EOF { - break - } - if err != nil { - return - } - if pf != compressionNone { - t.Errorf("Received the mistaken message format %d, want %d", pf, compressionNone) - return - } - var v string - codec := testCodec{} - if err := codec.Unmarshal(req, &v); err != nil { - t.Errorf("Failed to unmarshal the received message: %v", err) - return - } - if v == "weird error" { - h.t.WriteStatus(s, status.New(codes.Internal, weirdError)) - return - } - if v == "canceled" { - canceled++ - h.t.WriteStatus(s, status.New(codes.Internal, "")) - return - } - if v == "port" { - h.t.WriteStatus(s, status.New(codes.Internal, h.port)) - return - } - - if v != expectedRequest { - h.t.WriteStatus(s, status.New(codes.Internal, strings.Repeat("A", sizeLargeErr))) - return - } - } - // send a response back to end the stream. - hdr, data, err := encode(testCodec{}, &expectedResponse, nil, nil, nil) - if err != nil { - t.Errorf("Failed to encode the response: %v", err) - return - } - h.t.Write(s, hdr, data, &transport.Options{}) - h.t.WriteStatus(s, status.New(codes.OK, "")) -} - -type server struct { - lis net.Listener - port string - addr string - startedErr chan error // sent nil or an error after server starts - mu sync.Mutex - conns map[transport.ServerTransport]bool -} - -func newTestServer() *server { - return &server{startedErr: make(chan error, 1)} -} - -// start starts server. Other goroutines should block on s.startedErr for further operations. -func (s *server) start(t *testing.T, port int, maxStreams uint32) { - var err error - if port == 0 { - s.lis, err = net.Listen("tcp", "localhost:0") - } else { - s.lis, err = net.Listen("tcp", "localhost:"+strconv.Itoa(port)) - } - if err != nil { - s.startedErr <- fmt.Errorf("failed to listen: %v", err) - return - } - s.addr = s.lis.Addr().String() - _, p, err := net.SplitHostPort(s.addr) - if err != nil { - s.startedErr <- fmt.Errorf("failed to parse listener address: %v", err) - return - } - s.port = p - s.conns = make(map[transport.ServerTransport]bool) - s.startedErr <- nil - for { - conn, err := s.lis.Accept() - if err != nil { - return - } - config := &transport.ServerConfig{ - MaxStreams: maxStreams, - } - st, err := transport.NewServerTransport("http2", conn, config) - if err != nil { - continue - } - s.mu.Lock() - if s.conns == nil { - s.mu.Unlock() - st.Close() - return - } - s.conns[st] = true - s.mu.Unlock() - h := &testStreamHandler{ - port: s.port, - t: st, - } - go st.HandleStreams(func(s *transport.Stream) { - go h.handleStream(t, s) - }, func(ctx context.Context, method string) context.Context { - return ctx - }) - } -} - -func (s *server) wait(t *testing.T, timeout time.Duration) { - select { - case err := <-s.startedErr: - if err != nil { - t.Fatal(err) - } - case <-time.After(timeout): - t.Fatalf("Timed out after %v waiting for server to be ready", timeout) - } -} - -func (s *server) stop() { - s.lis.Close() - s.mu.Lock() - for c := range s.conns { - c.Close() - } - s.conns = nil - s.mu.Unlock() -} - -func setUp(t *testing.T, port int, maxStreams uint32) (*server, *ClientConn) { - server := newTestServer() - go server.start(t, port, maxStreams) - server.wait(t, 2*time.Second) - addr := "localhost:" + server.port - cc, err := Dial(addr, WithBlock(), WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("Failed to create ClientConn: %v", err) - } - return server, cc -} - -func TestInvoke(t *testing.T) { - defer leakcheck.Check(t) - server, cc := setUp(t, 0, math.MaxUint32) - var reply string - if err := Invoke(context.Background(), "/foo/bar", &expectedRequest, &reply, cc); err != nil || reply != expectedResponse { - t.Fatalf("grpc.Invoke(_, _, _, _, _) = %v, want <nil>", err) - } - cc.Close() - server.stop() -} - -func TestInvokeLargeErr(t *testing.T) { - defer leakcheck.Check(t) - server, cc := setUp(t, 0, math.MaxUint32) - var reply string - req := "hello" - err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc) - if _, ok := status.FromError(err); !ok { - t.Fatalf("grpc.Invoke(_, _, _, _, _) receives non rpc error.") - } - if status.Code(err) != codes.Internal || len(errorDesc(err)) != sizeLargeErr { - t.Fatalf("grpc.Invoke(_, _, _, _, _) = %v, want an error of code %d and desc size %d", err, codes.Internal, sizeLargeErr) - } - cc.Close() - server.stop() -} - -// TestInvokeErrorSpecialChars checks that error messages don't get mangled. -func TestInvokeErrorSpecialChars(t *testing.T) { - defer leakcheck.Check(t) - server, cc := setUp(t, 0, math.MaxUint32) - var reply string - req := "weird error" - err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc) - if _, ok := status.FromError(err); !ok { - t.Fatalf("grpc.Invoke(_, _, _, _, _) receives non rpc error.") - } - if got, want := errorDesc(err), weirdError; got != want { - t.Fatalf("grpc.Invoke(_, _, _, _, _) error = %q, want %q", got, want) - } - cc.Close() - server.stop() -} - -// TestInvokeCancel checks that an Invoke with a canceled context is not sent. -func TestInvokeCancel(t *testing.T) { - defer leakcheck.Check(t) - server, cc := setUp(t, 0, math.MaxUint32) - var reply string - req := "canceled" - for i := 0; i < 100; i++ { - ctx, cancel := context.WithCancel(context.Background()) - cancel() - Invoke(ctx, "/foo/bar", &req, &reply, cc) - } - if canceled != 0 { - t.Fatalf("received %d of 100 canceled requests", canceled) - } - cc.Close() - server.stop() -} - -// TestInvokeCancelClosedNonFail checks that a canceled non-failfast RPC -// on a closed client will terminate. -func TestInvokeCancelClosedNonFailFast(t *testing.T) { - defer leakcheck.Check(t) - server, cc := setUp(t, 0, math.MaxUint32) - var reply string - cc.Close() - req := "hello" - ctx, cancel := context.WithCancel(context.Background()) - cancel() - if err := Invoke(ctx, "/foo/bar", &req, &reply, cc, FailFast(false)); err == nil { - t.Fatalf("canceled invoke on closed connection should fail") - } - server.stop() -} diff --git a/vendor/google.golang.org/grpc/clientconn_test.go b/vendor/google.golang.org/grpc/clientconn_test.go deleted file mode 100644 index 4e8e9018..00000000 --- a/vendor/google.golang.org/grpc/clientconn_test.go +++ /dev/null @@ -1,664 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "io" - "math" - "net" - "testing" - "time" - - "golang.org/x/net/context" - "golang.org/x/net/http2" - - "google.golang.org/grpc/connectivity" - "google.golang.org/grpc/credentials" - "google.golang.org/grpc/keepalive" - "google.golang.org/grpc/naming" - "google.golang.org/grpc/resolver" - "google.golang.org/grpc/resolver/manual" - _ "google.golang.org/grpc/resolver/passthrough" - "google.golang.org/grpc/test/leakcheck" - "google.golang.org/grpc/testdata" -) - -func assertState(wantState connectivity.State, cc *ClientConn) (connectivity.State, bool) { - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - var state connectivity.State - for state = cc.GetState(); state != wantState && cc.WaitForStateChange(ctx, state); state = cc.GetState() { - } - return state, state == wantState -} - -func TestDialWithMultipleBackendsNotSendingServerPreface(t *testing.T) { - defer leakcheck.Check(t) - numServers := 2 - servers := make([]net.Listener, numServers) - var err error - for i := 0; i < numServers; i++ { - servers[i], err = net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Error while listening. Err: %v", err) - } - } - dones := make([]chan struct{}, numServers) - for i := 0; i < numServers; i++ { - dones[i] = make(chan struct{}) - } - for i := 0; i < numServers; i++ { - go func(i int) { - defer func() { - close(dones[i]) - }() - conn, err := servers[i].Accept() - if err != nil { - t.Errorf("Error while accepting. Err: %v", err) - return - } - defer conn.Close() - switch i { - case 0: // 1st server accepts the connection and immediately closes it. - case 1: // 2nd server accepts the connection and sends settings frames. - framer := http2.NewFramer(conn, conn) - if err := framer.WriteSettings(http2.Setting{}); err != nil { - t.Errorf("Error while writing settings frame. %v", err) - return - } - conn.SetDeadline(time.Now().Add(time.Second)) - buf := make([]byte, 1024) - for { // Make sure the connection stays healthy. - _, err = conn.Read(buf) - if err == nil { - continue - } - if nerr, ok := err.(net.Error); !ok || !nerr.Timeout() { - t.Errorf("Server expected the conn.Read(_) to timeout instead got error: %v", err) - } - return - } - } - }(i) - } - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - resolvedAddrs := make([]resolver.Address, numServers) - for i := 0; i < numServers; i++ { - resolvedAddrs[i] = resolver.Address{Addr: servers[i].Addr().String()} - } - r.InitialAddrs(resolvedAddrs) - client, err := Dial(r.Scheme()+":///test.server", WithInsecure()) - if err != nil { - t.Errorf("Dial failed. Err: %v", err) - } else { - defer client.Close() - } - time.Sleep(time.Second) // Close the servers after a second for cleanup. - for _, s := range servers { - s.Close() - } - for _, done := range dones { - <-done - } -} - -func TestDialWaitsForServerSettings(t *testing.T) { - defer leakcheck.Check(t) - server, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Error while listening. Err: %v", err) - } - defer server.Close() - done := make(chan struct{}) - sent := make(chan struct{}) - dialDone := make(chan struct{}) - go func() { // Launch the server. - defer func() { - close(done) - }() - conn, err := server.Accept() - if err != nil { - t.Errorf("Error while accepting. Err: %v", err) - return - } - defer conn.Close() - // Sleep so that if the test were to fail it - // will fail more often than not. - time.Sleep(100 * time.Millisecond) - framer := http2.NewFramer(conn, conn) - close(sent) - if err := framer.WriteSettings(http2.Setting{}); err != nil { - t.Errorf("Error while writing settings. Err: %v", err) - return - } - <-dialDone // Close conn only after dial returns. - }() - ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) - defer cancel() - client, err := DialContext(ctx, server.Addr().String(), WithInsecure(), WithWaitForHandshake(), WithBlock()) - close(dialDone) - if err != nil { - cancel() - t.Fatalf("Error while dialing. Err: %v", err) - } - defer client.Close() - select { - case <-sent: - default: - t.Fatalf("Dial returned before server settings were sent") - } - <-done - -} - -func TestCloseConnectionWhenServerPrefaceNotReceived(t *testing.T) { - mctBkp := minConnectTimeout - // Call this only after transportMonitor goroutine has ended. - defer func() { - minConnectTimeout = mctBkp - }() - defer leakcheck.Check(t) - minConnectTimeout = time.Millisecond * 500 - server, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Error while listening. Err: %v", err) - } - defer server.Close() - done := make(chan struct{}) - clientDone := make(chan struct{}) - go func() { // Launch the server. - defer func() { - if done != nil { - close(done) - } - }() - conn1, err := server.Accept() - if err != nil { - t.Errorf("Error while accepting. Err: %v", err) - return - } - defer conn1.Close() - // Don't send server settings and make sure the connection is closed. - time.Sleep(time.Millisecond * 1500) // Since the first backoff is for a second. - conn1.SetDeadline(time.Now().Add(time.Second)) - b := make([]byte, 24) - for { - // Make sure the connection was closed by client. - _, err = conn1.Read(b) - if err == nil { - continue - } - if err != io.EOF { - t.Errorf(" conn1.Read(_) = _, %v, want _, io.EOF", err) - return - } - break - } - - conn2, err := server.Accept() // Accept a reconnection request from client. - if err != nil { - t.Errorf("Error while accepting. Err: %v", err) - return - } - defer conn2.Close() - framer := http2.NewFramer(conn2, conn2) - if err := framer.WriteSettings(http2.Setting{}); err != nil { - t.Errorf("Error while writing settings. Err: %v", err) - return - } - time.Sleep(time.Millisecond * 1500) // Since the first backoff is for a second. - conn2.SetDeadline(time.Now().Add(time.Millisecond * 500)) - for { - // Make sure the connection stays open and is closed - // only by connection timeout. - _, err = conn2.Read(b) - if err == nil { - continue - } - if nerr, ok := err.(net.Error); ok && nerr.Timeout() { - return - } - t.Errorf("Unexpected error while reading. Err: %v, want timeout error", err) - break - } - close(done) - done = nil - <-clientDone - - }() - client, err := Dial(server.Addr().String(), WithInsecure()) - if err != nil { - t.Fatalf("Error while dialing. Err: %v", err) - } - <-done - // TODO: The code from BEGIN to END should be delete once issue - // https://github.com/grpc/grpc-go/issues/1750 is fixed. - // BEGIN - // Set underlying addrConns state to Shutdown so that no reconnect - // attempts take place and thereby resetting minConnectTimeout is - // race free. - client.mu.Lock() - addrConns := client.conns - client.mu.Unlock() - for ac := range addrConns { - ac.mu.Lock() - ac.state = connectivity.Shutdown - ac.mu.Unlock() - } - // END - client.Close() - close(clientDone) -} - -func TestBackoffWhenNoServerPrefaceReceived(t *testing.T) { - defer leakcheck.Check(t) - server, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Error while listening. Err: %v", err) - } - defer server.Close() - done := make(chan struct{}) - go func() { // Launch the server. - defer func() { - close(done) - }() - conn, err := server.Accept() // Accept the connection only to close it immediately. - if err != nil { - t.Errorf("Error while accepting. Err: %v", err) - return - } - prevAt := time.Now() - conn.Close() - var prevDuration time.Duration - // Make sure the retry attempts are backed off properly. - for i := 0; i < 3; i++ { - conn, err := server.Accept() - if err != nil { - t.Errorf("Error while accepting. Err: %v", err) - return - } - meow := time.Now() - conn.Close() - dr := meow.Sub(prevAt) - if dr <= prevDuration { - t.Errorf("Client backoff did not increase with retries. Previous duration: %v, current duration: %v", prevDuration, dr) - return - } - prevDuration = dr - prevAt = meow - } - }() - client, err := Dial(server.Addr().String(), WithInsecure()) - if err != nil { - t.Fatalf("Error while dialing. Err: %v", err) - } - defer client.Close() - <-done - -} - -func TestConnectivityStates(t *testing.T) { - defer leakcheck.Check(t) - servers, resolver, cleanup := startServers(t, 2, math.MaxUint32) - defer cleanup() - cc, err := Dial("passthrough:///foo.bar.com", WithBalancer(RoundRobin(resolver)), WithInsecure()) - if err != nil { - t.Fatalf("Dial(\"foo.bar.com\", WithBalancer(_)) = _, %v, want _ <nil>", err) - } - defer cc.Close() - wantState := connectivity.Ready - if state, ok := assertState(wantState, cc); !ok { - t.Fatalf("asserState(%s) = %s, false, want %s, true", wantState, state, wantState) - } - // Send an update to delete the server connection (tearDown addrConn). - update := []*naming.Update{ - { - Op: naming.Delete, - Addr: "localhost:" + servers[0].port, - }, - } - resolver.w.inject(update) - wantState = connectivity.TransientFailure - if state, ok := assertState(wantState, cc); !ok { - t.Fatalf("asserState(%s) = %s, false, want %s, true", wantState, state, wantState) - } - update[0] = &naming.Update{ - Op: naming.Add, - Addr: "localhost:" + servers[1].port, - } - resolver.w.inject(update) - wantState = connectivity.Ready - if state, ok := assertState(wantState, cc); !ok { - t.Fatalf("asserState(%s) = %s, false, want %s, true", wantState, state, wantState) - } - -} - -func TestDialTimeout(t *testing.T) { - defer leakcheck.Check(t) - conn, err := Dial("passthrough:///Non-Existent.Server:80", WithTimeout(time.Millisecond), WithBlock(), WithInsecure()) - if err == nil { - conn.Close() - } - if err != context.DeadlineExceeded { - t.Fatalf("Dial(_, _) = %v, %v, want %v", conn, err, context.DeadlineExceeded) - } -} - -func TestTLSDialTimeout(t *testing.T) { - defer leakcheck.Check(t) - creds, err := credentials.NewClientTLSFromFile(testdata.Path("ca.pem"), "x.test.youtube.com") - if err != nil { - t.Fatalf("Failed to create credentials %v", err) - } - conn, err := Dial("passthrough:///Non-Existent.Server:80", WithTransportCredentials(creds), WithTimeout(time.Millisecond), WithBlock()) - if err == nil { - conn.Close() - } - if err != context.DeadlineExceeded { - t.Fatalf("Dial(_, _) = %v, %v, want %v", conn, err, context.DeadlineExceeded) - } -} - -func TestDefaultAuthority(t *testing.T) { - defer leakcheck.Check(t) - target := "Non-Existent.Server:8080" - conn, err := Dial(target, WithInsecure()) - if err != nil { - t.Fatalf("Dial(_, _) = _, %v, want _, <nil>", err) - } - defer conn.Close() - if conn.authority != target { - t.Fatalf("%v.authority = %v, want %v", conn, conn.authority, target) - } -} - -func TestTLSServerNameOverwrite(t *testing.T) { - defer leakcheck.Check(t) - overwriteServerName := "over.write.server.name" - creds, err := credentials.NewClientTLSFromFile(testdata.Path("ca.pem"), overwriteServerName) - if err != nil { - t.Fatalf("Failed to create credentials %v", err) - } - conn, err := Dial("passthrough:///Non-Existent.Server:80", WithTransportCredentials(creds)) - if err != nil { - t.Fatalf("Dial(_, _) = _, %v, want _, <nil>", err) - } - defer conn.Close() - if conn.authority != overwriteServerName { - t.Fatalf("%v.authority = %v, want %v", conn, conn.authority, overwriteServerName) - } -} - -func TestWithAuthority(t *testing.T) { - defer leakcheck.Check(t) - overwriteServerName := "over.write.server.name" - conn, err := Dial("passthrough:///Non-Existent.Server:80", WithInsecure(), WithAuthority(overwriteServerName)) - if err != nil { - t.Fatalf("Dial(_, _) = _, %v, want _, <nil>", err) - } - defer conn.Close() - if conn.authority != overwriteServerName { - t.Fatalf("%v.authority = %v, want %v", conn, conn.authority, overwriteServerName) - } -} - -func TestWithAuthorityAndTLS(t *testing.T) { - defer leakcheck.Check(t) - overwriteServerName := "over.write.server.name" - creds, err := credentials.NewClientTLSFromFile(testdata.Path("ca.pem"), overwriteServerName) - if err != nil { - t.Fatalf("Failed to create credentials %v", err) - } - conn, err := Dial("passthrough:///Non-Existent.Server:80", WithTransportCredentials(creds), WithAuthority("no.effect.authority")) - if err != nil { - t.Fatalf("Dial(_, _) = _, %v, want _, <nil>", err) - } - defer conn.Close() - if conn.authority != overwriteServerName { - t.Fatalf("%v.authority = %v, want %v", conn, conn.authority, overwriteServerName) - } -} - -func TestDialContextCancel(t *testing.T) { - defer leakcheck.Check(t) - ctx, cancel := context.WithCancel(context.Background()) - cancel() - if _, err := DialContext(ctx, "Non-Existent.Server:80", WithBlock(), WithInsecure()); err != context.Canceled { - t.Fatalf("DialContext(%v, _) = _, %v, want _, %v", ctx, err, context.Canceled) - } -} - -// blockingBalancer mimics the behavior of balancers whose initialization takes a long time. -// In this test, reading from blockingBalancer.Notify() blocks forever. -type blockingBalancer struct { - ch chan []Address -} - -func newBlockingBalancer() Balancer { - return &blockingBalancer{ch: make(chan []Address)} -} -func (b *blockingBalancer) Start(target string, config BalancerConfig) error { - return nil -} -func (b *blockingBalancer) Up(addr Address) func(error) { - return nil -} -func (b *blockingBalancer) Get(ctx context.Context, opts BalancerGetOptions) (addr Address, put func(), err error) { - return Address{}, nil, nil -} -func (b *blockingBalancer) Notify() <-chan []Address { - return b.ch -} -func (b *blockingBalancer) Close() error { - close(b.ch) - return nil -} - -func TestDialWithBlockingBalancer(t *testing.T) { - defer leakcheck.Check(t) - ctx, cancel := context.WithCancel(context.Background()) - dialDone := make(chan struct{}) - go func() { - DialContext(ctx, "Non-Existent.Server:80", WithBlock(), WithInsecure(), WithBalancer(newBlockingBalancer())) - close(dialDone) - }() - cancel() - <-dialDone -} - -// securePerRPCCredentials always requires transport security. -type securePerRPCCredentials struct{} - -func (c securePerRPCCredentials) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { - return nil, nil -} - -func (c securePerRPCCredentials) RequireTransportSecurity() bool { - return true -} - -func TestCredentialsMisuse(t *testing.T) { - defer leakcheck.Check(t) - tlsCreds, err := credentials.NewClientTLSFromFile(testdata.Path("ca.pem"), "x.test.youtube.com") - if err != nil { - t.Fatalf("Failed to create authenticator %v", err) - } - // Two conflicting credential configurations - if _, err := Dial("passthrough:///Non-Existent.Server:80", WithTransportCredentials(tlsCreds), WithBlock(), WithInsecure()); err != errCredentialsConflict { - t.Fatalf("Dial(_, _) = _, %v, want _, %v", err, errCredentialsConflict) - } - // security info on insecure connection - if _, err := Dial("passthrough:///Non-Existent.Server:80", WithPerRPCCredentials(securePerRPCCredentials{}), WithBlock(), WithInsecure()); err != errTransportCredentialsMissing { - t.Fatalf("Dial(_, _) = _, %v, want _, %v", err, errTransportCredentialsMissing) - } -} - -func TestWithBackoffConfigDefault(t *testing.T) { - defer leakcheck.Check(t) - testBackoffConfigSet(t, &DefaultBackoffConfig) -} - -func TestWithBackoffConfig(t *testing.T) { - defer leakcheck.Check(t) - b := BackoffConfig{MaxDelay: DefaultBackoffConfig.MaxDelay / 2} - expected := b - setDefaults(&expected) // defaults should be set - testBackoffConfigSet(t, &expected, WithBackoffConfig(b)) -} - -func TestWithBackoffMaxDelay(t *testing.T) { - defer leakcheck.Check(t) - md := DefaultBackoffConfig.MaxDelay / 2 - expected := BackoffConfig{MaxDelay: md} - setDefaults(&expected) - testBackoffConfigSet(t, &expected, WithBackoffMaxDelay(md)) -} - -func testBackoffConfigSet(t *testing.T, expected *BackoffConfig, opts ...DialOption) { - opts = append(opts, WithInsecure()) - conn, err := Dial("passthrough:///foo:80", opts...) - if err != nil { - t.Fatalf("unexpected error dialing connection: %v", err) - } - defer conn.Close() - - if conn.dopts.bs == nil { - t.Fatalf("backoff config not set") - } - - actual, ok := conn.dopts.bs.(BackoffConfig) - if !ok { - t.Fatalf("unexpected type of backoff config: %#v", conn.dopts.bs) - } - - if actual != *expected { - t.Fatalf("unexpected backoff config on connection: %v, want %v", actual, expected) - } -} - -// emptyBalancer returns an empty set of servers. -type emptyBalancer struct { - ch chan []Address -} - -func newEmptyBalancer() Balancer { - return &emptyBalancer{ch: make(chan []Address, 1)} -} -func (b *emptyBalancer) Start(_ string, _ BalancerConfig) error { - b.ch <- nil - return nil -} -func (b *emptyBalancer) Up(_ Address) func(error) { - return nil -} -func (b *emptyBalancer) Get(_ context.Context, _ BalancerGetOptions) (Address, func(), error) { - return Address{}, nil, nil -} -func (b *emptyBalancer) Notify() <-chan []Address { - return b.ch -} -func (b *emptyBalancer) Close() error { - close(b.ch) - return nil -} - -func TestNonblockingDialWithEmptyBalancer(t *testing.T) { - defer leakcheck.Check(t) - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - dialDone := make(chan error) - go func() { - dialDone <- func() error { - conn, err := DialContext(ctx, "Non-Existent.Server:80", WithInsecure(), WithBalancer(newEmptyBalancer())) - if err != nil { - return err - } - return conn.Close() - }() - }() - if err := <-dialDone; err != nil { - t.Fatalf("unexpected error dialing connection: %s", err) - } -} - -func TestResolverServiceConfigBeforeAddressNotPanic(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure()) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - - // SwitchBalancer before NewAddress. There was no balancer created, this - // makes sure we don't call close on nil balancerWrapper. - r.NewServiceConfig(`{"loadBalancingPolicy": "round_robin"}`) // This should not panic. - - time.Sleep(time.Second) // Sleep to make sure the service config is handled by ClientConn. -} - -func TestResolverEmptyUpdateNotPanic(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure()) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - - // This make sure we don't create addrConn with empty address list. - r.NewAddress([]resolver.Address{}) // This should not panic. - - time.Sleep(time.Second) // Sleep to make sure the service config is handled by ClientConn. -} - -func TestClientUpdatesParamsAfterGoAway(t *testing.T) { - defer leakcheck.Check(t) - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen. Err: %v", err) - } - defer lis.Close() - addr := lis.Addr().String() - s := NewServer() - go s.Serve(lis) - defer s.Stop() - cc, err := Dial(addr, WithBlock(), WithInsecure(), WithKeepaliveParams(keepalive.ClientParameters{ - Time: 50 * time.Millisecond, - Timeout: 100 * time.Millisecond, - PermitWithoutStream: true, - })) - if err != nil { - t.Fatalf("Dial(%s, _) = _, %v, want _, <nil>", addr, err) - } - defer cc.Close() - time.Sleep(1 * time.Second) - cc.mu.RLock() - defer cc.mu.RUnlock() - v := cc.mkp.Time - if v < 100*time.Millisecond { - t.Fatalf("cc.dopts.copts.Keepalive.Time = %v , want 100ms", v) - } -} diff --git a/vendor/google.golang.org/grpc/codec_test.go b/vendor/google.golang.org/grpc/codec_test.go deleted file mode 100644 index 3fda708e..00000000 --- a/vendor/google.golang.org/grpc/codec_test.go +++ /dev/null @@ -1,32 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "testing" - - "google.golang.org/grpc/encoding" - "google.golang.org/grpc/encoding/proto" -) - -func TestGetCodecForProtoIsNotNil(t *testing.T) { - if encoding.GetCodec(proto.Name) == nil { - t.Fatalf("encoding.GetCodec(%q) must not be nil by default", proto.Name) - } -} diff --git a/vendor/google.golang.org/grpc/codes/codes_test.go b/vendor/google.golang.org/grpc/codes/codes_test.go deleted file mode 100644 index 1e3b9918..00000000 --- a/vendor/google.golang.org/grpc/codes/codes_test.go +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package codes - -import ( - "encoding/json" - "reflect" - "testing" - - cpb "google.golang.org/genproto/googleapis/rpc/code" -) - -func TestUnmarshalJSON(t *testing.T) { - for s, v := range cpb.Code_value { - want := Code(v) - var got Code - if err := got.UnmarshalJSON([]byte(`"` + s + `"`)); err != nil || got != want { - t.Errorf("got.UnmarshalJSON(%q) = %v; want <nil>. got=%v; want %v", s, err, got, want) - } - } -} - -func TestJSONUnmarshal(t *testing.T) { - var got []Code - want := []Code{OK, NotFound, Internal, Canceled} - in := `["OK", "NOT_FOUND", "INTERNAL", "CANCELLED"]` - err := json.Unmarshal([]byte(in), &got) - if err != nil || !reflect.DeepEqual(got, want) { - t.Fatalf("json.Unmarshal(%q, &got) = %v; want <nil>. got=%v; want %v", in, err, got, want) - } -} - -func TestUnmarshalJSON_NilReceiver(t *testing.T) { - var got *Code - in := OK.String() - if err := got.UnmarshalJSON([]byte(in)); err == nil { - t.Errorf("got.UnmarshalJSON(%q) = nil; want <non-nil>. got=%v", in, got) - } -} - -func TestUnmarshalJSON_UnknownInput(t *testing.T) { - var got Code - for _, in := range [][]byte{[]byte(""), []byte("xxx"), []byte("Code(17)"), nil} { - if err := got.UnmarshalJSON([]byte(in)); err == nil { - t.Errorf("got.UnmarshalJSON(%q) = nil; want <non-nil>. got=%v", in, got) - } - } -} diff --git a/vendor/google.golang.org/grpc/credentials/credentials_test.go b/vendor/google.golang.org/grpc/credentials/credentials_test.go deleted file mode 100644 index 9b13db51..00000000 --- a/vendor/google.golang.org/grpc/credentials/credentials_test.go +++ /dev/null @@ -1,206 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package credentials - -import ( - "crypto/tls" - "net" - "testing" - - "golang.org/x/net/context" - "google.golang.org/grpc/testdata" -) - -func TestTLSOverrideServerName(t *testing.T) { - expectedServerName := "server.name" - c := NewTLS(nil) - c.OverrideServerName(expectedServerName) - if c.Info().ServerName != expectedServerName { - t.Fatalf("c.Info().ServerName = %v, want %v", c.Info().ServerName, expectedServerName) - } -} - -func TestTLSClone(t *testing.T) { - expectedServerName := "server.name" - c := NewTLS(nil) - c.OverrideServerName(expectedServerName) - cc := c.Clone() - if cc.Info().ServerName != expectedServerName { - t.Fatalf("cc.Info().ServerName = %v, want %v", cc.Info().ServerName, expectedServerName) - } - cc.OverrideServerName("") - if c.Info().ServerName != expectedServerName { - t.Fatalf("Change in clone should not affect the original, c.Info().ServerName = %v, want %v", c.Info().ServerName, expectedServerName) - } - -} - -type serverHandshake func(net.Conn) (AuthInfo, error) - -func TestClientHandshakeReturnsAuthInfo(t *testing.T) { - done := make(chan AuthInfo, 1) - lis := launchServer(t, tlsServerHandshake, done) - defer lis.Close() - lisAddr := lis.Addr().String() - clientAuthInfo := clientHandle(t, gRPCClientHandshake, lisAddr) - // wait until server sends serverAuthInfo or fails. - serverAuthInfo, ok := <-done - if !ok { - t.Fatalf("Error at server-side") - } - if !compare(clientAuthInfo, serverAuthInfo) { - t.Fatalf("c.ClientHandshake(_, %v, _) = %v, want %v.", lisAddr, clientAuthInfo, serverAuthInfo) - } -} - -func TestServerHandshakeReturnsAuthInfo(t *testing.T) { - done := make(chan AuthInfo, 1) - lis := launchServer(t, gRPCServerHandshake, done) - defer lis.Close() - clientAuthInfo := clientHandle(t, tlsClientHandshake, lis.Addr().String()) - // wait until server sends serverAuthInfo or fails. - serverAuthInfo, ok := <-done - if !ok { - t.Fatalf("Error at server-side") - } - if !compare(clientAuthInfo, serverAuthInfo) { - t.Fatalf("ServerHandshake(_) = %v, want %v.", serverAuthInfo, clientAuthInfo) - } -} - -func TestServerAndClientHandshake(t *testing.T) { - done := make(chan AuthInfo, 1) - lis := launchServer(t, gRPCServerHandshake, done) - defer lis.Close() - clientAuthInfo := clientHandle(t, gRPCClientHandshake, lis.Addr().String()) - // wait until server sends serverAuthInfo or fails. - serverAuthInfo, ok := <-done - if !ok { - t.Fatalf("Error at server-side") - } - if !compare(clientAuthInfo, serverAuthInfo) { - t.Fatalf("AuthInfo returned by server: %v and client: %v aren't same", serverAuthInfo, clientAuthInfo) - } -} - -func compare(a1, a2 AuthInfo) bool { - if a1.AuthType() != a2.AuthType() { - return false - } - switch a1.AuthType() { - case "tls": - state1 := a1.(TLSInfo).State - state2 := a2.(TLSInfo).State - if state1.Version == state2.Version && - state1.HandshakeComplete == state2.HandshakeComplete && - state1.CipherSuite == state2.CipherSuite && - state1.NegotiatedProtocol == state2.NegotiatedProtocol { - return true - } - return false - default: - return false - } -} - -func launchServer(t *testing.T, hs serverHandshake, done chan AuthInfo) net.Listener { - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen: %v", err) - } - go serverHandle(t, hs, done, lis) - return lis -} - -// Is run in a separate goroutine. -func serverHandle(t *testing.T, hs serverHandshake, done chan AuthInfo, lis net.Listener) { - serverRawConn, err := lis.Accept() - if err != nil { - t.Errorf("Server failed to accept connection: %v", err) - close(done) - return - } - serverAuthInfo, err := hs(serverRawConn) - if err != nil { - t.Errorf("Server failed while handshake. Error: %v", err) - serverRawConn.Close() - close(done) - return - } - done <- serverAuthInfo -} - -func clientHandle(t *testing.T, hs func(net.Conn, string) (AuthInfo, error), lisAddr string) AuthInfo { - conn, err := net.Dial("tcp", lisAddr) - if err != nil { - t.Fatalf("Client failed to connect to %s. Error: %v", lisAddr, err) - } - defer conn.Close() - clientAuthInfo, err := hs(conn, lisAddr) - if err != nil { - t.Fatalf("Error on client while handshake. Error: %v", err) - } - return clientAuthInfo -} - -// Server handshake implementation in gRPC. -func gRPCServerHandshake(conn net.Conn) (AuthInfo, error) { - serverTLS, err := NewServerTLSFromFile(testdata.Path("server1.pem"), testdata.Path("server1.key")) - if err != nil { - return nil, err - } - _, serverAuthInfo, err := serverTLS.ServerHandshake(conn) - if err != nil { - return nil, err - } - return serverAuthInfo, nil -} - -// Client handshake implementation in gRPC. -func gRPCClientHandshake(conn net.Conn, lisAddr string) (AuthInfo, error) { - clientTLS := NewTLS(&tls.Config{InsecureSkipVerify: true}) - _, authInfo, err := clientTLS.ClientHandshake(context.Background(), lisAddr, conn) - if err != nil { - return nil, err - } - return authInfo, nil -} - -func tlsServerHandshake(conn net.Conn) (AuthInfo, error) { - cert, err := tls.LoadX509KeyPair(testdata.Path("server1.pem"), testdata.Path("server1.key")) - if err != nil { - return nil, err - } - serverTLSConfig := &tls.Config{Certificates: []tls.Certificate{cert}} - serverConn := tls.Server(conn, serverTLSConfig) - err = serverConn.Handshake() - if err != nil { - return nil, err - } - return TLSInfo{State: serverConn.ConnectionState()}, nil -} - -func tlsClientHandshake(conn net.Conn, _ string) (AuthInfo, error) { - clientTLSConfig := &tls.Config{InsecureSkipVerify: true} - clientConn := tls.Client(conn, clientTLSConfig) - if err := clientConn.Handshake(); err != nil { - return nil, err - } - return TLSInfo{State: clientConn.ConnectionState()}, nil -} diff --git a/vendor/google.golang.org/grpc/credentials/oauth/oauth.go b/vendor/google.golang.org/grpc/credentials/oauth/oauth.go deleted file mode 100644 index f6d597a1..00000000 --- a/vendor/google.golang.org/grpc/credentials/oauth/oauth.go +++ /dev/null @@ -1,173 +0,0 @@ -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package oauth implements gRPC credentials using OAuth. -package oauth - -import ( - "fmt" - "io/ioutil" - "sync" - - "golang.org/x/net/context" - "golang.org/x/oauth2" - "golang.org/x/oauth2/google" - "golang.org/x/oauth2/jwt" - "google.golang.org/grpc/credentials" -) - -// TokenSource supplies PerRPCCredentials from an oauth2.TokenSource. -type TokenSource struct { - oauth2.TokenSource -} - -// GetRequestMetadata gets the request metadata as a map from a TokenSource. -func (ts TokenSource) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { - token, err := ts.Token() - if err != nil { - return nil, err - } - return map[string]string{ - "authorization": token.Type() + " " + token.AccessToken, - }, nil -} - -// RequireTransportSecurity indicates whether the credentials requires transport security. -func (ts TokenSource) RequireTransportSecurity() bool { - return true -} - -type jwtAccess struct { - jsonKey []byte -} - -// NewJWTAccessFromFile creates PerRPCCredentials from the given keyFile. -func NewJWTAccessFromFile(keyFile string) (credentials.PerRPCCredentials, error) { - jsonKey, err := ioutil.ReadFile(keyFile) - if err != nil { - return nil, fmt.Errorf("credentials: failed to read the service account key file: %v", err) - } - return NewJWTAccessFromKey(jsonKey) -} - -// NewJWTAccessFromKey creates PerRPCCredentials from the given jsonKey. -func NewJWTAccessFromKey(jsonKey []byte) (credentials.PerRPCCredentials, error) { - return jwtAccess{jsonKey}, nil -} - -func (j jwtAccess) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { - ts, err := google.JWTAccessTokenSourceFromJSON(j.jsonKey, uri[0]) - if err != nil { - return nil, err - } - token, err := ts.Token() - if err != nil { - return nil, err - } - return map[string]string{ - "authorization": token.Type() + " " + token.AccessToken, - }, nil -} - -func (j jwtAccess) RequireTransportSecurity() bool { - return true -} - -// oauthAccess supplies PerRPCCredentials from a given token. -type oauthAccess struct { - token oauth2.Token -} - -// NewOauthAccess constructs the PerRPCCredentials using a given token. -func NewOauthAccess(token *oauth2.Token) credentials.PerRPCCredentials { - return oauthAccess{token: *token} -} - -func (oa oauthAccess) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { - return map[string]string{ - "authorization": oa.token.Type() + " " + oa.token.AccessToken, - }, nil -} - -func (oa oauthAccess) RequireTransportSecurity() bool { - return true -} - -// NewComputeEngine constructs the PerRPCCredentials that fetches access tokens from -// Google Compute Engine (GCE)'s metadata server. It is only valid to use this -// if your program is running on a GCE instance. -// TODO(dsymonds): Deprecate and remove this. -func NewComputeEngine() credentials.PerRPCCredentials { - return TokenSource{google.ComputeTokenSource("")} -} - -// serviceAccount represents PerRPCCredentials via JWT signing key. -type serviceAccount struct { - mu sync.Mutex - config *jwt.Config - t *oauth2.Token -} - -func (s *serviceAccount) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { - s.mu.Lock() - defer s.mu.Unlock() - if !s.t.Valid() { - var err error - s.t, err = s.config.TokenSource(ctx).Token() - if err != nil { - return nil, err - } - } - return map[string]string{ - "authorization": s.t.Type() + " " + s.t.AccessToken, - }, nil -} - -func (s *serviceAccount) RequireTransportSecurity() bool { - return true -} - -// NewServiceAccountFromKey constructs the PerRPCCredentials using the JSON key slice -// from a Google Developers service account. -func NewServiceAccountFromKey(jsonKey []byte, scope ...string) (credentials.PerRPCCredentials, error) { - config, err := google.JWTConfigFromJSON(jsonKey, scope...) - if err != nil { - return nil, err - } - return &serviceAccount{config: config}, nil -} - -// NewServiceAccountFromFile constructs the PerRPCCredentials using the JSON key file -// of a Google Developers service account. -func NewServiceAccountFromFile(keyFile string, scope ...string) (credentials.PerRPCCredentials, error) { - jsonKey, err := ioutil.ReadFile(keyFile) - if err != nil { - return nil, fmt.Errorf("credentials: failed to read the service account key file: %v", err) - } - return NewServiceAccountFromKey(jsonKey, scope...) -} - -// NewApplicationDefault returns "Application Default Credentials". For more -// detail, see https://developers.google.com/accounts/docs/application-default-credentials. -func NewApplicationDefault(ctx context.Context, scope ...string) (credentials.PerRPCCredentials, error) { - t, err := google.DefaultTokenSource(ctx, scope...) - if err != nil { - return nil, err - } - return TokenSource{t}, nil -} diff --git a/vendor/google.golang.org/grpc/encoding/gzip/gzip.go b/vendor/google.golang.org/grpc/encoding/gzip/gzip.go deleted file mode 100644 index c991a662..00000000 --- a/vendor/google.golang.org/grpc/encoding/gzip/gzip.go +++ /dev/null @@ -1,96 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package gzip implements and registers the gzip compressor -// during the initialization. -// This package is EXPERIMENTAL. -package gzip - -import ( - "compress/gzip" - "io" - "io/ioutil" - "sync" - - "google.golang.org/grpc/encoding" -) - -// Name is the name registered for the gzip compressor. -const Name = "gzip" - -func init() { - c := &compressor{} - c.poolCompressor.New = func() interface{} { - return &writer{Writer: gzip.NewWriter(ioutil.Discard), pool: &c.poolCompressor} - } - encoding.RegisterCompressor(c) -} - -type writer struct { - *gzip.Writer - pool *sync.Pool -} - -func (c *compressor) Compress(w io.Writer) (io.WriteCloser, error) { - z := c.poolCompressor.Get().(*writer) - z.Writer.Reset(w) - return z, nil -} - -func (z *writer) Close() error { - defer z.pool.Put(z) - return z.Writer.Close() -} - -type reader struct { - *gzip.Reader - pool *sync.Pool -} - -func (c *compressor) Decompress(r io.Reader) (io.Reader, error) { - z, inPool := c.poolDecompressor.Get().(*reader) - if !inPool { - newZ, err := gzip.NewReader(r) - if err != nil { - return nil, err - } - return &reader{Reader: newZ, pool: &c.poolDecompressor}, nil - } - if err := z.Reset(r); err != nil { - c.poolDecompressor.Put(z) - return nil, err - } - return z, nil -} - -func (z *reader) Read(p []byte) (n int, err error) { - n, err = z.Reader.Read(p) - if err == io.EOF { - z.pool.Put(z) - } - return n, err -} - -func (c *compressor) Name() string { - return Name -} - -type compressor struct { - poolCompressor sync.Pool - poolDecompressor sync.Pool -} diff --git a/vendor/google.golang.org/grpc/encoding/proto/proto_benchmark_test.go b/vendor/google.golang.org/grpc/encoding/proto/proto_benchmark_test.go deleted file mode 100644 index 63ea57de..00000000 --- a/vendor/google.golang.org/grpc/encoding/proto/proto_benchmark_test.go +++ /dev/null @@ -1,100 +0,0 @@ -// +build go1.7 - -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package proto - -import ( - "fmt" - "testing" - - "github.com/golang/protobuf/proto" - "google.golang.org/grpc/encoding" - "google.golang.org/grpc/test/codec_perf" -) - -func setupBenchmarkProtoCodecInputs(payloadBaseSize uint32) []proto.Message { - payloadBase := make([]byte, payloadBaseSize) - // arbitrary byte slices - payloadSuffixes := [][]byte{ - []byte("one"), - []byte("two"), - []byte("three"), - []byte("four"), - []byte("five"), - } - protoStructs := make([]proto.Message, 0) - - for _, p := range payloadSuffixes { - ps := &codec_perf.Buffer{} - ps.Body = append(payloadBase, p...) - protoStructs = append(protoStructs, ps) - } - - return protoStructs -} - -// The possible use of certain protobuf APIs like the proto.Buffer API potentially involves caching -// on our side. This can add checks around memory allocations and possible contention. -// Example run: go test -v -run=^$ -bench=BenchmarkProtoCodec -benchmem -func BenchmarkProtoCodec(b *testing.B) { - // range of message sizes - payloadBaseSizes := make([]uint32, 0) - for i := uint32(0); i <= 12; i += 4 { - payloadBaseSizes = append(payloadBaseSizes, 1<<i) - } - // range of SetParallelism - parallelisms := make([]int, 0) - for i := uint32(0); i <= 16; i += 4 { - parallelisms = append(parallelisms, int(1<<i)) - } - for _, s := range payloadBaseSizes { - for _, p := range parallelisms { - protoStructs := setupBenchmarkProtoCodecInputs(s) - name := fmt.Sprintf("MinPayloadSize:%v/SetParallelism(%v)", s, p) - b.Run(name, func(b *testing.B) { - codec := &codec{} - b.SetParallelism(p) - b.RunParallel(func(pb *testing.PB) { - benchmarkProtoCodec(codec, protoStructs, pb, b) - }) - }) - } - } -} - -func benchmarkProtoCodec(codec *codec, protoStructs []proto.Message, pb *testing.PB, b *testing.B) { - counter := 0 - for pb.Next() { - counter++ - ps := protoStructs[counter%len(protoStructs)] - fastMarshalAndUnmarshal(codec, ps, b) - } -} - -func fastMarshalAndUnmarshal(codec encoding.Codec, protoStruct proto.Message, b *testing.B) { - marshaledBytes, err := codec.Marshal(protoStruct) - if err != nil { - b.Errorf("codec.Marshal(_) returned an error") - } - res := codec_perf.Buffer{} - if err := codec.Unmarshal(marshaledBytes, &res); err != nil { - b.Errorf("codec.Unmarshal(_) returned an error") - } -} diff --git a/vendor/google.golang.org/grpc/encoding/proto/proto_test.go b/vendor/google.golang.org/grpc/encoding/proto/proto_test.go deleted file mode 100644 index b6a0b666..00000000 --- a/vendor/google.golang.org/grpc/encoding/proto/proto_test.go +++ /dev/null @@ -1,129 +0,0 @@ -/* - * - * Copyright 2018 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package proto - -import ( - "bytes" - "sync" - "testing" - - "google.golang.org/grpc/encoding" - "google.golang.org/grpc/test/codec_perf" -) - -func marshalAndUnmarshal(t *testing.T, codec encoding.Codec, expectedBody []byte) { - p := &codec_perf.Buffer{} - p.Body = expectedBody - - marshalledBytes, err := codec.Marshal(p) - if err != nil { - t.Errorf("codec.Marshal(_) returned an error") - } - - if err := codec.Unmarshal(marshalledBytes, p); err != nil { - t.Errorf("codec.Unmarshal(_) returned an error") - } - - if bytes.Compare(p.GetBody(), expectedBody) != 0 { - t.Errorf("Unexpected body; got %v; want %v", p.GetBody(), expectedBody) - } -} - -func TestBasicProtoCodecMarshalAndUnmarshal(t *testing.T) { - marshalAndUnmarshal(t, codec{}, []byte{1, 2, 3}) -} - -// Try to catch possible race conditions around use of pools -func TestConcurrentUsage(t *testing.T) { - const ( - numGoRoutines = 100 - numMarshUnmarsh = 1000 - ) - - // small, arbitrary byte slices - protoBodies := [][]byte{ - []byte("one"), - []byte("two"), - []byte("three"), - []byte("four"), - []byte("five"), - } - - var wg sync.WaitGroup - codec := codec{} - - for i := 0; i < numGoRoutines; i++ { - wg.Add(1) - go func() { - defer wg.Done() - for k := 0; k < numMarshUnmarsh; k++ { - marshalAndUnmarshal(t, codec, protoBodies[k%len(protoBodies)]) - } - }() - } - - wg.Wait() -} - -// TestStaggeredMarshalAndUnmarshalUsingSamePool tries to catch potential errors in which slices get -// stomped on during reuse of a proto.Buffer. -func TestStaggeredMarshalAndUnmarshalUsingSamePool(t *testing.T) { - codec1 := codec{} - codec2 := codec{} - - expectedBody1 := []byte{1, 2, 3} - expectedBody2 := []byte{4, 5, 6} - - proto1 := codec_perf.Buffer{Body: expectedBody1} - proto2 := codec_perf.Buffer{Body: expectedBody2} - - var m1, m2 []byte - var err error - - if m1, err = codec1.Marshal(&proto1); err != nil { - t.Errorf("codec.Marshal(%v) failed", proto1) - } - - if m2, err = codec2.Marshal(&proto2); err != nil { - t.Errorf("codec.Marshal(%v) failed", proto2) - } - - if err = codec1.Unmarshal(m1, &proto1); err != nil { - t.Errorf("codec.Unmarshal(%v) failed", m1) - } - - if err = codec2.Unmarshal(m2, &proto2); err != nil { - t.Errorf("codec.Unmarshal(%v) failed", m2) - } - - b1 := proto1.GetBody() - b2 := proto2.GetBody() - - for i, v := range b1 { - if expectedBody1[i] != v { - t.Errorf("expected %v at index %v but got %v", i, expectedBody1[i], v) - } - } - - for i, v := range b2 { - if expectedBody2[i] != v { - t.Errorf("expected %v at index %v but got %v", i, expectedBody2[i], v) - } - } -} diff --git a/vendor/google.golang.org/grpc/examples/README.md b/vendor/google.golang.org/grpc/examples/README.md deleted file mode 100644 index 792da243..00000000 --- a/vendor/google.golang.org/grpc/examples/README.md +++ /dev/null @@ -1,64 +0,0 @@ -gRPC in 3 minutes (Go) -====================== - -BACKGROUND -------------- -For this sample, we've already generated the server and client stubs from [helloworld.proto](helloworld/helloworld/helloworld.proto). - -PREREQUISITES -------------- - -- This requires Go 1.6 or later -- Requires that [GOPATH is set](https://golang.org/doc/code.html#GOPATH) - -``` -$ go help gopath -$ # ensure the PATH contains $GOPATH/bin -$ export PATH=$PATH:$GOPATH/bin -``` - -INSTALL -------- - -``` -$ go get -u google.golang.org/grpc/examples/helloworld/greeter_client -$ go get -u google.golang.org/grpc/examples/helloworld/greeter_server -``` - -TRY IT! -------- - -- Run the server - - ``` - $ greeter_server & - ``` - -- Run the client - - ``` - $ greeter_client - ``` - -OPTIONAL - Rebuilding the generated code ----------------------------------------- - -1. Install [protobuf compiler](https://github.com/google/protobuf/blob/master/README.md#protocol-compiler-installation) - -1. Install the protoc Go plugin - - ``` - $ go get -u github.com/golang/protobuf/protoc-gen-go - ``` - -1. Rebuild the generated Go code - - ``` - $ go generate google.golang.org/grpc/examples/helloworld/... - ``` - - Or run `protoc` command (with the grpc plugin) - - ``` - $ protoc -I helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld - ``` diff --git a/vendor/google.golang.org/grpc/examples/gotutorial.md b/vendor/google.golang.org/grpc/examples/gotutorial.md deleted file mode 100644 index a520a5a1..00000000 --- a/vendor/google.golang.org/grpc/examples/gotutorial.md +++ /dev/null @@ -1,431 +0,0 @@ -# gRPC Basics: Go - -This tutorial provides a basic Go programmer's introduction to working with gRPC. By walking through this example you'll learn how to: - -- Define a service in a `.proto` file. -- Generate server and client code using the protocol buffer compiler. -- Use the Go gRPC API to write a simple client and server for your service. - -It assumes that you have read the [Getting started](https://github.com/grpc/grpc/tree/master/examples) guide and are familiar with [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). Note that the example in this tutorial uses the proto3 version of the protocol buffers language, you can find out more in the [proto3 language guide](https://developers.google.com/protocol-buffers/docs/proto3) and see the [release notes](https://github.com/google/protobuf/releases) for the new version in the protocol buffers Github repository. - -This isn't a comprehensive guide to using gRPC in Go: more reference documentation is coming soon. - -## Why use gRPC? - -Our example is a simple route mapping application that lets clients get information about features on their route, create a summary of their route, and exchange route information such as traffic updates with the server and other clients. - -With gRPC we can define our service once in a `.proto` file and implement clients and servers in any of gRPC's supported languages, which in turn can be run in environments ranging from servers inside Google to your own tablet - all the complexity of communication between different languages and environments is handled for you by gRPC. We also get all the advantages of working with protocol buffers, including efficient serialization, a simple IDL, and easy interface updating. - -## Example code and setup - -The example code for our tutorial is in [grpc/grpc-go/examples/route_guide](https://github.com/grpc/grpc-go/tree/master/examples/route_guide). To download the example, clone the `grpc-go` repository by running the following command: -```shell -$ go get google.golang.org/grpc -``` - -Then change your current directory to `grpc-go/examples/route_guide`: -```shell -$ cd $GOPATH/src/google.golang.org/grpc/examples/route_guide -``` - -You also should have the relevant tools installed to generate the server and client interface code - if you don't already, follow the setup instructions in [the Go quick start guide](https://github.com/grpc/grpc-go/tree/master/examples/). - - -## Defining the service - -Our first step (as you'll know from the [quick start](https://grpc.io/docs/#quick-start)) is to define the gRPC *service* and the method *request* and *response* types using [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview). You can see the complete `.proto` file in [examples/route_guide/routeguide/route_guide.proto](https://github.com/grpc/grpc-go/tree/master/examples/route_guide/routeguide/route_guide.proto). - -To define a service, you specify a named `service` in your `.proto` file: - -```proto -service RouteGuide { - ... -} -``` - -Then you define `rpc` methods inside your service definition, specifying their request and response types. gRPC lets you define four kinds of service method, all of which are used in the `RouteGuide` service: - -- A *simple RPC* where the client sends a request to the server using the stub and waits for a response to come back, just like a normal function call. -```proto - // Obtains the feature at a given position. - rpc GetFeature(Point) returns (Feature) {} -``` - -- A *server-side streaming RPC* where the client sends a request to the server and gets a stream to read a sequence of messages back. The client reads from the returned stream until there are no more messages. As you can see in our example, you specify a server-side streaming method by placing the `stream` keyword before the *response* type. -```proto - // Obtains the Features available within the given Rectangle. Results are - // streamed rather than returned at once (e.g. in a response message with a - // repeated field), as the rectangle may cover a large area and contain a - // huge number of features. - rpc ListFeatures(Rectangle) returns (stream Feature) {} -``` - -- A *client-side streaming RPC* where the client writes a sequence of messages and sends them to the server, again using a provided stream. Once the client has finished writing the messages, it waits for the server to read them all and return its response. You specify a client-side streaming method by placing the `stream` keyword before the *request* type. -```proto - // Accepts a stream of Points on a route being traversed, returning a - // RouteSummary when traversal is completed. - rpc RecordRoute(stream Point) returns (RouteSummary) {} -``` - -- A *bidirectional streaming RPC* where both sides send a sequence of messages using a read-write stream. The two streams operate independently, so clients and servers can read and write in whatever order they like: for example, the server could wait to receive all the client messages before writing its responses, or it could alternately read a message then write a message, or some other combination of reads and writes. The order of messages in each stream is preserved. You specify this type of method by placing the `stream` keyword before both the request and the response. -```proto - // Accepts a stream of RouteNotes sent while a route is being traversed, - // while receiving other RouteNotes (e.g. from other users). - rpc RouteChat(stream RouteNote) returns (stream RouteNote) {} -``` - -Our `.proto` file also contains protocol buffer message type definitions for all the request and response types used in our service methods - for example, here's the `Point` message type: -```proto -// Points are represented as latitude-longitude pairs in the E7 representation -// (degrees multiplied by 10**7 and rounded to the nearest integer). -// Latitudes should be in the range +/- 90 degrees and longitude should be in -// the range +/- 180 degrees (inclusive). -message Point { - int32 latitude = 1; - int32 longitude = 2; -} -``` - - -## Generating client and server code - -Next we need to generate the gRPC client and server interfaces from our `.proto` service definition. We do this using the protocol buffer compiler `protoc` with a special gRPC Go plugin. - -For simplicity, we've provided a [bash script](https://github.com/grpc/grpc-go/blob/master/codegen.sh) that runs `protoc` for you with the appropriate plugin, input, and output (if you want to run this by yourself, make sure you've installed protoc and followed the gRPC-Go [installation instructions](https://github.com/grpc/grpc-go/blob/master/README.md) first): - -```shell -$ codegen.sh route_guide.proto -``` - -which actually runs: - -```shell -$ protoc --go_out=plugins=grpc:. route_guide.proto -``` - -Running this command generates the following file in your current directory: -- `route_guide.pb.go` - -This contains: -- All the protocol buffer code to populate, serialize, and retrieve our request and response message types -- An interface type (or *stub*) for clients to call with the methods defined in the `RouteGuide` service. -- An interface type for servers to implement, also with the methods defined in the `RouteGuide` service. - - -<a name="server"></a> -## Creating the server - -First let's look at how we create a `RouteGuide` server. If you're only interested in creating gRPC clients, you can skip this section and go straight to [Creating the client](#client) (though you might find it interesting anyway!). - -There are two parts to making our `RouteGuide` service do its job: -- Implementing the service interface generated from our service definition: doing the actual "work" of our service. -- Running a gRPC server to listen for requests from clients and dispatch them to the right service implementation. - -You can find our example `RouteGuide` server in [grpc-go/examples/route_guide/server/server.go](https://github.com/grpc/grpc-go/tree/master/examples/route_guide/server/server.go). Let's take a closer look at how it works. - -### Implementing RouteGuide - -As you can see, our server has a `routeGuideServer` struct type that implements the generated `RouteGuideServer` interface: - -```go -type routeGuideServer struct { - ... -} -... - -func (s *routeGuideServer) GetFeature(ctx context.Context, point *pb.Point) (*pb.Feature, error) { - ... -} -... - -func (s *routeGuideServer) ListFeatures(rect *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error { - ... -} -... - -func (s *routeGuideServer) RecordRoute(stream pb.RouteGuide_RecordRouteServer) error { - ... -} -... - -func (s *routeGuideServer) RouteChat(stream pb.RouteGuide_RouteChatServer) error { - ... -} -... -``` - -#### Simple RPC -`routeGuideServer` implements all our service methods. Let's look at the simplest type first, `GetFeature`, which just gets a `Point` from the client and returns the corresponding feature information from its database in a `Feature`. - -```go -func (s *routeGuideServer) GetFeature(ctx context.Context, point *pb.Point) (*pb.Feature, error) { - for _, feature := range s.savedFeatures { - if proto.Equal(feature.Location, point) { - return feature, nil - } - } - // No feature was found, return an unnamed feature - return &pb.Feature{"", point}, nil -} -``` - -The method is passed a context object for the RPC and the client's `Point` protocol buffer request. It returns a `Feature` protocol buffer object with the response information and an `error`. In the method we populate the `Feature` with the appropriate information, and then `return` it along with an `nil` error to tell gRPC that we've finished dealing with the RPC and that the `Feature` can be returned to the client. - -#### Server-side streaming RPC -Now let's look at one of our streaming RPCs. `ListFeatures` is a server-side streaming RPC, so we need to send back multiple `Feature`s to our client. - -```go -func (s *routeGuideServer) ListFeatures(rect *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error { - for _, feature := range s.savedFeatures { - if inRange(feature.Location, rect) { - if err := stream.Send(feature); err != nil { - return err - } - } - } - return nil -} -``` - -As you can see, instead of getting simple request and response objects in our method parameters, this time we get a request object (the `Rectangle` in which our client wants to find `Feature`s) and a special `RouteGuide_ListFeaturesServer` object to write our responses. - -In the method, we populate as many `Feature` objects as we need to return, writing them to the `RouteGuide_ListFeaturesServer` using its `Send()` method. Finally, as in our simple RPC, we return a `nil` error to tell gRPC that we've finished writing responses. Should any error happen in this call, we return a non-`nil` error; the gRPC layer will translate it into an appropriate RPC status to be sent on the wire. - -#### Client-side streaming RPC -Now let's look at something a little more complicated: the client-side streaming method `RecordRoute`, where we get a stream of `Point`s from the client and return a single `RouteSummary` with information about their trip. As you can see, this time the method doesn't have a request parameter at all. Instead, it gets a `RouteGuide_RecordRouteServer` stream, which the server can use to both read *and* write messages - it can receive client messages using its `Recv()` method and return its single response using its `SendAndClose()` method. - -```go -func (s *routeGuideServer) RecordRoute(stream pb.RouteGuide_RecordRouteServer) error { - var pointCount, featureCount, distance int32 - var lastPoint *pb.Point - startTime := time.Now() - for { - point, err := stream.Recv() - if err == io.EOF { - endTime := time.Now() - return stream.SendAndClose(&pb.RouteSummary{ - PointCount: pointCount, - FeatureCount: featureCount, - Distance: distance, - ElapsedTime: int32(endTime.Sub(startTime).Seconds()), - }) - } - if err != nil { - return err - } - pointCount++ - for _, feature := range s.savedFeatures { - if proto.Equal(feature.Location, point) { - featureCount++ - } - } - if lastPoint != nil { - distance += calcDistance(lastPoint, point) - } - lastPoint = point - } -} -``` - -In the method body we use the `RouteGuide_RecordRouteServer`s `Recv()` method to repeatedly read in our client's requests to a request object (in this case a `Point`) until there are no more messages: the server needs to check the the error returned from `Recv()` after each call. If this is `nil`, the stream is still good and it can continue reading; if it's `io.EOF` the message stream has ended and the server can return its `RouteSummary`. If it has any other value, we return the error "as is" so that it'll be translated to an RPC status by the gRPC layer. - -#### Bidirectional streaming RPC -Finally, let's look at our bidirectional streaming RPC `RouteChat()`. - -```go -func (s *routeGuideServer) RouteChat(stream pb.RouteGuide_RouteChatServer) error { - for { - in, err := stream.Recv() - if err == io.EOF { - return nil - } - if err != nil { - return err - } - key := serialize(in.Location) - ... // look for notes to be sent to client - for _, note := range s.routeNotes[key] { - if err := stream.Send(note); err != nil { - return err - } - } - } -} -``` - -This time we get a `RouteGuide_RouteChatServer` stream that, as in our client-side streaming example, can be used to read and write messages. However, this time we return values via our method's stream while the client is still writing messages to *their* message stream. - -The syntax for reading and writing here is very similar to our client-streaming method, except the server uses the stream's `Send()` method rather than `SendAndClose()` because it's writing multiple responses. Although each side will always get the other's messages in the order they were written, both the client and server can read and write in any order — the streams operate completely independently. - -### Starting the server - -Once we've implemented all our methods, we also need to start up a gRPC server so that clients can actually use our service. The following snippet shows how we do this for our `RouteGuide` service: - -```go -flag.Parse() -lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", *port)) -if err != nil { - log.Fatalf("failed to listen: %v", err) -} -grpcServer := grpc.NewServer() -pb.RegisterRouteGuideServer(grpcServer, &routeGuideServer{}) -... // determine whether to use TLS -grpcServer.Serve(lis) -``` -To build and start a server, we: - -1. Specify the port we want to use to listen for client requests using `lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", *port))`. -2. Create an instance of the gRPC server using `grpc.NewServer()`. -3. Register our service implementation with the gRPC server. -4. Call `Serve()` on the server with our port details to do a blocking wait until the process is killed or `Stop()` is called. - -<a name="client"></a> -## Creating the client - -In this section, we'll look at creating a Go client for our `RouteGuide` service. You can see our complete example client code in [grpc-go/examples/route_guide/client/client.go](https://github.com/grpc/grpc-go/tree/master/examples/route_guide/client/client.go). - -### Creating a stub - -To call service methods, we first need to create a gRPC *channel* to communicate with the server. We create this by passing the server address and port number to `grpc.Dial()` as follows: - -```go -conn, err := grpc.Dial(*serverAddr) -if err != nil { - ... -} -defer conn.Close() -``` - -You can use `DialOptions` to set the auth credentials (e.g., TLS, GCE credentials, JWT credentials) in `grpc.Dial` if the service you request requires that - however, we don't need to do this for our `RouteGuide` service. - -Once the gRPC *channel* is setup, we need a client *stub* to perform RPCs. We get this using the `NewRouteGuideClient` method provided in the `pb` package we generated from our `.proto` file. - -```go -client := pb.NewRouteGuideClient(conn) -``` - -### Calling service methods - -Now let's look at how we call our service methods. Note that in gRPC-Go, RPCs operate in a blocking/synchronous mode, which means that the RPC call waits for the server to respond, and will either return a response or an error. - -#### Simple RPC - -Calling the simple RPC `GetFeature` is nearly as straightforward as calling a local method. - -```go -feature, err := client.GetFeature(context.Background(), &pb.Point{409146138, -746188906}) -if err != nil { - ... -} -``` - -As you can see, we call the method on the stub we got earlier. In our method parameters we create and populate a request protocol buffer object (in our case `Point`). We also pass a `context.Context` object which lets us change our RPC's behaviour if necessary, such as time-out/cancel an RPC in flight. If the call doesn't return an error, then we can read the response information from the server from the first return value. - -```go -log.Println(feature) -``` - -#### Server-side streaming RPC - -Here's where we call the server-side streaming method `ListFeatures`, which returns a stream of geographical `Feature`s. If you've already read [Creating the server](#server) some of this may look very familiar - streaming RPCs are implemented in a similar way on both sides. - -```go -rect := &pb.Rectangle{ ... } // initialize a pb.Rectangle -stream, err := client.ListFeatures(context.Background(), rect) -if err != nil { - ... -} -for { - feature, err := stream.Recv() - if err == io.EOF { - break - } - if err != nil { - log.Fatalf("%v.ListFeatures(_) = _, %v", client, err) - } - log.Println(feature) -} -``` - -As in the simple RPC, we pass the method a context and a request. However, instead of getting a response object back, we get back an instance of `RouteGuide_ListFeaturesClient`. The client can use the `RouteGuide_ListFeaturesClient` stream to read the server's responses. - -We use the `RouteGuide_ListFeaturesClient`'s `Recv()` method to repeatedly read in the server's responses to a response protocol buffer object (in this case a `Feature`) until there are no more messages: the client needs to check the error `err` returned from `Recv()` after each call. If `nil`, the stream is still good and it can continue reading; if it's `io.EOF` then the message stream has ended; otherwise there must be an RPC error, which is passed over through `err`. - -#### Client-side streaming RPC - -The client-side streaming method `RecordRoute` is similar to the server-side method, except that we only pass the method a context and get a `RouteGuide_RecordRouteClient` stream back, which we can use to both write *and* read messages. - -```go -// Create a random number of random points -r := rand.New(rand.NewSource(time.Now().UnixNano())) -pointCount := int(r.Int31n(100)) + 2 // Traverse at least two points -var points []*pb.Point -for i := 0; i < pointCount; i++ { - points = append(points, randomPoint(r)) -} -log.Printf("Traversing %d points.", len(points)) -stream, err := client.RecordRoute(context.Background()) -if err != nil { - log.Fatalf("%v.RecordRoute(_) = _, %v", client, err) -} -for _, point := range points { - if err := stream.Send(point); err != nil { - log.Fatalf("%v.Send(%v) = %v", stream, point, err) - } -} -reply, err := stream.CloseAndRecv() -if err != nil { - log.Fatalf("%v.CloseAndRecv() got error %v, want %v", stream, err, nil) -} -log.Printf("Route summary: %v", reply) -``` - -The `RouteGuide_RecordRouteClient` has a `Send()` method that we can use to send requests to the server. Once we've finished writing our client's requests to the stream using `Send()`, we need to call `CloseAndRecv()` on the stream to let gRPC know that we've finished writing and are expecting to receive a response. We get our RPC status from the `err` returned from `CloseAndRecv()`. If the status is `nil`, then the first return value from `CloseAndRecv()` will be a valid server response. - -#### Bidirectional streaming RPC - -Finally, let's look at our bidirectional streaming RPC `RouteChat()`. As in the case of `RecordRoute`, we only pass the method a context object and get back a stream that we can use to both write and read messages. However, this time we return values via our method's stream while the server is still writing messages to *their* message stream. - -```go -stream, err := client.RouteChat(context.Background()) -waitc := make(chan struct{}) -go func() { - for { - in, err := stream.Recv() - if err == io.EOF { - // read done. - close(waitc) - return - } - if err != nil { - log.Fatalf("Failed to receive a note : %v", err) - } - log.Printf("Got message %s at point(%d, %d)", in.Message, in.Location.Latitude, in.Location.Longitude) - } -}() -for _, note := range notes { - if err := stream.Send(note); err != nil { - log.Fatalf("Failed to send a note: %v", err) - } -} -stream.CloseSend() -<-waitc -``` - -The syntax for reading and writing here is very similar to our client-side streaming method, except we use the stream's `CloseSend()` method once we've finished our call. Although each side will always get the other's messages in the order they were written, both the client and server can read and write in any order — the streams operate completely independently. - -## Try it out! - -To compile and run the server, assuming you are in the folder -`$GOPATH/src/google.golang.org/grpc/examples/route_guide`, simply: - -```sh -$ go run server/server.go -``` - -Likewise, to run the client: - -```sh -$ go run client/client.go -``` - diff --git a/vendor/google.golang.org/grpc/examples/helloworld/greeter_client/main.go b/vendor/google.golang.org/grpc/examples/helloworld/greeter_client/main.go deleted file mode 100644 index 3dc426e2..00000000 --- a/vendor/google.golang.org/grpc/examples/helloworld/greeter_client/main.go +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "log" - "os" - - "golang.org/x/net/context" - "google.golang.org/grpc" - pb "google.golang.org/grpc/examples/helloworld/helloworld" -) - -const ( - address = "localhost:50051" - defaultName = "world" -) - -func main() { - // Set up a connection to the server. - conn, err := grpc.Dial(address, grpc.WithInsecure()) - if err != nil { - log.Fatalf("did not connect: %v", err) - } - defer conn.Close() - c := pb.NewGreeterClient(conn) - - // Contact the server and print out its response. - name := defaultName - if len(os.Args) > 1 { - name = os.Args[1] - } - r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name}) - if err != nil { - log.Fatalf("could not greet: %v", err) - } - log.Printf("Greeting: %s", r.Message) -} diff --git a/vendor/google.golang.org/grpc/examples/helloworld/greeter_server/main.go b/vendor/google.golang.org/grpc/examples/helloworld/greeter_server/main.go deleted file mode 100644 index 702a3b61..00000000 --- a/vendor/google.golang.org/grpc/examples/helloworld/greeter_server/main.go +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc -I ../helloworld --go_out=plugins=grpc:../helloworld ../helloworld/helloworld.proto - -package main - -import ( - "log" - "net" - - "golang.org/x/net/context" - "google.golang.org/grpc" - pb "google.golang.org/grpc/examples/helloworld/helloworld" - "google.golang.org/grpc/reflection" -) - -const ( - port = ":50051" -) - -// server is used to implement helloworld.GreeterServer. -type server struct{} - -// SayHello implements helloworld.GreeterServer -func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { - return &pb.HelloReply{Message: "Hello " + in.Name}, nil -} - -func main() { - lis, err := net.Listen("tcp", port) - if err != nil { - log.Fatalf("failed to listen: %v", err) - } - s := grpc.NewServer() - pb.RegisterGreeterServer(s, &server{}) - // Register reflection service on gRPC server. - reflection.Register(s) - if err := s.Serve(lis); err != nil { - log.Fatalf("failed to serve: %v", err) - } -} diff --git a/vendor/google.golang.org/grpc/examples/helloworld/helloworld/helloworld.pb.go b/vendor/google.golang.org/grpc/examples/helloworld/helloworld/helloworld.pb.go deleted file mode 100644 index 64bd1ef3..00000000 --- a/vendor/google.golang.org/grpc/examples/helloworld/helloworld/helloworld.pb.go +++ /dev/null @@ -1,164 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: helloworld.proto - -/* -Package helloworld is a generated protocol buffer package. - -It is generated from these files: - helloworld.proto - -It has these top-level messages: - HelloRequest - HelloReply -*/ -package helloworld - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The request message containing the user's name. -type HelloRequest struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *HelloRequest) Reset() { *m = HelloRequest{} } -func (m *HelloRequest) String() string { return proto.CompactTextString(m) } -func (*HelloRequest) ProtoMessage() {} -func (*HelloRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *HelloRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// The response message containing the greetings -type HelloReply struct { - Message string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` -} - -func (m *HelloReply) Reset() { *m = HelloReply{} } -func (m *HelloReply) String() string { return proto.CompactTextString(m) } -func (*HelloReply) ProtoMessage() {} -func (*HelloReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *HelloReply) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -func init() { - proto.RegisterType((*HelloRequest)(nil), "helloworld.HelloRequest") - proto.RegisterType((*HelloReply)(nil), "helloworld.HelloReply") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Greeter service - -type GreeterClient interface { - // Sends a greeting - SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloReply, error) -} - -type greeterClient struct { - cc *grpc.ClientConn -} - -func NewGreeterClient(cc *grpc.ClientConn) GreeterClient { - return &greeterClient{cc} -} - -func (c *greeterClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloReply, error) { - out := new(HelloReply) - err := grpc.Invoke(ctx, "/helloworld.Greeter/SayHello", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Greeter service - -type GreeterServer interface { - // Sends a greeting - SayHello(context.Context, *HelloRequest) (*HelloReply, error) -} - -func RegisterGreeterServer(s *grpc.Server, srv GreeterServer) { - s.RegisterService(&_Greeter_serviceDesc, srv) -} - -func _Greeter_SayHello_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(HelloRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GreeterServer).SayHello(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/helloworld.Greeter/SayHello", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GreeterServer).SayHello(ctx, req.(*HelloRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Greeter_serviceDesc = grpc.ServiceDesc{ - ServiceName: "helloworld.Greeter", - HandlerType: (*GreeterServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "SayHello", - Handler: _Greeter_SayHello_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "helloworld.proto", -} - -func init() { proto.RegisterFile("helloworld.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 175 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xc8, 0x48, 0xcd, 0xc9, - 0xc9, 0x2f, 0xcf, 0x2f, 0xca, 0x49, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x42, 0x88, - 0x28, 0x29, 0x71, 0xf1, 0x78, 0x80, 0x78, 0x41, 0xa9, 0x85, 0xa5, 0xa9, 0xc5, 0x25, 0x42, 0x42, - 0x5c, 0x2c, 0x79, 0x89, 0xb9, 0xa9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x60, 0xb6, 0x92, - 0x1a, 0x17, 0x17, 0x54, 0x4d, 0x41, 0x4e, 0xa5, 0x90, 0x04, 0x17, 0x7b, 0x6e, 0x6a, 0x71, 0x71, - 0x62, 0x3a, 0x4c, 0x11, 0x8c, 0x6b, 0xe4, 0xc9, 0xc5, 0xee, 0x5e, 0x94, 0x9a, 0x5a, 0x92, 0x5a, - 0x24, 0x64, 0xc7, 0xc5, 0x11, 0x9c, 0x58, 0x09, 0xd6, 0x25, 0x24, 0xa1, 0x87, 0xe4, 0x02, 0x64, - 0xcb, 0xa4, 0xc4, 0xb0, 0xc8, 0x14, 0xe4, 0x54, 0x2a, 0x31, 0x38, 0x19, 0x70, 0x49, 0x67, 0xe6, - 0xeb, 0xa5, 0x17, 0x15, 0x24, 0xeb, 0xa5, 0x56, 0x24, 0xe6, 0x16, 0xe4, 0xa4, 0x16, 0x23, 0xa9, - 0x75, 0xe2, 0x07, 0x2b, 0x0e, 0x07, 0xb1, 0x03, 0x40, 0x5e, 0x0a, 0x60, 0x4c, 0x62, 0x03, 0xfb, - 0xcd, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x0f, 0xb7, 0xcd, 0xf2, 0xef, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/examples/helloworld/helloworld/helloworld.proto b/vendor/google.golang.org/grpc/examples/helloworld/helloworld/helloworld.proto deleted file mode 100644 index d79a6a0d..00000000 --- a/vendor/google.golang.org/grpc/examples/helloworld/helloworld/helloworld.proto +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2015 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -option java_multiple_files = true; -option java_package = "io.grpc.examples.helloworld"; -option java_outer_classname = "HelloWorldProto"; - -package helloworld; - -// The greeting service definition. -service Greeter { - // Sends a greeting - rpc SayHello (HelloRequest) returns (HelloReply) {} -} - -// The request message containing the user's name. -message HelloRequest { - string name = 1; -} - -// The response message containing the greetings -message HelloReply { - string message = 1; -} diff --git a/vendor/google.golang.org/grpc/examples/helloworld/mock_helloworld/hw_mock.go b/vendor/google.golang.org/grpc/examples/helloworld/mock_helloworld/hw_mock.go deleted file mode 100644 index 14957ed5..00000000 --- a/vendor/google.golang.org/grpc/examples/helloworld/mock_helloworld/hw_mock.go +++ /dev/null @@ -1,48 +0,0 @@ -// Automatically generated by MockGen. DO NOT EDIT! -// Source: google.golang.org/grpc/examples/helloworld/helloworld (interfaces: GreeterClient) - -package mock_helloworld - -import ( - gomock "github.com/golang/mock/gomock" - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" - helloworld "google.golang.org/grpc/examples/helloworld/helloworld" -) - -// Mock of GreeterClient interface -type MockGreeterClient struct { - ctrl *gomock.Controller - recorder *_MockGreeterClientRecorder -} - -// Recorder for MockGreeterClient (not exported) -type _MockGreeterClientRecorder struct { - mock *MockGreeterClient -} - -func NewMockGreeterClient(ctrl *gomock.Controller) *MockGreeterClient { - mock := &MockGreeterClient{ctrl: ctrl} - mock.recorder = &_MockGreeterClientRecorder{mock} - return mock -} - -func (_m *MockGreeterClient) EXPECT() *_MockGreeterClientRecorder { - return _m.recorder -} - -func (_m *MockGreeterClient) SayHello(_param0 context.Context, _param1 *helloworld.HelloRequest, _param2 ...grpc.CallOption) (*helloworld.HelloReply, error) { - _s := []interface{}{_param0, _param1} - for _, _x := range _param2 { - _s = append(_s, _x) - } - ret := _m.ctrl.Call(_m, "SayHello", _s...) - ret0, _ := ret[0].(*helloworld.HelloReply) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -func (_mr *_MockGreeterClientRecorder) SayHello(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - _s := append([]interface{}{arg0, arg1}, arg2...) - return _mr.mock.ctrl.RecordCall(_mr.mock, "SayHello", _s...) -} diff --git a/vendor/google.golang.org/grpc/examples/helloworld/mock_helloworld/hw_mock_test.go b/vendor/google.golang.org/grpc/examples/helloworld/mock_helloworld/hw_mock_test.go deleted file mode 100644 index 5ad9b8b0..00000000 --- a/vendor/google.golang.org/grpc/examples/helloworld/mock_helloworld/hw_mock_test.go +++ /dev/null @@ -1,67 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package mock_helloworld_test - -import ( - "fmt" - "testing" - - "github.com/golang/mock/gomock" - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - helloworld "google.golang.org/grpc/examples/helloworld/helloworld" - hwmock "google.golang.org/grpc/examples/helloworld/mock_helloworld" -) - -// rpcMsg implements the gomock.Matcher interface -type rpcMsg struct { - msg proto.Message -} - -func (r *rpcMsg) Matches(msg interface{}) bool { - m, ok := msg.(proto.Message) - if !ok { - return false - } - return proto.Equal(m, r.msg) -} - -func (r *rpcMsg) String() string { - return fmt.Sprintf("is %s", r.msg) -} - -func TestSayHello(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - mockGreeterClient := hwmock.NewMockGreeterClient(ctrl) - req := &helloworld.HelloRequest{Name: "unit_test"} - mockGreeterClient.EXPECT().SayHello( - gomock.Any(), - &rpcMsg{msg: req}, - ).Return(&helloworld.HelloReply{Message: "Mocked Interface"}, nil) - testSayHello(t, mockGreeterClient) -} - -func testSayHello(t *testing.T, client helloworld.GreeterClient) { - r, err := client.SayHello(context.Background(), &helloworld.HelloRequest{Name: "unit_test"}) - if err != nil || r.Message != "Mocked Interface" { - t.Errorf("mocking failed") - } - t.Log("Reply : ", r.Message) -} diff --git a/vendor/google.golang.org/grpc/examples/route_guide/README.md b/vendor/google.golang.org/grpc/examples/route_guide/README.md deleted file mode 100644 index ddec3a0b..00000000 --- a/vendor/google.golang.org/grpc/examples/route_guide/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Description -The route guide server and client demonstrate how to use grpc go libraries to -perform unary, client streaming, server streaming and full duplex RPCs. - -Please refer to [gRPC Basics: Go](https://grpc.io/docs/tutorials/basic/go.html) for more information. - -See the definition of the route guide service in routeguide/route_guide.proto. - -# Run the sample code -To compile and run the server, assuming you are in the root of the route_guide -folder, i.e., .../examples/route_guide/, simply: - -```sh -$ go run server/server.go -``` - -Likewise, to run the client: - -```sh -$ go run client/client.go -``` - -# Optional command line flags -The server and client both take optional command line flags. For example, the -client and server run without TLS by default. To enable TLS: - -```sh -$ go run server/server.go -tls=true -``` - -and - -```sh -$ go run client/client.go -tls=true -``` diff --git a/vendor/google.golang.org/grpc/examples/route_guide/client/client.go b/vendor/google.golang.org/grpc/examples/route_guide/client/client.go deleted file mode 100644 index e789fabb..00000000 --- a/vendor/google.golang.org/grpc/examples/route_guide/client/client.go +++ /dev/null @@ -1,184 +0,0 @@ -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package main implements a simple gRPC client that demonstrates how to use gRPC-Go libraries -// to perform unary, client streaming, server streaming and full duplex RPCs. -// -// It interacts with the route guide service whose definition can be found in routeguide/route_guide.proto. -package main - -import ( - "flag" - "io" - "log" - "math/rand" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - pb "google.golang.org/grpc/examples/route_guide/routeguide" - "google.golang.org/grpc/testdata" -) - -var ( - tls = flag.Bool("tls", false, "Connection uses TLS if true, else plain TCP") - caFile = flag.String("ca_file", "", "The file containning the CA root cert file") - serverAddr = flag.String("server_addr", "127.0.0.1:10000", "The server address in the format of host:port") - serverHostOverride = flag.String("server_host_override", "x.test.youtube.com", "The server name use to verify the hostname returned by TLS handshake") -) - -// printFeature gets the feature for the given point. -func printFeature(client pb.RouteGuideClient, point *pb.Point) { - log.Printf("Getting feature for point (%d, %d)", point.Latitude, point.Longitude) - feature, err := client.GetFeature(context.Background(), point) - if err != nil { - log.Fatalf("%v.GetFeatures(_) = _, %v: ", client, err) - } - log.Println(feature) -} - -// printFeatures lists all the features within the given bounding Rectangle. -func printFeatures(client pb.RouteGuideClient, rect *pb.Rectangle) { - log.Printf("Looking for features within %v", rect) - stream, err := client.ListFeatures(context.Background(), rect) - if err != nil { - log.Fatalf("%v.ListFeatures(_) = _, %v", client, err) - } - for { - feature, err := stream.Recv() - if err == io.EOF { - break - } - if err != nil { - log.Fatalf("%v.ListFeatures(_) = _, %v", client, err) - } - log.Println(feature) - } -} - -// runRecordRoute sends a sequence of points to server and expects to get a RouteSummary from server. -func runRecordRoute(client pb.RouteGuideClient) { - // Create a random number of random points - r := rand.New(rand.NewSource(time.Now().UnixNano())) - pointCount := int(r.Int31n(100)) + 2 // Traverse at least two points - var points []*pb.Point - for i := 0; i < pointCount; i++ { - points = append(points, randomPoint(r)) - } - log.Printf("Traversing %d points.", len(points)) - stream, err := client.RecordRoute(context.Background()) - if err != nil { - log.Fatalf("%v.RecordRoute(_) = _, %v", client, err) - } - for _, point := range points { - if err := stream.Send(point); err != nil { - log.Fatalf("%v.Send(%v) = %v", stream, point, err) - } - } - reply, err := stream.CloseAndRecv() - if err != nil { - log.Fatalf("%v.CloseAndRecv() got error %v, want %v", stream, err, nil) - } - log.Printf("Route summary: %v", reply) -} - -// runRouteChat receives a sequence of route notes, while sending notes for various locations. -func runRouteChat(client pb.RouteGuideClient) { - notes := []*pb.RouteNote{ - {Location: &pb.Point{Latitude: 0, Longitude: 1}, Message: "First message"}, - {Location: &pb.Point{Latitude: 0, Longitude: 2}, Message: "Second message"}, - {Location: &pb.Point{Latitude: 0, Longitude: 3}, Message: "Third message"}, - {Location: &pb.Point{Latitude: 0, Longitude: 1}, Message: "Fourth message"}, - {Location: &pb.Point{Latitude: 0, Longitude: 2}, Message: "Fifth message"}, - {Location: &pb.Point{Latitude: 0, Longitude: 3}, Message: "Sixth message"}, - } - stream, err := client.RouteChat(context.Background()) - if err != nil { - log.Fatalf("%v.RouteChat(_) = _, %v", client, err) - } - waitc := make(chan struct{}) - go func() { - for { - in, err := stream.Recv() - if err == io.EOF { - // read done. - close(waitc) - return - } - if err != nil { - log.Fatalf("Failed to receive a note : %v", err) - } - log.Printf("Got message %s at point(%d, %d)", in.Message, in.Location.Latitude, in.Location.Longitude) - } - }() - for _, note := range notes { - if err := stream.Send(note); err != nil { - log.Fatalf("Failed to send a note: %v", err) - } - } - stream.CloseSend() - <-waitc -} - -func randomPoint(r *rand.Rand) *pb.Point { - lat := (r.Int31n(180) - 90) * 1e7 - long := (r.Int31n(360) - 180) * 1e7 - return &pb.Point{Latitude: lat, Longitude: long} -} - -func main() { - flag.Parse() - var opts []grpc.DialOption - if *tls { - if *caFile == "" { - *caFile = testdata.Path("ca.pem") - } - creds, err := credentials.NewClientTLSFromFile(*caFile, *serverHostOverride) - if err != nil { - log.Fatalf("Failed to create TLS credentials %v", err) - } - opts = append(opts, grpc.WithTransportCredentials(creds)) - } else { - opts = append(opts, grpc.WithInsecure()) - } - conn, err := grpc.Dial(*serverAddr, opts...) - if err != nil { - log.Fatalf("fail to dial: %v", err) - } - defer conn.Close() - client := pb.NewRouteGuideClient(conn) - - // Looking for a valid feature - printFeature(client, &pb.Point{Latitude: 409146138, Longitude: -746188906}) - - // Feature missing. - printFeature(client, &pb.Point{Latitude: 0, Longitude: 0}) - - // Looking for features between 40, -75 and 42, -73. - printFeatures(client, &pb.Rectangle{ - Lo: &pb.Point{Latitude: 400000000, Longitude: -750000000}, - Hi: &pb.Point{Latitude: 420000000, Longitude: -730000000}, - }) - - // RecordRoute - runRecordRoute(client) - - // RouteChat - runRouteChat(client) -} diff --git a/vendor/google.golang.org/grpc/examples/route_guide/mock_routeguide/rg_mock.go b/vendor/google.golang.org/grpc/examples/route_guide/mock_routeguide/rg_mock.go deleted file mode 100644 index 328c929f..00000000 --- a/vendor/google.golang.org/grpc/examples/route_guide/mock_routeguide/rg_mock.go +++ /dev/null @@ -1,200 +0,0 @@ -// Automatically generated by MockGen. DO NOT EDIT! -// Source: google.golang.org/grpc/examples/route_guide/routeguide (interfaces: RouteGuideClient,RouteGuide_RouteChatClient) - -package mock_routeguide - -import ( - gomock "github.com/golang/mock/gomock" - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" - routeguide "google.golang.org/grpc/examples/route_guide/routeguide" - metadata "google.golang.org/grpc/metadata" -) - -// Mock of RouteGuideClient interface -type MockRouteGuideClient struct { - ctrl *gomock.Controller - recorder *_MockRouteGuideClientRecorder -} - -// Recorder for MockRouteGuideClient (not exported) -type _MockRouteGuideClientRecorder struct { - mock *MockRouteGuideClient -} - -func NewMockRouteGuideClient(ctrl *gomock.Controller) *MockRouteGuideClient { - mock := &MockRouteGuideClient{ctrl: ctrl} - mock.recorder = &_MockRouteGuideClientRecorder{mock} - return mock -} - -func (_m *MockRouteGuideClient) EXPECT() *_MockRouteGuideClientRecorder { - return _m.recorder -} - -func (_m *MockRouteGuideClient) GetFeature(_param0 context.Context, _param1 *routeguide.Point, _param2 ...grpc.CallOption) (*routeguide.Feature, error) { - _s := []interface{}{_param0, _param1} - for _, _x := range _param2 { - _s = append(_s, _x) - } - ret := _m.ctrl.Call(_m, "GetFeature", _s...) - ret0, _ := ret[0].(*routeguide.Feature) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -func (_mr *_MockRouteGuideClientRecorder) GetFeature(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - _s := append([]interface{}{arg0, arg1}, arg2...) - return _mr.mock.ctrl.RecordCall(_mr.mock, "GetFeature", _s...) -} - -func (_m *MockRouteGuideClient) ListFeatures(_param0 context.Context, _param1 *routeguide.Rectangle, _param2 ...grpc.CallOption) (routeguide.RouteGuide_ListFeaturesClient, error) { - _s := []interface{}{_param0, _param1} - for _, _x := range _param2 { - _s = append(_s, _x) - } - ret := _m.ctrl.Call(_m, "ListFeatures", _s...) - ret0, _ := ret[0].(routeguide.RouteGuide_ListFeaturesClient) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -func (_mr *_MockRouteGuideClientRecorder) ListFeatures(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { - _s := append([]interface{}{arg0, arg1}, arg2...) - return _mr.mock.ctrl.RecordCall(_mr.mock, "ListFeatures", _s...) -} - -func (_m *MockRouteGuideClient) RecordRoute(_param0 context.Context, _param1 ...grpc.CallOption) (routeguide.RouteGuide_RecordRouteClient, error) { - _s := []interface{}{_param0} - for _, _x := range _param1 { - _s = append(_s, _x) - } - ret := _m.ctrl.Call(_m, "RecordRoute", _s...) - ret0, _ := ret[0].(routeguide.RouteGuide_RecordRouteClient) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -func (_mr *_MockRouteGuideClientRecorder) RecordRoute(arg0 interface{}, arg1 ...interface{}) *gomock.Call { - _s := append([]interface{}{arg0}, arg1...) - return _mr.mock.ctrl.RecordCall(_mr.mock, "RecordRoute", _s...) -} - -func (_m *MockRouteGuideClient) RouteChat(_param0 context.Context, _param1 ...grpc.CallOption) (routeguide.RouteGuide_RouteChatClient, error) { - _s := []interface{}{_param0} - for _, _x := range _param1 { - _s = append(_s, _x) - } - ret := _m.ctrl.Call(_m, "RouteChat", _s...) - ret0, _ := ret[0].(routeguide.RouteGuide_RouteChatClient) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -func (_mr *_MockRouteGuideClientRecorder) RouteChat(arg0 interface{}, arg1 ...interface{}) *gomock.Call { - _s := append([]interface{}{arg0}, arg1...) - return _mr.mock.ctrl.RecordCall(_mr.mock, "RouteChat", _s...) -} - -// Mock of RouteGuide_RouteChatClient interface -type MockRouteGuide_RouteChatClient struct { - ctrl *gomock.Controller - recorder *_MockRouteGuide_RouteChatClientRecorder -} - -// Recorder for MockRouteGuide_RouteChatClient (not exported) -type _MockRouteGuide_RouteChatClientRecorder struct { - mock *MockRouteGuide_RouteChatClient -} - -func NewMockRouteGuide_RouteChatClient(ctrl *gomock.Controller) *MockRouteGuide_RouteChatClient { - mock := &MockRouteGuide_RouteChatClient{ctrl: ctrl} - mock.recorder = &_MockRouteGuide_RouteChatClientRecorder{mock} - return mock -} - -func (_m *MockRouteGuide_RouteChatClient) EXPECT() *_MockRouteGuide_RouteChatClientRecorder { - return _m.recorder -} - -func (_m *MockRouteGuide_RouteChatClient) CloseSend() error { - ret := _m.ctrl.Call(_m, "CloseSend") - ret0, _ := ret[0].(error) - return ret0 -} - -func (_mr *_MockRouteGuide_RouteChatClientRecorder) CloseSend() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "CloseSend") -} - -func (_m *MockRouteGuide_RouteChatClient) Context() context.Context { - ret := _m.ctrl.Call(_m, "Context") - ret0, _ := ret[0].(context.Context) - return ret0 -} - -func (_mr *_MockRouteGuide_RouteChatClientRecorder) Context() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Context") -} - -func (_m *MockRouteGuide_RouteChatClient) Header() (metadata.MD, error) { - ret := _m.ctrl.Call(_m, "Header") - ret0, _ := ret[0].(metadata.MD) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -func (_mr *_MockRouteGuide_RouteChatClientRecorder) Header() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Header") -} - -func (_m *MockRouteGuide_RouteChatClient) Recv() (*routeguide.RouteNote, error) { - ret := _m.ctrl.Call(_m, "Recv") - ret0, _ := ret[0].(*routeguide.RouteNote) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -func (_mr *_MockRouteGuide_RouteChatClientRecorder) Recv() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Recv") -} - -func (_m *MockRouteGuide_RouteChatClient) RecvMsg(_param0 interface{}) error { - ret := _m.ctrl.Call(_m, "RecvMsg", _param0) - ret0, _ := ret[0].(error) - return ret0 -} - -func (_mr *_MockRouteGuide_RouteChatClientRecorder) RecvMsg(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "RecvMsg", arg0) -} - -func (_m *MockRouteGuide_RouteChatClient) Send(_param0 *routeguide.RouteNote) error { - ret := _m.ctrl.Call(_m, "Send", _param0) - ret0, _ := ret[0].(error) - return ret0 -} - -func (_mr *_MockRouteGuide_RouteChatClientRecorder) Send(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Send", arg0) -} - -func (_m *MockRouteGuide_RouteChatClient) SendMsg(_param0 interface{}) error { - ret := _m.ctrl.Call(_m, "SendMsg", _param0) - ret0, _ := ret[0].(error) - return ret0 -} - -func (_mr *_MockRouteGuide_RouteChatClientRecorder) SendMsg(arg0 interface{}) *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "SendMsg", arg0) -} - -func (_m *MockRouteGuide_RouteChatClient) Trailer() metadata.MD { - ret := _m.ctrl.Call(_m, "Trailer") - ret0, _ := ret[0].(metadata.MD) - return ret0 -} - -func (_mr *_MockRouteGuide_RouteChatClientRecorder) Trailer() *gomock.Call { - return _mr.mock.ctrl.RecordCall(_mr.mock, "Trailer") -} diff --git a/vendor/google.golang.org/grpc/examples/route_guide/mock_routeguide/rg_mock_test.go b/vendor/google.golang.org/grpc/examples/route_guide/mock_routeguide/rg_mock_test.go deleted file mode 100644 index d084bd6a..00000000 --- a/vendor/google.golang.org/grpc/examples/route_guide/mock_routeguide/rg_mock_test.go +++ /dev/null @@ -1,80 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package mock_routeguide_test - -import ( - "fmt" - "testing" - - "github.com/golang/mock/gomock" - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - rgmock "google.golang.org/grpc/examples/route_guide/mock_routeguide" - rgpb "google.golang.org/grpc/examples/route_guide/routeguide" -) - -var msg = &rgpb.RouteNote{ - Location: &rgpb.Point{Latitude: 17, Longitude: 29}, - Message: "Taxi-cab", -} - -func TestRouteChat(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - // Create mock for the stream returned by RouteChat - stream := rgmock.NewMockRouteGuide_RouteChatClient(ctrl) - // set expectation on sending. - stream.EXPECT().Send( - gomock.Any(), - ).Return(nil) - // Set expectation on receiving. - stream.EXPECT().Recv().Return(msg, nil) - stream.EXPECT().CloseSend().Return(nil) - // Create mock for the client interface. - rgclient := rgmock.NewMockRouteGuideClient(ctrl) - // Set expectation on RouteChat - rgclient.EXPECT().RouteChat( - gomock.Any(), - ).Return(stream, nil) - if err := testRouteChat(rgclient); err != nil { - t.Fatalf("Test failed: %v", err) - } -} - -func testRouteChat(client rgpb.RouteGuideClient) error { - stream, err := client.RouteChat(context.Background()) - if err != nil { - return err - } - if err := stream.Send(msg); err != nil { - return err - } - if err := stream.CloseSend(); err != nil { - return err - } - got, err := stream.Recv() - if err != nil { - return err - } - if !proto.Equal(got, msg) { - return fmt.Errorf("stream.Recv() = %v, want %v", got, msg) - } - return nil -} diff --git a/vendor/google.golang.org/grpc/examples/route_guide/routeguide/route_guide.pb.go b/vendor/google.golang.org/grpc/examples/route_guide/routeguide/route_guide.pb.go deleted file mode 100644 index cf7f3937..00000000 --- a/vendor/google.golang.org/grpc/examples/route_guide/routeguide/route_guide.pb.go +++ /dev/null @@ -1,543 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: route_guide.proto - -/* -Package routeguide is a generated protocol buffer package. - -It is generated from these files: - route_guide.proto - -It has these top-level messages: - Point - Rectangle - Feature - RouteNote - RouteSummary -*/ -package routeguide - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Points are represented as latitude-longitude pairs in the E7 representation -// (degrees multiplied by 10**7 and rounded to the nearest integer). -// Latitudes should be in the range +/- 90 degrees and longitude should be in -// the range +/- 180 degrees (inclusive). -type Point struct { - Latitude int32 `protobuf:"varint,1,opt,name=latitude" json:"latitude,omitempty"` - Longitude int32 `protobuf:"varint,2,opt,name=longitude" json:"longitude,omitempty"` -} - -func (m *Point) Reset() { *m = Point{} } -func (m *Point) String() string { return proto.CompactTextString(m) } -func (*Point) ProtoMessage() {} -func (*Point) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Point) GetLatitude() int32 { - if m != nil { - return m.Latitude - } - return 0 -} - -func (m *Point) GetLongitude() int32 { - if m != nil { - return m.Longitude - } - return 0 -} - -// A latitude-longitude rectangle, represented as two diagonally opposite -// points "lo" and "hi". -type Rectangle struct { - // One corner of the rectangle. - Lo *Point `protobuf:"bytes,1,opt,name=lo" json:"lo,omitempty"` - // The other corner of the rectangle. - Hi *Point `protobuf:"bytes,2,opt,name=hi" json:"hi,omitempty"` -} - -func (m *Rectangle) Reset() { *m = Rectangle{} } -func (m *Rectangle) String() string { return proto.CompactTextString(m) } -func (*Rectangle) ProtoMessage() {} -func (*Rectangle) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Rectangle) GetLo() *Point { - if m != nil { - return m.Lo - } - return nil -} - -func (m *Rectangle) GetHi() *Point { - if m != nil { - return m.Hi - } - return nil -} - -// A feature names something at a given point. -// -// If a feature could not be named, the name is empty. -type Feature struct { - // The name of the feature. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // The point where the feature is detected. - Location *Point `protobuf:"bytes,2,opt,name=location" json:"location,omitempty"` -} - -func (m *Feature) Reset() { *m = Feature{} } -func (m *Feature) String() string { return proto.CompactTextString(m) } -func (*Feature) ProtoMessage() {} -func (*Feature) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *Feature) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Feature) GetLocation() *Point { - if m != nil { - return m.Location - } - return nil -} - -// A RouteNote is a message sent while at a given point. -type RouteNote struct { - // The location from which the message is sent. - Location *Point `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"` - // The message to be sent. - Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` -} - -func (m *RouteNote) Reset() { *m = RouteNote{} } -func (m *RouteNote) String() string { return proto.CompactTextString(m) } -func (*RouteNote) ProtoMessage() {} -func (*RouteNote) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *RouteNote) GetLocation() *Point { - if m != nil { - return m.Location - } - return nil -} - -func (m *RouteNote) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -// A RouteSummary is received in response to a RecordRoute rpc. -// -// It contains the number of individual points received, the number of -// detected features, and the total distance covered as the cumulative sum of -// the distance between each point. -type RouteSummary struct { - // The number of points received. - PointCount int32 `protobuf:"varint,1,opt,name=point_count,json=pointCount" json:"point_count,omitempty"` - // The number of known features passed while traversing the route. - FeatureCount int32 `protobuf:"varint,2,opt,name=feature_count,json=featureCount" json:"feature_count,omitempty"` - // The distance covered in metres. - Distance int32 `protobuf:"varint,3,opt,name=distance" json:"distance,omitempty"` - // The duration of the traversal in seconds. - ElapsedTime int32 `protobuf:"varint,4,opt,name=elapsed_time,json=elapsedTime" json:"elapsed_time,omitempty"` -} - -func (m *RouteSummary) Reset() { *m = RouteSummary{} } -func (m *RouteSummary) String() string { return proto.CompactTextString(m) } -func (*RouteSummary) ProtoMessage() {} -func (*RouteSummary) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *RouteSummary) GetPointCount() int32 { - if m != nil { - return m.PointCount - } - return 0 -} - -func (m *RouteSummary) GetFeatureCount() int32 { - if m != nil { - return m.FeatureCount - } - return 0 -} - -func (m *RouteSummary) GetDistance() int32 { - if m != nil { - return m.Distance - } - return 0 -} - -func (m *RouteSummary) GetElapsedTime() int32 { - if m != nil { - return m.ElapsedTime - } - return 0 -} - -func init() { - proto.RegisterType((*Point)(nil), "routeguide.Point") - proto.RegisterType((*Rectangle)(nil), "routeguide.Rectangle") - proto.RegisterType((*Feature)(nil), "routeguide.Feature") - proto.RegisterType((*RouteNote)(nil), "routeguide.RouteNote") - proto.RegisterType((*RouteSummary)(nil), "routeguide.RouteSummary") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for RouteGuide service - -type RouteGuideClient interface { - // A simple RPC. - // - // Obtains the feature at a given position. - // - // A feature with an empty name is returned if there's no feature at the given - // position. - GetFeature(ctx context.Context, in *Point, opts ...grpc.CallOption) (*Feature, error) - // A server-to-client streaming RPC. - // - // Obtains the Features available within the given Rectangle. Results are - // streamed rather than returned at once (e.g. in a response message with a - // repeated field), as the rectangle may cover a large area and contain a - // huge number of features. - ListFeatures(ctx context.Context, in *Rectangle, opts ...grpc.CallOption) (RouteGuide_ListFeaturesClient, error) - // A client-to-server streaming RPC. - // - // Accepts a stream of Points on a route being traversed, returning a - // RouteSummary when traversal is completed. - RecordRoute(ctx context.Context, opts ...grpc.CallOption) (RouteGuide_RecordRouteClient, error) - // A Bidirectional streaming RPC. - // - // Accepts a stream of RouteNotes sent while a route is being traversed, - // while receiving other RouteNotes (e.g. from other users). - RouteChat(ctx context.Context, opts ...grpc.CallOption) (RouteGuide_RouteChatClient, error) -} - -type routeGuideClient struct { - cc *grpc.ClientConn -} - -func NewRouteGuideClient(cc *grpc.ClientConn) RouteGuideClient { - return &routeGuideClient{cc} -} - -func (c *routeGuideClient) GetFeature(ctx context.Context, in *Point, opts ...grpc.CallOption) (*Feature, error) { - out := new(Feature) - err := grpc.Invoke(ctx, "/routeguide.RouteGuide/GetFeature", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *routeGuideClient) ListFeatures(ctx context.Context, in *Rectangle, opts ...grpc.CallOption) (RouteGuide_ListFeaturesClient, error) { - stream, err := grpc.NewClientStream(ctx, &_RouteGuide_serviceDesc.Streams[0], c.cc, "/routeguide.RouteGuide/ListFeatures", opts...) - if err != nil { - return nil, err - } - x := &routeGuideListFeaturesClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type RouteGuide_ListFeaturesClient interface { - Recv() (*Feature, error) - grpc.ClientStream -} - -type routeGuideListFeaturesClient struct { - grpc.ClientStream -} - -func (x *routeGuideListFeaturesClient) Recv() (*Feature, error) { - m := new(Feature) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *routeGuideClient) RecordRoute(ctx context.Context, opts ...grpc.CallOption) (RouteGuide_RecordRouteClient, error) { - stream, err := grpc.NewClientStream(ctx, &_RouteGuide_serviceDesc.Streams[1], c.cc, "/routeguide.RouteGuide/RecordRoute", opts...) - if err != nil { - return nil, err - } - x := &routeGuideRecordRouteClient{stream} - return x, nil -} - -type RouteGuide_RecordRouteClient interface { - Send(*Point) error - CloseAndRecv() (*RouteSummary, error) - grpc.ClientStream -} - -type routeGuideRecordRouteClient struct { - grpc.ClientStream -} - -func (x *routeGuideRecordRouteClient) Send(m *Point) error { - return x.ClientStream.SendMsg(m) -} - -func (x *routeGuideRecordRouteClient) CloseAndRecv() (*RouteSummary, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(RouteSummary) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *routeGuideClient) RouteChat(ctx context.Context, opts ...grpc.CallOption) (RouteGuide_RouteChatClient, error) { - stream, err := grpc.NewClientStream(ctx, &_RouteGuide_serviceDesc.Streams[2], c.cc, "/routeguide.RouteGuide/RouteChat", opts...) - if err != nil { - return nil, err - } - x := &routeGuideRouteChatClient{stream} - return x, nil -} - -type RouteGuide_RouteChatClient interface { - Send(*RouteNote) error - Recv() (*RouteNote, error) - grpc.ClientStream -} - -type routeGuideRouteChatClient struct { - grpc.ClientStream -} - -func (x *routeGuideRouteChatClient) Send(m *RouteNote) error { - return x.ClientStream.SendMsg(m) -} - -func (x *routeGuideRouteChatClient) Recv() (*RouteNote, error) { - m := new(RouteNote) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for RouteGuide service - -type RouteGuideServer interface { - // A simple RPC. - // - // Obtains the feature at a given position. - // - // A feature with an empty name is returned if there's no feature at the given - // position. - GetFeature(context.Context, *Point) (*Feature, error) - // A server-to-client streaming RPC. - // - // Obtains the Features available within the given Rectangle. Results are - // streamed rather than returned at once (e.g. in a response message with a - // repeated field), as the rectangle may cover a large area and contain a - // huge number of features. - ListFeatures(*Rectangle, RouteGuide_ListFeaturesServer) error - // A client-to-server streaming RPC. - // - // Accepts a stream of Points on a route being traversed, returning a - // RouteSummary when traversal is completed. - RecordRoute(RouteGuide_RecordRouteServer) error - // A Bidirectional streaming RPC. - // - // Accepts a stream of RouteNotes sent while a route is being traversed, - // while receiving other RouteNotes (e.g. from other users). - RouteChat(RouteGuide_RouteChatServer) error -} - -func RegisterRouteGuideServer(s *grpc.Server, srv RouteGuideServer) { - s.RegisterService(&_RouteGuide_serviceDesc, srv) -} - -func _RouteGuide_GetFeature_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Point) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RouteGuideServer).GetFeature(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/routeguide.RouteGuide/GetFeature", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RouteGuideServer).GetFeature(ctx, req.(*Point)) - } - return interceptor(ctx, in, info, handler) -} - -func _RouteGuide_ListFeatures_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(Rectangle) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(RouteGuideServer).ListFeatures(m, &routeGuideListFeaturesServer{stream}) -} - -type RouteGuide_ListFeaturesServer interface { - Send(*Feature) error - grpc.ServerStream -} - -type routeGuideListFeaturesServer struct { - grpc.ServerStream -} - -func (x *routeGuideListFeaturesServer) Send(m *Feature) error { - return x.ServerStream.SendMsg(m) -} - -func _RouteGuide_RecordRoute_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RouteGuideServer).RecordRoute(&routeGuideRecordRouteServer{stream}) -} - -type RouteGuide_RecordRouteServer interface { - SendAndClose(*RouteSummary) error - Recv() (*Point, error) - grpc.ServerStream -} - -type routeGuideRecordRouteServer struct { - grpc.ServerStream -} - -func (x *routeGuideRecordRouteServer) SendAndClose(m *RouteSummary) error { - return x.ServerStream.SendMsg(m) -} - -func (x *routeGuideRecordRouteServer) Recv() (*Point, error) { - m := new(Point) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _RouteGuide_RouteChat_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RouteGuideServer).RouteChat(&routeGuideRouteChatServer{stream}) -} - -type RouteGuide_RouteChatServer interface { - Send(*RouteNote) error - Recv() (*RouteNote, error) - grpc.ServerStream -} - -type routeGuideRouteChatServer struct { - grpc.ServerStream -} - -func (x *routeGuideRouteChatServer) Send(m *RouteNote) error { - return x.ServerStream.SendMsg(m) -} - -func (x *routeGuideRouteChatServer) Recv() (*RouteNote, error) { - m := new(RouteNote) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _RouteGuide_serviceDesc = grpc.ServiceDesc{ - ServiceName: "routeguide.RouteGuide", - HandlerType: (*RouteGuideServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetFeature", - Handler: _RouteGuide_GetFeature_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "ListFeatures", - Handler: _RouteGuide_ListFeatures_Handler, - ServerStreams: true, - }, - { - StreamName: "RecordRoute", - Handler: _RouteGuide_RecordRoute_Handler, - ClientStreams: true, - }, - { - StreamName: "RouteChat", - Handler: _RouteGuide_RouteChat_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "route_guide.proto", -} - -func init() { proto.RegisterFile("route_guide.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 404 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0xdd, 0xca, 0xd3, 0x40, - 0x10, 0xfd, 0x36, 0x7e, 0x9f, 0x6d, 0x26, 0x11, 0xe9, 0x88, 0x10, 0xa2, 0xa0, 0x8d, 0x37, 0xbd, - 0x31, 0x94, 0x0a, 0x5e, 0x56, 0x6c, 0xc1, 0xde, 0x14, 0xa9, 0xb1, 0xf7, 0x65, 0x4d, 0xc6, 0x74, - 0x61, 0x93, 0x0d, 0xc9, 0x06, 0xf4, 0x01, 0x7c, 0x02, 0x5f, 0x58, 0xb2, 0x49, 0xda, 0x54, 0x5b, - 0xbc, 0xdb, 0x39, 0x73, 0xce, 0xfc, 0x9c, 0x61, 0x61, 0x52, 0xaa, 0x5a, 0xd3, 0x21, 0xad, 0x45, - 0x42, 0x61, 0x51, 0x2a, 0xad, 0x10, 0x0c, 0x64, 0x90, 0xe0, 0x23, 0x3c, 0xec, 0x94, 0xc8, 0x35, - 0xfa, 0x30, 0x96, 0x5c, 0x0b, 0x5d, 0x27, 0xe4, 0xb1, 0xd7, 0x6c, 0xf6, 0x10, 0x9d, 0x62, 0x7c, - 0x09, 0xb6, 0x54, 0x79, 0xda, 0x26, 0x2d, 0x93, 0x3c, 0x03, 0xc1, 0x17, 0xb0, 0x23, 0x8a, 0x35, - 0xcf, 0x53, 0x49, 0x38, 0x05, 0x4b, 0x2a, 0x53, 0xc0, 0x59, 0x4c, 0xc2, 0x73, 0xa3, 0xd0, 0x74, - 0x89, 0x2c, 0xa9, 0x1a, 0xca, 0x51, 0x98, 0x32, 0xd7, 0x29, 0x47, 0x11, 0x6c, 0x61, 0xf4, 0x89, - 0xb8, 0xae, 0x4b, 0x42, 0x84, 0xfb, 0x9c, 0x67, 0xed, 0x4c, 0x76, 0x64, 0xde, 0xf8, 0x16, 0xc6, - 0x52, 0xc5, 0x5c, 0x0b, 0x95, 0xdf, 0xae, 0x73, 0xa2, 0x04, 0x7b, 0xb0, 0xa3, 0x26, 0xfb, 0x59, - 0xe9, 0x4b, 0x2d, 0xfb, 0xaf, 0x16, 0x3d, 0x18, 0x65, 0x54, 0x55, 0x3c, 0x6d, 0x17, 0xb7, 0xa3, - 0x3e, 0x0c, 0x7e, 0x33, 0x70, 0x4d, 0xd9, 0xaf, 0x75, 0x96, 0xf1, 0xf2, 0x27, 0xbe, 0x02, 0xa7, - 0x68, 0xd4, 0x87, 0x58, 0xd5, 0xb9, 0xee, 0x4c, 0x04, 0x03, 0xad, 0x1b, 0x04, 0xdf, 0xc0, 0x93, - 0xef, 0xed, 0x56, 0x1d, 0xa5, 0xb5, 0xd2, 0xed, 0xc0, 0x96, 0xe4, 0xc3, 0x38, 0x11, 0x95, 0xe6, - 0x79, 0x4c, 0xde, 0xa3, 0xf6, 0x0e, 0x7d, 0x8c, 0x53, 0x70, 0x49, 0xf2, 0xa2, 0xa2, 0xe4, 0xa0, - 0x45, 0x46, 0xde, 0xbd, 0xc9, 0x3b, 0x1d, 0xb6, 0x17, 0x19, 0x2d, 0x7e, 0x59, 0x00, 0x66, 0xaa, - 0x4d, 0xb3, 0x0e, 0xbe, 0x07, 0xd8, 0x90, 0xee, 0xbd, 0xfc, 0x77, 0x53, 0xff, 0xd9, 0x10, 0xea, - 0x78, 0xc1, 0x1d, 0x2e, 0xc1, 0xdd, 0x8a, 0xaa, 0x17, 0x56, 0xf8, 0x7c, 0x48, 0x3b, 0x5d, 0xfb, - 0x86, 0x7a, 0xce, 0x70, 0x09, 0x4e, 0x44, 0xb1, 0x2a, 0x13, 0x33, 0xcb, 0xb5, 0xc6, 0xde, 0x45, - 0xc5, 0x81, 0x8f, 0xc1, 0xdd, 0x8c, 0xe1, 0x87, 0xee, 0x64, 0xeb, 0x23, 0xd7, 0x7f, 0x35, 0xef, - 0x2f, 0xe9, 0x5f, 0x87, 0x1b, 0xf9, 0x9c, 0xad, 0xe6, 0xf0, 0x42, 0xa8, 0x30, 0x2d, 0x8b, 0x38, - 0xa4, 0x1f, 0x3c, 0x2b, 0x24, 0x55, 0x03, 0xfa, 0xea, 0xe9, 0xd9, 0xa3, 0x5d, 0xf3, 0x27, 0x76, - 0xec, 0xdb, 0x63, 0xf3, 0x39, 0xde, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0xc8, 0xe4, 0xef, 0xe6, - 0x31, 0x03, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/examples/route_guide/routeguide/route_guide.proto b/vendor/google.golang.org/grpc/examples/route_guide/routeguide/route_guide.proto deleted file mode 100644 index fe21e437..00000000 --- a/vendor/google.golang.org/grpc/examples/route_guide/routeguide/route_guide.proto +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2015 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -option java_multiple_files = true; -option java_package = "io.grpc.examples.routeguide"; -option java_outer_classname = "RouteGuideProto"; - -package routeguide; - -// Interface exported by the server. -service RouteGuide { - // A simple RPC. - // - // Obtains the feature at a given position. - // - // A feature with an empty name is returned if there's no feature at the given - // position. - rpc GetFeature(Point) returns (Feature) {} - - // A server-to-client streaming RPC. - // - // Obtains the Features available within the given Rectangle. Results are - // streamed rather than returned at once (e.g. in a response message with a - // repeated field), as the rectangle may cover a large area and contain a - // huge number of features. - rpc ListFeatures(Rectangle) returns (stream Feature) {} - - // A client-to-server streaming RPC. - // - // Accepts a stream of Points on a route being traversed, returning a - // RouteSummary when traversal is completed. - rpc RecordRoute(stream Point) returns (RouteSummary) {} - - // A Bidirectional streaming RPC. - // - // Accepts a stream of RouteNotes sent while a route is being traversed, - // while receiving other RouteNotes (e.g. from other users). - rpc RouteChat(stream RouteNote) returns (stream RouteNote) {} -} - -// Points are represented as latitude-longitude pairs in the E7 representation -// (degrees multiplied by 10**7 and rounded to the nearest integer). -// Latitudes should be in the range +/- 90 degrees and longitude should be in -// the range +/- 180 degrees (inclusive). -message Point { - int32 latitude = 1; - int32 longitude = 2; -} - -// A latitude-longitude rectangle, represented as two diagonally opposite -// points "lo" and "hi". -message Rectangle { - // One corner of the rectangle. - Point lo = 1; - - // The other corner of the rectangle. - Point hi = 2; -} - -// A feature names something at a given point. -// -// If a feature could not be named, the name is empty. -message Feature { - // The name of the feature. - string name = 1; - - // The point where the feature is detected. - Point location = 2; -} - -// A RouteNote is a message sent while at a given point. -message RouteNote { - // The location from which the message is sent. - Point location = 1; - - // The message to be sent. - string message = 2; -} - -// A RouteSummary is received in response to a RecordRoute rpc. -// -// It contains the number of individual points received, the number of -// detected features, and the total distance covered as the cumulative sum of -// the distance between each point. -message RouteSummary { - // The number of points received. - int32 point_count = 1; - - // The number of known features passed while traversing the route. - int32 feature_count = 2; - - // The distance covered in metres. - int32 distance = 3; - - // The duration of the traversal in seconds. - int32 elapsed_time = 4; -} diff --git a/vendor/google.golang.org/grpc/examples/route_guide/server/server.go b/vendor/google.golang.org/grpc/examples/route_guide/server/server.go deleted file mode 100644 index cb452d21..00000000 --- a/vendor/google.golang.org/grpc/examples/route_guide/server/server.go +++ /dev/null @@ -1,240 +0,0 @@ -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc -I ../routeguide --go_out=plugins=grpc:../routeguide ../routeguide/route_guide.proto - -// Package main implements a simple gRPC server that demonstrates how to use gRPC-Go libraries -// to perform unary, client streaming, server streaming and full duplex RPCs. -// -// It implements the route guide service whose definition can be found in routeguide/route_guide.proto. -package main - -import ( - "encoding/json" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "math" - "net" - "sync" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - - "google.golang.org/grpc/credentials" - "google.golang.org/grpc/testdata" - - "github.com/golang/protobuf/proto" - - pb "google.golang.org/grpc/examples/route_guide/routeguide" -) - -var ( - tls = flag.Bool("tls", false, "Connection uses TLS if true, else plain TCP") - certFile = flag.String("cert_file", "", "The TLS cert file") - keyFile = flag.String("key_file", "", "The TLS key file") - jsonDBFile = flag.String("json_db_file", "testdata/route_guide_db.json", "A json file containing a list of features") - port = flag.Int("port", 10000, "The server port") -) - -type routeGuideServer struct { - savedFeatures []*pb.Feature // read-only after initialized - - mu sync.Mutex // protects routeNotes - routeNotes map[string][]*pb.RouteNote -} - -// GetFeature returns the feature at the given point. -func (s *routeGuideServer) GetFeature(ctx context.Context, point *pb.Point) (*pb.Feature, error) { - for _, feature := range s.savedFeatures { - if proto.Equal(feature.Location, point) { - return feature, nil - } - } - // No feature was found, return an unnamed feature - return &pb.Feature{Location: point}, nil -} - -// ListFeatures lists all features contained within the given bounding Rectangle. -func (s *routeGuideServer) ListFeatures(rect *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error { - for _, feature := range s.savedFeatures { - if inRange(feature.Location, rect) { - if err := stream.Send(feature); err != nil { - return err - } - } - } - return nil -} - -// RecordRoute records a route composited of a sequence of points. -// -// It gets a stream of points, and responds with statistics about the "trip": -// number of points, number of known features visited, total distance traveled, and -// total time spent. -func (s *routeGuideServer) RecordRoute(stream pb.RouteGuide_RecordRouteServer) error { - var pointCount, featureCount, distance int32 - var lastPoint *pb.Point - startTime := time.Now() - for { - point, err := stream.Recv() - if err == io.EOF { - endTime := time.Now() - return stream.SendAndClose(&pb.RouteSummary{ - PointCount: pointCount, - FeatureCount: featureCount, - Distance: distance, - ElapsedTime: int32(endTime.Sub(startTime).Seconds()), - }) - } - if err != nil { - return err - } - pointCount++ - for _, feature := range s.savedFeatures { - if proto.Equal(feature.Location, point) { - featureCount++ - } - } - if lastPoint != nil { - distance += calcDistance(lastPoint, point) - } - lastPoint = point - } -} - -// RouteChat receives a stream of message/location pairs, and responds with a stream of all -// previous messages at each of those locations. -func (s *routeGuideServer) RouteChat(stream pb.RouteGuide_RouteChatServer) error { - for { - in, err := stream.Recv() - if err == io.EOF { - return nil - } - if err != nil { - return err - } - key := serialize(in.Location) - - s.mu.Lock() - s.routeNotes[key] = append(s.routeNotes[key], in) - // Note: this copy prevents blocking other clients while serving this one. - // We don't need to do a deep copy, because elements in the slice are - // insert-only and never modified. - rn := make([]*pb.RouteNote, len(s.routeNotes[key])) - copy(rn, s.routeNotes[key]) - s.mu.Unlock() - - for _, note := range rn { - if err := stream.Send(note); err != nil { - return err - } - } - } -} - -// loadFeatures loads features from a JSON file. -func (s *routeGuideServer) loadFeatures(filePath string) { - file, err := ioutil.ReadFile(filePath) - if err != nil { - log.Fatalf("Failed to load default features: %v", err) - } - if err := json.Unmarshal(file, &s.savedFeatures); err != nil { - log.Fatalf("Failed to load default features: %v", err) - } -} - -func toRadians(num float64) float64 { - return num * math.Pi / float64(180) -} - -// calcDistance calculates the distance between two points using the "haversine" formula. -// This code was taken from http://www.movable-type.co.uk/scripts/latlong.html. -func calcDistance(p1 *pb.Point, p2 *pb.Point) int32 { - const CordFactor float64 = 1e7 - const R float64 = float64(6371000) // metres - lat1 := float64(p1.Latitude) / CordFactor - lat2 := float64(p2.Latitude) / CordFactor - lng1 := float64(p1.Longitude) / CordFactor - lng2 := float64(p2.Longitude) / CordFactor - φ1 := toRadians(lat1) - φ2 := toRadians(lat2) - Δφ := toRadians(lat2 - lat1) - Δλ := toRadians(lng2 - lng1) - - a := math.Sin(Δφ/2)*math.Sin(Δφ/2) + - math.Cos(φ1)*math.Cos(φ2)* - math.Sin(Δλ/2)*math.Sin(Δλ/2) - c := 2 * math.Atan2(math.Sqrt(a), math.Sqrt(1-a)) - - distance := R * c - return int32(distance) -} - -func inRange(point *pb.Point, rect *pb.Rectangle) bool { - left := math.Min(float64(rect.Lo.Longitude), float64(rect.Hi.Longitude)) - right := math.Max(float64(rect.Lo.Longitude), float64(rect.Hi.Longitude)) - top := math.Max(float64(rect.Lo.Latitude), float64(rect.Hi.Latitude)) - bottom := math.Min(float64(rect.Lo.Latitude), float64(rect.Hi.Latitude)) - - if float64(point.Longitude) >= left && - float64(point.Longitude) <= right && - float64(point.Latitude) >= bottom && - float64(point.Latitude) <= top { - return true - } - return false -} - -func serialize(point *pb.Point) string { - return fmt.Sprintf("%d %d", point.Latitude, point.Longitude) -} - -func newServer() *routeGuideServer { - s := &routeGuideServer{routeNotes: make(map[string][]*pb.RouteNote)} - s.loadFeatures(*jsonDBFile) - return s -} - -func main() { - flag.Parse() - lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", *port)) - if err != nil { - log.Fatalf("failed to listen: %v", err) - } - var opts []grpc.ServerOption - if *tls { - if *certFile == "" { - *certFile = testdata.Path("server1.pem") - } - if *keyFile == "" { - *keyFile = testdata.Path("server1.key") - } - creds, err := credentials.NewServerTLSFromFile(*certFile, *keyFile) - if err != nil { - log.Fatalf("Failed to generate credentials %v", err) - } - opts = []grpc.ServerOption{grpc.Creds(creds)} - } - grpcServer := grpc.NewServer(opts...) - pb.RegisterRouteGuideServer(grpcServer, newServer()) - grpcServer.Serve(lis) -} diff --git a/vendor/google.golang.org/grpc/examples/route_guide/testdata/route_guide_db.json b/vendor/google.golang.org/grpc/examples/route_guide/testdata/route_guide_db.json deleted file mode 100644 index 9d6a980a..00000000 --- a/vendor/google.golang.org/grpc/examples/route_guide/testdata/route_guide_db.json +++ /dev/null @@ -1,601 +0,0 @@ -[{ - "location": { - "latitude": 407838351, - "longitude": -746143763 - }, - "name": "Patriots Path, Mendham, NJ 07945, USA" -}, { - "location": { - "latitude": 408122808, - "longitude": -743999179 - }, - "name": "101 New Jersey 10, Whippany, NJ 07981, USA" -}, { - "location": { - "latitude": 413628156, - "longitude": -749015468 - }, - "name": "U.S. 6, Shohola, PA 18458, USA" -}, { - "location": { - "latitude": 419999544, - "longitude": -740371136 - }, - "name": "5 Conners Road, Kingston, NY 12401, USA" -}, { - "location": { - "latitude": 414008389, - "longitude": -743951297 - }, - "name": "Mid Hudson Psychiatric Center, New Hampton, NY 10958, USA" -}, { - "location": { - "latitude": 419611318, - "longitude": -746524769 - }, - "name": "287 Flugertown Road, Livingston Manor, NY 12758, USA" -}, { - "location": { - "latitude": 406109563, - "longitude": -742186778 - }, - "name": "4001 Tremley Point Road, Linden, NJ 07036, USA" -}, { - "location": { - "latitude": 416802456, - "longitude": -742370183 - }, - "name": "352 South Mountain Road, Wallkill, NY 12589, USA" -}, { - "location": { - "latitude": 412950425, - "longitude": -741077389 - }, - "name": "Bailey Turn Road, Harriman, NY 10926, USA" -}, { - "location": { - "latitude": 412144655, - "longitude": -743949739 - }, - "name": "193-199 Wawayanda Road, Hewitt, NJ 07421, USA" -}, { - "location": { - "latitude": 415736605, - "longitude": -742847522 - }, - "name": "406-496 Ward Avenue, Pine Bush, NY 12566, USA" -}, { - "location": { - "latitude": 413843930, - "longitude": -740501726 - }, - "name": "162 Merrill Road, Highland Mills, NY 10930, USA" -}, { - "location": { - "latitude": 410873075, - "longitude": -744459023 - }, - "name": "Clinton Road, West Milford, NJ 07480, USA" -}, { - "location": { - "latitude": 412346009, - "longitude": -744026814 - }, - "name": "16 Old Brook Lane, Warwick, NY 10990, USA" -}, { - "location": { - "latitude": 402948455, - "longitude": -747903913 - }, - "name": "3 Drake Lane, Pennington, NJ 08534, USA" -}, { - "location": { - "latitude": 406337092, - "longitude": -740122226 - }, - "name": "6324 8th Avenue, Brooklyn, NY 11220, USA" -}, { - "location": { - "latitude": 406421967, - "longitude": -747727624 - }, - "name": "1 Merck Access Road, Whitehouse Station, NJ 08889, USA" -}, { - "location": { - "latitude": 416318082, - "longitude": -749677716 - }, - "name": "78-98 Schalck Road, Narrowsburg, NY 12764, USA" -}, { - "location": { - "latitude": 415301720, - "longitude": -748416257 - }, - "name": "282 Lakeview Drive Road, Highland Lake, NY 12743, USA" -}, { - "location": { - "latitude": 402647019, - "longitude": -747071791 - }, - "name": "330 Evelyn Avenue, Hamilton Township, NJ 08619, USA" -}, { - "location": { - "latitude": 412567807, - "longitude": -741058078 - }, - "name": "New York State Reference Route 987E, Southfields, NY 10975, USA" -}, { - "location": { - "latitude": 416855156, - "longitude": -744420597 - }, - "name": "103-271 Tempaloni Road, Ellenville, NY 12428, USA" -}, { - "location": { - "latitude": 404663628, - "longitude": -744820157 - }, - "name": "1300 Airport Road, North Brunswick Township, NJ 08902, USA" -}, { - "location": { - "latitude": 407113723, - "longitude": -749746483 - }, - "name": "" -}, { - "location": { - "latitude": 402133926, - "longitude": -743613249 - }, - "name": "" -}, { - "location": { - "latitude": 400273442, - "longitude": -741220915 - }, - "name": "" -}, { - "location": { - "latitude": 411236786, - "longitude": -744070769 - }, - "name": "" -}, { - "location": { - "latitude": 411633782, - "longitude": -746784970 - }, - "name": "211-225 Plains Road, Augusta, NJ 07822, USA" -}, { - "location": { - "latitude": 415830701, - "longitude": -742952812 - }, - "name": "" -}, { - "location": { - "latitude": 413447164, - "longitude": -748712898 - }, - "name": "165 Pedersen Ridge Road, Milford, PA 18337, USA" -}, { - "location": { - "latitude": 405047245, - "longitude": -749800722 - }, - "name": "100-122 Locktown Road, Frenchtown, NJ 08825, USA" -}, { - "location": { - "latitude": 418858923, - "longitude": -746156790 - }, - "name": "" -}, { - "location": { - "latitude": 417951888, - "longitude": -748484944 - }, - "name": "650-652 Willi Hill Road, Swan Lake, NY 12783, USA" -}, { - "location": { - "latitude": 407033786, - "longitude": -743977337 - }, - "name": "26 East 3rd Street, New Providence, NJ 07974, USA" -}, { - "location": { - "latitude": 417548014, - "longitude": -740075041 - }, - "name": "" -}, { - "location": { - "latitude": 410395868, - "longitude": -744972325 - }, - "name": "" -}, { - "location": { - "latitude": 404615353, - "longitude": -745129803 - }, - "name": "" -}, { - "location": { - "latitude": 406589790, - "longitude": -743560121 - }, - "name": "611 Lawrence Avenue, Westfield, NJ 07090, USA" -}, { - "location": { - "latitude": 414653148, - "longitude": -740477477 - }, - "name": "18 Lannis Avenue, New Windsor, NY 12553, USA" -}, { - "location": { - "latitude": 405957808, - "longitude": -743255336 - }, - "name": "82-104 Amherst Avenue, Colonia, NJ 07067, USA" -}, { - "location": { - "latitude": 411733589, - "longitude": -741648093 - }, - "name": "170 Seven Lakes Drive, Sloatsburg, NY 10974, USA" -}, { - "location": { - "latitude": 412676291, - "longitude": -742606606 - }, - "name": "1270 Lakes Road, Monroe, NY 10950, USA" -}, { - "location": { - "latitude": 409224445, - "longitude": -748286738 - }, - "name": "509-535 Alphano Road, Great Meadows, NJ 07838, USA" -}, { - "location": { - "latitude": 406523420, - "longitude": -742135517 - }, - "name": "652 Garden Street, Elizabeth, NJ 07202, USA" -}, { - "location": { - "latitude": 401827388, - "longitude": -740294537 - }, - "name": "349 Sea Spray Court, Neptune City, NJ 07753, USA" -}, { - "location": { - "latitude": 410564152, - "longitude": -743685054 - }, - "name": "13-17 Stanley Street, West Milford, NJ 07480, USA" -}, { - "location": { - "latitude": 408472324, - "longitude": -740726046 - }, - "name": "47 Industrial Avenue, Teterboro, NJ 07608, USA" -}, { - "location": { - "latitude": 412452168, - "longitude": -740214052 - }, - "name": "5 White Oak Lane, Stony Point, NY 10980, USA" -}, { - "location": { - "latitude": 409146138, - "longitude": -746188906 - }, - "name": "Berkshire Valley Management Area Trail, Jefferson, NJ, USA" -}, { - "location": { - "latitude": 404701380, - "longitude": -744781745 - }, - "name": "1007 Jersey Avenue, New Brunswick, NJ 08901, USA" -}, { - "location": { - "latitude": 409642566, - "longitude": -746017679 - }, - "name": "6 East Emerald Isle Drive, Lake Hopatcong, NJ 07849, USA" -}, { - "location": { - "latitude": 408031728, - "longitude": -748645385 - }, - "name": "1358-1474 New Jersey 57, Port Murray, NJ 07865, USA" -}, { - "location": { - "latitude": 413700272, - "longitude": -742135189 - }, - "name": "367 Prospect Road, Chester, NY 10918, USA" -}, { - "location": { - "latitude": 404310607, - "longitude": -740282632 - }, - "name": "10 Simon Lake Drive, Atlantic Highlands, NJ 07716, USA" -}, { - "location": { - "latitude": 409319800, - "longitude": -746201391 - }, - "name": "11 Ward Street, Mount Arlington, NJ 07856, USA" -}, { - "location": { - "latitude": 406685311, - "longitude": -742108603 - }, - "name": "300-398 Jefferson Avenue, Elizabeth, NJ 07201, USA" -}, { - "location": { - "latitude": 419018117, - "longitude": -749142781 - }, - "name": "43 Dreher Road, Roscoe, NY 12776, USA" -}, { - "location": { - "latitude": 412856162, - "longitude": -745148837 - }, - "name": "Swan Street, Pine Island, NY 10969, USA" -}, { - "location": { - "latitude": 416560744, - "longitude": -746721964 - }, - "name": "66 Pleasantview Avenue, Monticello, NY 12701, USA" -}, { - "location": { - "latitude": 405314270, - "longitude": -749836354 - }, - "name": "" -}, { - "location": { - "latitude": 414219548, - "longitude": -743327440 - }, - "name": "" -}, { - "location": { - "latitude": 415534177, - "longitude": -742900616 - }, - "name": "565 Winding Hills Road, Montgomery, NY 12549, USA" -}, { - "location": { - "latitude": 406898530, - "longitude": -749127080 - }, - "name": "231 Rocky Run Road, Glen Gardner, NJ 08826, USA" -}, { - "location": { - "latitude": 407586880, - "longitude": -741670168 - }, - "name": "100 Mount Pleasant Avenue, Newark, NJ 07104, USA" -}, { - "location": { - "latitude": 400106455, - "longitude": -742870190 - }, - "name": "517-521 Huntington Drive, Manchester Township, NJ 08759, USA" -}, { - "location": { - "latitude": 400066188, - "longitude": -746793294 - }, - "name": "" -}, { - "location": { - "latitude": 418803880, - "longitude": -744102673 - }, - "name": "40 Mountain Road, Napanoch, NY 12458, USA" -}, { - "location": { - "latitude": 414204288, - "longitude": -747895140 - }, - "name": "" -}, { - "location": { - "latitude": 414777405, - "longitude": -740615601 - }, - "name": "" -}, { - "location": { - "latitude": 415464475, - "longitude": -747175374 - }, - "name": "48 North Road, Forestburgh, NY 12777, USA" -}, { - "location": { - "latitude": 404062378, - "longitude": -746376177 - }, - "name": "" -}, { - "location": { - "latitude": 405688272, - "longitude": -749285130 - }, - "name": "" -}, { - "location": { - "latitude": 400342070, - "longitude": -748788996 - }, - "name": "" -}, { - "location": { - "latitude": 401809022, - "longitude": -744157964 - }, - "name": "" -}, { - "location": { - "latitude": 404226644, - "longitude": -740517141 - }, - "name": "9 Thompson Avenue, Leonardo, NJ 07737, USA" -}, { - "location": { - "latitude": 410322033, - "longitude": -747871659 - }, - "name": "" -}, { - "location": { - "latitude": 407100674, - "longitude": -747742727 - }, - "name": "" -}, { - "location": { - "latitude": 418811433, - "longitude": -741718005 - }, - "name": "213 Bush Road, Stone Ridge, NY 12484, USA" -}, { - "location": { - "latitude": 415034302, - "longitude": -743850945 - }, - "name": "" -}, { - "location": { - "latitude": 411349992, - "longitude": -743694161 - }, - "name": "" -}, { - "location": { - "latitude": 404839914, - "longitude": -744759616 - }, - "name": "1-17 Bergen Court, New Brunswick, NJ 08901, USA" -}, { - "location": { - "latitude": 414638017, - "longitude": -745957854 - }, - "name": "35 Oakland Valley Road, Cuddebackville, NY 12729, USA" -}, { - "location": { - "latitude": 412127800, - "longitude": -740173578 - }, - "name": "" -}, { - "location": { - "latitude": 401263460, - "longitude": -747964303 - }, - "name": "" -}, { - "location": { - "latitude": 412843391, - "longitude": -749086026 - }, - "name": "" -}, { - "location": { - "latitude": 418512773, - "longitude": -743067823 - }, - "name": "" -}, { - "location": { - "latitude": 404318328, - "longitude": -740835638 - }, - "name": "42-102 Main Street, Belford, NJ 07718, USA" -}, { - "location": { - "latitude": 419020746, - "longitude": -741172328 - }, - "name": "" -}, { - "location": { - "latitude": 404080723, - "longitude": -746119569 - }, - "name": "" -}, { - "location": { - "latitude": 401012643, - "longitude": -744035134 - }, - "name": "" -}, { - "location": { - "latitude": 404306372, - "longitude": -741079661 - }, - "name": "" -}, { - "location": { - "latitude": 403966326, - "longitude": -748519297 - }, - "name": "" -}, { - "location": { - "latitude": 405002031, - "longitude": -748407866 - }, - "name": "" -}, { - "location": { - "latitude": 409532885, - "longitude": -742200683 - }, - "name": "" -}, { - "location": { - "latitude": 416851321, - "longitude": -742674555 - }, - "name": "" -}, { - "location": { - "latitude": 406411633, - "longitude": -741722051 - }, - "name": "3387 Richmond Terrace, Staten Island, NY 10303, USA" -}, { - "location": { - "latitude": 413069058, - "longitude": -744597778 - }, - "name": "261 Van Sickle Road, Goshen, NY 10924, USA" -}, { - "location": { - "latitude": 418465462, - "longitude": -746859398 - }, - "name": "" -}, { - "location": { - "latitude": 411733222, - "longitude": -744228360 - }, - "name": "" -}, { - "location": { - "latitude": 410248224, - "longitude": -747127767 - }, - "name": "3 Hasta Way, Newton, NJ 07860, USA" -}] diff --git a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/service/service.pb.go b/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/service/service.pb.go deleted file mode 100644 index ebcbe56d..00000000 --- a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/service/service.pb.go +++ /dev/null @@ -1,154 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: grpc_lb_v1/service/service.proto - -/* -Package service is a generated protocol buffer package. - -It is generated from these files: - grpc_lb_v1/service/service.proto - -It has these top-level messages: -*/ -package service - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" -import grpc_lb_v1 "google.golang.org/grpc/grpclb/grpc_lb_v1/messages" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for LoadBalancer service - -type LoadBalancerClient interface { - // Bidirectional rpc to get a list of servers. - BalanceLoad(ctx context.Context, opts ...grpc.CallOption) (LoadBalancer_BalanceLoadClient, error) -} - -type loadBalancerClient struct { - cc *grpc.ClientConn -} - -func NewLoadBalancerClient(cc *grpc.ClientConn) LoadBalancerClient { - return &loadBalancerClient{cc} -} - -func (c *loadBalancerClient) BalanceLoad(ctx context.Context, opts ...grpc.CallOption) (LoadBalancer_BalanceLoadClient, error) { - stream, err := grpc.NewClientStream(ctx, &_LoadBalancer_serviceDesc.Streams[0], c.cc, "/grpc.lb.v1.LoadBalancer/BalanceLoad", opts...) - if err != nil { - return nil, err - } - x := &loadBalancerBalanceLoadClient{stream} - return x, nil -} - -type LoadBalancer_BalanceLoadClient interface { - Send(*grpc_lb_v1.LoadBalanceRequest) error - Recv() (*grpc_lb_v1.LoadBalanceResponse, error) - grpc.ClientStream -} - -type loadBalancerBalanceLoadClient struct { - grpc.ClientStream -} - -func (x *loadBalancerBalanceLoadClient) Send(m *grpc_lb_v1.LoadBalanceRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *loadBalancerBalanceLoadClient) Recv() (*grpc_lb_v1.LoadBalanceResponse, error) { - m := new(grpc_lb_v1.LoadBalanceResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for LoadBalancer service - -type LoadBalancerServer interface { - // Bidirectional rpc to get a list of servers. - BalanceLoad(LoadBalancer_BalanceLoadServer) error -} - -func RegisterLoadBalancerServer(s *grpc.Server, srv LoadBalancerServer) { - s.RegisterService(&_LoadBalancer_serviceDesc, srv) -} - -func _LoadBalancer_BalanceLoad_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(LoadBalancerServer).BalanceLoad(&loadBalancerBalanceLoadServer{stream}) -} - -type LoadBalancer_BalanceLoadServer interface { - Send(*grpc_lb_v1.LoadBalanceResponse) error - Recv() (*grpc_lb_v1.LoadBalanceRequest, error) - grpc.ServerStream -} - -type loadBalancerBalanceLoadServer struct { - grpc.ServerStream -} - -func (x *loadBalancerBalanceLoadServer) Send(m *grpc_lb_v1.LoadBalanceResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *loadBalancerBalanceLoadServer) Recv() (*grpc_lb_v1.LoadBalanceRequest, error) { - m := new(grpc_lb_v1.LoadBalanceRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _LoadBalancer_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.lb.v1.LoadBalancer", - HandlerType: (*LoadBalancerServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "BalanceLoad", - Handler: _LoadBalancer_BalanceLoad_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "grpc_lb_v1/service/service.proto", -} - -func init() { proto.RegisterFile("grpc_lb_v1/service/service.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 142 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0x2f, 0x2a, 0x48, - 0x8e, 0xcf, 0x49, 0x8a, 0x2f, 0x33, 0xd4, 0x2f, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0x85, 0xd1, - 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x5c, 0x20, 0x15, 0x7a, 0x39, 0x49, 0x7a, 0x65, 0x86, - 0x52, 0x4a, 0x48, 0xaa, 0x73, 0x53, 0x8b, 0x8b, 0x13, 0xd3, 0x53, 0x8b, 0xe1, 0x0c, 0x88, 0x7a, - 0xa3, 0x24, 0x2e, 0x1e, 0x9f, 0xfc, 0xc4, 0x14, 0xa7, 0xc4, 0x9c, 0xc4, 0xbc, 0xe4, 0xd4, 0x22, - 0xa1, 0x20, 0x2e, 0x6e, 0x28, 0x1b, 0x24, 0x2c, 0x24, 0xa7, 0x87, 0x30, 0x4f, 0x0f, 0x49, 0x61, - 0x50, 0x6a, 0x61, 0x69, 0x6a, 0x71, 0x89, 0x94, 0x3c, 0x4e, 0xf9, 0xe2, 0x82, 0xfc, 0xbc, 0xe2, - 0x54, 0x0d, 0x46, 0x03, 0x46, 0x27, 0xce, 0x28, 0x76, 0xa8, 0x23, 0x93, 0xd8, 0xc0, 0xb6, 0x1a, - 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x39, 0x4e, 0xb0, 0xf8, 0xc9, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/service/service.proto b/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/service/service.proto deleted file mode 100644 index 6971fdba..00000000 --- a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/service/service.proto +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2016 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package grpc.lb.v1; -option go_package = "google.golang.org/grpc/grpclb/grpc_lb_v1/service"; - -import "grpc_lb_v1/messages/messages.proto"; - -service LoadBalancer { - // Bidirectional rpc to get a list of servers. - rpc BalanceLoad(stream LoadBalanceRequest) - returns (stream LoadBalanceResponse); -} diff --git a/vendor/google.golang.org/grpc/grpclb/grpclb_test.go b/vendor/google.golang.org/grpc/grpclb/grpclb_test.go deleted file mode 100644 index d83ea6b8..00000000 --- a/vendor/google.golang.org/grpc/grpclb/grpclb_test.go +++ /dev/null @@ -1,975 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc --go_out=plugins=:$GOPATH grpc_lb_v1/messages/messages.proto -//go:generate protoc --go_out=plugins=grpc:$GOPATH grpc_lb_v1/service/service.proto - -// Package grpclb_test is currently used only for grpclb testing. -package grpclb_test - -import ( - "errors" - "fmt" - "io" - "net" - "strconv" - "strings" - "sync" - "testing" - "time" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/balancer" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/credentials" - lbmpb "google.golang.org/grpc/grpclb/grpc_lb_v1/messages" - lbspb "google.golang.org/grpc/grpclb/grpc_lb_v1/service" - _ "google.golang.org/grpc/grpclog/glogger" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/peer" - "google.golang.org/grpc/resolver" - "google.golang.org/grpc/resolver/manual" - "google.golang.org/grpc/status" - testpb "google.golang.org/grpc/test/grpc_testing" - "google.golang.org/grpc/test/leakcheck" - - _ "google.golang.org/grpc/grpclog/glogger" -) - -var ( - lbServerName = "bar.com" - beServerName = "foo.com" - lbToken = "iamatoken" - - // Resolver replaces localhost with fakeName in Next(). - // Dialer replaces fakeName with localhost when dialing. - // This will test that custom dialer is passed from Dial to grpclb. - fakeName = "fake.Name" -) - -type serverNameCheckCreds struct { - mu sync.Mutex - sn string - expected string -} - -func (c *serverNameCheckCreds) ServerHandshake(rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - if _, err := io.WriteString(rawConn, c.sn); err != nil { - fmt.Printf("Failed to write the server name %s to the client %v", c.sn, err) - return nil, nil, err - } - return rawConn, nil, nil -} -func (c *serverNameCheckCreds) ClientHandshake(ctx context.Context, addr string, rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - c.mu.Lock() - defer c.mu.Unlock() - b := make([]byte, len(c.expected)) - errCh := make(chan error, 1) - go func() { - _, err := rawConn.Read(b) - errCh <- err - }() - select { - case err := <-errCh: - if err != nil { - fmt.Printf("Failed to read the server name from the server %v", err) - return nil, nil, err - } - case <-ctx.Done(): - return nil, nil, ctx.Err() - } - if c.expected != string(b) { - fmt.Printf("Read the server name %s want %s", string(b), c.expected) - return nil, nil, errors.New("received unexpected server name") - } - return rawConn, nil, nil -} -func (c *serverNameCheckCreds) Info() credentials.ProtocolInfo { - c.mu.Lock() - defer c.mu.Unlock() - return credentials.ProtocolInfo{} -} -func (c *serverNameCheckCreds) Clone() credentials.TransportCredentials { - c.mu.Lock() - defer c.mu.Unlock() - return &serverNameCheckCreds{ - expected: c.expected, - } -} -func (c *serverNameCheckCreds) OverrideServerName(s string) error { - c.mu.Lock() - defer c.mu.Unlock() - c.expected = s - return nil -} - -// fakeNameDialer replaces fakeName with localhost when dialing. -// This will test that custom dialer is passed from Dial to grpclb. -func fakeNameDialer(addr string, timeout time.Duration) (net.Conn, error) { - addr = strings.Replace(addr, fakeName, "localhost", 1) - return net.DialTimeout("tcp", addr, timeout) -} - -type remoteBalancer struct { - sls chan *lbmpb.ServerList - statsDura time.Duration - done chan struct{} - mu sync.Mutex - stats lbmpb.ClientStats -} - -func newRemoteBalancer(intervals []time.Duration) *remoteBalancer { - return &remoteBalancer{ - sls: make(chan *lbmpb.ServerList, 1), - done: make(chan struct{}), - } -} - -func (b *remoteBalancer) stop() { - close(b.sls) - close(b.done) -} - -func (b *remoteBalancer) BalanceLoad(stream lbspb.LoadBalancer_BalanceLoadServer) error { - req, err := stream.Recv() - if err != nil { - return err - } - initReq := req.GetInitialRequest() - if initReq.Name != beServerName { - return status.Errorf(codes.InvalidArgument, "invalid service name: %v", initReq.Name) - } - resp := &lbmpb.LoadBalanceResponse{ - LoadBalanceResponseType: &lbmpb.LoadBalanceResponse_InitialResponse{ - InitialResponse: &lbmpb.InitialLoadBalanceResponse{ - ClientStatsReportInterval: &lbmpb.Duration{ - Seconds: int64(b.statsDura.Seconds()), - Nanos: int32(b.statsDura.Nanoseconds() - int64(b.statsDura.Seconds())*1e9), - }, - }, - }, - } - if err := stream.Send(resp); err != nil { - return err - } - go func() { - for { - var ( - req *lbmpb.LoadBalanceRequest - err error - ) - if req, err = stream.Recv(); err != nil { - return - } - b.mu.Lock() - b.stats.NumCallsStarted += req.GetClientStats().NumCallsStarted - b.stats.NumCallsFinished += req.GetClientStats().NumCallsFinished - b.stats.NumCallsFinishedWithDropForRateLimiting += req.GetClientStats().NumCallsFinishedWithDropForRateLimiting - b.stats.NumCallsFinishedWithDropForLoadBalancing += req.GetClientStats().NumCallsFinishedWithDropForLoadBalancing - b.stats.NumCallsFinishedWithClientFailedToSend += req.GetClientStats().NumCallsFinishedWithClientFailedToSend - b.stats.NumCallsFinishedKnownReceived += req.GetClientStats().NumCallsFinishedKnownReceived - b.mu.Unlock() - } - }() - for v := range b.sls { - resp = &lbmpb.LoadBalanceResponse{ - LoadBalanceResponseType: &lbmpb.LoadBalanceResponse_ServerList{ - ServerList: v, - }, - } - if err := stream.Send(resp); err != nil { - return err - } - } - <-b.done - return nil -} - -type testServer struct { - testpb.TestServiceServer - - addr string - fallback bool -} - -const testmdkey = "testmd" - -func (s *testServer) EmptyCall(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - md, ok := metadata.FromIncomingContext(ctx) - if !ok { - return nil, status.Error(codes.Internal, "failed to receive metadata") - } - if !s.fallback && (md == nil || md["lb-token"][0] != lbToken) { - return nil, status.Errorf(codes.Internal, "received unexpected metadata: %v", md) - } - grpc.SetTrailer(ctx, metadata.Pairs(testmdkey, s.addr)) - return &testpb.Empty{}, nil -} - -func (s *testServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallServer) error { - return nil -} - -func startBackends(sn string, fallback bool, lis ...net.Listener) (servers []*grpc.Server) { - for _, l := range lis { - creds := &serverNameCheckCreds{ - sn: sn, - } - s := grpc.NewServer(grpc.Creds(creds)) - testpb.RegisterTestServiceServer(s, &testServer{addr: l.Addr().String(), fallback: fallback}) - servers = append(servers, s) - go func(s *grpc.Server, l net.Listener) { - s.Serve(l) - }(s, l) - } - return -} - -func stopBackends(servers []*grpc.Server) { - for _, s := range servers { - s.Stop() - } -} - -type testServers struct { - lbAddr string - ls *remoteBalancer - lb *grpc.Server - beIPs []net.IP - bePorts []int -} - -func newLoadBalancer(numberOfBackends int) (tss *testServers, cleanup func(), err error) { - var ( - beListeners []net.Listener - ls *remoteBalancer - lb *grpc.Server - beIPs []net.IP - bePorts []int - ) - for i := 0; i < numberOfBackends; i++ { - // Start a backend. - beLis, e := net.Listen("tcp", "localhost:0") - if e != nil { - err = fmt.Errorf("Failed to listen %v", err) - return - } - beIPs = append(beIPs, beLis.Addr().(*net.TCPAddr).IP) - bePorts = append(bePorts, beLis.Addr().(*net.TCPAddr).Port) - - beListeners = append(beListeners, beLis) - } - backends := startBackends(beServerName, false, beListeners...) - - // Start a load balancer. - lbLis, err := net.Listen("tcp", "localhost:0") - if err != nil { - err = fmt.Errorf("Failed to create the listener for the load balancer %v", err) - return - } - lbCreds := &serverNameCheckCreds{ - sn: lbServerName, - } - lb = grpc.NewServer(grpc.Creds(lbCreds)) - if err != nil { - err = fmt.Errorf("Failed to generate the port number %v", err) - return - } - ls = newRemoteBalancer(nil) - lbspb.RegisterLoadBalancerServer(lb, ls) - go func() { - lb.Serve(lbLis) - }() - - tss = &testServers{ - lbAddr: fakeName + ":" + strconv.Itoa(lbLis.Addr().(*net.TCPAddr).Port), - ls: ls, - lb: lb, - beIPs: beIPs, - bePorts: bePorts, - } - cleanup = func() { - defer stopBackends(backends) - defer func() { - ls.stop() - lb.Stop() - }() - } - return -} - -func TestGRPCLB(t *testing.T) { - defer leakcheck.Check(t) - - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - tss, cleanup, err := newLoadBalancer(1) - if err != nil { - t.Fatalf("failed to create new load balancer: %v", err) - } - defer cleanup() - - be := &lbmpb.Server{ - IpAddress: tss.beIPs[0], - Port: int32(tss.bePorts[0]), - LoadBalanceToken: lbToken, - } - var bes []*lbmpb.Server - bes = append(bes, be) - sl := &lbmpb.ServerList{ - Servers: bes, - } - tss.ls.sls <- sl - creds := serverNameCheckCreds{ - expected: beServerName, - } - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - cc, err := grpc.DialContext(ctx, r.Scheme()+":///"+beServerName, - grpc.WithTransportCredentials(&creds), grpc.WithDialer(fakeNameDialer)) - if err != nil { - t.Fatalf("Failed to dial to the backend %v", err) - } - defer cc.Close() - testC := testpb.NewTestServiceClient(cc) - - r.NewAddress([]resolver.Address{{ - Addr: tss.lbAddr, - Type: resolver.GRPCLB, - ServerName: lbServerName, - }}) - - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } -} - -// The remote balancer sends response with duplicates to grpclb client. -func TestGRPCLBWeighted(t *testing.T) { - defer leakcheck.Check(t) - - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - tss, cleanup, err := newLoadBalancer(2) - if err != nil { - t.Fatalf("failed to create new load balancer: %v", err) - } - defer cleanup() - - beServers := []*lbmpb.Server{{ - IpAddress: tss.beIPs[0], - Port: int32(tss.bePorts[0]), - LoadBalanceToken: lbToken, - }, { - IpAddress: tss.beIPs[1], - Port: int32(tss.bePorts[1]), - LoadBalanceToken: lbToken, - }} - portsToIndex := make(map[int]int) - for i := range beServers { - portsToIndex[tss.bePorts[i]] = i - } - - creds := serverNameCheckCreds{ - expected: beServerName, - } - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - cc, err := grpc.DialContext(ctx, r.Scheme()+":///"+beServerName, - grpc.WithTransportCredentials(&creds), grpc.WithDialer(fakeNameDialer)) - if err != nil { - t.Fatalf("Failed to dial to the backend %v", err) - } - defer cc.Close() - testC := testpb.NewTestServiceClient(cc) - - r.NewAddress([]resolver.Address{{ - Addr: tss.lbAddr, - Type: resolver.GRPCLB, - ServerName: lbServerName, - }}) - - sequences := []string{"00101", "00011"} - for _, seq := range sequences { - var ( - bes []*lbmpb.Server - p peer.Peer - result string - ) - for _, s := range seq { - bes = append(bes, beServers[s-'0']) - } - tss.ls.sls <- &lbmpb.ServerList{Servers: bes} - - for i := 0; i < 1000; i++ { - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false), grpc.Peer(&p)); err != nil { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } - result += strconv.Itoa(portsToIndex[p.Addr.(*net.TCPAddr).Port]) - } - // The generated result will be in format of "0010100101". - if !strings.Contains(result, strings.Repeat(seq, 2)) { - t.Errorf("got result sequence %q, want patten %q", result, seq) - } - } -} - -func TestDropRequest(t *testing.T) { - defer leakcheck.Check(t) - - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - tss, cleanup, err := newLoadBalancer(1) - if err != nil { - t.Fatalf("failed to create new load balancer: %v", err) - } - defer cleanup() - tss.ls.sls <- &lbmpb.ServerList{ - Servers: []*lbmpb.Server{{ - IpAddress: tss.beIPs[0], - Port: int32(tss.bePorts[0]), - LoadBalanceToken: lbToken, - DropForLoadBalancing: false, - }, { - DropForLoadBalancing: true, - }}, - } - creds := serverNameCheckCreds{ - expected: beServerName, - } - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - cc, err := grpc.DialContext(ctx, r.Scheme()+":///"+beServerName, - grpc.WithTransportCredentials(&creds), grpc.WithDialer(fakeNameDialer)) - if err != nil { - t.Fatalf("Failed to dial to the backend %v", err) - } - defer cc.Close() - testC := testpb.NewTestServiceClient(cc) - - r.NewAddress([]resolver.Address{{ - Addr: tss.lbAddr, - Type: resolver.GRPCLB, - ServerName: lbServerName, - }}) - - // The 1st, non-fail-fast RPC should succeed. This ensures both server - // connections are made, because the first one has DropForLoadBalancing set to true. - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("%v.SayHello(_, _) = _, %v, want _, <nil>", testC, err) - } - for _, failfast := range []bool{true, false} { - for i := 0; i < 3; i++ { - // Even RPCs should fail, because the 2st backend has - // DropForLoadBalancing set to true. - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(failfast)); status.Code(err) != codes.Unavailable { - t.Errorf("%v.EmptyCall(_, _) = _, %v, want _, %s", testC, err, codes.Unavailable) - } - // Odd RPCs should succeed since they choose the non-drop-request - // backend according to the round robin policy. - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(failfast)); err != nil { - t.Errorf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } - } - } -} - -// When the balancer in use disconnects, grpclb should connect to the next address from resolved balancer address list. -func TestBalancerDisconnects(t *testing.T) { - defer leakcheck.Check(t) - - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - var ( - tests []*testServers - lbs []*grpc.Server - ) - for i := 0; i < 2; i++ { - tss, cleanup, err := newLoadBalancer(1) - if err != nil { - t.Fatalf("failed to create new load balancer: %v", err) - } - defer cleanup() - - be := &lbmpb.Server{ - IpAddress: tss.beIPs[0], - Port: int32(tss.bePorts[0]), - LoadBalanceToken: lbToken, - } - var bes []*lbmpb.Server - bes = append(bes, be) - sl := &lbmpb.ServerList{ - Servers: bes, - } - tss.ls.sls <- sl - - tests = append(tests, tss) - lbs = append(lbs, tss.lb) - } - - creds := serverNameCheckCreds{ - expected: beServerName, - } - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - cc, err := grpc.DialContext(ctx, r.Scheme()+":///"+beServerName, - grpc.WithTransportCredentials(&creds), grpc.WithDialer(fakeNameDialer)) - if err != nil { - t.Fatalf("Failed to dial to the backend %v", err) - } - defer cc.Close() - testC := testpb.NewTestServiceClient(cc) - - r.NewAddress([]resolver.Address{{ - Addr: tests[0].lbAddr, - Type: resolver.GRPCLB, - ServerName: lbServerName, - }, { - Addr: tests[1].lbAddr, - Type: resolver.GRPCLB, - ServerName: lbServerName, - }}) - - var p peer.Peer - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false), grpc.Peer(&p)); err != nil { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } - if p.Addr.(*net.TCPAddr).Port != tests[0].bePorts[0] { - t.Fatalf("got peer: %v, want peer port: %v", p.Addr, tests[0].bePorts[0]) - } - - lbs[0].Stop() - // Stop balancer[0], balancer[1] should be used by grpclb. - // Check peer address to see if that happened. - for i := 0; i < 1000; i++ { - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false), grpc.Peer(&p)); err != nil { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } - if p.Addr.(*net.TCPAddr).Port == tests[1].bePorts[0] { - return - } - time.Sleep(time.Millisecond) - } - t.Fatalf("No RPC sent to second backend after 1 second") -} - -type customGRPCLBBuilder struct { - balancer.Builder - name string -} - -func (b *customGRPCLBBuilder) Name() string { - return b.name -} - -const grpclbCustomFallbackName = "grpclb_with_custom_fallback_timeout" - -func init() { - balancer.Register(&customGRPCLBBuilder{ - Builder: grpc.NewLBBuilderWithFallbackTimeout(100 * time.Millisecond), - name: grpclbCustomFallbackName, - }) -} - -func TestFallback(t *testing.T) { - defer leakcheck.Check(t) - - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - tss, cleanup, err := newLoadBalancer(1) - if err != nil { - t.Fatalf("failed to create new load balancer: %v", err) - } - defer cleanup() - - // Start a standalone backend. - beLis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen %v", err) - } - defer beLis.Close() - standaloneBEs := startBackends(beServerName, true, beLis) - defer stopBackends(standaloneBEs) - - be := &lbmpb.Server{ - IpAddress: tss.beIPs[0], - Port: int32(tss.bePorts[0]), - LoadBalanceToken: lbToken, - } - var bes []*lbmpb.Server - bes = append(bes, be) - sl := &lbmpb.ServerList{ - Servers: bes, - } - tss.ls.sls <- sl - creds := serverNameCheckCreds{ - expected: beServerName, - } - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - cc, err := grpc.DialContext(ctx, r.Scheme()+":///"+beServerName, - grpc.WithBalancerName(grpclbCustomFallbackName), - grpc.WithTransportCredentials(&creds), grpc.WithDialer(fakeNameDialer)) - if err != nil { - t.Fatalf("Failed to dial to the backend %v", err) - } - defer cc.Close() - testC := testpb.NewTestServiceClient(cc) - - r.NewAddress([]resolver.Address{{ - Addr: "", - Type: resolver.GRPCLB, - ServerName: lbServerName, - }, { - Addr: beLis.Addr().String(), - Type: resolver.Backend, - ServerName: beServerName, - }}) - - var p peer.Peer - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false), grpc.Peer(&p)); err != nil { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } - if p.Addr.String() != beLis.Addr().String() { - t.Fatalf("got peer: %v, want peer: %v", p.Addr, beLis.Addr()) - } - - r.NewAddress([]resolver.Address{{ - Addr: tss.lbAddr, - Type: resolver.GRPCLB, - ServerName: lbServerName, - }, { - Addr: beLis.Addr().String(), - Type: resolver.Backend, - ServerName: beServerName, - }}) - - for i := 0; i < 1000; i++ { - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false), grpc.Peer(&p)); err != nil { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } - if p.Addr.(*net.TCPAddr).Port == tss.bePorts[0] { - return - } - time.Sleep(time.Millisecond) - } - t.Fatalf("No RPC sent to backend behind remote balancer after 1 second") -} - -type failPreRPCCred struct{} - -func (failPreRPCCred) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { - if strings.Contains(uri[0], failtosendURI) { - return nil, fmt.Errorf("rpc should fail to send") - } - return nil, nil -} - -func (failPreRPCCred) RequireTransportSecurity() bool { - return false -} - -func checkStats(stats *lbmpb.ClientStats, expected *lbmpb.ClientStats) error { - if !proto.Equal(stats, expected) { - return fmt.Errorf("stats not equal: got %+v, want %+v", stats, expected) - } - return nil -} - -func runAndGetStats(t *testing.T, dropForLoadBalancing, dropForRateLimiting bool, runRPCs func(*grpc.ClientConn)) lbmpb.ClientStats { - defer leakcheck.Check(t) - - r, cleanup := manual.GenerateAndRegisterManualResolver() - defer cleanup() - - tss, cleanup, err := newLoadBalancer(1) - if err != nil { - t.Fatalf("failed to create new load balancer: %v", err) - } - defer cleanup() - tss.ls.sls <- &lbmpb.ServerList{ - Servers: []*lbmpb.Server{{ - IpAddress: tss.beIPs[0], - Port: int32(tss.bePorts[0]), - LoadBalanceToken: lbToken, - DropForLoadBalancing: dropForLoadBalancing, - DropForRateLimiting: dropForRateLimiting, - }}, - } - tss.ls.statsDura = 100 * time.Millisecond - creds := serverNameCheckCreds{expected: beServerName} - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - cc, err := grpc.DialContext(ctx, r.Scheme()+":///"+beServerName, - grpc.WithTransportCredentials(&creds), - grpc.WithPerRPCCredentials(failPreRPCCred{}), - grpc.WithDialer(fakeNameDialer)) - if err != nil { - t.Fatalf("Failed to dial to the backend %v", err) - } - defer cc.Close() - - r.NewAddress([]resolver.Address{{ - Addr: tss.lbAddr, - Type: resolver.GRPCLB, - ServerName: lbServerName, - }}) - - runRPCs(cc) - time.Sleep(1 * time.Second) - tss.ls.mu.Lock() - stats := tss.ls.stats - tss.ls.mu.Unlock() - return stats -} - -const ( - countRPC = 40 - failtosendURI = "failtosend" - dropErrDesc = "request dropped by grpclb" -) - -func TestGRPCLBStatsUnarySuccess(t *testing.T) { - defer leakcheck.Check(t) - stats := runAndGetStats(t, false, false, func(cc *grpc.ClientConn) { - testC := testpb.NewTestServiceClient(cc) - // The first non-failfast RPC succeeds, all connections are up. - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } - for i := 0; i < countRPC-1; i++ { - testC.EmptyCall(context.Background(), &testpb.Empty{}) - } - }) - - if err := checkStats(&stats, &lbmpb.ClientStats{ - NumCallsStarted: int64(countRPC), - NumCallsFinished: int64(countRPC), - NumCallsFinishedKnownReceived: int64(countRPC), - }); err != nil { - t.Fatal(err) - } -} - -func TestGRPCLBStatsUnaryDropLoadBalancing(t *testing.T) { - defer leakcheck.Check(t) - c := 0 - stats := runAndGetStats(t, true, false, func(cc *grpc.ClientConn) { - testC := testpb.NewTestServiceClient(cc) - for { - c++ - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - if strings.Contains(err.Error(), dropErrDesc) { - break - } - } - } - for i := 0; i < countRPC; i++ { - testC.EmptyCall(context.Background(), &testpb.Empty{}) - } - }) - - if err := checkStats(&stats, &lbmpb.ClientStats{ - NumCallsStarted: int64(countRPC + c), - NumCallsFinished: int64(countRPC + c), - NumCallsFinishedWithDropForLoadBalancing: int64(countRPC + 1), - NumCallsFinishedWithClientFailedToSend: int64(c - 1), - }); err != nil { - t.Fatal(err) - } -} - -func TestGRPCLBStatsUnaryDropRateLimiting(t *testing.T) { - defer leakcheck.Check(t) - c := 0 - stats := runAndGetStats(t, false, true, func(cc *grpc.ClientConn) { - testC := testpb.NewTestServiceClient(cc) - for { - c++ - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - if strings.Contains(err.Error(), dropErrDesc) { - break - } - } - } - for i := 0; i < countRPC; i++ { - testC.EmptyCall(context.Background(), &testpb.Empty{}) - } - }) - - if err := checkStats(&stats, &lbmpb.ClientStats{ - NumCallsStarted: int64(countRPC + c), - NumCallsFinished: int64(countRPC + c), - NumCallsFinishedWithDropForRateLimiting: int64(countRPC + 1), - NumCallsFinishedWithClientFailedToSend: int64(c - 1), - }); err != nil { - t.Fatal(err) - } -} - -func TestGRPCLBStatsUnaryFailedToSend(t *testing.T) { - defer leakcheck.Check(t) - stats := runAndGetStats(t, false, false, func(cc *grpc.ClientConn) { - testC := testpb.NewTestServiceClient(cc) - // The first non-failfast RPC succeeds, all connections are up. - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, <nil>", testC, err) - } - for i := 0; i < countRPC-1; i++ { - grpc.Invoke(context.Background(), failtosendURI, &testpb.Empty{}, nil, cc) - } - }) - - if err := checkStats(&stats, &lbmpb.ClientStats{ - NumCallsStarted: int64(countRPC), - NumCallsFinished: int64(countRPC), - NumCallsFinishedWithClientFailedToSend: int64(countRPC - 1), - NumCallsFinishedKnownReceived: 1, - }); err != nil { - t.Fatal(err) - } -} - -func TestGRPCLBStatsStreamingSuccess(t *testing.T) { - defer leakcheck.Check(t) - stats := runAndGetStats(t, false, false, func(cc *grpc.ClientConn) { - testC := testpb.NewTestServiceClient(cc) - // The first non-failfast RPC succeeds, all connections are up. - stream, err := testC.FullDuplexCall(context.Background(), grpc.FailFast(false)) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_, _) = _, %v, want _, <nil>", testC, err) - } - for { - if _, err = stream.Recv(); err == io.EOF { - break - } - } - for i := 0; i < countRPC-1; i++ { - stream, err = testC.FullDuplexCall(context.Background()) - if err == nil { - // Wait for stream to end if err is nil. - for { - if _, err = stream.Recv(); err == io.EOF { - break - } - } - } - } - }) - - if err := checkStats(&stats, &lbmpb.ClientStats{ - NumCallsStarted: int64(countRPC), - NumCallsFinished: int64(countRPC), - NumCallsFinishedKnownReceived: int64(countRPC), - }); err != nil { - t.Fatal(err) - } -} - -func TestGRPCLBStatsStreamingDropLoadBalancing(t *testing.T) { - defer leakcheck.Check(t) - c := 0 - stats := runAndGetStats(t, true, false, func(cc *grpc.ClientConn) { - testC := testpb.NewTestServiceClient(cc) - for { - c++ - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - if strings.Contains(err.Error(), dropErrDesc) { - break - } - } - } - for i := 0; i < countRPC; i++ { - testC.FullDuplexCall(context.Background()) - } - }) - - if err := checkStats(&stats, &lbmpb.ClientStats{ - NumCallsStarted: int64(countRPC + c), - NumCallsFinished: int64(countRPC + c), - NumCallsFinishedWithDropForLoadBalancing: int64(countRPC + 1), - NumCallsFinishedWithClientFailedToSend: int64(c - 1), - }); err != nil { - t.Fatal(err) - } -} - -func TestGRPCLBStatsStreamingDropRateLimiting(t *testing.T) { - defer leakcheck.Check(t) - c := 0 - stats := runAndGetStats(t, false, true, func(cc *grpc.ClientConn) { - testC := testpb.NewTestServiceClient(cc) - for { - c++ - if _, err := testC.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - if strings.Contains(err.Error(), dropErrDesc) { - break - } - } - } - for i := 0; i < countRPC; i++ { - testC.FullDuplexCall(context.Background()) - } - }) - - if err := checkStats(&stats, &lbmpb.ClientStats{ - NumCallsStarted: int64(countRPC + c), - NumCallsFinished: int64(countRPC + c), - NumCallsFinishedWithDropForRateLimiting: int64(countRPC + 1), - NumCallsFinishedWithClientFailedToSend: int64(c - 1), - }); err != nil { - t.Fatal(err) - } -} - -func TestGRPCLBStatsStreamingFailedToSend(t *testing.T) { - defer leakcheck.Check(t) - stats := runAndGetStats(t, false, false, func(cc *grpc.ClientConn) { - testC := testpb.NewTestServiceClient(cc) - // The first non-failfast RPC succeeds, all connections are up. - stream, err := testC.FullDuplexCall(context.Background(), grpc.FailFast(false)) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_, _) = _, %v, want _, <nil>", testC, err) - } - for { - if _, err = stream.Recv(); err == io.EOF { - break - } - } - for i := 0; i < countRPC-1; i++ { - grpc.NewClientStream(context.Background(), &grpc.StreamDesc{}, cc, failtosendURI) - } - }) - - if err := checkStats(&stats, &lbmpb.ClientStats{ - NumCallsStarted: int64(countRPC), - NumCallsFinished: int64(countRPC), - NumCallsFinishedWithClientFailedToSend: int64(countRPC - 1), - NumCallsFinishedKnownReceived: 1, - }); err != nil { - t.Fatal(err) - } -} diff --git a/vendor/google.golang.org/grpc/grpclog/glogger/glogger.go b/vendor/google.golang.org/grpc/grpclog/glogger/glogger.go deleted file mode 100644 index e5498f82..00000000 --- a/vendor/google.golang.org/grpc/grpclog/glogger/glogger.go +++ /dev/null @@ -1,86 +0,0 @@ -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package glogger defines glog-based logging for grpc. -// Importing this package will install glog as the logger used by grpclog. -package glogger - -import ( - "fmt" - - "github.com/golang/glog" - "google.golang.org/grpc/grpclog" -) - -func init() { - grpclog.SetLoggerV2(&glogger{}) -} - -type glogger struct{} - -func (g *glogger) Info(args ...interface{}) { - glog.InfoDepth(2, args...) -} - -func (g *glogger) Infoln(args ...interface{}) { - glog.InfoDepth(2, fmt.Sprintln(args...)) -} - -func (g *glogger) Infof(format string, args ...interface{}) { - glog.InfoDepth(2, fmt.Sprintf(format, args...)) -} - -func (g *glogger) Warning(args ...interface{}) { - glog.WarningDepth(2, args...) -} - -func (g *glogger) Warningln(args ...interface{}) { - glog.WarningDepth(2, fmt.Sprintln(args...)) -} - -func (g *glogger) Warningf(format string, args ...interface{}) { - glog.WarningDepth(2, fmt.Sprintf(format, args...)) -} - -func (g *glogger) Error(args ...interface{}) { - glog.ErrorDepth(2, args...) -} - -func (g *glogger) Errorln(args ...interface{}) { - glog.ErrorDepth(2, fmt.Sprintln(args...)) -} - -func (g *glogger) Errorf(format string, args ...interface{}) { - glog.ErrorDepth(2, fmt.Sprintf(format, args...)) -} - -func (g *glogger) Fatal(args ...interface{}) { - glog.FatalDepth(2, args...) -} - -func (g *glogger) Fatalln(args ...interface{}) { - glog.FatalDepth(2, fmt.Sprintln(args...)) -} - -func (g *glogger) Fatalf(format string, args ...interface{}) { - glog.FatalDepth(2, fmt.Sprintf(format, args...)) -} - -func (g *glogger) V(l int) bool { - return bool(glog.V(glog.Level(l))) -} diff --git a/vendor/google.golang.org/grpc/grpclog/loggerv2_test.go b/vendor/google.golang.org/grpc/grpclog/loggerv2_test.go deleted file mode 100644 index 756f215f..00000000 --- a/vendor/google.golang.org/grpc/grpclog/loggerv2_test.go +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpclog - -import ( - "bytes" - "fmt" - "regexp" - "testing" -) - -func TestLoggerV2Severity(t *testing.T) { - buffers := []*bytes.Buffer{new(bytes.Buffer), new(bytes.Buffer), new(bytes.Buffer)} - SetLoggerV2(NewLoggerV2(buffers[infoLog], buffers[warningLog], buffers[errorLog])) - - Info(severityName[infoLog]) - Warning(severityName[warningLog]) - Error(severityName[errorLog]) - - for i := 0; i < fatalLog; i++ { - buf := buffers[i] - // The content of info buffer should be something like: - // INFO: 2017/04/07 14:55:42 INFO - // WARNING: 2017/04/07 14:55:42 WARNING - // ERROR: 2017/04/07 14:55:42 ERROR - for j := i; j < fatalLog; j++ { - b, err := buf.ReadBytes('\n') - if err != nil { - t.Fatal(err) - } - if err := checkLogForSeverity(j, b); err != nil { - t.Fatal(err) - } - } - } -} - -// check if b is in the format of: -// WARNING: 2017/04/07 14:55:42 WARNING -func checkLogForSeverity(s int, b []byte) error { - expected := regexp.MustCompile(fmt.Sprintf(`^%s: [0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} %s\n$`, severityName[s], severityName[s])) - if m := expected.Match(b); !m { - return fmt.Errorf("got: %v, want string in format of: %v", string(b), severityName[s]+": 2016/10/05 17:09:26 "+severityName[s]) - } - return nil -} diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go deleted file mode 100644 index fdcbb9e0..00000000 --- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go +++ /dev/null @@ -1,190 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: grpc_health_v1/health.proto - -/* -Package grpc_health_v1 is a generated protocol buffer package. - -It is generated from these files: - grpc_health_v1/health.proto - -It has these top-level messages: - HealthCheckRequest - HealthCheckResponse -*/ -package grpc_health_v1 - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type HealthCheckResponse_ServingStatus int32 - -const ( - HealthCheckResponse_UNKNOWN HealthCheckResponse_ServingStatus = 0 - HealthCheckResponse_SERVING HealthCheckResponse_ServingStatus = 1 - HealthCheckResponse_NOT_SERVING HealthCheckResponse_ServingStatus = 2 -) - -var HealthCheckResponse_ServingStatus_name = map[int32]string{ - 0: "UNKNOWN", - 1: "SERVING", - 2: "NOT_SERVING", -} -var HealthCheckResponse_ServingStatus_value = map[string]int32{ - "UNKNOWN": 0, - "SERVING": 1, - "NOT_SERVING": 2, -} - -func (x HealthCheckResponse_ServingStatus) String() string { - return proto.EnumName(HealthCheckResponse_ServingStatus_name, int32(x)) -} -func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{1, 0} -} - -type HealthCheckRequest struct { - Service string `protobuf:"bytes,1,opt,name=service" json:"service,omitempty"` -} - -func (m *HealthCheckRequest) Reset() { *m = HealthCheckRequest{} } -func (m *HealthCheckRequest) String() string { return proto.CompactTextString(m) } -func (*HealthCheckRequest) ProtoMessage() {} -func (*HealthCheckRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *HealthCheckRequest) GetService() string { - if m != nil { - return m.Service - } - return "" -} - -type HealthCheckResponse struct { - Status HealthCheckResponse_ServingStatus `protobuf:"varint,1,opt,name=status,enum=grpc.health.v1.HealthCheckResponse_ServingStatus" json:"status,omitempty"` -} - -func (m *HealthCheckResponse) Reset() { *m = HealthCheckResponse{} } -func (m *HealthCheckResponse) String() string { return proto.CompactTextString(m) } -func (*HealthCheckResponse) ProtoMessage() {} -func (*HealthCheckResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *HealthCheckResponse) GetStatus() HealthCheckResponse_ServingStatus { - if m != nil { - return m.Status - } - return HealthCheckResponse_UNKNOWN -} - -func init() { - proto.RegisterType((*HealthCheckRequest)(nil), "grpc.health.v1.HealthCheckRequest") - proto.RegisterType((*HealthCheckResponse)(nil), "grpc.health.v1.HealthCheckResponse") - proto.RegisterEnum("grpc.health.v1.HealthCheckResponse_ServingStatus", HealthCheckResponse_ServingStatus_name, HealthCheckResponse_ServingStatus_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Health service - -type HealthClient interface { - Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error) -} - -type healthClient struct { - cc *grpc.ClientConn -} - -func NewHealthClient(cc *grpc.ClientConn) HealthClient { - return &healthClient{cc} -} - -func (c *healthClient) Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error) { - out := new(HealthCheckResponse) - err := grpc.Invoke(ctx, "/grpc.health.v1.Health/Check", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Health service - -type HealthServer interface { - Check(context.Context, *HealthCheckRequest) (*HealthCheckResponse, error) -} - -func RegisterHealthServer(s *grpc.Server, srv HealthServer) { - s.RegisterService(&_Health_serviceDesc, srv) -} - -func _Health_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(HealthCheckRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HealthServer).Check(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.health.v1.Health/Check", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HealthServer).Check(ctx, req.(*HealthCheckRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Health_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.health.v1.Health", - HandlerType: (*HealthServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Check", - Handler: _Health_Check_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "grpc_health_v1/health.proto", -} - -func init() { proto.RegisterFile("grpc_health_v1/health.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 213 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x2f, 0x2a, 0x48, - 0x8e, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9, 0x88, 0x2f, 0x33, 0xd4, 0x87, 0xb0, 0xf4, 0x0a, 0x8a, - 0xf2, 0x4b, 0xf2, 0x85, 0xf8, 0x40, 0x92, 0x7a, 0x50, 0xa1, 0x32, 0x43, 0x25, 0x3d, 0x2e, 0x21, - 0x0f, 0x30, 0xc7, 0x39, 0x23, 0x35, 0x39, 0x3b, 0x28, 0xb5, 0xb0, 0x34, 0xb5, 0xb8, 0x44, 0x48, - 0x82, 0x8b, 0xbd, 0x38, 0xb5, 0xa8, 0x2c, 0x33, 0x39, 0x55, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, - 0x08, 0xc6, 0x55, 0x9a, 0xc3, 0xc8, 0x25, 0x8c, 0xa2, 0xa1, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, - 0xc8, 0x93, 0x8b, 0xad, 0xb8, 0x24, 0xb1, 0xa4, 0xb4, 0x18, 0xac, 0x81, 0xcf, 0xc8, 0x50, 0x0f, - 0xd5, 0x22, 0x3d, 0x2c, 0x9a, 0xf4, 0x82, 0x41, 0x86, 0xe6, 0xa5, 0x07, 0x83, 0x35, 0x06, 0x41, - 0x0d, 0x50, 0xb2, 0xe2, 0xe2, 0x45, 0x91, 0x10, 0xe2, 0xe6, 0x62, 0x0f, 0xf5, 0xf3, 0xf6, 0xf3, - 0x0f, 0xf7, 0x13, 0x60, 0x00, 0x71, 0x82, 0x5d, 0x83, 0xc2, 0x3c, 0xfd, 0xdc, 0x05, 0x18, 0x85, - 0xf8, 0xb9, 0xb8, 0xfd, 0xfc, 0x43, 0xe2, 0x61, 0x02, 0x4c, 0x46, 0x51, 0x5c, 0x6c, 0x10, 0x8b, - 0x84, 0x02, 0xb8, 0x58, 0xc1, 0x96, 0x09, 0x29, 0xe1, 0x75, 0x09, 0xd8, 0xbf, 0x52, 0xca, 0x44, - 0xb8, 0x36, 0x89, 0x0d, 0x1c, 0x82, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x53, 0x2b, 0x65, - 0x20, 0x60, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.proto b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.proto deleted file mode 100644 index 6072fdc3..00000000 --- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.proto +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package grpc.health.v1; - -message HealthCheckRequest { - string service = 1; -} - -message HealthCheckResponse { - enum ServingStatus { - UNKNOWN = 0; - SERVING = 1; - NOT_SERVING = 2; - } - ServingStatus status = 1; -} - -service Health{ - rpc Check(HealthCheckRequest) returns (HealthCheckResponse); -} diff --git a/vendor/google.golang.org/grpc/health/health.go b/vendor/google.golang.org/grpc/health/health.go deleted file mode 100644 index 30a78667..00000000 --- a/vendor/google.golang.org/grpc/health/health.go +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc --go_out=plugins=grpc:. grpc_health_v1/health.proto - -// Package health provides some utility functions to health-check a server. The implementation -// is based on protobuf. Users need to write their own implementations if other IDLs are used. -package health - -import ( - "sync" - - "golang.org/x/net/context" - "google.golang.org/grpc/codes" - healthpb "google.golang.org/grpc/health/grpc_health_v1" - "google.golang.org/grpc/status" -) - -// Server implements `service Health`. -type Server struct { - mu sync.Mutex - // statusMap stores the serving status of the services this Server monitors. - statusMap map[string]healthpb.HealthCheckResponse_ServingStatus -} - -// NewServer returns a new Server. -func NewServer() *Server { - return &Server{ - statusMap: make(map[string]healthpb.HealthCheckResponse_ServingStatus), - } -} - -// Check implements `service Health`. -func (s *Server) Check(ctx context.Context, in *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) { - s.mu.Lock() - defer s.mu.Unlock() - if in.Service == "" { - // check the server overall health status. - return &healthpb.HealthCheckResponse{ - Status: healthpb.HealthCheckResponse_SERVING, - }, nil - } - if status, ok := s.statusMap[in.Service]; ok { - return &healthpb.HealthCheckResponse{ - Status: status, - }, nil - } - return nil, status.Error(codes.NotFound, "unknown service") -} - -// SetServingStatus is called when need to reset the serving status of a service -// or insert a new service entry into the statusMap. -func (s *Server) SetServingStatus(service string, status healthpb.HealthCheckResponse_ServingStatus) { - s.mu.Lock() - s.statusMap[service] = status - s.mu.Unlock() -} diff --git a/vendor/google.golang.org/grpc/interop/client/client.go b/vendor/google.golang.org/grpc/interop/client/client.go deleted file mode 100644 index da6bc2d2..00000000 --- a/vendor/google.golang.org/grpc/interop/client/client.go +++ /dev/null @@ -1,190 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "flag" - "net" - "strconv" - - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - "google.golang.org/grpc/credentials/oauth" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/interop" - testpb "google.golang.org/grpc/interop/grpc_testing" - "google.golang.org/grpc/testdata" -) - -var ( - caFile = flag.String("ca_file", "", "The file containning the CA root cert file") - useTLS = flag.Bool("use_tls", false, "Connection uses TLS if true, else plain TCP") - testCA = flag.Bool("use_test_ca", false, "Whether to replace platform root CAs with test CA as the CA root") - serviceAccountKeyFile = flag.String("service_account_key_file", "", "Path to service account json key file") - oauthScope = flag.String("oauth_scope", "", "The scope for OAuth2 tokens") - defaultServiceAccount = flag.String("default_service_account", "", "Email of GCE default service account") - serverHost = flag.String("server_host", "localhost", "The server host name") - serverPort = flag.Int("server_port", 10000, "The server port number") - tlsServerName = flag.String("server_host_override", "", "The server name use to verify the hostname returned by TLS handshake if it is not empty. Otherwise, --server_host is used.") - testCase = flag.String("test_case", "large_unary", - `Configure different test cases. Valid options are: - empty_unary : empty (zero bytes) request and response; - large_unary : single request and (large) response; - client_streaming : request streaming with single response; - server_streaming : single request with response streaming; - ping_pong : full-duplex streaming; - empty_stream : full-duplex streaming with zero message; - timeout_on_sleeping_server: fullduplex streaming on a sleeping server; - compute_engine_creds: large_unary with compute engine auth; - service_account_creds: large_unary with service account auth; - jwt_token_creds: large_unary with jwt token auth; - per_rpc_creds: large_unary with per rpc token; - oauth2_auth_token: large_unary with oauth2 token auth; - cancel_after_begin: cancellation after metadata has been sent but before payloads are sent; - cancel_after_first_response: cancellation after receiving 1st message from the server; - status_code_and_message: status code propagated back to client; - custom_metadata: server will echo custom metadata; - unimplemented_method: client attempts to call unimplemented method; - unimplemented_service: client attempts to call unimplemented service.`) -) - -func main() { - flag.Parse() - serverAddr := net.JoinHostPort(*serverHost, strconv.Itoa(*serverPort)) - var opts []grpc.DialOption - if *useTLS { - var sn string - if *tlsServerName != "" { - sn = *tlsServerName - } - var creds credentials.TransportCredentials - if *testCA { - var err error - if *caFile == "" { - *caFile = testdata.Path("ca.pem") - } - creds, err = credentials.NewClientTLSFromFile(*caFile, sn) - if err != nil { - grpclog.Fatalf("Failed to create TLS credentials %v", err) - } - } else { - creds = credentials.NewClientTLSFromCert(nil, sn) - } - opts = append(opts, grpc.WithTransportCredentials(creds)) - if *testCase == "compute_engine_creds" { - opts = append(opts, grpc.WithPerRPCCredentials(oauth.NewComputeEngine())) - } else if *testCase == "service_account_creds" { - jwtCreds, err := oauth.NewServiceAccountFromFile(*serviceAccountKeyFile, *oauthScope) - if err != nil { - grpclog.Fatalf("Failed to create JWT credentials: %v", err) - } - opts = append(opts, grpc.WithPerRPCCredentials(jwtCreds)) - } else if *testCase == "jwt_token_creds" { - jwtCreds, err := oauth.NewJWTAccessFromFile(*serviceAccountKeyFile) - if err != nil { - grpclog.Fatalf("Failed to create JWT credentials: %v", err) - } - opts = append(opts, grpc.WithPerRPCCredentials(jwtCreds)) - } else if *testCase == "oauth2_auth_token" { - opts = append(opts, grpc.WithPerRPCCredentials(oauth.NewOauthAccess(interop.GetToken(*serviceAccountKeyFile, *oauthScope)))) - } - } else { - opts = append(opts, grpc.WithInsecure()) - } - opts = append(opts, grpc.WithBlock()) - conn, err := grpc.Dial(serverAddr, opts...) - if err != nil { - grpclog.Fatalf("Fail to dial: %v", err) - } - defer conn.Close() - tc := testpb.NewTestServiceClient(conn) - switch *testCase { - case "empty_unary": - interop.DoEmptyUnaryCall(tc) - grpclog.Println("EmptyUnaryCall done") - case "large_unary": - interop.DoLargeUnaryCall(tc) - grpclog.Println("LargeUnaryCall done") - case "client_streaming": - interop.DoClientStreaming(tc) - grpclog.Println("ClientStreaming done") - case "server_streaming": - interop.DoServerStreaming(tc) - grpclog.Println("ServerStreaming done") - case "ping_pong": - interop.DoPingPong(tc) - grpclog.Println("Pingpong done") - case "empty_stream": - interop.DoEmptyStream(tc) - grpclog.Println("Emptystream done") - case "timeout_on_sleeping_server": - interop.DoTimeoutOnSleepingServer(tc) - grpclog.Println("TimeoutOnSleepingServer done") - case "compute_engine_creds": - if !*useTLS { - grpclog.Fatalf("TLS is not enabled. TLS is required to execute compute_engine_creds test case.") - } - interop.DoComputeEngineCreds(tc, *defaultServiceAccount, *oauthScope) - grpclog.Println("ComputeEngineCreds done") - case "service_account_creds": - if !*useTLS { - grpclog.Fatalf("TLS is not enabled. TLS is required to execute service_account_creds test case.") - } - interop.DoServiceAccountCreds(tc, *serviceAccountKeyFile, *oauthScope) - grpclog.Println("ServiceAccountCreds done") - case "jwt_token_creds": - if !*useTLS { - grpclog.Fatalf("TLS is not enabled. TLS is required to execute jwt_token_creds test case.") - } - interop.DoJWTTokenCreds(tc, *serviceAccountKeyFile) - grpclog.Println("JWTtokenCreds done") - case "per_rpc_creds": - if !*useTLS { - grpclog.Fatalf("TLS is not enabled. TLS is required to execute per_rpc_creds test case.") - } - interop.DoPerRPCCreds(tc, *serviceAccountKeyFile, *oauthScope) - grpclog.Println("PerRPCCreds done") - case "oauth2_auth_token": - if !*useTLS { - grpclog.Fatalf("TLS is not enabled. TLS is required to execute oauth2_auth_token test case.") - } - interop.DoOauth2TokenCreds(tc, *serviceAccountKeyFile, *oauthScope) - grpclog.Println("Oauth2TokenCreds done") - case "cancel_after_begin": - interop.DoCancelAfterBegin(tc) - grpclog.Println("CancelAfterBegin done") - case "cancel_after_first_response": - interop.DoCancelAfterFirstResponse(tc) - grpclog.Println("CancelAfterFirstResponse done") - case "status_code_and_message": - interop.DoStatusCodeAndMessage(tc) - grpclog.Println("StatusCodeAndMessage done") - case "custom_metadata": - interop.DoCustomMetadata(tc) - grpclog.Println("CustomMetadata done") - case "unimplemented_method": - interop.DoUnimplementedMethod(conn) - grpclog.Println("UnimplementedMethod done") - case "unimplemented_service": - interop.DoUnimplementedService(testpb.NewUnimplementedServiceClient(conn)) - grpclog.Println("UnimplementedService done") - default: - grpclog.Fatal("Unsupported test case: ", *testCase) - } -} diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/test.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/test.pb.go deleted file mode 100644 index 1e7a9abd..00000000 --- a/vendor/google.golang.org/grpc/interop/grpc_testing/test.pb.go +++ /dev/null @@ -1,883 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: grpc_testing/test.proto - -/* -Package grpc_testing is a generated protocol buffer package. - -It is generated from these files: - grpc_testing/test.proto - -It has these top-level messages: - Empty - Payload - EchoStatus - SimpleRequest - SimpleResponse - StreamingInputCallRequest - StreamingInputCallResponse - ResponseParameters - StreamingOutputCallRequest - StreamingOutputCallResponse -*/ -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The type of payload that should be returned. -type PayloadType int32 - -const ( - // Compressable text format. - PayloadType_COMPRESSABLE PayloadType = 0 - // Uncompressable binary format. - PayloadType_UNCOMPRESSABLE PayloadType = 1 - // Randomly chosen from all other formats defined in this enum. - PayloadType_RANDOM PayloadType = 2 -) - -var PayloadType_name = map[int32]string{ - 0: "COMPRESSABLE", - 1: "UNCOMPRESSABLE", - 2: "RANDOM", -} -var PayloadType_value = map[string]int32{ - "COMPRESSABLE": 0, - "UNCOMPRESSABLE": 1, - "RANDOM": 2, -} - -func (x PayloadType) String() string { - return proto.EnumName(PayloadType_name, int32(x)) -} -func (PayloadType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type Empty struct { -} - -func (m *Empty) Reset() { *m = Empty{} } -func (m *Empty) String() string { return proto.CompactTextString(m) } -func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// A block of data, to simply increase gRPC message size. -type Payload struct { - // The type of data in body. - Type PayloadType `protobuf:"varint,1,opt,name=type,enum=grpc.testing.PayloadType" json:"type,omitempty"` - // Primary contents of payload. - Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` -} - -func (m *Payload) Reset() { *m = Payload{} } -func (m *Payload) String() string { return proto.CompactTextString(m) } -func (*Payload) ProtoMessage() {} -func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Payload) GetType() PayloadType { - if m != nil { - return m.Type - } - return PayloadType_COMPRESSABLE -} - -func (m *Payload) GetBody() []byte { - if m != nil { - return m.Body - } - return nil -} - -// A protobuf representation for grpc status. This is used by test -// clients to specify a status that the server should attempt to return. -type EchoStatus struct { - Code int32 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` -} - -func (m *EchoStatus) Reset() { *m = EchoStatus{} } -func (m *EchoStatus) String() string { return proto.CompactTextString(m) } -func (*EchoStatus) ProtoMessage() {} -func (*EchoStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *EchoStatus) GetCode() int32 { - if m != nil { - return m.Code - } - return 0 -} - -func (m *EchoStatus) GetMessage() string { - if m != nil { - return m.Message - } - return "" -} - -// Unary request. -type SimpleRequest struct { - // Desired payload type in the response from the server. - // If response_type is RANDOM, server randomly chooses one from other formats. - ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,enum=grpc.testing.PayloadType" json:"response_type,omitempty"` - // Desired payload size in the response from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - ResponseSize int32 `protobuf:"varint,2,opt,name=response_size,json=responseSize" json:"response_size,omitempty"` - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"` - // Whether SimpleResponse should include username. - FillUsername bool `protobuf:"varint,4,opt,name=fill_username,json=fillUsername" json:"fill_username,omitempty"` - // Whether SimpleResponse should include OAuth scope. - FillOauthScope bool `protobuf:"varint,5,opt,name=fill_oauth_scope,json=fillOauthScope" json:"fill_oauth_scope,omitempty"` - // Whether server should return a given status - ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus" json:"response_status,omitempty"` -} - -func (m *SimpleRequest) Reset() { *m = SimpleRequest{} } -func (m *SimpleRequest) String() string { return proto.CompactTextString(m) } -func (*SimpleRequest) ProtoMessage() {} -func (*SimpleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SimpleRequest) GetResponseType() PayloadType { - if m != nil { - return m.ResponseType - } - return PayloadType_COMPRESSABLE -} - -func (m *SimpleRequest) GetResponseSize() int32 { - if m != nil { - return m.ResponseSize - } - return 0 -} - -func (m *SimpleRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *SimpleRequest) GetFillUsername() bool { - if m != nil { - return m.FillUsername - } - return false -} - -func (m *SimpleRequest) GetFillOauthScope() bool { - if m != nil { - return m.FillOauthScope - } - return false -} - -func (m *SimpleRequest) GetResponseStatus() *EchoStatus { - if m != nil { - return m.ResponseStatus - } - return nil -} - -// Unary response, as configured by the request. -type SimpleResponse struct { - // Payload to increase message size. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` - // The user the request came from, for verifying authentication was - // successful when the client expected it. - Username string `protobuf:"bytes,2,opt,name=username" json:"username,omitempty"` - // OAuth scope. - OauthScope string `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope" json:"oauth_scope,omitempty"` -} - -func (m *SimpleResponse) Reset() { *m = SimpleResponse{} } -func (m *SimpleResponse) String() string { return proto.CompactTextString(m) } -func (*SimpleResponse) ProtoMessage() {} -func (*SimpleResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *SimpleResponse) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *SimpleResponse) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *SimpleResponse) GetOauthScope() string { - if m != nil { - return m.OauthScope - } - return "" -} - -// Client-streaming request. -type StreamingInputCallRequest struct { - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` -} - -func (m *StreamingInputCallRequest) Reset() { *m = StreamingInputCallRequest{} } -func (m *StreamingInputCallRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingInputCallRequest) ProtoMessage() {} -func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *StreamingInputCallRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -// Client-streaming response. -type StreamingInputCallResponse struct { - // Aggregated size of payloads received from the client. - AggregatedPayloadSize int32 `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize" json:"aggregated_payload_size,omitempty"` -} - -func (m *StreamingInputCallResponse) Reset() { *m = StreamingInputCallResponse{} } -func (m *StreamingInputCallResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingInputCallResponse) ProtoMessage() {} -func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 { - if m != nil { - return m.AggregatedPayloadSize - } - return 0 -} - -// Configuration for a particular response. -type ResponseParameters struct { - // Desired payload sizes in responses from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - Size int32 `protobuf:"varint,1,opt,name=size" json:"size,omitempty"` - // Desired interval between consecutive responses in the response stream in - // microseconds. - IntervalUs int32 `protobuf:"varint,2,opt,name=interval_us,json=intervalUs" json:"interval_us,omitempty"` -} - -func (m *ResponseParameters) Reset() { *m = ResponseParameters{} } -func (m *ResponseParameters) String() string { return proto.CompactTextString(m) } -func (*ResponseParameters) ProtoMessage() {} -func (*ResponseParameters) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ResponseParameters) GetSize() int32 { - if m != nil { - return m.Size - } - return 0 -} - -func (m *ResponseParameters) GetIntervalUs() int32 { - if m != nil { - return m.IntervalUs - } - return 0 -} - -// Server-streaming request. -type StreamingOutputCallRequest struct { - // Desired payload type in the response from the server. - // If response_type is RANDOM, the payload from each response in the stream - // might be of different types. This is to simulate a mixed type of payload - // stream. - ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,enum=grpc.testing.PayloadType" json:"response_type,omitempty"` - // Configuration for each expected response message. - ResponseParameters []*ResponseParameters `protobuf:"bytes,2,rep,name=response_parameters,json=responseParameters" json:"response_parameters,omitempty"` - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"` - // Whether server should return a given status - ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus" json:"response_status,omitempty"` -} - -func (m *StreamingOutputCallRequest) Reset() { *m = StreamingOutputCallRequest{} } -func (m *StreamingOutputCallRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingOutputCallRequest) ProtoMessage() {} -func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *StreamingOutputCallRequest) GetResponseType() PayloadType { - if m != nil { - return m.ResponseType - } - return PayloadType_COMPRESSABLE -} - -func (m *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters { - if m != nil { - return m.ResponseParameters - } - return nil -} - -func (m *StreamingOutputCallRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus { - if m != nil { - return m.ResponseStatus - } - return nil -} - -// Server-streaming response, as configured by the request and parameters. -type StreamingOutputCallResponse struct { - // Payload to increase response size. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` -} - -func (m *StreamingOutputCallResponse) Reset() { *m = StreamingOutputCallResponse{} } -func (m *StreamingOutputCallResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingOutputCallResponse) ProtoMessage() {} -func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } - -func (m *StreamingOutputCallResponse) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func init() { - proto.RegisterType((*Empty)(nil), "grpc.testing.Empty") - proto.RegisterType((*Payload)(nil), "grpc.testing.Payload") - proto.RegisterType((*EchoStatus)(nil), "grpc.testing.EchoStatus") - proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest") - proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse") - proto.RegisterType((*StreamingInputCallRequest)(nil), "grpc.testing.StreamingInputCallRequest") - proto.RegisterType((*StreamingInputCallResponse)(nil), "grpc.testing.StreamingInputCallResponse") - proto.RegisterType((*ResponseParameters)(nil), "grpc.testing.ResponseParameters") - proto.RegisterType((*StreamingOutputCallRequest)(nil), "grpc.testing.StreamingOutputCallRequest") - proto.RegisterType((*StreamingOutputCallResponse)(nil), "grpc.testing.StreamingOutputCallResponse") - proto.RegisterEnum("grpc.testing.PayloadType", PayloadType_name, PayloadType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for TestService service - -type TestServiceClient interface { - // One empty request followed by one empty response. - EmptyCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) - // One request followed by one response. - // The server returns the client payload as-is. - UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) - // One request followed by a sequence of responses (streamed download). - // The server returns the payload with client desired type and sizes. - StreamingOutputCall(ctx context.Context, in *StreamingOutputCallRequest, opts ...grpc.CallOption) (TestService_StreamingOutputCallClient, error) - // A sequence of requests followed by one response (streamed upload). - // The server returns the aggregated size of client payload as the result. - StreamingInputCall(ctx context.Context, opts ...grpc.CallOption) (TestService_StreamingInputCallClient, error) - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) - // A sequence of requests followed by a sequence of responses. - // The server buffers all the client requests and then serves them in order. A - // stream of responses are returned to the client when the server starts with - // first request. - HalfDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_HalfDuplexCallClient, error) -} - -type testServiceClient struct { - cc *grpc.ClientConn -} - -func NewTestServiceClient(cc *grpc.ClientConn) TestServiceClient { - return &testServiceClient{cc} -} - -func (c *testServiceClient) EmptyCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { - out := new(Empty) - err := grpc.Invoke(ctx, "/grpc.testing.TestService/EmptyCall", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) { - out := new(SimpleResponse) - err := grpc.Invoke(ctx, "/grpc.testing.TestService/UnaryCall", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) StreamingOutputCall(ctx context.Context, in *StreamingOutputCallRequest, opts ...grpc.CallOption) (TestService_StreamingOutputCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[0], c.cc, "/grpc.testing.TestService/StreamingOutputCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceStreamingOutputCallClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type TestService_StreamingOutputCallClient interface { - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceStreamingOutputCallClient struct { - grpc.ClientStream -} - -func (x *testServiceStreamingOutputCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) StreamingInputCall(ctx context.Context, opts ...grpc.CallOption) (TestService_StreamingInputCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[1], c.cc, "/grpc.testing.TestService/StreamingInputCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceStreamingInputCallClient{stream} - return x, nil -} - -type TestService_StreamingInputCallClient interface { - Send(*StreamingInputCallRequest) error - CloseAndRecv() (*StreamingInputCallResponse, error) - grpc.ClientStream -} - -type testServiceStreamingInputCallClient struct { - grpc.ClientStream -} - -func (x *testServiceStreamingInputCallClient) Send(m *StreamingInputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceStreamingInputCallClient) CloseAndRecv() (*StreamingInputCallResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(StreamingInputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[2], c.cc, "/grpc.testing.TestService/FullDuplexCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceFullDuplexCallClient{stream} - return x, nil -} - -type TestService_FullDuplexCallClient interface { - Send(*StreamingOutputCallRequest) error - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceFullDuplexCallClient struct { - grpc.ClientStream -} - -func (x *testServiceFullDuplexCallClient) Send(m *StreamingOutputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceFullDuplexCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) HalfDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_HalfDuplexCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[3], c.cc, "/grpc.testing.TestService/HalfDuplexCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceHalfDuplexCallClient{stream} - return x, nil -} - -type TestService_HalfDuplexCallClient interface { - Send(*StreamingOutputCallRequest) error - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceHalfDuplexCallClient struct { - grpc.ClientStream -} - -func (x *testServiceHalfDuplexCallClient) Send(m *StreamingOutputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceHalfDuplexCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for TestService service - -type TestServiceServer interface { - // One empty request followed by one empty response. - EmptyCall(context.Context, *Empty) (*Empty, error) - // One request followed by one response. - // The server returns the client payload as-is. - UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error) - // One request followed by a sequence of responses (streamed download). - // The server returns the payload with client desired type and sizes. - StreamingOutputCall(*StreamingOutputCallRequest, TestService_StreamingOutputCallServer) error - // A sequence of requests followed by one response (streamed upload). - // The server returns the aggregated size of client payload as the result. - StreamingInputCall(TestService_StreamingInputCallServer) error - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - FullDuplexCall(TestService_FullDuplexCallServer) error - // A sequence of requests followed by a sequence of responses. - // The server buffers all the client requests and then serves them in order. A - // stream of responses are returned to the client when the server starts with - // first request. - HalfDuplexCall(TestService_HalfDuplexCallServer) error -} - -func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { - s.RegisterService(&_TestService_serviceDesc, srv) -} - -func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).EmptyCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.TestService/EmptyCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).EmptyCall(ctx, req.(*Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SimpleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).UnaryCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.TestService/UnaryCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).UnaryCall(ctx, req.(*SimpleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestService_StreamingOutputCall_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamingOutputCallRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(TestServiceServer).StreamingOutputCall(m, &testServiceStreamingOutputCallServer{stream}) -} - -type TestService_StreamingOutputCallServer interface { - Send(*StreamingOutputCallResponse) error - grpc.ServerStream -} - -type testServiceStreamingOutputCallServer struct { - grpc.ServerStream -} - -func (x *testServiceStreamingOutputCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _TestService_StreamingInputCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).StreamingInputCall(&testServiceStreamingInputCallServer{stream}) -} - -type TestService_StreamingInputCallServer interface { - SendAndClose(*StreamingInputCallResponse) error - Recv() (*StreamingInputCallRequest, error) - grpc.ServerStream -} - -type testServiceStreamingInputCallServer struct { - grpc.ServerStream -} - -func (x *testServiceStreamingInputCallServer) SendAndClose(m *StreamingInputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceStreamingInputCallServer) Recv() (*StreamingInputCallRequest, error) { - m := new(StreamingInputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_FullDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).FullDuplexCall(&testServiceFullDuplexCallServer{stream}) -} - -type TestService_FullDuplexCallServer interface { - Send(*StreamingOutputCallResponse) error - Recv() (*StreamingOutputCallRequest, error) - grpc.ServerStream -} - -type testServiceFullDuplexCallServer struct { - grpc.ServerStream -} - -func (x *testServiceFullDuplexCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceFullDuplexCallServer) Recv() (*StreamingOutputCallRequest, error) { - m := new(StreamingOutputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_HalfDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).HalfDuplexCall(&testServiceHalfDuplexCallServer{stream}) -} - -type TestService_HalfDuplexCallServer interface { - Send(*StreamingOutputCallResponse) error - Recv() (*StreamingOutputCallRequest, error) - grpc.ServerStream -} - -type testServiceHalfDuplexCallServer struct { - grpc.ServerStream -} - -func (x *testServiceHalfDuplexCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceHalfDuplexCallServer) Recv() (*StreamingOutputCallRequest, error) { - m := new(StreamingOutputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _TestService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.TestService", - HandlerType: (*TestServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "EmptyCall", - Handler: _TestService_EmptyCall_Handler, - }, - { - MethodName: "UnaryCall", - Handler: _TestService_UnaryCall_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingOutputCall", - Handler: _TestService_StreamingOutputCall_Handler, - ServerStreams: true, - }, - { - StreamName: "StreamingInputCall", - Handler: _TestService_StreamingInputCall_Handler, - ClientStreams: true, - }, - { - StreamName: "FullDuplexCall", - Handler: _TestService_FullDuplexCall_Handler, - ServerStreams: true, - ClientStreams: true, - }, - { - StreamName: "HalfDuplexCall", - Handler: _TestService_HalfDuplexCall_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "grpc_testing/test.proto", -} - -// Client API for UnimplementedService service - -type UnimplementedServiceClient interface { - // A call that no server should implement - UnimplementedCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) -} - -type unimplementedServiceClient struct { - cc *grpc.ClientConn -} - -func NewUnimplementedServiceClient(cc *grpc.ClientConn) UnimplementedServiceClient { - return &unimplementedServiceClient{cc} -} - -func (c *unimplementedServiceClient) UnimplementedCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { - out := new(Empty) - err := grpc.Invoke(ctx, "/grpc.testing.UnimplementedService/UnimplementedCall", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for UnimplementedService service - -type UnimplementedServiceServer interface { - // A call that no server should implement - UnimplementedCall(context.Context, *Empty) (*Empty, error) -} - -func RegisterUnimplementedServiceServer(s *grpc.Server, srv UnimplementedServiceServer) { - s.RegisterService(&_UnimplementedService_serviceDesc, srv) -} - -func _UnimplementedService_UnimplementedCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UnimplementedServiceServer).UnimplementedCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.UnimplementedService/UnimplementedCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UnimplementedServiceServer).UnimplementedCall(ctx, req.(*Empty)) - } - return interceptor(ctx, in, info, handler) -} - -var _UnimplementedService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.UnimplementedService", - HandlerType: (*UnimplementedServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "UnimplementedCall", - Handler: _UnimplementedService_UnimplementedCall_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "grpc_testing/test.proto", -} - -func init() { proto.RegisterFile("grpc_testing/test.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 664 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xdd, 0x6e, 0xd3, 0x4c, - 0x10, 0xfd, 0x9c, 0x26, 0x4d, 0x3b, 0x49, 0xfd, 0x85, 0x2d, 0x55, 0xdd, 0x14, 0x89, 0xc8, 0x5c, - 0x60, 0x90, 0x48, 0x51, 0x10, 0x5c, 0x20, 0x01, 0x2a, 0x6d, 0x2a, 0x2a, 0xb5, 0x4d, 0xb1, 0x9b, - 0xeb, 0x68, 0x9b, 0x4c, 0x5d, 0x4b, 0xfe, 0xc3, 0xbb, 0xae, 0x48, 0x2f, 0x78, 0x19, 0x1e, 0x82, - 0x0b, 0x5e, 0x0e, 0xed, 0xda, 0x4e, 0x9c, 0xd4, 0x15, 0x0d, 0x7f, 0x57, 0xf1, 0x9e, 0x39, 0x33, - 0x3b, 0x67, 0xe6, 0xd8, 0x81, 0x4d, 0x3b, 0x0a, 0x87, 0x03, 0x8e, 0x8c, 0x3b, 0xbe, 0xbd, 0x23, - 0x7e, 0xdb, 0x61, 0x14, 0xf0, 0x80, 0xd4, 0x45, 0xa0, 0x9d, 0x06, 0xf4, 0x2a, 0x54, 0xba, 0x5e, - 0xc8, 0xc7, 0xfa, 0x11, 0x54, 0x4f, 0xe9, 0xd8, 0x0d, 0xe8, 0x88, 0x3c, 0x83, 0x32, 0x1f, 0x87, - 0xa8, 0x29, 0x2d, 0xc5, 0x50, 0x3b, 0x5b, 0xed, 0x7c, 0x42, 0x3b, 0x25, 0x9d, 0x8d, 0x43, 0x34, - 0x25, 0x8d, 0x10, 0x28, 0x9f, 0x07, 0xa3, 0xb1, 0x56, 0x6a, 0x29, 0x46, 0xdd, 0x94, 0xcf, 0xfa, - 0x6b, 0x80, 0xee, 0xf0, 0x32, 0xb0, 0x38, 0xe5, 0x31, 0x13, 0x8c, 0x61, 0x30, 0x4a, 0x0a, 0x56, - 0x4c, 0xf9, 0x4c, 0x34, 0xa8, 0x7a, 0xc8, 0x18, 0xb5, 0x51, 0x26, 0xae, 0x9a, 0xd9, 0x51, 0xff, - 0x56, 0x82, 0x35, 0xcb, 0xf1, 0x42, 0x17, 0x4d, 0xfc, 0x14, 0x23, 0xe3, 0xe4, 0x2d, 0xac, 0x45, - 0xc8, 0xc2, 0xc0, 0x67, 0x38, 0xb8, 0x5b, 0x67, 0xf5, 0x8c, 0x2f, 0x4e, 0xe4, 0x51, 0x2e, 0x9f, - 0x39, 0xd7, 0xc9, 0x8d, 0x95, 0x29, 0xc9, 0x72, 0xae, 0x91, 0xec, 0x40, 0x35, 0x4c, 0x2a, 0x68, - 0x4b, 0x2d, 0xc5, 0xa8, 0x75, 0x36, 0x0a, 0xcb, 0x9b, 0x19, 0x4b, 0x54, 0xbd, 0x70, 0x5c, 0x77, - 0x10, 0x33, 0x8c, 0x7c, 0xea, 0xa1, 0x56, 0x6e, 0x29, 0xc6, 0x8a, 0x59, 0x17, 0x60, 0x3f, 0xc5, - 0x88, 0x01, 0x0d, 0x49, 0x0a, 0x68, 0xcc, 0x2f, 0x07, 0x6c, 0x18, 0x84, 0xa8, 0x55, 0x24, 0x4f, - 0x15, 0x78, 0x4f, 0xc0, 0x96, 0x40, 0xc9, 0x2e, 0xfc, 0x3f, 0x6d, 0x52, 0xce, 0x4d, 0xab, 0xca, - 0x3e, 0xb4, 0xd9, 0x3e, 0xa6, 0x73, 0x35, 0xd5, 0x89, 0x00, 0x79, 0xd6, 0xbf, 0x80, 0x9a, 0x0d, - 0x2e, 0xc1, 0xf3, 0xa2, 0x94, 0x3b, 0x89, 0x6a, 0xc2, 0xca, 0x44, 0x4f, 0xb2, 0x97, 0xc9, 0x99, - 0x3c, 0x84, 0x5a, 0x5e, 0xc6, 0x92, 0x0c, 0x43, 0x30, 0x91, 0xa0, 0x1f, 0xc1, 0x96, 0xc5, 0x23, - 0xa4, 0x9e, 0xe3, 0xdb, 0x87, 0x7e, 0x18, 0xf3, 0x3d, 0xea, 0xba, 0xd9, 0x12, 0x17, 0x6d, 0x45, - 0x3f, 0x83, 0x66, 0x51, 0xb5, 0x54, 0xd9, 0x2b, 0xd8, 0xa4, 0xb6, 0x1d, 0xa1, 0x4d, 0x39, 0x8e, - 0x06, 0x69, 0x4e, 0xb2, 0xdd, 0xc4, 0x66, 0x1b, 0xd3, 0x70, 0x5a, 0x5a, 0xac, 0x59, 0x3f, 0x04, - 0x92, 0xd5, 0x38, 0xa5, 0x11, 0xf5, 0x90, 0x63, 0x24, 0x1d, 0x9a, 0x4b, 0x95, 0xcf, 0x42, 0xae, - 0xe3, 0x73, 0x8c, 0xae, 0xa8, 0xd8, 0x71, 0xea, 0x19, 0xc8, 0xa0, 0x3e, 0xd3, 0xbf, 0x96, 0x72, - 0x1d, 0xf6, 0x62, 0x3e, 0x27, 0xf8, 0x77, 0x5d, 0xfb, 0x11, 0xd6, 0x27, 0xf9, 0xe1, 0xa4, 0x55, - 0xad, 0xd4, 0x5a, 0x32, 0x6a, 0x9d, 0xd6, 0x6c, 0x95, 0x9b, 0x92, 0x4c, 0x12, 0xdd, 0x94, 0xb9, - 0xb0, 0xc7, 0xff, 0x80, 0x29, 0x4f, 0x60, 0xbb, 0x70, 0x48, 0xbf, 0xe8, 0xd0, 0xa7, 0xef, 0xa0, - 0x96, 0x9b, 0x19, 0x69, 0x40, 0x7d, 0xaf, 0x77, 0x7c, 0x6a, 0x76, 0x2d, 0x6b, 0xf7, 0xfd, 0x51, - 0xb7, 0xf1, 0x1f, 0x21, 0xa0, 0xf6, 0x4f, 0x66, 0x30, 0x85, 0x00, 0x2c, 0x9b, 0xbb, 0x27, 0xfb, - 0xbd, 0xe3, 0x46, 0xa9, 0xf3, 0xbd, 0x0c, 0xb5, 0x33, 0x64, 0xdc, 0xc2, 0xe8, 0xca, 0x19, 0x22, - 0x79, 0x09, 0xab, 0xf2, 0x13, 0x28, 0xda, 0x22, 0xeb, 0x73, 0xba, 0x44, 0xa0, 0x59, 0x04, 0x92, - 0x03, 0x58, 0xed, 0xfb, 0x34, 0x4a, 0xd2, 0xb6, 0x67, 0x19, 0x33, 0x9f, 0xaf, 0xe6, 0x83, 0xe2, - 0x60, 0x3a, 0x00, 0x17, 0xd6, 0x0b, 0xe6, 0x43, 0x8c, 0xb9, 0xa4, 0x5b, 0x7d, 0xd6, 0x7c, 0x72, - 0x07, 0x66, 0x72, 0xd7, 0x73, 0x85, 0x38, 0x40, 0x6e, 0xbe, 0x54, 0xe4, 0xf1, 0x2d, 0x25, 0xe6, - 0x5f, 0xe2, 0xa6, 0xf1, 0x73, 0x62, 0x72, 0x95, 0x21, 0xae, 0x52, 0x0f, 0x62, 0xd7, 0xdd, 0x8f, - 0x43, 0x17, 0x3f, 0xff, 0x35, 0x4d, 0x86, 0x22, 0x55, 0xa9, 0x1f, 0xa8, 0x7b, 0xf1, 0x0f, 0xae, - 0xea, 0xf4, 0xe1, 0x7e, 0xdf, 0x97, 0x1b, 0xf4, 0xd0, 0xe7, 0x38, 0xca, 0x5c, 0xf4, 0x06, 0xee, - 0xcd, 0xe0, 0x8b, 0xb9, 0xe9, 0x7c, 0x59, 0xfe, 0x39, 0xbf, 0xf8, 0x11, 0x00, 0x00, 0xff, 0xff, - 0x87, 0xd4, 0xf3, 0x98, 0xb7, 0x07, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/test.proto b/vendor/google.golang.org/grpc/interop/grpc_testing/test.proto deleted file mode 100644 index f9f303db..00000000 --- a/vendor/google.golang.org/grpc/interop/grpc_testing/test.proto +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// An integration test service that covers all the method signature permutations -// of unary/streaming requests/responses. -syntax = "proto3"; - -package grpc.testing; - -message Empty {} - -// The type of payload that should be returned. -enum PayloadType { - // Compressable text format. - COMPRESSABLE = 0; - - // Uncompressable binary format. - UNCOMPRESSABLE = 1; - - // Randomly chosen from all other formats defined in this enum. - RANDOM = 2; -} - -// A block of data, to simply increase gRPC message size. -message Payload { - // The type of data in body. - PayloadType type = 1; - // Primary contents of payload. - bytes body = 2; -} - -// A protobuf representation for grpc status. This is used by test -// clients to specify a status that the server should attempt to return. -message EchoStatus { - int32 code = 1; - string message = 2; -} - -// Unary request. -message SimpleRequest { - // Desired payload type in the response from the server. - // If response_type is RANDOM, server randomly chooses one from other formats. - PayloadType response_type = 1; - - // Desired payload size in the response from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - int32 response_size = 2; - - // Optional input payload sent along with the request. - Payload payload = 3; - - // Whether SimpleResponse should include username. - bool fill_username = 4; - - // Whether SimpleResponse should include OAuth scope. - bool fill_oauth_scope = 5; - - // Whether server should return a given status - EchoStatus response_status = 7; -} - -// Unary response, as configured by the request. -message SimpleResponse { - // Payload to increase message size. - Payload payload = 1; - - // The user the request came from, for verifying authentication was - // successful when the client expected it. - string username = 2; - - // OAuth scope. - string oauth_scope = 3; -} - -// Client-streaming request. -message StreamingInputCallRequest { - // Optional input payload sent along with the request. - Payload payload = 1; - - // Not expecting any payload from the response. -} - -// Client-streaming response. -message StreamingInputCallResponse { - // Aggregated size of payloads received from the client. - int32 aggregated_payload_size = 1; -} - -// Configuration for a particular response. -message ResponseParameters { - // Desired payload sizes in responses from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - int32 size = 1; - - // Desired interval between consecutive responses in the response stream in - // microseconds. - int32 interval_us = 2; -} - -// Server-streaming request. -message StreamingOutputCallRequest { - // Desired payload type in the response from the server. - // If response_type is RANDOM, the payload from each response in the stream - // might be of different types. This is to simulate a mixed type of payload - // stream. - PayloadType response_type = 1; - - // Configuration for each expected response message. - repeated ResponseParameters response_parameters = 2; - - // Optional input payload sent along with the request. - Payload payload = 3; - - // Whether server should return a given status - EchoStatus response_status = 7; -} - -// Server-streaming response, as configured by the request and parameters. -message StreamingOutputCallResponse { - // Payload to increase response size. - Payload payload = 1; -} - -// A simple service to test the various types of RPCs and experiment with -// performance with various types of payload. -service TestService { - // One empty request followed by one empty response. - rpc EmptyCall(Empty) returns (Empty); - - // One request followed by one response. - // The server returns the client payload as-is. - rpc UnaryCall(SimpleRequest) returns (SimpleResponse); - - // One request followed by a sequence of responses (streamed download). - // The server returns the payload with client desired type and sizes. - rpc StreamingOutputCall(StreamingOutputCallRequest) - returns (stream StreamingOutputCallResponse); - - // A sequence of requests followed by one response (streamed upload). - // The server returns the aggregated size of client payload as the result. - rpc StreamingInputCall(stream StreamingInputCallRequest) - returns (StreamingInputCallResponse); - - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - rpc FullDuplexCall(stream StreamingOutputCallRequest) - returns (stream StreamingOutputCallResponse); - - // A sequence of requests followed by a sequence of responses. - // The server buffers all the client requests and then serves them in order. A - // stream of responses are returned to the client when the server starts with - // first request. - rpc HalfDuplexCall(stream StreamingOutputCallRequest) - returns (stream StreamingOutputCallResponse); -} - -// A simple service NOT implemented at servers so clients can test for -// that case. -service UnimplementedService { - // A call that no server should implement - rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty); -} diff --git a/vendor/google.golang.org/grpc/interop/http2/negative_http2_client.go b/vendor/google.golang.org/grpc/interop/http2/negative_http2_client.go deleted file mode 100644 index 1806d465..00000000 --- a/vendor/google.golang.org/grpc/interop/http2/negative_http2_client.go +++ /dev/null @@ -1,159 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - * Client used to test http2 error edge cases like GOAWAYs and RST_STREAMs - * - * Documentation: - * https://github.com/grpc/grpc/blob/master/doc/negative-http2-interop-test-descriptions.md - */ - -package main - -import ( - "flag" - "net" - "strconv" - "sync" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/interop" - testpb "google.golang.org/grpc/interop/grpc_testing" - "google.golang.org/grpc/status" -) - -var ( - serverHost = flag.String("server_host", "127.0.0.1", "The server host name") - serverPort = flag.Int("server_port", 8080, "The server port number") - testCase = flag.String("test_case", "goaway", - `Configure different test cases. Valid options are: - goaway : client sends two requests, the server will send a goaway in between; - rst_after_header : server will send rst_stream after it sends headers; - rst_during_data : server will send rst_stream while sending data; - rst_after_data : server will send rst_stream after sending data; - ping : server will send pings between each http2 frame; - max_streams : server will ensure that the max_concurrent_streams limit is upheld;`) - largeReqSize = 271828 - largeRespSize = 314159 -) - -func largeSimpleRequest() *testpb.SimpleRequest { - pl := interop.ClientNewPayload(testpb.PayloadType_COMPRESSABLE, largeReqSize) - return &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeRespSize), - Payload: pl, - } -} - -// sends two unary calls. The server asserts that the calls use different connections. -func goaway(tc testpb.TestServiceClient) { - interop.DoLargeUnaryCall(tc) - // sleep to ensure that the client has time to recv the GOAWAY. - // TODO(ncteisen): make this less hacky. - time.Sleep(1 * time.Second) - interop.DoLargeUnaryCall(tc) -} - -func rstAfterHeader(tc testpb.TestServiceClient) { - req := largeSimpleRequest() - reply, err := tc.UnaryCall(context.Background(), req) - if reply != nil { - grpclog.Fatalf("Client received reply despite server sending rst stream after header") - } - if status.Code(err) != codes.Internal { - grpclog.Fatalf("%v.UnaryCall() = _, %v, want _, %v", tc, status.Code(err), codes.Internal) - } -} - -func rstDuringData(tc testpb.TestServiceClient) { - req := largeSimpleRequest() - reply, err := tc.UnaryCall(context.Background(), req) - if reply != nil { - grpclog.Fatalf("Client received reply despite server sending rst stream during data") - } - if status.Code(err) != codes.Unknown { - grpclog.Fatalf("%v.UnaryCall() = _, %v, want _, %v", tc, status.Code(err), codes.Unknown) - } -} - -func rstAfterData(tc testpb.TestServiceClient) { - req := largeSimpleRequest() - reply, err := tc.UnaryCall(context.Background(), req) - if reply != nil { - grpclog.Fatalf("Client received reply despite server sending rst stream after data") - } - if status.Code(err) != codes.Internal { - grpclog.Fatalf("%v.UnaryCall() = _, %v, want _, %v", tc, status.Code(err), codes.Internal) - } -} - -func ping(tc testpb.TestServiceClient) { - // The server will assert that every ping it sends was ACK-ed by the client. - interop.DoLargeUnaryCall(tc) -} - -func maxStreams(tc testpb.TestServiceClient) { - interop.DoLargeUnaryCall(tc) - var wg sync.WaitGroup - for i := 0; i < 15; i++ { - wg.Add(1) - go func() { - defer wg.Done() - interop.DoLargeUnaryCall(tc) - }() - } - wg.Wait() -} - -func main() { - flag.Parse() - serverAddr := net.JoinHostPort(*serverHost, strconv.Itoa(*serverPort)) - var opts []grpc.DialOption - opts = append(opts, grpc.WithInsecure()) - conn, err := grpc.Dial(serverAddr, opts...) - if err != nil { - grpclog.Fatalf("Fail to dial: %v", err) - } - defer conn.Close() - tc := testpb.NewTestServiceClient(conn) - switch *testCase { - case "goaway": - goaway(tc) - grpclog.Println("goaway done") - case "rst_after_header": - rstAfterHeader(tc) - grpclog.Println("rst_after_header done") - case "rst_during_data": - rstDuringData(tc) - grpclog.Println("rst_during_data done") - case "rst_after_data": - rstAfterData(tc) - grpclog.Println("rst_after_data done") - case "ping": - ping(tc) - grpclog.Println("ping done") - case "max_streams": - maxStreams(tc) - grpclog.Println("max_streams done") - default: - grpclog.Fatal("Unsupported test case: ", *testCase) - } -} diff --git a/vendor/google.golang.org/grpc/interop/server/server.go b/vendor/google.golang.org/grpc/interop/server/server.go deleted file mode 100644 index b833c76f..00000000 --- a/vendor/google.golang.org/grpc/interop/server/server.go +++ /dev/null @@ -1,65 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "flag" - "net" - "strconv" - - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/interop" - testpb "google.golang.org/grpc/interop/grpc_testing" - "google.golang.org/grpc/testdata" -) - -var ( - useTLS = flag.Bool("use_tls", false, "Connection uses TLS if true, else plain TCP") - certFile = flag.String("tls_cert_file", "", "The TLS cert file") - keyFile = flag.String("tls_key_file", "", "The TLS key file") - port = flag.Int("port", 10000, "The server port") -) - -func main() { - flag.Parse() - p := strconv.Itoa(*port) - lis, err := net.Listen("tcp", ":"+p) - if err != nil { - grpclog.Fatalf("failed to listen: %v", err) - } - var opts []grpc.ServerOption - if *useTLS { - if *certFile == "" { - *certFile = testdata.Path("server1.pem") - } - if *keyFile == "" { - *keyFile = testdata.Path("server1.key") - } - creds, err := credentials.NewServerTLSFromFile(*certFile, *keyFile) - if err != nil { - grpclog.Fatalf("Failed to generate credentials %v", err) - } - opts = []grpc.ServerOption{grpc.Creds(creds)} - } - server := grpc.NewServer(opts...) - testpb.RegisterTestServiceServer(server, interop.NewTestServer()) - server.Serve(lis) -} diff --git a/vendor/google.golang.org/grpc/interop/test_utils.go b/vendor/google.golang.org/grpc/interop/test_utils.go deleted file mode 100644 index c3cd3fc8..00000000 --- a/vendor/google.golang.org/grpc/interop/test_utils.go +++ /dev/null @@ -1,745 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc --go_out=plugins=grpc:. grpc_testing/test.proto - -package interop - -import ( - "fmt" - "io" - "io/ioutil" - "strings" - "time" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "golang.org/x/oauth2" - "golang.org/x/oauth2/google" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - testpb "google.golang.org/grpc/interop/grpc_testing" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" -) - -var ( - reqSizes = []int{27182, 8, 1828, 45904} - respSizes = []int{31415, 9, 2653, 58979} - largeReqSize = 271828 - largeRespSize = 314159 - initialMetadataKey = "x-grpc-test-echo-initial" - trailingMetadataKey = "x-grpc-test-echo-trailing-bin" -) - -// ClientNewPayload returns a payload of the given type and size. -func ClientNewPayload(t testpb.PayloadType, size int) *testpb.Payload { - if size < 0 { - grpclog.Fatalf("Requested a response with invalid length %d", size) - } - body := make([]byte, size) - switch t { - case testpb.PayloadType_COMPRESSABLE: - case testpb.PayloadType_UNCOMPRESSABLE: - grpclog.Fatalf("PayloadType UNCOMPRESSABLE is not supported") - default: - grpclog.Fatalf("Unsupported payload type: %d", t) - } - return &testpb.Payload{ - Type: t, - Body: body, - } -} - -// DoEmptyUnaryCall performs a unary RPC with empty request and response messages. -func DoEmptyUnaryCall(tc testpb.TestServiceClient, args ...grpc.CallOption) { - reply, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, args...) - if err != nil { - grpclog.Fatal("/TestService/EmptyCall RPC failed: ", err) - } - if !proto.Equal(&testpb.Empty{}, reply) { - grpclog.Fatalf("/TestService/EmptyCall receives %v, want %v", reply, testpb.Empty{}) - } -} - -// DoLargeUnaryCall performs a unary RPC with large payload in the request and response. -func DoLargeUnaryCall(tc testpb.TestServiceClient, args ...grpc.CallOption) { - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, largeReqSize) - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeRespSize), - Payload: pl, - } - reply, err := tc.UnaryCall(context.Background(), req, args...) - if err != nil { - grpclog.Fatal("/TestService/UnaryCall RPC failed: ", err) - } - t := reply.GetPayload().GetType() - s := len(reply.GetPayload().GetBody()) - if t != testpb.PayloadType_COMPRESSABLE || s != largeRespSize { - grpclog.Fatalf("Got the reply with type %d len %d; want %d, %d", t, s, testpb.PayloadType_COMPRESSABLE, largeRespSize) - } -} - -// DoClientStreaming performs a client streaming RPC. -func DoClientStreaming(tc testpb.TestServiceClient, args ...grpc.CallOption) { - stream, err := tc.StreamingInputCall(context.Background(), args...) - if err != nil { - grpclog.Fatalf("%v.StreamingInputCall(_) = _, %v", tc, err) - } - var sum int - for _, s := range reqSizes { - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, s) - req := &testpb.StreamingInputCallRequest{ - Payload: pl, - } - if err := stream.Send(req); err != nil { - grpclog.Fatalf("%v has error %v while sending %v", stream, err, req) - } - sum += s - } - reply, err := stream.CloseAndRecv() - if err != nil { - grpclog.Fatalf("%v.CloseAndRecv() got error %v, want %v", stream, err, nil) - } - if reply.GetAggregatedPayloadSize() != int32(sum) { - grpclog.Fatalf("%v.CloseAndRecv().GetAggregatePayloadSize() = %v; want %v", stream, reply.GetAggregatedPayloadSize(), sum) - } -} - -// DoServerStreaming performs a server streaming RPC. -func DoServerStreaming(tc testpb.TestServiceClient, args ...grpc.CallOption) { - respParam := make([]*testpb.ResponseParameters, len(respSizes)) - for i, s := range respSizes { - respParam[i] = &testpb.ResponseParameters{ - Size: int32(s), - } - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - } - stream, err := tc.StreamingOutputCall(context.Background(), req, args...) - if err != nil { - grpclog.Fatalf("%v.StreamingOutputCall(_) = _, %v", tc, err) - } - var rpcStatus error - var respCnt int - var index int - for { - reply, err := stream.Recv() - if err != nil { - rpcStatus = err - break - } - t := reply.GetPayload().GetType() - if t != testpb.PayloadType_COMPRESSABLE { - grpclog.Fatalf("Got the reply of type %d, want %d", t, testpb.PayloadType_COMPRESSABLE) - } - size := len(reply.GetPayload().GetBody()) - if size != int(respSizes[index]) { - grpclog.Fatalf("Got reply body of length %d, want %d", size, respSizes[index]) - } - index++ - respCnt++ - } - if rpcStatus != io.EOF { - grpclog.Fatalf("Failed to finish the server streaming rpc: %v", rpcStatus) - } - if respCnt != len(respSizes) { - grpclog.Fatalf("Got %d reply, want %d", len(respSizes), respCnt) - } -} - -// DoPingPong performs ping-pong style bi-directional streaming RPC. -func DoPingPong(tc testpb.TestServiceClient, args ...grpc.CallOption) { - stream, err := tc.FullDuplexCall(context.Background(), args...) - if err != nil { - grpclog.Fatalf("%v.FullDuplexCall(_) = _, %v", tc, err) - } - var index int - for index < len(reqSizes) { - respParam := []*testpb.ResponseParameters{ - { - Size: int32(respSizes[index]), - }, - } - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, reqSizes[index]) - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: pl, - } - if err := stream.Send(req); err != nil { - grpclog.Fatalf("%v has error %v while sending %v", stream, err, req) - } - reply, err := stream.Recv() - if err != nil { - grpclog.Fatalf("%v.Recv() = %v", stream, err) - } - t := reply.GetPayload().GetType() - if t != testpb.PayloadType_COMPRESSABLE { - grpclog.Fatalf("Got the reply of type %d, want %d", t, testpb.PayloadType_COMPRESSABLE) - } - size := len(reply.GetPayload().GetBody()) - if size != int(respSizes[index]) { - grpclog.Fatalf("Got reply body of length %d, want %d", size, respSizes[index]) - } - index++ - } - if err := stream.CloseSend(); err != nil { - grpclog.Fatalf("%v.CloseSend() got %v, want %v", stream, err, nil) - } - if _, err := stream.Recv(); err != io.EOF { - grpclog.Fatalf("%v failed to complele the ping pong test: %v", stream, err) - } -} - -// DoEmptyStream sets up a bi-directional streaming with zero message. -func DoEmptyStream(tc testpb.TestServiceClient, args ...grpc.CallOption) { - stream, err := tc.FullDuplexCall(context.Background(), args...) - if err != nil { - grpclog.Fatalf("%v.FullDuplexCall(_) = _, %v", tc, err) - } - if err := stream.CloseSend(); err != nil { - grpclog.Fatalf("%v.CloseSend() got %v, want %v", stream, err, nil) - } - if _, err := stream.Recv(); err != io.EOF { - grpclog.Fatalf("%v failed to complete the empty stream test: %v", stream, err) - } -} - -// DoTimeoutOnSleepingServer performs an RPC on a sleep server which causes RPC timeout. -func DoTimeoutOnSleepingServer(tc testpb.TestServiceClient, args ...grpc.CallOption) { - ctx, cancel := context.WithTimeout(context.Background(), 1*time.Millisecond) - defer cancel() - stream, err := tc.FullDuplexCall(ctx, args...) - if err != nil { - if status.Code(err) == codes.DeadlineExceeded { - return - } - grpclog.Fatalf("%v.FullDuplexCall(_) = _, %v", tc, err) - } - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, 27182) - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - Payload: pl, - } - if err := stream.Send(req); err != nil && err != io.EOF { - grpclog.Fatalf("%v.Send(_) = %v", stream, err) - } - if _, err := stream.Recv(); status.Code(err) != codes.DeadlineExceeded { - grpclog.Fatalf("%v.Recv() = _, %v, want error code %d", stream, err, codes.DeadlineExceeded) - } -} - -// DoComputeEngineCreds performs a unary RPC with compute engine auth. -func DoComputeEngineCreds(tc testpb.TestServiceClient, serviceAccount, oauthScope string) { - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, largeReqSize) - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeRespSize), - Payload: pl, - FillUsername: true, - FillOauthScope: true, - } - reply, err := tc.UnaryCall(context.Background(), req) - if err != nil { - grpclog.Fatal("/TestService/UnaryCall RPC failed: ", err) - } - user := reply.GetUsername() - scope := reply.GetOauthScope() - if user != serviceAccount { - grpclog.Fatalf("Got user name %q, want %q.", user, serviceAccount) - } - if !strings.Contains(oauthScope, scope) { - grpclog.Fatalf("Got OAuth scope %q which is NOT a substring of %q.", scope, oauthScope) - } -} - -func getServiceAccountJSONKey(keyFile string) []byte { - jsonKey, err := ioutil.ReadFile(keyFile) - if err != nil { - grpclog.Fatalf("Failed to read the service account key file: %v", err) - } - return jsonKey -} - -// DoServiceAccountCreds performs a unary RPC with service account auth. -func DoServiceAccountCreds(tc testpb.TestServiceClient, serviceAccountKeyFile, oauthScope string) { - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, largeReqSize) - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeRespSize), - Payload: pl, - FillUsername: true, - FillOauthScope: true, - } - reply, err := tc.UnaryCall(context.Background(), req) - if err != nil { - grpclog.Fatal("/TestService/UnaryCall RPC failed: ", err) - } - jsonKey := getServiceAccountJSONKey(serviceAccountKeyFile) - user := reply.GetUsername() - scope := reply.GetOauthScope() - if !strings.Contains(string(jsonKey), user) { - grpclog.Fatalf("Got user name %q which is NOT a substring of %q.", user, jsonKey) - } - if !strings.Contains(oauthScope, scope) { - grpclog.Fatalf("Got OAuth scope %q which is NOT a substring of %q.", scope, oauthScope) - } -} - -// DoJWTTokenCreds performs a unary RPC with JWT token auth. -func DoJWTTokenCreds(tc testpb.TestServiceClient, serviceAccountKeyFile string) { - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, largeReqSize) - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeRespSize), - Payload: pl, - FillUsername: true, - } - reply, err := tc.UnaryCall(context.Background(), req) - if err != nil { - grpclog.Fatal("/TestService/UnaryCall RPC failed: ", err) - } - jsonKey := getServiceAccountJSONKey(serviceAccountKeyFile) - user := reply.GetUsername() - if !strings.Contains(string(jsonKey), user) { - grpclog.Fatalf("Got user name %q which is NOT a substring of %q.", user, jsonKey) - } -} - -// GetToken obtains an OAUTH token from the input. -func GetToken(serviceAccountKeyFile string, oauthScope string) *oauth2.Token { - jsonKey := getServiceAccountJSONKey(serviceAccountKeyFile) - config, err := google.JWTConfigFromJSON(jsonKey, oauthScope) - if err != nil { - grpclog.Fatalf("Failed to get the config: %v", err) - } - token, err := config.TokenSource(context.Background()).Token() - if err != nil { - grpclog.Fatalf("Failed to get the token: %v", err) - } - return token -} - -// DoOauth2TokenCreds performs a unary RPC with OAUTH2 token auth. -func DoOauth2TokenCreds(tc testpb.TestServiceClient, serviceAccountKeyFile, oauthScope string) { - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, largeReqSize) - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeRespSize), - Payload: pl, - FillUsername: true, - FillOauthScope: true, - } - reply, err := tc.UnaryCall(context.Background(), req) - if err != nil { - grpclog.Fatal("/TestService/UnaryCall RPC failed: ", err) - } - jsonKey := getServiceAccountJSONKey(serviceAccountKeyFile) - user := reply.GetUsername() - scope := reply.GetOauthScope() - if !strings.Contains(string(jsonKey), user) { - grpclog.Fatalf("Got user name %q which is NOT a substring of %q.", user, jsonKey) - } - if !strings.Contains(oauthScope, scope) { - grpclog.Fatalf("Got OAuth scope %q which is NOT a substring of %q.", scope, oauthScope) - } -} - -// DoPerRPCCreds performs a unary RPC with per RPC OAUTH2 token. -func DoPerRPCCreds(tc testpb.TestServiceClient, serviceAccountKeyFile, oauthScope string) { - jsonKey := getServiceAccountJSONKey(serviceAccountKeyFile) - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, largeReqSize) - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeRespSize), - Payload: pl, - FillUsername: true, - FillOauthScope: true, - } - token := GetToken(serviceAccountKeyFile, oauthScope) - kv := map[string]string{"authorization": token.Type() + " " + token.AccessToken} - ctx := metadata.NewOutgoingContext(context.Background(), metadata.MD{"authorization": []string{kv["authorization"]}}) - reply, err := tc.UnaryCall(ctx, req) - if err != nil { - grpclog.Fatal("/TestService/UnaryCall RPC failed: ", err) - } - user := reply.GetUsername() - scope := reply.GetOauthScope() - if !strings.Contains(string(jsonKey), user) { - grpclog.Fatalf("Got user name %q which is NOT a substring of %q.", user, jsonKey) - } - if !strings.Contains(oauthScope, scope) { - grpclog.Fatalf("Got OAuth scope %q which is NOT a substring of %q.", scope, oauthScope) - } -} - -var testMetadata = metadata.MD{ - "key1": []string{"value1"}, - "key2": []string{"value2"}, -} - -// DoCancelAfterBegin cancels the RPC after metadata has been sent but before payloads are sent. -func DoCancelAfterBegin(tc testpb.TestServiceClient, args ...grpc.CallOption) { - ctx, cancel := context.WithCancel(metadata.NewOutgoingContext(context.Background(), testMetadata)) - stream, err := tc.StreamingInputCall(ctx, args...) - if err != nil { - grpclog.Fatalf("%v.StreamingInputCall(_) = _, %v", tc, err) - } - cancel() - _, err = stream.CloseAndRecv() - if status.Code(err) != codes.Canceled { - grpclog.Fatalf("%v.CloseAndRecv() got error code %d, want %d", stream, status.Code(err), codes.Canceled) - } -} - -// DoCancelAfterFirstResponse cancels the RPC after receiving the first message from the server. -func DoCancelAfterFirstResponse(tc testpb.TestServiceClient, args ...grpc.CallOption) { - ctx, cancel := context.WithCancel(context.Background()) - stream, err := tc.FullDuplexCall(ctx, args...) - if err != nil { - grpclog.Fatalf("%v.FullDuplexCall(_) = _, %v", tc, err) - } - respParam := []*testpb.ResponseParameters{ - { - Size: 31415, - }, - } - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, 27182) - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: pl, - } - if err := stream.Send(req); err != nil { - grpclog.Fatalf("%v has error %v while sending %v", stream, err, req) - } - if _, err := stream.Recv(); err != nil { - grpclog.Fatalf("%v.Recv() = %v", stream, err) - } - cancel() - if _, err := stream.Recv(); status.Code(err) != codes.Canceled { - grpclog.Fatalf("%v compleled with error code %d, want %d", stream, status.Code(err), codes.Canceled) - } -} - -var ( - initialMetadataValue = "test_initial_metadata_value" - trailingMetadataValue = "\x0a\x0b\x0a\x0b\x0a\x0b" - customMetadata = metadata.Pairs( - initialMetadataKey, initialMetadataValue, - trailingMetadataKey, trailingMetadataValue, - ) -) - -func validateMetadata(header, trailer metadata.MD) { - if len(header[initialMetadataKey]) != 1 { - grpclog.Fatalf("Expected exactly one header from server. Received %d", len(header[initialMetadataKey])) - } - if header[initialMetadataKey][0] != initialMetadataValue { - grpclog.Fatalf("Got header %s; want %s", header[initialMetadataKey][0], initialMetadataValue) - } - if len(trailer[trailingMetadataKey]) != 1 { - grpclog.Fatalf("Expected exactly one trailer from server. Received %d", len(trailer[trailingMetadataKey])) - } - if trailer[trailingMetadataKey][0] != trailingMetadataValue { - grpclog.Fatalf("Got trailer %s; want %s", trailer[trailingMetadataKey][0], trailingMetadataValue) - } -} - -// DoCustomMetadata checks that metadata is echoed back to the client. -func DoCustomMetadata(tc testpb.TestServiceClient, args ...grpc.CallOption) { - // Testing with UnaryCall. - pl := ClientNewPayload(testpb.PayloadType_COMPRESSABLE, 1) - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(1), - Payload: pl, - } - ctx := metadata.NewOutgoingContext(context.Background(), customMetadata) - var header, trailer metadata.MD - args = append(args, grpc.Header(&header), grpc.Trailer(&trailer)) - reply, err := tc.UnaryCall( - ctx, - req, - args..., - ) - if err != nil { - grpclog.Fatal("/TestService/UnaryCall RPC failed: ", err) - } - t := reply.GetPayload().GetType() - s := len(reply.GetPayload().GetBody()) - if t != testpb.PayloadType_COMPRESSABLE || s != 1 { - grpclog.Fatalf("Got the reply with type %d len %d; want %d, %d", t, s, testpb.PayloadType_COMPRESSABLE, 1) - } - validateMetadata(header, trailer) - - // Testing with FullDuplex. - stream, err := tc.FullDuplexCall(ctx, args...) - if err != nil { - grpclog.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - respParam := []*testpb.ResponseParameters{ - { - Size: 1, - }, - } - streamReq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: pl, - } - if err := stream.Send(streamReq); err != nil { - grpclog.Fatalf("%v has error %v while sending %v", stream, err, streamReq) - } - streamHeader, err := stream.Header() - if err != nil { - grpclog.Fatalf("%v.Header() = %v", stream, err) - } - if _, err := stream.Recv(); err != nil { - grpclog.Fatalf("%v.Recv() = %v", stream, err) - } - if err := stream.CloseSend(); err != nil { - grpclog.Fatalf("%v.CloseSend() = %v, want <nil>", stream, err) - } - if _, err := stream.Recv(); err != io.EOF { - grpclog.Fatalf("%v failed to complete the custom metadata test: %v", stream, err) - } - streamTrailer := stream.Trailer() - validateMetadata(streamHeader, streamTrailer) -} - -// DoStatusCodeAndMessage checks that the status code is propagated back to the client. -func DoStatusCodeAndMessage(tc testpb.TestServiceClient, args ...grpc.CallOption) { - var code int32 = 2 - msg := "test status message" - expectedErr := status.Error(codes.Code(code), msg) - respStatus := &testpb.EchoStatus{ - Code: code, - Message: msg, - } - // Test UnaryCall. - req := &testpb.SimpleRequest{ - ResponseStatus: respStatus, - } - if _, err := tc.UnaryCall(context.Background(), req, args...); err == nil || err.Error() != expectedErr.Error() { - grpclog.Fatalf("%v.UnaryCall(_, %v) = _, %v, want _, %v", tc, req, err, expectedErr) - } - // Test FullDuplexCall. - stream, err := tc.FullDuplexCall(context.Background(), args...) - if err != nil { - grpclog.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - streamReq := &testpb.StreamingOutputCallRequest{ - ResponseStatus: respStatus, - } - if err := stream.Send(streamReq); err != nil { - grpclog.Fatalf("%v has error %v while sending %v, want <nil>", stream, err, streamReq) - } - if err := stream.CloseSend(); err != nil { - grpclog.Fatalf("%v.CloseSend() = %v, want <nil>", stream, err) - } - if _, err = stream.Recv(); err.Error() != expectedErr.Error() { - grpclog.Fatalf("%v.Recv() returned error %v, want %v", stream, err, expectedErr) - } -} - -// DoUnimplementedService attempts to call a method from an unimplemented service. -func DoUnimplementedService(tc testpb.UnimplementedServiceClient) { - _, err := tc.UnimplementedCall(context.Background(), &testpb.Empty{}) - if status.Code(err) != codes.Unimplemented { - grpclog.Fatalf("%v.UnimplementedCall() = _, %v, want _, %v", tc, status.Code(err), codes.Unimplemented) - } -} - -// DoUnimplementedMethod attempts to call an unimplemented method. -func DoUnimplementedMethod(cc *grpc.ClientConn) { - var req, reply proto.Message - if err := grpc.Invoke(context.Background(), "/grpc.testing.TestService/UnimplementedCall", req, reply, cc); err == nil || status.Code(err) != codes.Unimplemented { - grpclog.Fatalf("grpc.Invoke(_, _, _, _, _) = %v, want error code %s", err, codes.Unimplemented) - } -} - -type testServer struct { -} - -// NewTestServer creates a test server for test service. -func NewTestServer() testpb.TestServiceServer { - return &testServer{} -} - -func (s *testServer) EmptyCall(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - return new(testpb.Empty), nil -} - -func serverNewPayload(t testpb.PayloadType, size int32) (*testpb.Payload, error) { - if size < 0 { - return nil, fmt.Errorf("requested a response with invalid length %d", size) - } - body := make([]byte, size) - switch t { - case testpb.PayloadType_COMPRESSABLE: - case testpb.PayloadType_UNCOMPRESSABLE: - return nil, fmt.Errorf("payloadType UNCOMPRESSABLE is not supported") - default: - return nil, fmt.Errorf("unsupported payload type: %d", t) - } - return &testpb.Payload{ - Type: t, - Body: body, - }, nil -} - -func (s *testServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - st := in.GetResponseStatus() - if md, ok := metadata.FromIncomingContext(ctx); ok { - if initialMetadata, ok := md[initialMetadataKey]; ok { - header := metadata.Pairs(initialMetadataKey, initialMetadata[0]) - grpc.SendHeader(ctx, header) - } - if trailingMetadata, ok := md[trailingMetadataKey]; ok { - trailer := metadata.Pairs(trailingMetadataKey, trailingMetadata[0]) - grpc.SetTrailer(ctx, trailer) - } - } - if st != nil && st.Code != 0 { - return nil, status.Error(codes.Code(st.Code), st.Message) - } - pl, err := serverNewPayload(in.GetResponseType(), in.GetResponseSize()) - if err != nil { - return nil, err - } - return &testpb.SimpleResponse{ - Payload: pl, - }, nil -} - -func (s *testServer) StreamingOutputCall(args *testpb.StreamingOutputCallRequest, stream testpb.TestService_StreamingOutputCallServer) error { - cs := args.GetResponseParameters() - for _, c := range cs { - if us := c.GetIntervalUs(); us > 0 { - time.Sleep(time.Duration(us) * time.Microsecond) - } - pl, err := serverNewPayload(args.GetResponseType(), c.GetSize()) - if err != nil { - return err - } - if err := stream.Send(&testpb.StreamingOutputCallResponse{ - Payload: pl, - }); err != nil { - return err - } - } - return nil -} - -func (s *testServer) StreamingInputCall(stream testpb.TestService_StreamingInputCallServer) error { - var sum int - for { - in, err := stream.Recv() - if err == io.EOF { - return stream.SendAndClose(&testpb.StreamingInputCallResponse{ - AggregatedPayloadSize: int32(sum), - }) - } - if err != nil { - return err - } - p := in.GetPayload().GetBody() - sum += len(p) - } -} - -func (s *testServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallServer) error { - if md, ok := metadata.FromIncomingContext(stream.Context()); ok { - if initialMetadata, ok := md[initialMetadataKey]; ok { - header := metadata.Pairs(initialMetadataKey, initialMetadata[0]) - stream.SendHeader(header) - } - if trailingMetadata, ok := md[trailingMetadataKey]; ok { - trailer := metadata.Pairs(trailingMetadataKey, trailingMetadata[0]) - stream.SetTrailer(trailer) - } - } - for { - in, err := stream.Recv() - if err == io.EOF { - // read done. - return nil - } - if err != nil { - return err - } - st := in.GetResponseStatus() - if st != nil && st.Code != 0 { - return status.Error(codes.Code(st.Code), st.Message) - } - cs := in.GetResponseParameters() - for _, c := range cs { - if us := c.GetIntervalUs(); us > 0 { - time.Sleep(time.Duration(us) * time.Microsecond) - } - pl, err := serverNewPayload(in.GetResponseType(), c.GetSize()) - if err != nil { - return err - } - if err := stream.Send(&testpb.StreamingOutputCallResponse{ - Payload: pl, - }); err != nil { - return err - } - } - } -} - -func (s *testServer) HalfDuplexCall(stream testpb.TestService_HalfDuplexCallServer) error { - var msgBuf []*testpb.StreamingOutputCallRequest - for { - in, err := stream.Recv() - if err == io.EOF { - // read done. - break - } - if err != nil { - return err - } - msgBuf = append(msgBuf, in) - } - for _, m := range msgBuf { - cs := m.GetResponseParameters() - for _, c := range cs { - if us := c.GetIntervalUs(); us > 0 { - time.Sleep(time.Duration(us) * time.Microsecond) - } - pl, err := serverNewPayload(m.GetResponseType(), c.GetSize()) - if err != nil { - return err - } - if err := stream.Send(&testpb.StreamingOutputCallResponse{ - Payload: pl, - }); err != nil { - return err - } - } - } - return nil -} diff --git a/vendor/google.golang.org/grpc/metadata/metadata_test.go b/vendor/google.golang.org/grpc/metadata/metadata_test.go deleted file mode 100644 index 6edeeda6..00000000 --- a/vendor/google.golang.org/grpc/metadata/metadata_test.go +++ /dev/null @@ -1,125 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package metadata - -import ( - "reflect" - "testing" - - "golang.org/x/net/context" -) - -func TestPairsMD(t *testing.T) { - for _, test := range []struct { - // input - kv []string - // output - md MD - }{ - {[]string{}, MD{}}, - {[]string{"k1", "v1", "k1", "v2"}, MD{"k1": []string{"v1", "v2"}}}, - } { - md := Pairs(test.kv...) - if !reflect.DeepEqual(md, test.md) { - t.Fatalf("Pairs(%v) = %v, want %v", test.kv, md, test.md) - } - } -} - -func TestCopy(t *testing.T) { - const key, val = "key", "val" - orig := Pairs(key, val) - copy := orig.Copy() - if !reflect.DeepEqual(orig, copy) { - t.Errorf("copied value not equal to the original, got %v, want %v", copy, orig) - } - orig[key][0] = "foo" - if v := copy[key][0]; v != val { - t.Errorf("change in original should not affect copy, got %q, want %q", v, val) - } -} - -func TestJoin(t *testing.T) { - for _, test := range []struct { - mds []MD - want MD - }{ - {[]MD{}, MD{}}, - {[]MD{Pairs("foo", "bar")}, Pairs("foo", "bar")}, - {[]MD{Pairs("foo", "bar"), Pairs("foo", "baz")}, Pairs("foo", "bar", "foo", "baz")}, - {[]MD{Pairs("foo", "bar"), Pairs("foo", "baz"), Pairs("zip", "zap")}, Pairs("foo", "bar", "foo", "baz", "zip", "zap")}, - } { - md := Join(test.mds...) - if !reflect.DeepEqual(md, test.want) { - t.Errorf("context's metadata is %v, want %v", md, test.want) - } - } -} - -func TestAppendToOutgoingContext(t *testing.T) { - // Pre-existing metadata - ctx := NewOutgoingContext(context.Background(), Pairs("k1", "v1", "k2", "v2")) - ctx = AppendToOutgoingContext(ctx, "k1", "v3") - ctx = AppendToOutgoingContext(ctx, "k1", "v4") - md, ok := FromOutgoingContext(ctx) - if !ok { - t.Errorf("Expected MD to exist in ctx, but got none") - } - want := Pairs("k1", "v1", "k1", "v3", "k1", "v4", "k2", "v2") - if !reflect.DeepEqual(md, want) { - t.Errorf("context's metadata is %v, want %v", md, want) - } - - // No existing metadata - ctx = AppendToOutgoingContext(context.Background(), "k1", "v1") - md, ok = FromOutgoingContext(ctx) - if !ok { - t.Errorf("Expected MD to exist in ctx, but got none") - } - want = Pairs("k1", "v1") - if !reflect.DeepEqual(md, want) { - t.Errorf("context's metadata is %v, want %v", md, want) - } -} - -// Old/slow approach to adding metadata to context -func Benchmark_AddingMetadata_ContextManipulationApproach(b *testing.B) { - for n := 0; n < b.N; n++ { - ctx := context.Background() - md, _ := FromOutgoingContext(ctx) - NewOutgoingContext(ctx, Join(Pairs("k1", "v1", "k2", "v2"), md)) - } -} - -// Newer/faster approach to adding metadata to context -func BenchmarkAppendToOutgoingContext(b *testing.B) { - for n := 0; n < b.N; n++ { - AppendToOutgoingContext(context.Background(), "k1", "v1", "k2", "v2") - } -} - -func BenchmarkFromOutgoingContext(b *testing.B) { - ctx := context.Background() - ctx = NewOutgoingContext(ctx, MD{"k3": {"v3", "v4"}}) - ctx = AppendToOutgoingContext(ctx, "k1", "v1", "k2", "v2") - - for n := 0; n < b.N; n++ { - FromOutgoingContext(ctx) - } -} diff --git a/vendor/google.golang.org/grpc/naming/dns_resolver_test.go b/vendor/google.golang.org/grpc/naming/dns_resolver_test.go deleted file mode 100644 index be1ac1ae..00000000 --- a/vendor/google.golang.org/grpc/naming/dns_resolver_test.go +++ /dev/null @@ -1,315 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package naming - -import ( - "fmt" - "net" - "reflect" - "sync" - "testing" - "time" -) - -func newUpdateWithMD(op Operation, addr, lb string) *Update { - return &Update{ - Op: op, - Addr: addr, - Metadata: AddrMetadataGRPCLB{AddrType: GRPCLB, ServerName: lb}, - } -} - -func toMap(u []*Update) map[string]*Update { - m := make(map[string]*Update) - for _, v := range u { - m[v.Addr] = v - } - return m -} - -func TestCompileUpdate(t *testing.T) { - tests := []struct { - oldAddrs []string - newAddrs []string - want []*Update - }{ - { - []string{}, - []string{"1.0.0.1"}, - []*Update{{Op: Add, Addr: "1.0.0.1"}}, - }, - { - []string{"1.0.0.1"}, - []string{"1.0.0.1"}, - []*Update{}, - }, - { - []string{"1.0.0.0"}, - []string{"1.0.0.1"}, - []*Update{{Op: Delete, Addr: "1.0.0.0"}, {Op: Add, Addr: "1.0.0.1"}}, - }, - { - []string{"1.0.0.1"}, - []string{"1.0.0.0"}, - []*Update{{Op: Add, Addr: "1.0.0.0"}, {Op: Delete, Addr: "1.0.0.1"}}, - }, - { - []string{"1.0.0.1"}, - []string{"1.0.0.1", "1.0.0.2", "1.0.0.3"}, - []*Update{{Op: Add, Addr: "1.0.0.2"}, {Op: Add, Addr: "1.0.0.3"}}, - }, - { - []string{"1.0.0.1", "1.0.0.2", "1.0.0.3"}, - []string{"1.0.0.0"}, - []*Update{{Op: Add, Addr: "1.0.0.0"}, {Op: Delete, Addr: "1.0.0.1"}, {Op: Delete, Addr: "1.0.0.2"}, {Op: Delete, Addr: "1.0.0.3"}}, - }, - { - []string{"1.0.0.1", "1.0.0.3", "1.0.0.5"}, - []string{"1.0.0.2", "1.0.0.3", "1.0.0.6"}, - []*Update{{Op: Delete, Addr: "1.0.0.1"}, {Op: Add, Addr: "1.0.0.2"}, {Op: Delete, Addr: "1.0.0.5"}, {Op: Add, Addr: "1.0.0.6"}}, - }, - { - []string{"1.0.0.1", "1.0.0.1", "1.0.0.2"}, - []string{"1.0.0.1"}, - []*Update{{Op: Delete, Addr: "1.0.0.2"}}, - }, - } - - var w dnsWatcher - for _, c := range tests { - w.curAddrs = make(map[string]*Update) - newUpdates := make(map[string]*Update) - for _, a := range c.oldAddrs { - w.curAddrs[a] = &Update{Addr: a} - } - for _, a := range c.newAddrs { - newUpdates[a] = &Update{Addr: a} - } - r := w.compileUpdate(newUpdates) - if !reflect.DeepEqual(toMap(c.want), toMap(r)) { - t.Errorf("w(%+v).compileUpdate(%+v) = %+v, want %+v", c.oldAddrs, c.newAddrs, updatesToSlice(r), updatesToSlice(c.want)) - } - } -} - -func TestResolveFunc(t *testing.T) { - tests := []struct { - addr string - want error - }{ - // TODO(yuxuanli): More false cases? - {"www.google.com", nil}, - {"foo.bar:12345", nil}, - {"127.0.0.1", nil}, - {"127.0.0.1:12345", nil}, - {"[::1]:80", nil}, - {"[2001:db8:a0b:12f0::1]:21", nil}, - {":80", nil}, - {"127.0.0...1:12345", nil}, - {"[fe80::1%lo0]:80", nil}, - {"golang.org:http", nil}, - {"[2001:db8::1]:http", nil}, - {":", nil}, - {"", errMissingAddr}, - {"[2001:db8:a0b:12f0::1", fmt.Errorf("invalid target address %v", "[2001:db8:a0b:12f0::1")}, - } - - r, err := NewDNSResolver() - if err != nil { - t.Errorf("%v", err) - } - for _, v := range tests { - _, err := r.Resolve(v.addr) - if !reflect.DeepEqual(err, v.want) { - t.Errorf("Resolve(%q) = %v, want %v", v.addr, err, v.want) - } - } -} - -var hostLookupTbl = map[string][]string{ - "foo.bar.com": {"1.2.3.4", "5.6.7.8"}, - "ipv4.single.fake": {"1.2.3.4"}, - "ipv4.multi.fake": {"1.2.3.4", "5.6.7.8", "9.10.11.12"}, - "ipv6.single.fake": {"2607:f8b0:400a:801::1001"}, - "ipv6.multi.fake": {"2607:f8b0:400a:801::1001", "2607:f8b0:400a:801::1002", "2607:f8b0:400a:801::1003"}, -} - -func hostLookup(host string) ([]string, error) { - if addrs, ok := hostLookupTbl[host]; ok { - return addrs, nil - } - return nil, fmt.Errorf("failed to lookup host:%s resolution in hostLookupTbl", host) -} - -var srvLookupTbl = map[string][]*net.SRV{ - "_grpclb._tcp.srv.ipv4.single.fake": {&net.SRV{Target: "ipv4.single.fake", Port: 1234}}, - "_grpclb._tcp.srv.ipv4.multi.fake": {&net.SRV{Target: "ipv4.multi.fake", Port: 1234}}, - "_grpclb._tcp.srv.ipv6.single.fake": {&net.SRV{Target: "ipv6.single.fake", Port: 1234}}, - "_grpclb._tcp.srv.ipv6.multi.fake": {&net.SRV{Target: "ipv6.multi.fake", Port: 1234}}, -} - -func srvLookup(service, proto, name string) (string, []*net.SRV, error) { - cname := "_" + service + "._" + proto + "." + name - if srvs, ok := srvLookupTbl[cname]; ok { - return cname, srvs, nil - } - return "", nil, fmt.Errorf("failed to lookup srv record for %s in srvLookupTbl", cname) -} - -func updatesToSlice(updates []*Update) []Update { - res := make([]Update, len(updates)) - for i, u := range updates { - res[i] = *u - } - return res -} - -func testResolver(t *testing.T, freq time.Duration, slp time.Duration) { - tests := []struct { - target string - want []*Update - }{ - { - "foo.bar.com", - []*Update{{Op: Add, Addr: "1.2.3.4" + colonDefaultPort}, {Op: Add, Addr: "5.6.7.8" + colonDefaultPort}}, - }, - { - "foo.bar.com:1234", - []*Update{{Op: Add, Addr: "1.2.3.4:1234"}, {Op: Add, Addr: "5.6.7.8:1234"}}, - }, - { - "srv.ipv4.single.fake", - []*Update{newUpdateWithMD(Add, "1.2.3.4:1234", "ipv4.single.fake")}, - }, - { - "srv.ipv4.multi.fake", - []*Update{ - newUpdateWithMD(Add, "1.2.3.4:1234", "ipv4.multi.fake"), - newUpdateWithMD(Add, "5.6.7.8:1234", "ipv4.multi.fake"), - newUpdateWithMD(Add, "9.10.11.12:1234", "ipv4.multi.fake")}, - }, - { - "srv.ipv6.single.fake", - []*Update{newUpdateWithMD(Add, "[2607:f8b0:400a:801::1001]:1234", "ipv6.single.fake")}, - }, - { - "srv.ipv6.multi.fake", - []*Update{ - newUpdateWithMD(Add, "[2607:f8b0:400a:801::1001]:1234", "ipv6.multi.fake"), - newUpdateWithMD(Add, "[2607:f8b0:400a:801::1002]:1234", "ipv6.multi.fake"), - newUpdateWithMD(Add, "[2607:f8b0:400a:801::1003]:1234", "ipv6.multi.fake"), - }, - }, - } - - for _, a := range tests { - r, err := NewDNSResolverWithFreq(freq) - if err != nil { - t.Fatalf("%v\n", err) - } - w, err := r.Resolve(a.target) - if err != nil { - t.Fatalf("%v\n", err) - } - updates, err := w.Next() - if err != nil { - t.Fatalf("%v\n", err) - } - if !reflect.DeepEqual(toMap(a.want), toMap(updates)) { - t.Errorf("Resolve(%q) = %+v, want %+v\n", a.target, updatesToSlice(updates), updatesToSlice(a.want)) - } - var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() - for { - _, err := w.Next() - if err != nil { - return - } - t.Error("Execution shouldn't reach here, since w.Next() should be blocked until close happen.") - } - }() - // Sleep for sometime to let watcher do more than one lookup - time.Sleep(slp) - w.Close() - wg.Wait() - } -} - -func TestResolve(t *testing.T) { - defer replaceNetFunc()() - testResolver(t, time.Millisecond*5, time.Millisecond*10) -} - -const colonDefaultPort = ":" + defaultPort - -func TestIPWatcher(t *testing.T) { - tests := []struct { - target string - want []*Update - }{ - {"127.0.0.1", []*Update{{Op: Add, Addr: "127.0.0.1" + colonDefaultPort}}}, - {"127.0.0.1:12345", []*Update{{Op: Add, Addr: "127.0.0.1:12345"}}}, - {"::1", []*Update{{Op: Add, Addr: "[::1]" + colonDefaultPort}}}, - {"[::1]:12345", []*Update{{Op: Add, Addr: "[::1]:12345"}}}, - {"[::1]:", []*Update{{Op: Add, Addr: "[::1]:443"}}}, - {"2001:db8:85a3::8a2e:370:7334", []*Update{{Op: Add, Addr: "[2001:db8:85a3::8a2e:370:7334]" + colonDefaultPort}}}, - {"[2001:db8:85a3::8a2e:370:7334]", []*Update{{Op: Add, Addr: "[2001:db8:85a3::8a2e:370:7334]" + colonDefaultPort}}}, - {"[2001:db8:85a3::8a2e:370:7334]:12345", []*Update{{Op: Add, Addr: "[2001:db8:85a3::8a2e:370:7334]:12345"}}}, - {"[2001:db8::1]:http", []*Update{{Op: Add, Addr: "[2001:db8::1]:http"}}}, - // TODO(yuxuanli): zone support? - } - - for _, v := range tests { - r, err := NewDNSResolverWithFreq(time.Millisecond * 5) - if err != nil { - t.Fatalf("%v\n", err) - } - w, err := r.Resolve(v.target) - if err != nil { - t.Fatalf("%v\n", err) - } - var updates []*Update - var wg sync.WaitGroup - wg.Add(1) - count := 0 - go func() { - defer wg.Done() - for { - u, err := w.Next() - if err != nil { - return - } - updates = u - count++ - } - }() - // Sleep for sometime to let watcher do more than one lookup - time.Sleep(time.Millisecond * 10) - w.Close() - wg.Wait() - if !reflect.DeepEqual(v.want, updates) { - t.Errorf("Resolve(%q) = %v, want %+v\n", v.target, updatesToSlice(updates), updatesToSlice(v.want)) - } - if count != 1 { - t.Errorf("IPWatcher Next() should return only once, not %d times\n", count) - } - } -} diff --git a/vendor/google.golang.org/grpc/naming/go17_test.go b/vendor/google.golang.org/grpc/naming/go17_test.go deleted file mode 100644 index db39b9ab..00000000 --- a/vendor/google.golang.org/grpc/naming/go17_test.go +++ /dev/null @@ -1,42 +0,0 @@ -// +build go1.6, !go1.8 - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package naming - -import ( - "net" - - "golang.org/x/net/context" -) - -func replaceNetFunc() func() { - oldLookupHost := lookupHost - oldLookupSRV := lookupSRV - lookupHost = func(ctx context.Context, host string) ([]string, error) { - return hostLookup(host) - } - lookupSRV = func(ctx context.Context, service, proto, name string) (string, []*net.SRV, error) { - return srvLookup(service, proto, name) - } - return func() { - lookupHost = oldLookupHost - lookupSRV = oldLookupSRV - } -} diff --git a/vendor/google.golang.org/grpc/naming/go18_test.go b/vendor/google.golang.org/grpc/naming/go18_test.go deleted file mode 100644 index 5e297539..00000000 --- a/vendor/google.golang.org/grpc/naming/go18_test.go +++ /dev/null @@ -1,41 +0,0 @@ -// +build go1.8 - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package naming - -import ( - "context" - "net" -) - -func replaceNetFunc() func() { - oldLookupHost := lookupHost - oldLookupSRV := lookupSRV - lookupHost = func(ctx context.Context, host string) ([]string, error) { - return hostLookup(host) - } - lookupSRV = func(ctx context.Context, service, proto, name string) (string, []*net.SRV, error) { - return srvLookup(service, proto, name) - } - return func() { - lookupHost = oldLookupHost - lookupSRV = oldLookupSRV - } -} diff --git a/vendor/google.golang.org/grpc/picker_wrapper_test.go b/vendor/google.golang.org/grpc/picker_wrapper_test.go deleted file mode 100644 index 37dffa9e..00000000 --- a/vendor/google.golang.org/grpc/picker_wrapper_test.go +++ /dev/null @@ -1,160 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "fmt" - "sync/atomic" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc/balancer" - "google.golang.org/grpc/connectivity" - _ "google.golang.org/grpc/grpclog/glogger" - "google.golang.org/grpc/test/leakcheck" - "google.golang.org/grpc/transport" -) - -const goroutineCount = 5 - -var ( - testT = &testTransport{} - testSC = &acBalancerWrapper{ac: &addrConn{ - state: connectivity.Ready, - transport: testT, - }} - testSCNotReady = &acBalancerWrapper{ac: &addrConn{ - state: connectivity.TransientFailure, - }} -) - -type testTransport struct { - transport.ClientTransport -} - -type testingPicker struct { - err error - sc balancer.SubConn - maxCalled int64 -} - -func (p *testingPicker) Pick(ctx context.Context, opts balancer.PickOptions) (balancer.SubConn, func(balancer.DoneInfo), error) { - if atomic.AddInt64(&p.maxCalled, -1) < 0 { - return nil, nil, fmt.Errorf("Pick called to many times (> goroutineCount)") - } - if p.err != nil { - return nil, nil, p.err - } - return p.sc, nil, nil -} - -func TestBlockingPickTimeout(t *testing.T) { - defer leakcheck.Check(t) - bp := newPickerWrapper() - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - if _, _, err := bp.pick(ctx, true, balancer.PickOptions{}); err != context.DeadlineExceeded { - t.Errorf("bp.pick returned error %v, want DeadlineExceeded", err) - } -} - -func TestBlockingPick(t *testing.T) { - defer leakcheck.Check(t) - bp := newPickerWrapper() - // All goroutines should block because picker is nil in bp. - var finishedCount uint64 - for i := goroutineCount; i > 0; i-- { - go func() { - if tr, _, err := bp.pick(context.Background(), true, balancer.PickOptions{}); err != nil || tr != testT { - t.Errorf("bp.pick returned non-nil error: %v", err) - } - atomic.AddUint64(&finishedCount, 1) - }() - } - time.Sleep(50 * time.Millisecond) - if c := atomic.LoadUint64(&finishedCount); c != 0 { - t.Errorf("finished goroutines count: %v, want 0", c) - } - bp.updatePicker(&testingPicker{sc: testSC, maxCalled: goroutineCount}) -} - -func TestBlockingPickNoSubAvailable(t *testing.T) { - defer leakcheck.Check(t) - bp := newPickerWrapper() - var finishedCount uint64 - bp.updatePicker(&testingPicker{err: balancer.ErrNoSubConnAvailable, maxCalled: goroutineCount}) - // All goroutines should block because picker returns no sc available. - for i := goroutineCount; i > 0; i-- { - go func() { - if tr, _, err := bp.pick(context.Background(), true, balancer.PickOptions{}); err != nil || tr != testT { - t.Errorf("bp.pick returned non-nil error: %v", err) - } - atomic.AddUint64(&finishedCount, 1) - }() - } - time.Sleep(50 * time.Millisecond) - if c := atomic.LoadUint64(&finishedCount); c != 0 { - t.Errorf("finished goroutines count: %v, want 0", c) - } - bp.updatePicker(&testingPicker{sc: testSC, maxCalled: goroutineCount}) -} - -func TestBlockingPickTransientWaitforready(t *testing.T) { - defer leakcheck.Check(t) - bp := newPickerWrapper() - bp.updatePicker(&testingPicker{err: balancer.ErrTransientFailure, maxCalled: goroutineCount}) - var finishedCount uint64 - // All goroutines should block because picker returns transientFailure and - // picks are not failfast. - for i := goroutineCount; i > 0; i-- { - go func() { - if tr, _, err := bp.pick(context.Background(), false, balancer.PickOptions{}); err != nil || tr != testT { - t.Errorf("bp.pick returned non-nil error: %v", err) - } - atomic.AddUint64(&finishedCount, 1) - }() - } - time.Sleep(time.Millisecond) - if c := atomic.LoadUint64(&finishedCount); c != 0 { - t.Errorf("finished goroutines count: %v, want 0", c) - } - bp.updatePicker(&testingPicker{sc: testSC, maxCalled: goroutineCount}) -} - -func TestBlockingPickSCNotReady(t *testing.T) { - defer leakcheck.Check(t) - bp := newPickerWrapper() - bp.updatePicker(&testingPicker{sc: testSCNotReady, maxCalled: goroutineCount}) - var finishedCount uint64 - // All goroutines should block because sc is not ready. - for i := goroutineCount; i > 0; i-- { - go func() { - if tr, _, err := bp.pick(context.Background(), true, balancer.PickOptions{}); err != nil || tr != testT { - t.Errorf("bp.pick returned non-nil error: %v", err) - } - atomic.AddUint64(&finishedCount, 1) - }() - } - time.Sleep(time.Millisecond) - if c := atomic.LoadUint64(&finishedCount); c != 0 { - t.Errorf("finished goroutines count: %v, want 0", c) - } - bp.updatePicker(&testingPicker{sc: testSC, maxCalled: goroutineCount}) -} diff --git a/vendor/google.golang.org/grpc/pickfirst_test.go b/vendor/google.golang.org/grpc/pickfirst_test.go deleted file mode 100644 index 2f85febf..00000000 --- a/vendor/google.golang.org/grpc/pickfirst_test.go +++ /dev/null @@ -1,360 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "math" - "sync" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/resolver" - "google.golang.org/grpc/resolver/manual" - "google.golang.org/grpc/status" - "google.golang.org/grpc/test/leakcheck" -) - -func errorDesc(err error) string { - if s, ok := status.FromError(err); ok { - return s.Message() - } - return err.Error() -} - -func TestOneBackendPickfirst(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 1 - servers, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - req := "port" - var reply string - if err := Invoke(ctx, "/foo/bar", &req, &reply, cc); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}}) - // The second RPC should succeed. - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[0].port { - return - } - time.Sleep(time.Millisecond) - } - t.Fatalf("EmptyCall() = _, %v, want _, %v", err, servers[0].port) -} - -func TestBackendsPickfirst(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 2 - servers, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - req := "port" - var reply string - if err := Invoke(ctx, "/foo/bar", &req, &reply, cc); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}, {Addr: servers[1].addr}}) - // The second RPC should succeed with the first server. - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[0].port { - return - } - time.Sleep(time.Millisecond) - } - t.Fatalf("EmptyCall() = _, %v, want _, %v", err, servers[0].port) -} - -func TestNewAddressWhileBlockingPickfirst(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 1 - servers, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - req := "port" - var reply string - if err := Invoke(ctx, "/foo/bar", &req, &reply, cc); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - var wg sync.WaitGroup - for i := 0; i < 3; i++ { - wg.Add(1) - go func() { - defer wg.Done() - // This RPC blocks until NewAddress is called. - Invoke(context.Background(), "/foo/bar", &req, &reply, cc) - }() - } - time.Sleep(50 * time.Millisecond) - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}}) - wg.Wait() -} - -func TestCloseWithPendingRPCPickfirst(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 1 - _, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - req := "port" - var reply string - if err := Invoke(ctx, "/foo/bar", &req, &reply, cc); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - var wg sync.WaitGroup - for i := 0; i < 3; i++ { - wg.Add(1) - go func() { - defer wg.Done() - // This RPC blocks until NewAddress is called. - Invoke(context.Background(), "/foo/bar", &req, &reply, cc) - }() - } - time.Sleep(50 * time.Millisecond) - cc.Close() - wg.Wait() -} - -func TestOneServerDownPickfirst(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 2 - servers, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{}), WithWaitForHandshake()) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - req := "port" - var reply string - if err := Invoke(ctx, "/foo/bar", &req, &reply, cc); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}, {Addr: servers[1].addr}}) - // The second RPC should succeed with the first server. - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[0].port { - break - } - time.Sleep(time.Millisecond) - } - - servers[0].stop() - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[1].port { - return - } - time.Sleep(time.Millisecond) - } - t.Fatalf("EmptyCall() = _, %v, want _, %v", err, servers[0].port) -} - -func TestAllServersDownPickfirst(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 2 - servers, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{}), WithWaitForHandshake()) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - req := "port" - var reply string - if err := Invoke(ctx, "/foo/bar", &req, &reply, cc); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}, {Addr: servers[1].addr}}) - // The second RPC should succeed with the first server. - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[0].port { - break - } - time.Sleep(time.Millisecond) - } - - for i := 0; i < numServers; i++ { - servers[i].stop() - } - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); status.Code(err) == codes.Unavailable { - return - } - time.Sleep(time.Millisecond) - } - t.Fatalf("EmptyCall() = _, %v, want _, error with code unavailable", err) -} - -func TestAddressesRemovedPickfirst(t *testing.T) { - defer leakcheck.Check(t) - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - numServers := 3 - servers, _, scleanup := startServers(t, numServers, math.MaxInt32) - defer scleanup() - - cc, err := Dial(r.Scheme()+":///test.server", WithInsecure(), WithCodec(testCodec{})) - if err != nil { - t.Fatalf("failed to dial: %v", err) - } - defer cc.Close() - // The first RPC should fail because there's no address. - ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond) - defer cancel() - req := "port" - var reply string - if err := Invoke(ctx, "/foo/bar", &req, &reply, cc); err == nil || status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("EmptyCall() = _, %v, want _, DeadlineExceeded", err) - } - - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}, {Addr: servers[1].addr}, {Addr: servers[2].addr}}) - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[0].port { - break - } - time.Sleep(time.Millisecond) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[0].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 0, err, servers[0].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Remove server[0]. - r.NewAddress([]resolver.Address{{Addr: servers[1].addr}, {Addr: servers[2].addr}}) - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[1].port { - break - } - time.Sleep(time.Millisecond) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[1].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 1, err, servers[1].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Append server[0], nothing should change. - r.NewAddress([]resolver.Address{{Addr: servers[1].addr}, {Addr: servers[2].addr}, {Addr: servers[0].addr}}) - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[1].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 1, err, servers[1].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Remove server[1]. - r.NewAddress([]resolver.Address{{Addr: servers[2].addr}, {Addr: servers[0].addr}}) - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[2].port { - break - } - time.Sleep(time.Millisecond) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[2].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 2, err, servers[2].port) - } - time.Sleep(10 * time.Millisecond) - } - - // Remove server[2]. - r.NewAddress([]resolver.Address{{Addr: servers[0].addr}}) - for i := 0; i < 1000; i++ { - if err = Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err != nil && errorDesc(err) == servers[0].port { - break - } - time.Sleep(time.Millisecond) - } - for i := 0; i < 20; i++ { - if err := Invoke(context.Background(), "/foo/bar", &req, &reply, cc); err == nil || errorDesc(err) != servers[0].port { - t.Fatalf("Index %d: Invoke(_, _, _, _, _) = %v, want %s", 0, err, servers[0].port) - } - time.Sleep(10 * time.Millisecond) - } -} diff --git a/vendor/google.golang.org/grpc/proxy_test.go b/vendor/google.golang.org/grpc/proxy_test.go deleted file mode 100644 index 39ee123c..00000000 --- a/vendor/google.golang.org/grpc/proxy_test.go +++ /dev/null @@ -1,182 +0,0 @@ -// +build !race - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "bufio" - "io" - "net" - "net/http" - "net/url" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc/test/leakcheck" -) - -const ( - envTestAddr = "1.2.3.4:8080" - envProxyAddr = "2.3.4.5:7687" -) - -// overwriteAndRestore overwrite function httpProxyFromEnvironment and -// returns a function to restore the default values. -func overwrite(hpfe func(req *http.Request) (*url.URL, error)) func() { - backHPFE := httpProxyFromEnvironment - httpProxyFromEnvironment = hpfe - return func() { - httpProxyFromEnvironment = backHPFE - } -} - -type proxyServer struct { - t *testing.T - lis net.Listener - in net.Conn - out net.Conn -} - -func (p *proxyServer) run() { - in, err := p.lis.Accept() - if err != nil { - return - } - p.in = in - - req, err := http.ReadRequest(bufio.NewReader(in)) - if err != nil { - p.t.Errorf("failed to read CONNECT req: %v", err) - return - } - if req.Method != http.MethodConnect || req.UserAgent() != grpcUA { - resp := http.Response{StatusCode: http.StatusMethodNotAllowed} - resp.Write(p.in) - p.in.Close() - p.t.Errorf("get wrong CONNECT req: %+v", req) - return - } - - out, err := net.Dial("tcp", req.URL.Host) - if err != nil { - p.t.Errorf("failed to dial to server: %v", err) - return - } - resp := http.Response{StatusCode: http.StatusOK, Proto: "HTTP/1.0"} - resp.Write(p.in) - p.out = out - go io.Copy(p.in, p.out) - go io.Copy(p.out, p.in) -} - -func (p *proxyServer) stop() { - p.lis.Close() - if p.in != nil { - p.in.Close() - } - if p.out != nil { - p.out.Close() - } -} - -func TestHTTPConnect(t *testing.T) { - defer leakcheck.Check(t) - plis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("failed to listen: %v", err) - } - p := &proxyServer{t: t, lis: plis} - go p.run() - defer p.stop() - - blis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("failed to listen: %v", err) - } - - msg := []byte{4, 3, 5, 2} - recvBuf := make([]byte, len(msg), len(msg)) - done := make(chan struct{}) - go func() { - in, err := blis.Accept() - if err != nil { - t.Errorf("failed to accept: %v", err) - return - } - defer in.Close() - in.Read(recvBuf) - close(done) - }() - - // Overwrite the function in the test and restore them in defer. - hpfe := func(req *http.Request) (*url.URL, error) { - return &url.URL{Host: plis.Addr().String()}, nil - } - defer overwrite(hpfe)() - - // Dial to proxy server. - dialer := newProxyDialer(func(ctx context.Context, addr string) (net.Conn, error) { - if deadline, ok := ctx.Deadline(); ok { - return net.DialTimeout("tcp", addr, deadline.Sub(time.Now())) - } - return net.Dial("tcp", addr) - }) - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - c, err := dialer(ctx, blis.Addr().String()) - if err != nil { - t.Fatalf("http connect Dial failed: %v", err) - } - defer c.Close() - - // Send msg on the connection. - c.Write(msg) - <-done - - // Check received msg. - if string(recvBuf) != string(msg) { - t.Fatalf("received msg: %v, want %v", recvBuf, msg) - } -} - -func TestMapAddressEnv(t *testing.T) { - defer leakcheck.Check(t) - // Overwrite the function in the test and restore them in defer. - hpfe := func(req *http.Request) (*url.URL, error) { - if req.URL.Host == envTestAddr { - return &url.URL{ - Scheme: "https", - Host: envProxyAddr, - }, nil - } - return nil, nil - } - defer overwrite(hpfe)() - - // envTestAddr should be handled by ProxyFromEnvironment. - got, err := mapAddress(context.Background(), envTestAddr) - if err != nil { - t.Error(err) - } - if got != envProxyAddr { - t.Errorf("want %v, got %v", envProxyAddr, got) - } -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2.pb.go deleted file mode 100644 index 5b016188..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2.pb.go +++ /dev/null @@ -1,77 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: proto2.proto - -/* -Package grpc_testing is a generated protocol buffer package. - -It is generated from these files: - proto2.proto - proto2_ext.proto - proto2_ext2.proto - test.proto - -It has these top-level messages: - ToBeExtended - Extension - AnotherExtension - SearchResponse - SearchRequest -*/ -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type ToBeExtended struct { - Foo *int32 `protobuf:"varint,1,req,name=foo" json:"foo,omitempty"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ToBeExtended) Reset() { *m = ToBeExtended{} } -func (m *ToBeExtended) String() string { return proto.CompactTextString(m) } -func (*ToBeExtended) ProtoMessage() {} -func (*ToBeExtended) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -var extRange_ToBeExtended = []proto.ExtensionRange{ - {10, 30}, -} - -func (*ToBeExtended) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_ToBeExtended -} - -func (m *ToBeExtended) GetFoo() int32 { - if m != nil && m.Foo != nil { - return *m.Foo - } - return 0 -} - -func init() { - proto.RegisterType((*ToBeExtended)(nil), "grpc.testing.ToBeExtended") -} - -func init() { proto.RegisterFile("proto2.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 86 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0x28, 0xca, 0x2f, - 0xc9, 0x37, 0xd2, 0x03, 0x53, 0x42, 0x3c, 0xe9, 0x45, 0x05, 0xc9, 0x7a, 0x25, 0xa9, 0xc5, 0x25, - 0x99, 0x79, 0xe9, 0x4a, 0x6a, 0x5c, 0x3c, 0x21, 0xf9, 0x4e, 0xa9, 0xae, 0x15, 0x25, 0xa9, 0x79, - 0x29, 0xa9, 0x29, 0x42, 0x02, 0x5c, 0xcc, 0x69, 0xf9, 0xf9, 0x12, 0x8c, 0x0a, 0x4c, 0x1a, 0xac, - 0x41, 0x20, 0xa6, 0x16, 0x0b, 0x07, 0x97, 0x80, 0x3c, 0x20, 0x00, 0x00, 0xff, 0xff, 0x74, 0x86, - 0x9c, 0x08, 0x44, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2.proto b/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2.proto deleted file mode 100644 index a675d143..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2.proto +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto2"; - -package grpc.testing; - -message ToBeExtended { - required int32 foo = 1; - extensions 10 to 30; -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext.pb.go deleted file mode 100644 index 9ae4f07a..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext.pb.go +++ /dev/null @@ -1,82 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: proto2_ext.proto - -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type Extension struct { - Whatzit *int32 `protobuf:"varint,1,opt,name=whatzit" json:"whatzit,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Extension) Reset() { *m = Extension{} } -func (m *Extension) String() string { return proto.CompactTextString(m) } -func (*Extension) ProtoMessage() {} -func (*Extension) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } - -func (m *Extension) GetWhatzit() int32 { - if m != nil && m.Whatzit != nil { - return *m.Whatzit - } - return 0 -} - -var E_Foo = &proto.ExtensionDesc{ - ExtendedType: (*ToBeExtended)(nil), - ExtensionType: (*int32)(nil), - Field: 13, - Name: "grpc.testing.foo", - Tag: "varint,13,opt,name=foo", - Filename: "proto2_ext.proto", -} - -var E_Bar = &proto.ExtensionDesc{ - ExtendedType: (*ToBeExtended)(nil), - ExtensionType: (*Extension)(nil), - Field: 17, - Name: "grpc.testing.bar", - Tag: "bytes,17,opt,name=bar", - Filename: "proto2_ext.proto", -} - -var E_Baz = &proto.ExtensionDesc{ - ExtendedType: (*ToBeExtended)(nil), - ExtensionType: (*SearchRequest)(nil), - Field: 19, - Name: "grpc.testing.baz", - Tag: "bytes,19,opt,name=baz", - Filename: "proto2_ext.proto", -} - -func init() { - proto.RegisterType((*Extension)(nil), "grpc.testing.Extension") - proto.RegisterExtension(E_Foo) - proto.RegisterExtension(E_Bar) - proto.RegisterExtension(E_Baz) -} - -func init() { proto.RegisterFile("proto2_ext.proto", fileDescriptor1) } - -var fileDescriptor1 = []byte{ - // 179 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x28, 0x28, 0xca, 0x2f, - 0xc9, 0x37, 0x8a, 0x4f, 0xad, 0x28, 0xd1, 0x03, 0x33, 0x85, 0x78, 0xd2, 0x8b, 0x0a, 0x92, 0xf5, - 0x4a, 0x52, 0x8b, 0x4b, 0x32, 0xf3, 0xd2, 0xa5, 0x78, 0x20, 0xf2, 0x10, 0x39, 0x29, 0x2e, 0x90, - 0x30, 0x84, 0xad, 0xa4, 0xca, 0xc5, 0xe9, 0x5a, 0x51, 0x92, 0x9a, 0x57, 0x9c, 0x99, 0x9f, 0x27, - 0x24, 0xc1, 0xc5, 0x5e, 0x9e, 0x91, 0x58, 0x52, 0x95, 0x59, 0x22, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, - 0x1a, 0x04, 0xe3, 0x5a, 0xe9, 0x70, 0x31, 0xa7, 0xe5, 0xe7, 0x0b, 0x49, 0xe9, 0x21, 0x1b, 0xab, - 0x17, 0x92, 0xef, 0x94, 0x0a, 0xd6, 0x9d, 0x92, 0x9a, 0x22, 0xc1, 0x0b, 0xd6, 0x01, 0x52, 0x66, - 0xe5, 0xca, 0xc5, 0x9c, 0x94, 0x58, 0x84, 0x57, 0xb5, 0xa0, 0x02, 0xa3, 0x06, 0xb7, 0x91, 0x38, - 0xaa, 0x0a, 0xb8, 0x4b, 0x82, 0x40, 0xfa, 0xad, 0x3c, 0x41, 0xc6, 0x54, 0xe1, 0x35, 0x46, 0x18, - 0x6c, 0x8c, 0x34, 0xaa, 0x8a, 0xe0, 0xd4, 0xc4, 0xa2, 0xe4, 0x8c, 0xa0, 0xd4, 0xc2, 0xd2, 0xd4, - 0xe2, 0x12, 0x90, 0x51, 0x55, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x71, 0x6b, 0x94, 0x9f, 0x21, - 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext.proto b/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext.proto deleted file mode 100644 index a4942e48..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext.proto +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto2"; - -package grpc.testing; - -import "proto2.proto"; -import "test.proto"; - -extend ToBeExtended { - optional int32 foo = 13; - optional Extension bar = 17; - optional SearchRequest baz = 19; -} - -message Extension { - optional int32 whatzit = 1; -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext2.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext2.pb.go deleted file mode 100644 index 26ec982a..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext2.pb.go +++ /dev/null @@ -1,71 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: proto2_ext2.proto - -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type AnotherExtension struct { - Whatchamacallit *int32 `protobuf:"varint,1,opt,name=whatchamacallit" json:"whatchamacallit,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *AnotherExtension) Reset() { *m = AnotherExtension{} } -func (m *AnotherExtension) String() string { return proto.CompactTextString(m) } -func (*AnotherExtension) ProtoMessage() {} -func (*AnotherExtension) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} } - -func (m *AnotherExtension) GetWhatchamacallit() int32 { - if m != nil && m.Whatchamacallit != nil { - return *m.Whatchamacallit - } - return 0 -} - -var E_Frob = &proto.ExtensionDesc{ - ExtendedType: (*ToBeExtended)(nil), - ExtensionType: (*string)(nil), - Field: 23, - Name: "grpc.testing.frob", - Tag: "bytes,23,opt,name=frob", - Filename: "proto2_ext2.proto", -} - -var E_Nitz = &proto.ExtensionDesc{ - ExtendedType: (*ToBeExtended)(nil), - ExtensionType: (*AnotherExtension)(nil), - Field: 29, - Name: "grpc.testing.nitz", - Tag: "bytes,29,opt,name=nitz", - Filename: "proto2_ext2.proto", -} - -func init() { - proto.RegisterType((*AnotherExtension)(nil), "grpc.testing.AnotherExtension") - proto.RegisterExtension(E_Frob) - proto.RegisterExtension(E_Nitz) -} - -func init() { proto.RegisterFile("proto2_ext2.proto", fileDescriptor2) } - -var fileDescriptor2 = []byte{ - // 165 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2c, 0x28, 0xca, 0x2f, - 0xc9, 0x37, 0x8a, 0x4f, 0xad, 0x28, 0x31, 0xd2, 0x03, 0xb3, 0x85, 0x78, 0xd2, 0x8b, 0x0a, 0x92, - 0xf5, 0x4a, 0x52, 0x8b, 0x4b, 0x32, 0xf3, 0xd2, 0xa5, 0x78, 0x20, 0x0a, 0x20, 0x72, 0x4a, 0x36, - 0x5c, 0x02, 0x8e, 0x79, 0xf9, 0x25, 0x19, 0xa9, 0x45, 0xae, 0x15, 0x25, 0xa9, 0x79, 0xc5, 0x99, - 0xf9, 0x79, 0x42, 0x1a, 0x5c, 0xfc, 0xe5, 0x19, 0x89, 0x25, 0xc9, 0x19, 0x89, 0xb9, 0x89, 0xc9, - 0x89, 0x39, 0x39, 0x99, 0x25, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0xac, 0x41, 0xe8, 0xc2, 0x56, 0x7a, - 0x5c, 0x2c, 0x69, 0x45, 0xf9, 0x49, 0x42, 0x52, 0x7a, 0xc8, 0x56, 0xe8, 0x85, 0xe4, 0x3b, 0xa5, - 0x82, 0x8d, 0x4b, 0x49, 0x4d, 0x91, 0x10, 0x57, 0x60, 0xd4, 0xe0, 0x0c, 0x02, 0xab, 0xb3, 0xf2, - 0xe3, 0x62, 0xc9, 0xcb, 0x2c, 0xa9, 0xc2, 0xab, 0x5e, 0x56, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x0e, - 0x55, 0x05, 0xba, 0x1b, 0x83, 0xc0, 0xe6, 0x00, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x7e, 0x0d, - 0x26, 0xed, 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext2.proto b/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext2.proto deleted file mode 100644 index d91ba006..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testing/proto2_ext2.proto +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto2"; - -package grpc.testing; - -import "proto2.proto"; - -extend ToBeExtended { - optional string frob = 23; - optional AnotherExtension nitz = 29; -} - -message AnotherExtension { - optional int32 whatchamacallit = 1; -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testing/test.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_testing/test.pb.go deleted file mode 100644 index 62f71ff1..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testing/test.pb.go +++ /dev/null @@ -1,247 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: test.proto - -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -type SearchResponse struct { - Results []*SearchResponse_Result `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"` -} - -func (m *SearchResponse) Reset() { *m = SearchResponse{} } -func (m *SearchResponse) String() string { return proto.CompactTextString(m) } -func (*SearchResponse) ProtoMessage() {} -func (*SearchResponse) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0} } - -func (m *SearchResponse) GetResults() []*SearchResponse_Result { - if m != nil { - return m.Results - } - return nil -} - -type SearchResponse_Result struct { - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` - Snippets []string `protobuf:"bytes,3,rep,name=snippets" json:"snippets,omitempty"` -} - -func (m *SearchResponse_Result) Reset() { *m = SearchResponse_Result{} } -func (m *SearchResponse_Result) String() string { return proto.CompactTextString(m) } -func (*SearchResponse_Result) ProtoMessage() {} -func (*SearchResponse_Result) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{0, 0} } - -func (m *SearchResponse_Result) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -func (m *SearchResponse_Result) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *SearchResponse_Result) GetSnippets() []string { - if m != nil { - return m.Snippets - } - return nil -} - -type SearchRequest struct { - Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"` -} - -func (m *SearchRequest) Reset() { *m = SearchRequest{} } -func (m *SearchRequest) String() string { return proto.CompactTextString(m) } -func (*SearchRequest) ProtoMessage() {} -func (*SearchRequest) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{1} } - -func (m *SearchRequest) GetQuery() string { - if m != nil { - return m.Query - } - return "" -} - -func init() { - proto.RegisterType((*SearchResponse)(nil), "grpc.testing.SearchResponse") - proto.RegisterType((*SearchResponse_Result)(nil), "grpc.testing.SearchResponse.Result") - proto.RegisterType((*SearchRequest)(nil), "grpc.testing.SearchRequest") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for SearchService service - -type SearchServiceClient interface { - Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) - StreamingSearch(ctx context.Context, opts ...grpc.CallOption) (SearchService_StreamingSearchClient, error) -} - -type searchServiceClient struct { - cc *grpc.ClientConn -} - -func NewSearchServiceClient(cc *grpc.ClientConn) SearchServiceClient { - return &searchServiceClient{cc} -} - -func (c *searchServiceClient) Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) { - out := new(SearchResponse) - err := grpc.Invoke(ctx, "/grpc.testing.SearchService/Search", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *searchServiceClient) StreamingSearch(ctx context.Context, opts ...grpc.CallOption) (SearchService_StreamingSearchClient, error) { - stream, err := grpc.NewClientStream(ctx, &_SearchService_serviceDesc.Streams[0], c.cc, "/grpc.testing.SearchService/StreamingSearch", opts...) - if err != nil { - return nil, err - } - x := &searchServiceStreamingSearchClient{stream} - return x, nil -} - -type SearchService_StreamingSearchClient interface { - Send(*SearchRequest) error - Recv() (*SearchResponse, error) - grpc.ClientStream -} - -type searchServiceStreamingSearchClient struct { - grpc.ClientStream -} - -func (x *searchServiceStreamingSearchClient) Send(m *SearchRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *searchServiceStreamingSearchClient) Recv() (*SearchResponse, error) { - m := new(SearchResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for SearchService service - -type SearchServiceServer interface { - Search(context.Context, *SearchRequest) (*SearchResponse, error) - StreamingSearch(SearchService_StreamingSearchServer) error -} - -func RegisterSearchServiceServer(s *grpc.Server, srv SearchServiceServer) { - s.RegisterService(&_SearchService_serviceDesc, srv) -} - -func _SearchService_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SearchServiceServer).Search(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.SearchService/Search", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SearchServiceServer).Search(ctx, req.(*SearchRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SearchService_StreamingSearch_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(SearchServiceServer).StreamingSearch(&searchServiceStreamingSearchServer{stream}) -} - -type SearchService_StreamingSearchServer interface { - Send(*SearchResponse) error - Recv() (*SearchRequest, error) - grpc.ServerStream -} - -type searchServiceStreamingSearchServer struct { - grpc.ServerStream -} - -func (x *searchServiceStreamingSearchServer) Send(m *SearchResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *searchServiceStreamingSearchServer) Recv() (*SearchRequest, error) { - m := new(SearchRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _SearchService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.SearchService", - HandlerType: (*SearchServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Search", - Handler: _SearchService_Search_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingSearch", - Handler: _SearchService_StreamingSearch_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "test.proto", -} - -func init() { proto.RegisterFile("test.proto", fileDescriptor3) } - -var fileDescriptor3 = []byte{ - // 231 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x91, 0xbd, 0x4a, 0xc5, 0x40, - 0x10, 0x85, 0x59, 0x83, 0xd1, 0x3b, 0xfe, 0x32, 0x58, 0x84, 0x68, 0x11, 0xae, 0x08, 0xa9, 0x16, - 0xb9, 0xd6, 0x56, 0xb6, 0x16, 0xb2, 0x79, 0x82, 0x6b, 0x18, 0xe2, 0x42, 0x4c, 0x36, 0x33, 0x13, - 0xc1, 0x87, 0xb1, 0xf5, 0x39, 0x25, 0x59, 0x23, 0x0a, 0x62, 0x63, 0xb7, 0xe7, 0xe3, 0xcc, 0xb7, - 0xbb, 0x0c, 0x80, 0x92, 0xa8, 0x0d, 0xdc, 0x6b, 0x8f, 0x87, 0x0d, 0x87, 0xda, 0x4e, 0xc0, 0x77, - 0xcd, 0xfa, 0xcd, 0xc0, 0x71, 0x45, 0x5b, 0xae, 0x9f, 0x1c, 0x49, 0xe8, 0x3b, 0x21, 0xbc, 0x85, - 0x3d, 0x26, 0x19, 0x5b, 0x95, 0xcc, 0x14, 0x49, 0x79, 0xb0, 0xb9, 0xb4, 0xdf, 0x47, 0xec, 0xcf, - 0xba, 0x75, 0x73, 0xd7, 0x2d, 0x33, 0xf9, 0x3d, 0xa4, 0x11, 0xe1, 0x29, 0x24, 0x23, 0xb7, 0x99, - 0x29, 0x4c, 0xb9, 0x72, 0xd3, 0x11, 0xcf, 0x60, 0x57, 0xbd, 0xb6, 0x94, 0xed, 0xcc, 0x2c, 0x06, - 0xcc, 0x61, 0x5f, 0x3a, 0x1f, 0x02, 0xa9, 0x64, 0x49, 0x91, 0x94, 0x2b, 0xf7, 0x95, 0xd7, 0x57, - 0x70, 0xb4, 0xdc, 0x37, 0x8c, 0x24, 0x3a, 0x29, 0x86, 0x91, 0xf8, 0xf5, 0x53, 0x1b, 0xc3, 0xe6, - 0xdd, 0x2c, 0xbd, 0x8a, 0xf8, 0xc5, 0xd7, 0x84, 0x77, 0x90, 0x46, 0x80, 0xe7, 0xbf, 0x3f, 0x7f, - 0xd6, 0xe5, 0x17, 0x7f, 0xfd, 0x0d, 0x1f, 0xe0, 0xa4, 0x52, 0xa6, 0xed, 0xb3, 0xef, 0x9a, 0x7f, - 0xdb, 0x4a, 0x73, 0x6d, 0x1e, 0xd3, 0x79, 0x09, 0x37, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x20, - 0xd6, 0x09, 0xb8, 0x92, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testing/test.proto b/vendor/google.golang.org/grpc/reflection/grpc_testing/test.proto deleted file mode 100644 index cae3f01a..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testing/test.proto +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package grpc.testing; - -message SearchResponse { - message Result { - string url = 1; - string title = 2; - repeated string snippets = 3; - } - repeated Result results = 1; -} - -message SearchRequest { - string query = 1; -} - -service SearchService { - rpc Search(SearchRequest) returns (SearchResponse); - rpc StreamingSearch(stream SearchRequest) returns (stream SearchResponse); -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testingv3/testv3.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_testingv3/testv3.pb.go deleted file mode 100644 index 78876aae..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testingv3/testv3.pb.go +++ /dev/null @@ -1,236 +0,0 @@ -// Code generated by protoc-gen-go. -// source: testv3.proto -// DO NOT EDIT! - -/* -Package grpc_testingv3 is a generated protocol buffer package. - -It is generated from these files: - testv3.proto - -It has these top-level messages: - SearchResponseV3 - SearchRequestV3 -*/ -package grpc_testingv3 - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type SearchResponseV3 struct { - Results []*SearchResponseV3_Result `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"` -} - -func (m *SearchResponseV3) Reset() { *m = SearchResponseV3{} } -func (m *SearchResponseV3) String() string { return proto.CompactTextString(m) } -func (*SearchResponseV3) ProtoMessage() {} -func (*SearchResponseV3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *SearchResponseV3) GetResults() []*SearchResponseV3_Result { - if m != nil { - return m.Results - } - return nil -} - -type SearchResponseV3_Result struct { - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` - Snippets []string `protobuf:"bytes,3,rep,name=snippets" json:"snippets,omitempty"` -} - -func (m *SearchResponseV3_Result) Reset() { *m = SearchResponseV3_Result{} } -func (m *SearchResponseV3_Result) String() string { return proto.CompactTextString(m) } -func (*SearchResponseV3_Result) ProtoMessage() {} -func (*SearchResponseV3_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } - -type SearchRequestV3 struct { - Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"` -} - -func (m *SearchRequestV3) Reset() { *m = SearchRequestV3{} } -func (m *SearchRequestV3) String() string { return proto.CompactTextString(m) } -func (*SearchRequestV3) ProtoMessage() {} -func (*SearchRequestV3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func init() { - proto.RegisterType((*SearchResponseV3)(nil), "grpc.testingv3.SearchResponseV3") - proto.RegisterType((*SearchResponseV3_Result)(nil), "grpc.testingv3.SearchResponseV3.Result") - proto.RegisterType((*SearchRequestV3)(nil), "grpc.testingv3.SearchRequestV3") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion3 - -// Client API for SearchServiceV3 service - -type SearchServiceV3Client interface { - Search(ctx context.Context, in *SearchRequestV3, opts ...grpc.CallOption) (*SearchResponseV3, error) - StreamingSearch(ctx context.Context, opts ...grpc.CallOption) (SearchServiceV3_StreamingSearchClient, error) -} - -type searchServiceV3Client struct { - cc *grpc.ClientConn -} - -func NewSearchServiceV3Client(cc *grpc.ClientConn) SearchServiceV3Client { - return &searchServiceV3Client{cc} -} - -func (c *searchServiceV3Client) Search(ctx context.Context, in *SearchRequestV3, opts ...grpc.CallOption) (*SearchResponseV3, error) { - out := new(SearchResponseV3) - err := grpc.Invoke(ctx, "/grpc.testingv3.SearchServiceV3/Search", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *searchServiceV3Client) StreamingSearch(ctx context.Context, opts ...grpc.CallOption) (SearchServiceV3_StreamingSearchClient, error) { - stream, err := grpc.NewClientStream(ctx, &_SearchServiceV3_serviceDesc.Streams[0], c.cc, "/grpc.testingv3.SearchServiceV3/StreamingSearch", opts...) - if err != nil { - return nil, err - } - x := &searchServiceV3StreamingSearchClient{stream} - return x, nil -} - -type SearchServiceV3_StreamingSearchClient interface { - Send(*SearchRequestV3) error - Recv() (*SearchResponseV3, error) - grpc.ClientStream -} - -type searchServiceV3StreamingSearchClient struct { - grpc.ClientStream -} - -func (x *searchServiceV3StreamingSearchClient) Send(m *SearchRequestV3) error { - return x.ClientStream.SendMsg(m) -} - -func (x *searchServiceV3StreamingSearchClient) Recv() (*SearchResponseV3, error) { - m := new(SearchResponseV3) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for SearchServiceV3 service - -type SearchServiceV3Server interface { - Search(context.Context, *SearchRequestV3) (*SearchResponseV3, error) - StreamingSearch(SearchServiceV3_StreamingSearchServer) error -} - -func RegisterSearchServiceV3Server(s *grpc.Server, srv SearchServiceV3Server) { - s.RegisterService(&_SearchServiceV3_serviceDesc, srv) -} - -func _SearchServiceV3_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SearchRequestV3) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SearchServiceV3Server).Search(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testingv3.SearchServiceV3/Search", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SearchServiceV3Server).Search(ctx, req.(*SearchRequestV3)) - } - return interceptor(ctx, in, info, handler) -} - -func _SearchServiceV3_StreamingSearch_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(SearchServiceV3Server).StreamingSearch(&searchServiceV3StreamingSearchServer{stream}) -} - -type SearchServiceV3_StreamingSearchServer interface { - Send(*SearchResponseV3) error - Recv() (*SearchRequestV3, error) - grpc.ServerStream -} - -type searchServiceV3StreamingSearchServer struct { - grpc.ServerStream -} - -func (x *searchServiceV3StreamingSearchServer) Send(m *SearchResponseV3) error { - return x.ServerStream.SendMsg(m) -} - -func (x *searchServiceV3StreamingSearchServer) Recv() (*SearchRequestV3, error) { - m := new(SearchRequestV3) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _SearchServiceV3_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testingv3.SearchServiceV3", - HandlerType: (*SearchServiceV3Server)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Search", - Handler: _SearchServiceV3_Search_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingSearch", - Handler: _SearchServiceV3_StreamingSearch_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: fileDescriptor0, -} - -func init() { proto.RegisterFile("testv3.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 240 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x91, 0x41, 0x4b, 0xc3, 0x40, - 0x10, 0x85, 0x59, 0x83, 0xd1, 0x8e, 0x62, 0xcb, 0xe2, 0x21, 0xe4, 0x62, 0xe8, 0xa5, 0x39, 0x2d, - 0xd2, 0xfd, 0x05, 0x9e, 0xf5, 0xb4, 0x81, 0xe2, 0xb5, 0x86, 0x21, 0x2e, 0xc4, 0x64, 0x3b, 0x33, - 0x09, 0xf8, 0x7b, 0xfc, 0x13, 0xfe, 0x3c, 0x49, 0xd2, 0x08, 0x0a, 0xe2, 0xa5, 0xb7, 0x7d, 0x8f, - 0xf7, 0xbe, 0xe5, 0x31, 0x70, 0x2d, 0xc8, 0xd2, 0x5b, 0x13, 0xa8, 0x95, 0x56, 0xdf, 0x54, 0x14, - 0x4a, 0x33, 0x58, 0xbe, 0xa9, 0x7a, 0xbb, 0xfe, 0x50, 0xb0, 0x2a, 0x70, 0x4f, 0xe5, 0xab, 0x43, - 0x0e, 0x6d, 0xc3, 0xb8, 0xb3, 0xfa, 0x01, 0x2e, 0x08, 0xb9, 0xab, 0x85, 0x13, 0x95, 0x45, 0xf9, - 0xd5, 0x76, 0x63, 0x7e, 0xd6, 0xcc, 0xef, 0x8a, 0x71, 0x63, 0xde, 0xcd, 0xbd, 0xf4, 0x09, 0xe2, - 0xc9, 0xd2, 0x2b, 0x88, 0x3a, 0xaa, 0x13, 0x95, 0xa9, 0x7c, 0xe1, 0x86, 0xa7, 0xbe, 0x85, 0x73, - 0xf1, 0x52, 0x63, 0x72, 0x36, 0x7a, 0x93, 0xd0, 0x29, 0x5c, 0x72, 0xe3, 0x43, 0x40, 0xe1, 0x24, - 0xca, 0xa2, 0x7c, 0xe1, 0xbe, 0xf5, 0x7a, 0x03, 0xcb, 0xf9, 0xc7, 0x43, 0x87, 0x2c, 0x3b, 0x3b, - 0x40, 0x0e, 0x1d, 0xd2, 0xfb, 0x11, 0x3c, 0x89, 0xed, 0xa7, 0x9a, 0x93, 0x05, 0x52, 0xef, 0xcb, - 0x61, 0xcd, 0x23, 0xc4, 0x93, 0xa5, 0xef, 0xfe, 0x9a, 0x71, 0x84, 0xa6, 0xd9, 0x7f, 0x3b, 0xf5, - 0x33, 0x2c, 0x0b, 0x21, 0xdc, 0xbf, 0xf9, 0xa6, 0x3a, 0x19, 0x35, 0x57, 0xf7, 0xea, 0x25, 0x1e, - 0x0f, 0x64, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd4, 0xe6, 0xa0, 0xf9, 0xb0, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/reflection/grpc_testingv3/testv3.proto b/vendor/google.golang.org/grpc/reflection/grpc_testingv3/testv3.proto deleted file mode 100644 index 1e175193..00000000 --- a/vendor/google.golang.org/grpc/reflection/grpc_testingv3/testv3.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -package grpc.testingv3; - -message SearchResponseV3 { - message Result { - string url = 1; - string title = 2; - repeated string snippets = 3; - } - repeated Result results = 1; -} - -message SearchRequestV3 { - string query = 1; -} - -service SearchServiceV3 { - rpc Search(SearchRequestV3) returns (SearchResponseV3); - rpc StreamingSearch(stream SearchRequestV3) returns (stream SearchResponseV3); -} diff --git a/vendor/google.golang.org/grpc/reflection/serverreflection_test.go b/vendor/google.golang.org/grpc/reflection/serverreflection_test.go deleted file mode 100644 index 90858908..00000000 --- a/vendor/google.golang.org/grpc/reflection/serverreflection_test.go +++ /dev/null @@ -1,520 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc -I grpc_testing --go_out=plugins=grpc:grpc_testing/ grpc_testing/proto2.proto grpc_testing/proto2_ext.proto grpc_testing/proto2_ext2.proto grpc_testing/test.proto - -// Note: grpc_testingv3/testv3.pb.go is not re-generated because it was -// intentionally generated by an older version of protoc-gen-go. - -package reflection - -import ( - "fmt" - "net" - "reflect" - "sort" - "testing" - - "github.com/golang/protobuf/proto" - dpb "github.com/golang/protobuf/protoc-gen-go/descriptor" - "golang.org/x/net/context" - "google.golang.org/grpc" - rpb "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" - pb "google.golang.org/grpc/reflection/grpc_testing" - pbv3 "google.golang.org/grpc/reflection/grpc_testingv3" -) - -var ( - s = &serverReflectionServer{} - // fileDescriptor of each test proto file. - fdTest *dpb.FileDescriptorProto - fdTestv3 *dpb.FileDescriptorProto - fdProto2 *dpb.FileDescriptorProto - fdProto2Ext *dpb.FileDescriptorProto - fdProto2Ext2 *dpb.FileDescriptorProto - // fileDescriptor marshalled. - fdTestByte []byte - fdTestv3Byte []byte - fdProto2Byte []byte - fdProto2ExtByte []byte - fdProto2Ext2Byte []byte -) - -func loadFileDesc(filename string) (*dpb.FileDescriptorProto, []byte) { - enc := proto.FileDescriptor(filename) - if enc == nil { - panic(fmt.Sprintf("failed to find fd for file: %v", filename)) - } - fd, err := s.decodeFileDesc(enc) - if err != nil { - panic(fmt.Sprintf("failed to decode enc: %v", err)) - } - b, err := proto.Marshal(fd) - if err != nil { - panic(fmt.Sprintf("failed to marshal fd: %v", err)) - } - return fd, b -} - -func init() { - fdTest, fdTestByte = loadFileDesc("test.proto") - fdTestv3, fdTestv3Byte = loadFileDesc("testv3.proto") - fdProto2, fdProto2Byte = loadFileDesc("proto2.proto") - fdProto2Ext, fdProto2ExtByte = loadFileDesc("proto2_ext.proto") - fdProto2Ext2, fdProto2Ext2Byte = loadFileDesc("proto2_ext2.proto") -} - -func TestFileDescForType(t *testing.T) { - for _, test := range []struct { - st reflect.Type - wantFd *dpb.FileDescriptorProto - }{ - {reflect.TypeOf(pb.SearchResponse_Result{}), fdTest}, - {reflect.TypeOf(pb.ToBeExtended{}), fdProto2}, - } { - fd, err := s.fileDescForType(test.st) - if err != nil || !proto.Equal(fd, test.wantFd) { - t.Errorf("fileDescForType(%q) = %q, %v, want %q, <nil>", test.st, fd, err, test.wantFd) - } - } -} - -func TestTypeForName(t *testing.T) { - for _, test := range []struct { - name string - want reflect.Type - }{ - {"grpc.testing.SearchResponse", reflect.TypeOf(pb.SearchResponse{})}, - } { - r, err := s.typeForName(test.name) - if err != nil || r != test.want { - t.Errorf("typeForName(%q) = %q, %v, want %q, <nil>", test.name, r, err, test.want) - } - } -} - -func TestTypeForNameNotFound(t *testing.T) { - for _, test := range []string{ - "grpc.testing.not_exiting", - } { - _, err := s.typeForName(test) - if err == nil { - t.Errorf("typeForName(%q) = _, %v, want _, <non-nil>", test, err) - } - } -} - -func TestFileDescContainingExtension(t *testing.T) { - for _, test := range []struct { - st reflect.Type - extNum int32 - want *dpb.FileDescriptorProto - }{ - {reflect.TypeOf(pb.ToBeExtended{}), 13, fdProto2Ext}, - {reflect.TypeOf(pb.ToBeExtended{}), 17, fdProto2Ext}, - {reflect.TypeOf(pb.ToBeExtended{}), 19, fdProto2Ext}, - {reflect.TypeOf(pb.ToBeExtended{}), 23, fdProto2Ext2}, - {reflect.TypeOf(pb.ToBeExtended{}), 29, fdProto2Ext2}, - } { - fd, err := s.fileDescContainingExtension(test.st, test.extNum) - if err != nil || !proto.Equal(fd, test.want) { - t.Errorf("fileDescContainingExtension(%q) = %q, %v, want %q, <nil>", test.st, fd, err, test.want) - } - } -} - -// intArray is used to sort []int32 -type intArray []int32 - -func (s intArray) Len() int { return len(s) } -func (s intArray) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s intArray) Less(i, j int) bool { return s[i] < s[j] } - -func TestAllExtensionNumbersForType(t *testing.T) { - for _, test := range []struct { - st reflect.Type - want []int32 - }{ - {reflect.TypeOf(pb.ToBeExtended{}), []int32{13, 17, 19, 23, 29}}, - } { - r, err := s.allExtensionNumbersForType(test.st) - sort.Sort(intArray(r)) - if err != nil || !reflect.DeepEqual(r, test.want) { - t.Errorf("allExtensionNumbersForType(%q) = %v, %v, want %v, <nil>", test.st, r, err, test.want) - } - } -} - -// Do end2end tests. - -type server struct{} - -func (s *server) Search(ctx context.Context, in *pb.SearchRequest) (*pb.SearchResponse, error) { - return &pb.SearchResponse{}, nil -} - -func (s *server) StreamingSearch(stream pb.SearchService_StreamingSearchServer) error { - return nil -} - -type serverV3 struct{} - -func (s *serverV3) Search(ctx context.Context, in *pbv3.SearchRequestV3) (*pbv3.SearchResponseV3, error) { - return &pbv3.SearchResponseV3{}, nil -} - -func (s *serverV3) StreamingSearch(stream pbv3.SearchServiceV3_StreamingSearchServer) error { - return nil -} - -func TestReflectionEnd2end(t *testing.T) { - // Start server. - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("failed to listen: %v", err) - } - s := grpc.NewServer() - pb.RegisterSearchServiceServer(s, &server{}) - pbv3.RegisterSearchServiceV3Server(s, &serverV3{}) - // Register reflection service on s. - Register(s) - go s.Serve(lis) - - // Create client. - conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure()) - if err != nil { - t.Fatalf("cannot connect to server: %v", err) - } - defer conn.Close() - - c := rpb.NewServerReflectionClient(conn) - stream, err := c.ServerReflectionInfo(context.Background(), grpc.FailFast(false)) - if err != nil { - t.Fatalf("cannot get ServerReflectionInfo: %v", err) - } - - testFileByFilename(t, stream) - testFileByFilenameError(t, stream) - testFileContainingSymbol(t, stream) - testFileContainingSymbolError(t, stream) - testFileContainingExtension(t, stream) - testFileContainingExtensionError(t, stream) - testAllExtensionNumbersOfType(t, stream) - testAllExtensionNumbersOfTypeError(t, stream) - testListServices(t, stream) - - s.Stop() -} - -func testFileByFilename(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - for _, test := range []struct { - filename string - want []byte - }{ - {"test.proto", fdTestByte}, - {"proto2.proto", fdProto2Byte}, - {"proto2_ext.proto", fdProto2ExtByte}, - } { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_FileByFilename{ - FileByFilename: test.filename, - }, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_FileDescriptorResponse: - if !reflect.DeepEqual(r.GetFileDescriptorResponse().FileDescriptorProto[0], test.want) { - t.Errorf("FileByFilename(%v)\nreceived: %q,\nwant: %q", test.filename, r.GetFileDescriptorResponse().FileDescriptorProto[0], test.want) - } - default: - t.Errorf("FileByFilename(%v) = %v, want type <ServerReflectionResponse_FileDescriptorResponse>", test.filename, r.MessageResponse) - } - } -} - -func testFileByFilenameError(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - for _, test := range []string{ - "test.poto", - "proo2.proto", - "proto2_et.proto", - } { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_FileByFilename{ - FileByFilename: test, - }, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_ErrorResponse: - default: - t.Errorf("FileByFilename(%v) = %v, want type <ServerReflectionResponse_ErrorResponse>", test, r.MessageResponse) - } - } -} - -func testFileContainingSymbol(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - for _, test := range []struct { - symbol string - want []byte - }{ - {"grpc.testing.SearchService", fdTestByte}, - {"grpc.testing.SearchService.Search", fdTestByte}, - {"grpc.testing.SearchService.StreamingSearch", fdTestByte}, - {"grpc.testing.SearchResponse", fdTestByte}, - {"grpc.testing.ToBeExtended", fdProto2Byte}, - // Test support package v3. - {"grpc.testingv3.SearchServiceV3", fdTestv3Byte}, - {"grpc.testingv3.SearchServiceV3.Search", fdTestv3Byte}, - {"grpc.testingv3.SearchServiceV3.StreamingSearch", fdTestv3Byte}, - {"grpc.testingv3.SearchResponseV3", fdTestv3Byte}, - } { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_FileContainingSymbol{ - FileContainingSymbol: test.symbol, - }, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_FileDescriptorResponse: - if !reflect.DeepEqual(r.GetFileDescriptorResponse().FileDescriptorProto[0], test.want) { - t.Errorf("FileContainingSymbol(%v)\nreceived: %q,\nwant: %q", test.symbol, r.GetFileDescriptorResponse().FileDescriptorProto[0], test.want) - } - default: - t.Errorf("FileContainingSymbol(%v) = %v, want type <ServerReflectionResponse_FileDescriptorResponse>", test.symbol, r.MessageResponse) - } - } -} - -func testFileContainingSymbolError(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - for _, test := range []string{ - "grpc.testing.SerchService", - "grpc.testing.SearchService.SearchE", - "grpc.tesing.SearchResponse", - "gpc.testing.ToBeExtended", - } { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_FileContainingSymbol{ - FileContainingSymbol: test, - }, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_ErrorResponse: - default: - t.Errorf("FileContainingSymbol(%v) = %v, want type <ServerReflectionResponse_ErrorResponse>", test, r.MessageResponse) - } - } -} - -func testFileContainingExtension(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - for _, test := range []struct { - typeName string - extNum int32 - want []byte - }{ - {"grpc.testing.ToBeExtended", 13, fdProto2ExtByte}, - {"grpc.testing.ToBeExtended", 17, fdProto2ExtByte}, - {"grpc.testing.ToBeExtended", 19, fdProto2ExtByte}, - {"grpc.testing.ToBeExtended", 23, fdProto2Ext2Byte}, - {"grpc.testing.ToBeExtended", 29, fdProto2Ext2Byte}, - } { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_FileContainingExtension{ - FileContainingExtension: &rpb.ExtensionRequest{ - ContainingType: test.typeName, - ExtensionNumber: test.extNum, - }, - }, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_FileDescriptorResponse: - if !reflect.DeepEqual(r.GetFileDescriptorResponse().FileDescriptorProto[0], test.want) { - t.Errorf("FileContainingExtension(%v, %v)\nreceived: %q,\nwant: %q", test.typeName, test.extNum, r.GetFileDescriptorResponse().FileDescriptorProto[0], test.want) - } - default: - t.Errorf("FileContainingExtension(%v, %v) = %v, want type <ServerReflectionResponse_FileDescriptorResponse>", test.typeName, test.extNum, r.MessageResponse) - } - } -} - -func testFileContainingExtensionError(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - for _, test := range []struct { - typeName string - extNum int32 - }{ - {"grpc.testing.ToBExtended", 17}, - {"grpc.testing.ToBeExtended", 15}, - } { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_FileContainingExtension{ - FileContainingExtension: &rpb.ExtensionRequest{ - ContainingType: test.typeName, - ExtensionNumber: test.extNum, - }, - }, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_ErrorResponse: - default: - t.Errorf("FileContainingExtension(%v, %v) = %v, want type <ServerReflectionResponse_FileDescriptorResponse>", test.typeName, test.extNum, r.MessageResponse) - } - } -} - -func testAllExtensionNumbersOfType(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - for _, test := range []struct { - typeName string - want []int32 - }{ - {"grpc.testing.ToBeExtended", []int32{13, 17, 19, 23, 29}}, - } { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_AllExtensionNumbersOfType{ - AllExtensionNumbersOfType: test.typeName, - }, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_AllExtensionNumbersResponse: - extNum := r.GetAllExtensionNumbersResponse().ExtensionNumber - sort.Sort(intArray(extNum)) - if r.GetAllExtensionNumbersResponse().BaseTypeName != test.typeName || - !reflect.DeepEqual(extNum, test.want) { - t.Errorf("AllExtensionNumbersOfType(%v)\nreceived: %v,\nwant: {%q %v}", r.GetAllExtensionNumbersResponse(), test.typeName, test.typeName, test.want) - } - default: - t.Errorf("AllExtensionNumbersOfType(%v) = %v, want type <ServerReflectionResponse_AllExtensionNumbersResponse>", test.typeName, r.MessageResponse) - } - } -} - -func testAllExtensionNumbersOfTypeError(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - for _, test := range []string{ - "grpc.testing.ToBeExtendedE", - } { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_AllExtensionNumbersOfType{ - AllExtensionNumbersOfType: test, - }, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_ErrorResponse: - default: - t.Errorf("AllExtensionNumbersOfType(%v) = %v, want type <ServerReflectionResponse_ErrorResponse>", test, r.MessageResponse) - } - } -} - -func testListServices(t *testing.T, stream rpb.ServerReflection_ServerReflectionInfoClient) { - if err := stream.Send(&rpb.ServerReflectionRequest{ - MessageRequest: &rpb.ServerReflectionRequest_ListServices{}, - }); err != nil { - t.Fatalf("failed to send request: %v", err) - } - r, err := stream.Recv() - if err != nil { - // io.EOF is not ok. - t.Fatalf("failed to recv response: %v", err) - } - - switch r.MessageResponse.(type) { - case *rpb.ServerReflectionResponse_ListServicesResponse: - services := r.GetListServicesResponse().Service - want := []string{ - "grpc.testingv3.SearchServiceV3", - "grpc.testing.SearchService", - "grpc.reflection.v1alpha.ServerReflection", - } - // Compare service names in response with want. - if len(services) != len(want) { - t.Errorf("= %v, want service names: %v", services, want) - } - m := make(map[string]int) - for _, e := range services { - m[e.Name]++ - } - for _, e := range want { - if m[e] > 0 { - m[e]-- - continue - } - t.Errorf("ListService\nreceived: %v,\nwant: %q", services, want) - } - default: - t.Errorf("ListServices = %v, want type <ServerReflectionResponse_ListServicesResponse>", r.MessageResponse) - } -} diff --git a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver_test.go b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver_test.go deleted file mode 100644 index 41a9ecb9..00000000 --- a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver_test.go +++ /dev/null @@ -1,894 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package dns - -import ( - "fmt" - "net" - "os" - "reflect" - "sync" - "testing" - "time" - - "google.golang.org/grpc/resolver" - "google.golang.org/grpc/test/leakcheck" -) - -func TestMain(m *testing.M) { - cleanup := replaceNetFunc() - code := m.Run() - cleanup() - os.Exit(code) -} - -const ( - txtBytesLimit = 255 -) - -type testClientConn struct { - target string - m1 sync.Mutex - addrs []resolver.Address - a int - m2 sync.Mutex - sc string - s int -} - -func (t *testClientConn) NewAddress(addresses []resolver.Address) { - t.m1.Lock() - defer t.m1.Unlock() - t.addrs = addresses - t.a++ -} - -func (t *testClientConn) getAddress() ([]resolver.Address, int) { - t.m1.Lock() - defer t.m1.Unlock() - return t.addrs, t.a -} - -func (t *testClientConn) NewServiceConfig(serviceConfig string) { - t.m2.Lock() - defer t.m2.Unlock() - t.sc = serviceConfig - t.s++ -} - -func (t *testClientConn) getSc() (string, int) { - t.m2.Lock() - defer t.m2.Unlock() - return t.sc, t.s -} - -var hostLookupTbl = struct { - sync.Mutex - tbl map[string][]string -}{ - tbl: map[string][]string{ - "foo.bar.com": {"1.2.3.4", "5.6.7.8"}, - "ipv4.single.fake": {"1.2.3.4"}, - "srv.ipv4.single.fake": {"2.4.6.8"}, - "ipv4.multi.fake": {"1.2.3.4", "5.6.7.8", "9.10.11.12"}, - "ipv6.single.fake": {"2607:f8b0:400a:801::1001"}, - "ipv6.multi.fake": {"2607:f8b0:400a:801::1001", "2607:f8b0:400a:801::1002", "2607:f8b0:400a:801::1003"}, - }, -} - -func hostLookup(host string) ([]string, error) { - hostLookupTbl.Lock() - defer hostLookupTbl.Unlock() - if addrs, cnt := hostLookupTbl.tbl[host]; cnt { - return addrs, nil - } - return nil, fmt.Errorf("failed to lookup host:%s resolution in hostLookupTbl", host) -} - -var srvLookupTbl = struct { - sync.Mutex - tbl map[string][]*net.SRV -}{ - tbl: map[string][]*net.SRV{ - "_grpclb._tcp.srv.ipv4.single.fake": {&net.SRV{Target: "ipv4.single.fake", Port: 1234}}, - "_grpclb._tcp.srv.ipv4.multi.fake": {&net.SRV{Target: "ipv4.multi.fake", Port: 1234}}, - "_grpclb._tcp.srv.ipv6.single.fake": {&net.SRV{Target: "ipv6.single.fake", Port: 1234}}, - "_grpclb._tcp.srv.ipv6.multi.fake": {&net.SRV{Target: "ipv6.multi.fake", Port: 1234}}, - }, -} - -func srvLookup(service, proto, name string) (string, []*net.SRV, error) { - cname := "_" + service + "._" + proto + "." + name - srvLookupTbl.Lock() - defer srvLookupTbl.Unlock() - if srvs, cnt := srvLookupTbl.tbl[cname]; cnt { - return cname, srvs, nil - } - return "", nil, fmt.Errorf("failed to lookup srv record for %s in srvLookupTbl", cname) -} - -// div divides a byte slice into a slice of strings, each of which is of maximum -// 255 bytes length, which is the length limit per TXT record in DNS. -func div(b []byte) []string { - var r []string - for i := 0; i < len(b); i += txtBytesLimit { - if i+txtBytesLimit > len(b) { - r = append(r, string(b[i:])) - } else { - r = append(r, string(b[i:i+txtBytesLimit])) - } - } - return r -} - -// scfs contains an array of service config file string in JSON format. -// Notes about the scfs contents and usage: -// scfs contains 4 service config file JSON strings for testing. Inside each -// service config file, there are multiple choices. scfs[0:3] each contains 5 -// choices, and first 3 choices are nonmatching choices based on canarying rule, -// while the last two are matched choices. scfs[3] only contains 3 choices, and -// all of them are nonmatching based on canarying rule. For each of scfs[0:3], -// the eventually returned service config, which is from the first of the two -// matched choices, is stored in the corresponding scs element (e.g. -// scfs[0]->scs[0]). scfs and scs elements are used in pair to test the dns -// resolver functionality, with scfs as the input and scs used for validation of -// the output. For scfs[3], it corresponds to empty service config, since there -// isn't a matched choice. -var scfs = []string{ - `[ - { - "clientLanguage": [ - "CPP", - "JAVA" - ], - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "percentage": 0, - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "clientHostName": [ - "localhost" - ], - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "clientLanguage": [ - "GO" - ], - "percentage": 100, - "serviceConfig": { - "methodConfig": [ - { - "name": [ - { - "method": "bar" - } - ], - "maxRequestMessageBytes": 1024, - "maxResponseMessageBytes": 1024 - } - ] - } - }, - { - "serviceConfig": { - "loadBalancingPolicy": "round_robin", - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "bar" - } - ], - "waitForReady": true - } - ] - } - } -]`, - `[ - { - "clientLanguage": [ - "CPP", - "JAVA" - ], - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "percentage": 0, - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "clientHostName": [ - "localhost" - ], - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "clientLanguage": [ - "GO" - ], - "percentage": 100, - "serviceConfig": { - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "bar" - } - ], - "waitForReady": true, - "timeout": "1s", - "maxRequestMessageBytes": 1024, - "maxResponseMessageBytes": 1024 - } - ] - } - }, - { - "serviceConfig": { - "loadBalancingPolicy": "round_robin", - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "bar" - } - ], - "waitForReady": true - } - ] - } - } -]`, - `[ - { - "clientLanguage": [ - "CPP", - "JAVA" - ], - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "percentage": 0, - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "clientHostName": [ - "localhost" - ], - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "clientLanguage": [ - "GO" - ], - "percentage": 100, - "serviceConfig": { - "loadBalancingPolicy": "round_robin", - "methodConfig": [ - { - "name": [ - { - "service": "foo" - } - ], - "waitForReady": true, - "timeout": "1s" - }, - { - "name": [ - { - "service": "bar" - } - ], - "waitForReady": false - } - ] - } - }, - { - "serviceConfig": { - "loadBalancingPolicy": "round_robin", - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "bar" - } - ], - "waitForReady": true - } - ] - } - } -]`, - `[ - { - "clientLanguage": [ - "CPP", - "JAVA" - ], - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "percentage": 0, - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - }, - { - "clientHostName": [ - "localhost" - ], - "serviceConfig": { - "loadBalancingPolicy": "grpclb", - "methodConfig": [ - { - "name": [ - { - "service": "all" - } - ], - "timeout": "1s" - } - ] - } - } -]`, -} - -// scs contains an array of service config string in JSON format. -var scs = []string{ - `{ - "methodConfig": [ - { - "name": [ - { - "method": "bar" - } - ], - "maxRequestMessageBytes": 1024, - "maxResponseMessageBytes": 1024 - } - ] - }`, - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "bar" - } - ], - "waitForReady": true, - "timeout": "1s", - "maxRequestMessageBytes": 1024, - "maxResponseMessageBytes": 1024 - } - ] - }`, - `{ - "loadBalancingPolicy": "round_robin", - "methodConfig": [ - { - "name": [ - { - "service": "foo" - } - ], - "waitForReady": true, - "timeout": "1s" - }, - { - "name": [ - { - "service": "bar" - } - ], - "waitForReady": false - } - ] - }`, -} - -// scLookupTbl is a set, which contains targets that have service config. Target -// not in this set should not have service config. -var scLookupTbl = map[string]bool{ - "foo.bar.com": true, - "srv.ipv4.single.fake": true, - "srv.ipv4.multi.fake": true, - "no.attribute": true, -} - -// generateSCF generates a slice of strings (aggregately representing a single -// service config file) for the input name, which mocks the result from a real -// DNS TXT record lookup. -func generateSCF(name string) []string { - var b []byte - switch name { - case "foo.bar.com": - b = []byte(scfs[0]) - case "srv.ipv4.single.fake": - b = []byte(scfs[1]) - case "srv.ipv4.multi.fake": - b = []byte(scfs[2]) - default: - b = []byte(scfs[3]) - } - if name == "no.attribute" { - return div(b) - } - return div(append([]byte(txtAttribute), b...)) -} - -// generateSC returns a service config string in JSON format for the input name. -func generateSC(name string) string { - _, cnt := scLookupTbl[name] - if !cnt || name == "no.attribute" { - return "" - } - switch name { - case "foo.bar.com": - return scs[0] - case "srv.ipv4.single.fake": - return scs[1] - case "srv.ipv4.multi.fake": - return scs[2] - default: - return "" - } -} - -var txtLookupTbl = struct { - sync.Mutex - tbl map[string][]string -}{ - tbl: map[string][]string{ - "foo.bar.com": generateSCF("foo.bar.com"), - "srv.ipv4.single.fake": generateSCF("srv.ipv4.single.fake"), - "srv.ipv4.multi.fake": generateSCF("srv.ipv4.multi.fake"), - "srv.ipv6.single.fake": generateSCF("srv.ipv6.single.fake"), - "srv.ipv6.multi.fake": generateSCF("srv.ipv6.multi.fake"), - "no.attribute": generateSCF("no.attribute"), - }, -} - -func txtLookup(host string) ([]string, error) { - txtLookupTbl.Lock() - defer txtLookupTbl.Unlock() - if scs, cnt := txtLookupTbl.tbl[host]; cnt { - return scs, nil - } - return nil, fmt.Errorf("failed to lookup TXT:%s resolution in txtLookupTbl", host) -} - -func TestResolve(t *testing.T) { - testDNSResolver(t) - testDNSResolveNow(t) - testIPResolver(t) -} - -func testDNSResolver(t *testing.T) { - defer leakcheck.Check(t) - tests := []struct { - target string - addrWant []resolver.Address - scWant string - }{ - { - "foo.bar.com", - []resolver.Address{{Addr: "1.2.3.4" + colonDefaultPort}, {Addr: "5.6.7.8" + colonDefaultPort}}, - generateSC("foo.bar.com"), - }, - { - "foo.bar.com:1234", - []resolver.Address{{Addr: "1.2.3.4:1234"}, {Addr: "5.6.7.8:1234"}}, - generateSC("foo.bar.com"), - }, - { - "srv.ipv4.single.fake", - []resolver.Address{{Addr: "1.2.3.4:1234", Type: resolver.GRPCLB, ServerName: "ipv4.single.fake"}, {Addr: "2.4.6.8" + colonDefaultPort}}, - generateSC("srv.ipv4.single.fake"), - }, - { - "srv.ipv4.multi.fake", - []resolver.Address{ - {Addr: "1.2.3.4:1234", Type: resolver.GRPCLB, ServerName: "ipv4.multi.fake"}, - {Addr: "5.6.7.8:1234", Type: resolver.GRPCLB, ServerName: "ipv4.multi.fake"}, - {Addr: "9.10.11.12:1234", Type: resolver.GRPCLB, ServerName: "ipv4.multi.fake"}, - }, - generateSC("srv.ipv4.multi.fake"), - }, - { - "srv.ipv6.single.fake", - []resolver.Address{{Addr: "[2607:f8b0:400a:801::1001]:1234", Type: resolver.GRPCLB, ServerName: "ipv6.single.fake"}}, - generateSC("srv.ipv6.single.fake"), - }, - { - "srv.ipv6.multi.fake", - []resolver.Address{ - {Addr: "[2607:f8b0:400a:801::1001]:1234", Type: resolver.GRPCLB, ServerName: "ipv6.multi.fake"}, - {Addr: "[2607:f8b0:400a:801::1002]:1234", Type: resolver.GRPCLB, ServerName: "ipv6.multi.fake"}, - {Addr: "[2607:f8b0:400a:801::1003]:1234", Type: resolver.GRPCLB, ServerName: "ipv6.multi.fake"}, - }, - generateSC("srv.ipv6.multi.fake"), - }, - { - "no.attribute", - nil, - generateSC("no.attribute"), - }, - } - - for _, a := range tests { - b := NewBuilder() - cc := &testClientConn{target: a.target} - r, err := b.Build(resolver.Target{Endpoint: a.target}, cc, resolver.BuildOption{}) - if err != nil { - t.Fatalf("%v\n", err) - } - var addrs []resolver.Address - var cnt int - for { - addrs, cnt = cc.getAddress() - if cnt > 0 { - break - } - time.Sleep(time.Millisecond) - } - var sc string - for { - sc, cnt = cc.getSc() - if cnt > 0 { - break - } - time.Sleep(time.Millisecond) - } - if !reflect.DeepEqual(a.addrWant, addrs) { - t.Errorf("Resolved addresses of target: %q = %+v, want %+v\n", a.target, addrs, a.addrWant) - } - if !reflect.DeepEqual(a.scWant, sc) { - t.Errorf("Resolved service config of target: %q = %+v, want %+v\n", a.target, sc, a.scWant) - } - r.Close() - } -} - -func mutateTbl(target string) func() { - hostLookupTbl.Lock() - oldHostTblEntry := hostLookupTbl.tbl[target] - hostLookupTbl.tbl[target] = hostLookupTbl.tbl[target][:len(oldHostTblEntry)-1] - hostLookupTbl.Unlock() - txtLookupTbl.Lock() - oldTxtTblEntry := txtLookupTbl.tbl[target] - txtLookupTbl.tbl[target] = []string{""} - txtLookupTbl.Unlock() - - return func() { - hostLookupTbl.Lock() - hostLookupTbl.tbl[target] = oldHostTblEntry - hostLookupTbl.Unlock() - txtLookupTbl.Lock() - txtLookupTbl.tbl[target] = oldTxtTblEntry - txtLookupTbl.Unlock() - } -} - -func testDNSResolveNow(t *testing.T) { - defer leakcheck.Check(t) - tests := []struct { - target string - addrWant []resolver.Address - addrNext []resolver.Address - scWant string - scNext string - }{ - { - "foo.bar.com", - []resolver.Address{{Addr: "1.2.3.4" + colonDefaultPort}, {Addr: "5.6.7.8" + colonDefaultPort}}, - []resolver.Address{{Addr: "1.2.3.4" + colonDefaultPort}}, - generateSC("foo.bar.com"), - "", - }, - } - - for _, a := range tests { - b := NewBuilder() - cc := &testClientConn{target: a.target} - r, err := b.Build(resolver.Target{Endpoint: a.target}, cc, resolver.BuildOption{}) - if err != nil { - t.Fatalf("%v\n", err) - } - var addrs []resolver.Address - var cnt int - for { - addrs, cnt = cc.getAddress() - if cnt > 0 { - break - } - time.Sleep(time.Millisecond) - } - var sc string - for { - sc, cnt = cc.getSc() - if cnt > 0 { - break - } - time.Sleep(time.Millisecond) - } - if !reflect.DeepEqual(a.addrWant, addrs) { - t.Errorf("Resolved addresses of target: %q = %+v, want %+v\n", a.target, addrs, a.addrWant) - } - if !reflect.DeepEqual(a.scWant, sc) { - t.Errorf("Resolved service config of target: %q = %+v, want %+v\n", a.target, sc, a.scWant) - } - revertTbl := mutateTbl(a.target) - r.ResolveNow(resolver.ResolveNowOption{}) - for { - addrs, cnt = cc.getAddress() - if cnt == 2 { - break - } - time.Sleep(time.Millisecond) - } - for { - sc, cnt = cc.getSc() - if cnt == 2 { - break - } - time.Sleep(time.Millisecond) - } - if !reflect.DeepEqual(a.addrNext, addrs) { - t.Errorf("Resolved addresses of target: %q = %+v, want %+v\n", a.target, addrs, a.addrNext) - } - if !reflect.DeepEqual(a.scNext, sc) { - t.Errorf("Resolved service config of target: %q = %+v, want %+v\n", a.target, sc, a.scNext) - } - revertTbl() - r.Close() - } -} - -const colonDefaultPort = ":" + defaultPort - -func testIPResolver(t *testing.T) { - defer leakcheck.Check(t) - tests := []struct { - target string - want []resolver.Address - }{ - {"127.0.0.1", []resolver.Address{{Addr: "127.0.0.1" + colonDefaultPort}}}, - {"127.0.0.1:12345", []resolver.Address{{Addr: "127.0.0.1:12345"}}}, - {"::1", []resolver.Address{{Addr: "[::1]" + colonDefaultPort}}}, - {"[::1]:12345", []resolver.Address{{Addr: "[::1]:12345"}}}, - {"[::1]:", []resolver.Address{{Addr: "[::1]:443"}}}, - {"2001:db8:85a3::8a2e:370:7334", []resolver.Address{{Addr: "[2001:db8:85a3::8a2e:370:7334]" + colonDefaultPort}}}, - {"[2001:db8:85a3::8a2e:370:7334]", []resolver.Address{{Addr: "[2001:db8:85a3::8a2e:370:7334]" + colonDefaultPort}}}, - {"[2001:db8:85a3::8a2e:370:7334]:12345", []resolver.Address{{Addr: "[2001:db8:85a3::8a2e:370:7334]:12345"}}}, - {"[2001:db8::1]:http", []resolver.Address{{Addr: "[2001:db8::1]:http"}}}, - // TODO(yuxuanli): zone support? - } - - for _, v := range tests { - b := NewBuilder() - cc := &testClientConn{target: v.target} - r, err := b.Build(resolver.Target{Endpoint: v.target}, cc, resolver.BuildOption{}) - if err != nil { - t.Fatalf("%v\n", err) - } - var addrs []resolver.Address - var cnt int - for { - addrs, cnt = cc.getAddress() - if cnt > 0 { - break - } - time.Sleep(time.Millisecond) - } - if !reflect.DeepEqual(v.want, addrs) { - t.Errorf("Resolved addresses of target: %q = %+v, want %+v\n", v.target, addrs, v.want) - } - r.ResolveNow(resolver.ResolveNowOption{}) - for { - addrs, cnt = cc.getAddress() - if cnt == 2 { - break - } - time.Sleep(time.Millisecond) - } - if !reflect.DeepEqual(v.want, addrs) { - t.Errorf("Resolved addresses of target: %q = %+v, want %+v\n", v.target, addrs, v.want) - } - r.Close() - } -} - -func TestResolveFunc(t *testing.T) { - defer leakcheck.Check(t) - tests := []struct { - addr string - want error - }{ - // TODO(yuxuanli): More false cases? - {"www.google.com", nil}, - {"foo.bar:12345", nil}, - {"127.0.0.1", nil}, - {"127.0.0.1:12345", nil}, - {"[::1]:80", nil}, - {"[2001:db8:a0b:12f0::1]:21", nil}, - {":80", nil}, - {"127.0.0...1:12345", nil}, - {"[fe80::1%lo0]:80", nil}, - {"golang.org:http", nil}, - {"[2001:db8::1]:http", nil}, - {":", nil}, - {"", errMissingAddr}, - {"[2001:db8:a0b:12f0::1", errForInvalidTarget}, - } - - b := NewBuilder() - for _, v := range tests { - cc := &testClientConn{target: v.addr} - r, err := b.Build(resolver.Target{Endpoint: v.addr}, cc, resolver.BuildOption{}) - if err == nil { - r.Close() - } - if !reflect.DeepEqual(err, v.want) { - t.Errorf("Build(%q, cc, resolver.BuildOption{}) = %v, want %v", v.addr, err, v.want) - } - } -} diff --git a/vendor/google.golang.org/grpc/resolver/dns/go17_test.go b/vendor/google.golang.org/grpc/resolver/dns/go17_test.go deleted file mode 100644 index 21eaa888..00000000 --- a/vendor/google.golang.org/grpc/resolver/dns/go17_test.go +++ /dev/null @@ -1,50 +0,0 @@ -// +build go1.6, !go1.8 - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package dns - -import ( - "fmt" - "net" - - "golang.org/x/net/context" -) - -var errForInvalidTarget = fmt.Errorf("invalid target address [2001:db8:a0b:12f0::1, error info: missing ']' in address [2001:db8:a0b:12f0::1:443") - -func replaceNetFunc() func() { - oldLookupHost := lookupHost - oldLookupSRV := lookupSRV - oldLookupTXT := lookupTXT - lookupHost = func(ctx context.Context, host string) ([]string, error) { - return hostLookup(host) - } - lookupSRV = func(ctx context.Context, service, proto, name string) (string, []*net.SRV, error) { - return srvLookup(service, proto, name) - } - lookupTXT = func(ctx context.Context, host string) ([]string, error) { - return txtLookup(host) - } - return func() { - lookupHost = oldLookupHost - lookupSRV = oldLookupSRV - lookupTXT = oldLookupTXT - } -} diff --git a/vendor/google.golang.org/grpc/resolver/dns/go18_test.go b/vendor/google.golang.org/grpc/resolver/dns/go18_test.go deleted file mode 100644 index b0149c86..00000000 --- a/vendor/google.golang.org/grpc/resolver/dns/go18_test.go +++ /dev/null @@ -1,49 +0,0 @@ -// +build go1.8 - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package dns - -import ( - "context" - "fmt" - "net" -) - -var errForInvalidTarget = fmt.Errorf("invalid target address [2001:db8:a0b:12f0::1, error info: address [2001:db8:a0b:12f0::1:443: missing ']' in address") - -func replaceNetFunc() func() { - oldLookupHost := lookupHost - oldLookupSRV := lookupSRV - oldLookupTXT := lookupTXT - lookupHost = func(ctx context.Context, host string) ([]string, error) { - return hostLookup(host) - } - lookupSRV = func(ctx context.Context, service, proto, name string) (string, []*net.SRV, error) { - return srvLookup(service, proto, name) - } - lookupTXT = func(ctx context.Context, host string) ([]string, error) { - return txtLookup(host) - } - return func() { - lookupHost = oldLookupHost - lookupSRV = oldLookupSRV - lookupTXT = oldLookupTXT - } -} diff --git a/vendor/google.golang.org/grpc/resolver/manual/manual.go b/vendor/google.golang.org/grpc/resolver/manual/manual.go deleted file mode 100644 index 50ed762a..00000000 --- a/vendor/google.golang.org/grpc/resolver/manual/manual.go +++ /dev/null @@ -1,91 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package manual defines a resolver that can be used to manually send resolved -// addresses to ClientConn. -package manual - -import ( - "strconv" - "time" - - "google.golang.org/grpc/resolver" -) - -// NewBuilderWithScheme creates a new test resolver builder with the given scheme. -func NewBuilderWithScheme(scheme string) *Resolver { - return &Resolver{ - scheme: scheme, - } -} - -// Resolver is also a resolver builder. -// It's build() function always returns itself. -type Resolver struct { - scheme string - - // Fields actually belong to the resolver. - cc resolver.ClientConn - bootstrapAddrs []resolver.Address -} - -// InitialAddrs adds resolved addresses to the resolver so that -// NewAddress doesn't need to be explicitly called after Dial. -func (r *Resolver) InitialAddrs(addrs []resolver.Address) { - r.bootstrapAddrs = addrs -} - -// Build returns itself for Resolver, because it's both a builder and a resolver. -func (r *Resolver) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOption) (resolver.Resolver, error) { - r.cc = cc - if r.bootstrapAddrs != nil { - r.NewAddress(r.bootstrapAddrs) - } - return r, nil -} - -// Scheme returns the test scheme. -func (r *Resolver) Scheme() string { - return r.scheme -} - -// ResolveNow is a noop for Resolver. -func (*Resolver) ResolveNow(o resolver.ResolveNowOption) {} - -// Close is a noop for Resolver. -func (*Resolver) Close() {} - -// NewAddress calls cc.NewAddress. -func (r *Resolver) NewAddress(addrs []resolver.Address) { - r.cc.NewAddress(addrs) -} - -// NewServiceConfig calls cc.NewServiceConfig. -func (r *Resolver) NewServiceConfig(sc string) { - r.cc.NewServiceConfig(sc) -} - -// GenerateAndRegisterManualResolver generates a random scheme and a Resolver -// with it. It also regieter this Resolver. -// It returns the Resolver and a cleanup function to unregister it. -func GenerateAndRegisterManualResolver() (*Resolver, func()) { - scheme := strconv.FormatInt(time.Now().UnixNano(), 36) - r := NewBuilderWithScheme(scheme) - resolver.Register(r) - return r, func() { resolver.UnregisterForTesting(scheme) } -} diff --git a/vendor/google.golang.org/grpc/resolver_conn_wrapper_test.go b/vendor/google.golang.org/grpc/resolver_conn_wrapper_test.go deleted file mode 100644 index d857f437..00000000 --- a/vendor/google.golang.org/grpc/resolver_conn_wrapper_test.go +++ /dev/null @@ -1,79 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "testing" - - "google.golang.org/grpc/resolver" -) - -func TestParseTarget(t *testing.T) { - for _, test := range []resolver.Target{ - {"", "", ""}, - {"a", "", ""}, - {"", "a", ""}, - {"", "", "a"}, - {"a", "b", ""}, - {"a", "", "b"}, - {"", "a", "b"}, - {"a", "b", "c"}, - {"dns", "", "google.com"}, - {"dns", "a.server.com", "google.com"}, - {"dns", "a.server.com", "google.com/?a=b"}, - {"", "", "/unix/socket/address"}, - } { - str := test.Scheme + "://" + test.Authority + "/" + test.Endpoint - got := parseTarget(str) - if got != test { - t.Errorf("parseTarget(%q) = %+v, want %+v", str, got, test) - } - } -} - -func TestParseTargetString(t *testing.T) { - for _, test := range []struct { - targetStr string - want resolver.Target - }{ - {"", resolver.Target{"", "", ""}}, - {"://", resolver.Target{"", "", ""}}, - {":///", resolver.Target{"", "", ""}}, - {"a:///", resolver.Target{"a", "", ""}}, - {"://a/", resolver.Target{"", "a", ""}}, - {":///a", resolver.Target{"", "", "a"}}, - {"a://b/", resolver.Target{"a", "b", ""}}, - {"a:///b", resolver.Target{"a", "", "b"}}, - {"://a/b", resolver.Target{"", "a", "b"}}, - {"a://b/c", resolver.Target{"a", "b", "c"}}, - {"dns:///google.com", resolver.Target{"dns", "", "google.com"}}, - {"dns://a.server.com/google.com", resolver.Target{"dns", "a.server.com", "google.com"}}, - {"dns://a.server.com/google.com/?a=b", resolver.Target{"dns", "a.server.com", "google.com/?a=b"}}, - - {"/", resolver.Target{"", "", "/"}}, - {"google.com", resolver.Target{"", "", "google.com"}}, - {"google.com/?a=b", resolver.Target{"", "", "google.com/?a=b"}}, - {"/unix/socket/address", resolver.Target{"", "", "/unix/socket/address"}}, - } { - got := parseTarget(test.targetStr) - if got != test.want { - t.Errorf("parseTarget(%q) = %+v, want %+v", test.targetStr, got, test.want) - } - } -} diff --git a/vendor/google.golang.org/grpc/rpc_util_test.go b/vendor/google.golang.org/grpc/rpc_util_test.go deleted file mode 100644 index 6e4f85ad..00000000 --- a/vendor/google.golang.org/grpc/rpc_util_test.go +++ /dev/null @@ -1,240 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "bytes" - "io" - "math" - "reflect" - "testing" - - "github.com/golang/protobuf/proto" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/encoding" - protoenc "google.golang.org/grpc/encoding/proto" - "google.golang.org/grpc/status" - perfpb "google.golang.org/grpc/test/codec_perf" - "google.golang.org/grpc/transport" -) - -type fullReader struct { - reader io.Reader -} - -func (f fullReader) Read(p []byte) (int, error) { - return io.ReadFull(f.reader, p) -} - -var _ CallOption = EmptyCallOption{} // ensure EmptyCallOption implements the interface - -func TestSimpleParsing(t *testing.T) { - bigMsg := bytes.Repeat([]byte{'x'}, 1<<24) - for _, test := range []struct { - // input - p []byte - // outputs - err error - b []byte - pt payloadFormat - }{ - {nil, io.EOF, nil, compressionNone}, - {[]byte{0, 0, 0, 0, 0}, nil, nil, compressionNone}, - {[]byte{0, 0, 0, 0, 1, 'a'}, nil, []byte{'a'}, compressionNone}, - {[]byte{1, 0}, io.ErrUnexpectedEOF, nil, compressionNone}, - {[]byte{0, 0, 0, 0, 10, 'a'}, io.ErrUnexpectedEOF, nil, compressionNone}, - // Check that messages with length >= 2^24 are parsed. - {append([]byte{0, 1, 0, 0, 0}, bigMsg...), nil, bigMsg, compressionNone}, - } { - buf := fullReader{bytes.NewReader(test.p)} - parser := &parser{r: buf} - pt, b, err := parser.recvMsg(math.MaxInt32) - if err != test.err || !bytes.Equal(b, test.b) || pt != test.pt { - t.Fatalf("parser{%v}.recvMsg(_) = %v, %v, %v\nwant %v, %v, %v", test.p, pt, b, err, test.pt, test.b, test.err) - } - } -} - -func TestMultipleParsing(t *testing.T) { - // Set a byte stream consists of 3 messages with their headers. - p := []byte{0, 0, 0, 0, 1, 'a', 0, 0, 0, 0, 2, 'b', 'c', 0, 0, 0, 0, 1, 'd'} - b := fullReader{bytes.NewReader(p)} - parser := &parser{r: b} - - wantRecvs := []struct { - pt payloadFormat - data []byte - }{ - {compressionNone, []byte("a")}, - {compressionNone, []byte("bc")}, - {compressionNone, []byte("d")}, - } - for i, want := range wantRecvs { - pt, data, err := parser.recvMsg(math.MaxInt32) - if err != nil || pt != want.pt || !reflect.DeepEqual(data, want.data) { - t.Fatalf("after %d calls, parser{%v}.recvMsg(_) = %v, %v, %v\nwant %v, %v, <nil>", - i, p, pt, data, err, want.pt, want.data) - } - } - - pt, data, err := parser.recvMsg(math.MaxInt32) - if err != io.EOF { - t.Fatalf("after %d recvMsgs calls, parser{%v}.recvMsg(_) = %v, %v, %v\nwant _, _, %v", - len(wantRecvs), p, pt, data, err, io.EOF) - } -} - -func TestEncode(t *testing.T) { - for _, test := range []struct { - // input - msg proto.Message - cp Compressor - // outputs - hdr []byte - data []byte - err error - }{ - {nil, nil, []byte{0, 0, 0, 0, 0}, []byte{}, nil}, - } { - hdr, data, err := encode(encoding.GetCodec(protoenc.Name), test.msg, nil, nil, nil) - if err != test.err || !bytes.Equal(hdr, test.hdr) || !bytes.Equal(data, test.data) { - t.Fatalf("encode(_, _, %v, _) = %v, %v, %v\nwant %v, %v, %v", test.cp, hdr, data, err, test.hdr, test.data, test.err) - } - } -} - -func TestCompress(t *testing.T) { - for _, test := range []struct { - // input - data []byte - cp Compressor - dc Decompressor - // outputs - err error - }{ - {make([]byte, 1024), NewGZIPCompressor(), NewGZIPDecompressor(), nil}, - } { - b := new(bytes.Buffer) - if err := test.cp.Do(b, test.data); err != test.err { - t.Fatalf("Compressor.Do(_, %v) = %v, want %v", test.data, err, test.err) - } - if b.Len() >= len(test.data) { - t.Fatalf("The compressor fails to compress data.") - } - if p, err := test.dc.Do(b); err != nil || !bytes.Equal(test.data, p) { - t.Fatalf("Decompressor.Do(%v) = %v, %v, want %v, <nil>", b, p, err, test.data) - } - } -} - -func TestToRPCErr(t *testing.T) { - for _, test := range []struct { - // input - errIn error - // outputs - errOut error - }{ - {transport.StreamError{Code: codes.Unknown, Desc: ""}, status.Error(codes.Unknown, "")}, - {transport.ErrConnClosing, status.Error(codes.Unavailable, transport.ErrConnClosing.Desc)}, - } { - err := toRPCErr(test.errIn) - if _, ok := status.FromError(err); !ok { - t.Fatalf("toRPCErr{%v} returned type %T, want %T", test.errIn, err, status.Error(codes.Unknown, "")) - } - if !reflect.DeepEqual(err, test.errOut) { - t.Fatalf("toRPCErr{%v} = %v \nwant %v", test.errIn, err, test.errOut) - } - } -} - -// bmEncode benchmarks encoding a Protocol Buffer message containing mSize -// bytes. -func bmEncode(b *testing.B, mSize int) { - cdc := encoding.GetCodec(protoenc.Name) - msg := &perfpb.Buffer{Body: make([]byte, mSize)} - encodeHdr, encodeData, _ := encode(cdc, msg, nil, nil, nil) - encodedSz := int64(len(encodeHdr) + len(encodeData)) - b.ReportAllocs() - b.ResetTimer() - for i := 0; i < b.N; i++ { - encode(cdc, msg, nil, nil, nil) - } - b.SetBytes(encodedSz) -} - -func BenchmarkEncode1B(b *testing.B) { - bmEncode(b, 1) -} - -func BenchmarkEncode1KiB(b *testing.B) { - bmEncode(b, 1024) -} - -func BenchmarkEncode8KiB(b *testing.B) { - bmEncode(b, 8*1024) -} - -func BenchmarkEncode64KiB(b *testing.B) { - bmEncode(b, 64*1024) -} - -func BenchmarkEncode512KiB(b *testing.B) { - bmEncode(b, 512*1024) -} - -func BenchmarkEncode1MiB(b *testing.B) { - bmEncode(b, 1024*1024) -} - -// bmCompressor benchmarks a compressor of a Protocol Buffer message containing -// mSize bytes. -func bmCompressor(b *testing.B, mSize int, cp Compressor) { - payload := make([]byte, mSize) - cBuf := bytes.NewBuffer(make([]byte, mSize)) - b.ReportAllocs() - b.ResetTimer() - for i := 0; i < b.N; i++ { - cp.Do(cBuf, payload) - cBuf.Reset() - } -} - -func BenchmarkGZIPCompressor1B(b *testing.B) { - bmCompressor(b, 1, NewGZIPCompressor()) -} - -func BenchmarkGZIPCompressor1KiB(b *testing.B) { - bmCompressor(b, 1024, NewGZIPCompressor()) -} - -func BenchmarkGZIPCompressor8KiB(b *testing.B) { - bmCompressor(b, 8*1024, NewGZIPCompressor()) -} - -func BenchmarkGZIPCompressor64KiB(b *testing.B) { - bmCompressor(b, 64*1024, NewGZIPCompressor()) -} - -func BenchmarkGZIPCompressor512KiB(b *testing.B) { - bmCompressor(b, 512*1024, NewGZIPCompressor()) -} - -func BenchmarkGZIPCompressor1MiB(b *testing.B) { - bmCompressor(b, 1024*1024, NewGZIPCompressor()) -} diff --git a/vendor/google.golang.org/grpc/server_test.go b/vendor/google.golang.org/grpc/server_test.go deleted file mode 100644 index 4a7a5244..00000000 --- a/vendor/google.golang.org/grpc/server_test.go +++ /dev/null @@ -1,124 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "net" - "reflect" - "strings" - "testing" - "time" - - "google.golang.org/grpc/test/leakcheck" -) - -type emptyServiceServer interface{} - -type testServer struct{} - -func TestStopBeforeServe(t *testing.T) { - defer leakcheck.Check(t) - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("failed to create listener: %v", err) - } - - server := NewServer() - server.Stop() - err = server.Serve(lis) - if err != ErrServerStopped { - t.Fatalf("server.Serve() error = %v, want %v", err, ErrServerStopped) - } - - // server.Serve is responsible for closing the listener, even if the - // server was already stopped. - err = lis.Close() - if got, want := errorDesc(err), "use of closed"; !strings.Contains(got, want) { - t.Errorf("Close() error = %q, want %q", got, want) - } -} - -func TestGracefulStop(t *testing.T) { - defer leakcheck.Check(t) - - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("failed to create listener: %v", err) - } - - server := NewServer() - go func() { - // make sure Serve() is called - time.Sleep(time.Millisecond * 500) - server.GracefulStop() - }() - - err = server.Serve(lis) - if err != nil { - t.Fatalf("Serve() returned non-nil error on GracefulStop: %v", err) - } -} - -func TestGetServiceInfo(t *testing.T) { - defer leakcheck.Check(t) - testSd := ServiceDesc{ - ServiceName: "grpc.testing.EmptyService", - HandlerType: (*emptyServiceServer)(nil), - Methods: []MethodDesc{ - { - MethodName: "EmptyCall", - Handler: nil, - }, - }, - Streams: []StreamDesc{ - { - StreamName: "EmptyStream", - Handler: nil, - ServerStreams: false, - ClientStreams: true, - }, - }, - Metadata: []int{0, 2, 1, 3}, - } - - server := NewServer() - server.RegisterService(&testSd, &testServer{}) - - info := server.GetServiceInfo() - want := map[string]ServiceInfo{ - "grpc.testing.EmptyService": { - Methods: []MethodInfo{ - { - Name: "EmptyCall", - IsClientStream: false, - IsServerStream: false, - }, - { - Name: "EmptyStream", - IsClientStream: true, - IsServerStream: false, - }}, - Metadata: []int{0, 2, 1, 3}, - }, - } - - if !reflect.DeepEqual(info, want) { - t.Errorf("GetServiceInfo() = %+v, want %+v", info, want) - } -} diff --git a/vendor/google.golang.org/grpc/service_config_test.go b/vendor/google.golang.org/grpc/service_config_test.go deleted file mode 100644 index 8301a506..00000000 --- a/vendor/google.golang.org/grpc/service_config_test.go +++ /dev/null @@ -1,386 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "fmt" - "math" - "reflect" - "testing" - "time" -) - -func TestParseLoadBalancer(t *testing.T) { - testcases := []struct { - scjs string - wantSC ServiceConfig - wantErr bool - }{ - { - `{ - "loadBalancingPolicy": "round_robin", - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "waitForReady": true - } - ] -}`, - ServiceConfig{ - LB: newString("round_robin"), - Methods: map[string]MethodConfig{ - "/foo/Bar": { - WaitForReady: newBool(true), - }, - }, - }, - false, - }, - { - `{ - "loadBalancingPolicy": 1, - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "waitForReady": false - } - ] -}`, - ServiceConfig{}, - true, - }, - } - - for _, c := range testcases { - sc, err := parseServiceConfig(c.scjs) - if c.wantErr != (err != nil) || !reflect.DeepEqual(sc, c.wantSC) { - t.Fatalf("parseServiceConfig(%s) = %+v, %v, want %+v, %v", c.scjs, sc, err, c.wantSC, c.wantErr) - } - } -} - -func TestParseWaitForReady(t *testing.T) { - testcases := []struct { - scjs string - wantSC ServiceConfig - wantErr bool - }{ - { - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "waitForReady": true - } - ] -}`, - ServiceConfig{ - Methods: map[string]MethodConfig{ - "/foo/Bar": { - WaitForReady: newBool(true), - }, - }, - }, - false, - }, - { - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "waitForReady": false - } - ] -}`, - ServiceConfig{ - Methods: map[string]MethodConfig{ - "/foo/Bar": { - WaitForReady: newBool(false), - }, - }, - }, - false, - }, - { - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "waitForReady": fall - }, - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "waitForReady": true - } - ] -}`, - ServiceConfig{}, - true, - }, - } - - for _, c := range testcases { - sc, err := parseServiceConfig(c.scjs) - if c.wantErr != (err != nil) || !reflect.DeepEqual(sc, c.wantSC) { - t.Fatalf("parseServiceConfig(%s) = %+v, %v, want %+v, %v", c.scjs, sc, err, c.wantSC, c.wantErr) - } - } -} - -func TestPraseTimeOut(t *testing.T) { - testcases := []struct { - scjs string - wantSC ServiceConfig - wantErr bool - }{ - { - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "timeout": "1s" - } - ] -}`, - ServiceConfig{ - Methods: map[string]MethodConfig{ - "/foo/Bar": { - Timeout: newDuration(time.Second), - }, - }, - }, - false, - }, - { - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "timeout": "3c" - } - ] -}`, - ServiceConfig{}, - true, - }, - { - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "timeout": "3c" - }, - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "timeout": "1s" - } - ] -}`, - ServiceConfig{}, - true, - }, - } - - for _, c := range testcases { - sc, err := parseServiceConfig(c.scjs) - if c.wantErr != (err != nil) || !reflect.DeepEqual(sc, c.wantSC) { - t.Fatalf("parseServiceConfig(%s) = %+v, %v, want %+v, %v", c.scjs, sc, err, c.wantSC, c.wantErr) - } - } -} - -func TestPraseMsgSize(t *testing.T) { - testcases := []struct { - scjs string - wantSC ServiceConfig - wantErr bool - }{ - { - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "maxRequestMessageBytes": 1024, - "maxResponseMessageBytes": 2048 - } - ] -}`, - ServiceConfig{ - Methods: map[string]MethodConfig{ - "/foo/Bar": { - MaxReqSize: newInt(1024), - MaxRespSize: newInt(2048), - }, - }, - }, - false, - }, - { - `{ - "methodConfig": [ - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "maxRequestMessageBytes": "1024", - "maxResponseMessageBytes": "2048" - }, - { - "name": [ - { - "service": "foo", - "method": "Bar" - } - ], - "maxRequestMessageBytes": 1024, - "maxResponseMessageBytes": 2048 - } - ] -}`, - ServiceConfig{}, - true, - }, - } - - for _, c := range testcases { - sc, err := parseServiceConfig(c.scjs) - if c.wantErr != (err != nil) || !reflect.DeepEqual(sc, c.wantSC) { - t.Fatalf("parseServiceConfig(%s) = %+v, %v, want %+v, %v", c.scjs, sc, err, c.wantSC, c.wantErr) - } - } -} - -func TestParseDuration(t *testing.T) { - testCases := []struct { - s *string - want *time.Duration - err bool - }{ - {s: nil, want: nil}, - {s: newString("1s"), want: newDuration(time.Second)}, - {s: newString("-1s"), want: newDuration(-time.Second)}, - {s: newString("1.1s"), want: newDuration(1100 * time.Millisecond)}, - {s: newString("1.s"), want: newDuration(time.Second)}, - {s: newString("1.0s"), want: newDuration(time.Second)}, - {s: newString(".002s"), want: newDuration(2 * time.Millisecond)}, - {s: newString(".002000s"), want: newDuration(2 * time.Millisecond)}, - {s: newString("0.003s"), want: newDuration(3 * time.Millisecond)}, - {s: newString("0.000004s"), want: newDuration(4 * time.Microsecond)}, - {s: newString("5000.000000009s"), want: newDuration(5000*time.Second + 9*time.Nanosecond)}, - {s: newString("4999.999999999s"), want: newDuration(5000*time.Second - time.Nanosecond)}, - {s: newString("1"), err: true}, - {s: newString("s"), err: true}, - {s: newString(".s"), err: true}, - {s: newString("1 s"), err: true}, - {s: newString(" 1s"), err: true}, - {s: newString("1ms"), err: true}, - {s: newString("1.1.1s"), err: true}, - {s: newString("Xs"), err: true}, - {s: newString("as"), err: true}, - {s: newString(".0000000001s"), err: true}, - {s: newString(fmt.Sprint(math.MaxInt32) + "s"), want: newDuration(math.MaxInt32 * time.Second)}, - {s: newString(fmt.Sprint(int64(math.MaxInt32)+1) + "s"), err: true}, - } - for _, tc := range testCases { - got, err := parseDuration(tc.s) - if tc.err != (err != nil) || - (got == nil) != (tc.want == nil) || - (got != nil && *got != *tc.want) { - wantErr := "<nil>" - if tc.err { - wantErr = "<non-nil error>" - } - s := "<nil>" - if tc.s != nil { - s = `&"` + *tc.s + `"` - } - t.Errorf("parseDuration(%v) = %v, %v; want %v, %v", s, got, err, tc.want, wantErr) - } - } -} - -func newBool(b bool) *bool { - return &b -} - -func newDuration(b time.Duration) *time.Duration { - return &b -} - -func newString(b string) *string { - return &b -} diff --git a/vendor/google.golang.org/grpc/stats/grpc_testing/test.pb.go b/vendor/google.golang.org/grpc/stats/grpc_testing/test.pb.go deleted file mode 100644 index c0c14a24..00000000 --- a/vendor/google.golang.org/grpc/stats/grpc_testing/test.pb.go +++ /dev/null @@ -1,369 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: grpc_testing/test.proto - -/* -Package grpc_testing is a generated protocol buffer package. - -It is generated from these files: - grpc_testing/test.proto - -It has these top-level messages: - SimpleRequest - SimpleResponse -*/ -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type SimpleRequest struct { - Id int32 `protobuf:"varint,2,opt,name=id" json:"id,omitempty"` -} - -func (m *SimpleRequest) Reset() { *m = SimpleRequest{} } -func (m *SimpleRequest) String() string { return proto.CompactTextString(m) } -func (*SimpleRequest) ProtoMessage() {} -func (*SimpleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *SimpleRequest) GetId() int32 { - if m != nil { - return m.Id - } - return 0 -} - -type SimpleResponse struct { - Id int32 `protobuf:"varint,3,opt,name=id" json:"id,omitempty"` -} - -func (m *SimpleResponse) Reset() { *m = SimpleResponse{} } -func (m *SimpleResponse) String() string { return proto.CompactTextString(m) } -func (*SimpleResponse) ProtoMessage() {} -func (*SimpleResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *SimpleResponse) GetId() int32 { - if m != nil { - return m.Id - } - return 0 -} - -func init() { - proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest") - proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for TestService service - -type TestServiceClient interface { - // One request followed by one response. - // The server returns the client id as-is. - UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) - // Client stream - ClientStreamCall(ctx context.Context, opts ...grpc.CallOption) (TestService_ClientStreamCallClient, error) - // Server stream - ServerStreamCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (TestService_ServerStreamCallClient, error) -} - -type testServiceClient struct { - cc *grpc.ClientConn -} - -func NewTestServiceClient(cc *grpc.ClientConn) TestServiceClient { - return &testServiceClient{cc} -} - -func (c *testServiceClient) UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) { - out := new(SimpleResponse) - err := grpc.Invoke(ctx, "/grpc.testing.TestService/UnaryCall", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[0], c.cc, "/grpc.testing.TestService/FullDuplexCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceFullDuplexCallClient{stream} - return x, nil -} - -type TestService_FullDuplexCallClient interface { - Send(*SimpleRequest) error - Recv() (*SimpleResponse, error) - grpc.ClientStream -} - -type testServiceFullDuplexCallClient struct { - grpc.ClientStream -} - -func (x *testServiceFullDuplexCallClient) Send(m *SimpleRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceFullDuplexCallClient) Recv() (*SimpleResponse, error) { - m := new(SimpleResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) ClientStreamCall(ctx context.Context, opts ...grpc.CallOption) (TestService_ClientStreamCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[1], c.cc, "/grpc.testing.TestService/ClientStreamCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceClientStreamCallClient{stream} - return x, nil -} - -type TestService_ClientStreamCallClient interface { - Send(*SimpleRequest) error - CloseAndRecv() (*SimpleResponse, error) - grpc.ClientStream -} - -type testServiceClientStreamCallClient struct { - grpc.ClientStream -} - -func (x *testServiceClientStreamCallClient) Send(m *SimpleRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceClientStreamCallClient) CloseAndRecv() (*SimpleResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(SimpleResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) ServerStreamCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (TestService_ServerStreamCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[2], c.cc, "/grpc.testing.TestService/ServerStreamCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceServerStreamCallClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type TestService_ServerStreamCallClient interface { - Recv() (*SimpleResponse, error) - grpc.ClientStream -} - -type testServiceServerStreamCallClient struct { - grpc.ClientStream -} - -func (x *testServiceServerStreamCallClient) Recv() (*SimpleResponse, error) { - m := new(SimpleResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for TestService service - -type TestServiceServer interface { - // One request followed by one response. - // The server returns the client id as-is. - UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error) - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - FullDuplexCall(TestService_FullDuplexCallServer) error - // Client stream - ClientStreamCall(TestService_ClientStreamCallServer) error - // Server stream - ServerStreamCall(*SimpleRequest, TestService_ServerStreamCallServer) error -} - -func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { - s.RegisterService(&_TestService_serviceDesc, srv) -} - -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SimpleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).UnaryCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.TestService/UnaryCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).UnaryCall(ctx, req.(*SimpleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestService_FullDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).FullDuplexCall(&testServiceFullDuplexCallServer{stream}) -} - -type TestService_FullDuplexCallServer interface { - Send(*SimpleResponse) error - Recv() (*SimpleRequest, error) - grpc.ServerStream -} - -type testServiceFullDuplexCallServer struct { - grpc.ServerStream -} - -func (x *testServiceFullDuplexCallServer) Send(m *SimpleResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceFullDuplexCallServer) Recv() (*SimpleRequest, error) { - m := new(SimpleRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_ClientStreamCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).ClientStreamCall(&testServiceClientStreamCallServer{stream}) -} - -type TestService_ClientStreamCallServer interface { - SendAndClose(*SimpleResponse) error - Recv() (*SimpleRequest, error) - grpc.ServerStream -} - -type testServiceClientStreamCallServer struct { - grpc.ServerStream -} - -func (x *testServiceClientStreamCallServer) SendAndClose(m *SimpleResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceClientStreamCallServer) Recv() (*SimpleRequest, error) { - m := new(SimpleRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_ServerStreamCall_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SimpleRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(TestServiceServer).ServerStreamCall(m, &testServiceServerStreamCallServer{stream}) -} - -type TestService_ServerStreamCallServer interface { - Send(*SimpleResponse) error - grpc.ServerStream -} - -type testServiceServerStreamCallServer struct { - grpc.ServerStream -} - -func (x *testServiceServerStreamCallServer) Send(m *SimpleResponse) error { - return x.ServerStream.SendMsg(m) -} - -var _TestService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.TestService", - HandlerType: (*TestServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "UnaryCall", - Handler: _TestService_UnaryCall_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "FullDuplexCall", - Handler: _TestService_FullDuplexCall_Handler, - ServerStreams: true, - ClientStreams: true, - }, - { - StreamName: "ClientStreamCall", - Handler: _TestService_ClientStreamCall_Handler, - ClientStreams: true, - }, - { - StreamName: "ServerStreamCall", - Handler: _TestService_ServerStreamCall_Handler, - ServerStreams: true, - }, - }, - Metadata: "grpc_testing/test.proto", -} - -func init() { proto.RegisterFile("grpc_testing/test.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 202 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4f, 0x2f, 0x2a, 0x48, - 0x8e, 0x2f, 0x49, 0x2d, 0x2e, 0xc9, 0xcc, 0x4b, 0xd7, 0x07, 0xd1, 0x7a, 0x05, 0x45, 0xf9, 0x25, - 0xf9, 0x42, 0x3c, 0x20, 0x09, 0x3d, 0xa8, 0x84, 0x92, 0x3c, 0x17, 0x6f, 0x70, 0x66, 0x6e, 0x41, - 0x4e, 0x6a, 0x50, 0x6a, 0x61, 0x69, 0x6a, 0x71, 0x89, 0x10, 0x1f, 0x17, 0x53, 0x66, 0x8a, 0x04, - 0x93, 0x02, 0xa3, 0x06, 0x6b, 0x10, 0x53, 0x66, 0x8a, 0x92, 0x02, 0x17, 0x1f, 0x4c, 0x41, 0x71, - 0x41, 0x7e, 0x5e, 0x71, 0x2a, 0x54, 0x05, 0x33, 0x4c, 0x85, 0xd1, 0x09, 0x26, 0x2e, 0xee, 0x90, - 0xd4, 0xe2, 0x92, 0xe0, 0xd4, 0xa2, 0xb2, 0xcc, 0xe4, 0x54, 0x21, 0x37, 0x2e, 0xce, 0xd0, 0xbc, - 0xc4, 0xa2, 0x4a, 0xe7, 0xc4, 0x9c, 0x1c, 0x21, 0x69, 0x3d, 0x64, 0xeb, 0xf4, 0x50, 0xec, 0x92, - 0x92, 0xc1, 0x2e, 0x09, 0xb5, 0xc7, 0x9f, 0x8b, 0xcf, 0xad, 0x34, 0x27, 0xc7, 0xa5, 0xb4, 0x20, - 0x27, 0xb5, 0x82, 0x42, 0xc3, 0x34, 0x18, 0x0d, 0x18, 0x85, 0xfc, 0xb9, 0x04, 0x9c, 0x73, 0x32, - 0x53, 0xf3, 0x4a, 0x82, 0x4b, 0x8a, 0x52, 0x13, 0x73, 0x29, 0x36, 0x12, 0x64, 0x20, 0xc8, 0xd3, - 0xa9, 0x45, 0x54, 0x31, 0xd0, 0x80, 0x31, 0x89, 0x0d, 0x1c, 0x45, 0xc6, 0x80, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x4c, 0x43, 0x27, 0x67, 0xbd, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/stats/grpc_testing/test.proto b/vendor/google.golang.org/grpc/stats/grpc_testing/test.proto deleted file mode 100644 index b49a0d5a..00000000 --- a/vendor/google.golang.org/grpc/stats/grpc_testing/test.proto +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package grpc.testing; - -message SimpleRequest { - int32 id = 2; -} - -message SimpleResponse { - int32 id = 3; -} - -// A simple test service. -service TestService { - // One request followed by one response. - // The server returns the client id as-is. - rpc UnaryCall(SimpleRequest) returns (SimpleResponse); - - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - rpc FullDuplexCall(stream SimpleRequest) returns (stream SimpleResponse); - - // Client stream - rpc ClientStreamCall(stream SimpleRequest) returns (SimpleResponse); - - // Server stream - rpc ServerStreamCall(SimpleRequest) returns (stream SimpleResponse); -} diff --git a/vendor/google.golang.org/grpc/stats/stats_test.go b/vendor/google.golang.org/grpc/stats/stats_test.go deleted file mode 100644 index b6c7b998..00000000 --- a/vendor/google.golang.org/grpc/stats/stats_test.go +++ /dev/null @@ -1,1254 +0,0 @@ -// +build go1.7 - -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package stats_test - -import ( - "fmt" - "io" - "net" - "reflect" - "sync" - "testing" - "time" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/stats" - testpb "google.golang.org/grpc/stats/grpc_testing" - "google.golang.org/grpc/status" -) - -func init() { - grpc.EnableTracing = false -} - -type connCtxKey struct{} -type rpcCtxKey struct{} - -var ( - // For headers: - testMetadata = metadata.MD{ - "key1": []string{"value1"}, - "key2": []string{"value2"}, - } - // For trailers: - testTrailerMetadata = metadata.MD{ - "tkey1": []string{"trailerValue1"}, - "tkey2": []string{"trailerValue2"}, - } - // The id for which the service handler should return error. - errorID int32 = 32202 -) - -type testServer struct{} - -func (s *testServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - md, ok := metadata.FromIncomingContext(ctx) - if ok { - if err := grpc.SendHeader(ctx, md); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SendHeader(_, %v) = %v, want <nil>", md, err) - } - if err := grpc.SetTrailer(ctx, testTrailerMetadata); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SetTrailer(_, %v) = %v, want <nil>", testTrailerMetadata, err) - } - } - - if in.Id == errorID { - return nil, fmt.Errorf("got error id: %v", in.Id) - } - - return &testpb.SimpleResponse{Id: in.Id}, nil -} - -func (s *testServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallServer) error { - md, ok := metadata.FromIncomingContext(stream.Context()) - if ok { - if err := stream.SendHeader(md); err != nil { - return status.Errorf(status.Code(err), "%v.SendHeader(%v) = %v, want %v", stream, md, err, nil) - } - stream.SetTrailer(testTrailerMetadata) - } - for { - in, err := stream.Recv() - if err == io.EOF { - // read done. - return nil - } - if err != nil { - return err - } - - if in.Id == errorID { - return fmt.Errorf("got error id: %v", in.Id) - } - - if err := stream.Send(&testpb.SimpleResponse{Id: in.Id}); err != nil { - return err - } - } -} - -func (s *testServer) ClientStreamCall(stream testpb.TestService_ClientStreamCallServer) error { - md, ok := metadata.FromIncomingContext(stream.Context()) - if ok { - if err := stream.SendHeader(md); err != nil { - return status.Errorf(status.Code(err), "%v.SendHeader(%v) = %v, want %v", stream, md, err, nil) - } - stream.SetTrailer(testTrailerMetadata) - } - for { - in, err := stream.Recv() - if err == io.EOF { - // read done. - return stream.SendAndClose(&testpb.SimpleResponse{Id: int32(0)}) - } - if err != nil { - return err - } - - if in.Id == errorID { - return fmt.Errorf("got error id: %v", in.Id) - } - } -} - -func (s *testServer) ServerStreamCall(in *testpb.SimpleRequest, stream testpb.TestService_ServerStreamCallServer) error { - md, ok := metadata.FromIncomingContext(stream.Context()) - if ok { - if err := stream.SendHeader(md); err != nil { - return status.Errorf(status.Code(err), "%v.SendHeader(%v) = %v, want %v", stream, md, err, nil) - } - stream.SetTrailer(testTrailerMetadata) - } - - if in.Id == errorID { - return fmt.Errorf("got error id: %v", in.Id) - } - - for i := 0; i < 5; i++ { - if err := stream.Send(&testpb.SimpleResponse{Id: in.Id}); err != nil { - return err - } - } - return nil -} - -// test is an end-to-end test. It should be created with the newTest -// func, modified as needed, and then started with its startServer method. -// It should be cleaned up with the tearDown method. -type test struct { - t *testing.T - compress string - clientStatsHandler stats.Handler - serverStatsHandler stats.Handler - - testServer testpb.TestServiceServer // nil means none - // srv and srvAddr are set once startServer is called. - srv *grpc.Server - srvAddr string - - cc *grpc.ClientConn // nil until requested via clientConn -} - -func (te *test) tearDown() { - if te.cc != nil { - te.cc.Close() - te.cc = nil - } - te.srv.Stop() -} - -type testConfig struct { - compress string -} - -// newTest returns a new test using the provided testing.T and -// environment. It is returned with default values. Tests should -// modify it before calling its startServer and clientConn methods. -func newTest(t *testing.T, tc *testConfig, ch stats.Handler, sh stats.Handler) *test { - te := &test{ - t: t, - compress: tc.compress, - clientStatsHandler: ch, - serverStatsHandler: sh, - } - return te -} - -// startServer starts a gRPC server listening. Callers should defer a -// call to te.tearDown to clean up. -func (te *test) startServer(ts testpb.TestServiceServer) { - te.testServer = ts - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - te.t.Fatalf("Failed to listen: %v", err) - } - var opts []grpc.ServerOption - if te.compress == "gzip" { - opts = append(opts, - grpc.RPCCompressor(grpc.NewGZIPCompressor()), - grpc.RPCDecompressor(grpc.NewGZIPDecompressor()), - ) - } - if te.serverStatsHandler != nil { - opts = append(opts, grpc.StatsHandler(te.serverStatsHandler)) - } - s := grpc.NewServer(opts...) - te.srv = s - if te.testServer != nil { - testpb.RegisterTestServiceServer(s, te.testServer) - } - - go s.Serve(lis) - te.srvAddr = lis.Addr().String() -} - -func (te *test) clientConn() *grpc.ClientConn { - if te.cc != nil { - return te.cc - } - opts := []grpc.DialOption{grpc.WithInsecure(), grpc.WithBlock()} - if te.compress == "gzip" { - opts = append(opts, - grpc.WithCompressor(grpc.NewGZIPCompressor()), - grpc.WithDecompressor(grpc.NewGZIPDecompressor()), - ) - } - if te.clientStatsHandler != nil { - opts = append(opts, grpc.WithStatsHandler(te.clientStatsHandler)) - } - - var err error - te.cc, err = grpc.Dial(te.srvAddr, opts...) - if err != nil { - te.t.Fatalf("Dial(%q) = %v", te.srvAddr, err) - } - return te.cc -} - -type rpcType int - -const ( - unaryRPC rpcType = iota - clientStreamRPC - serverStreamRPC - fullDuplexStreamRPC -) - -type rpcConfig struct { - count int // Number of requests and responses for streaming RPCs. - success bool // Whether the RPC should succeed or return error. - failfast bool - callType rpcType // Type of RPC. -} - -func (te *test) doUnaryCall(c *rpcConfig) (*testpb.SimpleRequest, *testpb.SimpleResponse, error) { - var ( - resp *testpb.SimpleResponse - req *testpb.SimpleRequest - err error - ) - tc := testpb.NewTestServiceClient(te.clientConn()) - if c.success { - req = &testpb.SimpleRequest{Id: errorID + 1} - } else { - req = &testpb.SimpleRequest{Id: errorID} - } - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - - resp, err = tc.UnaryCall(ctx, req, grpc.FailFast(c.failfast)) - return req, resp, err -} - -func (te *test) doFullDuplexCallRoundtrip(c *rpcConfig) ([]*testpb.SimpleRequest, []*testpb.SimpleResponse, error) { - var ( - reqs []*testpb.SimpleRequest - resps []*testpb.SimpleResponse - err error - ) - tc := testpb.NewTestServiceClient(te.clientConn()) - stream, err := tc.FullDuplexCall(metadata.NewOutgoingContext(context.Background(), testMetadata), grpc.FailFast(c.failfast)) - if err != nil { - return reqs, resps, err - } - var startID int32 - if !c.success { - startID = errorID - } - for i := 0; i < c.count; i++ { - req := &testpb.SimpleRequest{ - Id: int32(i) + startID, - } - reqs = append(reqs, req) - if err = stream.Send(req); err != nil { - return reqs, resps, err - } - var resp *testpb.SimpleResponse - if resp, err = stream.Recv(); err != nil { - return reqs, resps, err - } - resps = append(resps, resp) - } - if err = stream.CloseSend(); err != nil && err != io.EOF { - return reqs, resps, err - } - if _, err = stream.Recv(); err != io.EOF { - return reqs, resps, err - } - - return reqs, resps, nil -} - -func (te *test) doClientStreamCall(c *rpcConfig) ([]*testpb.SimpleRequest, *testpb.SimpleResponse, error) { - var ( - reqs []*testpb.SimpleRequest - resp *testpb.SimpleResponse - err error - ) - tc := testpb.NewTestServiceClient(te.clientConn()) - stream, err := tc.ClientStreamCall(metadata.NewOutgoingContext(context.Background(), testMetadata), grpc.FailFast(c.failfast)) - if err != nil { - return reqs, resp, err - } - var startID int32 - if !c.success { - startID = errorID - } - for i := 0; i < c.count; i++ { - req := &testpb.SimpleRequest{ - Id: int32(i) + startID, - } - reqs = append(reqs, req) - if err = stream.Send(req); err != nil { - return reqs, resp, err - } - } - resp, err = stream.CloseAndRecv() - return reqs, resp, err -} - -func (te *test) doServerStreamCall(c *rpcConfig) (*testpb.SimpleRequest, []*testpb.SimpleResponse, error) { - var ( - req *testpb.SimpleRequest - resps []*testpb.SimpleResponse - err error - ) - - tc := testpb.NewTestServiceClient(te.clientConn()) - - var startID int32 - if !c.success { - startID = errorID - } - req = &testpb.SimpleRequest{Id: startID} - stream, err := tc.ServerStreamCall(metadata.NewOutgoingContext(context.Background(), testMetadata), req, grpc.FailFast(c.failfast)) - if err != nil { - return req, resps, err - } - for { - var resp *testpb.SimpleResponse - resp, err := stream.Recv() - if err == io.EOF { - return req, resps, nil - } else if err != nil { - return req, resps, err - } - resps = append(resps, resp) - } -} - -type expectedData struct { - method string - serverAddr string - compression string - reqIdx int - requests []*testpb.SimpleRequest - respIdx int - responses []*testpb.SimpleResponse - err error - failfast bool -} - -type gotData struct { - ctx context.Context - client bool - s interface{} // This could be RPCStats or ConnStats. -} - -const ( - begin int = iota - end - inPayload - inHeader - inTrailer - outPayload - outHeader - outTrailer - connbegin - connend -) - -func checkBegin(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.Begin - ) - if st, ok = d.s.(*stats.Begin); !ok { - t.Fatalf("got %T, want Begin", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - if st.BeginTime.IsZero() { - t.Fatalf("st.BeginTime = %v, want <non-zero>", st.BeginTime) - } - if d.client { - if st.FailFast != e.failfast { - t.Fatalf("st.FailFast = %v, want %v", st.FailFast, e.failfast) - } - } -} - -func checkInHeader(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.InHeader - ) - if st, ok = d.s.(*stats.InHeader); !ok { - t.Fatalf("got %T, want InHeader", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - if !d.client { - if st.FullMethod != e.method { - t.Fatalf("st.FullMethod = %s, want %v", st.FullMethod, e.method) - } - if st.LocalAddr.String() != e.serverAddr { - t.Fatalf("st.LocalAddr = %v, want %v", st.LocalAddr, e.serverAddr) - } - if st.Compression != e.compression { - t.Fatalf("st.Compression = %v, want %v", st.Compression, e.compression) - } - - if connInfo, ok := d.ctx.Value(connCtxKey{}).(*stats.ConnTagInfo); ok { - if connInfo.RemoteAddr != st.RemoteAddr { - t.Fatalf("connInfo.RemoteAddr = %v, want %v", connInfo.RemoteAddr, st.RemoteAddr) - } - if connInfo.LocalAddr != st.LocalAddr { - t.Fatalf("connInfo.LocalAddr = %v, want %v", connInfo.LocalAddr, st.LocalAddr) - } - } else { - t.Fatalf("got context %v, want one with connCtxKey", d.ctx) - } - if rpcInfo, ok := d.ctx.Value(rpcCtxKey{}).(*stats.RPCTagInfo); ok { - if rpcInfo.FullMethodName != st.FullMethod { - t.Fatalf("rpcInfo.FullMethod = %s, want %v", rpcInfo.FullMethodName, st.FullMethod) - } - } else { - t.Fatalf("got context %v, want one with rpcCtxKey", d.ctx) - } - } -} - -func checkInPayload(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.InPayload - ) - if st, ok = d.s.(*stats.InPayload); !ok { - t.Fatalf("got %T, want InPayload", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - if d.client { - b, err := proto.Marshal(e.responses[e.respIdx]) - if err != nil { - t.Fatalf("failed to marshal message: %v", err) - } - if reflect.TypeOf(st.Payload) != reflect.TypeOf(e.responses[e.respIdx]) { - t.Fatalf("st.Payload = %T, want %T", st.Payload, e.responses[e.respIdx]) - } - e.respIdx++ - if string(st.Data) != string(b) { - t.Fatalf("st.Data = %v, want %v", st.Data, b) - } - if st.Length != len(b) { - t.Fatalf("st.Lenght = %v, want %v", st.Length, len(b)) - } - } else { - b, err := proto.Marshal(e.requests[e.reqIdx]) - if err != nil { - t.Fatalf("failed to marshal message: %v", err) - } - if reflect.TypeOf(st.Payload) != reflect.TypeOf(e.requests[e.reqIdx]) { - t.Fatalf("st.Payload = %T, want %T", st.Payload, e.requests[e.reqIdx]) - } - e.reqIdx++ - if string(st.Data) != string(b) { - t.Fatalf("st.Data = %v, want %v", st.Data, b) - } - if st.Length != len(b) { - t.Fatalf("st.Lenght = %v, want %v", st.Length, len(b)) - } - } - // TODO check WireLength and ReceivedTime. - if st.RecvTime.IsZero() { - t.Fatalf("st.ReceivedTime = %v, want <non-zero>", st.RecvTime) - } -} - -func checkInTrailer(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - ) - if _, ok = d.s.(*stats.InTrailer); !ok { - t.Fatalf("got %T, want InTrailer", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } -} - -func checkOutHeader(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.OutHeader - ) - if st, ok = d.s.(*stats.OutHeader); !ok { - t.Fatalf("got %T, want OutHeader", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - if d.client { - if st.FullMethod != e.method { - t.Fatalf("st.FullMethod = %s, want %v", st.FullMethod, e.method) - } - if st.RemoteAddr.String() != e.serverAddr { - t.Fatalf("st.RemoteAddr = %v, want %v", st.RemoteAddr, e.serverAddr) - } - if st.Compression != e.compression { - t.Fatalf("st.Compression = %v, want %v", st.Compression, e.compression) - } - - if rpcInfo, ok := d.ctx.Value(rpcCtxKey{}).(*stats.RPCTagInfo); ok { - if rpcInfo.FullMethodName != st.FullMethod { - t.Fatalf("rpcInfo.FullMethod = %s, want %v", rpcInfo.FullMethodName, st.FullMethod) - } - } else { - t.Fatalf("got context %v, want one with rpcCtxKey", d.ctx) - } - } -} - -func checkOutPayload(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.OutPayload - ) - if st, ok = d.s.(*stats.OutPayload); !ok { - t.Fatalf("got %T, want OutPayload", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - if d.client { - b, err := proto.Marshal(e.requests[e.reqIdx]) - if err != nil { - t.Fatalf("failed to marshal message: %v", err) - } - if reflect.TypeOf(st.Payload) != reflect.TypeOf(e.requests[e.reqIdx]) { - t.Fatalf("st.Payload = %T, want %T", st.Payload, e.requests[e.reqIdx]) - } - e.reqIdx++ - if string(st.Data) != string(b) { - t.Fatalf("st.Data = %v, want %v", st.Data, b) - } - if st.Length != len(b) { - t.Fatalf("st.Lenght = %v, want %v", st.Length, len(b)) - } - } else { - b, err := proto.Marshal(e.responses[e.respIdx]) - if err != nil { - t.Fatalf("failed to marshal message: %v", err) - } - if reflect.TypeOf(st.Payload) != reflect.TypeOf(e.responses[e.respIdx]) { - t.Fatalf("st.Payload = %T, want %T", st.Payload, e.responses[e.respIdx]) - } - e.respIdx++ - if string(st.Data) != string(b) { - t.Fatalf("st.Data = %v, want %v", st.Data, b) - } - if st.Length != len(b) { - t.Fatalf("st.Lenght = %v, want %v", st.Length, len(b)) - } - } - // TODO check WireLength and ReceivedTime. - if st.SentTime.IsZero() { - t.Fatalf("st.SentTime = %v, want <non-zero>", st.SentTime) - } -} - -func checkOutTrailer(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.OutTrailer - ) - if st, ok = d.s.(*stats.OutTrailer); !ok { - t.Fatalf("got %T, want OutTrailer", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - if st.Client { - t.Fatalf("st IsClient = true, want false") - } -} - -func checkEnd(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.End - ) - if st, ok = d.s.(*stats.End); !ok { - t.Fatalf("got %T, want End", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - if st.EndTime.IsZero() { - t.Fatalf("st.EndTime = %v, want <non-zero>", st.EndTime) - } - - actual, ok := status.FromError(st.Error) - if !ok { - t.Fatalf("expected st.Error to be a statusError, got %v (type %T)", st.Error, st.Error) - } - - expectedStatus, _ := status.FromError(e.err) - if actual.Code() != expectedStatus.Code() || actual.Message() != expectedStatus.Message() { - t.Fatalf("st.Error = %v, want %v", st.Error, e.err) - } -} - -func checkConnBegin(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.ConnBegin - ) - if st, ok = d.s.(*stats.ConnBegin); !ok { - t.Fatalf("got %T, want ConnBegin", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - st.IsClient() // TODO remove this. -} - -func checkConnEnd(t *testing.T, d *gotData, e *expectedData) { - var ( - ok bool - st *stats.ConnEnd - ) - if st, ok = d.s.(*stats.ConnEnd); !ok { - t.Fatalf("got %T, want ConnEnd", d.s) - } - if d.ctx == nil { - t.Fatalf("d.ctx = nil, want <non-nil>") - } - st.IsClient() // TODO remove this. -} - -type statshandler struct { - mu sync.Mutex - gotRPC []*gotData - gotConn []*gotData -} - -func (h *statshandler) TagConn(ctx context.Context, info *stats.ConnTagInfo) context.Context { - return context.WithValue(ctx, connCtxKey{}, info) -} - -func (h *statshandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { - return context.WithValue(ctx, rpcCtxKey{}, info) -} - -func (h *statshandler) HandleConn(ctx context.Context, s stats.ConnStats) { - h.mu.Lock() - defer h.mu.Unlock() - h.gotConn = append(h.gotConn, &gotData{ctx, s.IsClient(), s}) -} - -func (h *statshandler) HandleRPC(ctx context.Context, s stats.RPCStats) { - h.mu.Lock() - defer h.mu.Unlock() - h.gotRPC = append(h.gotRPC, &gotData{ctx, s.IsClient(), s}) -} - -func checkConnStats(t *testing.T, got []*gotData) { - if len(got) <= 0 || len(got)%2 != 0 { - for i, g := range got { - t.Errorf(" - %v, %T = %+v, ctx: %v", i, g.s, g.s, g.ctx) - } - t.Fatalf("got %v stats, want even positive number", len(got)) - } - // The first conn stats must be a ConnBegin. - checkConnBegin(t, got[0], nil) - // The last conn stats must be a ConnEnd. - checkConnEnd(t, got[len(got)-1], nil) -} - -func checkServerStats(t *testing.T, got []*gotData, expect *expectedData, checkFuncs []func(t *testing.T, d *gotData, e *expectedData)) { - if len(got) != len(checkFuncs) { - for i, g := range got { - t.Errorf(" - %v, %T", i, g.s) - } - t.Fatalf("got %v stats, want %v stats", len(got), len(checkFuncs)) - } - - var rpcctx context.Context - for i := 0; i < len(got); i++ { - if _, ok := got[i].s.(stats.RPCStats); ok { - if rpcctx != nil && got[i].ctx != rpcctx { - t.Fatalf("got different contexts with stats %T", got[i].s) - } - rpcctx = got[i].ctx - } - } - - for i, f := range checkFuncs { - f(t, got[i], expect) - } -} - -func testServerStats(t *testing.T, tc *testConfig, cc *rpcConfig, checkFuncs []func(t *testing.T, d *gotData, e *expectedData)) { - h := &statshandler{} - te := newTest(t, tc, nil, h) - te.startServer(&testServer{}) - defer te.tearDown() - - var ( - reqs []*testpb.SimpleRequest - resps []*testpb.SimpleResponse - err error - method string - - req *testpb.SimpleRequest - resp *testpb.SimpleResponse - e error - ) - - switch cc.callType { - case unaryRPC: - method = "/grpc.testing.TestService/UnaryCall" - req, resp, e = te.doUnaryCall(cc) - reqs = []*testpb.SimpleRequest{req} - resps = []*testpb.SimpleResponse{resp} - err = e - case clientStreamRPC: - method = "/grpc.testing.TestService/ClientStreamCall" - reqs, resp, e = te.doClientStreamCall(cc) - resps = []*testpb.SimpleResponse{resp} - err = e - case serverStreamRPC: - method = "/grpc.testing.TestService/ServerStreamCall" - req, resps, e = te.doServerStreamCall(cc) - reqs = []*testpb.SimpleRequest{req} - err = e - case fullDuplexStreamRPC: - method = "/grpc.testing.TestService/FullDuplexCall" - reqs, resps, err = te.doFullDuplexCallRoundtrip(cc) - } - if cc.success != (err == nil) { - t.Fatalf("cc.success: %v, got error: %v", cc.success, err) - } - te.cc.Close() - te.srv.GracefulStop() // Wait for the server to stop. - - for { - h.mu.Lock() - if len(h.gotRPC) >= len(checkFuncs) { - h.mu.Unlock() - break - } - h.mu.Unlock() - time.Sleep(10 * time.Millisecond) - } - - for { - h.mu.Lock() - if _, ok := h.gotConn[len(h.gotConn)-1].s.(*stats.ConnEnd); ok { - h.mu.Unlock() - break - } - h.mu.Unlock() - time.Sleep(10 * time.Millisecond) - } - - expect := &expectedData{ - serverAddr: te.srvAddr, - compression: tc.compress, - method: method, - requests: reqs, - responses: resps, - err: err, - } - - h.mu.Lock() - checkConnStats(t, h.gotConn) - h.mu.Unlock() - checkServerStats(t, h.gotRPC, expect, checkFuncs) -} - -func TestServerStatsUnaryRPC(t *testing.T) { - testServerStats(t, &testConfig{compress: ""}, &rpcConfig{success: true, callType: unaryRPC}, []func(t *testing.T, d *gotData, e *expectedData){ - checkInHeader, - checkBegin, - checkInPayload, - checkOutHeader, - checkOutPayload, - checkOutTrailer, - checkEnd, - }) -} - -func TestServerStatsUnaryRPCError(t *testing.T) { - testServerStats(t, &testConfig{compress: ""}, &rpcConfig{success: false, callType: unaryRPC}, []func(t *testing.T, d *gotData, e *expectedData){ - checkInHeader, - checkBegin, - checkInPayload, - checkOutHeader, - checkOutTrailer, - checkEnd, - }) -} - -func TestServerStatsClientStreamRPC(t *testing.T) { - count := 5 - checkFuncs := []func(t *testing.T, d *gotData, e *expectedData){ - checkInHeader, - checkBegin, - checkOutHeader, - } - ioPayFuncs := []func(t *testing.T, d *gotData, e *expectedData){ - checkInPayload, - } - for i := 0; i < count; i++ { - checkFuncs = append(checkFuncs, ioPayFuncs...) - } - checkFuncs = append(checkFuncs, - checkOutPayload, - checkOutTrailer, - checkEnd, - ) - testServerStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: true, callType: clientStreamRPC}, checkFuncs) -} - -func TestServerStatsClientStreamRPCError(t *testing.T) { - count := 1 - testServerStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: false, callType: clientStreamRPC}, []func(t *testing.T, d *gotData, e *expectedData){ - checkInHeader, - checkBegin, - checkOutHeader, - checkInPayload, - checkOutTrailer, - checkEnd, - }) -} - -func TestServerStatsServerStreamRPC(t *testing.T) { - count := 5 - checkFuncs := []func(t *testing.T, d *gotData, e *expectedData){ - checkInHeader, - checkBegin, - checkInPayload, - checkOutHeader, - } - ioPayFuncs := []func(t *testing.T, d *gotData, e *expectedData){ - checkOutPayload, - } - for i := 0; i < count; i++ { - checkFuncs = append(checkFuncs, ioPayFuncs...) - } - checkFuncs = append(checkFuncs, - checkOutTrailer, - checkEnd, - ) - testServerStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: true, callType: serverStreamRPC}, checkFuncs) -} - -func TestServerStatsServerStreamRPCError(t *testing.T) { - count := 5 - testServerStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: false, callType: serverStreamRPC}, []func(t *testing.T, d *gotData, e *expectedData){ - checkInHeader, - checkBegin, - checkInPayload, - checkOutHeader, - checkOutTrailer, - checkEnd, - }) -} - -func TestServerStatsFullDuplexRPC(t *testing.T) { - count := 5 - checkFuncs := []func(t *testing.T, d *gotData, e *expectedData){ - checkInHeader, - checkBegin, - checkOutHeader, - } - ioPayFuncs := []func(t *testing.T, d *gotData, e *expectedData){ - checkInPayload, - checkOutPayload, - } - for i := 0; i < count; i++ { - checkFuncs = append(checkFuncs, ioPayFuncs...) - } - checkFuncs = append(checkFuncs, - checkOutTrailer, - checkEnd, - ) - testServerStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: true, callType: fullDuplexStreamRPC}, checkFuncs) -} - -func TestServerStatsFullDuplexRPCError(t *testing.T) { - count := 5 - testServerStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: false, callType: fullDuplexStreamRPC}, []func(t *testing.T, d *gotData, e *expectedData){ - checkInHeader, - checkBegin, - checkOutHeader, - checkInPayload, - checkOutTrailer, - checkEnd, - }) -} - -type checkFuncWithCount struct { - f func(t *testing.T, d *gotData, e *expectedData) - c int // expected count -} - -func checkClientStats(t *testing.T, got []*gotData, expect *expectedData, checkFuncs map[int]*checkFuncWithCount) { - var expectLen int - for _, v := range checkFuncs { - expectLen += v.c - } - if len(got) != expectLen { - for i, g := range got { - t.Errorf(" - %v, %T", i, g.s) - } - t.Fatalf("got %v stats, want %v stats", len(got), expectLen) - } - - var tagInfoInCtx *stats.RPCTagInfo - for i := 0; i < len(got); i++ { - if _, ok := got[i].s.(stats.RPCStats); ok { - tagInfoInCtxNew, _ := got[i].ctx.Value(rpcCtxKey{}).(*stats.RPCTagInfo) - if tagInfoInCtx != nil && tagInfoInCtx != tagInfoInCtxNew { - t.Fatalf("got context containing different tagInfo with stats %T", got[i].s) - } - tagInfoInCtx = tagInfoInCtxNew - } - } - - for _, s := range got { - switch s.s.(type) { - case *stats.Begin: - if checkFuncs[begin].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[begin].f(t, s, expect) - checkFuncs[begin].c-- - case *stats.OutHeader: - if checkFuncs[outHeader].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[outHeader].f(t, s, expect) - checkFuncs[outHeader].c-- - case *stats.OutPayload: - if checkFuncs[outPayload].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[outPayload].f(t, s, expect) - checkFuncs[outPayload].c-- - case *stats.InHeader: - if checkFuncs[inHeader].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[inHeader].f(t, s, expect) - checkFuncs[inHeader].c-- - case *stats.InPayload: - if checkFuncs[inPayload].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[inPayload].f(t, s, expect) - checkFuncs[inPayload].c-- - case *stats.InTrailer: - if checkFuncs[inTrailer].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[inTrailer].f(t, s, expect) - checkFuncs[inTrailer].c-- - case *stats.End: - if checkFuncs[end].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[end].f(t, s, expect) - checkFuncs[end].c-- - case *stats.ConnBegin: - if checkFuncs[connbegin].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[connbegin].f(t, s, expect) - checkFuncs[connbegin].c-- - case *stats.ConnEnd: - if checkFuncs[connend].c <= 0 { - t.Fatalf("unexpected stats: %T", s.s) - } - checkFuncs[connend].f(t, s, expect) - checkFuncs[connend].c-- - default: - t.Fatalf("unexpected stats: %T", s.s) - } - } -} - -func testClientStats(t *testing.T, tc *testConfig, cc *rpcConfig, checkFuncs map[int]*checkFuncWithCount) { - h := &statshandler{} - te := newTest(t, tc, h, nil) - te.startServer(&testServer{}) - defer te.tearDown() - - var ( - reqs []*testpb.SimpleRequest - resps []*testpb.SimpleResponse - method string - err error - - req *testpb.SimpleRequest - resp *testpb.SimpleResponse - e error - ) - switch cc.callType { - case unaryRPC: - method = "/grpc.testing.TestService/UnaryCall" - req, resp, e = te.doUnaryCall(cc) - reqs = []*testpb.SimpleRequest{req} - resps = []*testpb.SimpleResponse{resp} - err = e - case clientStreamRPC: - method = "/grpc.testing.TestService/ClientStreamCall" - reqs, resp, e = te.doClientStreamCall(cc) - resps = []*testpb.SimpleResponse{resp} - err = e - case serverStreamRPC: - method = "/grpc.testing.TestService/ServerStreamCall" - req, resps, e = te.doServerStreamCall(cc) - reqs = []*testpb.SimpleRequest{req} - err = e - case fullDuplexStreamRPC: - method = "/grpc.testing.TestService/FullDuplexCall" - reqs, resps, err = te.doFullDuplexCallRoundtrip(cc) - } - if cc.success != (err == nil) { - t.Fatalf("cc.success: %v, got error: %v", cc.success, err) - } - te.cc.Close() - te.srv.GracefulStop() // Wait for the server to stop. - - lenRPCStats := 0 - for _, v := range checkFuncs { - lenRPCStats += v.c - } - for { - h.mu.Lock() - if len(h.gotRPC) >= lenRPCStats { - h.mu.Unlock() - break - } - h.mu.Unlock() - time.Sleep(10 * time.Millisecond) - } - - for { - h.mu.Lock() - if _, ok := h.gotConn[len(h.gotConn)-1].s.(*stats.ConnEnd); ok { - h.mu.Unlock() - break - } - h.mu.Unlock() - time.Sleep(10 * time.Millisecond) - } - - expect := &expectedData{ - serverAddr: te.srvAddr, - compression: tc.compress, - method: method, - requests: reqs, - responses: resps, - failfast: cc.failfast, - err: err, - } - - h.mu.Lock() - checkConnStats(t, h.gotConn) - h.mu.Unlock() - checkClientStats(t, h.gotRPC, expect, checkFuncs) -} - -func TestClientStatsUnaryRPC(t *testing.T) { - testClientStats(t, &testConfig{compress: ""}, &rpcConfig{success: true, failfast: false, callType: unaryRPC}, map[int]*checkFuncWithCount{ - begin: {checkBegin, 1}, - outHeader: {checkOutHeader, 1}, - outPayload: {checkOutPayload, 1}, - inHeader: {checkInHeader, 1}, - inPayload: {checkInPayload, 1}, - inTrailer: {checkInTrailer, 1}, - end: {checkEnd, 1}, - }) -} - -func TestClientStatsUnaryRPCError(t *testing.T) { - testClientStats(t, &testConfig{compress: ""}, &rpcConfig{success: false, failfast: false, callType: unaryRPC}, map[int]*checkFuncWithCount{ - begin: {checkBegin, 1}, - outHeader: {checkOutHeader, 1}, - outPayload: {checkOutPayload, 1}, - inHeader: {checkInHeader, 1}, - inTrailer: {checkInTrailer, 1}, - end: {checkEnd, 1}, - }) -} - -func TestClientStatsClientStreamRPC(t *testing.T) { - count := 5 - testClientStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: true, failfast: false, callType: clientStreamRPC}, map[int]*checkFuncWithCount{ - begin: {checkBegin, 1}, - outHeader: {checkOutHeader, 1}, - inHeader: {checkInHeader, 1}, - outPayload: {checkOutPayload, count}, - inTrailer: {checkInTrailer, 1}, - inPayload: {checkInPayload, 1}, - end: {checkEnd, 1}, - }) -} - -func TestClientStatsClientStreamRPCError(t *testing.T) { - count := 1 - testClientStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: false, failfast: false, callType: clientStreamRPC}, map[int]*checkFuncWithCount{ - begin: {checkBegin, 1}, - outHeader: {checkOutHeader, 1}, - inHeader: {checkInHeader, 1}, - outPayload: {checkOutPayload, 1}, - inTrailer: {checkInTrailer, 1}, - end: {checkEnd, 1}, - }) -} - -func TestClientStatsServerStreamRPC(t *testing.T) { - count := 5 - testClientStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: true, failfast: false, callType: serverStreamRPC}, map[int]*checkFuncWithCount{ - begin: {checkBegin, 1}, - outHeader: {checkOutHeader, 1}, - outPayload: {checkOutPayload, 1}, - inHeader: {checkInHeader, 1}, - inPayload: {checkInPayload, count}, - inTrailer: {checkInTrailer, 1}, - end: {checkEnd, 1}, - }) -} - -func TestClientStatsServerStreamRPCError(t *testing.T) { - count := 5 - testClientStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: false, failfast: false, callType: serverStreamRPC}, map[int]*checkFuncWithCount{ - begin: {checkBegin, 1}, - outHeader: {checkOutHeader, 1}, - outPayload: {checkOutPayload, 1}, - inHeader: {checkInHeader, 1}, - inTrailer: {checkInTrailer, 1}, - end: {checkEnd, 1}, - }) -} - -func TestClientStatsFullDuplexRPC(t *testing.T) { - count := 5 - testClientStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: true, failfast: false, callType: fullDuplexStreamRPC}, map[int]*checkFuncWithCount{ - begin: {checkBegin, 1}, - outHeader: {checkOutHeader, 1}, - outPayload: {checkOutPayload, count}, - inHeader: {checkInHeader, 1}, - inPayload: {checkInPayload, count}, - inTrailer: {checkInTrailer, 1}, - end: {checkEnd, 1}, - }) -} - -func TestClientStatsFullDuplexRPCError(t *testing.T) { - count := 5 - testClientStats(t, &testConfig{compress: "gzip"}, &rpcConfig{count: count, success: false, failfast: false, callType: fullDuplexStreamRPC}, map[int]*checkFuncWithCount{ - begin: {checkBegin, 1}, - outHeader: {checkOutHeader, 1}, - outPayload: {checkOutPayload, 1}, - inHeader: {checkInHeader, 1}, - inTrailer: {checkInTrailer, 1}, - end: {checkEnd, 1}, - }) -} - -func TestTags(t *testing.T) { - b := []byte{5, 2, 4, 3, 1} - ctx := stats.SetTags(context.Background(), b) - if tg := stats.OutgoingTags(ctx); !reflect.DeepEqual(tg, b) { - t.Errorf("OutgoingTags(%v) = %v; want %v", ctx, tg, b) - } - if tg := stats.Tags(ctx); tg != nil { - t.Errorf("Tags(%v) = %v; want nil", ctx, tg) - } - - ctx = stats.SetIncomingTags(context.Background(), b) - if tg := stats.Tags(ctx); !reflect.DeepEqual(tg, b) { - t.Errorf("Tags(%v) = %v; want %v", ctx, tg, b) - } - if tg := stats.OutgoingTags(ctx); tg != nil { - t.Errorf("OutgoingTags(%v) = %v; want nil", ctx, tg) - } -} - -func TestTrace(t *testing.T) { - b := []byte{5, 2, 4, 3, 1} - ctx := stats.SetTrace(context.Background(), b) - if tr := stats.OutgoingTrace(ctx); !reflect.DeepEqual(tr, b) { - t.Errorf("OutgoingTrace(%v) = %v; want %v", ctx, tr, b) - } - if tr := stats.Trace(ctx); tr != nil { - t.Errorf("Trace(%v) = %v; want nil", ctx, tr) - } - - ctx = stats.SetIncomingTrace(context.Background(), b) - if tr := stats.Trace(ctx); !reflect.DeepEqual(tr, b) { - t.Errorf("Trace(%v) = %v; want %v", ctx, tr, b) - } - if tr := stats.OutgoingTrace(ctx); tr != nil { - t.Errorf("OutgoingTrace(%v) = %v; want nil", ctx, tr) - } -} diff --git a/vendor/google.golang.org/grpc/status/status_test.go b/vendor/google.golang.org/grpc/status/status_test.go deleted file mode 100644 index 8b74c27d..00000000 --- a/vendor/google.golang.org/grpc/status/status_test.go +++ /dev/null @@ -1,288 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package status - -import ( - "errors" - "fmt" - "reflect" - "testing" - - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes" - apb "github.com/golang/protobuf/ptypes/any" - dpb "github.com/golang/protobuf/ptypes/duration" - cpb "google.golang.org/genproto/googleapis/rpc/code" - epb "google.golang.org/genproto/googleapis/rpc/errdetails" - spb "google.golang.org/genproto/googleapis/rpc/status" - "google.golang.org/grpc/codes" -) - -func TestErrorsWithSameParameters(t *testing.T) { - const description = "some description" - e1 := Errorf(codes.AlreadyExists, description) - e2 := Errorf(codes.AlreadyExists, description) - if e1 == e2 || !reflect.DeepEqual(e1, e2) { - t.Fatalf("Errors should be equivalent but unique - e1: %v, %v e2: %p, %v", e1.(*statusError), e1, e2.(*statusError), e2) - } -} - -func TestFromToProto(t *testing.T) { - s := &spb.Status{ - Code: int32(codes.Internal), - Message: "test test test", - Details: []*apb.Any{{TypeUrl: "foo", Value: []byte{3, 2, 1}}}, - } - - err := FromProto(s) - if got := err.Proto(); !proto.Equal(s, got) { - t.Fatalf("Expected errors to be identical - s: %v got: %v", s, got) - } -} - -func TestFromNilProto(t *testing.T) { - tests := []*Status{nil, FromProto(nil)} - for _, s := range tests { - if c := s.Code(); c != codes.OK { - t.Errorf("s: %v - Expected s.Code() = OK; got %v", s, c) - } - if m := s.Message(); m != "" { - t.Errorf("s: %v - Expected s.Message() = \"\"; got %q", s, m) - } - if p := s.Proto(); p != nil { - t.Errorf("s: %v - Expected s.Proto() = nil; got %q", s, p) - } - if e := s.Err(); e != nil { - t.Errorf("s: %v - Expected s.Err() = nil; got %v", s, e) - } - } -} - -func TestError(t *testing.T) { - err := Error(codes.Internal, "test description") - if got, want := err.Error(), "rpc error: code = Internal desc = test description"; got != want { - t.Fatalf("err.Error() = %q; want %q", got, want) - } - s, _ := FromError(err) - if got, want := s.Code(), codes.Internal; got != want { - t.Fatalf("err.Code() = %s; want %s", got, want) - } - if got, want := s.Message(), "test description"; got != want { - t.Fatalf("err.Message() = %s; want %s", got, want) - } -} - -func TestErrorOK(t *testing.T) { - err := Error(codes.OK, "foo") - if err != nil { - t.Fatalf("Error(codes.OK, _) = %p; want nil", err.(*statusError)) - } -} - -func TestErrorProtoOK(t *testing.T) { - s := &spb.Status{Code: int32(codes.OK)} - if got := ErrorProto(s); got != nil { - t.Fatalf("ErrorProto(%v) = %v; want nil", s, got) - } -} - -func TestFromError(t *testing.T) { - code, message := codes.Internal, "test description" - err := Error(code, message) - s, ok := FromError(err) - if !ok || s.Code() != code || s.Message() != message || s.Err() == nil { - t.Fatalf("FromError(%v) = %v, %v; want <Code()=%s, Message()=%q, Err()!=nil>, true", err, s, ok, code, message) - } -} - -func TestFromErrorOK(t *testing.T) { - code, message := codes.OK, "" - s, ok := FromError(nil) - if !ok || s.Code() != code || s.Message() != message || s.Err() != nil { - t.Fatalf("FromError(nil) = %v, %v; want <Code()=%s, Message()=%q, Err=nil>, true", s, ok, code, message) - } -} - -func TestFromErrorUnknownError(t *testing.T) { - code, message := codes.Unknown, "unknown error" - err := errors.New("unknown error") - s, ok := FromError(err) - if ok || s.Code() != code || s.Message() != message { - t.Fatalf("FromError(%v) = %v, %v; want <Code()=%s, Message()=%q>, false", err, s, ok, code, message) - } -} - -func TestConvertKnownError(t *testing.T) { - code, message := codes.Internal, "test description" - err := Error(code, message) - s := Convert(err) - if s.Code() != code || s.Message() != message { - t.Fatalf("Convert(%v) = %v; want <Code()=%s, Message()=%q>", err, s, code, message) - } -} - -func TestConvertUnknownError(t *testing.T) { - code, message := codes.Unknown, "unknown error" - err := errors.New("unknown error") - s := Convert(err) - if s.Code() != code || s.Message() != message { - t.Fatalf("Convert(%v) = %v; want <Code()=%s, Message()=%q>", err, s, code, message) - } -} - -func TestStatus_ErrorDetails(t *testing.T) { - tests := []struct { - code codes.Code - details []proto.Message - }{ - { - code: codes.NotFound, - details: nil, - }, - { - code: codes.NotFound, - details: []proto.Message{ - &epb.ResourceInfo{ - ResourceType: "book", - ResourceName: "projects/1234/books/5678", - Owner: "User", - }, - }, - }, - { - code: codes.Internal, - details: []proto.Message{ - &epb.DebugInfo{ - StackEntries: []string{ - "first stack", - "second stack", - }, - }, - }, - }, - { - code: codes.Unavailable, - details: []proto.Message{ - &epb.RetryInfo{ - RetryDelay: &dpb.Duration{Seconds: 60}, - }, - &epb.ResourceInfo{ - ResourceType: "book", - ResourceName: "projects/1234/books/5678", - Owner: "User", - }, - }, - }, - } - - for _, tc := range tests { - s, err := New(tc.code, "").WithDetails(tc.details...) - if err != nil { - t.Fatalf("(%v).WithDetails(%+v) failed: %v", str(s), tc.details, err) - } - details := s.Details() - for i := range details { - if !proto.Equal(details[i].(proto.Message), tc.details[i]) { - t.Fatalf("(%v).Details()[%d] = %+v, want %+v", str(s), i, details[i], tc.details[i]) - } - } - } -} - -func TestStatus_WithDetails_Fail(t *testing.T) { - tests := []*Status{ - nil, - FromProto(nil), - New(codes.OK, ""), - } - for _, s := range tests { - if s, err := s.WithDetails(); err == nil || s != nil { - t.Fatalf("(%v).WithDetails(%+v) = %v, %v; want nil, non-nil", str(s), []proto.Message{}, s, err) - } - } -} - -func TestStatus_ErrorDetails_Fail(t *testing.T) { - tests := []struct { - s *Status - i []interface{} - }{ - { - nil, - nil, - }, - { - FromProto(nil), - nil, - }, - { - New(codes.OK, ""), - []interface{}{}, - }, - { - FromProto(&spb.Status{ - Code: int32(cpb.Code_CANCELLED), - Details: []*apb.Any{ - { - TypeUrl: "", - Value: []byte{}, - }, - mustMarshalAny(&epb.ResourceInfo{ - ResourceType: "book", - ResourceName: "projects/1234/books/5678", - Owner: "User", - }), - }, - }), - []interface{}{ - errors.New(`message type url "" is invalid`), - &epb.ResourceInfo{ - ResourceType: "book", - ResourceName: "projects/1234/books/5678", - Owner: "User", - }, - }, - }, - } - for _, tc := range tests { - got := tc.s.Details() - if !reflect.DeepEqual(got, tc.i) { - t.Errorf("(%v).Details() = %+v, want %+v", str(tc.s), got, tc.i) - } - } -} - -func str(s *Status) string { - if s == nil { - return "nil" - } - if s.s == nil { - return "<Code=OK>" - } - return fmt.Sprintf("<Code=%v, Message=%q, Details=%+v>", codes.Code(s.s.GetCode()), s.s.GetMessage(), s.s.GetDetails()) -} - -// mustMarshalAny converts a protobuf message to an any. -func mustMarshalAny(msg proto.Message) *apb.Any { - any, err := ptypes.MarshalAny(msg) - if err != nil { - panic(fmt.Sprintf("ptypes.MarshalAny(%+v) failed: %v", msg, err)) - } - return any -} diff --git a/vendor/google.golang.org/grpc/stress/client/main.go b/vendor/google.golang.org/grpc/stress/client/main.go deleted file mode 100644 index 6e7e733c..00000000 --- a/vendor/google.golang.org/grpc/stress/client/main.go +++ /dev/null @@ -1,337 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc -I ../grpc_testing --go_out=plugins=grpc:../grpc_testing ../grpc_testing/metrics.proto - -// client starts an interop client to do stress test and a metrics server to report qps. -package main - -import ( - "flag" - "fmt" - "math/rand" - "net" - "strconv" - "strings" - "sync" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/credentials" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/interop" - testpb "google.golang.org/grpc/interop/grpc_testing" - "google.golang.org/grpc/status" - metricspb "google.golang.org/grpc/stress/grpc_testing" - "google.golang.org/grpc/testdata" -) - -var ( - serverAddresses = flag.String("server_addresses", "localhost:8080", "a list of server addresses") - testCases = flag.String("test_cases", "", "a list of test cases along with the relative weights") - testDurationSecs = flag.Int("test_duration_secs", -1, "test duration in seconds") - numChannelsPerServer = flag.Int("num_channels_per_server", 1, "Number of channels (i.e connections) to each server") - numStubsPerChannel = flag.Int("num_stubs_per_channel", 1, "Number of client stubs per each connection to server") - metricsPort = flag.Int("metrics_port", 8081, "The port at which the stress client exposes QPS metrics") - useTLS = flag.Bool("use_tls", false, "Connection uses TLS if true, else plain TCP") - testCA = flag.Bool("use_test_ca", false, "Whether to replace platform root CAs with test CA as the CA root") - tlsServerName = flag.String("server_host_override", "foo.test.google.fr", "The server name use to verify the hostname returned by TLS handshake if it is not empty. Otherwise, --server_host is used.") - caFile = flag.String("ca_file", "", "The file containning the CA root cert file") -) - -// testCaseWithWeight contains the test case type and its weight. -type testCaseWithWeight struct { - name string - weight int -} - -// parseTestCases converts test case string to a list of struct testCaseWithWeight. -func parseTestCases(testCaseString string) []testCaseWithWeight { - testCaseStrings := strings.Split(testCaseString, ",") - testCases := make([]testCaseWithWeight, len(testCaseStrings)) - for i, str := range testCaseStrings { - testCase := strings.Split(str, ":") - if len(testCase) != 2 { - panic(fmt.Sprintf("invalid test case with weight: %s", str)) - } - // Check if test case is supported. - switch testCase[0] { - case - "empty_unary", - "large_unary", - "client_streaming", - "server_streaming", - "ping_pong", - "empty_stream", - "timeout_on_sleeping_server", - "cancel_after_begin", - "cancel_after_first_response", - "status_code_and_message", - "custom_metadata": - default: - panic(fmt.Sprintf("unknown test type: %s", testCase[0])) - } - testCases[i].name = testCase[0] - w, err := strconv.Atoi(testCase[1]) - if err != nil { - panic(fmt.Sprintf("%v", err)) - } - testCases[i].weight = w - } - return testCases -} - -// weightedRandomTestSelector defines a weighted random selector for test case types. -type weightedRandomTestSelector struct { - tests []testCaseWithWeight - totalWeight int -} - -// newWeightedRandomTestSelector constructs a weightedRandomTestSelector with the given list of testCaseWithWeight. -func newWeightedRandomTestSelector(tests []testCaseWithWeight) *weightedRandomTestSelector { - var totalWeight int - for _, t := range tests { - totalWeight += t.weight - } - rand.Seed(time.Now().UnixNano()) - return &weightedRandomTestSelector{tests, totalWeight} -} - -func (selector weightedRandomTestSelector) getNextTest() string { - random := rand.Intn(selector.totalWeight) - var weightSofar int - for _, test := range selector.tests { - weightSofar += test.weight - if random < weightSofar { - return test.name - } - } - panic("no test case selected by weightedRandomTestSelector") -} - -// gauge stores the qps of one interop client (one stub). -type gauge struct { - mutex sync.RWMutex - val int64 -} - -func (g *gauge) set(v int64) { - g.mutex.Lock() - defer g.mutex.Unlock() - g.val = v -} - -func (g *gauge) get() int64 { - g.mutex.RLock() - defer g.mutex.RUnlock() - return g.val -} - -// server implements metrics server functions. -type server struct { - mutex sync.RWMutex - // gauges is a map from /stress_test/server_<n>/channel_<n>/stub_<n>/qps to its qps gauge. - gauges map[string]*gauge -} - -// newMetricsServer returns a new metrics server. -func newMetricsServer() *server { - return &server{gauges: make(map[string]*gauge)} -} - -// GetAllGauges returns all gauges. -func (s *server) GetAllGauges(in *metricspb.EmptyMessage, stream metricspb.MetricsService_GetAllGaugesServer) error { - s.mutex.RLock() - defer s.mutex.RUnlock() - - for name, gauge := range s.gauges { - if err := stream.Send(&metricspb.GaugeResponse{Name: name, Value: &metricspb.GaugeResponse_LongValue{LongValue: gauge.get()}}); err != nil { - return err - } - } - return nil -} - -// GetGauge returns the gauge for the given name. -func (s *server) GetGauge(ctx context.Context, in *metricspb.GaugeRequest) (*metricspb.GaugeResponse, error) { - s.mutex.RLock() - defer s.mutex.RUnlock() - - if g, ok := s.gauges[in.Name]; ok { - return &metricspb.GaugeResponse{Name: in.Name, Value: &metricspb.GaugeResponse_LongValue{LongValue: g.get()}}, nil - } - return nil, status.Errorf(codes.InvalidArgument, "gauge with name %s not found", in.Name) -} - -// createGauge creates a gauge using the given name in metrics server. -func (s *server) createGauge(name string) *gauge { - s.mutex.Lock() - defer s.mutex.Unlock() - - if _, ok := s.gauges[name]; ok { - // gauge already exists. - panic(fmt.Sprintf("gauge %s already exists", name)) - } - var g gauge - s.gauges[name] = &g - return &g -} - -func startServer(server *server, port int) { - lis, err := net.Listen("tcp", ":"+strconv.Itoa(port)) - if err != nil { - grpclog.Fatalf("failed to listen: %v", err) - } - - s := grpc.NewServer() - metricspb.RegisterMetricsServiceServer(s, server) - s.Serve(lis) - -} - -// performRPCs uses weightedRandomTestSelector to select test case and runs the tests. -func performRPCs(gauge *gauge, conn *grpc.ClientConn, selector *weightedRandomTestSelector, stop <-chan bool) { - client := testpb.NewTestServiceClient(conn) - var numCalls int64 - startTime := time.Now() - for { - test := selector.getNextTest() - switch test { - case "empty_unary": - interop.DoEmptyUnaryCall(client, grpc.FailFast(false)) - case "large_unary": - interop.DoLargeUnaryCall(client, grpc.FailFast(false)) - case "client_streaming": - interop.DoClientStreaming(client, grpc.FailFast(false)) - case "server_streaming": - interop.DoServerStreaming(client, grpc.FailFast(false)) - case "ping_pong": - interop.DoPingPong(client, grpc.FailFast(false)) - case "empty_stream": - interop.DoEmptyStream(client, grpc.FailFast(false)) - case "timeout_on_sleeping_server": - interop.DoTimeoutOnSleepingServer(client, grpc.FailFast(false)) - case "cancel_after_begin": - interop.DoCancelAfterBegin(client, grpc.FailFast(false)) - case "cancel_after_first_response": - interop.DoCancelAfterFirstResponse(client, grpc.FailFast(false)) - case "status_code_and_message": - interop.DoStatusCodeAndMessage(client, grpc.FailFast(false)) - case "custom_metadata": - interop.DoCustomMetadata(client, grpc.FailFast(false)) - } - numCalls++ - gauge.set(int64(float64(numCalls) / time.Since(startTime).Seconds())) - - select { - case <-stop: - return - default: - } - } -} - -func logParameterInfo(addresses []string, tests []testCaseWithWeight) { - grpclog.Printf("server_addresses: %s", *serverAddresses) - grpclog.Printf("test_cases: %s", *testCases) - grpclog.Printf("test_duration_secs: %d", *testDurationSecs) - grpclog.Printf("num_channels_per_server: %d", *numChannelsPerServer) - grpclog.Printf("num_stubs_per_channel: %d", *numStubsPerChannel) - grpclog.Printf("metrics_port: %d", *metricsPort) - grpclog.Printf("use_tls: %t", *useTLS) - grpclog.Printf("use_test_ca: %t", *testCA) - grpclog.Printf("server_host_override: %s", *tlsServerName) - - grpclog.Println("addresses:") - for i, addr := range addresses { - grpclog.Printf("%d. %s\n", i+1, addr) - } - grpclog.Println("tests:") - for i, test := range tests { - grpclog.Printf("%d. %v\n", i+1, test) - } -} - -func newConn(address string, useTLS, testCA bool, tlsServerName string) (*grpc.ClientConn, error) { - var opts []grpc.DialOption - if useTLS { - var sn string - if tlsServerName != "" { - sn = tlsServerName - } - var creds credentials.TransportCredentials - if testCA { - var err error - if *caFile == "" { - *caFile = testdata.Path("ca.pem") - } - creds, err = credentials.NewClientTLSFromFile(*caFile, sn) - if err != nil { - grpclog.Fatalf("Failed to create TLS credentials %v", err) - } - } else { - creds = credentials.NewClientTLSFromCert(nil, sn) - } - opts = append(opts, grpc.WithTransportCredentials(creds)) - } else { - opts = append(opts, grpc.WithInsecure()) - } - return grpc.Dial(address, opts...) -} - -func main() { - flag.Parse() - addresses := strings.Split(*serverAddresses, ",") - tests := parseTestCases(*testCases) - logParameterInfo(addresses, tests) - testSelector := newWeightedRandomTestSelector(tests) - metricsServer := newMetricsServer() - - var wg sync.WaitGroup - wg.Add(len(addresses) * *numChannelsPerServer * *numStubsPerChannel) - stop := make(chan bool) - - for serverIndex, address := range addresses { - for connIndex := 0; connIndex < *numChannelsPerServer; connIndex++ { - conn, err := newConn(address, *useTLS, *testCA, *tlsServerName) - if err != nil { - grpclog.Fatalf("Fail to dial: %v", err) - } - defer conn.Close() - for clientIndex := 0; clientIndex < *numStubsPerChannel; clientIndex++ { - name := fmt.Sprintf("/stress_test/server_%d/channel_%d/stub_%d/qps", serverIndex+1, connIndex+1, clientIndex+1) - go func() { - defer wg.Done() - g := metricsServer.createGauge(name) - performRPCs(g, conn, testSelector, stop) - }() - } - - } - } - go startServer(metricsServer, *metricsPort) - if *testDurationSecs > 0 { - time.Sleep(time.Duration(*testDurationSecs) * time.Second) - close(stop) - } - wg.Wait() - grpclog.Printf(" ===== ALL DONE ===== ") - -} diff --git a/vendor/google.golang.org/grpc/stress/grpc_testing/metrics.pb.go b/vendor/google.golang.org/grpc/stress/grpc_testing/metrics.pb.go deleted file mode 100644 index 466668a4..00000000 --- a/vendor/google.golang.org/grpc/stress/grpc_testing/metrics.pb.go +++ /dev/null @@ -1,374 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: metrics.proto - -/* -Package grpc_testing is a generated protocol buffer package. - -It is generated from these files: - metrics.proto - -It has these top-level messages: - GaugeResponse - GaugeRequest - EmptyMessage -*/ -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Response message containing the gauge name and value -type GaugeResponse struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - // Types that are valid to be assigned to Value: - // *GaugeResponse_LongValue - // *GaugeResponse_DoubleValue - // *GaugeResponse_StringValue - Value isGaugeResponse_Value `protobuf_oneof:"value"` -} - -func (m *GaugeResponse) Reset() { *m = GaugeResponse{} } -func (m *GaugeResponse) String() string { return proto.CompactTextString(m) } -func (*GaugeResponse) ProtoMessage() {} -func (*GaugeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type isGaugeResponse_Value interface { - isGaugeResponse_Value() -} - -type GaugeResponse_LongValue struct { - LongValue int64 `protobuf:"varint,2,opt,name=long_value,json=longValue,oneof"` -} -type GaugeResponse_DoubleValue struct { - DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,oneof"` -} -type GaugeResponse_StringValue struct { - StringValue string `protobuf:"bytes,4,opt,name=string_value,json=stringValue,oneof"` -} - -func (*GaugeResponse_LongValue) isGaugeResponse_Value() {} -func (*GaugeResponse_DoubleValue) isGaugeResponse_Value() {} -func (*GaugeResponse_StringValue) isGaugeResponse_Value() {} - -func (m *GaugeResponse) GetValue() isGaugeResponse_Value { - if m != nil { - return m.Value - } - return nil -} - -func (m *GaugeResponse) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *GaugeResponse) GetLongValue() int64 { - if x, ok := m.GetValue().(*GaugeResponse_LongValue); ok { - return x.LongValue - } - return 0 -} - -func (m *GaugeResponse) GetDoubleValue() float64 { - if x, ok := m.GetValue().(*GaugeResponse_DoubleValue); ok { - return x.DoubleValue - } - return 0 -} - -func (m *GaugeResponse) GetStringValue() string { - if x, ok := m.GetValue().(*GaugeResponse_StringValue); ok { - return x.StringValue - } - return "" -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*GaugeResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _GaugeResponse_OneofMarshaler, _GaugeResponse_OneofUnmarshaler, _GaugeResponse_OneofSizer, []interface{}{ - (*GaugeResponse_LongValue)(nil), - (*GaugeResponse_DoubleValue)(nil), - (*GaugeResponse_StringValue)(nil), - } -} - -func _GaugeResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*GaugeResponse) - // value - switch x := m.Value.(type) { - case *GaugeResponse_LongValue: - b.EncodeVarint(2<<3 | proto.WireVarint) - b.EncodeVarint(uint64(x.LongValue)) - case *GaugeResponse_DoubleValue: - b.EncodeVarint(3<<3 | proto.WireFixed64) - b.EncodeFixed64(math.Float64bits(x.DoubleValue)) - case *GaugeResponse_StringValue: - b.EncodeVarint(4<<3 | proto.WireBytes) - b.EncodeStringBytes(x.StringValue) - case nil: - default: - return fmt.Errorf("GaugeResponse.Value has unexpected type %T", x) - } - return nil -} - -func _GaugeResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*GaugeResponse) - switch tag { - case 2: // value.long_value - if wire != proto.WireVarint { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeVarint() - m.Value = &GaugeResponse_LongValue{int64(x)} - return true, err - case 3: // value.double_value - if wire != proto.WireFixed64 { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeFixed64() - m.Value = &GaugeResponse_DoubleValue{math.Float64frombits(x)} - return true, err - case 4: // value.string_value - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - x, err := b.DecodeStringBytes() - m.Value = &GaugeResponse_StringValue{x} - return true, err - default: - return false, nil - } -} - -func _GaugeResponse_OneofSizer(msg proto.Message) (n int) { - m := msg.(*GaugeResponse) - // value - switch x := m.Value.(type) { - case *GaugeResponse_LongValue: - n += proto.SizeVarint(2<<3 | proto.WireVarint) - n += proto.SizeVarint(uint64(x.LongValue)) - case *GaugeResponse_DoubleValue: - n += proto.SizeVarint(3<<3 | proto.WireFixed64) - n += 8 - case *GaugeResponse_StringValue: - n += proto.SizeVarint(4<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(len(x.StringValue))) - n += len(x.StringValue) - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -// Request message containing the gauge name -type GaugeRequest struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *GaugeRequest) Reset() { *m = GaugeRequest{} } -func (m *GaugeRequest) String() string { return proto.CompactTextString(m) } -func (*GaugeRequest) ProtoMessage() {} -func (*GaugeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *GaugeRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type EmptyMessage struct { -} - -func (m *EmptyMessage) Reset() { *m = EmptyMessage{} } -func (m *EmptyMessage) String() string { return proto.CompactTextString(m) } -func (*EmptyMessage) ProtoMessage() {} -func (*EmptyMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func init() { - proto.RegisterType((*GaugeResponse)(nil), "grpc.testing.GaugeResponse") - proto.RegisterType((*GaugeRequest)(nil), "grpc.testing.GaugeRequest") - proto.RegisterType((*EmptyMessage)(nil), "grpc.testing.EmptyMessage") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for MetricsService service - -type MetricsServiceClient interface { - // Returns the values of all the gauges that are currently being maintained by - // the service - GetAllGauges(ctx context.Context, in *EmptyMessage, opts ...grpc.CallOption) (MetricsService_GetAllGaugesClient, error) - // Returns the value of one gauge - GetGauge(ctx context.Context, in *GaugeRequest, opts ...grpc.CallOption) (*GaugeResponse, error) -} - -type metricsServiceClient struct { - cc *grpc.ClientConn -} - -func NewMetricsServiceClient(cc *grpc.ClientConn) MetricsServiceClient { - return &metricsServiceClient{cc} -} - -func (c *metricsServiceClient) GetAllGauges(ctx context.Context, in *EmptyMessage, opts ...grpc.CallOption) (MetricsService_GetAllGaugesClient, error) { - stream, err := grpc.NewClientStream(ctx, &_MetricsService_serviceDesc.Streams[0], c.cc, "/grpc.testing.MetricsService/GetAllGauges", opts...) - if err != nil { - return nil, err - } - x := &metricsServiceGetAllGaugesClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type MetricsService_GetAllGaugesClient interface { - Recv() (*GaugeResponse, error) - grpc.ClientStream -} - -type metricsServiceGetAllGaugesClient struct { - grpc.ClientStream -} - -func (x *metricsServiceGetAllGaugesClient) Recv() (*GaugeResponse, error) { - m := new(GaugeResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *metricsServiceClient) GetGauge(ctx context.Context, in *GaugeRequest, opts ...grpc.CallOption) (*GaugeResponse, error) { - out := new(GaugeResponse) - err := grpc.Invoke(ctx, "/grpc.testing.MetricsService/GetGauge", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for MetricsService service - -type MetricsServiceServer interface { - // Returns the values of all the gauges that are currently being maintained by - // the service - GetAllGauges(*EmptyMessage, MetricsService_GetAllGaugesServer) error - // Returns the value of one gauge - GetGauge(context.Context, *GaugeRequest) (*GaugeResponse, error) -} - -func RegisterMetricsServiceServer(s *grpc.Server, srv MetricsServiceServer) { - s.RegisterService(&_MetricsService_serviceDesc, srv) -} - -func _MetricsService_GetAllGauges_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(EmptyMessage) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(MetricsServiceServer).GetAllGauges(m, &metricsServiceGetAllGaugesServer{stream}) -} - -type MetricsService_GetAllGaugesServer interface { - Send(*GaugeResponse) error - grpc.ServerStream -} - -type metricsServiceGetAllGaugesServer struct { - grpc.ServerStream -} - -func (x *metricsServiceGetAllGaugesServer) Send(m *GaugeResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _MetricsService_GetGauge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GaugeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MetricsServiceServer).GetGauge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.MetricsService/GetGauge", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MetricsServiceServer).GetGauge(ctx, req.(*GaugeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _MetricsService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.MetricsService", - HandlerType: (*MetricsServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetGauge", - Handler: _MetricsService_GetGauge_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "GetAllGauges", - Handler: _MetricsService_GetAllGauges_Handler, - ServerStreams: true, - }, - }, - Metadata: "metrics.proto", -} - -func init() { proto.RegisterFile("metrics.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 256 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0x3f, 0x4f, 0xc3, 0x30, - 0x10, 0xc5, 0x6b, 0x5a, 0xfe, 0xf4, 0x70, 0x3b, 0x78, 0xaa, 0xca, 0x40, 0x14, 0x96, 0x4c, 0x11, - 0x82, 0x4f, 0x00, 0x08, 0xa5, 0x0c, 0x5d, 0x82, 0xc4, 0x8a, 0xd2, 0x70, 0xb2, 0x22, 0x39, 0x71, - 0xf0, 0x5d, 0x2a, 0xf1, 0x49, 0x58, 0xf9, 0xa8, 0xc8, 0x4e, 0x55, 0xa5, 0x08, 0x75, 0xb3, 0x7e, - 0xf7, 0xfc, 0xfc, 0x9e, 0x0f, 0x66, 0x35, 0xb2, 0xab, 0x4a, 0x4a, 0x5b, 0x67, 0xd9, 0x2a, 0xa9, - 0x5d, 0x5b, 0xa6, 0x8c, 0xc4, 0x55, 0xa3, 0xe3, 0x6f, 0x01, 0xb3, 0xac, 0xe8, 0x34, 0xe6, 0x48, - 0xad, 0x6d, 0x08, 0x95, 0x82, 0x49, 0x53, 0xd4, 0xb8, 0x10, 0x91, 0x48, 0xa6, 0x79, 0x38, 0xab, - 0x6b, 0x00, 0x63, 0x1b, 0xfd, 0xbe, 0x2d, 0x4c, 0x87, 0x8b, 0x93, 0x48, 0x24, 0xe3, 0xd5, 0x28, - 0x9f, 0x7a, 0xf6, 0xe6, 0x91, 0xba, 0x01, 0xf9, 0x61, 0xbb, 0x8d, 0xc1, 0x9d, 0x64, 0x1c, 0x89, - 0x44, 0xac, 0x46, 0xf9, 0x65, 0x4f, 0xf7, 0x22, 0x62, 0x57, 0xed, 0x7d, 0x26, 0xfe, 0x05, 0x2f, - 0xea, 0x69, 0x10, 0x3d, 0x9e, 0xc3, 0x69, 0x98, 0xc6, 0x31, 0xc8, 0x5d, 0xb0, 0xcf, 0x0e, 0x89, - 0xff, 0xcb, 0x15, 0xcf, 0x41, 0x3e, 0xd7, 0x2d, 0x7f, 0xad, 0x91, 0xa8, 0xd0, 0x78, 0xf7, 0x23, - 0x60, 0xbe, 0xee, 0xdb, 0xbe, 0xa2, 0xdb, 0x56, 0x25, 0xaa, 0x17, 0x90, 0x19, 0xf2, 0x83, 0x31, - 0xc1, 0x8c, 0xd4, 0x32, 0x1d, 0xf6, 0x4f, 0x87, 0xd7, 0x97, 0x57, 0x87, 0xb3, 0x83, 0x7f, 0xb9, - 0x15, 0xea, 0x09, 0x2e, 0x32, 0xe4, 0x40, 0xff, 0xda, 0x0c, 0x93, 0x1e, 0xb5, 0xd9, 0x9c, 0x85, - 0x2d, 0xdc, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x5e, 0x7d, 0xb2, 0xc9, 0x96, 0x01, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/stress/grpc_testing/metrics.proto b/vendor/google.golang.org/grpc/stress/grpc_testing/metrics.proto deleted file mode 100644 index 69504006..00000000 --- a/vendor/google.golang.org/grpc/stress/grpc_testing/metrics.proto +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015-2016 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Contains the definitions for a metrics service and the type of metrics -// exposed by the service. -// -// Currently, 'Gauge' (i.e a metric that represents the measured value of -// something at an instant of time) is the only metric type supported by the -// service. -syntax = "proto3"; - -package grpc.testing; - -// Response message containing the gauge name and value -message GaugeResponse { - string name = 1; - oneof value { - int64 long_value = 2; - double double_value = 3; - string string_value = 4; - } -} - -// Request message containing the gauge name -message GaugeRequest { - string name = 1; -} - -message EmptyMessage {} - -service MetricsService { - // Returns the values of all the gauges that are currently being maintained by - // the service - rpc GetAllGauges(EmptyMessage) returns (stream GaugeResponse); - - // Returns the value of one gauge - rpc GetGauge(GaugeRequest) returns (GaugeResponse); -} diff --git a/vendor/google.golang.org/grpc/stress/metrics_client/main.go b/vendor/google.golang.org/grpc/stress/metrics_client/main.go deleted file mode 100644 index 6405ec85..00000000 --- a/vendor/google.golang.org/grpc/stress/metrics_client/main.go +++ /dev/null @@ -1,82 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package main - -import ( - "flag" - "fmt" - "io" - - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/grpclog" - metricspb "google.golang.org/grpc/stress/grpc_testing" -) - -var ( - metricsServerAddress = flag.String("metrics_server_address", "", "The metrics server addresses in the fomrat <hostname>:<port>") - totalOnly = flag.Bool("total_only", false, "If true, this prints only the total value of all gauges") -) - -func printMetrics(client metricspb.MetricsServiceClient, totalOnly bool) { - stream, err := client.GetAllGauges(context.Background(), &metricspb.EmptyMessage{}) - if err != nil { - grpclog.Fatalf("failed to call GetAllGuages: %v", err) - } - - var ( - overallQPS int64 - rpcStatus error - ) - for { - gaugeResponse, err := stream.Recv() - if err != nil { - rpcStatus = err - break - } - if _, ok := gaugeResponse.GetValue().(*metricspb.GaugeResponse_LongValue); !ok { - panic(fmt.Sprintf("gauge %s is not a long value", gaugeResponse.Name)) - } - v := gaugeResponse.GetLongValue() - if !totalOnly { - grpclog.Printf("%s: %d", gaugeResponse.Name, v) - } - overallQPS += v - } - if rpcStatus != io.EOF { - grpclog.Fatalf("failed to finish server streaming: %v", rpcStatus) - } - grpclog.Printf("overall qps: %d", overallQPS) -} - -func main() { - flag.Parse() - if *metricsServerAddress == "" { - grpclog.Fatalf("Metrics server address is empty.") - } - - conn, err := grpc.Dial(*metricsServerAddress, grpc.WithInsecure()) - if err != nil { - grpclog.Fatalf("cannot connect to metrics server: %v", err) - } - defer conn.Close() - - c := metricspb.NewMetricsServiceClient(conn) - printMetrics(c, *totalOnly) -} diff --git a/vendor/google.golang.org/grpc/test/bufconn/bufconn.go b/vendor/google.golang.org/grpc/test/bufconn/bufconn.go deleted file mode 100644 index bdb5d812..00000000 --- a/vendor/google.golang.org/grpc/test/bufconn/bufconn.go +++ /dev/null @@ -1,244 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package bufconn provides a net.Conn implemented by a buffer and related -// dialing and listening functionality. -package bufconn - -import ( - "fmt" - "io" - "net" - "sync" - "time" -) - -// Listener implements a net.Listener that creates local, buffered net.Conns -// via its Accept and Dial method. -type Listener struct { - mu sync.Mutex - sz int - ch chan net.Conn - done chan struct{} -} - -var errClosed = fmt.Errorf("Closed") - -// Listen returns a Listener that can only be contacted by its own Dialers and -// creates buffered connections between the two. -func Listen(sz int) *Listener { - return &Listener{sz: sz, ch: make(chan net.Conn), done: make(chan struct{})} -} - -// Accept blocks until Dial is called, then returns a net.Conn for the server -// half of the connection. -func (l *Listener) Accept() (net.Conn, error) { - select { - case <-l.done: - return nil, errClosed - case c := <-l.ch: - return c, nil - } -} - -// Close stops the listener. -func (l *Listener) Close() error { - l.mu.Lock() - defer l.mu.Unlock() - select { - case <-l.done: - // Already closed. - break - default: - close(l.done) - } - return nil -} - -// Addr reports the address of the listener. -func (l *Listener) Addr() net.Addr { return addr{} } - -// Dial creates an in-memory full-duplex network connection, unblocks Accept by -// providing it the server half of the connection, and returns the client half -// of the connection. -func (l *Listener) Dial() (net.Conn, error) { - p1, p2 := newPipe(l.sz), newPipe(l.sz) - select { - case <-l.done: - return nil, errClosed - case l.ch <- &conn{p1, p2}: - return &conn{p2, p1}, nil - } -} - -type pipe struct { - mu sync.Mutex - - // buf contains the data in the pipe. It is a ring buffer of fixed capacity, - // with r and w pointing to the offset to read and write, respsectively. - // - // Data is read between [r, w) and written to [w, r), wrapping around the end - // of the slice if necessary. - // - // The buffer is empty if r == len(buf), otherwise if r == w, it is full. - // - // w and r are always in the range [0, cap(buf)) and [0, len(buf)]. - buf []byte - w, r int - - wwait sync.Cond - rwait sync.Cond - - closed bool - writeClosed bool -} - -func newPipe(sz int) *pipe { - p := &pipe{buf: make([]byte, 0, sz)} - p.wwait.L = &p.mu - p.rwait.L = &p.mu - return p -} - -func (p *pipe) empty() bool { - return p.r == len(p.buf) -} - -func (p *pipe) full() bool { - return p.r < len(p.buf) && p.r == p.w -} - -func (p *pipe) Read(b []byte) (n int, err error) { - p.mu.Lock() - defer p.mu.Unlock() - // Block until p has data. - for { - if p.closed { - return 0, io.ErrClosedPipe - } - if !p.empty() { - break - } - if p.writeClosed { - return 0, io.EOF - } - p.rwait.Wait() - } - wasFull := p.full() - - n = copy(b, p.buf[p.r:len(p.buf)]) - p.r += n - if p.r == cap(p.buf) { - p.r = 0 - p.buf = p.buf[:p.w] - } - - // Signal a blocked writer, if any - if wasFull { - p.wwait.Signal() - } - - return n, nil -} - -func (p *pipe) Write(b []byte) (n int, err error) { - p.mu.Lock() - defer p.mu.Unlock() - if p.closed { - return 0, io.ErrClosedPipe - } - for len(b) > 0 { - // Block until p is not full. - for { - if p.closed || p.writeClosed { - return 0, io.ErrClosedPipe - } - if !p.full() { - break - } - p.wwait.Wait() - } - wasEmpty := p.empty() - - end := cap(p.buf) - if p.w < p.r { - end = p.r - } - x := copy(p.buf[p.w:end], b) - b = b[x:] - n += x - p.w += x - if p.w > len(p.buf) { - p.buf = p.buf[:p.w] - } - if p.w == cap(p.buf) { - p.w = 0 - } - - // Signal a blocked reader, if any. - if wasEmpty { - p.rwait.Signal() - } - } - return n, nil -} - -func (p *pipe) Close() error { - p.mu.Lock() - defer p.mu.Unlock() - p.closed = true - // Signal all blocked readers and writers to return an error. - p.rwait.Broadcast() - p.wwait.Broadcast() - return nil -} - -func (p *pipe) closeWrite() error { - p.mu.Lock() - defer p.mu.Unlock() - p.writeClosed = true - // Signal all blocked readers and writers to return an error. - p.rwait.Broadcast() - p.wwait.Broadcast() - return nil -} - -type conn struct { - io.Reader - io.Writer -} - -func (c *conn) Close() error { - err1 := c.Reader.(*pipe).Close() - err2 := c.Writer.(*pipe).closeWrite() - if err1 != nil { - return err1 - } - return err2 -} - -func (*conn) LocalAddr() net.Addr { return addr{} } -func (*conn) RemoteAddr() net.Addr { return addr{} } -func (c *conn) SetDeadline(t time.Time) error { return fmt.Errorf("unsupported") } -func (c *conn) SetReadDeadline(t time.Time) error { return fmt.Errorf("unsupported") } -func (c *conn) SetWriteDeadline(t time.Time) error { return fmt.Errorf("unsupported") } - -type addr struct{} - -func (addr) Network() string { return "bufconn" } -func (addr) String() string { return "bufconn" } diff --git a/vendor/google.golang.org/grpc/test/bufconn/bufconn_test.go b/vendor/google.golang.org/grpc/test/bufconn/bufconn_test.go deleted file mode 100644 index 65b4caa0..00000000 --- a/vendor/google.golang.org/grpc/test/bufconn/bufconn_test.go +++ /dev/null @@ -1,199 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package bufconn - -import ( - "fmt" - "io" - "net" - "reflect" - "testing" - "time" -) - -func testRW(r io.Reader, w io.Writer) error { - for i := 0; i < 20; i++ { - d := make([]byte, i) - for j := 0; j < i; j++ { - d[j] = byte(i - j) - } - var rn int - var rerr error - b := make([]byte, i) - done := make(chan struct{}) - go func() { - for rn < len(b) && rerr == nil { - var x int - x, rerr = r.Read(b[rn:]) - rn += x - } - close(done) - }() - wn, werr := w.Write(d) - if wn != i || werr != nil { - return fmt.Errorf("%v: w.Write(%v) = %v, %v; want %v, nil", i, d, wn, werr, i) - } - select { - case <-done: - case <-time.After(500 * time.Millisecond): - return fmt.Errorf("%v: r.Read never returned", i) - } - if rn != i || rerr != nil { - return fmt.Errorf("%v: r.Read = %v, %v; want %v, nil", i, rn, rerr, i) - } - if !reflect.DeepEqual(b, d) { - return fmt.Errorf("%v: r.Read read %v; want %v", i, b, d) - } - } - return nil -} - -func TestPipe(t *testing.T) { - p := newPipe(10) - if err := testRW(p, p); err != nil { - t.Fatalf(err.Error()) - } -} - -func TestPipeClose(t *testing.T) { - p := newPipe(10) - p.Close() - if _, err := p.Write(nil); err != io.ErrClosedPipe { - t.Fatalf("p.Write = _, %v; want _, %v", err, io.ErrClosedPipe) - } - if _, err := p.Read(nil); err != io.ErrClosedPipe { - t.Fatalf("p.Read = _, %v; want _, %v", err, io.ErrClosedPipe) - } -} - -func TestConn(t *testing.T) { - p1, p2 := newPipe(10), newPipe(10) - c1, c2 := &conn{p1, p2}, &conn{p2, p1} - - if err := testRW(c1, c2); err != nil { - t.Fatalf(err.Error()) - } - if err := testRW(c2, c1); err != nil { - t.Fatalf(err.Error()) - } -} - -func TestConnCloseWithData(t *testing.T) { - lis := Listen(7) - errChan := make(chan error) - var lisConn net.Conn - go func() { - var err error - if lisConn, err = lis.Accept(); err != nil { - errChan <- err - } - close(errChan) - }() - dialConn, err := lis.Dial() - if err != nil { - t.Fatalf("Dial error: %v", err) - } - if err := <-errChan; err != nil { - t.Fatalf("Listen error: %v", err) - } - - // Write some data on both sides of the connection. - n, err := dialConn.Write([]byte("hello")) - if n != 5 || err != nil { - t.Fatalf("dialConn.Write([]byte{\"hello\"}) = %v, %v; want 5, <nil>", n, err) - } - n, err = lisConn.Write([]byte("hello")) - if n != 5 || err != nil { - t.Fatalf("lisConn.Write([]byte{\"hello\"}) = %v, %v; want 5, <nil>", n, err) - } - - // Close dial-side; writes from either side should fail. - dialConn.Close() - if _, err := lisConn.Write([]byte("hello")); err != io.ErrClosedPipe { - t.Fatalf("lisConn.Write() = _, <nil>; want _, <non-nil>") - } - if _, err := dialConn.Write([]byte("hello")); err != io.ErrClosedPipe { - t.Fatalf("dialConn.Write() = _, <nil>; want _, <non-nil>") - } - - // Read from both sides; reads on lisConn should work, but dialConn should - // fail. - buf := make([]byte, 6) - if _, err := dialConn.Read(buf); err != io.ErrClosedPipe { - t.Fatalf("dialConn.Read(buf) = %v, %v; want _, io.ErrClosedPipe", n, err) - } - n, err = lisConn.Read(buf) - if n != 5 || err != nil { - t.Fatalf("lisConn.Read(buf) = %v, %v; want 5, <nil>", n, err) - } -} - -func TestListener(t *testing.T) { - l := Listen(7) - var s net.Conn - var serr error - done := make(chan struct{}) - go func() { - s, serr = l.Accept() - close(done) - }() - c, cerr := l.Dial() - <-done - if cerr != nil || serr != nil { - t.Fatalf("cerr = %v, serr = %v; want nil, nil", cerr, serr) - } - if err := testRW(c, s); err != nil { - t.Fatalf(err.Error()) - } - if err := testRW(s, c); err != nil { - t.Fatalf(err.Error()) - } -} - -func TestCloseWhileDialing(t *testing.T) { - l := Listen(7) - var c net.Conn - var err error - done := make(chan struct{}) - go func() { - c, err = l.Dial() - close(done) - }() - l.Close() - <-done - if c != nil || err != errClosed { - t.Fatalf("c, err = %v, %v; want nil, %v", c, err, errClosed) - } -} - -func TestCloseWhileAccepting(t *testing.T) { - l := Listen(7) - var c net.Conn - var err error - done := make(chan struct{}) - go func() { - c, err = l.Accept() - close(done) - }() - l.Close() - <-done - if c != nil || err != errClosed { - t.Fatalf("c, err = %v, %v; want nil, %v", c, err, errClosed) - } -} diff --git a/vendor/google.golang.org/grpc/test/codec_perf/perf.pb.go b/vendor/google.golang.org/grpc/test/codec_perf/perf.pb.go deleted file mode 100644 index fb6fc5d9..00000000 --- a/vendor/google.golang.org/grpc/test/codec_perf/perf.pb.go +++ /dev/null @@ -1,62 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: codec_perf/perf.proto - -/* -Package codec_perf is a generated protocol buffer package. - -It is generated from these files: - codec_perf/perf.proto - -It has these top-level messages: - Buffer -*/ -package codec_perf - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// Buffer is a message that contains a body of bytes that is used to exercise -// encoding and decoding overheads. -type Buffer struct { - Body []byte `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"` -} - -func (m *Buffer) Reset() { *m = Buffer{} } -func (m *Buffer) String() string { return proto.CompactTextString(m) } -func (*Buffer) ProtoMessage() {} -func (*Buffer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Buffer) GetBody() []byte { - if m != nil { - return m.Body - } - return nil -} - -func init() { - proto.RegisterType((*Buffer)(nil), "codec.perf.Buffer") -} - -func init() { proto.RegisterFile("codec_perf/perf.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 83 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0xce, 0x4f, 0x49, - 0x4d, 0x8e, 0x2f, 0x48, 0x2d, 0x4a, 0xd3, 0x07, 0x11, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, - 0x5c, 0x60, 0x61, 0x3d, 0x90, 0x88, 0x92, 0x0c, 0x17, 0x9b, 0x53, 0x69, 0x5a, 0x5a, 0x6a, 0x91, - 0x90, 0x10, 0x17, 0x4b, 0x52, 0x7e, 0x4a, 0xa5, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x4f, 0x10, 0x98, - 0x9d, 0xc4, 0x06, 0xd6, 0x60, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x5f, 0x4f, 0x3c, 0x49, - 0x00, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/test/codec_perf/perf.proto b/vendor/google.golang.org/grpc/test/codec_perf/perf.proto deleted file mode 100644 index 594c6f01..00000000 --- a/vendor/google.golang.org/grpc/test/codec_perf/perf.proto +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Messages used for performance tests that may not reference grpc directly for -// reasons of import cycles. -syntax = "proto3"; - -package codec.perf; - -// Buffer is a message that contains a body of bytes that is used to exercise -// encoding and decoding overheads. -message Buffer { - bytes body = 1; -} diff --git a/vendor/google.golang.org/grpc/test/end2end_test.go b/vendor/google.golang.org/grpc/test/end2end_test.go deleted file mode 100644 index 6a583182..00000000 --- a/vendor/google.golang.org/grpc/test/end2end_test.go +++ /dev/null @@ -1,6042 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc --go_out=plugins=grpc:. codec_perf/perf.proto -//go:generate protoc --go_out=plugins=grpc:. grpc_testing/test.proto - -package test - -import ( - "bytes" - "crypto/tls" - "errors" - "flag" - "fmt" - "io" - "math" - "net" - "os" - "reflect" - "runtime" - "strings" - "sync" - "sync/atomic" - "syscall" - "testing" - "time" - - "github.com/golang/protobuf/proto" - anypb "github.com/golang/protobuf/ptypes/any" - "golang.org/x/net/context" - "golang.org/x/net/http2" - spb "google.golang.org/genproto/googleapis/rpc/status" - "google.golang.org/grpc" - "google.golang.org/grpc/balancer/roundrobin" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/connectivity" - "google.golang.org/grpc/credentials" - _ "google.golang.org/grpc/encoding/gzip" - _ "google.golang.org/grpc/grpclog/glogger" - "google.golang.org/grpc/health" - healthpb "google.golang.org/grpc/health/grpc_health_v1" - "google.golang.org/grpc/internal" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/peer" - "google.golang.org/grpc/resolver" - "google.golang.org/grpc/resolver/manual" - _ "google.golang.org/grpc/resolver/passthrough" - "google.golang.org/grpc/stats" - "google.golang.org/grpc/status" - "google.golang.org/grpc/tap" - testpb "google.golang.org/grpc/test/grpc_testing" - "google.golang.org/grpc/test/leakcheck" - "google.golang.org/grpc/testdata" -) - -var ( - // For headers: - testMetadata = metadata.MD{ - "key1": []string{"value1"}, - "key2": []string{"value2"}, - "key3-bin": []string{"binvalue1", string([]byte{1, 2, 3})}, - } - testMetadata2 = metadata.MD{ - "key1": []string{"value12"}, - "key2": []string{"value22"}, - } - // For trailers: - testTrailerMetadata = metadata.MD{ - "tkey1": []string{"trailerValue1"}, - "tkey2": []string{"trailerValue2"}, - "tkey3-bin": []string{"trailerbinvalue1", string([]byte{3, 2, 1})}, - } - testTrailerMetadata2 = metadata.MD{ - "tkey1": []string{"trailerValue12"}, - "tkey2": []string{"trailerValue22"}, - } - // capital "Key" is illegal in HTTP/2. - malformedHTTP2Metadata = metadata.MD{ - "Key": []string{"foo"}, - } - testAppUA = "myApp1/1.0 myApp2/0.9" - failAppUA = "fail-this-RPC" - detailedError = status.ErrorProto(&spb.Status{ - Code: int32(codes.DataLoss), - Message: "error for testing: " + failAppUA, - Details: []*anypb.Any{{ - TypeUrl: "url", - Value: []byte{6, 0, 0, 6, 1, 3}, - }}, - }) -) - -var raceMode bool // set by race.go in race mode - -type testServer struct { - security string // indicate the authentication protocol used by this server. - earlyFail bool // whether to error out the execution of a service handler prematurely. - setAndSendHeader bool // whether to call setHeader and sendHeader. - setHeaderOnly bool // whether to only call setHeader, not sendHeader. - multipleSetTrailer bool // whether to call setTrailer multiple times. - unaryCallSleepTime time.Duration -} - -func (s *testServer) EmptyCall(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - if md, ok := metadata.FromIncomingContext(ctx); ok { - // For testing purpose, returns an error if user-agent is failAppUA. - // To test that client gets the correct error. - if ua, ok := md["user-agent"]; !ok || strings.HasPrefix(ua[0], failAppUA) { - return nil, detailedError - } - var str []string - for _, entry := range md["user-agent"] { - str = append(str, "ua", entry) - } - grpc.SendHeader(ctx, metadata.Pairs(str...)) - } - return new(testpb.Empty), nil -} - -func newPayload(t testpb.PayloadType, size int32) (*testpb.Payload, error) { - if size < 0 { - return nil, fmt.Errorf("Requested a response with invalid length %d", size) - } - body := make([]byte, size) - switch t { - case testpb.PayloadType_COMPRESSABLE: - case testpb.PayloadType_UNCOMPRESSABLE: - return nil, fmt.Errorf("PayloadType UNCOMPRESSABLE is not supported") - default: - return nil, fmt.Errorf("Unsupported payload type: %d", t) - } - return &testpb.Payload{ - Type: t, - Body: body, - }, nil -} - -func (s *testServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - md, ok := metadata.FromIncomingContext(ctx) - if ok { - if _, exists := md[":authority"]; !exists { - return nil, status.Errorf(codes.DataLoss, "expected an :authority metadata: %v", md) - } - if s.setAndSendHeader { - if err := grpc.SetHeader(ctx, md); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SetHeader(_, %v) = %v, want <nil>", md, err) - } - if err := grpc.SendHeader(ctx, testMetadata2); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SendHeader(_, %v) = %v, want <nil>", testMetadata2, err) - } - } else if s.setHeaderOnly { - if err := grpc.SetHeader(ctx, md); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SetHeader(_, %v) = %v, want <nil>", md, err) - } - if err := grpc.SetHeader(ctx, testMetadata2); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SetHeader(_, %v) = %v, want <nil>", testMetadata2, err) - } - } else { - if err := grpc.SendHeader(ctx, md); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SendHeader(_, %v) = %v, want <nil>", md, err) - } - } - if err := grpc.SetTrailer(ctx, testTrailerMetadata); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SetTrailer(_, %v) = %v, want <nil>", testTrailerMetadata, err) - } - if s.multipleSetTrailer { - if err := grpc.SetTrailer(ctx, testTrailerMetadata2); err != nil { - return nil, status.Errorf(status.Code(err), "grpc.SetTrailer(_, %v) = %v, want <nil>", testTrailerMetadata2, err) - } - } - } - pr, ok := peer.FromContext(ctx) - if !ok { - return nil, status.Error(codes.DataLoss, "failed to get peer from ctx") - } - if pr.Addr == net.Addr(nil) { - return nil, status.Error(codes.DataLoss, "failed to get peer address") - } - if s.security != "" { - // Check Auth info - var authType, serverName string - switch info := pr.AuthInfo.(type) { - case credentials.TLSInfo: - authType = info.AuthType() - serverName = info.State.ServerName - default: - return nil, status.Error(codes.Unauthenticated, "Unknown AuthInfo type") - } - if authType != s.security { - return nil, status.Errorf(codes.Unauthenticated, "Wrong auth type: got %q, want %q", authType, s.security) - } - if serverName != "x.test.youtube.com" { - return nil, status.Errorf(codes.Unauthenticated, "Unknown server name %q", serverName) - } - } - // Simulate some service delay. - time.Sleep(s.unaryCallSleepTime) - - payload, err := newPayload(in.GetResponseType(), in.GetResponseSize()) - if err != nil { - return nil, err - } - - return &testpb.SimpleResponse{ - Payload: payload, - }, nil -} - -func (s *testServer) StreamingOutputCall(args *testpb.StreamingOutputCallRequest, stream testpb.TestService_StreamingOutputCallServer) error { - if md, ok := metadata.FromIncomingContext(stream.Context()); ok { - if _, exists := md[":authority"]; !exists { - return status.Errorf(codes.DataLoss, "expected an :authority metadata: %v", md) - } - // For testing purpose, returns an error if user-agent is failAppUA. - // To test that client gets the correct error. - if ua, ok := md["user-agent"]; !ok || strings.HasPrefix(ua[0], failAppUA) { - return status.Error(codes.DataLoss, "error for testing: "+failAppUA) - } - } - cs := args.GetResponseParameters() - for _, c := range cs { - if us := c.GetIntervalUs(); us > 0 { - time.Sleep(time.Duration(us) * time.Microsecond) - } - - payload, err := newPayload(args.GetResponseType(), c.GetSize()) - if err != nil { - return err - } - - if err := stream.Send(&testpb.StreamingOutputCallResponse{ - Payload: payload, - }); err != nil { - return err - } - } - return nil -} - -func (s *testServer) StreamingInputCall(stream testpb.TestService_StreamingInputCallServer) error { - var sum int - for { - in, err := stream.Recv() - if err == io.EOF { - return stream.SendAndClose(&testpb.StreamingInputCallResponse{ - AggregatedPayloadSize: int32(sum), - }) - } - if err != nil { - return err - } - p := in.GetPayload().GetBody() - sum += len(p) - if s.earlyFail { - return status.Error(codes.NotFound, "not found") - } - } -} - -func (s *testServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallServer) error { - md, ok := metadata.FromIncomingContext(stream.Context()) - if ok { - if s.setAndSendHeader { - if err := stream.SetHeader(md); err != nil { - return status.Errorf(status.Code(err), "%v.SetHeader(_, %v) = %v, want <nil>", stream, md, err) - } - if err := stream.SendHeader(testMetadata2); err != nil { - return status.Errorf(status.Code(err), "%v.SendHeader(_, %v) = %v, want <nil>", stream, testMetadata2, err) - } - } else if s.setHeaderOnly { - if err := stream.SetHeader(md); err != nil { - return status.Errorf(status.Code(err), "%v.SetHeader(_, %v) = %v, want <nil>", stream, md, err) - } - if err := stream.SetHeader(testMetadata2); err != nil { - return status.Errorf(status.Code(err), "%v.SetHeader(_, %v) = %v, want <nil>", stream, testMetadata2, err) - } - } else { - if err := stream.SendHeader(md); err != nil { - return status.Errorf(status.Code(err), "%v.SendHeader(%v) = %v, want %v", stream, md, err, nil) - } - } - stream.SetTrailer(testTrailerMetadata) - if s.multipleSetTrailer { - stream.SetTrailer(testTrailerMetadata2) - } - } - for { - in, err := stream.Recv() - if err == io.EOF { - // read done. - return nil - } - if err != nil { - // to facilitate testSvrWriteStatusEarlyWrite - if status.Code(err) == codes.ResourceExhausted { - return status.Errorf(codes.Internal, "fake error for test testSvrWriteStatusEarlyWrite. true error: %s", err.Error()) - } - return err - } - cs := in.GetResponseParameters() - for _, c := range cs { - if us := c.GetIntervalUs(); us > 0 { - time.Sleep(time.Duration(us) * time.Microsecond) - } - - payload, err := newPayload(in.GetResponseType(), c.GetSize()) - if err != nil { - return err - } - - if err := stream.Send(&testpb.StreamingOutputCallResponse{ - Payload: payload, - }); err != nil { - // to facilitate testSvrWriteStatusEarlyWrite - if status.Code(err) == codes.ResourceExhausted { - return status.Errorf(codes.Internal, "fake error for test testSvrWriteStatusEarlyWrite. true error: %s", err.Error()) - } - return err - } - } - } -} - -func (s *testServer) HalfDuplexCall(stream testpb.TestService_HalfDuplexCallServer) error { - var msgBuf []*testpb.StreamingOutputCallRequest - for { - in, err := stream.Recv() - if err == io.EOF { - // read done. - break - } - if err != nil { - return err - } - msgBuf = append(msgBuf, in) - } - for _, m := range msgBuf { - cs := m.GetResponseParameters() - for _, c := range cs { - if us := c.GetIntervalUs(); us > 0 { - time.Sleep(time.Duration(us) * time.Microsecond) - } - - payload, err := newPayload(m.GetResponseType(), c.GetSize()) - if err != nil { - return err - } - - if err := stream.Send(&testpb.StreamingOutputCallResponse{ - Payload: payload, - }); err != nil { - return err - } - } - } - return nil -} - -type env struct { - name string - network string // The type of network such as tcp, unix, etc. - security string // The security protocol such as TLS, SSH, etc. - httpHandler bool // whether to use the http.Handler ServerTransport; requires TLS - balancer string // One of "round_robin", "pick_first", "v1", or "". - customDialer func(string, string, time.Duration) (net.Conn, error) -} - -func (e env) runnable() bool { - if runtime.GOOS == "windows" && e.network == "unix" { - return false - } - return true -} - -func (e env) dialer(addr string, timeout time.Duration) (net.Conn, error) { - if e.customDialer != nil { - return e.customDialer(e.network, addr, timeout) - } - return net.DialTimeout(e.network, addr, timeout) -} - -var ( - tcpClearEnv = env{name: "tcp-clear-v1-balancer", network: "tcp", balancer: "v1"} - tcpTLSEnv = env{name: "tcp-tls-v1-balancer", network: "tcp", security: "tls", balancer: "v1"} - tcpClearRREnv = env{name: "tcp-clear", network: "tcp", balancer: "round_robin"} - tcpTLSRREnv = env{name: "tcp-tls", network: "tcp", security: "tls", balancer: "round_robin"} - handlerEnv = env{name: "handler-tls", network: "tcp", security: "tls", httpHandler: true, balancer: "round_robin"} - noBalancerEnv = env{name: "no-balancer", network: "tcp", security: "tls"} - allEnv = []env{tcpClearEnv, tcpTLSEnv, tcpClearRREnv, tcpTLSRREnv, handlerEnv, noBalancerEnv} -) - -var onlyEnv = flag.String("only_env", "", "If non-empty, one of 'tcp-clear', 'tcp-tls', 'unix-clear', 'unix-tls', or 'handler-tls' to only run the tests for that environment. Empty means all.") - -func listTestEnv() (envs []env) { - if *onlyEnv != "" { - for _, e := range allEnv { - if e.name == *onlyEnv { - if !e.runnable() { - panic(fmt.Sprintf("--only_env environment %q does not run on %s", *onlyEnv, runtime.GOOS)) - } - return []env{e} - } - } - panic(fmt.Sprintf("invalid --only_env value %q", *onlyEnv)) - } - for _, e := range allEnv { - if e.runnable() { - envs = append(envs, e) - } - } - return envs -} - -// test is an end-to-end test. It should be created with the newTest -// func, modified as needed, and then started with its startServer method. -// It should be cleaned up with the tearDown method. -type test struct { - t *testing.T - e env - - ctx context.Context // valid for life of test, before tearDown - cancel context.CancelFunc - - // Configurable knobs, after newTest returns: - testServer testpb.TestServiceServer // nil means none - healthServer *health.Server // nil means disabled - maxStream uint32 - tapHandle tap.ServerInHandle - maxMsgSize *int - maxClientReceiveMsgSize *int - maxClientSendMsgSize *int - maxServerReceiveMsgSize *int - maxServerSendMsgSize *int - userAgent string - // clientCompression and serverCompression are set to test the deprecated API - // WithCompressor and WithDecompressor. - clientCompression bool - serverCompression bool - // clientUseCompression is set to test the new compressor registration API UseCompressor. - clientUseCompression bool - // clientNopCompression is set to create a compressor whose type is not supported. - clientNopCompression bool - unaryClientInt grpc.UnaryClientInterceptor - streamClientInt grpc.StreamClientInterceptor - unaryServerInt grpc.UnaryServerInterceptor - streamServerInt grpc.StreamServerInterceptor - unknownHandler grpc.StreamHandler - sc <-chan grpc.ServiceConfig - customCodec grpc.Codec - serverInitialWindowSize int32 - serverInitialConnWindowSize int32 - clientInitialWindowSize int32 - clientInitialConnWindowSize int32 - perRPCCreds credentials.PerRPCCredentials - customDialOptions []grpc.DialOption - resolverScheme string - - // All test dialing is blocking by default. Set this to true if dial - // should be non-blocking. - nonBlockingDial bool - - // srv and srvAddr are set once startServer is called. - srv *grpc.Server - srvAddr string - - cc *grpc.ClientConn // nil until requested via clientConn - restoreLogs func() // nil unless declareLogNoise is used -} - -func (te *test) tearDown() { - if te.cancel != nil { - te.cancel() - te.cancel = nil - } - if te.cc != nil { - te.cc.Close() - te.cc = nil - } - if te.restoreLogs != nil { - te.restoreLogs() - te.restoreLogs = nil - } - if te.srv != nil { - te.srv.Stop() - } -} - -// newTest returns a new test using the provided testing.T and -// environment. It is returned with default values. Tests should -// modify it before calling its startServer and clientConn methods. -func newTest(t *testing.T, e env) *test { - te := &test{ - t: t, - e: e, - maxStream: math.MaxUint32, - } - te.ctx, te.cancel = context.WithCancel(context.Background()) - return te -} - -// startServer starts a gRPC server listening. Callers should defer a -// call to te.tearDown to clean up. -func (te *test) startServer(ts testpb.TestServiceServer) { - te.testServer = ts - te.t.Logf("Running test in %s environment...", te.e.name) - sopts := []grpc.ServerOption{grpc.MaxConcurrentStreams(te.maxStream)} - if te.maxMsgSize != nil { - sopts = append(sopts, grpc.MaxMsgSize(*te.maxMsgSize)) - } - if te.maxServerReceiveMsgSize != nil { - sopts = append(sopts, grpc.MaxRecvMsgSize(*te.maxServerReceiveMsgSize)) - } - if te.maxServerSendMsgSize != nil { - sopts = append(sopts, grpc.MaxSendMsgSize(*te.maxServerSendMsgSize)) - } - if te.tapHandle != nil { - sopts = append(sopts, grpc.InTapHandle(te.tapHandle)) - } - if te.serverCompression { - sopts = append(sopts, - grpc.RPCCompressor(grpc.NewGZIPCompressor()), - grpc.RPCDecompressor(grpc.NewGZIPDecompressor()), - ) - } - if te.unaryServerInt != nil { - sopts = append(sopts, grpc.UnaryInterceptor(te.unaryServerInt)) - } - if te.streamServerInt != nil { - sopts = append(sopts, grpc.StreamInterceptor(te.streamServerInt)) - } - if te.unknownHandler != nil { - sopts = append(sopts, grpc.UnknownServiceHandler(te.unknownHandler)) - } - if te.serverInitialWindowSize > 0 { - sopts = append(sopts, grpc.InitialWindowSize(te.serverInitialWindowSize)) - } - if te.serverInitialConnWindowSize > 0 { - sopts = append(sopts, grpc.InitialConnWindowSize(te.serverInitialConnWindowSize)) - } - la := "localhost:0" - switch te.e.network { - case "unix": - la = "/tmp/testsock" + fmt.Sprintf("%d", time.Now().UnixNano()) - syscall.Unlink(la) - } - lis, err := net.Listen(te.e.network, la) - if err != nil { - te.t.Fatalf("Failed to listen: %v", err) - } - switch te.e.security { - case "tls": - creds, err := credentials.NewServerTLSFromFile(testdata.Path("server1.pem"), testdata.Path("server1.key")) - if err != nil { - te.t.Fatalf("Failed to generate credentials %v", err) - } - sopts = append(sopts, grpc.Creds(creds)) - case "clientTimeoutCreds": - sopts = append(sopts, grpc.Creds(&clientTimeoutCreds{})) - } - if te.customCodec != nil { - sopts = append(sopts, grpc.CustomCodec(te.customCodec)) - } - s := grpc.NewServer(sopts...) - te.srv = s - if te.e.httpHandler { - internal.TestingUseHandlerImpl(s) - } - if te.healthServer != nil { - healthpb.RegisterHealthServer(s, te.healthServer) - } - if te.testServer != nil { - testpb.RegisterTestServiceServer(s, te.testServer) - } - addr := la - switch te.e.network { - case "unix": - default: - _, port, err := net.SplitHostPort(lis.Addr().String()) - if err != nil { - te.t.Fatalf("Failed to parse listener address: %v", err) - } - addr = "localhost:" + port - } - - go s.Serve(lis) - te.srvAddr = addr -} - -type nopCompressor struct { - grpc.Compressor -} - -// NewNopCompressor creates a compressor to test the case that type is not supported. -func NewNopCompressor() grpc.Compressor { - return &nopCompressor{grpc.NewGZIPCompressor()} -} - -func (c *nopCompressor) Type() string { - return "nop" -} - -type nopDecompressor struct { - grpc.Decompressor -} - -// NewNopDecompressor creates a decompressor to test the case that type is not supported. -func NewNopDecompressor() grpc.Decompressor { - return &nopDecompressor{grpc.NewGZIPDecompressor()} -} - -func (d *nopDecompressor) Type() string { - return "nop" -} - -func (te *test) clientConn() *grpc.ClientConn { - if te.cc != nil { - return te.cc - } - opts := []grpc.DialOption{ - grpc.WithDialer(te.e.dialer), - grpc.WithUserAgent(te.userAgent), - } - - if te.sc != nil { - opts = append(opts, grpc.WithServiceConfig(te.sc)) - } - - if te.clientCompression { - opts = append(opts, - grpc.WithCompressor(grpc.NewGZIPCompressor()), - grpc.WithDecompressor(grpc.NewGZIPDecompressor()), - ) - } - if te.clientUseCompression { - opts = append(opts, grpc.WithDefaultCallOptions(grpc.UseCompressor("gzip"))) - } - if te.clientNopCompression { - opts = append(opts, - grpc.WithCompressor(NewNopCompressor()), - grpc.WithDecompressor(NewNopDecompressor()), - ) - } - if te.unaryClientInt != nil { - opts = append(opts, grpc.WithUnaryInterceptor(te.unaryClientInt)) - } - if te.streamClientInt != nil { - opts = append(opts, grpc.WithStreamInterceptor(te.streamClientInt)) - } - if te.maxMsgSize != nil { - opts = append(opts, grpc.WithMaxMsgSize(*te.maxMsgSize)) - } - if te.maxClientReceiveMsgSize != nil { - opts = append(opts, grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(*te.maxClientReceiveMsgSize))) - } - if te.maxClientSendMsgSize != nil { - opts = append(opts, grpc.WithDefaultCallOptions(grpc.MaxCallSendMsgSize(*te.maxClientSendMsgSize))) - } - switch te.e.security { - case "tls": - creds, err := credentials.NewClientTLSFromFile(testdata.Path("ca.pem"), "x.test.youtube.com") - if err != nil { - te.t.Fatalf("Failed to load credentials: %v", err) - } - opts = append(opts, grpc.WithTransportCredentials(creds)) - case "clientTimeoutCreds": - opts = append(opts, grpc.WithTransportCredentials(&clientTimeoutCreds{})) - default: - opts = append(opts, grpc.WithInsecure()) - } - // TODO(bar) switch balancer case "pick_first". - var scheme string - if te.resolverScheme == "" { - scheme = "passthrough:///" - } else { - scheme = te.resolverScheme + ":///" - } - switch te.e.balancer { - case "v1": - opts = append(opts, grpc.WithBalancer(grpc.RoundRobin(nil))) - case "round_robin": - opts = append(opts, grpc.WithBalancerName(roundrobin.Name)) - } - if te.clientInitialWindowSize > 0 { - opts = append(opts, grpc.WithInitialWindowSize(te.clientInitialWindowSize)) - } - if te.clientInitialConnWindowSize > 0 { - opts = append(opts, grpc.WithInitialConnWindowSize(te.clientInitialConnWindowSize)) - } - if te.perRPCCreds != nil { - opts = append(opts, grpc.WithPerRPCCredentials(te.perRPCCreds)) - } - if te.customCodec != nil { - opts = append(opts, grpc.WithDefaultCallOptions(grpc.CallCustomCodec(te.customCodec))) - } - if !te.nonBlockingDial && te.srvAddr != "" { - // Only do a blocking dial if server is up. - opts = append(opts, grpc.WithBlock()) - } - if te.srvAddr == "" { - te.srvAddr = "client.side.only.test" - } - opts = append(opts, te.customDialOptions...) - var err error - te.cc, err = grpc.Dial(scheme+te.srvAddr, opts...) - if err != nil { - te.t.Fatalf("Dial(%q) = %v", scheme+te.srvAddr, err) - } - return te.cc -} - -func (te *test) declareLogNoise(phrases ...string) { - te.restoreLogs = declareLogNoise(te.t, phrases...) -} - -func (te *test) withServerTester(fn func(st *serverTester)) { - c, err := te.e.dialer(te.srvAddr, 10*time.Second) - if err != nil { - te.t.Fatal(err) - } - defer c.Close() - if te.e.security == "tls" { - c = tls.Client(c, &tls.Config{ - InsecureSkipVerify: true, - NextProtos: []string{http2.NextProtoTLS}, - }) - } - st := newServerTesterFromConn(te.t, c) - st.greet() - fn(st) -} - -type lazyConn struct { - net.Conn - beLazy int32 -} - -func (l *lazyConn) Write(b []byte) (int, error) { - if atomic.LoadInt32(&(l.beLazy)) == 1 { - // The sleep duration here needs to less than the leakCheck deadline. - time.Sleep(time.Second) - } - return l.Conn.Write(b) -} - -func TestContextDeadlineNotIgnored(t *testing.T) { - defer leakcheck.Check(t) - e := noBalancerEnv - var lc *lazyConn - e.customDialer = func(network, addr string, timeout time.Duration) (net.Conn, error) { - conn, err := net.DialTimeout(network, addr, timeout) - if err != nil { - return nil, err - } - lc = &lazyConn{Conn: conn} - return lc, nil - } - - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, <nil>", err) - } - atomic.StoreInt32(&(lc.beLazy), 1) - ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) - defer cancel() - t1 := time.Now() - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, context.DeadlineExceeded", err) - } - if time.Since(t1) > 2*time.Second { - t.Fatalf("TestService/EmptyCall(_, _) ran over the deadline") - } -} - -func TestTimeoutOnDeadServer(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testTimeoutOnDeadServer(t, e) - } -} - -func testTimeoutOnDeadServer(t *testing.T, e env) { - te := newTest(t, e) - te.customDialOptions = []grpc.DialOption{grpc.WithWaitForHandshake()} - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - ) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, <nil>", err) - } - te.srv.Stop() - - // Wait for the client to notice the connection is gone. - ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) - state := cc.GetState() - for ; state == connectivity.Ready && cc.WaitForStateChange(ctx, state); state = cc.GetState() { - } - cancel() - if state == connectivity.Ready { - t.Fatalf("Timed out waiting for non-ready state") - } - ctx, cancel = context.WithTimeout(context.Background(), time.Millisecond) - _, err := tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)) - cancel() - if e.balancer != "" && status.Code(err) != codes.DeadlineExceeded { - // If e.balancer == nil, the ac will stop reconnecting because the dialer returns non-temp error, - // the error will be an internal error. - t.Fatalf("TestService/EmptyCall(%v, _) = _, %v, want _, error code: %s", ctx, err, codes.DeadlineExceeded) - } - awaitNewConnLogOutput() -} - -func TestServerGracefulStopIdempotent(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testServerGracefulStopIdempotent(t, e) - } -} - -func testServerGracefulStopIdempotent(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - for i := 0; i < 3; i++ { - te.srv.GracefulStop() - } -} - -func TestServerGoAway(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testServerGoAway(t, e) - } -} - -func testServerGoAway(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - // Finish an RPC to make sure the connection is good. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, <nil>", err) - } - ch := make(chan struct{}) - go func() { - te.srv.GracefulStop() - close(ch) - }() - // Loop until the server side GoAway signal is propagated to the client. - for { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}); err != nil && status.Code(err) != codes.DeadlineExceeded { - cancel() - break - } - cancel() - } - // A new RPC should fail. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.Unavailable && status.Code(err) != codes.Internal { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s or %s", err, codes.Unavailable, codes.Internal) - } - <-ch - awaitNewConnLogOutput() -} - -func TestServerGoAwayPendingRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testServerGoAwayPendingRPC(t, e) - } -} - -func testServerGoAwayPendingRPC(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - ) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - stream, err := tc.FullDuplexCall(ctx, grpc.FailFast(false)) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - // Finish an RPC to make sure the connection is good. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("%v.EmptyCall(_, _, _) = _, %v, want _, <nil>", tc, err) - } - ch := make(chan struct{}) - go func() { - te.srv.GracefulStop() - close(ch) - }() - // Loop until the server side GoAway signal is propagated to the client. - abort := false - time.AfterFunc(time.Second, func() { abort = true }) - for !abort { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)); err != nil { - cancel() - break - } - cancel() - } - // Don't bother stopping the timer; it will have no effect past here. - if abort { - t.Fatalf("GoAway never received by client") - } - respParam := []*testpb.ResponseParameters{{Size: 1}} - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(100)) - if err != nil { - t.Fatal(err) - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - // The existing RPC should be still good to proceed. - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - if _, err := stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = _, %v, want _, <nil>", stream, err) - } - // The RPC will run until canceled. - cancel() - <-ch - awaitNewConnLogOutput() -} - -func TestServerMultipleGoAwayPendingRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testServerMultipleGoAwayPendingRPC(t, e) - } -} - -func testServerMultipleGoAwayPendingRPC(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - ) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - ctx, cancel := context.WithCancel(context.Background()) - stream, err := tc.FullDuplexCall(ctx, grpc.FailFast(false)) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - // Finish an RPC to make sure the connection is good. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("%v.EmptyCall(_, _, _) = _, %v, want _, <nil>", tc, err) - } - ch1 := make(chan struct{}) - go func() { - te.srv.GracefulStop() - close(ch1) - }() - ch2 := make(chan struct{}) - go func() { - te.srv.GracefulStop() - close(ch2) - }() - // Loop until the server side GoAway signal is propagated to the client. - for { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)); err != nil { - cancel() - break - } - cancel() - } - select { - case <-ch1: - t.Fatal("GracefulStop() terminated early") - case <-ch2: - t.Fatal("GracefulStop() terminated early") - default: - } - respParam := []*testpb.ResponseParameters{ - { - Size: 1, - }, - } - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(100)) - if err != nil { - t.Fatal(err) - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - // The existing RPC should be still good to proceed. - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - if _, err := stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = _, %v, want _, <nil>", stream, err) - } - if err := stream.CloseSend(); err != nil { - t.Fatalf("%v.CloseSend() = %v, want <nil>", stream, err) - } - <-ch1 - <-ch2 - cancel() - awaitNewConnLogOutput() -} - -func TestConcurrentClientConnCloseAndServerGoAway(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testConcurrentClientConnCloseAndServerGoAway(t, e) - } -} - -func testConcurrentClientConnCloseAndServerGoAway(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - ) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("%v.EmptyCall(_, _, _) = _, %v, want _, <nil>", tc, err) - } - ch := make(chan struct{}) - // Close ClientConn and Server concurrently. - go func() { - te.srv.GracefulStop() - close(ch) - }() - go func() { - cc.Close() - }() - <-ch -} - -func TestConcurrentServerStopAndGoAway(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testConcurrentServerStopAndGoAway(t, e) - } -} - -func testConcurrentServerStopAndGoAway(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - ) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - stream, err := tc.FullDuplexCall(context.Background(), grpc.FailFast(false)) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - // Finish an RPC to make sure the connection is good. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - t.Fatalf("%v.EmptyCall(_, _, _) = _, %v, want _, <nil>", tc, err) - } - ch := make(chan struct{}) - go func() { - te.srv.GracefulStop() - close(ch) - }() - // Loop until the server side GoAway signal is propagated to the client. - for { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)); err != nil { - cancel() - break - } - cancel() - } - // Stop the server and close all the connections. - te.srv.Stop() - respParam := []*testpb.ResponseParameters{ - { - Size: 1, - }, - } - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(100)) - if err != nil { - t.Fatal(err) - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - sendStart := time.Now() - for { - if err := stream.Send(req); err == io.EOF { - // stream.Send should eventually send io.EOF - break - } else if err != nil { - // Send should never return a transport-level error. - t.Fatalf("stream.Send(%v) = %v; want <nil or io.EOF>", req, err) - } - if time.Since(sendStart) > 2*time.Second { - t.Fatalf("stream.Send(_) did not return io.EOF after 2s") - } - time.Sleep(time.Millisecond) - } - if _, err := stream.Recv(); err == nil || err == io.EOF { - t.Fatalf("%v.Recv() = _, %v, want _, <non-nil, non-EOF>", stream, err) - } - <-ch - awaitNewConnLogOutput() -} - -func TestClientConnCloseAfterGoAwayWithActiveStream(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testClientConnCloseAfterGoAwayWithActiveStream(t, e) - } -} - -func testClientConnCloseAfterGoAwayWithActiveStream(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - if _, err := tc.FullDuplexCall(ctx); err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want _, <nil>", tc, err) - } - done := make(chan struct{}) - go func() { - te.srv.GracefulStop() - close(done) - }() - time.Sleep(50 * time.Millisecond) - cc.Close() - timeout := time.NewTimer(time.Second) - select { - case <-done: - case <-timeout.C: - t.Fatalf("Test timed-out.") - } -} - -func TestFailFast(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testFailFast(t, e) - } -} - -func testFailFast(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - ) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}); err != nil { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, <nil>", err) - } - // Stop the server and tear down all the exisiting connections. - te.srv.Stop() - // Loop until the server teardown is propagated to the client. - for { - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - _, err := tc.EmptyCall(ctx, &testpb.Empty{}) - cancel() - if status.Code(err) == codes.Unavailable { - break - } - t.Logf("%v.EmptyCall(_, _) = _, %v", tc, err) - time.Sleep(10 * time.Millisecond) - } - // The client keeps reconnecting and ongoing fail-fast RPCs should fail with code.Unavailable. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.Unavailable { - t.Fatalf("TestService/EmptyCall(_, _, _) = _, %v, want _, error code: %s", err, codes.Unavailable) - } - if _, err := tc.StreamingInputCall(context.Background()); status.Code(err) != codes.Unavailable { - t.Fatalf("TestService/StreamingInputCall(_) = _, %v, want _, error code: %s", err, codes.Unavailable) - } - - awaitNewConnLogOutput() -} - -func testServiceConfigSetup(t *testing.T, e env) *test { - te := newTest(t, e) - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - "Failed to dial : context canceled; please retry.", - ) - return te -} - -func newBool(b bool) (a *bool) { - return &b -} - -func newInt(b int) (a *int) { - return &b -} - -func newDuration(b time.Duration) (a *time.Duration) { - a = new(time.Duration) - *a = b - return -} - -func TestGetMethodConfig(t *testing.T) { - te := testServiceConfigSetup(t, tcpClearRREnv) - defer te.tearDown() - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - te.resolverScheme = r.Scheme() - cc := te.clientConn() - r.NewAddress([]resolver.Address{{Addr: te.srvAddr}}) - r.NewServiceConfig(`{ - "methodConfig": [ - { - "name": [ - { - "service": "grpc.testing.TestService", - "method": "EmptyCall" - } - ], - "waitForReady": true, - "timeout": ".001s" - }, - { - "name": [ - { - "service": "grpc.testing.TestService" - } - ], - "waitForReady": false - } - ] -}`) - - tc := testpb.NewTestServiceClient(cc) - - // Make sure service config has been processed by grpc. - for { - if cc.GetMethodConfig("/grpc.testing.TestService/EmptyCall").WaitForReady != nil { - break - } - time.Sleep(time.Millisecond) - } - - // The following RPCs are expected to become non-fail-fast ones with 1ms deadline. - var err error - if _, err = tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - - r.NewServiceConfig(`{ - "methodConfig": [ - { - "name": [ - { - "service": "grpc.testing.TestService", - "method": "UnaryCall" - } - ], - "waitForReady": true, - "timeout": ".001s" - }, - { - "name": [ - { - "service": "grpc.testing.TestService" - } - ], - "waitForReady": false - } - ] -}`) - - // Make sure service config has been processed by grpc. - for { - if mc := cc.GetMethodConfig("/grpc.testing.TestService/EmptyCall"); mc.WaitForReady != nil && !*mc.WaitForReady { - break - } - time.Sleep(time.Millisecond) - } - // The following RPCs are expected to become fail-fast. - if _, err = tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.Unavailable { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.Unavailable) - } -} - -func TestServiceConfigWaitForReady(t *testing.T) { - te := testServiceConfigSetup(t, tcpClearRREnv) - defer te.tearDown() - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - // Case1: Client API set failfast to be false, and service config set wait_for_ready to be false, Client API should win, and the rpc will wait until deadline exceeds. - te.resolverScheme = r.Scheme() - cc := te.clientConn() - r.NewAddress([]resolver.Address{{Addr: te.srvAddr}}) - r.NewServiceConfig(`{ - "methodConfig": [ - { - "name": [ - { - "service": "grpc.testing.TestService", - "method": "EmptyCall" - }, - { - "service": "grpc.testing.TestService", - "method": "FullDuplexCall" - } - ], - "waitForReady": false, - "timeout": ".001s" - } - ] -}`) - - tc := testpb.NewTestServiceClient(cc) - - // Make sure service config has been processed by grpc. - for { - if cc.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall").WaitForReady != nil { - break - } - time.Sleep(time.Millisecond) - } - - // The following RPCs are expected to become non-fail-fast ones with 1ms deadline. - var err error - if _, err = tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - if _, err := tc.FullDuplexCall(context.Background(), grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want %s", err, codes.DeadlineExceeded) - } - - // Generate a service config update. - // Case2:Client API set failfast to be false, and service config set wait_for_ready to be true, and the rpc will wait until deadline exceeds. - r.NewServiceConfig(`{ - "methodConfig": [ - { - "name": [ - { - "service": "grpc.testing.TestService", - "method": "EmptyCall" - }, - { - "service": "grpc.testing.TestService", - "method": "FullDuplexCall" - } - ], - "waitForReady": true, - "timeout": ".001s" - } - ] -}`) - - // Wait for the new service config to take effect. - for { - if mc := cc.GetMethodConfig("/grpc.testing.TestService/EmptyCall"); mc.WaitForReady != nil && *mc.WaitForReady { - break - } - time.Sleep(time.Millisecond) - } - // The following RPCs are expected to become non-fail-fast ones with 1ms deadline. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - if _, err := tc.FullDuplexCall(context.Background()); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want %s", err, codes.DeadlineExceeded) - } -} - -func TestServiceConfigTimeout(t *testing.T) { - te := testServiceConfigSetup(t, tcpClearRREnv) - defer te.tearDown() - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - // Case1: Client API sets timeout to be 1ns and ServiceConfig sets timeout to be 1hr. Timeout should be 1ns (min of 1ns and 1hr) and the rpc will wait until deadline exceeds. - te.resolverScheme = r.Scheme() - cc := te.clientConn() - r.NewAddress([]resolver.Address{{Addr: te.srvAddr}}) - r.NewServiceConfig(`{ - "methodConfig": [ - { - "name": [ - { - "service": "grpc.testing.TestService", - "method": "EmptyCall" - }, - { - "service": "grpc.testing.TestService", - "method": "FullDuplexCall" - } - ], - "waitForReady": true, - "timeout": "3600s" - } - ] -}`) - - tc := testpb.NewTestServiceClient(cc) - - // Make sure service config has been processed by grpc. - for { - if cc.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall").Timeout != nil { - break - } - time.Sleep(time.Millisecond) - } - - // The following RPCs are expected to become non-fail-fast ones with 1ns deadline. - var err error - ctx, cancel := context.WithTimeout(context.Background(), time.Nanosecond) - if _, err = tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - cancel() - - ctx, cancel = context.WithTimeout(context.Background(), time.Nanosecond) - if _, err = tc.FullDuplexCall(ctx, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want %s", err, codes.DeadlineExceeded) - } - cancel() - - // Generate a service config update. - // Case2: Client API sets timeout to be 1hr and ServiceConfig sets timeout to be 1ns. Timeout should be 1ns (min of 1ns and 1hr) and the rpc will wait until deadline exceeds. - r.NewServiceConfig(`{ - "methodConfig": [ - { - "name": [ - { - "service": "grpc.testing.TestService", - "method": "EmptyCall" - }, - { - "service": "grpc.testing.TestService", - "method": "FullDuplexCall" - } - ], - "waitForReady": true, - "timeout": ".000000001s" - } - ] -}`) - - // Wait for the new service config to take effect. - for { - if mc := cc.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall"); mc.Timeout != nil && *mc.Timeout == time.Nanosecond { - break - } - time.Sleep(time.Millisecond) - } - - ctx, cancel = context.WithTimeout(context.Background(), time.Hour) - if _, err = tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - cancel() - - ctx, cancel = context.WithTimeout(context.Background(), time.Hour) - if _, err = tc.FullDuplexCall(ctx, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want %s", err, codes.DeadlineExceeded) - } - cancel() -} - -func TestServiceConfigMaxMsgSize(t *testing.T) { - e := tcpClearRREnv - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - // Setting up values and objects shared across all test cases. - const smallSize = 1 - const largeSize = 1024 - const extraLargeSize = 2048 - - smallPayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, smallSize) - if err != nil { - t.Fatal(err) - } - largePayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, largeSize) - if err != nil { - t.Fatal(err) - } - extraLargePayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, extraLargeSize) - if err != nil { - t.Fatal(err) - } - - scjs := `{ - "methodConfig": [ - { - "name": [ - { - "service": "grpc.testing.TestService", - "method": "UnaryCall" - }, - { - "service": "grpc.testing.TestService", - "method": "FullDuplexCall" - } - ], - "maxRequestMessageBytes": 2048, - "maxResponseMessageBytes": 2048 - } - ] -}` - - // Case1: sc set maxReqSize to 2048 (send), maxRespSize to 2048 (recv). - te1 := testServiceConfigSetup(t, e) - defer te1.tearDown() - - te1.resolverScheme = r.Scheme() - te1.nonBlockingDial = true - te1.startServer(&testServer{security: e.security}) - cc1 := te1.clientConn() - - r.NewAddress([]resolver.Address{{Addr: te1.srvAddr}}) - r.NewServiceConfig(scjs) - tc := testpb.NewTestServiceClient(cc1) - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(extraLargeSize), - Payload: smallPayload, - } - - for { - if cc1.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall").MaxReqSize != nil { - break - } - time.Sleep(time.Millisecond) - } - - // Test for unary RPC recv. - if _, err = tc.UnaryCall(context.Background(), req, grpc.FailFast(false)); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for unary RPC send. - req.Payload = extraLargePayload - req.ResponseSize = int32(smallSize) - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for streaming RPC recv. - respParam := []*testpb.ResponseParameters{ - { - Size: int32(extraLargeSize), - }, - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: smallPayload, - } - stream, err := tc.FullDuplexCall(te1.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err = stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err = stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test for streaming RPC send. - respParam[0].Size = int32(smallSize) - sreq.Payload = extraLargePayload - stream, err = tc.FullDuplexCall(te1.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err = stream.Send(sreq); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Send(%v) = %v, want _, error code: %s", stream, sreq, err, codes.ResourceExhausted) - } - - // Case2: Client API set maxReqSize to 1024 (send), maxRespSize to 1024 (recv). Sc sets maxReqSize to 2048 (send), maxRespSize to 2048 (recv). - te2 := testServiceConfigSetup(t, e) - te2.resolverScheme = r.Scheme() - te2.nonBlockingDial = true - te2.maxClientReceiveMsgSize = newInt(1024) - te2.maxClientSendMsgSize = newInt(1024) - - te2.startServer(&testServer{security: e.security}) - defer te2.tearDown() - cc2 := te2.clientConn() - r.NewAddress([]resolver.Address{{Addr: te2.srvAddr}}) - r.NewServiceConfig(scjs) - tc = testpb.NewTestServiceClient(cc2) - - for { - if cc2.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall").MaxReqSize != nil { - break - } - time.Sleep(time.Millisecond) - } - - // Test for unary RPC recv. - req.Payload = smallPayload - req.ResponseSize = int32(largeSize) - - if _, err = tc.UnaryCall(context.Background(), req, grpc.FailFast(false)); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for unary RPC send. - req.Payload = largePayload - req.ResponseSize = int32(smallSize) - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for streaming RPC recv. - stream, err = tc.FullDuplexCall(te2.ctx) - respParam[0].Size = int32(largeSize) - sreq.Payload = smallPayload - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err = stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err = stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test for streaming RPC send. - respParam[0].Size = int32(smallSize) - sreq.Payload = largePayload - stream, err = tc.FullDuplexCall(te2.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err = stream.Send(sreq); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Send(%v) = %v, want _, error code: %s", stream, sreq, err, codes.ResourceExhausted) - } - - // Case3: Client API set maxReqSize to 4096 (send), maxRespSize to 4096 (recv). Sc sets maxReqSize to 2048 (send), maxRespSize to 2048 (recv). - te3 := testServiceConfigSetup(t, e) - te3.resolverScheme = r.Scheme() - te3.nonBlockingDial = true - te3.maxClientReceiveMsgSize = newInt(4096) - te3.maxClientSendMsgSize = newInt(4096) - - te3.startServer(&testServer{security: e.security}) - defer te3.tearDown() - - cc3 := te3.clientConn() - r.NewAddress([]resolver.Address{{Addr: te3.srvAddr}}) - r.NewServiceConfig(scjs) - tc = testpb.NewTestServiceClient(cc3) - - for { - if cc3.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall").MaxReqSize != nil { - break - } - time.Sleep(time.Millisecond) - } - - // Test for unary RPC recv. - req.Payload = smallPayload - req.ResponseSize = int32(largeSize) - - if _, err = tc.UnaryCall(context.Background(), req, grpc.FailFast(false)); err != nil { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want <nil>", err) - } - - req.ResponseSize = int32(extraLargeSize) - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for unary RPC send. - req.Payload = largePayload - req.ResponseSize = int32(smallSize) - if _, err := tc.UnaryCall(context.Background(), req); err != nil { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want <nil>", err) - } - - req.Payload = extraLargePayload - if _, err = tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for streaming RPC recv. - stream, err = tc.FullDuplexCall(te3.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - respParam[0].Size = int32(largeSize) - sreq.Payload = smallPayload - - if err = stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err = stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = _, %v, want <nil>", stream, err) - } - - respParam[0].Size = int32(extraLargeSize) - - if err = stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err = stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test for streaming RPC send. - respParam[0].Size = int32(smallSize) - sreq.Payload = largePayload - stream, err = tc.FullDuplexCall(te3.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - sreq.Payload = extraLargePayload - if err := stream.Send(sreq); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Send(%v) = %v, want _, error code: %s", stream, sreq, err, codes.ResourceExhausted) - } -} - -// Reading from a streaming RPC may fail with context canceled if timeout was -// set by service config (https://github.com/grpc/grpc-go/issues/1818). This -// test makes sure read from streaming RPC doesn't fail in this case. -func TestStreamingRPCWithTimeoutInServiceConfigRecv(t *testing.T) { - te := testServiceConfigSetup(t, tcpClearRREnv) - te.startServer(&testServer{security: tcpClearRREnv.security}) - defer te.tearDown() - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - te.resolverScheme = r.Scheme() - te.nonBlockingDial = true - fmt.Println("1") - cc := te.clientConn() - fmt.Println("10") - tc := testpb.NewTestServiceClient(cc) - - r.NewAddress([]resolver.Address{{Addr: te.srvAddr}}) - r.NewServiceConfig(`{ - "methodConfig": [ - { - "name": [ - { - "service": "grpc.testing.TestService", - "method": "FullDuplexCall" - } - ], - "waitForReady": true, - "timeout": "10s" - } - ] - }`) - // Make sure service config has been processed by grpc. - for { - if cc.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall").Timeout != nil { - break - } - time.Sleep(time.Millisecond) - } - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - stream, err := tc.FullDuplexCall(ctx, grpc.FailFast(false)) - if err != nil { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want <nil>", err) - } - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 0) - if err != nil { - t.Fatalf("failed to newPayload: %v", err) - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: []*testpb.ResponseParameters{{Size: 0}}, - Payload: payload, - } - if err := stream.Send(req); err != nil { - t.Fatalf("stream.Send(%v) = %v, want <nil>", req, err) - } - stream.CloseSend() - time.Sleep(time.Second) - // Sleep 1 second before recv to make sure the final status is received - // before the recv. - if _, err := stream.Recv(); err != nil { - t.Fatalf("stream.Recv = _, %v, want _, <nil>", err) - } - // Keep reading to drain the stream. - for { - if _, err := stream.Recv(); err != nil { - break - } - } -} - -func TestMaxMsgSizeClientDefault(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testMaxMsgSizeClientDefault(t, e) - } -} - -func testMaxMsgSizeClientDefault(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - "Failed to dial : context canceled; please retry.", - ) - te.startServer(&testServer{security: e.security}) - - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const smallSize = 1 - const largeSize = 4 * 1024 * 1024 - smallPayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, smallSize) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeSize), - Payload: smallPayload, - } - // Test for unary RPC recv. - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - respParam := []*testpb.ResponseParameters{ - { - Size: int32(largeSize), - }, - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: smallPayload, - } - - // Test for streaming RPC recv. - stream, err := tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } -} - -func TestMaxMsgSizeClientAPI(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testMaxMsgSizeClientAPI(t, e) - } -} - -func testMaxMsgSizeClientAPI(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - // To avoid error on server side. - te.maxServerSendMsgSize = newInt(5 * 1024 * 1024) - te.maxClientReceiveMsgSize = newInt(1024) - te.maxClientSendMsgSize = newInt(1024) - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - "Failed to dial : context canceled; please retry.", - ) - te.startServer(&testServer{security: e.security}) - - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const smallSize = 1 - const largeSize = 1024 - smallPayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, smallSize) - if err != nil { - t.Fatal(err) - } - - largePayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, largeSize) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeSize), - Payload: smallPayload, - } - // Test for unary RPC recv. - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for unary RPC send. - req.Payload = largePayload - req.ResponseSize = int32(smallSize) - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - respParam := []*testpb.ResponseParameters{ - { - Size: int32(largeSize), - }, - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: smallPayload, - } - - // Test for streaming RPC recv. - stream, err := tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test for streaming RPC send. - respParam[0].Size = int32(smallSize) - sreq.Payload = largePayload - stream, err = tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Send(%v) = %v, want _, error code: %s", stream, sreq, err, codes.ResourceExhausted) - } -} - -func TestMaxMsgSizeServerAPI(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testMaxMsgSizeServerAPI(t, e) - } -} - -func testMaxMsgSizeServerAPI(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.maxServerReceiveMsgSize = newInt(1024) - te.maxServerSendMsgSize = newInt(1024) - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - "Failed to dial : context canceled; please retry.", - ) - te.startServer(&testServer{security: e.security}) - - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const smallSize = 1 - const largeSize = 1024 - smallPayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, smallSize) - if err != nil { - t.Fatal(err) - } - - largePayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, largeSize) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(largeSize), - Payload: smallPayload, - } - // Test for unary RPC send. - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for unary RPC recv. - req.Payload = largePayload - req.ResponseSize = int32(smallSize) - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - respParam := []*testpb.ResponseParameters{ - { - Size: int32(largeSize), - }, - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: smallPayload, - } - - // Test for streaming RPC send. - stream, err := tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test for streaming RPC recv. - respParam[0].Size = int32(smallSize) - sreq.Payload = largePayload - stream, err = tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } -} - -func TestTap(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testTap(t, e) - } -} - -type myTap struct { - cnt int -} - -func (t *myTap) handle(ctx context.Context, info *tap.Info) (context.Context, error) { - if info != nil { - if info.FullMethodName == "/grpc.testing.TestService/EmptyCall" { - t.cnt++ - } else if info.FullMethodName == "/grpc.testing.TestService/UnaryCall" { - return nil, fmt.Errorf("tap error") - } - } - return ctx, nil -} - -func testTap(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - ttap := &myTap{} - te.tapHandle = ttap.handle - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - ) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, <nil>", err) - } - if ttap.cnt != 1 { - t.Fatalf("Get the count in ttap %d, want 1", ttap.cnt) - } - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 31) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: 45, - Payload: payload, - } - if _, err := tc.UnaryCall(context.Background(), req); status.Code(err) != codes.Unavailable { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, %s", err, codes.Unavailable) - } -} - -func healthCheck(d time.Duration, cc *grpc.ClientConn, serviceName string) (*healthpb.HealthCheckResponse, error) { - ctx, cancel := context.WithTimeout(context.Background(), d) - defer cancel() - hc := healthpb.NewHealthClient(cc) - req := &healthpb.HealthCheckRequest{ - Service: serviceName, - } - return hc.Check(ctx, req) -} - -func TestHealthCheckOnSuccess(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testHealthCheckOnSuccess(t, e) - } -} - -func testHealthCheckOnSuccess(t *testing.T, e env) { - te := newTest(t, e) - hs := health.NewServer() - hs.SetServingStatus("grpc.health.v1.Health", 1) - te.healthServer = hs - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - if _, err := healthCheck(1*time.Second, cc, "grpc.health.v1.Health"); err != nil { - t.Fatalf("Health/Check(_, _) = _, %v, want _, <nil>", err) - } -} - -func TestHealthCheckOnFailure(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testHealthCheckOnFailure(t, e) - } -} - -func testHealthCheckOnFailure(t *testing.T, e env) { - defer leakcheck.Check(t) - te := newTest(t, e) - te.declareLogNoise( - "Failed to dial ", - "grpc: the client connection is closing; please retry", - ) - hs := health.NewServer() - hs.SetServingStatus("grpc.health.v1.HealthCheck", 1) - te.healthServer = hs - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - wantErr := status.Error(codes.DeadlineExceeded, "context deadline exceeded") - if _, err := healthCheck(0*time.Second, cc, "grpc.health.v1.Health"); !reflect.DeepEqual(err, wantErr) { - t.Fatalf("Health/Check(_, _) = _, %v, want _, error code %s", err, codes.DeadlineExceeded) - } - awaitNewConnLogOutput() -} - -func TestHealthCheckOff(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - // TODO(bradfitz): Temporarily skip this env due to #619. - if e.name == "handler-tls" { - continue - } - testHealthCheckOff(t, e) - } -} - -func testHealthCheckOff(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - want := status.Error(codes.Unimplemented, "unknown service grpc.health.v1.Health") - if _, err := healthCheck(1*time.Second, te.clientConn(), ""); !reflect.DeepEqual(err, want) { - t.Fatalf("Health/Check(_, _) = _, %v, want _, %v", err, want) - } -} - -func TestUnknownHandler(t *testing.T) { - defer leakcheck.Check(t) - // An example unknownHandler that returns a different code and a different method, making sure that we do not - // expose what methods are implemented to a client that is not authenticated. - unknownHandler := func(srv interface{}, stream grpc.ServerStream) error { - return status.Error(codes.Unauthenticated, "user unauthenticated") - } - for _, e := range listTestEnv() { - // TODO(bradfitz): Temporarily skip this env due to #619. - if e.name == "handler-tls" { - continue - } - testUnknownHandler(t, e, unknownHandler) - } -} - -func testUnknownHandler(t *testing.T, e env, unknownHandler grpc.StreamHandler) { - te := newTest(t, e) - te.unknownHandler = unknownHandler - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - want := status.Error(codes.Unauthenticated, "user unauthenticated") - if _, err := healthCheck(1*time.Second, te.clientConn(), ""); !reflect.DeepEqual(err, want) { - t.Fatalf("Health/Check(_, _) = _, %v, want _, %v", err, want) - } -} - -func TestHealthCheckServingStatus(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testHealthCheckServingStatus(t, e) - } -} - -func testHealthCheckServingStatus(t *testing.T, e env) { - te := newTest(t, e) - hs := health.NewServer() - te.healthServer = hs - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - out, err := healthCheck(1*time.Second, cc, "") - if err != nil { - t.Fatalf("Health/Check(_, _) = _, %v, want _, <nil>", err) - } - if out.Status != healthpb.HealthCheckResponse_SERVING { - t.Fatalf("Got the serving status %v, want SERVING", out.Status) - } - wantErr := status.Error(codes.NotFound, "unknown service") - if _, err := healthCheck(1*time.Second, cc, "grpc.health.v1.Health"); !reflect.DeepEqual(err, wantErr) { - t.Fatalf("Health/Check(_, _) = _, %v, want _, error code %s", err, codes.NotFound) - } - hs.SetServingStatus("grpc.health.v1.Health", healthpb.HealthCheckResponse_SERVING) - out, err = healthCheck(1*time.Second, cc, "grpc.health.v1.Health") - if err != nil { - t.Fatalf("Health/Check(_, _) = _, %v, want _, <nil>", err) - } - if out.Status != healthpb.HealthCheckResponse_SERVING { - t.Fatalf("Got the serving status %v, want SERVING", out.Status) - } - hs.SetServingStatus("grpc.health.v1.Health", healthpb.HealthCheckResponse_NOT_SERVING) - out, err = healthCheck(1*time.Second, cc, "grpc.health.v1.Health") - if err != nil { - t.Fatalf("Health/Check(_, _) = _, %v, want _, <nil>", err) - } - if out.Status != healthpb.HealthCheckResponse_NOT_SERVING { - t.Fatalf("Got the serving status %v, want NOT_SERVING", out.Status) - } - -} - -func TestEmptyUnaryWithUserAgent(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testEmptyUnaryWithUserAgent(t, e) - } -} - -func testEmptyUnaryWithUserAgent(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - var header metadata.MD - reply, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Header(&header)) - if err != nil || !proto.Equal(&testpb.Empty{}, reply) { - t.Fatalf("TestService/EmptyCall(_, _) = %v, %v, want %v, <nil>", reply, err, &testpb.Empty{}) - } - if v, ok := header["ua"]; !ok || !strings.HasPrefix(v[0], testAppUA) { - t.Fatalf("header[\"ua\"] = %q, %t, want string with prefix %q, true", v, ok, testAppUA) - } - - te.srv.Stop() -} - -func TestFailedEmptyUnary(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - // This test covers status details, but - // Grpc-Status-Details-Bin is not support in handler_server. - continue - } - testFailedEmptyUnary(t, e) - } -} - -func testFailedEmptyUnary(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = failAppUA - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - wantErr := detailedError - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}); !reflect.DeepEqual(err, wantErr) { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %v", err, wantErr) - } -} - -func TestLargeUnary(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testLargeUnary(t, e) - } -} - -func testLargeUnary(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const argSize = 271828 - const respSize = 314159 - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - reply, err := tc.UnaryCall(context.Background(), req) - if err != nil { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, <nil>", err) - } - pt := reply.GetPayload().GetType() - ps := len(reply.GetPayload().GetBody()) - if pt != testpb.PayloadType_COMPRESSABLE || ps != respSize { - t.Fatalf("Got the reply with type %d len %d; want %d, %d", pt, ps, testpb.PayloadType_COMPRESSABLE, respSize) - } -} - -// Test backward-compatibility API for setting msg size limit. -func TestExceedMsgLimit(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testExceedMsgLimit(t, e) - } -} - -func testExceedMsgLimit(t *testing.T, e env) { - te := newTest(t, e) - te.maxMsgSize = newInt(1024) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - argSize := int32(*te.maxMsgSize + 1) - const smallSize = 1 - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - smallPayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, smallSize) - if err != nil { - t.Fatal(err) - } - - // Test on server side for unary RPC. - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: smallSize, - Payload: payload, - } - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - // Test on client side for unary RPC. - req.ResponseSize = int32(*te.maxMsgSize) + 1 - req.Payload = smallPayload - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test on server side for streaming RPC. - stream, err := tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - respParam := []*testpb.ResponseParameters{ - { - Size: 1, - }, - } - - spayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(*te.maxMsgSize+1)) - if err != nil { - t.Fatal(err) - } - - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: spayload, - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test on client side for streaming RPC. - stream, err = tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - respParam[0].Size = int32(*te.maxMsgSize) + 1 - sreq.Payload = smallPayload - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - -} - -func TestPeerClientSide(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testPeerClientSide(t, e) - } -} - -func testPeerClientSide(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - peer := new(peer.Peer) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.Peer(peer), grpc.FailFast(false)); err != nil { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, <nil>", err) - } - pa := peer.Addr.String() - if e.network == "unix" { - if pa != te.srvAddr { - t.Fatalf("peer.Addr = %v, want %v", pa, te.srvAddr) - } - return - } - _, pp, err := net.SplitHostPort(pa) - if err != nil { - t.Fatalf("Failed to parse address from peer.") - } - _, sp, err := net.SplitHostPort(te.srvAddr) - if err != nil { - t.Fatalf("Failed to parse address of test server.") - } - if pp != sp { - t.Fatalf("peer.Addr = localhost:%v, want localhost:%v", pp, sp) - } -} - -// TestPeerNegative tests that if call fails setting peer -// doesn't cause a segmentation fault. -// issue#1141 https://github.com/grpc/grpc-go/issues/1141 -func TestPeerNegative(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testPeerNegative(t, e) - } -} - -func testPeerNegative(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - peer := new(peer.Peer) - ctx, cancel := context.WithCancel(context.Background()) - cancel() - tc.EmptyCall(ctx, &testpb.Empty{}, grpc.Peer(peer)) -} - -func TestPeerFailedRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testPeerFailedRPC(t, e) - } -} - -func testPeerFailedRPC(t *testing.T, e env) { - te := newTest(t, e) - te.maxServerReceiveMsgSize = newInt(1 * 1024) - te.startServer(&testServer{security: e.security}) - - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - // first make a successful request to the server - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, <nil>", err) - } - - // make a second request that will be rejected by the server - const largeSize = 5 * 1024 - largePayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, largeSize) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - Payload: largePayload, - } - - peer := new(peer.Peer) - if _, err := tc.UnaryCall(context.Background(), req, grpc.Peer(peer)); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } else { - pa := peer.Addr.String() - if e.network == "unix" { - if pa != te.srvAddr { - t.Fatalf("peer.Addr = %v, want %v", pa, te.srvAddr) - } - return - } - _, pp, err := net.SplitHostPort(pa) - if err != nil { - t.Fatalf("Failed to parse address from peer.") - } - _, sp, err := net.SplitHostPort(te.srvAddr) - if err != nil { - t.Fatalf("Failed to parse address of test server.") - } - if pp != sp { - t.Fatalf("peer.Addr = localhost:%v, want localhost:%v", pp, sp) - } - } -} - -func TestMetadataUnaryRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testMetadataUnaryRPC(t, e) - } -} - -func testMetadataUnaryRPC(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const argSize = 2718 - const respSize = 314 - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - var header, trailer metadata.MD - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - if _, err := tc.UnaryCall(ctx, req, grpc.Header(&header), grpc.Trailer(&trailer)); err != nil { - t.Fatalf("TestService.UnaryCall(%v, _, _, _) = _, %v; want _, <nil>", ctx, err) - } - // Ignore optional response headers that Servers may set: - if header != nil { - delete(header, "trailer") // RFC 2616 says server SHOULD (but optional) declare trailers - delete(header, "date") // the Date header is also optional - delete(header, "user-agent") - delete(header, "content-type") - } - if !reflect.DeepEqual(header, testMetadata) { - t.Fatalf("Received header metadata %v, want %v", header, testMetadata) - } - if !reflect.DeepEqual(trailer, testTrailerMetadata) { - t.Fatalf("Received trailer metadata %v, want %v", trailer, testTrailerMetadata) - } -} - -func TestMultipleSetTrailerUnaryRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testMultipleSetTrailerUnaryRPC(t, e) - } -} - -func testMultipleSetTrailerUnaryRPC(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, multipleSetTrailer: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const ( - argSize = 1 - respSize = 1 - ) - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - var trailer metadata.MD - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - if _, err := tc.UnaryCall(ctx, req, grpc.Trailer(&trailer), grpc.FailFast(false)); err != nil { - t.Fatalf("TestService.UnaryCall(%v, _, _, _) = _, %v; want _, <nil>", ctx, err) - } - expectedTrailer := metadata.Join(testTrailerMetadata, testTrailerMetadata2) - if !reflect.DeepEqual(trailer, expectedTrailer) { - t.Fatalf("Received trailer metadata %v, want %v", trailer, expectedTrailer) - } -} - -func TestMultipleSetTrailerStreamingRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testMultipleSetTrailerStreamingRPC(t, e) - } -} - -func testMultipleSetTrailerStreamingRPC(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, multipleSetTrailer: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - stream, err := tc.FullDuplexCall(ctx, grpc.FailFast(false)) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.CloseSend(); err != nil { - t.Fatalf("%v.CloseSend() got %v, want %v", stream, err, nil) - } - if _, err := stream.Recv(); err != io.EOF { - t.Fatalf("%v failed to complele the FullDuplexCall: %v", stream, err) - } - - trailer := stream.Trailer() - expectedTrailer := metadata.Join(testTrailerMetadata, testTrailerMetadata2) - if !reflect.DeepEqual(trailer, expectedTrailer) { - t.Fatalf("Received trailer metadata %v, want %v", trailer, expectedTrailer) - } -} - -func TestSetAndSendHeaderUnaryRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testSetAndSendHeaderUnaryRPC(t, e) - } -} - -// To test header metadata is sent on SendHeader(). -func testSetAndSendHeaderUnaryRPC(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, setAndSendHeader: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const ( - argSize = 1 - respSize = 1 - ) - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - var header metadata.MD - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - if _, err := tc.UnaryCall(ctx, req, grpc.Header(&header), grpc.FailFast(false)); err != nil { - t.Fatalf("TestService.UnaryCall(%v, _, _, _) = _, %v; want _, <nil>", ctx, err) - } - delete(header, "user-agent") - delete(header, "content-type") - expectedHeader := metadata.Join(testMetadata, testMetadata2) - if !reflect.DeepEqual(header, expectedHeader) { - t.Fatalf("Received header metadata %v, want %v", header, expectedHeader) - } -} - -func TestMultipleSetHeaderUnaryRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testMultipleSetHeaderUnaryRPC(t, e) - } -} - -// To test header metadata is sent when sending response. -func testMultipleSetHeaderUnaryRPC(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, setHeaderOnly: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const ( - argSize = 1 - respSize = 1 - ) - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - - var header metadata.MD - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - if _, err := tc.UnaryCall(ctx, req, grpc.Header(&header), grpc.FailFast(false)); err != nil { - t.Fatalf("TestService.UnaryCall(%v, _, _, _) = _, %v; want _, <nil>", ctx, err) - } - delete(header, "user-agent") - delete(header, "content-type") - expectedHeader := metadata.Join(testMetadata, testMetadata2) - if !reflect.DeepEqual(header, expectedHeader) { - t.Fatalf("Received header metadata %v, want %v", header, expectedHeader) - } -} - -func TestMultipleSetHeaderUnaryRPCError(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testMultipleSetHeaderUnaryRPCError(t, e) - } -} - -// To test header metadata is sent when sending status. -func testMultipleSetHeaderUnaryRPCError(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, setHeaderOnly: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const ( - argSize = 1 - respSize = -1 // Invalid respSize to make RPC fail. - ) - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - var header metadata.MD - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - if _, err := tc.UnaryCall(ctx, req, grpc.Header(&header), grpc.FailFast(false)); err == nil { - t.Fatalf("TestService.UnaryCall(%v, _, _, _) = _, %v; want _, <non-nil>", ctx, err) - } - delete(header, "user-agent") - delete(header, "content-type") - expectedHeader := metadata.Join(testMetadata, testMetadata2) - if !reflect.DeepEqual(header, expectedHeader) { - t.Fatalf("Received header metadata %v, want %v", header, expectedHeader) - } -} - -func TestSetAndSendHeaderStreamingRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testSetAndSendHeaderStreamingRPC(t, e) - } -} - -// To test header metadata is sent on SendHeader(). -func testSetAndSendHeaderStreamingRPC(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, setAndSendHeader: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const ( - argSize = 1 - respSize = 1 - ) - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - stream, err := tc.FullDuplexCall(ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.CloseSend(); err != nil { - t.Fatalf("%v.CloseSend() got %v, want %v", stream, err, nil) - } - if _, err := stream.Recv(); err != io.EOF { - t.Fatalf("%v failed to complele the FullDuplexCall: %v", stream, err) - } - - header, err := stream.Header() - if err != nil { - t.Fatalf("%v.Header() = _, %v, want _, <nil>", stream, err) - } - delete(header, "user-agent") - delete(header, "content-type") - expectedHeader := metadata.Join(testMetadata, testMetadata2) - if !reflect.DeepEqual(header, expectedHeader) { - t.Fatalf("Received header metadata %v, want %v", header, expectedHeader) - } -} - -func TestMultipleSetHeaderStreamingRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testMultipleSetHeaderStreamingRPC(t, e) - } -} - -// To test header metadata is sent when sending response. -func testMultipleSetHeaderStreamingRPC(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, setHeaderOnly: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const ( - argSize = 1 - respSize = 1 - ) - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - stream, err := tc.FullDuplexCall(ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: []*testpb.ResponseParameters{ - {Size: respSize}, - }, - Payload: payload, - } - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - if _, err := stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = %v, want <nil>", stream, err) - } - if err := stream.CloseSend(); err != nil { - t.Fatalf("%v.CloseSend() got %v, want %v", stream, err, nil) - } - if _, err := stream.Recv(); err != io.EOF { - t.Fatalf("%v failed to complele the FullDuplexCall: %v", stream, err) - } - - header, err := stream.Header() - if err != nil { - t.Fatalf("%v.Header() = _, %v, want _, <nil>", stream, err) - } - delete(header, "user-agent") - delete(header, "content-type") - expectedHeader := metadata.Join(testMetadata, testMetadata2) - if !reflect.DeepEqual(header, expectedHeader) { - t.Fatalf("Received header metadata %v, want %v", header, expectedHeader) - } - -} - -func TestMultipleSetHeaderStreamingRPCError(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testMultipleSetHeaderStreamingRPCError(t, e) - } -} - -// To test header metadata is sent when sending status. -func testMultipleSetHeaderStreamingRPCError(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, setHeaderOnly: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const ( - argSize = 1 - respSize = -1 - ) - ctx := metadata.NewOutgoingContext(context.Background(), testMetadata) - stream, err := tc.FullDuplexCall(ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: []*testpb.ResponseParameters{ - {Size: respSize}, - }, - Payload: payload, - } - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - if _, err := stream.Recv(); err == nil { - t.Fatalf("%v.Recv() = %v, want <non-nil>", stream, err) - } - - header, err := stream.Header() - if err != nil { - t.Fatalf("%v.Header() = _, %v, want _, <nil>", stream, err) - } - delete(header, "user-agent") - delete(header, "content-type") - expectedHeader := metadata.Join(testMetadata, testMetadata2) - if !reflect.DeepEqual(header, expectedHeader) { - t.Fatalf("Received header metadata %v, want %v", header, expectedHeader) - } - - if err := stream.CloseSend(); err != nil { - t.Fatalf("%v.CloseSend() got %v, want %v", stream, err, nil) - } -} - -// TestMalformedHTTP2Metedata verfies the returned error when the client -// sends an illegal metadata. -func TestMalformedHTTP2Metadata(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - // Failed with "server stops accepting new RPCs". - // Server stops accepting new RPCs when the client sends an illegal http2 header. - continue - } - testMalformedHTTP2Metadata(t, e) - } -} - -func testMalformedHTTP2Metadata(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 2718) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: 314, - Payload: payload, - } - ctx := metadata.NewOutgoingContext(context.Background(), malformedHTTP2Metadata) - if _, err := tc.UnaryCall(ctx, req); status.Code(err) != codes.Internal { - t.Fatalf("TestService.UnaryCall(%v, _) = _, %v; want _, %s", ctx, err, codes.Internal) - } -} - -func TestRetry(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - // Fails with RST_STREAM / FLOW_CONTROL_ERROR - continue - } - testRetry(t, e) - } -} - -// This test make sure RPCs are retried times when they receive a RST_STREAM -// with the REFUSED_STREAM error code, which the InTapHandle provokes. -func testRetry(t *testing.T, e env) { - te := newTest(t, e) - attempts := 0 - successAttempt := 2 - te.tapHandle = func(ctx context.Context, _ *tap.Info) (context.Context, error) { - attempts++ - if attempts < successAttempt { - return nil, errors.New("not now") - } - return ctx, nil - } - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tsc := testpb.NewTestServiceClient(cc) - testCases := []struct { - successAttempt int - failFast bool - errCode codes.Code - }{{ - successAttempt: 1, - }, { - successAttempt: 2, - }, { - successAttempt: 3, - errCode: codes.Unavailable, - }, { - successAttempt: 1, - failFast: true, - }, { - successAttempt: 2, - failFast: true, - errCode: codes.Unavailable, // We won't retry on fail fast. - }} - for _, tc := range testCases { - attempts = 0 - successAttempt = tc.successAttempt - - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - _, err := tsc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(tc.failFast)) - cancel() - if status.Code(err) != tc.errCode { - t.Errorf("%+v: tsc.EmptyCall(_, _) = _, %v, want _, Code=%v", tc, err, tc.errCode) - } - } -} - -func TestRPCTimeout(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testRPCTimeout(t, e) - } -} - -// TODO(zhaoq): Have a better test coverage of timeout and cancellation mechanism. -func testRPCTimeout(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, unaryCallSleepTime: 50 * time.Millisecond}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - - const argSize = 2718 - const respSize = 314 - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - for i := -1; i <= 10; i++ { - ctx, cancel := context.WithTimeout(context.Background(), time.Duration(i)*time.Millisecond) - if _, err := tc.UnaryCall(ctx, req); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/UnaryCallv(_, _) = _, %v; want <nil>, error code: %s", err, codes.DeadlineExceeded) - } - cancel() - } -} - -func TestCancel(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testCancel(t, e) - } -} - -func testCancel(t *testing.T, e env) { - te := newTest(t, e) - te.declareLogNoise("grpc: the client connection is closing; please retry") - te.startServer(&testServer{security: e.security, unaryCallSleepTime: time.Second}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - - const argSize = 2718 - const respSize = 314 - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - ctx, cancel := context.WithCancel(context.Background()) - time.AfterFunc(1*time.Millisecond, cancel) - if r, err := tc.UnaryCall(ctx, req); status.Code(err) != codes.Canceled { - t.Fatalf("TestService/UnaryCall(_, _) = %v, %v; want _, error code: %s", r, err, codes.Canceled) - } - awaitNewConnLogOutput() -} - -func TestCancelNoIO(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testCancelNoIO(t, e) - } -} - -func testCancelNoIO(t *testing.T, e env) { - te := newTest(t, e) - te.declareLogNoise("http2Client.notifyError got notified that the client transport was broken") - te.maxStream = 1 // Only allows 1 live stream per server transport. - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - - // Start one blocked RPC for which we'll never send streaming - // input. This will consume the 1 maximum concurrent streams, - // causing future RPCs to hang. - ctx, cancelFirst := context.WithCancel(context.Background()) - _, err := tc.StreamingInputCall(ctx) - if err != nil { - t.Fatalf("%v.StreamingInputCall(_) = _, %v, want _, <nil>", tc, err) - } - - // Loop until the ClientConn receives the initial settings - // frame from the server, notifying it about the maximum - // concurrent streams. We know when it's received it because - // an RPC will fail with codes.DeadlineExceeded instead of - // succeeding. - // TODO(bradfitz): add internal test hook for this (Issue 534) - for { - ctx, cancelSecond := context.WithTimeout(context.Background(), 50*time.Millisecond) - _, err := tc.StreamingInputCall(ctx) - cancelSecond() - if err == nil { - continue - } - if status.Code(err) == codes.DeadlineExceeded { - break - } - t.Fatalf("%v.StreamingInputCall(_) = _, %v, want _, %s", tc, err, codes.DeadlineExceeded) - } - // If there are any RPCs in flight before the client receives - // the max streams setting, let them be expired. - // TODO(bradfitz): add internal test hook for this (Issue 534) - time.Sleep(50 * time.Millisecond) - - go func() { - time.Sleep(50 * time.Millisecond) - cancelFirst() - }() - - // This should be blocked until the 1st is canceled, then succeed. - ctx, cancelThird := context.WithTimeout(context.Background(), 500*time.Millisecond) - if _, err := tc.StreamingInputCall(ctx); err != nil { - t.Errorf("%v.StreamingInputCall(_) = _, %v, want _, <nil>", tc, err) - } - cancelThird() -} - -// The following tests the gRPC streaming RPC implementations. -// TODO(zhaoq): Have better coverage on error cases. -var ( - reqSizes = []int{27182, 8, 1828, 45904} - respSizes = []int{31415, 9, 2653, 58979} -) - -func TestNoService(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testNoService(t, e) - } -} - -func testNoService(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(nil) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - - stream, err := tc.FullDuplexCall(te.ctx, grpc.FailFast(false)) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if _, err := stream.Recv(); status.Code(err) != codes.Unimplemented { - t.Fatalf("stream.Recv() = _, %v, want _, error code %s", err, codes.Unimplemented) - } -} - -func TestPingPong(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testPingPong(t, e) - } -} - -func testPingPong(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - stream, err := tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - var index int - for index < len(reqSizes) { - respParam := []*testpb.ResponseParameters{ - { - Size: int32(respSizes[index]), - }, - } - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(reqSizes[index])) - if err != nil { - t.Fatal(err) - } - - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - reply, err := stream.Recv() - if err != nil { - t.Fatalf("%v.Recv() = %v, want <nil>", stream, err) - } - pt := reply.GetPayload().GetType() - if pt != testpb.PayloadType_COMPRESSABLE { - t.Fatalf("Got the reply of type %d, want %d", pt, testpb.PayloadType_COMPRESSABLE) - } - size := len(reply.GetPayload().GetBody()) - if size != int(respSizes[index]) { - t.Fatalf("Got reply body of length %d, want %d", size, respSizes[index]) - } - index++ - } - if err := stream.CloseSend(); err != nil { - t.Fatalf("%v.CloseSend() got %v, want %v", stream, err, nil) - } - if _, err := stream.Recv(); err != io.EOF { - t.Fatalf("%v failed to complele the ping pong test: %v", stream, err) - } -} - -func TestMetadataStreamingRPC(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testMetadataStreamingRPC(t, e) - } -} - -func testMetadataStreamingRPC(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - ctx := metadata.NewOutgoingContext(te.ctx, testMetadata) - stream, err := tc.FullDuplexCall(ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - go func() { - headerMD, err := stream.Header() - if e.security == "tls" { - delete(headerMD, "transport_security_type") - } - delete(headerMD, "trailer") // ignore if present - delete(headerMD, "user-agent") - delete(headerMD, "content-type") - if err != nil || !reflect.DeepEqual(testMetadata, headerMD) { - t.Errorf("#1 %v.Header() = %v, %v, want %v, <nil>", stream, headerMD, err, testMetadata) - } - // test the cached value. - headerMD, err = stream.Header() - delete(headerMD, "trailer") // ignore if present - delete(headerMD, "user-agent") - delete(headerMD, "content-type") - if err != nil || !reflect.DeepEqual(testMetadata, headerMD) { - t.Errorf("#2 %v.Header() = %v, %v, want %v, <nil>", stream, headerMD, err, testMetadata) - } - err = func() error { - for index := 0; index < len(reqSizes); index++ { - respParam := []*testpb.ResponseParameters{ - { - Size: int32(respSizes[index]), - }, - } - - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(reqSizes[index])) - if err != nil { - return err - } - - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - if err := stream.Send(req); err != nil { - return fmt.Errorf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - } - return nil - }() - // Tell the server we're done sending args. - stream.CloseSend() - if err != nil { - t.Error(err) - } - }() - for { - if _, err := stream.Recv(); err != nil { - break - } - } - trailerMD := stream.Trailer() - if !reflect.DeepEqual(testTrailerMetadata, trailerMD) { - t.Fatalf("%v.Trailer() = %v, want %v", stream, trailerMD, testTrailerMetadata) - } -} - -func TestServerStreaming(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testServerStreaming(t, e) - } -} - -func testServerStreaming(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - respParam := make([]*testpb.ResponseParameters, len(respSizes)) - for i, s := range respSizes { - respParam[i] = &testpb.ResponseParameters{ - Size: int32(s), - } - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - } - stream, err := tc.StreamingOutputCall(context.Background(), req) - if err != nil { - t.Fatalf("%v.StreamingOutputCall(_) = _, %v, want <nil>", tc, err) - } - var rpcStatus error - var respCnt int - var index int - for { - reply, err := stream.Recv() - if err != nil { - rpcStatus = err - break - } - pt := reply.GetPayload().GetType() - if pt != testpb.PayloadType_COMPRESSABLE { - t.Fatalf("Got the reply of type %d, want %d", pt, testpb.PayloadType_COMPRESSABLE) - } - size := len(reply.GetPayload().GetBody()) - if size != int(respSizes[index]) { - t.Fatalf("Got reply body of length %d, want %d", size, respSizes[index]) - } - index++ - respCnt++ - } - if rpcStatus != io.EOF { - t.Fatalf("Failed to finish the server streaming rpc: %v, want <EOF>", rpcStatus) - } - if respCnt != len(respSizes) { - t.Fatalf("Got %d reply, want %d", len(respSizes), respCnt) - } -} - -func TestFailedServerStreaming(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testFailedServerStreaming(t, e) - } -} - -func testFailedServerStreaming(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = failAppUA - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - respParam := make([]*testpb.ResponseParameters, len(respSizes)) - for i, s := range respSizes { - respParam[i] = &testpb.ResponseParameters{ - Size: int32(s), - } - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - } - ctx := metadata.NewOutgoingContext(te.ctx, testMetadata) - stream, err := tc.StreamingOutputCall(ctx, req) - if err != nil { - t.Fatalf("%v.StreamingOutputCall(_) = _, %v, want <nil>", tc, err) - } - wantErr := status.Error(codes.DataLoss, "error for testing: "+failAppUA) - if _, err := stream.Recv(); !reflect.DeepEqual(err, wantErr) { - t.Fatalf("%v.Recv() = _, %v, want _, %v", stream, err, wantErr) - } -} - -// concurrentSendServer is a TestServiceServer whose -// StreamingOutputCall makes ten serial Send calls, sending payloads -// "0".."9", inclusive. TestServerStreamingConcurrent verifies they -// were received in the correct order, and that there were no races. -// -// All other TestServiceServer methods crash if called. -type concurrentSendServer struct { - testpb.TestServiceServer -} - -func (s concurrentSendServer) StreamingOutputCall(args *testpb.StreamingOutputCallRequest, stream testpb.TestService_StreamingOutputCallServer) error { - for i := 0; i < 10; i++ { - stream.Send(&testpb.StreamingOutputCallResponse{ - Payload: &testpb.Payload{ - Body: []byte{'0' + uint8(i)}, - }, - }) - } - return nil -} - -// Tests doing a bunch of concurrent streaming output calls. -func TestServerStreamingConcurrent(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testServerStreamingConcurrent(t, e) - } -} - -func testServerStreamingConcurrent(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(concurrentSendServer{}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - - doStreamingCall := func() { - req := &testpb.StreamingOutputCallRequest{} - stream, err := tc.StreamingOutputCall(context.Background(), req) - if err != nil { - t.Errorf("%v.StreamingOutputCall(_) = _, %v, want <nil>", tc, err) - return - } - var ngot int - var buf bytes.Buffer - for { - reply, err := stream.Recv() - if err == io.EOF { - break - } - if err != nil { - t.Fatal(err) - } - ngot++ - if buf.Len() > 0 { - buf.WriteByte(',') - } - buf.Write(reply.GetPayload().GetBody()) - } - if want := 10; ngot != want { - t.Errorf("Got %d replies, want %d", ngot, want) - } - if got, want := buf.String(), "0,1,2,3,4,5,6,7,8,9"; got != want { - t.Errorf("Got replies %q; want %q", got, want) - } - } - - var wg sync.WaitGroup - for i := 0; i < 20; i++ { - wg.Add(1) - go func() { - defer wg.Done() - doStreamingCall() - }() - } - wg.Wait() - -} - -func generatePayloadSizes() [][]int { - reqSizes := [][]int{ - {27182, 8, 1828, 45904}, - } - - num8KPayloads := 1024 - eightKPayloads := []int{} - for i := 0; i < num8KPayloads; i++ { - eightKPayloads = append(eightKPayloads, (1 << 13)) - } - reqSizes = append(reqSizes, eightKPayloads) - - num2MPayloads := 8 - twoMPayloads := []int{} - for i := 0; i < num2MPayloads; i++ { - twoMPayloads = append(twoMPayloads, (1 << 21)) - } - reqSizes = append(reqSizes, twoMPayloads) - - return reqSizes -} - -func TestClientStreaming(t *testing.T) { - defer leakcheck.Check(t) - for _, s := range generatePayloadSizes() { - for _, e := range listTestEnv() { - testClientStreaming(t, e, s) - } - } -} - -func testClientStreaming(t *testing.T, e env, sizes []int) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - ctx, cancel := context.WithTimeout(te.ctx, time.Second*30) - defer cancel() - stream, err := tc.StreamingInputCall(ctx) - if err != nil { - t.Fatalf("%v.StreamingInputCall(_) = _, %v, want <nil>", tc, err) - } - - var sum int - for _, s := range sizes { - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(s)) - if err != nil { - t.Fatal(err) - } - - req := &testpb.StreamingInputCallRequest{ - Payload: payload, - } - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - sum += s - } - reply, err := stream.CloseAndRecv() - if err != nil { - t.Fatalf("%v.CloseAndRecv() got error %v, want %v", stream, err, nil) - } - if reply.GetAggregatedPayloadSize() != int32(sum) { - t.Fatalf("%v.CloseAndRecv().GetAggregatePayloadSize() = %v; want %v", stream, reply.GetAggregatedPayloadSize(), sum) - } -} - -func TestClientStreamingError(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.name == "handler-tls" { - continue - } - testClientStreamingError(t, e) - } -} - -func testClientStreamingError(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security, earlyFail: true}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - stream, err := tc.StreamingInputCall(te.ctx) - if err != nil { - t.Fatalf("%v.StreamingInputCall(_) = _, %v, want <nil>", tc, err) - } - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 1) - if err != nil { - t.Fatal(err) - } - - req := &testpb.StreamingInputCallRequest{ - Payload: payload, - } - // The 1st request should go through. - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - for { - if err := stream.Send(req); err != io.EOF { - continue - } - if _, err := stream.CloseAndRecv(); status.Code(err) != codes.NotFound { - t.Fatalf("%v.CloseAndRecv() = %v, want error %s", stream, err, codes.NotFound) - } - break - } -} - -func TestExceedMaxStreamsLimit(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testExceedMaxStreamsLimit(t, e) - } -} - -func testExceedMaxStreamsLimit(t *testing.T, e env) { - te := newTest(t, e) - te.declareLogNoise( - "http2Client.notifyError got notified that the client transport was broken", - "Conn.resetTransport failed to create client transport", - "grpc: the connection is closing", - ) - te.maxStream = 1 // Only allows 1 live stream per server transport. - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - - _, err := tc.StreamingInputCall(te.ctx) - if err != nil { - t.Fatalf("%v.StreamingInputCall(_) = _, %v, want _, <nil>", tc, err) - } - // Loop until receiving the new max stream setting from the server. - for { - ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) - defer cancel() - _, err := tc.StreamingInputCall(ctx) - if err == nil { - time.Sleep(50 * time.Millisecond) - continue - } - if status.Code(err) == codes.DeadlineExceeded { - break - } - t.Fatalf("%v.StreamingInputCall(_) = _, %v, want _, %s", tc, err, codes.DeadlineExceeded) - } -} - -func TestStreamsQuotaRecovery(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testStreamsQuotaRecovery(t, e) - } -} - -func testStreamsQuotaRecovery(t *testing.T, e env) { - te := newTest(t, e) - te.declareLogNoise( - "http2Client.notifyError got notified that the client transport was broken", - "Conn.resetTransport failed to create client transport", - "grpc: the connection is closing", - ) - te.maxStream = 1 // Allows 1 live stream. - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - if _, err := tc.StreamingInputCall(ctx); err != nil { - t.Fatalf("tc.StreamingInputCall(_) = _, %v, want _, <nil>", err) - } - // Loop until the new max stream setting is effective. - for { - ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) - _, err := tc.StreamingInputCall(ctx) - cancel() - if err == nil { - time.Sleep(5 * time.Millisecond) - continue - } - if status.Code(err) == codes.DeadlineExceeded { - break - } - t.Fatalf("tc.StreamingInputCall(_) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - - var wg sync.WaitGroup - for i := 0; i < 10; i++ { - wg.Add(1) - go func() { - defer wg.Done() - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 314) - if err != nil { - t.Error(err) - return - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: 1592, - Payload: payload, - } - // No rpc should go through due to the max streams limit. - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) - defer cancel() - if _, err := tc.UnaryCall(ctx, req, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Errorf("tc.UnaryCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - }() - } - wg.Wait() - - cancel() - // A new stream should be allowed after canceling the first one. - ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - if _, err := tc.StreamingInputCall(ctx); err != nil { - t.Fatalf("tc.StreamingInputCall(_) = _, %v, want _, %v", err, nil) - } -} - -func TestCompressServerHasNoSupport(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testCompressServerHasNoSupport(t, e) - } -} - -func testCompressServerHasNoSupport(t *testing.T, e env) { - te := newTest(t, e) - te.serverCompression = false - te.clientCompression = false - te.clientNopCompression = true - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - const argSize = 271828 - const respSize = 314159 - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.Unimplemented { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code %s", err, codes.Unimplemented) - } - // Streaming RPC - stream, err := tc.FullDuplexCall(context.Background()) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.Unimplemented { - t.Fatalf("%v.Recv() = %v, want error code %s", stream, err, codes.Unimplemented) - } -} - -func TestCompressOK(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testCompressOK(t, e) - } -} - -func testCompressOK(t *testing.T, e env) { - te := newTest(t, e) - te.serverCompression = true - te.clientCompression = true - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - // Unary call - const argSize = 271828 - const respSize = 314159 - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs("something", "something")) - if _, err := tc.UnaryCall(ctx, req); err != nil { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, <nil>", err) - } - // Streaming RPC - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - stream, err := tc.FullDuplexCall(ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - respParam := []*testpb.ResponseParameters{ - { - Size: 31415, - }, - } - payload, err = newPayload(testpb.PayloadType_COMPRESSABLE, int32(31415)) - if err != nil { - t.Fatal(err) - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - stream.CloseSend() - if _, err := stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = %v, want <nil>", stream, err) - } - if _, err := stream.Recv(); err != io.EOF { - t.Fatalf("%v.Recv() = %v, want io.EOF", stream, err) - } -} - -func TestIdentityEncoding(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testIdentityEncoding(t, e) - } -} - -func testIdentityEncoding(t *testing.T, e env) { - te := newTest(t, e) - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - // Unary call - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 5) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: 10, - Payload: payload, - } - ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs("something", "something")) - if _, err := tc.UnaryCall(ctx, req); err != nil { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, <nil>", err) - } - // Streaming RPC - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - stream, err := tc.FullDuplexCall(ctx, grpc.UseCompressor("identity")) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - payload, err = newPayload(testpb.PayloadType_COMPRESSABLE, int32(31415)) - if err != nil { - t.Fatal(err) - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: []*testpb.ResponseParameters{{Size: 10}}, - Payload: payload, - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - stream.CloseSend() - if _, err := stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = %v, want <nil>", stream, err) - } - if _, err := stream.Recv(); err != io.EOF { - t.Fatalf("%v.Recv() = %v, want io.EOF", stream, err) - } -} - -func TestUnaryClientInterceptor(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testUnaryClientInterceptor(t, e) - } -} - -func failOkayRPC(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { - err := invoker(ctx, method, req, reply, cc, opts...) - if err == nil { - return status.Error(codes.NotFound, "") - } - return err -} - -func testUnaryClientInterceptor(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.unaryClientInt = failOkayRPC - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - tc := testpb.NewTestServiceClient(te.clientConn()) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.NotFound { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, error code %s", tc, err, codes.NotFound) - } -} - -func TestStreamClientInterceptor(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testStreamClientInterceptor(t, e) - } -} - -func failOkayStream(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) { - s, err := streamer(ctx, desc, cc, method, opts...) - if err == nil { - return nil, status.Error(codes.NotFound, "") - } - return s, nil -} - -func testStreamClientInterceptor(t *testing.T, e env) { - te := newTest(t, e) - te.streamClientInt = failOkayStream - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - tc := testpb.NewTestServiceClient(te.clientConn()) - respParam := []*testpb.ResponseParameters{ - { - Size: int32(1), - }, - } - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(1)) - if err != nil { - t.Fatal(err) - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - if _, err := tc.StreamingOutputCall(context.Background(), req); status.Code(err) != codes.NotFound { - t.Fatalf("%v.StreamingOutputCall(_) = _, %v, want _, error code %s", tc, err, codes.NotFound) - } -} - -func TestUnaryServerInterceptor(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testUnaryServerInterceptor(t, e) - } -} - -func errInjector(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { - return nil, status.Error(codes.PermissionDenied, "") -} - -func testUnaryServerInterceptor(t *testing.T, e env) { - te := newTest(t, e) - te.unaryServerInt = errInjector - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - tc := testpb.NewTestServiceClient(te.clientConn()) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.PermissionDenied { - t.Fatalf("%v.EmptyCall(_, _) = _, %v, want _, error code %s", tc, err, codes.PermissionDenied) - } -} - -func TestStreamServerInterceptor(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - // TODO(bradfitz): Temporarily skip this env due to #619. - if e.name == "handler-tls" { - continue - } - testStreamServerInterceptor(t, e) - } -} - -func fullDuplexOnly(srv interface{}, ss grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error { - if info.FullMethod == "/grpc.testing.TestService/FullDuplexCall" { - return handler(srv, ss) - } - // Reject the other methods. - return status.Error(codes.PermissionDenied, "") -} - -func testStreamServerInterceptor(t *testing.T, e env) { - te := newTest(t, e) - te.streamServerInt = fullDuplexOnly - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - tc := testpb.NewTestServiceClient(te.clientConn()) - respParam := []*testpb.ResponseParameters{ - { - Size: int32(1), - }, - } - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, int32(1)) - if err != nil { - t.Fatal(err) - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - s1, err := tc.StreamingOutputCall(context.Background(), req) - if err != nil { - t.Fatalf("%v.StreamingOutputCall(_) = _, %v, want _, <nil>", tc, err) - } - if _, err := s1.Recv(); status.Code(err) != codes.PermissionDenied { - t.Fatalf("%v.StreamingInputCall(_) = _, %v, want _, error code %s", tc, err, codes.PermissionDenied) - } - s2, err := tc.FullDuplexCall(context.Background()) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := s2.Send(req); err != nil { - t.Fatalf("%v.Send(_) = %v, want <nil>", s2, err) - } - if _, err := s2.Recv(); err != nil { - t.Fatalf("%v.Recv() = _, %v, want _, <nil>", s2, err) - } -} - -// funcServer implements methods of TestServiceServer using funcs, -// similar to an http.HandlerFunc. -// Any unimplemented method will crash. Tests implement the method(s) -// they need. -type funcServer struct { - testpb.TestServiceServer - unaryCall func(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) - streamingInputCall func(stream testpb.TestService_StreamingInputCallServer) error - fullDuplexCall func(stream testpb.TestService_FullDuplexCallServer) error -} - -func (s *funcServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - return s.unaryCall(ctx, in) -} - -func (s *funcServer) StreamingInputCall(stream testpb.TestService_StreamingInputCallServer) error { - return s.streamingInputCall(stream) -} - -func (s *funcServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallServer) error { - return s.fullDuplexCall(stream) -} - -func TestClientRequestBodyErrorUnexpectedEOF(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testClientRequestBodyErrorUnexpectedEOF(t, e) - } -} - -func testClientRequestBodyErrorUnexpectedEOF(t *testing.T, e env) { - te := newTest(t, e) - ts := &funcServer{unaryCall: func(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - errUnexpectedCall := errors.New("unexpected call func server method") - t.Error(errUnexpectedCall) - return nil, errUnexpectedCall - }} - te.startServer(ts) - defer te.tearDown() - te.withServerTester(func(st *serverTester) { - st.writeHeadersGRPC(1, "/grpc.testing.TestService/UnaryCall") - // Say we have 5 bytes coming, but set END_STREAM flag: - st.writeData(1, true, []byte{0, 0, 0, 0, 5}) - st.wantAnyFrame() // wait for server to crash (it used to crash) - }) -} - -func TestClientRequestBodyErrorCloseAfterLength(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testClientRequestBodyErrorCloseAfterLength(t, e) - } -} - -func testClientRequestBodyErrorCloseAfterLength(t *testing.T, e env) { - te := newTest(t, e) - te.declareLogNoise("Server.processUnaryRPC failed to write status") - ts := &funcServer{unaryCall: func(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - errUnexpectedCall := errors.New("unexpected call func server method") - t.Error(errUnexpectedCall) - return nil, errUnexpectedCall - }} - te.startServer(ts) - defer te.tearDown() - te.withServerTester(func(st *serverTester) { - st.writeHeadersGRPC(1, "/grpc.testing.TestService/UnaryCall") - // say we're sending 5 bytes, but then close the connection instead. - st.writeData(1, false, []byte{0, 0, 0, 0, 5}) - st.cc.Close() - }) -} - -func TestClientRequestBodyErrorCancel(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testClientRequestBodyErrorCancel(t, e) - } -} - -func testClientRequestBodyErrorCancel(t *testing.T, e env) { - te := newTest(t, e) - gotCall := make(chan bool, 1) - ts := &funcServer{unaryCall: func(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) { - gotCall <- true - return new(testpb.SimpleResponse), nil - }} - te.startServer(ts) - defer te.tearDown() - te.withServerTester(func(st *serverTester) { - st.writeHeadersGRPC(1, "/grpc.testing.TestService/UnaryCall") - // Say we have 5 bytes coming, but cancel it instead. - st.writeRSTStream(1, http2.ErrCodeCancel) - st.writeData(1, false, []byte{0, 0, 0, 0, 5}) - - // Verify we didn't a call yet. - select { - case <-gotCall: - t.Fatal("unexpected call") - default: - } - - // And now send an uncanceled (but still invalid), just to get a response. - st.writeHeadersGRPC(3, "/grpc.testing.TestService/UnaryCall") - st.writeData(3, true, []byte{0, 0, 0, 0, 0}) - <-gotCall - st.wantAnyFrame() - }) -} - -func TestClientRequestBodyErrorCancelStreamingInput(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testClientRequestBodyErrorCancelStreamingInput(t, e) - } -} - -func testClientRequestBodyErrorCancelStreamingInput(t *testing.T, e env) { - te := newTest(t, e) - recvErr := make(chan error, 1) - ts := &funcServer{streamingInputCall: func(stream testpb.TestService_StreamingInputCallServer) error { - _, err := stream.Recv() - recvErr <- err - return nil - }} - te.startServer(ts) - defer te.tearDown() - te.withServerTester(func(st *serverTester) { - st.writeHeadersGRPC(1, "/grpc.testing.TestService/StreamingInputCall") - // Say we have 5 bytes coming, but cancel it instead. - st.writeData(1, false, []byte{0, 0, 0, 0, 5}) - st.writeRSTStream(1, http2.ErrCodeCancel) - - var got error - select { - case got = <-recvErr: - case <-time.After(3 * time.Second): - t.Fatal("timeout waiting for error") - } - if grpc.Code(got) != codes.Canceled { - t.Errorf("error = %#v; want error code %s", got, codes.Canceled) - } - }) -} - -func TestClientResourceExhaustedCancelFullDuplex(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.httpHandler { - // httpHandler write won't be blocked on flow control window. - continue - } - testClientResourceExhaustedCancelFullDuplex(t, e) - } -} - -func testClientResourceExhaustedCancelFullDuplex(t *testing.T, e env) { - te := newTest(t, e) - recvErr := make(chan error, 1) - ts := &funcServer{fullDuplexCall: func(stream testpb.TestService_FullDuplexCallServer) error { - defer close(recvErr) - _, err := stream.Recv() - if err != nil { - return status.Errorf(codes.Internal, "stream.Recv() got error: %v, want <nil>", err) - } - // create a payload that's larger than the default flow control window. - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 10) - if err != nil { - return err - } - resp := &testpb.StreamingOutputCallResponse{ - Payload: payload, - } - ce := make(chan error) - go func() { - var err error - for { - if err = stream.Send(resp); err != nil { - break - } - } - ce <- err - }() - select { - case err = <-ce: - case <-time.After(10 * time.Second): - err = errors.New("10s timeout reached") - } - recvErr <- err - return err - }} - te.startServer(ts) - defer te.tearDown() - // set a low limit on receive message size to error with Resource Exhausted on - // client side when server send a large message. - te.maxClientReceiveMsgSize = newInt(10) - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - stream, err := tc.FullDuplexCall(context.Background()) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - req := &testpb.StreamingOutputCallRequest{} - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - if _, err := stream.Recv(); status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - err = <-recvErr - if status.Code(err) != codes.Canceled { - t.Fatalf("server got error %v, want error code: %s", err, codes.Canceled) - } -} - -type clientTimeoutCreds struct { - timeoutReturned bool -} - -func (c *clientTimeoutCreds) ClientHandshake(ctx context.Context, addr string, rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - if !c.timeoutReturned { - c.timeoutReturned = true - return nil, nil, context.DeadlineExceeded - } - return rawConn, nil, nil -} -func (c *clientTimeoutCreds) ServerHandshake(rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - return rawConn, nil, nil -} -func (c *clientTimeoutCreds) Info() credentials.ProtocolInfo { - return credentials.ProtocolInfo{} -} -func (c *clientTimeoutCreds) Clone() credentials.TransportCredentials { - return nil -} -func (c *clientTimeoutCreds) OverrideServerName(s string) error { - return nil -} - -func TestNonFailFastRPCSucceedOnTimeoutCreds(t *testing.T) { - te := newTest(t, env{name: "timeout-cred", network: "tcp", security: "clientTimeoutCreds", balancer: "v1"}) - te.userAgent = testAppUA - te.startServer(&testServer{security: te.e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - // This unary call should succeed, because ClientHandshake will succeed for the second time. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); err != nil { - te.t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want <nil>", err) - } -} - -type serverDispatchCred struct { - rawConnCh chan net.Conn -} - -func newServerDispatchCred() *serverDispatchCred { - return &serverDispatchCred{ - rawConnCh: make(chan net.Conn, 1), - } -} -func (c *serverDispatchCred) ClientHandshake(ctx context.Context, addr string, rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - return rawConn, nil, nil -} -func (c *serverDispatchCred) ServerHandshake(rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - select { - case c.rawConnCh <- rawConn: - default: - } - return nil, nil, credentials.ErrConnDispatched -} -func (c *serverDispatchCred) Info() credentials.ProtocolInfo { - return credentials.ProtocolInfo{} -} -func (c *serverDispatchCred) Clone() credentials.TransportCredentials { - return nil -} -func (c *serverDispatchCred) OverrideServerName(s string) error { - return nil -} -func (c *serverDispatchCred) getRawConn() net.Conn { - return <-c.rawConnCh -} - -func TestServerCredsDispatch(t *testing.T) { - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen: %v", err) - } - cred := newServerDispatchCred() - s := grpc.NewServer(grpc.Creds(cred)) - go s.Serve(lis) - defer s.Stop() - - cc, err := grpc.Dial(lis.Addr().String(), grpc.WithTransportCredentials(cred)) - if err != nil { - t.Fatalf("grpc.Dial(%q) = %v", lis.Addr().String(), err) - } - defer cc.Close() - - rawConn := cred.getRawConn() - // Give grpc a chance to see the error and potentially close the connection. - // And check that connection is not closed after that. - time.Sleep(100 * time.Millisecond) - // Check rawConn is not closed. - if n, err := rawConn.Write([]byte{0}); n <= 0 || err != nil { - t.Errorf("Read() = %v, %v; want n>0, <nil>", n, err) - } -} - -type authorityCheckCreds struct { - got string -} - -func (c *authorityCheckCreds) ServerHandshake(rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - return rawConn, nil, nil -} -func (c *authorityCheckCreds) ClientHandshake(ctx context.Context, authority string, rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - c.got = authority - return rawConn, nil, nil -} -func (c *authorityCheckCreds) Info() credentials.ProtocolInfo { - return credentials.ProtocolInfo{} -} -func (c *authorityCheckCreds) Clone() credentials.TransportCredentials { - return c -} -func (c *authorityCheckCreds) OverrideServerName(s string) error { - return nil -} - -// This test makes sure that the authority client handshake gets is the endpoint -// in dial target, not the resolved ip address. -func TestCredsHandshakeAuthority(t *testing.T) { - const testAuthority = "test.auth.ori.ty" - - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen: %v", err) - } - cred := &authorityCheckCreds{} - s := grpc.NewServer() - go s.Serve(lis) - defer s.Stop() - - r, rcleanup := manual.GenerateAndRegisterManualResolver() - defer rcleanup() - - cc, err := grpc.Dial(r.Scheme()+":///"+testAuthority, grpc.WithTransportCredentials(cred)) - if err != nil { - t.Fatalf("grpc.Dial(%q) = %v", lis.Addr().String(), err) - } - defer cc.Close() - r.NewAddress([]resolver.Address{{Addr: lis.Addr().String()}}) - - ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond) - defer cancel() - for { - s := cc.GetState() - if s == connectivity.Ready { - break - } - if !cc.WaitForStateChange(ctx, s) { - // ctx got timeout or canceled. - t.Fatalf("ClientConn is not ready after 100 ms") - } - } - - if cred.got != testAuthority { - t.Fatalf("client creds got authority: %q, want: %q", cred.got, testAuthority) - } -} - -type clientFailCreds struct { - got string -} - -func (c *clientFailCreds) ServerHandshake(rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - return rawConn, nil, nil -} -func (c *clientFailCreds) ClientHandshake(ctx context.Context, authority string, rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) { - return nil, nil, fmt.Errorf("client handshake fails with fatal error") -} -func (c *clientFailCreds) Info() credentials.ProtocolInfo { - return credentials.ProtocolInfo{} -} -func (c *clientFailCreds) Clone() credentials.TransportCredentials { - return c -} -func (c *clientFailCreds) OverrideServerName(s string) error { - return nil -} - -// This test makes sure that failfast RPCs fail if client handshake fails with -// fatal errors. -func TestFailfastRPCFailOnFatalHandshakeError(t *testing.T) { - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen: %v", err) - } - defer lis.Close() - - cc, err := grpc.Dial("passthrough:///"+lis.Addr().String(), grpc.WithTransportCredentials(&clientFailCreds{})) - if err != nil { - t.Fatalf("grpc.Dial(_) = %v", err) - } - defer cc.Close() - - tc := testpb.NewTestServiceClient(cc) - // This unary call should fail, but not timeout. - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(true)); status.Code(err) != codes.Unavailable { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want <Unavailable>", err) - } -} - -func TestFlowControlLogicalRace(t *testing.T) { - // Test for a regression of https://github.com/grpc/grpc-go/issues/632, - // and other flow control bugs. - - defer leakcheck.Check(t) - - const ( - itemCount = 100 - itemSize = 1 << 10 - recvCount = 2 - maxFailures = 3 - - requestTimeout = time.Second * 5 - ) - - requestCount := 10000 - if raceMode { - requestCount = 1000 - } - - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen: %v", err) - } - defer lis.Close() - - s := grpc.NewServer() - testpb.RegisterTestServiceServer(s, &flowControlLogicalRaceServer{ - itemCount: itemCount, - itemSize: itemSize, - }) - defer s.Stop() - - go s.Serve(lis) - - ctx := context.Background() - - cc, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure(), grpc.WithBlock()) - if err != nil { - t.Fatalf("grpc.Dial(%q) = %v", lis.Addr().String(), err) - } - defer cc.Close() - cl := testpb.NewTestServiceClient(cc) - - failures := 0 - for i := 0; i < requestCount; i++ { - ctx, cancel := context.WithTimeout(ctx, requestTimeout) - output, err := cl.StreamingOutputCall(ctx, &testpb.StreamingOutputCallRequest{}) - if err != nil { - t.Fatalf("StreamingOutputCall; err = %q", err) - } - - j := 0 - loop: - for ; j < recvCount; j++ { - _, err := output.Recv() - if err != nil { - if err == io.EOF { - break loop - } - switch status.Code(err) { - case codes.DeadlineExceeded: - break loop - default: - t.Fatalf("Recv; err = %q", err) - } - } - } - cancel() - <-ctx.Done() - - if j < recvCount { - t.Errorf("got %d responses to request %d", j, i) - failures++ - if failures >= maxFailures { - // Continue past the first failure to see if the connection is - // entirely broken, or if only a single RPC was affected - break - } - } - } -} - -type flowControlLogicalRaceServer struct { - testpb.TestServiceServer - - itemSize int - itemCount int -} - -func (s *flowControlLogicalRaceServer) StreamingOutputCall(req *testpb.StreamingOutputCallRequest, srv testpb.TestService_StreamingOutputCallServer) error { - for i := 0; i < s.itemCount; i++ { - err := srv.Send(&testpb.StreamingOutputCallResponse{ - Payload: &testpb.Payload{ - // Sending a large stream of data which the client reject - // helps to trigger some types of flow control bugs. - // - // Reallocating memory here is inefficient, but the stress it - // puts on the GC leads to more frequent flow control - // failures. The GC likely causes more variety in the - // goroutine scheduling orders. - Body: bytes.Repeat([]byte("a"), s.itemSize), - }, - }) - if err != nil { - return err - } - } - return nil -} - -type lockingWriter struct { - mu sync.Mutex - w io.Writer -} - -func (lw *lockingWriter) Write(p []byte) (n int, err error) { - lw.mu.Lock() - defer lw.mu.Unlock() - return lw.w.Write(p) -} - -func (lw *lockingWriter) setWriter(w io.Writer) { - lw.mu.Lock() - defer lw.mu.Unlock() - lw.w = w -} - -var testLogOutput = &lockingWriter{w: os.Stderr} - -// awaitNewConnLogOutput waits for any of grpc.NewConn's goroutines to -// terminate, if they're still running. It spams logs with this -// message. We wait for it so our log filter is still -// active. Otherwise the "defer restore()" at the top of various test -// functions restores our log filter and then the goroutine spams. -func awaitNewConnLogOutput() { - awaitLogOutput(50*time.Millisecond, "grpc: the client connection is closing; please retry") -} - -func awaitLogOutput(maxWait time.Duration, phrase string) { - pb := []byte(phrase) - - timer := time.NewTimer(maxWait) - defer timer.Stop() - wakeup := make(chan bool, 1) - for { - if logOutputHasContents(pb, wakeup) { - return - } - select { - case <-timer.C: - // Too slow. Oh well. - return - case <-wakeup: - } - } -} - -func logOutputHasContents(v []byte, wakeup chan<- bool) bool { - testLogOutput.mu.Lock() - defer testLogOutput.mu.Unlock() - fw, ok := testLogOutput.w.(*filterWriter) - if !ok { - return false - } - fw.mu.Lock() - defer fw.mu.Unlock() - if bytes.Contains(fw.buf.Bytes(), v) { - return true - } - fw.wakeup = wakeup - return false -} - -var verboseLogs = flag.Bool("verbose_logs", false, "show all grpclog output, without filtering") - -func noop() {} - -// declareLogNoise declares that t is expected to emit the following noisy phrases, -// even on success. Those phrases will be filtered from grpclog output -// and only be shown if *verbose_logs or t ends up failing. -// The returned restore function should be called with defer to be run -// before the test ends. -func declareLogNoise(t *testing.T, phrases ...string) (restore func()) { - if *verboseLogs { - return noop - } - fw := &filterWriter{dst: os.Stderr, filter: phrases} - testLogOutput.setWriter(fw) - return func() { - if t.Failed() { - fw.mu.Lock() - defer fw.mu.Unlock() - if fw.buf.Len() > 0 { - t.Logf("Complete log output:\n%s", fw.buf.Bytes()) - } - } - testLogOutput.setWriter(os.Stderr) - } -} - -type filterWriter struct { - dst io.Writer - filter []string - - mu sync.Mutex - buf bytes.Buffer - wakeup chan<- bool // if non-nil, gets true on write -} - -func (fw *filterWriter) Write(p []byte) (n int, err error) { - fw.mu.Lock() - fw.buf.Write(p) - if fw.wakeup != nil { - select { - case fw.wakeup <- true: - default: - } - } - fw.mu.Unlock() - - ps := string(p) - for _, f := range fw.filter { - if strings.Contains(ps, f) { - return len(p), nil - } - } - return fw.dst.Write(p) -} - -// stubServer is a server that is easy to customize within individual test -// cases. -type stubServer struct { - // Guarantees we satisfy this interface; panics if unimplemented methods are called. - testpb.TestServiceServer - - // Customizable implementations of server handlers. - emptyCall func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) - fullDuplexCall func(stream testpb.TestService_FullDuplexCallServer) error - - // A client connected to this service the test may use. Created in Start(). - client testpb.TestServiceClient - - cleanups []func() // Lambdas executed in Stop(); populated by Start(). -} - -func (ss *stubServer) EmptyCall(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - return ss.emptyCall(ctx, in) -} - -func (ss *stubServer) FullDuplexCall(stream testpb.TestService_FullDuplexCallServer) error { - return ss.fullDuplexCall(stream) -} - -// Start starts the server and creates a client connected to it. -func (ss *stubServer) Start(sopts []grpc.ServerOption) error { - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - return fmt.Errorf(`net.Listen("tcp", "localhost:0") = %v`, err) - } - ss.cleanups = append(ss.cleanups, func() { lis.Close() }) - - s := grpc.NewServer(sopts...) - testpb.RegisterTestServiceServer(s, ss) - go s.Serve(lis) - ss.cleanups = append(ss.cleanups, s.Stop) - - cc, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure(), grpc.WithBlock()) - if err != nil { - return fmt.Errorf("grpc.Dial(%q) = %v", lis.Addr().String(), err) - } - ss.cleanups = append(ss.cleanups, func() { cc.Close() }) - - ss.client = testpb.NewTestServiceClient(cc) - return nil -} - -func (ss *stubServer) Stop() { - for i := len(ss.cleanups) - 1; i >= 0; i-- { - ss.cleanups[i]() - } -} - -func TestUnaryProxyDoesNotForwardMetadata(t *testing.T) { - const mdkey = "somedata" - - // endpoint ensures mdkey is NOT in metadata and returns an error if it is. - endpoint := &stubServer{ - emptyCall: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - if md, ok := metadata.FromIncomingContext(ctx); !ok || md[mdkey] != nil { - return nil, status.Errorf(codes.Internal, "endpoint: md=%v; want !contains(%q)", md, mdkey) - } - return &testpb.Empty{}, nil - }, - } - if err := endpoint.Start(nil); err != nil { - t.Fatalf("Error starting endpoint server: %v", err) - } - defer endpoint.Stop() - - // proxy ensures mdkey IS in metadata, then forwards the RPC to endpoint - // without explicitly copying the metadata. - proxy := &stubServer{ - emptyCall: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - if md, ok := metadata.FromIncomingContext(ctx); !ok || md[mdkey] == nil { - return nil, status.Errorf(codes.Internal, "proxy: md=%v; want contains(%q)", md, mdkey) - } - return endpoint.client.EmptyCall(ctx, in) - }, - } - if err := proxy.Start(nil); err != nil { - t.Fatalf("Error starting proxy server: %v", err) - } - defer proxy.Stop() - - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) - defer cancel() - md := metadata.Pairs(mdkey, "val") - ctx = metadata.NewOutgoingContext(ctx, md) - - // Sanity check that endpoint properly errors when it sees mdkey. - _, err := endpoint.client.EmptyCall(ctx, &testpb.Empty{}) - if s, ok := status.FromError(err); !ok || s.Code() != codes.Internal { - t.Fatalf("endpoint.client.EmptyCall(_, _) = _, %v; want _, <status with Code()=Internal>", err) - } - - if _, err := proxy.client.EmptyCall(ctx, &testpb.Empty{}); err != nil { - t.Fatal(err.Error()) - } -} - -func TestStreamingProxyDoesNotForwardMetadata(t *testing.T) { - const mdkey = "somedata" - - // doFDC performs a FullDuplexCall with client and returns the error from the - // first stream.Recv call, or nil if that error is io.EOF. Calls t.Fatal if - // the stream cannot be established. - doFDC := func(ctx context.Context, client testpb.TestServiceClient) error { - stream, err := client.FullDuplexCall(ctx) - if err != nil { - t.Fatalf("Unwanted error: %v", err) - } - if _, err := stream.Recv(); err != io.EOF { - return err - } - return nil - } - - // endpoint ensures mdkey is NOT in metadata and returns an error if it is. - endpoint := &stubServer{ - fullDuplexCall: func(stream testpb.TestService_FullDuplexCallServer) error { - ctx := stream.Context() - if md, ok := metadata.FromIncomingContext(ctx); !ok || md[mdkey] != nil { - return status.Errorf(codes.Internal, "endpoint: md=%v; want !contains(%q)", md, mdkey) - } - return nil - }, - } - if err := endpoint.Start(nil); err != nil { - t.Fatalf("Error starting endpoint server: %v", err) - } - defer endpoint.Stop() - - // proxy ensures mdkey IS in metadata, then forwards the RPC to endpoint - // without explicitly copying the metadata. - proxy := &stubServer{ - fullDuplexCall: func(stream testpb.TestService_FullDuplexCallServer) error { - ctx := stream.Context() - if md, ok := metadata.FromIncomingContext(ctx); !ok || md[mdkey] == nil { - return status.Errorf(codes.Internal, "endpoint: md=%v; want !contains(%q)", md, mdkey) - } - return doFDC(ctx, endpoint.client) - }, - } - if err := proxy.Start(nil); err != nil { - t.Fatalf("Error starting proxy server: %v", err) - } - defer proxy.Stop() - - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) - defer cancel() - md := metadata.Pairs(mdkey, "val") - ctx = metadata.NewOutgoingContext(ctx, md) - - // Sanity check that endpoint properly errors when it sees mdkey in ctx. - err := doFDC(ctx, endpoint.client) - if s, ok := status.FromError(err); !ok || s.Code() != codes.Internal { - t.Fatalf("stream.Recv() = _, %v; want _, <status with Code()=Internal>", err) - } - - if err := doFDC(ctx, proxy.client); err != nil { - t.Fatalf("doFDC(_, proxy.client) = %v; want nil", err) - } -} - -func TestStatsTagsAndTrace(t *testing.T) { - // Data added to context by client (typically in a stats handler). - tags := []byte{1, 5, 2, 4, 3} - trace := []byte{5, 2, 1, 3, 4} - - // endpoint ensures Tags() and Trace() in context match those that were added - // by the client and returns an error if not. - endpoint := &stubServer{ - emptyCall: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - md, _ := metadata.FromIncomingContext(ctx) - if tg := stats.Tags(ctx); !reflect.DeepEqual(tg, tags) { - return nil, status.Errorf(codes.Internal, "stats.Tags(%v)=%v; want %v", ctx, tg, tags) - } - if !reflect.DeepEqual(md["grpc-tags-bin"], []string{string(tags)}) { - return nil, status.Errorf(codes.Internal, "md['grpc-tags-bin']=%v; want %v", md["grpc-tags-bin"], tags) - } - if tr := stats.Trace(ctx); !reflect.DeepEqual(tr, trace) { - return nil, status.Errorf(codes.Internal, "stats.Trace(%v)=%v; want %v", ctx, tr, trace) - } - if !reflect.DeepEqual(md["grpc-trace-bin"], []string{string(trace)}) { - return nil, status.Errorf(codes.Internal, "md['grpc-trace-bin']=%v; want %v", md["grpc-trace-bin"], trace) - } - return &testpb.Empty{}, nil - }, - } - if err := endpoint.Start(nil); err != nil { - t.Fatalf("Error starting endpoint server: %v", err) - } - defer endpoint.Stop() - - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) - defer cancel() - - testCases := []struct { - ctx context.Context - want codes.Code - }{ - {ctx: ctx, want: codes.Internal}, - {ctx: stats.SetTags(ctx, tags), want: codes.Internal}, - {ctx: stats.SetTrace(ctx, trace), want: codes.Internal}, - {ctx: stats.SetTags(stats.SetTrace(ctx, tags), tags), want: codes.Internal}, - {ctx: stats.SetTags(stats.SetTrace(ctx, trace), tags), want: codes.OK}, - } - - for _, tc := range testCases { - _, err := endpoint.client.EmptyCall(tc.ctx, &testpb.Empty{}) - if tc.want == codes.OK && err != nil { - t.Fatalf("endpoint.client.EmptyCall(%v, _) = _, %v; want _, nil", tc.ctx, err) - } - if s, ok := status.FromError(err); !ok || s.Code() != tc.want { - t.Fatalf("endpoint.client.EmptyCall(%v, _) = _, %v; want _, <status with Code()=%v>", tc.ctx, err, tc.want) - } - } -} - -func TestTapTimeout(t *testing.T) { - sopts := []grpc.ServerOption{ - grpc.InTapHandle(func(ctx context.Context, _ *tap.Info) (context.Context, error) { - c, cancel := context.WithCancel(ctx) - // Call cancel instead of setting a deadline so we can detect which error - // occurred -- this cancellation (desired) or the client's deadline - // expired (indicating this cancellation did not affect the RPC). - time.AfterFunc(10*time.Millisecond, cancel) - return c, nil - }), - } - - ss := &stubServer{ - emptyCall: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - <-ctx.Done() - return &testpb.Empty{}, nil - }, - } - if err := ss.Start(sopts); err != nil { - t.Fatalf("Error starting endpoint server: %v", err) - } - defer ss.Stop() - - // This was known to be flaky; test several times. - for i := 0; i < 10; i++ { - // Set our own deadline in case the server hangs. - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) - res, err := ss.client.EmptyCall(ctx, &testpb.Empty{}) - cancel() - if s, ok := status.FromError(err); !ok || s.Code() != codes.Canceled { - t.Fatalf("ss.client.EmptyCall(context.Background(), _) = %v, %v; want nil, <status with Code()=Canceled>", res, err) - } - } - -} - -func TestClientWriteFailsAfterServerClosesStream(t *testing.T) { - ss := &stubServer{ - fullDuplexCall: func(stream testpb.TestService_FullDuplexCallServer) error { - return status.Errorf(codes.Internal, "") - }, - } - sopts := []grpc.ServerOption{} - if err := ss.Start(sopts); err != nil { - t.Fatalf("Error starting endpoing server: %v", err) - } - defer ss.Stop() - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - stream, err := ss.client.FullDuplexCall(ctx) - if err != nil { - t.Fatalf("Error while creating stream: %v", err) - } - for { - if err := stream.Send(&testpb.StreamingOutputCallRequest{}); err == nil { - time.Sleep(5 * time.Millisecond) - } else if err == io.EOF { - break // Success. - } else { - t.Fatalf("stream.Send(_) = %v, want io.EOF", err) - } - } - -} - -type windowSizeConfig struct { - serverStream int32 - serverConn int32 - clientStream int32 - clientConn int32 -} - -func max(a, b int32) int32 { - if a > b { - return a - } - return b -} - -func TestConfigurableWindowSizeWithLargeWindow(t *testing.T) { - defer leakcheck.Check(t) - wc := windowSizeConfig{ - serverStream: 8 * 1024 * 1024, - serverConn: 12 * 1024 * 1024, - clientStream: 6 * 1024 * 1024, - clientConn: 8 * 1024 * 1024, - } - for _, e := range listTestEnv() { - testConfigurableWindowSize(t, e, wc) - } -} - -func TestConfigurableWindowSizeWithSmallWindow(t *testing.T) { - defer leakcheck.Check(t) - wc := windowSizeConfig{ - serverStream: 1, - serverConn: 1, - clientStream: 1, - clientConn: 1, - } - for _, e := range listTestEnv() { - testConfigurableWindowSize(t, e, wc) - } -} - -func testConfigurableWindowSize(t *testing.T, e env, wc windowSizeConfig) { - te := newTest(t, e) - te.serverInitialWindowSize = wc.serverStream - te.serverInitialConnWindowSize = wc.serverConn - te.clientInitialWindowSize = wc.clientStream - te.clientInitialConnWindowSize = wc.clientConn - - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - stream, err := tc.FullDuplexCall(context.Background()) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - numOfIter := 11 - // Set message size to exhaust largest of window sizes. - messageSize := max(max(wc.serverStream, wc.serverConn), max(wc.clientStream, wc.clientConn)) / int32(numOfIter-1) - messageSize = max(messageSize, 64*1024) - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, messageSize) - if err != nil { - t.Fatal(err) - } - respParams := []*testpb.ResponseParameters{ - { - Size: messageSize, - }, - } - req := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParams, - Payload: payload, - } - for i := 0; i < numOfIter; i++ { - if err := stream.Send(req); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, req, err) - } - if _, err := stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = _, %v, want _, <nil>", stream, err) - } - } - if err := stream.CloseSend(); err != nil { - t.Fatalf("%v.CloseSend() = %v, want <nil>", stream, err) - } -} - -var ( - // test authdata - authdata = map[string]string{ - "test-key": "test-value", - "test-key2-bin": string([]byte{1, 2, 3}), - } -) - -type testPerRPCCredentials struct{} - -func (cr testPerRPCCredentials) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) { - return authdata, nil -} - -func (cr testPerRPCCredentials) RequireTransportSecurity() bool { - return false -} - -func authHandle(ctx context.Context, info *tap.Info) (context.Context, error) { - md, ok := metadata.FromIncomingContext(ctx) - if !ok { - return ctx, fmt.Errorf("didn't find metadata in context") - } - for k, vwant := range authdata { - vgot, ok := md[k] - if !ok { - return ctx, fmt.Errorf("didn't find authdata key %v in context", k) - } - if vgot[0] != vwant { - return ctx, fmt.Errorf("for key %v, got value %v, want %v", k, vgot, vwant) - } - } - return ctx, nil -} - -func TestPerRPCCredentialsViaDialOptions(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testPerRPCCredentialsViaDialOptions(t, e) - } -} - -func testPerRPCCredentialsViaDialOptions(t *testing.T, e env) { - te := newTest(t, e) - te.tapHandle = authHandle - te.perRPCCreds = testPerRPCCredentials{} - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - t.Fatalf("Test failed. Reason: %v", err) - } -} - -func TestPerRPCCredentialsViaCallOptions(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testPerRPCCredentialsViaCallOptions(t, e) - } -} - -func testPerRPCCredentialsViaCallOptions(t *testing.T, e env) { - te := newTest(t, e) - te.tapHandle = authHandle - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.PerRPCCredentials(testPerRPCCredentials{})); err != nil { - t.Fatalf("Test failed. Reason: %v", err) - } -} - -func TestPerRPCCredentialsViaDialOptionsAndCallOptions(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testPerRPCCredentialsViaDialOptionsAndCallOptions(t, e) - } -} - -func testPerRPCCredentialsViaDialOptionsAndCallOptions(t *testing.T, e env) { - te := newTest(t, e) - te.perRPCCreds = testPerRPCCredentials{} - // When credentials are provided via both dial options and call options, - // we apply both sets. - te.tapHandle = func(ctx context.Context, _ *tap.Info) (context.Context, error) { - md, ok := metadata.FromIncomingContext(ctx) - if !ok { - return ctx, fmt.Errorf("couldn't find metadata in context") - } - for k, vwant := range authdata { - vgot, ok := md[k] - if !ok { - return ctx, fmt.Errorf("couldn't find metadata for key %v", k) - } - if len(vgot) != 2 { - return ctx, fmt.Errorf("len of value for key %v was %v, want 2", k, len(vgot)) - } - if vgot[0] != vwant || vgot[1] != vwant { - return ctx, fmt.Errorf("value for %v was %v, want [%v, %v]", k, vgot, vwant, vwant) - } - } - return ctx, nil - } - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.PerRPCCredentials(testPerRPCCredentials{})); err != nil { - t.Fatalf("Test failed. Reason: %v", err) - } -} - -func TestWaitForReadyConnection(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testWaitForReadyConnection(t, e) - } - -} - -func testWaitForReadyConnection(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - - cc := te.clientConn() // Non-blocking dial. - tc := testpb.NewTestServiceClient(cc) - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - state := cc.GetState() - // Wait for connection to be Ready. - for ; state != connectivity.Ready && cc.WaitForStateChange(ctx, state); state = cc.GetState() { - } - if state != connectivity.Ready { - t.Fatalf("Want connection state to be Ready, got %v", state) - } - ctx, cancel = context.WithTimeout(context.Background(), time.Second) - defer cancel() - // Make a fail-fast RPC. - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}); err != nil { - t.Fatalf("TestService/EmptyCall(_,_) = _, %v, want _, nil", err) - } -} - -type errCodec struct { - noError bool -} - -func (c *errCodec) Marshal(v interface{}) ([]byte, error) { - if c.noError { - return []byte{}, nil - } - return nil, fmt.Errorf("3987^12 + 4365^12 = 4472^12") -} - -func (c *errCodec) Unmarshal(data []byte, v interface{}) error { - return nil -} - -func (c *errCodec) String() string { - return "Fermat's near-miss." -} - -func TestEncodeDoesntPanic(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testEncodeDoesntPanic(t, e) - } -} - -func testEncodeDoesntPanic(t *testing.T, e env) { - te := newTest(t, e) - erc := &errCodec{} - te.customCodec = erc - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - te.customCodec = nil - tc := testpb.NewTestServiceClient(te.clientConn()) - // Failure case, should not panic. - tc.EmptyCall(context.Background(), &testpb.Empty{}) - erc.noError = true - // Passing case. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); err != nil { - t.Fatalf("EmptyCall(_, _) = _, %v, want _, <nil>", err) - } -} - -func TestSvrWriteStatusEarlyWrite(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testSvrWriteStatusEarlyWrite(t, e) - } -} - -func testSvrWriteStatusEarlyWrite(t *testing.T, e env) { - te := newTest(t, e) - const smallSize = 1024 - const largeSize = 2048 - const extraLargeSize = 4096 - te.maxServerReceiveMsgSize = newInt(largeSize) - te.maxServerSendMsgSize = newInt(largeSize) - smallPayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, smallSize) - if err != nil { - t.Fatal(err) - } - extraLargePayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, extraLargeSize) - if err != nil { - t.Fatal(err) - } - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - respParam := []*testpb.ResponseParameters{ - { - Size: int32(smallSize), - }, - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: extraLargePayload, - } - // Test recv case: server receives a message larger than maxServerReceiveMsgSize. - stream, err := tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err = stream.Send(sreq); err != nil { - t.Fatalf("%v.Send() = _, %v, want <nil>", stream, err) - } - if _, err = stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - // Test send case: server sends a message larger than maxServerSendMsgSize. - sreq.Payload = smallPayload - respParam[0].Size = int32(extraLargeSize) - - stream, err = tc.FullDuplexCall(te.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err = stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err = stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } -} - -// The following functions with function name ending with TD indicates that they -// should be deleted after old service config API is deprecated and deleted. -func testServiceConfigSetupTD(t *testing.T, e env) (*test, chan grpc.ServiceConfig) { - te := newTest(t, e) - // We write before read. - ch := make(chan grpc.ServiceConfig, 1) - te.sc = ch - te.userAgent = testAppUA - te.declareLogNoise( - "transport: http2Client.notifyError got notified that the client transport was broken EOF", - "grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing", - "grpc: addrConn.resetTransport failed to create client transport: connection error", - "Failed to dial : context canceled; please retry.", - ) - return te, ch -} - -func TestServiceConfigGetMethodConfigTD(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testGetMethodConfigTD(t, e) - } -} - -func testGetMethodConfigTD(t *testing.T, e env) { - te, ch := testServiceConfigSetupTD(t, e) - defer te.tearDown() - - mc1 := grpc.MethodConfig{ - WaitForReady: newBool(true), - Timeout: newDuration(time.Millisecond), - } - mc2 := grpc.MethodConfig{WaitForReady: newBool(false)} - m := make(map[string]grpc.MethodConfig) - m["/grpc.testing.TestService/EmptyCall"] = mc1 - m["/grpc.testing.TestService/"] = mc2 - sc := grpc.ServiceConfig{ - Methods: m, - } - ch <- sc - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - // The following RPCs are expected to become non-fail-fast ones with 1ms deadline. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - - m = make(map[string]grpc.MethodConfig) - m["/grpc.testing.TestService/UnaryCall"] = mc1 - m["/grpc.testing.TestService/"] = mc2 - sc = grpc.ServiceConfig{ - Methods: m, - } - ch <- sc - // Wait for the new service config to propagate. - for { - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) == codes.DeadlineExceeded { - continue - } - break - } - // The following RPCs are expected to become fail-fast. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.Unavailable { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.Unavailable) - } -} - -func TestServiceConfigWaitForReadyTD(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testServiceConfigWaitForReadyTD(t, e) - } -} - -func testServiceConfigWaitForReadyTD(t *testing.T, e env) { - te, ch := testServiceConfigSetupTD(t, e) - defer te.tearDown() - - // Case1: Client API set failfast to be false, and service config set wait_for_ready to be false, Client API should win, and the rpc will wait until deadline exceeds. - mc := grpc.MethodConfig{ - WaitForReady: newBool(false), - Timeout: newDuration(time.Millisecond), - } - m := make(map[string]grpc.MethodConfig) - m["/grpc.testing.TestService/EmptyCall"] = mc - m["/grpc.testing.TestService/FullDuplexCall"] = mc - sc := grpc.ServiceConfig{ - Methods: m, - } - ch <- sc - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - // The following RPCs are expected to become non-fail-fast ones with 1ms deadline. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - if _, err := tc.FullDuplexCall(context.Background(), grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want %s", err, codes.DeadlineExceeded) - } - - // Generate a service config update. - // Case2: Client API does not set failfast, and service config set wait_for_ready to be true, and the rpc will wait until deadline exceeds. - mc.WaitForReady = newBool(true) - m = make(map[string]grpc.MethodConfig) - m["/grpc.testing.TestService/EmptyCall"] = mc - m["/grpc.testing.TestService/FullDuplexCall"] = mc - sc = grpc.ServiceConfig{ - Methods: m, - } - ch <- sc - - // Wait for the new service config to take effect. - mc = cc.GetMethodConfig("/grpc.testing.TestService/EmptyCall") - for { - if !*mc.WaitForReady { - time.Sleep(100 * time.Millisecond) - mc = cc.GetMethodConfig("/grpc.testing.TestService/EmptyCall") - continue - } - break - } - // The following RPCs are expected to become non-fail-fast ones with 1ms deadline. - if _, err := tc.EmptyCall(context.Background(), &testpb.Empty{}); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - if _, err := tc.FullDuplexCall(context.Background()); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want %s", err, codes.DeadlineExceeded) - } -} - -func TestServiceConfigTimeoutTD(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testServiceConfigTimeoutTD(t, e) - } -} - -func testServiceConfigTimeoutTD(t *testing.T, e env) { - te, ch := testServiceConfigSetupTD(t, e) - defer te.tearDown() - - // Case1: Client API sets timeout to be 1ns and ServiceConfig sets timeout to be 1hr. Timeout should be 1ns (min of 1ns and 1hr) and the rpc will wait until deadline exceeds. - mc := grpc.MethodConfig{ - Timeout: newDuration(time.Hour), - } - m := make(map[string]grpc.MethodConfig) - m["/grpc.testing.TestService/EmptyCall"] = mc - m["/grpc.testing.TestService/FullDuplexCall"] = mc - sc := grpc.ServiceConfig{ - Methods: m, - } - ch <- sc - - cc := te.clientConn() - tc := testpb.NewTestServiceClient(cc) - // The following RPCs are expected to become non-fail-fast ones with 1ns deadline. - ctx, cancel := context.WithTimeout(context.Background(), time.Nanosecond) - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - cancel() - ctx, cancel = context.WithTimeout(context.Background(), time.Nanosecond) - if _, err := tc.FullDuplexCall(ctx, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want %s", err, codes.DeadlineExceeded) - } - cancel() - - // Generate a service config update. - // Case2: Client API sets timeout to be 1hr and ServiceConfig sets timeout to be 1ns. Timeout should be 1ns (min of 1ns and 1hr) and the rpc will wait until deadline exceeds. - mc.Timeout = newDuration(time.Nanosecond) - m = make(map[string]grpc.MethodConfig) - m["/grpc.testing.TestService/EmptyCall"] = mc - m["/grpc.testing.TestService/FullDuplexCall"] = mc - sc = grpc.ServiceConfig{ - Methods: m, - } - ch <- sc - - // Wait for the new service config to take effect. - mc = cc.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall") - for { - if *mc.Timeout != time.Nanosecond { - time.Sleep(100 * time.Millisecond) - mc = cc.GetMethodConfig("/grpc.testing.TestService/FullDuplexCall") - continue - } - break - } - - ctx, cancel = context.WithTimeout(context.Background(), time.Hour) - if _, err := tc.EmptyCall(ctx, &testpb.Empty{}, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/EmptyCall(_, _) = _, %v, want _, %s", err, codes.DeadlineExceeded) - } - cancel() - - ctx, cancel = context.WithTimeout(context.Background(), time.Hour) - if _, err := tc.FullDuplexCall(ctx, grpc.FailFast(false)); status.Code(err) != codes.DeadlineExceeded { - t.Fatalf("TestService/FullDuplexCall(_) = _, %v, want %s", err, codes.DeadlineExceeded) - } - cancel() -} - -func TestServiceConfigMaxMsgSizeTD(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testServiceConfigMaxMsgSizeTD(t, e) - } -} - -func testServiceConfigMaxMsgSizeTD(t *testing.T, e env) { - // Setting up values and objects shared across all test cases. - const smallSize = 1 - const largeSize = 1024 - const extraLargeSize = 2048 - - smallPayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, smallSize) - if err != nil { - t.Fatal(err) - } - largePayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, largeSize) - if err != nil { - t.Fatal(err) - } - extraLargePayload, err := newPayload(testpb.PayloadType_COMPRESSABLE, extraLargeSize) - if err != nil { - t.Fatal(err) - } - - mc := grpc.MethodConfig{ - MaxReqSize: newInt(extraLargeSize), - MaxRespSize: newInt(extraLargeSize), - } - - m := make(map[string]grpc.MethodConfig) - m["/grpc.testing.TestService/UnaryCall"] = mc - m["/grpc.testing.TestService/FullDuplexCall"] = mc - sc := grpc.ServiceConfig{ - Methods: m, - } - // Case1: sc set maxReqSize to 2048 (send), maxRespSize to 2048 (recv). - te1, ch1 := testServiceConfigSetupTD(t, e) - te1.startServer(&testServer{security: e.security}) - defer te1.tearDown() - - ch1 <- sc - tc := testpb.NewTestServiceClient(te1.clientConn()) - - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: int32(extraLargeSize), - Payload: smallPayload, - } - // Test for unary RPC recv. - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for unary RPC send. - req.Payload = extraLargePayload - req.ResponseSize = int32(smallSize) - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for streaming RPC recv. - respParam := []*testpb.ResponseParameters{ - { - Size: int32(extraLargeSize), - }, - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: smallPayload, - } - stream, err := tc.FullDuplexCall(te1.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test for streaming RPC send. - respParam[0].Size = int32(smallSize) - sreq.Payload = extraLargePayload - stream, err = tc.FullDuplexCall(te1.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Send(%v) = %v, want _, error code: %s", stream, sreq, err, codes.ResourceExhausted) - } - - // Case2: Client API set maxReqSize to 1024 (send), maxRespSize to 1024 (recv). Sc sets maxReqSize to 2048 (send), maxRespSize to 2048 (recv). - te2, ch2 := testServiceConfigSetupTD(t, e) - te2.maxClientReceiveMsgSize = newInt(1024) - te2.maxClientSendMsgSize = newInt(1024) - te2.startServer(&testServer{security: e.security}) - defer te2.tearDown() - ch2 <- sc - tc = testpb.NewTestServiceClient(te2.clientConn()) - - // Test for unary RPC recv. - req.Payload = smallPayload - req.ResponseSize = int32(largeSize) - - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for unary RPC send. - req.Payload = largePayload - req.ResponseSize = int32(smallSize) - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for streaming RPC recv. - stream, err = tc.FullDuplexCall(te2.ctx) - respParam[0].Size = int32(largeSize) - sreq.Payload = smallPayload - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test for streaming RPC send. - respParam[0].Size = int32(smallSize) - sreq.Payload = largePayload - stream, err = tc.FullDuplexCall(te2.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Send(%v) = %v, want _, error code: %s", stream, sreq, err, codes.ResourceExhausted) - } - - // Case3: Client API set maxReqSize to 4096 (send), maxRespSize to 4096 (recv). Sc sets maxReqSize to 2048 (send), maxRespSize to 2048 (recv). - te3, ch3 := testServiceConfigSetupTD(t, e) - te3.maxClientReceiveMsgSize = newInt(4096) - te3.maxClientSendMsgSize = newInt(4096) - te3.startServer(&testServer{security: e.security}) - defer te3.tearDown() - ch3 <- sc - tc = testpb.NewTestServiceClient(te3.clientConn()) - - // Test for unary RPC recv. - req.Payload = smallPayload - req.ResponseSize = int32(largeSize) - - if _, err := tc.UnaryCall(context.Background(), req); err != nil { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want <nil>", err) - } - - req.ResponseSize = int32(extraLargeSize) - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for unary RPC send. - req.Payload = largePayload - req.ResponseSize = int32(smallSize) - if _, err := tc.UnaryCall(context.Background(), req); err != nil { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want <nil>", err) - } - - req.Payload = extraLargePayload - if _, err := tc.UnaryCall(context.Background(), req); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, error code: %s", err, codes.ResourceExhausted) - } - - // Test for streaming RPC recv. - stream, err = tc.FullDuplexCall(te3.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - respParam[0].Size = int32(largeSize) - sreq.Payload = smallPayload - - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = _, %v, want <nil>", stream, err) - } - - respParam[0].Size = int32(extraLargeSize) - - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Recv() = _, %v, want _, error code: %s", stream, err, codes.ResourceExhausted) - } - - // Test for streaming RPC send. - respParam[0].Size = int32(smallSize) - sreq.Payload = largePayload - stream, err = tc.FullDuplexCall(te3.ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - sreq.Payload = extraLargePayload - if err := stream.Send(sreq); err == nil || status.Code(err) != codes.ResourceExhausted { - t.Fatalf("%v.Send(%v) = %v, want _, error code: %s", stream, sreq, err, codes.ResourceExhausted) - } -} - -func TestMethodFromServerStream(t *testing.T) { - defer leakcheck.Check(t) - const testMethod = "/package.service/method" - e := tcpClearRREnv - te := newTest(t, e) - var method string - var ok bool - te.unknownHandler = func(srv interface{}, stream grpc.ServerStream) error { - method, ok = grpc.MethodFromServerStream(stream) - return nil - } - - te.startServer(nil) - defer te.tearDown() - _ = te.clientConn().Invoke(context.Background(), testMethod, nil, nil) - if !ok || method != testMethod { - t.Fatalf("Invoke with method %q, got %q, %v, want %q, true", testMethod, method, ok, testMethod) - } -} - -func TestCompressorRegister(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - testCompressorRegister(t, e) - } -} - -func testCompressorRegister(t *testing.T, e env) { - te := newTest(t, e) - te.clientCompression = false - te.serverCompression = false - te.clientUseCompression = true - - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - - // Unary call - const argSize = 271828 - const respSize = 314159 - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, argSize) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseSize: respSize, - Payload: payload, - } - ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs("something", "something")) - if _, err := tc.UnaryCall(ctx, req); err != nil { - t.Fatalf("TestService/UnaryCall(_, _) = _, %v, want _, <nil>", err) - } - // Streaming RPC - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - stream, err := tc.FullDuplexCall(ctx) - if err != nil { - t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err) - } - respParam := []*testpb.ResponseParameters{ - { - Size: 31415, - }, - } - payload, err = newPayload(testpb.PayloadType_COMPRESSABLE, int32(31415)) - if err != nil { - t.Fatal(err) - } - sreq := &testpb.StreamingOutputCallRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - ResponseParameters: respParam, - Payload: payload, - } - if err := stream.Send(sreq); err != nil { - t.Fatalf("%v.Send(%v) = %v, want <nil>", stream, sreq, err) - } - if _, err := stream.Recv(); err != nil { - t.Fatalf("%v.Recv() = %v, want <nil>", stream, err) - } -} - -func TestServeExitsWhenListenerClosed(t *testing.T) { - defer leakcheck.Check(t) - - ss := &stubServer{ - emptyCall: func(context.Context, *testpb.Empty) (*testpb.Empty, error) { - return &testpb.Empty{}, nil - }, - } - - s := grpc.NewServer() - testpb.RegisterTestServiceServer(s, ss) - - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to create listener: %v", err) - } - - done := make(chan struct{}) - go func() { - s.Serve(lis) - close(done) - }() - - cc, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure(), grpc.WithBlock()) - if err != nil { - t.Fatalf("Failed to dial server: %v", err) - } - defer cc.Close() - c := testpb.NewTestServiceClient(cc) - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - if _, err := c.EmptyCall(ctx, &testpb.Empty{}); err != nil { - t.Fatalf("Failed to send test RPC to server: %v", err) - } - - if err := lis.Close(); err != nil { - t.Fatalf("Failed to close listener: %v", err) - } - const timeout = 5 * time.Second - timer := time.NewTimer(timeout) - select { - case <-done: - return - case <-timer.C: - t.Fatalf("Serve did not return after %v", timeout) - } -} - -func TestClientDoesntDeadlockWhileWritingErrornousLargeMessages(t *testing.T) { - defer leakcheck.Check(t) - for _, e := range listTestEnv() { - if e.httpHandler { - continue - } - testClientDoesntDeadlockWhileWritingErrornousLargeMessages(t, e) - } -} - -func testClientDoesntDeadlockWhileWritingErrornousLargeMessages(t *testing.T, e env) { - te := newTest(t, e) - te.userAgent = testAppUA - smallSize := 1024 - te.maxServerReceiveMsgSize = &smallSize - te.startServer(&testServer{security: e.security}) - defer te.tearDown() - tc := testpb.NewTestServiceClient(te.clientConn()) - payload, err := newPayload(testpb.PayloadType_COMPRESSABLE, 1048576) - if err != nil { - t.Fatal(err) - } - req := &testpb.SimpleRequest{ - ResponseType: testpb.PayloadType_COMPRESSABLE, - Payload: payload, - } - var wg sync.WaitGroup - for i := 0; i < 10; i++ { - wg.Add(1) - go func() { - defer wg.Done() - for j := 0; j < 100; j++ { - ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(time.Second*10)) - defer cancel() - if _, err := tc.UnaryCall(ctx, req); status.Code(err) != codes.ResourceExhausted { - t.Errorf("TestService/UnaryCall(_,_) = _. %v, want code: %s", err, codes.ResourceExhausted) - return - } - } - }() - } - wg.Wait() -} diff --git a/vendor/google.golang.org/grpc/test/gracefulstop_test.go b/vendor/google.golang.org/grpc/test/gracefulstop_test.go deleted file mode 100644 index 7ac12b09..00000000 --- a/vendor/google.golang.org/grpc/test/gracefulstop_test.go +++ /dev/null @@ -1,215 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package test - -import ( - "fmt" - "net" - "sync" - "testing" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/test/leakcheck" - - testpb "google.golang.org/grpc/test/grpc_testing" -) - -type delayListener struct { - net.Listener - closeCalled chan struct{} - acceptCalled chan struct{} - allowCloseCh chan struct{} - cc *delayConn - dialed bool -} - -func (d *delayListener) Accept() (net.Conn, error) { - select { - case <-d.acceptCalled: - // On the second call, block until closed, then return an error. - <-d.closeCalled - <-d.allowCloseCh - return nil, fmt.Errorf("listener is closed") - default: - close(d.acceptCalled) - return d.Listener.Accept() - } -} - -func (d *delayListener) allowClose() { - close(d.allowCloseCh) -} -func (d *delayListener) Close() error { - close(d.closeCalled) - go func() { - <-d.allowCloseCh - d.Listener.Close() - }() - return nil -} - -func (d *delayListener) allowClientRead() { - d.cc.allowRead() -} - -func (d *delayListener) Dial(to time.Duration) (net.Conn, error) { - if d.dialed { - // Only hand out one connection (net.Dial can return more even after the - // listener is closed). This is not thread-safe, but Dial should never be - // called concurrently in this environment. - return nil, fmt.Errorf("no more conns") - } - d.dialed = true - c, err := net.DialTimeout("tcp", d.Listener.Addr().String(), to) - if err != nil { - return nil, err - } - d.cc = &delayConn{Conn: c, blockRead: make(chan struct{})} - return d.cc, nil -} - -func (d *delayListener) clientWriteCalledChan() <-chan struct{} { - return d.cc.writeCalledChan() -} - -type delayConn struct { - net.Conn - blockRead chan struct{} - mu sync.Mutex - writeCalled chan struct{} -} - -func (d *delayConn) writeCalledChan() <-chan struct{} { - d.mu.Lock() - defer d.mu.Unlock() - d.writeCalled = make(chan struct{}) - return d.writeCalled -} -func (d *delayConn) allowRead() { - close(d.blockRead) -} -func (d *delayConn) Read(b []byte) (n int, err error) { - <-d.blockRead - return d.Conn.Read(b) -} -func (d *delayConn) Write(b []byte) (n int, err error) { - d.mu.Lock() - if d.writeCalled != nil { - close(d.writeCalled) - d.writeCalled = nil - } - d.mu.Unlock() - return d.Conn.Write(b) -} - -func TestGracefulStop(t *testing.T) { - defer leakcheck.Check(t) - // This test ensures GracefulStop cannot race and break RPCs on new - // connections created after GracefulStop was called but before - // listener.Accept() returns a "closing" error. - // - // Steps of this test: - // 1. Start Server - // 2. GracefulStop() Server after listener's Accept is called, but don't - // allow Accept() to exit when Close() is called on it. - // 3. Create a new connection to the server after listener.Close() is called. - // Server will want to send a GoAway on the new conn, but we delay client - // reads until 5. - // 4. Send an RPC on the new connection. - // 5. Allow the client to read the GoAway. The RPC should complete - // successfully. - - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Error listenening: %v", err) - } - dlis := &delayListener{ - Listener: lis, - acceptCalled: make(chan struct{}), - closeCalled: make(chan struct{}), - allowCloseCh: make(chan struct{}), - } - d := func(_ string, to time.Duration) (net.Conn, error) { return dlis.Dial(to) } - - ss := &stubServer{ - emptyCall: func(ctx context.Context, in *testpb.Empty) (*testpb.Empty, error) { - return &testpb.Empty{}, nil - }, - } - s := grpc.NewServer() - testpb.RegisterTestServiceServer(s, ss) - - // 1. Start Server - wg := sync.WaitGroup{} - wg.Add(1) - go func() { - s.Serve(dlis) - wg.Done() - }() - - // 2. GracefulStop() Server after listener's Accept is called, but don't - // allow Accept() to exit when Close() is called on it. - <-dlis.acceptCalled - wg.Add(1) - go func() { - s.GracefulStop() - wg.Done() - }() - - // 3. Create a new connection to the server after listener.Close() is called. - // Server will want to send a GoAway on the new conn, but we delay it - // until 5. - - <-dlis.closeCalled // Block until GracefulStop calls dlis.Close() - - // Now dial. The listener's Accept method will return a valid connection, - // even though GracefulStop has closed the listener. - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - cc, err := grpc.DialContext(ctx, "", grpc.WithInsecure(), grpc.WithBlock(), grpc.WithDialer(d)) - if err != nil { - t.Fatalf("grpc.Dial(%q) = %v", lis.Addr().String(), err) - } - cancel() - client := testpb.NewTestServiceClient(cc) - defer cc.Close() - - dlis.allowClose() - - wcch := dlis.clientWriteCalledChan() - go func() { - // 5. Allow the client to read the GoAway. The RPC should complete - // successfully. - <-wcch - dlis.allowClientRead() - }() - - // 4. Send an RPC on the new connection. - // The server would send a GOAWAY first, but we are delaying the server's - // writes for now until the client writes more than the preface. - ctx, cancel = context.WithTimeout(context.Background(), 5*time.Second) - if _, err := client.EmptyCall(ctx, &testpb.Empty{}); err != nil { - t.Fatalf("EmptyCall() = %v; want <nil>", err) - } - - // 5. happens above, then we finish the call. - cancel() - wg.Wait() -} diff --git a/vendor/google.golang.org/grpc/test/grpc_testing/test.pb.go b/vendor/google.golang.org/grpc/test/grpc_testing/test.pb.go deleted file mode 100644 index ab48a152..00000000 --- a/vendor/google.golang.org/grpc/test/grpc_testing/test.pb.go +++ /dev/null @@ -1,766 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: grpc_testing/test.proto - -/* -Package grpc_testing is a generated protocol buffer package. - -It is generated from these files: - grpc_testing/test.proto - -It has these top-level messages: - Empty - Payload - SimpleRequest - SimpleResponse - StreamingInputCallRequest - StreamingInputCallResponse - ResponseParameters - StreamingOutputCallRequest - StreamingOutputCallResponse -*/ -package grpc_testing - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -// The type of payload that should be returned. -type PayloadType int32 - -const ( - // Compressable text format. - PayloadType_COMPRESSABLE PayloadType = 0 - // Uncompressable binary format. - PayloadType_UNCOMPRESSABLE PayloadType = 1 - // Randomly chosen from all other formats defined in this enum. - PayloadType_RANDOM PayloadType = 2 -) - -var PayloadType_name = map[int32]string{ - 0: "COMPRESSABLE", - 1: "UNCOMPRESSABLE", - 2: "RANDOM", -} -var PayloadType_value = map[string]int32{ - "COMPRESSABLE": 0, - "UNCOMPRESSABLE": 1, - "RANDOM": 2, -} - -func (x PayloadType) String() string { - return proto.EnumName(PayloadType_name, int32(x)) -} -func (PayloadType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -type Empty struct { -} - -func (m *Empty) Reset() { *m = Empty{} } -func (m *Empty) String() string { return proto.CompactTextString(m) } -func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -// A block of data, to simply increase gRPC message size. -type Payload struct { - // The type of data in body. - Type PayloadType `protobuf:"varint,1,opt,name=type,enum=grpc.testing.PayloadType" json:"type,omitempty"` - // Primary contents of payload. - Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` -} - -func (m *Payload) Reset() { *m = Payload{} } -func (m *Payload) String() string { return proto.CompactTextString(m) } -func (*Payload) ProtoMessage() {} -func (*Payload) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Payload) GetType() PayloadType { - if m != nil { - return m.Type - } - return PayloadType_COMPRESSABLE -} - -func (m *Payload) GetBody() []byte { - if m != nil { - return m.Body - } - return nil -} - -// Unary request. -type SimpleRequest struct { - // Desired payload type in the response from the server. - // If response_type is RANDOM, server randomly chooses one from other formats. - ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,enum=grpc.testing.PayloadType" json:"response_type,omitempty"` - // Desired payload size in the response from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - ResponseSize int32 `protobuf:"varint,2,opt,name=response_size,json=responseSize" json:"response_size,omitempty"` - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"` - // Whether SimpleResponse should include username. - FillUsername bool `protobuf:"varint,4,opt,name=fill_username,json=fillUsername" json:"fill_username,omitempty"` - // Whether SimpleResponse should include OAuth scope. - FillOauthScope bool `protobuf:"varint,5,opt,name=fill_oauth_scope,json=fillOauthScope" json:"fill_oauth_scope,omitempty"` -} - -func (m *SimpleRequest) Reset() { *m = SimpleRequest{} } -func (m *SimpleRequest) String() string { return proto.CompactTextString(m) } -func (*SimpleRequest) ProtoMessage() {} -func (*SimpleRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *SimpleRequest) GetResponseType() PayloadType { - if m != nil { - return m.ResponseType - } - return PayloadType_COMPRESSABLE -} - -func (m *SimpleRequest) GetResponseSize() int32 { - if m != nil { - return m.ResponseSize - } - return 0 -} - -func (m *SimpleRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *SimpleRequest) GetFillUsername() bool { - if m != nil { - return m.FillUsername - } - return false -} - -func (m *SimpleRequest) GetFillOauthScope() bool { - if m != nil { - return m.FillOauthScope - } - return false -} - -// Unary response, as configured by the request. -type SimpleResponse struct { - // Payload to increase message size. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` - // The user the request came from, for verifying authentication was - // successful when the client expected it. - Username string `protobuf:"bytes,2,opt,name=username" json:"username,omitempty"` - // OAuth scope. - OauthScope string `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope" json:"oauth_scope,omitempty"` -} - -func (m *SimpleResponse) Reset() { *m = SimpleResponse{} } -func (m *SimpleResponse) String() string { return proto.CompactTextString(m) } -func (*SimpleResponse) ProtoMessage() {} -func (*SimpleResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *SimpleResponse) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *SimpleResponse) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *SimpleResponse) GetOauthScope() string { - if m != nil { - return m.OauthScope - } - return "" -} - -// Client-streaming request. -type StreamingInputCallRequest struct { - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` -} - -func (m *StreamingInputCallRequest) Reset() { *m = StreamingInputCallRequest{} } -func (m *StreamingInputCallRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingInputCallRequest) ProtoMessage() {} -func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *StreamingInputCallRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -// Client-streaming response. -type StreamingInputCallResponse struct { - // Aggregated size of payloads received from the client. - AggregatedPayloadSize int32 `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize" json:"aggregated_payload_size,omitempty"` -} - -func (m *StreamingInputCallResponse) Reset() { *m = StreamingInputCallResponse{} } -func (m *StreamingInputCallResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingInputCallResponse) ProtoMessage() {} -func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -func (m *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 { - if m != nil { - return m.AggregatedPayloadSize - } - return 0 -} - -// Configuration for a particular response. -type ResponseParameters struct { - // Desired payload sizes in responses from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - Size int32 `protobuf:"varint,1,opt,name=size" json:"size,omitempty"` - // Desired interval between consecutive responses in the response stream in - // microseconds. - IntervalUs int32 `protobuf:"varint,2,opt,name=interval_us,json=intervalUs" json:"interval_us,omitempty"` -} - -func (m *ResponseParameters) Reset() { *m = ResponseParameters{} } -func (m *ResponseParameters) String() string { return proto.CompactTextString(m) } -func (*ResponseParameters) ProtoMessage() {} -func (*ResponseParameters) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *ResponseParameters) GetSize() int32 { - if m != nil { - return m.Size - } - return 0 -} - -func (m *ResponseParameters) GetIntervalUs() int32 { - if m != nil { - return m.IntervalUs - } - return 0 -} - -// Server-streaming request. -type StreamingOutputCallRequest struct { - // Desired payload type in the response from the server. - // If response_type is RANDOM, the payload from each response in the stream - // might be of different types. This is to simulate a mixed type of payload - // stream. - ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,enum=grpc.testing.PayloadType" json:"response_type,omitempty"` - // Configuration for each expected response message. - ResponseParameters []*ResponseParameters `protobuf:"bytes,2,rep,name=response_parameters,json=responseParameters" json:"response_parameters,omitempty"` - // Optional input payload sent along with the request. - Payload *Payload `protobuf:"bytes,3,opt,name=payload" json:"payload,omitempty"` -} - -func (m *StreamingOutputCallRequest) Reset() { *m = StreamingOutputCallRequest{} } -func (m *StreamingOutputCallRequest) String() string { return proto.CompactTextString(m) } -func (*StreamingOutputCallRequest) ProtoMessage() {} -func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *StreamingOutputCallRequest) GetResponseType() PayloadType { - if m != nil { - return m.ResponseType - } - return PayloadType_COMPRESSABLE -} - -func (m *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters { - if m != nil { - return m.ResponseParameters - } - return nil -} - -func (m *StreamingOutputCallRequest) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -// Server-streaming response, as configured by the request and parameters. -type StreamingOutputCallResponse struct { - // Payload to increase response size. - Payload *Payload `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` -} - -func (m *StreamingOutputCallResponse) Reset() { *m = StreamingOutputCallResponse{} } -func (m *StreamingOutputCallResponse) String() string { return proto.CompactTextString(m) } -func (*StreamingOutputCallResponse) ProtoMessage() {} -func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *StreamingOutputCallResponse) GetPayload() *Payload { - if m != nil { - return m.Payload - } - return nil -} - -func init() { - proto.RegisterType((*Empty)(nil), "grpc.testing.Empty") - proto.RegisterType((*Payload)(nil), "grpc.testing.Payload") - proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest") - proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse") - proto.RegisterType((*StreamingInputCallRequest)(nil), "grpc.testing.StreamingInputCallRequest") - proto.RegisterType((*StreamingInputCallResponse)(nil), "grpc.testing.StreamingInputCallResponse") - proto.RegisterType((*ResponseParameters)(nil), "grpc.testing.ResponseParameters") - proto.RegisterType((*StreamingOutputCallRequest)(nil), "grpc.testing.StreamingOutputCallRequest") - proto.RegisterType((*StreamingOutputCallResponse)(nil), "grpc.testing.StreamingOutputCallResponse") - proto.RegisterEnum("grpc.testing.PayloadType", PayloadType_name, PayloadType_value) -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for TestService service - -type TestServiceClient interface { - // One empty request followed by one empty response. - EmptyCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) - // One request followed by one response. - // The server returns the client payload as-is. - UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) - // One request followed by a sequence of responses (streamed download). - // The server returns the payload with client desired type and sizes. - StreamingOutputCall(ctx context.Context, in *StreamingOutputCallRequest, opts ...grpc.CallOption) (TestService_StreamingOutputCallClient, error) - // A sequence of requests followed by one response (streamed upload). - // The server returns the aggregated size of client payload as the result. - StreamingInputCall(ctx context.Context, opts ...grpc.CallOption) (TestService_StreamingInputCallClient, error) - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) - // A sequence of requests followed by a sequence of responses. - // The server buffers all the client requests and then serves them in order. A - // stream of responses are returned to the client when the server starts with - // first request. - HalfDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_HalfDuplexCallClient, error) -} - -type testServiceClient struct { - cc *grpc.ClientConn -} - -func NewTestServiceClient(cc *grpc.ClientConn) TestServiceClient { - return &testServiceClient{cc} -} - -func (c *testServiceClient) EmptyCall(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { - out := new(Empty) - err := grpc.Invoke(ctx, "/grpc.testing.TestService/EmptyCall", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) { - out := new(SimpleResponse) - err := grpc.Invoke(ctx, "/grpc.testing.TestService/UnaryCall", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *testServiceClient) StreamingOutputCall(ctx context.Context, in *StreamingOutputCallRequest, opts ...grpc.CallOption) (TestService_StreamingOutputCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[0], c.cc, "/grpc.testing.TestService/StreamingOutputCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceStreamingOutputCallClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type TestService_StreamingOutputCallClient interface { - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceStreamingOutputCallClient struct { - grpc.ClientStream -} - -func (x *testServiceStreamingOutputCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) StreamingInputCall(ctx context.Context, opts ...grpc.CallOption) (TestService_StreamingInputCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[1], c.cc, "/grpc.testing.TestService/StreamingInputCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceStreamingInputCallClient{stream} - return x, nil -} - -type TestService_StreamingInputCallClient interface { - Send(*StreamingInputCallRequest) error - CloseAndRecv() (*StreamingInputCallResponse, error) - grpc.ClientStream -} - -type testServiceStreamingInputCallClient struct { - grpc.ClientStream -} - -func (x *testServiceStreamingInputCallClient) Send(m *StreamingInputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceStreamingInputCallClient) CloseAndRecv() (*StreamingInputCallResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(StreamingInputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) FullDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_FullDuplexCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[2], c.cc, "/grpc.testing.TestService/FullDuplexCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceFullDuplexCallClient{stream} - return x, nil -} - -type TestService_FullDuplexCallClient interface { - Send(*StreamingOutputCallRequest) error - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceFullDuplexCallClient struct { - grpc.ClientStream -} - -func (x *testServiceFullDuplexCallClient) Send(m *StreamingOutputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceFullDuplexCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *testServiceClient) HalfDuplexCall(ctx context.Context, opts ...grpc.CallOption) (TestService_HalfDuplexCallClient, error) { - stream, err := grpc.NewClientStream(ctx, &_TestService_serviceDesc.Streams[3], c.cc, "/grpc.testing.TestService/HalfDuplexCall", opts...) - if err != nil { - return nil, err - } - x := &testServiceHalfDuplexCallClient{stream} - return x, nil -} - -type TestService_HalfDuplexCallClient interface { - Send(*StreamingOutputCallRequest) error - Recv() (*StreamingOutputCallResponse, error) - grpc.ClientStream -} - -type testServiceHalfDuplexCallClient struct { - grpc.ClientStream -} - -func (x *testServiceHalfDuplexCallClient) Send(m *StreamingOutputCallRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *testServiceHalfDuplexCallClient) Recv() (*StreamingOutputCallResponse, error) { - m := new(StreamingOutputCallResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for TestService service - -type TestServiceServer interface { - // One empty request followed by one empty response. - EmptyCall(context.Context, *Empty) (*Empty, error) - // One request followed by one response. - // The server returns the client payload as-is. - UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error) - // One request followed by a sequence of responses (streamed download). - // The server returns the payload with client desired type and sizes. - StreamingOutputCall(*StreamingOutputCallRequest, TestService_StreamingOutputCallServer) error - // A sequence of requests followed by one response (streamed upload). - // The server returns the aggregated size of client payload as the result. - StreamingInputCall(TestService_StreamingInputCallServer) error - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - FullDuplexCall(TestService_FullDuplexCallServer) error - // A sequence of requests followed by a sequence of responses. - // The server buffers all the client requests and then serves them in order. A - // stream of responses are returned to the client when the server starts with - // first request. - HalfDuplexCall(TestService_HalfDuplexCallServer) error -} - -func RegisterTestServiceServer(s *grpc.Server, srv TestServiceServer) { - s.RegisterService(&_TestService_serviceDesc, srv) -} - -func _TestService_EmptyCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).EmptyCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.TestService/EmptyCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).EmptyCall(ctx, req.(*Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestService_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SimpleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TestServiceServer).UnaryCall(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.testing.TestService/UnaryCall", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TestServiceServer).UnaryCall(ctx, req.(*SimpleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _TestService_StreamingOutputCall_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(StreamingOutputCallRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(TestServiceServer).StreamingOutputCall(m, &testServiceStreamingOutputCallServer{stream}) -} - -type TestService_StreamingOutputCallServer interface { - Send(*StreamingOutputCallResponse) error - grpc.ServerStream -} - -type testServiceStreamingOutputCallServer struct { - grpc.ServerStream -} - -func (x *testServiceStreamingOutputCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func _TestService_StreamingInputCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).StreamingInputCall(&testServiceStreamingInputCallServer{stream}) -} - -type TestService_StreamingInputCallServer interface { - SendAndClose(*StreamingInputCallResponse) error - Recv() (*StreamingInputCallRequest, error) - grpc.ServerStream -} - -type testServiceStreamingInputCallServer struct { - grpc.ServerStream -} - -func (x *testServiceStreamingInputCallServer) SendAndClose(m *StreamingInputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceStreamingInputCallServer) Recv() (*StreamingInputCallRequest, error) { - m := new(StreamingInputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_FullDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).FullDuplexCall(&testServiceFullDuplexCallServer{stream}) -} - -type TestService_FullDuplexCallServer interface { - Send(*StreamingOutputCallResponse) error - Recv() (*StreamingOutputCallRequest, error) - grpc.ServerStream -} - -type testServiceFullDuplexCallServer struct { - grpc.ServerStream -} - -func (x *testServiceFullDuplexCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceFullDuplexCallServer) Recv() (*StreamingOutputCallRequest, error) { - m := new(StreamingOutputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _TestService_HalfDuplexCall_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(TestServiceServer).HalfDuplexCall(&testServiceHalfDuplexCallServer{stream}) -} - -type TestService_HalfDuplexCallServer interface { - Send(*StreamingOutputCallResponse) error - Recv() (*StreamingOutputCallRequest, error) - grpc.ServerStream -} - -type testServiceHalfDuplexCallServer struct { - grpc.ServerStream -} - -func (x *testServiceHalfDuplexCallServer) Send(m *StreamingOutputCallResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *testServiceHalfDuplexCallServer) Recv() (*StreamingOutputCallRequest, error) { - m := new(StreamingOutputCallRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _TestService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "grpc.testing.TestService", - HandlerType: (*TestServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "EmptyCall", - Handler: _TestService_EmptyCall_Handler, - }, - { - MethodName: "UnaryCall", - Handler: _TestService_UnaryCall_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "StreamingOutputCall", - Handler: _TestService_StreamingOutputCall_Handler, - ServerStreams: true, - }, - { - StreamName: "StreamingInputCall", - Handler: _TestService_StreamingInputCall_Handler, - ClientStreams: true, - }, - { - StreamName: "FullDuplexCall", - Handler: _TestService_FullDuplexCall_Handler, - ServerStreams: true, - ClientStreams: true, - }, - { - StreamName: "HalfDuplexCall", - Handler: _TestService_HalfDuplexCall_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "grpc_testing/test.proto", -} - -func init() { proto.RegisterFile("grpc_testing/test.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 587 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xdb, 0x6e, 0xd3, 0x40, - 0x10, 0x65, 0xdb, 0xf4, 0x36, 0x49, 0xad, 0x68, 0xab, 0xaa, 0xae, 0x8b, 0x84, 0x65, 0x1e, 0x30, - 0x48, 0xa4, 0x28, 0x08, 0x1e, 0x41, 0xa5, 0x17, 0x51, 0x29, 0x4d, 0x82, 0x9d, 0x3c, 0x47, 0xdb, - 0x64, 0x6b, 0x2c, 0x39, 0xf6, 0xb2, 0x5e, 0x57, 0xa4, 0x0f, 0xfc, 0x18, 0x3f, 0xc3, 0x47, 0xf0, - 0x01, 0x68, 0xd7, 0x76, 0xe2, 0x24, 0xae, 0x48, 0x41, 0xf0, 0x14, 0x7b, 0xe6, 0xcc, 0x99, 0x73, - 0x3c, 0xb3, 0x1b, 0x38, 0xf0, 0x38, 0x1b, 0x0e, 0x04, 0x8d, 0x85, 0x1f, 0x7a, 0xc7, 0xf2, 0xb7, - 0xc1, 0x78, 0x24, 0x22, 0x5c, 0x93, 0x89, 0x46, 0x96, 0xb0, 0xb6, 0x60, 0xe3, 0x7c, 0xcc, 0xc4, - 0xc4, 0x6a, 0xc1, 0x56, 0x97, 0x4c, 0x82, 0x88, 0x8c, 0xf0, 0x4b, 0xa8, 0x88, 0x09, 0xa3, 0x3a, - 0x32, 0x91, 0xad, 0x35, 0x0f, 0x1b, 0xc5, 0x82, 0x46, 0x06, 0xea, 0x4d, 0x18, 0x75, 0x14, 0x0c, - 0x63, 0xa8, 0x5c, 0x47, 0xa3, 0x89, 0xbe, 0x66, 0x22, 0xbb, 0xe6, 0xa8, 0x67, 0xeb, 0x27, 0x82, - 0x5d, 0xd7, 0x1f, 0xb3, 0x80, 0x3a, 0xf4, 0x4b, 0x42, 0x63, 0x81, 0xdf, 0xc1, 0x2e, 0xa7, 0x31, - 0x8b, 0xc2, 0x98, 0x0e, 0x56, 0x63, 0xaf, 0xe5, 0x78, 0xf9, 0x86, 0x9f, 0x16, 0xea, 0x63, 0xff, - 0x8e, 0xaa, 0x76, 0x1b, 0x33, 0x90, 0xeb, 0xdf, 0x51, 0x7c, 0x0c, 0x5b, 0x2c, 0x65, 0xd0, 0xd7, - 0x4d, 0x64, 0x57, 0x9b, 0xfb, 0xa5, 0xf4, 0x4e, 0x8e, 0x92, 0xac, 0x37, 0x7e, 0x10, 0x0c, 0x92, - 0x98, 0xf2, 0x90, 0x8c, 0xa9, 0x5e, 0x31, 0x91, 0xbd, 0xed, 0xd4, 0x64, 0xb0, 0x9f, 0xc5, 0xb0, - 0x0d, 0x75, 0x05, 0x8a, 0x48, 0x22, 0x3e, 0x0f, 0xe2, 0x61, 0xc4, 0xa8, 0xbe, 0xa1, 0x70, 0x9a, - 0x8c, 0x77, 0x64, 0xd8, 0x95, 0x51, 0xeb, 0x1b, 0x68, 0xb9, 0xeb, 0x54, 0x55, 0x51, 0x11, 0x5a, - 0x49, 0x91, 0x01, 0xdb, 0x53, 0x31, 0xd2, 0xe2, 0x8e, 0x33, 0x7d, 0xc7, 0x4f, 0xa0, 0x5a, 0xd4, - 0xb0, 0xae, 0xd2, 0x10, 0xcd, 0xfa, 0xb7, 0xe0, 0xd0, 0x15, 0x9c, 0x92, 0xb1, 0x1f, 0x7a, 0x97, - 0x21, 0x4b, 0xc4, 0x29, 0x09, 0x82, 0x7c, 0x02, 0x0f, 0x95, 0x62, 0xf5, 0xc0, 0x28, 0x63, 0xcb, - 0x9c, 0xbd, 0x85, 0x03, 0xe2, 0x79, 0x9c, 0x7a, 0x44, 0xd0, 0xd1, 0x20, 0xab, 0x49, 0x47, 0x83, - 0xd4, 0x68, 0xf6, 0x67, 0xe9, 0x8c, 0x5a, 0xce, 0xc8, 0xba, 0x04, 0x9c, 0x73, 0x74, 0x09, 0x27, - 0x63, 0x2a, 0x28, 0x8f, 0xe5, 0x12, 0x15, 0x4a, 0xd5, 0xb3, 0xb4, 0xeb, 0x87, 0x82, 0xf2, 0x5b, - 0x22, 0x07, 0x94, 0x0d, 0x1c, 0xf2, 0x50, 0x3f, 0xb6, 0x7e, 0xa0, 0x82, 0xc2, 0x4e, 0x22, 0x16, - 0x0c, 0xff, 0xed, 0xca, 0x7d, 0x82, 0xbd, 0x69, 0x3d, 0x9b, 0x4a, 0xd5, 0xd7, 0xcc, 0x75, 0xbb, - 0xda, 0x34, 0xe7, 0x59, 0x96, 0x2d, 0x39, 0x98, 0x2f, 0xdb, 0x7c, 0xe8, 0x82, 0x5a, 0x6d, 0x38, - 0x2a, 0x75, 0xf8, 0x87, 0xeb, 0xf5, 0xe2, 0x3d, 0x54, 0x0b, 0x86, 0x71, 0x1d, 0x6a, 0xa7, 0x9d, - 0xab, 0xae, 0x73, 0xee, 0xba, 0x27, 0x1f, 0x5a, 0xe7, 0xf5, 0x47, 0x18, 0x83, 0xd6, 0x6f, 0xcf, - 0xc5, 0x10, 0x06, 0xd8, 0x74, 0x4e, 0xda, 0x67, 0x9d, 0xab, 0xfa, 0x5a, 0xf3, 0x7b, 0x05, 0xaa, - 0x3d, 0x1a, 0x0b, 0x97, 0xf2, 0x5b, 0x7f, 0x48, 0xf1, 0x1b, 0xd8, 0x51, 0x17, 0x88, 0x94, 0x85, - 0xf7, 0xe6, 0xbb, 0xab, 0x84, 0x51, 0x16, 0xc4, 0x17, 0xb0, 0xd3, 0x0f, 0x09, 0x4f, 0xcb, 0x8e, - 0xe6, 0x11, 0x73, 0x17, 0x87, 0xf1, 0xb8, 0x3c, 0x99, 0x7d, 0x80, 0x00, 0xf6, 0x4a, 0xbe, 0x0f, - 0xb6, 0x17, 0x8a, 0xee, 0x5d, 0x12, 0xe3, 0xf9, 0x0a, 0xc8, 0xb4, 0xd7, 0x2b, 0x84, 0x7d, 0xc0, - 0xcb, 0x27, 0x02, 0x3f, 0xbb, 0x87, 0x62, 0xf1, 0x04, 0x1a, 0xf6, 0xef, 0x81, 0x69, 0x2b, 0x5b, - 0xb6, 0xd2, 0x2e, 0x92, 0x20, 0x38, 0x4b, 0x58, 0x40, 0xbf, 0xfe, 0x33, 0x4f, 0x36, 0x52, 0xae, - 0xb4, 0x8f, 0x24, 0xb8, 0xf9, 0x0f, 0xad, 0xae, 0x37, 0xd5, 0x7f, 0xd0, 0xeb, 0x5f, 0x01, 0x00, - 0x00, 0xff, 0xff, 0x07, 0xc7, 0x76, 0x69, 0x9e, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/test/grpc_testing/test.proto b/vendor/google.golang.org/grpc/test/grpc_testing/test.proto deleted file mode 100644 index 6f62f3a7..00000000 --- a/vendor/google.golang.org/grpc/test/grpc_testing/test.proto +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2017 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// An integration test service that covers all the method signature permutations -// of unary/streaming requests/responses. -syntax = "proto3"; - -package grpc.testing; - -message Empty {} - -// The type of payload that should be returned. -enum PayloadType { - // Compressable text format. - COMPRESSABLE = 0; - - // Uncompressable binary format. - UNCOMPRESSABLE = 1; - - // Randomly chosen from all other formats defined in this enum. - RANDOM = 2; -} - -// A block of data, to simply increase gRPC message size. -message Payload { - // The type of data in body. - PayloadType type = 1; - // Primary contents of payload. - bytes body = 2; -} - -// Unary request. -message SimpleRequest { - // Desired payload type in the response from the server. - // If response_type is RANDOM, server randomly chooses one from other formats. - PayloadType response_type = 1; - - // Desired payload size in the response from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - int32 response_size = 2; - - // Optional input payload sent along with the request. - Payload payload = 3; - - // Whether SimpleResponse should include username. - bool fill_username = 4; - - // Whether SimpleResponse should include OAuth scope. - bool fill_oauth_scope = 5; -} - -// Unary response, as configured by the request. -message SimpleResponse { - // Payload to increase message size. - Payload payload = 1; - - // The user the request came from, for verifying authentication was - // successful when the client expected it. - string username = 2; - - // OAuth scope. - string oauth_scope = 3; -} - -// Client-streaming request. -message StreamingInputCallRequest { - // Optional input payload sent along with the request. - Payload payload = 1; - - // Not expecting any payload from the response. -} - -// Client-streaming response. -message StreamingInputCallResponse { - // Aggregated size of payloads received from the client. - int32 aggregated_payload_size = 1; -} - -// Configuration for a particular response. -message ResponseParameters { - // Desired payload sizes in responses from the server. - // If response_type is COMPRESSABLE, this denotes the size before compression. - int32 size = 1; - - // Desired interval between consecutive responses in the response stream in - // microseconds. - int32 interval_us = 2; -} - -// Server-streaming request. -message StreamingOutputCallRequest { - // Desired payload type in the response from the server. - // If response_type is RANDOM, the payload from each response in the stream - // might be of different types. This is to simulate a mixed type of payload - // stream. - PayloadType response_type = 1; - - // Configuration for each expected response message. - repeated ResponseParameters response_parameters = 2; - - // Optional input payload sent along with the request. - Payload payload = 3; -} - -// Server-streaming response, as configured by the request and parameters. -message StreamingOutputCallResponse { - // Payload to increase response size. - Payload payload = 1; -} - -// A simple service to test the various types of RPCs and experiment with -// performance with various types of payload. -service TestService { - // One empty request followed by one empty response. - rpc EmptyCall(Empty) returns (Empty); - - // One request followed by one response. - // The server returns the client payload as-is. - rpc UnaryCall(SimpleRequest) returns (SimpleResponse); - - // One request followed by a sequence of responses (streamed download). - // The server returns the payload with client desired type and sizes. - rpc StreamingOutputCall(StreamingOutputCallRequest) - returns (stream StreamingOutputCallResponse); - - // A sequence of requests followed by one response (streamed upload). - // The server returns the aggregated size of client payload as the result. - rpc StreamingInputCall(stream StreamingInputCallRequest) - returns (StreamingInputCallResponse); - - // A sequence of requests with each request served by the server immediately. - // As one request could lead to multiple responses, this interface - // demonstrates the idea of full duplexing. - rpc FullDuplexCall(stream StreamingOutputCallRequest) - returns (stream StreamingOutputCallResponse); - - // A sequence of requests followed by a sequence of responses. - // The server buffers all the client requests and then serves them in order. A - // stream of responses are returned to the client when the server starts with - // first request. - rpc HalfDuplexCall(stream StreamingOutputCallRequest) - returns (stream StreamingOutputCallResponse); -} diff --git a/vendor/google.golang.org/grpc/test/leakcheck/leakcheck.go b/vendor/google.golang.org/grpc/test/leakcheck/leakcheck.go deleted file mode 100644 index 76f9fc54..00000000 --- a/vendor/google.golang.org/grpc/test/leakcheck/leakcheck.go +++ /dev/null @@ -1,118 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package leakcheck contains functions to check leaked goroutines. -// -// Call "defer leakcheck.Check(t)" at the beginning of tests. -package leakcheck - -import ( - "runtime" - "sort" - "strings" - "time" -) - -var goroutinesToIgnore = []string{ - "testing.Main(", - "testing.tRunner(", - "testing.(*M).", - "runtime.goexit", - "created by runtime.gc", - "created by runtime/trace.Start", - "interestingGoroutines", - "runtime.MHeap_Scavenger", - "signal.signal_recv", - "sigterm.handler", - "runtime_mcall", - "(*loggingT).flushDaemon", - "goroutine in C code", -} - -// RegisterIgnoreGoroutine appends s into the ignore goroutine list. The -// goroutines whose stack trace contains s will not be identified as leaked -// goroutines. Not thread-safe, only call this function in init(). -func RegisterIgnoreGoroutine(s string) { - goroutinesToIgnore = append(goroutinesToIgnore, s) -} - -func ignore(g string) bool { - sl := strings.SplitN(g, "\n", 2) - if len(sl) != 2 { - return true - } - stack := strings.TrimSpace(sl[1]) - if strings.HasPrefix(stack, "testing.RunTests") { - return true - } - - if stack == "" { - return true - } - - for _, s := range goroutinesToIgnore { - if strings.Contains(stack, s) { - return true - } - } - - return false -} - -// interestingGoroutines returns all goroutines we care about for the purpose of -// leak checking. It excludes testing or runtime ones. -func interestingGoroutines() (gs []string) { - buf := make([]byte, 2<<20) - buf = buf[:runtime.Stack(buf, true)] - for _, g := range strings.Split(string(buf), "\n\n") { - if !ignore(g) { - gs = append(gs, g) - } - } - sort.Strings(gs) - return -} - -// Errorfer is the interface that wraps the Errorf method. It's a subset of -// testing.TB to make it easy to use Check. -type Errorfer interface { - Errorf(format string, args ...interface{}) -} - -func check(efer Errorfer, timeout time.Duration) { - // Loop, waiting for goroutines to shut down. - // Wait up to timeout, but finish as quickly as possible. - deadline := time.Now().Add(timeout) - var leaked []string - for time.Now().Before(deadline) { - if leaked = interestingGoroutines(); len(leaked) == 0 { - return - } - time.Sleep(50 * time.Millisecond) - } - for _, g := range leaked { - efer.Errorf("Leaked goroutine: %v", g) - } -} - -// Check looks at the currently-running goroutines and checks if there are any -// interestring (created by gRPC) goroutines leaked. It waits up to 10 seconds -// in the error cases. -func Check(efer Errorfer) { - check(efer, 10*time.Second) -} diff --git a/vendor/google.golang.org/grpc/test/leakcheck/leakcheck_test.go b/vendor/google.golang.org/grpc/test/leakcheck/leakcheck_test.go deleted file mode 100644 index 50927e9d..00000000 --- a/vendor/google.golang.org/grpc/test/leakcheck/leakcheck_test.go +++ /dev/null @@ -1,76 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package leakcheck - -import ( - "fmt" - "strings" - "testing" - "time" -) - -type testErrorfer struct { - errorCount int - errors []string -} - -func (e *testErrorfer) Errorf(format string, args ...interface{}) { - e.errors = append(e.errors, fmt.Sprintf(format, args...)) - e.errorCount++ -} - -func TestCheck(t *testing.T) { - const leakCount = 3 - for i := 0; i < leakCount; i++ { - go func() { time.Sleep(2 * time.Second) }() - } - if ig := interestingGoroutines(); len(ig) == 0 { - t.Error("blah") - } - e := &testErrorfer{} - check(e, time.Second) - if e.errorCount != leakCount { - t.Errorf("check found %v leaks, want %v leaks", e.errorCount, leakCount) - t.Logf("leaked goroutines:\n%v", strings.Join(e.errors, "\n")) - } - check(t, 3*time.Second) -} - -func ignoredTestingLeak(d time.Duration) { - time.Sleep(d) -} - -func TestCheckRegisterIgnore(t *testing.T) { - RegisterIgnoreGoroutine("ignoredTestingLeak") - const leakCount = 3 - for i := 0; i < leakCount; i++ { - go func() { time.Sleep(2 * time.Second) }() - } - go func() { ignoredTestingLeak(3 * time.Second) }() - if ig := interestingGoroutines(); len(ig) == 0 { - t.Error("blah") - } - e := &testErrorfer{} - check(e, time.Second) - if e.errorCount != leakCount { - t.Errorf("check found %v leaks, want %v leaks", e.errorCount, leakCount) - t.Logf("leaked goroutines:\n%v", strings.Join(e.errors, "\n")) - } - check(t, 3*time.Second) -} diff --git a/vendor/google.golang.org/grpc/test/race.go b/vendor/google.golang.org/grpc/test/race.go deleted file mode 100644 index acfa0dfa..00000000 --- a/vendor/google.golang.org/grpc/test/race.go +++ /dev/null @@ -1,24 +0,0 @@ -// +build race - -/* - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package test - -func init() { - raceMode = true -} diff --git a/vendor/google.golang.org/grpc/test/servertester.go b/vendor/google.golang.org/grpc/test/servertester.go deleted file mode 100644 index daeca062..00000000 --- a/vendor/google.golang.org/grpc/test/servertester.go +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package test - -import ( - "bytes" - "errors" - "io" - "strings" - "testing" - "time" - - "golang.org/x/net/http2" - "golang.org/x/net/http2/hpack" -) - -// This is a subset of http2's serverTester type. -// -// serverTester wraps a io.ReadWriter (acting like the underlying -// network connection) and provides utility methods to read and write -// http2 frames. -// -// NOTE(bradfitz): this could eventually be exported somewhere. Others -// have asked for it too. For now I'm still experimenting with the -// API and don't feel like maintaining a stable testing API. - -type serverTester struct { - cc io.ReadWriteCloser // client conn - t testing.TB - fr *http2.Framer - - // writing headers: - headerBuf bytes.Buffer - hpackEnc *hpack.Encoder - - // reading frames: - frc chan http2.Frame - frErrc chan error - readTimer *time.Timer -} - -func newServerTesterFromConn(t testing.TB, cc io.ReadWriteCloser) *serverTester { - st := &serverTester{ - t: t, - cc: cc, - frc: make(chan http2.Frame, 1), - frErrc: make(chan error, 1), - } - st.hpackEnc = hpack.NewEncoder(&st.headerBuf) - st.fr = http2.NewFramer(cc, cc) - st.fr.ReadMetaHeaders = hpack.NewDecoder(4096 /*initialHeaderTableSize*/, nil) - - return st -} - -func (st *serverTester) readFrame() (http2.Frame, error) { - go func() { - fr, err := st.fr.ReadFrame() - if err != nil { - st.frErrc <- err - } else { - st.frc <- fr - } - }() - t := time.NewTimer(2 * time.Second) - defer t.Stop() - select { - case f := <-st.frc: - return f, nil - case err := <-st.frErrc: - return nil, err - case <-t.C: - return nil, errors.New("timeout waiting for frame") - } -} - -// greet initiates the client's HTTP/2 connection into a state where -// frames may be sent. -func (st *serverTester) greet() { - st.writePreface() - st.writeInitialSettings() - st.wantSettings() - st.writeSettingsAck() - for { - f, err := st.readFrame() - if err != nil { - st.t.Fatal(err) - } - switch f := f.(type) { - case *http2.WindowUpdateFrame: - // grpc's transport/http2_server sends this - // before the settings ack. The Go http2 - // server uses a setting instead. - case *http2.SettingsFrame: - if f.IsAck() { - return - } - st.t.Fatalf("during greet, got non-ACK settings frame") - default: - st.t.Fatalf("during greet, unexpected frame type %T", f) - } - } -} - -func (st *serverTester) writePreface() { - n, err := st.cc.Write([]byte(http2.ClientPreface)) - if err != nil { - st.t.Fatalf("Error writing client preface: %v", err) - } - if n != len(http2.ClientPreface) { - st.t.Fatalf("Writing client preface, wrote %d bytes; want %d", n, len(http2.ClientPreface)) - } -} - -func (st *serverTester) writeInitialSettings() { - if err := st.fr.WriteSettings(); err != nil { - st.t.Fatalf("Error writing initial SETTINGS frame from client to server: %v", err) - } -} - -func (st *serverTester) writeSettingsAck() { - if err := st.fr.WriteSettingsAck(); err != nil { - st.t.Fatalf("Error writing ACK of server's SETTINGS: %v", err) - } -} - -func (st *serverTester) wantSettings() *http2.SettingsFrame { - f, err := st.readFrame() - if err != nil { - st.t.Fatalf("Error while expecting a SETTINGS frame: %v", err) - } - sf, ok := f.(*http2.SettingsFrame) - if !ok { - st.t.Fatalf("got a %T; want *SettingsFrame", f) - } - return sf -} - -func (st *serverTester) wantSettingsAck() { - f, err := st.readFrame() - if err != nil { - st.t.Fatal(err) - } - sf, ok := f.(*http2.SettingsFrame) - if !ok { - st.t.Fatalf("Wanting a settings ACK, received a %T", f) - } - if !sf.IsAck() { - st.t.Fatal("Settings Frame didn't have ACK set") - } -} - -// wait for any activity from the server -func (st *serverTester) wantAnyFrame() http2.Frame { - f, err := st.fr.ReadFrame() - if err != nil { - st.t.Fatal(err) - } - return f -} - -func (st *serverTester) encodeHeaderField(k, v string) { - err := st.hpackEnc.WriteField(hpack.HeaderField{Name: k, Value: v}) - if err != nil { - st.t.Fatalf("HPACK encoding error for %q/%q: %v", k, v, err) - } -} - -// encodeHeader encodes headers and returns their HPACK bytes. headers -// must contain an even number of key/value pairs. There may be -// multiple pairs for keys (e.g. "cookie"). The :method, :path, and -// :scheme headers default to GET, / and https. -func (st *serverTester) encodeHeader(headers ...string) []byte { - if len(headers)%2 == 1 { - panic("odd number of kv args") - } - - st.headerBuf.Reset() - - if len(headers) == 0 { - // Fast path, mostly for benchmarks, so test code doesn't pollute - // profiles when we're looking to improve server allocations. - st.encodeHeaderField(":method", "GET") - st.encodeHeaderField(":path", "/") - st.encodeHeaderField(":scheme", "https") - return st.headerBuf.Bytes() - } - - if len(headers) == 2 && headers[0] == ":method" { - // Another fast path for benchmarks. - st.encodeHeaderField(":method", headers[1]) - st.encodeHeaderField(":path", "/") - st.encodeHeaderField(":scheme", "https") - return st.headerBuf.Bytes() - } - - pseudoCount := map[string]int{} - keys := []string{":method", ":path", ":scheme"} - vals := map[string][]string{ - ":method": {"GET"}, - ":path": {"/"}, - ":scheme": {"https"}, - } - for len(headers) > 0 { - k, v := headers[0], headers[1] - headers = headers[2:] - if _, ok := vals[k]; !ok { - keys = append(keys, k) - } - if strings.HasPrefix(k, ":") { - pseudoCount[k]++ - if pseudoCount[k] == 1 { - vals[k] = []string{v} - } else { - // Allows testing of invalid headers w/ dup pseudo fields. - vals[k] = append(vals[k], v) - } - } else { - vals[k] = append(vals[k], v) - } - } - for _, k := range keys { - for _, v := range vals[k] { - st.encodeHeaderField(k, v) - } - } - return st.headerBuf.Bytes() -} - -func (st *serverTester) writeHeadersGRPC(streamID uint32, path string) { - st.writeHeaders(http2.HeadersFrameParam{ - StreamID: streamID, - BlockFragment: st.encodeHeader( - ":method", "POST", - ":path", path, - "content-type", "application/grpc", - "te", "trailers", - ), - EndStream: false, - EndHeaders: true, - }) -} - -func (st *serverTester) writeHeaders(p http2.HeadersFrameParam) { - if err := st.fr.WriteHeaders(p); err != nil { - st.t.Fatalf("Error writing HEADERS: %v", err) - } -} - -func (st *serverTester) writeData(streamID uint32, endStream bool, data []byte) { - if err := st.fr.WriteData(streamID, endStream, data); err != nil { - st.t.Fatalf("Error writing DATA: %v", err) - } -} - -func (st *serverTester) writeRSTStream(streamID uint32, code http2.ErrCode) { - if err := st.fr.WriteRSTStream(streamID, code); err != nil { - st.t.Fatalf("Error writing RST_STREAM: %v", err) - } -} - -func (st *serverTester) writeDataPadded(streamID uint32, endStream bool, data, padding []byte) { - if err := st.fr.WriteDataPadded(streamID, endStream, data, padding); err != nil { - st.t.Fatalf("Error writing DATA with padding: %v", err) - } -} diff --git a/vendor/google.golang.org/grpc/testdata/ca.pem b/vendor/google.golang.org/grpc/testdata/ca.pem deleted file mode 100644 index 6c8511a7..00000000 --- a/vendor/google.golang.org/grpc/testdata/ca.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSjCCAbOgAwIBAgIJAJHGGR4dGioHMA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNV -BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX -aWRnaXRzIFB0eSBMdGQxDzANBgNVBAMTBnRlc3RjYTAeFw0xNDExMTEyMjMxMjla -Fw0yNDExMDgyMjMxMjlaMFYxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0 -YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDzANBgNVBAMT -BnRlc3RjYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwEDfBV5MYdlHVHJ7 -+L4nxrZy7mBfAVXpOc5vMYztssUI7mL2/iYujiIXM+weZYNTEpLdjyJdu7R5gGUu -g1jSVK/EPHfc74O7AyZU34PNIP4Sh33N+/A5YexrNgJlPY+E3GdVYi4ldWJjgkAd -Qah2PH5ACLrIIC6tRka9hcaBlIECAwEAAaMgMB4wDAYDVR0TBAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAgQwDQYJKoZIhvcNAQELBQADgYEAHzC7jdYlzAVmddi/gdAeKPau -sPBG/C2HCWqHzpCUHcKuvMzDVkY/MP2o6JIW2DBbY64bO/FceExhjcykgaYtCH/m -oIU63+CFOTtR7otyQAWHqXa7q4SbCDlG7DyRFxqG0txPtGvy12lgldA2+RgcigQG -Dfcog5wrJytaQ6UA0wE= ------END CERTIFICATE----- diff --git a/vendor/google.golang.org/grpc/testdata/server1.key b/vendor/google.golang.org/grpc/testdata/server1.key deleted file mode 100644 index 143a5b87..00000000 --- a/vendor/google.golang.org/grpc/testdata/server1.key +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAOHDFScoLCVJpYDD -M4HYtIdV6Ake/sMNaaKdODjDMsux/4tDydlumN+fm+AjPEK5GHhGn1BgzkWF+slf -3BxhrA/8dNsnunstVA7ZBgA/5qQxMfGAq4wHNVX77fBZOgp9VlSMVfyd9N8YwbBY -AckOeUQadTi2X1S6OgJXgQ0m3MWhAgMBAAECgYAn7qGnM2vbjJNBm0VZCkOkTIWm -V10okw7EPJrdL2mkre9NasghNXbE1y5zDshx5Nt3KsazKOxTT8d0Jwh/3KbaN+YY -tTCbKGW0pXDRBhwUHRcuRzScjli8Rih5UOCiZkhefUTcRb6xIhZJuQy71tjaSy0p -dHZRmYyBYO2YEQ8xoQJBAPrJPhMBkzmEYFtyIEqAxQ/o/A6E+E4w8i+KM7nQCK7q -K4JXzyXVAjLfyBZWHGM2uro/fjqPggGD6QH1qXCkI4MCQQDmdKeb2TrKRh5BY1LR -81aJGKcJ2XbcDu6wMZK4oqWbTX2KiYn9GB0woM6nSr/Y6iy1u145YzYxEV/iMwff -DJULAkB8B2MnyzOg0pNFJqBJuH29bKCcHa8gHJzqXhNO5lAlEbMK95p/P2Wi+4Hd -aiEIAF1BF326QJcvYKmwSmrORp85AkAlSNxRJ50OWrfMZnBgzVjDx3xG6KsFQVk2 -ol6VhqL6dFgKUORFUWBvnKSyhjJxurlPEahV6oo6+A+mPhFY8eUvAkAZQyTdupP3 -XEFQKctGz+9+gKkemDp7LBBMEMBXrGTLPhpEfcjv/7KPdnFHYmhYeBTBnuVmTVWe -F98XJ7tIFfJq ------END PRIVATE KEY----- diff --git a/vendor/google.golang.org/grpc/testdata/server1.pem b/vendor/google.golang.org/grpc/testdata/server1.pem deleted file mode 100644 index f3d43fcc..00000000 --- a/vendor/google.golang.org/grpc/testdata/server1.pem +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICnDCCAgWgAwIBAgIBBzANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJBVTET -MBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQ -dHkgTHRkMQ8wDQYDVQQDEwZ0ZXN0Y2EwHhcNMTUxMTA0MDIyMDI0WhcNMjUxMTAx -MDIyMDI0WjBlMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNV -BAcTB0NoaWNhZ28xFTATBgNVBAoTDEV4YW1wbGUsIENvLjEaMBgGA1UEAxQRKi50 -ZXN0Lmdvb2dsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOHDFSco -LCVJpYDDM4HYtIdV6Ake/sMNaaKdODjDMsux/4tDydlumN+fm+AjPEK5GHhGn1Bg -zkWF+slf3BxhrA/8dNsnunstVA7ZBgA/5qQxMfGAq4wHNVX77fBZOgp9VlSMVfyd -9N8YwbBYAckOeUQadTi2X1S6OgJXgQ0m3MWhAgMBAAGjazBpMAkGA1UdEwQCMAAw -CwYDVR0PBAQDAgXgME8GA1UdEQRIMEaCECoudGVzdC5nb29nbGUuZnKCGHdhdGVy -em9vaS50ZXN0Lmdvb2dsZS5iZYISKi50ZXN0LnlvdXR1YmUuY29thwTAqAEDMA0G -CSqGSIb3DQEBCwUAA4GBAJFXVifQNub1LUP4JlnX5lXNlo8FxZ2a12AFQs+bzoJ6 -hM044EDjqyxUqSbVePK0ni3w1fHQB5rY9yYC5f8G7aqqTY1QOhoUk8ZTSTRpnkTh -y4jjdvTZeLDVBlueZUTDRmy2feY5aZIU18vFDK08dTG0A87pppuv1LNIR3loveU8 ------END CERTIFICATE----- diff --git a/vendor/google.golang.org/grpc/testdata/testdata.go b/vendor/google.golang.org/grpc/testdata/testdata.go deleted file mode 100644 index 5609b19b..00000000 --- a/vendor/google.golang.org/grpc/testdata/testdata.go +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package testdata - -import ( - "log" - "os" - "path/filepath" -) - -// Path returns the absolute path the given relative file or directory path, -// relative to the google.golang.org/grpc/testdata directory in the user's GOPATH. -// If rel is already absolute, it is returned unmodified. -func Path(rel string) string { - if filepath.IsAbs(rel) { - return rel - } - - v, err := goPackagePath("google.golang.org/grpc/testdata") - if err != nil { - log.Fatalf("Error finding google.golang.org/grpc/testdata directory: %v", err) - } - - return filepath.Join(v, rel) -} - -func goPackagePath(pkg string) (path string, err error) { - gp := os.Getenv("GOPATH") - if gp == "" { - return path, os.ErrNotExist - } - - for _, p := range filepath.SplitList(gp) { - dir := filepath.Join(p, "src", filepath.FromSlash(pkg)) - fi, err := os.Stat(dir) - if os.IsNotExist(err) { - continue - } - if err != nil { - return "", err - } - if !fi.IsDir() { - continue - } - return dir, nil - } - return path, os.ErrNotExist -} diff --git a/vendor/google.golang.org/grpc/transport/handler_server_test.go b/vendor/google.golang.org/grpc/transport/handler_server_test.go deleted file mode 100644 index 3261b8e3..00000000 --- a/vendor/google.golang.org/grpc/transport/handler_server_test.go +++ /dev/null @@ -1,482 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package transport - -import ( - "errors" - "fmt" - "io" - "net/http" - "net/http/httptest" - "net/url" - "reflect" - "sync" - "testing" - "time" - - "github.com/golang/protobuf/proto" - dpb "github.com/golang/protobuf/ptypes/duration" - "golang.org/x/net/context" - epb "google.golang.org/genproto/googleapis/rpc/errdetails" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" -) - -func TestHandlerTransport_NewServerHandlerTransport(t *testing.T) { - type testCase struct { - name string - req *http.Request - wantErr string - modrw func(http.ResponseWriter) http.ResponseWriter - check func(*serverHandlerTransport, *testCase) error - } - tests := []testCase{ - { - name: "http/1.1", - req: &http.Request{ - ProtoMajor: 1, - ProtoMinor: 1, - }, - wantErr: "gRPC requires HTTP/2", - }, - { - name: "bad method", - req: &http.Request{ - ProtoMajor: 2, - Method: "GET", - Header: http.Header{}, - RequestURI: "/", - }, - wantErr: "invalid gRPC request method", - }, - { - name: "bad content type", - req: &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": {"application/foo"}, - }, - RequestURI: "/service/foo.bar", - }, - wantErr: "invalid gRPC request content-type", - }, - { - name: "not flusher", - req: &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": {"application/grpc"}, - }, - RequestURI: "/service/foo.bar", - }, - modrw: func(w http.ResponseWriter) http.ResponseWriter { - // Return w without its Flush method - type onlyCloseNotifier interface { - http.ResponseWriter - http.CloseNotifier - } - return struct{ onlyCloseNotifier }{w.(onlyCloseNotifier)} - }, - wantErr: "gRPC requires a ResponseWriter supporting http.Flusher", - }, - { - name: "not closenotifier", - req: &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": {"application/grpc"}, - }, - RequestURI: "/service/foo.bar", - }, - modrw: func(w http.ResponseWriter) http.ResponseWriter { - // Return w without its CloseNotify method - type onlyFlusher interface { - http.ResponseWriter - http.Flusher - } - return struct{ onlyFlusher }{w.(onlyFlusher)} - }, - wantErr: "gRPC requires a ResponseWriter supporting http.CloseNotifier", - }, - { - name: "valid", - req: &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": {"application/grpc"}, - }, - URL: &url.URL{ - Path: "/service/foo.bar", - }, - RequestURI: "/service/foo.bar", - }, - check: func(t *serverHandlerTransport, tt *testCase) error { - if t.req != tt.req { - return fmt.Errorf("t.req = %p; want %p", t.req, tt.req) - } - if t.rw == nil { - return errors.New("t.rw = nil; want non-nil") - } - return nil - }, - }, - { - name: "with timeout", - req: &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": []string{"application/grpc"}, - "Grpc-Timeout": {"200m"}, - }, - URL: &url.URL{ - Path: "/service/foo.bar", - }, - RequestURI: "/service/foo.bar", - }, - check: func(t *serverHandlerTransport, tt *testCase) error { - if !t.timeoutSet { - return errors.New("timeout not set") - } - if want := 200 * time.Millisecond; t.timeout != want { - return fmt.Errorf("timeout = %v; want %v", t.timeout, want) - } - return nil - }, - }, - { - name: "with bad timeout", - req: &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": []string{"application/grpc"}, - "Grpc-Timeout": {"tomorrow"}, - }, - URL: &url.URL{ - Path: "/service/foo.bar", - }, - RequestURI: "/service/foo.bar", - }, - wantErr: `stream error: code = Internal desc = "malformed time-out: transport: timeout unit is not recognized: \"tomorrow\""`, - }, - { - name: "with metadata", - req: &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": []string{"application/grpc"}, - "meta-foo": {"foo-val"}, - "meta-bar": {"bar-val1", "bar-val2"}, - "user-agent": {"x/y a/b"}, - }, - URL: &url.URL{ - Path: "/service/foo.bar", - }, - RequestURI: "/service/foo.bar", - }, - check: func(ht *serverHandlerTransport, tt *testCase) error { - want := metadata.MD{ - "meta-bar": {"bar-val1", "bar-val2"}, - "user-agent": {"x/y a/b"}, - "meta-foo": {"foo-val"}, - "content-type": {"application/grpc"}, - } - - if !reflect.DeepEqual(ht.headerMD, want) { - return fmt.Errorf("metdata = %#v; want %#v", ht.headerMD, want) - } - return nil - }, - }, - } - - for _, tt := range tests { - rw := newTestHandlerResponseWriter() - if tt.modrw != nil { - rw = tt.modrw(rw) - } - got, gotErr := NewServerHandlerTransport(rw, tt.req, nil) - if (gotErr != nil) != (tt.wantErr != "") || (gotErr != nil && gotErr.Error() != tt.wantErr) { - t.Errorf("%s: error = %v; want %q", tt.name, gotErr, tt.wantErr) - continue - } - if gotErr != nil { - continue - } - if tt.check != nil { - if err := tt.check(got.(*serverHandlerTransport), &tt); err != nil { - t.Errorf("%s: %v", tt.name, err) - } - } - } -} - -type testHandlerResponseWriter struct { - *httptest.ResponseRecorder - closeNotify chan bool -} - -func (w testHandlerResponseWriter) CloseNotify() <-chan bool { return w.closeNotify } -func (w testHandlerResponseWriter) Flush() {} - -func newTestHandlerResponseWriter() http.ResponseWriter { - return testHandlerResponseWriter{ - ResponseRecorder: httptest.NewRecorder(), - closeNotify: make(chan bool, 1), - } -} - -type handleStreamTest struct { - t *testing.T - bodyw *io.PipeWriter - req *http.Request - rw testHandlerResponseWriter - ht *serverHandlerTransport -} - -func newHandleStreamTest(t *testing.T) *handleStreamTest { - bodyr, bodyw := io.Pipe() - req := &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": {"application/grpc"}, - }, - URL: &url.URL{ - Path: "/service/foo.bar", - }, - RequestURI: "/service/foo.bar", - Body: bodyr, - } - rw := newTestHandlerResponseWriter().(testHandlerResponseWriter) - ht, err := NewServerHandlerTransport(rw, req, nil) - if err != nil { - t.Fatal(err) - } - return &handleStreamTest{ - t: t, - bodyw: bodyw, - ht: ht.(*serverHandlerTransport), - rw: rw, - } -} - -func TestHandlerTransport_HandleStreams(t *testing.T) { - st := newHandleStreamTest(t) - handleStream := func(s *Stream) { - if want := "/service/foo.bar"; s.method != want { - t.Errorf("stream method = %q; want %q", s.method, want) - } - st.bodyw.Close() // no body - st.ht.WriteStatus(s, status.New(codes.OK, "")) - } - st.ht.HandleStreams( - func(s *Stream) { go handleStream(s) }, - func(ctx context.Context, method string) context.Context { return ctx }, - ) - wantHeader := http.Header{ - "Date": nil, - "Content-Type": {"application/grpc"}, - "Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"}, - "Grpc-Status": {"0"}, - } - if !reflect.DeepEqual(st.rw.HeaderMap, wantHeader) { - t.Errorf("Header+Trailer Map: %#v; want %#v", st.rw.HeaderMap, wantHeader) - } -} - -// Tests that codes.Unimplemented will close the body, per comment in handler_server.go. -func TestHandlerTransport_HandleStreams_Unimplemented(t *testing.T) { - handleStreamCloseBodyTest(t, codes.Unimplemented, "thingy is unimplemented") -} - -// Tests that codes.InvalidArgument will close the body, per comment in handler_server.go. -func TestHandlerTransport_HandleStreams_InvalidArgument(t *testing.T) { - handleStreamCloseBodyTest(t, codes.InvalidArgument, "bad arg") -} - -func handleStreamCloseBodyTest(t *testing.T, statusCode codes.Code, msg string) { - st := newHandleStreamTest(t) - - handleStream := func(s *Stream) { - st.ht.WriteStatus(s, status.New(statusCode, msg)) - } - st.ht.HandleStreams( - func(s *Stream) { go handleStream(s) }, - func(ctx context.Context, method string) context.Context { return ctx }, - ) - wantHeader := http.Header{ - "Date": nil, - "Content-Type": {"application/grpc"}, - "Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"}, - "Grpc-Status": {fmt.Sprint(uint32(statusCode))}, - "Grpc-Message": {encodeGrpcMessage(msg)}, - } - - if !reflect.DeepEqual(st.rw.HeaderMap, wantHeader) { - t.Errorf("Header+Trailer mismatch.\n got: %#v\nwant: %#v", st.rw.HeaderMap, wantHeader) - } -} - -func TestHandlerTransport_HandleStreams_Timeout(t *testing.T) { - bodyr, bodyw := io.Pipe() - req := &http.Request{ - ProtoMajor: 2, - Method: "POST", - Header: http.Header{ - "Content-Type": {"application/grpc"}, - "Grpc-Timeout": {"200m"}, - }, - URL: &url.URL{ - Path: "/service/foo.bar", - }, - RequestURI: "/service/foo.bar", - Body: bodyr, - } - rw := newTestHandlerResponseWriter().(testHandlerResponseWriter) - ht, err := NewServerHandlerTransport(rw, req, nil) - if err != nil { - t.Fatal(err) - } - runStream := func(s *Stream) { - defer bodyw.Close() - select { - case <-s.ctx.Done(): - case <-time.After(5 * time.Second): - t.Errorf("timeout waiting for ctx.Done") - return - } - err := s.ctx.Err() - if err != context.DeadlineExceeded { - t.Errorf("ctx.Err = %v; want %v", err, context.DeadlineExceeded) - return - } - ht.WriteStatus(s, status.New(codes.DeadlineExceeded, "too slow")) - } - ht.HandleStreams( - func(s *Stream) { go runStream(s) }, - func(ctx context.Context, method string) context.Context { return ctx }, - ) - wantHeader := http.Header{ - "Date": nil, - "Content-Type": {"application/grpc"}, - "Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"}, - "Grpc-Status": {"4"}, - "Grpc-Message": {encodeGrpcMessage("too slow")}, - } - if !reflect.DeepEqual(rw.HeaderMap, wantHeader) { - t.Errorf("Header+Trailer Map mismatch.\n got: %#v\nwant: %#v", rw.HeaderMap, wantHeader) - } -} - -// TestHandlerTransport_HandleStreams_MultiWriteStatus ensures that -// concurrent "WriteStatus"s do not panic writing to closed "writes" channel. -func TestHandlerTransport_HandleStreams_MultiWriteStatus(t *testing.T) { - testHandlerTransportHandleStreams(t, func(st *handleStreamTest, s *Stream) { - if want := "/service/foo.bar"; s.method != want { - t.Errorf("stream method = %q; want %q", s.method, want) - } - st.bodyw.Close() // no body - - var wg sync.WaitGroup - wg.Add(5) - for i := 0; i < 5; i++ { - go func() { - defer wg.Done() - st.ht.WriteStatus(s, status.New(codes.OK, "")) - }() - } - wg.Wait() - }) -} - -// TestHandlerTransport_HandleStreams_WriteStatusWrite ensures that "Write" -// following "WriteStatus" does not panic writing to closed "writes" channel. -func TestHandlerTransport_HandleStreams_WriteStatusWrite(t *testing.T) { - testHandlerTransportHandleStreams(t, func(st *handleStreamTest, s *Stream) { - if want := "/service/foo.bar"; s.method != want { - t.Errorf("stream method = %q; want %q", s.method, want) - } - st.bodyw.Close() // no body - - st.ht.WriteStatus(s, status.New(codes.OK, "")) - st.ht.Write(s, []byte("hdr"), []byte("data"), &Options{}) - }) -} - -func testHandlerTransportHandleStreams(t *testing.T, handleStream func(st *handleStreamTest, s *Stream)) { - st := newHandleStreamTest(t) - st.ht.HandleStreams( - func(s *Stream) { go handleStream(st, s) }, - func(ctx context.Context, method string) context.Context { return ctx }, - ) -} - -func TestHandlerTransport_HandleStreams_ErrDetails(t *testing.T) { - errDetails := []proto.Message{ - &epb.RetryInfo{ - RetryDelay: &dpb.Duration{Seconds: 60}, - }, - &epb.ResourceInfo{ - ResourceType: "foo bar", - ResourceName: "service.foo.bar", - Owner: "User", - }, - } - - statusCode := codes.ResourceExhausted - msg := "you are being throttled" - st, err := status.New(statusCode, msg).WithDetails(errDetails...) - if err != nil { - t.Fatal(err) - } - - stBytes, err := proto.Marshal(st.Proto()) - if err != nil { - t.Fatal(err) - } - - hst := newHandleStreamTest(t) - handleStream := func(s *Stream) { - hst.ht.WriteStatus(s, st) - } - hst.ht.HandleStreams( - func(s *Stream) { go handleStream(s) }, - func(ctx context.Context, method string) context.Context { return ctx }, - ) - wantHeader := http.Header{ - "Date": nil, - "Content-Type": {"application/grpc"}, - "Trailer": {"Grpc-Status", "Grpc-Message", "Grpc-Status-Details-Bin"}, - "Grpc-Status": {fmt.Sprint(uint32(statusCode))}, - "Grpc-Message": {encodeGrpcMessage(msg)}, - "Grpc-Status-Details-Bin": {encodeBinHeader(stBytes)}, - } - - if !reflect.DeepEqual(hst.rw.HeaderMap, wantHeader) { - t.Errorf("Header+Trailer mismatch.\n got: %#v\nwant: %#v", hst.rw.HeaderMap, wantHeader) - } -} diff --git a/vendor/google.golang.org/grpc/transport/http_util_test.go b/vendor/google.golang.org/grpc/transport/http_util_test.go deleted file mode 100644 index c3754781..00000000 --- a/vendor/google.golang.org/grpc/transport/http_util_test.go +++ /dev/null @@ -1,176 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package transport - -import ( - "fmt" - "reflect" - "testing" - "time" -) - -func TestTimeoutEncode(t *testing.T) { - for _, test := range []struct { - in string - out string - }{ - {"12345678ns", "12345678n"}, - {"123456789ns", "123457u"}, - {"12345678us", "12345678u"}, - {"123456789us", "123457m"}, - {"12345678ms", "12345678m"}, - {"123456789ms", "123457S"}, - {"12345678s", "12345678S"}, - {"123456789s", "2057614M"}, - {"12345678m", "12345678M"}, - {"123456789m", "2057614H"}, - } { - d, err := time.ParseDuration(test.in) - if err != nil { - t.Fatalf("failed to parse duration string %s: %v", test.in, err) - } - out := encodeTimeout(d) - if out != test.out { - t.Fatalf("timeoutEncode(%s) = %s, want %s", test.in, out, test.out) - } - } -} - -func TestTimeoutDecode(t *testing.T) { - for _, test := range []struct { - // input - s string - // output - d time.Duration - err error - }{ - {"1234S", time.Second * 1234, nil}, - {"1234x", 0, fmt.Errorf("transport: timeout unit is not recognized: %q", "1234x")}, - {"1", 0, fmt.Errorf("transport: timeout string is too short: %q", "1")}, - {"", 0, fmt.Errorf("transport: timeout string is too short: %q", "")}, - } { - d, err := decodeTimeout(test.s) - if d != test.d || fmt.Sprint(err) != fmt.Sprint(test.err) { - t.Fatalf("timeoutDecode(%q) = %d, %v, want %d, %v", test.s, int64(d), err, int64(test.d), test.err) - } - } -} - -func TestContentSubtype(t *testing.T) { - tests := []struct { - contentType string - want string - wantValid bool - }{ - {"application/grpc", "", true}, - {"application/grpc+", "", true}, - {"application/grpc+blah", "blah", true}, - {"application/grpc;", "", true}, - {"application/grpc;blah", "blah", true}, - {"application/grpcd", "", false}, - {"application/grpd", "", false}, - {"application/grp", "", false}, - } - for _, tt := range tests { - got, gotValid := contentSubtype(tt.contentType) - if got != tt.want || gotValid != tt.wantValid { - t.Errorf("contentSubtype(%q) = (%v, %v); want (%v, %v)", tt.contentType, got, gotValid, tt.want, tt.wantValid) - } - } -} - -func TestEncodeGrpcMessage(t *testing.T) { - for _, tt := range []struct { - input string - expected string - }{ - {"", ""}, - {"Hello", "Hello"}, - {"my favorite character is \u0000", "my favorite character is %00"}, - {"my favorite character is %", "my favorite character is %25"}, - } { - actual := encodeGrpcMessage(tt.input) - if tt.expected != actual { - t.Errorf("encodeGrpcMessage(%v) = %v, want %v", tt.input, actual, tt.expected) - } - } -} - -func TestDecodeGrpcMessage(t *testing.T) { - for _, tt := range []struct { - input string - expected string - }{ - {"", ""}, - {"Hello", "Hello"}, - {"H%61o", "Hao"}, - {"H%6", "H%6"}, - {"%G0", "%G0"}, - {"%E7%B3%BB%E7%BB%9F", "系统"}, - } { - actual := decodeGrpcMessage(tt.input) - if tt.expected != actual { - t.Errorf("dncodeGrpcMessage(%v) = %v, want %v", tt.input, actual, tt.expected) - } - } -} - -const binaryValue = string(128) - -func TestEncodeMetadataHeader(t *testing.T) { - for _, test := range []struct { - // input - kin string - vin string - // output - vout string - }{ - {"key", "abc", "abc"}, - {"KEY", "abc", "abc"}, - {"key-bin", "abc", "YWJj"}, - {"key-bin", binaryValue, "woA"}, - } { - v := encodeMetadataHeader(test.kin, test.vin) - if !reflect.DeepEqual(v, test.vout) { - t.Fatalf("encodeMetadataHeader(%q, %q) = %q, want %q", test.kin, test.vin, v, test.vout) - } - } -} - -func TestDecodeMetadataHeader(t *testing.T) { - for _, test := range []struct { - // input - kin string - vin string - // output - vout string - err error - }{ - {"a", "abc", "abc", nil}, - {"key-bin", "Zm9vAGJhcg==", "foo\x00bar", nil}, - {"key-bin", "Zm9vAGJhcg", "foo\x00bar", nil}, - {"key-bin", "woA=", binaryValue, nil}, - {"a", "abc,efg", "abc,efg", nil}, - } { - v, err := decodeMetadataHeader(test.kin, test.vin) - if !reflect.DeepEqual(v, test.vout) || !reflect.DeepEqual(err, test.err) { - t.Fatalf("decodeMetadataHeader(%q, %q) = %q, %v, want %q, %v", test.kin, test.vin, v, err, test.vout, test.err) - } - } -} diff --git a/vendor/google.golang.org/grpc/transport/transport_test.go b/vendor/google.golang.org/grpc/transport/transport_test.go deleted file mode 100644 index 8c004ec6..00000000 --- a/vendor/google.golang.org/grpc/transport/transport_test.go +++ /dev/null @@ -1,2278 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package transport - -import ( - "bufio" - "bytes" - "encoding/binary" - "errors" - "fmt" - "io" - "math" - "net" - "net/http" - "reflect" - "strconv" - "strings" - "sync" - "testing" - "time" - - "golang.org/x/net/context" - "golang.org/x/net/http2" - "golang.org/x/net/http2/hpack" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/keepalive" - "google.golang.org/grpc/status" -) - -type server struct { - lis net.Listener - port string - startedErr chan error // error (or nil) with server start value - mu sync.Mutex - conns map[ServerTransport]bool - h *testStreamHandler -} - -var ( - expectedRequest = []byte("ping") - expectedResponse = []byte("pong") - expectedRequestLarge = make([]byte, initialWindowSize*2) - expectedResponseLarge = make([]byte, initialWindowSize*2) - expectedInvalidHeaderField = "invalid/content-type" -) - -type testStreamHandler struct { - t *http2Server - notify chan struct{} -} - -type hType int - -const ( - normal hType = iota - suspended - notifyCall - misbehaved - encodingRequiredStatus - invalidHeaderField - delayRead - delayWrite - pingpong -) - -func (h *testStreamHandler) handleStreamAndNotify(s *Stream) { - if h.notify == nil { - return - } - go func() { - select { - case <-h.notify: - default: - close(h.notify) - } - }() -} - -func (h *testStreamHandler) handleStream(t *testing.T, s *Stream) { - req := expectedRequest - resp := expectedResponse - if s.Method() == "foo.Large" { - req = expectedRequestLarge - resp = expectedResponseLarge - } - p := make([]byte, len(req)) - _, err := s.Read(p) - if err != nil { - return - } - if !bytes.Equal(p, req) { - t.Fatalf("handleStream got %v, want %v", p, req) - } - // send a response back to the client. - h.t.Write(s, nil, resp, &Options{}) - // send the trailer to end the stream. - h.t.WriteStatus(s, status.New(codes.OK, "")) -} - -func (h *testStreamHandler) handleStreamPingPong(t *testing.T, s *Stream) { - header := make([]byte, 5) - for { - if _, err := s.Read(header); err != nil { - if err == io.EOF { - h.t.WriteStatus(s, status.New(codes.OK, "")) - return - } - t.Fatalf("Error on server while reading data header: %v", err) - } - sz := binary.BigEndian.Uint32(header[1:]) - msg := make([]byte, int(sz)) - if _, err := s.Read(msg); err != nil { - t.Fatalf("Error on server while reading message: %v", err) - } - buf := make([]byte, sz+5) - buf[0] = byte(0) - binary.BigEndian.PutUint32(buf[1:], uint32(sz)) - copy(buf[5:], msg) - h.t.Write(s, nil, buf, &Options{}) - } -} - -func (h *testStreamHandler) handleStreamMisbehave(t *testing.T, s *Stream) { - conn, ok := s.ServerTransport().(*http2Server) - if !ok { - t.Fatalf("Failed to convert %v to *http2Server", s.ServerTransport()) - } - var sent int - p := make([]byte, http2MaxFrameLen) - for sent < initialWindowSize { - n := initialWindowSize - sent - // The last message may be smaller than http2MaxFrameLen - if n <= http2MaxFrameLen { - if s.Method() == "foo.Connection" { - // Violate connection level flow control window of client but do not - // violate any stream level windows. - p = make([]byte, n) - } else { - // Violate stream level flow control window of client. - p = make([]byte, n+1) - } - } - conn.controlBuf.put(&dataFrame{s.id, false, p, func() {}}) - sent += len(p) - } -} - -func (h *testStreamHandler) handleStreamEncodingRequiredStatus(t *testing.T, s *Stream) { - // raw newline is not accepted by http2 framer so it must be encoded. - h.t.WriteStatus(s, encodingTestStatus) -} - -func (h *testStreamHandler) handleStreamInvalidHeaderField(t *testing.T, s *Stream) { - headerFields := []hpack.HeaderField{} - headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: expectedInvalidHeaderField}) - h.t.controlBuf.put(&headerFrame{ - streamID: s.id, - hf: headerFields, - endStream: false, - }) -} - -func (h *testStreamHandler) handleStreamDelayRead(t *testing.T, s *Stream) { - req := expectedRequest - resp := expectedResponse - if s.Method() == "foo.Large" { - req = expectedRequestLarge - resp = expectedResponseLarge - } - p := make([]byte, len(req)) - - // Wait before reading. Give time to client to start sending - // before server starts reading. - time.Sleep(2 * time.Second) - _, err := s.Read(p) - if err != nil { - t.Fatalf("s.Read(_) = _, %v, want _, <nil>", err) - return - } - - if !bytes.Equal(p, req) { - t.Fatalf("handleStream got %v, want %v", p, req) - } - // send a response back to the client. - h.t.Write(s, nil, resp, &Options{}) - // send the trailer to end the stream. - h.t.WriteStatus(s, status.New(codes.OK, "")) -} - -func (h *testStreamHandler) handleStreamDelayWrite(t *testing.T, s *Stream) { - req := expectedRequest - resp := expectedResponse - if s.Method() == "foo.Large" { - req = expectedRequestLarge - resp = expectedResponseLarge - } - p := make([]byte, len(req)) - _, err := s.Read(p) - if err != nil { - t.Fatalf("s.Read(_) = _, %v, want _, <nil>", err) - return - } - if !bytes.Equal(p, req) { - t.Fatalf("handleStream got %v, want %v", p, req) - } - - // Wait before sending. Give time to client to start reading - // before server starts sending. - time.Sleep(2 * time.Second) - h.t.Write(s, nil, resp, &Options{}) - // send the trailer to end the stream. - h.t.WriteStatus(s, status.New(codes.OK, "")) -} - -// start starts server. Other goroutines should block on s.readyChan for further operations. -func (s *server) start(t *testing.T, port int, serverConfig *ServerConfig, ht hType) { - var err error - if port == 0 { - s.lis, err = net.Listen("tcp", "localhost:0") - } else { - s.lis, err = net.Listen("tcp", "localhost:"+strconv.Itoa(port)) - } - if err != nil { - s.startedErr <- fmt.Errorf("failed to listen: %v", err) - return - } - _, p, err := net.SplitHostPort(s.lis.Addr().String()) - if err != nil { - s.startedErr <- fmt.Errorf("failed to parse listener address: %v", err) - return - } - s.port = p - s.conns = make(map[ServerTransport]bool) - s.startedErr <- nil - for { - conn, err := s.lis.Accept() - if err != nil { - return - } - transport, err := NewServerTransport("http2", conn, serverConfig) - if err != nil { - return - } - s.mu.Lock() - if s.conns == nil { - s.mu.Unlock() - transport.Close() - return - } - s.conns[transport] = true - h := &testStreamHandler{t: transport.(*http2Server)} - s.h = h - s.mu.Unlock() - switch ht { - case notifyCall: - go transport.HandleStreams(h.handleStreamAndNotify, - func(ctx context.Context, _ string) context.Context { - return ctx - }) - case suspended: - go transport.HandleStreams(func(*Stream) {}, // Do nothing to handle the stream. - func(ctx context.Context, method string) context.Context { - return ctx - }) - case misbehaved: - go transport.HandleStreams(func(s *Stream) { - go h.handleStreamMisbehave(t, s) - }, func(ctx context.Context, method string) context.Context { - return ctx - }) - case encodingRequiredStatus: - go transport.HandleStreams(func(s *Stream) { - go h.handleStreamEncodingRequiredStatus(t, s) - }, func(ctx context.Context, method string) context.Context { - return ctx - }) - case invalidHeaderField: - go transport.HandleStreams(func(s *Stream) { - go h.handleStreamInvalidHeaderField(t, s) - }, func(ctx context.Context, method string) context.Context { - return ctx - }) - case delayRead: - go transport.HandleStreams(func(s *Stream) { - go h.handleStreamDelayRead(t, s) - }, func(ctx context.Context, method string) context.Context { - return ctx - }) - case delayWrite: - go transport.HandleStreams(func(s *Stream) { - go h.handleStreamDelayWrite(t, s) - }, func(ctx context.Context, method string) context.Context { - return ctx - }) - case pingpong: - go transport.HandleStreams(func(s *Stream) { - go h.handleStreamPingPong(t, s) - }, func(ctx context.Context, method string) context.Context { - return ctx - }) - default: - go transport.HandleStreams(func(s *Stream) { - go h.handleStream(t, s) - }, func(ctx context.Context, method string) context.Context { - return ctx - }) - } - } -} - -func (s *server) wait(t *testing.T, timeout time.Duration) { - select { - case err := <-s.startedErr: - if err != nil { - t.Fatal(err) - } - case <-time.After(timeout): - t.Fatalf("Timed out after %v waiting for server to be ready", timeout) - } -} - -func (s *server) stop() { - s.lis.Close() - s.mu.Lock() - for c := range s.conns { - c.Close() - } - s.conns = nil - s.mu.Unlock() -} - -func setUp(t *testing.T, port int, maxStreams uint32, ht hType) (*server, ClientTransport) { - return setUpWithOptions(t, port, &ServerConfig{MaxStreams: maxStreams}, ht, ConnectOptions{}) -} - -func setUpWithOptions(t *testing.T, port int, serverConfig *ServerConfig, ht hType, copts ConnectOptions) (*server, ClientTransport) { - server := &server{startedErr: make(chan error, 1)} - go server.start(t, port, serverConfig, ht) - server.wait(t, 2*time.Second) - addr := "localhost:" + server.port - var ( - ct ClientTransport - connErr error - ) - target := TargetInfo{ - Addr: addr, - } - connectCtx, cancel := context.WithDeadline(context.Background(), time.Now().Add(2*time.Second)) - ct, connErr = NewClientTransport(connectCtx, context.Background(), target, copts, func() {}) - if connErr != nil { - cancel() // Do not cancel in success path. - t.Fatalf("failed to create transport: %v", connErr) - } - return server, ct -} - -func setUpWithNoPingServer(t *testing.T, copts ConnectOptions, done chan net.Conn) ClientTransport { - lis, err := net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen: %v", err) - } - // Launch a non responsive server. - go func() { - defer lis.Close() - conn, err := lis.Accept() - if err != nil { - t.Errorf("Error at server-side while accepting: %v", err) - close(done) - return - } - done <- conn - }() - connectCtx, cancel := context.WithDeadline(context.Background(), time.Now().Add(2*time.Second)) - tr, err := NewClientTransport(connectCtx, context.Background(), TargetInfo{Addr: lis.Addr().String()}, copts, func() {}) - if err != nil { - cancel() // Do not cancel in success path. - // Server clean-up. - lis.Close() - if conn, ok := <-done; ok { - conn.Close() - } - t.Fatalf("Failed to dial: %v", err) - } - return tr -} - -// TestInflightStreamClosing ensures that closing in-flight stream -// sends StreamError to concurrent stream reader. -func TestInflightStreamClosing(t *testing.T) { - serverConfig := &ServerConfig{} - server, client := setUpWithOptions(t, 0, serverConfig, suspended, ConnectOptions{}) - defer server.stop() - defer client.Close() - - stream, err := client.NewStream(context.Background(), &CallHdr{}) - if err != nil { - t.Fatalf("Client failed to create RPC request: %v", err) - } - - donec := make(chan struct{}) - serr := StreamError{Desc: "client connection is closing"} - go func() { - defer close(donec) - if _, err := stream.Read(make([]byte, defaultWindowSize)); err != serr { - t.Errorf("unexpected Stream error %v, expected %v", err, serr) - } - }() - - // should unblock concurrent stream.Read - client.CloseStream(stream, serr) - - // wait for stream.Read error - timeout := time.NewTimer(5 * time.Second) - select { - case <-donec: - if !timeout.Stop() { - <-timeout.C - } - case <-timeout.C: - t.Fatalf("Test timed out, expected a StreamError.") - } -} - -// TestMaxConnectionIdle tests that a server will send GoAway to a idle client. -// An idle client is one who doesn't make any RPC calls for a duration of -// MaxConnectionIdle time. -func TestMaxConnectionIdle(t *testing.T) { - serverConfig := &ServerConfig{ - KeepaliveParams: keepalive.ServerParameters{ - MaxConnectionIdle: 2 * time.Second, - }, - } - server, client := setUpWithOptions(t, 0, serverConfig, suspended, ConnectOptions{}) - defer server.stop() - defer client.Close() - stream, err := client.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Client failed to create RPC request: %v", err) - } - stream.mu.Lock() - stream.rstStream = true - stream.mu.Unlock() - client.CloseStream(stream, nil) - // wait for server to see that closed stream and max-age logic to send goaway after no new RPCs are mode - timeout := time.NewTimer(time.Second * 4) - select { - case <-client.GoAway(): - if !timeout.Stop() { - <-timeout.C - } - case <-timeout.C: - t.Fatalf("Test timed out, expected a GoAway from the server.") - } -} - -// TestMaxConenctionIdleNegative tests that a server will not send GoAway to a non-idle(busy) client. -func TestMaxConnectionIdleNegative(t *testing.T) { - serverConfig := &ServerConfig{ - KeepaliveParams: keepalive.ServerParameters{ - MaxConnectionIdle: 2 * time.Second, - }, - } - server, client := setUpWithOptions(t, 0, serverConfig, suspended, ConnectOptions{}) - defer server.stop() - defer client.Close() - _, err := client.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Client failed to create RPC request: %v", err) - } - timeout := time.NewTimer(time.Second * 4) - select { - case <-client.GoAway(): - if !timeout.Stop() { - <-timeout.C - } - t.Fatalf("A non-idle client received a GoAway.") - case <-timeout.C: - } - -} - -// TestMaxConnectionAge tests that a server will send GoAway after a duration of MaxConnectionAge. -func TestMaxConnectionAge(t *testing.T) { - serverConfig := &ServerConfig{ - KeepaliveParams: keepalive.ServerParameters{ - MaxConnectionAge: 2 * time.Second, - }, - } - server, client := setUpWithOptions(t, 0, serverConfig, suspended, ConnectOptions{}) - defer server.stop() - defer client.Close() - _, err := client.NewStream(context.Background(), &CallHdr{}) - if err != nil { - t.Fatalf("Client failed to create stream: %v", err) - } - // Wait for max-age logic to send GoAway. - timeout := time.NewTimer(4 * time.Second) - select { - case <-client.GoAway(): - if !timeout.Stop() { - <-timeout.C - } - case <-timeout.C: - t.Fatalf("Test timer out, expected a GoAway from the server.") - } -} - -// TestKeepaliveServer tests that a server closes connection with a client that doesn't respond to keepalive pings. -func TestKeepaliveServer(t *testing.T) { - serverConfig := &ServerConfig{ - KeepaliveParams: keepalive.ServerParameters{ - Time: 2 * time.Second, - Timeout: 1 * time.Second, - }, - } - server, c := setUpWithOptions(t, 0, serverConfig, suspended, ConnectOptions{}) - defer server.stop() - defer c.Close() - client, err := net.Dial("tcp", server.lis.Addr().String()) - if err != nil { - t.Fatalf("Failed to dial: %v", err) - } - defer client.Close() - - // Set read deadline on client conn so that it doesn't block forever in errorsome cases. - client.SetDeadline(time.Now().Add(10 * time.Second)) - - if n, err := client.Write(clientPreface); err != nil || n != len(clientPreface) { - t.Fatalf("Error writing client preface; n=%v, err=%v", n, err) - } - framer := newFramer(client, defaultWriteBufSize, defaultReadBufSize) - if err := framer.fr.WriteSettings(http2.Setting{}); err != nil { - t.Fatal("Error writing settings frame:", err) - } - framer.writer.Flush() - // Wait for keepalive logic to close the connection. - time.Sleep(4 * time.Second) - b := make([]byte, 24) - for { - _, err = client.Read(b) - if err == nil { - continue - } - if err != io.EOF { - t.Fatalf("client.Read(_) = _,%v, want io.EOF", err) - } - break - } -} - -// TestKeepaliveServerNegative tests that a server doesn't close connection with a client that responds to keepalive pings. -func TestKeepaliveServerNegative(t *testing.T) { - serverConfig := &ServerConfig{ - KeepaliveParams: keepalive.ServerParameters{ - Time: 2 * time.Second, - Timeout: 1 * time.Second, - }, - } - server, client := setUpWithOptions(t, 0, serverConfig, suspended, ConnectOptions{}) - defer server.stop() - defer client.Close() - // Give keepalive logic some time by sleeping. - time.Sleep(4 * time.Second) - // Assert that client is still active. - clientTr := client.(*http2Client) - clientTr.mu.Lock() - defer clientTr.mu.Unlock() - if clientTr.state != reachable { - t.Fatalf("Test failed: Expected server-client connection to be healthy.") - } -} - -func TestKeepaliveClientClosesIdleTransport(t *testing.T) { - done := make(chan net.Conn, 1) - tr := setUpWithNoPingServer(t, ConnectOptions{KeepaliveParams: keepalive.ClientParameters{ - Time: 2 * time.Second, // Keepalive time = 2 sec. - Timeout: 1 * time.Second, // Keepalive timeout = 1 sec. - PermitWithoutStream: true, // Run keepalive even with no RPCs. - }}, done) - defer tr.Close() - conn, ok := <-done - if !ok { - t.Fatalf("Server didn't return connection object") - } - defer conn.Close() - // Sleep for keepalive to close the connection. - time.Sleep(4 * time.Second) - // Assert that the connection was closed. - ct := tr.(*http2Client) - ct.mu.Lock() - defer ct.mu.Unlock() - if ct.state == reachable { - t.Fatalf("Test Failed: Expected client transport to have closed.") - } -} - -func TestKeepaliveClientStaysHealthyOnIdleTransport(t *testing.T) { - done := make(chan net.Conn, 1) - tr := setUpWithNoPingServer(t, ConnectOptions{KeepaliveParams: keepalive.ClientParameters{ - Time: 2 * time.Second, // Keepalive time = 2 sec. - Timeout: 1 * time.Second, // Keepalive timeout = 1 sec. - }}, done) - defer tr.Close() - conn, ok := <-done - if !ok { - t.Fatalf("server didn't reutrn connection object") - } - defer conn.Close() - // Give keepalive some time. - time.Sleep(4 * time.Second) - // Assert that connections is still healthy. - ct := tr.(*http2Client) - ct.mu.Lock() - defer ct.mu.Unlock() - if ct.state != reachable { - t.Fatalf("Test failed: Expected client transport to be healthy.") - } -} - -func TestKeepaliveClientClosesWithActiveStreams(t *testing.T) { - done := make(chan net.Conn, 1) - tr := setUpWithNoPingServer(t, ConnectOptions{KeepaliveParams: keepalive.ClientParameters{ - Time: 2 * time.Second, // Keepalive time = 2 sec. - Timeout: 1 * time.Second, // Keepalive timeout = 1 sec. - }}, done) - defer tr.Close() - conn, ok := <-done - if !ok { - t.Fatalf("Server didn't return connection object") - } - defer conn.Close() - // Create a stream. - _, err := tr.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Failed to create a new stream: %v", err) - } - // Give keepalive some time. - time.Sleep(4 * time.Second) - // Assert that transport was closed. - ct := tr.(*http2Client) - ct.mu.Lock() - defer ct.mu.Unlock() - if ct.state == reachable { - t.Fatalf("Test failed: Expected client transport to have closed.") - } -} - -func TestKeepaliveClientStaysHealthyWithResponsiveServer(t *testing.T) { - s, tr := setUpWithOptions(t, 0, &ServerConfig{MaxStreams: math.MaxUint32}, normal, ConnectOptions{KeepaliveParams: keepalive.ClientParameters{ - Time: 2 * time.Second, // Keepalive time = 2 sec. - Timeout: 1 * time.Second, // Keepalive timeout = 1 sec. - PermitWithoutStream: true, // Run keepalive even with no RPCs. - }}) - defer s.stop() - defer tr.Close() - // Give keep alive some time. - time.Sleep(4 * time.Second) - // Assert that transport is healthy. - ct := tr.(*http2Client) - ct.mu.Lock() - defer ct.mu.Unlock() - if ct.state != reachable { - t.Fatalf("Test failed: Expected client transport to be healthy.") - } -} - -func TestKeepaliveServerEnforcementWithAbusiveClientNoRPC(t *testing.T) { - serverConfig := &ServerConfig{ - KeepalivePolicy: keepalive.EnforcementPolicy{ - MinTime: 2 * time.Second, - }, - } - clientOptions := ConnectOptions{ - KeepaliveParams: keepalive.ClientParameters{ - Time: 50 * time.Millisecond, - Timeout: 1 * time.Second, - PermitWithoutStream: true, - }, - } - server, client := setUpWithOptions(t, 0, serverConfig, normal, clientOptions) - defer server.stop() - defer client.Close() - - timeout := time.NewTimer(10 * time.Second) - select { - case <-client.GoAway(): - if !timeout.Stop() { - <-timeout.C - } - case <-timeout.C: - t.Fatalf("Test failed: Expected a GoAway from server.") - } - time.Sleep(500 * time.Millisecond) - ct := client.(*http2Client) - ct.mu.Lock() - defer ct.mu.Unlock() - if ct.state == reachable { - t.Fatalf("Test failed: Expected the connection to be closed.") - } -} - -func TestKeepaliveServerEnforcementWithAbusiveClientWithRPC(t *testing.T) { - serverConfig := &ServerConfig{ - KeepalivePolicy: keepalive.EnforcementPolicy{ - MinTime: 2 * time.Second, - }, - } - clientOptions := ConnectOptions{ - KeepaliveParams: keepalive.ClientParameters{ - Time: 50 * time.Millisecond, - Timeout: 1 * time.Second, - }, - } - server, client := setUpWithOptions(t, 0, serverConfig, suspended, clientOptions) - defer server.stop() - defer client.Close() - - if _, err := client.NewStream(context.Background(), &CallHdr{Flush: true}); err != nil { - t.Fatalf("Client failed to create stream.") - } - timeout := time.NewTimer(10 * time.Second) - select { - case <-client.GoAway(): - if !timeout.Stop() { - <-timeout.C - } - case <-timeout.C: - t.Fatalf("Test failed: Expected a GoAway from server.") - } - time.Sleep(500 * time.Millisecond) - ct := client.(*http2Client) - ct.mu.Lock() - defer ct.mu.Unlock() - if ct.state == reachable { - t.Fatalf("Test failed: Expected the connection to be closed.") - } -} - -func TestKeepaliveServerEnforcementWithObeyingClientNoRPC(t *testing.T) { - serverConfig := &ServerConfig{ - KeepalivePolicy: keepalive.EnforcementPolicy{ - MinTime: 100 * time.Millisecond, - PermitWithoutStream: true, - }, - } - clientOptions := ConnectOptions{ - KeepaliveParams: keepalive.ClientParameters{ - Time: 101 * time.Millisecond, - Timeout: 1 * time.Second, - PermitWithoutStream: true, - }, - } - server, client := setUpWithOptions(t, 0, serverConfig, normal, clientOptions) - defer server.stop() - defer client.Close() - - // Give keepalive enough time. - time.Sleep(3 * time.Second) - // Assert that connection is healthy. - ct := client.(*http2Client) - ct.mu.Lock() - defer ct.mu.Unlock() - if ct.state != reachable { - t.Fatalf("Test failed: Expected connection to be healthy.") - } -} - -func TestKeepaliveServerEnforcementWithObeyingClientWithRPC(t *testing.T) { - serverConfig := &ServerConfig{ - KeepalivePolicy: keepalive.EnforcementPolicy{ - MinTime: 100 * time.Millisecond, - }, - } - clientOptions := ConnectOptions{ - KeepaliveParams: keepalive.ClientParameters{ - Time: 101 * time.Millisecond, - Timeout: 1 * time.Second, - }, - } - server, client := setUpWithOptions(t, 0, serverConfig, suspended, clientOptions) - defer server.stop() - defer client.Close() - - if _, err := client.NewStream(context.Background(), &CallHdr{Flush: true}); err != nil { - t.Fatalf("Client failed to create stream.") - } - - // Give keepalive enough time. - time.Sleep(3 * time.Second) - // Assert that connection is healthy. - ct := client.(*http2Client) - ct.mu.Lock() - defer ct.mu.Unlock() - if ct.state != reachable { - t.Fatalf("Test failed: Expected connection to be healthy.") - } -} - -func TestClientSendAndReceive(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, normal) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Small", - } - s1, err1 := ct.NewStream(context.Background(), callHdr) - if err1 != nil { - t.Fatalf("failed to open stream: %v", err1) - } - if s1.id != 1 { - t.Fatalf("wrong stream id: %d", s1.id) - } - s2, err2 := ct.NewStream(context.Background(), callHdr) - if err2 != nil { - t.Fatalf("failed to open stream: %v", err2) - } - if s2.id != 3 { - t.Fatalf("wrong stream id: %d", s2.id) - } - opts := Options{ - Last: true, - Delay: false, - } - if err := ct.Write(s1, nil, expectedRequest, &opts); err != nil && err != io.EOF { - t.Fatalf("failed to send data: %v", err) - } - p := make([]byte, len(expectedResponse)) - _, recvErr := s1.Read(p) - if recvErr != nil || !bytes.Equal(p, expectedResponse) { - t.Fatalf("Error: %v, want <nil>; Result: %v, want %v", recvErr, p, expectedResponse) - } - _, recvErr = s1.Read(p) - if recvErr != io.EOF { - t.Fatalf("Error: %v; want <EOF>", recvErr) - } - ct.Close() - server.stop() -} - -func TestClientErrorNotify(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, normal) - go server.stop() - // ct.reader should detect the error and activate ct.Error(). - <-ct.Error() - ct.Close() -} - -func performOneRPC(ct ClientTransport) { - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Small", - } - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - return - } - opts := Options{ - Last: true, - Delay: false, - } - if err := ct.Write(s, []byte{}, expectedRequest, &opts); err == nil || err == io.EOF { - time.Sleep(5 * time.Millisecond) - // The following s.Recv()'s could error out because the - // underlying transport is gone. - // - // Read response - p := make([]byte, len(expectedResponse)) - s.Read(p) - // Read io.EOF - s.Read(p) - } -} - -func TestClientMix(t *testing.T) { - s, ct := setUp(t, 0, math.MaxUint32, normal) - go func(s *server) { - time.Sleep(5 * time.Second) - s.stop() - }(s) - go func(ct ClientTransport) { - <-ct.Error() - ct.Close() - }(ct) - for i := 0; i < 1000; i++ { - time.Sleep(10 * time.Millisecond) - go performOneRPC(ct) - } -} - -func TestLargeMessage(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, normal) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Large", - } - var wg sync.WaitGroup - for i := 0; i < 2; i++ { - wg.Add(1) - go func() { - defer wg.Done() - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - t.Errorf("%v.NewStream(_, _) = _, %v, want _, <nil>", ct, err) - } - if err := ct.Write(s, []byte{}, expectedRequestLarge, &Options{Last: true, Delay: false}); err != nil && err != io.EOF { - t.Errorf("%v.Write(_, _, _) = %v, want <nil>", ct, err) - } - p := make([]byte, len(expectedResponseLarge)) - if _, err := s.Read(p); err != nil || !bytes.Equal(p, expectedResponseLarge) { - t.Errorf("s.Read(%v) = _, %v, want %v, <nil>", err, p, expectedResponse) - } - if _, err = s.Read(p); err != io.EOF { - t.Errorf("Failed to complete the stream %v; want <EOF>", err) - } - }() - } - wg.Wait() - ct.Close() - server.stop() -} - -func TestLargeMessageWithDelayRead(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, delayRead) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Large", - } - var wg sync.WaitGroup - for i := 0; i < 2; i++ { - wg.Add(1) - go func() { - defer wg.Done() - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - t.Errorf("%v.NewStream(_, _) = _, %v, want _, <nil>", ct, err) - } - if err := ct.Write(s, []byte{}, expectedRequestLarge, &Options{Last: true, Delay: false}); err != nil && err != io.EOF { - t.Errorf("%v.Write(_, _, _) = %v, want <nil>", ct, err) - } - p := make([]byte, len(expectedResponseLarge)) - - // Give time to server to begin sending before client starts reading. - time.Sleep(2 * time.Second) - if _, err := s.Read(p); err != nil || !bytes.Equal(p, expectedResponseLarge) { - t.Errorf("s.Read(_) = _, %v, want _, <nil>", err) - } - if _, err = s.Read(p); err != io.EOF { - t.Errorf("Failed to complete the stream %v; want <EOF>", err) - } - }() - } - wg.Wait() - ct.Close() - server.stop() -} - -func TestLargeMessageDelayWrite(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, delayWrite) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Large", - } - var wg sync.WaitGroup - for i := 0; i < 2; i++ { - wg.Add(1) - go func() { - defer wg.Done() - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - t.Errorf("%v.NewStream(_, _) = _, %v, want _, <nil>", ct, err) - } - - // Give time to server to start reading before client starts sending. - time.Sleep(2 * time.Second) - if err := ct.Write(s, []byte{}, expectedRequestLarge, &Options{Last: true, Delay: false}); err != nil && err != io.EOF { - t.Errorf("%v.Write(_, _, _) = %v, want <nil>", ct, err) - } - p := make([]byte, len(expectedResponseLarge)) - if _, err := s.Read(p); err != nil || !bytes.Equal(p, expectedResponseLarge) { - t.Errorf("io.ReadFull(%v) = _, %v, want %v, <nil>", err, p, expectedResponse) - } - if _, err = s.Read(p); err != io.EOF { - t.Errorf("Failed to complete the stream %v; want <EOF>", err) - } - }() - } - wg.Wait() - ct.Close() - server.stop() -} - -func TestGracefulClose(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, normal) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Small", - } - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - t.Fatalf("%v.NewStream(_, _) = _, %v, want _, <nil>", ct, err) - } - if err = ct.GracefulClose(); err != nil { - t.Fatalf("%v.GracefulClose() = %v, want <nil>", ct, err) - } - var wg sync.WaitGroup - // Expect the failure for all the follow-up streams because ct has been closed gracefully. - for i := 0; i < 100; i++ { - wg.Add(1) - go func() { - defer wg.Done() - if _, err := ct.NewStream(context.Background(), callHdr); err != errStreamDrain { - t.Errorf("%v.NewStream(_, _) = _, %v, want _, %v", ct, err, errStreamDrain) - } - }() - } - opts := Options{ - Last: true, - Delay: false, - } - // The stream which was created before graceful close can still proceed. - if err := ct.Write(s, nil, expectedRequest, &opts); err != nil && err != io.EOF { - t.Fatalf("%v.Write(_, _, _) = %v, want <nil>", ct, err) - } - p := make([]byte, len(expectedResponse)) - if _, err := s.Read(p); err != nil || !bytes.Equal(p, expectedResponse) { - t.Fatalf("s.Read(%v) = _, %v, want %v, <nil>", err, p, expectedResponse) - } - if _, err = s.Read(p); err != io.EOF { - t.Fatalf("Failed to complete the stream %v; want <EOF>", err) - } - wg.Wait() - ct.Close() - server.stop() -} - -func TestLargeMessageSuspension(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, suspended) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Large", - } - // Set a long enough timeout for writing a large message out. - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - s, err := ct.NewStream(ctx, callHdr) - if err != nil { - t.Fatalf("failed to open stream: %v", err) - } - // Write should not be done successfully due to flow control. - msg := make([]byte, initialWindowSize*8) - err = ct.Write(s, nil, msg, &Options{Last: true, Delay: false}) - expectedErr := streamErrorf(codes.DeadlineExceeded, "%v", context.DeadlineExceeded) - if err != expectedErr { - t.Fatalf("Write got %v, want %v", err, expectedErr) - } - ct.Close() - server.stop() -} - -func TestMaxStreams(t *testing.T) { - server, ct := setUp(t, 0, 1, suspended) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Large", - } - // Have a pending stream which takes all streams quota. - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - t.Fatalf("Failed to open stream: %v", err) - } - cc, ok := ct.(*http2Client) - if !ok { - t.Fatalf("Failed to convert %v to *http2Client", ct) - } - done := make(chan struct{}) - ch := make(chan int) - ready := make(chan struct{}) - go func() { - for { - select { - case <-time.After(5 * time.Millisecond): - select { - case ch <- 0: - case <-ready: - return - } - case <-time.After(5 * time.Second): - close(done) - return - case <-ready: - return - } - } - }() - // Test these conditions until they pass or - // we reach the deadline (failure case). - for { - select { - case <-ch: - case <-done: - t.Fatalf("streamsQuota.quota shouldn't be non-zero.") - } - cc.streamsQuota.mu.Lock() - sq := cc.streamsQuota.quota - cc.streamsQuota.mu.Unlock() - if sq == 0 { - break - } - } - close(ready) - // Close the pending stream so that the streams quota becomes available for the next new stream. - ct.CloseStream(s, nil) - cc.streamsQuota.mu.Lock() - i := cc.streamsQuota.quota - cc.streamsQuota.mu.Unlock() - if i != 1 { - t.Fatalf("streamsQuota is %d, want 1.", i) - } - if _, err := ct.NewStream(context.Background(), callHdr); err != nil { - t.Fatalf("Failed to open stream: %v", err) - } - ct.Close() - server.stop() -} - -func TestServerContextCanceledOnClosedConnection(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, suspended) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo", - } - var sc *http2Server - // Wait until the server transport is setup. - for { - server.mu.Lock() - if len(server.conns) == 0 { - server.mu.Unlock() - time.Sleep(time.Millisecond) - continue - } - for k := range server.conns { - var ok bool - sc, ok = k.(*http2Server) - if !ok { - t.Fatalf("Failed to convert %v to *http2Server", k) - } - } - server.mu.Unlock() - break - } - cc, ok := ct.(*http2Client) - if !ok { - t.Fatalf("Failed to convert %v to *http2Client", ct) - } - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - t.Fatalf("Failed to open stream: %v", err) - } - cc.controlBuf.put(&dataFrame{s.id, false, make([]byte, http2MaxFrameLen), func() {}}) - // Loop until the server side stream is created. - var ss *Stream - for { - time.Sleep(time.Second) - sc.mu.Lock() - if len(sc.activeStreams) == 0 { - sc.mu.Unlock() - continue - } - ss = sc.activeStreams[s.id] - sc.mu.Unlock() - break - } - cc.Close() - select { - case <-ss.Context().Done(): - if ss.Context().Err() != context.Canceled { - t.Fatalf("ss.Context().Err() got %v, want %v", ss.Context().Err(), context.Canceled) - } - case <-time.After(5 * time.Second): - t.Fatalf("Failed to cancel the context of the sever side stream.") - } - server.stop() -} - -func TestClientConnDecoupledFromApplicationRead(t *testing.T) { - connectOptions := ConnectOptions{ - InitialWindowSize: defaultWindowSize, - InitialConnWindowSize: defaultWindowSize, - } - server, client := setUpWithOptions(t, 0, &ServerConfig{}, notifyCall, connectOptions) - defer server.stop() - defer client.Close() - - waitWhileTrue(t, func() (bool, error) { - server.mu.Lock() - defer server.mu.Unlock() - - if len(server.conns) == 0 { - return true, fmt.Errorf("timed-out while waiting for connection to be created on the server") - } - return false, nil - }) - - var st *http2Server - server.mu.Lock() - for k := range server.conns { - st = k.(*http2Server) - } - notifyChan := make(chan struct{}) - server.h.notify = notifyChan - server.mu.Unlock() - cstream1, err := client.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Client failed to create first stream. Err: %v", err) - } - - <-notifyChan - var sstream1 *Stream - // Access stream on the server. - st.mu.Lock() - for _, v := range st.activeStreams { - if v.id == cstream1.id { - sstream1 = v - } - } - st.mu.Unlock() - if sstream1 == nil { - t.Fatalf("Didn't find stream corresponding to client cstream.id: %v on the server", cstream1.id) - } - // Exhaust client's connection window. - if err := st.Write(sstream1, []byte{}, make([]byte, defaultWindowSize), &Options{}); err != nil { - t.Fatalf("Server failed to write data. Err: %v", err) - } - notifyChan = make(chan struct{}) - server.mu.Lock() - server.h.notify = notifyChan - server.mu.Unlock() - // Create another stream on client. - cstream2, err := client.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Client failed to create second stream. Err: %v", err) - } - <-notifyChan - var sstream2 *Stream - st.mu.Lock() - for _, v := range st.activeStreams { - if v.id == cstream2.id { - sstream2 = v - } - } - st.mu.Unlock() - if sstream2 == nil { - t.Fatalf("Didn't find stream corresponding to client cstream.id: %v on the server", cstream2.id) - } - // Server should be able to send data on the new stream, even though the client hasn't read anything on the first stream. - if err := st.Write(sstream2, []byte{}, make([]byte, defaultWindowSize), &Options{}); err != nil { - t.Fatalf("Server failed to write data. Err: %v", err) - } - - // Client should be able to read data on second stream. - if _, err := cstream2.Read(make([]byte, defaultWindowSize)); err != nil { - t.Fatalf("_.Read(_) = _, %v, want _, <nil>", err) - } - - // Client should be able to read data on first stream. - if _, err := cstream1.Read(make([]byte, defaultWindowSize)); err != nil { - t.Fatalf("_.Read(_) = _, %v, want _, <nil>", err) - } -} - -func TestServerConnDecoupledFromApplicationRead(t *testing.T) { - serverConfig := &ServerConfig{ - InitialWindowSize: defaultWindowSize, - InitialConnWindowSize: defaultWindowSize, - } - server, client := setUpWithOptions(t, 0, serverConfig, suspended, ConnectOptions{}) - defer server.stop() - defer client.Close() - waitWhileTrue(t, func() (bool, error) { - server.mu.Lock() - defer server.mu.Unlock() - - if len(server.conns) == 0 { - return true, fmt.Errorf("timed-out while waiting for connection to be created on the server") - } - return false, nil - }) - var st *http2Server - server.mu.Lock() - for k := range server.conns { - st = k.(*http2Server) - } - server.mu.Unlock() - cstream1, err := client.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Failed to create 1st stream. Err: %v", err) - } - // Exhaust server's connection window. - if err := client.Write(cstream1, nil, make([]byte, defaultWindowSize), &Options{Last: true}); err != nil { - t.Fatalf("Client failed to write data. Err: %v", err) - } - //Client should be able to create another stream and send data on it. - cstream2, err := client.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Failed to create 2nd stream. Err: %v", err) - } - if err := client.Write(cstream2, nil, make([]byte, defaultWindowSize), &Options{}); err != nil { - t.Fatalf("Client failed to write data. Err: %v", err) - } - // Get the streams on server. - waitWhileTrue(t, func() (bool, error) { - st.mu.Lock() - defer st.mu.Unlock() - - if len(st.activeStreams) != 2 { - return true, fmt.Errorf("timed-out while waiting for server to have created the streams") - } - return false, nil - }) - var sstream1 *Stream - st.mu.Lock() - for _, v := range st.activeStreams { - if v.id == 1 { - sstream1 = v - } - } - st.mu.Unlock() - // Trying to write more on a max-ed out stream should result in a RST_STREAM from the server. - ct := client.(*http2Client) - ct.controlBuf.put(&dataFrame{cstream2.id, true, make([]byte, 1), func() {}}) - code := http2ErrConvTab[http2.ErrCodeFlowControl] - waitWhileTrue(t, func() (bool, error) { - cstream2.mu.Lock() - defer cstream2.mu.Unlock() - if cstream2.status.Code() != code { - return true, fmt.Errorf("want code = %v, got %v", code, cstream2.status.Code()) - } - return false, nil - }) - // Reading from the stream on server should succeed. - if _, err := sstream1.Read(make([]byte, defaultWindowSize)); err != nil { - t.Fatalf("_.Read(_) = %v, want <nil>", err) - } - - if _, err := sstream1.Read(make([]byte, 1)); err != io.EOF { - t.Fatalf("_.Read(_) = %v, want io.EOF", err) - } - -} - -func TestServerWithMisbehavedClient(t *testing.T) { - serverConfig := &ServerConfig{ - InitialWindowSize: defaultWindowSize, - InitialConnWindowSize: defaultWindowSize, - } - connectOptions := ConnectOptions{ - InitialWindowSize: defaultWindowSize, - InitialConnWindowSize: defaultWindowSize, - } - server, ct := setUpWithOptions(t, 0, serverConfig, suspended, connectOptions) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo", - } - var sc *http2Server - // Wait until the server transport is setup. - for { - server.mu.Lock() - if len(server.conns) == 0 { - server.mu.Unlock() - time.Sleep(time.Millisecond) - continue - } - for k := range server.conns { - var ok bool - sc, ok = k.(*http2Server) - if !ok { - t.Fatalf("Failed to convert %v to *http2Server", k) - } - } - server.mu.Unlock() - break - } - cc, ok := ct.(*http2Client) - if !ok { - t.Fatalf("Failed to convert %v to *http2Client", ct) - } - // Test server behavior for violation of stream flow control window size restriction. - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - t.Fatalf("Failed to open stream: %v", err) - } - var sent int - // Drain the stream flow control window - cc.controlBuf.put(&dataFrame{s.id, false, make([]byte, http2MaxFrameLen), func() {}}) - sent += http2MaxFrameLen - // Wait until the server creates the corresponding stream and receive some data. - var ss *Stream - for { - time.Sleep(time.Millisecond) - sc.mu.Lock() - if len(sc.activeStreams) == 0 { - sc.mu.Unlock() - continue - } - ss = sc.activeStreams[s.id] - sc.mu.Unlock() - ss.fc.mu.Lock() - if ss.fc.pendingData > 0 { - ss.fc.mu.Unlock() - break - } - ss.fc.mu.Unlock() - } - if ss.fc.pendingData != http2MaxFrameLen || ss.fc.pendingUpdate != 0 || sc.fc.pendingData != 0 || sc.fc.pendingUpdate != 0 { - t.Fatalf("Server mistakenly updates inbound flow control params: got %d, %d, %d, %d; want %d, %d, %d, %d", ss.fc.pendingData, ss.fc.pendingUpdate, sc.fc.pendingData, sc.fc.pendingUpdate, http2MaxFrameLen, 0, 0, 0) - } - // Keep sending until the server inbound window is drained for that stream. - for sent <= initialWindowSize { - cc.controlBuf.put(&dataFrame{s.id, false, make([]byte, 1), func() {}}) - sent++ - } - // Server sent a resetStream for s already. - code := http2ErrConvTab[http2.ErrCodeFlowControl] - if _, err := s.Read(make([]byte, 1)); err != io.EOF { - t.Fatalf("%v got err %v want <EOF>", s, err) - } - if s.status.Code() != code { - t.Fatalf("%v got status %v; want Code=%v", s, s.status, code) - } - - ct.CloseStream(s, nil) - ct.Close() - server.stop() -} - -func TestClientWithMisbehavedServer(t *testing.T) { - // Turn off BDP estimation so that the server can - // violate stream window. - connectOptions := ConnectOptions{ - InitialWindowSize: initialWindowSize, - } - server, ct := setUpWithOptions(t, 0, &ServerConfig{}, misbehaved, connectOptions) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo.Stream", - } - conn, ok := ct.(*http2Client) - if !ok { - t.Fatalf("Failed to convert %v to *http2Client", ct) - } - // Test the logic for the violation of stream flow control window size restriction. - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - t.Fatalf("Failed to open stream: %v", err) - } - d := make([]byte, 1) - if err := ct.Write(s, nil, d, &Options{Last: true, Delay: false}); err != nil && err != io.EOF { - t.Fatalf("Failed to write: %v", err) - } - // Read without window update. - for { - p := make([]byte, http2MaxFrameLen) - if _, err = s.trReader.(*transportReader).reader.Read(p); err != nil { - break - } - } - if s.fc.pendingData <= initialWindowSize || s.fc.pendingUpdate != 0 || conn.fc.pendingData != 0 || conn.fc.pendingUpdate != 0 { - t.Fatalf("Client mistakenly updates inbound flow control params: got %d, %d, %d, %d; want >%d, %d, %d, >%d", s.fc.pendingData, s.fc.pendingUpdate, conn.fc.pendingData, conn.fc.pendingUpdate, initialWindowSize, 0, 0, 0) - } - - if err != io.EOF { - t.Fatalf("Got err %v, want <EOF>", err) - } - if s.status.Code() != codes.Internal { - t.Fatalf("Got s.status %v, want s.status.Code()=Internal", s.status) - } - - conn.CloseStream(s, err) - ct.Close() - server.stop() -} - -var encodingTestStatus = status.New(codes.Internal, "\n") - -func TestEncodingRequiredStatus(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, encodingRequiredStatus) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo", - } - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - return - } - opts := Options{ - Last: true, - Delay: false, - } - if err := ct.Write(s, nil, expectedRequest, &opts); err != nil && err != io.EOF { - t.Fatalf("Failed to write the request: %v", err) - } - p := make([]byte, http2MaxFrameLen) - if _, err := s.trReader.(*transportReader).Read(p); err != io.EOF { - t.Fatalf("Read got error %v, want %v", err, io.EOF) - } - if !reflect.DeepEqual(s.Status(), encodingTestStatus) { - t.Fatalf("stream with status %v, want %v", s.Status(), encodingTestStatus) - } - ct.Close() - server.stop() -} - -func TestInvalidHeaderField(t *testing.T) { - server, ct := setUp(t, 0, math.MaxUint32, invalidHeaderField) - callHdr := &CallHdr{ - Host: "localhost", - Method: "foo", - } - s, err := ct.NewStream(context.Background(), callHdr) - if err != nil { - return - } - opts := Options{ - Last: true, - Delay: false, - } - if err := ct.Write(s, nil, expectedRequest, &opts); err != nil && err != io.EOF { - t.Fatalf("Failed to write the request: %v", err) - } - p := make([]byte, http2MaxFrameLen) - _, err = s.trReader.(*transportReader).Read(p) - if se, ok := err.(StreamError); !ok || se.Code != codes.FailedPrecondition || !strings.Contains(err.Error(), expectedInvalidHeaderField) { - t.Fatalf("Read got error %v, want error with code %s and contains %q", err, codes.FailedPrecondition, expectedInvalidHeaderField) - } - ct.Close() - server.stop() -} - -func TestStreamContext(t *testing.T) { - expectedStream := &Stream{} - ctx := newContextWithStream(context.Background(), expectedStream) - s, ok := StreamFromContext(ctx) - if !ok || expectedStream != s { - t.Fatalf("GetStreamFromContext(%v) = %v, %t, want: %v, true", ctx, s, ok, expectedStream) - } -} - -func TestIsReservedHeader(t *testing.T) { - tests := []struct { - h string - want bool - }{ - {"", false}, // but should be rejected earlier - {"foo", false}, - {"content-type", true}, - {"grpc-message-type", true}, - {"grpc-encoding", true}, - {"grpc-message", true}, - {"grpc-status", true}, - {"grpc-timeout", true}, - {"te", true}, - } - for _, tt := range tests { - got := isReservedHeader(tt.h) - if got != tt.want { - t.Errorf("isReservedHeader(%q) = %v; want %v", tt.h, got, tt.want) - } - } -} - -func TestContextErr(t *testing.T) { - for _, test := range []struct { - // input - errIn error - // outputs - errOut StreamError - }{ - {context.DeadlineExceeded, StreamError{codes.DeadlineExceeded, context.DeadlineExceeded.Error()}}, - {context.Canceled, StreamError{codes.Canceled, context.Canceled.Error()}}, - } { - err := ContextErr(test.errIn) - if err != test.errOut { - t.Fatalf("ContextErr{%v} = %v \nwant %v", test.errIn, err, test.errOut) - } - } -} - -func max(a, b int32) int32 { - if a > b { - return a - } - return b -} - -type windowSizeConfig struct { - serverStream int32 - serverConn int32 - clientStream int32 - clientConn int32 -} - -func TestAccountCheckWindowSizeWithLargeWindow(t *testing.T) { - wc := windowSizeConfig{ - serverStream: 10 * 1024 * 1024, - serverConn: 12 * 1024 * 1024, - clientStream: 6 * 1024 * 1024, - clientConn: 8 * 1024 * 1024, - } - testAccountCheckWindowSize(t, wc) -} - -func TestAccountCheckWindowSizeWithSmallWindow(t *testing.T) { - wc := windowSizeConfig{ - serverStream: defaultWindowSize, - // Note this is smaller than initialConnWindowSize which is the current default. - serverConn: defaultWindowSize, - clientStream: defaultWindowSize, - clientConn: defaultWindowSize, - } - testAccountCheckWindowSize(t, wc) -} - -func testAccountCheckWindowSize(t *testing.T, wc windowSizeConfig) { - serverConfig := &ServerConfig{ - InitialWindowSize: wc.serverStream, - InitialConnWindowSize: wc.serverConn, - } - connectOptions := ConnectOptions{ - InitialWindowSize: wc.clientStream, - InitialConnWindowSize: wc.clientConn, - } - server, client := setUpWithOptions(t, 0, serverConfig, suspended, connectOptions) - defer server.stop() - defer client.Close() - - // Wait for server conns to be populated with new server transport. - waitWhileTrue(t, func() (bool, error) { - server.mu.Lock() - defer server.mu.Unlock() - if len(server.conns) == 0 { - return true, fmt.Errorf("timed out waiting for server transport to be created") - } - return false, nil - }) - var st *http2Server - server.mu.Lock() - for k := range server.conns { - st = k.(*http2Server) - } - server.mu.Unlock() - ct := client.(*http2Client) - cstream, err := client.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Failed to create stream. Err: %v", err) - } - // Wait for server to receive headers. - waitWhileTrue(t, func() (bool, error) { - st.mu.Lock() - defer st.mu.Unlock() - if len(st.activeStreams) == 0 { - return true, fmt.Errorf("timed out waiting for server to receive headers") - } - return false, nil - }) - // Sleeping to make sure the settings are applied in case of negative test. - time.Sleep(time.Second) - - waitWhileTrue(t, func() (bool, error) { - st.fc.mu.Lock() - lim := st.fc.limit - st.fc.mu.Unlock() - if lim != uint32(serverConfig.InitialConnWindowSize) { - return true, fmt.Errorf("Server transport flow control window size: got %v, want %v", lim, serverConfig.InitialConnWindowSize) - } - return false, nil - }) - - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - serverSendQuota, _, err := st.sendQuotaPool.get(math.MaxInt32, waiters{ - ctx: ctx, - tctx: st.ctx, - done: nil, - goAway: nil, - }) - if err != nil { - t.Fatalf("Error while acquiring sendQuota on server. Err: %v", err) - } - cancel() - st.sendQuotaPool.add(serverSendQuota) - if serverSendQuota != int(connectOptions.InitialConnWindowSize) { - t.Fatalf("Server send quota(%v) not equal to client's window size(%v) on conn.", serverSendQuota, connectOptions.InitialConnWindowSize) - } - st.mu.Lock() - ssq := st.streamSendQuota - st.mu.Unlock() - if ssq != uint32(connectOptions.InitialWindowSize) { - t.Fatalf("Server stream send quota(%v) not equal to client's window size(%v) on stream.", ssq, connectOptions.InitialWindowSize) - } - ct.fc.mu.Lock() - limit := ct.fc.limit - ct.fc.mu.Unlock() - if limit != uint32(connectOptions.InitialConnWindowSize) { - t.Fatalf("Client transport flow control window size is %v, want %v", limit, connectOptions.InitialConnWindowSize) - } - ctx, cancel = context.WithTimeout(context.Background(), time.Second) - clientSendQuota, _, err := ct.sendQuotaPool.get(math.MaxInt32, waiters{ - ctx: ctx, - tctx: ct.ctx, - done: nil, - goAway: nil, - }) - if err != nil { - t.Fatalf("Error while acquiring sendQuota on client. Err: %v", err) - } - cancel() - ct.sendQuotaPool.add(clientSendQuota) - if clientSendQuota != int(serverConfig.InitialConnWindowSize) { - t.Fatalf("Client send quota(%v) not equal to server's window size(%v) on conn.", clientSendQuota, serverConfig.InitialConnWindowSize) - } - ct.mu.Lock() - ssq = ct.streamSendQuota - ct.mu.Unlock() - if ssq != uint32(serverConfig.InitialWindowSize) { - t.Fatalf("Client stream send quota(%v) not equal to server's window size(%v) on stream.", ssq, serverConfig.InitialWindowSize) - } - cstream.fc.mu.Lock() - limit = cstream.fc.limit - cstream.fc.mu.Unlock() - if limit != uint32(connectOptions.InitialWindowSize) { - t.Fatalf("Client stream flow control window size is %v, want %v", limit, connectOptions.InitialWindowSize) - } - var sstream *Stream - st.mu.Lock() - for _, v := range st.activeStreams { - sstream = v - } - st.mu.Unlock() - sstream.fc.mu.Lock() - limit = sstream.fc.limit - sstream.fc.mu.Unlock() - if limit != uint32(serverConfig.InitialWindowSize) { - t.Fatalf("Server stream flow control window size is %v, want %v", limit, serverConfig.InitialWindowSize) - } -} - -// Check accounting on both sides after sending and receiving large messages. -func TestAccountCheckExpandingWindow(t *testing.T) { - server, client := setUp(t, 0, 0, pingpong) - defer server.stop() - defer client.Close() - waitWhileTrue(t, func() (bool, error) { - server.mu.Lock() - defer server.mu.Unlock() - if len(server.conns) == 0 { - return true, fmt.Errorf("timed out while waiting for server transport to be created") - } - return false, nil - }) - var st *http2Server - server.mu.Lock() - for k := range server.conns { - st = k.(*http2Server) - } - server.mu.Unlock() - ct := client.(*http2Client) - cstream, err := client.NewStream(context.Background(), &CallHdr{Flush: true}) - if err != nil { - t.Fatalf("Failed to create stream. Err: %v", err) - } - - msgSize := 65535 * 16 * 2 - msg := make([]byte, msgSize) - buf := make([]byte, msgSize+5) - buf[0] = byte(0) - binary.BigEndian.PutUint32(buf[1:], uint32(msgSize)) - copy(buf[5:], msg) - opts := Options{} - header := make([]byte, 5) - for i := 1; i <= 10; i++ { - if err := ct.Write(cstream, nil, buf, &opts); err != nil { - t.Fatalf("Error on client while writing message: %v", err) - } - if _, err := cstream.Read(header); err != nil { - t.Fatalf("Error on client while reading data frame header: %v", err) - } - sz := binary.BigEndian.Uint32(header[1:]) - recvMsg := make([]byte, int(sz)) - if _, err := cstream.Read(recvMsg); err != nil { - t.Fatalf("Error on client while reading data: %v", err) - } - if len(recvMsg) != len(msg) { - t.Fatalf("Length of message received by client: %v, want: %v", len(recvMsg), len(msg)) - } - } - defer func() { - ct.Write(cstream, nil, nil, &Options{Last: true}) // Close the stream. - if _, err := cstream.Read(header); err != io.EOF { - t.Fatalf("Client expected an EOF from the server. Got: %v", err) - } - }() - var sstream *Stream - st.mu.Lock() - for _, v := range st.activeStreams { - sstream = v - } - st.mu.Unlock() - - waitWhileTrue(t, func() (bool, error) { - // Check that pendingData and delta on flow control windows on both sides are 0. - cstream.fc.mu.Lock() - if cstream.fc.delta != 0 { - cstream.fc.mu.Unlock() - return true, fmt.Errorf("delta on flow control window of client stream is non-zero") - } - if cstream.fc.pendingData != 0 { - cstream.fc.mu.Unlock() - return true, fmt.Errorf("pendingData on flow control window of client stream is non-zero") - } - cstream.fc.mu.Unlock() - sstream.fc.mu.Lock() - if sstream.fc.delta != 0 { - sstream.fc.mu.Unlock() - return true, fmt.Errorf("delta on flow control window of server stream is non-zero") - } - if sstream.fc.pendingData != 0 { - sstream.fc.mu.Unlock() - return true, fmt.Errorf("pendingData on flow control window of sercer stream is non-zero") - } - sstream.fc.mu.Unlock() - ct.fc.mu.Lock() - if ct.fc.delta != 0 { - ct.fc.mu.Unlock() - return true, fmt.Errorf("delta on flow control window of client transport is non-zero") - } - if ct.fc.pendingData != 0 { - ct.fc.mu.Unlock() - return true, fmt.Errorf("pendingData on flow control window of client transport is non-zero") - } - ct.fc.mu.Unlock() - st.fc.mu.Lock() - if st.fc.delta != 0 { - st.fc.mu.Unlock() - return true, fmt.Errorf("delta on flow control window of server transport is non-zero") - } - if st.fc.pendingData != 0 { - st.fc.mu.Unlock() - return true, fmt.Errorf("pendingData on flow control window of server transport is non-zero") - } - st.fc.mu.Unlock() - - // Check flow conrtrol window on client stream is equal to out flow on server stream. - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - serverStreamSendQuota, _, err := sstream.sendQuotaPool.get(math.MaxInt32, waiters{ - ctx: ctx, - tctx: context.Background(), - done: nil, - goAway: nil, - }) - cancel() - if err != nil { - return true, fmt.Errorf("error while acquiring server stream send quota. Err: %v", err) - } - sstream.sendQuotaPool.add(serverStreamSendQuota) - cstream.fc.mu.Lock() - clientEst := cstream.fc.limit - cstream.fc.pendingUpdate - cstream.fc.mu.Unlock() - if uint32(serverStreamSendQuota) != clientEst { - return true, fmt.Errorf("server stream outflow: %v, estimated by client: %v", serverStreamSendQuota, clientEst) - } - - // Check flow control window on server stream is equal to out flow on client stream. - ctx, cancel = context.WithTimeout(context.Background(), time.Second) - clientStreamSendQuota, _, err := cstream.sendQuotaPool.get(math.MaxInt32, waiters{ - ctx: ctx, - tctx: context.Background(), - done: nil, - goAway: nil, - }) - cancel() - if err != nil { - return true, fmt.Errorf("error while acquiring client stream send quota. Err: %v", err) - } - cstream.sendQuotaPool.add(clientStreamSendQuota) - sstream.fc.mu.Lock() - serverEst := sstream.fc.limit - sstream.fc.pendingUpdate - sstream.fc.mu.Unlock() - if uint32(clientStreamSendQuota) != serverEst { - return true, fmt.Errorf("client stream outflow: %v. estimated by server: %v", clientStreamSendQuota, serverEst) - } - - // Check flow control window on client transport is equal to out flow of server transport. - ctx, cancel = context.WithTimeout(context.Background(), time.Second) - serverTrSendQuota, _, err := st.sendQuotaPool.get(math.MaxInt32, waiters{ - ctx: ctx, - tctx: st.ctx, - done: nil, - goAway: nil, - }) - cancel() - if err != nil { - return true, fmt.Errorf("error while acquring server transport send quota. Err: %v", err) - } - st.sendQuotaPool.add(serverTrSendQuota) - ct.fc.mu.Lock() - clientEst = ct.fc.limit - ct.fc.pendingUpdate - ct.fc.mu.Unlock() - if uint32(serverTrSendQuota) != clientEst { - return true, fmt.Errorf("server transport outflow: %v, estimated by client: %v", serverTrSendQuota, clientEst) - } - - // Check flow control window on server transport is equal to out flow of client transport. - ctx, cancel = context.WithTimeout(context.Background(), time.Second) - clientTrSendQuota, _, err := ct.sendQuotaPool.get(math.MaxInt32, waiters{ - ctx: ctx, - tctx: ct.ctx, - done: nil, - goAway: nil, - }) - cancel() - if err != nil { - return true, fmt.Errorf("error while acquiring client transport send quota. Err: %v", err) - } - ct.sendQuotaPool.add(clientTrSendQuota) - st.fc.mu.Lock() - serverEst = st.fc.limit - st.fc.pendingUpdate - st.fc.mu.Unlock() - if uint32(clientTrSendQuota) != serverEst { - return true, fmt.Errorf("client transport outflow: %v, estimated by client: %v", clientTrSendQuota, serverEst) - } - - return false, nil - }) - -} - -func waitWhileTrue(t *testing.T, condition func() (bool, error)) { - var ( - wait bool - err error - ) - timer := time.NewTimer(time.Second * 5) - for { - wait, err = condition() - if wait { - select { - case <-timer.C: - t.Fatalf(err.Error()) - default: - time.Sleep(50 * time.Millisecond) - continue - } - } - if !timer.Stop() { - <-timer.C - } - break - } -} - -// A function of type writeHeaders writes out -// http status with the given stream ID using the given framer. -type writeHeaders func(*http2.Framer, uint32, int) error - -func writeOneHeader(framer *http2.Framer, sid uint32, httpStatus int) error { - var buf bytes.Buffer - henc := hpack.NewEncoder(&buf) - henc.WriteField(hpack.HeaderField{Name: ":status", Value: fmt.Sprint(httpStatus)}) - return framer.WriteHeaders(http2.HeadersFrameParam{ - StreamID: sid, - BlockFragment: buf.Bytes(), - EndStream: true, - EndHeaders: true, - }) -} - -func writeTwoHeaders(framer *http2.Framer, sid uint32, httpStatus int) error { - var buf bytes.Buffer - henc := hpack.NewEncoder(&buf) - henc.WriteField(hpack.HeaderField{ - Name: ":status", - Value: fmt.Sprint(http.StatusOK), - }) - if err := framer.WriteHeaders(http2.HeadersFrameParam{ - StreamID: sid, - BlockFragment: buf.Bytes(), - EndHeaders: true, - }); err != nil { - return err - } - buf.Reset() - henc.WriteField(hpack.HeaderField{ - Name: ":status", - Value: fmt.Sprint(httpStatus), - }) - return framer.WriteHeaders(http2.HeadersFrameParam{ - StreamID: sid, - BlockFragment: buf.Bytes(), - EndStream: true, - EndHeaders: true, - }) -} - -type httpServer struct { - conn net.Conn - httpStatus int - wh writeHeaders -} - -func (s *httpServer) start(t *testing.T, lis net.Listener) { - // Launch an HTTP server to send back header with httpStatus. - go func() { - var err error - s.conn, err = lis.Accept() - if err != nil { - t.Errorf("Error accepting connection: %v", err) - return - } - defer s.conn.Close() - // Read preface sent by client. - if _, err = io.ReadFull(s.conn, make([]byte, len(http2.ClientPreface))); err != nil { - t.Errorf("Error at server-side while reading preface from cleint. Err: %v", err) - return - } - reader := bufio.NewReaderSize(s.conn, defaultWriteBufSize) - writer := bufio.NewWriterSize(s.conn, defaultReadBufSize) - framer := http2.NewFramer(writer, reader) - if err = framer.WriteSettingsAck(); err != nil { - t.Errorf("Error at server-side while sending Settings ack. Err: %v", err) - return - } - var sid uint32 - // Read frames until a header is received. - for { - frame, err := framer.ReadFrame() - if err != nil { - t.Errorf("Error at server-side while reading frame. Err: %v", err) - return - } - if hframe, ok := frame.(*http2.HeadersFrame); ok { - sid = hframe.Header().StreamID - break - } - } - if err = s.wh(framer, sid, s.httpStatus); err != nil { - t.Errorf("Error at server-side while writing headers. Err: %v", err) - return - } - writer.Flush() - }() -} - -func (s *httpServer) cleanUp() { - if s.conn != nil { - s.conn.Close() - } -} - -func setUpHTTPStatusTest(t *testing.T, httpStatus int, wh writeHeaders) (stream *Stream, cleanUp func()) { - var ( - err error - lis net.Listener - server *httpServer - client ClientTransport - ) - cleanUp = func() { - if lis != nil { - lis.Close() - } - if server != nil { - server.cleanUp() - } - if client != nil { - client.Close() - } - } - defer func() { - if err != nil { - cleanUp() - } - }() - lis, err = net.Listen("tcp", "localhost:0") - if err != nil { - t.Fatalf("Failed to listen. Err: %v", err) - } - server = &httpServer{ - httpStatus: httpStatus, - wh: wh, - } - server.start(t, lis) - connectCtx, cancel := context.WithDeadline(context.Background(), time.Now().Add(2*time.Second)) - client, err = newHTTP2Client(connectCtx, context.Background(), TargetInfo{Addr: lis.Addr().String()}, ConnectOptions{}, func() {}) - if err != nil { - cancel() // Do not cancel in success path. - t.Fatalf("Error creating client. Err: %v", err) - } - stream, err = client.NewStream(context.Background(), &CallHdr{Method: "bogus/method", Flush: true}) - if err != nil { - t.Fatalf("Error creating stream at client-side. Err: %v", err) - } - return -} - -func TestHTTPToGRPCStatusMapping(t *testing.T) { - for k := range httpStatusConvTab { - testHTTPToGRPCStatusMapping(t, k, writeOneHeader) - } -} - -func testHTTPToGRPCStatusMapping(t *testing.T, httpStatus int, wh writeHeaders) { - stream, cleanUp := setUpHTTPStatusTest(t, httpStatus, wh) - defer cleanUp() - want := httpStatusConvTab[httpStatus] - buf := make([]byte, 8) - _, err := stream.Read(buf) - if err == nil { - t.Fatalf("Stream.Read(_) unexpectedly returned no error. Expected stream error with code %v", want) - } - serr, ok := err.(StreamError) - if !ok { - t.Fatalf("err.(Type) = %T, want StreamError", err) - } - if want != serr.Code { - t.Fatalf("Want error code: %v, got: %v", want, serr.Code) - } -} - -func TestHTTPStatusOKAndMissingGRPCStatus(t *testing.T) { - stream, cleanUp := setUpHTTPStatusTest(t, http.StatusOK, writeOneHeader) - defer cleanUp() - buf := make([]byte, 8) - _, err := stream.Read(buf) - if err != io.EOF { - t.Fatalf("stream.Read(_) = _, %v, want _, io.EOF", err) - } - want := codes.Unknown - stream.mu.Lock() - defer stream.mu.Unlock() - if stream.status.Code() != want { - t.Fatalf("Status code of stream: %v, want: %v", stream.status.Code(), want) - } -} - -func TestHTTPStatusNottOKAndMissingGRPCStatusInSecondHeader(t *testing.T) { - testHTTPToGRPCStatusMapping(t, http.StatusUnauthorized, writeTwoHeaders) -} - -// If any error occurs on a call to Stream.Read, future calls -// should continue to return that same error. -func TestReadGivesSameErrorAfterAnyErrorOccurs(t *testing.T) { - testRecvBuffer := newRecvBuffer() - s := &Stream{ - ctx: context.Background(), - goAway: make(chan struct{}), - buf: testRecvBuffer, - requestRead: func(int) {}, - } - s.trReader = &transportReader{ - reader: &recvBufferReader{ - ctx: s.ctx, - goAway: s.goAway, - recv: s.buf, - }, - windowHandler: func(int) {}, - } - testData := make([]byte, 1) - testData[0] = 5 - testErr := errors.New("test error") - s.write(recvMsg{data: testData, err: testErr}) - - inBuf := make([]byte, 1) - actualCount, actualErr := s.Read(inBuf) - if actualCount != 0 { - t.Errorf("actualCount, _ := s.Read(_) differs; want 0; got %v", actualCount) - } - if actualErr.Error() != testErr.Error() { - t.Errorf("_ , actualErr := s.Read(_) differs; want actualErr.Error() to be %v; got %v", testErr.Error(), actualErr.Error()) - } - - s.write(recvMsg{data: testData, err: nil}) - s.write(recvMsg{data: testData, err: errors.New("different error from first")}) - - for i := 0; i < 2; i++ { - inBuf := make([]byte, 1) - actualCount, actualErr := s.Read(inBuf) - if actualCount != 0 { - t.Errorf("actualCount, _ := s.Read(_) differs; want %v; got %v", 0, actualCount) - } - if actualErr.Error() != testErr.Error() { - t.Errorf("_ , actualErr := s.Read(_) differs; want actualErr.Error() to be %v; got %v", testErr.Error(), actualErr.Error()) - } - } -} - -func TestPingPong1B(t *testing.T) { - runPingPongTest(t, 1) -} - -func TestPingPong1KB(t *testing.T) { - runPingPongTest(t, 1024) -} - -func TestPingPong64KB(t *testing.T) { - runPingPongTest(t, 65536) -} - -func TestPingPong1MB(t *testing.T) { - runPingPongTest(t, 1048576) -} - -//This is a stress-test of flow control logic. -func runPingPongTest(t *testing.T, msgSize int) { - server, client := setUp(t, 0, 0, pingpong) - defer server.stop() - defer client.Close() - waitWhileTrue(t, func() (bool, error) { - server.mu.Lock() - defer server.mu.Unlock() - if len(server.conns) == 0 { - return true, fmt.Errorf("timed out while waiting for server transport to be created") - } - return false, nil - }) - ct := client.(*http2Client) - stream, err := client.NewStream(context.Background(), &CallHdr{}) - if err != nil { - t.Fatalf("Failed to create stream. Err: %v", err) - } - msg := make([]byte, msgSize) - outgoingHeader := make([]byte, 5) - outgoingHeader[0] = byte(0) - binary.BigEndian.PutUint32(outgoingHeader[1:], uint32(msgSize)) - opts := &Options{} - incomingHeader := make([]byte, 5) - done := make(chan struct{}) - go func() { - timer := time.NewTimer(time.Second * 5) - <-timer.C - close(done) - }() - for { - select { - case <-done: - ct.Write(stream, nil, nil, &Options{Last: true}) - if _, err := stream.Read(incomingHeader); err != io.EOF { - t.Fatalf("Client expected EOF from the server. Got: %v", err) - } - return - default: - if err := ct.Write(stream, outgoingHeader, msg, opts); err != nil { - t.Fatalf("Error on client while writing message. Err: %v", err) - } - if _, err := stream.Read(incomingHeader); err != nil { - t.Fatalf("Error on client while reading data header. Err: %v", err) - } - sz := binary.BigEndian.Uint32(incomingHeader[1:]) - recvMsg := make([]byte, int(sz)) - if _, err := stream.Read(recvMsg); err != nil { - t.Fatalf("Error on client while reading data. Err: %v", err) - } - } - } -} diff --git a/vendor/gopkg.in/yaml.v2/decode_test.go b/vendor/gopkg.in/yaml.v2/decode_test.go deleted file mode 100644 index 7e1e8b33..00000000 --- a/vendor/gopkg.in/yaml.v2/decode_test.go +++ /dev/null @@ -1,1272 +0,0 @@ -package yaml_test - -import ( - "errors" - "io" - "math" - "reflect" - "strings" - "time" - - . "gopkg.in/check.v1" - "gopkg.in/yaml.v2" -) - -var unmarshalIntTest = 123 - -var unmarshalTests = []struct { - data string - value interface{} -}{ - { - "", - (*struct{})(nil), - }, - { - "{}", &struct{}{}, - }, { - "v: hi", - map[string]string{"v": "hi"}, - }, { - "v: hi", map[string]interface{}{"v": "hi"}, - }, { - "v: true", - map[string]string{"v": "true"}, - }, { - "v: true", - map[string]interface{}{"v": true}, - }, { - "v: 10", - map[string]interface{}{"v": 10}, - }, { - "v: 0b10", - map[string]interface{}{"v": 2}, - }, { - "v: 0xA", - map[string]interface{}{"v": 10}, - }, { - "v: 4294967296", - map[string]int64{"v": 4294967296}, - }, { - "v: 0.1", - map[string]interface{}{"v": 0.1}, - }, { - "v: .1", - map[string]interface{}{"v": 0.1}, - }, { - "v: .Inf", - map[string]interface{}{"v": math.Inf(+1)}, - }, { - "v: -.Inf", - map[string]interface{}{"v": math.Inf(-1)}, - }, { - "v: -10", - map[string]interface{}{"v": -10}, - }, { - "v: -.1", - map[string]interface{}{"v": -0.1}, - }, - - // Simple values. - { - "123", - &unmarshalIntTest, - }, - - // Floats from spec - { - "canonical: 6.8523e+5", - map[string]interface{}{"canonical": 6.8523e+5}, - }, { - "expo: 685.230_15e+03", - map[string]interface{}{"expo": 685.23015e+03}, - }, { - "fixed: 685_230.15", - map[string]interface{}{"fixed": 685230.15}, - }, { - "neginf: -.inf", - map[string]interface{}{"neginf": math.Inf(-1)}, - }, { - "fixed: 685_230.15", - map[string]float64{"fixed": 685230.15}, - }, - //{"sexa: 190:20:30.15", map[string]interface{}{"sexa": 0}}, // Unsupported - //{"notanum: .NaN", map[string]interface{}{"notanum": math.NaN()}}, // Equality of NaN fails. - - // Bools from spec - { - "canonical: y", - map[string]interface{}{"canonical": true}, - }, { - "answer: NO", - map[string]interface{}{"answer": false}, - }, { - "logical: True", - map[string]interface{}{"logical": true}, - }, { - "option: on", - map[string]interface{}{"option": true}, - }, { - "option: on", - map[string]bool{"option": true}, - }, - // Ints from spec - { - "canonical: 685230", - map[string]interface{}{"canonical": 685230}, - }, { - "decimal: +685_230", - map[string]interface{}{"decimal": 685230}, - }, { - "octal: 02472256", - map[string]interface{}{"octal": 685230}, - }, { - "hexa: 0x_0A_74_AE", - map[string]interface{}{"hexa": 685230}, - }, { - "bin: 0b1010_0111_0100_1010_1110", - map[string]interface{}{"bin": 685230}, - }, { - "bin: -0b101010", - map[string]interface{}{"bin": -42}, - }, { - "decimal: +685_230", - map[string]int{"decimal": 685230}, - }, - - //{"sexa: 190:20:30", map[string]interface{}{"sexa": 0}}, // Unsupported - - // Nulls from spec - { - "empty:", - map[string]interface{}{"empty": nil}, - }, { - "canonical: ~", - map[string]interface{}{"canonical": nil}, - }, { - "english: null", - map[string]interface{}{"english": nil}, - }, { - "~: null key", - map[interface{}]string{nil: "null key"}, - }, { - "empty:", - map[string]*bool{"empty": nil}, - }, - - // Flow sequence - { - "seq: [A,B]", - map[string]interface{}{"seq": []interface{}{"A", "B"}}, - }, { - "seq: [A,B,C,]", - map[string][]string{"seq": []string{"A", "B", "C"}}, - }, { - "seq: [A,1,C]", - map[string][]string{"seq": []string{"A", "1", "C"}}, - }, { - "seq: [A,1,C]", - map[string][]int{"seq": []int{1}}, - }, { - "seq: [A,1,C]", - map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}, - }, - // Block sequence - { - "seq:\n - A\n - B", - map[string]interface{}{"seq": []interface{}{"A", "B"}}, - }, { - "seq:\n - A\n - B\n - C", - map[string][]string{"seq": []string{"A", "B", "C"}}, - }, { - "seq:\n - A\n - 1\n - C", - map[string][]string{"seq": []string{"A", "1", "C"}}, - }, { - "seq:\n - A\n - 1\n - C", - map[string][]int{"seq": []int{1}}, - }, { - "seq:\n - A\n - 1\n - C", - map[string]interface{}{"seq": []interface{}{"A", 1, "C"}}, - }, - - // Literal block scalar - { - "scalar: | # Comment\n\n literal\n\n \ttext\n\n", - map[string]string{"scalar": "\nliteral\n\n\ttext\n"}, - }, - - // Folded block scalar - { - "scalar: > # Comment\n\n folded\n line\n \n next\n line\n * one\n * two\n\n last\n line\n\n", - map[string]string{"scalar": "\nfolded line\nnext line\n * one\n * two\n\nlast line\n"}, - }, - - // Map inside interface with no type hints. - { - "a: {b: c}", - map[interface{}]interface{}{"a": map[interface{}]interface{}{"b": "c"}}, - }, - - // Structs and type conversions. - { - "hello: world", - &struct{ Hello string }{"world"}, - }, { - "a: {b: c}", - &struct{ A struct{ B string } }{struct{ B string }{"c"}}, - }, { - "a: {b: c}", - &struct{ A *struct{ B string } }{&struct{ B string }{"c"}}, - }, { - "a: {b: c}", - &struct{ A map[string]string }{map[string]string{"b": "c"}}, - }, { - "a: {b: c}", - &struct{ A *map[string]string }{&map[string]string{"b": "c"}}, - }, { - "a:", - &struct{ A map[string]string }{}, - }, { - "a: 1", - &struct{ A int }{1}, - }, { - "a: 1", - &struct{ A float64 }{1}, - }, { - "a: 1.0", - &struct{ A int }{1}, - }, { - "a: 1.0", - &struct{ A uint }{1}, - }, { - "a: [1, 2]", - &struct{ A []int }{[]int{1, 2}}, - }, { - "a: 1", - &struct{ B int }{0}, - }, { - "a: 1", - &struct { - B int "a" - }{1}, - }, { - "a: y", - &struct{ A bool }{true}, - }, - - // Some cross type conversions - { - "v: 42", - map[string]uint{"v": 42}, - }, { - "v: -42", - map[string]uint{}, - }, { - "v: 4294967296", - map[string]uint64{"v": 4294967296}, - }, { - "v: -4294967296", - map[string]uint64{}, - }, - - // int - { - "int_max: 2147483647", - map[string]int{"int_max": math.MaxInt32}, - }, - { - "int_min: -2147483648", - map[string]int{"int_min": math.MinInt32}, - }, - { - "int_overflow: 9223372036854775808", // math.MaxInt64 + 1 - map[string]int{}, - }, - - // int64 - { - "int64_max: 9223372036854775807", - map[string]int64{"int64_max": math.MaxInt64}, - }, - { - "int64_max_base2: 0b111111111111111111111111111111111111111111111111111111111111111", - map[string]int64{"int64_max_base2": math.MaxInt64}, - }, - { - "int64_min: -9223372036854775808", - map[string]int64{"int64_min": math.MinInt64}, - }, - { - "int64_neg_base2: -0b111111111111111111111111111111111111111111111111111111111111111", - map[string]int64{"int64_neg_base2": -math.MaxInt64}, - }, - { - "int64_overflow: 9223372036854775808", // math.MaxInt64 + 1 - map[string]int64{}, - }, - - // uint - { - "uint_min: 0", - map[string]uint{"uint_min": 0}, - }, - { - "uint_max: 4294967295", - map[string]uint{"uint_max": math.MaxUint32}, - }, - { - "uint_underflow: -1", - map[string]uint{}, - }, - - // uint64 - { - "uint64_min: 0", - map[string]uint{"uint64_min": 0}, - }, - { - "uint64_max: 18446744073709551615", - map[string]uint64{"uint64_max": math.MaxUint64}, - }, - { - "uint64_max_base2: 0b1111111111111111111111111111111111111111111111111111111111111111", - map[string]uint64{"uint64_max_base2": math.MaxUint64}, - }, - { - "uint64_maxint64: 9223372036854775807", - map[string]uint64{"uint64_maxint64": math.MaxInt64}, - }, - { - "uint64_underflow: -1", - map[string]uint64{}, - }, - - // float32 - { - "float32_max: 3.40282346638528859811704183484516925440e+38", - map[string]float32{"float32_max": math.MaxFloat32}, - }, - { - "float32_nonzero: 1.401298464324817070923729583289916131280e-45", - map[string]float32{"float32_nonzero": math.SmallestNonzeroFloat32}, - }, - { - "float32_maxuint64: 18446744073709551615", - map[string]float32{"float32_maxuint64": float32(math.MaxUint64)}, - }, - { - "float32_maxuint64+1: 18446744073709551616", - map[string]float32{"float32_maxuint64+1": float32(math.MaxUint64 + 1)}, - }, - - // float64 - { - "float64_max: 1.797693134862315708145274237317043567981e+308", - map[string]float64{"float64_max": math.MaxFloat64}, - }, - { - "float64_nonzero: 4.940656458412465441765687928682213723651e-324", - map[string]float64{"float64_nonzero": math.SmallestNonzeroFloat64}, - }, - { - "float64_maxuint64: 18446744073709551615", - map[string]float64{"float64_maxuint64": float64(math.MaxUint64)}, - }, - { - "float64_maxuint64+1: 18446744073709551616", - map[string]float64{"float64_maxuint64+1": float64(math.MaxUint64 + 1)}, - }, - - // Overflow cases. - { - "v: 4294967297", - map[string]int32{}, - }, { - "v: 128", - map[string]int8{}, - }, - - // Quoted values. - { - "'1': '\"2\"'", - map[interface{}]interface{}{"1": "\"2\""}, - }, { - "v:\n- A\n- 'B\n\n C'\n", - map[string][]string{"v": []string{"A", "B\nC"}}, - }, - - // Explicit tags. - { - "v: !!float '1.1'", - map[string]interface{}{"v": 1.1}, - }, { - "v: !!null ''", - map[string]interface{}{"v": nil}, - }, { - "%TAG !y! tag:yaml.org,2002:\n---\nv: !y!int '1'", - map[string]interface{}{"v": 1}, - }, - - // Non-specific tag (Issue #75) - { - "v: ! test", - map[string]interface{}{"v": "test"}, - }, - - // Anchors and aliases. - { - "a: &x 1\nb: &y 2\nc: *x\nd: *y\n", - &struct{ A, B, C, D int }{1, 2, 1, 2}, - }, { - "a: &a {c: 1}\nb: *a", - &struct { - A, B struct { - C int - } - }{struct{ C int }{1}, struct{ C int }{1}}, - }, { - "a: &a [1, 2]\nb: *a", - &struct{ B []int }{[]int{1, 2}}, - }, - - // Bug #1133337 - { - "foo: ''", - map[string]*string{"foo": new(string)}, - }, { - "foo: null", - map[string]*string{"foo": nil}, - }, { - "foo: null", - map[string]string{"foo": ""}, - }, { - "foo: null", - map[string]interface{}{"foo": nil}, - }, - - // Support for ~ - { - "foo: ~", - map[string]*string{"foo": nil}, - }, { - "foo: ~", - map[string]string{"foo": ""}, - }, { - "foo: ~", - map[string]interface{}{"foo": nil}, - }, - - // Ignored field - { - "a: 1\nb: 2\n", - &struct { - A int - B int "-" - }{1, 0}, - }, - - // Bug #1191981 - { - "" + - "%YAML 1.1\n" + - "--- !!str\n" + - `"Generic line break (no glyph)\n\` + "\n" + - ` Generic line break (glyphed)\n\` + "\n" + - ` Line separator\u2028\` + "\n" + - ` Paragraph separator\u2029"` + "\n", - "" + - "Generic line break (no glyph)\n" + - "Generic line break (glyphed)\n" + - "Line separator\u2028Paragraph separator\u2029", - }, - - // Struct inlining - { - "a: 1\nb: 2\nc: 3\n", - &struct { - A int - C inlineB `yaml:",inline"` - }{1, inlineB{2, inlineC{3}}}, - }, - - // Map inlining - { - "a: 1\nb: 2\nc: 3\n", - &struct { - A int - C map[string]int `yaml:",inline"` - }{1, map[string]int{"b": 2, "c": 3}}, - }, - - // bug 1243827 - { - "a: -b_c", - map[string]interface{}{"a": "-b_c"}, - }, - { - "a: +b_c", - map[string]interface{}{"a": "+b_c"}, - }, - { - "a: 50cent_of_dollar", - map[string]interface{}{"a": "50cent_of_dollar"}, - }, - - // issue #295 (allow scalars with colons in flow mappings and sequences) - { - "a: {b: https://github.com/go-yaml/yaml}", - map[string]interface{}{"a": map[interface{}]interface{}{ - "b": "https://github.com/go-yaml/yaml", - }}, - }, - { - "a: [https://github.com/go-yaml/yaml]", - map[string]interface{}{"a": []interface{}{"https://github.com/go-yaml/yaml"}}, - }, - - // Duration - { - "a: 3s", - map[string]time.Duration{"a": 3 * time.Second}, - }, - - // Issue #24. - { - "a: <foo>", - map[string]string{"a": "<foo>"}, - }, - - // Base 60 floats are obsolete and unsupported. - { - "a: 1:1\n", - map[string]string{"a": "1:1"}, - }, - - // Binary data. - { - "a: !!binary gIGC\n", - map[string]string{"a": "\x80\x81\x82"}, - }, { - "a: !!binary |\n " + strings.Repeat("kJCQ", 17) + "kJ\n CQ\n", - map[string]string{"a": strings.Repeat("\x90", 54)}, - }, { - "a: !!binary |\n " + strings.Repeat("A", 70) + "\n ==\n", - map[string]string{"a": strings.Repeat("\x00", 52)}, - }, - - // Ordered maps. - { - "{b: 2, a: 1, d: 4, c: 3, sub: {e: 5}}", - &yaml.MapSlice{{"b", 2}, {"a", 1}, {"d", 4}, {"c", 3}, {"sub", yaml.MapSlice{{"e", 5}}}}, - }, - - // Issue #39. - { - "a:\n b:\n c: d\n", - map[string]struct{ B interface{} }{"a": {map[interface{}]interface{}{"c": "d"}}}, - }, - - // Custom map type. - { - "a: {b: c}", - M{"a": M{"b": "c"}}, - }, - - // Support encoding.TextUnmarshaler. - { - "a: 1.2.3.4\n", - map[string]textUnmarshaler{"a": textUnmarshaler{S: "1.2.3.4"}}, - }, - { - "a: 2015-02-24T18:19:39Z\n", - map[string]textUnmarshaler{"a": textUnmarshaler{"2015-02-24T18:19:39Z"}}, - }, - - // Timestamps - { - // Date only. - "a: 2015-01-01\n", - map[string]time.Time{"a": time.Date(2015, 1, 1, 0, 0, 0, 0, time.UTC)}, - }, - { - // RFC3339 - "a: 2015-02-24T18:19:39.12Z\n", - map[string]time.Time{"a": time.Date(2015, 2, 24, 18, 19, 39, .12e9, time.UTC)}, - }, - { - // RFC3339 with short dates. - "a: 2015-2-3T3:4:5Z", - map[string]time.Time{"a": time.Date(2015, 2, 3, 3, 4, 5, 0, time.UTC)}, - }, - { - // ISO8601 lower case t - "a: 2015-02-24t18:19:39Z\n", - map[string]time.Time{"a": time.Date(2015, 2, 24, 18, 19, 39, 0, time.UTC)}, - }, - { - // space separate, no time zone - "a: 2015-02-24 18:19:39\n", - map[string]time.Time{"a": time.Date(2015, 2, 24, 18, 19, 39, 0, time.UTC)}, - }, - // Some cases not currently handled. Uncomment these when - // the code is fixed. - // { - // // space separated with time zone - // "a: 2001-12-14 21:59:43.10 -5", - // map[string]interface{}{"a": time.Date(2001, 12, 14, 21, 59, 43, .1e9, time.UTC)}, - // }, - // { - // // arbitrary whitespace between fields - // "a: 2001-12-14 \t\t \t21:59:43.10 \t Z", - // map[string]interface{}{"a": time.Date(2001, 12, 14, 21, 59, 43, .1e9, time.UTC)}, - // }, - { - // explicit string tag - "a: !!str 2015-01-01", - map[string]interface{}{"a": "2015-01-01"}, - }, - { - // explicit timestamp tag on quoted string - "a: !!timestamp \"2015-01-01\"", - map[string]time.Time{"a": time.Date(2015, 1, 1, 0, 0, 0, 0, time.UTC)}, - }, - { - // explicit timestamp tag on unquoted string - "a: !!timestamp 2015-01-01", - map[string]time.Time{"a": time.Date(2015, 1, 1, 0, 0, 0, 0, time.UTC)}, - }, - { - // quoted string that's a valid timestamp - "a: \"2015-01-01\"", - map[string]interface{}{"a": "2015-01-01"}, - }, - { - // explicit timestamp tag into interface. - "a: !!timestamp \"2015-01-01\"", - map[string]interface{}{"a": "2015-01-01"}, - }, - { - // implicit timestamp tag into interface. - "a: 2015-01-01", - map[string]interface{}{"a": "2015-01-01"}, - }, - - // Encode empty lists as zero-length slices. - { - "a: []", - &struct{ A []int }{[]int{}}, - }, - - // UTF-16-LE - { - "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n\x00", - M{"ñoño": "very yes"}, - }, - // UTF-16-LE with surrogate. - { - "\xff\xfe\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \x00=\xd8\xd4\xdf\n\x00", - M{"ñoño": "very yes 🟔"}, - }, - - // UTF-16-BE - { - "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00\n", - M{"ñoño": "very yes"}, - }, - // UTF-16-BE with surrogate. - { - "\xfe\xff\x00\xf1\x00o\x00\xf1\x00o\x00:\x00 \x00v\x00e\x00r\x00y\x00 \x00y\x00e\x00s\x00 \xd8=\xdf\xd4\x00\n", - M{"ñoño": "very yes 🟔"}, - }, - - // YAML Float regex shouldn't match this - { - "a: 123456e1\n", - M{"a": "123456e1"}, - }, { - "a: 123456E1\n", - M{"a": "123456E1"}, - }, - // yaml-test-suite 3GZX: Spec Example 7.1. Alias Nodes - { - "First occurrence: &anchor Foo\nSecond occurrence: *anchor\nOverride anchor: &anchor Bar\nReuse anchor: *anchor\n", - map[interface{}]interface{}{ - "Reuse anchor": "Bar", - "First occurrence": "Foo", - "Second occurrence": "Foo", - "Override anchor": "Bar", - }, - }, - // Single document with garbage following it. - { - "---\nhello\n...\n}not yaml", - "hello", - }, -} - -type M map[interface{}]interface{} - -type inlineB struct { - B int - inlineC `yaml:",inline"` -} - -type inlineC struct { - C int -} - -func (s *S) TestUnmarshal(c *C) { - for i, item := range unmarshalTests { - c.Logf("test %d: %q", i, item.data) - t := reflect.ValueOf(item.value).Type() - value := reflect.New(t) - err := yaml.Unmarshal([]byte(item.data), value.Interface()) - if _, ok := err.(*yaml.TypeError); !ok { - c.Assert(err, IsNil) - } - c.Assert(value.Elem().Interface(), DeepEquals, item.value, Commentf("error: %v", err)) - } -} - -func (s *S) TestDecoderSingleDocument(c *C) { - // Test that Decoder.Decode works as expected on - // all the unmarshal tests. - for i, item := range unmarshalTests { - c.Logf("test %d: %q", i, item.data) - if item.data == "" { - // Behaviour differs when there's no YAML. - continue - } - t := reflect.ValueOf(item.value).Type() - value := reflect.New(t) - err := yaml.NewDecoder(strings.NewReader(item.data)).Decode(value.Interface()) - if _, ok := err.(*yaml.TypeError); !ok { - c.Assert(err, IsNil) - } - c.Assert(value.Elem().Interface(), DeepEquals, item.value) - } -} - -var decoderTests = []struct { - data string - values []interface{} -}{{ - "", - nil, -}, { - "a: b", - []interface{}{ - map[interface{}]interface{}{"a": "b"}, - }, -}, { - "---\na: b\n...\n", - []interface{}{ - map[interface{}]interface{}{"a": "b"}, - }, -}, { - "---\n'hello'\n...\n---\ngoodbye\n...\n", - []interface{}{ - "hello", - "goodbye", - }, -}} - -func (s *S) TestDecoder(c *C) { - for i, item := range decoderTests { - c.Logf("test %d: %q", i, item.data) - var values []interface{} - dec := yaml.NewDecoder(strings.NewReader(item.data)) - for { - var value interface{} - err := dec.Decode(&value) - if err == io.EOF { - break - } - c.Assert(err, IsNil) - values = append(values, value) - } - c.Assert(values, DeepEquals, item.values) - } -} - -type errReader struct{} - -func (errReader) Read([]byte) (int, error) { - return 0, errors.New("some read error") -} - -func (s *S) TestDecoderReadError(c *C) { - err := yaml.NewDecoder(errReader{}).Decode(&struct{}{}) - c.Assert(err, ErrorMatches, `yaml: input error: some read error`) -} - -func (s *S) TestUnmarshalNaN(c *C) { - value := map[string]interface{}{} - err := yaml.Unmarshal([]byte("notanum: .NaN"), &value) - c.Assert(err, IsNil) - c.Assert(math.IsNaN(value["notanum"].(float64)), Equals, true) -} - -var unmarshalErrorTests = []struct { - data, error string -}{ - {"v: !!float 'error'", "yaml: cannot decode !!str `error` as a !!float"}, - {"v: [A,", "yaml: line 1: did not find expected node content"}, - {"v:\n- [A,", "yaml: line 2: did not find expected node content"}, - {"a: *b\n", "yaml: unknown anchor 'b' referenced"}, - {"a: &a\n b: *a\n", "yaml: anchor 'a' value contains itself"}, - {"value: -", "yaml: block sequence entries are not allowed in this context"}, - {"a: !!binary ==", "yaml: !!binary value contains invalid base64 data"}, - {"{[.]}", `yaml: invalid map key: \[\]interface \{\}\{"\."\}`}, - {"{{.}}", `yaml: invalid map key: map\[interface\ \{\}\]interface \{\}\{".":interface \{\}\(nil\)\}`}, - {"b: *a\na: &a {c: 1}", `yaml: unknown anchor 'a' referenced`}, - {"%TAG !%79! tag:yaml.org,2002:\n---\nv: !%79!int '1'", "yaml: did not find expected whitespace"}, -} - -func (s *S) TestUnmarshalErrors(c *C) { - for i, item := range unmarshalErrorTests { - c.Logf("test %d: %q", i, item.data) - var value interface{} - err := yaml.Unmarshal([]byte(item.data), &value) - c.Assert(err, ErrorMatches, item.error, Commentf("Partial unmarshal: %#v", value)) - } -} - -func (s *S) TestDecoderErrors(c *C) { - for _, item := range unmarshalErrorTests { - var value interface{} - err := yaml.NewDecoder(strings.NewReader(item.data)).Decode(&value) - c.Assert(err, ErrorMatches, item.error, Commentf("Partial unmarshal: %#v", value)) - } -} - -var unmarshalerTests = []struct { - data, tag string - value interface{} -}{ - {"_: {hi: there}", "!!map", map[interface{}]interface{}{"hi": "there"}}, - {"_: [1,A]", "!!seq", []interface{}{1, "A"}}, - {"_: 10", "!!int", 10}, - {"_: null", "!!null", nil}, - {`_: BAR!`, "!!str", "BAR!"}, - {`_: "BAR!"`, "!!str", "BAR!"}, - {"_: !!foo 'BAR!'", "!!foo", "BAR!"}, - {`_: ""`, "!!str", ""}, -} - -var unmarshalerResult = map[int]error{} - -type unmarshalerType struct { - value interface{} -} - -func (o *unmarshalerType) UnmarshalYAML(unmarshal func(v interface{}) error) error { - if err := unmarshal(&o.value); err != nil { - return err - } - if i, ok := o.value.(int); ok { - if result, ok := unmarshalerResult[i]; ok { - return result - } - } - return nil -} - -type unmarshalerPointer struct { - Field *unmarshalerType "_" -} - -type unmarshalerValue struct { - Field unmarshalerType "_" -} - -func (s *S) TestUnmarshalerPointerField(c *C) { - for _, item := range unmarshalerTests { - obj := &unmarshalerPointer{} - err := yaml.Unmarshal([]byte(item.data), obj) - c.Assert(err, IsNil) - if item.value == nil { - c.Assert(obj.Field, IsNil) - } else { - c.Assert(obj.Field, NotNil, Commentf("Pointer not initialized (%#v)", item.value)) - c.Assert(obj.Field.value, DeepEquals, item.value) - } - } -} - -func (s *S) TestUnmarshalerValueField(c *C) { - for _, item := range unmarshalerTests { - obj := &unmarshalerValue{} - err := yaml.Unmarshal([]byte(item.data), obj) - c.Assert(err, IsNil) - c.Assert(obj.Field, NotNil, Commentf("Pointer not initialized (%#v)", item.value)) - c.Assert(obj.Field.value, DeepEquals, item.value) - } -} - -func (s *S) TestUnmarshalerWholeDocument(c *C) { - obj := &unmarshalerType{} - err := yaml.Unmarshal([]byte(unmarshalerTests[0].data), obj) - c.Assert(err, IsNil) - value, ok := obj.value.(map[interface{}]interface{}) - c.Assert(ok, Equals, true, Commentf("value: %#v", obj.value)) - c.Assert(value["_"], DeepEquals, unmarshalerTests[0].value) -} - -func (s *S) TestUnmarshalerTypeError(c *C) { - unmarshalerResult[2] = &yaml.TypeError{[]string{"foo"}} - unmarshalerResult[4] = &yaml.TypeError{[]string{"bar"}} - defer func() { - delete(unmarshalerResult, 2) - delete(unmarshalerResult, 4) - }() - - type T struct { - Before int - After int - M map[string]*unmarshalerType - } - var v T - data := `{before: A, m: {abc: 1, def: 2, ghi: 3, jkl: 4}, after: B}` - err := yaml.Unmarshal([]byte(data), &v) - c.Assert(err, ErrorMatches, ""+ - "yaml: unmarshal errors:\n"+ - " line 1: cannot unmarshal !!str `A` into int\n"+ - " foo\n"+ - " bar\n"+ - " line 1: cannot unmarshal !!str `B` into int") - c.Assert(v.M["abc"], NotNil) - c.Assert(v.M["def"], IsNil) - c.Assert(v.M["ghi"], NotNil) - c.Assert(v.M["jkl"], IsNil) - - c.Assert(v.M["abc"].value, Equals, 1) - c.Assert(v.M["ghi"].value, Equals, 3) -} - -type proxyTypeError struct{} - -func (v *proxyTypeError) UnmarshalYAML(unmarshal func(interface{}) error) error { - var s string - var a int32 - var b int64 - if err := unmarshal(&s); err != nil { - panic(err) - } - if s == "a" { - if err := unmarshal(&b); err == nil { - panic("should have failed") - } - return unmarshal(&a) - } - if err := unmarshal(&a); err == nil { - panic("should have failed") - } - return unmarshal(&b) -} - -func (s *S) TestUnmarshalerTypeErrorProxying(c *C) { - type T struct { - Before int - After int - M map[string]*proxyTypeError - } - var v T - data := `{before: A, m: {abc: a, def: b}, after: B}` - err := yaml.Unmarshal([]byte(data), &v) - c.Assert(err, ErrorMatches, ""+ - "yaml: unmarshal errors:\n"+ - " line 1: cannot unmarshal !!str `A` into int\n"+ - " line 1: cannot unmarshal !!str `a` into int32\n"+ - " line 1: cannot unmarshal !!str `b` into int64\n"+ - " line 1: cannot unmarshal !!str `B` into int") -} - -type failingUnmarshaler struct{} - -var failingErr = errors.New("failingErr") - -func (ft *failingUnmarshaler) UnmarshalYAML(unmarshal func(interface{}) error) error { - return failingErr -} - -func (s *S) TestUnmarshalerError(c *C) { - err := yaml.Unmarshal([]byte("a: b"), &failingUnmarshaler{}) - c.Assert(err, Equals, failingErr) -} - -type sliceUnmarshaler []int - -func (su *sliceUnmarshaler) UnmarshalYAML(unmarshal func(interface{}) error) error { - var slice []int - err := unmarshal(&slice) - if err == nil { - *su = slice - return nil - } - - var intVal int - err = unmarshal(&intVal) - if err == nil { - *su = []int{intVal} - return nil - } - - return err -} - -func (s *S) TestUnmarshalerRetry(c *C) { - var su sliceUnmarshaler - err := yaml.Unmarshal([]byte("[1, 2, 3]"), &su) - c.Assert(err, IsNil) - c.Assert(su, DeepEquals, sliceUnmarshaler([]int{1, 2, 3})) - - err = yaml.Unmarshal([]byte("1"), &su) - c.Assert(err, IsNil) - c.Assert(su, DeepEquals, sliceUnmarshaler([]int{1})) -} - -// From http://yaml.org/type/merge.html -var mergeTests = ` -anchors: - list: - - &CENTER { "x": 1, "y": 2 } - - &LEFT { "x": 0, "y": 2 } - - &BIG { "r": 10 } - - &SMALL { "r": 1 } - -# All the following maps are equal: - -plain: - # Explicit keys - "x": 1 - "y": 2 - "r": 10 - label: center/big - -mergeOne: - # Merge one map - << : *CENTER - "r": 10 - label: center/big - -mergeMultiple: - # Merge multiple maps - << : [ *CENTER, *BIG ] - label: center/big - -override: - # Override - << : [ *BIG, *LEFT, *SMALL ] - "x": 1 - label: center/big - -shortTag: - # Explicit short merge tag - !!merge "<<" : [ *CENTER, *BIG ] - label: center/big - -longTag: - # Explicit merge long tag - !<tag:yaml.org,2002:merge> "<<" : [ *CENTER, *BIG ] - label: center/big - -inlineMap: - # Inlined map - << : {"x": 1, "y": 2, "r": 10} - label: center/big - -inlineSequenceMap: - # Inlined map in sequence - << : [ *CENTER, {"r": 10} ] - label: center/big -` - -func (s *S) TestMerge(c *C) { - var want = map[interface{}]interface{}{ - "x": 1, - "y": 2, - "r": 10, - "label": "center/big", - } - - var m map[interface{}]interface{} - err := yaml.Unmarshal([]byte(mergeTests), &m) - c.Assert(err, IsNil) - for name, test := range m { - if name == "anchors" { - continue - } - c.Assert(test, DeepEquals, want, Commentf("test %q failed", name)) - } -} - -func (s *S) TestMergeStruct(c *C) { - type Data struct { - X, Y, R int - Label string - } - want := Data{1, 2, 10, "center/big"} - - var m map[string]Data - err := yaml.Unmarshal([]byte(mergeTests), &m) - c.Assert(err, IsNil) - for name, test := range m { - if name == "anchors" { - continue - } - c.Assert(test, Equals, want, Commentf("test %q failed", name)) - } -} - -var unmarshalNullTests = []func() interface{}{ - func() interface{} { var v interface{}; v = "v"; return &v }, - func() interface{} { var s = "s"; return &s }, - func() interface{} { var s = "s"; sptr := &s; return &sptr }, - func() interface{} { var i = 1; return &i }, - func() interface{} { var i = 1; iptr := &i; return &iptr }, - func() interface{} { m := map[string]int{"s": 1}; return &m }, - func() interface{} { m := map[string]int{"s": 1}; return m }, -} - -func (s *S) TestUnmarshalNull(c *C) { - for _, test := range unmarshalNullTests { - item := test() - zero := reflect.Zero(reflect.TypeOf(item).Elem()).Interface() - err := yaml.Unmarshal([]byte("null"), item) - c.Assert(err, IsNil) - if reflect.TypeOf(item).Kind() == reflect.Map { - c.Assert(reflect.ValueOf(item).Interface(), DeepEquals, reflect.MakeMap(reflect.TypeOf(item)).Interface()) - } else { - c.Assert(reflect.ValueOf(item).Elem().Interface(), DeepEquals, zero) - } - } -} - -func (s *S) TestUnmarshalSliceOnPreset(c *C) { - // Issue #48. - v := struct{ A []int }{[]int{1}} - yaml.Unmarshal([]byte("a: [2]"), &v) - c.Assert(v.A, DeepEquals, []int{2}) -} - -var unmarshalStrictTests = []struct { - data string - value interface{} - error string -}{{ - data: "a: 1\nc: 2\n", - value: struct{ A, B int }{A: 1}, - error: `yaml: unmarshal errors:\n line 2: field c not found in type struct { A int; B int }`, -}, { - data: "a: 1\nb: 2\na: 3\n", - value: struct{ A, B int }{A: 3, B: 2}, - error: `yaml: unmarshal errors:\n line 3: field a already set in type struct { A int; B int }`, -}, { - data: "c: 3\na: 1\nb: 2\nc: 4\n", - value: struct { - A int - inlineB `yaml:",inline"` - }{ - A: 1, - inlineB: inlineB{ - B: 2, - inlineC: inlineC{ - C: 4, - }, - }, - }, - error: `yaml: unmarshal errors:\n line 4: field c already set in type struct { A int; yaml_test.inlineB "yaml:\\",inline\\"" }`, -}, { - data: "c: 0\na: 1\nb: 2\nc: 1\n", - value: struct { - A int - inlineB `yaml:",inline"` - }{ - A: 1, - inlineB: inlineB{ - B: 2, - inlineC: inlineC{ - C: 1, - }, - }, - }, - error: `yaml: unmarshal errors:\n line 4: field c already set in type struct { A int; yaml_test.inlineB "yaml:\\",inline\\"" }`, -}, { - data: "c: 1\na: 1\nb: 2\nc: 3\n", - value: struct { - A int - M map[string]interface{} `yaml:",inline"` - }{ - A: 1, - M: map[string]interface{}{ - "b": 2, - "c": 3, - }, - }, - error: `yaml: unmarshal errors:\n line 4: key "c" already set in map`, -}, { - data: "a: 1\n9: 2\nnull: 3\n9: 4", - value: map[interface{}]interface{}{ - "a": 1, - nil: 3, - 9: 4, - }, - error: `yaml: unmarshal errors:\n line 4: key 9 already set in map`, -}} - -func (s *S) TestUnmarshalStrict(c *C) { - for i, item := range unmarshalStrictTests { - c.Logf("test %d: %q", i, item.data) - // First test that normal Unmarshal unmarshals to the expected value. - t := reflect.ValueOf(item.value).Type() - value := reflect.New(t) - err := yaml.Unmarshal([]byte(item.data), value.Interface()) - c.Assert(err, Equals, nil) - c.Assert(value.Elem().Interface(), DeepEquals, item.value) - - // Then test that UnmarshalStrict fails on the same thing. - t = reflect.ValueOf(item.value).Type() - value = reflect.New(t) - err = yaml.UnmarshalStrict([]byte(item.data), value.Interface()) - c.Assert(err, ErrorMatches, item.error) - } -} - -type textUnmarshaler struct { - S string -} - -func (t *textUnmarshaler) UnmarshalText(s []byte) error { - t.S = string(s) - return nil -} - -//var data []byte -//func init() { -// var err error -// data, err = ioutil.ReadFile("/tmp/file.yaml") -// if err != nil { -// panic(err) -// } -//} -// -//func (s *S) BenchmarkUnmarshal(c *C) { -// var err error -// for i := 0; i < c.N; i++ { -// var v map[string]interface{} -// err = yaml.Unmarshal(data, &v) -// } -// if err != nil { -// panic(err) -// } -//} -// -//func (s *S) BenchmarkMarshal(c *C) { -// var v map[string]interface{} -// yaml.Unmarshal(data, &v) -// c.ResetTimer() -// for i := 0; i < c.N; i++ { -// yaml.Marshal(&v) -// } -//} diff --git a/vendor/gopkg.in/yaml.v2/encode_test.go b/vendor/gopkg.in/yaml.v2/encode_test.go deleted file mode 100644 index 2e784114..00000000 --- a/vendor/gopkg.in/yaml.v2/encode_test.go +++ /dev/null @@ -1,577 +0,0 @@ -package yaml_test - -import ( - "bytes" - "fmt" - "math" - "strconv" - "strings" - "time" - - "net" - "os" - - . "gopkg.in/check.v1" - "gopkg.in/yaml.v2" -) - -var marshalIntTest = 123 - -var marshalTests = []struct { - value interface{} - data string -}{ - { - nil, - "null\n", - }, { - (*marshalerType)(nil), - "null\n", - }, { - &struct{}{}, - "{}\n", - }, { - map[string]string{"v": "hi"}, - "v: hi\n", - }, { - map[string]interface{}{"v": "hi"}, - "v: hi\n", - }, { - map[string]string{"v": "true"}, - "v: \"true\"\n", - }, { - map[string]string{"v": "false"}, - "v: \"false\"\n", - }, { - map[string]interface{}{"v": true}, - "v: true\n", - }, { - map[string]interface{}{"v": false}, - "v: false\n", - }, { - map[string]interface{}{"v": 10}, - "v: 10\n", - }, { - map[string]interface{}{"v": -10}, - "v: -10\n", - }, { - map[string]uint{"v": 42}, - "v: 42\n", - }, { - map[string]interface{}{"v": int64(4294967296)}, - "v: 4294967296\n", - }, { - map[string]int64{"v": int64(4294967296)}, - "v: 4294967296\n", - }, { - map[string]uint64{"v": 4294967296}, - "v: 4294967296\n", - }, { - map[string]interface{}{"v": "10"}, - "v: \"10\"\n", - }, { - map[string]interface{}{"v": 0.1}, - "v: 0.1\n", - }, { - map[string]interface{}{"v": float64(0.1)}, - "v: 0.1\n", - }, { - map[string]interface{}{"v": -0.1}, - "v: -0.1\n", - }, { - map[string]interface{}{"v": math.Inf(+1)}, - "v: .inf\n", - }, { - map[string]interface{}{"v": math.Inf(-1)}, - "v: -.inf\n", - }, { - map[string]interface{}{"v": math.NaN()}, - "v: .nan\n", - }, { - map[string]interface{}{"v": nil}, - "v: null\n", - }, { - map[string]interface{}{"v": ""}, - "v: \"\"\n", - }, { - map[string][]string{"v": []string{"A", "B"}}, - "v:\n- A\n- B\n", - }, { - map[string][]string{"v": []string{"A", "B\nC"}}, - "v:\n- A\n- |-\n B\n C\n", - }, { - map[string][]interface{}{"v": []interface{}{"A", 1, map[string][]int{"B": []int{2, 3}}}}, - "v:\n- A\n- 1\n- B:\n - 2\n - 3\n", - }, { - map[string]interface{}{"a": map[interface{}]interface{}{"b": "c"}}, - "a:\n b: c\n", - }, { - map[string]interface{}{"a": "-"}, - "a: '-'\n", - }, - - // Simple values. - { - &marshalIntTest, - "123\n", - }, - - // Structures - { - &struct{ Hello string }{"world"}, - "hello: world\n", - }, { - &struct { - A struct { - B string - } - }{struct{ B string }{"c"}}, - "a:\n b: c\n", - }, { - &struct { - A *struct { - B string - } - }{&struct{ B string }{"c"}}, - "a:\n b: c\n", - }, { - &struct { - A *struct { - B string - } - }{}, - "a: null\n", - }, { - &struct{ A int }{1}, - "a: 1\n", - }, { - &struct{ A []int }{[]int{1, 2}}, - "a:\n- 1\n- 2\n", - }, { - &struct { - B int "a" - }{1}, - "a: 1\n", - }, { - &struct{ A bool }{true}, - "a: true\n", - }, - - // Conditional flag - { - &struct { - A int "a,omitempty" - B int "b,omitempty" - }{1, 0}, - "a: 1\n", - }, { - &struct { - A int "a,omitempty" - B int "b,omitempty" - }{0, 0}, - "{}\n", - }, { - &struct { - A *struct{ X, y int } "a,omitempty,flow" - }{&struct{ X, y int }{1, 2}}, - "a: {x: 1}\n", - }, { - &struct { - A *struct{ X, y int } "a,omitempty,flow" - }{nil}, - "{}\n", - }, { - &struct { - A *struct{ X, y int } "a,omitempty,flow" - }{&struct{ X, y int }{}}, - "a: {x: 0}\n", - }, { - &struct { - A struct{ X, y int } "a,omitempty,flow" - }{struct{ X, y int }{1, 2}}, - "a: {x: 1}\n", - }, { - &struct { - A struct{ X, y int } "a,omitempty,flow" - }{struct{ X, y int }{0, 1}}, - "{}\n", - }, { - &struct { - A float64 "a,omitempty" - B float64 "b,omitempty" - }{1, 0}, - "a: 1\n", - }, - { - &struct { - T1 time.Time "t1,omitempty" - T2 time.Time "t2,omitempty" - T3 *time.Time "t3,omitempty" - T4 *time.Time "t4,omitempty" - }{ - T2: time.Date(2018, 1, 9, 10, 40, 47, 0, time.UTC), - T4: newTime(time.Date(2098, 1, 9, 10, 40, 47, 0, time.UTC)), - }, - "t2: !!timestamp 2018-01-09T10:40:47Z\nt4: !!timestamp 2098-01-09T10:40:47Z\n", - }, - // Nil interface that implements Marshaler. - { - map[string]yaml.Marshaler{ - "a": nil, - }, - "a: null\n", - }, - - // Flow flag - { - &struct { - A []int "a,flow" - }{[]int{1, 2}}, - "a: [1, 2]\n", - }, { - &struct { - A map[string]string "a,flow" - }{map[string]string{"b": "c", "d": "e"}}, - "a: {b: c, d: e}\n", - }, { - &struct { - A struct { - B, D string - } "a,flow" - }{struct{ B, D string }{"c", "e"}}, - "a: {b: c, d: e}\n", - }, - - // Unexported field - { - &struct { - u int - A int - }{0, 1}, - "a: 1\n", - }, - - // Ignored field - { - &struct { - A int - B int "-" - }{1, 2}, - "a: 1\n", - }, - - // Struct inlining - { - &struct { - A int - C inlineB `yaml:",inline"` - }{1, inlineB{2, inlineC{3}}}, - "a: 1\nb: 2\nc: 3\n", - }, - - // Map inlining - { - &struct { - A int - C map[string]int `yaml:",inline"` - }{1, map[string]int{"b": 2, "c": 3}}, - "a: 1\nb: 2\nc: 3\n", - }, - - // Duration - { - map[string]time.Duration{"a": 3 * time.Second}, - "a: 3s\n", - }, - - // Issue #24: bug in map merging logic. - { - map[string]string{"a": "<foo>"}, - "a: <foo>\n", - }, - - // Issue #34: marshal unsupported base 60 floats quoted for compatibility - // with old YAML 1.1 parsers. - { - map[string]string{"a": "1:1"}, - "a: \"1:1\"\n", - }, - - // Binary data. - { - map[string]string{"a": "\x00"}, - "a: \"\\0\"\n", - }, { - map[string]string{"a": "\x80\x81\x82"}, - "a: !!binary gIGC\n", - }, { - map[string]string{"a": strings.Repeat("\x90", 54)}, - "a: !!binary |\n " + strings.Repeat("kJCQ", 17) + "kJ\n CQ\n", - }, - - // Ordered maps. - { - &yaml.MapSlice{{"b", 2}, {"a", 1}, {"d", 4}, {"c", 3}, {"sub", yaml.MapSlice{{"e", 5}}}}, - "b: 2\na: 1\nd: 4\nc: 3\nsub:\n e: 5\n", - }, - - // Encode unicode as utf-8 rather than in escaped form. - { - map[string]string{"a": "你好"}, - "a: 你好\n", - }, - - // Support encoding.TextMarshaler. - { - map[string]net.IP{"a": net.IPv4(1, 2, 3, 4)}, - "a: 1.2.3.4\n", - }, - // time.Time gets a timestamp tag. - { - map[string]time.Time{"a": time.Date(2015, 2, 24, 18, 19, 39, 0, time.UTC)}, - "a: !!timestamp 2015-02-24T18:19:39Z\n", - }, - { - map[string]*time.Time{"a": newTime(time.Date(2015, 2, 24, 18, 19, 39, 0, time.UTC))}, - "a: !!timestamp 2015-02-24T18:19:39Z\n", - }, - // Ensure timestamp-like strings are quoted. - { - map[string]string{"a": "2015-02-24T18:19:39Z"}, - "a: \"2015-02-24T18:19:39Z\"\n", - }, - - // Ensure strings containing ": " are quoted (reported as PR #43, but not reproducible). - { - map[string]string{"a": "b: c"}, - "a: 'b: c'\n", - }, - - // Containing hash mark ('#') in string should be quoted - { - map[string]string{"a": "Hello #comment"}, - "a: 'Hello #comment'\n", - }, - { - map[string]string{"a": "你好 #comment"}, - "a: '你好 #comment'\n", - }, -} - -func (s *S) TestMarshal(c *C) { - defer os.Setenv("TZ", os.Getenv("TZ")) - os.Setenv("TZ", "UTC") - for i, item := range marshalTests { - c.Logf("test %d: %q", i, item.data) - data, err := yaml.Marshal(item.value) - c.Assert(err, IsNil) - c.Assert(string(data), Equals, item.data) - } -} - -func (s *S) TestEncoderSingleDocument(c *C) { - for i, item := range marshalTests { - c.Logf("test %d. %q", i, item.data) - var buf bytes.Buffer - enc := yaml.NewEncoder(&buf) - err := enc.Encode(item.value) - c.Assert(err, Equals, nil) - err = enc.Close() - c.Assert(err, Equals, nil) - c.Assert(buf.String(), Equals, item.data) - } -} - -func (s *S) TestEncoderMultipleDocuments(c *C) { - var buf bytes.Buffer - enc := yaml.NewEncoder(&buf) - err := enc.Encode(map[string]string{"a": "b"}) - c.Assert(err, Equals, nil) - err = enc.Encode(map[string]string{"c": "d"}) - c.Assert(err, Equals, nil) - err = enc.Close() - c.Assert(err, Equals, nil) - c.Assert(buf.String(), Equals, "a: b\n---\nc: d\n") -} - -func (s *S) TestEncoderWriteError(c *C) { - enc := yaml.NewEncoder(errorWriter{}) - err := enc.Encode(map[string]string{"a": "b"}) - c.Assert(err, ErrorMatches, `yaml: write error: some write error`) // Data not flushed yet -} - -type errorWriter struct{} - -func (errorWriter) Write([]byte) (int, error) { - return 0, fmt.Errorf("some write error") -} - -var marshalErrorTests = []struct { - value interface{} - error string - panic string -}{{ - value: &struct { - B int - inlineB ",inline" - }{1, inlineB{2, inlineC{3}}}, - panic: `Duplicated key 'b' in struct struct \{ B int; .*`, -}, { - value: &struct { - A int - B map[string]int ",inline" - }{1, map[string]int{"a": 2}}, - panic: `Can't have key "a" in inlined map; conflicts with struct field`, -}} - -func (s *S) TestMarshalErrors(c *C) { - for _, item := range marshalErrorTests { - if item.panic != "" { - c.Assert(func() { yaml.Marshal(item.value) }, PanicMatches, item.panic) - } else { - _, err := yaml.Marshal(item.value) - c.Assert(err, ErrorMatches, item.error) - } - } -} - -func (s *S) TestMarshalTypeCache(c *C) { - var data []byte - var err error - func() { - type T struct{ A int } - data, err = yaml.Marshal(&T{}) - c.Assert(err, IsNil) - }() - func() { - type T struct{ B int } - data, err = yaml.Marshal(&T{}) - c.Assert(err, IsNil) - }() - c.Assert(string(data), Equals, "b: 0\n") -} - -var marshalerTests = []struct { - data string - value interface{} -}{ - {"_:\n hi: there\n", map[interface{}]interface{}{"hi": "there"}}, - {"_:\n- 1\n- A\n", []interface{}{1, "A"}}, - {"_: 10\n", 10}, - {"_: null\n", nil}, - {"_: BAR!\n", "BAR!"}, -} - -type marshalerType struct { - value interface{} -} - -func (o marshalerType) MarshalText() ([]byte, error) { - panic("MarshalText called on type with MarshalYAML") -} - -func (o marshalerType) MarshalYAML() (interface{}, error) { - return o.value, nil -} - -type marshalerValue struct { - Field marshalerType "_" -} - -func (s *S) TestMarshaler(c *C) { - for _, item := range marshalerTests { - obj := &marshalerValue{} - obj.Field.value = item.value - data, err := yaml.Marshal(obj) - c.Assert(err, IsNil) - c.Assert(string(data), Equals, string(item.data)) - } -} - -func (s *S) TestMarshalerWholeDocument(c *C) { - obj := &marshalerType{} - obj.value = map[string]string{"hello": "world!"} - data, err := yaml.Marshal(obj) - c.Assert(err, IsNil) - c.Assert(string(data), Equals, "hello: world!\n") -} - -type failingMarshaler struct{} - -func (ft *failingMarshaler) MarshalYAML() (interface{}, error) { - return nil, failingErr -} - -func (s *S) TestMarshalerError(c *C) { - _, err := yaml.Marshal(&failingMarshaler{}) - c.Assert(err, Equals, failingErr) -} - -func (s *S) TestSortedOutput(c *C) { - order := []interface{}{ - false, - true, - 1, - uint(1), - 1.0, - 1.1, - 1.2, - 2, - uint(2), - 2.0, - 2.1, - "", - ".1", - ".2", - ".a", - "1", - "2", - "a!10", - "a/2", - "a/10", - "a~10", - "ab/1", - "b/1", - "b/01", - "b/2", - "b/02", - "b/3", - "b/03", - "b1", - "b01", - "b3", - "c2.10", - "c10.2", - "d1", - "d12", - "d12a", - } - m := make(map[interface{}]int) - for _, k := range order { - m[k] = 1 - } - data, err := yaml.Marshal(m) - c.Assert(err, IsNil) - out := "\n" + string(data) - last := 0 - for i, k := range order { - repr := fmt.Sprint(k) - if s, ok := k.(string); ok { - if _, err = strconv.ParseFloat(repr, 32); s == "" || err == nil { - repr = `"` + repr + `"` - } - } - index := strings.Index(out, "\n"+repr+":") - if index == -1 { - c.Fatalf("%#v is not in the output: %#v", k, out) - } - if index < last { - c.Fatalf("%#v was generated before %#v: %q", k, order[i-1], out) - } - last = index - } -} - -func newTime(t time.Time) *time.Time { - return &t -} diff --git a/vendor/gopkg.in/yaml.v2/example_embedded_test.go b/vendor/gopkg.in/yaml.v2/example_embedded_test.go deleted file mode 100644 index 171c0931..00000000 --- a/vendor/gopkg.in/yaml.v2/example_embedded_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package yaml_test - -import ( - "fmt" - "log" - - "gopkg.in/yaml.v2" -) - -// An example showing how to unmarshal embedded -// structs from YAML. - -type StructA struct { - A string `yaml:"a"` -} - -type StructB struct { - // Embedded structs are not treated as embedded in YAML by default. To do that, - // add the ",inline" annotation below - StructA `yaml:",inline"` - B string `yaml:"b"` -} - -var data = ` -a: a string from struct A -b: a string from struct B -` - -func ExampleUnmarshal_embedded() { - var b StructB - - err := yaml.Unmarshal([]byte(data), &b) - if err != nil { - log.Fatalf("cannot unmarshal data: %v", err) - } - fmt.Println(b.A) - fmt.Println(b.B) - // Output: - // a string from struct A - // a string from struct B -} diff --git a/vendor/gopkg.in/yaml.v2/suite_test.go b/vendor/gopkg.in/yaml.v2/suite_test.go deleted file mode 100644 index c5cf1ed4..00000000 --- a/vendor/gopkg.in/yaml.v2/suite_test.go +++ /dev/null @@ -1,12 +0,0 @@ -package yaml_test - -import ( - . "gopkg.in/check.v1" - "testing" -) - -func Test(t *testing.T) { TestingT(t) } - -type S struct{} - -var _ = Suite(&S{})